]> code.delx.au - gnu-emacs/commitdiff
Merge from emacs--rel--22
authorMiles Bader <miles@gnu.org>
Mon, 15 Oct 2007 02:07:53 +0000 (02:07 +0000)
committerMiles Bader <miles@gnu.org>
Mon, 15 Oct 2007 02:07:53 +0000 (02:07 +0000)
Patches applied:

 * emacs--rel--22  (patch 116-121)

   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-889

872 files changed:
ChangeLog
MAINTAINERS
Makefile.in
README
admin/ChangeLog
admin/FOR-RELEASE
admin/admin.el
admin/make-tarball.txt
admin/notes/changelogs [new file with mode: 0644]
admin/notes/copyright
admin/notes/lel-TODO [new file with mode: 0644]
admin/notes/multi-tty [new file with mode: 0644]
config.bat
configure
configure.in
doc/emacs/.gitignore [moved from man/.gitignore with 100% similarity]
doc/emacs/ChangeLog [moved from man/ChangeLog with 59% similarity]
doc/emacs/Makefile.in [new file with mode: 0644]
doc/emacs/abbrevs.texi [moved from man/abbrevs.texi with 100% similarity]
doc/emacs/ack.texi [moved from man/ack.texi with 100% similarity]
doc/emacs/anti.texi [moved from man/anti.texi with 100% similarity]
doc/emacs/arevert-xtra.texi [moved from man/arevert-xtra.texi with 100% similarity]
doc/emacs/basic.texi [moved from man/basic.texi with 99% similarity]
doc/emacs/buffers.texi [moved from man/buffers.texi with 100% similarity]
doc/emacs/building.texi [moved from man/building.texi with 99% similarity]
doc/emacs/cal-xtra.texi [moved from man/cal-xtra.texi with 100% similarity]
doc/emacs/calendar.texi [moved from man/calendar.texi with 99% similarity]
doc/emacs/cmdargs.texi [moved from man/cmdargs.texi with 100% similarity]
doc/emacs/commands.texi [moved from man/commands.texi with 100% similarity]
doc/emacs/custom.texi [moved from man/custom.texi with 99% similarity]
doc/emacs/dired-xtra.texi [moved from man/dired-xtra.texi with 100% similarity]
doc/emacs/dired.texi [moved from man/dired.texi with 99% similarity]
doc/emacs/display.texi [moved from man/display.texi with 100% similarity]
doc/emacs/doclicense.texi [moved from etc/gfdl.1 with 72% similarity]
doc/emacs/emacs-xtra.texi [moved from man/emacs-xtra.texi with 99% similarity]
doc/emacs/emacs.texi [moved from man/emacs.texi with 99% similarity]
doc/emacs/emerge-xtra.texi [moved from man/emerge-xtra.texi with 100% similarity]
doc/emacs/entering.texi [moved from man/entering.texi with 100% similarity]
doc/emacs/files.texi [moved from man/files.texi with 80% similarity]
doc/emacs/fixit.texi [moved from man/fixit.texi with 100% similarity]
doc/emacs/fortran-xtra.texi [moved from man/fortran-xtra.texi with 100% similarity]
doc/emacs/frames.texi [moved from man/frames.texi with 100% similarity]
doc/emacs/glossary.texi [moved from man/glossary.texi with 100% similarity]
doc/emacs/gnu.texi [moved from man/gnu.texi with 100% similarity]
doc/emacs/gpl.texi [new file with mode: 0644]
doc/emacs/help.texi [moved from man/help.texi with 100% similarity]
doc/emacs/indent.texi [moved from man/indent.texi with 100% similarity]
doc/emacs/killing.texi [moved from man/killing.texi with 100% similarity]
doc/emacs/kmacro.texi [moved from man/kmacro.texi with 100% similarity]
doc/emacs/m-x.texi [moved from man/m-x.texi with 100% similarity]
doc/emacs/macos.texi [moved from man/macos.texi with 100% similarity]
doc/emacs/maintaining.texi [moved from man/maintaining.texi with 100% similarity]
doc/emacs/major.texi [moved from man/major.texi with 100% similarity]
doc/emacs/makefile.w32-in [new file with mode: 0644]
doc/emacs/mark.texi [moved from man/mark.texi with 100% similarity]
doc/emacs/mini.texi [moved from man/mini.texi with 100% similarity]
doc/emacs/misc.texi [moved from man/misc.texi with 100% similarity]
doc/emacs/msdog-xtra.texi [moved from man/msdog-xtra.texi with 100% similarity]
doc/emacs/msdog.texi [moved from man/msdog.texi with 100% similarity]
doc/emacs/mule.texi [moved from man/mule.texi with 100% similarity]
doc/emacs/picture-xtra.texi [moved from man/picture-xtra.texi with 100% similarity]
doc/emacs/programs.texi [moved from man/programs.texi with 100% similarity]
doc/emacs/regs.texi [moved from man/regs.texi with 100% similarity]
doc/emacs/rmail.texi [moved from man/rmail.texi with 100% similarity]
doc/emacs/screen.texi [moved from man/screen.texi with 98% similarity]
doc/emacs/search.texi [moved from man/search.texi with 100% similarity]
doc/emacs/sending.texi [moved from man/sending.texi with 100% similarity]
doc/emacs/text.texi [moved from man/text.texi with 98% similarity]
doc/emacs/trouble.texi [moved from man/trouble.texi with 100% similarity]
doc/emacs/vc-xtra.texi [moved from man/vc-xtra.texi with 93% similarity]
doc/emacs/vc1-xtra.texi [moved from man/vc1-xtra.texi with 85% similarity]
doc/emacs/vc2-xtra.texi [moved from man/vc2-xtra.texi with 95% similarity]
doc/emacs/windows.texi [moved from man/windows.texi with 100% similarity]
doc/emacs/xresources.texi [moved from man/xresources.texi with 100% similarity]
doc/lispintro/.gitignore [moved from lispintro/.gitignore with 100% similarity]
doc/lispintro/ChangeLog [moved from lispintro/ChangeLog with 93% similarity]
doc/lispintro/Makefile.am [moved from lispintro/Makefile.am with 100% similarity]
doc/lispintro/Makefile.in [moved from lispintro/Makefile.in with 95% similarity]
doc/lispintro/Makefile.old [moved from lispintro/Makefile.old with 100% similarity]
doc/lispintro/README [moved from lispintro/README with 100% similarity]
doc/lispintro/aclocal.m4 [moved from lispintro/aclocal.m4 with 100% similarity]
doc/lispintro/configure [moved from lispintro/configure with 100% similarity, mode: 0755]
doc/lispintro/configure.in [moved from lispintro/configure.in with 100% similarity]
doc/lispintro/cons-1.eps [moved from lispintro/cons-1.eps with 100% similarity]
doc/lispintro/cons-2.eps [moved from lispintro/cons-2.eps with 100% similarity]
doc/lispintro/cons-2a.eps [moved from lispintro/cons-2a.eps with 100% similarity]
doc/lispintro/cons-3.eps [moved from lispintro/cons-3.eps with 100% similarity]
doc/lispintro/cons-4.eps [moved from lispintro/cons-4.eps with 100% similarity]
doc/lispintro/cons-5.eps [moved from lispintro/cons-5.eps with 100% similarity]
doc/lispintro/drawers.eps [moved from lispintro/drawers.eps with 100% similarity]
doc/lispintro/emacs-lisp-intro.texi [moved from lispintro/emacs-lisp-intro.texi with 99% similarity]
doc/lispintro/install-sh [moved from lispintro/install-sh with 100% similarity, mode: 0755]
doc/lispintro/lambda-1.eps [moved from lispintro/lambda-1.eps with 100% similarity]
doc/lispintro/lambda-2.eps [moved from lispintro/lambda-2.eps with 100% similarity]
doc/lispintro/lambda-3.eps [moved from lispintro/lambda-3.eps with 100% similarity]
doc/lispintro/makefile.w32-in [moved from lispintro/makefile.w32-in with 95% similarity]
doc/lispintro/missing [moved from lispintro/missing with 100% similarity, mode: 0755]
doc/lispintro/mkinstalldirs [moved from lispintro/mkinstalldirs with 100% similarity, mode: 0755]
doc/lispref/.arch-inventory [moved from lispref/.arch-inventory with 100% similarity]
doc/lispref/.gitignore [moved from lispref/.gitignore with 100% similarity]
doc/lispref/ChangeLog [moved from lispref/ChangeLog with 97% similarity]
doc/lispref/Makefile.in [moved from lispref/Makefile.in with 97% similarity]
doc/lispref/README [moved from lispref/README with 100% similarity]
doc/lispref/abbrevs.texi [moved from lispref/abbrevs.texi with 99% similarity]
doc/lispref/advice.texi [moved from lispref/advice.texi with 99% similarity]
doc/lispref/anti.texi [moved from lispref/anti.texi with 100% similarity]
doc/lispref/back.texi [moved from lispref/back.texi with 100% similarity]
doc/lispref/backups.texi [moved from lispref/backups.texi with 99% similarity]
doc/lispref/book-spine.texinfo [moved from lispref/book-spine.texinfo with 100% similarity]
doc/lispref/buffers.texi [moved from lispref/buffers.texi with 99% similarity]
doc/lispref/commands.texi [moved from lispref/commands.texi with 99% similarity]
doc/lispref/compile.texi [moved from lispref/compile.texi with 99% similarity]
doc/lispref/configure [moved from lispref/configure with 100% similarity]
doc/lispref/configure.in [moved from lispref/configure.in with 100% similarity]
doc/lispref/control.texi [moved from lispref/control.texi with 97% similarity]
doc/lispref/customize.texi [moved from lispref/customize.texi with 99% similarity]
doc/lispref/debugging.texi [moved from lispref/debugging.texi with 99% similarity]
doc/lispref/display.texi [moved from lispref/display.texi with 99% similarity]
doc/lispref/doclicense.texi [moved from lispref/doclicense.texi with 100% similarity]
doc/lispref/edebug.texi [moved from lispref/edebug.texi with 100% similarity]
doc/lispref/elisp-covers.texi [moved from lispref/elisp-covers.texi with 100% similarity]
doc/lispref/elisp.texi [moved from lispref/elisp.texi with 99% similarity]
doc/lispref/errors.texi [moved from lispref/errors.texi with 99% similarity]
doc/lispref/eval.texi [moved from lispref/eval.texi with 99% similarity]
doc/lispref/files.texi [moved from lispref/files.texi with 93% similarity]
doc/lispref/frames.texi [moved from lispref/frames.texi with 99% similarity]
doc/lispref/front-cover-1.texi [moved from lispref/front-cover-1.texi with 100% similarity]
doc/lispref/functions.texi [moved from lispref/functions.texi with 99% similarity]
doc/lispref/gpl.texi [moved from lispref/gpl.texi with 99% similarity]
doc/lispref/hash.texi [moved from lispref/hash.texi with 99% similarity]
doc/lispref/help.texi [moved from lispref/help.texi with 99% similarity]
doc/lispref/hooks.texi [moved from lispref/hooks.texi with 98% similarity]
doc/lispref/index.texi [moved from lispref/index.texi with 96% similarity]
doc/lispref/internals.texi [moved from lispref/internals.texi with 99% similarity]
doc/lispref/intro.texi [moved from lispref/intro.texi with 99% similarity]
doc/lispref/keymaps.texi [moved from lispref/keymaps.texi with 98% similarity]
doc/lispref/lay-flat.texi [moved from lispref/lay-flat.texi with 100% similarity]
doc/lispref/lists.texi [moved from lispref/lists.texi with 99% similarity]
doc/lispref/loading.texi [moved from lispref/loading.texi with 99% similarity]
doc/lispref/locals.texi [moved from lispref/locals.texi with 99% similarity]
doc/lispref/macros.texi [moved from lispref/macros.texi with 99% similarity]
doc/lispref/makefile.w32-in [moved from lispref/makefile.w32-in with 95% similarity]
doc/lispref/maps.texi [moved from lispref/maps.texi with 96% similarity]
doc/lispref/markers.texi [moved from lispref/markers.texi with 99% similarity]
doc/lispref/minibuf.texi [moved from lispref/minibuf.texi with 99% similarity]
doc/lispref/mkinstalldirs [moved from lispref/mkinstalldirs with 100% similarity]
doc/lispref/modes.texi [moved from lispref/modes.texi with 99% similarity]
doc/lispref/nonascii.texi [moved from lispref/nonascii.texi with 99% similarity]
doc/lispref/numbers.texi [moved from lispref/numbers.texi with 99% similarity]
doc/lispref/objects.texi [moved from lispref/objects.texi with 99% similarity]
doc/lispref/os.texi [moved from lispref/os.texi with 99% similarity]
doc/lispref/positions.texi [moved from lispref/positions.texi with 99% similarity]
doc/lispref/processes.texi [moved from lispref/processes.texi with 98% similarity]
doc/lispref/searching.texi [moved from lispref/searching.texi with 99% similarity]
doc/lispref/sequences.texi [moved from lispref/sequences.texi with 99% similarity]
doc/lispref/spellfile [moved from lispref/spellfile with 100% similarity]
doc/lispref/streams.texi [moved from lispref/streams.texi with 99% similarity]
doc/lispref/strings.texi [moved from lispref/strings.texi with 99% similarity]
doc/lispref/symbols.texi [moved from lispref/symbols.texi with 99% similarity]
doc/lispref/syntax.texi [moved from lispref/syntax.texi with 99% similarity]
doc/lispref/text.texi [moved from lispref/text.texi with 97% similarity]
doc/lispref/tindex.pl [moved from lispref/tindex.pl with 100% similarity]
doc/lispref/tips.texi [moved from lispref/tips.texi with 99% similarity]
doc/lispref/two-volume-cross-refs.txt [moved from lispref/two-volume-cross-refs.txt with 100% similarity]
doc/lispref/two-volume.make [moved from lispref/two-volume.make with 100% similarity]
doc/lispref/two.el [moved from lispref/two.el with 100% similarity]
doc/lispref/variables.texi [moved from lispref/variables.texi with 99% similarity]
doc/lispref/vol1.texi [moved from lispref/vol1.texi with 100% similarity]
doc/lispref/vol2.texi [moved from lispref/vol2.texi with 100% similarity]
doc/lispref/windows.texi [moved from lispref/windows.texi with 99% similarity]
doc/man/ChangeLog [new file with mode: 0644]
doc/man/ctags.1 [moved from etc/ctags.1 with 100% similarity]
doc/man/emacs.1 [moved from etc/emacs.1 with 100% similarity]
doc/man/emacsclient.1 [moved from etc/emacsclient.1 with 100% similarity]
doc/man/etags.1 [moved from etc/etags.1 with 100% similarity]
doc/misc/.gitignore [new file with mode: 0644]
doc/misc/ChangeLog [new file with mode: 0644]
doc/misc/Makefile.in [moved from man/Makefile.in with 57% similarity]
doc/misc/ada-mode.texi [moved from man/ada-mode.texi with 99% similarity]
doc/misc/autotype.texi [moved from man/autotype.texi with 99% similarity]
doc/misc/calc.texi [moved from man/calc.texi with 99% similarity]
doc/misc/cc-mode.texi [moved from man/cc-mode.texi with 99% similarity]
doc/misc/cl.texi [moved from man/cl.texi with 99% similarity]
doc/misc/dired-x.texi [moved from man/dired-x.texi with 99% similarity]
doc/misc/doclicense.texi [moved from man/doclicense.texi with 100% similarity]
doc/misc/ebrowse.texi [moved from man/ebrowse.texi with 99% similarity]
doc/misc/ediff.texi [moved from man/ediff.texi with 99% similarity]
doc/misc/emacs-mime.texi [moved from man/emacs-mime.texi with 99% similarity]
doc/misc/erc.texi [moved from man/erc.texi with 96% similarity]
doc/misc/eshell.texi [moved from man/eshell.texi with 99% similarity]
doc/misc/eudc.texi [moved from man/eudc.texi with 99% similarity]
doc/misc/faq.texi [moved from man/faq.texi with 99% similarity]
doc/misc/flymake.texi [moved from man/flymake.texi with 99% similarity]
doc/misc/forms.texi [moved from man/forms.texi with 99% similarity]
doc/misc/gnus-faq.texi [moved from man/gnus-faq.texi with 100% similarity]
doc/misc/gnus.texi [moved from man/gnus.texi with 99% similarity]
doc/misc/gpl.texi [moved from man/gpl.texi with 100% similarity]
doc/misc/idlwave.texi [moved from man/idlwave.texi with 99% similarity]
doc/misc/info.texi [moved from man/info.texi with 99% similarity]
doc/misc/makefile.w32-in [moved from man/makefile.w32-in with 78% similarity]
doc/misc/message.texi [moved from man/message.texi with 99% similarity]
doc/misc/mh-e.texi [moved from man/mh-e.texi with 99% similarity]
doc/misc/newsticker.texi [moved from man/newsticker.texi with 99% similarity]
doc/misc/org.texi [moved from man/org.texi with 74% similarity]
doc/misc/pcl-cvs.texi [moved from man/pcl-cvs.texi with 99% similarity]
doc/misc/pgg.texi [moved from man/pgg.texi with 99% similarity]
doc/misc/rcirc.texi [moved from man/rcirc.texi with 99% similarity]
doc/misc/reftex.texi [moved from man/reftex.texi with 99% similarity]
doc/misc/sc.texi [moved from man/sc.texi with 99% similarity]
doc/misc/ses.texi [moved from man/ses.texi with 99% similarity]
doc/misc/sieve.texi [moved from man/sieve.texi with 99% similarity]
doc/misc/smtpmail.texi [moved from man/smtpmail.texi with 99% similarity]
doc/misc/speedbar.texi [moved from man/speedbar.texi with 99% similarity]
doc/misc/texinfo.tex [moved from man/texinfo.tex with 99% similarity]
doc/misc/tramp.texi [moved from man/tramp.texi with 62% similarity]
doc/misc/trampver.texi [moved from man/trampver.texi with 79% similarity]
doc/misc/url.texi [moved from man/url.texi with 99% similarity]
doc/misc/vip.texi [moved from man/vip.texi with 99% similarity]
doc/misc/viper.texi [moved from man/viper.texi with 99% similarity]
doc/misc/widget.texi [moved from man/widget.texi with 99% similarity]
doc/misc/woman.texi [moved from man/woman.texi with 99% similarity]
etc/AUTHORS [moved from AUTHORS with 100% similarity]
etc/CONTRIBUTE [moved from CONTRIBUTE with 88% similarity]
etc/ChangeLog
etc/DEBUG
etc/ERC-NEWS
etc/MORE.STUFF
etc/NEWS
etc/NEWS.22 [new file with mode: 0644]
etc/PROBLEMS
etc/README
etc/TODO
etc/calccard.ps [deleted file]
etc/compilation.txt
etc/cs-dired-ref.ps [deleted file]
etc/cs-refcard.ps [deleted file]
etc/de-refcard.ps [deleted file]
etc/dired-ref.ps [deleted file]
etc/e/README [new file with mode: 0644]
etc/emacs.bash
etc/emacs.csh
etc/emacs.py
etc/emacs2.py [new file with mode: 0644]
etc/emacs3.py [new file with mode: 0644]
etc/emacstool.1 [deleted file]
etc/fr-drdref.ps [deleted file]
etc/fr-refcard.ps [deleted file]
etc/gnus-booklet.ps [deleted file]
etc/gnus-refcard.ps [deleted file]
etc/images/README
etc/images/gnus.pbm [moved from etc/gnus.pbm with 100% similarity]
etc/images/letter.pbm [moved from etc/letter.pbm with 100% similarity]
etc/images/letter.xpm [moved from etc/letter.xpm with 100% similarity]
etc/images/splash.pbm [moved from etc/splash.pbm with 100% similarity]
etc/images/splash.xpm [moved from etc/splash.xpm with 100% similarity]
etc/images/splash8.xpm [moved from etc/splash8.xpm with 100% similarity]
etc/images/tree-widget/default/README [moved from etc/tree-widget/default/README with 100% similarity]
etc/images/tree-widget/default/close.png [moved from etc/tree-widget/default/close.png with 100% similarity]
etc/images/tree-widget/default/close.xpm [moved from etc/tree-widget/default/close.xpm with 100% similarity]
etc/images/tree-widget/default/empty.png [moved from etc/tree-widget/default/empty.png with 100% similarity]
etc/images/tree-widget/default/empty.xpm [moved from etc/tree-widget/default/empty.xpm with 100% similarity]
etc/images/tree-widget/default/end-guide.png [moved from etc/tree-widget/default/end-guide.png with 100% similarity]
etc/images/tree-widget/default/end-guide.xpm [moved from etc/tree-widget/default/end-guide.xpm with 100% similarity]
etc/images/tree-widget/default/guide.png [moved from etc/tree-widget/default/guide.png with 100% similarity]
etc/images/tree-widget/default/guide.xpm [moved from etc/tree-widget/default/guide.xpm with 100% similarity]
etc/images/tree-widget/default/handle.png [moved from etc/tree-widget/default/handle.png with 100% similarity]
etc/images/tree-widget/default/handle.xpm [moved from etc/tree-widget/default/handle.xpm with 100% similarity]
etc/images/tree-widget/default/leaf.png [moved from etc/tree-widget/default/leaf.png with 100% similarity]
etc/images/tree-widget/default/leaf.xpm [moved from etc/tree-widget/default/leaf.xpm with 100% similarity]
etc/images/tree-widget/default/no-guide.png [moved from etc/tree-widget/default/no-guide.png with 100% similarity]
etc/images/tree-widget/default/no-guide.xpm [moved from etc/tree-widget/default/no-guide.xpm with 100% similarity]
etc/images/tree-widget/default/no-handle.png [moved from etc/tree-widget/default/no-handle.png with 100% similarity]
etc/images/tree-widget/default/no-handle.xpm [moved from etc/tree-widget/default/no-handle.xpm with 100% similarity]
etc/images/tree-widget/default/open.png [moved from etc/tree-widget/default/open.png with 100% similarity]
etc/images/tree-widget/default/open.xpm [moved from etc/tree-widget/default/open.xpm with 100% similarity]
etc/images/tree-widget/folder/README [moved from etc/tree-widget/folder/README with 100% similarity]
etc/images/tree-widget/folder/close.png [moved from etc/tree-widget/folder/close.png with 100% similarity]
etc/images/tree-widget/folder/close.xpm [moved from etc/tree-widget/folder/close.xpm with 100% similarity]
etc/images/tree-widget/folder/empty.png [moved from etc/tree-widget/folder/empty.png with 100% similarity]
etc/images/tree-widget/folder/empty.xpm [moved from etc/tree-widget/folder/empty.xpm with 100% similarity]
etc/images/tree-widget/folder/end-guide.png [moved from etc/tree-widget/folder/end-guide.png with 100% similarity]
etc/images/tree-widget/folder/end-guide.xpm [moved from etc/tree-widget/folder/end-guide.xpm with 100% similarity]
etc/images/tree-widget/folder/guide.png [moved from etc/tree-widget/folder/guide.png with 100% similarity]
etc/images/tree-widget/folder/guide.xpm [moved from etc/tree-widget/folder/guide.xpm with 100% similarity]
etc/images/tree-widget/folder/handle.png [moved from etc/tree-widget/folder/handle.png with 100% similarity]
etc/images/tree-widget/folder/handle.xpm [moved from etc/tree-widget/folder/handle.xpm with 100% similarity]
etc/images/tree-widget/folder/leaf.png [moved from etc/tree-widget/folder/leaf.png with 100% similarity]
etc/images/tree-widget/folder/leaf.xpm [moved from etc/tree-widget/folder/leaf.xpm with 100% similarity]
etc/images/tree-widget/folder/no-guide.png [moved from etc/tree-widget/folder/no-guide.png with 100% similarity]
etc/images/tree-widget/folder/no-guide.xpm [moved from etc/tree-widget/folder/no-guide.xpm with 100% similarity]
etc/images/tree-widget/folder/no-handle.png [moved from etc/tree-widget/folder/no-handle.png with 100% similarity]
etc/images/tree-widget/folder/no-handle.xpm [moved from etc/tree-widget/folder/no-handle.xpm with 100% similarity]
etc/images/tree-widget/folder/open.png [moved from etc/tree-widget/folder/open.png with 100% similarity]
etc/images/tree-widget/folder/open.xpm [moved from etc/tree-widget/folder/open.xpm with 100% similarity]
etc/orgcard.ps [deleted file]
etc/pl-refcard.ps [deleted file]
etc/pt-br-refcard.ps [deleted file]
etc/refcard.ps [deleted file]
etc/refcards/Makefile [moved from etc/Makefile with 52% similarity]
etc/refcards/README [new file with mode: 0644]
etc/refcards/calccard.pdf [new file with mode: 0644]
etc/refcards/calccard.tex [moved from etc/calccard.tex with 98% similarity]
etc/refcards/cs-dired-ref.pdf [new file with mode: 0644]
etc/refcards/cs-dired-ref.tex [moved from etc/cs-dired-ref.tex with 98% similarity]
etc/refcards/cs-refcard.pdf [new file with mode: 0644]
etc/refcards/cs-refcard.tex [moved from etc/cs-refcard.tex with 99% similarity]
etc/refcards/cs-survival.tex [moved from etc/cs-survival.tex with 98% similarity]
etc/refcards/de-refcard.pdf [new file with mode: 0644]
etc/refcards/de-refcard.tex [moved from etc/de-refcard.tex with 98% similarity]
etc/refcards/dired-ref.pdf [new file with mode: 0644]
etc/refcards/dired-ref.tex [moved from etc/dired-ref.tex with 98% similarity]
etc/refcards/fr-dired-ref.pdf [new file with mode: 0644]
etc/refcards/fr-dired-ref.tex [moved from etc/fr-drdref.tex with 98% similarity]
etc/refcards/fr-refcard.pdf [new file with mode: 0644]
etc/refcards/fr-refcard.tex [moved from etc/fr-refcard.tex with 97% similarity]
etc/refcards/fr-survival.tex [moved from etc/fr-survival.tex with 98% similarity]
etc/refcards/gnus-booklet.pdf [new file with mode: 0644]
etc/refcards/gnus-logo.eps [moved from etc/gnus-logo.eps with 100% similarity]
etc/refcards/gnus-logo.pdf [new file with mode: 0644]
etc/refcards/gnus-refcard.pdf [new file with mode: 0644]
etc/refcards/gnus-refcard.tex [moved from etc/gnus-refcard.tex with 100% similarity]
etc/refcards/orgcard.pdf [new file with mode: 0644]
etc/refcards/orgcard.tex [moved from etc/orgcard.tex with 81% similarity]
etc/refcards/pdflayout.sty [new file with mode: 0644]
etc/refcards/pl-refcard.pdf [new file with mode: 0644]
etc/refcards/pl-refcard.tex [moved from etc/pl-refcard.tex with 99% similarity]
etc/refcards/pt-br-refcard.pdf [new file with mode: 0644]
etc/refcards/pt-br-refcard.tex [moved from etc/pt-br-refcard.tex with 98% similarity]
etc/refcards/refcard.pdf [new file with mode: 0644]
etc/refcards/refcard.tex [moved from etc/refcard.tex with 98% similarity]
etc/refcards/ru-refcard.pdf [new file with mode: 0644]
etc/refcards/ru-refcard.tex [moved from etc/ru-refcard.tex with 99% similarity]
etc/refcards/sk-dired-ref.pdf [new file with mode: 0644]
etc/refcards/sk-dired-ref.tex [moved from etc/sk-dired-ref.tex with 98% similarity]
etc/refcards/sk-refcard.pdf [new file with mode: 0644]
etc/refcards/sk-refcard.tex [moved from etc/sk-refcard.tex with 99% similarity]
etc/refcards/sk-survival.tex [moved from etc/sk-survival.tex with 98% similarity]
etc/refcards/survival.tex [moved from etc/survival.tex with 98% similarity]
etc/refcards/vipcard.tex [moved from etc/vipcard.tex with 98% similarity]
etc/refcards/viperCard.tex [moved from etc/viperCard.tex with 99% similarity]
etc/ru-refcard.ps [deleted file]
etc/sk-dired-ref.ps [deleted file]
etc/sk-refcard.ps [deleted file]
etc/tutorials/TUTORIAL [moved from etc/TUTORIAL with 100% similarity]
etc/tutorials/TUTORIAL.bg [moved from etc/TUTORIAL.bg with 100% similarity]
etc/tutorials/TUTORIAL.cn [moved from etc/TUTORIAL.cn with 100% similarity]
etc/tutorials/TUTORIAL.cs [moved from etc/TUTORIAL.cs with 100% similarity]
etc/tutorials/TUTORIAL.de [moved from etc/TUTORIAL.de with 100% similarity]
etc/tutorials/TUTORIAL.eo [moved from etc/TUTORIAL.eo with 100% similarity]
etc/tutorials/TUTORIAL.es [moved from etc/TUTORIAL.es with 100% similarity]
etc/tutorials/TUTORIAL.fr [moved from etc/TUTORIAL.fr with 100% similarity]
etc/tutorials/TUTORIAL.it [moved from etc/TUTORIAL.it with 100% similarity]
etc/tutorials/TUTORIAL.ja [moved from etc/TUTORIAL.ja with 100% similarity]
etc/tutorials/TUTORIAL.ko [moved from etc/TUTORIAL.ko with 100% similarity]
etc/tutorials/TUTORIAL.nl [moved from etc/TUTORIAL.nl with 100% similarity]
etc/tutorials/TUTORIAL.pl [moved from etc/TUTORIAL.pl with 100% similarity]
etc/tutorials/TUTORIAL.pt_BR [moved from etc/TUTORIAL.pt_BR with 100% similarity]
etc/tutorials/TUTORIAL.ro [moved from etc/TUTORIAL.ro with 100% similarity]
etc/tutorials/TUTORIAL.ru [moved from etc/TUTORIAL.ru with 100% similarity]
etc/tutorials/TUTORIAL.sk [moved from etc/TUTORIAL.sk with 100% similarity]
etc/tutorials/TUTORIAL.sl [moved from etc/TUTORIAL.sl with 100% similarity]
etc/tutorials/TUTORIAL.sv [moved from etc/TUTORIAL.sv with 100% similarity]
etc/tutorials/TUTORIAL.th [moved from etc/TUTORIAL.th with 100% similarity]
etc/tutorials/TUTORIAL.translators [moved from etc/TUTORIAL.translators with 100% similarity]
etc/tutorials/TUTORIAL.zh [moved from etc/TUTORIAL.zh with 100% similarity]
leim/ChangeLog
lib-src/ChangeLog
lib-src/Makefile.in
lib-src/emacsclient.c
lib-src/emacstool.c [deleted file]
lib-src/etags.c
lib-src/makefile.w32-in
lisp/ChangeLog
lisp/ChangeLog.12 [new file with mode: 0644]
lisp/ChangeLog.5
lisp/Makefile.in
lisp/add-log.el
lisp/allout.el
lisp/ansi-color.el
lisp/arc-mode.el
lisp/autoinsert.el
lisp/autorevert.el
lisp/bindings.el
lisp/bookmark.el
lisp/bs.el
lisp/button.el
lisp/calc/calc-aent.el
lisp/calc/calc-bin.el
lisp/calc/calc-comb.el
lisp/calc/calc-embed.el
lisp/calc/calc-ext.el
lisp/calc/calc-forms.el
lisp/calc/calc-funcs.el
lisp/calc/calc-graph.el
lisp/calc/calc-help.el
lisp/calc/calc-lang.el
lisp/calc/calc-math.el
lisp/calc/calc-misc.el
lisp/calc/calc-nlfit.el [new file with mode: 0644]
lisp/calc/calc-poly.el
lisp/calc/calc-prog.el
lisp/calc/calc-store.el
lisp/calc/calc-stuff.el
lisp/calc/calc-units.el
lisp/calc/calc-yank.el
lisp/calc/calc.el
lisp/calc/calcalg3.el
lisp/calc/calccomp.el
lisp/calculator.el
lisp/calendar/appt.el
lisp/calendar/cal-bahai.el
lisp/calendar/cal-hebrew.el
lisp/calendar/cal-islam.el
lisp/calendar/cal-menu.el
lisp/calendar/cal-move.el
lisp/calendar/cal-tex.el
lisp/calendar/cal-x.el
lisp/calendar/calendar.el
lisp/calendar/diary-lib.el
lisp/calendar/holidays.el
lisp/calendar/icalendar.el
lisp/cmuscheme.el
lisp/comint.el
lisp/complete.el
lisp/completion.el
lisp/composite.el
lisp/cus-dep.el
lisp/cus-edit.el
lisp/cus-face.el
lisp/cus-start.el
lisp/custom.el
lisp/dabbrev.el
lisp/delsel.el
lisp/desktop.el
lisp/diff-mode.el
lisp/diff.el
lisp/dired-aux.el
lisp/dired.el
lisp/disp-table.el
lisp/doc-view.el [new file with mode: 0644]
lisp/double.el
lisp/ebuff-menu.el
lisp/echistory.el
lisp/ediff-diff.el
lisp/ediff-init.el
lisp/ediff-mult.el
lisp/ediff-ptch.el
lisp/ediff-util.el
lisp/ediff-vers.el
lisp/ediff-wind.el
lisp/ediff.el
lisp/edmacro.el
lisp/emacs-lisp/advice.el
lisp/emacs-lisp/authors.el
lisp/emacs-lisp/autoload.el
lisp/emacs-lisp/avl-tree.el [new file with mode: 0644]
lisp/emacs-lisp/byte-opt.el
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/checkdoc.el
lisp/emacs-lisp/cl-extra.el
lisp/emacs-lisp/cl-loaddefs.el
lisp/emacs-lisp/cl-macs.el
lisp/emacs-lisp/cl-seq.el
lisp/emacs-lisp/cl.el
lisp/emacs-lisp/copyright.el
lisp/emacs-lisp/cust-print.el
lisp/emacs-lisp/derived.el
lisp/emacs-lisp/disass.el
lisp/emacs-lisp/easy-mmode.el
lisp/emacs-lisp/easymenu.el
lisp/emacs-lisp/edebug.el
lisp/emacs-lisp/eldoc.el
lisp/emacs-lisp/elint.el
lisp/emacs-lisp/elp.el
lisp/emacs-lisp/generic.el
lisp/emacs-lisp/lisp-mode.el
lisp/emacs-lisp/pp.el
lisp/emacs-lisp/re-builder.el
lisp/emacs-lisp/regi.el
lisp/emacs-lisp/ring.el
lisp/emacs-lisp/rx.el
lisp/emacs-lisp/sregex.el
lisp/emerge.el
lisp/emulation/cua-base.el
lisp/emulation/cua-rect.el
lisp/emulation/tpu-edt.el
lisp/emulation/tpu-extras.el
lisp/emulation/tpu-mapper.el
lisp/emulation/viper-cmd.el
lisp/emulation/viper-ex.el
lisp/emulation/viper-init.el
lisp/emulation/viper-keym.el
lisp/emulation/viper-macs.el
lisp/emulation/viper-util.el
lisp/emulation/viper.el
lisp/env.el
lisp/erc/ChangeLog
lisp/erc/erc-backend.el
lisp/erc/erc-button.el
lisp/erc/erc-compat.el
lisp/erc/erc-goodies.el
lisp/erc/erc-identd.el
lisp/erc/erc-log.el
lisp/erc/erc-sound.el
lisp/erc/erc-stamp.el
lisp/erc/erc-track.el
lisp/erc/erc.el
lisp/eshell/em-unix.el
lisp/eshell/esh-opt.el
lisp/faces.el
lisp/ffap.el
lisp/filecache.el
lisp/files.el
lisp/filesets.el
lisp/find-lisp.el
lisp/finder.el
lisp/follow.el
lisp/font-lock.el
lisp/format.el
lisp/frame.el
lisp/fringe.el
lisp/gnus/ChangeLog
lisp/gnus/gnus-art.el
lisp/gnus/gnus-uu.el
lisp/gnus/sieve-manage.el
lisp/help-fns.el
lisp/help-mode.el
lisp/help.el
lisp/hi-lock.el
lisp/ido.el
lisp/image-dired.el
lisp/image-file.el
lisp/image-mode.el
lisp/image.el
lisp/indent.el
lisp/info.el
lisp/international/characters.el
lisp/international/encoded-kb.el
lisp/international/mule-cmds.el
lisp/international/mule-diag.el
lisp/international/mule.el
lisp/international/quail.el
lisp/international/utf-8.el
lisp/isearch.el
lisp/jka-cmpr-hook.el
lisp/kmacro.el
lisp/language/ethio-util.el
lisp/ldefs-boot.el
lisp/loadup.el
lisp/locate.el
lisp/log-edit.el
lisp/log-view.el
lisp/mail/emacsbug.el
lisp/mail/feedmail.el
lisp/mail/mail-extr.el
lisp/mail/reporter.el
lisp/mail/rmail.el
lisp/mail/sendmail.el
lisp/mail/supercite.el
lisp/makefile.w32-in
lisp/mb-depth.el [new file with mode: 0644]
lisp/menu-bar.el
lisp/mh-e/ChangeLog
lisp/mh-e/mh-alias.el
lisp/mh-e/mh-comp.el
lisp/mh-e/mh-compat.el
lisp/mh-e/mh-e.el
lisp/mh-e/mh-folder.el
lisp/mh-e/mh-mime.el
lisp/mh-e/mh-show.el
lisp/mouse.el
lisp/net/ange-ftp.el
lisp/net/browse-url.el
lisp/net/eudc-hotlist.el
lisp/net/eudc.el
lisp/net/eudcb-bbdb.el
lisp/net/eudcb-ldap.el
lisp/net/rcirc.el
lisp/net/rcompile.el
lisp/net/snmp-mode.el
lisp/net/socks.el
lisp/net/tramp-cache.el [new file with mode: 0644]
lisp/net/tramp-compat.el [new file with mode: 0644]
lisp/net/tramp-fish.el [new file with mode: 0644]
lisp/net/tramp-ftp.el
lisp/net/tramp-gw.el [new file with mode: 0644]
lisp/net/tramp-smb.el
lisp/net/tramp-util.el [deleted file]
lisp/net/tramp-uu.el
lisp/net/tramp-vc.el [deleted file]
lisp/net/tramp.el
lisp/net/trampver.el
lisp/net/webjump.el
lisp/newcomment.el
lisp/novice.el
lisp/obsolete/hilit19.el
lisp/obsolete/sun-fns.el
lisp/outline.el
lisp/pcomplete.el
lisp/pcvs.el
lisp/play/bubbles.el [new file with mode: 0644]
lisp/play/gamegrid.el
lisp/play/solitaire.el
lisp/play/zone.el
lisp/printing.el
lisp/progmodes/ada-mode.el
lisp/progmodes/ada-prj.el
lisp/progmodes/autoconf.el
lisp/progmodes/cc-cmds.el
lisp/progmodes/cc-fonts.el
lisp/progmodes/cc-langs.el
lisp/progmodes/cc-mode.el
lisp/progmodes/cc-styles.el
lisp/progmodes/compile.el
lisp/progmodes/cperl-mode.el
lisp/progmodes/delphi.el
lisp/progmodes/ebnf-abn.el
lisp/progmodes/ebnf-bnf.el
lisp/progmodes/ebnf-dtd.el
lisp/progmodes/ebnf-ebx.el
lisp/progmodes/ebnf-iso.el
lisp/progmodes/ebnf-yac.el
lisp/progmodes/ebnf2ps.el
lisp/progmodes/ebrowse.el
lisp/progmodes/f90.el
lisp/progmodes/flymake.el
lisp/progmodes/fortran.el
lisp/progmodes/grep.el
lisp/progmodes/gud.el
lisp/progmodes/hideshow.el
lisp/progmodes/idlw-shell.el
lisp/progmodes/idlw-toolbar.el
lisp/progmodes/idlwave.el
lisp/progmodes/meta-mode.el
lisp/progmodes/octave-mod.el
lisp/progmodes/python.el
lisp/progmodes/sh-script.el
lisp/progmodes/sql.el
lisp/progmodes/vera-mode.el
lisp/progmodes/vhdl-mode.el
lisp/progmodes/which-func.el
lisp/progmodes/xscheme.el
lisp/ps-mule.el
lisp/ps-print.el
lisp/recentf.el
lisp/replace.el
lisp/rfn-eshadow.el
lisp/savehist.el
lisp/scroll-bar.el
lisp/server.el
lisp/shell.el
lisp/simple.el
lisp/smerge-mode.el
lisp/startup.el
lisp/subr.el
lisp/t-mouse.el
lisp/talk.el
lisp/tar-mode.el
lisp/tempo.el
lisp/term.el
lisp/term/AT386.el
lisp/term/README
lisp/term/apollo.el
lisp/term/bobcat.el
lisp/term/cygwin.el
lisp/term/internal.el
lisp/term/iris-ansi.el
lisp/term/linux.el
lisp/term/lk201.el
lisp/term/mac-win.el
lisp/term/news.el
lisp/term/rxvt.el
lisp/term/sun-mouse.el
lisp/term/sun.el
lisp/term/tvi970.el
lisp/term/vt100.el
lisp/term/vt102.el
lisp/term/vt125.el
lisp/term/vt200.el
lisp/term/vt201.el
lisp/term/vt220.el
lisp/term/vt240.el
lisp/term/vt300.el
lisp/term/vt320.el
lisp/term/vt400.el
lisp/term/vt420.el
lisp/term/w32-win.el
lisp/term/wyse50.el
lisp/term/x-win.el
lisp/term/xterm.el
lisp/textmodes/artist.el
lisp/textmodes/bibtex-style.el
lisp/textmodes/bibtex.el
lisp/textmodes/css-mode.el
lisp/textmodes/fill.el
lisp/textmodes/flyspell.el
lisp/textmodes/ispell.el
lisp/textmodes/nroff-mode.el
lisp/textmodes/org-export-latex.el [new file with mode: 0644]
lisp/textmodes/org-publish.el [new file with mode: 0644]
lisp/textmodes/org.el
lisp/textmodes/reftex-cite.el
lisp/textmodes/reftex-ref.el
lisp/textmodes/reftex-sel.el
lisp/textmodes/reftex-toc.el
lisp/textmodes/reftex.el
lisp/textmodes/sgml-mode.el
lisp/textmodes/table.el
lisp/textmodes/tex-mode.el
lisp/textmodes/texinfmt.el
lisp/textmodes/texinfo.el
lisp/thingatpt.el
lisp/thumbs.el
lisp/time.el
lisp/tmm.el
lisp/tool-bar.el
lisp/tutorial.el
lisp/uniquify.el
lisp/url/ChangeLog
lisp/url/url-auth.el
lisp/url/url-cookie.el
lisp/url/url-dav.el
lisp/url/url-expand.el
lisp/url/url-file.el
lisp/url/url-mailto.el
lisp/url/url-methods.el
lisp/url/url-parse.el
lisp/url/url-util.el
lisp/url/url-vars.el
lisp/url/url.el
lisp/vc-arch.el
lisp/vc-bzr.el
lisp/vc-cvs.el
lisp/vc-git.el
lisp/vc-hg.el
lisp/vc-hooks.el
lisp/vc-mcvs.el
lisp/vc-mtn.el
lisp/vc-rcs.el
lisp/vc-sccs.el
lisp/vc-svn.el
lisp/vc.el
lisp/vcursor.el
lisp/version.el
lisp/wdired.el
lisp/whitespace.el
lisp/wid-browse.el
lisp/wid-edit.el
lisp/window.el
lisp/woman.el
lisp/x-dnd.el
lisp/xt-mouse.el
lwlib/ChangeLog
lwlib/lwlib-Xaw.c
lwlib/lwlib.c
lwlib/xlwmenu.c
mac/ChangeLog
mac/Emacs.app/Contents/Info.plist
mac/Emacs.app/Contents/Resources/Emacs.icns
mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
mac/Emacs.app/Contents/Resources/document.icns [new file with mode: 0644]
mac/makefile.MPW
mac/src/Emacs.r
make-dist
mkinstalldirs
msdos/ChangeLog
msdos/sed1v2.inp
msdos/sed6.inp
nt/ChangeLog
nt/configure.bat
nt/emacs.rc
nt/inc/sys/socket.h
nt/makefile.w32-in
src/.arch-inventory
src/.gdbinit
src/ChangeLog
src/ChangeLog.10 [new file with mode: 0644]
src/Makefile.in
src/abbrev.c
src/alloc.c
src/alloca.c [deleted file]
src/buffer.c
src/buffer.h
src/callint.c
src/callproc.c
src/casetab.c
src/ccl.c
src/cm.c
src/cm.h
src/coding.c
src/coding.h
src/config.in
src/data.c
src/dispextern.h
src/dispnew.c
src/doc.c
src/editfns.c
src/emacs.c
src/eval.c
src/fileio.c
src/floatfns.c
src/fns.c
src/fontset.c
src/frame.c
src/frame.h
src/fringe.c
src/gtkutil.c
src/image.c
src/indent.c
src/indent.h
src/insdel.c
src/intervals.c
src/keyboard.c
src/keyboard.h
src/keymap.c
src/keymap.h
src/lisp.h
src/lread.c
src/m/alpha.h
src/m/amdx86-64.h
src/m/ibms390x.h
src/m/sh3el.h
src/mac.c
src/macfns.c
src/macgui.h
src/macmenu.c
src/macselect.c
src/macterm.c
src/macterm.h
src/makefile.w32-in
src/marker.c
src/minibuf.c
src/msdos.c
src/prefix-args.c
src/print.c
src/process.c
src/process.h
src/puresize.h
src/regex.c
src/s/cygwin.h
src/s/darwin.h
src/s/ms-w32.h
src/scroll.c
src/search.c
src/sound.c
src/sunfns.c
src/sysdep.c
src/syssignal.h
src/term.c
src/termchar.h
src/termhooks.h
src/terminal.c [new file with mode: 0644]
src/termopts.h
src/w32.c
src/w32console.c
src/w32fns.c
src/w32inevt.c
src/w32inevt.h
src/w32menu.c
src/w32term.c
src/w32term.h
src/widget.c
src/window.c
src/window.h
src/xdisp.c
src/xfaces.c
src/xfns.c
src/xmenu.c
src/xselect.c
src/xsmfns.c
src/xterm.c
src/xterm.h

index f7234ae1ef93dbdeb5062f8ab93fe54c3f624151..f771639cb3d0937433d7125e3393cf6ba92221d4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2007-10-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * config.bat: Fix configuring `doc' due to changes in the
+       directory structure.
+
 2007-09-16  Peter O'Gorman <bug-gnu-emacs@mlists.thewrittenword.com> (tiny change)
 
        * configure.in: Don't use -lpthread on HP-UX.
 
+2007-09-16  Glenn Morris  <rgm@gnu.org>
+
+       * make-dist: File gfdl.1 has been removed.
+
+2007-09-15  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in: Fix makeinfo version regexp.
+
+2007-09-12  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in (AC_FUNC_ALLOCA): Throw an error if a system
+       implementation of alloca is not found.
+
+       * Makefile.in (SOURCES, unlock, relock): Delete.
+       (install-arch-indep): Do not exclude the etc/ Makefiles.
+
+2007-09-09  Juri Linkov  <juri@jurta.org>
+
+       * make-dist: Remove AUTHORS and CONTRIBUTE (moved to etc).
+
+       * README: Add doc/ to documentation directories.
+
+2007-09-08  Michael Olson  <mwolson@gnu.org>
+
+       * MAINTAINERS: Add myself for ERC and tq.el.
+       Update for new doc/ directory layout.
+
+2007-09-06  Romain Francoise  <romain@orebokech.com>
+
+       * make-dist: Update for new doc/ directory layout.
+
+2007-09-06  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (mansrcdir): New variable.
+       (SUBDIR_MAKEFILES): Update for new doc/ directory layout.
+       (man/Makefile, lispref/Makefile, lispintro/Makefile): Rename and
+       update these targets for new doc/ directory layout.
+       (doc/misc/Makefile): New target.
+       (install-arch-indep): Use mansrcdir for new location of manpages.
+       (mostlyclean, clean, distclean, maintainer-clean, unlock)
+       (relock, info, dvi): Update targets for new doc/ directory layout.
+
+       * configure.in (AC_OUTPUT): Update names of generated Makefiles
+       for new doc/ directory layout.
+
+2007-09-02  Andreas Schwab  <schwab@suse.de>
+
+       * configure.in: Use AS_HELP_STRING throughout.
+       * configure: Regenerate.
+
 2007-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * configure.in: Require Gtk/Glib 2.6.
 
+2007-09-02  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       * configure.in (EMACS_ARG_Y, EMACS_ARG_N): New AC_DEFUNs.
+       Use them throughout in place of AC_ARG_WITH calls.
+       * configure: Regenerate.
+
+2007-09-01  Andreas Schwab  <schwab@suse.de>
+
+       * configure.in: Put quotes around nested macro calls.
+
+2007-08-31  Ulrich Mueller  <ulm@gentoo.org>  (tiny change)
+
+       * configure.in: Fix typo.
+       * configure: Regenerate.
+
+2007-08-30  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in (AH_BOTTOM): Copy some manual changes made to
+       src/config.in here so they are not lost when it regenerates.
+
+       * README.multi-tty: Move to admin/notes/multi-tty, with some edits.
+
+2007-08-29  Karoly Lorentey  <karoly@lorentey.hu>
+
+       * README.multi-tty: New file.
+
+2007-08-29  Glenn Morris  <rgm@gnu.org>
+
+       * README: Increase version to 23.0.50.
+
+2007-08-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * configure.in: New option: --without-xaw3d.
+
+2007-08-24  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in: Check for a suitably recent makeinfo.
+
+2007-08-23  Johannes Weiner  <hannes@saeurebad.de>  (tiny change)
+
+       * configure.in (Check for required libraries): Typo.
+
+2007-08-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * configure.in: Check librsvg2 also for Mac Carbon.
+
+2007-08-22  Romain Francoise  <romain@orebokech.com>
+
+       * make-dist: Follow reorganization of files in etc/.
+
+2007-08-22  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * configure.in: Add support for SVG images through librsvg2.
+
 2007-07-28  Eli Zaretskii  <eliz@gnu.org>
 
        * Makefile.in (install-arch-indep): Use "rm -f" for removing DOC,
 
        * COPYING, info/COPYING: Switch to GPLv3.
 
+2007-06-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * configure.in: Complain if X seems to be installed but no
+       development files were found.
+
+2007-06-20  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in: Prefer libgif over libungif.
+
+2007-06-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * configure.in: Check for all image libraries before exiting.
+
+2007-06-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * configure.in: Exit with error if image libraries aren't found.
+
+2007-06-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * configure.in: Merge xaw3d and libXaw checks.  Check xaw3d even
+       when compiling without scrollbars.
+
+2007-06-12  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in (HAVE_GIF): If -lungif fails, try -lgif.
+
+2007-06-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * configure.in: Change wording about yes/gtk and lucid/athena being
+       synonyms.
+
+2007-06-08  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in: Make gtk the default toolkit.
+
+2007-06-07  Glenn Morris  <rgm@gnu.org>
+
+       * configure.in (NON_GNU_CPP): On Solaris, set using a proper check
+       for a Sun C compiler.
+
+       * Makefile.in (install-arch-indep): Install only the DOC- file
+       specific to the build, if possible, rather than DOC-*.
+
 2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * Version 22.1 released.
 
+2007-05-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mkinstalldirs: Sync to version in automake CVS.
+
+2007-05-22  Andreas Schwab  <schwab@suse.de>
+
+       * configure.in: Prefer build_alias over host when host_alias is
+       not set.
+       * configure: Regenerate.
+
+2007-05-20  Andreas Schwab  <schwab@suse.de>
+
+       * configure.in: Remove empty AC_SUBST.
+       * configure: Regenerate.
+
+2007-05-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * configure.in: Use HAVE_GPM instead of HAVE_GPM_H and implement
+       it like others.
+       * configure: Regenerate.
+
+2007-05-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * configure.in (AC_CHECK_HEADERS) Add gpm.h.
+       (AC_CHECK_LIB): Add -lgpm.
+       * configure: Regenerate.
+
 2007-05-03  Glenn Morris  <rgm@gnu.org>
 
        * configure: Tweak message about the absence of shell functions.
 
+2007-04-27  Andreas Schwab  <schwab@suse.de>
+
+       * Makefile.in (config.status): Depend on
+       ${srcdir}/lisp/version.el.
+
+2007-04-26  Glenn Morris  <rgm@gnu.org>
+
+       * README: Increase version to 22.1.50.
+
 2007-04-24  Juanma Barranquero  <lekktu@gmail.com>
 
        * INSTALL (DETAILED BUILDING AND INSTALLATION): Fix typo.
index 92c2ff70b4778eda94a7793f49b829ff129bce72..92f1273b1164920fddd34c39433e23e0a22d6205 100644 (file)
@@ -39,7 +39,7 @@ Eli Zaretskii
        lisp/term/tty-colors.el
        lisp/international/codepage.el
 
-       man/msdog.texi
+       doc/emacs/msdog.texi
 
 Kenichi Handa
        Mule
@@ -69,7 +69,14 @@ Jay Belanger
         Calc
             lisp/calc/*
             etc/calccard.tex
-            man/calc.texi
+            doc/misc/calc.texi
+
+Michael Olson
+        ERC
+            lisp/erc/*
+            etc/ERC-NEWS
+            doc/misc/erc.texi
+        lisp/emacs-lisp/tq.el
 
 ==============================================================================
 2.
@@ -79,7 +86,7 @@ Steven Tamm
        MacOS
 
 Eli Zaretskii
-       man/*
+       doc/*
        lispref/*
        info/dir
 
@@ -149,13 +156,16 @@ src/filelock.c
 src/filemode.c
 src/firstfile.c
 src/floatfns.c
+src/fringe.c
 src/fns.c
 src/fontset.c
 src/getloadavg.c
 src/gmalloc.c
+src/gtkutil.c
 src/hftctl.c
 src/indent.c
 src/insdel.c
+src/image.c
 src/lastfile.c
 src/lread.c
 src/m/
index 502e653ccecda083bade0f4b0f63360391cb1210..acf865239ff8a678588054dbeb68023783594f80 100644 (file)
@@ -158,6 +158,9 @@ bitmapdir=@bitmapdir@
 # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
 srcdir=@srcdir@
 
+# Where the manpage source files are kept.
+mansrcdir=$(srcdir)/doc/man
+
 # Tell make where to find source files; this is needed for the makefiles.
 VPATH=@srcdir@
 
@@ -250,7 +253,7 @@ EMACSFULL = `echo emacs-${version}${EXEEXT} | sed '$(TRANSFORM)'`
 SUBDIR = lib-src src
 
 # The makefiles of the directories in $SUBDIR.
-SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile lispref/Makefile lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile
+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
 
 # Subdirectories to install, and where they'll go.
 # lib-src's makefile knows how to install it, so we don't do that here.
@@ -311,7 +314,7 @@ blessmail: ${SUBDIR_MAKEFILES} src FRC
 Makefile: $(srcdir)/Makefile.in config.status
        ./config.status
 
-config.status: ${srcdir}/configure
+config.status: ${srcdir}/configure ${srcdir}/lisp/version.el
        ./config.status --recheck
 
 AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/m4/getopt.m4
@@ -336,13 +339,16 @@ src/config.stamp: $(srcdir)/src/config.in config.status
 lib-src/Makefile: $(srcdir)/lib-src/Makefile.in config.status
        ./config.status
 
-man/Makefile: $(srcdir)/man/Makefile.in config.status
+doc/emacs/Makefile: $(srcdir)/doc/emacs/Makefile.in config.status
+       ./config.status
+
+doc/misc/Makefile: $(srcdir)/doc/misc/Makefile.in config.status
        ./config.status
 
-lispref/Makefile: $(srcdir)/lispref/Makefile.in config.status
+doc/lispref/Makefile: $(srcdir)/doc/lispref/Makefile.in config.status
        ./config.status
 
-lispintro/Makefile: $(srcdir)/lispintro/Makefile.in config.status
+doc/lispintro/Makefile: $(srcdir)/doc/lispintro/Makefile.in config.status
        ./config.status
 
 oldXMenu/Makefile: $(srcdir)/oldXMenu/Makefile.in config.status
@@ -409,13 +415,14 @@ install-arch-dep: mkdir
 ## Note that we copy DOC* and then delete DOC
 ## as a workaround for a bug in tar on Ultrix 4.2.
 
-## FIXME
-## Should only install the DOC- file appropriate to this build, not DOC-*.
-## http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-01/msg00417.html
-## (fix available for consideration post-release).
+## We install only the relevant DOC file if possible
+## (ie DOC-${version}.buildnumber), otherwise DOC-${version}*.
 
 ## If people complain about the h flag in tar command, take that out.
 ## That flag is also used in leim/Makefile.in
+
+## Note that the Makefiles in the etc directory are potentially useful
+## in an installed Emacs, so should not be excluded.
 install-arch-indep: mkdir info
        -set ${COPYDESTS} ; \
        unset CDPATH; \
@@ -448,7 +455,8 @@ install-arch-indep: mkdir info
                rm -f  $${subdir}/.\#* ; \
                rm -f  $${subdir}/*~ ; \
                rm -f  $${subdir}/*.orig ; \
-               rm -f  $${subdir}/[mM]akefile* ; \
+               [ "$${dir}" != "${srcdir}/etc" ] && \
+                       rm -f  $${subdir}/[mM]akefile* ; \
                rm -f  $${subdir}/ChangeLog* ; \
                rm -f  $${subdir}/dired.todo ; \
              done) ; \
@@ -474,8 +482,15 @@ install-arch-indep: mkdir info
        -unset CDPATH; \
        if [ `(cd ./etc; /bin/pwd)` != `(cd $(DESTDIR)${docdir}; /bin/pwd)` ]; \
        then \
-          echo "Copying etc/DOC-* to $(DESTDIR)${docdir} ..." ; \
-          (cd ./etc; tar -chf - DOC*) \
+          fullversion=`./src/emacs --version | sed -n '1 s/GNU Emacs *//p'`; \
+          if [ -f "./etc/DOC-$${fullversion}" ]; \
+          then \
+            docfile="DOC-$${fullversion}"; \
+          else \
+            docfile="DOC-${version}*"; \
+          fi; \
+          echo "Copying etc/$${docfile} to $(DESTDIR)${docdir} ..." ; \
+          (cd ./etc; tar -chf - $${docfile}) \
             |(cd $(DESTDIR)${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
           (cd $(DESTDIR)$(docdir); chown $${LOGNAME:-$$USERNAME} DOC*; chmod a+r DOC*; \
            if test "`echo DOC-*`" != "DOC-*"; then rm -f DOC; fi); \
@@ -529,10 +544,10 @@ install-arch-indep: mkdir info
        else true; fi
        -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} $(DESTDIR)${datadir}/emacs/site-lisp ${COPYDESTS} $(DESTDIR)${infodir}
        thisdir=`/bin/pwd`; \
-       cd ${srcdir}/etc; \
+       cd ${mansrcdir}; \
        for page in emacs emacsclient etags ctags ; do \
          (cd $${thisdir}; \
-          ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 $(DESTDIR)${man1dir}/$${page}${manext}; \
+          ${INSTALL_DATA} ${mansrcdir}/$${page}.1 $(DESTDIR)${man1dir}/$${page}${manext}; \
           chmod a+r $(DESTDIR)${man1dir}/$${page}${manext}); \
        done
 
@@ -615,9 +630,10 @@ mostlyclean: FRC
        (cd oldXMenu; $(MAKE) $(MFLAGS) mostlyclean)
        (cd lwlib;    $(MAKE) $(MFLAGS) mostlyclean)
        (cd lib-src;  $(MAKE) $(MFLAGS) mostlyclean)
-       -(cd man &&   $(MAKE) $(MFLAGS) mostlyclean)
-       -(cd lispref &&   $(MAKE) $(MFLAGS) mostlyclean)
-       -(cd lispintro &&   $(MAKE) $(MFLAGS) mostlyclean)
+       -(cd doc/emacs &&   $(MAKE) $(MFLAGS) mostlyclean)
+       -(cd doc/misc &&   $(MAKE) $(MFLAGS) mostlyclean)
+       -(cd doc/lispref &&   $(MAKE) $(MFLAGS) mostlyclean)
+       -(cd doc/lispintro &&   $(MAKE) $(MFLAGS) mostlyclean)
        (cd leim;     $(MAKE) $(MFLAGS) mostlyclean)
 
 ### `clean'
@@ -633,9 +649,10 @@ clean: FRC
        (cd oldXMenu; $(MAKE) $(MFLAGS) clean)
        (cd lwlib;    $(MAKE) $(MFLAGS) clean)
        (cd lib-src;  $(MAKE) $(MFLAGS) clean)
-       -(cd man &&   $(MAKE) $(MFLAGS) clean)
-       -(cd lispref &&   $(MAKE) $(MFLAGS) clean)
-       -(cd lispintro &&   $(MAKE) $(MFLAGS) clean)
+       -(cd doc/emacs &&   $(MAKE) $(MFLAGS) clean)
+       -(cd doc/misc &&   $(MAKE) $(MFLAGS) clean)
+       -(cd doc/lispref &&   $(MAKE) $(MFLAGS) clean)
+       -(cd doc/lispintro &&   $(MAKE) $(MFLAGS) clean)
        (cd leim;     $(MAKE) $(MFLAGS) clean)
 
 ### `distclean'
@@ -653,9 +670,10 @@ distclean: FRC
        (cd oldXMenu; $(MAKE) $(MFLAGS) distclean)
        (cd lwlib;    $(MAKE) $(MFLAGS) distclean)
        (cd lib-src;  $(MAKE) $(MFLAGS) distclean)
-       (cd man &&    $(MAKE) $(MFLAGS) distclean)
-       (cd lispref &&    $(MAKE) $(MFLAGS) distclean)
-       (cd lispintro &&    $(MAKE) $(MFLAGS) distclean)
+       (cd doc/emacs &&    $(MAKE) $(MFLAGS) distclean)
+       (cd doc/misc &&    $(MAKE) $(MFLAGS) distclean)
+       (cd doc/lispref &&    $(MAKE) $(MFLAGS) distclean)
+       (cd doc/lispintro &&    $(MAKE) $(MFLAGS) distclean)
        (cd leim;     $(MAKE) $(MFLAGS) distclean)
        (cd lisp;     $(MAKE) $(MFLAGS) distclean)
        ${top_distclean}
@@ -676,9 +694,10 @@ maintainer-clean: FRC
        (cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean)
        (cd lwlib;    $(MAKE) $(MFLAGS) maintainer-clean)
        (cd lib-src;  $(MAKE) $(MFLAGS) maintainer-clean)
-       -(cd man &&   $(MAKE) $(MFLAGS) maintainer-clean)
-       -(cd lispref &&   $(MAKE) $(MFLAGS) maintainer-clean)
-       -(cd lispintro &&   $(MAKE) $(MFLAGS) maintainer-clean)
+       -(cd doc/emacs &&   $(MAKE) $(MFLAGS) maintainer-clean)
+       -(cd doc/misc &&   $(MAKE) $(MFLAGS) maintainer-clean)
+       -(cd doc/lispref &&   $(MAKE) $(MFLAGS) maintainer-clean)
+       -(cd doc/lispintro &&   $(MAKE) $(MFLAGS) maintainer-clean)
        (cd leim;     $(MAKE) $(MFLAGS) maintainer-clean)
        (cd lisp;     $(MAKE) $(MFLAGS) maintainer-clean)
        ${top_distclean}
@@ -693,49 +712,6 @@ extraclean:
        -rm -f config-tmp-*
        -rm -f *~ \#*
 
-### Unlocking and relocking.  The idea of these productions is to reduce
-### hassles when installing an incremental tar of Emacs.  Do `make unlock'
-### before unlocking the file to take the write locks off all sources so
-### that tar xvof will overwrite them without fuss.  Then do `make relock'
-### afterward so that VC mode will know which files should be checked in
-### if you want to mung them.
-###
-### Note: it's no disaster if these productions miss a file or two; tar
-### and VC will swiftly let you know if this happens, and it is easily
-### corrected.
-SOURCES = ChangeLog FTP INSTALL Makefile.in \
-       README configure make-dist move-if-change
-
-.PHONY: unlock relock
-
-unlock:
-       chmod u+w $(SOURCES)
-       -(cd elisp; chmod u+w Makefile README *.texi)
-       (cd etc; $(MAKE) $(MFLAGS) unlock)
-       (cd lib-src; $(MAKE) $(MFLAGS) unlock)
-       (cd lisp; $(MAKE) $(MFLAGS) unlock)
-       (cd lisp/term; chmod u+w README *.el)
-       (cd man; chmod u+w *texi* ChangeLog split-man)
-       (cd lispref; chmod u+w *texi* ChangeLog)
-       (cd lispintro; chmod u+w *texi* ChangeLog)
-       (cd oldXMenu; chmod u+w *.[ch] Makefile README)
-       (cd lwlib; chmod u+w *.[ch] Makefile README)
-       (cd src; $(MAKE) $(MFLAGS) unlock)
-
-relock:
-       chmod u-w $(SOURCES)
-       -(cd elisp; chmod u-w Makefile README *.texi)
-       (cd etc; $(MAKE) $(MFLAGS) relock)
-       (cd lib-src; $(MAKE) $(MFLAGS) relock)
-       (cd lisp; $(MAKE) $(MFLAGS) relock)
-       (cd lisp/term; chmod u+w README *.el)
-       (cd man; chmod u+w *texi* ChangeLog split-man)
-       (cd lispref; chmod u+w *texi* ChangeLog)
-       (cd lispintro; chmod u+w *texi* ChangeLog)
-       (cd oldXMenu; chmod u+w *.[ch] Makefile README)
-       (cd lwlib; chmod u+w *.[ch] Makefile README)
-       (cd src; $(MAKE) $(MFLAGS) relock)
-
 # 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
@@ -753,13 +729,15 @@ force-info:
 # put the info files in $(srcdir),
 # so we can do ok running make in the build dir.
 info: force-info
-       -(cd man; $(MAKE) $(MFLAGS) info)
-       -(cd lispref; $(MAKE) $(MFLAGS) info)
-       -(cd lispintro; $(MAKE) $(MFLAGS) info)
+       -(cd doc/emacs; $(MAKE) $(MFLAGS) info)
+       -(cd doc/misc; $(MAKE) $(MFLAGS) info)
+       -(cd doc/lispref; $(MAKE) $(MFLAGS) info)
+       -(cd doc/lispintro; $(MAKE) $(MFLAGS) info)
 dvi:
-       (cd man; $(MAKE) $(MFLAGS) dvi)
-       (cd lispref; $(MAKE) $(MFLAGS) elisp.dvi)
-       (cd lispintro; $(MAKE) $(MFLAGS) emacs-lisp-intro.dvi)
+       (cd doc/emacs; $(MAKE) $(MFLAGS) dvi)
+       (cd doc/misc; $(MAKE) $(MFLAGS) dvi)
+       (cd doc/lispref; $(MAKE) $(MFLAGS) elisp.dvi)
+       (cd doc/lispintro; $(MAKE) $(MFLAGS) emacs-lisp-intro.dvi)
 
 #### Bootstrapping.
 
@@ -808,7 +786,8 @@ bootstrap-clean-before-fast: FRC
        (cd oldXMenu; $(MAKE) $(MFLAGS) clean)
        (cd lwlib;    $(MAKE) $(MFLAGS) clean)
        (cd lib-src;  $(MAKE) $(MFLAGS) clean)
-       -(cd man &&   $(MAKE) $(MFLAGS) clean)
-       -(cd lispref &&   $(MAKE) $(MFLAGS) clean)
-       -(cd lispintro &&   $(MAKE) $(MFLAGS) clean)
+       -(cd doc/emacs &&   $(MAKE) $(MFLAGS) clean)
+       -(cd doc/misc &&   $(MAKE) $(MFLAGS) clean)
+       -(cd doc/lispref &&   $(MAKE) $(MFLAGS) clean)
+       -(cd doc/lispintro &&   $(MAKE) $(MFLAGS) clean)
        (cd leim;     $(MAKE) $(MFLAGS) clean)
diff --git a/README b/README
index 59e509355bfced7292d3a0ef810f9b9495ca7ed1..61970c946b901d0066e3e2eadd04212959361a92 100644 (file)
--- a/README
+++ b/README
@@ -3,7 +3,7 @@ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
 See the end of the file for license conditions.
 
 
-This directory tree holds version 22.1.50 of GNU Emacs, the extensible,
+This directory tree holds version 23.0.50 of GNU Emacs, the extensible,
 customizable, self-documenting real-time display editor.
 
 The file INSTALL in this directory says how to build and install GNU
@@ -73,14 +73,13 @@ There are several subdirectories:
             `man', `lispref', and `lispintro' subdirectories are
             architecture-independent too.
 `info'      holds the Info documentation tree for Emacs.
-`man'       holds the source code for the Emacs Manual.  If you modify the
+`doc/emacs' holds the source code for the Emacs Manual.  If you modify the
             manual sources, you will need the `makeinfo' program to produce
             an updated manual.  `makeinfo' is part of the GNU Texinfo
             package; you need version 4.6 or later of Texinfo.
-`lispref'   holds the source code for the Emacs Lisp reference manual.
-`lispintro' holds the source code for the Introduction to Programming
-            in Emacs Lisp manual.
-
+`doc/lispref'   holds the source code for the Emacs Lisp reference manual.
+`doc/lispintro' holds the source code for the Introduction to Programming
+                in Emacs Lisp manual.
 `msdos'     holds configuration files for compiling Emacs under MSDOG.
 `vms'       holds instructions and useful files for running Emacs under VMS.
 `nt'        holds various command files and documentation files that pertain
index c957ac43f3264e9cedd26dedef7cf676906c143c..10cec99a09b98ac2243957a7bfe22157997bd18b 100644 (file)
@@ -1,7 +1,23 @@
+2007-08-28  Glenn Morris  <rgm@gnu.org>
+
+       * admin.el: Provide self.
+
+2007-08-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * FOR-RELEASE (http): Add Gtk+ tool bar and GUD focus problem.
+
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
        * Relicense all FSF files to GPLv3 or later.
 
+2007-06-07  Glenn Morris  <rgm@gnu.org>
+
+       * admin.el (set-copyright): New function.
+
+2007-04-25  Nick Roberts  <nickrob@snap.net.nz>
+
+       * make-tarball.txt: Add note about cutting the branch.
+
 2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * Version 22.1 released.
@@ -11,7 +27,7 @@
        * nt/makedist.bat: Change EOL format to DOS.  Don't use
        redirection characters in REM lines.
 
-2007-01-27  Jan Dj\e,Ad\e(Brv  <jhd@winter.localdomain>
+2007-01-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * FOR-RELEASE: Removed Gtk/Xft issue.
 
index 96129ec22d411c60028eb667cfb77cd5cd375f27..8ad2fc3ae50e9dfa28728fa541c8a46b1b421b9c 100644 (file)
@@ -5,24 +5,26 @@ Tasks needed before the next release.
 ** Check for widow and orphan lines in manuals;
 make sure all the pages really look ok in the manual as formatted.
 
-** Regenerate the postscript files of the reference cards in etc.
+** Regenerate the pdf versions of the reference cards in etc/refcards/.
 
 ** Ask maintainers of refcard translations to update them.
 
-Requests to have been sent out on 2006-05-23 (Reiner Steib).
+Emacs 22 translators:
 
 LANG   Translator            Status
-cs     Pavel Janík           Can't work on it now.
-de     Sven Joachim          Done
-fr     Eric Jacoboni         Done
-pl     WÅ‚odek Bzyl           Done
-pt-br  Rodrigo Real          Done
-ru     Alex Ott              Done
-sk     Miroslav VaÅ¡ko        No response
+cs     Pavel Janík           
+de     Sven Joachim          
+fr     Eric Jacoboni         
+pl     WÅ‚odek Bzyl           
+pt-br  Rodrigo Real          
+ru     Alex Ott              
+sk     Miroslav VaÅ¡ko        
 
-Reminders sent out on 2006-06-08.
+** Remove temporary +++/--- lines in NEWS.
 
-* WINDOWS SUPPORT BUGS.
+** Try to reorder NEWS: most important things first, related items together.
+
+* WINDOWS SUPPORT BUGS
 
 These don't need to be fixed before a release, but we call the
 attention of Windows users to fixing them.
@@ -36,39 +38,50 @@ to the hack introduced on 2005-07-01 to fix some other Cleartype problem.
 
 * BUGS WAITING FOR MORE USER INPUT
 
-** undefined reference getopt_long
-Report by Daniel C. Bastos <dbast0s@yahoo.com.br> on bug-gnu-emacs
-from 2007-08-27.  Impossible to procede without more input from OP (as
-of 20070912, emails are bouncing) or someone else who can reproduce this.
-http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01497.html
+** raman@users.sf.net, sep 7: Emacs 23.0.50: Segfaults in alloc.c (batch process)
+http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00690.html
+
+* BUGS
 
-** TAGS buffer generates spurious undo warnings
-Waiting for recipe to produce these warnings.
-http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00070.html
+** Document the changes introduced by multi-tty
+http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01639.html
+http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01602.html
 
-** emacs-22.1 with GTK problems (with patches)
-Only outstanding issue seems to be whether Solaris 2.6 GTK can be
-supported in the absence of recursive mutexes, via a change to
-alloc.c, or whether configure should abort.
-http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00055.html
+** Does deleting frames run Lisp code?  If so, can we get rid of that?
+It is a dangerous design.
+http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01330.html
 
-* BUGS
+** Why were the calls to x_fully_uncatch_errors commented out in eval.c?
+http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01987.html
+
+** grep et al should use font-lock to do highlighting, so that they respect font-lock-mode.
+"can't turn off font-lock"
+http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00548.html
+
+** mah@everybody.org, Sep 18: erc causes emacs to hang with multi-tty
+http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01765.html
+
+** jbw@macs.hw.ac.uk, Sep 18: before-string property has no effect if display property is empty
+http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00094.html
+http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01816.html
+
+** sdl.web@gmail.com, Sep 24: TLS infinite loop.
+http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01720.html
 
-** ams@gnu.org, 9 July: eshell and external commands
-http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00385.html
+** herring@lanl.gov: find-func: can no longer find adviced subrs
+This ought to work.
 
-** jbw@macs.hw.ac.uk, Sep 19: redisplay goes horribly wrong when a
-before-string contains multiple display properties
-http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg02442.html
+** \\{...} produces duplicate entries
+http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg00209.html
 
-** jbw@macs.hw.ac.uk, Sep 19: part of display property on before-string
- property is not displayed
-http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00138.html
+** menu indications of key bindings for remapped commands
+http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01339.html
 
-** lekktu@gmail.com, Oct 11: frame-local variables weirdness
-I proposed a patch, which fixed this and seemed right, but the patch
-caused other problems.  They are being investigated now.
+** tromey@redhat.com: two View-mode "quit" bugs
+http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00103.html
 
+** rms: gnus-dired.el is a mistake.  Those features should not
+be part of Gnus.  They should be moved to some other part of Emacs.
 
 * DOCUMENTATION
 
@@ -76,34 +89,34 @@ caused other problems.  They are being investigated now.
 
 The first line of every tutorial must begin with text ending in a
 period (".", ASCII 0x2E) saying "Emacs Tutorial" in the respective
-language.  This should be followed by "See end for copying
-conditions", likewise in the respective language.
+language. This should be followed by "See end for copying conditions",
+likewise in the respective language.
 
 After each file name, on the same line or the following line, come the
 names of the people who have checked it.
 
 SECTION                  READERS
 ----------------------------------
-etc/TUTORIAL             rms
-etc/TUTORIAL.bg          Ognyan Kulev <ogi@fmi.uni-sofia.bg>
+etc/TUTORIAL             
+etc/TUTORIAL.bg          
 etc/TUTORIAL.cn
-etc/TUTORIAL.cs          Pavel Janík <Pavel@Janik.cz>
-etc/TUTORIAL.de          Werner LEMBERG <wl@gnu.org>
+etc/TUTORIAL.cs          
+etc/TUTORIAL.de          
 etc/TUTORIAL.eo
-etc/TUTORIAL.es          Marcelo Toledo
-etc/TUTORIAL.fr          ttn
-etc/TUTORIAL.it          ttn
-etc/TUTORIAL.ja                 Kenichi Handa <handa@m17n.org>
+etc/TUTORIAL.es          
+etc/TUTORIAL.fr          
+etc/TUTORIAL.it          
+etc/TUTORIAL.ja                 
 etc/TUTORIAL.ko
-etc/TUTORIAL.nl                 Lute Kamstra
-etc/TUTORIAL.pl          Slawomir Nowaczyk <slawek@cs.lth.se>
-etc/TUTORIAL.pt_BR       Marcelo Toledo
+etc/TUTORIAL.nl                 
+etc/TUTORIAL.pl          
+etc/TUTORIAL.pt_BR       
 etc/TUTORIAL.ro
-etc/TUTORIAL.ru          Alex Ott <alexott@gmail.com>
-etc/TUTORIAL.sk          Pavel Janík <Pavel@Janik.cz>
-etc/TUTORIAL.sl          Primoz PETERLIN <primoz.peterlin@biofiz.mf.uni-lj.si>
-etc/TUTORIAL.sv          Mats Lidell <matsl@contactor.se>
-etc/TUTORIAL.th          Virach Sornlertlamvanich <virach@tcllab.org>
+etc/TUTORIAL.ru          
+etc/TUTORIAL.sk          
+etc/TUTORIAL.sl          
+etc/TUTORIAL.sv          
+etc/TUTORIAL.th          
 etc/TUTORIAL.zh
 
 \f
index 67b0c161f5beae3d48845bf0c99ff9b4991a6b01..76c50243b3dc4bc9cfc91bbaf473b76f057ee0ba 100644 (file)
@@ -24,6 +24,8 @@
 
 ;; add-release-logs    Add ``Version X released'' change log entries.
 ;; set-version         Change Emacs version number in source tree.
+;; set-copyright        Change emacs short copyright string (eg as
+;;                      printed by --version) in source tree.
 
 ;;; Code:
 
@@ -158,5 +160,52 @@ Root must be the root of an Emacs source tree."
        (rx (and (submatch (1+ (in "a-z"))) (0+ space) ?\, (0+ space)
                "/* development, alpha, beta, or final (release) */"))))))
 
+;; Note this makes some assumptions about form of short copyright.
+(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."
+  (interactive (list
+                (read-directory-name "Emacs root directory: " nil nil t)
+                (read-string
+                 "Short copyright string: "
+                 (format "Copyright (C) %s Free Software Foundation, Inc."
+                         (format-time-string "%Y")))))
+  (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 "lisp/version.el" copyright
+                      (rx (and "emacs-copyright" (0+ space)
+                               ?\" (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 ?\")))) ?\")))
+  (set-version-in-file root "lib-src/rcs2log" copyright
+                      (rx (and "Copyright" (0+ space) ?= (0+ space)
+                               ?\' (submatch (1+ nonl)))))
+  (set-version-in-file
+   root "mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings"
+   copyright (rx (and "CFBundleGetInfoString" (0+ space) ?= (0+ space) ?\"
+                      (1+ anything)
+                      (submatch "Copyright" (1+ (not (in ?\")))))))
+  ;; This one is a nuisance, as it needs to be split over two lines.
+  (string-match "\\(.*[0-9]\\{4\\} *\\)\\(.*\\)" copyright)
+  (let ((csign "\\0xa9")
+        (cyear (match-string 1 copyright))  ; "Copyright (C) 2007 "
+        (owner (match-string 2 copyright))) ; "Free Software Foundation, Inc."
+    (set-version-in-file root "mac/src/Emacs.r"
+                         (regexp-quote
+                          (replace-regexp-in-string "(C)"
+                                                    (regexp-quote csign) cyear))
+                         (rx (and
+                              (submatch "Copyright" (0+ space) (eval csign)
+                                        (0+ space) (= 4 num)
+                                        (0+ (not (in ?\")))) ?\")))
+    (set-version-in-file root "mac/src/Emacs.r" owner
+                         (rx (and ?\"
+                              (submatch (1+ (not (in ?\"))))
+                              ?\" (0+ space)
+                              "/* Long version number */")))))
+
+(provide 'admin)
+
 ;;; arch-tag: 4ea83636-2293-408b-884e-ad64f22a3bf5
 ;; admin.el ends here.
index e56c26571d91b536dd1a7980b7d7c3194b975e6d..9a202d62f85093a61cbe632bb87e23d54fee742c 100644 (file)
@@ -10,7 +10,7 @@ For each step, check for possible errors.
     make sure that the later tagged version will bootstrap, should it be
     necessary to check it out.
 
-3.  Regenerate Emacs' AUTHORS file (M-x load-file RET
+3.  Regenerate Emacs' etc/AUTHORS file (M-x load-file RET
     lisp/emacs-lisp/authors.el RET, then M-x authors RET, then save
     the *Authors* buffer).  This may require fixing syntactically
     incorrect ChangeLog entries beforehand.
@@ -21,7 +21,7 @@ For each step, check for possible errors.
 
 5.   rm configure; make bootstrap
 
-6.  Commit configure, README, AUTHORS, lisp/finder-inf.el,
+6.  Commit configure, README, etc/AUTHORS, lisp/finder-inf.el,
     lisp/version.el, man/emacs.texi, lispref/elisp.texi,
     mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings,
     mac/src/Emacs.r, nt/emacs.rc.  Copy lisp/loaddefs.el to
@@ -76,7 +76,22 @@ For each step, check for possible errors.
 14. For a pretest, let Richard Stallman <rms@gnu.org> know about the new pretest and
     tell him to announce it using the announcement you prepared.  Remind
     him to set a Reply-to header to <emacs-pretest-bug@gnu.org>.
-    For a release, Richard should prepare the announcement himself,
+
+15. Shortly before the release, cut the branch with the following commands:
+
+    cvs rtag EMACS_`NUMBER'_BASE
+    cvs rtag -b EMACS_`NUMBER'_RC -r EMACS_`NUMBER'_BASE
+
+where `NUMBER' is the major version number of the release.  This makes it
+easier to  see what changes have been applied to the branch with:
+
+    cvs diff -r EMACS_`NUMBER'_BASE -r EMACS_`NUMBER'_RC
+
+or merge changes back to the trunk with "cvs update -j", if necessary.
+
+After doing this, increase the version number on the trunk as per step 4.
+
+16. For a release, Richard should prepare the announcement himself,
     possibly starting from a previous announcment.
 
 # arch-tag: c23c771f-ca26-4584-8a04-50ecf0989390
diff --git a/admin/notes/changelogs b/admin/notes/changelogs
new file mode 100644 (file)
index 0000000..03fb353
--- /dev/null
@@ -0,0 +1,5 @@
+http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00793.html
+  There is no need to make change log entries for files such as NEWS,
+  MAINTAINERS, and FOR-RELEASE.
+
+The same applies for regenerating files like configure.
index 30abdd09a914516e9abc57638f4660942ae8a8b7..4ab01feeae3d9e917f67ae2e08cc1ea39e6595a2 100644 (file)
@@ -131,7 +131,7 @@ mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
 mac/src/Emacs.r           # resource 'vers'
 src/emacs.c
   - remember to change the latest copyright year in the --version output.
-  [Post-release, will automate this like set-version does for version.]
+   `set-copyright' in admin.el will do all the above.
 
 <top-level>/install-sh
 lispintro/install-sh
@@ -598,6 +598,70 @@ Done: TUTORIAL.eo
 None known.
 
 
+** NOTES ON RELICENSING TO GPL3
+
+The EMACS_22_BASE branch was changed to GPLv3 (or later) 2007/07/25.
+
+Some notes:
+(see http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg01431.html)
+
+1. There are some files in Emacs CVS which are not part of Emacs (eg
+those included from Gnulib). These are all copyright FSF and (at time
+of writing) GPL >= 2. rms says may as well leave the licenses of these
+alone (may import them from Gnulib again). These are:
+
+    Gnulib:
+    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
+    lispintro/missing
+    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
+definitely relicense that.").
+
+2. The files that are copyright FSF and AIST, or AIST alone, should be
+and were updated, ditto the oldXMenu files with FSF copyright, and
+msdos/is_exec.c and sigaction.c.
+
+3. lwlib/
+
+Files originally in Lucid Widget Library were left alone (excludes
+ChangeLog, etc), ie remain under GPL v1 or later, or v2 or later.
+(rms: "We may as well leave this alone, since we are never going to
+change it much.")
+
+4. There are some files where the FSF holds no copyright. These were
+left alone:
+
+   leim/MISC-DIC/CTLau-b5.html  >= v2
+   leim/MISC-DIC/CTLau.html     >= v2
+     (above included in lisp/international/titdic-cnv.el)
+   leim/MISC-DIC/pinyin.map     >= v1
+   leim/MISC-DIC/ziranma.cin    >= v1
+   leim/SKK-DIC/SKK-JISYO.L     >= v2
+   leim/SKK-DIC/README          >= v2
+   leim/ja-dic/ja-dic.el        >= v2
+
+5. At time of writing, some non-Emacs icons included from Gnome remain
+under GPLv2 (no "or later"). See:
+
+   etc/images/gnus/README
+   etc/images/mail/README
+   etc/images/README
+   nt/icons/README
+
 \f
 This file is part of GNU Emacs.
 
diff --git a/admin/notes/lel-TODO b/admin/notes/lel-TODO
new file mode 100644 (file)
index 0000000..b46fdd3
--- /dev/null
@@ -0,0 +1,107 @@
+Some lisp/emacs-lisp/ Features and Where They Are Documented
+Copyright (C) 2007 Free Software Foundation, Inc.
+
+
+* Status Key
+  -      -- as yet unknown
+  n/a    -- not applicable (internal, uninteresting, etc)
+  todo   -- not documented but should be
+  "NODE" -- documented in or under info node NODE
+
+
+* Features
+  advice                  -
+  advice-preload          n/a
+  assoc                   -
+  authors                 -
+  autoload                -
+  avl-tree                -
+  backquote               n/a
+  benchmark               -
+  bindat                  "(elisp) Byte Packing"
+  byte-compile            -
+  byte-opt                -
+  bytecomp                -
+  checkdoc                -
+  cl                      "(cl)"
+  cl-19                   n/a
+  cl-compat               n/a
+  cl-specs                n/a
+  copyright               -
+  crm                     -
+  cust-print              -
+  debug                   -
+  derived                 -
+  disass                  -
+  easy-mmode              -
+  easymenu                -
+  edebug                  -
+  eldoc                   -
+  elint                   -
+  elp                     -
+  ewoc                    "(elisp) Separated Rendering"
+  find-func               -
+  find-gc                 -
+  generic                 -
+  gulp                    n/a
+  helper                  -
+  levents                 -
+  lisp-float-type         -
+  lisp-mnt                -
+  lisp-mode               -
+  lmenu                   -
+  lselect                 -
+  lucid                   -
+  macroexp                -
+  pp                      -
+  re-builder              -
+  regexp-opt              -
+  regi                    -
+  ring                    "(elisp) Rings"
+  rx                      -
+  shadow                  -
+  sregex                  -
+  syntax                  -
+  testcover               -
+  timer                   -
+  tq                      "(elisp) Transaction Queues"
+  trace                   -
+  unsafep                 -
+  warnings                -
+
+
+* Above list created using default directory lisp/emacs-lisp/ with
+  (shell-command
+    "sed '/^(provide '\\''/!d;s//  /;s/).*//' *.el | sort | uniq")
+
+
+* How to use this file to improve Emacs
+  (loop
+   (let* ((feature (choose-one Features))
+          (status (feature-status feature)))
+     (if (or (eq '- status) (not (verify status)))
+         (update feature (current-docs feature))
+       (case status
+         (todo (let (doc patch feedback)
+                 (while (not (grok feature))
+                   (or (play-with feature)
+                       (grep feature Internet)
+                       (grep feature (wisdom-maybe "emacs-devel"))))
+                 (setq doc (write-documentation feature)
+                       patch (diff (current-docs) doc))
+                 (while (not (and (correct doc)
+                                  (well-placed doc)
+                                  (well-formed patch)))
+                   (setq doc (revise doc)
+                         patch (diff (current-docs) doc))
+                         feedback (wisdom-maybe "emacs-devel" patch))
+                 (when (install patch)
+                   (when (update feature (current-docs feature))
+                     (job-well-done user-login-name)))))
+         (n/a (job-well-done user-login-name))))))
+
+
+* Etc
+  Local variables:
+  mode: outline
+  End:
diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty
new file mode 100644 (file)
index 0000000..5895f59
--- /dev/null
@@ -0,0 +1,1362 @@
+-*- coding: utf-8; mode: text; -*-
+
+From README.multi-tty in the multi-tty branch.
+Some of this information may be out of date.
+
+
+THANKS
+------
+
+The following is a (sadly incomplete) list of people who have
+contributed to the project by testing, submitting patches, bug
+reports, and suggestions.  Thanks!
+
+Bernard Adrian <bernadrian@free.fr>
+ARISAWA Akihiro <ari@mbf.ocn.ne.jp>
+Vincent Bernat <bernat@luffy.cx>
+Han Boetes <han@mijncomputer.nl>
+Francisco Borges <borges@let.rug.nl>
+Damien Cassou <damien.cassou@laposte.net>
+Robert J. Chassell <bob@rattlesnake.com>
+Romain Francoise <romain@orebokech.com>
+Ami Fischman <ami@fischman.org>
+Noah Friedman <friedman@splode.com>
+Friedrich Delgado Friedrichs <friedel@nomaden.org>
+Samium Gromoff <_deepfire@mail.ru>
+Mikhail Gusarov <dottedmag@dottedmag.net>
+Eric Hanchrow <offby1@blarg.net>
+IRIE Tetsuya <irie@t.email.ne.jp>
+Yoshiaki Kasahara <kasahara@nc.kyushu-u.ac.jp>
+Bas Kok <nekkobassu@yahoo.com>
+Jurej Kubelka <Juraj.Kubelka@email.cz>
+David Lichteblau <david@lichteblau.com>
+Richard Lewis <rtf@jabble.com>
+mace <mace@kirjakaapeli.lib.hel.fi>
+Suresh Madhu <madhu@cs.unm.edu>
+Xavier Mallard <zedek@gnu-rox.org>
+Istvan Marko <mi-mtty@kismala.com>
+Ted Morse <morse@ciholas.com>
+Gergely Nagy <algernon@debian.org>
+Dan Nicolaescu <dann@ics.uci.edu>
+Kalle Olavi Niemitalo <kon@iki.fi>
+Mark Plaksin <happy@mcplaksin.org>
+Frank Ruell <stoerte@dreamwarrior.net>
+Tom Schutzer-Weissmann <trmsw@yahoo.co.uk>
+Joakim Verona <joakim@verona.se>
+Dan Waber <dwaber@logolalia.com>
+and many others.
+
+Richard Stallman was kind enough to review an earlier version of my
+patches.
+
+
+STATUS
+------
+
+It still needs to be ported to Windows/Mac/DOS.  Both multiple
+tty device support and simultaneous X and tty frame support works
+fine.  Emacsclient has been extended to support opening new tty and X
+frames.  It has been changed to open new Emacs frames by default.
+
+Tested on GNU/Linux, Solaris 8, FreeBSD and OpenBSD.
+
+Known problems:
+
+        * GTK support.  If you compile your Emacs with the GTK
+          toolkit, some functionality of multi-tty may be lost.  In
+          particular, you may get crashes while working on multiple X
+          displays at once.  Previous releases of GTK had limitations
+          and bugs that prevented full-blown multi-display support in
+          Emacs.  (GTK crashed when Emacs tries to disconnect from an
+          X server.)  Things are much improved in the current GTK
+          version, but if you do experience crashes in libgtk, try
+          compiling Emacs with the Lucid toolkit instead.
+
+        * The single-kboard mode.
+
+         If your multi-tty Emacs session seems to be frozen, you
+         probably have a recursive editing session or a pending
+         minibuffer prompt (which is a kind of recursive editing) on
+         another display.  To unfreeze your session, switch to that
+         display and complete the recursive edit, for example by
+         pressing C-] (`abort-recursive-edit').
+
+         I am sorry to say that currently there is no way to break
+         out of this "single-kboard mode" from a frozen display.  If
+         you are unable to switch to the display that locks the
+         others (for example because it is on a remote computer),
+         then you can use emacsclient to break out of all recursive
+         editing sessions:
+
+               emacsclient -e '(top-level)'
+
+         Note that this (perhaps) unintuitive behaviour is by design.
+         Single-kboard mode is required because of an intrinsic Emacs
+         limitation that is very hard to eliminate.  (This limitation
+         is related to the single-threaded nature of Emacs.)
+
+         I plan to implement better user notification and support for
+         breaking out of single-kboard mode from locked displays.
+
+       * Mac and DOS support is broken, doesn't even
+         compile.  Multiple display support will probably not provide
+         new Emacs features on these systems, but the multi-tty
+         branch changed a few low-level interfaces, and the
+         system-dependent source files need to be adapted
+         accordingly.  The changes are mostly trivial, so almost
+         anyone can help, if only by compiling the branch and
+         reporting the compiler errors.
+
+
+TESTING
+-------
+
+To test the multi-tty feature, start up the Emacs server with the
+following commands:
+
+       emacs
+       M-x server-start
+
+and then (from a shell prompt on another terminal) start emacsclient
+with
+       emacsclient -t /optional/file/names...   (for a tty frame)
+       emacsclient /optional/file/names...      (for an X frame)
+
+(Make sure both emacs and emacsclient are multi-tty versions.)
+You'll hopefully have two fully working, independent frames on
+separate terminals. The new frame is closed automatically when you
+finish editing the specified files (C-x #), but delete-frame (C-x 5 0)
+also works.  Of course, you can create frames on more than two tty
+devices.
+
+Creating new frames on the same tty with C-x 5 2 (make-frame-command)
+works, and behaves the same way as in previous Emacs versions.  If you
+exit emacs, all terminals should be restored to their previous states.
+
+TIPS & TRICKS
+-------------
+
+I think the best way to use the new Emacs is to have it running inside
+a disconnected GNU screen session, and always use emacsclient for
+normal work.  One advantage of this is that not a single keystroke of
+your work will be lost if the display device that you are using
+crashes, or the network connection times out, or whatever.  (I had an
+extremely unstable X server for some time while I was developing these
+patches, and running Emacs this way has saved me a number of M-x
+recover-session invocations.)
+
+I use the following two bash scripts to handle my Emacs sessions:
+
+-------------------------------------------------------connect-emacs--
+#!/bin/bash
+# Usage: connect-emacs <name> <args>...
+#
+# Connects to the Emacs instance called NAME.  Starts up the instance
+# if it is not already running.  The rest of the arguments are passed
+# to emacsclient.
+
+name="$1"
+shift
+    
+if [ -z "$name" ]; then
+    echo "Usage: connect_emacs <name> <args>..." >&2
+    exit 1
+fi
+preload-emacs "$name" wait
+/usr/bin/emacsclient.emacs-multi-tty -s "$name" "$@"
+----------------------------------------------------------------------
+
+-------------------------------------------------------preload-emacs--
+#!/bin/bash
+# Usage: preload-emacs <name> [<waitp>]
+#
+# Preloads the Emacs instance called NAME in a detached screen
+# session.  Does nothing if the instance is already running.  If WAITP
+# is non-empty, the function waits until the server starts up and
+# creates its socket; otherwise it returns immediately.
+
+name="$1"
+waitp="$2"
+screendir="/var/run/screen/S-$USER"
+serverdir="/tmp/emacs$UID"
+emacs=/usr/bin/emacs-multi-tty # Or wherever you installed your multi-tty Emacs
+
+if [ -z "$name" ]; then 
+    echo "Usage: preload_emacs <name> [<waitp>]" >&2
+    exit 1
+fi
+
+if [ ! -e "$screendir"/*."$name" ]; then
+    if [ -e "$serverdir/$name" ]; then
+       # Delete leftover socket (for the wait option)
+       rm "$serverdir/$name"
+    fi
+    screen -dmS "$name" "$emacs" -nw --eval "(setq server-name \"$name\")" -f server-start
+fi
+if [ ! -z "$waitp" ]; then
+    while [ ! -e "$serverdir/$name" ]; do sleep 0.1; done
+fi
+----------------------------------------------------------------------
+
+I have the following in my profile to have two instances automatically
+preloaded for editing and email:
+
+       preload-emacs editor
+       preload-emacs gnus
+
+It is useful to set up short aliases for connect-emacs.  I use the
+following:
+
+       alias edit="connect-emacs editor"
+       alias e=edit
+       alias et="connect-emacs editor -t"
+       alias gnus="connect-emacs gnus"
+
+
+THINGS TO DO
+------------
+
+** See if `tty-defined-color-alist' needs to be terminal-local.
+   Update: Dan says it should be, so convert it.
+
+** Mikhail Gusarov suggest to add a hook akin to
+   `after-make-frame-functions' that is called whenever Emacs connects
+   to a new terminal.  Good idea!
+
+** emacsclient -t on the console does not work after su.  You have to
+   use non-root accounts or start as root to see this.
+
+       Login: root
+       Password:
+       # su lorentey
+       $ emacsclient -t
+       *ERROR*: Could not open file: /dev/tty1
+
+   The tty can be opened as /dev/tty by emacsclient, but not by Emacs.
+   This seems to be a serious problem.  Currently my only idea is to
+   bring back the ugly pty proxy hack from the initial versions of
+   multi-tty.  Suggestions would be appreciated.
+
+   Update: we could change emacsclient to pass its open file
+   descriptor to the Emacs process.  Unfortunately, this requires a
+   new Lisp-level Emacs API, and as file descriptors are not otherwise
+   exported to Lisp, this approach seems at least as ugly as the pty
+   proxy idea.
+
+** lisp/vc.el depends on the terminal type during load time.
+   `vc-annotate-color-map' is one example that needs to be fixed.
+
+** Understand how `quit_throw_to_read_char' works, and fix any bugs
+   that come to light.
+
+** See if getcjmp can be eliminated somehow.  Why does Emacs allow
+   asynchronous input processing while it's reading input anyway?
+
+** `delete-frame' events are handled by `special-event-map'
+   immediately when read by `read_char'.  This is fine but it prevents
+   higher-level keymaps from binding that event to get notified of the
+   deleted frame.
+
+   Sometimes it would be useful for Lisp code to be notified of frame
+   deletions after they have happened, usually because they want to
+   clean up after the deleted frame.  Not all frame-local states can
+   be stored as a frame parameter.  For example,
+   `display-splash-screen' uses `recursive-edit' with a special keymap
+   override to create its buffer---and it leads to all kinds of
+   nastiness if Emacs stays in this recursive edit mode after the
+   frame containing the splash screen is deleted.  Basically, the
+   splash-screen implementation wants to throw out of the recursive
+   edit when the frame is deleted; however, it is not legal to throw
+   from `delete-frame-functions' because `delete-frame' must not fail.
+   (Introducing `delete-frame-after-functions' would not help either
+   because `delete-frame' may not fail at that time either.)
+
+   Currently `fancy-splash-screens' installs a
+   `delete-frame-functions' hook that sets up a timer to exit the
+   recursive edit.  This is an adequate solution, but it would perhaps
+   be better to have something like a `frame-deleted' event that could
+   be bound in the normal way.
+
+** Trouble: `setenv' doesn't actually set environment variables in the
+   Emacs process.  This defeats the purpose of the elaborate
+   `server-with-environment' magic around the `tgetent' call in
+   `init_tty'.  D'oh.
+
+** (Possibly) create hooks in struct device for creating frames on a
+   specific terminal, and eliminate the hackish terminal-related frame
+   parameters (display, tty, tty-type).
+
+       make_terminal_frame
+               create_tty_output
+
+** Decide whether to keep the C implementation of terminal parameters,
+   or revert to the previous, purely Lisp code.  It turned out that
+   local environments do not need terminal parameters after all.
+
+** Move Fsend_string_to_terminal to term.c, and declare get_named_tty
+   as static, removing it from dispextern.h.
+   Move fatal to emacs.c and declare it somewhere.
+
+** Search for `suspend-emacs' references and replace them with
+   `suspend-frame', if necessary.  Ditto for `save-buffers-kill-emacs'
+   vs. `save-buffers-kill-display'.
+
+** Emacs crashes when a tty frame is resized so that there is no space
+   for all its windows.  (Tom Schutzer-Weissmann)
+
+** Report GTK multi-display problems to GTK maintainers.  For extra
+   credit, fix them.
+
+   Currently you can not connect to new X displays when you compile
+   Emacs with GTK support.  If you want to play around with GTK
+   multidisplay (and don't mind core dumps), you can edit src/config.h
+   and define HAVE_GTK_MULTIDISPLAY there by hand.
+   
+       http://bugzilla.gnome.org/show_bug.cgi?id=85715
+
+   Update: Han reports that GTK+ version 2.8.9 almost gets display
+   disconnects right.  GTK will probably be fully fixed by the time
+   multi-tty gets into the trunk.
+
+   Update: I am still having problems with GTK+ 2.8.10.  I have the
+   impression that the various multidisplay fixes will only get
+   released in GTK+ 2.10.
+
+** Audit `face-valid-attribute-values' usage in customize and
+   elsewhere.  Its return value depends on the current window system.
+   Replace static initializers using it with runtime functions.  For
+   example, custom's buttons are broken on non-initial device types.
+
+** Possibly turn off the double C-g feature when there is an X frame.
+   C.f. (emacs)Emergency Escape.
+
+** frames-on-display-list should also accept frames.
+
+** Consider the `tty-type' frame parameter and the `display-tty-type'
+   function.  They serve the exact same purpose.  I think it may be
+   a good idea to eliminate one of them, preferably `tty-type'.
+
+** The handling of lisp/term/*.el, and frame creation in general, is a
+   big, big mess.  How come the terminal-specific file is loaded by
+   tty-create-frame-with-faces?  I don't think it is necessary to load
+   these files for each frame; once per terminal should be enough.
+   Update: lisp/term/*.el is not loaded repeatedly anymore, but
+   faces.el still needs to be cleaned up.
+
+** Fix frame-set-background-mode in this branch.  It was recently
+   changed in CVS, and frame.el in multi-tty has not yet been adapted
+   for the changes.  (It needs to look at
+   default-frame-background-mode.)  (Update: maybe it is fixed now;
+   needs testing.) (Note that the byte compiler has this to say about
+   term/rxvt.el:)
+
+       term/rxvt.el:309:17:Warning: assignment to free variable
+           `default-frame-background-mode'
+
+** I think `(set-)terminal-local-value' and the terminal parameter
+   mechanism should be integrated into a single framework.
+
+   (Update: `(set-)terminal-local-value' is now eliminated, but the
+   terminal-local variables should still be accessible as terminal
+   parameters.  This also applies to `display-name' and similar
+   functions.)
+
+** Add the following hooks: after-delete-frame-hook (for server.el,
+   instead of delete-frame-functions),
+   after-delete-terminal-functions, after-create-terminal-functions.
+
+** BULK RENAME: The `display-' prefix of new Lisp-level functions
+   conflicts with stuff like `display-time-mode'.  Use `device-'
+   or `terminal-' instead.  I think I prefer `terminal-'.
+
+   It turns out that most of the offending Lisp functions were defined
+   in the trunk.  Therefore, compatibility aliases should be defined
+   for the following names:
+
+    display-color-cells                        terminal-color-cells
+    display-color-p                    terminal-color-p
+    display-graphic-p                  terminal-graphic-p
+    display-grayscale-p                        terminal-grayscale-p
+    display-images-p                   terminal-images-p
+    display-mm-height                  terminal-mm-height
+    display-mm-width                   terminal-mm-width
+    display-mouse-p                    terminal-mouse-p
+    display-multi-font-p               terminal-multi-font-p
+    display-multi-frame-p              terminal-multi-frame-p
+    display-pixel-height               terminal-pixel-height
+    display-pixel-width                        terminal-pixel-width
+    display-pixels-per-inch            terminal-pixels-per-inch
+    display-planes                     terminal-planes
+    display-popup-menus-p              terminal-popup-menus-p
+    display-save-under                 terminal-save-under
+    display-screens                    terminal-screens
+    display-supports-face-attributes-p terminal-supports-face-attributes-p
+    display-visual-class               terminal-visual-class
+    framep-on-display                  framep-on-terminal
+    frames-on-display-list             frames-on-terminal-list
+
+   The following functions were introduced in the multi-tty branch, and
+   were renamed without aliases:
+
+    delete-display                     delete-terminal
+    display-controlling-tty-p           controlling-tty-p
+    display-list                        terminal-list
+    display-live-p                      terminal-live-p
+    display-name                        terminal-name
+    display-tty-type                    tty-type
+    frame-display                       frame-terminal
+    selected-display                   selected-terminal
+
+** The single-keyboard mode of MULTI_KBOARD is extremely confusing
+   sometimes; Emacs does not respond to stimuli from other keyboards.
+   At least a beep or a message would be important, if the single-mode
+   is still required to prevent interference.  (Reported by Dan
+   Nicolaescu.)  
+
+   Update: selecting a region with the mouse enables single_kboard
+   under X.  This is very confusing.
+
+   Update: After discussions with Richard Stallman, this will be
+   resolved by having locked displays warn the user to wait, and
+   introducing a complex protocol to remotely bail out of
+   single-kboard mode by pressing C-g.
+
+   Update: Warning the user is not trivial to implement, as Emacs has
+   only one echo area, shared by all frames.  Ideally the warning
+   should not be displayed on the display that is locking the others.
+   Perhaps the high probability of user confusion caused by
+   single_kboard mode deserves a special case in the display code.
+   Alternatively, it might be good enough to signal single_kboard mode
+   by changing the modelines or some other frame-local display element
+   on the locked out displays.
+
+   Update: In fact struct kboard does have an echo_string slot.
+
+** The session management module is prone to crashes when the X
+   connection is closed and then later I try to connect to a new X
+   session:
+
+       #0  0xb7ebc806 in SmcGetIceConnection () from /usr/X11R6/lib/libSM.so.6
+       #1  0x080e6641 in x_session_check_input (bufp=0xbf86c9c0) at xsmfns.c:144
+       #2  0x080d3bbc in XTread_socket (device=0xa722ff8, expected=1, hold_quit=0xbf86ca90) at xterm.c:7037
+       #3  0x080fa404 in read_avail_input (expected=1) at keyboard.c:6696
+       #4  0x080fa4ca in handle_async_input () at keyboard.c:6900
+       #5  0x080d51fa in x_term_init (display_name=162628899, xrm_option=0x0, resource_name=0x857068c "emacs") at xterm.c:10622
+       #6  0x080d920e in x_display_info_for_name (name=162628899) at xfns.c:3975
+       #7  0x080d92f9 in check_x_display_info (object=1) at xfns.c:274
+       #8  0x080d97b8 in Fx_create_frame (parms=151221485) at xfns.c:3016
+       #9  0x0815bf72 in Ffuncall (nargs=2, args=0xbf86ceec) at eval.c:2851
+
+   I installed a workaround to prevent this.  The X session manager is
+   only contacted when the very first display in the Emacs session is
+   an X display.  Also, x_delete_display() on this display aborts
+   session management, and XTread_socket only calls
+   x_session_check_input when it is called for the display that the
+   session was opened on.  While this does not really fix the bug, it
+   makes it much less frequent, because session manager support will
+   not normally be enabled when Emacs can survive the shutdown of the
+   X server.
+
+   See if xsmfns.c should be updated.
+
+** Hunt down display-related functions in frame.el and extend them all
+   to accept display ids.
+
+** rif->flush_display_optional (NULL) calls should be replaced by a
+   new global function.
+
+** The set-locale-environment hack (adding the DISPLAY option) should
+   be replaced with a clean design.
+
+** standard-display-table should be display-local.
+   standard-display-european should be display-local.
+
+** With iswitchb-default-method set to 'always-frame, only frames on
+   the current display should be considered.  This might involve
+   extending `get-buffer-window'.
+
+** Have a look at Vlocale_coding_system.  Seems like it would be a
+   tedious job to localize it, although most references use it for
+   interfacing with libc and are therefore OK with the global
+   definition.
+
+   Exceptions found so far: x-select-text and
+   x-cut-buffer-or-selection-value.
+
+** Have a look at fatal_error_hook.
+
+** Have a look at set_frame_matrix_frame.
+
+** Check if we got term-setup-hook right.
+
+** I think tip_frame should be display-local.
+
+** Check display reference count handling in x_create_tip_frame.
+
+** make-frame does not correctly handle extra parameters in its
+   argument:
+
+       (frame-parameter (make-frame (list (cons 'foobar 42))) 'foobar)
+               => nil
+
+   (This is likely an error in the CVS trunk.)
+
+** Dan Nicolaescu suggests that -nw should be added as an alias for -t
+   in emacsclient.  Good idea.  (Alas, implementing this is not
+   trivial, getopt_long does not seem to support two-letter ``short''
+   options.  Patches are welcome.)
+
+** Mark Plaksin suggests that emacsclient should accept the same
+   X-related command-line arguments as Emacs.  Most of the X-related
+   argument-handling is done in Lisp, so this should be quite easy to
+   implement.  (For example, Samium Gromoff wants emacsclient to
+   support --geometry; implementing this would add that support.)
+
+** Gergely Nagy suggests that C-x # should only kill the current
+   frame, not any other emacsclient frame that may have the same file
+   opened for editing.  I think I agree with him.
+
+** Very strange bug: visible-bell does not work on secondary
+   terminals in xterm and konsole.  The screen does flicker a bit,
+   but it's so quick it isn't noticable.
+
+   (Update: This is probably some problem with padding or whatnot on
+   the secondary terminals.)
+
+** Move baud_rate to struct display.
+
+** Implement support for starting an interactive Emacs session without
+   an initial frame.  (The user would connect to it and open frames
+   later, with emacsclient.)
+
+** Fix Mac support (I can't do this entirely myself).  Note that the
+   current state of Mac-specific source files in the multi-tty tree
+   are not useful; before starting work on Mac support, revert to
+   pristine, pre-multi-tty versions.
+
+** Fix DOS support (I can't do this entirely myself).  Note that the
+   current state of DOS-specific source files in the multi-tty tree
+   are not useful; before starting work on DOS support, revert to
+   pristine, pre-multi-tty versions.
+
+** Fix Windows support. Currently bootstraping works on w32, but Emacs
+   crashes on startup and none of the multi-tty features are
+   implemented. Many XXX comments mark things that probably need
+   updating, ChangeLogs will help in spotting changes to X specific
+   files that may need porting.
+
+** Do a grep on XXX and ?? for more issues.
+
+** flow-ctrl.el must be updated.
+
+** Fix stuff_char for multi-tty.  Doesn't seem to be of high priority.
+
+DIARY OF CHANGES
+----------------
+
+(ex-TODO items with explanations.)
+
+-- Introduce a new struct for terminal devices.
+
+   (Done, see struct tty_output.  The list of members is not yet
+   complete.)
+
+-- Change the bootstrap procedure to initialize tty_list.
+
+   (Done, but needs review.)
+
+-- Change make-terminal-frame to support specifying another tty.
+
+   (Done, new frame parameters: `tty' and `tty-type'.)
+
+-- Implement support for reading from multiple terminals.
+
+   (Done, read_avail_input tries to read from each terminal, until one
+   succeeds.  MULTI_KBOARD is not used.  Secondary terminals don't send
+   SIGIO!)
+
+   (Update: They do, now.)
+
+   (Update2: After enabling X, they don't.)
+
+-- other-frame should cycle through the frames on the `current'
+   terminal only.
+
+   (Done, by trivially modifiying next_frame and prev_frame.)
+
+-- Support different terminal sizes.
+
+   (Done, no problem.)
+
+-- Make sure terminal resizes are handled gracefully.  (Could be
+   problematic.)
+
+   (Done.  We don't get automatic SIGWINCH for additional ttys,
+   though.)
+
+-- Extend emacsclient to automatically open a new tty when it connects
+   to Emacs.
+
+   (Done.  It's an ugly hack, needs more work.)
+
+-- Redisplay must refresh the topmost frame on *all* terminals, not
+   just the initial terminal.
+
+   (Done, but introduced an ugly redisplay problems.  Ugh.)
+
+-- Fix redisplay problems.
+
+   (Done; it turned out that the entire Wcm structure must be moved
+   inside tty_output.  Why didn't I catch this earlier?)
+
+-- Provide a way for emacsclient to tell Emacs that the tty has been
+   resized.
+
+   (Done, simply forward the SIGWINCH signal.)
+
+-- Each keypress should automatically select the frame corresponding
+   to the terminal that it was coming from.  This means that Emacs
+   must know from which terminal the last keyboard event came from.
+
+   (Done, it was quite simple, the input event system already
+   supported multiple frames.)
+
+-- Fix SIGIO issue with secondary terminals.
+
+   (Done, emacsclient signals Emacs after writing to the proxy pseudo
+   terminal.  Note that this means that multi-tty does not work with
+   raw ttys!)
+
+   (Update: This is bullshit.  There is a read_input_waiting function,
+   extend that somehow.)
+
+   (Update of update: The first update was not right either, extending
+   read_input_waiting was not necessary.  Secondary ttys do seem to
+   send signals on input.)
+
+   (Update^3: Not any more.)
+
+-- Make make-terminal-frame look up the `tty' and `tty-type' frame
+   parameters from the currently selected terminal before the global
+   default.
+
+   (Done.)
+
+-- Put all cached terminal escape sequences into struct tty_output.
+   Currently, they are still stored in global variables, so we don't
+   really support multiple terminal types.
+
+   (Done.  It was not fun.)
+
+-- Implement sane error handling after initialization.  (Currently
+   emacs exits if you specify a bad terminal type.)  The helpful error
+   messages must still be provided when Emacs starts.
+
+   (Done.)
+
+-- Implement terminal deletion, i.e., deleting local frames, closing
+   the tty device and restoring its previous state without exiting
+   Emacs.
+
+   (Done, but at the moment only called when an error happens during
+   initialization.  There is a memory corruption error around this
+   somewhere.)  (Update: now it is fully enabled.)
+
+-- Implement automatic deletion of terminals when the last frame on
+   that terminal is closed.
+
+   (Done.)
+
+-- Restore tty screen after closing the terminal.
+
+   (Done, we do the same as Emacs 21.2 for all terminals.)
+
+-- 'TERM=dumb src/emacs' does not restore the terminal state.
+
+   (Done.)
+
+-- C-g should work on secondary terminals.
+
+   (Done, but the binding is not configurable.)
+
+-- Deal with SIGHUP in Emacs and in emacsclient.  (After this, the
+   server-frames may be removed from server.el.)
+
+   (Done, nothing to do.  It seems that Emacs does not receive SIGHUP
+   from secondary ttys, which is actually a good thing.)  (Update: I
+   think it would be a bad idea to remove server-frames.)
+
+-- Change emacsclient/server.el to support the -t argument better,
+   i.e. automatically close the socket when the frame is closed.
+
+   (Seems to be working OK.)
+
+-- Fix mysterious memory corruption error with tty deletion.  To
+   trigger it, try the following shell command:
+
+       while true; do TERM=no-such-terminal-definition emacsclient -h; done
+
+   Emacs usually dumps core after a few dozen iterations.  (The bug
+   seems to be related to the xfreeing or bzeroing of
+   tty_output.Wcm.  Maybe there are outside references to struct Wcm?
+   Why were these vars collected into a struct before multi-tty
+   support?)
+
+   (Done.  Whew.  It turned out that the problem had nothing to do
+   with hypothetical external references to Wcm, or any other
+   tty_output component; it was simply that delete_tty closed the
+   filehandles of secondary ttys twice, resulting in fclose doubly
+   freeing memory.  Utterly trivial matter.  I love the C's memory
+   management, it puts hair on your chest.)
+
+-- Support raw secondary terminals.  (Note that SIGIO works only on
+   the controlling terminal.) Hint: extend read_input_waiting for
+   multiple ttys and hopefully this will be fixed.
+
+   (Done, it seems to have been working already for some time.  It
+   seems F_SETOWN does work, after all.  Not sure what made it fail
+   earlier, but it seems to be fixed (there were several changes
+   around request_sigio, maybe one of them did it).
+   read_input_waiting is only used in sys_select, don't change
+   it.)  (Update: After adding X support, it's broken again.)
+   (Update^2: No it isn't.) :-)
+
+-- Find out why does Emacs abort when it wants to close its
+   controlling tty.  Hint: chan_process[] array.  Hey, maybe
+   noninterrupt-IO would work, too?  Update: no, there is no process
+   for stdin/out.
+
+   (Done.  Added add/delete_keyboard_wait_descriptor to
+   term_init/delete_tty.  The hint was right, in a way.)
+
+-- Issue with SIGIO: it needs to be disabled during redisplay.  See if
+   fcntl kernel behaviour could be emulated by emacsclient.
+
+   (Done.  Simply disabled the SIGIO emulation hack in emacsclient.)
+   (Update: it was added back.)  (Update^2: and removed again.)
+
+-- server.el: There are issues with saving files in buffers of closed
+   clients.  Try editing a file with emacsclient -f, and (without
+   saving it) do a delete-frame.  The frame is closed without
+   question, and a surprising confirmation prompt appears in another
+   frame.
+
+   (Done.  delete-frame now asks for confirmation if it still has
+   pending buffers, and modified buffers don't seem to be deleted.)
+
+-- emacsclient.el, server.el: Handle eval or file open errors when
+   doing -t.
+
+   (Done.)
+
+-- Make parts of struct tty_output accessible from Lisp.  The device
+   name and the type is sufficient.
+
+   (Done, see frame-tty-name and frame-tty-type.)
+
+-- Export delete_tty to the Lisp environment, for emacsclient.
+
+   (Done, see delete-tty.)
+
+-- Get rid of the accessor macros in termchar.h, or define macros for
+   all members.
+
+   (Done.)
+
+-- Move device-specific parameters (like costs) commonly used by
+   device backends to a common, device-dependent structure.
+
+   (Done.  See struct display_method in termhooks.h.)
+
+-- Fix X support.
+
+   (Done.  Well, it seems to be working.)
+
+-- Allow simultaneous X and tty frames.  (Handling input could be
+   tricky.  Or maybe not.)
+
+   (Done.  Allowed, that is.  It is currently extremely unstable, to
+   the point of being unusable.  The rif variable causes constant
+   core dumps.  Handling input is indeed tricky.)
+
+-- Rewrite multi-tty input in terms of MULTI_KBOARD.
+
+   (Done.  In fact, there was no need to rewrite anything, I just
+   added a kboard member to tty_display_info, and initialized the
+   frame's kboard from there.)
+
+-- Fix rif issue with X-tty combo sessions.  IMHO the best thing to do
+   is to get rid of that global variable (and use the value value in
+   display_method, which is guaranteed to be correct).
+
+   (Done, did exactly that.  Core dumps during combo sessions became
+   much rarer.  In fact, I have not yet met a single one.)
+
+-- Add multi-tty support to talk.el.
+
+   (Done.)
+
+-- Clean up the source of emacsclient.  It is a mess.
+
+   (Done, eliminated stupid proxy-pty kludge.)
+
+-- Fix faces on tty frames during X-tty combo sessions.  There is an
+   init_frame_faces call in init_sys_modes, see if there is a problem
+   with it.
+
+   (Done, there was a stupid mistake in
+   Ftty_supports_face_attributes_p. Colors are broken, though.)
+
+-- C-x 5 2, C-x 5 o, C-x 5 0 on an emacsclient frame unexpectedly
+   exits emacsclient.  This is a result of trying to be clever with
+   delete-frame-functions.
+
+   (Fixed, added delete-tty-after-functions, and changed server.el to
+   use it.)
+
+-- Something with (maybe) multi-keyboard support broke function keys
+   and arrows on ttys during X+tty combo sessions.  Debug this.
+
+   (I can't reproduce it, maybe the terminal type was wrong.)
+
+-- Fix input from raw ttys (again).
+
+   (Now it seems to work all right.)
+
+-- During an X-tty combo session, a (message "Hello") from a tty frame
+   goes to the X frame.  Fix this.
+
+   (Done.  There was a safeguard against writing to the initial
+   terminal frame during bootstrap which prevented echo_area_display
+   from working correctly on a tty frame during a combo session.)
+
+-- If there are no frames on its controlling terminal, Emacs should
+   exit if the user presses C-c there.
+
+   (Done, as far as possible.  See the SIGTERM comment in
+   interrupt_signal on why this seems to be impossible to solve this
+   in general.)
+
+-- During an X session, Emacs seems to read from stdin.  Also, Emacs
+   fails to start without a controlling tty.
+
+   (Fixed by replacing the troublesome termcap display with a dummy
+   bootstrap display during bootstrap.
+
+-- Do tty output through struct display, like graphical display
+   backends.
+
+   (Done.)
+
+-- Define an output_initial value for output_method for the initial
+   frame that is dumped with Emacs.  Checking for this frame (e.g. in
+   cmd_error_internal) is ugly.
+
+   (Done, breaking interactive temacs.)
+
+-- The command `emacsclient -t -e '(delete-frame)'' fails to exit.
+
+   (Fixed.)
+
+-- frame-creation-function should always create a frame that is on the
+   same display as the selected frame.  Maybe frame-creation-function
+   should simply be removed and make-frame changed to do the right
+   thing.
+
+   (Done, with a nice hack.  frame-creation-function is now frame-local.)
+
+-- Fix C-g on raw ttys.
+
+   (Done.  I disabled the interrupt/quit keys on all secondary
+   terminals, so Emacs sees C-g as normal input.  This looks like an
+   overkill, because emacsclient has extra code to pass SIGINT to
+   Emacs, so C-g should remain the interrupt/quit key on emacsclient
+   frames.  See the next entry why implementing this distinction would
+   be a bad idea.)
+
+-- Make sure C-g goes to the right frame with ttys.  This is hard, as
+   SIGINT doesn't have a tty parameter. :-(
+
+   (Done, the previous change fixes this as a pleasant side effect.)
+
+-- I have seen a case when Emacs with multiple ttys fell into a loop
+   eating 100% of CPU time.  Strace showed this loop:
+
+       getpid()                                = 30284
+       kill(30284, SIGIO)                      = 0
+       --- SIGIO (I/O possible) @ 0 (0) ---
+       ioctl(6, FIONREAD, [0])                 = -1 EIO (Input/output error)
+       ioctl(5, FIONREAD, [0])                 = -1 EIO (Input/output error)
+       ioctl(0, FIONREAD, [0])                 = 0
+       sigreturn()                             = ? (mask now [])
+       gettimeofday({1072842297, 747760}, NULL) = 0
+       gettimeofday({1072842297, 747806}, NULL) = 0
+       select(9, [0 3 5 6], NULL, NULL, {0, 0}) = 2 (in [5 6], left {0, 0})
+       select(9, [0 3 5 6], NULL, NULL, {0, 0}) = 2 (in [5 6], left {0, 0})
+       gettimeofday({1072842297, 748245}, NULL) = 0
+
+   I have seen something similar with a single X frame, but have not
+   been able to reproduce it for debugging.
+
+   Update: This may have been caused by checking for nread != 0
+   instead of nread > 0 after calling read_socket_hook in
+   read_avail_input.
+
+   (Fixed.  This was caused by unconditionally including stdin in
+   input_wait_mask in init_process.  The select call in
+   wait_reading_process_input always returned immediately, indicating
+   that there is pending input from stdin, which nobody read.
+
+   Note that the above strace output seems to be an unrelated but
+   similar bug.  I think that is now fixed.)
+
+-- Exiting Emacs while there are emacsclient frames doesn't restore the
+   ttys to their default states.
+
+   (This seems to be fixed by some previous change.)
+
+-- Allow opening an X session after -nw.
+
+   (Done.)
+
+-- Fix color handling during tty+X combo sessions.  (It seems that tty
+   sessions automatically convert the face colors to terminal colors
+   when the face is loaded.  This conversion must happen instead on
+   the fly in write_glyphs, which might be problematic, as color
+   approximation is currently done in lisp (term/tty-colors.el).)
+   (Update: hm, colors seem to work fine if I start emacs with -nw and
+   then create an X frame.  Maybe it's just a small buglet somewhere.)
+
+   (Seems to be fixed.  The problem was in startup.el, it did not
+   initialize tty colors when the initial window system was
+   graphical.)
+
+-- emacs -nw --eval '(y-or-n-p "Foobar")' segfaults.  (Reported by
+   Romain Francoise)
+
+   (Fixed, there was a keyboard initialization problem.)
+
+-- Fix interactive use of temacs.  There are face-related SEGVs, most
+   likely because of changes in realize_default_face, realize_face.
+
+   (Fixed.)
+
+-- Don't exit Emacs when the last X connection fails during a
+   multi-display session.
+
+   (Fixed.)
+
+-- Dan Nicolaescu noticed that starting emacsclient on the same
+   terminal device that is the controlling tty of the Emacs process
+   gives unexpected results.
+
+   (Fixed.)
+
+-- Istvan Marko reported that Emacs hang on ttys if it was started
+   from a shell script.
+
+   (Fixed.  There was a bug in the multi-tty version of
+   narrow_foreground_group.  tcsetpgrp blocks if it is called from a
+   process that is not in the same process group as the tty.)
+
+-- emacsclient -t from an Emacs term buffer does not work, complains
+   about face problems.  This can even lock up Emacs (if the recursive
+   frame sets single_kboard).  Update: the face problems are caused by
+   bugs in term.el, not in multi-tty.  The lockup is caused by
+   single_kboard mode, and is not easily resolvable.  The best thing to
+   do is to simply refuse to create a tty frame of type `eterm'.
+
+   (Fixed, changed emacsclient to check for TERM=eterm.  The face
+   complaints seem to be caused by bugs in term.el; they are not
+   related to multi-tty.)
+
+-- Find out the best way to support suspending Emacs with multiple
+   ttys.  My guess: disable it on the controlling tty, but from other
+   ttys pass it on to emacsclient somehow.  (It is (I hope) trivial to
+   extend emacsclient to handle suspend/resume.  A `kill -STOP' almost
+   works right now.)
+
+   (Done.  I needed to play with signal handling and the server
+   protocol a bit to make emacsclient behave as a normal UNIX program
+   wrt foreground/background process groups.)
+
+-- There is a flicker during the startup of `emacs -nw'; it's as if
+   the terminal is initialized, reset and then initialialized again.
+   Debug this.  (Hint: narrow_foreground_group is called twice during
+   startup.)
+
+   (This is gone.)
+
+-- Robert Chassell has found serious copy-paste bugs with the
+   multi-tty branch.  There seem to be redisplay bugs while copying
+   from X to a terminal frame.  Copying accented characters do not
+   work for me.
+
+   (Patch-124 should fix this, by changing the interprogram-*-function
+   variables to be frame-local, as suggested by Mark Plaksin
+   (thanks!).  I think that the redisplay bugs are in fact not bugs,
+   but delays caused by single_kboard --> perhaps MULTI_KBOARD should
+   be removed.)
+
+-- frame-creation-function was removed, which might be a bad idea.
+   Think up a compatible solution.
+
+   (It was an internal interface that may be changed when necessary.)
+
+-- Change Lisp code not to (getenv "TERM"); use the `tty-type' frame
+   parameter or the frame-tty-type function instead.  (M-x tags-search
+   "TERM" helps with this.)  Update: Actually, all getenv invocations
+   should be checked for multi-tty compatibility, and an interface
+   must be implemented to get the remote client's environment.
+
+   (Done.  Only getenv calls in lisp/term/*.el were changed; other
+   calls should be mostly left as they are.)
+
+-- Add an elaborate mechanism for display-local variables.  (There are
+   already a few of these; search for `terminal-local' in the Elisp
+   manual.)
+
+   (Not needed.  Display-local variables could be emulated by
+   frame-local variables.)
+
+-- Emacs assumes that all terminal frames have the same locale
+   settings as Emacs itself.  This may lead to bogus results in a
+   multi-locale setup. (E.g., while logging in from a remote client
+   with a different locale.)
+   (Update after new bugreport by Friedrich Delgado Friedrichs: 
+   (at least) the structs terminal_coding and keyboard_coding in
+   coding.c must be moved to struct display, and the Lisp interface
+   [set-]keyboard-coding-system must be adapted for the change.)
+
+   (Fixed.  Emacs now uses the locale settings as seen by the
+   emacsclient process for server tty frames.)
+   (Update: Not really; Vlocale_coding_system is still global.)
+
+-- Make `struct display' accessible to Lisp programs.  Accessor functions:
+
+       (displayp OBJECT):  Returns t if OBJECT is a display.
+               => Implemented as display-live-p.
+
+       (display-list):  Returns list of currently active displays.
+               => Implemented.
+
+       (selected-display):  Returns the display object of the selected frame.
+               => Not strictly necessary, but implemented anyway.
+
+       (frame-display FRAME):  Returns the display object of FRAME.
+               => Implemented.
+
+       (display-frames DISPLAY):  Returns a list of frames on DISPLAY.
+               => Already implemented, see frames-on-display-list.
+
+       (display-type DISPLAY):  Returns the type of DISPLAY, as a
+               symbol.  (See `framep'.)
+               => Implemented as display-live-p.
+
+       (display-device DISPLAY): Returns the name of the device that
+               DISPLAY uses, as a string.  (E.g: "/dev/pts/16", or
+               ":0.0")
+               => Implemented as display-name.
+
+       etc.
+
+   See next issue why this is necessary.
+
+   (Update: The consensus on emacs-devel seems to be to do this via
+   integer identifiers.  That's fine by me.)
+
+   (Done.)
+
+-- The following needs to be supported:
+
+       $ emacsclient -t
+               C-z
+       $ emacsclient -t
+               (This fails now.)
+
+   The cleanest way to solve this is to allow multiple displays on the
+   same terminal device; each new emacsclient process should create
+   its own display.  As displays are currently identified by their
+   device names, this is not possible until struct display becomes
+   accessible as a Lisp-level object.
+
+   (Done.)
+
+-- Miles Bader suggests that C-x C-c on an emacsclient frame should
+   only close the frame, not exit the entire Emacs session.  Update:
+   see above for a function that does this.  Maybe this should be the
+   new default?  
+
+   (Done.  This is the new default.  No complaints so far.)
+
+-- Clean up the frame-local variable system.  I think it's ugly and
+   error-prone.  But maybe I just haven't yet fully understood it.
+
+   (Nothing to do.  It doesn't seem ugly any more.  It's rather clever.)
+
+-- Support multiple character locales.  A version of
+   `set-locale-environment' needs to be written for setting up
+   display-local settings on ttys.  I think calling
+   set-display-table-and-terminal-coding-system and
+   set-keyboard-coding-system would be enough.  The language
+   environment itself should remain a global setting.
+
+   (Done, by an ugly hack.)
+
+-- The terminal customization files in term/*.el tend to change global
+   parameters, which may confuse Emacs with multiple displays.  Change
+   them to tweak only frame-local settings, if possible.  (They tend
+   to call define-key to set function key sequences a lot.)
+
+   (Done, by making `function-key-map' terminal-local (i.e., part of
+   struct kboard).  This has probably covered all the remaining problems.)
+
+-- Make `function-key-map' and `key-translation-map' terminal-local.
+
+   (Done.)
+
+-- Implement `terminal-local-value' and `set-terminal-local-value' to
+   allow deterministic access to terminal local bindings.  The
+   encode-kb package can not set up `key-translation-map' without
+   these.  The terminal-local bindings seem to be independent of what
+   frame is selected.
+
+   (Done.)
+
+-- xt-mouse.el needs to be adapted for multi-tty.  It currently
+   signals an error on kill-emacs under X, which prevents the user
+   from exiting Emacs. (Reported by Mnemonikk on freenode.)
+
+   (Done, I hope.)
+   
+
+-- Having {reset,init}_all_sys_modes in set-input-mode breaks arrow
+   keys on non-selected terminals under screen, and sometimes on other
+   terminal types as well.  The other function keys continue to work
+   fine.  Sometimes faces on these screens become garbled.
+
+   This only seems to affect displays that are of the same terminfo
+   type as the selected one. Interestingly, in screen Emacs normally
+   reports the up arrow key as `M-o A', but after the above SNAFU, it
+   complains about `M-[ a'.  UNIX ttys are a complete mystery to me,
+   but it seems the reset-reinitialize cycle somehow leaves the
+   non-selected terminals in a different state than usual.  I have no
+   idea how this could happen.
+
+   Currently set-input-mode resets only the currently selected
+   terminal, which seems to somehow work around the problem.
+
+   Update:
+
+       Dan Nicolaescu <dann@ics.uci.edu> writes:
+       > Some terminals have 2 modes for cursor keys: Application Mode where
+       > the cursor keys transmit the codes defined in the terminfo entry, and
+       > Cursor mode. Applications have to send the smkx and rmkx terminfo
+       > strings to switch between the 2 modes. So Emacs (and emacsclient) have
+       > to send smkx when initializing and rmkx when quitting (or on
+       > suspend). 
+
+   (I think patch-370 fixed this.)
+
+-- This long-standing bug (first reported by Han Boetes) seems to come
+   and go all the time.  It is time to track it down and fix it.
+
+       emacs
+               M-x server-start
+       
+       # From another xterm:
+       emacsclient -e '(y-or-n-p "Do you want me to crash? ")'
+               # Notice how the answer ends up in the *scratch* buffer
+               M-x garbage-collect
+               SIGSEGV
+
+   (Fixed in patch-414 after detailed analysis by Kalle Olavi Niemitalo.)
+
+-- normal-erase-is-backspace-mode in simple.el needs to be updated for
+   multi-tty (rep. by Dan Waber).  (The Delete key is broken on X
+   because of this.)
+
+   (Fixed in patch-427.)
+
+-- I think keyboard-translate-table should be made terminal-local.
+
+   (Done in patch-431.)
+
+-- The semantics of terminal-local variables are confusing; it is not
+   clear what binding is in effect in any given time.  See if
+   current_kboard (or at least the terminal-local bindings exported to
+   Lisp) might be changed to be tied to the selected frame instead.
+   Currently, `function-key-map' and `key-translation-map' may be
+   accessed reliably only using the hackish
+   `(set-)terminal-local-value' functions.
+
+   Perhaps there should be a difference between `last-command' &co.
+   and these more conventional configuration variables.
+   (E.g. `symbol-value' would use current_kboard to access
+   `last-command', but SELECTED_FRAME()->display->kboard to get the
+   value of `function-key-map'.
+
+   (Fixed in patch-434.)
+
+-- If the first key pressed on a new tty terminal is a function key,
+   it is not recognized correctly.  May be related to the bug below.
+
+   (Seems to have been fixed as a side effect of patch-434.  "The bug
+   below" was the set-input-mode madness.)  
+
+   (Update: this bug was fixed for good in patch-449.  It was tracked
+   down to a bug in `read_key_sequence': it failed to reinitialize its
+   local function-key-map/key-translation-map references when it
+   switched keyboards.  I don't understand why did this bug only
+   appear on brand new frames, though!)
+
+-- Disable connecting to a new X display when we use the GTK toolkit.
+
+   (Disabled in patch-450.)
+
+-- Implement automatic forwarding of client environment variables to
+   forked processes, as discussed on the multi-tty list.  Terminal
+   parameters are now accessible in C code, so the biggest obstacle is
+   gone.  The `getenv_internal' and `child_setup' functions in
+   callproc.c must be changed to support the following variable:
+
+       terminal-local-environment-variables is a variable defined in ...
+
+       Enable or disable terminal-local environment variables.
+
+       If set to t, `getenv', `setenv' and subprocess creation
+       functions use the environment variables of the emacsclient
+       process that created the selected frame, ignoring
+       `process-environment'.
+
+       If set to nil, Emacs uses `process-environment' and ignores
+       the client environment.
+
+       Otherwise, `terminal-local-environment-variables' should be a
+       list of variable names (represented by Lisp strings) to look
+       up in the client environment.  The rest will come from
+       `process-environment'.
+
+   (Implemented in patch-461; `terminal-getenv', `terminal-setenv' and
+   `with-terminal-environment' are now replaced by extensions to
+   `getenv' and `setenv', and the new `local-environment-variables'
+   facility.  Yay!)
+
+   (Updated in patch-465 to fix the semantics of let-binding
+   `process-environment'.  `process-environment' was changed to
+   override all local/global environment variables, and a new variable
+   `global-environment' was introduced to have `process-environment's
+   old meaning.)
+
+   (Updated in patch-466 to fix the case when two emacsclient sessions
+   share the same terminal, but have different environment.  The local
+   environment lists are now stored as frame parameters, so the
+   C-level terminal parameters are not strictly necessary any more.)
+
+-- `Fdelete_frame' is called from various critical places where it is
+   not acceptable for the frame deletion to fail, e.g. from
+   x_connection_closed after an X error.  `Fdelete_frame' now protects
+   against `delete-frame-functions' throwing an error and preventing a
+   frame delete. (patch-475)
+
+-- Fix set-input-mode for multi-tty.  It's a truly horrible interface;
+   what if we'd blow it up into several separate functions (with a
+   compatibility definition)?
+
+   (Done.  See `set-input-interrupt-mode', `set-output-flow-control',
+   `set-input-meta-mode' and `set-quit-char'.) (patch-457)
+
+-- Let-binding `overriding-terminal-local-map' on a brand new frame
+   does not seem to work correctly.  (See `fancy-splash-screens'.)
+   The keymap seems to be set up right, but events go to another
+   terminal.  Or is it `unread-command-events' that gets Emacs
+   confused?  Investigate.
+
+   (Emacs was confused because a process filter entered
+   `recursive-edit' while Emacs was reading input.  I added support
+   for this in the input system.) (patch-489)
+
+-- I smell something funny around pop_kboard's "deleted kboard" case.
+   Determine what are the circumstances of this case, and fix any
+   bug that comes to light.
+
+   (It happens simply because single_kboard's terminal is sometimes
+   deleted while executing a command on it, for example the one that
+   kills the terminal.  There was no bug here, but I rewrote the whole
+   single_kboard mess anyway.) (patch-489)
+
+-- Understand Emacs's low-level input system (it's black magic) :-)
+   What exactly does interrupt_input do?  I tried to disable it for
+   raw secondary tty support, but it does not seem to do anything
+   useful.  (Update: Look again. X unconditionally enables this, maybe
+   that's why raw terminal support is broken again.  I really do need
+   to understand input.)
+   (Update: I am starting to understand the read_key_sequence->read-char
+   ->kbd_buffer_get_event->read_avail_input->read_socket_hook path.  Yay!)
+
+   (Update: OK, it all seems so easy now (NOT).  Input could be done
+   synchronously (with wait_reading_process_input), or asynchronously
+   by SIGIO or polling (SIGALRM).  C-g either sets the Vquit_flag,
+   signals a 'quit condition (when immediate_quit), or throws to
+   `getcjmp' when Emacs was waiting for input when the C-g event
+   arrived.)
+
+-- Replace wrong_kboard_jmpbuf with a special return value of
+   read_char.  It is absurd that we use setjmp/longjmp just to return
+   to the immediate caller.
+
+   (Done in patch-500.)
+
+-- `tool-bar-mode', `scroll-bar-mode', `menu-bar-mode' and
+   'fringe-mode' are modes global to the entire Emacs session, not
+   just a single frame or a single terminal.  This means that their
+   status sometimes differs from what's actually displayed on the
+   screen.  As a consequence, the Options | Show/Hide menu sometimes
+   shows incorrect status, and you have to select an option twice for
+   it to have any visible effect on the current frame.
+
+   Change Emacs so that the status of the items in the Options |
+   Show/Hide menu correspond to the current frame.
+
+   (Done in patch-537.)
+
+-- The `default-directory' variable should somehow be set to the
+   cwd of the emacsclient process when the user runs emacsclient
+   without file arguments.  Perhaps it is OK to just override the
+   directory of the *scratch* buffer.
+
+   (Done in patch-539.)
+
+-- The borders on tooltip frames on X are messed up.  More
+   specifically, the frame's internal border (internal-border-width
+   frame parameter) is not filled with the correct background color.
+
+   It seems the border contents are drawn onto by the
+   update_single_window call in `x-show-tip'.  After some debugging, I
+   think the window's background color is not set up
+   correctly---calling `x_clear_area' fills the specified area with
+   black, not light yellow.
+
+   (Done in patch-544.  A background_pixel field was defined both in
+   struct frame and struct x_output, and Emacs got confused between
+   them.)
+
+\f
+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, 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; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.
+
+;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d
index 1f544d3e27448bf083ae105e0d19823a70fcbe75..117aff2681afaeae2eac46f0f0fc78c455fa97eb 100644 (file)
@@ -235,22 +235,11 @@ mv -f makefile.tmp Makefile
 cd ..\r
 :oldx1\r
 rem   ----------------------------------------------------------------------\r
-Echo Configuring the manual directory...\r
-cd man\r
-sed -f ../msdos/sed6.inp < Makefile.in > Makefile\r
-cd ..\r
-rem   ----------------------------------------------------------------------\r
-Echo Configuring the ELisp manual directory...\r
-cd lispref\r
-sed -f ../msdos/sed6.inp < Makefile.in > Makefile\r
-cd ..\r
-rem   ----------------------------------------------------------------------\r
-Echo Configuring the ELisp Introduction manual directory...\r
-Rem The two variants for the line below is for when the shell\r
+Echo Configuring the doc directory...\r
+cd doc\r
+Rem The two variants for lispintro below is for when the shell\r
 Rem supports long file names but DJGPP does not\r
-if exist lispintro\Makefile.in cd lispintro\r
-if exist lispintr\Makefile.in cd lispintr\r
-sed -f ../msdos/sed6.inp < Makefile.in > Makefile\r
+for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
 cd ..\r
 rem   ----------------------------------------------------------------------\r
 Echo Configuring the lisp directory...\r
index 5df7d18faaa3fb8ed4c21bba30ad21cddce41f59..0a1a0cc97ed55ecb7ff71917a02132d27e9ceaf5 100755 (executable)
--- a/configure
+++ b/configure
@@ -679,6 +679,7 @@ INSTALL_DATA
 RANLIB
 INSTALL_INFO
 GZIP_PROG
+MAKEINFO
 LIBSOUND
 PKG_CONFIG
 ALSA_CFLAGS
@@ -686,6 +687,9 @@ ALSA_LIBS
 CFLAGS_SOUND
 SET_MAKE
 XMKMF
+HAVE_XSERVER
+RSVG_CFLAGS
+RSVG_LIBS
 GTK_CFLAGS
 GTK_LIBS
 XFT_CFLAGS
@@ -1313,11 +1317,13 @@ if test -n "$ac_init_help"; then
 Optional Features:
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-carbon-app[=DIR]  [DIR=/Application]
+  --enable-carbon-app[=DIR]
                           specify install directory for Emacs.app on Mac OS X
+                          [DIR=/Application]
   --enable-asserts        compile code with asserts enabled
-  --enable-maintainer-mode enable make rules and dependencies not useful
-                          (and sometimes confusing) to the casual installer
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
   --enable-locallisppath=PATH
                           directories Emacs should search for lisp files
                           specific to this site
@@ -1332,17 +1338,20 @@ Optional Packages:
   --with-kerberos5        support Kerberos version 5 authenticated POP
   --with-hesiod           support Hesiod to get the POP server host
   --without-sound         don't compile with sound support
-  --with-x-toolkit=KIT    use an X toolkit
-                              (KIT = yes/lucid/athena/motif/gtk/no)
+  --with-x-toolkit=KIT    use an X toolkit (KIT one of: yes, lucid, athena,
+                          motif, gtk, no)
   --with-xpm              use -lXpm for displaying XPM images
   --with-jpeg             use -ljpeg for displaying JPEG images
   --with-tiff             use -ltiff for displaying TIFF images
-  --with-gif              use -lungif for displaying GIF images
+  --with-gif              use -lgif (or -lungif) for displaying GIF images
   --with-png              use -lpng for displaying PNG images
+  --with-gpm              use -lgpm for mouse support on a GNU/Linux console
+  --with-rsvg             use -lrsvg-2 for displaying SVG images
   --with-gtk              use GTK (same as --with-x-toolkit=gtk)
-  --with-pkg-config-prog  Path to pkg-config to use for finding GTK
+  --with-pkg-config-prog  Path to pkg-config for finding GTK and librsvg
   --without-toolkit-scroll-bars
                           don't use Motif or Xaw3d scroll bars
+  --without-xaw3d         don't use Xaw3d
   --without-xim           don't use X11 XIM
   --without-carbon        don't use Carbon GUI on Mac OS X
   --with-x                use the X Window System
@@ -1812,12 +1821,14 @@ gamedir='${localstatedir}/games/emacs'
 gameuser=games
 
 
+
 # Check whether --with-gcc was given.
 if test "${with_gcc+set}" = set; then
   withval=$with_gcc;
 fi
 
 
+
 # Check whether --with-pop was given.
 if test "${with_pop+set}" = set; then
   withval=$with_pop; if test "$withval" = yes; then
@@ -1836,6 +1847,7 @@ fi
 
 
 
+
 # Check whether --with-kerberos was given.
 if test "${with_kerberos+set}" = set; then
   withval=$with_kerberos; if test "$withval" = yes; then
@@ -1848,6 +1860,7 @@ fi
 
 
 
+
 # Check whether --with-kerberos5 was given.
 if test "${with_kerberos5+set}" = set; then
   withval=$with_kerberos5; if test "${with_kerberos5+set}" = set; then
@@ -1867,6 +1880,7 @@ fi
 fi
 
 
+
 # Check whether --with-hesiod was given.
 if test "${with_hesiod+set}" = set; then
   withval=$with_hesiod; if test "$withval" = yes; then
@@ -1890,19 +1904,19 @@ fi
 # Check whether --with-x-toolkit was given.
 if test "${with_x_toolkit+set}" = set; then
   withval=$with_x_toolkit;       case "${withval}" in
-           y | ye | yes )      val=athena ;;
+           y | ye | yes )      val=gtk ;;
            n | no )            val=no  ;;
            l | lu | luc | luci | lucid )       val=lucid ;;
            a | at | ath | athe | athen | athena )      val=athena ;;
            m | mo | mot | moti | motif )       val=motif ;;
            g | gt | gtk  )     val=gtk ;;
            * )
-{ { echo "$as_me:$LINENO: error: \`--with-x-toolkit=$withval' is invalid\;
+{ { echo "$as_me:$LINENO: error: \`--with-x-toolkit=$withval' is invalid;
 this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'.
-Currently, \`yes', \`athena' and \`lucid' are synonyms." >&5
-echo "$as_me: error: \`--with-x-toolkit=$withval' is invalid\;
+\`yes' and \`gtk' are synonyms. \`athena' and \`lucid' are synonyms." >&5
+echo "$as_me: error: \`--with-x-toolkit=$withval' is invalid;
 this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'.
-Currently, \`yes', \`athena' and \`lucid' are synonyms." >&2;}
+\`yes' and \`gtk' are synonyms. \`athena' and \`lucid' are synonyms." >&2;}
    { (exit 1); exit 1; }; }
            ;;
          esac
@@ -1911,6 +1925,7 @@ Currently, \`yes', \`athena' and \`lucid' are synonyms." >&2;}
 fi
 
 
+
 # Check whether --with-xpm was given.
 if test "${with_xpm+set}" = set; then
   withval=$with_xpm;
@@ -1941,6 +1956,18 @@ if test "${with_png+set}" = set; then
 fi
 
 
+# Check whether --with-gpm was given.
+if test "${with_gpm+set}" = set; then
+  withval=$with_gpm;
+fi
+
+
+# Check whether --with-rsvg was given.
+if test "${with_rsvg+set}" = set; then
+  withval=$with_rsvg;
+fi
+
+
 # Check whether --with-gtk was given.
 if test "${with_gtk+set}" = set; then
   withval=$with_gtk;
@@ -1959,6 +1986,12 @@ if test "${with_toolkit_scroll_bars+set}" = set; then
 fi
 
 
+# Check whether --with-xaw3d was given.
+if test "${with_xaw3d+set}" = set; then
+  withval=$with_xaw3d;
+fi
+
+
 # Check whether --with-xim was given.
 if test "${with_xim+set}" = set; then
   withval=$with_xim;
@@ -1970,6 +2003,7 @@ if test "${with_carbon+set}" = set; then
   withval=$with_carbon;
 fi
 
+
 # Check whether --enable-carbon-app was given.
 if test "${enable_carbon_app+set}" = set; then
   enableval=$enable_carbon_app;  carbon_appdir_x=${enableval}
@@ -2169,7 +2203,7 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
 canonical=$host
-configuration=${host_alias-$host}
+configuration=${host_alias-${build_alias-$host}}
 
 
 
@@ -2995,14 +3029,8 @@ _ACEOF
                ;;
       *-sunos5* | *-solaris* )
                opsys=sol2-6
-## FIXME: make this into a proper fix that checks the compiler type,
-## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now?
-               if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
-                 ## -Xs prevents spurious whitespace.
-                 NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
-               else
-                 NON_GNU_CPP=/usr/ccs/lib/cpp
-               fi
+               emacs_check_sunpro_c=yes
+               NON_GNU_CPP=/usr/ccs/lib/cpp
                ;;
       *                          ) opsys=bsd4-2   ;;
     esac
@@ -4158,6 +4186,72 @@ 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
+  { echo "$as_me:$LINENO: checking whether we are using a Sun C compiler" >&5
+echo $ECHO_N "checking whether we are using a Sun C compiler... $ECHO_C" >&6; }
+
+if test "${emacs_cv_sunpro_c+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __SUNPRO_C
+fail;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  emacs_cv_sunpro_c=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       emacs_cv_sunpro_c=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+
+  { echo "$as_me:$LINENO: result: $emacs_cv_sunpro_c" >&5
+echo "${ECHO_T}$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.
@@ -4185,7 +4279,6 @@ then
   CC="$CC $NON_GCC_TEST_OPTIONS"
 fi
 
-
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -5254,6 +5347,61 @@ fi
 
 
 
+## Need makeinfo >= 4.6 (?) to build the manuals.
+# Extract the first word of "makeinfo", so it can be a program name with args.
+set dummy makeinfo; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_MAKEINFO+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAKEINFO in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MAKEINFO="$MAKEINFO" # Let the user override the test with a path.
+  ;;
+  *)
+  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_path_MAKEINFO="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_MAKEINFO" && ac_cv_path_MAKEINFO="no"
+  ;;
+esac
+fi
+MAKEINFO=$ac_cv_path_MAKEINFO
+if test -n "$MAKEINFO"; then
+  { echo "$as_me:$LINENO: result: $MAKEINFO" >&5
+echo "${ECHO_T}$MAKEINFO" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+if test "$MAKEINFO" != "no" && \
+  test x"`$MAKEINFO --version 2> /dev/null | $EGREP 'texinfo[^0-9]*([1-4][0-9]+|[5-9]|4\.[6-9]|4\.[1-5][0-9]+)'`" = x; then
+   MAKEINFO=no
+fi
+
+if test "$MAKEINFO" = "no"; then
+  { { echo "$as_me:$LINENO: error: makeinfo >= 4.6 is required " >&5
+echo "$as_me: error: makeinfo >= 4.6 is required " >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
 if test x$GCC = xyes && test "x$GCC_LINK_TEST_OPTIONS" != x
 then
   ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
@@ -9502,7 +9650,13 @@ case "${window_system}" in
       gtk ) with_gtk=yes
             USE_X_TOOLKIT=none ;;
       no ) USE_X_TOOLKIT=none ;;
-      * ) USE_X_TOOLKIT=maybe ;;
+      * )
+          if test x"$with_gtk" = xyes; then
+             USE_X_TOOLKIT=none
+          else
+             USE_X_TOOLKIT=maybe
+          fi
+          ;;
     esac
   ;;
   mac | none )
@@ -9512,6 +9666,68 @@ case "${window_system}" in
   ;;
 esac
 
+if test "$window_system" = none && test "X$with_x" != "Xno"; then
+   # Extract the first word of "X", so it can be a program name with args.
+set dummy X; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_HAVE_XSERVER+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$HAVE_XSERVER"; then
+  ac_cv_prog_HAVE_XSERVER="$HAVE_XSERVER" # 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_HAVE_XSERVER="true"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_HAVE_XSERVER" && ac_cv_prog_HAVE_XSERVER="false"
+fi
+fi
+HAVE_XSERVER=$ac_cv_prog_HAVE_XSERVER
+if test -n "$HAVE_XSERVER"; then
+  { echo "$as_me:$LINENO: result: $HAVE_XSERVER" >&5
+echo "${ECHO_T}$HAVE_XSERVER" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+   if test "$HAVE_XSERVER" = true ||
+      test -n "$DISPLAY" ||
+      test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
+        { { echo "$as_me:$LINENO: error: You seem to be running X, but no X development libraries
+were found.  You should install the relevant development files for X
+and for the toolkit you want, such as Gtk+, Lesstif or Motif.  Also make
+sure you have development files for image handling, i.e.
+tiff, gif, jpeg, png and xpm.
+If you are sure you want Emacs compiled without X window support, pass
+  --without-x
+to configure." >&5
+echo "$as_me: error: You seem to be running X, but no X development libraries
+were found.  You should install the relevant development files for X
+and for the toolkit you want, such as Gtk+, Lesstif or Motif.  Also make
+sure you have development files for image handling, i.e.
+tiff, gif, jpeg, png and xpm.
+If you are sure you want Emacs compiled without X window support, pass
+  --without-x
+to configure." >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+fi
+
 ### If we're using X11, we should use the X menu package.
 HAVE_MENUS=no
 case ${HAVE_X11} in
@@ -10933,11 +11149,136 @@ echo "${ECHO_T}before 5" >&6; }
   fi
 fi
 
+### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
+HAVE_RSVG=no
+if test "${HAVE_X11}" = "yes" || test "${HAVE_CARBON}" = "yes"; then
+  if test "${with_rsvg}" != "no"; then
+        if test "X${with_pkg_config_prog}" != X; then
+      PKG_CONFIG="${with_pkg_config_prog}"
+    fi
+
+    RSVG_REQUIRED=2.0.0
+    RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
+
+
+  succeeded=no
+
+  if test -z "$PKG_CONFIG"; then
+    # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  fi
+
+  if test "$PKG_CONFIG" = "no" ; then
+     :
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        { echo "$as_me:$LINENO: checking for $RSVG_MODULE" >&5
+echo $ECHO_N "checking for $RSVG_MODULE... $ECHO_C" >&6; }
+
+        if $PKG_CONFIG --exists "$RSVG_MODULE" 2>&5; then
+            { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+            succeeded=yes
+
+            { echo "$as_me:$LINENO: checking RSVG_CFLAGS" >&5
+echo $ECHO_N "checking RSVG_CFLAGS... $ECHO_C" >&6; }
+            RSVG_CFLAGS=`$PKG_CONFIG --cflags "$RSVG_MODULE"|sed -e 's,///*,/,g'`
+            { echo "$as_me:$LINENO: result: $RSVG_CFLAGS" >&5
+echo "${ECHO_T}$RSVG_CFLAGS" >&6; }
+
+            { echo "$as_me:$LINENO: checking RSVG_LIBS" >&5
+echo $ECHO_N "checking RSVG_LIBS... $ECHO_C" >&6; }
+            RSVG_LIBS=`$PKG_CONFIG --libs "$RSVG_MODULE"|sed -e 's,///*,/,g'`
+            { echo "$as_me:$LINENO: result: $RSVG_LIBS" >&5
+echo "${ECHO_T}$RSVG_LIBS" >&6; }
+        else
+            { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+            RSVG_CFLAGS=""
+            RSVG_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but
+            ## do set a variable so people can do so.
+            RSVG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$RSVG_MODULE"`
+
+        fi
+
+
+
+     else
+        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+        echo "*** See http://www.freedesktop.org/software/pkgconfig"
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     :
+  else
+     :
+  fi
+
+
+
+
+    if test ".${RSVG_CFLAGS}" != "."; then
+      HAVE_RSVG=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_RSVG 1
+_ACEOF
+
+      CFLAGS="$CFLAGS $RSVG_CFLAGS"
+      LIBS="$RSVG_LIBS $LIBS"
+    fi
+  fi
+fi
+
+
 HAVE_GTK=no
 if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then
   USE_X_TOOLKIT=none
 fi
-if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
+if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk" || \
+ test "$USE_X_TOOLKIT" = "maybe"; then
   if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then
     { { echo "$as_me:$LINENO: error: Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}" >&5
 echo "$as_me: error: Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}" >&2;}
   fi
 
   if test "$PKG_CONFIG" = "no" ; then
-     { { echo "$as_me:$LINENO: error:
-      *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog.  Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." >&5
-echo "$as_me: error:
-      *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog.  Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." >&2;}
-   { (exit 1); exit 1; }; }
+     pkg_check_gtk=no
   else
      PKG_CONFIG_MIN_VERSION=0.9.0
      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
@@ -11033,7 +11370,7 @@ echo "${ECHO_T}no" >&6; }
             ## If we have a custom action on failure, don't print errors, but
             ## do set a variable so people can do so.
             GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GTK_MODULES"`
-            echo $GTK_PKG_ERRORS
+
         fi
 
 
@@ -11045,12 +11382,20 @@ echo "${ECHO_T}no" >&6; }
   fi
 
   if test $succeeded = yes; then
-     :
+     pkg_check_gtk=yes
   else
-     { { echo "$as_me:$LINENO: error: Library requirements ($GTK_MODULES) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
-echo "$as_me: error: Library requirements ($GTK_MODULES) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
+     pkg_check_gtk=no
+  fi
+
+  if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
+     { { echo "$as_me:$LINENO: error: $GTK_PKG_ERRORS" >&5
+echo "$as_me: error: $GTK_PKG_ERRORS" >&2;}
    { (exit 1); exit 1; }; }
   fi
+fi
+
+
+if test x"$pkg_check_gtk" = xyes; then
 
 
 
 done
 
   if test "${GTK_COMPILES}" != "yes"; then
-    { { echo "$as_me:$LINENO: error: Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?" >&5
+    if test "$USE_X_TOOLKIT" != "maybe"; then
+      { { echo "$as_me:$LINENO: error: Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?" >&5
 echo "$as_me: error: Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?" >&2;}
    { (exit 1); exit 1; }; };
-  fi
-
-  HAVE_GTK=yes
+    fi
+  else
+    HAVE_GTK=yes
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_GTK 1
 _ACEOF
 
-  USE_X_TOOLKIT=none
+    USE_X_TOOLKIT=none
+  fi
+
+fi
+
+
+if test "${HAVE_GTK}" = "yes"; then
 
       if test "$with_toolkit_scroll_bars" != no; then
     with_toolkit_scroll_bars=yes
@@ -11272,6 +11624,7 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
   fi
+
       HAVE_GTK_FILE_SELECTION=no
 
 for ac_func in gtk_file_selection_new
@@ -12017,11 +12370,15 @@ _ACEOF
   fi
 fi
 
+HAVE_XAW3D=no
 if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
-  if test x"${HAVE_X11R5}" = xyes; then
-    { echo "$as_me:$LINENO: checking X11 version 5 with Xaw" >&5
-echo $ECHO_N "checking X11 version 5 with Xaw... $ECHO_C" >&6; }
-    if test "${emacs_cv_x11_version_5_with_xaw+set}" = set; then
+  if test x"${HAVE_X11R5}" != xyes; then
+    USE_X_TOOLKIT=none
+  else
+    if test "$with_xaw3d" != no; then
+      { echo "$as_me:$LINENO: checking for xaw3d" >&5
+echo $ECHO_N "checking for xaw3d... $ECHO_C" >&6; }
+      if test "${emacs_cv_xaw3d+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -12032,7 +12389,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 #include <X11/Intrinsic.h>
-#include <X11/Xaw/Simple.h>
+#include <X11/Xaw3d/Simple.h>
 int
 main ()
 {
@@ -12059,35 +12416,100 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
         test ! -s conftest.err
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
-  emacs_cv_x11_version_5_with_xaw=yes
+  emacs_cv_xaw3d=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       emacs_cv_x11_version_5_with_xaw=no
+       emacs_cv_xaw3d=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
 
-    if test $emacs_cv_x11_version_5_with_xaw = yes; then
-      { echo "$as_me:$LINENO: result: 5 or newer, with Xaw; use toolkit by default" >&5
-echo "${ECHO_T}5 or newer, with Xaw; use toolkit by default" >&6; }
+    else
+      emacs_cv_xaw3d=no
+    fi
+    if test $emacs_cv_xaw3d = yes; then
+      { echo "$as_me:$LINENO: result: yes; using Lucid toolkit" >&5
+echo "${ECHO_T}yes; using Lucid toolkit" >&6; }
       USE_X_TOOLKIT=LUCID
+      HAVE_XAW3D=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_XAW3D 1
+_ACEOF
+
     else
-      if test x"${USE_X_TOOLKIT}" = xLUCID; then
+      { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+      { echo "$as_me:$LINENO: checking for libXaw" >&5
+echo $ECHO_N "checking for libXaw... $ECHO_C" >&6; }
+      if test "${emacs_cv_xaw+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <X11/Intrinsic.h>
+#include <X11/Xaw/Simple.h>
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  emacs_cv_xaw=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       emacs_cv_xaw=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+
+      if test $emacs_cv_xaw = yes; then
+        { echo "$as_me:$LINENO: result: yes; using Lucid toolkit" >&5
+echo "${ECHO_T}yes; using Lucid toolkit" >&6; }
+        USE_X_TOOLKIT=LUCID
+      elif test x"${USE_X_TOOLKIT}" = xLUCID; then
         { { echo "$as_me:$LINENO: error: Lucid toolkit requires X11/Xaw include files" >&5
 echo "$as_me: error: Lucid toolkit requires X11/Xaw include files" >&2;}
    { (exit 1); exit 1; }; }
       else
-        { echo "$as_me:$LINENO: result: before 5 or no Xaw; do not use toolkit by default" >&5
-echo "${ECHO_T}before 5 or no Xaw; do not use toolkit by default" >&6; }
+        { echo "$as_me:$LINENO: result: no; do not use toolkit by default" >&5
+echo "${ECHO_T}no; do not use toolkit by default" >&6; }
         USE_X_TOOLKIT=none
       fi
     fi
-  else
-    USE_X_TOOLKIT=none
   fi
 fi
 
@@ -12509,141 +12931,17 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 { echo "$as_me:$LINENO: result: $emacs_cv_lesstif" >&5
 echo "${ECHO_T}$emacs_cv_lesstif" >&6; }
-    if test $emacs_cv_lesstif = yes; then
-      # Make sure this -I option remains in CPPFLAGS after it is set
-      # back to REAL_CPPFLAGS.
-      # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
-      # have those other -I options anyway.  Ultimately, having this
-      # directory ultimately in CPPFLAGS will be enough.
-      REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
-      LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
-    else
-      CFLAGS=$OLD_CFLAGS
-      CPPFLAGS=$OLD_CPPFLAGS
-    fi
-  fi
-fi
-
-### Is -lXaw3d available?
-HAVE_XAW3D=no
-if test "${HAVE_X11}" = "yes"; then
-  if test "${USE_X_TOOLKIT}" != "none" && test "${with_toolkit_scroll_bars}" != "no"; then
-            { echo "$as_me:$LINENO: checking for X11/Xaw3d/Scrollbar.h" >&5
-echo $ECHO_N "checking for X11/Xaw3d/Scrollbar.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Xaw3d_Scrollbar_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Xaw3d/Scrollbar.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_cv_header_X11_Xaw3d_Scrollbar_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_cv_header_X11_Xaw3d_Scrollbar_h=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw3d_Scrollbar_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Xaw3d_Scrollbar_h" >&6; }
-if test $ac_cv_header_X11_Xaw3d_Scrollbar_h = yes; then
-  { echo "$as_me:$LINENO: checking for XawScrollbarSetThumb in -lXaw3d" >&5
-echo $ECHO_N "checking for XawScrollbarSetThumb in -lXaw3d... $ECHO_C" >&6; }
-if test "${ac_cv_lib_Xaw3d_XawScrollbarSetThumb+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lXaw3d  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.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"
-#endif
-char XawScrollbarSetThumb ();
-int
-main ()
-{
-return XawScrollbarSetThumb ();
-  ;
-  return 0;
-}
-_ACEOF
-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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_Xaw3d_XawScrollbarSetThumb=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_Xaw3d_XawScrollbarSetThumb=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xaw3d_XawScrollbarSetThumb" >&5
-echo "${ECHO_T}$ac_cv_lib_Xaw3d_XawScrollbarSetThumb" >&6; }
-if test $ac_cv_lib_Xaw3d_XawScrollbarSetThumb = yes; then
-  HAVE_XAW3D=yes
-fi
-
-fi
-
-
-    if test "${HAVE_XAW3D}" = "yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_XAW3D 1
-_ACEOF
-
+    if test $emacs_cv_lesstif = yes; then
+      # Make sure this -I option remains in CPPFLAGS after it is set
+      # back to REAL_CPPFLAGS.
+      # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
+      # have those other -I options anyway.  Ultimately, having this
+      # directory ultimately in CPPFLAGS will be enough.
+      REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
+      LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
+    else
+      CFLAGS=$OLD_CFLAGS
+      CPPFLAGS=$OLD_CPPFLAGS
     fi
   fi
 fi
@@ -13727,11 +14025,10 @@ _ACEOF
   fi
 fi
 
-### Use -lgif if available, unless `--with-gif=no'.
+### Use -lgif or -lungif if available, unless `--with-gif=no'.
 HAVE_GIF=no
-if test "${HAVE_X11}" = "yes"; then
-  if test "${with_gif}" != "no"; then
-    if test "${ac_cv_header_gif_lib_h+set}" = set; then
+if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
+  if test "${ac_cv_header_gif_lib_h+set}" = set; then
   { echo "$as_me:$LINENO: checking for gif_lib.h" >&5
 echo $ECHO_N "checking for gif_lib.h... $ECHO_C" >&6; }
 if test "${ac_cv_header_gif_lib_h+set}" = set; then
 if test $ac_cv_header_gif_lib_h = yes; then
   # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
 # Earlier versions can crash Emacs.
-      { echo "$as_me:$LINENO: checking for EGifPutExtensionLast in -lungif" >&5
+    { echo "$as_me:$LINENO: checking for EGifPutExtensionLast in -lgif" >&5
+echo $ECHO_N "checking for EGifPutExtensionLast in -lgif... $ECHO_C" >&6; }
+if test "${ac_cv_lib_gif_EGifPutExtensionLast+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgif  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.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"
+#endif
+char EGifPutExtensionLast ();
+int
+main ()
+{
+return EGifPutExtensionLast ();
+  ;
+  return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_gif_EGifPutExtensionLast=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_gif_EGifPutExtensionLast=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_gif_EGifPutExtensionLast" >&5
+echo "${ECHO_T}$ac_cv_lib_gif_EGifPutExtensionLast" >&6; }
+if test $ac_cv_lib_gif_EGifPutExtensionLast = yes; then
+  HAVE_GIF=yes
+else
+  try_libungif=yes
+fi
+
+fi
+
+
+
+  if test "$HAVE_GIF" = yes; then
+      ac_gif_lib_name="-lgif"
+  fi
+
+# If gif_lib.h but no libgif, try libungif.
+  if test x"$try_libungif" = xyes; then
+    { echo "$as_me:$LINENO: checking for EGifPutExtensionLast in -lungif" >&5
 echo $ECHO_N "checking for EGifPutExtensionLast in -lungif... $ECHO_C" >&6; }
 if test "${ac_cv_lib_ungif_EGifPutExtensionLast+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13924,9 +14298,15 @@ if test $ac_cv_lib_ungif_EGifPutExtensionLast = yes; then
   HAVE_GIF=yes
 fi
 
-fi
 
+    if test "$HAVE_GIF" = yes; then
 
+cat >>confdefs.h <<\_ACEOF
+#define LIBGIF -lungif
+_ACEOF
+
+      ac_gif_lib_name="-lungif"
+    fi
   fi
 
   if test "${HAVE_GIF}" = "yes"; then
@@ -13938,6 +14318,244 @@ _ACEOF
   fi
 fi
 
+if test "${HAVE_X11}" = "yes"; then
+  MISSING=""
+  WITH_NO=""
+  test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
+    MISSING="libXpm" && WITH_NO="--with-xpm=no"
+  test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
+    MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
+  test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
+    MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
+  test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
+    MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
+  test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
+    MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
+
+  if test "X${MISSING}" != X; then
+    { { echo "$as_me:$LINENO: error: The following required libraries were not found:
+    $MISSING
+Maybe some development libraries/packages are missing?
+If you don't want to link with them give
+    $WITH_NO
+as options to configure" >&5
+echo "$as_me: error: The following required libraries were not found:
+    $MISSING
+Maybe some development libraries/packages are missing?
+If you don't want to link with them give
+    $WITH_NO
+as options to configure" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+### Use -lgpm if available, unless `--with-gpm=no'.
+HAVE_GPM=no
+if test "${with_gpm}" != "no"; then
+  if test "${ac_cv_header_gpm_h+set}" = set; then
+  { echo "$as_me:$LINENO: checking for gpm.h" >&5
+echo $ECHO_N "checking for gpm.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_gpm_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_gpm_h" >&5
+echo "${ECHO_T}$ac_cv_header_gpm_h" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking gpm.h usability" >&5
+echo $ECHO_N "checking gpm.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <gpm.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking gpm.h presence" >&5
+echo $ECHO_N "checking gpm.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <gpm.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: gpm.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: gpm.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gpm.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: gpm.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: gpm.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: gpm.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gpm.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: gpm.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gpm.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: gpm.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gpm.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: gpm.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gpm.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: gpm.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gpm.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: gpm.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for gpm.h" >&5
+echo $ECHO_N "checking for gpm.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_gpm_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_gpm_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_gpm_h" >&5
+echo "${ECHO_T}$ac_cv_header_gpm_h" >&6; }
+
+fi
+if test $ac_cv_header_gpm_h = yes; then
+  { echo "$as_me:$LINENO: checking for Gpm_Open in -lgpm" >&5
+echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6; }
+if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgpm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.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"
+#endif
+char Gpm_Open ();
+int
+main ()
+{
+return Gpm_Open ();
+  ;
+  return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_gpm_Gpm_Open=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_gpm_Gpm_Open=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6; }
+if test $ac_cv_lib_gpm_Gpm_Open = yes; then
+  HAVE_GPM=yes
+fi
+
+fi
+
+
+fi
+
+if test "${HAVE_GPM}" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GPM 1
+_ACEOF
+
+fi
+
 if test "${ac_cv_header_malloc_malloc_h+set}" = set; then
   { echo "$as_me:$LINENO: checking for malloc/malloc.h" >&5
 echo $ECHO_N "checking for malloc/malloc.h... $ECHO_C" >&6; }
@@ -14723,6 +15341,12 @@ _ACEOF
 fi
 
 
+if test x"$ac_cv_func_alloca_works" != xyes; then
+   { { echo "$as_me:$LINENO: error: a system implementation of alloca is required " >&5
+echo "$as_me: error: a system implementation of alloca is required " >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
 # fmod, logb, and frexp are found in -lm on most systems.
 # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
 
@@ -17908,11 +18532,13 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <stdio.h>
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
 int
 main ()
 {
-return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
   ;
   return 0;
 }
@@ -17952,11 +18578,13 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #define _LARGEFILE_SOURCE 1
-#include <stdio.h>
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
 int
 main ()
 {
-return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
   ;
   return 0;
 }
@@ -23070,6 +23698,7 @@ fi
 
 
 
+
 #### Report on what we decided to do.
 #### Report GTK as a toolkit, even if it doesn't use Xt.
 #### It makes printing result more understandable as using GTK sets
@@ -23106,8 +23735,10 @@ echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
 echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
 echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
-echo "  Does Emacs use -lungif?                                 ${HAVE_GIF}"
+echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $ac_gif_lib_name"
 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
+echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
+echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
 echo "  Does Emacs use X toolkit scroll bars?                   ${USE_TOOLKIT_SCROLL_BARS}"
 echo
 
@@ -23157,7 +23788,7 @@ fi
 rm -f conftest*
 
 
-ac_config_files="$ac_config_files Makefile lib-src/Makefile.c:lib-src/Makefile.in oldXMenu/Makefile man/Makefile lwlib/Makefile src/Makefile.c:src/Makefile.in lisp/Makefile lispref/Makefile lispintro/Makefile leim/Makefile"
+ac_config_files="$ac_config_files Makefile lib-src/Makefile.c:lib-src/Makefile.in oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile.c:src/Makefile.in lwlib/Makefile lisp/Makefile leim/Makefile"
 
 ac_config_commands="$ac_config_commands default"
 
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "lib-src/Makefile.c") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile.c:lib-src/Makefile.in" ;;
     "oldXMenu/Makefile") CONFIG_FILES="$CONFIG_FILES oldXMenu/Makefile" ;;
-    "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
-    "lwlib/Makefile") CONFIG_FILES="$CONFIG_FILES lwlib/Makefile" ;;
+    "doc/emacs/Makefile") CONFIG_FILES="$CONFIG_FILES doc/emacs/Makefile" ;;
+    "doc/misc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/misc/Makefile" ;;
+    "doc/lispintro/Makefile") CONFIG_FILES="$CONFIG_FILES doc/lispintro/Makefile" ;;
+    "doc/lispref/Makefile") CONFIG_FILES="$CONFIG_FILES doc/lispref/Makefile" ;;
     "src/Makefile.c") CONFIG_FILES="$CONFIG_FILES src/Makefile.c:src/Makefile.in" ;;
+    "lwlib/Makefile") CONFIG_FILES="$CONFIG_FILES lwlib/Makefile" ;;
     "lisp/Makefile") CONFIG_FILES="$CONFIG_FILES lisp/Makefile" ;;
-    "lispref/Makefile") CONFIG_FILES="$CONFIG_FILES lispref/Makefile" ;;
-    "lispintro/Makefile") CONFIG_FILES="$CONFIG_FILES lispintro/Makefile" ;;
     "leim/Makefile") CONFIG_FILES="$CONFIG_FILES leim/Makefile" ;;
     "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
 
@@ -23860,6 +24492,7 @@ INSTALL_DATA!$INSTALL_DATA$ac_delim
 RANLIB!$RANLIB$ac_delim
 INSTALL_INFO!$INSTALL_INFO$ac_delim
 GZIP_PROG!$GZIP_PROG$ac_delim
+MAKEINFO!$MAKEINFO$ac_delim
 LIBSOUND!$LIBSOUND$ac_delim
 PKG_CONFIG!$PKG_CONFIG$ac_delim
 ALSA_CFLAGS!$ALSA_CFLAGS$ac_delim
@@ -23867,6 +24500,9 @@ ALSA_LIBS!$ALSA_LIBS$ac_delim
 CFLAGS_SOUND!$CFLAGS_SOUND$ac_delim
 SET_MAKE!$SET_MAKE$ac_delim
 XMKMF!$XMKMF$ac_delim
+HAVE_XSERVER!$HAVE_XSERVER$ac_delim
+RSVG_CFLAGS!$RSVG_CFLAGS$ac_delim
+RSVG_LIBS!$RSVG_LIBS$ac_delim
 GTK_CFLAGS!$GTK_CFLAGS$ac_delim
 GTK_LIBS!$GTK_LIBS$ac_delim
 XFT_CFLAGS!$XFT_CFLAGS$ac_delim
@@ -23890,10 +24526,6 @@ x_default_search_path!$x_default_search_path$ac_delim
 etcdir!$etcdir$ac_delim
 archlibdir!$archlibdir$ac_delim
 bitmapdir!$bitmapdir$ac_delim
-gamedir!$gamedir$ac_delim
-gameuser!$gameuser$ac_delim
-c_switch_system!$c_switch_system$ac_delim
-c_switch_machine!$c_switch_machine$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -23935,6 +24567,10 @@ _ACEOF
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+gamedir!$gamedir$ac_delim
+gameuser!$gameuser$ac_delim
+c_switch_system!$c_switch_system$ac_delim
+c_switch_machine!$c_switch_machine$ac_delim
 LD_SWITCH_X_SITE!$LD_SWITCH_X_SITE$ac_delim
 LD_SWITCH_X_SITE_AUX!$LD_SWITCH_X_SITE_AUX$ac_delim
 C_SWITCH_X_SITE!$C_SWITCH_X_SITE$ac_delim
@@ -23945,7 +24581,7 @@ carbon_appdir!$carbon_appdir$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 8; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 12; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
index 315c033aeaa62fb293805e3cacb5f320e10c0fb2..0f101a0edc340e4560d05b531f9295082dd1e02f 100644 (file)
@@ -3,8 +3,8 @@ dnl To rebuild the `configure' script from this, execute the command
 dnl    autoconf
 dnl in the directory containing this script.
 dnl
-dnl  Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-dnl  Free Software Foundation, Inc.
+dnl  Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003,
+dnl    2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 dnl
 dnl  This file is part of GNU Emacs.
 dnl
@@ -42,25 +42,33 @@ gamedir='${localstatedir}/games/emacs'
 
 gameuser=games
 
-AC_ARG_WITH(gcc,
-[  --without-gcc           don't use GCC to compile Emacs if GCC is found])
-AC_ARG_WITH(pop,
-[  --without-pop           don't support POP mail retrieval with movemail],
+dnl Autoconf is so much less fun under VMS, maybe
+dnl because everything is less fun under VMS. --ttn
+AC_DEFUN([EMACS_ARG_Y],[dnl
+AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[$3],[$4])dnl
+])dnl
+AC_DEFUN([EMACS_ARG_N],[dnl
+AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[$3],[$4])dnl
+])dnl
+
+EMACS_ARG_N([gcc],[don't use GCC to compile Emacs if GCC is found])
+
+EMACS_ARG_N([pop],[don't support POP mail retrieval with movemail],
 [if test "$withval" = yes; then
    AC_DEFINE(MAIL_USE_POP)
 else :
 fi],
 AC_DEFINE(MAIL_USE_POP))
 AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
-AC_ARG_WITH(kerberos,
-[  --with-kerberos         support Kerberos-authenticated POP],
+
+EMACS_ARG_Y([kerberos],[support Kerberos-authenticated POP],
 [if test "$withval" = yes; then
    AC_DEFINE(KERBEROS)
 fi])
 AH_TEMPLATE(KERBEROS,
            [Define to support Kerberos-authenticated POP mail retrieval.])dnl
-AC_ARG_WITH(kerberos5,
-[  --with-kerberos5        support Kerberos version 5 authenticated POP],
+
+EMACS_ARG_Y([kerberos5],[support Kerberos version 5 authenticated POP],
 [if test "${with_kerberos5+set}" = set; then
   if test "${with_kerberos+set}" != set; then
     with_kerberos=yes
@@ -68,75 +76,64 @@ AC_ARG_WITH(kerberos5,
   fi
   AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
 fi])
-AC_ARG_WITH(hesiod,
-[  --with-hesiod           support Hesiod to get the POP server host],
+
+EMACS_ARG_Y([hesiod],[support Hesiod to get the POP server host],
 [if test "$withval" = yes; then
   AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
 fi])
 
-AC_ARG_WITH(sound,
-[  --without-sound         don't compile with sound support])
+EMACS_ARG_N([sound],[don't compile with sound support])
 
 dnl This should be the last --with option, because --with-x is
 dnl added later on when we find the path of X, and it's best to
 dnl keep them together visually.
-AC_ARG_WITH(x-toolkit,
-[  --with-x-toolkit=KIT    use an X toolkit
-                              (KIT = yes/lucid/athena/motif/gtk/no)],
+AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
+ [use an X toolkit (KIT one of: yes, lucid, athena, motif, gtk, no)])],
 [        case "${withval}" in
-           y | ye | yes )      val=athena ;;
+           y | ye | yes )      val=gtk ;;
            n | no )            val=no  ;;
            l | lu | luc | luci | lucid )       val=lucid ;;
            a | at | ath | athe | athen | athena )      val=athena ;;
            m | mo | mot | moti | motif )       val=motif ;;
            g | gt | gtk  )     val=gtk ;;
-dnl These don't currently work.
-dnl        o | op | ope | open | open- | open-l | open-lo \
-dnl            | open-loo | open-look )        val=open-look ;;
            * )
-dnl AC_MSG_ERROR([the `--with-x-toolkit' option is supposed to have a value
-dnl which is `yes', `no', `lucid', `athena', `motif' or `open-look'.])
-AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid\;
+AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
 this option's value should be `yes', `no', `lucid', `athena', `motif' or `gtk'.
-Currently, `yes', `athena' and `lucid' are synonyms.])
+`yes' and `gtk' are synonyms. `athena' and `lucid' are synonyms.])
            ;;
          esac
          with_x_toolkit=$val
 ])
-AC_ARG_WITH(xpm,
-[  --with-xpm              use -lXpm for displaying XPM images])
-AC_ARG_WITH(jpeg,
-[  --with-jpeg             use -ljpeg for displaying JPEG images])
-AC_ARG_WITH(tiff,
-[  --with-tiff             use -ltiff for displaying TIFF images])
-AC_ARG_WITH(gif,
-[  --with-gif              use -lungif for displaying GIF images])
-AC_ARG_WITH(png,
-[  --with-png              use -lpng for displaying PNG images])
-AC_ARG_WITH(gtk,
-[  --with-gtk              use GTK (same as --with-x-toolkit=gtk)])
-AC_ARG_WITH(pkg-config-prog,
-[  --with-pkg-config-prog  Path to pkg-config to use for finding GTK])
-AC_ARG_WITH(toolkit-scroll-bars,
-[  --without-toolkit-scroll-bars
-                          don't use Motif or Xaw3d scroll bars])
-AC_ARG_WITH(xim,
-[  --without-xim           don't use X11 XIM])
-AC_ARG_WITH(carbon,
-[  --without-carbon        don't use Carbon GUI on Mac OS X])
+
+EMACS_ARG_Y([xpm],[use -lXpm for displaying XPM images])
+EMACS_ARG_Y([jpeg],[use -ljpeg for displaying JPEG images])
+EMACS_ARG_Y([tiff],[use -ltiff for displaying TIFF images])
+EMACS_ARG_Y([gif],[use -lgif (or -lungif) for displaying GIF images])
+EMACS_ARG_Y([png],[use -lpng for displaying PNG images])
+EMACS_ARG_Y([gpm],[use -lgpm for mouse support on a GNU/Linux console])
+EMACS_ARG_Y([rsvg],[use -lrsvg-2 for displaying SVG images])
+EMACS_ARG_Y([gtk],[use GTK (same as --with-x-toolkit=gtk)])
+EMACS_ARG_Y([pkg-config-prog],[Path to pkg-config for finding GTK and librsvg])
+EMACS_ARG_N([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
+EMACS_ARG_N([xaw3d],[don't use Xaw3d])
+EMACS_ARG_N([xim],[don't use X11 XIM])
+EMACS_ARG_N([carbon],[don't use Carbon GUI on Mac OS X])
+
 AC_ARG_ENABLE(carbon-app,
-[[  --enable-carbon-app[=DIR]  [DIR=/Application]
-                          specify install directory for Emacs.app on Mac OS X]],
+[AS_HELP_STRING([--enable-carbon-app@<:@=DIR@:>@],
+                [specify install directory for Emacs.app on Mac OS X
+                [DIR=/Application]])],
 [ carbon_appdir_x=${enableval}])
 
 AC_ARG_ENABLE(asserts,
-[  --enable-asserts        compile code with asserts enabled],
+[AS_HELP_STRING([--enable-asserts], [compile code with asserts enabled])],
       USE_XASSERTS=$enableval,
       USE_XASSERTS=no)
 
 AC_ARG_ENABLE(maintainer-mode,
-[  --enable-maintainer-mode enable make rules and dependencies not useful
-                          (and sometimes confusing) to the casual installer],
+[AS_HELP_STRING([--enable-maintainer-mode],
+                [enable make rules and dependencies not useful (and sometimes
+                confusing) to the casual installer])],
       USE_MAINTAINER_MODE=$enableval,
       USE_MAINTAINER_MODE=no)
 if test $USE_MAINTAINER_MODE = yes; then
@@ -147,9 +144,9 @@ fi
 AC_SUBST(MAINT)
 
 AC_ARG_ENABLE(locallisppath,
-[  --enable-locallisppath=PATH
-                          directories Emacs should search for lisp files
-                          specific to this site],
+[AS_HELP_STRING([--enable-locallisppath=PATH],
+                [directories Emacs should search for lisp files specific
+                to this site])],
 if test "${enableval}" = "no"; then
   locallisppath=
 elif test "${enableval}" != "yes"; then
@@ -198,7 +195,7 @@ fi
 
 AC_CANONICAL_HOST
 canonical=$host
-configuration=${host_alias-$host}
+configuration=${host_alias-${build_alias-$host}}
 
 dnl This used to use changequote, but, apart from `changequote is evil'
 dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
@@ -1030,14 +1027,8 @@ dnl see the `changequote' comment above.
                ;;
       *-sunos5* | *-solaris* )
                opsys=sol2-6
-## FIXME: make this into a proper fix that checks the compiler type,
-## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now?
-               if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
-                 ## -Xs prevents spurious whitespace.
-                 NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
-               else
-                 NON_GNU_CPP=/usr/ccs/lib/cpp
-               fi
+               emacs_check_sunpro_c=yes
+               NON_GNU_CPP=/usr/ccs/lib/cpp
                ;;
       *                          ) opsys=bsd4-2   ;;
     esac
@@ -1273,6 +1264,24 @@ 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
+  AC_MSG_CHECKING([whether we are using a Sun C compiler])
+  AC_CACHE_VAL(emacs_cv_sunpro_c,
+  [AC_TRY_LINK([],
+[#ifndef __SUNPRO_C
+fail;
+#endif
+], emacs_cv_sunpro_c=yes, emacs_cv_sunpro_c=no)])
+  AC_MSG_RESULT($emacs_cv_sunpro_c)
+
+  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.
@@ -1332,6 +1341,21 @@ AC_PATH_PROG(INSTALL_INFO, install-info,:, /sbin)
 dnl Don't use GZIP, which is used by gzip for additional parameters.
 AC_PATH_PROG(GZIP_PROG, gzip)
 
+
+## Need makeinfo >= 4.6 (?) to build the manuals.
+AC_PATH_PROG(MAKEINFO, makeinfo, no)
+dnl By this stage, configure has already checked for egrep and set EGREP, 
+dnl or exited with an error if no egrep was found.
+if test "$MAKEINFO" != "no" && \
+  test x"`$MAKEINFO --version 2> /dev/null | $EGREP 'texinfo[[^0-9]]*([[1-4]][[0-9]]+|[[5-9]]|4\.[[6-9]]|4\.[[1-5]][[0-9]]+)'`" = x; then
+   MAKEINFO=no    
+fi
+
+if test "$MAKEINFO" = "no"; then
+  AC_MSG_ERROR( [makeinfo >= 4.6 is required] )
+fi
+
+
 dnl Add our options to ac_link now, after it is set up.
 
 if test x$GCC = xyes && test "x$GCC_LINK_TEST_OPTIONS" != x
@@ -1860,15 +1884,20 @@ case "${window_system}" in
     case "${with_x_toolkit}" in
       athena | lucid ) USE_X_TOOLKIT=LUCID ;;
       motif ) USE_X_TOOLKIT=MOTIF ;;
-dnl      open-look ) USE_X_TOOLKIT=OPEN_LOOK ;;
       gtk ) with_gtk=yes
 dnl Dont set this for GTK.  A lot of tests below assumes Xt when
 dnl USE_X_TOOLKIT is set.
             USE_X_TOOLKIT=none ;;
       no ) USE_X_TOOLKIT=none ;;
-dnl If user did not say whether to use a toolkit,
-dnl make this decision later: use the toolkit if we have X11R5 or newer.
-      * ) USE_X_TOOLKIT=maybe ;;
+dnl If user did not say whether to use a toolkit, make this decision later:
+dnl use the toolkit if we have gtk, or X11R5 or newer.
+      * ) 
+          if test x"$with_gtk" = xyes; then
+             USE_X_TOOLKIT=none
+          else
+             USE_X_TOOLKIT=maybe
+          fi
+          ;;
     esac
   ;;
   mac | none )
@@ -1878,6 +1907,22 @@ dnl make this decision later: use the toolkit if we have X11R5 or newer.
   ;;
 esac
 
+if test "$window_system" = none && test "X$with_x" != "Xno"; then
+   AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
+   if test "$HAVE_XSERVER" = true ||
+      test -n "$DISPLAY" || 
+      test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
+        AC_MSG_ERROR([You seem to be running X, but no X development libraries
+were found.  You should install the relevant development files for X
+and for the toolkit you want, such as Gtk+, Lesstif or Motif.  Also make
+sure you have development files for image handling, i.e.
+tiff, gif, jpeg, png and xpm.
+If you are sure you want Emacs compiled without X window support, pass
+  --without-x
+to configure.])
+   fi
+fi
+
 ### If we're using X11, we should use the X menu package.
 HAVE_MENUS=no
 case ${HAVE_X11} in
@@ -2092,11 +2137,38 @@ fail;
   fi
 fi
 
+### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
+HAVE_RSVG=no
+if test "${HAVE_X11}" = "yes" || test "${HAVE_CARBON}" = "yes"; then
+  if test "${with_rsvg}" != "no"; then
+    dnl Check if `--with-pkg-config-prog' has been given.
+    if test "X${with_pkg_config_prog}" != X; then
+      PKG_CONFIG="${with_pkg_config_prog}"
+    fi
+
+    RSVG_REQUIRED=2.0.0
+    RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
+
+    PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, :, :)
+    AC_SUBST(RSVG_CFLAGS)
+    AC_SUBST(RSVG_LIBS)
+
+    if test ".${RSVG_CFLAGS}" != "."; then
+      HAVE_RSVG=yes
+      AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
+      CFLAGS="$CFLAGS $RSVG_CFLAGS"
+      LIBS="$RSVG_LIBS $LIBS"
+    fi
+  fi
+fi
+
+
 HAVE_GTK=no
 if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then
   USE_X_TOOLKIT=none
 fi
-if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
+if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk" || \
+ test "$USE_X_TOOLKIT" = "maybe"; then
   if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then
     AC_MSG_ERROR([Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}]);
   fi
@@ -2109,7 +2181,15 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
     PKG_CONFIG="${with_pkg_config_prog}"
   fi
   dnl Checks for libraries.
-  PKG_CHECK_MODULES(GTK, $GTK_MODULES)
+  PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
+  if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
+     AC_MSG_ERROR($GTK_PKG_ERRORS)
+  fi
+fi
+
+
+if test x"$pkg_check_gtk" = xyes; then
+
   AC_SUBST(GTK_CFLAGS)
   AC_SUBST(GTK_LIBS)
   C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
@@ -2119,12 +2199,19 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
   GTK_COMPILES=no
   AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
   if test "${GTK_COMPILES}" != "yes"; then
-    AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?]);
+    if test "$USE_X_TOOLKIT" != "maybe"; then
+      AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?]);
+    fi
+  else
+    HAVE_GTK=yes
+    AC_DEFINE(HAVE_GTK, 1, [Define to 1 if using GTK.])
+    USE_X_TOOLKIT=none
   fi
-  
-  HAVE_GTK=yes
-  AC_DEFINE(HAVE_GTK, 1, [Define to 1 if using GTK.])
-  USE_X_TOOLKIT=none
+
+fi
+
+
+if test "${HAVE_GTK}" = "yes"; then
 
   dnl  GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
   dnl  a lot if #ifdef:s, say we have toolkit scrollbars.
@@ -2140,6 +2227,7 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
     AC_DEFINE(HAVE_GTK_MULTIDISPLAY, 1,
               [Define to 1 if GTK can handle more than one display.])
   fi
+
   dnl  Check if we have the old file selection dialog.
   dnl  If gdk_display_open exists, assume all others are there also.
   HAVE_GTK_FILE_SELECTION=no
@@ -2192,7 +2280,7 @@ if test "${HAVE_GTK}" = "yes"; then
     CFLAGS="$CFLAGS $XFT_CFLAGS"
     LIBS="$XFT_LIBS $LIBS"
     AC_CHECK_HEADER(X11/Xft/Xft.h,
-      AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS))
+      [AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS)])
 
     if test "${HAVE_XFT}" = "yes"; then
       AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
@@ -2208,29 +2296,49 @@ fi
 
 dnl Do not put whitespace before the #include statements below.
 dnl Older compilers (eg sunos4 cc) choke on it.
+HAVE_XAW3D=no
 if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
-  if test x"${HAVE_X11R5}" = xyes; then
-    AC_MSG_CHECKING(X11 version 5 with Xaw)
-    AC_CACHE_VAL(emacs_cv_x11_version_5_with_xaw,
-    [AC_TRY_LINK([
+  if test x"${HAVE_X11R5}" != xyes; then
+    USE_X_TOOLKIT=none
+  else
+    if test "$with_xaw3d" != no; then
+      AC_MSG_CHECKING(for xaw3d)
+      AC_CACHE_VAL(emacs_cv_xaw3d,
+      [AC_TRY_LINK([
 #include <X11/Intrinsic.h>
-#include <X11/Xaw/Simple.h>],
-      [],
-      emacs_cv_x11_version_5_with_xaw=yes,
-      emacs_cv_x11_version_5_with_xaw=no)])
-    if test $emacs_cv_x11_version_5_with_xaw = yes; then
-      AC_MSG_RESULT([5 or newer, with Xaw; use toolkit by default])
+#include <X11/Xaw3d/Simple.h>],
+        [],
+        emacs_cv_xaw3d=yes,
+        emacs_cv_xaw3d=no)])
+    else
+      emacs_cv_xaw3d=no
+    fi
+    if test $emacs_cv_xaw3d = yes; then
+      AC_MSG_RESULT([yes; using Lucid toolkit])
       USE_X_TOOLKIT=LUCID
+      HAVE_XAW3D=yes
+      AC_DEFINE(HAVE_XAW3D, 1,
+                [Define to 1 if you have the Xaw3d library (-lXaw3d).])
     else
-      if test x"${USE_X_TOOLKIT}" = xLUCID; then
+      AC_MSG_RESULT(no)
+      AC_MSG_CHECKING(for libXaw)
+      AC_CACHE_VAL(emacs_cv_xaw,
+      [AC_TRY_LINK([
+#include <X11/Intrinsic.h>
+#include <X11/Xaw/Simple.h>],
+        [],
+        emacs_cv_xaw=yes,
+        emacs_cv_xaw=no)])
+      if test $emacs_cv_xaw = yes; then
+        AC_MSG_RESULT([yes; using Lucid toolkit])
+        USE_X_TOOLKIT=LUCID
+      elif test x"${USE_X_TOOLKIT}" = xLUCID; then
         AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
       else
-        AC_MSG_RESULT(before 5 or no Xaw; do not use toolkit by default)
+        AC_MSG_RESULT([no; do not use toolkit by default])
         USE_X_TOOLKIT=none
       fi
     fi
-  else
-    USE_X_TOOLKIT=none
   fi
 fi
 
@@ -2318,21 +2426,6 @@ Motif version prior to 2.1.
   fi
 fi
 
-### Is -lXaw3d available?
-HAVE_XAW3D=no
-if test "${HAVE_X11}" = "yes"; then
-  if test "${USE_X_TOOLKIT}" != "none" && test "${with_toolkit_scroll_bars}" != "no"; then
-    dnl Fixme: determine what Scrollbar.h needs to avoid compilation
-    dnl errors from the test without the `-'.
-    AC_CHECK_HEADER(X11/Xaw3d/Scrollbar.h,
-       [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb, HAVE_XAW3D=yes)], , -)
-    if test "${HAVE_XAW3D}" = "yes"; then
-       AC_DEFINE(HAVE_XAW3D, 1,
-                 [Define to 1 if you have the Xaw3d library (-lXaw3d).])
-    fi
-  fi
-fi
-
 dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
 dnl using Motif or Xaw3d is available, and unless
 dnl --with-toolkit-scroll-bars=no was specified.
@@ -2364,8 +2457,8 @@ AC_TRY_COMPILE([
          #include <X11/Xlib.h>
          #include <X11/Xresource.h>],
         [XIMProc  callback;],
-        HAVE_XIM=yes
-        AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available]),
+        [HAVE_XIM=yes
+        AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
         HAVE_XIM=no)
 
 dnl `--with-xim' now controls only the initial value of use_xim at run time.
@@ -2415,7 +2508,7 @@ HAVE_XPM=no
 if test "${HAVE_X11}" = "yes"; then
   if test "${with_xpm}" != "no"; then
     AC_CHECK_HEADER(X11/xpm.h,
-      AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11))
+      [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
     if test "${HAVE_XPM}" = "yes"; then
       AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
       AC_EGREP_CPP(no_return_alloc_pixels,
@@ -2445,7 +2538,7 @@ if test "${HAVE_X11}" = "yes"; then
     dnl Checking for jpeglib.h can lose because of a redefinition of
     dnl  HAVE_STDLIB_H.
     AC_CHECK_HEADER(jerror.h,
-      AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes))
+      [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
   fi
 
   AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
@@ -2455,7 +2548,7 @@ if test "${HAVE_X11}" = "yes"; then
         [#include <jpeglib.h>
         version=JPEG_LIB_VERSION
 ],
-        AC_DEFINE(HAVE_JPEG),
+        [AC_DEFINE(HAVE_JPEG)],
         [AC_MSG_WARN([libjpeg found, but not version 6b or later])
         HAVE_JPEG=no])
   fi
@@ -2483,10 +2576,10 @@ HAVE_TIFF=no
 if test "${HAVE_X11}" = "yes"; then
   if test "${with_tiff}" != "no"; then
     AC_CHECK_HEADER(tiffio.h,
-      tifflibs="-lz -lm"
+      [tifflibs="-lz -lm"
       # At least one tiff package requires the jpeg library.
       if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
-      AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs))
+      AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
   fi
 
   if test "${HAVE_TIFF}" = "yes"; then
@@ -2494,23 +2587,71 @@ if test "${HAVE_X11}" = "yes"; then
   fi
 fi
 
-### Use -lgif if available, unless `--with-gif=no'.
+### Use -lgif or -lungif if available, unless `--with-gif=no'.
 HAVE_GIF=no
-if test "${HAVE_X11}" = "yes"; then
-  if test "${with_gif}" != "no"; then
-    AC_CHECK_HEADER(gif_lib.h,
+if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
+  AC_CHECK_HEADER(gif_lib.h,
 # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
 # Earlier versions can crash Emacs.
-      AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes))
+    [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, try_libungif=yes)])
+
+  if test "$HAVE_GIF" = yes; then
+      ac_gif_lib_name="-lgif"
+  fi
+
+# If gif_lib.h but no libgif, try libungif.
+  if test x"$try_libungif" = xyes; then
+    AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes)
+
+    if test "$HAVE_GIF" = yes; then
+      AC_DEFINE(LIBGIF, -lungif, [Compiler option to link with the gif library (if not -lgif).])
+      ac_gif_lib_name="-lungif"
+    fi
   fi
 
   if test "${HAVE_GIF}" = "yes"; then
-    AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have the ungif library (-lungif).])
+    AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif library (default -lgif; otherwise specify with LIBGIF).])
+  fi
+fi
+
+dnl Check for required libraries.
+if test "${HAVE_X11}" = "yes"; then
+  MISSING=""
+  WITH_NO=""
+  test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
+    MISSING="libXpm" && WITH_NO="--with-xpm=no"
+  test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
+    MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
+  test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
+    MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
+  test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
+    MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
+  test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
+    MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
+
+  if test "X${MISSING}" != X; then
+    AC_MSG_ERROR([The following required libraries were not found:
+    $MISSING
+Maybe some development libraries/packages are missing?
+If you don't want to link with them give
+    $WITH_NO
+as options to configure])
   fi
 fi
 
+### Use -lgpm if available, unless `--with-gpm=no'.
+HAVE_GPM=no
+if test "${with_gpm}" != "no"; then
+  AC_CHECK_HEADER(gpm.h,
+    [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
+fi
+
+if test "${HAVE_GPM}" = "yes"; then
+  AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
+fi
+
 dnl Check for malloc/malloc.h on darwin
-AC_CHECK_HEADER(malloc/malloc.h, AC_DEFINE(HAVE_MALLOC_MALLOC_H, 1, [Define to 1 if you have the <malloc/malloc.h> header file.]))
+AC_CHECK_HEADER(malloc/malloc.h, [AC_DEFINE(HAVE_MALLOC_MALLOC_H, 1, [Define to 1 if you have the <malloc/malloc.h> header file.])])
 
 ### Use Mac OS X Carbon API to implement GUI.
 if test "${HAVE_CARBON}" = "yes"; then
@@ -2531,7 +2672,7 @@ fi
 HAVE_X_SM=no
 if test "${HAVE_X11}" = "yes"; then
   AC_CHECK_HEADER(X11/SM/SMlib.h,
-    AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE))
+    [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
 
   if test "${HAVE_X_SM}" = "yes"; then
     AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
@@ -2554,6 +2695,13 @@ fi
 
 AC_FUNC_ALLOCA
 
+dnl src/alloca.c has been removed.  Could also check if $ALLOCA is set?
+dnl FIXME is there an autoconf test that does the right thing, without
+dnl needing to call A_M_E afterwards?
+if test x"$ac_cv_func_alloca_works" != xyes; then
+   AC_MSG_ERROR( [a system implementation of alloca is required] )
+fi
+
 # fmod, logb, and frexp are found in -lm on most systems.
 # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
 AC_CHECK_LIB(m, sqrt)
@@ -2642,8 +2790,8 @@ if test "$with_hesiod" = yes ; then
     RESOLVLIB=
   fi
   AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
-       AC_DEFINE(HAVE_LIBHESIOD, 1,
-                 [Define to 1 if you have the hesiod library (-lhesiod).]),
+       [AC_DEFINE(HAVE_LIBHESIOD, 1,
+                 [Define to 1 if you have the hesiod library (-lhesiod).])],
        :, $RESOLVLIB)])
 fi
 
@@ -2655,9 +2803,9 @@ if test "${with_kerberos+set}" = set; then
   AC_CHECK_LIB(krb5, krb5_init_context)
   if test "${with_kerberos5+set}" != set; then
     AC_CHECK_LIB(des425, des_cbc_encrypt,,
-                AC_CHECK_LIB(des, des_cbc_encrypt))
+                [AC_CHECK_LIB(des, des_cbc_encrypt)])
     AC_CHECK_LIB(krb4, krb_get_cred,,
-                AC_CHECK_LIB(krb, krb_get_cred))
+                [AC_CHECK_LIB(krb, krb_get_cred)])
   fi
 
   if test "${with_kerberos5+set}" = set; then
@@ -2940,6 +3088,7 @@ if test "${REL_ALLOC}" = "yes" ; then
             buffer space.])
 fi
 
+
 AH_TOP([/* GNU Emacs site configuration template file.
    Copyright (C) 1988, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007
              Free Software Foundation, Inc.
@@ -2977,6 +3126,13 @@ AH_BOTTOM([
 #define HAVE_MOUSE
 #endif
 
+/* Multi-tty support relies on MULTI_KBOARD.  It seems safe to turn it
+   on unconditionally.  Note that src/s/darwin.h disables this at
+   present.  */
+#ifndef MULTI_KBOARD
+#define MULTI_KBOARD
+#endif
+
 /* If we're using the Carbon API on Mac OS X, define a few more
    variables as well.  */
 #ifdef HAVE_CARBON
@@ -3267,8 +3423,10 @@ echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
 echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
 echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
-echo "  Does Emacs use -lungif?                                 ${HAVE_GIF}"
+echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $ac_gif_lib_name"
 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
+echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
+echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
 echo "  Does Emacs use X toolkit scroll bars?                   ${USE_TOOLKIT_SCROLL_BARS}"
 echo
 
@@ -3307,8 +3465,9 @@ AC_EGREP_CPP(yes..yes,
        CPP_NEED_TRADITIONAL=yes)
 
 AC_OUTPUT(Makefile lib-src/Makefile.c:lib-src/Makefile.in oldXMenu/Makefile \
-       man/Makefile lwlib/Makefile src/Makefile.c:src/Makefile.in \
-       lisp/Makefile lispref/Makefile lispintro/Makefile leim/Makefile, [
+       doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
+       doc/lispref/Makefile src/Makefile.c:src/Makefile.in \
+       lwlib/Makefile lisp/Makefile leim/Makefile, [
 
 ### Make the necessary directories, if they don't exist.
 for dir in etc lisp ; do
similarity index 100%
rename from man/.gitignore
rename to doc/emacs/.gitignore
similarity index 59%
rename from man/ChangeLog
rename to doc/emacs/ChangeLog
index 6b8affa4888903766168faf807d9035cfe43361a..9d5e6158f3ff0d797f0d37286b1315fa2b0008bc 100644 (file)
@@ -1,7 +1,32 @@
+2007-10-13  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * files.texi: Capitalize node names according to convention.
+
 2007-10-13  Glenn Morris  <rgm@gnu.org>
 
        * misc.texi (Interactive Shell): Correct INSIDE_EMACS reference.
 
+2007-10-11  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * emacs.texi:
+       * files.texi (Version Systems): Minor fixes to version-control material
+       suggseted by RMS and Robert J. Chassell.
+
+2007-10-10  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * files.texi (Version Systems):
+       * vc-xtra.texi:
+       * vc1-xtra.texi:
+       * vc2-xtra.texi: Merge in changes for new VC with fileset-oriented
+       operations.  Change of terminology from 'version' to `revision'.
+       Revise text for adequate description of VCSes with monotonic IDs.
+       * emacs.texi: Change of terminology from 'version' to `revision'.
+
+2007-10-09  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * files.texi (Version Systems): Describe newer VCses.
+       Reorder the descriptions to be chronological.
+
 2007-10-09  Richard Stallman  <rms@gnu.org>
 
        * display.texi (Cursor Display): Correct how cursor appears
        * building.texi (GDB Graphical Interface): Remove references to gdba
        and mention gud-gdb.
 
-2007-09-29  Juri Linkov  <juri@jurta.org>
+2007-08-31  Eli Zaretskii  <eliz@gnu.org>
 
-       * info.texi (Help-Int): Document `L' (`Info-history').
+       * rmail.texi (Rmail Sorting): Improve indexing.
 
-2007-09-20  Eduard Wiebe  <usenet@pusto.de>  (tiny change)
+2007-10-06  Juri Linkov  <juri@jurta.org>
 
-       * flymake.texi (Customizable variables): Face names don't end in -face.
-       Fix flymake-err-line-patterns template.
-       (Example -- Configuring a tool called directly): Fix init-function.
-       (Highlighting erroneous lines): Face names don't end in -face.
+       * text.texi (Fill Commands): Document fill-paragraph-or-region.
+       (Fill Prefix, Format Indentation): Replace fill-paragraph with
+       fill-paragraph-or-region.
 
-2007-09-05  Glenn Morris  <rgm@gnu.org>
+       * basic.texi (Arguments): Replace fill-paragraph with
+       fill-paragraph-or-region.
 
-       * custom.texi (Safe File Variables): Clarify `!' and risky variables.
+2007-10-06  Eric S. Raymond  <esr@snark.thyrsus.com>
 
-2007-08-31  Eli Zaretskii  <eliz@gnu.org>
+       * files.texi: Update the section on version control for 2007
+       conditions. None of these changes are new-VC-specific; that
+       will come later.
 
-       * rmail.texi (Rmail Sorting): Improve indexing.
+2007-09-15  Glenn Morris  <rgm@gnu.org>
+
+       * calendar.texi (Holidays): Change all instances of `holiday-list' back
+       to `list-holidays'.
+
+2007-09-14  Glenn Morris  <rgm@gnu.org>
+
+       * calendar.texi: Update all instances of mark-calendar-holidays,
+       list-calendar-holidays, list-holidays with the new names.
+
+2007-09-06  Glenn Morris  <rgm@gnu.org>
 
-2007-08-24  IRIE Tetsuya  <irie@t.email.ne.jp>  (tiny change)
+       * Move manual sources from man/ to subdirectories of doc/.
+       Split into the Emacs manual in emacs/, and other manuals in misc/.
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Reduce to just the Emacs
+       manual.
+       (infodir): New variable.
+       (info): Use $infodir.
+       (emacsman): Delete target, not needed any more.
+       Move all targets that are not the Emacs manual to misc/Makefile.in.
+       (mostlyclean): Remove `gnustmp'.
+       * makefile.w32-in (INFO_TARGETS, DVI_TARGETS): Reduce to just the Emacs
+       manual.
+       (MULTI_INSTALL_INFO, ENVADD, infodir): Go up one more level.
+       (emacsman): Delete target, not needed any more.
+       (clean): Remove all info files but Emacs manual.
+       Move all targets that are not the Emacs manual to misc/Makefile.in.
+       * emacs-xtra.texi, emacs.texi (setfilename): Go up one more level.
+
+       * Makefile.in (INFOSOURCES): Delete.
+       (.SUFFIXES): Use $(TEXI2DVI) rather than texi2dvi.
+       (mostlyclean): Add *.op, *.ops.  Move *.aux *.cps *.fns *.kys *.pgs
+       *.vrs *.toc here...
+       (maintainer-clean): ...from here.
+
+2007-09-05  Glenn Morris  <rgm@gnu.org>
+
+       * custom.texi (Safe File Variables): Clarify `!' and risky variables.
 
-       * message.texi (MIME): Replace mml-attach with mml-attach-file.
+2007-08-29  Glenn Morris  <rgm@gnu.org>
+
+       * emacs.texi (EMACSVER): Increase to 23.0.50.
 
 2007-08-27  Richard Stallman  <rms@gnu.org>
 
        * display.texi (Faces): Change secn title.
        Clarify not all fonts come from Font Lock.
 
-2007-08-14  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Selecting a Group): Mention gnus-maximum-newsgroup.
-
 2007-08-17  Eli Zaretskii  <eliz@gnu.org>
 
        * basic.texi (Position Info): Add index entry for face at point.
        Mention that character faces are also displayed by "C-u C-x =".
 
-2007-08-10  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (NNTP): Mention nntp-xref-number-is-evil.
-
 2007-08-08  Glenn Morris  <rgm@gnu.org>
 
        * glossary.texi (Glossary): Deprecate `iff'.
-       * gnus.texi, sieve.texi: Replace `iff'.
 
 2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
 
        * files.texi (File Conveniences): Document point motion keys in Image
        mode.
 
-2007-08-01  Alan Mackenzie  <acm@muc.de>
+2007-07-27  Glenn Morris  <rgm@gnu.org>
 
-       * cc-mode.texi (Mailing Lists and Bug Reports): Correct "-no-site-file"
-       to "--no-site-file".
+       * emacs.texi (Copying): Include license text from gpl.texi, rather than
+       in-line.
+
+       * gpl.texi: New file with text of GPL.
+       * Makefile.in (EMACSSOURCES): Add gpl.texi.
 
-2007-07-30  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-07-26  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * vc2-xtra.texi (Customizing VC): Add GIT and HG.
 
+       * dired.texi (Wdired): Mention C-x C-q key binding.
+
 2007-07-28  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (GDB Graphical Interface): Qualify use of "M-x gdba".
 
-2007-07-27  Glenn Morris  <rgm@gnu.org>
-
-       * calc.texi (Copying)
-       * emacs.texi (Copying): Include license text from gpl.texi, rather than
-       in-line.
-
-       * gpl.texi: New file with text of GPL.
-       * Makefile.in (EMACSSOURCES): Add gpl.texi.
-
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
-       * calc.texi (Copying)
        * emacs.texi (Copying): Replace license with GPLv3.
 
        * Relicense all FSF files to GPLv3 or later.
        * calendar.texi (Writing Calendar Files): cal-tex-diary etc only work
        for some calendars.
 
-2007-07-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (../info/emacs-mime): Use --enable-encoding.
+2007-07-23  Nick Roberts  <nickrob@snap.net.nz>
 
-       * makefile.w32-in ($(infodir)/emacs-mime): Ditto.
+       * screen.texi (Mode Line): Describe new mode-line flag that shows if
+       default-directory for the current buffer is on a remote machine.
 
-       * emacs-mime.texi: Add @documentencoding directive.
+2007-07-21  Eli Zaretskii  <eliz@gnu.org>
 
-2007-07-02  Reiner Steib  <Reiner.Steib@gmx.de>
+       * vc2-xtra.texi (Customizing VC) <vc-handled-backends>: Update the
+       default value.
 
-       * gnus-faq.texi ([3.2]): Fix locating of environment variables in the
-       Control Panel.
+2007-07-21  Richard Stallman  <rms@gnu.org>
 
-       * gnus.texi (Misc Article): Add index entry for
-       gnus-single-article-buffer.
+       * files.texi (Why Version Control?): Improve previous change.
 
-2007-06-27  Andreas Seltenreich  <andreas@gate450.dyndns.org>
+2007-07-18  Eric S. Raymond  <esr@snark.thyrsus.com>
 
-       * gnus.texi (Starting Up): Fix typo.
+       * files.texi (Why Version Control?): New node.
 
-2007-06-25  Katsumi Yamaoka  <yamaoka@jpl.org>
+2007-07-12  Nick Roberts  <nickrob@snap.net.nz>
 
-       * gnus.texi (Asynchronous Fetching): Fix typo.
+       * building.texi (Starting GUD): Add xref to this anchor.
 
-2007-06-24  Karl Berry  <karl@tug.org>
+2007-06-24  Karl Berry  <karl@gnu.org>
 
        * emacs.texi: new Back-Cover Text.
 
-2007-06-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.56.
-
-       * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc
-       settings.  Reported by Ted Zlatanov <tzz@lifelogs.com>.
-
 2007-06-07  Alan Mackenzie  <acm@muc.de>
 
        * display.texi (Optional Mode Line): Document the new form of
 
 2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
 
-       * cc-mode.texi (Comment Commands, Getting Started, Style Variables):
-       * gnus.texi (Article Buttons, Mail Source Customization)
-       (Sending or Not Sending, Customizing NNDiary):
-       * maintaining.texi (Create Tags Table):
-       * message.texi (Message Headers):
-       * mh-e.texi (HTML): Fix typos.
+       * maintaining.texi (Create Tags Table): Fix typos.
 
 2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * Version 22.1 released.
 
-2007-05-26  Michael Olson  <mwolson@gnu.org>
+2007-05-07  Karl Berry  <karl@gnu.org>
 
-       * erc.texi (Modules): Fix references to completion modules.
+       * emacs.texi (EMACSVER): Back to 22.
 
-2007-05-10  Reiner Steib  <Reiner.Steib@gmx.de>
+2007-05-06  Richard Stallman  <rms@gnu.org>
 
-       * gnus.texi (Running NNDiary): Use ~/.gnus.el instead of gnusrc.
-
-2007-05-10  Didier Verna  <didier@xemacs.org>
-
-       * gnus.texi (Email Based Diary): New.  Proper documentation for the
-       nndiary back end and the gnus-diary library.
+       * maintaining.texi (Create Tags Table): Clean up previous change.
 
 2007-05-05  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 
        * maintaining.texi (Create Tags Table): Add text about the dangers of
-       making symbolic links to tags files.  (Clarified by RMS.)
+       making symbolic links to tags files.
 
-2007-05-04  Karl Berry  <karl@tug.org>
+2007-05-04  Karl Berry  <karl@gnu.org>
 
        * emacs.texi (EMACSVER) [smallbook]: 22.1 for printed version, not 22.
 
-2007-05-03  Karl Berry  <karl@tug.org>
+2007-05-03  Karl Berry  <karl@gnu.org>
 
        * emacs.texi (EMACSVER) [smallbook]: 22 for printed version.
 
        * .cvsignore (*.pdf): New entry.
 
-       * texinfo.tex: Update from current version for better pdf generation.
-
        * emacs.texi (\urlcolor, \linkcolor) [smallbook]: \let to \Black
        for printing.
 
 
        * ack.texi (Acknowledgments):
        * anti.texi (Antinews):
-       * faq.texi (New in Emacs 22):
        * programs.texi (Program Modes): Restore mention of python.el pending
        consideration of legal status.
 
 
        * files.texi (File Names): Fixes to ~ description on MS systems.
 
-2007-04-28  Karl Berry  <karl@gnu.org>
+2007-04-26  Glenn Morris  <rgm@gnu.org>
+
+       * emacs.texi (EMACSVER): Increase to 22.1.50.
+
+2007-04-25  Karl Berry  <karl@gnu.org>
 
        * emacs.texi: Improve line breaks on copyright page,
        similar layout to lispref, 8.5x11 by default.
 
        * dired.texi (Image-Dired): Improve line break, fix typo.
 
-2007-04-27  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * idlwave.texi: Minor updates for IDLWAVE 6.1.
-
 2007-04-24  Chong Yidong  <cyd@stupidchicken.com>
 
        * programs.texi (Program Modes):
-       * faq.texi (New in Emacs 22):
        * anti.texi (Antinews):
        * ack.texi (Acknowledgments): python.el removed.
 
-2007-04-23  Jay Belanger  <jay.p.belanger@gmail.com>
-
-       * calc.texi (Reporting bugs): Update maintainer's address.
-
 2007-04-23  Chong Yidong  <cyd@stupidchicken.com>
 
        * display.texi (Highlight Interactively): Correct description of
        * emacs.texi (Top): Update node listing.
 
        * files.texi (File Conveniences):
-       * ack.texi (Acknowledgments):
-       * faq.texi (New in Emacs 22): Rename "tumme" to "image-dired".
+       * ack.texi (Acknowledgments): Rename "tumme" to "image-dired".
 
 2007-04-21  Richard Stallman  <rms@gnu.org>
 
 
        * display.texi (Scrolling): Fix typo.
 
-2007-04-15  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Title page): Remove the date.
-       (Basic Arithmetic): Emphasize that / binds less strongly than *.
-       (The Standard Calc Interface): Change trail title.
-       (Floats): Mention that when non-decimal floats are entered, only
-       approximations are stored.
-       (Copying): Move to the appendices.
-       (GNU Free Documentation License): Add as an appendix.
-
 2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
 
-       * ada-mode.texi, autotype.texi, cc-mode.texi, cl.texi:
-       * dired-x.texi, ebrowse.texi, ediff.texi:
-       * emacs-mime.texi, erc.texi, eshell.texi:
-       * eudc.texi, flymake.texi, forms.texi, gnus.texi:
-       * idlwave.texi, message.texi, newsticker.texi, org.texi:
-       * pcl-cvs.texi, pgg.texi, rcirc.texi, reftex.texi, sc.texi:
-       * ses.texi, sieve.texi, smtpmail.texi, speedbar.texi:
-       * tramp.texi, url.texi, vip.texi, viper.texi, widget.texi:
-       * woman.texi: Include GFDL.
-
        * doclicense.texi: Remove node heading, so that it can be included by
        other files.
 
        * emacs.texi: Insert node heading for GFDL.
 
-       * dired-x.texi: Relicence under GFDL.  Remove date from title page.
-
-       * calc.texi (Algebraic Tutorial): Emphasize that / binds less strongly
-       than *.
-
-2007-04-14  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Formula syntax for Calc): Emphasize the operator precedence
-       in Calc.
-
 2007-04-14  Eli Zaretskii  <eliz@gnu.org>
 
        * cmdargs.texi (Colors): Qualify "color of window" index entry by
        * files.texi (File Conveniences): Add xref to Tumme.
        Delete text about Thumbnail mode.
 
-2007-04-09  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (New in Emacs 22): Mention improvements to the Windows and
-       Mac OS ports.  Make it clear that mouse-1 complements and doesn't
-       replace mouse-2.
-
 2007-04-09  Alan Mackenzie  <acm@muc.de>
 
        * cmdargs.texi (Initial Options): Call "inhibit-splash-screen" by its
        new name.  Insert concept index entries.
 
-2007-04-08  Richard Stallman  <rms@gnu.org>
-
-       * url.texi: Fix some indexing.
-       (Disk Caching): Drop discussion of old/other Emacs versions.
-
 2007-04-08  Chong Yidong  <cyd@stupidchicken.com>
 
        * display.texi (Standard Faces): Document prefix arg for
 
        * rmail.texi (Rmail Scrolling): Document rmail-end-of-message.
 
-       * woman.texi (Word at point, Interface Options): woman-topic-at-point
-       renamed to woman-use-topic-at-point.  Document new behavior.
-
 2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
 
-       * url.texi (Disk Caching): Say Emacs 21 "and later".
-
-       * cc-mode.texi (Font Locking Preliminaries): Link to Emacs manual node
-       on Font locking which now mentions JIT lock.
-
        * killing.texi (Deletion): Rewrite description of M-\ prefix argument.
 
        * files.texi (Misc File Ops): Rewrite description of
        insert-file-literally.
 
-2007-04-01  Michael Olson  <mwolson@gnu.org>
-
-       * erc.texi: Update for the ERC 5.2 release.
-
-2007-03-31  David Kastrup  <dak@gnu.org>
-
-       * woman.texi (Topic, Interface Options): Explain changes semantics of
-       woman-manpath in order to consider MANPATH_MAP entries.
-
 2007-03-31  Eli Zaretskii  <eliz@gnu.org>
 
        * misc.texi (Printing): Postscript -> PostScript.
 
-       * emacs-mime.texi (Non-MIME): Postscript -> PostScript.
-
        * ack.texi (Acknowledgments): Postscript -> PostScript.
 
        * custom.texi (Init File, Init Non-ASCII): Fix last change.
 
        * macos.texi (Mac Font Specs): Mention AppleAntiAliasingThreshold.
 
-2007-03-26  Richard Stallman  <rms@gnu.org>
-
-       * pgg.texi (Caching passphrase): Clean up previous change.
-
-2007-03-25  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * gnus.texi (Setting Process Marks): Fix typo.
-
-2007-03-25  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (New in Emacs 22): Reorganize using an itemized list for
-       readability, and include various fixes by Daniel Brockman, Nick Roberts
-       and Dieter Wilhelm.
-
-2007-03-24  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * gnus.texi (Splitting Mail): Reword "splitting"-as-adj to be -as-noun.
-
-       * gnus.texi (Mail Source Specifiers): Fix typo.
-
-2007-03-22  Ralf Angeli  <angeli@caeruleus.net>
-
-       * reftex.texi (Imprint): Update maintainer information.
-
-2007-03-15  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * message.texi (Message Buffers): Update documentation for
-       message-generate-new-buffers.
-
-2007-03-15  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg.texi (Caching passphrase): Describe pgg-passphrase-coding-system.
-
-2007-03-21  Glenn Morris  <rgm@gnu.org>
-
-       * eshell.texi (Known problems): Emacs 22 comes with eshell 2.4.2.
-
-2007-03-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * eshell.texi (Known problems): Emacs 21 -> 22.
-
-       * cc-mode.texi (Performance Issues): Update note about 21.3 to 22.1.
-
-2007-03-18  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Time Zones): Mention that the DST rules changed in 2007.
-
 2007-03-12  Glenn Morris  <rgm@gnu.org>
 
-       * calc.texi (Time Zones): Switch to new North America DST rule.
-
        * calendar.texi, emacs.texi (Daylight Saving): Rename node from
        "Daylight Savings".
 
-       * calc.texi, calendar.texi: Replace "daylight savings" with "daylight
+       * calendar.texi: Replace "daylight savings" with "daylight
        saving" in text throughout.
 
-2007-03-11  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
-
-       * gnus.texi (Mail and Post): Update documentation for gnus-user-agent.
-       The variable now uses a list of symbols instead of just a symbol.
-       Reported by Christoph Conrad <christoph.conrad@gmx.de>.
-
-2007-03-06  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (New in Emacs 22): Don't say "now" too much.  Add MH-E to
-       new packages, and mention Gnus update.
-
 2007-03-04  Richard Stallman  <rms@gnu.org>
 
        * custom.texi (Safe File Variables): Minor correction.
 
-2007-02-27  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (NNTP): Mention nntp-never-echoes-commands and
-       nntp-open-connection-functions-never-echo-commands.
-
 2007-02-28  Thien-Thi Nguyen  <ttn@gnu.org>
 
        * rmail.texi (Movemail): Add internal ref.
        Don't indent the intro for the PROTO table.
        Format PROTO table items with @code.
 
-2007-02-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * pgg.texi (Caching passphrase): Document gpg-agent usage, gpg-agent
-       problems on the console, and security risk in not using gpg-agent.
-
 2007-02-26  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi: Remove references to bashdb.
 
-2007-02-25  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (The spreadsheet): Renamed from "Table calculations".
-       Completely reorganized and rewritten.
-       (CamelCase links): Section removed.
-       (Repeating items): New section.
-       (Tracking TODO state changes): New section.
-       (Agenda views): Chapter reorganized and rewritten.
-       (HTML export): Section rewritten.
-       (Tables in arbitrary syntax): New section.
-       (Summary): Better feature summary.
-       (Activation): Document problem with cut-and-paste of Lisp code
-       from PDF files.
-       (Visibility cycling): Document indirect buffer use.
-       (Structure editing): Document sorting.
-       (Remember): Section rewritten.
-       (Time stamps): Better description of time stamp types.
-       (Tag searches): Document regular expression search for tags.
-       (Stuck projects): New section.
-       (In-buffer settings): New keywords.
-       (History and Acknowledgments): Updated description.
-
-2007-02-24  Alan Mackenzie  <acm@muc.de>
-
-       * cc-mode.texi (Movement Commands): Insert two missing command names.
-       (Getting Started): Slight wording correction (use conditional).
-
-2007-02-22  Kim F. Storm  <storm@cua.dk>
-
-       * widget.texi (User Interface, Basic Types): Document need to put some
-       text before the %v escape in :format string in editable-field widget.
-
 2007-02-19  Juanma Barranquero  <lekktu@gmail.com>
 
        * mule.texi (Language Environments): Update list of supported language
        environments.
 
-2007-02-18  Romain Francoise  <romain@orebokech.com>
-
-       * pcl-cvs.texi (Miscellaneous commands): q runs `cvs-bury-buffer', not
-       `cvs-mode-quit'.
-
 2007-02-14  Kim F. Storm  <storm@cua.dk>
 
        * building.texi (Grep Searching): Fix lgrep doc.
 
        * back.texi: Remove unused file.
 
-2007-02-10  Markus Triska  <markus.triska@gmx.at>
-
-       * widget.texi (Programming Example): Put constant strings in :format.
-
-2007-02-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faq.texi (Fullscreen mode on MS-Windows): New node.
-
 2007-02-05  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 
        * maintaining.texi (Tag Syntax): Now --members is the default for
        etags, not for ctags yet.
 
-2007-02-04  David Kastrup  <dak@gnu.org>
-
-       * faq.texi (AUCTeX): Update version number.  Should probably be done
-       for other packages as well.
-
 2007-02-03  Eli Zaretskii  <eliz@gnu.org>
 
        * emacs.texi (Top): Update the top-level menus.  Make the detailed menu
        * frames.texi (Secondary Selection): Window clicked does not matter
        when mouse-yank-at-point is non-nil.
 
-2007-01-28  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
-
-       * gnus.texi (Batching Agents): Fix example.  Reported by Tassilo Horn
-       <tassilo@member.fsf.org>.
-
-2007-01-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * msdog.texi (ls in Lisp): Document ls-lisp-format-time-list and
-       ls-lisp-use-localized-time-format.
-
-2007-01-20  Markus Triska  <markus.triska@gmx.at>
-
-       * flymake.texi (Flymake mode): find-file-hook instead of ...-hooks.
-
-2007-01-13  Michael Olson  <mwolson@gnu.org>
-
-       * erc.texi (Modules): Mention capab-identify module.
-
 2007-01-16  Glenn Morris  <rgm@gnu.org>
 
        * abbrevs.texi (Editing Abbrevs): Describe how to disable a
 
        * building.texi (Watch Expressions): Describe gdb-max-children.
 
-2007-01-05  Michael Olson  <mwolson@gnu.org>
-
-       * erc.texi (Getting Started): Update for /RECONNECT command.
-
 2007-01-04  Richard Stallman  <rms@gnu.org>
 
-       * ebrowse.texi: Change C-c b to C-c C-m.
-
        * msdog.texi (Windows Keyboard): Clarify previous change.
 
-2007-01-03  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Customizing Articles): Use index entries for gnus-treat-*
-       variables only in info to avoid redundant entries in the printed
-       manual.
-
 2007-01-02  Richard Stallman  <rms@gnu.org>
 
        * custom.texi (Changing a Variable): Minor clarification.
 
        * xresources.texi (Resources): Minor fix.
 
-2007-01-02  Daiki Ueno  <ueno@unixuser.org>
-
-       * message.texi (Using PGP/MIME): Document gpg-agent usage.
-
-2007-01-02  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * message.texi (Security): Split into sub-nodes.
-
-2007-01-01  Alan Mackenzie  <acm@muc.de>
-
-       * cc-mode.texi ("Limitations and Known Bugs"): Document problems with
-       eval-after-load in Emacs <=21 and a workaround.  Document that
-       trigraphs are not supported.
-
-2007-01-01  Alan Mackenzie  <acm@muc.de>
-
-       * cc-mode.texi ("Filling and Breaking"): Amend the doc for
-       c-context-line-break.  When invoked within a string, preserve
-       whitespace.  Add a backslash only when also in a macro.
-
-2007-01-01  Alan Mackenzie  <acm@muc.de>
-
-       * cc-mode.texi ("Choosing a Style"): Mention c-file-style.
-
-2007-01-01  Alan Mackenzie  <acm@muc.de>
-
-       * cc-mode.texi ("Movement Commands", "Sample .emacs File"): C-M-[ae]
-       are now bound by default to c-\(beginning\|end\)-of-defun by default.
-
-2007-01-01  Alan Mackenzie  <acm@muc.de>
-
-       * cc-mode.texi ("Other Commands"): Move c-set-style (C-c .) here from
-       "Choosing a Style".
-
-       * cc-mode.texi ("Styles"): Add @dfn{style}.
-
 2007-01-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * xresources.texi (Table of Resources): Add scrollBarWidth resource.
        * xresources.texi (Table of Resources): Mention grow-only value for
        auto-resize-tool-bars.
 
-2006-12-30  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.55.
-
-       * trampver.texi: Update release number.
-
-2006-12-29  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Customizing Articles): Add index entries for all
-       gnus-treat-* variables.
-
-2006-12-29  Jouni K. Sepp\e,Ad\e(Bnen  <jks@iki.fi>
-
-       * gnus.texi (IMAP): Fix incorrect explanation of
-       nnimap-search-uids-not-since-is-evil in documentation for
-       nnimap-expunge-search-string.
-
-2006-12-27  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (ifile spam filtering): Rename spam-ifile-database-path to
-       spam-ifile-database.
-
-2006-12-26  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Spam Package Configuration Examples): Don't encourage to
-       rebind C-s.
-
-2006-12-26  Jouni K. Sepp\e,Ad\e(Bnen  <jks@iki.fi>
-
-       * gnus.texi (Group Parameters, Group Maintenance, Topic Commands)
-       (Mail Group Commands, Expiring Mail, IMAP): Add index entries for
-       "expiring mail".
-       (IMAP): Document nnimap-search-uids-not-since-is-evil and
-       nnimap-nov-is-evil.
-
 2006-12-27  Eli Zaretskii  <eliz@gnu.org>
 
        * msdog.texi (Windows Keyboard): Mention widespread Windows bindings,
        (Word and Line Mouse): Likewise.
        (Secondary Selection, Clipboard): Nodes demoted.
 
-2006-12-25  Kevin Ryde  <user42@zip.com.au>
-
-       * cl.texi (Sorting Sequences): In sort*, add a little cautionary note
-       about the key procedure being used heavily.
-
-2006-12-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * pgg.texi (Caching passphrase): Default for pgg-gpg-use-agent changed
-       to t.
-       (Prerequisites): Add explanation about gpg-agent.
-
 2006-12-24  Kevin Ryde  <user42@zip.com.au>
 
        * calendar.texi (Holidays): US daylight saving begins second Sunday
        * search.texi (Regexp Search): Explain why forward and reverse regexp
        search are not mirror images.
 
-2006-12-22  Kevin Ryde  <user42@zip.com.au>
-
-       * cl.texi (Sorting Sequences): Typo in sort*, example showed plain
-       "sort" instead of "sort*".
-
-2006-12-19  Richard Stallman  <rms@gnu.org>
-
-       * calc.texi (History and Acknowledgements): Recognize that Emacs
-       now does have floating point.
-
 2006-12-19  Kim F. Storm  <storm@cua.dk>
 
        * major.texi (Choosing Modes): Describe match-function elements for
        magic-mode-alist.
 
-2006-12-19  Michael Albinus  <michael.albinus@gmx.de>
-
-       * tramp.texi (External transfer methods): Describe new method `scpc'.
-
 2006-12-18  Eli Zaretskii  <eliz@gnu.org>
 
        * msdog.texi (Windows Keyboard): Add a footnote about "Windows" keys
 
        * abbrevs.texi (Editing Abbrevs): Fix previous change.
 
-2006-12-17  Sascha Wilde  <wilde@sha-bang.de>
-
-       * pgg.texi: Added short note on gpg-agent to the introduction.
-
 2006-12-17  Alan Mackenzie  <acm@muc.de>
 
        * programs.texi (Left Margin Paren): Remove the bit which says
 
        * text.texi (HTML Mode): Fix "C-c TAB".
 
-2006-12-13  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Hiding Headers): Document that `long-to' and `many-to'
-       also applies to Cc.
-
-2006-12-12  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (X-Face): Clarify.  Say which programs are required
-       on Windows.
-
 2006-12-09  Richard Stallman  <rms@gnu.org>
 
        * misc.texi (Invoking emacsclient): Simplify TCP file text.
        (Invoking emacsclient): Add index entries.  Document both short and
        long versions of command-line options.  Document the -f option.
 
-2006-12-08  Michael Olson  <mwolson@gnu.org>
-
-       * erc.texi (Modules): Remove documentation for list module.
-
 2006-12-06  Richard Stallman  <rms@gnu.org>
 
        * text.texi (Outline Format): Say to set outline-regexp
        * anti.texi (Antinews): Mention the alternative to
        `~/.emacs_SHELLNAME', which is `~/.emacs.d/init_SHELLNAME.sh'.
 
-       * faq.texi (^M in the shell buffer): Ditto.
-
        * misc.texi (Interactive Shell): Ditto.
 
 2006-12-04  Eli Zaretskii  <eliz@gnu.org>
 
        * anti.texi (Antinews): Mention --server-file and TCP sockets.
 
-2006-11-20  Michael Olson  <mwolson@gnu.org>
-
-       * erc.texi: Call this the 5.2 stable pre-release of ERC.
-
 2006-11-18  Chong Yidong  <cyd@stupidchicken.com>
 
        * misc.texi (Interactive Shell): INSIDE_EMACS is set to t,
 
        * xresources.texi: Merge text from xresmini.texi.
 
-2006-11-17  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Fix typos.
-       (Agenda commands): Document `C-k'.
-
-2006-11-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * url.texi (http/https): Fix a typo in the HTTP URL.
-
-2006-11-14  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * ada-mode.texi: Total rewrite.
-
-2006-11-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Minor typo fixes.
-
-2006-11-13  Bill Wohler  <wohler@newt.com>
-
-       Release MH-E manual version 8.0.3.
-
-       * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
-       release 8.0.3.
-
-       * mh-e.texi (Incorporating Mail): Use output of "mhparam Path"
-       to set MAILDIR.
-       (Reading Mail): Document the customization of read-mail-command
-       for MH-E.
-       (Viewing Attachments): Document mm-discouraged-alternatives.
-       (Tool Bar): Fix Texinfo for mh-xemacs-use-tool-bar-flag.
-       (Junk): Add more information about the settings of mh-junk-background
-       in a program.  Add /usr/bin/mh to PATH in examples.
-
-2006-11-12  Richard Stallman  <rms@gnu.org>
-
-       * woman.texi: Update author address but say he no longer maintains it.
-
 2006-11-12  Roberto Rodr\e,Am\e(Bguez  <lanubeblanca@googlemail.com>  (tiny change)
 
        * glossary.texi: Fix typos.
 
-2006-11-10  Carsten Dominik  <carsten.dominik@gmail.com>
-
-       * org.texi (ARCHIVE tag): Document C-TAB for forcing cycling of
-       archived trees.
-       (Checkboxes): Section moved to chapter 5, and extended.
-       (The date/time prompt): New section.
-       (Link abbreviations): New section.
-       (Presentation and sorting): New section.
-       (Custom agenda views): Section completely rewritten.
-       (Summary): Compare with Planner.
-       (Feedback): More info about creating backtraces.
-       (Plain lists): Modified example.
-       (Breaking down tasks): New section.
-       (Custom time format): New section.
-       (Time stamps): Document inactive timestamps.
-       (Setting tags): More details about fast tag selection.
-       (Block agenda): New section.
-       (Custom agenda views): Section rewritten.
-       (Block agenda): New section.
-
-2006-11-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       * tramp.texi (Configuration): scp is the default method.
-       (Default Method): Use ssh as example for another method.
-
 2006-11-06  Richard Stallman  <rms@gnu.org>
 
        * emacs.texi (Acknowledgments): Fix name spelling, add Anna Bigatti.
        * emacs.texi (Top): Rename old node "LaTeX Calendar" to "Writing
        Calendar Files."
 
-2006-10-27  Richard Stallman  <rms@gnu.org>
-
-       * woman.texi: Downcase nroff/troff/roff.
-       (Installation): Chapter deleted.  Some xrefs deleted.
-       (Background): woman doesn't advise man ;-).
-
-2006-10-26  Roberto Rodr\e,Am\e(Bguez  <lanubeblanca@googlemail.com>  (tiny change)
-
-       * ada-mode.texi (Project files, Identifier completion)
-       (Automatic Casing, Debugging, Using non-standard file names)
-       (Working Remotely): Fix typos.
-
 2006-10-23  Richard Stallman  <rms@gnu.org>
 
        * abbrevs.texi (Expanding Abbrevs): Expansion happens only when
        Abbrev mode is enabled.
 
-2006-10-20  Masatake YAMATO  <jet@gyve.org>
-
-       * cc-mode.texi (Sample .emacs File): Added missing `)' in
-       sample code `my-c-initialization-hook'.
-
-2006-10-19  Stuart D. Herring  <herring@lanl.gov>
-
-       * widget.texi: Fix typos.
-
-2006-10-19  Michael Albinus  <michael.albinus@gmx.de>
-
-       * tramp.texi (Frequently Asked Questions): Remove questions marked with
-       "???".  There have been no complaints for years, so the information
-       must be appropriate.
-
 2006-10-16  Richard Stallman  <rms@gnu.org>
 
-       * widget.texi: Use @var instead of capitalization.
-       Clarify many widget type descriptions.
-
        * emacs.texi: Update ISBN.
 
-2006-10-13  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
-
-       * gnus.texi (Other modes): Fix typo.  Add alternative index entry for
-       gnus-dired-attach.
-       (Selecting a Group): Fix typo.
-
-2006-10-12  Roberto Rodr\e,Am\e(Bguez  <lanubeblanca@googlemail.com>  (tiny change)
-
-       * widget.texi: Fix typos.
-
 2006-10-11  Kim F. Storm  <storm@cua.dk>
 
        * emacs.texi (Acknowledgments): Use @dotless{i}.
 
        * emacs.texi (Acknowledgments): Fix bad @/ form.
 
-2006-10-06  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Image Enhancements): Update for Emacs 22.
-
-       * gnus-faq.texi ([1.3]): Update.
-
-2006-10-06  Richard Stallman  <rms@gnu.org>
-
-       * faq.texi (Displaying the current line or column):
-       Delete "As of Emacs 20".
-
-2006-10-06  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (VM): VM works with Emacs 22 too.
-
-2006-10-06  Richard Stallman  <rms@gnu.org>
-
-       * ebrowse.texi: Remove Emacs version "21" from title.
-
 2006-10-05  Kim F. Storm  <storm@cua.dk>
 
        * emacs.texi (Acknowledgments): Add more contributors.
 
        * emacs.texi (Acknowledgments): Update version and edition.
 
-2006-10-02  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Foreign Groups): Say where change of editing commands are
-       stored.  Add reference to `gnus-parameters'.
-
 2006-10-01  Karl Berry  <karl@gnu.org>
 
        * custom.texi (Customization Groups): Page break to keep example buffer
 
 2006-09-15  Jay Belanger  <belanger@truman.edu>
 
-       * calc.texi, emacs.texi, mh-e.texi (GNU GENERAL PUBLIC LICENSE):
+       * emacs.texi (GNU GENERAL PUBLIC LICENSE):
        Change "Library Public License" to "Lesser Public License"
        throughout.  Use "yyyy" to represent year.
 
-2006-09-15  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Setting tags): Typo fix.
-
-2006-09-14  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Oort Gnus): Add @xref for `mm-fill-flowed'.
-
 2006-09-12  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * files.texi (Visiting): Add index entry "open file".
 
-       * reftex.texi (Citations Outside LaTeX): Simplify lisp example.
-
-2006-09-12  Paul Eggert  <eggert@cs.ucla.edu>
-
-       * faq.texi (Escape sequences in shell output): EMACS is now set
-       to Emacs's absolute file name, not to "t".
-       (^M in the shell buffer): Likewise.
-       * misc.texi (Interactive Shell): Likewise.
-
 2006-09-11  Richard Stallman  <rms@gnu.org>
 
        * building.texi (Compilation Mode): Clarification.
        (Grep Searching): Add xref to Compilation Mode.
 
-2006-09-11  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Mail Source Specifiers): Mention problem of duplicate
-       mails with pop3-leave-mail-on-server.  Fix wording.
-       (Limiting): Improve gnus-summary-limit-to-articles.
-       (X-Face): Fix typo.
-
-2006-09-11  Simon Josefsson  <jas@extundo.com>
-
-       * smtpmail.texi (Authentication): Explain TLS and SSL better, based on
-       suggested by Phillip Lord <phillip.lord@newcastle.ac.uk>.
-
 2006-09-08  Richard Stallman  <rms@gnu.org>
 
        * search.texi (Search): Ref multi-file search commands here.
        (Other Repeating Search): Not here.
 
-2006-09-06  Simon Josefsson  <jas@extundo.com>
-
-       * smtpmail.texi (Authentication): Mention SSL.
-
-2006-09-01  Eli Zaretskii  <eliz@gnu.org>
-
-       * rcirc.texi (Internet Relay Chat, Useful IRC commands):
-       Don't use @indicateurl.
-
-       * cc-mode.texi (Subword Movement): Don't use @headitem.
-       (Custom Braces, Clean-ups): Don't use @tie.
-
-2006-08-29  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.54.
-
-       * tramp.texi (Bug Reports): The Tramp mailing list is moderated now.
-       Suggested by Adrian Phillips <a.phillips@met.no>.
-
 2006-08-28  Richard Stallman  <rms@gnu.org>
 
        * windows.texi (Split Window): Update xref.
 
        * help.texi (Help Mode): Move node up in file.
 
-2006-08-15  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Installation, Activation): Split from Installation and
-       Activation.
-       (Clocking work time): Documented new features.
-
 2006-08-15  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (Stack Buffer): Explain fringe arrow.
 
-2006-08-13  Alex Schroeder  <alex@gnu.org>
-
-       * rcirc.texi (Configuration): Use correct variable in rcirc-authinfo
-       example.
-
 2006-08-12  Eli Zaretskii  <eliz@gnu.org>
 
-       * faq.texi (How to add fonts): New node.
-
        * misc.texi (Saving Emacs Sessions): Clarify when desktop is restored
        on startup.
 
        * dired.texi (Marks vs Flags): Fix typo reported by Ari Roponen
        <arjuropo@cc.jyu.fi>.
 
-2006-08-05  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (New in Emacs 22): Expand.
-
 2006-08-04  Eli Zaretskii  <eliz@gnu.org>
 
        * cmdargs.texi (Window Size X) <--geometry>: Only width and height
        apply to all frames.
 
-2006-08-03  Michael Olson  <mwolson@gnu.org>
-
-       * erc.texi: Update for ERC 5.1.4.
-
 2006-08-01  Richard Stallman  <rms@gnu.org>
 
        * help.texi (Name Help): Add index entries for describe-variable.
 
        * search.texi (Query Replace): Add xref for Dired's Q command.
 
-2006-07-28  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Oort Gnus): Mention that the Lisp files are now installed
-       in .../site-lisp/gnus/ by default.
-       [ From gnus-news.texi in the trunk. ]
-
-2006-07-27  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (MIME Commands): Additions for yEnc.
-
 2006-07-31  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (GDB commands in Fringe): Rename to...
 
        * xresources.texi (GTK styles): Fix texinfo usage.
 
-       * pgg.texi, org.texi, info.texi, forms.texi, flymake.texi:
-       * faq.texi: Move periods and commas inside quotes.
-
        * commands.texi (User Input): Explain why we teach keyboard cmds.
 
        * xresources.texi, xresmini.texi, search.texi, programs.texi:
        * frames.texi (Frame Commands): Mention that focus-follows-mouse
        doesn't have effect on MS-Windows.
 
-2006-07-20  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Error forms): Mention M-+ keybinding for `calc-plus-minus'.
-
-2006-07-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * faq.texi (Security risks with Emacs): Document Emacs 22
-       file-local-variable mechanism.
-
 2006-07-17  Richard Stallman  <rms@gnu.org>
 
        * building.texi (Grep Searching): Explain about chaining grep commands.
 
-2006-07-12  Michael Olson  <mwolson@gnu.org>
-
-       * erc.texi: Update for ERC 5.1.3.
-
-2006-07-12  Alex Schroeder  <alex@gnu.org>
-
-       * rcirc.texi: Fix typos.
-       (Getting started with rcirc): New calling convention for M-x irc.
-       Mention #rcirc.  Removed channel tracking.
-       (Configuration): Changed the names of all variables that got changed
-       recently, eg. rcirc-server to rcirc-default-server.  Added
-       documentation for rcirc-authinfo, some background for Bitlbee, and
-       rcirc-track-minor-mode.
-       (Scrolling conservatively): Fixed the xref from Auto Scrolling to just
-       Scrolling.
-       (Reconnecting after you have lost the connection): Fixed example code
-       to match code changes.
-
 2006-07-10  Nick Roberts  <nickrob@snap.net.nz>
 
-       * killing.texi, gnus.texi, message.texi, mini.texi: Fix typos.
+       * killing.texi, mini.texi: Fix typos.
 
 2006-07-09  Chong Yidong  <cyd@stupidchicken.com>
 
        (Windows Misc) [@iftex]: Add an @inforef to the on-line manual for the
        rest of this node.
 
-2006-07-07  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Exporting): Document `C-c C-e' as the prefix for exporting
-       commands.
-       (Global TODO list): Document the use of the variables
-       `org-agenda-todo-ignore-scheduled' and
-       `org-agenda-todo-list-sublevels'.
-
-2006-07-05  Richard Stallman  <rms@gnu.org>
-
-       * faq.texi (Scrolling only one line): Fix xref.
-
 2006-07-05  Thien-Thi Nguyen  <ttn@gnu.org>
 
-       * building.texi (Lisp Eval):
-       * faq.texi (Evaluating Emacs Lisp code):
-       Throughout, replace eval-current-buffer with eval-buffer.
+       * building.texi (Lisp Eval): Throughout, replace eval-current-buffer
+       with eval-buffer.
 
 2006-07-05  Nick Roberts  <nickrob@snap.net.nz>
 
 
 2006-07-03  Richard Stallman  <rms@gnu.org>
 
-       * rcirc.texi (Scrolling conservatively): Fix xref.
-
-       * pcl-cvs.texi (Viewing differences): Usage fix.
-
        * search.texi (Other Repeating Search): filename -> file name.
 
        * misc.texi (Narrowing): Minor cleanups.
 
        * help.texi, m-x.texi: Lots of cleanups.
 
-2006-07-03  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Agenda commands): Document `s' key to save all org-mode
-       buffers.
-
 2006-06-30  Eli Zaretskii  <eliz@gnu.org>
 
        * msdog.texi (ls in Lisp, Windows Keyboard, Windows Mouse)
        (Windows Processes, Windows Misc): Shorten the printed version by
        selectively conditioning less important portions by @ifnottex.
 
-2006-06-30  Ralf Angeli  <angeli@caeruleus.net>
-
-       * pcl-cvs.texi (Customizing Faces): Remove -face suffix from face
-       names.  Mention `cvs-msg' face.
-
-2006-06-29  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Checkboxes): New section.
-
-2006-06-28  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Embedded LaTeX): Fix typos and implement small improvements
-       throughout this chapter.
-
-2006-06-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * info.texi (Help-Small-Screen): Clarify placement of "All" and "Top"
-       text for standalone vs Emacs info.
-       (Help): Clarify header line description.  Use mouse-1 for clicks.
-       (Help-P): Use mouse-1 for clicks.
-       (Help-^L): "Top" and "All" not displayed with dashes in Emacs.
-       (Help-^L, Help-M, Help-Int, Search Index, Go to node)
-       (Choose menu subtopic): Remove gratuitous Emacs command names.
-       (Help-FOO): Put usual behavior first.
-       (Help-Xref): Clicking on xrefs works in Emacs.
-       (Search Text): Clarify what the default behavior is.
-       (Create Info buffer): Fix Emacs window/X window confusion.
-       (Emacs Info Variables): Fix for new Emacs init file behavior.
-
 2006-06-27  Richard Stallman  <rms@gnu.org>
 
        * mini.texi (Minibuffer File): Minor cleanup.
        * files.texi (Visiting): Document case-insensitive wildcard matching
        under find-file-wildcards.
 
-2006-06-24  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
-
-       * gnus.texi (Summary Buffer Lines): Fix typo.
-
-2006-06-23  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Embedded LaTeX): New chapter.
-       (Archiving): Section rewritten.
-       (Enhancing text): Some parts moved to the new chapter about LaTeX.
-
-2006-06-20  Bill Wohler  <wohler@newt.com>
-
-       Release MH-E manual version 8.0.1.
-
-       * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
-       release 8.0.1.
-       (Preface): Depend on GNU mailutils 1.0 and higher.
-
-2006-06-19  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * message.texi (News Headers): Update message-syntax-checks section.
-
-2006-06-19  Karl Berry  <karl@gnu.org>
-
-       * info.texi (Advanced): Mention C-q, especially with ?.
-
-2006-06-19  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Publishing links): Document the `:link-validation-function'
-       property.
-       (Extensions and Hacking): New chapter, includes some sections of the
-       "Miscellaneous" chapter.
-
 2006-06-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * macos.texi (Mac Input): Add description of mac-function-modifier.
        Now Unicode keyboard layouts work.
 
-2006-06-10  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Progress logging): New section.
-
 2006-06-10  Richard Stallman  <rms@gnu.org>
 
        * mule.texi (Recognize Coding): Clarify previous change.
 
 2006-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * viper.texi (Viper Specials):
        * programs.texi (Comment Commands):
-       * gnus.texi (Example Setup):
-       * faq.texi (Backspace invokes help):
-       * dired-x.texi (Optional Installation Dired Jump):
        * custom.texi (Specifying File Variables):
-       * calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better
-       follow coding conventions.
-
-2006-05-18  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail.
+       Use ;; instead of ;;; to better follow coding conventions.
 
 2006-06-07  Nick Roberts  <nickrob@snap.net.nz>
 
        (GDB Graphical Interface): Move description of clicks in fringe...
        (GDB commands in the Fringe): ...to here.  New node.
 
-2006-06-06  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (ASCII export): Document indentation adaptation.
-       (Setting tags): Document mutually-exclusive tags.
-
 2006-06-05  Romain Francoise  <romain@orebokech.com>
 
-       * url.texi (irc): Mention new funs `url-irc-rcirc' and `url-irc-erc'.
-       Fix typo.
-
-       * gnus-faq.texi (Question 8.6): Update reference to the Gnus
-       channel (#gnus@irc.freenode.net).
-       Fix typos.  Update copyright notice.
-
-       * cc-mode.texi (Getting Started, Indentation Commands, Config Basics)
-       (Custom Filling and Breaking, Custom Braces, Syntactic Symbols)
-       (Line-Up Functions, Custom Macros):
-       * ediff.texi (Window and Frame Configuration)
-       (Highlighting Difference Regions, Highlighting Difference Regions):
-       * emacs-mime.texi (Display Customization):
-       * erc.texi (History):
-       * eshell.texi (Known problems):
-       * eudc.texi (Overview, BBDB):
-       * gnus.texi (NNTP, IMAP, Advanced Scoring Examples)
-       (The problem of spam, SpamOracle, Extending the Spam package)
-       (Conformity, Terminology):
-       * idlwave.texi (Routine Info, Routine Info)
-       (Class and Keyword Inheritance, Padding Operators)
-       (Breakpoints and Stepping, Electric Debug Mode)
-       (Examining Variables, Troubleshooting):
-       * org.texi (Creating timestamps):
-       * reftex.texi (Commands, Options, Changes):
-       * tramp.texi (Inline methods, Password caching)
-       (Auto-save and Backup, Issues):
-       * vip.texi (Files, Commands in Insert Mode):
-       * viper.texi (Emacs Preliminaries, States in Viper)
-       (Packages that Change Keymaps, Viper Specials, Groundwork):
-       * xresmini.texi (GTK resources):
-       Fix various typos.
+       * xresmini.texi (GTK resources): Fix various typos.
 
 2006-06-05  Nick Roberts  <nickrob@snap.net.nz>
 
 
        * screen.texi (Menu Bar): Change menu-bar-start to menu-bar-open.
 
-2006-05-31  Michael Ernst  <mernst@alum.mit.edu>
-
-       * ediff.texi: Fix typos.
-
 2006-05-31  Richard Stallman  <rms@gnu.org>
 
        * basic.texi (Moving Point): Fix previous change.
 
-2006-05-30  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Small typo fixes.
-
-2006-05-29  Michael Albinus  <michael.albinus@gmx.de>
-
-       * tramp.texi (Frequently Asked Questions): Disable zsh zle.
-
 2006-05-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * screen.texi (Menu Bar): F10 for Gtk+/Lesstif/Lucid menus.
 
        * basic.texi: Many simplifications and improvements in wording.
 
-2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * pcl-cvs.texi: Fix typos.
-       (Customization): Say "us".
-
-2006-05-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * org.texi: Remove bogus @setfilename.
-
-2006-05-26  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (ASCII export): Omit command name.
-       (HTML export): Add prefix to all lines in Local Variable example.
-       (Acknowledgments): Typeset names in italics.
-
 2006-05-26  Nick Roberts  <nickrob@snap.net.nz>
 
        * anti.texi (Antinews): Create a node for gdb-ui.
 
-2006-05-24  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Plain lists): Add new item navigation commands.
-       (External links): Document elisp and info links.
-       (Custom searches): New section.
-       (Publishing): New chapter.
-       (HTML export): Include a list of supported CSS classes.
-       (Setting tags): Describe the fast-tag-setting interface.
-
 2006-05-22  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * frames.texi (Menu Bars, Tool Bars): Add index entries.
 
        * dired.texi (Dired Navigation): dired-goto-file is now j.
 
-2006-05-20  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * dired-x.texi: ifinfo -> ifnottex.
-
 2006-05-20  Eli Zaretskii  <eliz@gnu.org>
 
        * mule.texi (Coding Systems): Mention the undecided-* coding systems
        * emacs.texi (Copying):
        * custom.texi (Init File): ifinfo -> ifnottex.
 
-2006-05-18  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail.
-
 2006-05-17  Richard Stallman  <rms@gnu.org>
 
        * files.texi (Diff Mode): Mention C-x `.
 
        * custom.texi (Disabling): Textual cleanups.
 
-2006-05-12  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * message.texi (Interface): Add tool bar customization.
-       (MIME): Index and text additions for mml-attach.
-       (MIME): Describe mml-dnd-protocol-alist and
-       mml-dnd-attach-options.
-
-       * gnus.texi (Oort Gnus): Reorder entries in sections.
-       Fix some entries.
-       (Starting Up): Add references to "Emacs for Heathens" and to
-       "Finding the News".  Add user-full-name and user-mail-address.
-       (Group Buffer Format): Add tool bar customization and update.
-       (Summary Buffer): Add tool bar customization.
-       (Posting Styles): Add message-alternative-emails.
-
 2006-05-12  Glenn Morris  <rgm@gnu.org>
 
        * calendar.texi (Displaying the Diary, Format of Diary File):
        * mule.texi (Coding Systems, Text Coding): More indexing.
        Mention that C-x RET f can set eol conversion.
 
-2006-05-09  Michael Albinus  <michael.albinus@gmx.de>
-
-       * tramp.texi (Filename completion): Improve wording.
-
 2006-05-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * xresmini.texi (GTK resources): Insert GTK description.
 
        * xresources.texi (GTK resources): metafont should be menufont.
 
-2006-05-07  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (Using regular expressions): Fix typo.
-       (Packages that do not come with Emacs): Fix capitalization.
-       (Replacing text across multiple files): Expand node to explain how
-       to use `dired-do-query-replace-regexp' in more detail, based on
-       suggestion by Eric Hanchrow <offby1@blarg.net>.
-
 2006-05-06  Michael Albinus  <michael.albinus@gmx.de>
 
-       * mini.texi (Completion Options):
-       * tramp.texi (Filename completion): Completion of remote files'
+       * mini.texi (Completion Options): Completion of remote files'
        method, user name and host name is active only in partial
        completion mode.
 
-2006-05-06  Bill Wohler  <wohler@newt.com>
-
-       Release MH-E manual version 8.0.
-
-       * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
-       release 8.0.
-
-2006-05-06  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi (MH-BOOK-HOME): Change from
-       http://www.ics.uci.edu/~mh/book/mh to
-       http://rand-mh.sourceforge.net/book/mh.
-       Replace .htm suffix with .html for MH book files.
-       (Using This Manual): Update key binding for getting relevant
-       chapter in Info from command key.
-       (Ranges): Fix itemx.
-
 2006-05-06  Eli Zaretskii  <eliz@gnu.org>
 
        * makefile.w32-in (emacs.dvi):
 
 2006-05-05  Karl Berry  <karl@gnu.org>
 
-       * texinfo.tex (\definetextfonsizexi, \definetextfonsizex): New cmds.
-       (\fonttextsize): New user-level command to change text font size.
        * emacs.texi: Call @fonttextsize 10, inside @tex to avoid
        errors from the current release of makeinfo (4.8).
        * help.texi (Library Keywords): Change widest word in multitable
 
        * building.texi (Grep Searching): Add lgrep and rgrep.
 
-2006-04-26  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * pgg.texi (Caching passphrase): Fix markup and typos.  Simplify.
-
-2006-04-26  Sascha Wilde  <wilde@sha-bang.de>  (tiny change)
-
-       * pgg.texi (Caching passphrase): Add pgg-gpg-use-agent.
-
-2006-04-24  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi (Getting Started): Make it more explicit that you need
-       to install MH.  Add pointers to current MH implementations.
-
 2006-04-23  Richard Stallman  <rms@gnu.org>
 
        * emacs.texi [TeX]: Use xresmini.texi instead of xresources.texi.
        * xresources.texi (Face Resources): Split table into font resources
        and the rest.  Combine similar attributes for brevity.
 
-2006-04-21  Bill Wohler  <wohler@newt.com>
-
-       Release MH-E manual version 7.94.
-
-       * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
-       release 7.94.
-
-2006-04-21  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Many small fixes.
-       (Handling links): Rename from "Managing links".
-
 2006-04-21  Eli Zaretskii  <eliz@gnu.org>
 
        * emacs-xtra.texi (MS-DOS File Names): Remove section about
        (Windows Processes, Windows System Menu): Add index entries and
        fix wording.
 
-2006-04-20  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Spam Statistics Package): Fix typo in @pxref.
-       (Splitting mail using spam-stat): Fix @xref.
-
-2006-04-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * gnus.texi (Spam Package): Major revision of the text.
-       Previouly this node was "Filtering Spam Using The Spam ELisp Package".
-
-2006-04-20  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Time stamps): Better explanation of the purpose of
-       different time stamps.
-       (Structure editing, Plain lists): More details on how new items
-       and headings are inserted.
-
 2006-04-18  J.D. Smith  <jdsmith@as.arizona.edu>
 
        * misc.texi (Shell Ring): Add notes on saved input when
        * misc.texi (Shell Options): Correct default value of
        comint-scroll-show-maximum-output.
 
-2006-04-18  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Formula syntax): Fix link to Calc Manual.
-
-2006-04-17  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Emacsen): Don't support Emacs 20.7 and XEmacs 21.1.
-
-2006-04-17  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi (Folders): Update mh-before-quit-hook and
-       mh-quit-hook example with code that removes the buffers rather
-       than just bury them.
-
 2006-04-18  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (Watch Expressions): Update.
 
-2006-04-17  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.53.
-
-2006-04-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Updating settings): New section.
-       (Visibility cycling): Better names for the startup folding
-       options.
-       (Exporting): Completely restructured.
-       (The very busy C-c C-c key): New section.
-       (Summary of in-buffer settings): New section.
-
 2006-04-12  Richard Stallman  <rms@gnu.org>
 
        * search.texi: Clean up previous change.
        these nodes to emacs-xtra.texi, for brevity.
        * cmdargs.texi, files.texi: Change cross-references.
 
-2006-04-11  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi, gnus-faq.texi, message.texi: Gnus v5.10.8 is released.
-
-2006-04-10  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Misc Group Stuff, Summary Buffer, Article Keymap)
-       (Server Commands): Key `v' is reserved for users.
-
 2006-04-11  J.D. Smith  <jdsmith@as.arizona.edu>
 
        * files.texi (Old Versions): Update description of vc-annotate's
        use of color to indicate date ranges.
 
-2006-04-11  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Link format): New section, emphasis on bracket links.
-       (External links): Document bracket links.
-       (FAQ): Expand to cover shell links and the new link format.
-
 2006-04-09  Kevin Ryde  <user42@zip.com.au>
 
-       * org.texi (Formula syntax): Typo in node name of calc-eval xref.
-
        * sending.texi (Mail Sending): In send-mail-function @pxref smtpmail,
        put info and printed manual names the right way around.
 
        * emacs.texi: Move @summarycontents and @contents to the beginning
        of the file.
 
-2006-04-07  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Summary Buffer Lines): Add `*'.
-
-2006-04-07  Jochen K\e,A|\e(Bpper  <jochen@fhi-berlin.mpg.de>
-
-       * gnus.texi (Group Parameters):
-       Mention gnus-permanently-visible-groups.
-
-2006-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Face): Fix typo.
-
-2006-04-05  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (X-Face): Clarify.
-       (Face): Need Emacs with PNG support.
-
 2006-04-08  Kevin Ryde  <user42@zip.com.au>
 
        * text.texi (Fill Commands): fill-nobreak-predicate is now a hook.
 
 2006-04-06  Richard Stallman  <rms@gnu.org>
 
-       * idlwave.texi: Delete the blocks "not suitable for inclusion with
-       Emacs".
-
        * programs.texi (Basic Indent): Clarify relationship of C-j to TAB.
 
 2006-04-06  Eli Zaretskii  <eliz@gnu.org>
 
        * killing.texi (Rectangles): Add index entry for marking a rectangle.
 
-2006-04-06  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * idlwave.texi: Updated for IDLWAVE version 6.0, factoring out
-       blocks not suitable for inclusion with Emacs using variable
-       PARTOFEMACS.
-
 2006-04-05  Richard Stallman  <rms@gnu.org>
 
        * emacs.texi (Top): Update subnode menu.
 
        * misc.texi (Thumbnails): Minor correction.
 
-2006-04-04  Simon Josefsson  <jas@extundo.com>
-
-       * gnus.texi (Security): Improve.
-
 2006-04-03  Richard Stallman  <rms@gnu.org>
 
        * misc.texi (Thumbnails): Minor cleanup.
 
        * texinfo.tex: Update to current version (2006-03-21.13).
 
-2006-04-02  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi (Getting Started, Junk, Bug Reports)
-       (MH FAQ and Support): Fix URLs.
-
-2006-03-31  Romain Francoise  <romain@orebokech.com>
-
-       * gnus.texi (Virtual Groups): `nnvirtual-always-rescan' defaults
-       to t, not nil (and has for the past eight years).
-
 2006-03-31  Richard Stallman  <rms@gnu.org>
 
        * emacs.texi (Top): Update subnode menu.
        (Shell): Put eshell xref at the end.  Remove eshell from table.
        (Thumbnails): New node.
 
-2006-03-31  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * message.texi, gnus.texi: Bump version to 5.11.
-
-2006-03-29  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Top): Add comment about version line.
-
-       * message.texi (Top): Ditto.  Change to take named versions into
-       account.
-
-2006-03-28  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Posting Styles): Add x-face-file to example.
-       (X-Face): Refer to posting styles.
-
-       * gnus-faq.texi ([5.8]): Add x-face-file.
-       ([8.4]): Add links to gmane.emacs.gnus.user and
-       gmane.emacs.gnus.general.
-
 2006-03-28  Eli Zaretskii  <eliz@gnu.org>
 
        * files.texi (File Name Cache): Make it clear that the cache is
        not persistent.
 
-2006-03-27  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus-faq.texi: Use .invalid.
-       ([5.4]): Fix gnus-posting-styles example.
-
-2006-03-27  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (Emacs/W3): Rename from `w3-mode'.  Mention that
-       Emacs/W3 needs a new maintainer.
-       (Ispell): Update author and version info.
-       (Mailcrypt): Mention PGG.
-       (New in Emacs 22): Add PGG to the list of new packages.
-       Include minor changes from "Ramprasad B" <ramprasad_i82@yahoo.com>
-       updating dead URLs.
-
 2006-03-25  Karl Berry  <karl@gnu.org>
 
-       * ada-mode.texi, autotype.texi, calc.texi, cc-mode.texi, cl.texi,
-       * dired-x.texi, ebrowse.texi, ediff.texi, emacs-mime.texi,
-       * emacs-xtra.texi, emacs.texi, erc.texi, eshell.texi, eudc.texi,
-       * faq.texi, forms.texi, gnu.texi, gnus.texi, idlwave.texi,
-       * info.texi, message.texi, mh-e.texi, pcl-cvs.texi, pgg.texi,
-       * rcirc.texi, reftex.texi, sc.texi, ses.texi, sieve.texi,
-       * speedbar.texi, url.texi, vip.texi, viper.texi, widget.texi,
-       * woman.texi: (1) use @copyright{} instead of (C) in typeset text;
+       * emacs-xtra.texi, emacs.texi, gnu.texi:
+       (1) use @copyright{} instead of (C) in typeset text;
        (2) do not indent copyright year list (or anything else).
 
-2006-03-21  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi (Folders): Various edits.
-
-2006-03-20  Romain Francoise  <romain@orebokech.com>
-
-       * gnus.texi (Mail Folders): Grammar fix.
-
 2006-03-21  Juanma Barranquero  <lekktu@gmail.com>
 
        * files.texi (VC Dired Mode): Remove misplaced brackets.
 
        * help.texi (Help Mode): Document "C-c C-c".
 
-2006-03-19  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi (Replying): Document Mail-Followup-To.
-       Change manually-formatted table to multitable.  Add debugging info.
-       Move description of mh-reply-default-reply-to into paragraph
-       that describes its values.
-
-2006-03-17  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi: Use smallexample and smalllisp consistenly.
-       (Sending Mail Tour): Update method of entering
-       addresses and subject.
-       (Sending Mail Tour, Reading Mail Tour, Processing Mail Tour)
-       (Adding Attachments, Searching): Update screenshots for Emacs 22.
-
 2006-03-16  Luc Teirlinck  <teirllm@auburn.edu>
 
        * emacs-xtra.texi (Top): Avoid ugly continuation line in
 
        * emacs.texi (Top): Update node listings.
 
-2006-03-15  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version number change only.
-
-2006-03-14  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi: Add index entries around each paragraph rather than
-       depend on entries from beginning of node.  Doing so ensures that
-       index entries are less likely to be forgotten if text is cut and
-       pasted, and are necessary anyway if the references are on a
-       separate page.  It seems that makeinfo is now (v. 4.8) only
-       producing one index entry per node, so there is no longer any
-       excuse not to.  Use subheading instead of heading.  The incorrect
-       use of heading produced very large fonts in Info--as large as the
-       main heading.
-       (From Bill Wohler): MH-E never did appear in Emacs 21--MH-E
-       versions 6 and 7 appeared *around* the time of these Emacs releases.
-
-2006-03-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Clean view): Document new startup options.
-
 2006-03-12  Richard Stallman  <rms@gnu.org>
 
        * calendar.texi: Various cleanups.
 
-2006-03-11  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi (Preface, More About MH-E, Options, HTML, Folders)
-       (Composing, Scan Line Formats): Fix @refs.
-       (Getting Started): Define MH profile and MH profile components.
-       (Incorporating Mail, Reading Mail, Viewing, Printing)
-       (Sending Mail, Forwarding, Editing Drafts, Inserting Letter)
-       (Signature, Aliases, Scan Line Formats): Use @code instead of @samp
-       for string constants.
-       (Tool Bar): Remove spurious quote.
-       (Junk): Use ``...'' instead of "...".
-       (Scan Line Formats): Replace @samp with @kbd.
-
 2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
 
        * search.texi (Regexps): Use @samp for regexp that is not in Lisp
        syntax.
 
-2006-03-10  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (NoCeM): Mention gnus-use-nocem can also be a number.
-
-2006-03-10  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Fancy Mail Splitting): Improve sentences so as to be
-       easy to understand.
-
-2006-03-09  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi: Markup fix.
-       (Fancy Mail Splitting): Specify new feature.
-
-2006-03-08  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Fancy Mail Splitting): Improve descriptions about
-       partial-words matching.
-
-2006-03-07  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * emacs-mime.texi (Display Customization): Reword image/.* stuff.
-
-       * gnus.texi (Oort Gnus): Add note about `gnus-load'.
-       (MIME Commands): Fix mm-discouraged-alternatives.
-
 2006-03-08  Luc Teirlinck  <teirllm@auburn.edu>
 
        * search.texi (Regexps): More accurately describe which characters
        are special in which situations.  Recommend _not_ to quote `]' or
        `-' when they are not special.
 
-2006-03-07  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version number change only.
-
-2006-03-06  Bill Wohler  <wohler@newt.com>
-
-       * mh-e.texi: Move from SourceForge repository to Savannah.
-       This is version 7.93, which is a total rewrite from the previous
-       edition 1.3 for MH-E version 5.0.2, and corresponds to MH-E
-       version 7.93.
-
-2006-03-03  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Oort Gnus): Add `mm-fill-flowed'.
-
-2006-03-01  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Interaction): Add item about `org-mouse.el' by
-       Piotr Zielinski.
-       (Managing links): Document that also mouse-1 can be used to
-       activate a link.
-       (Headlines, FAQ): Add entry about hiding leading stars.
-       (Miscellaneous): Resort the sections in this chapter to a more
-       logical sequence.
-
 2006-02-28  Andre Spiegel  <spiegel@gnu.org>
 
        * files.texi (Old Versions): Clarify operation of C-x v =.
 
-2006-02-27  Simon Josefsson  <jas@extundo.com>
-
-       * emacs-mime.texi (Flowed text): Add mm-fill-flowed.  (Sync
-       2004-01-27 from the trunk).
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * cc-mode.texi: Rename c-hungry-backspace to
-       c-hungry-delete-backwards, at the request of RMS.  Leave the old
-       name as an alias.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * cc-mode.texi: Correct the definition of c-beginning-of-defun, to
-       include the function header within the defun.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * cc-mode.texi: Correct two typos.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * cc-mode.texi (Comment Commands): State that C-u M-; kills any
-       existing comment.
-       (Electric Keys): Add a justification for electric indentation.
-       (Hungry WS Deletion): Clear up the names and complications of the
-       BACKSPACE and DELETE keys.
-
-2006-02-23  Juri Linkov  <juri@jurta.org>
-
-       * faq.texi (Common requests): Move `Turning on auto-fill by
-       default' after `Wrapping words automatically'.  Move `Working with
-       unprintable characters' before `Searching for/replacing newlines'.
-       Move `Replacing highlighted text' after `Highlighting a region'.
-       Merge `Repeating commands' and `Repeating a command as many times
-       as possible' into the former.
-       (Packages that do not come with Emacs): Add refs to Gmane and
-       etc/MORE.STUFF.
-
-2006-02-23  Juri Linkov  <juri@jurta.org>
-
-       * faq.texi (Newsgroup archives): Update URLs of GNU mail archives.
-       (Reporting bugs): Suggest using `M-x report-emacs-bug'.
-       Add xref to `(emacs)Reporting Bugs'.
-       (Getting a printed manual): Add URL to other formats of the manual.
-       (Common requests): Fix menu.
-       (Highlighting a region): Remove ref to `Turning on syntax highlighting'.
-       (Horizontal scrolling): Mention `truncate-partial-width-windows'.
-       (Inserting text at the beginning of each line): Add pxref to
-       `Changing the included text prefix'.
-       (Forcing the cursor to remain in the same column): Mention `track-eol'
-       and `set-goal-column'.  Add pxref to `(emacs)Moving Point'.
-       (Replacing text across multiple files): Add keybinding `Q' for
-       `dired-do-query-replace'.
-
-2006-02-22  Carsten Dominik  <dominik@science.uva.nl>
-
-       * reftex.texi: Version number and date change only.
-
-       * org.texi (Internal Links): Rewrite to cover the modified
-       linking system.
-
 2006-02-21  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (Watch Expressions): Update and describe
 
        * building.texi (Watch Expressions): Update and be more precise.
 
-2006-02-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * faq.texi: Remove the coding cookie, it's not needed anymore.
-
 2006-02-15  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 
        * maintaining.texi (Create Tags Table): Explain why the
 2006-02-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * display.texi (Standard Faces):
-       * faq.texi (Colors on a TTY):
        * files.texi (Visiting):
        * frames.texi (Clipboard):
        * glossary.texi (Glossary) <Clipboard>:
        * xresources.texi (X Resources): Mention Mac OS port.
 
-2006-02-12  Karl Berry  <karl@gnu.org>
-
-       * faq.texi (Emacs for Atari ST): Use Sch@"auble instead of the
-       8-bit accented a.
-
 2006-02-12  Richard M. Stallman  <rms@gnu.org>
 
        * building.texi (Building): Clarify topic in intro.
        * macos.texi (Mac International): Rename "fontset-mac" to
        "fontset-standard".
 
-2006-02-09  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Gnus Versions): Add history beyond start of Oort.
-
 2006-02-09  Mathias Dahl  <mathias.dah@gmail.com>
 
        * dired.texi (Tumme): Basic documentation for Tumme added.
 
-2006-02-08  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (Top): Remove paragraph about the FAQ being a
-       transitional document, etc.
-       (Searching for/replacing newlines): New node.
-       (Yanking text in isearch): New node.
-       (Inserting text at the beginning of each line): Rename and make
-       more general, mention `M-;' in Message mode.
-
 2006-02-07  Luc Teirlinck  <teirllm@auburn.edu>
 
        * mule.texi (International):
        * programs.texi (Basic Indent): Fix typos.
 
-       * faq.texi (Meta key does not work in xterm)
-       (Emacs does not display 8-bit characters)
-       (Inputting eight-bit characters):
        * custom.texi (Minor Modes):
        * display.texi (Text Display):
        * commands.texi (Text Characters): Update xrefs.
 
        * anti.texi: Minor cleanup.
 
-2006-02-06  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (VM): VM now at version 7.19.
-       Set myself as maintainer of this file.
-
-2006-02-04  Michael Olson  <mwolson@gnu.org>
-
-       * erc.texi (History): Note that ERC is now included with Emacs.
-
 2006-02-03  Eli Zaretskii  <eliz@gnu.org>
 
        * custom.texi (Init File, Find Init): Add cross-references to
 
        * buffers.texi: Minor clarifications.
 
-2006-01-31  Romain Francoise  <romain@orebokech.com>
-
-       * message.texi (Message Headers): Explain what
-       `message-alternative-emails' does in more detail.
-       Update copyright year.
-
 2006-01-31  Richard M. Stallman  <rms@gnu.org>
 
        * display.texi (Scrolling, Horizontal Scrolling, Follow Mode):
        * basic.texi (Basic Undo): Rename from Undo.  Most of text
        moved to new Undo node.
 
-2006-01-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * makefile.w32-in (clean): Add newsticker, sieve, pgg, erc and rcirc.
-
 2006-01-29  Chong Yidong  <cyd@stupidchicken.com>
 
        * basic.texi (Continuation Lines, Inserting Text):
        * commands.texi: Minor cleanups.  Refer to "graphical" terminals,
        rather than X.
 
-       * cc-mode.texi (Indentation Commands): Inserts newline, not "linefeed".
-
        * basic.texi: Minor cleanups.
        (Undo): selective-undo moved.
 
-2006-01-29  Michael Olson  <mwolson@gnu.org>
-
-       * makefile.w32-in ($(infodir)/erc, erc.dvi): New targets.
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add ERC.
-
-       * faq.texi (New in Emacs 22): Mention ERC.
-
-2006-01-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * rcirc.texi: Capitalize dir entry for consistency with the entry
-       in info/dir and other entries in the Emacs category.
-       Fix typos.  Delete trailing whitespace.
-
-2006-01-28  Bj\e,Av\e(Brn Lindstr\e,Av\e(Bm  <bkhl@elektrubadur.se>
-
-       * rcirc.texi: Some @cindex changes, some changes from @kbd to @key.
-
-2006-01-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in ($(infodir)/rcirc, rcirc.dvi): New targets.
-       (INFO_TARGETS, DVI_TARGETS): Add rcirc.
-
-       * Makefile.in (../info/rcirc, rcirc.dvi): New targets.
-       (INFO_TARGETS, DVI_TARGETS): Add rcirc.
-
-2006-01-27  Alex Schroeder  <alex@gnu.org>
-
-       * rcirc.texi: New file.
-
 2006-01-25  Luc Teirlinck  <teirllm@auburn.edu>
 
        * anti.texi (Antinews): Various corrections and additions.
        * custom.texi (Easy Customization, Customization Groups)
        (Browsing Custom): Mention links along with buttons.
 
-       * widget.texi (User Interface): Add S-TAB for widget-backward.
-
-2006-01-22  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.52.
-
-       * tramp.texi (Frequently Asked Questions): Remove Ange-FTP item.
-       Add Tramp disabling item.  New item for common connection problems.
-       (various): Apply "ftp" as method for the download URL.
-       (Bug Reports): Refer to FAQ for common problems.
-
 2006-01-21  Eli Zaretskii  <eliz@gnu.org>
 
-       * widget.texi (User Interface): Use @key for TAB.
-
        * text.texi (TeX Print): Use @key for TAB.
 
-       * ses.texi (Formulas, Printer functions): Use @key for TAB.
-
        * kmacro.texi (Keyboard Macro Step-Edit): Use @key for TAB.
 
-       * ebrowse.texi (Switching to Tree, Symbol Completion): Use @key
-       for TAB.
-
-       * cc-mode.texi (Indentation Calculation): Use @key for TAB.
-
 2006-01-15  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
 
        * files.texi (File Aliases): Don't claim that usually separate
 
        * programs.texi (Hungry Delete): Upcase @key argument.
 
-2006-01-16  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi: Update copyright.
-
 2006-01-16  Juri Linkov  <juri@jurta.org>
 
        * display.texi (Standard Faces): Add `mode-line-buffer-id'.
        Move `mode-line-highlight' before `mode-line-buffer-id'.
 
-2006-01-13  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Article Washing): Additions.
-
-2006-01-08  Alex Schroeder  <alex@gnu.org>
-
-       * pgg.texi (Caching passphrase): Rewording.
-
 2006-01-14  Richard M. Stallman  <rms@gnu.org>
 
        * basic.texi (Inserting Text): Minor cleanup.
 
-2006-01-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Agenda commands): Document tags command.
-
 2006-01-11  Luc Teirlinck  <teirllm@auburn.edu>
 
        * custom.texi (Changing a Variable, Face Customization):
        Update for changes in Custom menus.
 
-2006-01-10  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (RSS): Document nnrss-wash-html-in-text-plain-parts.
-
-2006-01-06  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (RSS): Addition.
-
-2005-12-22  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Summary Post Commands): Fix function bound to `S O p'.
-
-2005-12-19  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * emacs-mime.texi (Display Customization): Add setting example to
-       mm-discouraged-alternatives.
-
-2006-01-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * flymake.texi (Obtaining Flymake): Remove chapter since Emacs's
-       version is the canonical version.
-
-2006-01-08  Alex Schroeder  <alex@gnu.org>
-
-       * pgg.texi (Caching passphrase): Rewording.
-
-2006-01-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * flymake.texi (Obtaining Flymake): Update Flymake's CVS
-       repository URL.
-
-2006-01-06  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Removed the accidentally re-added empty line in the
-       direntry.
-
 2006-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * macos.texi (Mac International): Undo last change.
 
-2006-01-05  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Agenda Views): Chapter reorganized.
-
 2006-01-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * custom.texi (Custom Themes): Describe the new
 
        * basic.texi (Position Info): Update example.
 
-2005-12-29  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (Using Customize): New node.
-
-2005-12-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * org.texi: Remove blank line in @direntry.  It is non-standard
-       and recursively produces blank lines all over the dir file (when
-       using Texinfo 4.8).
-
 2005-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * frames.texi (Dialog Boxes): Add x-gtk-show-hidden-files.
        "Similar" refer to the correct item.
        (Indirect Buffers): Minor rewording.
 
-2005-12-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * widget.texi (atoms): Delete obsolete remark about `file' widget.
-
 2005-12-20  Juri Linkov  <juri@jurta.org>
 
        * files.texi (VC Status): Put P and N near p and n.
 
-2005-12-20  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Tags): Boolean logic documented.
-       (Agenda Views): Document custom commands.
-
-2005-12-20  David Kastrup  <dak@gnu.org>
-
-       * faq.texi (AUCTeX): Update version and mailing list info.
-
 2005-12-19  Richard M. Stallman  <rms@gnu.org>
 
        * programs.texi (Electric C): Delete the info about newline control.
        * frames.texi (Tool Bars): Mention that you can turn off tool bars
        permanently via the customize interface.
 
-2005-12-17  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (MIME Commands): Mention addition of
-       multipart/alternative to gnus-buttonized-mime-types and add xref
-       to mm-discouraged-alternatives.
-
-       * emacs-mime.texi (Display Customization): Mention addition of
-       "image/.*" and add xref to gnus-buttonized-mime-types in the
-       mm-discouraged-alternatives section.
-
-2005-12-16  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Tags): New section.
-       (Agenda Views): Chapter reorganized.
-
 2005-12-16  Ralf Angeli  <angeli@iwi.uni-sb.de>
 
        * killing.texi (Killing by Lines): Document `kill-whole-line'
        function.
 
-2005-12-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * org.texi (Internal Links): Add a missing comma after an @xref.
-
 2005-12-16  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
 
        * buffers.texi (Select Buffer): Change `prev-buffer' to
        `previous-buffer'.  Indicate that these functions use a frame
        local buffer list.
 
-2005-12-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * faq.texi (Filling paragraphs with a single space): No need to
-       change sentence-end now.
-
-2005-12-13  Romain Francoise  <romain@orebokech.com>
-
-       * faq.texi (Scrolling only one line): Use `scroll-conservatively'.
-
-2005-12-12  Jay Belanger  <belanger@truman.edu>
-
-       * faq.texi (Calc): Update version number.
-
-2005-12-12  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Progress Logging): New section.
-
 2005-12-12  Richard M. Stallman  <rms@gnu.org>
 
        * custom.texi (Easy Customization): Change menu comment.
 
        * files.texi (Old Versions): Use @table.
 
-2005-12-10  Romain Francoise  <romain@orebokech.com>
-
-       Update the Emacs FAQ for the 22.1 release.
-
-       * faq.texi: Set VER to `22.1'.
-       (Basic editing): Explain how to use localized versions of the
-       Tutorial.  Mention that `C-h r' displays the manual.  Delete
-       obsolete WWW link to an Emacs 18 tutorial.
-       (Getting a printed manual): Point to the new locations of the
-       manuals on the GNU Web site.
-       (Emacs Lisp documentation): Explain that the Emacs Lisp manual is
-       available via Info (it was previously distributed separately).
-       (Installing Texinfo documentation): The latest version of Texinfo
-       is 4.8, not 4.0.
-       (Informational files for Emacs): COPYING is the GNU General Public
-       License, not the Emacs General Public License.
-       (Informational files for Emacs): Delete obsolete link to the
-       GNUinfo pages as they have been removed from the GNU Web site.
-       (New in Emacs 22): New node.
-       (Setting up a customization file): Say that most packages support
-       Customize nowadays.
-       (Colors on a TTY): Delete reference to instructions on how to
-       enable syntax highlighting, it is now enabled by default.
-       (Turning on abbrevs by default): Emacs now reads the abbrevs file
-       at startup automatically.
-       (Controlling case sensitivity): Mention `M-c' in isearch.
-       (Using an already running Emacs process): Emacs now creates the
-       socket in `/tmp/emacsUID'.  Fix typos.  Change default location of
-       gnuserv.  As emacsclient can now run Lisp code as well, delete a
-       sentence praising gnuserv for that.  Simplify description of how
-       the client/server operation works.
-       (Compiler error messages): Delete obsolete text (compile.el has
-       been rewritten).
-       (Indenting switch statements): Fix typo.
-       (Matching parentheses): Simplify setup instructions, mention the
-       menu bar item in the Options menu.
-       (Repeating a command as many times as possible): Mention `C-x e'.
-       (Going to a line by number): Mention new keymap and bindings
-       `M-g M-g', `M-g M-p' and `M-g M-n'.
-       (Turning on syntax highlighting): Now on by default.  Simplify.
-       (Replacing highlighted text): Use `1', not `t'.
-       (Problems with very large files): The maximum size is now 256MB on
-       32-bit machines.
-       (^M in the shell buffer): Mention `comint-process-echoes'.
-       (Emacs for Apple computers): Emacs 22 has native support for Mac
-       OS X.
-       (Translating names to IP addresses): Delete node.
-       (Binding keys to commands): Fix typo.
-       (SPC no longer completes file names): New node.
-       (MIME with Emacs mail packages): Delete section about the Emacs
-       MIME FAQ (it's not reachable anymore).
-
 2005-12-10  David Koppelman  <koppel@ece.lsu.edu>
 
        * display.texi (Highlight Interactively): Include
        prefix keys even when mark is active.  Decribe that RET moves
        cursor to next corner in rectangle; clarify insert around rectangle.
 
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * cc-mode.texi: The manual has been extensively revised: the
-       information about using CC Mode has been separated from the larger
-       and more difficult chapters about configuration.  It has been
-       updated for CC Mode 5.31.
-
-2005-12-05  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * pgg.texi (User Commands): Fix description of pgg-verify-region.
-       (Selecting an implementation): Fix descriptions.
-
-2005-11-30  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * message.texi (Various Message Variables): Addition.
-
-2005-11-29  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * message.texi: Fix default values.
-
-2005-11-25  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * message.texi (Header Commands): Clarify descriptions of
-       message-cross-post-followup-to, message-reduce-to-to-cc, and
-       message-insert-wide-reply.
-       (Various Commands): Fix kindex for message-kill-to-signature;
-       clarify description of message-tab.
-
-2005-11-22  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * message.texi (Mailing Lists): Fix description about MFT.
-
-       * gnus.texi (Emacs Lisp): Use ~/.gnus.el instead of ~/.emacs.
-
-2005-11-17  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Slow Terminal Connection): Replace old description
-       with new one.
-
-2005-11-16  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Oort Gnus): Use ~/.gnus.el instead of ~/.emacs;
-       replace X-Draft-Headers with X-Draft-From.
-
-2005-11-14  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Various Various): Fix the default value of
-       nnheader-max-head-length.
-       (Gnus Versions): Fix typo.
-
 2005-12-08  Luc Teirlinck  <teirllm@auburn.edu>
 
        * custom.texi (Customization): Use xref to elisp manual for
        * mini.texi (Completion Commands, Completion):
        In file name input, SPC does not do completion.
 
-2005-12-08  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Structure editing): Document new functionality of
-       M-RET.
-
 2005-12-08  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (GDB Graphical Interface): Explain screen size
        (Other GDB User Interface Buffers): Describe features specific to
        GDB 6.4.
 
-2005-12-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * org.texi (Internal Links): Fix Texinfo usage.
-
-2005-12-06  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (TODO basics): Document the global todo list.
-       (TODO items): Documents sparse tree for specific TODO
-       keywords.
-
 2005-12-01  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (GDB User Interface Layout): Describe how to
        (Other GDB User Interface Buffers): Describe how to change a
        register value.
 
-2005-11-30  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Plain Lists): Typos fixed.
-
-2005-11-28  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Change references of `M-#' to `C-x *' prefix.
-
-2005-11-24  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Structure editing): New item moving commands added.
-       (Plain Lists): New section.
-
 2005-11-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * macos.texi (Mac Input): Remove description of
        * files.texi (Renaming and VC): Some back-ends don't
        handle renaming.
 
-2005-11-18  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (FAQ): Document `org-table-tab-jumps-over-hlines'.
-       (Agenda): Document commands `org-cycle-agenda-files' and
-       `org-agenda-file-to-front'
-       (Built-in table editor): Document `org-table-sort-lines'.
-       (HTML formatting): Export of hand-formatted lists.
-
 2005-11-17  Juri Linkov  <juri@jurta.org>
 
        * emacs.texi (Top):
        list of words or a regexp.  Add C-h d for apropos-documentation.
        Describe apropos-documentation-sort-by-scores user option.
 
-2005-11-10  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (XVarious): Fix description of gnus-use-toolbar; add
-       new variable gnus-toolbar-thickness.
-
-2005-11-08  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (XVarious): Revert description of gnus-use-toolbar.
-
-2005-11-07  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (X-Face): Fix description.
-       (XVarious): Remove gnus-xmas-logo-color-alist and
-       gnus-xmas-logo-color-style; fix description of gnus-use-toolbar.
-
-2005-11-01  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Group Parameters): Mention new variable
-       gnus-parameters-case-fold-search.
-       (Home Score File): Addition.
-
 2005-11-09  Luc Teirlinck  <teirllm@auburn.edu>
 
        * killing.texi (CUA Bindings): Add @section.
 
        * misc.texi (Shell Mode): Describe how to activate password echoing.
 
-2005-11-04  Ulf Jasper  <ulf.jasper@web.de>
-
-       * newsticker.texi: VERSION changed to 1.9.  Updated UPDATED.
-       (Overview): List supported feed types.
-       (Installation): No installation necessary when using autoload.
-       (Configuration): Rename "RSS" to "news".
-
-2005-11-04  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * pgg.texi (User Commands): Document additional passphrase
-       argument for pgg-encrypt-*, pgg-decrypt-*, and pgg-sign-* functions.
-       (Backend methods): Likewise for corresponding pgg-scheme-* functions.
-
-2005-11-04  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version number changed to 3.19.
-
 2005-11-04  Romain Francoise  <romain@orebokech.com>
 
        * mark.texi (Mark Ring): Fix typo.
 
        * anti.texi (Antinews): Likewise.
 
-2005-10-29  Sascha Wilde  <wilde@sha-bang.de>
-
-       * pgg.texi (How to use): Update the example to add autoload of
-       pgg-encrypt-symmetric-region.
-       (User Commands): Document pgg-encrypt-symmetric-region.
-       (Backend methods): Document pgg-scheme-encrypt-symmetric-region.
-
 2005-10-28  Bill Wohler  <wohler@newt.com>
 
        * help.texi (Help): Help mode now creates hyperlinks for URLs.
 
        * trouble.texi (Memory Full): Mention !MEM FULL! in mode line.
 
-2005-10-27  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Predefined Units): Fix the symbol for a TeX points,
-       mention other TeX-related units.
-
 2005-10-25  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (GDB Graphical Interface): Describe
 
        * custom.texi (Init File): Recommend when to use site-start.el.
 
-2005-10-23  Lars Hansen  <larsh@soem.dk>
-
-       * dired-x.texi (Miscellaneous Commands): Replace
-       dired-do-relative-symlink by dired-do-relsymlink and
-       dired-do-relative-symlink-regexp by dired-do-relsymlink-regexp.
-
-2005-10-23  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Predefined Units): Use `alpha' for the fine structure
-       constant.
-
-2005-10-23  Michael Albinus  <michael.albinus@gmx.de>
-
-       * faq.texi (Bugs and problems): Replace
-       `dired-move-to-filename-regexp' by
-       `directory-listing-before-filename-regexp'.
-
-2005-10-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * newsticker.texi (UPDATED): Set value.
-
-2005-10-17  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Document Groups): Remove duplicate item.
-
 2005-10-21  Juri Linkov  <juri@jurta.org>
 
        * custom.texi (Examining): Mention accessing the old variable
        value via M-n in set-variable.
 
-2005-10-21  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Summary): Mention iCalendar support.
-       (Exporting): Document iCalendar support.
-
 2005-10-18  Romain Francoise  <romain@orebokech.com>
 
        * files.texi (Version Systems): Capitalize GNU.
 
-       * viper.texi (Viper Specials): Likewise.
-
 2005-10-18  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (Compilation Mode): Remove redundant paragraph.
        (Watch Expressions): Remove paragraph to reflect code change.
 
-2005-10-17  Juri Linkov  <juri@jurta.org>
-
-       * info.texi (Getting Started, Search Index, Expert Info):
-       Fix wording.
-       (Search Text): Replace `echo area' with `mode line'.
-       (Search Index): Both `i' and `,' find all index entries.
-       Replace example `C-f' with `C-l' (which exists in index of Info
-       manual) and delete spaces in its keyboard input sequence.
-       Delete unnecessary explanations about literal characters.
-
 2005-10-16  Richard M. Stallman  <rms@gnu.org>
 
        * building.texi (Compilation Mode, Compilation): Clarified.
 
        * misc.texi (Saving Emacs Sessions): Mention savehist library.
 
-2005-10-14  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Document Server Internals): Addition.
-
-2005-10-13  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (A note on namespaces): Fix RFC reference.
-
-2005-10-12  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (RSS): Fix key description.
-
-2005-10-11  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi: Emacs/w3 -> Emacs/W3.
-       (Browsing the Web): Fix description.
-       (Web Searches): Ditto.
-       (Customizing W3): Ditto.
-
-2005-10-07  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Maildir): Clarify expire-age and expire-group.
-
 2005-10-13  Kenichi Handa  <handa@m17n.org>
 
        * basic.texi (Position Info): Fix previous change.
        * basic.texi (Position Info): Describe the case that Emacs shows
        "part of display ...".
 
-2005-10-11  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Integration): Mention using `a i' to compute definite
-       integrals.
-
-2005-10-11  Juri Linkov  <juri@jurta.org>
-
-       * info.texi: Rearrange nodes.
-       (Top): Update menu.  Change ref `Info for Experts' to
-       `Advanced Info Commands'.
-       (Getting Started): Fix description of manual's parts.
-       (Help-Int): Change xref `Info Search' to `Search Index', and
-       `Expert Info' to `Advanced'.
-       (Advanced): Move node one level up.
-       (Search Text, Search Index): New nodes split out from `Info Search'.
-       (Go to node, Choose menu subtopic, Create Info buffer): New nodes
-       split out from `Advanced'.
-       (Advanced, Emacs Info Variables): De-document editing an Info file
-       in Info.
-       (Emacs Info Variables): Move node from `Expert Info' to `Advanced'.
-       (Creating an Info File): Delete node and move its text to
-       `Expert Info'.
-
 2005-10-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * cmdargs.texi (Icons X): -nb => -nbi.
        (Watch Expressions): Explain how to make speedbar global.
        (Other GDB User Interface Buffers): Make references more precise.
 
-2005-10-10  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi (Workflow states): Documented that change in keywords
-       becomes active only after restart of Emacs.
-
 2005-10-09  Richard M. Stallman  <rms@gnu.org>
 
        * frames.texi (Speedbar): Clarify the text.
        * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type,
        added -nb, --no-bitmap-icon.
 
-2005-10-08  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.51.
-
-2005-10-08  Nick Roberts  <nickrob@snap.net.nz>
-
-       * speedbar.texi (Introduction): Describe new location of speedbar
-       on menubar.
-       (Basic Key Bindings): Remove descriptions of bindings that have
-       been removed.
-
 2005-10-07  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (GDB Graphical Interface): Add variables and
        functions to indices.  Be more precise.
 
-2005-10-05  Nick Roberts  <nickrob@snap.net.nz>
-
-       * speedbar.texi (GDB): Describe use of watch expressions.
-
 2005-10-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * frames.texi (Drag and Drop): Remove the x- from
        * mini.texi (Minibuffer): The default value now appears before the
        colon in minibuffer prompts.
 
-2005-09-28  Simon Josefsson  <jas@extundo.com>
-
-       * message.texi (IDNA): Fix.
-
-2005-09-28  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (NNTP): Remove nntp-buggy-select, nntp-read-timeout,
-       nntp-server-hook, and nntp-warn-about-losing-connection; fix
-       description of nntp-open-connection-function.
-       (Common Variables): Fix descriptions.
-
-2005-09-26  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Server Buffer Format): Document the %a format spec.
-
 2005-09-25  Richard M. Stallman  <rms@gnu.org>
 
        * search.texi (Regexp Search): Doc search-whitespace-regexp.
 
-2005-09-22  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Mail): Fix gnus-confirm-mail-reply-to-news entry.
-
 2005-09-20  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
 
        * text.texi (Paragraphs): Correction about Paragraph-Indent Text mode.
 
-2005-09-23  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi Version 3.16.
-
 2005-09-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * emacs.texi (Top): Update submenus from macos.texi.
        `mac-get-file-creator', `mac-set-file-type', `mac-get-file-type',
        and `mac-get-preference'.
 
-2005-09-19  Miles Bader  <miles@gnu.org>
-
-       * newsticker.texi: Get rid of CVS keywords.
-
-2005-09-15  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Finding the Parent): Fix description of how Gnus
-       finds article.
-
-2005-09-14  Jari Aalto  <jari.aalto@cante.net>
-
-       * gnus.texi (Advanced Scoring Examples): New examples to teach how
-       to drop off non-answered articles.
-
-2005-09-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * makefile.w32-in (newsticker.dvi): Use parentheses instead of curly
-       braces (which are unsupported by NMAKE) for macro `srcdir'.
-
-2005-09-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (INFO_TARGETS, DVI_TARGETS): Add newsticker targets.
-       (../info/newsticker, newsticker.dvi): New targets.
-
-2005-09-17  Ulf Jasper  <ulf.jasper@web.de>
-
-       * newsticker.texi: Replace @command with @code.  Replace @example
-       with @lisp.
-       (Top): Added explanations to menu items.
-       (GNU Free Documentation License): Removed.
-
 2005-09-16  Romain Francoise  <romain@orebokech.com>
 
        Update all files to specify GFDL version 1.2.
        Clarify effect of write-region-inhibit-fsync.
        (Misc File Ops): Say write-region-inhibit-fsync affects write-region.
 
-       * newsticker.texi: Fix @setfilename.
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add newsticker targets.
-       (../info/newsticker, newsticker.dvi): New targets.
-
 2005-09-14  Romain Francoise  <romain@orebokech.com>
 
        * files.texi (Saving): Mention write-region-inhibit-fsync.
 
 2005-09-03  Richard M. Stallman  <rms@gnu.org>
 
-       * search.texi (Search Case): Mention vars that control
-       case-fold-search for various operations.
-
-2005-08-30  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version 3.15.
-
-2005-08-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * ses.texi: Combine all three indices into one.
-       Correct a few typos.
-
-2005-08-19  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * emacs-mime.texi (time-date): Fix description of safe-date-to-time.
-
-2005-08-18  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * emacs-mime.texi (Handles): Remove duplicate item.
-       (Encoding Customization): Fix the default value for
-       mm-coding-system-priorities.
-       (Charset Translation): Emacs doesn't use mm-mime-mule-charset-alist.
-       (Basic Functions): Fix reference.
-
-2005-08-09  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (Charsets): Fj hierarchy uses iso-2022-jp.
+       * search.texi (Search Case): Mention vars that control
+       case-fold-search for various operations.
 
 2005-08-22  Juri Linkov  <juri@jurta.org>
 
 
 2005-08-18  Richard M. Stallman  <rms@gnu.org>
 
-       * faq.texi (Obtaining the FAQ): Delete refs to Lerner's email
-       and web site.
-
        * trouble.texi (Unasked-for Search):
        Delete xref to Keyboard Translations.
 
        * glossary.texi (Glossary): Delete xref.
 
-       * faq.texi (Swapping keys): Xref for normal-erase-is-backspace-mode,
-       not keyboard-translate.
-
        * custom.texi (Minor Modes): Say that the list here is not complete.
        (Keyboard Translations): Node deleted.
        (Disabling): Delete xref to it.
        * search.texi (Regexp Backslash, Regexp Example): New nodes split
        out of Regexps.
 
-       * faq.texi (Using regular expressions): Fix xref.
-
 2005-08-09  Juri Linkov  <juri@jurta.org>
 
        * building.texi (Compilation): Use `itemx' instead of `item'.
 
        * calendar.texi (Scroll Calendar): Document < and > in calendar.
 
-2005-08-09  Juri Linkov  <juri@jurta.org>
-
-       * info.texi (Help-P): Replace `Prev' with `Previous'.
-       (Help-M, Help-Xref): Add S-TAB.
-       (Help-FOO): Update `u' command.
-       (Help-Xref): Move info about Mouse-2 from `Help-Int'.
-       Update info about visibility of xref parts.
-       (Help-Int): Fix `m' command.  Rename `Info-last' to
-       `Info-history-back'.  Add `Info-history-forward'.
-       (Advanced): Fix `g*' and `M-n' commands.
-       (Info Search): Add `index-apropos' in stand-alone browser.
-       Add isearch commands.
-       (Emacs Info Variables): Remove `Info-fontify'.
-       Add `Info-mode-hook'.  Update face names.
-       Add `Info-fontify-maximum-menu-size',
-       `Info-fontify-visited-nodes', `Info-isearch-search'.
-
-2005-08-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.50.
-
-       * tramp.texi: Use @option{} consequently for method names.
-       (Inline methods, External transfer methods): Remove references to
-       Cygwin.
-       (Issues with Cygwin ssh): Explain trouble with Cygwin's ssh
-       implementation.
-
 2005-08-06  Eli Zaretskii  <eliz@gnu.org>
 
        * mule.texi (Coding Systems): Rephrase the paragraph about
        ($(infodir)/dir): New target, produced by running
        multi-install-info.bat.
 
-2005-07-27  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Startup Files): Fix name of gnus-site-init-file.
-       Mention that gnus-init-file is not read when Emacs is invoked with
-       --no-init-file or -q.
-
 2005-07-22  Eli Zaretskii  <eliz@gnu.org>
 
        * files.texi (Quoted File Names): Add index entry.
 
-2005-07-19  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version 3.14.
-
-2005-07-04  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version 3.13.
-
 2005-07-19  Juri Linkov  <juri@jurta.org>
 
        * files.texi (Comparing Files): Mention resync for `compare-windows'.
 
 2005-07-18  Juri Linkov  <juri@jurta.org>
 
-       * calc.texi (Time Zones, Logical Operations):
-       * cl.texi (Overview):
        * custom.texi (Easy Customization):
        * files.texi (Old Versions):
        * frames.texi (Wheeled Mice):
        * mule.texi (Specify Coding):
-       * org.texi (TODO types):
-       * sc.texi (Emacs 18 MUAs):
-       * speedbar.texi (Top):
        * text.texi (Cell Justification):
        * trouble.texi (After a Crash):
-       * url.texi (History):
        * xresources.texi (GTK styles):
        Delete duplicate duplicate words.
 
 
        * mini.texi (Completion Commands): Fix command name for ?.
 
-2005-07-16  Johan Bockgard  <bojohan@users.sourceforge.net>  (tiny change)
-
-       * cl.texi (Type Predicates): Document `atom' type.
-
 2005-07-16  Eli Zaretskii  <eliz@gnu.org>
 
        * display.texi (Standard Faces): Explain that customization of
 
        Update FSF's address in GPL notices.
 
-       * calc.texi (Copying):
        * doclicense.texi (GNU Free Documentation License):
-       * faq.texi (Contacting the FSF):
-       * mh-e.texi (Copying):
        * trouble.texi (Checklist): Update FSF's address.
 
-2005-07-03  Richard M. Stallman  <rms@gnu.org>
-
-       * flymake.texi (Example -- Configuring a tool called directly):
-       Update name of flymake-build-relative-filename.
-
-2005-06-29  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (NoCeM): gnus-nocem-verifyer defaults to pgg-verify.
-
-2005-06-29  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version 3.12.
-
 2005-06-24  Richard M. Stallman  <rms@gnu.org>
 
        * display.texi (Text Display): Change index entries.
        * makefile.w32-in (MAKEINFO): Use --force.
        (INFO_TARGETS, DVI_TARGETS): Make identical to the lists in
        Makefile.in.
-       (gnus.dvi): Use "..." to quote Sed args, so that it works with
-       more shells.
 
 2005-06-23  Richard M. Stallman  <rms@gnu.org>
 
        and put it in a separate node.  Add nobreak-space and
        escape-glyph.
 
-       * speedbar.texi (Creating a display): Texinfo usage fixes.
-
-       * tramp.texi (Customizing Completion, Auto-save and Backup):
-       Texinfo usage fixes.
-
 2005-06-23  Lute Kamstra  <lute@gnu.org>
 
        * mule.texi (Select Input Method): Fix typo.
 
 2005-06-23  Juanma Barranquero  <lekktu@gmail.com>
 
-       * building.texi (Grep Searching):
-       * dired-x.texi (Miscellaneous Commands):
-       * ediff.texi (Miscellaneous):
-       * gnus.texi (MIME Commands, Fancy Mail Splitting, Agent Visuals)
-       (Agent Variables):
-       * info.texi (Help-Xref):
-       * message.texi (Message Headers):
-       * org.texi (Remember):
-       * reftex.texi (Options (Defining Label Environments)):
-       (Options (Index Support)):
-       (Options (Viewing Cross-References)):
-       (Options (Misc)):
-       (Changes):
-       * speedbar.texi (Creating a display):
-       * tramp.texi (Customizing Completion, Auto-save and Backup):
-       Texinfo usage fix.
+       * building.texi (Grep Searching): Texinfo usage fix.
 
 2005-06-22  Miles Bader  <miles@gnu.org>
 
 
        * text.texi (Adaptive Fill): Minor clarification.
 
-2005-06-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version 3.11.
-
-2005-06-12  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Getting Started): Remove extra menu item.
-
 2005-06-10  Lute Kamstra  <lute@gnu.org>
 
        * emacs.texi (Top): Correct version number.
 
        * trouble.texi (After a Crash): Polish previous change.
 
-2005-05-31  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Notations Used in This Manual): Use @kbd for key
-       sequence.
-       (Demonstration of Calc): Mention another way of starting Calc.
-       (Starting Calc): Mention long name of M-#.
-       (Embedded Mode Overview): Remove unnecessary instruction.
-       (Other M-# commands): Rephrase `M-# 0' explanation.
-       (Basic Embedded Mode): Rewrite discussion of prefix arguments to
-       reflect current behavior.
-
-2005-05-30  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Hooks): Change description of calc-window-hook and
-       calc-trail-window-hook to match usage.
-       (Computational Functions): Add more constant-generating functions.
-       (Customizable Variables): Use defvar.
-
 2005-05-30  Noah Friedman  <friedman@splode.com>
 
        * trouble.texi (After a Crash): Mention emacs-buffer.gdb as a
        recovery mechanism.
 
-2005-05-28  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Assignments in Embedded Mode): Fix variable name.
-       (Basic Embedded Mode): Explain behavior of arguments to
-       calc-embedded-mode.
-
 2005-05-28  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (Other Buffers): SPC toggles display of
        floating point registers.
 
-2005-05-27  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Queries in Keyboard Macros): Rewrite to reflect
-       current behavior.
-
 2005-05-27  Nick Roberts  <nickrob@snap.net.nz>
 
        * files.texi (Log Buffer): Merge in description of Log Edit
 
        * building.texi (Lisp Eval): C-M-x with arg runs Edebug.
 
-2005-05-25  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Change Calc version number throughout.
-       (Keypad Mode): Change location in info output.
-       (Keypad mode overview): Move picture of keypad.
-
 2005-05-24  Luc Teirlinck  <teirllm@auburn.edu>
 
        * fixit.texi (Spelling): Delete confusing sentence; flyspell is
        printed manuals.
        (Intro): Use @xref for the Emacs Lisp Intro.
 
-2005-05-21  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Storing variables): Mention that only most variables
-       are void to begin with.
-
-2005-05-21  Kevin Ryde  <user42@zip.com.au>
-
-       * widget.texi (Basic Types): Update cross ref from "Enabling
-       Mouse-1 to Follow Links" to "Links and Mouse-1" per recent
-       lispref/text.texi change.
-
-2005-05-20  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version 3.09.
-
-2005-05-18  Carsten Dominik  <dominik@science.uva.nl>
-
-       * reftex.texi: Version 4.28.
-
 2005-05-18  Luc Teirlinck  <teirllm@auburn.edu>
 
        * buffers.texi (Select Buffer): Document `C-u M-g M-g'.
        * building.texi (Debugger Operation): Mention GUD tooltips are
        disabled with GDB in text command mode.
 
-2005-05-16  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Storing Variables): Mention `calc-copy-special-constant'.
-
 2005-05-16  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi: Replace toolbar with "tool bar" for consistency.
        * major.texi (Choosing Modes): normal-mode processes the -*- line.
        Add xref.
 
-2005-05-14  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Default Simplifications): Insert missing ! (logical
-       not operator).
-
-2005-05-14  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.49.
-
 2005-05-14  Luc Teirlinck  <teirllm@auburn.edu>
 
        * basic.texi (Moving Point): Mention `M-g g' binding for `goto-line'.
 
        * killing.texi (Deletion): Complete description of `C-x C-o'.
 
-2005-05-10  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Default Simplifications): Mention that 0^0 simplifies
-       to 1.
-
 2005-05-10  Richard M. Stallman  <rms@gnu.org>
 
        * building.texi (Compilation): Clarify recompile's directory choice.
 
        * building.texi (Debugger Operation): Clarify previous change.
 
-2005-04-29  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Version 3.08, structure reorganized.
-
 2005-04-28  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (Debugger Operation): Add description for
 
        * ack.texi: Delete info about lazy-lock.el and fast-lock.el.
 
-       * faq.texi: Delete info about lazy-lock.el and fast-lock.el.
-
 2005-04-19  Kim F. Storm  <storm@cua.dk>
 
        * building.texi (Compilation Mode): Add M-g M-n and M-g M-p bindings.
        xterm-mouse-mode is a minor mode and put in pxref to Minor Modes
        node.
 
-2005-04-15  Carsten Dominik  <dominik@science.uva.nl>
-
-       * org.texi: Update to version 3.06.
-
-2005-04-13  Lute Kamstra  <lute@gnu.org>
-
-       * cc-mode.texi: Prevent creating an unnecessary empty cc-mode.ss file.
-
 2005-04-12  Luc Teirlinck  <teirllm@auburn.edu>
 
        * frames.texi (XTerm Mouse): Xterm Mouse mode is now enabled by default.
 
        * major.texi (Choosing Modes): Document magic-mode-alist.
 
-2005-04-10  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * cl.texi (Porting Common Lisp): Fix typo.
-
 2005-04-10  Luc Teirlinck  <teirllm@auburn.edu>
 
        * rmail.texi (Rmail Basics): Clarify description of `q' and `b'.
 
        * xresources.texi (Lucid Resources): Add fontSet resource.
 
-2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (RSS): Addition.
-
 2005-04-09  Luc Teirlinck  <teirllm@auburn.edu>
 
        * display.texi (Useless Whitespace): `indicate-unused-lines' is
        The GNU/Linux console currently does not appear to support
        `xterm-mouse-mode'.
 
-2005-04-04  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Change Calc version number.
-       (Customizable variables): Fix description of calc-language-alist.
-       (Copying): Put in version 2 of GPL.
-
 2005-04-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
 
        * calendar.texi (Diary): Mention shell utility `calendar'.
 
        * cmdargs.texi (Misc X): Explain horizontal scroll bars don't exist.
 
-2005-04-01  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Troubleshooting Commands): Remove comment about
-       installation.
-       (Installation): Remove section.
-       (Customizable Variables): New section.
-       (Basic Embedded Mode, Customizing Embedded Mode, Graphics)
-       (Graphical Devices): Add references to Customizable Variables.
-
 2005-04-01  Lute Kamstra  <lute@gnu.org>
 
        * maintaining.texi (Change Log): add-change-log-entry uses
 
        * programs.texi (Fortran Motion): Fix previous change.
 
-2005-03-25  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * emacs-mime.texi (Display Customization): Markup fixes.
-       (rfc2047): Update.
-
-2005-03-23  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus-faq.texi: Replaced with auto-generated version.
-
 2005-03-29  Richard M. Stallman  <rms@gnu.org>
 
        * mule.texi (Single-Byte Character Support): Reinstall the C-x 8 info.
        * display.texi (Text Display): Add index entries for how no-break
        characters are displayed.
 
-2005-03-26  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
-
-       * dired-x.texi (Multiple Dired Directories): default-directory was
-       renamed to dired-default-directory.
-
 2005-03-26  Eli Zaretskii  <eliz@gnu.org>
 
        * files.texi (Visiting): Fix cross-references introduced with the
 
        * xresources.texi (GTK resources): Fix last change.
 
-2005-03-26  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Simplifying Formulas, Rewrite Rules):
-       Change description of top and bottom of fraction.
-       (Modulo Forms): Move description of how to create modulo forms to
-       earlier in the section.
-       (Fraction Mode): Suggest using : to get a fraction by dividing.
-       (Basic Arithmetic): Adjust placement of command name.
-       (Truncating the Stack): Emphasize that "hidden" entries are still
-       visible.
-       (Installation): Move discussion of printing manual to "About This
-       Manual".
-       (About This Manual): Mention how to print the manual.
-       (Reporting Bugs): Remove first person.
-       (Building Vectors): Add algebraic version of append.
-       (Manipulating Vectors): Fix algebraic version of calc-reverse-vector.
-       (Grouping Digits): Fix typo.
-
 2005-03-25  Chong Yidong  <cyd@stupidchicken.com>
 
        * xresources.texi (X Resources): GTK options documented too.
        hide-body won't hide lines before first header line.
        (TeX Mode): Add DocTeX mode.
 
-2005-03-25  Werner Lemberg  <wl@gnu.org>
-
-       * calc.texi, cl.texi, gnus.texi, idlwave.texi, reftex.texi:
-       Replace `legal' with `valid'.
-
-2005-03-25  Werner Lemberg  <wl@gnu.org>
-
-       * calc.texi, reftex.texi: Replace `illegal' with `invalid'.
-
-2005-03-24  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (General Mode Commands)
-       (Mode Settings in Embedded Mode): Add some explanation of
-       recording mode settings.
-
 2005-03-24  Richard M. Stallman  <rms@gnu.org>
 
        * mule.texi (Single-Byte Character Support): Delete mention
        of iso-acc.el and iso-transl.el.
 
-       * calc.texi: Remove praise of non-free software.
-
-       * idlwave.texi: Don't say where to get IDL or its non-free manual.
-       (Installation): Node deleted.
-
 2005-03-23  Lute Kamstra  <lute@gnu.org>
 
        * search.texi (Non-ASCII Isearch): Rename from Non-Ascii Isearch.
 
 2005-03-23  Richard M. Stallman  <rms@gnu.org>
 
-       * url.texi (HTTP language/coding): Improve last change.
-
        * search.texi: Delete explicit node pointers.
        (Incremental Search): New menu.
        (Basic Isearch, Repeat Isearch, Error in Isearch)
        * building.texi (Stack Buffer): Mention reverse contrast for
        *selected* frame (might not be current frame).
 
-2005-03-22  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Embedded Mode): Add new information on changing
-       modes.
-
 2005-03-21  Richard M. Stallman  <rms@gnu.org>
 
        * building.texi (Starting GUD): Add bashdb.
 
        * anti.texi: Total rewrite.
 
-2005-03-20  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.48.
-
-       * trampver.texi.in: Replace "Emacs" by "GNU Emacs".
-
-       * tramp.texi: Replace "Emacs" by "GNU Emacs".  Replace "Linux" by
-       "GNU/Linux".  Change all addresses to .gnu.org.
-       (Default Method): Offer shortened syntax for "su" and "sudo"
-       methods.
-
 2005-03-19  Chong Yidong  <cyd@stupidchicken.com>
 
        * ack.texi (Acknowledgments): Update.
 
 2005-03-07  Richard M. Stallman  <rms@gnu.org>
 
-       * url.texi: Fix usage of "e.g.".
-       (HTTP language/coding): Explain the rules for these strings.
-
        * misc.texi (Single Shell, Shell Options): Fix previous change.
 
        * building.texi (Debugger Operation): Update GUD tooltip enable info.
        (GUD Tooltips): Node deleted.
        (GDB Graphical Interface): Explain the two GDB modes here.
 
-       * woman.texi (Introduction): Minor cleanups.
-
-       * url.texi (HTTP language/coding): Get rid of "Emacs 21".
-
        * sending.texi (Sending Mail): Minor cleanup.
        (Mail Aliases): Explain quoting conventions.
        Update key rebinding example.
        (Movemail): Clarify two movemail versions.
        Clarify rmail-movemail-program.
 
-       * pcl-cvs.texi (About PCL-CVS): Get rid of "Emacs 21".
-       (Installation): Node deleted.
-
        * misc.texi (Single Shell): Replace uudecode example with gpg example.
        Document async shell commands.
        (Shell History): Clarify.
        (Hyperlinking): Explain Mouse-1 convention here.
        (Find Func): Node deleted.
 
-       * mh-e.texi (Preface): Get rid of "Emacs 21".
-
        * help.texi (Name Help): Xref to Hyperlinking.
 
        * glossary.texi (Glossary):
        * files.texi (Types of Log File): Explain how projects'
        methods can vary.
 
-       * eshell.texi (Installation): Delete node (for Emacs 20).
-
        * display.texi (Faces): Delete "Emacs 21".
 
        * custom.texi (Changing a Variable): C-M-i like M-TAB.
        * calendar.texi (Specified Dates): Mention `g w'.
        (Appointments): appt-activate toggles with no arg.
 
-2005-03-05  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * flymake.texi: Refill and tweak style in @lisp blocks.
-
 2005-03-05  Juri Linkov  <juri@jurta.org>
 
        * cmdargs.texi (Emacs Invocation): Add cindex
 
        * calendar.texi (iCalendar): No need to require it now.
 
-2005-03-03  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Slow/Expensive Connection): Don't abbreviate "very".
-
 2005-03-03  Nick Roberts  <nickrob@snap.net.nz>
 
        * trouble.texi (Contributing): Mention Savannah.  Direct users to
        * calendar.texi (Adding to Diary): Mention redrawing of calendar
        window.
 
-2005-03-01  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Trigonometric and Hyperbolic Functions):
-       Mention additional functions.
-       (Algebraic Simplifications): Mention additional simplifications.
-
 2005-02-27  Richard M. Stallman  <rms@gnu.org>
 
        * building.texi (Compilation): Update mode line status info.
 
        * cmdargs.texi (Initial Options): Add cross reference.
 
-2005-02-18  Jonathan Yavner  <jyavner@member.fsf.org>
-
-       * ses.texi: Add concept/function/variable indices (this work was
-       donated by Brad Collins <brad@chenla.org>, copyright-assignment
-       papers on file at FSF).
-
 2005-02-16  Luc Teirlinck  <teirllm@auburn.edu>
 
        * emacs.texi (Top): Update menu for splitting of node in
        * basic.texi (Continuation Lines): Simplify description of truncation,
        and refer to Display Custom for the rest of it.
 
-2005-02-10  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Change @LaTeX to La@TeX throughout.
-       Redefine @expr as @math for TeX output.
-       Redefine @texline as a no-op for TeX output.
-       Define @tfn, replace @t by @tfn throughout.
-
-2005-02-09  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Add macro for LaTeX for info output.
-
-2005-02-08  Kim F. Storm  <storm@cua.dk>
-
-       * texinfo.tex (LaTex): Add def.
-
-2005-02-06  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (TeX Language Mode): Add mention of LaTeX mode, and
-       change name to "TeX and LaTeX Language Modes."  Mention LaTeX mode
-       throughout manual.
-
 2005-02-06  Lute Kamstra  <lute@gnu.org>
 
        * basic.texi (Undo): Fix typo.
        * display.texi, mule.texi: Don't say just "option" when talking
        about variables.  Other minor cleanups.
 
-2005-01-28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi: Some edits based on comments from David Abrahams.
-
-2005-01-24  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus.texi (RSS): Fix the keystroke.
-
 2005-01-26  Lute Kamstra  <lute@gnu.org>
 
        * cmdargs.texi (Initial Options): Add a cross reference to `Init
        File'.  Mention the `-Q' option at the `--no-site-file' option.
 
-2005-01-24  David Kastrup  <dak@gnu.org>
-
-       * faq.texi: Update AUCTeX version info.
-
-2005-01-16  Xavier Maillard  <zedek@gnu-rox.org>  (tiny change)
-
-       * gnus-faq.texi ([4.1]): Typo.
-
 2005-01-22  David Kastrup  <dak@gnu.org>
 
        * building.texi (Grep Searching): Mention alias `find-grep' for
 
        * calendar.texi (Time Intervals): Delete special stuff for MS-DOS.
 
-2005-01-19  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Keep Arguments): Mention that keeping arguments
-       doesn't work with keyboard macros.
-
-2005-01-16  Richard M. Stallman  <rms@gnu.org>
-
-       * autotype.texi (Autoinserting): Fix small error.
-
-2005-01-16  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.47.
-
-       * tramp.texi (Compilation): New section, describing compilation of
-       remote files.
-
 2005-01-15  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
 
        * rmail.texi (Movemail): Explain differences
        * programs.texi (Multi-line Indent): Fix previous change.
        (Fortran Autofill): Simplify description of fortran-auto-fill-mode.
 
-2005-01-11  Kim F. Storm  <storm@cua.dk>
-
-       * widget.texi (Basic Types): Add :follow-link keyword.
-
-2005-01-09  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Basic Commands): Describe new behavior of calc-reset.
-
 2005-01-08  Richard M. Stallman  <rms@gnu.org>
 
        * display.texi (Faces): isearch-lazy-highlight-face renamed to
        and lazy-highlight.
        (Incremental Search): Update isearch highlighting info.
 
-2005-01-08  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Change throughout to reflect new default value of
-       calc-settings-file.
-
-2005-01-06  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * message.texi (Reply): `message-reply-to-function' should return
-       a list.  Suggested by ARISAWA Akihiro <ari@mbf.ocn.co.jp>.
-
-2005-01-06  Hiroshi Fujishima  <pooh@nature.tsukuba.ac.jp>  (tiny change)
-
-       * faq.texi (Changing load-path): Fix typo.
-
-2005-01-05  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Programming Tutorial): Replace kbd command by
-       appropriate characters for a keyboard macro.
-
-2005-01-04  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Basic Tutorial, Programming Tutorial): Remove caveats
-       for Lucid Emacs.
-       (Programming Tutorial): Mention that the user needs to be in the
-       right mode to compute some functions.
-
 2005-01-04  Richard M. Stallman  <rms@gnu.org>
 
        * custom.texi (Saving Customizations): Minor improvement.
 
-2005-01-04  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Rewrite rules): Remove an exercise (on 0^0) which is
-       no longer applicable.
-
 2005-01-03  Luc Teirlinck  <teirllm@auburn.edu>
 
        * custom.texi (Saving Customizations): Emacs no longer loads
        `custom-file' after .emacs.  No longer mention customizing through
        Custom.
 
-2005-01-01  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Programming Tutorial): Changed description of how to
-       edit keyboard macros to match current behavior.
-
 2005-01-01  Andreas Schwab  <schwab@suse.de>
 
        * killing.texi (Graphical Kill): Move up under node Killing,
        * files.texi (Saving): Describe new require-final-newline features
        and mode-require-final-newline.
 
-2004-12-31  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Mention C-cC-c as the way to finish editing throughout.
-
 2004-12-29  Richard M. Stallman  <rms@gnu.org>
 
        * custom.texi (File Variables): Clarify previous change.
        * basic.texi (Moving Point): C-e now runs move-end-of-line.
        (Undo): Doc undo-outer-limit.
 
-2004-12-20  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Types Tutorial): Emphasize that you can't divide by
-       zero.
-
-2004-12-17  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cc-mode.texi (Text Filling and Line Breaking): Put period after
-       @xref.
-       (Font Locking): Avoid @strong{Note:}.
-
-2004-12-17  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.46.
-
-       * tramp.texi (bottom): Add arch-tag.  It was lost, somehow.
-
-2004-12-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * url.texi: Correct typos.
-       (Retrieving URLs): @var{nil}->@code{nil}.
-       (HTTP language/coding, mailto): Replace  "GNU Emacs Manual" with
-       the standard "The GNU Emacs Manual" in fifth argument of @xref's.
-       (Dealing with HTTP documents): @inforef->@xref.
-
 2004-12-15  Juri Linkov  <juri@jurta.org>
 
        * mark.texi (Transient Mark, Mark Ring): M-< and other
        movement commands don't set mark in Transient Mark mode
        if mark is active.
 
-2004-12-15  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Consistently capitalized all mode names.
-       (Answers to Exercises): Mention that an answer can be a fraction
-       when in Fraction mode.
-
-2004-12-13  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Fix some TeX definitions.
-
 2004-12-12  Juri Linkov  <juri@jurta.org>
 
        * misc.texi (FFAP): Add C-x C-r, C-x C-v, C-x C-d,
        * mark.texi (Marking Objects): Marking commands also extend the
        region when mark is active in Transient Mark mode.
 
-2004-12-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * reftex.texi (Imprint): Remove erroneous @value's.
-
 2004-12-08  Luc Teirlinck  <teirllm@auburn.edu>
 
        * custom.texi (Saving Customizations): Emacs only loads the custom
        file automatically after the init file in version 22.1 or later.
        Adapt text and examples to this fact.
 
-       * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, $(infodir)/org)
-       (org.dvi, $(infodir)/url, url.dvi, clean): Add org and url manuals.
-
-2004-12-08  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Starting Calc): Remove comment about installation.
-       (Keypad Mode Overview): Remove comment about Emacs 19 support.
-
-2004-12-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * url.texi: Update @setfilename.
-       (Getting Started): No need to worry about Gnus versions.
-       (Dealing with HTTP documents): Use @inforef.
-
-       * org.texi: Fix @direntry file name.
-
 2004-12-07  Luc Teirlinck  <teirllm@auburn.edu>
 
        * frames.texi (Scroll Bars): The option `scroll-bar-mode' has to
        be set through Custom.  Otherwise, it has no effect.
 
-2004-12-07  Stefan  <monnier@iro.umontreal.ca>
-
-       * url.texi: New file.
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/url, url.dvi): Add it.
-
-2004-12-06  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Using Calc): Remove paragraph about installation.
-
-2004-12-06  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi: Use more Texinfo macros and less TeX defs.
-       Remove @refill's.
-
-2004-12-06  Richard M. Stallman  <rms@gnu.org>
-
-       * org.texi: New file.
-
 2004-12-05  Richard M. Stallman  <rms@gnu.org>
 
        * cmdargs.texi, doclicense.texi, xresources.texi, emacs.texi:
        * entering.texi: Rename Command Line to Emacs Invocation.
 
-       * Makefile.in (org.dvi, ../info/org): New targets.
-       (INFO_TARGETS): Add ../info/org.
-       (DVI_TARGETS): Add org.dvi.
-       (maintainer-clean): Remove the info files in the info dir.
-
        * misc.texi (Term Mode): Correcty describe C-c.
 
        * custom.texi (Easy Customization): Move up to section level,
        * frames.texi (Dialog Boxes): Rename use-old-gtk-file-dialog to
        x-use-old-gtk-file-dialog.
 
-2004-11-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * idlwave.texi: Fix the setfilename directive to put the produced
-       file in ../info.
-       (Continued Statement Indentation): Resurrect Jan D.'s change from
-       2004-11-03 that was lost when a newer version of idlwave.texi was
-       imported.
-
 2004-11-20  Richard M. Stallman  <rms@gnu.org>
 
        * text.texi (Fill Prefix): M-q doesn't apply fill prefix to first line.
        to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for
        suggestions.
 
-2004-12-08  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus-faq.texi ([5.1]): Added missing bracket.
-
-       * gnus.texi (Filtering Spam Using The Spam ELisp Package): Index
-       `spam-initialize'.
-
-2004-11-22  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * message.texi (Various Message Variables): Mention that all mail
-       file variables are derived from `message-directory'.
-
-       * gnus.texi (Splitting Mail): Clarify bogus group.
-
-2004-11-02  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * emacs-mime.texi (Encoding Customization): Fix
-       mm-coding-system-priorities entry.
-
 2004-11-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * frames.texi (Dialog Boxes):
-       * idlwave.texi (Continued Statement Indentation):
-       * reftex.texi (Options (Index Support)):
-       (Displaying and Editing the Index, Table of Contents):
-       * speedbar.texi (Creating a display, Major Display Modes): Replace
-       non-nil with non-@code{nil}.
+       * frames.texi (Dialog Boxes): Replace non-nil with non-@code{nil}.
 
 2004-11-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        (Fixed Width Mode, Table Conversion, Measuring Tables)
        (Table Misc): New nodes, documenting the Table Mode.
 
-2004-10-21  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Algebraic-Style Calculations): Removed a comment.
-
 2004-10-19  Jason Rumney  <jasonr@gnu.org>
 
        * makefile.w32-in (info): Change order of arguments to makeinfo.
 
        * calendar.texi (iCalendar): Update for package changes.
 
-2004-10-18  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * calc.texi (Reporting Bugs): Double up `@'.
-
-2004-10-18  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Reporting Bugs): Changed the address that bugs
-       should be sent to.
-
-2004-10-15  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (New Features): Add 5.11.
-
-       * message.texi (Resending): Remove wrong default value.
-
-       * gnus.texi (Mail Source Specifiers): Describe possible problems
-       of `pop3-leave-mail-on-server'.  Add `pop3-movemail' and
-       `pop3-leave-mail-on-server' to the index.
-
-2004-10-15  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * message.texi (Canceling News): Add how to set a password.
-
-2004-10-12  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Help Commands): Changed the descriptions of
-       calc-describe-function and calc-describe-variable to match their
-       current behavior.
-
-2004-10-12  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus-faq.texi ([5.9]): Improve code for reply-in-news.
-
-2004-10-12  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.45.
-
-       * tramp.texi (Frequently Asked Questions): Comment paragraph about
-       plink link.  The URL is outdated.  Originator contacted for
-       clarification.
-
-2004-10-10  Juri Linkov  <juri@jurta.org>
-
-       * gnus.texi (Top, Marking Articles): Join two menus in one node
-       because a node can have only one menu.
-
 2004-10-09  Luc Teirlinck  <teirllm@auburn.edu>
 
        * files.texi (Misc File Ops): View mode is a minor mode.
 
-2004-10-09  Juri Linkov  <juri@jurta.org>
-
-       * gnus.texi (Fancy Mail Splitting): Remove backslash in the
-       example of nnmail-split-fancy.
-
 2004-10-08  Glenn Morris  <gmorris@ast.cam.ac.uk>
 
        * calendar.texi (iCalendar): Style changes.
        * search.texi (Regexps): The regexp described in the example is no
        longer stored in the variable `sentence-end'.
 
-2004-10-06  Karl Berry  <karl@gnu.org>
-
-       * info.texi (@kbd{1}--@kbd{9}): No space around --, for
-       consistency with other uses of dashes.
-
 2004-10-06  Nick Roberts  <nickrob@snap.net.nz>
 
        * building.texi (Starting GUD): Note that multiple debugging
 
        * calendar.texi (iCalendar): New section for a new package.
 
-2004-10-05  Karl Berry  <karl@gnu.org>
-
-       * info.texi: Consistently use --- throughout, periods at end of
-       menu descriptions, and a couple typos.
-
 2004-10-05  Luc Teirlinck  <teirllm@auburn.edu>
 
        * text.texi: Various small changes in addition to the following.
        * display.texi (Display Custom) <indicate-buffer-boundaries>:
        Align with new functionality.
 
-2004-09-26  Jesper Harder  <harder@ifa.au.dk>
-
-       * sieve.texi (Manage Sieve API): nil -> @code{nil}.
-       * pgg.texi (User Commands, Backend methods): Do.
-       * gnus.texi: Markup fixes.
-       (Setting Process Marks): Fix `M P a' entry.
-       * emacs-mime.texi: Fixes.
-
-2004-09-23  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus-faq.texi ([5.12]): Fix code example for FQDN in Message-Ids
-       again.
-       Use 5.10 instead of 5.10.0.
-
-2004-09-20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Summary Mail Commands): S D e.
-
-2004-09-20  Raymond Scholz  <ray-2004@zonix.de>  (tiny change)
-
-       * gnus.texi (Misc Article): Refer to `Summary Buffer Mode Line' in
-       the gnus-article-mode-line-format section.
-
-2004-09-20  Helmut Waitzmann  <Helmut.Waitzmann@web.de>  (tiny change)
-
-       * gnus.texi (Various Summary Stuff): Fix the documentation for
-       gnus-newsgroup-variables.
-
-2004-09-20  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (MIME Commands): Added
-       gnus-mime-display-multipart-as-mixed,
-       gnus-mime-display-multipart-alternative-as-mixed,
-       gnus-mime-display-multipart-related-as-mixed.
-       (Mail Source Customization): Clarify `mail-source-directory'.
-       (Splitting Mail): Mention gnus-group-find-new-groups.
-       (SpamOracle): Fixed typo.
-
-       * gnus-faq.texi: Untabify.
-       ([6.3]): nnir.el is in contrib directory.
-
-       * message.texi (News Headers): Clarify how a unique ID is created.
-
-       * gnus.texi (Batching Agents): Fixed typo in example.  Reported
-       by Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>.
-
-2004-09-20  Andre Srinivasan  <andre@e2open.com>
-
-       * gnus.texi (Group Parameters): Added more on hooks.  (Small
-       change.)
-
-2004-09-20  Florian Weimer  <fw@deneb.enyo.de>
-
-       * gnus.texi (Charsets): Point to relevant section in emacs-mime.
-
 2004-09-22  Luc Teirlinck  <teirllm@auburn.edu>
 
        * display.texi (Display Custom): Remove stray `@end defvar'.
        * display.texi (Display Custom): Add `overflow-newline-into-fringe',
        `indicate-buffer-boundaries' and `default-indicate-buffer-boundaries'.
 
-2004-09-22  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Vectors as Lists): Added a warning that the tutorial
-       might be hidden during part of the session.
-
-2004-09-20  Jay Belanger  <belanger@truman.edu>
-
-       * calc.texi (Notations Used in This Manual): Put in an earlier
-       mention that DEL could be called Backspace.
-
 2004-09-20  Richard M. Stallman  <rms@gnu.org>
 
        * custom.texi (Hooks): Explain using setq to clear out a hook.
        * mini.texi (Repetition): Rename isearch-resume-enabled to
        isearch-resume-in-command-history and change default to disabled.
 
-2004-09-10  Simon Josefsson  <jas@extundo.com>
-
-       * gnus.texi (IMAP): Add example.  Suggested and partially written
-       by Steinar Bang <sb@dod.no>.
-
-2004-09-10  Teodor Zlatanov  <tzz@lifelogs.com>
-
-       * gnus.texi (IMAP): Add comments about imaps synonym to imap in
-       netrc syntax.
-
-2004-09-10  Teodor Zlatanov  <tzz@lifelogs.com>
-
-       * gnus.texi (Spam ELisp Package Sequence of Events): Some clarifications.
-       (Spam ELisp Package Global Variables): More clarifications.
-
-2004-09-10  Teodor Zlatanov  <tzz@lifelogs.com>
-
-       * gnus.texi (Spam ELisp Package Filtering of Incoming Mail):
-       Mention spam-split does not modify incoming mail.
-
-2004-09-10  Teodor Zlatanov  <tzz@lifelogs.com>
-
-       * gnus.texi (Spam ELisp Package Sequence of Events): Fix typo.
-
-2004-09-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (../info/gnus, gnus.dvi): Depend on gnus-faq.texi.
-
 2004-09-09  Kim F. Storm  <storm@cua.dk>
 
        * kmacro.texi (Save Keyboard Macro): Replace `name-last-kbd-macro'
        with new `kmacro-name-last-macro'.
 
-2004-09-09  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * makefile.w32-in (sieve, pgg): Use $(infodir).
-
 2004-09-08  Juri Linkov  <juri@jurta.org>
 
        * mini.texi (Minibuffer History): Add `history-delete-duplicates'.
 
-2004-09-08  Dhruva Krishnamurthy  <dhruva.krishnamurthy@gmail.com>  (tiny change)
-
-       * makefile.w32-in: Fix PGG and Sieve entries.
-
 2004-09-03  Juri Linkov  <juri@jurta.org>
 
        * search.texi (Incremental Search): Update wording for M-%.
        (Just Spaces): `tabify' converts sequences of at least two spaces
        to tabs.
 
-2004-08-28  Eli Zaretskii  <eliz@gnu.org>
-
-       * faq.texi (Emacs for MS-DOS): Update URLs for the MS-DOS port of
-       Emacs and related programs.
-
 2004-08-27  Luc Teirlinck  <teirllm@auburn.edu>
 
        * frames.texi (Secondary Selection): Setting the secondary
        Adapt node pointers to change in emacs.texi.
        * cmdargs.texi, doclicense.texi: Adapt node pointers.
 
-2004-08-27  Richard M. Stallman  <rms@gnu.org>
-
-       * faq.texi: Fix texinfo usage, esp. doublequotes.
-       (Difference between Emacs and XEmacs): Some clarification.
-
-       * faq.texi (Difference between Emacs and XEmacs):
-       Explain not to contrast XEmacs with GNU Emacs.
-
-2004-08-26  Richard M. Stallman  <rms@gnu.org>
-
-       * faq.texi (Difference between Emacs and XEmacs): Rewrite.
-
 2004-08-25  Kenichi Handa  <handa@m17n.org>
 
        * custom.texi (Non-ASCII Rebinding): Fix and simplify the
        * kmacro.texi (Keyboard Macro Counter, Keyboard Macro Step-Edit):
        Change section names.
 
-2004-08-22  David Kastrup  <dak@gnu.org>
-
-       * reftex.texi (AUCTeX): Update links, section name.
-
-       * faq.texi (Calc): Update availability (included in 22.1).
-       (AUCTeX): Update availability, information, versions, description.
-
 2004-08-21  Luc Teirlinck  <teirllm@auburn.edu>
 
        * kmacro.texi (Keyboard Macro Ring): Rename section.
        * custom.texi (Non-ASCII Rebinding):
        C-q always inserts the right code to pass to global-set-key.
 
-2004-08-14  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (../info/tramp, tramp.dvi): Depend on trampver.texi.
-
 2004-08-13  Luc Teirlinck  <teirllm@auburn.edu>
 
        * regs.texi (RegNumbers): Mention `C-x r i' binding for
 
        * help.texi (Help): Fix Texinfo usage.
 
-2004-08-11  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * cc-mode.texi: Various updates for CC Mode 5.30.9.
-
-2004-08-10  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.44.
-
-2004-08-05  Lars Hansen  <larsh@math.ku.dk>
-
-       * widget.texi (User Interface): Update how to separate the
-       editable field of an editable-field widget from other widgets.
-       (Programming Example): Add text after field.
-
 2004-07-24  Richard M. Stallman  <rms@gnu.org>
 
        * text.texi (Paragraphs): Update how paragraphs are separated
        * search.texi (Regexp Replace): Further update text for new
        replacement operators.
 
-2004-08-31  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * emacs-mime.texi (Encoding Customization): Add a note to the
-       mm-content-transfer-encoding-defaults entry.
-       (rfc2047): Update.
-
-       * gnus.texi (Article Highlighting): Add
-       gnus-cite-ignore-quoted-from.
-       (POP before SMTP): New node.
-       (Posting Styles): Addition.
-       (Splitting Mail): Add nnmail-split-lowercase-expanded.
-       (Fancy Mail Splitting): Ditto.
-       (X-Face): Add gnus-x-face.
-
-2004-08-30  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * emacs-mime.texi, gnus-faq.texi, gnus.texi, message.texi,
-       * pgg.texi, sieve.texi: Use @copying and @insertcopying.
-
-2004-08-22  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * gnus.texi (Mail Source Specifiers): Describe
-       `pop3-leave-mail-on-server'.
-
-2004-08-02  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * Makefile.in, makefile.w32-in: Added PGG and Sieve files.
-
-       * pgg.texi, sieve.texi: Import from the v5_10 branch of the Gnus
-       repository.  Change setfilename.
-
-       * emacs-mime.texi, gnus-faq.texi, gnus.texi, message.texi: Ditto.
-
 2004-07-18  Luc Teirlinck  <teirllm@auburn.edu>
 
        * emacs-xtra.texi (Subdir switches): Dired does not remember the
        * search.texi (Regexps): Delete redundant definition of `symbol' in
        description of `\_>'.  It already occurs in the description of `\_<'.
 
-2004-07-02  Juri Linkov  <juri@jurta.org>
-
-       * pcl-cvs.texi (Viewing differences): Add `d r'.
-
 2004-07-01  Juri Linkov  <juri@jurta.org>
 
        * search.texi (Incremental Search): Add C-M-w, C-M-y, M-%, C-M-%, M-e.
 
 2004-06-29  Jesper Harder  <harder@ifa.au.dk>
 
-       * ses.texi, viper.texi, search.texi, flymake.texi, faq.texi:
-       * eshell.texi, ediff.texi, calendar.texi: Markup fixes.
+       * search.texi, calendar.texi: Markup fixes.
 
 2004-06-25  Richard M. Stallman  <rms@gnu.org>
 
        * misc.texi (Shell History Copying): Document comint-insert-input.
        (Shell Ring): Describe comint-dynamic-list-input-ring here.
 
-2004-06-21  Karl Berry  <karl@gnu.org>
-
-       * info.texi (Top): Mention that only Emacs has mouse support.
-       (Getting Started): Mention this in a few other places.
-
 2004-06-20  Jesper Harder  <harder@ifa.au.dk>
 
        * msdog.texi (Text and Binary, MS-DOS Printing): Use m-dash.
        * dired.texi (Dired Enter): Mention conditions on `ls' switches.
        (Dired and Find): Mention differences with ordinary Dired buffers.
 
-2004-06-13  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * autotype.texi (Copyrights, Timestamps): Recommend
-       `before-save-hook' instead of `write-file-functions'.
-
 2004-06-13  Richard M. Stallman  <rms@gnu.org>
 
        * custom.texi (Init Syntax): Explain about vars that do special
        things when set with setq or with Custom.
        (Init Examples): Add line-number-mode example.
 
-2004-06-13  Lars Hansen  <larsh@math.ku.dk>
-
-       * dired-x.texi (dired-mark-omitted): Update keybinding.
-
 2004-06-12  Juri Linkov  <juri@jurta.org>
 
        * dired.texi (Operating on Files): Add dired-do-touch.
 
-2004-06-10  Kim F. Storm  <storm@cua.dk>
-
-       * pcl-cvs.texi (Viewing differences): Add 'd y'.
-
 2004-06-10  Juri Linkov  <juri@jurta.org>
 
        * building.texi (Lisp Eval): Add C-M-x on defface.
        * files.texi (Reverting): Auto-Revert mode and
        Global Auto-Revert mode no longer revert remote files.
 
-2004-06-05  Lars Hansen  <larsh@math.ku.dk>
-
-       * dired-x.texi (variable dired-omit-mode): Rename from
-       dired-omit-files-p.
-       (function dired-omit-mode): Rename from dired-omit-toggle.
-       Call dired-omit-mode rather than set dired-omit-files-p.
-       (dired-mark-omitted): Describe command.
-
-2004-05-29  Michael Albinus  <michael.albinus@gmx.de>
-
-       Version 2.0.41 of Tramp released.
-
-2004-05-29  Juanma Barranquero  <lektu@terra.es>
-
-       * makefile.w32-in (../info/flymake, flymake.dvi): New targets.
-       (INFO_TARGETS, DVI_TARGETS): Add Flymake.
-
 2004-05-29  Richard M. Stallman  <rms@gnu.org>
 
        * custom.texi (Init File): Two dashes start --no-site-file.
 
-       * cl.texi (Top): Call this chapter `Introduction'.
-       (Overview): In TeX, no section heading here.
-
-       * cc-mode.texi: Put commas after i.e. and e.g.  Minor cleanups.
-
 2004-05-29  Alan Mackenzie  <acm@muc.de>
 
        * programs.texi: Update for CC Mode 5.30 and incidental amendments.
 
        * emacs.texi: Remove the menu entry "Comments in C".
 
-2004-05-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (../info/flymake, flymake.dvi): New targets.
-       (INFO_TARGETS, DVI_TARGETS): Add Flymake.
-
-2004-05-29  Pavel Kobiakov  <pk_at_work@yahoo.com>
-
-       * flymake.texi: New file.
-
-2004-05-28  Simon Josefsson  <jas@extundo.com>
-
-       * smtpmail.texi (Authentication): Improve STARTTLS discussion.
-
 2004-05-27  Luc Teirlinck  <teirllm@auburn.edu>
 
        * dired.texi (Dired and Find): `find-ls-option' does not apply to
        * building.texi (GDB Graphical Interface): Update and describe
        layout first.
 
-2004-05-07  Kai Grossjohann  <kai@emptydomain.de>
-
-       Version 2.0.40 of Tramp released.
-
-2004-04-25  Michael Albinus  <Michael.Albinus@alcatel.de>
-
-       Complete rework, based on review by Karl Berry <karl@gnu.org>.
-
-       * tramp.texi (Auto-save and Backup): Explain exploitation of new
-       variables `tramp-backup-directory-alist' and
-       `tramp-bkup-backup-directory-info'.
-       (Overview, Connection types)
-       (External transfer methods, Default Method)
-       (Windows setup hints): Remove restriction of password entering
-       with external methods.
-       (Auto-save and Backup): Make file name example
-       (X)Emacs neutral.  In case of XEmacs, `bkup-backup-directory-info'
-       and `auto-save-directory' must be used.
-       (Frequently Asked Questions): Use "MS Windows NT/2000/XP" (not
-       only "NT").  Remove doubled entry "What kinds of systems does
-       @tramp{} work on".
-       (tramp): Macro removed.
-       (Obtaining Tramp): Flag removed from title.
-       (all): "tramp-" and "-" removed from flag names.  Flags `tramp'
-       and `trampver' used properly.  Flag `tramp-inst' replaced by
-       `installchapter'.  Installation related text adapted.
-
 2004-05-04  Jason Rumney  <jasonr@gnu.org>
 
        * makefile.w32-in: Revert last change.
 
        * makefile.w32-in (MULTI_INSTALL_INFO, ENVADD): Use forward slashes.
 
-2004-04-28  Masatake YAMATO  <jet@gyve.org>
-
-       * widget.texi (Programming Example): Remove overlays.
-
-2004-04-27  Jesper Harder  <harder@ifa.au.dk>
-
-       * faq.texi, viper.texi, dired-x.texi, autotype.texi: lisp -> Lisp.
-
 2004-04-23  Juanma Barranquero  <lektu@terra.es>
 
        * makefile.w32-in: Add "-*- makefile -*-" mode tag.
 
        * custom.texi (File Variables): Add safe-local-eval-forms.
 
-2004-04-05  Jesper Harder  <harder@ifa.au.dk>
-
-       * info.texi (Info Search): Add info-apropos.
-
 2004-04-02  Luc Teirlinck  <teirllm@auburn.edu>
 
        * files.texi (Reverting): Correct description of revert-buffer's
 
        * emacs.texi (Top): Add `Misc X'.
 
-       * faq.texi, trouble.texi: Fix help key bindings.
+       * trouble.texi: Fix help key bindings.
 
        * glossary.texi: Improve references.
 
 
        * sending.texi (Mail Methods): Fix xref to Message manual.
 
-2004-03-17  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * info.texi (Advanced): Replace @unnumberedsubsec by @subheading
-       (as suggested by Karl Berry).  Update information about colored
-       stars in menus.  Add new subheading describing M-n.
-
 2004-03-12  Richard M. Stallman  <rms@gnu.org>
 
-       * cl.texi (Top): Rename top node's title.
-
        * buffers.texi (Misc Buffer): Add index entry for rename-uniquely.
 
-2004-03-08  Karl Berry  <karl@gnu.org>
-
-       * info.texi: \input texinfo.tex instead of just texinfo, to avoid
-       problems making the texinfo distribution.
-
 2004-03-04  Richard M. Stallman  <rms@gnu.org>
 
        * search.texi (Regexps): Explain that ^ and $ have their
        (Indirect Buffers): Don't recommand clone-indirect-buffer
        for multiple compile and grep buffers.
 
-2004-02-29  Simon Josefsson  <jas@extundo.com>
-
-       * smtpmail.texi (Authentication): Changed the list of supported
-       authentication mechanisms from CRAM-MD5, PLAIN and LOGIN-MD5 to
-       CRAM-MD5 and LOGIN, tiny patch from Andreas Voegele
-       <voegelas@gmx.net>.
-
 2004-02-29  Juanma Barranquero  <lektu@terra.es>
 
        * makefile.w32-in (mostlyclean, clean, maintainer-clean):
        Use $(DEL) instead of rm, and ignore exit code.
 
-2004-02-29  Kai Grossjohann  <kgrossjo@eu.uu.net>
-
-       Tramp version 2.0.39 released.
-
-2004-02-29  Michael Albinus  <Michael.Albinus@alcatel.de>
-
-       * tramp.texi (Customizing Completion): Explain new functions
-       `tramp-parse-shostkeys' and `tramp-parse-sknownhosts'.
-       (all): Savannah URLs unified to "http://savannah.nongnu.org".
-       (Top): Refer to Savannah mailing list as the major one.  Mention
-       older mailing lists in HTML mode only.
-       (Auto-save and Backup): Add auto-save.  Based on wording of Kai.
-       (Frequently Asked Questions): Remote hosts must not be Unix-like
-       for "smb" method.
-       (Password caching): New node.
-       (External transfer methods): Refer to password caching for "smb"
-       method.
-
 2004-02-23  Nick Roberts  <nick@nick.uklinux.net>
 
        * building.texi (Watch Expressions): Update.
        (Title X): Remove alias -title.
        (Misc X): New node.
 
-2004-02-17  Karl Berry  <karl@gnu.org>
-
-       * info.texi (Help-Int): Mention the new line number feature.
-
 2004-02-15  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * frames.texi (Drag and drop): Add Motif to list of supported
        protocols.
 
-2004-02-14  Jonathan Yavner  <jyavner@member.fsf.org>
-
-       * ses.texi (Advanced Features): New functionality for
-       ses-set-header-row (defaults to current row unless C-u used).
-       (Acknowledgements): Add Stefan Monnier.
-
 2004-02-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * frames.texi (Drag and drop): New section.
 
 2003-12-29  Kevin Ryde  <user42@zip.com.au>
 
-       * viper.texi (Vi Macros): Fix reference to the Emacs manual.
-
        * programs.texi (C Modes): Fix the xref.
 
 2003-12-23  Nick Roberts  <nick@nick.uklinux.net>
        * files.texi: Say how to disable VC.  Suggested by Alan Mackenzie
        <acm@muc.de>.
 
-2003-11-30  Kai Grossjohann  <kai.grossjohann@gmx.net>
-
-       Tramp version 2.0.38 released.
-
-       * tramp.texi (Remote shell setup): Warn of environment variables
-       FRUMPLE if user frumple exists.  Suggested by Sven Gabriel
-       <sven.gabriel@imk.fzk.de>.
-       (Configuration): Tramp now chooses base64/uuencode
-       automatically.  Update wording accordingly.
-       (Top): More description for the `Default Method' menu entry.
-       (Default Method): Use @code, not @var, for Lisp variables.
-       (Default Method): New subsection `Which method is the right one
-       for me?'  Suggested by Christian Kirsch.
-       (Configuration): Pointer to new subsection added.
-       (Default Method): Too many "use" in one sentence.
-       Rephrase.  Reported by Christian Kirsch.
-       (Filename Syntax): Old `su' example is probably a left-over from
-       the sm/su method naming.  Replace with `ssh', instead.
-       (External transfer methods, Auto-save and Backup):
-       Typo fixes.
-
-2003-11-02  Michael Albinus  <Michael.Albinus@alcatel.de>
-
-       * tramp.texi (all): Harmonize all occurences of @tramp{}.
-       (Top): Mention japanese manual only if flag `jamanual' is set.
-       Insert section `Japanese manual' in menu.
-
 2003-11-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * frames.texi (Dialog Boxes): Add use-file-dialog.
 
-2003-11-26  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * eshell.texi (Known Problems): Add doc item.
-
 2003-11-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
 
        * ack.texi: Note that Alan Mackenzie contributed the AWK support
        in CC Mode.
 
-2003-11-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * cc-mode.texi: Update for CC Mode 5.30.
-
-       Note: Please refrain from doing purely cosmetic changes like
-       removing trailing whitespace in this manual; it clobbers cvs
-       merging for no good reason.
-
 2003-11-02  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
 
        * man/ack.texi, man/basic.texi, man/cmdargs.texi:
        * man/commands.texi, man/custom.texi, man/display.texi:
-       * man/ediff.texi, man/emacs.texi, man/faq.texi, man/files.texi:
+       * man/emacs.texi, man/files.texi:
        * man/frames.texi, man/glossary.texi, man/killing.texi:
        * man/macos.texi, man/mark.texi, man/misc.texi, man/msdog.texi:
        * man/mule.texi, man/rmail.texi, man/search.texi:
-       * man/sending.texi, man/text.texi, man/tramp.texi:
-       * man/trouble.texi, man/vip.texi, man/viper.texi, man/widget.texi:
-       * man/woman.texi: Replace @sc{ascii} and ASCII with @acronym{ASCII}.
+       * man/sending.texi, man/text.texi, man/trouble.texi:
+       Replace @sc{ascii} and ASCII with @acronym{ASCII}.
 
 2003-11-01  Alan Mackenzie  <acm@muc.de>
 
        * search.texi (Scrolling During Incremental Search): Document a
        new scrolling facility in isearch mode.
 
-2003-10-26  Karl Berry  <karl@gnu.org>
-
-       * info.texi (Info Search): Echo area, not echo are.  From Debian
-       diff.
-
-2003-10-26  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * widget.texi (Defining New Widgets): Document new beavior of
-       :buttons and :children keywords.
-
 2003-10-22  Miles Bader  <miles@gnu.org>
 
        * Makefile.in (info): Move before $(top_srcdir)/info.
        * building.texi (Watch Expressions): Update section on data display
        to reflect code changes (GDB Graphical Interface).
 
-2003-10-17  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * tramp.texi (Inline methods): Small grammar fix.
-       (External transfer methods): Likewise.
-
 2003-10-13  Richard M. Stallman  <rms@gnu.org>
 
        * xresources.texi (GTK resources): Clean up previous change.
        * xresources.texi (GTK resources): Add a note that some themes
        disallow customizations.  Add scroll theme example.
 
-2003-10-08  Nick Roberts  <nick@nick.uklinux.net>
-
-       * speedbar.texi: Remove paragraph for GUD that is no longer true.
-
-2003-10-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * texinfo.tex: Replace `%' in arch tagline by @ignore.
-
 2003-09-30  Richard M. Stallman  <rms@gnu.org>
 
-       * dired-x.texi (Miscellaneous Commands): Delete M-g, w, T.
-
-       * widget.texi (User Interface): Fix typos.
-
-       * pcl-cvs.texi, cl.texi, woman.texi, ediff.texi: Fix @strong{Note:}.
-
        * cmdargs.texi (General Variables): Remove MAILRC envvar.
 
        * misc.texi (Saving Emacs Sessions): Shorten the section,
 
        * xresources.texi (GTK names in Emacs): Correct typo.
 
-2003-09-29  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * pcl-cvs.texi (Selected Files): Fix typo.
-
 2003-09-24  Luc Teirlinck  <teirllm@mail.auburn.edu>
 
        * cmdargs.texi (Font X): Mention new default font.  More
 
        * cmdargs.texi (Action Arguments): -f reads interactive args.
 
-2003-09-21  Karl Berry  <karl@gnu.org>
-
-       * info.texi (] and [ commands): No period at end of section title.
-
 2003-09-08  Lute Kamstra  <lute@gnu.org>
 
        * screen.texi (Mode Line): Say that POS comes before LINE.
 
        * misc.texi (Saving Emacs Sessions): Correct previous change.
 
-2003-08-26  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * widget.texi (User Interface): Explain the need of static text
-       around an editable field.
-
 2003-08-19  Luc Teirlinck  <teirllm@mail.auburn.edu>
 
-       * widget.texi (Basic Types): The argument to `:help-echo' can now
-       be a form that evaluates to a string.
-
        * emacs.texi (Top): Update menu to reflect new Keyboard Macros chapter.
        (Intro): Include kmacro.texi after fixit.texi instead of after
        custom.texi.  (As suggested by Kim Storm.)
 
        * emacs.texi (Keyboard Macros): Reference new keyboard macro topics.
 
-       * calc.texi (Queries in Macros): Update xref to keyboard macro query.
-
 2003-08-17  Edward M. Reingold  <reingold@emr.cs.iit.edu>
 
        * calendar.texi (Specified Dates): Add `calendar-goto-day-of-year'.
        * misc.texi (Saving Emacs Sessions): Manual M-x desktop-save not
        required.
 
-2003-08-16  Richard M. Stallman  <rms@gnu.org>
-
-       * dired-x.texi (Shell Command Guessing): Explain *.
-
-2003-08-16  Chunyu Wang  <spr@db.cs.hit.edu.cn>  (tiny change)
-
-       * pcl-cvs.texi (Log Edit Mode): Fix key binding for
-       log-edit-insert-changelog.
-
 2003-08-05  Richard M. Stallman  <rms@gnu.org>
 
        * programs.texi (Lisp Indent): Don't describe
        lisp-indent-function property here.  Use xref to Lisp Manual.
 
-2003-08-03  Karl Berry  <karl@gnu.org>
-
-       * info.texi: Need @contents.
-
 2003-08-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
 
        * calendar.texi (Date Formats): Document changed behaviour of
 
        * buffers.texi (List Buffers): Fix previous change.
 
-2003-07-20  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
-
-       Tramp version 2.0.36 released.
-
-       * tramp.texi (Remote shell setup): Explain about problems with
-       non-Bourne commands in ~/.profile and ~/.shrc.
-
 2003-07-13  Markus Rost  <rost@math.ohio-state.edu>
 
        * buffers.texi (List Buffers): Adjust to new format of *Buffer
 
 2003-07-07  Luc Teirlinck  <teirllm@mail.auburn.edu>
 
-       * info.texi (Help-Inv, Help-M, Help-Xref): Update following
-       renaming of `vis-mode' to `visible-mode'.
-
        * display.texi (Font Lock): Fix typo.
 
 2003-07-07  Richard M. Stallman  <rms@gnu.org>
 
        * help.texi (Library Keywords): Use @multitable.
 
-2003-07-04  Luc Teirlinck  <teirllm@mail.auburn.edu>
-
-       * info.texi (Top, Help-Small-Screen): Remove accidentally added
-       next, prev and up pointers.
-
-2003-07-02  Luc Teirlinck  <teirllm@mail.auburn.edu>
-
-       * info.texi (Help): Mention existence of Emacs and stand-alone
-       Info at the very beginning of the tutorial.
-       (Help-Inv): New node.
-       (Help-]): New node.
-       (Help-M): Systematically point out the differences between default
-       Emacs and stand-alone versions.  Delete second menu.
-       (Help-Xref): Systematically point out the differences between
-       default Emacs and stand-alone versions.
-       (Help-Int): Change `l' example.
-       (Expert Info): Fix typos.
-       (Emacs Info Variables): Mention `Info-hide-note-references' and
-       new default for `Info-scroll-prefer-subnodes'.
-
-2003-06-17  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
-
-       Version 2.0.35 of Tramp released.
-
-       * tramp.texi: From Michael Albinus <Michael.Albinus@alcatel.de>:
-       (Inline methods): Add methods `remsh' and `plink1'.
-       (External transfer methods): Add method `remcp'.
-       (Multi-hop Methods): Add method `remsh'.
-       Small patch from Adrian Aichner <adrian@xemacs.org>:
-       Fix minor typos.
-       (Concept Index): Added to make manual searchable via
-       `Info-index'.
-       (Version Control): Add cindex entry.
-
 2003-06-04  Richard M. Stallman  <rms@gnu.org>
 
        * programs.texi (Expressions): Delete C-M-DEL.
        non-English letters.  Explain how to set coding systems correctly
        and how to include the right coding cookie in the file.
 
-2003-05-24  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
-
-       * trampver.texi: Version 2.0.34 released.
-
 2003-05-22  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
 
        * indent.texi (Indentation): Explain the concepts.
        (Just Spaces): Explain why preventing tabs for indentation might
        be useful.
 
-2003-05-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * faq.texi: Improve previous changes.
-
-2003-05-02  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * faq.texi: Update copyright and maintenance details.
-       Update some package URLs, versions, and maintainers.
-       Remove many references to the Emacs Lisp Archive.
-
-2003-04-23  Simon Josefsson  <jas@extundo.com>
-
-       * smtpmail.texi: Fix license (the invariant sections mentioned has
-       never been part of the smtp manual).  Align info dir entry with
-       other emacs packages.
-
 2003-04-16  Richard M. Stallman  <rms@gnu.org>
 
        * search.texi (Regexps): Ref to Lisp manual for more regexp features.
 
-2003-04-08  Michael Albinus  <Michael.Albinus@alcatel.de>
-
-       * tramp.texi: Version 2.0.33 released.
-       Remove installation chapter.  Remove XEmacs specifics.
-
-2003-03-29  Richard M. Stallman  <rms@gnu.org>
-
-       * tramp.texi (Top): Undo the previous renaming.
-       (emacs-other-name, emacs-other-dir, emacs-other-file-name): Delete.
-
-2003-03-29  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
-
-       * Makefile.in (../info/tramp): Compile Emacs, instead of XEmacs,
-       version of manual.
-
-       * tramp.texi (Auto-save and Backup): New node.
-
-2003-03-29  Michael Albinus  <Michael.Albinus@alcatel.de>
-
-       * tramp.texi (Top): Include trampver.texi.  Rename "Emacs" to "GNU
-       Emacs" in order to have better differentiation to "XEmacs".
-       `emacs-other-name', `emacs-other-dir' and `emacs-other-file-name'
-       are new macros in order to point to the other Emacs flavor where
-       appropriate.  In info case, point to node `Installation' in order
-       to explain how to generate the other way.  In html case, make a
-       link to the other html file.
-       (Obtaining TRAMP): Added a paragraph saying to perform `autoconf'
-       after CVS checkout/update.
-       (Installation): Completely rewritten.
-       (Installation parameters, Load paths): New sections under
-       `Installation'.
-
-2003-02-28  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
-
-       * tramp.texi: Version 2.0.30 released.
-       Replace word "path" with "localname" where used as a component of
-       a Tramp file name.
-
-2003-02-28  Michael Albinus  <Michael.Albinus@alcatel.de>
-
-       * tramp.texi (Frequently Asked Questions): `tramp-chunksize'
-       introduced.
-       (Installation): Explain what to do if files from the tramp/contrib
-       directory are needed.
-
-2003-02-23  Alex Schroeder  <alex@emacswiki.org>
-
-       * smtpmail.texi (How Mail Works): New.
-
 2003-02-22  Alex Schroeder  <alex@emacswiki.org>
 
        * cmdargs.texi (General Variables): Document SMTPSERVER.
 
-       * smtpmail.texi: New file.
-
        * sending.texi: Remove SMTP node.
        (Mail Sending): Describe `send-mail-function'.  Link to SMTP
        library.
 
-       * Makefile.in: Build SMTP manual.
-
 2003-02-22  Alex Schroeder  <alex@emacswiki.org>
 
        * sending.texi (Sending via SMTP): Explain MTA/MUA.
 
        * xresources.texi (GTK names in Emacs): Add emacs-toolbar - GtkToolbar.
 
-2003-02-05  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
-
-       * tramp.texi: Version 2.0.29 released.
-       (Installation): In Emacs, use M-x texinfo-format-buffer RET, not
-       M-x makeinfo-buffer RET.  Reported by gebser@ameritech.net.
-
-2003-02-01  Michael Albinus  <Michael.Albinus@alcatel.de>
-
-       * tramp.texi (Frequently Asked Questions): Explain a workaround if
-       another package loads accidently Ange-FTP.
-
-2003-01-24  Michael Albinus  <Michael.Albinus@alcatel.de>
-
-       * tramp.texi (Customizing Completion): Add function
-       `tramp-parse-sconfig'.  Change example of
-       `tramp-set-completion-function', because parsing of ssh config
-       files looks more natural.
-
 2003-02-01  Kevin Ryde  <user42@zip.com.au>
 
        * glossary.texi (Glossary): Correction to cl cross reference.
        (GTK names in Emacs): New node.
        (GTK styles): New node.
 
-2003-01-15  ShengHuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus.texi: Do not use `path' in several locations.
-
 2003-01-09  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 
        * maintaining.texi (Create Tags Table): Add reference to the new
        `etags --help --lang=LANG' option.
 
-2002-12-26  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
-
-       * tramp.texi (External transfer methods): New method `smb'.  From
-       Michael Albinus.
-
-2002-11-05  Karl Berry  <karl@gnu.org>
-
-       * info.texi (Info-fontify): Reorder face list to avoid bad line
-       breaks.
-
-2002-10-06  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
-
-       * tramp.texi: Move @copying to standard place.  Use
-       @insertcopying.
-
 2002-10-02  Karl Berry  <karl@gnu.org>
 
-       * (ada-mode.texi autotype.texi calc.texi cc-mode.texi cl.texi
-       dired-x.texi ebrowse.texi ediff.texi emacs-mime.texi emacs.texi
-       eshell.texi eudc.texi faq.texi forms.texi idlwave.texi info.texi
-       message.texi mh-e.texi pcl-cvs.texi reftex.texi sc.texi ses.texi
-       speedbar.texi vip.texi viper.texi widget.texi woman.texi):
-       Per rms, update all manuals to use @copying instead of @ifinfo.
-       Also use @ifnottex instead of @ifinfo around the top node, where
-       needed for the sake of the HTML output.
-       (The Gnus manual is not fixed since it's not clear to me how it
-       works; and the Tramp manual already uses @copying, although in an
-       unusual way.  All others were changed.)
-
-2002-09-10  Jonathan Yavner  <jyavner@engineer.com>
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add SES.
-       (../info/ses, ses.dvi): New targets.
-       * ses.texi: New file.
-
-2002-09-06  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * texinfo.tex: Update to texinfo 4.2.
-
-2002-08-27  Carsten Dominik  <dominik@sand.science.uva.nl>
-
-       * reftex.texi: Update to RefTeX 4.19.
-
-2002-06-17  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add Tramp.
-       (../info/tramp, tramp.dvi): New targets.
-
-2002-01-04  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (DVI_TARGETS): Add calc.dvi.
-       (calc.dvi): Uncomment.
+       * emacs.texi: Per rms, update all manuals to use @copying instead of
+       @ifinfo. Also use @ifnottex instead of @ifinfo around the top node,
+       where needed for the sake of the HTML output.
 
 2001-12-20  Eli Zaretskii  <eliz@is.elta.co.il>
 
 
        * Makefile.in (emacsman): New target.
 
-2001-11-07  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (INFO_TARGETS): Add ../info/calc.
-       (../info/calc): New target.
-
 2001-10-20  Gerd Moellmann  <gerd@gnu.org>
 
        * (Version 21.1 released.)
 
        * Branch for 21.1.
 
-2001-04-14  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (../info/info): Use an explicit -o switch to
-       makeinfo.
-
 2001-03-05  Gerd Moellmann  <gerd@gnu.org>
 
        * Makefile.in (mostlyclean, maintainer-clean): Delete more files.
 
-2000-12-20  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (../info/idlwave): Use --no-split.
-
-2000-12-14  Dave Love  <fx@gnu.org>
-
-       * Makefile.in (mostlyclean): Remove gnustmp.*
-       (gnus.dvi): Change rule to remove @latex stuff.
-
-2000-10-19  Eric M. Ludlam  <zappo@ultranet.com>
-
-       * Makefile.in (Speedbar): Add build targets for speedbar.texi.
-
-2000-10-13  John Wiegley  <johnw@gnu.org>
-
-       * Makefile.in: Add build targets for eshell.texi.
-
-2000-09-25  Gerd Moellmann  <gerd@gnu.org>
-
-       * Makefile.in: Remove/comment speedbar stuff.
-
-2000-09-22  Dave Love  <fx@gnu.org>
-
-       * Makefile.in: Add emacs-mime.
-
-2000-08-08  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (INFO_TARGETS): Add ../info/woman.
-       (DVI_TARGETS): Add woman.dvi.
-       (../info/woman, woman.dvi): New targets.
-
 2000-05-31  Stefan Monnier  <monnier@cs.yale.edu>
 
        * .cvsignore (*.tmp): New entry.  Seems to be used for @macro.
 
-       * pcl-cvs.texi: New file.
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS: Add pcl-cvs.
-       (../info/pcl-cvs, pcl-cvs.dvi): New targets.
-
-2000-05-11  Gerd Moellmann  <gerd@gnu.org>
-
-       * Makefile.in (INFO_TARGETS): Add info/ebrowse.
-       (../info/ebrowse, ebrowse.dvi): New targets.
-
-2000-01-13  Gerd Moellmann  <gerd@gnu.org>
-
-       * Makefile.in (INFO_TARGETS): Add eudc.
-       (DVI_TARGETS): Add eudc.dvi.
-       (../info/eudc, eudc.dvi): New targets.
-
-2000-01-05  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (INFO_TARGETS): Rename emacs-faq to efaq (for
-       compatibility with 8+3 filesystems).
-       (../info/efaq): Rename from emacs-faq.
-
-2000-01-03  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add idlwave.
-       (../info/idlwave, idlwave.dvi): New targets.
-
-1999-10-23  Dave Love  <fx@gnu.org>
-
-       * Makefile.in: Use autotype.texi.
-
-1999-10-12  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * Makefile.in (faq): Use ../info/emacs-faq.info (as specified in the
-       faq.texi file) rather than ../info/faq.
-
-1999-10-07  Gerd Moellmann  <gerd@gnu.org>
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add ada-mode.
-       (../info/ada-mode, ada-mode.dvi): New targets.
-
-1999-09-01  Dave Love  <fx@gnu.org>
-
-       * Makefile.in: Add faq.
-
 1999-07-12  Richard Stallman  <rms@gnu.org>
 
        * Version 20.4 released.
 
        * Makefile.in (ENVADD): Enviroment vars to pass to texi2dvi.  Use
        it in dvi targets.
-       (../etc/GNU): Change to $(srcdir) first.
-
-1998-03-11  Carsten Dominik  <cd@delysid.gnu.org>
-
-       * reftex.texi: Update for RefTeX version 3.22.
-
-1998-02-08  Richard Stallman  <rms@psilocin.gnu.org>
-
-       * Makefile.in (reftex.dvi, ../info/reftex): New targets.
-       (INFO_TARGETS, DVI_TARGETS): Add the new targets.
 
 1997-09-23  Paul Eggert  <eggert@twinsun.com>
 
        * Makefile.in: Merge changes mistakenly made to `Makefile'.
        (INFO_TARGETS): Change ../info/custom to ../info/customize.
        (../info/customize): Rename from ../info/custom.
-       (../info/viper, viper.dvi): Remove dependency on viper-cmd.texi.
 
 1997-09-19  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 
        (INFO_TARGETS): Add ../info/customize.
        (DVI_TARGETS): Add customize.dvi.
 
-1997-07-10  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
-
-       * Makefile (../info/viper, viper.dvi): Delete viper-cmd.texi dep.
-
 1996-08-11  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 
        * Version 19.33 released.
 
        * Version 19.32 released.
 
-1996-06-27  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * Makefile.in: Add rules for the Message manual.
-
-1996-06-26  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi: New version.
-
-       * message.texi: New manual.
-
 1996-06-20  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 
        * Makefile.in (All info targets): cd $(srcdir) to do the work.
 
        * Version 19.31 released.
 
-1996-01-07  Richard Stallman  <rms@whiz-bang.gnu.ai.mit.edu>
-
-       * Makefile.in (../info/ccmode): Rename from ../info/cc-mode.
-       (INFO_TARGETS): Use new name.  This avoids name conflict on MSDOS.
-
-1995-11-29  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
-
-       * Makefile.in (../info/cc-mode, cc-mode.dvi): New targets.
-       (INFO_TARGETS): Add ../info/cc-mode.
-       (DVI_TARGETS): Add cc-mode.dvi.
-
 1995-11-24  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
        * Version 19.30 released.
 
-1995-11-04  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi: New file.
-
-1995-11-04  Erik Naggum  <erik@naggum.no>
-
-       * gnus.texi: File deleted.
-
-1995-11-02  Stephen Gildea  <gildea@stop.mail-abuse.org>
-
-       * mh-e.texi: "Function Index" -> "Command Index" to work with
-       Emacs 19.30 C-h C-k support of separately-documented commands.
-
-1995-06-26  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
-
-       * Makefile.in (../info/ediff, ediff.dvi): New targets.
-       (INFO_TARGETS, DVI_TARGETS): Add those new targets.
-
-1995-04-24  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add viper targets.
-       (../info/viper, viper.dvi): New targets.
-
-1995-04-20  Kevin Rodgers  <kevinr@ihs.com>
-
-       * dired-x.texi (Installation): Change the example to set
-       buffer-local variables like dired-omit-files-p in
-       dired-mode-hook.
-
-1995-04-17  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
-
-       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add mh-e targets.
-       (../info/mh-e, mh-e.dvi): New targets.
-
 1995-02-07  Richard Stallman  <rms@pogo.gnu.ai.mit.edu>
 
        * Makefile.in (maintainer-clean): Rename from realclean.
 
        * Makefile (.SUFFIXES): New rule.
 
-1994-01-15  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
-
-       * Makefile (dired-x.dvi, ../info/dired-x): New targets.
-       (INFO_TARGETS, DVI_TARGETS): Add the new targets.
-
-1994-01-08  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
-
-       * Makefile (../info/sc): Rename frin sc.info.
-       (../info/cl): Likewise.
-       (INFO_TARGETS): Use new names.
-
 1993-12-04  Richard Stallman  (rms@srarc2)
 
        * getopt.c: New file.
        * Makefile (TEXINDEX_OBJS): Use getopt.o in this dir, not ../lib-src.
        (getopt.o): New rule.
        (dvi): Don't depend on texindex.
-       (emacs.dvi, cl.dvi, forms.dvi, vip.dvi, gnus.dvi, sc.dvi):
-       Depend on texindex.
+       (emacs.dvi): Depend on texindex.
 
 1993-12-03  Richard Stallman  (rms@srarc2)
 
-       * Makefile (../info/sc.info): Rename from ../info/sc.
-       (TEXI2DVI): New variable.
-       (emacs.dvi, cl.dvi forms.dvi, sc.dvi, vip.dvi, gnus.dvi, info.dvi):
-       Add explicit commands.
+       * Makefile (TEXI2DVI): New variable.
+       (emacs.dvi): Add explicit command.
        (TEXINDEX_OBJS): Delete duplicate getopt.o.
 
 1993-11-27  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
        * Version 19.21 released.
 
-1993-11-15  Paul Eggert  (eggert@twinsun.com)
-
-       * man/Makefile (../info/cl.info): Rename from ../info/cl.
-
-1993-11-15  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
-
-       * Makefile (../etc/GNU): New target.
-       (EMACSSOURCES): Add gnu1.texi.
-
 1993-11-14  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
        * Makefile (realclean): Don't delete the Info files.
 
 1993-10-25  Brian Fox  (bfox@albert.gnu.ai.mit.edu)
 
-       * forms.texi: Fix forms.texi so that it will format correctly.
-       Add missing `@end iftex', fix bad reference.
-
-       * info.texi, info-stn.texi: New files implement texinfo version of
-       `info' file.
-
        * frames.texi (Creating Frames): Mention `C-x 5' instead of `C-x
        4' where appropriate.
 
 1993-10-20  Brian Fox  (bfox@ai.mit.edu)
 
-       * Makefile: Fix targets for texindex, new info.texi files.
-       * info-stnd.texi: New file implements info for standalone info
-       reader.
-       * info.texi: Update to include recent changes to "../info/info".
-       New source file for ../info/info; includes info-stnd.texi.
+       * Makefile: Fix targets for texindex.
 
        * texindex.c: Include "../src/config.h" if building in emacs.
 
        * Makefile: Change all files to FILENAME.texi, force all targets
-       to be FILENAME, not FILENAME.info.  This changes sc.texinfo,
-       vip.texinfo, forms.texinfo, cl.texinfo.
+       to be FILENAME, not FILENAME.info.
        Add target to build texindex.c, defining `emacs'.
 
-       * forms.texi: Install new file to match version 2.3 of forms.el.
-
 1993-08-14  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
        * Version 19.19 released.
 
-1993-08-10  Simon Leinen  (simon@lia.di.epfl.ch)
-
-       * sc.texinfo: Fix info file name.
-
-       * Makefile (info): Add gnus and sc.
-       (dvi): Add gnus.dvi and sc.dvi.
-       (../info/sc, sc.dvi): New targets.
-
 1993-08-08  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
        * Version 19.18 released.
 1993-07-20  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
        * Makefile: Fix source file names of the separate manuals.
-       (gnus.dvi, ../info/gnus): New targets.
 
 1993-07-18  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 
        * emacs.tex: Update TeX ordering information.
 
-1990-08-30  David Lawrence  (tale@pogo.ai.mit.edu)
-
-       * gnus.texinfo: New file.  Removed installation instructions.
-
 1990-06-26  David Lawrence  (tale@geech)
 
        * emacs.tex: Note that completion-ignored-extensions is not used
 
        * emacs.tex: Add @findex grep.
 
-1989-01-17  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
-
-       * texinfo.tex: Change spelling of `\sc' font to `\smallcaps' and
-       then define `\sc' as the command for smallcaps in Texinfo.  This
-       means that the @sc command will produce small caps.  bfox has
-       made the corresponding change to makeinfo and texinfm.el.
-
 1988-08-16  Robert J. Chassell  (bob@frosted-flakes.ai.mit.edu)
 
        * emacs.tex: Correct two typos.  No other changes before
        Version 19 will be made.
 
-       * vip.texinfo: Remove menu entry Adding Lisp Code in node
-       Customization since the menu entry did not point to anything.
-       Also add an @finalout command to remove overfull hboxes from the
-       printed output.
-
-       * cl.texinfo: Add @bye, \input line and @settitle to file.
-       This file is clearly intended to be a chapter of some other work,
-       but the other work does not yet exist.
-
-1988-07-25  Robert J. Chassell  (bob@frosted-flakes.ai.mit.edu)
-
-       * texinfo.texinfo: Three typos corrected.
-
 1988-05-23  Robert J. Chassell  (bob@frosted-flakes.ai.mit.edu)
 
        * emacs.tex: Update information for obtaining TeX distribution from the
diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in
new file mode 100644 (file)
index 0000000..f84c086
--- /dev/null
@@ -0,0 +1,159 @@
+#### Makefile for the Emacs Manual
+
+# Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+#   2004, 2005, 2006, 2007 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, 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; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Where to find the source code.  $(srcdir) will be the man
+# subdirectory of the source tree.  This is
+# set by the configure script's `--srcdir' option.
+srcdir=@srcdir@
+top_srcdir=@top_srcdir@
+
+# Tell make where to find source files; this is needed for the makefiles.
+VPATH=@srcdir@
+
+## Where the output files go.
+## Note that the setfilename command in the .texi files assumes this.
+infodir=../../info
+
+# The makeinfo program is part of the Texinfo distribution.
+# Use --force so that it generates output even if there are errors.
+MAKEINFO = makeinfo --force
+
+INFO_TARGETS = $(infodir)/emacs
+DVI_TARGETS  = emacs.dvi
+
+
+TEXI2DVI = texi2dvi
+
+# The following rule does not work with all versions of `make'.
+.SUFFIXES: .texi .dvi
+.texi.dvi:
+       $(TEXI2DVI) $<
+
+ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
+
+
+EMACS_XTRA=\
+       $(srcdir)/arevert-xtra.texi \
+       $(srcdir)/cal-xtra.texi \
+       $(srcdir)/dired-xtra.texi \
+       $(srcdir)/picture-xtra.texi \
+       $(srcdir)/emerge-xtra.texi \
+       $(srcdir)/vc-xtra.texi \
+       $(srcdir)/vc1-xtra.texi \
+       $(srcdir)/vc2-xtra.texi \
+       $(srcdir)/fortran-xtra.texi \
+       $(srcdir)/msdog-xtra.texi
+
+EMACSSOURCES= \
+       ${srcdir}/emacs.texi \
+       ${srcdir}/doclicense.texi \
+       ${srcdir}/gpl.texi \
+       ${srcdir}/screen.texi \
+       ${srcdir}/commands.texi \
+       ${srcdir}/entering.texi \
+       ${srcdir}/basic.texi \
+       ${srcdir}/mini.texi \
+       ${srcdir}/m-x.texi \
+       ${srcdir}/help.texi \
+       ${srcdir}/mark.texi \
+       ${srcdir}/killing.texi \
+       ${srcdir}/regs.texi \
+       ${srcdir}/display.texi \
+       ${srcdir}/search.texi \
+       ${srcdir}/fixit.texi \
+       ${srcdir}/files.texi \
+       ${srcdir}/buffers.texi \
+       ${srcdir}/windows.texi \
+       ${srcdir}/frames.texi \
+       ${srcdir}/mule.texi \
+       ${srcdir}/major.texi \
+       ${srcdir}/indent.texi \
+       ${srcdir}/text.texi \
+       ${srcdir}/programs.texi \
+       ${srcdir}/building.texi \
+       ${srcdir}/maintaining.texi \
+       ${srcdir}/abbrevs.texi \
+       ${srcdir}/sending.texi \
+       ${srcdir}/rmail.texi \
+       ${srcdir}/dired.texi \
+       ${srcdir}/calendar.texi \
+       ${srcdir}/misc.texi \
+       ${srcdir}/custom.texi \
+       ${srcdir}/trouble.texi \
+       ${srcdir}/cmdargs.texi \
+       ${srcdir}/xresources.texi \
+       ${srcdir}/anti.texi \
+       ${srcdir}/macos.texi \
+       ${srcdir}/msdog.texi \
+       ${srcdir}/gnu.texi \
+       ${srcdir}/glossary.texi \
+       ${srcdir}/ack.texi \
+       ${srcdir}/kmacro.texi \
+       $(EMACS_XTRA)
+
+info: $(infodir) $(INFO_TARGETS)
+
+$(infodir):
+       mkdir $@
+
+dvi: $(DVI_TARGETS)
+
+# Note that all the Info targets build the Info files
+# in srcdir.  There is no provision for Info files
+# to exist in the build directory.
+# In a distribution of Emacs, the Info files should be up to date.
+
+emacs : $(infodir)/emacs
+
+$(infodir)/emacs: ${EMACSSOURCES}
+       cd $(srcdir); $(MAKEINFO) emacs.texi
+
+emacs.dvi: ${EMACSSOURCES}
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi
+
+
+emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi
+
+
+mostlyclean:
+       rm -f *.log *.cp *.fn *.ky *.op *.ops *.pg *.vr core *.tp *.core
+       rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
+
+clean: mostlyclean
+       rm -f *.dvi
+
+distclean: clean
+#      rm -f Makefile
+
+maintainer-clean: distclean
+       for file in $(INFO_TARGETS); do rm -f $${file}*; done
+
+
+# Formerly this directory had texindex.c and getopt.c in it
+# and this makefile built them to make texindex.
+# That caused trouble because this is run entirely in the source directory.
+# Since we expect to get texi2dvi from elsewhere,
+# it is ok to expect texindex from elsewhere also.
+
+
+### Makefile ends here
similarity index 100%
rename from man/abbrevs.texi
rename to doc/emacs/abbrevs.texi
similarity index 100%
rename from man/ack.texi
rename to doc/emacs/ack.texi
similarity index 100%
rename from man/anti.texi
rename to doc/emacs/anti.texi
similarity index 99%
rename from man/basic.texi
rename to doc/emacs/basic.texi
index 7c65eba2f016259060b05b2d42fd3f5d226805af..418d54f677b9cd3b6723ee228810a6fafa122b1e 100644 (file)
@@ -624,8 +624,8 @@ terminal, the code(s) sent to the terminal.
 
 @item
 The character's text properties (@pxref{Text Properties,,,
-elisp, the Emacs Lisp Reference Manual}), including any faces usewd to
-display the character, and any overlays containing it
+elisp, the Emacs Lisp Reference Manual}), including any non-default
+faces used to display the character, and any overlays containing it
 (@pxref{Overlays,,, elisp, the same manual}).
 @end itemize
 
@@ -707,7 +707,7 @@ C-n} (move down a good fraction of a screen), @kbd{C-u C-u C-o} (make
 ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four lines).
 
   Some commands care whether there is an argument, but ignore its
-value.  For example, the command @kbd{M-q} (@code{fill-paragraph})
+value.  For example, the command @kbd{M-q} (@code{fill-paragraph-or-region})
 fills text; with an argument, it justifies the text as well.
 (@xref{Filling}, for more information on @kbd{M-q}.)  Plain @kbd{C-u}
 is a handy way of providing an argument for such commands.
similarity index 100%
rename from man/buffers.texi
rename to doc/emacs/buffers.texi
similarity index 99%
rename from man/building.texi
rename to doc/emacs/building.texi
index 3fedbfed6749989fa9db73f6e7ba2c195f84b042..5689bf1fe34b1cc914556b5698152119b0860f05 100644 (file)
@@ -527,6 +527,10 @@ debugger supports.  However, shell wildcards and variables are not
 allowed.  GUD assumes that the first argument not starting with a
 @samp{-} is the executable file name.
 
+Tramp provides a facility to debug programs on remote hosts.
+@xref{Running a debugger on a remote host, Running a debugger on a remote host,, tramp, The Tramp Manual}.
+@c Running a debugger on a remote host
+
 @node Debugger Operation
 @subsection Debugger Operation
 
similarity index 100%
rename from man/cal-xtra.texi
rename to doc/emacs/cal-xtra.texi
similarity index 99%
rename from man/calendar.texi
rename to doc/emacs/calendar.texi
index 5182474622d77431eb9bb00ebc6b33803a5d6a74..1357784b920c1116a5949bf7a9bcf5007b43c124 100644 (file)
@@ -457,12 +457,12 @@ Display holidays for the selected date
 @item Mouse-2 Holidays
 Display any holidays for the date you click on.
 @item x
-Mark holidays in the calendar window (@code{mark-calendar-holidays}).
+Mark holidays in the calendar window (@code{calendar-mark-holidays}).
 @item u
 Unmark calendar window (@code{calendar-unmark}).
 @item a
 List all holidays for the displayed three months in another window
-(@code{list-calendar-holidays}).
+(@code{calendar-list-holidays}).
 @item M-x holidays
 List all holidays for three months around today's date in another
 window.
@@ -481,7 +481,7 @@ that date, in the echo area if they fit there, otherwise in a separate
 window.
 
 @kindex x @r{(Calendar mode)}
-@findex mark-calendar-holidays
+@findex calendar-mark-holidays
 @kindex u @r{(Calendar mode)}
 @findex calendar-unmark
 @vindex mark-holidays-in-calendar
@@ -503,7 +503,7 @@ erases any diary marks (@pxref{Diary}).  If the variable
 updating the calendar marks holidays automatically.
 
 @kindex a @r{(Calendar mode)}
-@findex list-calendar-holidays
+@findex calendar-list-holidays
   To get even more detailed information, use the @kbd{a} command, which
 displays a separate buffer containing a list of all holidays in the
 current three-month range.  You can use @key{SPC} and @key{DEL} in the
similarity index 100%
rename from man/cmdargs.texi
rename to doc/emacs/cmdargs.texi
similarity index 100%
rename from man/commands.texi
rename to doc/emacs/commands.texi
similarity index 99%
rename from man/custom.texi
rename to doc/emacs/custom.texi
index d496ab84b190ea0468e84cf865806b8535643720..1276c45af702fe609a70261be3a3e7925b2c1460 100644 (file)
@@ -2419,7 +2419,8 @@ kept.@refill
 
   The usual purpose of the terminal-specific library is to map the
 escape sequences used by the terminal's function keys onto more
-meaningful names, using @code{function-key-map}.  See the file
+meaningful names, using @code{input-decode-map} (or
+@code{function-key-map} before it).  See the file
 @file{term/lk201.el} for an example of how this is done.  Many function
 keys are mapped automatically according to the information in the
 Termcap data base; the terminal-specific library needs to map only the
similarity index 99%
rename from man/dired.texi
rename to doc/emacs/dired.texi
index 5088be218273b0dd024d2805428730d8cd061e8f..3dda3f588ebab59bb1773823c63936a54c4af564 100644 (file)
@@ -1152,7 +1152,7 @@ and erases all flags and marks.
 @findex wdired-change-to-wdired-mode
   Wdired is a special mode that allows you to perform file operations
 by editing the Dired buffer directly (the ``W'' in ``Wdired'' stands
-for ``writable.'')  To enter Wdired mode, type @kbd{M-x
+for ``writable.'')  To enter Wdired mode, type @kbd{C-x C-q} or @kbd{M-x
 wdired-change-to-wdired-mode} while in a Dired buffer.  Alternatively,
 use @samp{Edit File Names} in the @samp{Immediate} menu bar menu.
 
similarity index 100%
rename from man/display.texi
rename to doc/emacs/display.texi
similarity index 72%
rename from etc/gfdl.1
rename to doc/emacs/doclicense.texi
index af660f67787372eae92f0ff18f4c63e2654c6dda..1e5d5796b28384ac3f79dc9032ba0b0ef1868211 100644 (file)
@@ -1,35 +1,27 @@
-.TH GFDL 1 "2005 September 17"
-.SH NAME
-GFDL \- The GNU Free Documentation License
-
-.ce
-Version 1.2, November 2002
-
-.hy 0
-.na
-Copyright
-.if t \(co
-.if n (c)
-2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+@c -*-texinfo-*-
+@center Version 1.2, November 2002
+
+@display
+Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
-.hy 1
-.ad
-
-.br
-.SH 0. PREAMBLE
+@end display
+@sp 1
+@enumerate 0
+@item
+PREAMBLE
 
 The purpose of this License is to make a manual, textbook, or other
-functional and useful document "free" in the sense of freedom: to
+functional and useful document ``free'' in the sense of freedom: to
 assure everyone the effective freedom to copy and redistribute it,
 with or without modifying it, either commercially or noncommercially.
 Secondarily, this License preserves for the author and publisher a way
 to get credit for their work, while not being considered responsible
 for modifications made by others.
 
-This License is a kind of "copyleft", which means that derivative
+This License is a kind of ``copyleft,'' which means that derivative
 works of the document must themselves be free in the same sense.  It
 complements the GNU General Public License, which is a copyleft
 license designed for free software.
@@ -42,23 +34,25 @@ it can be used for any textual work, regardless of subject matter or
 whether it is published as a printed book.  We recommend this License
 principally for works whose purpose is instruction or reference.
 
-.SH 1. APPLICABILITY AND DEFINITIONS
+@sp 1
+@item
+APPLICABILITY AND DEFINITIONS
 
 This License applies to any manual or other work, in any medium, that
 contains a notice placed by the copyright holder saying it can be
 distributed under the terms of this License.  Such a notice grants a
 world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein.  The "Document", below,
+work under the conditions stated herein.  The ``Document,'' below,
 refers to any such manual or work.  Any member of the public is a
-licensee, and is addressed as "you".  You accept the license if you
+licensee, and is addressed as ``you.''  You accept the license if you
 copy, modify or distribute the work in a way requiring permission
 under copyright law.
 
-A "Modified Version" of the Document means any work containing the
+A ``Modified Version'' of the Document means any work containing the
 Document or a portion of it, either copied verbatim, or with
 modifications and/or translated into another language.
 
-A "Secondary Section" is a named appendix or a front-matter section of
+A ``Secondary Section'' is a named appendix or a front-matter section of
 the Document that deals exclusively with the relationship of the
 publishers or authors of the Document to the Document's overall subject
 (or to related matters) and contains nothing that could fall directly
@@ -69,7 +63,7 @@ connection with the subject or with related matters, or of legal,
 commercial, philosophical, ethical or political position regarding
 them.
 
-The "Invariant Sections" are certain Secondary Sections whose titles
+The ``Invariant Sections'' are certain Secondary Sections whose titles
 are designated, as being those of Invariant Sections, in the notice
 that says that the Document is released under this License.  If a
 section does not fit the above definition of Secondary then it is not
@@ -77,12 +71,12 @@ allowed to be designated as Invariant.  The Document may contain zero
 Invariant Sections.  If the Document does not identify any Invariant
 Sections then there are none.
 
-The "Cover Texts" are certain short passages of text that are listed,
+The ``Cover Texts'' are certain short passages of text that are listed,
 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
 the Document is released under this License.  A Front-Cover Text may
 be at most 5 words, and a Back-Cover Text may be at most 25 words.
 
-A "Transparent" copy of the Document means a machine-readable copy,
+A ``Transparent'' copy of the Document means a machine-readable copy,
 represented in a format whose specification is available to the
 general public, that is suitable for revising the document
 straightforwardly with generic text editors or (for images composed of
@@ -93,7 +87,8 @@ to text formatters.  A copy made in an otherwise Transparent file
 format whose markup, or absence of markup, has been arranged to thwart
 or discourage subsequent modification by readers is not Transparent.
 An image format is not Transparent if used for any substantial amount
-of text.  A copy that is not "Transparent" is called "Opaque".
+of text.  A copy that is not ``Transparent'' is called ``Opaque.''
+
 
 Examples of suitable formats for Transparent copies include plain
 ASCII without markup, Texinfo input format, LaTeX input format, SGML
@@ -106,20 +101,20 @@ processing tools are not generally available, and the
 machine-generated HTML, PostScript or PDF produced by some word
 processors for output purposes only.
 
-The "Title Page" means, for a printed book, the title page itself,
+The ``Title Page'' means, for a printed book, the title page itself,
 plus such following pages as are needed to hold, legibly, the material
 this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, "Title Page" means
+formats which do not have any title page as such, ``Title Page'' means
 the text near the most prominent appearance of the work's title,
 preceding the beginning of the body of the text.
 
-A section "Entitled XYZ" means a named subunit of the Document whose
+A section ``Entitled XYZ'' means a named subunit of the Document whose
 title either is precisely XYZ or contains XYZ in parentheses following
 text that translates XYZ in another language.  (Here XYZ stands for a
-specific section name mentioned below, such as "Acknowledgements",
-"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
+specific section name mentioned below, such as ``Acknowledgements,''
+``Dedications,'' ``Endorsements,'' or ``History.'')  To ``Preserve the Title''
 of such a section when you modify the Document means that it remains a
-section "Entitled XYZ" according to this definition.
+section ``Entitled XYZ'' according to this definition.
 
 The Document may include Warranty Disclaimers next to the notice which
 states that this License applies to the Document.  These Warranty
@@ -127,8 +122,9 @@ Disclaimers are considered to be included by reference in this
 License, but only as regards disclaiming warranties: any other
 implication that these Warranty Disclaimers may have is void and has
 no effect on the meaning of this License.
-
-.SH 2. VERBATIM COPYING
+@sp 1
+@item
+VERBATIM COPYING
 
 You may copy and distribute the Document in any medium, either
 commercially or noncommercially, provided that this License, the
@@ -142,8 +138,9 @@ number of copies you must also follow the conditions in section 3.
 
 You may also lend copies, under the same conditions stated above, and
 you may publicly display copies.
-
-.SH 3. COPYING IN QUANTITY
+@sp 1
+@item
+COPYING IN QUANTITY
 
 If you publish printed copies (or copies in media that commonly have
 printed covers) of the Document, numbering more than 100, and the
@@ -179,8 +176,9 @@ edition to the public.
 It is requested, but not required, that you contact the authors of the
 Document well before redistributing any large number of copies, to give
 them a chance to provide you with an updated version of the Document.
-
-.SH 4. MODIFICATIONS
+@sp 1
+@item
+MODIFICATIONS
 
 You may copy and distribute a Modified Version of the Document under
 the conditions of sections 2 and 3 above, provided that you release
@@ -188,84 +186,55 @@ the Modified Version under precisely this License, with the Modified
 Version filling the role of the Document, thus licensing distribution
 and modification of the Modified Version to whoever possesses a copy
 of it.  In addition, you must do these things in the Modified Version:
-.TP
-A.
-Use in the Title Page (and on the covers, if any) a title distinct from
-that of the Document, and from those of previous versions (which should,
-if there were any, be listed in the History section of the Document).
-You may use the same title as a previous version if the original
-publisher of that version gives permission.
-.TP
-B.
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified Version,
-together with at least five of the principal authors of the Document
-(all of its principal authors, if it has fewer than five), unless they
-release you from this requirement.
-.TP
-C.
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-.TP
-D.
-Preserve all the copyright notices of the Document.
-.TP
-E.
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-.TP
-F.
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the terms
-of this License, in the form shown in the Addendum below.
-.TP
-G.
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-.TP
-H.
-Include an unaltered copy of this License.
-.TP
-I.
-Preserve the section Entitled "History", Preserve its Title, and add to
-it an item stating at least the title, year, new authors, and publisher
-of the Modified Version as given on the Title Page.  If there is no
-section Entitled "History" in the Document, create one stating the
-title, year, authors, and publisher of the Document as given on its
-Title Page, then add an item describing the Modified Version as stated
-in the previous sentence.
-.TP
-J.
-Preserve the network location, if any, given in the Document for public
-access to a Transparent copy of the Document, and likewise the network
-locations given in the Document for previous versions it was based on.
-These may be placed in the "History" section.  You may omit a network
-location for a work that was published at least four years before the
-Document itself, or if the original publisher of the version it refers
-to gives permission.
-.TP
-K.
-For any section Entitled "Acknowledgements" or "Dedications", Preserve
-the Title of the section, and preserve in the section all the substance
-and tone of each of the contributor acknowledgements and/or dedications
-given therein.
-.TP
-L.
-Preserve all the Invariant Sections of the Document, unaltered in their
-text and in their titles.  Section numbers or the equivalent are not
-considered part of the section titles.
-.TP
-M.
-Delete any section Entitled "Endorsements".  Such a section may not be
-included in the Modified Version.
-.TP
-N.
-Do not retitle any existing section to be Entitled "Endorsements" or to
-conflict in title with any Invariant Section.
-.TP
-O.
-Preserve any Warranty Disclaimers.
-.PP
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.@*
+B. List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has fewer than five),
+   unless they release you from this requirement.@*
+C. State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.@*
+D. Preserve all the copyright notices of the Document.@*
+E. Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.@*
+F. Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.@*
+G. Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.@*
+H. Include an unaltered copy of this License.@*
+I. Preserve the section Entitled ``History,'' Preserve its Title, and add
+   to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section Entitled ``History'' in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.@*
+J. Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the ``History'' section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.@*
+K. For any section Entitled ``Acknowledgements'' or ``Dedications,''
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.@*
+L. Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.@*
+M. Delete any section Entitled ``Endorsements.''  Such a section
+   may not be included in the Modified Version.@*
+N. Do not retitle any existing section to be Entitled ``Endorsements''
+   or to conflict in title with any Invariant Section.@*
+O. Preserve any Warranty Disclaimers.@*
+@sp 1
 If the Modified Version includes new front-matter sections or
 appendices that qualify as Secondary Sections and contain no material
 copied from the Document, you may at your option designate some or all
@@ -273,7 +242,7 @@ of these sections as invariant.  To do this, add their titles to the
 list of Invariant Sections in the Modified Version's license notice.
 These titles must be distinct from any other section titles.
 
-You may add a section Entitled "Endorsements", provided it contains
+You may add a section Entitled ``Endorsements,'' provided it contains
 nothing but endorsements of your Modified Version by various
 parties--for example, statements of peer review or that the text has
 been approved by an organization as the authoritative definition of a
@@ -292,8 +261,9 @@ permission from the previous publisher that added the old one.
 The author(s) and publisher(s) of the Document do not by this License
 give permission to use their names for publicity for or to assert or
 imply endorsement of any Modified Version.
-
-.SH 5. COMBINING DOCUMENTS
+@sp 1
+@item
+COMBINING DOCUMENTS
 
 You may combine the Document with other documents released under this
 License, under the terms defined in section 4 above for modified
@@ -311,13 +281,14 @@ author or publisher of that section if known, or else a unique number.
 Make the same adjustment to the section titles in the list of
 Invariant Sections in the license notice of the combined work.
 
-In the combination, you must combine any sections Entitled "History"
+In the combination, you must combine any sections Entitled ``History''
 in the various original documents, forming one section Entitled
-"History"; likewise combine any sections Entitled "Acknowledgements",
-and any sections Entitled "Dedications".  You must delete all sections
-Entitled "Endorsements".
-
-.SH 6. COLLECTIONS OF DOCUMENTS
+``History''; likewise combine any sections Entitled ``Acknowledgements,''
+and any sections Entitled ``Dedications.''  You must delete all sections
+Entitled ``Endorsements.''
+@sp 1
+@item
+COLLECTIONS OF DOCUMENTS
 
 You may make a collection consisting of the Document and other documents
 released under this License, and replace the individual copies of this
@@ -329,12 +300,13 @@ You may extract a single document from such a collection, and distribute
 it individually under this License, provided you insert a copy of this
 License into the extracted document, and follow this License in all
 other respects regarding verbatim copying of that document.
-
-.SH 7. AGGREGATION WITH INDEPENDENT WORKS
+@sp 1
+@item
+AGGREGATION WITH INDEPENDENT WORKS
 
 A compilation of the Document or its derivatives with other separate
 and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an "aggregate" if the copyright
+distribution medium, is called an ``aggregate'' if the copyright
 resulting from the compilation is not used to limit the legal rights
 of the compilation's users beyond what the individual works permit.
 When the Document is included in an aggregate, this License does not
@@ -348,8 +320,9 @@ covers that bracket the Document within the aggregate, or the
 electronic equivalent of covers if the Document is in electronic form.
 Otherwise they must appear on printed covers that bracket the whole
 aggregate.
-
-.SH 8. TRANSLATION
+@sp 1
+@item
+TRANSLATION
 
 Translation is considered a kind of modification, so you may
 distribute translations of the Document under the terms of section 4.
@@ -364,12 +337,13 @@ of those notices and disclaimers.  In case of a disagreement between
 the translation and the original version of this License or a notice
 or disclaimer, the original version will prevail.
 
-If a section in the Document is Entitled "Acknowledgements",
-"Dedications", or "History", the requirement (section 4) to Preserve
+If a section in the Document is Entitled ``Acknowledgements,''
+``Dedications,'' or ``History,'' the requirement (section 4) to Preserve
 its Title (section 1) will typically require changing the actual
 title.
-
-.SH 9. TERMINATION
+@sp 1
+@item
+TERMINATION
 
 You may not copy, modify, sublicense, or distribute the Document except
 as expressly provided for under this License.  Any other attempt to
@@ -378,55 +352,55 @@ automatically terminate your rights under this License.  However,
 parties who have received copies, or rights, from you under this
 License will not have their licenses terminated so long as such
 parties remain in full compliance.
-
-.SH 10. FUTURE REVISIONS OF THIS LICENSE
+@sp 1
+@item
+FUTURE REVISIONS OF THIS LICENSE
 
 The Free Software Foundation may publish new, revised versions
 of the GNU Free Documentation 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.  See
-\fBhttp://www.gnu.org/copyleft/\fP.
+http://www.gnu.org/copyleft/.
 
 Each version of the License is given a distinguishing version number.
 If the Document specifies that a particular numbered version of this
-License "or any later version" applies to it, you have the option of
+License ``or any later version'' applies to it, you have the option of
 following the terms and conditions either of that specified version or
 of any later version that has been published (not as a draft) by the
 Free Software Foundation.  If the Document does not specify a version
 number of this License, you may choose any version ever published (not
 as a draft) by the Free Software Foundation.
 
-.SH ADDENDUM: How to use this License for your documents
+@end enumerate
+
+@unnumberedsec ADDENDUM: How to use this License for your documents
 
 To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and
 license notices just after the title page:
 
-.hy 0
-.na
-Copyright 
-.if t \(co
-.if n (c)
-[\fIyear\fP]  [\fIyour name\fP].
+@smallexample
+@group
+Copyright (C)  @var{year}  @var{your name}.
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.2
 or any later version published by the Free Software Foundation;
 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled "GNU
-Free Documentation License."
-.ad
-.hy 1
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License.''
+@end group
+@end smallexample
 
 If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the "with...Texts." line with this:
+replace the ``with...Texts.'' line with this:
 
-.hy 0
-.na
-    with the Invariant Sections being [\fILIST THEIR TITLES\fP], with the
-    Front-Cover Texts being [\fILIST\fP], and with the Back-Cover Texts being
-    [\fILIST\fP].
-.ad
-.hy 1
+@smallexample
+@group
+with the Invariant Sections being @var{list their titles}, with the
+Front-Cover Texts being @var{list}, and with the Back-Cover Texts being
+@var{list}.
+@end group
+@end smallexample
 
 If you have Invariant Sections without Cover Texts, or some other
 combination of the three, merge those two alternatives to suit the
@@ -437,4 +411,6 @@ recommend releasing these examples in parallel under your choice of
 free software license, such as the GNU General Public License,
 to permit their use in free software.
 
-.\" arch-tag: 3a15de89-40c2-46b8-a9a2-0710357a9baa
+@ignore
+   arch-tag: d68e7b7a-0c7c-4c15-905b-a9482214e25a
+@end ignore
similarity index 99%
rename from man/emacs-xtra.texi
rename to doc/emacs/emacs-xtra.texi
index 841c62a527f214d28db5f8aac6b00e0660fa5ec5..c442331452019b68fe3df9e13444af3d6dd35a24 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo    @c -*-texinfo-*-
 @comment %**start of header
-@setfilename ../info/emacs-xtra
+@setfilename ../../info/emacs-xtra
 @settitle Specialized Emacs Features
 @syncodeindex fn cp
 @syncodeindex vr cp
similarity index 99%
rename from man/emacs.texi
rename to doc/emacs/emacs.texi
index b2fdb973039402b880bebbb22b040b0a95586498..119e2ea80d1bfbfa40846d221e31054ec9cc20cc 100644 (file)
@@ -1,11 +1,11 @@
 \input texinfo
 
-@setfilename ../info/emacs
+@setfilename ../../info/emacs
 @settitle GNU Emacs Manual
 
 @c The edition number appears in several places in this file
 @set EDITION   Sixteenth
-@set EMACSVER  22.1.50
+@set EMACSVER  23.0.50
 
 @copying
 This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},@*
@@ -51,7 +51,7 @@ developing GNU and promoting software freedom.''
 @tex
 @ifset smallbook
 @fonttextsize 10
-@set EMACSVER 22.1
+@set EMACSVER 22
 \global\let\urlcolor=\Black % don't print links in grayscale
 \global\let\linkcolor=\Black
 @end ifset
@@ -460,7 +460,7 @@ Version Control
 * Introduction to VC::  How version control works in general.
 * VC Mode Line::        How the mode line shows version control status.
 * Basic VC Editing::    How to edit a file under version control.
-* Old Versions::        Examining and comparing old versions.
+* Old Revisions::       Examining and comparing old revisions of files.
 * Secondary VC Commands:: The commands used a little less frequently.
 * Branches::            Multiple lines of development.
 * Remote Repositories:: Efficient access to remote CVS servers.
similarity index 100%
rename from man/entering.texi
rename to doc/emacs/entering.texi
similarity index 80%
rename from man/files.texi
rename to doc/emacs/files.texi
index dd2b445b0548d2c7c317b22e512bac8c3e689692..80feaea234022a8de5d697b59f6166279154591a 100644 (file)
@@ -1213,11 +1213,10 @@ description of what was changed in that version.
   The Emacs version control interface is called VC.  Its commands work
 with different version control systems---currently, it supports CVS,
 GNU Arch, RCS, Meta-CVS, Subversion, and SCCS.  Of these, the GNU
-project distributes CVS, GNU Arch, and RCS; we recommend that you use
-either CVS or GNU Arch for your projects, and RCS for individual
-files.  We also have free software to replace SCCS, known as CSSC; if
-you are using SCCS and don't want to make the incompatible change to
-RCS or CVS, you can switch to CSSC.
+project distributes CVS, GNU Arch, and RCS.  We also have free
+software to replace SCCS, known as CSSC; if you are using SCCS and
+don't want to make the incompatible change to RCS or CVS, you can
+switch to CSSC.
 
   VC is enabled by default in Emacs.  To disable it, set the
 customizable variable @code{vc-handled-backends} to @code{nil}
@@ -1233,7 +1232,7 @@ customizable variable @code{vc-handled-backends} to @code{nil}
 * Introduction to VC::  How version control works in general.
 * VC Mode Line::        How the mode line shows version control status.
 * Basic VC Editing::    How to edit a file under version control.
-* Old Versions::        Examining and comparing old versions.
+* Old Revisions::       Examining and comparing old versions.
 * Secondary VC Commands::    The commands used a little less frequently.
 * Branches::            Multiple lines of development.
 @ifnottex
@@ -1248,9 +1247,12 @@ customizable variable @code{vc-handled-backends} to @code{nil}
 @subsection Introduction to Version Control
 
   VC allows you to use a version control system from within Emacs,
-integrating the version control operations smoothly with editing.  VC
-provides a uniform interface to version control, so that regardless of
-which version control system is in use, you can use it the same way.
+integrating the version control operations smoothly with editing.
+Though VC cannot completely bridge the gaps between version-control
+systems with widely differing capabilities, it does provide
+a uniform interface to many version control operations. Regardless of
+which version control system is in use, you will be able to do basic
+operations in much the same way.
 
   This section provides a general overview of version control, and
 describes the version control systems that VC supports.  You can skip
@@ -1258,127 +1260,253 @@ this section if you are already familiar with the version control system
 you want to use.
 
 @menu
-* Version Systems::  Supported version control back-end systems.
-* VC Concepts::      Words and concepts related to version control.
-* Types of Log File::    The per-file VC log in contrast to the ChangeLog.
+* Why Version Control?::    Understanding the problems it addresses
+* Version Control Systems:: Supported version control back-end systems.
+* VCS Concepts::            Words and concepts related to version control.
+* Types of Log File::       The VCS log in contrast to the ChangeLog.
 @end menu
 
-@node Version Systems
+@node Why Version Control?
+@subsubsection Understanding the problems it addresses
+
+  Version control systems provide you with three important capabilities: 
+@dfn{reversibility}. @dfn{concurrency}, and @dfn{history}.
+
+  The most basic capability you get from a version-control system is
+reversibility, the ability to back up to a saved, known-good state when
+you discover that some modification you did was a mistake or a bad idea.
+
+  Version-control systems also support concurrency, the ability to
+have many people modifying the same collection of code or documents
+knowing that conflicting modifications can be detected and resolved.
+
+  Version-control systems give you the capability to attach a history
+to your data, explanatory comments about the intention behind each 
+change to it.  Even for a programmer working solo change histories
+are an important aid to memory; for a multi-person project they 
+become a vitally important form of communication among developers.
+
+@node Version Control Systems
 @subsubsection Supported Version Control Systems
 
 @cindex back end (version control)
   VC currently works with six different version control systems or
-``back ends'': CVS, GNU Arch, RCS, Meta-CVS, Subversion, and SCCS.
-
-@cindex CVS
-  CVS is a free version control system that is used for the majority
-of free software projects today.  It allows concurrent multi-user
-development either locally or over the network.  Some of its
-shortcomings, corrected by newer systems such as GNU Arch, are that it
-lacks atomic commits or support for renaming files.  VC supports all
-basic editing operations under CVS, but for some less common tasks you
-still need to call CVS from the command line.  Note also that before
-using CVS you must set up a repository, which is a subject too complex
-to treat here.
+``back ends'': SCCS, RCS, CVS, Meta-CVS, Subversion, GNU Arch,
+git, and Mercurial.
+@comment Omitting bzr because support is very scratchy and incomplete.
 
-@cindex GNU Arch
-@cindex Arch
-  GNU Arch is a new version control system that is designed for
-distributed work.  It differs in many ways from old well-known
-systems, such as CVS and RCS.  It supports different transports for
-interoperating between users, offline operations, and it has good
-branching and merging features.  It also supports atomic commits, and
-history of file renaming and moving.  VC does not support all
-operations provided by GNU Arch, so you must sometimes invoke it from
-the command line, or use a specialized module.
+@cindex SCCS
+  SCCS was the first version-control system ever built, and was long ago
+superseded by later and more advanced ones; Emacs supports it only for
+backward compatibility and historical reasons. VC compensates for
+certain features missing in SCCS (snapshots, for example) by
+implementing them itself, but some other VC features, such as multiple
+branches, are not available with SCCS.  Since SCCS is non-free you
+should not use it; use its free replacement CSSC instead.  But you
+should use CSSC only if for some reason you cannot use a more 
+recent and better-designed version-control system.
 
 @cindex RCS
   RCS is the free version control system around which VC was initially
-built.  The VC commands are therefore conceptually closest to RCS.
-Almost everything you can do with RCS can be done through VC.  You
-cannot use RCS over the network though, and it only works at the level
+built.  Almost everything you can do with RCS can be done through VC.  You
+cannot use RCS over the network, though, and it only works at the level
 of individual files, rather than projects.  You should use it if you
 want a simple, yet reliable tool for handling individual files.
 
+@cindex CVS
+  CVS is the free version control system that was until recently (as of
+2007) used for the majority of free software projects, though it is now
+being superseded by other systems.  It allows concurrent
+multi-user development either locally or over the network.  Some of its
+shortcomings, corrected by newer systems such as Subversion or GNU Arch,
+are that it lacks atomic commits or support for renaming files.  VC
+supports all basic editing operations under CVS, but for some less
+common tasks you still need to call CVS from the command line.  Note
+also that before using CVS you must set up a repository, which is a
+subject too complex to treat here.
+
+@cindex Meta-CVS
+  Meta-CVS uses CVS repositories, but has an enhanced client that
+uses client-side information to solve various of the known problems
+with CVS.  It is not widely used, having been overtaken by Subversion.
+The Emacs support for it is rudimentary, and may be removed in a
+future version.
+
 @cindex SVN
 @cindex Subversion
   Subversion is a free version control system designed to be similar
-to CVS but without CVS's problems.  Subversion supports atomic commits,
-and versions directories, symbolic links, meta-data, renames, copies,
-and deletes.  It can be used via http or via its own protocol.
+to CVS but without CVS's problems, and is now (2007) rapidly
+superseding CVS.  Subversion supports atomic commits of filesets, and
+versions directories, symbolic links, meta-data, renames, copies, and
+deletes.  It can be used via http or via its own protocol.
 
-@cindex MCVS
-@cindex Meta-CVS
-  Meta-CVS is another attempt to solve problems arising in CVS.  It
-supports directory structure versioning, improved branching and
-merging, and use of symbolic links and meta-data in repositories.
-
-@cindex SCCS
-  SCCS is a proprietary but widely used version control system.  In
-terms of capabilities, it is the weakest of the six that VC supports.
-VC compensates for certain features missing in SCCS (snapshots, for
-example) by implementing them itself, but some other VC features, such
-as multiple branches, are not available with SCCS.  Since SCCS is
-non-free, not respecting its users freedom, you should not use it;
-use its free replacement CSSC instead.  But you should use CSSC only
-if for some reason you cannot use RCS, or one of the higher-level
-systems such as CVS or GNU Arch.
-
-In the following, we discuss mainly RCS, SCCS and CVS.  Nearly
-everything said about CVS applies to GNU Arch, Subversion and Meta-CVS
-as well.
-
-@node VC Concepts
+@cindex GNU Arch
+@cindex Arch
+  GNU Arch is a new version control system that is designed for
+distributed work.  It differs in many ways from old well-known
+systems, such as CVS and RCS.  It supports different transports for
+interoperating between users, offline operations, and it has good
+branching and merging features.  It also supports atomic commits of
+fileset changes, and keeps a history of file renaming and moving.  VC
+does not support all operations provided by GNU Arch, so you must
+sometimes invoke it from the command line, or use a specialized
+module.
+
+@cindex git
+  git is a version-control system invented by Linus Torvalds to
+support Linux kernel development.  Like GNU Arch, it supports atomic
+commits of fileset changes, and keeps a history of file renaming and
+moving.  One significant feature of git is that it largely abolishes
+the notion of a single centralized repository; instead, each working
+copy of a git project is its own repository and coordination is done
+through repository-sync operations.  VC fully supports git, except
+that it doesn't do news merges and repository sync operations must
+be done from the command line.
+
+@cindex hg
+@cindex Mercurial
+  Mercurial is a distributed version-control systems broadly
+resembling GNU Arch and git, with atomic fileset commits and
+rename/move histories.  Like git it is fully decentralized.
+VC fully supports Mercurial, except for repository sync operations
+which still need to be done from the command line.
+
+@node VCS Concepts
 @subsubsection Concepts of Version Control
 
-@cindex master file
+@cindex repository
 @cindex registered file
    When a file is under version control, we also say that it is
-@dfn{registered} in the version control system.  Each registered file
-has a corresponding @dfn{master file} which represents the file's
-present state plus its change history---enough to reconstruct the
-current version or any earlier version.  Usually the master file also
-records a @dfn{log entry} for each version, describing in words what was
-changed in that version.
+@dfn{registered} in the version control system.  The system has a
+@dfn{repository} which stores both the file's present state plus its
+change history---enough to reconstruct the current version or any
+earlier version.  The repository will also contain a @dfn{log entry} for
+each change to the file, describing in words what was modified in that 
+revision.
 
 @cindex work file
 @cindex checking out files
-  The file that is maintained under version control is sometimes called
-the @dfn{work file} corresponding to its master file.  You edit the work
-file and make changes in it, as you would with an ordinary file.  (With
-SCCS and RCS, you must @dfn{lock} the file before you start to edit it.)
-After you are done with a set of changes, you @dfn{check the file in},
-which records the changes in the master file, along with a log entry for
+  A file checked out of a version-control repository is sometimes
+called the @dfn{work file}.  You edit the work file and make changes
+in it, as you would with an ordinary file.  After you are done with a
+set of changes, you @dfn{check in} or @dfn{commit} the file, which
+records the changes in the repository, along with a log entry for
 them.
 
-  With CVS, there are usually multiple work files corresponding to a
-single master file---often each user has his own copy.  It is also
-possible to use RCS in this way, but this is not the usual way to use
-RCS.
-
-@cindex locking and version control
+@cindex revision
+@cindex revision ID
+  A copy of a file stored in a repository is called a @dfn{revision}.
+The history of a file is a sequence of revisions.  Each revisions is
+named by a @dfn{revision ID}.  In older VCSes (such as SCCS and RCS),
+the simplest kind of revision ID consisted of a @dfn{dot-pair};
+integers (the @dfn{major} and @dfn{minor} revisions) separated by a
+dot.  Newer VCSes tend to use @dfn{monotonic} revision IDs that are
+simple integers counting from 1.
+
+  To go beyond these basic concepts, you will need to understand three
+ways in which version-control systems can differ from each other.  They
+can be locking or merging; they can be file-based or changeset-based;
+and they can be centralized or decentralized.  VC handles all these
+choices, but they lead to differing behaviors which you will need
+to understand as you use it.
+
+@cindex locking versus merging
   A version control system typically has some mechanism to coordinate
 between users who want to change the same file.  One method is
 @dfn{locking} (analogous to the locking that Emacs uses to detect
-simultaneous editing of a file, but distinct from it).  The other method
-is to merge your changes with other people's changes when you check them
-in.
+simultaneous editing of a file, but distinct from it).  In a locking
+system, such as SCCS, you must @dfn{lock} a file before you start to
+edit it.  The other method is @dfn{merging}; the system tries to 
+merge your changes with other people's changes when you check them in.
 
   With version control locking, work files are normally read-only so
 that you cannot change them.  You ask the version control system to make
 a work file writable for you by locking it; only one user can do
 this at any given time.  When you check in your changes, that unlocks
 the file, making the work file read-only again.  This allows other users
-to lock the file to make further changes.  SCCS always uses locking, and
-RCS normally does.
+to lock the file to make further changes.
+
+  By contrast, a merging system lets each user check out and modify a
+work file at any time.  When you check in a file, the system will
+attempt to merge your changes with any others checked into the
+repository since you checked out the file.
+
+  Both locking and merging systems can have problems when multiple users
+try to modify the same file at the same time.  Locking systems have
+@dfn{lock conflicts}; a user may try to check a file out and be unable
+to because it is locked.  In merging systems, @dfn{merge conflicts}
+happen when you check in a change to a file that conflicts with a change
+checked in by someone else after your checkout.  Both kinds of conflict
+have to be resolved by human judgment and communication.
+
+  SCCS always uses locking. RCS is lock-based by default but can be
+told to operate in a merging style.  CVS and Subversion are
+merge-based by default but can be told to operate in a locking mode.
+Most later version-control systems, such as GNU Arch, git, and
+Mercurial, have been based exclusively on merging rather than locking.
+This is because experience has shown that the merging-based approach
+is generally superior to the locking one, both in convenience to
+developers and in minimizing the number and severity of conflicts that
+actually occur.
+
+   While it is rather unlikely that anyone will ever again build a
+fundamentally locking-based rather than merging-based version-control
+system in the future, merging-based version-systems sometimes have locks
+retrofitted onto them for reasons having nothing to do with technology.
+@footnote{Usually the control-freak instincts of managers.}  For this
+reason, and to support older systems still in use, VC mode supports
+both locking and merging version control and tries to hide the differences
+between them as much as possible.
+
+@cindex files versus changesets.
+  On SCCS, RCS, CVS, and other early version-control systems, checkins
+and other operations are @dfn{file-based}; each file has its own
+@dfn{master file} with its own comment and revision history separate
+from that of all other files in the system.  Later systems, beginning
+with Subversion, became @dfn{changeset-based}; a checkin under these
+may include changes to several files and that change set is treated as
+a unit by the system.  Any comment associated with the change belongs
+to no single file, but is attached to the changeset itself.
+
+  Changeset-based version control is in general both more flexible and
+more powerful than file-based version control; usually, when a change to
+multiple files has to be backed out, it's good to be able to easily
+identify and remove all of it.  But it took some years for designers to
+figure that out, and while file-based systems are passing out of use
+there are lots of legacy repositories still to be dealt with at time of
+writing in 2007.
+
+  In fact, older versions of VC mode supported only file-based systems,
+leading to some unhappy results when it was used to drive
+changeset-based ones---the Subversion support, for example, used to break
+up changesets into multiple per-file commits.  This has been fixed, but
+it has left a legacy in VC-mode's terminology.  The terms ``checkin'' 
+and ``checkout'' are associated with file-based and locking-based
+systems and a bit archaic; nowadays those operations are usually called
+``commit'' and ``update''.
+
+@cindex centralized vs. decentralized
+  Early version-control systems were designed around a @dfn{centralized}
+model in which each project has only one repository used by all
+developers.  SCCS, RCS, CVS, and Subversion share this kind of model.
+It has two important problems. One is that a single repository is a
+single point of failure---if the repository server is down all work
+stops.  The other is that you need to be connected live to the server to
+do checkins and checkouts; if you're offline, you can't work.
+
+  Newer version-control systems like GNU Arch, git, Mercurial, and Bzr
+are @dfn{decentralized}.  A project may have several different
+repositories, and these systems support a sort of super-merge between
+repositories that tries to reconcile their change histories.  At the
+limit, each developer has his/her own repository, and repository
+merges replace checkin/commit operations.
+
+  VC's job is to help you manage the traffic between your personal
+workfiles and a repository.  Whether that repository is a single master
+or one of a network of peer repositories is not something VC has to care
+about.  Thus, the difference between a centralized and a decentralized
+version-control system is invisible to VC mode.
 
-  The other alternative for RCS is to let each user modify the work file
-at any time.  In this mode, locking is not required, but it is
-permitted; check-in is still the way to record a new version.
-
-  CVS normally allows each user to modify his own copy of the work file
-at any time, but requires merging with changes from other users at
-check-in time.  However, CVS can also be set up to require locking.
 @iftex
 (@pxref{CVS Options,,,emacs-xtra, Specialized Emacs Features}).
 @end iftex
@@ -1394,7 +1522,7 @@ check-in time.  However, CVS can also be set up to require locking.
 @cindex version control log
 
   Projects that use a revision control system can have @emph{two}
-types of log for changes.  One is the per-file log maintained by the
+types of log for changes.  One is the log maintained by the
 revision control system: each time you check in a change, you must
 fill out a @dfn{log entry} for the change (@pxref{Log Buffer}).  This
 kind of log is called the @dfn{version control log}, also the
@@ -1407,10 +1535,22 @@ A small program would use one @file{ChangeLog} file; a large program
 may well merit a @file{ChangeLog} file in each major directory.
 @xref{Change Log}.
 
-  A project maintained with version control can use just the per-file
-log, or it can use both kinds of logs.  It can handle some files one
-way and some files the other way.  Each project has its policy, which
-you should follow.
+  Actually, the fact that both kinds of log exist is partly a legacy from
+file-based version control.  Changelogs are a GNU convention, later 
+more widely adopted, that help developers to get a changeset-based
+view of a project even when its version-control system has that
+information split up in multiple file-based logs.  
+
+  Changeset-based version systems, on the other hand, often maintain
+a changeset-based modification log for the entire system that makes
+ChangeLogs mostly redundant.  The only advantage ChangeLogs retain is that
+it may be useful to be able to view the transaction history of a
+single directory separately from those of other directories.
+
+  A project maintained with version control can use just the
+version-control log, or it can use both kinds of logs.  It can
+handle some files one way and some files the other way.  Each project
+has its policy, which you should follow.
 
   When the policy is to use both, you typically want to write an entry
 for each change just once, then put it into both logs.  You can write
@@ -1425,7 +1565,6 @@ to copy it to @file{ChangeLog}
 (@pxref{Change Logs and VC}).
 @end ifnottex
 
-
 @node VC Mode Line
 @subsection Version Control and the Mode Line
 
@@ -1433,7 +1572,7 @@ to copy it to @file{ChangeLog}
 this on the mode line.  For example, @samp{RCS-1.3} says that RCS is
 used for that file, and the current version is 1.3.
 
-  The character between the back-end name and the version number
+  The character between the back-end name and the revision ID
 indicates the version control status of the file.  @samp{-} means that
 the work file is not locked (if locking is in use), or not modified (if
 locking is not in use).  @samp{:} indicates that the file is locked, or
@@ -1455,8 +1594,56 @@ system, but is usually not excessive.
 @node Basic VC Editing
 @subsection Basic Editing under Version Control
 
+@menu
+* Selecting A Fileset::    Choosing a set of files to operate on 
+* Doing The Right Thing::  Stepping forward in the development cycle
+* VC With A Locking VCS::  RCS in its default mode, SCCS, and optionally CVS.
+* VC With A Merging VCS::  Without locking: default mode for CVS.
+* Advanced C-x v v::       Advanced features available with a prefix argument.
+* Log Buffer::             Features available in log entry buffers.
+@end menu
+
+@node Selecting A Fileset
+@subsubsection Choosing the scope of your command
+
+@cindex filesets
+   Most VC commands operate on @dfn{filesets}.  A fileset is a 
+group of files that you have chosen to treat as a unit at the
+time you perform the command.  Filesets are the way that VC
+mode bridges the gap between file-based and changeset-based 
+version-control systems.
+
+   If you are visiting a version-controlled file in the current buffer,
+the default fileset for any command is simply that one file.  If you
+are visiting a VC Dired buffer, and some files in it are marked,
+your fileset is the marked files only.
+
+   All files in a fileset must be under the same version-control system.
+If they are not, VC mode will fail when you attempt to execute 
+a command on the fileset.
+
+   In VC, filesets, are, essentially, a way to pass multiple file
+arguments as a group to underlying version-control commands.  For
+example, on Subversion a checkin with more than one file in its
+fileset will become a joint commit, as though you had typed
+@command{svn commit} with those file arguments at the shell command
+line in the directory of the selected buffer.
+
+   If you are accustomed to earlier versions of VC, the change in behavior
+you will notice is in VC-Dired mode. Other than @kbd{C-x v v}, most
+VC-mode commands once operated on only one file selected by the line
+the cursor is on.  The change in the behavior of @kbd{C-x v v} outside
+VC-Dired mode is more subtle.  Formerly it operated in parallel on all
+marked files, but did not pass them to the version-control backends as
+a group.  Now it does, which enables VC to drive changeset-based
+version-control systems.
+
+@node Doing The Right Thing
+@subsubsection Performing the next operation in the development cycle
+
   The principal VC command is an all-purpose command that performs
-either locking or check-in, depending on the situation.
+either locking or check-in on your current fileset, depending on 
+the situation.
 
 @table @kbd
 @itemx C-x v v
@@ -1466,8 +1653,10 @@ Perform the next logical version control operation on this file.
 @findex vc-next-action
 @kindex C-x v v
   The precise action of this command depends on the state of the file,
-and whether the version control system uses locking or not.  SCCS and
-RCS normally use locking; CVS normally does not use locking.
+and whether the version control system uses locking or merging.  SCCS and
+RCS normally use locking; CVS and Subversion normally use
+merging but can be configured to do locking.  Later systems such as 
+GNU Arch and Mercurial always use merging.
 
 @findex vc-toggle-read-only
 @kindex C-x C-q @r{(Version Control)}
@@ -1478,14 +1667,7 @@ accidentally edit a file without properly checking it out first.  To
 achieve this, bind the key @kbd{C-x C-q} to @kbd{vc-toggle-read-only}
 in your @file{~/.emacs} file.  (@xref{Init Rebinding}.)
 
-@menu
-* VC with Locking::     RCS in its default mode, SCCS, and optionally CVS.
-* Without Locking::     Without locking: default mode for CVS.
-* Advanced C-x v v::    Advanced features available with a prefix argument.
-* Log Buffer::          Features available in log entry buffers.
-@end menu
-
-@node VC with Locking
+@node VC With A Locking VCS
 @subsubsection Basic Version Control with Locking
 
   If locking is used for the file (as with SCCS, and RCS in its default
@@ -1499,7 +1681,7 @@ makes it writable so that you can change it.
 @item
 If the file is locked by you, and contains changes, @kbd{C-x v v} checks
 in the changes.  In order to do this, it first reads the log entry
-for the new version.  @xref{Log Buffer}.
+for the new revision.  @xref{Log Buffer}.
 
 @item
 If the file is locked by you, but you have not changed it since you
@@ -1516,30 +1698,33 @@ formerly locked the file, to inform him of what has happened.
   These rules also apply when you use CVS in locking mode, except
 that there is no such thing as stealing a lock.
 
-@node Without Locking
-@subsubsection Basic Version Control without Locking
+@node VC With A Merging VCS
+@subsubsection Basic Version Control with Merging
 
-  When there is no locking---the default for CVS---work files are always
+  When your version-control system is merging-based rather than
+locking-based---the default for CVS and Subversion, and the way GNU
+Arch and more modern systems always work---work files are always
 writable; you do not need to do anything before you begin to edit a
-file.  The status indicator on the mode line is @samp{-} if the file is
-unmodified; it flips to @samp{:} as soon as you save any changes in the
-work file.
+file.  The status indicator on the mode line is @samp{-} if the file
+is unmodified; it flips to @samp{:} as soon as you save any changes in
+the work file.
 
-  Here is what @kbd{C-x v v} does when using CVS:
+  Here is what @kbd{C-x v v} does when using a merging-based system
+(such as CVS or Subversion in their default merging mode):
 
 @itemize @bullet
 @item
-If some other user has checked in changes into the master file, Emacs
+If some other user has checked in changes into the repository, Emacs
 asks you whether you want to merge those changes into your own work
 file.  You must do this before you can check in your own changes.  (To
-pick up any recent changes from the master file @emph{without} trying
+pick up any recent changes from the repository @emph{without} trying
 to commit your own changes, type @kbd{C-x v m @key{RET}}.)
 @xref{Merging}.
 
 @item
-If there are no new changes in the master file, but you have made
+If there are no new changes in the repository, but you have made
 modifications in your work file, @kbd{C-x v v} checks in your changes.
-In order to do this, it first reads the log entry for the new version.
+In order to do this, it first reads the log entry for the new revision.
 @xref{Log Buffer}.
 
 @item
@@ -1548,23 +1733,25 @@ If the file is not modified, the @kbd{C-x v v} does nothing.
 
   These rules also apply when you use RCS in the mode that does not
 require locking, except that automatic merging of changes from the
-master file is not implemented.  Unfortunately, this means that nothing
+repository is not implemented.  Unfortunately, this means that nothing
 informs you if another user has checked in changes in the same file
 since you began editing it, and when this happens, his changes will be
-effectively removed when you check in your version (though they will
-remain in the master file, so they will not be entirely lost).  You must
-therefore verify that the current version is unchanged, before you
-check in your changes.  We hope to eliminate this risk and provide
-automatic merging with RCS in a future Emacs version.
+effectively removed when you check in your revision (though they will
+remain in the repository, so they will not be entirely lost).  You must
+therefore verify that the current revision is unchanged, before you
+check in your changes.
 
   In addition, locking is possible with RCS even in this mode, although
 it is not required; @kbd{C-x v v} with an unmodified file locks the
 file, just as it does with RCS in its normal (locking) mode.
 
+  Later systems like CVS, Subversion and Arch will notice conflicting 
+changes in the repository automatically and notify you when they occur.
+
 @node Advanced C-x v v
 @subsubsection Advanced Control in @kbd{C-x v v}
 
-@cindex version number to check in/out
+@cindex revision ID to check in/out
   When you give a prefix argument to @code{vc-next-action} (@kbd{C-u
 C-x v v}), it still performs the next logical version control
 operation, but accepts additional arguments to specify precisely how
@@ -1572,21 +1759,21 @@ to do the operation.
 
 @itemize @bullet
 @item
-If the file is modified (or locked), you can specify the version
-number to use for the new version that you check in.  This is one way
+If the file is modified (or locked), you can specify the revision ID
+to use for the new version that you check in.  This is one way
 to create a new branch (@pxref{Branches}).
 
 @item
 If the file is not modified (and unlocked), you can specify the
-version to select; this lets you start working from an older version,
-or on another branch.  If you do not enter any version, that takes you
-to the highest version on the current branch; therefore @kbd{C-u C-x
-v v @key{RET}} is a convenient way to get the latest version of a file from
-the repository.
+revision to select; this lets you start working from an older
+revision, or on another branch.  If you do not enter any revision,
+that takes you to the highest (``head'') revision on the current
+branch; therefore @kbd{C-u C-x v v @key{RET}} is a convenient way to
+get the latest version of a file from the repository.
 
 @item
 @cindex specific version control system
-Instead of the version number, you can also specify the name of a
+Instead of the revision ID, you can also specify the name of a
 version control system.  This is useful when one file is being managed
 with two version control systems at the same time
 @iftex
@@ -1630,7 +1817,7 @@ the revision control log.
   In the @samp{*VC-Log*} buffer, @kbd{C-c C-f} (@kbd{M-x
 log-edit-show-files}) shows the list of files to be committed in case
 you need to check that.  (This can be a list of more than one file if
-you use VC Dired mode or PCL-CVS.
+you use VC Dired mode or PCL-CVS.)
 @iftex
 @xref{VC Dired Mode,,,emacs-xtra, Specialized Emacs Features},
 @end iftex
@@ -1650,73 +1837,93 @@ in the @samp{*VC-Log*} buffer, and you can go back to that buffer at any
 time to complete the check-in.
 
   If you change several source files for the same reason, it is often
-convenient to specify the same log entry for many of the files.  To do
-this, use the history of previous log entries.  The commands @kbd{M-n},
-@kbd{M-p}, @kbd{M-s} and @kbd{M-r} for doing this work just like the
-minibuffer history commands (except that these versions are used outside
-the minibuffer).
+convenient to specify the same log entry for many of the files.  (This
+is the normal way to do things on a changeset-oriented system, where
+comments are attached to changesets rather than the history of
+individual files.) The most convenient way to do this is to mark all the
+files in VC-Dired mode and check in from there; the log buffer will
+carry the fileset information with it and do a group commit when you
+confirm it with @kbd{C-c C-c}.
+
+  However, you can also browse the history of previous log entries to
+duplicate a checkin comment. This can be useful when you want several
+files to have checkin comments that vary only slightly from each
+other. The commands @kbd{M-n}, @kbd{M-p}, @kbd{M-s} and @kbd{M-r} for
+doing this work just like the minibuffer history commands (except that
+these versions are used outside the minibuffer).
 
 @vindex vc-log-mode-hook
-  Each time you check in a file, the log entry buffer is put into VC Log
+  Each time you check in a change, the log entry buffer is put into VC Log
 mode, which involves running two hooks: @code{text-mode-hook} and
 @code{vc-log-mode-hook}.  @xref{Hooks}.
 
-@node Old Versions
-@subsection Examining And Comparing Old Versions
+@node Old Revisions
+@subsection Examining And Comparing Old Revisions
 
   One of the convenient features of version control is the ability
-to examine any version of a file, or compare two versions.
+to examine any revision of a file, or compare two revisions.
 
 @table @kbd
-@item C-x v ~ @var{version} @key{RET}
-Examine version @var{version} of the visited file, in a buffer of its
+@item C-x v ~ @var{revision} @key{RET}
+Examine revision @var{revision} of the visited file, in a buffer of its
 own.
 
 @item C-x v =
-Compare the current buffer contents with the master version from which
-you started editing.
+Compare the buffer contents associated with the current
+fileset with the working revision(s) from which you started editing.
 
-@item C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} @var{newvers} @key{RET}
-Compare the specified two versions of @var{file}.
+@item C-u C-x v = @key{RET} @var{oldvers} @key{RET} @var{newvers} @key{RET}
+Compare the specified two repository revisions of the current fileset.
 
 @item C-x v g
-Display the file with per-line version information and using colors.
+Display the file with per-line revision information and using colors.
 @end table
 
-@findex vc-version-other-window
+@findex vc-revision-other-window
 @kindex C-x v ~
-  To examine an old version in its entirety, visit the file and then type
-@kbd{C-x v ~ @var{version} @key{RET}} (@code{vc-version-other-window}).
-This puts the text of version @var{version} in a file named
-@file{@var{filename}.~@var{version}~}, and visits it in its own buffer
-in a separate window.  (In RCS, you can also select an old version
+  To examine an old revision in its entirety, visit the file and then type
+@kbd{C-x v ~ @var{revision} @key{RET}} (@code{vc-revision-other-window}).
+This puts the text of revision @var{revision} in a file named
+@file{@var{filename}.~@var{revision}~}, and visits it in its own buffer
+in a separate window.  (In RCS, you can also select an old revision
 and create a branch from it.  @xref{Branches}.)
 
 @findex vc-diff
 @kindex C-x v =
-  It is usually more convenient to compare two versions of the file,
-with the command @kbd{C-x v =} (@code{vc-diff}).  Plain @kbd{C-x v =}
-compares the current buffer contents (saving them in the file if
-necessary) with the master version from which you started editing the
-file (this is not necessarily the latest version of the file).
-@kbd{C-u C-x v =}, with a numeric argument, reads a file name and two
-version numbers, then compares those versions of the specified file.
-Both forms display the output in a special buffer in another window.
-
-  You can specify a checked-in version by its number; an empty input
+@kbd{C-x v =} compares the current buffer contents of each file in the
+current fileset (saving them in the file if necessary) with the
+repository revision from which you started editing each file (this is not
+necessarily the latest revision of the file).  The diff will be displayed
+in a special buffer in another window.
+
+@findex vc-diff
+@kindex C-u C-x v =
+  You can compare two repository revisions of the current fileset with
+the command @kbd{C-u C-x v =} (@code{vc-diff}).  @kbd{C-u C-x v =} reads
+two revision ID or tags. The diff will be displayed in a special
+buffer in another window.
+
+  You can specify a checked-in revision by its ID; an empty input
 specifies the current contents of the work file (which may be different
-from all the checked-in versions).  You can also specify a snapshot name
+from all the checked-in revisions).  You can also specify a snapshot name
 @iftex
 (@pxref{Snapshots,,,emacs-xtra, Specialized Emacs Features})
 @end iftex
 @ifnottex
 (@pxref{Snapshots})
 @end ifnottex
-instead of one or both version numbers.
+instead of one or both revision ID.
+
+  Note that if your version-control system is file-oriented (SCCS,
+RCS, CVS) rather than fileset-oriented (Subversion, GNU Arch, git,
+Mercurial) specifying a revision of a multiple-file fileset by
+revision ID (as opposed to a snapshot name or RSCCS/RCS tag) is
+unlikely to return diffs that are connected in any meaningful way.
 
-  If you supply a directory name instead of the name of a registered
-file, this command compares the two specified versions of all registered
-files in that directory and its subdirectories.
+  If you invoke @kbd{C-u C-x v =} or @kbd{C-u C-x v =} from a buffer
+that is neither visiting a version-controlled file nor a VC Dired
+buffer, these commands will generate a diff of all registered files in
+the current directory and its subdirectories.
 
 @vindex vc-diff-switches
 @vindex vc-rcs-diff-switches
@@ -1734,12 +1941,12 @@ the options in @code{vc-rcs-diff-switches}.  The
 Compilation mode (@pxref{Compilation Mode}), such as @kbd{C-x `} and
 @kbd{C-c C-c}, in both the ``old'' and ``new'' text, and they always
 find the corresponding locations in the current work file.  (Older
-versions are not, in general, present as files on your disk.)
+revisions are not, in general, present as files on your disk.)
 
 @findex vc-annotate
 @kindex C-x v g
   For some back ends, you can display the file @dfn{annotated} with
-per-line version information and using colors to enhance the visual
+per-line revision information and using colors to enhance the visual
 appearance, with the command @kbd{M-x vc-annotate}.  It creates a new
 buffer (the ``annotate buffer'') displaying the file's text, with each
 part colored to show how old it is.  Text colored red is new, blue means
@@ -1748,7 +1955,7 @@ the color is scaled over the full range of ages, such that the oldest
 changes are blue, and the newest changes are red.
 
   When you give a prefix argument to this command, it uses the
-minibuffer to read two arguments: which version number to display and
+minibuffer to read two arguments: the ID of which revision to display and
 annotate (instead of the current file contents), and the time span in
 days the color range should cover.  
 
@@ -1786,9 +1993,9 @@ the author's description of the changes in the revision on the current
 line.
 
 @item W
-Annotate the workfile version--the one you are editing.  If you used
+Annotate the working revision--the one you are editing.  If you used
 @kbd{P} and @kbd{N} to browse to other revisions, use this key to
-return to your current version.
+return to your working revision.
 @end table
 
 @node Secondary VC Commands
@@ -1841,16 +2048,18 @@ situation.
   If locking is in use, @kbd{C-x v i} leaves the file unlocked and
 read-only.  Type @kbd{C-x v v} if you wish to start editing it.  After
 registering a file with CVS, you must subsequently commit the initial
-version by typing @kbd{C-x v v}.  Until you do that, the version
+revision by typing @kbd{C-x v v}.  Until you do that, the revision ID
 appears as @samp{@@@@} in the mode line.
 
-@vindex vc-default-init-version
-@cindex initial version number to register
-  The initial version number for a newly registered file is 1.1, by
-default.  You can specify a different default by setting the variable
-@code{vc-default-init-version}, or you can give @kbd{C-x v i} a numeric
-argument; then it reads the initial version number for this particular
-file using the minibuffer.
+@vindex vc-default-init-revision
+@cindex initial revision ID to register
+  The default initial revision ID for a newly registered file
+varies by what VCS you are using; normally it will be 1.1 on VCSes
+that use dot-pair revision IDs and 1 on VCSes that use monotonic IDs.
+You can specify a different default by setting the variable
+@code{vc-default-init-revision}, or you can give @kbd{C-x v i} a
+numeric argument; then it reads the initial revision ID for this
+particular file using the minibuffer.
 
 @vindex vc-initial-comment
   If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an
@@ -1862,12 +2071,12 @@ the initial comment works like reading a log entry (@pxref{Log Buffer}).
 
 @table @kbd
 @item C-x v l
-Display version control state and change history.
+Display revision control state and change history.
 @end table
 
 @kindex C-x v l
 @findex vc-print-log
-  To view the detailed version control status and history of a file,
+  To view the detailed revision control status and history of a file,
 type @kbd{C-x v l} (@code{vc-print-log}).  It displays the history of
 changes to the current file, including the text of the log entries.  The
 output appears in a separate window.  The point is centered at the
@@ -1915,7 +2124,7 @@ It also takes a numeric prefix argument as a repeat count.
 
 @item f
 Visit the revision indicated at the current line, like typing @kbd{C-x
-v ~} and specifying this revision's number (@pxref{Old Versions}).
+v ~} and specifying this revision's ID (@pxref{Old Revisions}).
 
 @item d
 Display the diff (@pxref{Comparing Files}) between the revision
@@ -1929,7 +2138,7 @@ current line was committed.
 
 @table @kbd
 @item C-x v u
-Revert the buffer and the file to the version from which you started
+Revert the buffer and the file to the working revision from which you started
 editing the file.
 
 @item C-x v c
@@ -1940,51 +2149,25 @@ This undoes your last check-in.
 @kindex C-x v u
 @findex vc-revert-buffer
   If you want to discard your current set of changes and revert to the
-version from which you started editing the file, use @kbd{C-x v u}
+working revision from which you started editing the file, use @kbd{C-x v u}
 (@code{vc-revert-buffer}).  This leaves the file unlocked; if locking
 is in use, you must first lock the file again before you change it
 again.  @kbd{C-x v u} requires confirmation, unless it sees that you
-haven't made any changes with respect to the master version.
+haven't made any changes with respect to the master copy of the
+working revision.
 
   @kbd{C-x v u} is also the command to unlock a file if you lock it and
 then decide not to change it.
 
 @kindex C-x v c
-@findex vc-cancel-version
+@findex vc-rollback
   To cancel a change that you already checked in, use @kbd{C-x v c}
-(@code{vc-cancel-version}).  This command discards all record of the
-most recent checked-in version, but only if your work file corresponds
-to that version---you cannot use @kbd{C-x v c} to cancel a version
-that is not the latest on its branch.  @kbd{C-x v c} also offers to
-revert your work file and buffer to the previous version (the one that
-precedes the version that is deleted).
-
-  If you answer @kbd{no}, VC keeps your changes in the buffer, and locks
-the file.  The no-revert option is useful when you have checked in a
-change and then discover a trivial error in it; you can cancel the
-erroneous check-in, fix the error, and check the file in again.
-
-  When @kbd{C-x v c} does not revert the buffer, it unexpands all
-version control headers in the buffer instead
-@iftex
-(@pxref{Version Headers,,,emacs-xtra, Specialized Emacs Features}).
-@end iftex
-@ifnottex
-(@pxref{Version Headers}).
-@end ifnottex
-This is because the buffer no longer corresponds to any existing
-version.  If you check it in again, the check-in process will expand
-the headers properly for the new version number.
-
-  However, it is impossible to unexpand the RCS @samp{@w{$}Log$} header
-automatically.  If you use that header feature, you have to unexpand it
-by hand---by deleting the entry for the version that you just canceled.
-
-  Be careful when invoking @kbd{C-x v c}, as it is easy to lose a lot of
-work with it.  To help you be careful, this command always requires
-confirmation with @kbd{yes}.  Note also that this command is disabled
-under CVS, because canceling versions is very dangerous and discouraged
-with CVS.
+(@code{vc-rollback}).  This command discards all record of the most
+recent checked-in revision, but only if your work file corresponds to
+that revision---you cannot use @kbd{C-x v c} to cancel a revision that is
+not the latest on its branch.  Note that many version-control systems do
+not support rollback at all; this command is something of a historical 
+relic.
 
 @ifnottex
 @c vc1-xtra.texi needs extra level of lowering.
@@ -1999,7 +2182,7 @@ with CVS.
 @cindex trunk (version control)
 
   One use of version control is to maintain multiple ``current''
-versions of a file.  For example, you might have different versions of a
+revisions of a file.  For example, you might have different revisions of a
 program in which you are gradually adding various unfinished new
 features.  Each such independent line of development is called a
 @dfn{branch}.  VC allows you to create branches, switch between
@@ -2007,18 +2190,30 @@ different branches, and merge changes from one branch to another.
 Please note, however, that branches are not supported for SCCS.
 
   A file's main line of development is usually called the @dfn{trunk}.
-The versions on the trunk are normally numbered 1.1, 1.2, 1.3, etc.  At
-any such version, you can start an independent branch.  A branch
-starting at version 1.2 would have version number 1.2.1.1, and consecutive
-versions on this branch would have numbers 1.2.1.2, 1.2.1.3, 1.2.1.4,
-and so on.  If there is a second branch also starting at version 1.2, it
-would consist of versions 1.2.2.1, 1.2.2.2, 1.2.2.3, etc.
-
-@cindex head version
-  If you omit the final component of a version number, that is called a
-@dfn{branch number}.  It refers to the highest existing version on that
-branch---the @dfn{head version} of that branch.  The branches in the
-example above have branch numbers 1.2.1 and 1.2.2.
+You can create multiple branches from the trunk.  How the difference
+between trunk and branch is made visible is dependent on whether the
+VCS uses dot-pair or monotonic version IDs.
+
+  In VCSes with dot-pair revision IDs, the revisions on the trunk are
+normally IDed 1.1, 1.2, 1.3, etc.  At any such revision, you can
+start an independent branch.  A branch starting at revision 1.2 would
+have revision ID 1.2.1.1, and consecutive revisions on this branch
+would have IDs 1.2.1.2, 1.2.1.3, 1.2.1.4, and so on.  If there is
+a second branch also starting at revision 1.2, it would consist of
+revisions 1.2.2.1, 1.2.2.2, 1.2.2.3, etc.
+
+   In VCSes with monotonic revision IDs, trunk revisions are IDed as
+1, 2, 3, etc.  A branch from (say) revision 2 might start with 2.1 and
+continue through 2.2, 2.3, etc.  But naming conventions for branches
+and subbranches vary widely on these systems, and some (like
+Mercurial) never depart from the monotonic integer sequence at all.
+Consult the documentation of the VCS you are using.
+
+@cindex head revision
+  If you omit the final component of a dot-pair revision ID, that is called a
+@dfn{branch ID}.  It refers to the highest existing revision on that
+branch---the @dfn{head revision} of that branch.  The branches in the
+dot-pair example above have branch IDs 1.2.1 and 1.2.2.
 
 @menu
 * Switching Branches::    How to get to another existing branch.
@@ -2032,14 +2227,15 @@ example above have branch numbers 1.2.1 and 1.2.2.
 @subsubsection Switching between Branches
 
   To switch between branches, type @kbd{C-u C-x v v} and specify the
-version number you want to select.  This version is then visited
-@emph{unlocked} (write-protected), so you can examine it before locking
-it.  Switching branches in this way is allowed only when the file is not
-locked.
+revision ID you want to select.  On a locking-based system, this
+version is then visited @emph{unlocked} (write-protected), so you can
+examine it before locking it.  Switching branches in this way is allowed
+only when the file is not locked.
 
-  You can omit the minor version number, thus giving only the branch
-number; this takes you to the head version on the chosen branch.  If you
-only type @key{RET}, Emacs goes to the highest version on the trunk.
+  On a VCS with dot-pair IDs, you can omit the minor part, thus giving
+only the branch ID; this takes you to the head version on the
+chosen branch.  If you only type @key{RET}, Emacs goes to the highest
+version on the trunk.
 
   After you have switched to any branch (including the main branch), you
 stay on it for subsequent VC commands, until you explicitly select some
@@ -2048,32 +2244,36 @@ other branch.
 @node Creating Branches
 @subsubsection Creating New Branches
 
-  To create a new branch from a head version (one that is the latest in
-the branch that contains it), first select that version if necessary,
+  To create a new branch from a head revision (one that is the latest in
+the branch that contains it), first select that revision if necessary,
 lock it with @kbd{C-x v v}, and make whatever changes you want.  Then,
 when you check in the changes, use @kbd{C-u C-x v v}.  This lets you
-specify the version number for the new version.  You should specify a
-suitable branch number for a branch starting at the current version.
-For example, if the current version is 2.5, the branch number should be
+specify the revision ID for the new revision.  You should specify a
+suitable branch ID for a branch starting at the current revision.
+For example, if the current revision is 2.5, the branch ID should be
 2.5.1, 2.5.2, and so on, depending on the number of existing branches at
 that point.
 
-  To create a new branch at an older version (one that is no longer the
-head of a branch), first select that version (@pxref{Switching
-Branches}), then lock it with @kbd{C-x v v}.  You'll be asked to
-confirm, when you lock the old version, that you really mean to create a
-new branch---if you say no, you'll be offered a chance to lock the
-latest version instead.
+  To create a new branch at an older revision (one that is no longer the
+head of a branch), first select that revision (@pxref{Switching
+Branches}).  Your procedure will then differ depending on whether you
+are using a locking or merging-based VCS.
+
+  On a locking VCS, you will need to lock the old revision branch with
+@kbd{C-x v v}.  You'll be asked to confirm, when you lock the old
+revision, that you really mean to create a new branch---if you say no,
+you'll be offered a chance to lock the latest revision instead.  On
+a merging-based VCS you will skip this step.
 
   Then make your changes and type @kbd{C-x v v} again to check in a new
-version.  This automatically creates a new branch starting from the
-selected version.  You need not specially request a new branch, because
-that's the only way to add a new version at a point that is not the head
+revision.  This automatically creates a new branch starting from the
+selected revision.  You need not specially request a new branch, because
+that's the only way to add a new revision at a point that is not the head
 of a branch.
 
   After the branch is created, you ``stay'' on it.  That means that
-subsequent check-ins create new versions on that branch.  To leave the
-branch, you must explicitly select a different version with @kbd{C-u C-x
+subsequent check-ins create new revisions on that branch.  To leave the
+branch, you must explicitly select a different revision with @kbd{C-u C-x
 v v}.  To transfer changes from one branch to another, use the merge
 command, described in the next section.
 
@@ -2103,26 +2303,26 @@ since you checked the file out (we call this @dfn{merging the news}).
 This is the common way to pick up recent changes from the repository,
 regardless of whether you have already changed the file yourself.
 
-  You can also enter a branch number or a pair of version numbers in
+  You can also enter a branch ID or a pair of revision IDs in
 the minibuffer.  Then @kbd{C-x v m} finds the changes from that
-branch, or the differences between the two versions you specified, and
-merges them into the current version of the current file.
+branch, or the differences between the two revisions you specified, and
+merges them into the current revision of the current file.
 
   As an example, suppose that you have finished a certain feature on
 branch 1.3.1.  In the meantime, development on the trunk has proceeded
-to version 1.5.  To merge the changes from the branch to the trunk,
-first go to the head version of the trunk, by typing @kbd{C-u C-x v v
-@key{RET}}.  Version 1.5 is now current.  If locking is used for the file,
-type @kbd{C-x v v} to lock version 1.5 so that you can change it.  Next,
+to revision 1.5.  To merge the changes from the branch to the trunk,
+first go to the head revision of the trunk, by typing @kbd{C-u C-x v v
+@key{RET}}.  Revision 1.5 is now current.  If locking is used for the file,
+type @kbd{C-x v v} to lock revision 1.5 so that you can change it.  Next,
 type @kbd{C-x v m 1.3.1 @key{RET}}.  This takes the entire set of changes on
-branch 1.3.1 (relative to version 1.3, where the branch started, up to
-the last version on the branch) and merges it into the current version
+branch 1.3.1 (relative to revision 1.3, where the branch started, up to
+the last revision on the branch) and merges it into the current revision
 of the work file.  You can now check in the changed file, thus creating
-version 1.6 containing the changes from the branch.
+revision 1.6 containing the changes from the branch.
 
   It is possible to do further editing after merging the branch, before
 the next check-in.  But it is usually wiser to check in the merged
-version, then lock it and make the further changes.  This will keep
+revision, then lock it and make the further changes.  This will keep
 a better record of the history of changes.
 
 @cindex conflicts
@@ -2140,7 +2340,7 @@ Ediff, Ediff, ediff, The Ediff Manual}).
   If you say no, the conflicting changes are both inserted into the
 file, surrounded by @dfn{conflict markers}.  The example below shows how
 a conflict region looks; the file is called @samp{name} and the current
-master file version with user B's changes in it is 1.11.
+master file revision with user B's changes in it is 1.11.
 
 @c @w here is so CVS won't think this is a conflict.
 @smallexample
@@ -2163,12 +2363,12 @@ check in the merged version afterwards.
 @subsubsection Multi-User Branching
 
   It is often useful for multiple developers to work simultaneously on
-different branches of a file.  CVS allows this by default; for RCS, it
-is possible if you create multiple source directories.  Each source
-directory should have a link named @file{RCS} which points to a common
-directory of RCS master files.  Then each source directory can have its
-own choice of selected versions, but all share the same common RCS
-records.
+different branches of a file.  CVS and later systems allow this by
+default; for RCS, it is possible if you create multiple source
+directories.  Each source directory should have a link named
+@file{RCS} which points to a common directory of RCS master files.
+Then each source directory can have its own choice of selected
+revisions, but all share the same common RCS records.
 
   This technique works reliably and automatically, provided that the
 source files contain RCS version headers
@@ -2178,13 +2378,13 @@ source files contain RCS version headers
 @ifnottex
 (@pxref{Version Headers}).
 @end ifnottex
-The headers enable Emacs to be sure, at all times, which version
-number is present in the work file.
+The headers enable Emacs to be sure, at all times, which revision
+ID is present in the work file.
 
   If the files do not have version headers, you must instead tell Emacs
 explicitly in each session which branch you are working on.  To do this,
 first find the file, then type @kbd{C-u C-x v v} and specify the correct
-branch number.  This ensures that Emacs knows which branch it is using
+branch ID.  This ensures that Emacs knows which branch it is using
 during this particular editing session.
 
 @ifnottex
similarity index 100%
rename from man/fixit.texi
rename to doc/emacs/fixit.texi
similarity index 100%
rename from man/frames.texi
rename to doc/emacs/frames.texi
similarity index 100%
rename from man/glossary.texi
rename to doc/emacs/glossary.texi
similarity index 100%
rename from man/gnu.texi
rename to doc/emacs/gnu.texi
diff --git a/doc/emacs/gpl.texi b/doc/emacs/gpl.texi
new file mode 100644 (file)
index 0000000..7fe5c3e
--- /dev/null
@@ -0,0 +1,721 @@
+@c The GNU General Public License.
+@center Version 3, 29 June 2007
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.  
+
+@display
+Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+@end display
+
+@heading 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.
+
+@heading TERMS AND CONDITIONS
+
+@enumerate 0
+@item 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.
+
+@item 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.
+
+@item 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.
+
+@item 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.
+
+@item 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.
+
+@item 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:
+
+@enumerate a
+@item 
+The work must carry prominent notices stating that you modified it,
+and giving a relevant date.
+
+@item
+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''.
+
+@item
+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.
+
+@item
+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.
+@end enumerate
+
+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.
+
+@item  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:
+
+@enumerate a
+@item
+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.
+
+@item
+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.
+
+@item
+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.
+
+@item
+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.
+
+@item
+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.
+
+@end enumerate
+
+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.
+
+@item 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:
+
+@enumerate a
+@item
+Disclaiming warranty or limiting liability differently from the terms
+of sections 15 and 16 of this License; or
+
+@item
+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
+
+@item
+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
+
+@item
+Limiting the use for publicity purposes of names of licensors or
+authors of the material; or
+
+@item
+Declining to grant rights under trademark law for use of some trade
+names, trademarks, or service marks; or
+
+@item
+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.
+@end enumerate
+
+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.
+
+@item 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.
+
+@item 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.
+
+@item 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.
+
+@item 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.
+
+@item 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.
+
+@item 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.
+
+@item 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.
+
+@item Disclaimer of Warranty.
+
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+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.
+
+@item 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.
+
+@item 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 enumerate
+
+@heading END OF TERMS AND CONDITIONS
+
+@heading 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.
+
+@smallexample
+@var{one line to give the program's name and a brief idea of what it does.}  
+Copyright (C) @var{year} @var{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 @url{http://www.gnu.org/licenses/}.
+@end smallexample
+
+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:
+
+@smallexample
+@var{program} Copyright (C) @var{year} @var{name of author} 
+This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type @samp{show c} for details.
+@end smallexample
+
+The hypothetical commands @samp{show w} and @samp{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
+@url{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 @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
+
+@ignore
+   arch-tag: 8b9947e1-c830-4d70-8907-a97e556731ba
+@end ignore
similarity index 100%
rename from man/help.texi
rename to doc/emacs/help.texi
similarity index 100%
rename from man/indent.texi
rename to doc/emacs/indent.texi
similarity index 100%
rename from man/killing.texi
rename to doc/emacs/killing.texi
similarity index 100%
rename from man/kmacro.texi
rename to doc/emacs/kmacro.texi
similarity index 100%
rename from man/m-x.texi
rename to doc/emacs/m-x.texi
similarity index 100%
rename from man/macos.texi
rename to doc/emacs/macos.texi
similarity index 100%
rename from man/major.texi
rename to doc/emacs/major.texi
diff --git a/doc/emacs/makefile.w32-in b/doc/emacs/makefile.w32-in
new file mode 100644 (file)
index 0000000..d34ab66
--- /dev/null
@@ -0,0 +1,144 @@
+#### -*- Makefile -*- for the Emacs Manual
+
+# Copyright (C) 2003, 2004, 2005, 2006, 2007 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, 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; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Where to find the source code.  The source code for Emacs's C kernel is
+# expected to be in $(srcdir)/src, and the source code for Emacs's
+# utility programs is expected to be in $(srcdir)/lib-src.  This is
+# set by the configure script's `--srcdir' option.
+srcdir=.
+
+infodir = $(srcdir)/../../info
+
+# The makeinfo program is part of the Texinfo distribution.
+MAKEINFO = makeinfo --force
+MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat
+INFO_TARGETS = $(infodir)/emacs
+DVI_TARGETS =  emacs.dvi
+INFOSOURCES = info.texi
+
+# The following rule does not work with all versions of `make'.
+.SUFFIXES: .texi .dvi
+.texi.dvi:
+       texi2dvi $<
+
+TEXI2DVI = texi2dvi
+ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
+        "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
+
+EMACS_XTRA=\
+       $(srcdir)/arevert-xtra.texi \
+       $(srcdir)/cal-xtra.texi \
+       $(srcdir)/dired-xtra.texi \
+       $(srcdir)/picture-xtra.texi \
+       $(srcdir)/emerge-xtra.texi \
+       $(srcdir)/vc-xtra.texi \
+       $(srcdir)/vc1-xtra.texi \
+       $(srcdir)/vc2-xtra.texi \
+       $(srcdir)/fortran-xtra.texi \
+       $(srcdir)/msdog-xtra.texi
+
+EMACSSOURCES= \
+       $(srcdir)/emacs.texi \
+       $(srcdir)/doclicense.texi \
+       $(srcdir)/screen.texi \
+       $(srcdir)/commands.texi \
+       $(srcdir)/entering.texi \
+       $(srcdir)/basic.texi \
+       $(srcdir)/mini.texi \
+       $(srcdir)/m-x.texi \
+       $(srcdir)/help.texi \
+       $(srcdir)/mark.texi \
+       $(srcdir)/killing.texi \
+       $(srcdir)/regs.texi \
+       $(srcdir)/display.texi \
+       $(srcdir)/search.texi \
+       $(srcdir)/fixit.texi \
+       $(srcdir)/files.texi \
+       $(srcdir)/buffers.texi \
+       $(srcdir)/windows.texi \
+       $(srcdir)/frames.texi \
+       $(srcdir)/mule.texi \
+       $(srcdir)/major.texi \
+       $(srcdir)/indent.texi \
+       $(srcdir)/text.texi \
+       $(srcdir)/programs.texi \
+       $(srcdir)/building.texi \
+       $(srcdir)/maintaining.texi \
+       $(srcdir)/abbrevs.texi \
+       $(srcdir)/sending.texi \
+       $(srcdir)/rmail.texi \
+       $(srcdir)/dired.texi \
+       $(srcdir)/calendar.texi \
+       $(srcdir)/misc.texi \
+       $(srcdir)/custom.texi \
+       $(srcdir)/trouble.texi \
+       $(srcdir)/cmdargs.texi \
+       $(srcdir)/xresources.texi \
+       $(srcdir)/anti.texi \
+       $(srcdir)/macos.texi \
+       $(srcdir)/msdog.texi \
+       $(srcdir)/gnu.texi \
+       $(srcdir)/glossary.texi \
+       $(srcdir)/ack.texi \
+       $(srcdir)/kmacro.texi \
+       $(EMACS_XTRA)
+
+info: $(INFO_TARGETS)
+
+dvi: $(DVI_TARGETS)
+
+# Note that all the Info targets build the Info files
+# in srcdir.  There is no provision for Info files
+# to exist in the build directory.
+# In a distribution of Emacs, the Info files should be up to date.
+
+$(infodir)/dir:
+       $(MULTI_INSTALL_INFO) --info-dir=$(infodir) $(INFO_TARGETS)
+
+$(infodir)/emacs: $(EMACSSOURCES)
+       $(MAKEINFO) emacs.texi
+
+emacs.dvi: $(EMACSSOURCES)
+       $(ENVADD) $(TEXI2DVI) $(srcdir)/emacs.texi
+
+emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
+       $(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-xtra.texi
+
+mostlyclean:
+       - $(DEL) *.log *.cp *.fn *.ky *.pg *.vr core *.tp *.core gnustmp.*
+
+clean: mostlyclean
+       - $(DEL) *.dvi
+       - $(DEL) $(infodir)/emacs*
+
+distclean: clean
+
+maintainer-clean: distclean
+       - $(DEL) *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
+# Don't delete these, because they are outside the current directory.
+#      for file in $(INFO_TARGETS); do rm -f $${file}*; done
+
+
+# Formerly this directory had texindex.c and getopt.c in it
+# and this makefile built them to make texindex.
+# That caused trouble because this is run entirely in the source directory.
+# Since we expect to get texi2dvi from elsewhere,
+# it is ok to expect texindex from elsewhere also.
similarity index 100%
rename from man/mark.texi
rename to doc/emacs/mark.texi
similarity index 100%
rename from man/mini.texi
rename to doc/emacs/mini.texi
similarity index 100%
rename from man/misc.texi
rename to doc/emacs/misc.texi
similarity index 100%
rename from man/msdog.texi
rename to doc/emacs/msdog.texi
similarity index 100%
rename from man/mule.texi
rename to doc/emacs/mule.texi
similarity index 100%
rename from man/programs.texi
rename to doc/emacs/programs.texi
similarity index 100%
rename from man/regs.texi
rename to doc/emacs/regs.texi
similarity index 100%
rename from man/rmail.texi
rename to doc/emacs/rmail.texi
similarity index 98%
rename from man/screen.texi
rename to doc/emacs/screen.texi
index 87b037849ce501e20887231b01cd87f2934aaf18..90ec645a26fabc3e42f2104a52ea407141dc6985 100644 (file)
@@ -197,7 +197,7 @@ more information.
   Normally, the mode line looks like this:
 
 @example
--@var{cs}:@var{ch}-@var{fr}  @var{buf}      @var{pos} @var{line}   (@var{major} @var{minor})------
+-@var{cs}:@var{ch}@var{R}-@var{fr}  @var{buf}      @var{pos} @var{line}   (@var{major} @var{minor})------
 @end example
 
 @noindent
@@ -211,6 +211,9 @@ been edited (the buffer is ``modified''), or @samp{--} if the buffer has
 not been edited.  For a read-only buffer, it is @samp{%*} if the buffer
 is modified, and @samp{%%} otherwise.
 
+  @var{R} is @samp{@@} if the default-directory for the current buffer
+is on a remote machine, or a hyphen otherwise.
+
   @var{fr} gives the selected frame name (@pxref{Frames}).  It appears
 only on text-only terminals.  The initial frame's name is @samp{F1}.
 
similarity index 100%
rename from man/search.texi
rename to doc/emacs/search.texi
similarity index 100%
rename from man/sending.texi
rename to doc/emacs/sending.texi
similarity index 98%
rename from man/text.texi
rename to doc/emacs/text.texi
index 3a0e091ea40943b8b211d631fd67d58c710b8d5a..9cfd4ffe9226300ade43224ac57aca66e5b80fe7 100644 (file)
@@ -486,9 +486,11 @@ The section on init files says how to arrange this permanently for yourself.
 
 @table @kbd
 @item M-q
-Fill current paragraph (@code{fill-paragraph}).
+Fill current paragraph or active region (@code{fill-paragraph-or-region}).
 @item C-x f
 Set the fill column (@code{set-fill-column}).
+@item M-x fill-paragraph
+Fill current paragraph (@code{fill-paragraph}).
 @item M-x fill-region
 Fill each paragraph in the region (@code{fill-region}).
 @item M-x fill-region-as-paragraph
@@ -497,34 +499,39 @@ Fill the region, considering it as one paragraph.
 Center a line.
 @end table
 
-@kindex M-q
 @findex fill-paragraph
-  To refill a paragraph, use the command @kbd{M-q}
-(@code{fill-paragraph}).  This operates on the paragraph that point is
-inside, or the one after point if point is between paragraphs.
-Refilling works by removing all the line-breaks, then inserting new ones
-where necessary.
+  To refill a paragraph, use @kbd{M-x fill-paragraph}.  This operates
+on the paragraph that point is inside, or the one after point if point
+is between paragraphs.  Refilling works by removing all the
+line-breaks, then inserting new ones where necessary.
 
 @findex fill-region
   To refill many paragraphs, use @kbd{M-x fill-region}, which
 finds the paragraphs in the region and fills each of them.
 
+@kindex M-q
+@findex fill-paragraph-or-region
+  The command @kbd{M-q} (@code{fill-paragraph-or-region}), operates on
+the active region like @code{fill-region} when the mark is active in
+Transient Mark mode.  Otherwise, it operates on the current paragraph
+like @code{fill-paragraph}.
+
 @findex fill-region-as-paragraph
-  @kbd{M-q} and @code{fill-region} use the same criteria as @kbd{M-h}
-for finding paragraph boundaries (@pxref{Paragraphs}).  For more
-control, you can use @kbd{M-x fill-region-as-paragraph}, which refills
-everything between point and mark as a single paragraph.  This command
-deletes any blank lines within the region, so separate blocks of text
-end up combined into one block.
+  @kbd{M-q}, @code{fill-paragraph} and @code{fill-region} use the same
+criteria as @kbd{M-h} for finding paragraph boundaries (@pxref{Paragraphs}).
+For more control, you can use @kbd{M-x fill-region-as-paragraph},
+which refills everything between point and mark as a single paragraph.
+This command deletes any blank lines within the region, so separate
+blocks of text end up combined into one block.
 
 @cindex justification
   A numeric argument to @kbd{M-q} tells it to @dfn{justify} the text
 as well as filling it.  This means that extra spaces are inserted to
 make the right margin line up exactly at the fill column.  To remove
 the extra spaces, use @kbd{M-q} with no argument.  (Likewise for
-@code{fill-region}.)  Another way to control justification, and choose
-other styles of filling, is with the @code{justification} text
-property; see @ref{Format Justification}.
+@code{fill-paragraph} and @code{fill-region}.)  Another way to control
+justification, and choose other styles of filling, is with the
+@code{justification} text property; see @ref{Format Justification}.
 
 @kindex M-s @r{(Text mode)}
 @cindex centering
@@ -588,7 +595,7 @@ fill prefix automatically (@pxref{Adaptive Fill}).
 @item C-x .
 Set the fill prefix (@code{set-fill-prefix}).
 @item M-q
-Fill a paragraph using current fill prefix (@code{fill-paragraph}).
+Fill a paragraph using current fill prefix (@code{fill-paragraph-or-region}).
 @item M-x fill-individual-paragraphs
 Fill the region, considering each change of indentation as starting a
 new paragraph.
@@ -2249,7 +2256,7 @@ margin width either with a numeric argument or in the minibuffer.
 
   Sometimes, as a result of editing, the filling of a paragraph becomes
 messed up---parts of the paragraph may extend past the left or right
-margins.  When this happens, use @kbd{M-q} (@code{fill-paragraph}) to
+margins.  When this happens, use @kbd{M-q} (@code{fill-paragraph-or-region}) to
 refill the paragraph.
 
   The fill prefix, if any, works in addition to the specified paragraph
similarity index 100%
rename from man/trouble.texi
rename to doc/emacs/trouble.texi
similarity index 93%
rename from man/vc-xtra.texi
rename to doc/emacs/vc-xtra.texi
index 6ec69d608962920faa16e1328807c28970e1fb4d..5b4e374a6ea6880ccdf6faaaab2bc1fa6aa53c7b 100644 (file)
@@ -15,7 +15,7 @@ the Emacs Manual}).  This chapter describes more advanced VC usage.
 @menu
 * VC Dired Mode::       Listing files managed by version control.
 * VC Dired Commands::   Commands to use in a VC Dired buffer.
-* Remote Repositories:: Efficient access to remote CVS servers.
+* Remote Repositories:: Efficient access to remote VCS servers.
 * Snapshots::           Sets of file versions treated as a unit.
 * Miscellaneous VC::    Various other commands and features of VC.
 * Customizing VC::      Variables that change VC's behavior.
similarity index 85%
rename from man/vc1-xtra.texi
rename to doc/emacs/vc1-xtra.texi
index 6d5df78848c3c3e7f1dac3f64c19de2c76e3d918..ebdd1d5951f559944a905145df3a1840b10e02b1 100644 (file)
@@ -120,21 +120,27 @@ ordinary Dired, that allows you to specify additional switches for the
   All the usual Dired commands work normally in VC Dired mode, except
 for @kbd{v}, which is redefined as the version control prefix.  You can
 invoke VC commands such as @code{vc-diff} and @code{vc-print-log} by
-typing @kbd{v =}, or @kbd{v l}, and so on.  Most of these commands apply
-to the file name on the current line.
+typing @kbd{v =}, or @kbd{v l}, and so on.  These commands will apply
+to the set of files you have marked for operation in the VC-Dired
+buffer.  
 
   The command @kbd{v v} (@code{vc-next-action}) operates on all the
 marked files, so that you can lock or check in several files at once.
-If it operates on more than one file, it handles each file according to
-its current state; thus, it might lock one file, but check in another
-file.  This could be confusing; it is up to you to avoid confusing
-behavior by marking a set of files that are in a similar state.  If no
-files are marked, @kbd{v v} operates on the file in the current line.
-
-  If any files call for check-in, @kbd{v v} reads a single log entry,
-then uses it for all the files being checked in.  This is convenient for
-registering or checking in several files at once, as part of the same
-change.
+If the underlying VC supports atomic commits of multiple-file
+changesets @kbd{v v} with a selected set of modified but not committed 
+files wuill commit all of them at once as a single changeset.
+
+  When @kbd{v v} (@code{vc-next-action}) operates on a set of files,
+it requires that all of those files must be in the same state;
+otherwise it will throw an error.  Note that this differs from the 
+behavior of older versions of VC, which did not have fileset
+operations and simply did @code{vc-next-action} on each file 
+individually.
+
+  If any files are in a state that calls for commit, @kbd{v v} reads a
+single log entry and uses it for the changeset as a whole.  If the
+underling VCS is file- rather than changeset-oriented, the log entry
+will be replicated into the history of each file.
 
 @findex vc-dired-toggle-terse-mode
 @findex vc-dired-mark-locked
similarity index 95%
rename from man/vc2-xtra.texi
rename to doc/emacs/vc2-xtra.texi
index 5a8d131705a9ffc6f6e14c2024e7f947a22e32af..da7ef76025a0c635fd397fde74e3587bfab71483 100644 (file)
@@ -6,17 +6,24 @@
 @c printed version) or in the main Emacs manual (for the on-line version).
 @node Remote Repositories
 @subsection Remote Repositories
-@cindex remote repositories (CVS)
+@cindex remote repositories
+
+  A common way of using CVS and other more advanced VCSes is to set up
+a central repository on some Internet host, then have each
+developer check out a personal working copy of the files on his local
+machine.  Committing changes to the repository, and picking up changes
+from other users into one's own working area, then works by direct
+interactions with the repository server.
 
-  A common way of using CVS is to set up a central CVS repository on
-some Internet host, then have each developer check out a personal
-working copy of the files on his local machine.  Committing changes to
-the repository, and picking up changes from other users into one's own
-working area, then works by direct interactions with the CVS server.
+  One difficulty is that access to a repository server is often slow,
+and that developers might need to work off-line as well.  While only
+third-generation decentralized VCses such as GNU Arch or Mercurial
+really solve this problem, VC is designed to reduce the amount of
+network interaction necessary.
 
-  One difficulty is that access to the CVS server is often slow, and
-that developers might need to work off-line as well.  VC is designed
-to reduce the amount of network interaction necessary.
+  If you are using a truly decentralized VCS you can skip the rest of
+this section. It describes backup and local-repository techniques
+that are only useful for Subversion and earlier VCSes.
 
 @menu
 * Version Backups::        Keeping local copies of repository versions.
@@ -28,7 +35,7 @@ to reduce the amount of network interaction necessary.
 @cindex version backups
 
 @cindex automatic version backups
-  When VC sees that the CVS repository for a file is on a remote
+  When VC sees that the repository for a file is on a remote
 machine, it automatically makes local backups of unmodified versions
 of the file---@dfn{automatic version backups}.  This means that you
 can compare the file to the repository version (@kbd{C-x v =}), or
@@ -47,7 +54,7 @@ as ordinary Emacs backup files
 @end ifnottex
 But they follow a similar naming convention.
 
-  For a file that comes from a remote CVS repository, VC makes a
+  For a file that comes from a remote repository, VC makes a
 version backup whenever you save the first changes to the file, and
 removes it after you have committed your modified version to the
 repository. You can disable the making of automatic version backups by
@@ -58,10 +65,10 @@ setting @code{vc-cvs-stay-local} to @code{nil} (@pxref{CVS Options}).
 of file @var{file} is @code{@var{file}.~@var{version}.~}.  This is
 almost the same as the name used by @kbd{C-x v ~}
 @iftex
-(@pxref{Old Versions,,,emacs, the Emacs Manual}),
+(@pxref{Old Revisions,,,emacs, the Emacs Manual}),
 @end iftex
 @ifnottex
-(@pxref{Old Versions}),
+(@pxref{Old Revisions}),
 @end ifnottex
 the only difference being the additional dot (@samp{.})  after the
 version number.  This similarity is intentional, because both kinds of
@@ -244,10 +251,10 @@ you need not hesitate to create snapshots whenever they are useful.
   You can give a snapshot name as an argument to @kbd{C-x v =} or
 @kbd{C-x v ~}
 @iftex
-(@pxref{Old Versions,,,emacs, the Emacs Manual}).
+(@pxref{Old Revisions,,,emacs, the Emacs Manual}).
 @end iftex
 @ifnottex
-(@pxref{Old Versions}).
+(@pxref{Old Revisions}).
 @end ifnottex
 Thus, you can use it to compare a snapshot against the current files,
 or two snapshots against each other, or a snapshot against a named
@@ -588,12 +595,12 @@ headers.
 @subsection Customizing VC
 
 @vindex vc-handled-backends
-The variable @code{vc-handled-backends} determines which version control
-systems VC should handle.  The default value is @code{(RCS CVS SVN SCCS
-GIT HG Arch MCVS)}, so it contains all six version systems that are
-currently supported.  If you want VC to ignore one or more of these
-systems, exclude its name from the list.  To disable VC entirely, set
-this variable to @code{nil}.
+The variable @code{vc-handled-backends} determines which version
+control systems VC should handle.  The default value is @code{(RCS CVS
+SVN SCCS BZR GIT HG Arch MCVS)}, so it contains all the version systems
+that are currently supported.  If you want VC to ignore one or more of
+these systems, exclude its name from the list.  To disable VC entirely,
+set this variable to @code{nil}.
 
 The order of systems in the list is significant: when you visit a file
 registered in more than one system (@pxref{Local Version Control}), VC
similarity index 100%
rename from man/windows.texi
rename to doc/emacs/windows.texi
similarity index 93%
rename from lispintro/ChangeLog
rename to doc/lispintro/ChangeLog
index 2452be826fc37a327a74fd8642ea933c7f091bd1..b198f14add2579a61359c03e7cc3d01089da44e9 100644 (file)
@@ -1,3 +1,24 @@
+2007-09-12  Robert J. Chassell  <bob@rattlesnake.com>
+
+       * emacs-lisp-intro.texi: Add email address to Thank You correctly
+
+2007-09-06  Romain Francoise  <romain@orebokech.com>
+
+       * Makefile.in (maintainer-clean): Delete info files.
+
+2007-09-06  Glenn Morris  <rgm@gnu.org>
+
+       * Move from lispintro/ to doc/lispintro/.
+       * Makefile.in (infodir): Go up one more level.
+       (usermanualdir): Change from ../man to ../emacs.
+       * makefile.w32-in (infodir, ENVADD): Go up one more level.
+       * emacs-lisp-intro.texi (setfilename): Go up one more level.
+
+2007-07-30  Robert J. Chassell  <bob@rattlesnake.com>
+
+       * emacs-lisp-intro.texi: Fix typo on line 5173, change `thee' to
+       `these'.
+
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
        * Relicense all FSF files to GPLv3 or later.
similarity index 95%
rename from lispintro/Makefile.in
rename to doc/lispintro/Makefile.in
index fc263c2095cc3d8339c8f6ade991e36c3a4720bf..5ace53379711f547445dca2a7e127b45484efd84 100644 (file)
@@ -25,8 +25,8 @@ SHELL = @SHELL@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
-infodir = ../info
-usermanualdir = $(srcdir)/../man
+infodir = ../../info
+usermanualdir = $(srcdir)/../emacs
 
 INFO_SOURCES = ${srcdir}/emacs-lisp-intro.texi
 # The file name eintr must fit within 5 characters, to allow for
@@ -66,6 +66,7 @@ distclean: clean
 
 maintainer-clean: distclean
        rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
+       cd $(infodir); rm -f eintr eintr-[1-9]
 
 # 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.
similarity index 100%
rename from lispintro/README
rename to doc/lispintro/README
old mode 100644 (file)
new mode 100755 (executable)
similarity index 100%
rename from lispintro/configure
rename to doc/lispintro/configure
similarity index 99%
rename from lispintro/emacs-lisp-intro.texi
rename to doc/lispintro/emacs-lisp-intro.texi
index 0318ac5d3619e4c5c4bb682122769bb393b7e894..e632b3d67882e1abbb98dadefe82dd0e4e038e9b 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo                                      @c -*-texinfo-*-
 @comment %**start of header
-@setfilename ../info/eintr
+@setfilename ../../info/eintr
 @c setfilename emacs-lisp-intro.info
 @c sethtmlfilename emacs-lisp-intro.html
 @settitle Programming in Emacs Lisp
@@ -22,9 +22,8 @@
 
 @comment %**end of header
 
-@set edition-number 3.07
-@set update-date 9 November 2006
-
+@set edition-number 3.08
+@set update-date 12 September 2007
 @ignore
  ## Summary of shell commands to create various output formats:
 
@@ -1049,6 +1048,7 @@ encouragement.  My mistakes are my own.
 
 @flushright
 Robert J. Chassell
+@email{bob@@gnu.org}
 @end flushright
 
 @c ================ Beginning of main text ================
@@ -5170,7 +5170,7 @@ Function Interactive}.)  The expression reads as follows:
 
 @noindent
 This expression is not one with letters standing for parts, as
-described earlier.  Instead, it starts a list with thee parts.
+described earlier.  Instead, it starts a list with these parts:
 
 The first part of the list is an expression to read the name of a
 buffer and return it as a string.  That is @code{read-buffer}.  The
old mode 100644 (file)
new mode 100755 (executable)
similarity index 100%
rename from lispintro/install-sh
rename to doc/lispintro/install-sh
similarity index 95%
rename from lispintro/makefile.w32-in
rename to doc/lispintro/makefile.w32-in
index 07d51d2462010734a39a9379fdd1bf15fd39d799..ea0f790f2127fb0fdea290a249bf7e76209566b9 100644 (file)
@@ -21,7 +21,7 @@
 
 srcdir = .
 
-infodir = $(srcdir)/../info
+infodir = $(srcdir)/../../info
 
 INFO_SOURCES = $(srcdir)/emacs-lisp-intro.texi
 # The file name eintr must fit within 5 characters, to allow for
@@ -33,7 +33,7 @@ MAKEINFO = makeinfo
 INSTALL_INFO = install-info
 TEXI2DVI = texi2dvi
 DVIPS = dvips
-ENVADD = $(srcdir)\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
+ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
         "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
 
 .SUFFIXES: .dvi .ps .texi
old mode 100644 (file)
new mode 100755 (executable)
similarity index 100%
rename from lispintro/missing
rename to doc/lispintro/missing
old mode 100644 (file)
new mode 100755 (executable)
similarity index 100%
rename from lispintro/mkinstalldirs
rename to doc/lispintro/mkinstalldirs
similarity index 100%
rename from lispref/.gitignore
rename to doc/lispref/.gitignore
similarity index 97%
rename from lispref/ChangeLog
rename to doc/lispref/ChangeLog
index 4d0b63c7cf01e2bf0f329ebf8a45610202da8565..d95597e940b9a6e8e682fd6829b98ae78bfe1277 100644 (file)
@@ -1,3 +1,9 @@
+2007-10-13  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi (@dircategory): Move to after @copying,
+       since we want @copying as close as possible to the beginning of
+       the output.
+
 2007-10-12  Richard Stallman  <rms@gnu.org>
 
        * elisp.texi (Top): Add Distinguish Interactive to subnode menu.
        of margin display specifications.
        (Replacing Specs): New subnode broken out of Display Property.
 
+2007-10-06  Juri Linkov  <juri@jurta.org>
+
+       * text.texi (Filling): Document fill-paragraph-or-region.
+
 2007-10-05  Juanma Barranquero  <lekktu@gmail.com>
 
        * display.texi (Auto Faces): Fix typo.
        * processes.texi (Misc Network): Note that these functions are
        supported only on some systems.
 
+2007-10-01  Richard Stallman  <rms@gnu.org>
+
+       * display.texi (Overlay Properties): Explain nil as priority.
+       Explain that conflicts are unpredictable if not resolved by
+       priorities.
+
+2007-09-23  Richard Stallman  <rms@gnu.org>
+
+       * macros.texi (Backquote): Minor clarification.
+
 2007-09-19  Richard Stallman  <rms@gnu.org>
 
        * display.texi (Display Property): Explain multiple display specs.
        Clarify when they work in parallel and when one overrides.
        Fix error in example.
 
+2007-09-06  Glenn Morris  <rgm@gnu.org>
+
+       * Move from lispref/ to doc/lispref/.  Change all setfilename
+       commands to use ../../info.
+       * Makefile.in (infodir): Go up one more level.
+       (usermanualdir): Change from ../man to ../emacs.
+       (miscmanualdir): New.
+       (dist): Use new variable miscmanualdir.
+       * makefile.w32-in (infodir, texinputdir): Go up one more level.
+       (usermanualdir): Change from ../man to ../emacs.
+
 2007-08-30  Martin Rudalics  <rudalics@gmx.at>
 
        * commands.texi (Command Loop Info): Advise against changing
        most variables described here.  Explain new variable
        last-repeatable-command.
 
+2007-08-29  Glenn Morris  <rgm@gnu.org>
+
+       * elisp.texi (EMACSVER): Increase to 23.0.50.
+
+2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * frames.texi (Basic Parameters): Add display-environment-variable
+       and term-environment-variable.
+
+2007-08-28  Juri Linkov  <juri@jurta.org>
+
+       * display.texi (Image Formats, Other Image Types): Add SVG.
+
+2007-08-28  Juri Linkov  <juri@jurta.org>
+
+       * display.texi (Images): Move formats-related text to new node
+       "Image Formats".
+       (Image Formats): New node.
+
 2007-08-27  Richard Stallman  <rms@gnu.org>
 
        * windows.texi (Window Configurations): Clarify what
 
        * display.texi (Images): Delete redundant @findex.
 
+2007-08-16  Richard Stallman  <rms@gnu.org>
+
+       * processes.texi (Asynchronous Processes): Clarify
+       doc of start-file-process.
+
 2007-08-08  Martin Rudalics  <rudalics@gmx.at>
 
        * modes.texi (Example Major Modes): Fix typo.
 
        * Relicense all FSF files to GPLv3 or later.
 
+2007-07-24  Michael Albinus  <michael.albinus@gmx.de>
+
+       * processes.texi (Synchronous Processes):
+       Add `process-file-shell-command'.
+       (Asynchronous Processes): Mention restricted use of
+       `process-filter' and `process-sentinel' in
+       `start-file-process'.  Add `start-file-process-shell-command'.
+
+2007-07-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Introduce optional parameter
+       IDENTIFICATION for `file-remote-p'.
+
 2007-07-16  Richard Stallman  <rms@gnu.org>
 
        * display.texi (Defining Faces): Fix previous change.
 
+2007-07-14  Richard Stallman  <rms@gnu.org>
+
+       * control.texi (Handling Errors): Document `debug' in handler list.
+
 2007-07-10  Richard Stallman  <rms@gnu.org>
 
        * display.texi (Defining Faces): Explain C-M-x feature for defface.
 
-2007-06-24  Karl Berry  <karl@tug.org>
+2007-07-09  Richard Stallman  <rms@gnu.org>
+
+       * files.texi (Magic File Names): Rewrite previous change.
+
+2007-07-08  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Introduce optional parameter
+       CONNECTED for `file-remote-p'.
+
+2007-07-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       * processes.texi (Asynchronous Processes):
+       * files.texi (Magic File Names): Add `start-file-process'.
+
+2007-06-27  Richard Stallman  <rms@gnu.org>
+
+       * files.texi (Format Conversion Piecemeal): Clarify
+       `after-insert-file-functions' calling convention.
+
+2007-06-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.texi (Magic File Names): Remove `dired-call-process'.
+       Add `process-file'.
+
+2007-06-27  Kenichi Handa  <handa@m17n.org>
+
+       * text.texi (Special Properties): Fix description about
+       `composition' property.
+
+2007-06-26  Kenichi Handa  <handa@m17n.org>
+
+       * nonascii.texi (Default Coding Systems): Document about the
+       return value `undecided'.
+
+2007-06-25  David Kastrup  <dak@gnu.org>
+
+       * keymaps.texi (Active Keymaps): Document new POSITION argument of
+       `current-active-maps'.
+
+2007-06-24  Karl Berry  <karl@gnu.org>
 
        * elisp.texi, vol1.texi, vol2.texi: New Back-Cover Text.
 
+2007-06-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * display.texi (Overlay Arrow): Doc fix.
+
 2007-06-14  Karl Berry  <karl@tug.org>
 
        * anti.texi (Antinews): Typo.
 
+2007-06-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * display.texi (Image Cache): Document image-refresh.
+
 2007-06-12  Karl Berry  <karl@gnu.org>
 
        * vol1.texi, vol2.texi, two-volume-cross-refs.txt: Update.
        * two-volume.make: New file.
        * .cvsignore: Ignore two-volume files.
 
+2007-06-12  Tom Tromey  <tromey@redhat.com>
+
+       * os.texi (Init File): Document user-emacs-directory.
+
+2007-06-03  Nick Roberts  <nickrob@snap.net.nz>
+
+       * commands.texi (Click Events): Describe width and height when
+       object is nil.
+
+2007-05-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * 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  <rms@gnu.org>
 
        * frames.texi (Color Parameters): Add xref to (emacs)Standard Faces.
 
        * modes.texi (Auto Major Mode): Document file-start-mode-alist.
 
+2007-05-10  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       * elisp.texi (Top): Remove "Saving Properties" from detailed menu.
+       * files.texi (Format Conversion): Expand intro; add menu.
+       (Format Conversion Overview, Format Conversion Round-Trip)
+       (Format Conversion Piecemeal): New nodes/subsections.
+       * hooks.texi: Xref "Format Conversion" , not "Saving Properties".
+       * text.texi (Text Properties): Remove "Saving Properties" from menu.
+       (Saving Properties): Delete node/subsection.
+
+2007-05-07  Karl Berry  <karl@gnu.org>
+
+       * elisp.texi (EMACSVER): Back to 22.
+
 2007-05-06  Richard Stallman  <rms@gnu.org>
 
        * processes.texi (Accepting Output): Revert most of previous change.
        * tips.texi (Documentation Tips): Rearrange items to place the
        more important ones first.  Add an index entry for hyperlinks.
 
-2007-05-03  Karl Berry  <karl@tug.org>
+2007-05-03  Karl Berry  <karl@gnu.org>
 
        * elisp.texi (\urlcolor, \linkcolor) [smallbook]: \Black for printing.
-        (EMACSVER) [smallbook]: 22 for printed version.
+       (EMACSVER) [smallbook]: 22 for printed version.
 
        * control.texi (Signaling Errors) <signal>: texinfo.tex is fixed,
        so restore anchor to normal position after defun.  Found by Kevin Ryde.
 
+2007-04-26  Glenn Morris  <rgm@gnu.org>
+
+       * elisp.texi (EMACSVER): Increase to 22.1.50.
+
 2007-04-28  Karl Berry  <karl@gnu.org>
 
        * elisp.texi: Improve line breaks on copyright page,
 
 2007-04-11  Karl Berry  <karl@gnu.org>
 
-       * anti.texi (Antinews),
-       * display.texi (Overlay Properties, Defining Images),
-       * processes.texi (Synchronous Processes, Sentinels),
-       * syntax.texi (Syntax Table Internals),
-       * searching.texi (Regexp Special),
-       * nonascii.texi (Default Coding Systems),
-       * text.texi (Special Properties),
+       * anti.texi (Antinews):
+       * display.texi (Overlay Properties, Defining Images):
+       * processes.texi (Synchronous Processes, Sentinels):
+       * syntax.texi (Syntax Table Internals):
+       * searching.texi (Regexp Special):
+       * nonascii.texi (Default Coding Systems):
+       * text.texi (Special Properties):
        * minibuf.texi (Basic Completion): Wording to improve breaks in
        8.5x11 format.
        * elisp.texi (smallbook): New @set to more easily switch between
 
 2007-04-01  Karl Berry  <karl@gnu.org>
 
-       * processes.texi (Low-Level Network): typo.
-       * loading.texi (Hooks for Loading): avoid double "the".
-       * keymaps.texi (Key Sequences): no double "and".
-       (Changing Key Bindings): shorten to improve line break.
+       * processes.texi (Low-Level Network): Typo.
+       * loading.texi (Hooks for Loading): Avoid double "the".
+       * keymaps.texi (Key Sequences): No double "and".
+       (Changing Key Bindings): Shorten to improve line break.
 
 2007-03-31  Glenn Morris  <rgm@gnu.org>
 
 
        * loading.texi (How Programs Do Loading): Fix anchor position at
        load-read-function definition doc. (tiny change)
-       
+
 2007-02-21  Kim F. Storm  <storm@cua.dk>
 
        * strings.texi (Text Comparison): Mention that assoc-string
similarity index 97%
rename from lispref/Makefile.in
rename to doc/lispref/Makefile.in
index 1a34d60a0d876bbbe23c863ee410bd31cf37b4fe..12dd1c866325b92d55cf4d8113af0bc95edfccfb 100644 (file)
@@ -26,8 +26,9 @@ srcdir = @srcdir@
 # Tell make where to find source files; this is needed for the makefiles.
 VPATH=@srcdir@
 
-infodir = ../info
-usermanualdir = $(srcdir)/../man
+infodir = ../../info
+usermanualdir = $(srcdir)/../emacs
+miscmanualdir = $(srcdir)/../misc
 
 TEXI2DVI = texi2dvi
 SHELL = /bin/sh
@@ -133,7 +134,7 @@ dist: $(infodir)/elisp elisp.dvi
        -mkdir temp/$(manual)
        -ln $(srcdir)/README $(srcdir)/configure.in $(srcdir)/configure \
  $(srcdir)/Makefile.in $(srcs) \
- $(srcdir)/../man/texinfo.tex \
+ $(miscmanualdir)/texinfo.tex \
  elisp.dvi elisp.aux elisp.??s \
  $(infodir)/elisp $(infodir)/elisp-[1-9] $(infodir)/elisp-[1-9][0-9] \
  temp/$(manual)
similarity index 100%
rename from lispref/README
rename to doc/lispref/README
similarity index 99%
rename from lispref/abbrevs.texi
rename to doc/lispref/abbrevs.texi
index 46e7c3739c441bab82e45b2593ba7b8076228437..a52ba2c6c86be06bcecd14d84dfb93b3b36ad086 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1999, 2001, 2002, 2003,
 @c   2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/abbrevs
+@setfilename ../../info/abbrevs
 @node Abbrevs, Processes, Syntax Tables, Top
 @chapter Abbrevs and Abbrev Expansion
 @cindex abbrev
similarity index 99%
rename from lispref/advice.texi
rename to doc/lispref/advice.texi
index 4d580f9846db851ec88ba865cbf593990f034438..7eb89d7bd4152f6be33c871f66fe197b3e479b23 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/advising
+@setfilename ../../info/advising
 @node Advising Functions, Debugging, Byte Compilation, Top
 @chapter Advising Emacs Lisp Functions
 @cindex advising functions
similarity index 100%
rename from lispref/anti.texi
rename to doc/lispref/anti.texi
similarity index 100%
rename from lispref/back.texi
rename to doc/lispref/back.texi
similarity index 99%
rename from lispref/backups.texi
rename to doc/lispref/backups.texi
index 44795557f15ccb8e866a84d891379f2a86cab477..7268d01e9eeab4f12574c4a914bce0dcdaa592a7 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2001, 2002, 2003,
 @c   2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/backups
+@setfilename ../../info/backups
 @node Backups and Auto-Saving, Buffers, Files, Top
 @chapter Backups and Auto-Saving
 @cindex backups and auto-saving
similarity index 99%
rename from lispref/buffers.texi
rename to doc/lispref/buffers.texi
index e9cafb69fb55f270c2efdf601ab87a8bbd1b2ada..2d7faccf241c508b681a4e2da9f89673b052646a 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
 @c   2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/buffers
+@setfilename ../../info/buffers
 @node Buffers, Windows, Backups and Auto-Saving, Top
 @chapter Buffers
 @cindex buffer
similarity index 99%
rename from lispref/commands.texi
rename to doc/lispref/commands.texi
index f54edba9175c13c9bd7e275334df077f4e2f186e..cdd627f6b52127188f10bc01e8a0d4a2b841ee5a 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
 @c   2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/commands
+@setfilename ../../info/commands
 @node Command Loop, Keymaps, Minibuffers, Top
 @chapter Command Loop
 @cindex editor command loop
@@ -1222,12 +1222,7 @@ describe events by their types; thus, if there is a key binding for
 @item @var{position}
 This is the position where the mouse click occurred.  The actual
 format of @var{position} depends on what part of a window was clicked
-on.  The various formats are described below.
-
-@item @var{click-count}
-This is the number of rapid repeated presses so far of the same mouse
-button.  @xref{Repeat Events}.
-@end table
+on.
 
 For mouse click events in the text area, mode line, header line, or in
 the marginal areas, @var{position} has this form:
@@ -1249,8 +1244,14 @@ which the click occurred.  It is one of the symbols @code{mode-line},
 @code{header-line}, @code{vertical-line}, @code{left-margin},
 @code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
 
+In one special case, @var{pos-or-area} is a list containing a symbol (one
+of the symbols listed above) instead of just the symbol.  This happens
+after the imaginary prefix keys for the event are inserted into the
+input stream.  @xref{Key Sequence Input}.
+
+
 @item @var{x}, @var{y}
-These are the pixel-denominated coordinates of the click, relative to
+These are the pixel coordinates of the click, relative to
 the top left corner of @var{window}, which is @code{(0 . 0)}.
 For the mode or header line, @var{y} does not have meaningful data.
 For the vertical line, @var{x} does not have meaningful data.
@@ -1264,6 +1265,7 @@ This is the object on which the click occurred.  It is either
 (@var{string} . @var{string-pos}) when there is a string-type text
 property at the click position.
 
+@table @asis
 @item @var{string}
 This is the string on which the click occurred, including any
 properties.
@@ -1271,6 +1273,7 @@ properties.
 @item @var{string-pos}
 This is the position in the string on which the click occurred,
 relevant if properties at the click need to be looked up.
+@end table
 
 @item @var{text-pos}
 For clicks on a marginal area or on a fringe, this is the buffer
@@ -1289,12 +1292,17 @@ This is the image object on which the click occurred.  It is either
 an image object as returned by @code{find-image} if click was in an image.
 
 @item @var{dx}, @var{dy}
-These are the pixel-denominated coordinates of the click, relative to
+These are the pixel coordinates of the click, relative to
 the top left corner of @var{object}, which is @code{(0 . 0)}.  If
 @var{object} is @code{nil}, the coordinates are relative to the top
 left corner of the character glyph clicked on.
-@end table
 
+@item @var{width}, @var{height}
+These are the pixel width and height of @var{object} or, if this is
+@code{nil}, those of the character glyph clicked on.
+@end table
+@sp 1
 For mouse clicks on a scroll-bar, @var{position} has this form:
 
 @example
@@ -1325,10 +1333,10 @@ of the symbols @code{above-handle}, @code{handle}, @code{below-handle},
 @code{up}, @code{down}, @code{top}, @code{bottom}, and @code{end-scroll}.
 @end table
 
-In one special case, @var{buffer-pos} is a list containing a symbol (one
-of the symbols listed above) instead of just the symbol.  This happens
-after the imaginary prefix keys for the event are inserted into the
-input stream.  @xref{Key Sequence Input}.
+@item @var{click-count}
+This is the number of rapid repeated presses so far of the same mouse
+button.  @xref{Repeat Events}.
+@end table
 
 @node Drag Events
 @subsection Drag Events
@@ -1344,19 +1352,18 @@ position and the final position, like this:
 
 @example
 (@var{event-type}
- (@var{window1} @var{buffer-pos1} (@var{x1} . @var{y1}) @var{timestamp1})
- (@var{window2} @var{buffer-pos2} (@var{x2} . @var{y2}) @var{timestamp2})
- @var{click-count})
+ (@var{window1} START-POSITION)
+ (@var{window2} END-POSITION))
 @end example
 
 For a drag event, the name of the symbol @var{event-type} contains the
-prefix @samp{drag-}.  For example, dragging the mouse with button 2 held
-down generates a @code{drag-mouse-2} event.  The second and third
-elements of the event give the starting and ending position of the drag.
-Aside from that, the data have the same meanings as in a click event
-(@pxref{Click Events}).  You can access the second element of any mouse
-event in the same way, with no need to distinguish drag events from
-others.
+prefix @samp{drag-}.  For example, dragging the mouse with button 2
+held down generates a @code{drag-mouse-2} event.  The second and third
+elements of the event give the starting and ending position of the
+drag.  They have the same form as @var{position} in a click event
+(@pxref{Click Events}) that is not on the scroll bar part of the
+window.  You can access the second element of any mouse event in the
+same way, with no need to distinguish drag events from others.
 
 The @samp{drag-} prefix follows the modifier key prefixes such as
 @samp{C-} and @samp{M-}.
@@ -1496,7 +1503,7 @@ of the mouse without any button activity.  Mouse motion events are
 represented by lists that look like this:
 
 @example
-(mouse-movement (@var{window} @var{buffer-pos} (@var{x} . @var{y}) @var{timestamp}))
+(mouse-movement (POSITION))
 @end example
 
 The second element of the list describes the current position of the
similarity index 99%
rename from lispref/compile.texi
rename to doc/lispref/compile.texi
index 8f5c047fd6bbd658d42c769420e8e2fb2f89317b..aeaa9f79eb82b00e9721a893d1ee87b79713ef17 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/compile
+@setfilename ../../info/compile
 @node Byte Compilation, Advising Functions, Loading, Top
 @chapter Byte Compilation
 @cindex byte compilation
similarity index 100%
rename from lispref/configure
rename to doc/lispref/configure
similarity index 97%
rename from lispref/control.texi
rename to doc/lispref/control.texi
index 4c469a10368b524450d0b5dd15046a119acc48d2..db88a74487d4638288ab0844889eeb0bc62e692c 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
 @c   2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/control
+@setfilename ../../info/control
 @node Control Structures, Variables, Evaluation, Top
 @chapter Control Structures
 @cindex special forms for control structures
@@ -893,6 +893,12 @@ establishing an error handler, with the special form
 This deletes the file named @var{filename}, catching any error and
 returning @code{nil} if an error occurs.
 
+  The @code{condition-case} construct is often used to trap errors that
+are predictable, such as failure to open a file in a call to
+@code{insert-file-contents}.  It is also used to trap errors that are
+totally unpredictable, such as when the program evaluates an expression
+read from the user.
+
   The second argument of @code{condition-case} is called the
 @dfn{protected form}.  (In the example above, the protected form is a
 call to @code{delete-file}.)  The error handlers go into effect when
@@ -920,15 +926,33 @@ the two gets to handle it.
   If an error is handled by some @code{condition-case} form, this
 ordinarily prevents the debugger from being run, even if
 @code{debug-on-error} says this error should invoke the debugger.
-@xref{Error Debugging}.  If you want to be able to debug errors that are
-caught by a @code{condition-case}, set the variable
-@code{debug-on-signal} to a non-@code{nil} value.
 
-  When an error is handled, control returns to the handler.  Before this
-happens, Emacs unbinds all variable bindings made by binding constructs
-that are being exited and executes the cleanups of all
-@code{unwind-protect} forms that are exited.  Once control arrives at
-the handler, the body of the handler is executed.
+  If you want to be able to debug errors that are caught by a
+@code{condition-case}, set the variable @code{debug-on-signal} to a
+non-@code{nil} value.  You can also specify that a particular handler
+should let the debugger run first, by writing @code{debug} among the
+conditions, like this:
+
+@example
+@group
+(condition-case nil
+    (delete-file filename)
+  ((debug error) nil))
+@end group
+@end example
+
+@noindent
+The effect of @code{debug} here is only to prevent
+@code{condition-case} from suppressing the call to the debugger.  Any
+given error will invoke the debugger only if @code{debug-on-error} and
+the other usual filtering mechanisms say it should.  @xref{Error Debugging}.
+
+  Once Emacs decides that a certain handler handles the error, it
+returns control to that handler.  To do so, Emacs unbinds all variable
+bindings made by binding constructs that are being exited, and
+executes the cleanups of all @code{unwind-protect} forms that are
+being exited.  Once control arrives at the handler, the body of the
+handler executes normally.
 
   After execution of the handler body, execution returns from the
 @code{condition-case} form.  Because the protected form is exited
@@ -937,12 +961,6 @@ execution at the point of the error, nor can it examine variable
 bindings that were made within the protected form.  All it can do is
 clean up and proceed.
 
-  The @code{condition-case} construct is often used to trap errors that
-are predictable, such as failure to open a file in a call to
-@code{insert-file-contents}.  It is also used to trap errors that are
-totally unpredictable, such as when the program evaluates an expression
-read from the user.
-
   Error signaling and handling have some resemblance to @code{throw} and
 @code{catch} (@pxref{Catch and Throw}), but they are entirely separate
 facilities.  An error cannot be caught by a @code{catch}, and a
@@ -960,7 +978,8 @@ error occurs during @var{protected-form}.
 
 Each of the @var{handlers} is a list of the form @code{(@var{conditions}
 @var{body}@dots{})}.  Here @var{conditions} is an error condition name
-to be handled, or a list of condition names; @var{body} is one or more
+to be handled, or a list of condition names (which can include @code{debug}
+to allow the debugger to run before the handler); @var{body} is one or more
 Lisp expressions to be executed when this handler handles an error.
 Here are examples of handlers:
 
similarity index 99%
rename from lispref/customize.texi
rename to doc/lispref/customize.texi
index 8b1b1a9b91f9615d2a92884ef704f0dbbe73ba3f..c375706e6f9b2fa87fd09e88749fa558fc5c4aa9 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/customize
+@setfilename ../../info/customize
 @node Customization, Loading, Macros, Top
 @chapter Writing Customization Definitions
 
similarity index 99%
rename from lispref/debugging.texi
rename to doc/lispref/debugging.texi
index a427e746b271e8f9d21910efd6e8e9e0f9e81d8b..4c4cb92914d93d7d99f4938b85078905568249ee 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2001, 2002, 2003,
 @c   2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/debugging
+@setfilename ../../info/debugging
 @node Debugging, Read and Print, Advising Functions, Top
 @chapter Debugging Lisp Programs
 
similarity index 99%
rename from lispref/display.texi
rename to doc/lispref/display.texi
index 58b2ef11e72578209d78965131780f61a7b4396e..4c9df9c5ede6ad9804848d4b82a06d1b80188a66 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/display
+@setfilename ../../info/display
 @node Display, System Interface, Processes, Top
 @chapter Emacs Display
 
@@ -1291,6 +1291,11 @@ while moving an overlay or changing its properties does not.  Unlike
 text property changes, overlay property changes are not recorded in
 the buffer's undo list.
 
+  Since more than one overlay can specify a property value for the
+same character, Emacs lets you specify a priority value of each
+overlay.  You should not make assumptions about which overlay will
+prevail when there is a conflict and they have the same priority.
+
   These functions read and set the properties of an overlay:
 
 @defun overlay-get overlay prop
@@ -1321,13 +1326,16 @@ of them:
 @item priority
 @kindex priority @r{(overlay property)}
 This property's value (which should be a nonnegative integer number)
-determines the priority of the overlay.  The priority matters when two
-or more overlays cover the same character and both specify the same
-property; the one whose @code{priority} value is larger takes priority
-over the other.  For the @code{face} property, the higher priority
-value does not completely replace the other; instead, its face
-attributes override the face attributes of the lower priority
-@code{face} property.
+determines the priority of the overlay.  No priority, or @code{nil},
+means zero.
+
+The priority matters when two or more overlays cover the same
+character and both specify the same property; the one whose
+@code{priority} value is larger overrides the other.  For the
+@code{face} property, the higher priority overlay's value does not
+completely override the other value; instead, its face attributes
+override the face attributes of the lower priority @code{face}
+property.
 
 Currently, all overlays take priority over text properties.  Please
 avoid using negative priority values, as we have not yet decided just
@@ -3108,7 +3116,7 @@ overwritten.
 
 The overlay-arrow string is displayed in any given buffer if the value
 of @code{overlay-arrow-position} in that buffer points into that
-buffer.  Thus, it works to can display multiple overlay arrow strings
+buffer.  Thus, it is possible to display multiple overlay arrow strings
 by creating buffer-local bindings of @code{overlay-arrow-position}.
 However, it is usually cleaner to use
 @code{overlay-arrow-variable-list} to achieve this result.
@@ -3626,6 +3634,24 @@ Emacs is compiled without image support.  You can use the function
 @code{display-images-p} to determine if images can in principle be
 displayed (@pxref{Display Feature Testing}).
 
+@menu
+* Image Formats::       Supported image formats.
+* Image Descriptors::   How to specify an image for use in @code{:display}.
+* XBM Images::          Special features for XBM format.
+* XPM Images::          Special features for XPM format.
+* GIF Images::          Special features for GIF format.
+* PostScript Images::   Special features for PostScript format.
+* Other Image Types::   Various other formats are supported.
+* Defining Images::     Convenient ways to define an image for later use.
+* Showing Images::      Convenient ways to display an image once it is defined.
+* Image Cache::         Internal mechanisms of image display.
+@end menu
+
+@node Image Formats
+@subsection Image Formats
+@cindex image formats
+@cindex image types
+
   Emacs can display a number of different image formats; some of them
 are supported only if particular support libraries are installed on
 your machine.  In some environments, Emacs can load image
@@ -3637,11 +3663,12 @@ libraries (though it is not possible to add new image formats).
 libraries @code{libXpm} version 3.4k and @code{libz}), GIF (requiring
 @code{libungif} 4.1.0), PostScript, PBM, JPEG (requiring the
 @code{libjpeg} library version v6a), TIFF (requiring @code{libtiff}
-v3.4), and PNG (requiring @code{libpng} 1.0.2).
+v3.4), PNG (requiring @code{libpng} 1.0.2), and SVG (requiring
+@code{librsvg} 2.0.0).
 
   You specify one of these formats with an image type symbol.  The image
 type symbols are @code{xbm}, @code{xpm}, @code{gif}, @code{postscript},
-@code{pbm}, @code{jpeg}, @code{tiff}, and @code{png}.
+@code{pbm}, @code{jpeg}, @code{tiff}, @code{png}, and @code{svg}.
 
 @defvar image-types
 This variable contains a list of those image type symbols that are
@@ -3683,18 +3710,6 @@ function always returns @code{t}; for other image types, it returns
 @code{t} if the dynamic library could be loaded, @code{nil} otherwise.
 @end defun
 
-@menu
-* Image Descriptors::   How to specify an image for use in @code{:display}.
-* XBM Images::          Special features for XBM format.
-* XPM Images::          Special features for XPM format.
-* GIF Images::          Special features for GIF format.
-* PostScript Images::   Special features for PostScript format.
-* Other Image Types::   Various other formats are supported.
-* Defining Images::     Convenient ways to define an image for later use.
-* Showing Images::      Convenient ways to display an image once it is defined.
-* Image Cache::         Internal mechanisms of image display.
-@end menu
-
 @node Image Descriptors
 @subsection Image Descriptors
 @cindex image descriptor
@@ -4069,6 +4084,8 @@ background color.
 
   For PNG images, specify image type @code{png}.
 
+  For SVG images, specify image type @code{svg}.
+
 @node Defining Images
 @subsection Defining Images
 
similarity index 100%
rename from lispref/edebug.texi
rename to doc/lispref/edebug.texi
similarity index 99%
rename from lispref/elisp.texi
rename to doc/lispref/elisp.texi
index 047b18e0a45254cd3c174560ce7e52b556d61abc..8cd25ed59d33dab4b89ce32b2b7d167765315b3d 100644 (file)
@@ -7,12 +7,7 @@
 @c Version of the manual and of Emacs.
 @c Please remember to update the edition number in README as well.
 @set VERSION  2.9
-@set EMACSVER 22.1.50
-
-@dircategory Emacs
-@direntry
-* Elisp: (elisp).       The Emacs Lisp Reference Manual.
-@end direntry
+@set EMACSVER 23.0.50
 
 @c in general, keep the following line commented out, unless doing a
 @c copy of this manual that will be published.  The manual should go
@@ -67,6 +62,11 @@ developing GNU and promoting software freedom.''
 @end quotation
 @end copying
 
+@dircategory Emacs
+@direntry
+* Elisp: (elisp).       The Emacs Lisp Reference Manual.
+@end direntry
+
 @titlepage
 @title GNU Emacs Lisp Reference Manual
 @subtitle For Emacs Version @value{EMACSVER}
@@ -1065,8 +1065,6 @@ Text Properties
 * Format Properties::       Properties for representing formatting of text.
 * Sticky Properties::       How inserted text gets properties from
                               neighboring text.
-* Saving Properties::       Saving text properties in files, and reading
-                              them back.
 * Lazy Properties::         Computing text properties in a lazy fashion
                               only when text is examined.
 * Clickable Text::          Using text properties to make regions of text
similarity index 99%
rename from lispref/errors.texi
rename to doc/lispref/errors.texi
index af2df791c3947686934eb7b85fba2f2abb9a03f9..0be31ce3846b291c163faeac9ee8af9aa373e6e1 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/errors
+@setfilename ../../info/errors
 @node Standard Errors, Standard Buffer-Local Variables, GNU Emacs Internals, Top
 @appendix Standard Errors
 @cindex standard errors
similarity index 99%
rename from lispref/eval.texi
rename to doc/lispref/eval.texi
index 772f502553cda4bc1ef8941b77c96d466d0181ee..f4d164ec3a24cb96bcdc9fa60abf17f6394e467e 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 2001, 2002, 2003,
 @c   2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/eval
+@setfilename ../../info/eval
 @node Evaluation, Control Structures, Symbols, Top
 @chapter Evaluation
 @cindex evaluation
similarity index 93%
rename from lispref/files.texi
rename to doc/lispref/files.texi
index 0353d4464b50dd0c2db6966a253038db835f061e..419f109e0a8f6ef3f86e885d33ddffc0484a3943 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/files
+@setfilename ../../info/files
 @node Files, Backups and Auto-Saving, Documentation, Top
 @comment  node-name,  next,  previous,  up
 @chapter Files
@@ -374,8 +374,7 @@ buffer name instead.
 @end deffn
 
   Saving a buffer runs several hooks.  It also performs format
-conversion (@pxref{Format Conversion}), and may save text properties in
-``annotations'' (@pxref{Saving Properties}).
+conversion (@pxref{Format Conversion}).
 
 @defvar write-file-functions
 The value of this variable is a list of functions to be called before
@@ -496,9 +495,9 @@ and the length of the data inserted.  An error is signaled if
 
 The function @code{insert-file-contents} checks the file contents
 against the defined file formats, and converts the file contents if
-appropriate.  @xref{Format Conversion}.  It also calls the functions in
-the list @code{after-insert-file-functions}; see @ref{Saving
-Properties}.  Normally, one of the functions in the
+appropriate and also calls the functions in
+the list @code{after-insert-file-functions}.  @xref{Format Conversion}.
+Normally, one of the functions in the
 @code{after-insert-file-functions} list determines the coding system
 (@pxref{Coding Systems}) used for decoding the file's contents,
 including end-of-line conversion.
@@ -620,9 +619,10 @@ file name to use for purposes of locking and unlocking, overriding
 @var{filename} and @var{visit} for that purpose.
 
 The function @code{write-region} converts the data which it writes to
-the appropriate file formats specified by @code{buffer-file-format}.
-@xref{Format Conversion}.  It also calls the functions in the list
-@code{write-region-annotate-functions}; see @ref{Saving Properties}.
+the appropriate file formats specified by @code{buffer-file-format}
+and also calls the functions in the list
+@code{write-region-annotate-functions}.
+@xref{Format Conversion}.
 
 Normally, @code{write-region} displays the message @samp{Wrote
 @var{filename}} in the echo area.  If @var{visit} is neither @code{t}
@@ -2587,7 +2587,6 @@ first, before handlers for jobs such as remote file access.
 @code{directory-file-name},
 @code{directory-files},
 @code{directory-files-and-attributes},
-@code{dired-call-process},
 @code{dired-compress-file}, @code{dired-uncache},@*
 @code{expand-file-name},
 @code{file-accessible-directory-p},
@@ -2614,8 +2613,10 @@ first, before handlers for jobs such as remote file access.
 @code{make-directory},
 @code{make-directory-internal},
 @code{make-symbolic-link},@*
+@code{process-file},
 @code{rename-file}, @code{set-file-modes}, @code{set-file-times},
 @code{set-visited-file-modtime}, @code{shell-command},
+@code{start-file-process},
 @code{substitute-in-file-name},@*
 @code{unhandled-file-name-directory},
 @code{vc-registered},
@@ -2633,7 +2634,6 @@ first, before handlers for jobs such as remote file access.
 @code{directory-file-name},
 @code{directory-files},
 @code{directory-files-and-at@discretionary{}{}{}tributes},
-@code{dired-call-process},
 @code{dired-compress-file}, @code{dired-uncache},
 @code{expand-file-name},
 @code{file-accessible-direc@discretionary{}{}{}tory-p},
@@ -2658,8 +2658,10 @@ first, before handlers for jobs such as remote file access.
 @code{load}, @code{make-direc@discretionary{}{}{}tory},
 @code{make-direc@discretionary{}{}{}tory-internal},
 @code{make-symbolic-link},
+@code{process-file},
 @code{rename-file}, @code{set-file-modes},
 @code{set-visited-file-modtime}, @code{shell-command},
+@code{start-file-process},
 @code{substitute-in-file-name},
 @code{unhandled-file-name-directory},
 @code{vc-regis@discretionary{}{}{}tered},
@@ -2766,7 +2768,7 @@ nothing and returns @code{nil}.  Otherwise it returns the file name
 of the local copy file.
 @end defun
 
-@defun file-remote-p filename
+@defun file-remote-p filename &optional identification connected
 This function tests whether @var{filename} is a remote file.  If
 @var{filename} is local (not remote), the return value is @code{nil}.
 If @var{filename} is indeed remote, the return value is a string that
@@ -2775,7 +2777,7 @@ identifies the remote system.
 This identifier string can include a host name and a user name, as
 well as characters designating the method used to access the remote
 system.  For example, the remote identifier string for the filename
-@code{/ssh:user@@host:/some/file} is @code{/ssh:user@@host:}.
+@code{/sudo::/some/file} is @code{/sudo:root@@localhost:}.
 
 If @code{file-remote-p} returns the same identifier for two different
 filenames, that means they are stored on the same file system and can
@@ -2783,6 +2785,18 @@ be accessed locally with respect to each other.  This means, for
 example, that it is possible to start a remote process accessing both
 files at the same time.  Implementors of file handlers need to ensure
 this principle is valid.
+
+@var{identification} specifies which part of the identifier shall be
+returned as string.  @var{identification} can be the symbol
+@code{method}, @code{user} or @code{host}; any other value is handled
+like @code{nil} and means to return the complete identifier string.
+In the example above, the remote @code{user} identifier string would
+be @code{root}.
+
+If @var{connected} is non-@code{nil}, this function returns @code{nil}
+even if @var{filename} is remote, if Emacs has no network connection
+to its host.  This is useful when you want to avoid the delay of
+making connections when they don't exist.
 @end defun
 
 @defun unhandled-file-name-directory filename
@@ -2802,23 +2816,70 @@ is a good way to come up with one.
 @cindex file format conversion
 @cindex encoding file formats
 @cindex decoding file formats
-  The variable @code{format-alist} defines a list of @dfn{file formats},
-which describe textual representations used in files for the data (text,
-text-properties, and possibly other information) in an Emacs buffer.
-Emacs performs format conversion if appropriate when reading and writing
-files.
+@cindex text properties in files
+@cindex saving text properties
+  Emacs performs several steps to convert the data in a buffer (text,
+text properties, and possibly other information) to and from a
+representation suitable for storing into a file.  This section describes
+the fundamental functions that perform this @dfn{format conversion},
+namely @code{insert-file-contents} for reading a file into a buffer,
+and @code{write-region} for writing a buffer into a file.
+
+@menu
+* Overview: Format Conversion Overview.     @code{insert-file-contents} and @code{write-region}
+* Round-Trip: Format Conversion Round-Trip. Using @code{format-alist}.
+* Piecemeal: Format Conversion Piecemeal.   Specifying non-paired conversion.
+@end menu
+
+@node Format Conversion Overview
+@subsection Overview
+@noindent
+The function @code{insert-file-contents}:
+
+@itemize
+@item initially, inserts bytes from the file into the buffer;
+@item decodes bytes to characters as appropriate;
+@item processes formats as defined by entries in @code{format-alist}; and
+@item calls functions in @code{after-insert-file-functions}.
+@end itemize
+
+@noindent
+The function @code{write-region}:
+
+@itemize
+@item initially, calls functions in @code{write-region-annotate-functions};
+@item processes formats as defined by entries in @code{format-alist};
+@item encodes characters to bytes as appropriate; and
+@item modifies the file with the bytes.
+@end itemize
+
+  This shows the symmetry of the lowest-level operations; reading and
+writing handle things in opposite order.  The rest of this section
+describes the two facilities surrounding the three variables named
+above, as well as some related functions.  @ref{Coding Systems}, for
+details on character encoding and decoding.
+
+@node Format Conversion Round-Trip
+@subsection Round-Trip Specification
+
+  The most general of the two facilities is controlled by the variable
+@code{format-alist}, a list of @dfn{file format} specifications, which
+describe textual representations used in files for the data in an Emacs
+buffer.  The descriptions for reading and writing are paired, which is
+why we call this ``round-trip'' specification
+(@pxref{Format Conversion Piecemeal}, for non-paired specification).
 
 @defvar format-alist
 This list contains one format definition for each defined file format.
-@end defvar
-
-@cindex format definition
 Each format definition is a list of this form:
 
 @example
 (@var{name} @var{doc-string} @var{regexp} @var{from-fn} @var{to-fn} @var{modify} @var{mode-fn})
 @end example
+@end defvar
 
+@cindex format definition
+@noindent
 Here is what the elements in a format definition mean:
 
 @table @var
@@ -2957,6 +3018,91 @@ regular save in the same buffer.  This variable is always buffer-local
 in all buffers.
 @end defvar
 
+@node Format Conversion Piecemeal
+@subsection Piecemeal Specification
+
+  In contrast to the round-trip specification described in the previous
+subsection (@pxref{Format Conversion Round-Trip}), you can use the variables
+@code{after-insert-file-functions} and @code{write-region-annotate-functions}
+to separately control the respective reading and writing conversions.
+
+  Conversion starts with one representation and produces another
+representation.  When there is only one conversion to do, there is no
+conflict about what to start with.  However, when there are multiple
+conversions involved, conflict may arise when two conversions need to
+start with the same data.
+
+  This situation is best understood in the context of converting text
+properties during @code{write-region}.  For example, the character at
+position 42 in a buffer is @samp{X} with a text property @code{foo}.  If
+the conversion for @code{foo} is done by inserting into the buffer, say,
+@samp{FOO:}, then that changes the character at position 42 from
+@samp{X} to @samp{F}.  The next conversion will start with the wrong
+data straight away.
+
+  To avoid conflict, cooperative conversions do not modify the buffer,
+but instead specify @dfn{annotations}, a list of elements of the form
+@code{(@var{position} . @var{string})}, sorted in order of increasing
+@var{position}.
+
+  If there is more than one conversion, @code{write-region} merges their
+annotations destructively into one sorted list.  Later, when the text
+from the buffer is actually written to the file, it intermixes the
+specified annotations at the corresponding positions.  All this takes
+place without modifying the buffer.
+
+@c ??? What about ``overriding'' conversions like those allowed
+@c ??? for `write-region-annotate-functions', below?  --ttn
+
+  In contrast, when reading, the annotations intermixed with the text
+are handled immediately.  @code{insert-file-contents} sets point to the
+beginning of some text to be converted, then calls the conversion
+functions with the length of that text.  These functions should always
+return with point at the beginning of the inserted text.  This approach
+makes sense for reading because annotations removed by the first
+converter can't be mistakenly processed by a later converter.
+
+  Each conversion function should scan for the annotations it
+recognizes, remove the annotation, modify the buffer text (to set a text
+property, for example), and return the updated length of the text, as it
+stands after those changes.  The value returned by one function becomes
+the argument to the next function.
+
+@defvar write-region-annotate-functions
+A list of functions for @code{write-region} to call.  Each function in
+the list is called with two arguments: the start and end of the region
+to be written.  These functions should not alter the contents of the
+buffer.  Instead, they should return annotations.
+
+@c ??? Following adapted from comment in `build_annotations' (fileio.c).
+@c ??? Perhaps this is intended for internal use only?
+@c ??? Someone who understands this, please reword it. --ttn
+As a special case, if a function returns with a different buffer
+current, Emacs takes it to mean the current buffer contains altered text
+to be output, and discards all previous annotations because they should
+have been dealt with by this function.
+@end defvar
+
+@defvar after-insert-file-functions
+Each function in this list is called by @code{insert-file-contents}
+with one argument, the number of characters inserted, and with point
+at the beginning of the inserted text.  Each function should leave
+point unchanged, and return the new character count describing the
+inserted text as modified by the function.
+@c ??? The docstring mentions a handler from `file-name-handler-alist'
+@c     "intercepting" `insert-file-contents'.  Hmmm.  --ttn
+@end defvar
+
+  We invite users to write Lisp programs to store and retrieve text
+properties in files, using these hooks, and thus to experiment with
+various data formats and find good ones.  Eventually we hope users
+will produce good, general extensions we can install in Emacs.
+
+  We suggest not trying to handle arbitrary Lisp objects as text property
+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
similarity index 99%
rename from lispref/frames.texi
rename to doc/lispref/frames.texi
index 496ca3c00dee29e7eec024b0952f749b863d8912..ee07302d76b7a43cc117dd79a253efd2f8258da2 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/frames
+@setfilename ../../info/frames
 @node Frames, Positions, Windows, Top
 @chapter Frames
 @cindex frame
@@ -378,6 +378,14 @@ you don't specify a name, Emacs sets the frame name automatically
 If you specify the frame name explicitly when you create the frame, the
 name is also used (instead of the name of the Emacs executable) when
 looking up X resources for the frame.
+
+@item display-environment-variable
+The value of the @code{DISPLAY} environment variable for the frame. It
+is passed to child processes.
+
+@item term-environment-variable
+The value of the @code{TERM} environment variable for the frame. It
+is passed to child processes.
 @end table
 
 @node Position Parameters
similarity index 99%
rename from lispref/functions.texi
rename to doc/lispref/functions.texi
index eedfa8c124f9f97b5112955067f4d3ee754192c3..111edb7afc05d42a5d18788ad0222769e954f4ef 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/functions
+@setfilename ../../info/functions
 @node Functions, Macros, Variables, Top
 @chapter Functions
 
similarity index 99%
rename from lispref/gpl.texi
rename to doc/lispref/gpl.texi
index e9f7218ede987b5a4dbf58bf234be00847cfe590..163af4627bbab8fa1ada4e3dfe615f8a84f9fb8f 100644 (file)
@@ -1,5 +1,5 @@
 @c -*-texinfo-*-
-@setfilename ../info/gpl
+@setfilename ../../info/gpl
 
 @node GPL, Tips, GNU Free Documentation License, Top
 @comment  node-name,  next,  previous,  up
similarity index 99%
rename from lispref/hash.texi
rename to doc/lispref/hash.texi
index c5b68e26d9121a953939810edfc703b6236a25a4..3f0297e28ca8a1b16c3c68b047b8a9b17de4afb1 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005,
 @c   2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/hash
+@setfilename ../../info/hash
 @node Hash Tables, Symbols, Sequences Arrays Vectors, Top
 @chapter Hash Tables
 @cindex hash tables
similarity index 99%
rename from lispref/help.texi
rename to doc/lispref/help.texi
index dd56aa872b7a267558897088ecd158a1ff9becc0..64b6a6ecfa2f212a06b912b67d0e859e87e92388 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/help
+@setfilename ../../info/help
 @node Documentation, Files, Modes, Top
 @chapter Documentation
 @cindex documentation strings
similarity index 98%
rename from lispref/hooks.texi
rename to doc/lispref/hooks.texi
index 019777f5eed50adbd6f789668a33a0964e58bdb5..d0bb2de8675f0404b19062aafe627290c13949bc 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1998, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/hooks
+@setfilename ../../info/hooks
 @node Standard Hooks, Index, Standard Keymaps, Top
 @appendix Standard Hooks
 @cindex standard hooks
@@ -48,7 +48,7 @@ or their values are used). The variables whose names end in
 @xref{Init File}.
 
 @item after-insert-file-functions
-@xref{Saving Properties}.
+@xref{Format Conversion}.
 
 @item after-make-frame-functions
 @xref{Creating Frames}.
@@ -330,7 +330,7 @@ Manual}.
 @xref{Saving Buffers}.
 
 @item write-region-annotate-functions
-@xref{Saving Properties}.
+@xref{Format Conversion}.
 @end table
 
 @ignore
similarity index 96%
rename from lispref/index.texi
rename to doc/lispref/index.texi
index cfa8f25e1268e3d8bc9c93a1e72beab6cffae537..6cdadf94491393cfee7098b22318704d4ae7f7d3 100644 (file)
@@ -1,5 +1,5 @@
 @c -*-texinfo-*-
-@setfilename ../info/index
+@setfilename ../../info/index
 
 @c Indexing guidelines
 
similarity index 99%
rename from lispref/internals.texi
rename to doc/lispref/internals.texi
index 3cd42ed69ffd1ddc26706dcbb847278f51c2bc5f..d0b03fb53058a85eee01d3d199cf16032aa4691d 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1998, 1999, 2001, 2002, 2003,
 @c   2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/internals
+@setfilename ../../info/internals
 @node GNU Emacs Internals, Standard Errors, Tips, Top
 @comment  node-name,  next,  previous,  up
 @appendix GNU Emacs Internals
similarity index 99%
rename from lispref/intro.texi
rename to doc/lispref/intro.texi
index ed0fd1c0699f6cae2ecce02d810a3c8e4edb371d..c759fba03f972430315f7893f077bfc7ea70bf39 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/intro
+@setfilename ../../info/intro
 
 @node Introduction, Lisp Data Types, Top, Top
 @comment  node-name,  next,  previous,  up
similarity index 98%
rename from lispref/keymaps.texi
rename to doc/lispref/keymaps.texi
index 400a2c3824077ef7d318aac898a5d39e19daaf86..2bd0de60f588bc250183a1fc9c0133c533c3a7f3 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2000, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/keymaps
+@setfilename ../../info/keymaps
 @node Keymaps, Modes, Command Loop, Top
 @chapter Keymaps
 @cindex keymap
@@ -655,12 +655,15 @@ events within @code{read-key-sequence}.  @xref{Translation Keymaps}.
 
   @xref{Standard Keymaps}, for a list of standard keymaps.
 
-@defun current-active-maps &optional olp
+@defun current-active-maps &optional olp position
 This returns the list of active keymaps that would be used by the
 command loop in the current circumstances to look up a key sequence.
 Normally it ignores @code{overriding-local-map} and
-@code{overriding-terminal-local-map}, but if @var{olp} is
-non-@code{nil} then it pays attention to them.
+@code{overriding-terminal-local-map}, but if @var{olp} is non-@code{nil}
+then it pays attention to them.  @var{position} can optionally be either
+an event position as returned by @code{event-start} or a buffer
+position, and may change the keymaps as described for
+@code{key-binding}.
 @end defun
 
 @defun key-binding key &optional accept-defaults no-remap position
@@ -1509,17 +1512,18 @@ specifies a list of keymaps to search in.  This argument is ignored if
   This section describes keymaps that are used during reading a key
 sequence, to translate certain event sequences into others.
 @code{read-key-sequence} checks every subsequence of the key sequence
-being read, as it is read, against @code{function-key-map} and then
-against @code{key-translation-map}.
+being read, as it is read, against @code{input-decode-map}, then
+@code{function-key-map}, and then against @code{key-translation-map}.
+
+@defvar input-decode-map
 
-@defvar function-key-map
 This variable holds a keymap that describes the character sequences sent
 by function keys on an ordinary character terminal.  This keymap has the
 same structure as other keymaps, but is used differently: it specifies
 translations to make while reading key sequences, rather than bindings
 for key sequences.
 
-If @code{function-key-map} ``binds'' a key sequence @var{k} to a vector
+If @code{input-decode-map} ``binds'' a key sequence @var{k} to a vector
 @var{v}, then when @var{k} appears as a subsequence @emph{anywhere} in a
 key sequence, it is replaced with the events in @var{v}.
 
@@ -1527,50 +1531,49 @@ For example, VT100 terminals send @kbd{@key{ESC} O P} when the
 keypad @key{PF1} key is pressed.  Therefore, we want Emacs to translate
 that sequence of events into the single event @code{pf1}.  We accomplish
 this by ``binding'' @kbd{@key{ESC} O P} to @code{[pf1]} in
-@code{function-key-map}, when using a VT100.
+@code{input-decode-map}, when using a VT100.
 
 Thus, typing @kbd{C-c @key{PF1}} sends the character sequence @kbd{C-c
 @key{ESC} O P}; later the function @code{read-key-sequence} translates
 this back into @kbd{C-c @key{PF1}}, which it returns as the vector
 @code{[?\C-c pf1]}.
 
-Entries in @code{function-key-map} are ignored if they conflict with
-bindings made in the minor mode, local, or global keymaps.  The intent
-is that the character sequences that function keys send should not have
-command bindings in their own right---but if they do, the ordinary
-bindings take priority.
-
-The value of @code{function-key-map} is usually set up automatically
+The value of @code{input-decode-map} is usually set up automatically
 according to the terminal's Terminfo or Termcap entry, but sometimes
 those need help from terminal-specific Lisp files.  Emacs comes with
 terminal-specific files for many common terminals; their main purpose is
-to make entries in @code{function-key-map} beyond those that can be
+to make entries in @code{input-decode-map} beyond those that can be
 deduced from Termcap and Terminfo.  @xref{Terminal-Specific}.
 @end defvar
 
-@defvar key-translation-map
-This variable is another keymap used just like @code{function-key-map}
-to translate input events into other events.  It differs from
-@code{function-key-map} in two ways:
+@defvar function-key-map
 
-@itemize @bullet
-@item
-@code{key-translation-map} goes to work after @code{function-key-map} is
-finished; it receives the results of translation by
-@code{function-key-map}.
+This variable holds a keymap similar to @code{input-decode-map} except
+that it describes key sequences which should be translated to
+alternative interpretations that are usually preferred.  It applies
+after @code{input-decode-map} and before @code{key-translation-map}.
 
-@item
-Non-prefix bindings in @code{key-translation-map} override actual key
-bindings.  For example, if @kbd{C-x f} has a non-prefix binding in
-@code{key-translation-map}, that translation takes effect even though
-@kbd{C-x f} also has a key binding in the global map.
-@end itemize
+Entries in @code{function-key-map} are ignored if they conflict with
+bindings made in the minor mode, local, or global keymaps.  I.e.
+the remapping only applies if the original key sequence would
+otherwise not have any binding.
+@end defvar
 
-Note however that actual key bindings can have an effect on
-@code{key-translation-map}, even though they are overridden by it.
-Indeed, actual key bindings override @code{function-key-map} and thus
-may alter the key sequence that @code{key-translation-map} receives.
-Clearly, it is better to avoid this type of situation.
+@defvar key-translation-map
+This variable is another keymap used just like @code{input-decode-map}
+to translate input events into other events.  It differs from
+@code{input-decode-map} in that it goes to work after
+@code{function-key-map} is finished rather than before; it receives
+the results of translation by @code{function-key-map}.
+
+Just like @code{input-decode-map}, but unlike @code{function-key-map},
+this keymap is applied regardless of whether the input key-sequence
+has a normal binding.  Note however that actual key bindings can have
+an effect on @code{key-translation-map}, even though they are
+overridden by it.  Indeed, actual key bindings override
+@code{function-key-map} and thus may alter the key sequence that
+@code{key-translation-map} receives.  Clearly, it is better to avoid
+this type of situation.
 
 The intent of @code{key-translation-map} is for users to map one
 character set to another, including ordinary characters normally bound
@@ -1578,7 +1581,8 @@ to @code{self-insert-command}.
 @end defvar
 
 @cindex key translation function
-You can use @code{function-key-map} or @code{key-translation-map} for
+You can use @code{input-decode-map}, @code{function-key-map}, or
+@code{key-translation-map} for
 more than simple aliases, by using a function, instead of a key
 sequence, as the ``translation'' of a key.  Then this function is called
 to compute the translation of that key.
similarity index 99%
rename from lispref/lists.texi
rename to doc/lispref/lists.texi
index ffe4df2413df05984e110db9a7bac77003f41cbf..5c8b552991b482463944d78c3511d9168d86ad14 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/lists
+@setfilename ../../info/lists
 @node Lists, Sequences Arrays Vectors, Strings and Characters, Top
 @chapter Lists
 @cindex lists
similarity index 99%
rename from lispref/loading.texi
rename to doc/lispref/loading.texi
index 058ed9c898436727ee051e58032e47cba4bdbf3f..9b582fe5cf853903b908a6a86363fab901b01184 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/loading
+@setfilename ../../info/loading
 @node Loading, Byte Compilation, Customization, Top
 @chapter Loading
 @cindex loading
similarity index 99%
rename from lispref/locals.texi
rename to doc/lispref/locals.texi
index 4edbc2a815fecca1552385e1d49715432acda431..5248e7b1497ba0a9bb3ff7dfd786cc850347d91d 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/locals
+@setfilename ../../info/locals
 @node Standard Buffer-Local Variables, Standard Keymaps, Standard Errors, Top
 @appendix Buffer-Local Variables
 @c The title "Standard Buffer-Local Variables" is too long for
similarity index 99%
rename from lispref/macros.texi
rename to doc/lispref/macros.texi
index b62c8b99d743bca4623cddf0de5040c54194557e..152b7b652b6d88159a52433392a37f82e384826c 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 2001, 2002,
 @c   2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/macros
+@setfilename ../../info/macros
 @node Macros, Customization, Functions, Top
 @chapter Macros
 @cindex macros
@@ -365,7 +365,7 @@ whitespace between the @samp{`}, @samp{,} or @samp{,@@} and the
 following expression.
 
 This syntax is still accepted, for compatibility with old Emacs
-versions, but support for it will soon disappear.
+versions, but support for it will be removed in the future.
 
 @node Problems with Macros
 @section Common Problems Using Macros
similarity index 95%
rename from lispref/makefile.w32-in
rename to doc/lispref/makefile.w32-in
index 7e35339d17f5c7c5f03a9398901bbcdcfca09571..720f91c10a3bd93bde6bc9582877154cbb944e64 100644 (file)
@@ -22,8 +22,8 @@
 # Standard configure variables.
 srcdir = .
 
-infodir = $(srcdir)/../info
-usermanualdir = $(srcdir)/../man
+infodir = $(srcdir)/../../info
+usermanualdir = $(srcdir)/../emacs
 
 # Redefine `TEX' if `tex' does not invoke plain TeX.  For example:
 # TEX=platex
@@ -33,7 +33,7 @@ MAKEINFO = makeinfo --force
 
 # 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);$(TEXINPUTS)" /C
 
 # The name of the manual:
 VERSION=2.9
similarity index 96%
rename from lispref/maps.texi
rename to doc/lispref/maps.texi
index 724091970c37886115cb5c7ab3e4fbd18dd97443..2e370f9123839aa2020f6b43b839a4463564b5b2 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/maps
+@setfilename ../../info/maps
 @node Standard Keymaps, Standard Hooks, Standard Buffer-Local Variables, Top
 @appendix Standard Keymaps
 @cindex standard keymaps
@@ -113,7 +113,7 @@ The sparse keymap that displays the Special Props submenu of the Text
 Properties menu.
 
 @item function-key-map
-The keymap for translating keypad and function keys.@*
+The keymap for translating key sequences to preferred alternatives.@*
 If there are none, then it contains an empty sparse keymap.
 @xref{Translation Keymaps}.
 
@@ -151,6 +151,11 @@ A sparse keymap used by the @kbd{e} command of Info.
 @vindex Info-mode-map
 A sparse keymap containing Info commands.
 
+@item input-decode-map
+The keymap for translating keypad and function keys.@*
+If there are none, then it contains an empty sparse keymap.
+@xref{Translation Keymaps}.
+
 @item isearch-mode-map
 @vindex isearch-mode-map
 A keymap that defines the characters you can type within incremental
similarity index 99%
rename from lispref/markers.texi
rename to doc/lispref/markers.texi
index 519b8a1316a253f5f2d2668dd1e19ab36911fb9a..6efc0b893d14b8cbcb8a33e550d516102c327852 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/markers
+@setfilename ../../info/markers
 @node Markers, Text, Positions, Top
 @chapter Markers
 @cindex markers
similarity index 99%
rename from lispref/minibuf.texi
rename to doc/lispref/minibuf.texi
index 98901df87f8bd9192b63fb2a32aa416beb94d330..8252b42ca946ce4fd8528ab10bc4ff0d7a67a51f 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
 @c   2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/minibuf
+@setfilename ../../info/minibuf
 @node Minibuffers, Command Loop, Read and Print, Top
 @chapter Minibuffers
 @cindex arguments, reading
similarity index 99%
rename from lispref/modes.texi
rename to doc/lispref/modes.texi
index 3d60756a901741c56cfc113ce0eb43d2ef3bb342..efaccc2556dbad5f08147c08e38befebb9ac64c8 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/modes
+@setfilename ../../info/modes
 @node Modes, Documentation, Keymaps, Top
 @chapter Major and Minor Modes
 @cindex mode
similarity index 99%
rename from lispref/nonascii.texi
rename to doc/lispref/nonascii.texi
index dd0f15c817e1ba76550cc57225a183fc5475dab8..7c504aef2cdc6bb5d09f269e106f1fc4bd066cb8 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/characters
+@setfilename ../../info/characters
 @node Non-ASCII Characters, Searching and Matching, Text, Top
 @chapter Non-@acronym{ASCII} Characters
 @cindex multibyte characters
@@ -1031,6 +1031,9 @@ argument, a list of all arguments passed to
 @code{find-operation-coding-system}.  It must return a coding system
 or a cons cell containing two coding systems.  This value has the same
 meaning as described above.
+
+If @var{coding} (or what returned by the above function) is
+@code{undecided}, the normal code-detection is performed.
 @end defvar
 
 @defvar process-coding-system-alist
similarity index 99%
rename from lispref/numbers.texi
rename to doc/lispref/numbers.texi
index 4d7f3e7578a766246f11b46f50a341e1bb8a3504..91945967f22c46a44358d6db76aa67e650bf60cf 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/numbers
+@setfilename ../../info/numbers
 @node Numbers, Strings and Characters, Lisp Data Types, Top
 @chapter Numbers
 @cindex integers
similarity index 99%
rename from lispref/objects.texi
rename to doc/lispref/objects.texi
index e75cde7020265e77690eb1ad3681dde664bc1b74..b4114a97d5d8193f8d001df0f336e99f0da335e0 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/objects
+@setfilename ../../info/objects
 @node Lisp Data Types, Numbers, Introduction, Top
 @chapter Lisp Data Types
 @cindex object
similarity index 99%
rename from lispref/os.texi
rename to doc/lispref/os.texi
index 498cc857eab259a9877df82e88e550a3c9cb1ef4..68fba8d977447191d45c43362053b750e08ed490 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/os
+@setfilename ../../info/os
 @node System Interface, Antinews, Display, Top
 @chapter Operating System Interface
 
@@ -258,6 +258,11 @@ actual init file loaded is a compiled file, such as @file{.emacs.elc},
 the value refers to the corresponding source file.
 @end defvar
 
+@defvar user-emacs-directory
+This variable holds the name of the @file{.emacs.d} directory.  It is
+ordinarily @file{~/.emacs.d}, but differs on some platforms.
+@end defvar
+
 @node Terminal-Specific
 @subsection Terminal-Specific Initialization
 @cindex terminal-specific initialization
@@ -274,7 +279,7 @@ trying the @samp{.elc} and @samp{.el} suffixes.
 @cindex Termcap
   The usual function of a terminal-specific library is to enable
 special keys to send sequences that Emacs can recognize.  It may also
-need to set or add to @code{function-key-map} if the Termcap or
+need to set or add to @code{input-decode-map} if the Termcap or
 Terminfo entry does not specify all the terminal's function keys.
 @xref{Terminal Input}.
 
similarity index 99%
rename from lispref/positions.texi
rename to doc/lispref/positions.texi
index 939b3f75fc13bd34c386662b0bce15c49f16bc41..3e1d79acad89462d833259ac4b6981b8ed72de23 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/positions
+@setfilename ../../info/positions
 @node Positions, Markers, Frames, Top
 @chapter Positions
 @cindex position (in buffer)
similarity index 98%
rename from lispref/processes.texi
rename to doc/lispref/processes.texi
index 40bec387e0cece421febe2a96cb6fa16b2cd5423..28e41a0997310174f9f51ec0cff0d1ff5c42a4c4 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/processes
+@setfilename ../../info/processes
 @node Processes, Display, Abbrevs, Top
 @chapter Processes
 @cindex child process
@@ -432,6 +432,12 @@ arguments to add at the end of @var{command}.  The other arguments
 are handled as in @code{call-process}.
 @end defun
 
+@defun process-file-shell-command command &optional infile destination display &rest args
+This function is like @code{call-process-shell-command}, but uses
+@code{process-file} internally.  Depending on @code{default-directory},
+@var{command} can be executed also on remote hosts.
+@end defun
+
 @defun shell-command-to-string command
 This function executes @var{command} (a string) as a shell command,
 then returns the command's output as a string.
@@ -495,6 +501,29 @@ Process my-process finished
 @end smallexample
 @end defun
 
+@defun start-file-process name buffer-or-name program &rest args
+Like @code{start-process}, this function starts a new asynchronous
+subprocess running @var{program} in it, and returns its process
+object---when @code{default-directory} is not a magic file name.
+
+If @code{default-directory} is magic, the function invokes its file
+handler instead.  This handler ought to run @var{program}, perhaps on
+the local host, perhaps on a remote host that corresponds to
+@code{default-directory}.  In the latter case, the local part of
+@code{default-directory} becomes the working directory of the process.
+
+This function does not try to invoke file name handlers for
+@var{program} or for the @var{program-args}.
+
+Depending on the implementation of the file handler, it might not be
+possible to apply @code{process-filter} or @code{process-sentinel} to
+the resulting process object (@pxref{Filter Functions}, @pxref{Sentinels}).
+
+Some file handlers may not support @code{start-file-process} (for
+example @code{ange-ftp-hook-function}).  In such cases, the function
+does nothing and returns @code{nil}.
+@end defun
+
 @defun start-process-shell-command name buffer-or-name command &rest command-args
 This function is like @code{start-process} except that it uses a shell
 to execute the specified command.  The argument @var{command} is a shell
@@ -511,6 +540,12 @@ characters do @emph{not} have their special shell meanings.  @xref{Shell
 Arguments}.
 @end defun
 
+@defun start-file-process-shell-command name buffer-or-name command &rest command-args
+This function is like @code{start-process-shell-command}, but uses
+@code{start-file-process} internally.  By this, @var{command} can be
+executed also on remote hosts, depending on @code{default-directory}.
+@end defun
+
 @defvar process-connection-type
 @cindex pipes
 @cindex @acronym{PTY}s
@@ -1309,7 +1344,7 @@ latter specifies one measured in milliseconds.  The two time periods
 thus specified are added together, and @code{accept-process-output}
 returns after that much time, whether or not there has been any
 subprocess output.
-  
+
 The argument @var{millisec} is semi-obsolete nowadays because
 @var{seconds} can be a floating point number to specify waiting a
 fractional number of seconds.  If @var{seconds} is 0, the function
similarity index 99%
rename from lispref/searching.texi
rename to doc/lispref/searching.texi
index 10e8c672962e00089cda4858ba2c10356a01e597..91b57ea4e4f24dba84b4805e242355c6f37e16fc 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/searching
+@setfilename ../../info/searching
 @node Searching and Matching, Syntax Tables, Non-ASCII Characters, Top
 @chapter Searching and Matching
 @cindex searching
@@ -650,6 +650,16 @@ Shy groups are particularly useful for mechanically-constructed regular
 expressions because they can be added automatically without altering the
 numbering of any ordinary, non-shy groups.
 
+@item \(?@var{num}: @dots{} \)
+is the @dfn{explicitly numbered group} construct.  Normal groups get
+their number implicitly, based on their position, which can be
+inconvenient.  This construct allows you to force a particular group
+number.  There is no particular restriction on the numbering,
+e.g.@: you can have several groups with the same number in which case
+the last one to match (i.e.@: the rightmost match) will win.
+Implicitly numbered groups always get the smallest integer larger than
+the one of any previous group.
+
 @item \@var{digit}
 matches the same text that matched the @var{digit}th occurrence of a
 grouping (@samp{\( @dots{} \)}) construct.
similarity index 99%
rename from lispref/sequences.texi
rename to doc/lispref/sequences.texi
index 7e66549412b77617b7bc060eee5e54519a491dfb..8b25350d869e4034509d837b437601feaccc89ee 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/sequences
+@setfilename ../../info/sequences
 @node Sequences Arrays Vectors, Hash Tables, Lists, Top
 @chapter Sequences, Arrays, and Vectors
 @cindex sequence
similarity index 100%
rename from lispref/spellfile
rename to doc/lispref/spellfile
similarity index 99%
rename from lispref/streams.texi
rename to doc/lispref/streams.texi
index 7356c119a1e641ec66b2b5a9be34b087ab2dc86b..ada6376305ff279068327fd2d49e0e87454a5339 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2001, 2002,
 @c   2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/streams
+@setfilename ../../info/streams
 @node Read and Print, Minibuffers, Debugging, Top
 @comment  node-name,  next,  previous,  up
 @chapter Reading and Printing Lisp Objects
similarity index 99%
rename from lispref/strings.texi
rename to doc/lispref/strings.texi
index af5a2fa14d3827734aee3be53154796cfa191240..b2f32ad02d60bb9f2798b84d72528140721b5b30 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/strings
+@setfilename ../../info/strings
 @node Strings and Characters, Lists, Numbers, Top
 @comment  node-name,  next,  previous,  up
 @chapter Strings and Characters
similarity index 99%
rename from lispref/symbols.texi
rename to doc/lispref/symbols.texi
index 7234a75bd59bd269e1b22c2edf3233ffa663dbcf..08f7d7f1ca164c773bf51f6b8966ec1bd7ddd494 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/symbols
+@setfilename ../../info/symbols
 @node Symbols, Evaluation, Hash Tables, Top
 @chapter Symbols
 @cindex symbol
similarity index 99%
rename from lispref/syntax.texi
rename to doc/lispref/syntax.texi
index 340f74632bd4912d296f8b30b0e95a15fd868fe9..83f6856c65b8bce646cef14ab29053d0d13ed5fa 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/syntax
+@setfilename ../../info/syntax
 @node Syntax Tables, Abbrevs, Searching and Matching, Top
 @chapter Syntax Tables
 @cindex parsing buffer text
similarity index 97%
rename from lispref/text.texi
rename to doc/lispref/text.texi
index 906e51c513b1fd54cf50ecc95869bf62aa718f95..daaaf6c9b9de23e8c0dc7d9aae33c24b617cb178 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/text
+@setfilename ../../info/text
 @node Text, Non-ASCII Characters, Markers, Top
 @chapter Text
 @cindex text
@@ -1453,6 +1453,12 @@ The variable @code{paragraph-separate} controls how to distinguish
 paragraphs.  @xref{Standard Regexps}.
 @end deffn
 
+@deffn Command fill-paragraph-or-region justify
+In Transient Mark mode, when the mark is active, this command calls
+@code{fill-region} on the active region.  Otherwise, it calls
+@code{fill-paragraph}.
+@end deffn
+
 @deffn Command fill-individual-paragraphs start end &optional justify citation-regexp
 This command fills each paragraph in the region according to its
 individual fill prefix.  Thus, if the lines of a paragraph were indented
@@ -2574,8 +2580,6 @@ along with the characters; this includes such diverse functions as
 * Format Properties::      Properties for representing formatting of text.
 * Sticky Properties::      How inserted text gets properties from
                              neighboring text.
-* Saving Properties::      Saving text properties in files, and reading
-                             them back.
 * Lazy Properties::        Computing text properties in a lazy fashion
                              only when text is examined.
 * Clickable Text::         Using text properties to make regions of text
@@ -3258,25 +3262,10 @@ Manual}) provides an example.
 @item composition
 @kindex composition @r{(text property)}
 This text property is used to display a sequence of characters as a
-single glyph composed from components.  For instance, in Thai a base
-consonant is composed with the following combining vowel as a single
-glyph.  The value should be a character or a sequence (vector, list,
-or string) of integers.
-
-@itemize @bullet
-@item
-If it is a character, it means to display that character instead of
-the text in the region.
-
-@item
-If it is a string, it means to display that string's contents instead
-of the text in the region.
+single glyph composed from components.  But the value of the property
+itself is completely internal to Emacs and should not be manipulated
+directly by, for instance, @code{put-text-property}.
 
-@item
-If it is a vector or list, the elements are characters interleaved
-with internal codes specifying how to compose the following character
-with the previous one.
-@end itemize
 @end table
 
 @node Format Properties
@@ -3392,75 +3381,6 @@ adjoining text.
   @xref{Insertion}, for the ordinary insertion functions which do not
 inherit.
 
-@node Saving Properties
-@subsection Saving Text Properties in Files
-@cindex text properties in files
-@cindex saving text properties
-
-  You can save text properties in files (along with the text itself),
-and restore the same text properties when visiting or inserting the
-files, using these two hooks:
-
-@defvar write-region-annotate-functions
-This variable's value is a list of functions for @code{write-region} to
-run to encode text properties in some fashion as annotations to the text
-being written in the file.  @xref{Writing to Files}.
-
-Each function in the list is called with two arguments: the start and
-end of the region to be written.  These functions should not alter the
-contents of the buffer.  Instead, they should return lists indicating
-annotations to write in the file in addition to the text in the
-buffer.
-
-Each function should return a list of elements of the form
-@code{(@var{position} . @var{string})}, where @var{position} is an
-integer specifying the relative position within the text to be written,
-and @var{string} is the annotation to add there.
-
-Each list returned by one of these functions must be already sorted in
-increasing order by @var{position}.  If there is more than one function,
-@code{write-region} merges the lists destructively into one sorted list.
-
-When @code{write-region} actually writes the text from the buffer to the
-file, it intermixes the specified annotations at the corresponding
-positions.  All this takes place without modifying the buffer.
-@end defvar
-
-@defvar after-insert-file-functions
-This variable holds a list of functions for @code{insert-file-contents}
-to call after inserting a file's contents.  These functions should scan
-the inserted text for annotations, and convert them to the text
-properties they stand for.
-
-Each function receives one argument, the length of the inserted text;
-point indicates the start of that text.  The function should scan that
-text for annotations, delete them, and create the text properties that
-the annotations specify.  The function should return the updated length
-of the inserted text, as it stands after those changes.  The value
-returned by one function becomes the argument to the next function.
-
-These functions should always return with point at the beginning of
-the inserted text.
-
-The intended use of @code{after-insert-file-functions} is for converting
-some sort of textual annotations into actual text properties.  But other
-uses may be possible.
-@end defvar
-
-We invite users to write Lisp programs to store and retrieve text
-properties in files, using these hooks, and thus to experiment with
-various data formats and find good ones.  Eventually we hope users
-will produce good, general extensions we can install in Emacs.
-
-We suggest not trying to handle arbitrary Lisp objects as text property
-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.
-
-@xref{Format Conversion}, for a related feature.
-
-@c ??? In next edition, merge this info Format Conversion.
-
 @node Lazy Properties
 @subsection Lazy Computation of Text Properties
 
similarity index 100%
rename from lispref/tindex.pl
rename to doc/lispref/tindex.pl
similarity index 99%
rename from lispref/tips.texi
rename to doc/lispref/tips.texi
index f3070f4659b17f63815068af8d99211db284cfc4..f16749a214d725506870e953f85c90ce17622aaf 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1995, 1998, 1999, 2001, 2002,
 @c   2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/tips
+@setfilename ../../info/tips
 @node Tips, GNU Emacs Internals, GPL, Top
 @appendix Tips and Conventions
 @cindex tips for writing Lisp
similarity index 100%
rename from lispref/two.el
rename to doc/lispref/two.el
similarity index 99%
rename from lispref/variables.texi
rename to doc/lispref/variables.texi
index 9d9dc8260bba836ff72c92157739d753a83a3a34..d5f1035c16949f7227fbea604a71f6a1416266f9 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000,
 @c   2001, 2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/variables
+@setfilename ../../info/variables
 @node Variables, Functions, Control Structures, Top
 @chapter Variables
 @cindex variable
similarity index 100%
rename from lispref/vol1.texi
rename to doc/lispref/vol1.texi
similarity index 100%
rename from lispref/vol2.texi
rename to doc/lispref/vol2.texi
similarity index 99%
rename from lispref/windows.texi
rename to doc/lispref/windows.texi
index c677919598da4f5472eb7b46a863dcee3975d13a..9a49401485eb04c761f58bb68076e15e3e92e55b 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 @c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
-@setfilename ../info/windows
+@setfilename ../../info/windows
 @node Windows, Frames, Buffers, Top
 @chapter Windows
 
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
new file mode 100644 (file)
index 0000000..24cae25
--- /dev/null
@@ -0,0 +1,31 @@
+2007-09-06  Glenn Morris  <rgm@gnu.org>
+
+       * ctags.1, emacs.1, emacsclient.1, etags.1: Move from etc/ to
+       doc/man/.
+
+;; Local Variables:
+;; coding: iso-2022-7bit
+;; fill-column: 79
+;; add-log-time-zone-rule: t
+;; End:
+
+    Copyright (C) 2007 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, 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; see the file COPYING.  If not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301, USA.
+
+;; arch-tag: 2bd1112e-157f-4884-b0ca-0fb1057972d7
similarity index 100%
rename from etc/ctags.1
rename to doc/man/ctags.1
similarity index 100%
rename from etc/emacs.1
rename to doc/man/emacs.1
similarity index 100%
rename from etc/emacsclient.1
rename to doc/man/emacsclient.1
similarity index 100%
rename from etc/etags.1
rename to doc/man/etags.1
diff --git a/doc/misc/.gitignore b/doc/misc/.gitignore
new file mode 100644 (file)
index 0000000..3ff56b4
--- /dev/null
@@ -0,0 +1,23 @@
+*.aux
+*.cp
+*.cps
+*.dvi
+*.fn
+*.fns
+*.ky
+*.kys
+*.log
+*.op
+*.ops
+*.pdf
+*.pg
+*.pgs
+*.ps
+*.tmp
+*.toc
+*.tp
+*.tps
+*.vr
+*.vrs
+Makefile
+makefile
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
new file mode 100644 (file)
index 0000000..364b279
--- /dev/null
@@ -0,0 +1,3924 @@
+2007-10-10  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.1.11.
+
+       * trampver.texi: Update release number.
+
+2007-10-06  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (External packages): New section.
+
+2007-09-29  Juri Linkov  <juri@jurta.org>
+
+       * info.texi (Help-Int): Document `L' (`Info-history').
+
+2007-09-26  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Change links to webpage and maintained email.
+       (Remember): Promote to Chapter, significant changes.
+       (Fast access to TODO states): New section.
+       (Faces for TODO keywords): New section.
+       (Export options): Example for #+DATE.
+       (Progress logging): Section moved.
+
+2007-09-26  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi (HTML): Mention binding of S-mouse-2 to
+       browse-url-at-mouse.
+
+2007-09-20  Eduard Wiebe  <usenet@pusto.de>  (tiny change)
+
+       * flymake.texi (Customizable variables): Face names don't end in -face.
+       Fix flymake-err-line-patterns template.
+       (Example -- Configuring a tool called directly): Fix init-function.
+       (Highlighting erroneous lines): Face names don't end in -face.
+
+2007-09-18  Exal de Jesus Garcia Carrillo  <exal@gmx.de>  (tiny change)
+
+       * erc.texi (Special-Features): Fix small typo.
+
+2007-09-14  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Filename Syntax): Provide links to "Inline methods"
+       and "External transfer methods".
+
+2007-09-13  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Predefined Units): Add some history.
+
+2007-09-08  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi (Copying): New section included from gpl.texi.  This matches
+       the look of the upstream ERC manual.
+
+2007-09-07  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (History and Acknowledgements): Adjust the
+       "thanks".
+       (Random Numbers): Clarify the distribution of `random'.
+
+2007-09-06  Glenn Morris  <rgm@gnu.org>
+
+       * Move manual sources from man/ to subdirectories of doc/.
+        Split into the Emacs manual in emacs/, and other manuals in misc/.
+       Change all setfilename commands to use ../../info.
+       * Makefile.in: Move the parts of the old man/Makefile.in that do not
+       refer to the Emacs manual here.
+       (infodir): New variable.
+       (INFO_TARGETS, info): Use infodir.  Also used by all info targets.
+       (cc-mode.texi, faq.texi): Update references to source file locations.
+       * makefile.w32-in: Move the parts of the old man/makefile.w32-in that
+       do not refer to the Emacs manual here.
+       (infodir, MULTI_INSTALL_INFO, ENVADD): Go up one more level.
+
+       * Makefile.in: Add `basename' versions of all info targets, for
+       convenience when rebuilding just one manual.
+       (../etc/GNU): Delete obsolete target.
+       (.SUFFIXES): Use $(TEXI2DVI) rather than texi2dvi.
+       (mostlyclean): Add *.op, *.ops.  Move *.aux *.cps *.fns *.kys *.pgs
+        *.vrs *.toc here...
+        (maintainer-clean): ...from here.
+
+       * makefile.w32-in (../etc/GNU): Delete obsolete target.
+
+2007-09-01  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Date Conversions): Clarify definition of
+       Julian day numbering.
+       (Date Forms): Clarify definition of Julian day numbering;
+       add some history.
+
+2007-08-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version 5.07
+
+2007-08-24  IRIE Tetsuya  <irie@t.email.ne.jp>  (tiny change)
+
+       * message.texi (MIME): Replace mml-attach with mml-attach-file.
+
+2007-08-22  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Adding hyperlink types): New section.
+       (Embedded LaTeX): Chapter updated because of LaTeX export.
+       (LaTeX export): New section.
+       (Using links out): New section.
+
+2007-08-22  Glenn Morris  <rgm@gnu.org>
+
+       * faq.texi (Learning how to do something): Refcards now in
+       etc/refcards/ directory.
+
+2007-08-22  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Remote Programs): Persistency file must be cleared when
+       changing `tramp-remote-path'.
+       (Filename Syntax): Don't use @var{} constructs inside the @trampfn
+       macro.
+
+2007-08-17  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi: Move contents to beginning of file.
+       (Algebraic Entry): Fix the formatting of an example.
+
+2007-08-15  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Basic Operations on Units): Mention exact versus
+       inexact conversions.
+
+2007-08-14  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Basic Operations on Units): Mention default
+       values for new units.
+       (Quick Calculator Mode): Mention that binary format will
+       be displayed.
+
+2007-08-14  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Selecting a Group): Mention gnus-maximum-newsgroup.
+
+2007-08-10  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (NNTP): Mention nntp-xref-number-is-evil.
+
+2007-08-08  Glenn Morris  <rgm@gnu.org>
+
+       * gnus.texi, sieve.texi: Replace `iff'.
+
+2007-08-03  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Basic Graphics): Mention the graphing of error
+       forms.
+       (Graphics Options): Mention how `g s' handles error forms.
+       (Curve Fitting): Mention plotting the curves.
+       (Standard Nonlinear Models): Add additional models.
+       (Curve Fitting Details): Mention the Levenberg-Marquardt method.
+       (Linear Fits): Correct result.
+
+2007-08-01  Alan Mackenzie  <acm@muc.de>
+
+       * cc-mode.texi (Mailing Lists and Bug Reports): Correct "-no-site-file"
+       to "--no-site-file".
+
+2007-07-29  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Frequently Asked Questions): Point to mode line
+       extension in Emacs 23.1.
+
+       * trampver.texi: Update release number.
+
+2007-07-27  Glenn Morris  <rgm@gnu.org>
+
+       * calc.texi (Copying): Include license text from gpl.texi, rather than
+       in-line.
+
+2007-07-25  Glenn Morris  <rgm@gnu.org>
+
+       * calc.texi (Copying): Replace license with GPLv3.
+
+       * Relicense all FSF files to GPLv3 or later.
+
+2007-07-22  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.1.10.
+
+       * tramp.texi (trampfn): Expand macro implementation in order to handle
+       empty arguments.
+       (trampfnmhl, trampfnuhl, trampfnhl): Remove macros.  Replace all
+       occurencies by trampfn.
+       (Frequently Asked Questions): Extend example code for host
+       identification in the modeline. Add bbdb to approaches shortening Tramp
+       file names to be typed.
+
+       * trampver.texi: Update release number.
+
+2007-07-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi: Move @setfilename ../info/tramp up, outside the header
+       section.  Reported by <poti@potis.org>.
+       (Remote processes): Arguments of the program to be debugged are taken
+       literally.
+       (Frequently Asked Questions): Simplify recentf example.
+
+2007-07-14  Karl Berry  <karl@gnu.org>
+
+       * info.texi (@copying): New Back-Cover Text.
+
+       * info.texi (Quitting Info): Move to proper place in source.
+       (Reported by Benno Schulenberg.)
+
+2007-07-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (../info/emacs-mime): Use --enable-encoding.
+
+       * makefile.w32-in ($(infodir)/emacs-mime): Ditto.
+
+       * emacs-mime.texi: Add @documentencoding directive.
+
+2007-07-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tramp.texi (Remote processes): Add an anchor to the subsection
+       "Running a debugger on a remote host".
+
+2007-07-12  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Remote processes): Don't call it "experimental" any
+       longer.  Add subsection about running a debugger on a remote host.
+
+2007-07-10  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Properties and columns): Chapter rewritten.
+
+2007-07-08  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi:
+       * trampver.texi: Migrate to Tramp 2.1.
+
+2007-07-02  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Properties): New chapter.
+
+2007-07-02  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-faq.texi ([3.2]): Fix locating of environment variables in the
+       Control Panel.
+
+       * gnus.texi (Misc Article): Add index entry for
+       gnus-single-article-buffer.
+
+2007-06-27  Andreas Seltenreich  <andreas@gate450.dyndns.org>
+
+       * gnus.texi (Starting Up): Fix typo.
+
+2007-06-25  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Asynchronous Fetching): Fix typo.
+
+2007-06-20  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi:Change ifinfo to ifnottex (as appropriate) throughout.
+       (About This Manual): Remove redundant information.
+       (Getting Started): Mention author.
+       (Basic Arithmetic, Customizing Calc): Make description of the
+       variable `calc-multiplication-has-precedence' match its new effect.
+
+2007-06-19  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Basic Arithmetic, Customizing Calc): Mention
+       the variable `calc-multiplication-has-precedence'.
+
+2007-06-19  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Tag): Section swapped with node Timestamps.
+       (Formula syntax for Lisp): Document new `L' flag.
+
+2007-06-06  Andreas Seltenreich  <andreas@gate450.dyndns.org>
+
+       * gnus.texi (Misc Group Stuff, Summary Buffer)
+       (Server Commands, Article Keymap): Fix typo.  s/function/command/.
+
+2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * cc-mode.texi (Comment Commands, Getting Started, Style Variables):
+       * gnus.texi (Article Buttons, Mail Source Customization)
+       (Sending or Not Sending, Customizing NNDiary):
+       * message.texi (Message Headers):
+       * mh-e.texi (HTML): Fix typos.
+
+2007-06-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.56.
+
+       * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc
+       settings.  Reported by Ted Zlatanov <tzz@lifelogs.com>.
+
+2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * Version 22.1 released.
+
+2007-05-26  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi (Modules): Fix references to completion modules.
+
+2007-05-09  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Running NNDiary): Use ~/.gnus.el instead of gnusrc.
+
+2007-05-09  Didier Verna  <didier@xemacs.org>
+
+       * gnus.texi (Email Based Diary): New.  Proper documentation for the
+       nndiary back end and the gnus-diary library.
+
+2007-05-03  Karl Berry  <karl@gnu.org>
+
+       * .cvsignore (*.pdf): New entry.
+
+       * texinfo.tex: Update from current version for better pdf generation.
+
+2007-04-30  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Article Highlighting): Clarify gnus-cite-parse-max-size.
+
+2007-04-28  Glenn Morris  <rgm@gnu.org>
+
+       * faq.texi (New in Emacs 22): Restore mention of python.el pending
+       consideration of legal status.
+
+2007-04-27  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * idlwave.texi: Minor updates for IDLWAVE 6.1.
+
+2007-04-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faq.texi (New in Emacs 22): python.el removed.
+
+2007-04-23  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Reporting bugs): Update maintainer's address.
+
+2007-04-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faq.texi (New in Emacs 22): Rename "tumme" to "image-dired".
+
+2007-04-15  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Title page): Remove the date.
+       (Basic Arithmetic): Emphasize that / binds less strongly than *.
+       (The Standard Calc Interface): Change trail title.
+       (Floats): Mention that when non-decimal floats are entered, only
+       approximations are stored.
+       (Copying): Move to the appendices.
+       (GNU Free Documentation License): Add as an appendix.
+
+2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * ada-mode.texi, autotype.texi, cc-mode.texi, cl.texi:
+       * dired-x.texi, ebrowse.texi, ediff.texi:
+       * emacs-mime.texi, erc.texi, eshell.texi:
+       * eudc.texi, flymake.texi, forms.texi, gnus.texi:
+       * idlwave.texi, message.texi, newsticker.texi, org.texi:
+       * pcl-cvs.texi, pgg.texi, rcirc.texi, reftex.texi, sc.texi:
+       * ses.texi, sieve.texi, smtpmail.texi, speedbar.texi:
+       * tramp.texi, url.texi, vip.texi, viper.texi, widget.texi:
+       * woman.texi: Include GFDL.
+
+       * doclicense.texi: Remove node heading, so that it can be included by
+       other files.
+
+       * dired-x.texi: Relicence under GFDL.  Remove date from title page.
+
+       * calc.texi (Algebraic Tutorial): Emphasize that / binds less strongly
+       than *.
+
+2007-04-14  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Formula syntax for Calc): Emphasize the operator precedence
+       in Calc.
+
+2007-04-09  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (New in Emacs 22): Mention improvements to the Windows and
+       Mac OS ports.  Make it clear that mouse-1 complements and doesn't
+       replace mouse-2.
+
+2007-04-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * woman.texi (Word at point, Interface Options): woman-topic-at-point
+       renamed to woman-use-topic-at-point.  Document new behavior.
+
+2007-04-08  Richard Stallman  <rms@gnu.org>
+
+       * url.texi: Fix some indexing.
+       (Disk Caching): Drop discussion of old/other Emacs versions.
+
+2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * url.texi (Disk Caching): Say Emacs 21 "and later".
+
+       * cc-mode.texi (Font Locking Preliminaries): Link to Emacs manual node
+       on Font locking which now mentions JIT lock.
+
+2007-04-01  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi: Update for the ERC 5.2 release.
+
+2007-03-31  David Kastrup  <dak@gnu.org>
+
+       * woman.texi (Topic, Interface Options): Explain changes semantics of
+       woman-manpath in order to consider MANPATH_MAP entries.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs-mime.texi (Non-MIME): Postscript -> PostScript.
+
+2007-03-26  Richard Stallman  <rms@gnu.org>
+
+       * pgg.texi (Caching passphrase): Clean up previous change.
+
+2007-03-25  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * gnus.texi (Setting Process Marks): Fix typo.
+
+2007-03-25  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (New in Emacs 22): Reorganize using an itemized list for
+       readability, and include various fixes by Daniel Brockman, Nick Roberts
+       and Dieter Wilhelm.
+
+2007-03-24  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * gnus.texi (Splitting Mail): Reword "splitting"-as-adj to be -as-noun.
+
+       * gnus.texi (Mail Source Specifiers): Fix typo.
+
+2007-03-22  Ralf Angeli  <angeli@caeruleus.net>
+
+       * reftex.texi (Imprint): Update maintainer information.
+
+2007-03-15  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * message.texi (Message Buffers): Update documentation for
+       message-generate-new-buffers.
+
+2007-03-15  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg.texi (Caching passphrase): Describe pgg-passphrase-coding-system.
+
+2007-03-21  Glenn Morris  <rgm@gnu.org>
+
+       * eshell.texi (Known problems): Emacs 22 comes with eshell 2.4.2.
+
+2007-03-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * eshell.texi (Known problems): Emacs 21 -> 22.
+
+       * cc-mode.texi (Performance Issues): Update note about 21.3 to 22.1.
+
+2007-03-18  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Time Zones): Mention that the DST rules changed in 2007.
+
+2007-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * calc.texi (Time Zones): Switch to new North America DST rule.
+
+       * calc.texi: Replace "daylight savings" with "daylight
+       saving" in text throughout.
+
+2007-03-11  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       * gnus.texi (Mail and Post): Update documentation for gnus-user-agent.
+       The variable now uses a list of symbols instead of just a symbol.
+       Reported by Christoph Conrad <christoph.conrad@gmx.de>.
+
+2007-03-06  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (New in Emacs 22): Don't say "now" too much.  Add MH-E to
+       new packages, and mention Gnus update.
+
+2007-02-27  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (NNTP): Mention nntp-never-echoes-commands and
+       nntp-open-connection-functions-never-echo-commands.
+
+2007-02-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * pgg.texi (Caching passphrase): Document gpg-agent usage, gpg-agent
+       problems on the console, and security risk in not using gpg-agent.
+
+2007-02-25  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (The spreadsheet): Renamed from "Table calculations".
+       Completely reorganized and rewritten.
+       (CamelCase links): Section removed.
+       (Repeating items): New section.
+       (Tracking TODO state changes): New section.
+       (Agenda views): Chapter reorganized and rewritten.
+       (HTML export): Section rewritten.
+       (Tables in arbitrary syntax): New section.
+       (Summary): Better feature summary.
+       (Activation): Document problem with cut-and-paste of Lisp code
+       from PDF files.
+       (Visibility cycling): Document indirect buffer use.
+       (Structure editing): Document sorting.
+       (Remember): Section rewritten.
+       (Time stamps): Better description of time stamp types.
+       (Tag searches): Document regular expression search for tags.
+       (Stuck projects): New section.
+       (In-buffer settings): New keywords.
+       (History and Acknowledgments): Updated description.
+
+2007-02-24  Alan Mackenzie  <acm@muc.de>
+
+       * cc-mode.texi (Movement Commands): Insert two missing command names.
+       (Getting Started): Slight wording correction (use conditional).
+
+2007-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * widget.texi (User Interface, Basic Types): Document need to put some
+       text before the %v escape in :format string in editable-field widget.
+
+2007-02-18  Romain Francoise  <romain@orebokech.com>
+
+       * pcl-cvs.texi (Miscellaneous commands): q runs `cvs-bury-buffer', not
+       `cvs-mode-quit'.
+
+2007-02-10  Markus Triska  <markus.triska@gmx.at>
+
+       * widget.texi (Programming Example): Put constant strings in :format.
+
+2007-02-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * faq.texi (Fullscreen mode on MS-Windows): New node.
+
+2007-02-04  David Kastrup  <dak@gnu.org>
+
+       * faq.texi (AUCTeX): Update version number.  Should probably be done
+       for other packages as well.
+
+2007-01-28  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       * gnus.texi (Batching Agents): Fix example.  Reported by Tassilo Horn
+       <tassilo@member.fsf.org>.
+
+2007-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * msdog.texi (ls in Lisp): Document ls-lisp-format-time-list and
+       ls-lisp-use-localized-time-format.
+
+2007-01-20  Markus Triska  <markus.triska@gmx.at>
+
+       * flymake.texi (Flymake mode): find-file-hook instead of ...-hooks.
+
+2007-01-13  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi (Modules): Mention capab-identify module.
+
+2007-01-05  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi (Getting Started): Update for /RECONNECT command.
+
+2007-01-04  Richard Stallman  <rms@gnu.org>
+
+       * ebrowse.texi: Change C-c b to C-c C-m.
+
+2007-01-03  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Customizing Articles): Use index entries for gnus-treat-*
+       variables only in info to avoid redundant entries in the printed
+       manual.
+
+2007-01-02  Daiki Ueno  <ueno@unixuser.org>
+
+       * message.texi (Using PGP/MIME): Document gpg-agent usage.
+
+2007-01-02  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * message.texi (Security): Split into sub-nodes.
+
+2007-01-01  Alan Mackenzie  <acm@muc.de>
+
+       * cc-mode.texi ("Limitations and Known Bugs"): Document problems with
+       eval-after-load in Emacs <=21 and a workaround.  Document that
+       trigraphs are not supported.
+
+2007-01-01  Alan Mackenzie  <acm@muc.de>
+
+       * cc-mode.texi ("Filling and Breaking"): Amend the doc for
+       c-context-line-break.  When invoked within a string, preserve
+       whitespace.  Add a backslash only when also in a macro.
+
+2007-01-01  Alan Mackenzie  <acm@muc.de>
+
+       * cc-mode.texi ("Choosing a Style"): Mention c-file-style.
+
+2007-01-01  Alan Mackenzie  <acm@muc.de>
+
+       * cc-mode.texi ("Movement Commands", "Sample .emacs File"): C-M-[ae]
+       are now bound by default to c-\(beginning\|end\)-of-defun by default.
+
+2007-01-01  Alan Mackenzie  <acm@muc.de>
+
+       * cc-mode.texi ("Other Commands"): Move c-set-style (C-c .) here from
+       "Choosing a Style".
+
+       * cc-mode.texi ("Styles"): Add @dfn{style}.
+
+2006-12-30  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.55.
+
+       * trampver.texi: Update release number.
+
+2006-12-29  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Customizing Articles): Add index entries for all
+       gnus-treat-* variables.
+
+2006-12-29  Jouni K. Sepp\e,Ad\e(Bnen  <jks@iki.fi>
+
+       * gnus.texi (IMAP): Fix incorrect explanation of
+       nnimap-search-uids-not-since-is-evil in documentation for
+       nnimap-expunge-search-string.
+
+2006-12-27  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (ifile spam filtering): Rename spam-ifile-database-path to
+       spam-ifile-database.
+
+2006-12-26  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Spam Package Configuration Examples): Don't encourage to
+       rebind C-s.
+
+2006-12-26  Jouni K. Sepp\e,Ad\e(Bnen  <jks@iki.fi>
+
+       * gnus.texi (Group Parameters, Group Maintenance, Topic Commands)
+       (Mail Group Commands, Expiring Mail, IMAP): Add index entries for
+       "expiring mail".
+       (IMAP): Document nnimap-search-uids-not-since-is-evil and
+       nnimap-nov-is-evil.
+
+2006-12-25  Kevin Ryde  <user42@zip.com.au>
+
+       * cl.texi (Sorting Sequences): In sort*, add a little cautionary note
+       about the key procedure being used heavily.
+
+2006-12-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * pgg.texi (Caching passphrase): Default for pgg-gpg-use-agent changed
+       to t.
+       (Prerequisites): Add explanation about gpg-agent.
+
+2006-12-22  Kevin Ryde  <user42@zip.com.au>
+
+       * cl.texi (Sorting Sequences): Typo in sort*, example showed plain
+       "sort" instead of "sort*".
+
+2006-12-19  Richard Stallman  <rms@gnu.org>
+
+       * calc.texi (History and Acknowledgements): Recognize that Emacs
+       now does have floating point.
+
+2006-12-19  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (External transfer methods): Describe new method `scpc'.
+
+2006-12-17  Sascha Wilde  <wilde@sha-bang.de>
+
+       * pgg.texi: Added short note on gpg-agent to the introduction.
+
+2006-12-13  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Hiding Headers): Document that `long-to' and `many-to'
+       also applies to Cc.
+
+2006-12-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (X-Face): Clarify.  Say which programs are required
+       on Windows.
+
+2006-12-08  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi (Modules): Remove documentation for list module.
+
+2006-12-05  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * faq.texi (^M in the shell buffer): Ditto.
+
+2006-11-20  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi: Call this the 5.2 stable pre-release of ERC.
+
+2006-11-17  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Fix typos.
+       (Agenda commands): Document `C-k'.
+
+2006-11-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * url.texi (http/https): Fix a typo in the HTTP URL.
+
+2006-11-14  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * ada-mode.texi: Total rewrite.
+
+2006-11-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Minor typo fixes.
+
+2006-11-13  Bill Wohler  <wohler@newt.com>
+
+       Release MH-E manual version 8.0.3.
+
+       * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
+       release 8.0.3.
+
+       * mh-e.texi (Incorporating Mail): Use output of "mhparam Path"
+       to set MAILDIR.
+       (Reading Mail): Document the customization of read-mail-command
+       for MH-E.
+       (Viewing Attachments): Document mm-discouraged-alternatives.
+       (Tool Bar): Fix Texinfo for mh-xemacs-use-tool-bar-flag.
+       (Junk): Add more information about the settings of mh-junk-background
+       in a program.  Add /usr/bin/mh to PATH in examples.
+
+2006-11-12  Richard Stallman  <rms@gnu.org>
+
+       * woman.texi: Update author address but say he no longer maintains it.
+
+2006-11-10  Carsten Dominik  <carsten.dominik@gmail.com>
+
+       * org.texi (ARCHIVE tag): Document C-TAB for forcing cycling of
+       archived trees.
+       (Checkboxes): Section moved to chapter 5, and extended.
+       (The date/time prompt): New section.
+       (Link abbreviations): New section.
+       (Presentation and sorting): New section.
+       (Custom agenda views): Section completely rewritten.
+       (Summary): Compare with Planner.
+       (Feedback): More info about creating backtraces.
+       (Plain lists): Modified example.
+       (Breaking down tasks): New section.
+       (Custom time format): New section.
+       (Time stamps): Document inactive timestamps.
+       (Setting tags): More details about fast tag selection.
+       (Block agenda): New section.
+       (Custom agenda views): Section rewritten.
+       (Block agenda): New section.
+
+2006-11-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Configuration): scp is the default method.
+       (Default Method): Use ssh as example for another method.
+
+2006-10-27  Richard Stallman  <rms@gnu.org>
+
+       * woman.texi: Downcase nroff/troff/roff.
+       (Installation): Chapter deleted.  Some xrefs deleted.
+       (Background): woman doesn't advise man ;-).
+
+2006-10-26  Roberto Rodr\e,Am\e(Bguez  <lanubeblanca@googlemail.com>  (tiny change)
+
+       * ada-mode.texi (Project files, Identifier completion)
+       (Automatic Casing, Debugging, Using non-standard file names)
+       (Working Remotely): Fix typos.
+
+2006-10-20  Masatake YAMATO  <jet@gyve.org>
+
+       * cc-mode.texi (Sample .emacs File): Added missing `)' in
+       sample code `my-c-initialization-hook'.
+
+2006-10-19  Stuart D. Herring  <herring@lanl.gov>
+
+       * widget.texi: Fix typos.
+
+2006-10-19  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Frequently Asked Questions): Remove questions marked with
+       "???".  There have been no complaints for years, so the information
+       must be appropriate.
+
+2006-10-16  Richard Stallman  <rms@gnu.org>
+
+       * widget.texi: Use @var instead of capitalization.
+       Clarify many widget type descriptions.
+
+2006-10-13  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       * gnus.texi (Other modes): Fix typo.  Add alternative index entry for
+       gnus-dired-attach.
+       (Selecting a Group): Fix typo.
+
+2006-10-12  Roberto Rodr\e,Am\e(Bguez  <lanubeblanca@googlemail.com>  (tiny change)
+
+       * widget.texi: Fix typos.
+
+2006-10-06  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Image Enhancements): Update for Emacs 22.
+
+       * gnus-faq.texi ([1.3]): Update.
+
+2006-10-06  Richard Stallman  <rms@gnu.org>
+
+       * faq.texi (Displaying the current line or column):
+       Delete "As of Emacs 20".
+
+2006-10-06  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (VM): VM works with Emacs 22 too.
+
+2006-10-06  Richard Stallman  <rms@gnu.org>
+
+       * ebrowse.texi: Remove Emacs version "21" from title.
+
+2006-10-02  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Foreign Groups): Say where change of editing commands are
+       stored.  Add reference to `gnus-parameters'.
+
+2006-09-15  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi, mh-e.texi (GNU GENERAL PUBLIC LICENSE):
+       Change "Library Public License" to "Lesser Public License"
+       throughout.  Use "yyyy" to represent year.
+
+2006-09-15  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Setting tags): Typo fix.
+
+2006-09-14  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Oort Gnus): Add @xref for `mm-fill-flowed'.
+
+2006-09-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * reftex.texi (Citations Outside LaTeX): Simplify lisp example.
+
+2006-09-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * faq.texi (Escape sequences in shell output): EMACS is now set
+       to Emacs's absolute file name, not to "t".
+       (^M in the shell buffer): Likewise.
+       * misc.texi (Interactive Shell): Likewise.
+
+2006-09-11  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Mail Source Specifiers): Mention problem of duplicate
+       mails with pop3-leave-mail-on-server.  Fix wording.
+       (Limiting): Improve gnus-summary-limit-to-articles.
+       (X-Face): Fix typo.
+
+2006-09-11  Simon Josefsson  <jas@extundo.com>
+
+       * smtpmail.texi (Authentication): Explain TLS and SSL better, based on
+       suggested by Phillip Lord <phillip.lord@newcastle.ac.uk>.
+
+2006-09-06  Simon Josefsson  <jas@extundo.com>
+
+       * smtpmail.texi (Authentication): Mention SSL.
+
+2006-09-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * rcirc.texi (Internet Relay Chat, Useful IRC commands):
+       Don't use @indicateurl.
+
+       * cc-mode.texi (Subword Movement): Don't use @headitem.
+       (Custom Braces, Clean-ups): Don't use @tie.
+
+2006-08-29  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.54.
+
+       * tramp.texi (Bug Reports): The Tramp mailing list is moderated now.
+       Suggested by Adrian Phillips <a.phillips@met.no>.
+
+2006-08-15  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Installation, Activation): Split from Installation and
+       Activation.
+       (Clocking work time): Documented new features.
+
+2006-08-13  Alex Schroeder  <alex@gnu.org>
+
+       * rcirc.texi (Configuration): Use correct variable in rcirc-authinfo
+       example.
+
+2006-08-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * faq.texi (How to add fonts): New node.
+
+2006-08-05  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (New in Emacs 22): Expand.
+
+2006-08-03  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi: Update for ERC 5.1.4.
+
+2006-07-28  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Oort Gnus): Mention that the Lisp files are now installed
+       in .../site-lisp/gnus/ by default.
+       [ From gnus-news.texi in the trunk. ]
+
+2006-07-27  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (MIME Commands): Additions for yEnc.
+
+2006-07-24  Richard Stallman  <rms@gnu.org>
+
+       * pgg.texi, org.texi, info.texi, forms.texi, flymake.texi:
+       * faq.texi: Move periods and commas inside quotes.
+
+2006-07-20  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Error forms): Mention M-+ keybinding for `calc-plus-minus'.
+
+2006-07-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faq.texi (Security risks with Emacs): Document Emacs 22
+       file-local-variable mechanism.
+
+2006-07-12  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi: Update for ERC 5.1.3.
+
+2006-07-12  Alex Schroeder  <alex@gnu.org>
+
+       * rcirc.texi: Fix typos.
+       (Getting started with rcirc): New calling convention for M-x irc.
+       Mention #rcirc.  Removed channel tracking.
+       (Configuration): Changed the names of all variables that got changed
+       recently, eg. rcirc-server to rcirc-default-server.  Added
+       documentation for rcirc-authinfo, some background for Bitlbee, and
+       rcirc-track-minor-mode.
+       (Scrolling conservatively): Fixed the xref from Auto Scrolling to just
+       Scrolling.
+       (Reconnecting after you have lost the connection): Fixed example code
+       to match code changes.
+
+2006-07-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * gnus.texi, message.texi: Fix typos.
+
+2006-07-07  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Exporting): Document `C-c C-e' as the prefix for exporting
+       commands.
+       (Global TODO list): Document the use of the variables
+       `org-agenda-todo-ignore-scheduled' and
+       `org-agenda-todo-list-sublevels'.
+
+2006-07-05  Richard Stallman  <rms@gnu.org>
+
+       * faq.texi (Scrolling only one line): Fix xref.
+
+2006-07-05  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * faq.texi (Evaluating Emacs Lisp code):
+       Throughout, replace eval-current-buffer with eval-buffer.
+
+2006-07-03  Richard Stallman  <rms@gnu.org>
+
+       * rcirc.texi (Scrolling conservatively): Fix xref.
+
+       * pcl-cvs.texi (Viewing differences): Usage fix.
+
+2006-07-03  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Agenda commands): Document `s' key to save all org-mode
+       buffers.
+
+2006-06-30  Ralf Angeli  <angeli@caeruleus.net>
+
+       * pcl-cvs.texi (Customizing Faces): Remove -face suffix from face
+       names.  Mention `cvs-msg' face.
+
+2006-06-29  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Checkboxes): New section.
+
+2006-06-28  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Embedded LaTeX): Fix typos and implement small improvements
+       throughout this chapter.
+
+2006-06-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * info.texi (Help-Small-Screen): Clarify placement of "All" and "Top"
+       text for standalone vs Emacs info.
+       (Help): Clarify header line description.  Use mouse-1 for clicks.
+       (Help-P): Use mouse-1 for clicks.
+       (Help-^L): "Top" and "All" not displayed with dashes in Emacs.
+       (Help-^L, Help-M, Help-Int, Search Index, Go to node)
+       (Choose menu subtopic): Remove gratuitous Emacs command names.
+       (Help-FOO): Put usual behavior first.
+       (Help-Xref): Clicking on xrefs works in Emacs.
+       (Search Text): Clarify what the default behavior is.
+       (Create Info buffer): Fix Emacs window/X window confusion.
+       (Emacs Info Variables): Fix for new Emacs init file behavior.
+
+2006-06-24  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       * gnus.texi (Summary Buffer Lines): Fix typo.
+
+2006-06-23  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Embedded LaTeX): New chapter.
+       (Archiving): Section rewritten.
+       (Enhancing text): Some parts moved to the new chapter about LaTeX.
+
+2006-06-20  Bill Wohler  <wohler@newt.com>
+
+       Release MH-E manual version 8.0.1.
+
+       * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
+       release 8.0.1.
+       (Preface): Depend on GNU mailutils 1.0 and higher.
+
+2006-06-19  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * message.texi (News Headers): Update message-syntax-checks section.
+
+2006-06-19  Karl Berry  <karl@gnu.org>
+
+       * info.texi (Advanced): Mention C-q, especially with ?.
+
+2006-06-19  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Publishing links): Document the `:link-validation-function'
+       property.
+       (Extensions and Hacking): New chapter, includes some sections of the
+       "Miscellaneous" chapter.
+
+2006-06-10  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Progress logging): New section.
+
+2006-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * viper.texi (Viper Specials):
+       * gnus.texi (Example Setup):
+       * faq.texi (Backspace invokes help):
+       * dired-x.texi (Optional Installation Dired Jump):
+       * calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better
+       follow coding conventions.
+
+2006-05-18  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail.
+
+2006-06-06  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (ASCII export): Document indentation adaptation.
+       (Setting tags): Document mutually-exclusive tags.
+
+2006-06-05  Romain Francoise  <romain@orebokech.com>
+
+       * url.texi (irc): Mention new funs `url-irc-rcirc' and `url-irc-erc'.
+       Fix typo.
+
+       * gnus-faq.texi (Question 8.6): Update reference to the Gnus
+       channel (#gnus@irc.freenode.net).
+       Fix typos.  Update copyright notice.
+
+       * cc-mode.texi (Getting Started, Indentation Commands, Config Basics)
+       (Custom Filling and Breaking, Custom Braces, Syntactic Symbols)
+       (Line-Up Functions, Custom Macros):
+       * ediff.texi (Window and Frame Configuration)
+       (Highlighting Difference Regions, Highlighting Difference Regions):
+       * emacs-mime.texi (Display Customization):
+       * erc.texi (History):
+       * eshell.texi (Known problems):
+       * eudc.texi (Overview, BBDB):
+       * gnus.texi (NNTP, IMAP, Advanced Scoring Examples)
+       (The problem of spam, SpamOracle, Extending the Spam package)
+       (Conformity, Terminology):
+       * idlwave.texi (Routine Info, Routine Info)
+       (Class and Keyword Inheritance, Padding Operators)
+       (Breakpoints and Stepping, Electric Debug Mode)
+       (Examining Variables, Troubleshooting):
+       * org.texi (Creating timestamps):
+       * reftex.texi (Commands, Options, Changes):
+       * tramp.texi (Inline methods, Password caching)
+       (Auto-save and Backup, Issues):
+       * vip.texi (Files, Commands in Insert Mode):
+       * viper.texi (Emacs Preliminaries, States in Viper)
+       (Packages that Change Keymaps, Viper Specials, Groundwork):
+       Fix various typos.
+
+2006-05-31  Michael Ernst  <mernst@alum.mit.edu>
+
+       * ediff.texi: Fix typos.
+
+2006-05-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Small typo fixes.
+
+2006-05-29  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Frequently Asked Questions): Disable zsh zle.
+
+2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * pcl-cvs.texi: Fix typos.
+       (Customization): Say "us".
+
+2006-05-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * org.texi: Remove bogus @setfilename.
+
+2006-05-26  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (ASCII export): Omit command name.
+       (HTML export): Add prefix to all lines in Local Variable example.
+       (Acknowledgments): Typeset names in italics.
+
+2006-05-24  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Plain lists): Add new item navigation commands.
+       (External links): Document elisp and info links.
+       (Custom searches): New section.
+       (Publishing): New chapter.
+       (HTML export): Include a list of supported CSS classes.
+       (Setting tags): Describe the fast-tag-setting interface.
+
+2006-05-20  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * dired-x.texi: ifinfo -> ifnottex.
+
+2006-05-18  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail.
+
+2006-05-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * message.texi (Interface): Add tool bar customization.
+       (MIME): Index and text additions for mml-attach.
+       (MIME): Describe mml-dnd-protocol-alist and
+       mml-dnd-attach-options.
+
+       * gnus.texi (Oort Gnus): Reorder entries in sections.
+       Fix some entries.
+       (Starting Up): Add references to "Emacs for Heathens" and to
+       "Finding the News".  Add user-full-name and user-mail-address.
+       (Group Buffer Format): Add tool bar customization and update.
+       (Summary Buffer): Add tool bar customization.
+       (Posting Styles): Add message-alternative-emails.
+
+2006-05-09  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Filename completion): Improve wording.
+
+2006-05-07  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (Using regular expressions): Fix typo.
+       (Packages that do not come with Emacs): Fix capitalization.
+       (Replacing text across multiple files): Expand node to explain how
+       to use `dired-do-query-replace-regexp' in more detail, based on
+       suggestion by Eric Hanchrow <offby1@blarg.net>.
+
+2006-05-06  Michael Albinus  <michael.albinus@gmx.de>
+
+       * tramp.texi (Filename completion): Completion of remote files'
+       method, user name and host name is active only in partial
+       completion mode.
+
+2006-05-06  Bill Wohler  <wohler@newt.com>
+
+       Release MH-E manual version 8.0.
+
+       * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
+       release 8.0.
+
+2006-05-06  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi (MH-BOOK-HOME): Change from
+       http://www.ics.uci.edu/~mh/book/mh to
+       http://rand-mh.sourceforge.net/book/mh.
+       Replace .htm suffix with .html for MH book files.
+       (Using This Manual): Update key binding for getting relevant
+       chapter in Info from command key.
+       (Ranges): Fix itemx.
+
+2006-05-05  Karl Berry  <karl@gnu.org>
+
+       * texinfo.tex (\definetextfonsizexi, \definetextfonsizex): New cmds.
+       (\fonttextsize): New user-level command to change text font size.
+
+2006-04-26  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * pgg.texi (Caching passphrase): Fix markup and typos.  Simplify.
+
+2006-04-26  Sascha Wilde  <wilde@sha-bang.de>  (tiny change)
+
+       * pgg.texi (Caching passphrase): Add pgg-gpg-use-agent.
+
+2006-04-24  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi (Getting Started): Make it more explicit that you need
+       to install MH.  Add pointers to current MH implementations.
+
+2006-04-21  Bill Wohler  <wohler@newt.com>
+
+       Release MH-E manual version 7.94.
+
+       * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
+       release 7.94.
+
+2006-04-21  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Many small fixes.
+       (Handling links): Rename from "Managing links".
+
+2006-04-20  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Spam Statistics Package): Fix typo in @pxref.
+       (Splitting mail using spam-stat): Fix @xref.
+
+2006-04-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * gnus.texi (Spam Package): Major revision of the text.
+       Previouly this node was "Filtering Spam Using The Spam ELisp Package".
+
+2006-04-20  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Time stamps): Better explanation of the purpose of
+       different time stamps.
+       (Structure editing, Plain lists): More details on how new items
+       and headings are inserted.
+
+2006-04-18  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Formula syntax): Fix link to Calc Manual.
+
+2006-04-17  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Emacsen): Don't support Emacs 20.7 and XEmacs 21.1.
+
+2006-04-17  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi (Folders): Update mh-before-quit-hook and
+       mh-quit-hook example with code that removes the buffers rather
+       than just bury them.
+
+2006-04-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.53.
+
+2006-04-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Updating settings): New section.
+       (Visibility cycling): Better names for the startup folding
+       options.
+       (Exporting): Completely restructured.
+       (The very busy C-c C-c key): New section.
+       (Summary of in-buffer settings): New section.
+
+2006-04-11  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi, gnus-faq.texi, message.texi: Gnus v5.10.8 is released.
+
+2006-04-10  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Misc Group Stuff, Summary Buffer, Article Keymap)
+       (Server Commands): Key `v' is reserved for users.
+
+2006-04-11  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Link format): New section, emphasis on bracket links.
+       (External links): Document bracket links.
+       (FAQ): Expand to cover shell links and the new link format.
+
+2006-04-09  Kevin Ryde  <user42@zip.com.au>
+
+       * org.texi (Formula syntax): Typo in node name of calc-eval xref.
+
+2006-04-07  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Summary Buffer Lines): Add `*'.
+
+2006-04-07  Jochen K\e,A|\e(Bpper  <jochen@fhi-berlin.mpg.de>
+
+       * gnus.texi (Group Parameters):
+       Mention gnus-permanently-visible-groups.
+
+2006-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Face): Fix typo.
+
+2006-04-05  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (X-Face): Clarify.
+       (Face): Need Emacs with PNG support.
+
+2006-04-06  Richard Stallman  <rms@gnu.org>
+
+       * idlwave.texi: Delete the blocks "not suitable for inclusion with
+       Emacs".
+
+2006-04-06  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * idlwave.texi: Updated for IDLWAVE version 6.0, factoring out
+       blocks not suitable for inclusion with Emacs using variable
+       PARTOFEMACS.
+
+2006-04-04  Simon Josefsson  <jas@extundo.com>
+
+       * gnus.texi (Security): Improve.
+
+2006-04-02  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi (Getting Started, Junk, Bug Reports)
+       (MH FAQ and Support): Fix URLs.
+
+2006-03-31  Romain Francoise  <romain@orebokech.com>
+
+       * gnus.texi (Virtual Groups): `nnvirtual-always-rescan' defaults
+       to t, not nil (and has for the past eight years).
+
+2006-03-31  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * message.texi, gnus.texi: Bump version to 5.11.
+
+2006-03-29  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Top): Add comment about version line.
+
+       * message.texi (Top): Ditto.  Change to take named versions into
+       account.
+
+2006-03-28  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Posting Styles): Add x-face-file to example.
+       (X-Face): Refer to posting styles.
+
+       * gnus-faq.texi ([5.8]): Add x-face-file.
+       ([8.4]): Add links to gmane.emacs.gnus.user and
+       gmane.emacs.gnus.general.
+
+2006-03-27  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-faq.texi: Use .invalid.
+       ([5.4]): Fix gnus-posting-styles example.
+
+2006-03-27  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (Emacs/W3): Rename from `w3-mode'.  Mention that
+       Emacs/W3 needs a new maintainer.
+       (Ispell): Update author and version info.
+       (Mailcrypt): Mention PGG.
+       (New in Emacs 22): Add PGG to the list of new packages.
+       Include minor changes from "Ramprasad B" <ramprasad_i82@yahoo.com>
+       updating dead URLs.
+
+2006-03-25  Karl Berry  <karl@gnu.org>
+
+       * ada-mode.texi, autotype.texi, calc.texi, cc-mode.texi, cl.texi,
+       * dired-x.texi, ebrowse.texi, ediff.texi, emacs-mime.texi, erc.texi,
+       * eshell.texi, eudc.texi, faq.texi, forms.texi, gnus.texi, idlwave.texi,
+       * info.texi, message.texi, mh-e.texi, pcl-cvs.texi, pgg.texi,
+       * rcirc.texi, reftex.texi, sc.texi, ses.texi, sieve.texi,
+       * speedbar.texi, url.texi, vip.texi, viper.texi, widget.texi,
+       * woman.texi: (1) use @copyright{} instead of (C) in typeset text;
+       (2) do not indent copyright year list (or anything else).
+
+2006-03-21  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi (Folders): Various edits.
+
+2006-03-20  Romain Francoise  <romain@orebokech.com>
+
+       * gnus.texi (Mail Folders): Grammar fix.
+
+2006-03-19  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi (Replying): Document Mail-Followup-To.
+       Change manually-formatted table to multitable.  Add debugging info.
+       Move description of mh-reply-default-reply-to into paragraph
+       that describes its values.
+
+2006-03-17  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi: Use smallexample and smalllisp consistenly.
+       (Sending Mail Tour): Update method of entering
+       addresses and subject.
+       (Sending Mail Tour, Reading Mail Tour, Processing Mail Tour)
+       (Adding Attachments, Searching): Update screenshots for Emacs 22.
+
+2006-03-15  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version number change only.
+
+2006-03-14  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi: Add index entries around each paragraph rather than
+       depend on entries from beginning of node.  Doing so ensures that
+       index entries are less likely to be forgotten if text is cut and
+       pasted, and are necessary anyway if the references are on a
+       separate page.  It seems that makeinfo is now (v. 4.8) only
+       producing one index entry per node, so there is no longer any
+       excuse not to.  Use subheading instead of heading.  The incorrect
+       use of heading produced very large fonts in Info--as large as the
+       main heading.
+       (From Bill Wohler): MH-E never did appear in Emacs 21--MH-E
+       versions 6 and 7 appeared *around* the time of these Emacs releases.
+
+2006-03-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Clean view): Document new startup options.
+
+2006-03-11  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi (Preface, More About MH-E, Options, HTML, Folders)
+       (Composing, Scan Line Formats): Fix @refs.
+       (Getting Started): Define MH profile and MH profile components.
+       (Incorporating Mail, Reading Mail, Viewing, Printing)
+       (Sending Mail, Forwarding, Editing Drafts, Inserting Letter)
+       (Signature, Aliases, Scan Line Formats): Use @code instead of @samp
+       for string constants.
+       (Tool Bar): Remove spurious quote.
+       (Junk): Use ``...'' instead of "...".
+       (Scan Line Formats): Replace @samp with @kbd.
+
+2006-03-10  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (NoCeM): Mention gnus-use-nocem can also be a number.
+
+2006-03-10  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Fancy Mail Splitting): Improve sentences so as to be
+       easy to understand.
+
+2006-03-09  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi: Markup fix.
+       (Fancy Mail Splitting): Specify new feature.
+
+2006-03-08  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Fancy Mail Splitting): Improve descriptions about
+       partial-words matching.
+
+2006-03-07  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * emacs-mime.texi (Display Customization): Reword image/.* stuff.
+
+       * gnus.texi (Oort Gnus): Add note about `gnus-load'.
+       (MIME Commands): Fix mm-discouraged-alternatives.
+
+2006-03-07  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version number change only.
+
+2006-03-06  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.texi: Move from SourceForge repository to Savannah.
+       This is version 7.93, which is a total rewrite from the previous
+       edition 1.3 for MH-E version 5.0.2, and corresponds to MH-E
+       version 7.93.
+
+2006-03-03  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Oort Gnus): Add `mm-fill-flowed'.
+
+2006-03-01  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Interaction): Add item about `org-mouse.el' by
+       Piotr Zielinski.
+       (Managing links): Document that also mouse-1 can be used to
+       activate a link.
+       (Headlines, FAQ): Add entry about hiding leading stars.
+       (Miscellaneous): Resort the sections in this chapter to a more
+       logical sequence.
+
+2006-02-27  Simon Josefsson  <jas@extundo.com>
+
+       * emacs-mime.texi (Flowed text): Add mm-fill-flowed.  (Sync
+       2004-01-27 from the trunk).
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * cc-mode.texi: Rename c-hungry-backspace to
+       c-hungry-delete-backwards, at the request of RMS.  Leave the old
+       name as an alias.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * cc-mode.texi: Correct the definition of c-beginning-of-defun, to
+       include the function header within the defun.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * cc-mode.texi: Correct two typos.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * cc-mode.texi (Comment Commands): State that C-u M-; kills any
+       existing comment.
+       (Electric Keys): Add a justification for electric indentation.
+       (Hungry WS Deletion): Clear up the names and complications of the
+       BACKSPACE and DELETE keys.
+
+2006-02-23  Juri Linkov  <juri@jurta.org>
+
+       * faq.texi (Common requests): Move `Turning on auto-fill by
+       default' after `Wrapping words automatically'.  Move `Working with
+       unprintable characters' before `Searching for/replacing newlines'.
+       Move `Replacing highlighted text' after `Highlighting a region'.
+       Merge `Repeating commands' and `Repeating a command as many times
+       as possible' into the former.
+       (Packages that do not come with Emacs): Add refs to Gmane and
+       etc/MORE.STUFF.
+
+2006-02-23  Juri Linkov  <juri@jurta.org>
+
+       * faq.texi (Newsgroup archives): Update URLs of GNU mail archives.
+       (Reporting bugs): Suggest using `M-x report-emacs-bug'.
+       Add xref to `(emacs)Reporting Bugs'.
+       (Getting a printed manual): Add URL to other formats of the manual.
+       (Common requests): Fix menu.
+       (Highlighting a region): Remove ref to `Turning on syntax highlighting'.
+       (Horizontal scrolling): Mention `truncate-partial-width-windows'.
+       (Inserting text at the beginning of each line): Add pxref to
+       `Changing the included text prefix'.
+       (Forcing the cursor to remain in the same column): Mention `track-eol'
+       and `set-goal-column'.  Add pxref to `(emacs)Moving Point'.
+       (Replacing text across multiple files): Add keybinding `Q' for
+       `dired-do-query-replace'.
+
+2006-02-22  Carsten Dominik  <dominik@science.uva.nl>
+
+       * reftex.texi: Version number and date change only.
+
+       * org.texi (Internal Links): Rewrite to cover the modified
+       linking system.
+
+2006-02-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * faq.texi: Remove the coding cookie, it's not needed anymore.
+
+2006-02-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * faq.texi (Colors on a TTY): Mention Mac OS port.
+
+2006-02-12  Karl Berry  <karl@gnu.org>
+
+       * faq.texi (Emacs for Atari ST): Use Sch@"auble instead of the
+       8-bit accented a.
+
+2006-02-09  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Gnus Versions): Add history beyond start of Oort.
+
+2006-02-08  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (Top): Remove paragraph about the FAQ being a
+       transitional document, etc.
+       (Searching for/replacing newlines): New node.
+       (Yanking text in isearch): New node.
+       (Inserting text at the beginning of each line): Rename and make
+       more general, mention `M-;' in Message mode.
+
+2006-02-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * faq.texi (Meta key does not work in xterm)
+       (Emacs does not display 8-bit characters)
+       (Inputting eight-bit characters): Update xrefs.
+
+2006-02-06  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (VM): VM now at version 7.19.
+       Set myself as maintainer of this file.
+
+2006-02-04  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi (History): Note that ERC is now included with Emacs.
+
+2006-01-31  Romain Francoise  <romain@orebokech.com>
+
+       * message.texi (Message Headers): Explain what
+       `message-alternative-emails' does in more detail.
+       Update copyright year.
+
+2006-01-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (clean): Add newsticker, sieve, pgg, erc and rcirc.
+
+2006-01-29  Richard M. Stallman  <rms@gnu.org>
+
+       * cc-mode.texi (Indentation Commands): Inserts newline, not "linefeed".
+
+2006-01-29  Michael Olson  <mwolson@gnu.org>
+
+       * makefile.w32-in ($(infodir)/erc, erc.dvi): New targets.
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add ERC.
+
+       * faq.texi (New in Emacs 22): Mention ERC.
+
+2006-01-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * rcirc.texi: Capitalize dir entry for consistency with the entry
+       in info/dir and other entries in the Emacs category.
+       Fix typos.  Delete trailing whitespace.
+
+2006-01-28  Bj\e,Av\e(Brn Lindstr\e,Av\e(Bm  <bkhl@elektrubadur.se>
+
+       * rcirc.texi: Some @cindex changes, some changes from @kbd to @key.
+
+2006-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in ($(infodir)/rcirc, rcirc.dvi): New targets.
+       (INFO_TARGETS, DVI_TARGETS): Add rcirc.
+
+       * Makefile.in (../info/rcirc, rcirc.dvi): New targets.
+       (INFO_TARGETS, DVI_TARGETS): Add rcirc.
+
+2006-01-27  Alex Schroeder  <alex@gnu.org>
+
+       * rcirc.texi: New file.
+
+2006-01-23  Juri Linkov  <juri@jurta.org>
+
+       * widget.texi (User Interface): Add S-TAB for widget-backward.
+
+2006-01-22  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.52.
+
+       * tramp.texi (Frequently Asked Questions): Remove Ange-FTP item.
+       Add Tramp disabling item.  New item for common connection problems.
+       (various): Apply "ftp" as method for the download URL.
+       (Bug Reports): Refer to FAQ for common problems.
+
+2006-01-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * widget.texi (User Interface): Use @key for TAB.
+
+       * ses.texi (Formulas, Printer functions): Use @key for TAB.
+
+       * ebrowse.texi (Switching to Tree, Symbol Completion): Use @key
+       for TAB.
+
+       * cc-mode.texi (Indentation Calculation): Use @key for TAB.
+
+2006-01-16  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi: Update copyright.
+
+2006-01-13  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Article Washing): Additions.
+
+2006-01-08  Alex Schroeder  <alex@gnu.org>
+
+       * pgg.texi (Caching passphrase): Rewording.
+
+2006-01-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Agenda commands): Document tags command.
+
+2006-01-10  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (RSS): Document nnrss-wash-html-in-text-plain-parts.
+
+2006-01-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (RSS): Addition.
+
+2005-12-22  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Summary Post Commands): Fix function bound to `S O p'.
+
+2005-12-19  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-mime.texi (Display Customization): Add setting example to
+       mm-discouraged-alternatives.
+
+2006-01-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * flymake.texi (Obtaining Flymake): Remove chapter since Emacs's
+       version is the canonical version.
+
+2006-01-08  Alex Schroeder  <alex@gnu.org>
+
+       * pgg.texi (Caching passphrase): Rewording.
+
+2006-01-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * flymake.texi (Obtaining Flymake): Update Flymake's CVS
+       repository URL.
+
+2006-01-06  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Removed the accidentally re-added empty line in the
+       direntry.
+
+2006-01-05  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Agenda Views): Chapter reorganized.
+
+2005-12-29  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (Using Customize): New node.
+
+2005-12-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * org.texi: Remove blank line in @direntry.  It is non-standard
+       and recursively produces blank lines all over the dir file (when
+       using Texinfo 4.8).
+
+2005-12-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * widget.texi (atoms): Delete obsolete remark about `file' widget.
+
+2005-12-20  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Tags): Boolean logic documented.
+       (Agenda Views): Document custom commands.
+
+2005-12-20  David Kastrup  <dak@gnu.org>
+
+       * faq.texi (AUCTeX): Update version and mailing list info.
+
+2005-12-17  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (MIME Commands): Mention addition of
+       multipart/alternative to gnus-buttonized-mime-types and add xref
+       to mm-discouraged-alternatives.
+
+       * emacs-mime.texi (Display Customization): Mention addition of
+       "image/.*" and add xref to gnus-buttonized-mime-types in the
+       mm-discouraged-alternatives section.
+
+2005-12-16  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Tags): New section.
+       (Agenda Views): Chapter reorganized.
+
+2005-12-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * org.texi (Internal Links): Add a missing comma after an @xref.
+
+2005-12-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faq.texi (Filling paragraphs with a single space): No need to
+       change sentence-end now.
+
+2005-12-13  Romain Francoise  <romain@orebokech.com>
+
+       * faq.texi (Scrolling only one line): Use `scroll-conservatively'.
+
+2005-12-12  Jay Belanger  <belanger@truman.edu>
+
+       * faq.texi (Calc): Update version number.
+
+2005-12-12  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Progress Logging): New section.
+
+2005-12-10  Romain Francoise  <romain@orebokech.com>
+
+       Update the Emacs FAQ for the 22.1 release.
+
+       * faq.texi: Set VER to `22.1'.
+       (Basic editing): Explain how to use localized versions of the
+       Tutorial.  Mention that `C-h r' displays the manual.  Delete
+       obsolete WWW link to an Emacs 18 tutorial.
+       (Getting a printed manual): Point to the new locations of the
+       manuals on the GNU Web site.
+       (Emacs Lisp documentation): Explain that the Emacs Lisp manual is
+       available via Info (it was previously distributed separately).
+       (Installing Texinfo documentation): The latest version of Texinfo
+       is 4.8, not 4.0.
+       (Informational files for Emacs): COPYING is the GNU General Public
+       License, not the Emacs General Public License.
+       (Informational files for Emacs): Delete obsolete link to the
+       GNUinfo pages as they have been removed from the GNU Web site.
+       (New in Emacs 22): New node.
+       (Setting up a customization file): Say that most packages support
+       Customize nowadays.
+       (Colors on a TTY): Delete reference to instructions on how to
+       enable syntax highlighting, it is now enabled by default.
+       (Turning on abbrevs by default): Emacs now reads the abbrevs file
+       at startup automatically.
+       (Controlling case sensitivity): Mention `M-c' in isearch.
+       (Using an already running Emacs process): Emacs now creates the
+       socket in `/tmp/emacsUID'.  Fix typos.  Change default location of
+       gnuserv.  As emacsclient can now run Lisp code as well, delete a
+       sentence praising gnuserv for that.  Simplify description of how
+       the client/server operation works.
+       (Compiler error messages): Delete obsolete text (compile.el has
+       been rewritten).
+       (Indenting switch statements): Fix typo.
+       (Matching parentheses): Simplify setup instructions, mention the
+       menu bar item in the Options menu.
+       (Repeating a command as many times as possible): Mention `C-x e'.
+       (Going to a line by number): Mention new keymap and bindings
+       `M-g M-g', `M-g M-p' and `M-g M-n'.
+       (Turning on syntax highlighting): Now on by default.  Simplify.
+       (Replacing highlighted text): Use `1', not `t'.
+       (Problems with very large files): The maximum size is now 256MB on
+       32-bit machines.
+       (^M in the shell buffer): Mention `comint-process-echoes'.
+       (Emacs for Apple computers): Emacs 22 has native support for Mac
+       OS X.
+       (Translating names to IP addresses): Delete node.
+       (Binding keys to commands): Fix typo.
+       (SPC no longer completes file names): New node.
+       (MIME with Emacs mail packages): Delete section about the Emacs
+       MIME FAQ (it's not reachable anymore).
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * cc-mode.texi: The manual has been extensively revised: the
+       information about using CC Mode has been separated from the larger
+       and more difficult chapters about configuration.  It has been
+       updated for CC Mode 5.31.
+
+2005-12-05  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * pgg.texi (User Commands): Fix description of pgg-verify-region.
+       (Selecting an implementation): Fix descriptions.
+
+2005-11-30  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * message.texi (Various Message Variables): Addition.
+
+2005-11-29  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * message.texi: Fix default values.
+
+2005-11-25  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * message.texi (Header Commands): Clarify descriptions of
+       message-cross-post-followup-to, message-reduce-to-to-cc, and
+       message-insert-wide-reply.
+       (Various Commands): Fix kindex for message-kill-to-signature;
+       clarify description of message-tab.
+
+2005-11-22  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * message.texi (Mailing Lists): Fix description about MFT.
+
+       * gnus.texi (Emacs Lisp): Use ~/.gnus.el instead of ~/.emacs.
+
+2005-11-17  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Slow Terminal Connection): Replace old description
+       with new one.
+
+2005-11-16  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Oort Gnus): Use ~/.gnus.el instead of ~/.emacs;
+       replace X-Draft-Headers with X-Draft-From.
+
+2005-11-14  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Various Various): Fix the default value of
+       nnheader-max-head-length.
+       (Gnus Versions): Fix typo.
+
+2005-12-08  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Structure editing): Document new functionality of
+       M-RET.
+
+2005-12-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * org.texi (Internal Links): Fix Texinfo usage.
+
+2005-12-06  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (TODO basics): Document the global todo list.
+       (TODO items): Documents sparse tree for specific TODO
+       keywords.
+
+2005-11-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Plain Lists): Typos fixed.
+
+2005-11-28  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Change references of `M-#' to `C-x *' prefix.
+
+2005-11-24  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Structure editing): New item moving commands added.
+       (Plain Lists): New section.
+
+2005-11-18  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (FAQ): Document `org-table-tab-jumps-over-hlines'.
+       (Agenda): Document commands `org-cycle-agenda-files' and
+       `org-agenda-file-to-front'
+       (Built-in table editor): Document `org-table-sort-lines'.
+       (HTML formatting): Export of hand-formatted lists.
+
+2005-11-10  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (XVarious): Fix description of gnus-use-toolbar; add
+       new variable gnus-toolbar-thickness.
+
+2005-11-08  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (XVarious): Revert description of gnus-use-toolbar.
+
+2005-11-07  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (X-Face): Fix description.
+       (XVarious): Remove gnus-xmas-logo-color-alist and
+       gnus-xmas-logo-color-style; fix description of gnus-use-toolbar.
+
+2005-11-01  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Group Parameters): Mention new variable
+       gnus-parameters-case-fold-search.
+       (Home Score File): Addition.
+
+2005-11-04  Ulf Jasper  <ulf.jasper@web.de>
+
+       * newsticker.texi: VERSION changed to 1.9.  Updated UPDATED.
+       (Overview): List supported feed types.
+       (Installation): No installation necessary when using autoload.
+       (Configuration): Rename "RSS" to "news".
+
+2005-11-04  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * pgg.texi (User Commands): Document additional passphrase
+       argument for pgg-encrypt-*, pgg-decrypt-*, and pgg-sign-* functions.
+       (Backend methods): Likewise for corresponding pgg-scheme-* functions.
+
+2005-11-04  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version number changed to 3.19.
+
+2005-10-29  Sascha Wilde  <wilde@sha-bang.de>
+
+       * pgg.texi (How to use): Update the example to add autoload of
+       pgg-encrypt-symmetric-region.
+       (User Commands): Document pgg-encrypt-symmetric-region.
+       (Backend methods): Document pgg-scheme-encrypt-symmetric-region.
+
+2005-10-27  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Predefined Units): Fix the symbol for a TeX points,
+       mention other TeX-related units.
+
+2005-10-23  Lars Hansen  <larsh@soem.dk>
+
+       * dired-x.texi (Miscellaneous Commands): Replace
+       dired-do-relative-symlink by dired-do-relsymlink and
+       dired-do-relative-symlink-regexp by dired-do-relsymlink-regexp.
+
+2005-10-23  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Predefined Units): Use `alpha' for the fine structure
+       constant.
+
+2005-10-23  Michael Albinus  <michael.albinus@gmx.de>
+
+       * faq.texi (Bugs and problems): Replace
+       `dired-move-to-filename-regexp' by
+       `directory-listing-before-filename-regexp'.
+
+2005-10-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * newsticker.texi (UPDATED): Set value.
+
+2005-10-17  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Document Groups): Remove duplicate item.
+
+2005-10-21  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Summary): Mention iCalendar support.
+       (Exporting): Document iCalendar support.
+
+2005-10-18  Romain Francoise  <romain@orebokech.com>
+
+       * viper.texi (Viper Specials): Capitalize GNU.
+
+2005-10-17  Juri Linkov  <juri@jurta.org>
+
+       * info.texi (Getting Started, Search Index, Expert Info):
+       Fix wording.
+       (Search Text): Replace `echo area' with `mode line'.
+       (Search Index): Both `i' and `,' find all index entries.
+       Replace example `C-f' with `C-l' (which exists in index of Info
+       manual) and delete spaces in its keyboard input sequence.
+       Delete unnecessary explanations about literal characters.
+
+2005-10-14  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Document Server Internals): Addition.
+
+2005-10-13  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (A note on namespaces): Fix RFC reference.
+
+2005-10-12  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (RSS): Fix key description.
+
+2005-10-11  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi: Emacs/w3 -> Emacs/W3.
+       (Browsing the Web): Fix description.
+       (Web Searches): Ditto.
+       (Customizing W3): Ditto.
+
+2005-10-07  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Maildir): Clarify expire-age and expire-group.
+
+2005-10-11  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Integration): Mention using `a i' to compute definite
+       integrals.
+
+2005-10-11  Juri Linkov  <juri@jurta.org>
+
+       * info.texi: Rearrange nodes.
+       (Top): Update menu.  Change ref `Info for Experts' to
+       `Advanced Info Commands'.
+       (Getting Started): Fix description of manual's parts.
+       (Help-Int): Change xref `Info Search' to `Search Index', and
+       `Expert Info' to `Advanced'.
+       (Advanced): Move node one level up.
+       (Search Text, Search Index): New nodes split out from `Info Search'.
+       (Go to node, Choose menu subtopic, Create Info buffer): New nodes
+       split out from `Advanced'.
+       (Advanced, Emacs Info Variables): De-document editing an Info file
+       in Info.
+       (Emacs Info Variables): Move node from `Expert Info' to `Advanced'.
+       (Creating an Info File): Delete node and move its text to
+       `Expert Info'.
+
+2005-10-10  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi (Workflow states): Documented that change in keywords
+       becomes active only after restart of Emacs.
+
+2005-10-08  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.51.
+
+2005-10-08  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.texi (Introduction): Describe new location of speedbar
+       on menubar.
+       (Basic Key Bindings): Remove descriptions of bindings that have
+       been removed.
+
+2005-10-05  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.texi (GDB): Describe use of watch expressions.
+
+2005-09-28  Simon Josefsson  <jas@extundo.com>
+
+       * message.texi (IDNA): Fix.
+
+2005-09-28  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (NNTP): Remove nntp-buggy-select, nntp-read-timeout,
+       nntp-server-hook, and nntp-warn-about-losing-connection; fix
+       description of nntp-open-connection-function.
+       (Common Variables): Fix descriptions.
+
+2005-09-26  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Server Buffer Format): Document the %a format spec.
+
+2005-09-22  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Mail): Fix gnus-confirm-mail-reply-to-news entry.
+
+2005-09-23  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi Version 3.16.
+
+2005-09-19  Miles Bader  <miles@gnu.org>
+
+       * newsticker.texi: Get rid of CVS keywords.
+
+2005-09-15  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Finding the Parent): Fix description of how Gnus
+       finds article.
+
+2005-09-14  Jari Aalto  <jari.aalto@cante.net>
+
+       * gnus.texi (Advanced Scoring Examples): New examples to teach how
+       to drop off non-answered articles.
+
+2005-09-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (newsticker.dvi): Use parentheses instead of curly
+       braces (which are unsupported by NMAKE) for macro `srcdir'.
+
+2005-09-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (INFO_TARGETS, DVI_TARGETS): Add newsticker targets.
+       (../info/newsticker, newsticker.dvi): New targets.
+
+2005-09-17  Ulf Jasper  <ulf.jasper@web.de>
+
+       * newsticker.texi: Replace @command with @code.  Replace @example
+       with @lisp.
+       (Top): Added explanations to menu items.
+       (GNU Free Documentation License): Removed.
+
+2005-09-16  Romain Francoise  <romain@orebokech.com>
+
+       Update all files to specify GFDL version 1.2.
+
+       * doclicense.texi (GNU Free Documentation License): Update to
+       version 1.2.
+
+2005-09-15  Richard M. Stallman  <rms@gnu.org>
+
+       * newsticker.texi: Fix @setfilename.
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add newsticker targets.
+       (../info/newsticker, newsticker.dvi): New targets.
+
+2005-08-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version 3.15.
+
+2005-08-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * ses.texi: Combine all three indices into one.
+       Correct a few typos.
+
+2005-08-19  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-mime.texi (time-date): Fix description of safe-date-to-time.
+
+2005-08-18  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-mime.texi (Handles): Remove duplicate item.
+       (Encoding Customization): Fix the default value for
+       mm-coding-system-priorities.
+       (Charset Translation): Emacs doesn't use mm-mime-mule-charset-alist.
+       (Basic Functions): Fix reference.
+
+2005-08-09  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (Charsets): Fj hierarchy uses iso-2022-jp.
+
+2005-08-18  Richard M. Stallman  <rms@gnu.org>
+
+       * faq.texi (Obtaining the FAQ): Delete refs to Lerner's email
+       and web site.
+
+       * faq.texi (Swapping keys): Xref for normal-erase-is-backspace-mode,
+       not keyboard-translate.
+
+2005-08-11  Richard M. Stallman  <rms@gnu.org>
+
+       * faq.texi (Using regular expressions): Fix xref.
+
+2005-08-09  Juri Linkov  <juri@jurta.org>
+
+       * info.texi (Help-P): Replace `Prev' with `Previous'.
+       (Help-M, Help-Xref): Add S-TAB.
+       (Help-FOO): Update `u' command.
+       (Help-Xref): Move info about Mouse-2 from `Help-Int'.
+       Update info about visibility of xref parts.
+       (Help-Int): Fix `m' command.  Rename `Info-last' to
+       `Info-history-back'.  Add `Info-history-forward'.
+       (Advanced): Fix `g*' and `M-n' commands.
+       (Info Search): Add `index-apropos' in stand-alone browser.
+       Add isearch commands.
+       (Emacs Info Variables): Remove `Info-fontify'.
+       Add `Info-mode-hook'.  Update face names.
+       Add `Info-fontify-maximum-menu-size',
+       `Info-fontify-visited-nodes', `Info-isearch-search'.
+
+2005-08-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.50.
+
+       * tramp.texi: Use @option{} consequently for method names.
+       (Inline methods, External transfer methods): Remove references to
+       Cygwin.
+       (Issues with Cygwin ssh): Explain trouble with Cygwin's ssh
+       implementation.
+
+2005-07-27  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Startup Files): Fix name of gnus-site-init-file.
+       Mention that gnus-init-file is not read when Emacs is invoked with
+       --no-init-file or -q.
+
+2005-07-19  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version 3.14.
+
+2005-07-04  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version 3.13.
+
+2005-07-18  Juri Linkov  <juri@jurta.org>
+
+       * calc.texi (Time Zones, Logical Operations):
+       * cl.texi (Overview):
+       * org.texi (TODO types):
+       * sc.texi (Emacs 18 MUAs):
+       * speedbar.texi (Top):
+       * url.texi (History):
+       Delete duplicate duplicate words.
+
+2005-07-16  Johan Bockgard  <bojohan@users.sourceforge.net>  (tiny change)
+
+       * cl.texi (Type Predicates): Document `atom' type.
+
+2005-07-04  Lute Kamstra  <lute@gnu.org>
+
+       Update FSF's address in GPL notices.
+
+       * calc.texi (Copying):
+       * doclicense.texi (GNU Free Documentation License):
+       * faq.texi (Contacting the FSF):
+       * mh-e.texi (Copying): Update FSF's address.
+
+2005-07-03  Richard M. Stallman  <rms@gnu.org>
+
+       * flymake.texi (Example -- Configuring a tool called directly):
+       Update name of flymake-build-relative-filename.
+
+2005-06-29  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (NoCeM): gnus-nocem-verifyer defaults to pgg-verify.
+
+2005-06-29  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version 3.12.
+
+2005-06-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (MAKEINFO): Use --force.
+       (INFO_TARGETS, DVI_TARGETS): Make identical to the lists in
+       Makefile.in.
+       (gnus.dvi): Use "..." to quote Sed args, so that it works with
+       more shells.
+
+2005-06-23  Richard M. Stallman  <rms@gnu.org>
+
+       * speedbar.texi (Creating a display): Texinfo usage fixes.
+
+       * tramp.texi (Customizing Completion, Auto-save and Backup):
+       Texinfo usage fixes.
+
+2005-06-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * dired-x.texi (Miscellaneous Commands):
+       * ediff.texi (Miscellaneous):
+       * gnus.texi (MIME Commands, Fancy Mail Splitting, Agent Visuals)
+       (Agent Variables):
+       * info.texi (Help-Xref):
+       * message.texi (Message Headers):
+       * org.texi (Remember):
+       * reftex.texi (Options (Defining Label Environments)):
+       (Options (Index Support)):
+       (Options (Viewing Cross-References)):
+       (Options (Misc)):
+       (Changes):
+       * speedbar.texi (Creating a display):
+       * tramp.texi (Customizing Completion, Auto-save and Backup):
+       Texinfo usage fix.
+
+2005-06-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version 3.11.
+
+2005-06-12  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Getting Started): Remove extra menu item.
+
+2005-05-31  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Notations Used in This Manual): Use @kbd for key
+       sequence.
+       (Demonstration of Calc): Mention another way of starting Calc.
+       (Starting Calc): Mention long name of M-#.
+       (Embedded Mode Overview): Remove unnecessary instruction.
+       (Other M-# commands): Rephrase `M-# 0' explanation.
+       (Basic Embedded Mode): Rewrite discussion of prefix arguments to
+       reflect current behavior.
+
+2005-05-30  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Hooks): Change description of calc-window-hook and
+       calc-trail-window-hook to match usage.
+       (Computational Functions): Add more constant-generating functions.
+       (Customizable Variables): Use defvar.
+
+2005-05-28  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Assignments in Embedded Mode): Fix variable name.
+       (Basic Embedded Mode): Explain behavior of arguments to
+       calc-embedded-mode.
+
+2005-05-27  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Queries in Keyboard Macros): Rewrite to reflect
+       current behavior.
+
+2005-05-25  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Change Calc version number throughout.
+       (Keypad Mode): Change location in info output.
+       (Keypad mode overview): Move picture of keypad.
+
+2005-05-21  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Storing variables): Mention that only most variables
+       are void to begin with.
+
+2005-05-21  Kevin Ryde  <user42@zip.com.au>
+
+       * widget.texi (Basic Types): Update cross ref from "Enabling
+       Mouse-1 to Follow Links" to "Links and Mouse-1" per recent
+       lispref/text.texi change.
+
+2005-05-20  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version 3.09.
+
+2005-05-18  Carsten Dominik  <dominik@science.uva.nl>
+
+       * reftex.texi: Version 4.28.
+
+2005-05-16  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Storing Variables): Mention `calc-copy-special-constant'.
+
+2005-05-14  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Default Simplifications): Insert missing ! (logical
+       not operator).
+
+2005-05-14  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.49.
+
+2005-05-10  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Default Simplifications): Mention that 0^0 simplifies
+       to 1.
+
+2005-04-29  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Version 3.08, structure reorganized.
+
+2005-04-24  Richard M. Stallman  <rms@gnu.org>
+
+       * faq.texi: Delete info about lazy-lock.el and fast-lock.el.
+
+2005-04-15  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.texi: Update to version 3.06.
+
+2005-04-13  Lute Kamstra  <lute@gnu.org>
+
+       * cc-mode.texi: Prevent creating an unnecessary empty cc-mode.ss file.
+
+2005-04-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * cl.texi (Porting Common Lisp): Fix typo.
+
+2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (RSS): Addition.
+
+2005-04-04  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Change Calc version number.
+       (Customizable variables): Fix description of calc-language-alist.
+       (Copying): Put in version 2 of GPL.
+
+2005-04-01  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Troubleshooting Commands): Remove comment about
+       installation.
+       (Installation): Remove section.
+       (Customizable Variables): New section.
+       (Basic Embedded Mode, Customizing Embedded Mode, Graphics)
+       (Graphical Devices): Add references to Customizable Variables.
+
+2005-03-25  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-mime.texi (Display Customization): Markup fixes.
+       (rfc2047): Update.
+
+2005-03-23  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-faq.texi: Replaced with auto-generated version.
+
+2005-03-26  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
+
+       * dired-x.texi (Multiple Dired Directories): default-directory was
+       renamed to dired-default-directory.
+
+2005-03-26  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Simplifying Formulas, Rewrite Rules):
+       Change description of top and bottom of fraction.
+       (Modulo Forms): Move description of how to create modulo forms to
+       earlier in the section.
+       (Fraction Mode): Suggest using : to get a fraction by dividing.
+       (Basic Arithmetic): Adjust placement of command name.
+       (Truncating the Stack): Emphasize that "hidden" entries are still
+       visible.
+       (Installation): Move discussion of printing manual to "About This
+       Manual".
+       (About This Manual): Mention how to print the manual.
+       (Reporting Bugs): Remove first person.
+       (Building Vectors): Add algebraic version of append.
+       (Manipulating Vectors): Fix algebraic version of calc-reverse-vector.
+       (Grouping Digits): Fix typo.
+
+2005-03-25  Werner Lemberg  <wl@gnu.org>
+
+       * calc.texi, cl.texi, gnus.texi, idlwave.texi, reftex.texi:
+       Replace `legal' with `valid'.
+
+2005-03-25  Werner Lemberg  <wl@gnu.org>
+
+       * calc.texi, reftex.texi: Replace `illegal' with `invalid'.
+
+2005-03-24  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (General Mode Commands)
+       (Mode Settings in Embedded Mode): Add some explanation of
+       recording mode settings.
+
+2005-03-24  Richard M. Stallman  <rms@gnu.org>
+
+       * calc.texi: Remove praise of non-free software.
+
+       * idlwave.texi: Don't say where to get IDL or its non-free manual.
+       (Installation): Node deleted.
+
+2005-03-23  Richard M. Stallman  <rms@gnu.org>
+
+       * url.texi (HTTP language/coding): Improve last change.
+
+2005-03-22  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Embedded Mode): Add new information on changing
+       modes.
+
+2005-03-20  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.48.
+
+       * trampver.texi.in: Replace "Emacs" by "GNU Emacs".
+
+       * tramp.texi: Replace "Emacs" by "GNU Emacs".  Replace "Linux" by
+       "GNU/Linux".  Change all addresses to .gnu.org.
+       (Default Method): Offer shortened syntax for "su" and "sudo"
+       methods.
+
+2005-03-07  Richard M. Stallman  <rms@gnu.org>
+
+       * url.texi: Fix usage of "e.g.".
+       (HTTP language/coding): Explain the rules for these strings.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+       * woman.texi (Introduction): Minor cleanups.
+
+       * url.texi (HTTP language/coding): Get rid of "Emacs 21".
+
+       * pcl-cvs.texi (About PCL-CVS): Get rid of "Emacs 21".
+       (Installation): Node deleted.
+
+       * mh-e.texi (Preface): Get rid of "Emacs 21".
+
+       * eshell.texi (Installation): Delete node (for Emacs 20).
+
+2005-03-05  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * flymake.texi: Refill and tweak style in @lisp blocks.
+
+2005-03-03  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Slow/Expensive Connection): Don't abbreviate "very".
+
+2005-03-01  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Trigonometric and Hyperbolic Functions):
+       Mention additional functions.
+       (Algebraic Simplifications): Mention additional simplifications.
+
+2005-02-18  Jonathan Yavner  <jyavner@member.fsf.org>
+
+       * ses.texi: Add concept/function/variable indices (this work was
+       donated by Brad Collins <brad@chenla.org>, copyright-assignment
+       papers on file at FSF).
+
+2005-02-10  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Change @LaTeX to La@TeX throughout.
+       Redefine @expr as @math for TeX output.
+       Redefine @texline as a no-op for TeX output.
+       Define @tfn, replace @t by @tfn throughout.
+
+2005-02-09  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Add macro for LaTeX for info output.
+
+2005-02-08  Kim F. Storm  <storm@cua.dk>
+
+       * texinfo.tex (LaTex): Add def.
+
+2005-02-06  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (TeX Language Mode): Add mention of LaTeX mode, and
+       change name to "TeX and LaTeX Language Modes."  Mention LaTeX mode
+       throughout manual.
+
+2005-01-28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi: Some edits based on comments from David Abrahams.
+
+2005-01-24  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.texi (RSS): Fix the keystroke.
+
+2005-01-24  David Kastrup  <dak@gnu.org>
+
+       * faq.texi: Update AUCTeX version info.
+
+2005-01-16  Xavier Maillard  <zedek@gnu-rox.org>  (tiny change)
+
+       * gnus-faq.texi ([4.1]): Typo.
+
+2005-01-19  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Keep Arguments): Mention that keeping arguments
+       doesn't work with keyboard macros.
+
+2005-01-16  Richard M. Stallman  <rms@gnu.org>
+
+       * autotype.texi (Autoinserting): Fix small error.
+
+2005-01-16  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.47.
+
+       * tramp.texi (Compilation): New section, describing compilation of
+       remote files.
+
+2005-01-11  Kim F. Storm  <storm@cua.dk>
+
+       * widget.texi (Basic Types): Add :follow-link keyword.
+
+2005-01-09  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Basic Commands): Describe new behavior of calc-reset.
+
+2005-01-08  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Change throughout to reflect new default value of
+       calc-settings-file.
+
+2005-01-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * message.texi (Reply): `message-reply-to-function' should return
+       a list.  Suggested by ARISAWA Akihiro <ari@mbf.ocn.co.jp>.
+
+2005-01-06  Hiroshi Fujishima  <pooh@nature.tsukuba.ac.jp>  (tiny change)
+
+       * faq.texi (Changing load-path): Fix typo.
+
+2005-01-05  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Programming Tutorial): Replace kbd command by
+       appropriate characters for a keyboard macro.
+
+2005-01-04  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Basic Tutorial, Programming Tutorial): Remove caveats
+       for Lucid Emacs.
+       (Programming Tutorial): Mention that the user needs to be in the
+       right mode to compute some functions.
+
+2005-01-04  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Rewrite rules): Remove an exercise (on 0^0) which is
+       no longer applicable.
+
+2005-01-01  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Programming Tutorial): Changed description of how to
+       edit keyboard macros to match current behavior.
+
+2004-12-31  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Mention C-cC-c as the way to finish editing throughout.
+
+2004-12-20  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Types Tutorial): Emphasize that you can't divide by
+       zero.
+
+2004-12-17  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cc-mode.texi (Text Filling and Line Breaking): Put period after
+       @xref.
+       (Font Locking): Avoid @strong{Note:}.
+
+2004-12-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.46.
+
+       * tramp.texi (bottom): Add arch-tag.  It was lost, somehow.
+
+2004-12-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * url.texi: Correct typos.
+       (Retrieving URLs): @var{nil}->@code{nil}.
+       (HTTP language/coding, mailto): Replace  "GNU Emacs Manual" with
+       the standard "The GNU Emacs Manual" in fifth argument of @xref's.
+       (Dealing with HTTP documents): @inforef->@xref.
+
+2004-12-15  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Consistently capitalized all mode names.
+       (Answers to Exercises): Mention that an answer can be a fraction
+       when in Fraction mode.
+
+2004-12-13  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Fix some TeX definitions.
+
+2004-12-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * reftex.texi (Imprint): Remove erroneous @value's.
+
+2004-12-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, $(infodir)/org)
+       (org.dvi, $(infodir)/url, url.dvi, clean): Add org and url manuals.
+
+2004-12-08  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Starting Calc): Remove comment about installation.
+       (Keypad Mode Overview): Remove comment about Emacs 19 support.
+
+2004-12-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * url.texi: Update @setfilename.
+       (Getting Started): No need to worry about Gnus versions.
+       (Dealing with HTTP documents): Use @inforef.
+
+       * org.texi: Fix @direntry file name.
+
+2004-12-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * url.texi: New file.
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/url, url.dvi): Add it.
+
+2004-12-06  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Using Calc): Remove paragraph about installation.
+
+2004-12-06  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi: Use more Texinfo macros and less TeX defs.
+       Remove @refill's.
+
+2004-12-06  Richard M. Stallman  <rms@gnu.org>
+
+       * org.texi: New file.
+
+2004-12-05  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in (org.dvi, ../info/org): New targets.
+       (INFO_TARGETS): Add ../info/org.
+       (DVI_TARGETS): Add org.dvi.
+       (maintainer-clean): Remove the info files in the info dir.
+
+2004-11-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * idlwave.texi: Fix the setfilename directive to put the produced
+       file in ../info.
+       (Continued Statement Indentation): Resurrect Jan D.'s change from
+       2004-11-03 that was lost when a newer version of idlwave.texi was
+       imported.
+
+2004-12-08  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-faq.texi ([5.1]): Added missing bracket.
+
+       * gnus.texi (Filtering Spam Using The Spam ELisp Package): Index
+       `spam-initialize'.
+
+2004-11-22  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * message.texi (Various Message Variables): Mention that all mail
+       file variables are derived from `message-directory'.
+
+       * gnus.texi (Splitting Mail): Clarify bogus group.
+
+2004-11-02  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-mime.texi (Encoding Customization): Fix
+       mm-coding-system-priorities entry.
+
+2004-11-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * idlwave.texi (Continued Statement Indentation):
+       * reftex.texi (Options (Index Support)):
+       (Displaying and Editing the Index, Table of Contents):
+       * speedbar.texi (Creating a display, Major Display Modes): Replace
+       non-nil with non-@code{nil}.
+
+2004-10-21  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Algebraic-Style Calculations): Removed a comment.
+
+2004-10-18  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * calc.texi (Reporting Bugs): Double up `@'.
+
+2004-10-18  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Reporting Bugs): Changed the address that bugs
+       should be sent to.
+
+2004-10-15  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (New Features): Add 5.11.
+
+       * message.texi (Resending): Remove wrong default value.
+
+       * gnus.texi (Mail Source Specifiers): Describe possible problems
+       of `pop3-leave-mail-on-server'.  Add `pop3-movemail' and
+       `pop3-leave-mail-on-server' to the index.
+
+2004-10-15  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * message.texi (Canceling News): Add how to set a password.
+
+2004-10-12  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Help Commands): Changed the descriptions of
+       calc-describe-function and calc-describe-variable to match their
+       current behavior.
+
+2004-10-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-faq.texi ([5.9]): Improve code for reply-in-news.
+
+2004-10-12  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.45.
+
+       * tramp.texi (Frequently Asked Questions): Comment paragraph about
+       plink link.  The URL is outdated.  Originator contacted for
+       clarification.
+
+2004-10-10  Juri Linkov  <juri@jurta.org>
+
+       * gnus.texi (Top, Marking Articles): Join two menus in one node
+       because a node can have only one menu.
+
+2004-10-09  Juri Linkov  <juri@jurta.org>
+
+       * gnus.texi (Fancy Mail Splitting): Remove backslash in the
+       example of nnmail-split-fancy.
+
+2004-10-06  Karl Berry  <karl@gnu.org>
+
+       * info.texi (@kbd{1}--@kbd{9}): No space around --, for
+       consistency with other uses of dashes.
+
+2004-10-05  Karl Berry  <karl@gnu.org>
+
+       * info.texi: Consistently use --- throughout, periods at end of
+       menu descriptions, and a couple typos.
+
+2004-09-26  Jesper Harder  <harder@ifa.au.dk>
+
+       * sieve.texi (Manage Sieve API): nil -> @code{nil}.
+       * pgg.texi (User Commands, Backend methods): Do.
+       * gnus.texi: Markup fixes.
+       (Setting Process Marks): Fix `M P a' entry.
+       * emacs-mime.texi: Fixes.
+
+2004-09-23  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-faq.texi ([5.12]): Fix code example for FQDN in Message-Ids
+       again.
+       Use 5.10 instead of 5.10.0.
+
+2004-09-20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Summary Mail Commands): S D e.
+
+2004-09-20  Raymond Scholz  <ray-2004@zonix.de>  (tiny change)
+
+       * gnus.texi (Misc Article): Refer to `Summary Buffer Mode Line' in
+       the gnus-article-mode-line-format section.
+
+2004-09-20  Helmut Waitzmann  <Helmut.Waitzmann@web.de>  (tiny change)
+
+       * gnus.texi (Various Summary Stuff): Fix the documentation for
+       gnus-newsgroup-variables.
+
+2004-09-20  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (MIME Commands): Added
+       gnus-mime-display-multipart-as-mixed,
+       gnus-mime-display-multipart-alternative-as-mixed,
+       gnus-mime-display-multipart-related-as-mixed.
+       (Mail Source Customization): Clarify `mail-source-directory'.
+       (Splitting Mail): Mention gnus-group-find-new-groups.
+       (SpamOracle): Fixed typo.
+
+       * gnus-faq.texi: Untabify.
+       ([6.3]): nnir.el is in contrib directory.
+
+       * message.texi (News Headers): Clarify how a unique ID is created.
+
+       * gnus.texi (Batching Agents): Fixed typo in example.  Reported
+       by Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>.
+
+2004-09-20  Andre Srinivasan  <andre@e2open.com>
+
+       * gnus.texi (Group Parameters): Added more on hooks.  (Small
+       change.)
+
+2004-09-20  Florian Weimer  <fw@deneb.enyo.de>
+
+       * gnus.texi (Charsets): Point to relevant section in emacs-mime.
+
+2004-09-22  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Vectors as Lists): Added a warning that the tutorial
+       might be hidden during part of the session.
+
+2004-09-20  Jay Belanger  <belanger@truman.edu>
+
+       * calc.texi (Notations Used in This Manual): Put in an earlier
+       mention that DEL could be called Backspace.
+
+2004-09-10  Simon Josefsson  <jas@extundo.com>
+
+       * gnus.texi (IMAP): Add example.  Suggested and partially written
+       by Steinar Bang <sb@dod.no>.
+
+2004-09-10  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * gnus.texi (IMAP): Add comments about imaps synonym to imap in
+       netrc syntax.
+
+2004-09-10  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * gnus.texi (Spam ELisp Package Sequence of Events): Some clarifications.
+       (Spam ELisp Package Global Variables): More clarifications.
+
+2004-09-10  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * gnus.texi (Spam ELisp Package Filtering of Incoming Mail):
+       Mention spam-split does not modify incoming mail.
+
+2004-09-10  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * gnus.texi (Spam ELisp Package Sequence of Events): Fix typo.
+
+2004-09-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (../info/gnus, gnus.dvi): Depend on gnus-faq.texi.
+
+2004-09-09  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * makefile.w32-in (sieve, pgg): Use $(infodir).
+
+2004-09-08  Dhruva Krishnamurthy  <dhruva.krishnamurthy@gmail.com>  (tiny change)
+
+       * makefile.w32-in: Fix PGG and Sieve entries.
+
+2004-08-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * faq.texi (Emacs for MS-DOS): Update URLs for the MS-DOS port of
+       Emacs and related programs.
+
+2004-08-27  Richard M. Stallman  <rms@gnu.org>
+
+       * faq.texi: Fix texinfo usage, esp. doublequotes.
+       (Difference between Emacs and XEmacs): Some clarification.
+
+       * faq.texi (Difference between Emacs and XEmacs):
+       Explain not to contrast XEmacs with GNU Emacs.
+
+2004-08-26  Richard M. Stallman  <rms@gnu.org>
+
+       * faq.texi (Difference between Emacs and XEmacs): Rewrite.
+
+2004-08-22  David Kastrup  <dak@gnu.org>
+
+       * reftex.texi (AUCTeX): Update links, section name.
+
+       * faq.texi (Calc): Update availability (included in 22.1).
+       (AUCTeX): Update availability, information, versions, description.
+
+2004-08-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (../info/tramp, tramp.dvi): Depend on trampver.texi.
+
+2004-08-11  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * cc-mode.texi: Various updates for CC Mode 5.30.9.
+
+2004-08-10  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.44.
+
+2004-08-05  Lars Hansen  <larsh@math.ku.dk>
+
+       * widget.texi (User Interface): Update how to separate the
+       editable field of an editable-field widget from other widgets.
+       (Programming Example): Add text after field.
+
+2004-08-31  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-mime.texi (Encoding Customization): Add a note to the
+       mm-content-transfer-encoding-defaults entry.
+       (rfc2047): Update.
+
+       * gnus.texi (Article Highlighting): Add
+       gnus-cite-ignore-quoted-from.
+       (POP before SMTP): New node.
+       (Posting Styles): Addition.
+       (Splitting Mail): Add nnmail-split-lowercase-expanded.
+       (Fancy Mail Splitting): Ditto.
+       (X-Face): Add gnus-x-face.
+
+2004-08-30  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * emacs-mime.texi, gnus-faq.texi, gnus.texi, message.texi,
+       * pgg.texi, sieve.texi: Use @copying and @insertcopying.
+
+2004-08-22  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Mail Source Specifiers): Describe
+       `pop3-leave-mail-on-server'.
+
+2004-08-02  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * Makefile.in, makefile.w32-in: Added PGG and Sieve files.
+
+       * pgg.texi, sieve.texi: Import from the v5_10 branch of the Gnus
+       repository.  Change setfilename.
+
+       * emacs-mime.texi, gnus-faq.texi, gnus.texi, message.texi: Ditto.
+
+2004-07-02  Juri Linkov  <juri@jurta.org>
+
+       * pcl-cvs.texi (Viewing differences): Add `d r'.
+
+2004-06-29  Jesper Harder  <harder@ifa.au.dk>
+
+       * ses.texi, viper.texi, flymake.texi, faq.texi:
+       * eshell.texi, ediff.texi: Markup fixes.
+
+2004-06-21  Karl Berry  <karl@gnu.org>
+
+       * info.texi (Top): Mention that only Emacs has mouse support.
+       (Getting Started): Mention this in a few other places.
+
+2004-06-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * autotype.texi (Copyrights, Timestamps): Recommend
+       `before-save-hook' instead of `write-file-functions'.
+
+2004-06-13  Lars Hansen  <larsh@math.ku.dk>
+
+       * dired-x.texi (dired-mark-omitted): Update keybinding.
+
+2004-06-10  Kim F. Storm  <storm@cua.dk>
+
+       * pcl-cvs.texi (Viewing differences): Add 'd y'.
+
+2004-06-05  Lars Hansen  <larsh@math.ku.dk>
+
+       * dired-x.texi (variable dired-omit-mode): Rename from
+       dired-omit-files-p.
+       (function dired-omit-mode): Rename from dired-omit-toggle.
+       Call dired-omit-mode rather than set dired-omit-files-p.
+       (dired-mark-omitted): Describe command.
+
+2004-05-29  Michael Albinus  <michael.albinus@gmx.de>
+
+       Version 2.0.41 of Tramp released.
+
+2004-05-29  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in (../info/flymake, flymake.dvi): New targets.
+       (INFO_TARGETS, DVI_TARGETS): Add Flymake.
+
+2004-05-29  Richard M. Stallman  <rms@gnu.org>
+
+       * cl.texi (Top): Call this chapter `Introduction'.
+       (Overview): In TeX, no section heading here.
+
+       * cc-mode.texi: Put commas after i.e. and e.g.  Minor cleanups.
+
+2004-05-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (../info/flymake, flymake.dvi): New targets.
+       (INFO_TARGETS, DVI_TARGETS): Add Flymake.
+
+2004-05-29  Pavel Kobiakov  <pk_at_work@yahoo.com>
+
+       * flymake.texi: New file.
+
+2004-05-28  Simon Josefsson  <jas@extundo.com>
+
+       * smtpmail.texi (Authentication): Improve STARTTLS discussion.
+
+2004-05-07  Kai Grossjohann  <kai@emptydomain.de>
+
+       Version 2.0.40 of Tramp released.
+
+2004-04-25  Michael Albinus  <Michael.Albinus@alcatel.de>
+
+       Complete rework, based on review by Karl Berry <karl@gnu.org>.
+
+       * tramp.texi (Auto-save and Backup): Explain exploitation of new
+       variables `tramp-backup-directory-alist' and
+       `tramp-bkup-backup-directory-info'.
+       (Overview, Connection types)
+       (External transfer methods, Default Method)
+       (Windows setup hints): Remove restriction of password entering
+       with external methods.
+       (Auto-save and Backup): Make file name example
+       (X)Emacs neutral.  In case of XEmacs, `bkup-backup-directory-info'
+       and `auto-save-directory' must be used.
+       (Frequently Asked Questions): Use "MS Windows NT/2000/XP" (not
+       only "NT").  Remove doubled entry "What kinds of systems does
+       @tramp{} work on".
+       (tramp): Macro removed.
+       (Obtaining Tramp): Flag removed from title.
+       (all): "tramp-" and "-" removed from flag names.  Flags `tramp'
+       and `trampver' used properly.  Flag `tramp-inst' replaced by
+       `installchapter'.  Installation related text adapted.
+
+2004-04-28  Masatake YAMATO  <jet@gyve.org>
+
+       * widget.texi (Programming Example): Remove overlays.
+
+2004-04-27  Jesper Harder  <harder@ifa.au.dk>
+
+       * faq.texi, viper.texi, dired-x.texi, autotype.texi: lisp -> Lisp.
+
+2004-04-23  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in: Add "-*- makefile -*-" mode tag.
+
+2004-04-05  Jesper Harder  <harder@ifa.au.dk>
+
+       * info.texi (Info Search): Add info-apropos.
+
+2004-03-22  Juri Linkov  <juri@jurta.org>
+
+       * faq.texi: Fix help key bindings.
+
+2004-03-17  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * info.texi (Advanced): Replace @unnumberedsubsec by @subheading
+       (as suggested by Karl Berry).  Update information about colored
+       stars in menus.  Add new subheading describing M-n.
+
+2004-03-12  Richard M. Stallman  <rms@gnu.org>
+
+       * cl.texi (Top): Rename top node's title.
+
+2004-03-08  Karl Berry  <karl@gnu.org>
+
+       * info.texi: \input texinfo.tex instead of just texinfo, to avoid
+       problems making the texinfo distribution.
+
+2004-02-29  Simon Josefsson  <jas@extundo.com>
+
+       * smtpmail.texi (Authentication): Changed the list of supported
+       authentication mechanisms from CRAM-MD5, PLAIN and LOGIN-MD5 to
+       CRAM-MD5 and LOGIN, tiny patch from Andreas Voegele
+       <voegelas@gmx.net>.
+
+2004-02-29  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in (mostlyclean, clean, maintainer-clean):
+       Use $(DEL) instead of rm, and ignore exit code.
+
+2004-02-29  Kai Grossjohann  <kgrossjo@eu.uu.net>
+
+       Tramp version 2.0.39 released.
+
+2004-02-29  Michael Albinus  <Michael.Albinus@alcatel.de>
+
+       * tramp.texi (Customizing Completion): Explain new functions
+       `tramp-parse-shostkeys' and `tramp-parse-sknownhosts'.
+       (all): Savannah URLs unified to "http://savannah.nongnu.org".
+       (Top): Refer to Savannah mailing list as the major one.  Mention
+       older mailing lists in HTML mode only.
+       (Auto-save and Backup): Add auto-save.  Based on wording of Kai.
+       (Frequently Asked Questions): Remote hosts must not be Unix-like
+       for "smb" method.
+       (Password caching): New node.
+       (External transfer methods): Refer to password caching for "smb"
+       method.
+
+2004-02-17  Karl Berry  <karl@gnu.org>
+
+       * info.texi (Help-Int): Mention the new line number feature.
+
+2004-02-14  Jonathan Yavner  <jyavner@member.fsf.org>
+
+       * ses.texi (Advanced Features): New functionality for
+       ses-set-header-row (defaults to current row unless C-u used).
+       (Acknowledgements): Add Stefan Monnier.
+
+2003-12-29  Kevin Ryde  <user42@zip.com.au>
+
+       * viper.texi (Vi Macros): Fix reference to the Emacs manual.
+
+2003-11-30  Kai Grossjohann  <kai.grossjohann@gmx.net>
+
+       Tramp version 2.0.38 released.
+
+       * tramp.texi (Remote shell setup): Warn of environment variables
+       FRUMPLE if user frumple exists.  Suggested by Sven Gabriel
+       <sven.gabriel@imk.fzk.de>.
+       (Configuration): Tramp now chooses base64/uuencode
+       automatically.  Update wording accordingly.
+       (Top): More description for the `Default Method' menu entry.
+       (Default Method): Use @code, not @var, for Lisp variables.
+       (Default Method): New subsection `Which method is the right one
+       for me?'  Suggested by Christian Kirsch.
+       (Configuration): Pointer to new subsection added.
+       (Default Method): Too many "use" in one sentence.
+       Rephrase.  Reported by Christian Kirsch.
+       (Filename Syntax): Old `su' example is probably a left-over from
+       the sm/su method naming.  Replace with `ssh', instead.
+       (External transfer methods, Auto-save and Backup):
+       Typo fixes.
+
+2003-11-02  Michael Albinus  <Michael.Albinus@alcatel.de>
+
+       * tramp.texi (all): Harmonize all occurences of @tramp{}.
+       (Top): Mention japanese manual only if flag `jamanual' is set.
+       Insert section `Japanese manual' in menu.
+
+2003-11-26  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * eshell.texi (Known Problems): Add doc item.
+
+2003-11-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * cc-mode.texi: Update for CC Mode 5.30.
+
+       Note: Please refrain from doing purely cosmetic changes like
+       removing trailing whitespace in this manual; it clobbers cvs
+       merging for no good reason.
+
+2003-11-02  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
+
+       * man/ediff.texi, man/tramp.texi, man/vip.texi, man/viper.texi:
+       * man/widget.texi, man/woman.texi: Replace @sc{ascii} and ASCII with
+       @acronym{ASCII}.
+
+2003-10-26  Karl Berry  <karl@gnu.org>
+
+       * info.texi (Info Search): Echo area, not echo are.  From Debian
+       diff.
+
+2003-10-26  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * widget.texi (Defining New Widgets): Document new beavior of
+       :buttons and :children keywords.
+
+2003-10-22  Miles Bader  <miles@gnu.org>
+
+       * Makefile.in (info): Move before $(top_srcdir)/info.
+
+2003-10-17  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * tramp.texi (Inline methods): Small grammar fix.
+       (External transfer methods): Likewise.
+
+2003-10-08  Nick Roberts  <nick@nick.uklinux.net>
+
+       * speedbar.texi: Remove paragraph for GUD that is no longer true.
+
+2003-10-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * texinfo.tex: Replace `%' in arch tagline by @ignore.
+
+2003-09-30  Richard M. Stallman  <rms@gnu.org>
+
+       * dired-x.texi (Miscellaneous Commands): Delete M-g, w, T.
+
+       * widget.texi (User Interface): Fix typos.
+
+       * pcl-cvs.texi, cl.texi, woman.texi, ediff.texi: Fix @strong{Note:}.
+
+2003-09-29  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * pcl-cvs.texi (Selected Files): Fix typo.
+
+2003-09-21  Karl Berry  <karl@gnu.org>
+
+       * info.texi (] and [ commands): No period at end of section title.
+
+2003-09-04  Miles Bader  <miles@gnu.org>
+
+       * Makefile.in (top_srcdir): New variable.
+       ($(top_srcdir)/info): New rule.
+       (info): Depend on it.
+
+2003-09-03  Peter Runestig  <peter@runestig.com>
+
+       * makefile.w32-in: New file.
+
+2003-08-26  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * widget.texi (User Interface): Explain the need of static text
+       around an editable field.
+
+2003-08-19  Luc Teirlinck  <teirllm@mail.auburn.edu>
+
+       * widget.texi (Basic Types): The argument to `:help-echo' can now
+       be a form that evaluates to a string.
+
+2003-08-18  Kim F. Storm  <storm@cua.dk>
+
+       * calc.texi (Queries in Macros): Update xref to keyboard macro query.
+
+2003-08-16  Richard M. Stallman  <rms@gnu.org>
+
+       * dired-x.texi (Shell Command Guessing): Explain *.
+
+2003-08-16  Chunyu Wang  <spr@db.cs.hit.edu.cn>  (tiny change)
+
+       * pcl-cvs.texi (Log Edit Mode): Fix key binding for
+       log-edit-insert-changelog.
+
+2003-08-03  Karl Berry  <karl@gnu.org>
+
+       * info.texi: Need @contents.
+
+2003-07-20  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
+
+       Tramp version 2.0.36 released.
+
+       * tramp.texi (Remote shell setup): Explain about problems with
+       non-Bourne commands in ~/.profile and ~/.shrc.
+
+2003-07-07  Luc Teirlinck  <teirllm@mail.auburn.edu>
+
+       * info.texi (Help-Inv, Help-M, Help-Xref): Update following
+       renaming of `vis-mode' to `visible-mode'.
+
+2003-07-04  Luc Teirlinck  <teirllm@mail.auburn.edu>
+
+       * info.texi (Top, Help-Small-Screen): Remove accidentally added
+       next, prev and up pointers.
+
+2003-07-02  Luc Teirlinck  <teirllm@mail.auburn.edu>
+
+       * info.texi (Help): Mention existence of Emacs and stand-alone
+       Info at the very beginning of the tutorial.
+       (Help-Inv): New node.
+       (Help-]): New node.
+       (Help-M): Systematically point out the differences between default
+       Emacs and stand-alone versions.  Delete second menu.
+       (Help-Xref): Systematically point out the differences between
+       default Emacs and stand-alone versions.
+       (Help-Int): Change `l' example.
+       (Expert Info): Fix typos.
+       (Emacs Info Variables): Mention `Info-hide-note-references' and
+       new default for `Info-scroll-prefer-subnodes'.
+
+2003-06-17  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
+
+       Version 2.0.35 of Tramp released.
+
+       * tramp.texi: From Michael Albinus <Michael.Albinus@alcatel.de>:
+       (Inline methods): Add methods `remsh' and `plink1'.
+       (External transfer methods): Add method `remcp'.
+       (Multi-hop Methods): Add method `remsh'.
+       Small patch from Adrian Aichner <adrian@xemacs.org>:
+       Fix minor typos.
+       (Concept Index): Added to make manual searchable via
+       `Info-index'.
+       (Version Control): Add cindex entry.
+
+2003-05-24  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
+
+       * trampver.texi: Version 2.0.34 released.
+
+2003-05-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * faq.texi: Improve previous changes.
+
+2003-05-02  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * faq.texi: Update copyright and maintenance details.
+       Update some package URLs, versions, and maintainers.
+       Remove many references to the Emacs Lisp Archive.
+
+2003-04-23  Simon Josefsson  <jas@extundo.com>
+
+       * smtpmail.texi: Fix license (the invariant sections mentioned has
+       never been part of the smtp manual).  Align info dir entry with
+       other emacs packages.
+
+2003-04-08  Michael Albinus  <Michael.Albinus@alcatel.de>
+
+       * tramp.texi: Version 2.0.33 released.
+       Remove installation chapter.  Remove XEmacs specifics.
+
+2003-03-29  Richard M. Stallman  <rms@gnu.org>
+
+       * tramp.texi (Top): Undo the previous renaming.
+       (emacs-other-name, emacs-other-dir, emacs-other-file-name): Delete.
+
+2003-03-29  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
+
+       * Makefile.in (../info/tramp): Compile Emacs, instead of XEmacs,
+       version of manual.
+
+       * tramp.texi (Auto-save and Backup): New node.
+
+2003-03-29  Michael Albinus  <Michael.Albinus@alcatel.de>
+
+       * tramp.texi (Top): Include trampver.texi.  Rename "Emacs" to "GNU
+       Emacs" in order to have better differentiation to "XEmacs".
+       `emacs-other-name', `emacs-other-dir' and `emacs-other-file-name'
+       are new macros in order to point to the other Emacs flavor where
+       appropriate.  In info case, point to node `Installation' in order
+       to explain how to generate the other way.  In html case, make a
+       link to the other html file.
+       (Obtaining TRAMP): Added a paragraph saying to perform `autoconf'
+       after CVS checkout/update.
+       (Installation): Completely rewritten.
+       (Installation parameters, Load paths): New sections under
+       `Installation'.
+
+2003-02-28  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
+
+       * tramp.texi: Version 2.0.30 released.
+       Replace word "path" with "localname" where used as a component of
+       a Tramp file name.
+
+2003-02-28  Michael Albinus  <Michael.Albinus@alcatel.de>
+
+       * tramp.texi (Frequently Asked Questions): `tramp-chunksize'
+       introduced.
+       (Installation): Explain what to do if files from the tramp/contrib
+       directory are needed.
+
+2003-02-23  Alex Schroeder  <alex@emacswiki.org>
+
+       * smtpmail.texi (How Mail Works): New.
+
+2003-02-22  Alex Schroeder  <alex@emacswiki.org>
+
+       * smtpmail.texi: New file.
+
+       * Makefile.in: Build SMTP manual.
+
+2003-02-05  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
+
+       * tramp.texi: Version 2.0.29 released.
+       (Installation): In Emacs, use M-x texinfo-format-buffer RET, not
+       M-x makeinfo-buffer RET.  Reported by gebser@ameritech.net.
+
+2003-02-01  Michael Albinus  <Michael.Albinus@alcatel.de>
+
+       * tramp.texi (Frequently Asked Questions): Explain a workaround if
+       another package loads accidently Ange-FTP.
+
+2003-01-24  Michael Albinus  <Michael.Albinus@alcatel.de>
+
+       * tramp.texi (Customizing Completion): Add function
+       `tramp-parse-sconfig'.  Change example of
+       `tramp-set-completion-function', because parsing of ssh config
+       files looks more natural.
+
+2003-01-15  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi: Do not use `path' in several locations.
+
+2002-12-26  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
+
+       * tramp.texi (External transfer methods): New method `smb'.  From
+       Michael Albinus.
+
+2002-11-05  Karl Berry  <karl@gnu.org>
+
+       * info.texi (Info-fontify): Reorder face list to avoid bad line
+       breaks.
+
+2002-10-06  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * tramp.texi: Move @copying to standard place.  Use
+       @insertcopying.
+
+2002-10-02  Karl Berry  <karl@gnu.org>
+
+       * (ada-mode.texi autotype.texi calc.texi cc-mode.texi cl.texi
+       dired-x.texi ebrowse.texi ediff.texi emacs-mime.texi
+       eshell.texi eudc.texi faq.texi forms.texi idlwave.texi info.texi
+       message.texi mh-e.texi pcl-cvs.texi reftex.texi sc.texi ses.texi
+       speedbar.texi vip.texi viper.texi widget.texi woman.texi):
+       Per rms, update all manuals to use @copying instead of @ifinfo.
+       Also use @ifnottex instead of @ifinfo around the top node, where
+       needed for the sake of the HTML output.
+       (The Gnus manual is not fixed since it's not clear to me how it
+       works; and the Tramp manual already uses @copying, although in an
+       unusual way.  All others were changed.)
+
+2002-09-10  Jonathan Yavner  <jyavner@engineer.com>
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add SES.
+       (../info/ses, ses.dvi): New targets.
+       * ses.texi: New file.
+
+2002-09-06  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * texinfo.tex: Update to texinfo 4.2.
+
+2002-08-27  Carsten Dominik  <dominik@sand.science.uva.nl>
+
+       * reftex.texi: Update to RefTeX 4.19.
+
+2002-06-17  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add Tramp.
+       (../info/tramp, tramp.dvi): New targets.
+
+2002-01-04  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (DVI_TARGETS): Add calc.dvi.
+       (calc.dvi): Uncomment.
+
+2001-11-07  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (INFO_TARGETS): Add ../info/calc.
+       (../info/calc): New target.
+
+2001-10-20  Gerd Moellmann  <gerd@gnu.org>
+
+       * (Version 21.1 released.)
+
+2001-10-05  Gerd Moellmann  <gerd@gnu.org>
+
+       * Branch for 21.1.
+
+2001-04-14  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (../info/info): Use an explicit -o switch to
+       makeinfo.
+
+2001-03-05  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile.in (mostlyclean, maintainer-clean): Delete more files.
+
+2000-12-20  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (../info/idlwave): Use --no-split.
+
+2000-12-14  Dave Love  <fx@gnu.org>
+
+       * Makefile.in (mostlyclean): Remove gnustmp.*
+       (gnus.dvi): Change rule to remove @latex stuff.
+
+2000-10-19  Eric M. Ludlam  <zappo@ultranet.com>
+
+       * Makefile.in (Speedbar): Add build targets for speedbar.texi.
+
+2000-10-13  John Wiegley  <johnw@gnu.org>
+
+       * Makefile.in: Add build targets for eshell.texi.
+
+2000-09-25  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile.in: Remove/comment speedbar stuff.
+
+2000-09-22  Dave Love  <fx@gnu.org>
+
+       * Makefile.in: Add emacs-mime.
+
+2000-08-08  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (INFO_TARGETS): Add ../info/woman.
+       (DVI_TARGETS): Add woman.dvi.
+       (../info/woman, woman.dvi): New targets.
+
+2000-05-31  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * .cvsignore (*.tmp): New entry.  Seems to be used for @macro.
+
+       * pcl-cvs.texi: New file.
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS: Add pcl-cvs.
+       (../info/pcl-cvs, pcl-cvs.dvi): New targets.
+
+2000-05-11  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile.in (INFO_TARGETS): Add info/ebrowse.
+       (../info/ebrowse, ebrowse.dvi): New targets.
+
+2000-01-13  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile.in (INFO_TARGETS): Add eudc.
+       (DVI_TARGETS): Add eudc.dvi.
+       (../info/eudc, eudc.dvi): New targets.
+
+2000-01-05  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (INFO_TARGETS): Rename emacs-faq to efaq (for
+       compatibility with 8+3 filesystems).
+       (../info/efaq): Rename from emacs-faq.
+
+2000-01-03  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add idlwave.
+       (../info/idlwave, idlwave.dvi): New targets.
+
+1999-10-23  Dave Love  <fx@gnu.org>
+
+       * Makefile.in: Use autotype.texi.
+
+1999-10-12  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * Makefile.in (faq): Use ../info/emacs-faq.info (as specified in the
+       faq.texi file) rather than ../info/faq.
+
+1999-10-07  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add ada-mode.
+       (../info/ada-mode, ada-mode.dvi): New targets.
+
+1999-09-01  Dave Love  <fx@gnu.org>
+
+       * Makefile.in: Add faq.
+
+1999-07-12  Richard Stallman  <rms@gnu.org>
+
+       * Version 20.4 released.
+
+1998-08-19  Richard Stallman  <rms@psilocin.ai.mit.edu>
+
+       * Version 20.3 released.
+
+1998-04-06  Andreas Schwab  <schwab@gnu.org>
+
+       * Makefile.in (ENVADD): Enviroment vars to pass to texi2dvi.  Use
+       it in dvi targets.
+       (../etc/GNU): Change to $(srcdir) first.
+
+1998-03-11  Carsten Dominik  <cd@delysid.gnu.org>
+
+       * reftex.texi: Update for RefTeX version 3.22.
+
+1998-02-08  Richard Stallman  <rms@psilocin.gnu.org>
+
+       * Makefile.in (reftex.dvi, ../info/reftex): New targets.
+       (INFO_TARGETS, DVI_TARGETS): Add the new targets.
+
+1997-09-23  Paul Eggert  <eggert@twinsun.com>
+
+       * Makefile.in: Merge changes mistakenly made to `Makefile'.
+       (../info/viper, viper.dvi): Remove dependency on viper-cmd.texi.
+
+1997-09-19  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
+
+       * Version 20.2 released.
+
+1997-09-15  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
+
+       * Version 20.1 released.
+
+1997-07-10  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
+
+       * Makefile (../info/viper, viper.dvi): Delete viper-cmd.texi dep.
+
+1996-08-11  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
+
+       * Version 19.33 released.
+
+1996-07-31  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
+
+       * Version 19.32 released.
+
+1996-06-27  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * Makefile.in: Add rules for the Message manual.
+
+1996-06-26  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi: New version.
+
+       * message.texi: New manual.
+
+1996-06-20  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
+
+       * Makefile.in (All info targets): cd $(srcdir) to do the work.
+
+1996-06-19  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
+
+       * Makefile.in (All info targets): Specify $(srcdir) in input files.
+       Specify -I option.
+       (All dvi targets): Set the TEXINPUTS variable.
+
+1996-05-25  Karl Heuer  <kwzh@gnu.ai.mit.edu>
+
+       * Version 19.31 released.
+
+1996-01-07  Richard Stallman  <rms@whiz-bang.gnu.ai.mit.edu>
+
+       * Makefile.in (../info/ccmode): Rename from ../info/cc-mode.
+       (INFO_TARGETS): Use new name.  This avoids name conflict on MSDOS.
+
+1995-11-29  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Makefile.in (../info/cc-mode, cc-mode.dvi): New targets.
+       (INFO_TARGETS): Add ../info/cc-mode.
+       (DVI_TARGETS): Add cc-mode.dvi.
+
+1996-05-25  Karl Heuer  <kwzh@gnu.ai.mit.edu>
+
+       * Version 19.31 released.
+
+1995-11-24  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Version 19.30 released.
+
+1995-11-04  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi: New file.
+
+1995-11-04  Erik Naggum  <erik@naggum.no>
+
+       * gnus.texi: File deleted.
+
+1995-11-02  Stephen Gildea  <gildea@stop.mail-abuse.org>
+
+       * mh-e.texi: "Function Index" -> "Command Index" to work with
+       Emacs 19.30 C-h C-k support of separately-documented commands.
+
+1995-06-26  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Makefile.in (../info/ediff, ediff.dvi): New targets.
+       (INFO_TARGETS, DVI_TARGETS): Add those new targets.
+
+1995-04-24  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add viper targets.
+       (../info/viper, viper.dvi): New targets.
+
+1995-04-20  Kevin Rodgers  <kevinr@ihs.com>
+
+       * dired-x.texi (Installation): Change the example to set
+       buffer-local variables like dired-omit-files-p in
+       dired-mode-hook.
+
+1995-04-17  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add mh-e targets.
+       (../info/mh-e, mh-e.dvi): New targets.
+
+1995-02-07  Richard Stallman  <rms@pogo.gnu.ai.mit.edu>
+
+       * Makefile.in (maintainer-clean): Rename from realclean.
+
+1994-11-23  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Makefile.in: New file.
+       * Makefile: File deleted.
+
+1994-11-19  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Makefile (TEXINDEX_OBJS): Variable deleted.
+       (texindex, texindex.o, getopt.o): Rules deleted.
+       All deps on texindex deleted.
+       (distclean): Don't delete texindex.
+       (mostlyclean): Don't delete *.o.
+       * texindex.c, getopt.c: Files deleted.
+
+1994-09-07  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
+
+       * Version 19.26 released.
+
+1994-05-30  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Version 19.25 released.
+
+1994-05-23  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Version 19.24 released.
+
+1994-05-16  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Version 19.23 released.
+
+1994-04-17  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile: Delete spurious tab.
+
+1994-02-16  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (.SUFFIXES): New rule.
+
+1994-01-15  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (dired-x.dvi, ../info/dired-x): New targets.
+       (INFO_TARGETS, DVI_TARGETS): Add the new targets.
+
+1994-01-08  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (../info/sc): Rename from sc.info.
+       (../info/cl): Likewise.
+       (INFO_TARGETS): Use new names.
+
+1993-12-04  Richard Stallman  (rms@srarc2)
+
+       * getopt.c: New file.
+       * Makefile (TEXINDEX_OBJS): Use getopt.o in this dir, not ../lib-src.
+       (getopt.o): New rule.
+       (dvi): Don't depend on texindex.
+       (cl.dvi, forms.dvi, vip.dvi, gnus.dvi, sc.dvi):
+       Depend on texindex.
+
+1993-12-03  Richard Stallman  (rms@srarc2)
+
+       * Makefile (../info/sc.info): Rename from ../info/sc.
+       (TEXI2DVI): New variable.
+       (cl.dvi forms.dvi, sc.dvi, vip.dvi, gnus.dvi, info.dvi):
+       Add explicit commands.
+       (TEXINDEX_OBJS): Delete duplicate getopt.o.
+
+1993-11-27  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Version 19.22 released.
+
+1993-11-18  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (TEXINDEX_OBJS): Delete spurious period.
+
+1993-11-16  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Version 19.21 released.
+
+1993-11-15  Paul Eggert  (eggert@twinsun.com)
+
+       * man/Makefile (../info/cl.info): Rename from ../info/cl.
+
+1993-11-15  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (../etc/GNU): New target.
+       (EMACSSOURCES): Add gnu1.texi.
+
+1993-11-14  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile (realclean): Don't delete the Info files.
+
+1993-10-25  Brian Fox  (bfox@albert.gnu.ai.mit.edu)
+
+       * forms.texi: Fix forms.texi so that it will format correctly.
+       Add missing `@end iftex', fix bad reference.
+
+       * info.texi, info-stn.texi: New files implement texinfo version of
+       `info' file.
+
+1993-10-20  Brian Fox  (bfox@ai.mit.edu)
+
+       * Makefile: Fix targets for texindex, new info.texi files.
+       * info-stnd.texi: New file implements info for standalone info
+       reader.
+       * info.texi: Update to include recent changes to "../info/info".
+       New source file for ../info/info; includes info-stnd.texi.
+
+       * texindex.c: Include "../src/config.h" if building in emacs.
+
+       * Makefile: Change all files to FILENAME.texi, force all targets
+       to be FILENAME, not FILENAME.info.  This changes sc.texinfo,
+       vip.texinfo, forms.texinfo, cl.texinfo.
+       Add target to build texindex.c, defining `emacs'.
+
+       * forms.texi: Install new file to match version 2.3 of forms.el.
+
+1993-08-14  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Version 19.19 released.
+
+1993-08-10  Simon Leinen  (simon@lia.di.epfl.ch)
+
+       * sc.texinfo: Fix info file name.
+
+       * Makefile (info): Add gnus and sc.
+       (dvi): Add gnus.dvi and sc.dvi.
+       (../info/sc, sc.dvi): New targets.
+
+1993-08-08  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Version 19.18 released.
+
+1993-07-20  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Makefile: Fix source file names of the separate manuals.
+       (gnus.dvi, ../info/gnus): New targets.
+
+1993-07-18  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * Version 19.17 released.
+
+1993-07-10  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+
+       * split-man: Fix typos in last change.
+
+1993-07-06  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
+
+       * Version 19.16 released.
+
+1993-06-19  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * version 19.15 released.
+
+1993-06-18  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
+
+       * Makefile (distclean): It's rm, not rf.
+
+1993-06-17  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * Version 19.14 released.
+
+1993-06-16  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * Makefile: New file.
+
+1993-06-08  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * Version 19.13 released.
+
+1993-05-27  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
+
+       * Version 19.9 released.
+
+1993-05-25  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
+
+       * Version 19.8 released.
+
+1993-05-22  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
+
+       * Version 19.7 released.
+
+1990-08-30  David Lawrence  (tale@pogo.ai.mit.edu)
+
+       * gnus.texinfo: New file.  Removed installation instructions.
+
+1990-05-25  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
+
+       * texindex.tex: If USG, include sys/types.h and sys/fcntl.h.
+
+1989-01-17  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
+
+       * texinfo.tex: Change spelling of `\sc' font to `\smallcaps' and
+       then define `\sc' as the command for smallcaps in Texinfo.  This
+       means that the @sc command will produce small caps.  bfox has
+       made the corresponding change to makeinfo and texinfm.el.
+
+1988-08-16  Robert J. Chassell  (bob@frosted-flakes.ai.mit.edu)
+
+       * vip.texinfo: Remove menu entry Adding Lisp Code in node
+       Customization since the menu entry did not point to anything.
+       Also add an @finalout command to remove overfull hboxes from the
+       printed output.
+
+       * cl.texinfo: Add @bye, \input line and @settitle to file.
+       This file is clearly intended to be a chapter of some other work,
+       but the other work does not yet exist.
+
+1988-07-25  Robert J. Chassell  (bob@frosted-flakes.ai.mit.edu)
+
+       * texinfo.texinfo: Three typos corrected.
+
+;; Local Variables:
+;; coding: iso-2022-7bit
+;; fill-column: 79
+;; add-log-time-zone-rule: t
+;; End:
+
+    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
+      2003, 2004, 2005, 2006, 2007 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, 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; see the file COPYING.  If not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301, USA.
+
+;; arch-tag: 08b2903e-900c-4c72-a4a9-e76416a80803
similarity index 57%
rename from man/Makefile.in
rename to doc/misc/Makefile.in
index 00088b74b5140a8f5b3c0e708d5684436a4d1e44..65caeb77ecbf40ace20b3c775c9b40b31708f2bf 100644 (file)
@@ -1,4 +1,4 @@
-#### Makefile for the Emacs Manual and other documentation.
+#### Makefile for documentation other than the Emacs manual.
 
 # Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
 #   2004, 2005, 2006, 2007 Free Software Foundation, Inc.
@@ -20,7 +20,8 @@
 # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 # Boston, MA 02110-1301, USA.
 
-# Where to find the source code.  $(srcdir) will be the man
+
+# Where to find the source code.  $(srcdir) will be the man-aux
 # subdirectory of the source tree.  This is
 # set by the configure script's `--srcdir' option.
 srcdir=@srcdir@
@@ -29,177 +30,210 @@ top_srcdir=@top_srcdir@
 # Tell make where to find source files; this is needed for the makefiles.
 VPATH=@srcdir@
 
+## Where the output files go.
+## Note that the setfilename command in the .texi files assumes this.
+infodir=../../info
 
 # The makeinfo program is part of the Texinfo distribution.
 # Use --force so that it generates output even if there are errors.
 MAKEINFO = makeinfo --force
-INFO_TARGETS = ../info/emacs ../info/ccmode ../info/cl \
-               ../info/dired-x ../info/ediff ../info/forms ../info/gnus \
-               ../info/message ../info/sieve ../info/pgg ../info/emacs-mime \
-               ../info/info ../info/mh-e ../info/reftex \
-               ../info/sc ../info/vip ../info/viper ../info/widget \
-               ../info/efaq ../info/ada-mode ../info/autotype ../info/calc \
-               ../info/idlwave ../info/eudc ../info/ebrowse ../info/pcl-cvs \
-               ../info/woman ../info/eshell ../info/org ../info/url \
-               ../info/speedbar ../info/tramp ../info/ses ../info/smtpmail \
-               ../info/flymake ../info/newsticker ../info/rcirc ../info/erc
-DVI_TARGETS =  emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
-                ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
-                 gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
-                reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.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 emacs-xtra.dvi rcirc.dvi erc.dvi
-INFOSOURCES = info.texi
+
+INFO_TARGETS = \
+       $(infodir)/ada-mode \
+       $(infodir)/autotype \
+       $(infodir)/calc \
+       $(infodir)/ccmode \
+       $(infodir)/cl \
+       $(infodir)/dired-x \
+       $(infodir)/ebrowse \
+       $(infodir)/ediff \
+       $(infodir)/emacs-mime \
+       $(infodir)/erc \
+       $(infodir)/eshell \
+       $(infodir)/eudc \
+       $(infodir)/efaq \
+       $(infodir)/flymake \
+       $(infodir)/forms \
+       $(infodir)/gnus \
+       $(infodir)/idlwave \
+       $(infodir)/info \
+       $(infodir)/message \
+       $(infodir)/mh-e \
+       $(infodir)/newsticker \
+       $(infodir)/org \
+       $(infodir)/pcl-cvs \
+       $(infodir)/pgg \
+       $(infodir)/rcirc \
+       $(infodir)/reftex \
+       $(infodir)/sc \
+       $(infodir)/ses \
+       $(infodir)/sieve \
+       $(infodir)/smtpmail \
+       $(infodir)/speedbar \
+       $(infodir)/tramp \
+       $(infodir)/url \
+       $(infodir)/vip \
+       $(infodir)/viper \
+       $(infodir)/widget \
+       $(infodir)/woman
+
+DVI_TARGETS = \
+       ada-mode.dvi \
+       autotype.dvi \
+       calc.dvi \
+       cc-mode.dvi \
+       cl.dvi \
+       dired-x.dvi \
+       ebrowse.dvi \
+       ediff.dvi \
+       emacs-mime.dvi \
+       erc.dvi \
+       eshell.dvi \
+       eudc.dvi \
+       faq.dvi \
+       flymake.dvi \
+       forms.dvi \
+       gnus.dvi \
+       idlwave.dvi \
+       info.dvi \
+       message.dvi \
+       mh-e.dvi \
+       newsticker.dvi \
+       org.dvi \
+       pcl-cvs.dvi \
+       pgg.dvi \
+       rcirc.dvi \
+       reftex.dvi \
+       sc.dvi \
+       ses.dvi \
+       sieve.dvi \
+       smtpmail.dvi \
+       speedbar.dvi \
+       tramp.dvi \
+       url.dvi \
+       vip.dvi \
+       viper.dvi \
+       widget.dvi \
+       woman.dvi
+
+
+TEXI2DVI = texi2dvi
 
 # The following rule does not work with all versions of `make'.
 .SUFFIXES: .texi .dvi
 .texi.dvi:
-       texi2dvi $<
+       $(TEXI2DVI) $<
 
-TEXI2DVI = texi2dvi
 ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
 
-EMACS_XTRA=\
-       $(srcdir)/arevert-xtra.texi \
-       $(srcdir)/cal-xtra.texi \
-       $(srcdir)/dired-xtra.texi \
-       $(srcdir)/picture-xtra.texi \
-       $(srcdir)/emerge-xtra.texi \
-       $(srcdir)/vc-xtra.texi \
-       $(srcdir)/vc1-xtra.texi \
-       $(srcdir)/vc2-xtra.texi \
-       $(srcdir)/fortran-xtra.texi \
-       $(srcdir)/msdog-xtra.texi
-
-EMACSSOURCES= \
-       ${srcdir}/emacs.texi \
-       ${srcdir}/doclicense.texi \
-       ${srcdir}/gpl.texi \
-       ${srcdir}/screen.texi \
-       ${srcdir}/commands.texi \
-       ${srcdir}/entering.texi \
-       ${srcdir}/basic.texi \
-       ${srcdir}/mini.texi \
-       ${srcdir}/m-x.texi \
-       ${srcdir}/help.texi \
-       ${srcdir}/mark.texi \
-       ${srcdir}/killing.texi \
-       ${srcdir}/regs.texi \
-       ${srcdir}/display.texi \
-       ${srcdir}/search.texi \
-       ${srcdir}/fixit.texi \
-       ${srcdir}/files.texi \
-       ${srcdir}/buffers.texi \
-       ${srcdir}/windows.texi \
-       ${srcdir}/frames.texi \
-       ${srcdir}/mule.texi \
-       ${srcdir}/major.texi \
-       ${srcdir}/indent.texi \
-       ${srcdir}/text.texi \
-       ${srcdir}/programs.texi \
-       ${srcdir}/building.texi \
-       ${srcdir}/maintaining.texi \
-       ${srcdir}/abbrevs.texi \
-       ${srcdir}/sending.texi \
-       ${srcdir}/rmail.texi \
-       ${srcdir}/dired.texi \
-       ${srcdir}/calendar.texi \
-       ${srcdir}/misc.texi \
-       ${srcdir}/custom.texi \
-       ${srcdir}/trouble.texi \
-       ${srcdir}/cmdargs.texi \
-       ${srcdir}/xresources.texi \
-       ${srcdir}/anti.texi \
-       ${srcdir}/macos.texi \
-       ${srcdir}/msdog.texi \
-       ${srcdir}/gnu.texi \
-       ${srcdir}/glossary.texi \
-       ${srcdir}/ack.texi \
-       ${srcdir}/kmacro.texi \
-       $(EMACS_XTRA)
-
-info: $(top_srcdir)/info $(INFO_TARGETS)
-
-$(top_srcdir)/info:
+
+info: $(infodir) $(INFO_TARGETS)
+
+$(infodir):
        mkdir $@
 
 dvi: $(DVI_TARGETS)
 
+
 # Note that all the Info targets build the Info files
 # in srcdir.  There is no provision for Info files
 # to exist in the build directory.
 # In a distribution of Emacs, the Info files should be up to date.
 
-# The following target uses an explicit -o switch to work around
-# the @setfilename directive in info.texi, which is required for
-# the Texinfo distribution.
-
-../info/info: ${INFOSOURCES}
-       cd $(srcdir); $(MAKEINFO) --no-split info.texi -o $@
-
-info.dvi: ${INFOSOURCES}
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi
-
-../info/emacs: ${EMACSSOURCES}
-       cd $(srcdir); $(MAKEINFO) emacs.texi
+## "short" target names for convenience, to just rebuild one manual.
+ada-mode : $(infodir)/ada-mode
+$(infodir)/ada-mode: ada-mode.texi
+       cd $(srcdir); $(MAKEINFO) ada-mode.texi
+ada-mode.dvi: ada-mode.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi
 
-emacs.dvi: ${EMACSSOURCES}
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi
+autotype : $(infodir)/autotype
+$(infodir)/autotype: autotype.texi
+       cd $(srcdir); $(MAKEINFO) autotype.texi
+autotype.dvi: autotype.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi
 
-# This target is here so you could easily get the list of the *.texi
-# files which belong to the Emacs manual (as opposed to the separate
-# manuals for CL, CC Mode, Ebrowse, etc.).  With this target, you can
-# say things like "grep foo `make emacsman`".
-emacsman:
-       @echo $(EMACSSOURCES)
+calc : $(infodir)/calc
+$(infodir)/calc: calc.texi
+       cd $(srcdir); $(MAKEINFO) calc.texi
+calc.dvi: calc.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi
 
-../info/ccmode: cc-mode.texi
+ccmode : $(infodir)/ccmode
+$(infodir)/ccmode: cc-mode.texi
        cd $(srcdir); $(MAKEINFO) cc-mode.texi
 cc-mode.dvi: cc-mode.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi
 
-../info/ada-mode: ada-mode.texi
-       cd $(srcdir); $(MAKEINFO) ada-mode.texi
-ada-mode.dvi: ada-mode.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi
-
-../info/pcl-cvs: pcl-cvs.texi
-       cd $(srcdir); $(MAKEINFO) pcl-cvs.texi
-pcl-cvs.dvi: pcl-cvs.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi
-
-../info/eshell: eshell.texi
-       cd $(srcdir); $(MAKEINFO) eshell.texi
-eshell.dvi: eshell.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi
-
-../info/cl: cl.texi
+cl : $(infodir)/cl
+$(infodir)/cl: cl.texi
        cd $(srcdir); $(MAKEINFO) cl.texi
 cl.dvi: cl.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi
 
-../info/dired-x: dired-x.texi
+dired-x : $(infodir)/dired-x
+$(infodir)/dired-x: dired-x.texi
        cd $(srcdir); $(MAKEINFO) dired-x.texi
 dired-x.dvi: dired-x.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi
 
-../info/ediff: ediff.texi
+ebrowse : $(infodir)/ebrowse
+$(infodir)/ebrowse: ebrowse.texi
+       cd $(srcdir); $(MAKEINFO) ebrowse.texi
+ebrowse.dvi: ebrowse.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi
+
+ediff : $(infodir)/ediff
+$(infodir)/ediff: ediff.texi
        cd $(srcdir); $(MAKEINFO) ediff.texi
 ediff.dvi: ediff.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi
 
-emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi
+emacs-mime : $(infodir)/emacs-mime
+$(infodir)/emacs-mime: emacs-mime.texi
+       cd $(srcdir); $(MAKEINFO) --enable-encoding emacs-mime.texi
+emacs-mime.dvi: emacs-mime.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi
+
+erc : $(infodir)/erc
+$(infodir)/erc: erc.texi
+       cd $(srcdir); $(MAKEINFO) erc.texi
+erc.dvi: erc.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi
+
+eshell : $(infodir)/eshell
+$(infodir)/eshell: eshell.texi
+       cd $(srcdir); $(MAKEINFO) eshell.texi
+eshell.dvi: eshell.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi
 
-../info/forms: forms.texi
+eudc : $(infodir)/eudc
+$(infodir)/eudc: eudc.texi
+       cd $(srcdir); $(MAKEINFO) eudc.texi
+eudc.dvi: eudc.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi
+
+efaq : $(infodir)/efaq
+$(infodir)/efaq: faq.texi
+       cd $(srcdir); $(MAKEINFO) faq.texi
+faq.dvi: faq.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/faq.texi
+
+flymake : $(infodir)/flymake
+$(infodir)/flymake: flymake.texi
+       cd $(srcdir); $(MAKEINFO) flymake.texi
+flymake.dvi: flymake.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi
+
+forms : $(infodir)/forms
+$(infodir)/forms: forms.texi
        cd $(srcdir); $(MAKEINFO) forms.texi
 forms.dvi: forms.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi
 
 # gnus/message/emacs-mime/sieve/pgg are part of Gnus:
-../info/gnus: gnus.texi gnus-faq.texi
+gnus : $(infodir)/gnus
+$(infodir)/gnus: gnus.texi gnus-faq.texi
        cd $(srcdir); $(MAKEINFO) gnus.texi
 gnus.dvi: gnus.texi gnus-faq.texi
        sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
@@ -207,162 +241,151 @@ gnus.dvi: gnus.texi gnus-faq.texi
        cp gnustmp.dvi $*.dvi
        rm gnustmp.*
 
-../info/message: message.texi
+# This is produced with --no-split to avoid making files whose
+# names clash on DOS 8+3 filesystems
+idlwave : $(infodir)/idlwave
+$(infodir)/idlwave: idlwave.texi
+       cd $(srcdir); $(MAKEINFO) --no-split idlwave.texi
+idlwave.dvi: idlwave.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi
+
+# The following target uses an explicit -o switch to work around
+# the @setfilename directive in info.texi, which is required for
+# the Texinfo distribution.
+###info : $(infodir)/info   # circular!
+$(infodir)/info: info.texi
+       cd $(srcdir); $(MAKEINFO) --no-split info.texi -o $@
+info.dvi: info.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi
+
+message : $(infodir)/message
+$(infodir)/message: message.texi
        cd $(srcdir); $(MAKEINFO) message.texi
 message.dvi: message.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi
 
-../info/sieve: sieve.texi
-       cd $(srcdir); $(MAKEINFO) sieve.texi
-sieve.dvi: sieve.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi
+mh-e : $(infodir)/mh-e
+$(infodir)/mh-e: mh-e.texi
+       cd $(srcdir); $(MAKEINFO) mh-e.texi
+mh-e.dvi: mh-e.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi
 
-../info/emacs-mime: emacs-mime.texi
-       cd $(srcdir); $(MAKEINFO) --enable-encoding emacs-mime.texi
-emacs-mime.dvi: emacs-mime.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi
+newsticker : $(infodir)/newsticker
+$(infodir)/newsticker: newsticker.texi
+       cd $(srcdir); $(MAKEINFO) newsticker.texi
+newsticker.dvi: newsticker.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi
+
+org : $(infodir)/org
+$(infodir)/org: org.texi
+       cd $(srcdir); $(MAKEINFO) org.texi
+org.dvi: org.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi
+
+pcl-cvs : $(infodir)/pcl-cvs
+$(infodir)/pcl-cvs: pcl-cvs.texi
+       cd $(srcdir); $(MAKEINFO) pcl-cvs.texi
+pcl-cvs.dvi: pcl-cvs.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi
 
-../info/pgg: pgg.texi
+pgg : $(infodir)/pgg
+$(infodir)/pgg: pgg.texi
        cd $(srcdir); $(MAKEINFO) pgg.texi
 pgg.dvi: pgg.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi
 
-../info/mh-e: mh-e.texi
-       cd $(srcdir); $(MAKEINFO) mh-e.texi
-mh-e.dvi: mh-e.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi
+rcirc : $(infodir)/rcirc
+$(infodir)/rcirc: rcirc.texi
+       cd $(srcdir); $(MAKEINFO) rcirc.texi
+rcirc.dvi: rcirc.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi
 
-../info/reftex: reftex.texi
+reftex : $(infodir)/reftex
+$(infodir)/reftex: reftex.texi
        cd $(srcdir); $(MAKEINFO) reftex.texi
 reftex.dvi: reftex.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi
 
-../info/sc: sc.texi
+sc : $(infodir)/sc
+$(infodir)/sc: sc.texi
        cd $(srcdir); $(MAKEINFO) sc.texi
 sc.dvi: sc.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi
 
-../info/vip: vip.texi
-       cd $(srcdir); $(MAKEINFO) vip.texi
-vip.dvi: vip.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi
-
-../info/viper: viper.texi
-       cd $(srcdir); $(MAKEINFO) viper.texi
-viper.dvi: viper.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi
-
-../info/widget: widget.texi
-       cd $(srcdir); $(MAKEINFO) widget.texi
-widget.dvi: widget.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi
-
-../info/efaq: faq.texi
-       cd $(srcdir); $(MAKEINFO) faq.texi
-faq.dvi: faq.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/faq.texi
-
-../etc/GNU: gnu1.texi gnu.texi
-       cd $(srcdir) && makeinfo --no-headers -o ../etc/GNU gnu1.texi
-
-../info/autotype: autotype.texi
-       cd $(srcdir); $(MAKEINFO) autotype.texi
-autotype.dvi: autotype.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi
-
-../info/calc: calc.texi
-       cd $(srcdir); $(MAKEINFO) calc.texi
-
-calc.dvi: calc.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi
-
-# This is produced with --no-split to avoid making files whose
-# names clash on DOS 8+3 filesystems
-../info/idlwave: idlwave.texi
-       cd $(srcdir); $(MAKEINFO) --no-split idlwave.texi
-idlwave.dvi: idlwave.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi
-
-../info/eudc: eudc.texi
-       cd $(srcdir); $(MAKEINFO) eudc.texi
-eudc.dvi: eudc.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi
-
-../info/ebrowse: ebrowse.texi
-       cd $(srcdir); $(MAKEINFO) ebrowse.texi
-ebrowse.dvi: ebrowse.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi
-
-../info/woman: woman.texi
-       cd $(srcdir); $(MAKEINFO) woman.texi
-woman.dvi: woman.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi
+ses : $(infodir)/ses
+$(infodir)/ses: ses.texi
+       cd $(srcdir); $(MAKEINFO) ses.texi
+ses.dvi: ses.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi
 
-../info/org: org.texi
-       cd $(srcdir); $(MAKEINFO) org.texi
-org.dvi: org.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi
+sieve : $(infodir)/sieve
+$(infodir)/sieve: sieve.texi
+       cd $(srcdir); $(MAKEINFO) sieve.texi
+sieve.dvi: sieve.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi
 
-../info/url: url.texi
-       cd $(srcdir); $(MAKEINFO) url.texi
-url.dvi: url.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi
+smtpmail : $(infodir)/smtpmail
+$(infodir)/smtpmail: smtpmail.texi
+       cd $(srcdir); $(MAKEINFO) smtpmail.texi
+smtpmail.dvi: smtpmail.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi
 
-../info/speedbar: speedbar.texi
+speedbar : $(infodir)/speedbar
+$(infodir)/speedbar: speedbar.texi
        cd $(srcdir); $(MAKEINFO) speedbar.texi
 speedbar.dvi: speedbar.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi
 
-../info/tramp: tramp.texi trampver.texi
+tramp : $(infodir)/tramp
+$(infodir)/tramp: tramp.texi trampver.texi
        cd $(srcdir); $(MAKEINFO) -D emacs tramp.texi
 tramp.dvi: tramp.texi trampver.texi
        $(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi
 
-../info/ses: ses.texi
-       cd $(srcdir); $(MAKEINFO) ses.texi
-ses.dvi: ses.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi
+url : $(infodir)/url
+$(infodir)/url: url.texi
+       cd $(srcdir); $(MAKEINFO) url.texi
+url.dvi: url.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi
 
-../info/smtpmail: smtpmail.texi
-       cd $(srcdir); $(MAKEINFO) smtpmail.texi
-smtpmail.dvi: smtpmail.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi
+vip : $(infodir)/vip
+$(infodir)/vip: vip.texi
+       cd $(srcdir); $(MAKEINFO) vip.texi
+vip.dvi: vip.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi
 
-../info/flymake: flymake.texi
-       cd $(srcdir); $(MAKEINFO) flymake.texi
-flymake.dvi: flymake.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi
+viper : $(infodir)/viper
+$(infodir)/viper: viper.texi
+       cd $(srcdir); $(MAKEINFO) viper.texi
+viper.dvi: viper.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi
 
-../info/newsticker: newsticker.texi
-       cd $(srcdir); $(MAKEINFO) newsticker.texi
-newsticker.dvi: newsticker.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi
+widget : $(infodir)/widget
+$(infodir)/widget: widget.texi
+       cd $(srcdir); $(MAKEINFO) widget.texi
+widget.dvi: widget.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi
 
-../info/rcirc: rcirc.texi
-       cd $(srcdir); $(MAKEINFO) rcirc.texi
-rcirc.dvi: rcirc.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi
+woman : $(infodir)/woman
+$(infodir)/woman: woman.texi
+       cd $(srcdir); $(MAKEINFO) woman.texi
+woman.dvi: woman.texi
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi
 
-../info/erc: erc.texi
-       cd $(srcdir); $(MAKEINFO) erc.texi
-erc.dvi: erc.texi
-       $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi
 
 mostlyclean:
-       rm -f *.log *.cp *.fn *.ky *.pg *.vr core *.tp *.core gnustmp.*
+       rm -f *.log *.cp *.fn *.ky *.op *.ops *.pg *.vr core *.tp \
+       *.tps *.core gnustmp.*
+       rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
 
 clean: mostlyclean
        rm -f *.dvi
 
 distclean: clean
+#      rm -f Makefile
 
 maintainer-clean: distclean
-       rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
        for file in $(INFO_TARGETS); do rm -f $${file}*; done
 
 
-# Formerly this directory had texindex.c and getopt.c in it
-# and this makefile built them to make texindex.
-# That caused trouble because this is run entirely in the source directory.
-# Since we expect to get texi2dvi from elsewhere,
-# it is ok to expect texindex from elsewhere also.
+### Makefile ends here
similarity index 99%
rename from man/ada-mode.texi
rename to doc/misc/ada-mode.texi
index 241149803e8df802253d3dcac582cc926f4f9a0b..8f78d86934387d915f48763964c78837d4ee80ce 100644 (file)
@@ -1,5 +1,5 @@
 \input texinfo  @c -*-texinfo-*-
-@setfilename ../info/ada-mode
+@setfilename ../../info/ada-mode
 @settitle Ada Mode
 
 @copying
similarity index 99%
rename from man/autotype.texi
rename to doc/misc/autotype.texi
index 7b51f3115ac613c84b065dddabd2d535fd98e35d..e173ed7d1f84e91e92ac08018c7faf656e38b087 100644 (file)
@@ -3,7 +3,7 @@
 @c Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004,
 @c   2005, 2006, 2007  Free Software Foundation, Inc.
 @c Author: Daniel.Pfeiffer@Informatik.START.dbp.de, fax (+49 69) 7588-2389
-@setfilename ../info/autotype
+@setfilename ../../info/autotype
 @c @node Autotypist, Picture, Abbrevs, Top
 @c @chapter Features for Automatic Typing
 @settitle Features for Automatic Typing
similarity index 99%
rename from man/calc.texi
rename to doc/misc/calc.texi
index e7aa34f8fec52036f0407c098c79ff762f829258..4445910e43c05822dfe01f46fc0d5a133173f30e 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 @comment %**start of header (This is for running Texinfo on a region.)
 @c smallbook
-@setfilename ../info/calc
+@setfilename ../../info/calc
 @c [title]
 @settitle GNU Emacs Calc 2.1 Manual
 @setchapternewpage odd
@@ -123,29 +123,40 @@ Copyright @copyright{} 1990, 1991, 2001, 2002, 2003, 2004,
 @insertcopying
 @end titlepage
 
+
+@summarycontents
+
+@c [end]
+
+@contents
+
 @c [begin]
-@ifinfo
+@ifnottex
 @node Top, Getting Started, (dir), (dir)
 @chapter The GNU Emacs Calculator
 
 @noindent
 @dfn{Calc} is an advanced desk calculator and mathematical tool
-that runs as part of the GNU Emacs environment.
+written by Dave Gillespie that runs as part of the GNU Emacs environment.
 
-This manual is divided into three major parts: ``Getting Started,''
-the ``Calc Tutorial,'' and the ``Calc Reference.''  The Tutorial
-introduces all the major aspects of Calculator use in an easy,
-hands-on way.  The remainder of the manual is a complete reference to
-the features of the Calculator.
+This manual, also written (mostly) by Dave Gillespie, is divided into
+three major parts: ``Getting Started,'' the ``Calc Tutorial,'' and the
+``Calc Reference.''  The Tutorial introduces all the major aspects of
+Calculator use in an easy, hands-on way.  The remainder of the manual is
+a complete reference to the features of the Calculator.
+@end ifnottex
 
+@ifinfo
 For help in the Emacs Info system (which you are using to read this
 file), type @kbd{?}.  (You can also type @kbd{h} to run through a
 longer Info tutorial.)
-
 @end ifinfo
+
 @menu
 * Getting Started::       General description and overview.
+@ifinfo
 * Interactive Tutorial::
+@end ifinfo
 * Tutorial::              A step-by-step introduction for beginners.
 
 * Introduction::          Introduction to the Calc reference manual.
@@ -179,7 +190,12 @@ longer Info tutorial.)
 * Lisp Function Index::   Internal Lisp math functions.
 @end menu
 
+@ifinfo
 @node Getting Started, Interactive Tutorial, Top, Top
+@end ifinfo
+@ifnotinfo
+@node Getting Started, Tutorial, Top, Top
+@end ifnotinfo
 @chapter Getting Started
 @noindent
 This chapter provides a general overview of Calc, the GNU Emacs
@@ -267,12 +283,6 @@ experience with GNU Emacs in order to get the most out of Calc,
 this manual ought to be readable even if you don't know or use Emacs
 regularly.
 
-@ifinfo
-The manual is divided into three major parts:@: the ``Getting
-Started'' chapter you are reading now, the Calc tutorial (chapter 2),
-and the Calc reference manual (the remaining chapters and appendices).
-@end ifinfo
-@iftex
 The manual is divided into three major parts:@: the ``Getting
 Started'' chapter you are reading now, the Calc tutorial (chapter 2),
 and the Calc reference manual (the remaining chapters and appendices).
@@ -280,7 +290,6 @@ and the Calc reference manual (the remaining chapters and appendices).
 @c This manual has been printed in two volumes, the @dfn{Tutorial} and the
 @c @dfn{Reference}.  Both volumes include a copy of the ``Getting Started''
 @c chapter.
-@end iftex
 
 If you are in a hurry to use Calc, there is a brief ``demonstration''
 below which illustrates the major features of Calc in just a couple of
@@ -321,6 +330,7 @@ you can also go to the part of the manual describing any Calc key,
 function, or variable using @w{@kbd{h k}}, @kbd{h f}, or @kbd{h v},
 respectively.  @xref{Help Commands}.
 
+@ifnottex
 The Calc manual can be printed, but because the manual is so large, you
 should only make a printed copy if you really need it.  To print the
 manual, you will need the @TeX{} typesetting program (this is a free
@@ -347,7 +357,7 @@ or
 @example
 dvips calc.dvi
 @end example
-
+@end ifnottex
 @c Printed copies of this manual are also available from the Free Software
 @c Foundation.
 
@@ -543,13 +553,13 @@ system.  Type @kbd{d N} to return to normal notation.
 Type @kbd{7.5}, then @kbd{s l a @key{RET}} to let @expr{a = 7.5} in these formulas.
 (That's a letter @kbd{l}, not a numeral @kbd{1}.)
 
-@iftex
+@ifnotinfo
 @strong{Help functions.}  You can read about any command in the on-line
 manual.  Type @kbd{C-x * c} to return to Calc after each of these
 commands: @kbd{h k t N} to read about the @kbd{t N} command,
 @kbd{h f sqrt @key{RET}} to read about the @code{sqrt} function, and
 @kbd{h s} to read the Calc summary.
-@end iftex
+@end ifnotinfo
 @ifinfo
 @strong{Help functions.}  You can read about any command in the on-line
 manual.  Remember to type the letter @kbd{l}, then @kbd{C-x * c}, to
@@ -1194,10 +1204,11 @@ Carl Witty, whose eagle eyes discovered many typographical and factual
 errors in the Calc manual; Tim Kay, who drove the development of
 Embedded mode; Ove Ewerlid, who made many suggestions relating to the
 algebra commands and contributed some code for polynomial operations;
-Randal Schwartz, who suggested the @code{calc-eval} function; Robert
-J. Chassell, who suggested the Calc Tutorial and exercises; and Juha
+Randal Schwartz, who suggested the @code{calc-eval} function; Juha
 Sarlin, who first worked out how to split Calc into quickly-loading
-parts.  Bob Weiner helped immensely with the Lucid Emacs port.
+parts; Bob Weiner, who helped immensely with the Lucid Emacs port; and
+Robert J. Chassell, who suggested the Calc Tutorial and exercises as
+well as many other things.  
 
 @cindex Bibliography
 @cindex Knuth, Art of Computer Programming
@@ -1251,9 +1262,12 @@ Press @kbd{1} now to enter the first section of the Tutorial.
 @menu
 * Tutorial::
 @end menu
-@end ifinfo
 
 @node Tutorial, Introduction, Interactive Tutorial, Top
+@end ifinfo
+@ifnotinfo
+@node Tutorial, Introduction, Getting Started, Top
+@end ifnotinfo
 @chapter Tutorial
 
 @noindent
@@ -1272,32 +1286,22 @@ The Quick mode and Keypad mode interfaces are fairly
 self-explanatory.  @xref{Embedded Mode}, for a description of
 the Embedded mode interface.
 
-@ifinfo
-The easiest way to read this tutorial on-line is to have two windows on
-your Emacs screen, one with Calc and one with the Info system.  (If you
-have a printed copy of the manual you can use that instead.)  Press
-@kbd{C-x * c} to turn Calc on or to switch into the Calc window, and
-press @kbd{C-x * i} to start the Info system or to switch into its window.
-Or, you may prefer to use the tutorial in printed form.
-@end ifinfo
-@iftex
 The easiest way to read this tutorial on-line is to have two windows on
 your Emacs screen, one with Calc and one with the Info system.  (If you
 have a printed copy of the manual you can use that instead.)  Press
 @kbd{C-x * c} to turn Calc on or to switch into the Calc window, and
 press @kbd{C-x * i} to start the Info system or to switch into its window.
-@end iftex
 
 This tutorial is designed to be done in sequence.  But the rest of this
 manual does not assume you have gone through the tutorial.  The tutorial
 does not cover everything in the Calculator, but it touches on most
 general areas.
 
-@ifinfo
+@ifnottex
 You may wish to print out a copy of the Calc Summary and keep notes on
 it as you learn Calc.  @xref{About This Manual}, to see how to make a
 printed summary.  @xref{Summary}.
-@end ifinfo
+@end ifnottex
 @iftex
 The Calc Summary at the end of the reference manual includes some blank
 space for your own use.  You may wish to keep notes there as you learn
@@ -1334,13 +1338,13 @@ to control various modes of the Calculator.
 @subsection RPN Calculations and the Stack
 
 @cindex RPN notation
-@ifinfo
+@ifnottex
 @noindent
 Calc normally uses RPN notation.  You may be familiar with the RPN
 system from Hewlett-Packard calculators, FORTH, or PostScript.
 (Reverse Polish Notation, RPN, is named after the Polish mathematician
 Jan Lukasiewicz.)
-@end ifinfo
+@end ifnottex
 @tex
 \noindent
 Calc normally uses RPN notation.  You may be familiar with the RPN
@@ -1769,7 +1773,7 @@ is equivalent to
 @noindent
 or, in large mathematical notation,
 
-@ifinfo
+@ifnottex
 @example
 @group
     3 * 4 * 5
@@ -1778,7 +1782,7 @@ or, in large mathematical notation,
      6 * 7
 @end group
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -3325,7 +3329,7 @@ We can multiply these two matrices in either order to get an identity.
 Matrix inverses are related to systems of linear equations in algebra.
 Suppose we had the following set of equations:
 
-@ifinfo
+@ifnottex
 @group
 @example
     a + 2b + 3c = 6
@@ -3333,7 +3337,7 @@ Suppose we had the following set of equations:
    7a + 6b      = 3
 @end example
 @end group
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplayh
@@ -3352,7 +3356,7 @@ $$
 @noindent
 This can be cast into the matrix equation,
 
-@ifinfo
+@ifnottex
 @group
 @example
    [ [ 1, 2, 3 ]     [ [ a ]     [ [ 6 ]
@@ -3360,7 +3364,7 @@ This can be cast into the matrix equation,
      [ 7, 6, 0 ] ]     [ c ] ]     [ 3 ] ]
 @end example
 @end group
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -3425,14 +3429,14 @@ vectors and matrices that include variables.  Solve the following
 system of equations to get expressions for @expr{x} and @expr{y}
 in terms of @expr{a} and @expr{b}.
 
-@ifinfo
+@ifnottex
 @group
 @example
    x + a y = 6
    x + b y = 10
 @end example
 @end group
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -3456,9 +3460,9 @@ you can't solve @expr{A X = B} directly because the matrix @expr{A}
 is not square for an over-determined system.  Matrix inversion works
 only for square matrices.  One common trick is to multiply both sides
 on the left by the transpose of @expr{A}:
-@ifinfo
+@ifnottex
 @samp{trn(A)*A*X = trn(A)*B}.
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 $A^T A \, X = A^T B$, where $A^T$ is the transpose \samp{trn(A)}.
@@ -3472,7 +3476,7 @@ solution, which can be regarded as the ``closest'' solution to the set
 of equations.  Use Calc to solve the following over-determined
 system:
 
-@ifinfo
+@ifnottex
 @group
 @example
     a + 2b + 3c = 6
@@ -3481,7 +3485,7 @@ system:
    2a + 4b + 6c = 11
 @end example
 @end group
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplayh
@@ -3749,11 +3753,11 @@ stored value from the stack.)
 
 In a least squares fit, the slope @expr{m} is given by the formula
 
-@ifinfo
+@ifnottex
 @example
 m = (N sum(x y) - sum(x) sum(y)) / (N sum(x^2) - sum(x)^2)
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -3790,12 +3794,12 @@ this formula uses.
 @end group
 @end smallexample
 
-@ifinfo
+@ifnottex
 @noindent
 These are @samp{sum(x)}, @samp{sum(x^2)}, @samp{sum(y)}, and @samp{sum(x y)},
 respectively.  (We could have used @kbd{*} to compute @samp{sum(x^2)} and
 @samp{sum(x y)}.)
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 These are $\sum x$, $\sum x^2$, $\sum y$, and $\sum x y$,
@@ -3845,11 +3849,11 @@ Now we grind through the formula:
 That gives us the slope @expr{m}.  The y-intercept @expr{b} can now
 be found with the simple formula,
 
-@ifinfo
+@ifnottex
 @example
 b = (sum(y) - m sum(x)) / N
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -3987,14 +3991,14 @@ The @kbd{C-x * g} command accepts numbers separated by spaces or commas,
 with or without surrounding vector brackets.
 @xref{List Answer 3, 3}. (@bullet{})
 
-@ifinfo
+@ifnottex
 As another example, a theorem about binomial coefficients tells
 us that the alternating sum of binomial coefficients
 @var{n}-choose-0 minus @var{n}-choose-1 plus @var{n}-choose-2, and so
 on up to @var{n}-choose-@var{n},
 always comes out to zero.  Let's verify this
 for @expr{n=6}.
-@end ifinfo
+@end ifnottex
 @tex
 As another example, a theorem about binomial coefficients tells
 us that the alternating sum of binomial coefficients
@@ -5193,12 +5197,12 @@ to be a better approximation than stairsteps.  A third method is
 that the steps are not required to be flat.  Simpson's rule boils
 down to the formula,
 
-@ifinfo
+@ifnottex
 @example
 (h/3) * (f(a) + 4 f(a+h) + 2 f(a+2h) + 4 f(a+3h) + ...
               + 2 f(a+(n-2)*h) + 4 f(a+(n-1)*h) + f(a+n*h))
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -5215,12 +5219,12 @@ is the width of each slice.  These are 10 and 0.1 in our example.
 For reference, here is the corresponding formula for the stairstep
 method:
 
-@ifinfo
+@ifnottex
 @example
 h * (f(a) + f(a+h) + f(a+2h) + f(a+3h) + ...
           + f(a+(n-2)*h) + f(a+(n-1)*h))
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -5657,11 +5661,11 @@ so that @expr{2 - 3 (x + y) + x y} is a sum of three terms.)
 infinite series that exactly equals the value of that function at
 values of @expr{x} near zero.
 
-@ifinfo
+@ifnottex
 @example
 cos(x) = 1 - x^2 / 2! + x^4 / 4! - x^6 / 6! + ...
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -5675,11 +5679,11 @@ Calc represents the truncated Taylor series as a polynomial in @expr{x}.
 Mathematicians often write a truncated series using a ``big-O'' notation
 that records what was the lowest term that was truncated.
 
-@ifinfo
+@ifnottex
 @example
 cos(x) = 1 - x^2 / 2! + O(x^3)
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -6204,11 +6208,11 @@ equations numerically is @dfn{Newton's Method}.  Given the equation
 @expr{x_0} which is reasonably close to the desired solution, apply
 this formula over and over:
 
-@ifinfo
+@ifnottex
 @example
 new_x = x - f(x)/f'(x)
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \beforedisplay
 $$ x_{\rm new} = x - {f(x) \over f'(x)} $$
@@ -6242,11 +6246,11 @@ is defined as the derivative of
 @infoline @expr{ln(gamma(z))}.  
 For large values of @expr{z}, it can be approximated by the infinite sum
 
-@ifinfo
+@ifnottex
 @example
 psi(z) ~= ln(z) - 1/2z - sum(bern(2 n) / 2 n z^(2 n), n, 1, inf)
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \beforedisplay
 $$ \psi(z) \approx \ln z - {1\over2z} -
@@ -6305,13 +6309,13 @@ a way to convert from this form back to the standard algebraic form.
 (@bullet{}) @strong{Exercise 11.}  The @dfn{Stirling numbers of the
 first kind} are defined by the recurrences,
 
-@ifinfo
+@ifnottex
 @example
 s(n,n) = 1   for n >= 0,
 s(n,0) = 0   for n > 0,
 s(n+1,m) = s(n,m-1) - n s(n,m)   for n >= m >= 1.
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -6843,14 +6847,14 @@ get the row sum.  Similarly, use @kbd{[1 1] r 4 *} to get the column sum.
 @node Matrix Answer 2, Matrix Answer 3, Matrix Answer 1, Answers to Exercises
 @subsection Matrix Tutorial Exercise 2
 
-@ifinfo
+@ifnottex
 @example
 @group
    x + a y = 6
    x + b y = 10
 @end group
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -6905,7 +6909,7 @@ now, we have a system
 @infoline @expr{A2 * X = B2} 
 which we can solve using Calc's @samp{/} command.
 
-@ifinfo
+@ifnottex
 @example
 @group
     a + 2b + 3c = 6
@@ -6914,7 +6918,7 @@ which we can solve using Calc's @samp{/} command.
    2a + 4b + 6c = 11
 @end group
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplayh
@@ -7045,11 +7049,11 @@ vector.
 Given @expr{x} and @expr{y} vectors in quick variables 1 and 2 as before,
 the first job is to form the matrix that describes the problem.
 
-@ifinfo
+@ifnottex
 @example
    m*x + b*1 = y
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -7836,11 +7840,11 @@ Why does this work?  Think about a two-step computation:
 subtracting off enough 511's to put the result in the desired range.
 So the result when we take the modulo after every step is,
 
-@ifinfo
+@ifnottex
 @example
 3 (3 a + b - 511 m) + c - 511 n
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -7852,11 +7856,11 @@ $$ 3 (3 a + b - 511 m) + c - 511 n $$
 for some suitable integers @expr{m} and @expr{n}.  Expanding out by
 the distributive law yields
 
-@ifinfo
+@ifnottex
 @example
 9 a + 3 b + c - 511*3 m - 511 n
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -7870,11 +7874,11 @@ contribution it makes could just as easily be made by the @expr{n}
 term.  So we can take it out to get an equivalent formula with
 @expr{n' = 3m + n},
 
-@ifinfo
+@ifnottex
 @example
 9 a + 3 b + c - 511 n'
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -10017,11 +10021,18 @@ During numeric entry, the only editing key available is @key{DEL}.
 @cindex Algebraic notation
 @cindex Formulas, entering
 Calculations can also be entered in algebraic form.  This is accomplished
-by typing the apostrophe key, @kbd{'}, followed by the expression in
-standard format:  @kbd{@key{'} 2+3*4 @key{RET}} computes
+by typing the apostrophe key, ', followed by the expression in
+standard format:  
+
+@example
+' 2+3*4 @key{RET}.
+@end example
+
+@noindent
+This will compute
 @texline @math{2+(3\times4) = 14}
 @infoline @expr{2+(3*4) = 14} 
-and pushes that on the stack.  If you wish you can
+and push it on the stack.  If you wish you can
 ignore the RPN aspect of Calc altogether and simply enter algebraic
 expressions in this way.  You may want to use @key{DEL} every so often to
 clear previous results off the stack.
@@ -10170,8 +10181,8 @@ then the result of the evaluation is stored in that Calc variable.
 @xref{Store and Recall}.
 
 If the result is an integer and the current display radix is decimal,
-the number will also be displayed in hex and octal formats.  If the
-integer is in the range from 1 to 126, it will also be displayed as
+the number will also be displayed in hex, octal and binary formats.  If
+the integer is in the range from 1 to 126, it will also be displayed as
 an ASCII character.
 
 For example, the quoted character @samp{"x"} produces the vector
@@ -11043,17 +11054,44 @@ Please note that there is no ``year 0''; the day before
 days 0 and @mathit{-1} respectively in Calc's internal numbering scheme.
 
 @cindex Julian day counting
-Another day counting system in common use is, confusingly, also
-called ``Julian.''  It was invented in 1583 by Joseph Justus
-Scaliger, who named it in honor of his father Julius Caesar
-Scaliger.  For obscure reasons he chose to start his day
-numbering on Jan 1, 4713 BC at noon, which in Calc's scheme
+Another day counting system in common use is, confusingly, also called
+``Julian.''  The Julian day number is the numbers of days since 
+12:00 noon (GMT) on Jan 1, 4713 BC, which in Calc's scheme (in GMT) 
 is @mathit{-1721423.5} (recall that Calc starts at midnight instead
-of noon).  Thus to convert a Calc date code obtained by
-unpacking a date form into a Julian day number, simply add
-1721423.5.  The Julian code for @samp{6:00am Jan 9, 1991}
-is 2448265.75.  The built-in @kbd{t J} command performs
-this conversion for you.
+of noon).  Thus to convert a Calc date code obtained by unpacking a
+date form into a Julian day number, simply add 1721423.5 after
+compensating for the time zone difference.  The built-in @kbd{t J}
+command performs this conversion for you.
+
+The Julian day number is based on the Julian cycle, which was invented 
+in 1583 by Joseph Justus Scaliger.  Scaliger named it the Julian cycle
+since it is involves the Julian calendar, but some have suggested that
+Scaliger named it in honor of his father, Julius Caesar Scaliger.  The
+Julian cycle is based it on three other cycles: the indiction cycle,
+the Metonic cycle, and the solar cycle.  The indiction cycle is a 15
+year cycle originally used by the Romans for tax purposes but later
+used to date medieval documents.  The Metonic cycle is a 19 year
+cycle; 19 years is close to being a common multiple of a solar year
+and a lunar month, and so every 19 years the phases of the moon will
+occur on the same days of the year.  The solar cycle is a 28 year
+cycle; the Julian calendar repeats itself every 28 years.  The
+smallest time period which contains multiples of all three cycles is
+the least common multiple of 15 years, 19 years and 28 years, which
+(since they're pairwise relatively prime) is 
+@texline @math{15\times 19\times 28 = 7980} years.
+@infoline 15*19*28 = 7980 years.
+This is the length of a Julian cycle.  Working backwards, the previous
+year in which all three cycles began was 4713 BC, and so Scalinger
+chose that year as the beginning of a Julian cycle.  Since at the time
+there were no historical records from before 4713 BC, using this year
+as a starting point had the advantage of avoiding negative year
+numbers.  In 1849, the astronomer John Herschel (son of William
+Herschel) suggested using the number of days since the beginning of
+the Julian cycle as an astronomical dating system; this idea was taken
+up by other astronomers.  (At the time, noon was the start of the
+astronomical day.  Herschel originally suggested counting the days
+since Jan 1, 4713 BC at noon Alexandria time; this was later amended to
+noon GMT.)  Julian day numbering is largely used in astronomy.
 
 @cindex Unix time format
 The Unix operating system measures time as an integer number of
@@ -11285,7 +11323,7 @@ from 1 to 8.  Interval arithmetic is used to get a worst-case estimate
 of the possible range of values a computation will produce, given the
 set of possible values of the input.
 
-@ifinfo
+@ifnottex
 Calc supports several varieties of intervals, including @dfn{closed}
 intervals of the type shown above, @dfn{open} intervals such as
 @samp{(2 ..@: 4)}, which represents the range of numbers from 2 to 4
@@ -11296,7 +11334,7 @@ terms,
 @samp{[2 ..@: 4)} represents @expr{2 <= x < 4},
 @samp{(2 ..@: 4]} represents @expr{2 < x <= 4}, and
 @samp{(2 ..@: 4)} represents @expr{2 < x < 4}.
-@end ifinfo
+@end ifnottex
 @tex
 Calc supports several varieties of intervals, including \dfn{closed}
 intervals of the type shown above, \dfn{open} intervals such as
@@ -11929,14 +11967,14 @@ commands, @kbd{t h} works only when Calc Trail is the selected window.
 @pindex calc-trail-isearch-forward
 @kindex t r
 @pindex calc-trail-isearch-backward
-@ifinfo
+@ifnottex
 The @kbd{t s} (@code{calc-trail-isearch-forward}) and @kbd{t r}
 (@code{calc-trail-isearch-backward}) commands perform an incremental
 search forward or backward through the trail.  You can press @key{RET}
 to terminate the search; the trail pointer moves to the current line.
 If you cancel the search with @kbd{C-g}, the trail pointer stays where
 it was when the search began.
-@end ifinfo
+@end ifnottex
 @tex
 The @kbd{t s} (@code{calc-trail-isearch-forward}) and @kbd{t r}
 (@code{calc-trail-isearch-backward}) com\-mands perform an incremental
@@ -14237,10 +14275,10 @@ font information.
 Also, the ``discretionary multiplication sign'' @samp{\*} is read
 the same as @samp{*}.
 
-@ifinfo
+@ifnottex
 The @TeX{} version of this manual includes some printed examples at the
 end of this section.
-@end ifinfo
+@end ifnottex
 @iftex
 Here are some examples of how various Calc formulas are formatted in @TeX{}:
 
@@ -15975,9 +16013,28 @@ whereas @w{@samp{[-2 ..@: 3] ^ 2}} is @samp{[0 ..@: 9]}.
 @mindex @null
 @end ignore
 @tindex /
-The @kbd{/} (@code{calc-divide}) command divides two numbers.  Note that
-when using algebraic entry, @samp{/} has lower precedence than @samp{*}, 
-so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.
+The @kbd{/} (@code{calc-divide}) command divides two numbers.  
+
+When combining multiplication and division in an algebraic formula, it
+is good style to use parentheses to distinguish between possible
+interpretations; the expression @samp{a/b*c} should be written
+@samp{(a/b)*c} or @samp{a/(b*c)}, as appropriate.  Without the
+parentheses, Calc will interpret @samp{a/b*c} as @samp{a/(b*c)}, since
+in algebraic entry Calc gives division a lower precedence than
+multiplication. (This is not standard across all computer languages, and
+Calc may change the precedence depending on the language mode being used.  
+@xref{Language Modes}.)  This default ordering can be changed by setting
+the customizable variable @code{calc-multiplication-has-precedence} to
+@code{nil} (@pxref{Customizing Calc}); this will give multiplication and
+division equal precedences.  Note that Calc's default choice of
+precedence allows @samp{a b / c d} to be used as a shortcut for
+@smallexample
+@group
+a b
+---.
+c d
+@end group
+@end smallexample
 
 When dividing a scalar @expr{B} by a square matrix @expr{A}, the
 computation performed is @expr{B} times the inverse of @expr{A}.  This
@@ -16627,9 +16684,9 @@ The last two arguments default to zero if omitted.
 @cindex Julian day counts, conversions
 The @kbd{t J} (@code{calc-julian}) [@code{julian}] command converts
 a date form into a Julian day count, which is the number of days
-since noon on Jan 1, 4713 BC.  A pure date is converted to an integer
-Julian count representing noon of that day.  A date/time form is
-converted to an exact floating-point Julian count, adjusted to
+since noon (GMT) on Jan 1, 4713 BC.  A pure date is converted to an
+integer Julian count representing noon of that day.  A date/time form 
+is converted to an exact floating-point Julian count, adjusted to
 interpret the date form in the current time zone but the Julian
 day count in Greenwich Mean Time.  A numeric prefix argument allows
 you to specify the time zone; @pxref{Time Zones}.  Use a prefix of
@@ -17066,69 +17123,45 @@ Pacific Time look like this:
 
 @cindex @code{TimeZone} variable
 @vindex TimeZone
-With no arguments, @code{calc-time-zone} or @samp{tzone()} obtains an
-argument from the Calc variable @code{TimeZone} if a value has been
-stored for that variable.  If not, Calc runs the Unix @samp{date}
-command and looks for one of the above time zone names in the output;
-if this does not succeed, @samp{tzone()} leaves itself unevaluated.
-The time zone name in the @samp{date} output may be followed by a signed
-adjustment, e.g., @samp{GMT+5} or @samp{GMT+0500} which specifies a
-number of hours and minutes to be added to the base time zone.
-Calc stores the time zone it finds into @code{TimeZone} to speed
-later calls to @samp{tzone()}.
-
-The special time zone name @code{local} is equivalent to no argument,
-i.e., it uses the local time zone as obtained from the @code{date}
-command.
-
-If the time zone name found is one of the standard or daylight
-saving zone names from the above table, and Calc's internal
-daylight saving algorithm says that time and zone are consistent
-(e.g., @code{PDT} accompanies a date that Calc's algorithm would also
-consider to be daylight saving, or @code{PST} accompanies a date
-that Calc would consider to be standard time), then Calc substitutes
-the corresponding generalized time zone (like @code{PGT}).
-
-If your system does not have a suitable @samp{date} command, you
-may wish to put a @samp{(setq var-TimeZone ...)} in your Emacs
-initialization file to set the time zone.  (Since you are interacting
-with the variable @code{TimeZone} directly from Emacs Lisp, the
-@code{var-} prefix needs to be present.)  The easiest way to do
-this is to edit the @code{TimeZone} variable using Calc's @kbd{s T}
-command, then use the @kbd{s p} (@code{calc-permanent-variable})
-command to save the value of @code{TimeZone} permanently.
+With no arguments, @code{calc-time-zone} or @samp{tzone()} will by
+default get the time zone and daylight saving information from the
+calendar (@pxref{Daylight Saving,Calendar/Diary,The Calendar and the Diary,
+emacs,The GNU Emacs Manual}).  To use a different time zone, or if the
+calendar does not give the desired result, you can set the Calc variable 
+@code{TimeZone} (which is by default @code{nil}) to an appropriate
+time zone name.  (The easiest way to do this is to edit the
+@code{TimeZone} variable using Calc's @kbd{s T} command, then use the
+@kbd{s p} (@code{calc-permanent-variable}) command to save the value of
+@code{TimeZone} permanently.)  
+If the time zone given by @code{TimeZone} is a generalized time zone,
+e.g., @code{EGT}, Calc examines the date being converted to tell whether
+to use standard or daylight saving time.  But if the current time zone
+is explicit, e.g., @code{EST} or @code{EDT}, then that adjustment is
+used exactly and Calc's daylight saving algorithm is not consulted.
+The special time zone name @code{local}
+is equivalent to no argument; i.e., it uses the information obtained
+from the calendar.
 
 The @kbd{t J} and @code{t U} commands with no numeric prefix
-arguments do the same thing as @samp{tzone()}.  If the current
-time zone is a generalized time zone, e.g., @code{EGT}, Calc
-examines the date being converted to tell whether to use standard
-or daylight saving time.  But if the current time zone is explicit,
-e.g., @code{EST} or @code{EDT}, then that adjustment is used exactly
-and Calc's daylight saving algorithm is not consulted.
-
-Some places don't follow the usual rules for daylight saving time.
-The state of Arizona, for example, does not observe daylight saving
-time.  If you run Calc during the winter season in Arizona, the
-Unix @code{date} command will report @code{MST} time zone, which
-Calc will change to @code{MGT}.  If you then convert a time that
-lies in the summer months, Calc will apply an incorrect daylight
-saving time adjustment.  To avoid this, set your @code{TimeZone}
-variable explicitly to @code{MST} to force the use of standard,
-non-daylight-saving time.
+arguments do the same thing as @samp{tzone()}; namely, use the
+information from the calendar if @code{TimeZone} is @code{nil}, 
+otherwise use the time zone given by @code{TimeZone}.
 
 @vindex math-daylight-savings-hook
 @findex math-std-daylight-savings
-By default Calc always considers daylight saving time to begin at
-2 a.m.@: on the second Sunday of March (for years from 2007 on) or on
-the last Sunday in April (for years before 2007), and to end at 2 a.m.@:
-on the first Sunday of November. (for years from 2007 on) or the last
-Sunday in October (for years before 2007).  These are the rules that have
-been in effect in much of North America since 1966 and takes into
-account the rule change that began in 2007.  If you are in a
-country that uses different rules for computing daylight saving time,
-you have two choices:  Write your own daylight saving hook, or control
-time zones explicitly by setting the @code{TimeZone} variable and/or
-always giving a time-zone argument for the conversion functions.
+When Calc computes the daylight saving information itself (i.e., when 
+the @code{TimeZone} variable is set), it will by default consider
+daylight saving time to begin at 2 a.m.@: on the second Sunday of March
+(for years from 2007 on) or on the last Sunday in April (for years
+before 2007), and to end at 2 a.m.@: on the first Sunday of
+November. (for years from 2007 on) or the last Sunday in October (for
+years before 2007).  These are the rules that have been in effect in
+much of North America since 1966 and take into account the rule change
+that began in 2007.  If you are in a country that uses different rules
+for computing daylight saving time, you have two choices: Write your own
+daylight saving hook, or control time zones explicitly by setting the
+@code{TimeZone} variable and/or always giving a time-zone argument for
+the conversion functions.
 
 The Lisp variable @code{math-daylight-savings-hook} holds the
 name of a function that is used to compute the daylight saving
@@ -17192,7 +17225,8 @@ falls in this hour results in a time value for the following hour,
 from 3 a.m.@: to 4 a.m.  At the end of daylight saving time, the
 hour from 1 a.m.@: to 2 a.m.@: repeats itself; converting a date/time
 form that falls in this hour results in a time value for the first
-manifestation of that time (@emph{not} the one that occurs one hour later).
+manifestation of that time (@emph{not} the one that occurs one hour 
+later).
 
 If @code{math-daylight-savings-hook} is @code{nil}, then the
 daylight saving adjustment is always taken to be zero.
@@ -17637,7 +17671,7 @@ formulas below for symbolic arguments only when you use the @kbd{a "}
 (@code{calc-expand-formula}) command, or when taking derivatives or
 integrals or solving equations involving the functions.
 
-@ifinfo
+@ifnottex
 These formulas are shown using the conventions of Big display
 mode (@kbd{d B}); for example, the formula for @code{fv} written
 linearly is @samp{pmt * ((1 + rate)^n) - 1) / rate}.
@@ -17717,7 +17751,7 @@ syd(cost, salv, life, per) = --------------------------------
 ddb(cost, salv, life, per) = --------,  book = cost - depreciation so far
                                life
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 $$ \code{fv}(r, n, p) = p { (1 + r)^n - 1 \over r } $$
@@ -18366,14 +18400,14 @@ some authors, is computed by the @kbd{I f G} [@code{gammaQ}] command.
 You can think of this as taking the other half of the integral, from
 @expr{x} to infinity.
 
-@ifinfo
+@ifnottex
 The functions corresponding to the integrals that define @expr{P(a,x)}
 and @expr{Q(a,x)} but without the normalizing @expr{1/gamma(a)}
 factor are called @expr{g(a,x)} and @expr{G(a,x)}, respectively
 (where @expr{g} and @expr{G} represent the lower- and upper-case Greek
 letter gamma).  You can obtain these using the @kbd{H f G} [@code{gammag}]
 and @kbd{H I f G} [@code{gammaG}] commands.
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 The functions corresponding to the integrals that define $P(a,x)$
@@ -18593,7 +18627,7 @@ Given a positive numeric prefix argument @expr{M}, it produces a random
 integer @expr{N} in the range 
 @texline @math{0 \le N < M}.
 @infoline @expr{0 <= N < M}.  
-Each of the @expr{M} values appears with equal probability.
+Each possible value @expr{N} appears with equal probability.
 
 With no numeric prefix argument, the @kbd{k r} command takes its argument
 from the stack instead.  Once again, if this is a positive integer @expr{M}
@@ -18889,10 +18923,10 @@ real numbers by
 @kindex H k c
 @pindex calc-perm
 @tindex perm
-@ifinfo
+@ifnottex
 The @kbd{H k c} (@code{calc-perm}) [@code{perm}] command computes the
 number-of-permutations function @expr{N! / (N-M)!}.
-@end ifinfo
+@end ifnottex
 @tex
 The \kbd{H k c} (\code{calc-perm}) [\code{perm}] command computes the
 number-of-perm\-utations function $N! \over (N-M)!\,$.
@@ -23132,13 +23166,13 @@ integral of the expression on top of the stack.  In this case, the
 command will again prompt for an integration variable, then prompt for a
 lower limit and an upper limit.
 
-@ifinfo
+@ifnottex
 If you use the @code{integ} function directly in an algebraic formula,
 you can also write @samp{integ(f,x,v)} which expresses the resulting
 indefinite integral in terms of variable @code{v} instead of @code{x}.
 With four arguments, @samp{integ(f(x),x,a,b)} represents a definite
 integral from @code{a} to @code{b}.
-@end ifinfo
+@end ifnottex
 @tex
 If you use the @code{integ} function directly in an algebraic formula,
 you can also write @samp{integ(f,x,v)} which expresses the resulting
@@ -23947,7 +23981,13 @@ such as @expr{y = m x + b} where @expr{m} and @expr{b} are parameters
 to be determined.  For a typical set of measured data there will be
 no single @expr{m} and @expr{b} that exactly fit the data; in this
 case, Calc chooses values of the parameters that provide the closest
-possible fit.
+possible fit.  The model formula can be entered in various ways after
+the key sequence @kbd{a F} is pressed.  
+
+If the letter @kbd{P} is pressed after @kbd{a F} but before the model
+description is entered, the data as well as the model formula will be
+plotted after the formula is determined.  This will be indicated by a
+``P'' in the minibuffer after the help message.
 
 @menu
 * Linear Fits::
@@ -24019,14 +24059,14 @@ name only those and let the parameters use default names.
 
 For example, suppose the data matrix
 
-@ifinfo
+@ifnottex
 @example
 @group
 [ [ 1, 2, 3, 4,  5  ]
   [ 5, 7, 9, 11, 13 ] ]
 @end group
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \turnoffactive
@@ -24040,7 +24080,7 @@ $$
 @noindent
 is on the stack and we wish to do a simple linear fit.  Type
 @kbd{a F}, then @kbd{1} for the model, then @key{RET} to use
-the default names.  The result will be the formula @expr{3 + 2 x}
+the default names.  The result will be the formula @expr{3. + 2. x}
 on the stack.  Calc has created the model expression @kbd{a + b x},
 then found the optimal values of @expr{a} and @expr{b} to fit the
 data.  (In this case, it was able to find an exact fit.)  Calc then
@@ -24083,11 +24123,11 @@ Calc has chosen a line that best approximates the data points using
 the method of least squares.  The idea is to define the @dfn{chi-square}
 error measure
 
-@ifinfo
+@ifnottex
 @example
 chi^2 = sum((y_i - (a + b x_i))^2, i, 1, N)
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -24230,6 +24270,8 @@ case, the model might be @expr{a x + b y + c z}; and in the polynomial
 case, the model could be @expr{a x + b x^2 + c x^3}.  You can get
 a homogeneous linear or multilinear model by pressing the letter
 @kbd{h} followed by a regular model key, like @kbd{1} or @kbd{2}.
+This will be indicated by an ``h'' in the minibuffer after the help
+message.
 
 It is certainly possible to have other constrained linear models,
 like @expr{2.3 + a x} or @expr{a - 4 x}.  While there is no single
@@ -24272,11 +24314,11 @@ then the
 @infoline @expr{chi^2}
 statistic is now,
 
-@ifinfo
+@ifnottex
 @example
 chi^2 = sum(((y_i - (a + b x_i)) / sigma_i)^2, i, 1, N)
 @end example
-@end ifinfo
+@end ifnottex
 @tex
 \turnoffactive
 \beforedisplay
@@ -24439,6 +24481,18 @@ Quadratic.  @mathit{a + b (x-c)^2 + d (x-e)^2}.
 Gaussian.  
 @texline @math{{a \over b \sqrt{2 \pi}} \exp\left( -{1 \over 2} \left( x - c \over b \right)^2 \right)}.
 @infoline @mathit{(a / b sqrt(2 pi)) exp(-0.5*((x-c)/b)^2)}.
+@item s
+Logistic @emph{s} curve.
+@texline @math{a/(1+e^{b(x-c)})}.
+@infoline @mathit{a/(1 + exp(b (x - c)))}.
+@item b
+Logistic bell curve.
+@texline @math{ae^{b(x-c)}/(1+e^{b(x-c)})^2}.
+@infoline @mathit{a exp(b (x - c))/(1 + exp(b (x - c)))^2}.
+@item o
+Hubbert linearization.
+@texline @math{{y \over x} = a(1-x/b)}.
+@infoline @mathit{(y/x) = a (1 - x/b)}.
 @end table
 
 All of these models are used in the usual way; just press the appropriate
@@ -24447,8 +24501,9 @@ result will be a formula as shown in the above table, with the best-fit
 values of the parameters substituted.  (You may find it easier to read
 the parameter values from the vector that is placed in the trail.)
 
-All models except Gaussian and polynomials can generalize as shown to any
-number of independent variables.  Also, all the built-in models have an
+All models except Gaussian, logistics, Hubbert and polynomials can
+generalize as shown to any number of independent variables.  Also, all
+the built-in models except for the logistic and Hubbert curves have an 
 additive or multiplicative parameter shown as @expr{a} in the above table
 which can be replaced by zero or one, as appropriate, by typing @kbd{h}
 before the model key.
@@ -24588,7 +24643,7 @@ to convert the model into this form.  For example, if the model
 is @expr{a + b x + c x^2}, then @expr{f(x) = 1}, @expr{g(x) = x},
 and @expr{h(x) = x^2} are suitable functions.
 
-For other models, Calc uses a variety of algebraic manipulations
+For most other models, Calc uses a variety of algebraic manipulations
 to try to put the problem into the form
 
 @smallexample
@@ -24647,7 +24702,12 @@ The Gaussian model looks quite complicated, but a closer examination
 shows that it's actually similar to the quadratic model but with an
 exponential that can be brought to the top and moved into @expr{Y}.
 
-An example of a model that cannot be put into general linear
+The logistic models cannot be put into general linear form.  For these
+models, and the Hubbert linearization, Calc computes a rough
+approximation for the parameters, then uses the Levenberg-Marquardt
+iterative method to refine the approximations.
+
+Another model that cannot be put into general linear
 form is a Gaussian with a constant background added on, i.e.,
 @expr{d} + the regular Gaussian formula.  If you have a model like
 this, your best bet is to replace enough of your parameters with
@@ -27395,14 +27455,29 @@ of angle are evaluated, regardless of the current angular mode.
 The @kbd{u c} (@code{calc-convert-units}) command converts a units
 expression to new, compatible units.  For example, given the units
 expression @samp{55 mph}, typing @kbd{u c m/s @key{RET}} produces
-@samp{24.5872 m/s}.  If the units you request are inconsistent with
-the original units, the number will be converted into your units
-times whatever ``remainder'' units are left over.  For example,
-converting @samp{55 mph} into acres produces @samp{6.08e-3 acre / m s}.
-(Recall that multiplication binds more strongly than division in Calc
-formulas, so the units here are acres per meter-second.)  Remainder
-units are expressed in terms of ``fundamental'' units like @samp{m} and
-@samp{s}, regardless of the input units.
+@samp{24.5872 m/s}.  If you have previously converted a units expression
+with the same type of units (in this case, distance over time), you will
+be offered the previous choice of new units as a default.  Continuing
+the above example, entering the units expression @samp{100 km/hr} and
+typing @kbd{u c @key{RET}} (without specifying new units) produces
+@samp{27.7777777778 m/s}.
+
+While many of Calc's conversion factors are exact, some are necessarily
+approximate.  If Calc is in fraction mode (@pxref{Fraction Mode}), then
+unit conversions will try to give exact, rational conversions, but it
+isn't always possible.  Given @samp{55 mph} in fraction mode, typing 
+@kbd{u c m/s @key{RET}} produces  @samp{15367:625 m/s}, for example, 
+while typing @kbd{u c au/yr @key{RET}} produces 
+@samp{5.18665819999e-3 au/yr}.
+
+If the units you request are inconsistent with the original units, the
+number will be converted into your units times whatever ``remainder''
+units are left over.  For example, converting @samp{55 mph} into acres
+produces @samp{6.08e-3 acre / m s}.  (Recall that multiplication binds
+more strongly than division in Calc formulas, so the units here are
+acres per meter-second.)  Remainder units are expressed in terms of
+``fundamental'' units like @samp{m} and @samp{s}, regardless of the
+input units.
 
 One special exception is that if you specify a single unit name, and
 a compatible unit appears somewhere in the units expression, then
@@ -27447,8 +27522,8 @@ If the value on the stack does not contain any units, @kbd{u c} will
 prompt first for the old units which this value should be considered
 to have, then for the new units.  Assuming the old and new units you
 give are consistent with each other, the result also will not contain
-any units.  For example, @kbd{@w{u c} cm @key{RET} in @key{RET}} converts the number
-2 on the stack to 5.08.
+any units.  For example, @kbd{@w{u c} cm @key{RET} in @key{RET}}
+converts the number 2 on the stack to 5.08.
 
 @kindex u b
 @pindex calc-base-units
@@ -27572,6 +27647,29 @@ column of the Units Table.
 @section Predefined Units
 
 @noindent
+The definitions of many units have changed over the years.  For example,
+the meter was originally defined in 1791 as one ten-millionth of the
+distance from the equator to the north pole.  In order to be more
+precise, the definition was adjusted several times, and now a meter is
+defined as the distance that light will travel in a vacuum in
+1/299792458 of a second; consequently, the speed of light in a
+vacuum is exactly 299792458 m/s.  Many other units have been
+redefined in terms of fundamental physical processes; a second, for
+example, is currently defined as 9192631770 periods of a certain
+radiation related to the cesium-133 atom.  The only SI unit that is not
+based on a fundamental physical process (although there are efforts to
+change this) is the kilogram, which was originally defined as the mass
+of one liter of water, but is now defined as the mass of the
+International Prototype Kilogram (IPK), a cylinder of platinum-iridium
+kept at the Bureau International des Poids et Mesures in S@`evres,
+France.  (There are several copies of the IPK throughout the world.)
+The British imperial units, once defined in terms of physical objects,
+were redefined in 1963 in terms of SI units.  The US customary units,
+which were the same as British units until the British imperial system
+was created in 1824, were also defined in terms of the SI units in 1893.
+Because of these redefinitions, conversions between metric, British
+Imperial, and US customary units can often be done precisely.
+
 Since the exact definitions of many kinds of units have evolved over the
 years, and since certain countries sometimes have local differences in
 their definitions, it is a good idea to examine Calc's definition of a
@@ -27594,9 +27692,9 @@ The unit @code{A} stands for Amperes; the name @code{Ang} is used
 @tex
 for \AA ngstroms.
 @end tex
-@ifinfo
+@ifnottex
 for Angstroms.
-@end ifinfo
+@end ifnottex
 
 The unit @code{pt} stands for pints; the name @code{point} stands for
 a typographical point, defined by @samp{72 point = 1 in}.  This is
@@ -28402,7 +28500,10 @@ variables.
 
 The ``x'' and ``y'' values for the data points (as pulled from the vectors,
 calculated from the formulas, or interpolated from the intervals) should
-be real numbers (integers, fractions, or floats).  If either the ``x''
+be real numbers (integers, fractions, or floats).  One exception to this
+is that the ``y'' entry can consist of a vector of numbers combined with
+error forms, in which case the points will be plotted with the
+appropriate error bars.  Other than this, if either the ``x''
 value or the ``y'' value of a given data point is not a real number, that
 data point will be omitted from the graph.  The points on either side
 of the invalid point will @emph{not} be connected by a line.
@@ -28800,7 +28901,9 @@ available for any device.
 The @kbd{g S} (@code{calc-graph-point-style}) command similarly turns
 the symbols at the data points on or off, or sets the point style.
 If you turn both lines and points off, the data points will show as
-tiny dots.
+tiny dots.  If the ``y'' values being plotted contain error forms and 
+the connecting lines are turned off, then this command will also turn 
+the error bars on or off.
 
 @cindex @code{LineStyles} variable
 @cindex @code{PointStyles} variable
@@ -34510,10 +34613,9 @@ See @ref{Graphics}.@*
 The variable @code{calc-gnuplot-name} should be the name of the
 GNUPLOT program (a string).  If you have GNUPLOT installed on your
 system but Calc is unable to find it, you may need to set this
-variable.  (@pxref{Customizing Calc})
-You may also need to set some Lisp variables to show Calc how to run
-GNUPLOT on your system, see @ref{Devices, ,Graphical Devices} .  The default value
-of @code{calc-gnuplot-name} is @code{"gnuplot"}.
+variable.  You may also need to set some Lisp variables to show Calc how
+to run GNUPLOT on your system, see @ref{Devices, ,Graphical Devices} .
+The default value of @code{calc-gnuplot-name} is @code{"gnuplot"}.
 @end defvar
 
 @defvar  calc-gnuplot-plot-command
@@ -34769,6 +34871,18 @@ should also be added to @code{calc-embedded-announce-formula-alist}
 and @code{calc-embedded-open-close-plain-alist}.
 @end defvar
 
+@defvar calc-multiplication-has-precedence
+The variable @code{calc-multiplication-has-precedence} determines
+whether multiplication has precedence over division in algebraic formulas
+in normal language modes.  If @code{calc-multiplication-has-precedence}
+is non-@code{nil}, then multiplication has precedence, and so for
+example @samp{a/b*c} will be interpreted as @samp{a/(b*c)}. If
+@code{calc-multiplication-has-precedence} is @code{nil}, then
+multiplication has the same precedence as division, and so for example
+@samp{a/b*c} will be interpreted as @samp{(a/b)*c}.  The default value
+of @code{calc-multiplication-has-precedence} is @code{t}.
+@end defvar
+
 @node Reporting Bugs, Summary, Customizing Calc, Top
 @appendix Reporting Bugs
 
@@ -36092,11 +36206,6 @@ the corresponding full Lisp name is derived by adding a prefix of
 
 @printindex fn
 
-@summarycontents
-
-@c [end]
-
-@contents
 @bye
 
 
similarity index 99%
rename from man/cc-mode.texi
rename to doc/misc/cc-mode.texi
index 423892d7d303c29cee9188efcbb6e422773c8498..f4d65ed07aa3b8acb7d58e9ebac5828edd5431a5 100644 (file)
@@ -81,7 +81,7 @@ the second with them pointing to the XEmacs manuals.
 @comment No overfull hbox marks in the dvi file.
 @finalout
 
-@setfilename  ../info/ccmode
+@setfilename  ../../info/ccmode
 @settitle     CC Mode Manual
 @footnotestyle end
 
@@ -208,9 +208,9 @@ license to the document, as described in section 6 of the license.
 @vskip 0pt plus 1filll
 @insertcopying
 
-This manual was generated from $Revision$ of $RCSfile$, which can be
-downloaded from
-@url{http://cvs.savannah.gnu.org/viewcvs/emacs/emacs/man/cc-mode.texi}.
+This manual was generated from cc-mode.texi, which can be downloaded
+from
+@url{http://cvs.savannah.gnu.org/viewcvs/emacs/emacs/doc/misc/cc-mode.texi}.
 @end titlepage
 
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
similarity index 99%
rename from man/cl.texi
rename to doc/misc/cl.texi
index 676b9edc5ad4c3624cb414fc271b808b110b68af..c27021cb3253396dbc77f80ac5d5e805db11c817 100644 (file)
@@ -1,5 +1,5 @@
 \input texinfo    @c -*-texinfo-*-
-@setfilename ../info/cl
+@setfilename ../../info/cl
 @settitle Common Lisp Extensions
 
 @copying
similarity index 99%
rename from man/dired-x.texi
rename to doc/misc/dired-x.texi
index bf2d5288abc1fae79cdd43aaab203dc1e2db25ce..0206bd20d86acc42ea8e19d224440e3c81a8e916 100644 (file)
@@ -15,7 +15,7 @@
 
 @comment %**start of header (This is for running Texinfo on a region.)
 @c FOR GNU EMACS USE ../info/dired-x BELOW
-@setfilename ../info/dired-x
+@setfilename ../../info/dired-x
 @c dired-x.el REVISION NUMBER
 @settitle Dired Extra Version 2 User's Manual
 @iftex
similarity index 100%
rename from man/doclicense.texi
rename to doc/misc/doclicense.texi
similarity index 99%
rename from man/ebrowse.texi
rename to doc/misc/ebrowse.texi
index c04f99f954cf232baeabd8476f0c97092cbacf7c..4fde4dc14142607dcd2e8803e4c413f6b23d0664 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo   @c -*-texinfo-*-
 
 @comment %**start of header
-@setfilename ../info/ebrowse
+@setfilename ../../info/ebrowse
 @settitle A Class Browser for C++
 @setchapternewpage odd
 @syncodeindex fn cp
similarity index 99%
rename from man/ediff.texi
rename to doc/misc/ediff.texi
index 6bb2605e0c6165d98e9fdf08aaefc1ec02bb7616..0822289ba7749fe9d233d0c9629c5d20e2ab9cae 100644 (file)
@@ -7,7 +7,7 @@
 @comment Using ediff.info instead of ediff in setfilename breaks DOS.
 @comment @setfilename ediff
 @comment @setfilename ediff.info
-@setfilename ../info/ediff
+@setfilename ../../info/ediff
 
 @settitle Ediff User's Manual
 @synindex vr cp
similarity index 99%
rename from man/emacs-mime.texi
rename to doc/misc/emacs-mime.texi
index 0f3c141c792e177afba753ccd477b11c2dae269a..7490c9b6bc20760cb8e215f890ec8d46aa6844b5 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo
 
-@setfilename ../info/emacs-mime
+@setfilename ../../info/emacs-mime
 @settitle Emacs MIME Manual
 @synindex fn cp
 @synindex vr cp
similarity index 96%
rename from man/erc.texi
rename to doc/misc/erc.texi
index 3e52bb42c922e01e9eaa427a32524ecef22d356d..fa5790f152762929d623ead0325cf983440b0f41 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo
 @c %**start of header
-@setfilename ../info/erc
+@setfilename ../../info/erc
 @settitle ERC Manual
 @c %**end of header
 
@@ -68,6 +68,10 @@ and modified without restriction.
 * Advanced Usage::              Cool ways of using ERC.
 * Getting Help and Reporting Bugs::  
 * History::                     The history of ERC.
+* Copying::                     The GNU General Public License gives you
+                                  permission to redistribute ERC on
+                                  certain terms; it also explains that
+                                  there is no warranty.
 * GNU Free Documentation License:: The license for this documentation.
 * Concept Index::               Search for terms.
 
@@ -389,7 +393,7 @@ buffers in Emacs.  We call these ``query buffers''.
 
 @item highlighting
 
-Some occurences of words can be highlighted, which makes it easier to
+Some occurrences of words can be highlighted, which makes it easier to
 track different kinds of conversations.
 
 @item notification
@@ -900,7 +904,7 @@ stuff, to the current ERC buffer."
 @c previous chapter)
 
 This section has not yet been written.  For now, the easiest way to
-check out the available option for ERC is to do
+check out the available options for ERC is to do
 @kbd{M-x customize-group erc RET}.
 
 
@@ -916,7 +920,7 @@ or if you have bugs to report, there are several places you can go.
 @itemize @bullet
 
 @item
-@uref{http://www.emacswiki.org/cgi-bin/wiki/EmacsIRCClient} is the
+@uref{http://www.emacswiki.org/cgi-bin/wiki/ERC} is the
 emacswiki.org page for ERC.  Anyone may add tips, hints, or bug
 descriptions to it.
 
@@ -929,14 +933,11 @@ The mailing lists are also available on Gmane.
 accessing the mailing lists, adding content to them, and searching them.
 
 @enumerate
-@item gmane.emacs.erc.announce
-Announcements
+@item gmane.emacs.erc.announce: Announcements
 
-@item gmane.emacs.erc.discuss
-General discussion
+@item gmane.emacs.erc.discuss: General discussion
 
-@item gmane.emacs.erc.cvs
-Log messages for changes to the ERC source code
+@item gmane.emacs.erc.cvs: Log messages for changes to the ERC source code
 
 @end enumerate
 
@@ -948,7 +949,7 @@ questions.
 @end itemize
 
 
-@node History, GNU Free Documentation License, Getting Help and Reporting Bugs, Top
+@node History, Copying, Getting Help and Reporting Bugs, Top
 @comment  node-name,  next,  previous,  up
 @chapter History
 @cindex history, of ERC
@@ -1010,8 +1011,12 @@ our revision control system.  Our mailing list address changed as well.
 
 @end itemize
 
-@node GNU Free Documentation License, Concept Index, History, Top
-@appendix GNU Free Documentation License
+@node Copying, GNU Free Documentation License, History, Top
+@comment  node-name,  next,  previous,  up
+@include gpl.texi
+
+@node GNU Free Documentation License, Concept Index, Copying, Top
+@comment  node-name,  next,  previous,  up
 @include doclicense.texi
 
 @node Concept Index,  , GNU Free Documentation License, Top
similarity index 99%
rename from man/eshell.texi
rename to doc/misc/eshell.texi
index 3a4b705d2c909c1468b31335e6bff5205c1d88f4..a6991bbb3e3b03f8cc0af5e3de35b2825d8d23d9 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo  @c -*-texinfo-*-
 @c %**start of header
-@setfilename ../info/eshell
+@setfilename ../../info/eshell
 @settitle Eshell: The Emacs Shell
 @synindex vr fn
 @c %**end of header
similarity index 99%
rename from man/eudc.texi
rename to doc/misc/eudc.texi
index 7a8dbbee52455b48797cce93a4d51f229982dd19..1c51eac7d976b89f435281841d1d3f140ade987a 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo.tex
 @c %**start of header
-@setfilename ../info/eudc
+@setfilename ../../info/eudc
 @settitle Emacs Unified Directory Client (EUDC) Manual
 @afourpaper
 @c %**end of header
similarity index 99%
rename from man/faq.texi
rename to doc/misc/faq.texi
index 787a85443fc022f366f53de052278c0f9dcf1dd0..fb64a22f13fbc62406448987ba844edb1aa60471 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo   @c -*- mode: texinfo; -*-
 @c %**start of header
-@setfilename ../info/efaq
+@setfilename ../../info/efaq
 @settitle GNU Emacs FAQ
 @c %**end of header
 
@@ -641,13 +641,14 @@ printed manual}.
 @item
 You can get a printed reference card listing commands and keys to
 invoke them.  You can order one from the FSF for $1 (or 10 for $5),
-or you can print your own from the @file{etc/refcard.tex} or
-@file{etc/refcard.ps} files in the Emacs distribution.  Beginning with
-version 21.1, the Emacs distribution comes with translations of the
-reference card into several languages; look for files named
-@file{etc/@var{lang}-refcard.*}, where @var{lang} is a two-letter code
-of the language.  For example, the German version of the reference card
-is in the files @file{etc/de-refcard.tex} and @file{etc/de-refcard.ps}.
+or you can print your own from the @file{etc/refcards/refcard.tex} or
+@file{etc/refcards/refcard.ps} files in the Emacs distribution.
+Beginning with version 21.1, the Emacs distribution comes with
+translations of the reference card into several languages; look for
+files named @file{etc/refcards/@var{lang}-refcard.*}, where @var{lang}
+is a two-letter code of the language.  For example, the German version
+of the reference card is in the files @file{etc/refcards/de-refcard.tex}
+and @file{etc/recards/de-refcard.ps}.
 
 @item
 There are many other commands in Emacs for getting help and
@@ -835,7 +836,7 @@ Make sure the first line of the Texinfo file looks like this:
 
 You may need to change @samp{texinfo} to the full pathname of the
 @file{texinfo.tex} file, which comes with Emacs as
-@file{man/texinfo.tex} (or copy or link it into the current directory).
+@file{doc/misc/texinfo.tex} (or copy or link it into the current directory).
 
 @item
 Type @kbd{texi2dvi @var{texinfo-source}}, where @var{texinfo-source} is
@@ -1012,7 +1013,8 @@ while.
 @item
 In the Emacs distribution.  Since Emacs 18.56, the FAQ at the time
 of release has been part of the Emacs distribution as either
-@file{etc/FAQ} or @file{man/faq.texi} (@pxref{File-name conventions}).
+@file{etc/FAQ}, @file{man/faq.texi}, or (from version 23 onwards)
+@file{doc/misc/faq.texi} (@pxref{File-name conventions}).
 
 @item
 Via anonymous ftp and e-mail from @file{rtfm.mit.edu} (and its mirror in
similarity index 99%
rename from man/flymake.texi
rename to doc/misc/flymake.texi
index 340a1d164fd7027b8ee48d3cc785292706c4f5a8..491ee631fe7977629d13221f263caa13dc0a17c0 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo   @c -*-texinfo-*-
 @comment %**start of header
-@setfilename ../info/flymake
+@setfilename ../../info/flymake
 @set VERSION 0.3
 @set UPDATED April 2004
 @settitle GNU Flymake @value{VERSION}
similarity index 99%
rename from man/forms.texi
rename to doc/misc/forms.texi
index 4114453df6cadd6c5a48ffcc594b5e5d50df933d..c2afc9a4a63419baa912092252cd51e7c8cc000e 100644 (file)
@@ -3,7 +3,7 @@
 @c Written by Johan Vromans, and edited by Richard Stallman
 
 @comment %**start of header (This is for running Texinfo on a region.)
-@setfilename ../info/forms
+@setfilename ../../info/forms
 @settitle Forms Mode User's Manual
 @syncodeindex vr cp
 @syncodeindex fn cp
similarity index 100%
rename from man/gnus-faq.texi
rename to doc/misc/gnus-faq.texi
similarity index 99%
rename from man/gnus.texi
rename to doc/misc/gnus.texi
index 0c9765d92b6a10cc1fc47598174f1a9737c7e1f8..4093b061f7404f628d1ecf7fb42ad4816f36b99c 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo
 
-@setfilename ../info/gnus
+@setfilename ../../info/gnus
 @settitle Gnus Manual
 @syncodeindex fn cp
 @syncodeindex vr cp
similarity index 100%
rename from man/gpl.texi
rename to doc/misc/gpl.texi
similarity index 99%
rename from man/idlwave.texi
rename to doc/misc/idlwave.texi
index 4f216ac87b880771ead700fa3516364ecd5f2521..36cc3e9087d72dfb4864949f39c7b617c9b4af21 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo  @c -*-texinfo-*-
 @c %**start of header
-@setfilename ../info/idlwave
+@setfilename ../../info/idlwave
 @settitle IDLWAVE User Manual
 @dircategory Emacs
 @direntry
similarity index 99%
rename from man/info.texi
rename to doc/misc/info.texi
index de586a65507cb1f03b674e609be895418b57a9c6..333e331b3540d09221c99f30ad19727f420e90c5 100644 (file)
@@ -26,9 +26,10 @@ 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 freedom to copy and modify
-this GNU Manual, like GNU software.  Copies published by the Free
-Software Foundation raise funds for GNU development.''
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and
+modify this GNU Manual, like GNU software.  Buying copies from GNU
+Press supports the FSF 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
@@ -907,6 +908,39 @@ is @code{Info-top-node}.
 @c If a menu appears at the end of this node, remove it.
 @c It is an accident of the menu updating command.
 
+@node Help-Q,  , Help-Int, Getting Started
+@comment  node-name,  next,  previous,  up
+@section Quitting Info
+
+@kindex q @r{(Info mode)}
+@findex Info-exit
+@cindex quitting Info mode
+  To get out of Info, back to what you were doing before, type @kbd{q}
+for @dfn{Quit}.  This runs @code{Info-exit} in Emacs.
+
+  This is the end of the basic course on using Info.  You have learned
+how to move in an Info document, and how to follow menus and cross
+references.  This makes you ready for reading manuals top to bottom,
+as new users should do when they learn a new package.
+
+  Another set of Info commands is useful when you need to find
+something quickly in a manual---that is, when you need to use a manual
+as a reference rather than as a tutorial.  We urge you to learn
+these search commands as well.  If you want to do that now, follow this
+cross reference to @ref{Advanced}.
+
+Yet another set of commands are meant for experienced users; you can
+find them by looking in the Directory node for documentation on Info.
+Finding them will be a good exercise in using Info in the usual
+manner.
+
+@format
+>> Type @kbd{d} to go to the Info directory node; then type
+   @kbd{mInfo} and Return, to get to the node about Info and
+   see what other help is available.
+@end format
+
+
 @node Advanced
 @chapter Advanced Info Commands
 
@@ -933,6 +967,7 @@ an actual @samp{?} character, the simplest way is to insert it using
 * Emacs Info Variables:: Variables modifying the behavior of Emacs Info.
 @end menu
 
+
 @node Search Text, Search Index,  , Advanced
 @comment  node-name,  next,  previous,  up
 @section How to search Info documents
@@ -1397,39 +1432,6 @@ cannot expect this node to have a @samp{Next}, @samp{Previous} or
 >> Type @kbd{l} to return to the node where the cross reference was.
 @end format
 
-@node Help-Q,  , Help-Int, Getting Started
-@comment  node-name,  next,  previous,  up
-@section Quitting Info
-
-@kindex q @r{(Info mode)}
-@findex Info-exit
-@cindex quitting Info mode
-  To get out of Info, back to what you were doing before, type @kbd{q}
-for @dfn{Quit}.  This runs @code{Info-exit} in Emacs.
-
-  This is the end of the basic course on using Info.  You have learned
-how to move in an Info document, and how to follow menus and cross
-references.  This makes you ready for reading manuals top to bottom,
-as new users should do when they learn a new package.
-
-  Another set of Info commands is useful when you need to find
-something quickly in a manual---that is, when you need to use a manual
-as a reference rather than as a tutorial.  We urge you to learn
-these search commands as well.  If you want to do that now, follow this
-cross reference to @ref{Advanced}.
-
-Yet another set of commands are meant for experienced users; you can
-find them by looking in the Directory node for documentation on Info.
-Finding them will be a good exercise in using Info in the usual
-manner.
-
-@format
->> Type @kbd{d} to go to the Info directory node; then type
-   @kbd{mInfo} and Return, to get to the node about Info and
-   see what other help is available.
-@end format
-
-
 @node Tags, Checking, Cross-refs, Expert Info
 @comment  node-name,  next,  previous,  up
 @section Tags Tables for Info Files
similarity index 78%
rename from man/makefile.w32-in
rename to doc/misc/makefile.w32-in
index 7e3723c1949ccec2fab093b0b32e0672eabd1d5b..60c1efcde44af02bbb8e6ca40676c44677dc573e 100644 (file)
@@ -1,4 +1,4 @@
-#### -*- Makefile -*- for the Emacs Manual and other documentation.
+#### -*- Makefile -*- for documentation other than the Emacs manual.
 
 # Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 
 # set by the configure script's `--srcdir' option.
 srcdir=.
 
-infodir = $(srcdir)/../info
+infodir = $(srcdir)/../../info
 
 # The makeinfo program is part of the Texinfo distribution.
 MAKEINFO = makeinfo --force
-MULTI_INSTALL_INFO = $(srcdir)\..\nt\multi-install-info.bat
-INFO_TARGETS = $(infodir)/emacs $(infodir)/ccmode \
+MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat
+INFO_TARGETS = $(infodir)/ccmode \
                $(infodir)/cl $(infodir)/dired-x $(infodir)/ediff \
                $(infodir)/forms $(infodir)/gnus $(infodir)/message \
                $(infodir)/sieve $(infodir)/pgg $(infodir)/emacs-mime \
@@ -43,14 +43,14 @@ INFO_TARGETS = $(infodir)/emacs $(infodir)/ccmode \
                $(infodir)/url $(infodir)/speedbar $(infodir)/tramp \
                $(infodir)/ses $(infodir)/smtpmail $(infodir)/flymake \
                $(infodir)/newsticker $(infodir)/rcirc $(infodir)/erc
-DVI_TARGETS =  emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
+DVI_TARGETS = calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
                 ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
                  gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
                 reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.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 emacs-xtra.dvi rcirc.dvi erc.dvi
+                 newsticker.dvi rcirc.dvi erc.dvi
 INFOSOURCES = info.texi
 
 # The following rule does not work with all versions of `make'.
@@ -59,66 +59,9 @@ INFOSOURCES = info.texi
        texi2dvi $<
 
 TEXI2DVI = texi2dvi
-ENVADD = $(srcdir)\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
+ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
         "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
 
-EMACS_XTRA=\
-       $(srcdir)/arevert-xtra.texi \
-       $(srcdir)/cal-xtra.texi \
-       $(srcdir)/dired-xtra.texi \
-       $(srcdir)/picture-xtra.texi \
-       $(srcdir)/emerge-xtra.texi \
-       $(srcdir)/vc-xtra.texi \
-       $(srcdir)/vc1-xtra.texi \
-       $(srcdir)/vc2-xtra.texi \
-       $(srcdir)/fortran-xtra.texi \
-       $(srcdir)/msdog-xtra.texi
-
-EMACSSOURCES= \
-       $(srcdir)/emacs.texi \
-       $(srcdir)/doclicense.texi \
-       $(srcdir)/screen.texi \
-       $(srcdir)/commands.texi \
-       $(srcdir)/entering.texi \
-       $(srcdir)/basic.texi \
-       $(srcdir)/mini.texi \
-       $(srcdir)/m-x.texi \
-       $(srcdir)/help.texi \
-       $(srcdir)/mark.texi \
-       $(srcdir)/killing.texi \
-       $(srcdir)/regs.texi \
-       $(srcdir)/display.texi \
-       $(srcdir)/search.texi \
-       $(srcdir)/fixit.texi \
-       $(srcdir)/files.texi \
-       $(srcdir)/buffers.texi \
-       $(srcdir)/windows.texi \
-       $(srcdir)/frames.texi \
-       $(srcdir)/mule.texi \
-       $(srcdir)/major.texi \
-       $(srcdir)/indent.texi \
-       $(srcdir)/text.texi \
-       $(srcdir)/programs.texi \
-       $(srcdir)/building.texi \
-       $(srcdir)/maintaining.texi \
-       $(srcdir)/abbrevs.texi \
-       $(srcdir)/sending.texi \
-       $(srcdir)/rmail.texi \
-       $(srcdir)/dired.texi \
-       $(srcdir)/calendar.texi \
-       $(srcdir)/misc.texi \
-       $(srcdir)/custom.texi \
-       $(srcdir)/trouble.texi \
-       $(srcdir)/cmdargs.texi \
-       $(srcdir)/xresources.texi \
-       $(srcdir)/anti.texi \
-       $(srcdir)/macos.texi \
-       $(srcdir)/msdog.texi \
-       $(srcdir)/gnu.texi \
-       $(srcdir)/glossary.texi \
-       $(srcdir)/ack.texi \
-       $(srcdir)/kmacro.texi \
-       $(EMACS_XTRA)
 
 info: $(INFO_TARGETS)
 
@@ -144,18 +87,6 @@ $(infodir)/info: $(INFOSOURCES)
 info.dvi: $(INFOSOURCES)
        $(ENVADD) $(TEXI2DVI) $(srcdir)/info.texi
 
-$(infodir)/emacs: $(EMACSSOURCES)
-       $(MAKEINFO) emacs.texi
-
-emacs.dvi: $(EMACSSOURCES)
-       $(ENVADD) $(TEXI2DVI) $(srcdir)/emacs.texi
-
-# This target is here so you could easily get the list of the *.texi
-# files which belong to the Emacs manual (as opposed to the separate
-# manuals for CL, CC Mode, Ebrowse, etc.).  With this target, you can
-# say things like "grep foo `make emacsman`".
-emacsman:
-       @echo $(EMACSSOURCES)
 
 $(infodir)/ccmode: cc-mode.texi
        $(MAKEINFO) cc-mode.texi
@@ -266,9 +197,6 @@ $(infodir)/efaq: faq.texi
 faq.dvi: faq.texi
        $(ENVADD) $(TEXI2DVI) $(srcdir)/faq.texi
 
-../etc/GNU: gnu1.texi gnu.texi
-       $(MAKEINFO) --no-headers -o ../etc/GNU gnu1.texi
-
 $(infodir)/autotype: autotype.texi
        $(MAKEINFO) autotype.texi
 autotype.dvi: autotype.texi
@@ -322,9 +250,6 @@ $(infodir)/smtpmail: smtpmail.texi
 smtpmail.dvi: smtpmail.texi
        $(ENVADD) $(TEXI2DVI) $(srcdir)/smtpmail.texi
 
-emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
-       $(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-xtra.texi
-
 $(infodir)/org: org.texi
        $(MAKEINFO) org.texi
 org.dvi: org.texi
@@ -355,7 +280,7 @@ mostlyclean:
 
 clean: mostlyclean
        - $(DEL) *.dvi
-       - $(DEL) $(infodir)/emacs* $(infodir)/ccmode* \
+       - $(DEL) $(infodir)/ccmode* \
                 $(infodir)/cl* $(infodir)/dired-x* \
                 $(infodir)/ediff* $(infodir)/forms* \
                 $(infodir)/gnus* $(infodir)/info* \
similarity index 99%
rename from man/message.texi
rename to doc/misc/message.texi
index 2bca4b046e5875f0353be53ff3091979999085e7..828af92fc0c2db02490b1f98ff6bda7827fa046a 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo                  @c -*-texinfo-*-
 
-@setfilename ../info/message
+@setfilename ../../info/message
 @settitle Message Manual
 @synindex fn cp
 @synindex vr cp
similarity index 99%
rename from man/mh-e.texi
rename to doc/misc/mh-e.texi
index a6341e80465105f5100a467c79a55d265551c2b0..dd1808a5a833d3a99a4408f39d572724b6613a52 100644 (file)
@@ -3,17 +3,17 @@
 @c Note: This document requires makeinfo version 4.6 or greater to build.
 @c
 @c %**start of header
-@setfilename ../info/mh-e
+@setfilename ../../info/mh-e
 @settitle The MH-E Manual
 @c %**end of header
 
 @c Version of the software and manual.
-@set VERSION 8.0.3
+@set VERSION 8.0.3+CVS
 @c Edition of the manual. It is either empty for the first edition or
 @c has the form ", nth Edition" (without the quotes).
 @set EDITION
-@set UPDATED 2006-11-12
-@set UPDATE-MONTH November, 2006
+@set UPDATED 2007-09-25
+@set UPDATE-MONTH September, 2007
 
 @c Other variables.
 @set MH-BOOK-HOME http://rand-mh.sourceforge.net/book/mh
@@ -2556,16 +2556,14 @@ includes the results of a quick poll of MH-E users from 2005-12-23.
 @cindex browser, @samp{w3m}
 @cindex @samp{w3m}
 @kindex Mouse-2
-@kindex S-Mouse-2
 @item @samp{w3m} 7
 The @samp{w3m} browser requires an external program. It's quick,
 produces pretty nice output, and best of all, it's the only browser
 that highlights links. These can be clicked with @kbd{Mouse-2} to view
-the content of the link in @samp{w3m} or with @kbd{S-Mouse-2} to view
-the content of the link in an external browser. The @samp{w3m} browser
-handles tables well and actually respects the table's width parameter
-(which can cause text to wrap if the author didn't anticipate that the
-page would be viewed in Emacs).
+the content of the link in @samp{w3m}. The @samp{w3m} browser handles
+tables well and actually respects the table's width parameter (which
+can cause text to wrap if the author didn't anticipate that the page
+would be viewed in Emacs).
 @c -------------------------
 @cindex browser, @samp{w3m-standalone}
 @cindex @samp{w3m-standalone}
@@ -2643,6 +2641,20 @@ documentation for the Gnus command @kbd{W h} (see section
 @cite{The Gnus Manual}).
 @end ifnotinfo
 
+@cindex @file{.emacs}
+@cindex files, @file{.emacs}
+@findex browse-url-at-mouse
+@kindex S-Mouse-2
+
+A useful key binding that you can add to to @file{~/.emacs} is the
+following which displays an HTML link or textual URL in an external
+browser when clicked with @kbd{S-mouse-2}. This binding works in any
+buffer, including HTML buffers.
+
+@smalllisp
+(global-set-key [S-mouse-2] 'browse-url-at-mouse)
+@end smalllisp
+
 @node Digests, Reading PGP, HTML, Reading Mail
 @section Digests
 
similarity index 99%
rename from man/newsticker.texi
rename to doc/misc/newsticker.texi
index 48d7f9926676e568c05b36067499834641e4322c..31bba4aa36aa093416d64b4cb3b7ef38b5e7161a 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo   @c -*-texinfo-*-
 @comment %**start of header
-@setfilename ../info/newsticker
+@setfilename ../../info/newsticker
 @set VERSION 1.9
 @set UPDATED November 2005
 @settitle Newsticker @value{VERSION}
similarity index 74%
rename from man/org.texi
rename to doc/misc/org.texi
index aacc2929d13b2700d87ade7804c377fba673ac43..cee6bf24cf018a1411674095f64c15b64d3a4855 100644 (file)
@@ -1,10 +1,10 @@
 \input texinfo
 @c %**start of header
-@setfilename ../info/org
+@setfilename ../../info/org
 @settitle Org Mode Manual
 
-@set VERSION 4.67
-@set DATE February 2007
+@set VERSION 5.07
+@set DATE August 2007
 
 @dircategory Emacs
 @direntry
@@ -80,8 +80,9 @@ Software Foundation raise funds for GNU development.''
 * Tables::                      Pure magic for quick formatting
 * Hyperlinks::                  Notes in context
 * TODO items::                  Every tree branch can be a TODO item
-* Timestamps::                  Assign date and time to items
 * Tags::                        Tagging headlines and matching sets of tags
+* Properties and columns::      
+* Timestamps::                  Assign date and time to items
 * Agenda views::                Collecting information into views
 * Embedded LaTeX::              LaTeX fragments and formulas
 * Exporting::                   Sharing and publishing of notes
@@ -89,7 +90,6 @@ Software Foundation raise funds for GNU development.''
 * Miscellaneous::               All the rest which did not fit elsewhere
 * Extensions and Hacking::      It is possible to write add-on code
 * History and Acknowledgments::  How Org-mode came into being 
-* GNU Free Documentation License:: The license for this documentation.
 * Index::                       The fast road to specific information
 * Key Index::                   Key bindings and where they are described
 
@@ -113,6 +113,8 @@ Document Structure
 * Archiving::                   Move done task trees to a different place
 * Sparse trees::                Matches embedded in context
 * Plain lists::                 Additional structure within an entry
+* Drawers::                     Tucking stuff away
+* orgstruct-mode::              Structure editing outside Org-mode
 
 Archiving
 
@@ -123,6 +125,7 @@ Tables
 
 * Built-in table editor::       Simple tables
 * Narrow columns::              Stop wasting space in tables   
+* Column groups::               Grouping to trigger vertical lines
 * orgtbl-mode::                 The table editor as minor mode
 * The spreadsheet::             The table editor has spreadsheet capabilities.
 
@@ -143,6 +146,7 @@ Hyperlinks
 * Internal links::              Links to other places in the current file
 * External links::              URL-like links to the world
 * Handling links::              Creating, inserting and following
+* Using links outside Org-mode::  Linking from my C source code?
 * Link abbreviations::          Shortcuts for writing complex links
 * Search options::              Linking to a specific location
 * Custom searches::             When the default search is not enough
@@ -163,26 +167,56 @@ TODO items
 * TODO basics::                 Marking and displaying TODO entries
 * TODO extensions::             Workflow and assignments
 * Priorities::                  Some things are more important than others
-* Breaking down tasks::         Splitting a task into managable pieces
+* Breaking down tasks::         Splitting a task into manageable pieces
 * Checkboxes::                  Tick-off lists
 
 Extended use of TODO keywords
 
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
+* Multiple sets in one file::   Mixing it all, and still finding your way
 * Per file keywords::           Different files, different requirements
 
+Tags
+
+* Tag inheritance::             Tags use the tree structure of the outline
+* Setting tags::                How to assign tags to a headline
+* Tag searches::                Searching for combinations of tags
+
+Properties and Columns
+
+* Property syntax::             How properties are spelled out
+* Special properties::          Access to other Org-mode features
+* Property searches::           Matching property values
+* Column view::                 Tabular viewing and editing
+* Property API::                Properties for Lisp programmers
+
+Column View
+
+* Defining columns::            The COLUMNS format property
+* Using column view::           How to create and use column view
+
+Defining Columns
+
+* Scope of column definitions::  Where defined, where valid?
+* Column attributes::           Appearance and content of a column
+
 Timestamps
 
 * Time stamps::                 Assigning a time to a tree entry
 * Creating timestamps::         Commands which insert timestamps
-* Custom time format::          If you cannot work with the ISO format
-* Repeating items::             Deadlines that come back again and again
+* Deadlines and scheduling::    Planning your work
 * Progress logging::            Documenting when what work was done.
 
 Creating timestamps
 
 * The date/time prompt::        How org-mode helps you entering date and time
+* Custom time format::          Making dates look differently
+
+Deadlines and Scheduling
+
+* Inserting deadline/schedule::  Planning items
+* Repeated tasks::              Items that show up again and again
 
 Progress Logging
 
@@ -190,12 +224,6 @@ Progress Logging
 * Tracking TODO state changes::  When did the status change?
 * Clocking work time::          When exactly did you work on this item?
 
-Tags
-
-* Tag inheritance::             Tags use the tree structure of the outline
-* Setting tags::                How to assign tags to a headline
-* Tag searches::                Searching for combinations of tags
-
 Agenda Views
 
 * Agenda files::                Files being searched for agenda information
@@ -209,7 +237,7 @@ The built-in agenda views
 
 * Weekly/Daily agenda::         The calendar page with current tasks
 * Global TODO list::            All unfinished action items
-* Matching headline tags::      Structured information with fine-tuned search
+* Matching tags and properties::  Structured information with fine-tuned search
 * Timeline::                    Time-sorted view for single file
 * Stuck projects::              Find projects you need to review
 
@@ -224,7 +252,8 @@ Custom agenda views
 * Storing searches::            Type once, use often
 * Block agenda::                All the stuff you need in a single buffer
 * Setting Options::             Changing the rules
-* Batch processing::            Agenda views from the command line
+* Exporting Agenda Views::      Writing agendas to files.
+* Extracting Agenda Information for other programs::  
 
 Embedded LaTeX
 
@@ -238,21 +267,29 @@ Exporting
 
 * ASCII export::                Exporting to plain ASCII
 * HTML export::                 Exporting to HTML
+* LaTeX export::                Exporting to LaTeX
 * XOXO export::                 Exporting to XOXO
 * iCalendar export::            Exporting in iCalendar format
 * Text interpretation::         How the exporter looks at the file
 
 HTML export
 
-* Export commands::             How to invode HTML export
+* HTML Export commands::        How to invoke LaTeX export
 * Quoting HTML tags::           Using direct HTML in Org-mode
-* Links::                       How hyperlinks get transferred to HTML
-* Images::                      To inline or not to inline?
-* CSS support::                 Style specifications
+* Links::                       Transformation of links for HTML
+* Images::                      How to include images
+* CSS support::                 Changing the appearence of the output
+
+LaTeX export
+
+* LaTeX export commands::       How to invoke LaTeX export
+* Quoting LaTeX code::          Incorporating literal LaTeX code
 
 Text interpretation by the exporter
 
 * Comment lines::               Some lines will not be exported
+* Initial text::                Text before the first headline
+* Footnotes::                   Numbers like [1]
 * Enhancing text::              Subscripts, symbols and more
 * Export options::              How to influence the export settings
 
@@ -296,9 +333,11 @@ Interaction with other packages
 Extensions, Hooks and Hacking
 
 * Extensions::                  Existing 3rd-part extensions
+* Adding hyperlink types::      New custom link types
 * Tables in arbitrary syntax::  Orgtbl for LaTeX and other programs
 * Dynamic blocks::              Automatically filled blocks
 * Special agenda views::        Customized views
+* Using the property API::      Writing programs that use entry properties
 
 Tables in arbitrary syntax
 
@@ -324,7 +363,7 @@ Tables in arbitrary syntax
 @section Summary
 @cindex summary
 
-Org-mode is a mode for keeping notes, maintaining ToDo lists, and doing
+Org-mode is a mode for keeping notes, maintaining TODO lists, and doing
 project planning with a fast and effective plain-text system.
 
 Org-mode develops organizational tasks around NOTES files that contain
@@ -332,7 +371,7 @@ lists or information about projects as plain text.  Org-mode is
 implemented on top of outline-mode, which makes it possible to keep the
 content of large files well structured.  Visibility cycling and
 structure editing help to work with the tree.  Tables are easily created
-with a built-in table editor.  Org-mode supports ToDo items, deadlines,
+with a built-in table editor.  Org-mode supports TODO items, deadlines,
 time stamps, and scheduling.  It dynamically compiles entries into an
 agenda that utilizes and smoothly integrates much of the Emacs calendar
 and diary.  Plain text URL-like links connect to websites, emails,
@@ -354,7 +393,7 @@ tags etc are created dynamically when you need them.
 Org-mode keeps simple things simple.  When first fired up, it should
 feel like a straightforward, easy to use outliner.  Complexity is not
 imposed, but a large amount of functionality is available when you need
-it.  Org-mode can be used on different levels and in different ways, for
+it.  Org-mode is a toolbox and can be used in different ways, for
 example as:
 
 @example
@@ -364,6 +403,7 @@ example as:
 @r{@bullet{} TODO list editor}
 @r{@bullet{} full agenda and planner with deadlines and work scheduling}
 @r{@bullet{} environment to implement David Allen's GTD system}
+@r{@bullet{} a basic database application}
 @r{@bullet{} simple hypertext system, with HTML export}
 @r{@bullet{} publishing tool to create a set of interlinked webpages}
 @end example
@@ -371,7 +411,9 @@ example as:
 Org-mode's automatic, context sensitive table editor with spreadsheet
 capabilities can be integrated into any major mode by activating the
 minor Orgtbl-mode.  Using a translation step, it can be used to maintain
-tables in arbitray file types, for example in LaTeX.
+tables in arbitrary file types, for example in La@TeX{}.  The structure
+editing and list creation capabilities can be used outside Org-mode with
+the minor Orgstruct-mode.
 
 @cindex FAQ
 There is a website for Org-mode which provides links to the newest
@@ -443,9 +485,10 @@ make install-info
 
 @iftex
 @b{Important:} @i{If you use copy-and-paste to copy lisp code from the
-PDF documentation to your .emacs file, the single quote character comes
-out incorrectly and the code will not work.  You need to fix the single
-quotes by hand, or copy from Info documentation.}
+PDF documentation as viewed by Acrobat reader to your .emacs file, the
+single quote character comes out incorrectly and the code will not work.
+You need to fix the single quotes by hand, or copy from Info
+documentation.}
 @end iftex
 
 Add the following lines to your @file{.emacs} file.  The last two lines
@@ -454,9 +497,9 @@ define @emph{global} keys for the commands @command{org-store-link} and
 
 @lisp
 ;; The following lines are always needed.  Choose your own keys.
-(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
-(define-key global-map "\C-cl" 'org-store-link)
-(define-key global-map "\C-ca" 'org-agenda)
+(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
+(global-set-key "\C-cl" 'org-store-link)
+(global-set-key "\C-ca" 'org-agenda)
 @end lisp
 
 Furthermore, you must activate @code{font-lock-mode} in org-mode
@@ -555,6 +598,8 @@ edit the structure of the document.
 * Archiving::                   Move done task trees to a different place
 * Sparse trees::                Matches embedded in context
 * Plain lists::                 Additional structure within an entry
+* Drawers::                     Tucking stuff away
+* orgstruct-mode::              Structure editing outside Org-mode
 @end menu
 
 @node Outlines, Headlines, Document structure, Document structure
@@ -562,15 +607,14 @@ edit the structure of the document.
 @cindex outlines
 @cindex outline-mode
 
-Org-mode is implemented on top of outline-mode.  Outlines allow to
-organize a document in a hierarchical structure, which (at least for
-me) is the best representation of notes and thoughts.  Overview over
-this structure is achieved by folding (hiding) large parts of the
+Org-mode is implemented on top of outline-mode.  Outlines allow a
+document to be organized in a hierarchical structure, which (at least
+for me) is the best representation of notes and thoughts.  An overview
+of this structure is achieved by folding (hiding) large parts of the
 document to show only the general document structure and the parts
 currently being worked on.  Org-mode greatly simplifies the use of
-outlines by compressing the entire show/hide functionality into a
-single command @command{org-cycle}, which is bound to the @key{TAB}
-key.
+outlines by compressing the entire show/hide functionality into a single
+command @command{org-cycle}, which is bound to the @key{TAB} key.
 
 @node Headlines, Visibility cycling, Outlines, Document structure
 @section Headlines
@@ -578,8 +622,9 @@ key.
 @cindex outline tree
 
 Headlines define the structure of an outline tree.  The headlines in
-Org-mode start with one or more stars, on the left margin.  For
-example:
+Org-mode start with one or more stars, on the left margin@footnote{See
+the variable @code{org-special-ctrl-a/e} to configure special behavior
+of @kbd{C-a} and @kbd{C-e} in headlines.}.  For example:
 
 @example
 * Top level headline
@@ -588,6 +633,7 @@ example:
     some text
 *** 3rd level
     more text
+
 * Another top level headline
 @end example
 
@@ -595,6 +641,12 @@ example:
 outline that has whitespace followed by a single star as headline
 starters.  @ref{Clean view} describes a setup to realize this.
 
+An empty line after the end of a subtree is considered part of it and
+will be hidden when the subtree is folded.  However, if you leave at
+least two empty lines, one empty line will remain visible after folding
+the subtree, in order to structure the collapsed view.  See the
+variable @code{org-cycle-separator-lines} to modify this behavior.
+
 @node Visibility cycling, Motion, Headlines, Document structure
 @section Visibility cycling
 @cindex cycling, visibility
@@ -615,7 +667,7 @@ Org-mode uses just two commands, bound to @key{TAB} and
 @table @kbd
 @kindex @key{TAB}
 @item @key{TAB}
-@emph{Subtree cycling}: Rotate current subtree between the states
+@emph{Subtree cycling}: Rotate current subtree among the states
 
 @example
 ,-> FOLDED -> CHILDREN -> SUBTREE --.
@@ -637,7 +689,7 @@ argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
 @kindex S-@key{TAB}
 @item S-@key{TAB}
 @itemx C-u @key{TAB}
-@emph{Global cycling}: Rotate the entire buffer between the states
+@emph{Global cycling}: Rotate the entire buffer among the states
 
 @example
 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
@@ -662,13 +714,19 @@ level, all sibling headings.
 @kindex C-c C-x b
 @item C-c C-x b
 Show the current subtree in an indirect buffer@footnote{The indirect
-buffer (@pxref{Indirect Buffers,Indirect Buffers,Indirect
-Buffers,emacs,GNU Emacs Manual}) will contain the entire buffer, but
-will be narrowed to the current tree.  Editing the indirect buffer will
-also change the original buffer, but without affecting visibility in
-that buffer.}.  With numerical prefix ARG, go up to this level and then
-take that tree.  If ARG is negative, go up that many levels.  With
-@kbd{C-u} prefix, do not remove the previously used indirect buffer.
+buffer
+@ifinfo
+(@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
+@end ifinfo
+@ifnotinfo
+(see the Emacs manual for more information about indirect buffers)
+@end ifnotinfo
+will contain the entire buffer, but will be narrowed to the current
+tree.  Editing the indirect buffer will also change the original buffer,
+but without affecting visibility in that buffer.}.  With numerical
+prefix ARG, go up to this level and then take that tree.  If ARG is
+negative, go up that many levels.  With @kbd{C-u} prefix, do not remove
+the previously used indirect buffer.
 @end table
 
 When Emacs first visits an Org-mode file, the global state is set to
@@ -710,10 +768,16 @@ Backward to higher level heading.
 @item C-c C-j
 Jump to a different place without changing the current outline
 visibility.  Shows the document structure in a temporary buffer, where
-you can use visibility cycling (@key{TAB}) to find your destination.
-After pressing @key{RET}, the cursor moves to the selected location in
-the original buffer, and the headings hierarchy above it is made
-visible.
+you can use the following keys to find your destination:
+@example
+@key{TAB}         @r{Cycle visibility.}
+@key{down} / @key{up}   @r{Next/previous visible headline.}
+n / p        @r{Next/previous visible headline.}
+f / b        @r{Next/previous headline same level.}
+u            @r{One level up.}
+0-9          @r{Digit argument.}
+@key{RET}         @r{Select this location.}
+@end example
 @end table
 
 @node Structure editing, Archiving, Motion, Document structure
@@ -784,9 +848,9 @@ Sort same-level entries.  When there is an active region, all entries in
 the region will be sorted.  Otherwise the children of the current
 headline are sorted.  The command prompts for the sorting method, which
 can be alphabetically, numerically, by time (using the first time stamp
-in each entry), and each of these in reverse order.  With a @kbd{C-u}
-prefix, sorting will be case-sensitive.  With two @kbd{C-u C-u}
-prefixes, duplicate entries will also be removed.
+in each entry), by priority, and each of these in reverse order.  With a
+@kbd{C-u} prefix, sorting will be case-sensitive.  With two @kbd{C-u
+C-u} prefixes, duplicate entries will also be removed.
 @end table
 
 @cindex region, active
@@ -874,7 +938,9 @@ file, the archive file.
 @kindex C-c C-x C-s
 @item C-c C-x C-s
 Archive the subtree starting at the cursor position to the location
-given by @code{org-archive-location}.
+given by @code{org-archive-location}.  Context information that could be
+lost like the file name, the category, inherited tags, and the todo
+state will be store as properties in the entry.
 @kindex C-u C-c C-x C-s
 @item C-u C-c C-x C-s
 Check if any direct children of the current headline could be moved to
@@ -930,9 +996,9 @@ match is in the body of an entry, headline and body are made visible.
 In order to provide minimal context, also the full hierarchy of
 headlines above the match is shown, as well as the headline following
 the match.  Each match is also highlighted; the highlights disappear
-when the buffer is changes an editing command, or by pressing @kbd{C-c
-C-c}.  When called with a @kbd{C-u} prefix argument, previous highlights
-are kept, so several calls to this command can be stacked.
+when the buffer is changed by an editing command, or by pressing
+@kbd{C-c C-c}.  When called with a @kbd{C-u} prefix argument, previous
+highlights are kept, so several calls to this command can be stacked.
 @end table
 @noindent
 For frequently used sparse trees of specific search strings, you can
@@ -962,7 +1028,7 @@ XEmacs uses selective display for outlining, not text properties.}.
 Or you can use the command @kbd{C-c C-e v} to export only the visible
 part of the document and print the resulting file.
 
-@node Plain lists,  , Sparse trees, Document structure
+@node Plain lists, Drawers, Sparse trees, Document structure
 @section Plain lists
 @cindex plain lists
 @cindex lists, plain
@@ -980,14 +1046,17 @@ bullet, lines must be indented or they will be seen as top-level
 headlines.  Also, when you are hiding leading stars to get a clean
 outline view, plain list items starting with a star are visually
 indistinguishable from true headlines.  In short: even though @samp{*}
-is supported, it may be better not to use it for plain list items} as
+is supported, it may be better not to use it for plain list items.} as
 bullets.  Ordered list items start with @samp{1.} or @samp{1)}.  Items
 belonging to the same list must have the same indentation on the first
 line.  In particular, if an ordered list reaches number @samp{10.}, then
 the 2--digit numbers must be written left-aligned with the other numbers
 in the list.  Indentation also determines the end of a list item.  It
 ends before the next line that is indented like the bullet/number, or
-less.  For example:
+less.  Empty lines are part of the previous item, so you can have
+several paragraphs in one item.  If you would like an empty line to
+terminate all currently open plain lists, configure the variable
+@code{org-empty-line-terminates-plain-lists}.  Here is an example:
 
 @example
 @group
@@ -1008,10 +1077,7 @@ Org-mode supports these lists by tuning filling and wrapping commands to
 deal with them correctly@footnote{Org-mode only changes the filling
 settings for Emacs.  For XEmacs, you should use Kyle E. Jones'
 @file{filladapt.el}.  To turn this on,  put into @file{.emacs}:
-@example
-(require 'filladapt)
-@end example
-}.
+@code{(require 'filladapt)}}. 
 
 The following commands act on items when the cursor is in the first line
 of an item (the line with the bullet or number).
@@ -1024,6 +1090,9 @@ Items can be folded just like headline levels if you set the variable
 given by the indentation of the bullet/number.  Items are always
 subordinate to real headlines, however; the hierarchies remain
 completely separated.
+
+If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
+fixes the indentation of the curent line in a heuristic way.
 @kindex M-@key{RET}
 @item M-@key{RET}
 Insert new item at current level.  With prefix arg, force a new heading
@@ -1062,10 +1131,64 @@ the command chain with a cursor motion or so.
 @kindex C-c C-c
 @item C-c C-c
 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
-state of the checkbox.  Otherwise, if this is an ordered list, renumber
-the ordered list at the cursor.
+state of the checkbox.  If not, make this command makes sure that all
+the items on this list level use the same bullet.  Furthermore, if this
+is an ordered list, make sure the numbering is ok.
+@kindex C-c -
+@item C-c -
+Cycle the entire list level through the different itemize/enumerate
+bullets (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}).
+With prefix arg, select the nth bullet from this list.
 @end table
 
+@node Drawers, orgstruct-mode, Plain lists, Document structure
+@section Drawers
+@cindex drawers
+@cindex visibility cycling, drawers
+
+Sometimes you want to keep information associated with an entry, but you
+normally don't want to see it.  For this, Org-mode has @emph{drawers}.
+Drawers need to be configured with the variable @code{org-drawers}, and
+look like this:
+
+@example
+** This is a headline
+   Still outside the drawer
+   :DRAWERNAME:
+      This is inside the drawer.
+   :END:
+   After the drawer.
+@end example
+
+Visibility cycling (@pxref{Visibility cycling}) on the headline will
+hide and show the entry, but keep the drawer collapsed to a single line.
+In order to look inside the drawer, you need to move the cursor to the
+drawer line and press @key{TAB} there.  Org-mode uses a drawer for
+storing properties (@pxref{Properties and columns}).
+
+@node orgstruct-mode,  , Drawers, Document structure
+@section The Orgstruct minor mode
+@cindex orgstruct-mode
+@cindex minor mode for structure editing
+
+If you like the intuitive way the Org-mode structure editing and list
+formatting works, you might want to use these commands in other modes
+like text-mode or mail-mode as well.  The minor mode Orgstruct-mode
+makes this possible.  You can always toggle the mode with @kbd{M-x
+orgstruct-mode}.  To turn it on by default, for example in mail mode,
+use
+
+@lisp
+(add-hook 'mail-mode-hook 'turn-on-orgstruct)
+@end lisp
+
+When this mode is active and the cursor is on a line that looks to
+Org-mode like a headline of the first line of a list item, most
+structure editing commands will work, even if the same keys normally
+have different functionality in the major mode you are using.  If the
+cursor is not in one of those special lines, Orgstruct-mode lurks
+silently in the shadow.
+
 @node Tables, Hyperlinks, Document structure, Top
 @chapter Tables
 @cindex tables
@@ -1078,6 +1201,7 @@ Emacs @file{calc} package.
 @menu
 * Built-in table editor::       Simple tables
 * Narrow columns::              Stop wasting space in tables   
+* Column groups::               Grouping to trigger vertical lines
 * orgtbl-mode::                 The table editor as minor mode
 * The spreadsheet::             The table editor has spreadsheet capabilities.
 @end menu
@@ -1087,9 +1211,9 @@ Emacs @file{calc} package.
 @cindex table editor, built-in
 
 Org-mode makes it easy to format tables in plain ASCII.  Any line with
-@samp{|} as the first non-white character is considered part of a
-table.  @samp{|} is also the column separator.  A table might look
-like this:
+@samp{|} as the first non-whitespace character is considered part of a
+table.  @samp{|} is also the column separator.  A table might look like
+this:
 
 @example
 | Name  | Phone | Age |
@@ -1141,16 +1265,16 @@ table.  But it's easier just to start typing, like
 @kindex C-c C-c
 @item C-c C-c
 Re-align the table without moving the cursor.
-
+@c
 @kindex @key{TAB}
 @item @key{TAB}
 Re-align the table, move to the next field.  Creates a new row if
 necessary.
-
+@c
 @kindex S-@key{TAB}
 @item S-@key{TAB}
 Re-align, move to previous field.
-
+@c
 @kindex @key{RET}
 @item @key{RET}
 Re-align the table and move down to next row.  Creates a new row if
@@ -1163,34 +1287,34 @@ NEWLINE, so it can be used to split a table.
 @item M-@key{left}
 @itemx M-@key{right}
 Move the current column left/right.
-
+@c
 @kindex M-S-@key{left}
 @item M-S-@key{left}
 Kill the current column.
-
+@c
 @kindex M-S-@key{right}
 @item M-S-@key{right}
 Insert a new column to the left of the cursor position.
-
+@c
 @kindex M-@key{up}
 @kindex M-@key{down}
 @item M-@key{up}
 @itemx M-@key{down}
 Move the current row up/down.
-
+@c
 @kindex M-S-@key{up}
 @item M-S-@key{up}
 Kill the current row or horizontal line.
-
+@c
 @kindex M-S-@key{down}
 @item M-S-@key{down}
 Insert a new row above (with arg: below) the current row.
-
+@c
 @kindex C-c -
 @item C-c -
 Insert a horizontal line below current row. With prefix arg, the line
 is created above the current line.
-
+@c
 @kindex C-c ^
 @item C-c ^
 Sort the table lines in the region.  The position of point indicates the
@@ -1209,10 +1333,12 @@ argument, alphabetic sorting will be case-sensitive.
 Copy a rectangular region from a table to a special clipboard.  Point
 and mark determine edge fields of the rectangle.  The process ignores
 horizontal separator lines.
+@c
 @kindex C-c C-x C-w
 @item C-c C-x C-w
 Copy a rectangular region from a table to a special clipboard, and
 blank all fields in the rectangle.  So this is the ``cut'' operation.
+@c
 @kindex C-c C-x C-y
 @item C-c C-x C-y
 Paste a rectangular region into a table.
@@ -1220,6 +1346,7 @@ The upper right corner ends up in the current field.  All involved fields
 will be overwritten.  If the rectangle does not fit into the present table,
 the table is enlarged as needed.  The process ignores horizontal separator
 lines.
+@c
 @kindex C-c C-q
 @item C-c C-q
 Wrap several fields in a column like a paragraph.  If there is an active
@@ -1235,7 +1362,6 @@ above.
 @tsubheading{Calculations}
 @cindex formula, in tables
 @cindex calculations, in tables
-
 @cindex region, active
 @cindex active region
 @cindex transient-mark-mode
@@ -1244,7 +1370,7 @@ above.
 Sum the numbers in the current column, or in the rectangle defined by
 the active region.  The result is shown in the echo area and can
 be inserted with @kbd{C-y}.
-
+@c
 @kindex S-@key{RET}
 @item S-@key{RET}
 When current field is empty, copy from first non-empty field above.
@@ -1261,12 +1387,12 @@ Edit the current field in a separate window.  This is useful for fields
 that are not fully visible (@pxref{Narrow columns}).  When called with a
 @kbd{C-u} prefix, just make the full field visible, so that it can be
 edited in place.
-
+@c
 @kindex C-c @key{TAB}
 @item C-c @key{TAB}
 This is an alias for @kbd{C-u C-c `} to make the current field fully
 visible.
-
+@c
 @item M-x org-table-import
 Import a file as a table.  The table should be TAB- or whitespace
 separated.  Useful, for example, to import an Excel table or data from a
@@ -1274,11 +1400,14 @@ database, because these programs generally can write TAB-separated text
 files.  This command works by inserting the file into the buffer and
 then converting the region to a table.  Any prefix argument is passed on
 to the converter, which uses it to determine the separator.
-
+@item C-c |
+Tables can also be imported by pasting tabular text into the org-mode
+buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
+@kbd{C-c |} command (see above under @i{Creation and conversion}.
+@c
 @item M-x org-table-export
 Export the table as a TAB-separated file.  Useful for data exchange with,
 for example, Excel or database programs.
-
 @end table
 
 If you don't like the automatic table editor because it gets in your
@@ -1292,7 +1421,7 @@ it off with
 @noindent Then the only table command that still works is
 @kbd{C-c C-c} to do a manual re-align.
 
-@node Narrow columns, orgtbl-mode, Built-in table editor, Tables
+@node Narrow columns, Column groups, Built-in table editor, Tables
 @section Narrow columns
 @cindex narrow columns in tables
 
@@ -1320,7 +1449,7 @@ value.
 @noindent
 Fields that are wider become clipped and end in the string @samp{=>}.
 Note that the full text is still in the buffer, it is only invisible.
-To see the full text, hold the mouse over the field - a tooltip window
+To see the full text, hold the mouse over the field - a tool-tip window
 will show the full content.  To edit such a field, use the command
 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
 open a new window with the full field.  Edit it and finish with @kbd{C-c
@@ -1338,7 +1467,42 @@ on a per-file basis with:
 #+STARTUP: noalign
 @end example
 
-@node orgtbl-mode, The spreadsheet, Narrow columns, Tables
+@node Column groups, orgtbl-mode, Narrow columns, Tables
+@section Column groups
+@cindex grouping columns in tables
+
+When Org-mode exports tables, it does so by default without vertical
+lines because that is visually more satisfying in general.  Occasionally
+however, vertical lines can be useful to structure a table into groups
+of columns, much like horizontal lines can do for groups of rows.  In
+order to specify column groups, you can use a special row where the
+first field contains only @samp{/}.  The further fields can either
+contain @samp{<} to indicate that this column should start a group,
+@samp{>} to indicate the end of a column, or @samp{<>} to make a column
+a group of its own.  Boundaries between colum groups will upon export be
+marked with vertical lines.  Here is an example:
+
+@example
+|   |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
+|---+----+-----+-----+-----+---------+------------|
+| / | <> |   < |     |   > |       < |          > |
+| # |  1 |   1 |   1 |   1 |       1 |          1 |
+| # |  2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
+| # |  3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
+|---+----+-----+-----+-----+---------+------------|
+#+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2))
+@end example
+
+It is also sufficient to just insert the colum group starters after
+every vertical line you'd like to have:
+
+@example
+|  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
+|----+-----+-----+-----+---------+------------|
+| /  | <   |     |     | <       |            |
+@end example
+
+@node orgtbl-mode, The spreadsheet, Column groups, Tables
 @section The Orgtbl minor mode
 @cindex orgtbl-mode
 @cindex minor mode for tables
@@ -1355,8 +1519,8 @@ example in mail mode, use
 
 Furthermore, with some special setup, it is possible to maintain tables
 in arbitrary syntax with Orgtbl-mode.  For example, it is possible to
-construct LaTeX tables with the underlying ease and power of
-Orgtbl-mode, including spreadsheet capabulities.  For details, see
+construct La@TeX{} tables with the underlying ease and power of
+Orgtbl-mode, including spreadsheet capabilities.  For details, see
 @ref{Tables in arbitrary syntax}.
 
 @node The spreadsheet,  , orgtbl-mode, Tables
@@ -1367,7 +1531,12 @@ Orgtbl-mode, including spreadsheet capabulities.  For details, see
 
 The table editor makes use of the Emacs @file{calc} package to implement
 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
-derive fields from other fields.
+derive fields from other fields.  While fully featured, Org-mode's
+implementation is not identical to other spreadsheets.  For example,
+Org-mode knows the concept of a @emph{column formula} that will be
+applied to all non-header fields in a column without having to copy the
+formula to each relevant field.
+
 @menu
 * References::                  How to refer to another field or range
 * Formula syntax for Calc::     Using Calc to compute stuff
@@ -1387,17 +1556,26 @@ To compute fields in the table from other fields, formulas must
 reference other fields or ranges.  In Org-mode, fields can be referenced
 by name, by absolute coordinates, and by relative coordinates.  To find
 out what the coordinates of a field are, press @kbd{C-c ?} in that
-field.
+field, or press @kbd{C-c @}} to toggle the display of a grid.
 
 @subsubheading Field references
 @cindex field references
 @cindex references, to fields
 
-Formulas can reference the value of another field with the operator
+Formulas can reference the value of another field in two ways.  Like in
+any other spreadsheet, you may reference fields with a letter/number
+combination like @code{B3}, meaning the 2nd field in the 3rd row.
+@c Such references are always fixed to that field, they don't change
+@c when you copy and paste a formula to a different field.  So
+@c Org-mode's @code{B3} behaves like @code{$B$3} in other spreadsheets.
+
+@noindent
+Org-mode also uses another, more general operator that looks like this:
 @example
 @@row$column
 @end example
 
+@noindent
 Column references can be absolute like @samp{1}, @samp{2},...@samp{N},
 or relative to the current column like @samp{+1} or @samp{-2}.
 
@@ -1417,18 +1595,20 @@ directly at the hline is used.
 either the column or the row part of the reference, the current
 row/column is implied. 
 
-Org-mode's references with @emph{positive} numbers correspond to fixed
-references in other spreadsheet programs.  For example, @code{@@3$28}
-corresponds to @code{$AB$3}.  Org-mode's references with @emph{negative}
-numbers behave similar to non-fixed references in other spreadsheet
-programs, because when the same formula is used in several fields,
-different fields are referenced each time.
+Org-mode's references with @emph{unsigned} numbers are fixed references
+in the sense that if you use the same reference in the formula for two
+different fields, the same field will be referenced each time.
+Org-mode's references with @emph{signed} numbers are floating
+references because the same reference operator can reference different
+fields depending on the field being calculated by the formula.
 
 Here are a few examples:
 
 @example
 @@2$3      @r{2nd row, 3rd column}
+C2        @r{same as previous}
 $5        @r{column 5 in the current row}
+E&        @r{same as previous}
 @@2        @r{current column, row 2}
 @@-1$-3    @r{the field one row up, three columns to the left}
 @@-I$2     @r{field just under hline above current row, column 2}
@@ -1449,6 +1629,7 @@ format at least for the first field (i.e the reference must start with
 $1..$3        @r{First three fields in the current row.}
 $P..$Q        @r{Range, using column names (see under Advanced)}
 @@2$1..@@4$3    @r{6 fields between these two fields.}
+A2..C4        @r{Same as above.}
 @@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row}
 @end example
 
@@ -1466,12 +1647,29 @@ see the @samp{E} mode switch below).  If there are no non-empty fields,
 
 @samp{$name} is interpreted as the name of a column, parameter or
 constant.  Constants are defined globally through the variable
-@code{org-table-formula-constants}.  If you have the
-@file{constants.el} package, it will also be used to resolve
-constants, including natural constants like @samp{$h} for Planck's
-constant, and units like @samp{$km} for kilometers.  Column names and
-parameters can be specified in special table lines.  These are
-described below, see @ref{Advanced features}.
+@code{org-table-formula-constants}, and locally (for the file) through a
+line like
+
+@example
+#+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
+@end example
+
+@noindent
+Also properties (@pxref{Properties and columns}) can be used as
+constants in table formulas: For a property @samp{:XYZ:} use the name
+@samp{$PROP_XYZ}, and the property will be searched in the current
+outline entry and in the hierarchy above it.  If you have the
+@file{constants.el} package, it will also be used to resolve constants,
+including natural constants like @samp{$h} for Planck's constant, and
+units like @samp{$km} for kilometers@footnote{@file{Constant.el} can
+supply the values of constants in two different unit systems, @code{SI}
+and @code{cgs}.  Which one is used depends on the value of the variable
+@code{constants-unit-system}.  You can use the @code{#+STARTUP} options
+@code{constSI} and @code{constcgs} to set this value for the current
+buffer.}.  Column names and parameters can be specified in special table
+lines.  These are described below, see @ref{Advanced features}.  All
+names must start with a letter, and further consist of letters and
+numbers.
 
 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
 @subsection Formula syntax for Calc
@@ -1485,6 +1683,7 @@ non-standard convention that @samp{/} has lower precedence than
 evaluation by @code{calc-eval} (@pxref{Calling Calc from
 Your Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU
 Emacs Calc Manual}),
+@c FIXME:  The link to the calc manual in HTML does not work.
 variable substitution takes place according to the rules described above.
 @cindex vectors, in table calculations
 The range vectors can be directly fed into the calc vector functions
@@ -1518,7 +1717,7 @@ reformat the final result.  A few examples:
 $1+$2                @r{Sum of first and second field}
 $1+$2;%.2f           @r{Same, format result to two decimals}
 exp($2)+exp($1)      @r{Math functions can be used}
-$;%.1f               @r{Reformat current cell to 1 decimal}
+$0;%.1f              @r{Reformat current cell to 1 decimal}
 ($3-32)*5/9          @r{Degrees F -> C conversion}
 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
@@ -1528,21 +1727,34 @@ vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
 taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
 @end example
 
+Calc also contains a complete set of logical operations.  For example
+
+@example
+if($1<20,teen,string(""))  @r{``teen'' if age $1 less than 20, else empty}
+@end example
+
 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
 @subsection Emacs Lisp forms as formulas
 @cindex Lisp forms, as table formulas
 
 It is also possible to write a formula in Emacs Lisp; this can be useful
-for string manipulation and control structures.  If a formula starts
-with a single quote followed by an opening parenthesis, then it is
-evaluated as a lisp form.  The evaluation should return either a string
-or a number.  Just as with @file{calc} formulas, you can specify modes
-and a printf format after a semicolon.  A reference will be replaced
-with a string (in double quotes) containing the field.  If you provide
-the @samp{N} mode switch, all referenced elements will be numbers.
-Ranges are inserted as space-separated fields, so you can embed them in
-list or vector syntax.  A few examples, note how the @samp{N} mode is
-used when we do computations in lisp.
+for string manipulation and control structures, if the Calc's
+functionality is not enough.  If a formula starts with a single quote
+followed by an opening parenthesis, then it is evaluated as a lisp form.
+The evaluation should return either a string or a number.  Just as with
+@file{calc} formulas, you can specify modes and a printf format after a
+semicolon.  With Emacs Lisp forms, you need to be concious about the way
+field references are interpolated into the form.  By default, a
+reference will be interpolated as a Lisp string (in double quotes)
+containing the field.  If you provide the @samp{N} mode switch, all
+referenced elements will be numbers (non-number fields will be zero) and
+interpolated as Lisp numbers, without quotes.  If you provide the
+@samp{L} flag, all fields will be interpolated literally, without quotes.
+I.e., if you want a reference to be interpreted as a string by the Lisp
+form, enclode the reference operator itself in double quotes, like
+@code{"$3"}.  Ranges are inserted as space-separated fields, so you can
+embed them in list or vector syntax.  A few examples, note how the
+@samp{N} mode is used when we do computations in lisp.
 
 @example
 @r{Swap the first two characters of the content of column 1}
@@ -1567,12 +1779,11 @@ evaluated, and the current field replaced with the result.
 Formulas are stored in a special line starting with @samp{#+TBLFM:}
 directly below the table.  If you typed the equation in the 4th field of
 the 3rd data line in the table, the formula will look like
-@samp{@@3$2=$1+$2}.  When inserting/deleting/swapping column and rows
+@samp{@@3$4=$1+$2}.  When inserting/deleting/swapping column and rows
 with the appropriate commands, @i{absolute references} (but not relative
-ones) in stored formulas are modified in order to
-still reference the same field.  Of cause this is not true if you edit
-the table structure with normal editing commands - then you must go and
-fix equations yourself.
+ones) in stored formulas are modified in order to still reference the
+same field.  Of cause this is not true if you edit the table structure
+with normal editing commands - then you must fix the equations yourself.
 
 Instead of typing an equation into the field, you may also use the
 following command
@@ -1593,7 +1804,9 @@ it to the current field and stores it.
 Often in a table, the same formula should be used for all fields in a
 particular column.  Instead of having to copy the formula to all fields
 in that column, org-mode allows to assign a single formula to an entire
-column.
+column.  If the table contains horizontal separator hlines, everything
+before the first such line is considered part of the table @emph{header}
+and will not be modified by column formulas.
 
 To assign a formula to a column, type it directly into any field in the
 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
@@ -1626,7 +1839,11 @@ will apply it to that many consecutive fields in the current column.
 
 You can edit individual formulas in the minibuffer or directly in the
 field.  Org-mode can also prepare a special buffer with all active
-formulas of a table.
+formulas of a table.  When offering a formula for editing, Org-mode
+converts references to the standard format (like @code{B3} or @code{D&})
+if possible.  If you prefer to only work with the internal format (like
+@code{@@3$2} or @code{$4}), configure the variable
+@code{org-table-use-standard-references}.
 
 @table @kbd
 @kindex C-c =
@@ -1645,21 +1862,36 @@ minibuffer is that you can use the command @kbd{C-c ?}.
 @item C-c ?
 While editing a formula in a table field, highlight the field(s)
 referenced by the reference at the cursor position in the formula.
+@kindex C-c @}
+@item C-c @}
+Toggle the display of row and column numbers for a table, using
+overlays.  These are updated each time the table is aligned, you can
+force it with @kbd{C-c C-c}.
+@kindex C-c @{
+@item C-c @{
+Toggle the formula debugger on and off.  See below.
 @kindex C-c '
 @item C-c '
 Edit all formulas for the current table in a special buffer, where the
-formulas will be displayed one per line. 
+formulas will be displayed one per line.  If the current field has an
+active formula, the cursor in the formula editor will mark it.
 While inside the special buffer, Org-mode will automatically highlight
 any field or range reference at the cursor position.  You may edit,
 remove and add formulas, and use the following commands:
 @table @kbd
 @kindex C-c C-c
+@kindex C-x C-s
 @item C-c C-c
-Exit the buffer and store the modified formulas.  With @kbd{C-u} prefix,
-also apply the new formulas to the entire table.
+@itemx C-x C-s
+Exit the formula editor and store the modified formulas.  With @kbd{C-u}
+prefix, also apply the new formulas to the entire table.
 @kindex C-c C-q
 @item C-c C-q
-Exit the buffer without installing changes.
+Exit the formula editor without installing changes.
+@kindex C-c C-r
+@item C-c C-r
+Toggle all references in the formula editor between standard (like
+@code{B3}) and internal (like @code{@@3$2}).
 @kindex @key{TAB}
 @item @key{TAB}
 Pretty-print or indent lisp formula at point.  When in a line containing
@@ -1671,23 +1903,25 @@ formula, @key{TAB} re-indents just like in Emacs-lisp-mode.
 Complete Lisp symbols, just like in Emacs-lisp-mode.
 @kindex S-@key{up}
 @kindex S-@key{down}
-@item S-@key{up}/@key{down}
-Move the reference line in the Org-mode buffer up and down.  This is
-important for highlighting the references of column formulas for
-different rows.
+@kindex S-@key{left}
+@kindex S-@key{right}
+@item S-@key{up}/@key{down}/@key{left}/@key{right}
+Shift the reference at point.  For example, if the reference is
+@code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
+This also works for relative references, and for hline references.
+@kindex M-S-@key{up}
+@kindex M-S-@key{down}
+@item M-S-@key{up}/@key{down}
+Move the test line for column formulas in the Org-mode buffer up and
+down.
 @kindex M-@key{up}
 @kindex M-@key{down}
 @item M-@key{up}/@key{down}
 Scroll the window displaying the table.
-@end table
 @kindex C-c @}
 @item C-c @}
-Toggle the display of row and column numbers for a table, using
-overlays.  These are uptated each time the table is aligned, you can
-force it with @kbd{C-c C-c}.
-@kindex C-c @{
-@item C-c @{
-Toggle the formula debugger on and off.  See below.
+Turn the coordinate grid in the table on and off.
+@end table
 @end table
 
 Making a table field blank does not remove the formula associated with
@@ -1708,8 +1942,8 @@ When the evaluation of a formula leads to an error, the field content
 becomes the string @samp{#ERROR}.  If you would like see what is going
 on during variable substitution and calculation in order to find a bug,
 turn on formula debugging in the @code{Tbl} menu and repeat the
-calculation, for example by pressing @kbd{C-c = @key{RET}} in a field.
-Detailed information will be displayed.
+calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
+field.  Detailed information will be displayed.
 
 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
 @subsection Updating the Table
@@ -1728,22 +1962,23 @@ following commands:
 @item C-c *
 Recalculate the current row by first applying the stored column formulas
 from left to right, and all field formulas in the current row.
-
+@c
 @kindex C-u C-c *
 @item C-u C-c *
 @kindex C-u C-c C-c
 @itemx C-u C-c C-c
 Recompute the entire table, line by line.  Any lines before the first
 hline are left alone, assuming that these are part of the table header.
-
+@c
 @kindex C-u C-u C-c *
+@kindex C-u C-u C-c C-c
 @item C-u C-u C-c *
+@itemx C-u C-u C-c C-c
 Iterate the table by recomputing it until no further changes occur.
 This may be necessary if some computed fields use the value of other
 fields that are computed @i{later} in the calculation sequence.
 @end table
 
-
 @node Advanced features,  , Updating the table, The spreadsheet
 @subsection Advanced features
 
@@ -1860,6 +2095,7 @@ links to other files, Usenet articles, emails, and much more.
 * Internal links::              Links to other places in the current file
 * External links::              URL-like links to the world
 * Handling links::              Creating, inserting and following
+* Using links outside Org-mode::  Linking from my C source code?
 * Link abbreviations::          Shortcuts for writing complex links
 * Search options::              Linking to a specific location
 * Custom searches::             When the default search is not enough
@@ -1917,8 +2153,8 @@ convenient to put them into a comment line. For example
 
 @noindent In HTML export (@pxref{HTML export}), such targets will become
 named anchors for direct access through @samp{http} links@footnote{Note
-that text before the first headline will never be exported, so the first
-such target must be after the first headline.}.
+that text before the first headline is usually not exported, so the
+first such target should be after the first headline.}.
 
 If no dedicated target exists, Org-mode will search for the words in the
 link.  In the above example the search would be for @samp{my target}.
@@ -1954,15 +2190,15 @@ earlier.
 @cindex targets, radio
 @cindex links, radio targets
 
-You can configure Org-mode to link any occurrences of certain target
-names in normal text.  So without explicitly creating a link, the text
-connects to the target radioing its position.  Radio targets are
-enclosed by triple angular brackets.  For example, a target
-@samp{<<<My Target>>>} causes each occurrence of @samp{my target} in
-normal text to become activated as a link.  The Org-mode file is
-scanned automatically for radio targets only when the file is first
-loaded into Emacs.  To update the target list during editing, press
-@kbd{C-c C-c} with the cursor on or at a target.
+Org-mode can automatically turn any occurrences of certain target names
+in normal text into a link.  So without explicitly creating a link, the
+text connects to the target radioing its position.  Radio targets are
+enclosed by triple angular brackets.  For example, a target @samp{<<<My
+Target>>>} causes each occurrence of @samp{my target} in normal text to
+become activated as a link.  The Org-mode file is scanned automatically
+for radio targets only when the file is first loaded into Emacs.  To
+update the target list during editing, press @kbd{C-c C-c} with the
+cursor on or at a target.
 
 @node External links, Handling links, Internal links, Hyperlinks
 @section External links
@@ -2032,7 +2268,7 @@ as links.  If spaces must be part of the link (for example in
 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
 about the end of the link, enclose them in angular brackets.
 
-@node Handling links, Link abbreviations, External links, Hyperlinks
+@node Handling links, Using links outside Org-mode, External links, Hyperlinks
 @section Handling links
 @cindex links, handling
 
@@ -2058,7 +2294,7 @@ automatically created link is not working correctly or accurately
 enough, you can write custom functions to select the search string and
 to do the search for particular file types - see @ref{Custom searches}.
 The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation}.
-
+@c
 @kindex C-c C-l
 @cindex link completion
 @cindex completion, of links
@@ -2068,24 +2304,26 @@ Insert a link.  This prompts for a link to be inserted into the buffer.
 You can just type a link, using text for an internal link, or one of the
 link type prefixes mentioned in the examples above.  All links stored
 during the current session are part of the history for this prompt, so
-you can access them with @key{up} and @key{down}, or with
-completion@footnote{After insertion of a stored link, the link will be
-removed from the list of stored links.  To keep it in the list later
+you can access them with @key{up} and @key{down}.  Completion, on the
+other hand, will help you to insert valid link prefixes like
+@samp{http:} or @samp{ftp:}, including the prefixes defined through link
+abbreviations (@pxref{Link abbreviations}).  The link will be inserted
+into the buffer@footnote{After insertion of a stored link, the link will
+be removed from the list of stored links.  To keep it in the list later
 use, use a triple @kbd{C-u} prefix to @kbd{C-c C-l}, or configure the
-option @code{org-keep-stored-link-after-insertion}.}.  The link will be
-inserted into the buffer, along with a descriptive text.  If some text
-was selected when this command is called, the selected text becomes the
-default description.@* Note that you don't have to use this command to
-insert a link.  Links in Org-mode are plain text, and you can type or
-paste them straight into the buffer.  By using this command, the links
-are automatically enclosed in double brackets, and you will be asked for
-the optional descriptive text.
-
+option @code{org-keep-stored-link-after-insertion}.}, along with a
+descriptive text.  If some text was selected when this command is
+called, the selected text becomes the default description.@* Note that
+you don't have to use this command to insert a link.  Links in Org-mode
+are plain text, and you can type or paste them straight into the buffer.
+By using this command, the links are automatically enclosed in double
+brackets, and you will be asked for the optional descriptive text.
+@c
 @c  If the link is a @samp{file:} link and
 @c the linked file is located in the same directory as the current file or
 @c a subdirectory of it, the path of the file will be inserted relative to
 @c the current directory.
-
+@c
 @kindex C-u C-c C-l
 @cindex file name completion
 @cindex completion, of file names
@@ -2098,11 +2336,11 @@ directory or in a subdirectory of it, or if the path is written relative
 to the current directory using @samp{../}.  Otherwise an absolute path
 is used, if possible with @samp{~/} for your home directory.  You can
 force an absolute path with two @kbd{C-u} prefixes.
-
-@item C-c C-l @r{with cursor on existing link}
+@c
+@item C-c C-l @r{(with cursor on existing link)}
 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
 link and description parts of the link.
-
+@c
 @cindex following links
 @kindex C-c C-o
 @item C-c C-o
@@ -2118,26 +2356,26 @@ suitable application for local non-text files.  Classification of files
 is based on file extension only.  See option @code{org-file-apps}.  If
 you want to override the default application and visit the file with
 Emacs, use a @kbd{C-u} prefix.
-
+@c
 @kindex mouse-2
 @kindex mouse-1
 @item mouse-2
 @itemx mouse-1
 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
 would.  Under Emacs 22, also @kbd{mouse-1} will follow a link.
-
+@c
 @kindex mouse-3
 @item mouse-3
 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
 internal links to be displayed in another window@footnote{See the
 variable @code{org-display-internal-link-with-indirect-buffer}}.
-
+@c
 @cindex mark ring
 @kindex C-c %
 @item C-c %
 Push the current position onto the mark ring, to be able to return
 easily. Commands following an internal link do this automatically.
-
+@c
 @cindex links, returning to
 @kindex C-c &
 @item C-c &
@@ -2145,7 +2383,7 @@ Jump back to a recorded position.  A position is recorded by the
 commands following internal links, and by @kbd{C-c %}.  Using this
 command several times in direct succession moves through a ring of
 previously recorded positions.
-
+@c
 @kindex C-c C-x C-n
 @kindex C-c C-x C-p
 @cindex links, finding next/previous
@@ -2163,7 +2401,20 @@ to @kbd{C-n} and @kbd{C-p}
 @end lisp
 @end table
 
-@node Link abbreviations, Search options, Handling links, Hyperlinks
+@node Using links outside Org-mode, Link abbreviations, Handling links, Hyperlinks
+@section Using links outside Org-mode
+
+You can insert and follow links that have Org-mode syntax not only in
+Org-mode, but in any Emacs buffer.  For this, you should create two
+global commands, like this (please select suitable global keys
+yourself):
+
+@lisp
+(global-set-key "\C-c L" 'org-insert-link-global)
+(global-set-key "\C-c o" 'org-open-at-point-global)
+@end lisp
+
+@node Link abbreviations, Search options, Using links outside Org-mode, Hyperlinks
 @section Link abbreviations
 @cindex link abbreviations
 @cindex abbreviation, links
@@ -2341,8 +2592,8 @@ use:
 @noindent In these entries, the character specifies how to select the
 template.  The first string specifies the template.  Two more (optional)
 strings give the file in which, and the headline under which the new
-note should be stored.  The file defaults to
-@code{org-default-notes-file}, the heading to
+note should be stored.  The file defaults (if not present or @code{nil})
+to @code{org-default-notes-file}, the heading to
 @code{org-remember-default-headline}.  Both defaults help to get to the
 storing location quickly, but you can change the location interactively
 while storing the note.
@@ -2377,6 +2628,8 @@ insertion of content:
 %a          @r{annotation, normally the link created with @code{org-store-link}}
 %i          @r{initial content, the region when remember is called with C-u.}
             @r{The entire text will be indented like @code{%i} itself.}
+%^g         @r{prompt for tags, with completion on tags in target file.}
+%^G         @r{prompt for tags, with completion all tags in all agenda files.}
 %:keyword   @r{specific information for certain link types, see below}
 @end example
 
@@ -2398,8 +2651,7 @@ calendar           |  %:date"
 @end example
 
 @noindent
-If you would like to have the cursor in a specific position after the
-template has been expanded:
+To place the cursor after template expansion use:
 
 @example
 %?          @r{After completing the template, position cursor here.}
@@ -2408,7 +2660,7 @@ template has been expanded:
 @noindent
 If you change you mind about which template to use, call
 @code{org-remember} in the remember buffer.  You may then select a new
-template that will be filled with the previoous context information.
+template that will be filled with the previous context information.
 
 @node Storing notes,  , Remember templates, Remember
 @subsection Storing notes
@@ -2419,20 +2671,27 @@ target file - if you press @key{RET}, the value specified for the
 template is used.  Then the command offers the headings tree of the
 selected file, with the cursor position at the default headline (if you
 had specified one in the template).  You can either immediately press
-@key{RET} to get the note placed there.  Or you can use vertical cursor
-motion (@key{up} and @key{down}) and visibility cycling (@key{TAB}) to
-find a better place.  Pressing @key{RET} or @key{left} or @key{right}
+@key{RET} to get the note placed there.  Or you can use the following
+keys to find a better location:
+@example
+@key{TAB}         @r{Cycle visibility.}
+@key{down} / @key{up}   @r{Next/previous visible headline.}
+n / p        @r{Next/previous visible headline.}
+f / b        @r{Next/previous headline same level.}
+u            @r{One level up.}
+@c 0-9          @r{Digit argument.}
+@end example
+@noindent
+Pressing @key{RET} or @key{left} or @key{right}
 then leads to the following result.
 
-@multitable @columnfractions 0.2 0.1 0.7
+@multitable @columnfractions 0.2 0.15 0.65
 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
 @item buffer-start @tab @key{RET} @tab as level 2 heading at end of file
 @item on headline @tab @key{RET} @tab as sublevel of the heading at cursor
-@item             @tab @key{left}  @tab as same level, before current heading
-@item             @tab @key{right} @tab as same level, after current heading
+@item             @tab @key{left}/@key{right} @tab as same level, before/after current heading
 @item not on headline @tab @key{RET}
       @tab at cursor position, level taken from context.
-           Or use prefix arg to specify level manually.
 @end multitable
 
 So a fast way to store the note to its default location is to press
@@ -2448,7 +2707,7 @@ non-nil, the entire text is also indented so that it starts in the
 same column as the headline (after the asterisks).
 
 
-@node TODO items, Timestamps, Hyperlinks, Top
+@node TODO items, Tags, Hyperlinks, Top
 @chapter TODO items
 @cindex TODO items
 
@@ -2467,7 +2726,7 @@ things you have to do.
 * TODO basics::                 Marking and displaying TODO entries
 * TODO extensions::             Workflow and assignments
 * Priorities::                  Some things are more important than others
-* Breaking down tasks::         Splitting a task into managable pieces
+* Breaking down tasks::         Splitting a task into manageable pieces
 * Checkboxes::                  Tick-off lists
 @end menu
 
@@ -2488,7 +2747,7 @@ The most important commands to work with TODO entries are:
 @kindex C-c C-t
 @cindex cycling, of TODO states
 @item C-c C-t
-Rotate the TODO state of the current item between
+Rotate the TODO state of the current item among
 
 @example
 ,-> (unmarked) -> TODO -> DONE --.
@@ -2502,15 +2761,27 @@ agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
 @item S-@key{right}
 @itemx S-@key{left}
 Select the following/preceding TODO state, similar to cycling.  Mostly
-useful if more than two TODO states are possible (@pxref{TODO extensions}).
+useful if more than two TODO states are possible (@pxref{TODO
+extensions}).
+@kindex C-c C-c
+@item C-c C-c
+Use the fast tag interface to quickly and directly select a specific
+TODO state.  For this you need to assign keys to TODO state, like this:
+@example
+#+SEQ_TODO: TODO(t) STARTED(s) WAITING(w) | DONE(d)
+@end example
+@noindent See @ref{Per file keywords} and @ref{Setting tags} for more
+information.
 @kindex C-c C-v
 @cindex sparse tree, for TODO
 @item C-c C-v
 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds
 the entire buffer, but shows all TODO items and the headings hierarchy
-above them.  With prefix arg, show also the DONE entries.  With
-numerical prefix N, show the tree for the Nth keyword in the variable
-@code{org-todo-keywords}.
+above them.  With prefix arg, search for a specific TODO.  You will be
+prompted for the keyword, and you can also give a list of keywords like
+@code{kwd1|kwd2|...}.  With numerical prefix N, show the tree for the
+Nth keyword in the variable @code{org-todo-keywords}.  With two prefix
+args, find all TODO and DONE entries.
 @kindex C-c a t
 @item C-c a t
 Show the global TODO list.  This collects the TODO items from all
@@ -2518,21 +2789,19 @@ agenda files (@pxref{Agenda views}) into a single buffer.  The buffer is in
 @code{agenda-mode}, so there are commands to examine and manipulate
 the TODO entries directly from that buffer (@pxref{Agenda commands}).
 @xref{Global TODO list}, for more information.
-@c @item @code{org-agenda-include-all-todo}
-@c If you would like to have all your TODO items listed as part of your
-@c agenda, customize the variable @code{org-agenda-include-all-todo}.
+@kindex S-M-@key{RET}
+@item S-M-@key{RET}
+Insert a new TODO entry below the current one.
 @end table
 
-
 @node TODO extensions, Priorities, TODO basics, TODO items
 @section Extended use of TODO keywords
 @cindex extended TODO keywords
 
 The default implementation of TODO entries is just two states: TODO and
-DONE.  You can, however, use the TODO feature for more complicated
-things by configuring the variables @code{org-todo-keywords} and
-@code{org-todo-interpretation}.  Using special setup, you can even use
-TODO keywords in different ways in different org files.
+DONE.  You can use the TODO feature for more complicated things by
+configuring the variable @code{org-todo-keywords}.  With special setup,
+the TODO keyword system can work differently in different files.
 
 Note that @i{tags} are another way to classify headlines in general and
 TODO items in particular (@pxref{Tags}).
@@ -2540,6 +2809,7 @@ TODO items in particular (@pxref{Tags}).
 @menu
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
+* Multiple sets in one file::   Mixing it all, and still finding your way
 * Per file keywords::           Different files, different requirements
 @end menu
 
@@ -2548,77 +2818,132 @@ TODO items in particular (@pxref{Tags}).
 @cindex TODO workflow
 @cindex workflow states as TODO keywords
 
-You can use TODO keywords to indicate different states in the process
-of working on an item, for example:
+You can use TODO keywords to indicate different @emph{sequential} states
+in the process of working on an item, for example@footnote{Changing
+this variable only becomes effective after restarting Org-mode in a
+buffer.}:
 
 @lisp
-(setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE")
-      org-todo-interpretation 'sequence)
+(setq org-todo-keywords
+  '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
 @end lisp
 
+The vertical bar separates the TODO keywords (states that @emph{need
+action}) from the DONE states (which need @emph{no further action}.  If
+you don't provide the separator bar, the last state is used as the DONE
+state.
 @cindex completion, of TODO keywords
-Changing these variables only becomes effective in a new Emacs session.
-With this setup, the command @kbd{C-c C-t} will cycle an entry from
-TODO to FEEDBACK, then to VERIFY, and finally to DONE.  You may also
-use a prefix argument to quickly select a specific state.  For example
-@kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
+With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
+to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
+also use a prefix argument to quickly select a specific state.  For
+example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
 If you define many keywords, you can use in-buffer completion (see
-@ref{Completion}) to insert these words into the buffer.  Changing a todo
-state can be logged with a timestamp, see @ref{Tracking TODO state
+@ref{Completion}) to insert these words into the buffer.  Changing a
+todo state can be logged with a timestamp, see @ref{Tracking TODO state
 changes} for more information.
 
-@node TODO types, Per file keywords, Workflow states, TODO extensions
+@node TODO types, Multiple sets in one file, Workflow states, TODO extensions
 @subsection TODO keywords as types
 @cindex TODO types
 @cindex names as TODO keywords
 @cindex types as TODO keywords
 
 The second possibility is to use TODO keywords to indicate different
-types of action items.  For example, you might want to indicate that
-items are for ``work'' or ``home''.  If you are into David Allen's
-@emph{Getting Things DONE}, you might want to use todo types
-@samp{NEXTACTION}, @samp{WAITING}, @samp{MAYBE}.  Or, when you work
-with several people on a single project, you might want to assign
-action items directly to persons, by using their names as TODO
-keywords.  This would be set up like this:
+@emph{types} of action items.  For example, you might want to indicate
+that items are for ``work'' or ``home''.  Or, when you work with several
+people on a single project, you might want to assign action items
+directly to persons, by using their names as TODO keywords.  This would
+be set up like this:
+
+@lisp
+(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
+@end lisp
+
+In this case, different keywords do not indicate a sequence, but rather
+different types.  So the normal work flow would be to assign a task to a
+person, and later to mark it DONE.  Org-mode supports this style by
+adapting the workings of the command @kbd{C-c C-t}@footnote{This is also
+true for the @kbd{t} command in the timeline and agenda buffers.}.  When
+used several times in succession, it will still cycle through all names,
+in order to first select the right type for a task.  But when you return
+to the item after some time and execute @kbd{C-c C-t} again, it will
+switch from any name directly to DONE.  Use prefix arguments or
+completion to quickly select a specific name.  You can also review the
+items of a specific TODO type in a sparse tree by using a numeric prefix
+to @kbd{C-c C-v}.  For example, to see all things Lucy has to do, you
+would use @kbd{C-3 C-c C-v}.  To collect Lucy's items from all agenda
+files into a single buffer, you would use the prefix arg as well when
+creating the global todo list: @kbd{C-3 C-c t}.
+
+@node Multiple sets in one file, Per file keywords, TODO types, TODO extensions
+@subsection Multiple keyword sets in one file
+@cindex todo keyword sets
+
+Sometimes you may want to use different sets of TODO keywords in
+parallel.  For example, you may want to have the basic
+@code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
+separate state indicating that an item has been canceled (so it is not
+DONE, but also does not require action).  Your setup would then look
+like this:
 
 @lisp
-(setq org-todo-keywords '("Fred" "Sara" "Lucy" "Mike" "DONE")
-      org-todo-interpretation 'type)
+(setq org-todo-keywords
+      '((sequence "TODO" "|" "DONE")
+        (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
+        (sequence "|" "CANCELED")))
 @end lisp
 
-In this case, different keywords do not indicate a sequence, but
-rather different types.  So it is normally not useful to change from
-one type to another.  Therefore, in this case the behavior of the
-command @kbd{C-c C-t} is changed slightly@footnote{This is also true
-for the @kbd{t} command in the timeline and agenda buffers.}.  When
-used several times in succession, it will still cycle through all
-names.  But when you return to the item after some time and execute
-@kbd{C-c C-t} again, it will switch from each name directly to DONE.
-Use prefix arguments or completion to quickly select a specific name.
-You can also review the items of a specific TODO type in a sparse tree
-by using a numeric prefix to @kbd{C-c C-v}.  For example, to see all
-things Lucy has to do, you would use @kbd{C-3 C-c C-v}.  To collect
-Lucy's items from all agenda files into a single buffer, you
-would use the prefix arg as well when creating the global todo list:
-@kbd{C-3 C-c t}.
-
-@node Per file keywords,  , TODO types, TODO extensions
-@subsection Setting up TODO keywords for individual files
+The keywords should all be different, this helps Org-mode to keep track
+of which subsequence should be used for a given entry.  In this setup,
+@kbd{C-c C-t} only operates within a subsequence, so it switches from
+@code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
+(nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
+select the correct sequence.  Besides the obvious ways like typing a
+keyword or using completion, you may also apply the following commands:
+
+@table @kbd
+@kindex C-S-@key{right}
+@kindex C-S-@key{left}
+@item C-S-@key{right}
+@itemx C-S-@key{left}
+These keys jump from one TODO subset to the next.  In the above example,
+@kbd{C-S-@key{right}} would jump from @code{TODO} or @code{DONE} to
+@code{REPORT}, and any of the words in the second row to @code{CANCELED}.
+@kindex S-@key{right}
+@kindex S-@key{left}
+@item S-@key{right}
+@itemx S-@key{left}
+@kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through
+@emph{all} keywords from all sets, so for example @kbd{S-@key{<right>}}
+would switch from @code{DONE} to @code{REPORT} in the example above.
+@end table
+
+@node Per file keywords,  , Multiple sets in one file, TODO extensions
+@subsection Setting up keywords for individual files
 @cindex keyword options
 @cindex per file keywords
 
-It can be very useful to use different aspects of the TODO mechanism
-in different files, which is not possible with the global settings
-described above.  For file-local settings, you need to add special
-lines to the file which set the keywords and interpretation for that
-file only.  For example, to set one of the two examples discussed
-above, you need one of the following lines, starting in column zero
-anywhere in the file:
+It can be very useful to use different aspects of the TODO mechanism in
+different files.  For file-local settings, you need to add special lines
+to the file which set the keywords and interpretation for that file
+only.  For example, to set one of the two examples discussed above, you
+need one of the following lines, starting in column zero anywhere in the
+file:
+
+@example
+#+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
+@end example
+or
+@example
+#+TYP_TODO: Fred Sara Lucy Mike | DONE
+@end example
+
+A setup for using several sets in parallel would be:
 
 @example
-#+SEQ_TODO: TODO FEEDBACK VERIFY DONE
-#+TYP_TODO: Fred Sara Lucy Mike DONE
+#+SEQ_TODO: TODO | DONE
+#+SEQ_TODO: REPORT BUG KNOWNCAUSE | FIXED
+#+SEQ_TODO: | CANCELED
 @end example
 
 @cindex completion, of option keywords
@@ -2627,24 +2952,14 @@ anywhere in the file:
 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
 
 @cindex DONE, final TODO keyword
-Remember that the last keyword must always mean that the item is DONE
-(although you may use a different word).  Also note that in each file,
-only one of the two aspects of TODO keywords can be used.  After
-changing one of these lines, use @kbd{C-c C-c} with the cursor still
-in the line to make the changes known to Org-mode@footnote{Org-mode
-parses these lines only when Org-mode is activated after visiting a
-file.  @kbd{C-c C-c} with the cursor in a line starting with @samp{#+}
-is simply restarting Org-mode for the current buffer.}.
-
-If you want to use very many keywords, for example when working with a
-large group of people, you may split the names over several lines:
-
-@example
-#+TYP_TODO: Fred Sara Lucy Mike
-#+TYP_TODO: Luis George Jules Jessica
-#+TYP_TODO: Kim Arnold Peter
-#+TYP_TODO: DONE
-@end example
+Remember that the keywords after the vertical bar (or the last keyword
+if no bar is there) must always mean that the item is DONE (although you
+may use a different word).  After changing one of these lines, use
+@kbd{C-c C-c} with the cursor still in the line to make the changes
+known to Org-mode@footnote{Org-mode parses these lines only when
+Org-mode is activated after visiting a file.  @kbd{C-c C-c} with the
+cursor in a line starting with @samp{#+} is simply restarting Org-mode
+for the current buffer.}.
 
 @node Priorities, Breaking down tasks, TODO extensions, TODO items
 @section Priorities
@@ -2673,7 +2988,7 @@ priority character @samp{A}, @samp{B} or @samp{C}.  When you press
 @key{SPC} instead, the priority cookie is removed from the headline.
 The priorities can also be changed ``remotely'' from the timeline and
 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
-
+@c
 @kindex S-@key{up}
 @kindex S-@key{down}
 @item S-@key{up}
@@ -2683,11 +2998,22 @@ are also used to modify time stamps (@pxref{Creating timestamps}).
 Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}).
 @end table
 
+You can change the range of allowed priorities by setting the variables
+@code{org-highest-priority}, @code{org-lowest-priority}, and
+@code{org-default-priority}.  For an individual buffer, you may set
+these values (highest, lowest, default) like this (please make sure that
+the highest priority is earlier in the alphabet than the lowest
+priority):
+
+@example
+#+PRIORITIES: A C B
+@end example
+
 @node Breaking down tasks, Checkboxes, Priorities, TODO items
 @section Breaking tasks down into subtasks
 @cindex tasks, breaking down
 
-It is often advisable to break down large tasks into smaller, managable
+It is often advisable to break down large tasks into smaller, manageable
 subtasks.  You can do this by creating an outline tree below a TODO
 item, with detailed subtasks on the tree@footnote{To keep subtasks out
 of the global TODO list, see the
@@ -2738,7 +3064,8 @@ percentage of checkboxes checked (in the above example, this would be
 @table @kbd
 @kindex C-c C-c
 @item C-c C-c
-Toggle checkbox at point.
+Toggle checkbox at point.  With prefix argument, set it to @samp{[-]},
+which is considered to be an intermediate state.
 @kindex C-c C-x C-b
 @item C-c C-x C-b
 Toggle checkbox at point.
@@ -2769,122 +3096,675 @@ delete boxes or add/change them by hand, use this command to get things
 back into synch.  Or simply toggle any checkbox twice with @kbd{C-c C-c}.
 @end table
 
-@node Timestamps, Tags, TODO items, Top
-@chapter Timestamps
-@cindex time stamps
-@cindex date stamps
 
-Items can be labeled with timestamps to make them useful for project
-planning.
+@node Tags, Properties and columns, TODO items, Top
+@chapter Tags
+@cindex tags
+@cindex headline tagging
+@cindex matching, tags
+@cindex sparse tree, tag based
 
-@menu
-* Time stamps::                 Assigning a time to a tree entry
-* Creating timestamps::         Commands which insert timestamps
-* Custom time format::          If you cannot work with the ISO format
-* Repeating items::             Deadlines that come back again and again
-* Progress logging::            Documenting when what work was done.
-@end menu
+If you wish to implement a system of labels and contexts for
+cross-correlating information, an excellent way is to assign @i{tags} to
+headlines.  Org-mode has extensive support for using tags.
 
+Every headline can contain a list of tags, at the end of the headline.
+Tags are normal words containing letters, numbers, @samp{_}, and
+@samp{@@}.  Tags must be preceded and followed by a single colon; like
+@samp{:WORK:}.  Several tags can be specified like @samp{:WORK:URGENT:}.
 
-@node Time stamps, Creating timestamps, Timestamps, Timestamps
-@section Time stamps, deadlines and scheduling
-@cindex time stamps
-@cindex ranges, time
-@cindex date stamps
-@cindex deadlines
-@cindex scheduling
+@menu
+* Tag inheritance::             Tags use the tree structure of the outline
+* Setting tags::                How to assign tags to a headline
+* Tag searches::                Searching for combinations of tags
+@end menu
 
-A time stamp is a specification of a date (possibly with time) in a
-special format, either @samp{<2003-09-16 Tue>} or @samp{<2003-09-16 Tue
-09:39>}@footnote{This is the standard ISO date/time format.  If you
-cannot get used to these, see @ref{Custom time format}}.  A time stamp
-can appear anywhere in the headline or body of an org-tree entry.  Its
-presence allows entries to be shown on specific dates in the agenda
-(@pxref{Weekly/Daily agenda}).  We distinguish:
+@node Tag inheritance, Setting tags, Tags, Tags
+@section Tag inheritance
+@cindex inheritance, of tags
+@cindex sublevels, inclusion into tags match
 
-@table @var
-@item Plain time stamp
-@cindex timestamp
-A simple time stamp just assigns a date/time to an item.  This is just
-like writing down an appointment in a paper agenda, or like writing down
-an event in a diary, when you want to take note of when something
-happened.  In the timeline and agenda displays, the headline of an entry
-associated with a plain time stamp will be shown exactly on that date.
+@i{Tags} make use of the hierarchical structure of outline trees.  If a
+heading has a certain tag, all subheadings will inherit the tag as
+well.  For example, in the list
 
 @example
-* Meet Peter at the movies <2006-11-01 Wed 19:15>
+* Meeting with the French group      :WORK:
+** Summary by Frank                  :BOSS:NOTES:
+*** TODO Prepare slides for him      :ACTION:
 @end example
 
-@item Inactive time stamp
-@cindex timestamp, inactive
-@cindex inactive timestamp
-Just like a plain time stamp, but with square brackets instead of
-angular ones.  These time stamps are inactive in the sense that they do
-@emph{not} trigger an entry to show up in the agenda.
+@noindent
+the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:},
+@samp{:NOTES:}, and @samp{:ACTION:}.  When executing tag searches and
+Org-mode finds that a certain headline matches the search criterion, it
+will not check any sublevel headline, assuming that these likely also
+match, and that the list of matches can become very long.  This may
+not be what you want, however, and you can influence inheritance and
+searching using the variables @code{org-use-tag-inheritance} and
+@code{org-tags-match-list-sublevels}.
+
+@node Setting tags, Tag searches, Tag inheritance, Tags
+@section Setting tags
+@cindex setting tags
+@cindex tags, setting
+
+@kindex M-@key{TAB}
+Tags can simply be typed into the buffer at the end of a headline.
+After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
+also a special command for inserting tags:
+
+@table @kbd
+@kindex C-c C-c
+@item C-c C-c
+@cindex completion, of tags
+Enter new tags for the current headline.  Org-mode will either offer
+completion or a special single-key interface for setting tags, see
+below.  After pressing @key{RET}, the tags will be inserted and aligned
+to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
+tags in the current buffer will be aligned to that column, just to make
+things look nice.  TAGS are automatically realigned after promotion,
+demotion, and TODO state changes (@pxref{TODO basics}).
+@end table
+
+Org will support tag insertion based on a @emph{list of tags}.  By
+default this list is constructed dynamically, containing all tags
+currently used in the buffer.  You may also globally specify a hard list
+of tags with the variable @code{org-tag-alist}.  Finally you can set
+the default tags for a given file with lines like
 
 @example
-* Gillian comes late for the fifth time [2006-11-01 Wed]
+#+TAGS: @@WORK @@HOME @@TENNISCLUB
+#+TAGS: Laptop Car PC Sailboat
 @end example
 
-@item Time stamp range
-@cindex timerange
-Two time stamps connected by @samp{--} denote a time range.  The
-headline will be shown on the first and last day of the range, and on
-any dates that are displayed and fall in the range.  Here is an
-example:
+If you have globally defined your preferred set of tags using the
+variable @code{org-tag-alist}, but would like to use a dynamic tag list
+in a specific file: Just add an empty TAGS option line to that file:
 
 @example
-** Meeting in Amsterdam
-   <2004-08-23 Mon>--<2004-08-26 Thu>
+#+TAGS:
 @end example
 
-@item Time stamp with SCHEDULED keyword
-@cindex SCHEDULED keyword
-If a time stamp is preceded by the word @samp{SCHEDULED:}, it means you
-are planning to start working on that task on the given date. So this is
-not about recording an event, but about planning your work.  The
-headline will be listed under the given date@footnote{It will still be
-listed on that date after it has been marked DONE.  If you don't like
-this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
-addition, a reminder that the scheduled date has passed will be present
-in the compilation for @emph{today}, until the entry is marked DONE.
-I.e., the task will automatically be forwarded until completed.
+The default support method for entering tags is minibuffer completion.
+However, Org-mode also implements a much better method: @emph{fast tag
+selection}.  This method allows to select and deselect tags with a
+single key per tag.  To function efficiently, you should assign unique
+keys to most tags.  This can be done globally with
+
+@lisp
+(setq org-tag-alist '(("@@WORK" . ?w) ("@@HOME" . ?h) ("Laptop" . ?l)))
+@end lisp
+
+@noindent or on a per-file basis with
 
 @example
-*** TODO Call Trillian for a date on New Years Eve.
-    SCHEDULED: <2004-12-25 Sat>
+#+TAGS: @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t)  Laptop(l)  PC(p)
 @end example
 
-@item Time stamp with DEADLINE keyword
-@cindex DEADLINE keyword
-If a time stamp is preceded by the word @samp{DEADLINE:}, the task
-(most likely a TODO item) is supposed to be finished on that date, and
-it will be listed then.  In addition, the compilation for @emph{today}
-will carry a warning about the approaching or missed deadline,
-starting @code{org-deadline-warning-days} before the due date, and
-continuing until the entry is marked DONE.  An example:
+@noindent
+You can also group together tags that are mutually exclusive.  With
+curly braces@footnote{In @code{org-mode-alist} use
+@code{'(:startgroup)} and @code{'(:endgroup)}, respectively.  Several
+groups are allowed.}
 
 @example
-*** TODO write article about the Earth for the Guide
-    The editor in charge is [[bbdb:Ford Prefect]]
-    DEADLINE: <2004-02-29 Sun>
+#+TAGS: @{ @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t) @}  Laptop(l)  PC(p)
 @end example
-@item Time stamp with CLOSED keyword
-@cindex CLOSED keyword
-When @code{org-log-done} is non-nil, Org-mode will automatically insert
-a special time stamp each time a TODO entry is marked done
-(@pxref{Progress logging}).  This time stamp is enclosed in square
-brackets instead of angular brackets.
-
-@item Time range with CLOCK keyword
-@cindex CLOCK keyword
-When using the clock to time the work that is being done on specific
-items, time ranges preceded by the CLOCK keyword are inserted
-automatically into the file.  The time stamps are enclosed in square
-brackets instead of angular brackets.  @xref{Clocking work time}.
+
+@noindent you indicate that at most one of @samp{@@WORK}, @samp{@@HOME},
+and @samp{@@TENNISCLUB} should be selected.
+
+@noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
+these lines to activate any changes.
+
+If at least one tag has a selection key, pressing @kbd{C-c C-c} will
+automatically present you with a special interface, listing inherited
+tags, the tags of the current headline, and a list of all legal tags
+with corresponding keys@footnote{Keys will automatically be assigned to
+tags which have no configured keys.}.  In this interface, you can use
+the following keys:
+
+@table @kbd
+@item a-z...
+Pressing keys assigned to tags will add or remove them from the list of
+tags in the current line.  Selecting a tag in a group of mutually
+exclusive tags will turn off any other tags from that group.
+@kindex @key{TAB}
+@item @key{TAB}
+Enter a tag in the minibuffer, even if the tag is not in the predefined
+list.  You will be able to complete on all tags present in the buffer.
+@kindex @key{SPC}
+@item @key{SPC}
+Clear all tags for this line.
+@kindex @key{RET}
+@item @key{RET}
+Accept the modified set.
+@item C-g
+Abort without installing changes.
+@item q
+If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
+@item !
+Turn off groups of mutually exclusive tags.  Use this to (as an
+exception) assign several tags from such a group.
+@item C-c
+Toggle auto-exit after the next change (see below).
+If you are using expert mode, the first @kbd{C-c} will display the
+selection window.
 @end table
 
-@node Creating timestamps, Custom time format, Time stamps, Timestamps
+@noindent
+This method lets you assign tags to a headline with very few keys.  With
+the above setup, you could clear the current tags and set @samp{@@HOME},
+@samp{Laptop} and @samp{PC} tags with just the following keys: @kbd{C-c
+C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@HOME} to
+@samp{@@WORK} would be done with @kbd{C-c C-c w @key{RET}} or
+alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
+@samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
+@key{RET} @key{RET}}.
+
+If you find that most of the time, you need only a single keypress to
+modify your list of tags, set the variable
+@code{org-fast-tag-selection-single-key}.  Then you no longer have to
+press @key{RET} to exit fast tag selection - it will immediately exit
+after the first change.  If you then occasionally need more keys, press
+@kbd{C-c} to turn off auto-exit for the current tag selection process
+(in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
+C-c}).  If you set the variable to the value @code{expert}, the special
+window is not even shown for single-key tag selection, it comes up only
+when you press an extra @kbd{C-c}.
+
+@node Tag searches,  , Setting tags, Tags
+@section Tag searches
+@cindex tag searches
+@cindex searching for tags
+
+Once a tags system has been set up, it can be used to collect related
+information into special lists.
+
+@table @kbd
+@kindex C-c \
+@item C-c \
+Create a sparse tree with all headlines matching a tags search.  With a
+@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
+@kindex C-c a m
+@item C-c a m
+Create a global list of tag matches from all agenda files.
+@xref{Matching tags and properties}.
+@kindex C-c a M
+@item C-c a M
+Create a global list of tag matches from all agenda files, but check
+only TODO items and force checking subitems (see variable
+@code{org-tags-match-list-sublevels}).
+@end table
+
+@cindex Boolean logic, for tag searches
+A @i{tags} search string can use Boolean operators @samp{&} for AND and
+@samp{|} for OR.  @samp{&} binds more strongly than @samp{|}.
+Parenthesis are currently not implemented.  A tag may also be preceded
+by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
+positive selection.  The AND operator @samp{&} is optional when @samp{+}
+or @samp{-} is present.  Examples:
+
+@table @samp
+@item +WORK-BOSS
+Select headlines tagged @samp{:WORK:}, but discard those also tagged
+@samp{:BOSS:}.
+@item WORK|LAPTOP
+Selects lines tagged @samp{:WORK:} or @samp{:LAPTOP:}.
+@item WORK|LAPTOP&NIGHT
+Like before, but require the @samp{:LAPTOP:} lines to be tagged also
+@samp{NIGHT}.
+@end table
+
+@cindex TODO keyword matching, with tags search
+If you are using multi-state TODO keywords (@pxref{TODO extensions}), it
+can be useful to also match on the TODO keyword.  This can be done by
+adding a condition after a slash to a tags match.  The syntax is similar
+to the tag matches, but should be applied with consideration: For
+example, a positive selection on several TODO keywords can not
+meaningfully be combined with boolean AND.  However, @emph{negative
+selection} combined with AND can be meaningful.  To make sure that only
+lines are checked that actually have any TODO keyword, use @kbd{C-c a
+M}, or equivalently start the todo part after the slash with @samp{!}.
+Examples:
+
+@table @samp
+@item WORK/WAITING
+Select @samp{:WORK:}-tagged TODO lines with the specific TODO
+keyword @samp{WAITING}.
+@item WORK/!-WAITING-NEXT
+Select @samp{:WORK:}-tagged TODO lines that are neither @samp{WAITING}
+nor @samp{NEXT}
+@item WORK/+WAITING|+NEXT
+Select @samp{:WORK:}-tagged TODO lines that are either @samp{WAITING} or
+@samp{NEXT}.
+@end table
+
+@cindex regular expressions, with tags search
+Any element of the tag/todo match can be a regular expression - in this
+case it must be enclosed in curly braces.  For example,
+@samp{WORK+@{^BOSS.*@}} matches headlines that contain the tag
+@samp{WORK} and any tag @i{starting} with @samp{BOSS}.
+
+@cindex level, require for tags match
+You can also require a headline to be of a certain level, by writing
+instead of any TAG an expression like @samp{LEVEL=3}.  For example, a
+search @samp{+LEVEL=3+BOSS/-DONE} lists all level three headlines that
+have the tag BOSS and are @emph{not} marked with the todo keyword DONE.
+
+@node Properties and columns, Timestamps, Tags, Top
+@chapter Properties and Columns
+@cindex properties
+
+Properties are a set of key-value pairs associated with an entry.  There
+are two main applications for properties in Org-mode.  First, properties
+are like tags, but with a value.  For example, in a file where you
+document bugs and plan releases of a piece of software, instead of using
+tags like @code{:release_1:}, @code{:release_2:}, it can be more
+efficient to use a property @code{RELEASE} with a value @code{1.0} or
+@code{2.0}.  Second, you can use properties to implement (very basic)
+database capabilities in an Org-mode buffer, for example to create a
+list of Music CD's you own.  You can edit and view properties
+conveniently in column view (@pxref{Column view}).
+
+@menu
+* Property syntax::             How properties are spelled out
+* Special properties::          Access to other Org-mode features
+* Property searches::           Matching property values
+* Column view::                 Tabular viewing and editing
+* Property API::                Properties for Lisp programmers
+@end menu
+
+@node Property syntax, Special properties, Properties and columns, Properties and columns
+@section Property Syntax
+@cindex property syntax
+@cindex drawer, for properties
+
+Properties are key-value pairs.  They need to be inserted into a special
+drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
+is specified on a single line, with the key (surrounded by colons)
+first, and the value after it.  Here is an example:
+
+@example
+* CD collection
+** Classic
+*** Goldberg Variations
+    :PROPERTIES:
+    :Title:     Goldberg Variations
+    :Composer:  J.S. Bach
+    :Artist:    Glen Gould 
+    :Publisher: Deutsche Grammphon
+    :NDisks:    1
+    :END:       
+@end example
+
+You may define the allowed values for a particular property @samp{XYZ}
+by setting a property @samp{XYZ_ALL}.  This special property is
+@emph{inherited}, so if you set it in a level 1 entry, it will apply to
+the entire tree.  When allowed values are defined, setting the
+corresponding property becomes easier and is less prone to typing
+errors.  For the example with the CD collection, we can predefine
+publishers and the number of disks in a box like this:
+
+@example
+* CD collection
+  :PROPERTIES:
+  :NDisks_ALL:  1 2 3 4
+  :Publisher_ALL: "Deutsche Grammophon" Phillips EMI
+  :END:
+@end example
+
+If you want to set properties that can be inherited by any entry in a
+file, use a line like
+
+@example
+#+PROPERTY: NDisks_ALL 1 2 3 4
+@end example
+
+Property values set with the global variable
+@code{org-global-properties} can be inherited by all entries in all
+Org-mode files.
+
+@noindent
+The following commands help to work with properties:
+
+@table @kbd
+@kindex M-@key{TAB}
+@item M-@key{TAB}
+After an initial colon in a line, complete property keys.  All keys used
+in the current file will be offered as possible completions.
+@item M-x org-insert-property-drawer
+Insert a property drawer into the current entry.  The drawer will be
+inserted early in the entry, but after the lines with planning
+information like deadlines.
+@kindex C-c C-c
+@item C-c C-c
+With the cursor in a property drawer, this executes property commands.
+@item C-c C-c s
+Set a property in the current entry.  Both the property and the value
+can be inserted using completion.
+@kindex S-@key{right}
+@kindex S-@key{left}
+@item S-@key{left}/@key{right}
+Switch property at point to the next/previous allowed value.
+@item C-c C-c d
+Remove a property from the current entry.
+@item C-c C-c D
+Globally remove a property, from all entries in the current file.
+@end table
+
+@node Special properties, Property searches, Property syntax, Properties and columns
+@section Special Properties
+@cindex properties, special
+
+Special properties provide alternative access method to Org-mode
+features discussed in the previous chapters, like the TODO state or the
+priority of an entry.  This interface exists so that you can include
+these states into columns view (@pxref{Column view}).  The following
+property names are special and should not be used as keys in the
+properties drawer:
+
+@example
+TODO         @r{The TODO keyword of the entry.}
+TAGS         @r{The tags defined directly in the headline.}
+ALLTAGS      @r{All tags, including inherited ones.}
+PRIORITY     @r{The priority of the entry, a string with a single letter.}
+DEADLINE     @r{The deadline time string, without the angular brackets.}
+SCHEDULED    @r{The scheduling time stamp, without the angular brackets.}
+@end example
+
+@node Property searches, Column view, Special properties, Properties and columns
+@section Property searches
+@cindex properties, searching
+
+To create sparse trees and special lists with selection based on
+properties, the same commands are used as for tag searches (@pxref{Tag
+searches}), and the same logic applies.  For example, a search string
+
+@example
++WORK-BOSS+PRIORITY="A"+coffee="unlimited"+with=@{Sarah\|Denny@}
+@end example
+
+@noindent
+finds entries tagged @samp{:WORK:} but not @samp{:BOSS:}, which
+also have a priority value @samp{A}, a @samp{:coffee:} property with the
+value @samp{unlimited}, and a @samp{:with:} property that is matched by
+the regular expression @samp{Sarah\|Denny}.
+
+@node Column view, Property API, Property searches, Properties and columns
+@section Column View
+
+A great way to view and edit properties in an outline tree is
+@emph{column view}.  In column view, each outline item is turned into a
+table row.  Columns in this table provide access to properties of the
+entries.  Org-mode implements columns by overlaying a tabular structure
+over the headline of each item.  While the headlines have been turned
+into a table row, you can still change the visibility of the outline
+tree.  For example, you get a compact table by switching to CONTENTS
+view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
+is active), but you can still open, read, and edit the entry below each
+headline.  Or, you can switch to column view after executing a sparse
+tree command and in this way get a table only for the selected items.
+Column view also works in agenda buffers (@pxref{Agenda views}) where
+queries have collected selected items, possibly from a number of files.
+
+@menu
+* Defining columns::            The COLUMNS format property
+* Using column view::           How to create and use column view
+@end menu
+
+@node Defining columns, Using column view, Column view, Column view
+@subsection Defining Columns
+@cindex column view, for properties
+@cindex properties, column view
+
+Setting up a column view first requires defining the columns.  This is
+done by defining a column format line.
+
+@menu
+* Scope of column definitions::  Where defined, where valid?
+* Column attributes::           Appearance and content of a column
+@end menu
+
+@node Scope of column definitions, Column attributes, Defining columns, Defining columns
+@subsubsection Scope of column definitions
+
+To define a column format for an entire file, use a line like
+
+@example
+#+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
+@end example
+
+To specify a format that only applies to a specific tree, add a COLUMNS
+property to the top node of that tree, for example
+@example
+** Top node for columns view
+   :PROPERTIES:
+   :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
+   :END:
+@end example
+
+If a @code{COLUMNS} property is present in an entry, it defines columns
+for the entry itself, and for the entire subtree below it.  Since the
+column definition is part of the hierarchical structure of the document,
+you can define columns on level 1 that are general enough for all
+sublevels, and more specific columns further down, when you edit a
+deeper part of the tree.
+
+@node Column attributes,  , Scope of column definitions, Defining columns
+@subsubsection Column attributes
+A column definition sets the attributes of a column.  The general
+definition looks like this:
+
+@example
+ %[width]property[(title)][@{summary-type@}]
+@end example
+
+@noindent
+Except for the percent sign and the property name, all items are
+optional.  The individual parts have the following meaning:
+
+@example
+width           @r{An integer specifying the width of the column in characters.}
+                @r{If omitted, the width will be determined automatically.}
+property        @r{The property that should be edited in this column.}
+(title)         @r{The header text for the column. If omitted, the}
+                @r{property name is used.}
+@{summary-type@}  @r{The summary type.  If specified, the column values for}
+                @r{parent nodes are computed from the children.}
+                @r{Supported summary types are:}
+                @{+@}  @r{Sum numbers in this column.}
+                @{:@}  @r{Sum times, HH:MM:SS, plain numbers are hours.}
+                @{X@}  @r{Checkbox status, [X] if all children are [X].}
+@end example
+
+@noindent
+Here is an example for a complete columns definition, along with allowed
+values.
+
+@example
+:COLUMNS:  %20ITEM %9Approved(Approved?)@{X@} %Owner %11Status %10Time_Spent@{:@}
+:Owner_ALL:    Tammy Mark Karl Lisa Don
+:Status_ALL:   "In progress" "Not started yet" "Finished" ""
+:Approved_ALL: "[ ]" "[X]"
+@end example
+
+The first column, @samp{%25ITEM}, means the first 25 characters of the
+item itself, i.e. of the headline.  You probably always should start the
+column definition with the ITEM specifier.  The other specifiers create
+columns @samp{Owner} with a list of names as allowed values, for
+@samp{Status} with four different possible values, and for a checkbox
+field @samp{Approved}.  When no width is given after the @samp{%}
+character, the column will be exactly as wide as it needs to be in order
+to fully display all values.  The @samp{Approved} column does have a
+modified title (@samp{Approved?}, with a question mark).  Summaries will
+be created for the @samp{Time_Spent} column by adding time duration
+expressions like HH:MM, and for the @samp{Approved} column, by providing
+an @samp{[X]} status if all children have been checked.
+
+@node Using column view,  , Defining columns, Column view
+@subsection Using Column View
+
+@table @kbd
+@tsubheading{Turning column view on and off}
+@kindex C-c C-x C-c
+@item C-c C-x C-c
+Create the column view for the local environment.  This command searches
+the hierarchy, up from point, for a @code{COLUMNS} property that defines
+a format.  When one is found, the column view table is established for
+the entire tree, starting from the entry that contains the @code{COLUMNS}
+property.  If none is found, the format is taken from the @code{#+COLUMNS}
+line or from the variable @code{org-columns-default-format}, and column
+view is established for the current entry and its subtree.
+@kindex q
+@item q
+Exit column view.
+@tsubheading{Editing values}
+@item @key{left} @key{right} @key{up} @key{down}
+Move through the column view from field to field.
+@kindex S-@key{left}
+@kindex S-@key{right}
+@item  S-@key{left}/@key{right}
+Switch to the next/previous allowed value of the field.  For this, you
+have to have specified allowed values for a property.
+@kindex n
+@kindex p
+@itemx  n / p
+Same as @kbd{S-@key{left}/@key{right}}
+@kindex e
+@item e
+Edit the property at point.  For the special properties, this will
+invoke the same interface that you normally use to change that
+property.  For example, when editing a TAGS property, the tag completion
+or fast selection interface will pop up.
+@kindex v
+@item v
+View the full value of this property.  This is useful if the width of
+the column is smaller than that of the value.
+@kindex a
+@item a
+Edit the list of allowed values for this property.  If the list is found
+in the hierarchy, the modified values is stored there.  If no list is
+found, the new value is stored in the first entry that is part of the
+current column view.
+@tsubheading{Modifying the table structure}
+@kindex <
+@kindex >
+@item < / >
+Make the column narrower/wider by one character.
+@kindex S-M-@key{right}
+@item S-M-@key{right}
+Insert a new column, to the right of the current column.
+@kindex S-M-@key{left}
+@item S-M-@key{left}
+Delete the current column.
+@end table
+
+@node Property API,  , Column view, Properties and columns
+@section The Property API
+@cindex properties, API
+@cindex API, for properties
+
+There is a full API for accessing and changing properties.  This API can
+be used by Emacs Lisp programs to work with properties and to implement
+features based on them.  For more information see @ref{Using the
+property API}.
+
+@node Timestamps, Agenda views, Properties and columns, Top
+@chapter Timestamps
+@cindex time stamps
+@cindex date stamps
+
+Items can be labeled with timestamps to make them useful for project
+planning.
+
+@menu
+* Time stamps::                 Assigning a time to a tree entry
+* Creating timestamps::         Commands which insert timestamps
+* Deadlines and scheduling::    Planning your work
+* Progress logging::            Documenting when what work was done.
+@end menu
+
+
+@node Time stamps, Creating timestamps, Timestamps, Timestamps
+@section Time stamps, deadlines and scheduling
+@cindex time stamps
+@cindex ranges, time
+@cindex date stamps
+@cindex deadlines
+@cindex scheduling
+
+A time stamp is a specification of a date (possibly with time or a range
+of times) in a special format, either @samp{<2003-09-16 Tue>} or
+@samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
+12:00-12:30>}@footnote{This is the standard ISO date/time format.  If
+you cannot get used to these, see @ref{Custom time format}}.  A time
+stamp can appear anywhere in the headline or body of an org-tree entry.
+Its presence causes entries to be shown on specific dates in the agenda
+(@pxref{Weekly/Daily agenda}).  We distinguish:
+
+@table @var
+@item Plain time stamp
+@cindex timestamp
+A simple time stamp just assigns a date/time to an item.  This is just
+like writing down an appointment in a paper agenda, or like writing down
+an event in a diary, when you want to take note of when something
+happened.  In the timeline and agenda displays, the headline of an entry
+associated with a plain time stamp will be shown exactly on that date.
+
+@example
+* Meet Peter at the movies <2006-11-01 Wed 19:15>
+* Discussion on climate change <2006-11-02 Thu 20:00-22:00>
+@end example
+
+@item Time stamp with repeater interval
+@cindex timestamp, with repeater interval
+A time stamp may contain a @emph{repeater interval}, indicating that it
+applies not only on the given date, but again and again after a certain
+interval of N days (d), weeks (w), months(m), or years(y).  The
+following will show up in the agenda every Wednesday:
+
+@example
+* Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
+@end example
+
+@item Diary-style sexp entries
+For more complex date specifications, Org-mode supports using the
+special sexp diary entries implemented in the Emacs calendar/diary
+package.  For example
+
+@example
+* The nerd meeting on every 2nd Thursday of the month
+  <%%(diary-float t 4 2)>
+@end example
+
+@item Time/Date range
+@cindex timerange
+@cindex date range
+Two time stamps connected by @samp{--} denote a range.  The headline
+will be shown on the first and last day of the range, and on any dates
+that are displayed and fall in the range.  Here is an example:
+
+@example
+** Meeting in Amsterdam
+   <2004-08-23 Mon>--<2004-08-26 Thu>
+@end example
+
+@item Inactive time stamp
+@cindex timestamp, inactive
+@cindex inactive timestamp
+Just like a plain time stamp, but with square brackets instead of
+angular ones.  These time stamps are inactive in the sense that they do
+@emph{not} trigger an entry to show up in the agenda.
+
+@example
+* Gillian comes late for the fifth time [2006-11-01 Wed]
+@end example
+
+@end table
+
+@node Creating timestamps, Deadlines and scheduling, Time stamps, Timestamps
 @section Creating timestamps
 @cindex creating timestamps
 @cindex timestamps, creating
@@ -2899,61 +3779,40 @@ format.
 Prompt for a date and insert a corresponding time stamp.  When the
 cursor is at a previously used time stamp, it is updated to NOW.  When
 this command is used twice in succession, a time range is inserted.
-
+@c
 @kindex C-u C-c .
 @item C-u C-c .
 Like @kbd{C-c .}, but use the alternative format which contains date
 and time.  The default time can be rounded to multiples of 5 minutes,
 see the option @code{org-time-stamp-rounding-minutes}.
-
+@c
 @kindex C-c !
 @item C-c !
-Like @kbd{C-c .}, but insert an inactive time stamp not triggering the
-agenda.
-
+Like @kbd{C-c .}, but insert an inactive time stamp that will not cause
+an agenda entry.
+@c
 @kindex C-c <
 @item C-c <
 Insert a time stamp corresponding to the cursor date in the Calendar.
-
+@c
 @kindex C-c >
 @item C-c >
 Access the Emacs calendar for the current date.  If there is a
 timestamp in the current line, goto the corresponding date
 instead.
-
+@c
 @kindex C-c C-o
 @item C-c C-o
 Access the agenda for the date given by the time stamp or -range at
 point (@pxref{Weekly/Daily agenda}).
-
-@kindex C-c C-d
-@item C-c C-d
-Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will
-happen in the line directly following the headline.  
-@c FIXME Any CLOSED timestamp will be removed.????????
-
-@kindex C-c C-w
-@cindex sparse tree, for deadlines
-@item C-c C-w
-Create a sparse tree with all deadlines that are either past-due, or
-which will become due within @code{org-deadline-warning-days}.
-With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
-prefix, check that many days.  For example, @kbd{C-1 C-c C-w} shows
-all deadlines due tomorrow.
-
-@kindex C-c C-s
-@item C-c C-s
-Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
-happen in the line directly following the headline.  Any CLOSED
-timestamp will be removed.
-
+@c
 @kindex S-@key{left}
 @kindex S-@key{right}
 @item S-@key{left}
 @itemx S-@key{right}
 Change date at cursor by one day.  These key bindings conflict with
 CUA-mode (@pxref{Conflicts}).
-
+@c
 @kindex S-@key{up}
 @kindex S-@key{down}
 @item S-@key{up}
@@ -2963,8 +3822,7 @@ year, month, day, hour or minute.  Note that if the cursor is in a
 headline and not at a time stamp, these same keys modify the priority of
 an item.  (@pxref{Priorities}). The key bindings also conflict with
 CUA-mode (@pxref{Conflicts}).
-
-
+@c
 @kindex C-c C-y
 @cindex evaluate time range
 @item C-c C-y
@@ -2976,9 +3834,10 @@ into the following column).
 
 @menu
 * The date/time prompt::        How org-mode helps you entering date and time
+* Custom time format::          Making dates look differently
 @end menu
 
-@node The date/time prompt,  , Creating timestamps, Creating timestamps
+@node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
 @subsection The date/time prompt
 @cindex date, reading in minibuffer
 @cindex time, reading in minibuffer
@@ -3047,8 +3906,8 @@ One month back.
 Choose date in calendar (only if nothing was typed into minibuffer).
 @end table
 
-@node Custom time format, Repeating items, Creating timestamps, Timestamps
-@section Custom time format
+@node Custom time format,  , The date/time prompt, Creating timestamps
+@subsection Custom time format
 @cindex custom date/time format
 @cindex time format, custom
 @cindex date format, custom
@@ -3065,73 +3924,151 @@ customizing the variables @code{org-display-custom-times} and
 Toggle the display of custom formats for dates and times.
 @end table
 
-@noindent
-Org-mode needs the default format for scanning, so the custom date/time
-format does not @emph{replace} the default format - instead it is put
-@emph{over} the default format using text properties.  This has the
-following consequences:
-@itemize @bullet
-@item 
-You cannot place the cursor onto a time stamp anymore, only before or
-after.
-@item
-The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
-each component of a time stamp.  If the cursor is at the beginning of
-the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
-just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
-time will be changed by one minute.
-@item
-When you delete a time stamp character-by-character, it will only
-disappear from the buffer after @emph{all} (invisible) characters
-belonging to the ISO timestamp have been removed.
-@item
-If the custom time stamp format is longer than the default and you are
-using dates in tables, table alignment will be messed up.  If the custom
-format is shorter, things do work as expected.
-@end itemize
+@noindent
+Org-mode needs the default format for scanning, so the custom date/time
+format does not @emph{replace} the default format - instead it is put
+@emph{over} the default format using text properties.  This has the
+following consequences:
+@itemize @bullet
+@item 
+You cannot place the cursor onto a time stamp anymore, only before or
+after.
+@item
+The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
+each component of a time stamp.  If the cursor is at the beginning of
+the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
+just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
+time will be changed by one minute.
+@item
+If the time stamp contains a range of clock times or a repeater, these
+will not be overlayed, but remain in the buffer as they were.
+@item
+When you delete a time stamp character-by-character, it will only
+disappear from the buffer after @emph{all} (invisible) characters
+belonging to the ISO timestamp have been removed.
+@item
+If the custom time stamp format is longer than the default and you are
+using dates in tables, table alignment will be messed up.  If the custom
+format is shorter, things do work as expected.
+@end itemize
+
+
+@node Deadlines and scheduling, Progress logging, Creating timestamps, Timestamps
+@section Deadlines and Scheduling
+
+A time stamp may be preceded by special keywords to facilitate planning
+of work:
+
+@table @var
+@item DEADLINE
+@cindex DEADLINE keyword
+The task (most likely a TODO item) is supposed to be finished on that
+date, and it will be listed then.  In addition, the compilation for
+@emph{today} will carry a warning about the approaching or missed
+deadline, starting @code{org-deadline-warning-days} before the due date,
+and continuing until the entry is marked DONE.  An example:
+
+@example
+*** TODO write article about the Earth for the Guide
+    The editor in charge is [[bbdb:Ford Prefect]]
+    DEADLINE: <2004-02-29 Sun>
+@end example
+
+You can specify a different lead time for warnings for a specific
+deadlines using the following syntax.  Here is an example with a warning
+period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
+
+@item SCHEDULED
+@cindex SCHEDULED keyword
+You are planning to start working on that task on the given date. The
+headline will be listed under the given date@footnote{It will still be
+listed on that date after it has been marked DONE.  If you don't like
+this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
+addition, a reminder that the scheduled date has passed will be present
+in the compilation for @emph{today}, until the entry is marked DONE.
+I.e., the task will automatically be forwarded until completed.
+
+@example
+*** TODO Call Trillian for a date on New Years Eve.
+    SCHEDULED: <2004-12-25 Sat>
+@end example
+@end table
+
+@menu
+* Inserting deadline/schedule::  Planning items
+* Repeated tasks::              Items that show up again and again
+@end menu
+
+@node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
+@subsection Inserting deadline/schedule
 
-@node Repeating items, Progress logging, Custom time format, Timestamps
-@section Repeating items
-@cindex TODO items, repeating
-@cindex deadlines, repeating
-@cindex scheduling, repeating
+The following commands allow to quickly insert a deadline or to schedule
+an item:
+
+@table @kbd
+@c
+@kindex C-c C-d
+@item C-c C-d
+Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will
+happen in the line directly following the headline.
+@c FIXME Any CLOSED timestamp will be removed.????????
+@c
+@kindex C-c C-w
+@cindex sparse tree, for deadlines
+@item C-c C-w
+Create a sparse tree with all deadlines that are either past-due, or
+which will become due within @code{org-deadline-warning-days}.
+With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
+prefix, check that many days.  For example, @kbd{C-1 C-c C-w} shows
+all deadlines due tomorrow.
+@c
+@kindex C-c C-s
+@item C-c C-s
+Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
+happen in the line directly following the headline.  Any CLOSED
+timestamp will be removed.
+@end table
 
-Org-mode integrates with the Emacs calendar and diary to display cyclic
-appointments, anniversaries and other special entries in the agenda
-(@pxref{Weekly/Daily agenda}).  However, it can be useful to have
-certain deadlines and scheduling items to auto-repeat.  The advantage of
-a deadline or scheduled item is that the they produce warnings ahead of
-time and automatically forward themselves in the agenda until they are
-done.  The abstract difference is therefore between cyclic
-@i{appointments} and cyclic @i{action items}.  For appointments you
-should use the diary, for actions you can uses an org-mode deadline or
-scheduling time stamp together with a REPEAT cookie.  For example:
+@node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
+@subsection Repeated Tasks
 
+Some tasks need to be repeated again and again, and Org-mode therefore
+allows to use a repeater in a DEADLINE or SCHEDULED time stamp, for
+example:
 @example
-* TODO Replace batteries in smoke detector REPEAT(+18m)
-  SCHEDULED: <2007-01-01 Mon>
+** TODO Pay the rent
+   DEADLINE: <2005-10-01 Sat +1m>
+@end example
 
-* TODO Get dentist appointment REPEAT(+6m)
-  SCHEDULED: <2006-12-19 Tue>
+Deadlines and scheduled items produce entries in the agenda when they
+are over-due, so it is important to be able to mark such an entry as
+completed once you have done so.  When you mark a DEADLINE or a SCHEDULE
+with the todo keyword DONE, it will no longer produce entries in the
+agenda. The problem with this is, however, that then also the
+@emph{next} instance of the repeated entry will not be active.  Org-mode
+deals with this in the following way: When you try to mark such an entry
+DONE (using @kbd{C-c C-t}), it will shift the base date of the repeating
+time stamp by the repeater interval, and immediately set the entry state
+back to TODO.  In the example above, setting the state to DONE would
+actually switch the date like this:
 
-* TODO Tax report to IRS REPEAT(+1y)
-  DEADLINE: <2007-04-01 Sun>
+@example
+** TODO Pay the rent
+   DEADLINE: <2005-11-01 Tue +1m>
 @end example
 
-Each time you try to mark one of these entries DONE using @kbd{C-c C-t},
-they will automatically switch back to the state TODO, and the
-deadline/scheduling will be shifted accordingly.  The time units
-recognized by org-mode are year (y), month (m), week (w), and day (d).
-Org-mode will also prompt you for a note and record the fact that you
-have closed this item in a note under the headline.
+You will also be prompted for a note that will be put under the DEADLINE
+line to keep a record that you actually acted on the previous instance
+of this deadline.
 
-One unusual property of these repeating items is that only one instance
-of each exist at any given time.  So if you look back or ahead in the
-agenda, you will not find past and future instances, only the current
-one will show up.  Use a cyclic diary entry if you need all past and
-future instances to be visible in the agenda.
+As a consequence of shifting the base date, this entry will no longer be
+visible in the agenda when checking past dates, but all future instances
+will be visible.
 
-@node Progress logging,  , Repeating items, Timestamps
+You may have both scheduling and deadline information for a specific
+task - just make sure that the repeater intervals on both are the same.
+
+@node Progress logging,  , Deadlines and scheduling, Timestamps
 @section Progress Logging
 @cindex progress logging
 @cindex logging, of progress
@@ -3178,375 +4115,120 @@ setting is: @code{#+STARTUP: lognotedone}}
 @node Tracking TODO state changes, Clocking work time, Closing items, Progress logging
 @subsection Tracking TODO state changes
 
-When TODO keywords are used as workflow states (@pxref{Workflow
-states}), you might want to keep track of when a state change occurred,
-and you may even want to attach notes to that state change.  With the
-setting
-
-@lisp
-(setq org-log-done '(state))
-@end lisp
-
-@noindent
-each state change will prompt you for a note that will be attached to
-the current headline.  Very likely you do not want this verbose tracking
-all the time, so it is probably better to configure this behavior with
-in-buffer options.  For example, if you are tracking purchases, put
-these into a separate file that starts with:
-
-@example
-#+SEQ_TODO: TODO ORDERED INVOICE PAYED RECEIVED SENT
-#+STARTUP: lognotestate
-@end example
-
-@node Clocking work time,  , Tracking TODO state changes, Progress logging
-@subsection Clocking work time
-
-Org-mode allows you to clock the time you spent on specific tasks in a
-project.  When you start working on an item, you can start the clock.
-When you stop working on that task, or when you mark the task done, the
-clock is stopped and the corresponding time interval is recorded.  It
-also computes the total time spent on each subtree of a project.
-
-@table @kbd
-@kindex C-c C-x C-i
-@item C-c C-x C-i
-Start the clock on the current item (clock-in).  This inserts the CLOCK
-keyword together with a timestamp.
-@kindex C-c C-x C-o
-@item C-c C-x C-o
-Stop the clock (clock-out).  The inserts another timestamp at the same
-location where the clock was last started.  It also directly computes
-the resulting time in inserts it after the time range as @samp{=>
-HH:MM}.  See the variable @code{org-log-done} for the possibility to
-record an additional note together with the clock-out time
-stamp@footnote{The corresponding in-buffer setting is: @code{#+STARTUP:
-lognoteclock-out}}.
-@kindex C-c C-y
-@item C-c C-y
-Recompute the time interval after changing one of the time stamps.  This
-is only necessary if you edit the time stamps directly.  If you change
-them with @kbd{S-@key{cursor}} keys, the update is automatic.
-@kindex C-c C-t
-@item C-c C-t
-Changing the TODO state of an item to DONE automatically stops the clock
-if it is running in this same item.
-@kindex C-c C-x C-x
-@item C-c C-x C-x
-Cancel the current clock.  This is useful if a clock was started by
-mistake, or if you ended up working on something else.
-@kindex C-c C-x C-d
-@item C-c C-x C-d
-Display time summaries for each subtree in the current buffer.  This
-puts overlays at the end of each headline, showing the total time
-recorded under that heading, including the time of any subheadings. You
-can use visibility cycling to study the tree, but the overlays disappear
-when you change the buffer (see variable
-@code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
-@kindex C-c C-x C-r
-@item C-c C-x C-r
-Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
-report as an org-mode table into the current file.
-@example
-#+BEGIN: clocktable :maxlevel 2 :emphasize nil
-
-#+END: clocktable
-@end example
-@noindent
-If such a block already exists, its content is replaced by the new
-table.  The @samp{BEGIN} line can specify options:
-@example
-:maxlevels   @r{Maximum level depth to which times are listed in the table.}
-:emphasize   @r{When @code{t}, emphasize level one and level two items}
-:block       @r{The time block to consider.  This block is specified relative}
-             @r{to the current time and may be any of these keywords:}
-             @r{@code{today}, @code{yesterday}, @code{thisweek}, @code{lastweek},}
-             @r{@code{thismonth}, @code{lastmonth}, @code{thisyear}, or @code{lastyear}}.
-:tstart      @r{A time string specifying when to start considering times}
-:tend        @r{A time string specifying when to stop considering times}
-@end example
-So to get a clock summary for the current day, you could write
-@example
-#+BEGIN: clocktable :maxlevel 2 :block today
-
-#+END: clocktable
-@end example
-and to use a specific time range you could write@footnote{Note that all
-parameters must be specified in a single line - the line is broken here
-only to fit it onto the manual.}
-@example
-#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>" 
-                    :tend "<2006-08-10 Thu 12:00>"
-
-#+END: clocktable
-@end example
-@kindex C-u C-c C-x C-u
-@item C-u C-c C-x C-u
-Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
-you have several clocktable blocks in a buffer.
-@end table
-
-The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
-the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been
-worked on or closed during a day.
-
-@node Tags, Agenda views, Timestamps, Top
-@chapter Tags
-@cindex tags
-@cindex headline tagging
-@cindex matching, tags
-@cindex sparse tree, tag based
-
-If you wish to implement a system of labels and contexts for
-cross-correlating information, an excellent way is to assign @i{tags} to
-headlines.  Org-mode has extensive support for using tags.
-
-Every headline can contain a list of tags, at the end of the headline.
-Tags are normal words containing letters, numbers, @samp{_}, and
-@samp{@@}.  Tags must be preceded and followed by a single colon; like
-@samp{:WORK:}.  Several tags can be specified like @samp{:WORK:URGENT:}.
-
-@menu
-* Tag inheritance::             Tags use the tree structure of the outline
-* Setting tags::                How to assign tags to a headline
-* Tag searches::                Searching for combinations of tags
-@end menu
-
-@node Tag inheritance, Setting tags, Tags, Tags
-@section Tag inheritance
-@cindex inheritance, of tags
-@cindex sublevels, inclusion into tags match
-
-@i{Tags} make use of the hierarchical structure of outline trees.  If a
-heading has a certain tag, all subheadings will inherit the tag as
-well.  For example, in the list
-
-@example
-* Meeting with the French group      :WORK:
-** Summary by Frank                  :BOSS:NOTES:
-*** TODO Prepare slides for him      :ACTION:
-@end example
-
-@noindent
-the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:},
-@samp{:NOTES:}, and @samp{:ACTION:}.  When executing tag searches and
-Org-mode finds that a certain headline matches the search criterion, it
-will not check any sublevel headline, assuming that these likely also
-match, and that the list of matches can become very long.  This may
-not be what you want, however, and you can influence inheritance and
-searching using the variables @code{org-use-tag-inheritance} and
-@code{org-tags-match-list-sublevels}.
-
-@node Setting tags, Tag searches, Tag inheritance, Tags
-@section Setting tags
-@cindex setting tags
-@cindex tags, setting
-
-@kindex M-@key{TAB}
-Tags can simply be typed into the buffer at the end of a headline.
-After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
-also a special command for inserting tags:
-
-@table @kbd
-@kindex C-c C-c
-@item C-c C-c
-@cindex completion, of tags
-Enter new tags for the current headline.  Org-mode will either offer
-completion or a special single-key interface for setting tags, see
-below.  After pressing @key{RET}, the tags will be inserted and aligned
-to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
-tags in the current buffer will be aligned to that column, just to make
-things look nice.  TAGS are automatically realigned after promotion,
-demotion, and TODO state changes (@pxref{TODO basics}).
-@end table
-
-Org will support tag insertion based on a @emph{list of tags}.  By
-default this list is constructed dynamically, containing all tags
-currently used in the buffer.  You may also globally specify a hard list
-of tags with the variable @code{org-tag-alist}.  Finally you can set
-the default tags for a given file with lines like
-
-@example
-#+TAGS: @@WORK @@HOME @@TENNISCLUB
-#+TAGS: Laptop Car PC Sailboat
-@end example
-
-If you have globally defined your preferred set of tags using the
-variable @code{org-tag-alist}, but would like to use a dynamic tag list
-in a specific file: Just add an empty TAGS option line to that file:
-
-@example
-#+TAGS:
-@end example
-
-The default support method for entering tags is minibuffer completion.
-However, Org-mode also implements a much better method: @emph{fast tag
-selection}.  This method allows to select and deselect tags with a
-single key per tag.  To function efficiently, you should assign unique
-keys to most tags.  This can be done globally with
+When TODO keywords are used as workflow states (@pxref{Workflow
+states}), you might want to keep track of when a state change occurred,
+and you may even want to attach notes to that state change.  With the
+setting
 
 @lisp
-(setq org-tag-alist '(("@@WORK" . ?w) ("@@HOME" . ?h) ("Laptop" . ?l)))
+(setq org-log-done '(state))
 @end lisp
 
-@noindent or on a per-file basis with
-
-@example
-#+TAGS: @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t)  Laptop(l)  PC(p)
-@end example
-
 @noindent
-You can also group together tags that are mutually exclusive.  With
-curly braces@footnote{In @code{org-mode-alist} use
-@code{'(:startgroup)} and @code{'(:endgroup)}, respectively.  Several
-groups are allowed.}
+each state change will prompt you for a note that will be attached to
+the current headline.  Very likely you do not want this verbose tracking
+all the time, so it is probably better to configure this behavior with
+in-buffer options.  For example, if you are tracking purchases, put
+these into a separate file that starts with:
 
 @example
-#+TAGS: @{ @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t) @}  Laptop(l)  PC(p)
+#+SEQ_TODO: TODO ORDERED INVOICE PAYED RECEIVED SENT
+#+STARTUP: lognotestate
 @end example
 
-@noindent you indicate that at most one of @samp{@@WORK}, @samp{@@HOME},
-and @samp{@@TENNISCLUB} should be selected.
 
-@noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
-these lines to activate any changes.
+@node Clocking work time,  , Tracking TODO state changes, Progress logging
+@subsection Clocking work time
 
-If at least one tag has a selection key, pressing @kbd{C-c C-c} will
-automatically present you with a special interface, listing inherited
-tags, the tags of the current headline, and a list of all legal tags
-with corresponding keys@footnote{Keys will automatically be assigned to
-tags which have no configured keys.}.  In this interface, you can use
-the following keys:
+Org-mode allows you to clock the time you spent on specific tasks in a
+project.  When you start working on an item, you can start the clock.
+When you stop working on that task, or when you mark the task done, the
+clock is stopped and the corresponding time interval is recorded.  It
+also computes the total time spent on each subtree of a project.
 
 @table @kbd
-@item a-z...
-Pressing keys assigned to tags will add or remove them from the list of
-tags in the current line.  Selecting a tag in a group of mutually
-exclusive tags will turn off any other tags from that group.
-@kindex @key{TAB}
-@item @key{TAB}
-Enter a tag in the minibuffer, even if the tag is not in the predefined
-list.  You will be able to complete on all tags present in the buffer.
-@kindex @key{SPC}
-@item @key{SPC}
-Clear all tags for this line.
-@kindex @key{RET}
-@item @key{RET}
-Accept the modified set.
-@item C-g
-Abort without installing changes.
-@item q
-If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
-@item !
-Turn off groups of mutually exclusive tags.  Use this to (as an
-exception) assign several tags from such a group.
-@item C-c
-Toggle auto-exit after the next change (see below).
-If you are using expert mode, the first @kbd{C-c} will display the
-selection window.
-@end table
+@kindex C-c C-x C-i
+@item C-c C-x C-i
+Start the clock on the current item (clock-in).  This inserts the CLOCK
+keyword together with a timestamp.
+@kindex C-c C-x C-o
+@item C-c C-x C-o
+Stop the clock (clock-out).  The inserts another timestamp at the same
+location where the clock was last started.  It also directly computes
+the resulting time in inserts it after the time range as @samp{=>
+HH:MM}.  See the variable @code{org-log-done} for the possibility to
+record an additional note together with the clock-out time
+stamp@footnote{The corresponding in-buffer setting is: @code{#+STARTUP:
+lognoteclock-out}}.
+@kindex C-c C-y
+@item C-c C-y
+Recompute the time interval after changing one of the time stamps.  This
+is only necessary if you edit the time stamps directly.  If you change
+them with @kbd{S-@key{cursor}} keys, the update is automatic.
+@kindex C-c C-t
+@item C-c C-t
+Changing the TODO state of an item to DONE automatically stops the clock
+if it is running in this same item.
+@kindex C-c C-x C-x
+@item C-c C-x C-x
+Cancel the current clock.  This is useful if a clock was started by
+mistake, or if you ended up working on something else.
+@kindex C-c C-x C-d
+@item C-c C-x C-d
+Display time summaries for each subtree in the current buffer.  This
+puts overlays at the end of each headline, showing the total time
+recorded under that heading, including the time of any subheadings. You
+can use visibility cycling to study the tree, but the overlays disappear
+when you change the buffer (see variable
+@code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
+@kindex C-c C-x C-r
+@item C-c C-x C-r
+Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
+report as an org-mode table into the current file.
+@example
+#+BEGIN: clocktable :maxlevel 2 :emphasize nil
 
+#+END: clocktable
+@end example
 @noindent
-This method lets you assign tags to a headline with very few keys.  With
-the above setup, you could clear the current tags and set @samp{@@HOME},
-@samp{Laptop} and @samp{PC} tags with just the following keys: @kbd{C-c
-C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@HOME} to
-@samp{@@WORK} would be done with @kbd{C-c C-c w @key{RET}} or
-alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
-@samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
-@key{RET} @key{RET}}.
-
-If you find that most of the time, you need only a single keypress to
-modify your list of tags, set the variable
-@code{org-fast-tag-selection-single-key}.  Then you no longer have to
-press @key{RET} to exit fast tag selection - it will immediately exit
-after the first change.  If you then occasionally need more keys, press
-@kbd{C-c} to turn off auto-exit for the current tag selection process
-(in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
-C-c}).  If you set the variable to the value @code{expert}, the special
-window is not even shown for single-key tag selection, it comes up only
-when you press an extra @kbd{C-c}.
-
-@node Tag searches,  , Setting tags, Tags
-@section Tag searches
-@cindex tag searches
-@cindex searching for tags
-
-Once a tags system has been set up, it can be used to collect related
-information into special lists.
-
-@table @kbd
-@kindex C-c \
-@item C-c \
-Create a sparse tree with all headlines matching a tags search.  With a
-@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
-@kindex C-c a m
-@item C-c a m
-Create a global list of tag matches from all agenda files.
-@xref{Matching headline tags}.
-@kindex C-c a M
-@item C-c a M
-Create a global list of tag matches from all agenda files, but check
-only TODO items and force checking subitems (see variable
-@code{org-tags-match-list-sublevels}).
-@end table
-
-@cindex Boolean logic, for tag searches
-A @i{tags} search string can use Boolean operators @samp{&} for AND and
-@samp{|} for OR.  @samp{&} binds more strongly than @samp{|}.
-Parenthesis are currently not implemented.  A tag may also be preceded
-by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
-positive selection.  The AND operator @samp{&} is optional when @samp{+}
-or @samp{-} is present.  Examples:
-
-@table @samp
-@item +WORK-BOSS
-Select headlines tagged @samp{:WORK:}, but discard those also tagged
-@samp{:BOSS:}.
-@item WORK|LAPTOP
-Selects lines tagged @samp{:WORK:} or @samp{:LAPTOP:}.
-@item WORK|LAPTOP&NIGHT
-Like before, but require the @samp{:LAPTOP:} lines to be tagged also
-@samp{NIGHT}.
-@end table
+If such a block already exists, its content is replaced by the new
+table.  The @samp{BEGIN} line can specify options:
+@example
+:maxlevels   @r{Maximum level depth to which times are listed in the table.}
+:emphasize   @r{When @code{t}, emphasize level one and level two items}
+:block       @r{The time block to consider.  This block is specified relative}
+             @r{to the current time and may be any of these keywords:}
+             @r{@code{today}, @code{yesterday}, @code{thisweek}, @code{lastweek},}
+             @r{@code{thismonth}, @code{lastmonth}, @code{thisyear}, or @code{lastyear}}.
+:tstart      @r{A time string specifying when to start considering times}
+:tend        @r{A time string specifying when to stop considering times}
+@end example
+So to get a clock summary for the current day, you could write
+@example
+#+BEGIN: clocktable :maxlevel 2 :block today
 
-@cindex TODO keyword matching, with tags search
-If you are using multi-state TODO keywords (@pxref{TODO extensions}), it
-can be useful to also match on the TODO keyword.  This can be done by
-adding a condition after a slash to a tags match.  The syntax is similar
-to the tag matches, but should be applied with consideration: For
-example, a positive selection on several TODO keywords can not
-meaningfully be combined with boolean AND.  However, @emph{negative
-selection} combined with AND can be meaningful.  To make sure that only
-lines are checked that actually have any TODO keyword, use @kbd{C-c a
-M}, or equivalently start the todo part after the slash with @samp{!}.
-Examples:
+#+END: clocktable
+@end example
+and to use a specific time range you could write@footnote{Note that all
+parameters must be specified in a single line - the line is broken here
+only to fit it onto the manual.}
+@example
+#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>" 
+                    :tend "<2006-08-10 Thu 12:00>"
 
-@table @samp
-@item WORK/WAITING
-Select @samp{:WORK:}-tagged TODO lines with the specific TODO
-keyword @samp{WAITING}.
-@item WORK/!-WAITING-NEXT
-Select @samp{:WORK:}-tagged TODO lines that are neither @samp{WAITING}
-nor @samp{NEXT}
-@item WORK/+WAITING|+NEXT
-Select @samp{:WORK:}-tagged TODO lines that are either @samp{WAITING} or
-@samp{NEXT}.
+#+END: clocktable
+@end example
+@kindex C-u C-c C-x C-u
+@item C-u C-c C-x C-u
+Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
+you have several clocktable blocks in a buffer.
 @end table
 
-@cindex regular expressions, with tags search
-Any element of the tag/todo match can be a regular expression - in this
-case it must be enclosed in curly braces.  For example,
-@samp{WORK+@{^BOSS.*@}} matches headlines that contain the tag
-@samp{WORK} and any tag @i{starting} with @samp{BOSS}.
-
-@cindex level, require for tags match
-You can also require a headline to be of a certain level, by writing
-instead of any TAG an expression like @samp{LEVEL=3}.  For example, a
-search @samp{+LEVEL=3+BOSS/-DONE} lists all level three headlines that
-have the tag BOSS and are @emph{not} marked with the todo keyword DONE.
+The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
+the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been
+worked on or closed during a day.
 
-@node Agenda views, Embedded LaTeX, Tags, Top
+@node Agenda views, Embedded LaTeX, Timestamps, Top
 @chapter Agenda Views
 @cindex agenda views
 
@@ -3654,7 +4336,7 @@ Create the calendar-like agenda (@pxref{Weekly/Daily agenda}).
 Create a list of all TODO items (@pxref{Global TODO list}).
 @item m @r{/} M
 Create a list of headlines matching a TAGS expression (@pxref{Matching
-headline tags}).
+tags and properties}).
 @item L
 Create the timeline view for the current buffer (@pxref{Timeline}).
 @item # @r{/} !
@@ -3683,7 +4365,7 @@ In this section we describe the built-in views.
 @menu
 * Weekly/Daily agenda::         The calendar page with current tasks
 * Global TODO list::            All unfinished action items
-* Matching headline tags::      Structured information with fine-tuned search
+* Matching tags and properties::  Structured information with fine-tuned search
 * Timeline::                    Time-sorted view for single file
 * Stuck projects::              Find projects you need to review
 @end menu
@@ -3743,8 +4425,25 @@ Sunrise/Sunset times, show lunar phases and to convert to other
 calendars, respectively.  @kbd{c} can be used to switch back and forth
 between calendar and agenda.
 
+If you are using the diary only for sexp entries and holidays, it is
+faster to not use the above setting, but instead to copy or even move
+the entries into an Org-mode file. Org-mode evaluates diary-style sexp
+entries, and does it faster because there is no overhead for first
+creating the diary display.  Note that the sexp entries must start at
+the left margin, no white space is allowed before them.  For example,
+the following segment of an Org-mode file will be processed and entries
+will be made in the agenda:
+
+@example
+* Birthdays and similar stuff
+#+CATEGORY: Holiday
+%%(org-calendar-holiday)   ; special function for holiday names
+#+CATEGORY: Ann
+%%(diary-anniversary 14  5 1956) Arthur Dent is %d years old
+%%(diary-anniversary  2 10 1869) Mahatma Gandhi would be %d years old
+@end example
 
-@node Global TODO list, Matching headline tags, Weekly/Daily agenda, Built-in agenda views
+@node Global TODO list, Matching tags and properties, Weekly/Daily agenda, Built-in agenda views
 @subsection The global TODO list
 @cindex global TODO list
 @cindex TODO list, global
@@ -3762,10 +4461,12 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
 @kindex C-c a T
 @item C-c a T
 @cindex TODO keyword matching
-Like the above, but allows selection of a specific TODO keyword.  You can
-also do this by specifying a prefix argument to @kbd{C-c a t}.  With a
-@kbd{C-u} prefix you are prompted for a keyword.  With a numeric
-prefix, the Nth keyword in @code{org-todo-keywords} is selected.
+Like the above, but allows selection of a specific TODO keyword.  You
+can also do this by specifying a prefix argument to @kbd{C-c a t}.  With
+a @kbd{C-u} prefix you are prompted for a keyword, and you may also
+specify several keywords by separating them with @samp{|} as boolean OR
+operator.  With a numeric prefix, the Nth keyword in
+@code{org-todo-keywords} is selected.
 @kindex r
 The @kbd{r} key in the agenda buffer regenerates it, and you can give
 a prefix argument to this command to change the selected TODO keyword,
@@ -3796,9 +4497,10 @@ and omit the sublevels from the global list.  Configure the variable
 @code{org-agenda-todo-list-sublevels} to get this behavior.
 @end itemize
 
-@node Matching headline tags, Timeline, Global TODO list, Built-in agenda views
-@subsection Matching headline tags
+@node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
+@subsection Matching Tags and Properties
 @cindex matching, of tags
+@cindex matching, of properties
 @cindex tags view
 
 If headlines in the agenda files are marked with @emph{tags}
@@ -3824,7 +4526,7 @@ together with a tags match is also possible, see @ref{Tag searches}.
 The commands available in the tags list are described in @ref{Agenda
 commands}.
 
-@node Timeline, Stuck projects, Matching headline tags, Built-in agenda views
+@node Timeline, Stuck projects, Matching tags and properties, Built-in agenda views
 @subsection Timeline for a single file
 @cindex timeline, single file
 @cindex time-sorted view
@@ -3834,7 +4536,7 @@ file in a @emph{time-sorted view}.  The main purpose of this command is
 to give an overview over events in a project.
 
 @table @kbd
-@kindex C-a a L
+@kindex C-c a L
 @item C-c a L
 Show a time-sorted view of the org file, with all time-stamped items.
 When called with a @kbd{C-u} prefix, all unfinished TODO entries
@@ -3875,16 +4577,18 @@ Lets assume that you, in your own way of using Org-mode, identify
 projects with a tag PROJECT, and that you use a todo keyword MAYBE to
 indicate a project that should not be considered yet.  Lets further
 assume that the todo keyword DONE marks finished projects, and that NEXT
-and TODO indicate next actions.  Finally, the tag @@SHOP indicates
-shopping and is a next action even without the NEXT tag.  In this case
-you would start by identifying eligible projects with a tags/todo match
-@samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT and @@SHOP in
-the subtree to identify projects that are not stuck.  The correct
-customization for this is
+and TODO indicate next actions.  The tag @@SHOP indicates shopping and
+is a next action even without the NEXT tag.  Finally, if the project
+contains the special word IGNORE anywhere, it should not be listed
+either.  In this case you would start by identifying eligible projects
+with a tags/todo match @samp{+PROJECT/-MAYBE-DONE}, and then check for
+TODO, NEXT, @@SHOP, and IGNORE in the subtree to identify projects that
+are not stuck.  The correct customization for this is
 
 @lisp
 (setq org-stuck-projects
-      ("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")))
+      '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
+                               "\\<IGNORE\\>"))
 @end lisp
 
 
@@ -4031,11 +4735,11 @@ Previous line (same as @key{down}).
 @item mouse-3
 @itemx @key{SPC}
 Display the original location of the item in another window.
-
+@c
 @kindex L
 @item L
 Display original location and recenter that window.
-
+@c
 @kindex mouse-2
 @kindex mouse-1
 @kindex @key{TAB}
@@ -4044,11 +4748,11 @@ Display original location and recenter that window.
 @itemx @key{TAB}
 Go to the original location of the item in another window.  Under Emacs
 22, @kbd{mouse-1} will also works for this.
-
+@c
 @kindex @key{RET}
 @itemx @key{RET}
 Go to the original location of the item and delete other windows.
-
+@c
 @kindex f
 @item f
 Toggle Follow mode.  In Follow mode, as you move the cursor through
@@ -4056,14 +4760,14 @@ the agenda buffer, the other window always shows the corresponding
 location in the org file.  The initial setting for this mode in new
 agenda buffers can be set with the variable
 @code{org-agenda-start-with-follow-mode}.
-
+@c
 @kindex b
 @item b
 Display the entire subtree of the current item in an indirect buffer.
 With numerical prefix ARG, go up to this level and then take that tree.
 If ARG is negative, go up that many levels.  With @kbd{C-u} prefix, do
 not remove the previously used indirect buffer.
-
+@c
 @kindex l
 @item l
 Toggle Logbook mode.  In Logbook mode, entries that where marked DONE while
@@ -4075,24 +4779,25 @@ as are entries that have been clocked on that day.
 @kindex o
 @item o
 Delete other windows.
-
-@kindex w
-@item w
-Switch to weekly view (7 days displayed together).
-
+@c
 @kindex d
-@item d
-Switch to daily view (just one day displayed).
-
+@kindex w
+@kindex m
+@kindex y
+@item d w m y
+Switch to day/week/month/year view.  When switching to day or week view,
+this setting becomes the default for subseqent agenda commands.  Since
+month and year views are slow to create, the do not become the default.
+@c
 @kindex D
 @item D
 Toggle the inclusion of diary entries.  See @ref{Weekly/Daily agenda}.
-
+@c
 @kindex g
 @item g
 Toggle the time grid on and off.  See also the variables
 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
-
+@c
 @kindex r
 @item r
 Recreate the agenda buffer, for example to reflect the changes
@@ -4100,21 +4805,21 @@ after modification of the time stamps of items with S-@key{left} and
 S-@key{right}.  When the buffer is the global todo list, a prefix
 argument is interpreted to create a selective list for a specific TODO
 keyword.
-
+@c
 @kindex s
 @item s
 Save all Org-mode buffers in the current Emacs session.
-
+@c
 @kindex @key{right}
 @item @key{right}
 Display the following @code{org-agenda-ndays} days.  For example, if
 the display covers a week, switch to the following week.  With prefix
 arg, go forward that many times @code{org-agenda-ndays} days.
-
+@c
 @kindex @key{left}
 @item @key{left}
 Display the previous dates.
-
+@c
 @kindex .
 @item .
 Goto today.
@@ -4124,53 +4829,53 @@ Goto today.
 
 @item 0-9
 Digit argument.
-
+@c
 @cindex undoing remote-editing events
 @cindex remote editing, undo
 @kindex C-_
 @item C-_
 Undo a change due to a remote editing command.  The change is undone
 both in the agenda buffer and in the remote buffer.
-
+@c
 @kindex t
 @item t
 Change the TODO state of the item, both in the agenda and in the
 original org file.
-
+@c
 @kindex C-k
 @item C-k
 Delete the current agenda item along with the entire subtree belonging
 to it in the original Org-mode file.  If the text to be deleted remotely
 is longer than one line, the kill needs to be confirmed by the user.  See
 variable @code{org-agenda-confirm-kill}.
-
+@c
 @kindex $
 @item $
 Archive the subtree corresponding to the current headline.
-
+@c
 @kindex T
 @item T
 Show all tags associated with the current item.  Because of
 inheritance, this may be more than the tags listed in the line itself.
-
+@c
 @kindex :
 @item :
 Set tags for the current headline.
-
+@c
 @kindex a
 @item a
 Toggle the ARCHIVE tag for the current headline.
-
+@c
 @kindex ,
 @item ,
 Set the priority for the current item.  Org-mode prompts for the
 priority character. If you reply with @key{SPC}, the priority cookie
 is removed from the entry.
-
+@c
 @kindex P
 @item P
 Display weighted priority of current item.
-
+@c
 @kindex +
 @kindex S-@key{up}
 @item +
@@ -4178,21 +4883,21 @@ Display weighted priority of current item.
 Increase the priority of the current item.  The priority is changed in
 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
 key for this.
-
+@c
 @kindex -
 @kindex S-@key{down}
 @item -
 @itemx S-@key{down}
 Decrease the priority of the current item.
-
+@c
 @kindex C-c C-s
 @item C-c C-s
 Schedule this item
-
+@c
 @kindex C-c C-d
 @item C-c C-d
 Set a deadline for this item.
-
+@c
 @kindex S-@key{right}
 @item S-@key{right}
 Change the time stamp associated with the current line by one day into
@@ -4201,25 +4906,27 @@ example, @kbd{3 6 5 S-@key{right}} will change it by a year.  The
 stamp is changed in the original org file, but the change is not
 directly reflected in the agenda buffer.  Use the
 @kbd{r} key to update the buffer.
-
+@c
 @kindex S-@key{left}
 @item S-@key{left}
 Change the time stamp associated with the current line by one day
 into the past.
-
+@c
 @kindex >
 @item >
 Change the time stamp associated with the current line to today.
 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
 on my keyboard.
-
+@c
 @kindex I
 @item I
 Start the clock on the current item.  If a clock is running already, it
 is stopped first.
+@c
 @kindex O
 @item O
 Stop the previously started clock.
+@c
 @kindex X
 @item X
 Cancel the currently running clock.
@@ -4229,11 +4936,11 @@ Cancel the currently running clock.
 @kindex c
 @item c
 Open the Emacs calendar and move to the date at the agenda cursor.
-
+@c
 @item c
 When in the calendar, compute and show the Org-mode agenda for the
 date at the cursor.
-
+@c
 @cindex diary entries, creating from agenda
 @kindex i
 @item i
@@ -4241,42 +4948,53 @@ Insert a new entry into the diary.  Prompts for the type of entry
 (day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
 entry in the diary, just as @kbd{i d} etc. would do in the calendar.
 The date is taken from the cursor position.
-
+@c
 @kindex M
 @item M
 Show the phases of the moon for the three months around current date.
-
+@c
 @kindex S
 @item S
 Show sunrise and sunset times.  The geographical location must be set
 with calendar variables, see documentation of the Emacs calendar.
-
+@c
 @kindex C
 @item C
 Convert the date at cursor into many other cultural and historic
 calendars.
-
+@c
 @kindex H
 @item H
 Show holidays for three month around the cursor date.
-
+@c
 @c FIXME:  This should be a different key.
 @kindex C-c C-x C-c
 @item C-c C-x C-c
 Export a single iCalendar file containing entries from all agenda files.
 
+@tsubheading{Exporting to a file}
+@kindex C-x C-w
+@item C-x C-w
+@cindex exporting agenda views
+@cindex agenda views, exporting
+Write the agenda view to a file.  Depending on the extension of the
+selected file name, the view will be exported as HTML (extension
+@file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
+plain text (any other extension).  Use the variable
+@code{org-agenda-exporter-settings} to set options for @file{ps-print}
+and for @file{htmlize} to be used during export.
+
 @tsubheading{Quit and Exit}
 @kindex q
 @item q
 Quit agenda, remove the agenda buffer.
-
+@c
 @kindex x
 @cindex agenda files, removing buffers
 @item x
 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
 for the compilation of the agenda.  Buffers created by the user to
 visit org files will not be removed.
-
 @end table
 
 
@@ -4294,7 +5012,8 @@ dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
 * Storing searches::            Type once, use often
 * Block agenda::                All the stuff you need in a single buffer
 * Setting Options::             Changing the rules
-* Batch processing::            Agenda views from the command line
+* Exporting Agenda Views::      Writing agendas to files.
+* Extracting Agenda Information for other programs::  
 @end menu
 
 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
@@ -4386,7 +5105,7 @@ your agenda for the current week, all TODO items that carry the tag
 command @kbd{C-c a o} provides a similar view for office tasks.
 
 
-@node Setting Options, Batch processing, Block agenda, Custom agenda views
+@node Setting Options, Exporting Agenda Views, Block agenda, Custom agenda views
 @subsection Setting Options for custom commands
 @cindex options, for custom agenda views
 
@@ -4434,7 +5153,8 @@ the results for GARDEN tags query in the opposite order,
       '(("h" "Agenda and Home-related tasks"
          ((agenda)
           (tags-todo "HOME")
-          (tags "GARDEN" ((org-agenda-sorting-strategy '(priority-up)))))
+          (tags "GARDEN"
+                ((org-agenda-sorting-strategy '(priority-up)))))
          ((org-agenda-sorting-strategy '(priority-down))))
         ("o" "Agenda and Office-related tasks"
          ((agenda)
@@ -4450,36 +5170,234 @@ this interface, the @emph{values} are just lisp expressions.  So if the
 value is a string, you need to add the double quotes around the value
 yourself.
 
-@node Batch processing,  , Setting Options, Custom agenda views
-@subsection Creating agenda views in batch processing
-@cindex agenda, batch production
 
-If you want to print or otherwise reprocess agenda views, it can be
-useful to create an agenda from the command line.  This is the purpose
-of the function @code{org-batch-agenda}.  It takes as a parameter one of
-the strings that are the keys in @code{org-agenda-custom-commands}.  For
-example, to directly print the current TODO list, you could use
+@node Exporting Agenda Views, Extracting Agenda Information for other programs, Setting Options, Custom agenda views
+@subsection Exporting Agenda Views
+@cindex agenda views, exporting
+
+If you are away from your computer, it can be very useful to have a
+printed version of some agenda views to carry around.  Org-mode can
+export custom agenda views as plain text, HTML@footnote{You need to
+install Hrvoje Niksic' @file{htmlize.el}.} and postscript.  If you want
+to do this only occasionally, use the command
+
+@table @kbd
+@kindex C-x C-w
+@item C-x C-w
+@cindex exporting agenda views
+@cindex agenda views, exporting
+Write the agenda view to a file.  Depending on the extension of the
+selected file name, the view will be exported as HTML (extension
+@file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
+plain text (any other extension).  Use the variable
+@code{org-agenda-exporter-settings} to set options for @file{ps-print}
+and for @file{htmlize} to be used during export, for example
+@lisp
+(setq org-agenda-exporter-settings
+      '((ps-number-of-columns 2)
+        (ps-landscape-mode t)
+        (htmlize-output-type 'css)))
+@end lisp
+@end table
+
+If you need to export certain agenda views frequently, you can associate
+any custom agenda command with a list of output file names
+@footnote{If you want to store standard views like the weekly agenda
+or the global TODO list as well, you need to define custom commands for
+them in order to be able to specify filenames.}.  Here is an example
+that first does define custom commands for the agenda and the global
+todo list, together with a number of files to which to export them.
+Then we define two block agenda commands and specify filenames for them
+as well.  File names can be relative to the current working directory,
+or absolute.
+
+@lisp
+@group
+(setq org-agenda-custom-commands
+      '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
+        ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
+        ("h" "Agenda and Home-related tasks"
+         ((agenda)
+          (tags-todo "HOME")
+          (tags "GARDEN"))
+         nil
+         ("~/views/home.html"))
+        ("o" "Agenda and Office-related tasks"
+         ((agenda)
+          (tags-todo "WORK")
+          (tags "OFFICE"))
+         nil
+         ("~/views/office.ps"))))
+@end group
+@end lisp
+
+The extension of the file name determines the type of export.  If it is
+@file{.html}, Org-mode will use the @file{htmlize.el} package to convert
+the buffer to HTML and save it to this file name.  If the extension is
+@file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
+postscript output.  Any other extension produces a plain ASCII file.
+
+The export files are @emph{not} created when you use one of those
+commands interactively.  Instead, there is a special command to produce
+@emph{all} specified files in one step:
+
+@table @kbd
+@kindex C-c a e
+@item C-c a e
+Export all agenda views that have export filenames associated with
+them.
+@end table
+
+You can use the options section of the custom agenda commands to also
+set options for the export commands.  For example:
+
+@lisp
+(setq org-agenda-custom-commands
+      '(("X" agenda ""
+         ((ps-number-of-columns 2)
+          (ps-landscape-mode t)
+          (org-agenda-prefix-format " [ ] ")
+          (org-agenda-with-colors nil)
+          (org-agenda-remove-tags t))
+         ("theagenda.ps"))))
+@end lisp
+
+@noindent
+This command sets two options for the postscript exporter, to make it
+print in two columns in landscape format - the resulting page can be cut
+in two and then used in a paper agenda.  The remaining settings modify
+the agenda prefix to omit category and scheduling information, and
+instead include a checkbox to check off items.  We also remove the tags
+to make the lines compact, and we don't want to use colors for the
+black-and-white printer.  Settings specified in
+@code{org-agenda-exporter-settings} will also apply, but the settings
+in @code{org-agenda-custom-commands} take precedence.
+
+@noindent
+From the command line you may also use
+@example
+emacs -f org-batch-store-agenda-views -kill
+@end example
+@noindent
+or, if you need to modify some parameters
+@example
+emacs -eval '(org-batch-store-agenda-views                      \
+              org-agenda-ndays 30                               \
+              org-agenda-include-diary nil                      \
+              org-agenda-files (quote ("~/org/project.org")))'  \
+      -kill
+@end example
+@noindent
+which will create the agenda views restricted to the file
+@file{~/org/project.org}, without diary entries and with 30 days
+extent. 
+
+@node Extracting Agenda Information for other programs,  , Exporting Agenda Views, Custom agenda views
+@subsection Extracting Agenda Information for other programs
+@cindex agenda, pipe
+@cindex Scripts, for agenda processing
+
+Org-mode provides commands to access agenda information for the command
+line in emacs batch mode.  This extracted information can be sent
+directly to a printer, or it can be read by a program that does further
+processing of the data.  The first of these commands is the function
+@code{org-batch-agenda}, that produces an agenda view and sends it as
+ASCII text to STDOUT.  The command takes a single string as parameter.
+If the string has length 1, it is used as a key to one of the commands
+you have configured in @code{org-agenda-custom-commands}, basically any
+key you can use after @kbd{C-c a}.  For example, to directly print the
+current TODO list, you could use
 
 @example
 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
 @end example
 
+If the parameter is a string with 2 or more characters, it is used as a
+tags/todo match string.  For example, to print your local shopping list
+(all items with the tag @samp{shop}, but excluding the tag
+@samp{NewYork}), you could use
+
+@example
+emacs -batch -l ~/.emacs                                      \       
+      -eval '(org-batch-agenda "+shop-NewYork")' | lpr
+@end example
+
 @noindent
 You may also modify parameters on the fly like this:
 
 @example
 emacs -batch -l ~/.emacs                                      \
    -eval '(org-batch-agenda "a"                               \
-            org-agenda-ndays 300                              \
+            org-agenda-ndays 30                               \
             org-agenda-include-diary nil                      \
             org-agenda-files (quote ("~/org/project.org")))'  \
    | lpr
 @end example
 
 @noindent
-which will produce a 300 day agenda, fully restricted to the Org file
+which will produce a 30 day agenda, fully restricted to the Org file
 @file{~/org/projects.org}, not even including the diary.
 
+If you want to process the agenda data in more sophisticated ways, you
+can use the command @code{org-batch-agenda-csv} to get a comma-separated
+list of values for each agenda item.  Each line in the output will
+contain a number of fields separated by commas.  The fields in a line
+are:
+
+@example
+category     @r{The category of the item}
+head         @r{The headline, without TODO kwd, TAGS and PRIORITY}
+type         @r{The type of the agenda entry, can be}
+                todo               @r{selected in TODO match}
+                tagsmatch          @r{selected in tags match}
+                diary              @r{imported from diary}
+                deadline           @r{a deadline}
+                scheduled          @r{scheduled}
+                timestamp          @r{appointment, selected by timestamp}
+                closed             @r{entry was closed on date}
+                upcoming-deadline  @r{warning about nearing deadline}
+                past-scheduled     @r{forwarded scheduled item}
+                block              @r{entry has date block including date}
+todo         @r{The todo keyword, if any}
+tags         @r{All tags including inherited ones, separated by colons}
+date         @r{The relevant date, like 2007-2-14}
+time         @r{The time, like 15:00-16:50}
+extra        @r{String with extra planning info}
+priority-l   @r{The priority letter if any was given}
+priority-n   @r{The computed numerical priority}
+@end example
+
+@noindent
+Time and date will only be given if a timestamp (or deadline/scheduled)
+lead to the selection of the item.
+
+A CSV list like this is very easy to use in a post processing script.
+For example, here is a Perl program that gets the TODO list from
+Emacs/org-mode and prints all the items, preceded by a checkbox:
+
+@example
+@group
+#!/usr/bin/perl
+
+# define the Emacs command to run
+$cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
+
+# run it and capture the output
+$agenda = qx@{$cmd 2>/dev/null@};
+
+# loop over all lines
+foreach $line (split(/\n/,$agenda)) @{
+
+  # get the individual values
+  ($category,$head,$type,$todo,$tags,$date,$time,$extra,
+   $priority_l,$priority_n) = split(/,/,$line);
+
+  # proccess and print
+  print "[ ] $head\n";
+@}
+@end group
+@end example
+
 @node Embedded LaTeX, Exporting, Agenda views, Top
 @chapter Embedded LaTeX
 @cindex @TeX{} interpretation
@@ -4557,19 +5475,23 @@ are surrounded with @code{<sub>} and @code{<sup>} tags, respectively.
 With symbols, sub- and superscripts, HTML is pretty much at its end when
 it comes to representing mathematical formulas@footnote{Yes, there is
 MathML, but that is not yet fully supported by many browsers, and there
-is no decent converter for turning LaTeX of ASCII representations of
-formulas into MathML.  So for the time being, converting formulas into
-images seems the way to go.}.  More complex
-expressions need a dedicated formula processor.  To this end, Org-mode
-can contain arbitrary La@TeX{} fragments.  It provides commands to
-preview the typeset result of these fragments, and upon export to HTML,
-all fragments will be converted to images and inlined into the HTML
-document.  For this to work you need to be on a system with a working
-La@TeX{} installation.  You also need the @file{dvipng} program,
-available at @url{http://sourceforge.net/projects/dvipng/}.
+is no decent converter for turning La@TeX{} or ASCII representations of
+formulas into MathML. So for the time being, converting formulas into
+images seems the way to go.}. More complex expressions need a dedicated
+formula processor. To this end, Org-mode can contain arbitrary La@TeX{}
+fragments. It provides commands to preview the typeset result of these
+fragments, and upon export to HTML, all fragments will be converted to
+images and inlined into the HTML document@footnote{The La@TeX{} export
+will not use images for displaying La@TeX{} fragments but include these
+fragments directly into the La@TeX{} code.}. For this to work you
+need to be on a system with a working La@TeX{} installation. You also
+need the @file{dvipng} program, available at
+@url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
+will be used when processing a fragment can be configured with the
+variable @code{org-format-latex-header}.
 
 La@TeX{} fragments don't need any special marking at all.  The following
-snippets will be identified as LaTeX source code:
+snippets will be identified as La@TeX{} source code:
 @itemize @bullet
 @item
 Environments of any kind.  The only requirement is that the
@@ -4635,7 +5557,7 @@ setting is active:
 @cindex CDLaTeX
 
 CDLaTeX-mode is a minor mode that is normally used in combination with a
-major LaTeX mode like AUCTeX in order to speed-up insertion of
+major La@TeX{} mode like AUCTeX in order to speed-up insertion of
 environments and math templates.  Inside Org-mode, you can make use of
 some of the features of cdlatex-mode.  You need to install
 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
@@ -4658,7 +5580,7 @@ Environment templates can be inserted with @kbd{C-c @{}.
 @item
 @kindex @key{TAB}
 The @key{TAB} key will do template expansion if the cursor is inside a
-LaTeX fragment@footnote{Org-mode has a method to test if the cursor is
+La@TeX{} fragment@footnote{Org-mode has a method to test if the cursor is
 inside such a fragment, see the documentation of the function
 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
@@ -4671,7 +5593,7 @@ To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
 @item
 @kindex _
 @kindex ^
-Pressing @kbd{_} and @kbd{^} inside a LaTeX fragment will insert these
+Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
 characters together with a pair of braces.  If you use @key{TAB} to move
 out of the braces, and if the braces surround only a single character or
 macro, they are removed again (depending on the variable
@@ -4679,7 +5601,7 @@ macro, they are removed again (depending on the variable
 @item
 @kindex `
 Pressing the backquote @kbd{`} followed by a character inserts math
-macros, also outside LaTeX fragments.  If you wait more than 1.5 seconds
+macros, also outside La@TeX{} fragments.  If you wait more than 1.5 seconds
 after the backquote, a help window will pop up.
 @item
 @kindex '
@@ -4698,11 +5620,12 @@ Org-mode documents can be exported into a variety of other formats.  For
 printing and sharing of notes, ASCII export produces a readable and
 simple version of an Org-mode file.  HTML export allows you to publish a
 notes file on the web, while the XOXO format provides a solid base for
-exchange with a broad range of other applications.  To incorporate
-entries with associated times like deadlines or appointments into a
-desktop calendar program like iCal, Org-mode can also produce extracts
-in the iCalendar format.  Currently Org-mode only supports export, not
-import of these different formats.
+exchange with a broad range of other applications. La@TeX{} export lets
+you use Org-mode and its structured editing functions to easily create
+La@TeX{} files.  To incorporate entries with associated times like
+deadlines or appointments into a desktop calendar program like iCal,
+Org-mode can also produce extracts in the iCalendar format.  Currently
+Org-mode only supports export, not import of these different formats.
 
 When exporting, Org-mode uses special conventions to enrich the output
 produced.  @xref{Text interpretation}, for more details.
@@ -4718,6 +5641,7 @@ command.
 @menu
 * ASCII export::                Exporting to plain ASCII
 * HTML export::                 Exporting to HTML
+* LaTeX export::                Exporting to LaTeX
 * XOXO export::                 Exporting to XOXO
 * iCalendar export::            Exporting in iCalendar format
 * Text interpretation::         How the exporter looks at the file
@@ -4736,10 +5660,12 @@ file.
 @table @kbd
 @kindex C-c C-e a
 @item C-c C-e a
-Export as ASCII file.  If there is an active region, only the region
-will be exported.  For an org file @file{myfile.org}, the ASCII file
+Export as ASCII file.  For an org file @file{myfile.org}, the ASCII file
 will be @file{myfile.txt}.  The file will be overwritten without
-warning.
+warning.  If there is an active region, only the region will be
+exported. If the selected region is a single tree, the tree head will
+become the document title.  If the tree head entry has or inherits an
+EXPORT_FILE_NAME property, that name will be used for the export.
 @kindex C-c C-e v a
 @item C-c C-e v a
 Export only the visible part of the document.
@@ -4764,7 +5690,7 @@ the body text.  Any indentation larger than this is adjusted to preserve
 the layout relative to the first line.  Should there be lines with less
 indentation than the first, these are left alone.
 
-@node HTML export, XOXO export, ASCII export, Exporting
+@node HTML export, LaTeX export, ASCII export, Exporting
 @section HTML export
 @cindex HTML export
 
@@ -4773,14 +5699,14 @@ HTML formatting, in ways similar to John Grubers @emph{markdown}
 language, but with additional support for tables.
 
 @menu
-* Export commands::             How to invode HTML export
+* HTML Export commands::        How to invoke LaTeX export
 * Quoting HTML tags::           Using direct HTML in Org-mode
-* Links::                       How hyperlinks get transferred to HTML
-* Images::                      To inline or not to inline?
-* CSS support::                 Style specifications
+* Links::                       Transformation of links for HTML
+* Images::                      How to include images
+* CSS support::                 Changing the appearence of the output
 @end menu
 
-@node Export commands, Quoting HTML tags, HTML export, HTML export
+@node HTML Export commands, Quoting HTML tags, HTML export, HTML export
 @subsection HTML export commands
 
 @cindex region, active
@@ -4789,15 +5715,40 @@ language, but with additional support for tables.
 @table @kbd
 @kindex C-c C-e h
 @item C-c C-e h
-Export as HTML file @file{myfile.html}.
+Export as HTML file @file{myfile.html}.  For an org file
+@file{myfile.org}, the ASCII file will be @file{myfile.html}.  The file
+will be overwritten without warning.  If there is an active region, only
+the region will be exported. If the selected region is a single tree,
+the tree head will become the document title.  If the tree head entry
+has or inherits an EXPORT_FILE_NAME property, that name will be used for
+the export.
 @kindex C-c C-e b
 @item C-c C-e b
-Export as HTML file and open it with a browser.
+Export as HTML file and immediately open it with a browser.
+@kindex C-c C-e H
+@item C-c C-e H
+Export to a temporary buffer, do not create a file.
+@kindex C-c C-e R
+@item C-c C-e H
+Export the active region to a temporary buffer.  With prefix arg, do not
+produce file header and foot, but just the plain HTML section for the
+region.  This is good for cut-and-paste operations.
 @kindex C-c C-e v h
 @kindex C-c C-e v b
+@kindex C-c C-e v H
+@kindex C-c C-e v R
 @item C-c C-e v h
 @item C-c C-e v b
+@item C-c C-e v H
+@item C-c C-e v R
 Export only the visible part of the document.
+@item M-x org-export-region-as-html
+Convert the region to HTML under the assumption that it was org-mode
+syntax before.  This is a global command that can be invoked in any
+buffer.
+@item M-x org-replace-region-by-HTML
+Replace the active region (assumed to be in Org-mode syntax) by HTML
+code.
 @end table
 
 @cindex headline levels, for exporting
@@ -4813,7 +5764,7 @@ at a different level, specify it with a prefix argument.  For example,
 @noindent
 creates two levels of headings and does the rest as items.
 
-@node Quoting HTML tags, Links, Export commands, HTML export
+@node Quoting HTML tags, Links, HTML Export commands, HTML export
 @subsection Quoting HTML tags
 
 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
@@ -4917,7 +5868,78 @@ section in the buffer.
 @c FIXME: More about header and footer styles
 @c FIXME: Talk about links and targets.
 
-@node XOXO export, iCalendar export, HTML export, Exporting
+@node LaTeX export, XOXO export, HTML export, Exporting
+@section LaTeX export
+@cindex LaTeX export
+
+Org-mode contains a La@TeX{} exporter written by Bastien Guerry.
+
+@menu
+* LaTeX export commands::       How to invoke LaTeX export
+* Quoting LaTeX code::          Incorporating literal LaTeX code
+@end menu
+
+@node LaTeX export commands, Quoting LaTeX code, LaTeX export, LaTeX export
+@subsection LaTeX export commands
+
+@table @kbd
+@kindex C-c C-e l
+@item C-c C-e l
+Export as La@TeX{} file @file{myfile.tex}.
+@kindex C-c C-e L
+@item C-c C-e L
+Export to a temporary buffer, do not create a file.
+@kindex C-c C-e v l
+@kindex C-c C-e v L
+@item C-c C-e v l
+@item C-c C-e v L
+Export only the visible part of the document.
+@item M-x org-export-region-as-latex
+Convert the region to La@TeX{} under the assumption that it was org-mode
+syntax before.  This is a global command that can be invoked in any
+buffer.
+@item M-x org-replace-region-by-latex
+Replace the active region (assumed to be in Org-mode syntax) by La@TeX{}
+code.
+@end table
+
+@cindex headline levels, for exporting
+In the exported version, the first 3 outline levels will become
+headlines, defining a general document structure.  Additional levels
+will be exported as description lists.  The exporter can ignore them or
+convert them to a custom string depending on
+@code{org-latex-low-levels}.
+
+If you want that transition to occur at a different level, specify it
+with a prefix argument. For example,
+
+@example
+@kbd{C-2 C-c C-e l}
+@end example
+
+@noindent
+creates two levels of headings and does the rest as items.
+
+@node Quoting LaTeX code,  , LaTeX export commands, LaTeX export
+@subsection Quoting LaTeX code
+
+Embedded La@TeX{} as described in @ref{Embedded LaTeX} will be correctly
+inserted into the La@TeX{} file.  Forthermore, you can add special code
+that should only be present in La@TeX{} export with the following
+constructs:
+
+@example
+#+LaTeX: Literal LaTeX code for export
+@end example
+
+@noindent or
+
+@example
+#+BEGIN_LaTeX
+All lines between these markers are exported literally
+#+END_LaTeX
+@end example
+@node XOXO export, iCalendar export, LaTeX export, Exporting
 @section XOXO export
 @cindex XOXO export
 
@@ -4975,19 +5997,20 @@ in order to produce better output.
 
 @menu
 * Comment lines::               Some lines will not be exported
+* Initial text::                Text before the first headline
+* Footnotes::                   Numbers like [1]
 * Enhancing text::              Subscripts, symbols and more
 * Export options::              How to influence the export settings
 @end menu
 
-@node Comment lines, Enhancing text, Text interpretation, Text interpretation
+@node Comment lines, Initial text, Text interpretation, Text interpretation
 @subsection Comment lines
 @cindex comment lines
 @cindex exporting, not
 
 Lines starting with @samp{#} in column zero are treated as comments
 and will never be exported.  Also entire subtrees starting with the
-word @samp{COMMENT} will never be exported.  Finally, any text before
-the first headline will not be exported either.
+word @samp{COMMENT} will never be exported.
 
 @table @kbd
 @kindex C-c ;
@@ -4995,15 +6018,78 @@ the first headline will not be exported either.
 Toggle the COMMENT keyword at the beginning of an entry.
 @end table
 
-@node Enhancing text, Export options, Comment lines, Text interpretation
+@node Initial text, Footnotes, Comment lines, Text interpretation
+@subsection Text before the first headline
+
+Org-mode normally ignores any text before the first headline when
+exporting, leaving this region for internal links to speed up navigation
+etc.  However, in publishing-oriented files, you might want to have some
+text before the first headline, like a small introduction, special HTML
+code with a navigation bar, etc.  You can ask to have this part of the
+file exported as well by setting the variable
+@code{org-export-skip-text-before-1st-heading} to @code{nil}.  On a
+per-file basis, you can get the same effect with
+
+@example
+#+OPTIONS: skip:nil
+@end example
+
+The text before the first headline will be fully processed
+(@pxref{Enhancing text}), and the first non-comment line becomes the
+title of the exported document.  If you need to include literal HTML,
+use the special constructs described in @ref{Quoting HTML tags}.  The
+table of contents is normally inserted directly before the first
+headline of the file.  If you would like to get it to a different
+location, insert the string @code{[TABLE-OF-CONTENTS]} on a line by
+itself at the desired location.
+
+Finally, if you want to use the space before the first headline for
+internal purposes, but @emph{still} want to place something before the
+first headline when exporting the file, you can use the @code{#+TEXT}
+construct:
+
+@example
+#+OPTIONS: skip:t
+#+TEXT: This text will go before the *first* headline.
+#+TEXT: We place the table of contents here:
+#+TEXT: [TABLE-OF-CONTENTS]
+#+TEXT: This goes between the table of contents and the first headline
+@end example
+
+@node Footnotes, Enhancing text, Initial text, Text interpretation
+@subsection Footnotes
+@cindex footnotes
+@cindex @file{footnote.el}
+
+Numbers in square brackets are treated as footnotes, so that you can use
+the Emacs package @file{footnote.el} to create footnotes.  For example:
+
+@example
+The org-mode homepage[1] clearly needs help from
+a good web designer.
+
+[1] The link is: http://www.astro.uva.nl/~dominik/Tools/org
+@end example
+
+@noindent
+@kindex C-c !
+Note that the @file{footnote} package uses @kbd{C-c !} to invoke its
+commands.  This binding conflicts with the org-mode command for
+inserting inactive time stamps.  You could use the variable
+@code{footnote-prefix} to switch footnotes commands to another key.  Or,
+if you are too used to this binding, you could use
+@code{org-replace-disputed-keys} and @code{org-disputed-keys} to change
+the settings in Org-mode.
+
+@node Enhancing text, Export options, Footnotes, Text interpretation
 @subsection Enhancing text for export
 @cindex enhancing text
 @cindex richer text
 
 Some of the export backends of Org-mode allow for sophisticated text
-formatting, this is true in particular for the HTML backend.  Org-mode
-has a number of typing conventions that allow to produce a richly
-formatted output.
+formatting, this is true in particular for the HTML and La@TeX{}
+backends. Org-mode has a number of typing conventions that allow to
+produce a richly formatted output.
 
 @itemize @bullet
 
@@ -5019,7 +6105,9 @@ backend supports lists.  See @xref{Plain lists}.
 @cindex italic text
 @item
 You can make words @b{*bold*}, @i{/italic/}, _underlined_,
-@code{=code=}, and @samp{+strikethrough+}.
+@code{=code=}, and even @samp{+strikethrough+}@footnote{but remember
+that strikethrough is typographically evil and should @i{never} be
+used.}.
 
 @cindex horizontal rules, in exported files
 @item
@@ -5042,8 +6130,8 @@ separator line will be formatted as table header fields.
 @item
 If a headline starts with the word @samp{QUOTE}, the text below the
 headline will be typeset as fixed-width, to allow quoting of computer
-codes etc.  Lines starting with @samp{:} are also typeset in
-fixed-width font.
+codes etc.  Lines starting with @samp{:} are also typeset in fixed-width
+font. 
 @table @kbd
 @kindex C-c :
 @item C-c :
@@ -5057,7 +6145,7 @@ this position.
 @end itemize
 
 If these conversions conflict with your habits of typing ASCII text,
-they can all be turned off with corresponding variables (see the
+they can all be turned off with corresponding variables.  See the
 customization group @code{org-export-general}, and the following section
 which explains how to set export options with special lines in a
 buffer.
@@ -5088,7 +6176,7 @@ Insert template with export options, see example below.
 #+LANGUAGE:  language for HTML, e.g. @samp{en} (@code{org-export-default-language})
 #+TEXT:      Some descriptive text to be inserted at the beginning.
 #+TEXT:      Several lines may be given.
-#+OPTIONS:   H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t *:nil TeX:t LaTeX:t
+#+OPTIONS:   H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
 @end example
 
 @noindent
@@ -5102,37 +6190,54 @@ you can:
 @cindex fixed-width sections
 @cindex tables
 @cindex @TeX{}-like syntax for sub- and superscripts
+@cindex footnotes
 @cindex emphasized text
 @cindex @TeX{} macros
 @cindex La@TeX{} fragments
+@cindex author info, in export
+@cindex time info, in export
 @example
-H:      @r{set the number of headline levels for export}
-num:    @r{turn on/off section-numbers}
-toc:    @r{turn on/off table of contents, or set level limit (integer)}
-\n:     @r{turn on/off linebreak-preservation}
-@@:      @r{turn on/off quoted HTML tags}
-::      @r{turn on/off fixed-width sections}
-|:      @r{turn on/off tables}
-^:      @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
-*:      @r{turn on/off emphasized text (bold, italic, underlined)}
-TeX:    @r{turn on/off simple @TeX{} macros in plain text}
-LaTeX:  @r{turn on/off La@TeX{} fragments}
+H:         @r{set the number of headline levels for export}
+num:       @r{turn on/off section-numbers}
+toc:       @r{turn on/off table of contents, or set level limit (integer)}
+\n:        @r{turn on/off linebreak-preservation}
+@@:         @r{turn on/off quoted HTML tags}
+::         @r{turn on/off fixed-width sections}
+|:         @r{turn on/off tables}
+^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
+           @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
+           @r{the simple @code{a_b} will be left as it is.}
+f:         @r{turn on/off foototes like this[1].}
+*:         @r{turn on/off emphasized text (bold, italic, underlined)}
+TeX:       @r{turn on/off simple @TeX{} macros in plain text}
+LaTeX:     @r{turn on/off La@TeX{} fragments}
+skip:      @r{turn on/off skipping the text before the first heading}
+author:    @r{turn on/off inclusion of author name/email into exported file}
+timestamp: @r{turn on/off inclusion creation time into exported file}
 @end example
 
+These options take effect in both the HTML and La@TeX{} export, except
+for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
+@code{nil} for the La@TeX{} export.
+
 @node Publishing, Miscellaneous, Exporting, Top
 @chapter Publishing
 @cindex publishing
 
-Org-mode includes@footnote{@file{org-publish.el} is not yet part of
-Emacs, so if you are using @file{org.el} as it comes with Emacs, you
-need to download this file separately.  Also make sure org.el is at
-least version 4.27.} a publishing management system
-that allows you to configure automatic HTML conversion of
-@emph{projects} composed of interlinked org files.  This system is
-called @emph{org-publish}.  You can also configure org-publish to
-automatically upload your exported HTML pages and related attachments,
-such as images and source code files, to a web server.  Org-publish turns
-org-mode into a web-site authoring tool.
+Org-mode includes@footnote{@file{org-publish.el} is not distributed with
+Emacs 21, if you are still using Emacs 21, you need you need to download
+this file separately.} a publishing management system that allows you to
+configure automatic HTML conversion of @emph{projects} composed of
+interlinked org files.  This system is called @emph{org-publish}.  You can
+also configure org-publish to automatically upload your exported HTML
+pages and related attachments, such as images and source code files, to
+a web server. Org-publish turns org-mode into a web-site authoring tool.
+
+You can also use Org-publish to convert files into La@TeX{}, or even
+combine HTML and La@TeX{} conversion so that files are available in both
+formats on the server@footnote{Since La@TeX{} files on a server are not
+that helpful, you surely want to perform further conversion on them --
+e.g. convert them to @code{PDF} format.}.
 
 Org-publish has been contributed to Org-mode by David O'Toole.
 
@@ -5235,9 +6340,11 @@ Publishing means that a file is copied to the destination directory and
 possibly transformed in the process.  The default transformation is to
 export Org-mode files as HTML files, and this is done by the function
 @code{org-publish-org-to-html} which calls the HTML exporter
-(@pxref{HTML export}).  Other files like images only need to be copied
-to the publishing destination.  For non-Org-mode files, you need to
-specify the publishing function.
+(@pxref{HTML export}). But you also can publish your files in La@TeX{} by
+using the function @code{org-publish-org-to-latex} instead. Other files
+like images only need to be copied to the publishing destination. For
+non-Org-mode files, you need to specify the publishing function.
+
 
 @multitable @columnfractions 0.3 0.7
 @item @code{:publishing-function}
@@ -5254,13 +6361,13 @@ provides one for attachments (files that only need to be copied):
 @code{org-publish-attachment}.
 
 @node Publishing options, Publishing links, Publishing action, Configuration
-@subsection Options for the HTML exporter
+@subsection Options for the HTML/LaTeX exporters
 @cindex options, for publishing
 
 The property list can be used to set many export options for the HTML
-exporter.  In most cases, these properties correspond to user variables
-in Org-mode.  The table below lists these properties along with the
-variable they belong to.  See the documentation string for the
+and La@TeX{} exporters.  In most cases, these properties correspond to user
+variables in Org-mode.  The table below lists these properties along
+with the variable they belong to.  See the documentation string for the
 respective variable for details.
 
 @multitable @columnfractions 0.3 0.7
@@ -5292,9 +6399,14 @@ respective variable for details.
 @item @code{:email}                 @tab @code{user-mail-address}
 @end multitable
 
+Most of the @code{org-export-with-*} variables have the same effect in
+both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
+@code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
+La@TeX{} export.
+
 When a property is given a value in org-publish-project-alist, its
 setting overrides the value of the corresponding user variable (if any)
-during publishing.  options set within a file (@pxref{Export
+during publishing.  Options set within a file (@pxref{Export
 options}), however, override everything.
 
 @node Publishing links, Project page index, Publishing options, Configuration
@@ -5444,13 +6556,13 @@ Once org-publish is properly configured, you can publish with the
 following functions: 
 
 @table @kbd
-@item C-c C-e c
+@item C-c C-e C
 Prompt for a specific project and publish all files that belong to it.
-@item C-c C-e p
+@item C-c C-e P
 Publish the project containing the current file.
-@item C-c C-e f
+@item C-c C-e F
 Publish only the current file.
-@item C-c C-e a
+@item C-c C-e A
 Publish all projects.
 @end table
 
@@ -5479,6 +6591,7 @@ force publishing of all files by giving a prefix argument.
 @cindex completion, of dictionary words
 @cindex completion, of option keywords
 @cindex completion, of tags
+@cindex completion, of property keys
 @cindex completion, of link abbreviations
 @cindex @TeX{} symbol completion
 @cindex TODO keywords completion
@@ -5504,10 +6617,14 @@ After @samp{\}, complete @TeX{} symbols supported by the exporter.
 After @samp{*}, complete headlines in the current buffer so that they
 can be used in search links like @samp{[[*find this headline]]}.
 @item
-After @samp{:}, complete tags.  The list of tags is taken from the
-variable @code{org-tag-alist} (possibly set through the @samp{#+TAGS}
-in-buffer option, @pxref{Setting tags}), or it is created dynamically
-from all tags used in the current buffer.
+After @samp{:} in a headline, complete tags.  The list of tags is taken
+from the variable @code{org-tag-alist} (possibly set through the
+@samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
+dynamically from all tags used in the current buffer.
+@item
+After @samp{:} and not in a headline, complete property keys.  The list
+of keys is constructed dynamically from all keys used in the current
+buffer.
 @item
 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
 @item
@@ -5553,8 +6670,37 @@ activate the changes immediately.  Otherwise they become effective only
 when the file is visited again in a new Emacs session.
 
 @table @kbd
+@item #+ARCHIVE: %s_done::
+This line sets the archive location for the agenda file.  It applies for
+all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
+of the file.  The first such line also applies to any entries before it.
+The corresponding variable is @code{org-archive-location}.
+@item #+CATEGORY:
+This line sets the category for the agenda file.  The category applies
+for all subsequent lines until the next @samp{#+CATEGORY} line, or the
+end of the file.  The first such line also applies to any entries before it.
+@item #+COLUMNS: %25ITEM .....
+Set the default format for columns view.  This format applies when
+columns view is invoked in location where no COLUMNS property applies.
+@item #+CONSTANTS: name1=value1 ...
+Set file-local values for constants to be used in table formulas.  This
+line set the local variable @code{org-table-formula-constants-local}.
+The global version of theis variable is
+@code{org-table-formula-constants}.
+corresponding 
+@item #+LINK:  linkword replace
+These lines (several are allowed) specify link abbreviations.
+@xref{Link abbreviations}.  The corresponding variable is
+@code{org-link-abbrev-alist}.
+@item #+PRIORITIES: highest lowest default
+This line sets the limits and the default for the priorities.  All three
+must be either letters A-Z or numbers 0-9.  The highest priority must
+have a lower ASCII number that the lowest priority.
+@item #+PROPERTY: Property_Name Value
+This line sets a default inheritance value for entries in the current
+buffer, most useful for specifying the allowed values of a property.
 @item #+STARTUP:
-This line sets options to be used at startup of org-mode, when an
+This line sets options to be used at startup of Org-mode, when an
 Org-mode file is being visited.  The first set of options deals with the
 initial visibility of the outline tree.  The corresponding variable for
 global default settings is @code{org-startup-folded}, with a default
@@ -5584,11 +6730,15 @@ Logging TODO state changes and clock intervals (variable
 @cindex @code{lognotedone}, STARTUP keyword
 @cindex @code{lognoteclock-out}, STARTUP keyword
 @cindex @code{lognotestate}, STARTUP keyword
+@cindex @code{logrepeat}, STARTUP keyword
+@cindex @code{nologrepeat}, STARTUP keyword
 @example
 logging          @r{record a timestamp when an item is marked DONE}
 nologging        @r{don't record when items are marked DONE}
 lognotedone      @r{record timestamp and a note when DONE}
-lognotestate     @r{record timestamp, note when TODO state changes}
+lognotestate     @r{record timestamp and a note when TODO state changes}
+logrepeat        @r{record a note when re-instating a repeating item}
+nologrepeat      @r{do not record when re-instating repeating item}
 lognoteclock-out @r{record timestamp and a note when clocking out}
 @end example
 Here are the options for hiding leading stars in outline headings.  The
@@ -5612,32 +6762,27 @@ To turn on custom format overlays over time stamps (variables
 @example
 customtime @r{overlay custom time format}
 @end example
-@item #+SEQ_TODO:   #+TYP_TODO:
-These lines set the TODO keywords and their interpretation in the
-current file.  The corresponding variables are @code{org-todo-keywords}
-and @code{org-todo-interpretation}.
+The following options influence the table spreadsheet (variable
+@code{constants-unit-system}).
+@cindex @code{constcgs}, STARTUP keyword
+@cindex @code{constSI}, STARTUP keyword
+@example
+constcgs   @r{@file{constants.el} should use the c-g-s unit system}
+constSI    @r{@file{constants.el} should use the SI unit system}
+@end example
 @item #+TAGS:  TAG1(c1) TAG2(c2)
 These lines (several such lines are allowed) specify the legal tags in
 this file, and (potentially) the corresponding @emph{fast tag selection}
 keys.  The corresponding variable is @code{org-tag-alist}.
-@item #+LINK:  linkword replace
-These lines (several are allowed) specify link abbreviations.
-@xref{Link abbreviations}.  The corresponding variable is
-@code{org-link-abbrev-alist}.
-@item #+CATEGORY:
-This line sets the category for the agenda file.  The category applies
-for all subsequent lines until the next @samp{#+CATEGORY} line, or the
-end of the file.  The first such line also applies to any entries before it.
-@item #+ARCHIVE: %s_done::
-This line sets the archive location for the agenda file.  It applies for
-all subsequent lines until the next @samp{#+CATEGORY} line, or the end
-of the file.  The first such line also applies to any entries before it.
-The corresponding variable is @code{org-archive-location}.
 @item #+TBLFM:
 This line contains the formulas for the table directly above the line.
 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
 These lines provide settings for exporting files.  For more details see
 @ref{Export options}.
+@item #+SEQ_TODO:   #+TYP_TODO:
+These lines set the TODO keywords and their interpretation in the
+current file.  The corresponding variables are @code{org-todo-keywords}
+and @code{org-todo-interpretation}.
 @end table
 
 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
@@ -5677,6 +6822,9 @@ default location.
 If the cursor is on a @code{<<<target>>>}, update radio targets and
 corresponding links in this buffer.
 @item
+If the cursor is in a property line or at the start or end of a property
+drawer, offer property commands.
+@item
 If the cursor is in a plain list item with a checkbox, toggle the status
 of the checkbox.
 @item
@@ -5816,10 +6964,12 @@ rather use @kbd{C-c .}  to re-insert the timestamp.
 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab
 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{@key{Esc} @key{RET}}
 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab
-@item @kbd{S-@key{left}}    @tab @kbd{C-c C-x @key{left}}  @tab
-@item @kbd{S-@key{right}}   @tab @kbd{C-c C-x @key{right}} @tab
-@item @kbd{S-@key{up}}      @tab @kbd{C-c C-x @key{up}}    @tab
-@item @kbd{S-@key{down}}    @tab @kbd{C-c C-x @key{down}}  @tab
+@item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab
+@item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab
+@item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab
+@item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab
+@item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab
+@item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
 @end multitable
 
 @node Interaction, Bugs, TTY keys, Miscellaneous
@@ -5887,7 +7037,7 @@ to execute Org-mode-related commands, leave the table.
 @item C-c C-c
 Recognize @file{table.el} table.  Works when the cursor is in a
 table.el table.
-
+@c
 @kindex C-c ~
 @item C-c ~
 Insert a table.el table.  If there is already a table at point, this
@@ -5897,6 +7047,10 @@ format.  See the documentation string of the command
 possible.
 @end table
 @file{table.el} is part of Emacs 22.
+@cindex @file{footnote.el}
+@item @file{footnote.el} by Steven L. Baur
+Org-mode recognizes numerical footnotes as provided by this package
+(@pxref{Footnotes}).
 @end table
 
 @node Conflicts,  , Cooperation, Interaction
@@ -5921,13 +7075,12 @@ used by CUA-mode (as well as pc-select-mode and s-region-mode) to
 select and extend the region.  If you want to use one of these
 packages along with Org-mode, configure the variable
 @code{org-CUA-compatible}.  When set, Org-mode will move the following
-keybindings in org-mode files, and in the agenda buffer (but not
+keybindings in Org-mode files, and in the agenda buffer (but not
 during date selection).
 
 @example
 S-UP    -> M-p             S-DOWN  -> M-n
 S-LEFT  -> M--             S-RIGHT -> M-+
-S-RET   -> C-S-RET
 @end example
 
 Yes, these are unfortunately more difficult to remember.  If you want
@@ -5937,6 +7090,16 @@ to have other replacement keys, look at the variable
 @cindex @file{windmove.el}
 Also this package uses the @kbd{S-<cursor>} keys, so everything written
 in the paragraph above about CUA mode also applies here.
+
+@cindex @file{footnote.el}
+@item @file{footnote.el} by Steven L. Baur
+Org-mode supports the syntax of the footnote package, but only the
+numerical footnote markers.  Also, the default key for footnote
+commands, @kbd{C-c !} is already used by Org-mode.  You could use the
+variable @code{footnote-prefix} to switch footnotes commands to another
+key.  Or, you could use @code{org-replace-disputed-keys} and
+@code{org-disputed-keys} to change the settings in Org-mode.
+
 @end table
 
 
@@ -5987,12 +7150,14 @@ Org-mode.
 
 @menu
 * Extensions::                  Existing 3rd-part extensions
+* Adding hyperlink types::      New custom link types
 * Tables in arbitrary syntax::  Orgtbl for LaTeX and other programs
 * Dynamic blocks::              Automatically filled blocks
 * Special agenda views::        Customized views
+* Using the property API::      Writing programs that use entry properties
 @end menu
 
-@node Extensions, Tables in arbitrary syntax, Extensions and Hacking, Extensions and Hacking
+@node Extensions, Adding hyperlink types, Extensions and Hacking, Extensions and Hacking
 @section Third-party extensions for Org-mode
 @cindex extension, third-party
 
@@ -6036,14 +7201,111 @@ Remind. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
 
 @page
 
-@node Tables in arbitrary syntax, Dynamic blocks, Extensions, Extensions and Hacking
+@node Adding hyperlink types, Tables in arbitrary syntax, Extensions, Extensions and Hacking
+@section Adding hyperlink types
+@cindex hyperlinks, adding new types
+
+Org-mode has a large number of hyperlink types built-in
+(@pxref{Hyperlinks}).  If you would like to add new link types, it
+provides an interface for doing so.  Lets look at an example file
+@file{org-man.el} that will add support for creating links like
+@samp{[[man:printf][The printf manpage]]} to show unix manual pages inside
+emacs:
+
+@lisp
+;;; org-man.el - Support for links to manpages in Org-mode
+
+(require 'org)
+
+(org-add-link-type "man" 'org-man-open)
+(add-hook 'org-store-link-functions 'org-man-store-link)
+
+(defcustom org-man-command 'man
+  "The Emacs command to be used to display a man page."
+  :group 'org-link
+  :type '(choice (const man) (const woman)))
+
+(defun org-man-open (path)
+  "Visit the manpage on PATH.
+PATH should be a topic that can be thrown at the man command."
+  (funcall org-man-command path))
+
+(defun org-man-store-link ()
+  "Store a link to a manpage."
+  (when (memq major-mode '(Man-mode woman-mode))
+    ;; This is a man page, we do make this link
+    (let* ((page (org-man-get-page-name))
+           (link (concat "man:" page))
+           (description (format "Manpage for %s" page)))
+      (org-store-link-props
+       :type "man"
+       :link link
+       :description description))))
+
+(defun org-man-get-page-name ()
+  "Extract the page name from the buffer name."
+  ;; This works for both `Man-mode' and `woman-mode'.
+  (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
+      (match-string 1 (buffer-name))
+    (error "Cannot create link to this man page")))
+
+(provide 'org-man)
+
+;;; org-man.el ends here
+@end lisp
+
+@noindent
+You would activate this new link type in @file{.emacs} with
+
+@lisp
+(require 'org-man)
+@end lisp
+
+@noindent
+Lets go through the file and see what it does.
+@enumerate
+@item 
+It does @code{(require 'org)} to make sure that @file{org.el} has been
+loaded.
+@item
+The next line calls @code{org-add-link-type} to define a new link type
+with prefix @samp{man}.  The call also contains the name of a function
+that will be called to follow such a link.
+@item
+The next line adds a function to @code{org-store-link-functions}, in
+order to allow the command @kbd{C-c l} to record a useful link in a
+buffer displaying a man page.
+@end enumerate
+
+The rest of the file defines the necessary variables and functions.
+First there is a customization variable that determines which emacs
+command should be used to display manpages.  There are two options,
+@code{man} and @code{woman}.  Then the function to follow a link is
+defined.  It gets the link path as an argument - in this case the link
+path is just a topic for the manual command.  The function calls the
+value of @code{org-man-command} to display the man page.
+
+Finally the function @code{org-man-store-link} is defined.  When you try
+to store a link with @kbd{C-c l}, also this function will be called to
+try to make a link.  The function must first decide if it is supposed to
+create the link for this buffer type, we do this by checking the value
+of the variable @code{major-mode}.  If not, the function must exit and
+retunr the value @code{nil}.  If yes, the link is created by getting the
+manual tpoic from the buffer name and prefixing it with the string
+@samp{man:}.  Then it must call the command @code{org-store-link-props}
+and set the @code{:type} and @code{:link} properties.  Optionally you
+can also set the @code{:description} property to provide a default for
+the link description when the link is later inserted into tan Org-mode
+buffer with @kbd{C-c C-l}.
+
+@node Tables in arbitrary syntax, Dynamic blocks, Adding hyperlink types, Extensions and Hacking
 @section Tables in arbitrary syntax
 @cindex tables, in other modes
 @cindex orgtbl-mode
 
 Since Orgtbl-mode can be used as a minor mode in arbitrary buffers, a
 frequent feature request has been to make it work with native tables in
-specific languages, for example LaTeX.  However, this is extremely hard
+specific languages, for example La@TeX{}.  However, this is extremely hard
 to do in a general way, would lead to a customization nightmare, and
 would take away much of the simplicity of the Orgtbl-mode table editor.
 
@@ -6105,7 +7367,7 @@ additional columns.
 @noindent
 The one problem remaining is how to keep the source table in the buffer
 without disturbing the normal workings of the file, for example during
-compilation of a C file or processing of a LaTeX file.  There are a
+compilation of a C file or processing of a La@TeX{} file.  There are a
 number of different solutions:
 
 @itemize @bullet
@@ -6116,7 +7378,7 @@ language.  For example, in C-mode you could wrap the table between
 @item 
 Sometimes it is possible to put the table after some kind of @i{END}
 statement, for example @samp{\bye} in TeX and @samp{\end@{document@}}
-in LaTeX.
+in La@TeX{}.
 @item
 You can just comment the table line by line whenever you want to process
 the file, and uncomment it whenever you need to edit the table.  This
@@ -6129,11 +7391,11 @@ key.
 @subsection A LaTeX example
 @cindex LaTeX, and orgtbl-mode
 
-The best way to wrap the source table in LaTeX is to use the
+The best way to wrap the source table in La@TeX{} is to use the
 @code{comment} environment provided by @file{comment.sty}.  It has to be
 activated by placing @code{\usepackage@{comment@}} into the document
 header.  Orgtbl-mode can insert a radio table skeleton@footnote{By
-default this works only for LaTeX, HTML, and TeXInfo.  Configure the
+default this works only for La@TeX{}, HTML, and TeXInfo.  Configure the
 variable @code{orgtbl-radio-tables} to install templates for other
 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
 be prompted for a table name, lets say we use @samp{salesfigures}.  You
@@ -6150,7 +7412,7 @@ will then get the following template:
 
 @noindent
 The @code{#+ORGTBL: SEND} line tells orgtbl-mode to use the function
-@code{orgtbl-to-latex} to convert the table into LaTeX and to put it
+@code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
 into the receiver location with name @code{salesfigures}.  You may now
 fill in the table, feel free to use the spreadsheet features@footnote{If
 the @samp{#+TBLFM} line contains an odd number of dollar characters,
@@ -6204,7 +7466,7 @@ Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
 \end@{comment@}
 @end example
 
-The LaTeX translator function @code{orgtbl-to-latex} is already part of
+The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
 Orgtbl-mode.  It uses a @code{tabular} environment to typeset the table
 and marks horizontal lines with @code{\hline}.  Furthermore, it
 interprets the following parameters:
@@ -6265,7 +7527,7 @@ As you can see, the properties passed into the function (variable
 @var{PARAMS}) are combined with the ones newly defined in the function
 (variable @var{PARAMS2}).  The ones passed into the function (i.e. the
 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
-would like to use the LaTeX translator, but wanted the line endings to
+would like to use the La@TeX{} translator, but wanted the line endings to
 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
 overrule the default with
 
@@ -6274,7 +7536,7 @@ overrule the default with
 @end example
 
 For a new language, you can either write your own converter function in
-analogy with the LaTeX translator, or you can use the generic function
+analogy with the La@TeX{} translator, or you can use the generic function
 directly.  For example, if you have a language where a table is started
 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
 started with @samp{!BL!}, ended with @samp{!EL!} and where the field
@@ -6363,7 +7625,7 @@ you could add the function @code{org-update-all-dblocks} to a hook, for
 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
 written in a way that is does nothing in buffers that are not in Org-mode.
 
-@node Special agenda views,  , Dynamic blocks, Extensions and Hacking
+@node Special agenda views, Using the property API, Dynamic blocks, Extensions and Hacking
 @section Special Agenda Views
 @cindex agenda views, user-defined
 
@@ -6394,30 +7656,92 @@ search should continue from there.
       subtree-end))) ; tag not found, continue after end of subtree
 @end lisp
 
-Furthermore you must write a command that uses @code{let} to temporarily
-put this function into the variable @code{org-agenda-skip-function},
-sets the header string for the agenda buffer, and calls the todo-list
-generator while asking for the specific TODO keyword PROJECT.  The
-function must also accept one argument MATCH, but it can choose to
-ignore it@footnote{MATCH must be present in case you want to define a
-custom command for producing this special list.  Custom commands always
-supply the MATCH argument, but it can be empty if you do not specify it
-while defining the command(@pxref{Custom agenda
-views}).} (as we do in the example below).  Here is the example:
+Now you may use this function in an agenda custom command, for example
+like this:
+
+@lisp
+(org-add-agenda-custom-command
+ '("b" todo "PROJECT"
+   ((org-agenda-skip-function 'my-org-waiting-projects)
+    (org-agenda-overriding-header "Projects waiting for something: "))))
+@end lisp
+
+Note that this also binds @code{org-agenda-overriding-header} to get a
+meaningful header in the agenda view.
+
+You may also put a Lisp form into @code{org-agenda-skip-function}.  In
+particular, you may use the functions @code{org-agenda-skip-entry-if}
+and @code{org-agenda-skip-subtree-if} in this form, for example:
+
+@table @code
+@item '(org-agenda-skip-entry-if 'scheduled)
+Skip current entry if it has been scheduled.
+@item '(org-agenda-skip-entry-if 'notscheduled)
+Skip current entry if it has not been scheduled.
+@item '(org-agenda-skip-entry-if 'deadline)
+Skip current entry if it has a deadline.
+@item '(org-agenda-skip-entry-if 'scheduled 'deadline)
+Skip current entry if it has a deadline, or if it is scheduled.
+@item '(org-agenda-skip-entry 'regexp "regular expression")
+Skip current entry if the regular expression contained in the variable
+@code{org-agenda-skip-regexp} matches in the entry.
+@item '(org-agenda-skip-subtree-if 'regexp "regular expression")
+Same as above, but check and skip the entire subtree.
+@end table
+
+Therefore we could also have written the search for WAITING projects
+like this, even without defining a special function:
 
 @lisp
-(defun my-org-waiting-projects (&optional match)
-  "Produce a list of projects that contain a WAITING tag.
-MATCH is being ignored."
-  (interactive)
-  (let ((org-agenda-skip-function 'my-skip-unless-waiting)
-        (org-agenda-overriding-header "Projects waiting for something: "))
-    ;; make the list
-    (org-todo-list "PROJECT")))
+(org-add-agenda-custom-command
+ '("b" todo "PROJECT"
+   ((org-agenda-skip-function '(org-agenda-skip-subtree-if
+                                'regexp ":WAITING:"))
+    (org-agenda-overriding-header "Projects waiting for something: "))))
 @end lisp
 
 
-@node History and Acknowledgments, GNU Free Documentation License, Extensions and Hacking, Top
+@node Using the property API,  , Special agenda views, Extensions and Hacking
+@section Using the property API
+@cindex API, for properties
+@cindex properties, API
+
+Here is a description of the functions that can be used to work with
+properties.
+
+@defun org-entry-properties &optional pom which
+Get all properties of the entry at point-or-marker POM.
+This includes the TODO keyword, the tags, time strings for deadline,
+scheduled, and clocking, and any additional properties defined in the
+entry.  The return value is an alist, keys may occur multiple times
+if the property key was used several times.
+POM may also be nil, in which case the current entry is used.
+If WHICH is nil or `all', get all properties.  If WHICH is
+`special' or `standard', only get that subclass.
+@end defun
+@defun org-entry-get pom property &optional inherit
+Get value of PROPERTY for entry at point-or-marker POM.
+If INHERIT is non-nil and the entry does not have the property,
+then also check higher levels of the hierarchy.
+@end defun
+
+@defun org-entry-delete pom property
+Delete the property PROPERTY from entry at point-or-marker POM.
+@end defun
+
+@defun org-entry-put pom property value
+Set PROPERTY to VALUE for entry at point-or-marker POM.
+@end defun
+
+@defun org-buffer-property-keys &optional include-specials
+Get all property keys in the current buffer.
+@end defun
+
+@defun org-insert-property-drawer
+Insert a property drawer at point.
+@end defun
+
+@node History and Acknowledgments, Index, Extensions and Hacking, Top
 @appendix History and Acknowledgments
 @cindex acknowledgments
 @cindex history
@@ -6440,7 +7764,7 @@ goals that Org-mode still has today: To create a new, outline-based,
 plain text mode with innovative and intuitive editing features, and to
 incorporate project planning functionality directly into a notes file.
 
-Since the first release, hundreds of emails to me or on
+Since the first release, literally thousands of emails to me or on
 @code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
 reports, feedback, new ideas, and sometimes patches and add-on code.
 Many thanks to everyone who has helped to improve this package.  I am
@@ -6451,6 +7775,8 @@ let me know.
 
 @itemize @bullet
 
+@item
+@i{Russel Adams} came up with the idea for drawers.
 @item
 @i{Thomas Baumann} contributed the code for links to the MH-E email
 system.
@@ -6469,7 +7795,9 @@ calculations and improved XEmacs compatibility, in particular by porting
 @item
 @i{Sacha Chua} suggested to copy some linking code from Planner.
 @item
-@i{Eddward DeVilla} proposed and tested checkbox statistics.
+@i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
+came up with the idea of properties, and that there should be an API for
+them.
 @item
 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
 inspired some of the early development, including HTML export.  He also
@@ -6478,6 +7806,9 @@ asked for a way to narrow wide table columns.
 @i{Christian Egli} converted the documentation into TeXInfo format,
 patched CSS formatting into the HTML exporter, and inspired the agenda.
 @item
+@i{David Emery} provided a patch for custom CSS support in exported
+HTML agendas.
+@item
 @i{Nic Ferrier} contributed mailcap and XOXO support.
 @item
 @i{John Foerch} figured out how to make incremental search show context
@@ -6485,18 +7816,28 @@ around a match in a hidden outline tree.
 @item
 @i{Niels Giessen} had the idea to automatically archive DONE trees.
 @item
-@i{Bastien Guerry} provided extensive feedback and some patches, and
-translated David O'Toole's tutorial into French.
+@i{Bastien Guerry} wrote the La@TeX{} exporter and has been prolific
+with patches, ideas, and bug reports.
+to Org-mode.
 @item
 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
 @item
-@i{Shidai Liu} (``Leo'') provided extensive feedback and some patches.
+@i{Scott Jaderholm} proposed footnotes, control over whitespace between
+folded entries, and column view for properties.
+@item
+@i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it.  He also
+provided frequent feedback and some patches.
 @item
-@i{Leon Liu} asked for embedded LaTeX and tested it.
+@i{Jason F. McBrayer} suggested agenda export to CSV format.
+@item
+@i{Dmitri Minaev} sent a patch to set priority limits on a per-file
+basis.
 @item
 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
 happy.
 @item
+@i{Rick Moynihan} proposed to allow multiple TODO sequences in a file.
+@item
 @i{Todd Neal} provided patches for links to Info files and elisp forms.
 @item
 @i{Tim O'Callaghan} suggested in-file links, search options for general
@@ -6539,6 +7880,9 @@ subtrees.
 @item
 @i{Dale Smith} proposed link abbreviations.
 @item
+@i{Adam Spiers} asked for global linking commands and inspired the link
+extension system.  support mairix.
+@item
 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
 chapter about publishing.
 @item
@@ -6557,6 +7901,7 @@ really different beasts in their basic ideas and implementation details.
 I later looked at John's code, however, and learned from his
 implementation of (i) links where the link itself is hidden and only a
 description is shown, and (ii) popping up a calendar to select a date.
+John has also contributed a number of great ideas directly to Org-mode.
 @item
 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
 linking to GNUS.
@@ -6568,12 +7913,8 @@ work on a tty.
 and contributed various ideas and code snippets.
 @end itemize
 
-@node GNU Free Documentation License, Index, History and Acknowledgments, Top
-@appendix GNU Free Documentation License
-@include doclicense.texi
-
 
-@node Index, Key Index, GNU Free Documentation License, Top
+@node Index, Key Index, History and Acknowledgments, Top
 @unnumbered Index
 
 @printindex cp
similarity index 99%
rename from man/pcl-cvs.texi
rename to doc/misc/pcl-cvs.texi
index 93bd54eb456330a737c8ac00ff3981990a89f089..5878b65cd25591950c1ee31d0975c17210a484aa 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo  @c -*-texinfo-*-
 @c %**start of header
-@setfilename ../info/pcl-cvs
+@setfilename ../../info/pcl-cvs
 @settitle PCL-CVS --- Emacs Front-End to CVS
 @syncodeindex vr fn
 @c %**end of header
similarity index 99%
rename from man/pgg.texi
rename to doc/misc/pgg.texi
index 6a175db4cb93308dd3c48ad8325ffaf588980a22..ca29e2184e546c6e898cb777454717f4bf1970ea 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo                  @c -*-texinfo-*-
 
-@setfilename ../info/pgg
+@setfilename ../../info/pgg
 
 @set VERSION 0.1
 
similarity index 99%
rename from man/rcirc.texi
rename to doc/misc/rcirc.texi
index 6d5319cef4ed0d64c1de0a99d2d90bff3d441a0a..f6d807f971f044f2f9679300f65c51861084dff9 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo
 @c %**start of header
-@setfilename ../info/rcirc
+@setfilename ../../info/rcirc
 @settitle rcirc Manual
 @c %**end of header
 
similarity index 99%
rename from man/reftex.texi
rename to doc/misc/reftex.texi
index a2c0a9689b2bca3d332180de1b9ebe0871096fcd..a599081a716b620a40573a199d407b53c42a550b 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo  @c -*-texinfo-*-
 @c %**start of header
-@setfilename ../info/reftex
+@setfilename ../../info/reftex
 @settitle RefTeX User Manual
 @synindex ky cp
 @syncodeindex vr cp
similarity index 99%
rename from man/sc.texi
rename to doc/misc/sc.texi
index 5ac3b882ccd9315bfaeba659b33621f0138cdff9..55beaa5b9e7682ad83dacafc6441fced6a1afb4d 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo  @comment -*-texinfo-*-
 @comment 3.48
 @comment %**start of header (This is for running Texinfo on a region.)
-@setfilename ../info/sc
+@setfilename ../../info/sc
 @settitle Supercite Version 3.1 User's Manual
 @iftex
 @finalout
similarity index 99%
rename from man/ses.texi
rename to doc/misc/ses.texi
index 089e13a9cc0250af105c1cb3e9016d989ef6c630..8e1b6f397f5f560ba0e6d14c8e51ec46091e40b9 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo   @c -*-texinfo-*-
 @c %**start of header
-@setfilename ../info/ses
+@setfilename ../../info/ses
 @settitle SES: Simple Emacs Spreadsheet
 @setchapternewpage off
 @syncodeindex fn cp
similarity index 99%
rename from man/sieve.texi
rename to doc/misc/sieve.texi
index 4b7a95be952676bab64071726633ada132b215f4..af2132e4997e8b63cd24f3a4e06cf54fb65b27bb 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo                  @c -*-texinfo-*-
 
-@setfilename ../info/sieve
+@setfilename ../../info/sieve
 @settitle Emacs Sieve Manual
 @synindex fn cp
 @synindex vr cp
similarity index 99%
rename from man/smtpmail.texi
rename to doc/misc/smtpmail.texi
index 644cd061b74f90f8a2a4fd15d43eaa331358e73f..5f5eb61a6ba6a10a857bf3eb6a42d25dbf256c6e 100644 (file)
@@ -1,5 +1,5 @@
 \input texinfo  @c -*-texinfo-*-
-@setfilename ../info/smtpmail
+@setfilename ../../info/smtpmail
 @settitle Emacs SMTP Library
 @syncodeindex vr fn
 @copying
similarity index 99%
rename from man/speedbar.texi
rename to doc/misc/speedbar.texi
index 2a05993f569bf19b231a6c340dc876eff554112e..5cefcc97df696f0daa8c3f0261f4802fc761dff3 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo   @c -*-texinfo-*-
 
-@setfilename ../info/speedbar
+@setfilename ../../info/speedbar
 @settitle Speedbar: File/Tag summarizing utility
 @syncodeindex fn cp
 
similarity index 99%
rename from man/texinfo.tex
rename to doc/misc/texinfo.tex
index d3107f9fc33df9bc8f11280642886c963fb91c0b..fe6285b3bc5ecf45c5bf56ef4e60b2962c871bea 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2007-06-24.23}
+\def\texinfoversion{2007-07-09.21}
 %
 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
similarity index 62%
rename from man/tramp.texi
rename to doc/misc/tramp.texi
index 67b0647787c437ca695e3fb9fdfa957e82b273ed..e5cd5e1a33b590121ef59eb7f2d4d0812a612ca5 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo   @c -*-texinfo-*-
+@setfilename ../../info/tramp
 @c %**start of header
-@setfilename ../info/tramp
 @settitle TRAMP User Manual
 @setchapternewpage odd
 @c %**end of header
 
 @include trampver.texi
 
-@c Macros for formatting a filename.
-@c trampfn is for a full filename, trampfnmhp means method, host, localname
-@c were given, and so on.
-@macro trampfn(method, user, host, localname)
-@value{prefix}@value{method}@value{user}@@@value{host}@value{postfix}@value{localname}
+@c Macro for formatting a filename according to the repective syntax.
+@c xxx and yyy are auxiliary macros in order to omit leading and
+@c trailing whitespace.  Not very elegant, but I don't know it better.
+
+@macro xxx {one}@c
+@set \one\@c
+@end macro
+
+@macro yyy {one, two}@c
+@xxx{x\one\}@c
+@ifclear x@c
+\one\@w{}\two\@c
+@end ifclear
+@clear x\one\@c
+@end macro
+
+@macro trampfn {method, user, host, localname}@c
+@value{prefix}@yyy{\method\,@value{postfixhop}}@yyy{\user\,@@}\host\@value{postfix}\localname\@c
 @end macro
 
 @copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-Free Software Foundation, Inc.
+Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -157,6 +170,7 @@ For the developer:
 
 * Version Control::             The inner workings of remote version control.
 * Files directories and localnames::  How file names, directories and localnames are mangled and managed.
+* Traces and Profiles::         How to Customize Traces.
 * Issues::                      Debatable Issues and What Was Decided.
 
 * GNU Free Documentation License:: The license for this documentation.
@@ -178,11 +192,17 @@ Configuring @value{tramp} for use
 * Connection types::            Types of connections made to remote machines.
 * Inline methods::              Inline methods.
 * External transfer methods::   External transfer methods.
-* Multi-hop Methods::           Connecting to a remote host using multiple hops.
+@ifset emacsgw
+* Gateway methods::             Gateway methods.
+@end ifset
 * Default Method::              Selecting a default method.
+* Default User::                Selecting a default user.
+* Default Host::                Selecting a default host.
+* Multi-hops::                  Connecting to a remote host using multiple hops.
 * Customizing Methods::         Using Non-Standard Methods.
 * Customizing Completion::      Selecting config files for user/host name completion.
 * Password caching::            Reusing passwords for several connections.
+* Connection caching::          Reusing connection related information.
 * Remote Programs::             How @value{tramp} finds and uses programs on the remote machine.
 * Remote shell setup::          Remote shell setup hints.
 * Windows setup hints::         Issues with Cygwin ssh.
@@ -191,10 +211,9 @@ Configuring @value{tramp} for use
 Using @value{tramp}
 
 * Filename Syntax::             @value{tramp} filename conventions.
-* Multi-hop filename syntax::   Multi-hop filename conventions.
+* Alternative Syntax::          URL-like filename syntax.
 * Filename completion::         Filename completion.
-* Dired::                       Dired.
-* Compilation::                 Compile remote files.
+* Remote processes::            Integration with other @value{emacsname} packages.
 
 The inner workings of remote version control
 
@@ -212,6 +231,9 @@ Things related to Version Control that don't fit elsewhere
 How file names, directories and localnames are mangled and managed
 
 * Localname deconstruction::    Breaking a localname into its components.
+@ifset emacs
+* External packages::           Integration with external Lisp packages.
+@end ifset
 
 @end detailmenu
 @end menu
@@ -220,10 +242,10 @@ How file names, directories and localnames are mangled and managed
 @chapter An overview of @value{tramp}
 @cindex overview
 
-After the installation of @value{tramp} into your @value{emacsname},
-you will be able to access files on remote machines as though they
-were local.  Access to the remote file system for editing files,
-version control, and @code{dired} are transparently enabled.
+After the installation of @value{tramp} into your @value{emacsname}, you
+will be able to access files on remote machines as though they were
+local.  Access to the remote file system for editing files, version
+control, and @code{dired} are transparently enabled.
 
 Your access to the remote machine can be with the @command{rsh},
 @command{rlogin}, @command{telnet} programs or with any similar
@@ -380,7 +402,7 @@ behind the scenes when you open a file with @value{tramp}.
 
 @value{tramp} is freely available on the Internet and the latest
 release may be downloaded from
-@uref{ftp://ftp.gnu.org/gnu/tramp/}. This release includes the full
+@uref{ftp://ftp.gnu.org/gnu/tramp/}.  This release includes the full
 documentation and code for @value{tramp}, suitable for installation.
 But GNU Emacs (22 or later) includes @value{tramp} already, and there
 is a @value{tramp} package for XEmacs, as well.  So maybe it is easier
@@ -389,7 +411,7 @@ on@dots{...}
 
 For the especially brave, @value{tramp} is available from CVS.  The CVS
 version is the latest version of the code and may contain incomplete
-features or new issues. Use these versions at your own risk.
+features or new issues.  Use these versions at your own risk.
 
 Instructions for obtaining the latest development version of @value{tramp}
 from CVS can be found by going to the Savannah project page at the
@@ -410,7 +432,7 @@ Or follow the example session below:
 
 @noindent
 You should now have a directory @file{~/@value{emacsdir}/tramp}
-containing the latest version of @value{tramp}. You can fetch the latest
+containing the latest version of @value{tramp}.  You can fetch the latest
 updates from the repository by issuing the command:
 
 @example
@@ -429,6 +451,11 @@ script:
 ] @strong{autoconf}
 @end example
 
+People who have no direct CVS access (maybe because sitting behind a
+blocking firewall), can try the
+@uref{http://savannah.gnu.org/cvs-backup/tramp-sources.tar.gz, Nightly
+CVS Tree Tarball} instead of.
+
 
 @node History
 @chapter History of @value{tramp}
@@ -445,7 +472,19 @@ file contents were added.  Support for VC was added.
 
 The most recent addition of major features were the multi-hop methods
 added in April 2000 and the unification of @value{tramp} and Ange-FTP
-filenames in July 2002.
+filenames in July 2002.  In July 2004, multi-hop methods have been
+replaced by proxy hosts.  Running commands on remote hosts was
+introduced in December 2005.
+@ifset emacsgw
+Support of gateways exists since April 2007.
+@end ifset
+
+In December 2001, @value{tramp} has been added to the XEmacs package
+repository.  Being part of the GNU Emacs repository happened in June
+2002, the first release including @value{tramp} was GNU Emacs 22.1.
+
+@value{tramp} is also a GNU/Linux Debian package since February 2001.
+
 
 @c Installation chapter is necessary only in case of standalone
 @c installation.  Text taken from trampinst.texi.
@@ -462,7 +501,7 @@ filenames in July 2002.
 installed.  It is initially configured to use the @command{scp}
 program to connect to the remote host.  So in the easiest case, you
 just type @kbd{C-x C-f} and then enter the filename
-@file{@value{prefix}@var{user}@@@var{machine}@value{postfix}@var{/path/to.file}}.
+@file{@trampfn{, user, machine, /path/to.file}}.
 
 On some hosts, there are problems with opening a connection.  These are
 related to the behavior of the remote shell.  See @xref{Remote shell
@@ -482,14 +521,20 @@ Method}.
 * Connection types::            Types of connections made to remote machines.
 * Inline methods::              Inline methods.
 * External transfer methods::   External transfer methods.
-* Multi-hop Methods::           Connecting to a remote host using multiple hops.
+@ifset emacsgw
+* Gateway methods::             Gateway methods.
+@end ifset
 * Default Method::              Selecting a default method.
                                   Here we also try to help those who
                                   don't have the foggiest which method
                                   is right for them.
+* Default User::                Selecting a default user.
+* Default Host::                Selecting a default host.
+* Multi-hops::                  Connecting to a remote host using multiple hops.
 * Customizing Methods::         Using Non-Standard Methods.
 * Customizing Completion::      Selecting config files for user/host name completion.
 * Password caching::            Reusing passwords for several connections.
+* Connection caching::          Reusing connection related information.
 * Remote Programs::             How @value{tramp} finds and uses programs on the remote machine.
 * Remote shell setup::          Remote shell setup hints.
 * Windows setup hints::         Issues with Cygwin ssh.
@@ -508,7 +553,7 @@ remote shell access program such as @command{rsh}, @command{ssh} or
 
 This connection is used to perform many of the operations that @value{tramp}
 requires to make the remote file system transparently accessible from
-the local machine. It is only when visiting files that the methods
+the local machine.  It is only when visiting files that the methods
 differ.
 
 @cindex inline methods
@@ -519,7 +564,7 @@ differ.
 @cindex methods, external transfer
 @cindex methods, out-of-band
 Loading or saving a remote file requires that the content of the file
-be transfered between the two machines. The content of the file can be
+be transfered between the two machines.  The content of the file can be
 transfered over the same connection used to log in to the remote
 machine or the file can be transfered through another connection using
 a remote copy program such as @command{rcp}, @command{scp} or
@@ -539,16 +584,10 @@ startup may drown out the improvement in file transfer times.
 
 External transfer methods should be configured such a way that they
 don't require a password (with @command{ssh-agent}, or such alike).
-If it isn't possible, you should consider @ref{Password caching},
-otherwise you will be prompted for a password every copy action.
-
-@cindex multi-hop methods
-@cindex methods, multi-hop
-A variant of the inline methods are the @dfn{multi-hop methods}.
-These methods allow you to connect a remote host using a number `hops',
-each of which connects to a different host.  This is useful if you are
-in a secured network where you need to go through a bastion host to
-connect to the outside world.
+Modern @command{scp} implementations offer options to reuse existing
+@command{ssh} connections, see method @command{scpc}.  If it isn't
+possible, you should consider @ref{Password caching}, otherwise you
+will be prompted for a password every copy action.
 
 
 @node Inline methods
@@ -635,6 +674,8 @@ as the @option{rsh} method.
 
 This method does not connect to a remote host at all, rather it uses
 the @command{su} program to allow you to edit files as another user.
+With other words, a specified host name in the file name is silently
+ignored.
 
 
 @item @option{sudo}
@@ -682,7 +723,7 @@ This supports the @samp{-p} kludge.
 
 @item @option{krlogin}
 @cindex method krlogin
-@cindex km krlogin
+@cindex krlogin method
 @cindex Kerberos (with krlogin method)
 
 This method is also similar to @option{ssh}.  It only uses the
@@ -697,19 +738,44 @@ This method is mostly interesting for Windows users using the PuTTY
 implementation of SSH.  It uses @samp{plink -ssh} to log in to the
 remote host.
 
-Additionally, the method @option{plink1} is provided, which calls
-@samp{plink -1 -ssh} in order to use SSH protocol version 1
-explicitly.
+This supports the @samp{-P} kludge.
+
+Additionally, the methods @option{plink1} and @option{plink2} are
+provided, which call @samp{plink -1 -ssh} or @samp{plink -2 -ssh} in
+order to use SSH protocol version 1 or 2 explicitly.
 
 CCC: Do we have to connect to the remote host once from the command
 line to accept the SSH key?  Maybe this can be made automatic?
 
-CCC: Does @command{plink} support the @samp{-p} option?  @value{tramp} will
-support that, anyway.
+CCC: Say something about the first shell command failing.  This might
+be due to a wrong setting of @code{tramp-rsh-end-of-line}.
 
-@end table
+
+@item @option{plinkx}
+@cindex method plinkx
+@cindex plinkx method
+
+Another method using PuTTY on Windows.  Instead of host names, it
+expects PuTTY session names, calling @samp{plink -load @var{session}
+-t"}.  User names are relevant only in case the corresponding session
+hasn't defined a user name.  Different port numbers must be defined in
+the session.
 
 
+@item @option{fish}
+@cindex method fish
+@cindex fish method
+
+This is an experimental implementation of the fish protocol, known from
+the GNU Midnight Commander or the KDE Konqueror.  @value{tramp} expects
+the fish server implementation from the KDE kioslave.  That means, the
+file @file{~/.fishsrv.pl} is expected to reside on the remote host.
+
+The implementation lacks good performance.  The code is offered anyway,
+maybe somebody can improve the performance.
+
+@end table
+
 
 @node External transfer methods
 @section External transfer methods
@@ -725,21 +791,10 @@ transfers to an external transfer utility.
 This saves the overhead of encoding and decoding that multiplexing the
 transfer through the one connection has with the inline methods.
 
-If you want to use an external transfer method you should be able to
-execute the transfer utility to copy files to and from the remote
-machine without any interaction.
-
-@cindex ssh-agent
-This means that you will need to use @command{ssh-agent} if you use the
-@command{scp} program for transfers, or maybe your version of
-@command{scp} accepts a password on the command line.@footnote{PuTTY's
-@command{pscp} allows you to specify the password on the command line.}
-If you use @command{rsync} via @command{ssh} then the same rule must
-apply to that connection.
-
-If you cannot get an external method to run without asking for a
-password you should consider @ref{Password caching}.
-
+Since external transfer methods need their own overhead opening a new
+channel, all files which are smaller than @var{tramp-copy-size-limit}
+are still transferred with the corresponding inline method.  It should
+provide a fair trade-off between both approaches.
 
 @table @asis
 @item @option{rcp}  ---  @command{rsh} and @command{rcp}
@@ -767,7 +822,7 @@ Using @command{ssh} to connect to the remote host and @command{scp} to
 transfer files between the machines is the best method for securely
 connecting to a remote machine and accessing files.
 
-The performance of this option is also quite good. It may be slower than
+The performance of this option is also quite good.  It may be slower than
 the inline methods when you often open and close small files however.
 The cost of the cryptographic handshake at the start of an @command{scp}
 session can begin to absorb the advantage that the lack of encoding and
@@ -787,7 +842,24 @@ know what these are, you do not need these options.
 All the @command{ssh} based methods support the kludgy @samp{-p}
 feature where you can specify a port number to connect to in the host
 name.  For example, the host name @file{host#42} tells @value{tramp} to
-specify @samp{-p 42} in the argument list for @command{ssh}.
+specify @samp{-p 42} in the argument list for @command{ssh}, and to
+specify @samp{-P 42} in the argument list for @command{scp}.
+
+
+@item @option{sftp}  ---  @command{ssh} and @command{sftp}
+@cindex method sftp
+@cindex sftp method
+@cindex sftp (with sftp method)
+@cindex ssh (with sftp method)
+
+That is mostly the same method as @option{scp}, but using
+@command{sftp} as transfer command.  So the same remarks are valid.
+
+This command does not work like @value{ftppackagename}, where
+@command{ftp} is called interactively, and all commands are send from
+within this session.  Instead of, @command{ssh} is used for login.
+
+This method supports the @samp{-p} hack.
 
 
 @item @option{rsync}  ---  @command{ssh} and @command{rsync}
@@ -805,7 +877,7 @@ transferring files that exist on both hosts, this advantage is lost if
 the file exists only on one side of the connection.
 
 The @command{rsync} based method may be considerably faster than the
-@command{rcp} based methods when writing to the remote system. Reading
+@command{rcp} based methods when writing to the remote system.  Reading
 files to the local machine is no faster than with a direct copy.
 
 This method supports the @samp{-p} hack.
@@ -866,7 +938,22 @@ This method is similar to @option{scp}, but it uses the
 @command{pscp} for transferring the files.  These programs are part
 of PuTTY, an SSH implementation for Windows.
 
-CCC: Does @command{plink} support the @samp{-p} hack?
+This method supports the @samp{-P} hack.
+
+
+@item @option{psftp} --- @command{plink} and @command{psftp}
+@cindex method psftp
+@cindex psftp method
+@cindex psftp (with psftp method)
+@cindex plink (with psftp method)
+@cindex PuTTY (with psftp method)
+
+As you would expect, this method is similar to @option{sftp}, but it
+uses the @command{plink} command to connect to the remote host, and it
+uses @command{psftp} for transferring the files.  These programs are
+part of PuTTY, an SSH implementation for Windows.
+
+This method supports the @samp{-P} hack.
 
 
 @item @option{fcp} --- @command{fsh} and @command{fcp}
@@ -901,7 +988,7 @@ anyway.
 @cindex method ftp
 @cindex ftp method
 
-This is not a native @value{tramp} method. Instead of, it forwards all
+This is not a native @value{tramp} method.  Instead of, it forwards all
 requests to @value{ftppackagename}.
 @ifset xemacs
 This works only for unified filenames, see @ref{Issues}.
@@ -935,8 +1022,15 @@ specify a user name which looks like @code{user%domain} (the real user
 name, then a percent sign, then the domain name).  So, to connect to
 the machine @code{melancholia} as user @code{daniel} of the domain
 @code{BIZARRE}, and edit @file{.emacs} in the home directory (share
-@code{daniel$}) I would specify the filename
-@file{@value{prefix}smb@value{postfixsinglehop}daniel%BIZARRE@@melancholia@value{postfix}/daniel$$/.emacs}.
+@code{daniel$}) I would specify the filename @file{@trampfn{smb,
+daniel%BIZARRE, melancholia, /daniel$$/.emacs}}.
+
+Depending on the Windows domain configuration, a Windows user might be
+considered as domain user per default.  In order to connect as local
+user, the WINS name of that machine must be given as domain name.
+Usually, it is the machine name in capital letters.  In the example
+above, the local user @code{daniel} would be specified as
+@file{@trampfn{smb, daniel%MELANCHOLIA, melancholia, /daniel$$/.emacs}}.
 
 The domain name as well as the user name are optional.  If no user
 name is specified at all, the anonymous user (without password
@@ -953,97 +1047,56 @@ name.
 
 @end table
 
-@node Multi-hop Methods
-@section Connecting to a remote host using multiple hops
-@cindex multi-hop methods
-@cindex methods, multi-hop
 
-Sometimes, the methods described before are not sufficient.  Sometimes,
-it is not possible to connect to a remote host using a simple command.
-For example, if you are in a secured network, you might have to log in
-to a `bastion host' first before you can connect to the outside world.
-Of course, the target host may also require a bastion host.  The format
-of multi-hop filenames is slightly different than the format of normal
-@value{tramp} methods.
-
-@cindex method multi
-@cindex multi method
-A multi-hop file name specifies a method, a number of hops, and a
-localname (path name on the remote system).  The method name is always
-@option{multi}.
-
-Each hop consists of a @dfn{hop method} specification, a user name and
-a host name.  The hop method can be an inline method only.  The
-following hop methods are (currently) available:
-
-@table @option
-@item telnet
-@cindex hop method telnet
-@cindex telnet hop method
-
-Uses the well-known @command{telnet} program to connect to the host.
-Whereas user name and host name are supplied in the file name, the
-user is queried for the password.
-
-@item rsh
-@cindex hop method rsh
-@cindex rsh hop method
-
-This uses @command{rsh} to connect to the host.  You do not need to
-enter a password unless @command{rsh} explicitly asks for it.
-
-The variant @option{remsh} uses the @command{remsh} command.  It
-should be applied on machines where @command{remsh} is used instead of
-@command{rsh}.
-
-@item ssh
-@cindex hop method ssh
-@cindex ssh hop method
-
-This uses @command{ssh} to connect to the host.  You might have to enter
-a password or a pass phrase.
-
-@item su
-@cindex hop method su
-@cindex su hop method
-
-This method does not actually contact a different host, but it allows
-you to become a different user on the host you're currently on.  This
-might be useful if you want to edit files as root, but the remote host
-does not allow remote root logins.  In this case you can use
-@option{telnet}, @option{rsh} or @option{ssh} to connect to the
-remote host as a non-root user, then use an @option{su} hop to become
-root.  But @option{su} need not be the last hop in a sequence, you could
-also use it somewhere in the middle, if the need arises.
-
-Even though you @emph{must} specify both user and host with an
-@option{su} hop, the host name is ignored and only the user name is
-used.
-
-@item sudo
-@cindex hop method sudo
-@cindex sudo hop method
-
-This is similar to the @option{su} hop, except that it uses
-@command{sudo} rather than @command{su} to become a different user.
+@ifset emacsgw
+@node Gateway methods
+@section Gateway methods
+@cindex methods, gateway
+@cindex gateway methods
 
-@end table
+Gateway methods are not methods to access a remote host directly.
+These methods are intended to pass firewalls or proxy servers.
+Therefore, they can be used for proxy host declarations
+(@pxref{Multi-hops}) only.
 
-Some people might wish to use port forwarding with @command{ssh} or
-maybe they have to use a nonstandard port.  This can be accomplished
-by putting a stanza in @file{~/.ssh/config} for the account which
-specifies a different port number for a certain host name.  But it can
-also be accomplished within @value{tramp}, by adding a multi-hop method.
-For example:
+A gateway method must come always along with a method who supports
+port setting (referred to as @samp{-p} kludge).  This is because
+@value{tramp} targets the accompanied method to
+@file{localhost#random_port}, from where the firewall or proxy server
+is accessed to.
 
-@lisp
-(add-to-list
- 'tramp-multi-connection-function-alist
- '("sshf" tramp-multi-connect-rlogin "ssh %h -l %u -p 4400%n"))
-@end lisp
+Gateway methods support user name and password declarations.  These
+are used to authenticate towards the corresponding firewall or proxy
+server.  They can be passed only if your friendly administrator has
+granted your access.
 
-Now you can use an @option{sshf} hop which connects to port 4400 instead of
-the standard port.
+@table @asis
+@item @option{tunnel}
+@cindex method tunnel
+@cindex tunnel method
+
+This method implements an HTTP tunnel via the @command{CONNECT}
+command (see RFC 2616, 2817).  Any HTTP 1.1 compliant (proxy) server
+shall support this command.
+
+As authentication method, only @option{Basic Authentication} (see RFC
+2617) is implemented so far.  If no port number is given in the
+declaration, port @option{8080} is used for the proxy server.
+
+
+@item @option{socks}
+@cindex method socks
+@cindex socks method
+
+The @command{socks} method provides access to SOCKSv5 servers (see
+RFC 1928).  @option{Username/Password Authentication} according to RFC
+1929 is supported.
+
+The default port number of the socks server is @option{1080}, if not
+specified otherwise.
+
+@end table
+@end ifset
 
 
 @node Default Method
@@ -1085,7 +1138,6 @@ methods, giving better performance.
 
 @xref{Inline methods}.
 @xref{External transfer methods}.
-@xref{Multi-hop Methods}.
 
 Another consideration with the selection of transfer methods is the
 environment you will use them in and, especially when used over the
@@ -1098,7 +1150,7 @@ read from other machines.
 
 If you need to connect to remote systems that are accessible from the
 Internet, you should give serious thought to using @option{ssh} based
-methods to connect. These provide a much higher level of security,
+methods to connect.  These provide a much higher level of security,
 making it a non-trivial exercise for someone to obtain your password
 or read the content of the files you are editing.
 
@@ -1119,9 +1171,9 @@ to edit mostly small files.
 
 I guess that these days, most people can access a remote machine by
 using @command{ssh}.  So I suggest that you use the @option{ssh}
-method.  So, type @kbd{C-x C-f
-@value{prefix}ssh@value{postfixsinglehop}root@@otherhost@value{postfix}/etc/motd
-@key{RET}} to edit the @file{/etc/motd} file on the other host.
+method.  So, type @kbd{C-x C-f @trampfn{ssh, root, otherhost,
+/etc/motd} @key{RET}} to edit the @file{/etc/motd} file on the other
+host.
 
 If you can't use @option{ssh} to log in to the remote host, then
 select a method that uses a program that works.  For instance, Windows
@@ -1132,9 +1184,9 @@ implementation of @command{ssh}.  Or you use Kerberos and thus like
 For the special case of editing files on the local host as another
 user, see the @option{su} or @option{sudo} methods.  They offer
 shortened syntax for the @samp{root} account, like
-@file{@value{prefix}su@value{postfixsinglehop}@value{postfix}/etc/motd}.
+@file{@trampfn{su, , , /etc/motd}}.
 
-People who edit large files may want to consider @option{scp} instead
+People who edit large files may want to consider @option{scpc} instead
 of @option{ssh}, or @option{pscp} instead of @option{plink}.  These
 out-of-band methods are faster than inline methods for large files.
 Note, however, that out-of-band methods suffer from some limitations.
@@ -1143,6 +1195,205 @@ from using an out-of-band method!  Maybe even for large files, inline
 methods are fast enough.
 
 
+@node Default User
+@section Selecting a default user
+@cindex default user
+
+The user part of a @value{tramp} file name can be omitted.  Usually,
+it is replaced by the user name you are logged in.  Often, this is not
+what you want.  A typical use of @value{tramp} might be to edit some
+files with root permissions on the local host.  This case, you should
+set the variable @code{tramp-default-user} to reflect that choice.
+For example:
+
+@lisp
+(setq tramp-default-user "root")
+@end lisp
+
+@code{tramp-default-user} is regarded as obsolete, and will be removed
+soon.
+
+@vindex tramp-default-user-alist
+You can also specify different users for certain method/host
+combinations, via the variable @code{tramp-default-user-alist}.  For
+example, if you always have to use the user @samp{john} in the domain
+@samp{somewhere.else}, you can specify the following:
+
+@lisp
+(add-to-list 'tramp-default-user-alist
+             '("ssh" ".*\\.somewhere\\.else\\'" "john"))
+@end lisp
+
+@noindent
+See the documentation for the variable
+@code{tramp-default-user-alist} for more details.
+
+One trap to fall in must be known.  If @value{tramp} finds a default
+user, this user will be passed always to the connection command as
+parameter (for example @samp{ssh here.somewhere.else -l john}.  If you
+have specified another user for your command in its configuration
+files, @value{tramp} cannot know it, and the remote access will fail.
+If you have specified in the given example in @file{~/.ssh/config} the
+lines
+
+@example
+Host here.somewhere.else
+     User lily
+@end example
+
+@noindent
+than you must discard selecting a default user by @value{tramp}.  This
+will be done by setting it to @code{nil} (or @samp{lily}, likewise):
+
+@lisp
+(add-to-list 'tramp-default-user-alist
+             '("ssh" "\\`here\\.somewhere\\.else\\'" nil))
+@end lisp
+
+The last entry in @code{tramp-default-user-alist} could be your
+default user you'll apply predominantly.  You shall @emph{append} it
+to that list at the end:
+
+@lisp
+(add-to-list 'tramp-default-user-alist '(nil nil "jonas") t)
+@end lisp
+
+
+@node Default Host
+@section Selecting a default host
+@cindex default host
+
+@vindex tramp-default-host
+Finally, it is even possible to omit the host name part of a
+@value{tramp} file name.  This case, the value of the variable
+@code{tramp-default-host} is used.  Per default, it is initialized
+with the host name your local @value{emacsname} is running.
+
+If you, for example, use @value{tramp} mainly to contact the host
+@samp{target} as user @samp{john}, you can specify:
+
+@lisp
+(setq tramp-default-user "john"
+      tramp-default-host "target")
+@end lisp
+
+Then the simple file name @samp{@trampfn{ssh, , ,}} will connect you
+to John's home directory on target.
+@ifset emacs
+Note, however, that the most simplification @samp{/::} won't work,
+because @samp{/:} is the prefix for quoted file names.
+@end ifset
+
+
+@node Multi-hops
+@section Connecting to a remote host using multiple hops
+@cindex multi-hop
+@cindex proxy hosts
+
+Sometimes, the methods described before are not sufficient.  Sometimes,
+it is not possible to connect to a remote host using a simple command.
+For example, if you are in a secured network, you might have to log in
+to a `bastion host' first before you can connect to the outside world.
+Of course, the target host may also require a bastion host.
+
+@vindex tramp-default-proxies-alist
+In order to specify such multiple hops, it is possible to define a proxy
+host to pass through, via the variable
+@code{tramp-default-proxies-alist}.  This variable keeps a list of
+triples (@var{host} @var{user} @var{proxy}).
+
+ The first matching item specifies the proxy host to be passed for a
+file name located on a remote target matching @var{user}@@@var{host}.
+@var{host} and @var{user} are regular expressions or @code{nil}, which
+is interpreted as a regular expression which always matches.
+
+@var{proxy} must be a Tramp filename which localname part is ignored.
+Method and user name on @var{proxy} are optional, which is interpreted
+with the default values.
+@ifset emacsgw
+The method must be an inline or gateway method (@pxref{Inline
+methods}, @pxref{Gateway methods}).
+@end ifset
+@ifclear emacsgw
+The method must be an inline method (@pxref{Inline methods}).
+@end ifclear
+If @var{proxy} is @code{nil}, no additional hop is required reaching
+@var{user}@@@var{host}.
+
+If you, for example, must pass the host @samp{bastion.your.domain} as
+user @samp{bird} for any remote host which is not located in your local
+domain, you can set
+
+@lisp
+(add-to-list 'tramp-default-proxies-alist
+             '("\\." nil "@trampfn{ssh, bird, bastion.your.domain,}"))
+(add-to-list 'tramp-default-proxies-alist
+             '("\\.your\\.domain\\'" nil nil))
+@end lisp
+
+Please note the order of the code.  @code{add-to-list} adds elements at the
+beginning of a list.  Therefore, most relevant rules must be added last.
+
+Proxy hosts can be cascaded.  If there is another host called
+@samp{jump.your.domain}, which is the only one in your local domain who
+is allowed connecting @samp{bastion.your.domain}, you can add another
+rule:
+
+@lisp
+(add-to-list 'tramp-default-proxies-alist
+             '("\\`bastion\\.your\\.domain\\'"
+               "\\`bird\\'"
+               "@trampfn{ssh, , jump.your.domain,}"))
+@end lisp
+
+@var{proxy} can contain the patterns @code{%h} or @code{%u}.  These
+patterns are replaced by the strings matching @var{host} or
+@var{user}, respectively.
+
+If you, for example, wants to work as @samp{root} on hosts in the
+domain @samp{your.domain}, but login as @samp{root} is disabled for
+non-local access, you might add the following rule:
+
+@lisp
+(add-to-list 'tramp-default-proxies-alist
+             '("\\.your\\.domain\\'" "\\`root\\'" "@trampfn{ssh, , %h,}"))
+@end lisp
+
+Opening @file{@trampfn{sudo, , randomhost.your.domain,}} would connect
+first @samp{randomhost.your.domain} via @code{ssh} under your account
+name, and perform @code{sudo -u root} on that host afterwards.  It is
+important to know that the given method is applied on the host which
+has been reached so far.  @code{sudo -u root}, applied on your local
+host, wouldn't be useful here.
+
+This is the recommended configuration to work as @samp{root} on remote
+Ubuntu hosts.
+
+@ifset emacsgw
+Finally, @code{tramp-default-proxies-alist} can be used to pass
+firewalls or proxy servers.  Imagine your local network has a host
+@samp{proxy.your.domain} which is used on port 3128 as HTTP proxy to
+the outer world.  Your friendly administrator has granted you access
+under your user name to @samp{host.other.domain} on that proxy
+server.@footnote{HTTP tunnels are intended for secure SSL/TLS
+communication.  Therefore, many proxy server restrict the tunnels to
+related target ports.  You might need to run your ssh server on your
+target host @samp{host.other.domain} on such a port, like 443 (https).
+See @uref{http://savannah.gnu.org/maintenance/CvsFromBehindFirewall}
+for discussion of ethical issues.}  You would need to add the
+following rule:
+
+@lisp
+(add-to-list 'tramp-default-proxies-alist
+             '("\\`host\\.other\\.domain\\'" nil
+               "@trampfn{tunnel, , proxy.your.domain#3128,}"))
+@end lisp
+
+Gateway methods can be declared as first hop only in a multiple hop
+chain.
+@end ifset
+
+
 @node Customizing Methods
 @section Using Non-Standard Methods
 @cindex customizing methods
@@ -1263,8 +1514,8 @@ you might provide such a function as well.  This function must meet
 the following conventions:
 
 @defun my-tramp-parse file
-@var{file} must be either a file name on your host, or @code{nil}. The
-function must return a list of (@var{user} @var{host}), which are
+@var{file} must be either a file name on your host, or @code{nil}.
+The function must return a list of (@var{user} @var{host}), which are
 taken as candidates for user and host name completion.
 
 Example:
@@ -1309,16 +1560,44 @@ can be disabled totally by customizing the variable
 @code{password-cache} (setting it to @code{nil}).
 
 Implementation Note: password caching is based on the package
-password.el in No Gnus.  For the time being, it is activated only when
-this package is seen in the @code{load-path} while loading @value{tramp}.
+@file{password.el} in No Gnus.  For the time being, it is activated
+only when this package is seen in the @code{load-path} while loading
+@value{tramp}.
 @ifset installchapter
-If you don't use No Gnus, you can take password.el from the @value{tramp}
-@file{contrib} directory, see @ref{Installation parameters}.
+If you don't use No Gnus, you can take @file{password.el} from the
+@value{tramp} @file{contrib} directory, see @ref{Installation
+parameters}.
 @end ifset
 It will be activated mandatory once No Gnus has found its way into
 @value{emacsname}.
 
 
+@node Connection caching
+@section Reusing connection related information.
+@cindex caching
+
+@vindex tramp-persistency-file-name
+In order to reduce initial connection time, @value{tramp} stores
+connection related information persistently.  The variable
+@code{tramp-persistency-file-name} keeps the file name where these
+information are written.  Its default value is
+@ifset emacs
+@file{~/.emacs.d/tramp}.
+@end ifset
+@ifset xemacs
+@file{~/.xemacs/tramp}.
+@end ifset
+It is recommended to choose a local file name.
+
+@value{tramp} reads this file during startup, and writes it when
+exiting @value{emacsname}.  You can simply remove this file if
+@value{tramp} shall be urged to recompute these information next
+@value{emacsname} startup time.
+
+Using such persistent information can be disabled by setting
+@code{tramp-persistency-file-name} to @code{nil}.
+
+
 @node Remote Programs
 @section How @value{tramp} finds and uses programs on the remote machine.
 
@@ -1327,28 +1606,35 @@ function, including @command{ls}, @command{test}, @command{find} and
 @command{cat}.
 
 In addition to these required tools, there are various tools that may be
-required based on the connection method. See @ref{Inline methods} and
+required based on the connection method.  See @ref{Inline methods} and
 @ref{External transfer methods} for details on these.
 
 Certain other tools, such as @command{perl} (or @command{perl5}) and
-@command{grep} will be used if they can be found. When they are
+@command{grep} will be used if they can be found.  When they are
 available, they are used to improve the performance and accuracy of
 remote file access.
 
 @vindex tramp-remote-path
 When @value{tramp} connects to the remote machine, it searches for the
-programs that it can use. The variable @var{tramp-remote-path} controls
-the directories searched on the remote machine.
+programs that it can use.  The variable @code{tramp-remote-path}
+controls the directories searched on the remote machine.
 
 By default, this is set to a reasonable set of defaults for most
-machines. It is possible, however, that your local (or remote ;) system
+machines.  The symbol @code{tramp-default-remote-path} is a place
+holder, it is replaced by the list of directories received via the
+command @command{getconf PATH} on your remote machine.  For example,
+on GNU Debian this is @file{/bin:/usr/bin}, whereas on Solaris this is
+@file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin}.  It is
+recommended to apply this symbol on top of @code{tramp-remote-path}.
+
+It is possible, however, that your local (or remote ;) system
 administrator has put the tools you want in some obscure local
 directory.
 
-In this case, you can still use them with @value{tramp}. You simply need to
-add code to your @file{.emacs} to add the directory to the remote path.
-This will then be searched by @value{tramp} when you connect and the software
-found.
+In this case, you can still use them with @value{tramp}.  You simply
+need to add code to your @file{.emacs} to add the directory to the
+remote path.  This will then be searched by @value{tramp} when you
+connect and the software found.
 
 To add a directory to the remote search path, you could use code such
 as:
@@ -1360,6 +1646,12 @@ as:
 (add-to-list 'tramp-remote-path "/usr/local/perl/bin")
 @end lisp
 
+@value{tramp} caches several information, like the Perl binary
+location.  The changed remote search path wouldn't affect these
+settings.  In order to force @value{tramp} to recompute these values,
+you must exit @value{emacsname}, remove your persistency file
+(@pxref{Connection caching}), and restart @value{emacsname}.
+
 
 @node Remote shell setup
 @comment  node-name,  next,  previous,  up
@@ -1433,20 +1725,37 @@ circumstances.
 
 Some people invoke the @command{tset} program from their shell startup
 scripts which asks the user about the terminal type of the shell.
-Maybe some shells ask other questions when they are started.  @value{tramp}
-does not know how to answer these questions.  There are two approaches
-for dealing with this problem.  One approach is to take care that the
-shell does not ask any questions when invoked from @value{tramp}.  You can
-do this by checking the @code{TERM} environment variable, it will be
-set to @code{dumb} when connecting.
+Maybe some shells ask other questions when they are started.
+@value{tramp} does not know how to answer these questions.  There are
+two approaches for dealing with this problem.  One approach is to take
+care that the shell does not ask any questions when invoked from
+@value{tramp}.  You can do this by checking the @code{TERM}
+environment variable, it will be set to @code{dumb} when connecting.
 
 @vindex tramp-terminal-type
 The variable @code{tramp-terminal-type} can be used to change this value
 to @code{dumb}.
 
+@vindex tramp-actions-before-shell
 The other approach is to teach @value{tramp} about these questions.  See
-the variables @code{tramp-actions-before-shell} and
-@code{tramp-multi-actions} (for multi-hop connections).
+the variable @code{tramp-actions-before-shell}.  Example:
+
+@lisp
+(defconst my-tramp-prompt-regexp
+  (concat (regexp-opt '("Enter the birth date of your mother:") t)
+          "\\s-*")
+  "Regular expression matching my login prompt question.")
+
+(defun my-tramp-action (proc vec)
+  "Enter \"19000101\" in order to give a correct answer."
+  (save-window-excursion
+    (with-current-buffer (tramp-get-connection-buffer vec)
+      (tramp-message vec 6 "\n%s" (buffer-string))
+      (tramp-send-string vec "19000101"))))
+
+(add-to-list 'tramp-actions-before-shell
+             '(my-tramp-prompt-regexp my-tramp-action))
+@end lisp
 
 
 @item Environment variables named like users in @file{.profile}
@@ -1484,10 +1793,10 @@ of the single character tilde, strange things will happen.
 
 What can you do about this?
 
-Well, one possibility is to make sure that everything in @file{~/.shrc}
-and @file{~/.profile} on all remote hosts is Bourne-compatible.  In the
-above example, instead of @command{export FOO=bar}, you might use
-@command{FOO=bar; export FOO} instead.
+Well, one possibility is to make sure that everything in
+@file{~/.shrc} and @file{~/.profile} on all remote hosts is
+Bourne-compatible.  In the above example, instead of @command{export
+FOO=bar}, you might use @command{FOO=bar; export FOO} instead.
 
 The other possibility is to put your non-Bourne shell setup into some
 other files.  For example, bash reads the file @file{~/.bash_profile}
@@ -1528,13 +1837,13 @@ variable
 @ifset xemacs
 @code{bkup-backup-directory-info}.
 @end ifset
-In connection with @value{tramp}, this can have unexpected side effects.
-Suppose that you specify that all backups should go to the directory
-@file{~/.emacs.d/backups/}, and then you edit the file
-@file{@value{prefix}su@value{postfixsinglehop}root@@localhost@value{postfix}/etc/secretfile}.
-The effect is that the backup file will be owned by you and not by
-root, thus possibly enabling others to see it even if they were not
-intended to see it.
+In connection with @value{tramp}, this can have unexpected side
+effects.  Suppose that you specify that all backups should go to the
+directory @file{~/.emacs.d/backups/}, and then you edit the file
+@file{@trampfn{su, root, localhost, /etc/secretfile}}.  The effect is
+that the backup file will be owned by you and not by root, thus
+possibly enabling others to see it even if they were not intended to
+see it.
 
 When
 @ifset emacs
@@ -1608,14 +1917,15 @@ Example:
 @end ifset
 
 @noindent
-The backup file name of
-@file{@value{prefix}su@value{postfixsinglehop}root@@localhost@value{postfix}/etc/secretfile}
-would be
+The backup file name of @file{@trampfn{su, root, localhost,
+/etc/secretfile}} would be
 @ifset emacs
-@file{@value{prefix}su@value{postfixsinglehop}root@@localhost@value{postfix}~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile~}
+@file{@trampfn{su, root, localhost,
+~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile~}}
 @end ifset
 @ifset xemacs
-@file{@value{prefix}su@value{postfixsinglehop}root@@localhost@value{postfix}~/.emacs.d/backups/![su!root@@localhost]!etc!secretfile~}
+@file{@trampfn{su, root, localhost,
+~/.emacs.d/backups/![su!root@@localhost]!etc!secretfile~}}
 @end ifset
 
 The same problem can happen with auto-saving files.
@@ -1669,8 +1979,8 @@ can find information about setting up Cygwin in their FAQ at
 If you wish to use the @option{scpx} connection method, then you might
 have the problem that @value{emacsname} calls @command{scp} with a
 Windows filename such as @code{c:/foo}.  The Cygwin version of
-@command{scp} does not know about Windows filenames and interprets this
-as a remote filename on the host @code{c}.
+@command{scp} does not know about Windows filenames and interprets
+this as a remote filename on the host @code{c}.
 
 One possible workaround is to write a wrapper script for @option{scp}
 which converts the Windows filename to a Cygwinized filename.
@@ -1696,9 +2006,9 @@ know anything at all about Windows@dots{}
 @chapter Using @value{tramp}
 @cindex using @value{tramp}
 
-Once you have installed @value{tramp} it will operate fairly transparently. You
-will be able to access files on any remote machine that you can log in
-to as though they were local.
+Once you have installed @value{tramp} it will operate fairly
+transparently.  You will be able to access files on any remote machine
+that you can log in to as though they were local.
 
 Files are specified to @value{tramp} using a formalized syntax specifying the
 details of the system to connect to.  This is similar to the syntax used
@@ -1717,10 +2027,9 @@ minute you have already forgotten that you hit that key!
 
 @menu
 * Filename Syntax::             @value{tramp} filename conventions.
-* Multi-hop filename syntax::   Multi-hop filename conventions.
+* Alternative Syntax::          URL-like filename syntax.
 * Filename completion::         Filename completion.
-* Dired::                       Dired.
-* Compilation::                 Compile remote files.
+* Remote processes::            Integration with other @value{emacsname} packages.
 @end menu
 
 
@@ -1729,123 +2038,108 @@ minute you have already forgotten that you hit that key!
 @cindex filename syntax
 @cindex filename examples
 
-To access the file @var{localname} on the remote machine @var{machine} you
-would specify the filename
-@file{@value{prefix}@var{machine}@value{postfix}@var{localname}}.
-This will connect to @var{machine} and transfer the file using the
-default method.  @xref{Default Method}.
+To access the file @var{localname} on the remote machine @var{machine}
+you would specify the filename @file{@trampfn{, , machine,
+localname}}.  This will connect to @var{machine} and transfer the file
+using the default method.  @xref{Default Method}.
 
 Some examples of @value{tramp} filenames are shown below.
 
 @table @file
-@item @value{prefix}melancholia@value{postfix}.emacs
+@item @trampfn{, , melancholia, .emacs}
 Edit the file @file{.emacs} in your home directory on the machine
 @code{melancholia}.
 
-@item @value{prefix}melancholia.danann.net@value{postfix}.emacs
+@item @trampfn{, , melancholia.danann.net, .emacs}
 This edits the same file, using the fully qualified domain name of
 the machine.
 
-@item @value{prefix}melancholia@value{postfix}~/.emacs
+@item @trampfn{, , melancholia, ~/.emacs}
 This also edits the same file --- the @file{~} is expanded to your
 home directory on the remote machine, just like it is locally.
 
-@item @value{prefix}melancholia@value{postfix}~daniel/.emacs
+@item @trampfn{, , melancholia, ~daniel/.emacs}
 This edits the file @file{.emacs} in the home directory of the user
-@code{daniel} on the machine @code{melancholia}. The @file{~<user>}
+@code{daniel} on the machine @code{melancholia}.  The @file{~<user>}
 construct is expanded to the home directory of that user on the remote
 machine.
 
-@item @value{prefix}melancholia@value{postfix}/etc/squid.conf
+@item @trampfn{, , melancholia, /etc/squid.conf}
 This edits the file @file{/etc/squid.conf} on the machine
 @code{melancholia}.
 
 @end table
 
 Unless you specify a different name to use, @value{tramp} will use the
-current local user name as the remote user name to log in with. If you
+current local user name as the remote user name to log in with.  If you
 need to log in as a different user, you can specify the user name as
 part of the filename.
 
 To log in to the remote machine as a specific user, you use the syntax
-@file{@value{prefix}@var{user}@@@var{machine}@value{postfix}/@var{path/to.file}}.
-That means that connecting to @code{melancholia} as @code{daniel} and
-editing @file{.emacs} in your home directory you would specify
-@file{@value{prefix}daniel@@melancholia@value{postfix}.emacs}.
+@file{@trampfn{, user, machine, path/to.file}}.  That means that
+connecting to @code{melancholia} as @code{daniel} and editing
+@file{.emacs} in your home directory you would specify
+@file{@trampfn{, daniel, melancholia, .emacs}}.
 
 It is also possible to specify other file transfer methods
-(@pxref{Default Method}) as part of the filename.
+(@pxref{Inline methods}, @pxref{External transfer methods}) as part of
+the filename.
 @ifset emacs
 This is done by putting the method before the user and host name, as
-in
-@file{@value{prefix}@var{method}@value{postfixsinglehop}}
-(Note the trailing colon).
+in @file{@value{prefix}@var{method}@value{postfixhop}} (Note the
+trailing colon).
 @end ifset
 @ifset xemacs
-This is done by replacing the initial
-@file{@value{prefix}} with
-@file{@value{prefix}<method>@value{postfixsinglehop}}.
-(Note the trailing slash!).
+This is done by replacing the initial @file{@value{prefix}} with
+@file{@value{prefix}<method>@value{postfixhop}}.  (Note the trailing
+slash!).
 @end ifset
 The user, machine and file specification remain the same.
 
 So, to connect to the machine @code{melancholia} as @code{daniel},
-using the @option{ssh} method to transfer files, and edit @file{.emacs}
-in my home directory I would specify the filename
-@file{@value{prefix}ssh@value{postfixsinglehop}daniel@@melancholia@value{postfix}.emacs}.
-
+using the @option{ssh} method to transfer files, and edit
+@file{.emacs} in my home directory I would specify the filename
+@file{@trampfn{ssh, daniel, melancholia, .emacs}}.
 
-@node Multi-hop filename syntax
-@section Multi-hop filename conventions
-@cindex filename syntax for multi-hop files
-@cindex multi-hop filename syntax
 
-The syntax of multi-hop file names is necessarily slightly different
-than the syntax of other @value{tramp} file names.  Here's an example
-multi-hop file name:
+@node Alternative Syntax
+@section URL-like filename syntax
+@cindex filename syntax
+@cindex filename examples
 
-@example
-@value{prefix}multi@value{postfixsinglehop}rsh@value{postfixmultihop}out@@gate@value{postfixsinglehop}telnet@value{postfixmultihop}kai@@real.host@value{postfix}/path/to.file
-@end example
+Additionally to the syntax described in the previous chapter, it is
+possible to use a URL-like syntax for @value{tramp}.  This can be
+switched on by customizing the variable @code{tramp-syntax}.  Please
+note that this feature is experimental for the time being.
 
-This is quite a mouthful.  So let's go through it step by step.  The
-file name consists of three parts.
-@ifset emacs
-The parts are separated by colons
-@end ifset
-@ifset xemacs
-The parts are separated by slashes and square brackets.
-@end ifset
-The first part is @file{@value{prefix}multi}, the method
-specification.  The second part is
-@file{rsh@value{postfixmultihop}out@@gate@value{postfixsinglehop}telnet@value{postfixmultihop}kai@@real.host}
-and specifies the hops.  The final part is @file{/path/to.file} and
-specifies the file name on the remote host.
+The variable @code{tramp-syntax} must be set before requiring @value{tramp}:
 
-The first part and the final part should be clear.  See @ref{Multi-hop
-Methods}, for a list of alternatives for the method specification.
+@lisp
+(setq tramp-syntax 'url)
+(require 'tramp)
+@end lisp
 
-The second part can be subdivided again into components, so-called
-hops.  In the above file name, there are two hops,
-@file{rsh@value{postfixmultihop}out@@gate} and
-@file{telnet@value{postfixmultihop}kai@@real.host}.
+Then, a @value{tramp} filename would look like this:
+@file{/@var{method}://@var{user}@@@var{machine}:@var{port}/@var{path/to.file}}.
+@file{/@var{method}://} is mandatory, all other parts are optional.
+@file{:@var{port}} is useful for methods only who support this.
 
-Each hop can @emph{again} be subdivided into (three) components, the
-@dfn{hop method}, the @dfn{user name} and the @dfn{host name}.  The
-meaning of the second and third component should be clear, and the hop
-method says what program to use to perform that hop.
+The last example from the previous section would look like this:
+@file{/ssh://daniel@@melancholia/.emacs}.
 
-The first hop, @file{rsh@value{postfixmultihop}out@@gate},
-says to use @command{rsh} to log in as user @code{out} to the host
-@code{gate}.  Starting at that host, the second hop,
-@file{telnet@value{postfixmultihop}kai@@real.host}, says to
-use @command{telnet} to log in as user @code{kai} to host
-@code{real.host}.
+For the time being, @code{tramp-syntax} can have the following values:
 
-@xref{Multi-hop Methods}, for a list of possible hop method values.
-The variable @code{tramp-multi-connection-function-alist} contains the
-list of possible hop methods and information on how to execute them,
-should you want to add your own.
+@itemize @w{}
+@ifset emacs
+@item @code{ftp} -- That is the default syntax
+@item @code{url} -- URL-like syntax
+@end ifset
+@ifset xemacs
+@item @code{sep} -- That is the default syntax
+@item @code{url} -- URL-like syntax
+@item @code{ftp} -- EFS-like syntax
+@end ifset
+@end itemize
 
 
 @node Filename completion
@@ -1853,10 +2147,20 @@ should you want to add your own.
 @cindex filename completion
 
 Filename completion works with @value{tramp} for completion of method
-names, of user names and of machine names (except multi-hop methods)
-as well as for completion of file names on remote machines.
+names, of user names and of machine names as well as for completion of
+file names on remote machines.
 @ifset emacs
-In order to enable this, Partial Completion mode must be set on.
+In order to enable this, Partial Completion mode must be set
+on@footnote{If you don't use Partial Completion mode, but want to
+keep full completion, load @value{tramp} like this in your
+@file{.emacs}:
+
+@lisp
+;; Preserve Tramp's completion features.
+(let ((partial-completion-mode t))
+  (require 'tramp))
+@end lisp
+}.
 @ifinfo
 @xref{Completion Options, , , @value{emacsdir}}.
 @end ifinfo
@@ -1867,85 +2171,189 @@ If you, for example, type @kbd{C-x C-f @value{prefix}t
 
 @example
 @ifset emacs
-@value{prefixsinglehop}telnet@value{postfixsinglehop}                             tmp/
-@value{prefixsinglehop}toto@value{postfix}
+@value{prefixhop}telnet@value{postfixhop}                        tmp/
+@value{prefixhop}toto@value{postfix}
 @end ifset
 @ifset xemacs
-@value{prefixsinglehop}telnet@value{postfixsinglehop}                             @value{prefixsinglehop}toto@value{postfix}
+@value{prefixhop}telnet@value{postfixhop}                        @value{prefixhop}toto@value{postfix}
 @end ifset
 @end example
 
-@samp{@value{prefixsinglehop}telnet@value{postfixsinglehop}}
+@samp{@value{prefixhop}telnet@value{postfixhop}}
 is a possible completion for the respective method,
 @ifset emacs
 @samp{tmp/} stands for the directory @file{/tmp} on your local
 machine,
 @end ifset
-and @samp{@value{prefixsinglehop}toto@value{postfix}}
+and @samp{@value{prefixhop}toto@value{postfix}}
 might be a host @value{tramp} has detected in your @file{~/.ssh/known_hosts}
 file (given you're using default method @option{ssh}).
 
 If you go on to type @kbd{e @key{TAB}}, the minibuffer is completed to
-@samp{@value{prefix}telnet@value{postfixsinglehop}}.
+@samp{@value{prefix}telnet@value{postfixhop}}.
 Next @kbd{@key{TAB}} brings you all machine names @value{tramp} detects in
 your @file{/etc/hosts} file, let's say
 
 @example
-@value{prefixsinglehop}telnet@value{postfixsinglehop}127.0.0.1@value{postfix}             @value{prefixsinglehop}telnet@value{postfixsinglehop}192.168.0.1@value{postfix}
-@value{prefixsinglehop}telnet@value{postfixsinglehop}localhost@value{postfix}             @value{prefixsinglehop}telnet@value{postfixsinglehop}melancholia.danann.net@value{postfix}
-@value{prefixsinglehop}telnet@value{postfixsinglehop}melancholia@value{postfix}
+@trampfn{telnet, , 127.0.0.1,}             @trampfn{telnet, , 192.168.0.1,}
+@trampfn{telnet, , localhost,}             @trampfn{telnet, , melancholia.danann.net,}
+@trampfn{telnet, , melancholia,}
 @end example
 
 Now you can choose the desired machine, and you can continue to
 complete file names on that machine.
 
-As filename completion needs to fetch the listing of files from the
-remote machine, this feature is sometimes fairly slow.  As @value{tramp}
-does not yet cache the results of directory listing, there is no gain
-in performance the second time you complete filenames.
-
 If the configuration files (@pxref{Customizing Completion}), which
 @value{tramp} uses for analysis of completion, offer user names, those user
 names will be taken into account as well.
 
+Remote machines, which have been visited in the past and kept
+persistently (@pxref{Connection caching}), will be offered too.
 
-@node Dired
-@section Dired
-@cindex dired
+Once the remote machine identification is completed, it comes to
+filename completion on the remote host.  This works pretty much like
+for files on the local host, with the exception that minibuffer
+killing via a double-slash works only on the filename part, except
+that filename part starts with @file{//}.
+@ifinfo
+@xref{Minibuffer File, , , @value{emacsdir}}.
+@end ifinfo
 
-@value{tramp} works transparently with dired, enabling you to use this powerful
-file management tool to manage files on any machine you have access to
-over the Internet.
+@ifset emacs
+As example, @kbd{@trampfn{telnet, , melancholia, /usr/local/bin//etc}
+@key{TAB}} would result in
+@file{@trampfn{telnet, , melancholia, /etc}}, whereas
+@kbd{@trampfn{telnet, , melancholia, //etc} @key{TAB}} reduces the
+minibuffer contents to @file{/etc}.  A triple-slash stands for the
+default behaviour,
+i.e. @kbd{@trampfn{telnet, , melancholia, /usr/local/bin///etc}
+@key{TAB}} expands directly to @file{/etc}.
+@end ifset
 
-If you need to browse a directory tree, Dired is a better choice, at
-present, than filename completion.  Dired has its own cache mechanism
-and will only fetch the directory listing once.
+@ifset xemacs
+As example, @kbd{@trampfn{telnet, , melancholia, /usr/local/bin//}}
+would result in @file{@trampfn{telnet, , melancholia, /}}, whereas
+@kbd{@trampfn{telnet, , melancholia, //}} expands the minibuffer
+contents to @file{/}.
+@end ifset
 
 
-@node Compilation
-@section Compile remote files
+@node Remote processes
+@section Integration with other @value{emacsname} packages.
 @cindex compile
 @cindex recompile
 
-@value{tramp} provides commands for compilation of files on remote
-machines.  In order to get them loaded, you need to require
-@file{tramp-util.el}:
+@value{tramp} supports running processes on a remote host.  This
+allows to exploit @value{emacsname} packages without modification for
+remote file names.  It does not work for the @option{ftp} and
+@option{smb} methods.
+
+Remote processes are started when a corresponding command is executed
+from a buffer belonging to a remote file or directory.  Up to now, the
+packages @file{compile.el} (commands like @code{compile} and
+@code{grep}) and @file{gud.el} (@code{gdb} or @code{perldb}) have been
+integrated.  Integration of further packages is planned, any help for
+this is welcome!
+
+When your program is not found in the default search path
+@value{tramp} sets on the remote machine, you should either use an
+absolute path, or extend @code{tramp-remote-path} (see @ref{Remote
+Programs}):
+
+@lisp
+(add-to-list 'tramp-remote-path "~/bin")
+(add-to-list 'tramp-remote-path "/appli/pub/bin")
+@end lisp
+
+The environment for your program can be adapted by customizing
+@code{tramp-remote-process-environment}.  This variable is a list of
+strings.  It is structured like @code{process-environment}.  Each
+element is a string of the form ENVVARNAME=VALUE.  An entry
+ENVVARNAME= disables the corresponding environment variable, which
+might have been set in your init file like @file{~/.profile}.
+
+@noindent
+Adding an entry can be performed via @code{add-to-list}:
+
+@lisp
+(add-to-list 'tramp-remote-process-environment "JAVA_HOME=/opt/java")
+@end lisp
+
+Changing or removing an existing entry is not encouraged.  The default
+values are chosen for proper @value{tramp} work.  Nevertheless, if for
+example a paranoid system administrator disallows changing the
+@var{$HISTORY} environment variable, you can customize
+@code{tramp-remote-process-environment}, or you can apply the
+following code in your @file{.emacs}:
 
 @lisp
-(require 'tramp-util)
+(let ((process-environment tramp-remote-process-environment))
+  (setenv "HISTORY" nil)
+  (setq tramp-remote-process-environment process-environment))
 @end lisp
 
-Afterwards, you can use the commands @code{tramp-compile} and
-@code{tramp-recompile} instead of @code{compile} and @code{recompile},
-respectively; @inforef{Compilation, ,@value{emacsdir}}.  This does not
-work for the @option{ftp} and @option{smb} methods.
+If you use other @value{emacsname} packages which do not run
+out-of-the-box on a remote host, please let us know.  We will try to
+integrate them as well.  @xref{Bug Reports}.
+
+
+@subsection Running eshell on a remote host
+@cindex eshell
+
+@value{tramp} is integrated into @file{eshell.el}.  That is, you can
+open an interactive shell on your remote host, and run commands there.
+After you have started @code{eshell}, you could perform commands like
+this:
+
+@example
+@b{~ $} cd @trampfn{sudo, , , /etc} @key{RET}
+@b{@trampfn{sudo, root, host, /etc} $} hostname @key{RET}
+host
+@b{@trampfn{sudo, root, host, /etc} $} id @key{RET}
+uid=0(root) gid=0(root) groups=0(root)
+@b{@trampfn{sudo, root, host, /etc} $} find-file shadow @key{RET}
+#<buffer shadow>
+@b{@trampfn{sudo, root, host, /etc} $}
+@end example
+
+
+@anchor{Running a debugger on a remote host}
+@subsection Running a debugger on a remote host
+@cindex gud
+@cindex gdb
+@cindex perldb
+
+@file{gud.el} offers an unified interface to several symbolic
+debuggers
+@ifset emacs
+@ifinfo
+(@ref{Debuggers, , , @value{emacsdir}}).
+@end ifinfo
+@end ifset
+With @value{tramp}, it is possible to debug programs on
+remote hosts.  You can call @code{gdb} with a remote file name:
+
+@example
+@kbd{M-x gdb @key{RET}}
+@b{Run gdb (like this):} gdb --annotate=3 @trampfn{ssh, , host, ~/myprog} @key{RET}
+@end example
+
+The file name can also be relative to a remote default directory.
+Given you are in a buffer that belongs to the remote directory
+@trampfn{ssh, , host, /home/user}, you could call
+
+@example
+@kbd{M-x perldb @key{RET}}
+@b{Run perldb (like this):} perl -d myprog.pl @key{RET}
+@end example
 
-The corresponding key bindings and menu entries calling these commands
-are redefined automatically for buffers associated with remote files.
+It is not possible to use just the absolute local part of a remote
+file name as program to debug, like @kbd{perl -d
+/home/user/myprog.pl}, though.
 
-After finishing the compilation, you can use the usual commands like
-@code{previous-error}, @code{next-error} and @code{first-error} for
-navigation in the @file{*Compilation*} buffer.
+Arguments of the program to be debugged are taken literally.  That
+means file names as arguments must be given as ordinary relative or
+absolute file names, without any remote specification.
 
 
 @node Bug Reports
@@ -1953,7 +2361,7 @@ navigation in the @file{*Compilation*} buffer.
 @cindex bug reports
 
 Bugs and problems with @value{tramp} are actively worked on by the
-development team. Feature requests and suggestions are also more than
+development team.  Feature requests and suggestions are also more than
 welcome.
 
 The @value{tramp} mailing list is a great place to get information on
@@ -1964,16 +2372,16 @@ non-subscribers can post but messages will be delayed, possibly up to
 your message.
 
 The mailing list is at @email{tramp-devel@@gnu.org}.  Messages sent to
-this address go to all the subscribers. This is @emph{not} the address
+this address go to all the subscribers.  This is @emph{not} the address
 to send subscription requests to.
 
 Subscribing to the list is performed via
 @uref{http://lists.gnu.org/mailman/listinfo/tramp-devel/,
 the @value{tramp} Mail Subscription Page}.
 
-To report a bug in @value{tramp}, you should execute @kbd{M-x tramp-bug}. This
-will automatically generate a buffer with the details of your system and
-@value{tramp} version.
+To report a bug in @value{tramp}, you should execute @kbd{M-x
+tramp-bug}.  This will automatically generate a buffer with the details
+of your system and @value{tramp} version.
 
 When submitting a bug report, please try to describe in excruciating
 detail the steps required to reproduce the problem, the setup of the
@@ -1982,8 +2390,20 @@ check that your problem is not described already in @xref{Frequently
 Asked Questions}.
 
 If you can identify a minimal test case that reproduces the problem,
-include that with your bug report. This will make it much easier for the
-development team to analyze and correct the problem.
+include that with your bug report.  This will make it much easier for
+the development team to analyze and correct the problem.
+
+Before reporting the bug, you should set the verbosity level to 6
+(@pxref{Traces and Profiles, Traces}) in the @file{~/.emacs} file and
+repeat the bug.  Then, include the contents of the @file{*tramp/foo*}
+and @file{*debug tramp/foo*} buffers in your bug report.  A verbosity
+level greater than 6 will produce a very huge debug buffer, which is
+mostly not necessary for the analysis.
+
+Please be aware that, with a verbosity level of 6 or greater, the
+contents of files and directories will be included in the debug
+buffer.  Passwords you've typed will never be included there.
+
 
 @node Frequently Asked Questions
 @chapter Frequently Asked Questions
@@ -2009,10 +2429,9 @@ There is also a Savannah project page.
 @item
 Which systems does it work on?
 
-The package has been used successfully on GNU Emacs 20, GNU Emacs 21
-and GNU Emacs 22, as well as XEmacs 21.  XEmacs 20 is more
-problematic, see the notes in @file{tramp.el}.  I don't think anybody
-has really tried it on GNU Emacs 19.
+The package has been used successfully on GNU Emacs 21, GNU Emacs 22
+and XEmacs 21 (starting with 21.4).  Gateway methods are supported for
+GNU Emacs 22 only.
 
 The package was intended to work on Unix, and it really expects a
 Unix-like system on the remote end (except the @option{smb} method),
@@ -2023,13 +2442,41 @@ There is some informations on @value{tramp} on NT at the following URL;
 many thanks to Joe Stoy for providing the information:
 @uref{ftp://ftp.comlab.ox.ac.uk/tmp/Joe.Stoy/}
 
-@c The link is broken. I've contacted Tom for clarification. Michael.
+@c The link is broken.  I've contacted Tom for clarification.  Michael.
 @ignore
 The above mostly contains patches to old ssh versions; Tom Roche has a
 Web page with instructions:
 @uref{http://www4.ncsu.edu/~tlroche/plinkTramp.html}
 @end ignore
 
+@item
+How could I speed up @value{tramp}?
+
+In the backstage, @value{tramp} needs a lot of operations on the
+remote host.  The time for transferring data from and to the remote
+host as well as the time needed to perform the operations there count.
+In order to speed up @value{tramp}, one could either try to avoid some
+of the operations, or one could try to improve their performance.
+
+Use an external transfer method, like @option{scpc}.
+
+Use caching.  This is already enabled by default.  Information about
+the remote host as well as the remote files are cached for reuse.  The
+information about remote hosts is kept in the file specified in
+@code{tramp-persistency-file-name}.  Keep this file.
+
+Disable version control.  If you access remote files which are not
+under version control, a lot of check operations can be avoided by
+disabling VC.  This can be achieved by
+
+@lisp
+(setq vc-handled-backends nil)
+@end lisp
+
+Disable excessive traces.  The default trace level of @value{tramp},
+defined in the variable @code{tramp-verbose}, is 3.  You should
+increase this level only temporarily, hunting bugs.
+
 
 @item
 @value{tramp} does not connect to the remote host
@@ -2048,6 +2495,17 @@ contains unknown characters like escape sequences for coloring.  This
 should be avoided on the remote side.  @xref{Remote shell setup}. for
 setting the regular expression detecting the prompt.
 
+You can check your settings after an unsuccessful connection by
+switching to the @value{tramp} connection buffer @file{*tramp/foo*},
+setting the cursor at the top of the buffer, and applying the expression
+
+@example
+@kbd{M-: (re-search-forward (concat tramp-shell-prompt-pattern "$"))}
+@end example
+
+If it fails, or the cursor is not moved at the end of the buffer, your
+prompt is not recognised correctly.
+
 A special problem is the zsh, which uses left-hand side and right-hand
 side prompts in parallel.  Therefore, it is necessary to disable the
 zsh line editor on the remote host.  You shall add to @file{~/.zshrc}
@@ -2057,15 +2515,34 @@ the following command:
 [ $TERM = "dumb" ] && unsetopt zle && PS1='$ '
 @end example
 
+
 @item
 @value{tramp} doesn't transfer strings with more than 500 characters
 correctly
 
 On some few systems, the implementation of @code{process-send-string}
-seems to be broken for longer strings.  This case, you should
-customize the variable @code{tramp-chunksize} to 500.  For a
-description how to determine whether this is necessary see the
-documentation of @code{tramp-chunksize}.
+seems to be broken for longer strings.  It is reported for HP-UX,
+FreeBSD and Tru64 Unix, for example.  This case, you should customize
+the variable @code{tramp-chunksize} to 500.  For a description how to
+determine whether this is necessary see the documentation of
+@code{tramp-chunksize}.
+
+Additionally, it will be useful to set @code{file-precious-flag} to
+@code{t} for @value{tramp} files.  Then the file contents will be
+written into a temporary file first, which is checked for correct
+checksum.
+@ifinfo
+@pxref{Saving Buffers, , , elisp}
+@end ifinfo
+
+@lisp
+(add-hook
+ 'find-file-hooks
+ '(lambda ()
+    (when (file-remote-p default-directory)
+      (set (make-local-variable 'file-precious-flag) t))))
+@end lisp
+
 @end itemize
 
 
@@ -2117,11 +2594,13 @@ remote host.
  " make tramp beep after writing a file."
  (interactive)
  (beep))
+
 (defadvice tramp-handle-do-copy-or-rename-file
   (after tramp-copy-beep-advice activate)
  " make tramp beep after copying a file."
  (interactive)
  (beep))
+
 (defadvice tramp-handle-insert-file-contents
   (after tramp-copy-beep-advice activate)
  " make tramp beep after copying a file."
@@ -2130,6 +2609,76 @@ remote host.
 @end lisp
 
 
+@ifset emacs
+@item
+I'ld like to see a host indication in the mode line when I'm remote
+
+The following code has been tested with @value{emacsname} 22.1.  You
+should put it into your @file{~/.emacs}:
+
+@lisp
+(defconst my-mode-line-buffer-identification
+  (list
+   '(:eval
+     (let ((host-name
+            (if (file-remote-p default-directory)
+                (tramp-file-name-host
+                 (tramp-dissect-file-name default-directory))
+              (system-name))))
+       (if (string-match "^[^0-9][^.]*\\(\\..*\\)" host-name)
+           (substring host-name 0 (match-beginning 1))
+         host-name)))
+   ": %12b"))
+
+(setq-default
+ mode-line-buffer-identification
+ my-mode-line-buffer-identification)
+
+(add-hook
+ 'dired-mode-hook
+ '(lambda ()
+    (setq
+     mode-line-buffer-identification
+     my-mode-line-buffer-identification)))
+@end lisp
+
+Since @value{emacsname} 23.1, the mode line contains an indication if
+@code{default-directory} for the current buffer is on a remote host.
+The corresponding tooltip includes the name of that host.  If you
+still want the host name as part of the mode line, you can use the
+example above, but the @code{:eval} clause can be simplified:
+
+@lisp
+   '(:eval
+     (let ((host-name
+            (or (file-remote-p default-directory 'host)
+                (system-name))))
+       (if (string-match "^[^0-9][^.]*\\(\\..*\\)" host-name)
+           (substring host-name 0 (match-beginning 1))
+         host-name)))
+@end lisp
+@end ifset
+
+
+@ifset emacs
+@item
+My remote host does not understand default directory listing options
+
+@value{emacsname} computes the @command{dired} options depending on
+the local host you are working.  If your @command{ls} command on the
+remote host does not understand those options, you can change them
+like this:
+
+@lisp
+(add-hook
+ 'dired-before-readin-hook
+ '(lambda ()
+    (when (file-remote-p default-directory)
+      (setq dired-actual-switches "-al"))))
+@end lisp
+@end ifset
+
+
 @item
 There's this @file{~/.sh_history} file on the remote host which keeps
 growing and growing.  What's that?
@@ -2152,6 +2701,252 @@ fi
 @end example
 
 
+@item There are longish file names to type.  How to shorten this?
+
+Let's say you need regularly access to @file{@trampfn{ssh, news,
+news.my.domain, /opt/news/etc}}, which is boring to type again and
+again.  The following approaches can be mixed:
+
+@enumerate
+
+@item Use default values for method and user name:
+
+You can define default methods and user names for hosts,
+(@pxref{Default Method}, @pxref{Default User}):
+
+@lisp
+(setq tramp-default-method "ssh"
+      tramp-default-user "news")
+@end lisp
+
+The file name left to type would be
+@kbd{C-x C-f @trampfn{, , news.my.domain, /opt/news/etc}}.
+
+Note, that there are some useful settings already.  Accessing your
+local host as @samp{root} user, is possible just by @kbd{C-x C-f
+@trampfn{su, , ,}}.
+
+@item Use configuration possibilities of your method:
+
+Several connection methods (i.e. the programs used) offer powerful
+configuration possibilities (@pxref{Customizing Completion}).  In the
+given case, this could be @file{~/.ssh/config}:
+
+@example
+Host xy
+     HostName news.my.domain
+     User news
+@end example
+
+The file name left to type would be @kbd{C-x C-f @trampfn{ssh, , xy,
+/opt/news/etc}}.  Depending on files in your directories, it is even
+possible to complete the hostname with @kbd{C-x C-f
+@value{prefix}ssh@value{postfixhop}x @key{TAB}}.
+
+@item Use environment variables:
+
+File names typed in the minibuffer can be expanded by environment
+variables.  You can set them outside @value{emacsname}, or even with
+Lisp:
+
+@lisp
+(setenv "xy" "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}")
+@end lisp
+
+Then you need simply to type @kbd{C-x C-f $xy @key{RET}}, and here you
+are.  The disadvantage is, that you cannot edit the file name, because
+environment variables are not expanded during editing in the
+minibuffer.
+
+@item Define own keys:
+
+You can define your own key sequences in @value{emacsname}, which can
+be used instead of @kbd{C-x C-f}:
+
+@lisp
+(global-set-key
+ [(control x) (control y)]
+ (lambda ()
+   (interactive)
+   (find-file
+    (read-file-name
+     "Find Tramp file: "
+     "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))))
+@end lisp
+
+Simply typing @kbd{C-x C-y} would initialize the minibuffer for
+editing with your beloved file name.
+
+See also @uref{http://www.emacswiki.org/cgi-bin/wiki/TrampMode, the
+Emacs Wiki} for a more comprehensive example.
+
+@item Define own abbreviation (1):
+
+It is possible to define an own abbreviation list for expanding file
+names:
+
+@lisp
+(add-to-list
+ 'directory-abbrev-alist
+ '("^/xy" . "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))
+@end lisp
+
+This shortens the file openening command to @kbd{C-x C-f /xy
+@key{RET}}.  The disadvantage is, again, that you cannot edit the file
+name, because the expansion happens after entering the file name only.
+
+@item Define own abbreviation (2):
+
+The @code{abbrev-mode} gives more flexibility for editing the
+minibuffer:
+
+@lisp
+(define-abbrev-table 'my-tramp-abbrev-table
+  '(("xy" "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}")))
+
+(add-hook
+ 'minibuffer-setup-hook
+ '(lambda ()
+    (abbrev-mode 1)
+    (setq local-abbrev-table my-tramp-abbrev-table)))
+
+(defadvice minibuffer-complete
+  (before my-minibuffer-complete activate)
+  (expand-abbrev))
+
+;; If you use partial-completion-mode
+(defadvice PC-do-completion
+  (before my-PC-do-completion activate)
+  (expand-abbrev))
+@end lisp
+
+After entering @kbd{C-x C-f xy @key{TAB}}, the minibuffer is
+expanded, and you can continue editing.
+
+@item Use bookmarks:
+
+Bookmarks can be used to visit Tramp files or directories.
+@ifinfo
+@pxref{Bookmarks, , , @value{emacsdir}}
+@end ifinfo
+
+When you have opened @file{@trampfn{ssh, news, news.my.domain,
+/opt/news/etc/}}, you should save the bookmark via
+@ifset emacs
+@kbd{@key{menu-bar} @key{edit} @key{bookmarks} @key{set}}.
+@end ifset
+@ifset xemacs
+@kbd{@key{menu-bar} @key{view} @key{bookmarks} @key{set}}.
+@end ifset
+
+Later on, you can always navigate to that bookmark via
+@ifset emacs
+@kbd{@key{menu-bar} @key{edit} @key{bookmarks} @key{jump}}.
+@end ifset
+@ifset xemacs
+@kbd{@key{menu-bar} @key{view} @key{bookmarks} @key{jump}}.
+@end ifset
+
+@item Use recent files:
+
+@ifset emacs
+@file{recentf}
+@end ifset
+@ifset xemacs
+@file{recent-files}
+@end ifset
+remembers visited places.
+@ifinfo
+@ifset emacs
+@pxref{File Conveniences, , , @value{emacsdir}}
+@end ifset
+@ifset xemacs
+@pxref{recent-files, , , edit-utils}
+@end ifset
+@end ifinfo
+
+You could keep remote file names in the recent list without checking
+their readability through a remote access:
+
+@lisp
+@ifset emacs
+(recentf-mode 1)
+@end ifset
+@ifset xemacs
+(recent-files-initialize)
+(add-hook
+ 'find-file-hooks
+ (lambda ()
+   (when (file-remote-p (buffer-file-name))
+     (recent-files-make-permanent)))
+ 'append)
+@end ifset
+@end lisp
+
+The list of files opened recently is reachable via
+@ifset emacs
+@kbd{@key{menu-bar} @key{file} @key{Open Recent}}.
+@end ifset
+@ifset xemacs
+@kbd{@key{menu-bar} @key{Recent Files}}.
+@end ifset
+
+@ifset emacs
+@item Use filecache:
+
+@file{filecache} remembers visited places.  Add the directory into
+the cache:
+
+@lisp
+(eval-after-load "filecache"
+  '(file-cache-add-directory
+    "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))
+@end lisp
+
+Whenever you want to load a file, you can enter @kbd{C-x C-f
+C-@key{TAB}} in the minibuffer.  The completion is done for the given
+directory.
+@end ifset
+
+@ifset emacs
+@item Use bbdb:
+
+@file{bbdb} has a built-in feature for @value{ftppackagename} files,
+which works also for @value{tramp}.
+@ifinfo
+@pxref{bbdb-ftp, Storing FTP sites in the BBDB, , bbdb}
+@end ifinfo
+
+You need to load @file{bbdb}:
+
+@lisp
+(require 'bbdb)
+(bbdb-initialize)
+@end lisp
+
+Then you can create a BBDB entry via @kbd{M-x bbdb-create-ftp-site}.
+Because BBDB is not prepared for @value{tramp} syntax, you must
+specify a method together with the user name, when needed. Example:
+
+@example
+@kbd{M-x bbdb-create-ftp-site @key{RET}}
+@b{Ftp Site:} news.my.domain @key{RET}
+@b{Ftp Directory:} /opt/news/etc/ @key{RET}
+@b{Ftp Username:} ssh@value{postfixhop}news @key{RET}
+@b{Company:} @key{RET}
+@b{Additional Comments:} @key{RET}
+@end example
+
+When you have opened your BBDB buffer, you can access such an entry by
+pressing the key @key{F}.
+@end ifset
+
+@end enumerate
+
+I would like to thank all @value{tramp} users, who have contributed to
+the different recipes!
+
+
 @item
 How can I disable @value{tramp}?
 
@@ -2180,12 +2975,12 @@ This resets also the @value{ftppackagename} plugins.
 @cindex Version Control
 
 Unlike @value{ftppackagename}, @value{tramp} has full shell access to the
-remote machine. This makes it possible to provide version control for
+remote machine.  This makes it possible to provide version control for
 files accessed under @value{tramp}.
 
 The actual version control binaries must be installed on the remote
 machine, accessible in the directories specified in
-@var{tramp-remote-path}.
+@code{tramp-remote-path}.
 
 This transparent integration with the version control systems is one of
 the most valuable features provided by @value{tramp}, but it is far from perfect.
@@ -2204,7 +2999,7 @@ Work is ongoing to improve the transparency of the system.
 @section Determining if a file is under version control
 
 The VC package uses the existence of on-disk revision control master
-files to determine if a given file is under revision control. These file
+files to determine if a given file is under revision control.  These file
 tests happen on the remote machine through the standard @value{tramp} mechanisms.
 
 
@@ -2212,7 +3007,7 @@ tests happen on the remote machine through the standard @value{tramp} mechanisms
 @section Executing the version control commands on the remote machine
 
 There are no hooks provided by VC to allow intercepting of the version
-control command execution. The calls occur through the
+control command execution.  The calls occur through the
 @code{call-process} mechanism, a function that is somewhat more
 efficient than the @code{shell-command} function but that does not
 provide hooks for remote execution of commands.
@@ -2239,7 +3034,7 @@ workfile and the version control master.
 
 This requires that a shell command be executed remotely, a process that
 is notably heavier-weight than the mtime comparison used for local
-files. Unfortunately, unless a portable solution to the issue is found,
+files.  Unfortunately, unless a portable solution to the issue is found,
 this will remain the cost of remote version control.
 
 
@@ -2247,7 +3042,7 @@ this will remain the cost of remote version control.
 @section Bringing the workfile out of the repository
 
 VC will, by default, check for remote files and refuse to act on them
-when checking out files from the repository. To work around this
+when checking out files from the repository.  To work around this
 problem, the function @code{vc-checkout} knows about @value{tramp} files and
 allows version control to occur.
 
@@ -2266,14 +3061,14 @@ Minor implementation details, &c.
 @node Remote File Ownership
 @subsection How VC determines who owns a workfile
 
-@value{emacsname} provides the @code{user-full-name} function to
+@value{emacsname} provides the @code{user-login-name} function to
 return the login name of the current user as well as mapping from
-arbitrary user id values back to login names. The VC code uses this
+arbitrary user id values back to login names.  The VC code uses this
 functionality to map from the uid of the owner of a workfile to the
 login name in some circumstances.
 
 This will not, for obvious reasons, work if the remote system has a
-different set of logins. As such, it is necessary to delegate to the
+different set of logins.  As such, it is necessary to delegate to the
 remote machine the job of determining the login name associated with a
 uid.
 
@@ -2282,7 +3077,7 @@ as @code{NIS}, @code{NIS+} and @code{NetInfo}, there is no simple,
 reliable and portable method for performing this mapping.
 
 Thankfully, the only place in the VC code that depends on the mapping of
-a uid to a login name is the @code{vc-file-owner} function. This returns
+a uid to a login name is the @code{vc-file-owner} function.  This returns
 the login of the owner of the file as a string.
 
 This function has been advised to use the output of @command{ls} on the
@@ -2304,7 +3099,7 @@ executing a process and parsing its output each time the information is
 needed.
 
 Unfortunately, life is not quite so easy when remote version control
-comes into the picture. Each remote machine may have a different version
+comes into the picture.  Each remote machine may have a different version
 of the version control tools and, while this is painful, we need to
 ensure that unavailable features are not used remotely.
 
@@ -2313,9 +3108,9 @@ approach of making the release values of the revision control tools
 local to each @value{tramp} buffer, forcing VC to determine these values
 again each time a new file is visited.
 
-This has, quite obviously, some performance implications. Thankfully,
+This has, quite obviously, some performance implications.  Thankfully,
 most of the common operations performed by VC do not actually require
-that the remote version be known. This makes the problem far less
+that the remote version be known.  This makes the problem far less
 apparent.
 
 Eventually these values will be captured by @value{tramp} on a system by
@@ -2327,6 +3122,9 @@ system basis and the results cached to improve performance.
 
 @menu
 * Localname deconstruction::    Breaking a localname into its components.
+@ifset emacs
+* External packages::           Integration with external Lisp packages.
+@end ifset
 @end menu
 
 
@@ -2334,11 +3132,11 @@ system basis and the results cached to improve performance.
 @section Breaking a localname into its components.
 
 @value{tramp} file names are somewhat different, obviously, to ordinary file
-names. As such, the lisp functions @code{file-name-directory} and
+names.  As such, the lisp functions @code{file-name-directory} and
 @code{file-name-nondirectory} are overridden within the @value{tramp}
 package.
 
-Their replacements are reasonably simplistic in their approach. They
+Their replacements are reasonably simplistic in their approach.  They
 dissect the filename, call the original handler on the localname and
 then rebuild the @value{tramp} file name with the result.
 
@@ -2346,6 +3144,104 @@ This allows the platform specific hacks in the original handlers to take
 effect while preserving the @value{tramp} file name information.
 
 
+@ifset emacs
+@node External packages
+@section Integration with external Lisp packages.
+
+While reading filenames in the minibuffer, @value{tramp} must decide
+whether it completes possible incomplete filenames, or not.  Imagine
+there is the following situation: You have typed @kbd{C-x C-f
+@value{prefix}ssh@value{postfixhop} @key{TAB}}.  @value{tramp} cannot
+know, whether @option{ssh} is a method or a host name.  It checks
+therefore the last input character you have typed.  If this is
+@key{TAB}, @key{SPACE} or @kbd{?}, @value{tramp} assumes that you are
+still in filename completion, and it does not connect to the possible
+remote host @option{ssh}.
+
+@vindex tramp-completion-mode
+External packages, which use other characters for completing filenames
+in the minibuffer, must signal this to @value{tramp}.  For this case,
+the variable @code{tramp-completion-mode} can be bound temporarily to
+a non-nil value.
+
+@lisp
+(let ((tramp-completion-mode t))
+  ...)
+@end lisp
+@end ifset
+
+
+@node Traces and Profiles
+@chapter How to Customize Traces
+
+All @value{tramp} messages are raised with a verbosity level.  The
+verbosity level can be any number between 0 and 10.  Only messages with
+a verbosity level less than or equal to @code{tramp-verbose} are
+displayed.
+
+The verbosity levels are
+
+          @w{ 0}  silent (no @value{tramp} messages at all)
+@*@indent @w{ 1}  errors
+@*@indent @w{ 2}  warnings
+@*@indent @w{ 3}  connection to remote hosts (default verbosity)
+@*@indent @w{ 4}  activities
+@*@indent @w{ 5}  internal
+@*@indent @w{ 6}  sent and received strings
+@*@indent @w{ 7}  file caching
+@*@indent @w{ 8}  connection properties
+@*@indent @w{10}  traces (huge)
+
+When @code{tramp-verbose} is greater than or equal to 4, the messages
+are also written into a @value{tramp} debug buffer.  This debug buffer
+is useful for analysing problems; sending a @value{tramp} bug report
+should be done with @code{tramp-verbose} set to a verbosity level of at
+least 6 (@pxref{Bug Reports}).
+
+The debug buffer is in
+@ifinfo
+@ref{Outline Mode, , , @value{emacsdir}}.
+@end ifinfo
+@ifnotinfo
+Outline Mode.
+@end ifnotinfo
+That means, you can change the level of messages to be viewed.  If you
+want, for example, see only messages up to verbosity level 5, you must
+enter @kbd{C-u 6 C-c C-q}.
+@ifinfo
+Other keys for navigating are described in
+@ref{Outline Visibility, , , @value{emacsdir}}.
+@end ifinfo
+
+@value{tramp} errors are handled internally in order to raise the
+verbosity level 1 messages.  When you want to get a Lisp backtrace in
+case of an error, you need to set both
+
+@lisp
+(setq debug-on-error t
+      debug-on-signal t)
+@end lisp
+
+Sometimes, it might be even necessary to step through @value{tramp}
+function call traces.  Such traces are enabled by the following code:
+
+@lisp
+(require 'tramp)
+(require 'trace)
+(mapcar 'trace-function-background
+        (mapcar 'intern
+                (all-completions "tramp-" obarray 'functionp)))
+(untrace-function 'tramp-read-passwd)
+(untrace-function 'tramp-gw-basic-authentication)
+@end lisp
+
+The function call traces are inserted in the buffer
+@file{*trace-output*}.  @code{tramp-read-passwd} and
+@code{tramp-gw-basic-authentication} shall be disabled when the
+function call traces are added to @value{tramp}, because both
+functions return password strings, which should not be distributed.
+
+
 @node Issues
 @chapter Debatable Issues and What Was Decided
 
@@ -2368,14 +3264,6 @@ printed and deleted.
 But I have decided that this is too fragile to reliably work, so on some
 systems you'll have to do without the uuencode methods.
 
-@item @value{tramp} does not work on XEmacs 20.
-
-This is because it requires the macro @code{with-timeout} which does not
-appear to exist in XEmacs 20.  I'm somewhat reluctant to add an
-emulation macro to @value{tramp}, but if somebody who uses XEmacs 20 steps
-forward and wishes to implement and test it, please contact me or the
-mailing list.
-
 @item The @value{tramp} filename syntax differs between GNU Emacs and XEmacs.
 
 The GNU Emacs maintainers wish to use a unified filename syntax for
@@ -2402,10 +3290,10 @@ The autoload of the @value{emacsname} @value{tramp} package must be
 disabled.  This can be achieved by setting file permissions @code{000}
 to the files @file{.../xemacs-packages/lisp/tramp/auto-autoloads.el*}.
 
-In case of unified filenames, all @value{emacsname} download sites
-are added to @code{tramp-default-method-alist} with default method
-@option{ftp} @xref{Default Method}.  These settings shouldn't be touched
-for proper working of the @value{emacsname} package system.
+In case of unified filenames, all @value{emacsname} download sites are
+added to @code{tramp-default-method-alist} with default method
+@option{ftp} @xref{Default Method}.  These settings shouldn't be
+touched for proper working of the @value{emacsname} package system.
 
 The syntax for unified filenames is described in the @value{tramp} manual
 for @value{emacsothername}.
@@ -2430,7 +3318,6 @@ for @value{emacsothername}.
 @c   shells.
 @c * Explain how tramp.el works in principle: open a shell on a remote
 @c   host and then send commands to it.
-@c * Mention that bookmarks are a cool feature to go along with Tramp.
 @c * Make terminology "inline" vs "out-of-band" consistent.
 @c   It seems that "external" is also used instead of "out-of-band".
 
similarity index 79%
rename from man/trampver.texi
rename to doc/misc/trampver.texi
index 6c770dc8ad1c6af83d8c2418b36f4d7bb609188c..179af979c0631febac8ea0fdc931e999052026ab 100644 (file)
@@ -1,27 +1,26 @@
 @c -*-texinfo-*-
 @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
-@c   Free Software Foundation, Inc.
-@c See file emacs.texi for copying conditions.
-
 @c In the Tramp CVS, the version number is auto-frobbed from
 @c configure.ac, so you should edit that file and run
 @c "autoconf && ./configure" to change the version number.
-@set trampver 2.0.56
+@set trampver 2.1.11
 
 @c Other flags from configuration
-@set prefix /usr/local
+@set instprefix /usr/local
 @set lispdir /usr/local/share/emacs/site-lisp
 @set infodir /usr/local/share/info
 
 @c Formatting of the tramp program name consistent.
 @set tramp @sc{tramp}
 
+@c Whether or not describe gateway methods.
+@ifclear noemacsgw
+@set emacsgw
+@end ifclear
+
 @c Some flags which make the text independent on the (X)Emacs flavor.
 @c "emacs" resp "xemacs" are set in the Makefile.  Default is "emacs".
-
 @ifclear emacs
 @ifclear xemacs
 @set emacs
 @set emacsdir           emacs
 @set ftppackagename     Ange-FTP
 @set prefix             /
-@set prefixsinglehop
+@set prefixhop
 @set postfix            :
-@set postfixsinglehop   :
-@set postfixmultihop    :
+@set postfixhop         :
 @set emacsothername     XEmacs
 @set emacsotherdir      xemacs
 @set emacsotherfilename tramp-xemacs.html
 @set emacsdir           xemacs
 @set ftppackagename     EFS
 @set prefix             /[
-@set prefixsinglehop    [
+@set prefixhop          [
 @set postfix            ]
-@set postfixsinglehop   /
-@set postfixmultihop    :
+@set postfixhop         /
 @set emacsothername     GNU Emacs
 @set emacsotherdir      emacs
 @set emacsotherfilename tramp-emacs.html
similarity index 99%
rename from man/url.texi
rename to doc/misc/url.texi
index 0fc6b08acdcfe79e11d381dd64d53a2b4ce071f6..2948793eed8a1b984657ee03252a63b2e4c33111 100644 (file)
@@ -1,5 +1,5 @@
 \input texinfo
-@setfilename ../info/url
+@setfilename ../../info/url
 @settitle URL Programmer's Manual
 
 @iftex
similarity index 99%
rename from man/vip.texi
rename to doc/misc/vip.texi
index a3f4a447f828be7ecb588dac992bac8ed45eb38d..4b27df5b0457fc5a547b25d02dadf555ece53129 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo
 
-@setfilename ../info/vip
+@setfilename ../../info/vip
 @settitle VIP
 
 @copying
similarity index 99%
rename from man/viper.texi
rename to doc/misc/viper.texi
index 55c97f18c9c17d1c2c19636f819cc08b49ee3b69..c86b2383168e5b98626fc9e1ef3876a8ae7368cd 100644 (file)
@@ -4,7 +4,7 @@
 @comment Using viper.info instead of viper in setfilename breaks DOS.
 @comment @setfilename viper
 @comment @setfilename viper.info
-@setfilename ../info/viper
+@setfilename ../../info/viper
 
 @copying
 Copyright @copyright{} 1995, 1996, 1997, 2001, 2002, 2003, 2004,
@@ -1745,7 +1745,8 @@ Setting this variable too high may slow down your typing.  Setting it too
 low may make it hard to type macros quickly enough.
 @item viper-translate-all-ESC-keysequences @code{t} on tty, @code{nil} on windowing display
 Normally, Viper lets Emacs translate only those ESC key sequences that are
-defined in the low-level key-translation-map or function-key-map, such as those
+defined in the low-level @code{input-decode-map}, @code{key-translation-map}
+or @code{function-key-map}, such as those
 emitted by the arrow and function keys. Other sequences, e.g., @kbd{\\e/}, are
 treated as @kbd{ESC} command followed by a @kbd{/}. This is good for people
 who type fast and tend to hit other characters right after they hit
@@ -2009,12 +2010,12 @@ not emit the right signals for Emacs to understand.  To let Emacs know about
 those keys, you will have to find out which key sequences they emit
 by typing @kbd{C-q} and then the key (you should switch to Emacs state
 first).  Then you can bind those sequences to their preferred forms using
-@code{function-key-map} as follows:
+@code{input-decode-map} as follows:
 
 @lisp
 (cond ((string= (getenv "TERM") "xterm")
-(define-key function-key-map "\e[192z" [f11])    ; L1
-(define-key function-key-map "\e[195z" [f14])    ; L4, Undo
+(define-key input-decode-map "\e[192z" [f11])    ; L1
+(define-key input-decode-map "\e[195z" [f14])    ; L4, Undo
 @end lisp
 
 The above illustrates how to do this for Xterm.  On VT100, you would have to
@@ -2206,6 +2207,7 @@ So much about Viper-specific bindings.
 Manual}, and the Emacs quick reference card for the general info on key
 bindings in Emacs.
 
+@vindex @code{input-decode-map}
 @vindex @code{function-key-map}
 @vindex @code{viper-vi-global-user-map}
 @vindex @code{viper-insert-global-user-map}
similarity index 99%
rename from man/widget.texi
rename to doc/misc/widget.texi
index 0cf77ee4600b65c779982b19db7cd97441542aca..35f0722406ee0faf46fe1bee2c624a078db76a66 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo.tex
 
 @c %**start of header
-@setfilename ../info/widget
+@setfilename ../../info/widget
 @settitle The Emacs Widget Library
 @syncodeindex fn cp
 @syncodeindex vr cp
similarity index 99%
rename from man/woman.texi
rename to doc/misc/woman.texi
index 868bb510f50a3bc583f7bd8bb68da15fb86159b0..3f0f0d43827f86fdf51082d2456287db8bac67b0 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo   @c -*-texinfo-*-
 @c %**start of header
-@setfilename ../info/woman
+@setfilename ../../info/woman
 @settitle WoMan: Browse Unix Manual Pages ``W.O. (without) Man''
 @c Manual last updated:
 @set UPDATED Time-stamp: <2006-03-25 14:59:03 karl>
similarity index 100%
rename from AUTHORS
rename to etc/AUTHORS
similarity index 88%
rename from CONTRIBUTE
rename to etc/CONTRIBUTE
index 8d48ea8f98504c746c6e96f6bbad3f6585817902..8daf73ffa1a388d944f92256e913c12a70f975a8 100644 (file)
@@ -57,7 +57,7 @@ Contact us at emacs-devel@gnu.org to obtain the relevant forms.
 The latest version of Emacs can be downloaded using CVS or Arch from
 the Savannah web site.  It is important to write your patch based on
 this version; if you start from an older version, your patch may be
-outdated when you write it, and maintainers will have hard time
+outdated when you write it, and maintainers will have hard time
 applying it.
 
 After you have downloaded the CVS source, you should read the file
@@ -82,8 +82,7 @@ All subsequent discussion should also be sent to the mailing list.
 For bug fixes, a description of the bug and how your patch fixes this
 bug.
 
-For new features, a description of the feature and your
-implementation.
+For new features, a description of the feature and your implementation.
 
 ** ChangeLog
 
@@ -183,25 +182,6 @@ of the Emacs Lisp Reference Manual may also help.
 The file etc/DEBUG describes how to debug Emacs bugs.
 
 
-
-* How to Maintain Copyright Years for GNU Emacs
-
-See admin/notes/copyright.
-
-** Our lawyer says it is ok if we add, to each file that has been in Emacs
-since Emacs 21 came out in 2001, all the subsequent years.  We don't
-need to check whether *that file* was changed in those years.
-It's sufficient that *Emacs* was changed in those years (and it was!).
-
-** For those files that have been added since then, we should add
-the year it was added to Emacs, and all subsequent years.
-
-** For the refcards under etc/, it's ok to simply use the latest year
-(typically in a `\def\year{YEAR}' expression) for the rendered copyright
-notice, while maintaining the full list of years in the copyright notice
-in the comments.
-
-
 \f
 This file is part of GNU Emacs.
 
index b6db44b1e9bc9b250ec745e91f862cd55e56f6d2..daf43c08d97527b2fca501d886e881a77f95fce2 100644 (file)
+2007-10-10  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * NEWS: Explain the VC fileset changes a bit better.
+
 2007-09-28  Glenn Morris  <rgm@gnu.org>
 
        * PROBLEMS: Mention Tex superscript font issue.
 
-2007-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-09-25  Johannes Weiner  <hannes@saeurebad.de>
 
-       * emacs.py (complete.class_members): Make sure we return the _emacs_out
-       message even in the face of exceptions.
+       * NEWS: Fix typo.
 
-2007-09-05  Jason Rumney  <jasonr@gnu.org>
+2007-09-24  Glenn Morris  <rgm@gnu.org>
+
+       * CONTRIBUTE: Remove information on maintaining copyright years;
+       it does not belong here and is in admin/notes anyway.
+
+2007-09-24  Adam Hupp  <adam@hupp.org>
+
+       * emacs.py: Split for python 2 and python 3 compatibility.
+       * emacs2.py: New file, split off from emacs.py.
+       * emacs3.py: New file, python 3 version of emacs2.py.
+
+2007-09-21  Glenn Morris  <rgm@gnu.org>
+
+       * emacstool.1: Remove file.
+       * emacs.bash: Adapt for removal of emacstool.
+       * emacs.csh: Remove emacstool-related code.
+
+2007-09-16  Glenn Morris  <rgm@gnu.org>
+
+       * gfdl.1: Remove unused file.
+
+2007-09-12  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile (SOURCES, unlock, relock): Delete.
+
+2007-09-10  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
+
+       * NEWS: Document the interactive specification for C functions.
+       Say that `set-file-modes' is now interactive.
+
+2007-09-10  Michael Olson  <mwolson@gnu.org>
+
+       * ERC-NEWS: Improve description of erc-tls and erc-ssl change.
+
+2007-09-09  Juri Linkov  <juri@jurta.org>
+
+       * AUTHORS, CONTRIBUTE: New files, moved here from the root dir.
+
+2007-09-08  Michael Olson  <mwolson@gnu.org>
+
+       * ERC-NEWS: Update for changes to the development version of ERC 5.3.
+
+2007-09-06  Glenn Morris  <rgm@gnu.org>
+
+       * ctags.1, emacs.1, emacsclient.1, etags.1: Move from etc/ to
+       doc/man/.
+
+       * refcards/README: Also mention gnus-logo.pdf license.
+
+2007-08-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * NEWS.22 (Note): Lower-case for orgtbl-mode.
 
-       * NEWS: Mention focus-follows-mouse change.
+2007-08-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * NEWS: Say that Gtk+ build uses stock icons.
+
+2007-08-28  Werner LEMBERG  <wl@gnu.org>
+
+       * refcards/de-refcard.tex, refcards/de-refcard.pdf: Use `C-M-%'
+       instead of `M-x query-replace-regexp'.
 
 2007-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * PROBLEMS (Mac OS X): Add alternative workaround for QuickTime
        updater breakage.
 
+2007-08-26  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
+
+       * NEWS: Say that PDF files are now the default for refcards.
+
+       * fr-drdref.tex, fr-drdref.pdf: Move these to...
+       * fr-dired-ref.tex, fr-dired-ref.pdf: ... those names.
+
+       * refcards/pdflayout.sty: New.  Handle PDF layouts through
+       \pdfpagewidth and \pdfpageheight.
+
+       * calccard.pdf, cs-dired-ref.pdf, cs-refcard.pdf, de-refcard.pdf:
+       * dired-ref.pdf, fr-drdref.pdf, fr-refcard.pdf, gnus-booklet.pdf:
+       * gnus-logo.pdf, gnus-refcard.pdf, orgcard.pdf, pl-refcard.pdf:
+       * pt-br-refcard.pdf, refcard.pdf, ru-refcard.pdf, sk-dired-ref.pdf:
+       * sk-refcard.pdf: Add PDF versions of the refcards.
+
+       * calccard.ps, cs-dired-ref.ps, cs-refcard.ps, de-refcard.ps:
+       * dired-ref.ps, fr-drdref.ps, fr-refcard.ps, gnus-booklet.ps:
+       * gnus-logo.ps, gnus-refcard.ps, orgcard.ps, pl-refcard.ps:
+       * pt-br-refcard.ps, refcard.ps, ru-refcard.ps, sk-dired-ref.ps:
+       * sk-refcard.ps: Remove the PS versions of the refcards.
+
+       * calccard.tex, fr-survival.tex, orgcard.tex, pl-refcard.tex:
+       * pt-br-refcard.tex, refcard.tex, survival.tex, vipcard.tex:
+       * viperCard.tex: Specify PDF layout, use a PDF `compile-command' local
+       variable.
+
+       * cs-dired-ref.tex, cs-refcard.tex, cs-survival.tex, dired-ref.tex:
+       * fr-drdref.tex, sk-dired-ref.tex, sk-refcard.tex, sk-survival.tex:
+       Specify PDF layout.
+
+       * fr-refcard.tex: Update copyright notice.  Update the examples.  Fix a
+       typo.  Remove the `letterpaper' counter, specify PDF layout, use a PDF
+       `compile-command' local variable.
+
+       * de-refcard.tex: Remove the `letterpaper' counter, specify PDF layout,
+       use a PDF `compile-command' local variable.
+
+       * ru-refcard.tex: Use a PDF `compile-command' local variable.
+
+       * Makefile: Add rules for creating the refcards in PDF, make them the
+       default.  Change `fr-drdref' to `fr-dired-ref'.
+
+2007-08-23  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile (mostlyclean, clean, distclean, maintainer-clean):
+       Delete these targets since nothing uses them.
+       (SOURCES): Update.
+       Move comments to e/README.  Remove license from now-trivial file.
+
+       * e/README: New file, with most information formerly in Makefile.
+
+2007-09-05  Jason Rumney  <jasonr@gnu.org>
+
+       * NEWS.22: Mention focus-follows-mouse change.
+
 2007-08-22  Karl Berry  <karl@gnu.org>
 
        * refcard.tex: Updates for printing.
        (Simple Customization): Don't use goto-line, since now it's bound.
        Also, use now-preferred (kbd ...) syntax.
 
+2007-08-22  Michael Albinus  <michael.albinus@gmx.de>
+
+       * NEWS: `shell' prompts for the default directory if called with a
+       prefix and `default-directory' is a remote file name.
+
+2007-08-22  Carsten Dominik  <dominik@science.uva.nl>
+
+       * orgcard.tex: Version number upgrade.
+
+2007-08-22  Glenn Morris  <rgm@gnu.org>
+
+       * tree-widget: Move this directory into images/ subdirectory.
+
+       * refcards/: New directory.  Move refcards here.
+       * Makefile: Move refcard rules from here...
+       * refcards/Makefile: ...to here.
+       * README: Move information about tex files from here...
+       * refcards/README: ...to here.
+
+       * tutorials/: New directory.  Move TUTORIAL* here.
+
+       * gnus.pbm, letter.pbm, letter.xpm:
+       * splash.pbm, splash.xpm, splash8.xpm: Move from etc/ to etc/images/.
+       * README: Move license information for the above files from here...
+       * images/README: ...to here.
+
 2007-08-14  Glenn Morris  <rgm@gnu.org>
 
        * NEWS: Mention `bad-packages-alist'.
        * TODO: `iff' item is dealt with.
        * GNUS-NEWS, NEWS, NEWS.1-17, NEWS.19, NEWS.21: Replace `iff'.
 
+2007-08-01  Glenn Morris  <rgm@gnu.org>
+
+       * NEWS: Add fortran-line-length, plus some more sections.
+
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
        * Relicense all FSF files to GPLv3 or later.
 
        * COPYING: Switch to GPLv3.
 
-2007-07-15  Werner Lemberg  <wl@gnu.org>
+2007-07-24  Michael Albinus  <michael.albinus@gmx.de>
 
-       * emacs.1: Completely revised.
-       Fix many typographical glitches.
-       Updated to handle current state of options and resources.
+       * NEWS: New functions `start-file-process-shell-command' and
+       `process-file-shell-command'.
+
+2007-07-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       * NEWS: `file-remote-p' has a new optional parameter IDENTIFICATION.
+
+2007-07-15  Karl Fogel  <kfogel@red-bean.com>
+
+       * NEWS: Revert 2007-07-13T23:20:21Z!kfogel@red-bean.com, which
+       documented bookmark keybinding changes that were later reverted.
 
 2007-07-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * PROBLEMS: Mention gtk-engines-qt problem.
 
-2007-06-07  Glenn Morris  <rgm@gnu.org>
+2007-07-13  Karl Fogel  <kfogel@red-bean.com>
 
-       * images/cancel.pbm: Convert from PGM to PBM.
+       * NEWS: Update for recent bookmark keybinding changes.
 
-       * images/copy.pbm, images/next-node.pbm, images/prev-node.pbm:
-       * images/save.pbm, images/up-node.pbm: Convert from PPM to PBM.
+2007-07-10  Michael Albinus  <michael.albinus@gmx.de>
+
+       * NEWS: Add Tramp and comint-mode changes.
+
+2007-07-08  Michael Albinus  <michael.albinus@gmx.de>
+
+       * NEWS: `file-remote-p' has a new optional parameter CONNECTED.
+
+2007-07-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       * NEWS: New function `start-file-process'.
+
+2007-07-02  Carsten Dominik  <dominik@science.uva.nl>
+
+       * orgcard.tex: Version 5.01
+
+2007-06-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * NEWS: `dired-call-process' has been removed.
+
+2007-06-20  Glenn Morris  <rgm@gnu.org>
+
+       * NEWS: configure prefers libgif over libungif.
+
+2007-06-14  Nick Roberts  <nickrob@snap.net.nz>
+
+       * NEWS: Mention mouse highlighting in a GNU/Linux console.
+
+2007-06-14  Werner Lemberg  <wl@gnu.org>
+
+       * emacs.1: Completely revised.
+       Fix many typographical glitches.
+       Updated to handle current state of options and resources.
+
+2007-06-12  Glenn Morris  <rgm@gnu.org>
+
+       * NEWS: Change bug address.  Add back +++/--- note.
+       Use present tense for X-toolkit entry.  Mention libgif.
 
 2007-06-07  Mark H. Weaver  <mhw@netris.org>  (tiny change)
 
 
        * MORE.STUFF: Update eshell URL.
 
+2007-06-06  Carsten Dominik  <dominik@science.uva.nl>
+
+       * orgcard.tex: Version 4.77.
+
+2007-06-05  Michael Albinus  <michael.albinus@gmx.de>
+
+       * NEWS: Add socks.el as new package.
+
+2007-06-02  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       * MORE.STUFF (Hideshow): Delete.
+       (EDB, Go in a buffer): Update urls.
+       Suggested by CHENG Gao <chenggao@gmail.com>.
+
 2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * Version 22.1 released.
 
        * NEWS: Fix instances of `allow' without object.
 
+2007-05-22  Glenn Morris  <rgm@gnu.org>
+
+       * NEWS.22: New file with entries for Emacs 22.
+       * NEWS: Move Emacs 22 entries to new file NEWS.22, leave empty
+       template for next Emacs version.
+
+2007-05-19  Glenn Morris  <rgm@gnu.org>
+
+       * images/cancel.pbm: Convert from PGM to PBM.
+
+       * images/copy.pbm, images/next-node.pbm, images/prev-node.pbm:
+       * images/save.pbm, images/up-node.pbm: Convert from PPM to PBM.
+
 2007-05-17  Glenn Morris  <rgm@gnu.org>
 
        * PROBLEMS (Dumping): Mention OpenBSD macppc problem.
 
 2007-02-19  Kenichi Handa  <handa@m17n.org>
 
-       * NEWS (New language environmets): Add "Esperanto".
+       * NEWS (New language environments): Add "Esperanto".
 
 2007-02-16  Dale Gulledge  <dsplat@rochester.rr.com>
 
index ca9b08874c0d3e8d24a851f74149072ae86a5bbc..0186e2bc024b5bd3994549ce355381be59dacea0 100644 (file)
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -64,10 +64,10 @@ use the set command until the inferior process has been started.
 Put a breakpoint early in `main', or suspend the Emacs,
 to get an opportunity to do the set command.
 
-When Emacs is running in a terminal, it is useful to use a separate terminal
-for the debug session.  This can be done by starting Emacs as usual, then
-attaching to it from gdb with the `attach' command which is explained in the
-node "Attach" of the GDB manual.
+When Emacs is running in a terminal, it is sometimes useful to use a separate
+terminal for the debug session.  This can be done by starting Emacs as usual,
+then attaching to it from gdb with the `attach' command which is explained in
+the node "Attach" of the GDB manual.
 
 ** Examining Lisp object values.
 
index f5bf1e89ddec2f3b26f5a2546bdda32a8bee6e73..53b595a753f3861c36abac8d1689ea87113246b5 100644 (file)
@@ -3,6 +3,23 @@ ERC NEWS                                                       -*- outline -*-
 Copyright (C) 2006, 2007  Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
+* Changes in ERC 5.3
+
+** New function `erc-tls' is to be used for connecting to a server via TLS.
+It requires the tls.el library.
+
+** The function `erc-ssl' will now always use ssl.el, even in the version
+of ERC that comes with Emacs.
+
+** Changes and additions to modules
+
+*** Channel tracking (erc-track.el)
+
+If erc-track-position-in-mode-line is set to nil, the tracking
+information won't be shown in the mode line, which is a change
+from the previous behavior of showing it "After all other
+information".
+
 * Changes in ERC 5.2
 
 ** M-x erc RET now starts ERC.
index bd2a4573bacf5bbc4b776d1502f82d5e3bd6d9b9..b10fafa5334771772d9ae93d47545129d25bf3e8 100644 (file)
@@ -185,7 +185,7 @@ Several are for Debian GNU/Linux in particular.
    page: eiffel-mode.el.
 
  * Go in a buffer: Go Text Protocol client:
-   <URL:http://www.glug.org/people/ttn/software/personal-elisp/standalone/>
+   <URL:http://www.gnuvola.org/software/personal-elisp/standalone/>
    A modified version is also bundled with GNU Go:
    <URL:http://www.gnu.org/software/gnugo/gnugo.html>
 
index d1651756c537c782da9bdcd57dcd842ca3c527a1..21cb6b3ffffe16c07079221d2131f6f36e930495 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
 GNU Emacs NEWS -- history of user-visible changes.
 
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
-          Free Software Foundation, Inc.
+Copyright (C) 2007 Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
-Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
+Please send Emacs bug reports to emacs-pretest-bug@gnu.org.
 If possible, use M-x report-emacs-bug.
 
-This file is about changes in Emacs version 22.
+This file is about changes in Emacs version 23.
 
-See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes
-in older Emacs versions.
+See files NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17
+for changes in older Emacs versions.
 
 You can narrow news to a specific version by calling `view-emacs-news'
 with a prefix argument or by typing C-u C-h C-n.
-\f
-* About external Lisp packages
-
-When you upgrade to Emacs 22 from a previous version, some older
-versions of external Lisp packages are known to behave badly.
-So in general, it is recommended that you upgrade to the latest
-versions of any external Lisp packages that you are using.
-
-You should also be aware that many Lisp packages have been included
-with Emacs 22 (see the extensive list below), and you should remove
-any older versions of these packages to ensure that the Emacs 22
-version is used.  You can use M-x list-load-path-shadows to find such
-older packages.
 
-Some specific packages that are known to cause problems are given
-below.  Emacs tries to warn you about these through `bad-packages-alist'.
+Temporary note:
+ +++ indicates that the appropriate manual has already been updated.
+ --- means no change in the manuals is called for.
+When you add a new item, please add it without either +++ or ---
+so we will look at it and add it to the manual.
 
-** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
-
-** cua.el, cua-mode.el: remove old versions.
 \f
-* Installation Changes in Emacs 22.2
-
-** Emacs is now licensed under the GNU GPL version 3 (or later).
-
-* Changes in Emacs 22.2
-
-** `browse-url-emacs' loads a URL into an Emacs buffer.  Handy for *.el URLs.
-
-** `bad-packages-alist' will warn about external packages that are known
-to cause problems in this version of Emacs.
-
-** The values of `dired-recursive-deletes' and `dired-recursive-copies'
-have been changed to `top'.  This means that the user is asked once,
-before deleting/copying the indicated directory recursively.
-
-** In Image mode, whenever the displayed image is wider and/or higher
-than the window, the usual keys for moving the cursor cause the image
-to be scrolled horizontally or vertically instead.
-
-** Scrollbars follow the system theme on Windows XP and later.
-Windows XP introduced themed scrollbars, but applications have to take
-special steps to use them. Emacs now has the appropriate resources linked
-in to make it use the scrollbars from the system theme.
-
-** focus-follows-mouse defaults to nil on MS Windows
-Previously this variable was incorrectly documented as having no effect
-on MS Windows, and the default was inappropriate for the majority of
-Windows installations. Users of software which modifies the behaviour of
-Windows to cause focus to follow the mouse will now need to explicitly set
-this variable.
-
-** The command gdba has been removed as gdb works now for those cases where it
-was needed.  In text command mode, if you have problems before execution has
-started, use M-x gud-gdb.
-
-* New Modes and Packages in Emacs 22.2
-
-** bibtex-style-mode helps you write BibTeX's *.bst files.
-
-** The new package css-mode.el provides a major mode for editing CSS files.
-
-** The new package vera-mode.el provides a major mode for editing Vera files.
-
-** The new package socks.el implements the SOCKS v5 protocol.
-
-** VC
-
-*** VC backends can provide completion of revision names.
-
-*** VC backends can provide extra menu entries to be added to the "Version Control" menu.
-This can be used to add menu entries for backend specific functions.
-
-*** VC has some support for Mercurial (Hg).
-
-*** VC has some support for Monotone (Mtn).
-
-*** VC has some support for Bazaar (Bzr).
-
-*** VC has some support for Git.
-
-* Lisp Changes in Emacs 22.2.
-
-** The command `repeat' will no more attempt to repeat a command bound
-to an input event.
-
-** The function invisible-p returns non-nil if the character
-   after a specified position is invisible.
-
-+++
-** inhibit-modification-hooks is bound to t while running modification hooks.
-As a happy consequence, after-change-functions and before-change-functions
-are not bound to nil any more while running an (after|before)-change-function.
-
-** New function `window-full-width-p' returns t if a window is as wide
-as its frame.
-
-** The new function `image-refresh' refreshes all images associated
-with a given image specification.
-
-** The new function `split-string-and-unquote' does (what?)
+* About external Lisp packages
 
-** The new function `combine-and-quote-strings' does (what?)
 \f
-* Installation Changes in Emacs 22.1
-
-** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
-when you run configure.  This requires Gtk+ 2.4 or newer.  This port
-provides a way to display multilingual text in menus (with some caveats).
-
-** The Emacs Lisp Reference Manual is now part of the distribution.
-
-The Emacs Lisp Reference Manual in Info format is built as part of the
-Emacs build procedure and installed together with the Emacs User
-Manual.  A menu item was added to the menu bar to make it easily
-accessible (Help->More Manuals->Emacs Lisp Reference).
-
-** The Introduction to Programming in Emacs Lisp manual is now part of
-the distribution.
-
-This manual is now part of the standard distribution and is installed,
-together with the Emacs User Manual, into the Info directory.  A menu
-item was added to the menu bar to make it easily accessible
-(Help->More Manuals->Introduction to Emacs Lisp).
-
-** Leim is now part of the Emacs distribution.
-You no longer need to download a separate tarball in order to build
-Emacs with Leim.
-
-** Support for MacOS X was added.
-See the files mac/README and mac/INSTALL for build instructions.
-
-** Mac OS 9 port now uses the Carbon API by default.  You can also
-create a non-Carbon build by specifying `NonCarbon' as a target.  See
-the files mac/README and mac/INSTALL for build instructions.
-
-** Support for a Cygwin build of Emacs was added.
-
-** Support for GNU/Linux systems on X86-64 machines was added.
-
-** Support for GNU/Linux systems on S390 machines was added.
-
-** Support for GNU/Linux systems on Tensilica Xtensa machines was added.
-
-** Support for FreeBSD/Alpha has been added.
-
-** New translations of the Emacs Tutorial are available in the
-following languages: Brasilian Portuguese, Bulgarian, Chinese (both
-with simplified and traditional characters), French, Russian, and
-Italian.  Type `C-u C-h t' to choose one of them in case your language
-setup doesn't automatically select the right one.
-
-** New translations of the Emacs reference card are available in the
-Brasilian Portuguese and Russian.  The corresponding PostScript files
-are also included.
-
-** A French translation of the `Emacs Survival Guide' is available.
-
-** Emacs now supports new configure options `--program-prefix',
-`--program-suffix' and `--program-transform-name' that affect the names of
-installed programs.
-
-** By default, Emacs now uses a setgid helper program to update game
-scores.  The directory ${localstatedir}/games/emacs is the normal
-place for game scores to be stored.  You can control this with the
-configure option `--with-game-dir'.  The specific user that Emacs uses
-to own the game scores is controlled by `--with-game-user'.  If access
-to a game user is not available, then scores will be stored separately
-in each user's home directory.
-
-** Emacs now includes support for loading image libraries on demand.
-(Currently this feature is only used on MS Windows.)  You can configure
-the supported image types and their associated dynamic libraries by
-setting the variable `image-library-alist'.
-
-** Emacs can now be built without sound support.
-
-** Emacs Lisp source files are compressed by default if `gzip' is available.
-
-** All images used in Emacs have been consolidated in etc/images and subdirs.
-See also the changes to `find-image', documented below.
+* Installation Changes in Emacs 23.1
 
-** Emacs comes with a new set of icons.
-These icons are displayed on the taskbar and/or titlebar when Emacs
-runs in a graphical environment.  Source files for these icons can be
-found in etc/images/icons.  (You can't change the icons displayed by
-Emacs by changing these files directly.  On X, the icon is compiled
-into the Emacs executable; see gnu.h in the source tree.  On MS
-Windows, see nt/icons/emacs.ico.)
+** The default X toolkit is now Gtk+, rather than Lucid.
 
-** The `emacsserver' program has been removed, replaced with Lisp code.
+** configure now checks for libgif before libungif when searching for
+a GIF library.
 
-** The `yow' program has been removed.
-Use the corresponding Emacs feature instead.
+** Support for systems without alloca has been removed.
 
-** The Emacs terminal emulation in term.el uses a different terminfo name.
-The Emacs terminal emulation in term.el now uses "eterm-color" as its
-terminfo name, since term.el now supports color.
-
-** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
-contents of buffers from a core dump and save them to files easily, should
-Emacs crash.
-
-** Building with -DENABLE_CHECKING does not automatically build with union
-types any more.  Add -DUSE_LISP_UNION_TYPE if you want union types.
-
-** When pure storage overflows while dumping, Emacs now prints how
-much pure storage it will approximately need.
+** The `emacstool' utility has been removed.
 
 \f
-* Startup Changes in Emacs 22.1
-
-** Init file changes
-If the init file ~/.emacs does not exist, Emacs will try
-~/.emacs.d/init.el or ~/.emacs.d/init.elc.  Likewise, if the shell init file
-~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh.
+* Changes in Emacs 23.1
 
-** Emacs can now be invoked in full-screen mode on a windowed display.
-When Emacs is invoked on a window system, the new command-line options
-`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
-whose width, height, or both width and height take up the entire
-screen size.  (For now, this does not work with some window managers.)
+** Emacs now supports using both X displays and ttys in one session.
+You can also use any number of different ttys.
 
-** Emacs now displays a splash screen by default even if command-line
-arguments were given.  The new command-line option --no-splash
-disables the splash screen; see also the variable
-`inhibit-splash-screen' (which is also aliased as
-`inhibit-startup-message').
+You can test for the presence of this feature in your Lisp code by
+testing for the `multi-tty' feature.
 
-** New user option `inhibit-startup-buffer-menu'.
-When loading many files, for instance with `emacs *', Emacs normally
-displays a buffer menu.  This option turns the buffer menu off.
+** Emacs comes with a new set of icons for Mac OS X.
+OS-X-style icons (an application icon and a relevant document icon)
+were contributed by Kentaro Ohkouchi.
+Source files for these icons can be found in Emacs.app/Contents/Resources.
 
-** New command line option -nbc or --no-blinking-cursor disables
-the blinking cursor on graphical terminals.
+** Built-in functions (subr) can now have an interactive specification
+that is not a prompt string.  If the `intspec' parameter of a `DEFUN'
+starts with a `(', the string is evaluated as a Lisp form.
 
-** The option --script FILE runs Emacs in batch mode and loads FILE.
-It is useful for writing Emacs Lisp shell script files, because they
-can start with this line:
+** set-file-modes is now interactive and can take the mode value in
+symbolic notation thanks to auxiliary functions.
 
-   #!/usr/bin/emacs --script
+** split-window-preferred-function specifies whether display-buffer should
+split windows vertically or horizontally.
 
-** The -f option, used from the command line to call a function,
-now reads arguments for the function interactively if it is
-an interactively callable function.
+** Emacsclient has been extended to support opening a new terminal
+frame.  Its behavior has been changed to open a new Emacs frame by
+default.  Use the -c option to get the old behavior of opening files in
+the currently selected Emacs frame.
 
-** The option --directory DIR now modifies `load-path' immediately.
-Directories are added to the front of `load-path' in the order they
-appear on the command line.  For example, with this command line:
+** The refcards are now shipped as PDF files.
 
-  emacs -batch -L .. -L /tmp --eval "(require 'foo)"
+** Emacs now supports the SVG image format through librsvg2.
 
-Emacs looks for library `foo' in the parent directory, then in /tmp, then
-in the other directories in `load-path'.  (-L is short for --directory.)
+** If you set find-file-confirm-nonexistent-file to t, then C-x C-f
+requires confirmation before opening a non-existent file.
 
-** When you specify a frame size with --geometry, the size applies to
-all frames you create.  A position specified with --geometry only
-affects the initial frame.
+** If the gpm mouse server is running and t-mouse-mode enabled, Emacs uses a
+Unix socket in a GNU/Linux console to talk to server, rather than faking events
+using the client program mev.  This C level approach provides mouse
+highlighting, and help echoing in the minibuffer.
 
-** Emacs built for MS-Windows now behaves like Emacs on X does,
-with respect to its frame position: if you don't specify a position
-(in your .emacs init file, in the Registry, or with the --geometry
-command-line option), Emacs leaves the frame position to the Windows'
-window manager.
+** The new variable next-error-recenter specifies how next-error should
+recenter the visited source file.  Its value can be a number (for example,
+0 for top line, -1 for bottom line), or nil for no recentering.
 
-** The command line option --no-windows has been changed to
---no-window-system.  The old one still works, but is deprecated.
+** The mode-line displays a `@' if the default-directory for the current buffer
+is on a remote machine, or a hyphen otherwise.
 
-** If the environment variable DISPLAY specifies an unreachable X display,
-Emacs will now startup as if invoked with the --no-window-system option.
+** The new command balance-windows-area balances windows both vertically
+and horizontally.
 
-** Emacs now reads the standard abbrevs file ~/.abbrev_defs
-automatically at startup, if it exists.  When Emacs offers to save
-modified buffers, it saves the abbrevs too if they have changed.  It
-can do this either silently or asking for confirmation first,
-according to the value of `save-abbrevs'.
+** The new command close-display-connection can be used to close a connection
+to a remote display, e.g. because the display is about to become unreachable.
 
-** New command line option -Q or --quick.
-This is like using -q --no-site-file, but in addition it also disables
-the fancy startup screen.
-
-** New command line option -D or --basic-display.
-Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
-the blinking cursor.
-
-** The default is now to use a bitmap as the icon.
-The command-line options --icon-type, -i have been replaced with
-options --no-bitmap-icon, -nbi to turn the bitmap icon off.
-
-** If the environment variable EMAIL is defined, Emacs now uses its value
-to compute the default value of `user-mail-address', in preference to
-concatenation of `user-login-name' with the name of your host machine.
+** The command shell prompts for the default directory, when it is
+called with a prefix, and the default directory is a remote file name.
+This is because some file name handlers (like ange-ftp) are not able to
+run processes remotely.
 
+** The new command `display-time-world' starts an updating time display
+using several time zones, in a buffer.
 \f
-* Incompatible Editing Changes in Emacs 22.1
-
-** You can now follow links by clicking Mouse-1 on the link.
-
-See below for more details.
-
-** When the undo information of the current command gets really large
-(beyond the value of `undo-outer-limit'), Emacs discards it and warns
-you about it.
-
-** When Emacs prompts for file names, SPC no longer completes the file name.
-This is so filenames with embedded spaces could be input without the
-need to quote the space with a C-q.  The underlying changes in the
-keymaps that are active in the minibuffer are described below under
-"New keymaps for typing file names".
-
-If you want the old behavior back, put these two key bindings to your
-~/.emacs init file:
-
-  (define-key minibuffer-local-filename-completion-map
-             " " 'minibuffer-complete-word)
-  (define-key minibuffer-local-must-match-filename-map
-             " " 'minibuffer-complete-word)
-
-** The completion commands TAB, SPC and ? in the minibuffer apply only
-to the text before point.  If there is text in the buffer after point,
-it remains unchanged.
-
-** In incremental search, C-w is changed.  M-%, C-M-w and C-M-y are special.
-
-See below under "incremental search changes".
+* Startup Changes in Emacs 23.1
 
-** M-g is now a prefix key.
-M-g g and M-g M-g run goto-line.
-M-g n and M-g M-n run next-error (like C-x `).
-M-g p and M-g M-p run previous-error.
+** New user option `initial-buffer-choice' specifies what to display
+after starting Emacs: startup screen, *scratch* buffer, visiting a
+file or directory.
 
-** C-u M-g M-g switches to the most recent previous buffer,
-and goes to the specified line in that buffer.
-
-When goto-line starts to execute, if there's a number in the buffer at
-point then it acts as the default argument for the minibuffer.
-
-** M-o now is the prefix key for setting text properties;
-M-o M-o requests refontification.
-
-** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer
-a special case.
-
-Since the default input is the current directory, this has the effect
-of specifying the current directory.  Normally that means to visit the
-directory with Dired.
-
-You can get the old behavior by typing C-x C-f M-n RET, which fetches
-the actual file name into the minibuffer.
-
-** In Dired's ! command (dired-do-shell-command), `*' and `?' now
-control substitution of the file names only when they are surrounded
-by whitespace.  This means you can now use them as shell wildcards
-too.  If you want to use just plain `*' as a wildcard, type `*""'; the
-doublequotes make no difference in the shell, but they prevent
-special treatment in `dired-do-shell-command'.
-
-** The info-search bindings on C-h C-f, C-h C-k and C-h C-i
-have been moved to C-h F, C-h K and C-h S.
-
-** `apply-macro-to-region-lines' now operates on all lines that begin
-in the region, rather than on all complete lines in the region.
-
-** line-move-ignore-invisible now defaults to t.
-
-** Adaptive filling misfeature removed.
-It no longer treats `NNN.' or `(NNN)' as a prefix.
-
-** The old bindings C-M-delete and C-M-backspace have been deleted,
-since there are situations where one or the other will shut down
-the operating system or your X server.
-
-** The register compatibility key bindings (deprecated since Emacs 19)
-have been removed:
-  C-x /   point-to-register (Use: C-x r SPC)
-  C-x j   jump-to-register  (Use: C-x r j)
-  C-x x   copy-to-register  (Use: C-x r s)
-  C-x g   insert-register   (Use: C-x r i)
+** New alias `argv' for `command-line-args-left'
+This is a convenience alias, so that one can write `(pop argv)'
+inside of --eval command line arguments in order to access
+following arguments.
 
+** The abbrev file is no longer read at startup in batch mode.
 \f
-* Editing Changes in Emacs 22.1
-
-** The max size of buffers and integers has been doubled.
-On 32bit machines, it is now 256M (i.e. 268435455).
-
-** !MEM FULL! at the start of the mode line indicates that Emacs
-cannot get any more memory for Lisp data.  This often means it could
-crash soon if you do things that use more memory.  On most systems,
-killing buffers will get out of this state.  If killing buffers does
-not make !MEM FULL! disappear, you should save your work and start
-a new Emacs.
-
-** `undo-only' does an undo which does not redo any previous undo.
-
-** Yanking text now discards certain text properties that can
-be inconvenient when you did not expect them.  The variable
-`yank-excluded-properties' specifies which ones.  Insertion
-of register contents and rectangles also discards these properties.
-
-** New command `kill-whole-line' kills an entire line at once.
-By default, it is bound to C-S-<backspace>.
-
-** M-SPC (just-one-space) when given a numeric argument N
-converts whitespace around point to N spaces.
-
-** You can now switch buffers in a cyclic order with C-x C-left
-(previous-buffer) and C-x C-right (next-buffer).  C-x left and
-C-x right can be used as well.  The functions keep a different buffer
-cycle for each frame, using the frame-local buffer list.
-
-** C-x 5 C-o displays a specified buffer in another frame
-but does not switch to that frame.  It's the multi-frame
-analogue of C-x 4 C-o.
-
-** `special-display-buffer-names' and `special-display-regexps' now
-understand two new boolean pseudo-frame-parameters `same-frame' and
-`same-window'.
-
-** New commands to operate on pairs of open and close characters:
-`insert-pair', `delete-pair', `raise-sexp'.
-
-** M-x setenv now expands environment variable references.
-
-Substrings of the form `$foo' and `${foo}' in the specified new value
-now refer to the value of environment variable foo.  To include a `$'
-in the value, use `$$'.
-
-** The default values of paragraph-start and indent-line-function have
-been changed to reflect those used in Text mode rather than those used
-in Paragraph-Indent Text mode.
-
-** The default for the paper size (variable ps-paper-type) is taken
-from the locale.
-
-** Help command changes:
-
-*** Changes in C-h bindings:
-
-C-h e displays the *Messages* buffer.
-
-C-h d runs apropos-documentation.
-
-C-h r visits the Emacs Manual in Info.
-
-C-h followed by a control character is used for displaying files
-    that do not change:
-
-C-h C-f displays the FAQ.
-C-h C-e displays the PROBLEMS file.
-
-The info-search bindings on C-h C-f, C-h C-k and C-h C-i
-have been moved to C-h F, C-h K and C-h S.
-
-C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
-- C-h c and C-h k report the actual command (after possible remapping)
-  run by the key sequence.
-- C-h w and C-h f on a command which has been remapped now report the
-  command it is remapped to, and the keys which can be used to run
-  that command.
-
-For example, if C-k is bound to kill-line, and kill-line is remapped
-to new-kill-line, these commands now report:
-- C-h c and C-h k C-k reports:
-  C-k runs the command new-kill-line
-- C-h w and C-h f kill-line reports:
-  kill-line is remapped to new-kill-line which is on C-k, <deleteline>
-- C-h w and C-h f new-kill-line reports:
-  new-kill-line is on C-k
-
-*** The apropos commands now accept a list of words to match.
-When more than one word is specified, at least two of those words must
-be present for an item to match.  Regular expression matching is still
-available.
-
-*** The new option `apropos-sort-by-scores' causes the matching items
-to be sorted according to their score.  The score for an item is a
-number calculated to indicate how well the item matches the words or
-regular expression that you entered to the apropos command.  The best
-match is listed first, and the calculated score is shown for each
-matching item.
-
-*** Help commands `describe-function' and `describe-key' now show function
-arguments in lowercase italics on displays that support it.  To change the
-default, customize face `help-argument-name' or redefine the function
-`help-default-arg-highlight'.
-
-*** C-h v and C-h f commands now include a hyperlink to the C source for
-variables and functions defined in C (if the C source is available).
-
-*** Help mode now only makes hyperlinks for faces when the face name is
-preceded or followed by the word `face'.  It no longer makes
-hyperlinks for variables without variable documentation, unless
-preceded by one of the words `variable' or `option'.  It now makes
-hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
-enclosed in single quotes and preceded by `info anchor' or `Info
-anchor' (in addition to earlier `info node' and `Info node').  In
-addition, it now makes hyperlinks to URLs as well if the URL is
-enclosed in single quotes and preceded by `URL'.
-
-*** The new command `describe-char' (C-u C-x =) pops up a buffer with
-description various information about a character, including its
-encodings and syntax, its text properties, how to input, overlays, and
-widgets at point.  You can get more information about some of them, by
-clicking on mouse-sensitive areas or moving there and pressing RET.
-
-*** The command `list-text-properties-at' has been deleted because
-C-u C-x = gives the same information and more.
-
-*** New command `display-local-help' displays any local help at point
-in the echo area.  It is bound to `C-h .'.  It normally displays the
-same string that would be displayed on mouse-over using the
-`help-echo' property, but, in certain cases, it can display a more
-keyboard oriented alternative.
-
-*** New user option `help-at-pt-display-when-idle' allows you to
-automatically show the help provided by `display-local-help' on
-point-over, after suitable idle time.  The amount of idle time is
-determined by the user option `help-at-pt-timer-delay' and defaults
-to one second.  This feature is turned off by default.
-
-** Mark command changes:
-
-*** A prefix argument is no longer required to repeat a jump to a
-previous mark if you set `set-mark-command-repeat-pop' to t.  I.e. C-u
-C-SPC C-SPC C-SPC ... cycles through the mark ring.  Use C-u C-u C-SPC
-to set the mark immediately after a jump.
-
-*** Marking commands extend the region when invoked multiple times.
+* Incompatible Editing Changes in Emacs 23.1
 
-If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h
-(mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region
-extends each time, so you can mark the next two sexps with M-C-SPC
-M-C-SPC, for example.  This feature also works for
-mark-end-of-sentence, if you bind that to a key.  It also extends the
-region when the mark is active in Transient Mark mode, regardless of
-the last command.  To start a new region with one of marking commands
-in Transient Mark mode, you can deactivate the active region with C-g,
-or set the new mark with C-SPC.
-
-*** Some commands do something special in Transient Mark mode when the
-mark is active--for instance, they limit their operation to the
-region.  Even if you don't normally use Transient Mark mode, you might
-want to get this behavior from a particular command.  There are two
-ways you can enable Transient Mark mode and activate the mark, for one
-command only.
-
-One method is to type C-SPC C-SPC; this enables Transient Mark mode
-and sets the mark at point.  The other method is to type C-u C-x C-x.
-This enables Transient Mark mode temporarily but does not alter the
-mark or the region.
-
-After these commands, Transient Mark mode remains enabled until you
-deactivate the mark.  That typically happens when you type a command
-that alters the buffer, but you can also deactivate the mark by typing
-C-g.
-
-*** Movement commands `beginning-of-buffer', `end-of-buffer',
-`beginning-of-defun', `end-of-defun' do not set the mark if the mark
-is already active in Transient Mark mode.
-
-*** M-h (mark-paragraph) now accepts a prefix arg.
-
-With positive arg, M-h marks the current and the following paragraphs;
-if the arg is negative, it marks the current and the preceding
-paragraphs.
-
-** Incremental Search changes:
-
-*** M-% typed in isearch mode invokes `query-replace' or
-`query-replace-regexp' (depending on search mode) with the current
-search string used as the string to replace.
-
-*** C-w in incremental search now grabs either a character or a word,
-making the decision in a heuristic way.  This new job is done by the
-command `isearch-yank-word-or-char'.  To restore the old behavior,
-bind C-w to `isearch-yank-word' in `isearch-mode-map'.
-
-*** C-y in incremental search now grabs the next line if point is already
-at the end of a line.
-
-*** C-M-w deletes and C-M-y grabs a character in isearch mode.
-Another method to grab a character is to enter the minibuffer by `M-e'
-and to type `C-f' at the end of the search string in the minibuffer.
-
-*** Vertical scrolling is now possible within incremental search.
-To enable this feature, customize the new user option
-`isearch-allow-scroll'.  User written commands which satisfy stringent
-constraints can be marked as "scrolling commands".  See the Emacs manual
-for details.
-
-*** Isearch no longer adds `isearch-resume' commands to the command
-history by default.  To enable this feature, customize the new
-user option `isearch-resume-in-command-history'.
-
-** Replace command changes:
-
-*** When used interactively, the commands `query-replace-regexp' and
-`replace-regexp' allow \,expr to be used in a replacement string,
-where expr is an arbitrary Lisp expression evaluated at replacement
-time.  `\#' in a replacement string now refers to the count of
-replacements already made by the replacement command.  All regular
-expression replacement commands now allow `\?' in the replacement
-string to specify a position where the replacement string can be
-edited for each replacement.  `query-replace-regexp-eval' is now
-deprecated since it offers no additional functionality.
-
-*** query-replace uses isearch lazy highlighting when the new user option
-`query-replace-lazy-highlight' is non-nil.
-
-*** The current match in query-replace is highlighted in new face
-`query-replace' which by default inherits from isearch face.
-
-*** New user option `query-replace-skip-read-only': when non-nil,
-`query-replace' and related functions simply ignore
-a match if part of it has a read-only property.
-
-** Local variables lists:
-
-*** If the local variables list contains any variable-value pairs that
-are not known to be safe, Emacs shows a prompt asking whether to apply
-the local variables list as a whole.  In earlier versions, a prompt
-was only issued for variables explicitly marked as risky (for the
-definition of risky variables, see `risky-local-variable-p').
-
-At the prompt, you can choose to save the contents of this local
-variables list to `safe-local-variable-values'.  This new customizable
-option is a list of variable-value pairs that are known to be safe.
-Variables can also be marked as safe with the existing
-`safe-local-variable' property (see `safe-local-variable-p').
-However, risky variables will not be added to
-`safe-local-variable-values' in this way.
-
-*** The variable `enable-local-variables' controls how local variable
-lists are handled.  t, the default, specifies the standard querying
-behavior.  :safe means use only safe values, and ignore the rest.
-:all means set all variables, whether or not they are safe.
-nil means ignore them all.  Anything else means always query.
-
-*** The variable `safe-local-eval-forms' specifies a list of forms that
-are ok to evaluate when they appear in an `eval' local variables
-specification.  Normally Emacs asks for confirmation before evaluating
-such a form, but if the form appears in this list, no confirmation is
-needed.
-
-*** If a function has a non-nil `safe-local-eval-function' property,
-that means it is ok to evaluate some calls to that function when it
-appears in an `eval' local variables specification.  If the property
-is t, then any form calling that function with constant arguments is
-ok.  If the property is a function or list of functions, they are called
-with the form as argument, and if any returns t, the form is ok to call.
-
-If the form is not "ok to call", that means Emacs asks for
-confirmation as before.
-
-*** In processing a local variables list, Emacs strips the prefix and
-suffix from every line before processing all the lines.
-
-*** Text properties in local variables.
-
-A file local variables list cannot specify a string with text
-properties--any specified text properties are discarded.
-
-** File operation changes:
-
-*** Unquoted `$' in file names do not signal an error any more when
-the corresponding environment variable does not exist.
-Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
-is only rarely needed.
-
-*** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
-
-Since the default input is the current directory, this has the effect
-of specifying the current directory.  Normally that means to visit the
-directory with Dired.
-
-*** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
-against its file, so you can see what changes you would be saving.
-
-*** Auto Compression mode is now enabled by default.
-
-*** If the user visits a file larger than `large-file-warning-threshold',
-Emacs asks for confirmation.
-
-*** The commands copy-file, rename-file, make-symbolic-link and
-add-name-to-file, when given a directory as the "new name" argument,
-convert it to a file name by merging in the within-directory part of
-the existing file's name.  (This is the same convention that shell
-commands cp, mv, and ln follow.)  Thus, M-x copy-file RET ~/foo RET
-/tmp RET copies ~/foo to /tmp/foo.
-
-*** require-final-newline now has two new possible values:
-
-`visit' means add a newline (as an undoable change) if it's needed
-when visiting the file.
-
-`visit-save' means add a newline (as an undoable change) if it's
-needed when visiting the file, and also add a newline if it's needed
-when saving the file.
-
-*** The new option mode-require-final-newline controls how certain
-major modes enable require-final-newline.  Any major mode that's
-designed for a kind of file that should normally end in a newline
-sets require-final-newline based on mode-require-final-newline.
-So you can customize mode-require-final-newline to control what these
-modes do.
-
-*** When you are root, and you visit a file whose modes specify
-read-only, the Emacs buffer is now read-only too.  Type C-x C-q if you
-want to make the buffer writable.  (As root, you can in fact alter the
-file.)
+\f
+* Editing Changes in Emacs 23.1
 
-*** find-file-read-only visits multiple files in read-only mode,
-when the file name contains wildcard characters.
++++
+** M-q now fills the region if the region is active and
+`transient-mark-mode' is turned on.  Otherwise, it fills the current
+paragraph.  The new command bound to M-q is `fill-paragraph-or-region'.
 
-*** find-alternate-file replaces the current file with multiple files,
-when the file name contains wildcard characters.  It now asks if you
-wish save your changes and not just offer to kill the buffer.
+** M-$ now checks spelling of the region if the region is active and
+`transient-mark-mode' is turned on.  Otherwise, it checks spelling of the
+word at point.
 
-*** When used interactively, `format-write-file' now asks for confirmation
-before overwriting an existing file, unless a prefix argument is
-supplied.  This behavior is analogous to `write-file'.
+** TAB now indents the region if the region is active and
+`transient-mark-mode' is turned on.
 
-*** The variable `auto-save-file-name-transforms' now has a third element that
-controls whether or not the function `make-auto-save-file-name' will
-attempt to construct a unique auto-save name (e.g. for remote files).
+** C-z now invokes `suspend-frame', C-x C-c now invokes
+`save-buffers-kill-terminal'.
 
-*** The new option `write-region-inhibit-fsync' disables calls to fsync
-in `write-region'.  This can be useful on laptops to avoid spinning up
-the hard drive upon each file save.  Enabling this variable may result
-in data loss, use with care.
+** New command kill-matching-buffers kills buffers whose name matches a regexp.
 
 ** Minibuffer changes:
 
-*** The completion commands TAB, SPC and ? in the minibuffer apply only
-to the text before point.  If there is text in the buffer after point,
-it remains unchanged.
-
-*** The new file-name-shadow-mode is turned ON by default, so that when
-entering a file name, any prefix which Emacs will ignore is dimmed.
-
-*** There's a new face `minibuffer-prompt'.
-Emacs adds this face to the list of text properties stored in the
-variable `minibuffer-prompt-properties', which is used to display the
-prompt string.
-
-*** Enhanced visual feedback in `*Completions*' buffer.
-
-Completions lists use faces to highlight what all completions
-have in common and where they begin to differ.
-
-The common prefix shared by all possible completions uses the face
-`completions-common-part', while the first character that isn't the
-same uses the face `completions-first-difference'.  By default,
-`completions-common-part' inherits from `default', and
-`completions-first-difference' inherits from `bold'.  The idea of
-`completions-common-part' is that you can use it to make the common
-parts less visible than normal, so that the rest of the differing
-parts is, by contrast, slightly highlighted.
-
-Above fontification is always done when listing completions is
-triggered at minibuffer.  If you want to fontify completions whose
-listing is triggered at the other normal buffer, you have to pass
-the common prefix of completions to `display-completion-list' as
-its second argument.
-
-*** File-name completion can now ignore specified directories.
-If an element of the list in `completion-ignored-extensions' ends in a
-slash `/', it indicates a subdirectory that should be ignored when
-completing file names.  Elements of `completion-ignored-extensions'
-which do not end in a slash are never considered when a completion
-candidate is a directory.
-
-*** New user option `history-delete-duplicates'.
-If set to t when adding a new history element, all previous identical
-elements are deleted from the history list.
-
-** Redisplay changes:
-
-*** The new face `mode-line-inactive' is used to display the mode line
-of non-selected windows.  The `mode-line' face is now used to display
-the mode line of the currently selected window.
-
-The new variable `mode-line-in-non-selected-windows' controls whether
-the `mode-line-inactive' face is used.
-
-*** The mode line position information now comes before the major mode.
-When the file is maintained under version control, that information
-appears between the position information and the major mode.
-
-*** You can now customize the use of window fringes.  To control this
-for all frames, use M-x fringe-mode or the Show/Hide submenu of the
-top-level Options menu, or customize the `fringe-mode' variable.  To
-control this for a specific frame, use the command M-x
-set-fringe-style.
-
-*** Angle icons in the fringes can indicate the buffer boundaries.  In
-addition, up and down arrow bitmaps in the fringe indicate which ways
-the window can be scrolled.
-
-This behavior is activated by setting the buffer-local variable
-`indicate-buffer-boundaries' to a non-nil value.  The default value of
-this variable is found in `default-indicate-buffer-boundaries'.
-
-If value is `left' or `right', both angle and arrow bitmaps are
-displayed in the left or right fringe, resp.
-
-The value can also be an alist which specifies the presence and
-position of each bitmap individually.
-
-For example, ((top . left) (t .  right)) places the top angle bitmap
-in left fringe, the bottom angle bitmap in right fringe, and both
-arrow bitmaps in right fringe.  To show just the angle bitmaps in the
-left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
-
-*** On window systems, lines which are exactly as wide as the window
-(not counting the final newline character) are no longer broken into
-two lines on the display (with just the newline on the second line).
-Instead, the newline now "overflows" into the right fringe, and the
-cursor will be displayed in the fringe when positioned on that newline.
-
-The new user option 'overflow-newline-into-fringe' can be set to nil to
-revert to the old behavior of continuing such lines.
-
-*** A window can now have individual fringe and scroll-bar settings,
-in addition to the individual display margin settings.
+*** isearch started in the minibuffer searches in the minibuffer history.
+Reverse isearch commands (C-r, C-M-r) search in previous minibuffer
+history elements, and forward isearch commands (C-s, C-M-s) search in
+next history elements.  When the reverse search reaches the first history
+element, it wraps to the last history element, and the forward search
+wraps to the first history element.  When the search is terminated, the
+history element containing the search string becomes the current.
 
-Such individual settings are now preserved when windows are split
-horizontally or vertically, a saved window configuration is restored,
-or when the frame is resized.
-
-*** When a window has display margin areas, the fringes are now
-displayed between the margins and the buffer's text area, rather than
-outside those margins.
-
-*** New face `escape-glyph' highlights control characters and escape glyphs.
-
-*** Non-breaking space and hyphens are now displayed with a special
-face, either nobreak-space or escape-glyph.  You can turn this off or
-specify a different mode by setting the variable `nobreak-char-display'.
-
-*** The parameters of automatic hscrolling can now be customized.
-The variable `hscroll-margin' determines how many columns away from
-the window edge point is allowed to get before automatic hscrolling
-will horizontally scroll the window.  The default value is 5.
-
-The variable `hscroll-step' determines how many columns automatic
-hscrolling scrolls the window when point gets too close to the
-window edge.  If its value is zero, the default, Emacs scrolls the
-window so as to center point.  If its value is an integer, it says how
-many columns to scroll.  If the value is a floating-point number, it
-gives the fraction of the window's width to scroll the window.
-
-The variable `automatic-hscrolling' was renamed to
-`auto-hscroll-mode'.  The old name is still available as an alias.
-
-*** Moving or scrolling through images (and other lines) taller than
-the window now works sensibly, by automatically adjusting the window's
-vscroll property.
-
-*** Preemptive redisplay now adapts to current load and bandwidth.
-
-To avoid preempting redisplay on fast computers, networks, and displays,
-the arrival of new input is now performed at regular intervals during
-redisplay.  The new variable `redisplay-preemption-period' specifies
-the period; the default is to check for input every 0.1 seconds.
-
-*** The %c and %l constructs are now ignored in frame-title-format.
-Due to technical limitations in how Emacs interacts with windowing
-systems, these constructs often failed to render properly, and could
-even cause Emacs to crash.
-
-*** If value of `auto-resize-tool-bars' is `grow-only', the tool bar
-will expand as needed, but not contract automatically.  To contract
-the tool bar, you must type C-l.
-
-*** New customize option `overline-margin' controls the space between
-overline and text.
-
-*** New variable `x-underline-at-descent-line' controls the relative
-position of the underline.  When set, it overrides the
-`x-use-underline-position-properties' variables.
-
-** New faces:
-
-*** `mode-line-highlight' is the standard face indicating mouse sensitive
-elements on mode-line (and header-line) like `highlight' face on text
-areas.
-
-*** `mode-line-buffer-id' is the standard face for buffer identification
-parts of the mode line.
-
-*** `shadow' face defines the appearance of the "shadowed" text, i.e.
-the text which should be less noticeable than the surrounding text.
-This can be achieved by using shades of grey in contrast with either
-black or white default foreground color.  This generic shadow face
-allows customization of the appearance of shadowed text in one place,
-so package-specific faces can inherit from it.
-
-*** `vertical-border' face is used for the vertical divider between windows.
-
-** Font-Lock (syntax highlighting) changes:
-
-*** All modes now support using M-x font-lock-mode to toggle
-fontification, even those such as Occur, Info, and comint-derived
-modes that do their own fontification in a special way.
-
-The variable `Info-fontify' is no longer applicable; to disable
-fontification in Info, remove `turn-on-font-lock' from
-`Info-mode-hook'.
-
-*** New standard font-lock face `font-lock-comment-delimiter-face'.
-
-*** New standard font-lock face `font-lock-preprocessor-face'.
-
-*** Easy to overlook single character negation can now be font-locked.
-You can use the new variable `font-lock-negation-char-face' and the face of
-the same name to customize this.  Currently the cc-modes, sh-script-mode,
-cperl-mode and make-mode support this.
-
-*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs
-features assume that an open-paren in column 0 is always outside of
-any string or comment, Font-Lock now highlights any such open-paren in
-bold-red if it is inside a string or a comment, to indicate that it
-can cause trouble.  You should rewrite the string or comment so that
-the open-paren is not in column 0.
-
-*** M-o now is the prefix key for setting text properties;
-M-o M-o requests refontification.
-
-*** The default settings for JIT stealth lock parameters are changed.
-The default value for the user option jit-lock-stealth-time is now nil
-instead of 3.  This setting of jit-lock-stealth-time disables stealth
-fontification: on today's machines, it may be a bug in font lock
-patterns if fontification otherwise noticeably degrades interactivity.
-If you find movement in infrequently visited buffers sluggish (and the
-major mode maintainer has no better idea), customizing
-jit-lock-stealth-time to a non-nil value will let Emacs fontify
-buffers in the background when it considers the system to be idle.
-jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to
-cause less load than the old defaults.
-
-*** jit-lock can now be delayed with `jit-lock-defer-time'.
-
-If this variable is non-nil, its value should be the amount of Emacs
-idle time in seconds to wait before starting fontification.  For
-example, if you set `jit-lock-defer-time' to 0.25, fontification will
-only happen after 0.25s of idle time.
-
-*** contextual refontification is now separate from stealth fontification.
-
-jit-lock-defer-contextually is renamed jit-lock-contextually and
-jit-lock-context-time determines the delay after which contextual
-refontification takes place.
-
-*** lazy-lock is considered obsolete.
-
-The `lazy-lock' package is superseded by `jit-lock' and is considered
-obsolete.  `jit-lock' is activated by default; if you wish to continue
-using `lazy-lock', activate it in your ~/.emacs like this:
-  (setq font-lock-support-mode 'lazy-lock-mode)
-
-If you invoke `lazy-lock-mode' directly rather than through
-`font-lock-support-mode', it now issues a warning:
-  "Use font-lock-support-mode rather than calling lazy-lock-mode"
-
-** Menu support:
-
-*** A menu item "Show/Hide" was added to the top-level menu "Options".
-This menu allows you to turn various display features on and off (such
-as the fringes, the tool bar, the speedbar, and the menu bar itself).
-You can also move the vertical scroll bar to either side here or turn
-it off completely.  There is also a menu-item to toggle displaying of
-current date and time, current line and column number in the mode-line.
-
-*** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
-
-*** The menu item "Open File..." has been split into two items, "New File..."
-and "Open File...".  "Open File..." now opens only existing files.  This is
-to support existing GUI file selection dialogs better.
-
-*** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be
-disabled by customizing the variable `use-file-dialog'.
-
-*** The pop up menus for Lucid now stay up if you do a fast click and can
-be navigated with the arrow keys (like Gtk+, Mac and W32).
-
-*** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys.
-Pressing F10 shows the first menu in the menu bar.  Navigation is done with
-the arrow keys, select with the return key and cancel with the escape keys.
-
-*** The Lucid menus can display multilingual text in your locale.  You have
-to explicitly specify a fontSet resource for this to work, for example
-`-xrm "Emacs*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
-
-*** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing
-ESC, like they do for Gtk+, Mac and W32.
-
-*** For the Gtk+ version, you can make Emacs use the old file dialog
-by setting the variable `x-gtk-use-old-file-dialog' to t.  Default is to use
-the new dialog.
+\f
+* New Modes and Packages in Emacs 23.1
 
-*** You can exit dialog windows and menus by typing C-g.
+** The package doc-view.el has been added.  It supports viewing of PDF,
+PostScript and DVI documents inside an Emacs buffer by converting the
+document to a set of PNG images first.  One can also search for a
+regular expression in the document.  The commentary of the file explains
+its usage.
 
-** Buffer Menu changes:
+** A new game called `bubbles' has been added.
 
-*** The new options `buffers-menu-show-directories' and
-`buffers-menu-show-status' let you control how buffers are displayed
-in the menu dropped down when you click "Buffers" from the menu bar.
+** minibuffer-indicate-depth-mode shows the minibuffer depth in the prompt.
 
-`buffers-menu-show-directories' controls whether the menu displays
-leading directories as part of the file name visited by the buffer.
-If its value is `unless-uniquify', the default, directories are
-shown unless uniquify-buffer-name-style' is non-nil.  The value of nil
-and t turn the display of directories off and on, respectively.
+\f
+* Changes in Specialized Modes and Packages in Emacs 23.1
 
-`buffers-menu-show-status' controls whether the Buffers menu includes
-the modified and read-only status of the buffers.  By default it is
-t, and the status is shown.
+** diff-fine-highlight highlights char-level details of changes in a diff hunk.
+** archive-mode has basic support to browse Rar archives.
+** talk.el has been extended for multiple tty support.
 
-Setting these variables directly does not take effect until next time
-the Buffers menu is regenerated.
+** compilation-auto-jump-to-first-error tells `compile' to jump to
+the first error encountered during compilations.
 
-*** New command `Buffer-menu-toggle-files-only' toggles display of file
-buffers only in the Buffer Menu.  It is bound to T in Buffer Menu
-mode.
+** In the `copyright' package, you can specify your copyright holders's names.
+Only copyright lines with holders matching copyright-names-regexp will be
+considered for update.
 
-*** `buffer-menu' and `list-buffers' now list buffers whose names begin
-with a space, when those buffers are visiting files.  Normally buffers
-whose names begin with space are omitted.
+** eldoc highlights the function argument under point
+with the face `eldoc-highlight-function-argument'.
 
-** Mouse changes:
+** VC
+*** Clicking on the VC mode-line entry now pops the VC menu.
 
-*** You can now follow links by clicking Mouse-1 on the link.
+*** The VC mode-line entry now has a tooltip that explains the VC file status.
 
-Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
-click to follow a link, whereas most other applications use a Mouse-1
-click for both purposes, depending on whether you click outside or
-inside a link.  Now the behavior of a Mouse-1 click has been changed
-to match this context-sensitive dual behavior.  (If you prefer the old
-behavior, set the user option `mouse-1-click-follows-link' to nil.)
+*** VC now supports applying VC operations to a set of files at a time.
 
-Depending on the current mode, a Mouse-2 click in Emacs can do much
-more than just follow a link, so the new Mouse-1 behavior is only
-activated for modes which explicitly mark a clickable text as a "link"
-(see the new function `mouse-on-link-p' for details).  The Lisp
-packages that are included in release 22.1 have been adapted to do
-this, but external packages may not yet support this.  However, there
-is no risk in using such packages, as the worst thing that could
-happen is that you get the original Mouse-1 behavior when you click
-on a link, which typically means that you set point where you click.
+This enables VC to work much more effectively with changeset-oriented
+version-control systems such as Subversion, GNU Arch, Mercurial, and
+Bzr. VC will now pass a multiple-file commit to these systems
+as a single changeset.
 
-If you want to get the original Mouse-1 action also inside a link, you
-just need to press the Mouse-1 button a little longer than a normal
-click (i.e. press and hold the Mouse-1 button for half a second before
-you release it).
+** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.
 
-Dragging the Mouse-1 inside a link still performs the original
-drag-mouse-1 action, typically copy the text.
+** The appearance of superscript and subscript in TeX is more customizable.
+See the documentation of the variables: tex-fontify-script,
+tex-font-script-display, tex-suscript-height-ratio, and
+tex-suscript-height-minimum.
 
-You can customize the new Mouse-1 behavior via the new user options
-`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
+** BibTeX mode:
 
-*** If you set the new variable `mouse-autoselect-window' to a non-nil
-value, windows are automatically selected as you move the mouse from
-one Emacs window to another, even within a frame.  A minibuffer window
-can be selected only when it is active.
+*** New `bibtex-entry-format' options `whitespace', `braces', and
+`string', disabled by default.
 
-*** On X, when the window manager requires that you click on a frame to
-select it (give it focus), the selected window and cursor position
-normally changes according to the mouse click position.  If you set
-the variable x-mouse-click-focus-ignore-position to t, the selected
-window and cursor position do not change when you click on a frame
-to give it focus.
+*** New variable `bibtex-cite-matcher-alist' contains rules to
+identify cited keys in BibTeX entries, used by `bibtex-find-crossref.
 
-*** Emacs normally highlights mouse sensitive text whenever the mouse
-is over the text.  By setting the new variable `mouse-highlight', you
-can optionally enable mouse highlighting only after you move the
-mouse, so that highlighting disappears when you press a key.  You can
-also disable mouse highlighting.
+*** Command `bibtex-url' now allows multiple URLs per entry.
 
-*** You can now customize if selecting a region by dragging the mouse
-shall not copy the selected text to the kill-ring by setting the new
-variable mouse-drag-copy-region to nil.
++++
+** Tramp
 
-*** Under X, mouse-wheel-mode is turned on by default.
+*** New connection methods.
+The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have
+been introduced.  There are also new so-called gateway methods
+"tunnel" and "socks".
 
-*** Emacs ignores mouse-2 clicks while the mouse wheel is being moved.
+*** Multihop syntax has been removed.
+The pseudo-method "multi" has been removed.  Instead of, multi hops
+can be specified by the new variable `tramp-default-proxies-alist'.
 
-People tend to push the mouse wheel (which counts as a mouse-2 click)
-unintentionally while turning the wheel, so these clicks are now
-ignored.  You can customize this with the mouse-wheel-click-event and
-mouse-wheel-inhibit-click-time variables.
+*** More default settings.
+Default values can be set via the variables `tramp-default-user',
+`tramp-default-user-alist' and `tramp-default-host'.
 
-*** mouse-wheels can now scroll a specific fraction of the window
-(rather than a fixed number of lines) and the scrolling is `progressive'.
+*** Connection information is cached.
+In order to reduce connection setup, information about used
+connections are kept persistent in a file.  The name of this file is
+defined in the variable `tramp-persistency-file-name'.
 
-** Multilingual Environment (Mule) changes:
+*** Control of remote processes.
+Running processes on a remote host can be controlled by settings in
+`tramp-remote-path' and `tramp-remote-process-environment'.
 
-*** You can disable character translation for a file using the -*-
-construct.  Include `enable-character-translation: nil' inside the
--*-...-*- to disable any character translation that may happen by
-various global and per-coding-system translation tables.  You can also
-specify it in a local variable list at the end of the file.  For
-shortcut, instead of using this long variable name, you can append the
-character "!" at the end of coding-system name specified in -*-
-construct or in a local variable list.  For example, if a file has the
-following header, it is decoded by the coding system `iso-latin-1'
-without any character translation:
-;; -*- coding: iso-latin-1!; -*-
+*** Success of remote copy is checked.
+When the variable `file-precious-flag' is set, the success of a remote
+file copy is checked via the file's checksum.
 
-*** Language environment and various default coding systems are setup
-more correctly according to the current locale name.  If the locale
-name doesn't specify a charset, the default is what glibc defines.
-This change can result in using the different coding systems as
-default in some locale (e.g. vi_VN).
+** Miscellaneous programming mode changes
 
-*** The keyboard-coding-system is now automatically set based on your
-current locale settings if you are not using a window system.  This
-can mean that the META key doesn't work but generates non-ASCII
-characters instead, depending on how the terminal (or terminal
-emulator) works.  Use `set-keyboard-coding-system' (or customize
-keyboard-coding-system) if you prefer META to work (the old default)
-or if the locale doesn't describe the character set actually generated
-by the keyboard.  See Info node `Unibyte Mode'.
+*** The file etc/emacs.py now supports both Python 2 and 3, meaning
+that either version can be used as inferior Python by python.el.
 
-*** The new command `set-file-name-coding-system' (C-x RET F) sets
-coding system for encoding and decoding file names.  A new menu item
-(Options->Mule->Set Coding Systems->For File Name) invokes this
-command.
+*** The variable `fortran-line-length' can change the fixed-form line-length.
 
-*** The new command `revert-buffer-with-coding-system' (C-x RET r)
-revisits the current file using a coding system that you specify.
+** Miscellaneous
 
-*** New command `recode-region' decodes the region again by a specified
-coding system.
+*** comint-mode uses `start-file-process' now (see Lisp Changes).
+If `default-directory' is a remote file name, subprocesses are started
+on the corresponding remote system.
 
-*** The new command `recode-file-name' changes the encoding of the name
-of a file.
+*** C-x C-q in dired-mode now runs the command wdired-change-to-wdired-mode,
+and C-x C-q in wdired-mode exits it with asking a question about
+saving changes.
 
-*** New command `ucs-insert' inserts a character specified by its
-unicode.
+*** The new command `eshell/info' runs info in an eshell buffer.
 
-*** New command quail-show-key shows what key (or key sequence) to type
-in the current input method to input a character at point.
+\f
+* Changes in Emacs 23.1 on non-free operating systems
 
-*** Limited support for character `unification' has been added.
-Emacs now knows how to translate between different representations of
-the same characters in various Emacs charsets according to standard
-Unicode mappings.  This applies mainly to characters in the ISO 8859
-sets plus some other 8-bit sets, but can be extended.  For instance,
-translation works amongst the Emacs ...-iso8859-... charsets and the
-mule-unicode-... ones.
+---
+** IPv6 is supported on MS-Windows.
+Emacs now supports IPv6 on Windows XP and later, and earlier versions
+of Windows with third party IPv6 stacks installed. Previously IPv6 was
+supported on other platforms, but not on Windows due to using the winsock
+1.1 header file, even though Emacs was linking to the winsock 2 library.
 
-By default this translation happens automatically on encoding.
-Self-inserting characters are translated to make the input conformant
-with the encoding of the buffer in which it's being used, where
-possible.
+\f
+* Incompatible Lisp Changes in Emacs 23.1
 
-You can force a more complete unification with the user option
-unify-8859-on-decoding-mode.  That maps all the Latin-N character sets
-into Unicode characters (from the latin-iso8859-1 and
-mule-unicode-0100-24ff charsets) on decoding.  Note that this mode
-will often effectively clobber data with an iso-2022 encoding.
++++
+** The function `dired-call-process' has been removed.
 
-*** New language environments (set up automatically according to the
-locale): Belarusian, Bulgarian, Chinese-EUC-TW, Croatian, Esperanto,
-French, Georgian, Italian, Latin-7, Latvian, Lithuanian, Malayalam,
-Russian, Russian, Slovenian, Swedish, Tajik, Tamil, UTF-8,Ukrainian,
-Welsh,Latin-6, Windows-1255.
+\f
+* Lisp Changes in Emacs 23.1
 
-*** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
-belarusian, bulgarian-bds, bulgarian-phonetic, chinese-sisheng (for
-Chinese Pinyin characters), croatian, dutch, georgian, latvian-keyboard,
-lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345,
-russian-computer, sgml, slovenian, tamil-inscript, ukrainian-computer,
-ucs, vietnamese-telex, welsh.
+** `frame-inherited-parameters' lets new frames inherit parameters from
+the selected frame.
+** New keymap `input-decode-map' overrides like key-translation-map, but
+applies before function-key-map.  Also it is terminal-local contrary to
+key-translation-map.  Terminal-specific key-sequences are generally added to
+this map rather than to function-key-map now.
 
-*** There is support for decoding Greek and Cyrillic characters into
-either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
-when possible.  The latter are more space-efficient.
-  This is controlled by user option utf-fragment-on-decoding.
+** Changes related to multiple tty support.
 
-*** Improved Thai support.  A new minor mode `thai-word-mode' (which is
-automatically activated if you select Thai as a language
-environment) changes key bindings of most word-oriented commands to
-versions which recognize Thai words.  Affected commands are
-    M-f     (forward-word)
-    M-b     (backward-word)
-    M-d     (kill-word)
-    M-DEL   (backward-kill-word)
-    M-t     (transpose-words)
-    M-q     (fill-paragraph)
+*** $TERM is now set to `dumb' for subprocesses.  If you want to know the
+$TERM inherited by Emacs you will have to look inside initial-environment.
 
-*** Indian support has been updated.
-The in-is13194 coding system is now Unicode-based.  CDAC fonts are
-assumed.  There is a framework for supporting various Indian scripts,
-but currently only Devanagari, Malayalam and Tamil are supported.
+*** $DISPLAY is now dynamically inherited from the frame's `display'.
 
-*** The utf-8/16 coding systems have been enhanced.
-By default, untranslatable utf-8 sequences are simply composed into
-single quasi-characters.  User option `utf-translate-cjk-mode' (it is
-turned on by default) arranges to translate many utf-8 CJK character
-sequences into real Emacs characters in a similar way to the Mule-UCS
-system.  As this loads a fairly big data on demand, people who are not
-interested in CJK characters may want to customize it to nil.
-You can augment/amend the CJK translation via hash tables
-`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'.  The utf-8
-coding system now also encodes characters from most of Emacs's
-one-dimensional internal charsets, specifically the ISO-8859 ones.
-The utf-16 coding system is affected similarly.
+*** The `window-system' variable has been made frame-local. The new
+`initial-window-system' variable contains the `window-system' value
+for the first frame.
 
-*** A UTF-7 coding system is available in the library `utf-7'.
+*** You can specify a terminal device (`tty' parameter) and a terminal
+type (`tty-type' parameter) to `make-terminal-frame'.
 
-*** A new coding system `euc-tw' has been added for traditional Chinese
-in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
-Big 5 is then converted to CNS.
+*** The new function `make-frame-on-tty' allows you to create a new
+frame on another tty device interactively.
 
-*** Many new coding systems are available in the `code-pages' library.
-These include complete versions of most of those in codepage.el, based
-on Unicode mappings.  `codepage-setup' is now obsolete and is used
-only in the MS-DOS port of Emacs.  All coding systems defined in
-`code-pages' are auto-loaded.
+*** The function `make-frame-on-display' now works during a tty
+session, and `make-frame-on-tty' works during a graphical session.
 
-*** New variable `utf-translate-cjk-unicode-range' controls which
-Unicode characters to translate in `utf-translate-cjk-mode'.
+*** New functions: `delete-tty', `suspend-tty', `resume-tty'.
 
-*** iso-10646-1 (`Unicode') fonts can be used to display any range of
-characters encodable by the utf-8 coding system.  Just specify the
-fontset appropriately.
+*** A new data type for terminals with functions: `get-device-terminal',
+`terminal-parameters', `terminal-parameter', `set-terminal-parameter'.
 
-** Customize changes:
+*** New hooks: `suspend-tty-functions' and `resume-tty-functions'
+are called after a tty frame has been suspended or resumed,
+respectively.  The functions are called with the terminal id of the frame
+being suspended/resumed as a parameter.
 
-*** Custom themes are collections of customize options.  Create a
-custom theme with M-x customize-create-theme.  Use M-x load-theme to
-load and enable a theme, and M-x disable-theme to disable it.  Use M-x
-enable-theme to enable a disabled theme.
+*** New function: `environment'.
 
-*** The commands M-x customize-face and M-x customize-face-other-window
-now look at the character after point.  If a face or faces are
-specified for that character, the commands by default customize those
-faces.
+*** New variable: `local-function-key-map'.
+This in addition to the global function-key-map variable that
+already existed.  The global variable is not used directly any more;
+instead, the local-function-key-map is initialized so as to inherit from
+function-key-map.
 
-*** The face-customization widget has been reworked to be less confusing.
-In particular, when you enable a face attribute using the corresponding
-check-box, there's no longer a redundant `*' option in value selection
-for that attribute; the values you can choose are only those which make
-sense for the attribute.  When an attribute is de-selected by unchecking
-its check-box, then the (now ignored, but still present temporarily in
-case you re-select the attribute) value is hidden.
+*** `initial-environment' holds the environment inherited from Emacs's parent.
 
-*** When you set or reset a variable's value in a Customize buffer,
-the previous value becomes the "backup value" of the variable.
-You can go back to that backup value by selecting "Use Backup Value"
-under the "[State]" button.
+*** The `keyboard-translate-table' variable and the terminal and
+keyboard coding systems have been made terminal-local.
 
-** Dired mode:
+*** In addition to the global function-key-map, Emacs has terminal-local
+local-function-key-map variables, and uses them instead of the
+global keymaps to set up translations and function key sequences
+relevant to a specific terminal device.
 
-*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
-control substitution of the file names only when they are surrounded
-by whitespace.  This means you can now use them as shell wildcards
-too.  If you want to use just plain `*' as a wildcard, type `*""'; the
-double quotes make no difference in the shell, but they prevent
-special treatment in `dired-do-shell-command'.
 
-*** The Dired command `dired-goto-file' is now bound to j, not M-g.
-This is to avoid hiding the global key binding of M-g.
+** You can now also pass the value of the `invisible' property to invisible-p
+to check whether it would cause the text to be invisible.  Convenient when
+checking invisibility of text which has no buffer position
+(e.g. in before/after-strings).
 
-*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
-dired-ignored, dired-directory, dired-symlink, dired-warning
-introduced for Dired mode instead of font-lock faces.
+** Non-breaking space now acts as whitespace.
 
-*** New Dired command `dired-compare-directories' marks files
-with different file attributes in two dired buffers.
++++
+** In `condition-case', a handler can specify "let the debugger run first".
 
-*** New Dired command `dired-do-touch' (bound to T) changes timestamps
-of marked files with the value entered in the minibuffer.
+You do this by writing `debug' in the list of conditions to be handled,
+like this:
 
-*** In Dired, the w command now stores the current line's file name
-into the kill ring.  With a zero prefix arg, it stores the absolute file name.
+    (condition-case nil
+       (foo bar)
+      ((debug error) nil))
 
-*** In Dired-x, Omitting files is now a minor mode, dired-omit-mode.
+** The `require-match' argument to `completing-read' accepts a new value
+`confirm-only'.
 
-The mode toggling command is bound to M-o.  A new command
-dired-mark-omitted, bound to * O, marks omitted files.  The variable
-dired-omit-files-p is obsoleted, use the mode toggling function
-instead.
++++
+** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly.
 
-*** The variables dired-free-space-program and dired-free-space-args
-have been renamed to directory-free-space-program and
-directory-free-space-args, and they now apply whenever Emacs puts a
-directory listing into a buffer.
+** New function `window-full-width-p' returns t if a window is as wide
+as its frame.
 
-** Comint changes:
+** The new function `split-string-and-unquote' does (what?)
 
-*** The new INSIDE_EMACS environment variable is set to "t" in subshells
-running inside Emacs.  This supersedes the EMACS environment variable,
-which will be removed in a future Emacs release.  Programs that need
-to know whether they are started inside Emacs should check INSIDE_EMACS
-instead of EMACS.
+** The new function `combine-and-quote-strings' does (what?)
 
-*** The comint prompt can now be made read-only, using the new user
-option `comint-prompt-read-only'.  This is not enabled by default,
-except in IELM buffers.  The read-only status of IELM prompts can be
-controlled with the new user option `ielm-prompt-read-only', which
-overrides `comint-prompt-read-only'.
+** The new function `image-refresh' refreshes all images associated
+with a given image specification.
 
-The new commands `comint-kill-whole-line' and `comint-kill-region'
-support editing comint buffers with read-only prompts.
++++
+** New variable `user-emacs-directory'.
+Use this instead of "~/.emacs.d".
 
-`comint-kill-whole-line' is like `kill-whole-line', but ignores both
-read-only and field properties.  Hence, it always kill entire
-lines, including any prompts.
++++
+** The new function `start-file-process is similar to `start-process',
+but obeys file handlers.  The file handler is chosen based on
+`default-directory'.  The functions `start-file-process-shell-command'
+and `process-file-shell-command' are also new; they call internally
+`start-file-process and `process-file', respectively.
 
-`comint-kill-region' is like `kill-region', except that it ignores
-read-only properties, if it is safe to do so.  This means that if any
-part of a prompt is deleted, then the entire prompt must be deleted
-and that all prompts must stay at the beginning of a line.  If this is
-not the case, then `comint-kill-region' behaves just like
-`kill-region' if read-only properties are involved: it copies the text
-to the kill-ring, but does not delete it.
-
-*** The new command `comint-insert-previous-argument' in comint-derived
-modes (shell-mode, etc.) inserts arguments from previous command lines,
-like bash's `ESC .' binding.  It is bound by default to `C-c .', but
-otherwise behaves quite similarly to the bash version.
-
-*** `comint-use-prompt-regexp-instead-of-fields' has been renamed
-`comint-use-prompt-regexp'.  The old name has been kept as an alias,
-but declared obsolete.
-
-** M-x Compile changes:
-
-*** M-x compile has become more robust and reliable
-
-Quite a few more kinds of messages are recognized.  Messages that are
-recognized as warnings or informational come in orange or green, instead of
-red.  Informational messages are by default skipped with `next-error'
-(controlled by `compilation-skip-threshold').
-
-Location data is collected on the fly as the *compilation* buffer changes.
-This means you could modify messages to make them point to different files.
-This also means you can not go to locations of messages you may have deleted.
-
-The variable `compilation-error-regexp-alist' has now become customizable.  If
-you had added your own regexps to this, you'll probably need to include a
-leading `^', otherwise they'll match anywhere on a line.  There is now also a
-`compilation-mode-font-lock-keywords' and it nicely handles all the checks
-that configure outputs and -o options so you see at a glance where you are.
-
-The new file etc/compilation.txt gives examples of each type of message.
-
-*** New user option `compilation-environment'.
-This option allows you to specify environment variables for inferior
-compilation processes without affecting the environment that all
-subprocesses inherit.
-
-*** New user option `compilation-disable-input'.
-If this is non-nil, send end-of-file as compilation process input.
-
-*** New options `next-error-highlight' and `next-error-highlight-no-select'
-specify the method of highlighting of the corresponding source line
-in new face `next-error'.
-
-*** A new minor mode `next-error-follow-minor-mode' can be used in
-compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
-modes that can use `next-error').  In this mode, cursor motion in the
-buffer causes automatic display in another window of the corresponding
-matches, compilation errors, etc.  This minor mode can be toggled with
-C-c C-f.
-
-*** When the left fringe is displayed, an arrow points to current message in
-the compilation buffer.
-
-*** The new variable `compilation-context-lines' controls lines of leading
-context before the current message.  If nil and the left fringe is displayed,
-it doesn't scroll the compilation output window.  If there is no left fringe,
-no arrow is displayed and a value of nil means display the message at the top
-of the window.
-
-** Occur mode changes:
-
-*** The new command `multi-occur' is just like `occur', except it can
-search multiple buffers.  There is also a new command
-`multi-occur-in-matching-buffers' which allows you to specify the
-buffers to search by their filenames or buffer names.  Internally,
-Occur mode has been rewritten, and now uses font-lock, among other
-changes.
-
-*** You can now use next-error (C-x `) and previous-error to advance to
-the next/previous matching line found by M-x occur.
-
-*** In the *Occur* buffer, `o' switches to it in another window, and
-C-o displays the current line's occurrence in another window without
-switching to it.
-
-** Grep changes:
-
-*** Grep has been decoupled from compilation mode setup.
-
-There's a new separate package grep.el, with its own submenu and
-customization group.
-
-*** `grep-find' is now also available under the name `find-grep' where
-people knowing `find-grep-dired' would probably expect it.
-
-*** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are
-more user-friendly versions of `grep' and `grep-find', which prompt
-separately for the regular expression to match, the files to search,
-and the base directory for the search.  Case sensitivity of the
-search is controlled by the current value of `case-fold-search'.
-
-These commands build the shell commands based on the new variables
-`grep-template' (lgrep) and `grep-find-template' (rgrep).
-
-The files to search can use aliases defined in `grep-files-aliases'.
-
-Subdirectories listed in `grep-find-ignored-directories' such as those
-typically used by various version control systems, like CVS and arch,
-are automatically skipped by `rgrep'.
-
-*** The grep commands provide highlighting support.
-
-Hits are fontified in green, and hits in binary files in orange.  Grep buffers
-can be saved and automatically revisited.
-
-*** New option `grep-highlight-matches' highlights matches in *grep*
-buffer.  It uses a special feature of some grep programs which accept
---color option to output markers around matches.  When going to the next
-match with `next-error' the exact match is highlighted in the source
-buffer.  Otherwise, if `grep-highlight-matches' is nil, the whole
-source line is highlighted.
-
-*** New key bindings in grep output window:
-SPC and DEL scrolls window up and down.  C-n and C-p moves to next and
-previous match in the grep window.  RET jumps to the source line of
-the current match.  `n' and `p' shows next and previous match in
-other window, but does not switch buffer.  `{' and `}' jumps to the
-previous or next file in the grep output.  TAB also jumps to the next
-file.
-
-*** M-x grep now tries to avoid appending `/dev/null' to the command line
-by using GNU grep `-H' option instead.  M-x grep automatically
-detects whether this is possible or not the first time it is invoked.
-When `-H' is used, the grep command line supplied by the user is passed
-unchanged to the system to execute, which allows more complicated
-command lines to be used than was possible before.
-
-*** The new variables `grep-window-height' and `grep-scroll-output' override
-the corresponding compilation mode settings, for grep commands only.
-
-** Cursor display changes:
-
-*** Emacs can produce an underscore-like (horizontal bar) cursor.
-The underscore cursor is set by putting `(cursor-type . hbar)' in
-default-frame-alist.  It supports variable heights, like the `bar'
-cursor does.
-
-*** The variable `cursor-in-non-selected-windows' can now be set to any
-of the recognized cursor types.
-
-*** Display of hollow cursors now obeys the buffer-local value (if any)
-of `cursor-in-non-selected-windows' in the buffer that the cursor
-appears in.
-
-*** On text terminals, the variable `visible-cursor' controls whether Emacs
-uses the "very visible" cursor (the default) or the normal cursor.
-
-*** The X resource cursorBlink can be used to turn off cursor blinking.
-
-*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
-now controlled by the variable `blink-cursor-alist'.
-
-** X Windows Support:
-
-*** Emacs now supports drag and drop for X.  Dropping a file on a window
-opens it, dropping text inserts the text.  Dropping a file on a dired
-buffer copies or moves the file to that directory.
-
-*** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
-The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
-and `x-super-keysym' can be used to choose which keysyms Emacs should
-use for the modifiers.  For example, the following two lines swap
-Meta and Alt:
-    (setq x-alt-keysym 'meta)
-    (setq x-meta-keysym 'alt)
-
-*** The X resource useXIM can be used to turn off use of XIM, which can
-speed up Emacs with slow networking to the X server.
-
-If the configure option `--without-xim' was used to turn off use of
-XIM by default, the X resource useXIM can be used to turn it on.
-
-*** The new variable `x-select-request-type' controls how Emacs
-requests X selection.  The default value is nil, which means that
-Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
-and use the more appropriately result.
-
-*** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
-On the other hand, the size of the thumb does not represent the actual
-amount of text shown any more (only a crude approximation of it).
-
-** Xterm support:
-
-*** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks
-on the mode line, header line and display margin, when run in an xterm.
-
-*** Improved key bindings support when running in an xterm.
-When Emacs is running in an xterm more key bindings are available.
-The following should work:
-{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
-These key bindings work on xterm from X.org 6.8 (and later versions),
-they might not work on some older versions of xterm, or on some
-proprietary versions.
-The various keys generated by xterm when the "modifyOtherKeys"
-resource is set are also supported.
-
-** Character terminal color support changes:
-
-*** The new command-line option --color=MODE lets you specify a standard
-mode for a tty color support.  It is meant to be used on character
-terminals whose capabilities are not set correctly in the terminal
-database, or with terminal emulators which support colors, but don't
-set the TERM environment variable to a name of a color-capable
-terminal.  "emacs --color" uses the same color commands as GNU `ls'
-when invoked with "ls --color", so if your terminal can support colors
-in "ls --color", it will support "emacs --color" as well.  See the
-user manual for the possible values of the MODE parameter.
-
-*** Emacs now supports several character terminals which provide more
-than 8 colors.  For example, for `xterm', 16-color, 88-color, and
-256-color modes are supported.  Emacs automatically notes at startup
-the extended number of colors, and defines the appropriate entries for
-all of these colors.
-
-*** Emacs now uses the full range of available colors for the default
-faces when running on a color terminal, including 16-, 88-, and
-256-color xterms.  This means that when you run "emacs -nw" on an
-88-color or 256-color xterm, you will see essentially the same face
-colors as on X.
-
-*** There's a new support for colors on `rxvt' terminal emulator.
-
-** ebnf2ps changes:
-
-*** New option `ebnf-arrow-extra-width' which specify extra width for arrow
-shape drawing.
-The extra width is used to avoid that the arrowhead and the terminal border
-overlap.  It depends on `ebnf-arrow-shape' and `ebnf-line-width'.
-
-*** New option `ebnf-arrow-scale' which specify the arrow scale.
-Values lower than 1.0, shrink the arrow.
-Values greater than 1.0, expand the arrow.
-\f
-* New Modes and Packages in Emacs 22.1
-
-** CUA mode is now part of the Emacs distribution.
-
-The new cua package provides CUA-like keybindings using C-x for
-cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo.
-With cua, the region can be set and extended using shifted movement
-keys (like pc-selection-mode) and typed text replaces the active
-region (like delete-selection-mode).  Do not enable these modes with
-cua-mode.  Customize the variable `cua-mode' to enable cua.
-
-The cua-selection-mode enables the CUA keybindings for the region but
-does not change the bindings for C-z/C-x/C-c/C-v. It can be used as a
-replacement for pc-selection-mode.
-
-In addition, cua provides unified rectangle support with visible
-rectangle highlighting: Use C-return to start a rectangle, extend it
-using the movement commands (or mouse-3), and cut or copy it using C-x
-or C-c (using C-w and M-w also works).
-
-Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
-fill it with blanks or another character, use M-u or M-l to upcase or
-downcase the rectangle, use M-i to increment the numbers in the
-rectangle, use M-n to fill the rectangle with a numeric sequence (such
-as 10 20 30...), use M-r to replace a regexp in the rectangle, and use
-M-' or M-/ to restrict command on the rectangle to a subset of the
-rows.  See the commentary in cua-base.el for more rectangle commands.
-
-Cua also provides unified support for registers:  Use a numeric
-prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and
-C-v to cut or copy into register 0-9, or paste from register 0-9.
-
-The last text deleted (not killed) is automatically stored in
-register 0.  This includes text deleted by typing text.
-
-Finally, cua provides a global mark which is set using S-C-space.
-When the global mark is active, any text which is cut or copied is
-automatically inserted at the global mark position.  See the
-commentary in cua-base.el for more global mark related commands.
-
-The features of cua also works with the standard Emacs bindings for
-kill, copy, yank, and undo.  If you want to use cua mode, but don't
-want the C-x, C-c, C-v, and C-z bindings, you can customize the
-`cua-enable-cua-keys' variable.
-
-Note: This version of cua mode is not backwards compatible with older
-versions of cua.el and cua-mode.el.  To ensure proper operation, you
-must remove older versions of cua.el or cua-mode.el as well as the
-loading and customization of those packages from the .emacs file.
-
-** Tramp is now part of the distribution.
-
-This package is similar to Ange-FTP: it allows you to edit remote
-files.  But whereas Ange-FTP uses FTP to access the remote host,
-Tramp uses a shell connection.  The shell connection is always used
-for filename completion and directory listings and suchlike, but for
-the actual file transfer, you can choose between the so-called
-`inline' methods (which transfer the files through the shell
-connection using base64 or uu encoding) and the `out-of-band' methods
-(which invoke an external copying program such as `rcp' or `scp' or
-`rsync' to do the copying).
-
-Shell connections can be acquired via `rsh', `ssh', `telnet' and also
-`su' and `sudo'.  Ange-FTP is still supported via the `ftp' method.
-
-If you want to disable Tramp you should set
-
-  (setq tramp-default-method "ftp")
-
-Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
-tramp-unload-tramp.
-
-** The image-dired.el package allows you to easily view, tag and in
-other ways manipulate image files and their thumbnails, using dired as
-the main interface.  Image-Dired provides functionality to generate
-simple image galleries.
-
-** Image files are normally visited in Image mode, which lets you toggle
-between viewing the image and viewing the text using C-c C-c.
-
-** The new python.el package is used to edit Python and Jython programs.
-
-** The URL package (which had been part of W3) is now part of Emacs.
-
-** Calc is now part of the Emacs distribution.
-
-Calc is an advanced desk calculator and mathematical tool written in
-Emacs Lisp.  The prefix for Calc has been changed to `C-x *' and Calc
-can be started with `C-x * *'.  The Calc manual is separate from the
-Emacs manual; within Emacs, type "C-h i m calc RET" to read the
-manual.  A reference card is available in `etc/calccard.tex' and
-`etc/calccard.ps'.
-
-** Org mode is now part of the Emacs distribution
-
-Org mode is a mode for keeping notes, maintaining ToDo lists, and
-doing project planning with a fast and effective plain-text system.
-It also contains a plain-text table editor with spreadsheet-like
-capabilities.
-
-The Org mode table editor can be integrated into any major mode by
-activating the minor mode, Orgtbl mode.
-
-The documentation for org-mode is in a separate manual; within Emacs,
-type "C-h i m org RET" to read that manual.  A reference card is
-available in `etc/orgcard.tex' and `etc/orgcard.ps'.
-
-** ERC is now part of the Emacs distribution.
-
-ERC is a powerful, modular, and extensible IRC client for Emacs.
-
-To see what modules are available, type
-M-x customize-option erc-modules RET.
-
-To start an IRC session with ERC, type M-x erc, and follow the prompts
-for server, port, and nick.
-
-** Rcirc is now part of the Emacs distribution.
-
-Rcirc is an Internet relay chat (IRC) client.  It supports
-simultaneous connections to multiple IRC servers.  Each discussion
-takes place in its own buffer.  For each connection you can join
-several channels (many-to-many) and participate in private
-(one-to-one) chats.  Both channel and private chats are contained in
-separate buffers.
-
-To start an IRC session using the default parameters, type M-x irc.
-If you type C-u M-x irc, it prompts you for the server, nick, port and
-startup channel parameters before connecting.
-
-** The new package ibuffer provides a powerful, completely
-customizable replacement for buff-menu.el.
-
-** Newsticker is now part of the Emacs distribution.
-
-Newsticker asynchronously retrieves headlines (RSS) from a list of news
-sites, prepares these headlines for reading, and allows for loading the
-corresponding articles in a web browser.  Its documentation is in a
-separate manual.
-
-** The wdired.el package allows you to use normal editing commands on Dired
-buffers to change filenames, permissions, etc...
-
-** Ido mode is now part of the Emacs distribution.
-
-The ido (interactively do) package is an extension of the iswitchb
-package to do interactive opening of files and directories in addition
-to interactive buffer switching.  Ido is a superset of iswitchb (with
-a few exceptions), so don't enable both packages.
-
-** The new global minor mode `file-name-shadow-mode' modifies the way
-filenames being entered by the user in the minibuffer are displayed, so
-that it's clear when part of the entered filename will be ignored due to
-Emacs' filename parsing rules.  The ignored portion can be made dim,
-invisible, or otherwise less visually noticeable.  The display method can
-be displayed by customizing the variable `file-name-shadow-properties'.
-
-** Emacs' keyboard macro facilities have been enhanced by the new
-kmacro package.
-
-Keyboard macros are now defined and executed via the F3 and F4 keys:
-F3 starts a macro, F4 ends the macro, and pressing F4 again executes
-the last macro.  While defining the macro, F3 inserts a counter value
-which automatically increments every time the macro is executed.
-
-There is now a keyboard macro ring which stores the most recently
-defined macros.
-
-The C-x C-k sequence is now a prefix for the kmacro keymap which
-defines bindings for moving through the keyboard macro ring,
-C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e,
-manipulating the macro counter and format via C-x C-k C-c,
-C-x C-k C-a, and C-x C-k C-f.  See the commentary in kmacro.el
-for more commands.
-
-The original macro bindings C-x (, C-x ), and C-x e are still
-available, but they now interface to the keyboard macro ring too.
-
-The C-x e command now automatically terminates the current macro
-before calling it, if used while defining a macro.
-
-In addition, when ending or calling a macro with C-x e, the macro can
-be repeated immediately by typing just the `e'.  You can customize
-this behavior via the variables kmacro-call-repeat-key and
-kmacro-call-repeat-with-arg.
-
-Keyboard macros can now be debugged and edited interactively.
-C-x C-k SPC steps through the last keyboard macro one key sequence
-at a time, prompting for the actions to take.
-
-** The new keypad setup package provides several common bindings for
-the numeric keypad which is available on most keyboards.  The numeric
-keypad typically has the digits 0 to 9, a decimal point, keys marked
-+, -, /, and *, an Enter key, and a NumLock toggle key.  The keypad
-package only controls the use of the digit and decimal keys.
-
-By customizing the variables `keypad-setup', `keypad-shifted-setup',
-`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
-using the function `keypad-setup', you can rebind all digit keys and
-the decimal key of the keypad in one step for each of the four
-possible combinations of the Shift key state (not pressed/pressed) and
-the NumLock toggle state (off/on).
-
-The choices for the keypad keys in each of the above states are:
-`Plain numeric keypad' where the keys generates plain digits,
-`Numeric keypad with decimal key' where the character produced by the
-decimal key can be customized individually (for internationalization),
-`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
-for Emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
-where the keys work like (shifted) arrow keys, home/end, etc., and
-`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
-are left unspecified and can be bound individually through the global
-or local keymaps.
-
-** The printing package is now part of the Emacs distribution.
-
-If you enable the printing package by including (require 'printing) in
-the .emacs file, the normal Print item on the File menu is replaced
-with a Print sub-menu which allows you to preview output through
-ghostview, use ghostscript to print (if you don't have a PostScript
-printer) or send directly to printer a PostScript code generated by
-`ps-print' package.  Use M-x pr-help for more information.
-
-** The new package longlines.el provides a minor mode for editing text
-files composed of long lines, based on the `use-hard-newlines'
-mechanism.  The long lines are broken up by inserting soft newlines,
-which are automatically removed when saving the file to disk or
-copying into the kill ring, clipboard, etc.  By default, Longlines
-mode inserts soft newlines automatically during editing, a behavior
-referred to as "soft word wrap" in other text editors.  This is
-similar to Refill mode, but more reliable.  To turn the word wrap
-feature off, set `longlines-auto-wrap' to nil.
-
-** SES mode (ses-mode) is a new major mode for creating and editing
-spreadsheet files.  Besides the usual Emacs features (intuitive command
-letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
-viral immunity and import/export of tab-separated values.
-
-** The new package table.el implements editable, WYSIWYG, embedded
-`text tables' in Emacs buffers.  It simulates the effect of putting
-these tables in a special major mode.  The package emulates WYSIWYG
-table editing available in modern word processors.  The package also
-can generate a table source in typesetting and markup languages such
-as latex and html from the visually laid out text table.
-
-** Filesets are collections of files.  You can define a fileset in
-various ways, such as based on a directory tree or based on
-program files that include other program files.
-
-Once you have defined a fileset, you can perform various operations on
-all the files in it, such as visiting them or searching and replacing
-in them.
-
-** The minor mode Reveal mode makes text visible on the fly as you
-move your cursor into hidden regions of the buffer.
-It should work with any package that uses overlays to hide parts
-of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
-
-There is also Global Reveal mode which affects all buffers.
-
-** New minor mode, Visible mode, toggles invisibility in the current buffer.
-When enabled, it makes all invisible text visible.  When disabled, it
-restores the previous value of `buffer-invisibility-spec'.
-
-** The new package flymake.el does on-the-fly syntax checking of program
-source files.  See the Flymake's Info manual for more details.
-
-** savehist saves minibuffer histories between sessions.
-To use this feature, turn on savehist-mode in your `.emacs' file.
-
-** The ruler-mode.el library provides a minor mode for displaying an
-"active" ruler in the header line.  You can use the mouse to visually
-change the `fill-column', `window-margins' and `tab-stop-list'
-settings.
-
-** The file t-mouse.el is now part of Emacs and provides access to mouse
-events from the console.  It still requires gpm to work but has been updated
-for Emacs 22.  In particular, the mode-line is now position sensitive.
-
-** The new package scroll-lock.el provides the Scroll Lock minor mode
-for pager-like scrolling.  Keys which normally move point by line or
-paragraph will scroll the buffer by the respective amount of lines
-instead and point will be kept vertically fixed relative to window
-boundaries during scrolling.
-
-** The new global minor mode `size-indication-mode' (off by default)
-shows the size of accessible part of the buffer on the mode line.
-
-** The new package conf-mode.el handles thousands of configuration files, with
-varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
-var : value, var value or keyword var value) and sections ([section] or
-section { }).  Many files under /etc/, or with suffixes like .cf through
-.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
-recognized.
-
-** GDB-Script-mode is used for files like .gdbinit.
-
-** The new package dns-mode.el adds syntax highlighting of DNS master files.
-It is a modern replacement for zone-mode.el, which is now obsolete.
-
-** `cfengine-mode' is a major mode for editing GNU Cfengine
-configuration files.
-
-** The TCL package tcl-mode.el was replaced by tcl.el.
-This was actually done in Emacs-21.1, and was not documented.
-\f
-* Changes in Specialized Modes and Packages in Emacs 22.1:
-
-** Changes in Dired
-
-*** Bindings for Image-Dired added.
-Several new keybindings, all starting with the C-t prefix, have been
-added to Dired.  They are all bound to commands in Image-Dired.  As a
-starting point, mark some image files in a dired buffer and do C-t d
-to display thumbnails of them in a separate buffer.
-
-** Info mode changes
-
-*** Images in Info pages are supported.
-
-Info pages show embedded images, in Emacs frames with image support.
-Info documentation that includes images, processed with makeinfo
-version 4.7 or newer, compiles to Info pages with embedded images.
-
-*** `Info-index' offers completion.
-
-*** http and ftp links in Info are now operational: they look like cross
-references and following them calls `browse-url'.
-
-*** isearch in Info uses Info-search and searches through multiple nodes.
-
-Before leaving the initial Info node isearch fails once with the error
-message [initial node], and with subsequent C-s/C-r continues through
-other nodes.  When isearch fails for the rest of the manual, it wraps
-around the whole manual to the top/final node.  The user option
-`Info-isearch-search' controls whether to use Info-search for isearch,
-or the default isearch search function that wraps around the current
-Info node.
-
-*** New search commands: `Info-search-case-sensitively' (bound to S),
-`Info-search-backward', and `Info-search-next' which repeats the last
-search without prompting for a new search string.
-
-*** New command `info-apropos' searches the indices of the known
-Info files on your system for a string, and builds a menu of the
-possible matches.
-
-*** New command `Info-history-forward' (bound to r and new toolbar icon)
-moves forward in history to the node you returned from after using
-`Info-history-back' (renamed from `Info-last').
-
-*** New command `Info-history' (bound to L) displays a menu of visited nodes.
-
-*** New command `Info-toc' (bound to T) creates a node with table of contents
-from the tree structure of menus of the current Info file.
-
-*** New command `Info-copy-current-node-name' (bound to w) copies
-the current Info node name into the kill ring.  With a zero prefix
-arg, puts the node name inside the `info' function call.
-
-*** New face `info-xref-visited' distinguishes visited nodes from unvisited
-and a new option `Info-fontify-visited-nodes' to control this.
-
-*** A numeric prefix argument of `info' selects an Info buffer
-with the number appended to the `*info*' buffer name (e.g. "*info*<2>").
-
-*** Info now hides node names in menus and cross references by default.
-
-If you prefer the old behavior, you can set the new user option
-`Info-hide-note-references' to nil.
-
-*** The default value for `Info-scroll-prefer-subnodes' is now nil.
-
-** Emacs server changes
-
-*** You can have several Emacs servers on the same machine.
-
-       % emacs --eval '(setq server-name "foo")' -f server-start &
-       % emacs --eval '(setq server-name "bar")' -f server-start &
-       % emacsclient -s foo file1
-       % emacsclient -s bar file2
-
-*** The `emacsclient' command understands the options `--eval' and
-`--display' which tell Emacs respectively to evaluate the given Lisp
-expression and to use the given display when visiting files.
-
-*** User option `server-mode' can be used to start a server process.
-
-** Locate changes
-
-*** By default, reverting the *Locate* buffer now just runs the last
-`locate' command back over again without offering to update the locate
-database (which normally only works if you have root privileges).  If
-you prefer the old behavior, set the new customizable option
-`locate-update-when-revert' to t.
-
-** Desktop package
-
-*** Desktop saving is now a minor mode, `desktop-save-mode'.
-
-*** The variable `desktop-enable' is obsolete.
-
-Customize `desktop-save-mode' to enable desktop saving.
-
-*** Buffers are saved in the desktop file in the same order as that in the
-buffer list.
-
-*** The desktop package can be customized to restore only some buffers
-immediately, remaining buffers are restored lazily (when Emacs is
-idle).
-
-*** New command line option --no-desktop
-
-*** New commands:
-  - desktop-revert reverts to the last loaded desktop.
-  - desktop-change-dir kills current desktop and loads a new.
-  - desktop-save-in-desktop-dir saves desktop in the directory from which
-    it was loaded.
-  - desktop-lazy-complete runs the desktop load to completion.
-  - desktop-lazy-abort aborts lazy loading of the desktop.
-
-*** New customizable variables:
-  - desktop-save. Determines whether the desktop should be saved when it is
-    killed.
-  - desktop-file-name-format. Format in which desktop file names should be saved.
-  - desktop-path. List of directories in which to lookup the desktop file.
-  - desktop-locals-to-save. List of local variables to save.
-  - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
-  - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
-    should not delete.
-  - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
-    restored lazily (when Emacs is idle).
-  - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
-  - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
-
-*** New hooks:
-  - desktop-after-read-hook run after a desktop is loaded.
-  - desktop-no-desktop-file-hook run when no desktop file is found.
-
-** Recentf changes
-
-The recent file list is now automatically cleaned up when recentf mode is
-enabled.  The new option `recentf-auto-cleanup' controls when to do
-automatic cleanup.
-
-The ten most recent files can be quickly opened by using the shortcut
-keys 1 to 9, and 0, when the recent list is displayed in a buffer via
-the `recentf-open-files', or `recentf-open-more-files' commands.
-
-The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
-and provides a more general mechanism to customize which file names to
-keep in the recent list.
-
-With the more advanced option `recentf-filename-handlers', you can
-specify functions that successively transform recent file names.  For
-example, if set to `file-truename' plus `abbreviate-file-name', the
-same file will not be in the recent list with different symbolic
-links, and the file name will be abbreviated.
-
-To follow naming convention, `recentf-menu-append-commands-flag'
-replaces the misnamed option `recentf-menu-append-commands-p'.  The
-old name remains available as alias, but has been marked obsolete.
-
-** Auto-Revert changes
-
-*** You can now use Auto Revert mode to `tail' a file.
-
-If point is at the end of a file buffer before reverting, Auto Revert
-mode keeps it at the end after reverting.  Similarly if point is
-displayed at the end of a file buffer in any window, it stays at the
-end of the buffer in that window.  This allows you to "tail" a file:
-just put point at the end of the buffer and it stays there.  This rule
-applies to file buffers.  For non-file buffers, the behavior can be
-mode dependent.
-
-If you are sure that the file will only change by growing at the end,
-then you can tail the file more efficiently by using the new minor
-mode Auto Revert Tail mode.  The function `auto-revert-tail-mode'
-toggles this mode.
-
-*** Auto Revert mode is now more careful to avoid excessive reverts and
-other potential problems when deciding which non-file buffers to
-revert.  This matters especially if Global Auto Revert mode is enabled
-and `global-auto-revert-non-file-buffers' is non-nil.  Auto Revert
-mode only reverts a non-file buffer if the buffer has a non-nil
-`revert-buffer-function' and a non-nil `buffer-stale-function', which
-decides whether the buffer should be reverted.  Currently, this means
-that auto reverting works for Dired buffers (although this may not
-work properly on all operating systems) and for the Buffer Menu.
-
-*** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
-Revert mode reliably updates version control info (such as the version
-control number in the mode line), in all version controlled buffers in
-which it is active.  If the option is nil, the default, then this info
-only gets updated whenever the buffer gets reverted.
-
-** Changes in Shell Mode
-
-*** Shell output normally scrolls so that the input line is at the
-bottom of the window -- thus showing the maximum possible text.  (This
-is similar to the way sequential output to a terminal works.)
-
-** Changes in Hi Lock
-
-*** hi-lock-mode now only affects a single buffer, and a new function
-`global-hi-lock-mode' enables Hi Lock in all buffers.  By default, if
-hi-lock-mode is used in what appears to be the initialization file, a
-warning message suggests to use global-hi-lock-mode instead.  However,
-if the new variable `hi-lock-archaic-interface-deduce' is non-nil,
-using hi-lock-mode in an initialization file will turn on Hi Lock in all
-buffers and no warning will be issued (for compatibility with the
-behavior in older versions of Emacs).
-
-** Changes in Allout
-
-*** Topic cryptography added, enabling easy gpg topic encryption and
-decryption.  Per-topic basis enables interspersing encrypted-text and
-clear-text within a single file to your heart's content, using symmetric
-and/or public key modes.  Time-limited key caching, user-provided
-symmetric key hinting and consistency verification, auto-encryption of
-pending topics on save, and more, make it easy to use encryption in
-powerful ways.  Encryption behavior customization is collected in the
-allout-encryption customization group.
-
-*** Default command prefix was changed to "\C-c " (control-c space), to
-avoid intruding on user's keybinding space.  Customize the
-`allout-command-prefix' variable to your preference.
-
-*** Some previously rough topic-header format edge cases are reconciled.
-Level 1 topics use the mode's comment format, and lines starting with the
-asterisk - for instance, the comment close of some languages (eg, c's "*/"
-or mathematica's "*)") - at the beginning of line are no longer are
-interpreted as level 1 topics in those modes.
-
-*** Many or most commonly occurring "accidental" topics are disqualified.
-Text in item bodies that looks like a low-depth topic is no longer mistaken
-for one unless its first offspring (or that of its next sibling with
-offspring) is only one level deeper.
-
-For example, pasting some text with a bunch of leading asterisks into a
-topic that's followed by a level 3 or deeper topic will not cause the
-pasted text to be mistaken for outline structure.
-
-The same constraint is applied to any level 2 or 3 topics.
-
-This settles an old issue where typed or pasted text needed to be carefully
-reviewed, and sometimes doctored, to avoid accidentally disrupting the
-outline structure.  Now that should be generally unnecessary, as the most
-prone-to-occur accidents are disqualified.
-
-*** Allout now refuses to create "containment discontinuities", where a
-topic is shifted deeper than the offspring-depth of its container.  On the
-other hand, allout now operates gracefully with existing containment
-discontinuities, revealing excessively contained topics rather than either
-leaving them hidden or raising an error.
-
-*** Navigation within an item is easier.  Repeated beginning-of-line and
-end-of-line key commands (usually, ^A and ^E) cycle through the
-beginning/end-of-line and then beginning/end of topic, etc.  See new
-customization vars `allout-beginning-of-line-cycles' and
-`allout-end-of-line-cycles'.
-
-*** New or revised allout-mode activity hooks enable creation of
-cooperative enhancements to allout mode without changes to the mode,
-itself.
-
-See `allout-exposure-change-hook', `allout-structure-added-hook',
-`allout-structure-deleted-hook', and `allout-structure-shifted-hook'.
-
-`allout-exposure-change-hook' replaces the existing
-`allout-view-change-hook', which is being deprecated.  Both are still
-invoked, but `allout-view-change-hook' will eventually be ignored.
-`allout-exposure-change-hook' is called with explicit arguments detailing
-the specifics of each change (as are the other new hooks), making it easier
-to use than the old version.
-
-There is a new mode deactivation hook, `allout-mode-deactivate-hook', for
-coordinating with deactivation of allout-mode.  Both that and the mode
-activation hook, `allout-mode-hook' are now run after the `allout-mode'
-variable is changed, rather than before.
-
-*** Allout now uses text overlay's `invisible' property for concealed text,
-instead of selective-display.  This simplifies the code, in particular
-avoiding the need for kludges for isearch dynamic-display, discretionary
-handling of edits of concealed text, undo concerns, etc.
-
-*** There are many other fixes and refinements, including:
-
-   - repaired inhibition of inadvertent edits to concealed text, without
-     inhibiting undo; we now reveal undo changes within concealed text.
-   - auto-fill-mode is now left inactive when allout-mode starts, if it
-     already was inactive.  also, `allout-inhibit-auto-fill' custom
-     configuration variable makes it easy to disable auto fill in allout
-     outlines in general or on a per-buffer basis.
-   - allout now tolerates fielded text in outlines without disruption.
-   - hot-spot navigation now is modularized with a new function,
-     `allout-hotspot-key-handler', enabling easier use and enhancement of
-     the functionality in allout addons.
-   - repaired retention of topic body hanging indent upon topic depth shifts
-   - bulleting variation is simpler and more accommodating, both in the
-     default behavior and in ability to vary when creating new topics
-   - mode deactivation now does cleans up effectively, more properly
-     restoring affected variables and hooks to former state, removing
-     overlays, etc.  see `allout-add-resumptions' and
-     `allout-do-resumptions', which replace the old `allout-resumptions'.
-   - included a few unit-tests for interior functionality.  developers can
-     have them automatically run at the end of module load by customizing
-     the option `allout-run-unit-tests-on-load'.
-   - many, many other, more minor tweaks, fixes, and refinements.
-   - version number incremented to 2.2
-
-** Hideshow mode changes
-
-*** New variable `hs-set-up-overlay' allows customization of the overlay
-used to effect hiding for hideshow minor mode.  Integration with isearch
-handles the overlay property `display' specially, preserving it during
-temporary overlay showing in the course of an isearch operation.
-
-*** New variable `hs-allow-nesting' non-nil means that hiding a block does
-not discard the hidden state of any "internal" blocks; when the parent
-block is later shown, the internal blocks remain hidden.  Default is nil.
-
-** FFAP changes
-
-*** New ffap commands and keybindings:
-
-C-x C-r (`ffap-read-only'),
-C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
-C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
-C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
-
-*** FFAP accepts wildcards in a file name by default.
-
-C-x C-f passes the file name to `find-file' with non-nil WILDCARDS
-argument, which visits multiple files, and C-x d passes it to `dired'.
-
-** Changes in Skeleton
-
-*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction.
-
-`@' has reverted to only setting `skeleton-positions' and no longer
-sets `skeleton-point'.  Skeletons which used @ to mark
-`skeleton-point' independent of `_' should now use `-' instead.  The
-updated `skeleton-insert' docstring explains these new features along
-with other details of skeleton construction.
-
-*** The variables `skeleton-transformation', `skeleton-filter', and
-`skeleton-pair-filter' have been renamed to
-`skeleton-transformation-function', `skeleton-filter-function', and
-`skeleton-pair-filter-function'.  The old names are still available
-as aliases.
-
-** HTML/SGML changes
-
-*** Emacs now tries to set up buffer coding systems for HTML/XML files
-automatically.
-
-*** SGML mode has indentation and supports XML syntax.
-The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
-When this option is enabled, SGML tags are inserted in XML style,
-i.e., there is always a closing tag.
-By default, its setting is inferred on a buffer-by-buffer basis
-from the file name or buffer contents.
-
-*** The variable `sgml-transformation' has been renamed to
-`sgml-transformation-function'.  The old name is still available as
-alias.
-
-*** `xml-mode' is now an alias for `sgml-mode', which has XML support.
-
-** TeX modes
-
-*** New major mode Doctex mode, for *.dtx files.
-
-*** C-c C-c prompts for a command to run, and tries to offer a good default.
-
-*** The user option `tex-start-options-string' has been replaced
-by two new user options: `tex-start-options', which should hold
-command-line options to feed to TeX, and `tex-start-commands' which should hold
-TeX commands to use at startup.
-
-*** verbatim environments are now highlighted in courier by font-lock
-and super/sub-scripts are made into super/sub-scripts.
-
-** RefTeX mode changes
-
-*** Changes to RefTeX's table of contents
-
-The new command keys "<" and ">" in the TOC buffer promote/demote the
-section at point or all sections in the current region, with full
-support for multifile documents.
-
-The new command `reftex-toc-recenter' (`C-c -') shows the current
-section in the TOC buffer without selecting the TOC window.
-Recentering can happen automatically in idle time when the option
-`reftex-auto-recenter-toc' is turned on.  The highlight in the TOC
-buffer stays when the focus moves to a different window.  A dedicated
-frame can show the TOC with the current section always automatically
-highlighted.  The frame is created and deleted from the toc buffer
-with the `d' key.
-
-The toc window can be split off horizontally instead of vertically.
-See new option `reftex-toc-split-windows-horizontally'.
-
-Labels can be renamed globally from the table of contents using the
-key `M-%'.
-
-The new command `reftex-goto-label' jumps directly to a label
-location.
-
-*** Changes related to citations and BibTeX database files
-
-Commands that insert a citation now prompt for optional arguments when
-called with a prefix argument.  Related new options are
-`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
-
-The new command `reftex-create-bibtex-file' creates a BibTeX database
-with all entries referenced in the current document.  The keys "e" and
-"E" allow to produce a BibTeX database file from entries marked in a
-citation selection buffer.
-
-The command `reftex-citation' uses the word in the buffer before the
-cursor as a default search string.
-
-The support for chapterbib has been improved.  Different chapters can
-now use BibTeX or an explicit `thebibliography' environment.
-
-The macros which specify the bibliography file (like \bibliography)
-can be configured with the new option `reftex-bibliography-commands'.
-
-Support for jurabib has been added.
-
-*** Global index matched may be verified with a user function.
-
-During global indexing, a user function can verify an index match.
-See new option `reftex-index-verify-function'.
-
-*** Parsing documents with many labels can be sped up.
-
-Operating in a document with thousands of labels can be sped up
-considerably by allowing RefTeX to derive the type of a label directly
-from the label prefix like `eq:' or `fig:'.  The option
-`reftex-trust-label-prefix' needs to be configured in order to enable
-this feature.  While the speed-up is significant, this may reduce the
-quality of the context offered by RefTeX to describe a label.
-
-*** Miscellaneous changes
-
-The macros which input a file in LaTeX (like \input, \include) can be
-configured in the new option `reftex-include-file-commands'.
-
-RefTeX supports global incremental search.
-
-** BibTeX mode
-
-*** The new command `bibtex-url' browses a URL for the BibTeX entry at
-point (bound to C-c C-l and mouse-2, RET on clickable fields).
-
-*** The new command `bibtex-entry-update' (bound to C-c C-u) updates
-an existing BibTeX entry by inserting fields that may occur but are not
-present.
-
-*** New `bibtex-entry-format' option `required-fields', enabled by default.
-
-*** `bibtex-maintain-sorted-entries' can take values `plain',
-`crossref', and `entry-class' which control the sorting scheme used
-for BibTeX entries.  `bibtex-sort-entry-class' controls the sorting
-scheme `entry-class'.  TAB completion for reference keys and
-automatic detection of duplicates does not require anymore that
-`bibtex-maintain-sorted-entries' is non-nil.
-
-*** The new command `bibtex-complete' completes word fragment before
-point according to context (bound to M-tab).
-
-*** In BibTeX mode the command `fill-paragraph' (M-q) fills
-individual fields of a BibTeX entry.
-
-*** The new variable `bibtex-autofill-types' contains a list of entry
-types for which fields are filled automatically (if possible).
-
-*** The new commands `bibtex-find-entry' and `bibtex-find-crossref'
-locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
-Crossref fields are clickable (bound to mouse-2, RET).
-
-*** The new variables `bibtex-files' and `bibtex-file-path' define a set
-of BibTeX files that are searched for entry keys.
-
-*** The new command `bibtex-validate-globally' checks for duplicate keys
-in multiple BibTeX files.
-
-*** If the new variable `bibtex-autoadd-commas' is non-nil,
-automatically add missing commas at end of BibTeX fields.
-
-*** The new command `bibtex-copy-summary-as-kill' pushes summary
-of BibTeX entry to kill ring (bound to C-c C-t).
-
-*** If the new variable `bibtex-parse-keys-fast' is non-nil,
-use fast but simplified algorithm for parsing BibTeX keys.
-
-*** The new variables bibtex-expand-strings and
-bibtex-autokey-expand-strings control the expansion of strings when
-extracting the content of a BibTeX field.
-
-*** The variables `bibtex-autokey-name-case-convert' and
-`bibtex-autokey-titleword-case-convert' have been renamed to
-`bibtex-autokey-name-case-convert-function' and
-`bibtex-autokey-titleword-case-convert-function'.  The old names are
-still available as aliases.
-
-** GUD changes
-
-*** The new package gdb-ui.el provides an enhanced graphical interface to
-GDB.  You can interact with GDB through the GUD buffer in the usual way, but
-there are also further buffers which control the execution and describe the
-state of your program.  It can separate the input/output of your program from
-that of GDB and watches expressions in the speedbar.  It also uses features of
-Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate
-breakpoints.
-
-To use this package just type M-x gdb.  See the Emacs manual if you want the
-old behaviour.
-
-*** GUD mode has its own tool bar for controlling execution of the inferior
-and other common debugger commands.
-
-*** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
-counter to the specified source line (the one where point is).
-
-*** The variable tooltip-gud-tips-p has been removed.  GUD tooltips can now be
-toggled independently of normal tooltips with the minor mode
-`gud-tooltip-mode'.
-
-*** In graphical mode, with a C program, GUD Tooltips have been extended to
-display the #define directive associated with an identifier when program is
-not executing.
-
-*** GUD mode improvements for jdb:
-
-**** Search for source files using jdb classpath and class information.
-Fast startup since there is no need to scan all source files up front.
-There is also no need to create and maintain lists of source
-directories to scan.  Look at `gud-jdb-use-classpath' and
-`gud-jdb-classpath' customization variables documentation.
-
-**** The previous method of searching for source files has been
-preserved in case someone still wants/needs to use it.
-Set `gud-jdb-use-classpath' to nil.
-
-**** Supports the standard breakpoint (gud-break, gud-clear)
-set/clear operations from Java source files under the classpath, stack
-traversal (gud-up, gud-down), and run until current stack finish
-(gud-finish).
-
-**** Supports new jdb (Java 1.2 and later) in addition to oldjdb
-(Java 1.1 jdb).
-
-*** Added jdb Customization Variables
-
-**** `gud-jdb-command-name'.  What command line to use to invoke jdb.
-
-**** `gud-jdb-use-classpath'.  Allows selection of java source file searching
-method: set to t for new method, nil to scan `gud-jdb-directories' for
-java sources (previous method).
-
-**** `gud-jdb-directories'.  List of directories to scan and search for Java
-classes using the original gud-jdb method (if `gud-jdb-use-classpath'
-is nil).
-
-*** Minor Improvements
-
-**** The STARTTLS wrapper (starttls.el) can now use GNUTLS
-instead of the OpenSSL based `starttls' tool.  For backwards
-compatibility, it prefers `starttls', but you can toggle
-`starttls-use-gnutls' to switch to GNUTLS (or simply remove the
-`starttls' tool).
-
-**** Do not allow debugger output history variable to grow without bounds.
-
-** Lisp mode changes
-
-*** Lisp mode now uses `font-lock-doc-face' for doc strings.
-
-*** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point.
-
-*** New features in evaluation commands
-
-**** The function `eval-defun' (C-M-x) called on defface reinitializes
-the face to the value specified in the defface expression.
-
-**** Typing C-x C-e twice prints the value of the integer result
-in additional formats (octal, hexadecimal, character) specified
-by the new function `eval-expression-print-format'.  The same
-function also defines the result format for `eval-expression' (M-:),
-`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
-
-** Changes to cmuscheme
-
-*** Emacs now offers to start Scheme if the user tries to
-evaluate a Scheme expression but no Scheme subprocess is running.
-
-*** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME
-is the name of the Scheme interpreter) exists, its contents are sent
-to the Scheme subprocess upon startup.
-
-*** There are new commands to instruct the Scheme interpreter to trace
-procedure calls (`scheme-trace-procedure') and to expand syntactic forms
-(`scheme-expand-current-form').  The commands actually sent to the Scheme
-subprocess are controlled by the user options `scheme-trace-command',
-`scheme-untrace-command' and `scheme-expand-current-form'.
-
-** Ewoc changes
-
-*** The new function `ewoc-delete' deletes specified nodes.
-
-*** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of
-a newline after each pretty-printed entry and after the header and footer.
-This allows you to create multiple-entry ewocs on a single line and to
-effect "invisible" nodes by arranging for the pretty-printer to not print
-anything for those nodes.
-
-For example, these two sequences of expressions behave identically:
-
-;; NOSEP nil
-(defun PP (data) (insert (format "%S" data)))
-(ewoc-create 'PP "start\n")
-
-;; NOSEP t
-(defun PP (data) (insert (format "%S\n" data)))
-(ewoc-create 'PP "start\n\n" "\n" t)
-
-** CC mode changes
-
-*** The CC Mode manual has been extensively revised.
-The information about using CC Mode has been separated from the larger
-and more difficult chapters about configuration.
-
-*** New Minor Modes
-**** Electric Minor Mode toggles the electric action of non-alphabetic keys.
-The new command c-toggle-electric-mode is bound to C-c C-l.  Turning the
-mode off can be helpful for editing chaotically indented code and for
-users new to CC Mode, who sometimes find electric indentation
-disconcerting.  Its current state is displayed in the mode line with an
-'l', e.g. "C/al".
-
-**** Subword Minor Mode makes Emacs recognize word boundaries at upper case
-letters in StudlyCapsIdentifiers.  You enable this feature by C-c C-w.  It can
-also be used in non-CC Mode buffers.  :-) Contributed by Masatake YAMATO.
-
-*** Support for the AWK language.
-Support for the AWK language has been introduced.  The implementation is
-based around GNU AWK version 3.1, but it should work pretty well with
-any AWK.  As yet, not all features of CC Mode have been adapted for AWK.
-Here is a summary:
-
-**** Indentation Engine
-The CC Mode indentation engine fully supports AWK mode.
-
-AWK mode handles code formatted in the conventional AWK fashion: `{'s
-which start actions, user-defined functions, or compound statements are
-placed on the same line as the associated construct; the matching `}'s
-are normally placed under the start of the respective pattern, function
-definition, or structured statement.
-
-The predefined line-up functions haven't yet been adapted for AWK
-mode, though some of them may work serendipitously.  There shouldn't
-be any problems writing custom indentation functions for AWK mode.
-
-**** Font Locking
-There is a single level of font locking in AWK mode, rather than the
-three distinct levels the other modes have.  There are several
-idiosyncrasies in AWK mode's font-locking due to the peculiarities of
-the AWK language itself.
-
-**** Comment and Movement Commands
-These commands all work for AWK buffers.  The notion of "defun" has
-been augmented to include AWK pattern-action pairs - the standard
-"defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this
-extended definition.
-
-**** "awk" style, Auto-newline Insertion and Clean-ups
-A new style, "awk" has been introduced, and this is now the default
-style for AWK code.  With auto-newline enabled, the clean-up
-c-one-liner-defun (see above) is useful.
-
-*** Font lock support.
-CC Mode now provides font lock support for all its languages.  This
-supersedes the font lock patterns that have been in the core font lock
-package for C, C++, Java and Objective-C.  Like indentation, font
-locking is done in a uniform way across all languages (except the new
-AWK mode - see below).  That means that the new font locking will be
-different from the old patterns in various details for most languages.
-
-The main goal of the font locking in CC Mode is accuracy, to provide a
-dependable aid in recognizing the various constructs.  Some, like
-strings and comments, are easy to recognize while others like
-declarations and types can be very tricky.  CC Mode can go to great
-lengths to recognize declarations and casts correctly, especially when
-the types aren't recognized by standard patterns.  This is a fairly
-demanding analysis which can be slow on older hardware, and it can
-therefore be disabled by choosing a lower decoration level with the
-variable font-lock-maximum-decoration.
-
-Note that the most demanding font lock level has been tuned with lazy
-fontification in mind; Just-In-Time-Lock mode should be enabled for
-the highest font lock level (by default, it is).  Fontifying a file
-with several thousand lines in one go can take the better part of a
-minute.
-
-**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables
-are now used by CC Mode to recognize identifiers that are certain to
-be types.  (They are also used in cases that aren't related to font
-locking.)  At the maximum decoration level, types are often recognized
-properly anyway, so these variables should be fairly restrictive and
-not contain patterns for uncertain types.
-
-**** Support for documentation comments.
-There is a "plugin" system to fontify documentation comments like
-Javadoc and the markup within them.  It's independent of the host
-language, so it's possible to e.g. turn on Javadoc font locking in C
-buffers.  See the variable c-doc-comment-style for details.
-
-Currently three kinds of doc comment styles are recognized: Sun's
-Javadoc, Autodoc (which is used in Pike) and GtkDoc (used in C).  (The
-last was contributed by Masatake YAMATO).  This is by no means a
-complete list of the most common tools; if your doc comment extractor
-of choice is missing then please drop a note to bug-cc-mode@gnu.org.
-
-**** Better handling of C++ templates.
-As a side effect of the more accurate font locking, C++ templates are
-now handled much better.  The angle brackets that delimit them are
-given parenthesis syntax so that they can be navigated like other
-parens.
-
-This also improves indentation of templates, although there still is
-work to be done in that area.  E.g. it's required that multiline
-template clauses are written in full and then refontified to be
-recognized, and the indentation of nested templates is a bit odd and
-not as configurable as it ought to be.
-
-**** Improved handling of Objective-C and CORBA IDL.
-Especially the support for Objective-C and IDL has gotten an overhaul.
-The special "@" declarations in Objective-C are handled correctly.
-All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
-handled correctly, also wrt indentation.
-
-*** Changes in Key Sequences
-**** c-toggle-auto-hungry-state is no longer bound to C-c C-t.
-
-**** c-toggle-hungry-state is no longer bound to C-c C-d.
-This binding has been taken over by c-hungry-delete-forwards.
-
-**** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline.
-c-toggle-auto-state remains as an alias.
-
-**** The new commands c-hungry-backspace and c-hungry-delete-forwards
-have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and
-C-c C-d (or C-c C-<delete> or C-c <delete>) respectively.  These
-commands delete entire blocks of whitespace with a single
-key-sequence.  [N.B. "DEL" is the <backspace> key.]
-
-**** The new command c-toggle-electric-mode is bound to C-c C-l.
-
-**** The new command c-subword-mode is bound to C-c C-w.
-
-*** C-c C-s (`c-show-syntactic-information') now highlights the anchor
-position(s).
-
-*** New syntactic symbols in IDL mode.
-The top level constructs "module" and "composition" (from CIDL) are
-now handled like "namespace" in C++: They are given syntactic symbols
-module-open, module-close, inmodule, composition-open,
-composition-close, and incomposition.
-
-*** New functions to do hungry delete without enabling hungry delete mode.
-The new functions `c-hungry-backspace' and `c-hungry-delete-forward'
-provide hungry deletion without having to toggle a mode.  They are
-bound to C-c C-DEL and C-c C-d (and several variants, for the benefit
-of different keyboard setups.  See "Changes in key sequences" above).
-
-*** Better control over `require-final-newline'.
-
-The variable `c-require-final-newline' specifies which of the modes
-implemented by CC mode should insert final newlines.  Its value is a
-list of modes, and only those modes should do it.  By default the list
-includes C, C++ and Objective-C modes.
-
-Whichever modes are in this list will set `require-final-newline'
-based on `mode-require-final-newline'.
-
-*** Format change for syntactic context elements.
-
-The elements in the syntactic context returned by `c-guess-basic-syntax'
-and stored in `c-syntactic-context' has been changed somewhat to allow
-attaching more information.  They are now lists instead of single cons
-cells.  E.g. a line that previously had the syntactic analysis
-
-((inclass . 11) (topmost-intro . 13))
-
-is now analyzed as
-
-((inclass 11) (topmost-intro 13))
-
-In some cases there are more than one position given for a syntactic
-symbol.
-
-This change might affect code that calls `c-guess-basic-syntax'
-directly, and custom lineup functions if they use
-`c-syntactic-context'.  However, the argument given to lineup
-functions is still a single cons cell with nil or an integer in the
-cdr.
-
-*** API changes for derived modes.
-
-There have been extensive changes "under the hood" which can affect
-derived mode writers.  Some of these changes are likely to cause
-incompatibilities with existing derived modes, but on the other hand
-care has now been taken to make it possible to extend and modify CC
-Mode with less risk of such problems in the future.
-
-**** New language variable system.
-These are variables whose values vary between CC Mode's different
-languages.  See the comment blurb near the top of cc-langs.el.
-
-**** New initialization functions.
-The initialization procedure has been split up into more functions to
-give better control: `c-basic-common-init', `c-font-lock-init', and
-`c-init-language-vars'.
-
-*** Changes in analysis of nested syntactic constructs.
-The syntactic analysis engine has better handling of cases where
-several syntactic constructs appear nested on the same line.  They are
-now handled as if each construct started on a line of its own.
-
-This means that CC Mode now indents some cases differently, and
-although it's more consistent there might be cases where the old way
-gave results that's more to one's liking.  So if you find a situation
-where you think that the indentation has become worse, please report
-it to bug-cc-mode@gnu.org.
-
-**** New syntactic symbol substatement-label.
-This symbol is used when a label is inserted between a statement and
-its substatement.  E.g:
-
-    if (x)
-      x_is_true:
-        do_stuff();
-
-*** Better handling of multiline macros.
-
-**** Syntactic indentation inside macros.
-The contents of multiline #define's are now analyzed and indented
-syntactically just like other code.  This can be disabled by the new
-variable `c-syntactic-indentation-in-macros'.  A new syntactic symbol
-`cpp-define-intro' has been added to control the initial indentation
-inside `#define's.
-
-**** New lineup function `c-lineup-cpp-define'.
-
-Now used by default to line up macro continuation lines.  The behavior
-of this function closely mimics the indentation one gets if the macro
-is indented while the line continuation backslashes are temporarily
-removed.  If syntactic indentation in macros is turned off, it works
-much line `c-lineup-dont-change', which was used earlier, but handles
-empty lines within the macro better.
-
-**** Automatically inserted newlines continues the macro if used within one.
-This applies to the newlines inserted by the auto-newline mode, and to
-`c-context-line-break' and `c-context-open-line'.
-
-**** Better alignment of line continuation backslashes.
-`c-backslash-region' tries to adapt to surrounding backslashes.  New
-variable `c-backslash-max-column' puts a limit on how far out
-backslashes can be moved.
-
-**** Automatic alignment of line continuation backslashes.
-This is controlled by the new variable `c-auto-align-backslashes'.  It
-affects `c-context-line-break', `c-context-open-line' and newlines
-inserted in Auto-Newline mode.
-
-**** Line indentation works better inside macros.
-Regardless whether syntactic indentation and syntactic indentation
-inside macros are enabled or not, line indentation now ignores the
-line continuation backslashes.  This is most noticeable when syntactic
-indentation is turned off and there are empty lines (save for the
-backslash) in the macro.
-
-*** indent-for-comment is more customizable.
-The behavior of M-; (indent-for-comment) is now configurable through
-the variable `c-indent-comment-alist'.  The indentation behavior is
-based on the preceding code on the line, e.g. to get two spaces after
-#else and #endif but indentation to `comment-column' in most other
-cases (something which was hardcoded earlier).
-
-*** New function `c-context-open-line'.
-It's the open-line equivalent of `c-context-line-break'.
-
-*** New clean-ups
-
-**** `comment-close-slash'.
-With this clean-up, a block (i.e. c-style) comment can be terminated by
-typing a slash at the start of a line.
-
-**** `c-one-liner-defun'
-This clean-up compresses a short enough defun (for example, an AWK
-pattern/action pair) onto a single line.  "Short enough" is configurable.
-
-*** New lineup functions
-
-**** `c-lineup-string-cont'
-This lineup function lines up a continued string under the one it
-continues.  E.g:
-
-result = prefix + "A message "
-                  "string.";      <- c-lineup-string-cont
-
-**** `c-lineup-cascaded-calls'
-Lines up series of calls separated by "->" or ".".
-
-**** `c-lineup-knr-region-comment'
-Gives (what most people think is) better indentation of comments in
-the "K&R region" between the function header and its body.
-
-**** `c-lineup-gcc-asm-reg'
-Provides better indentation inside asm blocks.
-
-**** `c-lineup-argcont'
-Lines up continued function arguments after the preceding comma.
-
-*** Added toggle for syntactic indentation.
-The function `c-toggle-syntactic-indentation' can be used to toggle
-syntactic indentation.
-
-*** Better caching of the syntactic context.
-CC Mode caches the positions of the opening parentheses (of any kind)
-of the lists surrounding the point.  Those positions are used in many
-places as anchor points for various searches.  The cache is now
-improved so that it can be reused to a large extent when the point is
-moved.  The less it moves, the less needs to be recalculated.
-
-The effect is that CC Mode should be fast most of the time even when
-opening parens are hung (i.e. aren't in column zero).  It's typically
-only the first time after the point is moved far down in a complex
-file that it'll take noticeable time to find out the syntactic
-context.
-
-*** Statements are recognized in a more robust way.
-Statements are recognized most of the time even when they occur in an
-"invalid" context, e.g. in a function argument.  In practice that can
-happen when macros are involved.
-
-*** Improved the way `c-indent-exp' chooses the block to indent.
-It now indents the block for the closest sexp following the point
-whose closing paren ends on a different line.  This means that the
-point doesn't have to be immediately before the block to indent.
-Also, only the block and the closing line is indented; the current
-line is left untouched.
-
-** Changes in Makefile mode
-
-*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake.
-
-The former two couldn't be differentiated before, and the latter three
-are new.  Font-locking is robust now and offers new customizable
-faces.
-
-*** The variable `makefile-query-one-target-method' has been renamed
-to `makefile-query-one-target-method-function'.  The old name is still
-available as alias.
-
-** Sql changes
-
-*** The variable `sql-product' controls the highlighting of different
-SQL dialects.  This variable can be set globally via Customize, on a
-buffer-specific basis via local variable settings, or for the current
-session using the new SQL->Product submenu.  (This menu replaces the
-SQL->Highlighting submenu.)
-
-The following values are supported:
-
-    ansi       ANSI Standard (default)
-    db2                DB2
-    informix    Informix
-    ingres      Ingres
-    interbase  Interbase
-    linter     Linter
-    ms         Microsoft
-    mysql      MySQL
-    oracle     Oracle
-    postgres   Postgres
-    solid       Solid
-    sqlite      SQLite
-    sybase      Sybase
-
-The current product name will be shown on the mode line following the
-SQL mode indicator.
-
-The technique of setting `sql-mode-font-lock-defaults' directly in
-your `.emacs' will no longer establish the default highlighting -- Use
-`sql-product' to accomplish this.
-
-ANSI keywords are always highlighted.
-
-*** The function `sql-add-product-keywords' can be used to add
-font-lock rules to the product specific rules.  For example, to have
-all identifiers ending in `_t' under MS SQLServer treated as a type,
-you would use the following line in your .emacs file:
-
-  (sql-add-product-keywords 'ms
-             '(("\\<\\w+_t\\>" . font-lock-type-face)))
-
-*** Oracle support includes keyword highlighting for Oracle 9i.
-
-Most SQL and PL/SQL keywords are implemented.  SQL*Plus commands are
-highlighted in `font-lock-doc-face'.
-
-*** Microsoft SQLServer support has been significantly improved.
-
-Keyword highlighting for SqlServer 2000 is implemented.
-sql-interactive-mode defaults to use osql, rather than isql, because
-osql flushes its error stream more frequently.  Thus error messages
-are displayed when they occur rather than when the session is
-terminated.
-
-If the username and password are not provided to `sql-ms', osql is
-called with the `-E' command line argument to use the operating system
-credentials to authenticate the user.
-
-*** Postgres support is enhanced.
-Keyword highlighting of Postgres 7.3 is implemented.  Prompting for
-the username and the pgsql `-U' option is added.
-
-*** MySQL support is enhanced.
-Keyword highlighting of MySql 4.0 is implemented.
-
-*** Imenu support has been enhanced to locate tables, views, indexes,
-packages, procedures, functions, triggers, sequences, rules, and
-defaults.
-
-*** Added SQL->Start SQLi Session menu entry which calls the
-appropriate `sql-interactive-mode' wrapper for the current setting of
-`sql-product'.
-
-*** sql.el supports the SQLite interpreter--call 'sql-sqlite'.
-
-** Fortran mode changes
-
-*** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow).
-It cannot deal with every code format, but ought to handle a sizeable
-majority.
-
-*** F90 mode and Fortran mode have new navigation commands
-`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
-`f90-previous-block', `fortran-end-of-block',
-`fortran-beginning-of-block'.
-
-*** Fortran mode does more font-locking by default.  Use level 3
-highlighting for the old default.
-
-*** Fortran mode has a new variable `fortran-directive-re'.
-Adapt this to match the format of any compiler directives you use.
-Lines that match are never indented, and are given distinctive font-locking.
-
-*** The new function `f90-backslash-not-special' can be used to change
-the syntax of backslashes in F90 buffers.
-
-** Miscellaneous programming mode changes
-
-*** In sh-script, a continuation line is only indented if the backslash was
-preceded by a SPC or a TAB.
-
-*** Perl mode has a new variable `perl-indent-continued-arguments'.
-
-*** The old Octave mode bindings C-c f and C-c i have been changed
-to C-c C-f and C-c C-i.  The C-c C-i subcommands now have duplicate
-bindings on control characters--thus, C-c C-i C-b is the same as
-C-c C-i b, and so on.
-
-*** Prolog mode has a new variable `prolog-font-lock-keywords'
-to support use of font-lock.
-
-** VC Changes
-
-*** New backends for Subversion and Meta-CVS.
-
-*** The new variable `vc-cvs-global-switches' specifies switches that
-are passed to any CVS command invoked by VC.
-
-These switches are used as "global options" for CVS, which means they
-are inserted before the command name.  For example, this allows you to
-specify a compression level using the `-z#' option for CVS.
-
-*** The key C-x C-q only changes the read-only state of the buffer
-(toggle-read-only).  It no longer checks files in or out.
-
-We made this change because we held a poll and found that many users
-were unhappy with the previous behavior.  If you do prefer this
-behavior, you can bind `vc-toggle-read-only' to C-x C-q in your
-`.emacs' file:
-
-    (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
-
-The function `vc-toggle-read-only' will continue to exist.
-
-*** VC-Annotate mode enhancements
-
-In VC-Annotate mode, you can now use the following key bindings for
-enhanced functionality to browse the annotations of past revisions, or
-to view diffs or log entries directly from vc-annotate-mode:
-
-    P:  annotates the previous revision
-    N:  annotates the next revision
-    J:  annotates the revision at line
-    A:  annotates the revision previous to line
-    D:  shows the diff of the revision at line with its previous revision
-    L:  shows the log of the revision at line
-    W:  annotates the workfile (most up to date) version
-
-** pcl-cvs changes
-
-*** In pcl-cvs mode, there is a new `d y' command to view the diffs
-between the local version of the file and yesterday's head revision
-in the repository.
-
-*** In pcl-cvs mode, there is a new `d r' command to view the changes
-anyone has committed to the repository since you last executed
-`checkout', `update' or `commit'.  That means using cvs diff options
--rBASE -rHEAD.
-
-** Diff changes
-
-*** M-x diff uses Diff mode instead of Compilation mode.
-
-*** Diff mode key bindings changed.
-
-These are the new bindings:
-
-C-c C-e   diff-ediff-patch  (old M-A)
-C-c C-n   diff-restrict-view   (old M-r)
-C-c C-r   diff-reverse-direction  (old M-R)
-C-c C-u   diff-context->unified   (old M-U)
-C-c C-w   diff-refine-hunk  (old C-c C-r)
-
-To convert unified to context format, use C-u C-c C-u.
-In addition, C-c C-u now operates on the region
-in Transient Mark mode when the mark is active.
-
-** EDiff changes.
-
-***  When comparing directories.
-Typing D brings up a buffer that lists the differences between the contents of
-directories.  Now it is possible to use this buffer to copy the missing files
-from one directory to another.
-
-*** When comparing files or buffers.
-Typing the = key now offers to perform the word-by-word comparison of the
-currently highlighted regions in an inferior Ediff session.  If you answer 'n'
-then it reverts to the old behavior and asks the user to select regions for
-comparison.
-
-*** The new command `ediff-backup' compares a file with its most recent
-backup using `ediff'.  If you specify the name of a backup file,
-`ediff-backup' compares it with the file of which it is a backup.
-
-** Etags changes.
-
-*** New regular expressions features
-
-**** New syntax for regular expressions, multi-line regular expressions.
-
-The syntax --ignore-case-regexp=/regex/ is now undocumented and retained
-only for backward compatibility.  The new equivalent syntax is
---regex=/regex/i.  More generally, it is --regex=/TAGREGEX/TAGNAME/MODS,
-where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or
-more characters among `i' (ignore case), `m' (multi-line) and `s'
-(single-line).  The `m' and `s' modifiers behave as in Perl regular
-expressions: `m' allows regexps to match more than one line, while `s'
-(which implies `m') means that `.' matches newlines.  The ability to
-span newlines allows writing of much more powerful regular expressions
-and rapid prototyping for tagging new languages.
-
-**** Regular expressions can use char escape sequences as in GCC.
-
-The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
-respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
-CR, TAB, VT.
-
-**** Regular expressions can be bound to a given language.
-
-The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags
-only for files of language LANGUAGE, and ignored otherwise.  This is
-particularly useful when storing regexps in a file.
-
-**** Regular expressions can be read from a file.
-
-The --regex=@regexfile option means read the regexps from a file, one
-per line.  Lines beginning with space or tab are ignored.
-
-*** New language parsing features
-
-**** New language HTML.
-
-Tags are generated for `title' as well as `h1', `h2', and `h3'.  Also,
-when `name=' is used inside an anchor and whenever `id=' is used.
-
-**** New language PHP.
-
-Functions, classes and defines are tags.  If the --members option is
-specified to etags, variables are tags also.
-
-**** New language Lua.
-
-All functions are tagged.
-
-**** The `::' qualifier triggers C++ parsing in C file.
-
-Previously, only the `template' and `class' keywords had this effect.
-
-**** The GCC __attribute__ keyword is now recognized and ignored.
-
-**** In C and derived languages, etags creates tags for #undef
-
-**** In Makefiles, constants are tagged.
-
-If you want the old behavior instead, thus avoiding to increase the
-size of the tags file, use the --no-globals option.
-
-**** In Perl, packages are tags.
-
-Subroutine tags are named from their package.  You can jump to sub tags
-as you did before, by the sub name, or additionally by looking for
-package::sub.
-
-**** In Prolog, etags creates tags for rules in addition to predicates.
-
-**** New default keywords for TeX.
-
-The new keywords are def, newcommand, renewcommand, newenvironment and
-renewenvironment.
-
-*** Honor #line directives.
-
-When Etags parses an input file that contains C preprocessor's #line
-directives, it creates tags using the file name and line number
-specified in those directives.  This is useful when dealing with code
-created from Cweb source files.  When Etags tags the generated file, it
-writes tags pointing to the source file.
-
-*** New option --parse-stdin=FILE.
-
-This option is mostly useful when calling etags from programs.  It can
-be used (only once) in place of a file name on the command line.  Etags
-reads from standard input and marks the produced tags as belonging to
-the file FILE.
-
-*** The --members option is now the default.
-
-Use --no-members if you want the old default behaviour of not tagging
-struct members in C, members variables in C++ and variables in PHP.
-
-** Ctags changes.
-
-*** Ctags now allows duplicate tags
-
-** Rmail changes
-
-*** Support for `movemail' from GNU mailutils was added to Rmail.
-
-This version of `movemail' allows you to read mail from a wide range of
-mailbox formats, including remote POP3 and IMAP4 mailboxes with or
-without TLS encryption.  If GNU mailutils is installed on the system
-and its version of `movemail' can be found in exec-path, it will be
-used instead of the native one.
-
-*** The new commands rmail-end-of-message and rmail-summary end-of-message,
-by default bound to `/', go to the end of the current mail message in
-Rmail and Rmail summary buffers.
-
-*** Rmail now displays 5-digit message ids in its summary buffer.
-
-** Gnus package
-
-*** Gnus now includes Sieve and PGG
-
-Sieve is a library for managing Sieve scripts.  PGG is a library to handle
-PGP/MIME.
-
-*** There are many news features, bug fixes and improvements.
-
-See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
-
-** MH-E changes.
-
-Upgraded to MH-E version 8.0.3.  There have been major changes since
-version 5.0.2; see MH-E-NEWS for details.
-
-** Miscellaneous mail changes
-
-*** The new variable `mail-default-directory' specifies
-`default-directory' for mail buffers.  This directory is used for
-auto-save files of mail buffers.  It defaults to "~/".
-
-*** The mode line can indicate new mail in a directory or file.
-
-See the documentation of the user option `display-time-mail-directory'.
-
-** Calendar changes
-
-*** There is a new calendar package, icalendar.el, that can be used to
-convert Emacs diary entries to/from the iCalendar format.
-
-*** The new package cal-html.el writes HTML files with calendar and
-diary entries.
-
-*** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
-and `diary-from-outlook-rmail' can be used to import diary entries
-from Outlook-format appointments in mail messages.  The variable
-`diary-outlook-formats' can be customized to recognize additional
-formats.
-
-*** The procedure for activating appointment reminders has changed:
-use the new function `appt-activate'.  The new variable
-`appt-display-format' controls how reminders are displayed, replacing
-`appt-issue-message', `appt-visible', and `appt-msg-window'.
-
-*** The function `simple-diary-display' now by default sets a header line.
-This can be controlled through the variables `diary-header-line-flag'
-and `diary-header-line-format'.
-
-*** Diary sexp entries can have custom marking in the calendar.
-Diary sexp functions which only apply to certain days (such as
-`diary-block' or `diary-cyclic') now take an optional parameter MARK,
-which is the name of a face or a single-character string indicating
-how to highlight the day in the calendar display.  Specifying a
-single-character string as @var{mark} places the character next to the
-day in the calendar.  Specifying a face highlights the day with that
-face.  This lets you have different colors or markings for vacations,
-appointments, paydays or anything else using a sexp.
-
-*** The meanings of C-x < and C-x > have been interchanged.
-< means to scroll backward in time, and > means to scroll forward.
-
-*** You can now use < and >, instead of C-x < and C-x >, to scroll
-the calendar left or right.
-
-*** The new function `calendar-goto-day-of-year' (g D) prompts for a
-year and day number, and moves to that date.  Negative day numbers
-count backward from the end of the year.
-
-*** The new Calendar function `calendar-goto-iso-week' (g w)
-prompts for a year and a week number, and moves to the first
-day of that ISO week.
-
-*** The functions `holiday-easter-etc' and `holiday-advent' now take
-optional arguments, in order to only report on the specified holiday
-rather than all.  This makes customization of variables such as
-`christian-holidays' simpler.
-
-*** The new variable `calendar-minimum-window-height' affects the
-window generated by the function `generate-calendar-window'.
-
-** Speedbar changes
-
-*** Speedbar items can now be selected by clicking mouse-1, based on
-the `mouse-1-click-follows-link' mechanism.
-
-*** The new command `speedbar-toggle-line-expansion', bound to SPC,
-contracts or expands the line under the cursor.
-
-*** New command `speedbar-create-directory', bound to `M'.
-
-*** The new commands `speedbar-expand-line-descendants' and
-`speedbar-contract-line-descendants', bound to `[' and `]'
-respectively, expand and contract the line under cursor with all of
-its descendents.
-
-*** The new user option `speedbar-use-tool-tips-flag', if non-nil,
-means to display tool-tips for speedbar items.
-
-*** The new user option `speedbar-query-confirmation-method' controls
-how querying is performed for file operations.  A value of 'always
-means to always query before file operations; 'none-but-delete means
-to not query before any file operations, except before a file
-deletion.
-
-*** The new user option `speedbar-select-frame-method' specifies how
-to select a frame for displaying a file opened with the speedbar.  A
-value of 'attached means to use the attached frame (the frame that
-speedbar was started from.)  A number such as 1 or -1 means to pass
-that number to `other-frame'.
-
-*** SPC and DEL are no longer bound to scroll up/down in the speedbar
-keymap.
-
-*** The frame management code in speedbar.el has been split into a new
-`dframe' library.  Emacs Lisp code that makes use of the speedbar
-should use `dframe-attached-frame' instead of
-`speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer',
-`dframe-close-frame' instead of `speedbar-close-frame', and
-`dframe-activity-change-focus-flag' instead of
-`speedbar-activity-change-focus-flag'.  The variables
-`speedbar-update-speed' and `speedbar-navigating-speed' are also
-obsolete; use `dframe-update-speed' instead.
-
-** battery.el changes
-
-*** display-battery-mode replaces display-battery.
-
-*** battery.el now works on recent versions of OS X.
-
-** Games
-
-*** The game `mpuz' is enhanced.
-
-`mpuz' now allows the 2nd factor not to have two identical digits.  By
-default, all trivial operations involving whole lines are performed
-automatically.  The game uses faces for better visual feedback.
-
-** Obsolete and deleted packages
-
-*** fast-lock.el and lazy-lock.el are obsolete.  Use jit-lock.el instead.
-
-*** iso-acc.el is now obsolete.  Use one of the latin input methods instead.
-
-*** zone-mode.el is now obsolete.  Use dns-mode.el instead.
-
-*** cplus-md.el has been deleted.
-
-** Miscellaneous
-
-*** The variable `woman-topic-at-point' is renamed
-to `woman-use-topic-at-point' and behaves differently: if this
-variable is non-nil, the `woman' command uses the word at point
-automatically, without asking for a confirmation.  Otherwise, the word
-at point is suggested as default, but not inserted at the prompt.
-
-*** You can now customize `fill-nobreak-predicate' to control where
-filling can break lines.  The value is now normally a list of
-functions, but it can also be a single function, for compatibility.
-
-Emacs provide two predicates, `fill-single-word-nobreak-p' and
-`fill-french-nobreak-p', for use as the value of
-`fill-nobreak-predicate'.
-
-*** M-x view-file and commands that use it now avoid interfering
-with special modes such as Tar mode.
-
-*** `global-whitespace-mode' is a new alias for `whitespace-global-mode'.
-
-*** The saveplace.el package now filters out unreadable files.
-
-When you exit Emacs, the saved positions in visited files no longer
-include files that aren't readable, e.g. files that don't exist.
-Customize the new option `save-place-forget-unreadable-files' to nil
-to get the old behavior.  The new options `save-place-save-skipped'
-and `save-place-skip-check-regexp' allow further fine-tuning of this
-feature.
-
-*** Commands `winner-redo' and `winner-undo', from winner.el, are now
-bound to C-c <left> and C-c <right>, respectively.  This is an
-incompatible change.
-
-*** The type-break package now allows `type-break-file-name' to be nil
-and if so, doesn't store any data across sessions.  This is handy if
-you don't want the `.type-break' file in your home directory or are
-annoyed by the need for interaction when you kill Emacs.
-
-*** `ps-print' can now print characters from the mule-unicode charsets.
-
-Printing text with characters from the mule-unicode-* sets works with
-`ps-print', provided that you have installed the appropriate BDF
-fonts.  See the file INSTALL for URLs where you can find these fonts.
-
-*** New command `strokes-global-set-stroke-string'.
-This is like `strokes-global-set-stroke', but it allows you to bind
-the stroke directly to a string to insert.  This is convenient for
-using strokes as an input method.
-
-*** In Outline mode, `hide-body' no longer hides lines at the top
-of the file that precede the first header line.
-
-*** `hide-ifdef-mode' now uses overlays rather than selective-display
-to hide its text.  This should be mostly transparent but slightly
-changes the behavior of motion commands like C-e and C-p.
-
-*** In Artist mode the variable `artist-text-renderer' has been
-renamed to `artist-text-renderer-function'.  The old name is still
-available as alias.
-
-*** In Enriched mode, `set-left-margin' and `set-right-margin' are now
-by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
-and `C-c C-r'.
-
-*** `partial-completion-mode' now handles partial completion on directory names.
-
-*** You can now disable pc-selection-mode after enabling it.
-
-M-x pc-selection-mode behaves like a proper minor mode, and with no
-argument it toggles the mode.  Turning off PC-Selection mode restores
-the global key bindings that were replaced by turning on the mode.
-
-*** `uniquify-strip-common-suffix' tells uniquify to prefer
-`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
-
-*** New user option `add-log-always-start-new-record'.
-
-When this option is enabled, M-x add-change-log-entry always
-starts a new record regardless of when the last record is.
-
-*** M-x compare-windows now can automatically skip non-matching text to
-resync points in both windows.
-
-*** PO translation files are decoded according to their MIME headers
-when Emacs visits them.
-
-*** Telnet now prompts you for a port number with C-u M-x telnet.
-
-*** calculator.el now has radix grouping mode.
-
-To enable this, set `calculator-output-radix' non-nil.  In this mode a
-separator character is used every few digits, making it easier to see
-byte boundaries etc.  For more info, see the documentation of the
-variable `calculator-radix-grouping-mode'.
-
-*** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
-
-*** The terminal emulation code in term.el has been improved; it can
-run most curses applications now.
-
-*** Support for `magic cookie' standout modes has been removed.
-
-Emacs still works on terminals that require magic cookies in order to
-use standout mode, but they can no longer display mode-lines in
-inverse-video.
-
-\f
-* Changes in Emacs 22.1 on non-free operating systems
-
-** The HOME directory defaults to Application Data under the user profile.
-
-If you used a previous version of Emacs without setting the HOME
-environment variable and a `.emacs' was saved, then Emacs will continue
-using C:/ as the default HOME.  But if you are installing Emacs afresh,
-the default location will be the "Application Data" (or similar
-localized name) subdirectory of your user profile.  A typical location
-of this directory is "C:\Documents and Settings\USERNAME\Application Data",
-where USERNAME is your user name.
-
-This change means that users can now have their own `.emacs' files on
-shared computers, and the default HOME directory is less likely to be
-read-only on computers that are administered by someone else.
-
-** Images are now supported on MS Windows.
-
-PBM and XBM images are supported out of the box.  Other image formats
-depend on external libraries.  All of these libraries have been ported
-to Windows, and can be found in both source and binary form at
-http://gnuwin32.sourceforge.net/.  Note that libpng also depends on
-zlib, and tiff depends on the version of jpeg that it was compiled
-against.  For additional information, see nt/INSTALL.
-
-** Sound is now supported on MS Windows.
-
-WAV format is supported on all versions of Windows, other formats such
-as AU, AIFF and MP3 may be supported in the more recent versions of
-Windows, or when other software provides hooks into the system level
-sound support for those formats.
-
-** Tooltips now work on MS Windows.
-
-See the Emacs 21.1 NEWS entry for tooltips for details.
-
-** Pointing devices with more than 3 buttons are now supported on MS Windows.
-
-The new variable `w32-pass-extra-mouse-buttons-to-system' controls
-whether Emacs should handle the extra buttons itself (the default), or
-pass them to Windows to be handled with system-wide functions.
-
-** Passing resources on the command line now works on MS Windows.
-
-You can use --xrm to pass resource settings to Emacs, overriding any
-existing values.  For example:
-
-  emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
-
-will start up Emacs on an initial frame of 100x20 with red background,
-irrespective of geometry or background setting on the Windows registry.
-
-** Emacs takes note of colors defined in Control Panel on MS-Windows.
-
-The Control Panel defines some default colors for applications in much
-the same way as wildcard X Resources do on X.  Emacs now adds these
-colors to the colormap prefixed by System (eg SystemMenu for the
-default Menu background, SystemMenuText for the foreground), and uses
-some of them to initialize some of the default faces.
-`list-colors-display' shows the list of System color names, in case
-you wish to use them in other faces.
-
-** Running in a console window in Windows now uses the console size.
-
-Previous versions of Emacs erred on the side of having a usable Emacs
-through telnet, even though that was inconvenient if you use Emacs in
-a local console window with a scrollback buffer.  The default value of
-w32-use-full-screen-buffer is now nil, which favors local console
-windows.  Recent versions of Windows telnet also work well with this
-setting.  If you are using an older telnet server then Emacs detects
-that the console window dimensions that are reported are not sane, and
-defaults to 80x25.  If you use such a telnet server regularly at a size
-other than 80x25, you can still manually set
-w32-use-full-screen-buffer to t.
-
-** Different shaped mouse pointers are supported on MS Windows.
-
-The mouse pointer changes shape depending on what is under the pointer.
-
-** On MS Windows, the "system caret" now follows the cursor.
-
-This enables Emacs to work better with programs that need to track the
-cursor, for example screen magnifiers and text to speech programs.
-When such a program is in use, the system caret is made visible
-instead of Emacs drawing its own cursor. This seems to be required by
-some programs. The new variable w32-use-visible-system-caret allows
-the caret visibility to be manually toggled.
-
-** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
-
-Those systems use Unicode internally, so this allows Emacs to share
-multilingual text with other applications.  On other versions of
-MS Windows, Emacs now uses the appropriate locale coding-system, so
-the clipboard should work correctly for your local language without
-any customizations.
-
-** On Mac OS, `keyboard-coding-system' changes based on the keyboard script.
-
-** The variable `mac-keyboard-text-encoding' and the constants
-`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
-`kTextEncodingISOLatin2' are obsolete.
-
-** The variable `mac-command-key-is-meta' is obsolete.  Use
-`mac-command-modifier' and `mac-option-modifier' instead.
-\f
-* Incompatible Lisp Changes in Emacs 22.1
-
-** Mode line display ignores text properties as well as the
-:propertize and :eval forms in the value of a variable whose
-`risky-local-variable' property is nil.
-
-The function `comint-send-input' now accepts 3 optional arguments:
-
-  (comint-send-input &optional no-newline artificial)
-
-Callers sending input not from the user should use bind the 3rd
-argument `artificial' to a non-nil value, to prevent Emacs from
-deleting the part of subprocess output that matches the input.
-
-** The `read-file-name' function now returns a null string if the
-user just types RET.
-
-** The variables post-command-idle-hook and post-command-idle-delay have
-been removed.  Use run-with-idle-timer instead.
-
-** A hex or octal escape in a string constant forces the string to
-be multibyte or unibyte, respectively.
-
-** The explicit method of creating a display table element by
-combining a face number and a character code into a numeric
-glyph code is deprecated.
-
-Instead, the new functions `make-glyph-code', `glyph-char', and
-`glyph-face' must be used to create and decode glyph codes in
-display tables.
-
-** `suppress-keymap' now works by remapping `self-insert-command' to
-the command `undefined'.  (In earlier Emacs versions, it used
-`substitute-key-definition' to rebind self inserting characters to
-`undefined'.)
-
-** The third argument of `accept-process-output' is now milliseconds.
-It used to be microseconds.
-
-** The function find-operation-coding-system may be called with a cons
-(FILENAME . BUFFER) in the second argument if the first argument
-OPERATION is `insert-file-contents', and thus a function registered in
-`file-coding-system-alist' is also called with such an argument.
-
-** When Emacs receives a USR1 or USR2 signal, this generates
-input events: sigusr1 or sigusr2.  Use special-event-map to
-handle these events.
-
-** The variable `memory-full' now remains t until
-there is no longer a shortage of memory.
-
-** Support for Mocklisp has been removed.
-
-\f
-* Lisp Changes in Emacs 22.1
-
-** General Lisp changes:
-
-*** New syntax: \s now stands for the SPACE character.
-
-`?\s' is a new way to write the space character.  You must make sure
-it is not followed by a dash, since `?\s-...' indicates the "super"
-modifier.  However, it would be strange to write a character constant
-and a following symbol (beginning with `-') with no space between
-them.
-
-`\s' stands for space in strings, too, but it is not really meant for
-strings; it is easier and nicer just to write a space.
-
-*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex.
-
-For instance, you can use "\u0428" to specify a string consisting of
-CYRILLIC CAPITAL LETTER SHA, or `"U0001D6E2" to specify one consisting
-of MATHEMATICAL ITALIC CAPITAL ALPHA (the latter is greater than
-#xFFFF and thus needs the longer syntax).
-
-This syntax works for both character constants and strings.
-
-*** New function `unsafep' determines whether a Lisp form is safe.
-
-It returns nil if the given Lisp form can't possibly do anything
-dangerous; otherwise it returns a reason why the form might be unsafe
-(calls unknown function, alters global variable, etc.).
-
-*** The function `eql' is now available without requiring the CL package.
-
-*** The new function `memql' is like `memq', but uses `eql' for comparison,
-that is, floats are compared by value and other elements with `eq'.
-
-*** New functions `string-or-null-p' and `booleanp'.
-
-`string-or-null-p' returns non-nil if OBJECT is a string or nil.
-`booleanp' returns non-nil if OBJECT is t or nil.
-
-*** `makehash' is now obsolete.  Use `make-hash-table' instead.
-
-*** Minor change in the function `format'.
-
-Some flags that were accepted but not implemented (such as "*") are no
-longer accepted.
-
-*** `add-to-list' takes an optional third argument, APPEND.
-
-If APPEND is non-nil, the new element gets added at the end of the
-list instead of at the beginning.  This change actually occurred in
-Emacs 21.1, but was not documented then.
-
-*** New function `add-to-ordered-list' is like `add-to-list' but
-associates a numeric ordering of each element added to the list.
-
-*** New function `add-to-history' adds an element to a history list.
-
-Lisp packages should use this function to add elements to their
-history lists.
-
-If `history-delete-duplicates' is non-nil, it removes duplicates of
-the new element from the history list it updates.
-
-*** New function `copy-tree' makes a copy of a tree.
-
-It recursively copies through both CARs and CDRs.
-
-*** New function `delete-dups' deletes `equal' duplicate elements from a list.
-
-It modifies the list destructively, like `delete'.  Of several `equal'
-occurrences of an element in the list, the one that's kept is the
-first one.
-
-*** New function `rassq-delete-all'.
-
-(rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose
-CDR is `eq' to the specified value.
-
-*** Functions `get' and `plist-get' no longer give errors for bad plists.
-
-They return nil for a malformed property list or if the list is
-cyclic.
-
-*** New functions `lax-plist-get' and `lax-plist-put'.
-
-They are like `plist-get' and `plist-put', except that they compare
-the property name using `equal' rather than `eq'.
-
-*** The function `number-sequence' makes a list of equally-separated numbers.
-
-For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).  By
-default, the separation is 1, but you can specify a different
-separation as the third argument.  (number-sequence 1.5 6 2) returns
-(1.5 3.5 5.5).
-
-*** New variables `most-positive-fixnum' and `most-negative-fixnum'.
-
-They hold the largest and smallest possible integer values.
-
-*** The function `expt' handles negative exponents differently.
-The value for `(expt A B)', if both A and B are integers and B is
-negative, is now a float.  For example: (expt 2 -2) => 0.25.
-
-*** The function `atan' now accepts an optional second argument.
-
-When called with 2 arguments, as in `(atan Y X)', `atan' returns the
-angle in radians between the vector [X, Y] and the X axis.  (This is
-equivalent to the standard C library function `atan2'.)
-
-*** New macro `with-case-table'
-
-This executes the body with the case table temporarily set to a given
-case table.
-
-*** New macro `with-local-quit' temporarily allows quitting.
-
-A quit inside the body of `with-local-quit' is caught by the
-`with-local-quit' form itself, but another quit will happen later once
-the code that has inhibited quitting exits.
-
-This is for use around potentially blocking or long-running code
-inside timer functions and `post-command-hook' functions.
-
-*** New macro `define-obsolete-function-alias'.
-
-This combines `defalias' and `make-obsolete'.
-
-*** New macro `eval-at-startup' specifies expressions to
-evaluate when Emacs starts up.  If this is done after startup,
-it evaluates those expressions immediately.
-
-This is useful in packages that can be preloaded.
-
-*** New function `macroexpand-all' expands all macros in a form.
-
-It is similar to the Common-Lisp function of the same name.
-One difference is that it guarantees to return the original argument
-if no expansion is done, which can be tested using `eq'.
-
-*** A function or macro's doc string can now specify the calling pattern.
-
-You put this info in the doc string's last line.  It should be
-formatted so as to match the regexp "\n\n(fn .*)\\'".  If you don't
-specify this explicitly, Emacs determines it from the actual argument
-names.  Usually that default is right, but not always.
-
-*** New variable `print-continuous-numbering'.
-
-When this is non-nil, successive calls to print functions use a single
-numbering scheme for circular structure references.  This is only
-relevant when `print-circle' is non-nil.
-
-When you bind `print-continuous-numbering' to t, you should
-also bind `print-number-table' to nil.
-
-*** `list-faces-display' takes an optional argument, REGEXP.
-
-If it is non-nil, the function lists only faces matching this regexp.
-
-*** New hook `command-error-function'.
-
-By setting this variable to a function, you can control
-how the editor command loop shows the user an error message.
-
-*** `debug-on-entry' accepts primitive functions that are not special forms.
-
-** Lisp code indentation features:
-
-*** The `defmacro' form can contain indentation and edebug declarations.
-
-These declarations specify how to indent the macro calls in Lisp mode
-and how to debug them with Edebug.  You write them like this:
-
-   (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
-
-DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
-possible declaration specifiers are:
-
-(indent INDENT)
-       Set NAME's `lisp-indent-function' property to INDENT.
-
-(edebug DEBUG)
-       Set NAME's `edebug-form-spec' property to DEBUG.  (This is
-       equivalent to writing a `def-edebug-spec' for the macro,
-       but this is cleaner.)
-
-*** cl-indent now allows customization of Indentation of backquoted forms.
-
-See the new user option `lisp-backquote-indentation'.
-
-*** cl-indent now handles indentation of simple and extended `loop' forms.
-
-The new user options `lisp-loop-keyword-indentation',
-`lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can
-be used to customize the indentation of keywords and forms in loop
-forms.
-
-** Variable aliases:
-
-*** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
-
-This function defines the symbol ALIAS-VAR as a variable alias for
-symbol BASE-VAR.  This means that retrieving the value of ALIAS-VAR
-returns the value of BASE-VAR, and changing the value of ALIAS-VAR
-changes the value of BASE-VAR.
-
-DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
-the same documentation as BASE-VAR.
-
-*** The macro `define-obsolete-variable-alias' combines `defvaralias' and
-`make-obsolete-variable'.
-
-*** New function: indirect-variable VARIABLE
-
-This function returns the variable at the end of the chain of aliases
-of VARIABLE.  If VARIABLE is not a symbol, or if VARIABLE is not
-defined as an alias, the function returns VARIABLE.
-
-It might be noteworthy that variables aliases work for all kinds of
-variables, including buffer-local and frame-local variables.
-
-** defcustom changes:
-
-*** The package-version keyword has been added to provide
-`customize-changed-options' functionality to packages in the future.
-Developers who make use of this keyword must also update the new
-variable `customize-package-emacs-version-alist'.
-
-*** The new customization type `float' requires a floating point number.
-
-** String changes:
-
-*** A hex escape in a string constant forces the string to be multibyte.
-
-*** An octal escape in a string constant forces the string to be unibyte.
-
-*** New function `string-to-multibyte' converts a unibyte string to a
-multibyte string with the same individual character codes.
-
-*** `split-string' now includes null substrings in the returned list if
-the optional argument SEPARATORS is non-nil and there are matches for
-SEPARATORS at the beginning or end of the string.  If SEPARATORS is
-nil, or if the new optional third argument OMIT-NULLS is non-nil, all
-empty matches are omitted from the returned list.
-
-*** The new function `assoc-string' replaces `assoc-ignore-case' and
-`assoc-ignore-representation', which are still available, but have
-been declared obsolete.
-
-*** New function `substring-no-properties' returns a substring without
-text properties.
-
-** Displaying warnings to the user.
-
-See the functions `warn' and `display-warning', or the Lisp Manual.
-If you want to be sure the warning will not be overlooked, this
-facility is much better than using `message', since it displays
-warnings in a separate window.
-
-** Progress reporters.
-
-These provide a simple and uniform way for commands to present
-progress messages for the user.
-
-See the new functions `make-progress-reporter',
-`progress-reporter-update', `progress-reporter-force-update',
-`progress-reporter-done', and `dotimes-with-progress-reporter'.
-
-** Buffer positions:
-
-*** Function `compute-motion' now calculates the usable window
-width if the WIDTH argument is nil.  If the TOPOS argument is nil,
-the usable window height and width is used.
-
-*** The `line-move', `scroll-up', and `scroll-down' functions will now
-modify the window vscroll to scroll through display rows that are
-taller that the height of the window, for example in the presence of
-large images.  To disable this feature, bind the new variable
-`auto-window-vscroll' to nil.
-
-*** The argument to `forward-word', `backward-word' is optional.
-
-It defaults to 1.
-
-*** Argument to `forward-to-indentation' and `backward-to-indentation' is optional.
-
-It defaults to 1.
-
-*** `field-beginning' and `field-end' take new optional argument, LIMIT.
-
-This argument tells them not to search beyond LIMIT.  Instead they
-give up and return LIMIT.
-
-*** New function `window-line-height' is an efficient way to get
-information about a specific text line in a window provided that the
-window's display is up-to-date.
-
-*** New function `line-number-at-pos' returns the line number of a position.
-
-It an optional buffer position argument that defaults to point.
-
-*** Function `pos-visible-in-window-p' now returns the pixel coordinates
-and partial visibility state of the corresponding row, if the PARTIALLY
-arg is non-nil.
-
-*** New functions `posn-at-point' and `posn-at-x-y' return
-click-event-style position information for a given visible buffer
-position or for a given window pixel coordinate.
-
-*** New function `mouse-on-link-p' tests if a position is in a clickable link.
-
-This is the function used by the new `mouse-1-click-follows-link'
-functionality.
-
-** Text modification:
-
-*** The new function `buffer-chars-modified-tick' returns a buffer's
-tick counter for changes to characters.  Each time text in that buffer
-is inserted or deleted, the character-change counter is updated to the
-tick counter (`buffer-modified-tick').  Text property changes leave it
-unchanged.
-
-*** The new function `insert-for-yank' normally works like `insert', but
-removes the text properties in the `yank-excluded-properties' list
-and handles the `yank-handler' text property.
-
-*** The new function `insert-buffer-substring-as-yank' is like
-`insert-for-yank' except that it gets the text from another buffer as
-in `insert-buffer-substring'.
-
-*** The new function `insert-buffer-substring-no-properties' is like
-`insert-buffer-substring', but removes all text properties from the
-inserted substring.
-
-*** The new function `filter-buffer-substring' extracts a buffer
-substring, passes it through a set of filter functions, and returns
-the filtered substring.  Use it instead of `buffer-substring' or
-`delete-and-extract-region' when copying text into a user-accessible
-data structure, such as the kill-ring, X clipboard, or a register.
-
-The list of filter function is specified by the new variable
-`buffer-substring-filters'.  For example, Longlines mode adds to
-`buffer-substring-filters' to remove soft newlines from the copied
-text.
-
-*** Function `translate-region' accepts also a char-table as TABLE
-argument.
-
-*** The new translation table `translation-table-for-input'
-is used for customizing self-insertion.  The character to
-be inserted is translated through it.
-
-*** Text clones.
-
-The new function `text-clone-create'.  Text clones are chunks of text
-that are kept identical by transparently propagating changes from one
-clone to the other.
-
-*** The function `insert-string' is now obsolete.
-
-** Filling changes.
-
-*** In determining an adaptive fill prefix, Emacs now tries the function in
-`adaptive-fill-function' _before_ matching the buffer line against
-`adaptive-fill-regexp' rather than _after_ it.
-
-** Atomic change groups.
-
-To perform some changes in the current buffer "atomically" so that
-they either all succeed or are all undone, use `atomic-change-group'
-around the code that makes changes.  For instance:
-
-  (atomic-change-group
-    (insert foo)
-    (delete-region x y))
-
-If an error (or other nonlocal exit) occurs inside the body of
-`atomic-change-group', it unmakes all the changes in that buffer that
-were during the execution of the body.  The change group has no effect
-on any other buffers--any such changes remain.
-
-If you need something more sophisticated, you can directly call the
-lower-level functions that `atomic-change-group' uses.  Here is how.
-
-To set up a change group for one buffer, call `prepare-change-group'.
-Specify the buffer as argument; it defaults to the current buffer.
-This function returns a "handle" for the change group.  You must save
-the handle to activate the change group and then finish it.
-
-Before you change the buffer again, you must activate the change
-group.  Pass the handle to `activate-change-group' afterward to
-do this.
-
-After you make the changes, you must finish the change group.  You can
-either accept the changes or cancel them all.  Call
-`accept-change-group' to accept the changes in the group as final;
-call `cancel-change-group' to undo them all.
-
-You should use `unwind-protect' to make sure the group is always
-finished.  The call to `activate-change-group' should be inside the
-`unwind-protect', in case the user types C-g just after it runs.
-(This is one reason why `prepare-change-group' and
-`activate-change-group' are separate functions.)  Once you finish the
-group, don't use the handle again--don't try to finish the same group
-twice.
-
-To make a multibuffer change group, call `prepare-change-group' once
-for each buffer you want to cover, then use `nconc' to combine the
-returned values, like this:
-
-  (nconc (prepare-change-group buffer-1)
-         (prepare-change-group buffer-2))
-
-You can then activate the multibuffer change group with a single call
-to `activate-change-group', and finish it with a single call to
-`accept-change-group' or `cancel-change-group'.
-
-Nested use of several change groups for the same buffer works as you
-would expect.  Non-nested use of change groups for the same buffer
-will lead to undesirable results, so don't let it happen; the first
-change group you start for any given buffer should be the last one
-finished.
-
-** Buffer-related changes:
-
-*** The new function `buffer-local-value' returns the buffer-local
-binding of VARIABLE (a symbol) in buffer BUFFER.  If VARIABLE does not
-have a buffer-local binding in buffer BUFFER, it returns the default
-value of VARIABLE instead.
-
-*** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
-
-If it is non-nil, it specifies which buffers to list.
-
-*** `kill-buffer-hook' is now a permanent local.
-
-*** The function `frame-or-buffer-changed-p' now lets you maintain
-various status records in parallel.
-
-It takes a variable (a symbol) as argument.  If the variable is non-nil,
-then its value should be a vector installed previously by
-`frame-or-buffer-changed-p'.  If the frame names, buffer names, buffer
-order, or their read-only or modified flags have changed, since the
-time the vector's contents were recorded by a previous call to
-`frame-or-buffer-changed-p', then the function returns t.  Otherwise
-it returns nil.
-
-On the first call to `frame-or-buffer-changed-p', the variable's
-value should be nil.  `frame-or-buffer-changed-p' stores a suitable
-vector into the variable and returns t.
-
-If the variable is itself nil, then `frame-or-buffer-changed-p' uses,
-for compatibility, an internal variable which exists only for this
-purpose.
-
-*** The function `read-buffer' follows the convention for reading from
-the minibuffer with a default value: if DEF is non-nil, the minibuffer
-prompt provided in PROMPT is edited to show the default value provided
-in DEF before the terminal colon and space.
-
-** Searching and matching changes:
-
-*** New function `looking-back' checks whether a regular expression matches
-the text before point.  Specifying the LIMIT argument bounds how far
-back the match can start; this is a way to keep it from taking too long.
-
-*** The new variable `search-spaces-regexp' controls how to search
-for spaces in a regular expression.  If it is non-nil, it should be a
-regular expression, and any series of spaces stands for that regular
-expression.  If it is nil, spaces stand for themselves.
-
-Spaces inside of constructs such as `[..]' and inside loops such as
-`*', `+', and `?' are never replaced with `search-spaces-regexp'.
-
-*** New regular expression operators, `\_<' and `\_>'.
-
-These match the beginning and end of a symbol.  A symbol is a
-non-empty sequence of either word or symbol constituent characters, as
-specified by the syntax table.
-
-*** `skip-chars-forward' and `skip-chars-backward' now handle
-character classes such as `[:alpha:]', along with individual
-characters and ranges.
-
-*** In `replace-match', the replacement text no longer inherits
-properties from surrounding text.
-
-*** The list returned by `(match-data t)' now has the buffer as a final
-element, if the last match was on a buffer.  `set-match-data'
-accepts such a list for restoring the match state.
-
-*** Functions `match-data' and `set-match-data' now have an optional
-argument `reseat'.  When non-nil, all markers in the match data list
-passed to these functions will be reseated to point to nowhere.
-
-*** rx.el has new corresponding `symbol-start' and `symbol-end' elements.
-
-*** The default value of `sentence-end' is now defined using the new
-variable `sentence-end-without-space', which contains such characters
-that end a sentence without following spaces.
-
-The function `sentence-end' should be used to obtain the value of the
-variable `sentence-end'.  If the variable `sentence-end' is nil, then
-this function returns the regexp constructed from the variables
-`sentence-end-without-period', `sentence-end-double-space' and
-`sentence-end-without-space'.
-
-** Undo changes:
-
-*** `buffer-undo-list' allows programmable elements.
-
-These elements have the form (apply FUNNAME . ARGS), where FUNNAME is
-a symbol other than t or nil.  That stands for a high-level change
-that should be undone by evaluating (apply FUNNAME ARGS).
-
-These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
-which indicates that the change which took place was limited to the
-range BEG...END and increased the buffer size by DELTA.
-
-*** If the buffer's undo list for the current command gets longer than
-`undo-outer-limit', garbage collection empties it.  This is to prevent
-it from using up the available memory and choking Emacs.
-
-** Killing and yanking changes:
-
-*** New `yank-handler' text property can be used to control how
-previously killed text on the kill ring is reinserted.
-
-The value of the `yank-handler' property must be a list with one to four
-elements with the following format:
-  (FUNCTION PARAM NOEXCLUDE UNDO).
-
-The `insert-for-yank' function looks for a yank-handler property on
-the first character on its string argument (typically the first
-element on the kill-ring).  If a `yank-handler' property is found,
-the normal behavior of `insert-for-yank' is modified in various ways:
-
-  When FUNCTION is present and non-nil, it is called instead of `insert'
-to insert the string.  FUNCTION takes one argument--the object to insert.
-  If PARAM is present and non-nil, it replaces STRING as the object
-passed to FUNCTION (or `insert'); for example, if FUNCTION is
-`yank-rectangle', PARAM should 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
-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
-by `yank-pop' to undo the insertion of the current object.  It is
-called with two arguments, the start and end of the current region.
-FUNCTION can set `yank-undo-function' to override the UNDO value.
-
-*** The functions `kill-new', `kill-append', and `kill-region' now have an
-optional argument to specify the `yank-handler' text property to put on
-the killed text.
-
-*** The function `yank-pop' will now use a non-nil value of the variable
-`yank-undo-function' (instead of `delete-region') to undo the previous
-`yank' or `yank-pop' command (or a call to `insert-for-yank').  The function
-`insert-for-yank' automatically sets that variable according to the UNDO
-element of the string argument's `yank-handler' text property if present.
-
-*** The function `insert-for-yank' now supports strings where the
-`yank-handler' property does not span the first character of the
-string.  The old behavior is available if you call
-`insert-for-yank-1' instead.
-
-** Syntax table changes:
-
-*** The new function `syntax-ppss' provides an efficient way to find the
-current syntactic context at point.
-
-*** The new function `syntax-after' returns the syntax code
-of the character after a specified buffer position, taking account
-of text properties as well as the character code.
-
-*** `syntax-class' extracts the class of a syntax code (as returned
-by `syntax-after').
-
-*** The macro `with-syntax-table' no longer copies the syntax table.
-
-** File operation changes:
-
-*** New vars `exec-suffixes' and `load-suffixes' used when
-searching for an executable or an Emacs Lisp file.
-
-*** New function `locate-file' searches for a file in a list of directories.
-`locate-file' accepts a name of a file to search (a string), and two
-lists: a list of directories to search in and a list of suffixes to
-try; typical usage might use `exec-path' and `load-path' for the list
-of directories, and `exec-suffixes' and `load-suffixes' for the list
-of suffixes.  The function also accepts a predicate argument to
-further filter candidate files.
-
-One advantage of using this function is that the list of suffixes in
-`exec-suffixes' is OS-dependant, so this function will find
-executables without polluting Lisp code with OS dependencies.
-
-*** The new function `file-remote-p' tests a file name and returns
-non-nil if it specifies a remote file (one that Emacs accesses using
-its own special methods and not directly through the file system).
-The value in that case is an identifier for the remote file system.
-
-*** The new hook `before-save-hook' is invoked by `basic-save-buffer'
-before saving buffers.  This allows packages to perform various final
-tasks.  For example, it can be used by the copyright package to make
-sure saved files have the current year in any copyright headers.
-
-*** `file-chase-links' now takes an optional second argument LIMIT which
-specifies the maximum number of links to chase through.  If after that
-many iterations the file name obtained is still a symbolic link,
-`file-chase-links' returns it anyway.
-
-*** Functions `file-name-sans-extension' and `file-name-extension' now
-ignore the leading dots in file names, so that file names such as
-`.emacs' are treated as extensionless.
-
-*** If `buffer-save-without-query' is non-nil in some buffer,
-`save-some-buffers' will always save that buffer without asking (if
-it's modified).
-
-*** `buffer-auto-save-file-format' is the new name for what was
-formerly called `auto-save-file-format'.  It is now a permanent local.
-
-*** `visited-file-modtime' and `calendar-time-from-absolute' now return
-a list of two integers, instead of a cons.
-
-*** The precedence of file name handlers has been changed.
-
-Instead of choosing the first handler that matches,
-`find-file-name-handler' now gives precedence to a file name handler
-that matches nearest the end of the file name.  More precisely, the
-handler whose (match-beginning 0) is the largest is chosen.  In case
-of ties, the old "first matched" rule applies.
-
-*** A file name handler can declare which operations it handles.
-
-You do this by putting an `operation' property on the handler name
-symbol.  The property value should be a list of the operations that
-the handler really handles.  It won't be called for any other
-operations.
-
-This is useful for autoloaded handlers, to prevent them from being
-autoloaded when not really necessary.
-
-*** The function `make-auto-save-file-name' is now handled by file
-name handlers.  This will be exploited for remote files mainly.
-
-*** The function `file-name-completion' accepts an optional argument
-PREDICATE, and rejects completion candidates that don't satisfy PREDICATE.
-
-*** The new primitive `set-file-times' sets a file's access and
-modification times.  Magic file name handlers can handle this
-operation.
-
-** Input changes:
-
-*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that
-display a prompt but don't use the minibuffer, now display the prompt
-using the text properties (esp. the face) of the prompt string.
-
-*** The functions `read-event', `read-char', and `read-char-exclusive'
-have a new optional argument SECONDS.  If non-nil, this specifies a
-maximum time to wait for input, in seconds.  If no input arrives after
-this time elapses, the functions stop waiting and return nil.
-
-*** An interactive specification can now use the code letter `U' to get
-the up-event that was discarded in case the last key sequence read for a
-previous `k' or `K' argument was a down-event; otherwise nil is used.
-
-*** The new interactive-specification `G' reads a file name
-much like `F', but if the input is a directory name (even defaulted),
-it returns just the directory name.
-
-*** (while-no-input BODY...) runs BODY, but only so long as no input
-arrives.  If the user types or clicks anything, BODY stops as if a
-quit had occurred.  `while-no-input' returns the value of BODY, if BODY
-finishes.  It returns nil if BODY was aborted by a quit, and t if
-BODY was aborted by arrival of input.
-
-*** `recent-keys' now returns the last 300 keys.
-
-** Minibuffer changes:
-
-*** The new function `minibufferp' returns non-nil if its optional
-buffer argument is a minibuffer.  If the argument is omitted, it
-defaults to the current buffer.
-
-*** New function `minibuffer-selected-window' returns the window which
-was selected when entering the minibuffer.
-
-*** The `read-file-name' function now takes an additional argument which
-specifies a predicate which the file name read must satisfy.  The
-new variable `read-file-name-predicate' contains the predicate argument
-while reading the file name from the minibuffer; the predicate in this
-variable is used by read-file-name-internal to filter the completion list.
-
-*** The new variable `read-file-name-function' can be used by Lisp code
-to override the built-in `read-file-name' function.
-
-*** The new variable `read-file-name-completion-ignore-case' specifies
-whether completion ignores case when reading a file name with the
-`read-file-name' function.
-
-*** The new function `read-directory-name' is for reading a directory name.
-
-It is like `read-file-name' except that the defaulting works better
-for directories, and completion inside it shows only directories.
-
-*** The new variable `history-add-new-input' specifies whether 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.
-
-** Completion changes:
-
-*** The new function `minibuffer-completion-contents' returns the contents
-of the minibuffer just before point.  That is what completion commands
-operate on.
-
-*** The functions `all-completions' and `try-completion' now accept lists
-of strings as well as hash-tables additionally to alists, obarrays
-and functions.  Furthermore, the function `test-completion' is now
-exported to Lisp.  The keys in alists and hash tables can be either
-strings or symbols, which are automatically converted with to strings.
-
-*** The new macro `dynamic-completion-table' supports using functions
-as a dynamic completion table.
-
-  (dynamic-completion-table FUN)
-
-FUN is called with one argument, the string for which completion is required,
-and it should return an alist containing all the intended possible
-completions.  This alist can be a full list of possible completions so that FUN
-can ignore the value of its argument.  If completion is performed in the
-minibuffer, FUN will be called in the buffer from which the minibuffer was
-entered.  `dynamic-completion-table' then computes the completion.
-
-*** The new macro `lazy-completion-table' initializes a variable
-as a lazy completion table.
-
-  (lazy-completion-table VAR FUN)
-
-If the completion table VAR is used for the first time (e.g., by passing VAR
-as an argument to `try-completion'), the function FUN is called with no
-arguments.  FUN must return the completion table that will be stored in VAR.
-If completion is requested in the minibuffer, FUN will be called in the buffer
-from which the minibuffer was entered.  The return value of
-`lazy-completion-table' must be used to initialize the value of VAR.
-
-** Abbrev changes:
-
-*** `define-abbrev' now accepts an optional argument SYSTEM-FLAG.
-
-If non-nil, this marks the abbrev as a "system" abbrev, which means
-that it won't be stored in the user's abbrevs file if he saves the
-abbrevs.  Major modes that predefine some abbrevs should always
-specify this flag.
-
-*** The new function `copy-abbrev-table' copies an abbrev table.
-
-It returns a new abbrev table that is a copy of a given abbrev table.
-
-** Enhancements to keymaps.
-
-*** Cleaner way to enter key sequences.
-
-You can enter a constant key sequence in a more natural format, the
-same one used for saving keyboard macros, using the macro `kbd'.  For
-example,
-
-(kbd "C-x C-f") => "\^x\^f"
-
-Actually, this format has existed since Emacs 20.1.
-
-*** Interactive commands can be remapped through keymaps.
-
-This is an alternative to using `defadvice' or `substitute-key-definition'
-to modify the behavior of a key binding using the normal keymap
-binding and lookup functionality.
-
-When a key sequence is bound to a command, and that command is
-remapped to another command, that command is run instead of the
-original command.
-
-Example:
-Suppose that minor mode `my-mode' has defined the commands
-`my-kill-line' and `my-kill-word', and it wants C-k (and any other key
-bound to `kill-line') to run the command `my-kill-line' instead of
-`kill-line', and likewise it wants to run `my-kill-word' instead of
-`kill-word'.
-
-Instead of rebinding C-k and the other keys in the minor mode map,
-command remapping allows you to directly map `kill-line' into
-`my-kill-line' and `kill-word' into `my-kill-word' using `define-key':
-
-   (define-key my-mode-map [remap kill-line] 'my-kill-line)
-   (define-key my-mode-map [remap kill-word] 'my-kill-word)
-
-When `my-mode' is enabled, its minor mode keymap is enabled too.  So
-when the user types C-k, that runs the command `my-kill-line'.
-
-Only one level of remapping is supported.  In the above example, this
-means that if `my-kill-line' is remapped to `other-kill', then C-k still
-runs `my-kill-line'.
-
-The following changes have been made to provide command remapping:
-
-- Command remappings are defined using `define-key' with a prefix-key
-  `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
-  to definition DEF in keymap MAP.  The definition is not limited to
-  another command; it can be anything accepted for a normal binding.
-
-- The new function `command-remapping' returns the binding for a
-  remapped command in the current keymaps, or nil if not remapped.
-
-- `key-binding' now remaps interactive commands unless the optional
-  third argument NO-REMAP is non-nil.
-
-- `where-is-internal' now returns nil for a remapped command (e.g.
-  `kill-line', when `my-mode' is enabled), and the actual key binding for
-  the command it is remapped to (e.g. C-k for my-kill-line).
-  It also has a new optional fifth argument, NO-REMAP, which inhibits
-  remapping if non-nil (e.g. it returns "C-k" for `kill-line', and
-  "<kill-line>" for `my-kill-line').
-
-- The new variable `this-original-command' contains the original
-  command before remapping.  It is equal to `this-command' when the
-  command was not remapped.
-
-*** The definition of a key-binding passed to define-key can use XEmacs-style
-key-sequences, such as [(control a)].
-
-*** New keymaps for typing file names
-
-Two new keymaps, `minibuffer-local-filename-completion-map'  and
-`minibuffer-local-must-match-filename-map', apply whenever
-Emacs reads a file name in the minibuffer.  These key maps override
-the usual binding of SPC to `minibuffer-complete-word' (so that file
-names with embedded spaces could be typed without the need to quote
-the spaces).
-
-*** New function `current-active-maps' returns a list of currently
-active keymaps.
-
-*** New function `describe-buffer-bindings' inserts the list of all
-defined keys and their definitions.
-
-*** New function `keymap-prompt' returns the prompt string of a keymap.
-
-*** If text has a `keymap' property, that keymap takes precedence
-over minor mode keymaps.
-
-*** The `keymap' property now also works at the ends of overlays and
-text properties, according to their stickiness.  This also means that it
-works with empty overlays.  The same hold for the `local-map' property.
-
-*** `key-binding' will now look up mouse-specific bindings.  The
-keymaps consulted by `key-binding' will get adapted if the key
-sequence is started with a mouse event.  Instead of letting the click
-position be determined from the key sequence itself, it is also
-possible to specify it with an optional argument explicitly.
-
-*** `define-key-after' now accepts keys longer than 1.
-
-*** (map-keymap FUNCTION KEYMAP) applies the function to each binding
-in the keymap.
-
-*** New variable `emulation-mode-map-alists'.
-
-Lisp packages using many minor mode keymaps can now maintain their own
-keymap alist separate from `minor-mode-map-alist' by adding their
-keymap alist to this list.
-
-*** Dense keymaps now handle inheritance correctly.
-
-Previously a dense keymap would hide all of the simple-char key
-bindings of the parent keymap.
-
-** Enhancements to process support
-
-*** Adaptive read buffering of subprocess output.
-
-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.  This behavior can be remedied to some extent
-by setting the new variable `process-adaptive-read-buffering' to a
-non-nil value (the default), as it will automatically delay reading
-from such processes, allowing them to produce more output before
-Emacs tries to read it.
-
-*** Processes now have an associated property list where programs can
-maintain process state and other per-process related information.
-
-Use the new functions `process-get' and `process-put' to access, add,
-and modify elements on this property list.  Use the new functions
-`process-plist' and `set-process-plist' to access and replace the
-entire property list of a process.
-
-*** Function `list-processes' now has an optional argument; if non-nil,
-it lists only the processes whose query-on-exit flag is set.
-
-*** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'.
-
-These replace the old function `process-kill-without-query'.  That
-function is still supported, but new code should use the new
-functions.
-
-*** The new function `call-process-shell-command'.
-
-This executes a shell command synchronously in a separate process.
-
-*** The new function `process-file' is similar to `call-process', but
-obeys file handlers.  The file handler is chosen based on
-`default-directory'.
-
-*** Function `signal-process' now accepts a process object or process
-name in addition to a process id to identify the signaled process.
-
-*** Function `accept-process-output' has a new optional fourth arg
-JUST-THIS-ONE.  If non-nil, only output from the specified process
-is handled, suspending output from other processes.  If value is an
-integer, also inhibit running timers.  This feature is generally not
-recommended, but may be necessary for specific applications, such as
-speech synthesis.
-
-*** A process filter function gets the output as multibyte string
-if the process specifies t for its filter's multibyteness.
-
-That multibyteness is decided by the value of
-`default-enable-multibyte-characters' when the process is created, and
-you can change it later with `set-process-filter-multibyte'.
-
-*** The new function `set-process-filter-multibyte' sets the
-multibyteness of the strings passed to the process's filter.
-
-*** The new function `process-filter-multibyte-p' returns the
-multibyteness of the strings passed to the process's filter.
-
-*** If a process's coding system is `raw-text' or `no-conversion' and its
-buffer is multibyte, the output of the process is at first converted
-to multibyte by `string-to-multibyte' then inserted in the buffer.
-Previously, it was converted to multibyte by `string-as-multibyte',
-which was not compatible with the behavior of file reading.
-
-** Enhanced networking support.
-
-*** The new `make-network-process' function makes network connections.
-It allows opening of stream and datagram connections to a server, as well as
-create a stream or datagram server inside Emacs.
-
-- A server is started using :server t arg.
-- Datagram connection is selected using :type 'datagram arg.
-- A server can open on a random port using :service t arg.
-- Local sockets are supported using :family 'local arg.
-- IPv6 is supported (when available).  You may explicitly select IPv6
-  using :family 'ipv6 arg.
-- Non-blocking connect is supported using :nowait t arg.
-- The process' property list can be initialized using :plist PLIST arg;
-  a copy of the server process' property list is automatically inherited
-  by new client processes created to handle incoming connections.
-
-To test for the availability of a given feature, use featurep like this:
-  (featurep 'make-network-process '(:type datagram))
-  (featurep 'make-network-process '(:family ipv6))
-
-*** The old `open-network-stream' now uses `make-network-process'.
-
-*** `process-contact' has an optional KEY argument.
-
-Depending on this argument, you can get the complete list of network
-process properties or a specific property.  Using :local or :remote as
-the KEY, you get the address of the local or remote end-point.
-
-An Inet address is represented as a 5 element vector, where the first
-4 elements contain the IP address and the fifth is the port number.
-
-*** New functions `stop-process' and `continue-process'.
-
-These functions stop and restart communication through a network
-connection.  For a server process, no connections are accepted in the
-stopped state.  For a client process, no input is received in the
-stopped state.
-
-*** New function `format-network-address'.
-
-This function reformats the Lisp representation of a network address
-to a printable string.  For example, an IP address A.B.C.D and port
-number P is represented as a five element vector [A B C D P], and the
-printable string returned for this vector is "A.B.C.D:P".  See the doc
-string for other formatting options.
-
-*** New function `network-interface-list'.
-
-This function returns a list of network interface names and their
-current network addresses.
-
-*** New function `network-interface-info'.
-
-This function returns the network address, hardware address, current
-status, and other information about a specific network interface.
-
-*** New functions `process-datagram-address', `set-process-datagram-address'.
-
-These functions are used with datagram-based network processes to get
-and set the current address of the remote partner.
-
-*** Deleting a network process with `delete-process' calls the sentinel.
-
-The status message passed to the sentinel for a deleted network
-process is "deleted".  The message passed to the sentinel when the
-connection is closed by the remote peer has been changed to
-"connection broken by remote peer".
-
-** Using window objects:
-
-*** You can now make a window as short as one line.
-
-A window that is just one line tall does not display either a mode
-line or a header line, even if the variables `mode-line-format' and
-`header-line-format' call for them.  A window that is two lines tall
-cannot display both a mode line and a header line at once; if the
-variables call for both, only the mode line actually appears.
-
-*** The new function `window-inside-edges' returns the edges of the
-actual text portion of the window, not including the scroll bar or
-divider line, the fringes, the display margins, the header line and
-the mode line.
-
-*** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
-return window edges in units of pixels, rather than columns and lines.
-
-*** New function `window-body-height'.
-
-This is like `window-height' but does not count the mode line or the
-header line.
-
-*** The new function `adjust-window-trailing-edge' moves the right
-or bottom edge of a window.  It does not move other window edges.
-
-*** The new macro `with-selected-window' temporarily switches the
-selected window without impacting the order of `buffer-list'.
-It saves and restores the current buffer, too.
-
-*** `select-window' takes an optional second argument NORECORD.
-
-This is like `switch-to-buffer'.
-
-*** `save-selected-window' now saves and restores the selected window
-of every frame.  This way, it restores everything that can be changed
-by calling `select-window'.  It also saves and restores the current
-buffer.
-
-*** `set-window-buffer' has an optional argument KEEP-MARGINS.
-
-If non-nil, that says to preserve the window's current margin, fringe,
-and scroll-bar settings.
-
-*** The new function `window-tree' returns a frame's window tree.
-
-*** The functions `get-lru-window' and `get-largest-window' take an optional
-argument `dedicated'.  If non-nil, those functions do not ignore
-dedicated windows.
-
-** Customizable fringe bitmaps
-
-*** There are new display properties, `left-fringe' and `right-fringe',
-that can be used to show a specific bitmap in the left or right fringe
-bitmap of the display line.
-
-Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a
-symbol identifying a fringe bitmap, either built-in or defined with
-`define-fringe-bitmap', and FACE is an optional face name to be used
-for displaying the bitmap instead of the default `fringe' face.
-When specified, FACE is automatically merged with the `fringe' face.
-
-*** New buffer-local variables `fringe-indicator-alist' and
-`fringe-cursor-alist' maps between logical (internal) fringe indicator
-and cursor symbols and the actual fringe bitmaps to be displayed.
-This decouples the logical meaning of the fringe indicators from the
-physical appearance, as well as allowing different fringe bitmaps to
-be used in different windows showing different buffers.
-
-*** New function `define-fringe-bitmap' can now be used to create new
-fringe bitmaps, as well as change the built-in fringe bitmaps.
-
-*** New function `destroy-fringe-bitmap' deletes a fringe bitmap
-or restores a built-in one to its default value.
-
-*** New function `set-fringe-bitmap-face' specifies the face to be
-used for a specific fringe bitmap.  The face is automatically merged
-with the `fringe' face, so normally, the face should only specify the
-foreground color of the bitmap.
-
-*** New function `fringe-bitmaps-at-pos' returns the current fringe
-bitmaps in the display line at a given buffer position.
-
-** Other window fringe features:
-
-*** Controlling the default left and right fringe widths.
-
-The default left and right fringe widths for all windows of a frame
-can now be controlled by setting the `left-fringe' and `right-fringe'
-frame parameters to an integer value specifying the width in pixels.
-Setting the width to 0 effectively removes the corresponding fringe.
-
-The actual default fringe widths for the frame may deviate from the
-specified widths, since the combined fringe widths must match an
-integral number of columns.  The extra width is distributed evenly
-between the left and right fringe.  To force a specific fringe width,
-specify the width as a negative integer (if both widths are negative,
-only the left fringe gets the specified width).
-
-Setting the width to nil (the default), restores the default fringe
-width which is the minimum number of pixels necessary to display any
-of the currently defined fringe bitmaps.  The width of the built-in
-fringe bitmaps is 8 pixels.
-
-*** Per-window fringe and scrollbar settings
-
-**** Windows can now have their own individual fringe widths and
-position settings.
-
-To control the fringe widths of a window, either set the buffer-local
-variables `left-fringe-width', `right-fringe-width', or call
-`set-window-fringes'.
-
-To control the fringe position in a window, that is, whether fringes
-are positioned between the display margins and the window's text area,
-or at the edges of the window, either set the buffer-local variable
-`fringes-outside-margins' or call `set-window-fringes'.
-
-The function `window-fringes' can be used to obtain the current
-settings.  To make `left-fringe-width', `right-fringe-width', and
-`fringes-outside-margins' take effect, you must set them before
-displaying the buffer in a window, or use `set-window-buffer' to force
-an update of the display margins.
-
-**** Windows can now have their own individual scroll-bar settings
-controlling the width and position of scroll-bars.
-
-To control the scroll-bar of a window, either set the buffer-local
-variables `scroll-bar-mode' and `scroll-bar-width', or call
-`set-window-scroll-bars'.  The function `window-scroll-bars' can be
-used to obtain the current settings.  To make `scroll-bar-mode' and
-`scroll-bar-width' take effect, you must set them before displaying
-the buffer in a window, or use `set-window-buffer' to force an update
-of the display margins.
-
-** Redisplay features:
-
-*** `sit-for' can now be called with args (SECONDS &optional NODISP).
-
-*** Iconifying or deiconifying a frame no longer makes sit-for return.
-
-*** New function `redisplay' causes an immediate redisplay if no input is
-available, equivalent to (sit-for 0).  The call (redisplay t) forces
-an immediate redisplay even if input is pending.
-
-*** New function `force-window-update' can initiate a full redisplay of
-one or all windows.  Normally, this is not needed as changes in window
-contents are detected automatically.  However, certain implicit
-changes to mode lines, header lines, or display properties may require
-forcing an explicit window update.
-
-*** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
-to display CHAR.  More precisely, if the selected frame's fontset has
-a font to display the character set that CHAR belongs to.
-
-Fontsets can specify a font on a per-character basis; when the fontset
-does that, this value cannot be accurate.
-
-*** You can define multiple overlay arrows via the new
-variable `overlay-arrow-variable-list'.
-
-It contains a list of variables which contain overlay arrow position
-markers, including the original `overlay-arrow-position' variable.
-
-Each variable on this list can have individual `overlay-arrow-string'
-and `overlay-arrow-bitmap' properties that specify an overlay arrow
-string (for non-window terminals) or fringe bitmap (for window
-systems) to display at the corresponding overlay arrow position.
-If either property is not set, the default `overlay-arrow-string' or
-'overlay-arrow-fringe-bitmap' will be used.
-
-*** New `line-height' and `line-spacing' properties for newline characters
-
-A newline can now have `line-height' and `line-spacing' text or overlay
-properties that control the height of the corresponding display row.
-
-If the `line-height' property value is t, the newline does not
-contribute to the height of the display row; instead the height of the
-newline glyph is reduced.  Also, a `line-spacing' property on this
-newline is ignored.  This can be used to tile small images or image
-slices without adding blank areas between the images.
-
-If the `line-height' property value is a positive integer, the value
-specifies the minimum line height in pixels.  If necessary, the line
-height it increased by increasing the line's ascent.
-
-If the `line-height' property value is a float, the minimum line
-height is calculated by multiplying the default frame line height by
-the given value.
-
-If the `line-height' property value is a cons (FACE . RATIO), the
-minimum line height is calculated as RATIO * height of named FACE.
-RATIO is int or float.  If FACE is t, it specifies the current face.
-
-If the `line-height' property value is a cons (nil . RATIO), the line
-height is calculated as RATIO * actual height of the line's contents.
-
-If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies
-the line height as described above, while TOTAL is any of the forms
-described above and specifies the total height of the line, causing a
-varying number of pixels to be inserted after the line to make it line
-exactly that many pixels high.
-
-If the `line-spacing' property value is an positive integer, the value
-is used as additional pixels to insert after the display line; this
-overrides the default frame `line-spacing' and any buffer local value of
-the `line-spacing' variable.
-
-If the `line-spacing' property is a float or cons, the line spacing
-is calculated as specified above for the `line-height' property.
-
-*** The buffer local `line-spacing' variable can now have a float value,
-which is used as a height relative to the default frame line height.
-
-*** Enhancements to stretch display properties
-
-The display property stretch specification form `(space PROPS)', where
-PROPS is a property list, now allows pixel based width and height
-specifications, as well as enhanced horizontal text alignment.
-
-The value of these properties can now be a (primitive) expression
-which is evaluated during redisplay.  The following expressions
-are supported:
-
-EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM
-NUM  ::= INTEGER | FLOAT | SYMBOL
-UNIT ::= in | mm | cm | width | height
-ELEM ::= left-fringe | right-fringe | left-margin | right-margin
-      |  scroll-bar | text
-POS  ::= left | center | right
-FORM ::= (NUM . EXPR) | (OP EXPR ...)
-OP   ::= + | -
-
-The form `NUM' specifies a fractional width or height of the default
-frame font size.  The form `(NUM)' specifies an absolute number of
-pixels.  If a symbol is specified, its buffer-local variable binding
-is used.  The `in', `mm', and `cm' units specifies the number of
-pixels per inch, milli-meter, and centi-meter, resp.  The `width' and
-`height' units correspond to the width and height of the current face
-font.  An image specification corresponds to the width or height of
-the image.
-
-The `left-fringe', `right-fringe', `left-margin', `right-margin',
-`scroll-bar', and `text' elements specify to the width of the
-corresponding area of the window.
-
-The `left', `center', and `right' positions can be used with :align-to
-to specify a position relative to the left edge, center, or right edge
-of the text area.  One of the above window elements (except `text')
-can also be used with :align-to to specify that the position is
-relative to the left edge of the given area.  Once the base offset for
-a relative position has been set (by the first occurrence of one of
-these symbols), further occurrences of these symbols are interpreted as
-the width of the area.
-
-For example, to align to the center of the left-margin, use
-    :align-to (+ left-margin (0.5 . left-margin))
-
-If no specific base offset is set for alignment, it is always relative
-to the left edge of the text area.  For example, :align-to 0 in a
-header line aligns with the first text column in the text area.
-
-The value of the form `(NUM . EXPR)' is the value of NUM multiplied by
-the value of the expression EXPR.  For example, (2 . in) specifies a
-width of 2 inches, while (0.5 . IMAGE) specifies half the width (or
-height) of the specified image.
-
-The form `(+ EXPR ...)' adds up the value of the expressions.
-The form `(- EXPR ...)' negates or subtracts the value of the expressions.
-
-*** Normally, the cursor is displayed at the end of any overlay and
-text property string that may be present at the current window
-position.  The cursor can now be placed on any character of such
-strings by giving that character a non-nil `cursor' text property.
-
-*** The display space :width and :align-to text properties are now
-supported on text terminals.
-
-*** Support for displaying image slices
-
-**** New display property (slice X Y WIDTH HEIGHT) can be used with
-an image property to display only a specific slice of the image.
-
-**** Function `insert-image' has new optional fourth arg to
-specify image slice (X Y WIDTH HEIGHT).
-
-**** New function `insert-sliced-image' inserts a given image as a
-specified number of evenly sized slices (rows x columns).
-
-*** Images can now have an associated image map via the :map property.
-
-An image map is an alist where each element has the format (AREA ID PLIST).
-An AREA is specified as either a rectangle, a circle, or a polygon:
-A rectangle is a cons (rect . ((X0 . Y0) . (X1 . Y1))) specifying the
-pixel coordinates of the upper left and bottom right corners.
-A circle is a cons (circle . ((X0 . Y0) . R)) specifying the center
-and the radius of the circle; R can be a float or integer.
-A polygon is a cons (poly . [X0 Y0 X1 Y1 ...]) where each pair in the
-vector describes one corner in the polygon.
-
-When the mouse pointer is above a hot-spot area of an image, the
-PLIST of that hot-spot is consulted; if it contains a `help-echo'
-property it defines a tool-tip for the hot-spot, and if it contains
-a `pointer' property, it defines the shape of the mouse cursor when
-it is over the hot-spot.  See the variable `void-area-text-pointer'
-for possible pointer shapes.
-
-When you click the mouse when the mouse pointer is over a hot-spot,
-an event is composed by combining the ID of the hot-spot with the
-mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
-
-*** The function `find-image' now searches in etc/images/ and etc/.
-The new variable `image-load-path' is a list of locations in which to
-search for image files.  The default is to search in etc/images, then
-in etc/, and finally in the directories specified by `load-path'.
-Subdirectories of etc/ and etc/images are not recursively searched; if
-you put an image file in a subdirectory, you have to specify it
-explicitly; for example, if an image is put in etc/images/foo/bar.xpm:
-
-  (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
-
-Note that all images formerly located in the lisp directory have been
-moved to etc/images.
-
-*** New function `image-load-path-for-library' returns a suitable
-search path for images relative to library. This function is useful in
-external packages to save users from having to update
-`image-load-path'.
-
-*** The new variable `max-image-size' defines the maximum size of
-images that Emacs will load and display.
-
-*** The new variable `display-mm-dimensions-alist' can be used to
-override incorrect graphical display dimensions returned by functions
-`display-mm-height' and `display-mm-width'.
-
-** Mouse pointer features:
-
-*** The mouse pointer shape in void text areas (i.e. after the end of a
-line or below the last line in the buffer) of the text window is now
-controlled by the new variable `void-text-area-pointer'.  The default
-is to use the `arrow' (non-text) pointer.  Other choices are `text'
-(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
-
-*** The mouse pointer shape over an image can now be controlled by the
-:pointer image property.
-
-*** The mouse pointer shape over ordinary text or images can now be
-controlled/overridden via the `pointer' text property.
-
-** Mouse event enhancements:
-
-*** All mouse events now include a buffer position regardless of where
-you clicked.  For mouse clicks in window margins and fringes, this is
-a sensible buffer position corresponding to the surrounding text.
-
-*** Mouse events for clicks on window fringes now specify `left-fringe'
-or `right-fringe' as the area.
-
-*** Mouse events include actual glyph column and row for all event types
-and all areas.
-
-*** Mouse events can now indicate an image object clicked on.
-
-*** Mouse events include relative X and Y pixel coordinates relative to
-the top left corner of the object (image or character) clicked on.
-
-*** Mouse events include the pixel width and height of the object
-(image or character) clicked on.
-
-*** Function `mouse-set-point' now works for events outside text area.
-
-*** `posn-point' now returns buffer position for non-text area events.
-
-*** New function `posn-area' returns window area clicked on (nil means
-text area).
-
-*** New function `posn-actual-col-row' returns the actual glyph coordinates
-of the mouse event position.
-
-*** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'.
-
-These return the image or string object of a mouse click, the X and Y
-pixel coordinates relative to the top left corner of that object, and
-the total width and height of that object.
-
-** Text property and overlay changes:
-
-*** Arguments for `remove-overlays' are now optional, so that you can
-remove all overlays in the buffer with just (remove-overlays).
-
-*** New variable `char-property-alias-alist'.
-
-This variable allows you to create alternative names for text
-properties.  It works at the same level as `default-text-properties',
-although it applies to overlays as well.  This variable was introduced
-to implement the `font-lock-face' property.
-
-*** New function `get-char-property-and-overlay' accepts the same
-arguments as `get-char-property' and returns a cons whose car is the
-return value of `get-char-property' called with those arguments and
-whose cdr is the overlay in which the property was found, or nil if
-it was found as a text property or not found at all.
-
-*** The new function `remove-list-of-text-properties'.
-
-It is like `remove-text-properties' except that it takes a list of
-property names as argument rather than a property list.
-
-** Face changes
-
-*** The variable `facemenu-unlisted-faces' has been removed.
-Emacs has a lot more faces than in the past, and nearly all of them
-needed to be excluded.  The new variable `facemenu-listed-faces' lists
-the faces to include in the face menu.
-
-*** The new face attribute condition `min-colors' can be used to tailor
-the face color to the number of colors supported by a display, and
-define the foreground and background colors accordingly so that they
-look best on a terminal that supports at least this many colors.  This
-is now the preferred method for defining default faces in a way that
-makes a good use of the capabilities of the display.
-
-*** New function `display-supports-face-attributes-p' can be used to test
-whether a given set of face attributes is actually displayable.
-
-A new predicate `supports' has also been added to the `defface' face
-specification language, which can be used to do this test for faces
-defined with `defface'.
-
-*** The special treatment of faces whose names are of the form `fg:COLOR'
-or `bg:COLOR' has been removed.  Lisp programs should use the
-`defface' facility for defining faces with specific colors, or use
-the feature of specifying the face attributes :foreground and :background
-directly in the `face' property instead of using a named face.
-
-*** The first face specification element in a defface can specify
-`default' instead of frame classification.  Then its attributes act as
-defaults that apply to all the subsequent cases (and can be overridden
-by them).
-
-*** The function `face-differs-from-default-p' now truly checks
-whether the given face displays differently from the default face or
-not (previously it did only a very cursory check).
-
-*** `face-attribute', `face-foreground', `face-background', `face-stipple'.
-
-These now accept a new optional argument, INHERIT, which controls how
-face inheritance is used when determining the value of a face
-attribute.
-
-*** New functions `face-attribute-relative-p' and `merge-face-attribute'
-help with handling relative face attributes.
-
-*** The priority of faces in an :inherit attribute face list is reversed.
-
-If a face contains an :inherit attribute with a list of faces, earlier
-faces in the list override later faces in the list; in previous
-releases of Emacs, the order was the opposite.  This change was made
-so that :inherit face lists operate identically to face lists in text
-`face' properties.
-
-*** The variable `face-font-rescale-alist' specifies how much larger
-(or smaller) font we should use.  For instance, if the value is
-'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
-point, we actually use a font of 13 point if the font matches
-SOME-FONTNAME-PATTERN.
-
-*** On terminals, faces with the :inverse-video attribute are displayed
-with swapped foreground and background colors even when one of them is
-not specified.  In previous releases of Emacs, if either foreground
-or background color was unspecified, colors were not swapped.  This
-was inconsistent with the face behavior under X.
-
-*** `set-fontset-font', `fontset-info', `fontset-font' now operate on
-the default fontset if the argument NAME is nil..
-
-** Font-Lock changes:
-
-*** New special text property `font-lock-face'.
-
-This property acts like the `face' property, but it is controlled by
-M-x font-lock-mode.  It is not, strictly speaking, a builtin text
-property.  Instead, it is implemented inside font-core.el, using the
-new variable `char-property-alias-alist'.
-
-*** font-lock can manage arbitrary text-properties beside `face'.
-
-**** the FACENAME returned in `font-lock-keywords' can be a list of the
-form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other
-properties than `face'.
-
-**** `font-lock-extra-managed-props' can be set to make sure those
-extra properties are automatically cleaned up by font-lock.
-
-*** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
-
-If a piece of text with that property gets contextually refontified
-(see `jit-lock-defer-contextually'), then all of that text will
-be refontified.  This is useful when the syntax of a textual element
-depends on text several lines further down (and when `font-lock-multiline'
-is not appropriate to solve that problem).  For example in Perl:
-
-       s{
-               foo
-       }{
-               bar
-       }e
-
-Adding/removing the last `e' changes the `bar' from being a piece of
-text to being a piece of code, so you'd put a `jit-lock-defer-multiline'
-property over the second half of the command to force (deferred)
-refontification of `bar' whenever the `e' is added/removed.
-
-*** `font-lock-extend-region-functions' makes it possible to alter the way
-the fontification region is chosen.  This can be used to prevent rounding
-up to whole lines, or to extend the region to include all related lines
-of multiline constructs so that such constructs get properly recognized.
-
-** Major mode mechanism changes:
-
-*** New variable `magic-mode-alist' determines major mode for a file by
-looking at the file contents.  It takes precedence over `auto-mode-alist'.
-
-*** New variable `magic-fallback-mode-alist' determines major mode for a file by
-looking at the file contents.  It is handled after `auto-mode-alist',
-only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file.
-
-*** XML or SGML major mode is selected when file starts with an `<?xml'
-or `<!DOCTYPE' declaration.
-
-*** An interpreter magic line (if present) takes precedence over the
-file name when setting the major mode.
-
-*** If new variable `auto-mode-case-fold' is set to a non-nil value,
-Emacs will perform a second case-insensitive search through
-`auto-mode-alist' if the first case-sensitive search fails.  This
-means that a file FILE.TXT is opened in text-mode, and a file
-PROG.HTML is opened in html-mode.  Note however, that independent of
-this setting, *.C files are usually recognized as C++ files.  It also
-has no effect on systems with case-insensitive file names.
-
-*** All major mode functions should now run the new normal hook
-`after-change-major-mode-hook', at their very end, after the mode
-hooks.  `run-mode-hooks' does this automatically.
-
-*** Major modes can define `eldoc-documentation-function'
-locally to provide Eldoc functionality by some method appropriate to
-the language.
-
-*** Use the new function `run-mode-hooks' to run the major mode's mode hook.
-
-*** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
-are used by `define-derived-mode' to make sure the mode hook for the
-parent mode is run at the end of the child mode.
-
-*** `define-derived-mode' by default creates a new empty abbrev table.
-It does not copy abbrevs from the parent mode's abbrev table.
-
-*** If a major mode function has a non-nil `no-clone-indirect'
-property, `clone-indirect-buffer' signals an error if you use
-it in that buffer.
-
-** Minor mode changes:
-
-*** `define-minor-mode' now accepts arbitrary additional keyword arguments
-and simply passes them to `defcustom', if applicable.
-
-*** `define-globalized-minor-mode'.
-
-This is a new name for what was formerly called
-`easy-mmode-define-global-mode'.  The old name remains as an alias.
-
-*** `minor-mode-list' now holds a list of minor mode commands.
-
-** Command loop changes:
-
-*** The new function `called-interactively-p' does what many people
-have mistakenly believed `interactive-p' to do: it returns t if the
-calling function was called through `call-interactively'.
-
-Only use this when you cannot solve the problem by adding a new
-INTERACTIVE argument to the command.
-
-*** The function `commandp' takes an additional optional argument.
-
-If it is non-nil, then `commandp' checks for a function that could be
-called with `call-interactively', and does not return t for keyboard
-macros.
-
-*** When a command returns, the command loop moves point out from
-within invisible text, in the same way it moves out from within text
-covered by an image or composition property.
-
-This makes it generally unnecessary to mark invisible text as intangible.
-This is particularly good because the intangible property often has
-unexpected side-effects since the property applies to everything
-(including `goto-char', ...) whereas this new code is only run after
-`post-command-hook' and thus does not care about intermediate states.
-
-*** If a command sets `transient-mark-mode' to `only', that
-enables Transient Mark mode for the following command only.
-During that following command, the value of `transient-mark-mode'
-is `identity'.  If it is still `identity' at the end of the command,
-the next return to the command loop changes to nil.
-
-*** Both the variable and the function `disabled-command-hook' have
-been renamed to `disabled-command-function'.  The variable
-`disabled-command-hook' has been kept as an obsolete alias.
-
-*** `emacsserver' now runs `pre-command-hook' and `post-command-hook'
-when it receives a request from emacsclient.
-
-*** `current-idle-time' reports how long Emacs has been idle.
-
-** Lisp file loading changes:
-
-*** `load-history' can now have elements of the form (t . FUNNAME),
-which means FUNNAME was previously defined as an autoload (before the
-current file redefined it).
-
-*** `load-history' now records (defun . FUNNAME) when a function is
-defined.  For a variable, it records just the variable name.
-
-*** The function `symbol-file' can now search specifically for function,
-variable or face definitions.
-
-*** `provide' and `featurep' now accept an optional second argument
-to test/provide subfeatures.  Also `provide' now checks `after-load-alist'
-and runs any code associated with the provided feature.
-
-*** The variable `recursive-load-depth-limit' has been deleted.
-Emacs now signals an error if the same file is loaded with more
-than 3 levels of nesting.
-
-** Byte compiler changes:
-
-*** The byte compiler now displays the actual line and character
-position of errors, where possible.  Additionally, the form of its
-warning and error messages have been brought into line with GNU standards
-for these.  As a result, you can use next-error and friends on the
-compilation output buffer.
-
-*** The new macro `with-no-warnings' suppresses all compiler warnings
-inside its body.  In terms of execution, it is equivalent to `progn'.
-
-*** You can avoid warnings for possibly-undefined symbols with a
-simple convention that the compiler understands.  (This is mostly
-useful in code meant to be portable to different Emacs versions.)
-Write forms like the following, or code that macroexpands into such
-forms:
-
-  (if (fboundp 'foo) <then> <else>)
-  (if (boundp 'foo) <then> <else)
-
-In the first case, using `foo' as a function inside the <then> form
-won't produce a warning if it's not defined as a function, and in the
-second case, using `foo' as a variable won't produce a warning if it's
-unbound.  The test must be in exactly one of the above forms (after
-macro expansion), but such tests can be nested.  Note that `when' and
-`unless' expand to `if', but `cond' doesn't.
-
-*** `(featurep 'xemacs)' is treated by the compiler as nil.  This
-helps to avoid noisy compiler warnings in code meant to run under both
-Emacs and XEmacs and can sometimes make the result significantly more
-efficient.  Since byte code from recent versions of XEmacs won't
-generally run in Emacs and vice versa, this optimization doesn't lose
-you anything.
-
-*** The local variable `no-byte-compile' in Lisp files is now obeyed.
-
-*** When a Lisp file uses CL functions at run-time, compiling the file
-now issues warnings about these calls, unless the file performs
-(require 'cl) when loaded.
-
-** Frame operations:
-
-*** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'.
-
-These functions return the current locations of the vertical and
-horizontal scroll bars in a frame or window.
-
-*** The new function `modify-all-frames-parameters' modifies parameters
-for all (existing and future) frames.
-
-*** The new frame parameter `tty-color-mode' specifies the mode to use
-for color support on character terminal frames.  Its value can be a
-number of colors to support, or a symbol.  See the Emacs Lisp
-Reference manual for more detailed documentation.
-
-*** When using non-toolkit scroll bars with the default width,
-the `scroll-bar-width' frame parameter value is nil.
-
-** Mode line changes:
-
-*** New function `format-mode-line'.
-
-This returns the mode line or header line of the selected (or a
-specified) window as a string with or without text properties.
-
-*** The new mode-line construct `(:propertize ELT PROPS...)' can be
-used to add text properties to mode-line elements.
-
-*** The new `%i' and `%I' constructs for `mode-line-format' can be used
-to display the size of the accessible part of the buffer on the mode
-line.
-
-*** Mouse-face on mode-line (and header-line) is now supported.
-
-** Menu manipulation changes:
-
-*** To manipulate the File menu using easy-menu, you must specify the
-proper name "file".  In previous Emacs versions, you had to specify
-"files", even though the menu item itself was changed to say "File"
-several versions ago.
-
-*** The dummy function keys made by easy-menu are now always lower case.
-If you specify the menu item name "Ada", for instance, it uses `ada'
-as the "key" bound by that key binding.
-
-This is relevant only if Lisp code looks for the bindings that were
-made with easy-menu.
-
-*** `easy-menu-define' now allows you to use nil for the symbol name
-if you don't need to give the menu a name.  If you install the menu
-into other keymaps right away (MAPS is non-nil), it usually doesn't
-need to have a name.
-
-** Mule changes:
-
-*** Already true in Emacs 21.1, but not emphasized clearly enough:
-
-Multibyte buffers can now faithfully record all 256 character codes
-from 0 to 255.  As a result, most of the past reasons to use unibyte
-buffers no longer exist.  We only know of three reasons to use them
-now:
-
-1. If you prefer to use unibyte text all of the time.
-
-2. For reading files into temporary buffers, when you want to avoid
-the time it takes to convert the format.
-
-3. For binary files where format conversion would be pointless and
-wasteful.
-
-*** The new variable `auto-coding-functions' lets you specify functions
-to examine a file being visited and deduce the proper coding system
-for it.  (If the coding system is detected incorrectly for a specific
-file, you can put a `coding:' tags to override it.)
-
-*** The new variable `ascii-case-table' stores the case table for the
-ascii character set.  Language environments (such as Turkish) may
-alter the case correspondences of ASCII characters.  This variable
-saves the original ASCII case table before any such changes.
-
-*** The new function `merge-coding-systems' fills in unspecified aspects
-of one coding system from another coding system.
-
-*** New coding system property `mime-text-unsuitable' indicates that
-the coding system's `mime-charset' is not suitable for MIME text
-parts, e.g. utf-16.
-
-*** New function `decode-coding-inserted-region' decodes a region as if
-it is read from a file without decoding.
-
-*** New CCL functions `lookup-character' and `lookup-integer' access
-hash tables defined by the Lisp function `define-translation-hash-table'.
-
-*** New function `quail-find-key' returns a list of keys to type in the
-current input method to input a character.
-
-*** `set-buffer-file-coding-system' now takes an additional argument,
-NOMODIFY.  If it is non-nil, it means don't mark the buffer modified.
-
-** Operating system access:
-
-*** The new primitive `get-internal-run-time' returns the processor
-run time used by Emacs since start-up.
-
-*** Functions `user-uid' and `user-real-uid' now return floats if the
-user UID doesn't fit in a Lisp integer.  Function `user-full-name'
-accepts a float as UID parameter.
-
-*** New function `locale-info' accesses locale information.
-
-*** On MS Windows, locale-coding-system is used to interact with the OS.
-The Windows specific variable w32-system-coding-system, which was
-formerly used for that purpose is now an alias for locale-coding-system.
-
-*** New function `redirect-debugging-output' can be used to redirect
-debugging output on the stderr file handle to a file.
-
-** GC changes:
-
-*** New variable `gc-cons-percentage' automatically grows the GC cons threshold
-as the heap size increases.
-
-*** New variables `gc-elapsed' and `gcs-done' provide extra information
-on garbage collection.
-
-*** The normal hook `post-gc-hook' is run at the end of garbage collection.
-
-The hook is run with GC inhibited, so use it with care.
-
-** Miscellaneous:
-
-*** A number of hooks have been renamed to better follow the conventions:
-
-`find-file-hooks' to `find-file-hook',
-`find-file-not-found-hooks' to `find-file-not-found-functions',
-`write-file-hooks' to `write-file-functions',
-`write-contents-hooks' to `write-contents-functions',
-`x-lost-selection-hooks' to `x-lost-selection-functions',
-`x-sent-selection-hooks' to `x-sent-selection-functions',
-`delete-frame-hook' to `delete-frame-functions'.
-
-In each case the old name remains as an alias for the moment.
-
-*** Variable `local-write-file-hooks' is marked obsolete.
-
-Use the LOCAL arg of `add-hook'.
-
-*** New function `x-send-client-message' sends a client message when
-running under X.
++++
+** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED.
+IDENTIFICATION specifies which part of the remote identifier has to be
+returned.  With CONNECTED passed non-nil, it is checked whether a
+remote connection has been established already.
+
+** The two new functions `looking-at-p' and `string-match-p' can do
+the same matching as `looking-at' and `string-match' without changing
+the match data.
+
+** The interactive-form of a function can be added post-facto via the
+`interactive-form' symbol property.  Mostly useful to add complex interactive
+forms to subroutines.
 \f
-* New Packages for Lisp Programming in Emacs 22.1
-
-** The new library button.el implements simple and fast `clickable
-buttons' in Emacs buffers.  Buttons are much lighter-weight than the
-`widgets' implemented by widget.el, and can be used by lisp code that
-doesn't require the full power of widgets.  Emacs uses buttons for
-such things as help and apropos buffers.
-
-** The new library tree-widget.el provides a widget to display a set
-of hierarchical data as an outline.  For example, the tree-widget is
-well suited to display a hierarchy of directories and files.
-
-** The new library bindat.el provides functions to unpack and pack
-binary data structures, such as network packets, to and from Lisp
-data structures.
-
-** master-mode.el implements a minor mode for scrolling a slave
-buffer without leaving your current buffer, the master buffer.
-
-It can be used by sql.el, for example: the SQL buffer is the master
-and its SQLi buffer is the slave.  This allows you to scroll the SQLi
-buffer containing the output from the SQL buffer containing the
-commands.
-
-This is how to use sql.el and master.el together: the variable
-sql-buffer contains the slave buffer.  It is a local variable in the
-SQL buffer.
-
-(add-hook 'sql-mode-hook
-   (function (lambda ()
-              (master-mode t)
-              (master-set-slave sql-buffer))))
-(add-hook 'sql-set-sqli-hook
-   (function (lambda ()
-              (master-set-slave sql-buffer))))
-
-** The new library benchmark.el does timing measurements on Lisp code.
-
-This includes measuring garbage collection time.
-
-** The new library testcover.el does test coverage checking.
-
-This is so you can tell whether you've tested all paths in your Lisp
-code.  It works with edebug.
-
-The function `testcover-start' instruments all functions in a given
-file.  Then test your code.  The function `testcover-mark-all' adds
-overlay "splotches" to the Lisp file's buffer to show where coverage
-is lacking.  The command `testcover-next-mark' (bind it to a key!)
-will move point forward to the next spot that has a splotch.
-
-Normally, a red splotch indicates the form was never completely
-evaluated; a brown splotch means it always evaluated to the same
-value.  The red splotches are skipped for forms that can't possibly
-complete their evaluation, such as `error'.  The brown splotches are
-skipped for forms that are expected to always evaluate to the same
-value, such as (setq x 14).
-
-For difficult cases, you can add do-nothing macros to your code to
-help out the test coverage tool.  The macro `noreturn' suppresses a
-red splotch.  It is an error if the argument to `noreturn' does
-return.  The macro `1value' suppresses a brown splotch for its argument.
-This macro is a no-op except during test-coverage -- then it signals
-an error if the argument actually returns differing values.
+* New Packages for Lisp Programming in Emacs 23.1
 
+** The new package avl-tree.el deals with the AVL tree data structure.
 
 \f
 ----------------------------------------------------------------------
@@ -5492,4 +411,4 @@ mode: outline
 paragraph-separate: "[         \f]*$"
 end:
 
-arch-tag: 1aca9dfa-2ac4-4d14-bebf-0007cee12793
+arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2
diff --git a/etc/NEWS.22 b/etc/NEWS.22
new file mode 100644 (file)
index 0000000..2b7c82d
--- /dev/null
@@ -0,0 +1,5495 @@
+GNU Emacs NEWS -- history of user-visible changes.
+
+Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+          Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
+Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
+If possible, use M-x report-emacs-bug.
+
+This file is about changes in Emacs version 22.
+
+See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes
+in older Emacs versions.
+
+You can narrow news to a specific version by calling `view-emacs-news'
+with a prefix argument or by typing C-u C-h C-n.
+\f
+* About external Lisp packages
+
+When you upgrade to Emacs 22 from a previous version, some older
+versions of external Lisp packages are known to behave badly.
+So in general, it is recommended that you upgrade to the latest
+versions of any external Lisp packages that you are using.
+
+You should also be aware that many Lisp packages have been included
+with Emacs 22 (see the extensive list below), and you should remove
+any older versions of these packages to ensure that the Emacs 22
+version is used.  You can use M-x list-load-path-shadows to find such
+older packages.
+
+Some specific packages that are known to cause problems are given
+below.  Emacs tries to warn you about these through `bad-packages-alist'.
+
+** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
+
+** cua.el, cua-mode.el: remove old versions.
+\f
+* Installation Changes in Emacs 22.2
+
+** Emacs is now licensed under the GNU GPL version 3 (or later).
+
+* Changes in Emacs 22.2
+
+** `browse-url-emacs' loads a URL into an Emacs buffer.  Handy for *.el URLs.
+
+** `bad-packages-alist' will warn about external packages that are known
+to cause problems in this version of Emacs.
+
+** The values of `dired-recursive-deletes' and `dired-recursive-copies'
+have been changed to `top'.  This means that the user is asked once,
+before deleting/copying the indicated directory recursively.
+
+** In Image mode, whenever the displayed image is wider and/or higher
+than the window, the usual keys for moving the cursor cause the image
+to be scrolled horizontally or vertically instead.
+
+** Scrollbars follow the system theme on Windows XP and later.
+Windows XP introduced themed scrollbars, but applications have to take
+special steps to use them. Emacs now has the appropriate resources linked
+in to make it use the scrollbars from the system theme.
+
+** focus-follows-mouse defaults to nil on MS Windows
+Previously this variable was incorrectly documented as having no effect
+on MS Windows, and the default was inappropriate for the majority of
+Windows installations. Users of software which modifies the behaviour of
+Windows to cause focus to follow the mouse will now need to explicitly set
+this variable.
+
+** The command gdba has been removed as gdb works now for those cases where it
+was needed.  In text command mode, if you have problems before execution has
+started, use M-x gud-gdb.
+
+* New Modes and Packages in Emacs 22.2
+
+** bibtex-style-mode helps you write BibTeX's *.bst files.
+
+** The new package css-mode.el provides a major mode for editing CSS files.
+
+** The new package vera-mode.el provides a major mode for editing Vera files.
+
+** The new package socks.el implements the SOCKS v5 protocol.
+
+** VC
+
+*** VC backends can provide completion of revision names.
+
+*** VC backends can provide extra menu entries to be added to the "Version Control" menu.
+This can be used to add menu entries for backend specific functions.
+
+*** VC has some support for Mercurial (Hg).
+
+*** VC has some support for Monotone (Mtn).
+
+*** VC has some support for Bazaar (Bzr).
+
+*** VC has some support for Git.
+
+* Lisp Changes in Emacs 22.2.
+
+** The command `repeat' will no more attempt to repeat a command bound
+to an input event.
+
+** The function invisible-p returns non-nil if the character
+   after a specified position is invisible.
+
++++
+** inhibit-modification-hooks is bound to t while running modification hooks.
+As a happy consequence, after-change-functions and before-change-functions
+are not bound to nil any more while running an (after|before)-change-function.
+
+** New function `window-full-width-p' returns t if a window is as wide
+as its frame.
+
+** The new function `image-refresh' refreshes all images associated
+with a given image specification.
+
+** The new function `split-string-and-unquote' does (what?)
+
+** The new function `combine-and-quote-strings' does (what?)
+\f
+* Installation Changes in Emacs 22.1
+
+** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
+when you run configure.  This requires Gtk+ 2.4 or newer.  This port
+provides a way to display multilingual text in menus (with some caveats).
+
+** The Emacs Lisp Reference Manual is now part of the distribution.
+
+The Emacs Lisp Reference Manual in Info format is built as part of the
+Emacs build procedure and installed together with the Emacs User
+Manual.  A menu item was added to the menu bar to make it easily
+accessible (Help->More Manuals->Emacs Lisp Reference).
+
+** The Introduction to Programming in Emacs Lisp manual is now part of
+the distribution.
+
+This manual is now part of the standard distribution and is installed,
+together with the Emacs User Manual, into the Info directory.  A menu
+item was added to the menu bar to make it easily accessible
+(Help->More Manuals->Introduction to Emacs Lisp).
+
+** Leim is now part of the Emacs distribution.
+You no longer need to download a separate tarball in order to build
+Emacs with Leim.
+
+** Support for MacOS X was added.
+See the files mac/README and mac/INSTALL for build instructions.
+
+** Mac OS 9 port now uses the Carbon API by default.  You can also
+create a non-Carbon build by specifying `NonCarbon' as a target.  See
+the files mac/README and mac/INSTALL for build instructions.
+
+** Support for a Cygwin build of Emacs was added.
+
+** Support for GNU/Linux systems on X86-64 machines was added.
+
+** Support for GNU/Linux systems on S390 machines was added.
+
+** Support for GNU/Linux systems on Tensilica Xtensa machines was added.
+
+** Support for FreeBSD/Alpha has been added.
+
+** New translations of the Emacs Tutorial are available in the
+following languages: Brasilian Portuguese, Bulgarian, Chinese (both
+with simplified and traditional characters), French, Russian, and
+Italian.  Type `C-u C-h t' to choose one of them in case your language
+setup doesn't automatically select the right one.
+
+** New translations of the Emacs reference card are available in the
+Brasilian Portuguese and Russian.  The corresponding PostScript files
+are also included.
+
+** A French translation of the `Emacs Survival Guide' is available.
+
+** Emacs now supports new configure options `--program-prefix',
+`--program-suffix' and `--program-transform-name' that affect the names of
+installed programs.
+
+** By default, Emacs now uses a setgid helper program to update game
+scores.  The directory ${localstatedir}/games/emacs is the normal
+place for game scores to be stored.  You can control this with the
+configure option `--with-game-dir'.  The specific user that Emacs uses
+to own the game scores is controlled by `--with-game-user'.  If access
+to a game user is not available, then scores will be stored separately
+in each user's home directory.
+
+** Emacs now includes support for loading image libraries on demand.
+(Currently this feature is only used on MS Windows.)  You can configure
+the supported image types and their associated dynamic libraries by
+setting the variable `image-library-alist'.
+
+** Emacs can now be built without sound support.
+
+** Emacs Lisp source files are compressed by default if `gzip' is available.
+
+** All images used in Emacs have been consolidated in etc/images and subdirs.
+See also the changes to `find-image', documented below.
+
+** Emacs comes with a new set of icons.
+These icons are displayed on the taskbar and/or titlebar when Emacs
+runs in a graphical environment.  Source files for these icons can be
+found in etc/images/icons.  (You can't change the icons displayed by
+Emacs by changing these files directly.  On X, the icon is compiled
+into the Emacs executable; see gnu.h in the source tree.  On MS
+Windows, see nt/icons/emacs.ico.)
+
+** The `emacsserver' program has been removed, replaced with Lisp code.
+
+** The `yow' program has been removed.
+Use the corresponding Emacs feature instead.
+
+** The Emacs terminal emulation in term.el uses a different terminfo name.
+The Emacs terminal emulation in term.el now uses "eterm-color" as its
+terminfo name, since term.el now supports color.
+
+** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
+contents of buffers from a core dump and save them to files easily, should
+Emacs crash.
+
+** Building with -DENABLE_CHECKING does not automatically build with union
+types any more.  Add -DUSE_LISP_UNION_TYPE if you want union types.
+
+** When pure storage overflows while dumping, Emacs now prints how
+much pure storage it will approximately need.
+
+\f
+* Startup Changes in Emacs 22.1
+
+** Init file changes
+If the init file ~/.emacs does not exist, Emacs will try
+~/.emacs.d/init.el or ~/.emacs.d/init.elc.  Likewise, if the shell init file
+~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh.
+
+** Emacs can now be invoked in full-screen mode on a windowed display.
+When Emacs is invoked on a window system, the new command-line options
+`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
+whose width, height, or both width and height take up the entire
+screen size.  (For now, this does not work with some window managers.)
+
+** Emacs now displays a splash screen by default even if command-line
+arguments were given.  The new command-line option --no-splash
+disables the splash screen; see also the variable
+`inhibit-splash-screen' (which is also aliased as
+`inhibit-startup-message').
+
+** New user option `inhibit-startup-buffer-menu'.
+When loading many files, for instance with `emacs *', Emacs normally
+displays a buffer menu.  This option turns the buffer menu off.
+
+** New command line option -nbc or --no-blinking-cursor disables
+the blinking cursor on graphical terminals.
+
+** The option --script FILE runs Emacs in batch mode and loads FILE.
+It is useful for writing Emacs Lisp shell script files, because they
+can start with this line:
+
+   #!/usr/bin/emacs --script
+
+** The -f option, used from the command line to call a function,
+now reads arguments for the function interactively if it is
+an interactively callable function.
+
+** The option --directory DIR now modifies `load-path' immediately.
+Directories are added to the front of `load-path' in the order they
+appear on the command line.  For example, with this command line:
+
+  emacs -batch -L .. -L /tmp --eval "(require 'foo)"
+
+Emacs looks for library `foo' in the parent directory, then in /tmp, then
+in the other directories in `load-path'.  (-L is short for --directory.)
+
+** When you specify a frame size with --geometry, the size applies to
+all frames you create.  A position specified with --geometry only
+affects the initial frame.
+
+** Emacs built for MS-Windows now behaves like Emacs on X does,
+with respect to its frame position: if you don't specify a position
+(in your .emacs init file, in the Registry, or with the --geometry
+command-line option), Emacs leaves the frame position to the Windows'
+window manager.
+
+** The command line option --no-windows has been changed to
+--no-window-system.  The old one still works, but is deprecated.
+
+** If the environment variable DISPLAY specifies an unreachable X display,
+Emacs will now startup as if invoked with the --no-window-system option.
+
+** Emacs now reads the standard abbrevs file ~/.abbrev_defs
+automatically at startup, if it exists.  When Emacs offers to save
+modified buffers, it saves the abbrevs too if they have changed.  It
+can do this either silently or asking for confirmation first,
+according to the value of `save-abbrevs'.
+
+** New command line option -Q or --quick.
+This is like using -q --no-site-file, but in addition it also disables
+the fancy startup screen.
+
+** New command line option -D or --basic-display.
+Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
+the blinking cursor.
+
+** The default is now to use a bitmap as the icon.
+The command-line options --icon-type, -i have been replaced with
+options --no-bitmap-icon, -nbi to turn the bitmap icon off.
+
+** If the environment variable EMAIL is defined, Emacs now uses its value
+to compute the default value of `user-mail-address', in preference to
+concatenation of `user-login-name' with the name of your host machine.
+
+\f
+* Incompatible Editing Changes in Emacs 22.1
+
+** You can now follow links by clicking Mouse-1 on the link.
+
+See below for more details.
+
+** When the undo information of the current command gets really large
+(beyond the value of `undo-outer-limit'), Emacs discards it and warns
+you about it.
+
+** When Emacs prompts for file names, SPC no longer completes the file name.
+This is so filenames with embedded spaces could be input without the
+need to quote the space with a C-q.  The underlying changes in the
+keymaps that are active in the minibuffer are described below under
+"New keymaps for typing file names".
+
+If you want the old behavior back, put these two key bindings to your
+~/.emacs init file:
+
+  (define-key minibuffer-local-filename-completion-map
+             " " 'minibuffer-complete-word)
+  (define-key minibuffer-local-must-match-filename-map
+             " " 'minibuffer-complete-word)
+
+** The completion commands TAB, SPC and ? in the minibuffer apply only
+to the text before point.  If there is text in the buffer after point,
+it remains unchanged.
+
+** In incremental search, C-w is changed.  M-%, C-M-w and C-M-y are special.
+
+See below under "incremental search changes".
+
+** M-g is now a prefix key.
+M-g g and M-g M-g run goto-line.
+M-g n and M-g M-n run next-error (like C-x `).
+M-g p and M-g M-p run previous-error.
+
+** C-u M-g M-g switches to the most recent previous buffer,
+and goes to the specified line in that buffer.
+
+When goto-line starts to execute, if there's a number in the buffer at
+point then it acts as the default argument for the minibuffer.
+
+** M-o now is the prefix key for setting text properties;
+M-o M-o requests refontification.
+
+** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer
+a special case.
+
+Since the default input is the current directory, this has the effect
+of specifying the current directory.  Normally that means to visit the
+directory with Dired.
+
+You can get the old behavior by typing C-x C-f M-n RET, which fetches
+the actual file name into the minibuffer.
+
+** In Dired's ! command (dired-do-shell-command), `*' and `?' now
+control substitution of the file names only when they are surrounded
+by whitespace.  This means you can now use them as shell wildcards
+too.  If you want to use just plain `*' as a wildcard, type `*""'; the
+doublequotes make no difference in the shell, but they prevent
+special treatment in `dired-do-shell-command'.
+
+** The info-search bindings on C-h C-f, C-h C-k and C-h C-i
+have been moved to C-h F, C-h K and C-h S.
+
+** `apply-macro-to-region-lines' now operates on all lines that begin
+in the region, rather than on all complete lines in the region.
+
+** line-move-ignore-invisible now defaults to t.
+
+** Adaptive filling misfeature removed.
+It no longer treats `NNN.' or `(NNN)' as a prefix.
+
+** The old bindings C-M-delete and C-M-backspace have been deleted,
+since there are situations where one or the other will shut down
+the operating system or your X server.
+
+** The register compatibility key bindings (deprecated since Emacs 19)
+have been removed:
+  C-x /   point-to-register (Use: C-x r SPC)
+  C-x j   jump-to-register  (Use: C-x r j)
+  C-x x   copy-to-register  (Use: C-x r s)
+  C-x g   insert-register   (Use: C-x r i)
+
+\f
+* Editing Changes in Emacs 22.1
+
+** The max size of buffers and integers has been doubled.
+On 32bit machines, it is now 256M (i.e. 268435455).
+
+** !MEM FULL! at the start of the mode line indicates that Emacs
+cannot get any more memory for Lisp data.  This often means it could
+crash soon if you do things that use more memory.  On most systems,
+killing buffers will get out of this state.  If killing buffers does
+not make !MEM FULL! disappear, you should save your work and start
+a new Emacs.
+
+** `undo-only' does an undo which does not redo any previous undo.
+
+** Yanking text now discards certain text properties that can
+be inconvenient when you did not expect them.  The variable
+`yank-excluded-properties' specifies which ones.  Insertion
+of register contents and rectangles also discards these properties.
+
+** New command `kill-whole-line' kills an entire line at once.
+By default, it is bound to C-S-<backspace>.
+
+** M-SPC (just-one-space) when given a numeric argument N
+converts whitespace around point to N spaces.
+
+** You can now switch buffers in a cyclic order with C-x C-left
+(previous-buffer) and C-x C-right (next-buffer).  C-x left and
+C-x right can be used as well.  The functions keep a different buffer
+cycle for each frame, using the frame-local buffer list.
+
+** C-x 5 C-o displays a specified buffer in another frame
+but does not switch to that frame.  It's the multi-frame
+analogue of C-x 4 C-o.
+
+** `special-display-buffer-names' and `special-display-regexps' now
+understand two new boolean pseudo-frame-parameters `same-frame' and
+`same-window'.
+
+** New commands to operate on pairs of open and close characters:
+`insert-pair', `delete-pair', `raise-sexp'.
+
+** M-x setenv now expands environment variable references.
+
+Substrings of the form `$foo' and `${foo}' in the specified new value
+now refer to the value of environment variable foo.  To include a `$'
+in the value, use `$$'.
+
+** The default values of paragraph-start and indent-line-function have
+been changed to reflect those used in Text mode rather than those used
+in Paragraph-Indent Text mode.
+
+** The default for the paper size (variable ps-paper-type) is taken
+from the locale.
+
+** Help command changes:
+
+*** Changes in C-h bindings:
+
+C-h e displays the *Messages* buffer.
+
+C-h d runs apropos-documentation.
+
+C-h r visits the Emacs Manual in Info.
+
+C-h followed by a control character is used for displaying files
+    that do not change:
+
+C-h C-f displays the FAQ.
+C-h C-e displays the PROBLEMS file.
+
+The info-search bindings on C-h C-f, C-h C-k and C-h C-i
+have been moved to C-h F, C-h K and C-h S.
+
+C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
+- C-h c and C-h k report the actual command (after possible remapping)
+  run by the key sequence.
+- C-h w and C-h f on a command which has been remapped now report the
+  command it is remapped to, and the keys which can be used to run
+  that command.
+
+For example, if C-k is bound to kill-line, and kill-line is remapped
+to new-kill-line, these commands now report:
+- C-h c and C-h k C-k reports:
+  C-k runs the command new-kill-line
+- C-h w and C-h f kill-line reports:
+  kill-line is remapped to new-kill-line which is on C-k, <deleteline>
+- C-h w and C-h f new-kill-line reports:
+  new-kill-line is on C-k
+
+*** The apropos commands now accept a list of words to match.
+When more than one word is specified, at least two of those words must
+be present for an item to match.  Regular expression matching is still
+available.
+
+*** The new option `apropos-sort-by-scores' causes the matching items
+to be sorted according to their score.  The score for an item is a
+number calculated to indicate how well the item matches the words or
+regular expression that you entered to the apropos command.  The best
+match is listed first, and the calculated score is shown for each
+matching item.
+
+*** Help commands `describe-function' and `describe-key' now show function
+arguments in lowercase italics on displays that support it.  To change the
+default, customize face `help-argument-name' or redefine the function
+`help-default-arg-highlight'.
+
+*** C-h v and C-h f commands now include a hyperlink to the C source for
+variables and functions defined in C (if the C source is available).
+
+*** Help mode now only makes hyperlinks for faces when the face name is
+preceded or followed by the word `face'.  It no longer makes
+hyperlinks for variables without variable documentation, unless
+preceded by one of the words `variable' or `option'.  It now makes
+hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
+enclosed in single quotes and preceded by `info anchor' or `Info
+anchor' (in addition to earlier `info node' and `Info node').  In
+addition, it now makes hyperlinks to URLs as well if the URL is
+enclosed in single quotes and preceded by `URL'.
+
+*** The new command `describe-char' (C-u C-x =) pops up a buffer with
+description various information about a character, including its
+encodings and syntax, its text properties, how to input, overlays, and
+widgets at point.  You can get more information about some of them, by
+clicking on mouse-sensitive areas or moving there and pressing RET.
+
+*** The command `list-text-properties-at' has been deleted because
+C-u C-x = gives the same information and more.
+
+*** New command `display-local-help' displays any local help at point
+in the echo area.  It is bound to `C-h .'.  It normally displays the
+same string that would be displayed on mouse-over using the
+`help-echo' property, but, in certain cases, it can display a more
+keyboard oriented alternative.
+
+*** New user option `help-at-pt-display-when-idle' allows you to
+automatically show the help provided by `display-local-help' on
+point-over, after suitable idle time.  The amount of idle time is
+determined by the user option `help-at-pt-timer-delay' and defaults
+to one second.  This feature is turned off by default.
+
+** Mark command changes:
+
+*** A prefix argument is no longer required to repeat a jump to a
+previous mark if you set `set-mark-command-repeat-pop' to t.  I.e. C-u
+C-SPC C-SPC C-SPC ... cycles through the mark ring.  Use C-u C-u C-SPC
+to set the mark immediately after a jump.
+
+*** Marking commands extend the region when invoked multiple times.
+
+If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h
+(mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region
+extends each time, so you can mark the next two sexps with M-C-SPC
+M-C-SPC, for example.  This feature also works for
+mark-end-of-sentence, if you bind that to a key.  It also extends the
+region when the mark is active in Transient Mark mode, regardless of
+the last command.  To start a new region with one of marking commands
+in Transient Mark mode, you can deactivate the active region with C-g,
+or set the new mark with C-SPC.
+
+*** Some commands do something special in Transient Mark mode when the
+mark is active--for instance, they limit their operation to the
+region.  Even if you don't normally use Transient Mark mode, you might
+want to get this behavior from a particular command.  There are two
+ways you can enable Transient Mark mode and activate the mark, for one
+command only.
+
+One method is to type C-SPC C-SPC; this enables Transient Mark mode
+and sets the mark at point.  The other method is to type C-u C-x C-x.
+This enables Transient Mark mode temporarily but does not alter the
+mark or the region.
+
+After these commands, Transient Mark mode remains enabled until you
+deactivate the mark.  That typically happens when you type a command
+that alters the buffer, but you can also deactivate the mark by typing
+C-g.
+
+*** Movement commands `beginning-of-buffer', `end-of-buffer',
+`beginning-of-defun', `end-of-defun' do not set the mark if the mark
+is already active in Transient Mark mode.
+
+*** M-h (mark-paragraph) now accepts a prefix arg.
+
+With positive arg, M-h marks the current and the following paragraphs;
+if the arg is negative, it marks the current and the preceding
+paragraphs.
+
+** Incremental Search changes:
+
+*** M-% typed in isearch mode invokes `query-replace' or
+`query-replace-regexp' (depending on search mode) with the current
+search string used as the string to replace.
+
+*** C-w in incremental search now grabs either a character or a word,
+making the decision in a heuristic way.  This new job is done by the
+command `isearch-yank-word-or-char'.  To restore the old behavior,
+bind C-w to `isearch-yank-word' in `isearch-mode-map'.
+
+*** C-y in incremental search now grabs the next line if point is already
+at the end of a line.
+
+*** C-M-w deletes and C-M-y grabs a character in isearch mode.
+Another method to grab a character is to enter the minibuffer by `M-e'
+and to type `C-f' at the end of the search string in the minibuffer.
+
+*** Vertical scrolling is now possible within incremental search.
+To enable this feature, customize the new user option
+`isearch-allow-scroll'.  User written commands which satisfy stringent
+constraints can be marked as "scrolling commands".  See the Emacs manual
+for details.
+
+*** Isearch no longer adds `isearch-resume' commands to the command
+history by default.  To enable this feature, customize the new
+user option `isearch-resume-in-command-history'.
+
+** Replace command changes:
+
+*** When used interactively, the commands `query-replace-regexp' and
+`replace-regexp' allow \,expr to be used in a replacement string,
+where expr is an arbitrary Lisp expression evaluated at replacement
+time.  `\#' in a replacement string now refers to the count of
+replacements already made by the replacement command.  All regular
+expression replacement commands now allow `\?' in the replacement
+string to specify a position where the replacement string can be
+edited for each replacement.  `query-replace-regexp-eval' is now
+deprecated since it offers no additional functionality.
+
+*** query-replace uses isearch lazy highlighting when the new user option
+`query-replace-lazy-highlight' is non-nil.
+
+*** The current match in query-replace is highlighted in new face
+`query-replace' which by default inherits from isearch face.
+
+*** New user option `query-replace-skip-read-only': when non-nil,
+`query-replace' and related functions simply ignore
+a match if part of it has a read-only property.
+
+** Local variables lists:
+
+*** If the local variables list contains any variable-value pairs that
+are not known to be safe, Emacs shows a prompt asking whether to apply
+the local variables list as a whole.  In earlier versions, a prompt
+was only issued for variables explicitly marked as risky (for the
+definition of risky variables, see `risky-local-variable-p').
+
+At the prompt, you can choose to save the contents of this local
+variables list to `safe-local-variable-values'.  This new customizable
+option is a list of variable-value pairs that are known to be safe.
+Variables can also be marked as safe with the existing
+`safe-local-variable' property (see `safe-local-variable-p').
+However, risky variables will not be added to
+`safe-local-variable-values' in this way.
+
+*** The variable `enable-local-variables' controls how local variable
+lists are handled.  t, the default, specifies the standard querying
+behavior.  :safe means use only safe values, and ignore the rest.
+:all means set all variables, whether or not they are safe.
+nil means ignore them all.  Anything else means always query.
+
+*** The variable `safe-local-eval-forms' specifies a list of forms that
+are ok to evaluate when they appear in an `eval' local variables
+specification.  Normally Emacs asks for confirmation before evaluating
+such a form, but if the form appears in this list, no confirmation is
+needed.
+
+*** If a function has a non-nil `safe-local-eval-function' property,
+that means it is ok to evaluate some calls to that function when it
+appears in an `eval' local variables specification.  If the property
+is t, then any form calling that function with constant arguments is
+ok.  If the property is a function or list of functions, they are called
+with the form as argument, and if any returns t, the form is ok to call.
+
+If the form is not "ok to call", that means Emacs asks for
+confirmation as before.
+
+*** In processing a local variables list, Emacs strips the prefix and
+suffix from every line before processing all the lines.
+
+*** Text properties in local variables.
+
+A file local variables list cannot specify a string with text
+properties--any specified text properties are discarded.
+
+** File operation changes:
+
+*** Unquoted `$' in file names do not signal an error any more when
+the corresponding environment variable does not exist.
+Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
+is only rarely needed.
+
+*** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
+
+Since the default input is the current directory, this has the effect
+of specifying the current directory.  Normally that means to visit the
+directory with Dired.
+
+*** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
+against its file, so you can see what changes you would be saving.
+
+*** Auto Compression mode is now enabled by default.
+
+*** If the user visits a file larger than `large-file-warning-threshold',
+Emacs asks for confirmation.
+
+*** The commands copy-file, rename-file, make-symbolic-link and
+add-name-to-file, when given a directory as the "new name" argument,
+convert it to a file name by merging in the within-directory part of
+the existing file's name.  (This is the same convention that shell
+commands cp, mv, and ln follow.)  Thus, M-x copy-file RET ~/foo RET
+/tmp RET copies ~/foo to /tmp/foo.
+
+*** require-final-newline now has two new possible values:
+
+`visit' means add a newline (as an undoable change) if it's needed
+when visiting the file.
+
+`visit-save' means add a newline (as an undoable change) if it's
+needed when visiting the file, and also add a newline if it's needed
+when saving the file.
+
+*** The new option mode-require-final-newline controls how certain
+major modes enable require-final-newline.  Any major mode that's
+designed for a kind of file that should normally end in a newline
+sets require-final-newline based on mode-require-final-newline.
+So you can customize mode-require-final-newline to control what these
+modes do.
+
+*** When you are root, and you visit a file whose modes specify
+read-only, the Emacs buffer is now read-only too.  Type C-x C-q if you
+want to make the buffer writable.  (As root, you can in fact alter the
+file.)
+
+*** find-file-read-only visits multiple files in read-only mode,
+when the file name contains wildcard characters.
+
+*** find-alternate-file replaces the current file with multiple files,
+when the file name contains wildcard characters.  It now asks if you
+wish save your changes and not just offer to kill the buffer.
+
+*** When used interactively, `format-write-file' now asks for confirmation
+before overwriting an existing file, unless a prefix argument is
+supplied.  This behavior is analogous to `write-file'.
+
+*** The variable `auto-save-file-name-transforms' now has a third element that
+controls whether or not the function `make-auto-save-file-name' will
+attempt to construct a unique auto-save name (e.g. for remote files).
+
+*** The new option `write-region-inhibit-fsync' disables calls to fsync
+in `write-region'.  This can be useful on laptops to avoid spinning up
+the hard drive upon each file save.  Enabling this variable may result
+in data loss, use with care.
+
+** Minibuffer changes:
+
+*** The completion commands TAB, SPC and ? in the minibuffer apply only
+to the text before point.  If there is text in the buffer after point,
+it remains unchanged.
+
+*** The new file-name-shadow-mode is turned ON by default, so that when
+entering a file name, any prefix which Emacs will ignore is dimmed.
+
+*** There's a new face `minibuffer-prompt'.
+Emacs adds this face to the list of text properties stored in the
+variable `minibuffer-prompt-properties', which is used to display the
+prompt string.
+
+*** Enhanced visual feedback in `*Completions*' buffer.
+
+Completions lists use faces to highlight what all completions
+have in common and where they begin to differ.
+
+The common prefix shared by all possible completions uses the face
+`completions-common-part', while the first character that isn't the
+same uses the face `completions-first-difference'.  By default,
+`completions-common-part' inherits from `default', and
+`completions-first-difference' inherits from `bold'.  The idea of
+`completions-common-part' is that you can use it to make the common
+parts less visible than normal, so that the rest of the differing
+parts is, by contrast, slightly highlighted.
+
+Above fontification is always done when listing completions is
+triggered at minibuffer.  If you want to fontify completions whose
+listing is triggered at the other normal buffer, you have to pass
+the common prefix of completions to `display-completion-list' as
+its second argument.
+
+*** File-name completion can now ignore specified directories.
+If an element of the list in `completion-ignored-extensions' ends in a
+slash `/', it indicates a subdirectory that should be ignored when
+completing file names.  Elements of `completion-ignored-extensions'
+which do not end in a slash are never considered when a completion
+candidate is a directory.
+
+*** New user option `history-delete-duplicates'.
+If set to t when adding a new history element, all previous identical
+elements are deleted from the history list.
+
+** Redisplay changes:
+
+*** The new face `mode-line-inactive' is used to display the mode line
+of non-selected windows.  The `mode-line' face is now used to display
+the mode line of the currently selected window.
+
+The new variable `mode-line-in-non-selected-windows' controls whether
+the `mode-line-inactive' face is used.
+
+*** The mode line position information now comes before the major mode.
+When the file is maintained under version control, that information
+appears between the position information and the major mode.
+
+*** You can now customize the use of window fringes.  To control this
+for all frames, use M-x fringe-mode or the Show/Hide submenu of the
+top-level Options menu, or customize the `fringe-mode' variable.  To
+control this for a specific frame, use the command M-x
+set-fringe-style.
+
+*** Angle icons in the fringes can indicate the buffer boundaries.  In
+addition, up and down arrow bitmaps in the fringe indicate which ways
+the window can be scrolled.
+
+This behavior is activated by setting the buffer-local variable
+`indicate-buffer-boundaries' to a non-nil value.  The default value of
+this variable is found in `default-indicate-buffer-boundaries'.
+
+If value is `left' or `right', both angle and arrow bitmaps are
+displayed in the left or right fringe, resp.
+
+The value can also be an alist which specifies the presence and
+position of each bitmap individually.
+
+For example, ((top . left) (t .  right)) places the top angle bitmap
+in left fringe, the bottom angle bitmap in right fringe, and both
+arrow bitmaps in right fringe.  To show just the angle bitmaps in the
+left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
+
+*** On window systems, lines which are exactly as wide as the window
+(not counting the final newline character) are no longer broken into
+two lines on the display (with just the newline on the second line).
+Instead, the newline now "overflows" into the right fringe, and the
+cursor will be displayed in the fringe when positioned on that newline.
+
+The new user option 'overflow-newline-into-fringe' can be set to nil to
+revert to the old behavior of continuing such lines.
+
+*** A window can now have individual fringe and scroll-bar settings,
+in addition to the individual display margin settings.
+
+Such individual settings are now preserved when windows are split
+horizontally or vertically, a saved window configuration is restored,
+or when the frame is resized.
+
+*** When a window has display margin areas, the fringes are now
+displayed between the margins and the buffer's text area, rather than
+outside those margins.
+
+*** New face `escape-glyph' highlights control characters and escape glyphs.
+
+*** Non-breaking space and hyphens are now displayed with a special
+face, either nobreak-space or escape-glyph.  You can turn this off or
+specify a different mode by setting the variable `nobreak-char-display'.
+
+*** The parameters of automatic hscrolling can now be customized.
+The variable `hscroll-margin' determines how many columns away from
+the window edge point is allowed to get before automatic hscrolling
+will horizontally scroll the window.  The default value is 5.
+
+The variable `hscroll-step' determines how many columns automatic
+hscrolling scrolls the window when point gets too close to the
+window edge.  If its value is zero, the default, Emacs scrolls the
+window so as to center point.  If its value is an integer, it says how
+many columns to scroll.  If the value is a floating-point number, it
+gives the fraction of the window's width to scroll the window.
+
+The variable `automatic-hscrolling' was renamed to
+`auto-hscroll-mode'.  The old name is still available as an alias.
+
+*** Moving or scrolling through images (and other lines) taller than
+the window now works sensibly, by automatically adjusting the window's
+vscroll property.
+
+*** Preemptive redisplay now adapts to current load and bandwidth.
+
+To avoid preempting redisplay on fast computers, networks, and displays,
+the arrival of new input is now performed at regular intervals during
+redisplay.  The new variable `redisplay-preemption-period' specifies
+the period; the default is to check for input every 0.1 seconds.
+
+*** The %c and %l constructs are now ignored in frame-title-format.
+Due to technical limitations in how Emacs interacts with windowing
+systems, these constructs often failed to render properly, and could
+even cause Emacs to crash.
+
+*** If value of `auto-resize-tool-bars' is `grow-only', the tool bar
+will expand as needed, but not contract automatically.  To contract
+the tool bar, you must type C-l.
+
+*** New customize option `overline-margin' controls the space between
+overline and text.
+
+*** New variable `x-underline-at-descent-line' controls the relative
+position of the underline.  When set, it overrides the
+`x-use-underline-position-properties' variables.
+
+** New faces:
+
+*** `mode-line-highlight' is the standard face indicating mouse sensitive
+elements on mode-line (and header-line) like `highlight' face on text
+areas.
+
+*** `mode-line-buffer-id' is the standard face for buffer identification
+parts of the mode line.
+
+*** `shadow' face defines the appearance of the "shadowed" text, i.e.
+the text which should be less noticeable than the surrounding text.
+This can be achieved by using shades of grey in contrast with either
+black or white default foreground color.  This generic shadow face
+allows customization of the appearance of shadowed text in one place,
+so package-specific faces can inherit from it.
+
+*** `vertical-border' face is used for the vertical divider between windows.
+
+** Font-Lock (syntax highlighting) changes:
+
+*** All modes now support using M-x font-lock-mode to toggle
+fontification, even those such as Occur, Info, and comint-derived
+modes that do their own fontification in a special way.
+
+The variable `Info-fontify' is no longer applicable; to disable
+fontification in Info, remove `turn-on-font-lock' from
+`Info-mode-hook'.
+
+*** New standard font-lock face `font-lock-comment-delimiter-face'.
+
+*** New standard font-lock face `font-lock-preprocessor-face'.
+
+*** Easy to overlook single character negation can now be font-locked.
+You can use the new variable `font-lock-negation-char-face' and the face of
+the same name to customize this.  Currently the cc-modes, sh-script-mode,
+cperl-mode and make-mode support this.
+
+*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs
+features assume that an open-paren in column 0 is always outside of
+any string or comment, Font-Lock now highlights any such open-paren in
+bold-red if it is inside a string or a comment, to indicate that it
+can cause trouble.  You should rewrite the string or comment so that
+the open-paren is not in column 0.
+
+*** M-o now is the prefix key for setting text properties;
+M-o M-o requests refontification.
+
+*** The default settings for JIT stealth lock parameters are changed.
+The default value for the user option jit-lock-stealth-time is now nil
+instead of 3.  This setting of jit-lock-stealth-time disables stealth
+fontification: on today's machines, it may be a bug in font lock
+patterns if fontification otherwise noticeably degrades interactivity.
+If you find movement in infrequently visited buffers sluggish (and the
+major mode maintainer has no better idea), customizing
+jit-lock-stealth-time to a non-nil value will let Emacs fontify
+buffers in the background when it considers the system to be idle.
+jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to
+cause less load than the old defaults.
+
+*** jit-lock can now be delayed with `jit-lock-defer-time'.
+
+If this variable is non-nil, its value should be the amount of Emacs
+idle time in seconds to wait before starting fontification.  For
+example, if you set `jit-lock-defer-time' to 0.25, fontification will
+only happen after 0.25s of idle time.
+
+*** contextual refontification is now separate from stealth fontification.
+
+jit-lock-defer-contextually is renamed jit-lock-contextually and
+jit-lock-context-time determines the delay after which contextual
+refontification takes place.
+
+*** lazy-lock is considered obsolete.
+
+The `lazy-lock' package is superseded by `jit-lock' and is considered
+obsolete.  `jit-lock' is activated by default; if you wish to continue
+using `lazy-lock', activate it in your ~/.emacs like this:
+  (setq font-lock-support-mode 'lazy-lock-mode)
+
+If you invoke `lazy-lock-mode' directly rather than through
+`font-lock-support-mode', it now issues a warning:
+  "Use font-lock-support-mode rather than calling lazy-lock-mode"
+
+** Menu support:
+
+*** A menu item "Show/Hide" was added to the top-level menu "Options".
+This menu allows you to turn various display features on and off (such
+as the fringes, the tool bar, the speedbar, and the menu bar itself).
+You can also move the vertical scroll bar to either side here or turn
+it off completely.  There is also a menu-item to toggle displaying of
+current date and time, current line and column number in the mode-line.
+
+*** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
+
+*** The menu item "Open File..." has been split into two items, "New File..."
+and "Open File...".  "Open File..." now opens only existing files.  This is
+to support existing GUI file selection dialogs better.
+
+*** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be
+disabled by customizing the variable `use-file-dialog'.
+
+*** The pop up menus for Lucid now stay up if you do a fast click and can
+be navigated with the arrow keys (like Gtk+, Mac and W32).
+
+*** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys.
+Pressing F10 shows the first menu in the menu bar.  Navigation is done with
+the arrow keys, select with the return key and cancel with the escape keys.
+
+*** The Lucid menus can display multilingual text in your locale.  You have
+to explicitly specify a fontSet resource for this to work, for example
+`-xrm "Emacs*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
+
+*** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing
+ESC, like they do for Gtk+, Mac and W32.
+
+*** For the Gtk+ version, you can make Emacs use the old file dialog
+by setting the variable `x-gtk-use-old-file-dialog' to t.  Default is to use
+the new dialog.
+
+*** You can exit dialog windows and menus by typing C-g.
+
+** Buffer Menu changes:
+
+*** The new options `buffers-menu-show-directories' and
+`buffers-menu-show-status' let you control how buffers are displayed
+in the menu dropped down when you click "Buffers" from the menu bar.
+
+`buffers-menu-show-directories' controls whether the menu displays
+leading directories as part of the file name visited by the buffer.
+If its value is `unless-uniquify', the default, directories are
+shown unless uniquify-buffer-name-style' is non-nil.  The value of nil
+and t turn the display of directories off and on, respectively.
+
+`buffers-menu-show-status' controls whether the Buffers menu includes
+the modified and read-only status of the buffers.  By default it is
+t, and the status is shown.
+
+Setting these variables directly does not take effect until next time
+the Buffers menu is regenerated.
+
+*** New command `Buffer-menu-toggle-files-only' toggles display of file
+buffers only in the Buffer Menu.  It is bound to T in Buffer Menu
+mode.
+
+*** `buffer-menu' and `list-buffers' now list buffers whose names begin
+with a space, when those buffers are visiting files.  Normally buffers
+whose names begin with space are omitted.
+
+** Mouse changes:
+
+*** You can now follow links by clicking Mouse-1 on the link.
+
+Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
+click to follow a link, whereas most other applications use a Mouse-1
+click for both purposes, depending on whether you click outside or
+inside a link.  Now the behavior of a Mouse-1 click has been changed
+to match this context-sensitive dual behavior.  (If you prefer the old
+behavior, set the user option `mouse-1-click-follows-link' to nil.)
+
+Depending on the current mode, a Mouse-2 click in Emacs can do much
+more than just follow a link, so the new Mouse-1 behavior is only
+activated for modes which explicitly mark a clickable text as a "link"
+(see the new function `mouse-on-link-p' for details).  The Lisp
+packages that are included in release 22.1 have been adapted to do
+this, but external packages may not yet support this.  However, there
+is no risk in using such packages, as the worst thing that could
+happen is that you get the original Mouse-1 behavior when you click
+on a link, which typically means that you set point where you click.
+
+If you want to get the original Mouse-1 action also inside a link, you
+just need to press the Mouse-1 button a little longer than a normal
+click (i.e. press and hold the Mouse-1 button for half a second before
+you release it).
+
+Dragging the Mouse-1 inside a link still performs the original
+drag-mouse-1 action, typically copy the text.
+
+You can customize the new Mouse-1 behavior via the new user options
+`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
+
+*** If you set the new variable `mouse-autoselect-window' to a non-nil
+value, windows are automatically selected as you move the mouse from
+one Emacs window to another, even within a frame.  A minibuffer window
+can be selected only when it is active.
+
+*** On X, when the window manager requires that you click on a frame to
+select it (give it focus), the selected window and cursor position
+normally changes according to the mouse click position.  If you set
+the variable x-mouse-click-focus-ignore-position to t, the selected
+window and cursor position do not change when you click on a frame
+to give it focus.
+
+*** Emacs normally highlights mouse sensitive text whenever the mouse
+is over the text.  By setting the new variable `mouse-highlight', you
+can optionally enable mouse highlighting only after you move the
+mouse, so that highlighting disappears when you press a key.  You can
+also disable mouse highlighting.
+
+*** You can now customize if selecting a region by dragging the mouse
+shall not copy the selected text to the kill-ring by setting the new
+variable mouse-drag-copy-region to nil.
+
+*** Under X, mouse-wheel-mode is turned on by default.
+
+*** Emacs ignores mouse-2 clicks while the mouse wheel is being moved.
+
+People tend to push the mouse wheel (which counts as a mouse-2 click)
+unintentionally while turning the wheel, so these clicks are now
+ignored.  You can customize this with the mouse-wheel-click-event and
+mouse-wheel-inhibit-click-time variables.
+
+*** mouse-wheels can now scroll a specific fraction of the window
+(rather than a fixed number of lines) and the scrolling is `progressive'.
+
+** Multilingual Environment (Mule) changes:
+
+*** You can disable character translation for a file using the -*-
+construct.  Include `enable-character-translation: nil' inside the
+-*-...-*- to disable any character translation that may happen by
+various global and per-coding-system translation tables.  You can also
+specify it in a local variable list at the end of the file.  For
+shortcut, instead of using this long variable name, you can append the
+character "!" at the end of coding-system name specified in -*-
+construct or in a local variable list.  For example, if a file has the
+following header, it is decoded by the coding system `iso-latin-1'
+without any character translation:
+;; -*- coding: iso-latin-1!; -*-
+
+*** Language environment and various default coding systems are setup
+more correctly according to the current locale name.  If the locale
+name doesn't specify a charset, the default is what glibc defines.
+This change can result in using the different coding systems as
+default in some locale (e.g. vi_VN).
+
+*** The keyboard-coding-system is now automatically set based on your
+current locale settings if you are not using a window system.  This
+can mean that the META key doesn't work but generates non-ASCII
+characters instead, depending on how the terminal (or terminal
+emulator) works.  Use `set-keyboard-coding-system' (or customize
+keyboard-coding-system) if you prefer META to work (the old default)
+or if the locale doesn't describe the character set actually generated
+by the keyboard.  See Info node `Unibyte Mode'.
+
+*** The new command `set-file-name-coding-system' (C-x RET F) sets
+coding system for encoding and decoding file names.  A new menu item
+(Options->Mule->Set Coding Systems->For File Name) invokes this
+command.
+
+*** The new command `revert-buffer-with-coding-system' (C-x RET r)
+revisits the current file using a coding system that you specify.
+
+*** New command `recode-region' decodes the region again by a specified
+coding system.
+
+*** The new command `recode-file-name' changes the encoding of the name
+of a file.
+
+*** New command `ucs-insert' inserts a character specified by its
+unicode.
+
+*** New command quail-show-key shows what key (or key sequence) to type
+in the current input method to input a character at point.
+
+*** Limited support for character `unification' has been added.
+Emacs now knows how to translate between different representations of
+the same characters in various Emacs charsets according to standard
+Unicode mappings.  This applies mainly to characters in the ISO 8859
+sets plus some other 8-bit sets, but can be extended.  For instance,
+translation works amongst the Emacs ...-iso8859-... charsets and the
+mule-unicode-... ones.
+
+By default this translation happens automatically on encoding.
+Self-inserting characters are translated to make the input conformant
+with the encoding of the buffer in which it's being used, where
+possible.
+
+You can force a more complete unification with the user option
+unify-8859-on-decoding-mode.  That maps all the Latin-N character sets
+into Unicode characters (from the latin-iso8859-1 and
+mule-unicode-0100-24ff charsets) on decoding.  Note that this mode
+will often effectively clobber data with an iso-2022 encoding.
+
+*** New language environments (set up automatically according to the
+locale): Belarusian, Bulgarian, Chinese-EUC-TW, Croatian, Esperanto,
+French, Georgian, Italian, Latin-7, Latvian, Lithuanian, Malayalam,
+Russian, Russian, Slovenian, Swedish, Tajik, Tamil, UTF-8,Ukrainian,
+Welsh,Latin-6, Windows-1255.
+
+*** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
+belarusian, bulgarian-bds, bulgarian-phonetic, chinese-sisheng (for
+Chinese Pinyin characters), croatian, dutch, georgian, latvian-keyboard,
+lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345,
+russian-computer, sgml, slovenian, tamil-inscript, ukrainian-computer,
+ucs, vietnamese-telex, welsh.
+
+*** There is support for decoding Greek and Cyrillic characters into
+either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
+when possible.  The latter are more space-efficient.
+  This is controlled by user option utf-fragment-on-decoding.
+
+*** Improved Thai support.  A new minor mode `thai-word-mode' (which is
+automatically activated if you select Thai as a language
+environment) changes key bindings of most word-oriented commands to
+versions which recognize Thai words.  Affected commands are
+    M-f     (forward-word)
+    M-b     (backward-word)
+    M-d     (kill-word)
+    M-DEL   (backward-kill-word)
+    M-t     (transpose-words)
+    M-q     (fill-paragraph)
+
+*** Indian support has been updated.
+The in-is13194 coding system is now Unicode-based.  CDAC fonts are
+assumed.  There is a framework for supporting various Indian scripts,
+but currently only Devanagari, Malayalam and Tamil are supported.
+
+*** The utf-8/16 coding systems have been enhanced.
+By default, untranslatable utf-8 sequences are simply composed into
+single quasi-characters.  User option `utf-translate-cjk-mode' (it is
+turned on by default) arranges to translate many utf-8 CJK character
+sequences into real Emacs characters in a similar way to the Mule-UCS
+system.  As this loads a fairly big data on demand, people who are not
+interested in CJK characters may want to customize it to nil.
+You can augment/amend the CJK translation via hash tables
+`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'.  The utf-8
+coding system now also encodes characters from most of Emacs's
+one-dimensional internal charsets, specifically the ISO-8859 ones.
+The utf-16 coding system is affected similarly.
+
+*** A UTF-7 coding system is available in the library `utf-7'.
+
+*** A new coding system `euc-tw' has been added for traditional Chinese
+in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
+Big 5 is then converted to CNS.
+
+*** Many new coding systems are available in the `code-pages' library.
+These include complete versions of most of those in codepage.el, based
+on Unicode mappings.  `codepage-setup' is now obsolete and is used
+only in the MS-DOS port of Emacs.  All coding systems defined in
+`code-pages' are auto-loaded.
+
+*** New variable `utf-translate-cjk-unicode-range' controls which
+Unicode characters to translate in `utf-translate-cjk-mode'.
+
+*** iso-10646-1 (`Unicode') fonts can be used to display any range of
+characters encodable by the utf-8 coding system.  Just specify the
+fontset appropriately.
+
+** Customize changes:
+
+*** Custom themes are collections of customize options.  Create a
+custom theme with M-x customize-create-theme.  Use M-x load-theme to
+load and enable a theme, and M-x disable-theme to disable it.  Use M-x
+enable-theme to enable a disabled theme.
+
+*** The commands M-x customize-face and M-x customize-face-other-window
+now look at the character after point.  If a face or faces are
+specified for that character, the commands by default customize those
+faces.
+
+*** The face-customization widget has been reworked to be less confusing.
+In particular, when you enable a face attribute using the corresponding
+check-box, there's no longer a redundant `*' option in value selection
+for that attribute; the values you can choose are only those which make
+sense for the attribute.  When an attribute is de-selected by unchecking
+its check-box, then the (now ignored, but still present temporarily in
+case you re-select the attribute) value is hidden.
+
+*** When you set or reset a variable's value in a Customize buffer,
+the previous value becomes the "backup value" of the variable.
+You can go back to that backup value by selecting "Use Backup Value"
+under the "[State]" button.
+
+** Dired mode:
+
+*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
+control substitution of the file names only when they are surrounded
+by whitespace.  This means you can now use them as shell wildcards
+too.  If you want to use just plain `*' as a wildcard, type `*""'; the
+double quotes make no difference in the shell, but they prevent
+special treatment in `dired-do-shell-command'.
+
+*** The Dired command `dired-goto-file' is now bound to j, not M-g.
+This is to avoid hiding the global key binding of M-g.
+
+*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
+dired-ignored, dired-directory, dired-symlink, dired-warning
+introduced for Dired mode instead of font-lock faces.
+
+*** New Dired command `dired-compare-directories' marks files
+with different file attributes in two dired buffers.
+
+*** New Dired command `dired-do-touch' (bound to T) changes timestamps
+of marked files with the value entered in the minibuffer.
+
+*** In Dired, the w command now stores the current line's file name
+into the kill ring.  With a zero prefix arg, it stores the absolute file name.
+
+*** In Dired-x, Omitting files is now a minor mode, dired-omit-mode.
+
+The mode toggling command is bound to M-o.  A new command
+dired-mark-omitted, bound to * O, marks omitted files.  The variable
+dired-omit-files-p is obsoleted, use the mode toggling function
+instead.
+
+*** The variables dired-free-space-program and dired-free-space-args
+have been renamed to directory-free-space-program and
+directory-free-space-args, and they now apply whenever Emacs puts a
+directory listing into a buffer.
+
+** Comint changes:
+
+*** The new INSIDE_EMACS environment variable is set to "t" in subshells
+running inside Emacs.  This supersedes the EMACS environment variable,
+which will be removed in a future Emacs release.  Programs that need
+to know whether they are started inside Emacs should check INSIDE_EMACS
+instead of EMACS.
+
+*** The comint prompt can now be made read-only, using the new user
+option `comint-prompt-read-only'.  This is not enabled by default,
+except in IELM buffers.  The read-only status of IELM prompts can be
+controlled with the new user option `ielm-prompt-read-only', which
+overrides `comint-prompt-read-only'.
+
+The new commands `comint-kill-whole-line' and `comint-kill-region'
+support editing comint buffers with read-only prompts.
+
+`comint-kill-whole-line' is like `kill-whole-line', but ignores both
+read-only and field properties.  Hence, it always kill entire
+lines, including any prompts.
+
+`comint-kill-region' is like `kill-region', except that it ignores
+read-only properties, if it is safe to do so.  This means that if any
+part of a prompt is deleted, then the entire prompt must be deleted
+and that all prompts must stay at the beginning of a line.  If this is
+not the case, then `comint-kill-region' behaves just like
+`kill-region' if read-only properties are involved: it copies the text
+to the kill-ring, but does not delete it.
+
+*** The new command `comint-insert-previous-argument' in comint-derived
+modes (shell-mode, etc.) inserts arguments from previous command lines,
+like bash's `ESC .' binding.  It is bound by default to `C-c .', but
+otherwise behaves quite similarly to the bash version.
+
+*** `comint-use-prompt-regexp-instead-of-fields' has been renamed
+`comint-use-prompt-regexp'.  The old name has been kept as an alias,
+but declared obsolete.
+
+** M-x Compile changes:
+
+*** M-x compile has become more robust and reliable
+
+Quite a few more kinds of messages are recognized.  Messages that are
+recognized as warnings or informational come in orange or green, instead of
+red.  Informational messages are by default skipped with `next-error'
+(controlled by `compilation-skip-threshold').
+
+Location data is collected on the fly as the *compilation* buffer changes.
+This means you could modify messages to make them point to different files.
+This also means you can not go to locations of messages you may have deleted.
+
+The variable `compilation-error-regexp-alist' has now become customizable.  If
+you had added your own regexps to this, you'll probably need to include a
+leading `^', otherwise they'll match anywhere on a line.  There is now also a
+`compilation-mode-font-lock-keywords' and it nicely handles all the checks
+that configure outputs and -o options so you see at a glance where you are.
+
+The new file etc/compilation.txt gives examples of each type of message.
+
+*** New user option `compilation-environment'.
+This option allows you to specify environment variables for inferior
+compilation processes without affecting the environment that all
+subprocesses inherit.
+
+*** New user option `compilation-disable-input'.
+If this is non-nil, send end-of-file as compilation process input.
+
+*** New options `next-error-highlight' and `next-error-highlight-no-select'
+specify the method of highlighting of the corresponding source line
+in new face `next-error'.
+
+*** A new minor mode `next-error-follow-minor-mode' can be used in
+compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
+modes that can use `next-error').  In this mode, cursor motion in the
+buffer causes automatic display in another window of the corresponding
+matches, compilation errors, etc.  This minor mode can be toggled with
+C-c C-f.
+
+*** When the left fringe is displayed, an arrow points to current message in
+the compilation buffer.
+
+*** The new variable `compilation-context-lines' controls lines of leading
+context before the current message.  If nil and the left fringe is displayed,
+it doesn't scroll the compilation output window.  If there is no left fringe,
+no arrow is displayed and a value of nil means display the message at the top
+of the window.
+
+** Occur mode changes:
+
+*** The new command `multi-occur' is just like `occur', except it can
+search multiple buffers.  There is also a new command
+`multi-occur-in-matching-buffers' which allows you to specify the
+buffers to search by their filenames or buffer names.  Internally,
+Occur mode has been rewritten, and now uses font-lock, among other
+changes.
+
+*** You can now use next-error (C-x `) and previous-error to advance to
+the next/previous matching line found by M-x occur.
+
+*** In the *Occur* buffer, `o' switches to it in another window, and
+C-o displays the current line's occurrence in another window without
+switching to it.
+
+** Grep changes:
+
+*** Grep has been decoupled from compilation mode setup.
+
+There's a new separate package grep.el, with its own submenu and
+customization group.
+
+*** `grep-find' is now also available under the name `find-grep' where
+people knowing `find-grep-dired' would probably expect it.
+
+*** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are
+more user-friendly versions of `grep' and `grep-find', which prompt
+separately for the regular expression to match, the files to search,
+and the base directory for the search.  Case sensitivity of the
+search is controlled by the current value of `case-fold-search'.
+
+These commands build the shell commands based on the new variables
+`grep-template' (lgrep) and `grep-find-template' (rgrep).
+
+The files to search can use aliases defined in `grep-files-aliases'.
+
+Subdirectories listed in `grep-find-ignored-directories' such as those
+typically used by various version control systems, like CVS and arch,
+are automatically skipped by `rgrep'.
+
+*** The grep commands provide highlighting support.
+
+Hits are fontified in green, and hits in binary files in orange.  Grep buffers
+can be saved and automatically revisited.
+
+*** New option `grep-highlight-matches' highlights matches in *grep*
+buffer.  It uses a special feature of some grep programs which accept
+--color option to output markers around matches.  When going to the next
+match with `next-error' the exact match is highlighted in the source
+buffer.  Otherwise, if `grep-highlight-matches' is nil, the whole
+source line is highlighted.
+
+*** New key bindings in grep output window:
+SPC and DEL scrolls window up and down.  C-n and C-p moves to next and
+previous match in the grep window.  RET jumps to the source line of
+the current match.  `n' and `p' shows next and previous match in
+other window, but does not switch buffer.  `{' and `}' jumps to the
+previous or next file in the grep output.  TAB also jumps to the next
+file.
+
+*** M-x grep now tries to avoid appending `/dev/null' to the command line
+by using GNU grep `-H' option instead.  M-x grep automatically
+detects whether this is possible or not the first time it is invoked.
+When `-H' is used, the grep command line supplied by the user is passed
+unchanged to the system to execute, which allows more complicated
+command lines to be used than was possible before.
+
+*** The new variables `grep-window-height' and `grep-scroll-output' override
+the corresponding compilation mode settings, for grep commands only.
+
+** Cursor display changes:
+
+*** Emacs can produce an underscore-like (horizontal bar) cursor.
+The underscore cursor is set by putting `(cursor-type . hbar)' in
+default-frame-alist.  It supports variable heights, like the `bar'
+cursor does.
+
+*** The variable `cursor-in-non-selected-windows' can now be set to any
+of the recognized cursor types.
+
+*** Display of hollow cursors now obeys the buffer-local value (if any)
+of `cursor-in-non-selected-windows' in the buffer that the cursor
+appears in.
+
+*** On text terminals, the variable `visible-cursor' controls whether Emacs
+uses the "very visible" cursor (the default) or the normal cursor.
+
+*** The X resource cursorBlink can be used to turn off cursor blinking.
+
+*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
+now controlled by the variable `blink-cursor-alist'.
+
+** X Windows Support:
+
+*** Emacs now supports drag and drop for X.  Dropping a file on a window
+opens it, dropping text inserts the text.  Dropping a file on a dired
+buffer copies or moves the file to that directory.
+
+*** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
+The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
+and `x-super-keysym' can be used to choose which keysyms Emacs should
+use for the modifiers.  For example, the following two lines swap
+Meta and Alt:
+    (setq x-alt-keysym 'meta)
+    (setq x-meta-keysym 'alt)
+
+*** The X resource useXIM can be used to turn off use of XIM, which can
+speed up Emacs with slow networking to the X server.
+
+If the configure option `--without-xim' was used to turn off use of
+XIM by default, the X resource useXIM can be used to turn it on.
+
+*** The new variable `x-select-request-type' controls how Emacs
+requests X selection.  The default value is nil, which means that
+Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
+and use the more appropriately result.
+
+*** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
+On the other hand, the size of the thumb does not represent the actual
+amount of text shown any more (only a crude approximation of it).
+
+** Xterm support:
+
+*** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks
+on the mode line, header line and display margin, when run in an xterm.
+
+*** Improved key bindings support when running in an xterm.
+When Emacs is running in an xterm more key bindings are available.
+The following should work:
+{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
+These key bindings work on xterm from X.org 6.8 (and later versions),
+they might not work on some older versions of xterm, or on some
+proprietary versions.
+The various keys generated by xterm when the "modifyOtherKeys"
+resource is set are also supported.
+
+** Character terminal color support changes:
+
+*** The new command-line option --color=MODE lets you specify a standard
+mode for a tty color support.  It is meant to be used on character
+terminals whose capabilities are not set correctly in the terminal
+database, or with terminal emulators which support colors, but don't
+set the TERM environment variable to a name of a color-capable
+terminal.  "emacs --color" uses the same color commands as GNU `ls'
+when invoked with "ls --color", so if your terminal can support colors
+in "ls --color", it will support "emacs --color" as well.  See the
+user manual for the possible values of the MODE parameter.
+
+*** Emacs now supports several character terminals which provide more
+than 8 colors.  For example, for `xterm', 16-color, 88-color, and
+256-color modes are supported.  Emacs automatically notes at startup
+the extended number of colors, and defines the appropriate entries for
+all of these colors.
+
+*** Emacs now uses the full range of available colors for the default
+faces when running on a color terminal, including 16-, 88-, and
+256-color xterms.  This means that when you run "emacs -nw" on an
+88-color or 256-color xterm, you will see essentially the same face
+colors as on X.
+
+*** There's a new support for colors on `rxvt' terminal emulator.
+
+** ebnf2ps changes:
+
+*** New option `ebnf-arrow-extra-width' which specify extra width for arrow
+shape drawing.
+The extra width is used to avoid that the arrowhead and the terminal border
+overlap.  It depends on `ebnf-arrow-shape' and `ebnf-line-width'.
+
+*** New option `ebnf-arrow-scale' which specify the arrow scale.
+Values lower than 1.0, shrink the arrow.
+Values greater than 1.0, expand the arrow.
+\f
+* New Modes and Packages in Emacs 22.1
+
+** CUA mode is now part of the Emacs distribution.
+
+The new cua package provides CUA-like keybindings using C-x for
+cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo.
+With cua, the region can be set and extended using shifted movement
+keys (like pc-selection-mode) and typed text replaces the active
+region (like delete-selection-mode).  Do not enable these modes with
+cua-mode.  Customize the variable `cua-mode' to enable cua.
+
+The cua-selection-mode enables the CUA keybindings for the region but
+does not change the bindings for C-z/C-x/C-c/C-v. It can be used as a
+replacement for pc-selection-mode.
+
+In addition, cua provides unified rectangle support with visible
+rectangle highlighting: Use C-return to start a rectangle, extend it
+using the movement commands (or mouse-3), and cut or copy it using C-x
+or C-c (using C-w and M-w also works).
+
+Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
+fill it with blanks or another character, use M-u or M-l to upcase or
+downcase the rectangle, use M-i to increment the numbers in the
+rectangle, use M-n to fill the rectangle with a numeric sequence (such
+as 10 20 30...), use M-r to replace a regexp in the rectangle, and use
+M-' or M-/ to restrict command on the rectangle to a subset of the
+rows.  See the commentary in cua-base.el for more rectangle commands.
+
+Cua also provides unified support for registers:  Use a numeric
+prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and
+C-v to cut or copy into register 0-9, or paste from register 0-9.
+
+The last text deleted (not killed) is automatically stored in
+register 0.  This includes text deleted by typing text.
+
+Finally, cua provides a global mark which is set using S-C-space.
+When the global mark is active, any text which is cut or copied is
+automatically inserted at the global mark position.  See the
+commentary in cua-base.el for more global mark related commands.
+
+The features of cua also works with the standard Emacs bindings for
+kill, copy, yank, and undo.  If you want to use cua mode, but don't
+want the C-x, C-c, C-v, and C-z bindings, you can customize the
+`cua-enable-cua-keys' variable.
+
+Note: This version of cua mode is not backwards compatible with older
+versions of cua.el and cua-mode.el.  To ensure proper operation, you
+must remove older versions of cua.el or cua-mode.el as well as the
+loading and customization of those packages from the .emacs file.
+
+** Tramp is now part of the distribution.
+
+This package is similar to Ange-FTP: it allows you to edit remote
+files.  But whereas Ange-FTP uses FTP to access the remote host,
+Tramp uses a shell connection.  The shell connection is always used
+for filename completion and directory listings and suchlike, but for
+the actual file transfer, you can choose between the so-called
+`inline' methods (which transfer the files through the shell
+connection using base64 or uu encoding) and the `out-of-band' methods
+(which invoke an external copying program such as `rcp' or `scp' or
+`rsync' to do the copying).
+
+Shell connections can be acquired via `rsh', `ssh', `telnet' and also
+`su' and `sudo'.  Ange-FTP is still supported via the `ftp' method.
+
+If you want to disable Tramp you should set
+
+  (setq tramp-default-method "ftp")
+
+Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
+tramp-unload-tramp.
+
+** The image-dired.el package allows you to easily view, tag and in
+other ways manipulate image files and their thumbnails, using dired as
+the main interface.  Image-Dired provides functionality to generate
+simple image galleries.
+
+** Image files are normally visited in Image mode, which lets you toggle
+between viewing the image and viewing the text using C-c C-c.
+
+** The new python.el package is used to edit Python and Jython programs.
+
+** The URL package (which had been part of W3) is now part of Emacs.
+
+** Calc is now part of the Emacs distribution.
+
+Calc is an advanced desk calculator and mathematical tool written in
+Emacs Lisp.  The prefix for Calc has been changed to `C-x *' and Calc
+can be started with `C-x * *'.  The Calc manual is separate from the
+Emacs manual; within Emacs, type "C-h i m calc RET" to read the
+manual.  A reference card is available in `etc/calccard.tex' and
+`etc/calccard.ps'.
+
+** Org mode is now part of the Emacs distribution
+
+Org mode is a mode for keeping notes, maintaining ToDo lists, and
+doing project planning with a fast and effective plain-text system.
+It also contains a plain-text table editor with spreadsheet-like
+capabilities.
+
+The Org mode table editor can be integrated into any major mode by
+activating the minor mode, Orgtbl mode.
+
+The documentation for org-mode is in a separate manual; within Emacs,
+type "C-h i m org RET" to read that manual.  A reference card is
+available in `etc/orgcard.tex' and `etc/orgcard.ps'.
+
+** ERC is now part of the Emacs distribution.
+
+ERC is a powerful, modular, and extensible IRC client for Emacs.
+
+To see what modules are available, type
+M-x customize-option erc-modules RET.
+
+To start an IRC session with ERC, type M-x erc, and follow the prompts
+for server, port, and nick.
+
+** Rcirc is now part of the Emacs distribution.
+
+Rcirc is an Internet relay chat (IRC) client.  It supports
+simultaneous connections to multiple IRC servers.  Each discussion
+takes place in its own buffer.  For each connection you can join
+several channels (many-to-many) and participate in private
+(one-to-one) chats.  Both channel and private chats are contained in
+separate buffers.
+
+To start an IRC session using the default parameters, type M-x irc.
+If you type C-u M-x irc, it prompts you for the server, nick, port and
+startup channel parameters before connecting.
+
+** The new package ibuffer provides a powerful, completely
+customizable replacement for buff-menu.el.
+
+** Newsticker is now part of the Emacs distribution.
+
+Newsticker asynchronously retrieves headlines (RSS) from a list of news
+sites, prepares these headlines for reading, and allows for loading the
+corresponding articles in a web browser.  Its documentation is in a
+separate manual.
+
+** The wdired.el package allows you to use normal editing commands on Dired
+buffers to change filenames, permissions, etc...
+
+** Ido mode is now part of the Emacs distribution.
+
+The ido (interactively do) package is an extension of the iswitchb
+package to do interactive opening of files and directories in addition
+to interactive buffer switching.  Ido is a superset of iswitchb (with
+a few exceptions), so don't enable both packages.
+
+** The new global minor mode `file-name-shadow-mode' modifies the way
+filenames being entered by the user in the minibuffer are displayed, so
+that it's clear when part of the entered filename will be ignored due to
+Emacs' filename parsing rules.  The ignored portion can be made dim,
+invisible, or otherwise less visually noticeable.  The display method can
+be displayed by customizing the variable `file-name-shadow-properties'.
+
+** Emacs' keyboard macro facilities have been enhanced by the new
+kmacro package.
+
+Keyboard macros are now defined and executed via the F3 and F4 keys:
+F3 starts a macro, F4 ends the macro, and pressing F4 again executes
+the last macro.  While defining the macro, F3 inserts a counter value
+which automatically increments every time the macro is executed.
+
+There is now a keyboard macro ring which stores the most recently
+defined macros.
+
+The C-x C-k sequence is now a prefix for the kmacro keymap which
+defines bindings for moving through the keyboard macro ring,
+C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e,
+manipulating the macro counter and format via C-x C-k C-c,
+C-x C-k C-a, and C-x C-k C-f.  See the commentary in kmacro.el
+for more commands.
+
+The original macro bindings C-x (, C-x ), and C-x e are still
+available, but they now interface to the keyboard macro ring too.
+
+The C-x e command now automatically terminates the current macro
+before calling it, if used while defining a macro.
+
+In addition, when ending or calling a macro with C-x e, the macro can
+be repeated immediately by typing just the `e'.  You can customize
+this behavior via the variables kmacro-call-repeat-key and
+kmacro-call-repeat-with-arg.
+
+Keyboard macros can now be debugged and edited interactively.
+C-x C-k SPC steps through the last keyboard macro one key sequence
+at a time, prompting for the actions to take.
+
+** The new keypad setup package provides several common bindings for
+the numeric keypad which is available on most keyboards.  The numeric
+keypad typically has the digits 0 to 9, a decimal point, keys marked
++, -, /, and *, an Enter key, and a NumLock toggle key.  The keypad
+package only controls the use of the digit and decimal keys.
+
+By customizing the variables `keypad-setup', `keypad-shifted-setup',
+`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
+using the function `keypad-setup', you can rebind all digit keys and
+the decimal key of the keypad in one step for each of the four
+possible combinations of the Shift key state (not pressed/pressed) and
+the NumLock toggle state (off/on).
+
+The choices for the keypad keys in each of the above states are:
+`Plain numeric keypad' where the keys generates plain digits,
+`Numeric keypad with decimal key' where the character produced by the
+decimal key can be customized individually (for internationalization),
+`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
+for Emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
+where the keys work like (shifted) arrow keys, home/end, etc., and
+`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
+are left unspecified and can be bound individually through the global
+or local keymaps.
+
+** The printing package is now part of the Emacs distribution.
+
+If you enable the printing package by including (require 'printing) in
+the .emacs file, the normal Print item on the File menu is replaced
+with a Print sub-menu which allows you to preview output through
+ghostview, use ghostscript to print (if you don't have a PostScript
+printer) or send directly to printer a PostScript code generated by
+`ps-print' package.  Use M-x pr-help for more information.
+
+** The new package longlines.el provides a minor mode for editing text
+files composed of long lines, based on the `use-hard-newlines'
+mechanism.  The long lines are broken up by inserting soft newlines,
+which are automatically removed when saving the file to disk or
+copying into the kill ring, clipboard, etc.  By default, Longlines
+mode inserts soft newlines automatically during editing, a behavior
+referred to as "soft word wrap" in other text editors.  This is
+similar to Refill mode, but more reliable.  To turn the word wrap
+feature off, set `longlines-auto-wrap' to nil.
+
+** SES mode (ses-mode) is a new major mode for creating and editing
+spreadsheet files.  Besides the usual Emacs features (intuitive command
+letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
+viral immunity and import/export of tab-separated values.
+
+** The new package table.el implements editable, WYSIWYG, embedded
+`text tables' in Emacs buffers.  It simulates the effect of putting
+these tables in a special major mode.  The package emulates WYSIWYG
+table editing available in modern word processors.  The package also
+can generate a table source in typesetting and markup languages such
+as latex and html from the visually laid out text table.
+
+** Filesets are collections of files.  You can define a fileset in
+various ways, such as based on a directory tree or based on
+program files that include other program files.
+
+Once you have defined a fileset, you can perform various operations on
+all the files in it, such as visiting them or searching and replacing
+in them.
+
+** The minor mode Reveal mode makes text visible on the fly as you
+move your cursor into hidden regions of the buffer.
+It should work with any package that uses overlays to hide parts
+of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
+
+There is also Global Reveal mode which affects all buffers.
+
+** New minor mode, Visible mode, toggles invisibility in the current buffer.
+When enabled, it makes all invisible text visible.  When disabled, it
+restores the previous value of `buffer-invisibility-spec'.
+
+** The new package flymake.el does on-the-fly syntax checking of program
+source files.  See the Flymake's Info manual for more details.
+
+** savehist saves minibuffer histories between sessions.
+To use this feature, turn on savehist-mode in your `.emacs' file.
+
+** The ruler-mode.el library provides a minor mode for displaying an
+"active" ruler in the header line.  You can use the mouse to visually
+change the `fill-column', `window-margins' and `tab-stop-list'
+settings.
+
+** The file t-mouse.el is now part of Emacs and provides access to mouse
+events from the console.  It still requires gpm to work but has been updated
+for Emacs 22.  In particular, the mode-line is now position sensitive.
+
+** The new package scroll-lock.el provides the Scroll Lock minor mode
+for pager-like scrolling.  Keys which normally move point by line or
+paragraph will scroll the buffer by the respective amount of lines
+instead and point will be kept vertically fixed relative to window
+boundaries during scrolling.
+
+** The new global minor mode `size-indication-mode' (off by default)
+shows the size of accessible part of the buffer on the mode line.
+
+** The new package conf-mode.el handles thousands of configuration files, with
+varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
+var : value, var value or keyword var value) and sections ([section] or
+section { }).  Many files under /etc/, or with suffixes like .cf through
+.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
+recognized.
+
+** GDB-Script-mode is used for files like .gdbinit.
+
+** The new package dns-mode.el adds syntax highlighting of DNS master files.
+It is a modern replacement for zone-mode.el, which is now obsolete.
+
+** `cfengine-mode' is a major mode for editing GNU Cfengine
+configuration files.
+
+** The TCL package tcl-mode.el was replaced by tcl.el.
+This was actually done in Emacs-21.1, and was not documented.
+\f
+* Changes in Specialized Modes and Packages in Emacs 22.1:
+
+** Changes in Dired
+
+*** Bindings for Image-Dired added.
+Several new keybindings, all starting with the C-t prefix, have been
+added to Dired.  They are all bound to commands in Image-Dired.  As a
+starting point, mark some image files in a dired buffer and do C-t d
+to display thumbnails of them in a separate buffer.
+
+** Info mode changes
+
+*** Images in Info pages are supported.
+
+Info pages show embedded images, in Emacs frames with image support.
+Info documentation that includes images, processed with makeinfo
+version 4.7 or newer, compiles to Info pages with embedded images.
+
+*** `Info-index' offers completion.
+
+*** http and ftp links in Info are now operational: they look like cross
+references and following them calls `browse-url'.
+
+*** isearch in Info uses Info-search and searches through multiple nodes.
+
+Before leaving the initial Info node isearch fails once with the error
+message [initial node], and with subsequent C-s/C-r continues through
+other nodes.  When isearch fails for the rest of the manual, it wraps
+around the whole manual to the top/final node.  The user option
+`Info-isearch-search' controls whether to use Info-search for isearch,
+or the default isearch search function that wraps around the current
+Info node.
+
+*** New search commands: `Info-search-case-sensitively' (bound to S),
+`Info-search-backward', and `Info-search-next' which repeats the last
+search without prompting for a new search string.
+
+*** New command `info-apropos' searches the indices of the known
+Info files on your system for a string, and builds a menu of the
+possible matches.
+
+*** New command `Info-history-forward' (bound to r and new toolbar icon)
+moves forward in history to the node you returned from after using
+`Info-history-back' (renamed from `Info-last').
+
+*** New command `Info-history' (bound to L) displays a menu of visited nodes.
+
+*** New command `Info-toc' (bound to T) creates a node with table of contents
+from the tree structure of menus of the current Info file.
+
+*** New command `Info-copy-current-node-name' (bound to w) copies
+the current Info node name into the kill ring.  With a zero prefix
+arg, puts the node name inside the `info' function call.
+
+*** New face `info-xref-visited' distinguishes visited nodes from unvisited
+and a new option `Info-fontify-visited-nodes' to control this.
+
+*** A numeric prefix argument of `info' selects an Info buffer
+with the number appended to the `*info*' buffer name (e.g. "*info*<2>").
+
+*** Info now hides node names in menus and cross references by default.
+
+If you prefer the old behavior, you can set the new user option
+`Info-hide-note-references' to nil.
+
+*** The default value for `Info-scroll-prefer-subnodes' is now nil.
+
+** Emacs server changes
+
+*** You can have several Emacs servers on the same machine.
+
+       % emacs --eval '(setq server-name "foo")' -f server-start &
+       % emacs --eval '(setq server-name "bar")' -f server-start &
+       % emacsclient -s foo file1
+       % emacsclient -s bar file2
+
+*** The `emacsclient' command understands the options `--eval' and
+`--display' which tell Emacs respectively to evaluate the given Lisp
+expression and to use the given display when visiting files.
+
+*** User option `server-mode' can be used to start a server process.
+
+** Locate changes
+
+*** By default, reverting the *Locate* buffer now just runs the last
+`locate' command back over again without offering to update the locate
+database (which normally only works if you have root privileges).  If
+you prefer the old behavior, set the new customizable option
+`locate-update-when-revert' to t.
+
+** Desktop package
+
+*** Desktop saving is now a minor mode, `desktop-save-mode'.
+
+*** The variable `desktop-enable' is obsolete.
+
+Customize `desktop-save-mode' to enable desktop saving.
+
+*** Buffers are saved in the desktop file in the same order as that in the
+buffer list.
+
+*** The desktop package can be customized to restore only some buffers
+immediately, remaining buffers are restored lazily (when Emacs is
+idle).
+
+*** New command line option --no-desktop
+
+*** New commands:
+  - desktop-revert reverts to the last loaded desktop.
+  - desktop-change-dir kills current desktop and loads a new.
+  - desktop-save-in-desktop-dir saves desktop in the directory from which
+    it was loaded.
+  - desktop-lazy-complete runs the desktop load to completion.
+  - desktop-lazy-abort aborts lazy loading of the desktop.
+
+*** New customizable variables:
+  - desktop-save. Determines whether the desktop should be saved when it is
+    killed.
+  - desktop-file-name-format. Format in which desktop file names should be saved.
+  - desktop-path. List of directories in which to lookup the desktop file.
+  - desktop-locals-to-save. List of local variables to save.
+  - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
+  - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
+    should not delete.
+  - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
+    restored lazily (when Emacs is idle).
+  - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
+  - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
+
+*** New hooks:
+  - desktop-after-read-hook run after a desktop is loaded.
+  - desktop-no-desktop-file-hook run when no desktop file is found.
+
+** Recentf changes
+
+The recent file list is now automatically cleaned up when recentf mode is
+enabled.  The new option `recentf-auto-cleanup' controls when to do
+automatic cleanup.
+
+The ten most recent files can be quickly opened by using the shortcut
+keys 1 to 9, and 0, when the recent list is displayed in a buffer via
+the `recentf-open-files', or `recentf-open-more-files' commands.
+
+The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
+and provides a more general mechanism to customize which file names to
+keep in the recent list.
+
+With the more advanced option `recentf-filename-handlers', you can
+specify functions that successively transform recent file names.  For
+example, if set to `file-truename' plus `abbreviate-file-name', the
+same file will not be in the recent list with different symbolic
+links, and the file name will be abbreviated.
+
+To follow naming convention, `recentf-menu-append-commands-flag'
+replaces the misnamed option `recentf-menu-append-commands-p'.  The
+old name remains available as alias, but has been marked obsolete.
+
+** Auto-Revert changes
+
+*** You can now use Auto Revert mode to `tail' a file.
+
+If point is at the end of a file buffer before reverting, Auto Revert
+mode keeps it at the end after reverting.  Similarly if point is
+displayed at the end of a file buffer in any window, it stays at the end
+of the buffer in that window.  This allows you to "tail" a file: just
+put point at the end of the buffer and it stays there.  This rule
+applies to file buffers.  For non-file buffers, the behavior can be mode
+dependent.
+
+If you are sure that the file will only change by growing at the end,
+then you can tail the file more efficiently by using the new minor
+mode Auto Revert Tail mode.  The function `auto-revert-tail-mode'
+toggles this mode.
+
+*** Auto Revert mode is now more careful to avoid excessive reverts and
+other potential problems when deciding which non-file buffers to
+revert.  This matters especially if Global Auto Revert mode is enabled
+and `global-auto-revert-non-file-buffers' is non-nil.  Auto Revert
+mode only reverts a non-file buffer if the buffer has a non-nil
+`revert-buffer-function' and a non-nil `buffer-stale-function', which
+decides whether the buffer should be reverted.  Currently, this means
+that auto reverting works for Dired buffers (although this may not
+work properly on all operating systems) and for the Buffer Menu.
+
+*** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
+Revert mode reliably updates version control info (such as the version
+control number in the mode line), in all version controlled buffers in
+which it is active.  If the option is nil, the default, then this info
+only gets updated whenever the buffer gets reverted.
+
+** Changes in Shell Mode
+
+*** Shell output normally scrolls so that the input line is at the
+bottom of the window -- thus showing the maximum possible text.  (This
+is similar to the way sequential output to a terminal works.)
+
+** Changes in Hi Lock
+
+*** hi-lock-mode now only affects a single buffer, and a new function
+`global-hi-lock-mode' enables Hi Lock in all buffers.  By default, if
+hi-lock-mode is used in what appears to be the initialization file, a
+warning message suggests to use global-hi-lock-mode instead.  However,
+if the new variable `hi-lock-archaic-interface-deduce' is non-nil,
+using hi-lock-mode in an initialization file will turn on Hi Lock in all
+buffers and no warning will be issued (for compatibility with the
+behavior in older versions of Emacs).
+
+** Changes in Allout
+
+*** Topic cryptography added, enabling easy gpg topic encryption and
+decryption.  Per-topic basis enables interspersing encrypted-text and
+clear-text within a single file to your heart's content, using symmetric
+and/or public key modes.  Time-limited key caching, user-provided
+symmetric key hinting and consistency verification, auto-encryption of
+pending topics on save, and more, make it easy to use encryption in
+powerful ways.  Encryption behavior customization is collected in the
+allout-encryption customization group.
+
+*** Default command prefix was changed to "\C-c " (control-c space), to
+avoid intruding on user's keybinding space.  Customize the
+`allout-command-prefix' variable to your preference.
+
+*** Some previously rough topic-header format edge cases are reconciled.
+Level 1 topics use the mode's comment format, and lines starting with the
+asterisk - for instance, the comment close of some languages (eg, c's "*/"
+or mathematica's "*)") - at the beginning of line are no longer are
+interpreted as level 1 topics in those modes.
+
+*** Many or most commonly occurring "accidental" topics are disqualified.
+Text in item bodies that looks like a low-depth topic is no longer mistaken
+for one unless its first offspring (or that of its next sibling with
+offspring) is only one level deeper.
+
+For example, pasting some text with a bunch of leading asterisks into a
+topic that's followed by a level 3 or deeper topic will not cause the
+pasted text to be mistaken for outline structure.
+
+The same constraint is applied to any level 2 or 3 topics.
+
+This settles an old issue where typed or pasted text needed to be carefully
+reviewed, and sometimes doctored, to avoid accidentally disrupting the
+outline structure.  Now that should be generally unnecessary, as the most
+prone-to-occur accidents are disqualified.
+
+*** Allout now refuses to create "containment discontinuities", where a
+topic is shifted deeper than the offspring-depth of its container.  On the
+other hand, allout now operates gracefully with existing containment
+discontinuities, revealing excessively contained topics rather than either
+leaving them hidden or raising an error.
+
+*** Navigation within an item is easier.  Repeated beginning-of-line and
+end-of-line key commands (usually, ^A and ^E) cycle through the
+beginning/end-of-line and then beginning/end of topic, etc.  See new
+customization vars `allout-beginning-of-line-cycles' and
+`allout-end-of-line-cycles'.
+
+*** New or revised allout-mode activity hooks enable creation of
+cooperative enhancements to allout mode without changes to the mode,
+itself.
+
+See `allout-exposure-change-hook', `allout-structure-added-hook',
+`allout-structure-deleted-hook', and `allout-structure-shifted-hook'.
+
+`allout-exposure-change-hook' replaces the existing
+`allout-view-change-hook', which is being deprecated.  Both are still
+invoked, but `allout-view-change-hook' will eventually be ignored.
+`allout-exposure-change-hook' is called with explicit arguments detailing
+the specifics of each change (as are the other new hooks), making it easier
+to use than the old version.
+
+There is a new mode deactivation hook, `allout-mode-deactivate-hook', for
+coordinating with deactivation of allout-mode.  Both that and the mode
+activation hook, `allout-mode-hook' are now run after the `allout-mode'
+variable is changed, rather than before.
+
+*** Allout now uses text overlay's `invisible' property for concealed text,
+instead of selective-display.  This simplifies the code, in particular
+avoiding the need for kludges for isearch dynamic-display, discretionary
+handling of edits of concealed text, undo concerns, etc.
+
+*** There are many other fixes and refinements, including:
+
+   - repaired inhibition of inadvertent edits to concealed text, without
+     inhibiting undo; we now reveal undo changes within concealed text.
+   - auto-fill-mode is now left inactive when allout-mode starts, if it
+     already was inactive.  also, `allout-inhibit-auto-fill' custom
+     configuration variable makes it easy to disable auto fill in allout
+     outlines in general or on a per-buffer basis.
+   - allout now tolerates fielded text in outlines without disruption.
+   - hot-spot navigation now is modularized with a new function,
+     `allout-hotspot-key-handler', enabling easier use and enhancement of
+     the functionality in allout addons.
+   - repaired retention of topic body hanging indent upon topic depth shifts
+   - bulleting variation is simpler and more accommodating, both in the
+     default behavior and in ability to vary when creating new topics
+   - mode deactivation now does cleans up effectively, more properly
+     restoring affected variables and hooks to former state, removing
+     overlays, etc.  see `allout-add-resumptions' and
+     `allout-do-resumptions', which replace the old `allout-resumptions'.
+   - included a few unit-tests for interior functionality.  developers can
+     have them automatically run at the end of module load by customizing
+     the option `allout-run-unit-tests-on-load'.
+   - many, many other, more minor tweaks, fixes, and refinements.
+   - version number incremented to 2.2
+
+** Hideshow mode changes
+
+*** New variable `hs-set-up-overlay' allows customization of the overlay
+used to effect hiding for hideshow minor mode.  Integration with isearch
+handles the overlay property `display' specially, preserving it during
+temporary overlay showing in the course of an isearch operation.
+
+*** New variable `hs-allow-nesting' non-nil means that hiding a block does
+not discard the hidden state of any "internal" blocks; when the parent
+block is later shown, the internal blocks remain hidden.  Default is nil.
+
+** FFAP changes
+
+*** New ffap commands and keybindings:
+
+C-x C-r (`ffap-read-only'),
+C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
+C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
+C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
+
+*** FFAP accepts wildcards in a file name by default.
+
+C-x C-f passes the file name to `find-file' with non-nil WILDCARDS
+argument, which visits multiple files, and C-x d passes it to `dired'.
+
+** Changes in Skeleton
+
+*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction.
+
+`@' has reverted to only setting `skeleton-positions' and no longer
+sets `skeleton-point'.  Skeletons which used @ to mark
+`skeleton-point' independent of `_' should now use `-' instead.  The
+updated `skeleton-insert' docstring explains these new features along
+with other details of skeleton construction.
+
+*** The variables `skeleton-transformation', `skeleton-filter', and
+`skeleton-pair-filter' have been renamed to
+`skeleton-transformation-function', `skeleton-filter-function', and
+`skeleton-pair-filter-function'.  The old names are still available
+as aliases.
+
+** HTML/SGML changes
+
+*** Emacs now tries to set up buffer coding systems for HTML/XML files
+automatically.
+
+*** SGML mode has indentation and supports XML syntax.
+The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
+When this option is enabled, SGML tags are inserted in XML style,
+i.e., there is always a closing tag.
+By default, its setting is inferred on a buffer-by-buffer basis
+from the file name or buffer contents.
+
+*** The variable `sgml-transformation' has been renamed to
+`sgml-transformation-function'.  The old name is still available as
+alias.
+
+*** `xml-mode' is now an alias for `sgml-mode', which has XML support.
+
+** TeX modes
+
+*** New major mode Doctex mode, for *.dtx files.
+
+*** C-c C-c prompts for a command to run, and tries to offer a good default.
+
+*** The user option `tex-start-options-string' has been replaced
+by two new user options: `tex-start-options', which should hold
+command-line options to feed to TeX, and `tex-start-commands' which should hold
+TeX commands to use at startup.
+
+*** verbatim environments are now highlighted in courier by font-lock
+and super/sub-scripts are made into super/sub-scripts.
+
+** RefTeX mode changes
+
+*** Changes to RefTeX's table of contents
+
+The new command keys "<" and ">" in the TOC buffer promote/demote the
+section at point or all sections in the current region, with full
+support for multifile documents.
+
+The new command `reftex-toc-recenter' (`C-c -') shows the current
+section in the TOC buffer without selecting the TOC window.
+Recentering can happen automatically in idle time when the option
+`reftex-auto-recenter-toc' is turned on.  The highlight in the TOC
+buffer stays when the focus moves to a different window.  A dedicated
+frame can show the TOC with the current section always automatically
+highlighted.  The frame is created and deleted from the toc buffer
+with the `d' key.
+
+The toc window can be split off horizontally instead of vertically.
+See new option `reftex-toc-split-windows-horizontally'.
+
+Labels can be renamed globally from the table of contents using the
+key `M-%'.
+
+The new command `reftex-goto-label' jumps directly to a label
+location.
+
+*** Changes related to citations and BibTeX database files
+
+Commands that insert a citation now prompt for optional arguments when
+called with a prefix argument.  Related new options are
+`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
+
+The new command `reftex-create-bibtex-file' creates a BibTeX database
+with all entries referenced in the current document.  The keys "e" and
+"E" allow to produce a BibTeX database file from entries marked in a
+citation selection buffer.
+
+The command `reftex-citation' uses the word in the buffer before the
+cursor as a default search string.
+
+The support for chapterbib has been improved.  Different chapters can
+now use BibTeX or an explicit `thebibliography' environment.
+
+The macros which specify the bibliography file (like \bibliography)
+can be configured with the new option `reftex-bibliography-commands'.
+
+Support for jurabib has been added.
+
+*** Global index matched may be verified with a user function.
+
+During global indexing, a user function can verify an index match.
+See new option `reftex-index-verify-function'.
+
+*** Parsing documents with many labels can be sped up.
+
+Operating in a document with thousands of labels can be sped up
+considerably by allowing RefTeX to derive the type of a label directly
+from the label prefix like `eq:' or `fig:'.  The option
+`reftex-trust-label-prefix' needs to be configured in order to enable
+this feature.  While the speed-up is significant, this may reduce the
+quality of the context offered by RefTeX to describe a label.
+
+*** Miscellaneous changes
+
+The macros which input a file in LaTeX (like \input, \include) can be
+configured in the new option `reftex-include-file-commands'.
+
+RefTeX supports global incremental search.
+
+** BibTeX mode
+
+*** The new command `bibtex-url' browses a URL for the BibTeX entry at
+point (bound to C-c C-l and mouse-2, RET on clickable fields).
+
+*** The new command `bibtex-entry-update' (bound to C-c C-u) updates
+an existing BibTeX entry by inserting fields that may occur but are not
+present.
+
+*** New `bibtex-entry-format' option `required-fields', enabled by default.
+
+*** `bibtex-maintain-sorted-entries' can take values `plain',
+`crossref', and `entry-class' which control the sorting scheme used
+for BibTeX entries.  `bibtex-sort-entry-class' controls the sorting
+scheme `entry-class'.  TAB completion for reference keys and
+automatic detection of duplicates does not require anymore that
+`bibtex-maintain-sorted-entries' is non-nil.
+
+*** The new command `bibtex-complete' completes word fragment before
+point according to context (bound to M-tab).
+
+*** In BibTeX mode the command `fill-paragraph' (M-q) fills
+individual fields of a BibTeX entry.
+
+*** The new variable `bibtex-autofill-types' contains a list of entry
+types for which fields are filled automatically (if possible).
+
+*** The new commands `bibtex-find-entry' and `bibtex-find-crossref'
+locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
+Crossref fields are clickable (bound to mouse-2, RET).
+
+*** The new variables `bibtex-files' and `bibtex-file-path' define a set
+of BibTeX files that are searched for entry keys.
+
+*** The new command `bibtex-validate-globally' checks for duplicate keys
+in multiple BibTeX files.
+
+*** If the new variable `bibtex-autoadd-commas' is non-nil,
+automatically add missing commas at end of BibTeX fields.
+
+*** The new command `bibtex-copy-summary-as-kill' pushes summary
+of BibTeX entry to kill ring (bound to C-c C-t).
+
+*** If the new variable `bibtex-parse-keys-fast' is non-nil,
+use fast but simplified algorithm for parsing BibTeX keys.
+
+*** The new variables bibtex-expand-strings and
+bibtex-autokey-expand-strings control the expansion of strings when
+extracting the content of a BibTeX field.
+
+*** The variables `bibtex-autokey-name-case-convert' and
+`bibtex-autokey-titleword-case-convert' have been renamed to
+`bibtex-autokey-name-case-convert-function' and
+`bibtex-autokey-titleword-case-convert-function'.  The old names are
+still available as aliases.
+
+** GUD changes
+
+*** The new package gdb-ui.el provides an enhanced graphical interface to
+GDB.  You can interact with GDB through the GUD buffer in the usual way, but
+there are also further buffers which control the execution and describe the
+state of your program.  It can separate the input/output of your program from
+that of GDB and watches expressions in the speedbar.  It also uses features of
+Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate
+breakpoints.
+
+To use this package just type M-x gdb.  See the Emacs manual if you want the
+old behaviour.
+
+*** GUD mode has its own tool bar for controlling execution of the inferior
+and other common debugger commands.
+
+*** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
+counter to the specified source line (the one where point is).
+
+*** The variable tooltip-gud-tips-p has been removed.  GUD tooltips can now be
+toggled independently of normal tooltips with the minor mode
+`gud-tooltip-mode'.
+
+*** In graphical mode, with a C program, GUD Tooltips have been extended to
+display the #define directive associated with an identifier when program is
+not executing.
+
+*** GUD mode improvements for jdb:
+
+**** Search for source files using jdb classpath and class information.
+Fast startup since there is no need to scan all source files up front.
+There is also no need to create and maintain lists of source
+directories to scan.  Look at `gud-jdb-use-classpath' and
+`gud-jdb-classpath' customization variables documentation.
+
+**** The previous method of searching for source files has been
+preserved in case someone still wants/needs to use it.
+Set `gud-jdb-use-classpath' to nil.
+
+**** Supports the standard breakpoint (gud-break, gud-clear)
+set/clear operations from Java source files under the classpath, stack
+traversal (gud-up, gud-down), and run until current stack finish
+(gud-finish).
+
+**** Supports new jdb (Java 1.2 and later) in addition to oldjdb
+(Java 1.1 jdb).
+
+*** Added jdb Customization Variables
+
+**** `gud-jdb-command-name'.  What command line to use to invoke jdb.
+
+**** `gud-jdb-use-classpath'.  Allows selection of java source file searching
+method: set to t for new method, nil to scan `gud-jdb-directories' for
+java sources (previous method).
+
+**** `gud-jdb-directories'.  List of directories to scan and search for Java
+classes using the original gud-jdb method (if `gud-jdb-use-classpath'
+is nil).
+
+*** Minor Improvements
+
+**** The STARTTLS wrapper (starttls.el) can now use GNUTLS
+instead of the OpenSSL based `starttls' tool.  For backwards
+compatibility, it prefers `starttls', but you can toggle
+`starttls-use-gnutls' to switch to GNUTLS (or simply remove the
+`starttls' tool).
+
+**** Do not allow debugger output history variable to grow without bounds.
+
+** Lisp mode changes
+
+*** Lisp mode now uses `font-lock-doc-face' for doc strings.
+
+*** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point.
+
+*** New features in evaluation commands
+
+**** The function `eval-defun' (C-M-x) called on defface reinitializes
+the face to the value specified in the defface expression.
+
+**** Typing C-x C-e twice prints the value of the integer result
+in additional formats (octal, hexadecimal, character) specified
+by the new function `eval-expression-print-format'.  The same
+function also defines the result format for `eval-expression' (M-:),
+`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
+
+** Changes to cmuscheme
+
+*** Emacs now offers to start Scheme if the user tries to
+evaluate a Scheme expression but no Scheme subprocess is running.
+
+*** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME
+is the name of the Scheme interpreter) exists, its contents are sent
+to the Scheme subprocess upon startup.
+
+*** There are new commands to instruct the Scheme interpreter to trace
+procedure calls (`scheme-trace-procedure') and to expand syntactic forms
+(`scheme-expand-current-form').  The commands actually sent to the Scheme
+subprocess are controlled by the user options `scheme-trace-command',
+`scheme-untrace-command' and `scheme-expand-current-form'.
+
+** Ewoc changes
+
+*** The new function `ewoc-delete' deletes specified nodes.
+
+*** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of
+a newline after each pretty-printed entry and after the header and footer.
+This allows you to create multiple-entry ewocs on a single line and to
+effect "invisible" nodes by arranging for the pretty-printer to not print
+anything for those nodes.
+
+For example, these two sequences of expressions behave identically:
+
+;; NOSEP nil
+(defun PP (data) (insert (format "%S" data)))
+(ewoc-create 'PP "start\n")
+
+;; NOSEP t
+(defun PP (data) (insert (format "%S\n" data)))
+(ewoc-create 'PP "start\n\n" "\n" t)
+
+** CC mode changes
+
+*** The CC Mode manual has been extensively revised.
+The information about using CC Mode has been separated from the larger
+and more difficult chapters about configuration.
+
+*** New Minor Modes
+**** Electric Minor Mode toggles the electric action of non-alphabetic keys.
+The new command c-toggle-electric-mode is bound to C-c C-l.  Turning the
+mode off can be helpful for editing chaotically indented code and for
+users new to CC Mode, who sometimes find electric indentation
+disconcerting.  Its current state is displayed in the mode line with an
+'l', e.g. "C/al".
+
+**** Subword Minor Mode makes Emacs recognize word boundaries at upper case
+letters in StudlyCapsIdentifiers.  You enable this feature by C-c C-w.  It can
+also be used in non-CC Mode buffers.  :-) Contributed by Masatake YAMATO.
+
+*** Support for the AWK language.
+Support for the AWK language has been introduced.  The implementation is
+based around GNU AWK version 3.1, but it should work pretty well with
+any AWK.  As yet, not all features of CC Mode have been adapted for AWK.
+Here is a summary:
+
+**** Indentation Engine
+The CC Mode indentation engine fully supports AWK mode.
+
+AWK mode handles code formatted in the conventional AWK fashion: `{'s
+which start actions, user-defined functions, or compound statements are
+placed on the same line as the associated construct; the matching `}'s
+are normally placed under the start of the respective pattern, function
+definition, or structured statement.
+
+The predefined line-up functions haven't yet been adapted for AWK
+mode, though some of them may work serendipitously.  There shouldn't
+be any problems writing custom indentation functions for AWK mode.
+
+**** Font Locking
+There is a single level of font locking in AWK mode, rather than the
+three distinct levels the other modes have.  There are several
+idiosyncrasies in AWK mode's font-locking due to the peculiarities of
+the AWK language itself.
+
+**** Comment and Movement Commands
+These commands all work for AWK buffers.  The notion of "defun" has
+been augmented to include AWK pattern-action pairs - the standard
+"defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this
+extended definition.
+
+**** "awk" style, Auto-newline Insertion and Clean-ups
+A new style, "awk" has been introduced, and this is now the default
+style for AWK code.  With auto-newline enabled, the clean-up
+c-one-liner-defun (see above) is useful.
+
+*** Font lock support.
+CC Mode now provides font lock support for all its languages.  This
+supersedes the font lock patterns that have been in the core font lock
+package for C, C++, Java and Objective-C.  Like indentation, font
+locking is done in a uniform way across all languages (except the new
+AWK mode - see below).  That means that the new font locking will be
+different from the old patterns in various details for most languages.
+
+The main goal of the font locking in CC Mode is accuracy, to provide a
+dependable aid in recognizing the various constructs.  Some, like
+strings and comments, are easy to recognize while others like
+declarations and types can be very tricky.  CC Mode can go to great
+lengths to recognize declarations and casts correctly, especially when
+the types aren't recognized by standard patterns.  This is a fairly
+demanding analysis which can be slow on older hardware, and it can
+therefore be disabled by choosing a lower decoration level with the
+variable font-lock-maximum-decoration.
+
+Note that the most demanding font lock level has been tuned with lazy
+fontification in mind; Just-In-Time-Lock mode should be enabled for
+the highest font lock level (by default, it is).  Fontifying a file
+with several thousand lines in one go can take the better part of a
+minute.
+
+**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables
+are now used by CC Mode to recognize identifiers that are certain to
+be types.  (They are also used in cases that aren't related to font
+locking.)  At the maximum decoration level, types are often recognized
+properly anyway, so these variables should be fairly restrictive and
+not contain patterns for uncertain types.
+
+**** Support for documentation comments.
+There is a "plugin" system to fontify documentation comments like
+Javadoc and the markup within them.  It's independent of the host
+language, so it's possible to e.g. turn on Javadoc font locking in C
+buffers.  See the variable c-doc-comment-style for details.
+
+Currently three kinds of doc comment styles are recognized: Sun's
+Javadoc, Autodoc (which is used in Pike) and GtkDoc (used in C).  (The
+last was contributed by Masatake YAMATO).  This is by no means a
+complete list of the most common tools; if your doc comment extractor
+of choice is missing then please drop a note to bug-cc-mode@gnu.org.
+
+**** Better handling of C++ templates.
+As a side effect of the more accurate font locking, C++ templates are
+now handled much better.  The angle brackets that delimit them are
+given parenthesis syntax so that they can be navigated like other
+parens.
+
+This also improves indentation of templates, although there still is
+work to be done in that area.  E.g. it's required that multiline
+template clauses are written in full and then refontified to be
+recognized, and the indentation of nested templates is a bit odd and
+not as configurable as it ought to be.
+
+**** Improved handling of Objective-C and CORBA IDL.
+Especially the support for Objective-C and IDL has gotten an overhaul.
+The special "@" declarations in Objective-C are handled correctly.
+All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
+handled correctly, also wrt indentation.
+
+*** Changes in Key Sequences
+**** c-toggle-auto-hungry-state is no longer bound to C-c C-t.
+
+**** c-toggle-hungry-state is no longer bound to C-c C-d.
+This binding has been taken over by c-hungry-delete-forwards.
+
+**** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline.
+c-toggle-auto-state remains as an alias.
+
+**** The new commands c-hungry-backspace and c-hungry-delete-forwards
+have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and
+C-c C-d (or C-c C-<delete> or C-c <delete>) respectively.  These
+commands delete entire blocks of whitespace with a single
+key-sequence.  [N.B. "DEL" is the <backspace> key.]
+
+**** The new command c-toggle-electric-mode is bound to C-c C-l.
+
+**** The new command c-subword-mode is bound to C-c C-w.
+
+*** C-c C-s (`c-show-syntactic-information') now highlights the anchor
+position(s).
+
+*** New syntactic symbols in IDL mode.
+The top level constructs "module" and "composition" (from CIDL) are
+now handled like "namespace" in C++: They are given syntactic symbols
+module-open, module-close, inmodule, composition-open,
+composition-close, and incomposition.
+
+*** New functions to do hungry delete without enabling hungry delete mode.
+The new functions `c-hungry-backspace' and `c-hungry-delete-forward'
+provide hungry deletion without having to toggle a mode.  They are
+bound to C-c C-DEL and C-c C-d (and several variants, for the benefit
+of different keyboard setups.  See "Changes in key sequences" above).
+
+*** Better control over `require-final-newline'.
+
+The variable `c-require-final-newline' specifies which of the modes
+implemented by CC mode should insert final newlines.  Its value is a
+list of modes, and only those modes should do it.  By default the list
+includes C, C++ and Objective-C modes.
+
+Whichever modes are in this list will set `require-final-newline'
+based on `mode-require-final-newline'.
+
+*** Format change for syntactic context elements.
+
+The elements in the syntactic context returned by `c-guess-basic-syntax'
+and stored in `c-syntactic-context' has been changed somewhat to allow
+attaching more information.  They are now lists instead of single cons
+cells.  E.g. a line that previously had the syntactic analysis
+
+((inclass . 11) (topmost-intro . 13))
+
+is now analyzed as
+
+((inclass 11) (topmost-intro 13))
+
+In some cases there are more than one position given for a syntactic
+symbol.
+
+This change might affect code that calls `c-guess-basic-syntax'
+directly, and custom lineup functions if they use
+`c-syntactic-context'.  However, the argument given to lineup
+functions is still a single cons cell with nil or an integer in the
+cdr.
+
+*** API changes for derived modes.
+
+There have been extensive changes "under the hood" which can affect
+derived mode writers.  Some of these changes are likely to cause
+incompatibilities with existing derived modes, but on the other hand
+care has now been taken to make it possible to extend and modify CC
+Mode with less risk of such problems in the future.
+
+**** New language variable system.
+These are variables whose values vary between CC Mode's different
+languages.  See the comment blurb near the top of cc-langs.el.
+
+**** New initialization functions.
+The initialization procedure has been split up into more functions to
+give better control: `c-basic-common-init', `c-font-lock-init', and
+`c-init-language-vars'.
+
+*** Changes in analysis of nested syntactic constructs.
+The syntactic analysis engine has better handling of cases where
+several syntactic constructs appear nested on the same line.  They are
+now handled as if each construct started on a line of its own.
+
+This means that CC Mode now indents some cases differently, and
+although it's more consistent there might be cases where the old way
+gave results that's more to one's liking.  So if you find a situation
+where you think that the indentation has become worse, please report
+it to bug-cc-mode@gnu.org.
+
+**** New syntactic symbol substatement-label.
+This symbol is used when a label is inserted between a statement and
+its substatement.  E.g:
+
+    if (x)
+      x_is_true:
+        do_stuff();
+
+*** Better handling of multiline macros.
+
+**** Syntactic indentation inside macros.
+The contents of multiline #define's are now analyzed and indented
+syntactically just like other code.  This can be disabled by the new
+variable `c-syntactic-indentation-in-macros'.  A new syntactic symbol
+`cpp-define-intro' has been added to control the initial indentation
+inside `#define's.
+
+**** New lineup function `c-lineup-cpp-define'.
+
+Now used by default to line up macro continuation lines.  The behavior
+of this function closely mimics the indentation one gets if the macro
+is indented while the line continuation backslashes are temporarily
+removed.  If syntactic indentation in macros is turned off, it works
+much line `c-lineup-dont-change', which was used earlier, but handles
+empty lines within the macro better.
+
+**** Automatically inserted newlines continues the macro if used within one.
+This applies to the newlines inserted by the auto-newline mode, and to
+`c-context-line-break' and `c-context-open-line'.
+
+**** Better alignment of line continuation backslashes.
+`c-backslash-region' tries to adapt to surrounding backslashes.  New
+variable `c-backslash-max-column' puts a limit on how far out
+backslashes can be moved.
+
+**** Automatic alignment of line continuation backslashes.
+This is controlled by the new variable `c-auto-align-backslashes'.  It
+affects `c-context-line-break', `c-context-open-line' and newlines
+inserted in Auto-Newline mode.
+
+**** Line indentation works better inside macros.
+Regardless whether syntactic indentation and syntactic indentation
+inside macros are enabled or not, line indentation now ignores the
+line continuation backslashes.  This is most noticeable when syntactic
+indentation is turned off and there are empty lines (save for the
+backslash) in the macro.
+
+*** indent-for-comment is more customizable.
+The behavior of M-; (indent-for-comment) is now configurable through
+the variable `c-indent-comment-alist'.  The indentation behavior is
+based on the preceding code on the line, e.g. to get two spaces after
+#else and #endif but indentation to `comment-column' in most other
+cases (something which was hardcoded earlier).
+
+*** New function `c-context-open-line'.
+It's the open-line equivalent of `c-context-line-break'.
+
+*** New clean-ups
+
+**** `comment-close-slash'.
+With this clean-up, a block (i.e. c-style) comment can be terminated by
+typing a slash at the start of a line.
+
+**** `c-one-liner-defun'
+This clean-up compresses a short enough defun (for example, an AWK
+pattern/action pair) onto a single line.  "Short enough" is configurable.
+
+*** New lineup functions
+
+**** `c-lineup-string-cont'
+This lineup function lines up a continued string under the one it
+continues.  E.g:
+
+result = prefix + "A message "
+                  "string.";      <- c-lineup-string-cont
+
+**** `c-lineup-cascaded-calls'
+Lines up series of calls separated by "->" or ".".
+
+**** `c-lineup-knr-region-comment'
+Gives (what most people think is) better indentation of comments in
+the "K&R region" between the function header and its body.
+
+**** `c-lineup-gcc-asm-reg'
+Provides better indentation inside asm blocks.
+
+**** `c-lineup-argcont'
+Lines up continued function arguments after the preceding comma.
+
+*** Added toggle for syntactic indentation.
+The function `c-toggle-syntactic-indentation' can be used to toggle
+syntactic indentation.
+
+*** Better caching of the syntactic context.
+CC Mode caches the positions of the opening parentheses (of any kind)
+of the lists surrounding the point.  Those positions are used in many
+places as anchor points for various searches.  The cache is now
+improved so that it can be reused to a large extent when the point is
+moved.  The less it moves, the less needs to be recalculated.
+
+The effect is that CC Mode should be fast most of the time even when
+opening parens are hung (i.e. aren't in column zero).  It's typically
+only the first time after the point is moved far down in a complex
+file that it'll take noticeable time to find out the syntactic
+context.
+
+*** Statements are recognized in a more robust way.
+Statements are recognized most of the time even when they occur in an
+"invalid" context, e.g. in a function argument.  In practice that can
+happen when macros are involved.
+
+*** Improved the way `c-indent-exp' chooses the block to indent.
+It now indents the block for the closest sexp following the point
+whose closing paren ends on a different line.  This means that the
+point doesn't have to be immediately before the block to indent.
+Also, only the block and the closing line is indented; the current
+line is left untouched.
+
+** Changes in Makefile mode
+
+*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake.
+
+The former two couldn't be differentiated before, and the latter three
+are new.  Font-locking is robust now and offers new customizable
+faces.
+
+*** The variable `makefile-query-one-target-method' has been renamed
+to `makefile-query-one-target-method-function'.  The old name is still
+available as alias.
+
+** Sql changes
+
+*** The variable `sql-product' controls the highlighting of different
+SQL dialects.  This variable can be set globally via Customize, on a
+buffer-specific basis via local variable settings, or for the current
+session using the new SQL->Product submenu.  (This menu replaces the
+SQL->Highlighting submenu.)
+
+The following values are supported:
+
+    ansi       ANSI Standard (default)
+    db2                DB2
+    informix    Informix
+    ingres      Ingres
+    interbase  Interbase
+    linter     Linter
+    ms         Microsoft
+    mysql      MySQL
+    oracle     Oracle
+    postgres   Postgres
+    solid       Solid
+    sqlite      SQLite
+    sybase      Sybase
+
+The current product name will be shown on the mode line following the
+SQL mode indicator.
+
+The technique of setting `sql-mode-font-lock-defaults' directly in
+your `.emacs' will no longer establish the default highlighting -- Use
+`sql-product' to accomplish this.
+
+ANSI keywords are always highlighted.
+
+*** The function `sql-add-product-keywords' can be used to add
+font-lock rules to the product specific rules.  For example, to have
+all identifiers ending in `_t' under MS SQLServer treated as a type,
+you would use the following line in your .emacs file:
+
+  (sql-add-product-keywords 'ms
+             '(("\\<\\w+_t\\>" . font-lock-type-face)))
+
+*** Oracle support includes keyword highlighting for Oracle 9i.
+
+Most SQL and PL/SQL keywords are implemented.  SQL*Plus commands are
+highlighted in `font-lock-doc-face'.
+
+*** Microsoft SQLServer support has been significantly improved.
+
+Keyword highlighting for SqlServer 2000 is implemented.
+sql-interactive-mode defaults to use osql, rather than isql, because
+osql flushes its error stream more frequently.  Thus error messages
+are displayed when they occur rather than when the session is
+terminated.
+
+If the username and password are not provided to `sql-ms', osql is
+called with the `-E' command line argument to use the operating system
+credentials to authenticate the user.
+
+*** Postgres support is enhanced.
+Keyword highlighting of Postgres 7.3 is implemented.  Prompting for
+the username and the pgsql `-U' option is added.
+
+*** MySQL support is enhanced.
+Keyword highlighting of MySql 4.0 is implemented.
+
+*** Imenu support has been enhanced to locate tables, views, indexes,
+packages, procedures, functions, triggers, sequences, rules, and
+defaults.
+
+*** Added SQL->Start SQLi Session menu entry which calls the
+appropriate `sql-interactive-mode' wrapper for the current setting of
+`sql-product'.
+
+*** sql.el supports the SQLite interpreter--call 'sql-sqlite'.
+
+** Fortran mode changes
+
+*** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow).
+It cannot deal with every code format, but ought to handle a sizeable
+majority.
+
+*** F90 mode and Fortran mode have new navigation commands
+`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
+`f90-previous-block', `fortran-end-of-block',
+`fortran-beginning-of-block'.
+
+*** Fortran mode does more font-locking by default.  Use level 3
+highlighting for the old default.
+
+*** Fortran mode has a new variable `fortran-directive-re'.
+Adapt this to match the format of any compiler directives you use.
+Lines that match are never indented, and are given distinctive font-locking.
+
+*** The new function `f90-backslash-not-special' can be used to change
+the syntax of backslashes in F90 buffers.
+
+** Miscellaneous programming mode changes
+
+*** In sh-script, a continuation line is only indented if the backslash was
+preceded by a SPC or a TAB.
+
+*** Perl mode has a new variable `perl-indent-continued-arguments'.
+
+*** The old Octave mode bindings C-c f and C-c i have been changed
+to C-c C-f and C-c C-i.  The C-c C-i subcommands now have duplicate
+bindings on control characters--thus, C-c C-i C-b is the same as
+C-c C-i b, and so on.
+
+*** Prolog mode has a new variable `prolog-font-lock-keywords'
+to support use of font-lock.
+
+** VC Changes
+
+*** New backends for Subversion and Meta-CVS.
+
+*** The new variable `vc-cvs-global-switches' specifies switches that
+are passed to any CVS command invoked by VC.
+
+These switches are used as "global options" for CVS, which means they
+are inserted before the command name.  For example, this allows you to
+specify a compression level using the `-z#' option for CVS.
+
+*** The key C-x C-q only changes the read-only state of the buffer
+(toggle-read-only).  It no longer checks files in or out.
+
+We made this change because we held a poll and found that many users
+were unhappy with the previous behavior.  If you do prefer this
+behavior, you can bind `vc-toggle-read-only' to C-x C-q in your
+`.emacs' file:
+
+    (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
+
+The function `vc-toggle-read-only' will continue to exist.
+
+*** VC-Annotate mode enhancements
+
+In VC-Annotate mode, you can now use the following key bindings for
+enhanced functionality to browse the annotations of past revisions, or
+to view diffs or log entries directly from vc-annotate-mode:
+
+    P:  annotates the previous revision
+    N:  annotates the next revision
+    J:  annotates the revision at line
+    A:  annotates the revision previous to line
+    D:  shows the diff of the revision at line with its previous revision
+    L:  shows the log of the revision at line
+    W:  annotates the workfile (most up to date) version
+
+** pcl-cvs changes
+
+*** In pcl-cvs mode, there is a new `d y' command to view the diffs
+between the local version of the file and yesterday's head revision
+in the repository.
+
+*** In pcl-cvs mode, there is a new `d r' command to view the changes
+anyone has committed to the repository since you last executed
+`checkout', `update' or `commit'.  That means using cvs diff options
+-rBASE -rHEAD.
+
+** Diff changes
+
+*** M-x diff uses Diff mode instead of Compilation mode.
+
+*** Diff mode key bindings changed.
+
+These are the new bindings:
+
+C-c C-e   diff-ediff-patch  (old M-A)
+C-c C-n   diff-restrict-view   (old M-r)
+C-c C-r   diff-reverse-direction  (old M-R)
+C-c C-u   diff-context->unified   (old M-U)
+C-c C-w   diff-refine-hunk  (old C-c C-r)
+
+To convert unified to context format, use C-u C-c C-u.
+In addition, C-c C-u now operates on the region
+in Transient Mark mode when the mark is active.
+
+** EDiff changes.
+
+***  When comparing directories.
+Typing D brings up a buffer that lists the differences between the contents of
+directories.  Now it is possible to use this buffer to copy the missing files
+from one directory to another.
+
+*** When comparing files or buffers.
+Typing the = key now offers to perform the word-by-word comparison of the
+currently highlighted regions in an inferior Ediff session.  If you answer 'n'
+then it reverts to the old behavior and asks the user to select regions for
+comparison.
+
+*** The new command `ediff-backup' compares a file with its most recent
+backup using `ediff'.  If you specify the name of a backup file,
+`ediff-backup' compares it with the file of which it is a backup.
+
+** Etags changes.
+
+*** New regular expressions features
+
+**** New syntax for regular expressions, multi-line regular expressions.
+
+The syntax --ignore-case-regexp=/regex/ is now undocumented and retained
+only for backward compatibility.  The new equivalent syntax is
+--regex=/regex/i.  More generally, it is --regex=/TAGREGEX/TAGNAME/MODS,
+where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or
+more characters among `i' (ignore case), `m' (multi-line) and `s'
+(single-line).  The `m' and `s' modifiers behave as in Perl regular
+expressions: `m' allows regexps to match more than one line, while `s'
+(which implies `m') means that `.' matches newlines.  The ability to
+span newlines allows writing of much more powerful regular expressions
+and rapid prototyping for tagging new languages.
+
+**** Regular expressions can use char escape sequences as in GCC.
+
+The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
+respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
+CR, TAB, VT.
+
+**** Regular expressions can be bound to a given language.
+
+The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags
+only for files of language LANGUAGE, and ignored otherwise.  This is
+particularly useful when storing regexps in a file.
+
+**** Regular expressions can be read from a file.
+
+The --regex=@regexfile option means read the regexps from a file, one
+per line.  Lines beginning with space or tab are ignored.
+
+*** New language parsing features
+
+**** New language HTML.
+
+Tags are generated for `title' as well as `h1', `h2', and `h3'.  Also,
+when `name=' is used inside an anchor and whenever `id=' is used.
+
+**** New language PHP.
+
+Functions, classes and defines are tags.  If the --members option is
+specified to etags, variables are tags also.
+
+**** New language Lua.
+
+All functions are tagged.
+
+**** The `::' qualifier triggers C++ parsing in C file.
+
+Previously, only the `template' and `class' keywords had this effect.
+
+**** The GCC __attribute__ keyword is now recognized and ignored.
+
+**** In C and derived languages, etags creates tags for #undef
+
+**** In Makefiles, constants are tagged.
+
+If you want the old behavior instead, thus avoiding to increase the
+size of the tags file, use the --no-globals option.
+
+**** In Perl, packages are tags.
+
+Subroutine tags are named from their package.  You can jump to sub tags
+as you did before, by the sub name, or additionally by looking for
+package::sub.
+
+**** In Prolog, etags creates tags for rules in addition to predicates.
+
+**** New default keywords for TeX.
+
+The new keywords are def, newcommand, renewcommand, newenvironment and
+renewenvironment.
+
+*** Honor #line directives.
+
+When Etags parses an input file that contains C preprocessor's #line
+directives, it creates tags using the file name and line number
+specified in those directives.  This is useful when dealing with code
+created from Cweb source files.  When Etags tags the generated file, it
+writes tags pointing to the source file.
+
+*** New option --parse-stdin=FILE.
+
+This option is mostly useful when calling etags from programs.  It can
+be used (only once) in place of a file name on the command line.  Etags
+reads from standard input and marks the produced tags as belonging to
+the file FILE.
+
+*** The --members option is now the default.
+
+Use --no-members if you want the old default behaviour of not tagging
+struct members in C, members variables in C++ and variables in PHP.
+
+** Ctags changes.
+
+*** Ctags now allows duplicate tags
+
+** Rmail changes
+
+*** Support for `movemail' from GNU mailutils was added to Rmail.
+
+This version of `movemail' allows you to read mail from a wide range of
+mailbox formats, including remote POP3 and IMAP4 mailboxes with or
+without TLS encryption.  If GNU mailutils is installed on the system
+and its version of `movemail' can be found in exec-path, it will be
+used instead of the native one.
+
+*** The new commands rmail-end-of-message and rmail-summary end-of-message,
+by default bound to `/', go to the end of the current mail message in
+Rmail and Rmail summary buffers.
+
+*** Rmail now displays 5-digit message ids in its summary buffer.
+
+** Gnus package
+
+*** Gnus now includes Sieve and PGG
+
+Sieve is a library for managing Sieve scripts.  PGG is a library to handle
+PGP/MIME.
+
+*** There are many news features, bug fixes and improvements.
+
+See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
+
+** MH-E changes.
+
+Upgraded to MH-E version 8.0.3.  There have been major changes since
+version 5.0.2; see MH-E-NEWS for details.
+
+** Miscellaneous mail changes
+
+*** The new variable `mail-default-directory' specifies
+`default-directory' for mail buffers.  This directory is used for
+auto-save files of mail buffers.  It defaults to "~/".
+
+*** The mode line can indicate new mail in a directory or file.
+
+See the documentation of the user option `display-time-mail-directory'.
+
+** Calendar changes
+
+*** There is a new calendar package, icalendar.el, that can be used to
+convert Emacs diary entries to/from the iCalendar format.
+
+*** The new package cal-html.el writes HTML files with calendar and
+diary entries.
+
+*** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
+and `diary-from-outlook-rmail' can be used to import diary entries
+from Outlook-format appointments in mail messages.  The variable
+`diary-outlook-formats' can be customized to recognize additional
+formats.
+
+*** The procedure for activating appointment reminders has changed:
+use the new function `appt-activate'.  The new variable
+`appt-display-format' controls how reminders are displayed, replacing
+`appt-issue-message', `appt-visible', and `appt-msg-window'.
+
+*** The function `simple-diary-display' now by default sets a header line.
+This can be controlled through the variables `diary-header-line-flag'
+and `diary-header-line-format'.
+
+*** Diary sexp entries can have custom marking in the calendar.
+Diary sexp functions which only apply to certain days (such as
+`diary-block' or `diary-cyclic') now take an optional parameter MARK,
+which is the name of a face or a single-character string indicating
+how to highlight the day in the calendar display.  Specifying a
+single-character string as @var{mark} places the character next to the
+day in the calendar.  Specifying a face highlights the day with that
+face.  This lets you have different colors or markings for vacations,
+appointments, paydays or anything else using a sexp.
+
+*** The meanings of C-x < and C-x > have been interchanged.
+< means to scroll backward in time, and > means to scroll forward.
+
+*** You can now use < and >, instead of C-x < and C-x >, to scroll
+the calendar left or right.
+
+*** The new function `calendar-goto-day-of-year' (g D) prompts for a
+year and day number, and moves to that date.  Negative day numbers
+count backward from the end of the year.
+
+*** The new Calendar function `calendar-goto-iso-week' (g w)
+prompts for a year and a week number, and moves to the first
+day of that ISO week.
+
+*** The functions `holiday-easter-etc' and `holiday-advent' now take
+optional arguments, in order to only report on the specified holiday
+rather than all.  This makes customization of variables such as
+`christian-holidays' simpler.
+
+*** The new variable `calendar-minimum-window-height' affects the
+window generated by the function `generate-calendar-window'.
+
+** Speedbar changes
+
+*** Speedbar items can now be selected by clicking mouse-1, based on
+the `mouse-1-click-follows-link' mechanism.
+
+*** The new command `speedbar-toggle-line-expansion', bound to SPC,
+contracts or expands the line under the cursor.
+
+*** New command `speedbar-create-directory', bound to `M'.
+
+*** The new commands `speedbar-expand-line-descendants' and
+`speedbar-contract-line-descendants', bound to `[' and `]'
+respectively, expand and contract the line under cursor with all of
+its descendents.
+
+*** The new user option `speedbar-use-tool-tips-flag', if non-nil,
+means to display tool-tips for speedbar items.
+
+*** The new user option `speedbar-query-confirmation-method' controls
+how querying is performed for file operations.  A value of 'always
+means to always query before file operations; 'none-but-delete means
+to not query before any file operations, except before a file
+deletion.
+
+*** The new user option `speedbar-select-frame-method' specifies how
+to select a frame for displaying a file opened with the speedbar.  A
+value of 'attached means to use the attached frame (the frame that
+speedbar was started from.)  A number such as 1 or -1 means to pass
+that number to `other-frame'.
+
+*** SPC and DEL are no longer bound to scroll up/down in the speedbar
+keymap.
+
+*** The frame management code in speedbar.el has been split into a new
+`dframe' library.  Emacs Lisp code that makes use of the speedbar
+should use `dframe-attached-frame' instead of
+`speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer',
+`dframe-close-frame' instead of `speedbar-close-frame', and
+`dframe-activity-change-focus-flag' instead of
+`speedbar-activity-change-focus-flag'.  The variables
+`speedbar-update-speed' and `speedbar-navigating-speed' are also
+obsolete; use `dframe-update-speed' instead.
+
+** battery.el changes
+
+*** display-battery-mode replaces display-battery.
+
+*** battery.el now works on recent versions of OS X.
+
+** Games
+
+*** The game `mpuz' is enhanced.
+
+`mpuz' now allows the 2nd factor not to have two identical digits.  By
+default, all trivial operations involving whole lines are performed
+automatically.  The game uses faces for better visual feedback.
+
+** Obsolete and deleted packages
+
+*** fast-lock.el and lazy-lock.el are obsolete.  Use jit-lock.el instead.
+
+*** iso-acc.el is now obsolete.  Use one of the latin input methods instead.
+
+*** zone-mode.el is now obsolete.  Use dns-mode.el instead.
+
+*** cplus-md.el has been deleted.
+
+** Miscellaneous
+
+*** The variable `woman-topic-at-point' is renamed
+to `woman-use-topic-at-point' and behaves differently: if this
+variable is non-nil, the `woman' command uses the word at point
+automatically, without asking for a confirmation.  Otherwise, the word
+at point is suggested as default, but not inserted at the prompt.
+
+*** You can now customize `fill-nobreak-predicate' to control where
+filling can break lines.  The value is now normally a list of
+functions, but it can also be a single function, for compatibility.
+
+Emacs provide two predicates, `fill-single-word-nobreak-p' and
+`fill-french-nobreak-p', for use as the value of
+`fill-nobreak-predicate'.
+
+*** M-x view-file and commands that use it now avoid interfering
+with special modes such as Tar mode.
+
+*** `global-whitespace-mode' is a new alias for `whitespace-global-mode'.
+
+*** The saveplace.el package now filters out unreadable files.
+
+When you exit Emacs, the saved positions in visited files no longer
+include files that aren't readable, e.g. files that don't exist.
+Customize the new option `save-place-forget-unreadable-files' to nil
+to get the old behavior.  The new options `save-place-save-skipped'
+and `save-place-skip-check-regexp' allow further fine-tuning of this
+feature.
+
+*** Commands `winner-redo' and `winner-undo', from winner.el, are now
+bound to C-c <left> and C-c <right>, respectively.  This is an
+incompatible change.
+
+*** The type-break package now allows `type-break-file-name' to be nil
+and if so, doesn't store any data across sessions.  This is handy if
+you don't want the `.type-break' file in your home directory or are
+annoyed by the need for interaction when you kill Emacs.
+
+*** `ps-print' can now print characters from the mule-unicode charsets.
+
+Printing text with characters from the mule-unicode-* sets works with
+`ps-print', provided that you have installed the appropriate BDF
+fonts.  See the file INSTALL for URLs where you can find these fonts.
+
+*** New command `strokes-global-set-stroke-string'.
+This is like `strokes-global-set-stroke', but it allows you to bind
+the stroke directly to a string to insert.  This is convenient for
+using strokes as an input method.
+
+*** In Outline mode, `hide-body' no longer hides lines at the top
+of the file that precede the first header line.
+
+*** `hide-ifdef-mode' now uses overlays rather than selective-display
+to hide its text.  This should be mostly transparent but slightly
+changes the behavior of motion commands like C-e and C-p.
+
+*** In Artist mode the variable `artist-text-renderer' has been
+renamed to `artist-text-renderer-function'.  The old name is still
+available as alias.
+
+*** In Enriched mode, `set-left-margin' and `set-right-margin' are now
+by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
+and `C-c C-r'.
+
+*** `partial-completion-mode' now handles partial completion on directory names.
+
+*** You can now disable pc-selection-mode after enabling it.
+
+M-x pc-selection-mode behaves like a proper minor mode, and with no
+argument it toggles the mode.  Turning off PC-Selection mode restores
+the global key bindings that were replaced by turning on the mode.
+
+*** `uniquify-strip-common-suffix' tells uniquify to prefer
+`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
+
+*** New user option `add-log-always-start-new-record'.
+
+When this option is enabled, M-x add-change-log-entry always
+starts a new record regardless of when the last record is.
+
+*** M-x compare-windows now can automatically skip non-matching text to
+resync points in both windows.
+
+*** PO translation files are decoded according to their MIME headers
+when Emacs visits them.
+
+*** Telnet now prompts you for a port number with C-u M-x telnet.
+
+*** calculator.el now has radix grouping mode.
+
+To enable this, set `calculator-output-radix' non-nil.  In this mode a
+separator character is used every few digits, making it easier to see
+byte boundaries etc.  For more info, see the documentation of the
+variable `calculator-radix-grouping-mode'.
+
+*** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
+
+*** The terminal emulation code in term.el has been improved; it can
+run most curses applications now.
+
+*** Support for `magic cookie' standout modes has been removed.
+
+Emacs still works on terminals that require magic cookies in order to
+use standout mode, but they can no longer display mode-lines in
+inverse-video.
+
+\f
+* Changes in Emacs 22.1 on non-free operating systems
+
+** The HOME directory defaults to Application Data under the user profile.
+
+If you used a previous version of Emacs without setting the HOME
+environment variable and a `.emacs' was saved, then Emacs will continue
+using C:/ as the default HOME.  But if you are installing Emacs afresh,
+the default location will be the "Application Data" (or similar
+localized name) subdirectory of your user profile.  A typical location
+of this directory is "C:\Documents and Settings\USERNAME\Application Data",
+where USERNAME is your user name.
+
+This change means that users can now have their own `.emacs' files on
+shared computers, and the default HOME directory is less likely to be
+read-only on computers that are administered by someone else.
+
+** Images are now supported on MS Windows.
+
+PBM and XBM images are supported out of the box.  Other image formats
+depend on external libraries.  All of these libraries have been ported
+to Windows, and can be found in both source and binary form at
+http://gnuwin32.sourceforge.net/.  Note that libpng also depends on
+zlib, and tiff depends on the version of jpeg that it was compiled
+against.  For additional information, see nt/INSTALL.
+
+** Sound is now supported on MS Windows.
+
+WAV format is supported on all versions of Windows, other formats such
+as AU, AIFF and MP3 may be supported in the more recent versions of
+Windows, or when other software provides hooks into the system level
+sound support for those formats.
+
+** Tooltips now work on MS Windows.
+
+See the Emacs 21.1 NEWS entry for tooltips for details.
+
+** Pointing devices with more than 3 buttons are now supported on MS Windows.
+
+The new variable `w32-pass-extra-mouse-buttons-to-system' controls
+whether Emacs should handle the extra buttons itself (the default), or
+pass them to Windows to be handled with system-wide functions.
+
+** Passing resources on the command line now works on MS Windows.
+
+You can use --xrm to pass resource settings to Emacs, overriding any
+existing values.  For example:
+
+  emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
+
+will start up Emacs on an initial frame of 100x20 with red background,
+irrespective of geometry or background setting on the Windows registry.
+
+** Emacs takes note of colors defined in Control Panel on MS-Windows.
+
+The Control Panel defines some default colors for applications in much
+the same way as wildcard X Resources do on X.  Emacs now adds these
+colors to the colormap prefixed by System (eg SystemMenu for the
+default Menu background, SystemMenuText for the foreground), and uses
+some of them to initialize some of the default faces.
+`list-colors-display' shows the list of System color names, in case
+you wish to use them in other faces.
+
+** Running in a console window in Windows now uses the console size.
+
+Previous versions of Emacs erred on the side of having a usable Emacs
+through telnet, even though that was inconvenient if you use Emacs in
+a local console window with a scrollback buffer.  The default value of
+w32-use-full-screen-buffer is now nil, which favors local console
+windows.  Recent versions of Windows telnet also work well with this
+setting.  If you are using an older telnet server then Emacs detects
+that the console window dimensions that are reported are not sane, and
+defaults to 80x25.  If you use such a telnet server regularly at a size
+other than 80x25, you can still manually set
+w32-use-full-screen-buffer to t.
+
+** Different shaped mouse pointers are supported on MS Windows.
+
+The mouse pointer changes shape depending on what is under the pointer.
+
+** On MS Windows, the "system caret" now follows the cursor.
+
+This enables Emacs to work better with programs that need to track the
+cursor, for example screen magnifiers and text to speech programs.
+When such a program is in use, the system caret is made visible
+instead of Emacs drawing its own cursor. This seems to be required by
+some programs. The new variable w32-use-visible-system-caret allows
+the caret visibility to be manually toggled.
+
+** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
+
+Those systems use Unicode internally, so this allows Emacs to share
+multilingual text with other applications.  On other versions of
+MS Windows, Emacs now uses the appropriate locale coding-system, so
+the clipboard should work correctly for your local language without
+any customizations.
+
+** On Mac OS, `keyboard-coding-system' changes based on the keyboard script.
+
+** The variable `mac-keyboard-text-encoding' and the constants
+`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
+`kTextEncodingISOLatin2' are obsolete.
+
+** The variable `mac-command-key-is-meta' is obsolete.  Use
+`mac-command-modifier' and `mac-option-modifier' instead.
+\f
+* Incompatible Lisp Changes in Emacs 22.1
+
+** Mode line display ignores text properties as well as the
+:propertize and :eval forms in the value of a variable whose
+`risky-local-variable' property is nil.
+
+The function `comint-send-input' now accepts 3 optional arguments:
+
+  (comint-send-input &optional no-newline artificial)
+
+Callers sending input not from the user should use bind the 3rd
+argument `artificial' to a non-nil value, to prevent Emacs from
+deleting the part of subprocess output that matches the input.
+
+** The `read-file-name' function now returns a null string if the
+user just types RET.
+
+** The variables post-command-idle-hook and post-command-idle-delay have
+been removed.  Use run-with-idle-timer instead.
+
+** A hex or octal escape in a string constant forces the string to
+be multibyte or unibyte, respectively.
+
+** The explicit method of creating a display table element by
+combining a face number and a character code into a numeric
+glyph code is deprecated.
+
+Instead, the new functions `make-glyph-code', `glyph-char', and
+`glyph-face' must be used to create and decode glyph codes in
+display tables.
+
+** `suppress-keymap' now works by remapping `self-insert-command' to
+the command `undefined'.  (In earlier Emacs versions, it used
+`substitute-key-definition' to rebind self inserting characters to
+`undefined'.)
+
+** The third argument of `accept-process-output' is now milliseconds.
+It used to be microseconds.
+
+** The function find-operation-coding-system may be called with a cons
+(FILENAME . BUFFER) in the second argument if the first argument
+OPERATION is `insert-file-contents', and thus a function registered in
+`file-coding-system-alist' is also called with such an argument.
+
+** When Emacs receives a USR1 or USR2 signal, this generates
+input events: sigusr1 or sigusr2.  Use special-event-map to
+handle these events.
+
+** The variable `memory-full' now remains t until
+there is no longer a shortage of memory.
+
+** Support for Mocklisp has been removed.
+
+\f
+* Lisp Changes in Emacs 22.1
+
+** General Lisp changes:
+
+*** New syntax: \s now stands for the SPACE character.
+
+`?\s' is a new way to write the space character.  You must make sure
+it is not followed by a dash, since `?\s-...' indicates the "super"
+modifier.  However, it would be strange to write a character constant
+and a following symbol (beginning with `-') with no space between
+them.
+
+`\s' stands for space in strings, too, but it is not really meant for
+strings; it is easier and nicer just to write a space.
+
+*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex.
+
+For instance, you can use "\u0428" to specify a string consisting of
+CYRILLIC CAPITAL LETTER SHA, or `"U0001D6E2" to specify one consisting
+of MATHEMATICAL ITALIC CAPITAL ALPHA (the latter is greater than
+#xFFFF and thus needs the longer syntax).
+
+This syntax works for both character constants and strings.
+
+*** New function `unsafep' determines whether a Lisp form is safe.
+
+It returns nil if the given Lisp form can't possibly do anything
+dangerous; otherwise it returns a reason why the form might be unsafe
+(calls unknown function, alters global variable, etc.).
+
+*** The function `eql' is now available without requiring the CL package.
+
+*** The new function `memql' is like `memq', but uses `eql' for comparison,
+that is, floats are compared by value and other elements with `eq'.
+
+*** New functions `string-or-null-p' and `booleanp'.
+
+`string-or-null-p' returns non-nil if OBJECT is a string or nil.
+`booleanp' returns non-nil if OBJECT is t or nil.
+
+*** `makehash' is now obsolete.  Use `make-hash-table' instead.
+
+*** Minor change in the function `format'.
+
+Some flags that were accepted but not implemented (such as "*") are no
+longer accepted.
+
+*** `add-to-list' takes an optional third argument, APPEND.
+
+If APPEND is non-nil, the new element gets added at the end of the
+list instead of at the beginning.  This change actually occurred in
+Emacs 21.1, but was not documented then.
+
+*** New function `add-to-ordered-list' is like `add-to-list' but
+associates a numeric ordering of each element added to the list.
+
+*** New function `add-to-history' adds an element to a history list.
+
+Lisp packages should use this function to add elements to their
+history lists.
+
+If `history-delete-duplicates' is non-nil, it removes duplicates of
+the new element from the history list it updates.
+
+*** New function `copy-tree' makes a copy of a tree.
+
+It recursively copies through both CARs and CDRs.
+
+*** New function `delete-dups' deletes `equal' duplicate elements from a list.
+
+It modifies the list destructively, like `delete'.  Of several `equal'
+occurrences of an element in the list, the one that's kept is the
+first one.
+
+*** New function `rassq-delete-all'.
+
+(rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose
+CDR is `eq' to the specified value.
+
+*** Functions `get' and `plist-get' no longer give errors for bad plists.
+
+They return nil for a malformed property list or if the list is
+cyclic.
+
+*** New functions `lax-plist-get' and `lax-plist-put'.
+
+They are like `plist-get' and `plist-put', except that they compare
+the property name using `equal' rather than `eq'.
+
+*** The function `number-sequence' makes a list of equally-separated numbers.
+
+For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).  By
+default, the separation is 1, but you can specify a different
+separation as the third argument.  (number-sequence 1.5 6 2) returns
+(1.5 3.5 5.5).
+
+*** New variables `most-positive-fixnum' and `most-negative-fixnum'.
+
+They hold the largest and smallest possible integer values.
+
+*** The function `expt' handles negative exponents differently.
+The value for `(expt A B)', if both A and B are integers and B is
+negative, is now a float.  For example: (expt 2 -2) => 0.25.
+
+*** The function `atan' now accepts an optional second argument.
+
+When called with 2 arguments, as in `(atan Y X)', `atan' returns the
+angle in radians between the vector [X, Y] and the X axis.  (This is
+equivalent to the standard C library function `atan2'.)
+
+*** New macro `with-case-table'
+
+This executes the body with the case table temporarily set to a given
+case table.
+
+*** New macro `with-local-quit' temporarily allows quitting.
+
+A quit inside the body of `with-local-quit' is caught by the
+`with-local-quit' form itself, but another quit will happen later once
+the code that has inhibited quitting exits.
+
+This is for use around potentially blocking or long-running code
+inside timer functions and `post-command-hook' functions.
+
+*** New macro `define-obsolete-function-alias'.
+
+This combines `defalias' and `make-obsolete'.
+
+*** New macro `eval-at-startup' specifies expressions to
+evaluate when Emacs starts up.  If this is done after startup,
+it evaluates those expressions immediately.
+
+This is useful in packages that can be preloaded.
+
+*** New function `macroexpand-all' expands all macros in a form.
+
+It is similar to the Common-Lisp function of the same name.
+One difference is that it guarantees to return the original argument
+if no expansion is done, which can be tested using `eq'.
+
+*** A function or macro's doc string can now specify the calling pattern.
+
+You put this info in the doc string's last line.  It should be
+formatted so as to match the regexp "\n\n(fn .*)\\'".  If you don't
+specify this explicitly, Emacs determines it from the actual argument
+names.  Usually that default is right, but not always.
+
+*** New variable `print-continuous-numbering'.
+
+When this is non-nil, successive calls to print functions use a single
+numbering scheme for circular structure references.  This is only
+relevant when `print-circle' is non-nil.
+
+When you bind `print-continuous-numbering' to t, you should
+also bind `print-number-table' to nil.
+
+*** `list-faces-display' takes an optional argument, REGEXP.
+
+If it is non-nil, the function lists only faces matching this regexp.
+
+*** New hook `command-error-function'.
+
+By setting this variable to a function, you can control
+how the editor command loop shows the user an error message.
+
+*** `debug-on-entry' accepts primitive functions that are not special forms.
+
+** Lisp code indentation features:
+
+*** The `defmacro' form can contain indentation and edebug declarations.
+
+These declarations specify how to indent the macro calls in Lisp mode
+and how to debug them with Edebug.  You write them like this:
+
+   (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
+
+DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
+possible declaration specifiers are:
+
+(indent INDENT)
+       Set NAME's `lisp-indent-function' property to INDENT.
+
+(edebug DEBUG)
+       Set NAME's `edebug-form-spec' property to DEBUG.  (This is
+       equivalent to writing a `def-edebug-spec' for the macro,
+       but this is cleaner.)
+
+*** cl-indent now allows customization of Indentation of backquoted forms.
+
+See the new user option `lisp-backquote-indentation'.
+
+*** cl-indent now handles indentation of simple and extended `loop' forms.
+
+The new user options `lisp-loop-keyword-indentation',
+`lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can
+be used to customize the indentation of keywords and forms in loop
+forms.
+
+** Variable aliases:
+
+*** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
+
+This function defines the symbol ALIAS-VAR as a variable alias for
+symbol BASE-VAR.  This means that retrieving the value of ALIAS-VAR
+returns the value of BASE-VAR, and changing the value of ALIAS-VAR
+changes the value of BASE-VAR.
+
+DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
+the same documentation as BASE-VAR.
+
+*** The macro `define-obsolete-variable-alias' combines `defvaralias' and
+`make-obsolete-variable'.
+
+*** New function: indirect-variable VARIABLE
+
+This function returns the variable at the end of the chain of aliases
+of VARIABLE.  If VARIABLE is not a symbol, or if VARIABLE is not
+defined as an alias, the function returns VARIABLE.
+
+It might be noteworthy that variables aliases work for all kinds of
+variables, including buffer-local and frame-local variables.
+
+** defcustom changes:
+
+*** The package-version keyword has been added to provide
+`customize-changed-options' functionality to packages in the future.
+Developers who make use of this keyword must also update the new
+variable `customize-package-emacs-version-alist'.
+
+*** The new customization type `float' requires a floating point number.
+
+** String changes:
+
+*** A hex escape in a string constant forces the string to be multibyte.
+
+*** An octal escape in a string constant forces the string to be unibyte.
+
+*** New function `string-to-multibyte' converts a unibyte string to a
+multibyte string with the same individual character codes.
+
+*** `split-string' now includes null substrings in the returned list if
+the optional argument SEPARATORS is non-nil and there are matches for
+SEPARATORS at the beginning or end of the string.  If SEPARATORS is
+nil, or if the new optional third argument OMIT-NULLS is non-nil, all
+empty matches are omitted from the returned list.
+
+*** The new function `assoc-string' replaces `assoc-ignore-case' and
+`assoc-ignore-representation', which are still available, but have
+been declared obsolete.
+
+*** New function `substring-no-properties' returns a substring without
+text properties.
+
+** Displaying warnings to the user.
+
+See the functions `warn' and `display-warning', or the Lisp Manual.
+If you want to be sure the warning will not be overlooked, this
+facility is much better than using `message', since it displays
+warnings in a separate window.
+
+** Progress reporters.
+
+These provide a simple and uniform way for commands to present
+progress messages for the user.
+
+See the new functions `make-progress-reporter',
+`progress-reporter-update', `progress-reporter-force-update',
+`progress-reporter-done', and `dotimes-with-progress-reporter'.
+
+** Buffer positions:
+
+*** Function `compute-motion' now calculates the usable window
+width if the WIDTH argument is nil.  If the TOPOS argument is nil,
+the usable window height and width is used.
+
+*** The `line-move', `scroll-up', and `scroll-down' functions will now
+modify the window vscroll to scroll through display rows that are
+taller that the height of the window, for example in the presence of
+large images.  To disable this feature, bind the new variable
+`auto-window-vscroll' to nil.
+
+*** The argument to `forward-word', `backward-word' is optional.
+
+It defaults to 1.
+
+*** Argument to `forward-to-indentation' and `backward-to-indentation' is optional.
+
+It defaults to 1.
+
+*** `field-beginning' and `field-end' take new optional argument, LIMIT.
+
+This argument tells them not to search beyond LIMIT.  Instead they
+give up and return LIMIT.
+
+*** New function `window-line-height' is an efficient way to get
+information about a specific text line in a window provided that the
+window's display is up-to-date.
+
+*** New function `line-number-at-pos' returns the line number of a position.
+
+It an optional buffer position argument that defaults to point.
+
+*** Function `pos-visible-in-window-p' now returns the pixel coordinates
+and partial visibility state of the corresponding row, if the PARTIALLY
+arg is non-nil.
+
+*** New functions `posn-at-point' and `posn-at-x-y' return
+click-event-style position information for a given visible buffer
+position or for a given window pixel coordinate.
+
+*** New function `mouse-on-link-p' tests if a position is in a clickable link.
+
+This is the function used by the new `mouse-1-click-follows-link'
+functionality.
+
+** Text modification:
+
+*** The new function `buffer-chars-modified-tick' returns a buffer's
+tick counter for changes to characters.  Each time text in that buffer
+is inserted or deleted, the character-change counter is updated to the
+tick counter (`buffer-modified-tick').  Text property changes leave it
+unchanged.
+
+*** The new function `insert-for-yank' normally works like `insert', but
+removes the text properties in the `yank-excluded-properties' list
+and handles the `yank-handler' text property.
+
+*** The new function `insert-buffer-substring-as-yank' is like
+`insert-for-yank' except that it gets the text from another buffer as
+in `insert-buffer-substring'.
+
+*** The new function `insert-buffer-substring-no-properties' is like
+`insert-buffer-substring', but removes all text properties from the
+inserted substring.
+
+*** The new function `filter-buffer-substring' extracts a buffer
+substring, passes it through a set of filter functions, and returns
+the filtered substring.  Use it instead of `buffer-substring' or
+`delete-and-extract-region' when copying text into a user-accessible
+data structure, such as the kill-ring, X clipboard, or a register.
+
+The list of filter function is specified by the new variable
+`buffer-substring-filters'.  For example, Longlines mode adds to
+`buffer-substring-filters' to remove soft newlines from the copied
+text.
+
+*** Function `translate-region' accepts also a char-table as TABLE
+argument.
+
+*** The new translation table `translation-table-for-input'
+is used for customizing self-insertion.  The character to
+be inserted is translated through it.
+
+*** Text clones.
+
+The new function `text-clone-create'.  Text clones are chunks of text
+that are kept identical by transparently propagating changes from one
+clone to the other.
+
+*** The function `insert-string' is now obsolete.
+
+** Filling changes.
+
+*** In determining an adaptive fill prefix, Emacs now tries the function in
+`adaptive-fill-function' _before_ matching the buffer line against
+`adaptive-fill-regexp' rather than _after_ it.
+
+** Atomic change groups.
+
+To perform some changes in the current buffer "atomically" so that
+they either all succeed or are all undone, use `atomic-change-group'
+around the code that makes changes.  For instance:
+
+  (atomic-change-group
+    (insert foo)
+    (delete-region x y))
+
+If an error (or other nonlocal exit) occurs inside the body of
+`atomic-change-group', it unmakes all the changes in that buffer that
+were during the execution of the body.  The change group has no effect
+on any other buffers--any such changes remain.
+
+If you need something more sophisticated, you can directly call the
+lower-level functions that `atomic-change-group' uses.  Here is how.
+
+To set up a change group for one buffer, call `prepare-change-group'.
+Specify the buffer as argument; it defaults to the current buffer.
+This function returns a "handle" for the change group.  You must save
+the handle to activate the change group and then finish it.
+
+Before you change the buffer again, you must activate the change
+group.  Pass the handle to `activate-change-group' afterward to
+do this.
+
+After you make the changes, you must finish the change group.  You can
+either accept the changes or cancel them all.  Call
+`accept-change-group' to accept the changes in the group as final;
+call `cancel-change-group' to undo them all.
+
+You should use `unwind-protect' to make sure the group is always
+finished.  The call to `activate-change-group' should be inside the
+`unwind-protect', in case the user types C-g just after it runs.
+(This is one reason why `prepare-change-group' and
+`activate-change-group' are separate functions.)  Once you finish the
+group, don't use the handle again--don't try to finish the same group
+twice.
+
+To make a multibuffer change group, call `prepare-change-group' once
+for each buffer you want to cover, then use `nconc' to combine the
+returned values, like this:
+
+  (nconc (prepare-change-group buffer-1)
+         (prepare-change-group buffer-2))
+
+You can then activate the multibuffer change group with a single call
+to `activate-change-group', and finish it with a single call to
+`accept-change-group' or `cancel-change-group'.
+
+Nested use of several change groups for the same buffer works as you
+would expect.  Non-nested use of change groups for the same buffer
+will lead to undesirable results, so don't let it happen; the first
+change group you start for any given buffer should be the last one
+finished.
+
+** Buffer-related changes:
+
+*** The new function `buffer-local-value' returns the buffer-local
+binding of VARIABLE (a symbol) in buffer BUFFER.  If VARIABLE does not
+have a buffer-local binding in buffer BUFFER, it returns the default
+value of VARIABLE instead.
+
+*** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
+
+If it is non-nil, it specifies which buffers to list.
+
+*** `kill-buffer-hook' is now a permanent local.
+
+*** The function `frame-or-buffer-changed-p' now lets you maintain
+various status records in parallel.
+
+It takes a variable (a symbol) as argument.  If the variable is non-nil,
+then its value should be a vector installed previously by
+`frame-or-buffer-changed-p'.  If the frame names, buffer names, buffer
+order, or their read-only or modified flags have changed, since the
+time the vector's contents were recorded by a previous call to
+`frame-or-buffer-changed-p', then the function returns t.  Otherwise
+it returns nil.
+
+On the first call to `frame-or-buffer-changed-p', the variable's
+value should be nil.  `frame-or-buffer-changed-p' stores a suitable
+vector into the variable and returns t.
+
+If the variable is itself nil, then `frame-or-buffer-changed-p' uses,
+for compatibility, an internal variable which exists only for this
+purpose.
+
+*** The function `read-buffer' follows the convention for reading from
+the minibuffer with a default value: if DEF is non-nil, the minibuffer
+prompt provided in PROMPT is edited to show the default value provided
+in DEF before the terminal colon and space.
+
+** Searching and matching changes:
+
+*** New function `looking-back' checks whether a regular expression matches
+the text before point.  Specifying the LIMIT argument bounds how far
+back the match can start; this is a way to keep it from taking too long.
+
+*** The new variable `search-spaces-regexp' controls how to search
+for spaces in a regular expression.  If it is non-nil, it should be a
+regular expression, and any series of spaces stands for that regular
+expression.  If it is nil, spaces stand for themselves.
+
+Spaces inside of constructs such as `[..]' and inside loops such as
+`*', `+', and `?' are never replaced with `search-spaces-regexp'.
+
+*** New regular expression operators, `\_<' and `\_>'.
+
+These match the beginning and end of a symbol.  A symbol is a
+non-empty sequence of either word or symbol constituent characters, as
+specified by the syntax table.
+
+*** `skip-chars-forward' and `skip-chars-backward' now handle
+character classes such as `[:alpha:]', along with individual
+characters and ranges.
+
+*** In `replace-match', the replacement text no longer inherits
+properties from surrounding text.
+
+*** The list returned by `(match-data t)' now has the buffer as a final
+element, if the last match was on a buffer.  `set-match-data'
+accepts such a list for restoring the match state.
+
+*** Functions `match-data' and `set-match-data' now have an optional
+argument `reseat'.  When non-nil, all markers in the match data list
+passed to these functions will be reseated to point to nowhere.
+
+*** rx.el has new corresponding `symbol-start' and `symbol-end' elements.
+
+*** The default value of `sentence-end' is now defined using the new
+variable `sentence-end-without-space', which contains such characters
+that end a sentence without following spaces.
+
+The function `sentence-end' should be used to obtain the value of the
+variable `sentence-end'.  If the variable `sentence-end' is nil, then
+this function returns the regexp constructed from the variables
+`sentence-end-without-period', `sentence-end-double-space' and
+`sentence-end-without-space'.
+
+** Undo changes:
+
+*** `buffer-undo-list' allows programmable elements.
+
+These elements have the form (apply FUNNAME . ARGS), where FUNNAME is
+a symbol other than t or nil.  That stands for a high-level change
+that should be undone by evaluating (apply FUNNAME ARGS).
+
+These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
+which indicates that the change which took place was limited to the
+range BEG...END and increased the buffer size by DELTA.
+
+*** If the buffer's undo list for the current command gets longer than
+`undo-outer-limit', garbage collection empties it.  This is to prevent
+it from using up the available memory and choking Emacs.
+
+** Killing and yanking changes:
+
+*** New `yank-handler' text property can be used to control how
+previously killed text on the kill ring is reinserted.
+
+The value of the `yank-handler' property must be a list with one to four
+elements with the following format:
+  (FUNCTION PARAM NOEXCLUDE UNDO).
+
+The `insert-for-yank' function looks for a yank-handler property on
+the first character on its string argument (typically the first
+element on the kill-ring).  If a `yank-handler' property is found,
+the normal behavior of `insert-for-yank' is modified in various ways:
+
+  When FUNCTION is present and non-nil, it is called instead of `insert'
+to insert the string.  FUNCTION takes one argument--the object to insert.
+  If PARAM is present and non-nil, it replaces STRING as the object
+passed to FUNCTION (or `insert'); for example, if FUNCTION is
+`yank-rectangle', PARAM should 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
+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
+by `yank-pop' to undo the insertion of the current object.  It is
+called with two arguments, the start and end of the current region.
+FUNCTION can set `yank-undo-function' to override the UNDO value.
+
+*** The functions `kill-new', `kill-append', and `kill-region' now have an
+optional argument to specify the `yank-handler' text property to put on
+the killed text.
+
+*** The function `yank-pop' will now use a non-nil value of the variable
+`yank-undo-function' (instead of `delete-region') to undo the previous
+`yank' or `yank-pop' command (or a call to `insert-for-yank').  The function
+`insert-for-yank' automatically sets that variable according to the UNDO
+element of the string argument's `yank-handler' text property if present.
+
+*** The function `insert-for-yank' now supports strings where the
+`yank-handler' property does not span the first character of the
+string.  The old behavior is available if you call
+`insert-for-yank-1' instead.
+
+** Syntax table changes:
+
+*** The new function `syntax-ppss' provides an efficient way to find the
+current syntactic context at point.
+
+*** The new function `syntax-after' returns the syntax code
+of the character after a specified buffer position, taking account
+of text properties as well as the character code.
+
+*** `syntax-class' extracts the class of a syntax code (as returned
+by `syntax-after').
+
+*** The macro `with-syntax-table' no longer copies the syntax table.
+
+** File operation changes:
+
+*** New vars `exec-suffixes' and `load-suffixes' used when
+searching for an executable or an Emacs Lisp file.
+
+*** New function `locate-file' searches for a file in a list of directories.
+`locate-file' accepts a name of a file to search (a string), and two
+lists: a list of directories to search in and a list of suffixes to
+try; typical usage might use `exec-path' and `load-path' for the list
+of directories, and `exec-suffixes' and `load-suffixes' for the list
+of suffixes.  The function also accepts a predicate argument to
+further filter candidate files.
+
+One advantage of using this function is that the list of suffixes in
+`exec-suffixes' is OS-dependant, so this function will find
+executables without polluting Lisp code with OS dependencies.
+
+*** The new function `file-remote-p' tests a file name and returns
+non-nil if it specifies a remote file (one that Emacs accesses using
+its own special methods and not directly through the file system).
+The value in that case is an identifier for the remote file system.
+
+*** The new hook `before-save-hook' is invoked by `basic-save-buffer'
+before saving buffers.  This allows packages to perform various final
+tasks.  For example, it can be used by the copyright package to make
+sure saved files have the current year in any copyright headers.
+
+*** `file-chase-links' now takes an optional second argument LIMIT which
+specifies the maximum number of links to chase through.  If after that
+many iterations the file name obtained is still a symbolic link,
+`file-chase-links' returns it anyway.
+
+*** Functions `file-name-sans-extension' and `file-name-extension' now
+ignore the leading dots in file names, so that file names such as
+`.emacs' are treated as extensionless.
+
+*** If `buffer-save-without-query' is non-nil in some buffer,
+`save-some-buffers' will always save that buffer without asking (if
+it's modified).
+
+*** `buffer-auto-save-file-format' is the new name for what was
+formerly called `auto-save-file-format'.  It is now a permanent local.
+
+*** `visited-file-modtime' and `calendar-time-from-absolute' now return
+a list of two integers, instead of a cons.
+
+*** The precedence of file name handlers has been changed.
+
+Instead of choosing the first handler that matches,
+`find-file-name-handler' now gives precedence to a file name handler
+that matches nearest the end of the file name.  More precisely, the
+handler whose (match-beginning 0) is the largest is chosen.  In case
+of ties, the old "first matched" rule applies.
+
+*** A file name handler can declare which operations it handles.
+
+You do this by putting an `operation' property on the handler name
+symbol.  The property value should be a list of the operations that
+the handler really handles.  It won't be called for any other
+operations.
+
+This is useful for autoloaded handlers, to prevent them from being
+autoloaded when not really necessary.
+
+*** The function `make-auto-save-file-name' is now handled by file
+name handlers.  This will be exploited for remote files mainly.
+
+*** The function `file-name-completion' accepts an optional argument
+PREDICATE, and rejects completion candidates that don't satisfy PREDICATE.
+
+*** The new primitive `set-file-times' sets a file's access and
+modification times.  Magic file name handlers can handle this
+operation.
+
+** Input changes:
+
+*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that
+display a prompt but don't use the minibuffer, now display the prompt
+using the text properties (esp. the face) of the prompt string.
+
+*** The functions `read-event', `read-char', and `read-char-exclusive'
+have a new optional argument SECONDS.  If non-nil, this specifies a
+maximum time to wait for input, in seconds.  If no input arrives after
+this time elapses, the functions stop waiting and return nil.
+
+*** An interactive specification can now use the code letter `U' to get
+the up-event that was discarded in case the last key sequence read for a
+previous `k' or `K' argument was a down-event; otherwise nil is used.
+
+*** The new interactive-specification `G' reads a file name
+much like `F', but if the input is a directory name (even defaulted),
+it returns just the directory name.
+
+*** (while-no-input BODY...) runs BODY, but only so long as no input
+arrives.  If the user types or clicks anything, BODY stops as if a
+quit had occurred.  `while-no-input' returns the value of BODY, if BODY
+finishes.  It returns nil if BODY was aborted by a quit, and t if
+BODY was aborted by arrival of input.
+
+*** `recent-keys' now returns the last 300 keys.
+
+** Minibuffer changes:
+
+*** The new function `minibufferp' returns non-nil if its optional
+buffer argument is a minibuffer.  If the argument is omitted, it
+defaults to the current buffer.
+
+*** New function `minibuffer-selected-window' returns the window which
+was selected when entering the minibuffer.
+
+*** The `read-file-name' function now takes an additional argument which
+specifies a predicate which the file name read must satisfy.  The
+new variable `read-file-name-predicate' contains the predicate argument
+while reading the file name from the minibuffer; the predicate in this
+variable is used by read-file-name-internal to filter the completion list.
+
+*** The new variable `read-file-name-function' can be used by Lisp code
+to override the built-in `read-file-name' function.
+
+*** The new variable `read-file-name-completion-ignore-case' specifies
+whether completion ignores case when reading a file name with the
+`read-file-name' function.
+
+*** The new function `read-directory-name' is for reading a directory name.
+
+It is like `read-file-name' except that the defaulting works better
+for directories, and completion inside it shows only directories.
+
+*** The new variable `history-add-new-input' specifies whether 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.
+
+** Completion changes:
+
+*** The new function `minibuffer-completion-contents' returns the contents
+of the minibuffer just before point.  That is what completion commands
+operate on.
+
+*** The functions `all-completions' and `try-completion' now accept lists
+of strings as well as hash-tables additionally to alists, obarrays
+and functions.  Furthermore, the function `test-completion' is now
+exported to Lisp.  The keys in alists and hash tables can be either
+strings or symbols, which are automatically converted with to strings.
+
+*** The new macro `dynamic-completion-table' supports using functions
+as a dynamic completion table.
+
+  (dynamic-completion-table FUN)
+
+FUN is called with one argument, the string for which completion is required,
+and it should return an alist containing all the intended possible
+completions.  This alist can be a full list of possible completions so that FUN
+can ignore the value of its argument.  If completion is performed in the
+minibuffer, FUN will be called in the buffer from which the minibuffer was
+entered.  `dynamic-completion-table' then computes the completion.
+
+*** The new macro `lazy-completion-table' initializes a variable
+as a lazy completion table.
+
+  (lazy-completion-table VAR FUN)
+
+If the completion table VAR is used for the first time (e.g., by passing VAR
+as an argument to `try-completion'), the function FUN is called with no
+arguments.  FUN must return the completion table that will be stored in VAR.
+If completion is requested in the minibuffer, FUN will be called in the buffer
+from which the minibuffer was entered.  The return value of
+`lazy-completion-table' must be used to initialize the value of VAR.
+
+** Abbrev changes:
+
+*** `define-abbrev' now accepts an optional argument SYSTEM-FLAG.
+
+If non-nil, this marks the abbrev as a "system" abbrev, which means
+that it won't be stored in the user's abbrevs file if he saves the
+abbrevs.  Major modes that predefine some abbrevs should always
+specify this flag.
+
+*** The new function `copy-abbrev-table' copies an abbrev table.
+
+It returns a new abbrev table that is a copy of a given abbrev table.
+
+** Enhancements to keymaps.
+
+*** Cleaner way to enter key sequences.
+
+You can enter a constant key sequence in a more natural format, the
+same one used for saving keyboard macros, using the macro `kbd'.  For
+example,
+
+(kbd "C-x C-f") => "\^x\^f"
+
+Actually, this format has existed since Emacs 20.1.
+
+*** Interactive commands can be remapped through keymaps.
+
+This is an alternative to using `defadvice' or `substitute-key-definition'
+to modify the behavior of a key binding using the normal keymap
+binding and lookup functionality.
+
+When a key sequence is bound to a command, and that command is
+remapped to another command, that command is run instead of the
+original command.
+
+Example:
+Suppose that minor mode `my-mode' has defined the commands
+`my-kill-line' and `my-kill-word', and it wants C-k (and any other key
+bound to `kill-line') to run the command `my-kill-line' instead of
+`kill-line', and likewise it wants to run `my-kill-word' instead of
+`kill-word'.
+
+Instead of rebinding C-k and the other keys in the minor mode map,
+command remapping allows you to directly map `kill-line' into
+`my-kill-line' and `kill-word' into `my-kill-word' using `define-key':
+
+   (define-key my-mode-map [remap kill-line] 'my-kill-line)
+   (define-key my-mode-map [remap kill-word] 'my-kill-word)
+
+When `my-mode' is enabled, its minor mode keymap is enabled too.  So
+when the user types C-k, that runs the command `my-kill-line'.
+
+Only one level of remapping is supported.  In the above example, this
+means that if `my-kill-line' is remapped to `other-kill', then C-k still
+runs `my-kill-line'.
+
+The following changes have been made to provide command remapping:
+
+- Command remappings are defined using `define-key' with a prefix-key
+  `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
+  to definition DEF in keymap MAP.  The definition is not limited to
+  another command; it can be anything accepted for a normal binding.
+
+- The new function `command-remapping' returns the binding for a
+  remapped command in the current keymaps, or nil if not remapped.
+
+- `key-binding' now remaps interactive commands unless the optional
+  third argument NO-REMAP is non-nil.
+
+- `where-is-internal' now returns nil for a remapped command (e.g.
+  `kill-line', when `my-mode' is enabled), and the actual key binding for
+  the command it is remapped to (e.g. C-k for my-kill-line).
+  It also has a new optional fifth argument, NO-REMAP, which inhibits
+  remapping if non-nil (e.g. it returns "C-k" for `kill-line', and
+  "<kill-line>" for `my-kill-line').
+
+- The new variable `this-original-command' contains the original
+  command before remapping.  It is equal to `this-command' when the
+  command was not remapped.
+
+*** The definition of a key-binding passed to define-key can use XEmacs-style
+key-sequences, such as [(control a)].
+
+*** New keymaps for typing file names
+
+Two new keymaps, `minibuffer-local-filename-completion-map'  and
+`minibuffer-local-must-match-filename-map', apply whenever
+Emacs reads a file name in the minibuffer.  These key maps override
+the usual binding of SPC to `minibuffer-complete-word' (so that file
+names with embedded spaces could be typed without the need to quote
+the spaces).
+
+*** New function `current-active-maps' returns a list of currently
+active keymaps.
+
+*** New function `describe-buffer-bindings' inserts the list of all
+defined keys and their definitions.
+
+*** New function `keymap-prompt' returns the prompt string of a keymap.
+
+*** If text has a `keymap' property, that keymap takes precedence
+over minor mode keymaps.
+
+*** The `keymap' property now also works at the ends of overlays and
+text properties, according to their stickiness.  This also means that it
+works with empty overlays.  The same hold for the `local-map' property.
+
+*** `key-binding' will now look up mouse-specific bindings.  The
+keymaps consulted by `key-binding' will get adapted if the key
+sequence is started with a mouse event.  Instead of letting the click
+position be determined from the key sequence itself, it is also
+possible to specify it with an optional argument explicitly.
+
+*** `define-key-after' now accepts keys longer than 1.
+
+*** (map-keymap FUNCTION KEYMAP) applies the function to each binding
+in the keymap.
+
+*** New variable `emulation-mode-map-alists'.
+
+Lisp packages using many minor mode keymaps can now maintain their own
+keymap alist separate from `minor-mode-map-alist' by adding their
+keymap alist to this list.
+
+*** Dense keymaps now handle inheritance correctly.
+
+Previously a dense keymap would hide all of the simple-char key
+bindings of the parent keymap.
+
+** Enhancements to process support
+
+*** Adaptive read buffering of subprocess output.
+
+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.  This behavior can be remedied to some extent
+by setting the new variable `process-adaptive-read-buffering' to a
+non-nil value (the default), as it will automatically delay reading
+from such processes, allowing them to produce more output before
+Emacs tries to read it.
+
+*** Processes now have an associated property list where programs can
+maintain process state and other per-process related information.
+
+Use the new functions `process-get' and `process-put' to access, add,
+and modify elements on this property list.  Use the new functions
+`process-plist' and `set-process-plist' to access and replace the
+entire property list of a process.
+
+*** Function `list-processes' now has an optional argument; if non-nil,
+it lists only the processes whose query-on-exit flag is set.
+
+*** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'.
+
+These replace the old function `process-kill-without-query'.  That
+function is still supported, but new code should use the new
+functions.
+
+*** The new function `call-process-shell-command'.
+
+This executes a shell command synchronously in a separate process.
+
+*** The new function `process-file' is similar to `call-process', but
+obeys file handlers.  The file handler is chosen based on
+`default-directory'.
+
+*** Function `signal-process' now accepts a process object or process
+name in addition to a process id to identify the signaled process.
+
+*** Function `accept-process-output' has a new optional fourth arg
+JUST-THIS-ONE.  If non-nil, only output from the specified process
+is handled, suspending output from other processes.  If value is an
+integer, also inhibit running timers.  This feature is generally not
+recommended, but may be necessary for specific applications, such as
+speech synthesis.
+
+*** A process filter function gets the output as multibyte string
+if the process specifies t for its filter's multibyteness.
+
+That multibyteness is decided by the value of
+`default-enable-multibyte-characters' when the process is created, and
+you can change it later with `set-process-filter-multibyte'.
+
+*** The new function `set-process-filter-multibyte' sets the
+multibyteness of the strings passed to the process's filter.
+
+*** The new function `process-filter-multibyte-p' returns the
+multibyteness of the strings passed to the process's filter.
+
+*** If a process's coding system is `raw-text' or `no-conversion' and its
+buffer is multibyte, the output of the process is at first converted
+to multibyte by `string-to-multibyte' then inserted in the buffer.
+Previously, it was converted to multibyte by `string-as-multibyte',
+which was not compatible with the behavior of file reading.
+
+** Enhanced networking support.
+
+*** The new `make-network-process' function makes network connections.
+It allows opening of stream and datagram connections to a server, as well as
+create a stream or datagram server inside Emacs.
+
+- A server is started using :server t arg.
+- Datagram connection is selected using :type 'datagram arg.
+- A server can open on a random port using :service t arg.
+- Local sockets are supported using :family 'local arg.
+- IPv6 is supported (when available).  You may explicitly select IPv6
+  using :family 'ipv6 arg.
+- Non-blocking connect is supported using :nowait t arg.
+- The process' property list can be initialized using :plist PLIST arg;
+  a copy of the server process' property list is automatically inherited
+  by new client processes created to handle incoming connections.
+
+To test for the availability of a given feature, use featurep like this:
+  (featurep 'make-network-process '(:type datagram))
+  (featurep 'make-network-process '(:family ipv6))
+
+*** The old `open-network-stream' now uses `make-network-process'.
+
+*** `process-contact' has an optional KEY argument.
+
+Depending on this argument, you can get the complete list of network
+process properties or a specific property.  Using :local or :remote as
+the KEY, you get the address of the local or remote end-point.
+
+An Inet address is represented as a 5 element vector, where the first
+4 elements contain the IP address and the fifth is the port number.
+
+*** New functions `stop-process' and `continue-process'.
+
+These functions stop and restart communication through a network
+connection.  For a server process, no connections are accepted in the
+stopped state.  For a client process, no input is received in the
+stopped state.
+
+*** New function `format-network-address'.
+
+This function reformats the Lisp representation of a network address
+to a printable string.  For example, an IP address A.B.C.D and port
+number P is represented as a five element vector [A B C D P], and the
+printable string returned for this vector is "A.B.C.D:P".  See the doc
+string for other formatting options.
+
+*** New function `network-interface-list'.
+
+This function returns a list of network interface names and their
+current network addresses.
+
+*** New function `network-interface-info'.
+
+This function returns the network address, hardware address, current
+status, and other information about a specific network interface.
+
+*** New functions `process-datagram-address', `set-process-datagram-address'.
+
+These functions are used with datagram-based network processes to get
+and set the current address of the remote partner.
+
+*** Deleting a network process with `delete-process' calls the sentinel.
+
+The status message passed to the sentinel for a deleted network
+process is "deleted".  The message passed to the sentinel when the
+connection is closed by the remote peer has been changed to
+"connection broken by remote peer".
+
+** Using window objects:
+
+*** You can now make a window as short as one line.
+
+A window that is just one line tall does not display either a mode
+line or a header line, even if the variables `mode-line-format' and
+`header-line-format' call for them.  A window that is two lines tall
+cannot display both a mode line and a header line at once; if the
+variables call for both, only the mode line actually appears.
+
+*** The new function `window-inside-edges' returns the edges of the
+actual text portion of the window, not including the scroll bar or
+divider line, the fringes, the display margins, the header line and
+the mode line.
+
+*** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
+return window edges in units of pixels, rather than columns and lines.
+
+*** New function `window-body-height'.
+
+This is like `window-height' but does not count the mode line or the
+header line.
+
+*** The new function `adjust-window-trailing-edge' moves the right
+or bottom edge of a window.  It does not move other window edges.
+
+*** The new macro `with-selected-window' temporarily switches the
+selected window without impacting the order of `buffer-list'.
+It saves and restores the current buffer, too.
+
+*** `select-window' takes an optional second argument NORECORD.
+
+This is like `switch-to-buffer'.
+
+*** `save-selected-window' now saves and restores the selected window
+of every frame.  This way, it restores everything that can be changed
+by calling `select-window'.  It also saves and restores the current
+buffer.
+
+*** `set-window-buffer' has an optional argument KEEP-MARGINS.
+
+If non-nil, that says to preserve the window's current margin, fringe,
+and scroll-bar settings.
+
+*** The new function `window-tree' returns a frame's window tree.
+
+*** The functions `get-lru-window' and `get-largest-window' take an optional
+argument `dedicated'.  If non-nil, those functions do not ignore
+dedicated windows.
+
+** Customizable fringe bitmaps
+
+*** There are new display properties, `left-fringe' and `right-fringe',
+that can be used to show a specific bitmap in the left or right fringe
+bitmap of the display line.
+
+Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a
+symbol identifying a fringe bitmap, either built-in or defined with
+`define-fringe-bitmap', and FACE is an optional face name to be used
+for displaying the bitmap instead of the default `fringe' face.
+When specified, FACE is automatically merged with the `fringe' face.
+
+*** New buffer-local variables `fringe-indicator-alist' and
+`fringe-cursor-alist' maps between logical (internal) fringe indicator
+and cursor symbols and the actual fringe bitmaps to be displayed.
+This decouples the logical meaning of the fringe indicators from the
+physical appearance, as well as allowing different fringe bitmaps to
+be used in different windows showing different buffers.
+
+*** New function `define-fringe-bitmap' can now be used to create new
+fringe bitmaps, as well as change the built-in fringe bitmaps.
+
+*** New function `destroy-fringe-bitmap' deletes a fringe bitmap
+or restores a built-in one to its default value.
+
+*** New function `set-fringe-bitmap-face' specifies the face to be
+used for a specific fringe bitmap.  The face is automatically merged
+with the `fringe' face, so normally, the face should only specify the
+foreground color of the bitmap.
+
+*** New function `fringe-bitmaps-at-pos' returns the current fringe
+bitmaps in the display line at a given buffer position.
+
+** Other window fringe features:
+
+*** Controlling the default left and right fringe widths.
+
+The default left and right fringe widths for all windows of a frame
+can now be controlled by setting the `left-fringe' and `right-fringe'
+frame parameters to an integer value specifying the width in pixels.
+Setting the width to 0 effectively removes the corresponding fringe.
+
+The actual default fringe widths for the frame may deviate from the
+specified widths, since the combined fringe widths must match an
+integral number of columns.  The extra width is distributed evenly
+between the left and right fringe.  To force a specific fringe width,
+specify the width as a negative integer (if both widths are negative,
+only the left fringe gets the specified width).
+
+Setting the width to nil (the default), restores the default fringe
+width which is the minimum number of pixels necessary to display any
+of the currently defined fringe bitmaps.  The width of the built-in
+fringe bitmaps is 8 pixels.
+
+*** Per-window fringe and scrollbar settings
+
+**** Windows can now have their own individual fringe widths and
+position settings.
+
+To control the fringe widths of a window, either set the buffer-local
+variables `left-fringe-width', `right-fringe-width', or call
+`set-window-fringes'.
+
+To control the fringe position in a window, that is, whether fringes
+are positioned between the display margins and the window's text area,
+or at the edges of the window, either set the buffer-local variable
+`fringes-outside-margins' or call `set-window-fringes'.
+
+The function `window-fringes' can be used to obtain the current
+settings.  To make `left-fringe-width', `right-fringe-width', and
+`fringes-outside-margins' take effect, you must set them before
+displaying the buffer in a window, or use `set-window-buffer' to force
+an update of the display margins.
+
+**** Windows can now have their own individual scroll-bar settings
+controlling the width and position of scroll-bars.
+
+To control the scroll-bar of a window, either set the buffer-local
+variables `scroll-bar-mode' and `scroll-bar-width', or call
+`set-window-scroll-bars'.  The function `window-scroll-bars' can be
+used to obtain the current settings.  To make `scroll-bar-mode' and
+`scroll-bar-width' take effect, you must set them before displaying
+the buffer in a window, or use `set-window-buffer' to force an update
+of the display margins.
+
+** Redisplay features:
+
+*** `sit-for' can now be called with args (SECONDS &optional NODISP).
+
+*** Iconifying or deiconifying a frame no longer makes sit-for return.
+
+*** New function `redisplay' causes an immediate redisplay if no input is
+available, equivalent to (sit-for 0).  The call (redisplay t) forces
+an immediate redisplay even if input is pending.
+
+*** New function `force-window-update' can initiate a full redisplay of
+one or all windows.  Normally, this is not needed as changes in window
+contents are detected automatically.  However, certain implicit
+changes to mode lines, header lines, or display properties may require
+forcing an explicit window update.
+
+*** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
+to display CHAR.  More precisely, if the selected frame's fontset has
+a font to display the character set that CHAR belongs to.
+
+Fontsets can specify a font on a per-character basis; when the fontset
+does that, this value cannot be accurate.
+
+*** You can define multiple overlay arrows via the new
+variable `overlay-arrow-variable-list'.
+
+It contains a list of variables which contain overlay arrow position
+markers, including the original `overlay-arrow-position' variable.
+
+Each variable on this list can have individual `overlay-arrow-string'
+and `overlay-arrow-bitmap' properties that specify an overlay arrow
+string (for non-window terminals) or fringe bitmap (for window
+systems) to display at the corresponding overlay arrow position.
+If either property is not set, the default `overlay-arrow-string' or
+'overlay-arrow-fringe-bitmap' will be used.
+
+*** New `line-height' and `line-spacing' properties for newline characters
+
+A newline can now have `line-height' and `line-spacing' text or overlay
+properties that control the height of the corresponding display row.
+
+If the `line-height' property value is t, the newline does not
+contribute to the height of the display row; instead the height of the
+newline glyph is reduced.  Also, a `line-spacing' property on this
+newline is ignored.  This can be used to tile small images or image
+slices without adding blank areas between the images.
+
+If the `line-height' property value is a positive integer, the value
+specifies the minimum line height in pixels.  If necessary, the line
+height it increased by increasing the line's ascent.
+
+If the `line-height' property value is a float, the minimum line
+height is calculated by multiplying the default frame line height by
+the given value.
+
+If the `line-height' property value is a cons (FACE . RATIO), the
+minimum line height is calculated as RATIO * height of named FACE.
+RATIO is int or float.  If FACE is t, it specifies the current face.
+
+If the `line-height' property value is a cons (nil . RATIO), the line
+height is calculated as RATIO * actual height of the line's contents.
+
+If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies
+the line height as described above, while TOTAL is any of the forms
+described above and specifies the total height of the line, causing a
+varying number of pixels to be inserted after the line to make it line
+exactly that many pixels high.
+
+If the `line-spacing' property value is an positive integer, the value
+is used as additional pixels to insert after the display line; this
+overrides the default frame `line-spacing' and any buffer local value of
+the `line-spacing' variable.
+
+If the `line-spacing' property is a float or cons, the line spacing
+is calculated as specified above for the `line-height' property.
+
+*** The buffer local `line-spacing' variable can now have a float value,
+which is used as a height relative to the default frame line height.
+
+*** Enhancements to stretch display properties
+
+The display property stretch specification form `(space PROPS)', where
+PROPS is a property list, now allows pixel based width and height
+specifications, as well as enhanced horizontal text alignment.
+
+The value of these properties can now be a (primitive) expression
+which is evaluated during redisplay.  The following expressions
+are supported:
+
+EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM
+NUM  ::= INTEGER | FLOAT | SYMBOL
+UNIT ::= in | mm | cm | width | height
+ELEM ::= left-fringe | right-fringe | left-margin | right-margin
+      |  scroll-bar | text
+POS  ::= left | center | right
+FORM ::= (NUM . EXPR) | (OP EXPR ...)
+OP   ::= + | -
+
+The form `NUM' specifies a fractional width or height of the default
+frame font size.  The form `(NUM)' specifies an absolute number of
+pixels.  If a symbol is specified, its buffer-local variable binding
+is used.  The `in', `mm', and `cm' units specifies the number of
+pixels per inch, milli-meter, and centi-meter, resp.  The `width' and
+`height' units correspond to the width and height of the current face
+font.  An image specification corresponds to the width or height of
+the image.
+
+The `left-fringe', `right-fringe', `left-margin', `right-margin',
+`scroll-bar', and `text' elements specify to the width of the
+corresponding area of the window.
+
+The `left', `center', and `right' positions can be used with :align-to
+to specify a position relative to the left edge, center, or right edge
+of the text area.  One of the above window elements (except `text')
+can also be used with :align-to to specify that the position is
+relative to the left edge of the given area.  Once the base offset for
+a relative position has been set (by the first occurrence of one of
+these symbols), further occurrences of these symbols are interpreted as
+the width of the area.
+
+For example, to align to the center of the left-margin, use
+    :align-to (+ left-margin (0.5 . left-margin))
+
+If no specific base offset is set for alignment, it is always relative
+to the left edge of the text area.  For example, :align-to 0 in a
+header line aligns with the first text column in the text area.
+
+The value of the form `(NUM . EXPR)' is the value of NUM multiplied by
+the value of the expression EXPR.  For example, (2 . in) specifies a
+width of 2 inches, while (0.5 . IMAGE) specifies half the width (or
+height) of the specified image.
+
+The form `(+ EXPR ...)' adds up the value of the expressions.
+The form `(- EXPR ...)' negates or subtracts the value of the expressions.
+
+*** Normally, the cursor is displayed at the end of any overlay and
+text property string that may be present at the current window
+position.  The cursor can now be placed on any character of such
+strings by giving that character a non-nil `cursor' text property.
+
+*** The display space :width and :align-to text properties are now
+supported on text terminals.
+
+*** Support for displaying image slices
+
+**** New display property (slice X Y WIDTH HEIGHT) can be used with
+an image property to display only a specific slice of the image.
+
+**** Function `insert-image' has new optional fourth arg to
+specify image slice (X Y WIDTH HEIGHT).
+
+**** New function `insert-sliced-image' inserts a given image as a
+specified number of evenly sized slices (rows x columns).
+
+*** Images can now have an associated image map via the :map property.
+
+An image map is an alist where each element has the format (AREA ID PLIST).
+An AREA is specified as either a rectangle, a circle, or a polygon:
+A rectangle is a cons (rect . ((X0 . Y0) . (X1 . Y1))) specifying the
+pixel coordinates of the upper left and bottom right corners.
+A circle is a cons (circle . ((X0 . Y0) . R)) specifying the center
+and the radius of the circle; R can be a float or integer.
+A polygon is a cons (poly . [X0 Y0 X1 Y1 ...]) where each pair in the
+vector describes one corner in the polygon.
+
+When the mouse pointer is above a hot-spot area of an image, the
+PLIST of that hot-spot is consulted; if it contains a `help-echo'
+property it defines a tool-tip for the hot-spot, and if it contains
+a `pointer' property, it defines the shape of the mouse cursor when
+it is over the hot-spot.  See the variable `void-area-text-pointer'
+for possible pointer shapes.
+
+When you click the mouse when the mouse pointer is over a hot-spot,
+an event is composed by combining the ID of the hot-spot with the
+mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
+
+*** The function `find-image' now searches in etc/images/ and etc/.
+The new variable `image-load-path' is a list of locations in which to
+search for image files.  The default is to search in etc/images, then
+in etc/, and finally in the directories specified by `load-path'.
+Subdirectories of etc/ and etc/images are not recursively searched; if
+you put an image file in a subdirectory, you have to specify it
+explicitly; for example, if an image is put in etc/images/foo/bar.xpm:
+
+  (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
+
+Note that all images formerly located in the lisp directory have been
+moved to etc/images.
+
+*** New function `image-load-path-for-library' returns a suitable
+search path for images relative to library. This function is useful in
+external packages to save users from having to update
+`image-load-path'.
+
+*** The new variable `max-image-size' defines the maximum size of
+images that Emacs will load and display.
+
+*** The new variable `display-mm-dimensions-alist' can be used to
+override incorrect graphical display dimensions returned by functions
+`display-mm-height' and `display-mm-width'.
+
+** Mouse pointer features:
+
+*** The mouse pointer shape in void text areas (i.e. after the end of a
+line or below the last line in the buffer) of the text window is now
+controlled by the new variable `void-text-area-pointer'.  The default
+is to use the `arrow' (non-text) pointer.  Other choices are `text'
+(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
+
+*** The mouse pointer shape over an image can now be controlled by the
+:pointer image property.
+
+*** The mouse pointer shape over ordinary text or images can now be
+controlled/overridden via the `pointer' text property.
+
+** Mouse event enhancements:
+
+*** All mouse events now include a buffer position regardless of where
+you clicked.  For mouse clicks in window margins and fringes, this is
+a sensible buffer position corresponding to the surrounding text.
+
+*** Mouse events for clicks on window fringes now specify `left-fringe'
+or `right-fringe' as the area.
+
+*** Mouse events include actual glyph column and row for all event types
+and all areas.
+
+*** Mouse events can now indicate an image object clicked on.
+
+*** Mouse events include relative X and Y pixel coordinates relative to
+the top left corner of the object (image or character) clicked on.
+
+*** Mouse events include the pixel width and height of the object
+(image or character) clicked on.
+
+*** Function `mouse-set-point' now works for events outside text area.
+
+*** `posn-point' now returns buffer position for non-text area events.
+
+*** New function `posn-area' returns window area clicked on (nil means
+text area).
+
+*** New function `posn-actual-col-row' returns the actual glyph coordinates
+of the mouse event position.
+
+*** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'.
+
+These return the image or string object of a mouse click, the X and Y
+pixel coordinates relative to the top left corner of that object, and
+the total width and height of that object.
+
+** Text property and overlay changes:
+
+*** Arguments for `remove-overlays' are now optional, so that you can
+remove all overlays in the buffer with just (remove-overlays).
+
+*** New variable `char-property-alias-alist'.
+
+This variable allows you to create alternative names for text
+properties.  It works at the same level as `default-text-properties',
+although it applies to overlays as well.  This variable was introduced
+to implement the `font-lock-face' property.
+
+*** New function `get-char-property-and-overlay' accepts the same
+arguments as `get-char-property' and returns a cons whose car is the
+return value of `get-char-property' called with those arguments and
+whose cdr is the overlay in which the property was found, or nil if
+it was found as a text property or not found at all.
+
+*** The new function `remove-list-of-text-properties'.
+
+It is like `remove-text-properties' except that it takes a list of
+property names as argument rather than a property list.
+
+** Face changes
+
+*** The variable `facemenu-unlisted-faces' has been removed.
+Emacs has a lot more faces than in the past, and nearly all of them
+needed to be excluded.  The new variable `facemenu-listed-faces' lists
+the faces to include in the face menu.
+
+*** The new face attribute condition `min-colors' can be used to tailor
+the face color to the number of colors supported by a display, and
+define the foreground and background colors accordingly so that they
+look best on a terminal that supports at least this many colors.  This
+is now the preferred method for defining default faces in a way that
+makes a good use of the capabilities of the display.
+
+*** New function `display-supports-face-attributes-p' can be used to test
+whether a given set of face attributes is actually displayable.
+
+A new predicate `supports' has also been added to the `defface' face
+specification language, which can be used to do this test for faces
+defined with `defface'.
+
+*** The special treatment of faces whose names are of the form `fg:COLOR'
+or `bg:COLOR' has been removed.  Lisp programs should use the
+`defface' facility for defining faces with specific colors, or use
+the feature of specifying the face attributes :foreground and :background
+directly in the `face' property instead of using a named face.
+
+*** The first face specification element in a defface can specify
+`default' instead of frame classification.  Then its attributes act as
+defaults that apply to all the subsequent cases (and can be overridden
+by them).
+
+*** The function `face-differs-from-default-p' now truly checks
+whether the given face displays differently from the default face or
+not (previously it did only a very cursory check).
+
+*** `face-attribute', `face-foreground', `face-background', `face-stipple'.
+
+These now accept a new optional argument, INHERIT, which controls how
+face inheritance is used when determining the value of a face
+attribute.
+
+*** New functions `face-attribute-relative-p' and `merge-face-attribute'
+help with handling relative face attributes.
+
+*** The priority of faces in an :inherit attribute face list is reversed.
+
+If a face contains an :inherit attribute with a list of faces, earlier
+faces in the list override later faces in the list; in previous
+releases of Emacs, the order was the opposite.  This change was made
+so that :inherit face lists operate identically to face lists in text
+`face' properties.
+
+*** The variable `face-font-rescale-alist' specifies how much larger
+(or smaller) font we should use.  For instance, if the value is
+'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
+point, we actually use a font of 13 point if the font matches
+SOME-FONTNAME-PATTERN.
+
+*** On terminals, faces with the :inverse-video attribute are displayed
+with swapped foreground and background colors even when one of them is
+not specified.  In previous releases of Emacs, if either foreground
+or background color was unspecified, colors were not swapped.  This
+was inconsistent with the face behavior under X.
+
+*** `set-fontset-font', `fontset-info', `fontset-font' now operate on
+the default fontset if the argument NAME is nil..
+
+** Font-Lock changes:
+
+*** New special text property `font-lock-face'.
+
+This property acts like the `face' property, but it is controlled by
+M-x font-lock-mode.  It is not, strictly speaking, a builtin text
+property.  Instead, it is implemented inside font-core.el, using the
+new variable `char-property-alias-alist'.
+
+*** font-lock can manage arbitrary text-properties beside `face'.
+
+**** the FACENAME returned in `font-lock-keywords' can be a list of the
+form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other
+properties than `face'.
+
+**** `font-lock-extra-managed-props' can be set to make sure those
+extra properties are automatically cleaned up by font-lock.
+
+*** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
+
+If a piece of text with that property gets contextually refontified
+(see `jit-lock-defer-contextually'), then all of that text will
+be refontified.  This is useful when the syntax of a textual element
+depends on text several lines further down (and when `font-lock-multiline'
+is not appropriate to solve that problem).  For example in Perl:
+
+       s{
+               foo
+       }{
+               bar
+       }e
+
+Adding/removing the last `e' changes the `bar' from being a piece of
+text to being a piece of code, so you'd put a `jit-lock-defer-multiline'
+property over the second half of the command to force (deferred)
+refontification of `bar' whenever the `e' is added/removed.
+
+*** `font-lock-extend-region-functions' makes it possible to alter the way
+the fontification region is chosen.  This can be used to prevent rounding
+up to whole lines, or to extend the region to include all related lines
+of multiline constructs so that such constructs get properly recognized.
+
+** Major mode mechanism changes:
+
+*** New variable `magic-mode-alist' determines major mode for a file by
+looking at the file contents.  It takes precedence over `auto-mode-alist'.
+
+*** New variable `magic-fallback-mode-alist' determines major mode for a file by
+looking at the file contents.  It is handled after `auto-mode-alist',
+only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file.
+
+*** XML or SGML major mode is selected when file starts with an `<?xml'
+or `<!DOCTYPE' declaration.
+
+*** An interpreter magic line (if present) takes precedence over the
+file name when setting the major mode.
+
+*** If new variable `auto-mode-case-fold' is set to a non-nil value,
+Emacs will perform a second case-insensitive search through
+`auto-mode-alist' if the first case-sensitive search fails.  This
+means that a file FILE.TXT is opened in text-mode, and a file
+PROG.HTML is opened in html-mode.  Note however, that independent of
+this setting, *.C files are usually recognized as C++ files.  It also
+has no effect on systems with case-insensitive file names.
+
+*** All major mode functions should now run the new normal hook
+`after-change-major-mode-hook', at their very end, after the mode
+hooks.  `run-mode-hooks' does this automatically.
+
+*** Major modes can define `eldoc-documentation-function'
+locally to provide Eldoc functionality by some method appropriate to
+the language.
+
+*** Use the new function `run-mode-hooks' to run the major mode's mode hook.
+
+*** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
+are used by `define-derived-mode' to make sure the mode hook for the
+parent mode is run at the end of the child mode.
+
+*** `define-derived-mode' by default creates a new empty abbrev table.
+It does not copy abbrevs from the parent mode's abbrev table.
+
+*** If a major mode function has a non-nil `no-clone-indirect'
+property, `clone-indirect-buffer' signals an error if you use
+it in that buffer.
+
+** Minor mode changes:
+
+*** `define-minor-mode' now accepts arbitrary additional keyword arguments
+and simply passes them to `defcustom', if applicable.
+
+*** `define-globalized-minor-mode'.
+
+This is a new name for what was formerly called
+`easy-mmode-define-global-mode'.  The old name remains as an alias.
+
+*** `minor-mode-list' now holds a list of minor mode commands.
+
+** Command loop changes:
+
+*** The new function `called-interactively-p' does what many people
+have mistakenly believed `interactive-p' to do: it returns t if the
+calling function was called through `call-interactively'.
+
+Only use this when you cannot solve the problem by adding a new
+INTERACTIVE argument to the command.
+
+*** The function `commandp' takes an additional optional argument.
+
+If it is non-nil, then `commandp' checks for a function that could be
+called with `call-interactively', and does not return t for keyboard
+macros.
+
+*** When a command returns, the command loop moves point out from
+within invisible text, in the same way it moves out from within text
+covered by an image or composition property.
+
+This makes it generally unnecessary to mark invisible text as intangible.
+This is particularly good because the intangible property often has
+unexpected side-effects since the property applies to everything
+(including `goto-char', ...) whereas this new code is only run after
+`post-command-hook' and thus does not care about intermediate states.
+
+*** If a command sets `transient-mark-mode' to `only', that
+enables Transient Mark mode for the following command only.
+During that following command, the value of `transient-mark-mode'
+is `identity'.  If it is still `identity' at the end of the command,
+the next return to the command loop changes to nil.
+
+*** Both the variable and the function `disabled-command-hook' have
+been renamed to `disabled-command-function'.  The variable
+`disabled-command-hook' has been kept as an obsolete alias.
+
+*** `emacsserver' now runs `pre-command-hook' and `post-command-hook'
+when it receives a request from emacsclient.
+
+*** `current-idle-time' reports how long Emacs has been idle.
+
+** Lisp file loading changes:
+
+*** `load-history' can now have elements of the form (t . FUNNAME),
+which means FUNNAME was previously defined as an autoload (before the
+current file redefined it).
+
+*** `load-history' now records (defun . FUNNAME) when a function is
+defined.  For a variable, it records just the variable name.
+
+*** The function `symbol-file' can now search specifically for function,
+variable or face definitions.
+
+*** `provide' and `featurep' now accept an optional second argument
+to test/provide subfeatures.  Also `provide' now checks `after-load-alist'
+and runs any code associated with the provided feature.
+
+*** The variable `recursive-load-depth-limit' has been deleted.
+Emacs now signals an error if the same file is loaded with more
+than 3 levels of nesting.
+
+** Byte compiler changes:
+
+*** The byte compiler now displays the actual line and character
+position of errors, where possible.  Additionally, the form of its
+warning and error messages have been brought into line with GNU standards
+for these.  As a result, you can use next-error and friends on the
+compilation output buffer.
+
+*** The new macro `with-no-warnings' suppresses all compiler warnings
+inside its body.  In terms of execution, it is equivalent to `progn'.
+
+*** You can avoid warnings for possibly-undefined symbols with a
+simple convention that the compiler understands.  (This is mostly
+useful in code meant to be portable to different Emacs versions.)
+Write forms like the following, or code that macroexpands into such
+forms:
+
+  (if (fboundp 'foo) <then> <else>)
+  (if (boundp 'foo) <then> <else)
+
+In the first case, using `foo' as a function inside the <then> form
+won't produce a warning if it's not defined as a function, and in the
+second case, using `foo' as a variable won't produce a warning if it's
+unbound.  The test must be in exactly one of the above forms (after
+macro expansion), but such tests can be nested.  Note that `when' and
+`unless' expand to `if', but `cond' doesn't.
+
+*** `(featurep 'xemacs)' is treated by the compiler as nil.  This
+helps to avoid noisy compiler warnings in code meant to run under both
+Emacs and XEmacs and can sometimes make the result significantly more
+efficient.  Since byte code from recent versions of XEmacs won't
+generally run in Emacs and vice versa, this optimization doesn't lose
+you anything.
+
+*** The local variable `no-byte-compile' in Lisp files is now obeyed.
+
+*** When a Lisp file uses CL functions at run-time, compiling the file
+now issues warnings about these calls, unless the file performs
+(require 'cl) when loaded.
+
+** Frame operations:
+
+*** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'.
+
+These functions return the current locations of the vertical and
+horizontal scroll bars in a frame or window.
+
+*** The new function `modify-all-frames-parameters' modifies parameters
+for all (existing and future) frames.
+
+*** The new frame parameter `tty-color-mode' specifies the mode to use
+for color support on character terminal frames.  Its value can be a
+number of colors to support, or a symbol.  See the Emacs Lisp
+Reference manual for more detailed documentation.
+
+*** When using non-toolkit scroll bars with the default width,
+the `scroll-bar-width' frame parameter value is nil.
+
+** Mode line changes:
+
+*** New function `format-mode-line'.
+
+This returns the mode line or header line of the selected (or a
+specified) window as a string with or without text properties.
+
+*** The new mode-line construct `(:propertize ELT PROPS...)' can be
+used to add text properties to mode-line elements.
+
+*** The new `%i' and `%I' constructs for `mode-line-format' can be used
+to display the size of the accessible part of the buffer on the mode
+line.
+
+*** Mouse-face on mode-line (and header-line) is now supported.
+
+** Menu manipulation changes:
+
+*** To manipulate the File menu using easy-menu, you must specify the
+proper name "file".  In previous Emacs versions, you had to specify
+"files", even though the menu item itself was changed to say "File"
+several versions ago.
+
+*** The dummy function keys made by easy-menu are now always lower case.
+If you specify the menu item name "Ada", for instance, it uses `ada'
+as the "key" bound by that key binding.
+
+This is relevant only if Lisp code looks for the bindings that were
+made with easy-menu.
+
+*** `easy-menu-define' now allows you to use nil for the symbol name
+if you don't need to give the menu a name.  If you install the menu
+into other keymaps right away (MAPS is non-nil), it usually doesn't
+need to have a name.
+
+** Mule changes:
+
+*** Already true in Emacs 21.1, but not emphasized clearly enough:
+
+Multibyte buffers can now faithfully record all 256 character codes
+from 0 to 255.  As a result, most of the past reasons to use unibyte
+buffers no longer exist.  We only know of three reasons to use them
+now:
+
+1. If you prefer to use unibyte text all of the time.
+
+2. For reading files into temporary buffers, when you want to avoid
+the time it takes to convert the format.
+
+3. For binary files where format conversion would be pointless and
+wasteful.
+
+*** The new variable `auto-coding-functions' lets you specify functions
+to examine a file being visited and deduce the proper coding system
+for it.  (If the coding system is detected incorrectly for a specific
+file, you can put a `coding:' tags to override it.)
+
+*** The new variable `ascii-case-table' stores the case table for the
+ascii character set.  Language environments (such as Turkish) may
+alter the case correspondences of ASCII characters.  This variable
+saves the original ASCII case table before any such changes.
+
+*** The new function `merge-coding-systems' fills in unspecified aspects
+of one coding system from another coding system.
+
+*** New coding system property `mime-text-unsuitable' indicates that
+the coding system's `mime-charset' is not suitable for MIME text
+parts, e.g. utf-16.
+
+*** New function `decode-coding-inserted-region' decodes a region as if
+it is read from a file without decoding.
+
+*** New CCL functions `lookup-character' and `lookup-integer' access
+hash tables defined by the Lisp function `define-translation-hash-table'.
+
+*** New function `quail-find-key' returns a list of keys to type in the
+current input method to input a character.
+
+*** `set-buffer-file-coding-system' now takes an additional argument,
+NOMODIFY.  If it is non-nil, it means don't mark the buffer modified.
+
+** Operating system access:
+
+*** The new primitive `get-internal-run-time' returns the processor
+run time used by Emacs since start-up.
+
+*** Functions `user-uid' and `user-real-uid' now return floats if the
+user UID doesn't fit in a Lisp integer.  Function `user-full-name'
+accepts a float as UID parameter.
+
+*** New function `locale-info' accesses locale information.
+
+*** On MS Windows, locale-coding-system is used to interact with the OS.
+The Windows specific variable w32-system-coding-system, which was
+formerly used for that purpose is now an alias for locale-coding-system.
+
+*** New function `redirect-debugging-output' can be used to redirect
+debugging output on the stderr file handle to a file.
+
+** GC changes:
+
+*** New variable `gc-cons-percentage' automatically grows the GC cons threshold
+as the heap size increases.
+
+*** New variables `gc-elapsed' and `gcs-done' provide extra information
+on garbage collection.
+
+*** The normal hook `post-gc-hook' is run at the end of garbage collection.
+
+The hook is run with GC inhibited, so use it with care.
+
+** Miscellaneous:
+
+*** A number of hooks have been renamed to better follow the conventions:
+
+`find-file-hooks' to `find-file-hook',
+`find-file-not-found-hooks' to `find-file-not-found-functions',
+`write-file-hooks' to `write-file-functions',
+`write-contents-hooks' to `write-contents-functions',
+`x-lost-selection-hooks' to `x-lost-selection-functions',
+`x-sent-selection-hooks' to `x-sent-selection-functions',
+`delete-frame-hook' to `delete-frame-functions'.
+
+In each case the old name remains as an alias for the moment.
+
+*** Variable `local-write-file-hooks' is marked obsolete.
+
+Use the LOCAL arg of `add-hook'.
+
+*** New function `x-send-client-message' sends a client message when
+running under X.
+\f
+* New Packages for Lisp Programming in Emacs 22.1
+
+** The new library button.el implements simple and fast `clickable
+buttons' in Emacs buffers.  Buttons are much lighter-weight than the
+`widgets' implemented by widget.el, and can be used by lisp code that
+doesn't require the full power of widgets.  Emacs uses buttons for
+such things as help and apropos buffers.
+
+** The new library tree-widget.el provides a widget to display a set
+of hierarchical data as an outline.  For example, the tree-widget is
+well suited to display a hierarchy of directories and files.
+
+** The new library bindat.el provides functions to unpack and pack
+binary data structures, such as network packets, to and from Lisp
+data structures.
+
+** master-mode.el implements a minor mode for scrolling a slave
+buffer without leaving your current buffer, the master buffer.
+
+It can be used by sql.el, for example: the SQL buffer is the master
+and its SQLi buffer is the slave.  This allows you to scroll the SQLi
+buffer containing the output from the SQL buffer containing the
+commands.
+
+This is how to use sql.el and master.el together: the variable
+sql-buffer contains the slave buffer.  It is a local variable in the
+SQL buffer.
+
+(add-hook 'sql-mode-hook
+   (function (lambda ()
+              (master-mode t)
+              (master-set-slave sql-buffer))))
+(add-hook 'sql-set-sqli-hook
+   (function (lambda ()
+              (master-set-slave sql-buffer))))
+
+** The new library benchmark.el does timing measurements on Lisp code.
+
+This includes measuring garbage collection time.
+
+** The new library testcover.el does test coverage checking.
+
+This is so you can tell whether you've tested all paths in your Lisp
+code.  It works with edebug.
+
+The function `testcover-start' instruments all functions in a given
+file.  Then test your code.  The function `testcover-mark-all' adds
+overlay "splotches" to the Lisp file's buffer to show where coverage
+is lacking.  The command `testcover-next-mark' (bind it to a key!)
+will move point forward to the next spot that has a splotch.
+
+Normally, a red splotch indicates the form was never completely
+evaluated; a brown splotch means it always evaluated to the same
+value.  The red splotches are skipped for forms that can't possibly
+complete their evaluation, such as `error'.  The brown splotches are
+skipped for forms that are expected to always evaluate to the same
+value, such as (setq x 14).
+
+For difficult cases, you can add do-nothing macros to your code to
+help out the test coverage tool.  The macro `noreturn' suppresses a
+red splotch.  It is an error if the argument to `noreturn' does
+return.  The macro `1value' suppresses a brown splotch for its argument.
+This macro is a no-op except during test-coverage -- then it signals
+an error if the argument actually returns differing values.
+
+
+\f
+----------------------------------------------------------------------
+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, 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; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.
+
+\f
+Local variables:
+mode: outline
+paragraph-separate: "[         \f]*$"
+end:
+
+arch-tag: 1aca9dfa-2ac4-4d14-bebf-0007cee12793
index 72e5a7afa7680875b63c8411e5bfc84693685945..d0820eb089ed2905ac75c072dd91a2729b3dc85b 100644 (file)
@@ -866,13 +866,15 @@ feature (in the font part of the configuration window).
 
 ** Subscript/superscript text in TeX is hard to read.
 
-tex-mode displays subscript/superscript text in the faces
-subscript/superscript, which are smaller than the normal font and
-lowered/raised.  With some fonts, nested superscripts (say) can be
-hard to read.  Switching to a different font, or changing your
-antialiasing setting (on an LCD screen), can both make the problem
-disappear.  Alternatively, customize the subscript and superscript
-faces to increase their height.
+If `tex-fontify-script' is non-nil, tex-mode displays
+subscript/superscript text in the faces subscript/superscript, which
+are smaller than the normal font and lowered/raised.  With some fonts,
+nested superscripts (say) can be hard to read.  Switching to a
+different font, or changing your antialiasing setting (on an LCD
+screen), can both make the problem disappear.  Alternatively, customize
+the following variables: tex-font-script-display (how much to
+lower/raise); tex-suscript-height-ratio (how much smaller than
+normal); tex-suscript-height-minimum (minimum height).
 
 * Internationalization problems
 
index 7c303fa8d8912b2d18308df957e9fb10628d432b..16e0923487da00d9fef7713a318af54113db2428 100644 (file)
@@ -1,18 +1,8 @@
-Copyright (C) 1992, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-  Free Software Foundation, Inc.
-See the end of the file for license conditions.
-
-
 This directory contains the architecture-independent files used by or
 with Emacs.  This includes some text files of documentation for GNU
 Emacs or of interest to Emacs users, and the file of dumped docstrings
 for Emacs functions and variables.
 
-Some of the *.tex files need special versions of TeX to typeset them.
-The files cs-*.tex and sk-*.tex need csTeX, a special version of TeX
-tailored to typesetting Czech and Slovak documents.  We provide
-PostScript files for these documents, so that you could print them
-without installing the modified TeX versions.
 
 `termcap.src' is included mainly for VMS.  It is a copy of the
 `/etc/termcap' file used on Unix.
index 90a3d32fa51210f13a13484c1367015d89d4ce72..bea9f39f2a5a2f21a9ac78bcd7f4f3df55327a4e 100644 (file)
--- a/etc/TODO
+++ b/etc/TODO
@@ -14,11 +14,14 @@ to the FSF.
 
 * Small but important fixes needed in existing features:
 
-** Fix compilation when Xaw3d libraries are present but libxaw is not.
-In new X11 versions, xaw3dg-dev does not depend on libxaw-dev, so the
-latter need not be installed.  As a result, all the source files that
-look for include files in X11/Xaw should look in X11/Xaw3d if we are
-using Xaw3d.
+** Make "emacs --daemon" start emacs without showing any frame. 
+Use emacsclient later to open frames.
+
+** Make it possible to reliably turn on minor modes using "mode:" in the local 
+variables section.
+
+** "Options -> Save Options" should save the font set via "Set Font/Fontset"
+I.e. mouse-set-font should use customize-face.
 
 ** Compute the list of active keymaps *after* reading the first event.
 
@@ -30,8 +33,6 @@ a window doesn't select it.
 but if you type M-n you should get the visited file name of the
 current buffer.
 
-** describe-face should show an example of text in the face.
-
 ** Distribute a bar cursor of width > 1 evenly between the two glyphs
    on each side of the bar (what to do at the edges?).
 
@@ -98,15 +99,20 @@ current buffer.
 
 ** make back_comment use syntax-ppss or equivalent.
 
-** Improve configure's treatment of NON_GNU_CPP on Solaris.
-(patch available for after Emacs 22)
-
 ** Consider improving src/sysdep.c's search for a fqdn.
 http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00782.html
 
 ** Find a proper fix for rcirc multiline nick adding.
 http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00684.html
 
+** Implement `network-interface-list' and `network-interface-info'
+on MS-Windows.  Hint: the information is present in the Registry,
+under the keys
+HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage\
+and
+HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<device>\
+where <device> is the network device found under the first key.
+
 * Important features:
 
 ** Provide user-friendly ways to list all available font families,
@@ -177,6 +183,7 @@ specified filters, specified timers, and specified hooks.
 
 ** Remove the default toggling behavior of minor modes when called from elisp
 rather than interactively.  This a trivial one-liner in easy-mode.el.
+
 ** Create a category of errors called `user-error' for errors which are
 typically due to pilot errors and should thus be in debug-ignored-errors.
 
@@ -313,8 +320,15 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
   the whole menu bar.  In the mean time, it should process other messages.
 
 ** Get some major packages installed: W3 (development version needs
-  significant work), PSGML.  Check the assignments file for other
-  packages which might go in and have been missed.
+  significant work), PSGML, nXML [Mark Hershberger is looking at this
+  http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01699.html],
+  _possibly_ Cedet and ECB.
+  http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01493.html
+  Check the assignments file for other packages which might go in and
+  have been missed.
+
+** Install ruby-mode (needs assignment)?
+   http://lists.gnu.org/archive/html/emacs-devel/2007-06/msg00051.html
 
 ** Make keymaps a first-class Lisp object (this means a rewrite of
   keymap.c).  What should it do apart from being opaque ?
@@ -334,9 +348,6 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
 ** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs).  Already in CUA,
   but it's a valuable feature worth making more general.
 
-** Support simultaneous tty and X frames.  [See the multi-tty branch of Emacs
-  at http://lorentey.hu/project/emacs.]
-
 ** Provide MIME support for Rmail using the Gnus MIME library.  [Maybe
   not now feasible, given Gnus maintenance decisions.  fx looked at
   this and can say where some of the problems are.]
@@ -359,6 +370,7 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
 ** Add a --pristine startup flag which does -q --no-site-file plus
   ignoring X resources (Doze equivalents?) and most of the
   environment.  What should not be ignored needs consideration.
+  [Do the existing -Q and -D cover this, or is more needed?]
 
 ** Improve the GC (generational, incremental).  (We may be able to use
   the Boehm collector.)  [See the Boehm-GC branch in CVS for work on
@@ -373,20 +385,9 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
 ** Provide an optional feature which computes a scroll bar slider's
   size and its position from lines instead of characters.
 
-** Add support for SVG (Scalable Vector Graphics) rendering to
-  Emacs.
-
 ** Allow unknown image types to be rendered via an external program
-  converting them to, say, PBM (in the same way as PostScript?).
-
-** Display images with alpha channels, such as png, with the current
-background color of whatever frame it is displayed in.  Currently, we
-use the default background color if specified in the png file, or, if
-that is unspecified, the background color of the frame in which the
-image was first created.  Ideally, the image should display the
-background color of whichever frame it is being displayed in.  The
-main complication is that this will require the loading of a new image
-object for each different background color.
+  converting them to, say, PBM (in the same way as PostScript?). [does
+  doc-view.el do this, or could it be extended to do this?]
 
 ** Allow displaying an X window from an external program in a buffer,
   e.g. to render graphics from Java applets.  [gerd and/or wmperry
@@ -546,11 +547,27 @@ but which can also be used as a modifier).
    See thread
    <http://lists.gnu.org/archive/html/emacs-pretest-bug/2006-11/msg00060.html>
 
+** Possibly add a "close" button to the modeline.
+   The idea is to add an "X" of some kind, that when clicked deletes
+   the window associated with that modeline.
+   http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg02416.html
+
+** When running isearch in a ChangeLog file, if the search fails,
+   then after another C-s try searching the previous ChangeLog, if
+   there is one. (e.g. go from ChangeLog to ChangeLog.12).
+   http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg02237.html
+   Juri Linkov has a patch for this:
+   http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00265.html
+
 * Internal changes
 
 ** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction
    since the mark bit is no longer stored in the Lisp_Object itself.
 
+** Refine the `predicate' arg to read-file-name.
+   Currently, it mixes up the predicate to apply when doing completion and the
+   one to use when terminating the selection.
+
 ** Merge ibuffer.el and buff-menu.el.
    More specifically do what's needed to make ibuffer.el the default,
    or just an extension of buff-menu.el.
@@ -592,6 +609,33 @@ but which can also be used as a modifier).
 
 * Other known bugs:
 
+** The \\{...} keymap dump output does not correctly remove shadowed entries:
+From: "Drew Adams" <drew.adams@oracle.com>
+
+(define-key minibuffer-local-map [(control ?=)] 'foo)
+(define-key minibuffer-local-completion-map [(control ?=)] 'foo)
+
+(defun toto () "\\{minibuffer-local-completion-map}"  4)
+
+C-h f toto shows a duplicate entry for C-=:
+
+toto is a Lisp function.
+(toto)
+
+key             binding
+- ---             -------
+
+C-g            abort-recursive-edit
+TAB            minibuffer-complete
+C-j            exit-minibuffer
+RET            exit-minibuffer
+ESC            Prefix Command
+SPC            minibuffer-complete-word
+?              minibuffer-completion-help
+C-=            foo
+C-=            foo
+...
+
 ** a two-char comment-starter whose two chars are symbol constituents will
 not be noticed if it appears within a word.
 
diff --git a/etc/calccard.ps b/etc/calccard.ps
deleted file mode 100644 (file)
index 909f6ba..0000000
+++ /dev/null
@@ -1,3023 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
-%%Title: calccard.dvi
-%%Pages: 2
-%%PageOrder: Ascend
-%%Orientation: Landscape
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8 CMSY8
-%%+ CMMI5 CMR5 CMMI7
-%%DocumentPaperSizes: Letter
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t letter -t landscape calccard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.03.22:0020
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI7
-%!PS-AdobeFont-1.1: CMMI7 1.100
-%%CreationDate: 1996 Jul 23 07:53:53
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 23 /nu put
-dup 98 /b put
-dup 120 /x put
-readonly def
-/FontBBox{0 -250 1171 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F
-C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B
-B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868
-DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811
-4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3
-FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB
-76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5
-123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770
-012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6
-A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413
-44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC
-4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050
-01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608
-D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3
-914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05
-261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615
-24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2
-A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663
-9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C
-889787CDC7AA8BEF7021B3C18A0A61A68CCEA80153A2ED18FBA2F0981555076F
-438A98A27C94C5FFA61BDC75F01323D5ED5AB372A68CE1054D1C05BDE6E0C5E8
-AEA6C294759EE247A2F6CCD464DAFC4CD5878535858B8D3F80B4F78A302BD80E
-C5293FED6A56508D32B3747EE6CDD617CF77C622E8DE6D64A519675BEB5BC555
-3D50F9CCFE16B80580BAC054E293AE396EBD749C4FC882AD2A1EFE6504769C3B
-DDFAD663FB3C0476E438F0A6D3610F20A7C835F2E7C6824BE6E3DE56A3A5B93C
-3611FFFBCFFA63681B883A53ADA3B41087EE3C6DDBCA98DC76CEF39A4757DCA6
-782B6979F61E33E5A9559F4E97B036BBAD4B7AFEB53F37FB5A3C34CFDAD18FA6
-816B65BA7D8F2A97FEFEA014681F8B55BB0D57429A9E30EA8E3A648C10E8FB58
-FC8179AF6BFA4240C36A778B7EE2E0F556A7BA51342100B3242ED3A2FBCB490D
-B4E83129529B29F8281CA8C3AF2BB368EDE5C0D8267650A13078DE2D6039AE2D
-F9A6A9F5C1AD38795DC2EF91798111497FDAF5539E9A7E4A94A82EE25D4CAA52
-5C2CD05E033030FCB1D65A755EFF702C0E071453F0D00052D737575F724D2520
-3EC12D1307B52256B2B3DB604222CDA9496D77FC457BFB0BFEC9086C254E2DFD
-D2D907405D677818CA833C34F5DE082259632A61D0BC34A35776939FF7DF1D03
-424B70C8DCA50C39781EB6B5F7AD0ABB79428B15A4B350A50CE8001F3C94A443
-50B3C6B00EBA90FB94F38F0DB08238969380E2F189513ED4D517CD21EA5A353A
-629C19EF6A18D47E5F4F2198B4960E814D62D465593CEA3146202B64E59A79C8
-05E114C42B62152A4233405B8B92F343E5FD773E05402784638A53361363F87B
-FCAB428B78E5959C776529F9CFC68488963ED0E452A07A89C3068865E47579C1
-0CDF10E04DE89A497066042F5982F66C97BD46E88F37B77404FFFC8F54C1742B
-3DFC2C939C752F4D4DF8812BC9BDC7989F69C38F30FD3BAA08EFCC363106D02E
-5D53E37C8208856916C560D963085AF3D2337A722A5D3ADA6A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR5
-%!PS-AdobeFont-1.1: CMR5 1.00B
-%%CreationDate: 1992 Feb 19 19:55:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR5) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR5 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-readonly def
-/FontBBox{-341 -250 1304 965}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
-87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
-D1F017CE45884D76EF2CB9BC5821FD25365DDEA1F9B0FF4CFF25B8E64D0747A3
-7CAD14E0DBA3E3CA95F10F24B7D5D75451845F1FB7221D7794A860756CFBB3E7
-704A52A22448C34812C3DBEDD41892577AABA7D555E9298C1A0F7DA638078167
-F56E29672683C51CF1C003764A8E7AD9D8ADE77B4983F56FE2D12723AAD8BF36
-682CFBB71B1D12210144D39DD841A971F71DB82AC6CD815987CDCF29ABC3CC96
-5EEBD5D661F452C6E0C74F9ED8D0C5B3755551A172E0FE31EA02344176E32666
-14B6853A1C303A5E818C2E455A6CF8FC9A66DC6E279101D61C523BD9DB8EB82F
-EAF4D7FDF6372383C0794C4568D079648689A199D4B65BA646CF95B7647E4BEC
-83856C27A8EF177B3A686EDA6354FE9573E123C12EC4BA56A7E8BFB8F9B75147
-9DD79A743968F36F7D0D479FA610F0816E6267E5CE327686A5485AB72201525C
-FB3B7CA10E1BF26E44C24E1696CB089CB0055BD692C89B237CF269F77A31DC81
-0F4B75C8400ABCFDCEC6443CD0E81871CD71AA3064ABDE882C4C52322C27FA8B
-41C689F827FB0F8AAF8022CF3C1F41C0B45601190C1328831857CBF9B1E7D1AA
-246117E56D6B7938488055F4E63E2A1C8D57C17D213729C68349FEC2C3466F41
-171E00413D39DF1F67BC15912F30775AFDF7FB3312587E20A68CF77AD3906040
-842D63C45E19278622DD228C18ABDD024DD9613CDC0B109095DB0ADC3A3C0CB5
-AB597D490189EA81239E39202CBC7A829EB9B313A8F962F7879D374ADF529BD0
-5533EF977142F647AD2F5975BA7E340419116099B19ACCCC37C551233C89EBC5
-0CEFDB2C5FA1AE7F2728AC2CCFFA1F2472A06712CBE05C928995346093DE83ED
-188D198805235ABEC2F45269730B3D746B5B5B9316CA61E980C8B8C8EED4303C
-DD100B858D5D8293BB270CF467DC645518EEBCDC91AB2BC47DFAAA8E519B913C
-ACB750FD58E9941AF0446768FD05F673D206B07A7F7D2D248B36DD44078DFAEF
-0AAA8D4E9541E36C7B8CEEED4231A02AC2575EEB369EDB7AB5302C0E719240FC
-AB8FC835EA79D4B20831ABF6F9C0007573025336909FF1ABA4339A8CE134F6F8
-2E1F6E5CBB5CDC6CB9385EE380CF8AF0989A2D85A78D2D5DA25D49B2F640DAD7
-956F1D4DF564EEB09188FEFFB93CB2F3C13DB32292C2402DE295055971798A1E
-BC7C45BD09151FFE7CAA7F939B47CA00A11F417E55E2916EA310C5C274BC3B80
-4D28F9933D45E69BF4D5F81D80DF4D566D831939F835A0B60D3BED874B0FE6C4
-691639AACB59051D33FEEF11957C7C8F26C48A77CEA1A9116BC53CA7B745D4BB
-16EF2AA24E3C7F0136A560569A49970D0274310BB8491956B32706E8A0EC51C8
-29A3CECECD30B23E774CB0C2818CEDBE85AEE58899984A5A882831A81E8252E2
-493516FD70FB25EB44943E414450332048CAF2642F49FD179F0965352FF3D19D
-68F628DA4C9B5ABF24517D091ECB96691A52741F0F10B74C72A9B2D47E38782B
-DD35C061D1F9EB5365C464E547D6DC36B53506D69C2B1915F92DF8F86C00EC75
-DF65AC6DBC7E4C6F5A64DC3337CA547E37A96CEDE7C797E1734752D5C9C1B0B2
-73471B3C18E574C990AEA0684BF079F466D5BA7F2285692780712882126C366A
-D76D3F9852764956AE8F51A3AC3F7B6BBDA243C25610DB3D1724F888FE91CE90
-5AE5B02A3D84A401106056DEA5331A42DE679894BEF76490B03FA454AB5D7651
-4FCC138B3B45E189473A227E75249897B70DF152D226816A8A4F096F0761023B
-E3E255D77CDAF058287AA478A01420903BB0AE152EED2B460C02BA1652E533B1
-0A8B40A28076E2E8A5F8CF74C13564C222FFD1149DC3B7A8DCC6D5781255B656
-50B17794F6920CE29034326B5D7A4FA9A53BC8
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMMI5
-%!PS-AdobeFont-1.1: CMMI5 1.100
-%%CreationDate: 1996 Aug 02 08:21:10
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI5) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI5 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-dup 78 /N put
-dup 110 /n put
-readonly def
-/FontBBox{37 -250 1349 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA06DA87FC7163A5A2A756A598FAB07633
-89DE8BB201D5DB4627484A80A431B6AFDBBBF23D4157D4AFE17E6B1C853DD417
-25F84CD55402AB88AB7EEFDEDBF2C2C731BD25567C53B474CCF739188A930039
-098A197F9C4BE7594D79442B2C8A67447DE44698321145D7689B91EF235EA80E
-B600AA8E238064F154284096C4C2554EFE8DDF13AFF8D3CE30E0999375C0FEE6
-F992DEA5FC3897E2CC8B7A90238E61E41622DE80F438DD994C73275CC52249D9
-F6686F87F394FB7BB668138B210BEC9E46415A1B58C990B81E7D7DD301143517
-4C2A259D2A0A1E200F8101469C10D7D537B0D4D39296A9AB3F132DA9A3B459B0
-F850E2B3A03BDCB35AEF82285D19C38F474FB414F8EC971B994D1C7DD753B271
-2B71549DF497C665DF0F266988209D9EB616E4D9BA229FF984E7A886DB01FD21
-48ED2E4859FD6416C2CE52537464EA884C8C9C2D1083E2B83BE4B766474C23B6
-6E8EC5003200AB10514BB44D14CA700416AB6B2683E80862E7D5B49A05526A32
-554BB23AB8B0824BBA198E3825CE82380CC0FECF46651E3E5D77F09465E73164
-20342822F29572BC7F73F2C3BF95ED3BB6FDEADC20C6AC866C4F2C679594D7E8
-8D944704A3C5D771DC39503BECAB89F34D8CDB8FDB91AFE21F3F0260D05E90C5
-73E2C13DFA022C4522E5918EE25038A0498FBB530DA33B0AE238B1C6ED03FC04
-2BFED8236E07820C5BAB411EAE1B31D93A2FA7C374B1725FEC359ABCB88E2C89
-214529A263D795AACB0B95A3AB2F4E08EF350C282CE521716DBB06E5B8291B3F
-5D4ACA230FA192F64BC902A4C8842C0F916F92FBD002ADD408BF0401D0284FBB
-F05D4C6DB631420747CC902C5E1617E6573612FB26C8378DF41FFB5048D3CF06
-4893DBA48EF4B043D760F60C75712169D16C83EE020C45369E443E853E1809DD
-F395B812067D6FDBD26111B34F42C21036AF952D0D767FD17F6959D9FDD46005
-D64FFF54772B50BB9B173AE79702981F58F9F235C591F476A31852174DF0619C
-A470359153DC32610E782B204E7945515464DACE9099B81EEECC7EBD4B5126AF
-C3FD9DDFB329AF1C95C41FA4A5F6958869509A23BD7210386329771FA46FF926
-0E54AC35106253EE140449425A8670E1F92B178A02A58EB57540F4BD8110E548
-BB584EA6D625C5F5FE0124A98E49915F1A1B95D2125874360EED1C4379FEF3C6
-90E5780C20309F11F2F23FAD635C44BA030B39EFF083A3ECCDD2641DCA8AF5D3
-38B381954F72A516C2992AB4AE55E526A339099A7987D3096D86A20C0C13B9B1
-24F30A9B85978E703692E1F9B073F8AFC96ECA67E468372610E890CE34E9D471
-9D65EE3FF19481FB87AE35BD326C4AC88603AF098F9D58953261B911FE2B16E8
-9999C38D1A78EC6F031309982FEC0DD2A5015B74463617AE3CEC19D1BF77CC6A
-EDB30A710468005EABEDD2D9B05FE4BF4C63515C40B78BC206592CCC455ACED9
-07E50599C932CECC81FB18AA65055072B0B6184D2FFCD31E65471540C120EA7E
-4FB934BD4B0663E5C6CE2FBE18B83D81C2DBF685D2A95397BE0D0425833678C2
-B141E0FAC208A4C6D0B295756CEA58D69C446923E055DFBF3695CB0959AD2890
-F0A5E6B4CCA57E4795263597F433EF4A5E8E207B874615412182E2FA8CA78656
-5DCC5CC118372E249739582EF5DD9CA6CEFA358DE5F15755ED4F3CF44569758E
-CBE0F7F6897804EE5C465322C84A6D0EA33E1BD133481530C210560D5B2524A2
-8BCD4A3BDC0EB134A63E4F7DD2D4DA96FDB44A99029FDDD9B991C835504DD0DA
-E64B5598613B8BBA88FACD7E16D912C3366AEE9726E7B2619DDFA1D5275D109C
-B69E3FC92E49D489A37634FDB365A2B33798F20EC997F963A10C05B73E0FE97F
-95A81BA363FEFB5D3EDF09588079DF48984FC16BFFF3DAA0ED550A1CBE7ADB5F
-51C7F0D7D04A2AEDB9EED342EDBF7EED1C58002E50E89CE742A3DEEB08C24EA6
-BC9A66D498BD9036A5E96F5E9E0950143126346F822F77C32D32917CA751F5BF
-DE4741BB7FDEF9FB7199D860CDC6903E007DF20B1A9D673AA5EB8AADB123DE72
-402B2276FB5E59151FF71D38F38BD9D9C696F2170E82C9A2C310FA942EC46003
-4415330CEE5C5F8A8D87443B93369BB9D4FF5075628642BBDB065F8B6853E457
-088DFD37CC1CFF3A9501109F59C272086DB6D3007246790384269A72F9EEA6DE
-B3157108CAD26FC506E205
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY8
-%!PS-AdobeFont-1.1: CMSY8 1.0
-%%CreationDate: 1991 Aug 15 07:22:10
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /minus put
-dup 36 /arrowboth put
-dup 112 /radical put
-readonly def
-/FontBBox{-30 -955 1185 779}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
-5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
-80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
-1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
-DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
-9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
-CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
-F83C7D393392BCBC227771CDCB976E933025375FFCDD9E2FD073678A57A333F9
-6BDA68191ED103DB904FC6A75017A9939B1F14A711BC0B140F6C4E6C217EEADC
-2B649171318049FC272C351B1417B517204D5DBE34FA6D6B93E1E6086F880CF6
-401E7F67B5A91AD4822EF4FFFBB780FA7726A979DBF3D8090BA7A152BF6147C3
-305E881CE02C72CCEEDE981A648CB2B6A43EAA4607653DD10347588C35177BAA
-40C11CA85C53FE8A2D9375F34AFED36C4CE87C246DE80DDD7DA3825A922404DC
-1E575B067D1BA35BD5E3B9CC3810A43FCC37AD3497AF461F306035B1E3BAC88C
-F1B835F32A18D26048B85DDDE63DF7AE7FD39538FA2CA3E301F0C4D5BF57E1A3
-798BCAFE4668EB7C828011C278CEF98E8826E2A0D51E001715851E9AB50BC439
-81D293BA457D8DC8D83EF78B6284B7653DA6CE82079E3B7C3E7513AFA07DD5E3
-6BBD896AD598D86F7A4FE82A0EF4BD144A88653589DA216250327E585CB19851
-FDC2D27B6C0AD9CDAE1EFA9287349EADBC7B9155916A51E298B64BCB8A84F11C
-0EA1DABC548987168D7A50B14986B8B70EAD2C6DA8E8ABDE0E9CDFEE75FEF4F2
-370F8EADDFA09E6BCF506B5808789727DDD32EA8CA892D272D94B6D483676604
-9FB540DB8F589F61A1E0986F99C7002792C14B1D2390B35F89DA1AED6CE0E368
-8F603E964DC18BEC7F53B4180196D329B71F6DFFFDCCCD9131F066A4A0FED1DF
-629F4ABFC0AB88D40FEF72969D23ED640E9A67839BB3E38C450E836294EA4EB9
-14FA52FE9505A78001AA511349393DA53A49995DD8190B63588614CAF3E44F18
-1A5151C721
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMMI8
-%!PS-AdobeFont-1.1: CMMI8 1.100
-%%CreationDate: 1996 Jul 23 07:53:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 18 /theta put
-dup 25 /pi put
-dup 58 /period put
-dup 61 /slash put
-dup 74 /J put
-dup 78 /N put
-dup 83 /S put
-dup 89 /Y put
-dup 110 /n put
-dup 120 /x put
-readonly def
-/FontBBox{-24 -250 1110 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
-4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
-788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
-C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
-617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
-D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
-532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
-5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
-4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
-DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
-B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
-A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
-8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
-D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
-AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
-AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
-A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
-AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
-85B385124F46B6C91C4C417758C58CAD924C258EBDB1D810FB6A2E8009A2BD90
-6AE90F8F5623FC796FEFA4842B0BCA73541656693422E9F53968A449C8AA6F4B
-28D9E6F1BB1E92EA0AAC25AFE600B1B47E83B25A46BEFE8D6515195DDAD39FD6
-3ACC9B9ED65A3035081ED4B9C7803DB8DA2A064087FAB51C58C6763F377519C6
-EA2D4E59D8AB1C400AC1D697165E681589824531EA8CF02C917D94FCB2C9B0A9
-413F91ACCAC50B2A5DEEB9EE04CA335F38F0F01176714ED8F6C52DD1321A5FC5
-662EAD4D80DFE843123CC1008AFD571C97D403139C7C89FC84D055BA2AA99EB3
-80830A65D835FCCA9D4BAF899AFDF9C4244F120B825EB86736C6DE5CCE52BAC7
-9C7309418EA626892AA42AA28497201B8BBE5E1348FD5C423ADE8794A78B6110
-654B7BC9D58D74D81E48D4F2AFD6072915B561022658B3474A6945271379237C
-096C1929398558D6E15656E5093CB366CE4B04D1E0405BD8558913F831349489
-ECD2D874766075CEC39BCCC8F8EDE84F47FFB5D45DA3A114A1C69E3AA6159F22
-861AFA83C0563C74D35D0EA1B1631E1A16D196D871FE7586AB2AC449B3FAFA26
-4A2E199F64277A9A926752F102A86394CE7D471F8597D8C731CE3FED1C940C99
-1C11E3FA564A0EFA0298C7D6F207007D587018C6BEAAEEBEC266D83D5429ACD0
-192436844690DDCD114700A77B85BB032D4E3C6A37BE3307CAC6E19D3B1EDFD8
-21E8338AF48E049D625ECEA7DB51980934AFDD5495CFCC4463F48DC3D4EC3941
-3A266C310A2B4C97CDA51716C3AC9602D717E08AD6151B4D6C9E0D22448E792A
-9A52365436F084C0E507E40052592E267262B22DB79F0D069EF4621BD645D0DD
-08656B8239C2BDB3832C3B0E9A8F4E74FBE12428C57653889FDE7BD1F1510FE4
-75DFE70D7090756616034EDAC8879F6204E4756A30724B334380C692D9DA3EC5
-6A7586FBAC13AC379BD8134EA674185DC83E21DC7B0BF8DE714C54DC7DC6F367
-777A2F3C542E8DAE074EBF3948A06453333032EDC1EE98EF0D32CCE00F6BB461
-188204A8FCDC91D86695EFACC627E56AB32A62AF25BD45C0EF4C03DA1F40A74A
-A5160051645EE711AAE433E764EA14CC5A678D4D97643DCE43E86BDC8BD58491
-800EF47FF8AE61000B90F04607EE27765F8A80151CB04E2C6099ABE447545625
-37A10AE79086A08279B5051BADDEF142F8DF36A28BCB26F8C9FEED905D759178
-8BB5B7D5B393733416E81A5634A15CB75BB900FBAEADE2E71BB3DFF17CE678C5
-F08094E27D95CCFF0554206F19E96B5BAC3386FD434DB4B566551CC67B7C35EB
-1A68B3A4682F1F0ABD38CBB419FF446496533B36C4C9E0B47F205D8963A62A14
-CAAB539A2D8AFCCAB3DE0DF3974BF17C4D7BDAE760FF423806E20B43FFC6ACBC
-921A9FB6D7514CD24F8ACB789624EA1CE5EBECE287E4733CFDEAF126D0C43338
-64B00024C360A8A80EE1BE9AE26E251F305BCADA3E644494FB3D93428CDF4ED1
-92DA368E55B83A3BB6314AE2430B1151B3CC93DBA2E56926DE43060252C5322E
-98BB26D0298E7E3A762EC1B2C848E0A1B6D1F23A552607E58DD6F0B35F448EDC
-D814DBE2C6BFE3D76AB1E8E7F2486040EDDD3CDB223293B69D651C0850166405
-08DD030940B6D3573BD58DA53BBE62AA9DCF0CC02769B50DB360C42FD22AB3C1
-9EBC60CFC6511262974528935588E0C9BBDC1887DF19321E245678C69775B84E
-04BFD554EB01A1E0D943E788D71694613407805EBBF461C23519F52F2E0E12EA
-6BCC0C3FD1B596C44E4F314D036CA4DFE2679EA7D403409067521F57C30FE432
-D85AF3435492564AE6404C96CC43288E5882C3993F1440072ECD02827CAB5F4F
-5B2B6CDF6F59F76A1DDE381EF7643A201C8A70AC866CCB0ABEFC712B4F27D2ED
-F91CF0041A43FF66B96058EBDCD2B132969F6E6ED06683AC2DC793998843628D
-4223F072D482AD046CBCCC1809785A8FA42A607C1B2EA7922D5DFF5CD99D4075
-0D6A5D5F48E98B52D14E913DA5728233EEC3214E5EF5C8FEFBC54108D60D36D1
-BDC0BF4A9CC693CD88357651F0ECEC3BB872DE0DF4A4BC8DCE360903CA179374
-E2ED3ADABA005FAB69E77118954182C6C8F1BEB74DB879A340018EB81D42319B
-1FD96A93D72CB6EFE7161921721DB5486E9ED3434C714411BD328D28CEFE97A6
-AB6D2843F3FD4C74567B91117C7FA143265F6167846AF7DB3E3A321695AABB7D
-65F5453C851AA8E6BF253AE40128C21CDE7955C3F486807035802D742E7F3AFC
-40E9C6A6B243188189802556A1564551F353D23CB0FB5E4C405BB36178212DC7
-6DBA01BC259DA1B48F7EBB08399BEC05A8AC4938808A2BA6954B7F5C5B366532
-678B2273DCCE53166AC0CA031C312ABC9099C3173242283755119231D25A185F
-056278917528CB8B6303D5CF041D0E7E904166712736E9E254AABD4F3271F32C
-E7F93703FD6B111E42968AC798FFE7B6B389FBCEAF9E051419AD277E35A327FD
-8EB9C53887300F45F6D23A30032BEFFAFF9DB8D06951E3E133C7F6B00D0D31DB
-4C1D286FFEC2CBBD6243D601EB69DD4234EE17592BB904869922E7D8F520F3E9
-C8099EF049695B59CEF2D6075406562CCB62C62A59B194C43CDBE85B06DD5E60
-05AC2F1D6D88A4AF20008FD5CF1B945832F1AB69F1E3E13859FAE25DF2A145E5
-13F8787A1C9020CD1AE992B50157C9D53D088EFE6D80C73B76B46698700980BA
-0A7D9BEEA209F19B8456B9C8018B4C89CDE830876B427AD72CD03E46EEE8CE90
-0D391A210DF379E9E9C308DE7247F178C4C4E0DE1F5008ED084B88C0615A972C
-045D560F7151CC4E0E5ABA7EF66935716EDF47CC53B8351ACC5B849FCD2A266B
-3F2CE9A44D8D81937E3D3D1395E7B91792DE
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 44 /comma put
-dup 97 /a put
-dup 98 /b put
-dup 101 /e put
-dup 107 /k put
-dup 108 /l put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
-BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
-09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
-3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4BBA0EC700D5662AAD9EB38047C6C7C63EB3FA153A65FFC947D1DAFA83
-BFA135660F82D631A4E919E5A959BE09BAADC19CA3FBCC7A84ED9BCD27172C4B
-29A7D3BE46C7221AA0131972D052343CCA651DB77EF13044FEEA9FC934DBE128
-7EB00CB51AE0E4441228A53E50A5C7A8C98C01628CBDEABC4A973E0A21408D03
-5F0E66B97FD2BA0E2107372D2102CD08F341916EED50DF42135BEAF2DD2226DE
-0CC7936C708E215AF8A1354E994063247A4D5040F40C7AC301F1F89D07A5E9D2
-DDF56B83593F22CE3FF6EB65A22F0F3A11F47BC093A27A637F3F83986236599C
-A161E3BB0636EEAEB4A002E16363E156951690BF3E6A00116C43DD0493B5AD6F
-A569D3B63341BC24614267B3454B5CC5297D9EC9F969CF54456F661B0ECC50DD
-43D0BB30986ADAC6629DCA948F389CA9114C8333C13F28B7AA785A9E1DF41749
-B69E2FF05855CDC40B1AC4498E7DE23147B26A1BED166BA7F1101E3B5AD2ACFD
-83877B963D0DB80EFFDC278C02E52E4BC214A7A549BC20865ED95AA8BF888B15
-764AAD0FC8C8F1002072B433EF46E51831FFAE0152802ABA6E86CBDEAE55BA50
-F48728D5D95D315F5A88246B19C1A2846A55CF2C5A247766DA80DF7939B21864
-70F221553896F057CE390E77AB3854EFFBBAB778D74C82E3C61C63A4BA1A17EC
-33908FDFB3F91A6F620A68089C0CE4217EDE3BD3CF4C4E1720AC839AB92FAFAE
-43C49886A2B1D90A77138CB6E394EEB943F00A92349718AE1987FA6E3EB3AA89
-0EA2E0A51096FC482DA0C68D6EB78022E301CBE1B5C7A4E78EC3C153CC77FA9C
-155BF03AF69C99132211A89CBF78448161E7D567D57721D5FCC8C002206A218B
-35F1EC15663C21716A078C33881A7EB30030768E6E4DD9B2CDD1B119A73C0255
-D7D2D749C3DE95CDE540641584C891EB9630DF28BB782B8F964D03F65F657309
-E0DC9434B96F1D188ED82434CFB10172F660F5EF1EA0CB3D49649B0C6800313A
-EF193D735F50FC19D21D295C2CCEFABD95F137FB36BD67EBBFC1AF534856A6C3
-44E719CB5250F9EF35C6523DF0C1DCAFB39BADF9B3142C0D09191FCC346863F8
-6725440E6AEBBDD52B363FEABCB8BC15B7E581E80EDC64DB594B63903EFCBA88
-5DD997BB54B3FEF1235E9C7C8D53B0AC9A9C417B42F0932843484BE6074AAE51
-714378B5FFF41C8D4714AA25F1933695E417B078E4EC77F17E6530BC54C62FE3
-649380BA2EEE764C061FFD4AF82946FFAAD342851F29F2207E94CB59D2B1EF1F
-F0E3FF4D8E64A0A408277D33DF9FED4B6DC62FA631259A4B0F13E856E0AB64E1
-C58CB91345F358EFF0D0217D2B71BC3173FFD00E092236401C0A10534382BCF5
-528ACD904D866A22DE5E3C5FD7A3139F9C8606FFA98CB6E89F0CCFE2A127E4F7
-8F1FFB03B1FEB89B0EE50F632888F0FB192A4100D8B2F395058DAA9CC99ABA29
-7F7600C0E7FADA0ADEE9ED8A74EDE2F4D4B0606589D664DE3FC8F3EAAB6EE833
-D2834AE87F49A5BA18312131188A52FF8AA2F985948B2C3F36DD2F7ABFC950C0
-501B8E73F4301A893410466569A5588C0E0FE801092E05B8D173421C4ADA7312
-E11BEA346D7C9A5E00C1C259D531C1AD3C7260B64F6543B5514E7F058DC3F160
-F64C4FB4B7AE8FC9CCA3BD8DE1E3150E76FBCC08729731C69FAF9BCF7777BB10
-903F51FA8B5FD0545D4A5BA7A6A93578290B1CE0C030BEF2A1985BE2393CB9B8
-655F29C05FC89DBEA20E29D6AE6DBA0170F64980B1CDA16E3E10E3491D9032CF
-3B8AFA5E7C01264FF3F32FF00AE1EC1F92A66C5473C4767F3CA06BB75EE9161F
-7834ECD40E65E94E8DC6D37F01CD3BF3D57652B74BB5ADC42B1EDF6BE77485EF
-091A8D21929EE1B54B009DBB07444C149C25DE1CDEB6293033174618E3C4CD80
-3A70BBCC12972C94B9E127D7C89C9BB8A972C653609C5C1446BB3593CFDA4B2B
-F0AA89FE5DFB0E11247433EFAAAB5B7303CD567AADBDD4C9157409E25E36EB0E
-0F2088E6C15FD2AB71BB3E809F30800B57B4F713E107B552DDBF215DA99B7997
-58E4ADEF7CF01B30CE0A9EE2A0BA5764DF5DB7597755C3B7F4C5AC6B965A6E2F
-7923B5F2A032051784275158C82D7902866ECDA880FC2E3F6E481E3AFD194118
-633356A19C888C5F6357AA20B270354E5BA31BCF5EA568E099153DB868652D0E
-47811C6DEEC8AF046C0111BFFFC4994A078A939E5053D3AC843ADC3023FA2A55
-1350FFF63FE52A254F1683FBD74930CA27E9BA39D77C54149375A49914DC93C1
-FBE695C5E7B804F2D4EDEB13505830E2F5202AA480A4E06A87882E592B7F2A79
-0BBE99E261AD0DEA9655429956F119DCD49C4F704BC72FAB08D701919E40F5A6
-AC1559A0A2C6D0FB2B286CE765EB1985F935FAB9CF149E226460E2D60FBB8FE8
-1666FEC118634AD4FDC84A24C6985E3F3E95C6C46B14FBE346420289B45889F7
-54903FDB3960FB61C192096D69FC1DA995F7536F2C0FE71A9236D5A33018EBBB
-7035AC65BA94DA1E6A3B0E5676613BBB6D0D8297A2755E4B247D4165E9134776
-92480F4D6168219FA1EF23770CA695348BD7B398943ECBA0142FA8111F5E827B
-0A91493B4E86FBAD483B2569C3163CEAE6ECCECB0EFE95E0CA539E46CC3BA1BE
-28632916408D8C0A7CCAB17A693239DC6C3DAA72F40F15A4A68B9CE01CB6B12F
-CBA62B4CCD3BE7A72BBD07748261E2B9243B20FF4811BFC2345DF34AFE6C05BF
-3BF0FDFA22A5069D2C962F01D5ACD9B5B6F7CE9F8EB1E6B7E84D184388A4F416
-4261304509B4264DCBD75A169FE2750637304294525FFDE2F5D714841318FE52
-C6B1FD93BCE7D330945DBB6CE6C4F5929C5A363105F02F32F8F80D2DDEE4A91C
-C6F97AD7F6AB16AB3D8B881AEDA72DDD5C411D4BB943BA4CBFE5B5F48E4A24F8
-DB57CDB38313F9E320B71A64E2D72CAA85CC9ADB26C6F17ECF48B0C42A24D142
-4C09BE91F0280C92C3025C5406A9B6E222563CB0663409600259A6DE9403FADB
-C7D1EE3D62237ABC6B58F9DAC758B16D45B47C5FEB2E59A2E1B4720F02559206
-C18D4CB2E1A4B24BAFC05D9B0884B00C43F6EA44D4B159C0BA1512CE4756A11F
-0FD43FE149EB71C876242AADDC62D95F4789FCE5EA35D7388FF5D90E262DA32A
-A15C6A3C793359E0DD5ADDC38498C65AC9E4B48B79064F9AB492CA3A3D1F87CA
-1A41832D893283C732C26F2115953532EFEF71CE7BDB2E2DBA05FC85F74367F3
-2F404EC693A7CE333A052023676171ABD94203BE23F119473BE75CBDF841F955
-8837C65363AC9EBBAC7B773C7F46C0C8CFBD63BD1C5E08E2CD0615B0A02C159E
-14676DD713B6F931C5DA955790AC480D415292B1F424C0D35D9366954AC8EC38
-CC37A1919323B349A0C9D2A52DD4768CE83D1177347B86CA50E8FD7220332BDE
-31E40563A5BBDD26420824D821F433A552AD130E5908A57877D32FC3A0705133
-F40D5249F3916F43C7788EF01063C9A836938682FD7BDC4EF8FD6F5D455F6367
-637B30DC5CEA969A469B9FC3843177B59BBB08DDC19408DCC986CFC6AFA0713C
-5444114E7C74A9B621ACD6370E90B175FE267D60ACD19E437E7377128DD97765
-18036E7D5613AB173C6E8D102E034296B7F9F82DC4BEF5B2EF01C17D0A9DA369
-8B328A70A57838D8E02486DC19E857466E76DEAED1E6962D20E8B3F6B9E047E8
-F4C9207B0FEE5E03655877451C889B17A12F661FD7E0BA918A64333643E3F21D
-48177082BC3E7ED7274D7C05E42D98BC6E2B562E6045006513DB5E5918A24943
-1C2D6E9FAF5F872B5A4C88EFC84434B9BB836B738AE5A6451CCC50EA17904830
-10684C844600D2E2FC0FBF9D92DA67BE4F82CF1D77C31F420154489A4BBDB3DF
-002A23D9B2F1DE637D33A2D833AF7921EF12FBD2B7401698040A5D9F122AD022
-FB8112617F7A815CDD30AA76275A02FE6B3B1AC6A433F926D8A13D14319DAC0A
-7DA91357BB3C8FEBB2497D443C2CEAB8EC6D9EABDA685868B4C76611137D
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E10A31C7011C0FFA
-99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904
-A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB
-11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5
-50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB600BF00E09
-8A98D1D031C430FAFDED5CFE3944C4818C6A0C98FF909FC1FA6F3E7E282BFA41
-4681DB8E2D5D12A2B653E32B01A8A9C9955AE525F963EAF4B07A6D1D08E880AC
-3D77B15077B8882DAB21B262E2EC978310BC07DB953F8C65C9D5D01F35FB5A9C
-B8C57B07209A07E1C0C1B5F1324B128B60D43C223F73DC12DE901CA5AAA63BF1
-2D47B7B0B9D35F25A459484BC917AD0D87779E379F2E5E5677F463D9D4E33B38
-99DF4ED7F1C5B33E0C23064233288FF324E07452C5DD4C46365512B412E6CF46
-DCCCB4EF51A65A8E2AC9A5BC5384F739AB8D4995143C9BD3599696884AF450A9
-0B3A707395DAD474797780AD0A87C8317DDC98871259B09B0038E5CA31E6EB6E
-8FAFD3D294971700EE6CF2D4CABAA8AE2C0965FD3E864037DBE485129CA30BCA
-3DEA01CCF4AC088FC977A4668029EDAC0CFBC69C930546E7B7EA31296D7F8B31
-0DB809DE11C0150DC81247B6259C110EF06F9B3ABC4641940EDF4CE46494AC13
-72C2933FD2B3288BD37E4055F58B0E83FF9BC369A112E9FEA4CDA525E3B92B3E
-932E64E549388DEA2C0B1F29B356A0E216B37B8742916B0AA46AFE2147532AAC
-A54DB16333B9B4B66665314F8028D1DAAA6BF0AA511DDA067041E465100A7824
-D778792F109404C1A5EFE3481C9E20007664E5664A3FFF70BE402C3BC84628F1
-2703294F2514048F2B8CA0BD9EFF679B8EBBC8E49A6909FDB6D9439E5852F7AE
-296746725B1840172ECB51B72B1F2F982740F7EE67F40D96BE2B8C310F98A980
-1116EA8A4D57850E5F87DA60D054A24BBA2831838C211B008BBF8E3683B8D407
-9A3AADB4AD7D0312D560FF2DEDDA60D0A353D797BC831E4A76A234F9AAA123D8
-1BDD68A4EFDAE4338358A616D29309A416B4962EB01F6DECB59E84A5852ACDDE
-BEFF98EAC8D864A4B457A6864A7C7ADD3EFD7B2EDB984A3D14BA84390B06B83C
-550FDEC4A8A1F60B8F47BF810BD636BA945DDA0C1ABEB31C80CC71DEA1DF420B
-D41E4D04512EA018C53422F1722EFBC78123B383C9BBACA7F62C5477BB8579B4
-471922BB21A881AB30840F1A076A3B14E7EFB5A0D04610F1D248B8D6977C7C24
-5C1307D468792CC180A2DDC3AEAAEBD1682951167D9B010A3F31F74A54114C90
-6B7E87AD0D74F6E64C225E4F6C93277084CA01C09DD7B7FA91F5D7FDF9C78C34
-9F40F5CA84E8341093AFF161914663BAD849119F4D56B5C880FBC709A99F89CC
-460183DFA77E9A8817F0488874D68F1E64F690865A6ED2FA92D4B0E08C51F5E7
-95767B6B3C433DF63FC5F8E77057C2B8194BF161C3F8104FD0FA8C4033914C21
-895DAB5D43BE63E461672613B9333FA125D04205FB9EF2708D83DF0D49483E24
-143531AE2C99F7F96F95AAE8E292E1879EBCC408CC102A32CEC3FCE958691227
-5446870CEDF38ECA235F19B62F7D83116DAE464E77EA2EF5F321EEA6E9C9B685
-27845D4BC456DC77767EE49F915496C84A7BDACF424378B835FE20918A443C77
-ECCC030A0FAE50C237C959B721A9D0C7D24370C44FF7A9D94A34B71A85DD2337
-992285241D3B8629FA7242D16BAD511D2B9272C5A7443602F27550B1B2A70AA6
-F4CEBD85DF064737C1E2AA5C36EB632634180A25A1956F3BC63821AD713C82DB
-0697058312975EA659597F32EBA5F46051ED3F988E0365A9DAA35B19501AEE38
-49272F73424FB5F047CD5162CB3732881B19F199893A316EEAF78FB4BE5744AA
-F4C5252E6CD84E9044CDD794B19EE1949B9885E6E9AC8E6674706D7379AADBA0
-FA9CD1AC2B65EB46C7CF6172EB2DD1D69C0FC65C713E294C498D61745264DD06
-F7318C48BE634F2BA385D7B56787D19F16DF126F063FCF3DC69A9FEF888BF976
-7B589EC6F9B39DE8C56BACCDCCD1A1D52ED3341E36E8F2668DB8FECD31F10D9A
-4B4F8335C6FA327925B03E6E6A71CA9FB81033F4912C558BDEB459EC89BE9C2C
-A6B2DB96D88312A694B98E88C9D3629B4ECFD634FF132A87681966B8F06B7BEF
-947B6F2541ABFF793E1B91A0B64FA58CACA849FB88D7C85D77BB822196DC53A3
-8199F860BAA1480557B90C8CBD5DD67D6A30DD39C23F452AAEB7E934D807F385
-0DE44B15EBE4ABEB6745016367A91FC3E0E050A6FF5683651E8631E6660E2E35
-EB7C767FB34623A42C8758DF9375D50C58FD4805036C660714EFF21C38C255CC
-27BB2014C8CAB6E2746416B8A78A0368E142E85E2A49428CC0D8A2B95500A80F
-BA092BFCA8BDBC2AD2A8B64E83029B4D536FE9F6770D1C543D86E12CABB49C6D
-58AFABB1B1E02C92C22090A517B09461BF7E064D1BB07CA52D828A07D73CE346
-7FAB77AE464CDF4A0341CBB8D46EF7B1E65878127ACF3C4050E7621CE10AA85D
-12AB962420A310D9FEC97C02FCF0530E07608053F53894FCF37B15EBCA00F588
-1DB1B19CDACDF2C051230002D43FE9E86A601AF49E472804D2C8EAA63444D989
-0D737720BE0B1412FD1BEDDFF0A1EA21712744D3A91D5D12284243CDEE4D7A7C
-9040DF70FB0BA852292B0FEC83C7DB399F03055A40A0DB35F3525DC5DD2038AD
-8F7D1E3AB50276F41ABF8658968E341C986C00217665F2F6638EBDD4D3224A98
-B8AD49B18F50E8BAB7CFB39C19929169D0071E6DD6BC4F9532CE147E0A9B1D15
-CF2A5D027E3F15976D078DFB4576ADC497B9FD7D4D0861E2D2167BEABDE29944
-8E4864EDBEFFA12C960B05CB8423A21DBE591021518AD674961A5C3B659EDE64
-5132F94690588555722FA36DC1C87F1A7CE36C2C0C92D9F94380E52155819B12
-9A82F6850B3D1DF5857DDF04FBAA8E7F3C78A03EBC190227342602B767AB570E
-7425C3789CE346AD0D05C532BD2DC3B58CA11FBD68D4759FC6D34200808183F8
-1250A3A035D828CBFF49E1B83D96096C450494828DB68B582F8B0D2D0B866F9D
-B0C7C827FA684691D2105F75FE06AC30C5F3B514FD56449B3CDD053F8B354A7B
-95EEEAF2588A8A9474C571F0D0BD12EA502AEC46EE43B03B327139C14127C2AC
-0AC3CB19CE690CC5E935AE785CE4EE134E297F7F04E3FDAABC41B4B35490A9B3
-8CE4CC83F3F72CA97AC623DFEC3D45C3031A37ACD003C8CD57ACD625ACF70EE3
-EDCEFD2B9730D8123F977115348D9D3E46349BADCF7E75D8DDC0BAF86DF73FE0
-07B04EFC1987C9D8D241EA07B44EFB383B2AFC91F1A20138E07FFD12692456B9
-EEEC05A43D237B38F4716CD7137996FCCC48E63986AD96BD427368D86862CACE
-B6F137813C06A354BB62EBBEF37CE46BD396CA1AEF09993743397644B38622F8
-6D5DB5BDD76BED3B419AE6C9B677EF944A20D5522F2041A9EEB75E99858B58CE
-B427A31D429A0B0CFE5F73866E26104D0B2BEE9DFFFEF7C26587D6A0D5B5CC08
-30C8774F3466598DEF96066C0FA9B0A230A0532C4232DC8A9B7B7247B9662D0E
-C5A6DC971D2AD47C2773B5FFE49EEE396CFB1DA57A3320C546B4960D5CD9F7ED
-75F4D17C9473B367642804405DD1FAD0659615C507924B78FAE60BA5A7B99EEC
-0F9D087654A714004ACD50B6E44E10E37C9E385991EBAF31948C37227A0FEB58
-E20C0BF7FD84602BDB266E2B803BE95634060D1F848549A0F6F2FD15159866B6
-A63DEEA883C1BC6D24B86AC3E9BEC1EB493E572D1BA699745C04E59602531EFF
-65D93D9038952D9B074854AAA95A2ECDEA26F553D4C5F130678E0DBD5464116D
-65D0EDF33F7EB44BEC552779AEF1AD05C63DD637D67B80F2EBD640FA9A426A1A
-8686E46DA2ACBFA631C61FD0C2733E48A54E1D9A21A0ED613E984F7C5A30A251
-499E7E8C32B32B87FC49293339F3C8C17C13D8E2D4B801745478E40FB6072CD5
-1C9A87971AD35EECFD005676557EBF98636E9FF76B20142E0C313569ECE880AD
-39F3DE30EA682C0F9154BB625C44CDF49BB1E1E5BB034A99C66D69C6E796BA79
-199EAFCE410381F8C399D25A4D58803B471BEBAB81E5824D93065D08E8C27767
-A58DE48DA943E75C569E251AA5248955C1397F056E87D29EAEA9654CBFA76043
-354D09ECF440C1DE70FF4CE5DF3B512D663FFCD3D134BE0D40A280BBD85F12AD
-135540F81A0903138502DA6F3D53B180DCB122CD380DE8ECB8A035AAD2411478
-4DCF4C526A239612515CABFC6A9477A40ED55D281DA0B173EC427282F0D9877F
-645A669B516F5D11C8583F6182F8FEBDFAD65A9285436E28068A5A93E2679959
-256A43308C0BBA7C74F4251D944D3398F4DDB4A55CBDD9E176B45DF737AEB87A
-D1F04A1D5195395C5E94F0A99040C7199905DCA268F94C4A004F124F091F1D33
-5AA93BA7817282FF102D62D0666BE3C1A40089E63F95229F00A6541141C28756
-2CD1BB8FFD552440E711CC3363873DA613E8EEA046A18B0E01D947532C9E6C1D
-00A57FEE07A076A68BD8E09D709DC91E7FF7E3413164F835E85F867C1CE82374
-2D8BAE743F5B8FAF6F8DDFEA3878DAB6D50DC90D7F473A060F1B80064BF63C9E
-2904B327B6EB57ADE9DDD5C86934C25AC524FD4AF1B0134990EF4E096A1C812B
-50BC766C929C8C7ABAC92278E3CD14BDF3EC5D34F2E0386396B2BF684F73C645
-C8F6F497E291E757B62958011E78D0569722956F963B2F289E1C2B17B193295A
-6218FE1FA85E4D190E6668DF519E3712EA8792A267B112EBD50D89E1EB4DBB8B
-45665552094FEE858C8E227C58CA48615D15A01CD4D84642039D0C0D2BAF0A25
-3E118EB94DA5AB597D1CA6A3B333324F115CBD46BDCD206FDD9DB994F14BA400
-7581089BDA4C3B399E56C693CA35766F45294B228E63ECB4882543E7537416A2
-CF63738DED2D903B0EF0694E025200690266C4D31CC8D869E3B14A58AB816315
-BECBAFEF66ECDB6AD935801AC5B31295E406C9FD4A369E484648C4F6D89422CE
-5BEC41D5398E451FEAB440A62E9D7B5AA459246404D0F84D97E194955D790B2D
-11CF9B6E4146022DE325CFECAD8F025470F0B50D1F2F02B8A61D478E5E34F9F3
-997B60EFD42E92C09FFEB1D4BDFBD782034A76CFD40D1E4F7226E1C0B21C487F
-1347E1D5F6F2981CA2285E64A583C0CFC0012F53B1A88CA5E93F24CBF22098AB
-CA4FCD59B69375795B9303256985C26F8BC52A3BC9B1D34865B43E42E18449DF
-F7B8E9E42FFF3ACFC9CD4E98AD9334B13678624398BE7FDE89F637864B1BEDB5
-A25C2FB2E550E1DB0DD2060643C6D2311BB54C5E237D7F5238095EB214EF4D10
-2A975E98AC47ECC0032AFDA6FBD4772C8C3AEE43BDCA443712A419C1B60EAB0D
-202A73AEB376EF6A03BC0B2C62FA0A27DD54126496175D7DFF4DBE1C97041A41
-1AA935A7FC5B654CFB8CE46E445B007481DA915BBC5114461D2B61E872DB31E3
-7B82DFC72AC041392999B141C212B7B6C3AF7EA0C63F63D1D73CCFB4788C2535
-76D0355E5D9DB5A362EA73650CEC02AF15B26D9B55DA72AAA3BC14C567F6A092
-AE9105929040413FD56C51106312F20511E43AA188CE42D2083243EE686D380B
-5B8BB6639B08724D4C5C089265AED5D09F1B19620D8D692352FCBC288B9D90E7
-70CAC14D57F3A86B5EAA415A8011AAE2281B32AB064D6511466AAA88C661270B
-CCF902CC0591EF6D625EB7736643CF327BD40A3F94343C0D90E73A887A72C026
-3BE758C3DFE9060D82E315F57C0CBA36CE8777E29A9005E6F9D6568FF09B359B
-334878313F551811411A134C58748D712333871B820BBE28F65F95FB6FE2F522
-D6EE608CFA3299EC83444FE205CFAB4CF3826407DE7B6443D3DE3C677FFD3CCB
-1F852CCF3AB98B7D857DA9726889EC08E8A698B48E670CB52F6273E8016DB81A
-E5F08E06F91CFC683DC221020D7F91FE06E6549888B404C475B46AC607A02A2A
-A21965E1C10017C052E8E9B4EB1BF693938768153A4476038D772260842006D3
-8BBF4D90C92D2E3D34E0C097C5FC7EFD8BF1BF7200BA1E61EFB32996F6C7BD31
-3B26C00DFB2D7E084C4CFC5BB2E2E5B9A173D181F34B48ABB5666D021AA0F346
-3D17D3BF3C5FC4C3F273919B9FD9902921C1F10D4A0AEAB410691C37AC780B73
-9031E7B747E6827B839CC42F1CBBA7710BDE1CE7C58736100E5F81F902ACFB99
-2C80649E9BCAFB2D4F93BFC7D6BD340EB4976F3767B1AB2B1384051BBB4DBEFF
-9426A85432A98D1FF9314164C3C5EA91A66AE507B7C6706CF31D4851ADBC5A97
-3ED216318129E53DD1FB34D5FEC8E03208B2A8A74DC7D3738D95AAD5116ABB95
-A0DE4878F723B71F21A42AD1310AB7E73BA529505D31BF65BF52299C8F9CECCF
-EAB79456CD60E72BACC61EF576FFBD349D523B08CCE39502E55D09F4448D360E
-9EFFBFCFC308AE4F50C633948D337D0EE8B2EC723477F5F333A5F1B2B47E268B
-83078337A6FCB8C8AFEB86E175672E1752F20099FD268E69E8507E9CD4D8B50D
-19D7C09B68B763C33009E276E22268BF4F612A3E961079DCB23EC75111C8F34C
-6C9B1EA74E85EEF0C921203217D746627CC972C681FD5BD9B0B7DD6B71A0B6B1
-307E2A291978A3768EF24565E68EABAA4E063D553D81CE21ADBDE02E7BC52970
-78C4863AED3326DFD89C5908D2E01D3193434089B76FA7057B10581E21235F3D
-AC1874A3A67AF9C80D9F111A4E212FBC7990D0DEE0EFB6C7C1D649AC9DBB23C4
-44EE2919EEA536868694FCD9FA5958A016237FBBB01FD534133336C7ADC462A2
-213CCC6899541E514DA6BD93436DFE34019AFD5242BA725F04999E2986318531
-D94538CEEFBC53F1A9A075C0810B4E23851BC8D791F55705CF25B4E57398AF88
-6C2F3E50B683B90FE66AA01D68BE763ABB81142E0B13FD5DA264ED7A3BA6E3DC
-4A887433047C3E0F2E649737DB99FF83A79FDA44CE599AB4EB9F71481B5455D8
-DD5E935A552DFDFBA7CEAFEC58534E99248716FDB4CFD686587204B46069784B
-833B08F7C2E68B5DF247401FABBB7A18E58C9569AF9B272B7D0D8BC87FFCEF00
-24FD2004D3161C53F6C36EDAA189B9805EB618534754F715181F22F3D6945868
-D897258530705327B86084A3E506A6B0666FF430E0F932BEE416D201FBE3DD03
-C64FF0F15E7103AF47129A420BD6507B55AECAA1729BE6D8E2A8D460B2475569
-EE0B58D9CE67B4BE5CB5791B47EFD0F7FCA61A1253C61148DE763C94770E663C
-A2F15149D36A8B1EF03AD5F498DBFD4E4CFB0947F39CE550CEAD465984A6ADA7
-1FD56BC7D70D7FCC32F5C6D13BCB24EF5B11B15D7C9D132238067482E3F9F7A2
-39B33E0AA2271C8169C4F1A8F80021AB55566411D2F55525EA55A1FF7945D373
-D0C1ABFF4685432568740398A433634D767F9481B7F830A79B02D84445946A10
-D1B44EDE4ED9D1A134496C757D8F095194E7327889F122977FACC2AC5F568B4F
-9FE8424D907E868C772A6A1D5F735811526FA2036ADBB6452EEFEFA9A94DF7D2
-60825B9CF120D363D36D9BC926A931A8EFE83BEFA4EE242C88A41B408C9B95A5
-33907FE18B2D4ED4F03BB801BD76EF7052ACB70E6A56A83984698849C50563D0
-81DFF77C2198EBAFB347761E90ADFA11D8FD36379DEEDEAE2D983E74D097C737
-1B7339AA50A4A70E50148251579353F9EFA5E51CFCBE817020CE0CBD9CDD41E7
-B5906854B440E6137BA1AA839F4C83AEC86A8BF35BF4D9E1AAD53C3AE9E6A967
-06B5BA6195AC03F462948326F96D79A669210EF2EE09F818AD6313EEE2A994CD
-734ADAFE8FED4236DF30D3B08EDE30B5B9CDA4EABC6CE4A1EC76C5924CD638DC
-04034D6228E7C49EBA6A31AA167BD39BAAA41806BCC11935B57B429FB8B2AB96
-1665C164D42DF953665C2520383CFBAAA2D56FA92B37A7D149048204EDF6457E
-35C8DA34FCF03A539B4C188634224229A774EA95F2C107B647A573B2F76CDE86
-27B24B6BF792B336FC9ECE92AA2C350157195D028D4BD5A6AD83530228632651
-8763948B33EE5DF61E5F7D8AB4DEC1E553E5C812070C966C327B20C364A13F6F
-75044DE24F628CB6165E4A2B2C75F8EC49287AE37F211D849CFED0DEBF711C48
-34268BDA14660DE9DC215BD1F81F9ABEEE100A1FE7CEBE31FD2B98B0704ECFDE
-5D1566AFD2820BA0368C4BFC0F8B4C4B89D7F5CAFA0802271A63E6AA12297144
-6FA40541E073473A4510A0232A9C69E80F0ABFEA6C706C3E590126242A9522AB
-DA20D3ABF26773911CA4271F54C8261BE1FDD9E58FAD5955BF73478EF4D107A8
-BE7892BE9CBD6404F802B409F0A27FEEF3B1AD2AABE69C5ECBFA078EAB675DB1
-D8B0F13B65DD1E75C8D591C5F495082679EDAE033B4453AAA4E806F165491040
-A8B5A83F874A405BE5FD2B286B7B636C5B7573998194583EBB511D1496AEC918
-4D70DFE7D579256D6BB74927EC50687025CEE794C27AE61F56400A341380D377
-963220CE31B171E11F0B44F4181254BD1C2BF26EF58DAA3840BA2BC5F923F51D
-8525B13D7FF0B6578271E6022F73DE284CBAEBE41E05815BAC23D6A0ADEAA00D
-39D7F755E0CFEB3AAE8C284B0A5792A820E6275C1D71AD3D449D3D828B70B3FA
-7517A9E2364EDFC2DE553371ED7959EF95D157EADE560EF2E39C3472A67756CB
-0BDD87D1C6D13ADA99028AB165137E27F9491238700193547595FF3A1DDB5087
-4507CEE626803C9DAE7CB322BF694919864F7760E46AAC60F1A1C890D0DE43D3
-EA15BCF87E2B1FFFE3B7A6E76E5E6DC017261E078E58AC606F4A7E5B56FF237A
-680445392A2675D814605EF7CCA4DAB7F4B448531AB794C5A6E1AC6C0A350CA7
-83EB1AE89BAF52D0FD72767475BA95624EC39BB0F84B93EF9517AE4FBBB33605
-FEFCAB87220DAD1F599F2DAB3E33D7DA472F959DC55A5E102E27027436D02CAD
-2FC00AC8ABF366B98C811A65A1BF2DBAA0BDFDCFAD1F8F0AFA28BC040C21A39E
-C4544283CFEA13854B698C434B2FEA19C12192A09C83775AC2743E19E8328949
-D2016CC40BA044CD836978EB38AB3622B28835AF1A876185C5E86ABAD71043CC
-E9D431A0C80B072D0BF53B734349BBC00C9A5FE253FF72438DE04DB1AF883DCD
-8684560B67497146AE499BDF58E252A35AB9283CFB85F08B7EC4E1BE91A72E88
-265DE98DBA09D6A06F087D9E04AC648837139FEE0130B8083816EE063637583B
-3DD5DB68D5CE15DAFCF03DDC31858042CECC71C799F4379248FE3D225C0EF059
-A8CFF379A51F0427674D377C505527E476B04428A6CC23652FF7613378CBA019
-FD6BE1F80B9D39384E2F2B44BB37D7EFA45EF622D85096DA92509EDE83754D66
-B18FF5855BF530D674736F6A9F74EF77CBAF639592B00656491E4D1FBED8B832
-6F69C4F1A15986728806E4FE6305FF3C3CA56A60FD809F35C028BC404032FEF3
-F0128AF013D2F165E1EACF5FF63C390895B32D8E942EECD1FA1450EF0C5F871D
-03D419A6C8441623CCCA526AA3FF59AAC3AE3718D630DAE0870CD29F68E6C94C
-95E36739B1F51FCCCF1B3FB5D58815234CC3EF95357E9A1446CE31BE154E00BA
-E0172EBC8801B779EEC932B4A4D557DF530DA3422DB1602C459732CA0E53B173
-B87B789D6F0D4D457F8977FF92FC3D063E8E6C141CD5807951C53700E952792D
-712C9714A82AD258165C18D225655882CE3B389B999FFB900BC56FD6E2525245
-97F1EFF91A62540026D590C45DF1A728AA369F9EDC8D2753CFA8A50DB1898CBD
-096ECDF314ED68F361EA7FA6AB7AF0F45EF48322BED07475CD458F713BF819C0
-E7C62632FFF0B1E90D354D26C281FAA1FD7B959535E1959DFAB3EE01B2B53934
-F0BE89C82A79A467234D91754E8F8C94F697639EA81158B71CF6944FDAA9B66B
-2A554610671D36E04EAC1B01AE52E2DA13D2D416102E1DB17BE04A95CC202454
-A11FBA277D2F276FF3E62A5353105FCBB867B527A54E88A4D2D84C8DF260346E
-48260C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX8
-%!PS-AdobeFont-1.1: CMBX8 1.0
-%%CreationDate: 1991 Aug 20 16:36:07
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /colon put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 108 /l put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 121 /y put
-readonly def
-/FontBBox{-59 -250 1235 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
-7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
-EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
-7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
-AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
-E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
-4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
-5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
-611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
-D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
-EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
-35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
-ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
-7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
-C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E427782B91F1098562
-3E22288F48ADE6EFA58CAEBE7C070A920C3A85F4327940DBD99179C26E3ABF17
-64E9CC6A45F17F19F3EC1C53B17485B813CB01915D55CA2034552666D5E44A96
-A0FAE064F599AEF095CA1816F7066EF0AFB220FE1DF11FAFD503505C5E6793A2
-6475E95FB467E2F3B5E7C6663A70B15698A1D158E23D3ABE3B6942B24832AC3C
-13F258038DDF209525C4124806A369ADB0423C2FD0F823AE3056F380B7128089
-689AE8C46C3D4D74FD99C37EB4C4D2D7C0D63F6F34FCED5BA90C1CDDB62B8429
-832993C74185E38FF98A802AC0C97186C1EDEB8075BAD4F3D62836B3A8827AEA
-C1FA46B58CC90BF7D7752FEEE2346818C7C654E00BDEC7486CA7C25B6334CD94
-AD99F0A4546036ECAAAF90085898D4E7D13FA31F806A29FC14CD280E4399AFE1
-9A3C1A7E495695B13C1A0C96E571F0C8DA95316705362736FE2A83DE28D72852
-2CA05A4E708DFE92F893EAC70EC1FB38640AAC990262F12165826E01FD44EAEE
-EC437880B1EFE4321F48E7DA2F1391492F09895413C7356FF5EE922F650B3D53
-312118F6D58D16C2C9CE3840037A55A50E672E58E282E523E9FB1E78DE044951
-2850A89DB86E024DEE41827153D2493AB7071B75B4BB7083921817C4B9F7EE9D
-D77C520B9AD4215D58B00D08D3D40083EAF4F167B098B234003E74DA9B46867E
-EBFBE5377603CB4788DB242A1F2A5618431B6BA6FF14370C1C1A5AC474DC1927
-6B6F1253BB65C9E620072C12D47C51A3F407FCAA60F6F80CA5734FE6CB6C3A50
-AAF54FB9536C81B8D2E59129B36DEC708C1647E89FC0B45964E3F8F34FEE564A
-83FB62C9F49E43EB0D32149ECD508A0B3FCE54AB6C7D9AA15DC1F645C5E214D2
-10A3036D397029B245B9259868265744C8C982EFBCB488EA721765789BBC9568
-D83DCA8A404B61C5AED2B17A72F2C5FCB0FEF8E0486DED5AC7F8DA27B671327C
-01F2AA1A20E226AC82921F8A5AB175C3085CE42650FFB0182A294DDF4F1EE096
-643B270128FE530B889D4170157EAEA7D3F7D157BB7884F37BB465436ED0AB09
-7CD8E1A4C9FCF58BE9405D2E5392FD888D5717376734AED84579AFC25810EC78
-B4637BE237140ECC6D283E2F6BD6FC511D1F839FBEBBAE96B1AE317C8CDCD6AD
-F3959D8C674C131CE80D159094853C80FB9E7F97A05FF45F9F385DEE5E0A61C7
-16C2B851E0ABD0C4914796FBB83691F9BF151FEC13F672780D734B5A02B5FC50
-68ECCA1D84FBFF1E2FE74FC8C5351AEF348074C2C82DF91A63173A4B04AC3D32
-3644A1C2CC6D5849BF25FA9978BE012350E8F2C0FADC0C5C189BA5A2F02D3A3F
-BE9A6092811AE2D594B978D01E1064C02B75FEA01ACE72A3DBA32B0E7A63DFA0
-FA40A7FF01232C7583FDEDEDA917FFD3A7E76D5B096496A87E396F1FA663A6BC
-7A3D2A7E1E656C4B0B024B0142C8AA179FACF3051B68E60F944208821A4CD637
-5EFE8F44395D551DD58F19AB97E8AE27B141A64277F9E5C930F176258E7C80A4
-0D2AFF445B8F25CDBE64C9356BB51F34FBE34536B66DF010D267D8E6ADA16565
-2551833226673F98A83931AB587E313C89E4DEE9DF15EE5365287AD72CE9B4C6
-BAA6A250AF7D623C79E1CAC5160FD54F0E32398B6F353255547F26EF63D16B76
-45826EB0AD22FA51365CBF549B7CA21BA882CDE26ACA391B100620BE2FC33664
-4217E4F4E3E79E21AB48CD29E0455A81867AC597AC31D9C7D742415E7958D010
-B79C1734CC55EEA4A61898CE73B12D1392BC2193CCF5E031B48312B8B501B48D
-90B579DB2EABEF0429BE5F2C8D39FAE102A7E6624287AE4398AB6C87D1312399
-570D02EB2CA47CB6328BF89242D25714896067E9ACB9EA4EA1C0DB3A591B91B8
-C60B9E75E0041E050D329F1ADE8F25A57713AA606AB767681D2C1A43C1D95543
-55084225C6B9283E73C375340F6D3EE4D39CC48CB4282C895385F5A085EE8C55
-22BD5985597030E75971ABCAEC2E98A371DBA3AFC7B346FD65D0DC9735522234
-7ECF0731E2043E3478EC28FD086F24B1B6DB4CEF52D280630531FFD6C0D32F05
-DDF2C3E58E42F503F0AF8D853056AFCFE8C67560C5C49B75EE80886A9F23500B
-BF7F0DBE56D2BA60F7E08822E09F2C31DA869FD9EFD14FC260C38BF9F0DBE72C
-1AAEBF352FA7B630B4AB653BD8917A754DD20D8EBD8D0EB0386E3B90B8FBAE97
-18481C4FB6E3CD92BAE0BEC3C1A142D8885D174D797F9D7008FA3D946DA423C1
-E35413CB24810FB10D9C8DA86A63419D309356B1F9332ABEFA1D391A2762FB02
-4AAEE5F322059EA0E67470729475BB14D9535DA3469DC9984E6A651ED1E96253
-6F12692BBCCBA80C8F1716B5A10716147C8EB8CED92E3781A7477B8E50996E2F
-A2079175D22373EF12ACD0467BC95B54C83FEFC3261DDA9FA28C3F4FD834C908
-525B669380BD25814137A282BE4896DFA382937112E8B186588E1565FB3DE1E9
-520F2A577DB45CBFAA27EB46EA7FBF42A99B259FFFAD2E7BA02E17B8AF008FB3
-AC8A517D249EF740A425965925D0D3D7A2F35D06149557BD2934403A84FC537B
-C5BBB942684CB4688884E995F3554329D21A6CC61BE0A533D4F9ABF3141A24EA
-A42344DC877DF69F52515317A875C7F127090CB774A5059F35357CD2E7BC88D7
-35256FFC43574FB0F68D768432A4CB5CB32766735EC1F87BCE383A0B949ED921
-01E85B1DAC588F389F9C400A4DD2B1F41F06BE40E8049D1E5C03AA8B1C86E77F
-4259DEE0F28AC1E7F858C56D356A97E0A6693ED472C9443DDFBD614DF5B026F3
-1F5BE9D44CC124BA3F275D1BC273CBBAC34A88C86C677E34F3AD71D0F9248F72
-5B9D45C193F04304026414E05346AF997489986D6209CA260EAA5E91ACAD29AF
-B7F151E80C2B9C9A6E4F6AAA8133AC9A68E98EA5BC54C5D6BDBEA7667E697273
-D6BD8D62F22416CBCD82F281DC0C203FE40C743BAC58C609EF853C359DD44336
-D82EB05E692342CEC1720ECF544602818F60D9B48DC0FDB67DAF9D28FFEE803D
-C3F6DF1B9ACB301F78A60AA69A39F953EFCD51DA5127C266AE487FB903DCB2F7
-9297F7A8F11B5DF042EB564FF4347D3A8744A2315711EC9BA920DAD25E42B3AF
-8EA0004ADC7B6803649FABA21AABAFDDD565A992BD029EC1FEA7C6C67AD1FBB8
-AAAA28AFB7ACB46F5B32FCF1FE513B3645BF934DEE423DB19EEB1EF9025BBEC8
-1DF53CA63E20EF56458051E420AD40F380C381D52708CAFD35333A696A2BADDD
-B0866AAF1D8C561683CD3141F477C6718786E469A90E1FE82E4C1C771BDAF117
-9E5D77905639B48795B4B332F3645DC5CFFB0501A4C402FF415E0DA9B10C925C
-B2E49C84DD9378A507985461B7D14D0F698E1B278BCB15B1C6121C2AB9ACA19F
-19F8E6460823EEE30DEDCE5B89C143FF5CE8BB29B74C77C089B6F2095A62F883
-3187C66F7FC8860F2EB7E3624389DAFF8F433204AD40E8B47D983269924C792F
-DA9B3D1CA9C95E35E2A1174AB05F6159BF7B6EAFC749C2CD537D32B47022C82C
-BED77D6996DBC5AC36E5DC2BD1295D6C382AFBF33CC8D3B518B8377E4FBF4D06
-D1A21975F2806E3F8CD33B18D59BCC5E59B377210FF6F820104C0A7A4DDACBC2
-06445401BC01527D6B3B1228E3A3046AF7ECBF37CD60D33C89B239A03EC8D88E
-446313950BD4E3145683CAED755E4723B6ADE06E13970AC9521FCB4D939E
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA411F7112F1BFA5475673EEF13CDE
-C27F9A38BCF1E1AD2DA2272860A051ABDB4CE6DA8C70925015917D8E2A8FDFFF
-C85F7EE3330A30C7FE01E31DD51CB0D0057D061E2E70101C54EBFB263ADDD4A3
-05E558A33B1D81EAD9248C849B234FC57982B8781BC2C3120E544ADB15C885D5
-8D6A637AEFC0966B6156BF63859B765336131DAF12B247C5E706468D9340E055
-562148F732ACCFA17F54CB25C25F65169414C567A5BB173A5E256F897E9E60F4
-519D0A2DACCF16116925BA344CF1A2F44A69D3FC661E8E8337D9A9FF13903CFF
-44C2AEE3B696CF8498998226EDFE7EE64E5F560DE92C913B93601E3517158221
-D933D8ECB979DF2CE2A7F9A0BAC723C31DFEF425FF469D4F7C808A5EE7E5190F
-2B3C4DD7CAC5F53F9A65B6A10C0FA1FCD61D3222D99079441866C7CB29127EBD
-C004C39CF91D00ED2D02203A0B8C2B2328748B446F6EFDD032151A13963A9FB4
-7B13CB2430CCDB7150E849E1A91A432FA62E72579FA7A8BFE0287A7AA3530440
-FCDAD17C736CAE845BF5F46263E87E68CE9C9BA908119F84EAF3B31B98161A65
-0401580ACF63B5039F8B75188BE8F1B17D4F4E0C7A0C373B4EBA00D09144D561
-68FF2AFFCBEDBABD99018255669FC57A892E8884709D77B92AE13DB3A35A0698
-83566E712CA94874BF760DCE962D25DD27D82E53DD7B28F9C598CDC8F2F8DC45
-1C50B3E91C2EA48EC32F0DFD84DEF8C62E994B273E55A64CA81919DF1A10029F
-E8D76F502841F0E34AEA0CCB65F11E7B5021CB6AFF56D566DCBEA180553DFED3
-F680DBE34C3C674EF43C7978DC6540CEB956364FB990DF90C79A2451C070A8A3
-93C63C45176EFD2A1B2B532C9814607478132230033CE722915E5A6482716EA8
-8FEF4F2327E72ED575FA144830B2C888B20FE66F0C401C0629B5E85F74A499D7
-839D0CEDC2A06B4EB9058540E3ADB81D30FADE7BDE38BCD07FA59F6E99AAC5D0
-85242407AFAEFEDFDA2403E7561A717FECB2B9EFFBE25E1DD7341E8701BD490B
-ED0F5A519E96FD453C87ECE13D11DF05E5FC71DFCA21E7114285748CEDCD00D3
-EEFD8166804AF07B6E0570ACEEB52F30DD278C08C0B8393A6C5253381D9D95BB
-02E53153AC0D87D7A988DFF25AB31BD83B47B68F0504FE826B48A0E39ADE406A
-02EFE8F92CF3425E33248FD684ED489FA93EFD7AE11103796ABCCE109BFB4EF5
-5CAB7519E73103BAFE1FE4199DC4F66E0AECF658F6B8F7901B0AA259430E0FBD
-7E8AAB44E2371AE97D7966312986DD7CEC25DF5D5BF58178CEB0605B12423DB2
-1C99013A1BD6C9E49887761AFBF7E4523CFD53EB4190DA63471DC1E2CF273DAE
-F469257DE127519817E8E9CFCAD4166C63C0B9EC1B70423A0A90182FEB3E0900
-FBD5722333137E7BB6CB44E366F6CEDC65ED605A35072AA97417295C7690D0A6
-E792EE5324C6504BB2A918E0F759F7F7B3809326C5DE8C2C5B979DAB0771FC2D
-0AE12BE8DF21A9363BD3DDF2AF7B34C00E6DE25B6075DC0C31B6A11289BC5CB7
-0FD569B10C5AD2792B833BECA59E52241E5CA3746BE6C831AA669204508DB5B5
-292F4F3214835E8C7D93D5197D5FB01F28593E0CAFAA5C753BB7EFAC15C446A4
-7FD341B6A06E964BB70C6A392AA48F4CF731E70BC7E3DAC4B346DE17CEDD33B5
-76E329A5FA44CA972B7DF118516104216C52EBD14515070D8D7F69823BC9586B
-597AE48FBD802E3BEAE59A5FB6759E8EA7CE1A6C41A2462A51D79AB94618750B
-E4351A242191B36B6253FAA6A5D68396377D7098020313A416F49FBDE5FF4FBF
-1D9E12FB7E9748EFCD8BCE69D9C61135DC3C44D6B65FA4627EBEC5CDB265CD6A
-62999A0C28809B87C3BA0DCF32BF177A7CEA161C529D96F32D11F59D3091E90B
-B36FCBA4D8B4B818A41DE3A71D3FCDF3B1D1B5E7B4EC0196E45F6B71763DA8FF
-1DB0D8F2D7762EE75585F65D31DA92B62647FA385D98EA2788C3394834447431
-0FD8D8795EA3785E8185AB6E1163AB41A9CB62C1B358E0F5B00193FD2212C9FE
-A3DFDD7F74E2898609E70960EB4A0C906C1AC08D3F07E0832DB8B2F54C981D16
-8F6A4C8DAE5D223513FA77CF3FDFAD2697F7814A82B05D9DB889FF0CB02F8A3C
-AC99963E7D20CF438CDB635AD7CA9EF6B250B95D78F511F25BA7BF811A1D3EFB
-AD863367306526D98C3AE238323CF6D7D8E9B494F252C87B0DCEC701804EFDF9
-F0E4D69ADE10F59D6E18F1F9FD5E512409927A66EB0E805F9D2CEA2AEC4BA735
-BE82684413CAA89F47079BA826A0D3A421AA248409329BEF400020F8A624764E
-5112B667C8B555D7FE8AA50CDF8D37B460682CAE7C6F3E78D41EAB3A6860B633
-CE851799DA97AC4CA444F7C8A75685902E888495DA52642A2994DF33DEC519FE
-7F1A0C18A373B566DAD28A97DC52BA304EB6F31EF7D9658CD2E1B88A74B6690F
-74BA0862715FEE87ABF326949D13D50DED48DDC2580F6D814D50FDC0918A5187
-CD7D889B658F8AB8B8ACDFF400F561A5164F440E77ECF17BED5AA692706D8F23
-3F18A239D37A026797DBEC5B0699CD56208E03F668412CA0911E35C74A77B22B
-161336CEEAB98D54FF7B84530FC4C5D7FFC92CA8F123219B54DA21F1EE249690
-E1D22F6F2B8DDACA974082E2B7BC80B8B7CF72F62998EA11423C825254CFEE6E
-2C5DE532516438FE055568EFB22F3D2C2B4845C5DE2D698629DE386D85244FF6
-14D6E1514F32780A39BC9BBC33B6CBC970858CAA876C24D0A6C090CB73A59B2B
-B1F0C59F0EA241F9C0E1913B3DD58F19F75BDFDC00B42ACE8467B709D6812498
-D3DBCF5AF59765190166EBD0E58F7BFE4D2637F883F46FF3EE1B4CE43C5A7379
-D834E608A6D82A674894EEF9B6714382E189A7F73B719B53561441A409426624
-1AEE8C0A3B8F5962826A2B647FB5ACBEFFF4B14CE8951252C969787BC6550FCE
-8C244305BE131FE4E88C443A883CB2582BDC236E2901EDF5148A2F142941AC8C
-3F4A2E18B7C8FE7DB9FCF453271E5599FEE6EB0DAF49CECAD1811688CA41F02B
-48444191CC9A95F7A36113605104340F6F8C4712D743DB9862C9341CEB2A89A8
-3778A174C6AF3294DA65306F7894DFF28FD25A0794108081F224295FC4AB297E
-A111DE29B44E5572FA73EB0384A50510A06B36217305E00A577CE2B82227775E
-ECCDACD86C4D05BF14E3D0B86D5AD079246C6B4D4EFAD5613712246D1DFEFDEA
-9F7089711917FB693F7A7B396095967B2E02651A6BC7D0A18AFC192CCF0611AC
-E8E000F487D3DAEBE98EF6CDD8D917574DE489317F0A1F86CC51F69EDA8BEA5D
-519ECFE2D002D0E5961FE88314E0BE9156C1F454A5A5AB97208A9F29960A9385
-08F3929951E7AFB74CC28169342AA9D769D6C9AAFC5CC527C3A9DF948A288FE6
-C82A2501397B36C52A8BF68F4A2C4C544F36E694034A6BC1E3C6E6FBC238B6B3
-E32689D6154B35E1EEAC1FAF2137A8E5B8B3DB98601ABDA3C5C98D7F0288C049
-FCE4D99CED91FAD0A51C1CE7BF5B47120CA7909096B90A4AB258F78D4449B203
-E365D9B0AEBDC06C3755144B3F9228C19F2BD435F1505BE8F1C782F02297B070
-B8CAA6C91201BF62BB092208AA04624382B9DC835BACE2F48A00C9482DB79A2F
-DE64CCFF8032624C8BC1A08514FFD04052AA609DE0BF569067885988D9294CDD
-B9C93C42655D898F0AE79532E0AB8B444E0E9EE6DBA74E5257D5567249DD7A9C
-131091C503C059BE2B5ACECD78CE1C30D55E0CB49DC7C107F5E1995D1E1678C0
-9FCAED19B80FCF59A65A149D283F62751D76587253C84F9BECA3FF76CB6DE037
-59AA719FEE66F3E32653B8FBCD3267963EADDC23D36A23D8BC59047BFED5DCF3
-92DF4E0F974669A83A7B4F417D21639C75BA782C793E802487B0FFC7E8765603
-52A41DB5D2DE85A0D5AF2D7B8E5DAC5EB0F2A65572154D5B40C5371C3AA5D4BA
-A65E608E55AC1EE8B1747CC2EF897C10851B98C48460F32C5E3933791CF06C64
-09D700E53B10848859072F8F134900847D447F828DFBF711C11FF7F3717713C5
-2441111F10D915502ED8C568C51D9BD2900A8D837B6BADEF8E179A66FA187FB6
-0A44BFA719EF76344D5269D157D56C90709AA212A0A208E242A035838785C3E1
-62C2E9F163939D1E9ACB536F38DF0F24FE6F259212AD4E2DF305121F27188D36
-89AE849397630931859B6158F7C17735DED51E6F41A96B05D5DE32C4BDA36031
-1CB4DFC8FC98FFC5B8C47F16A5A8205F81966AE7190B88F35B4DC9BCFC8AD5F7
-9754ECC106D1A34A3729D03241FB29291C00B895D3C286CE923530DC89A3A17E
-7941E86E3194230F0438CEC515FBA8C1BC6968C776E69090525ACF065E48379C
-F78FF9EB55D28CCB097F7922940B6C4D9E307D6600C96ED9140E6D0C2C16B5C5
-177312FE45CC1E5F46EC4576B6B743312DB8DDC7595D5087CBFF84B504A6FEC8
-043D259BF6CC188D07D553C996E1C8FBB85DC18C160110C7F94504C4793718B8
-D96DBDB71A9D994BDC00D9060B02772D589A4BC9BE8DC5C78133950DB6EBA6B5
-A7CE9500DCAE041553D7D64642D97CD7A8187A24AACD8675DEDA48E2C76C3B12
-DA3C5E8904C6AD0B9835066B777F59AD94BADE328BD667770AEDFA93226B96E9
-05C8685439FCA651584CDF0B8056B6A0866DD0C9E2C38F57A604B03787DF6AB3
-8725F73A02182583EBF48004F65B63E389A66605C8D27A7C1D59021F8D7A203F
-A3B967A8F0E549C2119FCC6DE2BB56A2B2767355858EC83B5128BC57526C8D40
-5AE9E0860598429DCDA74ED897EECF055D90808C33DCD27A2863C8CB0AEE2D4D
-C9BA9381F0A93FB6065D48831662C015EADC771009886947C24E43F3EE8169DE
-F77A61E7554512477B68A5FF652821619A9497C81D9E1DD9352A5F309E181F96
-A688ACABD75CA1C1BAB77CCEB79029AAD530CACC8C814472B160BC1759E56EE8
-5DB7F4EAC6BCFC33C46A023E5F5F8579A4C5BD7444823CA560F2D0CF8248C0D5
-EC51A5DB2F8BF9C551B018CFD57D80AB717526CBD3EDCC30A7404DC43FEC54E3
-DEA4D8161DFFDD254E3A1B9E6E36353D3C0FD981FE9C45774119C4BAB8ADD527
-BFBB4C26A7FFB9DF23497E59062D273BEB7B16F89923DAF2AFE50AD9A155C6A4
-9234A4A16FD435ED6B74C91D8061A3A21C03AD3F5C7253B8ABF2C46D038937D6
-D0097072956E19F2395BE20FF81E8A1434EBF7551AF7ADB7C77889563AF21D0F
-A749817680F00B5CE164131A8FF0DC94B248E7594A1237132F4A123772358B48
-8714F3EA622F02336C05DF8267641299C69DC5446072EE3819A84EF8C84093F0
-A111AD3A7C3494BAB2EBE626751880A55AFDD2281E46768FA25FA943A3E34892
-778B8B2A07BEA8CFFB26CDE9F19DCD9E79B9D068867872A48D32F691430A5BBF
-FBA95C7B6991B22254D40E52CC55500448B76A40C0BF7AB41D1025F17CF9913A
-8522B0745B85619DABB5C88F5E254791C8E1AE56D4DDDE34BB15431E3B18E3B8
-8D5E98D624A6CCDC98C85F5C305143F74737A2EC29CE1AD0E84D9316782BF3D7
-48836BAE472F8DB9C7CE3533417B85F10FBD01AFD00C50CF24E841ED0CDE0746
-9DAD053A7BEFFAA191E660E5E28941AB3C147AA111BE108DCE007BDDA33F59B6
-74AD1371DF8D9E741B3B754341D56C0D6A8D34C3F24CDAFFDD1BE08E971857BB
-4DFB7C7961EA09C6A104292983EAECF3E4A1C3B6ACB239A1BE3AF3E2413CC71E
-7C5A78D48ABBC7C3F27598E09086EE730DA09402333331ED0843BBD023773DF4
-83873C0922A3FA1C2C1C356F661CE4D6D6C6862797FD5069BC300E7707BC546E
-D149F0C65824326709DF3C0FBDEB92A0233752E53DD9D1844E15169FFDAC206F
-A72B1E331D66C9D79CBD49B512ADDD55DC04E079E6C2E347A3B45947A763EFC6
-076F07A6FB2A257DB3F5F3473CE1E05DEE48DB512AA3A7A895BFE1B2E8708D99
-7C48A33113E818567FC30F389EF8A27681E667FE08C8FFAC1EBF7460A40F7BFE
-468A99C98582813F8B4AF96D93417D0EFB74C469BF08AD40CECFB95639CD244C
-0ECB88228BB49F386B7BEB55315E317B1380237EAD99371E63A34DD6F358B2F5
-8B3EAC735EE241F268C97B350290CDB0666CF6AB53D750F938E78C1B5562DCAA
-7BB4B4BE542817D1BA0065255AC0387FE989806B478662CD4FAFAE001A672090
-65A22C62E53C3A63078C61365CAC642C25F0B89D7099F69A2A5DEB58E945257C
-73C6D2C38A09D068E410DBDDF558C0CF6087F7DE0307388F5D7E8AD9CBE28988
-CCB1BE46B22A178A1E2F5F349FA58C53804EE6C18ECFDC995C51A67AD09BDFC1
-E87049505A944015623EBBBE7AC505E7EF98CB738F05AA0BA5D1D5A695E71255
-E75A2159B0D5571B3F375F77DBACB08F14A1EFAB4283BE7A2865E7FE4762CA5C
-D29D27E0992C4F1D31A2D5187C8D4AA5CC3DBE0026F1631C0689520890133420
-6278CE5098C8AB384B54DADDFDB8929F009BC88D304A6DFDFEDF25BA54F97D22
-B8DDA33812B081AF99CF1F64F2ECCCB55A2AF4D1C5D8DEE6A7B724534660A910
-D6C3FB2378AB8934272EA6D231A0A9054F78F18D0FA1F3B455D1B642FE585531
-199499DE9A1F596AF830F7B7302C7D0A6CB12FE42CD5EF73E6402DF0998188D8
-550D05998BEDEAB0DE97EEE00CFBCFEF155F60A11915EB05477B094E18D9C8EA
-13300F58E772276444B75D0FEB9325199E36B19F9D5F851DA5282817A8CAE93D
-C7E6F2148FAFCF11740225EA470E2743CD0492BB98AE7EB8559B089561D68D65
-C11DE21588EC8DC52EE0380A03E762921EF1E5328A1A30F12C1558FACB26ABAC
-8AE9110E277ABF1583733AAA80B1A0E60D1EF35E551C3545532FA15E4BC5BA07
-71BF8B4D075CC44FEEE936CAF39B88B96F54E3FF45CB78944FC19AF0D118F929
-20A0FA390A5AEF827B9F25CCB6A008D76FD4EBFBE9CD518A966AA2ABFC5CA51C
-C775B0FBD115D2421FF42DB60B9D0AD046F3F06EC22D22DFF938824B5E70CF02
-36DFEB9D4DFD68879134287B4B16A0E098730838B84CE8ACF5F4188286D31D0D
-998E822F80B3A6FDC32BA1E846B4E19D6BE78C28917F7DAAC04BA9B46A6A0372
-10B17517C6C601EEBC365C0FB4BC98B695655B6DE934205150EE47292E55A1EB
-2A3B690718ACF80491F8F7559FFB50990FF8B07CE7C95C3F80C5BDD2B87D2477
-F40EE7133795DA5AC455338B857BAD863C36B60617D4F1CC557B3075E957D2F4
-D8D583E60A47CA98E0555AE9D2B06DC67C37AF3DE44AD87B3CB964CB08F90857
-B38ABF7E93282FE8C6D4C7683E8D4C285F8691A77E93E574EBFC8E17F3C9930B
-431BDB3D4F5A1857D35DE502753EC152BF633B9EBC0EC1E5B2B336EB063657C1
-C7293A051189CDB88381D9066CF063E12839737A5F218072A88380B3EC586938
-7D0BE331FAEA70E4941CC12FBF12ACBACA74E5350F6949A0EAD19847DD218FE7
-D37DBBEA9F6C06A455C75C477C53254D7927F7CFB878CEFB72FD0DC83312ADD6
-21EAFB7EFB4AABFA0A012D410B40E883D4AF9CA93AC990F88C96E681296B91A4
-C7781A74C3E1FBD08CECF5DD2F44A6A27EEEBDA6814DF647E77BCF4438231A69
-50A4348D06CFF33F77E67D69A23001BBA717B54359F81A22B0F9D52D556A4E22
-CAFACB67082DC3FD9BEC915C4A366BE978A1258F2F921343A9E632DF21CE4335
-4801298C7D06B4BE5985667D0A3AA1320736A1A05908BC4C789813274D8C4595
-3B9B69BB1F97CFBF4CF111D6BD2677A6122279C6134BCE860E54BCFC71112839
-BC2F9638D648DC3225982D3D55A9D87A22EF5456100FC549BEADA09621FC9178
-839715DFD4988690927F138C789294121CA45D7C797E366AEE8703F643DE8A86
-8C8DA1EFE1C863FEA4231A3E1CBA588067A02BB911F62EE1EC034A30BB714966
-25BE321462FEDA7C9BC80C389C07BEFDD1CA65615897CA316B1014FEDC3C2877
-5CA4F0539AF835C250325044D12303FAA533DEDD30F1931E51ECC96B6E185553
-EB3DFD4EDB6AD236A9BA6A5C082A0A12B574DCA24CC019D97B0DB53216D4DF90
-93062FED14363A8DEE292D59B27CD74F2050C9D51B6FE943CCE043FF7CEC9294
-E923A7D2BD41E71A1223FA2236BB593A078F2C3010A7B698E1B5C3D3D51782F8
-4BC1517A29753A0E4E254484EE70E9AB055362AE5E8450C43E1B63B3AF76E925
-9D9A255BD9ACA0DEAEF793B316D8EB1BBE32A5EA11E8B640CFE2E7AFEFF42783
-2314F0CDF54F82610FF1E156DAF9241460F961F5142D7D9CE199C91F8FF027F2
-8B94316E56AF8C4BC36C58FFF6C292BFA683F80D9695A14B9F496E90B81F5903
-2566A99EA0C6E0ED1D107D54C9E4D4DBC4918B9418FB7CD9668C2C36DDD7FE09
-759CDAADACBA490EBF930EDB910E343F1D754990F0AF22E8BC431A378ECE9F32
-6DC619838B50E7C8E5AC48898AD21BAE2D68BD1D860A206A820C9C4EC6A56E01
-A128E972E8707CCED6E02AC36B31CB2ACED28EF9B15F377D1C44D71D29BB1461
-AB26CEA023031F750CAE8E4A70FD2159D4D57FB790794059CE28E4B96A69E19B
-8397AC3DF07C2C5D119DEE3FE3C21786FF896B313F94E48315D3AEE56BA4D212
-197DC5BC45290BB7E0091FCEBAEA233AB5C9EE3A2D080F4994FFFC42A22820A5
-A5EB736930C6174F6F8C2DA81B0186353E9A7260DC94BBC1EF74EEC7B446A88B
-2AB7CD74B32CC7493F5EBEED1635B41CBEE88A8E833ED64F5A49967474DED758
-2D95CB825DE6AABBA73717D4E46C5956CD53CF86C0492B377E4CA192D2D5D7B3
-77D0DD0F2D35D21B700EDF53DC142E0F4C2DB2C90D2EE18038BB7D80C4109F60
-C2378659A8EA08C89C6B44A2AB637D6794EDD18CE4449EAA07C9D83E255B1C69
-08272678B083A44E33C3FFF3F3EB60BD3DD9FA1CDDBA91099A654C706865C7C2
-C7A5B5226FA66358D9A18B4FFEA0F116E2B419813F4E0F33E17ECA44E2D2FC9A
-7D1B519A6594CF1011070ABEC61BCF85FAA99DC26E66C6D8388DA4E01C44B9B3
-CB4358B5C6301B20CEB154E3AFFCA85B3EFC78D6217B0C0BCD8472CC51EF4205
-60D96789F1B9283F560B5728263D0328C87DAC52BA5F3E10DE1E18F0F2888E74
-AD2785836795350A6A4D678FE61E09935BC7BFFDF6AA842F0DDFE23F4162297F
-4A4DC5EB175A760F0836458F15E0928ACF7298195F9754FA78191D4E67C674FF
-58C0A8D9501493C980DAD3FD707BFFA26B77768722D48FE166A1BEE1BC2821E5
-3B3D698CDB526A0611A59E174D4C44A4D12D6C068BE8C83199537C5795EF1B3B
-95C357084C6E61D1FA47B6940A98CBD8C4DF5C85545A4107705176BC1D5E557D
-B98A31B0E8A6D96CD403F5DE54E6C1162EC9CBFDAF167D919377422B5608A0EE
-D897F7A8C2D8802EAA41961B924B5A3E07314CB54895FE97A2FCE6DC7DD4CF53
-BB1E94CEBA34F892EE8B4638C51496E5634955B1742B6400AEF28ABFECAC4C54
-A0D70F9754B1CAD5AA87DEE48984F459895530F266B80ABB2A460507AEE078D7
-47ABA63888C4678BE2CC6881C61C3DA44F5A3680F3FE63BC70DB470D17C5DD71
-0E0233F29836F402704FC593FED8134FF5AC464777F77D94CAFEF7E2BCA324D9
-BEB4AE9AF30E8D15145317E7A9E5E74CD526433FD52EF138924A7647740C1079
-17D75B6DC371579534EF35257ACB5F0C1B290AB82F174F050C0BC3E106FD1DB9
-3382497EABD328BF619EDD4ACD9A8B257E30C596A4689B846ECD5FDC9EF0155E
-92AD1E98E670940A0E788184A4328C9E30E8CE4DF0DBCDF46B1F118256FE874C
-C1097058BD438DDB2840270AD159B1D4FD3984153993AD9189095D3FA0466CA5
-099B5BCFA23F632D86291C1F15EFF7CA9E8EE20456950AD3D2365CFF76CC9945
-D618079401C297278207969E783D97CCAFA4DD905877386C10652C4DBF7F5BAE
-EC2D5BCD4E9B1FEEBC73AEEA1E34B8D24A2480867BFE19D5728F1EDC3ABEC796
-FB81E08F26C64CACDC91BF015EA2AF47F1692B2EEBD1F53796253E82E9B5BF9C
-59EDB735C2CF8225D2C48D6B11EEB05BF01B9580D439949FCE2574C488049FBF
-078735D525C1ED5ECB10C661A1F8526380C4294681DA67C10070268002A10F9D
-DE8B50BB6DEFC79AE7695DE4C2F4923EE5739E44E07F45F7040D9A003BBD53C9
-88C3E167399925ADC42B7D27F859414635877A11F0AA631AD8357E02DC12D957
-CC857A55DA38EF3C3AFB8922F339F25AB0083F273E1B3DDBF4D05D0EB3D042C1
-EAFBF57D198793F8F89DCFFCD23AB28DF675816BAE3179F70A209347EA65E4BD
-B5694B5D4BC26A83AA4E21A9D8F5E7DE8F5BE96B56A6B1F15F10F0F476AF925A
-98A609D64826F90F09069D98E98F319D0C0743718C58820C93E0AC938221BDE7
-15474B69CDF31B8D4B6B8FF7DDF8B473C2F96117AE34B97AEAB756230FF96792
-C79054F01F4D66BECFF9A04986A49CE0901AEFE7DA02B95ECB3ABFFAC1BBEB04
-CBC5F252E2FD638F81F9178FDA8C1EFEA1FFFC4992634F6F890930FBA35D614D
-BCA12F5DB46295F2642B6A82BAE554A0E19282C22A15D6F4755077066F3D6FCF
-2C0FD15240CEBE5368470695B738A27943C57EABD9A29794380695A09646DC93
-27BF5A36D8D47EC858DB55D886A9B0C9995E036D497C0E6D98FEEC5C16CCBAF3
-8CC49AC47B9DC40F14AEF71209CFDA0AA7337E916DE6705A0746ABD9C6DF67EB
-67042BE87F3C6512EB762F7C3FC0FDE6FC5F60AF924C5B60CE19C75B4198880E
-0D7288D403C321CD0205105F38827FDAAB8119E96C3AE59B462DF1024156E3E2
-27644BE7B9210DC97118ABED17CEE020CDB796C153142ABF930531B84A987C52
-D65AD2A64B891F1F6D129F47E5457F158BA09A16A51FA44366C070216FCD830B
-D2C8223159F278A85977F21B2626711C8A5E7066970460AE366B5690491A88BE
-4827AF09FB2AC007FCB2DAE3539F4B0F3989CEB29DF8114F689D2AD9B3FB18FA
-4C19BF34EE82D0A1980B727568C04BDA3CBBA10A2AAFAF1F0FD4170CE82AB3BC
-2BA338E000304781FC6755543C940F1F3034B4115DD48F468272AC661DBBA6EE
-8A05E489646FFAA71693082335D1DF462074F23DA77AC22866A3D8FBD2B72BEE
-96F20480BC34B4302731DBDDE0270B482DC9018FC51F10BD560FA352FAA3D852
-1C10607810F557057A0E5F445AB000B261A9F6A33A48242E26D9CCC7076CE362
-03DD3008328386C1D2BB6566D0267A7E8E9C4C3B2E4545A19F9583012F0AEF55
-D8EA5649812DA8C242A335B6AE21D981ABACA3681C457FBE88FD6AA3A8B9EF8D
-A5441C933149EEFEF05EFB8A39F4DFAA30077A037BB7CBDEA8E8E304C7330542
-6EFBA7064E0A0B6CE7C59C30131ECAAB7DAC7DEB846284FBEAFF87DA163547EE
-B967086ABFF7B3AA93350E10398A0D7D974F55A9DB2A38991E785AFF12C2DB21
-46F733B863734240E4B068B4FB4457F30D0E849A87E269A3520705FF39F26A9E
-F42472A49CAF65FA98055988C5E9EB9FE25F4A3A72CCDD1E8214F145065011B0
-66E2534D851EC9AE13A1F9ED628637DFFEE3789064AC381AE9AED6D2F6EAEE61
-A9469BD8DE611DF5112B86BEBD99B9BBBE05D3A5F208B217BFEF667F9F33AF2D
-5E459877BB2AF204D3625FC91900CA4D13D19CFE15F8D56BFDFA8F35CD6E83DF
-373466F43D176FD6883E3486657A345E7BEF91B03F4DF9776B70D85D677944FF
-BB64DC097BC6342D97FD1EA468CA483D9A6166F37EA535ECC6170731DB2EB3B7
-C9536480274B266E93D2BAF9CFF2E295F0D4CA8A45B4A0D8827DB32E059B33DC
-B71E66E18BCB7E5E68C0F4E972E46528D754ACED0F77CB4DF0C970C4BA5BC3D4
-2A1D6A659367A49A78A973CE39D19C56DED8824242DC22AAA61322B8A4D19FD1
-6052942216AB376A3EED9FCC4FE63B85E64E2EB935EB68BAB412B544243AF105
-95B2C0335FAF033C14055FF37327A34CE0FFB6F598C51B11DF5FB8F8E5476494
-D912A389EBE71504FB7A72676A2B297CBBC0C352AFFBC7BAD12479CEA94FB12A
-D85054BE9490F9ADF2F27F00D3423DC47072E89FB3FA6C0653EFC41EA2F58997
-B1380A86A3428FCC07F67CCDF07990610193D9A081CEB0377879AE4D4700C94E
-5FBBA28A0C2ADC71206BBFA61AF2A5677F7522BD1C152875DF2EFA0F04F5FBDC
-4F7F73A5B5294CA53AC60D9A0475B3BF43015663979D83FF164B5562EC931287
-1FC2137362A5044D19ADB36BBEC2C049A126057CF1FF61D92BC33AE7DF447F4A
-AF5AA0F44B540CEE76D2D63DE72C64202302FCE817E38128CC8B0A2646F025AF
-C0C45FA0A19460DE4BBF93A26B7AB75E8C868C738C61E1BC92B6061B1512BC83
-A1C63A9002FFCC723670DF60CAA58894450DFA60125F7697ABE2C7B65EEF9488
-E270F2963F3638EE65110D0E32664CDD2B74AFC289DE00F2B3C03C02FBEA6CC5
-EAF169A59B4AB6B2D7359D00F039BAE852A6C502B2F79C98DE5169C39C5EE0E8
-823A9DBAB2279AC9660F4A0A287D4F839DC0870F33FE676E6406B34F83FB04B7
-802888966525AB8EEBD0DAD149F4863003ACABF7080958A30A256839AA8C10F6
-E8309382CBF540B4CF4FAA44C9748E40D513192F7A11571EA94294C49B8531B2
-84601D17AA8ECE40B8F466735D08AE586E80BD7451D1AF947DDAF2617CFA4AEE
-95974AEA6DC768E773C2DE2A981465CAF4F94B0382670D9B8A353EC1C27B3221
-8FE0A469A1649112C880BCA8BBA4F15ED02D4A1013D43316F0724DBDD0BAEE98
-48F2DC23EE32EB2FC516D010278ED89012350122F4144A2C20BE8AB9ACDF0461
-EFE3BBCDB8F8D80A63652B18C17C0C7A3461893F7866475AC9C114EEFE7E5304
-67FDCF689D5EB0A976C80AEFB98AA2B05F83CFB1A25A6402C7B02E927E459306
-C83217D6C438D06FEB11B1C9823CF3F89463A9EA26A8F118A8700D9CF3D815B0
-378B7ABE59AF54C798DE1371B5A72E603A84E269BAFC48C8F705F4901B1F4C99
-58C08222EDC3895B88A06D35167A59751A1D208D3BAF791CC16DAA6E7258F132
-A4B6F4E2E99A9715B213F2927AA2A48E7CD0BA30AFB6F082212B0EC3CEF2F694
-2B3E2A37D4EC86B7EEF4915B75295BD87EFE05C512E4490D0E4DA01B83751180
-AECA507915921083BAAB983BB2ED344C0DC0ACB8E5415F6BC6542798EE9DA1B5
-90E606FCEB06DFD4EDBF2D62C743C27076F1FA74A4142DF564E962D437289206
-7A8F3128C5AFB55934AF9B288D8994CFB86B613CE5162673AF54BEE230399ED3
-EFC08156FE52292411DCB2F69468B542E773ABE1AE3E9E37D1F1A84A58A593F9
-46B27AE985BB25CA005649B9FF3310D2DC4A451C04D68E3DB3C6BB34C5270B6C
-C3202D4F1D060D99CC7BA20155A8BD3A63A348A4D03EADE278265F0392341D5C
-50016B69BBB67ED0F29178BFACB236E8047D7AC94924078262A5841E28DB3BA4
-4580B1FAF5FCD244BFF0B58F8E08A844B7832A9770717D5ADE8A36646B7125D7
-FE66FB2B8F2ED40321816C2C077310DDE20037D677F31F75955406967BA248B4
-2F73F0E42F94360F515E174DEAAC3689198F98CC3065D9E54A9C4FA4E9B6239D
-837465323EE0EB8DF0D58D016527A5F2FC5AE258F5B68657F47A1A079E76B3F3
-F8670E988B87F6237D3079A1E14098701C0E7B41129D02FFF1709E8830429D6F
-F21798FB78CAA0309802307A26846B4B09B0878E653D9D2347381BFAB0E6ED73
-B23C5E2ACA12D465B5CAFFB40C46CCC3DD06133E9F0EEBFE7AC9B8CDBA21F5D2
-9FDE0458410928E4A727B5B80BE9B9D61BD9586C85023966FF0191A0D471B74B
-D2F87F8F8E9F47D84F018275AF0615CDB5387E4A66017811729E4B05A59900DD
-7C7A05E2900D4827995DD05C90D56E0D4CF14A816F2D95E06A031C26F037026B
-34BD89A87914FA52AEBF03C097B8B657BCD36C1420E6C76B043C5405B6214D9A
-1B331DCB78698BEC697DA1F243FF6E068830FFFAC2D62437CD13F58D4255B52D
-23380E1BEC2C106AF0C39C706B4B4AF408FA4F9DB6D778CF97EBBDFA79C5665D
-E5416C6C30C975AB6AE75668ECEE1C71E2377F6A5BC90C92938F7578ADE9BF72
-97419825EE0CA292F872A6912CB433AC236496CF85FB6973ED8F356A29917CCB
-9E3E3C67014049D31D9DF64327E3F56E947AC79B2116CCA7FB9CD78875434241
-19689AF735DC47AFB26399B6AE5697CE320408D8F2D256C45514BA2EB972A862
-027CC6742C6883BD67EE86BF63244EF1F7CB2C6F46FB4FDD029B656551D552DA
-C1E594EF26D710C1D80AE054FCE7CBBB577D1A594522B03FF064807BB6BD9D5C
-AF4CCDC20C97E7A7CEE4E18FE741123B72573B86EFDB246BE2F3632D1597D287
-FDC00883C45A7799CA20D77EFB0BF2635139C006696811D53107D7FFF3AD84E0
-C5E22A03199C64F0339EC275543C8753A71152FEAC8B284D8C6CE3E6FE24B990
-B4CEB736333F07F890A19401F187F2CFF3E203CEA32AA45BC60396A1713431D6
-E18B00A00F87FC786170086ADB90ADE4A71C87528D53496245D7182A4BBFA913
-68503B1F9500429A4CC427DABCD3438318487F90E7CF4CB0B1CA2EEDAE9792CB
-D3A5AE078FCD1F51A19165B038CD6611C3BE3A290F51AD99C03C7FE0F5020DC0
-C693B26B70CB64C8D337D4FA6AACB34C5207FA7FFAB9E414DE9665161628929C
-238D8515C12DD3A22A580CC8269B1C28324ED4EB913C54E75756902657670899
-89B0B8FAF6832A4659D9DE528A4E13B22E48D3A057976198E3980B483411F5CB
-23C3B6CBC3F6C79230DAB98D3C8A744568F66204B85657BA3A55147C3DEA4988
-2D18301184F63166C0EA18C01C80CAA3260A5593C69C0134A671EFDCED27EEF0
-F02024485F2A54FC278C9A869A129DC3FBEF11F6445789F783C3C93B83B2901D
-9C043A1D93823151973EC720F5D0F1E2076193486F66BEBD52B4CC56B706167A
-4571457628EA122A6162C40DB4C4DE96DC5A0FDCD7BEB6A890DB4F8BA7C40BA6
-EFDDF75E9935BAAFFBEBDBE3A2E7D684228CFB145A0C63E1E56D9ECDD0034A23
-D3C17EE46191878CC12D40B0D8CD2994E30DD99E7F84BC2DA6F6494A4B8414B0
-BD1A4D30FCE83F649DE3E3C1AA600E93433450BA4E9CFEA642FBA14E60125906
-36AD8E6CAB73A296A52725C1C454446AB7A19B031F364FE6BCAFC53C5E67762E
-4A56A337BE493D98B1A622111695BFA62F24A360018CD3561C50A7829F1323C7
-010D7F42F3448E85C8BA28F7C976D359F48A44EDD9473B5B2491AFE53F211352
-946C1733350E2873CC9D6CDE23299880D06942861606EA5B9A15F10977B4B335
-6F94F812E27DBF2B66F456263B173694B8AEB7C4A4B9052B2956F9E35B58327C
-52480AD948F2343DBD34F890A4889B09D2BD8DE5F42B6508ABD8CAEAE948F3CB
-356C747EE57BEA88CAB84EC46470DAEB0F16E1BCD4F56B63457EA53ADA6FD732
-17300BD3B424A22858646670B7DFFDA790430DA60B6379D2B7C7D9568F3F9F39
-4637E2004FA543C51A1F2ABF276F84A229FC7D5C6637D7955168E72A8763C6A5
-23C601F43EA42E8D655F424B0AF019D4DF85A6BCE6A7F99EF1A26B4EBD666B76
-5D59C0DA0FFC2B7FFE465D9D4ADFE7733DE59233A0849D22658A0728C7D79457
-3C921368016F962E80EAB39A8F03BF5F874EF813ABA00A9447BE489348F89DB2
-77CBACD7AF7224C7879C9414F638B07706E65C746AB41A8E44A277C49D16C697
-97447F8A3FEDF43A4BC024C1297F76C230A115E1F8E41BC7DB30CBD8FFA145D2
-8B9AC6A64286D2872A364EB7A859ED6FCE706823B90C230C5DB4842C0C10EE71
-480E98BE76BEF753024DF66B8F784D64DD12BDA7036060CA3B4C35195D8CD31C
-27BAFF1BEACA737F0544DEF3BA67A47507E3E5B2D90722CDB59F73BC8B15F6EB
-E15FB7C06CFC6DF4C7F1CF59F5718D018036FBAAC9AC68207A646C2EC9FDE4FC
-5BBCF95B9BB81A5CDCC40939BD2E32CEC274DDD72C7B5975F8DE84876D48118F
-AD4932AC06879A390E6A0CF725717185DE1E7F6D70B67822CBF1B848B9E80759
-58E4D60BC370B72A727B0703561EE1A90CD7CA8E2FA45FBA019ED457F7DEFEB1
-4DC8D2A91199AD3DC93CE419E904BB2FC04B37B1624FD578BF571F7EFA277B4F
-F8C964513CE9B56F7BDFA7984456329A81AC002FCAFEA98D4F94EE556526F58C
-96D40F1038F1E9618A44539C64E9CF4D7BC0D728871D447BE4ABA68F0205F028
-824EE559CA0AE56C163F9A49FA23000FC9C177A371D6CFA62943AB875A99E2DE
-1261AAC3EA806D10AC0171F72AE75F338471B77DA0BF4E8F9EF25F9FA388AC28
-BC435B66CB14E016B9CC5A275075456D2D5FD3D08C5CDCCB7ECC6353AB666795
-56A9432234E9EC9A134C3EC955F22021C84256B3A3EDD6AC997867BF8B9D88B0
-7EE90A2E9869A38AEF9352E80F51A43004B7A5535DA3460D790E254C5DF41173
-1F90640467FCA9DE7E875D5458073D3BBD90982D7F0E1FDA6BF55460720AEE5A
-C12588D77C54DA0AFE218694B352F33FB3984A9D7C5AA45449565B8951EE297F
-6C51E6D954D3ED2790D6FEBAFFFC1D564A1563D1394EF6BBF254BA1742B7A9CB
-51EB473C2E592B8E630398156AE9DF5C080F2F649841790C551640C1F9F1DB72
-40341A67ABA2DBBE19DFEDED0EB2931987AFB1BDE099703AE6671FA58F43366E
-6D472BB8BE0AEA860512F44BAF1FE040901E01642D846C499C244A83B709C7D3
-4793049D6DE536F7492B46FA10DC5F5CF3EE374D4D49236EE777D039E542221D
-B053F050211BC5F6B6B95288AE851B2E87FFC66E5BB27A255DAF8ABDAFE0354F
-D4718E08821951A410622F1495CF743F30DC543251E94B21C80E2D85001E1A9C
-96AD334910A690B0EE191AFDBEDBF96B6BED5C6683EB0042CE5FCE70C1E0EBD4
-C0550349CF93F9079D652A003A0D41C668BABB14AFA9608204F446217F0CB953
-416FA1E48DC2052853A668987D9DE8597841CE513683230524CB4E6768D4AA4A
-81AC8213007B028FE62E4D6CDB7A2DC26AD18F53B9B665B87E2914FA2057DD42
-45EAFDD5ABA1C98CC81B0FF070C9744C7540BBADBF905C09B323B79E0F71480E
-6DA068E373C1C63BB140C6F486BACEE780E870FD8202AA866F2321075343DE64
-EB0949221898FA44AA8A668C40EA5635B6933E423B1CC550F9C46F271AFFAF02
-4880DB5ADB37CE6A7CBE46F92E3A6030F1C63020B4571751980CADA44203427E
-0BA498211ABED86F9D1AA8EE4CE55DABFDFE7169189710B20E0D0774C4995A13
-25E2616CA1CA25AAE332E74C6E25E48FADDEAA0EE4098E7BB89636723733A580
-E1D464A2D15C794368AEC92126D438658517778969B520048F728BA6AC093FF8
-E769F804926D41CE6E829462C1525B166F8ABD823A5503AF6C9300BF815610D9
-48CF6233A1D0070D855E2DD6350257CA6F4DD89F2BB30617F2C86227ABC51338
-8F7667BBAB17C07F88023B973A92E463CCCD1CA89B419758FDA78A17E5F25D91
-FEDEC91955F2E4C76B75D993263AF64D8663E41B88506190C88578BD9EF01F7F
-7243497C426DF07DF398639DFEFD92C2D6FFED2BAE0B525FEC90F988E0949DD8
-A41A614692293D00E90B09FAB3BA96458ACF36C8D796D413DF4548F9EFFAF582
-F3ECCD06B5B07CB48EF7E2816108D7E268F92ABE7D9B20E415D5CEED227F6FD8
-FDF38512C5CD1A8B602BE337E0D840E4A49DD9AD0220AE58EE0911BC1E17FC1B
-563DD44A8901EFBE260AB88595C2A4D180B28458BFAC6276D1D0603509C94FFD
-ABA584AB41BCCBE97E78AE6E8E79889A6199156602E83EEADEE4813118DBA49A
-68D8C91F7E1431E37BDD12706798644C8713B854EE93E510FC0457144A42C1D9
-150F30F39BE36095F1482A461D8BCA159E58488382F72C71017CF92C304810F4
-6A38CCA4D66041AFA9F1016ED55BC882E9CD1D30CC82AC2F5BA5635953FF24E4
-390FDE10949A60967315FFF42F59AB2A3D97ED36A65EF4CC10EC9B49B1D22B0B
-DE2B846054C6CC7FFEA598EBC798BAE09A75F8B33AAA6FE1D3302F4DFDE51BF9
-0EBEA3BFC9D1C1FEB0E5670825F46ECD09906BD78B3CB1C39FFB4B01FC4F1DEF
-8E8BBFE19837A411D2CF31EF1A1503A82464B12EDE45AC70D110B83BD9602457
-4E96650BC565A9A663990ECF79EE977BC37F003F4F43209C6C24B3A00B4B80E1
-58D707F12DEC61951AC896C3465A52934AE77DA39F9AC9DE18D1BAE9F8373C9E
-4D61A76A7C929BD6D3C676563FE33C8C22EE06970BBB7148E227C9E5638F7A69
-C769709E5697695533E9BBDB921488B1E3DB88028339EEC1421EB20DF4077409
-5F0FCA6FE05E1D5FC8EEAE009D6E94FEE91E3C53D01F59CA6E4FC893AE2FC768
-91948A3DC14B197A6905E8EC6E3BDEC0BE6C14B064F80AC7FBFEF126D8443A86
-7F0F339FEBDCD762E946D9C5A8F42F885E21C42D9F49A6A84C563251E295C999
-F8B8BFFF8D8BFF8A48FE3073A3510B6CA88A5BD8862160065F36B809E74A3F04
-E75BBF9890D291B775AA8CAC5E3CE354B68C5FCB93D8EB7D0B76FE52A91926B6
-4C7A62298FE63468F759764E6317105D8664F888693059377D483F33861A989A
-B9B9D38EF9AA511F0D10BA8B46880D23EA9F037D4A25D896AC09BEFFFE33B5B4
-F6BC116669D580FA690BB859E15CA38E2547AEFAF36B5B95C435388CD23B5647
-B4F386163D139E003EC90CC6A13D86DD680642614C07C3D95D10ADEC178D2575
-EC8DC49B0BFC9A52EA97A850387D3C30103AE324DA8716FE800250AA50ACF10C
-A428030B8091049E61B086F0974560103FC31A9F71B28594C49CDFA4DA4D8E2F
-7235D6C585E3904F7294F8876AE545941C27E11BDAD37CBCEF264D54DB7422A1
-6E998BC25684999EA11AF586564ACF1ED8518D1156F7B108A98D3CEB03B86F18
-10D2648C9D302609AC08D18D7D74286C75757804514BC71D3AE002DE492CD762
-39975365045F97D441FBB6698DE1EC21A936651C0B975D4D6BA24C6305271979
-89C9ADF920E095E1BBBD19F704AF3100916B989DCE683A295C32ED616CE3EB41
-7C01188A769E25FD218966F6BE23EBEF4CBEDE39E065F7AAAA54016E6272CFFC
-C2229FFB2B0E4852F9546D906374F4E7A8FE049549039D0F39E9028A4DFFA134
-FE9690A26B0E4958BF6F1C5C94E168E36374D6D20A827E81230597283CB17558
-0C80A5427D9CF7F8AAE75FDFEE8E08742F6533DF5DC12EB95624B24EACB5635E
-4954ABAC1787F69663DB94CD355294D0630C402D074139BDCEF69587885FFE28
-B2383C12CB646398988559D6E291E603008216F37B6C6009C1F46491EE8996C7
-A8F840E08EDB45F67A3E48D073ADD10D8ED57AA5D76076707AE1CB8EED219AFA
-45791920EFFEA862F9902231E99E76DA9AD76F2B1ADFC634C8E1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 39 /quoteright put
-dup 65 /A put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
-61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
-92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
-EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
-43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
-FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429
-DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD
-3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A
-7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7
-CDCA11A1FF27AFA7FF189A7E8A7C0E94AEEC901DDEB541604DEC0FE90FA0685A
-FDEADEC90DFCF25D074ECABBEF0F518FF620E5DC46EEFB4EFF37B0A862754A46
-567F057C58A40714D712EA5A6F783D9A1C7AECD26458D64C2C203CBD059208D6
-F0AC8240A745488259475394331C07AE954D0E9CA3C467D35F09441535A222F5
-57A2FF2E6A20548CA3C7598CCD31AFAA761AC507A0C0B4A25D660EFE5357807A
-77F869A500A973C94A94F447DCD06A6BD6CE911E361C39C67BDE63F8C9C8DA37
-EF3B38F974D988A76BDFDFE0AB54DA1A0ED775A0F7E567AEEBE683580D9ED9EA
-DBD427477C504FBDBB53FAAAD9CDEEC4F30529BFFE61593EC32F78BA5CB44620
-14889B2495D30F49AA78518FABA939E0C08F86A4A117A55B66ADF5E35E5C247C
-3FCF5311672DAC9438EB2A92AEF7D7D4DB8860F63748EE51C7A13082B3BD6FE1
-DC8600DA605E7F6E33421392AE906279B0A58DDFB8AFB3AFC8592B8299282AE9
-51A552F05503FC6A1B269DF1B246989B3B30A1B0223A63DFD1D98157466D4AC0
-385E4BA07A9E17F29BC10BA58BA9BA1974FD3EABCA1644E74824B87F4C41CA25
-CB10397710231F7FE686465E27FE510D839343D898D4064F292E8A5F4636102D
-47AB90B92FAFC17C1C1490700228F6E6B1BDEEF3977F38F1957FD88FA2A414AA
-85971BBB1161022A4A5AB2AA0E7AD5C3C5D5B1BAABA354F932E78031D291D5F7
-5E7468FBC1E2D97BB54D3AB98345D417A17DAD8B50DE88A8E4AF52C917F2D783
-A0838DB657760028018A6DF5459B833153309B0BAB7096BDE56E756806AB93FC
-7665B3A10D5136CF2C1DDEB46F75621D3BA5B0ED2BA5C45D0E8B3D2B87DDA606
-C70073653199884FE19365E131459CF0FB211BB75DDCC6505DD175A8598CDB1E
-E4C6C6C3347DADA12AF51C1AD7DB768FB5F17D1B591FBA7342D32F498E39F407
-915DA2F10E46CF71C05A7C911225D77F4026209BA6F9C61C7ED769974A2FE814
-CEAAFBF57DA10DA81012C8A35B8B42D6C0E3D442BD3D390982DE9C6EBC536FD4
-23925265DA44A58B39706B68677909FCE4594D09593A54A7B31AA85083BD283C
-41856413B805E74825947FC19D0524EDB4FCE7174D564590C4E03686D801CF39
-8B1717DC342786E89098DBBFA5EACAC348F64433A006D7187CD223E68DE58D02
-FF0136F74ADC953BC0A8C35545051F924F28778476E54EA5811602FC309960B3
-63669FC171B83EF8D1F29EDB48884721FD26065D531DFE1076DF3356B70B8135
-CD9A062CDB8F2769090D20D2E7984E2DBCE6263447742DD47390E718B24CF012
-6875171044F417B65545DC95095AE29F930962A5C26FFDE6F07651D6318B92F5
-33800F87623469CA5524C8017545B592D4F79CA325DD1242B99591C1968592E6
-0AC264930E026605F126B0501C6C2A860942778AF2D8E297EAE9C37C82A04A0B
-61DC60489DCB2841518702F52CF70764F9B35C5DE972A7E5ABFD044E2B1EBF46
-98BC184F180B00DE7477500215233421A8843625DB9E31C9D02FB4F15A8E8E66
-A9CBABB97C200BA49134022BDCE32E7D009C5B4780FB3159C5FFDD098C82056E
-5EA48C2B4A4F2BCDDBED9ADB42F013A8C55E645DACD78C8996CE56D2078B87A6
-1AAC462068FDDCF05F721D283116F92C36FEDB735E1DC77298FAC12FDE54E18C
-F9C3D02F08C60DB2E848799E196102EEAC0B24B2637B6DE7FD4AD777D1C40EAE
-670D7379F16FA2AE2B170801999722FF8A58BB1CBD48D37FD10C0CDDDD3330BA
-72574248DC590D87771A86FC3380E5EC767D3D890B8275CB3E295E2132F2C786
-BB7D3C97BB72812531B9DAF900AA6C208847D23F352E921AB4CD41105398C97D
-3C950E596E47F5B62965035722346AC6A80D72B2C24A8220EF7478DB250B5A1E
-598E4888B295E09808542739E9189E18139439289B65276F834F61B05CC37EBD
-1092E78E7EFF694B5FF4494035D7AEA0479DDB5EA3B6962C1EFE9D292992CA10
-F7495A5401050F335FDF3878EE8AAC959D6361C4F9E3D50330511068F4D2EBFE
-AE0ECA2ACF102559FBB86E05C153085793D9ABBB0E9699322026EA9464C80069
-1906BD5A2B308DFCA9CB0F9D82161C7537FFC9C58B4C23DA8FAC2ADD3241568A
-26BEE014ABA159ACD3FC6A568A0BE3354E8D7B52033B61CB6E4AC02C16F32097
-2B7D0CAC58B1317A553F02A15DDDAD9FB67587BA782475F9CE5F6B895510A888
-9593FC764D8FC61AC06D77A67C29F9DD20834C42BBD0C385F00D17C742B11D8B
-73F5465D8A79C9935E05E607B956C12A651B3857A3EE00D334C41F428FC138D3
-53802C501A32F74B10C1D8414B843E099F81D65DC64C3322BE42A2F51F447B66
-930EE60A018591DCCF5AE2174E182E0D42918A45C6551A6D1F41792A515B1A44
-79F1B68A7714969B92EC7A705CD250DDD345BE635520B777D27AD42D1273A6AF
-BA7666B6AD2D39F294D0A807942424C98C29F57CBC71675576CBE37B6AE14E02
-75C5C228A36E88BEF81E556035AC163E9F968B19722E4150F763FF8572589D1D
-9E89D231B639D325B6609E2365F53C726EF4A2E162B6A01BCC04C79776277BA5
-8200AB682CAA33799D6D6ABA86FCAD451BED90F1B61B95F80C6814C514DE23A4
-F59BD7A88774ED28266115BD95C642A1793661935D8A35C263113C73E1994E53
-A357A035911E5563DFD2552D6C9D4097C4F78B94EC5958C5F07843B42CD93BB0
-A6661C09AAE9CEC70AE17318E380D2691700535D682A788CCCEF215502A867B6
-DA989902CD0D31C57113CF74F082404E375B4FE287656D513E2540F5724646DE
-3EBA8A39D2C118C9A4916D041FAC8874D262AE167FB9B8661E82A3ECD239583C
-AC5A80D819BC0013255C5BD4C7BFD2952C34F26B394B2CCC50B6C1341D7DB8AC
-0B39F5379402382D884561733CD518C32DFF595CFA87CD17372129C91C7B7FC6
-EBF76C0884EEDCCD5DEFDC2696601E9EDF002FD91808E466BE58A602CAA5845B
-C60B26784B58B92F51511FFBBA594C2424AD4C5344827B9D67491E99C27B1AE3
-03F9FBBF04C63F322599C1F6D772DC7EAE4C26C86E65A81A5CD06407D2A42423
-5999A87DBD3D5AEE7E774F4BE15DC486C54395EFB123321D8FFA2AFC051B0237
-63FC0CBB60F0CE13F5BB5EFA445F0C5D81B75F2B3AF4FD7E26C346314B32B80E
-A073F454E8622801ABFA763F36693EAFE641295F7D51A53424535154963F30B2
-D9E8FD0748A8E278BF3CAFF5D4337DDAA5ACF7A4F82847703688EF5D2DB8DD24
-B388AD865050C2C28B167F0AABB919CE1C0500A1CE10271FCAB7A14C483CCD52
-5404DBF591F9EF61F6E082B80B32B83B105BE24470097F393422E330099A3A2F
-289B92B44D38AE648600DC2DD7BE84866E405BC986F23CE0AEA7437AF588A160
-AFA69A70927DA8437556C98065874B2416BE7683327973E4097B8C94717B2F7B
-79D179BFBCD0E2FC77C8A4623F857CBD857EF1B485C7FA230A806038006C777F
-5BCC1BF710EAAD9523858AEE2973AB9C70AD95327D466BE8518D70D08D46E4E3
-DD6CF72A0C9956C07E7148F9D90BBB817EAB427B734BC83F361726227A137BDC
-45FB153BE61E21757849A644AF134EB86918FE8BCE43C7EC7101A82887931318
-A348CD2264F10DE4725B127A9E7E823447D39845D1D060FAF5E86D756114FA65
-D8007519E459B062EF8EE0775617C602EEF0C17860158F0EDBF79FA3CAD1EAB0
-0DFCDF51E7FC159709C85BEFB743580CEE0C49ADAC4F71053FB7A6E245602D64
-20E5855BB820518B00BA855061C4569D8E66C8FBB005C29DD4E7FD43367BDFF3
-BA85A5BF6ED36E70D751715FA4AD082544AD60541D5F6469E3AAC78D64411A09
-F17DEB69C822BF575C6FF02C33C51FC4810ADFFC874AB6376C94E06282458F67
-A86ACCBB0C9E317862C678602FF2186F7994274B2F19FC4A6DAC8E559D44B09C
-D64820927160FD73CE7C5544A904A2988128426393D9A03180576A0A11B32672
-9F7B443DF1A710B6CC063C669CE12EC3008505CA5BA770BDDCA1D430B06C02F6
-F64A6923F4FA8DB245396FED90AA9BC3365B84B8B9EF4B86B254A272990B4F8D
-9674F434BE00CC9369B531CD0501FABE4C0674C477025BDC265F53C8D14434ED
-24EE12729BAD9F779E1BBC463E0C646F70B9A5AED237A7590325AA47DFE30D8B
-6DEC347CBAE4905FF354C5BE94B28A7898795062F76F0DF3533B18FC51CED574
-5A0DFD920E845DDADFF6FADFE5C9341A4A98AB1A5DA0089E9EEBBF3191ABBDDD
-C04FA52CB368417CFC1702795C52A6961933053593CAB52F062AFD431AA7611D
-70FB93A6228EEFE07A1AF5234E4DEC8D3EE1DE5E078A2B9EAB41273530B78A1D
-CE7737EEEDB815999817F504C167F25D7183E80A43859254EB373C46D51980A9
-3A406E4BD0E78B2A2F0F52595180836BA353FF233BDA4B56D3573318D20263AA
-76CC364EA8E9E75B24698F61105D36B949927845EC52A0B3583497B070B74FFC
-EBE65224667A63E69998F9B156DDB27F3BBFA17E991C0B4B13853DD2F5A8FE2D
-B1BCF632449D3D3CB9ACB3BDFB130060240CEC6534F602A5E43CBA96D779A656
-3E15778D99BBFCA932C60B94643B2339B4803BC3743A5C842F29721F1BF2C138
-5C1548B463E21E6D0CA7ED07B177CF68CF6F709A4B437A38B1FDD4E1E3A3417A
-BDFE26CCC5D6A7F683D3CEAFAD19591AB592E81161A91A11071E47AE107AC70E
-C7CAB5D72269FE1670B3D10AD9A90E2D3BF34A8638814A56868A32ACDE113048
-275995BA49317E1003475996F17B7D41B12FAA82FFB52CF6668ADCD2BDCB7E8C
-F21BCE1B4D97B79349CE033DEC5D4C8DDFA0AD9D286B8CB1646F8A304D2467C4
-A12326E5C4174BC8329F8DB1EDF019E7CC0FE0F8176EC39E0FB0905382A6969E
-5CF103BFFA1E1DE4985EF6453DFA2FA53002851CEAD3EDF5FAB66408EBC17AA3
-9EC0E6BDD5D38726C8AEA70C3240AAC01E3487CAA7944AD52401AE2B95A9ED21
-D05FDC0811984E5D3C5E5934A1CA4534131D8D7965DFACB3C3250DD046CFB55B
-0E03B3331BAA231320B330C0675CD166255236CC5B2D01C0FD39D5CA7DF31D18
-EE04AA5511660825BA4BBBC9ECEFD923241043BF1CEB6F24F58D656C9765054F
-F3FDBDC074BA94D0902D9D8258AA50704EDB6FE7FF58200C2D046EAA3522B2AB
-24CA37EE148431C43352DB5B32C9FFCA36C23187ECD74730EAEC9CE10E0FEC8D
-A6EC21BCE32E9B5B1FB55A13763ACA609C1D4A76155C00514C3C0F286EA3150C
-A783BFE5645B765100EDD82187080B18B25032CC5CFF50E33DF3EC49119B3264
-1C82E80555EC679F256C541BC0462C6CBD8C29BE52F989FDCB56A8FDFBFDDD92
-25CB1E3FF1A8A9B41DD5903D8488CCD93D33F93EE2BC829D3217E8F560585C8C
-3E0C591E6F6F1783407FD915EBFC192272D2DB8B204AFF08B44109E1084EE2D2
-D176A009653C93D6D8A5DD1C2DF3F33C35DA160B0B2A672AA79C0D19F2C2C310
-5324D017B6BD468F6D74C22E794D96CE47825E7496C57A7C4211329DC7430BA6
-CB4E5DE36551D8BEB8CDA909F058A37C4AE43C7E7892D97138F0C978C5976B5C
-23CD75BCCCBA2F35125922C862D2F03CE311892ACA63061062A35DF1A5D9BBE8
-50178B4907CCC91CDAD2BC7650766A5D3A856522D55D58FD45F10482651B498A
-8245EBDDB458462BC1CB0D2BF02A9CA2AA073D1508C807D9F965C6BCA9035CEE
-E6FD4F676DF030CB575D56872213D09215F8637EAF2B43755F421150F8E417D7
-201F169FE552E734125444054AC23CFE1CADFB2C17F1C47FC7F8D4E297044E46
-ACA2E7895C595508CF6C0D8C9AA05C4396C7543F09DCFAFDDDB1680160911F93
-AD283A6DEABC4C24372896714BB58746A6203558EE31FC3647C19FFB7615C88A
-D12E66563E8CE1F7172573E2B1E0751D8724F49EEBECDF6B1C49C6058F98D437
-69892335A14D7152A315646D1EDAFF7502D0BC9ACE0BB73FBBB07FFC46832827
-51EC9E73F4861E961F965F1010C08CFB9939B44064421F551619075669AB3F81
-C65C83179707EEAA42AEC9A86B4DE8C71B96377BEDB5221353147539F55C70CE
-4A1C37D9981EE55D3A43A059E496759B489AA20B4A1303AC91345CBBB02996DF
-99192F8DCBE79E892A025DE659BEAE2C29E142C39DCA6B713C40CF28871BA76C
-EA499830D1BFD8F8C25EABFF5C52AF504512B6888B7B97B3BD7AD376628CCC51
-638DCA8DB0BF2A96DA8453DDA7949A6BECDFF144D47CA2B6C021EC70B326530D
-8DB5D1D38E540C9BD59063764B54E815DA5186E6BB8710E3BFBF9B0B47D67131
-53AFB109C8CC568B80938D79BF8940B49C4E791E745CB42C11CC3BACAE2E441C
-B8FE421C508F0FB4608F267550C22B0680946EC713A652F5CE2244875F083469
-D4A423D03F87B68C44FDB8B1D761FDDD1DF7AA530E944E9D11113ED28335CCE1
-52320822ED83A43EB09D667B9030152BDE281648ADF0097BB9017D2FCD30DF37
-9B400499EF9D2849210072D0EA54D85E3741CA5B02C572E94E1310EF158F0DFA
-952AB8509586C7A2A0094D1F5224AA198BC90D95F2572D0DF010AB33F8AEADE2
-30CBEFBE7FC77717B84FC7E6BB23450E778409E4EE5D3E2D92BFFAB71FF3A5B8
-568F589F585225C32840295C9103254E204BFCEF67BCA6410921CDBF7A3E0668
-CBB54705E6277A11C5DBC25EF01463FE3E0CCF935122E17BD4586C595BE24806
-2B24C64C2E8528D078490552D884B40DF98B651A043D8020B2F76707854EA72C
-DA9F71A0031FA6D5271B3A377E23DB5A3857B7B3E103A9EA52C8181A2368CEE1
-A048B884B2B7601F2571D8BF4F7216F49925E21DF9DE50E928B8EA3B45F1A077
-6F7020B6B691DCE542A3B586CFA415A1FEEF3C509329E6155F00502A0CB8F382
-3665912D4080A34C5FFC03B903D79B174291D80E6D971B91BE007F31D99B5691
-F7DA52C2C48F09ADBAB4E04777AF3B46C56EE9FB04E80A281524B4816F5230BA
-5D8933CFE44B1ADF794D2CBD81A992EBBFA12CF3EFE6084E30F9DADA7A98E391
-8B302F31BF0D1A8DCDDD3246F4DE2567DBB9A788AF1A0C229459EAC9C1B4B4F7
-1681E03FA1D8843C79B41D8FF39905A6D19B68ECB3B8EB9E495F1BFDB277AEFB
-0BA23BDF08354A5393B46B3D2941B2095CDD185F15CCAB135839A3F9E0E7F745
-68093F11F14CA8C721A5E6444273C474D4EC36AF3136600ED9739DF66C9E16B2
-BDE8C991C18BE27705E2020EB6559C999C3638B69E0D3BC891BB96287539C03D
-7F1565BF1EE9DAB1E3BAA772C5E27EDC784561B8629F2772FCF7E8676F08BE57
-C55271AFFA8F1E652AF7294EF930ED19685748D182E03EF7DED1E6ED62BABFAB
-6FA1AE6181F9B244D030F14A79FF78E7A7EA70AB34B21AD30D3E3FB887E1CE6E
-8E70C82F917A8ACB1DB5F345693DD5E2F581AE9E80C88D20E6D0B617F08CCC29
-BC1FD85C1B6F668F914C8032CB100053F4690719638C51D5BBE000ED31180A6D
-40D6B42775BB54421E03CE2D596B47FB4A6BDD1A0CCDD37844E250D4336E93CE
-8A70E71267A1AF03FCFC7CD1A12AEF459EBEBEDFEDA8B31A76415502C3A82C1C
-538F87460B7162F41E2559D647669239EEB99FB41E1CC694746A6EFB8ED381B9
-35F8F201847F08C27FB9E170F6BA59D07B1B7EFCAAA167C62CF2BD75EEF182C4
-A4588E3EEEB1571823036043EDB662D32E7E372534DC8801241AEE2221FF2D1E
-7844F79C3D73FCFFCE1050C5D40EB619D648DF1BEB634EFCDFE9775FDB3EDF08
-4E9AB503CD5F0216F98B4FBDCB606B972A6C332637063B8548F4EF4FC59ED984
-7E28D6A561C6439296796FC9ACE259AFD2DE40FA55507D539B99452A6ACD4C08
-CA9B1387566CADD24240F6CD83F4B4281EDEF6FB554550D1E61BD633BB73B342
-5163AFE50FFAB54AB77ED91CED8F61AB70FE75CD51E4EE6D8DF6D4AD65457D8D
-5B25979A6DF528980ECFDE8E759E16FDF224EBEA63CE9752A4A9A137BFF33651
-E3CDD7107195FFC80432DD14E0D87111D1603DEB03AC0CAA83F5E14C52CE058D
-8720021C890F706171DE4465778DAADF51818BAD93E3BD5D341506E7360FB442
-682462047F8468639EE449F84A2A2DB996D14B67F9121B3087EA533C7A2CD845
-14602B6E9DE314B2DF4597D997E392473E7C6EDAE32AB276C75C3D7538C5898A
-F6386C143628D3D02167A908DA2C4FE79F105DAB061DBC044529A8C0BE5EB56E
-629855FA98A8C6B561EA42F51D2027244E9242B7FB3E0BA4EBCC597D46970759
-B2F93BFDACF4066D7295D5B50708F8440DD6CF219400196BEFDDFF2AF983505A
-F863D9D2739D56579B8CDBDD82031A8A0B7876206C77A0040F49671F2A6C1FC1
-07F89DD6610231B21E1366564EA5B0B0E5C5A967BB72B25403517AA82E2B0B35
-33CB67D62E4588EEC5E70306AC75FA37200D6391985471C2882CFAEF192505FA
-F1CC07468FD20CCCCA3E9EEC75114600B1690224D420CE148154C20CD57D8C5E
-28B1BA126F7279D74090DCAA7EC1627573542E0164E1CADFB6331138D1A648D1
-78C1B8FBB5F59BFA7C692F5050E39DF3DDA64B9FF7B95ADC9B38ABA48AA1D518
-C0017431E642AF3BC527A020CFD5258B5DDFA3E61C75788EAC9071743277D111
-247B7A12DA40E12692C9430A8D01C6515CB666F8BF3DACEFC9434E40C6474EBE
-169D52BDD56B95B03A833B4A5267608301306E147C16424F7ED37B0ACBEA9B50
-E93663E01C4342DCE4532865C93AC29A998A5D8954C02EC3387A305D73744167
-5A4EC1C714C3C5235850E2C92F458F608A60E659D4CCF7EED9867F2958ABE76B
-9AE4D51F139D515A2DB73E1C6C62FF20EEB49C487F5B84F7969BB6EF65778359
-27F8EE4D7484FE2F1BF4A34DC4D30058B307D8D0093E7F261886F96824821402
-A3BBEF11C22022F4424CBFB3D340B77B2F1FC842180166BD64DFE4EA4C79479B
-981D4D308CA3BCBFC8B1F9ED026D3F71B9550E031A9959E6B32FE7E8C6C31EAC
-FE5AA56B0C41CFC69B0DB97E742AC0C93CEB2029E7E4B18E795CE65D78098DA1
-D254B7B552C40A832B345A32F3B1ED661F999E434C712F1A3656681AA24496ED
-75B60D5108EA95E5FAD9C0FE7D58D82CE2CEADB6E053078ADA4894DA2AF57097
-D3156A571106A1408CFE466FAB6317FB8191105A3F81C02DAD4B6757FBD80A43
-D1331F9014DF3E1FEFF80CC4CC0096F28374F8EC623AAB3F34D2CAA2E8050048
-0A688D806A369AB0410EFC3452D9E0266A2A3B46FEB83FC2045965C3D0E4148A
-2B156CF2509A89500177AC550864D8C7949F8587316161CA8A161DC2FF03C805
-33677D70645842BDD3A430057F4CBEE4B59E785B53AB669ADF4FA02C5B9378F6
-D8047EBA76C1D54958491545819B08EF0BD9F21A3A38CEB6B56C6F1A77F9E178
-AB4218772CEAD7B9AA32FC3DC062A86E94B8091E9D63F51B43B7F9DA2BDF1B49
-461FC52BD4EA7CE9866415C961F6995E9A4CF9F2DEB2154CE67738330EDB9D85
-57193E5385ECD76B7C33D375B280266E78D8D9A23AA84178E5BF5F5402B98949
-A6CD7F19CC67895E3FE52115A74E51FA99938915C5AEE4215D0497D95446D2ED
-7424D20A04BB488E4C6ED25F90C910CD72B960EA18949FC1A2342666A4BC4D62
-B30BE383E4C05A99DE9AF1068CEE15F32676973B666D9DB76640EEB09EB94DAA
-4C0AA5104C716252020FD76ED10D4306A2F622399F481297C81664483CC81EE0
-55B4064D60EF02714CCBE6B5EC8CD3A94FF81944AFDB6188AC142AF7E5D17648
-EE477A9FD8384BC7E02A90693D80D18C6BF2E27DA9AC628BB8FF3FD772208AE6
-DDD3EFD2FA8B5842C28471EF6192719075453DB73883FD71B43F93C6327BDBB5
-70C98A5ADDAA9A5A7186C568D5234C3F50BEC323DC5D12A93FBBF630324506DB
-EFF3D66F1C5EAAD2A0492409A1E513F48169C7B4DDC6492EC9350AFC8F055ED1
-0DE6366A9EDE5F11F5B2EA3E506A43B24137C98E8520DF7E80A898FFE497182E
-9F129E2B8AC9A894739763E54A3B90B4325EE0588DC84FA4F516C908F48B555C
-C171C5F4CC0A8C8B62F034E1BF8250
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 15 /ffl put
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 92 /quotedblleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
-044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
-A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
-23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
-19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
-1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
-8BF2799C1BC14A4900169BBA8D40165ECCD95F308459A6CC9D24D3C9B3F9E25F
-E63219951D01A5EB5C502A0E63A01F7799ED09A9F6136FD925A230C806B59F1C
-A066AA5E41019226C749210F2A1A6945AD623657FE886A97246681F8A18698DD
-76DCDA3AE7BB19D9196570E825455DED18A1596ADB5220B53EA8A9524C2A0C42
-3C1A39568627E161FBC383B505AA4EE039710226748630D911E1FDAA35182B40
-6F5EFF4D985260E0E9A7B926A772D6D2966BE5734E4328ECCCA41BC7FB2AA6B0
-04367305969A40A878F5DD141F01502D4C51C572889531EA0C8EFD79CEE82ACC
-3859F267CA939EEBF220BE2F518657AB4934CB960E8D54CA8DE3A380B6CC7095
-FEB54BBBB02C2EDFCCF04C3B4B3484F3BE4AC64C19A3547153AEF2BB75E1D3F4
-AA9BA6731339A7E169901F396A396DFB81950665B57D49852C1637D6D8A5E407
-A441B08C4D3D511503C42ED14B57EC35E9DC6E992AEC0B7953B97F18E3F9F927
-6E155E500654C02E6D779988B3EE1FC8A33ABDBAA45C9186BC8D36AFC031CAC4
-5FDE21F350ECF045E0D35CCC460F031530EDF88C59CCA45BE0F3DFB533D17FBE
-60BC07EFB8B1D5CFEF8146EA2B909BF548BB8151BFE3E8A8158D3748C9DD4B3A
-7484A9E4958348FDFE5E8943C366C4667575A3AE1B2B1A61078CB6078AAC02EF
-FBE48232FF43F2B510FF11AEA2BBDD55C9A20F33C8D496CEE443ABD571DD257C
-BDEFF605D31FE33F6C6C82BF5E45FB8D2EA2099D6BBF6076453856BBE653B85D
-0E984918CE1DBBB6ADA1F2AFFA8E0EAA741CA9EF5B88D6548263978CBBDA462E
-AD93E96F32B388E69253F9789CA251B4A030AE68C2DA0B861C7D4382622C93E0
-8523545C474433A320169E81E078A293BA6718158EA52E6F8F43AED5AB22CAD0
-7E4B9E827DEA15851019889EE4FD1AFFF3B8F19F67EE437438ED7E2260E6C987
-A253652E8BD774BA97E8210CFD5B553507BAD6A25E2270375D3B2A9C10BDC9E5
-BB6ABC1B18F16150B0C7AEF9C5A75507C95FDB3A12033CB640109DF99F05DB6E
-3B54C1D48D59AD5F6DFDDBF64CF8CA20204BB2B3AA5A8564971B118B57A80404
-BABAFAA9C9B7769F7065C1BDA65C485B7EB3FFEA52CD9F71CF03EA596CB321DE
-7DF5CDB5823DE135ED51FCBA7E7AF7E9CED20BFCFDEF1ADB13C14287428F93E2
-BDA58A39A3E3B6200F06CEAA6FC6B43FC49A6FBE3A1706A58F2662BB9A4CE2A1
-D602FA77561E99C529C2F8AD6C132641994F6009E08B86817F96C0B40FE3017F
-FD2D11D82879EC428204EDE81E781B3C3AFBECA405C1F6EE5530DFE308A0A2D0
-95532A0A5C5E07F84BD83B0BEF634FD2B7998F77CFF3AE6772DEB8A308AEB4A7
-364AF4FD503D8EA06BD2D13DBA33D446020A978D17B27A3468CE165D8E58BA89
-2F0D6C73143EAB5B9E83744D44F4B8E3F614E04E041AE7E4B143B571AF4D3ED7
-7E3FA7A40AF5F989E9FCAAB9AC5DEE1D5770B72E863F440BBD3F1DB57190C0EF
-7D37516C5D817163625B9E9AF9DE395B10905322F827A39774F811011A6F59CA
-7B4E8D099EC895B84A0257253C8BF0CB8C96D988C5AC158C3B38B11C1ABC4ACA
-7E6789D4BEDB6CAC6EEBC9D7E81F36B59E1F02E54D6D7BBF566BAA75A97D2DE1
-00967463059497E928EE1C6783F4E786C3D813E5A6A8887D84B7C20F24793DAF
-01ED90841925E8D7DC1D81B046E0DDF69D889F89200E0C4FDA4C269E45FF35D9
-FA0A4A6119F446916F1CEF55B5486A550A86ECCCA2FDD28D4513007E2B43A8F7
-96959F9EB6699E2D25BBEA7F7D5358518671E3B882FEC0AE6ECFC276F1051B3D
-5360500D35C2C8FBF13A21FD2B50BA4F87A756508739C58A5B5D8DAA000E9B6A
-0B4B998C3AB282F1F0D242552F87A594D7E0E7D159508043A7780A7359ABD208
-0D270D81B1E48B7751CF67133A95B811D7739412D31EC3A75BA68A1D40E2E1D3
-5DA3C6EE09AB16A19D769B237CF5988DD74B375A986A4860B4E564177B69495A
-7645B81B2E1D4F546AC496DAAC26F57C92DB091E42AAF075055CE085F46E3D92
-6747AEA47E14A35890C587A1E788F0ED456045CCFA36EA18A7B5F95F5C8D83E2
-AC46FE40034F9D6193948E5635A3A91A2D1032D98163F18BEF604A0C7C6C62D1
-C5CAE66D1EB7B5274F36A18E312948BE80B41762C11ECE74A523523C68AD0148
-5294DA5E8828283861F415D0FB048E2CA294847D80B0AAA2D444CB5D10DA7C31
-8F9A557865C9AECC6FA4C94DCCC5DA11F0F9566790B0539BDE668D9F48EE6F51
-BC8E558DD165DB7C7BD5948975F8CE560A92733F82B3608BFB711F98B22C6EED
-9A7F929D7195803A9410D85B127B1334B72B5B7F4864B33B30AEB2A128CDB2BD
-1FA9445ED765ECBE266F6C245209BCDAFDEE7B0B8529683D65F70FA5123DBF16
-D65D453D1966D0126766AF533983B2251151D85B9F1528B958F1FEF47DF71132
-89DF167F1D88228BB560F30571E323898DB8ACD307D118ED153360C058244929
-7D81571CD8D3057B0730CADB0F49FEB596708B1A302B1EE8B4CA0CC79B6364A7
-E703EE65922CE903B7687629C7B95580ABE9E962DA24673C31BA735ABD3BF6A4
-E3AD7DCA4114CCC2F28C0828123CFB498DFEE584D7D4CD81D31DA3BE001EECD2
-EF068412CFE549291C930DA45DFCC20CE992AF2D06652085BC27832C3E08FB59
-ADB0D2DCFDA8D9008E0C0E43289BE184FE04A50A51187ADD60735E0C9B29092D
-0B03423661E3431C094A7C52A28C61C59FD3211F25B7436C38B36780395D28F4
-9EA931D69699F717C6F9D239DE6FD5A8562AF672C76EE3E05CF3751FF8433E61
-DE7784953301826E644EE10ABA9756D3EB2523380DFDC4E421283D2C2EE71937
-A6DEF4FE3FCA3EC6682D75AAF43876404D079FCAF33DF507B3ED2B75689EA3AC
-973798765C5F644A3AE1A1ADDA6772188FF628B735564A6B2056990D1831DA26
-49131F1997688E557751628A53D364BA097EF47C95AE15494E2B15087B46E5F1
-086471B0ABB6D5300B278BAA1FF516D6CDCB0FA7B338A79A870389D4A58DD7EF
-C0795729D4AAD590FAA29BF77CDAB611F93A3BCADE7387C5030134CE3F58D80C
-23B359B209772F9216757313F29373253F977554B74E5FED0035DBBECCFB043E
-F3E885FB79C83EFC8DE4CD2EED66F07212F62A861B1A5172330ADF91F2CC5B0E
-D1A4BCBDE8B6EF9BBFE3DF1A093F9B089CFF681190B8FCDD616CC52CF2465F8D
-1D5253DABE659FE576C87237EEFA515E3EFEF8B3BC6B7BC4F650A17EE2CD6012
-42D0DDB144723372C970D3A7A6CEB1CE098BA61C338009582F11248D7B61D5CB
-E3894686185C392EA6780A3BA85A723E063B8FC06A14F187D5E890564939AD97
-059F07A3FF56614733FC38B9372F2C0F77D0BE97B7BA209E9BEE9A4EDA4B7FD1
-DDCCF16B7C4023567440E719B6FC3674489F671BC96C4AE4D570A2B428E61721
-44BD5B6A2E69BDEAB1F9274D0DBF2E8ABCA6BC02CC76052B1EF80E55D104A4E6
-9F4D025E38048236846728AD68E3207FA85AAD40BD045D19DC0DBDEDA5BA78AF
-DF07DE378B6BC30C5CA66B8A9BDDA5024C9AFEDCD914DBCC5B39F3B8B2E2EBA4
-C14F5826138CECA74C5CFF1520288DC97095752AAFFF1AD8A2CAF6A6994FC3D0
-1E6324BF4213549DE852B1C676080AEC47057128DC0D5223F4960EC9BECB5401
-57FA525F8CAB7B6D02EDF5A91FDD604D80231264621F0779727DA2BF58F7E1AE
-C69146E6B26D579D5331752A94A43FCB37AD0FE6AFD4424747C21538285E1A8B
-8C3DE15218D8FE00F2C173602D5797AFFD4F4492D280CF2CB6FB3C5BC5D8D656
-3C71E9BDABF91958DD66CA29B62E043EDBE490BB2248612634AA9D65B243BB73
-DF7E24404714BC74C5DDD2F74472C30A506ABAB649C193A6896D42D19462F7D1
-D1651F4BC817EA40E20835E7F4147458C05A98AFEB8C10148091CF6E80251208
-E3103088EB805F4D4D5074EC4D3D7D0007FD399A7619DBE0E8DE3CB97C07352F
-E694F68F615F32A47C3C713C3109B778DA6F88619DFD6683EFAA54A7D4B10B2F
-F3449DC9BA1CE341F24CE82E49C34621333B0B8236D205C1097AEB331C4C6E1A
-F2A06FCCD003AF9B6D211ABF6E261A316A08584C7F753A31C860F1ED273B60F9
-B9EB37F9B0FD470139AD12352C8103D9D30175639805006F256E7E0F6D8CBAEC
-E52E832DB3AD32F5E164CEBD2713EF6A17DB48C09B320365ABBD1F81078E9A32
-975AC69022387DED6A3E8A246C18AA5909F4DB4F69F8678F28326E4DA473BE7C
-E91D485BC9803B43333385B5B830E432016083C8E0CFDD561F2EA010DEBAAEBB
-081527F2A68D6E53D5196CEB989C8EC3EDD36435E7655F252F82C3633D8B3351
-9AD3902E2A25FE0B259A4834BDC49834D622451017AED2B70C873842752FB1C7
-3C9E3D172096C0D9E827F94C3D782F2BD8C2292E33FE11BA7BAC380EA61899CA
-078A14D6BE7741DA74B4DA75B61F5B7577DEBAF33436D90F67E1D264BCDAAE88
-1D2361B20E3F93F6B7234A3A2057291D65D2D44E25719F881ACAF45CDDEBD768
-D4E736C3DA3F106E27B9523E40092232BAABCDF99F3842C24E51E44823E36EC6
-6516CB10477727FF318A3B2FD70FB013868B3CF26F6DCD8F3E0397E3F788BCC7
-CD360F54842160A6D6A644539C9205C8A0E5ED6DE967C33DC5CD5804101B33A8
-BA361137E9F1B7C4C86E137788B557510741A28F876FC9F0551BC1B22B081041
-96A58A431C6B4F5A3D673A2E37EE07B737CE2EEE61A0A48DD7CBB4B4253DC8B3
-394BBF0BE9D972261B5FADC92EDB286099E2A934B397EDA6B6BE06B1622BA753
-84D942F8D95D3B929D41A23D32C37D7C72E42BA0B6DF6336BBD00C8112E3B7BB
-633028F72BB49F344BB29830A09B69B2F9DD5573631BD5DAC3A89ED3B72408CF
-3382E8D7D320E54F9840DE9F9BAFD62467F6EB255CDBC6F65F78FF261307A6B9
-22880BD81DC9F8E0BB75EB76D6E2C6E79DA670AE73A485BC2A04D5C5D38F967B
-B4B344C3784ECD3FD72949A5F6FA2FEE6EA0FD4A766243CFFA595D5942B47314
-539BD1BEF3DF43974D27DAA7F264BC06B0BB10F7428C705E87444DF795468451
-FE9BD78D6240FE84BC91E90DAF07EE489B41219BD943C0DDF692EC3541D048E4
-A1756E18192B66AB1ABDCA6CCCA16AFB9A83E7B2DD15A9B79541459E8812F007
-C110E1D54EA6C4915A80A5BBD2F4FC7DE36430E9CE8BE5BE94691FD19D6E3FDE
-54A5C8AE8FA388B3C1EAE2526E8F4461FAED719967821CD4813AF968A9870521
-A67D20CAC4D8E3934C489E4B100E4019475ED77A417F2493D214752FE551FD34
-710BCCAABC0711354AA540AE18F68429EC2916635D47D5FA556BA8D538FC5289
-DFB9AB23C0AD3067DAF5476439F3B4C8EC62FAFD6E4E261BBD447F0759A8D729
-13A27DD2D85724CB2916B6394569303A6F533D9944F9B100C8BAFDB564869159
-E9195538F4595A211D5DC2FB57DE85CC88649BF18AB097413B786E09F6BB2771
-DC6BDA78ABAAB1181E594B5094AE9BADCB1FE21E7CDEE1E0E40AA7FE499E5886
-4609B8116CDAC2C8C45B05F16ACFAE78A4EEDE9C68B0374CB58BE18FC80CD462
-9C9C4B23F62076E030D5EBA290B95D821F67A7BE94BC8C6F060E6BFD401D6AE5
-107DACF218D20B053163C88E9ACC5BDD5D05CB9EB3173C43A90AED9BD317A486
-D888149E2CBDD54AA33F77CC3EC5D6EA0236AA047658EA16F6AE12BF091C1B00
-280D31767BF7AF49120D502D83EFE20600E962C634DD8E0B598921474FCB2AF2
-EB5F1CA1D1751A3624E4B18AE8A356E5A3DF1B958EBA821E97C6A5A04E03DB81
-66AB83A53C0951A073EB1922EB0E5A05FEFA035E6FD599CDC06818F72AA696B6
-D0EC5A54FACD824ACED809AB83C1DEF33241EE18222E2484B0320090014402D6
-B295E4F82BBC95A4C79AF6557FFE1431283A8DE009312ACF8274C39A05C1ED40
-2D0AB94D66A81AE677570B7AB2DF56653F97145016CEEC53AC87EC9CD5A2EBF5
-EDB185F5023BFD23D2B9BA9B020B3FB1822D0E8E254ECB5D22118EAFBD5F39D6
-07EE5886B33F2AF31E8A3C75D5DEB0696A28AC311810E1E66E59359F0982C3DF
-C2AFF5A235972164383190022C54ED5F8981711DAEAE88096538E8B6BB4E470F
-1BF8CBB3CEEDD6E3D1BB0ADA4D612145BC9ED3B52FA6A01CEE8B9179F271B15F
-301EC75005C2348CAA75C1642E6543FD339731BECE0A67905A3E81EBC5A5E030
-BD54164BF184A3935F067942D185E5CEB307988054DEC8723440D32CC23D1791
-7DB635CB7702340D017D39BE1701E31407A69F8967391559157EB91742BE025A
-87DE27A379E38D17F406A271204914C49BEDF793A74AA5C74155637A9E007000
-9AD8916844244C455BD5B304FF8480673C9D8601113ADEB0BE86945FB54A508C
-4D64DA4C25EE6EE2B3B78155EABC32B8E71F810FA060C17BC597F32ED4B130F7
-61B1A1BD8C0447B80D6F31F40BF191F6C4C050C61D789D874DD47334F131656F
-E3CD1B394A2660FDCB1A7B10B17D9782BA8C4BECD862890BAD2A66B639F50EC6
-2D4BF8CB3982DEAABF4F878D9387A7F342398D0B461904DE87F431245A0AEC80
-F173A97873120628BDC58104344754F7FA2B16CC5987E359DCC44F77255BAC8A
-A7463AAEFC9A40D602E5AFD8D5D15CB5FE58B1BE291F59FDD5649050ADAD2B0F
-3BDE9863B05E6C1F0A6E05A3F0E9B01D9B322BDEE4726DB323058FB9A89545C0
-F61290817966EB026A0E4AC9DDFADDC1B55D516D6F2805D5A0718C99ACCF8CE6
-24489AEC1ECF7ED37014E019B3D6D5D8BE843FC15298C830A7120EEB29F98560
-AC3BD89D386E89B5763248622409A9E81F53EB28B4C599623108B6E8D592D523
-EFAD785059228196ABA544FCBDAA6DFC6D588B6696DE280107628BAF618387C8
-7C1DFF4DF315A1256749B363C315C08559AB98E60906C2E00571C539895BF915
-5AEEA8F4045318C577256BBFBE714048950E4E63F9B63F8865BC22398182CC81
-F3451724D83E6808910A424486F6CD3E524A039294E6C5E3FF96658FF3C4C23F
-58C6F571EFEEEB86BC1B1EB2BE89406507E1F6ED15BA51CD9A09E3C1F2D40043
-CD44D67CACF8D0C9492DCEE5689AF373C30B3FEFE3422568225801A84352A805
-689518D114AE3A9BA5D63EFB8EFF26DAABBEF710A8833733E89F4E1B3034FA2D
-7B453EDAA5F856214601C13026E7B0F1234B22E027A6B4DE3DFFCCD6D364FD5A
-87A101955FF9A0979E713F90D86712F818CFF2A3DEF51B3CFB726A7BF8C78D41
-EC37523561B2C680A34152F5A0A22C719783D0E40B41EC46900557DFE2F3A57D
-09603EB1DC9DE4466E6E0CA30CA69FC8C4EBA49BF94B7E62DC43679BE296E663
-F8037ECB74443B404DE742E545A170B95125B6160A828FEDEA2E37C80210FB76
-D481EE94D11BCCFFA48C6AA292869ABEC53BA9CFE2EBAEADEC4CD47AF8696820
-30CA20A7F3C0CACC4FFD4F0E2C9E350C5D5376101C431F1C9227DA22D81B4398
-D8C531BE87AA709AC09621AEDE6920FA421B919DF506A94C8E9CBA4A1FC54886
-F4549E3A362E0AEE7CE551CF47835466CE2E166BEAE34912C91D17A5101B3348
-47F281CAE5AE5C64EC4D9EC8B9DEA78C3EB837368EDCDD9652BDA031213C5732
-BE3FE592CD1BDD9B377A2CE6B670C541C063FD3D6EDBFF477E1B01A4EFFCED17
-8F86853C6818347BFCCBF9E37DE6918D0FD561BCA8F498ABCDBCCEC4F84B04A9
-D65322BD3594AE0341919401F5A4B5D84E8E6E2844769947A50EBCABE57C1332
-2D11795496130C812835D63E77D9E45A3ECD74A79B3BD752C0738B3F6FC34479
-47FFEBD3C6F4DB9EC04C39CB3CB4C0519F5981BCBEBA4BE8999BEFDE19797B2A
-5DA18F6A37BE90B456D44AB87CFE8BEC3617ED255BE3D021AF8EF2DF6D6D2565
-7D45EF82415A4AAB7F1C98730D221C4E8CD2C56F9F56787E94B397E1BF8F9991
-3B0040457B48DEDFF2B147782E283106A0C52FA77357C82FCB41EE61A91AEB6D
-ACE6FDC42CF88A2C936475471D3B1893863517DC3DF894EE5B85041802919643
-EEF614A9AB2C45D94F2714DE653A76F0F4311D2AD4E4204A40732F30B15E554F
-54B171D60D397D0E83E42337A6AB85774AC300C9038E49BC897924AA284F84CE
-5B826C9AA9D0D2188FBC8B885DA0BC1F182AF225F8961FD789D764FDB363008E
-E29EBA9DE653EE05616CF99A3F4FB5B5B653ECF18E42BCDF61FCE91FCBEE4F12
-9B410ABA7C4BEEB7FB0F79DE24F9EB0A72938EFC6EBC18246A09E424A413A20F
-36B15A6D4B163813F81002B232FF01FF82D0470AB96546FAAC70CF6AF1B99ED7
-580E1BBA33C0C877FB602B654D44C26C3BDA8FBC67B52F7AD26F038E7115DEF5
-203740031DA96B2FA93D9265047E4A7659792315859B5CE4A614C55A3AE99B11
-9371008047C9781014746C64FC9AAC3DF4A732B7657AB16272DA193B435D5888
-A4BCDF4C39FBC3E6FF6C600EEF6DAD8FC31CDA3AC7C5DF9BC6A0DE49B647BA5E
-61066C9C07CA638A17CD671C9411B1D24FE806899A05548DD7FB3A524907ECB2
-DEF0CE38F0C3E48377589D46B678446C8E6E8EF83BB6414D0425DADC811C49E7
-809A3D5820F13E99CF0C6FF007AA987B9542E1BD7D6EF97B6E5CA4AD7CB55786
-E13AF335122BFCD8986802D16B466DA375C4A3ED5CFDC498AC9AC2CFA4E6C907
-B465707DE1CA5A1B3C936318071A90B88FBF7E190487452EB215AF6B2C9BAF15
-451E680B92F54F627FB43013DA282C1A87C7FCFEAF1DCD5E00E0B4A53AD36746
-BCB6EFB05CA14B81DE02D82B8D63D86821D0DEBDD391FDFBCD11B35065702F22
-AFD4DFAE5C33334E56071A569E3EC107D1D6F23283009E2FC66DBA6F266D7E73
-8DD44071DFED2EDE3018B7420BDB5C6F69812F340D37442F6FB7783C56D585E8
-C91E6C90868605F7D10E33250584B3C087C9BDEC415481434E42B3A5554EA4D6
-C69399CB7C8A50C0B0601DCA76C4BE27D96DD8E55A481FD5ACFF23B19D6C3887
-8DC8049CFC1B48D1DBEC9AAEA5AE4228BF0CA94E164569AD1B73905D223A49DF
-08A2F980B19AF707C08FF96187FFA0248D20269DA56752B2F968B2EB3FC38A7B
-91B879F6553F6792EE50968FF201C936F1E5B945D4D65218D05E6A4AD5765E88
-7DFCE3E3F57B42C9757B5276357203F6A2E5025CB6CFF1F1A893DF2E657B0A25
-B4DAA0BC6D6751EC4BBCECEAB27AA77C0FF099164CA841386D059FF60D6D8146
-351AD5D23D27C3496786F90A516C93EFA4062191870E93A91A72447904BC846B
-89C242D664B955B6C656CB8C8F11B2A06F1498B8B74F93835A5EB2C8EA36F0D9
-8EAE3AB5FB6B5E926CB65353D85D9FAFBA144522A504AED596A9B8C6D4F7B4EE
-A444BC0D3AD9E1D1D91E22FAAB07239BBB783F962B3FE7D7876AE1472E1821AE
-13C8C882068CFE3B9234C635F6A876185457C2798517656CF6C63433DEEF56DF
-42E7C144289BA6088886A7E9A4D06CD351FCF3F092E8B524E1EFD0141F388C44
-D2DD0AD39455CD711B277A4EB48F529056F1A8414F3FC6BADC1847013249BE94
-C87D039799E50B425A667656D0D1B6C5F0BAFE9B52743F65BD21BEE1572B4A4D
-C1851FD63D04C23FB6D89726602927BC5DE41DCBAC8C955D13374B6851087050
-13AEFE81265873BEC944A3720266E39005F6E977CFEB184FB7A0BEE08916FE4E
-E1CD78C562AB8195A9F8AAD6F1437147D4DD21AACA15AF0D2DF879EF0B0952D2
-70AE5111781B44EC4F177681003F2552E5C558FF42A88D8EE81EA8D83932D374
-326694AE6CE515E512F27BE77FAFA7E089AD9AA9E1DDAA93EEDA29CE9D18EFE7
-ED18084EFA2698BBA1E96CAF728D41BBD1837D1372F281EE6E30CAFCE21C545B
-BA7D5664578A5ED820CDB949F35CBE1AC7F4DD4BC499A967032DDDF7B38F07DF
-403E80EE747FE4714E423048C294A37E5F11C3FB84A27A975CD8D726B05BA79B
-F036DC5358521B45DD9B2781AC0E203C9417501ACCD0E7E647D363A6B0AB8653
-F60EA49B599502967EB71CB3221B380C3740AE50C98575BFBBF7D7984C4D50B2
-42BD737B55DD326E58DE120619AB1E04F36EEF042D4628D5FD7AF49AEA6CB109
-A7ABD31E974582B57F3F3468329FC9CB445F2FA029919574AA6A692CC1018FAB
-F26A52E7FD2F763CA5805CE7E99E373443054611B64FB84534D402FC0BD98494
-8206AB6C38F72479D7B50BB316EDA00329C9F609B6029587B4082098DFF3F90B
-65D2648FF6DED8512A09F31B38F8C0DFB0FE748ED1E0E145DF48BFB1C4853667
-2ED28696588B493FC0DD84BA9A11A363754708E6C8527881183759955D6CA812
-8B205ABF3ECFC805B66D465651588CD0A86EB14BC310DD844001011CC962D488
-3ACE72467CAAB98048D8991C969519B9AE06A68B7C048CE5D046E1DB0AABE05A
-59B9A3BECB0FAA93FC7110FF74307479F97E03DE5D1F80F681FA93E7D91877E5
-9D23309F58DCA4EB201E8AF6FD6D6EB9897CE153BB250F86D8F3CE1007B792CF
-6A3EC05B2F34DA379227D825E53827E0ADE5E1A00C5427A0A506DF38413B9D97
-2C3B06CE0DBA5CC18013EDCB264259B5092C604020BE1DE8B103B2455B65036F
-4553B985F4D3ADC4D1DE6A4D94E0834C27107AA542DA4B50647FC6CE8F92DBCA
-CFBFE06D8932943A9488D845CB472F6813BA8AADDB46E777A19696D9660AE959
-C46B8AC088FE7033596880D118559A00EC65E57BBF38BC8BB1D37E5CC17F2FF8
-EE32B64A1A6AFE09A9FE92B689B361AB661E15EA5B4732965AE1F1B2C9E57250
-0E3C8DDD1FF345B463FA9726DB100821B7AAB87312EDE945F7A9E957FE854B8C
-1EB327E2EF7B8789D4A6BCB83E2B2E8DC574682E9EA7013E533B8C274AA80D4E
-6D5D627F0FDA0F448951F86F2B1B949B1E6B63A27934279A8DC20F6E53022103
-13C260ADC4A59CC7025FB9CA46860F56863C43DF1F7153A4DB487015FAC86D8B
-3F5B2D367124C046A4BCF34CA4A5E4E9D4D66FA281FA3C1CE37EE5FAC45536CA
-613415BF9153E4DACD2D0C724784266239609DFB704910E4500E7DA0C013320F
-E8057DD810A80B05BF1424583FC80DCE947D71163591D5626427A56F86709F1A
-A0C79047AADF1F728CB3E0E3D543ECC57D01D15F3F6D6BC2DD1747225E6B96D5
-55C88355ACD023EACA812A4EB45DED441F7E8A331B2C7B42F1263DAA9B4AFFE3
-EBFD8B3765BE2F32B854F093365AF1D8E3A79CA8821E48804BC236AD451CD77A
-A963A3F4DF057BEE08325B7AF10F6F9BEEA0CBE417E11CCF938B406D18B46DC8
-6DBC21FACD39B7710DA727395C392E48A7130EA29763AF33E90CAA9F9090DD1E
-124F03E572E0C5EC38C1A6BD523C23C2AF3A6BAA496A924DE9D97BD6C9E0E623
-517CCB20C6AC4440569C0FFDFC0E0821764380D053F4D9333E7F5BCD6637CDD9
-AFDC976608CCCB9DC49ADE08EBE7B419057ACFD48B0E9CAEE20443BAB4C1C161
-8048ED08F9A0CECDE0D94B85779A880668956FDD681FF018700F1BDEB49F0828
-E70772706565C3CEC6C94B913ED78D8352AD29CD653C0B80EB1E6E76AB1DF6AB
-D5AE84308424CA2BF93C45AF765E12616A566B4609FBBD87DBC6BD5896AE40C6
-2D528C2C9165691907B5ED69FC53F93DEF513A8E64338FFFC26F073E91B92419
-51C3C2C8E9AF834831B41FD625E9812DAF2827718CCFB0949AD120706FAE3122
-F226837C2B73092B818BD79540297C90A07C0346C49AE18EC308659C29433BB4
-984C48F2C7E6FDAFF477105BB8163F18CB481FBAB81DE74EAA35E00A455865F8
-B080700293E48CEB400D55C2047179F81EB61E7A4C1659D3B37A50C1AD209818
-ACDD53606E4C85F6908CAD471377ADA7CD7BC6A376149FB893AC887669B54211
-E517D258D00230D18FAD210ADB70887F4EF0E160ADCBD98175AAADFF46A80E3C
-DDCD1BC01818B07BFD5C60879B1C74680D50B6042DC2C34D80F2246F02FADCA3
-74E3FF1AECFADCB4AC56713DC0213E88884B3B134239ABBD6713CD125E550DC9
-01185F92568116B22AB8A7EA97A960A3A8139722BAE73AA974F328CE7F6A1FC4
-429E8940A8E6DD487132183A247D82163643DF9764FF7C7B24CDC697806D8EA8
-D6EF17A9A6513B6529C5C02D91E12C75D947D5C22CA0CEF9C181546C60721E99
-D311803BA34199AF08B60320B8AC80675850BE627B0D693B454BCE8713239F13
-DA936F65E346E109BF9FD23D79C192CC8BFDABE1A3F775521F9006D4EC367025
-39197B2828A65CA529A3E32EE34D0CEA255FE45D14ACA58AAA182DEFB43D57C3
-E2ED54233B99C14552907A3B7B5657A25AB168A4CA14E7AE4602273F1E635E0B
-07BB52D431967AEF3730DB8D906C3D7ED324AC0BA702C592034EB22E03BFAF55
-D392C151AE40E7DB6843157886719DD0BFCF05F1CC117BB3D792CE8148B3A94A
-1D7A44EDDB0514B70CA4684D3AAA2D19B0869CCC876A29577F4A1936B82C6485
-8CC1E5135A87A231DDF61AC2066C4C886CBDB6119C07E9B92004A6778493C1E9
-722202A4C51F0567B968358CE607FCA6211F0676EDE95B54EF552C893D34CCD6
-D5E691273BD44921D0D4FBF132584C97BC9565929B87CC2B15D5572B82678684
-9B19C2264C1B62291A95CDE2EDC389A462BCD523B0175CF4337FD4FBB35ADA7E
-39EEB5574CDA8D184C0C469943C0954B8E164273AD322AC85A6527B9D60C7365
-49ADA41EEE1FD501DDC9D2941031F452729DD5FAA668744E9383E1D97684ADEC
-2E9E01767C2AE384F2541969853B1D3E6684A4DBC8BAF5B1F6ADEC835E71A174
-4B42C5409564BB14A7250256641F5F1A3D2705275504B446871CED22C5EE9EF8
-8F04764AE0543ECDAA0C03A6E47884917E24373299A21C04A9E4451F4D95CC75
-6B974D4B696CDE7CF77C057C484B630B1F5BCA8B92D92711BC3AF66057289F9F
-160E37C620786A9669A5543F8DC7A793CE036EC5F0B50652457D07D29FD519B4
-1DDC8FB57971D463E17CA1229451B92951A72C0A38A118728ADEA4BCA11D0B06
-FCBBF5DCB2379F3754132CF931F75A4A4F9A05184095139C816DDF42186AB91A
-6066F2A735FE1AFD4C62BCA94815543162ED39BEFD27FE2557E95032D3C60DC1
-A490F8511076D01F09140B1BE0124854B5C735ECE78B4FC65EAB8A0B82EDA7C0
-D761EAAD7639E43DA499B8E49E3D76F58CD32D66E644DD96A48E53A9B6B68708
-92AD96710E541BAD4A50E988A6E93005B564CC6AB41ECAF4374EF72595DA4654
-7D56C78F52A2E8B27CADA9F38BC7F75972C1593C15BA654F1AEC2458FE43FC19
-75956C25D4737F03FBBA4C076BC34ED40B3533399493D01AC036AEC356B49CFC
-DC980360DE2E9EF4ACB75D0D8BF34899AFF80B9476E64A87CC6ECEB715F23198
-AAA031503D55EB84AA5F3D97EDD85CF7F6E644DB7D7596BFC42E407A1705CEA2
-7F24E45978B72E8F018F6B8F275DD9E0AF546C972C6110855E936D14EC2D1700
-969D0ED6EB2C37F6C429357C16D59726D9FCE4CF792B729BFCD874BA2F37C8B9
-39F7734BC26C655CF7944735CBD306A4E41ACE55A8B8ABEDDB7BF88DAF740724
-153B00E9D01D1521D8A31D84084400F7E9DDC8BFF01F0FA3C94FB90B8C4D986E
-7040E699D1ED05552D9FBE7DAC62EB04F1063B77823C59FC7D27AC8173BD67C1
-8AF04A96583E42E9AE80B2611CDE096AC85C8BF3FB68D93B2C4640D6322092D7
-969CAD03AF415832865F099366C32882093636F41496AA211D33B02F8C1F01A7
-A2E8BD10674DE3EC793D8ECDFF1B69B548D9B36423303C4A279AD5F79D3A6DAB
-9351311E63067307D9386C41E2E2BEEAD6FF3BEECB6E7875B3790BC7A0D3C361
-D5218F675E01EAB6A1E8CC077139D95519AC6535E1FD50D3EF01801CA33937A7
-3E6E1E2F0D514CC44A40F2DA6D870187CFD474E6EA463389F54FB807611F9F1B
-23D6741DF2AAC454F7C8C71132C776DFD32307EEC21F62AE4F1AD577925991F6
-43ECF07F727D1C38AD553835A8AB564EAF17BFA25BF397FEB7DAA538CA0C60F6
-E1BD196AE9006D5472C6061129CE765B830A2C1D05577211529F4DE24D66A461
-3F87119D9D5F94BF7928C46037E92BB5A224F903F9A2CEB7ECEF82AB711D6942
-390E707E9D4EC9EDA06A0572DE2148529B28CD61CD9E7370ADC669183542FDF0
-C950B6C36571E430AC41F91BB3D8D008865C580DB05109364B7ABC8E573B688B
-6639BC11AC29EC5AF3DA7067EFC9A02D82F80A2E9619DE1BB6333671E83F124B
-2FB73369DD75B2CEF11A13EEDC6A315F979DD31B69D28C07A10031D697646074
-5057EBA048400819D019A415B92626A8FE0F7E656C1A67FB5CBD0E6A4DA6A4B8
-93731F9238C3DC76E650EBAF3C04B848ACD7C5117F06542CAFBEC1F371680013
-A32B9E2F04B4FDA9C27AAB816AE2C1B073C66691CC615CD1B2B92A134884436F
-684767901BEC57491C9B63FE315E877FC37699B3CE91F2FC0CE561FAB61ABCCB
-928FD9BE8BD3F7188CE9ABA2D39835375639ED43E433E353CE6A044CA11BE1E5
-0545041CFE6647238D4A6965A48FFD085A11E80FBD1143AF5642056ABBE3CEF7
-D1E1582397FB4C4A5DD49927F657F42F9B53A5322DCA588BB81D4B84FD2093BC
-D506A865CD72AE19674EEF23D14129DA5585CF8698F3E674ABF2A4D921035F1D
-C95915D310FF7ADD4437F8AE3788AEE7BAC66E1E9B8257A4EC26984249E981C6
-F1A15E2907118EE1B0AE8FF54D22E5D4CE4D4F9A7750E8AD53D229860A6D82CA
-E552EA045E82300C0C81183A66CA73742E0AF4415FEA09956B769B1DB61A8D6F
-FC2B26AEF28D566B38EDEBAC9D2D49213738A2AF90C1C1BA0E7AE50E9BD424D9
-B66411138280D7BDE5D23A23C8C5598AADF95F62B4AD41DDE7614971C5D281C6
-793D551B623E4F5677A48011DE7D634DBF6D39E501E701A0D79022A7E70C9367
-53212CFD9BA8606E49AED8E7722084A726909DC41406CAEE54B481FF2D95A5C2
-61EE3CD752E53C2EDA71955734256863E98C0B1BFE3E2440D5A8973E324641A2
-147C4F16AC694F327DE5BF01ACD163007F410E7BA5D42948
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 52099146 40258431 1000 600 600 (calccard.dvi)
-@start /Fa 135[38 21[29 74[33 23[{}3 58.1154 /CMMI7 rf
-/Fb 204[28 28 28 28 48[{}4 41.511 /CMR5 rf /Fc 145[37
-31[45 19[19 58[{}3 41.511 /CMMI5 rf /Fd 143[59 75[71
-35[55{}3 66.4176 /CMSY8 rf /Fe 135[40 9[43 20[41 5[43
-4[56 3[39 12[35 2[20 32[41 6[33 18[{}10 66.4176 /CMMI8
-rf /Ff 134[35 33 1[33 3[30 1[36 36 40 1[18 33 5[33 2[33
-36 52[22 31[40 12[{}14 66.4176 /CMTI8 rf /Fg 242[61 13[{}1
-49.8132 /CMSY6 rf /Fh 134[32 1[43 32 34 24 24 24 1[34
-30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 11[45 1[34
-2[41 1[45 54 3[22 1[47 39 41 46 43 42 45 9[30 1[30 1[30
-30 30 30 1[18 21 18 44[{}44 49.8132 /CMR6 rf /Fi 134[43
-4[32 32 34 5[23 2[23 1[41 1[37 1[36 45 40 14[61 1[55
-1[63 19[23 58[{}15 66.4176 /CMBX8 rf /Fj 130[35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 33[{}92
-66.4176 /CMTT8 rf /Fk 134[60 60 1[60 64 45 45 47 1[64
-57 64 95 32 60 1[32 64 57 35 53 64 51 64 56 10[87 88
-80 64 86 1[78 86 90 5[90 90 72 75 88 83 1[87 25[32 26[64
-12[{}39 99.6264 /CMBX10 rf /Fl 133[31 37 37 51 37 39
-27 28 28 37 39 35 39 59 20 37 22 20 39 35 22 31 39 31
-39 35 4[35 3[53 72 53 53 51 39 52 1[48 55 53 65 44 2[25
-53 55 46 48 54 51 50 53 5[20 20 6[35 35 35 35 35 20 24
-20 2[27 27 20 4[35 18[59 1[39 39 41 11[{}66 66.4176 /CMR8
-rf /Fm 141[57 3[76 1[38 5[42 63 76 61 1[67 11[106 2[103
-3[108 6[108 3[99 67[{}13 119.552 /CMBX10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
- @landscape end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin @landscape 1 0 bop -297 -364 a Fm(GNU)45
-b(Calc)h(Reference)g(Card)264 -256 y Fl(\(for)23 b(v)n(ersion)h(2.1\))
--450 -49 y Fk(Starting)37 b(and)g(Stopping)-450 117 y
-Fl(start/stop)25 b(standard)g(Calc)674 b Fj(C-x)36 b(*)g(c)-450
-196 y Fl(start/stop)25 b(X)e(k)n(eypad)j(Calc)651 b Fj(C-x)36
-b(*)g(k)-379 276 y Fl(start/stop)25 b(either:)31 b Fj(C-x)c(*)f(*)-450
-356 y Fl(stop)e(standard)h(Calc)855 b Fj(q)-450 464 y
-Fl(Calc)24 b(tutorial)1048 b Fj(C-x)36 b(*)g(t)-450 544
-y Fl(run)23 b(Calc)h(in)g(other)g(windo)n(w)650 b Fj(C-x)36
-b(*)g(o)-450 623 y Fl(quic)n(k)24 b(calculation)h(in)e(minibu\013er)499
-b Fj(C-x)36 b(*)g(q)-450 828 y Fk(Getting)h(Help)-450
-951 y Fl(The)24 b Fj(h)g Fl(pre\014x)g(k)n(ey)g(is)f(Calc's)g(analogue)
-j(of)d Fj(C-h)h Fl(in)g(Emacs.)-450 1059 y(quic)n(k)g(summary)f(of)h(k)
-n(eys)734 b Fj(?)-450 1139 y Fl(describ)r(e)24 b(k)n(ey)g(brie\015y)846
-b Fj(h)26 b(c)-450 1219 y Fl(describ)r(e)e(k)n(ey)g(fully)902
-b Fj(h)26 b(k)-450 1298 y Fl(describ)r(e)e(function)g(or)g(command)507
-b Fj(h)26 b(f)-450 1378 y Fl(read)e(on-line)f(man)n(ual)827
-b Fj(h)26 b(i)36 b Fl(or)f Fj(C-x)27 b(*)f(i)-450 1458
-y Fl(read)e(full)e(Calc)i(summary)714 b Fj(h)26 b(s)36
-b Fl(or)f Fj(C-x)27 b(*)f(s)-450 1660 y Fk(Error)39 b(Reco)m(v)m(ery)
--450 1826 y Fl(ab)r(ort)24 b(command)h(in)e(progress)594
-b Fj(C-g)-450 1905 y Fl(displa)n(y)24 b(recen)n(t)g(error)f(messages)
-543 b Fj(w)-450 1985 y Fl(undo)24 b(last)g(op)r(eration)839
-b Fj(U)-450 2065 y Fl(redo)24 b(last)g(op)r(eration)858
-b Fj(D)-450 2144 y Fl(recall)23 b(last)h(argumen)n(ts)799
-b Fj(M-RET)-450 2224 y Fl(edit)24 b(top)h(of)e(stac)n(k)937
-b Fj(`)-450 2304 y Fl(reset)24 b(Calc)g(to)g(initial)f(state)672
-b Fj(C-x)36 b(*)g(0)f Fl(\(zero\))-450 2511 y Fk(T)-10
-b(ransferring)38 b(Data)-450 2676 y Fl(grab)24 b(region)g(from)e(a)i
-(bu\013er)664 b Fj(C-x)36 b(*)g(g)-450 2756 y Fl(grab)24
-b(rectangle)h(from)d(a)i(bu\013er)574 b Fj(C-x)36 b(*)g(r)-450
-2836 y Fl(grab)24 b(rectangle,)g(summing)g(columns)404
-b Fj(C-x)36 b(*)g(:)-450 2915 y Fl(grab)24 b(rectangle,)g(summing)g(ro)
-n(ws)515 b Fj(C-x)36 b(*)g(_)-450 3024 y Fl(y)n(ank)25
-b(data)f(to)h(a)e(bu\013er)786 b Fj(C-x)36 b(*)g(y)-450
-3132 y Fl(Also,)23 b(try)g Fj(C-k)p Fl(/)p Fj(C-y)j Fl(or)d(X)h(cut)g
-(and)g(paste.)-450 3339 y Fk(Examples)-450 3461 y Fl(In)34
-b(RPN,)g(en)n(ter)g(n)n(um)n(b)r(ers)g(\014rst,)i(separated)f(b)n(y)g
-Fj(RET)f Fl(if)f(necessary)-6 b(,)-450 3541 y(then)35
-b(t)n(yp)r(e)g(the)g(op)r(erator.)62 b(T)-6 b(o)34 b(en)n(ter)h(a)f
-(calculation)h(in)f(algebraic)-450 3621 y(form,)22 b(press)i(the)g(ap)r
-(ostrophe)h(\014rst.)23 3729 y Fi(RPN)j(st)n(yle:)346
-b(algebraic)26 b(st)n(yle:)-379 3809 y Fl(Example:)113
-b Fj(2)36 b(RET)g(3)g(+)423 b(')36 b(2+3)g(RET)-379 3888
-y Fl(Example:)113 b Fj(2)36 b(RET)g(3)g(+)f(4)h(*)282
-b(')36 b(\(2+3\)*4)h(RET)-379 3968 y Fl(Example:)113
-b Fj(2)36 b(RET)g(3)g(RET)g(4)f(+)h(*)141 b(')36 b(2*\(3+4\))h(RET)-379
-4048 y Fl(Example:)113 b Fj(3)36 b(RET)g(6)g(+)f(Q)h(3)f(^)212
-b(')36 b(sqrt\(3+6\)^3)i(RET)-379 4127 y Fl(Example:)113
-b Fj(P)36 b(3)f(/)h(n)g(S)423 b(')36 b(sin\(-pi/3\))i(RET)e(=)-358
-4311 y Fh(c)-375 4313 y Fg(\015)21 b Fh(2007)h(F)-5 b(ree)22
-b(Soft)n(w)n(are)g(F)-5 b(oundation,)20 b(Inc.)27 b(P)n(ermissions)21
-b(on)g(bac)n(k.)28 b(v2.1)1746 -364 y Fk(Arithmetic)1746
--198 y Fl(add,)c(subtract,)g(m)n(ultiply)-6 b(,)23 b(divide)503
-b Fj(+)p Fl(,)39 b Fj(-)p Fl(,)f Fj(*)p Fl(,)h Fj(/)1746
--119 y Fl(raise)23 b(to)h(a)g(p)r(o)n(w)n(er,)g Ff(n)5
-b Fl(th)24 b(ro)r(ot)642 b Fj(^)p Fl(,)39 b Fj(I)26 b(^)1746
--39 y Fl(c)n(hange)f(sign)1085 b Fj(n)1746 41 y Fl(recipro)r(cal)24
-b(1)p Fe(=x)1006 b Fj(&)1746 120 y Fl(square)24 b(ro)r(ot)2119
-72 y Fd(p)p 2178 72 40 3 v 48 x Fe(x)968 b Fj(Q)1746
-229 y Fl(set)24 b(precision)1059 b Fj(p)1746 308 y Fl(round)24
-b(o\013)g(last)g(t)n(w)n(o)g(digits)700 b Fj(c)26 b(2)1746
-388 y Fl(con)n(v)n(ert)f(to)f(fraction,)g(\015oat)688
-b Fj(c)26 b(F)p Fl(,)39 b Fj(c)26 b(f)1746 496 y Fl(en)n(ter)e(using)g
-(algebraic)g(notation)522 b Fj(')36 b(2+3*4)1746 576
-y Fl(refer)23 b(to)h(previous)g(result)737 b Fj(')36
-b(3*$^2)1746 656 y Fl(refer)23 b(to)h(higher)g(stac)n(k)g(en)n(tries)
-593 b Fj(')36 b($1*$2^2)1746 735 y Fl(\014nish)24 b(alg)f(en)n(try)i
-(without)f(ev)l(aluating)377 b Fj(LFD)1746 815 y Fl(set)24
-b(mo)r(de)g(where)g(alg)g(en)n(try)g(used)g(b)n(y)g(default)166
-b Fj(m)26 b(a)1746 1018 y Fk(Stac)m(k)37 b(Commands)1746
-1141 y Fl(Here)24 b Fe(S)1956 1149 y Fc(n)2020 1141 y
-Fl(is)f(the)h Fe(n)p Fl(th)g(stac)n(k)h(en)n(try)-6 b(,)24
-b(and)g Fe(N)31 b Fl(is)23 b(the)h(size)g(of)f(the)i(stac)n(k.)1817
-1235 y Ff(key)216 b(no)26 b(pr)l(e\014x)259 b(pr)l(e\014x)27
-b Fe(n)292 b Ff(pr)l(e\014x)26 b Fd(\000)p Fe(n)1817
-1315 y Fj(RET)212 b Fl(cop)n(y)25 b Fe(S)2342 1323 y
-Fb(1)2663 1315 y Fl(cop)n(y)g Fe(S)2871 1323 y Fb(1)p
-Fc(::n)3193 1315 y Fl(cop)n(y)f Fe(S)3400 1323 y Fc(n)1817
-1394 y Fj(LFD)212 b Fl(cop)n(y)25 b Fe(S)2342 1402 y
-Fb(2)2663 1394 y Fl(cop)n(y)g Fe(S)2871 1402 y Fc(n)3193
-1394 y Fl(cop)n(y)f Fe(S)3400 1402 y Fb(1)p Fc(::n)1817
-1474 y Fj(DEL)212 b Fl(delete)25 b Fe(S)2381 1482 y Fb(1)2663
-1474 y Fl(delete)g Fe(S)2910 1482 y Fb(1)p Fc(::n)3193
-1474 y Fl(delete)g Fe(S)3440 1482 y Fc(n)1817 1554 y
-Fj(M-DEL)142 b Fl(delete)25 b Fe(S)2381 1562 y Fb(2)2663
-1554 y Fl(delete)g Fe(S)2910 1562 y Fc(n)3193 1554 y
-Fl(delete)g Fe(S)3440 1562 y Fb(1)p Fc(::n)1817 1633
-y Fj(TAB)212 b Fl(sw)n(ap)24 b Fe(S)2352 1641 y Fb(1)2384
-1633 y Fd($)p Fe(S)2498 1641 y Fb(2)2663 1633 y Fl(roll)f
-Fe(S)2832 1641 y Fb(1)2888 1633 y Fl(to)h Fe(S)3017 1641
-y Fc(n)3193 1633 y Fl(roll)e Fe(S)3361 1641 y Fc(n)3425
-1633 y Fl(to)j Fe(S)3555 1641 y Fc(N)1817 1713 y Fj(M-TAB)142
-b Fl(roll)23 b Fe(S)2303 1721 y Fb(3)2358 1713 y Fl(to)i
-Fe(S)2488 1721 y Fb(1)2663 1713 y Fl(roll)e Fe(S)2832
-1721 y Fc(n)2896 1713 y Fl(to)h Fe(S)3025 1721 y Fb(1)3193
-1713 y Fl(roll)e Fe(S)3361 1721 y Fc(N)3438 1713 y Fl(to)i
-Fe(S)3567 1721 y Fc(n)1746 1821 y Fl(With)g(a)g(0)g(pre\014x,)g(these)g
-(cop)n(y)-6 b(,)25 b(delete,)f(or)f(rev)n(erse)h Fe(S)3211
-1829 y Fb(1)p Fc(::N)3331 1821 y Fl(.)1746 2024 y Fk(Displa)m(y)1746
-2190 y Fl(scroll)f(horizon)n(tally)-6 b(,)24 b(v)n(ertically)569
-b Fj(<)36 b(>)p Fl(,)i Fj({)e(})1746 2270 y Fl(home)24
-b(cursor)1063 b Fj(o)1746 2349 y Fl(line)23 b(n)n(um)n(b)r(ers)h
-(on/o\013)837 b Fj(d)26 b(l)1746 2429 y Fl(trail)d(displa)n(y)h
-(on/o\013)862 b Fj(t)26 b(d)1746 2537 y Fl(scien)n(ti\014c)f(notation)
-894 b Fj(d)26 b(s)1746 2617 y Fl(\014xed-p)r(oin)n(t)f(notation)828
-b Fj(d)26 b(f)1746 2697 y Fl(\015oating-p)r(oin)n(t)f(\(normal\))f
-(notation)450 b Fj(d)26 b(n)1746 2776 y Fl(group)e(digits)g(with)f
-(commas)640 b Fj(d)26 b(g)1746 2885 y Fl(F)-6 b(or)28
-b(displa)n(y)g(mo)r(de)g(commands,)h Fj(H)f Fl(pre\014x)h(prev)n(en)n
-(ts)g(screen)f(redra)n(w)1746 2964 y(and)c Fj(I)g Fl(pre\014x)g(temp)r
-(orarily)f(redra)n(ws)h(top)g(of)f(stac)n(k.)1746 3168
-y Fk(Notations)1746 3333 y Fl(scien)n(ti\014c)i(notation)894
-b Fj(6.02e23)1746 3413 y Fl(min)n(us)23 b(sign)h(in)f(n)n(umeric)h(en)n
-(try)577 b Fj(_23)71 b Fl(or)g Fj(23)36 b(n)1746 3492
-y Fl(fractions)1175 b Fj(3:4)1746 3572 y Fl(complex)24
-b(n)n(um)n(b)r(ers)903 b Fj(\()p Ff(x)p Fj(,)36 b Ff(y)p
-Fj(\))1746 3652 y Fl(p)r(olar)23 b(complex)i(n)n(um)n(b)r(ers)720
-b Fj(\()p Ff(r)p Fj(;)36 b Fe(\022)r Fj(\))1746 3732
-y Fl(v)n(ectors)25 b(\(commas)f(optional\))625 b Fj([1,)36
-b(2,)g(3])1746 3811 y Fl(matrices)24 b(\(or)f(nested)i(v)n(ectors\))582
-b Fj([1,)36 b(2;)g(3,)g(4])1746 3891 y Fl(error)23 b(forms)f(\()p
-Fj(p)i Fl(k)n(ey\))857 b Fj(100)36 b(+/-)g(0.5)1746 3971
-y Fl(in)n(terv)l(al)24 b(forms)1013 b Fj([2)36 b(..)g(5\))1746
-4050 y Fl(mo)r(dulo)24 b(forms)e(\()p Fj(M)j Fl(k)n(ey\))776
-b Fj(6)36 b(mod)g(24)1746 4130 y Fl(HMS)23 b(forms)1088
-b Fj(5@)36 b(30')g(0")1746 4210 y Fl(date)25 b(forms)1111
-b Fj(<Jul)36 b(4,)g(1992>)1746 4290 y Fl(in\014nit)n(y)-6
-b(,)24 b(indeterminate)757 b Fj(inf)p Fl(,)39 b Fj(nan)3942
--364 y Fk(Scien)m(ti\014c)d(F)-10 b(unctions)3942 -198
-y Fl(ln,)23 b(log)4134 -190 y Fb(10)4195 -198 y Fl(,)g(log)4328
--181 y Fa(b)5382 -198 y Fj(L)p Fl(,)39 b Fj(H)26 b(L)p
-Fl(,)39 b Fj(B)3942 -119 y Fl(exp)r(onen)n(tial)25 b
-Ff(e)4353 -142 y Fa(x)4395 -119 y Fl(,)e(10)4508 -142
-y Fa(x)5382 -119 y Fj(E)p Fl(,)39 b Fj(H)26 b(E)3942
--39 y Fl(sin,)d(cos,)g(tan)1072 b Fj(S)p Fl(,)39 b Fj(C)p
-Fl(,)f Fj(T)3942 41 y Fl(arcsin,)23 b(arccos,)h(arctan)789
-b Fj(I)26 b(S)p Fl(,)39 b Fj(I)26 b(C)p Fl(,)39 b Fj(I)27
-b(T)3942 120 y Fl(in)n(v)n(erse,)c(h)n(yp)r(erb)r(olic)h(pre\014x)g(k)n
-(eys)513 b Fj(I)p Fl(,)39 b Fj(H)3942 200 y Fl(t)n(w)n(o-argumen)n(t)25
-b(arctan)796 b Fj(f)26 b(T)3942 280 y Fl(degrees,)e(radians)f(mo)r(des)
-732 b Fj(m)26 b(d)p Fl(,)39 b Fj(m)26 b(r)3942 359 y
-Fl(pi)d(\()p Fe(\031)r Fl(\))1261 b Fj(P)3942 468 y Fl(factorial,)23
-b(double)h(factorial)664 b Fj(!)p Fl(,)39 b Fj(k)26 b(d)3942
-547 y Fl(com)n(binations,)e(p)r(erm)n(utations)584 b
-Fj(k)26 b(c)p Fl(,)39 b Fj(H)26 b(k)h(c)3942 627 y Fl(prime)c
-(factorization)855 b Fj(k)26 b(f)3942 707 y Fl(next)f(prime,)d
-(previous)i(prime)604 b Fj(k)26 b(n)p Fl(,)39 b Fj(I)26
-b(k)h(n)3942 787 y Fl(GCD,)c(LCM)1077 b Fj(k)26 b(g)p
-Fl(,)39 b Fj(k)26 b(l)3942 866 y Fl(random)e(n)n(um)n(b)r(er,)f(sh)n
-(u\017e)711 b Fj(k)26 b(r)p Fl(,)39 b Fj(k)26 b(h)3942
-946 y Fl(minim)n(um,)c(maxim)n(um)799 b Fj(f)26 b(n)p
-Fl(,)39 b Fj(f)26 b(x)3942 1054 y Fl(error)d(functions)h(erf,)e(erfc)
-728 b Fj(f)26 b(e)p Fl(,)39 b Fj(I)26 b(f)h(e)3942 1134
-y Fl(gamma,)d(b)r(eta)g(functions)735 b Fj(f)26 b(g)p
-Fl(,)39 b Fj(f)26 b(b)3942 1214 y Fl(incomplete)f(gamma,)e(b)r(eta)i
-(functions)378 b Fj(f)26 b(G)p Fl(,)39 b Fj(f)26 b(B)3942
-1293 y Fl(Bessel)d Fe(J)4192 1301 y Fa(\027)4233 1293
-y Fl(,)g Fe(Y)4317 1301 y Fa(\027)4382 1293 y Fl(functions)720
-b Fj(f)26 b(j)p Fl(,)39 b Fj(f)26 b(y)3942 1402 y Fl(complex)e
-(magnitude,)h(arg,)e(conjugate)360 b Fj(A)p Fl(,)39 b
-Fj(G)p Fl(,)f Fj(J)3942 1481 y Fl(real,)23 b(imaginary)g(parts)795
-b Fj(f)26 b(r)p Fl(,)39 b Fj(f)26 b(i)3942 1561 y Fl(con)n(v)n(ert)f(p)
-r(olar/rectangular)649 b Fj(c)26 b(p)3942 1768 y Fk(Financial)36
-b(F)-10 b(unctions)3942 1933 y Fl(en)n(ter)24 b(p)r(ercen)n(tage)935
-b Fj(M-\045)3942 2013 y Fl(con)n(v)n(ert)25 b(to)f(p)r(ercen)n(tage)778
-b Fj(c)26 b(\045)3942 2093 y Fl(p)r(ercen)n(tage)g(c)n(hange)879
-b Fj(b)26 b(\045)3942 2201 y Fl(presen)n(t)e(v)l(alue)1037
-b Fj(b)26 b(P)3942 2281 y Fl(future)e(v)l(alue)1072 b
-Fj(b)26 b(F)3942 2360 y Fl(rate)e(of)f(return)1023 b
-Fj(b)26 b(T)3942 2440 y Fl(n)n(um)n(b)r(er)e(of)f(pa)n(ymen)n(ts)812
-b Fj(b)26 b(#)3942 2520 y Fl(size)e(of)f(pa)n(ymen)n(ts)935
-b Fj(b)26 b(M)3942 2600 y Fl(net)f(presen)n(t)f(v)l(alue,)g(in)n(t.)f
-(rate)h(of)g(return)326 b Fj(b)26 b(N)p Fl(,)39 b Fj(b)26
-b(I)3942 2708 y Fl(Ab)r(o)n(v)n(e)d(computations)g(assume)g(pa)n(ymen)n
-(ts)g(at)f(end)h(of)e(p)r(erio)r(d.)31 b(Use)22 b Fj(I)3942
-2788 y Fl(pre\014x)g(for)f(b)r(eginning)h(of)f(p)r(erio)r(d,)g(or)h
-Fj(H)f Fl(for)g(a)g(lump)h(sum)f(in)n(v)n(estmen)n(t.)3942
-2896 y(straigh)n(t-line)i(depreciation)671 b Fj(b)26
-b(S)3942 2976 y Fl(sum-of-y)n(ears'-digits)839 b Fj(b)26
-b(Y)3942 3055 y Fl(double)e(declining)g(balance)685 b
-Fj(b)26 b(D)3942 3258 y Fk(Units)3942 3424 y Fl(en)n(ter)e(with)g
-(units)948 b Fj(')36 b(55)f(mi/hr)3942 3504 y Fl(con)n(v)n(ert)25
-b(to)f(new)g(units,)g(base)g(units)453 b Fj(u)26 b(c)p
-Fl(,)39 b Fj(u)26 b(b)3942 3583 y Fl(con)n(v)n(ert)f(temp)r(erature)g
-(units)636 b Fj(u)26 b(t)3942 3663 y Fl(simplify)c(units)i(expression)
-680 b Fj(u)26 b(s)3942 3743 y Fl(view)e(units)g(table)948
-b Fj(u)26 b(v)3942 3851 y Fl(Common)e(units:)4013 3931
-y(distance:)32 b Fj(m)p Fl(,)23 b Fj(cm)p Fl(,)h Fj(mm)p
-Fl(,)g Fj(km)p Fl(;)f Fj(in)p Fl(,)h Fj(ft)p Fl(,)g Fj(mi)p
-Fl(,)f Fj(mfi)p Fl(;)h Fj(point)p Fl(,)h Fj(lyr)4013
-4010 y Fl(v)n(olume:)31 b Fj(l)24 b Fl(or)f Fj(L)p Fl(,)h
-Fj(ml)p Fl(;)f Fj(gal)p Fl(,)h Fj(qt)p Fl(,)g Fj(pt)p
-Fl(,)g Fj(cup)p Fl(,)g Fj(floz)p Fl(,)g Fj(tbsp)p Fl(,)g
-Fj(tsp)4013 4090 y Fl(mass:)30 b Fj(g)p Fl(,)24 b Fj(mg)p
-Fl(,)f Fj(kg)p Fl(,)h Fj(t)p Fl(;)g Fj(lb)p Fl(,)f Fj(oz)p
-Fl(,)h Fj(ton)4013 4170 y Fl(time:)31 b Fj(s)24 b Fl(or)f
-Fj(sec)p Fl(,)h Fj(ms)p Fl(,)g Fj(us)p Fl(,)f Fj(ns)p
-Fl(,)h Fj(min)p Fl(,)g Fj(hr)p Fl(,)g Fj(day)p Fl(,)g
-Fj(wk)4013 4249 y Fl(temp)r(erature:)32 b Fj(degC)p Fl(,)24
-b Fj(degF)p Fl(,)h Fj(K)p eop end
-%%Page: 2 2
-TeXDict begin @landscape 2 1 bop -297 -364 a Fm(GNU)45
-b(Calc)h(Reference)g(Card)-450 -141 y Fk(Programmer's)40
-b(F)-10 b(unctions)-450 24 y Fl(binary)k(,)23 b(o)r(ctal,)h(hex)h
-(displa)n(y)663 b Fj(d)26 b(2)p Fl(,)39 b Fj(d)26 b(8)p
-Fl(,)39 b Fj(d)27 b(6)-450 104 y Fl(decimal,)c(other)i(radix)e(displa)n
-(y)579 b Fj(d)26 b(0)p Fl(,)39 b Fj(d)26 b(r)-450 184
-y Fl(displa)n(y)e(leading)g(zeros)804 b Fj(d)26 b(z)-450
-263 y Fl(en)n(tering)f(non-decimal)f(n)n(um)n(b)r(ers)510
-b Fj(16#7FFF)-450 372 y Fl(binary)24 b(w)n(ord)f(size)934
-b Fj(b)26 b(w)-450 451 y Fl(binary)e(AND,)e(OR,)h(X)n(OR)708
-b Fj(b)26 b(a)p Fl(,)39 b Fj(b)26 b(o)p Fl(,)39 b Fj(b)27
-b(x)-450 531 y Fl(binary)d(DIFF,)f(NOT)845 b Fj(b)26
-b(d)p Fl(,)39 b Fj(b)26 b(n)-450 611 y Fl(left)d(shift)1181
-b Fj(b)26 b(l)-450 690 y Fl(logical)e(righ)n(t)f(shift)914
-b Fj(b)26 b(r)-450 770 y Fl(arithmetic)e(righ)n(t)g(shift)792
-b Fj(b)26 b(R)-450 878 y Fl(in)n(teger)e(quotien)n(t,)h(remainder)599
-b Fj(\\)p Fl(,)39 b Fj(\045)-450 958 y Fl(in)n(teger)24
-b(square)g(ro)r(ot,)g(logarithm)516 b Fj(f)26 b(Q)p Fl(,)39
-b Fj(f)26 b(I)-450 1038 y Fl(\015o)r(or,)d(ceiling,)h(round)f(to)i(in)n
-(teger)519 b Fj(F)p Fl(,)39 b Fj(I)26 b(F)p Fl(,)39 b
-Fj(R)-450 1241 y Fk(V)-10 b(ariables)-450 1364 y Fl(V)k(ariable)23
-b(names)h(are)g(single)f(digits)h(or)f(whole)h(w)n(ords.)-450
-1472 y(store)g(to)g(v)l(ariable)940 b Fj(s)26 b(t)-450
-1552 y Fl(store)e(and)g(k)n(eep)h(on)f(stac)n(k)715 b
-Fj(s)26 b(s)-450 1631 y Fl(recall)d(from)g(v)l(ariable)844
-b Fj(s)26 b(r)-450 1711 y Fl(shorthands)f(for)d(digit)i(v)l(ariables)
-537 b Fj(t)26 b Ff(n)p Fl(,)39 b Fj(s)26 b Ff(n)p Fl(,)39
-b Fj(r)26 b Ff(n)-450 1791 y Fl(unstore,)e(exc)n(hange)i(v)l(ariable)
-626 b Fj(s)26 b(u)p Fl(,)39 b Fj(s)26 b(x)-450 1870 y
-Fl(edit)e(v)l(ariable)1058 b Fj(s)26 b(e)-450 2064 y
-Fk(V)-10 b(ector)38 b(Op)s(erations)-450 2230 y Fl(v)n(ector)25
-b(of)e(1,)h(2,)f Fe(:)11 b(:)h(:)f Fl(,)23 b Ff(n)814
-b Fj(v)26 b(x)h Ff(n)-450 2310 y Fl(v)n(ector)e(of)e
-Ff(n)h Fl(coun)n(ts)h(from)d Ff(a)i Fl(b)n(y)g Ff(b)505
-b Fj(C-u)27 b(v)f(x)-450 2389 y Fl(v)n(ector)f(of)e(copies)h(of)g(a)f
-(v)l(alue)643 b Fj(v)26 b(b)-450 2469 y Fl(concatenate)h(in)n(to)d(v)n
-(ector)722 b Fj(|)-450 2549 y Fl(pac)n(k)25 b(man)n(y)f(stac)n(k)h
-(items)e(in)n(to)h(v)n(ector)384 b Fj(v)26 b(p)-450 2628
-y Fl(unpac)n(k)f(v)n(ector)g(or)e(ob)t(ject)710 b Fj(v)26
-b(u)-450 2737 y Fl(length)f(of)e(v)n(ector)i(\(list\))783
-b Fj(v)26 b(l)-450 2816 y Fl(rev)n(erse)e(v)n(ector)1017
-b Fj(v)26 b(v)-450 2896 y Fl(sort,)d(grade)h(v)n(ector)900
-b Fj(V)26 b(S)p Fl(,)39 b Fj(V)26 b(G)-450 2976 y Fl(histogram)e(of)f
-(v)n(ector)i(data)682 b Fj(V)26 b(H)-450 3056 y Fl(extract)f(v)n(ector)
-g(elemen)n(t)751 b Fj(v)26 b(r)-450 3164 y Fl(matrix)d(determinan)n(t,)
-i(in)n(v)n(erse)583 b Fj(V)26 b(D)p Fl(,)39 b Fj(&)-450
-3244 y Fl(matrix)23 b(transp)r(ose,)h(trace)723 b Fj(v)26
-b(t)p Fl(,)39 b Fj(V)26 b(T)-450 3323 y Fl(cross,)d(dot)h(pro)r(ducts)
-854 b Fj(V)26 b(C)p Fl(,)39 b Fj(*)-450 3403 y Fl(iden)n(tit)n(y)25
-b(matrix)973 b Fj(v)26 b(i)-450 3483 y Fl(extract)f(matrix)f(ro)n(w,)e
-(column)592 b Fj(v)26 b(r)p Fl(,)39 b Fj(v)26 b(c)-450
-3591 y Fl(in)n(tersection,)e(union,)g(di\013)g(of)f(sets)508
-b Fj(V)26 b(^)p Fl(,)39 b Fj(V)26 b(V)p Fl(,)39 b Fj(V)27
-b(-)-450 3671 y Fl(cardinalit)n(y)d(of)f(set)921 b Fj(V)26
-b(#)-450 3779 y Fl(add)e(v)n(ectors)h(elemen)n(t)n(wise)f(\(i.e.,)f
-(map)h Fj(+)p Fl(\))295 b Fj(V)26 b(M)h(+)-450 3859 y
-Fl(sum)c(elemen)n(ts)i(in)e(v)n(ector)i(\(i.e.,)e(reduce)h
-Fj(+)p Fl(\))262 b Fj(V)26 b(R)h(+)-450 3938 y Fl(sum)c(ro)n(ws)h(in)f
-(matrix)839 b Fj(V)26 b(R)h(_)f(+)-450 4018 y Fl(sum)d(columns)h(in)g
-(matrix)727 b Fj(V)26 b(R)h(:)f(+)-450 4098 y Fl(sum)d(elemen)n(ts,)i
-(accum)n(ulate)g(results)411 b Fj(V)26 b(U)h(+)1746 -364
-y Fk(Algebra)1746 -198 y Fl(en)n(ter)d(an)g(algebraic)g(form)n(ula)630
-b Fj(')36 b(2x+3y^2)1746 -119 y Fl(en)n(ter)24 b(an)g(equation)901
-b Fj(')36 b(2x^2=18)1746 -10 y Fl(sym)n(b)r(olic)23 b(\(vs.)h(n)n
-(umeric\))g(mo)r(de)550 b Fj(m)26 b(s)1746 69 y Fl(fractions)e(\(vs.)f
-(\015oat\))i(mo)r(de)662 b Fj(m)26 b(f)1746 149 y Fl(suppress)e(ev)l
-(aluation)h(of)e(form)n(ulas)473 b Fj(m)26 b(O)1746 229
-y Fl(simplify)c(form)n(ulas)h(automatically)466 b Fj(m)26
-b(S)1746 308 y Fl(return)e(to)g(default)g(ev)l(aluation)h(rules)416
-b Fj(m)26 b(D)1746 417 y Fl(\\Big")e(displa)n(y)f(mo)r(de)836
-b Fj(d)26 b(B)1746 496 y Fl(C,)d(P)n(ascal,)h(F)n(OR)-6
-b(TRAN)23 b(mo)r(des)536 b Fj(d)26 b(C)p Fl(,)39 b Fj(d)26
-b(P)p Fl(,)39 b Fj(d)27 b(F)1746 576 y Fl(T)1785 590
-y(E)1824 576 y(X,)c(LaT)2038 590 y(E)2078 576 y(X,)g(eqn)h(mo)r(des)687
-b Fj(d)26 b(T)p Fl(,)39 b Fj(d)26 b(L)p Fl(,)39 b Fj(d)27
-b(E)1746 656 y Fl(Unformatted)d(mo)r(de)855 b Fj(d)26
-b(U)1746 735 y Fl(Normal)d(language)i(mo)r(de)727 b Fj(d)26
-b(N)1746 844 y Fl(simplify)c(form)n(ula)937 b Fj(a)26
-b(s)1746 923 y Fl(put)e(form)n(ula)f(in)n(to)h(rational)g(form)502
-b Fj(a)26 b(n)1746 1003 y Fl(ev)l(aluate)f(v)l(ariables)f(in)f(form)n
-(ula)553 b Fj(=)1746 1083 y Fl(ev)l(aluate)25 b(n)n(umerically)807
-b Fj(N)1746 1163 y Fl(let)24 b(v)l(ariable)g(equal)g(a)g(v)l(alue)g(in)
-f(form)n(ula)328 b Fj(s)26 b(l)h Ff(x)8 b Fj(=)p Ff(val)1746
-1242 y Fl(declare)24 b(prop)r(erties)g(of)f(v)l(ariable)548
-b Fj(s)26 b(d)1817 1322 y Fl(Common)d(decls:)32 b Fj(pos)p
-Fl(,)24 b Fj(int)p Fl(,)g Fj(real)p Fl(,)g Fj(scalar)p
-Fl(,)h Fj([)p Ff(a)p Fj(..)p Ff(b)7 b Fj(])p Fl(.)1746
-1430 y(expand,)25 b(collect)f(terms)783 b Fj(a)26 b(x)p
-Fl(,)39 b Fj(a)26 b(c)1746 1510 y Fl(factor,)e(partial)f(fractions)726
-b Fj(a)26 b(f)p Fl(,)39 b Fj(a)26 b(a)1746 1590 y Fl(p)r(olynomial)e
-(quotien)n(t,)h(remainder,)e(GCD)264 b Fj(a)26 b(\\)p
-Fl(,)39 b Fj(a)26 b(\045)p Fl(,)39 b Fj(a)27 b(g)1746
-1669 y Fl(deriv)l(ativ)n(e,)d(in)n(tegral)864 b Fj(a)26
-b(d)p Fl(,)39 b Fj(a)26 b(i)1746 1749 y Fl(ta)n(ylor)e(series)1070
-b Fj(a)26 b(t)1746 1857 y Fl(principal)d(solution)h(to)g(equation\(s\))
-448 b Fj(a)26 b(S)1746 1937 y Fl(list)d(of)g(solutions)971
-b Fj(a)26 b(P)1746 2017 y Fl(generic)e(solution)958 b
-Fj(H)26 b(a)h(S)1746 2096 y Fl(apply)d(function)g(to)h(b)r(oth)f(sides)
-g(of)f(eqn)360 b Fj(a)26 b(M)1746 2205 y Fl(rewrite)d(form)n(ula)965
-b Fj(a)26 b(r)1817 2284 y Fl(Example:)31 b Fj(a)36 b(r)f(a*b)h(+)g(a*c)
-g(:=)g(a*\(b+c\))1817 2364 y Fl(Example:)31 b Fj(a)36
-b(r)f(sin\(x\)^2)j(:=)e(1-cos\(x\)^2)1817 2444 y Fl(Example:)31
-b Fj(a)36 b(r)f(cos\(n)i(pi\))f(:=)g(1)f(::)h(integer\(n\))i(::)e
-(n\0452)g(=)g(0)1817 2524 y Fl(Example:)31 b Fj(a)36
-b(r)f([f\(0\))i(:=)f(1,)g(f\(n\))g(:=)g(n)f(f\(n-1\))i(::)f(n)g(>)f(0])
-1817 2603 y Fl(Put)24 b(rules)f(in)g Fj(EvalRules)j Fl(to)e(ha)n(v)n(e)
-h(them)f(apply)h(automatically)-6 b(.)1817 2683 y(Put)24
-b(rules)f(in)g Fj(AlgSimpRules)k Fl(to)d(apply)g(during)g
-Fj(a)i(s)e Fl(command.)1817 2763 y(Common)f(mark)n(ers:)31
-b Fj(opt)p Fl(,)24 b Fj(plain)p Fl(,)h Fj(quote)p Fl(,)f
-Fj(eval)p Fl(,)g Fj(let)p Fl(,)g Fj(remember)p Fl(.)1746
-2968 y Fk(Numerical)37 b(Computations)1746 3133 y Fl(sum)23
-b(form)n(ula)g(o)n(v)n(er)h(a)g(range)654 b Fj(a)26 b(+)1746
-3213 y Fl(pro)r(duct)f(of)e(form)n(ula)g(o)n(v)n(er)h(a)g(range)458
-b Fj(a)26 b(*)1746 3293 y Fl(tabulate)f(form)n(ula)e(o)n(v)n(er)h(a)g
-(range)525 b Fj(a)26 b(T)1746 3372 y Fl(in)n(tegrate)f(n)n(umerically)e
-(o)n(v)n(er)h(a)g(range)386 b Fj(a)26 b(I)1746 3452 y
-Fl(\014nd)e(zero)g(of)g(form)n(ula)e(or)i(equation)461
-b Fj(a)26 b(R)1746 3532 y Fl(\014nd)e(lo)r(cal)g(min,)f(max)g(of)h
-(form)n(ula)500 b Fj(a)26 b(N)p Fl(,)39 b Fj(a)26 b(X)1746
-3611 y Fl(\014t)e(data)h(to)f(line)f(or)h(curv)n(e)719
-b Fj(a)26 b(F)1746 3720 y Fl(mean)e(of)g(data)g(in)g(v)n(ector)g(or)g
-(v)l(ariable)389 b Fj(u)26 b(M)1746 3799 y Fl(median)e(of)f(data)977
-b Fj(H)26 b(u)h(M)1746 3879 y Fl(geometric)e(mean)f(of)f(data)714
-b Fj(u)26 b(G)1746 3959 y Fl(sum,)d(pro)r(duct)i(of)e(data)790
-b Fj(u)26 b(+)p Fl(,)39 b Fj(u)26 b(*)1746 4038 y Fl(minim)n(um,)c
-(maxim)n(um)i(of)f(data)559 b Fj(u)26 b(N)p Fl(,)39 b
-Fj(u)26 b(X)1746 4118 y Fl(sample,)d(p)r(op.)h(standard)h(deviation)448
-b Fj(u)26 b(S)p Fl(,)39 b Fj(I)26 b(u)h(S)3942 -364 y
-Fk(Selections)3942 -198 y Fl(select)e(subform)n(ula)e(under)h(cursor)
-493 b Fj(j)26 b(s)3942 -119 y Fl(select)f Ff(n)5 b Fl(th)24
-b(subform)n(ula)770 b Fj(j)26 b Ff(n)3942 -39 y Fl(select)f(more)1094
-b Fj(j)26 b(m)3942 41 y Fl(unselect)f(this,)e(all)g(form)n(ulas)650
-b Fj(j)26 b(u)p Fl(,)39 b Fj(j)26 b(c)3942 149 y Fl(cop)n(y)f
-(indicated)f(subform)n(ula)628 b Fj(j)26 b(RET)3942 229
-y Fl(delete)f(indicated)g(subform)n(ula)588 b Fj(j)26
-b(DEL)3942 337 y Fl(comm)n(ute)f(selected)g(terms)700
-b Fj(j)26 b(C)3942 417 y Fl(comm)n(ute)f(term)e(left)n(w)n(ard,)h(righ)
-n(t)n(w)n(ard)379 b Fj(j)26 b(L)p Fl(,)39 b Fj(j)26 b(R)3942
-496 y Fl(distribute,)e(merge)f(selection)629 b Fj(j)26
-b(D)p Fl(,)39 b Fj(j)26 b(M)3942 576 y Fl(isolate)e(selected)h(term)f
-(in)f(equation)443 b Fj(j)26 b(I)3942 656 y Fl(negate,)f(in)n(v)n(ert)f
-(term)g(in)f(con)n(text)519 b Fj(j)26 b(N)p Fl(,)39 b
-Fj(j)26 b(&)3942 735 y Fl(rewrite)d(selected)i(term)793
-b Fj(j)26 b(r)3942 940 y Fk(Graphics)3942 1106 y Fl(graph)e(function)g
-(or)g(data)741 b Fj(g)26 b(f)3942 1186 y Fl(graph)e(3D)g(function)g(or)
-f(data)629 b Fj(g)26 b(F)3942 1265 y Fl(replot)e(curren)n(t)g(graph)815
-b Fj(g)26 b(p)3942 1345 y Fl(prin)n(t)e(curren)n(t)g(graph)844
-b Fj(g)26 b(P)3942 1425 y Fl(add)e(curv)n(e)g(to)h(graph)852
-b Fj(g)26 b(a)3942 1504 y Fl(set)e(n)n(um)n(b)r(er)g(of)f(data)i(p)r
-(oin)n(ts)644 b Fj(g)26 b(N)3942 1584 y Fl(set)e(line,)f(p)r(oin)n(t)h
-(st)n(yles)824 b Fj(g)26 b(s)p Fl(,)39 b Fj(g)26 b(S)3942
-1664 y Fl(set)e(log)g(vs.)f(linear)g Ff(x,)i(y)f Fl(axis)653
-b Fj(g)26 b(l)p Fl(,)39 b Fj(g)26 b(L)3942 1743 y Fl(set)e(range)g(for)
-f Ff(x,)i(y)f Fl(axis)771 b Fj(g)26 b(r)p Fl(,)39 b Fj(g)26
-b(R)3942 1823 y Fl(close)e(graphics)g(windo)n(w)759 b
-Fj(g)26 b(q)3942 2028 y Fk(Programming)3942 2194 y Fl(b)r(egin,)e(end)g
-(recording)g(a)g(macro)540 b Fj(C-x)27 b(\()p Fl(,)39
-b Fj(C-x)27 b(\))3942 2273 y Fl(repla)n(y)d(k)n(eyb)r(oard)h(macro)734
-b Fj(X)3942 2353 y Fl(read)24 b(region)g(as)f(written-out)i(macro)424
-b Fj(C-x)36 b(*)g(m)3942 2433 y Fl(if,)22 b(else,)i(endif)1051
-b Fj(Z)26 b([)p Fl(,)39 b Fj(Z)26 b(:)p Fl(,)39 b Fj(Z)27
-b(])3942 2512 y Fl(equal)d(to,)g(less)f(than,)i(mem)n(b)r(er)e(of)506
-b Fj(a)26 b(=)p Fl(,)39 b Fj(a)26 b(<)p Fl(,)39 b Fj(a)27
-b({)3942 2592 y Fl(rep)r(eat)e Ff(n)e Fl(times,)g(break)i(from)d(lo)r
-(op)459 b Fj(Z)26 b(<)p Fl(,)39 b Fj(Z)26 b(>)p Fl(,)39
-b Fj(Z)27 b(/)3942 2672 y Fl(\\for")c(lo)r(op:)32 b(start,)23
-b(end;)h(b)r(o)r(dy)-6 b(,)24 b(step)421 b Fj(Z)26 b(\()p
-Fl(,)39 b Fj(Z)26 b(\))3942 2752 y Fl(sa)n(v)n(e,)e(restore)g(mo)r(de)g
-(settings)612 b Fj(Z)26 b(`)p Fl(,)39 b Fj(Z)26 b(')3942
-2831 y Fl(query)e(user)g(during)f(macro)683 b Fj(Z)26
-b(#)3942 2911 y Fl(put)e(\014nished)h(macro)e(on)h(a)g(k)n(ey)580
-b Fj(Z)26 b(K)3942 3019 y Fl(de\014ne)f(function)f(with)g(form)n(ula)
-563 b Fj(Z)26 b(F)3942 3099 y Fl(edit)e(de\014nition)1010
-b Fj(Z)26 b(E)3942 3207 y Fl(record)e(user-de\014ned)g(command)h(p)r
-(ermanen)n(tly)125 b Fj(Z)26 b(P)3942 3287 y Fl(record)e(v)l(ariable)f
-(v)l(alue)i(p)r(ermanen)n(tly)392 b Fj(s)26 b(p)3942
-3367 y Fl(record)e(mo)r(de)g(settings)g(p)r(ermanen)n(tly)390
-b Fj(m)26 b(m)4235 3650 y Fh(Cop)n(yrigh)n(t)4538 3648
-y(c)4521 3650 y Fg(\015)21 b Fh(2007)i(F)-5 b(ree)21
-b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4197 3714
-y(designed)g(b)n(y)h(Da)n(v)n(e)h(Gillespie)d(and)i(Stephen)e(Gildea,)h
-(v2.1)4467 3778 y(for)h(GNU)f(Emacs)h(Calc)h(v)n(ersion)f(2.1)3942
-3870 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
-(distribute)f(copies)j(of)f(this)f(card)h(pro-)3942 3934
-y(vided)23 b(the)h(cop)n(yrigh)n(t)h(notice)g(and)f(this)f(p)r
-(ermission)h(notice)g(are)h(preserv)n(ed)g(on)3942 3998
-y(all)20 b(copies.)3942 4090 y(F)-5 b(or)24 b(copies)g(of)g(the)f(GNU)f
-(Emacs)i(Calc)g(man)n(ual,)g(write)f(to)h(the)f(F)-5
-b(ree)24 b(Soft)n(w)n(are)3942 4154 y(F)-5 b(oundation,)28
-b(Inc.,)g(51)g(F)-5 b(ranklin)26 b(Street,)i(Fifth)f(Flo)r(or,)h
-(Boston,)i(MA)d(02110-)3942 4218 y(1301,)22 b(USA.)p
-eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
index c35ab96dcb58af0d034620f59dd00e226cae6534..2b30b17abdc4d6a60976fceb39cba587ec0278f6 100644 (file)
@@ -404,6 +404,7 @@ Compilation killed at Wed Jul 20 12:20:10
 Compilation terminated at Wed Jul 20 12:20:10
 Compilation exited abnormally with code 1 at Wed Jul 20 12:21:12
 Compilation finished at Thu Jul 21 15:02:15
+Compilation segmentation fault at Thu Jul 13 10:55:49
 
 \f
 Copyright (C) 2004, 2005, 2006, 2007
diff --git a/etc/cs-dired-ref.ps b/etc/cs-dired-ref.ps
deleted file mode 100644 (file)
index 0ce4ce2..0000000
+++ /dev/null
@@ -1,2096 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: cs-dired-ref.dvi
-%%Pages: 1
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: csbx10 csr8 csbx8 cstt8 csr6 CMSY6
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips cs-dired-ref.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.03.19:1906
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csr6
-%!FontType1-1.0: csr6 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25711 25989
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csr6) readonly def
-/FamilyName (csr6) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csr6 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-24 -250 1193 864] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A1390082AA03548CCE363896DC
-8285532C521369225C90F80D727FDE65092A0044327885EC680B2ECCDFCCC5C5
-9B4F8AE2D078A25AEEA345A6E6A1D9F372DB3CF2B4AE635D7DB823D70EC82CC7
-1CF7E7DD0D047DC2513344927562EE8FDA9076DD136C4996A22589ABE803CAFE
-BDA907DB1C62DABD22A05EAF9FA8313F815BEDB67BADCEB77C1B22D845131345
-22CF2296D57DE34C11EDF6DD3E42B726C8D60E4A98663DE8F7CFBB416F0A4B01
-734649B217E4E94992F66E77AAD2A7289B5413E7F1DD41B9334CBC2EDE944C80
-D9758E1AC551D298DDCE91757B374D66B6BCB92998411DD3B7E6350480D52ADA
-A0DA546F63DF2A7AE22BE6BF9A78F5C34CBB597DDC4FF03AB527637DE7F3AEBD
-59ACFB058C4833A4A62A9125B4D90E7073184DAEC9D4662987F5CF6D0484D870
-C0FC4A29C03AF2BD159097D46F491069FF43EB0B92CEB9F09E71E089F2C916AA
-57DF56E8F0595F9ECB2B1F2431411F7311294DFA91459BC05EFD5C1C68099335
-7BF9559397107F8ED80B43B6E113CE5AD25E1F980D08A891F2A2C0F3A99B7281
-55128F8A4CC9B78A96D6FE58AC946267448735F669C6DF170FCEBCA6108F94C6
-CF3D5DBB8B2304D66AE30096A7D7E17A5E8DCA207567091B96CFE64BA77AF942
-E51BCF3793EF5B02DBF510FAC25F4E523C54CAD23CF2F472B4B3D42BC66565A9
-F5794FAB132F78020CDAB120A21E23DBFBE16FB32F7A618A7736C5F269691069
-D8B35B291D6876340C4158958C56A6717C5DEEA0A86C9C89D9BACB999156717C
-BFFE2CC56DF4F47B56EBEE1D2C3A118208D9778776104AFFE60A0C7A2BCC9ADE
-FD471CD27FA8318703D497D7F1E2F51B67B9E50D9A56C85EFBED66535792D720
-974ED9168E082F5211F2F607D91F5D81AF63A2DDD31D23E65D3AF936FF194F6D
-B9EF5D40498DB69F3BC87E7E19AE76FC0C54E0B4706FA34621284606BCDAB55C
-32BE1E917D3B3CC1AFCDF3D35507E63D119B0A3174D32B6AB0A05A8F919A426D
-9CB0E7F90458CA6C439565A9AD5648C12F47BCA98599D31E834654AD20E719AC
-64D073F8DA31D1FF07C1AFAEAD34D9A58C9CFB12FF747775D5CDEC0C1D84FF41
-B8EFC696D77D2105043CD29074D828D1E03C1A2CBB80C5112F4CBCCB4A769BB9
-A4F91F4366DF0B44B0480E6D1522A779C4EA84DBF398B540A2A4546216DE7B02
-CDFEAC0DF8D9A35DFD72457B2FC7F051D85EA1437F13ED17E53D5DE0F38A5AAE
-58B077651C978C555A9873AA29F0A4ADDD1B6BC50EA6C95B1588E7F8D6049EC3
-8D9D2730FF086983030ECAE9600D8A11335A186A6FE48DAFF7F663872B23F22A
-C62F5ADA341F5BC0106B99ACB3A1C8268D3DA2C4F93B17749BE68AACEBA9D456
-B3F0B7B3C1FB011B20FDF4067A48421B1ACAD3F6210BCDA6D664361849170191
-7E57121F1D6787DDC6E8EF9022A91290E1534CFD830134126467D7E328E92267
-B730800397D9A384D62460853F56C6C9A634D04E02932EC17CF0F54705615E03
-58A437569FD55BD44A33C29DADE84E385C97F7B788106B018E3C265726C31E4F
-B1509BB80A94E8258F503048C85DC89C7439141A587E13017010AA6DA23FA2C6
-97E37155FA9538B31C4CE0B72E1417382A1A1223828D9C4B2178EEA561BFE6B9
-43AEBE58EFAE10175760ADC68AE5642AD2D413F2B9D35DD07A69B45FDDF2673D
-28B02C23EFD71C08690ADF55C233BDFB3DBD1769138EB92AB13023B5D9C8FFB6
-B0A93C729DCD5E5CB8ACF9F7E1CBBA9B67CCF2A0296C8D1FB7113405844D654C
-33ED93894598563D1ECDD5CDEE590D8063C42782DCEF3812968B7F6DD27F409C
-91A278CFDE7D4803E089C0769EC1C3C0CE1328EA3C53827D65DF602AB6DE79B2
-F4FD4A5C9E3047B07A084E1B48F8B9DB9C8F4F8ABA76A2E1716C8103CD1A7191
-E0DDB5627F65E3475E3436250D9000B37F82CD5092E1638F1C771BE23B3C7494
-15F16719E4C1549FBB4C5E7AE764BF97FC458319AF304B72CC1B73C5F5A0CABC
-1C8134C14F861E325B030719248E3AF17D742D736AD0F07CA757AA4A1BCE50C6
-83C0DEBC1F64D96332769A65AFB4F8DF6310D8DB846431392B63CEB036A6FF54
-410E717681265F811A992B82B302F406614183A9BDBBAAEA43BBBAF8828B3D74
-7CAB59D02F4C41B5E8BB2369CC4BFDB378CC5831AEF9DF1715F915365968A422
-66FE4CC18FCE0666A1F0CE9A202B5F581D252347BA49B5F351EE40FF21F68B7C
-3DFBC1920114CE2D02D564F1B5C398DD834E20E9DC2639E3B7A2935D77894960
-AFB1584B7E0094C9F22D69BDB0F005CFBFEDF56E08790DAD1D3CE2AEE6C90298
-6507CC72FDC0BDBEA2D45CB8544A7001AB67B8B3E9A359ACBFCFA135DC277A44
-D578F9E962F1CA8D31E34D3128AE12E178AF39B18159EBEA4D1D0829DC536FD5
-8C48E955D7D52D1BD6527EE388C1BB2E6A5DADD1E7C452160A5D4768146E8811
-8722D5F9D69E925D6699E7EC2DE2C645FDCA36AB6A06BAC60DE1C355401A35C7
-E287DE71AD3A6CAA532A0DF377C6E02583D6DDECA77FE50842214051AFA0418C
-62244C0213DEB448711801EEF13CF96D498E45209185AB6CEFC9F304D32ACA2A
-98E8D8EA3737EA2F5C2BD6A1CFD08B7E2B3C0285BBBD2199AA120AE737B8B269
-535C20CC1FCB4612EAF3EEF2B49E98CBDF1F71F997DBC89403E7CAFA2F6E2B4A
-E9C90F2FE5FE13837FFE33AB01414903C905E4DA170F12C3F1A11BFCA51049CD
-6A34457EB03EDCE6DDBEA995DF832AD05A84DCD3A672FE6C35556FEB442202C4
-427D004540520B66AD955F2ADC68DD53FD7E9AB3B38DF22D8C44549F06214082
-15A7F95684F1727A53EC834E9CEBDC4C599B0A9A255BE0FC78EECDC9CFBFDB35
-29EFCC293A02D52F20E3EF5C148C1F6CF5BD4FC7F42D00411FE742BAD03AFEAC
-FA91FF2661AC60D5EBEC548AF4B4E0845E3D02AB7C9FC9E68CE7F1B5E4DE1EFD
-077562EDE46E6790015D18C0E9D9A52D5C7D617C5B7820924D99381FB8BF04DA
-5EF1732435FE328FBF8B1DEC60D5BEA45890A2B6D66A7B4B47B03FD3D19D9229
-9D1C8458085C909C125472CBC53798C16AF2C6F44ACEFA2F6CB6C5DD84B648EB
-1E1468D6A89DCF23A4AFE8C8EEA44048D240D392D0CE05C082CD711BE907BE94
-1E7ECE39CB183A185E602C47680AAE88859618761CB8A5282ACE290EAED9265B
-466DF5124F1C78253AC2DBABCF010D960A26E60830E11475B1BE35ACCD48036D
-97EC4867D6AE95F67A563952600952D30DE1F148B2B6950E33B2FCBD7ABE5BE5
-9CFFF37354288D61FC68B3377C6C24749C3B06F87F25D4E35CD717B6A9EF1867
-D4C13E024231589C9E89A3C87AF9F926B329419728A7F04C93F186D16D322191
-AEA715EF468CAE95EF9DFC6B2B69074D10C1866651961A061B909DA1FCABE3FE
-3855C578C953F5DAAAAAC876A4FEA53498B40DEABFF5DCCFAF8EF467CB26571F
-6E5D54FBACFF3ABB4EA0B1C41F237E26667D9DB110A600F0CF98B6066BB145B3
-96DC26800F08437185590EE3D2C080B2A547B51C7A131E9F7B55F0772DE5C844
-C2E8B1F55EA131D16E307008E408DD8A6665C97A01A63AB6BE1B41A158EF2F27
-348737DFB0B31ED64D5EB558A8E0D99478C8A2206FA0F050ADC736BD32CA0339
-D0305441F007C7DFEE295D6360BD4DD34FB25F2A07F3B00D2A4B3CDB49F021EA
-2DDC4D625F7CA6B50DED913ED0643F556A686E46BCCAEA641692FE2E996CB21F
-33ED78F3010D51EDE32C0A0AE3491FB91E7AA05D015A9AEA3B727C4EE45DF853
-37C5E0BE05D272C3A0C435C9C1CB1A1966AEE7F1687524246D409B0954971282
-53F7661B5CFFC8480E1BA4C039BF214DE3C7A1D7F0DC372CEC274F0945BBB948
-831DABEC5825C95ACD926B23B2EEEE6ED531B27DC3BFF41EE7554A75A0EA4B25
-A3461ABCA0C1558DCC68D8BA7AC6A05D0BC2C32CDA016655D87E2CE0501AE6C7
-D9324D637A9D70CB9EA0F15667B1730C0DA56400298741857E6E6A426E9CD5DF
-4F07CB4E882875B9DFC47786D1DFCC0C4EBA6EB5F7B890B2904E3FC00C4E2FF4
-7282022BE6254C35FCADE5AF9B6BE80864DA76D437D0284C3BEDD35B2209B5CA
-7A2D69EF139C6611D38FDBD46AB7BEFFC13BBBD9FC6564BC859B531B848A7C97
-8DBFA4CD4C98CC8D3E170955222011FA738A2A940B3D71BF0A18E4604FE2331D
-96588E9DCC91F026602044835C12BD112E7267DF7C0B674D48CFBCDA7B64B4ED
-1C16BC6F1A17AFED38C8943994F3E07771471A950D91B3C99F1B11D85A5142E1
-DBBDB2D142CF48130AF3E03F4D06DA816AF0914D0DBA5BB270AEE4E66F9C6BA3
-A57B1A68C3C0088D2248309C0CAEA2D5AF93F1734201F7B4580DDB4A4277DD0F
-FCC56F43D4B1E5DFF341C8952A723A40A02DAFCD95E57D975300484F68EF3507
-1BFB61E4E4CFFD0DE5920B271BBD4E3CB91EF76D42AB30427CCB980FA4736497
-20E8A12FD2E0B4F14E55482C99272941BBD7F75667929869C1840DC4E77B7AFC
-FEFB1DE383AB74441B16736487C2071B29015C52D47E1DFF058A4393BDB2F07E
-1BE759B8FBE39B80669F272BEA0ABD7C36D94C5A53806EC6F8C9FD5B68560815
-2C7933A78F7E4524C14B3CC0BCF25D44B8ED70E46026C7959E1CF055D07D8871
-8C576458B8C9DF424198A618B8E3377631DC6CC7405624160EA52171B167951A
-3234D91595AEAFE425F31872F11693FA0F9B1F09C6D2E19CBBC66EC4543A90E1
-D9173ACC94F7FE489010109CE1EBB2AD8E2E807C62875867D8FACC3805650253
-21F8E64CB5ABED16CEF3FC29936DB8B06E015C041198B700B493D274E2F3CB25
-D53F5D46DDDFCAF86C876B3FCF5CE00875D8A6237DB1247199AEFA377B4BA19F
-AFD56AD2FD2A463800579DAD33112DF863E2C504CFEC293D3F30BD350C77A248
-C3D0CA21D662F665407A19B6D0DF95FD73F01E530440C89924F0C2854EF730B0
-FEAA26912851247A73E99C0941CEC44FBEAA49275B96B42F61C6A446C3227562
-7751D752F3E0E8C634B129BD953C44829EB1876ADBCACE29E10F0948BB931A0E
-3CD1DA2129AA3CD2CFCB25A59D581F0A10F1813FC4501B3C97CA05EA3C7F69BA
-262903FA7EF879CF03FC000B23E09E9AAE09A022C0658C73730AD5822E0B989B
-A845ADFDC9F83879A747309EB8B819A5F1BD54C17DEDD16B24DED8A068516060
-4E28D3559B53947CA1F9FB1DF17370F5A76CC796DE2DCB2497CB476C73063977
-CCDEFFEC5940BAD140AF5B8EF887C034E9EB5A11DB0CACBC36D91B5756E43CC1
-3F873330B15EE187C3DE825D284E81FBC790DB5FDC8D4387D970450EF2DDFA09
-74F0504B90A0A9A643AF661F7670D4054DC3D1A35F5CE3D0C6308E33ED883D28
-B6F99E31AD5C291577CA6018F34CA0A69EF627F95C3ABF760A2F29760A6C8CB5
-2339B9C653FB9E73172354E5F9256FDF9B70168CA01089017C50C17FC5004AF3
-C906F760F7D05D0AE20BD3ECB7C118A9FA2022606848CA9D0E659E0F077A6293
-3F6E8494CA79BA412FC3C535E5DA9BDC2B96A336CFC803AE8B7CDE2ED42F9FE7
-236C33353457A3387978F50558A639345FBB8BB5954A86D855DBDE9004BB24AE
-6E3B6356B1C7F7EDAD3C8BA35BD02BEC40E17FB92E4E76EBA9536D8750BB4C9B
-AC67FA6D253A6384FE9EE3436EF62E620E87B961358B9F09CD64C864FC9B4CD7
-4A774CE71301176885DEFF3437BA9549B4E7FA3B9A46EF380C42154131482854
-EBCEABA59FC594AE632131479D682D88982173C51E64905D4131DE51C3D241B1
-51CE0B3EC3388CDDBA6DFBBAB2C2932B597BA3F10BA2FDF57B2FE8FBDB3A89CA
-B3BE45A42742D3343AAAA01C0F7A5FB1A50BDC460C9736867C41CC9D10F01863
-110AF2BA750E0920646FDD4A30F5274B295C915B2E832D01249146A9EFB7E30A
-897762A22C1ECC17B3E29294DC306A27944699DAD3759D838E75435D7F52A1BD
-8CB5ED924328F734A535193296AF4CC70AD6422E8ED3572B8B104BC40A28C8FC
-DA9E9B8B47FA9A94BABC582D3608BAE0CB94C2B67DC65ED95281387BD40B294C
-2FD516909ACEDE90991C023FDD3C5584EED0CBEA055A0221B575A62FBC5ECC72
-241D6C80260A4355B92E92EF644257C00E13D82D47CF0740CE71D1462705FBB3
-3E8F8DB59C787154BBE9E0FC791606BE3BD11537CBDD858487183595255E3360
-00EAB3E593AEA4AE635D0DCDB7F0AD2D95ACC4D6C37BE01762CB5E5D728B780E
-14A139A7F5E329ADC6C406A266AE90ED6DFC86D68A417ECB7A486EF0551FDFD3
-C83793A4B3F305D380DC56FA962B5474ADB62DEF714FFFA498467934E95BC976
-BE99035AADCB5250A5DD5FCAA64D3601BD788C35C214058AAB025DD3B77864A4
-76BF7F562574DC4466B23C7256246BBEC7E47419D3B7924AFDDDB7B605D499F9
-815D19F8BD8797AAC599DC62F2B3CED680A3860BCF87428A993BDA11643B830D
-ACC0D0493DCD72AAA9ABA51A8514E91EDB75DEC2378D5710332707DB8E9A3C61
-A85D1114E88D89CBDEFD3BE65C215292ABFFAF211CD17605C4DB85B9AE505150
-BDE896444F55C7A15BFEEA608D8055583487B1DFB5E831E35AEBECCA99EE9348
-2A428FF4DCEEFC005FC7D54AC750E1D228329718711AEA3AFCCFDEED13884A00
-DD02186AD492BE03EA4C836D3994CB345511AE8A0981753F77B562BA3A0F0703
-45EE012D273721070B5CC63453E78EC5B40E3F1845F08AF780885D5B55F7552D
-385F2F22BC86C4D37CFB2B8D43AB30B071DCF1FF032575BD87354EB680ACF012
-3881D4428F9AD52478B55858CE48CA964291FF97AB5CB46FABB04EED462AD1CD
-07404089DF52B923E492CFA2120C11DFF6156FD3A9FBE7B7AA4BCC4ED3BD4EF4
-E21200516D96DE372E8139D56C3F76FB29E42FFA6531AFCBEB2F6DA84336FA31
-8E7028E1E0D828AA135620FE30198506A3E094EAC140370D6C35293E816BE135
-96704BE5E4D6D6C83B42F91CF760D7D7E5DE20F569B31A3F49B3444AB5418B71
-9F72E599982F16AB21C83370BC1B3F9CEF750804FFF8C251368FB57850D5C49D
-2D49E43890C19232329E930ED9B8543DFE943F9C325467716C1CA7B43EF7BD27
-E0CE660DF3E6EA1D32E1C51F1C1CC36D273F1A482C9A62A7983D59C75EAF354A
-DBD703801513C471BEE721C2C728DB77658CC64F59FA9606FE85A3955E956EF5
-0537F5DB54B18E15622FC1187746362ADAA7B93BD0B0B3C1295FB350430E00E7
-F8C852467D0035394DDA11ECAB23FBCEF8D8888929C41577561DEC1D96D36CE9
-F45F0F17674E9C6C4133B36FB19936DBE5BABEE039C9BCD0AE86C9F15F218C39
-0CFE18EE9F26D4E0188085820F87D2BB8ED4C81191F36BB157AA2D97FEF3C500
-06DEFE2635F4A45F78FE9AD3585EEEB3F10651733DD1F4808BCAC418F92A7DF3
-B2E1712FBF5FF569E4E930E70E054A22F6862CAA271470C9F4358FB6CD1A3D3F
-15048080030F17D92DB7692257C8528DC80C79B145F29720F9468CE7768BFBAB
-5169811E01D06D43DD8A3B0F3C002E79248A48445DE4844855326A7E58F54876
-F9744E723980B6A61907CA9A13F4C12F823ACFC8F778E7089843E11216782D8E
-89D4875DFD01BB67BF85A0692BE5048AF1D3EB1CF8C087BE6FFFD60822CA5B47
-CAC2413F7A4E8A0DA4CF76C340578918B40FEDE73C48193391BE10D7F36019A2
-732B902C426CF80FC98581251100867B6D9BB728B3D010B882CDB07CB6F9FB22
-54F0B427EAF1EDD1FAEA5FE3AD156DDAC67CB8202A4E0D0AE5B49F35FC31E6CC
-87F00E54011DDE86A32DC844D0372FF2430F552545D648138C0502F46D7F90D6
-65736FB0D53F90EAB2DE0ED5ECF7C179FE1D846DF9256A669BE668F9AF96EBFA
-9EB14ABA4113994A6A56FE7FB3E8CA25DDD95273549052106DB8ADC5818DCF45
-841FC9336207CF67EA835DAC1D2C3918BD570C1E56B63D563EACDB397F28E198
-BE36D9E48CC5B228994866F68F858F7CCD1283668A9A949C99F3DE12F975EEBE
-D273BAB53FFDC9915F3EBBE6353C8D74B2E4517092D9BEAE2420942DF0074A69
-30A696E4B7FE4491AEEBD05385FE95E0003E14907C1BEF058D6ABD417CFAC682
-AD0949E6B0AE41D8F6C2C76BEE7F696E8FC623280F96DC4BDFC33F73FAC10265
-49F98BB4CEEF2676279F4FC5928FF7E51C7AE464377E29873E4E8D3F8A384626
-F030953654FD3A42A1127E7EF9DFF57EDD38F7BF4FC146A755FA5F6C810C706D
-6A834B32E68505B9E0726624BA8B7DCA96DBDD8F2344386260478160B0F3F85B
-E09A8E3AC4ACB796BCA6383A47B70F98FD798D6F2C1C385813EA7B3661D43DDE
-7B3C0C6455785420553956EF58B460CCC897187847802EF8DE9FBD23934FA8D1
-AD37F59724DA239776F0F513402D86060903C24105BF537BB2C0BC4D572E6D4A
-144BC35F7C1E710745FC4B02D6EF02F607489543C30B3E10FB765A73A9571845
-549565B5E4DC13EA259603958545A964C38480EDDF58FB409FC43A2909662F39
-5DE08816008CFD770B8A3B7517CBE72A5B23E5D6F96B3D6715B81F03190B3284
-E72034E0F51272427A6DA9C72CD39D8E8E5BB13D232D4D2CD741EF2550220269
-80C4B614FDB1972052A427C723FD8F774BEF5708160F46F11C702E4A35DD1AF1
-A920D08B6B91392293573169711A8A306CC5FCCD1B53B9D7A3DAF2D9911028F3
-3EED3A7E7BC346A70B919387423C91E2813A7A0892AC99BE0CA97D85975348B9
-CEC6BF3EE2BB656506244A9500A94A6CF9FA44AAEA2EBEA1A0DC7414E8B4708B
-1949EE5092B13881877F5F46EA92F3A1988A2C419C6CBA6307EA93F3CDFF149C
-AA132D48FD0818529452C8722E6277F8AA668E8CCB0D177248A00282A0316550
-2F6E96123B03AA20D8E7BEC2618947F71BD405BA3710043C4B627E211113F14B
-ED4AB1117B0A48E925A884F3730D05480984FB80B30744A528B3653F8CFD50B9
-8753EE836F07373751BFC86BF01390080306C3CF564419EDD4D9102FF4656529
-2D88B3F816CC70FB0CDEB89AFA68F968FADA39B23321BE4DC083D7643A6F4ED4
-02CF176ABE73AAE3FAE9BFFDB8E67CDF56330FBBAD21CD1977F5746B08193528
-A23BE8C98888DD658B8655362781AAB8AC2636F06838419FF581FD66B96FECDE
-C69D818BBFB8261DEF801EC40D20A6B79032F4B007C0D6F6907EA457731BA2F0
-60FA71D8886FBABA4EFD51998C1186C4BDF06CED2C2D7FF23250E48BAE3A8AE2
-ACEB2C0D0B37E2C7DA24CF6C43D76D4EBCCF409B7C7E4BC6323061703A5A3EA6
-B1A53EDACBD107296914D927D853C8840D4CF1D833741327FF21FE9BA51A9E32
-C0E97E86F03E9671E32E143894B1F05DCDADFEA60B24655EAFA58807909E90BD
-A5988A86C9BD38E0B1CD98FC79D1ADB5C3ADB78F285A7A314A72DACECCA0EA35
-BAFBB5EAB396AD4729DCFFA5264DC0DD86157078024A590E6067A6F1B5B2562A
-D1F15B3C8B118C15F07F6AB0BF1D9190D30976D88EA982E57D2E202AE26CD9BD
-00FA6220805E6D6FE5639B12813C5A6038851299DF0BD94A205D668CE5144749
-F71A18F633BF283DA453714EFE14E5FE869E524E80BC04A0AC3DEFD93B3231CD
-C88528CE3133EB6287EC0226A4DF0ECD42A13C0FD832320C0E29318D6C237D55
-AEE8B077AF3A819025EB88B94A6831B16E7BC10957C5E7CDAECB20BA23241E94
-CAC0734555505BBDD55A973A06A3C146A21AEEF899ABD43CBFEBC105FFF56C63
-7CE50DAC6913230A323201A81E101ADA71FAD718F35C74406505C62A605246D4
-EECB52D70D5E07D10D13CF303466A8A5198D02485FD445F56B2D90FA7B039711
-22523CF282CDA36BC0FC3539CBAE0E636094E7A37529A026A5AAD5B292D6E55E
-F16FC9E442DDEADEDC307BBBAB221CA11033982F971EAD2AB3E2A0C47805F059
-2333D6C473E1F5CCB9F8133AF91B63A2F3F6FE9FB11EB74900AA2D20C007DBC2
-681E5CF1A025DD2C25268B441B02911492539028345B03EFEB64D2C1AE9CA7AD
-94472236D7DFFCC081197351701145B365AB622CC2E5E09A17B357BBE0B0C523
-5A8D68AFC00BAD865B291678A7D9F83909B29516086D0DD4434E498F7CCD0645
-F327C654165AF137E197B17E6D37F90224F3568706852AB7BF5C78AC69A4C0F9
-23F18949932C058C8C21DC52956DA498E749437B69582751E1E12EB46231A450
-BDC05A65409630B0C6281534035BEC3FE0F3F173CA94BFF7E93E15F66D0B3C73
-F784C00BF1ED61F36996FDC82D0C9A11E1B3718675ABE286429E725A9F383B9B
-168F31734B8EDCB37E82C4B26C9A8553E6C454499CC89289E6045F8810413E9C
-4406391C6989AAA1BE34224B98C2EC4D3986095037158632C17F8D7A510CEEE0
-1C21F1C92593B2066AF4B86DD30E896D548C88B5946D1408D22839103C7A0EB6
-7F3D488173887A94B4A2B367DC8C67531286D131A1BDF35D6041EEAF1A086860
-22BE71A2A535B6264EE70F4C7CEE0990B33075D55733A5BDE0C63499EB9111A5
-ED5DA484D11063D8F03A2CEBC6612DC43D8C22913EB0B8E467B02A15A7595A36
-4DCB8AD0D74CB5493B59EF02B69ADAAC5F3CD7ECE0CA793A378C97E07C37C7E9
-4E5F11CDE9DFD0E61F9B88968A015CC4FB8D7966200C48C6EDCF59AC60CA9693
-74267C4A067BC76F8C0A4F204FDEB9D91CA4A69FE0E30C7158D44E1BAA50D92B
-1AE92896CFFFE56EE0AC571C2AFADBBFE59F1F23D42DAEE552D4D86F00B48F42
-60D7834201C7CCD9E52A7AC3029896C251F52CF3BA23451E8A18A383411071FE
-B4D214A45F297C0B9DD06578ED375B7E302B3AF410ADF197CDE49A0F58B40CC5
-64A4E14453FFB0FF7B59292AD7A63FCE0239FFFD0EBEA23C091D0760693D2ED8
-9A0B66E0125606F15424D3B3D82764BCF6A2A2BD399BDF0EB5B38E4980306D74
-558833268726829CC7579DC4AAD6E9589EB1473D8C289B9E331EA905830D07F8
-042B642F60B69D66B8D2D2FDB948BC16D16344AE983FC67352292C05EA1F5E16
-18DDA42173B00390985D3F8981FD33B102D37BB98B56A4BF76A17DAC639183D1
-8CA84E33BBC5BBA5D41821DA254A5BD4A8E8011D766319E001D2BAABF097556B
-8660001C2A9938E1A08265A3912BBCBDE5B1A592EA64D1F141CC3CD437194CD4
-5E4330FFD0FC6823469A618BA4B5C0E35DC27DB79E90F6F2B563CBF7E1D86A63
-6973573D2A9A8357C4EDC4D4D5C9BF56AAE4035E93B41B8D0807474E54035A88
-997BCAAE58A4A672E47D0F44C1EDA3C3ABC7AB8F3CB4F11AA89C23B00295F763
-38F77E9C4D509C18D4B2DCAE5A26A2E2E12FE603C19C220225A78BEE4A48B371
-935761EC9E601671940DC7E0F7819110E6FE16736AAB9EA8D395ED021957DA95
-5BEF62E5BB3B440CCC5926CA3C5652E22D9DEF2EE4F39764565A505704B3F80D
-37D58ED65304186111BF95C074E3B7097B953E24317BD119257C16434D5CC75B
-C9EFE5B27C115CFA047BDA6B41BD82D7359FB6EBB2F515B8C6750564C316A2F5
-E515EAFA9E5415D2474A3938F85A0D7B12980D11FA95AFCDCC23D131364CC544
-D10B3BD0A4F18A6EEFB79195F7566BAEB133847422802CF3234784FB095C6BA4
-B243A6C25C7BCDDD647988E640036B2662364B87C77E57DD501A017574DF1A32
-843C71FE7091
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: cstt8
-%!FontType1-1.0: cstt8 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 27102 27374
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (cstt8) readonly def
-/FamilyName (cstt8) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/CapHeight 611 def
-/XHeight 431 def
-/Ascender 611 def
-/Descender -222 def
-end readonly def
-/FontName /cstt8 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 40 /parenleft put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 50 /two put
-dup 51 /three put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 123 /braceleft put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-7 -232 547 749] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E61A0E1428E106CCC2583525
-72D46D12AB29122B2F73E8A1840E92A8B89FC7EB2DC186823768722F16340C65
-6DD7DC66340FDBED5DE27349212038949E02A53C843B61C70E1DD9DBD0087F65
-15B0F0D9BAE4BB4E41E67AD2A0627A0A172C22D63B4821EDFBCD61B658A40308
-132441266CF3C9493FFD6F22069801D31293B9BE8D89CB818E8ED600661D5183
-2E556F2B3D05DC1D4373F9890892FB7AB653D27E2633AB532F25D6EDE1857DB4
-C1F451A24EA87B44C7CE899D4978EA02D57085859C57CC3F1179AAAFA42490C7
-DA9BDBB4EDF14A2F18DD23B43727FCEAEF202CA5A65234905E786170816442CF
-D6B62BA8F62C10EE680DE45AB210E79CE579DB97E6727D763F4B9054F443CABA
-76BDE6AC53B3DB2F1297AFDAF08ACC65EAF52597D52CB237ECBA29A18AF0C0BE
-8FE6FA66CCEA594306E6F3AE4B9E21BA245325E122B85E38C3DD1AAF78869029
-377FEB743C8E393B1CEBF5118FE83D9F35B7F94FED7CCB0368F5D961179160B3
-0060975A6E3A783ABCCE964A7FADE8A5C8BD5B2039247E9C018E827AEA49A311
-ABCEF022A409DA1D18C821DF8961891AF8DE1AC3E4C4F41F17B8E5661B7C44AE
-308824113BD2D15FB2FCE33EC549E4770E65CEB695D0FE7B5377474B61759E36
-E4C91AC5818A3328B030125132AC01CE1D523E630391C1D8993B4170AD45352B
-6905F6E2E60AA156C0F5111580622309D79CF79EA745830144CC8823B4B5B330
-54BFC451FD8CD5FF0E388EDEA82764535C50F417A9DC659D8326BFEC6E5CA9D8
-D34BA3C647BFE0FA7C8FAD2E87A658F558B8F627C0356DDB161520F1640386D7
-4166B19F03C8024D14BBA67CDAFA3504FE5BDBF8A19E93F313C9B5C83296F632
-3E814A5F5427196DB2633B363FEA67DF56AF73A6F78A28B81CAC57FD11493B1A
-9233A404A1E8CBF2E5E4519A97070049C6E1C389020DD3219ED5D06C044E0F30
-DF4D4B472A3D0BE8B2B554F7244ABE708803E370C11E70298B1AF1E25F2D262E
-4134F7A239BB81496BCCD89F963783CE73442D4305E9EA8D2D08016BECBCD25C
-2E7FA6266569E55664DC7C43695B14B6FB573136E8E5B2D0A2C5EFC1E56A9C55
-021EB6A716D317768EEBE62439B6714F15EAD6402D6CB18772B202DFBCAF4A72
-01C041ECA0CE48C2D458AC0DFBBF9327D4566CD5AA138B21C0578718629C8EF4
-FE605BBD9FF46DA1FB9EBE950D6CA66A02CB7E640DCC0367D635E5CB62A8A35A
-6FFFE390984900CB1385D1C5B708F743895270823715BCB69EEB8D8F36874F51
-A0972B68861EC54632209346594DD1273BDB95F5CAB8B463780B97017348ED2A
-855AC367B9BA949C4F6CD562E6A4D8D49C133D5386646F9428D8AEB6790A33E7
-CE46937E6490E148362FF3DD636512B9D90063425D1BCC351789EBB732209296
-0B45B053697260E744D820447275668126FA78C3DBCB60B0C25230F87B8012CE
-E09068065FF335343A90FC6BD7E62793D1E77DD557CA6169F80484F7151CDE5C
-47305AA06889BEC69CB34B6678202DFF80A0B3F0D345E5C2D0EB04DCD6A378E7
-BA57A2A5EC3F26111FD8C0805ADAAF0355D0CDE87A01C7D8DFFE2EC6A870E173
-898C2B3816CD777C55A7D786FD2BF098CF4C518C728898977D97AA5BFD152219
-E0EB9D3DBBBDF115AB3E253060716D62B9CD254DAEEBE134625069483B82AC4D
-2730EB6AC36A7BA36DC79D8C49FAE2E47F54593A950B869CCA9C4ECD4E93F465
-B9D4513F8BEFED9EADA808A7270CDDF26F3215F0D11373988598C514F9F63BB3
-D49E5F4D91BBC63194EE89C826F9AA488BEA86903CF6A9975D9E2977407D3FA3
-CFCAC175E2A0FEDF042203C88CADFFC1FD0D03FCB765A3B53516836CDC340A8B
-07456DA4DE5BD8BE4E0CF3262F621FF6013F3814961C142F8B4A2E0AC9FC9442
-BC9A4DA90D056F7196DB877078B5A479F2AE9C206BA0CB36C1EAB352972F21BC
-9EF53807A42EEAE6F55CBBBB99E7F6CAD9228F9C69F0AE42C1290457E74179BB
-E7C44073664CB4714C8E56E02D4BF30458B111E0611800C761981DDBA311070E
-E2B1F37775E0C98009709E5C92595B51B5C0D397DFDDF558AEA81C600EABF0E5
-BF0514311C7AA66C444C3D13EA48DBDC5B8ACB12F31BF6225EF1CA6D52F3DF87
-07FF7B7C5D60629C831578D703B70E365E05BB1C166BC09AA6445D149C132589
-12F4EDAD89D1364AF705F5CAFA2A676B4825DEF98F313F611BFA9FA840AE88EC
-AB4B29E8C61162BD9ABC7AC2540AECA52D55A5277035DE68AD43B0A6D5B420B5
-4552AEEB397774E63006D34992E1755C5D0D51161C46FEEDAAA059CE145FB14D
-53270F269340C9BF94C7C1717892327547568B8B5D339664A59A689B59728260
-CF3FD421110CF5B6852D46BFF6E57C26CBA870D726BF73B04A4F83FADC8973E3
-071F7AEF640E838D64B9DEE76C9B9A45E3A6AE564D65D4A5E8D94019E2860283
-68D9228D386BBA73286977CCCDFA092C5DD868936F9DD875BBE83478F031EB03
-D2F92BCA8EDAD6D72341D7A906DE3DA431B65B4CEB8CE79E3AD78BC939EF5671
-FF65A3C67426AE4E49E45F4C8154420E0647883761376178AC4167D0381EBEBC
-B59A48E2B68AB15A2F99F44D6C6D6490CD60878BB9040DFA6A28DCB35F10515C
-CCC43ACFD4E5B75955D307F71FEE3DF10A386B85CDF5F1033633C6EC369EBBA1
-5A415AA426B3A8B48CDE6F754A7BA8072AA99BD61C501142454872E8FF69CDAC
-E63350EB72C2846AE2991E936B1B1EA4AAEB47CFEE542784F5158301015F8D10
-5020956399AA8FA4953F632EFC02A3738297871E55E1B953F0A4C6CCBFCC2361
-261ABE986A2D9BD1658B4C5BBBA208BEA23F717F0314DBF77F264FE46BE92831
-3455CAE4111E9E291E85F6774106B2F9D9339F28FEAB65B95619B07C150C3E74
-AC9C8BAB4ED7C35DFB3B3CC0BAEB67C0D49AACE9B5128E25E471C25EEAA41B8A
-F4E6043DCFB80A35FB7741F0B76805698574941039A897A703F109C6B5597919
-C3CE868E5871466E683B50088A70A04DB9571EB7A5947A0BB2461F222E0D1307
-CFD27B25B505F54CE38AA58573934EBB706A72F13D6722D5CD68900B196C59A0
-D457469D5C43DBEC8EAFC88F91AF4B363D6BA39D11515D446830E1A51777D6A5
-4719EBB6D0F2B04EFCC53AF6BB70CC5B7FC88D74FAD1065CCE7BE5C545A11E30
-2E66C05AF6354AB13CD3317ABF745FEFD8E38DBA4D1AAF1641340B1E940679E2
-9FA8B6AAD0D37EE6367E0E7D37F4F30629A54D3438BDD89D6C4EFC3C3EBAF606
-0508ADBF71E54BDDB4B58704EF6B0554DD6221FDB431BAF080E6404AA9E2153E
-FD34D3DCEBD3B1B7D0C80AF5EE4BB255BC08C19B1B06C7737099922BD287ED43
-BA5DECAF672051F967E0F3E9C0AADDBDA2A2546B6A56BFFD0557C864653D418A
-4B1B7F87336494CB026A466F8FA6E492D1CDB9465FBAD7107DCC537D7F00C261
-16AB59B2ADE773E9D6E386DC1ABF23C612EC78058484A5E1B4D293C8D88C8E54
-892CA442C9DF3A16AB1EDD3A673FDC573E98215AB675CEF4A3CEA6EF11F1C4D2
-E643C433E6F846C5240E85DD77E8F55786F3D8219D851A4A2EC3285A8921B640
-AEA54076FE2CDE81148814D5B44994BFC8B1BA8AA0CC29D55B9D419671E75093
-86068AFCAB7CD34DE7229D555F36129AB6A006EA7B022D66CF9054994E55D1FE
-0194638D21916C7DC85335EAACEC28D880D56A577C641CF1EA3519E13DCBC518
-42199B2626C95E503A4D616A255D4189EB395C5B9D5E421304C3720C90119121
-DA3B71761B7D3B88EE8F9E13B645DA1736F6127AD06F9668B437B80B9811999B
-425AB8E41CC713749D0069700A8D4082388F6B951777D0D0EF327326A545DFE6
-15734679385D5B51EDEC0E627CD66320A3C8CAF528FF63DC0EEF4EDDA1708F1D
-54DE66CC8689845EE2C8B199E53F2176C8DB8C16871A95F1C2B75623E495DDDC
-DAC40B2F0C2AA5B4BEF34E85F7014C942EB82771ED07399426C281E6E724B4F7
-9EFC644FFD0B36835D9A29052E3CC2793CCDC387FDDCCB0AC11A01332DF05D4E
-41FDDAEE1AFAEE91552789E9FCD645FC38F78E6354F28F1163B6E5F808A032CE
-296B1A5F44419FB8D34D183446B99A294D9F09E7CC3E8CE953C6971BFE5745EE
-6FCB7CBC1FD7DA6CF93FC65651F89FBDA2D3550DD04C1322F1FCB570F4B5D9E7
-C3162603874B40A18C9B75D33D50FE11BF835C06C4ECFAAF22F9087AB241C594
-CB769CB7C0E2396AEF11C56614DB1A25133209A780AE81C2829CD20EFA1435EA
-79F444108EDA18958F4F7AA04FB1422C0862C2DA45F6F938F350D07E5CA0229F
-4544185723144F9C57AB2A181EEA5EBADB6AA8354A8BF652A2EDF2E7A6BB9713
-04622F85744C6D8F818C4E32431CC4378DC69760BB773BA6D6094172EF07F4BD
-5ACEA4E89A41C2E6795E238A7D7FCD4C26C33B5FA65FE89153F7E7B630E4877E
-84A05776358376676CF0E11430649DD800737B8F1C91E9D822059DADE8C2C0E7
-89FF613D5B1CFD79621A7DAF5652B54B8A2761FA1C545AC80EF60C77861023D5
-0E64B65D1ABC28F524E92068ECC137E5A250F8C2FA42E9CCFB122EA19D4D03B2
-EFF72539E6738CAC2EF2AB949DE2228358EBE2A6DA9A6674DAAEE65DB92AA466
-7590B88165E9484AC4E7D9C906966AF728C7B55AE1788CBCBABA26F77BA0F226
-501CA47F81B4452197D80551834983FF7388342F85525211B5572A1E057F9E64
-6F4B281AC073401CEDEF2020E990A4AF3020F33DF136FFBDB087A4F62039A3B2
-BF1A96553CF5B0165FAC89CA21EC6E9A23F8EF5ED3F57EF1DD35C3E340D74A33
-54221A264176C1676B0A1290B13E48A043E51018666077F171D17A9A62630E33
-72D873CAC592E127EB2E2D2948A7E990674F9132B38C49BE15C335C661311FA5
-C52F446427496227B6AB973A9AE3EA5D5FDB9C4A24AE4451F0F7A05B48140B48
-6301522D8F130D5CDC8DBDD297E0F179B238642E2436B5DB98C0DD43D2B50E7B
-6BA30ED317BCA71BB2B109E70C982ECFE62821D38619B31FBD0D3917628C4BDD
-BBFA43DDD2D2AD28C8709ACB321570A99FAE28989412D5E3E8FE93A681207D28
-9BA01C4388EE00A94E09894B7738876110397D2D40643EA96DC8D0C780C22DF9
-5FF6BA8F46FCA42934A66CAB425270DA12383823776214FD2915C26E0228D948
-56065D62BB717E150A30CE77E8ECC4A1585CD0ABA26DC36231820B9057D9D270
-5050D4C18D22BB970709D6821D6F76F9DBC16B2D1EC6E5BE6C88DE213DE46A5C
-220529B9FEBC3A0CA8D176EC0D74E32AA5CF7345B8FF8F4CE7051C6D4DFD66B9
-EA8F8BC928A6421A0025B404E263F49DB7C54CB7C08DC783FF10FD24068BEA2D
-B0AC7AEEA6386EF4C98DA309231BA3EE83FE788EF7381C7ECEE3FAEB3779CBFB
-E51AFE29D5C49230BE72ED828339FA5F1FE9704CF831345453A84072F3312CE3
-C066947E9CBAE98806A87240022378C2D31F9257A54B0FE5D020F5BC0EFF5479
-CE50C2B49844B0B25E0B32023C7039A746F092B1775D7780DD67A2EF4A147439
-E7E1B3D4FDB73762EF27F5F3A495E60D2DC4A54FDF2AB3AFC054CCA17DAB27EB
-0B30EC4D0922EDE2B081908603E20D88BFD20221CAD443564A070ADCCE970A17
-7BDB1BBA43F4A1FDD52B849E516B1FB2EEBF91D2E6B6D1D4C10D2AF4EB2CFD63
-78B3C368414F2BA66D9D3422FD5164913495FB75B6DF1093A7C238F313AF78F4
-E48B4248C0841F0F4D1CC2BA47BF5E06E133BCA2323F7A9F2C694C7806A17977
-B83A7A714B48727D291325482D96220CDD4DB1A96089C693E57E275225472B9C
-217B6EAC289B8EBBD7273431B1BB1DC243D4B2CF94718C0B2759313D6551E1AE
-4C6D3A92FC3381B1F7E61ED04B063211379C4B88C5C6F22335EBDC24CAD8D9E5
-189A22C3D6F54428F5E2FEFCDE5C0EE2131C519A0DDFEC8851C02D82B5B48265
-7B11A40E8793300CE171853FD82874E09D814F5833F04441329C6650B0B7ECD3
-7FEC743EBD43E7F88542C389BED47D31A10FD8E02C23FF191B9F3174113723DF
-934E3665A5034A639C17B3985CD6D2F1CA289146581EF6D1BE3717EBC7E6A824
-C3D2290BB60244E163D213FF98A281FA409513AED35F15B4097FEFE4C3AACB03
-613570E1D66D29BE3D14AA5F3266920FA088D33948D96BDBA0E3980254360DF5
-7A7E1836BCBABB7BF9C42FC87556F8D08DAAD6249B65AE106296BB7F0C36A86C
-1A7DC23EFB77AF78D006DAFB6A703C6C1A16EDE52BD2B01A4218AC671769409F
-90D13744FB1FBF1F2EB3DA35F5B0D13F3862D69EAC091D48C57C647F71A0D718
-233F6A7950A610E1CAA551BD702098466A9ACF3F74FB64BC0DCE6C952DD26739
-857084C96302B0B641D425EFE5A2857DC340BFD3B8ECED763B298137E930E6B9
-A3C2565EA96CD52BC01A2959B21CABEF6DF7837DB737E006A72E5945B076F197
-84EBD29B05B50A78C92D0F2EF60C8842F26B506C1BE919590F4FB4FF34923664
-868037BA9C227C790BFC0DE4DD05D54D975B64F845540CB8CA4A005F9590B511
-653C782C81F0D64F3FDF8FFB627E985E877F41292BD6B752F76AEDC9846A1408
-F3056CD2C28ECB255B5FA6F3BC782A2A194559F33DE3FE01B5FE1BC223A15E2D
-19A2E61C48BDA40451EC6D1227724B9119D0F6BCA1B3E0394EC201D29EE7BD06
-99FA5D7F79A7894B801983D18A2AD3FFB641EEBC30313EF5F0E7524D1FD1FA9E
-3E996BA34FD8654EF1CBF0AF94929B7FE3B59C3BE1D1328CC1041CFDD358C360
-C275535CE03332E745115BF3212802D0AEEA8B9830E8F22D91289B531EDE024E
-5529E078B3F07D44CD0CED639E3F6307F3A5920C80461653CD1165276A9A8406
-C977F00D546307433DA39B3F0C7E77FBC3006B9CE33A9AF600A2E77947808B04
-C8A8432483A92B52649F0DDABE5DEEC492F4057F971D217BDAE50F2E9068F047
-65C9DC2BF810FB485424F1EEE5481F0A418BA3B04B0982F7645B72EC3434463C
-D7AAD47D971B0EA27F08B4768E5534C91BC97A55DB0C507450CD8A23A69C69EC
-88E3920BC8F2546A64F94DFF27825F40EA724E372853B9D6F88B076B2F3048C1
-418296D7C1C334C7978CC9CFF63D389A272D089BE63E2AE49B3111B16D7C799D
-6C748B8215DEA3A0B3917E1BB566409EAD33315BAAA2DAEB3D8CF0249D77CD6A
-B249757258F85CEDA706631A3A744B58199520234BD0CFFB9A2419ABDE6F672F
-1A17FF37D2F90FBD4EB7FA6A61D8AAF46A0088E5A4036BAB380E009980E4E046
-D44809CAF538BEF8A6A9F9FD0F79292B7E957C9ACF483334DBCC6F74BCA0A65D
-37A6F17FCB125391F0D08E5D2D103FB724254DBB0AA13D402AE99184C3769CD8
-B815348CCAF561F9D0D9E822616A8FFE8F8C5551BDBBF975772D5950C89F6205
-76477756526F9E1DC50AE067566B3BB8FDCBA50C3240425FDFC0ECC4C13F61CF
-C531DCCF8409AE8F982BB83DFA61127741962E35F961259B25CFAC3B8D4B7661
-84F2B75F8675AB774DA36A90FAA5203226CE0C1559D9EF9548C42AEE0981EE2A
-ADABA93DCE5749C832D6346536CC1B4EDE38FEB505C691AA2F16249555C51387
-0943062F78BF1D3E2E9BCAD32360E994A7198FB6FB73BFAE552DA090330B2EA5
-83BE32BCE7A118503C991E52A5608FC6FE369A851E21F52EF086D5290D254138
-97CCBA430363A3E9A857949EE4B0038A46139B938827D308DF12160EB4589AD4
-51F43C21C6B37F774170B52BE4B9059F4145B1CE0698FCDCFE0219543AE7EF0A
-581F553986F396A9BF2DABE719F5323E022FD3009D00BAE068481B3BDD54EEC5
-2FE03CCF1026000405284A3B0B4E7CAD80CC4715DCF9876E0953529FE25CEFD6
-E880F78DAC530CE52CF4B386DF921B4FDEF292C1946E8592C991B4ADDD161CEF
-343920F9D643FE7E4A134B301FB80E9F250E3D4103A6A80998565F1985517EA4
-A08B6DF5C3B04A5CE9C2E195C9F616295CEBF166EA762DACFCA087342A95CAD1
-7CF50A554DEC41BA6DC058B8DE3EE6C915C19EB54E7BE62D27A657A5E25451A0
-9AA9CF07C84F0AD930D7289E5A89ACF43B325E7AEBAE129D1F9362307603BED2
-47EB0AA9506711EB69AB7DF32FCEE97D305558147490B729B91A26BB637800F0
-D96E0A0B2F8CA9565779BDD5AE2C8953215B14D01C97AA2E6F222F3A334A4260
-793A569202E944082A535376E6C43877C42E7AF340DA943A3CAA65DE36FD7D0F
-63D5416A652B245183BC054F18B9DAAC1B737E39DAC19691BE14E7C34F2CD914
-9DB9D6EEFE763E88B68C3709BB720CB64AE6B53D63EE734EF705BAA0325E5B3A
-01615DCC3427909935A63DBFAE60ABA2553F4B902CD10FAE937CAEFF4CCAC346
-9BE15D5216E6AFC9EF9DB97CBD0BF84C1C0D236677754E7DEA7E8D7D70EBF3D4
-F76F085D46E3FA5B54BE692559C6A921450A80EE43AA32708580A635B3E111E4
-585ADC605208EFFF7DA65F2AB7CE1BB3797608661F24540B65B0BC2A967BA0A9
-589FCC9E21FECE0DA26FD85BCD09F79F2989B284C5F688264D43E6F2594FBFF7
-8459705BB01BA576EA4F2EB28BBE01D9178313B7B784E11F9E214CC3697E0DD3
-D71068D077867578033D1C6DECFF9E20EAB41E79D0975A99D16C886EF3452F26
-BDAF0D59C63626434165299CC6B943FDBFCFAFAF0713A07E6785CC8E8771C080
-EC6463B0FBD9903E845525CCD2DEE24A11C42C749AF67B67EEFA096DD5860AD1
-75DCA722CF280C1D76A0BE878D84FB69A34A8B5FDC115FEF5E11F14F40C522D8
-09B058982135D811ACD94E29FFF3FF91726E8E981749AA281DD237B12F994802
-530DBE2FC4254243B0D0BB483BA0F0768AB055EA84785E0E6C955E0BB66AF909
-FEFABC824EDCA7F8FE1E1D4B10D618A9B01D29ED46B5284C2BD31617099D73F9
-E33193ED394F895F40C941206876531F8CE68F6682FDC0D7110F3F72F1A896B0
-64C752337D910518EF68FF843EB63E62D466E328C3B21114E9B50C94452A0AC2
-5D145AFC71665D24C1B357B7C33F3062F3A3C62C2F261C116E6E66B23D86CF00
-497189200BD200A9CF608D78E4066A01CCA2B61D6062738B3915FB7F1F94BA84
-EFB6E7E43F62082F1F51073651925B9BAA1767E79317C54377ABBEEEE2FD8485
-FE1399F5F3DD5EDFD3003C1ED74F6A5DE9BFC51DB939E55DAFCA94D0E89323DB
-68A8D52F0DF168F4ADFD436E271AD2DF4376A835B886EE3565CD2FCC642C6B3E
-A01B998060F6A132C78A97D45541E4A2B6699C07AC6336BCAD8C57FC5AB74109
-D6D1AA0CBBEFDF35A43BAA60B6476F92F6BB85B3BF63A4CDF10824FB8274736A
-7FABD17B443D69DF7CE29B45B716F3F5CB4B5A4C71F99D4326815C4072E97508
-A6ADB4C48B541B724A3F3BD80FF1463B910D1091C1BF280A1148DEE7F1A953F6
-61A006B614AD830337B18F5D6B2CC0EC5402E6FDCC81B76478AFEA9EF6A6D5D6
-7B09553BFD0F60AA2B36C1BE3C30E64DCBBA143B8F83644B6A7A1056DB08DBEF
-846043D579B9A1A88662B4FFFB80018F9DF2B0B1292497EB1E0F19C84AB2163F
-DFBBCBDFB9A487F0A825807A1F12CE7BA75CF7436F88566D31472F4BCE1F16AB
-4441202980DF34AC9051E70171DE69B8C8B03D0F15D7BE95D3D0AAA6A82EABC4
-2AD24F67087AC91DF56E121DE01CBA5F202730889A03BFF834392D7859EF5BA4
-F9AA6AA0A082C5AC36CBE22668787809EBF2F471825655DC4FF532D1B4BAB278
-D0A775D3AF92B850DFDA1B7D0AD3CAE7D009CF0A12186160E29744FA239B86A8
-8DDB50CC132381EFC8BD80BEDE488C858C66966D8E84C67427A261AE1D50E127
-0FBDF478F15FA5CBE925F753FF13393BCF96F0E4CAE6C30AB6FC965B9DBB894B
-DEBD651C558430F620B47EF3EBD29F239CEBDF6B89B7B94D2ED0000644CBF1EF
-860DF2EC44A444E5D0328A5343329899A661EDF3878AE2C09935E16697563B20
-073A6FC372E76328803DA9BD7415B44F0B46ACB8321CB49AF1F420EA7B1D5F99
-2300AD9E8D4E8A66FDB767A4227D2252A61670A293A79E0B07BAC6BD0F12D8B2
-3FF4E170D6D2E8A0A9746A76F81B4F2FEC1F7050AE35FD468DC400626295A4D2
-52A1E243C4F52B6294F72141A0AF1A04B753F376AADC56359F7C4ADBFE79AA68
-53E3990330F33255287CB1192AE506E36FB3C3A00F2FE277722D48B526189372
-412F957A3D33F9B642DAACE6739B0096FE4B51E6FFD06027F7339778CB5BA57B
-34EDCF26F51A17C0370202B3DEAA2175CB97DFE6EA831D241DEEF080B233E87A
-C18672E784E66DFEBD46CDDCA5F4D98FFBA34D6BCB0DD73FC52B5168A35A7075
-E06D14A35438A35CE3D3540341C62FC9D3F1ECC4292A4783926AF2E33A8324CD
-87AE643A10E4823CA797A6D874840F93565E0ACC14E8B15A367ED5B34C920F03
-44E5CF0B77F25EB6E156D91DA019D1DFFFC07DC721F1CE87EE0B5798FB05CBD9
-AF1A1B537C82516022D1C455BB3A7400D311135F91293DB610DC5ADB8726D71D
-74E19DFCDA3C9C974CBEFA7DE04D0EBC0E6F36B76C0488275177AD779ACF91C6
-557E6259C55186992A07DA27629C12617EC2AD99DB78747D903606B1BD731209
-368506CB88E926D33875C1F03A076F1E2DEE72B04AE9CBBD637BAE78F85D5359
-F12FEFB099E7F79F9F4E4BC19967EADE1C774D39E17283D640CED5EEBE5F7065
-B9484913948988BB6397FA675C3CAD9184AA103ED711647FC1F2447B89A491FE
-07F08861BFDD33D8BFCC29419195CB424D7CA739B071A6CB48AA07BB8D6EA149
-6D3E5F0A6C0E0810FE6EA95067216F4948F14A1B5BA099FACBE40AF2EE31FBAD
-CE4203CA3A448255C2E01D848E1E16A06BF4911B3B6173DE296F8D599353943A
-340B7AAF53ADD697F7F0DB8C7AE71D41291C14A6BDF48437F53521C5914DE245
-B090282984C7A044FAB93B310717E1CAE827D3709FA4B3133F4B1D48793C8B67
-7520CF5A1667ECED10F65156FF80AEF4223A3A1DD4A2B5CFDCEC54068A5110C9
-B6BE775E937F87F78BD610C30F41FEFC96CC425E1D399F87FA4E224FD6DE6156
-A6FC881D166C2EF51E74020A7DA82C23C1B44D742DD8AE7796562A3FA1403CB7
-72726FAF5243AD865F16E1C7E9CFA9FB07C8D50EC46E6BA6204D7633595D5449
-379F93B7B5DF609834A03FD494DCA24C38988143C9BE067CC851E592209CE9E3
-EB91A4EBBDE654B21162D7E5569CC136C318EE081E7843EDBF9EFFBAD2372FD6
-A8C7BC331E304175AEF4542E601C15FDAB36310C7ED2531B06E0D8ECA422765B
-8FC546BA663B30831A2C948AD871BA3492A559C9E167E722EE6302981C66FEE5
-C8797E4531EEC2EE800363BEBF135FBD49958F17B3C714E30CE8150FE6B10C14
-1EE290B785A68646714C865A5525935AB83625D1C4B36030714561BAE2AFF947
-9062EB00A5553C70541C072627F4B2002B273098EA313ECF8D4304D89E4D58E4
-8894B1747BDFB183AFC1AAE2D4EBED27037840747C2B181EBB4A28F7DBB69AB4
-B1539E8256BB8FE1D496FD20C27E4F32D760A1589F1EA8B1892909A3FD5655D4
-E922F8178C513969267F3DBB4E9906EB689AE2CEE01B7E6242B2ED98F7D10FA9
-48AFDA10679C4375A6EEF12FC20DD02D21CC44995559839C1093E6EA7D867D2C
-A7EF5DCD6238FDD38A0C368F199AE515C8546F8BD511C9671510D335B769FE8D
-DA7554FC032DA527C628650AF7CDDEB5F0A17ABB3D30DAB0D264E523510351E3
-95B89A8B4BBC739708A9F6E2A9B2E1C246D653CD83E94847FD563F76C0F97E15
-87FBA4C60C3093D184F41BFCB3C36DD5B64D0B54D5BD45C36F4F0CA49B4B3871
-D5D7AE4848B3545FEE5508A5437B6336B0CB1BE95C52C4A956830CF0C5C77EFB
-89AF33CACD05C7BC3DEA59023F12B4DFD425762683605B4D6D0578D26C89F116
-46D81D0077CA9E1B418DD33BE7BB7FA0390C3015A455BF34F9F5521C52050B8D
-C467305A567984EF85ECE9BA26A60A81C57480E1342E861BB24C5DD2014E32AD
-51C74DF5EE6621532F926839C389C6943D1CC25957578BAA1FC0E3946C1198E2
-CA33BDC0CD4A7146C06E9CB7A094BECDAF9DD2D8DD90398707728B7CDCC0F512
-5587FACF96DE3C0CDC40D11059DA30FC8266120F94E6760E57AB1CC6F97A3373
-DFE6E49474A9BE9BA57B204070A2181612F62C2FAE9F76FF53E1EEFEBBB418EF
-AFA5D01FF7E2AAA3FC8EF390F1C90F81F7B725F577DA9E3724E4DB5D8B7EE2F3
-66989DDEB59FF71BB3FE57CB6A199A0B8904A00E7690269B916E00598CAB1321
-092F490EB7901D5E5B0CB4308CA693D9E89740F7FC86A294EA94EC5AA9E5556A
-A18D56E6DC6B2D27742AC888A0233E23F5DA77B88257AE4A4B50EDEA38F3FA61
-1E23B6269E9A41ABDC22C0A8365103F27E508737038F8E1A60FD47452CAEA728
-E00BFE2CCB5CF528295D5E689136C5637CE2FC9838AA32D84C8FB5E26962EF50
-0B545B5B4DAC2A05A637074F2514D6CEA7A69CF2F88A05C0FEA61B6042E92A46
-408DF757305F686C0E3083A06833EC9C8B2B23B6649815307978F32CFC60F17F
-DD370E1C0A7E5E764D212A1F385CC73725E08ACBB8CBF759F66AEF5AFF6C644C
-FA9807EDD1706D83C8A5C88AE979700ECF1FB3BC3ACC1AEA58CD17177289CB96
-68A67167CF719FBF54BCA2FC0338CA22CF1BE9E6DA4193E0754B5F3F0B5645FD
-19B9DB6503C2F6200CE27E6CC79D0F10EC7114E5CD60CBEFED555C8FE0F95209
-B5107D1181A4B9D6286F3DD8E664580BEFDB436E3CF716BAD8CEB658086346E7
-083EB572FDB69BDA6FED25237CFDC5DB6F1BB321B27F61C5E5899674AE1B0808
-CB878023FC1CA40AAF6E4AB02BF337FCEA41A20EFF533A03FBBECEE5CA70E196
-820A06C57FA25651940679389DD522864DC5FA35107087293FB21F8DD2C3BFF7
-4F4B5373D363BC73EB8CEB672204C8638C9EB97103590EACA1F0F3151A57E436
-AFEC0DF129291509AAD40E6BFAF8E324CD9C17AD056FD9C7AEDDD3C4791C1125
-56D15190F34753ED08855C8D1448F39AF103706BB3BD67716C0A96DCD01331C1
-F0B0C56D369AF5DA96328EA85DA2C427BD9BC6968772330442684C39CDED9D16
-F6F25A9CBD94F9AB4942017F4551168B0DA8A940668EE04404E5A62EB7CFA744
-9208A56833949C989E2464E4D4CCA2A956CE7DFEE8B6FBD69983362017FB07C3
-DB2DD65AA40E019BB3B4579D014FAB4892D5CE63C9EC14DC71D69D86B3840B7B
-166908760E4E2C2A598C71048E222E0A694EA77CE21330DF75433BA06F6B93D6
-C7A68E1D370ED66AE05C03C74BF2CFEC3C1231856F0113A11B84F5E975118955
-08FC432A4EA0DE469CAEBDA7800D2224CDB7E386F81E4D27B37EA521E38B1ABF
-61FF132292B87C362661225E64FDC8E9E45370CADAB9B57C9A0CD09C699D9CF0
-FB14A3ABCCB87085B33A08BE932074A7E10F5E733FB981EFA68F95DA8DAB2886
-8272D76CF125E81FA01EC92474431F9BD17EAFF42437CA4027E5A68526691A76
-A3767AC34172C5F509D8F6D3A9056F02D3ACB43BB5D70D8B24F5CF8A602F263E
-1BF1184E4A12BAACD82529BE2814E73038AD71730F2AD6EF0DEEF2673B0E8600
-50D316A9988E3B35CEF343B0E5F24D0214BFB1DABA00387677AE8D16FE961B47
-6E56551AAEB6AA9ECA626ABD01CA41EB6BBC15FF2892D7675F23F8959386F24C
-170610025CC0F6724E975DBF843AC45C0279895274FB57091432F504051A52C9
-819993050681762E87154B8000D436B04768061595694649ABA87131B0B8B850
-9B9AC65D1CF1CCFE6ED073AD680E9DAF2FFF847B216EA50FF97C2E0738E083D2
-54C9BD239B4D23C32A6B94BAD95102F70DE6C64BA20E480D6BB8EEBFD755586A
-EECF15900961CBA26BD6FEC03C3BB51A5D17024CCF8F054980E01C45BFDC1F18
-CB160EC8722349AC2CBD62B12F0D3C3555FBD815332F15D4BD3C833B4699C5D9
-57F84D305C363D7387E4011C025AE775E218E8BFC12C8E3727BC4D0D28BE308D
-6AD7E438094CDE7E2660234BE947811965606263564C7CE66853498677DD8F28
-943CBA9FD54E57B1720DBF90F6E399CED323AC651BFC4770911F515CDF8AAA69
-D2E26A8CA01859367931A33E96940EBFE29E653039622FC202A2ABDE7B451B00
-2E93E8AF6ED01D1E1A076AA60AE5CC51406DF644586AB7A9E1E20AD183AB50A9
-CF331A59D7691685C8D50EF7B473739799236302FFE5D2BD3FEC9A825DA4E686
-07E2108E32AC88F180C63C16BC300119A912D1A3D2ADB435EAF8B4B1437620C4
-9BF07318952AF158B6FBB24E3BC8C79949119CB8213864FB444FD39344C696C4
-014975DFD60E5793947D9985C668186CFF156B5A51A101FD652BC65B945EEBC0
-629D88593334CCFAB38D5E13A05037D5D91DDFBA4656494699C6DD524EA39B50
-3851D7F0FDB6AD2848426787C8B8F7C5A65CE9ACC644636D236409AD05C7AF57
-90350464847E98E9806CB4051992296FDE0D24EA95814A8F7B1FCA2B3DD7E1A4
-BFE0114B02876615F15E3BDD86C4D31619007E8FDA49EBEA8927EB28FBE0118B
-5615CF1A2479B97EA9209B2336D796934C2ACCBD815A603643EBC010D77F2DFA
-BE1934ED3617FB150B2D69AFC9227CCF457C31B6E98148D14F22889D3EEBE747
-1F58CBB932CECCE24B2E91EC2CBB4852957B152502BCF73BEE6172AFC954B44F
-1649ADB935FB67389319E24F359A87C790B8E04D997F48FD97879D969C7F299D
-99B011B9DBA379F5A90C5889DED01E871C39B9B3BF2A5F54C04E5F4AD327227F
-197BEEB00E54FD85911CB14675B3FB5DA8B4FF9D80EEF5F92DD6D22F01A40B18
-8CE8F740348E6458B2749D084CCF21AD59CFAA438B5B2B52BA165C3776FA5FB0
-59F95EDEA3F05B82817790C2247B4D4BB6D04312A176986C4DC3EC5BC5BEEA12
-BA0892ADCD2E5817F971BE60529228E88173D053D8D37CEFC40A53E3A7D56655
-E78CE8D89E0C2157F462B91BF66562608E84A7CCBF0FC97DCE7C32F4937CD1BA
-5A9EF98122077CCD77F0D4B413D88134428EDDD4B408A1CA44227FCC064AF791
-74B378997106AB867A0DAEB81C05A0E52046B893EB3264B13DE157487A870B21
-6B626804C90CA35C7487D8572D374F89BC214C104623F4FEB3FC9921A37BFBCD
-5691FC8D34C1504ECAAC62E5639E3D603DEAF642AFB29D65510C4649D1E10029
-478F57006EB3FC50650C79EC23799E3096B920D519D2777C0558ED6148CA36A7
-6B7960FDA29951C6806E43D886F4E09885AC300738BB85CCF1B9DB2702B26D28
-E71E20C15361E0AE4E62321EF84275E6C38A5394071989EDD48A50717C47F6F5
-FBB8CE06F4B98303F87B580F791BC936B474EE9AEF5D0B520394D29864F54747
-312FD93DEEFBC9A4E8948D0F04981A4B0FFC277F5331EADB2C9B260492104D1B
-9FF4A550E46526E18628FBC914FDFE4AF06FEFAAFDB7612BEB08A8F9701CF8E6
-16FEFE9F3FDD4C69CD8B94E774C6D7A5D0DA3B5542C8CCB50D99D2AA72E775B2
-F492FA87D09BDFADEBCD184F03EF0E2D32E9CB8CE536793FE7DC4FC36D4CCE41
-C7E4832CFCB89AC3C2D9424032B5200C0EBD030450E1F187C05132DA4CE553CF
-34322CAE917D85EC50CE6B5FA5683402B23DC346ABDCF3E6DE9932BC41CAFD66
-D5458DBBB689B60CEFB2C684764732C290F613777624D349DC3CD27515F730D4
-F7E7452C23FD57E50888B33A9359F3834A45DD8372E4CE789A50D6B4FAA9E5EF
-C300CDFF97216429E2F04F607EC88917D4F37D54A92D2B7E071A556686CC334D
-ED4E2509248075FCDC6E9EE6B36E1D1A87F7E7A5AF045184C7618E9730A88CF4
-788A783A9F0FDA1A62AA5D739618DF70976B29E2070A5DA79E7BE8BCCA15B10D
-C3034F128A120EE0204CBB875525B21ED31171E2671A86080DB1708AA5095096
-87B4A93754CC6728BA0FE317ADAB3D080132107CEDE64DE0E8A2169FA6CA58F0
-C0F859DED55CCC42840845EE5126C67FB7C12D06255EC8C1EA8D0818AFC432A7
-BF138150106B06296C19F723677937F0EF4916D9867A61881813165ECDAEF3B9
-DAC80ACCDA42728B299D3162F604F8EEDB5329516C21A722B6F90B44E3C178E8
-05AF55DCA05DEF68AC75F1AA91613E34B528C9E104A8A620DD863B7931441F1C
-980A606A0B2004484C1A2E88D0AFE8CAA98E5A9064C923F14B2B5906F9DB8F10
-8DFD79F217C965308DAA3A6F387B0BBA044588845A80B3850D96CE61954D7E26
-EC7D7E92001BDD39F0CA86751F6FC4E987A6C3267E60C8A02FAF445916B9BB44
-2EE70009084AD0EB3ABAC072200D33EEC864D50135653DA2774B9283D8978DFA
-EA91B0B759BDE7867758493A9EC7251A7C620DCCC132CD154F2F66678BA89750
-FA7E3D23D3050FC9D54F990A6F96F035CFC231302DFE51D0139FABA75A23B168
-685DDA1C9E68236A7D19541193F753A633B103FC09BBFB3E6F384DB7639429E1
-76EF95062BBA
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csbx10
-%!FontType1-1.0: csbx10 1.1/12-Nov-94
-% CSfonts -- pfb ver. Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25027 25304
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csbx10) readonly def
-/FamilyName (csbx10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 444 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 686 def
-end readonly def
-/FontName /csbx10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 68 /D put
-dup 70 /F put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 90 /Z put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 121 /y put
-dup 122 /z put
-dup 185 /scaron put
-dup 190 /zcaron put
-dup 225 /aacute put
-dup 232 /ccaron put
-dup 233 /eacute put
-dup 236 /ecaron put
-dup 237 /iacute put
-dup 248 /rcaron put
-dup 249 /uring put
-dup 253 /yacute put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-60 -250 1164 908] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E729C1F3C653E51B9F09F139
-E332F81467DCD46C6B80A4E88E1FB2B35C9134E8C9E669DEEFA533F7F13511CF
-F16ED856C594BE960395D34E6F1FB840870E1390BD51DF0CB99AE59E98B369A9
-308EBD4D62411D723A06592B3F044EE52173E7B573E2FBC21F32D00ADCFD4905
-7907BAC782355B39ADF860CF2381EC0CC3136060C15C7F794F54FDF9445AE615
-FA03D051B337AB511F64C838302CBEB69E431B2B66B4CF0E61EB5ACCC8F55213
-E44FC7CB51E3ACC12F45BBEDC00C9A63A43839BDAD1C0186974C7539367FB600
-B9D9DE3DFCE060C626C826CCC9C6AF9B765C6D6487D5945B01FB21FD234A6D46
-FB48C4A049CA13C82BF001906C71B5E4C7D8317DEC3B2F4A0B8F28A9CA07F8CD
-FAEB3ED1ACDD5162F7D3491964E990EF808D40307E9FBDC0AB3B5BCAD56C895C
-C6666B4096AFADBC5B931D07B418009ED6BF9886982EF5689E1C67D980F16913
-28DCD11AF89476D84997CBC50E8E7942C3B7AB5C03A7DF37E3120834DAAF7EB6
-E1A625F38D0EFF2CE86A1AC4ACA3A3556D98D515AD265D35FCD8750E1F4E73E3
-A74900BDC6A9FA84C7A4A36214935A985CADB31B33706C0DDE055D4BBF888C0B
-38320A34A47CC395F479E84CBFB77BA6F9EB33F344B34D19ECD3466836255387
-772A0F959C9872EEBC9D69943B4CB8051FDB325D6277BBE0490A911DAE97C388
-6F9ABE08037B55845EAB04B303B6B76B4C3CABCA519101147E180A8D3CF88F01
-341CF48CAC41552A13A28513B88BB7322E9AEBAB1A3E14CC90D74A9E3AA0DF8B
-F3A5E867BD5324ACA963C4ABDEC64E0D04E7A4ABAD8BA0D11BE71BC655498838
-A442E796E115A5191B3204A7363FFDBF3675992925EBDD62DB735081E2882646
-E5BA327D733475DBE42C23E2C54CED537D6A86CE4F06810D4928B0D1C42A1AE2
-DE408273DDEB2CEB0C3E5CB9E9F04DFE24FDA4EDF37857AF78EC3FDA2FED6A9E
-DA127541626E0699B04C8D766749AFB2D3E936B57AE4428BA4CA687497ECE3F5
-499B20534D33C810E49CD8DE276F3B0D99C53FD5E9CCD27DE829BFF0FD5E4F48
-BC67A545E9AEF50C54F7246CEFA95B562529D99246B2B4F1C559EDF00E2F017F
-01506167129C32180B57AB61C7134AAA94335873F8D910851E250DC3AC668D8B
-42742D51BA8E9D80023BAC481D5DC2DE545CCA1C76119243942BC019A1711978
-9C7A58CD0337B9E03E8C7216070D6C30D4059BC9CB7CF58D522F7BDAED343F1B
-D91519C333540AC41D8A6728E403B9B6C2557C58B50D553E7E840AF3D8F2FBB2
-4CEE050FCA8E999F6F0A57FA60C5AF51402FCAC90EBBFFDCD49BD7B4234BD101
-4883917199634D4B9E42E7AED1C66DF3E0D26C27359E520FFA2CB398AF4BE739
-8025B179512A9E663932EA1653E8356D6E231F48AE1A891FD9385AD22654017F
-E1EA3A919C1340C53F274CC26A77505DF91CFEAA4851D98B50CA254A979DC5B2
-2B9A0D033B1C554C74679B25593D6546A9D962C222D2B31D6FF116DE24482DCA
-F77A75ED699324E200ABA06441CDE480D3B4F48441FCFB2201E73AD09DACB123
-7C54566FE1C6A389C946CA44A65ED628EC7D8A3BBAF38611611C8F70F45BE9DE
-26AB30F0AE1327A84398446751BE19E2BB5E212169E99334BA8E806433CA436C
-A6C520F5394582907559B1693E6E0BC2C6BA13FE5401931E8B2A0BF1F2B1A2D0
-4EDA053E24BD0261C39CBDE1A027961AC7656D1865A006D5B92A690CB90505FA
-2088A685E46121559A86E26528A457E181ACE06F515261A7422D11C58F9AA5F5
-86E65941910777868EB1272E4AF0F3A2E9A8EAB12FDC40D26058B4A42D97AD56
-452AB26415D69FB0180DE954B9ED498404CC1ACF96E609C2D5E056D16E78A580
-D0028C2CC6D745A872D038A67CB4EAA0C5A3A0A2C172FD42335166C2410102B4
-18F6A999AAD5FE7AF8CFC3EA743D5EAB9E76AB46B5A919054C70BAA2C6EF3C13
-7034E17A5BF56963145728CE08A2B18F09F5AA1B95071B32680F683AA8952DA7
-EA8BBD9FF5638653F13566EF821636ED5B86A283C50B73FB4A089F48CD86ABD6
-E35D47CD8864016BAF836233572CC7344F8F67FDECC31BF3DB16C57AF4198B5F
-A62FFAFC990EFB33DE8E6AC7F618B7350CCF2232A0702EC0937BEFB10281BE78
-F788BE6A89D51EB0CD6DF5012D0F4CD4019DAA9933702E8191783F481E60CEB7
-6752D9CC1759F6DBEC287CD0C5DDCD0EE94AE3C7911C92EB6F6A5AEFB2DE23F8
-42DA713A4445327479E29EC15DB887E6C67BA178C86F9A3763BA8D61892DD382
-926B8CD1C9F48EB5B074B38AA0C0AE520C782C68005E17179D80DDA6C553C24F
-939AACDB85AE39447EB0304C036D8FCDA6EAB3AA4025132552E48191A0C4FE08
-D3915C2B4D83C5DBC8F8FCEB4DB5E29602BAEF8EC315051303584E55427E1B49
-ED386C0719622F06AC4331DA4BF6A259823BD5F7219033BA82BF9E749FA73767
-009E84D45A60DF79A56068B345894F53C40114306289DF6B492DDC3E7599E413
-11C62A4B3AED2F5A10A974A517D32E9E43EC77F452A4974A0E5AD1A0BE300DE6
-BC0DF1662F3B2675F475E8345DECDAC564326380895C20FCE5C760D3E8BA51F5
-B1C6CD1F3B684AE3DECE3F2A030BC4A1EFAEDF5DC738D4E4D080C095BF6C4EF4
-846CF6BD53FCDA68A73E4DA19DD8CD5976E84ED25AD28F6F7A86E0B7D8B77757
-86848BE51621D6C84B63DB243BBCA42B445CD17F91BAE56DDA9082CEB3584867
-60FBE49CCF84716727B849259D75D2015CA5D9F773E62E6B4637119C5F822330
-1435877C2E04D12125E260C806C086B718AE04267A3FB688072349DB5985AF7A
-3EF437E2F168779B255B7AC238A894C34FFC25A6D92F74F82E47D956F4EC4DB3
-59E60FB5E9F3F3660E35EADE4AF7B456F27B35DD50E9FBF51CE92900C2EC5A78
-41102C946879558F6F38948DF2A5CD928F5E98B9603ED288C394B23B6905FB05
-97541D2FDB342D3AAD49BD9918D6D26300F55DD3320F4D69AABD1F61D988D766
-1BAFB931275BAE69FF410DDA843B37D7BE8E1FF6F01A713806F1732CB23567DD
-E34C2D0FBD53506EE3E134C6C5C6195F9F301A29D1AD0CBE1A60658BA1DC4266
-263A86A832E3AA4B6DD8F1CCF0C34FB65B044FA2E45FF2CD57CD3D434867C02B
-C5CB5262E2FB0BDE3DBA3A5CAEBD7242A5AEE0798645469C42F2049584773E30
-59D3E1293D69E97B52A9462C44335EF27400304F98DC7C5AE24F45E95F4FE9B3
-E9F4DE6658E90C8DCE01020100FBA898EA9691DA0BFFCB07B4AFFBAF27BBF5DB
-C1F6F4F6AB930D0A9BE3809BB680D110242EFDDA4F8FEA33BA8F45BD3BCCAB46
-C794307E700BF0441E829F8ABBC0A4303C1FA7FA6D5E7B4BE959616F0CECF008
-63597941F557757D89A622A3541E8A82B7200C84BB25C493FD1A0641BDC4224C
-844BA8929EB9FE29EFAB06EDDCA954512CF32B9CA01602CCC92470502FA72F4F
-A27D58A6EC3E221651BDC7E690F9C6B710982F9F5B97D29FBB2343C9DCFEEC70
-C3EF56D9DD5736EA30CBC7DD8FB02BC204C5590F2EAF9D91050C870456D4D34F
-67EC04CF339202F6771154CC2FDC0A048D3FD98C4E4987FE1E4E20C30D897100
-C62EE9974659048185B985E5621FD30C30F40D6C24E3867849FA070A07C1EB07
-C1DD825557EB4CB77503F422739BCB917B200DC83B4117CEEF0677F6E34AA276
-CC8FA8D83DDEC3575E014313DDFB9E99B3818D8BF799C3E0266FC61A3C3821B4
-49B028914C6AA1B87FA5A1B5C8AAB00146F01BC5BD1BE10CFAD2631234C16C18
-FF295135D2809ED96C28D55CC9995542E143A97B3CF445E0F76DB769AB960CE1
-3AE55308293407DDBB170341F9A97F383D6DC2A397818A070A504A179DEF4D35
-D1EAA7B784406CD0FF8AE1E8BC2D22234CB961F04BE70E8737F1DE77F768CADB
-A717D74D31B3BB3190417F7D240A1B5235C54A2AE2CBC44134577DC53596CCB8
-D70408D5256EE568ACE712556E7EDCF06D3610A7441731B1BA50C5F0BD700703
-DA62E88B09A09D9E1EB4BEC3505305A9CEC93DA675221FD64C03FFCB50629BC1
-A1E04AB3D1F638ACA59C7736F2DE8794B2BA32D291211671FC068FDDCB1DE76D
-1756A5BC3DF771911D6AF29EF81004828EBB77B67BF155526F868133330F52FB
-7CB8DE661F191040AF9A75E692053BDAA8A5F5C8FC940E5576ADCCCD09D8A143
-8038929F0F9439B5E87A5447A3158A994B6AC6C9A98C66340E528C0751DF0279
-A063A0415D0C700153CEF762F5854FFE7367590EF4534E4904CB41D6EECDECA0
-422ABCF93FA5B0340ED00D217C0D88935013B3F226D3C165BF568C3F2A4C17CF
-7D42843B650B1A08137F76AC371532D9AE7AA21520276393EAE292A9F344C670
-7E94D7AD6EEDBB6D1D2D902C1486DF350E44859E2B5BBCCC4D435967F476E89E
-59CE3E1B7E0D864881B2B02338DFB53DFE807D355B2FFE30E84C379067B7CBCC
-53567A621A575D0BAECE6ED12600EABA8D8C1D0CC32F25B3B563D35B66CFC4B5
-6769ECF4C359B674D237AA2703E335278A7D79F745DA48008EF1283F9B18CEEB
-4EBD7888F557E0338A77979751A2AB204A713AA6F5A89D3E5562890ED4D887C0
-2334D752C0038563DB6C2CE31E06AED59B3FBCDC57862401FBC525FED5847519
-2A3FC71AC25FA36816E5B0D1AE6F7A1C0604DED13A3E07353F6AF3CC4CD527B8
-BE21A197215610600E19E28C4F78C2ACBB7AE312E79CF4E0848E1F417590D90B
-276D02B34DBC350BEE9D0A5466F5603E282BBF0EDD7FEE162BCBD4D22C6AE4E0
-4FA73ABD25B2328250D36C7A4253720562BEA312F998CFBD823195B70E42BF0B
-843675E168A7B0E991CF2FF22256BA07ADF2E1D7D638B1E142CEAEC88CF24113
-85FB473FF7FE8E0ABCE3D954F872F2C7CBE1FB3D0B8DA5FEEE00E9BA66866D96
-952DA3DE095B10D5CA1EB1FD4A7E4DB07210DD6DC9C07D666122F9ADD34338CC
-4BF3643055BD5485FF6E5B3E3A31CEF1FD1926556A5DA3DA0804954F40561629
-FF8936CBBDC2FADBB87CF7005E24300138F7CEBF962170C2B0C156ED05C19EAE
-55BAE46FC4B93F0DDF3E16AFA502BAAC85AD1DFAF7B974E9BBEF45DD1B5C7DE6
-939C53ED6D183048BF2DFB5E211214B054E9802A55C8F16DA51FD7B42F2A9382
-384BC9A37B1E20E980DBC5746415B171F1EAF87D36605C168E979616E4D9AA96
-484A99E31DBF012F3B26FB88423183A5326FE13B630959029A1F4800FAD73E6E
-F92F8E16EB9F4D6E12EAA0D5E9888C04FDDBE194F18FB3D410D66419554D03A8
-89F5578212669399653FED55080E1C39CCCFD5970B130C0ABE36FF91C18F103D
-6F806D80A5A49EF9A1C52DC83C2516DC757F264B0DAE60FBA249D1172DC17471
-E14CFCA5DB5120E50B9CD7A0739D97FEDCC68B004A464E80819CA452059D52BF
-B7C4BD4ABB1629850B5ABD8D25F9FC9AACEA2A85AF1F09D359086CD1FD58E0B6
-5C48686B54526E13EC4A7FB6EEF09DEDBEAF6F272948360D5CB1E55C89A8E311
-2E850892E9FC9667D27F3624DF302D3B2FA9827ECB528495A77CCC7C9875BED0
-660BD3E0A9FF306C982D90E2B7CCC4690DCD1C88BEE4A9499FCDBFE755199AED
-7CC52DB5FE98A78F56B85F584E2F153AADF96C920BDA88829E1F515DEBFC0C72
-588BA96A43F95CFD7E080C08380757BB8A4063A0AEF257C788C5DAB8E98243CB
-8034C7E8790C2679B77EA08A32EF83FDEBE49BB0F7CFE608E66BEBC8379FA52E
-6166AB29276392B51AB42DE6BAC48968D4F03BEBBFFD86D92ADA04BA86AD1F97
-5B85608ED82C90F23EC1DA275082A6F3E8BB711D775FE2717485A7B39B43EEE0
-7A625E88583C186FF34E55986C626C6EEAA42863A180666DF562D80036E58C06
-34CFE10A28B12748469F8CCD2FF6540A2F580D7D2D3EAB30786263DFA95E264D
-420F996C592D8F629ED1C1202DC686CB8D4FB665423535B275C1D35C8316F75C
-DC7BF3780DE304298D39F7A364B70A38063D5DBD57D484CF681510FB0572AD06
-D6563CE02C2C86546DFA9397F36DAF8880359437240BE0E630A5FDB397197A6D
-667B88677E0B38D441468FAE2D78A5FEA6972486A58ED81BD65F35C4A256ED23
-585EEC9979524385925FCE3FF3A27A800CC129F7940E135253ECC68A30B425B0
-A659F358BD5C5A288DEE08B3C3C028162F4822A70171A84A90683C76BC4BC526
-C8E323531ADD5275307839E018BE6CE0B0A5F07E4364CAF03B83946B489178C9
-FE1F874043C3785E18BAAE0D1835C3AC28D2EEE26DA3F48E2B97CD6F2B9E80E0
-40619FBBF20686E34348143FC5BED018AC8DF3D5C9DEB95AD514B7A996AC5329
-1B1F55C1EC2AEF52E20039258E127CFAD483160F56AE5DB7095C0DD6304CC17B
-C9EFE848A5AD42BC81CBE3CBFFD2659C54626796BAB6100132CCC2B12342164E
-C87D64F560DDD66350AC0F046F3DC8A1B5DD24CEE71086E1C8A3F1BBBE72BA95
-F551A6A3F45013A89F34E3D945FBDB4AF70E6C4CDB976494DF1817E72C7D8EA1
-3AAC893DED2D1B99C35E66091CFA78F3A927AD178131377C8E1DAE3F92646EA7
-BCE541D01BA4C53627967BB9D8FB5F68A971C038071D0744994270C988906CA6
-E5E8C94BBA6D23A270719D7DF35AD3ACE460FD145E769DEF10882F45F82664B3
-344E05205AAF2D7906082595FBCD9CF050B3E701E64183BEC46D36A25129C384
-8A843629A83EE691343DDFF5313EC5A25713199E4A0F1B1DE3266F5DEBEB6052
-BE408C7D62E53F90918A9FFF88A062E98A7BE2547CA99E16975960960F5ED776
-90C6D85585A9AC81292825852D0E9506652D909DD51495EA5DD581BF62A03778
-AB36D804AD9D3352ECC3D680E95B1BAC1B12718597FC2BB2DD72B23A270C544F
-FCA829258659D734BFCE00654F19015674026CADCD030A4B80925AB37DF754D2
-D41CBACFE638BBA25251C850CB7D894FFDF194D4868207C29F9F1CE31D1F8AF7
-389EF8D00518348A6A07367EBFAFD7819E31E38CF8F2B9914380C37610248884
-D41AFC6470257407A794CEE55B78ADCE44E6DB072D0DF27BC810C1A2808243DD
-B837ADFA97826A9D91414E47FFED56243B733B2AB1D1A030BEEAD3E8C69F3735
-E427E05CF874BDC387060E9F1D9BF0DB99540F06FD319D42B031EE9FBA014C9F
-E60AD6322222607E1F3A9DA8502DF58894DE003BEF4CCF9524F605ED73053336
-B727C7F40B1736B1BFD034220F64B8D02D71D60DD7E9AC43FEC880D308BB7BFC
-0B9D94A06A3F4A45984CAC742C6A71D3D0E1309CE119675357A86D0DDD6FE2B9
-0FE8D6D7E7E7C20A7BF54618DAE829FAD36EDFF77FB6D98A0A89A6CBFE592C41
-019155D9011CA0E42AF08D963B5A71D8311E06D24766F048EA52D57C4F857E5A
-BDF9F31A163E0CFBFA8AE196C10EEDFE5057EE9DC504B460A4CD4094AC637143
-15DDA1DF56DC13835F41E0DB303AD299625323DFB51CAF4AF947460557D3C5B0
-5B8A17A2BCD37F2AF5DC66AD036D04E4707DD279C7DDFB8C18C465A2A11B6CEB
-5C07061F85C64BDE2445AC0F3A36E7C823BDF00BF60726BE17A6829EB4C62C01
-E8923F4D067F3AB64BACF8A11AEE8F1C9ABE601C30D2F138CD56DADE5B589025
-D286722910F49A00F18D7589B3B253A8069ECC93FC90B48B37D66351FD2FCAB4
-8CF859C85536631BC5E3A73865CB7AB8891EAB705FFC67E1EA68AD5C62A94610
-9998A8BEB65CD64E252171791D04EAE837F70EA1D9807594C74F9396869398E0
-608369AA438884CC9869F5BE4209142C9416D16E2BD2FF01CB12FED8A565D5D2
-D6C0AF3B565914A67AB6A83FB5B2C95EAD0FF7C59FF304B9516ADB0B5E75FEC9
-66035FA84CA8F9CD5CE9E92517DC466245AEFA58F234CAEFDF047B7CD3EEBA3C
-08CC1A6903177EB13CE12C4CF3C400613EF0FCFD1490909B3998A2B81EFA7F52
-C4B55126337A4551D79CA3A341E54779F4FA68D62D91FD78E80D8D10F8824312
-61F627CE102B981BF3CF732AAE9875DED0DCEF65E26CC75A10C959DEDC9FCC3A
-F530A4B00D9529A2745725861656A2A8309F3336297334A4907998ECDB8C653B
-9D8D90046885D0C1A40660219178FB669C8375FF02137420FCA7BC7B1B21E8DF
-885F338BF667A3E5E80073C65B0AE1E6C306F0BDE710C8136DBC31E93DDD52CC
-75AEF32CE12BC8354CAC0CA6903799410402EBE4A2FB1F883D15A140A9420FC0
-CB291BC0A72885699575D49D7F8B8EB2E3C030A2AC819A869AC5B72853E38DF3
-435B9919C6FD0AFB37BAA323F98C38D3D51FEC5C356A371E14DCCDE1ACAAA7A4
-DB341592F7177394CB3645623BAC67A3B8BC98240DB200D615AD1E128A8B2878
-620CB791186F09C1DB9588EC9E48B09C7672AD2DC45E3C32C328BB42BE5B914A
-D89F1C515B6C343E41D1FB1C31618853A1BA6E9921C7D86140779DC4B66F3C1D
-D3312BE6066D25A840C6793F0303752DC74DCA72F3D830E60FA3C4E6E1290ED2
-32F1FD1803DE953253B4F4C3161E6F3E7A20D5E49764F63EA05FCDAEA416AFF4
-AE3EEC56C574D41B770B4E5473F31126F3B113C7AD7EA5906B55F46B26D6F7AC
-40B4546FEE7FADC1FCF087F68EA5E4D70B581595F46283A390CCCB0F655AA525
-E83FA009968CE737D2E35306186E50ED69956E099CD36F0F7E3691C3B8C99CFD
-D3C6A3E6EAE218A8B243EF368522487C67B2FCACB9D68AA78047C4110A2D42AD
-8BA37A568BA106CDEE5D421D8C748E5A045BBCA4CFC8FE85C571894F52B056EF
-BE3E103812477C5245B4C6EDD8AB78F69A9B5C2F36D58A41F75EF7ED112633F9
-6CEE311053D6BCB9766D00202B1F263931F3E955F1FD57A4A7B618B6C016BCAE
-F9C19D6DC70C737DF3B4FBAD03567885AC1BC492AB1DCA6530BC06A39219C17D
-F0CA316B8B2AFB6600A07C2BFCFB1739E9E96451EF6597430E72B14A7D948E6E
-8E2371945935B69B8F1BC282A97AF72765201971A52A4267FC45628ACCC06BFE
-C98A35DC4D1FCFE5797621F794EE347DFD18D39716CFEF735015BA3E882BA524
-D35109BA17189D43B417E476EA2852DB86CE3CE77A780A2399DF6D8923D6F97B
-38D68E6806904563E06CB5617D5EFDF4502251483C401AD9A539B3016A7EF059
-C747AFEFB7BEB41C1A1E51D86621487C64DCA3ACAEA5C2BB94B826748A5117AF
-42EEFBAE42F3895A4083BC8D84D8199F5433A1551BED6AECB7A04DD56E9C366E
-DAE43A5F6CBD5AB82DE09118D663088B76A2BD0B04D12D98415473B4B5EEA303
-3C19CB0DB1E3DD7B1602DBD16B7B8269BD6C1C9C3F50CB79C7EF0DD41DEDBDCD
-B2BC38BF34F4A10E0D8A94C8A35C98F42EE75A6795A80A7E157B93D38CEDEF0F
-AC2B355C9CE9D9C89090D130D340E051D02C0EE2339EFE9613B91347584986B5
-5EFC5C14C9887313CB79B6CEE6C7D648A253166F5BC0E3934ECC092D5491790A
-F68AAD6CC7EBE7EE66BC95F1F87C55ED4F4E829AB5B336EE8077AB1403640FF9
-5FDBC4C5D57259088C117EE22538EC014340D480286B0C14473EC421477440BA
-EC5E684E0C6F3FF077361B178D4EEC84F2E63820403A38347B2E3B9A61AB9973
-C80AF6D2DCCDC2D9E6A7BF5C9AA463996640567872C837BEA6530886D6043BF2
-97E92CCCCB3189709BF6ACA78EEDA7E8A3F93E113BCE9CD54ECCD2FE06E84605
-41D81F3D47197283108307DA4698709B9B6861B4CF384834184ED237C4F8F546
-480A449FBC624AA3225A86B3EA13C0D0CBD9485CA2422BF38A160342E23DC09F
-793EF8DF8F4ED75A5250372C5821D4696333AFAFBA2632B1E473E7338CD3FD03
-86C8F2D029D99FF80B11E66DE94B3513A8DDA972634705AD0EB5EF16D812E628
-57BBC6BBF91DCC60A1BF37A9BB26A286EEE9D9888C17CA36535E4D2938E140F3
-A8FD340BAF43FC87A381759461D30F26EC624D0940869772D0C8DE40CDF77A61
-5F88F96D4D817F77B979438372CBD0C745262B32FE1860222B47705913BCFCDA
-2BDC74DD4CEB380444E13F44521EF50215544752033875004002DD0623E016B5
-9E04DBD9E664B7A894D03FB0C8DB1C43185B2C44B4BD5E4D5626990581950FCE
-C33BEF0445DF951147072D418399D9F2335F63C6D1A04FF4782D8FC92A34C077
-7B47D642CC1CD3A3368FC1A7288D40D86BBAA9B1DAAA4E100196342213F598D4
-1C79F493B6781B4CF5874599C059D3DEF8EA8EDA1CF9061C62D9A608899CA854
-79D264E5FC8FAEC71BE4B24352A7AAB81C045B5DCCE1939A9C07270608CA3D0F
-A05CA9D2A23472C0B5FA6CEFE1F50B145EDC52C393C99FB0E327AE9D1F4D364F
-5841B702ABBC59086F557EDBC20C59DBA04B66F3A55F3E1B87C32019252CCEFD
-A440E4D711546B9BDA5A549AD1470F720B6407E1E022394BB954395483057485
-7EA59E8CDB2F7FBB2EE3E26A80425C7812D459AA47CD693A277027FBE74D9E83
-3F73F042774D9BD3810597D906B0CFEC0F9BF9A1BBFA2DA2F88CF28200D69BD6
-F405BF348FF7B1A0737F6E88DF167467DCFFA86A2A446D671E62268C3C391C33
-B565D65D606D0F1C97D1FFF7E8330527D6799E856C1EF73CDE0EF1057ED0BD6E
-E8D558D4E99F0FB8DAE977DB0F2202C77993F4A7A539706C7770246C733B6E35
-0349FD83508699755790480017EF6A421AA00D0DBD6C37C89CD257D51E5184A9
-76A158CCD174166241879DF9B025FFA3082A297311DA91048F6F172C0C45C5AE
-C6F03D287C84E8748C2C0517A678543C9D5875EDE21FF4A18B17D5CD03871489
-C181F781D168D2F0E4A58166F1BC27A303C7E8AFEF44F3A372954FD66E189603
-4FB24134358627CBE356490C2194FED3C84F4D28F2906E1BC0A071006ADF9CFD
-F99C68672DFB2C2A59962F1608F7DDF12E507B8209A30AC52F64FC978042BF8A
-0E3E6ED9460C9163B7A7D912D949C72203E1F97CB771BDEFE3B9CF1FCE6AA631
-BCFD9D66D5B1B81ED445A9EA7A6AF8DE4BA3B63EA77AB435AFDA05B966F7CE3D
-D2C46AD8FA834FC5926D90E90E
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csbx8
-%!FontType1-1.0: csbx8 1.1/12-Nov-94
-% CSfonts -- pfb ver. Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25242 25747
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csbx8) readonly def
-/FamilyName (csbx8) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 444 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 686 def
-end readonly def
-/FontName /csbx8 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 68 /D put
-dup 79 /O put
-dup 88 /X put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 106 /j put
-dup 107 /k put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 117 /u put
-dup 121 /y put
-dup 122 /z put
-dup 190 /zcaron put
-dup 225 /aacute put
-dup 232 /ccaron put
-dup 237 /iacute put
-dup 248 /rcaron put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-63 -250 1235 908] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E2214AFC380F5ADA59470F60
-D8D2FC158BF2F0A53EF87A1802A897E4E860F34BF60C83C787AD1CA226FD5272
-574AA5061E43F5ED5C153D504B9658DAD50711C40D80A64620231075FA7ABE3E
-BD352D568BFB58C633E5BF9C561DF52E008B6270A05DE0C24269DDFA6B90EC90
-A0BE858A557DD6AEC6BFE6391078465E967382FE98FF878DD1E6DF2B713AC8BD
-D0E7CC7A6CA9EB806A96DE26EAA48F6BC49A016BA0950BD9EC232543199A1D6C
-5DE780E51C464DEAFE906C67C49C455BF0CA836160C409FC80C6F82370C72BA8
-D5C3C0EF2535E3FA3DC2F4F540258726F28ABCA9CAA3CA878CCBDD6273639EA3
-3FFA29C328F8F9E13479B8B91887F4C073B873960EF6FEB4AD5A2D48197B28BB
-F5F5889EAE914D38E97DAF6F87C2C6FC300AA4152CD5DCFCA4D25C6EC8FD9574
-F9A763F3B362A7945B7F392CB9CD126E93E93998BEB1B48FA7148FFC8A4E3D3B
-FE2E959A1D12839E2549C628C4D60BB88BB045DD9113BAC0CA2AE95D514ACD8E
-F7295207634056AF510379159EBC72F24E52327FEC852295DC6EA59178BD6A8D
-3651E23EBD4BB12104654D566EDEE0B9D2D7134EFD01281C34C1EEC0A5713A96
-4CED3F0A760F5C37C8CA3163884FDBCBC075A0210A6E76BB413DF97AD6A0C787
-835D361A6ED43349EDDF3732CFAF4E0214B3650D7DDF7650F27D78D21769D353
-CC0F680A66ABAC83137C95C8320C361E0698AED9C0D736FBBE80D4359D8CBB45
-AB5F76401EE22C6CA9D78DC4590CEF1CD7D9F9EE334E93E0147DBCE5233686D1
-607998FFE1340140D01E6381252DB48967EE6DFF5422E8B301289648A5000AC8
-A3AD9D1825FE41E9E3A55597FE88BCDAD2A05C02204EA9D8962958BF100A9189
-488F9422B96396E29C438C2829B9254719BE08BB792A23CF23AE241992E2A731
-7D274FCA140E52839EADF299B6F7FCBD91C1EED9F09ECC2B0E6AD3AB468086AB
-B06ECB9CF4F23E1064585EB784AD2F5C33858B103D979480FAE1376502863F8D
-EDB1B1FBEB37FD1594608A69C7E9F78B7405B7AEF8D733992A739E44AE5BB770
-3C322675D8EC3F149CF3062EECCABCA42B6F41EAF4859C250FCF197EEF370E00
-45337EA05779AC0871796EBE40AA547D1B437DF0D8C3C050FE006464A2BFF97B
-39226EFA909BC04CCC5D3C5B8E6211C3F4C77C6DFDEDAF2CF0DE416D8632737C
-313B4F64682B9C446A878C782BA6D48AEE80E17953AAC7FDD23465363D9DCB98
-83AE261391BB54AEF57E8A5CA874C985BA59C4D1B57B6C8C3E056166319AE0C7
-A3901006FCDF8C522D1AEE2980FC7069A31D428F46C6623C7F7CF67CC77605F9
-3ABFD90E284BCE7CD72B54BBD37D4A2258EDEDE22F0A4EBC50EBF121854647AA
-569AECAAF54302F3064A3EF0B4017A8D53AAEF3115E208BC6040842D63C44911
-DCD90055D3B8AA5B91C00BF0035005D95468408633A976C2ADBA3AF8EBDCE658
-702B43ADD3832CE4BFCD1B61B37EFFD5AAF1922A3D829C633B0A4C0994611381
-2B83D3740FF3D7ED55DE1CA370209533AA5476C2EC803A7EF39EDFFB0B19E4DC
-BB86CDC274A6270208D611AD95F2FB1D0B9140305A8CC535EC1DA560FC62BB88
-02155BFCDA9B115A397F6A24B542D2BF5CE69F58D7A028614167F635EC06F6B9
-0729B92BCF1E9989E34CD9F9543B0FCD8078EEC2635C2900857AADA353677EB6
-64DCFF40A7E283EC0CE969B6BDF3252E3A110479542B3B32E7C723FE2493A80D
-C0018E8A59F81ABF502A114B41B33DF88895C57B85343A95B184F2BA28E14EE5
-689BAC97F36D713C3A4F330CCDF5A023998EA7C01B4BDD1063B2D3C587A4589D
-BAF8CB29D5EFF9AE27B559B02FC58A52A1539D8B4BD0A20D084D67936C131409
-188B16CEA61E57F5E1052B964813364C43C45E2EEA759FBF07BF2F5D04C9BA24
-2C1ED5535945E037025782CFF3FC1B856F69D70E0D30AD1593FEAE236FB9F541
-F5A9221D1528B15AE9819CCC34402D131D86F9DB64928A522ED2C78784074430
-44D2C0EC8CCF87FBE00EF8C264BA1C880A6A70859B13B060D64EA436D48AD164
-2712073F1704BB86B04241FA7B0D8C935DB152B19BC7830CD59340949DF1F430
-C6FCE75803A7A5BCEE88B565597C7876C040CDBD7EF129A17F7286BC11D32118
-8CBD1FA12542928328F1A71F34F35AAAB2FA384296E6DC6F6437CBF1145DEAF3
-1169A7ECC3B96A24FB2E20E7058DF05CF9791681FCF22F4187358547164C516A
-2FC6C88A5C84BF245D300FB71A7681E6EEF61DED2905798CB3B3D846452D280E
-94CCA6C2993EDD09FAE99952192B11C8792011BC8133F2CD8D094FC3337CFF7F
-C5B8E22C470E2C2FF68EB2FC57516C72999B0937C4B922CDA8C920AFDAE5350A
-5743330895711F3DECD4637888E9F944C84682E115F056227FDE92CD67B1B2B5
-6BA9D6529BFEC90D2D5DB309877BFD555AF2B8FE4D0BFCF80CC9871CE1ABD06E
-761F9B5C2A5714CD436C05599F3789975AB068507F0A2B51ABF01D23494BF925
-5C7C3E542B9F98330750EB8B812EC4DBA1E15ADADFB033F4B0E9A96C077340FE
-CF003A372E571CF3301AB4C68A20266CFCC35C6E22398DE81E228C98E062E17F
-89D7BB6B53740E100CDE0D380A964462BA8CC68ECBF1E64D103EAF4888A77687
-100631799118CE0C99CE051401AF3695762FB84DEA2D7AA7B285CDC38CA605E4
-C4B0FD712056750E69B83FD6A83DC9C6D209E2A18B58DE2A494C3454962DA271
-39B33B91D644513DBF8B75374B31780E8805D2A0531BE0E4B28DC2D5CEB1C265
-8BD3BD922E62EABE84E17AB4C25CD1648CBB43DBA692C449A431178B81889C6D
-4E1032FBEF9EFF89C220773F312F53FFCD131B462E4006952A76790BBBDCE4AE
-7AB227673A19AA79FB7A7CD9224F370A67C09D860ACE7EAE7487F5E28165B104
-C088DC0CBFD6A5571437F4DE8DE6C6E9A016506EC1778E6F1171C68BC45A9872
-8FAE4A72175EFF30559F4CD947B52E9E477F9650D03CD99944C792AE45774CD1
-A55F4C4E241122CB47803C2719D747035C57773B8C0E0CD43B9A24F516FA7DC2
-8ADDF81EF5A02B52FDEA27F892F34E34DBF5D0949A364DA744DF9DA530BFBAC8
-23FE332CD10437D5EE105FEFAEC1AD5211813D7553DBEF97621845E0CC9A3401
-C6C1FB129AB9E2DF41C29F15BDC50E96700C14E092B38BA3ECE03D73CFB27C8D
-02967519511F398EA342F20468A761C7433EC88F214C9F6EC2034A768AB42C8E
-D32ACD6FDE24EB0696A8B43F67B17670ED5EEE622A3504DE4BF090A1BBB3A3C7
-7864F1ABCF96954C91F254DCD0C1D04584F00EC74B75FCDA87AE8BFCE7291965
-5B401DD15ED38907E9674A6A7AA2477E07F6A4A7B195ABB28BAEB1D76ADAF5E8
-AF239EC345BD4DF9E0B9DACED50C097BFF1254859A1CBA9C996D81FC4D181C12
-D620CD85201924E2887A7A657E8B04CDC9CFB2F3752F1BD8643B36A03D90695A
-01E30A9E5EF5C33B834E482FC042E5716F5DD110DBDF6802015C48CB57AF649B
-5F7E990E1147D4088E2C0F6787F4D725CD515180E97F63FDDD6C3BB08D0AA422
-43BC9508690A5EAB2FFCF5105771B169BAECB61D05974761997720620FAE338A
-79F74AE28E52BFC163D6A050998C8EC3126AEB41B4EAD69D5AD0AA051E91BFBC
-C677449411DBE56D16A8E157D7DDAB9529CEFE8450EDF05842E4625CA7B26089
-DE24898E8CDE5A99A68910836B2AC5191E92CCA847357334A5337BCCAAA6AC51
-7BF16380B7022323CD8A92681DC52597F28D6351596CF146B604042DBE859DBC
-327A8E0A68E74B039CD0F9845D649F9544B1A2F7FE7FCDF63514D536CAADC67B
-ACEB6145D4A7B98AA86E07D3A2098EAA5AB1B207AAA35C5151317CA0A9901D31
-47446B6E8A918318C37ECED846752E444D81B670B0C0A968EEA28DF120D72851
-E39C5755218C74303FB26FF64D8D531903CC1480A48469FCAEFF55E0B90D9B06
-0209165181BCE0D75F15A2E41C340B1532D85AE40ABF01013CD4F2A62F4A37DE
-0A7719A3B3BE4766F811BABBC0218EE818DA23B0BA47484A55FFA51E24D021EB
-1A2465E26FCA510D0474296E4E56CEB14696F29810FAC3BA847F78DE64832F54
-0AB0F2CAD660806AF9BC3E201A18DA7CACA998D8BF1BBF6CC466F5A3D01B39C9
-8BD54A43871E3DF463AB9852932A54FBC2A3E76C4111E4FE1426319E8BA66168
-0CC305DF42A54BAC3253E6F286C4D4F72034D074984802EF88C098D684920AB3
-081030683D51F382932A64C1ECC8501BB494D0A997EEED0F508BD84262D5A5A2
-C849EF729F788D95704AFE334B395AA15EB5ACD64607E2C42BF16827E789043D
-F3B8B919D4C78D703E4121D625ED91A590DA03696F9B039A79D60CCC3AB4FEC0
-95F7739E1AD3ED034D02D4AC798A8C99A7383E1B9776082A7BB8A966F837882C
-27D52AC39CE0C483D23B9E2247055C3B7B9C78E08DAA7AE2AC1FBCE8780EB6CD
-B73D2BA040B11AC645852EEC8527F417B96D7FEF701AA6870E85FE65F213414B
-842E55CE1BB49139FA76A7F941AEB1CBF7081025A3A3CD7C766CE05AF35347FC
-9882A3474F3D6D32519E14363AED5EA6C803CB292AD64C92F775E3F3A8D04012
-11C0A7B95C9D40C3BC39DA528134ED7094AD5DE36ADEC039054E9BD02C0D1064
-056999BE7EBBA183B205F3899979B19A2795749454CDC4B3A99C854E167B8EA6
-4B2ECC01A0C72E158AD47DC8BA5E083687D6CFAE20B802B5D9F49DEF54513F9E
-866837F92DE4A4C0406612CFCA59A7242D36BA546F1127C39C839DB6B475525D
-1F7210FE1A81ACE114BE74DE90424FF72F77312AFC4DDE0499C52FACF7215945
-49B09557444BF57FFB138E32AD5A265CA7F2E6D5167B875EE9ED1A915F48C72D
-9F9CC418F45F2D2EF08453EA23A465BDE404EC14F4B4A392437AD173611048BB
-715E6342C16AC1F22850D88336F28A852D7838B79493F2037C1641F38F46C8B9
-358F5496E0C75295F4A839B445234A662D8FFE3435ADDB1786CD8BE228927769
-5CA5670C664435C2168A8707496BF9EB9E078FEAC598D3C1B77270CD105DAA58
-C29FDD6498D7A999B704305EFD37FAB659892AA51F4BB1B0DD067A348F38574E
-2F608B13B4B9AE2D8C5CB45F7FD1EAE93C778BF966E64600A32A3403DCAD4EB3
-AEF2158150E88F7DBC5F25BD99B034BD3905E268A68989372D1D48B8FDFBF748
-7230E3FC932D720A78112193CF1EA1BFD4F1610A9002CDF120E3BBED005C1A14
-27EF51840BC2D149944F83AF3FB4093662488D0E01C975D2931D49E5F52F4271
-DF5964A169B47C3C08D02E9D617CA4B6520F2A2F1CF6AA9E0029FF95404EA0BF
-58B0D72F9F8074F6540BFCA74A09D21B2DEBA0772B3B1DB919E4616ADC7E9FAF
-2C785E602707AA8D3F4E27401B4DB058F8747EF0065C77EF62E9F6504E88B78F
-1F0B63C7927369866064FFF6F04163C62F7A6E3C109CD40E867628BE725E7ECE
-82DB51581E381D6DEEA468F60755335C02C85F0396930008C31CC57D8000DD08
-1D1D0F84B3B1B8DA507888F79EF6695F448BA76D5BE83677FA595933A6099B5C
-AAF6E142C91068364DC69E11E470354C7BF6517A095A62A58EB8B3CC83359DC5
-AF3ED5EA70E617397CCED742D984ABC9AA48136D2A34345991A7E432AE3E9BA6
-4FFC99EE3D05EF868F400467FABDB37819A51D857F621656B8137DC1252D205C
-4211A14CC0E2641B4D361B14496B2A450E2A71E37E6ADF9E1F673F1AB9BB2C27
-4B06ACB1AA3813C44C3C195C7EB586CA518ABBD22A54A334A2DAFC4C3977C6EC
-F037BC2B7707F68EC33F232337969EB6B88742EE7F9877B90E3E878C1A1A17B8
-02BE3A55EDBD67EF205D1ABC6B5966FF8C84BF7B7FA4CAB577047BD4C109A396
-8907F8C04C23DA034182422DFBF1A3AAF80F3574B15E80C35C22615243C909D1
-8D6BF141E5D039073E79979C5C3C388EA6E5A989B8440A8AEBC109063244BAFC
-5305D4B6AFF35BB8BAB08C475DD05222EE119B9FEA2AE8BBB0306BBBEC9A3A34
-01D474103CC038AD7ED830470FD5EF88BED76BE8254B7AA1E0F08CCDA660521D
-5DB3643DBFD66E4479C24BD84EF340B6F3D945B233D5A53DB185383F1071198A
-B3E9E89974D0B6AF446700AC703B4D462AFB42EC2CE11CC411EE210AE3FE08A5
-A30330BF83A5CCB07F36A71803656FB2B73BDDA0645906C17F0AE728103866C5
-2340838FAE2A5FD214B7C3E17B0415289D6EF0F1C2CFCC1E66AF76ABFA03DC20
-555CCB187D1D9D04ED9CE99D1DF9DC73602EC35FF09BA7F58498E918C3FE7995
-0E619B423AC51B825858BC811831FBF21B3BA3ABA6B9FE2CDCE3BFCF642BEDDB
-9C6996400BAD2288AE3E3ED94A2A2508AFF4CD6C0964E6E523628B3587F7F026
-A62E24EC2C3029C02DB2639C4D22B5EB181E3F9FE074037257D8C702B8B50180
-6F4140CE66AC3029B2AC6AB16BCF8394909E4512DE4925E9298DDEEFE19FD6EB
-EA2BBD39B992103F76825419E9E65AE3ED446280F5A7246B6511836EABF120ED
-2838CEACB4086847ABB7C241B771EE42ED92198C21085CCE83555B6B1718C353
-4F1C50D37F6B27E82C8532CFF516A12506EA57824B7C33A36F29990D92C7
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csr8
-%!FontType1-1.0: csr8 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25661 25938
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csr8) readonly def
-/FamilyName (csr8) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csr8 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 50 /two put
-dup 68 /D put
-dup 69 /E put
-dup 71 /G put
-dup 78 /N put
-dup 80 /P put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 126 /tilde put
-dup 185 /scaron put
-dup 187 /tcaron put
-dup 190 /zcaron put
-dup 225 /aacute put
-dup 232 /ccaron put
-dup 233 /eacute put
-dup 236 /ecaron put
-dup 237 /iacute put
-dup 239 /dcaron put
-dup 242 /ncaron put
-dup 248 /rcaron put
-dup 249 /uring put
-dup 253 /yacute put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-40 -250 1111 864] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A1390082AA03548CCE363896DC
-8285532C521369225C90F80D727FDE65092A0044327885EC680B2ECCDFCCC5C5
-9B4F8AE2D078A25AEEA345A6E6A1D9F372DB3CF2B4AE635D7DB823D70EC82CC7
-1CF7E7DD0D047DC2513344927562E9838BB0A17DEC4E513ACF1FF782F3D8027B
-7E9250875DDD4EE3CCA440DE9C628C3EC0D771840D359B9EC8C94991ED9E551F
-1B6836631196198581D2485BC6D82918C11874F095154B0872CE54E96900BB2F
-F1C79982170757E4A6D158B2AD92AB11E0684F74C0AD96A690D55E3663F37009
-CC9CEA85C49FB69932378B3822EF0B43C4F6854FEA53FE3DA8C66F54621F5904
-A7167F09938B97C9827B8062CD47DB637EC42FCBE54AF3A2609355A07B317576
-DE207567493BEAC1C89FF58B9C93FFA827307FB2E6F3F01DBD6FC8E66F97A4D6
-21EE41A240574E711450DAAFDF021C9F67A3DF3B780BE6B6232F6F229F1968F3
-81E3D30852A756A7A7D78EEF9EC6B4D8D66E9D944152711B910140E070124051
-2366C14DFA3C6C1E735E950E6936B762980AFCBFE3AAE4146ED2CFCD68807BEC
-214893E1E127C8EEC0CCA2876DA14304B733B1794AA02E72848E8E518B25EEBE
-F97452C663FA963ACABED12285D143DA237226E2BD7A4F0716639EED78EBE378
-E9D7BC4B83C5A0A2669245F917062108AD42F9764EBFC9F03284F98EDA0ABAE4
-6318460DB152A69DFAA55B56C2F5E69CDFBECC134661F436EDFA8D8F39540F3B
-93A7B07E22F72D85B1CE6F9267E138A1210A0111B763692E93E51FE8C13B4DCC
-5AA11DE152CE72C8FCCE805938270B70EBFC01D84D117BE1577B3523C4D956A9
-545FF9254DE2996E83FDD2A815D4290877519219B4EB85B64619BEDA0C08CA5D
-E1C9D0D0980DA8C7F15BD929AB522591E005AE22C0652878D2D7EC206E5C6D61
-327114E13F223C87CFEDC7E9C25F258C694385E5A0316AD8A8831A3A4AF84E65
-F68EB428754F318E61A39E76A0172B8011C6FD772845573C8854C48937655581
-53B0A18D3EE2C0BAE2F8B0349D1223131DF142C72064DB9E4A84745B6CFA01CF
-7E5DA2B112B7F8F54C0B3BA14EDD5764B84EAD3EF89C807DDF5E2E4C2D23A46F
-F3F0FC57A5E25EE152F5DF5DAC8F6410EC704A68FF2404C78744582EEC95BD5B
-2C121C81022D2E47009530B47510223463311C28D4A1941C2A7515CFB99134E0
-84F95F922F3AE1AFA0486D8A0E21B71C8007216363A3B14E0B3AB8607868D4FF
-7F5D71A1206B2E905C14979D53F052FF4663FFD53B43F067B52E270DE2198EDC
-7A5BE9035D16F2B693749090871FD23151885BC7418CE97D127157F717C97433
-22506B1B8CD0401AD31569091149260609263F844B18EA918BE5FD3881744E9D
-9CC7C0750938B34EC8563230DEA9026BF358523116A12AC096F2E1BB1A6E0C27
-695A84621BF227970D3CB3BEDD0ECFAA9279DE18B08A47C84FB448773E8A0549
-0E44F27B9FCC33D73DBE9DF89DE681CD9A7D0EEDE14F3045C6DB36195F612410
-304E8349165564465B38680E53550BAFA4D95745BE0F59F3865591DB12BE018E
-C33B9AB317661CED7B2F57EB8D5467C03CEBB79663DF0CD5AD69A8E0A861D0E1
-51DCDC6D1132AD86129C41731869F207E6465A4E3A26B8F26C73A25D67D742B5
-EC79AB8E3A77DD98DF74229FD863C4D5030665B937D09587C91BFBCD7F752CDD
-D4DDCCC1DB1A1D67DAB6779EFBE465F8B9201536F9622F77AE5CDA1DD0F3C9CB
-D63B366562B6E664470456655783EBC337525386D59707100527E8357CC75898
-8FEA5E3AD0B4497EEF21A954D19587A602AF5ED1D5BAFB1ACF97A72D77216540
-DA4D03F83EDC6F14CEB825817324D1FE6A201FDA73ED52156C0724B7ECBCC9EB
-81EE41E929A43E7AE95FB053CBDAB817746FFC0D9455858A4C47D77AE1C757C9
-8A897BC8AA3D5831D8B5A1467D96BDDFB855EF926457DD0530EE95ABAE6717E2
-61836D4BF92327592F8B5A10E6BE20C059B261096FD914A49DB9916C5A699C40
-B957FB18132E540195EEF36665F33AF703AB4F04DE32C980CF8B5C4E9120740C
-25B1ECE7CE52B5E74D25FE2F0D43C64BE9EF2BEC4720C1C0B7CCD7B6E6233953
-0FDB9C061E330C15358DEDE806E2B4899B454D3B08200E422907CEB5579D7E7F
-9CB1E996F0C38E617B6903D5EF0CA24784210E9791A0F067C98AF4986DAECF12
-F987CE4FD77D7C414775833BA6B07FA4C66661D754537B98018B66D5E61CEB1C
-5F4AE115E3C1719356E394CBAAE763D3274250877604C5D15DBB1D72A5FF732F
-65BF55BAB42CB5A242078EA6DB85A7C4ADD5052CDD000B7640B7F7C546794042
-1C2722C46AAAEDD23A4CB090A4EBFB383C13105568836CE1B3C9D1FA024FF955
-4F97D0FBCDD6F740D69EAC92C122A7269666C42EB15FA5C99238A90825B749FE
-E857CCA3B62E24367EEEB325911472666A151EE6656966933D1B8A594FF39EB6
-A721BB37E198C56061AD920F185783E6383B7CA7D0556C4E29B012858B45A478
-BA75C864E4D7927435DFDD8511C32E4520655000F1F441FDBE9E9D44B304435A
-A5E524CD4CA6CDF71485DCC009E99B1E229841807DFC6C36E38FE7B0BD980747
-B45CF7870CF416931F67AA15909A9A1D06CC2E6A4ECC8CA1D35BE61F55396D32
-5D782BD44B2D52CC5A4677B037909AC49E5FAA23F022C55BE96816C688704D96
-67F6C3C70028C6891B918DC0A04CD5225D329407ADCECC141D3515C057B371A5
-F6A602075C28F8B8A51BB447FDF7206AC51CF734626DFEAC942C95E85CEB2004
-A3366A2F98A4FDA1FE6A8C80A62945DE946A035B8E70841CE2B325EAB194F7EC
-7E852B5CD896E7504DF6B5F3B8D5BDB70C52D987867C259CC02426CA81687261
-5E58CB15DBA06D7C7C2F7E2D53A126A794A2B518482EE0EFACFBAECD739C9CFA
-2B37F331EE754ACB0F3423971E2E4BCD34026D1D93B925D54D996B4DA15A3A63
-40289243C6E07D2BED8682CDF520799F335BD2FACD24965CB21393D319D79F63
-B19F83F39F7C630D8070A426F0F1346B3E0B0E9435CE3F1A25A80A9853FEEDC0
-BDA1B7973592B4E141BAC82466E8EB94573E1FD200F882309FD4096AC2B8F6F6
-E07A9DF875E8D350F43F60FB2DE11055CAC479CC9C2A5CFE3E04818E06425C6D
-80890E6944FA45A2884889F4E275158BED0F547D3D24F33042D9E7569CAE04D0
-71BC07BDAB269924FBD87514C208E2077FDF6FA87CFFB8525AC03743E01DBA9C
-F52FC0A4727BDA1D8822CE79021A057D574A9C75EF5AD063AFAC144BA20C1F4A
-C7B5181FCFC1FE759FDD5A3402BF41C91B497A1797C509925127F7E4C53EF6DE
-4D0040450E5C3A5E483095824484B8CCEFA920D70EB2E3E41F795C301F6E9D0D
-21D7C102FCBD6A1BF916ACD8F3B14615FEA13D376A1B4C8D2A3359A5C6DBD1EB
-C4A6E1E8E2F9BFC53ADF676C726B2D7C5EB6A7C0CA5DA25094D486216DF00535
-416A6F482C19AD3B16C15036BB609699CCBFFE7853DDA176029EBF29E8F205B1
-0C89177F823FB4B748804D5DBE80297607B508EF4E6728C6B6247D65642114C7
-2708AD3E62C9742E638689E052EE5ADE59878F54DE580DE367AA9BB626D6D307
-337D6F870D1AF5810DF16D0AAC6B96E374B2573182239F4761E15505FB4F2685
-EAB471389EB215491FD399746539F37710DCD0E1728760B9D9BE5BDA050B736C
-41862645D26D372524EFB00FC81CDBFD797E5F54B4147F1ED6015086578AB15E
-57E72287840C034A16C909CD5A7FF04BA27FD671D4E4159872B4B4E96B27B50B
-3DA377B326670A88BF6E74E4C967C2507491C60631ECB160B4199CC59A1AD24A
-168CCDAE647B3126868C1B051BF916DE3A1578BA0361B05C59AD21B4E973C00C
-8C5D05839EC9D130963275522142F9A2CD38C98D6FB9092EC753133BAE61044E
-AF0EF3B40F24C102D6A7C08FB60D91550C5F0EFE58A37AA7844A142CCADD1FF7
-815634978DE281733D65F02C36F79699BA8A86F7B5B922E636671FACEA3C9792
-1D1F2C9967594FEB7B43CD07CD193D39EEF852C1214E4DA39F9CBD7CA6CDD388
-02418BC0F171B5747A573F9ACFDF3CE7EE8BFEDFCA818D880E09E57136BE1797
-026D2799BAC31C0548DAD073579A95A783295AA8AB73919A1FF72DDE6068B488
-353CCF321E50152B211C19287948779AAF605017C250ED57CB924BA6D5AC61DC
-84F6061A4F38E73051BB50CF7A6B21E4A4948946E90B99497C9BA33D706A04B3
-2A4E508EB44782B51196314E5590A0EB881B54F7891DCA4B92153BFF90C3D546
-6787B0C720237D39C19C0E28709AC9709F555A502A8A159904DEF33C431F3083
-CFA502E747625491C4D31BD383A736E4389DB16875364BD7AF2FFFDFB9E46057
-D1DFEF3A1E4BE3F68FAEFFFAC98664327A77B896B8999EF15491DDB47B8AA6A5
-805612DC4A9FB7E7A8742FE400FA2C41A0ED0FE8D2EE76107D170580A75D826B
-09A37EEC3DC230DE9E6A3CC691129A9CCA8126971AB888F1050CB8FD1AB2FFAD
-44E76851423EDD76412B1613B8CD84938AE26517C39789AE9BB7E1FEBE211DD2
-4FA5A87AD3865224F55C4D619F904C0D39763E2C8F8EC2CD2E63CFC4AB6B5D56
-8D3D4E5729010167D589B94D4584692CC75164ABCCBBE728E3503D74CE352D43
-33CFC7BD3ACF42D7BD6EA9C1EA1A9B2944853F3FE5E54CCE93A0456AFA7C0565
-84508A01F2D2E6F649F46E494D7CF7CFADFDB6026F9677864947388FF93C75B2
-4E633C63D59F1F73D88E9E38D808FA109ED1383D46FAF3BFD1B165DEEC16701B
-75F211E1F53E51B3708B29C9FDFC0706985EB593AA10B892DDCC82D1933D1663
-5A8C54E369D4E8D052DB861E7289A27057CC00A10A206C98138EDD4EBCA87EAC
-867577ADF78D0B454634F96E28630D4855155260F3C9BE74834F996000A5299E
-F9E7727C4CFC6A4145C004E3E6544A8F25C9BCEE4546783D110C6994C96AAA46
-261A84956F85D79942DAB51C714D906342F16FD89FD251F1B7770BCB420B5B2A
-8C362D1B65C83871EBE836C4A12E0F72454F5F96951F0437DBB10C65321A85C3
-187F3CEB8167339A5783331A2BAC546D67804DD791D52576D5A5D640830D3933
-1926319D7D7FBC66443AA27781001F1D50E130AC0DE9E011AFC99551B298FFF2
-CB53B510B2615FBFC1D79A838C7FD7DA436FCB6D3CB1119C125639A5759BB7AD
-122295D26639C0E0A320984833B86D9A70949C9CDCFDDF1B7A0FD55077C48A47
-6B6FCB5B0A7D5C76FBF9AEDBFF3F3E4637131A2EBE3C7F7DC29C5A65AF5D38BA
-B240D103880E70CF416BC6C81A9645191CE5BF07731B25A8C45A449C470E076B
-153AD6118A9D324F13BA615E2DA9C10E46D411E539E47EE72A44894CFD19892B
-11FFA4BD17C1807A57899DCA90FA38A26D451707F2D754DB7E91AFAA4BD8267D
-E7A58F831B45036606EF449DB930CA539033DC385EF79C093E03FEEFAEC3C7E2
-B86EEE8B1CFDC5897598F3BF1584385211065844E2829068E2EF1A31EDEC509B
-2CE5D776C15B6E61B77A8A734786983D2DE5180141E26BB06CD70D234E59F6A4
-4E4DE8E9B53282FC312FEF1626CC27B8DD40E7492E8CDBB9A07FD4094ADCBF17
-A136907ED2A1E655665568ED24F36293C7521988B04AA2EFCB046D4D6C988558
-58EAE90A19296C62EC38C41B2865CF16505AF47E8E50A05CB60F7F033F4F92C2
-3F5B9E370788C66C6AD689B5F27593A254C7D85091158CF4596BA6601FFC3166
-A4560A4CAD1723F75A24E45FBDCC4EF1608793178A2480F7130161255288B315
-941DA56F7488828B95733FC8FBDD5CC6DB7175886044EA6A6E72C50573B0E6DD
-BB130990FAB953103CE3152304766EAA06D3B16E4BB74D9C976546C8ABBE5267
-D2F75531A706106254AC1E3AC424345BF6B1299F22F900E81E5BFF0F7527157F
-915E46FA54888B5468A0D1E602096940AFFEFD5C8AFA4BF54EBA05DFDF337C5D
-D4748D66338F19DD3B4B7E1255F2C6DE78602E1671891DA0FF0DEC283B8D4108
-155D905F953ED6661431DBD024FE6E8BA93757D6FBC1DF1CA632945F6A629686
-B754D5E3F7A9C2D54589EC380F5EB2E7EB07CB4B1E0E178FF29021CD02F5A101
-CE8FF0D1298948B8D2FFDD6D9609711F478B46640B7499B7BD2B9D210919A1AD
-6294411BC687835C896133EC74E0824DF346594438C42E9C3DD76C3CCCC83965
-499AF6C8125D6914544F0D8776AE20432E43BB7E4A3E87DDC4D42E816958806C
-6E02236BE6EECDD67013E1196445F6D7F609D6E7F02AFCD5AF97CB825C618A7A
-D1F310CA16C183D4F456FE26FD9EAF7C2E4D54FBCBAF6690D185FFD13FB48723
-2C27D385C3C7F10AD8548D437964E243BA66D9C9F85473C9A8CE493B8CF9488B
-51283DF20F324D1FC76C908FB48BFDBDEBD7EE92C38F8FC552D1083615B9D5E8
-38178CA472ED4177CEDBB1E9E9F978E184C410C5C7AE4792E16E4076E5EE56E6
-8DE78A2FB0B11E6597628548C15E1FDC5047A94976F8D1518FDA3CA78EEF3B79
-D9667A5A33373E6D51AF1A5DF556D6CC3DA9B1B05D9C4A04B368273F029C339C
-CB39578675EDEDA8184FB6A3677169AFAF202C47D2E2CBF996A02097ACA0661E
-933B1B7F53E982B4FE33B7314998E91AC283E2264B9382D636438DC7123E75DD
-947F85D9EFF43C1D1EB4A26C92023B30404334DA0A39495EAB791702CC7467C4
-A8A6E521879E4F5EA7B20B9F9051B4FEB948C4D1E8A749798012B37BAFE8FB77
-8D7E8447A752EAB82F6FD5C01D828E3F15CBB5397ADADCA87C58A0B43A850D83
-89FA2CFAF410A1B831AD97A0FF897A1B84A6D2467498170811B0C35A293D5B7E
-BAA627609CCD899FF1CA966AAE7691B7B25D7FFA5E4F40DAB1B33385862EBDF3
-D41686D3CCE52D08604917825BEBA3BB9F35DDF87953F98F78BAA196D49E0E85
-CFE23DF363257A0A73C2327D20370CAEE9C8950BA933357DA37698EEB0A38A6B
-982D6D74CF4E081F5918C613FA0F597B3FC0C96103339F2B6161C9629A882217
-65DBF6DD2AB7B250B4E39037A20006ED15987B94CE221347C7971953A3A4512F
-1B00743EBC25D598D26A43519F0E229C977F855788EEFBA46D5DBCE45E81B9E7
-A0D4DF26910BFBF6273FAE159A578100D9D4F21C28382A4299BF59EA31ACA64F
-1DB7F5E6136F1264CA76BED0314DB547BC141B66D7ED40156EB577C8A320D721
-6653C6E36945CA377DF8A3666595433371A0FD6A0A2D7FE2AB67D61014BCF291
-873E42D23BD3FA248498F6BCC68DD1B459B8F24914C9A91D8A2BCA9363A735AB
-FC14684B51A96458E9079DBB187DFA7BA8A630CCE91BB7D994237A2E074D651C
-8AB146922871396818ED132FD255A8D2B6D86E321A5B0E7E477B02F3EF751904
-65C3BF518E18C640CA6EE4C382C5F0FFE211EF38255869FB767AE3AA41DAE5F1
-CCA9901B64D206DC2278DC1DFD7D7EE59586147847344FEBD8C335D70CD3D328
-CE952DD2B2013A5B1023C40FE8270D6EF664B05D277FD1ACF7A6372EA5F963A4
-C361387207892C3829F80DCE51DFBE2774413BA22B36118ACE2B4497DC05C19F
-5406CC425A0229C62BA814B69274BBC388C65FD776639254376D3E8A22B4DD01
-BACF07EDCB4C3BD740D90C3E9FE5442C85CD341146083275E7E6F06A325D258B
-1F0DEE8DB0D535E0304623A534F21837D073F114A73EE2745389DA3DBB43DB1E
-2E88D19EADB102A074ACB0FB0253685A37AC1DFAA5F2013B17304938B10370B5
-8EABD20E44F66FB1ABBE47C7ABA0283444298460020B69126BE51DAAC9F3B1E7
-D9E58127FC044BE414636AD17CF8BCA641CE70A4ECF9CFBA6FF1249CE8622663
-93F73351665140799E559D6679C95911EE6F3C56C2CC83E2EE496CCF1A14362F
-2041083D4082DAB10AE54AB3EFE0ECDDD97581663A2358145D17F95ADDE05204
-893033CCFCDA729A277E7CDFA5F38CF4D3C858F48DC320D25ACBB5C5506AC7DB
-B3683DD214B86B24296AD996C89C838D3A834972EABAA158ECDE3EE960F115BD
-27D6297D6AC4F808A3E4EA827ADDA8AA2D36BB78A17DE2B5465A5043095B001C
-AB5C79A0358A7A527107699A0DF7574F3CD9281BDA1FB1E73D980013490615DB
-9119BBD64030259E6986642C49C9EF4E7C0E8FA1E47CF7F0906E67197464B928
-C530B9D7CDEE33AF8B8A6694CB986E1DAE593682FC2125A60BA60A8AD64714AB
-A2D81FFCD61D69EFEB61595008DA574F713EAB23B72FCFA99C2D53461381E790
-F2CA1A2A4DF73A38EBD37F2E1C4D588AAD1BEDD4A4597E2DB11397AE8197562D
-79D01EB222DAA775FD664D7DA111C25695EA6DD77658386026AFBAAAF6942DF9
-0694467DF3D00447DAD2BA92B56AEE434C4DA9D01527AF31D5833FAB8DDEE3A0
-DDCCBBE55E3D80BED233755BECC28A4B5EDA3EF7C8DB4452B59E4DF3B093C2A3
-0735AF5AB4EA5E80998BA9D5136A717AE59A6EE75DF436404D5DF18E0DBFABD1
-1EDEFBD87A79E10174374B74E7A5E382B8242EDED6A677C940EF13215BF1B023
-D83FADA38430F7EB9E6ADFA5262FDF3E7D562EADE2448F7E8396710CB518432B
-B24B8ABF32B752F4F0BDB1A7972CEE139F03478FAA9325D067ECF0ECAB96E9A8
-A4C2EEB195DF23C4EEE75B5B4959FEBD59D1B65AC1656EF91ADDB9D9DB831715
-12AF56B0C5D945E393C80DA5343B0FA26C4EE8CB1EF3024574F886275C1D49A6
-2EA7220CB4FA7E00BD61BC733F588613AF065A0E3A35D6A137A1E0293A4BC043
-2E8F50E4E106B3058FFE80CE76EBD85E5FECF95A327A99AF1BE0E2A202AEA0B3
-8E2AEEDDCFFBDD7F0699352A574B640377AB11DA5031F68CF58EADE04D281A26
-B778719E7FBCE64AF62801A497FF2113F92C03B4FAF2A4DE61B2681CEF369735
-A2BA063A69C5CFCCF48C6E756CAB752C32CD92F1983CBFD83BA5233A60BE281F
-3B5B204421332A0AB7638B6B2EB343AF35FFD09617F0F9642540026C2726AA1D
-5714AACEFEE5E8854A21661AC9069A644770C6EDBE1FE042A8B182C09B5A3BB9
-9C16DB410F86D83F2AFF56845D61A53E463FF03A238D73FA198AC855F0FE36E9
-829A500523F12352E80619577D361D5C10ED5B565DF05517196807A15BA46165
-9EA11DE9AE0682A72F46BADDA8E516D67DAA3BDA20A87697B5DB2974D30D6208
-C9317DBF964D5296DA4798ECF0FA5D9F8ACDE71D3599003571AEEE500D368A88
-09ADAEC37C95C64531E11A545E11E11DE4953FEE9FC074A6130A19FF149F9D2D
-2E4139D423D3233A1843D8937A533C97794B79CDE5DE6C520D42F9D1F44ED8EC
-D3B44F1FB2999AA7EA28B3B2A0D4D4C41CE3A1D705DF2DBF3789E47EA1C0571D
-6645E994D58AC8E7A738AB30AA8BA9FB392C1460EEC86FA647B352AB9B03084E
-4FD965BC288830633DE604B1BBBD302EE8D981C7E798EE66714B082938DD7A18
-A74590720A9CFDAFE92166EDBE42C64891E12D1480A2C449FB8F0213874046FB
-963EAB779262BFDB6C48204F5773A8AC6344889B553A481EF92836B01BF0EA68
-35B5EED77A92796E5FF32D8A58DE64871F2A155FD0227BFE1A15DBB3CB589D1C
-D0AD435D360BDD8DFC58D925FFC99D8ED3C81E2552B303BB372F913060A660FA
-282E3E33B244EB7F0AB212349BBB0AFBF131C13751112C055D664EE1E4567676
-F7C6645856609DB35F2E46462F98D001D67B0E6ED145834DC0A713D2C687538E
-61567648555CD6C8D71346C952CADB9E69F3C1D462146BBC69DCE801951FD24F
-4574BBF74CB1F08F5D1B19EE52662C30E21B602E48488CADC03B5AE8C44E2BF8
-63F8A848579BDAFFC90FCE8A002AA93A6E7F4AFD40E47F1D9EE1E3867AF6EE9C
-0BF5196069D9F692B7CB82D808BE082F53DE4EF8C2B2498FE1D73E865F310D40
-CA281D744365E17876754CA2F7ACF0AF1BEB2A2CE7286AF7535720617CE06A14
-554854506513AE68B10917E92AAAAE75DCB4D96B0B9D677BEA32E92E48BB8E24
-146D9C8A9433F6675356B00797BE0C9975267EFB5A16E6820B71E684C2E3FD49
-493FF7FD60B33F9177B24DD0DC34B9A81FBCA4DFF44F0E1A2B1B1BEE87B716A6
-388223F980D90F381F8382D16B6F6C545FC9192BFE327979710883F8DA842F04
-600B8A0D6C9D9EC4A1FC352498AD38036AC92DB7CB1F0F596785C4CEDFA66C8D
-D2E5407A2E11DAB7F5FAB71B962D3421C7D2C18828C1698B832A00D104515EA6
-9A04D9D00002B0B38E578728B81AB076390F1C845479AD190135B15853AE5CF8
-954DE8DB39CEE4667BB267363EDD1E6A38FAD7DF117FD2FEFDB9330267117113
-CC705D31D6FB82AF5F17648D05E8A0E2FBE679BA20B3E09E49B413F02AA9D070
-1DCF5344CC5454EAA2D1C3F37301C5436EDC34EDE79FBB1BD30F0C0A9DFA0BFD
-A84646C41B70633BF8465DB553290040897D5987C13E006A67C814BBCAB2D183
-553CFC2D79DD472098B7C7CC7285AD7E580DB885DD185F179AFC2FA413775965
-92702DED2D7D9FF6BA7331A2AA4F26457AC527A550649642602B39A47809FF85
-D2360A325F92B8CF424279152430E52000E92F3804363CB9FEC734E2AC57B31F
-FFA1999F351E9EA27E280118C25CA199BF9D98903D80615D15A1B4165F378942
-B57F7640E7BFBE9C5BBC948E50FFAFF4DE7F665E824E31EF84E450FCA8274C53
-00D183C99F1FE9650C493D42125EC4D18801CFE8A449C10FFF7B6D7692C6875F
-4D54092FE6838B3A9E92C195D3F358A540DCCBD0EA5A51D4456FECA1A3B71A77
-A391522F630CA83CB6513FF7E98DABB1F4604AFF50A2FCEBAC23C0FDF28B2C8D
-7BCEB7B70A0DC1B7F707CE3ADAAB5FA043D1BF1806FB12E6DFFCCCDA9ABA4E86
-1A2F3EEBE5B29E8B6334E37AC1B9F11502B71FCAC73AFE84A86A3D035477CB3C
-89E8FFBA16DE8D505C1EAA1D38C20710EB67AF1396E59D1113C07127BD03782B
-760BF4B9251A8EE2AC0061E5572951B4AC0C35620B96B215A2444458D57BF803
-7646ECC4374A7D4F397DF98A6878CAE5421BE3D6E41D69F87B4DC32B083089E1
-9F08A255D86E73B40FFEE47D9C0C1622F12DA0310A8BB4C86BE30909E154B050
-10B869B9981FB2F897F1C23A4C888F20DDE45A32B160049A4D04134044CE0D30
-3CA98E09F04B38A7745C1DF918E4775F9EEC1F91F7AA0B3D65B1797133B76F2B
-46665B431610695D200B82FB8244F0AB9DFC5952C7B10D27E309EA007DA4529B
-73F4791FC9B1F184D0A74BF3791A0282512C62DAEFDABE5E9B7EFD2F7F01FB30
-6A8308C81AB9434349248BAA0F7D106CED1B1FF3BD91141B717C5A2B516A5895
-874D18BDAC7F194037E7AABE63D455E32C081F5606F94C5EF44B3E4BCD529AD0
-402DC291316B20B14769CB159DE39C5A53E8E765DD0328EBEDC76A589AAB744C
-C2BE5DBF1B7DB827597978D26FFA98DF2EC770CC8B81F1BEF40BF4AB5CDBFAE7
-2D59A7CA3B6FF4774E0B5D38F7E73A3DADD38AE066C0CC245EB6BE4D23ACC183
-EE16820F18FA87AF6CB9DAE987193DE161E03BC2DA310E795510DC6F6CEB8216
-2F72BDAF8C4BAC344CE3DDDF27B27AB65A2EF6E1DF7E437252FA2696FE4DFE7D
-51BEAC31B86EACBF26C065B77ECCC097C9F48F09CD8BB51D97041ED93936D51D
-3508339A0B9766429B4A16ED3548A6C44156B6E1E01603338F87E607A9436E5F
-21C33FA7AEB571584410BAF603DB1EE387C8AA7D32F3313A6917FD31D2AB4A84
-F42DA72B35842AF21FD1F3C91E39C12B354D3BEAA16DCA445F7C92C12A52FF95
-DCD854B4CA124B18DD8A6D75BD0EE7B2439968BE5B5FBE136C892AE04AF055A0
-A8E31EA8CBF13B46587C78E339E11AA822C90F1A3AF2212A32AAA3E0F29C27D6
-124232504D64E4A2A5EF3E3AA3056119D91218D5A4427E93B1A339AA3D86013C
-984C5C97CDDDA726B230DAA72E960935B311E3663C013697E9FF36154EA180EF
-E02CC3FA28DA9390206346AAE5718EDD20B4F544EDABD7FBD5920AB70C2402E3
-00F45629C6C2A7145D8F0B205CAD75B14AF3BF67BE4B9CC11C35C49BDFF237E2
-460A00CAC8D265FF37A7C8F4CCCC0D68D89F3EEA3FAC2284F322067295BBD40D
-8D477923080A6C4F5880D98E95AFDE661DFCE0F5D8DCBA286C0B127DAEDC3581
-8B870F14B5E9485AC07CC4AE72F3992F671117C427090882D890BBB31C434D4E
-52C1608F2E11E98B26F158D685E7AB6702A9F67A93F390573F04CF2E5889A015
-F67C99EB20A5429918DF79CE4BA09D10ECDF97F7D7BBE495AD9F7049E294F68A
-AB442ED09DA5F30D2BFD47FDAECE7E409B14E7AD9ADB3946F41BF7F2065E322D
-0856242F9AE11AA7DD1F90447FAA9A3961852026BCEB5F472D2D6E9571B5BDBA
-C61F7B2D390927C16BCB224E8051D4ABF96435A0CB8D5160A400E7A81F0F36B1
-6CB8DABC24D57E7427DD4FB42C564A95DF799F335BD2FACD1AA9953F0E1E6D51
-50C19DE2EA2C6769EF15473BD2A2B0C4050D232DA4058E016EF81005CF8318D2
-4F3A71EB57772BF734ACBA9F8CB419B3260615DE199552390345C891D0ABA7FD
-4CDF12AD43DAF41E493CA7E2BA4F426B857F081E70A834DE83E9AA277BEA45C6
-F2202E3C076F8CCF23B02F8323E93DF97C7090AB931270C28F4BF8CB0FA60191
-4EFFF7B3FE507B5A423A15FC8D9795FF84F56D618045AF82E5A8E601A9E58030
-892887BBA3466B5C569C811B98A91F61C31A82237851016D67AC64B2D3374F44
-43E9C998EBB88A3CD3CE22DAB5478693CDFD256E5512A80FB951A1BDA713754F
-1C85604894554B713EF28F4191E77F639215AE4418268F2406BC1B17B3765F12
-1A5067F835AF4E7E3A9F45D8B158024344DB9C0764F74D65E74703C1429A8FE5
-B98D39D6ED875C7A14087D979C01084B9BED79361ECE38D0ADA853EDFCDC120F
-58BF1C99AE84BAE490025B01E13155F911C55B4CE3B94C648497102A07D36F2F
-CAE2BECFB3492BF4CFAF9DF08D2EA19DF5A25D0F4CA8224E0A5D68ACB8C9F06E
-8CB640C947212CCD8D2C373CB6B2C5479E27CB9550459C55BC615BF149B81346
-01C33F7338F16FBD408DC47F94206247218A3868A151D0C7C077DCE556FA0F19
-FAD984D48A617046BAD77696279988F6ED7A0BC46D224FB6AAB6146B72F4BA66
-CF5578B868DDCCBD460F2423367CBDDD9C4FF3FB18DBEBE211BA4CE357DD4747
-B2008CDAFEC9FB9E99CC724090DF4604883E31B10075B3069381EB5BD55329B3
-744DC177C4DB41A8681B1D3D0480F6039F2207DDAA3720A679E479E0C334964E
-6FB1EA368F2EBB1DF6BADF5C31909190517D8427F43AD3CDF129E1B75CF70B0B
-46AAA20C764E90658AF6CB7F4AC5E57DE2D9E7085365A811C34E63BF4BEFCACC
-5F7F328CB0503BAE69232B26B1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (cs-dired-ref.dvi)
-@start /Fa 242[61 13[{}1 49.8132 /CMSY6 rf /Fb 134[32
-32 43 32 34 24 24 24 1[34 30 34 50 18 32 1[18 34 30 19
-27 34 27 34 30 11[45 1[34 44 1[41 1[45 54 3[22 1[47 39
-41 46 43 42 45 9[30 30 30 1[30 30 30 30 1[18 21 18 44[{}47
-49.8132 /csr6 rf /Fc 129[35 35 1[35 2[35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35
-1[35 35 3[35 35 35 2[35 1[35 35 35 35 35 1[35 35 2[35
-35 35 3[35 35 35 35 35 35 35 35 8[35 35 2[35 35 35 1[35
-35 1[35 1[35 35 35 35 1[35 33[{}63 66.4176 /cstt8 rf
-/Fd 2[60 3[64 47 10[32 53 2[53 51 6[56 34[51 4[45 62[51
-60 2[60 64 45 45 47 1[64 57 64 95 32 60 1[32 1[57 1[53
-64 51 64 56 6[70 6[64 2[78 86 90 109 6[72 1[88 55[64
-67 11[{}40 99.6264 /csbx10 rf /Fe 7[34 10[23 4[36 6[40
-34[36 67[36 43 3[45 1[32 34 1[45 41 45 68 1[43 25 5[45
-36 1[40 8[61 8[61 10[62 26[32 32 40[{}24 66.4176 /csbx8
-rf /Ff 2[37 3[39 28 5[39 2[39 1[20 31 2[31 31 6[35 34[31
-2[27 1[28 58[35 3[31 37 37 1[37 39 27 28 28 1[39 35 39
-59 20 37 22 20 39 35 22 31 39 31 39 35 11[53 4[48 1[53
-6[55 1[48 54 17[35 35 1[35 20 24 20 2[27 27 27[39 41
-11[{}54 66.4176 /csr8 rf /Fg 18[38 4[61 115[53 1[57 1[76
-69 76 2[73 1[38 2[42 63 76 2[67 14[103 13[105 68[{}15
-119.552 /csbx10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop -247 -364 a Fg(Referen\350n\355)47
-b(k)l(arta)e(pro)g(Dired)-50 -256 y Ff(\(ur\350eno)25
-b(pro)f(Dired)f(v)g(GNU)h(Emacsu)g(22.x\))-63 -176 y(P\370\355k)n(azy)g
-(ozna\350en\351)i Fe(\(D)n(X\))d Ff(vy\276aduj\355)h(dired-x)-450
-31 y Fd(Spu\271t\354n\355)36 b(a)i(uk)m(on\350en\355)f(Dired)-450
-196 y Ff(spu\271t\354n\355)24 b(dired)1098 b Fc(C-x)36
-b(d)-450 276 y Ff(spu\271t\354n\355)23 b(dired)f(v)h(adres\341\370i)f
-(s)g(aktu\341ln\355m)h(soub)r(orem)71 b Fc(C-x)36 b(C-j)g
-Fe(\(D)n(X\))-450 356 y Ff(uk)n(on\350en\355)25 b(dired)1079
-b Fc(q)-450 561 y Fd(P\370\355k)m(azy)39 b(pro)f(p\370esun)m(y)-450
-726 y Ff(zp)r(\354t)25 b(na)f(p\370edc)n(hoz\355)h(\370\341dku)783
-b Fc(p)-450 806 y Ff(vp\370ed)24 b(na)g(n\341sleduj\355c\355)f
-(\370\341dku)709 b Fc(n)-450 886 y Ff(nahoru)24 b(na)g(p\370edc)n
-(hoz\355)h(adres\341\370)653 b Fc(<)-450 965 y Ff(dol\371)24
-b(na)g(n\341sleduj\355c\355)f(adres\341\370)704 b Fc(>)-450
-1045 y Ff(na)24 b(dal\271\355)f(ozna\350en)n(\375)j(soub)r(or)759
-b Fc(M-})-450 1125 y Ff(na)24 b(p\370edc)n(hoz\355)h(ozna\350en)n(\375)
-h(soub)r(or)608 b Fc(M-{)-450 1204 y Ff(zp)r(\354t)25
-b(na)f(p\370edc)n(hoz\355)h(p)r(o)r(dadres\341\370)620
-b Fc(M-C-p)-450 1284 y Ff(vp\370ed)24 b(na)g(dal\271\355)f(p)r(o)r
-(dadres\341\370)728 b Fc(M-C-n)-450 1364 y Ff(na)24 b(nad\370azen)n
-(\375)h(adres\341\370)871 b Fc(^)-450 1444 y Ff(jdi)23
-b(na)h(prvn\355)f(p)r(o)r(dadres\341\370)801 b Fc(M-C-d)-450
-1647 y Fd(P\370\355k)m(azy)39 b(p)s(omo)s(c\355)g(m)m(y\271i)-450
-1812 y Ff(otev\370i)24 b(soub)r(or)981 b Fc(Mouse_Button_2)-450
-1892 y Ff(zobraz)25 b(men)n(u)874 b Fc(Control-Mouse_Button_3)-450
-2086 y Fd(Ok)m(am\276it\351)38 b(ak)m(ce)f(nad)g(soub)s(ory)-450
-2251 y Ff(otev\370i)24 b(aktu\341ln\355)g(soub)r(or)846
-b Fc(f)-450 2331 y Ff(otev\370i)24 b(aktu\341ln\355)g(soub)r(or)g(p)r
-(ouze)h(pro)f(\350ten\355)346 b Fc(v)-450 2411 y Ff(otev\370i)24
-b(aktu\341ln\355)g(soub)r(or)g(v)g(jin\351m)f(okn\354)425
-b Fc(o)-450 2491 y Ff(otev\370i)24 b(aktu\341ln\355)g(soub)r(or)g(v)g
-(jin\351m)f(r\341mci)394 b Fc(w)-450 2570 y Ff(zobraz)25
-b(aktu\341ln\355)f(soub)r(or)824 b Fc(C-u)36 b(o)-450
-2650 y Ff(vytv)n(o\370)25 b(no)n(v\375)f(p)r(o)r(dadres\341\370)795
-b Fc(+)-450 2730 y Ff(p)r(oro)n(vnej)24 b(soub)r(or)g(p)r(o)r(d)g
-(kurzorem)g(s)f(ozna\350en)n(\375m)171 b Fc(=)-450 2933
-y Fd(Zna\350en\355)36 b(a)i(o)s(dzna\350en\355)f(soub)s(or\371)-450
-3098 y Ff(ozna\350)22 b(soub)r(or)f(neb)r(o)g(p)r(o)r(dadres\341\370)g
-(pro)g(dal\271\355)f(p\370\355k)n(azy)71 b Fc(m)-450
-3178 y Ff(o)r(dzna\350)25 b(soub)r(or)f(neb)r(o)h(soub)r(ory)f(p)r(o)r
-(dadres\341\370e)253 b Fc(u)-450 3258 y Ff(zru\271)23
-b(ozna\350en\355)j(v\271ec)n(h)e(soub)r(or\371)g(v)g(bu\013eru)359
-b Fc(M-delete)-450 3337 y Ff(ozna\350)25 b(soub)r(ory)f(se)g(zadanou)h
-(p\370\355p)r(onou)430 b Fc(*)36 b(.)-450 3417 y Ff(ozna\350)25
-b(v\271ec)n(hn)n(y)g(adres\341\370e)816 b Fc(*)36 b(/)-450
-3497 y Ff(ozna\350)25 b(v\271ec)n(hn)n(y)g(sym)n(b)r(olic)n(k)n(\351)f
-(o)r(dk)n(azy)500 b Fc(*)36 b(@)-450 3576 y Ff(ozna\350)25
-b(v\271ec)n(hn)n(y)g(spustiteln\351)g(soub)r(ory)474
-b Fc(*)36 b(*)-450 3656 y Ff(in)n(v)n(ertuj)24 b(ozna\350en\355)1006
-b Fc(*)36 b(t)-450 3736 y Ff(ozna\350)20 b(v\271ec)n(hn)n(y)h(soub)r
-(ory)e(v)g(aktu\341ln\355m)g(p)r(o)r(dadres\341\370i)71
-b Fc(*)36 b(s)-450 3816 y Ff(ozna\350)25 b(soub)r(ory)f(vyho)n
-(vuj\355c\355)g(regul\341rn\355m)n(u)f(v\375razu)127
-b Fc(*)36 b(\045)-450 3895 y Ff(zm\354\362)24 b(zna\350)n(ku)h(na)g
-(jin\351)e(p\355smeno)626 b Fc(*)36 b(c)-450 3975 y Ff(ozna\350)25
-b(soub)r(ory)-6 b(,)24 b(pro)f(kter\351)i(elisp)r(o)n(v\375)f(v\375raz)
-g(vrac\355)f(t)85 b Fc(*)36 b(\()f Fe(\(D)n(X\))-450
-4182 y Fd(Mo)s(di\014k)m(ace)i(Dired)g(bu\013eru)-450
-4347 y Ff(vlo\276)24 b(do)g(tohoto)i(bu\013eru)e(p)r(o)r
-(dadres\341\370)479 b Fc(i)-450 4427 y Ff(o)r(dstra\362)24
-b(ozna\350en\351)i(soub)r(ory)e(z)g(bu\013eru)436 b Fc(k)-450
-4507 y Ff(o)r(dstra\362)24 b(z)g(bu\013eru)g(v\375pis)g(p)r(o)r
-(dadres\341\370e)420 b Fc(C-u)36 b(k)-450 4586 y Ff(zno)n(vu)25
-b(na\350ti)f(adres\341\370e)g(\(zna\350)n(ky)i(se)e(zac)n(ho)n(v)n(a)t
-(j\355\))217 b Fc(g)-450 4666 y Ff(p\370epni)24 b(t\370\355d\354n\355)f
-(adres\341\370e)h(p)r(o)r(dle)g(jm\351na/data)255 b Fc(s)-450
-4746 y Ff(upra)n(v)24 b(v)n(olb)n(y)g(p\370\355k)n(azu)g(ls)843
-b Fc(C-u)36 b(s)-450 4825 y Ff(obno)n(v)25 b(zna\350)n(ky)-6
-b(,)25 b(skryt\351)f(\370\341dky)g(ap)r(o)r(d.)491 b
-Fc(C-_)-450 4905 y Ff(skryj)23 b(v\271ec)n(hn)n(y)i(p)r(o)r
-(dadres\341\370e)720 b Fc(M-$)-450 4985 y Ff(skryj)23
-b(neb)r(o)h(o)r(dkryj)g(v\271ec)n(hn)n(y)h(p)r(o)r(dadres\341\370e)326
-b Fc($)1866 -364 y Fd(P\370\355k)m(azy)39 b(nad)e(ozna\350en)m(\375mi)g
-(soub)s(ory)1866 -198 y Ff(k)n(op\355ruj)23 b(soub)r(or\(y\))992
-b Fc(C)1866 -119 y Ff(p\370ejmen)n(uj)23 b(soub)r(or)h(neb)r(o)h
-(p\370esu\362)f(soub)r(ory)327 b Fc(R)1866 -39 y Ff(zm\354\362)24
-b(vlastn\355k)n(a)h(soub)r(oru\(\371\))707 b Fc(O)1866
-41 y Ff(zm\354\362)24 b(skupin)n(u)g(soub)r(oru\(\371\))745
-b Fc(G)1866 120 y Ff(zm\354\362)24 b(p\370\355stup)r(o)n(v)n(\341)h
-(pr\341)n(v)n(a)f(soub)r(oru\(\371\))464 b Fc(M)1866
-200 y Ff(vytiskni)24 b(soub)r(or\(y\))964 b Fc(P)1866
-280 y Ff(zm\354\362)24 b(n\341zev)h(soub)r(oru\(\371\))g(na)f(mal\341)g
-(p\355smena)263 b Fc(\045)36 b(l)1866 359 y Ff(zm\354\362)24
-b(n\341zev)h(soub)r(oru\(\371\))g(na)f(v)n(elk)n(\341)h(p\355smena)255
-b Fc(\045)36 b(u)1866 439 y Ff(sma\276)24 b(ozna\350en\351)i(soub)r
-(ory)812 b Fc(X)1866 519 y Ff(pro)n(v)n(e\357)24 b(uuenco)r(de)i(neb)r
-(o)f(uudeco)r(de)g(soub)r(oru\(\371\))169 b Fc(U)1866
-599 y Ff(zk)n(omprim)n(uj)23 b(neb)r(o)i(dek)n(omprim)n(uj)e(soub)r
-(or\(y\))247 b Fc(Z)1866 678 y Ff(spus\273)24 b(info)f(na)h(soub)r(or)
-902 b Fc(I)36 b Fe(\(D)n(X\))1866 758 y Ff(vytv)n(o\370)25
-b(sym)n(b)r(olic)n(k\375\(\351\))g(o)r(dk)n(az\(y\))587
-b Fc(S)1866 838 y Ff(vytv)n(o\370)25 b(relativn\355)e(sym)n(b)r(olic)n
-(k)n(\351)h(o)r(dk)n(azy)455 b Fc(Y)1866 917 y Ff(vytv)n(o\370)25
-b(p)r(evn)n(\375)f(o)r(dk)n(az)922 b Fc(H)1866 997 y
-Ff(prohledej)24 b(soub)r(ory)g(na)g(regul\341rn\355)f(v\375raz)391
-b Fc(A)1866 1077 y Ff(nahra\357)24 b(regul\341rn\355)f(v\375razy)788
-b Fc(Q)1866 1156 y Ff(p\370elo\276)24 b(soub)r(ory)g(\(b)n
-(yte-compile\))610 b Fc(B)1866 1236 y Ff(na\350ti)24
-b(soub)r(ory)g(\(load-\014le\))790 b Fc(L)1866 1316 y
-Ff(spus\273)24 b(p\370\355k)n(az)g(na)g(soub)r(or\(y\))738
-b Fc(!)1866 1523 y Fd(Ozna\350en\355)36 b(soub)s(or\371)j(pro)f
-(smaz\341n\355)1866 1660 y Fe(Odzna\350uj\355c\355)27
-b(p\370\355k)n(azy)f(ma\276ou)g(zna\350)n(ku)h(pro)g(smaz\341n\355)1866
-1768 y Ff(ozna\350)e(soub)r(or)f(pro)f(smaz\341n\355)732
-b Fc(d)1866 1848 y Ff(o)r(dstra\362)24 b(zna\350)n(ku)h(pro)f
-(smaz\341n\355)665 b Fc(delete)1866 1927 y Ff(ozna\350)25
-b(v\271ec)n(hn)n(y)g(z\341loh)n(y)g(\(soub)r(ory)f(k)n(on\350\355c\355)
-g(na)g(~\))162 b Fc(~)1866 2007 y Ff(ozna\350)25 b(v\271ec)n(hn)n(y)g
-(z\341loh)n(y)g(\(auto-sa)n(v)n(e\))510 b Fc(#)1866 2087
-y Ff(ozna\350)25 b(r\371zn\351)f(do)r(\350asn\351)h(soub)r(ory)634
-b Fc(&)1866 2166 y Ff(ozna\350)25 b(\350\355slo)n(v)n(an\351)f
-(z\341loh)n(y)h(\(k)n(on\350\355c\355)g(na)f(.~1~)g(ap)r(o)r(d.\))109
-b Fc(.)1866 2246 y Ff(pro)n(v)n(e\357)24 b(v\375maz)h(soub)r(or\371)f
-(ozna\350en)n(\375c)n(h)i(k)n(e)f(smaz\341n\355)100 b
-Fc(x)1866 2326 y Ff(ozna\350)25 b(soub)r(ory)f(vyho)n(vuj\355c\355)g
-(regul\341rn\355m)n(u)f(v\375razu)127 b Fc(\045)36 b(d)1866
-2529 y Fd(P\370\355k)m(azy)j(s)f(regul\341rn\355mi)g(v\375razy)1866
-2694 y Ff(ozna\350)25 b(soub)r(ory)f(vyho)n(vuj\355c\355)g
-(regul\341rn\355m)n(u)f(v\375razu)127 b Fc(\045)36 b(m)1866
-2774 y Ff(k)n(op\355ruj)23 b(ozna\350en\351)j(soub)r(ory)e(obsah)n
-(uj\355c\355)g(regexp)193 b Fc(\045)36 b(C)1866 2854
-y Ff(p\370ejmen)n(uj)23 b(ozna\350en\351)j(soub)r(ory)e(vyho)n
-(vuj\355c\355)g(regexp)94 b Fc(\045)36 b(R)1866 2933
-y Ff(p)r(evn)n(\375)25 b(o)r(dk)n(az)1145 b Fc(\045)36
-b(H)1866 3013 y Ff(sym)n(b)r(olic)n(k\375)24 b(o)r(dk)n(az)988
-b Fc(\045)36 b(S)1866 3093 y Ff(sym)n(b)r(olic)n(k\375)24
-b(o)r(dk)n(az)h(s)e(relativn\355)h(cestou)440 b Fc(\045)36
-b(Y)1866 3173 y Ff(ozna\350)25 b(pro)f(smaz\341n\355)961
-b Fc(\045)36 b(d)1866 3376 y Fd(Dired)h(a)h(Find)1866
-3541 y Ff(otev\370i)24 b(v)g(dired)f(soub)r(ory)h(vyho)n(vuj\355c\355)g
-(vzorku)114 b Fc(M-x)36 b(find-name-dired)1866 3621 y
-Ff(otev\370i)24 b(v)g(dired)f(soub)r(ory)h(obsah)n(uj\355c\355)g
-(vzorek)131 b Fc(M-x)36 b(find-grep-dired)1866 3701 y
-Ff(otev\370i)24 b(v)g(dired)f(soub)r(ory)h(p)r(o)r(dle)g(v\375stupu)h
-Fc(find)76 b(M-x)36 b(find-dired)1866 3904 y Fd(N\341p)s(o)m(v)m
-(\354da)1866 4069 y Ff(zobraz)25 b(n\341p)r(o)n(v)n(\354du)1014
-b Fc(h)1866 4149 y Ff(p\370ehled)24 b(p\370\355k)n(az\371)g(dired)871
-b Fc(?)2219 4454 y Fb(Cop)n(yrigh)n(t)2522 4452 y(c)2505
-4454 y Fa(\015)21 b Fb(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5
-b(oundation,)20 b(Inc.)2302 4517 y(designed)h(b)n(y)f(Stephen)g
-(Gildea,)g(Ma)n(y)i(2006)g(v0.1)2299 4581 y(for)f(GNU)f(Emacs)i(v)n
-(ersion)f(22)h(on)e(Unix)g(systems)2128 4645 y(Up)r(dated)f(for)j
-(Dired)e(in)f(Ma)n(y)j(2000)h(b)n(y)e(Evgen)n(y)g(Roubinc)n(h)n(tein)
-1866 4737 y(P)n(ermission)d(is)g(gran)n(ted)h(to)g(mak)n(e)g(and)f
-(distribute)f(copies)h(of)h(this)f(card)g(pro)n(vided)g(the)1866
-4801 y(cop)n(yrigh)n(t)k(notice)e(and)h(this)f(p)r(ermission)g(notice)h
-(are)g(preserv)n(ed)h(on)e(all)h(copies.)1866 4893 y(F)-5
-b(or)17 b(copies)g(of)h(the)e(GNU)g(Emacs)h(man)n(ual,)f(write)h(to)g
-(the)g(F)-5 b(ree)17 b(Soft)n(w)n(are)i(F)-5 b(oundation,)1866
-4957 y(Inc.,)20 b(51)h(F)-5 b(ranklin)20 b(Street,)h(Fifth)f(Flo)r(or,)
-g(Boston,)i(MA)f(02110-1301,)j(USA.)1590 6353 y Ff(1)p
-eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/cs-refcard.ps b/etc/cs-refcard.ps
deleted file mode 100644 (file)
index a0637f4..0000000
+++ /dev/null
@@ -1,2523 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: cs-refcard.dvi
-%%Pages: 6
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: csbx10 csr10 cstt10 csti10 csr7 CMSY7 CMMI10
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips cs-refcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.02.13:1228
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.1: CMMI10 1.100
-%%CreationDate: 1996 Jul 23 07:53:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-32 -250 1048 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
-990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
-6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
-DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
-59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
-D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
-8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
-6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
-1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
-03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
-95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
-74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
-3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
-47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
-AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
-42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
-40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
-B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
-9560176676ABB71BBD0EE56B4CC492C0652750227CEC6CBEEE374709231B00CD
-0DE83AFDE295B314F6C8B1FFD32251C1925D96A64D739FF1DA4926460B28B3DE
-E949AA0BA3DDB16534FBA30C32092D5F712B5E8C8D5142F35AF2906E6C219D2C
-7FD9A368C193E0EB9C7E25FF03C546B6ED993F964CEDB1B8537C617170787F37
-88D6F2AD02384B01067FE3F98257BAB958BB3BCD1001090A4502DA0638080EC6
-DB784CC8AC37CDC01B29BC481D6A05ADC6188785262358C1BF1D694BBF31C1F1
-AF117C1ACED44AAC6EB4B9A2511A6762DDE8FCCBA5
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY7
-%!PS-AdobeFont-1.1: CMSY7 1.0
-%%CreationDate: 1991 Aug 15 07:21:52
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-15 -951 1252 782}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
-8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
-F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
-E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
-424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
-E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
-C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
-868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A
-089B2D24FA80E89E381E17A5E49663B60435D79C04AFCB27AF313045D656F461
-93419897889D12DC113AC6F3E770F84030ABB6E0E84822062F22823E15C18EE6
-E524114FBC6B5FE333E2C649670C7EEAB2EE8F98CECBC72B2061A886113BCD86
-34BC89B316AED93C32336F15F2038797FA6AA3B63EF403BEC4F40DCE0B2A1C89
-92BC8F62BF85B2D4418236D4795B16BAB0DC89098B5226FB96544457550AE495
-36ADB1399938FF601079DBCBD45914B5E3EB0D6AC6DD675A093B837B3A42BC37
-528CF6FF82FDD1BFEA6FDC9AC1D7C2B234D3E2CB59258C530CE314F409C10B0C
-6F6AB5C5328407AA1A3A0835D81524219D501B2CA34F839703364431A499320B
-F219D27AE28BC90912E7
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csr7
-%!FontType1-1.0: csr7 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25529 25807
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csr7) readonly def
-/FamilyName (csr7) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csr7 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-31 -251 1122 864] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A13872340A840BE8B95A5F1C25
-CD575CD32721748B2E67F9EFB55236DAEBD0A0A66E00D40EA8F97CC2D2C60B23
-D6D605B155A7303A9304DF379860F72EEAAA9A6A3D763A766A4F7F7C298B77F3
-8BEFAAFC7E7C91B8285AAC489F9B84598AD6FD112A7E3F85F66B0E063013FA13
-EAAE7D3008EF4CC3C5E3A73EE8DDF17EF3426989F331E68C4E36976CA972DEAB
-90B647C14B200DE939EA777B45D3220E4619DFE510764CF8D22D8219515BD27D
-EDFE3C56106DEA15E8C5B3E8A66B1B8EFEEB3AF622C560D4D8A5C8CFD081C385
-9CE1F49CB88A38F2EB89589DEC399626D687B1AF9C593DAD2839D4A2593A1F13
-3FFC135447C687382EEEC507833E465286304C3200E5D3E7328064B84F05E696
-F7C269217DAA9466269DF343D09B283931A74BED0B18DB3F17F9E9F23F598D56
-D5EC687F7A1E6E70E6D6AB335CCAD0426C5396072F15A124743CA6149C5ABB72
-B8D388E2829E1FF5614D22C358B72F7A86EC62F17514C5A0C9EC297A31D0AD53
-1C9FDB368EC14813B24C84D3FDE47DC7990E350ADA10FC2E710099EBCAE53C63
-FEC9C91AA27DE81273BCC7EC20DDB18EED75D7D04DC39DD27EB86BA5EC4EC9E4
-349CE0EE181973616918A974B51A34B147BD3204EB4EFAB3A48CAEA28950D309
-6D39676C15E531296E88B57CCAC3DC957037D5E97FE28E784A2F98B3767F41CD
-6C5D59E708F123892A76C60EAB7EA01FEE0CBD94A78ABFBA9A34D0FEA1117400
-85FDDF49D3313E227746DE830E6D090D17073AC9D62BD413D8E8083658152108
-652C317C168DEAAB3CA7F0E20A50BF81B4BB1D32B7A26FD1D6ABF8907AFD01B4
-63272EB0915973C52515C87B55390252A98957C41751D016F2BBCB1E8577E6A9
-65600DBB29116D97A4DC9ECE699DCC7CAF542B507DDD77014C2926BAA2BC1631
-BA1E8FA5B5B98022786D9638A76360FFD99E9044C1F5B0655747B0DDAAD865BD
-A0E537302FA691935B8767EDB785573B859622143BED2717AB03262A0CBA7E5A
-F695D44640348F5C7CA372A9C7C4FCF369309FC3F27D7601646F7BE779596563
-D34BDE93140A1EC6F2BCC20D8EA1210CCF194D253C3234BF4CBB58256AAA4DD8
-3C8174AB99A31D54AAB23F63A8B80B973C5FB15770EC42B469B0BE7BC493C294
-16527A0F5D5C3BA85983E84F59D9F86F1642548A4ED5790BA17FDAAA2C8658D4
-771BAFEA3869A86E4777825D745663392642D27A1661C65202889D65D15D0A50
-B6C4F06A98D4302F694C03749274C25D91C9FE728405B46CB5289B854A7E8682
-A7A6E426D4DE26D5775808E650DA607A1171808788DED17A1715D7440D6A22CF
-01173F11A4954AA49209DE91D48049F3194DF0C25DEA3DB243B777885FF45FDB
-6ECDD1074B0052010F734F7DBC2F79AD8A3E267FAE9D97C3E43F0CED01AB9E5D
-93DAFCCCB326DD03C7291AD83CDFF069C79A939196AFFBC6930B0B5641402DAE
-4CDE4ABF5421FDFF8AC14C4421D3F253567FDBF9BEC201546C32C08CF24A0B5D
-7150DEE9208FD0E20F30DC460F3A3056018CBC2B3BDEBF3C971654E807E337E4
-7FDDF0F773DE0FCEAE36B0E0B859E1F2C5998994E9552D8E914675F5A00A855E
-8B17167F7073133BE20413033D04420649CD805B13785265A5EB42B76AEF246A
-3FC66787060EA27C1DA79B16DCCE11A67B92758ADB7496B1C9426D4837BAC8C8
-1110018C1FE3E882C6DDC059CAA29A2A451E202C0877C47FA7BB582977E8E7B7
-3944561FB68717A32BDA2C12B6E0E0613F5DF1B99908AFB05963CA5F48F44B37
-528903BAAD3BB7B44DC1DF804B48B814FAB4ED9C8B67B90753FA0544CB7151EA
-F414F439E45447B7E00EA0DDD9716CB18E6F4B1B876B46F4AE3FEF38D22125B1
-8030F8000A0869EC20DCEFF8FFDB0E7C39155E681D1CA1AE18770D60D3847B7B
-0C0232FE0EEDF8422A71AADC8429207AEFD8F9D68D8A8A81CA4058524A85EBEC
-627DCE848671DB10952F97CDA499AE32DA838CC4B2042ABFD9C82E1C44FD9B4D
-D778E3DE1EF0ACCFF0E98667F99BBE81A3A8EA8FE12A209F6BEE36AF7FE0430A
-7A05F781AA6015A9388AF7A7BC050402BF4B911DB192F6F50A20C488E297B9FF
-D62C7BA568DF06DC56379E97AD83A2162E4C088363E3FA1903E5BD6938BD3D0C
-74D6561B236D1F78786C20F4A5C0330B2FD2F175D75D4FAAB8DB701B92702C89
-44524FAE730767800C1B71DD4C7B217F3C12E54728B6CDC35DEAA6DC6827BCB1
-22AEB3B04198CC5DB863BC3552287EEBB8FDA1EB19E2B14EBE23790CFF34ABD2
-7479919A4816B83FC399B36E5C65930593CC4D07FADA850A6F9BAC3743DB32A3
-3FD7932EEE76FCBFA0F05BF141902025B9D92D7E6E829A7DF8AAFF4AC4E67C6C
-5E1E987438314F8C9900516B4AC073E5EA5E6DA4A6AB40A30517CCEEC1BAE4B4
-D2E574D2487C992980B9BEC05FAB0A7E5533CF9AC951E2BBF21810241A49C709
-D66D7066416185CC2404224DBBCDC121D2A77B833167A4FF40C2E296CEEAE79B
-C3D7842578CCB70330152C215F116FADAF32C037B418D269D591035D246C3A28
-1D94DFBAE0FCC2E4F3DD684847727DD8507C56D7DD1180455C231D0F22A83558
-C0035B7EA552FEFD1AA9FD1DC0BA8716E64CD5BC86F84276FA9D302BB8329CAC
-D7B36D5D28BC84B104E2E7C620566144104B113E6EABC02F4B499A919A0EB2C9
-254750F791E9D288981848A17BB406397750E1E063533909EED5F9A145E573AD
-8824A137907F7C4C931CD7F974BC226B848416CAC06C172D6F4921778AB362D9
-CEA68F1C66AC5795F4AE11FF52FFE1354B152C682B9DCEDBEE5937802430CA4B
-9D8DB908560440506E8273319195E0FB9BBC7676A10C8A2FE8E00E02F5533658
-40987BD7D583BBC165118939024D457D461A019D4DB4F98BF3A6FF801BD96D91
-3C83BF834E119C012686B9953AD97AE25BE1C7A7E741EB26D3D93E55B5CD7B78
-ACDEAC1FA02F5BC4CF7DA4C3675E695F77E64008F94AC2FA6A928555C33AE481
-D94575652F509FD01FFFC15041AE754BDE5A33F7C5FABDF5669944EAEB8A884D
-BE562D38199C73C4289E185D1793D70E2B5BD210147722F9A76C92C252728192
-E0932953D98F88E25ED673B03C498396179B45B0B7B34E77C7802540C2D32848
-F30961C6A297D69941E50190C896F459052478D24126D19EAC1F8A1531E66970
-C87560D13B94294FEB10FABE7A60CF96B3E866F56E0A30D6BDDDEC913178217F
-EDA129B098F4864EEE7745B85F39484775E852111D06F09221C42B65D1344148
-B75E80F2C73C52382E09C1869645C61F94FBF0F75279FB1874C7B6725612EDF9
-860E2D43416FE779337F3B057177FC1927AC7C08E664BB078D7A88754E8AEEC7
-B7050A42A1FB41E9109B0D0D853AEE0C8CC858C2322F5B84D48A6D706EA58DA3
-B559F5FA891834E7FCB636EC92C8D4AD667935B766637D4DF180A036E124C3E4
-37BE953E6A69AB663A24E8040D4E7955F81653993115ADD6EAE5EF3E99FBC1F6
-026B3861B9D14210BEE715B4B740E5228AB9AECBC553F7EFAA12A6B05E2F8076
-237CA834A9517EF999A1BACB14AB7B0D76DA0424FA37239F3DE56AC699F5DECB
-584E177ED1B778AC58D1FAE0ADF84F6ED1DAF4BCCC47FED08E972120C04146BB
-525AB915F7DE3BFC728D31D00C83C1703F0487C9B2943C512D1C366FDFCA03FC
-47FE882178C1DF18158090A62C5E7617FC34120326EAB952754559F0D8B69703
-460509F10D9FDAF4E29F4427CBA489D7A98AA60428B22449777E399E3E78FEB6
-1464FFF0247279C31B48524C28A84549B120DA1B8798DACC2367B0932A0BFF75
-F2D3F44EFF1FFB5066E0037BDDDD2229BB2530ED4D01C2A466F7F1FE89928092
-EA674F63B4B4C4AD64331A99681E63EDB66CA5D62B5598DC226936EA8614C5E3
-603267E6FF17FC08F7920FA3D92C9DCC571C4B31C12B8A4497C54261C7F916F1
-F70CC389EB038CF41EACDFF47E02959EDB3D8F50980FBBAE2E20CF28B6B96ECE
-D1582505FB0C00E662B1D0A31D48BF609210D038C9F8F52064AAFC42D3F4BDC9
-AB1916B45687100E58E97D910431F50E0BB03C9E5577591CD09684FC818E62C5
-3490925DBA1883BBD8CF5749FB25072754DEADCBF8EF6AB4AD998A5A82A90EF1
-D89C8F1CFDD15E703C4EF8A75F716541156508DA2067462C3B3D1332831A6258
-EA1B487B2039FBAC9B1898FFCEF004EBD7B748BE8812FF092B4592F317852A5F
-D450ED65F9AB7084B26632C69640CF28D54CF20363A49CC061445A11FA981B24
-868FA71DEA8753D395494C570FE29CDAFC2522EA3712CF8B4E072518EEFC3D4C
-591A86F3D33AA5112C33E7B4C4396D8E1C205A9DA6C1D8982E2093874A553B1E
-20D8C824B0F9934C8FE700A3C433D66D936AFB1464F369171A015A594344A973
-39205C1A75DE8830AC151D6076B1325FEB2A54BA363191FF74E67764A997E14D
-29270E9F7009E86548DFC8CBD96B1D3455D84B2FDBF10174EB054B62FAF3B72C
-5FEA8049A05B27168B4EFF01DD370C17DE4376C2793ACC698EA19C15C2E9E976
-C2F6D151D9E96F9892FEBE99F8AA201AA4031AE6A5502FA06AF57044566C590A
-2FA7EFB9F9A208C78B3970EC9AC9383A07F78A6B8E322F3F482B136148B37CF3
-B8D76BDE754050D7D491B47A559BC6741224D97652956E889B02261D9F164C3C
-903DBB12FF2A0D1A5BF986DFDED798728D29B9B988894E59BEFFF4B33C46E2ED
-22578236EC46C85947CBFE32894FDFA44319A135D989DE1015A66B5E2C0F3267
-227B0D1976E93AE88F6B5DEF77F049225C7190CFB9B733905B4548403288061B
-0B3793F72BD759941BBA7DD59BFCBE05BA7C9B8B21BD813654D0A3F8345E629B
-05B9100CCE2A26C826186AF363D4257733EA1175FF820B35B6D3290FEED1ABE0
-AF29C45610EB4109A999F098930DA22B1651995D1011DA3BC3C06A23182D72CA
-2CDF3079A8AB8A957E6932B4443C4286BB7787D949A7E6630C609304968C5A4A
-E6B75AC96C23959EEB0CA2F1D7AB77392EB1F0DAA029DB24B061068A453B6B4E
-8710DA5E406CFBC130ED9C494352F35D92491BBFD7563E43DBCCA40A4E8EE90D
-695DA2D1CA76684A7AD5465B2AC8F98DB84F7470DD3BF5D690384D58AF278448
-64C28AC301C9A5376040654BFEB63D68EB030A0816DB38F253B92AD36D3408FE
-CACC49666D06416CCBF60F7625103A1C8B06F0444BA457264F17834E3C631AE9
-3CD16C38A2764E21E5C06469DC9941DE01B2B69C249A21058DA41C0F712D6EB4
-771D564D395DB75E59B6B6FCAD823AA9292D16577986497570D3BF0027804326
-9BD710BA73326DEA241D8FEA02C77CFAFFB2E1B22C89BD7BBF762206BB7B63B0
-FFD8BB27727A4A563E5EF3C76DD57181408AD5D8D4CE428090A0BB7AB574F201
-591C049E4092C83725CB53433BC98592D5C401D05F01FBE781553AD2DA858885
-D905DE7C0A65E813175A4EB760BB3E01D73EAEA2F1AA91C203E695CFF8049550
-D8DE626DD2C256D519DC5324B99B354037A9978E3FF637F76F5E15595E09B6C5
-1D9C7D0EE94425F89BBC6C57A65DCE445DC2F49FA8C7636CCAD804F0B26126D1
-FD549870235BF4E5C7CA986F104C7C0E33BB7536E5A9FB8C986E89C6B25DA205
-A91D76249898F66AA72B8DBD39F60AD50FFC49AC88D7EA03FB0CB9E2BD13A3D8
-CE65E7FD6C6A88571FCFBBC727D54B69BE166B5739068D087E9BF832FB2D221D
-9716ACA9FE6AFC513ADF36F652265E0D202B32E1012851650EE6B39A5835EF65
-524CA2AE86DEAB22D43AB33B93512161F8C0C968382712788690EAB1356CE14A
-B10B24123BEE065424955021DBFC0243572607A62DC41ECB1E0E2108D4B2B805
-027E50BBB534B19193151BF0E4D5B3CDE4EF593F2FF4B2BE846B9BB8B2548ED5
-A647651FA1A93EBA678CF5A3069FC36C073423ABC716062D460DEA2ED5C5EDF2
-93BAF334EB970F9A5A2C069C273F332B5348BF8C52BFF8E5E6B395258A3FDF46
-90243DC26F19827D027445E99993D46D1D80B83991F9E49A36BE735B53AC696E
-E29A951AC9FB290D97382B593F2634FDF45429CF9557A23F957056D601E8DCCB
-828567132B96D5FD8CF721475AB86494CD3AAD998C2E17320F279577773E9501
-5FB03D38EE5D937B7BC9D3E8E089E47A1900717CADE0985E0D919C550AADE846
-125270BC3B1E72AE6B09333DDFB1644F3735FEE4748ADBBD6F33560FE348253D
-A1A2EA0406867C967E96D419E8A5E29B4AD6EE5415FFA396853E991AF6004448
-0A8AF0FAC0A09B5CE25CDB7C7D90450321527AF04343534302461E4E498FA76E
-66B801141737177FDA17A926DD22312AF9608A77D941FFC26CAF7E9C6736B62C
-B4F99589A95967E68680AEEAA8C41D44DE0C3ECCAB62188B325969B8E0A11820
-A6811E8050E222E7AF8B9134C3AA641A8C10667E0363675CA0702B346DFF151D
-1AB8DFD54C75530E9F215A40B481BA803A7BC22513C6F62B395C33A72F529C1F
-2C43692FF5E245856762501C8CA3F4597D1F620A8B4A48190C68A6FD3BD0B79E
-45B39DAA0A83404C59D7F2CEA76D8C39B3F9DA544C603AF27D2E0698B0D59B22
-52723B51A4C7240957A5F9BA3E07E79F8E93867EF1537C9E4CF857CC8A6E0896
-EA633D20C16EC0905AA74FB443F301D6C2FF909C363F99DD6A3BEC57B12859D9
-904D3D37F9B84215698108F4B3D6CB2B1E6DF5DEE5B166879342CA642D5F919C
-6BE08B6637817155564C3D7ABD29EEE1EBDED5571C31A8C75FBFFB52A616A773
-525A92B7E34DF5CF7328F6EABE0B9AA4282C8001FC1F5787BCE8D99544EA4790
-06C13E5D3C05802AD29662968CA835D043837DB65BBFAD21D4703D45274AAF55
-B04FDB4231E9D4D7F5EB4D14ED75850BFBFF2290750F3FD72284830780414A75
-E8553105F9C804B4BB2C5035CD7A1AAC5D2924D1B6C3FA7E717F4BCC00E784AC
-9FA498D9C814B6318AE10D15B6147495C1AB8FDDB12A38C93B3E20AC16C0756C
-2C0955D4C6B82C9DA7121AEB2D9DEC413E97E106CA1742146B72501AEFCF3D8D
-567B5B49359049096DD81065722BEAB7050BFE32F5DD8F141FF7D01630C673E4
-325EC6FF2D541F20FCCBC41FF5D311589C25F39F521C722F0B0A8F785FBE4818
-C984EB22D5293B799344DDDAF4A0414ABD71E4C66E5436999B14E925E7EEF81B
-3FC0903E36F7D902A4135A45A199CCF6B24E769A3CDE0544A914296C3D15BA76
-FA0EFFB40F7FA7E8A789462BE9603E85B01FCDC8A46C735D6937D407B5CEE5BC
-9BED3E4C4798FABA68BBA6663848C5432B5DC3CCAD6252040E245F9E02F30D4E
-0C7707093A1B654F9C80DC870773DCDFF7B7603614A0D00493EA8BFDBF5C6FDC
-9C9F4611E55F7E614312AD00F41837D4BAE3A6B966919437A60DA5D6A541D1E3
-2C528CE4297D3379181ADBCA7B6CA86155156D633DAB4EB5FE2653D95262E2DC
-AEF216304F72D1DAA0DBF303075ED87AA036E2D54F5574197793215322055D87
-73EB1543AC86CFFF249C495A0ACEAED06D9A61BD432D9FC8E45B27BAF9E9780D
-B37F1C0CF3D44EE1E5587DF39C18DE2A1C870278809F31C6DE14711B060818C7
-43A5949D8352932E9FCB4232372E55AF7CB5F283D8AAFF8F5D352577FA8FD9E8
-E337E4C6C2888DCE39CB6E6BC497EA04378CEE24D0E2ED2177602DC8D8E18260
-71C2FD1DDDDCBD1737E2E9FC117AF78BBC6C2C3A1BBD7B7F41AB71874D5B3FBB
-17EC95E055E0ECBF74EA6D9EFC259C7727996C90672AF33F8B4A343647401EDF
-70E7A4D43C136CD3E8AD2618810BCB00D0DDC484F9B7A5DD0473FD64F0E0DBE7
-3798E953E737EC83A330FBFD500A5A930B9117F1C720D2CD18FD4B2F6776724E
-EB7E137E6C8BBEBB70B8789BE8CCD9413F4098F08D0F2C7131C24962F717E97A
-96C507E726AC79EECBBB53BC3DE1DDE64425BE968233BEADF8124C09673371C0
-36C2B469F8D8E266531B13B82A18E7CBCEE346B40BEBAD371CBA5D36F8EDEF2C
-DB943BF490A6D8082922499B3CBC398853854FDAEE8DA4FAF204ECB931136234
-BB3CA445228F005C81B7040605337AAE3DFB3D0E36BE183E31FF848AA588DFA0
-7375E839956CAEDD61ACC25644682D9A36B780733490DC944614AAC380F8F03C
-5E595C5641E32FDE24FCD018E182837323A57AF0DD8E1C7A035CD704A5DF14C4
-0D8C9D7CF25029A6B55DCA871B88F4A59F28418C96F8F07500D331ADE797F880
-2E4D44FDB4B11195C9DCDFA24CF169FA95356B98D6263A8D15D82C2F88120744
-DFDB06F521D6113DCB863F779E7AFB31C9EE8CC55C3CC6A5B9862990EE30A78C
-C0FF46553998EFFF66F1E27BF8312CE63B8B0487EDF508C99D5F54586A6A88FB
-57AF348E3221C910DECCDBFC2005DC0B0CDAB3AF3DC7DF9391D50F219EE4C27B
-0A312F4AB26AFB6A3C6A67F5697EE2880DCBCD6E27CC92BD481452D205CC7155
-4DA8EDD05C91B096C3F8A3C7EF174A2A7D8CC2495D5FD5B7DF19256EB4A55548
-ACF2AF826B8FFF00CB38FE3B6FFB59C3E5C868A6A996E6D8B8A5B9B511B99810
-83615F55A7C5577FD55367D536BE414B5B3334221D0AD4250590547BCF01FC09
-1B491FF84C3B2C4A8781AE24D9B5EA4D10F6F4B6F6BA25FC48F480601B8D783E
-D1A820D978498ABE73FF98BC5D4A45A78672A997D9F63D97C6B87CD0E8E97F32
-A9478F43FA9D80AB17D5A0B5DA855076219B874084FD76037FC5EF73056C09EE
-FACD5CD1C28A95581F4F52C7837DE54009EBE541514F5BE2D9F334C26F25BCAA
-8C121C649034E00C962A4431640E897DE29C136CE85C0B409ABF38754BF77F48
-9100CDAFDF1BC6F391DF18AD5CD759056A68E9DF569EFA2F3C6EFEF4C83D6506
-5302153C57EC7B6CA17AD0831F0703F8D043A4B26BFEB59242020E29F88EB1BE
-7D90042D3BEF94BFCD6B3BD1A9F9A5A71FB24C3B8CE48182B40443811FAD8B11
-AF7D7F23CA94CA69B9FDDD267B57370095062384E51C606634BE9200A733F631
-740C64B1BD6004B169EE5EC4B2F4F61CF0C6D755B489E96342DE840218CD610D
-C539415D23B834EC5522068F34635B8504C08877916B90CC8F012959E9048500
-71060825C23416DD9A5F9362FBBA9D17419872092296424CB694A60D3586E1C4
-A695D880F51D5963F1B5B1F372E2CFE0B1013BD90FDD31EC1EC79010E9371E55
-69917283DD3AFC128E5BC1F973589975290B51C054C2B8B9BCBCAF73842CADB7
-9BA75E171B7E523E0DC4F3168415057EF3005B5E6635D70F935D2A923FBBF2C8
-F498B05478CDE2FE1FEC4956822F8F46488D1B0D87E211F345066501F975A264
-5720B66A158E262DABA754F8A4911F68485917AACE531B63EC3366128A81A8D7
-96F8A38F9381B537AEE62A7CCE3E774705C706A8387582B34E71EC690B0B1ABD
-082B8A776FD27DE161A37999539A7874C9DAD54BAF0DA2C4415F07FA6EFBD987
-578FA2F1611D60C9E51B4C3589C85EFAD5AF06DD2A5A65E32B340D41B201308C
-5E0BD23C854008135398365381747497D15DC7CE5FFAD2C3B38203F7A4743984
-96314336CC4CC4BCA070295B3CC0883B0217E01FEF746F33C77EBE589162A6B5
-8826CF158E7681124DAD20B92D4166DA46100FB53A8FD9FA7EA65BA56D282D23
-9B3781BE3C05EFC3CFB4ED2A28CC802F4AC8A4D0284FDACF75105D0A55A6857F
-767BEA5AD1F833B59D146774AADCC101C7C8855C6817D2AE7883B41418C3A8DC
-ED39537E4AA6A2A1AD574C4E13A9428075CA17FCDC9F1BAA753EA6EC4FDFF0A0
-7C742E4C3D07A24EED2B0FF46CDB875E79FED9F13EB898E63B9A49FBC6191DB6
-B242E36D1BD611404513FC058DA9B5BB644F48AFABD788EC0924D66FEA2A38BF
-A0010B4027C6FAD9FA0C643368557E82B9D850479CE651911C3F9607E355800F
-2FD921F5E4E4904A76145485848A17154B0A609035705D6876D2B7B7729714AE
-007A79545B39502B82DF0B391F9E89A566D99E8B2A331C9F6B5A60D401AD240D
-1AF72344DCF5A52E7640A36AA16736738A98E3C04D6B9B788DAA4B363D6BA39D
-11517B9F0362C60D7F44FB29EAF8C8C658ED66C60852AD6EE6ACBC262E2381F2
-6EBFD1E1258881E79E6014F5D526D9C676522D590CD3CBB50D457C6BDB72808F
-CF70B900B734042520F82336EEBB184457FC33E400748A617187D527A68FED76
-140E83B4650F0C6B044E201E535ABC637432CD36D108ED6E68E4CD3085B201BD
-D3D13E39228F39481654E5373543E24E689E81C2451D6FD78437C12C036AE1E8
-203FCD393B650A0EFA025074A921FFA6CE1668C761E74B1A42D1E8849404706C
-4D6B815193E47A7D6CB4B4AE469CA869B1D705AA23C9C368805DFEC8EA88FFF8
-1E6EA916369FEE9EDEBE97F7134D0A9730CCA89BEE27E262709D0EB56EA86867
-3560CCB75B1DE42DB59CB612298EBCA1B2F0F77C697AE08B9D2019BF835B3CAA
-714D5DD72179F90D53E9DF099F53BE9A326002D73FEF4358E065F43C51185F79
-AA0966D318DF5218E869689A166ECAD06746D3ADE72EDA65135E705CECF2C4DB
-04577C749A721518F65FD05573737FFBC3C1504CDD1C69B38B35866032EA1774
-011EF686959D33C37A60D173D907F28C08EF367137E146F0AC8EEB8315444263
-DD40774A0EB98FBBBE77A8270EB71514D6C2B7F5020938E02C06CC742D3F797E
-7D1BF310AB9F6124FF3FC1E2E5B15AAA48168C406D6B8F6E67CD3EB98766DEB0
-44B17FCDAFD247AF8243081010D3AE3C4C003E3A114A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csti10
-%!FontType1-1.0: csti10 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 31328 31604
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csti10) readonly def
-/FamilyName (csti10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csti10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 46 /period put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-35 -250 1125 857] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A13ACF068469E92BC111E5E809
-0E489E43C83DC29BDB053C4AF9440B668638D0EB64D2976E6F7D6472CE149020
-5249A42D7DBCA06030F48694F7CA0B38978998765D7E7BE1D365613011E79D8E
-DEB631764D47D1F9663A46A0702AE1CE700ABAC55A77DC4472405C469FCE7E7C
-36DAB4AE21FA18B149BB410DBFAC2B75994B10460A6C7E751278CCB5FA8E5B24
-5E892520BA083342A1002931BB5ABE2EFF28D930E0D7930AA5851A1AFFFFBDF6
-FF6D48342144760BA1E175D10A97EE1B90A38AF420466B14ABC5E5C82C949C95
-05665E2C47A9664D867B8B21F8972097D0CE8331D68CFA625C8889AEBF7EFD5F
-1443A9611CC142ECDB943B3C846032619AAB3A2EA3A4F8D4E016867BA36A4B3F
-5794DAC8B0B20FCAC48D701F8A66A0CC4B9B69C515F80A4DE93C7E14407AE197
-482425982208919BABDF9409FAA23D562486686557713769FDDB610C53EF1FEB
-98ED5C66B433459F187C46FFFCF9EAF4279CEE6771299B3F50B2A391427AE643
-5F4AF3D542ABB4F4894C8C4CA5FAC4246D797D939BE93652D0E7D7FD7B60DC4D
-C6E09254712DD95FD5CEB56885B95E0CF9478BD8ED8BB02566707CC3706ED88A
-A0536627AFD4D15DCA1BBAD2B2B5E16E0AC3117C0C60CC4243AE399D6573AD12
-881EFF746786E30261BC2DBE96DD8584F95AAB1A4DA0F48EF1420AD9E916172C
-6715E356C23C695DD51BE9967C8A49AC4A212733D71A0D5E2D0C6D85C5725607
-F441E959B8871102FB3927DFB2D1CBAD1DED737B6553A15CDF7D34FB7E32F6BB
-063962E928F1E7EA425CB2E597FE22DE83521F5FB6252BA3AEEEC6375BF1F8E8
-CF83439E3E8EB67B381CBBE03E7713075CE9B88F6F08974CCA3615F3A79225FB
-98D7D341AD62184152F44962DFA18FD3F7D7D2FB9DD5B2187AA4D7651F0105FF
-FB614F7BF7BFD58253C416C80431717FD3964BE33A3523CCA82EBDAD66348097
-47B760CAB3A6184E959536A730FE6CB0657A937909E1EBB8E8441B0CB40DEAAD
-95EDF48E202EF1A884004754EE06E217859097EF64CEDAD29FF8DD24B3DBAAFC
-5773018FA560022291F48ABFACF8F756D4BECA7245F95B37A2370668EB7DA739
-343123380AADC1DCEA7B5A49AD18503DFA577358BFD7AD66A2DE7DAE898315CE
-E464A80EE93D10723484FF9A156EF31A4368603D6B8BFA735F0F77093797A2C6
-206F7FA5C079C87B511F788DE52D1EA101FD5B8FB84A2E94782BCA6356A395ED
-769E5426308DEA7E69B397DEA706F9E9EBCBCB1D05D8C364C94281A9EEA64E71
-5D1C06273B79FBD6EE43BDA3E85B31208B8544D84AC03D3658A040A56105FCEF
-CA2AA8B746118344A1D93A926D421DF5B9376FB7F5422C7025D4DB0E26037249
-81C4D09F4E9931B5A2936051F9F7213D28E9D5DDC5A638B0D923FB3981E76B30
-0998B072127B47E189F5050B6533462AA4AD6DCAD8FF255828D847179012ED4A
-B503E502D371740C2E908AD4ECC6A831A3043B0217E29DBF0F87E5797C47A8ED
-66B13B91FE14A74674556FFBBC7599B02E5AA76A9295A705DEEBB649CF86FD21
-C7AE15B8784A1C9CE62BF09B19A595070994F5C7D1ED6989F64774476894E728
-CD45258A39664EE77A7BFBAEB5DCCDD6FF58AF63786AF5871BAD9B84527FEC7E
-CCB379D876402126484B741F0C568233AD9CA9246FD01BC9D0AEFA19FDF0EB89
-0BA642C6DAF52F4A12B5E5C97D1E8D7D150D16E91DB26DD2D6F9B7795546F05A
-9C55BCED0D69489184DA5EBF1B25627D5AD13AA85E29DF9C4F18C81BB562BF7A
-62C652EDDDD46698F1A5A4675F535F673E91BEDB7E9099E40E6E9E2DD24C1435
-6FC591417524C9D539490DAC5A00BD7BAFD86C664DBB7A34D32021CF5BF87894
-4A2E17A64C4F7F749B5DA2E891222E3E2526905301E47D0F6F2A7FDA2BA7D5DD
-754666413EA904DEC7522E873663AAB3BF305A3B3527FCA18031C2CC4B4DBE77
-A00C4D404E65C08BFB059244D0950A8DB4C508386F0F142897A191D1B03C6724
-95A25CBBE6B222307D95BE7A2F3EBEDBABE11833249FDAB48BE0EAB0A437CF49
-C7DC7356751770FAD9DB984BD5381781D4AE8311822A1AB3ED55CCEF3BFF4B57
-752D72E9F5B1676B22646E7FA913FD10E8AAAAB5D744464FFD06FB2A2C95BE01
-F9C59DB30A34BC9F7AEF84714F45B1A3781CD02B3795CB776739CD6BE49FE936
-6E8106A7AF90C684373F7DD88A7D552102D10E01B14813AE3E3F1F48023710B7
-F2D124ACF55014C8DACC03D56AB77687D391A69A7A67406E783FCF55AC828B71
-63E4F1CD119ABAC5FC938B0B8DD9D4E1C60867C483C077D29CB34B4E02888B85
-3BBDA01C7B6F2E05320731D8CADA91DAE369A89C7CAA128277B1BEB9A00EBC1F
-093125747363290CFD3D8D1E86ED6861B82DF2B71C37A29EACC9EFFA3439E4BC
-CFDCCD4BA4600F8BB4B90A5830AE598684840CFC5A5E3FA6F0CF8CE2D1905EFE
-163F81F441B521C6CC449F7E6DBF9E569590885DD01184FA776FC038CEAC6ECE
-18CE1E6554E9FDB967BA1A71B66A9E542684F73979A56D2718A9570A72AA3569
-8F42652F2794A6851BD33B0142612BE728C5C01D011F3D3D8D831282A2E02DDB
-2D724217BAEC4151ED2B99D5A0C7B8E9C6F4DB69ACDDB3192A6DC94767C16EA8
-2A224B08F00A2961409025F383D6CCF1F97B8152AD2D7C259D873A2DEEE4E024
-C21DDF2EF5DED14EFE94DC4BFE481995EB67F2E4ABBD74BB95EADC33A8672DC9
-67CDE20477F22D2CE160615114D7C549F037BED8438C621F745D34F73C52C626
-DD57A11951D0FDFEA9C389DD3ED6E4F1E0D57574D85D81A4D949BD4B8AB64089
-7B8596B43F41E911779E32BF55E7B0857497C1A094515CECCDFED5663820A5B0
-360E8A07CB60CA63DA0FC67DAEA24769E18547D8BDE50A205E936D635D1E8489
-153CB2C1B836322B9BE3C611D76B5C95C42DE6972F165C8E6F1D3288334BA696
-E674F3B19FA72CA0275E092D39D7034DC509D5AA40AB3645C556F2736B212C0A
-62F1E73454A3B3373A6968CE0D316A494F1F73B16CF75327EC45996F7EFD6465
-49E42F012E95A4AD1EE7A110BD398A78A2C5E395E2DDF37CD54CA94A77EB61C1
-9917A40CCD6EE62A916F4DC79A0F8DA20899EE0B1035C9B4C2B966A0C4A0F409
-77B0369E4A3B4CF38A8674AF1496FE2126CFC7E8C6DA1A36397F0554AB0276CD
-068C2DA3C42A7EE3077DC9264EABB616397BDCA53D3758885B35F5585F5C07A5
-DE6CBB7DADAB7B87DD92770226F568BB2953DFB53011C921CB16B162A80C3DC5
-BA865E5AF2B1BD218847C5F8BEE994CED23414009ED155DB3B594142836134CC
-F43A682107C6B1528706CBD124E0A8F446F278C2441374DCC36F37C16D4E3DB0
-1956807EB1FBF57677195B5777B5DBF61323C2BE3D7178C59EEB1B4615D15EC0
-758FCF44FF0A8B82A4C021AE6A71C2502D7B27AE3846C694A048D1CF0F0BE789
-BEA0BDEDB9A7A991FD239F61754068732610CF1358C9596D3FBE1A3A1DCFA1C2
-6CD2E4D3447CCDCB577228998E034FDE94A696A2C0AFE9EFAEB6D8F9EA8A2979
-D0FF87F8A2743E451197B9CF0D27505F6E963D201B346215BA945CDD86E8C66F
-16FEC3DD0D705A9EF958CE119D30DEF9D8FB4D91E229009B5F1C51AF6F19CD61
-B5611559A1B809E3289FF3A531DC8933D1D1BBE9AB6497472224D20B2E75CA41
-3927BB4C967B164D06F451B08B77E7D25DFC852D496D660CB969ECA1A52CD624
-F2C33BDB300632866303E9A561D8720B6CAF9435ED29A3DA1CA2D4D17811ED65
-296A8CCC27496DC9D58B11E5916F985E4089AD593C364BB9FF07251CCEA90A10
-68A3CAEBF82173952C53BA4AE1C60CCD6C569600A3B08AE4CF9275A6A907E2BA
-E4D090F833E41E47A28C1A5AF2D9D93EF9065D6B34D587334B7293EA22B25028
-B84227000100B8FD881E1BCB574918E4FD9C61FB7D5810A2191E62667207603E
-A7AC030301FC3452298307D00624090FDFB5ED8C04D88D9746D6DE2A2A5EC5F8
-569228BD686E8CD8660D40A17D0F49CC8803A28DBEFC63859AE2A1B477087CA8
-2BFF0B288ED86597C27A4EB540C380BC6E437DBEF233450FB80E1D486B30E32B
-5BD899A54D378E503B1F0B1B51BFC208D362A2061714F9991AF5C11C934C539D
-6441A8CCAE24FEB0DC84D4E84A9640546255FF78A9E4719CC53EA9B7468E11C6
-E6EDC21E7958B23FF38DE56A8416ED5217B1481F9629EFB47B9AF0F1B4D48950
-5834D62A7715CB7B848FA22F6B23002E1FFFCBA6B0A9B1CD091926C4D8C8CD76
-1CE506B380E48EFDAFC6E976DFA4F26C864A93C8BDC381F42BBAEF3DC235FD1A
-347E130611593E338CB5F645A15531F931174D36421792B8B075712065B7BA88
-AA548CD3BDC099A2CA24C178F2CDA2F706A187CFE9D9C98B75C4F83EA4D5AB78
-6421ED5B7C3CE6F13F67E8081A38C4AE82941A26A44FA3B7CC43BCC2EF7C44FE
-09148B3CA8EDBF50AA9F13404051E3DF923FA74953A2889C6FA94397F00829AA
-6DBFEFDE4AC6B41E77699555D80F62A2FBC5E9667A255F1A80951C78D0463EC8
-C8ED3372EADAF407559F031F9FA54D00EE86833F20D6B92AB054F3BD1711A8E5
-F2865E30DB320FF34F343FF079B9DC1BF2087B168548D9D74E5462CFF5CC865C
-4ABDCE765AE32EF11C12EE815BCA8AAB0ADA7F8321A4D512BC8FACE53FA5DC61
-B02EF24FFAFEA7F0EAFA57CE839371DA016FCA90B708ED641B5560BC88BB5F09
-59D7E25B155AEC3D78A26C332D36B70B4676F3695AD0BC6A505C908AA703CDFD
-C576C9B3E403F89AE4A2923FABC21F337CA91011E4C15064C92937E4FE0855E9
-47D14F88FDEF2DB4E176DDC22402C63EAE882CCD929132529DBB43810E0C5C13
-B64828A9BE2E4B7970066C592ECCE5D5AD7F26B18E05D926A0754471B49315AF
-641DCC33181395A1F7C3AFC1B0A2423A3458904B239F9DF3B219D919E3264567
-E98C3A05443BBEBEFA4CEC5BD3051A8C824A59EC51D908F34D07DEBAADF03F96
-5002DA513DC29DC2C0E299C8FD1E31FFC4F4951884DD1E387F65A28415B94507
-6F5074D9F7C11EA02B203CF3AB9FE13C99B80E9014F9F16511773B2B0CDDE337
-69B1A1F4F3BA6188FD560D8A58D7B91F0C8071839E4B8ED466874F7E5155E2EF
-2C6BBCF793DCFC02F9438A577DE76881DC450A4A1E85304E4B47AE6BADF1CC0C
-1D670E19A74F251BEEC734100F8E54E90CDEB140DAB7CE12A983EAF01AC382FB
-B9E566A19C818C19563CDE05BE6FBDDCD0EEFBCDE6FE33F457524827B4D49106
-21E96604F74281044684E6912E693218DAB3D3EE0A30F0709C4DAD3973823CD2
-3FD3428B5C09FD450812A579F87F8611D1D0DC308769D7B5001C96F2342D007A
-2AD9E469439055F7C2CE8B3C0212E5004D95B2038010C896BDC082AD919980A7
-1D8046CAB6A946130E200DA6A0FC4C36D0CA97F81F50C15E2C32E64BFB0CD738
-547DA26ED088CD26260B3A94BE9603033BAD08058E4BC56690DF90D5832FAEB5
-9C097460A33E3937E5B9CF5EB3C73AA52D56A505613816C2F704F0C7EAB91D42
-D4F8BA4A50161A9882AAF71CFD49091E255960BF77B444B6A074727F0A4D3678
-C35FEC92F53EDB4159603BBBFCA4212F307FC5D9D2553450E5876C36A1E39F4D
-DF0F94A4E829F4FCE02168AD02CF7C20FFFB570460B0EE2E9667C41641D040FA
-554D567019BD0BD93E9758B8B851DA4BD6B8C7901FBE14C1ED8763C0983285A6
-A2EA93E6583726AFBDBB137250B5C454F3C4033DDE41BCEE59E6B094343B45B3
-BAFE1C6C60C75FCC12F5F684DFC140B423A65D4811E7992CCC18165780775637
-735D2A680E7155F651962E3F8B91FFD24D8EAA7A3785490231B85A2DE3CB42F8
-0FF20191C487781D4BBEC33B392B5EB621C29453E5A6871D59430B8E108F028E
-3527ECD8EEAB5A09B1EE5DAE318A85D774623642904EDFD28DBAA84532397FE8
-8276F93262C79191A0021A3E558965F97518A2CE3BB5F382A5812EB8DB836612
-BE692DF48F19BBF8C750B981C98CBE21C91C791B44BD74EAB09C688D39253317
-BFC40A5F19DE0EFEE938FAB0208742DF9C0D9B6D43A158ED73AB2404E5D3984B
-4B3F4B4669920FC62403304F28B07456184080125A5F2AB416200FCFBAFA9D58
-9E98E71B813CFBE32466F9F88E79086D1A3A7FBEB4925C8D8559D8D3CFABC307
-39C03F2D5E6D317641CBC82424BD332D9CF9D7A5F157771BEBBD9EC164010FFC
-06C96E5628EF58B049D3EAC2709F4E0303BF57DF65E084FD277D74EBD4CED34F
-AD216E57297DC8D3753787B4A8C956C3FDFE40C60CB5994424DA48E498851F65
-2AFF7CB32F4D0067680F6890892A0829E2AAAD3BD0C4342AC52D5C5A4A4D4F0E
-7EFCF1A109CC043B206943A5C5744773536533161CE0D3A1658499C8C95076C6
-9EE31B24EED4173803A901D9FF7C3B415C44205451F9F5720E094C5253CFA24B
-6B7049963F8C18F4A8DC4956F6F34D9DB1318FCBB6D322079ECC7DBCA80723E9
-CCCC1328024E256121F20E6418DA4E815EF774B1F3CE398082960188277F1E00
-F18FE464E416718CB8957E575BC370AC23941D7D6FD308F0F40146FE7FCF0F1D
-627E5413B9CAC9D828656CC135B30BC2CF9773FC1A5C5DB9B2EBC5F6FDA37371
-959B381CA883DF7C1329620D7B7168809F3FB2B451DDB559C5B47A5EE70E5128
-88CC2FDB37CB23DD70C7CFA3985E5FEE49D10C24F0C3E54A666E8F16
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csbx10
-%!FontType1-1.0: csbx10 1.1/12-Nov-94
-% CSfonts -- pfb ver. Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25027 25304
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csbx10) readonly def
-/FamilyName (csbx10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 444 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 686 def
-end readonly def
-/FontName /csbx10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 66 /B put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 90 /Z put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 185 /scaron put
-dup 190 /zcaron put
-dup 225 /aacute put
-dup 232 /ccaron put
-dup 233 /eacute put
-dup 236 /ecaron put
-dup 237 /iacute put
-dup 248 /rcaron put
-dup 249 /uring put
-dup 253 /yacute put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-60 -250 1164 908] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E729C1F3C653E51B9F09F139
-E332F81467DCD46C6B80A4E88E1FB2B35C9134E8C9E669DEEFA533F7F13511CF
-F16ED856C594BE960395D34E6F1FB840870E1390BD51DF0CB99AE59E98B369A9
-308EBD4D62411D723A06592B3F044EE52173E7B573E2FBC21F32D00ADCFD4905
-7907BAC782355B39ADF860CF2381EC0CC3136060C15C7F794F54FDF9445AE615
-FA03D051B337AB511F64C838302CBEB69E431B2B66B4CF0E61EB5ACCC8F55213
-E44FC7CB51E3ACC12F45BBEDC00C9A63A43839BDAD1C0186974C7539367FB600
-B9D9DE3DFCE060C626C826CCC9C6AF9B765C6D6487D5945B01FB21FD234A6D46
-FB48C4A049CA13C82BF001906C71B5E4C7D8317DEC3B2F4A0B8F28A9CA07F8CD
-FAEB3ED1ACDD5162F7D3491964E990EF808D40307E9FBDC0AB3B5BCAD56C895C
-C6666B4096AFADBC5B931D07B418009ED6BF9886982EF5689E1C67D980F16913
-28DCD11AF89476D84997CBC50E8E7942C3B7AB5C03A7DF37E3120834DAAF7EB6
-E1A625F38D0EFF2CE86A1AC4ACA3A3556D98D515AD265D35FCD8750E1F4E73E3
-A74900BDC6A9FA84C7A4A36214935A985CADB31B33706C0DDE055D4BBF888C0B
-38320A34A47CC395F479E84CBFB77BA6F9EB33F344B34D19ECD3466836255387
-772A0F959C9872EEBC9D69943B4CB8051FDB325D6277BBE0490A911DAE97C388
-6F9ABE08037B55845EAB04B303B6B76B4C3CABCA519101147E180A8D3CF88F01
-341CF48CAC41552A13A28513B88BB7322E9AEBAB1A3E14CC90D74A9E3AA0DF8B
-F3A5E867BD5324ACA963C4ABDEC64E0D04E7A4ABAD8BA0D11BE71BC655498838
-A442E796E115A5191B3204A7363FFDBF3675992925EBDD62DB735081E2882646
-E5BA327D733475DBE42C23E2C54CED537D6A86CE4F06810D4928B0D1C42A1AE2
-DE408273DDEB2CEB0C3E5CB9E9F04DFE24FDA4EDF37857AF78EC3FDA2FED6A9E
-DA127541626E0699B04F2B04E5FCE1121B95E2B604C3F2C490A464673A75469E
-D97178EE2F8C75AD01F9D96607C8D9F5A6EADBA98AC324E334AA64C9F820AD9B
-FE9B3D0ABF98888B24E4DFF463E9D085E56461FA3DADA8047CB1E108BA2572D8
-0E5884BB975578C52E49332CDF7EEBC69353B0D790874BCFF03C3A8908AEA636
-7B5053CB569DDA3F7253DEC9202FCE36093F1B2CA5530AC79C2AE5F3A6CEA285
-BB97A7F157392D8BD8D06AC01CE8C7FF0357BE63257273B24485A8C97999C7DD
-C683B50F16A39810ACA8C41E74E8B0EF20715A064CBC02FE63B7B6BA373DB1AE
-AA11486531B923883F76C6FBC44FC8A135610C3E756C7301F5B8127F621C92AA
-4FF0E94BDBA3E5969746AFC5671DF5AB2CFB5B30B3565C6A63D4E868B853ED1C
-C128A1DD4344F80D58683270038F1B785B9D7FBE4B706BED4FF46A2F338F2450
-19A8CC9B80214D4256E134CC37479D450969D91B8DF90A65034F1AA5CD4EB61A
-11D8A4E6025A33EEE51FD15D4F5366070A9E70E943F2E13B7AF103626D44FB9F
-A88E0E3D5AF2D2D7918929DA6C060782EDF32A3DFA5F439C61722F296D448E4F
-159D77AC6BF766B0F02A6373CD7DC284C3AE2B05CE9BFE01DD306776B6CDF2D2
-1EB967A0E6BD073A7ED2CD9C94B3D5F6EA847FB2E043D0C336F59892DD5D21D7
-6EA6063DF025BE7A035BDA670239FE756B5512B1C38E8895F44BD3CED19FA356
-502D30E5C6573453576EAA7A5990529FA4759D0AB0A5E11A29DBCC318D43D2DA
-A42E23530C5217CEF689A9F5F9BEF94BB571A211373625792DF8C8375A052DBF
-0A9A57849E519A274A4372E6F3FE520B4EA2CBF621866E2972D855E8DCD25203
-B77AF58B69FD812514445AA4108C877023C8ACF33FA82780699B0514C30C0E6A
-DFA4708BE39326F1013F1A641BB0C9DCDB9A4D08B6B5E49C4AE197248165E724
-2361E07FFFE848F85B88A3271FDE21A2463A60577FF3246937D7E0DD497FADA3
-14CBFCFFC983AFA0E14994B64105616178A943929DF377A6CA5BCCF476CECC5D
-EDCF184920651C8E9E3CDEBF074AA3608E393E5F07182A364ECF2F24FDAECB18
-79A4F935F3641519A4747BC74C4BC83C279A999A1166FB861B20380DB5248F45
-C5729DA630B692ACDC4701C583A2B7830A0532060167C491B438B6DA41E65670
-695BC8AE93496D50BB5AC7613F157B6DF5505C1366417922E9FFDE8CC0E84890
-A96D2A7AF5D831D100FBB8CFEC4B5DFEAEDA576C7DE0EB70C83FFFAB2EB09103
-E16C4E359B35E517BFA0A7E4EFC1FFE3248871F1318607C07F9264FCB62C2639
-681C070A92603E4363791289662C5D2EA7EA42A7D2B47751D3E580AC123700C1
-CFAD096C777B76D00CBFFCFA1B5561DBC1112DEEAC62625E5406923D556AEB3C
-2DBE1210815443586CB189AF53455B6C45561987B11E753957EE09E6510EAE36
-330165FA88D0A06554DA29BF5954D34B4AFEC80A0A57A363C2BDFD9C3E1DCE51
-27416F662F75756709561B8B22E68508639D53D6660BB722F391063BF632ED64
-5C9D392B7766AAF33DBE53354E52C8EA011F5AB5D679977C036EE89EE6F5346A
-1E635915EC8F22DE60EE9631BB008FE896F52386E5BCD6E726D9C5350620D332
-B75019714D198D77E4C35293803C4F44BC7ECD4A7E9452A74E2208802166DCE5
-4EB8C9516DFB830474735D9C404FC06C58D16EFC6D7DD147F92609EEA71F7F36
-21AC12730A38F61C14247E5437A38A97A438160AEA11B443D7CC13FAC5F10A7C
-708B5BC4CC0E42E545234CCB4C14EEB5FC6C3F98A14D2101E5F41B602CF741F2
-157951D8D28957B3201D434EC5FC261FCAF9B88D022A8E399F5BC6F8E5B78840
-D31AEF2D6599EFEFFC25EEAAB5AE600D087933755D79CD808E3CB1A79D73BE2D
-2D7DB651E88E8B58E70292EB0373617BF9AA83F94770F30699D99E43F2E8A51C
-E33F5BF34DAC690D2CBE68EFC2E524AA0FFEF6F903850E9B74B93B7519EA26B9
-98959975EEC5AF6F5F6326E5AE978AE05F12AC9E1056D32229864A132BA60E15
-D8C0018214CA7DDE7B0660DE4F479AB86880C8248B86AE750E08EAC7819C16F2
-43F1B54C501B5E5B4DEA537B68A14EB16B25F4BE90C3C03ED86AA19965464965
-AAEA20F7BBA14D2434B66A5891D5FA4B730E74BF4F5EAA042A9D629FA2EA3F16
-361EFC551CEAEB78E87E22BECF1F3A270119282BB261328D6C5588E7131D557B
-E1453EE2CB17FC207EF9373E5634FAED9E776697EAF61458C985BAAF17B0E7DA
-11F2F777B02783EA36484866F6DACC31463FE15EF2690EB3D13FB6B8E47B35D5
-99F3D181DB2DE0E42620488979EB371A09E658BDEB10FB4D0BD70FF805EC656D
-12D2F95CDBF4F5351D3EA13D1BE5B8C60D9278E6DC524FD5A822963069182B38
-669CA2D1266017C0B0CD435E9FD659A3EAACDF742A1BBB7001D718AB0221AB99
-A520128AABA48CEB6C44A98284EDC5B8BE726C2B3DA2CA90FADBE00EB622B205
-314DC24D59BB46BAB5913FBAD2A2A134851EA28BF97E765F3E2B710EB3288B47
-5366CE181DBB70EC23CD272F32DF1621F27A9AF024EF5E63B4BA7427353D214F
-9705C8A71941EE434B42C1D3574114BD11C17AD10729652FE796B739876D0A4F
-661008B05519037BE360C8663AF185B915BF2B32E634BC2E5EFC405D3DF5D1EE
-40B678C4C18E3E2AABC71FB0EBA0B8B45106CD181940B8C794C44FE37EC39DD2
-6A3F03B68D041B2458F2922A1EACDD40948EC71EFED3BD2B36FDEB58C0868E03
-96B3BD098A43DEA97A7171B6EE08BFE337381897D4C590324B63CA8D7E2B33FF
-EE483FBA6F691B65C1EF8B27A395637B25F3DA7D6E04F90BA7022A059B1C43A3
-ADA01703A52C36D7E8AFEB214FDA8645C1CFF95388DC6F829983241E66561765
-49A6252382663A0B36EB7D13A64C1A59AB09EBFD21D9455F58E13DF393F9F0A0
-0412AD04AAC760C019B440DC5DEDCB1C0D1BBB3CE5348A49F13171987BF913AA
-BD1BFA366E1AF56424CAFAC01953C7CD72F72508F5696FFF96EE52FCAFB86C9B
-2ED27C15C875CE12A2BA942C0A77F9ACB0EDE84BE0CD3777BB446DF11740E79F
-F2F09AC719832E8E36A72138FC2789CC8719DB6E25F4F49267B31D943A476BCF
-D861D6281F2FDA76A2BE327594586A3253F58FED2EBDC72C5DC5747BB513D3B5
-2F719CF1331C226D72EDC1EA537A8C6834EAE287706B4EFF26F5D2F5DEA9B47C
-F232ABC4E0A5EEB4A02F1D4D9AEF898FE48862F6FA20AF0ACF3D566F12524672
-C0F8CD2EB7D71C6D26692E43C510D4BC3197CC2421618E26870459577B081A8E
-D6BE426E16851382B4251749347709528EC9644A1411F0555EDAF863E0A3CC2E
-E9D725F42217B3E34483CB3614687D728D14171C2CEF551AE57D3083936D674B
-989BB7A4B346A2F75B8C2C144F01DFC370E5C9C54172FBD3E29B4F197D76114E
-4766089CAF39D9953D2FE44F5EAACB76321BBC0E82BA16DD5A7EB5EF630276A0
-588567B8630AED13E7F51E33BE02817597DFC1DA2D67DF90AF7BAC47B7485817
-63703971EB2A58CD36473409541FCB28DC36104334E5CB5615559680AB04AD71
-E71165879A28FBA0FB9AF26A28182B86F640F929E4AD98DB6E3053A9316DACC9
-4A09EB1E5008CC5407D8A6CF56E6D8652BBB6FE57BC9AF474DB3630313B4D27F
-E644C99EA068A36A5C6D618446B54C1D70C6C2ED54EA2E0F09726DFC19A7D55C
-EB10E188ADD427721C67262FCF6E8F89149669F16859B732743F66DFCA5F64E0
-6FDAFDDFD4286664AEB94753F8317F2CCEAB40108BE0EF2B3C3199AA91E5D165
-7C48E2A3B4226053ED2B91965E8937E2D5D0CED3BB4933F48E87A7CE8FC82147
-EFBE3B738BA79E9AB7A539FB9335A8174D491CA950E5319E94A3DFB0BF3B3006
-8681C73674A65A17A45A4B81ECB8B7AFA81891488632567FED16101F53E05A68
-B05AF6D08E308B543D1C92B13606CE97F20B53AEB73F7F1577059436560DAEF4
-E463E20C9864E4311E81CE8DB125459F24F4C0D347FBF15052228E35F07C51B6
-2B0440F1904BE2EA9AEDE6562D660C06445B14B180CD81B689C3B71DD90C01A5
-D3DA8C41C8DBB3869B747B137B58CF08B0D45C04D033C5909F45B96F5587DC9A
-45C9A29B76FB407BF550A418600A106D27011343D61B733C0C160FB5A1390EB4
-D7D4139958EC2979253F49F3C14E1702B511281B447CEA9D51847E072CEDC3E1
-6D48771A0942CB17ACF5A3D681759853E084229695FECC29D669829950C987C3
-E6B73E50C0399641E512C51A033B3003EF5952408FCA0D0D69FA8A52C9A5808C
-DEC7290036DCDBA5746DDF546A13339D69BA7656B62A65237C874799587FC6B6
-11BD51A4852FDCA1F232573EFB834AB91971CC231402ACEF2FC16008D67EC518
-ECF4136E9471572A0451066D852B3A4A648BC5E42B948B92AB3DF4772813D6F2
-FC94B22C12B6571340203C7878EC4F67D64F9A22AEE080D5AC3858920ED2FB8E
-17B27C3DB20445253C08B9023227B6F4117C56E2B757D65027416271A7505863
-4F1821F7024E368755C8FB662EBA78AB8977035291D1B9018FF5727D008A9D98
-747D5F4912DC185C56BF2E418E39CBDBD64849228D311C1F165D5E04E29B29BD
-333E7D20D3E58B82E1DB60799E497FA0CD0B3CC034667A4B6B33EF65225E0DA3
-E604B360221C924459DE7F0E0B8F0DDF90E542F59F2D9AED59F2A206D19B069F
-6CE15924E7A9C034C919BB175010278A0B556ECCA6BC90AED8B5C623C698F18F
-8FC88B4E0D9BF57DD580D6A032DB06175221E89F6E52180E288B2927F3FAD64F
-96EFD0C02C2259CA773ADF306DC09EFD9C81C75E40CAA6F371B3D433BB996635
-0EB63B5DF89067AE5920F7071435A0254F904AAC4E4641317C6791B442DB49D2
-BED80512FDA8B6E1B2395A76956E514E1A6E4AAF1FFE747B7C9674A588F11941
-A021E246E9D9182D89569CC6E3A7F04DFAEE0E405C8A574AB25E7AF9575A7EB3
-1B9E5AF20E832A63BEE05057E762D273A70BEC68D59672AE8531F34F17CF89DF
-F9CE3E7EB609B4E7567114E6A208D6C227C3A143DCD0802946C7FCBC22C528EA
-671A6B9BEDF1379784FDD47E54702248ED596F4D68D2CCAF8BAEC328C42280B3
-44B9A7F59113C7FC6D0BF5E9BC5DB9D7CD520A003369C1ADE301E47C39545D84
-AB82B1E552A84B4B946BAC0DE1A61D8BE9E3D43B31048231A06A71B6D4FA4CEF
-DBCA579964ABF39CC773B79D1F2BDBFC228C300BF4DC276F2382BC70EC6156EA
-297AAFFF0A675996A5B3BF113479458D09B3E7FB2723F0651457CB0DDEF0E0EC
-91EEF36A9C67DA62D99C1825ECE01D9A79DE0CF0576965E8CAF5F5323C9E5752
-E372A96FE0167BBFFC5BA420DAC8EBE321F9BCB792CC4D489A847FED1DA6E352
-E9C8DC1B0DBF7EC9F2E4E20EE9F0B31A278D13D7B54363A338AF0CCEBC403CB0
-CDA5E97780EDA37AC7189450D6EE17D420260CFFBD1E278D42294249A4813BAE
-E53C34C1B0476580C654A576952DE192236DDC7C2644C2C7C25D0B48D036FDBF
-A1D8A2BBBF5EA90BE31915BD82438799CE61173BDD849CA48B6406056B16EACC
-14156CB02ED87EC7E73D20D08AAAE0A54386E01ED585494B93BD37F32D980647
-9244DE8BC88C3DC3A6CBF59241058D829E5A23E29DD65AC3F89BA52BB5368DD1
-A1960284ADE6F6E941FD4FFFC5C7223575C2CE4629A19E7692E2EAA221158D07
-CA0A09B8F07E0643AEBCD24FB393813D6468D083365B66FDD49D5C734DF25079
-1F4115C8E027ECB5A2258753F413EB75678FEA2AC4EB7BC29EB810DE20190428
-D573DC7982B71B581E547DF6DC1358B0AEAAB71C907711B6A3C3267E2627E2DD
-E54363CD26E5FE6967AA7D60F0DB365F528746467ACB05E722609327C70E1D82
-2436887791E791BD375789D0F36B6836A688B67A1903D21D7B76C86582EEC06F
-9E2D445C1001FF8DF3F5A311C60DF6CD68328D06F4D5EA38AE3703FF5D200517
-A8973ED5A6A9CDD2EDD450B0E8695CB6D9376F23EEF3887B2C5CD9D0A63C380E
-323CC11CEA634555BF2CB4B353703DE068F108F89BCB01C000C6133575DB069E
-D8AEB587826D18C6F6D1D0EE935473EB65382FE0DD7458DEDD469FF54DFD2949
-905A681DFB3A2B5623E56114FC81138661BF29BCF4F2231417B0C64D3FBD95F7
-6D462F62C3BED55C7E416E35570CFCB675BA16DA3858AA2FA2AADF8B5D91DE69
-293B7C458C37B6DAAB999815F2CF7175D11A2814C8AA8942EB02A6F60F708C47
-A0F57F52395DD9F0AAB35D88B56497653B292D8BB7FD87EA886A3E35F76D243E
-B276AD03880B0E7D8CEC4522F1F05DB291CBE146B6B2F2FEAA51FE0BAE952711
-296F9B83CE0CBC2993C89BC6D6C763EDEF14F880AD52764A3C6B9BEFB5F453E7
-945A65E5A97395E7228E8AFBBD1D12D9BA66E32812924FF3C81A9C7DAB13CA9E
-A96B7146C862E70F507D422723B47317C04DD71FFCE45BBFEDA477F4A26583BB
-949CDD7E39523752C2326AAD718F3832C6ED2EA0AC3C786D9047C2B50AFC3C6B
-FD5031B9DE4C140C56558BE42C5C086D6E997FE5CE809E221E247AA6CF2BCEDB
-211A68D7F0CDA478E16930D6D7705544C93A419DD72D039850D38E57B0AEFC0E
-91EC04F289695D85731FADF9E0D9A5796759EDC259257496F0875CE4C4CCDEBD
-C392421370FFDE506DC3013C52273B190FF2EDC4562FB9523F63863A0700E5AD
-CA6E830213395D3835FBEE846B84F8147062044470C868D88BBA6289EEE0CBB5
-F46FBD8E430C753A39A7740231E41E4CFAB7C03D5C15110A225A66BCFB52C5AB
-EB0A9243720A133D8C9C49C7370DE49A5D8A0E383B6897F56AE9DF56F632C030
-AC4DCDBDBE53BA1AD4BDF2E34088F936A3C09F82DA8D76F1977B21FE41ABCBB5
-8D98F52AD79E2642991D479A61C38259D871FC51329F37D5FD2C1AEF473F82A3
-BCC2CF9644C46DF5FCFABFE252667F16303964B000ED12DDFFA57C6D9F595436
-D5B252D52F6717681245D83EC7793E49C2EA1EA67F7DE72A49FAE427A1A44DD4
-99741E4D886A31055FE531A988CD11DDBB2497BD9BD6D5D6EAC80F95D8C2B0F0
-485E21E9A5C0660124D8A334FAD0FBAFCA076853CF9A1F81F72EAB063AE4D893
-36C117C79799B5D44DA24EFDE62D526160B5A08CA95148E0A882EBD5CA9DCE45
-612BDDA614AC1287DBA611BFB1020E639982DD860B906A474ECBE08E90E67FA2
-0A2528750E137A35E4CF2D696E6B7A876A67BC9C0B7AA2946FDB6B4CE5472FC9
-F59141921D019C7F2C884C124C6B1FBE37E76E67B40500AF5F0FDE42F4115EA8
-345E2222FB2924975EFFF88A33DB8119AC678BDB753E87C4E04593036A528408
-B9EBB1A586B2C07AD327A25CE28D19F4B533E4720DF9B9EC458C69CBBD744D44
-027A731C0996F0C5D3136ECA5AA0C2EBF72AB03C6020336812B454A4BB91EC79
-81281AE30D621E2CE3EC380F2CC30ACF4E609FE863C69E21A4274F6DF6730871
-A715CEC5E269BEA6E8CCDD8EA81A875FF973ECD453E56092EEC96A2C127A14E1
-039F737BB20AE5EE268EFA4D8111378CA129ACCF138A318BE3DD01BDE3315092
-22087B96A3D326EB508C4EDA753F9674664A0275F717A5527E723771102D7F60
-F93C67F4F8977588900EDF92E71611D03B2683429ADE1E2BD877395F07E4F407
-80BC261CA93BDF80DBE5B60EC65826E11FEBBFBA9027C34F9783D6077CB56B5B
-FF8C92F9B0D1E049F6D089C6A33082775DAEA7B686AB292A50F13A521B2AC371
-75BAF14AF35FCB8030196A0D180BA8E7F3A7F13F8F5C92DEF7A53D9A0001C950
-5CDBB58EC54EB3C0FF8D979435F502A5E671CBD2E53F1D3946555CCC21044304
-789531F150B3602C831B21A00DFEF402FE31DF6E7747AE0E0F4175E687C8D12B
-815D58FA040E0526A58218C3AB1B7F272C169DDD2593D5E29EEF610DD0FC4A96
-BB326914793B1FCFAD7B223FFFD507CA18349265A0B99AF14DC8EDE2CA78DE3B
-915FBCD285F7167C04BC847D50F7B62EFECBC6A82C24E3B12EF91226C569B91F
-B15CC4A67B07B20567B1B7BBABEC1171821D635C3B77BF55340FD57FE492BD7A
-3882084798738CE809F0EB1F4F478972EC709FE01776A21BFF32F53CD0FAE8D8
-35440799D59DA1AAC64543938C57DB9F30AED220B567BF6846080EC0CE30C98E
-3B23BE491F04FD8F2D6CE97ED68DD6845642532163D370C624789C82A66D4E5B
-7D7D21AE3A4E71B06C4B6D2E9DBCE73853737515E1FE0B145F031D0D0D28C206
-6762B50F2295E9DEDD6FF5731AF087F619BA5272E621E570340264F61E95E714
-D799E5A30F199765BEAC8A6274786B2CF1720619CE8AF840CC588E8A6C34A3A2
-D8CE04BA80060FC784DF4DE601E6C0BCBA6FFD8339A561A411DEF52F46F8B13F
-23287E9273B3E6E1FC09F5AF87DFD0EB6E16698FD789ACD67AC7C743ADE2B954
-D45F15767A3734B608AEAE89890ED8D3EDB1804BDC6B4265486772F21DAE46A6
-26235F32BEB24EE6E7EE21555C7F4B1927679C143FCBC97A79C1C135E1EEDFF8
-DEB69AC6B8D44AA54FC34E54715A83E85210BA449FE72D6B4B541ED2E1DDA173
-881D1EBEA5F8F4E81A810EDDA8613D72DC14FF0502431F8E985D1F751B5AFEA2
-AE60B3F54BCB02AC8D6E931242A8F567151070A637A815DD19A60F80F5EA4F57
-37BB3493832245D8830115F7CA5A977B0502B3FF41776FF6482E816675EF3085
-6FFDD68F320F259A8462E89AF42719182E54522F0B16C3A92B3110A9A34FF5B3
-19F62A0A22C5ADC65B22F33B81E201E732E8436EF210ED49F896A3BD3ED5DECD
-D85BA667D66DA584835601CD60443A719E699E43DA1A1CDF776C96D6623E3637
-75405B921910E66C42E7A3C34AD6ADD48CBB1435EFE7AA69E4833AF35ABA8227
-AD653446F214F03E617FBAD8C7EC94962F03FE2EC1FD25FCA961A014671BF36F
-86804F088E635DC7ECDF3DD75FB9CBCF6C478197464E62EC4AD82CD2AC74950C
-9E5B14952EA26FD6DC4011B3E280E59DCFC30FFEC404AD45B9D5693B8A96FE14
-969F4D4571F554204F3D7C8622069A1FD32E189DD7D10775A661709A2DF34504
-7088E6950B952CE65BDEA414C7677A882360AC34B5626E447D9EE382710D0804
-1B23E24B06E948DEDE278A682D3871DE67E7E47EFCD622FB87951C33D944F4C7
-43AB11EFDE9100B85871453A1F0292FE6CCA9C3526D6EF4E9F21E1D9B56752CE
-228420E6FE8B69D9B3AD4B4BC7B2C1E0ED0FDEBCFCBAFC066F6EFC1A1876A5C0
-70C6BD14FBCB71902A33F422679FA8248A9B6BC14A82938D7297BE24EAA0FE40
-9D1DBFA4F1D13E6222E425C71428FCB5AE090E93689836458DC9E44A72013A01
-07FCFEBF3373376E6B9F621BDE3A59227E95C25BB8AF7EE53D4FB60CB0C63A8D
-727060BC41E8C01FE2F900C92E64057709D79E24EE17E3ABB8DF1477C8DAD061
-95D9943FE28FACE7DC345CC8B58F9B7A65F1792DF78EAD8059FD10FD791419C3
-6677B4AA18DE281CEC9D54EDB2243650725889FAFE320F4F43D7CE8A031639B2
-528E8951D8D3E80618B716752E4A0C3995191CEC9ACE4773550409BBD0859B0F
-0D9845EA39E9BB37CB4E6642F2F4F9CABE1E63907C84C86D0EBC02923ED145F1
-B6829A6978A4E708CA08F5BF1EAF3B6FA997431ED41265A639D5D7BF27AF4744
-725F4B6CBE208061C0932B217D1CFECBEA4D1607F6C7ED16931C8EFBF7D9C511
-EF2AAF2604BC699BC050A5C71FC804E186A780925E9D53B5C989E5E471802CBC
-8CDA4DF3A85146CBF2E039727F7A9D34674434AFD3E0B4E0A1A062BA0FE2D139
-0EE91BCF7552A7653959E6B687AA05D2556D45B48CD505BFF0EBA8A8852FF0FC
-6B1A7F934D64DAC3806EE30C833B0D22C3D0891810245AF91A0FDB32D5420CDF
-FE5A8931D538C2B670D2A2AF28C0E8F1DBDB5524C716AA6FDAC081206208F1C4
-02973A527AF85D79A4DF04C458600323C070E4495069F70AA3585F6C1AE4F132
-44D02EC9C36E2446446DD8C937C73A9E50679DBA58AA9F91D00E04B1C6006481
-2C551AF05D15EAD402DB663827A5F99FD382AD2EB3910F30D35441B91444A978
-14BAA1C3F73F12EAD9BD29AAD745415DC5213F5BC3DDAB5988AB591D2470C4E0
-D060AF6ED52A5E9EA9BB221711F55B12DAE843F6C7E635D02092B9F784591F6C
-698DCEDA4748020AAB6F7B6E51C155E55FF097F656A28829E6CDBFA86ECD1571
-0103E3773D427D59513F4CC9427EBE984F3F222009B760FF5FAB8C10CB8BC347
-8A85936E5992A7432D7D3BF2192E641A469742F3B8EB4951DAE90F8A43316743
-88FE2F78278ABCBE019C8172EE1335E9B75C77547AEDDCCCD531B13A6AA0ACCF
-65B0D83C057C6C0E4852B3136C15F1E3761CEB75EF9CF4FA0A3C1C26CC77DCE1
-7447F056E738637FF95D540646AC0105B277981FBAD69DDE6816C75D748067FE
-E89626DB8F9AA8787A4A72EDC6D8A23145A6ECA82E51F054C7F786693BBFB40B
-8B8DE40FAD2BD0441C9D5E553198A1109DF8019293D8CFB907A7B12DDBB975A0
-081AED60CD5CA84CD8819609ADD32FC8A06A0EB573265A81D87F2952BAF03057
-B448AC2934E68C7F51AC1A8D96C785FBACBC130A8F8C9C3F9776EEC5315CADD5
-5E99D3B59B6FD67FF2D61C83C68E7888D94CAE71802C58E6090E97E1B08CB153
-F23D0B33BABC7D755999169E591F1B0558F3CD720581EE3163C8464BF1B46FBF
-2F72CA9B067F8C22BF456053DA1093AFF66EDE27E513E59A92928B044B2C9970
-5E8E549612ACC99E7505196373C8033849D0E044A8C51A3FCAD321AB0D2B8996
-9DB438876AECF86D46F08FC6A18F47AC993C7CC6AF6A5655C5545DECE2E92976
-FDE4B603CE9DC1FC6D88471BE1E3463C19AA4870917B4B96B9AAC2F1E03EA5F9
-42D0819D2703AFF2DC41194472B76DB9643C321266A9B98268EB8FF4157475A3
-D7B487E088329C37F5AEA980AF67AE5589194A7F27CA9994D92C918E8241EFF6
-181605D1E56195FCFB239546E1091B0F43C13E2A219667B36808FFAFC73F60A9
-4113C4AA2D2AE1406783CB116E890A32C19AEE75AB6F04738E4B72A4C7694ABB
-7C3EBFA86C9C62FBCF62FC69884321240B79FB23F03995CCA44A02E3B75A9F09
-EE8D7EFAEDDF8F974ED8F346FAE665EA3DBE3994829BA21E97F4C88AC1FABF64
-2D9155ABCEB5CCBC4F7DDCCA6F595C3D8BF2D92365C00DD4A74538E576B28310
-BE3E0FD245BC6CC5F6FEC613A0D31D052DCA74613541CEBDDBA7660D92256F3B
-87F125C591CB8468B6C9024060A6C2D00C08DCF41E24EAC135048DF48F15776D
-035A94A2519DCFD4ED3DFCF1B9458044A6015FA88F998562FDCCA222AF11254A
-AD2916EEE422DF55A270EC80B065B00EA8C2B947F0B7D9D38F17F1542A5DEE88
-20DD3503DD92FBED52D934122082A85B06538AEAE1C90F2D878FD7DD4B5B41B6
-C86F2EF1D26E8CABB0991D2BAD1162CC9B3FB89C8E819F1ADCEEF88E2F2EE7AA
-7E1E6222FAFE67E89749551F5939C523BEFF6EC95E84F753F3B691BA6153989C
-2F2731B155FB3E059310DB971AAC320F5F74C5FFEA54DFB7F6D0477F2F8CFEE0
-CD5BC6DFBBBDF5826ADA601A80E0F3EE7AD7D9A4334247F84C06BBCECDC5F46A
-79974181149F8F4ADCF2096894459BAF00981116B9539547538CB1EE69E17155
-008C3D72860E7C5262FEA1C19FC1CCAC5E29E4DD0A73A3438576D785EC55AE30
-3F17147B177AAAB6711617CD4D6DEC903B54A8AC3A25F6A415BE464B0FA32EBA
-07627A645A82031CED0A65C502EB8F2140CA3E77839639488FA51B7C9199F4B6
-69B2EE97201B28B4C81B5EC47E512A3F5C6465D63AC7D1599BDE80A9DD8499F0
-4A3AEEC8F1FBFB9E1791FB042F5812B0F3948F7A3623B717AB6F9E9B4DE7B4AA
-3FA92DEB94C25E9E90720FCF6EF9F641D0CF6FEC4B4CCD87F7D769617E1C74D4
-195F50AA8BFD1899AB39A87049A7D4BAAF4C354FAF5101BB0411E13BC3AA4DE7
-A130C134E2394F002E34A51574DDF8E51C92D1D1E2C4946D
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: cstt10
-%!FontType1-1.0: cstt10 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 26147 26416
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (cstt10) readonly def
-/FamilyName (cstt10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 611 def
-/Descender -222 def
-/CapHeight 611 def
-end readonly def
-/FontName /cstt10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 58 /colon put
-dup 60 /less put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 76 /L put
-dup 77 /M put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-6 -233 539 749] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E729C1F3C654AE5C10A2F637
-7885DEF6A2275DC695462949A67E0D187D38D4A662CF4FA12D30CCA27CE7A810
-692937F6C2BC165CE2B8622BD15D5E5E6CF11188ED2932DDC14A54EC300FCE1A
-2C0327DE4D1CE9EA805CEF466DDB70A9920DDDC1F8E2F221D9D2090BFCE081C4
-57317529B50A66612DE3F73CE16603D25D14319AC60398985FD75232461654DB
-2A541747ACA527AA312FC27F84AAFBBB7F32996C15D8E819BD14DC1EB8E32517
-A1085EDF51DA03E28D2D370F6148FA4CA5551A1577803A2F28D69BB52DAE3A21
-E7694EC5E8AAAE0A2E5BE5D6B4B7F9F9E0214DCA121536C0F03ABF09B3DCD1D5
-7842908B4480553EEC1250FDC4E4378A115DF03DDD18844135CF9C098E067275
-6044DD8E906F9A5FE4045B801FFB78CCD0B89F91DDA22768ADB0873958A698F9
-9F264E31FC8C2202AD497CB8F4D5FCC7B4B25F49ADE1472B8F4A60D9F54D4356
-9359F02EFD4058C58FA5E55F60BA752F27725618302916E03B39CA30EAB2C1D5
-10B84955DDD48C7F6C6A1627635192132959536AEB5D58F9A01E249978BF10D0
-D3FCBDE0143238F62CFC2D227521B9A378BC4962D8FF5B5423261096F4AE3427
-49367D8FD1A016AA686396062CDAB592721EF1DEB820EB141C2BB733F3FE3DB4
-2643F8E0BD0A99A49188A4018D6787D4C0CB301152A70157310047A3FE7C6E5D
-99DB6A9E6D909C86DEF977363DFC5E1523001D95C0DAD9F1E6AAC0184E6D9FEA
-B2BEE38745AE21871F43249D4A6D0E867AC7E43E80EF84597F9E17083DDAD189
-2E952ACE33A48351CAFF2BF2B977937E70B713CCB186BBE6C5825A46C99A54D9
-577EB6EDFBAD85503029B9A0776BDA3C877A0E650CAA6E799EADEB641E165016
-31603C8459F31242729A18EDB411FC40B0CD9A196661A5AF768C67C2C02654B2
-331B923D1BB8A85655E6D40B798A3ECF1CAF79DDA7EECB0F1782FD5D8F1BA5B4
-87A6694809B1BD85530F5E2CFE0DF37A6732DB59F595D16DCC5493BE2C847312
-8449B7212B211FD9179E5D7D6363D39D9AF2694D1543FE8814CCE09F57BC3676
-0BD45A687480DC365D0A0FA9459CB54891F74EB54079D63E53C8B0DB627F3A1E
-D2CA70C7A3705053579F811D5728B57DEC286F9DECA4B1C4EDE8ABBD76EE2C4A
-30C93B45C3B1D1C895809AFC85E0E6BF5BD16078D68714E51C0DB582018AA4C2
-0EF7225A3451CA2AB96C64863425A8DB30730A88D81FA788E35BF8F7FC19034E
-37A565087AB2E18A8286B88CBCC2D46E57FC508D1ED03CA06491D973B10252DC
-8E088D8AEC852F51B857A389BBB334C21251ACC9BAF6F648D4EB41EFBF209A9F
-81DCF104FC6A46174D9F0D84C09F998363D3F3F392F2B1FCB711AD32F5F69EAD
-D2D9ADB6D9ABAEFEFF7A9150417A4BBDF8518E241C96655C354247A63DA7C883
-B8E7606E9B3B31DF582B40F9D2987CF94619ABC955B8194B5AC6F6A0A35C4F04
-DFDF783B12276B6EA24CEFD160B537690EE0D9237297AE18CC9D557E36FF842D
-56EB0E9309672DA03FFF3610762392B2CAAA898F7465BFF165AFEA30AB740FC8
-DDE2AF312399850379515BA605D8123F8113ED125B11AC8F5C149E5E8AEA106D
-747F8C20E2BC75ED880969372C7FAEC67828B182C7F5619621FE2F7815F374C7
-1390C27508EC5E88F3DDB1CC12F3424EB859119E4C33FB4959B7157EC86A0250
-AF21592A3F136524848DBAFC51D1D72C3ADFC6AA3C1CC762333E910AAE808406
-5CFA83C16EBE0EAC9F4422E8C23383C76B1CA2453AD17408FEDEF3FFB6C81AE8
-3D4E69661AA96AD96DD667129AF4A1089B390E95C5E53B01C9A06C90A2CACC8E
-BC06A44D45AD42480FA293ECC658F897E2E0B1271AC2F4B846BCFD434D80AA8E
-1B620F2EE9B280C3647197EB6F0D966B4747B048F7B56306A4E563957386FA64
-096FB619E3FD2320EBBE7207B2D1ABBE6498535B0BD35D89076975A3CFFC401A
-E2AA685584B5BD587160609CBA3F9C532D5C416DBEF870FBF9D2BE835022CDE8
-E12A2B663679B010018ADE93A7346B6D03358366E2FB8DF511C08BD383199FA1
-07A9CA35D3763BCC7A9EC5FDA448214C914C774590CFF75EBF86F71C1EF0A3D0
-24B9AB7EFE5FEA107659FBBB586462A3CDA8397825D269D700C5441A5E764F8A
-D703FAB8F4BBB1554CC9BAB6D51230281DD54394AA449E01F38A4F7441102975
-E81593EBA6701209D404451C677583C0E298FDC778E8B2464D04D19D82F104DB
-4A2B43054D39B5F470C1CE551775A1E9AAEDD484442097914FCE106218FC1D9A
-1D2F4D5D6D5370EEE6A6291F110FB4DE8CB21FF14AE894F7F5E4911D4A46065A
-88595349D0BDB4147B0E27428921E67AF6FEBFD85547491F8746330B2634427B
-A10C654942DFEBC62F94E006B9CF723C7A097ED8C23FF4324E26CCC46489298E
-0275A1FA08168A1D3F9C7FDDBD18BB8FB8478B1B374C1DE41D8FC6281C5BFBEA
-8508B69F32A3BF2D1A6EE98C51277476DD6AB75382CB2F304996F3A15859CE1D
-96D38F20FAD46616EF29D34F1A09B7EF5D2A6330CC3AB097878E4248B9935072
-DC99F172B2036ED2A824D99453311599FC58702709DFC7422B518942146EE05B
-06A483BF60420E5187F7819E670B70CE29B1826454939F5E807EA94C0EDB525B
-09130337D1FD7567851A2CFB4BA6CADCD42E32BBE10CB2E2D474ABD44677ECB9
-FEB5B1BB1EE0B62F0C6CEA9E425486012B1110D1885BCDD5B5152E5F9F0F92BE
-4EA94EADE14A6BE6A74830E8309084E2C43612E1F6A8DC0D3619294134C6ECBC
-939E1EAB363857CA9DE3F213CF8B505787B52663F34AC647F6B1E3EAFA7D48F2
-445275F5A3E06ED3310C68FAF4EC12BD44476D50F64E866F7195860F56DF531F
-67B127FF9E7FB0FF7FFCA52B3AFEAE76D6DA2380A712C4E8BE72A3311E3DF0C0
-193B9BC27433C97B5090BE8BEE458AFBFB57BE9230F0743C3F854A3379E03107
-EABEA4CA0871F1126015B03589E7EFAC6581E387BF5B39BF2E9F0CC0F0DE16A7
-4D0933DBF682F64CF4471975FEEA002D42F81B54C3E286CE2FE2CE48548C9808
-B0AD35B955DFAA3D10C244F84F377E8DDAD0B18B4D444DC5A1A6DD4914A22FF1
-EDBF796A2B1E71690CAF5C3A15B36C0A65EB0E98678351E776E07E3D536898E5
-1A991B7CBAC30A87A9155C587A477F0C890CFD19FA90DFD8E6A2F20D2067A91E
-67270A1D469270F8CE354717D5B4044974015E825BFE5DFC6405278B74F61294
-1CF9A4517482740E9FCA86D7FF8106CD1FA71499E26B0D603A5585C58EF7C017
-6F209F202263AD128A8C781C58A01167008997DF2CE1EAED186DD9AD8DD93BB7
-4CBE69E6809FE0A0EBE876275DC9226742428C1679F10D705B8599F3B66226F4
-55D0312DD2F36F850D28CF509CD45DAB4720FAEBEB852A1FB29A51F8276EFC52
-9ACE54399ABABEE67A6D7E0EC4CA1FEDA0F9F2BD08BBC2F558C9CA61D1F43452
-7E0C84A00B62E0B07C313A04A86A5CE74741752BB26681E24750160B8BBF56EC
-7BB69100410B7053D06C31FD6B01A9B63D81169711477DA8C820A53BB28234C1
-4B5A7C155EDB51868BDBC0DB4510753A08F58A05AB07A61D841D8853BF16E00F
-41E626A0E83A9DCA8C3012EA7726A571FA5E7E5454C7A578B66859B454C6CE87
-D34F5F961E9617248141442C2E48ED308AF38EEB8D10FC08FEA32593DACCBBD9
-A1491432D70630F748167D8EF61C27ACB18BF42EA98601BE8FFF91A07A64A34D
-17A05772BA2FD518D8F7934172DAC8767B9EF7D46CAEAA6EF7E55A8DD06FC2EC
-5AFD04D17A7B91C4A9C42EE20856C0CB82EC4D09D8A32216957A78884F8CB77A
-09391BA5F59CA3F8094134A565F98E68D5174F5735475D9520E32B3ED70EECEC
-F6B5D3D72C6014375DC23FD7BA51DA5E07B68988FB133FAFDE6593B8BCE3A218
-77285F0C7AC963636791701341F6C2B5D062EB5BF98CB359667FB5352CD2F770
-FCCF1B637527CFC0F08C99EBAFADF4C97AD9D63D3B3891CA52C10389F2E46ACE
-F5D2DF909916274EC8AEDE68732B6C7B0047B00A5E7A23E5A69A1288BB190CC0
-75C0D21235F67DD0FF54A429975122DEA2EA9557CF9532AF46458036B6ACF27C
-CA64F9280818AEFF8EE0D3F14FA881D0AFFA9A0C9F23B96672464C9DEA0C68D9
-959BE56E197FCE8230B69A78E9AD2B7B895CBFEDBF22B1EC7AAC71396793C018
-2BD793BC1F1D8828C651E2FF234D621098FC234A1278F8807DE1CA26BCAAA253
-26F73B6800E16F589488E72879D8BAFAB26F6A2AE172BA72F1B63993AD0B9330
-45DA68C901AA49999E149D3FF0C691721E2376052118FDA9D3F485DC2B9628A5
-A679A7AB050197EA233DF301426D3F0693CEB5A5BFE6F7C476E2398B493CE1CE
-0A0F4205ED4A2FDC90CDEA808DFEF41E57FEAD7CDB3071D22275B1063A45695E
-19C8BB3CC0119CD0C6575E2E2160C746480C2C211AC57DEECD64C6E80733B048
-6F72154637966158D13F1EAE6ADACC063A9D94D9C077F634970D8469E1E3E294
-5C66347082C7DDC5EE97CB1FF28AD25E3F2415529CB930EE0D689E4E45E810BA
-2FCB5FB3B7E7BD4B92A3E6BCA5DE7670E0993EB5B81FB04A49A52D7EF616493E
-5229DD78C71D8670A1CB73E0D302F5302436BC7F8B816BE336C5BAE54E9A6719
-BA3692C614415CFE5F85D6D8815EA8420806116E147E99F9542599CD130E60DC
-C311B3CA551AFC7F32FDAD3B8DE4FBA46AA4FCB179F9E50EA979425D06B86025
-0DE10BD8B889B974A4B04528D26E3A5B754906EF59FC58B2580B20E1C32A6A65
-204BB1183DFA58C9D3DBACAD4643755508E5B43FADAA25767CB5B384E7D6F00C
-E8F890F7AFF34BB4C684F8A94C7E31C89E28887B498D9FA4C65C2E060BE61EB3
-802133497E4B41393C9C82BCAA46FEEF28159A326666579801F823BC5A5CB39D
-5DDAB7F50125B53B8EBDEF012BFB897C3F6A67409E0E3D52A1CD556CE3EE2622
-B57F1801A0E8888E16C069F26ABE6E09EF5937EFF485A6DCEA669ED47182754B
-CEC4AC865505E47478AF090559F269205565B9166D728280BBC5927D0DD6FD0E
-203493017CBA4BADD7D43BD10F077BA43C5A9479DFF6DD57835D64355DFD3769
-0DE5513BCBA645B0DB189DF33D7924148CFB343441F5529FA891C7083C752164
-87AF0F94125CFFEED444FB4D80D4FAAE0CB9510E647028E2964D374F12F84B6B
-215DB51D1BCDF120B62BCBC7576F3CAC5C848E53B4AFB7872A32BB4D3BA5E65D
-1F07FF87992DF1C96A3C896EF50CBD250735DE6915FE98F791B1DC62B85C77DA
-7864E9A037E6137252794497D17D1DEDF9ECFF7F80D1C2F9E89BC9FDE6618151
-260192BB0819DB1F1C4357DE51919B456B7D3CCE9E4F7102F3F268D61C448A15
-9A034BCDE6BC4DC676A3B3EE4B40811E81D6BB8CFB1DE4F4665522B194121C5A
-BD85444E262CD6BC7054219554EBD5B9F3789A328F88924B063F5F31DE07FF3C
-99D377AFB16AF86D8F7D3C18EBB95CED6936555CE2407A9001A8A4461B446741
-31E4D250517B2BA4C443CDED995C40B79D1BE00BA0334E94401AA1EC59E9618E
-BB8833A14E3A09BACC22C8627E4CD941EA254F38E0D48B17611741FDC5448510
-B85D6E6B787EDBF5E6587854DEFD03A225B53943808C8187AC75D10114F6D958
-CDBF9096CDB82A16C2190940124832C2F9A82323CB4CCB8DF8FB38F76014AEDD
-A860CEF99FC92B0C5AF52E8D2317CEF2FD8832AA54567AE028B8E299689179F5
-2D042911CB8EDE42AE253F25AAC58C808C5DC22FCE83501EF0596428FE7DAABE
-58E0DAF3BFFE57B1E81EFC15E54C1862EAC7F9E757B083348EAD536C3269D514
-FB30121FFFC9FB49FA34BABE4D63C64A05F66B6577D09717C6D465F9F7387F37
-DC0E5EA1600F8BAA0BAA4A0D17606FC9FDD85C4C94064FB85FAD7C99A8D64BE0
-8E1B60CC15FE61173F98BBF0549D6CC750D30F95CD461F9BFC6B199C96EEBCC7
-0D3BA58389D8405D3A2497AF2021B395B51D1C160CB4E60DA6E185052933BD21
-698FD0F76BA5BBD2C2B9DD330066469A92BB0076D6CA4F738D235614091D1121
-1B0B20DF408B01C8484935DD0BE5221F0A1F5A49FD2439C9A57AC3F0AA2844BD
-58ED88F0DAD9DE259596E551031BC28E38E7DB901FD79FF4683E82F7547B4610
-E457F1AA7510A234393FBB462F887DA421594183E2D1B8B68E2477B8D6BBA5A1
-DA11A740208DCFE8C3D7E9E92393BA0962F5AC5FF5A1010E8CA209E286375686
-05860B84D0D3211E16799ECEB1FDABBF21EE401088F7AFEDAFEC8E1D5DE8D532
-686D66818D42140461F37C1D83C5097FF1CD43A6F732E7660FB139890584D388
-9A4F830069D89D067D74E6BDA0A91BD3A461273B23782EA570EE1A644678F528
-A9C44345A0AB98788A64A89D2326FF2A2F646527531A5E2DC2118100B70F9BB5
-E48C3F550E64394F8F261778F5495F6F505EE7AF9A839FBBC551EB43F5B3982A
-9D863F516DC3F005AE00C012ECE801617567616C8F69D736CA6F4DE67F76942C
-6B3C5A16E4B4759F09FF8D6291E5B0ABB207BDD0478F6095E29568E9B4BC9CA7
-74EADFD4AC3819689ACBC25FEEB46439BF8ACB1FE3D7835B7A4C3197BB470A75
-821E9F1E4EE6A03676DF8D6FA88D8D1F29CE425BFA88EF3ED887CB56EA46A1BF
-3ECB7FB943A579EF060B64C9E900FDAE29F98608B1C4D01954AE9D4CE2449FC8
-FEDD0252AC95CB21DE18B767A8900045BF0AD9F1259012FFD58046D408D5FF8B
-56E5B8FC93C08B78547E1907BFD409BD10584AFA90410CB5077E0DC08C40DB44
-645F2062AA5AC95A0DBC58A5D18AE142C045547756B4500F770B3EBC70C72119
-AA5E3A50643409850F648AA38F20EBB5385658EB1B79482177F6EC6E807C1350
-6F2E201077988C8AC6B35A36D983C3E8783983D90FB4EC866CC34B1668A65FA2
-18E6E16413F14FD5523B2C93BB7AC4825257615AF1591A2A8E5EB95C672B9F6A
-2FC7DD3B3CEFDE8BA17A09BCF8194162D2249E4FFF69597B54BA86610A92A469
-81A39529A3CC720D953CCE466AA16B5D739915A8D68EB05495C3E83BD39AE625
-068A4A274E88054D1C1EE28ADABE453D6A62D2AE38E5D11E5006886C1FF86A8F
-7BE217F3DBA5004B23F345DE0A4687DF8A6ED77CB4FDCEA22F4B78A833489806
-E2C0009246757077E71AD7BD5821DB5F901C94F3E2B581178B5DB72E7DAB1E2D
-05CE8828B7C1E366768B9FF7D7266FCA4C0C407D3535E435AC9E09C20FD50A5F
-F86FDDEF95426B531EF220515101E1B5C28F2D8375A80B38FB1371D9CFC203C9
-7E035113435298E7F13B021936D5EDEC08801D746E8086DE824B19D759899F00
-EC3ACB6C2D94D9854F5C63851F0F6CB175019488B42A8B32C7F355A783B1A311
-9809305171C13600817075ED66DFE6E0AFE5CAA9C4B2FD6752A802EE5720C75D
-10D9ED4FB0A6A3B7E3B30FD619FCC6E4D585990196D20460B2212DA901D6D2E0
-37D95B8A164E6F48F92F06210228CA18714D95F07A31093382E5DBCC63FD1CF9
-A0FB922B1F53ED589DAAD82FE31EB4CA7337920ACDFC7ECB292FC943D64B4C91
-547B9FD13F218FA9765AF17613B4E6E0D92FF52C81182BF37F0ADA03A127383D
-CA6B29669CD277E6C2AF63D090C3C98EE22C53F1AACC392DE4603A82B6357E8F
-07A652418C13E400A3C50DBE5F5ADB3209A4181090E2314223BE637F40874FC3
-486B977631D05CB9C3440EED99AEFF52AF4D51E17E1EACB0DEE5FF59427D12D6
-BA4A9C05A0F851ED8ACDA56A86A322054084EF5A9CD69A4BB25CC715F63508C6
-489331DB805B7829132BAC356A1536FD6ECC5C4CBB256209C34E0D23CAE5053E
-23F6D3AB4095069C3CAC1B5CED50AB5FF625A022B6A57D0FFF5CF452F58265E4
-640EFE34D0E1E5A8BE5306311191742AE274BD6C4D0CBE99161BD3B277A1F7D1
-5768D1C80F162599CD946EC06323D7324AF3F4719180A441BD7C1EAEAEB64D88
-863D573A49F5B109959CB41BDAB81354665581E1F4BE4BDCD2820D44855014F9
-337D2CB99CB5121FF5B6D0531EC53DB41456D1AD77216BEBFD95A36EAE2DFA29
-C0AA7DF47A5824150445D5022E1AAA276D9D00167A333175B16701AA8C5A71C2
-E2FE6B094456F89C01AA64BD0B342EBA9D4A9F6458FEF0DC5A98FCE815986402
-5470C09B983C3FF119EA4565D7AA557055B62EBC14D20BAFF6F8328E9C05E3BE
-DE307950616A278174F682524A269BCDCF2259C3F3DF3E66F81BFDA17A20458F
-BE412BAEE9784BFCF5A91ACB4945F063FBE27260F879957D35DA59FBF5992EFE
-DD0ED3740DE5CF59E4A18ED0B202C26BB109EAFF9842741DD054036376C2BA24
-CAE66146E9728C291DA90614FCFC5331A460A902F8B50F8B400DFB49A0F20BBB
-FBB9F6E68BDBF31F58E656289FC611548F9C4BC02F1EE438B87CBC583ED872C0
-EBA4341155BFF53B224A7C197C69C52F0F18C838573937B505E9685AEEAD06AB
-A42A8DD91B96F67488CC9B609B8DCA8F99A2B139795F66F2916852D300B5338E
-FEE33BBADA4D02C1A57C2261C0F81CCD9188D7B37F9EE0F0B722B6F0BBB2F695
-683C5990056651864337503752884629E965018D948ED19870122A3AEA754B8C
-33EE5DACF17BF3232EEED081881CE8F50CD02497DA2A5C82257C8656D2B7EAD0
-E82A63A9353A5BD56100F434D5A92637C84BAD6527EF07FAAA4C2C6E7E2BE5E2
-7624B211C5E910EA3255E329644A1A3623227DE543B6154708C7E28AC903AB16
-2A121E2510892B051D62669BC8188C0D438538278520C75A38F1EEE82CB1AA56
-65B56DF3A51C9EC543A5E375D55372CEEBF951823AD1880195E077ED5C4C5050
-1A81AFA18069CACA5977604C0E84F234668C2E6D165037EBDBE36A3DEAC68887
-EF5F657C6515117B6CB4E0096A766AE856FA0B109339A75061BFC99F6F1230FC
-3074872E5EA7D93CCC3EA0A2AE6F114EEB578FC4E9DF74CF0FA5E90C4F5CBB0E
-1E775F2DADFE29553D14770386CCDFF6EC39E4B51A58F533DB5134E37DBF7DA6
-DCCF5E5DCF14B92146C72D3A8770A4B0509B0221A1CD806F22FB30B892976891
-CC5E5C11AF7CFFC237D1AE50095608EE584D6202F9ACCA370DB7A4B6D9AD5FCA
-9A650D4EAA9B3B7050374C3CB6274CCA80EDDB36B7A7CB776211758ABE97A8A7
-328E366E494026D142332957BD6B5F4E8E02F4E94F3EAC8D6D6EEA0002430C35
-6F17AFEF01531C7CEA582AE5F9638B401842B7E43CA0D6EBB2AB5AD28F7E4288
-4807D68DFF33948C06427019B514069EA8876657C34EA188C7BCE9F90B789947
-D2AC7BDB67AE6BE6BF2F2E493AC7F3D808B34E5D367FFF37C7F5DF24FA25E334
-C676AE154AFBBA026D405BA76914991B5C751BBFE7E7FB7AE6DC91DF41EF97AE
-9C4B5EC8664ACCE6CD2B602D440B75979F585611973B31CA9A8D022C2DA4AFBF
-BC0A9F40515BDFBF09D44086EE226841EE90733D9231E7979173D464B0FD2C05
-52CB437CFA0C265D9273EFA946F65CA38AD0BA6AC8FA73900CFB71FE6824E98E
-26D8E888662B33F0CF1FD2909499BAAE56CA998922501FB142457B1480221D96
-382899310DA463CAEDC8A6B44C5137DC6A9912652BBE9AAD5C535E5C13BC1EAE
-45654146ADEA066BA9DC12DD52E820EAE83DF4C66667E5B1FC05CA5B692FA13B
-126C657A398A869218488A9AE08B5A9306EE7CEF918E7D67A6CE22EA48534B6A
-7F23625C7E287D71EC3980D9F89AF0B29F2E6461A7C0874400AD0F2817BFE217
-8A2800131E4255E8743D55282B5B439E59E1A19B77E45FC030EE0CF2FC62DFFC
-8801C38C2EF38E819172D860F9D5898933FCCA29C0ADDBA72DC85E45D8190FAD
-04B7CF05CC534849E25270409C271AEAA4A93B00907D88C3F74C34EF20AEB90A
-10D6EF0C0D29229A0341595B6E17DA0D0A227D0A8CA14F7638DD23D016C4E9A2
-00A8E07B9849F21E4646ED07701F562AEEE85576FCB7C87D3819B318CD3A7F4F
-4A7F73834569F9FA80BD6BFB0F38615BB1DEDD9D2BDB7755D24805C9D1EACCA1
-6B723990353B7863909D6C1D6418BA0F144A9C089366331CAD6DD9B0FD411A4A
-0D28ADA58F69D2C3B0BBFB2A1F4D6B6C9B1646205CDF402CF4A72357DAD99FA5
-24702D3FBC0BF59EC79897AF7F6BE85666CA86637520B87DE875CE821C2C6D6B
-5C0DB8EF15230F7848E386A3348C2051083D99486533F0FA0C66C38A628BF6D4
-7249B16808764C3869C8A9290579D936B7BB34BDB73A0CA0E8BC6D46AA91BFF7
-F07839483BD052166EEAA29E539D520EFFB064C3774E9B48386328F464410B0F
-6F551CC3C3ECB8CC7AE371F405CE62F7921DFFC38B50C38DFAFE3591DE0E84D8
-7A0B895B2CEF4046B4EA651708AD81BD657431BB09848C778B8BB110B90CBF45
-1FD4CCA77CDF38DE2A919C915F38136196C7EBD5757185D2E0ED73333BA1119F
-C7E3145AA217D1673B451188798B63618DE43B37B946CFE053DBEB5E608EE038
-5151C099D6F55D26B7A74D3355C2C4E62BFD7EBBF8D904A4BBABDF4E34F4F2DB
-2E174746FF2A531BD24E266C9ACB64081940C0ADC3C9FFC5F3E79267D0596ECA
-29D2F9A701992F485D113D5AF9F52AF3E0329E2A2846CE5AD4F78CC28DECA22D
-26116819FECA8422E557A5F6A4F5431C5B7C982FCF1CB46B102227D1FDAE6685
-E1767E5535AD4252AB80A78DBF10BF52736D88BE397E006C63FB14F3B1A9B178
-E65F04114291F451ED91C8BEDCDC35F941DD8B6FADE1FDC0DC0E52E30B087412
-894B8EA885C12EAE88AE2DE400CCB5DB7A5BBFE569C3F6A2765C7D8C924A3303
-42148B1908A3BBED1E684A3C04DDF1004FE446BE7C685584F345EAEAE62296C8
-7C3A2311A008CDCB5D9090B3470380231FB3996E5F5AB87E69D580FB26780D60
-D134150C1F6B925ED74B72820D34D118BB77904617DBF21093D6094BCDB3A3FA
-75F260676C05C38C784C8A5D54376A8468AE1E43A6DD446A924CA89B45D1E77F
-562D1027CD81C6FA57F10FC83ABDEF4425263E91952D1B4EC9A5F81E159A9266
-0C3A5D1485525295A1A1E179F1534ABF5F6755D02886BBCF8831E8C7BD5ACE20
-29797018DA2D5F1DEDDCBA00D52D276FDCB0EBADBE0C04F33DB765E937CDE39D
-B59966BD0645EB7518687ABB07AF5945EF6A91B3ABEC6DB4CA22337427C9C75F
-FF90667487F5BD2E4E012C7C540F1048D3387930B2E0D27CBD670C0FBEB8EFFC
-B258E9E6AC5FE4DC16A22EF66177D796A6BCD303AC83DE3AF907703BBD87BFBB
-594FF2895801139276FB384651EC7649E9D66D2BEBF745C717A09617DB876470
-8E090D11B27A648C24605B228C35A4EE4DEA2D27578E7FCEEF4A6A343911C878
-02064D77770DB72CA6B55D5E24CFBA3C7208F2D72E7ADEAB56899AA90F23332F
-6B1646DA7DC1162644AAFB439CEE67E92EA2DEF4C8C560AF9EFC80A677E5FD02
-D674D764C07B384E9650E92B59A76DCAB1142257142E73AFD1DC6419FC7265E2
-83A52ED941B1DA36A6AC59991C40E27A48F738371A0665E6F54F12FA0EF0A240
-1BE92C980E11AE111375ABB0839F208805E945D69B1B7A5759DD9D10A7490A47
-11647FBDB7F09E1B091B37D2301A896BC90BE1E7C28A583018A752840FDCD3E2
-21214A8B920BA27CA37A76767CAA8D10F46BAC7D6CE00DE86194E72A4E0186EC
-35B996E135A24A312AD285D682A0E1F655583FBED8731E05DD2E7BB56C15D2C3
-0BE1811E0E26971EF11120A386B888949D16C8D371DECE752E085693CA5D121E
-7392FD8F7BD1A9E884EE2264266787DA730C7AA72A6F6A007AD627718C7DD4C9
-3A56A1FCBFF4C6DDD38D5D22BF69DDD21E00C94586D0C8E28951927DEDE1F224
-5710D6A4CDC27FC57EF3D0C66DFDBDD51BCFB3DE60B9B07E88D60C6E39BF04AC
-33F68AC2B518FE4FF8B09939E4831BF900CB7F38D1B3C4D2AEFA1FFB449AC0CE
-5AA1B24E09F5F2030959E4A13A636BB45AFAF057FA1D42FD3DC5CADFD750F045
-0EBD5D70C79911430C5CAE55065C1511942DAA2C42548E0A8E418BBE1FDDC636
-42C18FEDC12A79F1B73ED60E2A5A4E753A6436F95C52664E39EEB9F1290B843E
-8886BB6772A31EE986C38088687311462BC8A53A6442BB70BD5366728BEB7184
-260C6713B90CBDE76BCA55CB84A168BE45DB300C71CA5C28E0F94C5498F7DDB1
-D812800552332434F5D5605EE16CBC4D3D8CB16DA3E01AA3AFE87A5FF240D452
-7E9FED37A96848AD8E0EB856172FE3211420A6E3194C1B338D97B718F99478B8
-B1664C3AD7898757E86946E68730A5063B2F6A961D1C64E4A6D6A593ADB39389
-95DF4ECB11A7DE9FD70C5BE4B485BB655D1F8AA407AFAC574C437C1D506698DD
-92C17CC44B7D02BDD86200540C9E2EA910F3E295E028CA11240C2579B6370801
-B57FD623D4C027CCBA79C107E6E910C5DF4C21B59EB80C9B76E6D6C03015FD5E
-E434644F29C739E5A8D18B917ABB3D5C0B41881FB68AA7815CA64C55B25EF388
-D399145961A5920799E8470819CCF742977392AFA019626FF415A45815023125
-48590E3DC705D132A18A92EB2DB31CBAFF84DAF0F7A36E72D275449C3CF68E82
-234A75E358A2909B78FCDA7601139A75A79CB315090064379B736B05A5FE08E2
-77782845ACCC65152EA2A7F177F00DC1178D63210D53C3CD401C9C99479BBCC7
-A56D4225195343E36EC60C3D2FC9802E0F748C3A5D0978FE38EBC301CEAE0951
-C546DBD908AC474B940262B061F8F4D7B174470039EB7BE30AD02C1C3D600CF7
-EEEE7E385A133D3244ECA79A9B56CC35E3F58E5125D4139CED98CC00CC859A6D
-4ED845818B11C3CE8D0C7FA31A8C912B51D37DB31A5C916B31534A5707CDB3D8
-8F2A5027D312B5490B60BA8939F2BF89599A13496D0CA59A41889DF1836C1F47
-B791FAAD254509F51D0E50BF3B666A565C09154A80EE9BBB4C5963BD8CF7C4FF
-BBE3790BCB1C36047E9CFDD022C5D49B34A46290AF34AD77B278208A0C305ABC
-41EC281F20374C3E497BCC18C00BAA2D479A0442304C117FC5B3D2FC77BDDA24
-68B1DF2C1E7083B0A30C462ADE9B9C4134773EF6ED5693DC4E7A92AE4CC46E4D
-9D446C534FE0AF3F99991FFAE782123428CE3DE03C8EEE7466A196CBBA75A597
-690F9CA29D32045D440373AF992BB7997A831ED125E297837B144022A6F70530
-4612FA11EB1C5562CD666813ABDFB6FC662ECAEEED44CD43C40EDDE26F9F27B6
-700523DE3349A86E13262E4C55DBF7232B5DA6DFF69861E07BE6A5AF0C5F5A7E
-B35F54295BFF72AF442551753A0BE05FE26A04C67855F1F79BBD23C3DC20F09E
-448875E328AEB4B761946E240539EB8949197020B337E38CFDDE272D12FED5B8
-B84610DCB3675ADF54830AB7F4D5CB88DC9E1A0094B8C629A7592A04AD10BC8E
-553EC4AF5B88783D15BF3B52B7B40090A7860874543DC7538686292A6308C8D8
-B2B5FCC89500B3DE8FCF31623615BC4C3C0E5AA08EB8B88D91975C3064ABF700
-796A24B0689F09D49529BEA293AC6E115E75A8C49B82A0E185BBD0EA87C5AB12
-988D149D9D7AB5C4A20AFCCB0880FE80D080EC45A1B8817784E3854941D4FBF2
-73380745471EE9837B2EF0CDBE081A9FF98A42AEB54D57082D599A15F53A262C
-D8E11CD48D10DBDD99EFAD8FE38AFDDA0E1558A9E4123ABD7FCA44537D235BE1
-CCD6374584F17B047EF8356105E4F17EBAC0CE73428C5F18170558C31A6B8D8A
-EE51C3BD9CB5262B83D66CCEEDA7FDC8EDFF9984C05570CA0186154109121DF7
-BDC20E2906080D9B890700A06B6A609625F30A410821911C81CFE16068012033
-1BEE1B023045ADC0C7672C9FEEF79CBA5ABE95306616BD1922A4E68CBF15571E
-935F9466EE7AFD691D176CB768C0E2AF2B3E7765F59B0F2540BF7F7170B145B6
-793876429BA1C17509A65FE2C85DD6EA826F4E3DE909F8AD63FC8E9CA28986E8
-905D5325646FAE5D9AF72448785A951AA015916C5FA343D2414D2772335CEC07
-9FCF76CAF18AEDEDF264BDA8899DCB06C20C28EE8542EA46872732D863D65E9C
-6DFC6221C90A9FD9BFE833A1B9AFD1B333AE519F5A95EF395C99F788DB151F37
-F149C7C2E476330BB5557E09B9678B4675911281A19767878582CD3E36602608
-FF5177BBCE5AE601F3EB152987EDF604CD4928E2247C15A1F47E189B9C248DC0
-3FB6F0D1E16855AAC279AA3590EE80E5946E6BED4CB1F02856F14BB542E86BB1
-EE2408B9EEDC7EE2B8B0FCD1308273C87F72504CBFE816EC89466E78F9A6EA37
-26C1C3002887704AE92CC360F4108D3146D5AC3801DFC5ED05DE405587AF286E
-9157F9D40AAD08DA87D9EEB1A5B0141285C210DAB3AE7EF760B003B77C006284
-5AE8F84933609BCADA81DC47B943C31C8B22361A45F8EE632EDDB57641F58AC1
-ACD085AF64EE12975E498B3B922AEF89C59036FAFF7772C479DE6075FAFB2210
-D7795616225A4B75613BF589865FB0AEC66D287C5D82AA8B48C7F83574E4D4B5
-352A470ACC64AD03C62F013C0BCA45CE0B78FCC38B73B8A28BC991EFF5449EC7
-3966A35E53148443F512E3E4F7B56790AE29481D8AA4D8E321706D4110C9F0C7
-23CE214F1E145E1A55CDA8BC67E988F2D3432CF1B9A8287F890F2D4C1080D7ED
-1B930ABF96DCA16D2AE3FF5123AEB2CD51B48CB854F2282C52DC1A6AC78D5D82
-5BA7E5F5CFA810A0025DFDB334E74E02A90AA41775A26B12E0852724A7C779A8
-A55E17F006FEACCA8B7A6B2FAA7719455B92DC7728EFB608A32A3206387708BC
-802A09DE0DE78F6B12A36A4BBA709B16FD5D2699B96351CED92C9AE95112E5DF
-D25512251D965FB3DD925B3429430DBE475ED6D871AA61F1EC780DE6D0D0E0C0
-0205838E5FA5663D1CC13FFFA723EC4789DB2141A9E45422F6D9DFFBD5B34390
-C18817772A3C86D8028F656B09217E2807AB09309561F40C2730871C7441E40C
-309C44367F54538136B129AD100CB27C70E0D391B80181F9980128E4C25FEFDF
-229B48458F7826ABA333D06CE72874EEF09AAB3DF2C6525CD10257F50CC6F2C1
-FCD3865B5162234EE0EF5E52BA43D102B806773F6B6A89A052A871C9954F6F62
-A6D7D62959D94D102DEA0C0A85B048AEC157DEE3009F3B80497F0945201388CB
-21F55478472A8F037DBE28963C9EB787181EBEDD13A8276BCD829BF3C62B6E0F
-4C8DFC4534ABF21962BFD926D508FA85A5F6B186A294474A46697F74EDD76C76
-8184551680C1A50E0F5793628767D436D8B0204997387FF3423586E5FC113609
-1D437CBF17B8F5B8FEC2A52CBDA89495EAFDED96F26C5D9F6C7890F64A8C1AD9
-0A1F2162295C814BAED96085A8AD3B9532E323B2DB2C52165A4867C8A8AA2FA9
-1F5FBE6C6821BC99539C3CAF9BC10226EAF1951773DB1A1EC7EC83ADFE1AF835
-F560CABF62E7BF1A0E68A6EF495F9FEFC1466332C7CC85339693DD3EB5364E98
-DDEBBB00A2EBF926A50526D893AE38B62B875B1EF1FEE2B3E87E01F5E97C734F
-4A4E9097F441E4C819E8DFFD89278F51EF03A00A840846CED8D9E59EFD93D61C
-2375E5BF3F22C4C0B00724B10ACC9D9B94EF49D774C10D355E149536CDA29305
-CFC938DC976354F3BF7A3305F8EE3485AC7E779B83A92BC892354ECD15C6041B
-633886BF05E4C9868F1E0CE20655DD3AC63B80C0C0114EC949FD6A55F15969A0
-80504508FE299038B736F8205FF4C6AA24770881AFA8C5FFB385F76476F9406A
-6ADAE263C94158DAB91B64A0DBBC0AD305845D1CF9777BA4622BA59F5DAC31CF
-64D71AC7FAD218DE9548EB7C00996F162E308E8D0496BAC73921F6D19088DF5E
-3684D4CD02F12DFD87F6ABAA13DE4BCE2C64A4FDA8F9D8695AA2B4FE7AED2510
-D251F7413854B3355CB452F4029845F5E292C0B4E50C5E112E5A933438705844
-4A81E1043DE175562054FEF9D92B5DCEBF9F7EB5B7019BDC65E9617A7BCE3D3A
-8DC18CCC56657485ED065717B327174C59008DF94C123BD9AF8A7FE6ABC0D147
-105D0128379F7A3272D2856C88B28602D09400FA4EE0EB7F1AA0D4AB2C26C510
-2C4FDCA28F150D1F1D5660649533E1E6B0D6EA98791C98531B2C4B5BFDA832C5
-F592375FBCAB1D9B6808689D8615C152E66863EDEC4962722E45570038FA3AF5
-0ACAFC13618735E81F375EADBA653A86AD5044BD0F14ECD23BCF06008E522C39
-63B627A6D60F2F2823F0A72AA0AA269FF9202660E4F79D2E4688289C7670E553
-6E8985B539A753463CFDA12219B502714323741F3A0AE9D7FB51ACD312FF3538
-E0E0CEF015CC6C188F498884DFBDAB2DFFA1BC8BD732A65145E99FED1045DBA0
-C91CF9A53E4A5C1DB1C4C8235D80321C73F76DE2F82C80BED05798D7BDD9453D
-C1A61B0AED9984DFAFC130AF735026B7A455B0F549EB48F60B4829B3ED39BE55
-0C6BC67693FD84A588572A485305485E754E71F30A360881392C435A5599032F
-9BDB950F03CC4974290C58889E8413D32EBF54CEC76E07261AB64ACB8D1F9B66
-A72CFD757B453AFD53C43CB87A9676B0A95F60CFB22F365382F439E32F604BA5
-014FED486B57B927F5BCF3B97259C284C7D68A87A4269B24F6440C95B46BF8AC
-3580814D8511BD4CC3F965403D98969EE2C64B068127DA6F56F4AABEC1F231C0
-8221EDD2AFE29876A3CB64FDC80BE31555A313CAF76767C84605F1C5177E669C
-91F7C10360652851CE5999B30B234B355C7671FBC2ACEBE035891700A4B14A76
-F8AB9E9B5D7B93874739AE9E894BFA1AB0CF689A55B3980000D90199C8A04336
-D579C02EB1EBC37B48C7AA69231F125A5C70533A227880F1491209E8527DCC9A
-AECA2DB80A334D9D56721622205DF3F3B5C5B8380B8A2B6DA52F2B8BCAC1377E
-E54D4D12BED531B1A77E3DF48F07073DD5E2B0D0AB86062BE345CD570093D679
-2E7372C6313AC353C1C44C0B3EEE3F56CD519EFE407ACBC9B6418512662FEFE4
-4ED6948D34A282541333FF86D8FA8A22245A53CFD197B559E959FDDE027DC91F
-3DE344F4258D10CFD36AF35898CE83A1CE8EE387A2925F286A1AEDF311CC9AC5
-E3FD676DE98924D3D02843478879AEE2B52E59CFDF3F2818E9594D2D3B16243C
-97B62D70108B91FC76319DAA69B58817442627A73C7C6866F3DECF147EBA4022
-B19B94122C081EC1953C91A0DB2C8447268BA769ADA62EF540E2AE8A177DD572
-77D26175C55CE90347A1C238E648CA338867895149404451E4EA631429DEB62A
-C2ADA338686FB7D64C908400CA165B689AFBBC25AB8178D5653C091F8BE9E9BE
-46481D4436D2890802468539377FB38EE709377B0E71CF3F0D0600988F42695A
-481D3C73C8AB83A6BA9EB32D5C3D359E12EA325E56BCCD860B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csr10
-%!FontType1-1.0: csr10 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25429 25707
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csr10) readonly def
-/FamilyName (csr10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csr10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 57 /nine put
-dup 58 /colon put
-dup 68 /D put
-dup 69 /E put
-dup 71 /G put
-dup 73 /I put
-dup 74 /J put
-dup 76 /L put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 85 /U put
-dup 86 /V put
-dup 88 /X put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 185 /scaron put
-dup 190 /zcaron put
-dup 218 /Uacute put
-dup 225 /aacute put
-dup 232 /ccaron put
-dup 233 /eacute put
-dup 236 /ecaron put
-dup 237 /iacute put
-dup 243 /oacute put
-dup 248 /rcaron put
-dup 249 /uring put
-dup 250 /uacute put
-dup 253 /yacute put
-dup 254 /quotedblbase put
-dup 255 /csquotedblright put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-44 -250 1111 864] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A13ACF068469E92BC111E5E809
-0E489E43C83DC29BDB053C4AF9440B668638D0EB64D2976E6F7D6472CE149020
-5249A42D7DBCA06030F48694F7CA0B38978998765D7E7BE1D365613011E79D8E
-DEB631764D47D1F9663A46A0702AE1CE700ABAC55A77DC4472405C469FCE7CD9
-FF240937B0C74279ABCB8583B4D1CEDC2856847F4CC2BB267318451B79C1AFE6
-6DBBE53C3CBE648C7E1554964DCF29B12753A8431E0E0793099E24E698395683
-346C2A1535DD6D0263200E9F1B76843F139EDDD475BEC3EB84BE3E1E664EC01B
-63B5EC60E6BC15EC7134E83F445BDF0C06D3AFA7EF773B48CD9E51AC628172E6
-D4D4D306767B31219D3E545A0819F4429C34E598F8A758719E02602982D87758
-5FD419D175B959787D3707D1467AB66BF8BEAF14AC38E07F6B90BAA760BB3807
-F83BA97C7C696849BFBE8EF51DBCE39508F288CFCC9A00D3534B62F8AB995AE0
-A2608EECBB5C156F4DED7195DEE9F66550737765DBAEC14039CDA155A14D9591
-B7AC0282147BC3DE8ED0DDB1280C7A23A51428C250F859584BF2DFDA68E82E09
-3E18B41374F224F3EAC407807CE5159AC61DBD6D308BA0FAF841AA47D482D8B0
-7B8524840E786C67FA7583E00445EC83AD41C7B1E472A1D50B243B4CE011C530
-3906853E6C1BE90D5EA39263010537E6C648EBA7A2466B932679AB6947C7423C
-AF3A9935205B938F01E27D05E80135421D7D1EC4D19A7395D3188A51C8E9877D
-F0469202E944082A535376DC326EDA7AF6DDC3EE17F2E7C122A20E636094E7A3
-7529E37DDD8AA52BB626457C8866F1E51D8D6BCEA4537FC25299BE67D93B1A10
-1D51460D7E65D13F600D76FE5FB754ACB8ED7DE1B0C7D2C77B6DD17766E680F2
-D4777C33A6DE4D9BDAEFEF00BAB905BD7D67725CB1DC8CC08D858D627E34E97D
-F1AAC072FF6DE0C43F440660C0532072DAF181131FDC34E56F150701F5DDE8D1
-022298298F2AC93110EC8789D08F13B0E9060D0588CAD443CD60CE8C633704D8
-2BE338409F1184AEA1D124295A6F92E7C6266757138DD1B9BC9237E9668D963A
-8D65E677EE4BEEEF32AE6422724BF6B8629280B29AF420D01E99BABE2226CEF7
-C0120B44F078E3F2A8D4EA57ABA69A20AAA68E2CEEE231A58AA558BE6DFA35F5
-4665FE35E152ADFFF69D39E27807B9B59516B2A02E5E133D99CC474D96287A2D
-BAE8099252953EA5AC35510AAE4F5FBAA1495AD9DAB8DB3C7013BF43B3A0B76A
-B622F02E0E38E9882EFE89392FC3758E3E000FBF9202351C7E724AC7911EE748
-CED61F51AB18F71FCD554E1506613598BD79DAF036D4C569CB28FE6B77975D13
-DB39DE260B1BBF23001D95C0DAD9F1F58BDF2666E644A9E1C59F5B167B0E1625
-6310F21484C7B5884E2B6B3D739DF979898CC86D69E5D786236FB6C11E9F8D01
-D4F5B5587FF0F8BD6849BD36D075483F08FFB9324B16553994EFF998643E8DF4
-B7CC29B0F7B8603CF9141DCEEDDEA52F1C34FD9654382A96EF26CAAA6E6CE24D
-22F17182EE505F2C073BE8130684E4AFD188FBFFE1FFCB8C07238A90D5D4A457
-3EEFFB214693519CD9F0CABEEAEF907FDABC9B780F8D5121B7D86A135F93EA55
-53BC80DE989B3FD5A0706E311073093CFD7A9EB6B8464650803188F15AEB63FF
-2FF780CFE5DBFEB6351B27987F42C23873DCDEB50259EB3519172AE7E169FA41
-E7573D24164BFD15E2D4DC4B3592085CC2A830F6927982CCF7DA352C896403B2
-B2B94270CCB1DE57B9433A978776F4398582C1F4A2E9E556F2AEFE949B20D2D0
-F8635703C7E82FBC4DACD035F619B5B1C26C511D0E4B9C2EDEB211E7E1E495A8
-8C1E11205589FAB0AFB2BA56B93BA080AEB25BF8271913D429ED49774092C9B1
-0F2F5D721EAC66CC98D6C3AD5828684399E5205A5898F40088D3359D8A88854F
-D60CECE3FA9D5229E4136A52190E6997672904D82FE026AA645CB68589E96A76
-958FD9F43444CD52E38E492C06378662BDF74FD527FB5094EEBFBC041990DF63
-64DD70497CF3C2B2853EE6FCF4F9AC6AB01048A697E7976142F38B32DBD102AA
-25E4E52456F59BCEEA217BA4189749A7BE75E2CD9A54A827E429D40AB28284E6
-970FA89DBBDABA0BCFD464271AC02CEC4E763350F76D505E63CC586AEB1E386C
-D4569562120C19238F0A34150A7059B8A53CE000486D5C43F293FF982EF7CA33
-7643168F6D4CE0A58C83C9A4F08AC900CE3EE4A6F29E3DA1F9E4E17FAEA3D931
-87C36544F9D51DCB4E2D02CF6BA094B3070508EE0C4E7AB6C3C83204DBC0C0A3
-E0E9D15E7C00039E5DFF9490A97F15D56E7FF08FBE21EC0E16954A9CF19A8116
-9E76BC205FDB48A226C05D2AFCFE215ED9F308D8E08153B349988FC654E86ED6
-86AEE3B3A3D371BEA567FB49F6C5E2BAE55D81A295CD54A63FE2415A8751C17C
-731C029B71811947301CF12D757AA35B14799158B6E503D18549DBE61814B507
-8DB8F4E8761B7129873765E50B0BF4161FDD4891B087B9FFDA26C03A715484CE
-7F431172289B7D56DA52E4C403FB8FAEB83EE3DD7C0B425BFFD20CFB6942239E
-75834271DE8BF6DB0750E373145D581F4DCD16A89EBE8F2274EE017610C9178E
-89CA5C44806EB65A435E7316BBC948D2808662C06FF53312CC596559947850FC
-2DAA795F2EFE5D23991F4EE83FE246BC7008306DF18789A6C351087B06129D2A
-E2F69E58AAFE03C5E58634E934A1D1441AE14A8B8E076371FE605167A88558C4
-FBF440F4FF6B84BAFCF17BA81A1825BAF5F45E94BD426E20B0E7667FCE6242BA
-334D47C94998ABEFACC9E05DA3882A4F2B2D1C9B1459AFF8357E7EF555A67A79
-A4DBD1334783A921EE44D7692E28D350F4B2E3D36A7510F6AB314D72345D0A4A
-2E6DB5F979806468320CA1B0F435C024B9515C62CEC4B916150EBF76396B2930
-1F661AAA1F29B38ADC4DC5D438B3C125F46295549A00429732DEA6BD1075D1AF
-B680F39C70D5CF2A318059A253350FD2B7DAD1D2A2C3730C1FB07218B4C0A2DF
-16325B13A97016294E43B292BAB077BE7BA087999E39FCE9D3ED4B3DE314AD94
-8437391495593C6A610562D8EC86E29BBF2699C88060BA6C5877EA5B6E9CC5AE
-D38DA6F7AA97EFC7BC8AB81C2CE26CA0A1C76238CF69B612E765CAB2F0D12EAF
-4FDEB0CB4C0C9A7FF9995A177F0147F8D7A23B0EC553DB8258EF4409467EFAF2
-CED9E844D8354FA578EBF6C3A0463BFE56B7A97A14D77501EF49D585DB8A37AB
-8B7EDE4BDFF79FB0098F1E9ED903A797E749F6C532D4BC065B50A8032AD2B5D0
-49B27AA43E64E9576D10EEBAF68C312A48B57E1D3E5E001720D0BD6174BB79A0
-949121BC9B8BFED823FEC663FAA379A84D33D5A0942D9C2CCAFC90F2C2E66F65
-992F5C939F2606CA3B557F90E14257195F7EF10AE1A07BD2D78E94B3E04A6627
-09919657B83F85E13E6AA89F45028FC7C5450028733ECBB01FD84EB48F0535C9
-2D36ED6D30D46E74EAFDB058A3C0A922112381C5736F7B4A96C5662D1E99E2EE
-CA473D9172B8FCC259E7ABED9E70A4B18C81534D8A1CB0A4D2E43EEB0E910A1E
-58E639D26C6BBB9FDC4D95C8B93D814ABC1AE488D7821670D2A9841213B65156
-3725FDEDE1D05B5CFF8406FA5B8E161F2FF29E289FBBC065CB26ACC3ABAD2728
-2A25BFBD35C767E3EC04B090AFFB390ADADBD8969CBE928A26F47D257FBFE047
-3263C06D2F3CBE7B2FDF1A5A2C07F5FDD48FF0D6B90555C1143440997E1884BB
-09B9AC13114EF4AF064EDA84E60683FB3909D0723E8B4A01E37869F2599BF22D
-004C5F4D6CDAF5102D81E304CF86378D31FB717CA07948736E94B9DD207AB3B8
-DC17C9D9391444841EA0267DB7FB6D9D71618DEEA71A16B6B19AA1E73C5D4AA9
-1A9E8E81D90A22FEBCD371E13BABAFCDDFF49795936A8A73DA6D6CF7B2951226
-76165AC0B0597FECF80360A3D38AC35729BF0C4DA273B9BD832840ED67986FDA
-79ACE8E1EA9ADA59F1AC9E79E37D0967592C3DDB11F43AD29C4D572710529A51
-477EE08210FF77D629E28198ADB05F3572607D6067D02A43B589CF14FE604453
-1AD57AA7FB479E9F315FE352F52F55FA1818AE52ABEACEAA65826B8B427CB850
-C7752650F0FDF3204BAEBEC0FB10200333100B1360808134A5B9233AB2976DAA
-144BF91183B9B0BE884270AED570E38AA9A03271F76748C623535887BA4F028E
-DD53BF16328BF2EC017E0A96A3518DCC042E9D18B116E3194B46D0146973EC38
-5B596D8FC11ABD47FC843593B1FDC91E8C94785210F692B94C47EA2E5289106D
-FA7FCD9D49F564846B6BC2A0B84FBF11AB5F264BC418EF311B19955D8139565E
-51E8CB7C814CF38E2B3660E36DE42F4AB5039D7EC482830212C4C0E90F349320
-10E69EC477C3C3050DEFB631527C7949AADD3CF1E759D5ABCAA5728CF9D3A671
-17F3F1A128C19BA9577E5D6180B8DF88B5AF73C871CCEA69765F720CEDD80895
-4FA128CBA32D9035DE35A55C8CC6F2652A7CDEAFFFD1AD8B7BC9CA337D4048D4
-AE055FA47D6700B13F0F77FDBF521E90FAB9137035CA14F22214CD666E5A054F
-BF90ED967EBBD42667B6A70C300C6C088FD3A1EB7AB071DC11471CDA712E5F28
-3BBAF815EEAD019570E2CCFA3B79E27FD2D1711D49EA6CD16BF2838A9570414E
-6597343ECD8D81E726CB1BAE0E0260464AAA6CDC753C28CDD40770FB832B0588
-ED3CD94191A17F6C2A28D397E37BCEA641BF19005074B96A6D5865993B95A4AC
-87144D359BD29615A09B10FF8E64C36F18EC3D7BFDB9EF8595F25AC04D3BEBDE
-9DD8E38FFCE77504CA2550B436247E625E05F98176DD0351FED294AE41B95248
-F73F48D873FC9E14B0D621E26BBC6D9643E6830C50B5F605A35D0DC158CA4E64
-D0FDD96F5B440315AC31DFCFCE0E5325538B7C5D2DBA26A0DBC7F814545E6C2B
-044C59EBFC750E05ECE80F681970BCF78B43363F363CDAD56846D39FF7B8AF06
-DFC9FD6E4E3DC881AA117BA4DB844785BE6820954DA832F780C603CEBF1C053D
-825B42E1684846E5D4CE2AE36CFB6850729212398A7C2B0DF0C992CFBFF1EA1D
-419EBBD3097FA8DDCD4C276BC05E747770DC6E662EB317A447C6332576283CBF
-9FBE6CE58F7232EDCB3FEB1DF98DEFBB8A321C412234E827509812B975B54169
-4267C6F33D086995CA10F0D8AADABCC6E88E9C14C2F557B463384C6BCD0FFA04
-8B529AD3CED7C9F25562AA9D30E4B4FDA2830444CDEADCD1712628C3E32BC2CE
-3A617134D5DAF2BB326F0657E1A9EB83B748A9762B7D201A63636190EFB3860F
-DFADF2F52BE3A14D279E4ED61065F04F2010CA97AD2225B4CF67D29B095D2AF1
-91EA03C33221A41F68849DC99D1BED457DFF0EC63225B86AD4BE98E1B1F9EE81
-13727EDD5CAA1B752AE74D8FF91D8E076A4791A6BB8D2D2F7B06AF53C3E018D4
-97130C3893E7566FFBBC7599B02E5ABED7A91D4CB09A606EDCFF95CF858D0A23
-BD841C186E58FF4490F141F5CDAE6E9A0C391E0E832702D8AEE13FB2F96F3AD0
-A8AC7F6A8D731CE02C54EA27E8010E971B3F3A4E8A445AC77554F72F7D3EFA70
-37CA9A477DBEFD3E036D631CF8EEB49AF8B8954DFE4DE2A847FD46DC2EA4391A
-D15AB70C5EA12ADB82ECFA1AA7DC5E0BA23A7884D171D70E04C6BD782115FB10
-034D35B8E09C3CBE95AF635DFAE35A781FD4649DBADC44E3A5BE7B513104976F
-05DCBC6B67C72B6478F6ED396B332BE4ABFA83B231FDDF2304AEEA8CB64E315F
-786D899A946ACF9F178993220B23A2CC0064824851C19087541B5695FBFF3F10
-F339504FE7B3510E8EA074D81B4755ADF13CEA56CC6F52B5707887230F9F2CC5
-FF0B14671F0D8F320A0B1B888473D6690C73C7CD3A8DE9EE6622F4D65639895D
-BE9599252130E599380C506B64E7592552E97797B3A660F7300E917A523F4C44
-5C97D6CDCE2F0C37D1A801971B520CF868927BEF99DFA4C275453B007797C3F0
-80633D1AFA4BA21BF353775EF33AA29B55EA7E49A72A04362B14F7F4A64ECA70
-37A6E2FA2B9E4D4B1F0212B13A7F53BFE029FBE28DFC90496FB495B632CF7F7A
-3AF18E92B6EE59BBCACFCE9507BB7D7D0672EFAFDE3C2542060CA62C00321A2D
-5E587D6BF20B269948816D7295248A8B449E5CE9E759C46732675443CEFEF147
-D3DA1B635C50826FD8D7E7560B7884970135CAFD9032B12A7362A48E0C48524F
-36431A1FD3A186C21F07C5765DA398A7F21C9AA9DE29E306E7441BA66A397240
-BB0B66028BF8B41F355D85CE6C35A280C5EDBE909959C2FC12E1F9A0FAEA2EAC
-F356DBBBA1D22954CD6E4B1A336FA62EC0F8396ADDE5B54F900C12757B40BC3E
-D97C418A354A113DA8ED9940E8B5260DEFE9971BB88C44D186E50BFD561D399F
-87FA4E224FB7DF1003935BAB129CBB9102F3206A178AABABE5015438BF77D01D
-D8C8C6A2A49E63AD0FBD24C0ADAB62CAFC7A3D28497912E8052296CCD7C50ADF
-2B571444D521786DD9DC3F310F673D8AAA98ABC645B8495DDE81B0CE81D1B28A
-C933D756DA68DA9EB06D60D278335554255CDA9366C9B1276C50DD1AB4F57BAC
-AF9F7E73822AF4883CA47D0B5AC633C3C39A0F06E8C9F9AB8433C2BE702C9CFC
-4D7180EBD1C57D328965957F1E4901865412A88C03CAF5510573E2C8C5EE241B
-941EEBA6BBFBC5FC63CE5296456BE6179783417A7B464A5463D23C392751077C
-CA04267DE0F9009E44F5C44A9527CB61BE90E788C00788985EB1BF555E168F6D
-E01200A477E40437FE5B6CE47D9D963E3B802D475D3295EC585C330B1631C710
-2F6F2772FB02E9760B4838BA1A80D938337D3D039A4F5844467840061B5E7AE0
-C8FF98A9059F958A428572291A39DFD9BFE05456AAB934BA4CAFFB8609D6AF97
-27379C9F52AA02415ED61B5C2E8BF0F0D8A398A138E5509565BACBF64F627209
-272CA73226B316B8F3EBC88E9ACCBC2FE89284A72BB481AC5007A0A3764CE45F
-AECD6D7CDE40DE55C240803F47BEFFF1410138B76C7EC260341231A3A2415836
-3937D3C78D860CE42152BA56A8D3B9E7A7D928ACC8E1C4073B3DFCF4CE376E89
-9AEAF522A4C105BDD282DF24E77DBA2456CE4708A98ADEA4BDB01AB33B319936
-24C6DEC00EFC84ECA780CF5F80AE89476D4B11DAD78002C072C0F619DD44864A
-0076E42891A9C582AEF57A8EA9AAE55FD7733E94718ED0AA85BDBED5FB8DA90C
-CE392AE635D6085E8B14A48BBAFF262919D680D4D7E57B0F5F50D18C95C5221E
-4E5A23FFB0B8B3EECD0ED4C6FBF62BCE8BF99BD909D2E0477E3356FFA72C79B3
-B6FF3403AEA2293A5BBDD97AD7E25A2C1E025688CDFAD9B310C4A1A18522D2F3
-DB8E41CFE12C70A44393FE47DB16127D1BA746270AFBBED0BE14C36AA59C7B06
-E6C8565399DD50D212C5CC0A9A89C3906821B4146C9351EA5A8900438F52E460
-3ECC7E5003A5310EA59E8DEB61E500183DA13DDEDDD070EAAA729410B49205BF
-2EF8B022CAEA6989557DEC9A2956CE4672164E50E5A528401ED2B2A7243E3E57
-25A5BBDEE0242F9BC6BE2AB19E9DCC05133C3F9B8C223BB4A33C783D2DAA6272
-506E39C48A0573D14F5BDBF0AE89044B71F7B069A13BCCE8983CA474C6B27014
-5F152C4AEF70816D98E35ED962E12B992EA865087FA10A0F90FA5738F55A9D56
-032FBAE5BA8A6F13FC7FAA998C48F871FA4F38CC0754824A6DFB7CDDDD201925
-727EBB337D7D89DC70BCBF9D38DD6507217B13C1FE3E7E0D6E75251BAAE80933
-BB875CBC8D94BD6ECB76B9F9A4EA0F8098FE2D8CA9C8F61CF1863ACA4DB832CD
-3340B70DDE8B43E7C49BC6AD929145285196A543DC5E671F103B2BD423ACFFF8
-4D097775B8DA11F54078B2E18A9200B7378E3E6D4EAA56DEEC5DEA7098B7ACD0
-0628F4636AAFD827251BCE95C6B6471D7554A04A0C4D14E2CAE6A7F7144315E0
-B1D69E77B1786D613730BC66D7CBC12E33B29CD60172450C5D6AFF22B9281194
-651D22D0F29260DA3FCE15832564D6B854D8AB3180519A2DD2261075AD36D5C5
-04BE31D1456E55ABC4DAACDB8E8EBC88CD7C3C36F7B7A9FF2FF6D5314F00C582
-E7E29CD28630E9EA6D2DB60E035B62763B3A15F51978E89417404465D1292727
-F0F435AD60FB9BE47D5AA83396DB84940ACFC96EE30B8C3E259F0C4D34C511D1
-DE3504B5AAF2A3AECF79009A70B5C5B35407261E2F64153293D308381AD88CC9
-0D9A3AB4AF7BC6DF74FF48522999F8FE4CDCA13DF731C04B34D700883CF98969
-7B9A64E4EB1C2B14880366ECA8568274D13D37CB8215C2A22D7142076507BC7D
-A965B765520EFB0090D6D031B4C1E8E35CC0E97F03F5E501A3595F45D983BD42
-848E92FCE8D8670DDBD9B121FD33825F517AB8063B982B2A380A1E4D4B580836
-2EC50AB1C9AED5962E9404DBDD252BBAC820C0146282F538D47035F83F1D5F47
-48179848DEBC948CEB15927EBF124BEF54141FCA877E8044EBA5C713A2FB0D97
-C8DE7F1419A5973FB8299A963BE9C0E439934E18E02FF30A681E34CDFA4728C2
-5690C8BFEACF81FAE1696C205243E85244030CC02CAB594D9AB198DB46200013
-73AEB2D30429653CAAF846DBFCCCE73FDA8B70B35ACBFA1C5971DDE511AC1DF2
-AB4D4A31087E6FC88DCBC9DD5EEE1C21CBB7D7C5FE5ABF68EF83C63A8232ADD8
-180363A9FA5E74F331C133B9576669559B7F6B39C1734E0931599438A791FFF9
-430F4C5B045B3215BE79689853CA974DDE34545F593C561DF4A34B69FAA6993C
-FC99D7AB11F984BA40EB82A581A86510D771AD3CE23B67AD943BD275DFA09AEB
-0C24CEAAC75364CDF09D91FA419F310A1FAB424470A9FDCFB95472BE2C9E590B
-395CC2F302D82397040FB86F6EA20E3227F979DB88A8E1713774364F2FEE94D4
-7025C70BDD1497EE5B7528888358AA4B0A777015F52973EF0D681188E4146FD0
-A06E8149B81DBB59CB4AEFC34FA7CEE45A457B1943CC9D1D69F6B4A707BE5EAA
-1629B3D404B3575AD4CE665C9B55D05F07F61EE68747A5E53AC6952E94337FBB
-DC622131801F4D4B292B4D93B03E8C6F235FB20C9CFF0FFA67D1CB58CB8D353F
-B529B582681BC6C21027AB99C9B522AAC0BA376E9341E64351FA8F32FBF9B38A
-C387F667F8241A4381D5CD5714363571AE05C783E7610F5793665AA0121E25F0
-13A5B2047CF7F72FD33794DD6834BCEE0CFF83C20A75A805A6AA9C2691B0DB91
-7F0E86A0FD4F4952B20A8863F596830205E6D4F4DAE31C1D7465135E7C5993E6
-28139A862AB456C1CC3B64529EDFC5BA7144BA9F1436D1E39BE55966BFA4A2E0
-8A3162C6499F69686ABB6671CCEB0093DE4CDAAEB57E46CF10F56601B2B8BF39
-B086D7A38F0AF806ADE2382D6EECF73213D2F065BDBA4E1217CAC791F004D8B7
-C4FB60A123D28A1C105350C02733EFCB9851B8AEB2EE81B83BAFB6FEF159C015
-6501CFC0B5424FBFD8378C0409857F3B68C635DA955039D6584B9E0DB24D4A34
-D63CC58884E5C0D69BF24A4127BB5A9A0E7EE97AABF485E98E41D76954A0F3FD
-DF3E46548711C138876CDA456B52621D08499FA2DD6B4EF6B22737A8ABFAADFC
-5A2A8B432B58F935F3559F2D66EB7CBC9C9C6D809878648BFB4074ACA8DFD108
-38E893C17A78D6667E1FE8F53EB6AC52415066E547456DB2C507C9BEE07B78FD
-6EB3AD568B57FBB4ECB312971344B65E52BF1185364F7780C933ADADEAF3CA25
-8F4116225BA14EDDDDCB83615C574286869C756F46AB827A050763CECC9AA179
-598A2C78515A6F57C75F2A753EA80D24CC4063334F5FEC47100932EB937E09EA
-65B7DD659A92BDC3B2A1BBE7C62DE56605D30F726380D054D339D09E47E7D2FE
-3C89FB0AFB847E8EBE3C9C1FA2810A75E883FF3FC2F30893F8EE00A7B85627FC
-2C3B82E15DCD7A692BBDB3FBF875620753EB8F304F893312AC7AC15A0CC3A554
-A30AEB5A9C3F43FBA645FA107A24B779F2D76DB46718E8FA113B090E7AC59D64
-F4E665C2807224001DE73FF9AAC2F020F446D481F6BB9DDFDD73EF16CF84703F
-340A0C3121BD149AF43A5F96225D5762152C9EF4B2A72F45489369FC17E9DABE
-C41F435F2A8A53406CA440E68F4ED87E59373BBF72B0700454BEFD291E44C69A
-A0F6EB04B28C825F05EFB126B974333AAFA0FEA664026B39A3DCFCBF792BC687
-D42A2EAEBAEE23247196B10A900F04CE766F889228920087B926C229D850582E
-1F5F1E0FB2131D71F446076D392745689C490D1DD85FCCE060066BB610227387
-ADFF65354C885E0FDFBDA9B5D591EDC9F21855515680DD82770FECD89D96D708
-AE59B5254221102BE9BC15E87249304E2CED7965663D346B9F21A0E949C59275
-8EC45AA17262314359793E7DB1867AB37E4E2477D2D9AC4EB5E518102AE6453A
-38BFE32657EB0584259A2A6E06E3A926CC731ED087AF76CB47C5B825536D4DA0
-9424A09333DB6CC3401A341A43E54421B7BB368A6306621CBBD09459AA2665DE
-C19E7649A73FF296D1953722F77095F99165730E6874EB72383B9FB19A053813
-E194E3FF6CEFDA95C4848DAFB27CF40895B6BB6D308027F5385EB7C3D6606B6B
-F177459318E5BA6568E57E90AF3CC94566F46BAC47E709B707AF6E17628F53C8
-99B98466394DE81F07F3891118747F21AA985BF68C729AD938D5262E8B08C88F
-4712099E776DDD1DE625836D4F4022A5FF7C73BB6F3C2DDC03374E9364E8E0B8
-A43686D57D51A1143180C8F1AE383E8AA4C6441F1A286BF0D0B6F1BEE35CA73C
-C79DBA2F06D1FB9AFC34A08C0FAEB61C333FE041EBF64B371629302DF5B608B8
-FC68DA214BA37517CC3B038F730E94EC633FD882AC6189B514051BF35C0201C0
-043235B44BFE40D0158F531BC18A87826AEE4909A7F8D8167F280B35DB84D266
-D3369BD1BFD1805E104438BE655631035147FB15E14A75597D7D0CCB0442BA82
-A789EAD3B7E1D071ADD3EBF5B68135E99E016C64D29E907FD75ECA65C371B560
-32E8B63A16813B4BFC81B988291F9412E8795A91842C3074E053532EC177EADF
-FB2AEDCC91169764534045E81EA7B7C5717A48FC7297A67933C17D95CBC0DF6E
-1CA45DB8C6BAFFD25D95E6E73F8083F8C4FAD2FB0AAD37C10971BBEFC7C11887
-0F7807B6CD13F8F7F20B415712161F0DA401878A15E65155E2910544838A6E36
-4EC2F9715A8107D22CB41514D04EDEA6B4BC382F9DE9780AE08AAC35ABF77EF1
-AD7E113C532954F4B5CB0185C31ED30E37F857D3E114F946C2E7BE646A3A8E4A
-6E5C939A56D928F3F7660B158201366A0E495648A41E9EAEA5F3A9CD26B2BF46
-7A1185D3E0AA9D2175ABB2E37BDB8FFA082398DA6BA7172FF76DAEF3C31852D4
-E0A6DAE06F0F7D5780D64926D52D080316016B2AE7A66A3D39C8867CB36C20B3
-8BEC0FF590AA4BE2BEF3AE99BB0E9FB94BFF01867E9BF085195D75F68A359D74
-F4E0417BB21D6C69AC9929387C72B8800D143AEA0B8B67729E21FEFDCA7FEBE3
-1F1C418294E29D4B75203B3F0F39CF6A26E9D197EE881E7B85DD321B0EC23A91
-26338D88232AA69F8F710B5DF44DC50199A303B8C36131EF9D088888C0DB4A39
-740FF0596E3024961754BD50B0532B9FEDD302CC882DFA28C92AF330E6D6E2B1
-388132661C84D385413489D7BD7631DC14AF5432E8A59DC1E2BC43B37E35D319
-DA511EE03232D0AB672FEE33330492AE3B03E836035190BDC4A618627FF71B44
-E6387F0FC451FA841548B0C4BF6042ED348E9A611D035CD16215A86D6ED23C4B
-2EBAE80B3622783447C001EFE40B8AB189C456269018F0BEFB2660C4DBC586B1
-1977C50A287416A3160B7E8D243F1DB3402318FF6619FAC24AAE28B8F9AE3162
-491F9D69A3E22C25B3B6030B3656E3F4B844D30361481D9C5219C42BBD96F761
-E51C92162D75111A34637D15710B8DEAA80740F3A6DA0B3C612BF836875D08C9
-C4B1BF67D10A597AD6549B48D521CF99313613E6CA5B9D0602943F08B598EFC7
-83A96385EF4C04884BDB737DEFC78154AA6EBE5848811628D37E37DD5407C636
-58980E8F07F486E524EEFD4A6B79C63B7E60D262D5170AFD75F6AC87B1B4CED9
-E4060DAC7AAEB55454E1804C990ECC55108CE446A95A6256AB35C5922A1E9AC9
-D16ACB8C8552BF36D5821197004A306693CD9906AC1B361BD176A1394BF2C1FA
-F9B755333DDFE3A8107CFE63FE505A775CA41CC9C8DE721BCD0B86D6E0AD6B93
-59110A1A40B88AE628312430477E42A22D1E822AA8AADC7E104934F7A708A4E2
-99FD4EFDC0A31759B05D8804E131CF80506D2D6224F7ACBD9803E0C1989CED19
-8ED2419ADFEB05A4ED2851431FC350D089DA843595A23E6E4F974DC04773455C
-6993ABD558E6E751437C1C4A5C3BCDD318E6F218253A90B9E0623B4A2902CCB8
-24ADF4AB8E9FBCDD826C6A8C0F0E995494DF9438CD2EB554BC43F4DAE80D45E6
-6F3A471FCD37B340862AD3B65B4A2DFE543C28769516BDC0792B0F73984EB858
-BEC8DC6059D12979245A5983C3119841F85A058C2A1A3E66C66316F7DF4600DB
-345196611661C0B7AD1A8317BDFCD327D42FA4317A0FDFEDB861C8B36C56E418
-62F3A95251D309A9EF43824B1E3A8BF2A5830BFD6205B16BA2C833D7FAC1653B
-1A8F23F6FCD780D50C19EE002E6DB7B2E94267D83C4963FCDB1AEAFD8DE8D57B
-0E11CB7724AEC60242D3607FCF18F8524396590854B6C96E27CB8FA9E50A754F
-7BAD95EED4BBFFB1D5A412CE4B76138FEFB99C2C5F6DA6EF3EE908BA3ADF0F18
-3C22E90774D466C85D2F36221803332468D45D31BAEFDB6D0B6A64E5A5CBFFA2
-13D8E884EDE31A20E8BE35C833CFC67DD7A3AE1DE7FF0F5169097914D4A55BB0
-8B732FCF80B44464BAE048281EB960C47B395DE70131CFF8A58D54E855C078A1
-C31B12048EA012B369D6F478797DA24705F6CF9F7028563E74C3F80B14E2DEE5
-F4EF40DE6161D2F506CA4402539E180B971C400C5EC7A3F5F5713A0DE8E6AAB6
-E707212472ABC55684E5F8176D929C58729E2EB4D85D22723D53FB13FA6F6334
-999E488CED018D7925B48FB3EAA330A828E78ED52DB395FB1A31CD16E26B0FE5
-2EF2B161DF9C7B95649C4441BDB28A12A8AA385DE290AF939B4168C19D94F1F8
-FF40819170D0180BE7AECA8998018F3654C86323BC592C33103B749A559AD67A
-02D6E73400B78D0BD275B69A2185EFB4FF6B15A1329DEE6334C12EEDD3E36DD8
-E84092750C4595B36A2386608838372B005ADF161DAD978F29DF270F3D81D1A2
-50D7F39B1887BE926AF1802FFAC2F3C4382A4D8F55887AB95617809C734EBEDB
-17D921C3C69D14FF8A24B09C0F2B2BCFBEED4EEAE6BC662D96BE4FEDC927EAFA
-AA123213440F7A4B6C45F57691A3FE9DF976B15617606098861F6A6F9B8CCFBC
-567618F1A49E2DF5032D96512F049B91950136E258560362EDB40DF4BA5F4B40
-6350F5F70F441EFDF5CD6AB5AADCE9B1FD4BB2B109FFE63A68245BED5C205010
-5BB7F8460C2862854EB6DB95685FDF53661AE742058B1C81C14FE1770EB2BF4E
-16CA3F28F5208719958F5021F4324902C28AFBDDA156E28D9676825A5AF759C7
-AA20357C1E594184D7734A521EA8229637999A0CD387F6B2D4DE0F838DFB7B63
-F7640C77AE71EF2AC68A9D435812DAC5E31E81D866A03A578108BBA017951E29
-147B14D6A15F97C2C1EC0C51C359D4D62B80E8BC4B831CDD2E971BE5464C6298
-A8E28A3AE6BBA6B44A971DCF1F2CDB26DB1B6875F0A65B8CC914EC5CB6772E00
-920C95FB2AF9EF5DC95518B68339005F7DA707B9C1B44F9DB941F4D22E7055E0
-66579322F36A9A5E506FE0E178F928A6AF515652484E7070231D098843263456
-92B40CE5BD3CE28896313F1EA73AE99A6380603F35B08481E0FF0A2FC8F1AF0A
-0C0D3FDFBDA13A7F364D29A6B500D729A994CB7622EFA4BF93FFF6A3A49B6EC6
-2B1986723F123BAEDC7269F093189DCA4CAD75F1584D080BA385B3B84980FD6D
-D139AEE505AFF39E47F1DC16EBA2C20CD1EEDB72BB1A5FD81ECA56B113573B8C
-CF1C233A7EA26D3074CB4BF2BAC56DF249A39D6F7EF62A07489350BCF946F993
-31723CD3FF4EA41A3D474CEDE8227D2AB1A2C70D15A16596ED637D3C6D5D328B
-83AFDD4C2319CD3341247452C659DFD147C58756CFA974359410D2AF4D84EB72
-40B46C72CE1F2EE4D48C5D4162D8A0954CA02EF01DEC11D5F7C11E0D2C4E2AEE
-6C9C8998ADBCE40C4F86AACAD030D0591CCC819646C5DEF7165F8FA8BB9C4D6E
-50670E876294FBB05C6054843AE00D83D0AE8E85F916F81DA3B1489098D022F6
-3595BD55EF088DAF561D8E81D4912BC7ABD4192C3AF7C14F12BD4C90337DC6CC
-6CDF56649DC35B5DF1DA03195194B2BFE29A63A3CF1BE257D70323AFF31E1CD7
-EF31B6E0594C704C3E36D4D4A2A1587A093E9D6CD45632874EDCDFE0E5343698
-48AAF368C4C0821381768C26F41354C9E05C28EC8B5627F672CC79E876194066
-6B5A1B86504D027885CD70CA61EB07C837FE4A41B8C4112D51A8FE4E2D3835F3
-F19E11571B182DEB1931FB96C14C6CB9449DC4A7BBD17E2C1AA79A94A1CFE0A4
-020516897B83202C2295491A180E9744252470579227AD3279D51454EB711153
-347615DD371E5CB16152896E9EF69603B6D3355D265D97FA4CDCD9E19833B5AC
-1477E254CD7BDCE5F6006FC0FB94D3F809B7839D2FF1691535785A5241E32351
-E5DE28B0235DB62196BF757E5AFAFDE0432095956CBD088834ACC57123850ED6
-5350CCD9C76843807150DD100482193E9BCCF6BC1906A79120F9E19D563A5C17
-E6C5C80259E5CEC4BAFAE34096DE767B859B57F10326CA03D4D6A0B121284F41
-CB4F7E15C670CF08F683580122BA4D4396A285AF89D4B49EDB790BD897BA573B
-8381F7FC12A1600BD212C6BF918B5ACDEF8E045EA33FE9A83E70B5BB2F7DB994
-8E00F074613501CB3830C47C0624C78BF950518640B7E075D14A8EC09586550E
-9840D9801D99BC71B7AFCD801BF2CA58EB2FE99F06F26E3B7879BDF63251CCC7
-4319D6B7587CA8EB562E7EDEB4DA2F607ED4A6117CD9ED9413008516535C3A76
-BB2AA38D2189FD82192E1A664D1E419DFA4D0BCDE910EB33D5F942315F2EB293
-6F5664FA669FE2500C18D5B7407B16D3131EDF0D72B9DCEB0DF9C13DE15A0451
-FB409377A46FA52819FF3A5337D724B6CED8DF75B0CA01F031B97CA8B64BEDA8
-5D75E868BCDC5427F071E70BF896606145F28197FF96C1D854050856BC523200
-0B4E54A0A8CA0A579A1B3302FB90800418A5F6A9CC79647433C25F2C408EC28F
-F817584629D418E16FCF3AF74385A6C487E5AB1CABA27CCE54CAE816A35E9F3C
-9DCE3E797094A4C7BE1B37AB410A7B1A58F986213B0A8354597AB0AC5EAD407E
-78F9D6AAD4A84977A359B801CD29A86DCA59F4E6EE94DAC8C31E01C576A47FF1
-7A3F57BE65AE87E343BEE0CDA179A11A2B59817AC637EF3906816168DC3650AD
-6F79260A6C883F089897DE6AF52D180730438570BC9041ABBBEED7D19658521F
-D0DB9934981B9D7D015178E4E10FE0C1AA8F1DA41A9741E08D7267A1BEDE60C6
-959503F156F1CB72A4EA0EDAC64F641563A440B1E9C09F070BB9EC46F59B36C1
-B6AE65325E8594DAC17FE8F9C7A9E9E59CDC6B270673F345E7DF8EDC27094B99
-44D756DD2981FDC96D543A5C9B30E2134F8A74B0FEF696B244F2C2132174BDC0
-3843336CC8BA16DCC2487A7852D5E920BF0B7577E8ED89958339AFEABF855ED7
-196A3801C4C506049188A5656C07B22A673745A53BC66C0937DAF226E62E7F21
-7B11EDF439D5CADF69C97BB9A08832F633DE01CCC71FA541B368DF808808D119
-A2DB3DD6A836BA2A0E1AA7623ED12C8A768431B258AB1D81DC972C5980B198C1
-A41BD3BABA2D019BFDEF42346E728B743C47617599A9EFCCB93CE78C7F0B5F9E
-8B04A31C0EBF5D67E5501E452A7DA687D1D48A62D3F8DB2C59A50F8DCAEC6EF3
-B590A769F86B50E723AF5BC0864E25246AE385D44166027A5FC980A69CF1AE99
-242B18E3F09AD57DFE1F058AA470B9055F13586A968C1F1C88230321620DB180
-09791F2242650F1F9D73A3BDA2EF554013CB2E62DAFED4635595CB5C161FEB16
-BEE47754230FCB58E0F3781E35D54AADEFAFDFD4AD4E0891B6E50502F1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (cs-refcard.dvi)
-@start /Fa 197[23 58[{}1 83.022 /CMMI10 rf /Fb 242[66
-13[{}1 58.1154 /CMSY7 rf /Fc 134[35 1[47 35 37 26 26
-26 1[37 33 37 55 19 35 1[19 37 33 21 30 37 30 37 33 11[49
-1[37 2[45 1[49 60 3[24 1[51 43 45 1[47 46 49 9[33 33
-33 1[33 33 33 33 1[19 22 19 44[{}44 58.1154 /csr7 rf
-/Fd 133[34 40 3[45 28 34 35 1[42 42 47 68 21 38 1[25
-1[38 1[38 42 38 38 42 50[25 30 45[{}21 83.022 /csti10
-rf /Fe 2[50 3[53 39 10[27 44 2[44 42 6[46 34[42 4[38
-62[42 50 2[50 53 37 38 39 1[53 48 53 80 27 50 29 27 53
-1[29 44 53 42 53 46 85[56 11[{}33 83.022 /csbx10 rf /Ff
-130[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-3[44 2[44 44 44 1[44 2[44 44 4[44 44 44 44 44 44 44 44
-44 44 1[44 1[44 4[44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 1[44 44 44 44 44 33[{}74 83.022 /cstt10 rf /Fg
-2[73 3[76 57 10[38 63 2[63 61 6[67 34[61 4[54 62[61 73
-2[73 76 53 54 57 1[76 69 76 115 38 73 42 38 76 69 42
-63 76 61 76 67 6[84 3[104 1[96 76 103 1[94 103 1[131
-83 108 71 52 2[87 90 2[98 54[80 11[{}49 119.552 /csbx10
-rf /Fh 42 42 44 2[46 46 33 4[42 5[23 37 2[37 37 6[42
-6[62 27[37 4[33 61[42 37 44 44 1[44 46 32 33 33 44 46
-42 46 69 23 44 25 23 46 42 25 37 46 37 46 42 8[62 1[62
-62 1[46 2[57 1[62 1[52 1[43 30 1[65 1[57 63 9[23 42 2[42
-42 42 42 42 42 2[23 28 23 2[32 32 27[46 48 11[{}68 83.022
-/csr10 rf /Fi 18[46 4[73 108[82 6[64 65 68 3[92 137 1[87
-4[50 76 1[73 1[80 11[127 2[124 3[129 6[130 1[108 69[{}18
-143.462 /csbx10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 50 -320 a Fi(GNU)55 b(Emacs)i({)e
-(Referen\350n\355)f(k)-5 b(arta)953 -185 y Fh(\(pro)27
-b(v)n(erzi)g(22\))0 56 y Fg(Spu\271t\354n\355)48 b(Emacsu)0
-251 y Fh(Pro)26 b(vstup)i(do)f(GNU)i(Emacsu)d(22)h(napi\271te)g(jeho)h
-(jm\351no:)g Ff(emacs)0 384 y Fh(Jak)f(na\350\355tat)g(a)g(edito)n(v)n
-(at)g(soub)r(ory)f(se)h(dozv\355te)h(n\355\276e)f(v)h(o)r(dd\355le)g
-(Soub)r(ory)-7 b(.)0 612 y Fg(Opu\271t\354n\355)48 b(Emacsu)0
-807 y Fh(p)r(ozasta)n(v)n(en\355)26 b(Emacsu)g(\(ik)n(onizace)h(v)g
-(X11\))405 b Ff(C-z)0 907 y Fh(de\014nitivn\355)28 b(o)r(dc)n(ho)r(d)g
-(z)f(Emacsu)769 b Ff(C-x)42 b(C-c)0 1135 y Fg(Soub)t(ory)0
-1331 y Fe(na\350\355st)28 b Fh(soub)r(oru)f(do)g(Emacsu)813
-b Ff(C-x)42 b(C-f)0 1430 y Fe(ulo\276it)27 b Fh(soub)r(or)g(zp)r(\354t)
-h(na)f(disk)825 b Ff(C-x)42 b(C-s)0 1530 y Fh(ulo\276it)28
-b Fe(v\271ec)m(hn)m(y)h Fh(soub)r(ory)928 b Ff(C-x)42
-b(s)0 1630 y Fe(vlo\276it)27 b Fh(obsah)n(u)g(jin\351ho)h(soub)r(oru)e
-(do)i(bu\013eru)327 b Ff(C-x)42 b(i)0 1729 y Fh(zam\354nit)28
-b(ten)n(to)f(soub)r(or)g(jin)n(\375m)h(soub)r(orem)418
-b Ff(C-x)42 b(C-v)0 1829 y Fh(zapsat)27 b(bu\013er)h(do)f(zadan\351ho)f
-(soub)r(oru)534 b Ff(C-x)42 b(C-w)0 1928 y Fh(vlo\276it)27
-b(do)h(syst\351m)n(u)f(spr\341)n(vy)f(v)n(erz\355)699
-b Ff(C-x)42 b(C-q)0 2167 y Fg(P)l(ou\276\355v)l(\341n\355)47
-b(n\341p)t(o)l(v)l(\354dy)0 2362 y Fh(Syst\351m)40 b(n\341p)r(o)n(v)n
-(\354dy)e(je)i(snadn)n(\375)-7 b(.)38 b(Stiskn\354te)i
-Ff(C-h)f Fh(\(neb)r(o)g Ff(F1)p Fh(\))g(a)g(sledujte)0
-2462 y(instruk)n(ce.)27 b(\332v)n(o)r(dn\355)g Fe(tutori\341l)h
-Fh(lze)f(spustit)i(p)r(omo)r(c\355)e Ff(C-h)42 b(t)p
-Fh(.)0 2594 y(o)r(dstranit)27 b(okno)g(s)g(n\341p)r(o)n(v)n(\354dou)792
-b Ff(C-x)42 b(1)0 2694 y Fh(rolo)n(v)n(at)25 b(okno)i(s)g(n\341p)r(o)n
-(v)n(\354dou)871 b Ff(C-M-v)0 2827 y Fh(aprop)r(os:)26
-b(p\370\355k)n(azy)g(o)r(dp)r(o)n(v\355da)5 b(j\355c\355)27
-b(\370et\354zci)463 b Ff(C-h)42 b(a)0 2926 y Fh(zobrazit)26
-b(funk)n(ci)i(dan\351)g(kl\341)n(v)n(esy)773 b Ff(C-h)42
-b(c)0 3026 y Fh(zobrazit)26 b(p)r(opis)i(funk)n(ce)1029
-b Ff(C-h)42 b(f)0 3125 y Fh(zobrazit)26 b(informace)h(o)g
-(aktu\341ln\355c)n(h)g(m\363)r(dec)n(h)349 b Ff(C-h)42
-b(m)0 3354 y Fg(Opra)l(vy)j(c)l(h)l(yb)0 3549 y Fe(p\370eru\271it)27
-b Fh(zad\341)n(v)n(an)n(\375)f(neb)r(o)h(vyk)n(on\341)n(v)n(an)n(\375)d
-(p\370\355k)n(az)203 b Ff(C-g)0 3649 y Fe(obno)m(vit)28
-b Fh(soub)r(or)e(ztracen)n(\375)g(p\341dem)i(syst\351m)n(u)123
-b Ff(M-x)42 b(recover-file)0 3748 y Fe(zru\271it)28 b
-Fh(nec)n(h)n(t\354nou)f(zm\354n)n(u)911 b Ff(C-x)42 b(u)i
-Fd(n.)f Ff(C-_)0 3848 y Fh(vr\341tit)27 b(p)r(\371v)n(o)r(dn\355)h
-(obsah)f(bu\013eru)578 b Ff(M-x)42 b(revert-buffer)0
-3948 y Fh(p\370ekreslit)27 b(\376rozpadlou\377)e(obrazo)n(vku)592
-b Ff(C-l)0 4176 y Fg(P\370\355r\371stk)l(o)l(v)l(\351)46
-b(vyhled\341)l(v)l(\341n\355)0 4371 y Fh(vyhledat)27
-b(dop\370edu)1163 b Ff(C-s)0 4471 y Fh(vyhledat)27 b(dozadu)1200
-b Ff(C-r)0 4571 y Fh(vyhledat)27 b(regul\341rn\355)f(v\375raz)908
-b Ff(C-M-s)0 4670 y Fh(vyhledat)27 b(regul\341rn\355)f(v\375raz)h
-(dozadu)622 b Ff(C-M-r)0 4803 y Fh(p\370edc)n(hoz\355)27
-b(vyhled\341)n(v)n(an)n(\375)e(\370et\354zec)701 b Ff(M-p)0
-4902 y Fh(n\341sleduj\355c\355)28 b(no)n(v)n(\354j\271\355)e
-(vyhled\341)n(v)n(an)n(\375)g(\370et\354zec)391 b Ff(M-n)0
-5002 y Fh(uk)n(on\350it)27 b(inkremen)n(t\341ln\355)g(vyhled\341)n(v)n
-(\341n\355)546 b Ff(RET)0 5102 y Fh(zru\271it)27 b(efekt)h(p)r
-(osledn\355ho)g(zadan\351ho)e(znaku)373 b Ff(DEL)0 5201
-y Fh(p\370eru\271it)27 b(prob\355ha)5 b(j\355c\355)27
-b(vyhled\341)n(v)n(\341n\355)639 b Ff(C-g)0 5334 y Fh(Dal\271\355)39
-b Ff(C-s)g Fh(neb)r(o)h Ff(C-r)e Fh(zopakuje)h(vyhled\341n\355)g(v)h
-(dan\351m)f(sm\354ru.)g(P)n(okud)0 5433 y(Emacs)27 b(vyhled\341)n(v)n
-(\341,)e Ff(C-g)i Fh(zru\271\355)g(p)r(ouze)g(nenalezenou)g(\350\341st)
-g(\370et\354zce.)265 5567 y Fc(c)247 5569 y Fb(\015)22
-b Fc(2007)h(F)-5 b(ree)21 b(Soft)n(w)n(are)h(F)-5 b(oundation,)20
-b(Inc.)h(P)n(ermissions)h(on)g(bac)n(k.)g(v2.2)3858 5663
-y Fh(1)p eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 0 -337 a Fg(P)l(oh)l(yb)0 -130
-y Fe(p)s(osun)31 b(o)1268 b(dozadu)84 b(dop\370edu)0
--30 y Fh(znak)1426 b Ff(C-b)247 b(C-f)0 69 y Fh(slo)n(v)n(o)1415
-b Ff(M-b)247 b(M-f)0 169 y Fh(\370\341dek)1393 b Ff(C-p)247
-b(C-n)0 268 y Fh(na)27 b(za\350\341tek)g(neb)r(o)g(k)n(onec)g
-(\370\341dku)540 b Ff(C-a)247 b(C-e)0 368 y Fh(v)n(\354tu)1438
-b Ff(M-a)247 b(M-e)0 468 y Fh(o)r(dsta)n(v)n(ec)1284
-b Ff(M-{)247 b(M-})0 567 y Fh(str\341nku)1319 b Ff(C-x)43
-b([)160 b(C-x)42 b(])0 667 y Fh(sym)n(b)r(olic)n(k\375)26
-b(v\375raz)966 b Ff(C-M-b)159 b(C-M-f)0 767 y Fh(funk)n(ci)1376
-b Ff(C-M-a)159 b(C-M-e)0 866 y Fh(na)27 b(za\350\341tek)g(neb)r(o)g(k)n
-(onec)g(bu\013eru)495 b Ff(M-<)247 b(M->)0 1002 y Fh(rolo)n(v)n(at)25
-b(na)j(dal\271\355)f(obrazo)n(vku)837 b Ff(C-v)0 1101
-y Fh(rolo)n(v)n(at)25 b(na)j(p\370edc)n(hoz\355)e(obrazo)n(vku)660
-b Ff(M-v)0 1201 y Fh(rolo)n(v)n(at)25 b(vlev)n(o)1333
-b Ff(C-x)42 b(<)0 1300 y Fh(rolo)n(v)n(at)25 b(vpra)n(v)n(o)1274
-b Ff(C-x)42 b(>)0 1400 y Fh(aktu\341ln\355)27 b(\370\341dek)g(do)g
-(st\370edu)g(obrazo)n(vky)505 b Ff(C-u)42 b(C-l)0 1643
-y Fg(Ru\271en\355)47 b(a)f(maz\341n\355)0 1849 y Fe(ru\271en)m(\375)32
-b(ob)5 b(jekt)927 b(dozadu)180 b(dop\370edu)0 1949 y
-Fh(znak)27 b(\(maz\341n\355,)g(ne)h(ru\271en\355\))601
-b Ff(DEL)343 b(C-d)0 2049 y Fh(slo)n(v)n(o)1319 b Ff(M-DEL)255
-b(M-d)0 2148 y Fh(\370\341dek)27 b(\(do)g(k)n(once\))887
-b Ff(M-0)42 b(C-k)169 b(C-k)0 2248 y Fh(v)n(\354ta)1346
-b Ff(C-x)42 b(DEL)169 b(M-k)0 2348 y Fh(sym)n(b)r(olic)n(k\375)26
-b(v\375raz)870 b Ff(M--)42 b(C-M-k)81 b(C-M-k)0 2483
-y Fh(zru\271it)27 b Fe(oblast)1320 b Ff(C-w)0 2583 y
-Fh(zk)n(op\355ro)n(v)n(at)25 b(oblast)i(do)g(sc)n(hr\341nky)713
-b Ff(M-w)0 2682 y Fh(zru\271it)27 b(a\276)g(p)r(o)h(nejbli\276\271\355)
-g(v\375skyt)f(znaku)g Fd(znak)353 b Ff(M-z)42 b Fd(znak)0
-2818 y Fh(vho)r(dit)28 b(nap)r(osledy)f(zru\271en)n(\375)f(ob)5
-b(jekt)618 b Ff(C-y)0 2917 y Fh(nahradit)27 b(vhozen)n(\375)f(ob)5
-b(jekt)28 b(p\370edc)n(hoz\355m)e(zru\271en)n(\375m)101
-b Ff(M-y)0 3170 y Fg(Ozna\350o)l(v)l(\341n\355)0 3377
-y Fh(vlo\276it)27 b(zna\350)n(ku)1322 b Ff(C-@)42 b Fd(n.)i
-Ff(C-SPC)0 3476 y Fh(proho)r(dit)27 b(kurzor)f(a)h(zna\350)n(ku)881
-b Ff(C-x)42 b(C-x)0 3612 y Fh(ozna\350it)27 b(zadan)n(\375)f(p)r(o)r
-(\350et)i Fe(slo)m(v)847 b Ff(M-@)0 3711 y Fh(ozna\350it)27
-b Fe(o)s(dsta)m(v)m(ec)1159 b Ff(M-h)0 3811 y Fh(ozna\350it)27
-b Fe(str\341nku)1198 b Ff(C-x)42 b(C-p)0 3911 y Fh(ozna\350it)27
-b Fe(sym)m(b)s(olic)m(k\375)32 b(v\375raz)793 b Ff(C-M-@)0
-4010 y Fh(ozna\350it)27 b Fe(funk)m(ci)1263 b Ff(C-M-h)0
-4110 y Fh(ozna\350it)27 b(cel\375)g Fe(bu\013er)1101
-b Ff(C-x)42 b(h)0 4353 y Fg(In)l(teraktivn\355)47 b(nahrazo)l(v)l
-(\341n\355)0 4559 y Fh(in)n(teraktivn\354)27 b(nahradit)g(texto)n
-(v\375)g(\370et\354zec)449 b Ff(M-\045)0 4659 y Fh(s)27
-b(u\276it\355m)i(regul\341rn\355ho)c(v\375razu)351 b
-Ff(M-x)42 b(query-replace-reg)o(ex)o(p)0 4794 y Fh(Platn\351)27
-b(o)r(dp)r(o)n(v)n(\354di)g(v)g(m\363)r(du)h(query-replace)e(jsou)0
-4930 y Fe(z\341m\354n)m(u)32 b(pro)m(v)m(\351st)d Fh(a)e(j\355t)h(na)g
-(dal\271\355)661 b Ff(SPC)0 5029 y Fh(z\341m\354n)n(u)27
-b(pro)n(v)n(\351st)f(a)h(z\371stat)h(na)f(m\355st\354)581
-b Ff(,)0 5129 y Fe(sk)m(o)s(\350it)28 b Fh(na)f(dal\271\355)g(b)r(ez)h
-(pro)n(v)n(eden\355)e(z\341m\354n)n(y)422 b Ff(DEL)0
-5229 y Fh(zam\354nit)28 b(v\271ec)n(hn)n(y)e(zb)n(\375v)n(a)5
-b(j\355c\355)26 b(v\375skyt)n(y)546 b Ff(!)0 5328 y Fe(zp)s(\354t)28
-b Fh(na)f(p\370edc)n(hoz\355)g(v\375skyt)f(\370et\354zce)589
-b Ff(^)0 5428 y Fe(k)m(onec)28 b Fh(nahrazo)n(v)n(\341n\355)1099
-b Ff(RET)0 5528 y Fh(rekurzivn\355)27 b(editace)g(\(uk)n(on\350\355)g
-(se)g Ff(C-M-c)p Fh(\))482 b Ff(C-r)3858 5663 y Fh(2)p
-eop end
-%%Page: 3 3
-TeXDict begin 3 2 bop 0 -337 a Fg(Okna)0 -163 y Fh(Jestli\276e)19
-b(jsou)g(zobrazen)n(y)f(dv)n(a)h(p\370\355k)n(azy)-7
-b(,)18 b(pak)h(ten)h(druh)n(\375)f(plat\355)g(pro)g(X)h(okno.)0
--35 y(zru\271it)27 b(v\271ec)n(hna)g(ostatn\355)g(okna)808
-b Ff(C-x)42 b(1)0 92 y Fh(rozd\354lit)27 b(okno)g(na)g(horn\355)g(a)g
-(doln\355)455 b Ff(C-x)42 b(2)257 b(C-x)42 b(5)h(2)0
-191 y Fh(zru\271it)27 b(toto)h(okno)956 b Ff(C-x)42 b(0)257
-b(C-x)42 b(5)h(0)0 319 y Fh(rozd\354lit)27 b(okno)g(na)g(lev)n(\351)g
-(a)g(pra)n(v)n(\351)751 b Ff(C-x)42 b(3)0 446 y Fh(rolo)n(v)n(at)25
-b(jin\351)j(okno)1188 b Ff(C-M-v)0 573 y Fh(p\370epnout)27
-b(kurzor)f(do)i(jin\351ho)g(okna)426 b Ff(C-x)42 b(o)257
-b(C-x)42 b(5)h(o)0 673 y Fh(vybrat)27 b(bu\013er)h(v)f(jin\351m)h
-(okn\354)605 b Ff(C-x)42 b(4)h(b)170 b(C-x)42 b(5)h(b)0
-772 y Fh(zobrazit)26 b(bu\013er)i(v)g(jin\351m)g(okn\354)554
-b Ff(C-x)42 b(4)h(C-o)82 b(C-x)42 b(5)h(C-o)0 872 y Fh(otev\370\355t)27
-b(soub)r(or)g(v)g(jin\351m)h(okn\354)570 b Ff(C-x)42
-b(4)h(f)170 b(C-x)42 b(5)h(f)0 972 y Fh(otev\370\355t)27
-b(soub)r(or)g(jen)h(pro)e(\350ten\355)i(v)g(jin\351m)g(okn\354)83
-b Ff(C-x)42 b(4)h(r)170 b(C-x)42 b(5)h(r)0 1071 y Fh(spustit)28
-b(Dired)g(v)f(jin\351m)i(okn\354)607 b Ff(C-x)42 b(4)h(d)170
-b(C-x)42 b(5)h(d)0 1171 y Fh(na)5 b(j\355t)28 b(tag)f(v)g(jin\351m)h
-(okn\354)767 b Ff(C-x)42 b(4)h(.)170 b(C-x)42 b(5)h(.)0
-1298 y Fh(zv)n(\354t\271it)27 b(okno)1363 b Ff(C-x)42
-b(^)0 1398 y Fh(z\372\276it)28 b(okno)1423 b Ff(C-x)42
-b({)0 1497 y Fh(roz\271\355\370it)26 b(okno)1344 b Ff(C-x)42
-b(})0 1699 y Fg(F)-11 b(orm\341to)l(v)l(\341n\355)0 1874
-y Fh(o)r(dsadit)27 b(aktu\341ln\355)h Fe(\370\341dek)g
-Fh(\(dle)g(m\363)r(du\))518 b Ff(TAB)0 1973 y Fh(o)r(dsadit)27
-b Fe(oblast)h Fh(\(dle)g(m\363)r(du\))827 b Ff(C-M-\\)0
-2073 y Fh(o)r(dsadit)27 b Fe(sym)m(b)s(olic)m(k\375)32
-b(v\375raz)e Fh(\(dle)e(m\363)r(du\))353 b Ff(C-M-q)0
-2173 y Fh(o)r(dsadit)27 b(oblast)g(nap)r(evno)g(o)h Fd(ar)l(gument)34
-b Fh(sloup)r(c\371)214 b Ff(C-x)42 b(TAB)0 2300 y Fh(vlo\276it)27
-b(znak)g(no)n(v)n(\351ho)f(\370\341dku)h(za)g(kurzor)518
-b Ff(C-o)0 2399 y Fh(p)r(osunout)28 b(zb)n(ytek)f(\370\341dku)g(svisle)
-g(dol\371)557 b Ff(C-M-o)0 2499 y Fh(smazat)27 b(pr\341zdn\351)g
-(\370\341dky)f(ok)n(olo)g(kurzoru)471 b Ff(C-x)42 b(C-o)0
-2599 y Fh(sp)r(o)5 b(jit)28 b(\370\341dek)e(s)i(p\370edc)n(hoz\355m)e
-(\(s)i(arg.)e(s)i(n\341sl.\))316 b Ff(M-^)0 2698 y Fh(smazat)27
-b(pr\341zdn\351)g(m\355sto)g(k)n(olem)g(kurzoru)457 b
-Ff(M-\\)0 2798 y Fh(nec)n(hat)27 b(p\370esn\354)g(jedn)n(u)h(mezeru)f
-(k)n(olem)g(kurzoru)243 b Ff(M-SPC)0 2925 y Fh(zalomit)27
-b(o)r(dsta)n(v)n(ec)1194 b Ff(M-q)0 3025 y Fh(nasta)n(vit)27
-b(sloup)r(ec)g(pro)g(zalamo)n(v)n(\341n\355)634 b Ff(C-x)42
-b(f)0 3124 y Fh(nasta)n(vit)27 b(pre\014x,)g(kter\375m)g(za\350\355na)5
-b(j\355)27 b(\370\341dky)423 b Ff(C-x)42 b(.)0 3224 y
-Fh(nasta)n(vit)27 b(fon)n(t)1338 b Ff(M-g)0 3436 y Fg(Zm\354na)46
-b(v)l(elik)l(osti)g(p\355smen)0 3610 y Fh(zm\354nit)28
-b(p\355smena)f(slo)n(v)n(a)f(na)h(v)n(elk)n(\341)698
-b Ff(M-u)0 3710 y Fh(zm\354nit)28 b(p\355smena)f(slo)n(v)n(a)f(na)h
-(mal\341)708 b Ff(M-l)0 3810 y Fh(zm\354nit)28 b(p)r(o)r
-(\350\341te\350n\355)g(p\355smeno)f(slo)n(v)n(a)f(na)h(v)n(elk)n(\351)
-329 b Ff(M-c)0 3937 y Fh(zm\354nit)28 b(p\355smena)f(oblasti)g(na)h(v)n
-(elk)n(\341)635 b Ff(C-x)42 b(C-u)0 4037 y Fh(zm\354nit)28
-b(p\355smena)f(oblasti)g(na)h(mal\341)645 b Ff(C-x)42
-b(C-l)0 4238 y Fg(Minibu\013er)0 4413 y Fh(N\341sleduj\355c\355)28
-b(kl\341)n(v)n(esy)e(jsou)h(platn\351)h(pro)e(minibu\013er.)0
-4540 y(doplnit)i(z)g(nab\355dky)1158 b Ff(TAB)0 4640
-y Fh(doplnit)28 b(do)f(nejbli\276\271\355ho)h(slo)n(v)n(a)810
-b Ff(SPC)0 4739 y Fh(doplnit)28 b(a)f(vyk)n(onat)1153
-b Ff(RET)0 4839 y Fh(zobrazit)26 b(mo\276n\341)h(dopln\354n\355)910
-b Ff(?)0 4938 y Fh(p\370edc)n(hoz\355)27 b(p\370\355k)n(az)f(z)h
-(minibu\013eru)698 b Ff(M-p)0 5038 y Fh(no)n(v)n(\354j\271\355)27
-b(neb)r(o)g(implicitn\355)i(p\370\355k)n(az)d(z)i(minibu\013eru)222
-b Ff(M-n)0 5138 y Fh(vyhledat)27 b(regul\341rn\355)f(v\375raz)h(v)g
-(historii)g(vzad)359 b Ff(M-r)0 5237 y Fh(vyhledat)27
-b(regul\341rn\355)f(v\375raz)h(v)g(historii)g(vp\370ed)322
-b Ff(M-s)0 5337 y Fh(zru\271it)27 b(p\370\355k)n(az)1346
-b Ff(C-g)0 5464 y Fh(Stiskn\354te)20 b Ff(C-x)42 b(ESC)g(ESC)19
-b Fh(pro)f(editaci)i(a)f(zopak)n(o)n(v)n(\341n\355)d(p)r(osledn\355ho)j
-(p\370\355k)n(azu)0 5564 y(z)28 b(minibu\013eru.)g(Stiskn\354te)g
-Ff(F10)e Fh(pro)h(aktiv)n(aci)f(men)n(u)i(v)g(minibu\013eru.)3858
-5663 y(3)p eop end
-%%Page: 4 4
-TeXDict begin 4 3 bop 50 -320 a Fi(GNU)55 b(Emacs)i({)e
-(Referen\350n\355)f(k)-5 b(arta)0 -42 y Fg(Bu\013ery)0
-165 y Fh(vybrat)27 b(jin)n(\375)g(bu\013er)1159 b Ff(C-x)42
-b(b)0 264 y Fh(seznam)27 b(v\271ec)n(h)g(bu\013er\371)1031
-b Ff(C-x)42 b(C-b)0 364 y Fh(zru\271it)27 b(bu\013er)1359
-b Ff(C-x)42 b(k)0 607 y Fg(V\375m\354n)l(y)0 814 y Fh(p\370eho)r(dit)28
-b Fe(znaky)1224 b Ff(C-t)0 913 y Fh(p\370eho)r(dit)28
-b Fe(slo)m(v)m(a)1262 b Ff(M-t)0 1013 y Fh(p\370eho)r(dit)28
-b Fe(\370\341dky)1227 b Ff(C-x)42 b(C-t)0 1112 y Fh(p\370eho)r(dit)28
-b Fe(sym)m(b)s(olic)m(k)m(\351)j(v\375razy)704 b Ff(C-M-t)0
-1355 y Fg(Kon)l(trola)46 b(pra)l(v)l(opisu)0 1562 y Fh(k)n(on)n(trola)
-25 b(pra)n(v)n(opisu)h(aktu\341ln\355ho)h(slo)n(v)n(a)505
-b Ff(M-$)0 1662 y Fh(k)n(on)n(trola)25 b(pra)n(v)n(opisu)h(v\271ec)n(h)
-h(slo)n(v)f(v)i(oblasti)223 b Ff(M-x)42 b(ispell-region)0
-1761 y Fh(k)n(on)n(trola)25 b(pra)n(v)n(opisu)h(cel\351ho)h(bu\013eru)
-419 b Ff(M-x)42 b(ispell-buffer)0 2013 y Fg(T)-11 b(agy)0
-2220 y Fh(na)5 b(j\355t)28 b(tag)f(\(de\014nici\))1134
-b Ff(M-.)0 2319 y Fh(na)5 b(j\355t)28 b(dal\271\355)f(v\375skyt)g(tagu)
-975 b Ff(C-u)42 b(M-.)0 2419 y Fh(zadat)27 b(soub)r(or)g(s)g(no)n
-(v\375mi)g(tagy)518 b Ff(M-x)43 b(visit-tags-tabl)o(e)0
-2554 y Fh(vyhledat)27 b(reg.)g(v\375raz)f(v)i(soub)r(orec)n(h)e(s)h
-(tagy)217 b Ff(M-x)42 b(tags-search)0 2654 y Fh(spustit)28
-b(nahrazo)n(v)n(\341n\355)d(pro)i(on)n(y)f(soub)r(ory)112
-b Ff(M-x)42 b(tags-query-replac)o(e)0 2754 y Fh(p)r(okra\350o)n(v)n(at)
-25 b(v)i(prohled\341)n(v)n(\341n\355)f(neb)r(o)h(nahrazo)n(v)n
-(\341n\355)171 b Ff(M-,)0 2996 y Fg(P\370\355k)l(azo)l(v\375)44
-b(in)l(terpret)0 3203 y Fh(vyk)n(onat)26 b(shello)n(v\375)h(p\370\355k)
-n(az)942 b Ff(M-!)0 3303 y Fh(vyk)n(onat)26 b(shello)n(v\375)h
-(p\370\355k)n(az)f(na)h(oblast)583 b Ff(M-|)0 3402 y
-Fh(z\014ltro)n(v)n(at)26 b(oblast)h(shello)n(v\375m)g(p\370\355k)n
-(azem)487 b Ff(C-u)42 b(M-|)0 3502 y Fh(spustit)28 b(shell)g(v)f
-(okn\354)g Ff(*shell*)762 b(M-x)42 b(shell)0 3745 y Fg(Ob)t
-(d\351ln\355ky)0 3951 y Fh(zk)n(op\355ro)n(v)n(at)25
-b(ob)r(d\351ln\355k)j(do)f(registru)665 b Ff(C-x)42 b(r)i(r)0
-4051 y Fh(zru\271it)27 b(ob)r(d\351ln\355k)1260 b Ff(C-x)42
-b(r)i(k)0 4151 y Fh(vho)r(dit)28 b(ob)r(d\351ln\355k)1228
-b Ff(C-x)42 b(r)i(y)0 4250 y Fh(vlo\276it)27 b(ob)r(d\351ln\355k)h
-(mezer)1022 b Ff(C-x)42 b(r)i(o)0 4350 y Fh(nahradit)27
-b(ob)r(d\351ln\355k)h(ob)r(d\351ln\355k)n(em)f(mezer)473
-b Ff(C-x)42 b(r)i(c)0 4450 y Fh(nahradit)27 b(\370\341dky)f(ob)r
-(d\351ln\355ku)i(zadan)n(\375m)f(\370et\354zcem)175 b
-Ff(C-x)42 b(r)i(t)0 4692 y Fg(Zkratky)0 4899 y Fh(p\370idat)27
-b(glob\341ln\355)g(zkratku)959 b Ff(C-x)42 b(a)i(g)0
-4999 y Fh(p\370idat)27 b(lok)n(\341ln\355)g(zkratku)1005
-b Ff(C-x)42 b(a)i(l)0 5098 y Fh(p\370idat)27 b(glob\341ln\355)g
-(expanzi)g(pro)g(zkratku)509 b Ff(C-x)42 b(a)i(i)f(g)0
-5198 y Fh(p\370idat)27 b(lok)n(\341ln\355)g(expanzi)g(pro)g(zkratku)555
-b Ff(C-x)42 b(a)i(i)f(l)0 5298 y Fh(expando)n(v)n(at)26
-b(zkratku)1079 b Ff(C-x)42 b(a)i(e)0 5433 y Fh(dynamic)n(k)n(\341)26
-b(expanze)h(p\370edc)n(h\341zej\355c\355ho)f(slo)n(v)n(a)308
-b Ff(M-/)3858 5663 y Fh(4)p eop end
-%%Page: 5 5
-TeXDict begin 5 4 bop 0 -337 a Fg(Regul\341rn\355)46
-b(v\375razy)0 -130 y Fh(lib)r(o)n(v)n(oln)n(\375)26 b(znak)h(krom\354)g
-(no)n(v)n(\351ho)f(\370\341dku)507 b Ff(.)43 b Fh(\(te\350)n(k)n(a\))0
--30 y(\276\341dn\351)27 b(neb)r(o)h(n\354k)n(olik)f(opak)n(o)n(v)n
-(\341n\355)715 b Ff(*)0 69 y Fh(jedno)28 b(neb)r(o)f(v\355ce)h(opak)n
-(o)n(v)n(\341n\355)842 b Ff(+)0 169 y Fh(\276\341dn\351)27
-b(neb)r(o)h(jedno)g(opak)n(o)n(v)n(\341n\355)775 b Ff(?)0
-268 y Fh(zru\271it)27 b(zvl\341\271tn\355)g(v\375znam)h(znaku)f
-Fd(c)32 b Fh(v)n(e)27 b(v\375razu)288 b Ff(\\)p Fd(c)0
-368 y Fh(alternativ)n(a)26 b(\(\376neb)r(o\377\))1059
-b Ff(\\|)0 468 y Fh(skupina)1520 b Ff(\\\()43 b Fa(:)14
-b(:)g(:)43 b Ff(\\\))0 567 y Fh(stejn)n(\375)28 b(text)g(jak)n(o)e
-Fd(n)6 b Fh(-t\341)27 b(skupina)745 b Ff(\\)p Fd(n)0
-667 y Fh(hranice)27 b(slo)n(v)n(a)1329 b Ff(\\b)0 767
-y Fh(nik)n(oliv)27 b(hranice)g(slo)n(v)n(a)1059 b Ff(\\B)0
-902 y Fe(elemen)m(t)1050 b(za\350\341tek)157 b(k)m(onec)0
-1002 y Fh(\370\341dek)1174 b Ff(^)420 b($)0 1101 y Fh(slo)n(v)n(o)1196
-b Ff(\\<)376 b(\\>)0 1201 y Fh(bu\013er)1166 b Ff(\\`)376
-b(\\')0 1300 y Fe(t\370\355da)32 b(znak\371)898 b(o)s(dp)s(o)m
-(v\355d\341)83 b(neo)s(dp)s(o)m(v\355d\341)0 1400 y Fh(explicitn\355)28
-b(mno\276ina)709 b Ff([)43 b Fa(:)14 b(:)g(:)44 b Ff(])192
-b([^)42 b Fa(:)14 b(:)g(:)44 b Ff(])0 1500 y Fh(slo)n(v)n(otv)n(orn)n
-(\375)24 b(znak)766 b Ff(\\w)376 b(\\W)0 1599 y Fh(znak)27
-b(se)g(syn)n(tax\355)g Fd(c)756 b Ff(\\s)p Fd(c)338 b
-Ff(\\S)p Fd(c)0 1842 y Fg(Mezin\341ro)t(dn\355)46 b(znak)l(o)l(v)l
-(\351)g(sady)0 2049 y Fh(zadat)27 b(hla)n(vn\355)g(jazyk)513
-b Ff(M-x)42 b(set-language-env)o(ir)o(onm)o(en)o(t)0
-2148 y Fh(zobrazit)26 b(v\271ec)n(hn)n(y)h(vstupn\355)h(meto)r(dy)243
-b Ff(M-x)42 b(list-input-method)o(s)0 2248 y Fh(zapnout)27
-b(neb)r(o)h(vypnout)f(vstupn\355)h(meto)r(du)382 b Ff(C-\\)0
-2348 y Fh(zadat)27 b(k)n(\363)r(do)n(v)n(\341n\355)f(pro)g
-(n\341sleduj\355c\355)i(p\370\355k)n(az)444 b Ff(C-x)42
-b(RET)h(c)0 2447 y Fh(zobrazit)26 b(v\271ec)n(hna)h(k)n(\363)r(do)n(v)n
-(\341n\355)445 b Ff(M-x)42 b(list-coding-syst)o(em)o(s)0
-2547 y Fh(zm\354nit)28 b(prefero)n(v)n(an\351)d(k)n(\363)r(do)n(v)n
-(\341n\355)314 b Ff(M-x)42 b(prefer-coding-sys)o(te)o(m)0
-2800 y Fg(Info)0 3007 y Fh(spustit)28 b(Info)1384 b Ff(C-h)42
-b(i)0 3106 y Fh(na)5 b(j\355t)28 b(zadanou)e(funk)n(ci)i(neb)r(o)g
-(prom\354nnou)e(v)i(Info)176 b Ff(C-h)42 b(C-i)0 3242
-y Fh(P)n(oh)n(yb)26 b(uvnit\370)i(uzl\371:)83 3377 y(rolo)n(v)n
-(\341n\355)d(vp\370ed)1195 b Ff(SPC)83 3476 y Fh(rolo)n(v)n(\341n\355)
-25 b(zp)r(\354t)1247 b Ff(DEL)83 3576 y Fh(na)27 b(za\350\341tek)g
-(uzlu)1152 b Ff(.)43 b Fh(\(te\350)n(k)n(a\))0 3711 y(P)n(oh)n(yb)26
-b(mezi)i(uzly:)83 3847 y Fe(dal\271\355)f Fh(uzel)1356
-b Ff(n)83 3946 y Fe(p\370edc)m(hoz\355)28 b Fh(uzel)1148
-b Ff(p)83 4046 y Fe(nad\370azen)m(\375)30 b Fh(uzel)1121
-b Ff(u)83 4146 y Fh(vybrat)27 b(z)g(men)n(u)h(p)r(o)r(dle)g(n\341zvu)
-720 b Ff(m)83 4245 y Fh(vybrat)27 b Fd(n)6 b Fh(-tou)27
-b(p)r(olo\276ku)g(men)n(u)h(\(1{9\))498 b Fd(n)83 4345
-y Fh(nejbli\276\271\355)28 b(p\370\355\271t\355)g(k\370\355\276o)n
-(v\375)d(o)r(dk)n(az)i(\(n\341)n(vrat)f Ff(l)p Fh(\))279
-b Ff(f)83 4445 y Fh(vr\341tit)27 b(se)g(do)h(nap)r(osledy)f
-(prohl\355\276en\351ho)f(uzlu)247 b Ff(l)83 4544 y Fh(vr\341tit)27
-b(se)g(do)h(adres\341\370e)d(uzl\371)791 b Ff(d)83 4644
-y Fh(p\370ej\355t)28 b(do)f(kter\351hok)n(oliv)f(uzlu)i(p)r(o)r(dle)g
-(jm\351na)282 b Ff(g)0 4779 y Fh(Dal\271\355:)83 4915
-y(spustit)28 b Fe(tutori\341l)g Fh(k)f(Info)888 b Ff(h)83
-5014 y Fh(prohledat)27 b(uzly)g(na)h(\370et\354zec)800
-b Ff(M-s)83 5114 y Fe(uk)m(on\350it)28 b Fh(Info)1239
-b Ff(q)3858 5663 y Fh(5)p eop end
-%%Page: 6 6
-TeXDict begin 6 5 bop 0 -337 a Fg(Registry)0 -130 y Fh(ulo\276it)28
-b(oblast)f(do)g(registru)930 b Ff(C-x)42 b(r)i(s)0 -30
-y Fh(vlo\276it)27 b(obsah)g(registru)f(do)i(bu\013eru)659
-b Ff(C-x)42 b(r)i(i)0 105 y Fh(ulo\276it)28 b(p)r(ozici)f(kurzoru)f(do)
-i(registru)630 b Ff(C-x)42 b(r)i(SPC)0 205 y Fh(sk)n(o)r(\350it)27
-b(na)g(p)r(ozici)h(ulo\276enou)f(v)g(registru)513 b Ff(C-x)42
-b(r)i(j)0 457 y Fg(Kl\341)l(v)l(eso)l(v)l(\341)h(makra)0
-664 y Fe(zah\341)5 b(jit)29 b Fh(de\014no)n(v)n(\341n\355)d(kl\341)n(v)
-n(eso)n(v)n(\351ho)f(makra)411 b Ff(C-x)42 b(\()0 764
-y Fe(zak)m(on\350it)29 b Fh(de\014no)n(v)n(\341n\355)d(kl\341)n(v)n
-(eso)n(v)n(\351ho)f(makra)354 b Ff(C-x)42 b(\))0 863
-y Fe(vyk)m(onat)30 b Fh(p)r(osledn\355)d(de\014no)n(v)n(an\351)f(makro)
-476 b Ff(C-x)42 b(e)0 963 y Fh(p\370ip)r(o)5 b(jit)28
-b(k)f(p)r(osledn\355m)n(u)h(kl\341)n(v)n(eso)n(v)n(\351m)n(u)c(makru)
-276 b Ff(C-u)42 b(C-x)h(\()0 1063 y Fh(p)r(o)5 b(jmeno)n(v)n(at)26
-b(p)r(osledn\355)i(makro)388 b Ff(M-x)42 b(name-last-kbd-ma)o(cr)o(o)0
-1162 y Fh(vlo\276it)27 b(do)h(bu\013eru)g(lisp)r(o)n(v)n(ou)e
-(de\014nici)319 b Ff(M-x)43 b(insert-kbd-macr)o(o)0 1405
-y Fg(P\370\355k)l(azy)i(souvisej\355c\355)i(s)f(Emacs)f(Lisp)t(em)0
-1612 y Fh(vyho)r(dnotit)28 b Fe(v\375raz)h Fh(p\370ed)f(kurzorem)586
-b Ff(C-x)42 b(C-e)0 1711 y Fh(vyho)r(dnotit)28 b Fe(funk)m(ci)g
-Fh(p)r(o)r(d)g(kurzorem)587 b Ff(C-M-x)0 1811 y Fh(vyho)r(dnotit)28
-b Fe(oblast)950 b Ff(M-x)42 b(eval-region)0 1911 y Fh(na\350\355st)27
-b(a)g(vyho)r(dnotit)h(v\375raz)e(v)i(minibu\013eru)349
-b Ff(M-:)0 2010 y Fh(na\350\355st)27 b(soub)r(or)g(ze)g(syst\351mo)n(v)
-n(\351ho)f(adres\341\370e)230 b Ff(M-x)42 b(load-library)0
-2263 y Fg(Jedno)t(duc)l(h\341)47 b(p\370izp)t(\371sob)t(en\355)0
-2470 y Fh(nasta)n(vit)27 b(prom\354nn\351)g(a)g(faces)681
-b Ff(M-x)42 b(customize)0 2605 y Fh(De\014nice)28 b(ob)r(ecn\351)g
-(kl\341)n(v)n(eso)n(v)n(\351)c(zkratky)i(v)i(Emacs)e(Lispu)i
-(\(p\370\355klad\):)0 2741 y Ff(\(global-set-key)37 b("\\C-cg")k
-('goto-line\))0 2840 y(\(global-set-key)c("\\M-#")k('query-replace-re)o
-(gex)o(p\))0 3093 y Fg(Z\341pis)46 b(p\370\355k)l(az\371)0
-3300 y Ff(\(defun)41 b Fd(command-name)51 b Ff(\()p Fd(ar)l(gs)7
-b Ff(\))87 3399 y(")p Fd(documentation)f Ff(")44 b(\(interactive)38
-b(")p Fd(template)6 b Ff("\))87 3499 y Fd(body)h Ff(\))0
-3634 y Fh(P\370\355klad:)0 3770 y Ff(\(defun)41 b(this-line-to-top)o
-(-of)o(-w)o(ind)o(ow)c(\(line\))87 3869 y("Reposition)i(line)j(point)g
-(is)g(on)h(to)g(top)f(of)h(window.)0 3969 y(With)f(ARG,)g(put)g(point)g
-(on)g(line)g(ARG.")87 4069 y(\(interactive)d("P"\))87
-4168 y(\(recenter)h(\(if)i(\(null)g(line\))697 4268 y(0)610
-4368 y(\(prefix-numeric-v)o(al)o(ue)37 b(line\)\)\)\))0
-4503 y Fh(Sp)r(eci\014k)n(ace)c Ff(interactive)c Fh(\370\355k)n(\341,)j
-(jak)h(in)n(teraktivn\354)g(na\350\355st)g(argument)n(y)-7
-b(.)0 4603 y(V\355ce)28 b(se)f(dozv\355te)g(p)r(o)h(pro)n(v)n(eden\355)
-e Ff(C-h)42 b(f)i(interactive)p Fh(.)476 4919 y Fc(Cop)n(yrigh)n(t)805
-4917 y(c)787 4919 y Fb(\015)22 b Fc(2007)h(F)-5 b(ree)21
-b(Soft)n(w)n(are)h(F)-5 b(oundation,)20 b(Inc.)654 4998
-y(v2.2)i(for)g(GNU)h(Emacs)e(v)n(ersion)h(22,)h(2006)798
-5078 y(designed)e(b)n(y)h(Stephen)e(Gildea)0 5194 y(P)n(ermission)f(is)
-i(gran)n(ted)f(to)h(mak)n(e)e(and)i(distribute)d(copies)i(of)g(this)h
-(card)e(pro)n(vided)g(the)h(cop)n(y-)0 5273 y(righ)n(t)i(notice)f(and)h
-(this)g(p)r(ermission)f(notice)g(are)g(preserv)n(ed)g(on)h(all)g
-(copies.)0 5389 y(F)-5 b(or)20 b(copies)g(of)h(the)f(GNU)h(Emacs)f(man)
-n(ual,)g(write)g(to)h(the)f(F)-5 b(ree)20 b(Soft)n(w)n(are)g(F)-5
-b(oundation,)19 b(Inc.,)0 5468 y(51)k(F)-5 b(ranklin)20
-b(Street,)h(Fifth)g(Flo)r(or,)h(Boston,)h(MA)f(02110-1301)h(USA)3858
-5663 y Fh(6)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/de-refcard.ps b/etc/de-refcard.ps
deleted file mode 100644 (file)
index 7d88949..0000000
+++ /dev/null
@@ -1,2837 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
-%%Title: de-refcard.dvi
-%%Pages: 2
-%%PageOrder: Ascend
-%%Orientation: Landscape
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape de-refcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.01.20:1516
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI8
-%!PS-AdobeFont-1.1: CMMI8 1.100
-%%CreationDate: 1996 Jul 23 07:53:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-24 -250 1110 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
-4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
-788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
-C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
-617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
-D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
-532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
-5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
-4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
-DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
-B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
-A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
-8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
-D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
-AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
-AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
-A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
-AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
-85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA
-3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF
-68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409
-FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C
-B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0
-F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A
-B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 65 /A put
-dup 66 /B put
-dup 68 /D put
-dup 82 /R put
-dup 86 /V put
-dup 90 /Z put
-dup 97 /a put
-dup 99 /c put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9B3AF95BEA0DC284A53FB40DA68D22E0D0DDA4D06897AA6D0C822190D6AC890C
-BE4D5A361119B81C6191E2BC6A5BCB6EDB448EFF624A39B084282AA774EBD006
-978CBDECE14A9709A6474CFDFA08AD4C76ABC85B16EA7CEB75BD87EC9BA26352
-397C0CBA4112C39DFE9A7B2952D41647E886D869E8740C7822CC5C5753BBA2B1
-22D756EC9562EACD19CA523D47DBC02C6830F26E441BEC7CA9E4469EE899070B
-59620BC5F575C81AC207D73599DD13ABB8FE5B03DF90CD118541D7C9F4CB27D9
-C375C5880E245D916BF6143BFA59412B86E9D5D1782C5B7933C0A04AD065B405
-81D39FA7797270F977E5AEB0E3757D0BA32568D78AF378D481D92D1F438355FE
-C174BF16CECCBFAE1066461350E71ADFD10A31145806B602DEB32434F8D008C6
-0F3FA689DCB374B5C9791A447C546C4B2428744F56415278DFE19A678674386A
-B5322D8A0E0DC860ECCEE3FC2FCEEEA0B64766A02C2D9B9BBE79D49C8C4BD605
-D3F61AD9AB76046171AA07B870479D3403AD8FD04F64EB6D1128DFC52AA7E80A
-696DD1F9A788BAFEEB1DABEFBD866AE7E8AE43766D4BCAA9BFA79FF5886829AD
-D456BD2017A0C851A5EC563EEDCE116860810E98984CACC944BCEE590BA1DB4F
-806152CF29730DA725948A87FCF4B353CF66E5C167E3079A797445672BFB8E02
-831FDB8DB616AFFB8E89007F7A7EA6F6826E8D134E78203727988F60E6C35F61
-2A61D65F15633F5A6DFD1A107FBCE7384EB059EA42BECE7868A17901B91FF9B7
-FFE91967305005CFB5F0AB2AA83BF5836091C17D958DCC296CC9BD25945F1669
-D0D8AB41CD25B86E6B209B452DBFD3A3C636BF87B5C318F9D388D5B44ADD1BBA
-005FD24FCCA81B8287CA1E6246904C03D5A2026E89850B18F4668C4D4B574ED3
-7DD77D271F8558F778FF22F2790D7C73C8E706966B5A606507909BED5A509733
-34868FC442551561FF0D6F342A5DA5754ED1501E08DE2D7A001CC85C96353093
-CE2E624C3336437E14A770075E7393CF5A3927FE8C0CBD05DB9D288E54C4CB6C
-76B11F61AFD0FEC9FBA7299612A5D64EA1A25FB7A4B98B3EFBFECB9C0BB89B87
-0BF48B458BB1E80915758743442EA507DC3E7A9A285B7CC45A2247DD01C040A1
-BF42105FE7481094BD2972247D582D86317D8C85C8FF3180EFEABFACC4F60FD7
-85356A1F366C154B18E1EBDC3DAAAEAE03F3304CC1F61DB910BB0F7E6458350C
-4C928BBFB19583C58C20042B16AF043119776CC131767E2DEE52EADE91E4AE71
-A8103E703498E025E934C9498E72FE8569A4A03DD54C09F2387618B259A2EA0F
-B5E65D05723DEA0912053A0D07B38D2991E4D07D4A451D50555866BD4B301547
-A3A4AEDA243564B3BAAF2A71A6857D0E19764905DF3304668F39B050C6A79984
-F76147833861BBC6960F70CB0BAD625E34B807C225D055D66B0BBB52CC8BFF4E
-DE77C9851144BBFB45CAF37EE260BC79704DEB6696EFD74C667948D38E87CE4F
-3BD635D76EA337CA4EFD48190B0509A1029E296033F15BAF4408D2BE1B506086
-3D78AD5037AF7BFDA55346D20F40099ACCACF8FFA833D7EC95645A580DBBB643
-D415EFB5B60F8F8B34C50CB7C33C144866EE56EE63AD3D5B7728F25D484B1D28
-8BB2F384A060B5DF43ACE43DAE802A27A79D66DF9E357A5452F8FB484A9539BA
-CE317527560685BFACFBC1AD353AEF3ECA887ADDFA79727E085C7F6E99121397
-0C5E0269713D614F07AA924DD1EBFCE15750553483663B2F1CFC81E04E34C237
-D2C14E38E45F65415F98CD9281E6B3D7DD7FACF6661E20EEDBC4679DCB769017
-65A5C125DD23AC8AF788A94D16D44164F674A92BF4519581EC2766EA19EB353E
-FDC81CE9796A0DE0FAA39418851624462FC36A671708D9E986020A6A3A4B4578
-3E9D069FA141D8C3F2811E06728C600E9F75BD78B47A3FEEBCA5AAE518B60984
-912D7CB68ADEDAFADAF9AF2D84FA2C88F58E91769ACC4084788488B6949591FF
-B24793EF5430C155895EE14AF5430E518754AF8A0DB30D89284F6DDEC636A40E
-8ED8355F7CC976E5A9FF704E3C737AF2AE91C475505FC89FED92B5EA018CAFB1
-7125F7BE6B8F3DC61047AC737B66F9E995831B997754935D3FAB75FDECE3E2C5
-E8D36B7CCDFC7336E9D8938B8127A42CC400E8F275882D789940797117379F0B
-2B0B07D0A5644DAE016897D4F3B4EA999CDC1F6A32AD0BA8CD0D7E9AF8DBDE3A
-5F742C3C64F36AB4D5FE50D2DF3D9B6B96F359AB93C781BB5ADF0594D9F47A14
-06CF432CC8B01215F93457EF15494CB7FC22D9FCC729D6294A6FE370DE6B18AE
-F729FBE1DED8F00536A99FB1FBDE28F286BCC1FAAA2A984F9E3596F446EFF5DA
-9071628115E8A583FB0B4B4F8939AAF17A45BD08FBD94A34832D9A3FDAC17E18
-4DBC2C0290F4A46C01ECAA21C0BB328DA4683032E8C8C8B8520979F095378573
-41CED8F853B2CEDE4635AAAF92FC90A41DF08FC4BFC05CFD0CB104B993945B29
-8BA304A6A994DD9EC54234C3258E23D87405633E9D43AA78229EEE5F2DA86D89
-D107F922AFFA4562514391562599D80416B39A61F914DFF15D60DCEE17E7831D
-0329CE4A59FAD2CFB667B31039E3677FC41D56FE1A8A3B93B3C6144D9A4C5237
-1352925ED7A896D6F39066DA3C691FD133F6A74A2574E2642673B3FC3FB03F14
-79EB96EF152B5CC141E7F388E0259A843B50ED231A1D76C8443C3D1885669145
-6CBB130CB8DDC7DB7F50236B672EC8142DE10DDB5717F635B17F2CB583A56503
-2D0F4E0C6DABE691DDCEC03F75FD6D33B65C1793E8B40754EC5EA7EB07821865
-8BDB7A5393A2AC2661270D73BB9D12C1144D6E4029D573994FE31876ED83E55D
-BACB5F40BCB931F98DE7F16D8BE900CD599B28BBE767FCB4C8815108F04732F4
-0FA4B566057C442513EBDA6309EF62E69956DD882F6BCB3EF6829ECBC1B139E2
-704EDC03432170C3D97F8D3F9D8A542EA89198133A9B60A03D2C9A99C5BC1594
-4348A6A5E5D56FB1A1C8756873EC376B5F1FD1D05A03AC9F599499974AD47442
-CA459C429B7217DE10372EBA65D96B4FD2D574418AC1793211AE210DCDE572F6
-858C9C21DCAC1724630E5B566539E499DEB2613653F26516C0624C9AD8C607BE
-E969DA2630DF255B64D75C9CC5BD886321A6D8B9A25B2199CEAD205AAAF29268
-0B62086F89BFE70464EF98519DADF73A0BA49A0AF0B8B7B837BDBE0E35247EDA
-DBBA716AD20E7FF44C9A6EDE97091E40A910AE82806022FC906708385EBDA8A3
-D03577ACBA81169D3D01E444A778DABFAC356CEB76D08C44FE51130EAB3BB5EE
-6814D7A0AEE5590AFD51E10787A49D38170164BBCEC4723279CA281E32990B1C
-500BCBE982194EAE4D0C66C370808AE0223893B62043272FFED029C52283F575
-5F0C491FC82D4D7A959A5C4D16DEA4D374D2EF4861AD86FCE8E1080D559601B5
-89A94ACAF25EEF5CE4FC2870A16C17EBE939051B10484709C093CD092ED5387C
-01D8C614E8A876061DAC06AEC30D027CE00AE5F53880D969D7DEDDD14FD57757
-E5218F699E0F1C7BEE98247B45FE827ACC26350CB3DAA2DE76232A95CDC4CDBE
-A323E951530E92048527CDA2DC00A8C3DDFF25954C13E9ABD7F7A54F37093828
-69A5257EB9073B1AC0763EB135A3E4EB3D83B46C70B1E1D71F2C12354B523581
-2F56D273FA42577674B5FC545A946F49039B2438904873451BE2172DDE36A1D3
-432858CCB56358E6B55BD7D3E6B1552E42CF902AB33E5D3BBF800A6858D871D6
-79DBEDA21C51F3DEF777B8995FF6E5E771C2C9BEBD252766B1D2A902CD1946CD
-9DFC1F89174B27268B18425E021CA915B96E5E404E1DE0BE0BB8636978711C4D
-7CFBE8F5E4D40CD21E517629B41104465F6C2F5E4D4D600A1FD512F8F3F2AF66
-88CFDDD128E1C632FA86C4E27AC9FD6DB3B8B08F1F67058E8D2A845306FA3BBA
-241C8AA353A170249892D5D68E17B1EFCBDFFDA565464B3A3C894067916242A1
-6106C25B96E894DA9CE5C7B3954B53A9CA95B5BA4FA29CF193A43CF904869F7C
-7753D12540787B1E05A24180E3098E994E6BAA9C32DF39F74FE20FF7A683B90D
-1117B9A29B02BF40D123089B737D9729C150BA2703BE6FA4E992C932435DCED8
-764A0F10703B9DDFE6BEC61D6792FD9A8FC87B7F03840959CAF6908716F42068
-7A63FC068DD970B44BEE36FC5A2D8D68F5AED0C2370BC9E714572163DF944036
-B9850C5CAFFCF2DA7AF7884299D1C7F8496C7502942750B6A0107C3AA186BF45
-9B574535C4365E0DF3282912E9E23544C4B7F18744B64B1E9B42CF20F66168B7
-4E47A37F4999BA15536FF1CCB900343FA731CCAC9B6749E8CCD587E08609830D
-23E2D46190BBB442554EC552431EF1E43802157340E2D2FC407B210A7750483D
-9632F3BE1C04278BDDAF58E2E5D076A65AB0A02750D94228053EEBDCCA9E44D5
-782005E1716179A4A637902A08241A3B4DA8AC54E78C28AF4FD10A216AEA67DE
-DD93DB8E8DBFD830E3CF7CF0C9C2009C6315D0FDBEE6A951370AFFA7D4903F85
-13B87AD451E281B0B580F3B91BE5154D20F8BAF462B177D53624ABD72F5721D2
-2BE3F903990E1D92B27894BECD29B1642BB40E50E7F3C7A715F8E7C2B6C41CD3
-8F77AA5C7D5E7999284F7789BB1F1295CA14BDEDD45D9107C2A776078F2DCEF1
-8B647F3B1DC72AF8152CE53A8AC357045250CBAE48451E592B7CE9819AB80EF7
-A09614A890CAC1EA521030743ED627282C070AAE07D20613E4128EF04837DF1A
-7D5A19082BBB87E15218A411A0F71D3D6444BEB69926DB7AF7C894642C4584F6
-3F72A334583E1694A63D2F038692B832FD158ECFDC4C5E90D90136BBB581EE8D
-AA7394D02EFC086470D93B6A30B0B6A9824BEFF5E101BDDCC6A9BEBA0A322F05
-2C6C6444B71EBE15A6310105537B372A1B285538580791248500FA6208518347
-703F5671DD46CCF4D44DED0889B8C2E5388F8ECFA0533AFB3FB5AF6EF7B0ADFA
-5252BF40F0CD5D604599AE7A1A9744108455368B31A8AE0ECCBA79D63E50C79C
-1CF8683FBC12E82F26D3656BA80975F73FBE8AE801FE497E07231F7476240773
-8D2EC688C5B48E52B5F0A67AC0B4CF5C61BE626C53B222EF187AEB0BAA9101F8
-B3142985C878CB8E534B824DF76360B57F2B1252DF23BB638D1139D89832AA6E
-69967CB329D6162F5895801FA7D8970BF6E67FF2190F5851AC6F41AA043C0691
-948B793352979FDA84A344B682E92F47798A12ECA775402A90AB203C99FDD1B2
-77CDD85C0424B5C6D73307FD35A0BC2EA50118DD11211A467AFBAF0814639439
-3C5315A0D49D3A0317EAEBB43229FE6D4EB4106FFE9F23A620EFFC5C181D7C8E
-2258649912C83DD9095B68C8745AE67319D2809026AFAA7F8C7B2B716CE1E865
-9D3EB759FB3698394375A84E1C0D129FAAF2F3585D9771BDFC355B1057BD463F
-1EEE3D77740FDB8445536CC1E45DC756960E1FCFF8653B1CBAADA8BAE4ACD705
-1DFE04A78BA65569B25E33BE35B5703DB177807480F4C62071BEBC38822123B4
-0467DBA52C9F3F827E402E82CF5DD3CBB234553717ECFF4CA17B47BA440F7BC1
-176E1F260D30E1B716D0C73B130110E2ADCA8269FF5543D035D477A94863D512
-DA4CE32352EB2CF10C40C05882C59673E3F7363FDE7A5AC1640662009EAB6D8B
-BE7F4EA3C3F92791583C3FA650E32889691612D01C978085B721F39994C03972
-E459051D3B5D8CFF49A790F2334FCC34782C4BB35484D2E0D5ED830EF2978C05
-3F096E20ED202F2C215D1047D806F7C6804892A106234647E774303ED3304E95
-CD85AF49C06230241A41A82269D8D65E8D3F2308AAE46B1F9C983D3CD27CBAA9
-F966080A1C97FB3C4580400D67EE7EB644A35552F78B62BED88EFC3C7C670F4F
-D62B7813A664431BF6AEBA8F84FB2A8C30B0A9D515A3DE946CBCECF5D0755004
-887CFADF54BE8ACAE761861E4FA0C40B443ED00C46D3C3799075BE4B8CD5AB59
-0F791990C0FE57BADCCCAC3BD8173A610396C3B219A7F5D4D00D2E32FDA66B2D
-DDFFB3E6D3DEFF9691A9F19E394006315C802641D03CBAF42C12324BDEBD5C4F
-5EF2E8D1C71F14471754AA0F9BC5818DB3357B0495BD42BDA3B7F281E49D8DE8
-20E0899DC2AADE991502F16476689B7274C2B02661CF6A80EFC9E980997B369F
-22E49BF33B2883CD74DD42F6F36B25A00FEC3F8EEED86F7E3F0FCE313375E10A
-40497CB617D339BC79E18E7191EE0E112E6B84580F8E42E61FAF34DBE1F8A9BD
-C4A0AF9D5561C2D1A9C0EC5F50F333A3518304F71C7A161A7371199617118416
-B5FB245EFD347BE38E12818B408735F969BA69A8B7D934534E0FFCD43B386C81
-A7F0900E673F841A42E0AB9FD398562D16A627A83DDBACF06FE227B40C0914A3
-CDDD893D7BCCB2F94D61DE3FFC5C5E9F447441AA4C58909CBBD1AB2E200A664D
-C3ED7B81DECE3975D1C228D4C6EF635AA324DBF4E20FC2B5D40CF9C546F1BD02
-9B66E60229688EBA62D47C79B75ED68BA4DE52FD42617E8F2C5F21BB027CBC71
-FC8D73C822B2AD47F375F73FFF0B17764AB74692CC766886DD11E417B498B9A4
-FE9708E34AB88D33932D04455252A061B43CC44640FF203B2C9BDB4F42612E2C
-D1BAEA03416F1197C1AE99D457DA4B9670A618F7078217728B24BFA9977ECC29
-D2EFF23FEAE0035688D3CCA89F884CCD04BFB3239F3D60551033552DD416E652
-90092CAB411064537346B2772F26FC8AEDB291D102096503CC9F9585A62C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 77 /M put
-dup 78 /N put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 86 /V put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-dup 122 /z put
-dup 127 /dieresis put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
-6D4DF600BB73729BC4A5B134928F1370B9F07C587F79388B1D9AC62BFB1566DD
-CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
-0B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
-08E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
-588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF213
-11A0DE01524197270E30BAE6F3C9CD656B69AA3249F41C2EDFDFC2578C6843F0
-4082A0F74969AF11796C8E84B3609BBF9D33AF93598CA7C66A838B58357AF67F
-347CADBF40934F52960E498188D3AD4444102B5F3B9E13F800C9834B31497AFF
-FE049ECC9879A3C97D78A136EC0FB343492C7DE3CDC79E2F698A01BB245D0730
-EAACA3AD6FD8E87E5884D0F3C0BE35260EF291E5D87940BEA66A05454E31F581
-6A2D9BB439829A804934F86D8715E9D9293C22D7EC8CC4B9D26BD7228A6B3E02
-4A3CD1FD138AD31954A654740B42B94060C3FAE9F2E95DEC9E0D6D7512BB9444
-7A18A557840F57627ABE113EB08E2EF55F615461C79EAA63954EB129130567B2
-D99AD830E56A5337489DC6C52CF3116FB0714AA272EAFCE0615D4E29A0A3F5A2
-E7140978DD44A5C69D102D5F2108FAA5BE77A1CA20009954562FC12698A99EE4
-C0008D177A0E0780E8B6C4A36A564872DC538F59760F1CAACF615469C9087BC4
-A73FCCC86B80EE69E6490A99DC0FB667023B270B3273D60E661DC76AF2AB48FA
-6CF21B39E96F734CEE1F81FCD0EEC47E47816F157EA8D75AFE065EB866CEF278
-A88178B047F069218677369DF101FF6EDE143708E6D8B9B187ED841637FB825A
-5CFD7D0BA1A6FECDA0936080BBA33008D5C7E6D57D5DE8865CF64CDE12803375
-63DD792FFA079119C76E4811D064E3B893B358B7F1A67D3B15FE747CC220C512
-7227309A5B0E0988ACB22B9D18FFB368129CEFB1FF53E9729DF751BDBE47F443
-C6C99C6277288DDA1B7DE5645E31D2F54D5F930382B487445C930EB7071C9573
-26BCAC527FE2D2D597D22C6FFAF8CFC9A61EDB3DA8AE4397C0C0168F3C8BE8E1
-9164EAF08A91AA2437F5EE3CB02C7CBCB083D620172ECB93BAAF9E009C27E1D1
-0B02F3ABB85F2F105D73820465F653721063E3EDB736F6C2A46F81048E02A857
-462C9608320526539EEA194F1856B9FB8CC80531D9BD7D494DD90793CEE53BF9
-BD431ED5C15A3F5A186000F9AA6D83004B53E6692959B4F721AE5BB2069E3946
-D5577DDF1FE4C883FBF478970378D3292DDAA426305A2B366CF673A636C7A332
-92A3DF8254BF6D9FCD58E5DDDBBB12E5A1D2A1AB1F34DD295830F2A3F531CB78
-4C3511A7D79B5DD17626EFE0E476E146441455DCE7B9E5C6E24B099164AF8526
-48F9ECC20D963EE6BB7B30FFD3D2F93659CBD1C3F41BC1A10E7556D6E9C9D9E4
-9AC62A1417953173163DA8A1714D8D6D030927DAF814E31CA14425EF789B57EA
-C1E655A3BD6C46C4E4C74BA0D4E2890EB44B57539A76E2817C7A3A05BC099D4F
-FDF639606F5389B48FB7B2B27ACD26D6C0AB476B576FA3AD7E8A2B90EE2DABEE
-FA6C71A3BB7DBDAFA0590C0867A7B3519AEC7A88FCBD14BCF6FF71C21B8B824F
-C97617D80CAC134FD7F16B3ACCBECE31B1F2A4E7EF8641CE8539D370F6318035
-F10304B6FA3FF47B4AFA1F77C2DF7E863C23FC8877A0A626AE42BB4CBE708825
-AF5524DE49869CB408253EB64C1F793EA70207E7F18C44BAEE3FBA4097E69C89
-C571C34AD0896E3A08A3C4834ACCDD6D0191481A472247E2B4FA76527893A1E7
-32982BFD8FF3ACB2DFAD7E359513667AAF8D64A0A8538AA9AC58E5E2742878D4
-C47C9E9F74FC134D0C307904DD7100207DADC681B6EDE399EED305E32F427599
-AE414B770FB1BB49ADAD8D9FC4B5BAA4C4F01157C763198BD945BCE6C18755C5
-552A787790674AA407AEDBBFE51FE43F504BABC4C2EA2E08910A2E1B98C9FA11
-970134EA436C92BE95625A98F125CC767EA00C3B914F5335A1094EC8A7BE9F53
-F058D3C5A2ACD23A106F38247A1066AFD13942726D4C67B851F3FE91B93CE5B6
-15B556DAD06D10740DA08394D827331F504EB3401E17D3D4E0019ECA9FE7AC3B
-4C259407F93F1DA6521E1DC9FD4F996FD646A68F636CC5A6453E41DF5DC6ABC0
-2F946BCE0C4C5036B68680EED074E5770EF95BBB46EDB6E3DDE5800F6E0B88FD
-78E21751166464ACA5B7ED356F4B2BE74698872E2C791996FF364035BAFDCC15
-0290B469E3B8C929DE61CD12E4A1517E5ACBA9700BB0516E19AB997942147C76
-3CCA2DAD3882A9F937918D8F501EFABB8A578495EC78F015735EB4B17B24586A
-707B6220120B2EC9F51F8D8C6E17E895EABBD8D2C10FBFA6893F632306EF5D0B
-FCB8BCE48FC54D9C8EAE7B44675E4E7C1A5175DD2C3E6DDB13A54F4EBA618104
-12A18B6EE1DA922F9A7657F01C4FCF77C9A39FF671EADF16C961D525F3BED021
-506CD6872712B154A897BBDCA877A3EC36006AE0727C8AE9CADC0986DAFA6197
-51C6CDDD926B769B4D4E78A60498912E0076CCFB185DDD157C23C99EFC81DAAD
-DB4594666031E8B2AECB4B8C45B635B6BC5136E12838D8ABA323F0CE5F77137D
-6D996DB754DF8B1F5F863E88017EE81AF20DC0E577C4703D33D8D30335D12A3A
-43E0A60ED40490E1C17C56C8E0D8F85DEB830EE3376B50D79A7308702FC73FE0
-F687CE591A6BD165ADD468A91FA956F0896CD71280DD6ED9DCDEDC2A874B2FF8
-54A04850C55D6EF0510A57F4A92D3FB1CFB342B5EE8818A4C57B76A86B78BBEE
-94878BDBA7EA4695638C6CDA81B2DADB67F127518C61661CB25CFB241F483921
-FEE3C8B2780D3BFD3DEF7C1DD1E2E495FC2779E79AA42E691BCFBE6A179220D8
-2568A1D5CFE865D816C7DFE09525023178252D091D2176A7765A225B7A58F5E6
-31643A1F7F290793B04EDF45555F87C244802ED2F052A6B7AED10CE97B25C4D9
-689928AAC1D6359A9771D2BF145F3D8F7A5F96FCC2528F1F61ACB5EEA83C8CB5
-C8D77EA6E47460F507EAB77C41133F4CC8A7DEA55F4AA4B1D7CB79FB658DA6C8
-127E35F12C842DA381AFDA65DECF59D64CDE61D8E847CAEF1EC5D68642972D83
-35C44EAF0E96216490E3C2270FA07E38458F9A7C645C7A24AAB545459AAD739B
-6AF97F05A4BD6427E3CCC63CEC883D418604400A2D49BDEE8A05790CC79EED98
-7E1DDE7AC60E58F5905C469481C3DF3C2BBCFDBE9EE38CEBE242A4C89E73C8D0
-37618DF331E3D4ABED1F8478938BAE12DA99E1898782FD189A316FF97E71FB7B
-1D0C838B0379D8B288E3FEEFB3B5CF9E0EA17F4C46035E71208708F145A868DA
-6461FABC50816A6346A99025D0D5BE62C422309D0E38B1B57010D00BE0D37C04
-4B7811EB21242DCFF99531A7238A92DD539C57B37D57AF4F4DCC381BA2C116AA
-06E4C75AD3AFCFC79A51EDAD3680FE6AD3B84281109784BECCEE46BFFDDD2B0B
-175DC3A53E601519DA6E563E1D0938076626A851B60228E7AE1CAAA8309112B0
-1AE15047B51274ABE098001C02F97A9F7732B60280310BC1C77E3E437CC8B387
-257F33990F628292CCE5C0CBF9C0ED69391F1EB7ACBC5CE67897B60262F43104
-83A1AD89E1DE110119E0579462C478D3C96B134475D756905213654D63A25EFC
-8DD8E296C7C9822DF33EC0C37B6855A725957AE4BA59683B696471AE8006E20F
-99CB006D2871686D3F8061125B7479A0B7616ECA5AD312EA374CD3E626A3D84F
-4E321E2DB5754E31AF7C7007376F1AD295714B63ACB429D223AA7992B19798A6
-FBFAAC81F88E8FD4387026702070ABABB5C2619C99914FDE91423582F7A44173
-FD078B76F465E95060F3940BA6BE3F0D70D409B1335B671B4D0DD215C4F3E448
-C63FB9B6E3BBD2AE57CFAFC32F0C77D0D1EEB60FF42BA792B4B31D7738EE9EA5
-CFFB7CB2E9159C19EE968902ED797394D2CCA5819B69B9C929A1B3EE02AA64E0
-6B5CD5C75DD43FF3BA066DB8AC30580E839340568B8817F3390E1EAE183AA414
-17C39793EA81A0D3A41FAE03CBD0CBCF30B5AC1BC274D39046E1C9CBBA2DF6A2
-A9B2D05C754E5C7A561FE48BE039582E59D2662BAB5C70A2E604B3B12DABFF72
-F3544E789BDA8AA51758CF5C443DC40ECCAA7B90C79C76EFAEC0D914D82B46F0
-6192E669A054F9E7622BEDDF44623EC6B345D266F7B82003791B0116CF20BB26
-ECB0A3270DEC2E091AA64839AC2E2F3CF07C98F4259F38343D1B40D59221B570
-7CDAD49925EA04CF3313BC397F07C4FA88073EF9108B41379FE253E422F864DB
-4BA47CFF023329ECD166387B28B621D325901D52ADE7F7A88332120E1A70283D
-E904915349C01871C8A747B85A2953A82F93B137C75D4AD7E79BAF7886AA47AC
-2812C8464184AA44460BCAA5873ADF4306F7760CE9BA9246F450EF85279E1E61
-5CD9A6DB43EBCE8CFD8600349FB10E21331EFD113010D5F72C5496456F1DBAC2
-67FE71CF6A894F3FBD00C06EA7987D139575F362E3F2AEE1CA23B9C48D3467B3
-0BEA687B560A80006B985ABF70F876371D97492F89AD4A75350EA8B274CA65CB
-0962DE31D0A25F0EE8DC26FCA7AC4E3ED964FB64577E14E8BA83128C841C1AF3
-D9124FDD0EF2F532853CB4016188E93786428B0EFB77A1693CA03CE55CC50B00
-11DF451676C7B1A5B0E6D32EE76AC04CD3C23E53E146B192BB5992C1C28F9839
-95A0FF1E9F65FAFAE936023DDAEEDD59AC2F8E23F43838C28AD64C92A1E22AA9
-7206F686EA2214A9C6B8C72AF17632CA609A400E1612B5F09C077553CF9A06BA
-519E7BD8081B94D30EE5DD470CC9641A2BA412EC80FDC2A3D643812420D1A9B3
-5E3AA02A59297D99819B60473ABC13910A4248B870D48454DAC2FC609C5CA2C5
-6295B4B300BFDF1DBE1EB32B023C72A3620A837ED953020F01505BDD72439167
-DB676D7B928CB0D72C4400D6BD45189C822CBBC9EAF3577BFD08963D8F56CBAA
-58C48C426F61B5FB68F9B345ECA6B823009868E5770701E59D9008A9D2518ED4
-20DD45DC6A75F1C731D2EBE5CFFA71522885266B7F8868AEE1F950B2371678C9
-6D68D9AB0F46C9F9C53D76052AF52E6796B6406C21C348AA80D621D59882F326
-B8278FF5793CCAEA19C9FAAACF0EAA1674852BBD743D4228182FD2C57A848A48
-AE90677E8F78A6D7C05852C7FA2CBADB0335B5629A063AA4EE2015F75D4B3901
-54BAC73F18A56E594953392580EF185E4858F6988068B4F20612EF86A876D7AB
-138640CB81DDD4CE7C3122794F790BC4C28ED57DA2436F0EAE237FCA17FB74EA
-D32CCB0D6049642A9F1F4DE4A7FD3FC69DA115651729B8AC9579273B2D52E92C
-84AC2753C8AD938980FC6154157A9B6F16FCE4F164A7DB9B16F802AFDAF03905
-A27357A8437CA3C58AE04B7E6BBC5B7E977DE332E8BDEEC28816D620AE68DF6C
-8FEF700786881F71458CD14274C650AE40B6651E4B8CBAB438710CF1BF95CA36
-FC790D25AF295BD82FE7BE46D3F24F085EF14078BA735EB74E12F5C7ED32BD0B
-C352FD53A1C005AC06228A7BA720B6F4C4F646F78D31CF68D7EBF795C0239CCE
-BADF807DC5D67FBACA127792AC75A62F6F1F73D64AD54698343FDBA46E119F65
-6EAFEDB71B82C87DE2F8E52A2CA8F3866194E33DDBDE6CD7CE5A2048CB0069DC
-1D9B113C6F07BB27D4ACBFA9CA4C48BB3E1016BC0D0C1A244C9AA3F5775788BB
-1377B33F943759911292027D59926FFA8D2E0B42F13174C86CCC5E85DF8F690B
-C0213190B267233C97E8A00A1FEC4036D127B851B280229910447A003A6E177C
-09297A546D094EF676D79A143EF41AF32EA18FCED33E0333A269C1F415492EC3
-1030F2E5FEEA8DD4D3E4BFB2B2C3C52BD6A9A793024B8A4C922CD5EA88844521
-BF1655F0C60F26AFCC5BF249D3D526D58E9AFFF6644BF3CC63C1E34DC78F5DB5
-7EA60D5E9336082488EBE32ADA4C72398F41AB65B3D2A66873B5B21E15A373A1
-19C9DAB008F9019D4F75950F6FDCF08295A0288840F8D2C9D0D2564CF3281B46
-0D207F31673D32E7AF947C98BDFA5A0F103B9F9294522F75C1F77DF139C557C6
-8F2FBFB745FAD1F7A7D4DC44AE0059E087118A649E20D8C8C195C3D53702712E
-DEC4FB500BABBDC6F7CFA9404D7304B8B6075653C135C67535231BDC50497F82
-87A83FCD548EDE01BAC21533CD0B9580963B0D917634416CF73C8E63E8BAED61
-AC2E035C77E4F7F57BC5F6DDFBD78BEC5C63F1081CE70B28D93622A728264632
-5619E5CAEA299F82A893FA869A6109DF69CA925007F6581B4FAA7B1ABC13EA75
-A3880836F02B2CF4BB74B6EB89958205CDB5046CD44C64D37CE6C3D6D22C5DA8
-52474E899FE968F1EB87F9F6E9EB2BC293052001FFA845E135E1607CC9544197
-8F85CFD6203C8F85CD747D78328773442B66D34DE4BF167037C8AD551EEC6330
-C2FE9A866EE43C13A866FD060BA2FE71AF820ACD116E7403098336D2D6186562
-8E8A4D2389A2BAEC96021F8E53B2F819DA1834DB4926B4A28A65C4FA045AE35A
-1C1660F7C3887B418155DB104A5B4C9C357A910235C4796495E70EE20F27F1EB
-B820BC1812BDBA2BC603459D531D3F80001F33A97D4784AFA78490EA731A914C
-35E7E4B13263098E67A5A229A10DA5DA4B9C7967D65F084FC415D4562E7881CF
-F96A2A19E763DB025EC53E9772BEE1FE029AABEBB6A0C63A767941E507194460
-8BD86D66F029ABAA469B29211365FC06D76C9DE48C76656C9EFCE9DEC40A8CD0
-0325DACC7595CC4537647A8D2BE41E9B65761407481A8B95E7497C4AEE88ABAB
-62F14DA187156A45ABB26AE4B390E6B5BE999105EF6247B1CC1CFA1F67F53023
-4CC99831C018D021BFEED1A6E2DA1E22334EDB644B0452C24806D4A6C55D3244
-C9EC8D98BF765CE83DC44C5B507F7A2021DD90535D6C8189CCDE80F34A803E32
-9235759A6AF46652DC3D0929139CCAA9A4AD33B01FF0D0E384EB4B4FB8C5627E
-90A4A9BFE5BFC56D07C663C510C6E68F3D573BBDA27A0A5F87FB039CE742CE97
-E6F839579FA56E97DBC48802836942118E631C2A6722F26B1796EE244394191D
-B4794E467EF290D47D1EDE37F05C99CF4B6B107C23751402CC93D65AD7713C86
-7855D3D5903D85D3CAD3D399B9B1D6F82E9236FDD7D0C1E8768541F5D71E4FF7
-3B2627BCCA0ED0987B683DC08AEDECEC99D5ABF9002E0DB6B96F986D087097C6
-A37C7B438474736F4C302D9F96316787E623FD7C5870B0722CA503302E0D1CAB
-E0112744ABA7A4BB6EA13871EE4378DD71E6928AC777E4F8D3A79DAEB764F547
-F63030E8485A3AEF2E16205305AD3D41856413B84BF9444C58B94AD2DFEC4E0C
-C5DC6E3BC86524E6E8FA3A8F736FD528F3B4C2CBFC68D08FA4BE45E87D942E18
-1D7AB745D7BF40C8DD957887A6F196558053F1E9A66A3004D844F468AE2020B7
-C732682CD4CBEAF96D1DFA0CD7A5340B243512E01A785C318AB7FD86084A3466
-D5CFA597BB028840A94E03C0CB34656030E7A6EEAD68C5C33E9C7F4AAA07620D
-970BF9377CF44B224E59B117CFE78AE5C73681B87415CC03C63295B857DA0168
-8E815302A1175839A1BCBEDFBE1EB8BC0B86CEC817361892F6E0A26F7290E44F
-7CB4191B53D844EF577632A6C4B71C23C965754C021059E1066C106252B0A333
-E70DE9E1536E25F45F92E88139D38D8B37E839A2F38A5641797AAA9A33EDFB9F
-6703CA0490BBD846AFD3FFA514F00474C42E5637AAFD232199A754288F86F223
-8D9584DFACF5CCD498F4D525836F026C2C4EAAE67985A1D0E1F9932E47265A66
-74B02FC39F8C576B45BE94363269DCAF4E999106BF1E91CA01B735C859CB3B5B
-D4CA139D05ABFA22E943F437FE85F093921C1A7351A885F78FAAA347C777B640
-1E8B17D3405244F338B86EEC118D8BA59CA6EC06DF32B379B95B989DC6AA7035
-C51D0A6D55202155F91DC63C76168C323AC4F396BD0E254686E20F9C5BB4A184
-0092CB9A16C8928DDB70E3D4568B18BA613A32D8AF9934C64AE3ADF6A4683FB8
-EB6B330D1C9D65998CC12DE9BD75C5AEFE96AD6218FCE6831B29FBBDCFB006A2
-087A6A7A55799B74FAA02C1EF6EF22FD2F208521F6045A2A502B26F63A0DF8E8
-4749A7E80072CC9B0482AA2C5D05FEF9D396B443F4223C2E31448E0CD3A81A2C
-75260B7C95A71A4F82230A7E5EB2B7BD479EE5C4FC99FBE5B838B40284F1ACC6
-E0A2EEF1CCC917D7A954F1C62FADBAE79802BB00D9F09495F66C1C71FFDE6C35
-7B5F92AC39F5B5CD3BD36AA6625C49CDE8FDE42BF886977994D9521430372694
-F022E3573B47F1FD82D02AE54915177DCCF0A28C8F46FAD69F6F42A30714966E
-A31210E7C7DA5EFB12BBD346B6E2CC54B1AA68D6A36CD1ACFC22422E2C69C284
-FD474CADF22996095252D28D2B7C4DC2E3DC8302E56A1B2C45865E5FC0F30678
-DCD5F5F5BBD4A7CA6C5CE3E6012CEFE13A0BF35EC3687FD33606C80D7086D6E9
-09F85374D9FD4FB4075C41B3B8B2DA592DFB8A45BB0840C52F8C1B557BCC5F6D
-D7C48622E8E05A7C1AFFBFE18F847D8D719D7F6F0676F36D788B9ACC730D1E22
-D9935BE4D12BF0AA8A28BCFAF2605F5B92CF33C2C29642466BBAAD49897814BF
-01B48B4F585FA34C035075FE81FFAF0A11CCEF4FC0A8312DBC3FFBDE5D0BE3D9
-A0F14A4346E5B6AF1B248BB9D2922B01A0310F26664F4C4D7CFFF42C23743F5C
-EDF8398F6B56683E8637522FC01FA23E1D90BA6AC0AFFD2154DBAB660C3D8D50
-165C52ED71893C1E5DCFC0E8A16F0587CFBB560F7A36D2E8FADD4B51601F8EE7
-D302202266555F4C2B9DECDBB9139C8477A5F920A9EAC268FCC4B6F0F5221CD9
-66E7A162F2EDE869EADF43F3426BB5187A3C56C98F4C8E318A91CAC3EB5E8A81
-F70911F3108DD1829E1477D8140908A63DDC188A153AD6FFF9EDF25803956AA8
-2EAE342EE5B6D742DCB6ACD0B395F1191BAEFE6B4ABCFC545D63CA5C4A93B084
-CBCE8F11B0FDAB1F5E905C0FD81977C38A605261283D51170E16074300E0ED6C
-71CCDC3947C6EAD9EB08A0C8B0E376313FF292B2798DF74E24FB1CB97DA468C3
-D5471B8986210C6C918D2EBBD2AF1481B45AA80052BEED303A3C4F62BF61C51C
-16C7B5DA640355CF9E965C98B4589DCE64DBFA471A9D1E2CC595C1C4FB1E9C24
-A79C182D29BE20EFE708336ED99C099B73C2C6CD76E33CBC5CBCF9F8FC9D582B
-A5146793C6023A6D348341F3FE4DEEA24F383250DE926415813A4D5CFF0AC0F7
-0859E06EEFFCA4512763389D30F61B78D55E2029A6C434D4C6AE34FF9B842D08
-F6D9D80202A1943F7426176477151D79AFE2B04B18B862B4479ACD9A574E6F03
-300CAF6FD06088D434A4A8C4E82EF62F8C9FF511814CB612B7703045257C0E81
-B6E3BE158716443CD8A1B0CC9C3DEBB7A7209D419C8B4D0D9505E4EB803105CE
-F13164AD59435D3492E97A453E2C4C20926AD28C68F077214F792B8A53AD65DF
-9C64C0A6C5D738090FB9A9DFD5E815E463C4A910320E562611482C2499691F70
-0729920028EEC50510D86996E1992D206D9DB4154A2789E2FECB006698DCA0D4
-D9D2249F637BB1EAF1392AFC4B15F5204507517F33BFEB755A6FD123C7286C84
-147BDE88B7F2D1C30F5407072EAB1FC57298944B1DB8E484C7A00E507E02CA60
-B2FBD8B4D2C90D335482095104259790C1D0B30761CB51076F70B1FFB11C8ABE
-7D2CF73B39F62D7A89CBC61042AE125557492E71D42CCB9938EA30E4FB54D79B
-B231AB1EB11A165337E3D60F7432F99F7751F8154C88F987CA373FA3D8F53396
-EBC264FF06328ED4363A7B8DEA823AEE38764E9C4374431F695B48443D769B39
-1C70BAB440701C09EF3DC1982A6B9ED93A743055D3368535DE62389DF77A91FD
-843137AF92277CADB3656E89888D04E83051053BBE60501D44BCA52F588F7094
-B2BE919A6E1A5E871BFC66E9AC5426385381C92F061E495422A9EDAFC3550E04
-FBD39AD669FBA58E27861F5F8EEB68FA6CF43836FC89CEDF8A7F0C40C4D9AB46
-32CAC6E577206C6C96BEB49E034C9CFF6D93AE38D943E8733532B2611482D303
-F26CF863FEB1B2EA26907B140EFB1F006943F7F8BB0407C9277EF8054B7E4B21
-42DF8D189D4666CD18D7B2CD055E3F308F542B8DFE44191497589916E047D772
-3A49FAE265259300BA758E9E4AA929897FB1A3064341F50BFCB1BA941C63D2A5
-4F1D1B6F3A9469C40095143D239FBD8800390C9692D85743FDBD0236D53FE564
-3025657538DFE905B4266C6DA9861D62CCBA71773717D432A968A67624305DF1
-CA737DC9141E2B53001EA5FB230131FD58B6AED2122FA73386FEE56F6A00BE39
-88DCD9AC72D1EE3BA65845B211F50B6564FDFDAB5D700A503A4A1C56CF4D6FE4
-6A59D07DE72398CD024D77A167B96690F747078CB33BEFD96046E62F1EA3F232
-7249AFD6890C0618BAF6AC5CF5A331E7A17BF5112F015C7E32118633F54FB9B8
-9B630DCDE24CD3D8DB648FF875B6F5AB697725DD0AB985EB96CA5E4C38953385
-DBEB1F869A464B95672983AA464FA8EFE6AE5D66CFB3FB9BBBC8E76DF097A290
-70318DC19C92E6E52DD66A90C1490FCFC269313380666A5E1BE866F29A52DFCF
-1E4CD96E228D709D2A247268693100A6BEA47D46A991BEBC17B4923CE260DDCB
-CA8CF0E2A7702CFCE34B6B4C84ACB3619505E83CB15A00ADBEFB85AF76459D99
-4F13F5387C45E4A7B3545F940AF5B530CFB4B87EC62182D928B2346952A9181C
-874E562B861CBD21650CE8D45B69D57FACBB65633E5922B2421DE294C678CD1A
-A96FCBD57755BFE286B2CB859E7306FCA8D5A5647DD75CA4C88F650066682EF3
-1AAD5E5075950ACB0E6213E049747D50292FF681FA9BC10046A50A24A4343830
-F6383D5C01CCBC45B639E3E77408DAF3FFA2AC38FEEAE066E589ED2558B7233F
-46CDF10B9AB854585BE0EC1EE999AD024616AEBF8BFBC7B62FB4E61CE39FA982
-B49F014291DFB82CC597FC4458E147C7D1F35A85F43710A7C8ECA4E75297F670
-BC84DA0007590C97F264761F2442D0BFF36CDD7CBEE8309ED328F9382E888CBB
-BC797D5009C40EA7244274C38C9ED0A68D2BB5DDA1868EDBDCD77AE2AA177B41
-C0B4189AB13F26541CA0A85C45AC4264AE799D15383CA4570A72F52882EB0529
-0566FCDE2781C4F803C7530D9DDB092E9427AC9F81704A7CDA0FD244ED869732
-FAFBB1F33A02A72735AD8A0E7E9E2715825B06E5AAB07B534838C55C706E4FA6
-122335A37B18C23EF0413E80DAF87D5FC227F2284DCC2F4F210F0CF399F91263
-E493F59995500395B8636EC3800016729E7AD8F128A1915DFC887592D5D50171
-CF398265E5F0EF52603EB59188255546B58D8BA2702E76D99587172472DF09C5
-3CAA541B2B700FB971AC9EB89276D6040A110985883E8C846BB8A987BDD23CBD
-5D3DE231A8E3FC7F34A645E14C9769608AD78DA48989FD071CBB4C16ECCA8A85
-4E7414C4BE33376A747F00EC9DA3FCE5FBCBF3D11C9286F338C39009E45DA5EB
-00A574619492AB9251FE1D4927AB873CDA6FE918E84E71868D7D7144E04C49AA
-245831781F7F649174415B02D8557C9ED894096235F73E65DE886969D6BFA347
-A2883CB8FA9076051FF73D2355F0E6EA80
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX8
-%!PS-AdobeFont-1.1: CMBX8 1.0
-%%CreationDate: 1991 Aug 20 16:36:07
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 45 /hyphen put
-dup 46 /period put
-dup 65 /A put
-dup 66 /B put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 76 /L put
-dup 80 /P put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 90 /Z put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 122 /z put
-dup 127 /dieresis put
-readonly def
-/FontBBox{-59 -250 1235 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
-7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
-EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
-7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
-AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
-E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
-4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
-5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
-611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
-D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
-EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
-35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
-ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
-7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
-C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E42779FA15EFDB451F
-53495CE8EFF239E4EC442E1439594549D45F5276F93D496C9AC712D762D0B702
-E894290BA028837304AFDDD8BAA6564E9DC307A14A7A206550FADDC7784DE3BF
-3390188BBCDDD929C82B1D7B529553BA75ACF5B385D31EE3902D96B2B5DDFFF1
-9F0F90FD791E54128C1717F313486896868A34FAFF22E23CEF046D02C77D9B00
-9908AF6DAFF828B73CE5D40C528E23EF28DBE0801531D20EF59BF3B3C6D26159
-5180FE8F6A479FFE339D9B69D77FBB5FF93E5445AB5F6D857461AECB43532279
-B7DD9680B8D69667EDC7E0F9737ED7945925FF1733242C680F93F79ABF84CCF7
-747DB5B65293739457BE2FDA6740E4DB8AE2914C3935B6654405220FDB594E3A
-2C749FBAE2CE1A5D217028DC6A01E4A3AD34EF5060A64D5E375B841606244ED2
-EFA7F2E89936CF07FCDF8F4E40F35E6B27D8B517049819E2729E65F9E8B2050C
-C004440253C28E0D8A0FB05FC420956A1A2ED8DBCA3F78B50FDD81304F2CA600
-22959C77D6F24A9689EBA559562EB03BA4C376C3E679E9D660059B3E8B4DE6A3
-51238BF58F7BFED27E3D8D4D22743635ABE7F0835108EC5AE0D7C327452D83EF
-C0C484933527162B36A81F9EBC9AE3C76BAC7BC9E69F435839E923784C07D4CF
-C046F47BD87D578EEA1D10D898080741424078C9FE03D68B60E70A30F9B90CDA
-47C73D5E4EAE3B46FF0496D74687A06DEF0E9B1149A2C4D6DFB11836633D0E6E
-0080A8CCB5CB864D1D13F7C878C380C7BD705934E53A4098499B3C0E6AD34B64
-C04E7D891277F436026E98254D15428431210576D29E2F8283E83436F0919FD9
-7B412601F38E4DE4BFF8DABA2616FD85A843207EEBE62AB1FFCB36A8641FF460
-D4E47F8B86FE1F4E653BA9A2FB1EC019C4FE3BFDA9AD9F4CA254E4153B3AF9E1
-5D40717AF150B5C2220415A46DB764995F271845AA546C4B48F35FD2889BB4AD
-9B0CAA006AF67495538104298FB6B9ABBC2A5CB4C2C3246ABA338DC33E4BB2D9
-E6BDF72A72893F28E45714652357AF5E396E6749246378618DDDE2FF61FAB507
-67C0FF995AAF62162FA126663CEFE5B1B87625BEF2BCD8C99593D541D270AA12
-1E246E70D9ACDEB2B8976557B51CDEB981B361006AF6DDC34F762ACD34B95482
-F168584F785B2BC07404BAA67ED47D101BC2D5823ECA435FD29F72890C7E5BCC
-C1E7259EF7AA3D73A8D7C21B33F0B000F3D6DC4BF20398039C8BC61D47E5C712
-C57C996777C54D1AA71402A069931F59E978D10D63403B65876FFB4CE84923F3
-79C14DD041BEF0D9A544BF93B346802FEADF2818C0B809BC4B20AC99DEAC8907
-3C334F019B96FF8FAB1B30415182F8BE213897CD7953B53E987E70A15593CFC9
-4879F7D2E1330A5BC888459649DC812130290B664D66FBBEB2D3328ECDA583C7
-0206382DFAB9124EAB2B00BD2E709EA0B76D1F1F1CB6BCCD65FA1BEF63829E34
-0EE15078ADD2ED365BDB98C568B7D6A580BB553B60AFF73DB0104602AF729C7D
-CFC2B6D671BFAC4E29F6B30FCDCE6C72F720916DFA9AD451CB42AF48B7247AEF
-D39F0AEFE1B143568B0E845D7DA402FF1C10A651E7825EC3EC8F9AC26299A10A
-F67C1CE7E6872A6E2DC1BC11A51CD1C7CA473384F3B1EA1C3E2CB7EA0952CE52
-733B667E8C85EA1D2573A6CD6C2C39F1127AD65D2604CB61146FBE078C7FE638
-4A3E294E38838680540B4CB64783814CC646DEB23B8EDF9D91D34F9BB16CA554
-18C55BD861CE04D6EFC5A9FA32F60AD87E6D6E9C52E0D224D2D4F1603650AF76
-10A02437B0B47CAC4A17FB85F9AF841B828918A1E2174650888ED1DF292EEFB5
-CA805ABFCF172DA8F9E27E5CED9B516D86C90B5B9283D24CCCF011010A1AF1A1
-B5A8BBE02EFE2B6E0C980CD7ACB7F50970A996C480A4766B0022BE590ADAEA58
-BB923E40FFBC88687042A8A23E18930C0C67BF89F37AE1E7D970AC8F53C05651
-65EF4193D70E34F2FF5648BF778AA214205ECD780EDB7AC77623FEF5971650CA
-4EA76F5835798ECAA6D595DE832354B3BEC5E49628C9E83F1432A0B3BC6B313D
-204CEA971A521F0A5ECD60862B29AC6D886EBC9A177279C4D54F94DC26ECB3C2
-3DA9665C1313D97579F80B3AFA9009DFEFEEF6A1D99CBB12C47893853A771F36
-47A778E4EB39CBCA44EA138CB7011713AAC47CC592938BA8C28F116603315037
-BE580BF474D8E0515F1B354A5130A593A0554565BC49D407866CF2EEE0F225DD
-C4E712B2BBAF659E1EB6FB45D828C1F6F2630F26D62830E8B31717354F912A5E
-3555843F5A84448F3EF127D598F6AF5DB3FC5ABB55A0A6FEF4E1E66BFA97E32C
-144D8DF78D41246462C1ECDD584BFF024948C50C8EBCD60F1589100EE5325ED2
-C1D48F964BA0185AF7BDCC448E6C006B01D8BC30374CCF0E7AFB52153E774DA4
-104E55049A2335A0BFF78B31792F9335B3BFF55B5E631307519FC3E32FFB74F7
-231249A90458311976EE419F1A081AA021C12C27D1795FDC6F010B4A46650751
-DF70E3D1D021075B0AE1E15FCC34B64C55CE8DE21268C10F3FC68521C12FE9E3
-E7B0159062E76843024AEE2C45652FEF654E72C76DCA4943AB868AFAC65EB88F
-B83CC3977ECD7C42A306CE31ED7064FE63143944CAAE9B339D306721CDD70DB3
-098398DDC29DE292D1A6ECC04D833237F01B49C549ED9D13B8183B5E3FDCDAC0
-AB53A13C187373E213E1ADA06D32F0D929CA4F1822F23D7EA266756A8766BF29
-E8B774209DEA4B1E27716085B2018E0B631322E07AAA04D4C61E936E033A80DE
-75C2B64C576D1A2B35CD9A5F9375AAEB03311E97E736B80DE89B7C5FB37F4E64
-716249099BEF6FA202D4C0BAC131691B00A1CD26D16C6C61C9166E455CACFB29
-D93FDC8E20B8445DCA100FF5EFD9CF7CB39BFB7ADEE4E9FA272EC7705127EF76
-1B6528446BA6AA51D11D7699F369DA9D880DC29B2365E902ED7639DB905931EC
-9C2F2FC8A74F9F56D359C689E3F05E17DBC6086EFF9B4C4CBCB0E4EE55A44D7C
-C4C7AD89976B240C6489C36CE66357B64CE411B799470CEA7C36AD85E94B47B4
-FC870EB8068432B047E77F8343EE99EBB1B892A9469A5F52409D4798B6ADAC11
-C72B406123F7B2EBE7BEDB707BDC272AC2AC6D1A70EF260E5F09E0886C57124A
-F40578F0D6ABC54E30D95E42FF186643D4478FEFDFE4253A0C6C2FC15BD05358
-F76E389E12286DEB315FB384AD75FDF57A3B3EE779F1F912AB2E8DA913F6D4D5
-23CD14208DD9EA3CA5AFF3B6C8CE1E49A7A63D1C1D7A52CE8DB0743F1329F556
-96CC35449BA62E5188FBB1F81D8F399EA5485BE2BA297DAF67179E1018497BBC
-E46FC57E3E2331818920E9C7BE8809B3E00A3B10CD7996EAF62C9C1FFC32CC15
-9E08D36D3EA27004E19AEE20613612B540BB47C93FE87F7C79148B2536107F84
-64FC096105BEA25A12AEEFD5B811531771725FAD7201E029C8EFEE659583A1A3
-2215FB6769BA958274275C1E3E99478D3BD6A00C968C59142E30A549D7E9E5FB
-D2C61229BC9E11750313259F4D51D09AF4E1A83414AB7194B30FE2357175A1D6
-B60F1A7710773E883D5C13725257145DF6374522800F56F25A81EFB4AF1D012C
-F42B82DE6C48740E71502F535B05EE5E065A20B9958ACE2E18F76FC0C04D5818
-5F603F68604A61FC0E73C9B8EC87A18BDCAF7E70069AC4304258B38580E1B6EA
-E27E6DD11DA93FB4CAD4F37D4455F3181047FACF257BF42EEFD7CFBF0C53D5A5
-B19B33766A9B0519B738949D1ED583338AED8335BD6E4135F3A8D810A49D2700
-F186BDD9EA261D3D018070498FEE5A02A57E73D5FA96E6E3C12A78B567A49EA0
-8857EF4534CD4E53DCA372D68C758840F6E0314DCC3969EE093FC8CF2CBE6229
-327A3C8576C6804D10A8F0E32B1A1C19947ECA1CBB7746B9E53026F1B1222E03
-8B3E2F007DBF9B4539AC633A812B7900DAB48D9955E100D5B0ADAA1F11500A1A
-48AC3496EE0997D0E326F2E8E17F443C3452E49C9C8BC1CC7DBB51DA4E8DEF47
-ABB2DA939176F3AC9C98E6C8F2D7F0D6FCA55D9FAF7F6967ACD67DA7E548FBB0
-01E157EE7F2B235A21A7399BABAD2393AD792758D2DE5AE9F78E5151176949EF
-86AF1F95E1F920E666754C6623B45632DBBFF067091DB30C423780A744A4A30A
-9E9C6999168ACE789C93E161035A57D708FB134B7BF480F1761220C0C212945A
-DA738A15F8E74036C57909CBCAC0D36CB7D2177D3BA99D12A107959D7562CD6A
-8232E9D39F7A0254B185F65BD7343DDCE20F59CE03F1B9037C5342E1C0936286
-475C46B46C5409CAA8A8EC31A67F3C6D9C8BCA67B337A18BA8ED0A60D16C65B5
-704317BA9FEF392D723527A8F503E316FDB229A8B5194D4E21093A0500F6DEAE
-1E95D60B170D2AF780998F7E0CF5A67BD4544BF844C9E72E6B9A063FB72BE992
-AEFF776F0C24698912E2418DC4045BAFAE63DF39934C47D2A4BE285147858383
-347A1AFDB016AAE9EC7BFBDA2D5372010AA05E148C9117F004AA9933AE7FBF7E
-87505C7B66E2758BA7A2F222172513F007616A251EF1018C7F14673ECECA221F
-B1FEBD93EEEB5111B5274568ACAF273632CF213601BB6D30FED8CD308CFC9595
-0AA2AC231C6C22BFEA3D849670E3123A36A9E6010ECC55E30B50943E7BA26119
-34B928F82F3F0ABCFDA1C2F227CAC37B5A8A235E43D1A6CA1DFECB64E9E377C4
-3EBB4B063914E7922ECEBB61C6576B972256FB1F1AC200B89062E65F3F536DF7
-0A5303F32CFA2754337CC35CA605B611A1ABE6BA38C484D57E212B0743C3B9EA
-9A5DE67D9CB3BCDC651B850467126D67F7A6BF14AB9791C6F1CC6EDDC01387AF
-AC187F4AD7F471A5AFE9CE5CBA10A96025A33525C5729612D8154A2AF102F121
-8FA0D6E8C5ADDF542BB6BC0A67CA9950354EEED2DB48F474E1F75844A6AE5896
-6AC858AD8EF345A4C9238E5A8D0EABBAE31898C509C19CF089B2D9D3448729CB
-86355F1EE03DA9EEFE344EA3513BCBC0BCD0F952B37F1BB62A22DD022309C70F
-D8808B91F719A91A7599E82D0CCA905992BE715245AA3C52A128C90A2943A133
-4291851B659F2BA7C6247F4568B411ECAB88C7E05921B0880FFE173B461F6224
-1EFC2E80D55C55BE5F365FFD2080C80CC17531859CBE5CBD44C2CEF91254B4F9
-2C0DF8BCA5572DC6F4DEE2EB9B0057613E3E6A222E4E5A4A73AA8F02AB52C166
-B064DD7D9DDC0DE35991E39F1DB57166C683CDA8620ACA57A41C7751939D371A
-E1DE7F445F1AF4CE042D8DD0E38198838479F871CA033685BBD9EF87446F5F37
-A64A83227779E154B7266B205114B4E2949D5FDF36ACF3D2F96891B76FBFDBAC
-B27731EAC1E7C60BB83ADFC3FDDF0D780F04DD332244204F5F9626BF28C706F6
-A8EDDCAE4F1E257B2FF631A8EFA2098C8BBFB0900E3E7D87FB7239EBF920B93E
-120BED51D6A80FBCB1146B904C46C44EC50316AABA372EC8AEE862AF10E0BA86
-37D90D5F83BFBE98FF9973882163C5883CE5715A3F697E3451DE3553EDA55CC0
-67F807D3D100D9BB29746D18CC17A10DBC0CEEADB7E4D4DAE969CB87480D828D
-78B7FC174C85E6D2E49F2E9847B8E7766A8D32B87B1AF0F5E65AA7416F71E1B6
-3BC0F72A512B206A7FD48C68988520B3FB1BEC77074C49DAE329B4F7299D4146
-CE1E4C7D3D440DEFF5EC3ABE389C622247D99D8745CB536E3564E64E90AD39CF
-CA6F1EEB65FCBC219DE0C3A6C8A8780250E409DBFF96955CE7CF11D04E18E812
-F6FF00B189F86D0813A426EC26F1826784BA328E4300EC75C7B67D6AC7F9D169
-C5C02BDE2A6C99B8D694FA30E46A7F1CB72626EC268F5A3DE7AAD320D8F1C85B
-1AB2222798CBE65A0F12A4D8084B06784F3547B2CD45D8366B2D24AF5C5E9C7C
-8DC302DDA8A5A623D1F5FC7F030848AB193E654F782BF396069B479C2C5C8AB3
-ACED15A81290911DA64C1861FB8FF996BC60DFABF6C71E74BD5E67619F27421A
-A23060944D8EDB2A13B81F98AD82C85BBAA27D2CBAFF5906C0EB5566E9E26D12
-BE6467563A6C69F8F9BB1509D769A52D41E5466E37B9EEDA9E3EFAA2E6B2CB73
-63D23E5B39EA9150B7410E45492A8E290CD49A5905B1A52C268172D54D9A2638
-048B3BB16EBA68B3AF660FCDDA5A709677BE4CFCE92298BC476974B9A3717E97
-EA5BB6D87A28819B94ECE9FA702F82142DEC46E344504D529F771F4D9E030392
-DB7348CA8050C6978A79BF0FA1D6223D0D3D4EB6D0B5924FBB524C85600CB414
-DFCC943675D58E2CB563767D46E9B8D5A20D076A33C0BEE3E4950F29C74DEA87
-150FD9C1AE12DD0518F1BC33CAF0EAD1A7A892397B272945ED43EB9FC3766D96
-C21A75B400B2C3C3CB7471DB8F0338E729FF13D991454A5EF1E772637E5E8C76
-24D6B4B44DF009786351E063E3B40C356EA7B04555A261080CC82D0D51ADE26A
-B115F319D3AFD50007C195983FF2CD575B79DF8D5E9B722E2897B217732DF0D6
-785FBBD57C5C0C64AF7AB357E9A6910FE4EFBA82C29CDE2BD031929FFB4A16CD
-DDA6C0112A3FDE98AB50381C5C9792E4C5A6B85446217F47DB34254B245794FF
-D8ED1EE6518ADFA20CC481B51C5FDC95B1E3600B6A0D17394884FB92D621F31D
-9BF7F94B409261B95071852A308080AD6525B70947EAEAE8E4333E94948A1988
-CF8F385E4117FFA14CB1A305B551DA7D8D9CC95838AC9FCA953257F877ACBA6E
-BB4764919FDF84C227A1008FFE31EAAD64D8D41BD2D646C60D7FF13EA9D907BD
-F47F82BFA6181D2D8E4E2925C59BF62D0A73EACFBF2E9A2B1F20B4347860EC97
-9B706F635BC477228DD1C678F2CDD66FBDAB82D2E2A0912C3C2581857B58BD79
-235C26EECF260FD524D8690E823693D9C435E23124BCD02A7F64BD16C7F0AE7B
-09E3658C087B5EC3FEB86BD0B080C46EDB4AFB810E5254F48F15C78EF2BAF44E
-E1C46DCAEF32CEF80E7E195367F2DC906CCF9E0672E9BBF71F6393B36F46BD4F
-0C17015DE74F41872577F840A21F97EDB949A7670B1E3FF0FE14929DF0F98C6F
-3AB46B0948A8415F985797E0C88FF6BDEB4834BEE0EC1391163A2ED1CACA29E2
-ED824B76C8252A3C56529D7C16E5D523E506E73BDF989F78A352280011FAAB8E
-EC5C03FAD32097D982C408834C2F5C0F0DE894E2793D3D932DFF016E23AD43F0
-163947029B30C255467F27584E04C96C5A48C0C2435C2E2DF677BE8980A5F1CC
-5F6E5BA6BF9C919216145F34E50F5601BDD5ACEC4B6FC00010D8C7E6DD029E54
-D8E4CAFB6ECD6E0662D1887261BDBDC8A91FD1652F93FDA8A6D97D945FE1D9CD
-D6DA60FB53236FFE590982E234874320557FA5AF06D1EAB7245993B511F49CF8
-BCB95BE04F280006DCB997F8F672E1020D2A49D988AA723F896A178F8ED80197
-26CFCBE52DAFC2078D65C353769349ABD475A557166C7610FB527343B9282A07
-C8CA4E1CF5A62F2C03DB0A9F47977F8B5DCDA8DDFE864BB67FE9F7C25F7EBA7A
-0BDD51E7DBD987F1D17B14B317E380791AA420B635341CB76FE0722B542F3B66
-62376013EAC1814DDC2511CE2F1556C47F914DEB9F72DE1711F2551B5635D57C
-76B59B919E5211BB14FCC543D5669E179202B41772FA91B5296EEDB6082F1D00
-4E49A8EBFEA6E432EFF3E6EEB745893AD9CE03018CE53F1E3B901100C34E0CC9
-19AFFE5EE327613489250D8A086D69FD55F0AFB30E13E171FBC5CEBE0F6F9B13
-352413361149659D8B7E731D0D9470381F435AA51D5FAFA2722ECA5C77B5AEF0
-E893A01D7BDE78904A5CBD410DB77706AD2D61227C6ADF3EADD81DF33D10580E
-526A16448C6CDF49D305FE4FA0577C8C73CC6AB8EE6697EAACD9906DBB94B0DA
-9283D4CA57B64776694D4F15DB8EA4B7F3D3070E191469442D65935703BF958F
-3EA3BEB6E55F59C0E3FB6A36EC6E4C1B92B0FA8DB032BD5F4E77CABD4E67A2D3
-2C05816B6F96F4DF8850ACB7B381F9EC35533881DA9A32F435FB2306AD97EA35
-5C5E94B0AC8FCEF3F85AD11A986E01282F974996914B09AF1C75C60EDC6D3212
-DF3070CFCB2C896757C64D0B2188199016746F3D02F044B89BEAEB6E0A1BFFC0
-0001DC8487A7A694ABCA8A277AEEAD517922CE9AEB647A3244675CDD6A01CE2C
-976824E2A1F3DB8946DD9A049099427D0C62D0087A7965A70479ADC70B3DB26E
-B6182C200FDEE485CE7BFAED3334708476DA7BBE88AA20896C4F0DB5708F100C
-B4D604B8DA07F585A8BBFFB0F1130CA9F6959B6C0F8AD55FA58C4FC2C32462E3
-B3D90B144489C03BA7CCD6305956F353749A60D13B8F87C99F3E7A9BC600E1AE
-71B67C0FFB65A38FB3443D7E99FB66D4B741C3CA5764EF4702A3FC636BA945CE
-AAE75F02DB5F0CC02D260827FDB53357807004DF1B6BB19ABC8828F82A3805BC
-D639B776C8276598D3F5779BD01D43D2EE9621A70F4A6C56D690
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 58 /colon put
-dup 60 /less put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA4111C05446E55344D331B150E934
-7C69AEECC96FBCB329DFE5C17A31DA357F0E30BD84817752505033A93AAA5539
-EA842580D4B65E9ADC769A091DCD502F8FEE274EE0F067741B545E2E4A78B60E
-3234C2AD3BC22FF09BC3AAB21BF036838358EA99497487922D1F6BF29988712C
-DFE1A9AC4440249623F24BAE7229DB555FCBEF702F1CE7B16FC0D0B44300BA8F
-3DE69C52B1E14C47680AE731FD5BDE84C1E73AC117A2A35DA7A18256ABCD353C
-844696F05A787DB7A169C21665E836148A42994160285FBEF4E43A54B00592AC
-32645BCF1A1E1746EA9AD40EB612922E37DC2655CD6F11613AD0A11ABCDDCF0C
-EEE1CD12B15ABB8B8FCF4E97B827CEEB7A506AF47016CAAC6CB9B266A4EAEEAA
-E072EB1F0CC148CB889918D95C2558FE811B2A70B508BD16FEEF3881C65194C0
-86FB7F6BC522588EE6F1DAFADE11E32F600D0F6303F47D278E6665C18B9B8CAA
-6B84669F65D29752906936E6BEE523F971494009CBF61D028F7E7E0F2657B91F
-5581B1BF0D0013E25FB5002B65C6CE10BF8DF11B77B1A7049BCFA0BB52629C1D
-18612FE2A65C5BA06EE2B63C21E27EC75A018981E8E69563032C000E4FE9379D
-1C6B2FE659AF43CAD8348D7B19680D5210C9502BFA7BBDD7DC2B626F625631E5
-06DFA85943E0E3CB35A1CCF1789CEB83530EBF7EF96A76D1A6350EE5A839EF13
-11E0E015FE22D0E73C4A23BE9C02A1AE87582354F8CA862B20F8CB38904A3FA7
-F9D1515A56F607DA052D2204D9AF7B61FE20395F9D10502D63CBA744CD7C4F92
-03415B015FE6570ED2668270561567516C504201060F7EC3567AF3551E58861D
-F8F5C733AF89DEB6876B0C89A9AD24F5F597E46E0F86A121A1822575B87D02A5
-A50FE72601DE855716B85F23403846F02A392D49773BFB83AD7778F6DE7133F3
-A284AF8198F4A42A8A48E2F8BA19CE3D042EC1FB144AC36FB149AA6DD2B74C20
-1F6CF609118FB4866669347CFFEE62BA788307F7FA69C18576ACDAFE958F982A
-5D5049CB837DF4EFF9AEBE76A9174C2A8A2A560DE76C7A2314B50755EF8CC8EA
-F898CAE7FE1E2D8290FC52A169BEE4D5737BD9DD8B90C460F83F0BC8E997237F
-1BD8BD38C3F8BBAF8CC9286AF11D50198F8DD78D19691A30C82554D138E05B54
-B7C21AF559B2BFDA74285CD7BA53F5292D52D1CE7E01991D706C2F53051DE1C4
-3AE12FBC761C540C8514E3072F991E8D7391C2B3C974AEE87B846413FC167766
-BBFB063F8B8477D7DFF2B4A45D8D6591291D3BC6810BEE7F9B55169985275E7F
-FC78A601867142796E5F54C9A449FA88A7D20F1D50F048090DA10B9B7560C371
-7A8B35AE35549AA6DF63DAE892E33EBD782065864392DD9603898C9F35C66CAC
-7536695D90B380EB93CECD7263E808F8EF16805EED56F8E39D4162308B958ADC
-FDBBAB7B1535AF3296EF357E063B91958B4829659EDBF450164D9C6E81D0F57C
-1353B128B7FB6D3130CD2131A0CBB23F56BFB235A8241FA2BF186AE4FF75EBA2
-1313000C1FFE8B05BBFE336F551CB5C0751925F6895A267EAFEC9DBDF8C1845F
-398295286310171110DC7592CFBB14C04C91C8CD36A8F5C716B096389E3BC613
-9A7DF55E2068B994334284F2D3A25C2D950A5165833A2A4B3708C7247A173A66
-825B364B63F7E05D4FD9B3600B1A4C5DE320C5899725916FEFC7FD500B27534E
-570312E70C5E750140CD986F8EF071031A7CE0CC8BC8B373537B59FFA9336287
-672D408D5B204115F23930AB774D17DF7587A43D05B5FDAE8612E8D9A5997BDC
-F193C1E79B0D46B45863C34B4A35B053749838C0A68E4CED3E7B9A891E1793D4
-B01064784D79B52C02179B6E1B262BED8D8BB2B95D40DE78059577AF9E4EC656
-6944C636DE66EDF2E80E2DEDEA0B676A58A2452699DACAC4DDB57E3D51A47038
-3D2095032E029BD261AD05151FFA426E1B7D223C71BC90E6F612E7F8299473FB
-D64CA4B2B57DDA9932743A38BFCBE48F156012817ABEF0FC99811D7D6731317D
-BEF9EBEBF101A5717FAEC232D0B65D0A25D3121C116D398625396AA23E349ACE
-05E2C8516D6E6CBC08723B82651A8BEFB411D80E464686B52C67C4E3741EDF9B
-2D513676D9CFBCBDF74479255E4EB4B6E8CE29C2DC71DCCD3B0D3B0E0015E7CD
-C48C5E74C9209263CF8F2320A824AFDE6D59C80A4974D00383C449B5E5DD454D
-057F27B835FFB3DCE1C6B56F37E845C8ABFD07BF25D8A2D85D273217FAF7CF14
-8CEC96CEB4B656BB0071935919528D5F767FB1AE9E75070F172E717946E7BE0F
-97F25798B826436FF9B8BDBEE353B4A17F9F53153061B0E72C50E8692B5344BC
-EF9C8DF0FD3B9CAB8F626956AAAAB2AD30E131F149415A501E0385C9D4C04F69
-6D99A392C27508C46AEEF598FC8860BA2C631B4D83E2AFC24AA836D02EC2555F
-E290B4CAF521C7471EF3B03D11275F209D7F5F4FD1D5DB9B571FFAA9A8CE82A8
-E42427BAD0AD2208A978B2381E42E6361A5BE0CEA2830B091DA2DBE7CF9376FC
-D7C3C720D41A27645D52A522288B9A2FDDF3CC01327F7B1A28AB044C9A7861BC
-D220C0C9BD96E2AF939EA987B583E7576F4E948663952E255FF68843254AEEEF
-3FD74DC66FE93118C346DCCA1103C877019BA529FAAE589B8180FC3D65C57F71
-B4398773E9A39AB4CB53734645A9065B6A7B1A1920D7C35893A4724CF6E64D1A
-76AC24F85C3BC8C9416A4E99F6BCABE6DEA25538294AEC6511A7BCFD9D603C8C
-4E09528D4694E4834D517B73523372FAC3E88A3FDB06EC845097349A1FC0A1AF
-91390334107F136F49399A1C60551465697BB1C7D79B463F0860E31094017C9D
-A0445042EDD00D2FB6F3C3A74E69A13DB0D44FFE347D1445172D12B631BF9ACB
-40CF08BD36495CA33B3F4754F89CE7B73E0ABD8D6A795CCE4E5354F757C47EB9
-D23FFD066E4809C7A8CE6BF69ACFE00FA8D27950CA364ED7A911897BFCE189AE
-178046A997A03886891B74270E7AA859F4B2373AF3F022BC74CF245F110C9C33
-0BB3A61058980BBA585D084BFA2082D1CF834E45CBC29A58AE207642618A4996
-1FCA5A9003C221725DA54C78A86C7E5D69BC67BFEF1392955CE1BEAB77E22E9B
-06830E96B9E64E37C9067E4A0CC6470D7255F6E27E0C0BFC43418471CD5B1A56
-6BA3949C38801364435BA97962C96F7B5CDD55DA93F4508108DA4CB47C114C59
-15ED208BE39680D3FB36A7D65B07034960CB2D41A6EB60D4BF9A1036ABA6C1B8
-26CC6289C13006C79EDE3D3564B1066AA42E82A6BAE388EE434B8B0A73A13B95
-744141BDD447DDC75D579B23F3A7F125276FBC7B62AF4F0EA78434C57879A290
-C242708059E20655A9BBDD14CFBA6D877C4137528481018FE5E6E0FBB88B16FE
-BBAC9B275A820B4BA9E6C80030E81B38191CB2148DD54C0AC58FB8129826C774
-6DA7F4C7933FE6B7D2B76A16FA78CD84D06025EE4F780BE96CFE45D03D50C690
-0D910F44BCFE1024DC6659B4516906B88F9AB122B2DEA051B278FC1C767A2980
-FD1AB1C880BBFC130E72D2C0F6AF2507AA461431189BE02BAADD00DA798A27A4
-666FB6644B5223F79131A32FC3B498AC318534CABC5668B45D3F9C98CD8CED21
-088E3A49CA187367CD4F412107241C8B6B4D35B14C467674EFE503DFC36F5F68
-81A5CB639AC8A94B2D56D8830F76B7CF25C807D49DBB0C6BA1D481A2E7186BFE
-DF09E3EDA4F34A9204CC45540DA42A742677823CD9DF3C1D27815555A16D7656
-AD5F105416BC89259C845F9DED7DA52432CB567625117966990EF6E93BCFD665
-67E2C849168F7F575E3CBD50AF8B285A9F2A93522C2CF722F1059EF342692316
-D9D13F7B97B9DDA3AF905A0B132E61597DDD1060A2CA59AB3ABA173297C9DBFB
-3D5D3CCC4650C17803E43252BEF5367DD1CC7D516963CF9194BC11F49E6FBA29
-77F085663F759C1E72AF64A6E4EE64F9B9FE6110FF4829C5716F9F262ADDB94E
-1A9BDF1FA7F38322F91EC6463520F06447BE511437A3A2219EE93730171ADD39
-2C8DB3C7CCC94F2B51F35DD286D841BA7A209F57A5CFEC24060D29947A4C9D29
-AD0C63084E50E25D1B8F059AF38584921A5FB347344AB2D00B9407C3B1B9709C
-1A25B5E438226B4D936E6E37A9412B685DE59CCC4F01EDBD6611E0F00B93C02D
-2CE454F10C9A79C00915C01B7E5AE107E09A87C109A40216D28090F45D46E2B2
-DFF1F9853A6EC69BF869C1CE7A768275B2E65FE1CF544F29BFA225E13C09AA66
-5C0C8354FA4E412813A0EC4C090A1E893A719892D056AC7CE18B4C5D2A41AC95
-2B3761C1AA386CE82B2C9EEADA7AED7D8652339C609BFCD5B99BDBB4604A654A
-16EE2748E1761BED1EC797680A6B78E66DB125658A5E5B2FDEC77222C00DA8C5
-F0C2713A83C501700CAAFB8EF4F98E938EE362594E01899DAB57E1D18BCCAA81
-1FE1579C7901B572697BA66E69CE66370F792749C83DDA2BD64BCAD9E75E1F56
-0C95D8FBCCAEF65D399F7D506322C7DB0B65970899A3ED328F49854E79F95128
-F23F504C2E78CE57A92A68AF914F05D5EC62CCFF30BB12E1C374BCFC4389A01B
-A422BE005044DE2B6FF240ACD7ADAB77A3498242F38FDE6A2ECBB6A2DA7617FC
-B49845023535D950D5C0CB8736F60670807901B49503A32F1AACA0967B15D79C
-91BB976A02CCE231502D208064C7886E2A509E9D70D846CF58C2FB713CAFD481
-427CEF09B8C9AFB94EDBB6022FE5E44AB80AD4C1EF9A7048F9365772C399550E
-36DA173AEE7C909EE8CF5604C98698C83AB1F11625767BC5B3F7EA5778C0A3F8
-418C626A99D54BEBA11222D00FE55EDFC1C2C773E9C9B1814C5C8CD9AEC8F04B
-5A70688CD44F874AB58DA58B636A11325443A715F2F6FF753899B3918068297A
-A2CF3A0BE05F9DFBB01EEAA74B897FEC5FA84FFFB3F469CB5AC249C6D35ACEBF
-7909324C06B1A64102ED10C97B7848B8DBC8E94D73B8E32F4CB9DE08C2CCA1BE
-3557BD72646FCAB9D7258FD2A7132B7E57A0BEE933269ABC5C57A06F26505970
-1FE4143C401EE77DE40D7699585C50A1598345D3C57DD694E78E315E1C15A02F
-5C420EF7EF99F56A1E65599F4D726743A27CD39E95588FBEC9A045201D883901
-3C7148CCD55D606C0B1B8F3DCFA34EF42FDEAC864B056CFE88FFAA4524F4BAF4
-55EDC34E6CC61E597BED2AC4B3EB1CB5190E5E65576BD1E81BD382800BFD64F6
-40F281625BF30B54D037A88B371778CD9414360DDF2FF1A6A8A6319FBCD3E6D6
-5BAC1D75DB45E55AB5B825C87DE541411E53CC0F0D71AB77ED55F30349CA2995
-8D93D0014D07C6DB2F4E02C8FC43E310F05B161D9ABDA613E533B7191CED8966
-C6C0541CD7CC4267485E4C6F0C7BBCD9E9B6C67CAC2B2822D30FF72EB2F93F5E
-F9D6794D500810890A9A3B733115FB90B5890AA23BCF5143A9701AE69D9E21E0
-0189FA3CB787F0CB6DDF91EF7BAA860D72D43883029DF872FA64081690B36B6D
-FF6B9D89FC6583724A6CB30703A10C78C568A22E4085BDB95DB623B59DD3F054
-FE3795CC5108CC39FD5576909A98EF5BCC4270EDCB1710A7B071A9715BA73AB2
-84FA8E7A42ADCA65F83EBB6712AB054F57BAFD3E674168381A368A90A6002719
-E05F4940608895E579220FFD8C41F012DBCB0202339C91E8D3368BA1D3A0BB59
-CB677830B076D90506CA8E367C5B36DE14008FB7B82611A60BEC8897A07636D4
-1C584230B7DADB8CEBC8054378DA767E09071B3984989859631C581BF34C5981
-A275D646E1ACBFC7B03921FBDCA5C8CEC6D9C58087729C073F6FC35CECB1F22F
-B950E66DF265DFCF51002B55BB24AF90222414B7A9B980D99C5477262C3E62ED
-20200AE6F5057D9B225C7DBAACF1059B41149D23A0684DCF95A1C0ADCC18EE2C
-FB1D21885FAB35BAD7F38A5076983A621DDE6D635D1DE3F2275888F956F91255
-246B5D9F64BC59E13D344A4F5A8E7C68668D8F4342F9B84B508F947919F27B18
-E8E7588D8DFA770CD9470F7D48F159F0DF22E436E8D75D77DC2B3AE3A4B84DCE
-94211453C8960874199C9F659752B5E237A83EA8F1DB23215121F08A748793B5
-32139009561942A2BAE2F6C1FDAEF4A1EE5F97955E764DBA8F876BE9042DB26E
-4F73A5EE08F2A239A1AADFB57EE4001004F9558793157F8FDC48753DA98DF5DA
-C19289A1CEF767A3A4B408D78772196C9EC0A89BC3C18634F17B1542FE09A676
-437AA03F0DBF82157F5B90C061A42FA30C80934133FE910A0F07E69B5B9B41E9
-485A90CB9AB556F3370C3E49E7316C0362C2F899ABF2A6F014821BF44E71933A
-E87CFFDB8DABE4241F2C1612C92A3297FCAFC48736247396F7BDAFD3C1FC0F84
-D19A1D7997C11EB84AF8657C2559DBA1122AEBC11A09A7674D559D95B1BB60E8
-009C2A88BD14AD8C8D7298DDCEA0232C209D8A94EF09814473E2A22244B00B2F
-54FF92A5A10586F07B2D23780788A2002125F1C9AC0447B37A04F577E014DCE5
-571186FE4E85BE1577908DDF1B919A9822DAD6C4B6BB992E5EBAD7622AAAA83E
-139865AABF36B59C8113475AF7244D7C407C4C07B2F68A0EC302F9CACB81A52F
-B58E97CA09354199BFA57E578158AE2D82243DFE892DED36C342451F26CE0D14
-F0BD9E2CD409F2C1AFC17CDBFDBE5F7D7859ADFEBB34F780DBA9BF044C599C2C
-9205BB5394C5FB112A7C11718CC3C01B58CE89C47651B0E81F86F28E0EC6F978
-A1208470FEF4A28B363707643CBE3397D820C1788E4AD2E8D87D9D96256A8A88
-90F216BD38141C30CDAD068D3CBD0760820C4E8659A4181312B9394C167ADDF5
-6CB2329A8E9C82CE31BF0DE2EE0FF3CA962F69D7D9DC9DF8FB7D03E31C31A691
-BE2610E62024CC4D48AF00C26AFC207D544CBDD683A26B80C218CD95F5319B21
-585169565E77F03C53AA72AF82989AAE717C6E1D002F53BC840081010808F153
-3DB5228E3843AD8A679083DFCA57C36C26148BD75650AB6E1E8209FC4B23EE9F
-9E5FD7E3E3F0E2783655505AD104D826EB14B167A5821169D1E7F01189AF7F46
-9C83293F7E3CCABFAF53CC92BD0B208A188723DA1FF1DC93C1951ECBE2C156B8
-B7FDB2C3798F9BC187D31D6B40DCF00F4285A99C49595903B4EC3B2EB93D6C1A
-F48EBA8A2A64F6E2B0FDE7C17179139F34B9CB470DA03858290E263186A6AA16
-2807F752E7EED5F86EE185F79AC853027741BF4D44D9D33E9FC1E4427C1ACBCE
-7B1A4157E9DA2B5FC47CE1BF6BA7F9428E794E7FC40D43DE1C125AEFDD02F3CB
-E44D3E8F313956C6506178B6C14BA9383A85F5787C825846DD357CDCDB9D94F3
-56DB49ECD193E786D7BBDAA2C60AB42AB5DA1896CEA3F52A731D101448740973
-093D25833E47B29E2C799EA9A08FEE41E500F388F21E3C811CC131F26D1CEE00
-A227CF587D3738998A38A124044060AEFA8E3614E4E7F6F24447FFAD7FB8CEA5
-2EDD6077E6111160B6CE25D19ED7526D99905FD9F05F064D42C8371CF8BA68DF
-A9A46A28F4248F9AA6D53D4D3254B0331B25B204BCEA6939140714F579BCEB24
-698EA8180F4E00AFCF94635CBCDB7162FA2709407433C90FF40D0060631335E9
-2701686AA4F4D1F5013292F19BDD8AB0294D06313B4F9E2A6C918FB0E103CE86
-54D7F9DC947585A9B583EA9BE584EE3FA3A73EEC33D6ECA506DB5C99DBD674F1
-D47823B4D74890E2E8F8EC3C165F1F1E073B53615E921B27D8C4BB1110F9B1FD
-7B4DD567145FAD917D30C1D038346797CA30F3EB78AE4497160B97E3037B4D88
-42B04CFF66FB9F7A2281373A8602680BC9AF99123DDBC99F9FA992237F3ED149
-8C4D9A3C65FA7460B75AE377F9A436BFC0920676166C9557EE79A54119903A09
-A4DB876108DF9BB6CC7D4E3887AC3B5612A29C969DA406C0457A12E95C84347E
-97683DFA2AD5067666CB8570FF5C4B88A8F4D28909DF8CEE4B9E79D7960841AF
-6C7DC2DF5451D16DC9F70342DB8F86141B651609B8B940AE3352C2AC86C3D286
-EEE19B769C65468C9637FC97FADE2930C133CB1B3F7199B85D0AC511159EB600
-FA8D6348518E89EA29E3C2895F228227B97C724FEA4B375D1779E43C33476563
-B47331A5EED1452346CDD370BC017C1D99711507FD680A0F1A900F0AF53F890F
-5840C9F0F5A4223E8ECA8010860FD7E2DCD79FB8A93B46A46B159226832518E8
-9960564C29D80E2BC43BFCAD9DC2B4C26D28895C52373A88CFF9E63D86C302A8
-EB2635801D3577379F8A71C02191DFD7CEAD51EB04DB88423F3A4FE578DB4FAA
-9E2F204E048079230C72A32A213D6CED2866D719CCFB5720B8780D0F86A0849F
-149801BEFF7E339C9ED48C8EA5F400D8B68E6A999573B55F8B0CFD9AD90C2595
-95398E70EA35B16A9EFFB47DD5D65336EEAE4F02C44F94E5D181A32CC91FE097
-00F041A6B99C2344195CC534B56A779DB210F6A610534914F786654EB1A0C648
-C2999803BC6AADD2D5F5870DEBF8143FD6D5AA4EB3959F721DAF92A0F7375491
-139971C436BC0C6B199B7FDEE435F4CC0D692DA5117294F3D7819AE37D960DBB
-44FDD45E62F77D26E4E84A5A362C8E2BDC1BE3F727EF656CEDC84A0931F657F1
-C882183865C0848245483F643A6AEBF582DD36B38981D70DEDB30579092A6827
-F93FB7C1E41F1B10E3D2D2EC83A0D3065739EE32A21B2FF21515CA07572BA7D1
-ADB370A5B843BB7910164570BD3872691A24E61A6EE37B60C0610F6152F75B7D
-AEAF222F51598D434CD750EE01CC53AF4971400396C512FA22149F4DDE462694
-C92BDCB9D8B43C492B7498A9998BF79808E160C9AF96388AFB09D2A885E16DD4
-67B126478E919F057068AC12BD62BD078D5363EEF47275764C070815A88FD612
-3AFDEAFDB92DC59986FEAE51BFA02D5199954E2F5A4A4C473AFD3B1CE087F841
-2048E6B3098730DAEF6ECFACB48D5C8BFC527FCCE625FE26D23050435FFCD7AD
-B2D6736AE8D4F0427F233D03995366B0EC35E8CD93EF362A1EAF6595D11924D3
-7553BCEA2C201BDA7C63A6641E678333F2BF5946D2E3C5D7DB67C8C1AD35AD13
-DD82B5665448EBAB62B658C0B9498F112AA9021B5B5C46EC6BA786A35EE28E57
-3A1244B4BEF61A9891220451927F93C59C9722B6329ABA09AADC5F8D3223C195
-0A8A3D32A264B5EDFBC7F8DDE6BA77D7614106EDEC927BB3ECB27F701689BA00
-CA2A496582D4836761ABD3489D5A8C52C3293E44D8E3B054A5CD3DC60A1A4A05
-B0CDD5AE0C96F2CE6A53FC29CD5843B8234BB1E566E9325A3EF027B448CD2208
-158A7BCCD1C15F458939598A095D11CCABBE8965041057BD2575D4B2CAD34713
-AD93B5B13A9D6120215169FAB1B624C96E4DBAB6C303750F013BBDDF19167D0A
-D55FA54D5113D8A33AD715183D57110549B468802E31AF87DE0924F0E7A9FD34
-A0C9A483E6425A395DDC73E4A62D879089F1BCD98C355A7BF41431FC59E63A2F
-6765FB1389C324D94BB2E4C17C4BB5D1B0D8FF6F89418E1D14477ED6FF6713E0
-0B6F4ACFC98BC1E90CF142BCE38DD795BD5C7FEC12AA9C917742F2DE86044C98
-D136A047867121CEB7F9D1C577A7AE3542ACE2BB1CB10F807F43E33A7954C530
-31F7159142A306ECEF92B32977C82E2CB53F992CC97235D13A8AAECC81F2141B
-B31A36A6AA2E8E812F2240AFB677FE7798F4426066235904075932E9590771A8
-80150A1499A3DF5DB221F51251D7065D2FEA86D2E91AC4E25B98DEEA6D0705ED
-899F9B02B1A7F446CABB8A85689884826E2D2F29F1EFA8B77BCD730F3AB9DE77
-7D11AE64829A806F2778F34C6B2B5F4D4AFCB91BD2A567EBEFB76F44EF375760
-41F40D97E1781060E217D5E8CC603F4ABDD1251F94E757E3EFDF4B1974064D84
-0C1E36208F21D8A3630DE38891B5412CF7600D6C259562EA093DCA91742B7C26
-86AC2518ED7EC1DFFE0D8AA23E4811729B429276221C07AEBFEC6FFC0038F5B3
-D9CC91DDFC8EA428051C1060152EF7DCCB447253EA5939C4C714465FCE346B90
-119CA5EE5E1379A29AE4EB841920D6132E79B68D2622FA97968CE1C75F9DD6FC
-5FE4AE683AB726AB7077B73BCC22C48D74FDEB8568D96DDF4D88D074E7022D70
-4956F8BD9C0C08269A83F14CECF3A23E767287B5C6222D8BFB81CE7A0B5D4BC2
-B599E50663EF4D3EAA57D5CE7686EA3762671666D21C5D757FCE7BC7BDEE9730
-6D0F5A2928C209D6C9D773D7BE028C7503F424CBFF5789D35385661610348599
-2A6230DDEB930BEF60354240E90276EEC62B0371259CFFE41F716B0E32E07C99
-A19EA60A2240E6D97811310B3754C244CA9D62A6D73199DBC62B1B8C0BE3CC46
-9BF04B634BC7708DAB1604AB76CD5B1208C0098E8798EEA9408A0AC0B8353708
-979982E3AA0FE684E4715F3EA23E12D6FE6FFB247B5424DB8A8A0CDE537AC02F
-7234656B7CC0782EE73A39CEE18EA182452A1638316700209CC50603469FFD7F
-D9CD14E65B20487A223D92AFF6E654022A1A564AD8BD46F14641F513DF0E59F4
-E2C536643DD07C52F9B5A5DEB70AB534C2F6CED7923BD84FFDE452C2ABFC2CD3
-D6E83759236FAB568657E4CB12A8CF0895890602E0D8E3B121303EFE53237E9F
-BEA4794106D34796AA5FC0BE8F0DAA96DCF0C39FCBF14798E5D55354B70C1DB4
-4202124802783D8BB23520A5CE7BE15F280F2C154FCD804AC6D6B38A9ED970E2
-2CD08CD69B0CC08600F8B6B1D7C817203FD6C2300373E2AC7CF01007233C0439
-56B7B9F4A2BD8A98DFB3F47D163DD45E72272175A2E08E9C178506161412B571
-0C4DCCBF1E21A2689421D463C6B6D3F0D3B4BF1A654401F6C1C72ECC0EE8F1B1
-F5F0C6C40433325F7A90E3B81246A441104C87157B0061632E092691B35EF094
-9C2017BF759D4490B3FC7E3E3BD0CC13C7586371FEF30304DF36A4EA3394AE13
-71389DA6570DE106DDE7935391D9836BA86D505C500D92C9153E0D698183103E
-66CA0F6D0283FFBA2F298712CB76EA731233C43C36E1DAE77188E531EAA86CB3
-E077B699B5302F868E68727BE7BDB365D421A1F3BE6D92B6EFF545B101D078D3
-1196EBA6C7328BC506AE4F940D6D890C9489CD29EDC7011E419C1EEB9E30A6E0
-4D02D937A4AD1B58174812B0B89C708F4B5F5C271D7BFF91C2B4304BD6423C9C
-A83DFA467686F4D47806FA6BE6DDB83D6AAACD5662E9A8D8C2B84C424D6BC31D
-4DDF20FB82D1C73AA545A443A0C9E12FD02AD8F77DFAD588DC7450DB957F1957
-3C48D5366BD3D3155DD54E4700C91FBA5EF151F8A5A894CD4A3D7EA01A262A0B
-65E4BE0A94AC4CD77BB129894F41BA883BDD419D09F50165131F367E2F1617C5
-A8FB597BE32F4D40C29F20FC7CFA079FC2B397E4EBA2A11EECB68E2368C3ED34
-A83B2F2E9B1624C69E13FC95CE2FBBE4F5C8A15A56FE6C4712720859F6FB78D8
-4770EBA0BB60C5F2BB2FAA1D27628520936110310B9183B49DDC348CC2663A35
-36BF2D7B5C4059CB194DC22160853C518464897EE0BC0EEEB0E48607E4B9BE0E
-21069E8ABBD8FAF6D93CAAAEC5394C54C4D036C37DAC2DACEDDF4C3936442DB3
-8F973DA46D081E72D5005917CFA0A7EB8DD4A05E7F8BCC62D25128A567E4F1FA
-A34363E40E59473414B2E2EC04C63B64BD6C377632EA4F0CB86CB08B44CE470B
-DD25A84A53AA3B57B065C68F530986CFDE63D646F2E7891C4428084891ED5A58
-04CEB1EA64046B8CB37294289D29605D281BA9B5387AB9D3F22997B2C05FE51C
-C58AC33D51B67C83556E7E65236536F0D006F44DE91B9558329F9419D5B56DCA
-B691C23C7144AB02BC64FBF3CDF27F6943F5880119E280245FA5EECAB0659007
-BFA20B93FDEE34E0D5BA810936D1E0AD0E56B1F8FF8AE499DF386647BE818625
-76495DE018B332067C229E38A0F34C5E5132E087103864D2A1A6E07D768F095B
-B8692D1E13D9540A604908D88C10FADE923A322502A408742307A502002ABAD6
-422A21C765A83D3DAF8EC7119C75ED6F7A03739736C12E0FEA33E8D5381BED76
-7A80909772D5618B4BA110851346845A3B1E0DC53578AE117B7FA95602940A76
-9DE7EE20F4130907AF0803E77A9918C36944106259A93BB8EC7AE33B05054FB4
-F6F6ABC9F155DCCB31BEBC79F126E96895A219683C79EB9619588E1C28C0E7A0
-36F62CB4B70F3C16CA2919E4D195764DBBD17A09608FE172E34C60C00085C7DE
-80350596B9C73C542B3565FCF4D18C42C288873368D7859DD0109AE293BB6F28
-29C8840D18CC6CE36B6AE6EBB40306A94D328906D01B9745986F5832380279BE
-1E3F3804F27EE223CB04674A986CC6482A389F2054DFC199C2192F6C255379DA
-629637CABE590FE2577E8999528DD023D7C4B19E74A648FFF4009F0FFC6D23C9
-1B7F91E06EE88B9E1F4C1E351EDC1DCA8276988C36DEEBCB6B53B04B4DE4490C
-A415AE029E3FA6C12ABA79213749237A08BF189681A4C3BE598F24D0E305E15E
-17EA760A16F63D9CFFEEAEE6B0C4D6902260C8722879D37C098FAF59375E76C5
-5ED4DB8C734572DAC57818C371420F827E2309DAE5570775D290CCB132AC4732
-35BF791E165955B6A1B521E0357184D19EEBD865B560924FDA057E6827C51BF6
-684C10FF7F8BA7B3B31327831FED39261304A85F1B9692E68145ACA087261A79
-6B3C1E416ED699419F47A2E546A73B446596CF82896A36ED564471B678E9067E
-42260D84F733CF208BD3837CBA0F681DC8D53CD82F0E43EC138487F48ADD087D
-FD8C30C2481B32E528F6FC040CD8CC657EB061FA6EF636B9D45DC10D86B2DC1A
-E6CAF3906111D3BAF042F04BD4532338D20FFAE112E698265746FD1C3FB3C010
-D62B8A87D8EE355A45160BC016F1E83F7315CDC3984D5A177401DA593930CA14
-9AC348DD8F76EFC8FCF064B022F056EA211FD843646F66F5D1A64F0A1EE139CC
-A76C52D85DAAD299F896BAA8C62685FF663DE4275585572674A33855556F1893
-AA69FEF9CC3687A712D6A451A696621F62F0007CF8B1B1A97C62D956B615CE11
-5A448CDE9231C0179173A45F7DF45AEC7D1FA2CCB7E18D6D917685A0D3DE2533
-1141C934321C05468EDD9E97E1288374664562EF1E276398702FB952F78B3501
-A11AB13F9AC2B062656C54B13DE4A3D7295047F755E61758A29C2530AC47B50C
-1C254F861E2B97C0CC9855A0ED37E30067129ECBB0366876E606E5D45EEDEFAE
-CE82B3D278E815EEB073C7911A1765BA68CD94F0B2B8D4E3B55F8DF4A54D6A4A
-60F304D52814787BE46FBAD271008F64800E6367D7AB58A340BB8F26B2F82057
-2FEA21B51A2681E52E360EF114D92C7B01AB09B0D8F9C683C4ADCBD2065B552A
-1C1D83C729C6F755A95DF2B00CB8ADDDC7510711110A58CD6754EB054CC31276
-726FA4BFD09DA5BB2B0178694EA228DD6287CCCDE397E4D7D054B13612D77029
-F2C639063E8994B94EBE05365FD14CE92BC73EB2DE4B98FF76025CE98D95BC4D
-0F8510268D0A18A33F8F25A6BB64BD0546D4ADC4A958B4C8721E600EFCA64AE6
-11E533D6185CD5495B307F7E1E4722FF1B47CEE45296D8AC1DD50EF1AB3B084D
-69E38802F9BC6F02E31F372FD0CE7962E389A8B1757981D5B51BF31AC5B4C8AB
-9E551BB02B237EBF5E2B98C1B4764E9B3F7C29C8ACCA4EF5E07D6E003FB7AE94
-FF30E6A9A9EBC1D4FAD6856CBE2A1DF41C94381E2DB11926D1B3E55D5120D562
-04676E4E66CB49A1BB48D8D7E35A629543B0FEA22728C86E534C9D80CF452F9D
-74866CCD91A3BB3A4ECD52F8BAB4329A831C49BF6599B81FE0CA40D5B74D21EE
-228440257E8EC54139D029B41240B13E2421B182792ACC008A94EDF98087CEEE
-B1BC98EACAD09B2ABBBB8C3384D465FC179163B844781B4E41F12790D7B80193
-BCE3D0D8246BC85007AFD019A53D867FA45F4EE4283F8410AEF256DDDD63B610
-C751AD27262DF3874674D3F9D51BF773A3DA12D4F054FCBC63630FEF6D331041
-FD9B4C5DBA53E04E24E3AF685DF5D0B9D897C3ED15B762827EAE874E1932B272
-BC74FB943CDF8C6E75CB7D176DABE400353765C5C27348A494F5EAE1202A8028
-D1A1CF687EE751A750E79E621EEDAA95EA7F29734EF4BCD38368F35756C52019
-D9607383F7321A4002E036DEA99B831D2636DFD54582226287AF9C57079DDA5E
-7A2531204F2B0B197AD6DFCCDA00031D0D37AFF885AE25389E5A46CFF21C5C39
-427EC8133DA9F62BA6E4589A5244CE1206A97DFE9028064594D18FEACCEFE980
-0ECCFAA35EABBA4FDCDC7B916075751EC191E86DF3C1D60CB3BAE55A4FD1AD2F
-5DF990A675FC6C3B94E383BDC89F15DC4AC08F29F08B6C393782EA3C00FFE26E
-87D714B14A7657AEC201466F3A71309C200C284AD5B55BA408E3E100C0DD4610
-C666BB3A7F66CA971A7D97CA22E41D9A0AA95FB979F6DC1E31483BE4D9E04C51
-F79B7A40C51BFF01A6B7A8177A5F47B1EE8131022A980118364F9804E3AC7770
-5B0ECF2431C0868B9D098616653F53CB5EFD521BB030764FDB8EC732487AD8DD
-BB8E635F523FB8F4F782C7E2C1E75226CA751DA16EA0E100AA3196FF791004DB
-4B34C33A20C42C5B50986F630686B75FE81ED73BC21A74699A36EC9DCBFC9FAA
-99978A114C3B537DB55F561713B08F35C24B9E11E04C6A743436364E300F925F
-62744BD29068B45400A9333BC3CE7516E8E68F211B82859F8CBCEEAAFF47BAD2
-174FDE1B6F83688C079537B17D12328DB78C4544872D989F0D45706187E6A674
-C32780E630CE22AAAEE3193483BF40C32FDE30FE3BC8565D346EEE2F8E7C245F
-E6A38401D342F2F5B50B6882CD2860F872A4E61756E5F5186ECC4E82EEE5ADEE
-3284C79F169F0672D838E6B0D22652ECBC3CC8C0E90F23C541CC308FF41B9887
-CD8B011CF06CCD2B83D3EC157FE4F8A7E8209732553AF32E1ACF3F94A728B0FF
-19BA5F97C8B8F243218696B09B549AFEF1BD0BAE95C71077E7B1E52492425784
-897E8338956892F032288DC84A36A5ECAD064CE46D9EB41CAD952294A13EC321
-2740396DE8A8320DD4320E30376A4C42F0778D0E89E791F0789BA42E1FC1FC0C
-5E0C5648D49748DCD5B6B497288D3C5E2790DBC49AE10F37C28B31A6CD692755
-2FFD39FBE58C593D08A7FDEDA54361458F140A4F1583BC198A363D71B445B6C2
-258D1E268D7FEEBF958FBF45907743C3240DBD9784341F230E6378E1E970D910
-AD26A04AD6C3650D85B5B3B7646D9DE5341379E6A1A896AD06855ABBAB747D3E
-B06CB84D04C7CA14E08E73706BD84336D87690866E01BDC5B0CEE249587D35A6
-32C79ECC0C5A53AFF5E3772FC858046E4F317796D1C86E151D56B772994C06EC
-70E75B1B61CAF7E33CDF0EB03992A396312DAB6E98CF6D7F38407DF551F08CFF
-DF72B153769175A4AE41464F4509A51416C9A2B827BF9A94DD91A53A4E62BD6D
-A7D571287F62BB7367031EB0C52A0E8A055FD80F7691A68632DA74675ACE13DC
-364E7111839FA56C369AA0660BD8D752A4CF61417D696BB49A75AA711868B09B
-0B95FA1483DF0FFBF555317D73CCFC20AED4B500D6A81AB5ED3077ECDA919D0C
-76D162553DFC4BDD581BF9B532A0F125AAD93DCD50556736595506E9CBE4E6FE
-258A88E104E32741729CFFE023DDFA2A5C748A59A61A0BD8638E1DC27A5D9CB7
-ABC1B2EB224D27FC993AF836B16D14A1CE8B1FA21012B4A45CB317BACE32C4EC
-81A02EF8EBC73F9746C01D3C72102643519E260B520CA2BA6B7F5F624FB7C8F8
-6E6E707EC588DDCEFB9E02A9BCFE0A6067F4E8C09B7D624754B77D3E96D01AD0
-EB250F589F9C9914B13F6C760D73EE1C3F1F6142A0DC51BB87EEC379AAA8E4AA
-4A7783687E158711B6585701FFACF7B37F81B9168CDA3886C4EB28133975A37A
-13037248513AE2A2A65CC3A9B63433B14A347F8003550798244D519372C9FC64
-79AFBB7F12840CCD070F2BF8CBC97359232A35C810CAAD591E64A0AE9A10F0A6
-698274D8D88341E2E99BCDA7C6F6C666EB45721BCC521B6551DE2AA8B6ED9AB4
-A9122F741E0CBB5B3D74A0E85C6212FB33F540FADF0A20A1C1CC09BB48C312F1
-CBC4F8F4F5CAB7EBA0E29E8C020752B1A968362EC0F793B4
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 25 /germandbls put
-dup 45 /hyphen put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 90 /Z put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 122 /z put
-dup 127 /dieresis put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636
-6E02817082BE6FE0B04249A4840C11FEBE57A56C51B700E78BA2A1B991C56F1F
-E01E4F16DBAA63E6932FFA0649F0AF084522EF1CBC1FDAD30F8363494CDB6694
-AEE7D63B32A6A32C93477AE6756D17E74ED1642B917B64E296D4E219A3597953
-634A1C0BCA5AA04FEDEFDF24B58001909B7B03761FF2070958FD2F387D01E4F5
-6E5EC1E636E9AF44D989BCAEC860035FE4CA3A87DADFAB3665957769CCA3FD91
-1D0CC806CF0731B05959EBD9842DB651BAC539FDB597E50C7BC06D801AA613EF
-09BCB258EAEB5620FCF9193D5D17E7340B4E1A110BF7ED2BBBB9AD9B8AB90943
-0F2EF3620A245C8A5B229AD308A71FA00E007F6BFBFCF7A94227C5D0E0E138FE
-F0F6C457EBDDCEC1B3C150D74BD06474F325A9649451446C630B74C6F3EC56F2
-5D109B37591E10D571E5719ADE30AD10FF770C9A0815E0ED9BDCF6B44A2516E0
-C64FE6EA55D438BFE2C64BEF293FF41E9D360216BCEE5096CE711EFEBE6749F3
-50978C54353D12290F4FD04AFE38B265077033231B98CEDEB7B3F089DFDAE834
-41B30ADCA9387FCAB269D73E2086C833AAA882B3CEDF5BE86221EB4DCD12699E
-C3B278291A8BBFD2093B23A90739A65A37C93E7743E91E27D89B802C1F0512BA
-E14FA607570A5A7C58BBA139FAB5466F40F03FB05AE0C53DB380ABB8632CD812
-B924536838F86C4E4ED08A57FBE706D61C1823B5908ADCA9E3B99670DAA5B00A
-8B99E733AA64B471A9A96FEF5567D54B9683F9EADD51A9A17ACECCCC78A46368
-7874DE4CF78E3D2ACCC1CCD679D99308476651C4EB48B5EF65F0C5E91E3FA5F4
-A9978986F0BE871DCD5A320C290C259836058CBD5F9412659725A2C55CAF5A49
-D7D326FE9F019E6E2FD10DF7175F16AECE03ACE4011A68999F4E1B6940463E2D
-044358A97AFA46172BDDAC3B078D5CF581BC728A2690E69DF3E1715553DB50DD
-5DEA6FE5B916615438CF7EEFCCCAEB5C20BA775ED8657CEC81CE2E558C7C5AA6
-09986F26E40A65FA07798E26AF18AD15B183898DE5BA43091343CF9D17C5DB42
-C069FBD81FAAE592D43E8DE71D70B9940297C6D95E823FFE205F1C6C6DE2A23B
-8069CE7950969557336AC8DB3B61E01D64D56E8C4D608D9B0BE16BAEFBC11E14
-F74B24D3C54EC6F03F8FB0A931F3067F629081199D09DB775B8074F6F1A76FAC
-74A1A8B4E89B7459C16FAE469236003F7B2209AFB487D001EA9F20C212630C2D
-9D32E8FDFCE3285B66EED4D910273B6560434BFE0CB48260E58FCAE26B3939ED
-C7C66E6C13CF17915C98D34D8CE28E30357C49299C456437F6EDE39210DF6FDF
-4A450CEBA70E4185B00D3573F57CE1711A3DFCF2C9E2E43707530FF446F58B37
-C73CF2857A7ABB379908551EE169A3340148E0389B43CBB5E20A1B25BF519C2C
-51FB78A35796B751E99D688D5665E0D5548FD08A531C939214696CF70081D1E9
-6DD3B65181EEC5D0CD79A3B8306D923FD97EBDC7D5629456474668461135F103
-A5FA1229254393BBFF029763C36E98C72CB4F33B02F1D0F3FE15F82943364FD6
-4CD3AA79A4BB405F6E254E600DBED2DCE27F4D442C2269E8004BBE461C72FFD1
-A472BB5CDA4D95BF757251F67A31FDC2805447ED6551D3F1CADA6FDB093C2D47
-5DFB293CA1D5B3204C68B5463614CD25AAE8C93ED170176E5352514A66227CEA
-9AAF8CF4EADD2782AE0AB641A985483151175A4DFC621DA6EB02490F50F4E0EF
-AA8C5380B558B3DC3C807179E5F1FA2B97840C111FE43DDFF9C8DB8E83C8D6A0
-8CA90597B554C70D2210CD115486DB257032A29AA063320E28280E3BC571F6E2
-AD22F91DF0E2AA0B690CB27F5B0CD628B44EEF1930488989D74BBE790D56F21D
-F0FD4954F14D17B578134DC523C7A41EA42998A729E241CF8D7F4AA48E84BA07
-FF3E8FBB7B667953EC38703586C12E5FC946A2660CBBC6A9F0CCE258BB5852FA
-F05ECAD9B670223F978937C9C8251C96080E5B4D52876A700A96F107BCE35620
-22F63E5E4792C310F800E903F1FD43199B7C832425CAD4B6DE9CF0450E962F55
-1E79368359572EB7CF7F8ACC3E3EEAF23678ED8459DD6B4460B98368AF0EDACF
-1ED06368F3CB63DA457DF7BFA7367C5CCE1F8815FFDA45E363DFD05C7DA4B335
-6FA37B2CD5FCC46498C69E30CE805701E5B4A3C5853A0E698869A5DDA7BBAE72
-4260B3CB37898A967D7EDF3BF8F118330018EEC67291A8C07EBE1992465F7FB9
-6CB7E3381A95110C397C879E90BF87AF26BA74EC6596990137EE7940BB4A6A15
-30E320066111D4DD3CAA89B8B35B08044D394641288A23AE77E161B3509F4B09
-B7DEE2493F522E5DDB553965BCF81A2DB6BB153F6B8282B9ECCB8494F6DEFD25
-7FC61FE738B2AD79D967A3DD2C6DB0AD1A3DCBAF2FE89E651B3F2DA9529E3DCD
-E8DDC084AA6DF17B8CBC6AF70B25C81BFF91BE4D60675A3DF7B7D65A912D32FC
-AF41B83C15332A31BB1995C31720C42C06D1D2B7F7845EDE5C08D0E927CA9840
-49351927DDFE0C8E659AD265EDF97FC9B5AB416EB371359A7618D295A0A238FD
-AEC76E0C6D072A2D9946B00BC1B6DC351CC8AB8A4FC9213307D8CF1D8C8DB57A
-56D1B96C3BE755E42D8E956E3A711D84195595AD3221361032A29F526A563F60
-777803988E116823AD6A104A231AB8D0E39624277F56D4CBE28564751CBC2104
-CE34EB91F32892776412FF809BC5F5D37C06E8E8DB89AB2EF4C4312E66138DCC
-E5D7EDB6F8762AEA44D95A137F6AFA8EBD7A12CAD701A2B476AB982CBBF8E17B
-617E101915E85899C8CE793B1EA72678EF8CD7B2A9E86F8698EEEA8E45821CF2
-C924C1996AD4C9255E8188CF27817CD3056879BB7928BF943B8E025A0AC5E308
-54B66FFE137F7EC29EDFD7F7D68702B54BA9E5D1620F7E9ECF7052D79A508503
-DA584A20D8796BB097DF1CB99FDE057BC5DA21734CC5DFBCB322465E338BC3C9
-1AC3549C386079107EFE2D8F9F8CF3654697C778A884751CE6EE47BE440197B9
-304EF7DE6B20E7F12C1A367A9F5FC26EF5AA9807AC3CD4D589484A930035C110
-88D49A3C26BD8FB521E2F4BDCC34D575A23DF145BBD9786ECE5B332EE284859D
-3F3C942F19B7AAFEAC3039F60FE1BF30EFCF1495F15BDAAA6D84C707809B04D4
-EA2B3276AE6EF628B621F2AB7D961A152C770417777016AE9F6BAF64D08DA983
-5E20C6156BBCEEC38A02AE7A1B4C4A9D413508968BC2323A413DFCFE852355DD
-60B45C01582FF64117C574E24986AC6AE685F932D8C81B704E30F6F6A72EC5BF
-F2EDD6E3FF5504D0E7D196F67321DDC1FED8F3777AF397C034D3EC1D72C24059
-622A8F66A6D8B51F983E21AB4EE7BF252527C970CA823EAE03FAF6FC305FCB3A
-86DA71153BD9100574697DA576A38E70DA3E0E32B2500D060A35F03BB70A6C59
-9B21CF58B7B8F6EDEC6E6D51020B53E9F9C632875BB0747342ACF2B4067A2D1D
-192A6BCD85F8E2E67CAD111C3671F58DD58C1292ADEE0CD30FEB0701ABC5B8E5
-0C81E1B2266B17BD37FB37A6857BCE292DAE92156064ED7A98B70D4C2320AD9B
-29CF64DFD4230E1443F5A6FC19329F3525E870054BDF4B2162338B4CF016F3E8
-1F0FB52E74012B67EB1E0C4D64DA8B88AE2F27F45F1B466EF1D2A3A2A6FC98A6
-C2C46FA7DCE7D5A82F7AD0A06875928DCED4AF75A7D9239D4145420FA1973C46
-8354DE90662D1F1374E9C89A4848EFC0F24DCEE742D788364CCE197636EEAEF3
-2FD04F43744FD4C3FBF991D3FBE2A93347E3712596ED63E712665BD3A35CB5C3
-8EB41BC83ECE9A9F3982C207BEA5C1A0E943CCA062E4322FFE675FDC8A93AA64
-575F15678E98022DC2E5B24BA5B419D7A1B4A62CABFA61B0552D00AB76197111
-85B08FA2BAA26E395D52EB27F3A29526BAFD2884D8ECCF4EC8C945183329142E
-326F0330E20684CE77F6F0F647BD63DEE2AF2B47A3C0E1F158B986B1267BFDC3
-98830F27F365A1A8932E8F3406ED058401E8DCC1ADA6473EF974FF4F75856708
-8A79B344AF50DC88F963A10EF2ACE1F324C36B3D481167472E977B0BD66C44FC
-30F6FAD3A8D525D65F8A34C701E638FD63DDC3EF7A9299ADF0BD4BA9308B09C1
-5D476AB68032E964080ECEABEE0A34E2B2E79902D9C1C8BB22CDB4BAF033FB9A
-4490AB747F3B3592ED08CD980FFF0B17E1666B77D91E0F611DE90E1EE20DB173
-094B93B035F1113ADE3EF698CC950DC60484C6ECCD66B97C18D225EF51F058E3
-2F98489C0D2483AE2B6D95DB284F539993FF44568A415803786D3CE348699B99
-F9C404C56FCF4E0CA761C52F9A432FF3EA4B7BD855445A1AA68B81099152F136
-CC515D943CE8DFA6F51350DAC48E92F04CB2DB434CAA5AC41A855A874BC4469C
-256381FC3F7834E4D00F2ED89DA44CC78FCC7BC0EDB6C89082ADE00577B5D629
-4B15945324E8E3663AC99A63569FDF068710ECDFF32FD70D7E3C4BE4A6952E47
-ECD6AE289F36873E0E5C2DE753CE14647888DEB2D6F2445F0CCC062FC77043CC
-607A588BF0633E62093F1B3E883E2F2F33F2E89CD9D40950E47C13CE82958EC5
-7C9A34E4B04B4DE8B3C8E0397AF328570C58617FC1FABE75C1A99E5D07C20868
-29B0BDC6AB64F7201C646A9CE00E20B31DDAB150E48074C044D64C21C6AA7F03
-F0400FA4BBAAA9C80F67B901918D4D516363159C32BAF8494047B2F0A7F75537
-8B20BDA72DAF28443F65C12C206F621AD3ADE004726663A8138DB25A3FFCE48E
-E840650F50EB170C6482749EE0EFF441DD0E800F3CC632A9ADD14EA2CE24E59E
-682ECAF68D8638984DE2AE0A8E5C0066D76359069CC2E39E4648A252D5891334
-46B208423C439FA3DD052919896A31472380C5FFDBBFB3108CAD6177E8A63507
-EF067F124E15FF5E747C2BB5CA9E23CBC56D043021E87F7EEB905EC377E3C5A2
-8ACF7E30309568156C1AF84306783CCE901DC703AB64D5EAC6E6F16C8B711DE0
-7120FC02021A33527FE24DEA8E3CDAE65682FF5E8CAEFCB9406F3F9EEB5869C7
-F87B73FF8B3EF8EF25355152BA83EB8C9D3F81028DE08FA97CC71A14832AC62C
-BE7DA08E586340F1B8DC98811FB4F82EB8895DD43CC90CAACB10D047F1C9DD34
-32D093E212D834A94D76F7E47C07CF9490E5C502AA6E1ED2CC3AFF5B9378AEE5
-AB5C8A01575CE45758FA15F945CAFBA620CC6DF69B6246BD5F0DDDF2C518B987
-FFCF320BD655FB004CC2BF4282ADF8EC15E98C3D41FA8B6DF5AD57A4FBC047AC
-97152BAB1860E35782C2462F28045D5B3752C6E1504B93AE965CE940C5588A29
-CE52F0FAF8F27E9274F923C9FAC150B68A9F46596D42CE2526402D0E7963D187
-92A9D7690077777A18DE02528820C04BD64F0B95FB5365696593CC9EFF42ADE6
-796C799AF9939A25370EA06E842855715D710B0F437DBFF6125F8041F3680642
-9F809E3B4D0425FB041BDEC9D87648D9C37B66CC67983A93F53448B5DF214CB7
-DD2B35E9105C98EA68FEF915ED71A0410AC3F873A1EB3623FEC0A0213D439177
-D7B030578889C4B3689BC0755785D6706BE7CCD99ABD32AE1BC2ED8453E733DD
-402BF2373BF92C0A4E7DCE1582EBA195996DCEB9BF70C7CB17DDAACAFEA4A64A
-BA77C3671631CA6F8C03DD416A67322EBC17506F9D367C8994D8B0A307A242A7
-BB6F9DC759CF64F98462A01C02A2771A653B61D5B858C3E2AAA521584D89EC24
-D1DAACC458F6235909885656200134660265D7B384427B8B918D9436B4E944BA
-30036A5F6024C3D611A56CAD7A707D7B8D5916802B75D701D4622C3E623E9BBF
-E7E8A03BBE632C5EDC166E484A3D76B5FFD4DB7914ED7A2F34E5DEBA579F75D9
-D8A3606AC972153A7539D7E9E17BAD9EF8AEAF70A332C3A63E7665F0C5DEC840
-6D7D9BC053F10D8A329DFB8846B48AD392B66C2DB9E96B1615162E8E808CDCD1
-AC45D4595B76D036D03F98B1A696A12A942A89500243C55AC168E16EBE11BF58
-EB8417445BDF9887710E3906D2F9A99EE2AA09A30A17B67B42BC1BFC85F192D0
-3FDC253A44F84EEBDFBAF8AC489C6D09E02420F2968D669724B363CF0DCE055E
-529ADE022F6CED378F7DCA799703E561E14F6AAFAF49EF2C9900836197F1BC92
-339AF1A66614AEE12EAC60FF57E8498ADAF74224DEA1BB0598C31A6ABEFA2CD0
-11FBCF0AFF554F637FE310BEB086DDD40F91714B0A6C31F08F40F1D079AA37C1
-094F16DA9DAC11CD1559530CE463F01F394B1EEE0C43EA54B9FB7F22555595D8
-C8B1DF1AC480F201A85AEC9C40FB3508338FFAB91ADA4D3DC27466BD920B7A29
-46F8E912365C7437882E8FE03063F857358EADDE60EF74EAC622D60BF35BE478
-6A30AD1C65247ECBFD93CA7F0B63DA626B56610BD6D34F7DF88ADF467957CD2B
-ABA717C19ACA5F2C0D9E72C15BCDF1B669B8FD24945EDEC4CFCC40E0D15ADB5F
-5A1D91B04902A76A93556EBB551699D50E8F3799940E68936245864A25275062
-667DE1D4ABF8A89E75CEAC1C520E82257C6F7C6F5C711CBB91F274A14B774552
-0135107F35A45D18EBFF4A92A373769491ECE76F0936BAFEB83240C024230FCB
-4ECFBE84248E87C09B5B147CE8FDE934B02FBD9B09EC18A8AC4655D00C9650D6
-6074612AE2DF5B661369B7BFBE8D382A486FEC1E1F55D6A8C8E729204EF3ACE2
-B1D1E28C71E70FF4FE7D8A9A5E4E21D891437677E403303D68240E234517FEB0
-BE623E95A1A16FC045E024E93DF9A73129AE8107D841828D7529E0E28CE1E7E6
-2DE6A97F6105DEE1C0CCB20153C9DB2C3D64D0F85AEB20D437F975CFD2E67257
-54EF4A3F7785D00C59E8CFECBFEE64DE85BED8DCFF6657CB49FDC368AB3AA497
-E32744A89779816B97D0EB730E83E51F77E7ECC97DF71C2A59998B0B57B44F61
-C031F25153A552C4001F840C52C71E6865246CD6F9E2E7503DE55F1FA143F5E2
-574A2DB164BA9B4E955AF6136DF4B9E4894AB383289D2321966C90BAE4D7C986
-EED9077494A6CA30C8A27CBAF4088FEB0CE5F2C4695FAC3F6B570DABFEE084AE
-8E4CA5A2C79B9C7129FC06AA8AA8C0BEB711216BF0A7BCC2913178EE74FC8169
-907F0E9F4B10F047002DA8B3EB8D8B9F6EC6D49A632ADA7FE7AC75423315B3DB
-F1D4CE1F8030DDF092F29AE459E129DB74B68BDD0C2222624C3625B48372CC26
-1547D1CFC9583AC9D30403D886743F5DA320BF923FAC7DB98E3E731401986ED0
-998F4EA2F6AC4AEC3F703484145AFFA48C05D218861E2EDDF3CA72F3917D261A
-348C260A11E8AFCE9CCBDA1B8A2145040109C734B354516D46A86E36A2E7CBFC
-C404AB710DA8BB2F9954707BDA166B5BD0A5D21D52CA3AEDB5DB6CDBD02296E3
-737D68C71F06881A61C8D4DDE0E1D1D28F73354E2D5A95C1449B6A13C8F15A67
-ACB104CA02BE342FABBF931CE20E2AF96C81E593BD4CA3778489FF756835FFF2
-FEA7A655A483BF94A00FC5B017140A6649FB672DD29AF4A677AA6C387C9FDA40
-D482A96DB21662687D6D3188B002DD6BDE7E3C6A33FDFD35D26B8A3C79693705
-19B2A8DC5BFB03611F6DFB7A789FD3763F2524E33A773320605ED851733966D3
-6518BD7BAF522CF3D9A148A10461269D262EC7CE902AC1D4F0F1554E5BF776F7
-D3FD3917A0AB972F966EC89B1446F3272DF72F2BEA5DF03951B887B7F0202B4B
-5EAF13BF5C91664941002F8516AB639A1F89ED8D29500ACF497648E859160A4E
-524DC4A61B0EE0529FCA3C0CB2AE62F1971C8BC2485A3CCE6A7B4261EF3DB2B0
-7B4F153CE4A99C2B35F68C6BDE6CCAD0EBBCF9BF3755B23B76B693450AD2B971
-FBC6A07C9167FE99512AF36A9D653203C448A54A016768541F50047E3C801391
-DA808EE970F1140E1525C54A407BE760D72E2A6A97226A3F7ED0221EBB323A29
-BCB81B9622879682ED5F56937FBB1B0B892E84DF5577BD572F15A8EECF3E9FA3
-DE4D10A0BC857E223CC73BD4A5A48DD83BFC76C5FC8CCCB30BDA6F6BA40C5112
-C54811F61CB99A96FC797176F6544AC1199DA9E09B05570462FAE95DBF820D5F
-1FDF9941E8E1DF2E13C1F1FDFDCC1186EEFBC366A34D9734B077201EA134A82A
-858742990E8EDA730D7984C80551AD39AD4B4F1531ED07937710BF208B459372
-23B5613E6B4733DDC4F7ADFBD5654755FA8418BF1150FD28005B06BA92E0C98A
-18B98C932C5999187D4F859C67712D15E65F11362266847B590FF258DAB5A4F2
-04205E9C5367A2F497D74A17AFA18F88E9C07452862E2C37EE0452429490E372
-0CE1373C78CB456A60640936AAFA8DF3F6F4A61FE866ED0A3E8EF038701EA6AA
-916562F0D4EF3999F0F9269F51B7096C7181A9DBF7294760F30C0AC4E81E4419
-3F3FD9BDFBFDFCAF025221DE4D7E8DF23A9E7242833C9565D5D98F26150785AE
-EB442C7403BE3D1888A5E0CC14BE05D14EC9BAC1E6624BA215FF2F5A73F00357
-54EDD86678B570075C5AAFFCBD977F9934FD40F5A1F32D71F36DC868984825AD
-42D09AF01D4BC2887F4A5CA5F028C81E5EE852538C7FA4D0F1C87CAFA5E0F8FD
-873DE98952CF3FA16B11A16DA3A52533C5E16CDD3F3C3C1685155300E73EFC56
-E4F60F3B10D96C077E3F017506E453A53073FCD9636829FEC9AA4E076B022CB5
-6B68C81910878D36095DB69D00E920DC230821F14AEEAC1AB434642DD2BE939D
-0BA2DEA21D20CA2C2AEBC1F0B77C153EA109ABDFF33459FDE7125378527482D4
-35F22A42488674EB131EE2D2BC7657E3ACE195561EF8475CECFFC16A5A5409C8
-4664EE37AA9BC99A6CBDDFF53EDD38CF33E1B8796F34A3F31F47859E33C7896D
-314D32CCBC20CD1DCA8163DAE02479FAE164466A2284CDEEB6C6ABD9292476B4
-3AC1FABDA8649E8B4ABE910D4C995ABC80CF6DD870BDC806EC42E6FD455595BF
-4A5283C956BB3F5EA073F1B6E31B94E4792683E97D07C120FF4CD6CD78442E06
-5FD3BCA2E4DAF6FED68CED70D23C8E60B5AB6CAF718F89ADDDA78D782C10F7D2
-8BF99669527147E9C15891FE6C2CD2BFB992B4BB1EF7F4034FAC20F94DE64532
-6B80513E57ADFC1E4F1E78B59DFD3301265AB9BA0E593C4FB4FA64173C6E157F
-BA956F613507C301F27C04DEBB73189B8433B17DE77BBA1F368E81C1270F1382
-E981D9C757BADF1027012DF8447D5311DE7C2846266B77DA7248A6CBAED2AC29
-2D4A8C2E1A8B57ABA496D0368C59E22F4CD5269BB4E4EB616541EB2D68D40288
-AD67EC7F6959548AD602AD2141C31814907002333DFC654C046A8007008DA1D9
-8898D4C77DAF93C89FD5F213E6C7754808DF13205AA63EB1E3968CCB9F0ED399
-8322268AB3BCEDD35A8CCF3351DA8BA5A2F4C60CF705F8FA2933FD77A3A2C5A0
-E6396DF1A95055B82A6C623C15C9E254ED9807E3B2A9077FB1B003CB95ED55D8
-C0803F94D3DE586B6D30A9D7EBCD32E23B0C35D9CCE2DD719522E098EF3071BE
-43344FAA355CC5C455D389627F09EF75378566E32D51A20AC69F2634C911E073
-6C7D910111D7365D979BFBE1E81D1D43BCE742019DFBD2EB9CAED4250E75433A
-D34074ACC9E9E89B00F3A3D185C173E6761DEF33EB805B660DEDE616B3EC3587
-8DD1F9C39787B2E6FD7C571C87CB4B624E0441F75E59A377348277D71CD73060
-6D53B062110B3268B6694D559FE8FF671A39D4E5A77BCF3077ABA2E3D7045EBD
-3F78AC3720CE95C58ED0B6283A8AEFDA7A45FA126CF067705D8CC509FDD913EC
-AB715A4249610CA76BB469B0F11D311E07323549090D351E0BF6A5C5ECD288F0
-8C42CF166026AB50078DBFCDFB495A5A1510B81E26CFAA00F3E2FCCAD8EADDFF
-B41DAC42E2760E7DC4A6B0C8BDC9577778F423BEEF011DEB6A6C2887DC7F9934
-AAB384FBBE487EA6829DF49E07460B563E395CE7FAFB2A0714B09F00FFA4C93C
-F80334F72A854A3B6E420BF22D412AA4E470E8C7701C7DD2058827DCFF1B85D1
-5938FB0A934C79694420BA6FF6ABCC21E10ADC9B62DBACB139C15BFE33E24DBB
-5EE5B57F2A84BBCE54D9799CFAABEB6508620A7A2A56BBB8B6C9F25767B3D480
-F1AF1B62545B43768130CF7460C88515B5357B68EE134CC4DDB70DED1181FBA5
-D0E65BEB324DFF9C0655536FA1565C673A4F078977100827DDE3C3A56F214E9E
-1467642DD64D7F2C259F30FED642B910E8285F789337DD1B9D18EB98A8200D63
-2009BAEDEC71CA55114507DDB8ECE30C529646E4AD927B0C44B1C9B4ECC6D71D
-1D5B7466D36129C18157DC9B4E1FA9E9327D9F2BAD0B7F0A4D73B212C819CBB6
-89129D694BE4CCC01CDC74394596922CB51730F04041094760376195301EE756
-0B334362DA8C1705CD4BC4FDCCC932151160ED4CBAAA7BC24F5C5A7DC4B880AF
-F64A004F6CDD358C290B283D0260F21A314685B86C080EBDE8BF54B8DB257AAA
-227B852E8245D7BB731C90EFD63F14ECB4CC9884278B34CFD353E722CD0BE3C4
-915730AF77F736813B4BD36E574FC5469E6ABF20F7947FBE61D68F37132E8C73
-DBDDFFBFBDE8233A359550E8704A435A41CC75865113BD455F43BAC5107A8986
-1014CAA704B9D77B9AAE586B3EB4362994625CB882471D378AE0E5D256297C76
-5D68E0B97D2C23B0322883CF89BE43EA51BDADCA18906981EC7812F2CAEF1BD3
-4CC3CF85C912D1858BCBB1774539AEF07B3B6057728EB90DC495B1FF7A2BBC04
-5FE18C8510F04E6B5B8E17417949A9B0039C4AE33C4875A0AD89C88408AA6072
-8D7F21400E62E9A19CCA9A67DEB28804635A89C4DA30D33564F4DBE35AB0B6D4
-C09C6A3D94DD4A7D4481443F861C532D52364B0714E3BA599D4C2F11003C5220
-10E50CF567C3149B30F3B267237CB6144ECF32E4D0553BA71D338E4263360B0E
-571126E1BA2F16B77570BC40FA48D5AA4CB1ADDABC042D57426C4F1DEFFDC28A
-134EA51EDEA9F14913E0210B102EDFA9AD95DE7EFCE0BFEB233A151DB82F492A
-AF932E8D3C0178FCCAA022FD0E6DC4044C3FD18C846C76EBCA641C0E0A9D2D7F
-C82721FBEE99553F85503052FEB22CA2243168F6A7837E0BC1C77D83BC0E4C13
-56817E1253F6354F0CE06F0889A524BC8F7154957402FE985C79F3364D6B875B
-D4557FB1EDA1984D9D7A0D34FC09E5D20F6D2887DC534924FC13FD1BE1D47B8B
-38CD37A847D6F741CB75DFC68797890BCE1DA0E7EF9617ABC04F83F4E0889F34
-72033E486DF8E70076C259990DB506158D25C7547020D8244A5EC56153D11C57
-5477D97F7E33657C37B9E8125F5E682A551F34D0A897C35531A7B682D0C2B100
-D1B92A4EAC814AACCE9B648669874726BC16B355D054EC499A47132644ADC72A
-5C7B9914FD4581DD2E14C6B7D7A321A357D60BF8D47C6B597FF24F9E58EADB22
-419BE4077BB41FCF1F4244641EBAA567BB7C13339FC881DE65E324BC853B9A8F
-8AB2C62629FBDBD8C261CEF4248B26761B1A7924B76C7CF870451181FC696331
-A5802A8E18A953913F99D902EF1194E5A0BB9D0B2AAE08A2C8F9CE741C64BD13
-6DF383D4BB7E19CD0BE58B7B0A16EBF6FB272279C8AB09B7E549869CA284DDA3
-38ADDB92F4256A2AA316E5FDA1B97F1AC446D814D397D102726D6318E9581EA7
-5C5CABDD3354A2CED7787C1BE251AEDFDBB5A5C46F89610039867C3B51B5EBC4
-8EEAACF754814C2F14D3B3D81ED08E8E75FEC120C568D56A7CDE44D5B98EC2F5
-487AA94BDD1C84659FBD6B00AF2589824D210239C48C66391103169998C52093
-6262FC9BEB056E35E71CD0B550E69A1DB9F553788D34A15E7FA4B049CABD07A0
-0FBE0DE46469DEDC3E65CDAADAAF2C23A308B115FF910E6C7CABFEC1184CFBE1
-9A6F7575612F7DC4A72FE70A4ADD13FAA9915AA09EFCF4A29BE61C0CE3F1FD10
-6C2059A11EF35B54EA57C62395B62AC470475D29
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 25 /germandbls put
-dup 34 /quotedblright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 49 /one put
-dup 50 /two put
-dup 57 /nine put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 90 /Z put
-dup 92 /quotedblleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 127 /dieresis put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA92F9AF34B34C1C44B8
-56AD10C118F03562E68C1D67E4A8414E94D3AA07DAD126D78FE9B6FB9A2B8BC2
-93A7C4BB95C982B6A3A4E13F17CCE9C00CEAEC5C5365D06BE9AC81F6E117CF64
-18E48C5617F307507A6A6D53830EC8AC16DFA46A3B2DE83040801C3300711E21
-CC2C1E619079C80B2CCA04960E6079DBAA69A86BB739116B6D6F737241FB7E7D
-77E287DA8724C4A474BA19F3AFCEE2A67497AEE22670783A0BCCDF4A2C118BEC
-4D8665B0F2EE270096D7457F41224E17F34C92CBFE3F886446B5AF47DBA9BD53
-A7ED1FFA43FD3B5807F66E9556FC428D3C954B679D4BDBBCCC4CB1C7B182939D
-35E47353D061C1D267181922E6117A1868750E27F1FC33FE3C5C53E2AD6C3CA9
-4A806675DEF3F07AEED581B037295031FE3EB9FF3DA6D31A9256B5705F95AB73
-F07DC7F78B7AEF23574FF7CEA111F4BB502F47FBC5E79BBD394F8CB93A81C40A
-E67EE84C754C4BC7ACB53A6BE9DB0A114CFC5C2C7E87E11DF220F2B612BE0255
-A2A34F53A9EA236A2ED547A52300435B9FC56CAE051830E0566D847D3FAEEF88
-4A4AB41AC6E03281402941227BB309C2B574C02B8E2CF9CF36F73CEB70486363
-13505FF4D02D7C0AFAA51AD51837566FB37761D22E56C4948FDD483149EA0A95
-64C15C62F2B40F01D336CAF44E6D382D63292C01EA493D57E478FD53964D027D
-D09F1C83044DA90C99BE3A8916272C2A89BFFD12EE35289BD89C94E59B534211
-DE1B13E7B65EB362FDF6069E2EBED59C84E59EDC13BFCF4F5DB2DED730B81B6B
-4FE90D47C95963EB392CA3597DBC6A13064C200230598AEA91AA72894715F93C
-4B5D17616E3AE81E1E499448AE2818DED8C21E74F88D7E66A57F16AA2BA8C1B3
-9CB40ECDCEA5D25E9A3BFDD7B5606041C8C4F9656852BEF4887B5C62A985F296
-5003D4A860E4C9D14AA6B9950E577676B7B490D105B5052D8465D0E4211B27FC
-863B411061B22D8036BA76F42BDD04577F2F290D7C2B1D6D14EE6EA759A65F48
-139FC9F16E4E6A617523B704946F089B47C57269532BF4B6A8977F86E7054BE4
-8048B51B9FE66E746FA52CA448551C5B78F5C9D48C1EF3BDFFD61BA323726A7C
-9E259139EF83A372E265B63A9E37D66130F05A7B5B8DB7034FFDFFC195C656AF
-34561370AB1F4357F2DF7F47CA01690C4A16F5CEC71A9BA24845C6417295C59A
-1C507185C5AFBCE9B04977E9804D0F790164EC653A27388A5BF8A3305B6E38EF
-12D1EC08C4124D9D35578E483FDEF46AE6B4902CF52981BDAE8318BC9903EECC
-45A973C3A0A08266EC98572BD205D3044329079520DADD0A3FD12C2934BDCEA3
-6D9D224B32E170A82A212BB173D73C781B077C674CFE166354770B53EC2BF165
-84E1186EFB71517495885031C3B54C14C7FEFD51108DA91F617D635E688D30E5
-554F4FDB1EA55A3ACA46CBA02B9B37AB6EA3CDC2C15E9A149BB3ACAFF6508F22
-DC12E895997169782EC26B7C9D79B4CF5AF1E8EA978D126762128470C5B689F5
-51BF6619FABE29A171D4887D3781BE6DA2DFA595E19F21B2129D7991CC4C343B
-E01522AA8616EE218BCD02E0AEBC76E6DEC214CEF87609310BD5AAAB21A2FCC6
-BB3FA37D89E272C30D24E8E9B4BECDB81C91106ECDD4315B7EEBCDDFBB808442
-76D91DE7A84599CF4F1DE811448A1C195A78DBBF527088C3669E05A427477644
-ACCF34C340CA324D2EBBDEC7CC2BD12DA381111613EE2C66AF730C556830EDEA
-C12C4C6C15C71E899A7CFAEA60635871926688A6814F74AB79183F0A4E235B6F
-16AF7BFB288103C58A8E188E1037012FD5DE0D8D66B58113FFFB865460959F74
-584B547BC7B693FDF2E050A9566A3E975DA2953900DD3429EE46F0422C824A60
-A5819A4B1ACF8EF9137A1773B170475AEF4FBB88C64BFD606D0E551A0BBB10FE
-DC5246BBD6537F54B8A1A5D8DE17F3BE83F7E8E6D0F4EC6C769F2D8C8358F081
-F20221E56D0922247A0CC0964972E39DCA785C4EBF4D0A9E72C774FB890FC4D2
-FB81BFD29B02C8A278780B55647CC5D5656AA5590F23AE4A7E2DCA1345F33368
-AFEF6CD461F3B85E97934A1382C742B3D947F092CCBDC19086AB4D7DBCC49863
-ED71C9841D61B893DD7D0EEB23EBA1A3B1E00F822459DFE1AC98C1F724D96AD2
-8061EB6F9DE008ACCCF3B1A09400E99E7BF87422998986386D29C27B9280D4A9
-A569ED71458BDC465C67DDCCB2C70A654976C2CCAE49A7951161FDDFE326217C
-5C19629838A699FD85DDFE00BCD975226B4C269B2BA85937A2CD1169A64BE769
-3C55B5F4E7F7E7EAA907107A53B2336F18DE52EEA7E5382AB7DB9F4F9416C894
-4EDFC7E417093F6F6150F2541ABBE02A435C514B0CF2EC4E5E56E5A5120D3C7A
-65A447CCA2312DD1B36C2E0F56BCA9C443E16BB5C447F74EFC644EF6D102BBFB
-BF9028A3EA6D060AC91394E975F0D249249FDAF775DD7C6E64CB0FCDA5BA8EE6
-D0A5D820E88BC718E5F499E7F376E5B3834D1AD448FBAD8958361D261E07E121
-5B6DCCFD06A550A3D930B2A07D844BF0DB1FD7A8539245957083C8490EA566AE
-823BA192BCB5F31D32573D3F6F78E280C426282BED756000563985501131E476
-A76E9C6DD970A3263ACE8B3426EE3591BD25FADE0ABCF2FE90DFA4D4A18B9916
-DEFACC3FDA83D8B0AB4017EE4ABA8864B2CDA271C78F5A60FCC62C72F8204DE7
-3691FF8764A5F462E4714F10F3519C660C9E746FD5D6508C7C3824F2750E8B5C
-828BE9F1677C1F87A8D315B8BDB8FE415549BB85870C176E3D9BA9C63FF148E4
-C944BD13A56773F6EA7C88D7CAC153944CEB589C8B366C4678C07091A48C4966
-D5AACB441F69523456D5AA3486B7E47E70D64E0A1E1B9DBADD15BE4F415095F2
-4C7F31B9C75ADD272EFFC226504031FEF49354841DCCCBC92DB01B2529D0E4AA
-CA95E5E4FC0F90D45773831FF2A90E7492241F6977A51D4ED4E21631C76D2055
-CFC75E0A0BEA2DAD4191484624A8903DBD53960EDC3A6DFE390021B70DAB42CF
-EF05245259C57032803E4D30212FD52A830EFBD10ACAC4963D990A6CB0CFEB21
-18614CA56785455354DDEC11D24B3096874A0A6F3459FACC180693B85DFB62A2
-6434D3B62BC4D041B014C19DD6207A3274DB74A5CFE88B34B7E7A407412EBEB8
-9DED1F5C8532287C2F4BC47040C6841028E06D27EC94E25D0ED8643959BD6F7D
-9B2E2ED81D3BF77BADF35A9FF6407DF4BCAAB1894B3F5465260450D0A70B1897
-9530C72EE73CF7DA282718B37A5D15E43BF43B094F590739A0D951D520F8EE2B
-B033441ECA054A042BE72BA4E806157DC51249A17223E48605F5D052B678C4B0
-61E5C665D6860CAB96C039C7D328AE51F22114AC358E30838DAB9E565F54785A
-B8F85AA684F5CBC4E1D4DD712EAE00C5C8B143EF7C9C12666D6DA3FBFC099CA9
-4277580DF6BE5D47140455F4994A7814F4E893621CBEB591DFCBFE32C8E47BF6
-FACED2C375040D1D3A6EE84A1EDEF528558854283DCE27977B407F4F38151BC0
-FDCBCC2AE21E424D5CC81EDD919EAC507C8F17278DD2A8B05AF6126675593E2C
-18F68B0A934D64FE9FF55F99DB786DF805474BE8FD5D70528FE9812DF6E10D9B
-3EBE905D5491643DFD21E9B1F5A683DF88539CC980B4DD9A017373B2B9D464AD
-7CDD24736D48897C1B6742053908BFD7E11C1D615114D4FF4E09F1CE574F09F3
-27624A5C340D26BD1ED2121C5A03858470E23565822D9E0F643B305ADFB7C99B
-96CFB8773B390BB9523539BAEE527953287AB7974BB201CBDF9C3A4BC73CAABE
-A527B7B082B18B72E44633575BF6E6C24F87580C25F04DFA00534565A6F15529
-115D32B823010E537CBE6F12515375D1608A5B3314B144424399EE76BA1A9C1E
-ED5B8437561CF39B6E12F4A68FE83EF10C1E306D3CFC1771F574D38BEA6EDB5C
-0C2E1F5E347277F8DCA4364BC822B8973601D780ED07B6A093DBDF5E95EC2F5C
-1BD8D20308716D9DDB9349CAB711B3B1C22B4A7B28817ACD3AB0E3FC6293FDC7
-BE32E9CAB50076DD0D84DC6B33A08C52BACD1946955F30D5547AC5499827D16E
-22BEFEB4001641DD41079FD88FDB65C3A263231F6C1F611F6FB1F000EF9B67C6
-3D68ED9A1376237A473BBDED821B9F29B2D803F6B82B76B121EB577F69775C3E
-C539E6ADFE6498A7FE24F7519AD30E16F320DDEB76E0B5B15B5CFB0F7CF9748E
-4E95CE98BC4454B7F9A91AF30265DE334831072008F639688942F02E817919E7
-85A70E731A372242346EB192896714AD906AD0BAA6375829A4AC1868C12DAB06
-7372C70F81D18C463EDBEC7F967AEFC18E29E6B4D6B54F01744EC270D34CF112
-BBE979942A5AED1691DF83452A8F1B85E7C6E06B4E7AA31C7F74217B2141D627
-DBF02C853AD5E3451E6E8B601BA31AED5ECA907CE0A2A90375E9A74996693F33
-FE501762BAABA4035961FBE33990B671C6DA78AC1A6234B9A93D4E45C92A4D1C
-4ADC18A9B6966178A3DA17CBFEAC0ADFF71CAF8673226EF2ED16891688EB69DF
-0A1DE792D130A07792EB325D9B20449BFE576C46B31DF1827A956C611E3B1331
-575555FE8718BF64A2FCCDC28E1E95CBFCDE18E90B72D1A331BA464D33E72214
-650214A5434C53F401813814FD5EB83CC2C027DBE7DE348585D98239C76E7827
-D5995D67D5B25ECE477D64924D9D237EFDC420A2157799D939B1802259D42C62
-1A320B2EAD70625E1C27CDBEFEE34AEEFD15C520C39AF401B23BB2993E5A84C4
-9A7C0D462ADCF9109554C8EACD74ED08E7C5367EE07E0A31E19718B8444AD175
-EA0B53C6901F6B4343A7884D97CA89FFF1FBDBAD326DC98309CAE6BC18DB72AD
-C57A397150E7118EF7C1A82E78F54402061AE1486266A7CBD5AC6DCFB61325A0
-CC6392E4FB1DF693E2D8DB4EE5E0E104C4373B13CC71194E2D3D0FA58703C565
-956C7F08849A3D0FD0E6ABC8CA83282103126EFA119826CD7C6E6DE5D9BF315C
-0477A2A2F62123870C2867BD80D208B3DEBD00AEE8274780FB9123755EB6865F
-4E8873D762DFA760A54916224CC0798AF5565E9C19A011EB02B18B51DFCC2372
-F0E0E6AF6786CA0292781FD5D90F5EBDB68B7BDBA8A80AB21FE329622E9A1CB3
-DBC3F77C30F99B8297503DE7C396BD315B390A83D76663D6CA88A5FA8D2430A4
-FB6B74EF29B77D9712F22656F2C3834E2073E4AEB8B73BA7BFD2A89128741CB2
-D74CD81DD2441CCC7667BD34C0B4203356322A28DEA8ED6E580F693968624D09
-D29F22BE1EE8775283211AD16752A380D8FDAC9F4AF93C97DC423884907BBDBC
-F85830EAAB27C8990D17DB1F417DC722861BCC20804EDC66E16D98C0DC37E399
-42805E66A22DA1A1FB9C6E0BCA55E715A1AF265585411E8CC75CCABC2038201C
-EEECC6A2D72858E50727311B0ADFD8C3FE6696C551FF2E3C0D4C563415FE17A2
-5CDC2EB84688B8A0A0817887D89AF6AE0C0090307D8129E9CEAD294235B57D60
-5DAA352AE264C5AD565D8998B770E7F6C1BA702987D6EC60D9DB33D9D3CB8B5F
-BB10C15799D07B8387D2953C216F1733DF0EB714B8B03AF2DCDD3E8210189D2F
-C40FF7B3E87C63553B3857D419C6E22C11E3F1FC9F3AC381C980AABED3021788
-D2951CE9AB60B33E34AA2E984A41E422A2503EE8FFC663B479E102446E4563CA
-0AFE3BDFED395025FA82F20F5909CC6DF16EC30EA4C69A9965EFE000554CEA70
-28A99F84EA6CD784CC6ED1D646040EEF63A99D4BBB8E2617AFB63026B15F26F0
-819C9FD92E5F27E276B8EEEF0D4791E62A2CFC3207D5BFCAD90316C15D3725B5
-DAC2371E02575383F2DCBFA327FC595909AC7F691321A0EC088880A371531F8C
-1E17A748731C7C60EF6AEC33A427233C46CF425770EA7AE36E6B514ABD351188
-3FEBAD4F9F570718081BDB8A04DC88E7FEFC394ECEC5CE2C3F2C01CD587B91DB
-C1D997A6B1B26ABA3FE9F52D06ADCF9E0D1AE08D5C333E018CA69B9DD42EFF3D
-5FAD8C353395F7B90C44873E7BF316BEB9279038275EAFF8655A292381722625
-82A40AA87EDEBF5DC6CF09AD67E3CFE7309648A8137876C6C941FAE66F3B3BF9
-1D109459F4236026104E0CCEE6E8B7F1A56C673BC42920D05990CFE818C2E34D
-6193D7D2FA18094DEF76E661479A1C1B98FD26C10F9991B98369E7AE31089314
-8B6346E0D29B55C6DE40471FDEF2B425437469F4A8495269EF5462BA6ACD1E80
-AC58D4F8C6C84BAA0D43C349A828B555E4789517B8835483059E7AABE8DE0961
-C253AC8B912D09FE4D7E2725A9BE99358E9B16DFD22AC1B86A6B17CB363C9B5B
-510C1AAA04C0C5A3B5CC0A9915F3AF11BE7AF0226528F5D92F0D704D9EB3EA55
-0677A8B622818A18B6F7D564FA5BEEA19C6AE12C1D473EB086F85BB04AED7997
-F883C693692AEE6A85276AEC4B30A96047B916EBD7C40197CF3EDFF343CEF605
-FD309044EB8EAC8E53675E3B80EB11B49FB5AD9870423B4E1C9C802596FA5409
-55718B430EDC2B751C22400EADDB55A58739E255827215BBBDF754262A01E168
-D7F7787834F931C4F3F47F19D47B4AF24AD7B2D0D0FCBC5E9A4AC99ED80C994F
-DCC263EA27587A346BAC7A9F2C99FD90892C7C1620E8ED04388F3FBC1BA8AE07
-435019E4FF712AF2481AF56ED31F80418F66752F6CF7254DDCB6B715F3EEE111
-44ADB86417A91D4DAA925E3711581A3A7EE0D3CC327CA68283B5C1383A12677A
-71D5033D2F1360B750038B3F454B994C32DCE48923C9A5A3348C99689353FD6D
-9624CAE248F88ECFFF3E3F36BE7B14FDE903415B51C4B75D2EC50D5D4CEC0A5D
-DA4F2DD45AF3FE6F19491042A1C4639CEBADD581A6AE532AF8D7A36FC0955368
-6B1DF6C8A353C4C4BDAB1D074D5BD35C4FFB1810B1EA076A377D39F49A71EEFD
-174E530E75D58DE10A017F4BD425A3FF079FC0D6C82B713D58A6E9A7BAF44896
-425047F9FACEB01D6846E1E1F3FF67F0ADBADF5AB4543A17A0E49D86025A090B
-1E51EE88EB05F09EF675DBBEB275872ECB89CD976A5F8A1F8890027D26A9C4C3
-9A707F1653260621FDB38B0FCF99B628565869AE6F6C95645BADA9AE0FF8E1B9
-81755AA4980ED90DA628144BDC3931E78CC5AC77F14780B1D8FEEA53694AD5E2
-4EF55C0A5EF0D9D2DFCC5DC2330F243E58AE7FF0B03611B8BB14DDB849DBC827
-692183DE8B9D7C915E6A161C0E0AB1A1355C2FD81FC31D314CEC53C8B70B54CD
-CFD14853C59CBEAC029D424EF734666849BDD5688837904C34995B1BE23E2577
-CE6B09A3E81EB1E29945AF1A33BA1F55B4FC81C1C134DEA2BABE598261B06606
-9CFA30D2A109B3632BE80B741B2B63B2EE7C567976B6B4D10D62167E4D1931C8
-3426E27D046C021B770A53396BF0CBA7D6DD27F3517C5C5EE2F353B66DABF6B3
-E27E516FBAE34463A0F24A244BD93B8FEEE0CE735A8949F90CF3916348038300
-20B4EC40DAC2AB280B4146E9E7A58FBEA4759E819C9AD93A3CABD059F0B2499D
-EDF9534E7729C0D2689369D56EDDB70216CC9CF4EC8DB45D6AC7D10BDE966277
-162D53B3D2F85B157442CA95FB9BEE113EC6507B8AEAEEE5EFB44DC52B1A628F
-54276A2133D5271900CD19EDF04D7EDCB50C86347648D2DB3803B448B1B18E6C
-F9D69348E4B666B1EADECFA3438727977FB339A527552AF057DE2E0CACB1843D
-C875826C4E59D6FAC08F0784708700BB69AA1B704A895B0628C17ACCCC160BD2
-1620FFD013DB19B2AB209004CAAF0B6549927998E7510B0FCE3B5A4E129A719F
-E794099DA261D049A78284952F25BE6A88A72E15CFF842B68AE76C0C9E39513C
-92C907F060C73607EDA9E19FF81C9C0C257F608588CDDE61D27BA2F2FAC7EECA
-516BA6ED12065ED03AE6F6625CC57E0F454B45587C6DDFA00EB36DF43F218A36
-D1A4441A2FE6F962069A599F81D41E11201CC45079F36B8CC271F28699DC7E03
-79B60CCA0CAFC6F6E91B7EB0ED5345B3D653CAA800790E0B0C97185DFE9296AA
-864F86EDD9075F7CDD9CC21E34A8BEB5592EEC555B627F17B5567D8A7002A182
-59639B73F5E5CEA2B7D1D22E5257E5E743306FD45A1A8998C9F84BCAD4D54C6C
-8B88777A4403D3BF0C425D0CFB7A724A05AAEEEC0493FFAB3AE4C60C0CB32CF8
-12351C1F3ACF78FD55A0A896629BB10BDEF0D1A1090ACB311D7EE42A0440059E
-C457F1F88EF8F7311E1A9859B326F45846201AD8D3EE978227C7D54F4081ADE1
-4F55D31360331B8E1144061DD0AEF140BB8E74940BE8A7B6C868F6AF9F74AE99
-27CFC0A0FC6F5F246382A033B623FBEADF474007E6666489E6500F6E202B7993
-62C6DEC527B43B0E93212DD01D935914FF830620FD6C7E933A6575CF41488C86
-B806B3ACFB256FD97D82416C130B5FCFCE319DFA8CA225F1812AF259C4F7F5B3
-3FC5FC8C101FB9E73678392F85BB507D27043CDCEF6E7085E91FA005C1B9FC8B
-A880C4808E76BB5802B53654DAE21718AEA6C83EC93F8C31156CDF08A70AB5A5
-1B5BB1CEA56D76E5632D969ABD98D9C1FFD718FAD18D66E60F3035A0E7F901B5
-62B14A8827C879F7C78CF5C40D4FD1752AAE9384D2327C5AC75B7B1D78882665
-EC78BC521706FC33E6C906A1D2AB172E470BB96CB6D406A7E8A7A2AA0E2B1E66
-446AD075B41C577E9856B2B014F5E83EA1D68229691F10C46BC330A816E29918
-8D0EA64B2A37530E8FCBCB6C7C6FB9C0B33AD0DD798E3BE5A70747068E9BA222
-FFA832B3BE80C00D37817B75E7119CBFA500DAD61C3D179E3FF00DA2B09FB22F
-295680D8283AE5C085EA6B691C5CB5DC95BD727CDD6DFD74BDFED3D5E5A311D1
-48A6DE06AD948AE2FD94D493F03956A82E482B364744D60DC18A4B8A9F743A83
-F06EC957E9F95E62ADBD8D239E10CA9E9C53BCF2EDB94E081EFC988BDC19AB68
-C76CF8D6484C1A6B83CAC3034F0D975AA532749BB48F7FBC7D6CC34016AB4B74
-E9B91C4485C1E256D926EF5B71C92195F94CBB558EC2D05DB7F1A8B0E2B1E90C
-FE067C789A2DD7AB774B3907DE144F2C40DF555B6810BFBCCC67C30CF10C40E9
-43792B02AF78827F756E3C5D65CE829AAA9A6F1A605D77E5DCFF9C2892D51A78
-988B18392132103A03C528B64119106DFEAD528393ABFD2D35FD23C02638C6B0
-1688F5C9990F6101B127486364FE2DD19B43DC4FB4B4D0289AFE8006D2163E81
-9586D53AD470F9FD17F47CD9A7E82043479796DD4BAEA9352FBE8D1F25A24E12
-085A8CC643C2482E631DFAEED23BAB33B55BCC88AB5FEB3CC33A1B02DB6E79A9
-CD36BD636302E78E93839287272C33AF6A8888C769D7964F3310410EF69E2D81
-35B36FB6E8367D42D7F9D42D92FF4442735A5A4FAFAA8949F26E256E0D108332
-94B320EA0B10BEC92908C5D349166F18856A5FEBEE1211A1CD526319C20C8BA7
-9BE4AE8915309E3E2C95F5857F748FAC86B996B100E9A455F6A9D6F8CD9508ED
-1AE4FC31E99E3156445BC771641082C8F004D0D4757D18696AC69497AC27A943
-B60BE1C899E441A92FDA7B2721EE7CA0D022EB724EB1EACF0D2355B3FB1E5BC9
-F45B4AC740AD44FA2CF3422A1A4AE07E7F631B8E52677F4DF36886802D6FA193
-0C4BF30E2D0719C7BF5505A8C50C34834200CB7027C40BF7E2CF1ACC3AABE16E
-CE4E3ACF2E8C3732B728349511B58EFB045E2461163F0A1B075C83377F1BB7C9
-7CABAC3E85D8F23D263D700C50121EEFFDB20EA41DFE330E4FED43037CD2AC75
-55DE3ADD2922A33FB4A40C36560D218A1518C333D76275A3EAEBD94617874AE5
-F4FBB40E421774AC7498ADD7E4EE9F01C79DC754EDE50417843B0F4897C58465
-BACB704112266BBDEF6091DC25732FAA30571098B8D372FA154430666C2BCB40
-83331983E5850DF97844CB5DFD4919A4FD13CEB5807554CCC6039FE674974801
-1E55D2C2143DAA3607739CA6C054C07DEB64B5107309EB3BB20997F9B96F67E3
-6699C0DF225AC7AC0122F2DA1900EC0F8DE5D663F0F5F9DC86685741E8C125C6
-BC19F278D90667DE8AADB7855A8963394230ACB8BA70655B086E45CB38233957
-E455E38F8A0D94E408A6270DC18AA2D7D65F1EB20C8C4334BB13A14D7C06BB56
-6A1D82E4C3513AE1C73D7C1698B37429479A2D0D353FA96722D78D9DB196EF2B
-A1A4E2963673EEC8A2272C482464A5D999114A8EDAB191AB4C9D47874B9680BD
-B3DB8E4EEDBE1D61DCEB8B52F7431244990FFEA26AE6C9E3AF10F3DA07CC81F6
-057A6FDCAA092F81C5207017067F7C5BDD9EC0913EF08379DA3F2AD209F9EC11
-A739CB14C1A8346C4AC60B65684440F89667BE535CB82A7A23E45DB2C73CB5D1
-A41EC7C31AFCCA361D624B1C44535AE7722B02A26D770E86A0966571F2CB5D61
-35E7AAE4079AC8AA043B368AF680518E73E1CE70C6265715BFFCE902855CACC7
-7D594E9A18E6800DF00921BA57FFD1F2F8B2B521BB93B503C74FCB38C3B68D8F
-4FB2466D64CA60047EDBFC282A7B1451E9FD3CC4A88BD51AA74BB9908CCC3C40
-AF80E47D2A664D1C8B29CA7B4A694BDB3F56A1A42C64BE29752FA4BA1BDF4002
-648D17D0B04CB0AD73D816CCE04A400F8D11B7EDFF372B104C0159EA94AB995C
-1A5E09600BF1208A69B7A53E85E82D7B7AA6B896A5F82B6CF08C6E9D561AB2A3
-ED32A23F64C70855670A9744D750CDCBAC87E118D1F962653C0449DC10AFA29E
-6B6FF146A3A06B94A91F06D7941424E8C264F5972E025250D6841745EF20EBD3
-185FC83B55CA90F8B1B260747D97748D0649FC04F1D69D954A1A997680AAA353
-7B69B63F8A0014AAD855C0B2E6AAFC033277FC9F0AFDF82DA5F43B997CDA6CA7
-E1714A28744DDB4FE8E67437E68E2235041B377C3DBE29404B863D53DF6BB2B4
-422C9C748D2443409F5D92B35F935906D0048CE4F9B2979CDC6B32801AF8B460
-75E2B423D7C4FFD6B544B03AB86958C82D59201F3A9D61DF5CEB28927C3019C8
-CD0D28A8EF2C457A9721182B64EE1D52A9BE3D36C7931436C62A2A0B9235501D
-EE86537319551E7D274A1AB12D3E38A4B5B0ADED590588018AA87B2DC81C5667
-21326C0BEF227229EF0158B66F3B048931D9DED03B3C16FBC3FB1425E8119666
-588E2D848360ACED5BBBE674396858F66E0FA7251C90AC60FB5636CF3DDAB79F
-737AB6F2BEB79D8BDC88041FAED46E60032C5073F9B0C15364E7B74A07B31E3F
-4D6B8C3CF481A9BE705B60DF551F779A5B8554FAE4B430AFF4C672A250DC2A02
-4EDC840495126F4A30F1E7FAFA381E69EACE3BAC8B999F9788B529320E128F80
-5BBD3EE188A2241EB728E30C59B5C057801E6EAC2ED77E819C090F012BFC019C
-F222EB8F6B2E019F5865B747BB3CCD9FB4B4708E912814983277D5159868C1AD
-F1AA092A0B4001C025729A6BF32AFAA911D7BE09A6E79CC9FF91AAB83D61772A
-FB8F62AF5CE7C2364FD7C5BDD469413136459493D2FC061BDFDD5604571F2E9C
-F81812BE4609D2E035B8B25EAF75110307E7C28ED135274F31DDC282D92D5FCA
-FD085F600869A654E56E03206260E9BEFD4406032536A25CD6DF613CDD94239E
-E3E3496A9860BD9DF8FFA7FE17225590139EDF5E31AF033B53D27172CB481F33
-37E40E25864EEF564FA783D4A3C0576EE60871031406F3C85C1366B1F7604D7E
-DB0FDD7E54E6720D933694E65E0F84B02994561B34D0051A3880C6B799B18CA6
-6EE702B7B19D995BDEF18FA9F85324008A9AFFF93B80BD9B5F65B369D73B33F4
-AF2EF66473C2FA5295EF07967CDCA7A932599160FC1C1F20452867F1BA283EA3
-5E760E709E1B643F99C3C417BC5CD39997C0C3563AA88BB626B83204CC37A590
-3F5D5A51DB8E309FD5C9C761BCCE06E806784A1D8D83C50DA19C2FE670AD5C84
-FA4D1FCB1410E7AFC5704178C564AA199A936D5EB94A8DCC79C4DA208EFFC801
-B0E61EE83375428F15E5BBA146BBFE354FFE98BE95AF2C4F875BBB77E9424910
-8A9E6144825B009F94F30C410E8BA1E09E51C5014F4D8873CFB9824169510024
-5719EBB755FDBC0196BB2163D2367B85B28F45E6C0A0EF63BA8D859BFE4E6931
-DCE4366457F2426AC8A9F496CF69A8EB1BA3F265961464AF3D1A63AC51E364C3
-B76F4ACF6D272F708C8532266765421D6FD82F41437E9BF02A433B0AFE7D971F
-4ACA90CE15482491BE8E80769A3FD0377EF245262017B08D6935E20267D7B068
-D7ADC39982A803903807B4CAA129CC364F717A8773CAAC45CDE42C6098DA53B2
-0ED85F24714DC971832471A6C59690873A8CC06191DE2234A3863B0D3F440A0A
-859748CCEFCA3997F4BC1A8C41A7AD2FB7CC71770AD7836397C512BFC2E4EAB5
-9BDAD292E195452A1ABF06165E8818AE8EC81EC70F26E721132798A343CD50C9
-817E5EFAE93C2C29342D4817F7579F43D09DF6F88A2DFAE1452B06B047B399CE
-49F62DF5DF63BB9E34AE224B7F0EA2BD3019B0D19D9575EFB02161389F1138D3
-9199FCAF9D8805C737807C80E5A6412CFC39FE8DB021BAAC77DB5F08F25FE6FD
-FDD8018BEB5F042895B520E6E66B0E013648BB0AB2938CB5841B6F61FA498844
-0AC7C8B7DAF6741613B0F6255D1A80356D574ADF05B8B4FE993950984F2C2E53
-6AF90BF44CDF09FC05912D83CFF9691D3406C71F3851C7008A1E76423A1DF83D
-AC70053E78A72F2EF045687DFC489FB50F3FE517DE979E6A062E60F1049C5171
-061049084E58A54124240A356E110D6751608D964E0BB766D76278A614123CE0
-3B79DB317C4FD72ECA8106B1B9E0FBB25B690E7E9D9AEC69448A3E00F23DE5BC
-6566BA0F2FED9C8DBF7D40E68CEAEEDEFABF69F6470054447C6FC2E3435480D1
-737DD4C5A31C7EF11D92EE74ACAC96970B3F1A8351F9159B06213A7D5F3C14FC
-E3193A4BB9967551F10934EC8DE67B7CC4938D22A11840090354508AE6317D3C
-6852B14D7E9E7C789409299DB3721E52C455104F6DA1D904E7B88491A32956E7
-BDE4DAB95FF0EFA8AF30464EF1BAD6D20787A693CE7D7299F4F3E8B1F7D5CE77
-3D5A88F6435CE49B1AC69762C00DA60F5E1BF5C738C8C157DC78AFFD456DEAA5
-B9028CE16566CE94F916A94DBF7AD3B610379EA23DA5DEC6CEAB8ED633BE821A
-3480394AF8E0C567DA1D4D5537B41C9923452969F558B9ECF5EC145796029972
-CCA4825E7936F64B1D981D8BFEE90E225E9A4C7DCFA8B1635814E685BA1DC13D
-A54818877604CD557847324A65492C2EFF34FE696B488361E0BEF760E8CC5736
-9FCFB4191E975B889FAE0E27729D0C9B381598558E1AC6A55974776119C06BAD
-7702853C4EB84A2C660168120B4B863A33A7040A1EABFE0752CD0810A5FA5FA3
-44993486CFED8C577B29B7B122ED2F80845B8A82ACC73245BB00D0E7A5297DE5
-8D0AA6D07DEDE3148AE16C593ADD5818B3AF38169E7389162E7A4871146FC7D5
-6621003C8356EA861461DB4DDD706EF305532946D0B36B36BCCCA3C65D124BF6
-84DDD60DDAC7E95BD7BCA3F12F40F63A0C2798BF04039E0FEE153D4BB228BCAF
-92533C67B9647C0F52380C6DCE39896EE21D22BBC170EB34FC2C4514615F4CA7
-A0DFF78D87F4F49A5051F7C8B4E127A3D835FB0F81F7B835F8C9D10483307ADC
-375B710EE1DB4A6A69D5AC2ABC214A33AAEB6A9A1A5A944F96102F77924351D1
-81EE1187B4BB5B5A25FBFB9ED9633E30164E6C01ABE0B89B16F1764AC5CF57BA
-8251FABA7D72EBFFD7D222052C3BDACBDBCE4140EBEB2AD7C73FFFD24DF56F54
-22EE37AD60BFCE4C9D970843D3FDE5E9C32EEFA4C1C86FA31C9C8B60D9D68456
-59D37190F5035A0486B8A20300B07D896EAC5DF16E8AAC2B2963C71F0FA0D407
-68E814C7B68AC110353B6CAEBF6A760D0C3AB28BA23D70BF027494540EF92CC2
-0F5802D9AAC3B26D98F96117674AB0DC5A756B5FE41373A9B70F6378A1405C90
-0AA968AB07FD47F8B6C9081B60A2B880EC04C3428E836FD44DC2D193D3712A60
-70F97BD4E67DDA55B523BB86848A6A47597C19BB7E95E93A4D0F5F340E4B7586
-1D98B2F4457E4E948277877480EE26702F1318C38AC8C8FB07754D4A1F6A0084
-8BEF6DEB1AC014D13D51D33383D549AF3A7CA64936C5784A13EF234E9AF39372
-F75D8461083A06DBFB2EF37B7CD2AA32C97894399E735118FAF8FA26EB7A18B1
-10E2FA1C7311A3A66352031D3F19C43767F7B27EA780B7E931F4E130B8119038
-D2EADC5C4F192CA1EC07D041EC289A0608A8AF6D771339D6D597738D7E3C99ED
-0A83BBDD3DBC5BE03BC33F1EA690E60C40A7BFC6A5A6640814D406CA530886F4
-F54E49E97D5CE8DC1CB7004CEC7D822285D7B87D3C08E54364E8BDFB36CE7FC1
-B181341C13999A749A1712F2B7D1EEFA07FB9A0FB0AD901337CD62EC3144804E
-D5A3A7817DA57AE3429EB187D56DEB3828A9FD1CA9D0F2B3AB0F912D7C40942D
-D54CEA40B324E2F3F6A012557E7A421C457DF92B5A0F2466FF3245C8FF25F81E
-45E6BF85789B70EF5BC79D6C8FA8B36803C9560C2DA04464B57AA18BC2EBBBA1
-9755FC3462E4FFA7EAD62AB638110707035680670B4D7765E52C1D79D963CF04
-8E9813D7D0325B0D15D72A02E171ED75681A7D63F72BF024540F1AC64B44D5A9
-ACD5FB3953B8FBA0D512B62380EC3ED6FA0B086F7BA6CA864BBCBE8A44543FAF
-6A639E3093A0C45D4F974CD1B95D9F1F4065E423D6BB107BD17C05FAB62BCB90
-CB4553F05CB418EFD386F29AD05BD659EDD17EB75E0DAACCB85CBA36AE98FE26
-392678396676C123210710528D05B3A2480DD2ACB254E87ED3F6429063337332
-3555B3A83A1258BA0872E573F4553DA670E734A7FDE7CCAAB2847EED6F8DF4EA
-11839987670A5CBF3843B48E0A434708842D5FA1BBE50B0C07A511E5F83EFB65
-BE64B1D2CB4368DB157324E4FBB02F3B29049CB94363482CAA517B6089F1EF1A
-EC4A1BF5C3D9310D8F775361C87D03822D9E67A63C5EDC0097DDC2E66278CF9E
-D48D1D323B3AFD7208971EF3FE7009110F330DADFA92C4D394974C036E22215C
-4B3E0AFB64C0386002D2624F42AB7A642556DFC4A231756CCEB0411B124CA5BC
-00F3EA0EF603
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 55387786 39139632 1000 600 600 (de-refcard.dvi)
-@start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 138[38
-24 29 30 1[36 36 40 58 18 33 1[22 36 33 22 33 1[33 1[36
-6[44 3[53 3[52 13[54 1[50 53 65[{}23 66.4176 /CMTI8 rf
-/Fc 242[61 13[{}1 49.8132 /CMSY6 rf /Fd 128[30 4[27 32
-1[43 32 34 24 24 24 1[34 30 34 50 18 32 1[18 34 30 19
-27 34 27 34 30 10[45 45 1[34 44 3[45 54 1[46 1[22 45
-47 39 41 1[43 42 45 9[30 30 30 1[30 30 30 30 1[18 21
-18 31[35 12[{}50 49.8132 /CMR6 rf /Fe 128[41 4[36 1[43
-59 43 45 32 32 34 1[45 41 45 68 23 43 1[23 45 41 25 37
-45 36 45 40 6[50 2[84 2[57 45 2[55 3[49 5[51 53 62 1[58
-61 18[23 27 32[45 47 11[{}39 66.4176 /CMBX8 rf /Ff 130[35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 2[35
-1[35 35 35 35 1[35 1[35 35 35 4[35 35 35 35 35 35 35
-35 35 35 1[35 1[35 4[35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 1[35 35 35 35 35 33[{}77 66.4176 /CMTT8 rf
-/Fg 128[57 4[51 2[83 60 64 45 45 47 1[64 57 64 95 32
-60 1[32 64 57 35 53 64 51 64 56 6[70 3[87 1[80 64 86
-1[78 2[109 69 90 1[43 90 90 72 75 88 83 81 87 19[38 19[59
-13[67 11[{}44 99.6264 /CMBX10 rf /Fh 128[35 3[35 31 37
-37 51 37 39 27 28 28 1[39 35 39 59 20 37 22 20 39 35
-22 31 39 31 39 35 4[35 1[43 1[53 72 53 53 51 39 52 55
-48 55 53 65 44 55 1[25 53 55 46 48 54 51 50 53 6[20 35
-6[35 35 2[20 24 20 2[27 27 5[35 8[35 12[39 41 11[{}65
-66.4176 /CMR8 rf /Fi 133[61 4[76 53 54 57 3[76 115 1[73
-4[42 63 1[61 1[67 11[106 2[103 3[108 6[108 1[90 69[{}17
-119.552 /CMBX10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- @landscape end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin @landscape 1 0 bop -242 -421 a Fi(Referenzk)-8
-b(arte)46 b(zu)g(GNU)f(Emacs)422 -313 y Fh(\(f)473 -310
-y(\177)471 -313 y(ur)23 b(V)-6 b(ersion)23 b(22\))-294
--135 y Fg(Emacs)39 b(starten)-294 16 y Fh(Um)23 b(GNU)h(Emacs)g(22)g
-(zu)g(starten,)g(geb)r(en)h(Sie)f Ff(emacs)h Fh(ein.)-294
-190 y Fg(Emacs)39 b(v)m(erlassen)-294 342 y Fh(Emacs)24
-b(un)n(terbrec)n(hen)h(\(un)n(ter)g(X:)e(minimieren\))109
-b Ff(C-z)-294 421 y Fh(Emacs)24 b(b)r(eenden)964 b Ff(C-x)36
-b(C-c)-294 587 y Fg(Dateien)-294 738 y Fh(Datei)-103
-741 y Fe(\177)-103 738 y(o\013nen)1034 b Ff(C-x)36 b(C-f)-294
-818 y Fh(Datei)24 b Fe(sp)r(eic)n(hern)915 b Ff(C-x)36
-b(C-s)-294 897 y Fe(alle)23 b Fh(Dateien)h(sp)r(eic)n(hern)747
-b Ff(C-x)36 b(s)-294 977 y Fh(den)24 b(Inhalt)h(einer)f(anderen)g
-(Datei)g Fe(einf)811 980 y(\177)809 977 y(ugen)169 b
-Ff(C-x)36 b(i)-294 1057 y Fh(diese)24 b(Datei)g(durc)n(h)g(eine)g
-(andere)h(ersetzen)259 b Ff(C-x)36 b(C-v)-294 1137 y
-Fh(Pu\013er)24 b(in)f(neuer)h(Datei)g(sp)r(eic)n(hern)478
-b Ff(C-x)36 b(C-w)-294 1216 y Fh(Nur-Lesen-Mo)r(dus)23
-b(des)h(Pu\013ers)g(w)n(ec)n(hseln)241 b Ff(C-x)36 b(C-q)-294
-1393 y Fg(Hilfe)-294 1544 y Fh(Das)20 b(Hilfesystem)f(ist)h(einfac)n(h)
-h(zu)f(b)r(edienen.)h(Dr)1035 1547 y(\177)1033 1544 y(uc)n(k)n(en)g
-(Sie)f Ff(C-h)h Fh(\(o)r(der)-294 1623 y Ff(F1)p Fh(\).)h(Neulinge)g
-(dr)204 1626 y(\177)202 1623 y(uc)n(k)n(en)g Ff(C-h)36
-b(t)p Fh(,)21 b(um)g(eine)h Fe(Einf)1024 1626 y(\177)1022
-1623 y(uhrung)g Fh(zu)f(starten.)-294 1732 y(Hilfefenster)i(en)n
-(tfernen)780 b Ff(C-x)36 b(1)-294 1811 y Fh(Hilfefenster)23
-b(scrollen)833 b Ff(C-M-v)-294 1920 y Fh(Befehle)24 b(zeigen,)g(die)g
-(Zeic)n(henk)n(ette)j(en)n(thalten)151 b Ff(C-h)36 b(a)-294
-1999 y Fh(T)-6 b(astenk)n(om)n(bination)26 b(b)r(esc)n(hreib)r(en)470
-b Ff(C-h)36 b(k)-294 2079 y Fh(eine)24 b(F)-6 b(unktion)25
-b(b)r(esc)n(hreib)r(en)636 b Ff(C-h)36 b(f)-294 2159
-y Fh(mo)r(dussp)r(ezi\014sc)n(he)25 b(Informationen)462
-b Ff(C-h)36 b(m)-294 2333 y Fg(F)-10 b(ehlerb)s(ehandlung)-294
-2485 y Fe(Abbrec)n(hen)25 b Fh(eines)f(V)-6 b(organgs)577
-b Ff(C-g)-294 2564 y Fe(Wiederherstellung)23 b Fh(v)n(on)h(Dateien)203
-b Ff(M-x)36 b(recover-session)-285 2630 y Fh(\177)-294
-2644 y(Anderungen)25 b Fe(r)140 2647 y(\177)138 2644
-y(uc)n(kg)300 2647 y(\177)301 2644 y(angig)d Fh(mac)n(hen)216
-b Ff(C-x)37 b(u,)e(C-_)i Fh(o)r(der)e Ff(C-/)-294 2724
-y Fh(Pu\013er)24 b(in)f(Ursprungszustand)i(bringen)195
-b Ff(M-x)36 b(revert-buffer)-294 2803 y Fh(Bildsc)n(hirmanzeige)24
-b(in)f(Ordn)n(ung)h(bringen)253 b Ff(C-l)-294 2978 y
-Fg(Inkremen)m(telle)36 b(Suc)m(he)-294 3129 y Fh(Suc)n(he)25
-b(v)n(orw)57 3132 y(\177)57 3129 y(arts)971 b Ff(C-s)-294
-3209 y Fh(Suc)n(he)25 b(r)-62 3212 y(\177)-64 3209 y(uc)n(kw)92
-3212 y(\177)92 3209 y(arts)936 b Ff(C-r)-294 3289 y Fh(Suc)n(he)25
-b(mit)e(regul)190 3292 y(\177)190 3289 y(aren)h(Ausdr)536
-3292 y(\177)534 3289 y(uc)n(k)n(en)439 b Ff(C-M-s)-294
-3368 y Fh(R)-240 3371 y(\177)-242 3368 y(uc)n(kw)-86
-3371 y(\177)-86 3368 y(artssuc)n(he)25 b(mit)f(regul)506
-3371 y(\177)506 3368 y(aren)g(Ausdr)852 3371 y(\177)850
-3368 y(uc)n(k)n(en)123 b Ff(C-M-r)-294 3477 y Fh(fr)-242
-3480 y(\177)-244 3477 y(uheren)23 b(Suc)n(hausdruc)n(k)j(ausw)585
-3480 y(\177)585 3477 y(ahlen)397 b Ff(M-p)-294 3556 y
-Fh(sp)-227 3559 y(\177)-227 3556 y(ateren)25 b(Suc)n(hausdruc)n(k)g
-(ausw)587 3559 y(\177)587 3556 y(ahlen)395 b Ff(M-n)-294
-3636 y Fh(inkremen)n(telle)24 b(Suc)n(he)h(b)r(eenden)552
-b Ff(RET)-294 3716 y Fh(ein)24 b(Suc)n(hzeic)n(hen)i(zur)312
-3719 y(\177)310 3716 y(uc)n(kgehen)556 b Ff(DEL)-294
-3795 y Fh(Suc)n(he)25 b(abbrec)n(hen)928 b Ff(C-g)-294
-3904 y Fh(Wiederholtes)27 b(Dr)218 3907 y(\177)216 3904
-y(uc)n(k)n(en)f(v)n(on)g Ff(C-s)g Fh(o)r(der)g Ff(C-r)g
-Fh(suc)n(h)n(t)g(w)n(eitere)g(T)-6 b(re\013er.)-294 3983
-y(W)g(enn)18 b(Emacs)f(suc)n(h)n(t,)h(un)n(terbric)n(h)n(t)g
-Ff(C-g)g Fh(n)n(ur)e(die)h(jew)n(eils)g(letzte)h(Suc)n(he.)-341
-4254 y Fd(c)-357 4256 y Fc(\015)i Fd(2007)j(F)-5 b(ree)21
-b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)g(Bedingungen)h(auf)g
-(der)f(R)1331 4259 y(\177)1329 4256 y(uc)n(kseite.)h(v2.3)1902
--421 y Fg(Cursor-Bew)m(egung)1902 -270 y Fe(T)-7 b(extteile)2244
--267 y(\177)2242 -270 y(ub)r(erspringen)540 b(r)3283
--267 y(\177)3281 -270 y(uc)n(kw.)70 b(v)n(orw.)1902 -190
-y Fh(Zeic)n(hen)1113 b Ff(C-b)203 b(C-f)1902 -110 y Fh(W)-6
-b(ort)1189 b Ff(M-b)203 b(M-f)1902 -31 y Fh(Zeile)1200
-b Ff(C-p)203 b(C-n)1902 49 y Fh(zum)24 b(Zeilenanfang)h(\(o)r(der)f
-(-ende\))g(springen)118 b Ff(C-a)203 b(C-e)1902 129 y
-Fh(Satz)1213 b Ff(M-a)203 b(M-e)1902 208 y Fh(P)n(aragraph)1025
-b Ff(M-{)203 b(M-})1902 288 y Fh(Seite)1197 b Ff(C-x)37
-b([)131 b(C-x)36 b(])1902 368 y Fh(Lisp-s-expression)822
-b Ff(C-M-b)133 b(C-M-f)1902 448 y Fh(F)-6 b(unktion)1069
-b Ff(C-M-a)133 b(C-M-e)1902 527 y Fh(zum)24 b(Pu\013eranfang)g(\(o)r
-(der)h(-ende\))f(springen)115 b Ff(M-<)203 b(M->)1902
-636 y Fh(eine)24 b(Bildsc)n(hirmseite)f(herun)n(ter)h(scrollen)287
-b Ff(C-v)1902 715 y Fh(eine)24 b(Bildsc)n(hirmseite)f(ho)r(c)n(h)h
-(scrollen)403 b Ff(M-v)1902 795 y Fh(nac)n(h)25 b(links)e(scrollen)874
-b Ff(C-x)36 b(<)1902 875 y Fh(nac)n(h)25 b(rec)n(h)n(ts)f(scrollen)837
-b Ff(C-x)36 b(>)1902 954 y Fh(Cursor-Zeile)22 b(in)i(die)f(Bildsc)n
-(hirmmitte)g(scrollen)93 b Ff(C-u)36 b(C-l)1902 1120
-y Fg(L)1971 1125 y(\177)1971 1120 y(osc)m(hen)h(und)g(Aussc)m(hneiden)
-1902 1271 y Fe(T)-7 b(extteile)26 b(aussc)n(hneiden)465
-b(r)3203 1274 y(\177)3201 1271 y(uc)n(kw.)150 b(v)n(orw.)1902
-1351 y Fh(Zeic)n(hen)25 b(\(l)2206 1354 y(\177)2206 1351
-y(osc)n(hen,)f(nic)n(h)n(t)h(aussc)n(hneiden\))115 b
-Ff(DEL)283 b(C-d)1902 1430 y Fh(W)-6 b(ort)1109 b Ff(M-DEL)213
-b(M-d)1902 1510 y Fh(Zeile)24 b(\(bis)f(zum)h(Ende\))622
-b Ff(M-0)36 b(C-k)142 b(C-k)1902 1590 y Fh(Satz)1133
-b Ff(C-x)36 b(DEL)142 b(M-k)1902 1670 y Fh(Lisp-s-expression)742
-b Ff(M--)36 b(C-M-k)72 b(C-M-k)1902 1778 y Fe(Bereic)n(h)23
-b Fh(aussc)n(hneiden)752 b Ff(C-w)1902 1858 y Fh(Bereic)n(h)24
-b(in)f(die)h(Ablage)g(k)n(opieren)497 b Ff(M-w)1902 1937
-y Fh(bis)23 b(zum)h Fb(Zeichen)f Fh(aussc)n(hneiden)516
-b Ff(M-z)36 b Fb(Zeichen)1902 2017 y Fh(zuletzt)25 b(ausgesc)n
-(hnittenen)i(T)-6 b(ext)25 b(einf)2956 2020 y(\177)2954
-2017 y(ugen)244 b Ff(C-y)1902 2097 y Fh(v)n(orher)24
-b(ausgesc)n(hnittenen)i(T)-6 b(ext)25 b(einf)2944 2100
-y(\177)2942 2097 y(ugen)256 b Ff(M-y)1902 2273 y Fg(Markieren)1902
-2424 y Fh(Mark)n(e)24 b(setzen)1035 b Ff(C-@)36 b Fh(o)r(der)24
-b Ff(C-SPC)1902 2504 y Fh(Cursor)f(und)h(Mark)n(e)g(austausc)n(hen)480
-b Ff(C-x)36 b(C-x)1902 2584 y Fh(Mark)n(e)24 b Fb(A)n(r)l(gument)30
-b Fe(W)-7 b(orte)23 b Fh(en)n(tfern)n(t)h(setzen)194
-b Ff(M-@)1902 2663 y Fe(P)n(aragraph)22 b Fh(markieren)738
-b Ff(M-h)1902 2743 y Fe(Seite)24 b Fh(markieren)934 b
-Ff(C-x)36 b(C-p)1902 2823 y Fe(Lisp-s-expression)24 b
-Fh(markieren)504 b Ff(C-M-@)1902 2902 y Fe(F)-7 b(unktion)23
-b Fh(markieren)791 b Ff(C-M-h)1902 2982 y Fh(den)24 b(ganzen)i
-Fe(Pu\013er)e Fh(markieren)521 b Ff(C-x)36 b(h)1902 3157
-y Fg(In)m(teraktiv)m(es)h(Ersetzen)1902 3308 y Fh(Zeic)n(henk)n(ette)27
-b(in)n(teraktiv)d(ersetzen)461 b Ff(M-\045)1902 3388
-y Fh(mit)23 b(regul)2184 3391 y(\177)2184 3388 y(aren)h(Ausdr)2530
-3391 y(\177)2528 3388 y(uc)n(k)n(en)274 b Ff(M-x)36 b
-(query-replace-regexp)1902 3496 y Fh(M)1967 3499 y(\177)1967
-3496 y(oglic)n(he)24 b(An)n(t)n(w)n(orten)h(in)e(diesem)h(Mo)r(dus:)
-1902 3604 y(dies)g Fe(ersetzen)g Fh(und)g(zum)g(n)2691
-3607 y(\177)2691 3604 y(ac)n(hsten)h(gehen)223 b Ff(SPC)1902
-3684 y Fh(dies)24 b(ersetzen)g(und)h(nic)n(h)n(t)f(w)n(eitergehen)349
-b Ff(,)1902 3764 y Fh(dies)2046 3767 y Fe(\177)2044 3764
-y(ub)r(erspringen)p Fh(,)23 b(zum)h(n)2744 3767 y(\177)2744
-3764 y(ac)n(hsten)h(gehen)170 b Ff(DEL)1902 3843 y Fh(alle)23
-b(v)n(erbleib)r(enden)i(T)-6 b(re\013er)24 b(ersetzen)388
-b Ff(!)1902 3923 y Fh(zum)24 b(v)n(orherigen)g(T)-6 b(re\013er)24
-b Fe(zur)2745 3926 y(\177)2743 3923 y(uc)n(kgehen)272
-b Ff(^)1902 4003 y Fh(in)n(teraktiv)n(es)25 b(Ersetzen)f
-Fe(b)r(eenden)479 b Ff(RET)1902 4082 y Fh(rekursiv)n(es)23
-b(Editieren)g(starten)i(\()p Ff(C-M-c)g Fh(b)r(eendet\))73
-b Ff(C-r)4169 -421 y Fg(Mehrere)36 b(F)-10 b(enster)4169
--299 y Fh(W)k(enn)27 b(zw)n(ei)f(Befehle)h(angezeigt)h(w)n(erden,)f
-(ist)f(der)g(zw)n(eite)h(ein)5912 -296 y(\177)5912 -299
-y(ahnli-)4169 -219 y(c)n(her)d(f)4344 -216 y(\177)4342
--219 y(ur)e(einen)j(Rahmen)f(statt)h(eines)f(F)-6 b(ensters.)4169
--118 y(alle)23 b(anderen)i(F)-6 b(enster)24 b(sc)n(hlie\031en)298
-b Ff(C-x)36 b(1)212 b(C-x)36 b(5)g(1)4169 -39 y Fh(F)-6
-b(enster)24 b(v)n(ertik)l(al)g(teilen)545 b Ff(C-x)36
-b(2)212 b(C-x)36 b(5)g(2)4169 41 y Fh(dieses)23 b(F)-6
-b(enster)25 b(sc)n(hlie\031en)493 b Ff(C-x)36 b(0)212
-b(C-x)36 b(5)g(0)4169 142 y Fh(F)-6 b(enster)24 b(horizon)n(tal)g
-(teilen)693 b Ff(C-x)36 b(3)4169 243 y Fh(das)23 b(andere)i(F)-6
-b(enster)24 b(scrollen)607 b Ff(C-M-v)4169 344 y Fh(in)23
-b(anderes)h(F)-6 b(enster)25 b(w)n(ec)n(hseln)362 b Ff(C-x)36
-b(o)212 b(C-x)36 b(5)g(o)4169 424 y Fh(Pu\013er)23 b(in)h(and.)f(F)-6
-b(enster)25 b(ausw)5020 427 y(\177)5020 424 y(ahlen)199
-b Ff(C-x)36 b(4)g(b)141 b(C-x)36 b(5)g(b)4169 504 y Fh(Pu\013er)23
-b(in)h(anderem)g(F)-6 b(enster)24 b(anzeigen)126 b Ff(C-x)36
-b(4)g(C-o)71 b(C-x)36 b(5)g(C-o)4169 583 y Fh(Datei)24
-b(in)f(anderem)h(F)-6 b(enster)4977 586 y(\177)4977 583
-y(o\013nen)221 b Ff(C-x)36 b(4)g(f)141 b(C-x)36 b(5)g(f)4169
-663 y Fh(Datei)24 b(in)f(anderem)h(F)-6 b(enster)25 b(anzeigen)145
-b Ff(C-x)36 b(4)g(r)141 b(C-x)36 b(5)g(r)4169 743 y Fh(Dired)23
-b(in)g(anderem)h(F)-6 b(enster)25 b(starten)187 b Ff(C-x)36
-b(4)g(d)141 b(C-x)36 b(5)g(d)4169 822 y Fh(T)-6 b(ag)24
-b(in)f(anderem)h(F)-6 b(enster)25 b(\014nden)271 b Ff(C-x)36
-b(4)g(.)141 b(C-x)36 b(5)g(.)4169 923 y Fh(F)-6 b(enster)24
-b(v)n(ergr)4574 926 y(\177)4574 923 y(o\031ern)867 b
-Ff(C-x)36 b(^)4169 1003 y Fh(F)-6 b(enster)24 b(v)n(erengen)923
-b Ff(C-x)36 b({)4169 1083 y Fh(F)-6 b(enster)24 b(v)n(erbreitern)855
-b Ff(C-x)36 b(})4169 1204 y Fg(F)-10 b(ormatierung)4169
-1326 y Fe(Zeile)23 b Fh(\(mo)r(dusabh)4704 1329 y(\177)4704
-1326 y(angig\))j(einr)5041 1329 y(\177)5039 1326 y(uc)n(k)n(en)397
-b Ff(TAB)4169 1406 y Fe(Bereic)n(h)23 b Fh(\(mo)r(dusabh)4802
-1409 y(\177)4802 1406 y(angig\))j(einr)5139 1409 y(\177)5137
-1406 y(uc)n(k)n(en)299 b Ff(C-M-\\)4169 1486 y Fe(Lisp-s-expression)23
-b Fh(\(mo)r(dusabh.\))i(einr)5330 1489 y(\177)5328 1486
-y(uc)n(k)n(en)108 b Ff(C-M-q)4169 1566 y Fh(Bereic)n(h)23
-b Fb(A)n(r)l(gument)31 b Fh(Spalten)24 b(einr)5128 1569
-y(\177)5126 1566 y(uc)n(k)n(en)310 b Ff(C-x)36 b(TAB)4169
-1667 y Fh(Zeilen)n(um)n(bruc)n(h)24 b(nac)n(h)h(Cursor)d(einf)5157
-1670 y(\177)5155 1667 y(ugen)310 b Ff(C-o)4169 1746 y
-Fh(Zeilenrest)24 b(v)n(ertik)l(al)f(nac)n(h)i(un)n(ten)g(v)n(ersc)n
-(hieb)r(en)149 b Ff(C-M-o)4169 1826 y Fh(Leerzeilen)24
-b(um)f(Cursor-P)n(osition)g(l)5146 1829 y(\177)5146 1826
-y(osc)n(hen)262 b Ff(C-x)36 b(C-o)4169 1906 y Fh(Zeile)23
-b(mit)h(v)n(origer)f(v)n(erbinden)h(\(Arg.)g(n)5253 1909
-y(\177)5253 1906 y(ac)n(hste\))140 b Ff(M-^)4169 1985
-y Fh(alle)23 b(Leerzeic)n(hen)i(um)f(Cursor-P)n(osition)e(l)5324
-1988 y(\177)5324 1985 y(osc)n(hen)84 b Ff(M-\\)4169 2065
-y Fh(genau)24 b(ein)g(Leerzeic)n(hen)h(an)f(Cursor-P)n(osition)163
-b Ff(M-SPC)4169 2166 y Fh(P)n(aragraph)24 b(au\013)4630
-2169 y(\177)4628 2166 y(ullen)832 b Ff(M-q)4169 2246
-y Fh(Spalte)24 b(f)4408 2249 y(\177)4406 2246 y(ur)f(Um)n(bruc)n(h)h
-(setzen)618 b Ff(C-x)36 b(f)4169 2326 y Fh(Pr)4245 2329
-y(\177)4245 2326 y(a\014x)23 b(f)4403 2329 y(\177)4401
-2326 y(ur)g(jede)h(Zeile)g(setzen)615 b Ff(C-x)36 b(.)4169
-2427 y Fh(F)-6 b(ace)24 b(setzen)1092 b Ff(M-o)4169 2548
-y Fg(Gro\031-)39 b(und)e(Kleinsc)m(hreibung)4169 2670
-y Fh(W)-6 b(ort)24 b(in)f(Gro\031buc)n(hstab)r(en)678
-b Ff(M-u)4169 2750 y Fh(W)-6 b(ort)24 b(in)f(Klein)n(buc)n(hstab)r(en)
-668 b Ff(M-l)4169 2830 y Fh(W)-6 b(ort)24 b(mit)f(gro\031em)h
-(Anfangsbuc)n(hstab)r(en)286 b Ff(M-c)4169 2931 y Fh(Bereic)n(h)23
-b(in)h(Gro\031buc)n(hstab)r(en)606 b Ff(C-x)36 b(C-u)4169
-3010 y Fh(Bereic)n(h)23 b(in)h(Klein)n(buc)n(hstab)r(en)596
-b Ff(C-x)36 b(C-l)4169 3132 y Fg(Der)h(Minipu\013er)4169
-3254 y Fh(Die)23 b(folgenden)i(T)-6 b(astenk)n(om)n(binationen)26
-b(gelten)f(im)e(Minipu\013er:)4169 3355 y(so)g(w)n(eit)h(wie)g(m)4591
-3358 y(\177)4591 3355 y(oglic)n(h)f(erg)4886 3358 y(\177)4886
-3355 y(anzen)548 b Ff(TAB)4169 3435 y Fh(ein)23 b(W)-6
-b(ort)25 b(erg)4557 3438 y(\177)4557 3435 y(anzen)877
-b Ff(SPC)4169 3514 y Fh(erg)4263 3517 y(\177)4263 3514
-y(anzen)25 b(und)f(ausf)4730 3517 y(\177)4728 3514 y(uhren)705
-b Ff(RET)4169 3594 y Fh(m)4228 3597 y(\177)4228 3594
-y(oglic)n(he)24 b(Erg)4572 3597 y(\177)4572 3594 y(anzungen)h(zeigen)
-537 b Ff(?)4169 3674 y Fh(letzte)25 b(Eingab)r(e)f(zur)4734
-3677 y(\177)4732 3674 y(uc)n(kholen)608 b Ff(M-p)4169
-3754 y Fh(sp)4236 3757 y(\177)4236 3754 y(atere)24 b(Eingab)r(e)h(zur)
-4786 3757 y(\177)4784 3754 y(uc)n(kholen)556 b Ff(M-n)4169
-3833 y Fh(reg.)23 b(Ausd.)g(r)4538 3836 y(\177)4536 3833
-y(uc)n(kw)4692 3836 y(\177)4692 3833 y(arts)h(in)f(History)h(suc)n(hen)
-236 b Ff(M-r)4169 3913 y Fh(reg.)23 b(Ausd.)g(v)n(orw)4657
-3916 y(\177)4657 3913 y(arts)h(in)f(History)g(suc)n(hen)272
-b Ff(M-s)4169 3993 y Fh(Befehl)23 b(abbrec)n(hen)914
-b Ff(C-g)4169 4094 y Fh(Dr)4253 4097 y(\177)4251 4094
-y(uc)n(k)n(en)21 b(Sie)f Ff(C-x)36 b(ESC)g(ESC)p Fh(,)21
-b(um)f(den)h(letzten)h(Befehl)e(zu)h(b)r(earb)r(eiten)4169
-4173 y(und)h(zu)g(wiederholen,)g(der)g(im)f(Minipu\013er)g(ausgef)5561
-4176 y(\177)5559 4173 y(uhrt)i(wurde.)e(Dr)6028 4176
-y(\177)6026 4173 y(u-)4169 4253 y(c)n(k)n(en)j(Sie)g
-Ff(F10)p Fh(,)g(um)g(die)f(Men)4962 4256 y(\177)4960
-4253 y(uzeile)h(im)f(Minipu\013er)g(zu)i(aktivieren.)p
-eop end
-%%Page: 2 2
-TeXDict begin @landscape 2 1 bop -242 -421 a Fi(Referenzk)-8
-b(arte)46 b(zu)g(GNU)f(Emacs)-294 -227 y Fg(Pu\013er)-294
--76 y Fh(anderen)25 b(Pu\013er)e(ausw)336 -73 y(\177)336
--76 y(ahlen)646 b Ff(C-x)36 b(b)-294 4 y Fh(Liste)24
-b(aller)f(Pu\013er)g(anzeigen)638 b Ff(C-x)36 b(C-b)-294
-84 y Fh(einen)24 b(Pu\013er)g(sc)n(hlie\031en)773 b Ff(C-x)36
-b(k)-294 249 y Fg(V)-10 b(ertausc)m(hen)-294 400 y Fe(Zeic)n(hen)24
-b Fh(v)n(ertausc)n(hen)784 b Ff(C-t)-294 480 y Fe(W)-7
-b(orte)23 b Fh(v)n(ertausc)n(hen)835 b Ff(M-t)-294 560
-y Fe(Zeilen)23 b Fh(v)n(ertausc)n(hen)841 b Ff(C-x)36
-b(C-t)-294 639 y Fe(Lisp-s-expressions)24 b Fh(v)n(ertausc)n(hen)419
-b Ff(C-M-t)-294 814 y Fg(Rec)m(h)m(tsc)m(hreibpr)466
-819 y(\177)463 814 y(ufung)-294 965 y Fh(aktuelles)24
-b(W)-6 b(ort)181 968 y(\177)179 965 y(ub)r(erpr)387 968
-y(\177)385 965 y(ufen)630 b Ff(M-$)-294 1045 y Fh(alle)23
-b(W)-93 1048 y(\177)-93 1045 y(orter)h(im)f(Bereic)n(h)436
-1048 y(\177)434 1045 y(ub)r(erpr)642 1048 y(\177)640
-1045 y(ufen)234 b Ff(M-x)36 b(ispell-region)-294 1125
-y Fh(gesam)n(ten)25 b(Pu\013er)227 1128 y(\177)225 1125
-y(ub)r(erpr)433 1128 y(\177)431 1125 y(ufen)443 b Ff(M-x)36
-b(ispell-buffer)-294 1300 y Fg(T)-10 b(ags)-294 1451
-y Fh(T)k(ag)24 b(\014nden)h(\(De\014nition\))731 b Ff(M-.)-294
-1531 y Fh(n)-255 1534 y(\177)-255 1531 y(ac)n(hstes)25
-b(V)-6 b(ork)n(ommen)24 b(v)n(on)g(T)-6 b(ag)25 b(\014nden)307
-b Ff(C-u)36 b(M-.)-294 1611 y Fh(neue)25 b(T)-6 b(agsdatei)25
-b(angeb)r(en)478 b Ff(M-x)36 b(visit-tags-table)-294
-1719 y Fh(regul)-141 1722 y(\177)-141 1719 y(aren)24
-b(Ausdruc)n(k)g(in)f(Dateien)i(suc)n(hen)124 b Ff(M-x)36
-b(tags-search)-294 1799 y Fh(in)n(terakt.)24 b(Ersetzen)h(in)e(allen)h
-(Dateien)82 b Ff(M-x)36 b(tags-query-replace)-294 1878
-y Fh(letztes)25 b(Suc)n(hen)g(o)r(der)f(Ersetzen)g(fortsetzen)234
-b Ff(M-,)-294 2044 y Fg(Shells)-294 2195 y Fh(Shellb)r(efehl)24
-b(ausf)189 2198 y(\177)187 2195 y(uhren)783 b Ff(M-!)-294
-2275 y Fh(Shellb)r(efehl)24 b(f)87 2278 y(\177)85 2275
-y(ur)f(Bereic)n(h)g(ausf)552 2278 y(\177)550 2275 y(uhren)420
-b Ff(M-|)-294 2355 y Fh(Bereic)n(h)24 b(durc)n(h)g(Shellb)r(efehl)g
-(\014ltern)449 b Ff(C-u)36 b(M-|)-294 2434 y Fh(eine)24
-b(Shell)g(im)e(F)-6 b(enster)25 b Ff(*shell*)g Fh(starten)146
-b Ff(M-x)36 b(shell)-294 2600 y Fg(Rec)m(h)m(tec)m(k)m(e)-294
-2751 y Fh(Rec)n(h)n(tec)n(k)26 b(in)d(Register)h(k)n(opieren)525
-b Ff(C-x)36 b(r)g(r)-294 2831 y Fh(Rec)n(h)n(tec)n(k)26
-b(aussc)n(hneiden)744 b Ff(C-x)36 b(r)g(k)-294 2910 y
-Fh(Rec)n(h)n(tec)n(k)26 b(einf)119 2913 y(\177)117 2910
-y(ugen)885 b Ff(C-x)36 b(r)g(y)-294 2990 y Fh(Rec)n(h)n(tec)n(k)5
-2993 y(\177)5 2990 y(o\013nen,)24 b(T)-6 b(ext)25 b(nac)n(h)g(rec)n(h)n
-(ts)400 b Ff(C-x)36 b(r)g(o)-294 3070 y Fh(Rec)n(h)n(tec)n(k)26
-b(mit)d(Leerzeic)n(hen)516 3073 y(\177)514 3070 y(ub)r(ersc)n(hreib)r
-(en)207 b Ff(C-x)36 b(r)g(c)-294 3149 y Fh(Pr)-218 3152
-y(\177)-218 3149 y(a\014x)24 b(v)n(or)f(jede)h(Zeile)g(setzen)605
-b Ff(C-x)36 b(r)g(t)-294 3324 y Fg(Abk)-80 3329 y(\177)-83
-3324 y(urzungen)-294 3475 y Fh(globale)24 b(Abk)76 3478
-y(\177)74 3475 y(urzung)h(hinzuf)502 3478 y(\177)500
-3475 y(ugen)502 b Ff(C-x)36 b(a)g(g)-294 3555 y Fh(mo)r(dusabh)21
-3558 y(\177)21 3555 y(angige)26 b(Abk)373 3558 y(\177)371
-3555 y(urzung)e(hinzuf)798 3558 y(\177)796 3555 y(ugen)206
-b Ff(C-x)36 b(a)g(l)-294 3635 y Fh(globalen)24 b(Ersetzungstext)i(f)490
-3638 y(\177)488 3635 y(ur)d(Abk.)h(de\014nieren)98 b
-Ff(C-x)36 b(a)g(i)f(g)-294 3714 y Fh(mo)r(dusabh.)24
-b(Ersetzungstext)i(f)571 3717 y(\177)569 3714 y(ur)d(Abk.)g(def.)203
-b Ff(C-x)36 b(a)g(i)f(l)-294 3794 y Fh(Abk)-163 3797
-y(\177)-165 3794 y(urzung)25 b(explizit)f(aussc)n(hreib)r(en)438
-b Ff(C-x)36 b(a)g(e)-294 3902 y Fh(letztes)25 b(W)-6
-b(ort)24 b(dynamisc)n(h)h(aussc)n(hreib)r(en)302 b Ff(M-/)1902
--421 y Fg(Regul)2193 -416 y(\177)2194 -421 y(are)37 b(Ausdr)2697
--416 y(\177)2694 -421 y(uc)m(k)m(e)1902 -270 y Fh(jedes)24
-b(einzelne)g(Zeic)n(hen)h(au\031er)f(Zeilen)n(um)n(bruc)n(h)98
-b Ff(.)36 b Fh(\(Punkt\))1902 -190 y(n)n(ull)23 b(o)r(der)h(mehr)f
-(Wiederholungen)464 b Ff(*)1902 -110 y Fh(eine)24 b(o)r(der)g(mehr)f
-(Wiederholungen)458 b Ff(+)1902 -31 y Fh(n)n(ull)23 b(o)r(der)h(eine)g
-(Wiederholung)569 b Ff(?)1902 49 y Fh(Sp)r(ezialzeic)n(hen)26
-b Fb(c)g Fh(maskieren)610 b Ff(\\)p Fb(c)1902 129 y Fh(Alternativ)n(e)
-24 b(\()2299 167 y(")2332 129 y(o)r(der)-5 b(\\)5 b(\))813
-b Ff(\\|)1902 208 y Fh(Grupp)r(e)1207 b Ff(\\\()36 b
-Fa(:)11 b(:)h(:)34 b Ff(\\\))1902 288 y Fh(gleic)n(her)24
-b(T)-6 b(ext)25 b(wie)e Fb(n)5 b Fh(te)25 b(Grupp)r(e)532
-b Ff(\\)p Fb(n)1902 368 y Fh(Anfang)24 b(o)r(der)g(Ende)g(eines)g(W)-6
-b(ortes)465 b Ff(\\b)1902 448 y Fh(w)n(eder)24 b(Anfang)g(no)r(c)n(h)g
-(Ende)h(eines)f(W)-6 b(ortes)253 b Ff(\\B)1902 556 y
-Fe(Einheit)481 b(passt)27 b(am)f(Anf.)94 b(passt)26 b(am)h(Ende)1902
-636 y Fh(Zeile)594 b Ff(^)555 b($)1902 715 y Fh(W)-6
-b(ort)583 b Ff(\\<)520 b(\\>)1902 795 y Fh(Pu\013er)552
-b Ff(\\`)520 b(\\')1902 875 y Fe(Zeic)n(henklasse)261
-b(passt)27 b(auf)g(diese)71 b(passt)26 b(auf)h(and.)1902
-954 y Fh(Explizite)d(Menge)241 b Ff([)36 b Fa(:)11 b(:)g(:)35
-b Ff(])367 b([^)35 b Fa(:)12 b(:)f(:)35 b Ff(])1902 1034
-y Fh(W)-6 b(ortsyn)n(tax-Zeic)n(hen)126 b Ff(\\w)520
-b(\\W)1902 1114 y Fh(Zeic)n(hen)25 b(mit)e(Syn)n(tax)i
-Fb(c)83 b Ff(\\s)p Fb(c)487 b Ff(\\S)p Fb(c)1902 1288
-y Fg(In)m(ternationale)35 b(Zeic)m(hens)3073 1293 y(\177)3074
-1288 y(atze)1902 1439 y Fh(Hauptsprac)n(he)25 b(einstellen)707
-b Ff(C-x)36 b(RET)g(l)1902 1519 y Fh(Alle)23 b(Eingab)r(emetho)r(den)j
-(anzeigen)159 b Ff(M-x)36 b(list-input-methods)1902 1599
-y Fh(Eingab)r(emetho)r(de)26 b(in)d(o)r(der)h(au\031er)g(Kraft)g
-(setzen)91 b Ff(C-\\)1902 1679 y Fh(Ko)r(dierung)24 b(f)2273
-1682 y(\177)2271 1679 y(ur)f(n)2400 1682 y(\177)2400
-1679 y(ac)n(hsten)i(Befehl)f(setzen)285 b Ff(C-x)36 b(RET)g(c)1902
-1758 y Fh(Alle)23 b(Ko)r(dierungen)h(anzeigen)283 b Ff(M-x)37
-b(list-coding-systems)1902 1838 y Fh(b)r(ev)n(orzugte)26
-b(Ko)r(dierung)e(ausw)2761 1841 y(\177)2761 1838 y(ahlen)50
-b Ff(M-x)36 b(prefer-coding-system)1902 2014 y Fg(Info)1902
-2166 y Fh(Info-Betrac)n(h)n(ter)25 b(starten)732 b Ff(C-h)36
-b(i)1902 2245 y Fh(F)-6 b(unktion)25 b(o)r(der)f(V)-6
-b(ariable)23 b(in)g(Info)h(\014nden)288 b Ff(C-h)36 b(S)1902
-2354 y Fh(Bew)n(egung)25 b(innerhalb)f(eines)g(Knotens:)1973
-2462 y(v)n(orw)2122 2465 y(\177)2122 2462 y(arts)f(scrollen)847
-b Ff(SPC)1973 2542 y Fh(r)2003 2545 y(\177)2001 2542
-y(uc)n(kw)2157 2545 y(\177)2157 2542 y(arts)23 b(scrollen)812
-b Ff(DEL)1973 2621 y Fh(zum)23 b(Anfang)h(eines)g(Knotens)543
-b Ff(.)36 b Fh(\(Punkt\))1902 2730 y(Bew)n(egung)25 b(zwisc)n(hen)g
-(Knoten:)1973 2838 y Fe(n)2017 2841 y(\177)2018 2838
-y(ac)n(hster)e Fh(Knoten)821 b Ff(n)1973 2918 y Fe(v)n(orheriger)21
-b Fh(Knoten)755 b Ff(p)1973 2997 y Fh(nac)n(h)24 b Fe(ob)r(en)1033
-b Ff(u)1973 3077 y Fh(Men)2110 3080 y(\177)2108 3077
-y(uein)n(trag)2386 3080 y(\177)2384 3077 y(ub)r(er)24
-b(Namen)g(ausw)2941 3080 y(\177)2941 3077 y(ahlen)237
-b Ff(m)1973 3157 y Fb(n)5 b Fh(ten)25 b(Men)2277 3160
-y(\177)2275 3157 y(uein)n(trag)f(ausw)2704 3160 y(\177)2704
-3157 y(ahlen)h(\(1{9\))290 b Fb(n)1973 3236 y Fh(Querv)n(erw)n(eis)23
-b(folgen)h(\(zur)2704 3239 y(\177)2702 3236 y(uc)n(k)h(mit)e
-Ff(l)p Fh(\))319 b Ff(f)1973 3316 y Fh(zur)2073 3319
-y(\177)2071 3316 y(uc)n(k)24 b(zum)g(letzten)h(gesehenen)h(Knoten)202
-b Ff(l)1973 3396 y Fh(zur)2073 3399 y(\177)2071 3396
-y(uc)n(k)24 b(zum)g(V)-6 b(erzeic)n(hnisknoten)438 b
-Ff(d)1973 3475 y Fh(zum)23 b(Anfangsknoten)j(der)e(aktuellen)g(Datei)
-140 b Ff(t)1973 3555 y Fh(b)r(eliebigen)23 b(Knoten)2554
-3558 y(\177)2552 3555 y(ub)r(er)g(Namen)f(ausw)3106 3558
-y(\177)3106 3555 y(ahlen)72 b Ff(g)1902 3663 y Fh(Sonstiges:)1973
-3772 y Fe(Einf)2121 3775 y(\177)2119 3772 y(uhrung)23
-b Fh(in)h(Info)g(starten)502 b Ff(h)1973 3851 y Fh(Begri\013)23
-b(in)g(den)i(Indizes)f(suc)n(hen)483 b Ff(i)1973 3931
-y Fh(nac)n(h)24 b(regul)2292 3934 y(\177)2292 3931 y(aren)g(Ausdr)2638
-3934 y(\177)2636 3931 y(uc)n(k)n(en)h(suc)n(hen)303 b
-Ff(s)1973 4011 y Fh(Info)24 b Fe(v)n(erlassen)903 b Ff(q)4098
--421 y Fg(Register)4098 -270 y Fh(Region)24 b(in)g(Register)f(sp)r(eic)
-n(hern)560 b Ff(C-x)36 b(r)g(s)4098 -190 y Fh(Registerinhalt)24
-b(in)g(Pu\013er)f(einf)4961 -187 y(\177)4959 -190 y(ugen)435
-b Ff(C-x)36 b(r)g(i)4098 -110 y Fh(Cursor-P)n(osition)23
-b(in)g(Register)h(sp)r(eic)n(hern)290 b Ff(C-x)36 b(r)g(SPC)4098
--31 y Fh(zu)24 b(abgesp)r(eic)n(herter)i(P)n(osition)d(springen)315
-b Ff(C-x)36 b(r)g(j)4098 146 y Fg(T)-10 b(astaturmakros)4098
-297 y Fh(Makro)r(de\014nition)25 b Fe(starten)672 b Ff(C-x)36
-b(\()4098 377 y Fh(Makro)r(de\014nition)25 b Fe(b)r(eenden)631
-b Ff(C-x)36 b(\))4098 456 y Fh(zuletzt)25 b(de\014niertes)g(Makro)e
-Fe(ausf)5034 459 y(\177)5032 456 y(uhren)300 b Ff(C-x)36
-b(e)4098 536 y Fh(an)24 b(letztes)h(Makro)e(anh)4752
-539 y(\177)4752 536 y(angen)607 b Ff(C-u)36 b(C-x)g(\()4098
-616 y Fh(letztes)25 b(Makro)e(b)r(enennen)375 b Ff(M-x)37
-b(name-last-kbd-macro)4098 695 y Fh(Lisp)r(co)r(de)24
-b(f)4417 698 y(\177)4415 695 y(ur)f(Makro)h(in)f(Pu\013er)h(einf)5136
-698 y(\177)5134 695 y(ugen)34 b Ff(M-x)i(insert-kbd-macro)4098
-870 y Fg(Befehle)h(f)4544 875 y(\177)4541 870 y(ur)h(Emacs-Lisp)4098
-1021 y Fe(Lisp-s-expression)24 b Fh(v)n(or)f(Cursor)g(ausw)n(erten)152
-b Ff(C-x)36 b(C-e)4098 1101 y Fh(aktuelle)25 b Fe(De\014nition)e
-Fh(ausw)n(erten)492 b Ff(C-M-x)4098 1181 y Fe(Bereic)n(h)23
-b Fh(ausw)n(erten)701 b Ff(M-x)36 b(eval-region)4098
-1260 y Fh(Lisp-Ausdruc)n(k)23 b(im)g(Minipu\013er)g(ausw)n(erten)216
-b Ff(M-:)4098 1340 y Fh(Datei)24 b(aus)g(Standardv)n(erzeic)n(hnis)i
-(laden)180 b Ff(M-x)36 b(load-library)4098 1516 y Fg(Einfac)m(he)h
-(Anpassungen)4098 1667 y Fh(V)-6 b(ariablen)24 b(und)g(F)-6
-b(aces)24 b(anpassen)377 b Ff(M-x)36 b(customize)4098
-1776 y Fh(T)-6 b(astenk)n(om)n(binationen)27 b(de\014nieren)d
-(\(Beispiele\):)4098 1884 y Ff(\(global-set-key)40 b("\\C-cg")d
-('goto-line\))4098 1964 y(\(global-set-key)j("\\M-#")d
-('query-replace-regexp\))4098 2140 y Fg(Eigene)g(Befehle)g(sc)m(hreib)s
-(en)4098 2291 y Ff(\(defun)g Fb(Befehlsname)k Ff(\()p
-Fb(A)n(r)l(gumente)5 b Ff(\))4169 2371 y(")p Fb(Dokumentation)g
-Ff(")4169 2451 y(\(interactive)38 b(")p Fb(V)-5 b(orlage)5
-b Ff("\))4169 2530 y Fb(R)n(umpf)15 b Ff(\))4098 2639
-y Fh(Ein)23 b(Beispiel:)4098 2747 y Ff(\(defun)37 b
-(diese-Zeile-zum-Fenster)q(anfa)q(ng)42 b(\(Zeile\))4169
-2827 y("Zeile)37 b(an)e(Cursor-Position)40 b(zum)c(Fensteranfang)j
-(bewegen.)4098 2906 y(Mit)d(ARGUMENT,)i(Cursor)f(in)f(Zeile)h(ARGUMENT)
-g(bewegen.")4169 2986 y(\(interactive)h("P"\))4169 3066
-y(\(recenter)f(\(if)g(\(null)f(Zeile\))4663 3146 y(0)4592
-3225 y(\(prefix-numeric-value)41 b(Zeile\)\)\)\))4098
-3334 y Fh(Die)27 b(Sp)r(ezi\014k)l(ation)i(zu)e Ff(interactive)j
-Fh(gibt)e(an,)f(wie)g(die)g(Argumen)n(te)4098 3413 y(gelesen)d(w)n
-(erden,)g(w)n(enn)f(die)h(F)-6 b(unktion)24 b(in)n(teraktiv)g
-(aufgerufen)g(wird.)4098 3493 y(F)4146 3496 y(\177)4144
-3493 y(ur)f(n)4273 3496 y(\177)4273 3493 y(ahere)i(Details)e(geb)r(en)i
-(Sie)f Ff(C-h)36 b(f)g(interactive)26 b Fh(ein.)4391
-3661 y Fd(Cop)n(yrigh)n(t)4694 3659 y(c)4677 3661 y Fc(\015)21
-b Fd(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
-b(Inc.)4549 3725 y(v2.3)h(f)4701 3728 y(\177)4699 3725
-y(ur)g(GNU)f(Emacs)h(V)-5 b(ersion)21 b(22,)g(2006)4657
-3788 y(en)n(t)n(w)n(orfen)i(v)n(on)e(Stephen)f(Gildea)4098
-3881 y(Es)e(ist)f(gestattet,)h(diese)g(Referenzk)m(arte)g(zu)f(v)n
-(ervielf)5336 3884 y(\177)5336 3881 y(altigen)h(und)e(zu)i(v)n
-(erbreiten,)4098 3945 y(v)n(orausgesetzt)j(dass)f(sic)n(h)e(der)h(Cop)n
-(yrigh)n(t-Hin)n(w)n(eis)g(und)f(der)g(Hin)n(w)n(eis)h(auf)g(diese)4098
-4008 y(Erlaubnis)g(auf)i(allen)f(Kopien)h(b)r(e\014nden.)4098
-4101 y(F)4139 4104 y(\177)4137 4101 y(ur)27 b(Kopien)h(des)g(Handbuc)n
-(hs)f(zu)g(GNU)g(Emacs)h(sc)n(hreib)r(en)f(Sie)g(an)h(die)f(F)-5
-b(ree)4098 4164 y(Soft)n(w)n(are)24 b(F)-5 b(oundation,)21
-b(Inc.,)g(51)h(F)-5 b(ranklin)21 b(Street,)h(Fifth)f(Flo)r(or,)g
-(Boston,)i(MA)4098 4228 y(02110-1301)h(USA.)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/dired-ref.ps b/etc/dired-ref.ps
deleted file mode 100644 (file)
index fa1a86f..0000000
+++ /dev/null
@@ -1,1889 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
-%%Title: dired-ref.dvi
-%%Pages: 1
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX10 CMR8 CMBX8 CMTT8 CMR6 CMSY6
-%%DocumentPaperSizes: Letter
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t letter dired-ref.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.03.22:2035
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 57 /nine put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
-6D4DF600BB73729BC4A5B134928F1370B9F07C587F79388B1D9AC62BFB1566DD
-CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
-0B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
-08E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
-588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C9
-ADF568FD0365E58DB79935BFE98055726F1762241007E17F406CDD104D4E1411
-DF62D3DBEA32CC435DCB9E14DE94BAB3FB3F9DEB3C783C5F804CF18434722517
-08FF8A116CB58B1EB14C96C3579F076465F1A0B16A17F202BB9F0EAB24E3341A
-B9D190CFCD066D48D6FF74818E39E5416FD2EA43416A83D7A8146D29079FE553
-034B2B18F8AD3B08F0433CD5DA8B55D64AF3777102466712795437BFF7FC2D62
-E3C866B5D7D2DD03EB2D1CA1ABCC798AAE0DB6FE1B2EBE5409CFC4B4D55976A9
-1E1721CDDFAE166D30248F2BAE9D70F9ECFAB6E8FF213ACC090D70D5D7F82CDA
-89B29898E7362757C4E0EDE8B5C8F6196CB82BFAB5D0FF74960FB4893E8AEB7A
-F507D0C799B529637B9A864CE72232BDDF56BB4B79AFA17C795D554657B08574
-8A82B0DF5DCD67704445F3A4F0FCB07A61C6A4BEB1D913CC2F002640DCF4BFBD
-5F5CA89463202676525148E9ABDBAE2F6A04243412A1E0C84D6133E1F9DFDD4F
-6B230FB77FA127E4C3B7D364D568EEF37F00C9F15A485A30027B39C2A876A3FD
-7C9CFCB86931C4CEC15243353349BAA2B13B5D2B9800979D2C2924C0DBAD52E4
-2AFDBFA13CA2254B2DDE4F3BA5D2EA7AAA9E7CB3E0C3662413AEA74E8876FAD7
-FC5B991A56374AD47A585AB15F7DC08B103E4FF1ACE3939DD0B1B14F9EB7AEAA
-0DD0C98F1CC80888F11DDA518E1D56E8A29970E1CBBC452019B053E46BF8290C
-4E5BF7586B3A78934C7362085F323962F44EF5CB26617FC6789B32F8CC062E08
-C261845C8E83E2052A019434045746AB684008D39E0F63C90DEC50A147534B66
-3B28171B4A46F8EF649E7F34234AA592492BC326777A018FDF486DAB0E3093C8
-410BF60DA1B847BBA84143F8F36BE2B2239BE6A21F45BBEB9B7F48BA7B30B2AE
-F6AC4EE16918E72C4B66707C41F9C5DCE7E8897EA217CAF231BCB32139B4C1FC
-0CF91C1E23A6B91E7FC6DD138CD17724890CB0D958304DAABD04488EABCF1B93
-64E5E521354499289B4F6803CC5829D95E0060A68F031B3BA78690490F87D293
-69403417E953DDC218715B15DB94D068F6B5E558AC708E3D5F68548A4A20C630
-E6D41D95FFE0973B3672897AD9D68795E6D5429F3EB992A63D0A21E0B0C9F666
-845491E1C2083F8250481390666B516AFBB231AB398CA9984014B22B1BD3DDB2
-BEF02C269973C5B24166FA22E7B1C3EB2BC5CD52967C683CF4118C05FB2EBCAC
-1A2924E4560F1DC1E8D5893F04D37178F5AAF223BD7CD71C9DE8A98CB0703C3D
-79E1FD0986657243F635E28723E47E33EF58A058480779FE7175E03687363B69
-8C0C72A46FD66F46E1BCB233C3136204D72151EDA5294585B9CB90E1ABCBC2DA
-4D4D89CA5757B9DCB54FF3BAAF659A0CBD085B21178568802DE8797820E709D1
-D64B2C40D417EED85C73E285D011495EDED9896BB75DE2839D948E87BB5A0905
-875AC4520C2063CEE82BCCA71679E4CCBC5B37C87FFB191BF1A16C2D30C6A67C
-AC748679CB5D0C81C8204A6AB3DCAADE753457F8CB5A86F8A09FB21CDABEED26
-CBFB0188427465DB057C834B345E592D99BACDFF3691F14505E31F5CF9217393
-34466ED27FB3FBA3CD8FC145797A466CB7107190EEC5F7C299373882EFDB5282
-60B61E8A8F296A1652E9EC65A3D6ACE0E051F69723D55708D538D3EF38F76214
-3688BDD25AC02C4BA71784A5D6DC38ADE9FF918ABC4CB6128D2270705506BC73
-0A9FFD15041BE89D01056022AE4CE59F84AC318C59BC9F89FDED0BC884476211
-1A010F089039A96CC2097FF3E3A05F0593930911DFC91A5435701D2EEE24EBFC
-1B41423AA46E933E7103B7CDE75527372A7718C0B2CF412DC980E703D75B4024
-46C1C9CF31639F050855F59896EE105A297DEE56F1DFF0448BFC7F0E438BA379
-3495FEE6E537DBDEC034CC92241E75E192F9D1187BECB52D3EFC455EF08A2A77
-4F6A9CDE92366DDD31424C51CCDEAEBA1744FA290031C78B1D5BC0CA032D6C03
-8E1E8F6DB08E2A365D6B4068D2E09A685C1515CD434C8CB9FA214F5EE59E1570
-9B921B854CBB772361B44332A50FF6D333D4F2DF3D2FE1A2FCF10B104E773FE2
-74031361FE14AD205905940A959AB1D922E79C7F7778E49008E3291DAECD5DE8
-F0BFCC6D3588A4B491CD5CA01F40B40584365E6E256E97038A1E475A9E15C248
-8AED89788B6EBA9AD2BFD77CD289A4DAD565EB7CBFF27FB058EF663946350356
-A559E88646D7CF219D36B819A3767946881948847C3CFEFE2E63CBD6345B08F1
-1A1F6706FF01A88DEE060753FF9EFA850048A42993EB97179CC1A32D0593A30A
-4D57B55E5C854BA7BD8EC91169FB93BD883FCAB74B1B823BF9D950B60127C21F
-1578D0CF1A4AF4C23DAA436DCEA07D0A98F16CE9292BD0F7A205A4C9E0A9DFCE
-73C95829AB8BA819C0B9DE0011B6F00B6021D8909C8D3F7B5E287997ECBF9A65
-6819F0781D8C6AAA5735B640567B2400BF586EA6A3494FBAA878C666940ED153
-A16460D7F941A4CF58C89A0885016FE90991846F8045A04C9E3CB09398206D17
-57696D9696964BF63027C3588B9BDD8DF631D301B1C39FC6CC2D95871793CF29
-1A605D8A5F963094EE70AB48769E30A2F729B072918BC09F4E78640023C57F2E
-5801814C8367AF3C692825638D9DE5A1CCDDAF813EC126C81D903F5F75429DEB
-D503DF197DF6D34AA7A2AA2538640D1F8A8E775BABD36C230EA38B5844AC6F52
-D122FBCE58BE92CEAB9E8BD6C9CB81DA2E4687F9A316029198AA3205825EE224
-DECEB03DBB1BD358DBE6FCE1B2791FCEBDBB67A212DD025B370456DB6C4FFB8E
-32CE8AECF3641974BFDCBF7EEF2D87325AF97064F7A7D3C39AAA690A9C3EA1AF
-AA2FE83E0B370FE4618684C26589ECBA8F007062A0557DC8EF82E3178D09CEC7
-A78BAA5DEDFEC57E4B5E02FA7EC4333BB6A81A9B8F8A716C9F052D030007C732
-C6FB4482D9B03032B34572282AE622B6BBD37A71DB6A3CC735C28BE41C035A31
-A78921B604B2A3FD1CFC328A58AAC7FD58676D833E5D7B9389ED583F98E6F484
-0CD11BDFD3B74DAB616BFCE375D7465E1E7E9C348F0178DF88E0D95815CE0406
-684EFFA473FB6A3FC3691FF6BA37919013B45BC41799161395B06FB507B6B3B3
-399A2AA51F2D9E6D4BC4A9031D2CAC4B28C336C28550D59A59DCCF7AD400FF99
-38405B356380B744C9446BE5275B8A29A81A7C5313732BD057937D29255EA86B
-765B2045898F968B55980B347168E385FBDA3C28095772194C0012A4C4BF5DF7
-E212FB3C50052F275FC13CF314B2CA4381ABD15DCE8D0C9D63755C1ECCB7B3A2
-C5DCA0F1E33E079D608C59037BE10C6AB019C6EED3FAED25B56E3D7A2C00A256
-53F54897B02075BBD7D0BB082D273FBD5EF64E315D07BA01E170AD2308392C46
-A2569016E198FB162F3B6038BEF7F6F6ACF964D5938993C3FD7B7173C5008D56
-365A335593CF8AF084AA04A07705A101AC347B15A5DBD59401EB63CD13E889F6
-BBA625BEE85BF5391FF6CCD7E5A008316EE25E3F698478BA04B58BB2EC6A23EF
-ADFEC29EB8D645F09CD0458E28EF5997445F256E79A0A8B0D9763FF42564156C
-ACBABB93F33F9F290DFE4FA278494B7344728143388240EFFEDAD9BA871AC319
-60DB7A10AE78520A685678499F62FEEC4DC2D5F86FF75B712EC4A79D47BFB049
-FAA541C074CE614BC683451CA17496F20533B96D9FD3AF451D319D43F579BE6C
-63B70AEE94630EEB079EDF34B545FFB5C4016DE3A52908C71C9CE034ADB4ED74
-C3AB97406C24E1A2F3A5AD1053F49D7BB0C2C20915E8B47AE706395C800B3410
-7FB5390B4DC55ABC69109155BABE19041A0A593A99AB3D06F54CEBB5AAEFFA2F
-DFD0626C633185798F2F726F272CD53419526DED0DD0DAD140441D9F0150DA25
-7CCF66CFEEE2C8E0A57D3629C0A9083D5C1DCDC0C8044AF5F633CF37F8DB91EC
-83740A75CAB170860B143058D67B8866CD2E1AE98AC764619C8FF8ECDDAA8FA5
-25A8F0B50CB89CDEF84C44ED2839258760332094EA90E9A4DB5042FCE3C869C3
-A0C8BFAED6A56E0B7E55AA99ECECAEF05CD367D52909FF0D7AEBA2550B01311A
-D674439A347A5B72CDB8401BF3A2F87E1C47B79E11BBD42DF21AD6CE872D8195
-ACDE87C5C3229794F31C82CB2E57F40C6E0FA704C44B80DCE7E064CE5E9E0CDC
-2149944C5B15C0D75E8FC14E1EB183077E5A96BF43CF30BA64EE12F87841E688
-50F3BE27F132560AA76E68B72343C1A4A6323601ADDA47EC240F5499D8D69164
-38A8CAF303DD66A568D487263A650E47E3323F12E91AF2A5D4B7BCF8CE2A7E27
-58904F2CF9E7FB1AD8FD6682A2193DAA8E371F73B001B8F3B2E6EBAB3EB92677
-61DB29CEF08BC40AB2AD5A8A9EEFF739818C7A46281A828FCFEEF32AEEEB66CF
-E4AF5719BFA8CEAC41B5F1F70D47E96F099B2EB9DD9E38BDAD236DC7770B496D
-4A0539849EFB5E94E1A08195F0C0855FE73BF6AD1D9AD97EE222AE43E9E50E23
-25BE593D849699692606A7593334D34673523C5226C3B2925539FECB7B71BD95
-F60606A5A62D1167140B25E089AA03914F22874C3420816EE4AE4F6D8FBE2EFD
-71F09431E411F459C2BA217D8CAABABB363A7F7FD477C63318C6577BE1CECC09
-ABE0514622610A66592FE034B44C721F6FF8004B2CF14663D1F3C66BEA9EAC02
-403DD70EB0048FF9A795C0417AFD0A6E2082CC7345B458718D73BAC0B7AA3241
-B09135AA86C35C20D856604D9AA0E5D1A411D0FE9B6056204D482028DC6C1F99
-CAE6BC4EE1EEFF3A2D44A5D89907ED416D7493BA30C9C3240537120925F62CAD
-B0BA5CD29B2C2D18A0CEFD62123A56466FEAB0C2CC96E64D100A70AC1104DF0E
-553F72E932EEE6934BBCD6136A1B1A8DBEFD84D13306C90D4EB094A680EE1736
-56EF3400B79A4A1F74999E9931509E9504C9A92635C047491EB5F9E2250E545B
-D179141FCD485C2FF766D3F6F1A5490171AD4A5FFD602FF6A36D83C401445C07
-DC106A669E7BBC8E142C20E5FB0A38B5ABCCE8F46DD7267BDDFB751C38D326EE
-98E72B9C2264A63D002532026FE8CD61CB54B8009D25C4A25A4AFB2A46856BDC
-EC6604F63E16C4D0118CBF13ACDCD27891F652A8D9E4A0E3CD8E93FA86F584A4
-814E8986757DA8F1547C2CA6F0AE0FF86B4C3D885DE3C8CF9785E8A84B900908
-7A1E1C361FDF42CE58936B9220AA3B079B37DEAF3424AD0B1B61510F1792623B
-FFC8BC9FAC38469ED59CD520E191DA2C8780D28C7A5E20C456CCE46D176115C0
-FBCE348C8469759744A69666435DFD66CB378976FDEADDD2824F8EB4F5B4CB0D
-CDBDD8987428086DFA2D0FACE9895A83E4CDA336534E8A4368BA2E1CB88B8D74
-7D62387D389CEEB6EED466019FAC5334493C4BBB5E7D57704518AE380DC02335
-9F4D83C9CBD165B4CD20D435F8C637136A591D12A55F809021A5FFBA45AA8CA3
-64185CB5221F0EE4D26B124393D159282F93309EED52DFE6F8071049555E99E1
-C6717678EFBECCAEE7FBC5DC8FEDE888F738C56E4221FFF1E098C21E9EE60BED
-362C6CF63EC65354DEECBEE583898E1EBE1EDC8B21001CAA2675A4354A55DB04
-ABED88D49290C97B67F7843C15566689E11E8F4E3ECE99F772BD7DDC0E4162CD
-A4F66BE34CC51EB02739F1E283E703F955B2388F368D1A1106A507B996330E10
-C120FCCBE09649BAC6975079D8A43A76E8F9BBF1687916FE20C628E6F8D05AD6
-89FF1AE9A229BF2691BC68314EE1F0FE0C7FA4355FA2850A51E28D5FCD9D4B03
-55AD479F16DA5B0EF577E9782059C0737ACCFEF3CB6E3776A1D283B2BA82B1C3
-3DEFB4DD57D577B194CA242F41C4DB0AED395C67BADA209E1A7FB96C1801F3F4
-486D5CAE277BF622BE8EAF78A733C42B6B2AF7BD869B484A3397A5B96AF2F160
-BF215C2D05A3ACC9AD7C044E1C8BDB1037BA3BC093152A2552BF7DBADF1C599E
-506291A8DF282F9EB736C8688F7CF8211E2023ED63C37B6E8A66D8A750180C3F
-E8CDF6130C7A8A1A8B78F9E7B730BC416F77B64FD4588D17DE7BE107305E1381
-AB625DAF36F2A23E2CDEE4B39DF1392ED96C0377A6ECCCED11440A8BAA69EBE4
-88DEB5CEA0201EBDE4B74DC34EF09B72D8DA7A0C49663F0BBA63FE9F2D7B6F48
-BE05C3BD729795E0C64E40F96E77DF68432F3EC588C647DAFB5B7A682736E2AF
-5B214F1A74CE3B1F09095A32EF01A8BB85DA3FC93A1E8F824BCD4BE5A47F58C3
-4B8ECB57A9632A7C41914442CAF93DADAD498721520723FD391D2A9169DFAA01
-6BDA71D0F066599764914D48AAD62EB8F3DB1DF5FC7BEC14D26BD68A179A267B
-12E087FD5EFF4C7AD3783E0110B262B90F8F83194AE8C3EA86195F8882DFF8C1
-BB61A4800A426CB7D2E7B1B6C75C66672ABFF0ED2E93AC70A5582DA425269E66
-A393DB43E45967CCCC91F885798C76F31628787A55520F44BCC3F3DC2FDEDE00
-E3FE15B69A21432B20004C2D460DD8203872DCF3F1898E51DA2AC9B049F89EFB
-2427B8CA921997FA7F091C8FCF4CCFB26241B19B7C4556B8CBFD34BE3F88EE23
-1CE71A4CCD522170C16DB22BAE9A116124D7F758B6717E5176369E435CD6E74D
-92889BEB97EA0A18280A1B5CC8ABFD94CDBD56A56E8C3E93AE28306591F967D9
-5DD34B73FEEC7E97A1E9FD57708B3EAFF527BE842092D193055443A08A881507
-E7FEE154FF632E3CC0915C73888F7CCA4AEED837166607E8E05EC776F6878EE8
-EFC7652F5F47A6B5B5417ED9B49EE57F0A61BBB301ACF50EE569F4AD1E158A03
-F3BF12E0EDCB80AFB442E36DEB7307D45C0AC40928FBC5C4551818EB1A216B83
-5B6F4DA29C9F49117AC9723B775DD9B92358FE03E5382D82CF549145A1D69E14
-9551EDCD6BFE42AB784E585B87368B16043A6CC0E700929131C1030A05AF74B3
-0B5A7E117A3D57EEA07238880F202EA0DEF418CA058EA0FF74F9B16C242EE4D8
-4BA8FEAF24F61F5797D38D2CD95C19D1D4F214E8A21A54EB5221E23057419E24
-25199F729B609E582D8EC3026F9F32446FE280D0EBDB4183C5967E3662E79E20
-30402D53FB7445070D9DEB9456D6B515F838908FE5456A9FFC43AC6C6A083691
-AA13E5A00D31C1D74EF62F6F8F9980811BF4FDB360120E0DA69F69F464BBE06B
-514B1D22D20A924FD6EDD6CFD2D4B7BF406A722F98B1B73C9859F34A41862500
-2530158232C1FD056656C2348F942FF5119FF015346997E569AFCB91400F7E6D
-00E741FACC0C7D0401BFB7358347860272C7B010C6906886D4799167DAC504DC
-D29EDD804A32E81B0AE4D96B71E78418277316873E73E848E1ED0B87FE94B9C0
-135A050578F9433889A14C99ABD7EDBE850ECEE39F50EFEAE52E568812708F87
-3892A2BBCDE6F37D644D853C249E3F29FAF100389B5B6255EF55B3F981D5E15D
-24010A059F2E0C54C91025FFD21DE48F371DDF046025218DEBB5774990BB8997
-07BAFADEE942F386EE90DE40B36A975A5B52D10C83B2A8D1D89EA69EA8C43134
-6949F08B39D757B0942896C972B82E88F7671D01F74FB2B6EB4FCCC7AEB9D5FF
-C37A247ECBE08E7FC9CF710529AD5169DF88E58D8CFF70FF8AFD0C41D74A8DAC
-6BF0CFF3B2B094BF1EB49C261C60530DF9942A7DA271023F8D83E4B97693B1FA
-A594D91F8198EB83E25C7FB88A079E062C283AAF083214F473EEC8C18DDDB986
-52B2EEC249FE95816424D0259CCF420488327D3CE5D8050CFC2BBC7708B2D9DC
-87172BF17CD944D54DB241FFF0B41226DDA03649DA24846B1D251DBBC53D6BA3
-C9BB6FFE2A27CA2BF80FB383FEACF0987DCE180CC34AE03BCBF66F67FED65C04
-C3B4E4FEFC8974D01AF8EC6B90B2E878CDD25AD0C877B649BA5B894A35A3DC9F
-9634E09FE31AC8BBC94A4FD9AC59F3DA4C5B705EF39824BB86C664E9CF7BC951
-27D9AD6BE0C49055DA50735CE1BDF4B9354AAE664758498B3A8DCF6C0428769E
-D9B97D501E6F2662B17E646DF54599E0857FB44CFBF666F3274C6040B4F7443B
-346B0EB617DE39B5C6972C81A70F64A7E2C2DAB930F5CE41F7F37BE70470DE75
-E3440860F166332E4811B8C82EC6FBC0447E2515870A6856717B12E62CA0D194
-BE027D93A83900344D757CC1803A4BE4C891D9B459A38C98FA95FA7001BB1544
-03DF1B6DE5A438F6AFC5C532FB90E6CB0746F41960E03ED9C1CF6B31937FC168
-B7DFFFC7F7F56218D048CC957F7E94516A840D07EAC3D20B2800E92786D2F3E9
-B29F454BBCA6C2F7B4080A78BDCF79F3F642F2146CA6ED55CE8E29F66E3AF594
-F83944381F8552993CFEC41C68AD72C104271D46C44638728A472CA05197A758
-318E4A8F26586357D342ACE8FE82B5A01C67070F14285577681658D185A2D5FA
-7F491F1E39ADE4E1F55DE3320053C19ED60A839E05CBC908CEB514273D90D7BE
-F4142197DB833F970827140DAB4F15E6345727C58B072BF86313DDFB7409C4A5
-412FF66710FC15684AE71A5F8ED4E44856BD5C0B00DE984B373C6449BB45C705
-1D9BFEFA89DB27A4AC9D052A74B26EF44494F3B8B142E08C9A674447E5686F96
-6852F577E7F7FD7CFF4AC98D5FFD42AA9A61DEBCB437B3894ED3D474C56D2191
-3B86F65CC7AD813C8F7F94EAE2EE7D5F92D7FE14AFB7232A80CF8DB50686070D
-22E670ECC7D773EBC441E328CA3C3568613F4B445C9501D94485146E506B8634
-ED87D6F7C8654857451E754E177B1ADD5698E03CCE082211F80E1D9BB1229DB5
-926FE754B04D03A1D05C2E9001A30DC08CC2AC247E5270406225AB8E8F7A5D0B
-82484E7A96202BC474A2A888DC8FD799F9AFDD0AAA644044C68805EC456EAFB1
-2E7F9A6C6831048843390C9B83BA7A97C940D920EEF594D2513ECD80752E9FE3
-BDA056603BB7708ABF801D23D7CFCC5D6285F7F5C98C86D79E8BE1AA56FA6612
-F24E3590A854D7DEED90B548BB067782BAF899C5591A6563B04FAC965E1720E5
-302DF72E406C158567D25D504507CCDF28361038E0753A5F07682C64B497D5DC
-3E09DB3FA1765F4E76AF2CFE65299BE00D188570CD2DB339DCAE92E8CEB48542
-4056E6E4D857D4569F6F251E3125F45B24D32475912457223130710F8910054D
-AB36776493EA611835FA4BF01E8E3CEFA4674D41B007D7395AC45F285CB8A83A
-CAD4534F7E9E62CB28B388526F7D062BC329312C64F115B88C82EECE1F458C86
-4C87E974049824A463EF0A8665F662824F55B0670C9CF6CFA1B843B7DCC69DAF
-F6C5C6BAAD131247C0326A9D1749210C61C11312A5D8F5F098EFC17137230879
-D97EC6D4E851682B7B8A1242DFD71B1D55372175BEF6B1C72407EF88E0919ABB
-7915A480A40ADD9326086E0572CB589A2FD9FD69A4A3E7FF074374F4713DA9E9
-18CC6B7C889209D4EE03E7EBD6E5A4691C3F9430EBB2537F0890A035270FFFD0
-AAAA279112919DF2B9E80DBC5E2EEF67168019A32F081A30460F04FE62BCD86B
-59A0D4FB43517F51B65E0B31AE79D0FF3BFAC2466B3C529E7DED25E230195F6F
-B202D8C63EAEE78FC3E82F14E06D4B7BF7F561F4CAFABC49E9BB84D378A7DE3B
-00990F11BBB437FA763034402965075535030B58193471050B6C30EC2A8CDBDE
-702D25384DC35F53D65B9A6FE03E0844F2146D3B2A9D5582B26C30706FEE030C
-C770BD911E0793F05712EBC7ABF483E1A303D1ACAA2C846ADC6BCB7984D5097F
-72FDA0A45FEABEA1C9C916DBFBAE5D19048A80810C9787730DD9427873F82CC5
-F5664855C0A4F201F50EE359E6823246C956E548EA23E83B4FF3F56F38C8CBB9
-7FE3AC5A05124CA379C6C86B09AF83E275403DB42AF22B6D47898F037346BBDF
-63ED4FCE9A07403D087180EA77C179EA70FF24D6DCD6BB8CB12961721C6D9C05
-891430AEA510745DE8693127EA3A5EFCE92414F8DBC35F961675B266B869ECA9
-0DE1530D1C35B576EE7F40E052DDE2D36A850133CD094B7B64A29AF62C7C2CB9
-FA6BB064B3A6D79D4B06EF54CD5FD1167D0E2EF7EA79541812C4E7AF0F6885C3
-427084AE3027E2648D8D465648CEB9B0D46B60E43675FAD2FD3F6DDA78752122
-061A7FCCB2BB2A14503CC5A2D63F3F540E37D19DFC7A758BADE5E87FF4D245AF
-4908D72432095692F1B82BEC2AADA9AFF87B570C0367914222F501753F6B8101
-A85B634C19FEEE9A926068E1AE665C2041ED42972E28CB1764957DB04E2097C6
-AA814D263158D312C63F9AEDB2E9C28B40F88EACB602A0EDF91A29A98FF932BF
-48613D0DE7F7E78ED3AFA6F0C415942F8EDD5749F40058F220813E9680BA010D
-6D3AB12742408B78E595C9FB1254EF8556ABCB23ABA6E983A84EA817E93B0D85
-F4CFF27E07FB245B27ABC09D039D139DBA8BC2F8E8A5ED1901947D1B693B9643
-F191EE88F7DEAC0A1B1F6ACDA466B6E1345E21E347C00321AF74CAE1D5406378
-DC092F1E234B642B260C713A7EF27EBF82E430D863366EFBA1A04E228CD412C9
-F9ACF4C31D3439FEF5BE1E8B0AD53CAA2FE5888592B78386ED44B6AABC1E4CA8
-68415A2864C584BA590E39BBCDEAC8F082028F046470886893865890E999E4F2
-5509DF776DF6D2E4BB7C9BDD2C64F6F01C345924DC95F23B24D2BFDE87809511
-4F491BFD46BEACC2BF32592AC0FCC3BC874956E0E72783693BB1B9AA763F6C7B
-8124DECDDBA4C51E9915BD6460318F990E93439DE180AFCB0E08F9494C7794FF
-719F1851157A337FE24248B80FAB31CC68AD7668838795FC6899AE73FF084F24
-4543A42FADF3607FE2E2E593770559B63FE9341688150791B5BDC9F1C13FBE52
-73E6A8F3C74F1503CAABF8884C83E5087DAE968B0342F6D7FFCFC373EBF6E43D
-3974DD991595EEB5B55D83657EE4A5E014C1E9B3467A28F4113DCBD412F09A90
-C215A4167A161B17A9F28EBF03A7D2E52C260194302ABE0A7E047B15A4A904A5
-F15784ABB6B69DEA9C6662C3FB033BED4EDDD4B8AE1FD3E3FB00B5877225FCE5
-BF33E2A798EDC490614F92310B4993912751E0459FCAF3718F51601A35EB9FC2
-EDF95C3631A68A7B752BC0729F8D0E61DE0D06044D321262D81E6A381520FEB3
-E4B8E50D82D84AD08018D936E0FB3CC4DC6069
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 40 /parenleft put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 50 /two put
-dup 51 /three put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 123 /braceleft put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA41101E19F8FDDB46DD34CB3B0749
-5410293E3008FA73A6197B2E3BDC593A7FBE007CAFAB124C808AE2859E1E27B3
-02DECB8781E533F023F0A752B8EC1310E28908EF443CF44DA789A615DB76B1BF
-463F16077F7E05208BB95299132F8137640A8301B9E8057C97B07644B1170F35
-1206A18C75C2EF9B8EB3A23AEA8AE38066C32878DDE27D424E53B5254B3708D2
-C3750210C4A1EEEAE38350EA0F980D0297066910FA2EE797995D3A886D5708F3
-ADD7DB6427B1FB9E6002CE7FCA26808F50CA01564DCD7EC1732CB99D9EAE32AE
-DDD50DD878A849484DC3AE168AACC456E011BFC668524A88A37CF10225DD780B
-CAE018038E62585FDB13CAE6CE4FB067021B41F37A16F15F5C9C87DE63E218D5
-4B1EEEC40A8A73323DB866B30CE8415B995555CBA8EEF3D631D40360406E71D4
-19E5262DF1656DDBC683DB5AA5973062D84A784E75187C2C565089294A3963AD
-AF257AD1DADCAD1B6D3587B2426613120A1DF4A5156FAA65C9B2089389CB5E1F
-2355D1D95B55C4D4663B9318DE9CEF31ABD540F396980C1BF7EB635C0E7541B0
-AEFA274C376B7732F7A196B931A2D5EC585A567A95D6051D04A0E511987E3550
-F201450F2CEA6F0766FB214315D7320E50458EA84542979F17B1E46513FD7EF2
-6BDE25058BEFE40C1F97BF975439F149E5D00F2C0E282BAC28278AD8AD46A0E5
-829FC3B8D27792BB1856FCC681DFDD0EBF4AC6C49967855DE59799DA44A86EF9
-5EE262C07D91009AC542205D095B1F99758C7A386C977B0E49C2FCBE68739A83
-327A11940EDEDCD1233232DA90F39EF6B590756A74B5422A0BBD9CA583D7F249
-98B74752EB51CC70719B7B115BDE8AD532395FA730E6CE753D56690F6D0F0B1D
-C3013990334225FEE17A4D8F0EABA11E042F7827FE1A27A130B614D60B476123
-73F198B917958382B2D73449B892F4D192D1CDD1FE8C70B2A46B358415225A04
-ED1A9184983B76001A63F46CD56CCE48D5A5F33183F35949082B2765415BC0B7
-E7A34384D3985E064D29310DF3D085FFFEA83E437701B56F4103E48675C1291A
-511285A85EAFA3A69CFE5D0F0213430AFD12049746DCEB3A2FF6ADA7D917F158
-189FEEB95577B5D8A7B85A5A31375A7FE1067FFFA70F4594E3EE425BCA2E2BC4
-95B23DAE1CD424917AF01F5640CB6B758268CDE667DD4FCDF847D817CA9098BC
-B6E67FDD3C12A0392F63CA2A9272A78ED483F9F3BA9A32E30BB3F50E90509FB1
-2CE28975B20F3B18D7FE2CED4562088DECE21843AFE38603C511774433C52958
-0CC685B4C5497CE6C4A40169BFF636DD22ED7A3618748DEE08CF6A2E28221D09
-7F61092DC9911B101B335979559F1C5F3315B954A533862648A882EFE054DFAD
-1520C9359D64751F894C036ACCA779092AE50AA630D906D57A0E72009F47DDEF
-6B27F4575F09DDAABCFA09FA614D23B4FED547DE8C590F0780A8B3F2BFB7A8D9
-F60773E1C75C861B0E66C2A62CE09D7E0F40DFA0E09A28CF5989FF59B686A9AB
-380ED44F61E286C3427E7E5EB1E3AE824785F027ADC45E741687B9F06690DFD9
-2ED58796B544D797EA260DE35455C3D85C5B2EF43C07E8E8F1553380A404F7A3
-8D2D11C7690F7195EBE649E1A6AA2A89313FA54CDF906FB920278852D4CCC566
-1E4C5B250D880321DB061F5AE069DCD28C7AF449CA265048A70CF3BD4C9B4F32
-9DC83E5D2E95C281396460DD529BB40C87EDCE512A443777168DD90583490C7C
-CEA97E6DDA0A3A6DC65AE1BDC977EC425F0C054F6503F5F704426CED87A69F8F
-E03BD90788B19BF05122A6E43AB1EC16209062A16790D1D560239CCD3B08BC9A
-23C2CBEEDF42DED6EDC61C3F672AAE0C18BE563951C948266953B7EA5208B5C3
-56287DEDE6DD29658A98583FA150DB7C60C3C050B3E77DD7CE63D0EAC970AC3C
-60C1055ACCF3125B211F63EF9EA3D1F499E691D3C72E5B58154329ABE46DBD02
-0EE4D2A7520F471661D118868CFA2C636C94A65EA28FBF3810FB211F9C4BCBB8
-B768F7929B7B76BCD39D33BACCD27091876C62EE2FDB416459F6E773A5A9D463
-4A7A4D98F595E67F738E136EE94697E9DEEBB36E72818CC034B53C19C3D4B2C9
-DA5A126A32C728987D04DA86FFE88A2DB7224E5C15ACE12F22CCE260F3CF2438
-5D4DA6D4417E9889A5074131E7ED5EA22DB32265E318BB6A82C8A9D13A74B698
-649F49142487F511181980C73F50E0793A206FB82CBA2AB150D542B9C23A4725
-CBC16FE5FC4B10233044E126EFB2F4A6BB66FC0AD2F091F3B83B3634BF1760F4
-E1CD587F8A717449D031A4A63FC52054E3503294A3516E914A223D30676DDB29
-9E9ECDD61CC4F04D0DFC05FEBB09EBD5B09991B0729E6A3BA4D5265AF30366BD
-E997A7A200367EFA2BEA748A8E04337EFF2F5488A2AF5E9D6F43EA80638F9A03
-09A2D304E2EE9CD9DC06D22332CE2F59783537D2C7FB40482A14E95E914209C8
-632049C99288266CA8B7E773F8A9D8E48E887E9E85B55B6D3D561882D2E8E43A
-01D03FF7750707CCC3C144E72E9074616F213C335CDF67A036E159F0D584AF46
-91FAC76CA4E85C9B78F941943F5C7323640FCA279F9323D104EF2C12A49743F2
-06B6B033B72819743158CA8A58118FF2D526629E1E150D314BA188F74458B4A5
-D90B8073954AFCC4FF41D41CEBF0AEE88B336B6DF70F9E89F4ABA7B302121F6D
-9766F1C05813EDDD99347C05D1F8CC8412520971EEB622A904260758B60635E8
-CACE856DD8E6725AC2FED7C3917B25954A684E1663C4E04FAB20D76DCE40DF6D
-D8507A20B08424A09A11F16273FAA3E71DCD916E1080320E5B789A84CDD89192
-7C10EE0649063AF47EBD90B94B861DB814C4BEC3CCB5705C64BCF3F83CD112CC
-946664EBDF1C4715ACF9905A58BE3DB3E11DB62135A9066A8BB946C2ECD5AA5F
-C39ACE2DD1956EA3F34F08F4AFE400BA0495D5DFF65C22C567897BCD44FC5114
-AE412CB13C73AFBEB9C5B70C9CFD73CB0BA868BFA1F57F9CC3CF97894397C479
-CC5254D95B432082D99853E23A0A410C6D63CC1B1978C1C099119C8D7D75FF67
-D3F34267A6D3778137601E9213D2C89BD9C407E2790DA06524497C647676BAD8
-FA32017CC9CF8A5CEB9F6A48F7434907564EDA3253B0B9F2078909E799BB5405
-B1C5A5B7689A700F7F47F206955905F595360E5D0DE91EF67174E0A526CE88A0
-54456829B844B3B84BBF796394B7EAEA0FCA50A2D0C033DC9C83CF7309A2B704
-8B00AE855DD2E52808316CF7BA9A5A2AA3DD52B653DF351F930AF19AB934B110
-D5D77F98848623F60E887CFA5B2A9E680E19236DCC37F99730C925213761B28E
-0A91C64A264785AB662889F658D0F7532DCEAF433983F931B0DC80F361DB3EF8
-5F8FF33FF46707841F793C2C3C6FF8F536F46FB3F42DE22E06E3DEA9541CEFE2
-5F57B0CB09216EB395D24BB826F8F1F0022F5EAA69472980FC7DF810EFE21D0C
-7EB290DA21A756D47F57DD921319B753B0859C203D5CA16E32FA91408245ABB6
-D5607EE50F3C9562B88A1037689CCDAEE0B9D6D40DF31D4703F06D2BC534793C
-7E1B77A735C9A2B66DC218C61852F5EDDF4D062E3804A7F28180551AC7F971D6
-EC2E5AA95EFFC329D74AE31698B78A12EC7248382ECDC0D9BF8A42A096668C88
-2A122CCD5B2C65160DB0ACC8468B072AB62428AF823380A8EEF92177DE627A89
-DA3A03EF836A48A810303EE4EB92E6736321B3B0A3BA9F8165621C110C08F365
-F8E76C1EBE0574600BD7BE1436CEAB10315FA769346776640A6A616731F23E3F
-3562C60FC75250328FCEF70CD2F9E3CF844703138DADFBB484C605238A7DEE1F
-2362A11144DFB5E5B7361B5460708C6361927A2C8687DE73DFCFE9373F7364EF
-8241A2A37789AFD6F47FA009C1A3A963A747FBFC8E1A1D592B8C8A405513A626
-2D5A3970051276506A46265F86A28D6E29D41BB36BA611AFBB8A713D19543F87
-B2BA98F715F9670C8ADCD0B59EC7CA1C45AC4436900AAC9406570E56A1DB48EB
-188166913D42068227E6853437E7971BABBD26DBBF07298035C13597E48D639B
-BB66C9CF42859A0AA59E395F5689B2CA25A990C43ABC26C3E9B176C011399447
-BC5C8707593B18088E9BF8C58FFE9204ACFB19B9CFEDC4B0CBA60D7DC25A6EFB
-346CDB2E20B20C907E5610E3C61B403996E5FBE45CBDCE19721043D72E97471A
-CEDA59D92692713F1F7AF0FB1B9140A995545AAA0FEFBAABCC40684BE0DCBF83
-68FDCB70D9D2546A428009C1F9CEF99EF720D12C5299A5856A33EDAAEE1266E6
-66892932D9C30D5DAD7D90E0F0617C412EFC68494A700741BEB8FD37F7EFBBF5
-1A901C4903930C9757BAE9938EB964A39C3C4833632CBEBE93C5C07FDC2A4E78
-27E6852F3DB34302BCAAD6626B10BAD1790F5735AAF3C236FAE3E1E8FFDCBEA5
-FAE064B08DF7B68F033CE4D3521FD41437AFA4F18F603791D8434E630E6598D1
-D25A011EA99A2D4C4E47A0D0ED4FD01E12B810D376775856608E34D8C9DF3724
-48D919BCDB09DA820FBDBD163A9FF76CDD61DB100ECFB7BC5DD08C5018D9F9C4
-035484764850BDBE3E688EF0B58EA6D93D2EDB5EA70CEE815F9B119E12CB60FD
-01CFAEBAD1256FCDAC96D767FF075C85F1DC6C5252350062498C62607AA63F5B
-BA376EEA8F422CA1C72D2CA837FC2829AD8BDD914C7233572C1E512B45F4FB54
-61036B5B8014780E2560AEBE548EBF9EF5D383A3BCC809558E9F337F462378F2
-5425ED071B51CFFD95B2952ACE7FBFDCF4686FE856195DBD8A8300FC75F66C63
-DCFDA5BE7F835C844FAA446D014782F298342E9B2691E2199C835ED83AD79B2B
-516D9439E14208869AFABE62AFD868BDC493D3B856FD2E696FDC08FD0DA551A3
-D9E44F69A559609F4478F0C1CD443D7628A712EC34E5536441E7F529ACDE8168
-652B8CF1FFBEEFD5E91CD2DEE43797C525E01A74A31B82AAC5354037272B1AF4
-15FDFB761B2D02ED81E6F7DE82EB6F74B0F73A26612461630BE9143A24769625
-86CC5C0BE34E568F30249EA4980E8E457D3B7454B44AD72EC70222E7FB87C1CA
-BADEBE17086CA0C898E3F6EE059C1C63C67F5B4967F11AFF115CD7DC27E541E2
-E75FB60A76E0572AB1B16E4AAB9AFC4D5935EC936862F0A08222423480014F0E
-14AD4669F306AAB1B841C374B5A910C4752CA79AB1B3F3E1017851AD2A9CEDC0
-150672A866C941A105FA02375AD1CE54F9CED00C7792513EA2681DFB6397924F
-9310550C0C6BF77ABD3979FC524B73D6E6A14D3AD3FF187B61BD33B4B5347288
-69FEC56DC2D8C1F8AFF28D1DFA9907CA6CCBBE34D12EE9B14E1550F8041564A5
-C9E0C292290028C162CFDBF0473CA11622C3FEBF42D94DB41A181EE51C09AD6D
-B7838DA1D2F6D98D99E4A8E3EBD89C6AD70DC364C25CCEC718FA499E7EEC73E0
-434369A669EE979621F74FECE955E3501A52AB14E5FCC3C3A8EC140308311BF4
-D8AF8AAAA59CD7F52A7EAD94AD8433635A1423DDA2187CE0EC35CFEC0FFC74C4
-D095AC9A7DBF182616078E954B3AD580CE8AF901CF4D5EA3217B1E734F37DDD5
-67E32CA4A59E9DED87439007F576D64CBBE99D7ABF2D12A9D63F7339E88D3A79
-90A7BC9A722CA7A5418451ADC14F6480363C00AEE363A556DBF48CCDAE30F9EF
-8933620080B9B24F2FDDC1EB267544F65679F0EEC21693141A947B4B981E29E4
-8C1FCF6F71EDC7C5D86B5CA21103F335C1D03F99EB5A9D7FC348B8A65092E72D
-F49BBB7853213A06C15B01D3FF5BE94041B709737865C4C34ED4124801CC3D5C
-4E719494AE482CF2786B3DA85B4BB747811C865535BC76ED597B71B0D2A896F9
-E2EDEE96974352A3735F892CAF48FBD944A1E39C319C4E69C8CCB0147F643CFC
-6F8C72E312E65C20B8DD5F623F0A0AB667D65C4EE5EBECA2B2E6827ACE502C85
-78421A1731FC792BE5BDFE9B90C631838E299A72A19EA564487DE3B28218AE11
-F30FF509AB7F223387E7AF6B3E1162F1A377D8A64D0FD439844DE8264621FA8D
-1FE268EAB4FAD31C60F4EAC668A1E44E81D86177721E8968EE05A677ED7E8507
-61E34154EA7A27CD27696D3B34D932CA2DE65687DC7A2969BD8A46E30471533F
-E3129C347095832C69FB6FF380CEF6608821A57381CC551B771E33D969815EC6
-A7DF385DD3B50F26E025797BD7808F6ED254AE3A5AB0664AE1E6DF308A1F7549
-2AABA4EF4A228E4A932E87296999ED42080AE1C260A356407DAC03A3D7F09D8C
-6EB3175950EBB743E02119A7ED867012680F8065CAF41E0864E1E7591D635478
-FF4AE2B7B2D25F45568AEEB57B0CC0C86C49EC91F8C84515CDC449E57BBDBEA5
-07CACD01599A368E7D55DF58A8260A89288EFDF87E15065CE6161EFF495A1FA2
-D37A9265AAA63464A101C98E8F38E866C61E57ED511DA8D5A0B95E366967FBDC
-8DAEE09396B6C542C024F543013D619AF7471F9E25BB0003A0B7F01E10813CF8
-8FF216FF04CFF8BB1047D7DA09EC94A5E46C22592AD501E2C4D77539D75549F3
-37039C3AB64281310CDB07CDB1573B2BA0A3F9512C6AC2A411FEDB4972A63ED0
-81C9669D6F1DC786FF0C5E3AEB5B836A80A0A1069164933717672BA201B91A90
-D79568FA3C87C974C6932B33CCCEB6C25ABF0E42B39CE100E5B0EB7FD3A5AD09
-1AC044731B1DA133BFF68C493894A5DDA8EA37A968CA059D90DAF8F5B4677CA0
-96C72D48270959FD2468E84D0D0D40A62FAAF309FB1C81013ACF51ED861A8567
-9C49CE9F79C85C04DD7DA6FF28CCCF42055C0C978065B8AF44C95E9184591B28
-EBE5DB4DCD92960E0C6086A08FAB63CA8002192CA28D70ABE02AB7E20EF11A8E
-05A1F274C64C66D9CE63990EAA71B2FF4EF315B45B8E0528E05C9185DEEE215D
-B49619D301BBC66D3DFB8BA1E5FFD7F66FFB003EFC8F472BF46CFE5DADFBB943
-3A3B57F94C54532E87613AD8B6CF52929A42A449D16AA40DE362558DE9F329E0
-DD09B5498BDE842FB14924BCE20FFB13B0FD393B6BDB427E46B8E2E0A0F70CD7
-B93F43018602E5F74BA11EF2A8DB031D6FE1B3EA2ABB165FC550BC233C442648
-B7E78BD68150EFCEB92DD47660781F4A39A74DB35922F5C935DBA398FD7AB77B
-8E7A230E1E81950C308FDC2A6CA5E17151E6119B4CD058237DC50DF812D8AA1E
-15BE5E0E0844AA5239B84CFAF9381DDEEEB5E3C99E6108C805407E30E3FCB96E
-5DE662A5F576C486779D10E5E4E37FF9B06237C527D4523EDD5AA03EB863ED41
-457E46D1A9DA0E26E79D834FB435470DBE0DB3C3EC0F639DA999F7D2E3E217CD
-81386991DE2CDCA721DE046F7CE6C9ED03CCF87E4D980DABE15A291D6CD3C158
-6468FD891FE00470075ED3312411786898226794107BBD4648F046138F5405A7
-11751B3DE6523FE715FAE02FBE24112BFC3F2F6D129B25B3B7B9312D4482B178
-C466C10BA1989CF1BCE66BB4B42A6BA268AC494FBDC6FAEAA7A72ED1C48F405C
-C00C5E70C917916407395C7D9180A95389E5384B8F4FC41CC982A2DB8436A143
-3CE48A4D32CCF6AE8A042451AA10366D08E99C90707BF8A60B6688949D0335DB
-782756592DB158E823CB7E8F4DF6C3DB1DD098A1DDFC34053ED49094119E95FF
-FEBD589E647D64B43EDDA638B83EAF462C781E2AC2B981D6085B280303339094
-F9AEEC637E45329D66F36A07683E567CC97D9BB8DE891F73FF16FC4B923054BF
-479E7AE19528733D6E2337DD1D4E75376CA9E843D547BA28C2D4BD182B807AC0
-3988A0A1905F9FF0D22B4CED5A0028298D31D570631C1892FCF87D6620A55D50
-24B679D50FC1DEDF84E4AD00AE2521D78213B85C364B16ED6F8BD012B6382DF3
-DB3077178D82F7F81D308E33D9767C18F7ADF0B93DD3C6D616902C5AEE775FDA
-FCA928094A5BD1A5224E3FD1E45F59F3EF30F086DD81FB7546632117818804FC
-70ACC6F6872C2B3E8CA29AA87FE9D9C1A8CAC1EA995F4A237889262511A368B1
-338146CF75B01838C71627D6339EE498B4EBE4AE8F86978F77632CA59188A2CD
-96C633F2B84F30097CDDFE6D2FF2FAA9CB82C1AC881FCFE16548CCC60CE89398
-1D91443E6BA76EA6ABF5154EB647D3CE510B938F725D8C6EAB3C293877DF86C8
-4C830C8379461728446AE23D445E4AFF5BE84DB94BDDF1477DD60E94C27DF754
-C46DDCD8E2B6B5EB9B928E75AEA6A6B6A8EA1991BD12E870C8CCC4383FFE1219
-0257A7D8A14C6C8059C24974B6FD1B452E13082DE064724C1B5822962E0063D6
-8D86CF3673BBA76F8C0446A7501938B1C5838A205F13041A96CA27AB6F4F4004
-9F3ADC11B0C01C1949019B60FD93CA0F3CD86126CA3BEA16C556D763C7476A38
-A75771A8524BCF508A4938D51E951F4E1E5DA5E4C67F13991BE3ED13321B96E8
-C1B60673892D0F091EA3931B6B08615FC6A0C5E75BDACED9F41A5EAEA45E50BA
-46298852E262486D80AB0AE3EE18040B997C85F5C9737C5A4F08A5376244C259
-AC7FA36C0B88D25C647D11F8F9F578D8633482CFA582065F2B2231B562003001
-FA81BFC8B67B161313A421D1D9CC3817DCB5B81E625BDAD0C438F49A29945525
-25BEEAB86A926C12503749FBF30D945EE450E9213F950F4DA5AC62C732522958
-DE00E60A9DAE074D4093C381259E91164865186099DC045BC43C9CD4B88630C9
-15A8BA9A89395393922DA7EE582ECB3A3DA5CD4421EF0EEE4C57032570E74271
-546DF3F774F3D3C6EB243464928FF3E7E1EA35659FF7AB0D48050FC8841B2AAF
-ED403649BE27A32F9819F9CB3CE1100A7185B29A4239C4C461BE76B9DDAB4332
-357F55AAD0021264D5625A0ABEFAE29F95819579563CB61D5BAD81A20AC5C47C
-BCA1DCCF82A96E7D1C8672440E28F7AFD9C34FF7EB4C4531ADED742923019A61
-AF6D10354BDACC9F82BC31BC88C189E549014ECCC0ED8527686AF33817114267
-D8356689E20B37B1B6F4EF9A6B9ABF3E19A818A8E4D8D232F305D3B63CC9DF28
-CAB9A53358515D788A9A8818443D506969AA199FF9CB11439BF1E5916CB5A3B6
-520DF9EA1AD8E52871453CD628F5489FFC23A324FA5DD9FF0E2B29C9FCD67EE8
-9A93783162E5B6B0A191CA871B940D68E486DB3843AB56164541407BEB01C8B6
-D1E0313F2A38208018BC661D778AF6AD9B3F15F74A66E041E171143A0A08EA84
-7BA7D2C6ADC207145183EBC2FEC692750C32DAA588954701AD45E0FE7701CFAC
-7AB2635C35BE0ADF227E4FE982D562AFD137835024A5438EE46B96171E184533
-3A736021B4F0A24EEDAE8972A1D10F9AB149726AE541BAD42E9BC4AB0F219D14
-04752DC2C501E8A155CFF3407316FAA2E163E745432EA99CDFC4393583035730
-17522395BCBF2C2FC3C2A319DF4A88A7EF1EB25F21A39222C3929F95D4616654
-8418333C33AF322DFC03C623484E9AF520FD0B8C8BFBFFA4CC83CE4FE08CA55E
-D3BCE8588C940761F4F5E6310434D82D0E88F034E6BEB3AB968FFFDBD942B547
-D89BB2F136C4CC3FA867A9E2C691D2EE9DD38E59BC3022359DCDEA3140D6C7B8
-60FC65621FFC2B6E0EFAE7AAA0A503FA397946C3C43EAB5E0443FA6E8BBBEC7C
-852654FB6C4D05D290A4CB4B3F9BE2133CEF24B9162E8BA3DC6413C075853083
-110CD2942134248583560479B679089B1015D47424F19129EE822D691655AD9B
-4A8772DEADA5130AB6AE36F669A5946E941E5C2457FC781605A1D69A6F253959
-0E9D1B6914D931DFE4B798E73810F45FFCF7AA128EFE7A528F18555D0F81C646
-4F2895B47492BD862C78EB9D641D15B5C98D6983B6E8163D32F7BDF63160D288
-E7A027FF60F64F023FB0E27DFE7C841313B2C49C5FDA2F218BF5C9F154BD7F46
-412FAAE274AA38B3B30E18344B3A8E542B5CAB6DE7E4AF502EE67826B872C41A
-C440DFCF3AE553DC00538FD7F09F0E21EE52651117EB15BB598E57375DB52A2D
-C5187DB0E2AE60309853E356644E4DC45D349226CAA239CD9F1A4EFAED21CBAC
-EE7DC0197AAD1C694D62A9F29D0A5CB1FFD7CCFD9771199EFB09725621826291
-FF7F72D472EADE5D3FE0C0FD4541FC8E158862D98757F8B80BBECAA1F8299D0A
-2E6AA28DAFF9E3F6458CD78114136F46E6B1B0BF68BAC2120710B857998B6F22
-826C61AA95CA9476B606971A7AD550D9901AB38019FA14A4792EE0AC0BDB0F5E
-010B78EF50C96CE03621F21CBF1AD96BEE428EED181BAC0FF4CEBCB416B08150
-735D906055DEBF4A57E77791AC8F018FFE1BCBDB83BCEB4F0105CCCAE44486F4
-BCAC2E6B895353AE411D09949885846EC7444F2850FB419A60BEBE8247F9C3A2
-80D52A8BF246EE65140EFAE795E6C178B9481024251DA564DAE2B6D54753BC06
-4A555858CDF013C36E13F1AD8A581CD9A2DA31BE5C5EB8BC820AB1FA3B94F5F5
-F742AA198E393A1DDD9638BCDC7462C5DC5E0B25A8F9C3408A65B3043BCB1768
-9429E48319CBD5DA8C8A35D50D0923B3B148DA9BFA7C904CEE07F724D3A51CFD
-81B5027FF761E0B45E36570ABC0AD515AFA28E80702B594D2C382CA8AEDD1850
-5CB6F371315BCC0D15AE6D12FD189271C7BD527B1498081CB701474468BC57E5
-BC89A342D7CB23E2D74DFC5EECF14D2C7E802A79D7D0E5BA393C36ECEB6BC569
-70A6B935B0B3C70738A906C0414DDF189DFD5E6667EB44C5FACF64483C37E059
-46B04D17EC2CBC1583620F8FDE5D556E6E12281F41747FF6C18FC6507B33C23D
-09C02BEA195CC0F37D2EBAFFC4FFEC5B83499EC6326F4737704531253BD41425
-FD3280BA73FA63DB463271F0813A522F5A583BF3B0A8C41462B0B829815F59CE
-87A9E152C6545811F80EF3144CDD217ADCFEF1F7AF2B9D1C06802524510EE62F
-EA407213422E1300455AC19E27E157A3F596BF639D8342D339D22B21E38F2177
-EDD19B91FF90AC8A8C2D17182D7E2732CF2E291E555914224C40E7E3170DD617
-9B158044C66A407D4C85225A1CF27BF027EFCA6E171A057270F402E7884723EE
-558CAB4248BAF8BA8E4ED73DE39E7300C91368F4FE4E0C5CB77FDC05F0CD1205
-C3FE450F7EFE1BA4BCF850BF7CC13123AB85CC0F912548B31C41F3772139D731
-2C1026DC05049D887503C8BD76DEFAF0E29D1F9EEA53659D58964B4CCD1C4352
-910FE7D1DCD4C3F71C21C4CAB7D223037E4089287F6A10CAB1C80EAAFE13CA0D
-716D136B1248836A1A81AED1847FEFC8CC60E4F8B2BFD896A9730A16CE788D8F
-EB1BCBDCC2728FA05247B77A7DC18F757DDFA5EE99A80508C9F800F65AF63E18
-097509AA25EF35209B70DF4E09E48E39E93ECDFCACFC99267D45C62FB0A15494
-3AB2F5F92143E0CE824F2306E45B2288B1CA09DDFEEC59075C5C86E7ABE33516
-40295A65887490F33FEA0FE29FC7580690C6EC5A9D1AEC45098F0479AE2A89F5
-556CFD965CEA61549B89C146C6679DD30B22CB26B2964CD4D1167F3D369474A1
-6FE362422CB61BDE9654CBACEF423196B24329280C4E762AFDD18012E6BCD9DF
-8F59E9D57CB4015ECC2B56CF845C11076F5264C222CBE7B0F8FE263165367997
-896C9E9429A402493E160ADF94AA07BE64ECB39B4DA9A1D20E9F29BA9EF770D0
-9AB9050E63D734D018EB6E43E31E523320ABBA1DA1DBB01DE90EC6263A6E7401
-82A4F6E1AA68D06553D5717525368C2D5617158B18D70188F9B649DA61D4C000
-D22AFA6A6B8D1B049FBF486B65F99BD9BA572E7D8D66F4D2DDE3F79132E6E4DE
-20322D9165C4D4774D80E66A3A164E3CFD097CEB2C378076AA09DC214BC7C071
-3C3628A56716B6D84B250993F51759652415E01B51C324F5C0741472001C16C7
-FE5135FCFEE4FE310C74D4B3750A7D37E330833941E11D2D5E8A81BB1FBB77A1
-1523B65A1DEA473D4A61801B29D0AAE08F47B6F2BC9AEB22A7CF88AD5D34598B
-66B0B96364759457E7063DD99C2D2A10B0B880C75FE4F8DBDD8E3460A872028A
-80CB692CF959E6D403C89BE1112380DDCFEF833822BE22A7648A17D9314AB0CA
-BAAEDD4D8B87AA5DF53D0D76EED1A98E4DBC74A2BCDD30EA21025F4964F0B7A0
-427808C00AB3E3D7F19DD5F3FE6D3165E87639851DC114D3863F113D7131E273
-AA0241A49C96455F33F4311FA40149F2BD989C30D55DD8279DAA97B29ABF9A57
-7EE8B583AEE63619C997E17CC528B43FF24DFF6020F34B1D7298A410892ACC34
-82FB6CB27A9135FE84D477243DAE69B0B12A22EC93226EC8F0BF314BE64FBA5D
-1139A9E8F5206ED1EF38DC1B085AA70D9AC6BD3023DA76B133B3A78A093FFCC7
-6DF10CA4B1381E5C5126E7818D27EA2580C4024A4FF89B8BE33FB535C3011818
-BFFBE6B0A6862198AF5DC7E84A1C77746109DDF855814D03CF752FA3137E3CA4
-C058183DAEA56FAA877BD919970CCC0B2F9BF3A18A5F2D3488A0AC447A199317
-09C8F891025269A56CDEA73505D0E795B1868BA3E99FE12FA5DB16226D221B20
-74D17A17E1891D4492BEBD57B0AA319B43A9A8C9F3822242F4E8049BA7982282
-EA10B1C19B4EE1B1E54145A6801A86189EA642F7C22D85A6661D7CA42D625B55
-98FB688C535EFA0B5F44CD2DB8FBC26163EB87BE08E365D95F674F3021248A71
-6A53787895CAA015D74E7CE6E5AE73F2010128259EE56CBC8C313EED283F7EF7
-B644EA2679D81C7859FDEFE87085D3C62CAA2408A3D5C4E2E99C6E4BADA3768B
-E4494F072E9F0A5308BB75850A78FC8CE0609A2AB385CCFB3CA076BAE2BCDBC1
-44345CD924C74625BC9371258C648569883DF67ED83F8AD3FB7B1096CDDD7EBA
-25E0102006C31DCD4D55EFFD4D37B05D881359DCF28E83E4AB1245D3529C7482
-576B26AF0DD75C3A82B5A8F3528EE862CF722C896FA9319A2B813443A535BFE0
-D3B0A2811475A434266395BDFB39207EFF7EA5B6CD9E014D93CAAA22840C0A75
-C8FF9A175D2046CE7F49C4EC8E5572BCC7D7CE7E186DEA70315D674364638E60
-F355ECD080C64D3D301E77A578CA8EEF3EDB0610FE61ED541EFC97536EC0639F
-D406FE774CC5708435F5AFCEBFB0563F7C4D7543869E85451FB3DE01C83AB60A
-120A920DF83AB10EF7AF5F2A4CAC36E119CA59C62C9E58BB725A9464040738DF
-70AA3A62DAAD8E24F6F617EA27E1DBE52B327912FAAFAFE05E7D4CF19F65BD7F
-1033202FF5C0C72C4425F7C32AD0A464BBA1D084538A70D52545DF67396CDFC3
-33A915D87A0260B3AE4CAD4F53AC36ABB222256D85B742D00458B4ECE95631E0
-8F21A496DB102D3A2A0CA7BED0789984056D0F34B7674EFC66AE40B7B444B5EA
-C7CB62A0B1FBE33915522A0845CBE5523D949D4332B5E71AC7B1C177863DCD5F
-93C8C6DEE528EAD00114651DB6644C2146E4A7B0DA91E8FDC6968A99B3D516F3
-0D7CB48A037F3359487385807AF606AED4B1C98F4122AA3534AAFB9D9E37799C
-4157601B15AEFEC90F360A7EA2A741460AF365C9CC06C14C1B863CF02EBB5781
-BF4A27590BB7674AA770862D021207A2183239928C5B33C39D1704E87FA51303
-2A05A597F231044724DC06DB237ADE5FA528CC4FF749B880B91147DB9AFF2202
-85A8E2D72CFDD806DE99B5FBA42F6A042906B40369FB6587F2EFB1141334FEF6
-E8A2B5C813A96F76D4ADBB8BC75D5390F610B18420E4E5B029AB7FB265D776D4
-7A3742B1E6815286AA295EDFD64FE22980A97339EAA6A4A2330893949F3BFB2C
-06F658621EEE6F0C010EE8228DA49712A701DE1DF1870BEAB73A7E3AF4DD86D8
-702E39EB7B88F112019DE6F98AD2EEE53115E7ED8B008400C13EA30813F21486
-EB77B0803F4184E071A836ECD0252C6C9F6BC7DA1164570212B87A15473F6FE8
-8530F01CA2653D19BF85E149B68A2DC307682C23A1AD246CF6FFF0548BBE472C
-C0E08847B3062B4CB03F54EEE42AFA6779D67EC0B9908F72CCEF290418B00EC2
-2794619A951D4513DEABD376D80B71669B683D8BAFF3A86487F8F83B77379CE0
-C1356F16DBE8468B05B5A4DD8A8A3FAE67
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 77 /M put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
-61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
-92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
-EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
-43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
-FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429
-DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD
-3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A
-7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7
-CDCA11A1FF27AFA7FF189A7E8A7C099AEEE0CAF3E121798B2721ABE8808D20A4
-AB6E704C0C376BD242C4966325D4C939669E28B55BC335405C400A9983B89EBB
-B13D8C5F3A148E38E9ABD86D0171C927F1051266CBBD5C5D12522AF7CC17918F
-410BABDD5FDD279338E8B17434DBF20B8E06B58D9E13B731E3C07E4CC350C431
-CE2034CB23828A19AE93124011BF053A3C5705D9BEF6D95205FB8360391C84B3
-7C6D719C0FB459A312AAC3C4256EAB293B6DC729CC5070524D1BDA41091E8B42
-2B6C4A092995AFB40CCF35730350CBA197F3D5BC5BB83CEDDBC6FBDE23A885CE
-61D416B3A6CEC46474A0F42D5B923A61832262F234001DBCED9A7A00F5511F3D
-C2178422A46CA5494AA8C37F51C40339CF9392A7098DF8596EA97C440989CA06
-EEEB5025B29EBF6038EFDDFD6F70989D63440E9C14E2A1040FAF427EB41259E3
-FF3BA255BD4C04BAAC47326181EC7CA1FFB32CBCAB92B1F8CDE6ED0DD3FE6D5F
-EE14B739FC25BB13CD94A0C0DD7CEDD886AAC62248C64B8439064D1038886DB3
-187F017A79318B69963296B4812128EACEFBAAE983646E021F24BDAA2B78E8FE
-2BCD5BFB302103D7DD28668DA7A60C446A27BFF8D6C66F4FBC61D271B91F0470
-16F567DABCD1E8B04CFBEF602BD9CE44B724B3EB8D30CE573EBB13BAA047F947
-90B24F2E49C20E2474EE9D019565E6FF25BDB3F74DF05BB9E148E1C5883A9EA1
-53AD3833A612643316CB420AF3DB29F008BA36A2EF00D25D9AA606862E0B96B4
-A1AA4BAAFF8999589849411F07E2D77946CBCB5FDBD2B0B19717997CBFD658D7
-04F62F79ED661F4D7DC87B9D27F976C7A2CCE456408703083D0044AC4063789B
-6A407EA9CBED9C091E4FB511833EAF520213B0378623279402EA99B58929D292
-143E0E986592AE731097872378122A70DED836C1AB5C759F84FE2E907BE8897A
-940785D5F56F46DE7BDDFE353A61B5B3BC8322A831069214BEBFEED880C0B57E
-C099D813172E3F5531BAEDD24718CABE1B6C49BC24FDE597F38485737E059D67
-86C01213000714E31BB813F06C4EA57CC02A36D3BFED9D7C24C1A1A1D785F4C4
-2F163CFE73F5E6E201C561683862D5E4C2CF8C641EE2117AD65BCE5D8E0888EE
-236E65992789D9ECBF747198CFCF157261E8162604442575C8FC216686094848
-2EFBDD209F84EB7FC0C1D32CE26594009D1736486C59DEC211122EC08996E8AF
-7BD09800A67DCCF0DE30FA91A02B867D675A53E03030215141BE90D4A367FD72
-D44CE7E9601E354522B5D106BCF6F4F7494699CBF5BE9424ABBB27B97BFC1D94
-6336428BAC4F7ECD6A97EAFA546B191C9148777FADBBD726291CACE5E3CD536C
-193B2CD36D73D749646E2694562A742A2B5FFAEF4F25641C0708E9CB543D4C3A
-D9BF517C8B1CB1AC5FF0AC934A5F863B48F49AD02640A5A5168ABDBBD0843ACF
-1D45AF2615AB109F2B20A9216C98D2E10EBB8A20B96FA2E88F471839222D2713
-DDCE0898C3740D27093A1A5CD0E766D5A4D1F64E598B08586102D2E7818AC532
-26357753573416B46DAFC8FF3ECEA87F7698B7E28D3A9D834447FEA89F1E8626
-459B4D8C4EC9EDACEFEF2B3828368BABBD24B2EFCE5F5AB64DC6E5D604BB3D4D
-A5A531E15E586C2C9D2B2E1E6E9C384573F613B6CB2EAEAA987DAD1D97C6A67A
-E1F8599FDDD51C1E0313A3FC8A3DEE990240415044F3E9140F729A2D9EFB116E
-1EABFCFEE5D3E35951B0B3BA72AFAC855CC38B081E0F37A594AC1B893D857362
-CA79723689F4485DC6104D42CAF10014E54403EACC7D6FF7984B92112D64E614
-E4ABD1847DFA29C193BAA452AF268906710001A965D09D61F7B0E1C17B8677BF
-AAAFDA334A797DB064E2D6619B78A52A53CE7EBF4DCAB73DAA9BDD11882AAE56
-EB7183571BD90FAFEC8994A220907482F15C0B427DD8C7D19AAB9B9E2DC8D383
-56D2B1913828EE5A6D7E2525095E7F88D75F53F50681A3CFF4552F071A2FA66E
-DF5D720C350A22B88953BB78935A1077F862960845888E475A6AFCB44432D221
-59D3E6F6B29DA905DB620E4A591FA2E484431304FA591656214CCC6A5B9B81A4
-18B73683D6B29E475A55910C74BC7BA5B69C29EAD6FFCC2F7E3075F77FD0F3EE
-AF907A3492643FDE9BFEE4B37213636F95C7D1CCC31E6091719A29CAC5AC310E
-6714F7E01F2874348FAFC1319C5682500C984C196084477C8902CE6885CCC0BB
-3032574229AA3BDC6D87820A8AC7F188E2E4697F97B759EC7588786DF0EEE4A0
-ED96E45742241A963A73990909652694E69D051D5D73B1EDED01B36FDD5548BD
-1CB45F2C58D83CEF62B589A27F560F7D5F0D00BB085D4A29198DA348DA836897
-4B372D47F8E243EAA64B7C07CBB2C891AD658359FBF6A3805200A82926961D06
-97F53B24512519F6381FC3C0BD6C06E1B79FFE742C7E96835F293CBC795A2B7E
-F74A3FFC97711A379028D717328F564EFC744474B5B665FD2F77C3B946F272F2
-F380E617B9CB01527451701E3D84FE0577AA148F9879BF64373D39B081A8244F
-F1C0791DF8BFB0E37840ABED4DA873648F8E37D5AA523A6521551FA262396CFD
-03948DB6C3CC69F92E53713547A86A8FC725C151BC421DC0B268D4CA49CBA972
-AF2C0B146AD29C903D0915891167FCB8647EB2B5CF9C326AF276F633392022FF
-F4D48A4AEEE8480FBD99AED1B9983A9789CB7B9F0FDF68E2980642808A4CA6E6
-3F58D8A32A49C3ABEA36465F058FB7EADBF4B5E390C0482B81A151BDF17C324C
-7EDC9268126AAD4E0B75B626FF0CE8FE8103EDE6AB1C9C5976D2C308ABD0FE5A
-F4290F893F3532C2F2D6F8AF7D88595859031807E7A7EFB79115CDA7AC1A3BBE
-F151135BFE012872D75C1AD3B738FD8377E2FF25C610D463F46630F9288F1A4A
-224638C110D73302CA98D973011F561BCC890087BA0AAC381AB725ECBF902B3F
-109318F854D56E8E40EE825B828259981FAC0980027D7A874B6B2D77BA4A21BA
-DB443AADA891C5EAC059DCF0D6276CC7C23D1CE0104F1FBD10CD49C73AC3721D
-DF358EA83D599CED87B42BB55F83623B78E1A2A15FF089BA5500773A0AA2A36D
-020F8272EEFE118BE67EC135107EB89FE8ED17C27B8C8EAE93D496A1187D5D59
-507DB228CF7E723A21B36130EF8CF41C289206AB7B3418E5751CC7DD4B20D0B9
-EEA3BB37EA52622AE47B9D6D2B8999178AE01DC21CF1410B3D460352659D5FED
-E07B07461D71B0172E31D31E386CC73501A817409A8A2417EBF6CEEEF26A9A9E
-261990AACA42378302E471C83746724FF16749583DD4E0864717C7DEDEEEF1A7
-051D9D2DC642EB952C2E8A2DAE2FCB0D40CC86C58DD69A26AE12DF2E3F6E3E80
-6F356C4837B9EFDC535431A0CF7D9A8F2D400EA4FAF682C9CF292B5E493AAD07
-B66002C7F1434E5DEB03E6367E5AA549AB1517D0D0461D7A54009F1B76A175EC
-48728A51FB53F136A562C680CB7CD2AFF19C57F6D9E98108C7248CBFF6B12111
-7D860715BDEA90FF7749C0484B276801A06A28F10FB43C96C02813C56B8CEF28
-D0F854045313D422C3214F72A668758EEC05D14FF8E8028665612BFF7F863FD8
-D24381E05BCBF7E62C2CDCEA208C5CB2DE777189008AAB0C9C852273C91D3DF2
-47F27FE8EE1BAB0C6D558736FE1219F4EBBEC5BA57EDE3623A7701761D966B6C
-70B54BC6A98D982BE761BC5B03DFC8F863080C51F49AB6CD434D8E662421BA75
-7F44275723AC782F76EF1EE56D2E3BAEB2B42AC4255C89116DB694986857832C
-EA9AC219445CE19EF472999F5981E231A012BD95D1E8DC206AC8508B23E0A40C
-2FF90E4A3AA64B6642FC67E35A61474EE2CB5B92075A8D4CDEB1E77CF0CE9074
-59D4CC48B769261C338E6CAC537B413503F12BF22C1688CF914DCE5111C1ADE0
-7E54B732891411FA9F9C96413D9C5E2EAF7656159CB4B67C5C98DF2C49E4CE55
-8C354F46A7BB37BEB9EF9083427510AED4C599E1189DC483DBB0D41CBBB1681B
-467BD8385E25434FBC7B109A65AB059A17DC1C09A98DD598E149A3782B16BF9E
-C38DDA8E3B2CE11D15121FCEC1C0C8DE4CB9FB31BB79590DCE07B1F7BF999844
-F64E43920725180BD5C234C898FB937FD7A73F9FF121943516AA1BF32FFF6BBB
-0939EC24CAC3E35B00FC74C513B7417EC3281E30729DEB6FFB1A4EB2D27FB411
-4F235D4AE3355ADA7022D5CEDF6D4E8B58F7DA83D74DCDDA8DDF62A1DC791276
-9AD995ECFADC7B8FFA486938D362417D91F967ED33DEB0BB9FE3CE014F0A3381
-F19F21245FF63AE2F4B054190FF07B9865E27C5A7B2F845FF8F2051451B5C139
-2A64BADBB0642DC195A630E60915EE593DBBD949898DB77D01F00DDCFD46258B
-170799D67413C60E224FA13A40589EC4E83E6A205269C414709C832123D5CE6B
-466B7AC96E6C004E956C8FE45FC2EB1436F6886D3D8C8758B633D4F923AFFAE4
-456B78F514F06D159865718BFCEA50EFA6B2427C4D910CF94A0A1E1B4E681E8A
-B04526B8A26C81C84882F3CA82AA6AA918A5B650A7B2D984F63241BBFC7FC4AA
-B66EC337AAEB3FB2B9BBE21F869F163B70C9A606806F2AA087752722DCD3996E
-83D8A84F3C426F22E28AAA9BE7B7A6FCF9E35D83ADD68124E185704DB19B5814
-300314D885634EC4144D0F40F966A68C54057E62BCCFFA6BAE055A9459B5727F
-5BD5EF17E1E57B178BDB71BDE4D1CE32538AF8E34C35EB730A141A2FF7065EC7
-888F264CFDC33381145073FAA4CEE61CD7B1B5D05F5B8D66F2CB1D310264325E
-12469774B1349BA0DEA910FA6B10DEB3870162A252CFDBA30062D3CD970B53A1
-FA60AC96F0C91FF297B8D2247A4CD0639793E9EE96C249AC5ED1D356AD9DE548
-F0BA2CF1D009A5D26227C0BAF46D473E4DB43E635D3FFC142E7E7E5B7BCFC279
-C693A75E9F9326B1DEC5F8F9A6591CFF5B1D416B21D39BDB3E7866985685E4F4
-6E81512D64E3FF3CC3EADE6A3ABC8860EC1C6F57ACB5436B744FE3B87E19172D
-4E04B39AB7D4EEFC46BBA1FB8C725E08394AA78CAEB110151D405ADD73294997
-B494715CBC8FAD279F384B2651D977592824BBB053517155875FD377E02C67F7
-2C6DB8214CDA4259522FD96249E968131F198FDE65207D993D319324ACCD3496
-1112E84E309312396F405FA410C35C54D5880CEE0EA703A79CA6B141977077BA
-53DE939AA1AB8141A2143FE22A2E843F59208A61954F8413914A376E5F8B2988
-DEDA23CC0821FF29ABEF5123E2AEBBAA58ED975F4E617676BA152D13C6DE7FFC
-8D6D91B6F6FD6D1323A58E55AB05147829721FF633EADB94674038BE9D91E149
-5E1E995819756BDFB3D49F4C8BB82066646B6F6AC6F4C6C36666AF487216ECB8
-2E9F857B548422A5E6999658DDF7E3E006C60DA897AB8BAB3C1626E117AB48AC
-DB47F631B4D20E1DADB776ACB9B8FF37149CB392C561CB7232D9695DF87720F2
-75FBB2FF11D84B698631E75B40DEA03A5FA20BA7DE23C19BC699DC03DC0CECB0
-7CA55FE59B57CE5BF4AF9AA199F1C1FE489358454F2B467168B7A67B958DB736
-7089B0236B120E910D4ABEB482DA536527F89D54C2D2E3E1B9AC27BB11F6E7F6
-C5F649E839251083189993DD72C9A0CDBB1696D456660666AE2B6849CF6458D6
-5CD028D7548460F53D570AC00F76E058D112BD595A346530118591DD7A3B806B
-10726CAB360F7AA1DC2F39E565919818E593F806CB35D78A60A1DA6DE4E1DE91
-4A97CAA0876D73AB8E112FEE624563B2EFE5DE00EBBA9DCE9AD3B3D9EBEB5A17
-912EECD7F4AAB721F2C580451FADBF4CE114E6B025507AD7FDEC1A50583885DD
-EFC60872236CCFD4DD7CA1225D491B6A1528ED20214740CD51B9BB4432979EF9
-CEE142303226BC8FD2F39A304836C45DC5DFB4A507C7AA63ABDB0AED0AC0E5CD
-72F5FDA0F0F344A0ED6B5426CDCC3AD43728F12CB790E400D7A3696036DFB35C
-01B43BC077881798D39CEA3D493FBCDD31782B707E8BA3AD4144B61A495594E6
-9BFC27F3672C84D5C989AC530785A8E8B65975FC60BE99D8EFFF604E84402320
-9D9B6C5D1C522CB3D3860993F210E75DCDBE564DBB76DC0E7E1E3B953BAE1912
-9FB37763AB32317C8B70380531811304EFACF482DC089223794EECEA292F5AE5
-28E68D248059E3C52E32D7BF356D4DF6383791D9564B7EAF6C8F8981AF3258A7
-13FDB9E0EED9EF9557536CD4B51D01AD06C29534793670A56E920E27E6FFC4F7
-7187E86724AD81D920FC6C7DA8BFDA1E7E6EC715B86D2098F1DA824B86EC0EC3
-F30D41A53C3EB4AC2436A98DDE15C84D2EE92363C3DADF098D4772D587250A6C
-CBA058062AF6ED244A3F62EEC0D55E33E73D9398822F78E6A82DB7F143EF9451
-D6EA019100F8B7D9F48A04F400BD0A119EF6882A3AB2305BB698BAAD4143FDE2
-CA17BA31187FFE046BD524ED38C612C111F8C5EE0B0DD2C78BB029D299531FA0
-6E689C12085C64F0237AA7DD50ACD43D648C1FB893F811B49662D6EB5417D713
-3711DF874BF56ABED857B3E57E044600ABBBA0789E18791A565938D22AFE6B74
-709497B58B544238E93F339EE87F978E274FC3E34BF181F363A2E68E9453E722
-D4C0BCCBF68E185CC80D9FF0DDDCFB23A07E27DE63CFADB9CC6B817637F929C5
-26E3E4CBB0D9ADE0F5425C4489BA1B6ABC00F95BBF31137ECB0DA2CC13DFA8B5
-D1107BED920C8FC1021D9A205A5A18E50CE348B3E225F8BD003E877CC4F19518
-26C4B789B2EFC830DFB0C37824D4E08710D66CDA577CF214CC2A5CCDBA5F2F6A
-1CAA6EAF7ED6EDE948395BE9BF35679C870D9AE357A14F5C9FFF6B4CCB0FEFD3
-1FC5A39963DED92072FD8466E99C8ED39DA0BFC95E02684527F824F1515A0C25
-B2225454C1D4EAA93D136E6154FDEDBFBD3158E03A3BCD6DBA1CE3A4CA6EDAFF
-190854E54F95506330CED979655CE299DAE6E452F47DB46CA707404359717DEF
-824A58E00B18DD9544A6AE5C71A7668444BF58E4459D70DCD858519EE0954B96
-89994425DE1C589E8ABDD0BDC620C4B6480B88A4036821F36E01D8D227D38101
-559C1F7D8AA4444F99A581489750B0C8F49842F2B30C5C8CBA63342D80C7FAD3
-DFAA487FFB7B687517392EB1F8EC000177CC362C41C74ED549A130EAAB1DC63F
-3C2A7FDAFE54A88EC34E12A31B2F737DCB571E6A41BDAB7F748FCAD29B09CDFD
-6E05411A6B9FF58ACF4D043C80D9AD358FA3CCB3B055A7E706035BF758B6BBA6
-F0A17E9199399E087F610FC47FC34F7D85757F60B072A70E71625A2618B2EEA2
-7ADB10AD2F7ACEE2FBC62108C310CF5F888A630A6602A72671A90864285C5055
-E6B4CE87C4BFE5DAAF0BA3482E82E43A642599D6D7AEC3BDCA5B08DCE0B8F6DA
-80D667E0F3278C1DA4C9595B2B9BF54A34A1583FE784BE77F0AA68B84469131A
-EFFA2D07E453CD95274C676BBAF5DECE37E8C8867A825CDC389EEAC1DB19ACB0
-46C9DE0CA047261D2C716BC8492B67C0F11F5E8D81D41CD7404D5A721815E45A
-D975CA2ACAE72A9D28F4A0805DE62FDF8CA197EAF84C4805AB023E560582732B
-EA2C7CA388E6E014F2902240BFD92971C517DD77CB50140A0064DC656B57DB6D
-F3E2FFBA815B7D25AE897D1BB216EA81AE4D805A128088FE2C1EE89E8B7DAD49
-6C685C90FDA11A6CDD218E70F29CC2BC73E4DA9635A2E8DF4E6DBBE711CE4EC1
-3EA2515CFDF9863E61495FF691CC4F7D8B454CFAEA25D519E0162A16A7A4E66F
-683723A7166890CD82A9B6CF3141047B710D11969A4B3FA88D2903C38EAC7CDF
-34731A84A9444B3C78D0A55D103528C6A1D881373BB3DCB62909642960DB3052
-02DADEDC87279C43F093A456FA555C06375C087F4B3F925B3000166615D13BB8
-632BB9D486704794755E60E881748A8A9270DE48163AE68FC06BB8C10E9A6C79
-4AE5BB01AB176F2E1B906C36FD451CF2C3EEF8E0B4BFF22EE2410B5617775567
-7E6A4AA65B2694D06EA0B744C5B84F67C0B1FDD782090CC04E4DBEFD7FF5C4B4
-90D77580C624E5FFB419C361FCAD3D0517263BF4CE5B2E5433F43DE272B173E0
-2750467042044471932696A0E10A472A67F9123B0B26518E5A827E0F5107901F
-3B6282947294F5D8398DF13D9FCE3A11A91FB989F931A367DB0F36C775D3FAC6
-45C70263226BB02201E0975382097F2C8F60F396C64DC8FCA851118B24349EAC
-9C1E1F9BCC5B736C18DC45521B61352A2AE120D3B9744DDD81FE76A3EEEAE8A9
-53636CFB1900167CB21880E722D516725A011669FEEDED819753B5EE7C30F3BB
-0FF7822CA48AE2C55E6135672988C94D7B84E92C99067D97AE68E31DF1052E7B
-D879B1339F3D4FDC48B845D8D1D23526E4AAFA6C0DE7997EE1076C8722328C52
-F2F801F0DB9DD243630078C62D6BAC2F725D85E6FC97CC61E1B87A8E2450A0EC
-EFC2FB89D4997195DDA282114955403A4EE7B9C4E0A37DD2A4E994ED3039A73B
-5D3CE6008CC86088A1D7590F70BCD8101A37C8E98D410803C1AC36C815EBDF4A
-3E4FDCB4CDE84D43C422FADE645B3D70D51DBECB5456C017D9202CDEDC54BCF2
-AFC541D0A29C1988549850E11B9F248B9FEA1D076A9129AE6868800316559DAA
-68DBD9D6BD12E8A6A60DC85043CADF74D0E5A2316A7106A2D7F5EDE4928CF873
-3A3F793818549D6701F9E6D82E62BE5ECB4A50D233756FA3F32B38C3B022BC14
-AA4590C99769599F3ED95E1FB6C681A01D8E1FFC2876A6ACE2AA8C6EA982BD47
-04CD2AFA239E645281892995958494BF2CC5FDCBECD3AC7B72AF52584299E6F3
-27F409B7DC0307BF4C9F11BC280507E8F320681C7EB4B7E3956D387CC181ED84
-66E286216900C6DCBA24A6B684C7945DD8CE980C66C1CC5FFFEC14CF2AA2B4C3
-8281ACBD78ABE1EA431458C5F73D100A43BC4C74C4BFA8B5C0FD732D78859ED5
-3FFAFA16CD4447BA7CEEF8ADA934AB62824D85D3BADE26A474F6C2096A77A289
-01BE53356ABE54A78CF1A30EE47BC5C3ADE777C8108FC164FEFD7A5A63518D14
-DC8676560D62083AA50D7E4D83B81EA7DDDB1473A8F4B350C77D70D0CC4203DA
-C0AB4958C7B9821EF0714364EF2DD1DDE2FCAE7CEAEA203EDBA3F93CD5B8B35A
-D8D5AA2281387F82C04FB653AA329DEFECD72254000A30FFACA9A23CFA6E9B3F
-669732D9DECEA6E025F0AEAC902AB785B6C36AD5E1BFE474BDFA4FE0F8701BD5
-87A87AF692F607ABCCDBF45C7D801A977F425F379E6E4A745594B2DD3F90BEB1
-C669B3FDFC7D78399F8C5E0FFCA3118A486BA8720034AAA6CAF7348E04D6E7AD
-A27BAEA87632B7B5A6CD8F3E443A43BBC47F7B7AEEBAF4A14B5C02C471F72FB3
-1E133097D10E6A4ACE1E1C7172CDFC4F65E95A7B71BD0121E1C03CB92865BB2C
-5FD0C7DEFDDAA35943B8D4370FC8EF4C67CE0D94B2C8A6044614625B610359BC
-DC65B29EA1267D6283375F64EEBAC282A2415A9CD48F16D9557BE5E71D9A2824
-3A85668D9F89B165CA147E25FA33AA9713A3337777AE76BC8F6E816CDA5F3107
-898D34A23EA13653E161F3F6F8185F1DA2B0A104130B663AF775B333394637B1
-010784D6E18AEA9F738A41B6E9AF1FA70098A32414D431E391B75FF2D4C05260
-4BF53AA61537978DBE814ECAAE7DC49C705538A3CD883A1F5A54F3FF78FE39A6
-1FE40E8E38D9AC7C7D4665CA341CD0FCE194DD5363A597B349D1B2B0C1F7ACD7
-D58ACA50FB33585996554585EDAFDC55EFAB2CA1DB6D64075FA49BE540CBEF4F
-AE5DA55DC54B2B41E25621478D4AFCAB32D35FD8941528226CE6F5B646A616D1
-B2A42A8F814F83D486B96366B6551535143E06C25C68BC5AC2EC5E45ECC6B9FB
-090DD8A40395C770760D0DAD3810E6D7BDB4FD42B2FE15F97DFEA924389F459B
-71FC2C3ACC8D0E5B20E51F31438BB1B6411DCBA203188EDF46A4A433
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX8
-%!PS-AdobeFont-1.1: CMBX8 1.0
-%%CreationDate: 1991 Aug 20 16:36:07
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /fl put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 68 /D put
-dup 85 /U put
-dup 88 /X put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 118 /v put
-readonly def
-/FontBBox{-59 -250 1235 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
-7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
-EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
-7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
-AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
-E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
-4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
-5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
-611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
-D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
-EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
-35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
-ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
-7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
-C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E42779FA15EFDB451F
-53495CE8EFF239E4EC442E1439594549D45F5276F93D496C9AC712D762D0B702
-E894290BA028837304AFDDD8BAA6564E9DC307A14A7A206550FADDC7784DE3BF
-3390188BBCDDD929C82B1D7B529553BA75ACF5B385D31EE3902D96B2B5DDFFF1
-9F0F90FD791E54128C1717F313486896868A34FAFF22E23CEF046D02C147B147
-C5129E21B6A4D0235C6987001CD70C578B2E1221AEEC83116144C66FC8A390D4
-83F72487347A5FFFEDFEDE690DE6778BA82BBD976A48798F33EDCFBE08095B85
-A0ADC3447CE01E563CBA1B2384D9CEF3C2ABA1ED9C47FBBA5E59479B7F07C4E4
-870CD0F97A78A47E865E6A6A3B7CF7C54E8D80DD98A1433CEFB3E3B5EFF67992
-1788C44C04490B1715FC88FFA7732A16A20FD23927FC3AEB81F1DE5A761A8270
-9FD8D8F4F68BA0FB8DAB4818B3B454B5A7B864AA7041CCAD8579E4C8C57774C9
-E2672491D9DA6C13A69B3CD5F2B5F726CDC8E69A713245E7792A413BF0C31C8E
-211FB7ACA96B9F1DFE53FBBB45E19A0F4F3523E875041659DE233850F1AA60EA
-14B0D5BE09E41E1700EF68FDB99F60B07D89B7EE47E90D14C857AA1AACD8DC62
-0461A08E1FF6EECA003B3A853B6E75317AC141146A6C65BFA7268007E139D9C7
-ED3DD944888331A595B78D1B0705B75F29554A99425A33772B8D493632697CDB
-A9C3585E8575ACE0A83F088B04BCD02731CA1C3EC7367FE60C8670A33040E160
-7D88225AC0929A213CD719E5DE3094A2583DFC59080B032C2207DAC7279CEE40
-6C79124ADC76F81C99348BBBA1F463919E60D65AA7A2D47F9C60C5D951FDFF70
-62F711A8F1FDCD8A755FF94B13862ED6286A7A24716B5E7EF799C127BC446533
-2D251123FD43939D6F101A72B75503F5FECD3116089C69BFEF653251707D8CA5
-18E214F175BD81448B657CE4B0E428DF641CD62DB4703241E7A07257DCC82579
-5B67BBD28702BDE8F705CA9B27522EB727F3D2EC6A853B8912C5EB0494BABF61
-61B79B132E7BE0FE80FB52F82681F7B3F59A9679930600AA912C213D60FC571B
-48D6348132C0D9FCC66375CC2A146DAA30901BBD400BD01DD873C3A1DB05130D
-9DD9E04B964023F0C01C9496EEE01526F7DBCBB4DBD567C2CBDC5BB6E780A747
-BF4D7FB6B227BA2351A4FA4509F28148F1B28CC73658CBC5B8CCA0CB34382AE2
-6B72C6D5001338D1A5A91FEA28AA539208097797D4ADA26A6DFE97A8E7069912
-68129C9129E9B6BA40CCAF95F6F1A76535F2530C03239B927F4B90DD4D9FD6B6
-4B9570EA4BEE21B15C25BFB2C42BD4B93911790E17A1FAA9D4843FD519F2B573
-1DAD07942EA30F97DD15C0CD5F51189F248964977B0CECDA01E9747B35BC30F9
-85A88AD77145CAEF05856AB7F8E27CE4FBC269B493C8B907255B27C9004B72BD
-56D93848AA456D5DAF2912ADC65BA79D2F6EB7B5CE17849EC0BB2999E9BFFD69
-27D9749EE8CA9AB64AB1BFAAD6E328160D82DB759EB8C79FB63333AD2D0825FB
-6D6CE77608F71E9086B8AA2759C3FA235F236814B85ED648AF740A5DB4B8F34D
-E0548BE8CFE4B747B05160C698312C91E21F4BC6C5D016CA79D6468BC9A42DAE
-E298467593E2FBC6793F6C1B66DE0F70FC0F0B5E2F3666DB2BA7AFC1F639B273
-6CAD24DD1CD7C5ECA2B33698009F29EEECE97E52AB92ED5FCCE12F8A17821A23
-109316588AE645DB82CFA3D20D0BA7D83270DD17755D39AA391B49E9E2C4263D
-07FD503E1B21034D9971164AA80679A67577B9D17BB30C2E68D544E9F9E52ACE
-7318A141C3ECEC36E78A7A32B00A630DA61A14104B881CDE11E5CC967A4F50D8
-84B11B3D0B6AC6B17D95139044D14F1A8452D4E876675E47E4274BA805226F88
-0A8921F91341C7FDA4714F790A63DFBB316934EBBB9D947EBB021359CBD79C11
-EFCCB67C2D871D24E1617D8C8877D5AFF847A2164FE7A317EEB7459934EE50D9
-682D84592C6D265D2E486593C8F97C1B4B1B1F2841A6A6B20EAF18DC3005A6D4
-61AACC2DEBB2F3E21F308201E90DBCD8E91F3E7104A2C987324797D52383BA34
-66292E7D3A3F414328A9952E49A085437A00AAC3F2B2B3D1401C80B3A55350C3
-DCD55E23DC095AECAF505733A602E2D7E632014B393A7675B19324690DA682D5
-A9E4C7533D708632B5C7F886D681CD958623B760B692B59F6AFB4FF7327254FB
-AD45A9BFD2B86BF576DE1B857238C10B0A60C55EE1BD2E6B23068E354E369E5A
-43D909432F01D3EEF018C87DCE07EC838DCB5D4F1BFA43C87B88363C7574EA75
-0B8C4662CE67059710052A99FB8C59F9A64873E066FAFE5AB6E39AC9E96BBE84
-D6BF072D60DDEC69091DA00EB450570D2D41E5BDF25BA605C906D71230769024
-99A0B1B89ABBBE5EF9A1566F489353F5BB933DAD776FB2419A0EEFA1D3E09CF6
-36B3E534B1F997B86EDE70AE21DCA966A74F0CA292706879F57CFABC2D36B9E2
-A66222FF70B41DA4E80CC87D2E0836EE48C4EDBE3E00DC0A61768F36F46BB15B
-63BE40981C80EAE3457DF22DD5381AB27123DDE774167D39F52B5E04BCBFED56
-D2AE111EF58EDCABDC35FA218472A8EE5FE2D92A346A3BD83E757838EF1D33E7
-0D4CB4774E13115CEAF77069DDBF1EEAC7F8DE102E9F88530ECD9885C8FFF78E
-289EDE509A3AA90906AB6216C88A44EFEC69F29DC2182601F9E6B8E211451012
-75869E10ACA6BF24D090DE7272F50325A84E2559DE77E14CD4FA5B9697B7054E
-9B0EA281B158C8E3E8D5861A9CF983615095F83F766DD92856E982E732F4D989
-60D5586E89218E40DC21F24E8C106BF35FF4C042A120E21D09BD389B3D6D957B
-5B68B758F70899FD22C4C7EEB67AEE7082BF286D5A08F5BC0B55D09613731E93
-AD01B02FA93832DF8E5FF7F15B2A25066CC497FC74BEC590EE442CE96CD10BC1
-69837CB924BD3D6CF5133298C6EFA43E194A7EBD970D93AFC5F21E48A2F005F2
-FA9BD18D8CC3493AC92AF5B80DED65CFF97417BD39CE02D7F04015BF6B87F873
-6297B9BFDC598380A462DB29028E3AF8568E33103D23D8DF87B70E3E6E6C88CD
-A6100596CE4B54D21D10EEFCD9C55B4F354BA75E2DF83061CE3AB08B52C6719D
-B2A601C72B9EEB4029CCBBA09589687353DFF4CDD000627A6E278CA16168B18C
-2470D1EE98959962C8D09DF2BBD7F9DBF925159B5036435A2AFFA895325311E2
-67CD2FDF6E8837DFA80FD49827989F62C798F09DE4CAEC4C1C5ABD4F44A5D687
-42066409CEE7D70A8D03E119FC3B0B416961D48B096402A5E05F12C169D09CCA
-449C8F337C553DFD075A61421643434A85D3E4FBDD8A4898A28523D9BAAD89A2
-407FE142489B2CAA4A6F9F3DF4B65A5AF8F604ADA3BC0B12F06390199B072535
-C2F3E3A1181AC4C7B482748D252BB2DF8DCC0EF128A40366E7F5F28AEF18944A
-D7D732CFD01BBB6237DB50904BE8DE727683B2EDE86A47F8BA7D2F9B225F3C18
-88C26DCCE222ACC87DA6F714DF90E9EA0FDF82C20075C0BBE647CE245186F3D5
-FCD2EEFD695309FF9B6F186C8729AAB72AC012915E824E1B159647511B35F585
-3D9B14F58621B09E7C41483372D75C1D2E9019BA212B6345E56C279E5D9BD852
-FF009390D1ABDE89A4833713D8ED115FA95D0A4CBDF75AA4D13A106CC3CB120C
-28B65473465236BA6E9C94F35276FB6EDA06715912836326E4C1329ECEF1B9FD
-F1F8105DD1BA2D126C4C55B3F73F1BBA4F3200B22264AE9A927EFE84D0BBC66E
-889A9AC9C590A396C82534FA204EFE22B5207908B99FE27D53F735126EB8A01E
-C1A29C1DDC19DCE99C94F89FCB0923E8D3AF48D9315B2BF4A17E98F2224B1616
-DEF1DC0B615F737D946F8830C474536F64917D1238E374C3D77B101F6F088D9B
-09C6BE45EA2F2D1E85EE4521AA53ADECC150BB31A4EFDB7B4F221EF7CE2C6746
-63778794ABF6131F7A4165E154FF3BA1BBCA13BE1C971F77E1C3A1C5A599E9C6
-799FC88B482D1356D4F20FD98B1D2B5FCB19A19454F95062D359D7B3520EA793
-1BEB5E79C549847F8E9C0B47F12F0DC1231B1295683D18BDFF636CBE1DEB31BD
-AA65E8B3E2E3B01CC99ADE954EA784CB987D3D6EDAA5849A870D21BD01972E19
-A8422FFE663636AF0A25F2DE3134293FB78A2E67A3688ED794536FD10277C022
-20BA19F17A05E3C5331D5B96015935699F4F0BE6E27DFA02A794A7BBFAE38C89
-944484CD701F805B70D33EA785114B8B8BA6B3BBEFC91696FEA9B9AB3A5A1894
-1A6C32A5A727F6D1989912F3452C33D10B49E3DCE9BC18BFC60AA57904D97042
-CDB02BB20A9ECFD1A387B7AC86E90B5D0C8311086373CDE82A9B5F5CA5A73834
-E62E3675ED5E24EA04C7DB5015896E00DB5B6097BE07E6F8F00A35BB80A1FB6C
-DAB3CFBDAAA517E2A63EA322B2BE56BC1FCCA14216671B27454606EC045A32D0
-B3108E0B112AF1ED1CFDA1B67C270F5756567D948798C099ABEAE7A6A04BA4A1
-A83122D8BFD934B3F9115CAD48C153C9A29DE035FC85BDEB816AB3B04DCA09DD
-1DA3D1F854AC203107C66466F0261C33007E7AC824CE3EE77DA729EFEA225C47
-C6AF01D45C0B1722A8661C3F5CCF865EEB5333BB39BC7444A363C4DE53BC8D56
-066DBCC68A96AAA64C00AD08772B0209B66F00986788378763DEF5A3E8CBBEEA
-0EE6554DADF6AE73C3A027E8FA95D78FC367CD9755B8BF0C5CBB1850D0DC2668
-4740A6F5C35A09C850E13EA42F83B1FCCEEEBC1CDBC869D376C81D97B9F1B605
-388A190CF8F796DFA121B8EDE0134D42A8986CDB6DBBE3888FB5CF42DD2D6B02
-B5B3D3A82EBA1F0029
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 50 /two put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 71 /G put
-dup 78 /N put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 126 /tilde put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30
-4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632
-BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B
-041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721
-3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762BFC796733DE9
-AB6BF5E38D819DAB1562DECC6E6F542F9779E2EAFB16903EEDB2138F37F22CA0
-69CFD3ADA1EEDF70596D2D8C0F82BCE623594932068AB28DB6A6811D16DBE1ED
-F496EBFE5C67A99A9DB90E2A604D5EA99A84F330FA30063FF88DB12AD6B230FE
-FD369E8407D0968F60DBBFD54292CA1A05875D1924C861859F55725D479924F5
-493F6F766F0006CC8063CB4F40D4A97379E3F7D5DE1DF8D6B8DAF796BAF20005
-4A291D8AECAB748BF3877FF32265FD40C047E954CA5176CC9208311B1AC4D27A
-258E5CE7C0FC38E8495385F17A0AB4E6D1992CD95130277E89B325DF1C38D5D5
-3F64AAEBABB72E05A7AFFC442E24F7647C43CFD6033F0C06634B105E00658E8D
-07B425F413FE8FEBFED224C00EDFF223E7FF32A012AA613D33FA3F899FA41FC2
-6015140AECAD0383B4E76D8FA5C34C62BB3F73049C1FD09BB47AE03ED8A8630A
-AAF498897DD58D8A4D0AACA53A35977DEBE827EEC1F29A790920964A82DC87BD
-15BAD40B6D60802CBFD4A2EC69D822C800EE3D632864C64ECB10A80299970F69
-17FACC4DFB492E57B23AA747E8735C5002E0E887F92D2F66850416367BAE660C
-8FD2266F60DA6252A62BED9FBD183F9CD5585D35A205E2606F348F4692BF711A
-A82E86531E4CCFBF6609C225A55326CDFC300083A3B8B7FB1101854F3AA82277
-AF2E56DEDF352F3E77B9FDD572E889A7B126F38A4D7F8ACBD602A2BCEFF97E78
-7B5B031059319C73B9F76F16D35C17641F8ABD0AC201A2870E784730B2476508
-45B0DE3AC797B403EEF416B0BE5F34F1DC876019DB7F6EFC1547FF1BD817D976
-5656C851E86EFCB97DBBD49FB6BD76A78FB4FFF3D4EEA1FD1E064903903C3052
-82835AEB01BF0DEF704C29BB8A03A8DE4F2EC07D8AA8D5AFF6D4F3329A8E5A76
-05E89517DBDD95DAE202DC845E97207FC5548BEA9AD8C38A78F156ECF3A70AB4
-91FCF1B91B727B198E5F3BEF20010B8ED26E96B6447F69192A04FE2FD3126BFB
-984ED808F107A3B1DE7774F0B3E3DB38C5835AD5FAD0F8CD061EDA10728DC794
-BDC243CBF68B5E1EBDBA1600931C625070155243DE79745849E487277FCA3DF3
-0BBFC149AF46E96202947944487B5DDE8E1FC1703F81538A6020EC89E332115C
-E5DBA7EB6CF5AE1B5CCFF4655F06333076384494738E730F0EAC5A00B8413C05
-15C01A8D78D1ECC2D2258E2D4140428945165A59C883B67B600436CD5B1E7CC7
-2DAD551B7D668B87E6565E0D382429397CC8EA507B4F3DF40C60E84DEE076D42
-DFAC2FC2E9BF28AB017C29E0A950417377EEBB8C8F307F96ACC5126F9D19D5CC
-62FDEA276D4D646EE024110E62015499DE242442AFA8C2C8CA6E4126F2858680
-F440EC8F58466FE876EDF0E9D4C7B9592AB23EF5444FA95E026F7E8FF8025B48
-7D9083922E158A721EEAED385270C6B29CB4D50B8FC407AF40C5F5D957B2E4CD
-E43484C388D25E64AD67EF75932CADAA6A87AD31DD7AC61AF9837CBC5E43433B
-5E0B5B1129794538B25DF83FFB82837A45DF19385C15D20FDE3CC5F314D97F05
-7CD23994B9770C36235C5F7699B14C48A37D961766519D9F8EE3A70BDCBC6AAF
-0342403AB2E843FC4024E40CB5900F7E570C4DA2A5E838D5A0B75595DF2B8ACE
-6309D58D5C1B09618282A5B1F1FC6CF71F277BA6A6093DCB3B0CCD854C724BE6
-8AE23433C5A56C6203153BFBCD4776EFC1108C13342345C24A8196BC312A3630
-8F91BF9B041CB590120D4C8777A12DADC80573D419990430278F58D223DDFFBB
-4109661B1E57A964841550C6A58D739C729124540F2B3260B115A15E1495A4FE
-409094D70EFABD3992DAFBAF3B1CDF714C33EC6843ECE874EF9A4C2479A9969B
-32A6B95E82BB0E73A3AB037183A5B190C1F99BCF5E9A8B154F120FF51B52945F
-B42DEB8223E37D0D368A0077069510E326356E8592AF1CD3D12DFFBF84CFB123
-2BA7C7584A9CB397F040104A7F3AF70BD29780F9C836F5521D51E0C08A2D77A7
-38D8B1B9EA9377CBF9E0AC2E71C0C7DB75C8F10BE551D3CD64D41B7239549B2E
-9EF2D221E5A0141BF12C3634812D05CD81F01074CFB35687FE76BA122374FC4B
-F0654A02E6F299B005F4473FC1030A05AF50ACEFB15E6C629871FAC24B53A264
-5CA17B0D4A42E047315761EB02C4CB7EF4B2D0B1242CE2E67D1B62FD99CD47F1
-E6C144B6819944C9ADD16D97E590B5BA5A1CECD85CD8A66FF002AF6C1DFB110F
-BE4988CD53F97612047E3FEE1214817B188BBFFCF00A97485D4260E12FE68C27
-E03E42C9921008C24B78BE865C55EDE7B7F9E25D5E6734E4DD45336B807CE24C
-224BDF0BC21479ACB57E7DF4CC115298C4AA0F3D67E8EC50DEBC59C86A00FBBE
-C65FD4684BBB57C3AB0C57FF5693BE81FC118B40344600CF4DA1610B2589036A
-3AD412889977FA8D1433B616409DF38A8B82D0CF473C2D870885437FEAF125DA
-18A003B3706A1FDA2542CEC3A02F49260DDB0D5E20A515C0C8A96D668FDE0785
-F450173006E30B5409812211F81025B9A933F9B44952AAFB5D69D31270BA29B8
-DCB1C183AE74C3D0C48F0B59C61AD0C3B308621E63A322F259B4E3E763CA8D3D
-E280C27B463309989296A884EAE4603BCACF21957EDE23260B6927318908D248
-EE8E3C77BDECA95260901E13C5B5D5BEF2E0C391D3D725ECB675512D1544F3FD
-A128D5E47000B2DF2F0D49FF77331716C44833DBD565F25ED5577FBC909040D8
-CE1575A1A85A307F58820538AA4484B80D8A9043C49D145AE9EABCE5C6B45FB2
-DE5399440E264DF18CC9CBBCDFB1EFCBC61FB339D9F66D3ADE1898FFFC448743
-9328ABEA62DA73B7BF495C8CA7A9F0B6AB7DE17D63445909806152C2333D57CC
-D61296D9E8F56851CE6C335D242C53D97D02C5ACCC70792D196F12551E7FE0F5
-7405BDA1B94620086E14CA498151EC184005996F69AF873BD435F653611D550E
-970F88DBC10E814EC1CDB108891A1FCA836E8635D65E165445A30489B8A85463
-59FAF1ABF818D4425979F800C705A1A78EC5FA411C03003064D779555AEC75FB
-8C9EA656E19417F8AAAAC61CD0343388679A07F38C2B0993D021BD8FFB49C92D
-9D45A58556BF5AE337AA76D1CF229CFF14D89EA9CA756BDAE37563FB27A246C1
-0AA58966C65B6309F2306902CA90BCA265238B79FFEFCD1D9D73122E12F024B3
-687A69C3CAD4895F7C0BE7237C8F3B6B90E99365FDA4172E2BE2C6C3B89A6BE2
-A72905F52658D1A797F45B918B9E8F9DB949625C76BA70F615B8000B38E33ED0
-45234BB909DE7CA5CAC433253DABBBC85CCECF70B5E57FD7ED50E4C17712FDD3
-6943F034A47B66C116D8A229747AB29F7609BB289513E57CFDB53CB9F64FD46E
-522625C48F7928AC40A4AF9F2FE8578B32B71E650D118C0BBEEB5A453C0D5B9C
-7A85821359158EFFE77488468D02095C13E2193C37007CF7BA69AC1498948150
-57B697A10D2E7636D39EB760C8825CF066463C9327D54666EA9A133D766BAB41
-033AEC2EF577C27124D43B4F1B403037E4D3977D36B6EE77E7DEC5EFEAB66153
-8E02C767995E1B65C6C3900B0625E05B30720554CB66296A673DA3D6222E2DB4
-26FE3DC0CE1204F67328DFB647E673005F69D412C1FC32F24190B7C2E06D6584
-D64CCCA34DBB210A38FD94D03CB1C0320597AED024EDE20FD479C89CA56EE17F
-D3A213BCF5FA8FEE9C9362F2DF55C68DDE73F6C8F794957EED0F6B2DD1F7BCD4
-4A3908333C7DB4A2786FA78DC2E4B8B16DC7CF61BEFE12914992652B3AC9320C
-39ADB78E00717F3C56C0FD6C834D156B6D4391FA539C2AD4851C855AD2A40BDF
-8B479FB348CE56839128FEB0A88FEA411CF488C959AF2D03B9A9ECF2A38369BF
-A0C898A0D69875B1C13EE48D071F20AFAEBDB09C5BD325F9EB2DE64C0423D354
-4B17058FC82CC0BD6518AA179609D866C712EEF7958AAE3FDA22ACFF9D939CA9
-FD2BEEC408F16B526903BD5CC3831BF4D7F55A1B6D7E0BCAF1D5ECA4617BA698
-EC18A62BF0DD66ACE6DE648B3E270D031CED116B6817A2159134197B3D88DDEE
-9D57BD478FFFB018D24FC3098B5821775ABB6476CD2BAC2693297B76B12B4D25
-D1F1608EBF965619E62C6E52D93FA52824340524193CE4202D7307C76AF5A258
-FF6CE0AEF6FBE5795F1302A7300F74C4218222F1EE0C9D4C57168A5C1B65867F
-4C3A18CA3409C052F6B639736B20DA21CFF058C8B579ECD5E8AFAE20329B74DC
-F8B81BE1DA33C2F4F66A3B393AF83E808D86AF49BED141156C71FB4BFAFEE8FD
-5DB0D18F32409F035BC5791E2D68A3419E25F2CA07C4B5840042C1641336CB3A
-99482001A4AD383754E09533CBBF56911ADDFD49A0625A40095372CE23CD0CBF
-30A7433A0C98EABA19B78DD7677609900F6924180EBA0BDD4E7095498DA18610
-33A0D1C336BCAF26B18138D6CEF9B23ABA3D54818C08726DF0AC1684A1A6E183
-A97F06219DD414D64D1EA84438844F1D2C5BFA061C7ED503EA63E2D5D38C2700
-92EAE8C698D0B3A298288CE15406223895DC7FDECCB9E02144EF27F452AEFB33
-B86CF15D5327B079CDF2C9D41837457FEAD7FDAEDD6573A20E7C4BBE2FB2C493
-7C5D15430C7E3BF9FC4BC25CBBEFB7BC96496BC6C9AA030449B0B8EDDABE0F8D
-FB6E9CBC51F7FC28B5DCBE502D4B773A0736B5016E9B0CB2F0A3E6F5F40F3F1F
-1C119B89C3CB5A294A54DA36245F1BED8C231B08FA6DF3D18E2A989B6E01A44F
-067361DE404A33C847395584B5DEB00555BEA31C216C21EB481970DCD7466292
-A605ECC2999E3961B95E02B3033EFCE2DD08A59AA0C39EBD1ED69264C5856050
-62F23793D6CFD17BA93CA4AF0B67F8FC6CA8708D5B8AD87526977A86C4F8A0B3
-CA104172E1419B66A0C3478D7C2E1DD7C887396EE00D8CF64A0954556CA12FB5
-06BB9DA386BF5ED9544CA66B6F79D611DE87706BA65CFC2FB97772538FDB929B
-CAAF81F1EDA8DA486D3B6D4E30400940950B25F227545A88D4F9855EC9C04727
-CF5C54297C3085F2F9F0527EAECB549277CD0853177C442343629D6AEF311AFD
-8E0F81107495340A20D206441FCABC0E58A3DE47580E3F2C63818F9EC0C07A7C
-FA63DD74DF7AF66D46AD23886C713D0EB7AAA682DF72DA0CFD9063489A6E1B54
-34DE64546E1A61F00F1B7ED0D147AB48864D085C50FB5C9B69599D9234FBAA5E
-7AA25D466C0C878635ECD52868AC82AF488105E3323222E7928AEA11E24CD5BE
-905195072DF90D2A4B2F875B5B334775E859BDBA1523337EC60ACFEEA5B466C8
-4C1819DD53F3F63954949BA2BDFAB43699C5860DA2B542CDB48C99EB3DE2AC0E
-1B69AAC433AC0CF2389A529768C56B1B945A2AE0A4134FF778AAC525F632EF1D
-685BEC8F8930158C502AC8F6FDA3FE39AC2D2EE6BD00EF6B083672886E82D121
-B74885FBF48E6F12CC5D063FF0FB941F916257E5153473E3A7DA9A0F2B183A67
-678DC31A2B62E3241FA8F930A53F79DB88D6F53AFCE6EBD24EE22903BF59C17C
-B36DA49DD50A959A916BE48990534A82814EF1835B235F33E20A82892C8370E1
-55DE7434136ADB948463CA8480C9B8004FE51B025672BCF3B50E1B3170AE776F
-86E3B81A4D64A59596C397B248AA7DB1C63113446EC7CC319B7CB5C4583848A3
-E1D7A161D00F8C33E38AE4CDBE16A2D03B5956EFD11305C91A9E2D558CD0CF5A
-29BFABACA34B3822D0520E69A03950E608AE76067D8F4A4E5548E4E6773E726B
-37C352CA410740313B4734806FCFF5B5C5798BC3D0DD4184713CC4667AE07CAD
-D1B0000AB134C156D11316BD87695C383A00F281DD797549F75A208C3E596A4B
-8EFC3CBC7798832B72BC74986B2ECF2715899B32181978870F502E1E56732AAE
-79FFC3290E2F7E69327A429355A9CB2B6D5F70E98F94D82C8F4B4A581D58DB00
-D3F5811978BC4AD970C525429839A99E92AE16CD83CC81377497DDF1045D7A2E
-E225371928FA5F77CA680C4CEBA217BAD84CABD9BB68B8C6F8B44C26B6CDA3F2
-7442CDD941D6ADEB041AFD84B7327BC153FFE695E2A6EB3960FF21B9604136D7
-6AA16E075135F5FE571229C34102E0BAFBA0A8E854272E7B5CB7668E825A9257
-E1A71DBCC669C5CDF9BD69296A65E083644E8E3C0FEF5C225590403E30BABF5D
-2A20D0ABC6A11A9A388F267444B6960EA39EFF8ACD46B6BFADCBB1A75A5A7DC3
-3A78B903600647E637C29B43024408E8A64D56E6A0DB6E80E6C5125A7BB1972A
-AE82435C9DD330F815676DDFA0E9078A1F2582AAB6457EC40FE777E007C195C6
-8B7AE97A9D83585233B3BA932CF736BCA54DD9F0F2E96174E259E108ACD05FDD
-0717DDC04605D5DFBA0A26E0BEAD8B971DD48A494AE48A0D9F412ABF47A7466D
-E95B766609FB6929A55EDBDDB33C2F9EE57AC3240909B44B3EACFF8138E30126
-75901B1C04ADE99F2917C9021FC54195C8DC88E0E864EF4135D74538B4731BE0
-B8EC7EC672CE963F8E92D23AD7D78F28F8CBB2551C1E5807ED35EC720A3DEEA3
-0F10FBB4D5C90F1A53043F41B8A5418E84CFEA4DE0A3A06BD24DE67A7F9E5951
-C5858DA19F525454FAD318866825514B30F3CC5F9E4932E9767E3C01379DE9C3
-B8ED4FBF9426B22A7099BD90E2342E2EC431058AC3F8819C29A3BBF892D3B300
-B4D38F8CF6DCB7E60DEAF01AF41FC87A175280C07B61D3948EFFD123C781D8C6
-100DD08998D2D9B62A6B0C119CD7C65F59FBB319BB8DE030566CAE36645FAF1F
-A1F3C9B14799F4A527D45BC851F27ED5CEE5C86916CBCD3AFDA3089E2942B5B2
-FBCA6AA36AB0661D539A165D6B8BE40DD445382D4EF87C1EC7CF66D31A57E8AF
-3158876B4458D06899CE461F2E09EAC2086E95B02661EE17D349D3A2CA503589
-119E2DE92BB0AEF7C819E7E49D8B40E1F5AC042E3C6574D2972DBC50A96EA57A
-7A36D6081406720078015E428161719D14E986D5AB8052CADDC9F5DFA163FCCF
-208F36F5CC390D21A2996EDA8136D36EC04227C8884FDCD4378FD64AE8DD8AE8
-960FC00FF4FD7BB839978C85FB92F8ADF1EFA66CCF223A1097D5F10F33550A3C
-35488FC9F6B5A3D9325E228CA6FDC9D70CE739CEA33CD2B53D26C6C71FC9A6CC
-FC6372C82A89ADD70D26ECC576F0DCFABD1CCA3F6C85C3D5EEDF2D7B99B341B2
-38076A3BC5D4E7B5BA4D2D0BCA028484DB7DD0503159B3189EAF1075163CC1A4
-311AB0CD2741E6F8E5F1DCDC7FA2356B5BD9E5C7675014EFE0F4DBB1EDDE68D0
-B4E7F651FC65BACAE0CBFC8D59920645C9AAE3F0E3768583663432A5DBCFD7ED
-79F27A5570EAD899810C197373A5DBB7C0B58C2B9123C63B949626F6C326460C
-A83B401EBB9D5A62931BE6E4300BD706520907616F05746FEC30FD8FD42E5067
-5DA5D298E25D0070A11471D10014176FDFDBD80951EDA999EF299E0316F8E37F
-56091F787CFC5B0A05BF7C1185017CE1C6224D84D440CA5D63D1E6BADEF68B17
-9071DB6D63A56C257476A624BD0FB0CD0F6BDBC1492F1AB978746B06C4AC558A
-7DEC2E3DDDA09E0EAF0CBDE93BDD0E7D539F089F572945BAADFD778304B7010E
-D088C0464D3E8CD26BA814B35D29832749059DC6D1DC1333B4F02B8FBA646167
-31184FFFC7535B66AB6B81E88334149E744EE1CF42EA82DC0DC891EE1939F7A7
-8C2C4044690DB8EA7C7FF0E0399E1C72B13EDAABC0B939D903556A3CC1A0C228
-4F8577520A8B89D8C80C2A62F598A85B330BB4C5A0307BB7CFCC379B38C08406
-80574755A5DB13E8D899E79D2E13AA39967091B8FE9B9215B217468B8D7A9194
-49FC1BE8273113132305A78B14DA281CF31EAA2822ABF3D665BE33EA96293CF4
-EC7A222A25B599513F403EFBCC972074B9A49917614B81363E3674007F39907C
-78FA7BAE8E1ADFDB81C28F8A27564EE505CD126EA32D7C0B176754BDCA993B17
-2979E4A018E9501481ECCEAF5A145DEA5382AE896FE8EC7B80DD33CD053B8144
-F2BB0548F1B1E489C7953ADA4CEB33CA011AE4BF71B90CBA3C5F719527B059E0
-77E9848CE582712A4654854150F6C739CE5240C4DAA239C85B18D1902D310220
-D10AE3FA1149FC58EB2B936E480749B4BBEB1A9FDB65AC4043EE72A48AF07B51
-AB7F5C3437B00E93E4888DD5F660A210EA954007231C255397328618CA971A3E
-A268C9633D58C1C5B228D155D8F061BD0F9A9390C618E280B6EA8F083D445A3F
-EF5701B4F769E1CEE1BE6DB102CE66933DF57F8D39A7DABC0AC3F19968C83019
-01B25061EDFD2E29AC7FC1AEE896F51FDFFFC0F3B9ED1F5EBB00FA8BD1C86AEC
-CF33BF5D39563FC2C131359A5C669B5056D1B06518AA58E6A18FD999B3197281
-C653E88BDDEC41C5DEB802D4BC1C2D5858178F7730C03C2465C49DDA3CB887C9
-0A04D7C525F93320C8CC3C492326DFB99A55EC7BC860B0BD8FEA308960D4D3BF
-A82C5EF341C8D2DEEB5133B7E4F39B4E0759DFD8BA214A1EED1CCD89D3F4566A
-C15A16632F567924C83321AA092F59353A34551FBA8151DB35A12373F488FB53
-F7A1D1C8E3BC571569B2D945A164868E61344BA82B1CD2DF9196EC6B44954E09
-03F2FB3DEC44B955FB6D59B099826ECDF9EBCC79A99CB52F14DAF8E74CE5341B
-BF2D86819AFC83800BCA6B9B40DC2D8D5C3F1A94945E3134BEEE8D132141E3D6
-075684753B8AD71F3D2685384EED24D9982B7DFB09851BA1C50C0823F951BC53
-2E039CF72CA42AC8FA3D58FC7E633AF9030296382A65803C6CC8E28A6D84373B
-94E47E8DC6406253BFF53396F303C1CA04BF3AF22AE7151F7627173FB87655D6
-F9C15D36D4D8DC074CA7D9004DBE10E9C23AC662E47A1859A0A9408BB5F426DB
-68A4943C0630090E1639B16A9E289C929F31246787ADF5F061DA7BFA1CC2BE23
-65DFCCB6FAF92BF5016B104080FE0877ABB26653361FB4B684898CF0C0448AB5
-FBDCA703D4CDBCA85B9539538461CAEDF25AF85E09328D183202EF479E046C84
-02CEDC8B29A19766AD4ADBC39AF94DBB465DB7251A250B8313A9FC70D0394BFE
-7C87882DD6E75459AC6DD1DE1B6CEF7DEE035EBA072A177FA4E4D11217DFB0A5
-9D4D08679D615034BAF2B3C92FE65C01D5BEC90FCDAAAEB0842113902F83DC6E
-D212A45BA748C6FB3108AAFC3EB912A8C59451088B8E972ECF2739204306C9D9
-D5C2E35AEEBBD7805F000EAE98E259291D6B759BC5123D4541292FC9B9393A4D
-7215D02871452FB02DE816D615B59C4822B5A335C3A61E63F794C025CFF2BAE8
-B41CB92E669C8D95250C3FC45A05478B2D6B7E01D6315E222E22509CEF3275E4
-4435345DB53CFACFFF69DE98E913F53C6CDD0B34E38279C0E7DDD774EC949F2A
-28410AA4E109CC284A5A1D2172218299FDF3E9
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 40258431 52099146 1000 600 600 (dired-ref.dvi)
-@start /Fa 242[61 13[{}1 49.8132 /CMSY6 rf /Fb 134[32
-32 43 32 34 24 24 24 1[34 30 34 50 18 32 1[18 34 30 19
-27 34 27 34 30 11[45 1[34 44 1[41 1[45 54 3[22 1[47 39
-41 46 43 42 45 7[30 1[30 30 30 1[30 30 30 30 1[18 21
-18 44[{}48 49.8132 /CMR6 rf /Fc 129[35 35 1[35 2[35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 1[35 1[35 35 3[35 35 35 2[35 1[35 35 35 35 35 1[35
-35 2[35 35 35 3[35 35 35 35 35 35 35 35 8[35 35 2[35
-35 35 1[35 35 1[35 1[35 35 35 35 1[35 33[{}63 66.4176
-/CMTT8 rf /Fd 134[60 60 2[64 45 45 47 1[64 57 64 95 32
-60 1[32 64 57 35 53 64 51 64 56 11[88 1[64 86 1[78 2[109
-3[43 90 90 72 75 88 83 81 87 52[64 67 11[{}37 99.6264
-/CMBX10 rf /Fe 137[43 1[32 32 34 2[41 45 68 23 43 3[41
-1[37 45 36 1[40 8[61 2[62 16[62 26[32 32 26[45 13[{}20
-66.4176 /CMBX8 rf /Ff 129[35 4[37 37 51 37 39 27 28 28
-37 39 35 39 59 20 37 1[20 39 35 22 31 39 31 39 35 11[53
-6[53 6[55 1[48 54 51 16[35 35 1[35 20 24 20 2[27 27 26[39
-39 41 11[{}42 66.4176 /CMR8 rf /Fg 141[57 3[76 4[38 2[42
-63 76 61 1[67 14[103 13[105 99 67[{}11 119.552 /CMBX10
-rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop -91 -364 a Fg(Dired)47 b(Reference)f(Card)17
--256 y Ff(\(based)25 b(on)f(Dired)f(in)g(GNU)h(Emacs)f(22\))-152
--176 y(Commands)h(mark)n(ed)g(with)g Fe(\(D)n(X\))f Ff(require)g
-(dired-x)-450 31 y Fd(En)m(tering)37 b(and)g(Exiting)h(Dired)-450
-196 y Ff(run)23 b(dired)1244 b Fc(C-x)36 b(d)-450 276
-y Ff(dired)23 b(the)i(directory)f(of)f(the)i(\014le)f(y)n(ou)g(are)g
-(editing)150 b Fc(C-x)36 b(C-j)g Fe(\(D)n(X\))-450 356
-y Ff(quit)24 b(dired)1226 b Fc(q)-450 561 y Fd(Motion)38
-b(Commands)-450 726 y Ff(mo)n(v)n(e)24 b(up)g(to)g(previous)g(line)769
-b Fc(p)-450 806 y Ff(mo)n(v)n(e)24 b(do)n(wn)h(to)f(next)h(line)806
-b Fc(n)-450 886 y Ff(mo)n(v)n(e)24 b(up)g(to)g(previous)g(directory)g
-(line)469 b Fc(<)-450 965 y Ff(mo)n(v)n(e)24 b(do)n(wn)h(to)f(next)h
-(directory)f(line)506 b Fc(>)-450 1045 y Ff(mo)n(v)n(e)24
-b(to)h(next)f(mark)n(ed)g(\014le)762 b Fc(M-})-450 1125
-y Ff(mo)n(v)n(e)24 b(to)h(previous)e(mark)n(ed)h(\014le)640
-b Fc(M-{)-450 1204 y Ff(mo)n(v)n(e)24 b(up)g(to)g(previous)g(sub)r
-(directory)495 b Fc(M-C-p)-450 1284 y Ff(mo)n(v)n(e)24
-b(do)n(wn)h(to)f(next)h(sub)r(directory)532 b Fc(M-C-n)-450
-1364 y Ff(mo)n(v)n(e)24 b(to)h(paren)n(t)f(directory)764
-b Fc(^)-450 1444 y Ff(mo)n(v)n(e)24 b(to)h(\014rst)e(c)n(hild)h(sub)r
-(directory)561 b Fc(M-C-d)-450 1647 y Fd(Mouse)38 b(Commands)-450
-1812 y Ff(visit)23 b(\014le)1144 b Fc(Mouse_Button_2)-450
-1892 y Ff(p)r(opup)25 b(men)n(u)880 b Fc(Control-Mouse_Button_3)-450
-2095 y Fd(Immediate)37 b(Actions)h(on)g(Files)-450 2260
-y Ff(visit)23 b(curren)n(t)h(\014le)1040 b Fc(f)-450
-2340 y Ff(view)24 b(curren)n(t)g(\014le)1032 b Fc(v)-450
-2420 y Ff(visit)23 b(curren)n(t)h(\014le)g(in)f(other)i(windo)n(w)516
-b Fc(o)-450 2500 y Ff(visit)23 b(curren)n(t)h(\014le)g(in)f(other)i
-(frame)574 b Fc(w)-450 2579 y Ff(displa)n(y)24 b(curren)n(t)g(\014le)
-955 b Fc(C-u)36 b(o)-450 2659 y Ff(create)25 b(a)f(new)g(sub)r
-(directory)734 b Fc(+)-450 2739 y Ff(compare)24 b(\014le)g(at)g(p)r
-(oin)n(t)h(with)e(the)i(one)f(at)g(mark)207 b Fc(=)-450
-2942 y Fd(Marking)38 b(and)f(Unmarking)i(Files)-450 3107
-y Ff(mark)23 b(a)h(\014le)g(or)f(sub)r(directory)h(for)f(later)h
-(commands)83 b Fc(m)-450 3187 y Ff(unmark)24 b(a)g(\014le)f(or)h(all)f
-(\014les)g(of)h(a)f(sub)r(directory)248 b Fc(u)-450 3267
-y Ff(unmark)24 b(all)f(mark)n(ed)h(\014les)f(in)h(a)f(bu\013er)460
-b Fc(M-delete)-450 3346 y Ff(mark)23 b(\014les)h(with)g(a)f(giv)n(en)i
-(extension)515 b Fc(*)36 b(.)-450 3426 y Ff(mark)23 b(all)g
-(directories)932 b Fc(*)36 b(/)-450 3506 y Ff(mark)23
-b(all)g(symlinks)982 b Fc(*)36 b(@)-450 3585 y Ff(mark)23
-b(all)g(executables)901 b Fc(*)36 b(*)-450 3665 y Ff(in)n(v)n(ert)24
-b(marking)1075 b Fc(*)36 b(t)-450 3745 y Ff(mark)23 b(all)g(\014les)h
-(in)f(the)i(curren)n(t)f(sub)r(dir)464 b Fc(*)36 b(s)-450
-3825 y Ff(mark)23 b(\014le)h(names)g(matc)n(hing)h(a)f(regular)f
-(expression)96 b Fc(*)36 b(\045)-450 3904 y Ff(c)n(hange)25
-b(the)g(marks)e(to)h(a)g(di\013eren)n(t)g(c)n(haracter)259
-b Fc(*)36 b(c)-450 3984 y Ff(mark)23 b(\014les)h(for)f(whic)n(h)h
-(Elisp)e(expression)i(returns)g(t)108 b Fc(*)36 b(\()f
-Fe(\(D)n(X\))-450 4191 y Fd(Mo)s(difying)j(the)f(Dired)g(Bu\013er)-450
-4356 y Ff(insert)23 b(a)h(sub)r(directory)h(in)n(to)f(this)f(bu\013er)
-408 b Fc(i)-450 4436 y Ff(remo)n(v)n(e)24 b(mark)n(ed)g(\014les)g(from)
-e(the)j(listing)419 b Fc(k)-450 4516 y Ff(remo)n(v)n(e)24
-b(a)g(sub)r(dir)f(listing)823 b Fc(C-u)36 b(k)-450 4595
-y Ff(re-read)23 b(all)g(directories)h(\(retains)g(all)f(marks\))280
-b Fc(g)-450 4675 y Ff(toggle)25 b(sorting)e(of)h(curren)n(t)g(sub)r
-(dir)f(b)n(y)h(name/date)114 b Fc(s)-450 4755 y Ff(edit)24
-b(ls)f(switc)n(hes)1065 b Fc(C-u)36 b(s)-450 4835 y Ff(reco)n(v)n(er)24
-b(marks,)f(hidden)h(lines,)f(and)h(suc)n(h)375 b Fc(C-_)-450
-4914 y Ff(hide)24 b(all)f(sub)r(directories)853 b Fc(M-$)-450
-4994 y Ff(hide)24 b(or)f(unhide)i(sub)r(directory)675
-b Fc($)1866 -364 y Fd(Commands)38 b(on)h(Files)e(Mark)m(ed)h(or)g(Sp)s
-(eci\014ed)1866 -269 y(b)m(y)g(the)f(Pre\014x)1866 -103
-y Ff(cop)n(y)25 b(\014le\(s\))1193 b Fc(C)1866 -24 y
-Ff(rename)24 b(a)g(\014le)g(or)f(mo)n(v)n(e)h(\014les)g(to)g(another)h
-(directory)79 b Fc(R)1866 56 y Ff(c)n(hange)25 b(o)n(wnership)f(of)f
-(\014le\(s\))713 b Fc(O)1866 136 y Ff(c)n(hange)25 b(the)g(group)f(of)f
-(the)i(\014le\(s\))601 b Fc(G)1866 216 y Ff(c)n(hange)25
-b(mo)r(de)f(of)g(\014le\(s\))854 b Fc(M)1866 295 y Ff(prin)n(t)24
-b(\014le\(s\))1183 b Fc(P)1866 375 y Ff(con)n(v)n(ert)25
-b(\014lename\(s\))g(to)f(lo)n(w)n(er)g(case)524 b Fc(\045)36
-b(l)1866 455 y Ff(con)n(v)n(ert)25 b(\014lename\(s\))g(to)f(upp)r(er)g
-(case)507 b Fc(\045)36 b(u)1866 534 y Ff(delete)25 b(mark)n(ed)f(\(as)g
-(opp)r(osed)h(to)f(\015agged\))i(\014les)217 b Fc(X)1866
-614 y Ff(uuenco)r(de)26 b(or)d(uudeco)r(de)j(\014le\(s\))648
-b Fc(U)1866 694 y Ff(compress)24 b(or)f(uncompress)h(\014le\(s\))588
-b Fc(Z)1866 773 y Ff(run)23 b(info)h(on)g(\014le)1073
-b Fc(I)36 b Fe(\(D)n(X\))1866 853 y Ff(mak)n(e)24 b(sym)n(b)r(olic)g
-(link\(s\))855 b Fc(S)1866 933 y Ff(mak)n(e)24 b(relativ)n(e)g(sym)n(b)
-r(olic)g(links)658 b Fc(Y)1866 1013 y Ff(mak)n(e)24 b(hard)g(link\(s\))
-983 b Fc(H)1866 1092 y Ff(searc)n(h)24 b(\014les)g(for)f(a)g(regular)h
-(expression)452 b Fc(A)1866 1172 y Ff(query)24 b(replace)g(regular)g
-(expression)539 b Fc(Q)1866 1252 y Ff(b)n(yte-compile)25
-b(\014les)996 b Fc(B)1866 1331 y Ff(load)24 b(\014les)1259
-b Fc(L)1866 1411 y Ff(shell)23 b(command)i(on)f(\014le\(s\))777
-b Fc(!)1866 1618 y Fd(Flagging)38 b(Files)g(for)g(Deletion)1866
-1755 y Fe(Unmark)27 b(commands)f(remo)n(v)n(e)g(delete)i(\015ags)1866
-1863 y Ff(\015ag)c(\014le)g(for)f(deletion)933 b Fc(d)1866
-1943 y Ff(bac)n(kup)25 b(and)f(remo)n(v)n(e)g(deletion)h(\015ag)533
-b Fc(delete)1866 2022 y Ff(\015ag)24 b(all)f(bac)n(kup)i(\014les)f
-(\(\014le)g(names)g(ending)g(in)g(~\))185 b Fc(~)1866
-2102 y Ff(\015ag)24 b(all)f(auto-sa)n(v)n(e)i(\014les)869
-b Fc(#)1866 2182 y Ff(\015ag)24 b(v)l(arious)g(in)n(termediate)h
-(\014les)627 b Fc(&)1866 2262 y Ff(\015ag)21 b(n)n(umeric)e(bac)n(kups)
-i(\(ending)h(in)d(.~1~,)i(.~2~,)f(etc.\))72 b Fc(.)1866
-2341 y Ff(execute)26 b(the)e(deletions)h(requested)g(\(\015agged)g
-(\014les\))134 b Fc(x)1866 2421 y Ff(\015ag)24 b(\014les)g(matc)n(hing)
-h(a)e(regular)h(expression)333 b Fc(\045)36 b(d)1866
-2624 y Fd(Regular)h(Expression)i(Commands)1866 2790 y
-Ff(mark)23 b(\014lenames)i(matc)n(hing)f(a)g(regular)f(expression)120
-b Fc(\045)36 b(m)1866 2869 y Ff(cop)n(y)25 b(mark)n(ed)f(\014les)f(b)n
-(y)h(regexp)674 b Fc(\045)36 b(C)1866 2949 y Ff(rename)24
-b(mark)n(ed)g(\014les)g(b)n(y)g(regexp)591 b Fc(\045)36
-b(R)1866 3029 y Ff(hardlink)1273 b Fc(\045)36 b(H)1866
-3108 y Ff(symlink)1290 b Fc(\045)36 b(S)1866 3188 y Ff(symlink,)23
-b(with)g(relativ)n(e)h(paths)668 b Fc(\045)36 b(Y)1866
-3268 y Ff(mark)23 b(for)g(deletion)998 b Fc(\045)36 b(d)1866
-3462 y Fd(Dired)h(and)g(Find)1866 3627 y Ff(dired)23
-b(\014le\(s\))i(whose)f(name)g(matc)n(hes)h(a)f(pattern)39
-b Fc(M-x)d(find-name-dired)1866 3707 y Ff(dired)23 b(\014le\(s\))i
-(that)g(con)n(tain)g(pattern)365 b Fc(M-x)36 b(find-grep-dired)1866
-3787 y Ff(dired)23 b(\014le\(s\))i(based)f(on)g Fc(find)h
-Ff(output)347 b Fc(M-x)36 b(find-dired)1866 3994 y Fd(Getting)h(Help)
-1866 4159 y Ff(dired)23 b(help)1221 b Fc(h)1866 4239
-y Ff(dired)23 b(summary)h(\(short)g(help\))g(and)g(error)f(log)253
-b Fc(?)2219 4484 y Fb(Cop)n(yrigh)n(t)2522 4482 y(c)2505
-4484 y Fa(\015)21 b Fb(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5
-b(oundation,)20 b(Inc.)2302 4547 y(designed)h(b)n(y)f(Stephen)g
-(Gildea,)g(Ma)n(y)i(2006)g(v0.1)2299 4611 y(for)f(GNU)f(Emacs)i(v)n
-(ersion)f(19)h(on)e(Unix)g(systems)2128 4675 y(Up)r(dated)f(for)j
-(Dired)e(in)f(Ma)n(y)j(2000)h(b)n(y)e(Evgen)n(y)g(Roubinc)n(h)n(tein)
-1866 4767 y(P)n(ermission)d(is)g(gran)n(ted)h(to)g(mak)n(e)g(and)f
-(distribute)f(copies)h(of)h(this)f(card)g(pro)n(vided)g(the)1866
-4831 y(cop)n(yrigh)n(t)k(notice)e(and)h(this)f(p)r(ermission)g(notice)h
-(are)g(preserv)n(ed)h(on)e(all)h(copies.)1866 4923 y(F)-5
-b(or)17 b(copies)g(of)g(the)g(GNU)f(Emacs)h(man)n(ual,)g(write)f(to)h
-(the)g(F)-5 b(ree)17 b(Soft)n(w)n(are)i(F)-5 b(oundation,)1866
-4987 y(Inc.,)20 b(51)h(F)-5 b(ranklin)20 b(Street,)h(Fifth)f(Flo)r(or,)
-g(Boston,)i(MA)f(02110-1301,)j(USA.)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/e/README b/etc/e/README
new file mode 100644 (file)
index 0000000..c547fc6
--- /dev/null
@@ -0,0 +1,12 @@
+eterm-color.ti is a terminfo source file.  eterm-color is a compiled
+version produced by the terminfo compiler (tic).  The compiled files
+are binary, and depend on the version of tic, but they seem to be
+system-independent and backwardly compatible.  So there should be no
+need to recompile the distributed binary version.  If it is
+necessary, use:
+
+tic -o ../ ./eterm-color.ti
+
+The compiled file is used by lisp/term.el, so if it is moved term.el
+needs to be changed.  terminfo requires it to be stored in an `e'
+subdirectory (the first character of the file name).
index c207e5ffe9e114b83bacb5e0fb8dd69a3c935c22..79ce7840d93693bd3131023a2a607efce3171dd6 100644 (file)
@@ -55,7 +55,7 @@ function edit ()
 
     case "${windowsys}" in
       x ) (emacs "$@" &) ;;
-      sun ) (emacstool "$@" &) ;;
+      sun ) echo "unsupported window system"; return 1 ;;
     esac
  else
     if jobs %emacs 2> /dev/null ; then
index 8afea6bd35c9aec0aaf07db9f648b70c82ee3a81..880aad08f0166ea23251e7fc1904b06e37c29323 100644 (file)
 ## 2 = resume emacs
 ## 3 = new emacs under X (-i is so that you get a reasonable icon)
 ## 4 = resume emacs under X
-## 5 = new emacs under suntools
-## 6 = resume emacs under suntools
-## 7 = new emacs under X and suntools - doesn't make any sense, so use X
-## 8 = resume emacs under X and suntools - doesn't make any sense, so use X
 set EMACS_PATTERN="^\[[0-9]\]  . Stopped ............ $EMACS"
 
 alias edit 'set emacs_command=("emacs -nw \!*" "fg %emacs" "emacs -i \!* &"\
- "emacsclient \!* &" "emacstool \!* &" "emacsclient \!* &" "emacs -i \!* &"\
  "emacsclient \!* &") ; \
  jobs >! $HOME/.jobs; grep "$EMACS_PATTERN" < $HOME/.jobs >& /dev/null; \
  @ isjob = ! $status; \
index d8bfb6bcd68cc96cc626eb247aba0ee583699aab..964c1f17f407b1352810695441e88f4d0f92cc0e 100644 (file)
-"""Definitions used by commands sent to inferior Python in python.el."""
+"""Wrapper for version-specific implementations of python.el helper
+functions """
 
-# Copyright (C) 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
-# Author: Dave Love <fx@gnu.org>
+import sys
 
-# This file is part of GNU Emacs.
+if sys.version_info[0] == 3:
+    from emacs3 import *
+else:
+    from emacs2 import *
 
-# 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, 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; see the file COPYING.  If not, write to the
-# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-# Boston, MA 02110-1301, USA.
-
-import os, sys, traceback, inspect, __main__
-from sets import Set
-
-__all__ = ["eexecfile", "eargs", "complete", "ehelp", "eimport", "modpath"]
-
-def format_exception (filename, should_remove_self):
-    type, value, tb = sys.exc_info ()
-    sys.last_type = type
-    sys.last_value = value
-    sys.last_traceback = tb
-    if type is SyntaxError:
-        try: # parse the error message
-            msg, (dummy_filename, lineno, offset, line) = value
-        except:
-            pass # Not the format we expect; leave it alone
-        else:
-            # Stuff in the right filename
-            value = SyntaxError(msg, (filename, lineno, offset, line))
-            sys.last_value = value
-    res = traceback.format_exception_only (type, value)
-    # There are some compilation errors which do not provide traceback so we
-    # should not massage it.
-    if should_remove_self:
-        tblist = traceback.extract_tb (tb)
-        del tblist[:1]
-        res = traceback.format_list (tblist)
-        if res:
-            res.insert(0, "Traceback (most recent call last):\n")
-        res[len(res):] = traceback.format_exception_only (type, value)
-    # traceback.print_exception(type, value, tb)
-    for line in res: print line,
-
-def eexecfile (file):
-    """Execute FILE and then remove it.
-    Execute the file within the __main__ namespace.
-    If we get an exception, print a traceback with the top frame
-    (ourselves) excluded."""
-    # We cannot use real execfile since it has a bug where the file stays
-    # locked forever (under w32) if SyntaxError occurs.
-    # --- code based on code.py and PyShell.py.
-    try:
-        try:
-            source = open (file, "r").read()
-            code = compile (source, file, "exec")
-        # Other exceptions (shouldn't be any...) will (correctly) fall
-        # through to "final".
-        except (OverflowError, SyntaxError, ValueError):
-            # FIXME: When can compile() raise anything else than
-            # SyntaxError ????
-            format_exception (file, False)
-            return
-        try:
-            exec code in __main__.__dict__
-        except:
-            format_exception (file, True)
-    finally:
-       os.remove (file)
-
-def eargs (name, imports):
-    "Get arglist of NAME for Eldoc &c."
-    try:
-       if imports: exec imports
-       parts = name.split ('.')
-       if len (parts) > 1:
-           exec 'import ' + parts[0] # might fail
-       func = eval (name)
-       if inspect.isbuiltin (func) or type(func) is type:
-           doc = func.__doc__
-           if doc.find (' ->') != -1:
-               print '_emacs_out', doc.split (' ->')[0]
-           else:
-               print '_emacs_out', doc.split ('\n')[0]
-           return
-       if inspect.ismethod (func):
-           func = func.im_func
-       if not inspect.isfunction (func):
-            print '_emacs_out '
-            return
-       (args, varargs, varkw, defaults) = inspect.getargspec (func)
-       # No space between name and arglist for consistency with builtins.
-       print '_emacs_out', \
-           func.__name__ + inspect.formatargspec (args, varargs, varkw,
-                                                  defaults)
-    except:
-       print "_emacs_out "
-
-def all_names (object):
-    """Return (an approximation to) a list of all possible attribute
-    names reachable via the attributes of OBJECT, i.e. roughly the
-    leaves of the dictionary tree under it."""
-
-    def do_object (object, names):
-       if inspect.ismodule (object):
-           do_module (object, names)
-       elif inspect.isclass (object):
-           do_class (object, names)
-       # Might have an object without its class in scope.
-       elif hasattr (object, '__class__'):
-           names.add ('__class__')
-           do_class (object.__class__, names)
-       # Probably not a good idea to try to enumerate arbitrary
-       # dictionaries...
-       return names
-
-    def do_module (module, names):
-       if hasattr (module, '__all__'): # limited export list
-           names.union_update (module.__all__)
-           for i in module.__all__:
-               do_object (getattr (module, i), names)
-       else:                   # use all names
-           names.union_update (dir (module))
-           for i in dir (module):
-               do_object (getattr (module, i), names)
-       return names
-
-    def do_class (object, names):
-       ns = dir (object)
-       names.union_update (ns)
-       if hasattr (object, '__bases__'): # superclasses
-           for i in object.__bases__: do_object (i, names)
-       return names
-
-    return do_object (object, Set ([]))
-
-def complete (name, imports):
-    """Complete TEXT in NAMESPACE and print a Lisp list of completions.
-    Exec IMPORTS first."""
-    import __main__, keyword
-
-    def class_members(object):
-       names = dir (object)
-       if hasattr (object, '__bases__'):
-           for super in object.__bases__:
-               names = class_members (super)
-       return names    
-
-    names = Set ([])
-    base = None
-    try:
-       dict = __main__.__dict__.copy()
-       if imports: exec imports in dict
-       l = len (name)
-       if not "." in name:
-           for list in [dir (__builtins__), keyword.kwlist, dict.keys()]:
-               for elt in list:
-                   if elt[:l] == name: names.add(elt)
-       else:
-           base = name[:name.rfind ('.')]
-           name = name[name.rfind('.')+1:]
-           try:
-               object = eval (base, dict)
-               names = Set (dir (object))
-               if hasattr (object, '__class__'):
-                   names.add('__class__')
-                   names.union_update (class_members (object))
-           except: names = all_names (dict)
-    except:
-        print '_emacs_out ()'
-        return []
-    l = len(name)
-    print '_emacs_out (',
-    for n in names:
-       if name == n[:l]:
-           if base: print '"%s.%s"' % (base, n),
-           else: print '"%s"' % n,
-    print ')'
-
-def ehelp (name, imports):
-    """Get help on string NAME.
-    First try to eval name for, e.g. user definitions where we need
-    the object.  Otherwise try the string form."""
-    locls = {}
-    if imports:
-       try: exec imports in locls
-       except: pass
-    try: help (eval (name, globals(), locls))
-    except: help (name)
-
-def eimport (mod, dir):
-    """Import module MOD with directory DIR at the head of the search path.
-    NB doesn't load from DIR if MOD shadows a system module."""
-    from __main__ import __dict__
-
-    path0 = sys.path[0]
-    sys.path[0] = dir
-    try:
-       try:
-           if __dict__.has_key(mod) and inspect.ismodule (__dict__[mod]):
-               reload (__dict__[mod])
-           else:
-               __dict__[mod] = __import__ (mod)
-       except:
-           (type, value, tb) = sys.exc_info ()
-           print "Traceback (most recent call last):"
-           traceback.print_exception (type, value, tb.tb_next)
-    finally:
-       sys.path[0] = path0
-
-def modpath (module):
-    """Return the source file for the given MODULE (or None).
-Assumes that MODULE.py and MODULE.pyc are in the same directory."""
-    try:
-       path = __import__ (module).__file__
-       if path[-4:] == '.pyc' and os.path.exists (path[0:-1]):
-           path = path[:-1]
-       print "_emacs_out", path
-    except:
-       print "_emacs_out ()"
-
-# print '_emacs_ok'            # ready for input and can call continuation
-
-# arch-tag: d90408f3-90e2-4de4-99c2-6eb9c7b9ca46
+# arch-tag: 894b5227-638f-45fd-8567-0417d5c35900
diff --git a/etc/emacs2.py b/etc/emacs2.py
new file mode 100644 (file)
index 0000000..b486895
--- /dev/null
@@ -0,0 +1,239 @@
+"""Definitions used by commands sent to inferior Python in python.el."""
+
+# Copyright (C) 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
+# Author: Dave Love <fx@gnu.org>
+
+# This file is part of GNU Emacs.
+
+# GNU Emacs is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, 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; see the file COPYING.  If not, write to the
+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+import os, sys, traceback, inspect, __main__
+
+try:
+    set
+except:
+    from sets import Set as set
+
+__all__ = ["eexecfile", "eargs", "complete", "ehelp", "eimport", "modpath"]
+
+def format_exception (filename, should_remove_self):
+    type, value, tb = sys.exc_info ()
+    sys.last_type = type
+    sys.last_value = value
+    sys.last_traceback = tb
+    if type is SyntaxError:
+        try: # parse the error message
+            msg, (dummy_filename, lineno, offset, line) = value
+        except:
+            pass # Not the format we expect; leave it alone
+        else:
+            # Stuff in the right filename
+            value = SyntaxError(msg, (filename, lineno, offset, line))
+            sys.last_value = value
+    res = traceback.format_exception_only (type, value)
+    # There are some compilation errors which do not provide traceback so we
+    # should not massage it.
+    if should_remove_self:
+        tblist = traceback.extract_tb (tb)
+        del tblist[:1]
+        res = traceback.format_list (tblist)
+        if res:
+            res.insert(0, "Traceback (most recent call last):\n")
+        res[len(res):] = traceback.format_exception_only (type, value)
+    # traceback.print_exception(type, value, tb)
+    for line in res: print line,
+
+def eexecfile (file):
+    """Execute FILE and then remove it.
+    Execute the file within the __main__ namespace.
+    If we get an exception, print a traceback with the top frame
+    (ourselves) excluded."""
+    # We cannot use real execfile since it has a bug where the file stays
+    # locked forever (under w32) if SyntaxError occurs.
+    # --- code based on code.py and PyShell.py.
+    try:
+        try:
+            source = open (file, "r").read()
+            code = compile (source, file, "exec")
+        # Other exceptions (shouldn't be any...) will (correctly) fall
+        # through to "final".
+        except (OverflowError, SyntaxError, ValueError):
+            # FIXME: When can compile() raise anything else than
+            # SyntaxError ????
+            format_exception (file, False)
+            return
+        try:
+            exec code in __main__.__dict__
+        except:
+            format_exception (file, True)
+    finally:
+        os.remove (file)
+
+def eargs (name, imports):
+    "Get arglist of NAME for Eldoc &c."
+    try:
+        if imports: exec imports
+        parts = name.split ('.')
+        if len (parts) > 1:
+            exec 'import ' + parts[0] # might fail
+        func = eval (name)
+        if inspect.isbuiltin (func) or type(func) is type:
+            doc = func.__doc__
+            if doc.find (' ->') != -1:
+                print '_emacs_out', doc.split (' ->')[0]
+            else:
+                print '_emacs_out', doc.split ('\n')[0]
+            return
+        if inspect.ismethod (func):
+            func = func.im_func
+        if not inspect.isfunction (func):
+            print '_emacs_out '
+            return
+        (args, varargs, varkw, defaults) = inspect.getargspec (func)
+        # No space between name and arglist for consistency with builtins.
+        print '_emacs_out', \
+            func.__name__ + inspect.formatargspec (args, varargs, varkw,
+                                                   defaults)
+    except:
+        print "_emacs_out "
+
+def all_names (object):
+    """Return (an approximation to) a list of all possible attribute
+    names reachable via the attributes of OBJECT, i.e. roughly the
+    leaves of the dictionary tree under it."""
+
+    def do_object (object, names):
+        if inspect.ismodule (object):
+            do_module (object, names)
+        elif inspect.isclass (object):
+            do_class (object, names)
+        # Might have an object without its class in scope.
+        elif hasattr (object, '__class__'):
+            names.add ('__class__')
+            do_class (object.__class__, names)
+        # Probably not a good idea to try to enumerate arbitrary
+        # dictionaries...
+        return names
+
+    def do_module (module, names):
+        if hasattr (module, '__all__'): # limited export list
+            names.update(module.__all__)
+            for i in module.__all__:
+                do_object (getattr (module, i), names)
+        else:                   # use all names
+            names.update(dir (module))
+            for i in dir (module):
+                do_object (getattr (module, i), names)
+        return names
+
+    def do_class (object, names):
+        ns = dir (object)
+        names.update(ns)
+        if hasattr (object, '__bases__'): # superclasses
+            for i in object.__bases__: do_object (i, names)
+        return names
+
+    return do_object (object, set([]))
+
+def complete (name, imports):
+    """Complete TEXT in NAMESPACE and print a Lisp list of completions.
+    Exec IMPORTS first."""
+    import __main__, keyword
+
+    def class_members(object):
+        names = dir (object)
+        if hasattr (object, '__bases__'):
+            for super in object.__bases__:
+                names = class_members (super)
+        return names    
+
+    names = set([])
+    base = None
+    try:
+        dict = __main__.__dict__.copy()
+        if imports: exec imports in dict
+        l = len (name)
+        if not "." in name:
+            for src in [dir (__builtins__), keyword.kwlist, dict.keys()]:
+                for elt in src:
+                    if elt[:l] == name: names.add(elt)
+        else:
+            base = name[:name.rfind ('.')]
+            name = name[name.rfind('.')+1:]
+            try:
+                object = eval (base, dict)
+                names = set(dir (object))
+                if hasattr (object, '__class__'):
+                    names.add('__class__')
+                    names.update(class_members (object))
+            except: names = all_names (dict)
+    except: 
+        print sys.exc_info()
+        names = []
+        
+    l = len(name)
+    print '_emacs_out (',
+    for n in names:
+        if name == n[:l]:
+            if base: print '"%s.%s"' % (base, n),
+            else: print '"%s"' % n,
+    print ')'
+
+def ehelp (name, imports):
+    """Get help on string NAME.
+    First try to eval name for, e.g. user definitions where we need
+    the object.  Otherwise try the string form."""
+    locls = {}
+    if imports:
+        try: exec imports in locls
+        except: pass
+    try: help (eval (name, globals(), locls))
+    except: help (name)
+
+def eimport (mod, dir):
+    """Import module MOD with directory DIR at the head of the search path.
+    NB doesn't load from DIR if MOD shadows a system module."""
+    from __main__ import __dict__
+
+    path0 = sys.path[0]
+    sys.path[0] = dir
+    try:
+        try:
+            if __dict__.has_key(mod) and inspect.ismodule (__dict__[mod]):
+                reload (__dict__[mod])
+            else:
+                __dict__[mod] = __import__ (mod)
+        except:
+            (type, value, tb) = sys.exc_info ()
+            print "Traceback (most recent call last):"
+            traceback.print_exception (type, value, tb.tb_next)
+    finally:
+        sys.path[0] = path0
+
+def modpath (module):
+    """Return the source file for the given MODULE (or None).
+Assumes that MODULE.py and MODULE.pyc are in the same directory."""
+    try:
+        path = __import__ (module).__file__
+        if path[-4:] == '.pyc' and os.path.exists (path[0:-1]):
+            path = path[:-1]
+        print "_emacs_out", path
+    except:
+        print "_emacs_out ()"
+
+# 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
new file mode 100644 (file)
index 0000000..96e8ebb
--- /dev/null
@@ -0,0 +1,244 @@
+"""
+Warning: This file is automatically generated from emacs2.py with the
+2to3 script.  Do not hand edit.
+"""
+
+"""Definitions used by commands sent to inferior Python in python.el."""
+
+# Copyright (C) 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
+# Author: Dave Love <fx@gnu.org>
+
+# This file is part of GNU Emacs.
+
+# GNU Emacs is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, 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; see the file COPYING.  If not, write to the
+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+import os, sys, traceback, inspect, __main__
+
+try:
+    set
+except:
+    from sets import Set as set
+
+__all__ = ["eexecfile", "eargs", "complete", "ehelp", "eimport", "modpath"]
+
+def format_exception (filename, should_remove_self):
+    type, value, tb = sys.exc_info ()
+    sys.last_type = type
+    sys.last_value = value
+    sys.last_traceback = tb
+    if type is SyntaxError:
+        try: # parse the error message
+            msg, (dummy_filename, lineno, offset, line) = value
+        except:
+            pass # Not the format we expect; leave it alone
+        else:
+            # Stuff in the right filename
+            value = SyntaxError(msg, (filename, lineno, offset, line))
+            sys.last_value = value
+    res = traceback.format_exception_only (type, value)
+    # There are some compilation errors which do not provide traceback so we
+    # should not massage it.
+    if should_remove_self:
+        tblist = traceback.extract_tb (tb)
+        del tblist[:1]
+        res = traceback.format_list (tblist)
+        if res:
+            res.insert(0, "Traceback (most recent call last):\n")
+        res[len(res):] = traceback.format_exception_only (type, value)
+    # traceback.print_exception(type, value, tb)
+    for line in res: print(line, end=' ')
+
+def eexecfile (file):
+    """Execute FILE and then remove it.
+    Execute the file within the __main__ namespace.
+    If we get an exception, print a traceback with the top frame
+    (ourselves) excluded."""
+    # We cannot use real execfile since it has a bug where the file stays
+    # locked forever (under w32) if SyntaxError occurs.
+    # --- code based on code.py and PyShell.py.
+    try:
+        try:
+            source = open (file, "r").read()
+            code = compile (source, file, "exec")
+        # Other exceptions (shouldn't be any...) will (correctly) fall
+        # through to "final".
+        except (OverflowError, SyntaxError, ValueError):
+            # FIXME: When can compile() raise anything else than
+            # SyntaxError ????
+            format_exception (file, False)
+            return
+        try:
+            exec(code, __main__.__dict__)
+        except:
+            format_exception (file, True)
+    finally:
+        os.remove (file)
+
+def eargs (name, imports):
+    "Get arglist of NAME for Eldoc &c."
+    try:
+        if imports: exec(imports)
+        parts = name.split ('.')
+        if len (parts) > 1:
+            exec('import ' + parts[0]) # might fail
+        func = eval (name)
+        if inspect.isbuiltin (func) or type(func) is type:
+            doc = func.__doc__
+            if doc.find (' ->') != -1:
+                print('_emacs_out', doc.split (' ->')[0])
+            else:
+                print('_emacs_out', doc.split ('\n')[0])
+            return
+        if inspect.ismethod (func):
+            func = func.im_func
+        if not inspect.isfunction (func):
+            print('_emacs_out ')
+            return
+        (args, varargs, varkw, defaults) = inspect.getargspec (func)
+        # No space between name and arglist for consistency with builtins.
+        print('_emacs_out', \
+            func.__name__ + inspect.formatargspec (args, varargs, varkw,
+                                                   defaults))
+    except:
+        print("_emacs_out ")
+
+def all_names (object):
+    """Return (an approximation to) a list of all possible attribute
+    names reachable via the attributes of OBJECT, i.e. roughly the
+    leaves of the dictionary tree under it."""
+
+    def do_object (object, names):
+        if inspect.ismodule (object):
+            do_module (object, names)
+        elif inspect.isclass (object):
+            do_class (object, names)
+        # Might have an object without its class in scope.
+        elif hasattr (object, '__class__'):
+            names.add ('__class__')
+            do_class (object.__class__, names)
+        # Probably not a good idea to try to enumerate arbitrary
+        # dictionaries...
+        return names
+
+    def do_module (module, names):
+        if hasattr (module, '__all__'): # limited export list
+            names.update(module.__all__)
+            for i in module.__all__:
+                do_object (getattr (module, i), names)
+        else:                   # use all names
+            names.update(dir (module))
+            for i in dir (module):
+                do_object (getattr (module, i), names)
+        return names
+
+    def do_class (object, names):
+        ns = dir (object)
+        names.update(ns)
+        if hasattr (object, '__bases__'): # superclasses
+            for i in object.__bases__: do_object (i, names)
+        return names
+
+    return do_object (object, set([]))
+
+def complete (name, imports):
+    """Complete TEXT in NAMESPACE and print a Lisp list of completions.
+    Exec IMPORTS first."""
+    import __main__, keyword
+
+    def class_members(object):
+        names = dir (object)
+        if hasattr (object, '__bases__'):
+            for super in object.__bases__:
+                names = class_members (super)
+        return names    
+
+    names = set([])
+    base = None
+    try:
+        dict = __main__.__dict__.copy()
+        if imports: exec(imports, dict)
+        l = len (name)
+        if not "." in name:
+            for src in [dir (__builtins__), keyword.kwlist, list(dict.keys())]:
+                for elt in src:
+                    if elt[:l] == name: names.add(elt)
+        else:
+            base = name[:name.rfind ('.')]
+            name = name[name.rfind('.')+1:]
+            try:
+                object = eval (base, dict)
+                names = set(dir (object))
+                if hasattr (object, '__class__'):
+                    names.add('__class__')
+                    names.update(class_members (object))
+            except: names = all_names (dict)
+    except: 
+        print(sys.exc_info())
+        names = []
+        
+    l = len(name)
+    print('_emacs_out (', end=' ')
+    for n in names:
+        if name == n[:l]:
+            if base: print('"%s.%s"' % (base, n), end=' ')
+            else: print('"%s"' % n, end=' ')
+    print(')')
+
+def ehelp (name, imports):
+    """Get help on string NAME.
+    First try to eval name for, e.g. user definitions where we need
+    the object.  Otherwise try the string form."""
+    locls = {}
+    if imports:
+        try: exec(imports, locls)
+        except: pass
+    try: help (eval (name, globals(), locls))
+    except: help (name)
+
+def eimport (mod, dir):
+    """Import module MOD with directory DIR at the head of the search path.
+    NB doesn't load from DIR if MOD shadows a system module."""
+    from __main__ import __dict__
+
+    path0 = sys.path[0]
+    sys.path[0] = dir
+    try:
+        try:
+            if mod in __dict__ and inspect.ismodule (__dict__[mod]):
+                reload (__dict__[mod])
+            else:
+                __dict__[mod] = __import__ (mod)
+        except:
+            (type, value, tb) = sys.exc_info ()
+            print("Traceback (most recent call last):")
+            traceback.print_exception (type, value, tb.tb_next)
+    finally:
+        sys.path[0] = path0
+
+def modpath (module):
+    """Return the source file for the given MODULE (or None).
+Assumes that MODULE.py and MODULE.pyc are in the same directory."""
+    try:
+        path = __import__ (module).__file__
+        if path[-4:] == '.pyc' and os.path.exists (path[0:-1]):
+            path = path[:-1]
+        print("_emacs_out", path)
+    except:
+        print("_emacs_out ()")
+
+# print '_emacs_ok'             # ready for input and can call continuation
+
+# arch-tag: 37bfed38-5f4a-4027-a2bf-d5f41819dd89
diff --git a/etc/emacstool.1 b/etc/emacstool.1
deleted file mode 100644 (file)
index ef19411..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-.TH EMACSTOOL 1
-.SH NAME
-.I emacstool 
-\- run emacs under Sun windows with function-key and mouse support.
-.SH SYNOPSIS
-.I emacstool
-[{window_args} {-rc run_command_path} args ... ]
-.SH TYPICAL USAGE
-In ~/.suntools or ~/.rootmenu include a line like this:
-.br
-"Emacstool"     emacstool -WI emacs.icon -f emacstool-init
-.SH DESCRIPTION
-.B  Emacstool
-creates a SunView frame and a tty subwindow within which mouse events
-and function keys are translated to ASCII sequences which Emacs can
-parse.  The translated input events are sent to the process running in
-the tty subwindow, which is typically GNU Emacs.  Emacstool thereby
-allows GNU Emacs users to make full use of the mouse and function keys.
-GNU Emacs can be loaded with functions to interpret the mouse and
-function-key events to make a truly fine screen oriented editor for
-the Sun Workstation.
-.PP
-(Note that GNU Emacs has a special interface to the X window system as
-well.  The X window system has many technical advantages, it is an
-industry standard, and it is also free software.  The Free Software
-Foundation urges you to try X windows, and distributes a free copy of
-X on Emacs distribution tapes.)
-.PP
-Function keys are translated to a sequence of the form
-`^X*[a-o][lrt]'.  The last character is `l', `r', or `t' corresponding
-to whether the key is among the Left, Right, or Top function keys.
-The third character indicates which button of the group
-was pressed.  Thus, the function key in the lower right corner will
-transmit the sequence `^X*or'.  In addition, the [lrt] is affected by
-the Control, Meta, and Shift keys.  Unshifted Control keys will be
-non-alphabetic: C-l is [,], C-r is [2], C-t is [4].
-.PP 
-Mouse buttons are encoded as `^X^@([124] x y)\\n'.  ^X^@ is the
-standard GNU Emacs mouse event prefix, it is followed by a list
-indicating the button pressed and the character row and column of the
-point in the window where the mouse cursor is, and followed by a
-newline character.  In GNU Emacs, the ^X^@ dispatches to a
-mouse event handler which then reads the following list.
-.SH OPTIONS
-.B Emacstool
-supports all the standard window arguments, including font and icon 
-specifiers.  
-.PP
-By default, Emacstool runs the program 
-.I emacs
-in the created subwindow.  
-The value of the environment variable 
-.I EMACSTOOL
-can be used to override this if your version of 
-.B Emacs
-is not accessible on your search path by the name 
-.I Emacs.
-In addition, the run command can be set by the 
-.I pathname 
-following the last occurrence of the
-.I \-rc
-flag.
-This is convenient for using Emacstool to run on remote machines.
-.PP
-All other command line arguments not used by the window system are passed
-as arguments to the program that runs in the Emacstool window.
-.PP
-For example: 
-.PP
-local% (emacstool -rc rlogin remote -8 &)&
-.PP
-will create an Emacstool window logged in to a machine named
-.I remote.
-If Emacs is run from this window, 
-Emacstool will encode mouse and function keys, and send them to rlogin.
-If Emacs is run from this shell on the remote machine, it will see
-the mouse and function keys properly.
-However, since the remote host does not have access to the screen,
-the cursor cannot be changed, menus will not appear, and the selection
-buffer (STUFF) is limited.
-.SH Using With GNU Emacs:
-The GNU Emacs files
-lisp/term/sun.el,
-lisp/sun-mouse.el, 
-lisp/sun-fns.el, 
-and 
-src/sunfns.c
-provide emacs support for the Emacstool and function keys.
-Emacstool will automatically set the TERM environment variable to be "sun"
-and unset the environment variable TERMCAP.  That is, these variables will
-not be inherited from the shell that starts Emacstool.
-Since the terminal type is
-.I SUN
-(that is, the environment variable TERM is set to 
-.I SUN), 
-Emacs will automatically load the file lisp/term/sun.
-This, in turn, will ensure that sun-mouse.el is autoloaded when any mouse
-events are detected.  It is suggested that 
-.I sun-mouse 
-and
-.I sun-fns
-be loaded in your site-init.el file, so that they will always be loaded
-when running on a Sun workstation.
-.PP
-In addition, Emacstool sets the environment variable IN_EMACSTOOL = "t".
-Lisp code in your ~/.emacs can use (getenv "IN_EMACSTOOL")
-to determine whether to do Emacstool specific initialization.
-Sun.el uses this to automatically call emacstool-init (getenv "IN_EMACSTOOL")
-is defined.
-.PP
-The file src/sunfns.c defines several useful functions for emacs on
-the Sun.  Among these are procedures to pop-up SunView 
-.I menus, 
-put and get from the SunView
-.I STUFF
-buffer, and a procedure for changing the cursor 
-.I icon.
-If you want to define or edit cursor icons, 
-there is a rudimentary mouse driven icon editor in the file
-lisp/sun-cursors.el.  Try invoking (sc:edit-cursor)
-.SH BUGS
-It takes a few milliseconds to create a menu before it pops up.
-.SH ENVIRONMENT VARIABLES
-EMACSTOOL
-IN_EMACSTOOL
-TERM
-TERMCAP
-.SH FILES
-.DT
-emacs
-.SH "SEE ALSO"
-emacs(1)
- .../etc/SUN-SUPPORT
- .../lisp/term/sun.el
-.SH COPYING
-Copyright 
-.if t \(co
-.if n (c)
-2001, 2002, 2003, 2004, 2005, 2006, 2007  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
-preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of
-this document under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of
-a permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-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: a1f44815-5163-4026-89c1-4404e4b81d37
diff --git a/etc/fr-drdref.ps b/etc/fr-drdref.ps
deleted file mode 100644 (file)
index 7a21d14..0000000
+++ /dev/null
@@ -1,1997 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: fr-drdref.dvi
-%%Pages: 1
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: CMBX10 CMR8 CMBX8 CMTT8 CMR6 CMSY6
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips fr-drdref.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.03.19:1910
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 18 /grave put
-dup 19 /acute put
-dup 24 /cedilla put
-dup 39 /quoteright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 57 /nine put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 74 /J put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
-6D4DF600BB73729BC4A5B134928F1370B9F07C587F79388B1D9AC62BFB1566DD
-CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
-0B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
-08E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
-588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF21B
-85440C6929315A6C6EF7A0CD27AA4D99B257B6A24F3031A6E96251A095375ED8
-45B575654F34C33F0F852229008F345EDC1DF3B33D1A52049DD3B92CA9C132CD
-1CD7C4378567D942D72926A9DDE2808B62DC83F0287194820CEADBD472FC66CA
-F1B9270283676B576557384BF6195EBBCFB7D3E82E8BF06308B4AE88AAD99598
-01BD7AAAE4586DD21BA132B52EF629CE9AB1CD1A7607571F859045D01F916FC9
-332205A8CA697F9E45D813551525DFD3B2058CD190E3B835B23C1192231AE9F9
-1B9DCCE94EF4D7F75AF6AD5963CECCD32D43C2D09193F7B4CE73B3DB8ACB8F7A
-A81AAF067F25E80D411CD0B03E8A4DCD1388F46B8A5A7E6314525799B28BDE2D
-4D772865E8FB6FFF94B87EBC3E6F24617AC6056E723E0796ACF2872733B2631E
-9F2CE949C38C7A1A245B12FACD83AC8377DFABA3CF6E3E1FDEDBAA18756FF6DB
-C3DE478A63A5984892BB296534844EDAD80AE3C505E09DD735780FC47BF88AAB
-6F2C692DCF7B26DD1A0CDC12D4B1E6D9B526D732F668FF02A4FE0019ACEBE631
-DEA8D2A4B42BD0D533311942F61954EA929AFFC2F533131F6E457702DD578AEA
-62C1D9C0CFA19C7615573E28240531CF9A0CFE024F782D8BB90A7E427DB26B9B
-8932E947F5BAE092F36CB1177B1CE552B0E4038F507943797BEC490E140F201D
-4FA40F4B2BDD95AE14F66517C2D5E7E97F3685F7AC2BEAC86C53758807859504
-25176DFE30A4023632772B8C9E29044D5D20EB456371318A048BBA633A30A6E9
-CC019BB796D8D049E288814DE1C6116BE98C7D0DABEDFD01EF19E3792347C7F9
-90E99A74886016D7F70C2E0052781718CBCDBF372E8A0C056B4B006DEB7B0099
-F543AF4467E14DFBF0FC0C5B88F94D5DC0E8A8411D697CC2D9F7E672B4827C74
-E5E9748CBA1E71E9217D08A1937D409CB6523C7838038BF23A3CBF1BB94A679A
-6A846A4B9ACA3E5097D5F55299990F0C3594899CD70ECD14F34C9BB41197A02F
-F9A942CAA23E2470B85F9EEC9CD8F798A164F20A909FB1F6844CA55D2E1BFBD5
-6E7AB9D9CB4154A7E8B798A44F6C229A511AEB7F67910C1AD3D4DD9276B0A260
-004FF84E8E8476BB5103E9AC6214C486483F866DC7CA10701F0E82C037E756FD
-110DAFA6B274B5FD776CBFCA77F819C79EB5CB075374DD2D4DC0A5F05F445658
-7F0CA887E39D6D95EBD16211B404DDF8DB59D4E9CDCB326A4F64E2C5E03AAF38
-FE870BB8198786A4258880E0EA6F7F63CBC50645EE1B56B18BB1C45C23F2F9AC
-4F73A223EA8A5A598E3871E94FCE31ECDDC8A88D8B0961B152E5A397866F830F
-3CF9D980D8AF56A13B14C72C66BB58ED026CA28B42CB822012BF3EC89469407E
-1B7FD909357AAE1B4E00B00C19CCF80E402BCEBCE5415490A6FBC971B142F71C
-D749F1325341538CCA282EB257772B2242D68C5C7974C2C4363BC0D5BC84867D
-47ADD5A9BF6CED9FBCAFF6EC18B2955EC2C193F07813B2259148DFA7F6E2E485
-DBDBEBCA9269E56B9A0666E61FC72EBD841D4DB78DF285281BB76974BEECF5EB
-37DBC31E5D90F534B831B22E387D05D79346B6E4772EA55C1ABB8A9AAE3D2A5C
-7EE7545827A8579F71A32AEDE4E53468325462C203C7E9CB9618321EEF3F518F
-1613A0B5D9F0B3EB70E6E3B10E88D3451D1BD30050618DCC1F29A79C26BC1318
-A09D90ED81634CCD2E9256DC418EDC8A8DEA0AD46C297145C5EF499ED28A9D5F
-3BDC74DD8EA59B76B6AEF17EC33FA2DCDE5421A3E2AEBA5B2AE728B05DF73B45
-DD5E987688AE467431437FAF77341F2B25D9AD451864EA14B54BB90C7E2A98D2
-0903D4CE71721124460AA8BF2F3D902B3315957548328D464892C3F7FF1DF0E3
-EFFF92128D4211289AFE3389F10B72F4EA72DD9E760680A1B035C3007500EBD5
-8FFCCE6B742261CB4BE1DA1756418CE73126521FF8667A9698EF83510CD6AE4B
-8FBAFC10238E8BE5654069992E4C414B86091679F0A5F26D357107DFD581E990
-87E2F6F692B9B38ADC04C83ED9336D3F28F5B366D0435D88A5F328D25C8D3D29
-175AE184A850982BFAC3963E5A42026CDC20D687A98627D10B1FC23D50B719B3
-E1C6A99771DEA39715D2F0C050EE67A4235D26577A050F498A992348392DE9D1
-70489F2136E5E338500F6D883EFDC5F59B72C7889021B6A1EB673F94B33E2119
-1D7CC415218BA4826E366E5FAE7086CB6BA3ADC6B29896F9C9F6ECABD60821AD
-2550F8F0B7E06B2E0CDBA056175066D1F894C60EEF42979440A641EF050790CD
-14DE82ECEDF433876D65DA2E1A3EF1AFD0C5D0C918AD85C28A643CD58BB8DE12
-884FE854F9E5608D5A6C634DFB93E3C6D72425A67747DB966E89A02DF174E679
-919470D3F629B6B99F20AB65973315CDC9643E68424E9946824D3E214030C67F
-1A7E459A0C22D22698FCEB6D52F37C1805C8BAEB312C1FA754384087AA752FDB
-116342685A6B0C66828451A78D12DB21835361264E43B449468A61D60457D3ED
-D124475F7A3F05D3858E050C1811F9598A3B1BBDCEA2D3B93F9A87D5BCA44307
-020A02727FA4A72B10D96FE21E5033B9C76765DE27AF1512D4FDF737B3DB729F
-94169ADB1C0E07B6EC361D7A0B709637C382C3409E01F5AF9110731BA2865FA9
-41273C6CB4058CA6F0C08C04DA937D9C07894EA65ED914D08C76621A975D0B99
-9987B7D356D6254F4EDCC3850DC28850EC79ADEEA1730A95A51008298B187C41
-621A3B18B4FF4B0B90671D326FF20AC79B02B826EE424B1C9B3552BC2A7BCC94
-DC2A3CCD97AFD212AF1046B86494A564B9BF6FC5CBB3855A4FCD10C399C0C2CC
-A859CD24B9FBB8400DE84273A56CF8352CE67A5B39CEBD7246E663A08303E83A
-14241479C0309B0D470D66C4F08C2321312186FEEBD5CB80BF1A623EE006BD6E
-658FDAA4FAAED51A0486FA34E28556EAFF784DF972B92BA42ABEB69FA9917C58
-0E0E1145503859FC0206BB738F57D1AA4E8C101A5493372E39ECACBA3C96E428
-A89BF1DB741284ECC41A49F2FEE2280588F67EFFD97C1F30104E4596324B5C13
-8A52819943C925352470783A00BCE74F2813CEFA94B75D29994ED535978D2A12
-7C89AF6CA16DD8D26962B1E3464E073192B8DDBFA13D445D84A106A5B8FD3C15
-F9FA35B6B5CB58A6F507745FC0CAFBF824219674E9910A4E6C853534933069A3
-A9B43A3839F3E7071536EDF4F00EDAC28A59EFD86802C21B39EA5C31F6534BB2
-9EB210CC9FA2AD177BB1C01C51A711F2848B089851D5873BB72C38688FBD22EA
-7C3771560645DD8216A26A2A00AC05C3ADC58241D932A2E7C4AFB74C4F241FFF
-EA7766CE6B1BFFC093818DCB26E57730406689797F38762896FE03D84453CF1E
-5ED11EF98A5677523A01EE4FADF8E6A87DEB684477D71948710AB5DB30DE1E4D
-76D66C74DAD470955C276A6B6BFF6613594454AFEF5ED712EECCBEC3A3278C96
-54B24FD2F16607D18BE8ED4F0B35675CCE0A5DB08CF3C392C17E891D244251FA
-61563E91BF029AB5DB30787F6BDB56C8E72857B3A3F73C16F8CBC86B05D2EE7C
-E4C2AD1A440C56193C36A31CFF1C5C3EB1B3EAC8D051BC4B3605A0A8689627B1
-1BFBD29BAFF55F2C85EF1E00D167DB8E7D7585BC83297AADFCD91A156E9D2E61
-38967A50749362FDCA4C1186C7C72DFBBD4575A37E51B6A858DC159960E487A0
-F8FAE74E35E287DAC0AD3F149EA24EEE769E9479101429F6093CB1F417DA65D7
-3DA9E13839475D764B98F646C9B48E367CDF21E137069026FAEB3BB697272EAD
-098289D24348074F177731A736506C048CD6EA33FB85145BD95D1EBD7EB52DBB
-C6E6DDE5EF8EA2BA33216135638FFC53551B89D35C15DE97F6AA91D83BA493BB
-DC91FC80F60587359038255BC33111AE0A5E7D577F7A05C63B13128A214C85D6
-F7FD7DA077310E22BB40F43E2288E38BEC27DEAF7FABFAFA03D507AE4B9BF4A4
-81394F81BBEF2B374B4318A465631A7E5692BE1E0FB24A05979D661F94AD3F3D
-95C53C88650CF4BFE316BC48FC15B078A14D2D6F56C5D6661CADD82A0CA5B3B7
-C0038BF7F05E621B6B6E9C7E74283CC4A9F41276A4C8C4B159880F80EE5F412C
-175192167F0BD87D90AC9EDEDC0DE742312939633AA47F233A2293A984E26EAB
-051F77F18BF6D660DD9A8788F78EA563D1B947B6233E3C3D9FD520B905C10B2D
-2A5F7A627C4EC400AFD9B750751FABE5864C4437F0C0026ADEA28AF1476FE62D
-7DB423FEE234BE6FB792178146C9F0BF133316548542746C03B25B2E78C45561
-4565C772DD83BF994339BD39C7E88C57DACD11ACA9FA8D5D31AE9EEEDE15CBEA
-D8C734116E0AA946AB76CC44C3C6AFFBA5BF5B1F7F3589F89EB8E206D09A621A
-E67E68BA1D617519D49E6CFA3699F27C75C3378FB9BDE01F31775583E71A23FF
-1C9BB76954635E46228F2B255C9E5112A0D1730CC1101AA8F2ADE8AFEAD934B0
-DBC063D917CFCC70E9929A50CFEEDC9A4D482F6C57CCC97300B2205FE27E51C3
-B92A11EDB7CE41F09B86B6BFDDD51EE0B30DA0B73E43872F8C14442B2B96F52E
-1F0A717E8148952CFF00497EE8A495E1113E26B33A66B1E50B71C7DA3FC652CC
-1F756BA352FF6DED439924792DA16DA6DE9AE785A57E10A7B25422FE3BF44BA1
-5DEFC6A7B533274B4D93E57E68DA5DE125ECC49C68D2E19872E0EB14DDCDF3BC
-3680D9BC0EC07DF69BF60B48449FE08A4FA39962570475D0E45FA78872A98F21
-19925097835E69DC649A5220599E77A1209BA8B4C54DE1724D0220518BD93A95
-07A1F90CA79F97946FD351866D1C5DE9093C474AF5752F0FF40155A8D9389635
-AD515F7FE0A6E579EA5A00DA70C0964FFE64F1C0279A0E2AAAEDCF56499B48F7
-5B8106360843297280EFA171D232DBE5F33097960BFEA1324B895AE31DBAD69B
-C0C189588476479A9CF2E3C38DF2FC7A00ABD56C02CEA444B48552FCD94F1039
-F5EFAB8EB94ADF4146B992BFAE91AA72DD118E6ACB08DB6C1809ACA82DD1E1B6
-8C2F8C36A3EBACB14F13E0EEA9C2E96C6DB71CFB171CE1A72AD3A6A675F578F2
-A093A80B916FC74119A169C29B4FDBE5007CE11613166F7D65CD0C1C42EA499B
-60B4DDEF12B952BF3D9B6F6BD735618F5043F87E040A21CDE7839F58264BD058
-E609D9C2F480C1BAFB9FF9F4C5CA23F5890B7BA58EBCC02A5FD4A8DE47692B53
-4BCA8A2DE0EB379B5D22F7395299AA54E61EEA4CA54FDD3B9D9C4B727BA2632D
-CED3942387A3B30075BC3641E3FE6C793A1C6511EF79DD3217931C7E06631FA8
-936828278F1E6894FE8600F5F01EB4AE50F01EE69DE340C1B72F57E6C977A91A
-FAD2BBCD5FD0BC12AC5A404750874941CFB9354BAC5718C65AA793A13325F44C
-A09F1CBAA8A8C081EC7495A965A366687AA2B5FCA1A09D09EB9B9B21F5A6F828
-111F023932EC8A55C8C381F44D29C5A13C3AEBB9889A1EB96A90BAE1B83B4CF7
-A12BEDA0A0F22BFFE9F16BC4051C40CE81A88B33C954CB7AC64A7C9DE7B29F36
-4B57DD9D3490927BBBCA649DA16C56E2C00D42ECDBCA91975F11704605ABF9AA
-099CD2767DFB36C16A2784456F9CCDC0D0A940B35C3E1FFBDB47C04F73774086
-63DCCA9AA7555D952211A687114BF2F6CBBFF8F0E791E349FD359A3BECE71E5E
-CB1BC5EACF49A44E8768AED7858982C1693943DE6E3599CDAFAF3932CF1AAE2B
-0E50840D217B0276A3227D7C78FCD7F9CF9963CA2D06FB83E3918AA25F3EFC11
-ADE8A9F508F7F980D05DF5FF6743056C0CA95CB37257E8197A538713826D7EBA
-0391D9DFA4BA33CE5D5FF2FD88F18DA7B6FE01A796DFCF3700E6794F7128791E
-82A9E71E70E3699739D96228AB338D1B4CEDC95627203311956700D216891ED1
-C24A909E323EFF2D289D0F36A8E9F915DE3413784D63604E2B2B8435FEBCCD19
-E66A8C21E4883D2EA16FA2C851A7CB55FB52B6F1E768399754AFA160425F40D4
-C5E7A2F473D68D02B214DD73BBE3AE3AED9999D99B1C4F9E80F1017E56D2FA2C
-9B008CC70B175943E39DA05FF35D6D98944319C1769D05DEAC0A1FAC7FD15361
-6C645638542630C3F51AB474616D1ABB113FE30B0A19C75952E63F6A6C66A777
-0C24C643FA00A89A7B87A516E7964620992E692DCB7CAC3A9C33A3135223B7FA
-E8D2B15C490C7F85939C567BAD5B89B042E165B3027AE73F3EF551717C295107
-DFF783B63C8810347A615830E25DA5DC3AD34173C543F9D0D70650B3D60713D8
-686DD99437F8CF01BDDFCD12DC21A7840A32D80BE8040C1A92476156CAAB28F2
-6898BB63A4E4A1FEA0DE3584ECF4A0E5F17884C1EAF9449E709CF4D740863E91
-86D4DE3CADD661DEF2D3F774A6D5012D8FA517CB55E8EA2A532A06BB66C3600C
-460B0D7ABD9C4364FC05234FC0F2B086C661224BF0FFE94CA13267A79482BBCA
-30F0CECC5A11493BCE4F3A051F5784E29770491BA1970E6AE53F1116271D9E62
-F24B8B0FF1FFA1B7B195B5052690907A1BA7D03C1561DF34918B711F4D223865
-DF1DDF64FD2F662A88B5F37A05F07A88A66DA2A0DFA6FD8850C7FAE9AAB65E51
-69FA8018D40BB0CB3BD5205EA9083E4E871E0FA4FB6EC9DF796CFA4A28B48C7E
-086188265B8F0598B5326A72E968776895343B4C6EBE931C02594B9B857AAA16
-0F5FE0B660F47B32E75EB1B6EE7764831AF3E424D69563D6264E7F8796A513F5
-DB640C8F138D523C3AA9A9DFC3FBB971004B556D76FE41D3BCF644EE472BCBFE
-33D3B74A906E8307EEB6EF88899EC614E69C69032EDF90BBA8DB56F6CBCDD52E
-6D518B34E4A8B65527C589C5B3CDB7D4028EFEC7DC19A97B5D096A52408FAE4E
-04FE33C215F20AF30A01CB47100FFE020ADD1F4C751105811632B5AE02B9C6C9
-C54303AA9E610D854454E7D1699F51DDC5C347D74900EBFC2F4D39A2AC4545AD
-1BB8973D14F210327845F46EFBB45F900657F075F4F63FD072C7D8D0C11FE939
-4D7CEE776A6E8170B9CD20083FE78AA6154C10299967244F7F0F9ACE4758323B
-7941ABBE3ADF933515628603A7E3E0C8A26D62603E2622D95F4CA67EBAC96C28
-F56F4C895CC9C77C51678B537C620AC33A19C05753A5A378AE65F727EC486E57
-5EACB5A6DFED74F254A997A807AD138CD967133769C3087F78E1BFD00F6522A0
-8F9D0CFBA244633D94A36B0F4973345D75F92671D30CE33E48055B7E2DB3C5DB
-297B1B7AB6FB99EF948E3C78CB5FE43B2355BC181FC8FE50B7F9CC8076203497
-261907E87CB5C9B46D36B6A319F06294556D42CFC04CF446B9B1E3361CB8FF80
-C60D46F478586A2CB9BA8D8C7D7FF4FDEDD2FCFF429CAA3E82EE481BB11BE8D0
-75A577B008FA11777B7122F994A9094907C991D22519947658A5CA5522F2E439
-F692B2FF173021CC69583F940033FBDE1441E7E410FF77281FF662A96FA63335
-2FDB1642F5337575BB71300D99974C5E072794330FB597C45B5FD2B7A50D1092
-ADFFD7F4D8BEB6D0094173A74D8716AEC82E6BD3F54D1EE81853CA4CE449F70F
-EAF892F11B2B10078653E3E976AC5023CD9E8720CE64DC0B27B178CA93A87D36
-922CE12E7C0015137F802CB9DE57B56E2EBA8F815D33AA59FFC0908EE6CA39AB
-A198650075BA9C6D4071D4FD79357FDC5241F57A134FA3A91116E31F9170FFF0
-4474241517507B5B4AC37F60EFF14052AA126018A04FE5ACE5E0206EC88C2682
-9C5956F8640EF2A02F3934D0817C871DB8BB264B7AD133E18CA746E4AFA86603
-B1D0E26D7C01291A399C8CC5EDB836CAEEF5725A8B609179BFD4A886142ED4FF
-D23E51ACC050AE1A1832CAD1FAEC9610A272A79BB061C65351AA7470CA158888
-808C2CAD232184A8CE7275D0F914EE68A719BF4334970C5804331F3BF0F54E6F
-48CD90E445B2506E105F2332E0CCAFA5A6E24451CC86B5646B8BD899BBEAA77F
-DD0BDD3A796F2E348E9D8BFA9CA64C25F22C3F2FEA901CEAEC7CBCFF2C05A4A4
-D592F254E4404D8296A157A0D09C92FE2D9D172522F6899AFFB4B8DD2F0BE8CC
-CB6D1CE4DD8943CE1B67C609CB760B9D018FEEBEF38F786783A7772A74A0AA3F
-187D6F59513108589A5F65F52556F8C82A25ADFB4621940D74D3734E0B584480
-18FF5EF6C37936D65848F46155C57D5E91125E1755BFF945FFE3D6DBB8C9C7E7
-03EBE3A2A20CE540B22B95A8AE42F5894E3E87C608BE88AE694239F3889B54BC
-78A8A95088F4F2954305FAD3F184D479692BE150C7D668AAABB1DCE5DF4ED431
-D326133CEC3B40374204939000EF2E953D105F3EEF4DD5224C11D4EC886070AB
-CC22764AB2CFB27D7B8A2CEAB9EDBEC665B1C280B2E312D4159478FE2F7EA864
-653E35B06760348EE14141610DCB40C50B1F264475B9D0E872E1EB9B02302333
-B1C46AEDB1DC916578247FC0D01524009CBDCA1BDA4CF1A3BBDE122A2433566A
-8D675D015014D243708F282C9B5DE77A0B8B3C95616B5B514A3753DA818295AF
-7AC048312BC6C4EC63F7DDA88B3A6D0921435F6DF3C24F422C300F4E69A224E1
-F30275A8D3288A3E60D620CB64FB7B3A61A01017567240E804FDFE093FE2D99F
-B95A7B91E5E6A789816862106C5AF37EC7C2F32C9CA3A2326C71F96165C5757B
-70034273B7AA33A959340FAD21898D6951A326B30454D6F651D9CEA3AFC74D2F
-D4BC67B9CDEEE61326125D4FA4A1A0F409A634D0047ADE6AB4F39C1EF3A7FEC8
-15F1EFCFF7DCF1D8AEB833F7F7DB3C4AE8EB3B2E4A52133DD8073AFAAAB19480
-D77EB2C65B16FE9D1422D36F254EA7743A09C1C5ADB1D25773520954FCFB293B
-24CEAB37A6E5C8E5665E09C9DFE1F38C519C49CF65CAA8A97E9A1C7305236799
-6641EEE3303FE28678C16C9FAE9117C4AA29F0CEDA89A9C96D112653E0DF43B8
-E5970068D0EB2DA40BEA84A67CCC568090759C8E58754959AD1813F1EFAC456E
-138FBB10907EDC7390A0ACE7DBC720E59EF5FBA41BF0A796D2BABD297C2A3349
-5F81EF1753925B85C5364F64DFF3E7F445846C210EAB32015F9813936DA4C3F1
-6504DB1022392AE3C91723CF0E14349E90D9A8D0EE85AC2F13E38C83B3307286
-66671C80E869F88538D1BD024734D11D05128366C71EA45572AA9A38870BA66E
-39A9FE1E0AFE9A64C5AB84F6D9739843949B23EC8C322F0F36DC8ABF39D3A91D
-9F8775180B16185BB23C1622C8ED6F3FD369C4C98FDE12EC9FA2A595E411FE4A
-F673680B2D3DCAF39DA49F08E72D73248DBE9E7263F18FA96D4848965876BD7B
-45555FF0DE9C495A698695429FBBE060E928E9EC051807E4A079FD16033F8622
-D46FB1870D1C05CC5775D67EAEA1AD6EB9375835A255FE69500C0C638F3051A8
-82662402AB9032575B4E4304ACDC286CF07511DBE3387AB41D45777158E2159C
-F160FA968C48145E35F520464D444036B9129968392BFDAD86784885BC7BB0EF
-885BC94758B2316F4BE7F7FFDDA910EBC2C6D184BC4073DE43FF69ACBE5E06F8
-79D5B80561B76AC8C614C65D4D95CBEE246B3FC5EC73D71D8C06D1EBFC83EED4
-4276F41FCA8C9558DF499EA41CF3D605D70BC6EBD366D1B42FE7947067EEDE6B
-93093E81E288C9DC6C67825378EE6993CE61CF1DF9695D3D23F89A76FC8E78C6
-AD481A7AB09F5DC59F7FD0685EA60B47A04384F536E05FB02388F6F94BAF656B
-B6EECB5EBA3FC10D50FFBDDC04E41ED4749FFB7CCAA6EEDDAD5720AE43D005B1
-B517AE20886CEF2B3CFA1A0AB2F42E6CA21B98FE9D971C2BCD8531A232A3C618
-AE92E3FEDEEE9CA214E4BD2AC55E3D09EFF2F83D709F4205D77BDD60A6137DF8
-AF15DA5BDB4E179801E398A9487E265F910C1400A9EDD96A79E87F100F41AEE4
-5501DD30F1DABBE8129E03C49F34509E039BF9FF33027A7DE0151F0C6D1D6763
-BA3253AFB8C6EB952DD29971DA58DFECED4952D66139FE2CD9EE6AACAD552C8C
-FE9222BE9924BAEAEE3A4697AF0CA6750F0A3E78EB9D3C30D0C7B28AFA8560D6
-FDD44499B606474AE0FFA2321C9A811886B560D8076363BFA89E7E4953FE49B0
-E310E989E5B2CD312E6677B43033319E2C672559FDB3BDAA87213282BF7D002A
-3253C607122E33229A895E37A57D0C5EABFD56F67D97B6491CDE12F8192674CE
-294ED9D67C1453598DD9EA9A39A8B4D59EB31446336A89C99E00364866987BA8
-E020434BA059FB185511A24F568CF9EA2FD892FBB97B7E717B90D6D473865731
-516880BD58AF581575B84DB2E53141C1ADE845DB4D5198927877EEF6343F6982
-A644AEDBFB54AC043A6C7824C5A0B95E5DA08297E1220535AC94290BBADB9E68
-D6419787135784ED0442627AD5DBDDE15CB4DD39A6DFA879A6394BB2F1E48D98
-8257B7877AF61CD99471799B798D80A32F1E716181F57BAB600D5E4208172049
-F62CF7548192828ECCAA3005105341D85BD2C5E125403B9A445E6F9A34A12CA4
-566FC725245A914556C4E21AE0F0DD637FFCCADD3424D7F60AE417D0F5C08E5C
-BF539432E111FC4B41F0BDF7936A40C5747DF6309BE843BDC19FF23C920606D3
-0EB2660B4783212FAE51A2951A172549A267E606D4F4316ACA08BD7B4AE22EF8
-51384F6A6DC006049AEACE4700CCD6D3D2799684A4D9744346F9930DA3731806
-7092B1BA0EFE643D6C12C32323E85BEBA3BADAE1BCCC35D7E1970C0BF0C3F43D
-4D1857C4DC06FA17C1A2688E0D0D2CD065D368B528F5E8C25B10C3E66FA50AC3
-E25138B4A7312E076CC158E71AF675A0BCC84A7D29AD10FB2F4F1D64E9FF4B60
-1A8E51D097CA8F7ADE80CCDD559413812C76C8F78CF3DA09BEAB26745EC2B66B
-725FD65B4C57740EB32A07222D4C09D4EF516E05541064AB13E7F1DD7E8B8FDE
-4F8A68D888BF273B1913A5C4828454B02B35FC28079C1D004511990053E894D9
-C73609795A0C8EB9C5EC23CAD88BB51F336E5FB3A660922876CC5A65C769850F
-B32FEDF7CEC076451AEE18731EF3E20418A257EB7E5284A0CF60010CF4202140
-EE7570AF23EA836FE0F181D92BEB73788C5641F6ABA737B44B880A6BE7642DFC
-BBE6A01FBABEB6E6193C54FB789EB08154889C157E423C88CEC386FFFE6238C3
-9605F1CFC9414E90AA02553CC202C006B15923BFBBD057483BC8151397163192
-6764C00C52CB18BE39CC4250D4F27095F80A669B50618EDD4ADCF1BB717A2927
-E4F79DFAA8612BB8366C405E98F8880122D3F40B5972A10918DE869B1E62F60E
-DC5C98649127FDDE91D2DE4C79796171AAFB9557AB0B9248737D63A0D16E4D6E
-E1FCF08786A454BD5934D35030A9C07D526899DB2CAE0EECAD0B6F551337370F
-C19FD193F596F9ABDA76296A6BAE23C05F70AF4C08452C918217CCD7526850C7
-B9A343AF14F576EDD9503354F263A7F61A52F4B733F8A90ABD958B3EA1C5B19C
-6F6FC46EE0179E38CDB51303C66944EA4CCEBFE2664F430033E43C53B5E29471
-DC4E1525896EA7CC48760CED4E27DF51A4363FE23623D369579D3269ED830C63
-A7C9B6B75B8B28BE16527B2639251EE97B65952C43F7A86E0E5DC24137DE6E28
-38C9CFE78FCE3DD20660CC31DB0100EF7E1AD06BD4EB50D3E70FB57B39DD737E
-D281BA957FDD01758B80AD83A7EFC2796EB5DC795F923E85D50647AE61FB9C10
-74D74E4921B08CDEF6185A2901DE7A401808B820B84E66BD8B21C3775B272FDB
-4F6620BC74451F7E619FF7BB48835E2F426B76E446B4279DFFFCE66A29561B55
-1B4B4ECA6074BD019737D80B8D6735998F60DEAF045EC2353E5FB9EB2887C42F
-D73B7B5F9532D0098B1148B85DA089F2939FF02C9E97AA25217D7ECC2869148D
-8A4C43D6EC227766D21CF84F1C5C23EAF57017751A2C3713FC49F64F54E4FA90
-404EF49ABE7457480440F98048D6A8D339D0E84D2BD95F1B0FE3902BE12B78ED
-E7D22706BB67C280170B7BAD52E4E2E671EFE8110DDB0135460E6239BA38046E
-8CCD8CEFE40CA95F8EF3E05164A8B7C0677FA2D40F609F3030EA28ECFB3C9B3C
-8D4ABB320849FA87A4F3C3FFAD063019BAA6EBF37642B2DFBC08A5F995636E20
-E166B409D0E728F316FA79A8C1A1A90102E57FE83DC4DE3DEAFE3BB244629EC0
-347DBA5D11DB99E72BFF743A8A5E81347A9F77C020BC9452723915398F72022F
-B92DFE6B72F8A0B4913E05C0CB80E952AE7940534E3E52F4EC1DCFAF6B80616F
-1D22448D8001392A6A6C9B107AE99EF29E8024878F845811DB2A95F55BFA70A5
-A3E92F47986F02958AAE10141956C75F5B3BDFEA31623CBFD937CFE222EA16ED
-2F47D5861B1888C6B5FF68D590A2A7F9C86BF13727CDB0A59B9D8BB778114793
-165646DDF760C5A1860D06CA493D52C52ABCE6EB3D1B56F0CE1B92BC30B9DF48
-78FF9791C41CDF4601B06EACFE80682B88E8F26BDF5E65C29F8C158DFB79AC9F
-A23EBDC8B1A10B60C2C6BF4133E25032B07B559E91A121C63FD0139F2A1382D7
-D723B727E00CC36762EB9A6616D83C76BB3141ED19F69F0DF9D1D222E7A97039
-F9F5282F6FAC08C7CA5F243E5621F8B3B7124F1829A81A43294ACDFA8171B413
-147D910EBCD820DA2486A7B38596476FA8106B68C69FA2C2B98DBD577D308602
-D9161CA4AF3239831B8253839CDDC8E9E1C2EFDCEED2A96C868BA097706BA465
-38B2332BD60ED8D8889E570DB488BFF23EB1A54E34587CD276AEF66E89B1888A
-85F0D1ED88A6E21EF0ED805F629108E4BD0AD51451DA19D4049071F875409023
-9B826C6F66BC40544B2A559936F8C3E2728E70A4CF42DD2D41
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 40 /parenleft put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 50 /two put
-dup 51 /three put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 123 /braceleft put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA41101E19F8FDDB46DD34CB3B0749
-5410293E3008FA73A6197B2E3BDC593A7FBE007CAFAB124C808AE2859E1E27B3
-02DECB8781E533F023F0A752B8EC1310E28908EF443CF44DA789A615DB76B1BF
-463F16077F7E05208BB95299132F8137640A8301B9E8057C97B07644B1170F35
-1206A18C75C2EF9B8EB3A23AEA8AE38066C32878DDE27D424E53B5254B3708D2
-C3750210C4A1EEEAE38350EA0F980D0297066910FA2EE797995D3A886D5708F3
-ADD7DB6427B1FB9E6002CE7FCA26808F50CA01564DCD7EC1732CB99D9EAE32AE
-DDD50DD878A849484DC3AE168AACC456E011BFC668524A88A37CF10225DD780B
-CAE018038E62585FDB13CAE6CE4FB067021B41F37A16F15F5C9C87DE63E218D5
-4B1EEEC40A8A73323DB866B30CE8415B995555CBA8EEF3D631D40360406E71D4
-19E5262DF1656DDBC683DB5AA5973062D84A784E75187C2C565089294A3963AD
-AF257AD1DADCAD1B6D3587B2426613120A1DF4A5156FAA65C9B2089389CB5E1F
-2355D1D95B55C4D4663B9318DE9CEF31ABD540F396980C1BF7EB635C0E7541B0
-AEFA274C376B7732F7A196B931A2D5EC585A567A95D6051D04A0E511987E3550
-F201450F2CEA6F0766FB214315D7320E50458EA84542979F17B1E46513FD7EF2
-6BDE25058BEFE40C1F97BF975439F149E5D00F2C0E282BAC28278AD8AD46A0E5
-829FC3B8D27792BB1856FCC681DFDD0EBF4AC6C49967855DE59799DA44A86EF9
-5EE262C07D91009AC542205D095B1F99758C7A386C977B0E49C2FCBE68739A83
-327A11940EDEDCD1233232DA90F39EF6B590756A74B5422A0BBD9CA583D7F249
-98B74752EB51CC70719B7B115BDE8AD532395FA730E6CE753D56690F6D0F0B1D
-C3013990334225FEE17A4D8F0EABA11E042F7827FE1A27A130B614D60B476123
-73F198B917958382B2D73449B892F4D192D1CDD1FE8C70B2A46B358415225A04
-ED1A9184983B76001A63F46CD56CCE48D5A5F33183F35949082B2765415BC0B7
-E7A34384D3985E064D29310DF3D085FFFEA83E437701B56F4103E48675C1291A
-511285A85EAFA3A69CFE5D0F0213430AFD12049746DCEB3A2FF6ADA7D917F158
-189FEEB95577B5D8A7B85A5A31375A7FE1067FFFA70F4594E3EE425BCA2E2BC4
-95B23DAE1CD424917AF01F5640CB6B758268CDE667DD4FCDF847D817CA9098BC
-B6E67FDD3C12A0392F63CA2A9272A78ED483F9F3BA9A32E30BB3F50E90509FB1
-2CE28975B20F3B18D7FE2CED4562088DECE21843AFE38603C511774433C52958
-0CC685B4C5497CE6C4A40169BFF636DD22ED7A3618748DEE08CF6A2E28221D09
-7F61092DC9911B101B335979559F1C5F3315B954A533862648A882EFE054DFAD
-1520C9359D64751F894C036ACCA779092AE50AA630D906D57A0E72009F47DDEF
-6B27F4575F09DDAABCFA09FA614D23B4FED547DE8C590F0780A8B3F2BFB7A8D9
-F60773E1C75C861B0E66C2A62CE09D7E0F40DFA0E09A28CF5989FF59B686A9AB
-380ED44F61E286C3427E7E5EB1E3AE824785F027ADC45E741687B9F06690DFD9
-2ED58796B544D797EA260DE35455C3D85C5B2EF43C07E8E8F1553380A404F7A3
-8D2D11C7690F7195EBE649E1A6AA2A89313FA54CDF906FB920278852D4CCC566
-1E4C5B250D880321DB061F5AE069DCD28C7AF449CA265048A70CF3BD4C9B4F32
-9DC83E5D2E95C281396460DD529BB40C87EDCE512A443777168DD90583490C7C
-CEA97E6DDA0A3A6DC65AE1BDC977EC425F0C054F6503F5F704426CED87A69F8F
-E03BD90788B19BF05122A6E43AB1EC16209062A16790D1D560239CCD3B08BC9A
-23C2CBEEDF42DED6EDC61C3F672AAE0C18BE563951C948266953B7EA5208B5C3
-56287DEDE6DD29658A98583FA150DB7C60C3C050B3E77DD7CE63D0EAC970AC3C
-60C1055ACCF3125B211F63EF9EA3D1F499E691D3C72E5B58154329ABE46DBD02
-0EE4D2A7520F471661D118868CFA2C636C94A65EA28FBF3810FB211F9C4BCBB8
-B768F7929B7B76BCD39D33BACCD27091876C62EE2FDB416459F6E773A5A9D463
-4A7A4D98F595E67F738E136EE94697E9DEEBB36E72818CC034B53C19C3D4B2C9
-DA5A126A32C728987D04DA86FFE88A2DB7224E5C15ACE12F22CCE260F3CF2438
-5D4DA6D4417E9889A5074131E7ED5EA22DB32265E318BB6A82C8A9D13A74B698
-649F49142487F511181980C73F50E0793A206FB82CBA2AB150D542B9C23A4725
-CBC16FE5FC4B10233044E126EFB2F4A6BB66FC0AD2F091F3B83B3634BF1760F4
-E1CD587F8A717449D031A4A63FC52054E3503294A3516E914A223D30676DDB29
-9E9ECDD61CC4F04D0DFC05FEBB09EBD5B09991B0729E6A3BA4D5265AF30366BD
-E997A7A200367EFA2BEA748A8E04337EFF2F5488A2AF5E9D6F43EA80638F9A03
-09A2D304E2EE9CD9DC06D22332CE2F59783537D2C7FB40482A14E95E914209C8
-632049C99288266CA8B7E773F8A9D8E48E887E9E85B55B6D3D561882D2E8E43A
-01D03FF7750707CCC3C144E72E9074616F213C335CDF67A036E159F0D584AF46
-91FAC76CA4E85C9B78F941943F5C7323640FCA279F9323D104EF2C12A49743F2
-06B6B033B72819743158CA8A58118FF2D526629E1E150D314BA188F74458B4A5
-D90B8073954AFCC4FF41D41CEBF0AEE88B336B6DF70F9E89F4ABA7B302121F6D
-9766F1C05813EDDD99347C05D1F8CC8412520971EEB622A904260758B60635E8
-CACE856DD8E6725AC2FED7C3917B25954A684E1663C4E04FAB20D76DCE40DF6D
-D8507A20B08424A09A11F16273FAA3E71DCD916E1080320E5B789A84CDD89192
-7C10EE0649063AF47EBD90B94B861DB814C4BEC3CCB5705C64BCF3F83CD112CC
-946664EBDF1C4715ACF9905A58BE3DB3E11DB62135A9066A8BB946C2ECD5AA5F
-C39ACE2DD1956EA3F34F08F4AFE400BA0495D5DFF65C22C567897BCD44FC5114
-AE412CB13C73AFBEB9C5B70C9CFD73CB0BA868BFA1F57F9CC3CF97894397C479
-CC5254D95B432082D99853E23A0A410C6D63CC1B1978C1C099119C8D7D75FF67
-D3F34267A6D3778137601E9213D2C89BD9C407E2790DA06524497C647676BAD8
-FA32017CC9CF8A5CEB9F6A48F7434907564EDA3253B0B9F2078909E799BB5405
-B1C5A5B7689A700F7F47F206955905F595360E5D0DE91EF67174E0A526CE88A0
-54456829B844B3B84BBF796394B7EAEA0FCA50A2D0C033DC9C83CF7309A2B704
-8B00AE855DD2E52808316CF7BA9A5A2AA3DD52B653DF351F930AF19AB934B110
-D5D77F98848623F60E887CFA5B2A9E680E19236DCC37F99730C925213761B28E
-0A91C64A264785AB662889F658D0F7532DCEAF433983F931B0DC80F361DB3EF8
-5F8FF33FF46707841F793C2C3C6FF8F536F46FB3F42DE22E06E3DEA9541CEFE2
-5F57B0CB09216EB395D24BB826F8F1F0022F5EAA69472980FC7DF810EFE21D0C
-7EB290DA21A756D47F57DD921319B753B0859C203D5CA16E32FA91408245ABB6
-D5607EE50F3C9562B88A1037689CCDAEE0B9D6D40DF31D4703F06D2BC534793C
-7E1B77A735C9A2B66DC218C61852F5EDDF4D062E3804A7F28180551AC7F971D6
-EC2E5AA95EFFC329D74AE31698B78A12EC7248382ECDC0D9BF8A42A096668C88
-2A122CCD5B2C65160DB0ACC8468B072AB62428AF823380A8EEF92177DE627A89
-DA3A03EF836A48A810303EE4EB92E6736321B3B0A3BA9F8165621C110C08F365
-F8E76C1EBE0574600BD7BE1436CEAB10315FA769346776640A6A616731F23E3F
-3562C60FC75250328FCEF70CD2F9E3CF844703138DADFBB484C605238A7DEE1F
-2362A11144DFB5E5B7361B5460708C6361927A2C8687DE73DFCFE9373F7364EF
-8241A2A37789AFD6F47FA009C1A3A963A747FBFC8E1A1D592B8C8A405513A626
-2D5A3970051276506A46265F86A28D6E29D41BB36BA611AFBB8A713D19543F87
-B2BA98F715F9670C8ADCD0B59EC7CA1C45AC4436900AAC9406570E56A1DB48EB
-188166913D42068227E6853437E7971BABBD26DBBF07298035C13597E48D639B
-BB66C9CF42859A0AA59E395F5689B2CA25A990C43ABC26C3E9B176C011399447
-BC5C8707593B18088E9BF8C58FFE9204ACFB19B9CFEDC4B0CBA60D7DC25A6EFB
-346CDB2E20B20C907E5610E3C61B403996E5FBE45CBDCE19721043D72E97471A
-CEDA59D92692713F1F7AF0FB1B9140A995545AAA0FEFBAABCC40684BE0DCBF83
-68FDCB70D9D2546A428009C1F9CEF99EF720D12C5299A5856A33EDAAEE1266E6
-66892932D9C30D5DAD7D90E0F0617C412EFC68494A700741BEB8FD37F7EFBBF5
-1A901C4903930C9757BAE9938EB964A39C3C4833632CBEBE93C5C07FDC2A4E78
-27E6852F3DB34302BCAAD6626B10BAD1790F5735AAF3C236FAE3E1E8FFDCBEA5
-FAE064B08DF7B68F033CE4D3521FD41437AFA4F18F603791D8434E630E6598D1
-D25A011EA99A2D4C4E47A0D0ED4FD01E12B810D376775856608E34D8C9DF3724
-48D919BCDB09DA820FBDBD163A9FF76CDD61DB100ECFB7BC5DD08C5018D9F9C4
-035484764850BDBE3E688EF0B58EA6D93D2EDB5EA70CEE815F9B119E12CB60FD
-01CFAEBAD1256FCDAC96D767FF075C85F1DC6C5252350062498C62607AA63F5B
-BA376EEA8F422CA1C72D2CA837FC2829AD8BDD914C7233572C1E512B45F4FB54
-61036B5B8014780E2560AEBE548EBF9EF5D383A3BCC809558E9F337F462378F2
-5425ED071B51CFFD95B2952ACE7FBFDCF4686FE856195DBD8A8300FC75F66C63
-DCFDA5BE7F835C844FAA446D014782F298342E9B2691E2199C835ED83AD79B2B
-516D9439E14208869AFABE62AFD868BDC493D3B856FD2E696FDC08FD0DA551A3
-D9E44F69A559609F4478F0C1CD443D7628A712EC34E5536441E7F529ACDE8168
-652B8CF1FFBEEFD5E91CD2DEE43797C525E01A74A31B82AAC5354037272B1AF4
-15FDFB761B2D02ED81E6F7DE82EB6F74B0F73A26612461630BE9143A24769625
-86CC5C0BE34E568F30249EA4980E8E457D3B7454B44AD72EC70222E7FB87C1CA
-BADEBE17086CA0C898E3F6EE059C1C63C67F5B4967F11AFF115CD7DC27E541E2
-E75FB60A76E0572AB1B16E4AAB9AFC4D5935EC936862F0A08222423480014F0E
-14AD4669F306AAB1B841C374B5A910C4752CA79AB1B3F3E1017851AD2A9CEDC0
-150672A866C941A105FA02375AD1CE54F9CED00C7792513EA2681DFB6397924F
-9310550C0C6BF77ABD3979FC524B73D6E6A14D3AD3FF187B61BD33B4B5347288
-69FEC56DC2D8C1F8AFF28D1DFA9907CA6CCBBE34D12EE9B14E1550F8041564A5
-C9E0C292290028C162CFDBF0473CA11622C3FEBF42D94DB41A181EE51C09AD6D
-B7838DA1D2F6D98D99E4A8E3EBD89C6AD70DC364C25CCEC718FA499E7EEC73E0
-434369A669EE979621F74FECE955E3501A52AB14E5FCC3C3A8EC140308311BF4
-D8AF8AAAA59CD7F52A7EAD94AD8433635A1423DDA2187CE0EC35CFEC0FFC74C4
-D095AC9A7DBF182616078E954B3AD580CE8AF901CF4D5EA3217B1E734F37DDD5
-67E32CA4A59E9DED87439007F576D64CBBE99D7ABF2D12A9D63F7339E88D3A79
-90A7BC9A722CA7A5418451ADC14F6480363C00AEE363A556DBF48CCDAE30F9EF
-8933620080B9B24F2FDDC1EB267544F65679F0EEC21693141A947B4B981E29E4
-8C1FCF6F71EDC7C5D86B5CA21103F335C1D03F99EB5A9D7FC348B8A65092E72D
-F49BBB7853213A06C15B01D3FF5BE94041B709737865C4C34ED4124801CC3D5C
-4E719494AE482CF2786B3DA85B4BB747811C865535BC76ED597B71B0D2A896F9
-E2EDEE96974352A3735F892CAF48FBD944A1E39C319C4E69C8CCB0147F643CFC
-6F8C72E312E65C20B8DD5F623F0A0AB667D65C4EE5EBECA2B2E6827ACE502C85
-78421A1731FC792BE5BDFE9B90C631838E299A72A19EA564487DE3B28218AE11
-F30FF509AB7F223387E7AF6B3E1162F1A377D8A64D0FD439844DE8264621FA8D
-1FE268EAB4FAD31C60F4EAC668A1E44E81D86177721E8968EE05A677ED7E8507
-61E34154EA7A27CD27696D3B34D932CA2DE65687DC7A2969BD8A46E30471533F
-E3129C347095832C69FB6FF380CEF6608821A57381CC551B771E33D969815EC6
-A7DF385DD3B50F26E025797BD7808F6ED254AE3A5AB0664AE1E6DF308A1F7549
-2AABA4EF4A228E4A932E87296999ED42080AE1C260A356407DAC03A3D7F09D8C
-6EB3175950EBB743E02119A7ED867012680F8065CAF41E0864E1E7591D635478
-FF4AE2B7B2D25F45568AEEB57B0CC0C86C49EC91F8C84515CDC449E57BBDBEA5
-07CACD01599A368E7D55DF58A8260A89288EFDF87E15065CE6161EFF495A1FA2
-D37A9265AAA63464A101C98E8F38E866C61E57ED511DA8D5A0B95E366967FBDC
-8DAEE09396B6C542C024F543013D619AF7471F9E25BB0003A0B7F01E10813CF8
-8FF216FF04CFF8BB1047D7DA09EC94A5E46C22592AD501E2C4D77539D75549F3
-37039C3AB64281310CDB07CDB1573B2BA0A3F9512C6AC2A411FEDB4972A63ED0
-81C9669D6F1DC786FF0C5E3AEB5B836A80A0A1069164933717672BA201B91A90
-D79568FA3C87C974C6932B33CCCEB6C25ABF0E42B39CE100E5B0EB7FD3A5AD09
-1AC044731B1DA133BFF68C493894A5DDA8EA37A968CA059D90DAF8F5B4677CA0
-96C72D48270959FD2468E84D0D0D40A62FAAF309FB1C81013ACF51ED861A8567
-9C49CE9F79C85C04DD7DA6FF28CCCF42055C0C978065B8AF44C95E9184591B28
-EBE5DB4DCD92960E0C6086A08FAB63CA8002192CA28D70ABE02AB7E20EF11A8E
-05A1F274C64C66D9CE63990EAA71B2FF4EF315B45B8E0528E05C9185DEEE215D
-B49619D301BBC66D3DFB8BA1E5FFD7F66FFB003EFC8F472BF46CFE5DADFBB943
-3A3B57F94C54532E87613AD8B6CF52929A42A449D16AA40DE362558DE9F329E0
-DD09B5498BDE842FB14924BCE20FFB13B0FD393B6BDB427E46B8E2E0A0F70CD7
-B93F43018602E5F74BA11EF2A8DB031D6FE1B3EA2ABB165FC550BC233C442648
-B7E78BD68150EFCEB92DD47660781F4A39A74DB35922F5C935DBA398FD7AB77B
-8E7A230E1E81950C308FDC2A6CA5E17151E6119B4CD058237DC50DF812D8AA1E
-15BE5E0E0844AA5239B84CFAF9381DDEEEB5E3C99E6108C805407E30E3FCB96E
-5DE662A5F576C486779D10E5E4E37FF9B06237C527D4523EDD5AA03EB863ED41
-457E46D1A9DA0E26E79D834FB435470DBE0DB3C3EC0F639DA999F7D2E3E217CD
-81386991DE2CDCA721DE046F7CE6C9ED03CCF87E4D980DABE15A291D6CD3C158
-6468FD891FE00470075ED3312411786898226794107BBD4648F046138F5405A7
-11751B3DE6523FE715FAE02FBE24112BFC3F2F6D129B25B3B7B9312D4482B178
-C466C10BA1989CF1BCE66BB4B42A6BA268AC494FBDC6FAEAA7A72ED1C48F405C
-C00C5E70C917916407395C7D9180A95389E5384B8F4FC41CC982A2DB8436A143
-3CE48A4D32CCF6AE8A042451AA10366D08E99C90707BF8A60B6688949D0335DB
-782756592DB158E823CB7E8F4DF6C3DB1DD098A1DDFC34053ED49094119E95FF
-FEBD589E647D64B43EDDA638B83EAF462C781E2AC2B981D6085B280303339094
-F9AEEC637E45329D66F36A07683E567CC97D9BB8DE891F73FF16FC4B923054BF
-479E7AE19528733D6E2337DD1D4E75376CA9E843D547BA28C2D4BD182B807AC0
-3988A0A1905F9FF0D22B4CED5A0028298D31D570631C1892FCF87D6620A55D50
-24B679D50FC1DEDF84E4AD00AE2521D78213B85C364B16ED6F8BD012B6382DF3
-DB3077178D82F7F81D308E33D9767C18F7ADF0B93DD3C6D616902C5AEE775FDA
-FCA928094A5BD1A5224E3FD1E45F59F3EF30F086DD81FB7546632117818804FC
-70ACC6F6872C2B3E8CA29AA87FE9D9C1A8CAC1EA995F4A237889262511A368B1
-338146CF75B01838C71627D6339EE498B4EBE4AE8F86978F77632CA59188A2CD
-96C633F2B84F30097CDDFE6D2FF2FAA9CB82C1AC881FCFE16548CCC60CE89398
-1D91443E6BA76EA6ABF5154EB647D3CE510B938F725D8C6EAB3C293877DF86C8
-4C830C8379461728446AE23D445E4AFF5BE84DB94BDDF1477DD60E94C27DF754
-C46DDCD8E2B6B5EB9B928E75AEA6A6B6A8EA1991BD12E870C8CCC4383FFE1219
-0257A7D8A14C6C8059C24974B6FD1B452E13082DE064724C1B5822962E0063D6
-8D86CF3673BBA76F8C0446A7501938B1C5838A205F13041A96CA27AB6F4F4004
-9F3ADC11B0C01C1949019B60FD93CA0F3CD86126CA3BEA16C556D763C7476A38
-A75771A8524BCF508A4938D51E951F4E1E5DA5E4C67F13991BE3ED13321B96E8
-C1B60673892D0F091EA3931B6B08615FC6A0C5E75BDACED9F41A5EAEA45E50BA
-46298852E262486D80AB0AE3EE18040B997C85F5C9737C5A4F08A5376244C259
-AC7FA36C0B88D25C647D11F8F9F578D8633482CFA582065F2B2231B562003001
-FA81BFC8B67B161313A421D1D9CC3817DCB5B81E625BDAD0C438F49A29945525
-25BEEAB86A926C12503749FBF30D945EE450E9213F950F4DA5AC62C732522958
-DE00E60A9DAE074D4093C381259E91164865186099DC045BC43C9CD4B88630C9
-15A8BA9A89395393922DA7EE582ECB3A3DA5CD4421EF0EEE4C57032570E74271
-546DF3F774F3D3C6EB243464928FF3E7E1EA35659FF7AB0D48050FC8841B2AAF
-ED403649BE27A32F9819F9CB3CE1100A7185B29A4239C4C461BE76B9DDAB4332
-357F55AAD0021264D5625A0ABEFAE29F95819579563CB61D5BAD81A20AC5C47C
-BCA1DCCF82A96E7D1C8672440E28F7AFD9C34FF7EB4C4531ADED742923019A61
-AF6D10354BDACC9F82BC31BC88C189E549014ECCC0ED8527686AF33817114267
-D8356689E20B37B1B6F4EF9A6B9ABF3E19A818A8E4D8D232F305D3B63CC9DF28
-CAB9A53358515D788A9A8818443D506969AA199FF9CB11439BF1E5916CB5A3B6
-520DF9EA1AD8E52871453CD628F5489FFC23A324FA5DD9FF0E2B29C9FCD67EE8
-9A93783162E5B6B0A191CA871B940D68E486DB3843AB56164541407BEB01C8B6
-D1E0313F2A38208018BC661D778AF6AD9B3F15F74A66E041E171143A0A08EA84
-7BA7D2C6ADC207145183EBC2FEC692750C32DAA588954701AD45E0FE7701CFAC
-7AB2635C35BE0ADF227E4FE982D562AFD137835024A5438EE46B96171E184533
-3A736021B4F0A24EEDAE8972A1D10F9AB149726AE541BAD42E9BC4AB0F219D14
-04752DC2C501E8A155CFF3407316FAA2E163E745432EA99CDFC4393583035730
-17522395BCBF2C2FC3C2A319DF4A88A7EF1EB25F21A39222C3929F95D4616654
-8418333C33AF322DFC03C623484E9AF520FD0B8C8BFBFFA4CC83CE4FE08CA55E
-D3BCE8588C940761F4F5E6310434D82D0E88F034E6BEB3AB968FFFDBD942B547
-D89BB2F136C4CC3FA867A9E2C691D2EE9DD38E59BC3022359DCDEA3140D6C7B8
-60FC65621FFC2B6E0EFAE7AAA0A503FA397946C3C43EAB5E0443FA6E8BBBEC7C
-852654FB6C4D05D290A4CB4B3F9BE2133CEF24B9162E8BA3DC6413C075853083
-110CD2942134248583560479B679089B1015D47424F19129EE822D691655AD9B
-4A8772DEADA5130AB6AE36F669A5946E941E5C2457FC781605A1D69A6F253959
-0E9D1B6914D931DFE4B798E73810F45FFCF7AA128EFE7A528F18555D0F81C646
-4F2895B47492BD862C78EB9D641D15B5C98D6983B6E8163D32F7BDF63160D288
-E7A027FF60F64F023FB0E27DFE7C841313B2C49C5FDA2F218BF5C9F154BD7F46
-412FAAE274AA38B3B30E18344B3A8E542B5CAB6DE7E4AF502EE67826B872C41A
-C440DFCF3AE553DC00538FD7F09F0E21EE52651117EB15BB598E57375DB52A2D
-C5187DB0E2AE60309853E356644E4DC45D349226CAA239CD9F1A4EFAED21CBAC
-EE7DC0197AAD1C694D62A9F29D0A5CB1FFD7CCFD9771199EFB09725621826291
-FF7F72D472EADE5D3FE0C0FD4541FC8E158862D98757F8B80BBECAA1F8299D0A
-2E6AA28DAFF9E3F6458CD78114136F46E6B1B0BF68BAC2120710B857998B6F22
-826C61AA95CA9476B606971A7AD550D9901AB38019FA14A4792EE0AC0BDB0F5E
-010B78EF50C96CE03621F21CBF1AD96BEE428EED181BAC0FF4CEBCB416B08150
-735D906055DEBF4A57E77791AC8F018FFE1BCBDB83BCEB4F0105CCCAE44486F4
-BCAC2E6B895353AE411D09949885846EC7444F2850FB419A60BEBE8247F9C3A2
-80D52A8BF246EE65140EFAE795E6C178B9481024251DA564DAE2B6D54753BC06
-4A555858CDF013C36E13F1AD8A581CD9A2DA31BE5C5EB8BC820AB1FA3B94F5F5
-F742AA198E393A1DDD9638BCDC7462C5DC5E0B25A8F9C3408A65B3043BCB1768
-9429E48319CBD5DA8C8A35D50D0923B3B148DA9BFA7C904CEE07F724D3A51CFD
-81B5027FF761E0B45E36570ABC0AD515AFA28E80702B594D2C382CA8AEDD1850
-5CB6F371315BCC0D15AE6D12FD189271C7BD527B1498081CB701474468BC57E5
-BC89A342D7CB23E2D74DFC5EECF14D2C7E802A79D7D0E5BA393C36ECEB6BC569
-70A6B935B0B3C70738A906C0414DDF189DFD5E6667EB44C5FACF64483C37E059
-46B04D17EC2CBC1583620F8FDE5D556E6E12281F41747FF6C18FC6507B33C23D
-09C02BEA195CC0F37D2EBAFFC4FFEC5B83499EC6326F4737704531253BD41425
-FD3280BA73FA63DB463271F0813A522F5A583BF3B0A8C41462B0B829815F59CE
-87A9E152C6545811F80EF3144CDD217ADCFEF1F7AF2B9D1C06802524510EE62F
-EA407213422E1300455AC19E27E157A3F596BF639D8342D339D22B21E38F2177
-EDD19B91FF90AC8A8C2D17182D7E2732CF2E291E555914224C40E7E3170DD617
-9B158044C66A407D4C85225A1CF27BF027EFCA6E171A057270F402E7884723EE
-558CAB4248BAF8BA8E4ED73DE39E7300C91368F4FE4E0C5CB77FDC05F0CD1205
-C3FE450F7EFE1BA4BCF850BF7CC13123AB85CC0F912548B31C41F3772139D731
-2C1026DC05049D887503C8BD76DEFAF0E29D1F9EEA53659D58964B4CCD1C4352
-910FE7D1DCD4C3F71C21C4CAB7D223037E4089287F6A10CAB1C80EAAFE13CA0D
-716D136B1248836A1A81AED1847FEFC8CC60E4F8B2BFD896A9730A16CE788D8F
-EB1BCBDCC2728FA05247B77A7DC18F757DDFA5EE99A80508C9F800F65AF63E18
-097509AA25EF35209B70DF4E09E48E39E93ECDFCACFC99267D45C62FB0A15494
-3AB2F5F92143E0CE824F2306E45B2288B1CA09DDFEEC59075C5C86E7ABE33516
-40295A65887490F33FEA0FE29FC7580690C6EC5A9D1AEC45098F0479AE2A89F5
-556CFD965CEA61549B89C146C6679DD30B22CB26B2964CD4D1167F3D369474A1
-6FE362422CB61BDE9654CBACEF423196B24329280C4E762AFDD18012E6BCD9DF
-8F59E9D57CB4015ECC2B56CF845C11076F5264C222CBE7B0F8FE263165367997
-896C9E9429A402493E160ADF94AA07BE64ECB39B4DA9A1D20E9F29BA9EF770D0
-9AB9050E63D734D018EB6E43E31E523320ABBA1DA1DBB01DE90EC6263A6E7401
-82A4F6E1AA68D06553D5717525368C2D5617158B18D70188F9B649DA61D4C000
-D22AFA6A6B8D1B049FBF486B65F99BD9BA572E7D8D66F4D2DDE3F79132E6E4DE
-20322D9165C4D4774D80E66A3A164E3CFD097CEB2C378076AA09DC214BC7C071
-3C3628A56716B6D84B250993F51759652415E01B51C324F5C0741472001C16C7
-FE5135FCFEE4FE310C74D4B3750A7D37E330833941E11D2D5E8A81BB1FBB77A1
-1523B65A1DEA473D4A61801B29D0AAE08F47B6F2BC9AEB22A7CF88AD5D34598B
-66B0B96364759457E7063DD99C2D2A10B0B880C75FE4F8DBDD8E3460A872028A
-80CB692CF959E6D403C89BE1112380DDCFEF833822BE22A7648A17D9314AB0CA
-BAAEDD4D8B87AA5DF53D0D76EED1A98E4DBC74A2BCDD30EA21025F4964F0B7A0
-427808C00AB3E3D7F19DD5F3FE6D3165E87639851DC114D3863F113D7131E273
-AA0241A49C96455F33F4311FA40149F2BD989C30D55DD8279DAA97B29ABF9A57
-7EE8B583AEE63619C997E17CC528B43FF24DFF6020F34B1D7298A410892ACC34
-82FB6CB27A9135FE84D477243DAE69B0B12A22EC93226EC8F0BF314BE64FBA5D
-1139A9E8F5206ED1EF38DC1B085AA70D9AC6BD3023DA76B133B3A78A093FFCC7
-6DF10CA4B1381E5C5126E7818D27EA2580C4024A4FF89B8BE33FB535C3011818
-BFFBE6B0A6862198AF5DC7E84A1C77746109DDF855814D03CF752FA3137E3CA4
-C058183DAEA56FAA877BD919970CCC0B2F9BF3A18A5F2D3488A0AC447A199317
-09C8F891025269A56CDEA73505D0E795B1868BA3E99FE12FA5DB16226D221B20
-74D17A17E1891D4492BEBD57B0AA319B43A9A8C9F3822242F4E8049BA7982282
-EA10B1C19B4EE1B1E54145A6801A86189EA642F7C22D85A6661D7CA42D625B55
-98FB688C535EFA0B5F44CD2DB8FBC26163EB87BE08E365D95F674F3021248A71
-6A53787895CAA015D74E7CE6E5AE73F2010128259EE56CBC8C313EED283F7EF7
-B644EA2679D81C7859FDEFE87085D3C62CAA2408A3D5C4E2E99C6E4BADA3768B
-E4494F072E9F0A5308BB75850A78FC8CE0609A2AB385CCFB3CA076BAE2BCDBC1
-44345CD924C74625BC9371258C648569883DF67ED83F8AD3FB7B1096CDDD7EBA
-25E0102006C31DCD4D55EFFD4D37B05D881359DCF28E83E4AB1245D3529C7482
-576B26AF0DD75C3A82B5A8F3528EE862CF722C896FA9319A2B813443A535BFE0
-D3B0A2811475A434266395BDFB39207EFF7EA5B6CD9E014D93CAAA22840C0A75
-C8FF9A175D2046CE7F49C4EC8E5572BCC7D7CE7E186DEA70315D674364638E60
-F355ECD080C64D3D301E77A578CA8EEF3EDB0610FE61ED541EFC97536EC0639F
-D406FE774CC5708435F5AFCEBFB0563F7C4D7543869E85451FB3DE01C83AB60A
-120A920DF83AB10EF7AF5F2A4CAC36E119CA59C62C9E58BB725A9464040738DF
-70AA3A62DAAD8E24F6F617EA27E1DBE52B327912FAAFAFE05E7D4CF19F65BD7F
-1033202FF5C0C72C4425F7C32AD0A464BBA1D084538A70D52545DF67396CDFC3
-33A915D87A0260B3AE4CAD4F53AC36ABB222256D85B742D00458B4ECE95631E0
-8F21A496DB102D3A2A0CA7BED0789984056D0F34B7674EFC66AE40B7B444B5EA
-C7CB62A0B1FBE33915522A0845CBE5523D949D4332B5E71AC7B1C177863DCD5F
-93C8C6DEE528EAD00114651DB6644C2146E4A7B0DA91E8FDC6968A99B3D516F3
-0D7CB48A037F3359487385807AF606AED4B1C98F4122AA3534AAFB9D9E37799C
-4157601B15AEFEC90F360A7EA2A741460AF365C9CC06C14C1B863CF02EBB5781
-BF4A27590BB7674AA770862D021207A2183239928C5B33C39D1704E87FA51303
-2A05A597F231044724DC06DB237ADE5FA528CC4FF749B880B91147DB9AFF2202
-85A8E2D72CFDD806DE99B5FBA42F6A042906B40369FB6587F2EFB1141334FEF6
-E8A2B5C813A96F76D4ADBB8BC75D5390F610B18420E4E5B029AB7FB265D776D4
-7A3742B1E6815286AA295EDFD64FE22980A97339EAA6A4A2330893949F3BFB2C
-06F658621EEE6F0C010EE8228DA49712A701DE1DF1870BEAB73A7E3AF4DD86D8
-702E39EB7B88F112019DE6F98AD2EEE53115E7ED8B008400C13EA30813F21486
-EB77B0803F4184E071A836ECD0252C6C9F6BC7DA1164570212B87A15473F6FE8
-8530F01CA2653D19BF85E149B68A2DC307682C23A1AD246CF6FFF0548BBE472C
-C0E08847B3062B4CB03F54EEE42AFA6779D67EC0B9908F72CCEF290418B00EC2
-2794619A951D4513DEABD376D80B71669B683D8BAFF3A86487F8F83B77379CE0
-C1356F16DBE8468B05B5A4DD8A8A3FAE67
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 13 /fl put
-dup 18 /grave put
-dup 19 /acute put
-dup 39 /quoteright put
-dup 65 /A put
-dup 67 /C put
-dup 68 /D put
-dup 70 /F put
-dup 76 /L put
-dup 77 /M put
-dup 79 /O put
-dup 94 /circumflex put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
-61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
-92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
-EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
-43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
-FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429
-DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD
-3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A
-7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7
-CDCA11A1FF27AFA7FF189A7E8A7C0E94AEEC901DDEB541604DEC0FE90FA0685A
-FDEADECE61CE2731FDDF7FCF2AEF7CC2B1EE7095F483C2597F66694FBD2AD81B
-F68FF2E378BD8357CD1B60A1CEDA2DE760A98868ACB45CCC8CC2370FE267830F
-B795058E0FB0EB3C625259C36BF9AD2EFB5C64A45797E18797CE1A2C0304CDE9
-9D88E11E878A721610EC57958C7E80A5E78226017A263288DEF5D335199E8F28
-787DF769550AD33E15342FC5E4751F8865AA66E78B8CD2388EC3618A619AD302
-5760E9F293085CB54BBBDD47C5ADC3F479E39A795541ED8CC921D1B41C9FB1CE
-57B1340BB4BFAD1329EE4EF2DE599944404B7DF94C759037CBE96073FD77DAC9
-B140B4580EF178A84D0746276D6E667E26671117EE04102304F2F599A423A687
-53CD9E2B061D02D54EF56439E33AD985A84C1CA8F6666CF7746E0DB19A79F249
-AE1F7714AE5E1D6723C5D3AF86E6ADC9F2BEA6A62C3C03A67414A99FCCCFEB42
-4EE4BE9FC8A530F06879F46889624F7D704EFCB951C1DA1613D55D61D33F6213
-F12610A6F071E79918AC289EA5A3AA9049229902B646FE14E8D19DBE673E1D7C
-76577E34ABE80ECF2F5D6E13CE0926F40AAA23EC01EA99F5CCC32D1FA8E11013
-102730BB65BC6743F348F15510601D29ECAD4659EEFC318BE1C85414883A2394
-6B8CA6AFC294778FE68559C8D182216AAD333EBF0EC6B570837069E0D9C6104E
-976A77751759A8D4C2EEA1303B6B728350843EE415D8B4BDC7CBDCD9E2D55C64
-2D01FF18630A55E8F505646B1F382384FE8C140E60F04ED9E86DB24E4B752C6E
-525E86E024A632219C1C533DBA8703DF80814AF725450D043D0D644293E70D3B
-CB5ECE08BFBE0444C3D5EAE7FCA49069B8B629CD14D78B51F893769666D1FDE0
-B3E5A9537E7296E0EE3EE6FAA0703033DE5ACF3ED11E0370F2DDE727675E7AAF
-EBDD2E5A81316445B567DE081A7A9EAAA4675990C41FD7DFD4BC99D336C943BB
-73031C74225C15F4698E5FA82A132EE19B9B31886802C6182501EC6432C93AD2
-C4902DDFAD356F9FBAD0CAA247391A9B32BE207736FD79C4CDD489F1A4F98FAA
-ECBBF11FC37861E7A2A072876E493258DD9F0102DFE6AA1C25B62C9824E65D42
-E301387324128538099538096807A5A70B2CE44C7F32C25B1E6C69E333D9CCA9
-51AC941EE59B3274FF13A0E61EDBB4894A803110AC572874B5F85AAFFC9CD694
-3EEC16F5D5E8B0A3249FE76FE8861ADF9EDF7DD9CA2C54FC5F01CA0AA1C94CF6
-E0168BE4432B048678496E8A0A1C0870C12067A21B1470F2C8AC2084FFEA2C67
-D05433570F589BAF958E9E268210CE7539BF1FABC6E0A5FFEF617E0FC0154942
-B5B14743A09D2853436120C8FAF14F7E87575F282E47742FAED463B04837EB14
-40119CAAC467715C62F9E465A38B5643FB4B6E34B8A9F0C86E8D78428C8418C4
-ECE00D82B19FA3F11CB265205782C989F5D6CEF77838FCEDF27D6D00B3C6BC7A
-8195AA7551358B3DBBE7D63F26F3F660A1197F26BA9A359C64EA219C51BF94BB
-08ED6D8BC1FA4A0C07F2B7CD30D484D3AFE2FD6A7541DF8BB2CC63D7AEE79356
-303DFFE873C237E73F6A8F064B8C002C246655200FCB5C62C2F6A1EE2827370A
-0462DE0773D4050CAA21B52D4AE613CD019AB7D5167C05EC56C401F88BC446CD
-52B473ED8C80F6E6743FF7DD1291926677465E010421CAE6E45EFDC3B5E83ECD
-F0C8AEF8EDA714D97ED1ED71602C39534F7C42260A5008B4CD2A92D039608CA7
-14ECBEBB5852EB017C5C7AB2A936B0BA9D4BE29EB48B111B5AECB1E907DC2BEC
-D08E2CFBD4438BE1FCD8D1FB7A2C795E7446B210F8C4692DFD29107D44A58B63
-CA66643018239034600B293777A53B1A8EA74EA1F0327D4E1D9000115ED9178F
-E5258FF352071FD06489C5C911B379AD4DBE7C15A11DF46D9993F80D9F5DFEEC
-D85CC3F8B8ECED7E15D1AE8D18D07052BFD9658403D6E956C249BE6E93617575
-36C9CF59D1C95C5336B9E635C6ACCEB60DAEEF076E4D9845115C420441F26115
-7C5ACC311CF30A1A2B86EDD191016E28C7BCED87B7797818E4D6A26DCA59976F
-08E0F7F8CE42CC8CFCF197C3A6A00755EB43817FE0574FBD3D5F5770F49845A0
-242F811182A45FFC2598075B4C48E7E4B24B0537EBB40D992453667D436B875C
-54BFB2FBEEF31E03539AE762BCD1961D448568CCCF3B2D9EF222ADED5741A2B7
-E57D6E5E09A354733A0A9DA31EFA86959DF6E3CC5E6E3AF6DBD3CD52AF24307B
-531E9E7561CE85658A65FBEAE0AE358DFF19A55CE42056EF89AFC3F62404D1F4
-5406002450FF5759059F1A7E555A7EBC99BE89DD5CD4E95918D43D572BF72F62
-7309EE47ED0EA71326E9DF2942A23C07444FB09C1C16A2BE2627AFC8F83D535C
-53F165E80AF1EE97C551A1A619C0DB440511730273C2C4760C2F5A146E889C96
-AF2EE5CF1112DFA0D139186A2FD65C79468B8DA9C84FE4C0CADD6E9DD82791AF
-15E6AE0091CD2E58AB3C2178168D0AE9E80E8FA95F2815A747AD2B5570EBF7E9
-833D4761D17233C2CE02CAB64D1D7E49CA9076F753FF6278CEC08B8950C6B546
-A9DA2A27509EB3A77FFBEB78D360216E99FF9C37C6979DC2DB404842080874B6
-C8D3C77A50BAF3C00D156BFCA21682FBB8C45A014BC0F9CEF5098ECFA736D01A
-C279B88A194449D964625BCED9E2CF2BC40A857ADA5D95B2EA3D000F0112653D
-2056A88D5621B85CEA7A573C004A996F77800894A32850E4536DF75327ABC0CE
-65F5AD6AFC8AE9E82296B6E795A0EB61776F07C38DA7A3E3E5EFC29694A03B28
-19182F03178847F3059F996BE5DBFD4C819D80B1575454D234F599787C856EC6
-A054356CD4DA09D46A542E90177F33EFE4EA17E5A2B54AFEE4E075D67D49959E
-2D0F8A8FADA6DB2908E9B753F40789138E31FFD04F5415E492A397738719CDEF
-BFA5B8F1919440A1256FE5554752F4B77C47E96F4CAD3DCA4B99E0D6C0B339A0
-04B58D399B27B709028E6A3F20D129D9C437E3E34E608B6B5748729EE15747C2
-E800EEBB09741E3ADC1FC1379FF077897F18123E8CBA5C450437CBF6C73C647B
-0F9E402478C3CA3BA683130E82C375E5C3F2FD4FAB53837544DE92B3C8206462
-630471AF0C33A8260B5DB013F78B3A8D3D0CC501AAAD9743B09B1BE57BD8D624
-6F6E27B5D678A673AA5001A375545D2B35F01DDFCA6F50F2A8E584F832777CAC
-CDD2ECE0B77C6905ED235E18F44606851EDB11D9C72E0F5BB813A149DDAAF6A9
-9C1CCACC107F7748FAD8ABAFBDF7DD183DA8424ECF8C2C7A16F3B56860ECC570
-86334306B17A3C57D543335A8127D5F795F2908F633AAF517F9FD14CBD2B996E
-D4F9FF06C14E03EE6106ECB4B6712707D1FD39640E10C8785A85C0DC13EB91BB
-9AD7BAF17060C14EB6E66BA2BB676EF7AD3FC20DD06F6F36AB02B0EAF391F4C9
-B6B47833031B5979CF19144D3EA7463C9D2D62AC231320B37E5FA12D7E080999
-BDCE3082EDFA16947D33B2D2FDF1103DC3DFAEB1B56495AE58569EEB60E5F492
-2A35D36349FB1C6614ED813BF7D5C8151D74BD8E122CE59F3A8C225271D57B37
-E4442FE3F0A7E5985F56409CFB53986AEA0F79B1EBF6587DF00479CBBD9EE56B
-DE157F215B03BA2D0DBEBF93A9464F7F7442FD5AC3861AE5FDC4B2C4CC8526F9
-5BAF472C6E90092824613486ED40AD61C4B0FAAB6928A13FE8A96296C01FD078
-738712D491E10D0475C786F2504DBCE4835943756BF469EC96A793423295CB71
-FA0D052652CD5321096DC7FCE70DEC61ADD97CB5F5CE65D7299168589B3ABCA4
-164552AE6AD1671F98D0A046D9487CC6EFDD3B13B6F885087D5883CC5280906E
-FB6C61384D0B577BC83427DCD6916E84AA004B141F9BE9872E6098C37C9F691A
-9BC4E26F00B82E3BBD02B25900B09D51633D5EDFBA3E54C219D7256A5D4B22BA
-F669ADAA5382D67EFC23FF8852841D06B3515C55D75D338A41EE936DCC6ED6EA
-BA12256DB834D37D500A358A0741AC21D33928794968A6125CAF20B0C8FE22A8
-64498B942263D72F52D9975FD8DF8CA848A3BCFE4591BE071FF9BCB791742DD2
-E99AAA19E924E616CABEC27CC8BCE9084653CFB08CDFED2C219345B7A2B7BE7E
-B329F79DDF4AEEE17064AE84CEEFB417E6C8F3C5D2C486C77CD28F89F40FE817
-9842CB14802B4FEB44E23D66863BAF870D9DDCD95EFCAAD73C133B4086F1467B
-AF6791D7DC378380E154239959CD2EA471D58B66FF02184326585CDF1F736CA6
-3D1B95E16BB5455CBC9523C3701289D6FA6881453C9DCC21525308B8602D2603
-F90958823AE84D54B91E018C3763C1BF3AA0BA978DC520A0ECFE6420AEAA5DE2
-C8DD7CAB9BC659DF502F0BCD44807C518B5EA67F26D48A88F21916CF0660BFC0
-912B6BDBC062A909B0C66DEE438ACFB753204D6769A798EC6EE98666847FEF4C
-D9FF64C0C95C279ECE58F1AA879949BF59F40728A72009E7989DECEA9EADB44F
-F5680A3DEE60160FCD85D1FD77B0042154140C09838B65CE33A79CAC30134CD1
-1C910ABBA0B1CC0B476696C763D71C233A38A6B7A1A12D0EFF193D9983351BEC
-F723EE088FAA6C9D50AD3086FEB50C3D01751741B63937EB78ACB8A4BA87F74D
-3D8AD65C44574D0A77F14D5346BFFB33973F411544A060729C13137450E10A0B
-8A7A4F84DBCDA4D92492E12BFF3F97E34375E310E85D04D4B2FC673357DD8049
-E4569F59406AF75CAE1AE76FBB10D757D49B4C43DAE6A0D7B9DD139E3D709FDB
-14BA9C95F67371242BEDDAC6FDCB86B37DAB4D6D2B39A15937D031DF7C20BA72
-9FB832B2AC434EA10A2E0B77D676A8DCBE3A1BC25EFF3D4056323B0DC8474F24
-C6772CA087695A4BF902735CC5198E10CAAAF564A3BE95C275F596C864AC7DE0
-C81470DC221EDBEF4C52F3692EDD18623AB79CE79E3A51A3DAFB60198D6304D1
-70B6DDFB7EA19807417DBB975977F7972049D3106C3ACB826A50BCECF68251D7
-545DF4D2C4593857812EB6AB86FAC4DF45BB9F6C64AC12E7D0140AF023FC9CF1
-9C1575E8338A06C25F7CD8B6094300A572C54C4E924CAEC25FAF1B47469B3DDD
-8CFE09AB1FBDE43FCC303C2E00ABAB5A79532573F9DEBB6A75E22CF471ACA244
-6E3332773D6D2B909BAB44E823A2BF4FF371B0A15FE5CBCFEDAC711735A1ADDB
-A02F3527BCEA1354B0556FBF74FD89E1025B48025BA7422AA2F0A0414C77ECC6
-08899CAFFA4BE15F6A5E93D9940E4545F40890C152F05F0FC9984D7650A7B1D3
-1BAA9A0AE70C7A1B1FAFA4FF7C7E6775E821591B6A93AC39F64C37790D69038B
-0566079A890D670599B01F3DABE3F58D1D584CB00BCC30E8EA20169875AC67FE
-BBBCB346C57904519EFFA01709948CFAD69F004FF255CD62B28965DBBC615E54
-FE6CC33BF0279CA79DEC1669A21DF70AEB4A4633053F3507FA9026B4F9A55E1B
-F4D68CFF33EC49C76AFC9D1E6E1EDB188BD981BAD5A83ADD73744DECE79224F6
-F558260BF4D2B04E2E65B37456EB05F7630BA3E15FD4F5F7EF45DBDAAD425116
-092FD7460F9082353E09E20C66110B1FAFF7C11F396A7D0A9D0F460EC78D134A
-74C9B344A3BC3DC10B3E60CA74E4BB575C54500BD22F410B9B5CEA21F3A85165
-25C72187F5120CC724088CA28F3946DB76C592C69A1302A208AC1A51F6305179
-EFBA41AB5B60B13FF1CFB6B6161BF2A01E81691A5A8AEAFF7D9584B419161569
-BD8945FF97B796C60F5FC0712DB15FCCE84D780C2620AB21F764435CCEB3DA64
-703103CA0634A50A0C0A5E3FE2E6FCED1889BE4F5BC7A019F8D8D697CFD24B6A
-5A7B040F98D9993625033A09E9B3D2C6F3DFF413E9BDC5890E4E2F58BF91F676
-0325425559A74E0D3B39E05D4EE6A792E426F6A612FD77AD3937598A36B9A8DA
-1FFE8373DA2C1FDBB8D4DDC3CFBCF20F2B3A2D8E6A7403D1186A8D8DD4E12AD6
-04D8D22B435D16285985C02DDA1410EE25AC222D8623B680403EC4E897A127CB
-F8830FD914F840BA9DB48C12CF6B2A7B8F5249637882B3871CDD2F137981C98A
-0FEBB565BFF01F3D9335AD23BD3B677D1DD762C2364872E9628C33E13F890010
-4B95A53239F2C5697F604F0589671573BFF43753C8B2A7259C84B4D5479DD0A6
-E9C9C05C3A5ECA87ED0007CDB61BD3E85521859EE10BC77B34DA8E7351A050A6
-1333AE0623596BF24E062AFA602DE049362346237C1D7EB805619CBE8A738D1A
-FDB9D5B84AA46A4750BF11C402A329178B2B59413BA0F2E9C3D167176173C163
-C66A980111EC0A30D64C6C8B9F9C7CBFD605F02654F6375B7A3FA7B9BD04377D
-696AC176E06DC2F82802C67389B956D79658422621608808987B90A060A25894
-7FCB55226FD6491E2D0CFBE611B73B4C5BE140521ABDE334B8B0833E6202B714
-62E9CE6FF030912B85A327B69DE37BD89D1A029B22021EB4AE23BAB65EC90355
-2FF485895C62035EFBB36F1FE3CE7F042690A0EA60D4FBA833CABB4DDA727CD9
-D7216985E44CD993591ACED2BD07C282FB95C07E6B3588B0A0EB73CC3FBD3023
-308DDE03060536F69FA9668B1F06B4CB2AC952D4321A99750B42D9D0365EA3B6
-5FE77B627A9A7CFD4F9F1666C0FA02C00CBC6E6EAE13AFD78C8996CA69A02BB6
-65FB02BBECE3AE7A695195F58EA12D941716CAAC8A0997154BC80843DDDCD74B
-5A38B0D70667B7234C5EFBC0F7FB602DB533AFBC2362F88CD60ECEB59CF5B1D8
-0B9591905B04B8C634E6BC3670109BA6D60D1B4D0F6EEE73197FCE27E29D492D
-735B2CAEC1AF3B9AECB81A2B61015F99E848692DF47C23185EE6E3810BCEAE42
-C01A8016BD4F78673E6C00BB8D99C454866921E480CD06444EF43AA035C86F5E
-98FCB238A87AA6EF921B65AA00E2E895DA9DC8FFED2033B079CF45AB3DD48D7F
-FD6D3638CFEF0ADA4048F1D27C9CA6FE58FD608469E9E4AAAF44C4905FB68B34
-598D6E1BA3A21FD81EAC6F65A0CD67F980C4F2A96CD1A763BC91A7704B69D11E
-9BEC8228708304A5419226B9352C8A9E333EB6F3E081CE97DF685FCDA2C08C78
-4776D1F44AF70CE111B05166002D17EFCB31F6DEE5A8EA404AB386777D7E1B3B
-274A4918AA6613FF3B12F101F09D85B5E3F988D8EC02B65BD31F039F80E15403
-1C00783C36EB1686C1DCA30EBD62E072432CA608C4C7182331139F56EB736AD0
-27E2C002A365333635101305B520566CC763401F46F7F85DDBB781CA50744634
-7DE6BBA25DB93F3FF51BAE303FAF4B494C622A207E6AF0BF1064C9121C2F2445
-E8F46B8238C7273B89BA8B33A23C56EABDB3BA2DDF5831EB55F46BFD140DA5A5
-2FE7665CE873CC0CB9FE96DCC91328BF4D0D4F1AD1492C9C7C278AE67290EC68
-2BD0F93FD3E091D93E5BE02A6339C243429BC2D21EBBB920D4633D94185AA4E9
-124A8693E72185413CCE00309D3307DE8E444D8B0F855AFD421D5BB68B3C625B
-A2B9AE0F8CBA9352C63E324F8972DF41904DC78CCF4D425715D1CF5A1EB7A935
-9D0A8C79C14BA670C8D6772F15920622C2292D5E21EFAAA5C60E10D3325DD730
-2BF34A23178AD19DBD50DFA8CC8C0501CD1BE0C492926446CB17FEA772C00D48
-C3B23451AD493A6A6D236DBFD145CB7993D16A58F704DE77FB1470B3CDFA67F4
-835732E65B2A9DF23F53006FF3485E8A1233850D4CBF5BD856B00E3F3F8BBE0D
-BEF7F13E5764D656676A48E947732506A39AE157CF56DA7D7EF49DB48961F6AB
-0F9037A9283B7619763A6CE95BA1B58D2B72155694E84D330657247D0F43D736
-161D5BD49EBE4131072407E1409EFAD6D1BBCD21FC11DA2DC6E93046A06CCE6E
-735F1C3B5C88A01165DBF07CB86E3E609D47BCB2BB87B99F5D8E903D435A330B
-67674BE5E81244BAF17337DC8EA68E86C588C03EA85DA2B78D57CE72B3B62C0D
-3EFFDB07C7210B6A51D2ECD734DA29D8D0C14DDBE61CE176FE226B580427A9CE
-4C76CAA42717849DFBCEC08AA06DE53B013FE246966BA177055A950025CDE913
-E5D9D28E53EE349E03DC8C53C9A1551541CA10F2DDFC05E1C3DBBACDB321FC92
-C3C23E241EBDB8856D0D6A338668210E196141711622E7FAB27F80A07EC32DFE
-16F38B5F3DB735AB199036458D91F4FB1DD88236722FFC8AD032057CE97B64D3
-45167DA10C72B7BF526A6EC0E706BBD0ED91652B2781842F8DE5EC9A1E792236
-1854879179CB67DC53DAF6226C3CF47EE3FFDCE17008ACFED5B5105DC93302D7
-E1D3402691FFB75255E2BF2ED1D3C6EB38754C4120ECF6330FB0CD390E08A88D
-73CBE6D4F468B8B64D23152FA3F94941
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX8
-%!PS-AdobeFont-1.1: CMBX8 1.0
-%%CreationDate: 1991 Aug 20 16:36:07
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /fl put
-dup 19 /acute put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 45 /hyphen put
-dup 68 /D put
-dup 76 /L put
-dup 88 /X put
-dup 94 /circumflex put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 120 /x put
-readonly def
-/FontBBox{-59 -250 1235 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
-7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
-EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
-7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
-AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
-E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
-4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
-5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
-611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
-D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
-EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
-35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
-ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
-7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
-C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E42779FA15EFDB451F
-53495CE8EFF239E4EC442E1439594549D45F5276F93D496C9AC712D762D0B702
-E894290BA028837304AFDDD8BAA6564E9DC307A14A7A206550FADDC7784DE3BF
-3390188BBCDDD929C82B1D7B529553BA75ACF5B385D31EE3902D96B2B5DDFFF1
-9F0F90FD791E54128C1717F313486896868A34FAFF22E23CEF046D02C1419BA3
-4389DED48DFDE7F78F8ABE3DA17968B0F496945212845780F542C02A9FF04228
-93F0BE060C25D1F025E126D6F118EE0430CB71D5F505F1F1CFA4F13344F0AA89
-B2C910B4D4CAD5C06EF454B46AF7E725041C12CC2AB1F26A27E7EE894FA48475
-EB4A59658B4C84DE0D447BCFEB6DC029FC62E833DED093D365637BB4FFE6E54A
-FA8F11FE00A7F34EF25F9B37B74A763559B8048939CA9717D0A56CD52013D39A
-3418FB36F83A45A97B23B02D78EC7DF62F59495DC7FE2CBDFA2809CF9767D1DC
-B6AA7E9340B087566C3489B54EF32765AA77932C18E32F7F2BF03BCF1C9DB761
-236BF1159D7EF7BA13584E669FB1AB7922657A4096B81055E7285BEC4FDA1B9F
-F357FE89D12BCBA6A212AF2A021E6236B5F3AB3EF737223242746C4EE1FA8B30
-B432961A657121FB2DEBC398F4203366FCF496AF60B6BBD08AEBA243682DF531
-C2D17D85EC6368360462D357784D7563E23AAC44192FF9FD302803945B4718C6
-0A6E8927D340AF205F90ADBCC6D9CF9F2D95AA77EA5D27640D07A64FA082FF70
-AC271AD67AF53EBD42A1A1D06253B87E1D2F9D751985400B50A17851A058607A
-AEB752016567CD73027B5DFBCB2DC21FFECD11A007CF99F2487D49233B53CDF4
-458B10D8A6339B19224B225FC3107F2CE4C8F2A9CB1DB10B756BA3EF075FDA30
-7180AECC9136A728808C5275F04A901D30A0858AE1FF8DE220060113711AEC2E
-BCC5B57FA74225FCC802B16F3C6EF91C0D2A7C161A2FD5CB60C97306F7D3EC8F
-BD51C9DEC56280544FBE7F386F44DB987AA4E7A81F5AD2EC476A5D15CB2104ED
-220EC9D87AABB903BFE776A8E2D6D100BEC447AE99087427FCB5DF0004CB99FA
-629FBAE0AB3120C4CE6A5D1BF2C9056A35A6D8B776717324245FCF4149C448B6
-19698E9BD3BF24806929AE5B42CBAA14D9EF6D293543868166780DB02CCA1CF3
-1B5920B3A1980A159C71E94BBE479CFD35EC091F69D24BF00EA0779CBE23473D
-8574A1EDA79660AC5C47D29C4463C50241C04748792A7FA29AE0543643E27DAB
-0ACD228E449A1C83D5C057980739CD21D5C1CD592E982AB3E476550412904643
-2F3A1C2AD194908096FEF2FA80A071431075951514AE2679803DFA39184CE9A4
-C6AF7580511038A6FA0E54E73D55194F499B4415288FFCAF773B81B9C48B2A9E
-1A7FB96C100CA6D3F0B48209F4862AD9CE8EF933989DCE1B73D3931599E57742
-B040B92C221CE2AFCAAA25ECEFCCE560B94893B93DF096804121D968BCE8A427
-AA3616F7D06DD1423FC7D68318C393C212C707BADCBBB59A94E5E3E057201F61
-5D9DCEB02AEDFB509A65874F85BD531BD56115681838E509607CECA3C3DBF0FA
-93A5E891039FBEF4F564DB3CA8352D64E8A3C30F1B8763311F5834A072532ED4
-8080A6CFDA0CC7F841B55BA2DDF21848E8E9CAFFDE936BF0858A3C09BC536228
-9A11043CE78BA022904DC09828E4D7233B1BD6E1414357E13F010F4A6DF84831
-462BAB2CE0162E168A29204C92732A9C8B65B22743830A8E603C7661509A2A80
-8DF8CEAA63AB92BD4115160DFDACA109AD42582A8FED4584364CA5F0C3CB9EB8
-6D044E28D4BF1629A75984DD7EF5F3444A483B91B43357468816A6BA5922E56C
-168171A7B3CA8DCA7DF1274C921A860C26A36E7D49EE364AD0EBDB2405DF8F06
-BA9A2F4CC686AAB2096C23527A3AC4FD6D4476A46ACCD10566CB0555F0E598E9
-7761702A727A91A0A79FAA65F5B06665DEE1148353627EDE044F267EDC2AA6A0
-39AA0F7DE29608A18C2A3F0520F59B7702C7576AB6D7552E46312B5331849350
-A367272B71B3E6D5109FFE119755486467ED45746B0F27357F1EF931B5E12851
-FB223B588059DCC67362E47A3146F0E16176F362DBBD31A19C6696266E4639A7
-55DCD47CDDF1459D54D26D2422A1B50782CCEA79F35A2D262B2280605EEBC03A
-8835DB418109D38E36C0A44CF2966539F37BD5725CA67809C140A2E17C14E7F4
-912E752F75FAB802B0C62A210428392EBE00822DD61ADBD544F3582F813D10D5
-9873BA68B713E2C7367EB60F3905C0C49BC47C330C0F9DC1819A323D4DF0C45B
-ECF1E1CBB01522FF20E33FCA91121B7663B63F4606465555E569DBE49F88C876
-D497436039869157F7C9171FC1DFE87E1A5B0CC12F2EDD7D7237D93C439F2C48
-C0E9C55C7B0EFA3AEBA6E6C517578ED3D457120512031D3704D38881018743FF
-B95D976F4232A8F64A4CD1931F2584A409788AC47F5773B6312CDDB34AE437BB
-F7A2488EC67FF7BA825DE90DADE93611F6EB7B10F17717DE7C85542E54FDBB64
-A19F859970DE991954DB72945909D63BAB31AB7488F85934C821AEAB24CD8286
-3EC4DDEEFD050E4D03D3888AA6DF636560392E9BB60087FDB7E81054A42986D0
-974F8AE3684A659E9B6F2A34F9C3BD7490686E0F5AFB07F9FEEC6044F93707E4
-8E03750E41E99D93E137D4E999C47B100FF7F33812142BCFFAD81ADC7ADF898A
-28D0FF5065D529CBF95D5D10C3398DAD829F51A60426EF44BE40543FC545301A
-342D0314A5ACD84CB770D706FB5C35E996AABAA277B38F85C7D5C8800ACF8878
-1DBB33B6AD14B25D4523EC01FD08E4F07F1A1FA677ED02DC77BEC346FB1DD19E
-4D1811FF5CEA0CAC53693A8255C2AF5CFA159466BF78EF83AFAB988869D60CAC
-4EBFE6369927861D7F8D6C8AE27DBDFE53E5B16EEBB0274EACAACFC1DAEB1E49
-A6484027A0DFF59C9BE87BADFD7B5CB844C62851A3DF797A5729F6D9F9ABC75C
-47F937C5ECDCB374AEFBC418BDB14E5138814EF1835B21C298BB07650FF84051
-DDB74C4EDC7EE6B0F5132B6D50BBBC30FF60C642853C13BAC92D741E8720BE29
-342D8EC6811C5C493449D79CFD6F8776F72EDEE68020AA4F6AB0C38CDCCBE517
-19382E10BCFD1FBB507B4E06B24602D75E975DFCA3A897215D4ED8D4C1A11DF7
-F68139416A44D9DEB0A077E52501CF2C7FFBE201EB14418F8943E2690E7AC8CB
-173EC890B232E79CF28735C42814597F52A471989259CD1C3D1310D84B668895
-22853809E05F26C28067F5EF97FFC9FA1D870DF1FE5DA1D6E449908FF7D40125
-013B57A34C90AA7F7830CE1F6CFD1C7F9B1FC865B160671B97101CF7961DBAAE
-D8DDF68CDF9150AA4D7D379AAAF0660E8941B5EE08AABB4B2C27163E9BEB55F5
-F35AFE29559B381E23CC07D700CFF4126E020DDFD3034428461D0105A6D27D19
-833F3B38228508953F1B22EC62276AEAF09C4B1D8E7758EA68813A20E79EFBC7
-E3779546015B714A0D903190A1F40FC20CD4AFA681C848A0ECFFF2E0936BE7EA
-CED292FBC25AF6FDB10110A777F59F27166A0A66752204DE35DAD4A78968116D
-E8043BA9C76D12FC987F999F807974F0F386BE2FA01B5A4BC00E7282016722FC
-871C1CD8E3C67BB7DAF2024349E44828480E6C6767F504FC4927C7457D1BAB40
-B955E2FEF273DE998F75633E776B6AC16ADEAB893A66056BFD071C8C05D1FEA5
-86C1282280A25C6A1F974A4AA09819844E9E111D3CCC3B4EDE4B072F3AE10F45
-A7F6CD52A75921A7B2B855E414218EE21985DE3A070FB027D2B9B278206FDB54
-87BD1A73E9E6D5782D9EEE209E90D8948799A30D398B69567F3F90F3BB61BACD
-05390D3BABCCC9BC66BE2124ACE5B1D6AFD7830843028DA1B7E4E0837884CBBF
-C651CFDEB0603366E1EE6E2FF55758E7EBFE961026BA687D5553733C66158F0B
-41B100D85F75D673E4798BA1407CA8D20BC1E4714E7BBFA43C6A0D05E0A2031A
-71922150AEB33EBC109DD017F3AB194A4A26E69316B4FB5DBAD473E8CC965298
-941AA44BDD3E74C6DADE122E10580690FEF825540B334D9E7353A8CE1769BFE6
-9E343B12E672F455EB66F7C7197E5CEA726F775DF83C057EDB5BC3BBEAD4C3F3
-85D74CCD4E0167EABBC015410F64C501934080BECB910E28212A14E5440EEFA7
-A166AD8EE84EEC46B4E7D22BE069CA2E3EA8A4D4D3C7C39F53AA60F2C9BE9CBE
-DA881D39A2648BB0E76B273EEF070881A8D6D5AE0E208494844527344F1CB977
-F9587B6593219D53C2BB242745E2F766EE45476B1CF7A57F5AE1E552F66D86BE
-34DB1328563EBA8C82234FCF3B032CAE4F91EA2D2D654D9FC945792BFA7630CC
-5DD3D58F8CBC0A768C332AA3577A68B078ED678D459CCA95CB2219C3AF9911BC
-757F30B3E5D0F2B65975C9BB457EFEDE18C2A0A84481052304788792190AA148
-5879DA96637FF82EA549C21C261BCBB208382EA8CF88D5F90B459E035881EF0A
-538C11BD0D9DA7DDE779B0EC130D2178FC172D36418A0952F9954891E4F3FDDC
-E2EC9057F744C3E773A86A66FD5F96955849B954C0FF52AB188818C5C61B9246
-420972150A610F9B48703DE474F59C3F4D1BE7D6D2B644A53EBBFD31E0A0C859
-9ED16BDB040B423E7199523253F8B6930B42C3022B987282877176EAA2DA5D8E
-A296E691A63DD4AB1940203A9466DCEA610C1E710E19B51F024AC7290464E0CA
-D71F1ADBBCC929D47C067EEEECE89F51813DDC912BC3A458D0CB124671ADA83A
-E3F84A32C6D7C8328F3A61ED1A6145AA3FB9B0C61494C1727AD7C31179F3A782
-6186AD804A4E7D9FF45F23DB040974D97D234CA4369B0D7E100C9618DB4F0878
-F4D09DCA3951AE16452E0C778DF27929B1E8CA7BA0499C0CED63A1D44A055AEA
-B1B419EA759EB22870D07276550C82984B16CF42EC601180E2761CBF7AE318F8
-08226B26FACEF9D49325C01C5AA0AC3972DCFD03E1087BE1EF3E03706F66C303
-F18034BF95AA2E884E5F3437E82970B1E7EE52C6EF9D9AE515E62A22727E0FF9
-57B57723F2C0D6AB361B69C9706EE642A22D60C50582351071CE7CD2CB2063CE
-F79B68D9889F778A579974A044937D8985EF2EDB4802C41C9F1C90C2CA955E09
-794E1869445DD838C72E6C40B27F0EB4CA469CCA43EF2CBC52D0F85EA9A65A14
-85703F20CB9C8A23DFB37AF40924F4C6DC42845A908FD681EB7A9760CE42E6A8
-CAC78FD7B5CDA0ABD6B7FF2F5A7C11BA6728CA320918A724D258CC0CF39AF7E0
-7F7EB31A504421E7256E4DFC9094DCDF9D5AADD011D28E3BBDD50EDEADD9A6C8
-5A3D88480EBD42B25BC54F25124F74A4AD553381D91BB0073D0E2CA40260F47B
-019DC331A162029C3E83DCC2F671E62285CAAE1508B721A2725C1E393B26C33F
-A21321E0BC4EF1DFE7FD059CEE5714F2F9305DFAE2E13AAB396A8BDCAAB31DA3
-5D2C97192EE1A3F6A3222ED562DCF55938FF3569D575E79EA970CE161EDB92FD
-8AECEBEEC8B1B659354E686D3DC314B9E7CC0BB26335938C1C7E1B345A8EC8E0
-448DD0ACEF4F0DD28EF06BB4CB88949E8BF0FBD7AC280B3C88C965ECFEEFF13B
-AED2C9C86B43AE788B7CF2553AE7F595B8CB7E1D02CDDCB93C15
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 14 /ffi put
-dup 16 /dotlessi put
-dup 18 /grave put
-dup 19 /acute put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 50 /two put
-dup 68 /D put
-dup 69 /E put
-dup 71 /G put
-dup 76 /L put
-dup 78 /N put
-dup 85 /U put
-dup 94 /circumflex put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-dup 126 /tilde put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30
-4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632
-BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B
-041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721
-3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762BFCDAD26E094
-0B5FA59BAF86B33DC3FB410482C89BD49D35366A89B60E664BD2FB8B6BA4C8F0
-6346FB25A30ACD007AFEBF8AD0DF025287F48C231635CB6432E5D07CC199F5E6
-F6F2FCBC82331A9856BBE0AAABAFE8F4557FBC1F1755C616014C46FDD9BCD5E2
-74D6ED50824C60C92D3FE775537FF81BFA46D5CD10719F7759C3202BDD4ACE5B
-16155CEC9104E72C64AE50EF312202BC3868261B1E2FA93DE6232D7A5ACCF319
-E69B1B46CC9059E83E5363F843D7943FE7199A188C7086B2479E51DD46B03661
-026301509A0B5820167D62A4DAB4FB1B2036061C3BD36EF9F17C00B1EF2834BE
-B4EDA7C90D86EAFA03FF8ECBA7E3A965E6FA7C7C58FBBF508D7A1B13F8EFD6F2
-42A708BD62E0044C17422CFA3675F118EC90BEAFF1B0B26FD87DE34F560BACA2
-B3F71DCA46C784DD766FB880AE6C3899154FC1469CEB07DD97AEC7BEE2306813
-72C082827E05174D93C6ADB569125F9216FAC9417AC2F08BCBEE840A1D934F04
-6D2C0D128C20605670488E32EB8A4DF4D1F41F960ACD5B075380E7FABBDD7940
-0061C86E7632B97F0CF576013FC802089CDDD049CC50ACD2577BD46EDE07C475
-4C3E9610BE4169296F1E4548F6D850C3BC0F109EA0C85DF87E794F65C3F7DC47
-BC5D474047FCF7AC44C31ECF04D3777325D8B26CCCDAA6DD5D10A22719C0E9AC
-18DFC769FAA33A7CAE498F93E090559513952CF0C127683AB56FDBBF7FB4C0BD
-FF8DF946996DFA44366FA13EA2DE60E35708456B501485F025FDF67B2527CB5B
-775A28FB4F7A506546A12D7DF1E266B1075465A9DC0B62DBB3C70CF8A9919ACC
-69DF54A36E536FDA79BFDC65D00F1E105515E9B14A5C2CC4350FC582C84CEDD8
-952AAE0AA20AA7A92ECC025964AD79AED3791232D219E04A654A2FF25C901B24
-072CD077FF3949594627A38A32A220C4957F2A5ABE88BBB7DBB360CA19C63D25
-EE7BF0940DD0FD50CD90792A03D61521A82F90376723A190FB039397CD48FC66
-28CEF6D3421040367DB78142702FFD89E0A00E03CC42C6D0B02C5639C26C8A58
-EBC6EAC6CA242376A680A5A73CAE6C893AE7BCF42F21966DF0F487D1FD20826A
-1AB6D9B3E4AED46B224E95668E4DF918C8DA5B63C8CFA1F4BEF212A2E4CA63C8
-73FE76801DAD11E96D059E0EB0672342F505BEB7D0231DACA72F90EEEB0E944B
-973B00DF7FEA21AD2DE77571A922C39D526EBA4907C01EF8719E9591E3CC0BEB
-6798FEF283083109B3807DC715265E6CEA6E874FB01F758E7F4B372CB6967A12
-7C9B1D328AFDDC0DDC32243E1E847F69E02BD6C64CE24AFF85CC05BB90BA3AFE
-1DF8A910A230A48004034D7F72C23A4F1B556BCA4DAAABB66011074615E8992E
-00EECF73939959F27BCACEE2E60389EF53393F861505C0E374B8BA7DA2A54634
-1FD44F541649C585D4EA8012426E957AABBE7B78633800805DD6C958B347F386
-6A4A3F0308081F1EA96676F7221C90674ECC66BA7E32345585363E44B6BEFF11
-8424EC471F8C234B145A9F7C6741C1C0C257A55078BC8897B24E1CC71AEFF8E4
-3C46CF3ED69BE05ED2747D027E55E8D24DB09D9978A5FD5BB5968C777DC6E62B
-7769E18593A21F1D7061B7E01D55FAFF879A299C6990DD8FE4E03F80F2BD85C4
-8489D834EEBA66BBF6A378CA16418091D3B06173130922E9C9AED4CC09B00FA7
-17C0E6218E5F17DB18BDF932EC3B7814CB746CDABE362CFFAF9EA195DB2E3355
-C4804D4E65FEB1BE1293524D1E0C7A9CF87C04107E60EEF8E6316FE1961EFA4C
-380691175D7CAD5D42A04BC9117A8A53E86D17021048A9F73F8BD6C30BCEDCA7
-512B4224F26D5C3F949B65FE8A222539ABF1319FB80F7C1C7A9049849BC39718
-4F081BE49D110030630957DBA11BC38DF9E67F60C3A0E2B4165E81F0E1444690
-7DFA89C8463247F1D84E31A168E6A6C12320012B4BF5104E343CD3A9A4A80ECF
-6FC7B0043E6B9107F1EAD0E949D4C7286A2A9CF506522AA76758ED115800586B
-8765A82598C8F882F3BDDE02EA5A508D23AEE9CCAC51B237E0C004A1B8921F83
-9516AAF0640C2126CBC274A744740A4CE202BF4DBA9B9635A345C90A87994049
-C8C975A3A364DE31790B9138CEDEFD6736626405F5C55F8BAAF6723641688424
-CCA5871C72A65D204F4B9BC8A5B2572CDBC55A615E7BF4695CB5E3FD45280236
-C2B569DBE95893E896D1B300BE04FBA8470F89305584B332486CF98EA496F675
-61AE9FE8C6099BFEC126D8B6E2ABA4CD97F7434DBED0A09151671EE9BDF7F1FB
-029378C428D367A4DD129DA2A33C21C91EBB53045983BC27700DA4F8CD28D4CE
-BCB9D37B5DD4A213BFA8B48BBF40399DCED470E541BFC87C0B14C2EE96959F36
-26536E7442A18F022CF7A1523707E2C71CC700959B038856E4B562E0FEB326A5
-149220427406DBBE2E2DF677BE8F133CAAEFF29B491E590848DDFA014E0A6E61
-D393071FBE1A75DE6D751920045D59831440D0F2F84C48BB712E2787B969FC93
-41B4F53427CECA794D8CFFFC394F5C61FBAB6D289FF49F08EA396111194E941F
-BF0FDE0A480A0D8025C2A1EB0A7123C2C4933FB57F8D5821AD99D87FD6F595DD
-2E3938CDCB424E28C18A5B72F301CF91DAC0A7A52C637BB60561B14903297EE9
-EA8361DDDDE5C3DF4D7BACCA022EC94422F26A233A62FA49B48F59F0B772D4A5
-01D558AC29A11CFBCA0A1D22DFF33E42A6ABD39107FEE8CB267358710AE2018E
-BAE0C60C5115216B4E5A235DE847F2174456DD5167A49FDE0E298BD6F78435CE
-45277AC664AC406D26A46B3EB6FCE8FEF468E1C17F9F3878317E6B93ACD62B83
-873ECE0B8A7E3D577A1DF1CD6BBAE97485680152BCA0A6612EB132F295176232
-FDA5FAFB9570CD4C45F6543857C21D3B529CE2B56A7EB7F8A8AA72775022550A
-C98C1C40A5A2FC71E79D0F13FDCB717272A52EFD70681F899D6FF0F984D2B038
-8F40A07F2EDC6D89905125BF49B8DED77B70CB677B2F5D8E14A596F08D1CA4E6
-FA0E729C9869B9B9D1715235C5FAEEA75E57AB60E6576FC06CE5CAA30BE42B9B
-AF09F2FE4F358526501BA0BDE042CDE1A3B6290FE3A8CB744CA6E2082CCFD6E3
-371D90319099ABC30108CFF909C9E3FFFCD5027FC7792B3337FDAD757F9F189E
-94CFB440246DB5080D22B0484BC9EBA1B71E759B775152DA6750C5125EC57F21
-E3DCF7781F6B1F4F0B8A454F7145C56A013110B56724961F2B5C9D5BBC31C38B
-B03EDEE91AF1842DC0AD3A139514B4B9876074751893AC60D79C9FF29AE3BA0D
-797DA4CCFBF188238B7CD7238909A368964B80904E8B319107529F7740D8CD36
-A4F4416F5CDE3ECD9E96E0528F3DA04EC8D2D9F883649F276CD9E9EEFECE0554
-B59154E978443DEF09DA8E20768C773F64CB6990CE16AEC00CC9C354D7B4A871
-C93433BDECA5C5B29A576352C18DF64415BD65FB49AA4A37C6A08BB49EF727FC
-AF41BAA5561E96C8A8D3C878642B264AE6FE7A4714A95BA15751098B655B8DDE
-BAF7CB671D0C831122C688DF16500092D9893165D84304A76EEF783B1BF9C7BF
-A0A44561034D7B5AF0B941081BAB79935F87CC47C1A94C3474F5A816038ACF55
-A28971441815C25409267CE15DCEE1106DA3AE31DD6CFEE18C56930D8B83F72E
-39D9F8388028B829F8C088AB1DF85E48C9136E7A002F58B6C228B24DADBCB575
-1E46776DFA05BC5B9975B275C4771E133039E03589E91886F9B8D8A24CCE2C28
-869B9611C9F1A1C2DB2B4D98CC2B33657FBD9D401232E8A60B26BAEB7B6ABA0A
-08AC541D2C40E5D5F99E59087B5FA41BEBD443C9DA454515BB212E8871FE5003
-B218CE118BC213128782ED027E29382606F84A730B362206F35E2AF28FE0057D
-66115636DFD24EEB3ADAD99EF5437EBECAC657988475A398815EEA1D47FAACD4
-9D5498CCF68B58B9D733925AE8BE4F49EAF633E000B6AC6FF355058B08E059A5
-FFDF1B568C2FB202E1FE5F0E33667C31AD1BA08C5443FC3DD94F3E70040BF186
-9D6D1759275AA67CBAF0D58C6CA455A3A3E947A5E92B44B9A1A79154918905CE
-6BE152BCA8C421B2B9281917EBF329597BF5072952BCCA4E3B14E783EC0C9FCC
-FA05EAF1EEAB96F7F88FDF23FC5A7C702542B3484F0341D81C235DE61BE04653
-4DF80DA696682CE68CEE9D4DF7611D86EEE18C00ED8E5406F3297ED1E0687F46
-86526AF9C811766A79F26F4A9291C8FA58AC32237696BD52A8C07CFE7DD95E1B
-1B401ED62F4E81B8DB488EE433F7470C09673C5BDD609BBC5F4F92109686B803
-E63FA706A382F6FEBF4486FF7E414886AE0769BF7A45E1A1AF84D31EBB6E8B2E
-760BE525A023166F9C77341C19CC4C83632CCACA07C833B355791BDD303266A3
-8D57C9BD3F75DA69B60C86A0863DD8E7F99AB41875DCCA3BEDFD63E4ABAEF0DC
-20F67CDB3FC225D97D22C6DABEBDE62AD4E6B45F39D796EF2B4EA684DF8AB73C
-BD8C5E8B0515E33497FF95DB0D270AFE7E02463AAA9E507277ECE5A13A408AF8
-1F02675800CF1ABDD3E469D88788C2D7492AAA455B4DA5FA121923F9B33EED5E
-B6D0C1138B364370D9D435C31C85D4C6E351F9922D12EC851B2C53CBA16F36C0
-0FFFBEBF42FAEFC77FEEB164D16668F11F9B279736380482DC333CF89C42A4D1
-E01DE4377AA06BA655DECBEF86F1FD882891BF859BBBD39B73D2FB7DB7678DB4
-77C54FD056D115E7FA62E582B6CD2803D40882204ABE7A245241C149377A7B5A
-BC75982489F6F29A301CABCC547F005CBF01819BB279BC775C1A67C0A1544D81
-1063FA144761F1D0B6BB3CFA49927B1415647D03E62BDF7B37366EC4D3E79068
-D3B70246E1D3AD811DAE133FFD5402059F936D38B9A33499096FA1F674D1A26D
-E4DCDABDE6512815390EB7225E2C2E629624815BC5B7004697A566B15F03340C
-828A635E303A5D8F665EAC15629D68D72EFF4BB28C732D0777DE732139E1F3E4
-7DED96116B8B82894170BA697D2388014AA235BCBA356B8E162463C98D1A602F
-6AE42FF547A0604527364E55585E600D3E9E226F50BBF994D645B458718D4237
-F331C1AAA01901A270BA61A5BEA47A34D2B36F1A01E33167A5120BCB1B95737B
-DFCD6C21AE76B86CF22C34A1BB544E3DA6D0BB02EECA21B537AA3F85384E0685
-FE86FFD4883E5917E8E4A6BA9F72386C04DFABFF7E85FF327D0380A581055E29
-B5DD25F67E459AD8E455701CA56E6682CE157498F8015E9EA9309964507680A8
-129708565754D39295938D39B75F6FA0E60DAA1B3586A73CD93B690ED7075A58
-B1D81CB99A85A4E2C2C7CBDB0BD156A9453DF4A0DBB0B5BE7F2E385AC0CBDF42
-53B43BCB0B7051970CA90668EAE5524B4B47F9316B5EBD95B42DFB6A686366F5
-4E8ECD2EEF1C1DC0D4E91D627CB754D05C42F6B627166B53C5E9979F67C05FC5
-1518A9F66338E6F0A68A073757C1B09C3BA45A4ACEEB88FA312BD29C64B9F704
-2AA83B63F6B79D4BA81804F31C49C5E86DA588D60FF5F5F0DAD45121D1DF136B
-824522C19BC1FD616B7ECFD801A8E6B3C900C8C7EF387ECAFA0171F94B12972B
-9BBB9400329B94664828228A7B082747CE7BB86FA4BA7DFFC70D6369F701F4D6
-75362A1E2E9FC1F9491A21B74A7B7D9E08A2D1CFEEFB1B00B217E9B82BA3F043
-F9A78D26F017DA6E33BFF7FBA1A3F0A7A9FDF9E545C9574B0E643A2576FB5D11
-D2A31C80B7D1E223AE9D65D0DA27ADFFF437D29537A815808C4051D5AD68B8AE
-AB72C83E36CDA0072FBA4BC6BAC1AECF629119AB2A7FC1DA1ECD40A759943EC9
-5F5A5D8C94331532B16C85F79925E485494469A1EB4741D90208E4436BB71700
-DC5A262B1857337F13121EFC90D50416FA6C9F59EF53CAAE5D8FF8B922939F24
-55A8380FDD23B6DBF89CE32FA744951CBB0D1F0F54E2F4D47D07176E08559FEE
-CD080B9EC4E92C389381DD7888F7CFA9B01287B6EB9F7FF4FF4B0B5F14AD44D7
-62502DF574417E86520F578FE229113B707673E7C596947663A6DF14067ADD25
-B2BA77923EF2C29E4CF0AFA1E76A9B3531153D65CE094C768C17A0D429A11FAA
-F765671285FD96EA5759F2FBA19E8520D748D4BB6B2581974004BCA3A231E69A
-80E8B9C3DE4185AA9FE85FBD47CE5FE47CEAD1CE8BAFBEB9F6E1D546537BB712
-76DA80BCDBA6324BDCFDCB33DA14D6CD7FA460A06E5F977ED8295B5529BFB984
-D5CA95E43F2645035CD347640DE79BC6EA3008556279D33AD1EE216DF0C84A6C
-CD78B2EF8F2DE91176FAF066BD0856BBF7C2E9B36269139C51FA2CF9C032CB26
-BA80F92D00D53B626EE4A497006C81F93A4A0ADDB3ECF54ACC6A88F0F4EEA5F0
-C41E4B6455F9D4CD80057C2078D667D74EAFAA08815678EC144B8FC1CE4794F5
-747B942C90896D9BFB7065FF36E37AD38DD5EC51899CDE80A549C816AAC70456
-3B41E00B099BB201B4C49C2A91F5D75AC1F1AD6EB8BF300FC840E8F3C28ECA46
-FDD957D4E9F82828719760F0D067042F7EB687D12AF6ED89F5108B8092D9DEC0
-28362EF0597EA892067603C2F2780283617D14AB3F2998B4D94F272DD48A4FF2
-2240632723F02C2C6C526A0D1D7C3DB7D650979080B936EF2D71B5AEE7F1C743
-730712A2DDD6A7E87FFBB31C0E8B9C57D33E8B7CB24B9B79E2D01D698F4A2B52
-DCA685B76DAAC5A7849829CCB09F533E6AB6EBB2867097D29FD6CC02C6570758
-778207BB9FCEA10E355D2334405A6C5CED25B06D51B564A8FABE0810F3CF1591
-96773D29F172AA58F1A785762B88AD2857C2DD2C582E48E92EEC42F37C956F9C
-754E1C985FD9A3F066DDC7505D55A0019691964BBE8648DB702C2531639C015B
-C919A266078DA05556DA1E18C8609430DBAAF5EF26C3F6C476302CDD49652264
-5F3E12926CE91BA7EA2D77FC046FBDD952C66E35D810FABA0DF577854999D3CD
-17A06E168C4BEE93AB73D6ACF5CBE38AC803B049F89EFB2C5A4D608BF7A6A107
-2FFA1C3020933A896D33D172AF8F313D53572F5646A1BAFF9BBBD7894D9A8968
-D4F04222ADE3A1BE7C5913DFB65FCA39FC3C68FDFD6EC93D6858F0740F93D886
-C09AFF43A5C1DF7052378F128EDB66786A3547CC075C2FA023EA2A63C7A6B064
-97D470AD76B07A59D7CF3ACCC5CC563CEA0B8173812C710A2D44E2D60CAFBF16
-13D1890265804DE85521829FD3DC04F967BBEA013F8178709A51416AE0D87FA8
-8C3DD085CC9D8D2EE5DE3DD630EB053F540B1CBCEE164BF529E3EC1218646437
-CB101F887AC6F5AD782BBB677E8FF3018E686D3DA1DB617759506627C269669C
-5BD0AE3FEF1181ED2B692AD3120E40EBB0D8F3CB127FA865FE7A36130E74720D
-023F60D6A1590E725E0A86468A5D7469AE8F7DB27B45991ADDEBF35BAD7BB467
-CF1CE137C48AD5C648648BE0AD3DC95B888D3432CDA047B58BCECDB1C10740C9
-EBCBFC21732296C3E9E273129E62CDB1ED23C5494DDCF13C72CD91F5495DCD3D
-D9E624B4C516169F6BD6808FD557474A1A49D93C0457CB91C15EEB0C59A2A47C
-CC64EB273209F7ED5292C015F301BC6A004825D9715F988E8417C998F4B3AE39
-AF1EE945944B95CB0BE7C2C78174D36DCC181D2C4485F7A4F6E3F188D84996D2
-7767614B51B595D27D7BA1F010CCBFBB4A850E4924CC190AABCF3FFCF4562262
-DB52023EBCC89EB7FB29F1A56BB5D5D411FD11301FF3FDFCF512FB01D4AA67F4
-ED3F670C222977F22DFCEF59A9C9C76EEE0F914F04D9FBA6D917371F25475624
-3C8CBE5FD9BAEE93BE81AC5F4C35E811277FC61E16D98CDAD851B39360FEE863
-D640317D92FCD587EE527714A70FED5B60976AC6516F7B0DA2E3B48B209BBDB4
-3E8D0F5A68DADEF38A3FEBF97885B68038B397852C5B1EB6081A12C4A19F27B2
-2964C2B12430024135DA79255CF0B9C830F9B67110FB782ABCC0B11F5E5D2E7E
-62007E5B0CAD89273CD169316020DD055AB316CB9E22ECF70A13C7DB0190AD57
-9D8507AA5B1E0AD996137F3D01F74DB257EF115115BF54039B05113E767DBFE9
-6E95259984262CF15B39F40F7557BECC3D72B996945E3748F12D7D264CF03A73
-939711DB0FE60ED2C0C058832D62B36EA9581BF1ECE84BEECA8A532362D045EE
-6A8B375683A3517866FE5CE4BA9AFEB598DF3A521E2D40180063F0146C1E6D70
-69FF30273ACA3B469A4ABA1F00F832F43ECAA26F50EB30AA4A0A43F6672CCCC8
-7AA3261709206497C62FA161DA05BE012FF0C61E8AC135404E11C88E44798FED
-C8624EBA14C3F29E78F6756509AFA6A6DB52F64D1C21131C3D6AC7CCC85DC039
-E7C7F52B7236F799BA55D2E1A0F950157337479E123BED44F10D737CA349BD79
-D7A866B61A41E9E373A72F697074920791C4392683F1065BB05546A3EC1A1BEA
-4E06DF055CC3E49A97D497033CED7F2157E838A71D530574997E8A9ACC9D112B
-6F1E3287BD1D6DE3059D573105BFBF7BB9EA5919EB0D472BD9EA40FFF317A600
-BFF74E9A567300946392FCC1446818C033D5ED18DD09F1FC40C31798C4877C1E
-F7589A7EE12FC113E0D5C394B9E162ABAC29902D2037375064E8B93F85FCC226
-75582633D74F19134963F189FC8BA3534B69B4592C6B43D12F30ED8B11D51D6B
-BCF5FF96E919F7E0071403EAED712255A515079CA17B281318ABB9D44A5AAB96
-956B2E40A8312B3BBF3A928343BF7FE6DE81889EF8629E7A353C1D0771DE8899
-E4D7D47ECE44B4F7D0FE2FA4B10675AA0C24F59E22CC8A432FE7776DF4F042D5
-2C37464202664B75275CD4C46DF7FC32CFAC0CA4D0E6F7805A0221625CBFF147
-17F876EAB25801B3A9BB3020EDD39F2386820D1FF0788F63CDE1B04D0E417F0D
-16DDB16B0850591B0A8B6B0E9BE531558434D2EA441DCA1F99D1DBC0177AED2A
-84D268C923FA11182CD287F35C38441DB259CA632010732A34098A6A7B2036BF
-77AB4B4442062B3F1CEF021BA4EB5A3B7BC51D92555A7E68EA5FA142E6406B9C
-5292A56B48CDC13ACDB8594EB2689AC52D3E1E8F4E3F20DCFD0D60F588274247
-749D26677BC25F74AAF7A9BC4EE9F7CF33B43C56884BFC617DB872339465AA22
-ABFBE14FC1D7C6DFFE26A1384C54E84E4D0C53C8BCF20052E5E0C37DCD7B87A6
-BF43DB8E4095F235A28591C939A0EAED07E7515347CA17F3C861076D590497E3
-379F5671095566EB74480D635DCDFCA0513FBE5D175AD3A70DA5AE551EDA1A82
-0F9626CC07D0DFA4AF84E34D76DA4734165E261E5ADB08A7894F831FA36A8C91
-F4CF41B0395BB698E7AD3B5B53F7823F0F250ABA832E877D5B8D144A507365CE
-DEB558DA47F8325185C0B73E30BD7731B7E529817B3F6B845CE44A5474F2C6E6
-566A7B129544E2ECF251F146555661F8A088FFB50068B052826E5B20832D2328
-EAD92DC22B22BDB5860577CEFD4DF35C46FBAFECDCA3F4074BDCEE3208B77BDA
-FB58A1730DFBB0D984F08735C3CCB821A68CE37567A9817451A7C78FF7F55729
-85ABC2567D522BBAD215095A0447EF30D23BA45A24ACDEC4E38DA511674828DE
-6AD7736F3B989AEE38DB3F7A61DBB7C2438CAA02CB395209780FB22D4BD1CBA9
-5CF9B2169F973E322649597A56064432BCF0A2B484F0A145AD3E79773E1A0466
-9C5644EB6700703E67DDA869E4200FF89F3FEE1CD37318607177B8F8CDEB685D
-87829150D86131929C85630375EA5A1A539DEDE767808E6E55D5AE2346B4D39B
-85E1B3BE9BE4BBABAB62219A05C303D72D63354754513A753DBD8654F2948E87
-12B850890DAB5B0C82EF882AE1A34C2D8CFF44FFB6E9129F0DD7BE6F11606B9C
-7FB57ACAC628C011AAD417478FEBCFA0B1D59051191A2DCFE35A1F0BB3C88EBC
-78C8E1FD5E7ED2980D95AB248D6140AAAF17C9D8ECBE0E553FE476C23905CFFF
-4646C906D39DFB11A3715F260D13F250732EC66D4BDFD3F2D7FA95520A2938E3
-35762638B374221674B700ADD197501ECF1EF1454790B6AE5ADDFAAC6AF1E712
-B2A467591659B7AA4D7BA89C4DB0F16EB49FA37A5632676502A86536D3E38893
-08DC8CFEBCEFBBF7A1A9104E4C9F827AF885A981222E4C9B89B69710B4F761FA
-3992E8168EDB118CE8C3
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (fr-drdref.dvi)
-@start /Fa 242[61 13[{}1 49.8132 /CMSY6 rf /Fb 133[27
-32 32 43 32 34 24 24 24 32 34 30 34 50 18 32 19 18 34
-30 19 27 34 27 34 30 10[45 45 43 34 44 1[41 1[45 54 2[31
-22 1[47 39 41 46 43 42 45 7[30 1[30 30 30 1[30 30 30
-30 1[18 21 18 4[18 14[27 4[30 30 18[{}58 49.8132 /CMR6
-rf /Fc 129[35 35 1[35 2[35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 1[35 1[35 35 3[35
-35 35 2[35 1[35 35 35 35 35 1[35 35 2[35 35 35 3[35 35
-35 35 35 35 35 35 8[35 35 2[35 35 35 1[35 35 1[35 1[35
-35 35 35 1[35 33[{}63 66.4176 /CMTT8 rf /Fd 135[60 1[60
-64 45 45 47 60 64 57 64 95 32 2[32 64 57 1[53 64 51 64
-56 2[57 14[86 1[109 69 5[72 1[88 83 1[87 25[32 19[57
-57 4[64 64 12[{}33 99.6264 /CMBX10 rf /Fe 135[43 2[45
-32 32 34 43 45 41 45 68 23 2[23 1[41 1[37 45 36 1[40
-2[41 5[61 11[49 7[62 22[27 3[32 32 20[41 5[45 13[{}26
-66.4176 /CMBX8 rf /Ff 129[35 4[37 37 1[37 39 27 28 28
-37 39 35 39 59 20 1[22 20 39 35 22 31 39 31 39 35 20
-1[35 8[53 6[53 1[44 4[55 1[48 54 17[35 35 1[35 20 24
-20 2[27 27 20 19[35 35 1[20 1[59 39 39 41 11[{}48 66.4176
-/CMR8 rf /Fg 139[53 1[57 3[76 4[38 2[42 63 76 61 1[67
-28[105 99 47[69 19[{}12 119.552 /CMBX10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop -273 -364 a Fg(Carte)46 b(de)g(r)m(\023)-66
-b(ef)m(\023)g(erence)46 b(de)g(Dired)-8 -256 y Ff(\(bas)n(\023)-33
-b(e)25 b(sur)e(Dired)g(de)h(GNU)f(Emacs)h(22.x\))-342
--176 y(Les)g(commandes)g(marqu)n(\023)-33 b(ees)25 b(par)e
-Fe(\(D)n(X\))k(n)n(\023)-39 b(ecessiten)n(t)27 b(dired-x)-450
-31 y Fd(Lancer)37 b(et)g(sortir)i(de)e(Dired)-450 196
-y Ff(lancer)24 b(dired)1267 b Fc(C-x)36 b(d)-452 276
-y Ff(\023)-33 b(edite)31 b(le)f(r)n(\023)-33 b(ep)r(ertoire)30
-b(du)g(\014c)n(hier)g(que)h(l'on)e(est)i(en)f(train)-450
-356 y(d')n(\023)-33 b(editer)1182 276 y Fc(C-x)36 b(C-j)p
-Fe(\(D)n(X\))-450 409 y Ff(quitter)24 b(dired)1242 b
-Fc(q)-450 613 y Fd(Commandes)38 b(de)f(d)n(\023)-55 b(eplacemen)m(t)
--450 779 y Ff(ligne)24 b(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)1138
-b Fc(p)-450 859 y Ff(ligne)24 b(suiv)l(an)n(te)1213 b
-Fc(n)-450 938 y Ff(ligne)24 b(de)g(r)n(\023)-33 b(ep)r(ertoire)23
-b(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)721 b Fc(<)-450
-1018 y Ff(ligne)24 b(de)g(r)n(\023)-33 b(ep)r(ertoire)23
-b(suiv)l(an)n(te)796 b Fc(>)-450 1098 y Ff(\014c)n(hier)24
-b(marqu)n(\023)-33 b(e)24 b(suiv)l(an)n(t)950 b Fc(M-})-450
-1177 y Ff(\014c)n(hier)24 b(marqu)n(\023)-33 b(e)24 b(pr)n(\023)-33
-b(ec)n(\023)g(eden)n(t)875 b Fc(M-{)-450 1257 y Ff(sous-r)n(\023)-33
-b(ep)r(ertoire)23 b(pr)n(\023)-33 b(ec)n(\023)g(eden)n(t)861
-b Fc(M-C-p)-450 1337 y Ff(sous-r)n(\023)-33 b(ep)r(ertoire)23
-b(suiv)l(an)n(t)936 b Fc(M-C-n)-450 1417 y Ff(r)n(\023)-33
-b(ep)r(ertoire)24 b(p)n(\022)-33 b(ere)1179 b Fc(^)-450
-1496 y Ff(premier)23 b(sous-r)n(\023)-33 b(ep)r(ertoire)919
-b Fc(M-C-d)-450 1699 y Fd(Commandes)38 b(a)m(v)m(ec)f(la)h(souris)-450
-1865 y Ff(visiter)23 b(le)h(\014c)n(hier)914 b Fc(Mouse_Button_2)-450
-1945 y Ff(ouvrir)23 b(un)h(men)n(u)786 b Fc(Control-Mouse_Button_3)-450
-2139 y Fd(Actions)37 b(immediates)g(sur)h(les)g(\014c)m(hiers)-450
-2304 y Ff(visiter)23 b(le)h(\014c)n(hier)f(couran)n(t)902
-b Fc(f)-450 2384 y Ff(visualiser)23 b(le)g(\014c)n(hier)h(couran)n(t)
-807 b Fc(v)-450 2464 y Ff(visiter)23 b(le)h(\014c)n(hier)f(couran)n(t)i
-(dans)f(une)h(autre)f(fen)n(^)-33 b(etre)185 b Fc(o)-450
-2543 y Ff(visiter)23 b(le)h(\014c)n(hier)f(couran)n(t)i(dans)f(un)g
-(autre)h(cadre)261 b Fc(w)-450 2623 y Ff(a\016c)n(her)24
-b(le)g(\014c)n(hier)f(couran)n(t)871 b Fc(C-u)36 b(o)-450
-2703 y Ff(cr)n(\023)-33 b(eer)24 b(un)g(nouv)n(eau)h(sous-r)n(\023)-33
-b(ep)r(ertoire)625 b Fc(+)-450 2782 y Ff(comparer)27
-b(le)f(\014c)n(hier)h(sous)g(le)f(p)r(oin)n(t)h(a)n(v)n(ec)h(celui)f
-(sous)g(la)-450 2862 y(marque)1182 2782 y Fc(=)-450 3065
-y Fd(Marquer)38 b(et)f(^)-57 b(oter)38 b(les)f(marques)i(des)e(\014c)m
-(hiers)-450 3231 y Ff(marquer)31 b(un)h(\014c)n(hier)g(ou)f(un)h
-(sous-r)n(\023)-33 b(ep)r(ertoire)31 b(p)r(our)h(de)-450
-3310 y(futures)24 b(commandes)1182 3231 y Fc(m)-450 3363
-y Ff(^)-35 b(oter)30 b(la)f(marque)h(d'un)g(\014c)n(hier)f(ou)h(de)g
-(tous)g(les)f(\014c)n(hiers)-450 3443 y(d'un)24 b(sous-r)n(\023)-33
-b(ep)r(ertoire)1182 3363 y Fc(u)-450 3509 y Ff(^)e(oter)24
-b(la)g(marque)f(de)i(tous)f(les)f(\014c)n(hiers)h(d'un)g(tamp)r(on)171
-b Fc(M-delete)-450 3588 y Ff(marquer)23 b(les)h(\014c)n(hiers)f(a)n(y)n
-(an)n(t)j(une)e(extension)h(donn)n(\023)-33 b(ee)160
-b Fc(*)36 b(.)-450 3668 y Ff(marquer)23 b(tous)i(les)e(sous-r)n(\023)
--33 b(ep)r(ertoires)614 b Fc(*)36 b(/)-450 3748 y Ff(marquer)23
-b(tous)i(les)e(liens)g(sym)n(b)r(oliques)562 b Fc(*)36
-b(@)-450 3827 y Ff(marquer)23 b(tous)i(les)e(ex)n(\023)-33
-b(ecutables)747 b Fc(*)36 b(*)-450 3907 y Ff(in)n(v)n(erser)23
-b(le)h(marquage)997 b Fc(*)36 b(t)-450 3987 y Ff(marquer)19
-b(tous)h(les)g(\014c)n(hiers)f(du)h(sous-r)n(\023)-33
-b(ep)r(ertoire)19 b(couran)n(t)72 b Fc(*)36 b(s)-450
-4066 y Ff(marquer)24 b(les)f(\014c)n(hiers)h(don)n(t)h(les)e(noms)h
-(corresp)r(onden)n(t)h(\022)-35 b(a)-450 4146 y(une)24
-b(expression)g(rationnelle)1182 4066 y Fc(*)36 b(\045)-450
-4212 y Ff(mo)r(di\014er)23 b(les)h(marques)g(par)f(un)h(caract)n(\022)
--33 b(ere)25 b(di\013)n(\023)-33 b(eren)n(t)189 b Fc(*)36
-b(c)-450 4292 y Ff(marquer)f(les)f(\014c)n(hiers)h(p)r(our)g(lesquels)g
-(une)g(expression)-450 4371 y(Elisp)23 b(ren)n(v)n(oie)h(t)1182
-4292 y Fc(*)36 b(\()p Fe(\(D)n(X\))-450 4574 y Fd(Mo)s(di\014er)h(le)h
-(tamp)s(on)f(Dired)-450 4740 y Ff(ins)n(\023)-33 b(erer)23
-b(un)h(sous-r)n(\023)-33 b(ep)r(ertoire)23 b(dans)h(ce)g(tamp)r(on)338
-b Fc(i)-450 4820 y Ff(supprimer)23 b(les)g(\014c)n(hiers)h(marqu)n
-(\023)-33 b(es)23 b(de)i(la)e(liste)379 b Fc(k)-450 4899
-y Ff(supprimer)23 b(le)g(listing)g(d'un)h(sous-r)n(\023)-33
-b(ep)r(ertoire)397 b Fc(C-u)36 b(k)-450 4979 y Ff(relire)23
-b(tous)i(les)f(r)n(\023)-33 b(ep)r(ertoires)24 b(\(conserv)n(e)i
-(toutes)f(les)f(mar-)-450 5059 y(ques\))1182 4979 y Fc(g)-450
-5132 y Ff(bascule)c(le)f(tri)g(sur)f(le)h(nom/date)i(du)f(r)n(\023)-33
-b(ep)r(ertoire)19 b(couran)n(t)72 b Fc(s)-452 5211 y
-Ff(\023)-33 b(edite)25 b(les)e(options)h(de)g(ls)968
-b Fc(C-u)36 b(s)-450 5291 y Ff(r)n(\023)-33 b(ecup)n(\022)g(ere)24
-b(les)g(marques,)f(les)g(lignes)h(cac)n(h)n(\023)-33
-b(ees,)25 b(etc.)270 b Fc(C-_)-450 5371 y Ff(cac)n(he)25
-b(tous)f(les)g(sous-r)n(\023)-33 b(ep)r(ertoires)704
-b Fc(M-$)-450 5451 y Ff(cac)n(he)25 b(ou)f(fait)g(appara)-8
-b(^)-27 b(\020tre)24 b(le)f(sous-r)n(\023)-33 b(ep)r(ertoire)347
-b Fc($)1866 -364 y Fd(Commandes)50 b(sur)g(les)f(\014c)m(hiers)g(marqu)
-n(\023)-55 b(es)50 b(ou)1866 -269 y(sp)n(\023)-55 b(eci\014)n(\023)g
-(es)37 b(par)g(le)h(pr)n(\023)-55 b(e\014xe)1866 -125
-y Ff(copier)24 b(le\(s\))g(\014c)n(hier\(s\))999 b Fc(C)1866
--46 y Ff(renommer)29 b(un)g(\014c)n(hier)h(ou)f(d)n(\023)-33
-b(eplacer)30 b(des)g(\014c)n(hiers)f(dans)1866 34 y(un)24
-b(autre)g(r)n(\023)-33 b(ep)r(ertoire)3498 -46 y Fc(R)1866
-103 y Ff(c)n(hanger)25 b(le)e(propri)n(\023)-33 b(etaire)24
-b(d'un)f(\(des\))i(\014c)n(hier\(s\))307 b Fc(O)1866
-183 y Ff(c)n(hanger)25 b(le)e(group)r(e)i(d'un)e(\(des\))i(\014c)n
-(hier\(s\))458 b Fc(G)1866 263 y Ff(c)n(hanger)25 b(le)e(mo)r(de)h
-(d'un)g(\(des\))h(\014c)n(hier\(s\))501 b Fc(M)1866 342
-y Ff(imprimer)22 b(le\(s\))i(\014c)n(hier\(s\))901 b
-Fc(P)1866 422 y Ff(con)n(v)n(ertir)24 b(le\(s\))g(nom\(s\))h(de)f
-(\014c)n(hier\(s\))g(en)h(min)n(uscules)126 b Fc(\045)36
-b(l)1866 502 y Ff(con)n(v)n(ertir)24 b(le\(s\))g(nom\(s\))h(de)f(\014c)
-n(hier\(s\))g(en)h(ma)t(juscules)122 b Fc(\045)36 b(u)1866
-582 y Ff(supprimer)26 b(les)g(\014c)n(hiers)g(marqu)n(\023)-33
-b(es)27 b(\(pas)g(ceux)h(a)n(y)n(an)n(t)g(un)1866 661
-y(`\015ag'\))3498 582 y Fc(X)1866 734 y Ff(uuenco)r(der)d(ou)f(uudeco)r
-(der)h(le\(s\))g(\014c)n(hier\(s\))430 b Fc(U)1866 814
-y Ff(compresser)24 b(ou)g(d)n(\023)-33 b(ecompacter)25
-b(le\(s\))g(\014c)n(hier\(s\))335 b Fc(Z)1866 894 y Ff(lancer)24
-b(info)f(sur)g(le)h(\014c)n(hier)906 b Fc(I)p Fe(\(D)n(X\))1866
-973 y Ff(cr)n(\023)-33 b(eer)24 b(un)g(\(des\))g(lien\(s\))g(sym)n(b)r
-(olique\(s\))538 b Fc(S)1866 1053 y Ff(cr)n(\023)-33
-b(eer)24 b(des)g(liens)f(sym)n(b)r(oliques)g(relatifs)569
-b Fc(Y)1866 1133 y Ff(cr)n(\023)-33 b(eer)24 b(un)g(\(des\))g(liens)g
-(ph)n(ysique\(s\))669 b Fc(H)1866 1213 y Ff(rec)n(herc)n(her)16
-b(une)h(expression)f(rationnelle)g(dans)g(des)h(\014c)n(hiers)h
-Fc(A)1866 1292 y Ff(remplacer)e(in)n(teractiv)n(emen)n(t)i(une)e
-(expression)g(rationnelle)38 b Fc(Q)1866 1372 y Ff(b)n(yte-compiler)24
-b(des)g(\014c)n(hiers)853 b Fc(B)1866 1452 y Ff(c)n(harger)24
-b(le\(s\))g(\014c)n(hier\(s\))958 b Fc(L)1866 1531 y
-Ff(lancer)24 b(une)g(commande)h(shell)e(sur)g(le\(s\))h(\014c)n
-(hier\(s\))234 b Fc(!)1866 1710 y Fd(Mettre)36 b(un)i(\015ag)g(sur)g
-(les)g(\014c)m(hiers)e(\022)-56 b(a)37 b(d)n(\023)-55
-b(etruire)1866 1831 y Fe(Les)27 b(commandes)g(qui)g(^)-41
-b(oten)n(t)26 b(les)h(marquen)n(t)f(supprimen)n(t)h(les)1866
-1910 y(\015ags)g(de)g(suppression)1866 2013 y Ff(placer)d(un)g(\015ag)g
-(de)g(suppression)g(sur)f(le)g(\014c)n(hier)339 b Fc(d)1866
-2093 y Ff(sauv)n(egarder)25 b(et)f(supprimer)f(le)g(\015ag)i(de)f
-(suppression)171 b Fc(delete)1866 2173 y Ff(placer)33
-b(un)h(\015ag)f(sur)g(tous)h(les)e(\014c)n(hiers)h(de)h(sauv)n(egarde)
-1866 2252 y(\(don)n(t)25 b(les)e(noms)h(se)g(terminen)n(t)g(par)g(~\))
-3498 2173 y Fc(~)1866 2322 y Ff(placer)33 b(un)h(\015ag)f(sur)g(tous)h
-(les)e(\014c)n(hiers)h(de)h(sauv)n(egarde)1866 2401 y(automatique)3498
-2322 y Fc(#)1866 2467 y Ff(placer)16 b(un)g(\015ag)h(sur)e(les)g
-(di\013)n(\023)-33 b(eren)n(ts)17 b(\014c)n(hiers)e(in)n(term)n(\023)
--33 b(ediaires)46 b Fc(&)1866 2547 y Ff(placer)18 b(un)h(\015ag)f(sur)g
-(les)g(sauv)n(egardes)h(n)n(um)n(\023)-33 b(erot)n(\023)g(ees)20
-b(\(\014nis-)1866 2626 y(san)n(t)k(par)g(.~1~,)f(.~2~,)h(etc.\))3498
-2547 y Fc(.)1866 2700 y Ff(ex)n(\023)-33 b(ecuter)22
-b(les)e(suppressions)g(demand)n(\023)-33 b(ees)21 b(\(\014c)n(hiers)g
-(a)n(y)n(an)n(t)1866 2779 y(un)j(\015ag\))3498 2700 y
-Fc(x)1866 2849 y Ff(placer)k(un)g(\015ag)g(sur)f(les)h(\014c)n(hiers)g
-(corresp)r(ondan)n(t)h(\022)-35 b(a)28 b(une)1866 2928
-y(expression)c(rationnelle)3498 2849 y Fc(\045)36 b(d)1866
-3104 y Fd(Commandes)25 b(sur)h(les)f(expressions)g(rationnelles)1866
-3247 y Ff(marquer)j(les)h(noms)f(de)h(\014c)n(hiers)g(corresp)r(ondan)n
-(t)h(\022)-35 b(a)29 b(une)1866 3327 y(expression)24
-b(rationnelle)3498 3247 y Fc(\045)36 b(m)1866 3392 y
-Ff(copier)31 b(les)f(\014c)n(hiers)g(marqu)n(\023)-33
-b(es)31 b(par)f(une)h(expression)g(ra-)1866 3472 y(tionnelle)3498
-3392 y Fc(\045)36 b(C)1866 3525 y Ff(renommer)29 b(les)f(\014c)n(hiers)
-h(marqu)n(\023)-33 b(es)29 b(par)g(une)h(expression)1866
-3605 y(rationnelle)3498 3525 y Fc(\045)36 b(R)1866 3657
-y Ff(lien)23 b(ph)n(ysique)1231 b Fc(\045)36 b(H)1866
-3737 y Ff(lien)23 b(sym)n(b)r(olique)1154 b Fc(\045)36
-b(S)1866 3817 y Ff(lien)23 b(sym)n(b)r(olique)h(a)n(v)n(ec)h(c)n(hemin)
-f(relatif)551 b Fc(\045)36 b(Y)1866 3897 y Ff(marquer)23
-b(p)r(our)h(une)g(suppression)698 b Fc(\045)36 b(d)1866
-4072 y Fd(Dired)h(et)g(Find)1866 4215 y Ff(\014c)n(hier\(s\))25
-b(dired)e(don)n(t)i(le)e(nom)h(corresp)r(ond)g(\022)-35
-b(a)24 b(un)g(motif)82 b Fc(M-x)36 b(find-names-dired)1866
-4295 y Ff(\014c)n(hier\(s\))25 b(dired)e(con)n(tenan)n(t)j(un)e(motif)
-307 b Fc(M-x)36 b(find-grep-dired)1866 4375 y Ff(\014c)n(hier\(s\))25
-b(dired)e(bas)n(\023)-33 b(es)24 b(sur)f(ce)h(que)h(pro)r(duit)f
-Fc(find)r(M-x)36 b(find-dired)1866 4554 y Fd(Obtenir)h(de)g(l'aide)1866
-4697 y Ff(aide)24 b(sur)f(dired)1208 b Fc(h)1866 4777
-y Ff(r)n(\023)-33 b(esum)n(\023)g(e)24 b(de)g(dired)f(\(aide)i(succin)n
-(te\))g(et)f(trace)h(d'erreur)142 b Fc(?)2219 4869 y
-Fb(Cop)n(yrigh)n(t)2522 4867 y(c)2505 4869 y Fa(\015)21
-b Fb(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
-b(Inc.)2282 4933 y(conception)g(de)h(Stephen)f(Gildea,)f(Mai)i(2006)i
-(v0.1)2252 4997 y(p)r(our)d(GNU)g(Emacs)h(v)n(ersion)g(19)h(sur)f(syst)
-n(\022)-29 b(emes)23 b(Unix)2069 5061 y(Mis)e(\022)-30
-b(a)21 b(jour)g(p)r(our)g(Dired)e(en)i(Mai)g(2000)h(par)f(Evgen)n(y)h
-(Roubinc)n(h)n(tein)2393 5124 y(T)-5 b(raduction)21 b(fran\030)-27
-b(caise)22 b(d')3019 5111 y(\023)3014 5124 y(Eric)d(Jacob)r(oni)1866
-5211 y(V)-5 b(ous)23 b(p)r(ouv)n(ez)g(faire)g(et)g(distribuer)f(des)h
-(copies)g(de)g(cette)g(carte,)h(p)r(ourvu)e(que)g(la)h(no-)1866
-5275 y(tice)e(de)g(cop)n(yrigh)n(t)g(et)g(cette)h(note)f(de)g(p)r
-(ermission)f(soien)n(t)h(pr)n(\023)-29 b(eserv)n(\023)g(ees)25
-b(sur)20 b(toutes)i(les)1866 5339 y(copies.)1866 5425
-y(P)n(our)c(obtenir)f(des)h(copies)g(du)f(man)n(uel)g(de)h(GNU)f
-(Emacs,)g(\023)-29 b(ecriv)n(ez)19 b(\022)-30 b(a)18
-b(la)g(F)-5 b(ree)18 b(Soft)n(w)n(are)1866 5489 y(F)-5
-b(oundation,)26 b(Inc.,)f(51)h(F)-5 b(ranklin)25 b(Street,)h(Fifth)e
-(Flo)r(or,)i(Boston,)i(MA)d(02110-1301,)1866 5553 y(USA.)p
-eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/fr-refcard.ps b/etc/fr-refcard.ps
deleted file mode 100644 (file)
index b42e355..0000000
+++ /dev/null
@@ -1,2755 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: fr-refcard.dvi
-%%Pages: 2
-%%PageOrder: Ascend
-%%Orientation: Landscape
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t a4 -t landscape fr-refcard.dvi -o
-%+ fr-refcard.ps
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.05.15:0316
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI8
-%!PS-AdobeFont-1.1: CMMI8 1.100
-%%CreationDate: 1996 Jul 23 07:53:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-24 -250 1110 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
-4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
-788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
-C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
-617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
-D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
-532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
-5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
-4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
-DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
-B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
-A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
-8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
-D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
-AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
-AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
-A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
-AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
-85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA
-3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF
-68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409
-FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C
-B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0
-F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A
-B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 121 /y put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
-BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
-09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
-3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4813956AAB24BE7C20FCF9196E8E2F30816FE2279CE3E6067667A39E44
-488D58BFD17606AE885FA06F478D359A6ECF5564C095FE0E5038425D8B152750
-F72F41B3D1E7420EE91CF4A9ED5BBE8C2275624AE257D2BDF5752E803B426F40
-924CB5C29460BC09EC84F3F3A95F6900836F0ECCF6A7BB85A3F8D650017E5FE0
-503A73644EC6C6B0254F0259F8DD4AB3945950974CEB34521881A2506E76EBB3
-7DBA7812E0186DE2C0AD3E6D42BCA320014368DD738408C54AE2CAAA9C05612B
-E7F33218F2FECCE8DB2E4B3A3BCD9D8D0BAD7EDDCCAE45F6A15FD2B8ED263E45
-14AF0CC7B58EF52D5FE73023EE9DAB8249D1EB3B795C7B42BFD2A2852D2D16BF
-CD71056F412571F41CF7EE80AA916EA4FF1630B1E226F474CC3195006043B1AB
-915DA8A9484B930F1F00028287EA3802DA3C3F99961952E04B736CDEC7768307
-879B4D2D553518FBBA727266F94C3A607FFD5D85CD0FB802CA51E6A3792C80F9
-A637D47C13A787F5D9C5BAC24E843DA198B7CC898AD786DEAC0BA9B6EF955ECC
-72DA3A8CCCF7F3B69597A2F868AE359737A9714AE6D81989B4152DA33095DAB8
-5759080AA156DF1F3767120018CE81D296D813DC52786586CF3F38EE3CE181D3
-9D79439EE13D4E5799E03338E93315C3F6BA8ADC731A0D8282637E524C1E9736
-29C594C6F19B49C859D7CCA98148215F7E6943637797641D44DC9FB8FA403FCA
-BD581E477C7BBDBC84048141760B4EE0D181D585C519D02DEB7D1C650BB49874
-A75E95E6A17D8024346AF3288A32A7EDFFAE15BACD436CC76850F2EAC7EFF565
-C4273160FC5DC7434DB94BFA01D1648421FCFEF66D786CFF60F0031B649B6F14
-E9139B27185E6E9A70E439AA8D68C6535A42634FFDA55DE86BDEDDF3D6B73015
-37C7437A96CDAC620A29942E834F714D82774AED0A83771A152EAC0CC043CB09
-02574AFC4CA006FC0D24C3DAAF4D681CC1D2D7870F273773171A4977AD05A082
-0DF3F50C8A36D7D8AA96E82387AAFB48D048CFAE2CBAA88F1865B84CFBBC1731
-A212A44EB98265A8D4A8C118E038A0C3503B27D8B58846C4F3E8112C8B05A41A
-9F8B0E1513528F5D7E509EE847F7224AA06819954974F8065AF49F21840E972D
-C1B028B541BA1364045E814A9F8FB299B6B62CA150245D92588056992FE6D71B
-FB16F2B42A3DE425B302051FCC4A2AA76F6146BAA385614913D2B11191CA6A09
-BAE8567DCAC342D013C7830A0F03D848397110F021C63C9D6AFA90ABBC2DE4C9
-69EDFEE42C028640F9784E8CA11B83B4E7AB58F8335FA294DD68BA87FFFCC743
-67239D7FF1C54B725D53581832F5307FF1995D8273EBA54372AC82B7D5EC5773
-8F52B55255502008E0EDA0646D4D71137D822A57C0E9E05F3D61B91436B5FFE5
-CD90CABEA89420F4ADD844733B9B0F0C72688B9184A2EF69966411DF2B23A25A
-11F009C6F23E452854B77AA33129C531C2C7A8666D550A83CBA6F251CB016F0C
-940EC74FF62C721F3D854404F431DB39548F0785C5140A9D406C06306CBB0C99
-B7AA0E4680D8DE074B369A7481F0C12BCEDB787A1A9E4C71C869F5022447E317
-E6B851B8D89144BEE028D2352745CB0C081A7E806482F74E7EDDB5F1601A58D9
-EC5B92F7DAD1B462B0EB9DF227D20E2FD7963B11044F6699AEA42D8B6FCE78DF
-F13DF7917F8E9056EF57ABEE9A83EEBD2630452EF3A88FD64BF58135FFDFC5EC
-3C57C10AC6684044FBE557F1435152410707AA671D2B04E6D4C6BF928F876423
-072DCCBED74DB014BF98D66AFF1F2A0C4A725264A36724DE08EE18EB4FCD8451
-2815A6B0CA80C03444039CCA3F6713F0BCD3595E3D6E7F1EAF936C99E445677D
-B96724B2FDB0D2050094229CD7A239C0C72D19914AF99B2985BCFC38A6DCD1D5
-B79A09FC85A955742D9B5C023AD0D53AB5C3EF9853CD74A590441471DE86E170
-E854AA8E23F0F45734B10A87B00F671686D9ADAA574AE633DB6016479D81C5E8
-AE030B680944F4A4D0354BE27192D5B186AC4741E30F887C1FB12D744F3CAB55
-AA891F739CC87B8C9422335D6431CA3598CFAD661AD1C89A5126D0A29707BC2D
-DEF9DA9B5D0AC8BE4425B2BE0C0ED4EA2EFDA1D1C2D4176BF980DC11A7114BB0
-E3F4DA2275D60ADE37E9DF1FF70177368D6DC78065A734EA20E06C8878AABF67
-51BD3758E592B1E389D8266FA4F6BCA64FBCB2487194FEF05914180E879DFEE3
-5EA35A67FCDAFF1887A0F78A9880F2B3304446195CFBDE1399CDC39831D9AEFA
-3C432923BBCA48940019A61AB0464494D29FAC5E6183F9A849D9BAC4296162E5
-A44E1717330C117A402403BEEB31C9BA07C3331BD8FB4BC71AC31EFF81087E72
-A9D75816DF6FD9AAB57C23A46F6DF8415F281F5C39348E8EC540F2AB4BE0CEF8
-87DA88360D12F38130769D0758175FFB61ED8F20C7A17963C4F3F5287D360A72
-4175C45B318A0360CC569F0D47644507FDB4A3699A40662BAD1C65306D652C44
-5C774850560A42157D5507FAC1C7AF431888A5D9BE185AF7772FE57B1F14CA9C
-E13826E6E0531510FA1C8139A365B1641F6EF77F32C5B44AC42BD47DAC9C2FFD
-B99B10700968A44C063B45B96C380C9865667CEAFD8FEC20499966E1960361AA
-0F1D7B9038B27A0BEAD2E4847ECB6787C2F4811EFB5CF7DB92D995E3039C141E
-F17C1BFABE1CF58757675C45FEFF4F7E4B63F10B64AD4586C5AE9219D465BFC5
-DEC3F90DE72189503777D1E382F0F0732DD815B0313B0D0AD6E03A73D0981493
-07F1E96604BE2B3F2B227C038863667E9C58218AEBDD794F2D2DE1AB7CCB8854
-9BB56990DEEF6F7E32D5931102BF059120759EEA11522ECFD8AA20D9E136CB84
-CF6654CF3839C66326D4C926D15254DBB11F9D59A59494B1B794D79E167E9116
-CE9F16C91F297DA655422B05853A72F5E2932725A365B385DF32984364CBAADE
-0A65E573EE13339A505F7B1EA8379B15B0AA01CDDCE32226D33D8D957ECFFA95
-A70BFF143B5ECC595AE58174728DAADEC99801EE8ECC7EB0AF18A056E5B279AD
-B7337916675D3A20A1A45E46FA55F29EE05D38EEC228EC6834F38AC0C5BDBF53
-883BDDE80182B4E8B4606548CECE724AC6BB986761C7618095D4C6B83E72381A
-3E8997C31B659E585708AE8653E011EB837948B7B09E980832BF09A03D244DCB
-A5C89C3B6369C83788E1351F198BEA1F98C36B17A40CF2A6809C8CC43C18DEE5
-CD29DDB52BA4530CFCE4711059B88DC0D16C0F9D6DEEB058A108CE5E861A66B3
-BC088345B3B0816FA6CDB44BD4696E4D80C73EA34DD795A79C700E36AF4E8256
-76D001C35751B85A17E7BE6985D2FF8D697947CAE32D033EBD5F53D059AAD1B0
-D36391A8C6B85E4D2F08D151711CA356BD738888AD8FA88DF2DE7F8031EBDFAF
-CC40496AF010278B4AD4921FCE02A732A26700EDBA79ACAC0DD69E4BC0E553F0
-0357F59B6DE1B76C9E5FA97A51F69BCA3182F2CE60D0A6C3EE3C917237CFAC83
-1787DCFDEDF7851B02EDC8F14D5B40DC05136BA95C9B9EB2BC5091F332C77386
-1D7EC7AFA6BCCB87E8AFC067F45589667E52AB0D469832D209E445CBE57400FD
-1CA88231B2772B22AF30B5958F8703C3A238B4CFF00171D30C939D9500637966
-19F43DFEC9BD39D516365DB22DC53DD20AFD9511F7B1DC92E0E2191558C97633
-C71730A9E91B3E5639CFCDB7FC7C0B07F81AB1B6FB42C9C27C41B6B5B36287F6
-A80CB722E8795D88AA29DE0BC1275CCC2ABC39E0AE1C15BF0E24C94D231C38DE
-B3D706BF3124B31FD10B6D7A39976D01F21447D41E39048655A44FBADE0B5DB7
-708EB8A877B3F9200F0C43CA35D9A51D258CFD34BC1AF9760B1F1824D65C0DF1
-37781D7A4EFDBB1D6BC8C7303054FEFE34AE8545AEF43FAD7EAC8077B8F23583
-7F793569199A57BD8D1891102768BFA56EF238E990F437060C8772324AD54A91
-7BB72EC46725D3684DD41C25A779C6D6FCCF404399A3FD5658CCDCE608EA9AA0
-BAEE911972BC77AD27C54A9805AD0C041F532FE4F387CC8A4BD24FCECF05B843
-87824C8F540396D1AA94ACB3337DF1E135263EB28C18018F019D6A406A506C72
-59B80CDBF79C51B22A5A70F3E1019AF79ACD67DAC7E343A9773092F4539C5066
-2C82E3442CD513CD8B922204F1FE98D95E48C9A165EA3FE44957A8BED940258C
-977EC33FA627584D4AA5016F9F53D5E6C71FEACE09C91CA0FC92EE825D8DAFB6
-EE671B072833CC1D8FCA04874A6F6081D6413874F0008E7DBC9DD88AD374F6FD
-F4083B759031C5D76A11D30A4B99C33E9A5A75317C1EE0E154780A9D3F235284
-467919B60F44685B760EE3062164A04C304B7CED681C7FE0764C4A19CC14828F
-B65BAA2176F3B3232C62F2DD26C145DF814D37056830B08B0FA9BE0245BFA82A
-994A7341CD152783100917C4DE1EC36AA31FCD73F3914BED2A0393599E9A6572
-202925C9C7E55000672235AE2F557416E1032AB1C287BF53989EA541018192F3
-74060BCC8F46E073F7CC001F03547D229B1C53185147FA4DDC2B99A5DAAA041C
-6E8CD64B9BB3AC5DEA2641858D02A79FEEA73F537FF5571A20D8FCC7F18FB20B
-35AD024FEAAF8C2AF17A8A04DCE887681AE02D6184A8A20275E3731026C34E59
-2E17E820BE88FCBECF72CF061B5110C16D36DDB19DFE009F22642AF7D0A42C29
-FA410E4D4F58A3F7ACAB152480BA58CA3415C3C8BF76F9A976FA5DE2111A2344
-D581D2F73DEA5EACA5DD1C4E9BD0D77DAC82C6B407B1726E018D26081D87B94D
-B6B536CE84BDE6B73189411CBBEB50C43E64E3FC2D24D7979A408F568D900EC5
-438FE7EF78116A98E2F6D117A6D9B12D27A96FE28E9B25DB946A3852E21200E1
-2C258483657D525746A678DC4D3726E890485A742BAF318BDF08CAC98BD1C9A3
-FF818252D2F1141185DBF6D84D7C393C50BF90C1D76A8052CEC8FECC7E196C61
-30F23DF9BDC028919D694759967789FA88907AC476B02C9B5E925A5143B1AEDD
-134DEFDB26DA3B3F646FE596690296681FC17F0D22F5A0B1375DDD5ED741219F
-A6A2B2F6D20ED4C031861357C2CA7D86DF95E82B1579D26936BD9A13C59FB004
-33088EDE3435BE982D6AE595BA825F64A82F0D6E84379A67556584DD0F415047
-33B6462EF72860D1A9FBDAB44CE06981D17E0C0712D86FF158C9A7CAED4C4331
-5E4118D8AA718FA6A8D371EC1E8421AB116E893E905F5E352F7AC4057D4C546F
-068E508D21B6561AF9F5651995A9FA9DE2F8F6276722949488E53BD5169F1868
-
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 18 /grave put
-dup 19 /acute put
-dup 24 /cedilla put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 85 /U put
-dup 86 /V put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-dup 122 /z put
-dup 127 /dieresis put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E10A31C7011C0FFA
-99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904
-A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB
-11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5
-50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB613CCEAE69
-BDDBDABC60BF16B61C044A68AA41968B22CEC6F3EA7B0C02C44ED2BF3957ABF8
-B03474ED11BDB07B69BB517CC6A6953FC1732CEB1D4BF5B6C27F30889B4DA0BE
-B48781C7C224795CB655BE03CC246E4366C918F4A1B8FCB49E85E299B923E95D
-5711E49455770726136CC449420520807FEA21FAA658A4076ECAF1B065107CDC
-ED0BE922F22A283E1AA2A900CE4D5F55259C475F1868A7889D46DE0D8E0F17E9
-14175EBB20E16D9E5B3E1CF776F28CE5BD16940334685862F9A6EE0B828CBEB6
-EED4F34ABCB56E7B1D6F65C94D74F286416836E5B4C1CBE19ADFBEEEC3FE7CB7
-21CDB89A4FA18C33B7E215591250EE5F5FB888624010C7832CB7AA7E088C7B61
-8AB01AE7963B2C511344B963A60C59542AF7D88096DEE782C9EA80C670966208
-020786A1C0D0C845E08ACEA8F075F85394D3D923F49FCF38639C1FB1CA0BADA8
-FDDFB7121B0E367353D6F95BC523C08C8DAFDBDD2B0FC9230A6B7DCE6CFD27D5
-DEDBD0380CB1F8B0C0852336BD5698367C6F8A32088299443570141E0E09C31C
-BFB95FF1D599611E27A00328566920B4C2006BDA2CE24FFBDA8613B2C5AA62B5
-BCED045B3BB89C5468213D249D7B287EAC7A04C5A0F14FB9CC9ECD8A62083EFD
-D9BE224860BC3044FA07E1E2FAD367C545DC5B73E1BA876520313A3A5D193EE9
-1B5B27FEFCB04D406B3212105841A1339ABAB9B0B0767608DEB2ED7048256DC5
-B98878CA93CAD7990F658A2DBA54048E4509D27BFD48032D93AB3765955F6D55
-4639275D229FEADA618AEC2239BB1DCE56D1A456EA658FF3D7B322F8266ADD38
-41B08B80904F650229709FE189C98071097143B9E532C3DA6BE556856CDE900B
-7583AF6C10CA85699B2447C2EF6591D0FA0074D810AA328170305E1F3562F2A3
-4538F0D0C56245C11ED240E316DFEF64FA1AF9C0E64BC86782F59DEECA197B4B
-EE38625921D4693B38B343466F10E4C9E0FB3DBB8CC417FA7696AF9603F732DD
-7E719B6A6BBE64F4FD78C4873890D867236D82E35ABF102129C9C9DCBF9715C6
-0E969DEAFBF9BB650B321CEBE6253183C2EFEF6B6BC28EBB6F28AFC57B22F83F
-AA928A5CA96DE41EB9B33C6297BC0BE1F63472AF7CC02721C31C314C704EEED7
-9ABEA57556FFD2B367D262950D0BC885F1FCC203C5833022484B72F5C59FEA3E
-8D2738B923349F0E44828DFBF4B9068C9DA80B141EA7C9506595B0A27A2DEF90
-EE785F8AC6F0629824F2F2585D22E6928304DB7A5CC8B3F5126D3EF00FED1C0F
-1AEE437ABA4200200849E5FB8A1B370B0092F0124E30A1086EFE05D0E03D3905
-A058FF054D2F6454D784BE414301CDCBF4FBE6E340A7AE8ADF3063E978C31686
-242E19A023BF5B0F5744E09CC2E855007C264E6CB13C9924E523301D7FD51D3D
-7CBEE8C1C4095007221DFA728507A079B62986817369E9A91D0221160A3F452A
-9B827DB0B0D5CA1C626CC7844BFD97C90F80C84AAD4D34A0AE7C75DC019A0E4A
-33ECC7E9F6B1F1678B1F0F3AC52DC46B8AFCD6C5FA88045F932CACDA8FF33598
-EC8066C6E997CDBB4613917C0B4043F8A481C62E18822B5C77A2911A8FBAB2BB
-3FD35514119214174C4DDB4CC6CE20BBE8B077A797F123B28EC55FAF52F65FFD
-B147280D82F362F1AC431DE0AF87E8A0C307D7B5E978340B606689EE5C3C8911
-CE65B607F02778A4BD54984EB3924420B0FC9D624B7B7166B455AABB0AB8A7C4
-EEB2F66A95DD2E72B249D83C84C3075FF365B26DDFB7AEACCF2A048BD8C80C41
-88E415BE80BD89F313F72C3BA490A720158607A71BF92A3885116A8A303B2121
-293946B1EC5A085F034E66B1BEAD4B859B733282192393C6E3D4CBD194153520
-FD429BFEF266BFDCEDF8762BED7B9F1E6A11F41FDE053DE22AC9F664DF870C30
-2E0089EDBFABF28CAB55B4F7B92C22F0DF152397107C2AAC18C9F4827AF0D2F1
-A1B1F8626AA8E6C52C612914E092E8C3002D25771522A1B37152CDDA553C1F2A
-44EF83429495A940A14DDA3E42B5CBC5AC55E652A7CD43195DE8803413A6E11C
-16342B090004266C7126B9576F68E071EB211BE824A154889F4FE2DED93896D6
-1C818FC3F9ACBC28D3D2CD47D94F685AFFBE83C045799F4A99C242A449A33CB1
-1BFFEE26334ADD624111FBBD9A4DA9049555FC1D05D3759F1C83E7BAB71467A1
-057064C94135C618CA08D98EB11A42EF8E4EEEE6BF436663D6C2173667B3BAFA
-77318803FA93C51971978661B06AE62F5A9C30C35F2E6D05334F0AFD94B9C84C
-9176E7DA1FAE09CD214EFB1DB44649474E3EC965F29ED5709CB721A1A17290B6
-B2FE92E7DA02FECA17A70382FB1970FF678BC4EB254638D9D60314C524AE5A74
-22AE09222246FC45237EFEC7D8E151CEFC63F734A626D896A47828940E76621B
-C4D734BBE10C116774A7C2E748AC2A893B34782F3CD9EB0C34079B72A170DE68
-8C56D67458FF6932BC6796BF521668136EDC5A4623B55F833E963D9AF91C697C
-85AC71E7DAECA138E9471C8535A8409122C466B7CF6F5BED3B154D055B79AB5A
-E8D5A6D4B11BF71B011265E411C2FA0162AEA0BDF7FF68FB60DFFD0E0A194E19
-B89E8CACEC175F92DEB8F634EBCC667CFB7FE47FFACF66990EFEFFBCCFABCD6F
-B675D4F8D6F870A595CB4F95EEDEF12BE1220BB16D798EE58A06F7AFAC00300C
-29CBDDED9CCC72972E4ECC095D5F2E0EC1890065F34A848491B128EB73F86204
-D5078938337EA05B8008CA3E57139408FB0B39C057C1939B78108F4C75322107
-79BD61078C393A7DB042F0DF344D6B0A8C914BF8829A156D1CDDE51EC65F6B7F
-A54828C7A71029343EC88D8CE8AF98DFB1B640CB1A2AB22C7721F72508D2179E
-667C8A5CC87E57E07BCF5BEADF7A8B836B536A83BA41D3D4AB541312D45613EF
-A083BE7926DD8BD006EC08FEC6D53DF6A281C79B82E3C5336B165511BD6AC6CF
-0621414F9F61863B5D147934BA875488FED09F1FD9867E35EEF0DC61776B0491
-B7838300390E43B8C7144EE6999D1EC1EC9188A9AAA33E5B67A1DE83552980A2
-359137C6A689F5C0601FAA09EF47C9BCC57DC2A72C2838762C1FD23D43434354
-6973357CD871FDC39C4D77C267DEA96BF9A9AE78A70CB709C4B928D77DB05C03
-FC8B0F504D948003DC9146762C510D21C144680F0A0A5203996CAF2936753AE4
-079E0CFDA5E03E6A482F11D663FC27D5E8B6A73B8EAABC3069C9B5D0B1E01909
-119B2560B70ADB2546F622D5596AF276B6003BDF456A3B4883648A1114191BC8
-585D0C2A712CC95CF5191413A5D3C4A4ABCD40F33ADC187997898C93AD946103
-862A8E8F7509BDF130BCD9696619181C19995A570EF3AC61827123212F96552F
-285D492510CE4C260F73B741EB8A881B139CF97922D2BEAA6EDB151343CB6DCE
-74FD202ED919C816AA6AECA20D31BA94A49FBF66AA299FE67806C51C7D4DC88E
-A0DF9311445C92AEEED1A21C264901D5F53A3259691E300A5E434F3B8F60763D
-CB45B35EAA8E3AD00C82E0AE79F6E59ED544D31EA5112EE1B256111832E3D780
-B222DCC2EAECC748CFD53413E7B7BF60EDD4558D17338F5DA099B2179B5E4859
-404C296C3FA92BD458D4A18894F15FBF42B1986E2A7BCF8C1D7C25C6F17DF170
-6DF76813852BA3CC16A0F9C54A836C75F392DAE45AFA57640BAABD459903ECB5
-1457F1E1AB898BF51FF34A578B13BF2C2192B3DA8C74197D10ECB0792E7FC57C
-688D13CD1D2B8FC04CC896E0F9CAB7C73F0B178B2B9B6069AE5D61581D6E4630
-342941000C556FA766664C9E4DF8ACD970A4E13498BD359F1F62CD7B59D6CF7D
-C5AB39CF1FEF04990E1B34C2B13C3073865999AAEC9931ECC6FD7E4505C2D0EE
-672A193FAB459F8051367C67C2F121CBE051CA9E9ECB45A31C41B5CBF7C83685
-B85C76EE1067EA62E6D77816601C4A936A4D5E1B3D966AE2307CB739F234DB7B
-AF00AF3B357EDBD5EC79D97688310803B58FDB85D85C669C4ACC6705BF1B8F52
-76B0D709DAA03610AD25727639EDB403278178D96C663569EF75642E0D89DAC8
-F3475DAF48C05E8475A010522D1DCAF78BD5E366CFD461524C5AEB0C6F8CF0B8
-BC08592C46ED2F6264988662330C62AF843EC740AFFDAB40567D85DD31B2D107
-C726AE7B36821421DE1559DFBBA7D8C11D537E944121EB2ABC28910FC4307084
-2321866C9EFBCA1A7EF9D77346E620B74FAFB3449AD4A31ADD0E6D7192FFF6A8
-44DC537CAB0EB595708290D7C91E3805EC664E3D0AA3152906A9EC957F2A57CB
-6EDDF1185D8EDA5D631A32EF2A7F2ADCE4F8FB15C3F8170EAD24B97803DFF358
-165D5C03528B1B92B9687DD0FF8E299A306D693C0220EC63C5AD9F515D0CFC78
-03DF3D714B670CE2C09020286E6C7F09A582FBDEA7F153CF37A748133F61283B
-537FE1BE8ADE8B468D8B68CBED4D2552F2C7A19B0E069A79F9FA5627FB57D024
-752893CFA39FF3ECAEC0F622908E683BBB50C76BC2815A46B5023C25120589BA
-00CE9F1E81EE2F0A448C235AA68A962789AF11E87F85FC6FE285079329D254AD
-DCDC4563BF6F82C76A27A512BACE3DFEC586ECD83D464ECF5499B1027BB3E71E
-60C31C77766B05B00B1833ADD7F9A83EE544A1EF42E4EBF7F5A7B82D0E318A8A
-03EB2D4DB9F9905D4B9A52BA9C5D1D2821821C57C8500866343A819380253D1B
-EE92F96EB2CCA3782DE6B16825ADF42B716154BCCE1106C1201C00360DBA1F8D
-01FCB2B57137491C17A17A7B1D3D1AB4F70BD5CC4572FE37E2E2CB4EA578CC8F
-69892616306B8598456B8F345FD49F58223C8D1B00752F6CE0D278277B3DABBA
-97977264D53A95A034E3BF891ACC165E0898D569E9DD9EB9A21F5ACE628FE6CB
-115DC17AE728337C4A184151A954B7C5F6D0A872CE9929A13040CD1D8DD92560
-B8D58CC3EB8E025AC7A9400FB7D8A827F7BE4C56EA930029ADF44078BC5EA389
-5782B7A3B04256B66CA866B65A2BD0A4300481ED9EF898A4881189C55FBB2B0D
-C371EAB5DC9294E2BE1F68DC70CEE16B7B4427AFEDEAA8C420B63AC524E5AAAB
-1C0504A2E9C5E601831FD84DA7C7A78FAE4660D1AADC38578A2929E6C00F611B
-FA966D3490191EB437C2042B2EF87A493D1D184AD79550D817830C0C680B75A4
-5946ED1B46E5D26946AEE0057BDB4BE9B23884B839890E8ACD3F55608B7B68E2
-27B57A662DE621F1CF6AD89EF74D8FE1FBF42A95D2EF01ED6DEC83E659A36106
-8320126AE91C2A2051FCA141BDD3FFF477E674916E058BBC0428879C81ED9914
-E83B9C47920BABC636ECDD8C59A1ADAD12C384EFE8860DC8DE04DD8F7ADE8942
-CA3CF4CCB9EC7A0372A5FA7364026286086B463383C07AEC413D6A0415E6FCD2
-7A96973CA85B116134B41C8F120B557E43F38D21432885394F0C83602276BDCD
-7A2AF8A16D0CA4FAC497CE0FE1D19CA1D40F314CC872FCDDE3F330D5C6342C8D
-4CB634ED156D7D5B0468DC981706E775E5D5D23F1F0EB7B1CAC12833B8CF7D15
-A8CC34E07DE0CBFB425A50E22B79BA064C25A31596B95132D0B597561B2986FF
-2DDAC35CA3FB7F46659D721EA243793EC3BFF6BE5074DFCBC0B68FBCCB456D73
-47FECB042B1A1D7E1C290CBE8EC065E43B0C2805E225CA2F9967FEE8AB286D34
-02ECBD45D4A1EF6760EAB45362D09D245BB24249FAF120B797AD8A0173C6238C
-BE9824BFCEEE1DB6F05C8930819DE5F4CE87A8AF60DA79F5E53F18F51EA056C7
-D27B63845393F348A36B76859AA36C506EC5FC1419AB11CC41CD53D11360B23B
-8D520B860742104EB334F0D4BD01C94E654ACD4E7D88479D225530353FB67F64
-9865A97A10BEF98CB97CA3A3C9353F23F939FF98032E1AA6277536193A94739E
-35419AEC8D6CB44E85999A042E19EB1E6E4048323224760F610C8BF0E376F341
-2AC4CE2A52ED4551695F949FCB3C618E90FEF1392141B57A7B19CCFB57208A61
-C0F6940C9757BAA58102DBABC4780BCFCFCE8EA3CD9722FBF6BA55A4A6993A30
-325B2B9A0AD91CF8DF367CB979FFD4631634371853E3A5921069D464ED85E350
-6FBD46403428E74FAD68A324FAF8D13E896F336901795D71E5D2DB89E889C1BE
-C522FEB36C61D7E0E4B1B0EC693A0CFE4107647615051CCBB7DC16E97AD1BA35
-CE9A096DFF39786C33DA44E00552A2804A59841C5C22B18AC531BB9C0115F96A
-6956067574A462E428A5B43947EACB821D5215D5BFFFEA5279ACB6C5A31AE4E5
-0C02FB488E26606B36F1EEE1438372B7316154F65894F5C5E822C5631EB39AF5
-4651F131149F16F47567F97BD833D5BF3A8286814A8D73CDDEFA00A0EE22B5CF
-83499201F787F87DC5173DB57C12CAFDDFA8FE2953A4C336F13B2CEDB2315BD0
-0D4D63BF1818958DE6CE23B8ADDC55BAB29E1FD39DE94E047807FF791E40C68C
-573EDF6D22A0C6975AABC854543627201D22D817121BBDCD9F5BB0288F04940D
-C663CE143603B41392303A955A90CDA082899ECB1BA3591EF47E6AD1B5DCCB3E
-E6E68CD54310D21A0E809E957E6957D0004DCC386BC45526051094D82A2ECC32
-BE893DD5D32981AC1C3E5078EBF8CF2A0828B5B1719CF3120A6C767FAFFE68A3
-B57B6B5E1DF30B714EF791BB3C9B3D5D4BA21D33B3A81EB77757A3BCF842E15F
-1648EEC4655E10DBD61F2FAC6E96B96271B33B5E58E7CD380564822CD380BB52
-2E63097B912F140205926D11424378B8F134A85731B897747B128B7770B65A98
-1D8A8F2582E83F2E7BC0140074E1BDF96D5D8B16872ACA21BBCE43C52C68A331
-D491CA8AF687AA57BE80FF6F040335299E86BF7CFB26715E822384C7D2014281
-960A0C79CC7E77E4D6CFF0F5B2475E529BBE3464729B6A33DDFE36D26FABD8AD
-BF09C5599E1E33170C6AF8367342360E73681AAF946D42A3B661B0BABC9A3874
-BBDCBF3AA7C134D0ED3CADCCDCA0260E0213C3CD82173B8F544073B535E2C2D3
-D837416D51BE7FACE789B72BB3520FA7C8C80F52BF42C1862B309775540F6957
-1FDD0D5D6E4CCA987FF11577F6EDF7B3F044D3995BCE794CCCC129CF0BE7195F
-0F831289C1BB3C5C796F190138F0079F50C894021C27FA48D1FF4D1472DEE1BA
-EFAE61AEFDFE4F8C28528A32EB41B392E09BE386988BB4E92A83B1D833AA9A52
-2D2768D56EA0066017954EB9FCB2766BC8EA0F5A1BBDE25D548DF19CBA4A3A36
-28592831BDBFF6A7BC98AB965375A1316672FBD75D5D524B5283DBAD1084BC8D
-795EA03214D8F931BF336CB1520E3009C231734688AEEC98BBDF173C8FFA7DC5
-5F23ECE810811B1385BE7E7AF5B2974E7D80A1C86FC88BD6CC6A815B773EDBE2
-48BA5C3D8918C8F5E53F65605A574CDF99C7B29E72AA548C07EE3B1748D74F39
-0E201ABE1B36F9B7F11CA7B2869B7428C05BAB0E61D8CCCC3BBB497A5AAA2A72
-817CE375C1E68799649C6D6BF1E0CEE7974CB24DB8BFA82B786C87090347DF43
-A10532DFB6115038479591C3891293C22B33275976D269F5FC003984E815600A
-52940610447150D5BBDBBEFE6EFFB653C8A1DFE1115FBFD129FFE94825F247A1
-9F4307B13CEBE73596960D611B9E6D50B6ADE781FA381C48A73B47E2528B7D78
-2336BDA5F55CFBD3DEAECCEC9282C72D4BD3FEC0B6BEB5FADEE8D3126F7E8017
-38324C6C61677676006D66782B3D0E707126C40F8EED0180F527608176E29EED
-28E61C15BAE9D007C88B309530C5CE5753A568E0C94C1A4869D5457C9D043C2B
-157ED1C5EC2739A93755DD6FB02B92A5473FAD0F0B0C3341CAEDAE18E54EC140
-7A5B7A00721E495AB860EBA8DC36F25DEAC79B8DB57A7831B0542022315F34B4
-AD4A237617A221B09D92F934CE82405FB48564BAD05C3009AFA4D011161474D6
-2265A735E34607D45E6ED94D94FB1C901D6B4D6F4977B9BDAF1CECE6C8B65193
-C4743502A005ABF094249DEEDBD34B49810D69AD90CA0D950760E6D6AD8124BA
-A4DB0FA3394C7A6F9435B324C119D9AB4FF2A41E9C619F31DFF1FC22387D42E4
-3FA8DA47519DC003870486A139AC7CE1DA52B927679BD382975CEC601F1B01E6
-5ACFF335B326D80C6E6586C7677C4B148CDB3609248B3437CA43106C863C98F5
-0713644D81BAF67F2F1F3B3D67BE586B693F93609BE34A9CE769FD2FAC80A0FC
-68C5B10E148D1616939CE8D1AFDE025F8238C81963A5203128755DC399CFBC49
-AD4A8F08BBD20578151349A9FFE1D422DD1FACDD93466F228BEFAEA33E973A1F
-511028CAE3137DC36E99FED6C3719F5B0A8960AB6911000B18B0888226B76C02
-B77027A97C15D7553C3B71BDB62B5A78178C2F02276873B49438B3E854BAAA5E
-EF0A1B9D12B7E206E369F9E33EBB6A9F863101E72CC2832DF567A87F7452D5A0
-61F2177BD31C6D731AF564D1C0F058BF75E0B6C0AC24202B56AE2F100FB9D469
-4391D5B16874F1A5E4F0EE8FDA0E36B339D2D42D270F63EED284617670E01324
-D38D4EF3E92180A4F8DC2604B9189504D0FCC1F8394425810DD1BC4D233E89C8
-8284BCF502AFFF66A54E738F3BEFA7B4F51AF9C35575B1DC1EE6D922F0A09E82
-EE454ADBBD1DC0992470B0764332E312E2A3764217B502A9497274C5E2F13316
-46ACECBF93952AF579854CE0AAEDFE42584E216A93181861B66BC49D81FDD7D8
-3FA8FB05503F861A69254A5E21EB6CFF8855E7D08AF2B2D161A2328244F285D0
-E7876EC603CE837EDE0971AAA9BCAFB86329955E5F1F78A00E521CBEB22363A4
-142BDF69D408358C7C4D4E2E1ACF9CA11B72481B97F9231644988EFE3CA45659
-2655999007B7F4DA9EDDB47352519333815A28A5A53BEB5379D699CE73A0F6ED
-31156A41750753C3EB3EA6CB382BDC17702086C6C750286610CC7B0ED2009AF8
-BFA6460E643F88AF1A71744E2F42F92A6D5D0BD7FB2EEDE8EC854FCAB94242C1
-65634B2D10117CAAC9DB5CDEE681EFFE140810F7C9182162479C257972AA398A
-9B8B40286F9ECE6863CFAA33EEE37A20EBFB28403448D0019B99CE76655AE359
-E97D1B26861C4F8E0E17D5836D4AACF4F05AEC01EB12F45EA2964C6614FBD903
-FE930D67C83FA691F8F8241725F61356093B99C1E3F61BD69D63B13F748603F3
-BA9ACAE25A5820FC771547F1FC8EDAC3CBDA4D27C2E76F6A567B297081C51274
-29CDF072F62DE0B06096C7891F8A13542F44561DBF4E6179BFF1414A4919679E
-35E819B8655DC254C734B0471F61702D79E7D8D79861331A12CBDC0D1DF4472B
-0972AF27F184126C5CC24B5991549CCD9569C5E6A2536031E1BAD8D74DFB26F9
-F1B239267E44799A41C516D9949B03C76D2E4FF02B4018035C5DE91E7376452E
-D0A29D4E590CD69E3795AABF23DFB3B4A1C392F181CE6AE333C7DDF355307A12
-9FF9A1E357E5A8F0FBFB70406B2113BD7D404E6D7BABE8AB8D027A217E907C0B
-9D322F2B50F27AAA7E6DE95A14F16E61762ABADD2B2DB1BCE1A45AEBB423A63B
-2B64F2FA0B96FE37835F73A03358C755D55A86FA70E67E9CEB034F770E89FD48
-C41CE3D76FEB3EE18935DDF3A9251901FE9DA8F937F891EE181648F5A09E6AC2
-9317F5572856F1C8F1D90D6DC4E9CAB3869B6C30CCC58FE4F385FA5D01E5A1FF
-DA826AB7DF0D3EFEA10DB987D44DBC2E21E1F2FE3521CC3C1AC942FA5359B66D
-866CE1B7FE969A6F6C4F6E231DD9878D4EF3A166AE196F3A624E3E840DF4C948
-BFB315FC68F1F395278E6C3422930BC8D7AA293071B9F5ACCF3477FD797B2113
-A6605074CEC01253A75BF1E582D72E1766F72CE250AA62EFE25AB512C662ED23
-EB6FB19FDFC936D65668D143E7B63947FC50DCFFE5E3D825D15C0142FD17A550
-E6CE5DE77C765DC44866C8C85D0979F754B79C7C1BA57A45B2138B5A0D8722B3
-FCE9EC0915226AC5FA06C8DEAFCF132112010716D00BAA9EC84FAB149A86457F
-DAD83AD440A6D8802C2EC016E04E12BF6EE9B27AE6DCA0E047BD0767696D652A
-99F49C6E9472846023B7464E28B040FBC493BFFB443773A4DFF73A6464CCC43E
-3F3974DDE181F162A1E0F7C28D1EDB267E52F007212A82FD71432249749CEEC7
-F7027492F0C4AABCB20E217F76EB7F3F16B92875438271C88149B62961A97467
-9019EEA80E7B91AA608A9699BBED43FE5A937AFE62613BB7FFD4D55B123AEDBF
-A8C4FF6F88BB1DD3E42C16116CD63B6D4B47C6669233686B24DE774DE4E5567D
-AE75B64D89EF449AAAF1DC34CC9B5F6A1B380F2B65F8E4481956C911B241C439
-3CFF801B0BECC2F742E3F8DBFA7657B6BCA33A739913620843C97F94510AE3EE
-69DCADEE2775FECDA97B4AA73003413EB63971C06A435F6022D8DB74370D8AAB
-AAAA704DE82D50093BF6633F2649898ED33AF613B3BF7574C8BB76621A902E21
-7BF8AC2158FEFC7BC768F60084F4C3BBA86ACEAE575029EA1935F85B2E4E2B33
-3A176338F92F5CD578B1B90F2045B2104F62E845349B82784075F00A82085666
-014F7E804AB0718397CCCFA9328348FE44020223C6B9E4E1B8E688837A7DFA5F
-97ADA785FF999836256593D27B46075E90C58222CF1C22E4478004E1924F66F1
-EAF37DF7C9EEA1248EA56DC46DD0D126939A26F6B772340D6DA5F167BD75F994
-CA180309B1FCEDE0476F73C130A78A568E37B714B3B6A76BEB0C2E750F2B51D5
-295291010DC84842BDB34B1F969382FC41980ED8CFDD2ADD0202C7305C9EA4D0
-0E35D71C82B359B23A2F05
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX8
-%!PS-AdobeFont-1.1: CMBX8 1.0
-%%CreationDate: 1991 Aug 20 16:36:07
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 18 /grave put
-dup 19 /acute put
-dup 45 /hyphen put
-dup 46 /period put
-dup 65 /A put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 73 /I put
-dup 76 /L put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-readonly def
-/FontBBox{-59 -250 1235 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
-7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
-EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
-7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
-AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
-E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
-4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
-5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
-611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
-D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
-EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
-35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
-ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
-7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
-C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E427782B91F1098562
-3E22288F48ADE6EFA58CAEBE7C070A920C3A85F4327940DBD99179C26E3ABF17
-64E9CC6A45F17F19F3EC1C53B17485B813CB01915D55CA2034552666D5E44A96
-A0FAE064F599AEF095CA1816F7066EF0AFB220FE1DF11FAFD503505C5E6793A2
-6475E95FB467E2F3B5E7C6663A70B15698A1D158E23D3ABE3B6942B24832AC3C
-13F258038DDF209525C4124806A369ADB0423C2FD0F823AE3056F380B7128089
-689FD64442104C476657434FCEB87CF0F30CF5789B430398617359FFD974BFFA
-C9C55ACD601AC6CB8E97FA11DF303EA517BA2CFC359C6D59FF2B72CBB5ED34B9
-122E5487989CAB13A4F8B1CA24C5CB7D889EB8988CD8DD846275F32B2ECD3DE0
-C8B47765B1346D707BDC6F26F1465D16591D53D578D0D5F512A03AF4A269C1BF
-7F1E3A4BFDE928BB48E512AB8DA01383475C57E9DFCC800FCD9FD4960D8ED405
-5C52D648C91432144AAF7FFB4EA13AA3AD6C5FAC5EEBDA0A6C801AF3BF21C422
-1B53FD169F2029E4552DFEF4D27C08A8EDFDCCB4BCD1226A4CBDF6D50996DE87
-31E1D72A3BB7A51CBB36FC6EFDB1C50DBBB498DBE73AB31C9992D92A2A863068
-CEBDDE3A09A6367EC9FDAE330A18646B4745A247B1586BF2FDC18B5346053661
-142830C0AC11CEE134CA6BE6B115E4BFD14E2F323F421CFBD6DABBC49C10C62A
-5DC30DC5627FD5A938F4D92C0BC873AC16368841B1C0F060FE56E10C506F32B7
-C784DD1EB21A0C8A7A08C672B98FCB3C2491C16AFBE620BA1E860438C0E0C934
-630CB619FCECC748C516B2490F38A29FED7CB7C505EBD7134C800CD1A45983A7
-D4345E6D2E6498E11CA3AE5EBB3E579C9B78A771CEED32F8BA3946551C7A15AB
-B578BCAF25BC80D9A0169B6A547D08D677678EB3D287AA32683135802A365CB2
-E4A9CCF44EB215EB95140325F1ED1B4951503D94E933B2B4A6C015DC84D12D33
-0FC7F804048C1362A91CD1367234E78DE55E08F6284F5EA65AD6A7ECF7CDA406
-02E530FE9CA3FD79BDE8FA2BDE763BBAA80F9835A4C9B14CD83BA6FD1F9D7E41
-6C5EFF4AEB41E179FBC4910D123E188AC24C26FE3C2D0065362A87A85CAFA1BF
-15B1A3284F52CD24A5039FA47A73D5B194E13190C94B9FBD18ACD58615666B11
-A686542019874F1E962D034326FEDE4AAF12E30E6CC751E9662FB53CA195627F
-B5C5BA1ED33AA3B2A684CB5452F0143DC25FA2EE16F9C68F5FD204693634E0EC
-AAF0DCBC8799BE01436AE26C7A918C7BD57B2589DF0CB21D0857799D50173D86
-BE3F59E3EA5CDDCB394A25860968093C6FCDF1D9E38DBD1033741204581983EE
-84604B3E0B9C882BDF8C6AB648B1D7617D2181EFDFD8AB7EF075220132E2C411
-439C3D2076D357609E0457FAB333BC289FA0D62088918A9C4867C9CD0C8AB332
-D8FC119FFB5D3531F1A6514C26A77B874DA7B98BEB6AC6C6BDBCECEDBA06C64F
-0E435FA63F2995E724E64128C6783E90300471E3D2C73EB4BD9EFE28866783BB
-93EC0A04D79338D479472669D86AE46792645D807F3FE4AA131CF93B3A3694E2
-FEDE40F4D77EC29732DC4F180BA4ACB87B17423970F9762FFA065F92C6FC7F03
-1D344E46F85BB06AD98A0A9B5F22B801D20400A3D03557679D9983CACF51BA79
-23A12B9C7A67D67CAF0D66A5B92C3A29B3A108C0FD4505BA363D5D7E4AC391B0
-61CD6882B16229BB5F5DA3CC73797C26444581E5D86C54D074457B19AF1E128C
-CEA50A2C106880FFAE35EF7D569F605340B5A3C8F5B78EC715C16AD8959FF4DE
-414856AE8759D93F24D1E654E5573D3089AEEAA55543E1CC25EDEC8D9AA0A47D
-271898ECE2DAD982E6258E9F8B141FB24DAB69B81D4094448713E7C80E4CFAD5
-2D6916759C7C3A017EF5489E59F7EC5976624F323D3454A245ED85A524DF97F4
-54BDA55F8EFD5F4FA9E8E44B36AEB06683C833AAA8C389C01F16A858E08344E3
-F28EE5B7E3F4EF408A0ECBA488586625D5CB1E0D24A15F7681E36A9A3EB9B9F3
-DA6CCC03AAEDDFD1DE8791C4E02D761A512E8AAD6D1E242A08311F9DAD1D5F6E
-8A06222B37D6CCC39C933999CABF6B869D435B4AA756C1656CE6423656687802
-5B1DE7605BFB98CC7EC1EE979755D03D03B6C9474D5805AF57700CFFA0B9B11E
-2D2D8D3A1AA58B8CF1F46490DD73EEA13BDCEB20B5C77D1873603D6D58E33767
-DC96E98E630B2DBA7E950AD83A079712C83BE73CBD713B00EBDD425B239E2502
-9E740ED172EE1FF63233FE13E39BB7EC8E02CCBBBAF6A25DE4F3425FA6BB44B4
-C624457A474E11C05CDBC95F9850969D70FE4A84B7A096A405EB3E5EE73DD3BD
-503919AD5C3B172B51C3949FF98A0FA529F1626D3F2B43CCC04E25B16511AFA2
-E89B2E9B0ED36B5DC6DD312D5B484346900F13FCB9F3C2EAC4C431354198A9C2
-0D1D2C1B4AB8287924F7DF929AF1E48EAC6680502FBCA923EAB6CC8E23A72C19
-695F0BB856501390E2821240F33387EB1D6147D16FEC72FEE6576CA2D507E373
-986BE6DD8782A3F5257A73BEDA19539FD32F04418AE9F4AE280DB489C5D5BA6C
-5DAD0C27E45ED27A560661B46A0ECEBBB3BBAD32D4A2E0E24366FA4ACBB3C279
-1006F6DE15EBEC7456CEDD9ACDAD1987708D2C2EFB33A301AA3AC385CA9089D0
-7D4967C96DB76DDBF88DE16D584F39DEE45DF11FFABF92FA43E92094BA6FB14D
-45C80C976B3E6879AE21B193C3D3398C93895EFB1A943927448042BED0A8E0E4
-64E308D01C9A7B2CAF8867F330894A5ACC8D6A53A5CD1D662934A8568D1987E4
-45A973B0F6096FDFFDFEF6CA327C158C3B4F403184C401CEB9F21B98A037EEF6
-73F0426639A2247BC855A1BF95241A0F002B6DA615060DA8136AF02A07F85FA2
-A8C3418F306B5EEF8E10FCE51AFBF9AF2913D44A88567A6C7DD8E094F317DBFB
-8A2E014C2B5E0CB5632E598B5F5E05322C33C6FC4BB38DCB53D2F05C36B470B5
-21491F0FB127730D42662DDFC9ADF12AFACA3050FCBB5D4B2D632910ED76316D
-4DD15B50524AD795981EC4EA9FED7A8359A0656C8CC97CF8B6C93B31FAC0AD89
-4B2B6426C44BA13CCBC90D945DF35373DBB98239B0996E74A27E1D0A03DD6DE2
-13899C0EBB143F47C81AD18747E491E831DC5F400B2B15AA148B73E7A60E562B
-0862AE054ED5DB070E4511BEA08C4A45A0A4E45F254922C3AC8A60F749CF3199
-2B54F58C6D1219515ADF3BA353A8864F2379EE2DD75D1D6D4F23D4DFCBE916E0
-BC6BA439068866934B51C4B3D323F493A155D734D14629E717859F79651E7FFB
-AAB7DC7D5AB2C817A2D53B695B76DAAE59C130DE5BB0250B6FC71D428E51C638
-50A12028F5AE208554638D56354EED671044FD120AF994A382CAC7BEFCFB3787
-14C635679E0A83918F4734385B06C0D2430ABCFB9790FB6B0C35B1DEC75147FD
-93FE15B6768651E4A86BC7D4ECCF3929004CC1D83BB96FCB66239DB04EFF505C
-699270F60BD85C459DC560ABC6AEFA21A14EBA379ED68A0D0458B084692FD3BC
-82662FBA17BA478BD4CBD0581486B3879C29EA67987049811D3D7924BD567652
-08CF2D76D019BACAB684E75CC17D43752ACD5912B77B2598077912DD9FF9B7F7
-9D45CE8BA008826E3B3453FB33960AF037C524F9EEE1E5D162856D7C61E60FCF
-C47C65CF4144FA651D6C1018CBE382976D63357457B65A210C0A91DB08EDD237
-74E2A1074ACDA59FBBDE07EA3A7D35301D77C9B3B32523283EB031CF918F2D70
-A37B7830270965B7DF23026280175DA18783BEEFDF77E594DDD0577604B6AFAA
-04CE83C72F51D43F560A8A637C9109AE23A2A8E70547B90796194AAD05A71F55
-EC2AAA6E6F6195599A64D0B6881E6B6C7E388B998A6EFF16FB50CC4FD6BE9731
-CF4CAC7689A908305C5D10B452D99F241DCF8A9322D5A3D1675CCC5886A72669
-968784DF64DE454E24DBDCF35D8447142C74E39AEBF975415EC667EF4ADB470B
-7B064A2EB41BC9C748CC2C87B34119AF8D90B787A1746C5B0EA0A596087FD328
-921369872040912DCBE8D61CF5173B518AD912412EC6E1E1A62F98F94CC692C9
-F8E1FA3524839F59184D6222EAB2DDEFF9C5AEB52E18D8632F45879F720905CD
-7E228DE6808C4DD45E73C1962DB596000C951E0C7CEAD68907C4B6A71A304DB2
-EFF52E1E4C518C16239A1BCA98F5B2B31DDEB4645891C2BDA55FA36BEFD60A97
-49F18006E4745FFDE55AA8857BAF4447E6DA000E39680FC39D1EBA90D4B1B590
-84EB9E16F9520ABC79050E8D65BBC6D89D1435CAC07B3EC707390E5B4E6EC3AF
-6080323D4CD284A90839D3E64662DD475658BA23B5C830052E8BA64B289ED4F9
-0F1B7CF455230D4D287B1825EA428C5307B8A6E634870CD3F4039B0319DE21B9
-86CC6BB783423D6AABDF9116BF65F434E2E884DE5745FCDD9425A2D24B3F281B
-972543253492F3F23A814F9EA0D1E2FF5858900F0FF61423408417EB345DC41F
-4CA225A39F4C7A4B71E1BEFD86749274999343B0A062C11599F83F0CFC8CAF49
-C9139888C443C2D882C91856601086BDBAA9C35371DFCF1E964CFD71AC2A0B69
-C30FF89044D0755AB03CEC10AAD0435CA3F1F86B42FA70655179FA9BFA41E7FE
-1346EFB0034A18C228A8B0ADA76814F18E56671EE6528288B511D30A03F994C3
-26785306EBDB08A11C09662261692F98F385E61F9497F36F43C627B6A3FAEDDE
-3BAE58153A3B740E956FC41E29923D13888A50032597B9CAB299C1BF884A5001
-0B52622F7622A50EDFF74D97BEFD798E183725BB276A6E33E250709781F1887D
-53FC854F7F07F156D509EF432DFA317CEF0793012CB2F097E07C66BDEF5EAB7F
-CE0EFF17285F31298BB81C1CC50CB0EC984C1311B66CD24E0602F166F5014185
-4E38CAD17A62BEAD92CD2AA25DB0D4061F503E2E2ED4D0EEAAA6C97D2B253D96
-1AAB5F4D40EBD363EEE76A01378BD8636BABD43B9A8B18A1A514B27F0C88110E
-1DE3254D37261145430CD39A8F2685E611FF9C14E1427EFC121FF812EA60955C
-C77B58708FBF6BA301A7E909B1D166D002D8C4B8CB66C51CD52C07C9010D5359
-82A217CC8DA97CFD5FD99E12D205F61473401D3C43AFF0448437D316694747A9
-ACE4E9BEC72026B1E83C037FAC43460F62B1FD771A9C5F03AA347D888ABCE3FF
-4B7B7B69F5E49EF462CAEB299555156892014ABD2CA18C7189242D5219ABD178
-C5819CC1F509EC0CF0E1E3E249E871C1ADDD06E18644AB897D9DCFF9B9E971BE
-D2F8125247A2ED412AF5DB80CDBC588AE4E195DB17C4437B6FDC5CCE091F88AB
-C92128DFDA17D7326AE1446DC91BBBA989D94045A782D1530B81F551972B9A46
-EE407EB010DFCD3830F8DB622984C62F7F4C3FFE6DD106B634FB5318CF450F3B
-FBB998B70D84EBC210BA829F5EB76BED17F1BE3F2537BB2804A1F4813E381DFD
-C54F6F392B00A82B7EEE6AFE4976FD7235BA0B8D339FC41AFF776E611275D72D
-34AF70C85D54B33AFF4B6C141C1215358DC5670D4F9D7B5C636C766184E6863C
-E7A8DB1FC60C093CC5B20C1454748DBF05EE2FAA71F87632C61E80DD10FDED0E
-A7046335C29754D27BE6B5F39AD7554586382ABB3355E367E94646B2FC85DEEE
-14E5831172B5668B27671D5005B0EEDC0244628F6746F43DB0E9F4919957BDC1
-769C1A5970EDEB74EC7F49F63F8367F554BBDF04C8A18A3C9740476243CDE6D4
-A03FE56BDC1F148538D07C29EA1295CB4E4BEBC05A3765B8BDE8D46EBB0206DF
-B6FB82412BA37109FF0518745227AC234AAF169ACFF2776E820B425953498AD5
-DFDD5AF4DF661531598F1548FAB29F8E28C4AA67B987D33B084BE2937591EB1A
-427945B36DBF80CDA83D02D2C1C808CFD8D1D8476F78E42F295166C591EA545C
-7AF53D0AE4BCD3C39987A06B5556A9C63FB411C99D4AC57B79FF912BA5987575
-0504A87B3304B4E6FFEB865872807DFC8EADCEC909D8D6D839F923FEC10424DE
-50C16112505B363FE32D5EF407FE2B8BD8FC10799C3CEF5DC2DA9EE7DBC774C8
-F68680F98DB7AB84D79565E84B0063B2F466C82AD817C744BD72605DA743E612
-3DA12819A2C5357BCA207A756FA1DB40682AD3031B75BF37B17F671C92CCA035
-CD188B5184F2A8C01DEC7D75062D0E14A1218F2CF8A3EF5079FEC3F95F73A9ED
-5F1C2D108A03B9435D2A8E875224C0ADF0E03E558D29EE705D44E2763558471C
-9BAE805428A2F10527A1CCF09EBC44C70CAE43768ACA19628D801AB11345FF6B
-A46D23DEE958A992D3111953C82903B0788FD52BD491B78352F3C9133FC180E8
-3F1B98CF4CB038124B9E2A9699EB5424A97726621ED51DFFA1CAC9F1BE906B7E
-B8806A9E5DF8BD74252E67ECB24879B253BC02E505B7A32468594D70A7356F57
-932C5EE332F698F5F66ACA1D4B81A9B521D184EE6EC52BC97CBFECF8FD95E27D
-F03AD4B97E300E3F36DBA88A40D9F72936410CA2B511C42F4C2EBFEB20BC3A72
-440B22FDEB2F46175F64C60FA82F7C9AFFDCFF96640CACE4C211D773F03C7BF3
-2A322AE5B263132C6DD178EF04E62E1265EBF8F4B306C8E5C2AAF7C882DCF8CC
-4153A3D63CADA7F1EEC6902D48DAFF08DC3A17E9AE7732649A971FF6671B5EB3
-D741E6507F6CD7BF69BCF6617A86E689EFC7A3C7D43F85930791FC3E0A49AE12
-563490AEA59ED993D11E0510F64FE31FEE70C92DADB323E36212F3F5C15125B5
-37A480B4E46E5CD42C32E68D7A574153A2EBECFC3A8872C4D7DCF45311AAEAB2
-03564F6F595FEE224F75B4F4438627C878098114674EE482BEAC4941A87F7EBA
-AF803681BABA0890874FFB6D01D3D3CF0FE8682C46D9737E95C913F64E55C300
-FA0ED70D5C604F90C1D764CBB0C49C34EB7B76E3BBA02F1154C0E20B7D8EE5CB
-B21BCA91E4BB5DB62938FFA6361AEB2E49BFD61C053FB73ABD422C09749179D7
-B7513314D5DCB5525E72018245E4CA624EF10E913C0A811C76902B2FE6C74EF3
-EA839539EF27B31FC7F828C272B72685D23A1967D4BC903A990DA7004DF42914
-C4B512E1B3EC50DF510BD51EFC31B7D5C4DBAD3F24B0B0ADC745E263BAC4A6B6
-0DFA8496FD4812E0C51AB09598400C474F02742C010CEB834B84B466882221F8
-99CB8E30D38836B43B2361F29C1BC3F35AE96D084E2780BFEAE0809AF6CF9E7B
-2738E0774629C43E63B90A31F89A6ADB29D2724520766A76FF186D6657204789
-ADA458DB0DEBA76579EF9B21510F15A98EC00F9B17D5E2F927477B9E97DD7C21
-4F248F07773F16AF916B2BD31E6D6631CFEC133D9BCA1EDC8EF6C5D788A93D88
-7FF7E671869ACF1442A14997A01B85F642FFA89AE27D60B53CEC9418F772E59C
-D3BAAFAAC25730AC6B7168D9E78B974A09637302D404E64A11482BEF20A94A9A
-8C9EEB1E48D758FFE7E5236888175F802C23CEBA580637D975A979D284EEF29A
-FF3E83D39EA8DC40207A1C91F021C7FE9128400E79E1D1C88BB4BCD8369A9AA8
-58D0592A3AC18FA116DFA9DD297075C9C6243CB28262539EF1C48D850F66546C
-B8EFB06C0F339A2DE454B91B129FBB3CD3F319FDD5FB7DEB07827FFF722C95A8
-ADD385E9605E4C5E4B467455FAB8E054CDC085C9F3CE905DD5194049D1657839
-73C465D4348000A687FECE3C916F00960EBC7A245F67A63A15291A0F62261D3B
-D0DBD831D091F9FE88BF29526B7316E33B229F44DCE193EC459F4A5C0C0E719A
-33DA6124BA1D2AA3D93440FCE000C42942242A9E356E5CB10560CAC62FCD0DF1
-ADE8154DF592776882EC3A77D6202DBC204E3DFB97E05ED1128DF9A2EF0C8C3A
-5974CC0B523286147A938EDEF90923DEE8C1758FA8B6A0B689CCB1D8C365EC1A
-1F6292F3D4A8BA49B6BBDB1D92E338BBA96E00568A57C27C64F2AB8159DBD21C
-69A49DA9DA4521F6C8CABF809988F886780DC60413C46CC8512E2A3396754FCB
-6FC515E242BDC9BD32DDDFC1A4456B837C21176DD534A41583966518135D00ED
-4E4A7A6A639F464A354674CC1803A81CB9BFC1262815A4DD95229F05956B97F1
-ADFF3996303BCE98E36BC076A0A3A9C731162957B56762F8A8B5EBCD716A6804
-1954278A0EDCBC6C1719B9D3F8FCAC515A814601D6FCEED0BEB1797BE69C6404
-DDD598E08571444E08EA827BAED5D2366182480FAAA91A37C9D7EC7460A614E9
-D4D5EA6C425D9B9131C3769012FD66896BC1D0086DF016310DA3C56AB53CC840
-872F3E759A3F867E6D1D42B611C9C781BBC9AF55279547766D0351FF2B48FD49
-CE58CC05FD7297BC11F59DFA9F1C57F465FCA6FA213591A65282AD2E4A92ADAF
-
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 58 /colon put
-dup 60 /less put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 76 /L put
-dup 77 /M put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA4111CDD092DD0CAEC1DC6D0CEEC3
-B291B4AF285DBA243A3457A855171EA0527DFBF10E34A60D3BE2092B3218365F
-07271A0CFA3AD15205D0D0886AAE1C89807C74C6BB23F55F0405A522BE78D4C3
-0E6C7A2C17EF66CDDD65AB75D03526DBD692FF1557B689A200BB5A593E92DA77
-01E5A82004AEF4402C06C65B21971E8240F87BE60F5F7E0B56D3024B7D49B9A7
-724C55353C362CB35B720A5405B2B9301A1A0083802E8766ADB7856925D45001
-1FA451AA61F72022FF0419B1650CE94208DEEC7EE3B53ED7F9E995F883338936
-EA6FCE2E2466BE5C04B46FC7DD9E80E6F1ECDF77599D3AB9E61C00D7E425636A
-E0AAD63D341CE31564C7882916EC35366208A3C06435BF1F55086D627E06B996
-7C49FF12CC6D0E793EB19C4972C3904ED0FA9FE0C4E05140CBAB2C41EC148B05
-43A9AD2CA401532FE0045933AE0B08BC1F16D94D85420A26A9D32A9F2486BD9F
-EA2553F2E8B6950F63A1102E9E8DE227BD756612412DB1520358DDB08CFFAEF4
-AC3597978F43E982BEDBAD042738D05AD42348840F9D0122535E6CE711AB2898
-9F1003DB762D3B15BF35F3B7F593C40282FCDA0CFB1DD0B2B3A8DB68E326251A
-E4B6B6C559E735EEA2CB221ED8B8E2366B1BFAFAA234FCAB5F94F7134DB434C9
-7033F5ED902DE94FAB29392934E8DFFB00C5D27505CFDB2F1BDC7B10C9379B1B
-8533F17A4369203D2C65B5C75975A65D20BF6880FFDF8043435779F26127B38E
-09399EBB27BC2CC481594BEAF8A749445805A6EDA1DCDD02D7F23038B6EF99C3
-18918626F164B6F9FB32CFFB0D936C11AE7E2AC80543864A65EA8575DE49848B
-B09FDE687FA8AD27D0221315119A0EF7CB87E6C72A232B51E48F4AA67AB0FE6F
-36C4BA99B3C0C343EEBF2C0E5905E71FB897C0E80C9A3B15A9CBE81994D24580
-EC447198E94134154F103060C6CCEEC2006A2F7B8A01457493EDB59205B0194F
-F4859CB75EAF60F98B0A213864DD8407DE4DF86AE6EDC5147FBED02C022B26D4
-158A8313188C7BFA5F185AF65FA75F0A17DE6A5CA276DCBDB01CF410114E8B17
-5DCCB1486455DDA266A778A9EEB6B41B9DE0F79021D241FEB9E9496DDEEB6558
-7145D3540032DD2F1848CF4AD9F88E67C4B77339BFA9EE3CF75FD78A63ADB40E
-68B3D693AEB0E7AA4E46B84BAF08CDC361A106C566D01FE63AF40D245B717B92
-FD7391F92B159830ACA6303C8E96AFA4780DCD4963BD98AF67D8511E4E6C6E7A
-32616CE5F6CB270F01B6AC4EE342610E0CA1AF1DFE51CECFF133AD714F5EE89E
-978C4BF5EA08125733CFE4B0C3853429E910677D568EA9A4A0800AA5D391A772
-E8114BC600B2D6B2651BBF987CC3509B00CEEBDDBDD82330A9181D209271073F
-B37241398D70D049B9FF607A41AC70E64B928DEAB1A0B4745D98ADEFB18F2D04
-0C44BD18F8687967984B9D48A5BF27E09CEFFD7953E6D9881A197CD09B8C75AE
-31C9ED0FEF539E4D71E4DE6E65D106975A0F9C57966D50E678AE5EA9FB83EC80
-0020420E2FDB7F4234A3DF285B9D761E1F0A21018BDD9EB84934B808E345BF4E
-91556AE5779EADC1BD02E198C73D1D10A56A0F09F01302BB91879DBB084C488C
-972D39D4212AAD28F9B24C164F18CAAF595BB6F9EA9DB90C3AC98D0F37C36830
-F28A9DDAFBD9E3C84928E9EA230FBC0F3C3D05DE4084621B65D26AF4F07F74E6
-183E59EAAE390C8AC834DC662B06E83A9CADC8B891B3EDB56FCA7252600082BB
-DCE150610319A3861811339A621DEEAD6D619D475BA86984561F489D052BAA18
-7AF5FF29298168AC79B1626F882CB19F6AF7DCC4E28124ECE52599C51890E580
-132273798D3013CF390A8569A8618258D3570D2F1E538E96793E4A939293BCAB
-A9EAB62579E456B5C80CB9B79A70EB36080A6AAECB786FBDC7F19E6543F67B8B
-39D24FF379D8C6C257C2E361FDB384C822DB095DA0F10211D6572E4DE6D4E8BD
-1770868E2752631376DEDD29CC784ECD374D72232026BDF4650B9E2712190D39
-4C0748743D7EE4706B7B31C90E5743E85DAB062B01DA4960E0314D9D51293BEA
-9DC2DA2C67DF7186F9346CA769A0C7C6E6DE1BD9B48709EB87C6E6139BDFB245
-69A02887DF104549CFDDD7FFD86E9822FFFD2DF186512BB81BEE95253FB15FEA
-01E04ED643D2C7ED7B43AF1919ED54C69908A87FEF3C46BE979787C79F885451
-3C658541A8E388297ACE1CE31AF3DC7DE205B72F27EA432387A609D9401C0FA7
-B53EF719D0BA60B400DD9D02C7D9626799D39C51039B3D0408CBCFEBB0B2EF81
-220B69B2953E00666BB31C73F11F1E6108C62F4F54138631B9FAAC2C9F92935C
-2B3D9989D3D78AE5CB66BB48F669178200ECEECAAF28DC0D5378238DFB8C4DEE
-D337C8F28BBAC0840F950DF373EE8C3A59568D95648E33802210A3A563B5819B
-14C059E7F4AC6F426CD4E7B3F1A2F6F4C2FC19C2C3E9DA7D2C8F950D7564C282
-860C60EADC8F9B71B90DAAD27095804884289E914F0BF17C555A91FD07B13DA0
-66232C27711289C4D5E20A39A4660BFC00566BB31FA6511B763EFBF1CF95AC91
-CCC63FB618BB886C3B7318CC8301E323EDB4E016F0F7889C4FEDE858094C23E2
-8429D32F5C52CAA03CFD74820F2B956E61560B64CCA58607B300CA9166864F66
-49FC01C8848EE25857AD731386858093E9F87299D452D9C13D06F90E9FEF2C9C
-B9B78EA3D3F31785364D36B1650A567AE8CF30A7A5E5C6686B614DFFF65EE9E1
-04211CFDD13B3F021E5D9C965BB56FA136C0B14761ADEB5C8092088990E8D0D6
-B92F39F4E85E71FA38904C93EFB4D7FFA8012920C2445339BEEFC621CD4765D7
-01A9C397BDA9C3C0D0E6B15297BA0BBF6169BF10162524EA71D7CA539FC209BF
-375314A88500ECFB9C7363C5AE0D7FB44D0D1AFA09F34E57AAEA2EA67E2888A0
-1B202C2FC4017AB742D5437E8BC89CB24A4A1B0DF2453026E69B60AD3AC8EEAF
-ABCC24A1F4C628D67BBC03985396C05E5DFFDD98A0CD615D37EE0FC2C9173D91
-7F20B0964E1FACA7FEF48DDF1ABD76716E06B403998530C15C434F1FD2BBB250
-4B95E75486B54604D3687C2320FDF083A23C01A79363A225733925DBB954D366
-3C535E17565ACB00D3ACB5116996A172743511888EAA2D69B180A4C4FECCF034
-BBB539DCD94510B84AB82E9154C93F025FE50BF00B325A6CC4B6974BC3B67596
-CF605CC04A14625DB25A6EB9E9F9BE93066E34A285CDC45ED330AD2073A9DDF4
-8D3A6739CBF4E846C3BB01B9DC7F01055BD43AA0022FFFB2B93DC850419B4BF7
-97451F057CC0BC68C208DF288E8A1310A015BDD1019C17EBDB42CDCA2509CE3C
-E74D55C55630B10A7F042F260D0B285DE8399D11D079E91F348317AA3DDE0CC2
-A8DAC75318B5FEA8A6359EE3765E6F75E58D354B9607034F6A8BF0B22C9F770A
-F537347806E5FB7C0A6A9325D0519B02A0E7CA47946561B848BFB1C00B5AC67F
-BE25853D147950FB70854C7F4C8D7C503850F1748DDA6210DDA2BDA36DE9AF9E
-7D4DD3152165C9AFE4CAD15D146B71F0B7F2DEAA5EB3E1637A9CB5C3CF60ACB0
-7E6A11244B3FE758DF42E346A847B6FDCA6B6FCD7F02BE7D467CDC4AA2435E5E
-34647FB8C7EFCBFD144895C0AECD5E0F2AA6375C005C75535C0833FCC123A07A
-C841157D68C80ED5341FBCA8C83274C751016C40FB73A5EA4C6ABE1ADB730CC5
-1CD781A616C79C2B99EB1F13115FB00A8994DF8017791E23CCC269D90D49B402
-E1AEEF2326CB2AB44079CE18A1FFA08195CA2AFAD0ED73D907F4FC6422B882BE
-F7CE67E17EE720B1767BB925E432CDE667B4D3F0483DBCA9EEF9A41A786DBC81
-AC9A52114892FB6D2FA892B6FDD27DDDB9E173AB1DB7FD612506E2D0338D1747
-1ABEB8BA78BF7127FEBBA18A70DAEEB612B7E48885C76CBB9DB5786C17B286C8
-A955C89B3DC4FBC16C3DA027D10148F5A2C685255F2D165570BF8BB7EF72A0C9
-F90C740E57BA036C38B3FD04BDE1119FD3582FAF9F254220CC20532D8C839CCD
-ADB7ED9483CB784126475CDE0E8B2C602A14D13486C214AD6B53E14779E7DCD0
-59A4C4D62A704B4EFA896439CB66B953822B492265FFA6BE2367DE24DA97CD5E
-31D715A3320B7D0E1EEC35EA1828A218BF3B2B4EFDADCF91DDF152D4E4F92155
-757446DD8D122A22AC3C02D9FB49D31732A03F9AAC36B0494F234466B3C239AB
-4D41488FFB5EE503F69942287348E09637CCE28F1A6671B06E8F700A2276B2E9
-60BCDD1CBAECFE816F6A4A1277569D6EF85BB49503708F56A8411F76E53148F8
-A49C0623E3EC3DE32B280F5BD47AE3F759589C2E4DF29ED5DFC587E8241F559B
-4B6A1F8646D292D966CBCF651D751E5C92751B289BB75A8058E9B19C375013AC
-5B810252BF23FF9C7A0A568C6B4E329F5B71003118F3DE19F99760B525AC3D51
-AC85F6E4E47F1EB7589AC39379C35DE27F4FC5B79B8F5D33049D4BF72A8FAD0D
-04A1C77795B44EDC59FEC22A5843F86D18FD4415FAC8AD44AA7520392D57B7B6
-2C755EF3AE81A83D965E65EE8583F575AE1CC4F50A37F0B3C007771A5B60B01C
-19FF8858951E0E7CAC7D157D3F5BC7F0E453738DC33EB390F31D38781CDA8578
-F9555EA83FA8BF8BDF55740882D9140C9596ABD438E903B366ADF71304E81E58
-FF9B51BA19FE3EB5599C6D1787569B44BF26D4E14FE79C1D47F3FD4E573CCECC
-BA3F8FD36B608D87CAAC3686BE994B252287AEFD9A14AB3051CD4D751F27DB18
-BED214064F065F20D3FE097DF160C63EA5CD01B3C27788A927C79A21C4F2164C
-EEE8F38C79A7C68B1C1958F7B6F0F696A203C93918B3C23DBBEECCCB2EF2D96A
-EF6BA2A7AE40979ACEEFF78FC82EA9B34F6126F515C307783045FE80587D0FD4
-D0F81422E0B82CCC82BEE3D4189536E2C08B35AFAF3FAE2D5D009DE9BB99598A
-A91B9B58964B4CC7CB625084C0DC42ED14D685C25C85181A8735C4EA6BA9CFD2
-B7C8E67977D047470C7A778166FF42BC4B9A8F33C5451FD16878F6D65A47617C
-543A1E51AC939FB97235FDCD67962AD3CB5985DFA5737B28AD2E24DFA5921B3A
-CF2CF5FF6687C7EC9C66C4DF80C039DD5965CB1B49D0091ACAC40AA078DF781E
-55A2457EE55B1E0422C5F8074A9D475E194E5742857BD6544A636AE573FD8E68
-70BF3858E463E94E5F5D956B9859DCF1917516005364779BB9DDB66F5DA107E4
-2B5BC512D0F9C32FDC34794BA631A0731CED84706E2FB9AF7CBD4ECD53B6157F
-7B01BFFB519C87689E2A489833D22F3C1D812849B656E6C91088880F135DEE39
-FBE71EB03E6B5AD77280112F6C3E2636D22A38AD1D34F33B7C327122B9F4BE2E
-791FED7545D52ABF2ACBDFCF770F8F874806DE0D1977776B330FB8D84A52834B
-0D2BC3FC18BC1885959B65A2B395202A8BE49350C1E133EBAEDF41D36345C24F
-86E4576E68E81EB707EEFED92F6F09FA46F2F54BA766E3B20F1CFBD6677B59EB
-73778BADEBB3783A5CFA9138815187A86694E8965FABF1DF6960865AE363D418
-4C3401F3854DD5C241F3667E2CB34EBBE9A74D890283DCA529E1B63DEA16898E
-FD241DAA19EECE2869780A8A03BE546819B3C82762F5757E72C0FA749F90050B
-BDDE78E6D01685F6DCEB9A6F45E7EC9D253ED34D2EBCB98FDE257FE1AE7D39C7
-1171F5425F3604B93531EBD0DFF691A905ACAB90F760AF4A674C500119B91549
-0566246482F9454E3D3927239AD8DEEE6D4E9ECB56748D2965D7D4C59E358307
-F936122ECCF570568F9C8C8FE5F135AAE916CED51041840BC4B1F403FA632FD1
-E694065B7F48EE00FE1E6ACAD8B86A11F3ECCA19B5ADB114D0980766991F8AC1
-573EA9B5C8FB5669574CC0426377764CF911BD316C8A7D772F78F47524112BB2
-A32F11FA6A6D1B295D96456A0D621C2B8F284DBD8FEA152D9EDE6A68B9CE8CED
-65E380ADEA02DD9C06733A4984AB4F7F8C5E87E58C9AEC65CD3490C87C04DCA3
-42AC5CFFDAF21995432D0115B425B20DFC3AF8206354267FD0A8242BE0B23B24
-7B8BFE5CB5A2340838F3BD77B6ED26A6E43D2F732F5036807505B5E8C155D194
-03E57F31DB974254F3CE52708587825117D646942431DC4A29E99E7DF8193B3F
-2C9FA9049DF511A48E405A3B798F0855493AA0A2777BF1F9F55B6797F27B8711
-5B34A0C897B7B13543477D159232939A052E46DF470936A8479BCA8ED9F97F88
-A9D77E43F19DBDD737EA504D94AC6DDAF29AF0DFB73AF8B7681E501AE88A6264
-B879436A69BD0DCF3465BE9D480A31B9702B2BDDB87D647E5A03B7E931505CD6
-7FF4595F44DA7EC3B1BE6C3E713AB806A1737D026A890E77AD137A9317779D08
-B84026855E4D84BFF2B50ACD7E4E23A50B888916681BE1FFD83128E9C36029BB
-AB6225DECF2F6DFE22E12A084C27F809F53074A272735FA977D783ADFA5555C5
-F2FF03C670E2018C9388CA3034414402C60E0D49E121FA06B54E649E73E65E2E
-3376B59F3E3221FF238488418E7B969795938996B506C9CCAE529C1AD10CBCBD
-B2DC727D9722C198F7BAA1BF583AEE1B88740668CC1E9EC960B33820981700CC
-01F5AB0586DEA46B96A72EBA2568E8A3774935B4A17BB2DF361B4E4D30814CAE
-7C6BABE324FE7FCC67E32F773924E8C995A025948E253CA14FD35DB48A4C9869
-10ADFBFEA18E729FE71A53584FF7CC8E50D04A3700181E0218558C262873C7D8
-DF424F5457D76FE99ACDF797E542433AAF9E811516AC28698A179E17915BB3E1
-368DC25C96394147D0483ECB7EC5543595AD8903BEBFB250C76ACC782BBA59DD
-36D393AB25D84A09E19F7788CAA4A9110997581DCA6EA82B149660101B9DA10C
-66A13ACB601596B68CBDEB3F8AAAB3DE33874C0B07B71BCB6E4BF05CA47A7AD0
-69B6F516E4ED20D017CE5D324FE97D7FD2412A73B92D8601B8D716AD4C87891B
-53D9E95DFAC1F27A582CCA123096B12BC1BFD68F432956606CAAD9752102B925
-555EB728A26DCB480AFA1E87F2990585E477E5E83C045A72FB2DD04D0AFC8512
-640086008CD6989676719D94E4646EA41508A6A4C25E93E84B3928E9F875186D
-B2C6079FA73A221FADDED66AA88F5B49208D10C2E1E91E25DB3818D69E69F10D
-197A16CF687E74CDE885CB876C185F19D120D916E66F88D03B308ECD3BF2010C
-7530AC389495B4E63B70999149C463F46DC3FBB0E77E74ACA0E0CE17172AEFB5
-F3D559DA122B384EC940CD845E8B5271D2859A12F5E913BA6CCF8576ED7F5C04
-9C4FE5B7DF849BBD08DB1B44A71A59CD1769853CF9E49A3425D48D19233988AC
-3263BD7D1861EE4E99C9D33FCDE02854B0A9CCC24F337F04F9AA4F0292F5613B
-0DC69AFFD972B2EA03B018057A588936F7868AC2FF5474B9A9584F2AB70A6813
-23571813A6B3B48ABA4CB44F6C14E9DD5EBC97D9A705F215B31352711E6DDC25
-27B5CF2AB2C4A1B2310A91711D39A4BB8EDC93361A18A38487F8D2E3C91E5D80
-53C2B713BB837DE72556FA3D1E797EB6A90D83DA02DE424D074B6A8EFF11BE23
-D9E905B15C4860FEC665B2182CA30293A86B5D1BB1F7230D7ACF88D7C53317F2
-57FABDDDC049CA2CF03E8F0FE9FD160736418DDAD7809A85D3F3CAE9F7C51E3D
-2238449F781D61AE69614F0B307558D4423C86EE67C353E9B49DBEB7B060D7F5
-25AE5A7F64F20D22B4932E86D5F70632334D3F08F22B81472545ADD27C389FAE
-F619E9FF87185F0F54BDDD40430CC44576CA2A2F3F4C115D3C82E53689203F93
-36421BCAEB7FE999BF2EA19D3B126C073EEEEDE1E841BA512B2A4D8E1BFB3A8C
-B2272496B09DD88CC7C37EE8E06BB92797FEA48E4845D7EDB60A61206C581894
-1FB3FFFFA610E81026A7AFF8D400EF068D1797F8512F05223DDA51FE18DFDD7D
-79FA8754A79D501826F705CC5450BE63C2390764D2AF32BDEF3E45940774C9AF
-E869BCF5D5C028278DA373F0B0B6ADA106DBF419FFD5ECA3C60A6C1AD46C6C25
-5C3DC971BB07A23E3F3180DD9DEAEDFC2A96DF506424C5EFA695150D5B550AF8
-E60CDEA33876B075EF693883F6FB70EF5676B4552318E1EBBD4050B2BAD9273B
-FA895B3DAB65E4202AB0EBBC633A0810F852824D3FA83865E505F0A226A85D26
-C7D69739B671A64FDAA895F7C98660E43B18923702C6E02C3B0806BC375AC535
-527265D76CAB05110C7854CB477F1ED55D0B876CF2421E3FD0F21337AFBEC2BD
-24E8E304B141B878DDF0A9F692E1481FCE9FE8734E6FE9CC2114F0F341AB9E03
-8E4118316EEA0985914711F52F7D2CA2FF11FD9D79C5CBC12807B5992B8485DC
-494FC91F87A7A8731CE88752D02E4527597BD7485D4B88BADA367D516EE4069E
-12625CD755DE031815AE82EEABBFF8563BD74A2A5430F4B084D7F10CAB27224B
-8A8ACAB00DD8B88D7A3B9F05D769D8328E46C1345B7BA0DAD75302227CE54C2C
-AB035F296ADF6F7F7E7CDE3EA657F1244C2370C6D95EE876257AD318A92D90D9
-4249B2EF5F001B88C41BF9C9424E9904A28951038318B55BEDDD504F111622D0
-0F9D23CDB090D27E1A7B0B7DEF03C71D5F90523852FB2530A4832382EC10EDDD
-EAA73D2C1CC08A53F1262BF636D56748631DEBE79B173EBF76B6E2334BF0D855
-74430668E6E49160A25FDE5DB59FE6320B10D00AFDAA328324572B6F767D98D5
-ABFF8B9418D51864EAAAAAA2872BEDBA9ADDD7F24012DDCD6200E5B322B2FBF2
-3A37639CBD9918FBAC813DDFF7A330CEAF3BBEC787D6B404C88E22F2EA4B0F88
-1260BC45253FDDB713D260F72F074FF766A841C7B258F281C092CF643013ED6D
-F4C3DB7750E93E405958FD2DFB84FE26FB582A61A029088B6193560370751546
-230789365755CF9412EE72731564C80661E5D607DB15823CFD57DC71DB65996A
-3093A3328998FC86ED7E2214BDAA5D70F0DF0D54D0E2380B71B9E321131F247D
-37AB1EE17FEC0ABCFC5906695B15B21CF44DE062BDBC4B9088844D4F0E39E071
-0B33110F36C709E62F7129C3089F2C235F2EFCB1820B54FFA88F157C0CE08271
-AF58E9BEDEEB16F461B77596D9FCA92F3ED5B751FC0C0312769C23E85DB83BA1
-A1F8D74BC27276BD842D5856664582B3F5414E2213E382DDD8EC2EEF31E79B95
-C2497A33906574377E7FAF03CE9131A925189213E7BA883D30BDA2D03A696FDC
-E62DC5B68FC604FC6E612BCDB18482FDAD3EE1E2E0ED7F93C91C81176D33BA53
-6CEBA5D8ECDF838640ED67372D1B2943A94D82DC93AC338C57CDE651DAE7C234
-03630634D5C816277DBC9EC71DC0A862F19B1756A11703DF5DB91E110FDC7271
-C2EBBC42F233B575752573E7C3DDC8EFC73A6B8DE7E6B8D48352C3733CB9635C
-ECAD66C97F2DD346865CF018F46B4565883834D989216E3CA25556E1F9E98930
-394B985ECF798743D8277C2AB8DCAC16B483610DB7C3C90F71680D807BFD5493
-FBEA7F3FA4293659AE976D036FAD43D509C2DBA3992DD24DE8A99BF1FEEE7431
-31705015A098AD47A51E6D955DAA1A4B03CEA003E0273BA5671F7F1998238D88
-D0DA4262B134AC9003BCE375A75AC93715F8F2F8A628409CAE9FF9D119301B3E
-E8147F1DE16649984430EC4BA948BF5C74111D0F8056383D444F6524C7FAD4F8
-6A4FDF445CF8EEDFED560A6C262E24C0444B2AF705926A9E0805A1911F0230ED
-5B2030D956CEC14A102CF4F8E8C3DAC74ADC16C169BC4A4DE75DB3CE82376254
-00FA86DB89265200CEB4CC133B2A993AD95C5AE5A695DEBB05624CEE6DDA6B5E
-A089344AFA90ACA83A413762F0153EAF7DE15333BF9AF6E75EFEB3964D59E183
-42C5E52A77C87E85E2B3049508C00ADA5D6F0A8EEB2A4D71DF16F3DACD580DD5
-68C68834C0778B469ED2F8C833A1BA9CD0DB2D6AD88C506F5BB23CFEF461D30C
-ABF3164B702B433E0156590C1FD699268144766D3AE1F8E582ADC19B2D4FEC59
-0DDC8270512D3318D854BE1BA7F545AF9D9A0F3B59710609AD7A624CDCE04DAB
-095A54E8FBBBB1987D01EB7CD1B6BEDCCAA46A07077655A73707D6902BE02565
-EC7C6145AF4E52D1073E3DAC7C087A14E9631570901BEE1FF3255B8D501384A4
-0658B67909EC2F6B90A1BCEFFA9D74C1CF5570D7EA96391CAB7CA4E0CFDDB3FB
-C3591EEB49AB7B154973F0EEB9879D53DE90351F0F76BD90764ADE187C68FEB5
-AF1B4B290F2F0AA66E1D138B21C1D4EE491ED26EE44CE490F326A0407B0FA267
-1707218CA4EE1FDE220835476614DD67C7845DFB243FD2C5D856ABC7E97671AD
-B85BCAABD214B9D9BA81B4E925A726A122F1FFF11F9581A3F08645BBC4197B27
-D40D2A95EE1DAFA9C8A6157E0E79866BA40C0702B26210725AA2239785D9D9F5
-017047AB62B57F6744B2D4A5D642E971074A2FB1F8809AB65A52E96C51415FC1
-A5286427DE8C81BBFB5A218090595CC14A86A40ED9709D5752157EA673A4084A
-93BD7E215DBD1148BC140DDC68FF8F3C1AE10894D8BA9C4A3AE55992F88429C8
-DD9B8247EB0D653FFE69165BE6827825C1F88FB36E69F2A8A3CDB6D72FF96DDA
-072C65F51A898EE82590678C43FC184B532ABBEEB801F0143111C9941F2B1C3A
-484DF4C0AA7E738EB2063278EB7B70E1BAAA88C50BC462ED449B66E4E0978C1F
-7DB04568AF5EB412C3E41BA22E8273C1996042DFF01F9702B676E858F4FDD430
-F6B417197D8999945E9A82DA43969580863825D31F9D59A0D87D0F313FE2C28B
-C6B97A98DB142B88A45943DD49471C3424BEB1DB482E9650B0B92AC70FE8845C
-DA7716D68C9C2A14BD68F379E2C9DBFF92DBACFA705F328AC2D196F472A24ACA
-244A17F00C82EF653DCB067E0F3762CA52E58A5604D29EB1D56B2EB40417E2E7
-9406035A253BC2F539D5B09ACABB048EF1D689A5889B9C5FA6B2E0E2EDB9599B
-F6F4B355E3733E6BF9B21DBF7580E52526F2900F980B3C28062A33A25CE7F6A7
-4F13D6AAD9327ECC7F3F97BF15C3BEDE1A0DE042E749F648354D061C3E52E7D9
-F376216E4BD2B782A5AA0D9FDC5551CF660285E4CA7363858C51DCC79F66072A
-2FFD59D6799BC84EDC0C5DC09D9E40056A4608B235F1357D454ED3028322AB8F
-DAF5CC60F8B5EF4E01A8ECE97C491D828A87CB85D50CD56E4A7BB6DE2315CB0B
-D0113AE20B4EF27FC486B648C3C0E6F69C1FFAE0C766DFB8B16611CB504FCAD3
-06B8169190CC5F836CB68D7CC34A8434BDDBBEF33E2B778884A8070654378FB3
-744459C9FFD348B2059652D47335D7C864619700681D45A39F068430F8DBC4F0
-D1122FCC17182216F62C82A2800FEAB2247A07413B3809DBAD5A03E1F1968BBD
-B41B98142B9B0403D882A3A70B334F0365353E51A7FE4309DE4EA9BE3B695601
-3CF86249952A437666BDFACB7D272F200A64B9C09A125287FE2779E950687EBB
-3EB747653C8D95758407DC3AD8C95AC3D2E18994156FD13CC03A6653EC7A2993
-F9893778089FA63708B0E3942A226A5289090412CBED2CD71BE93DD4CC56F095
-2E41EB41DE3CA0F8953C28C3285C57B75C13CB8A7E588054BDBF3B5AD6E86965
-4BAC32C54CC88E2BA882A887BD84BBC8F15DE986DC2118D2DD0A0E154EE11815
-65B18565F5C97BA8F5753324CCB5CD8D40463D909E832CAD28E62AA2250D8DC3
-120252A10404200CEA8A2B67CF44676E6003B7FC2AC00ADDE1227724B9E8999E
-B5A4E94223504B52575111E828E4AC03833844683B64101AB5D91EFB4CC8A822
-72C394436D8930F1541359194EAB8F44403958F415678D3EACC777022271EBA2
-2A76DC2E2E833B426A15D5AE648101CDB8116D353A837D466E4311DD86F1D921
-64EF76C5CB35B5B0E4B8B1B93861E03C1B635391276D77ECFCF247E714CC67EF
-72209891C418D1472541D68A6761EBB440E360881E993D3FA4E29CADBFE733AA
-7C260797DFE27403E70F6B1D2E493A1C55B2381AF9A815808B5081231FDF30D7
-CB3A1D091A4B6887F9EF692C736AB5770BA5921D48DB3F196A4515FEFD4317D5
-BCBE5394CB5EFDB4C4A972B669C294966E5D76171CE5B903E4D8E6AE50C5C075
-37C42B59E74CF491556B618191C3489D11288587FF05713B18529C7C7DE1B9FC
-CEA7667AA32EC4F02F452F9F20E54C89E071ABFC4155ACDB4DF3900EAEC25386
-E14C88BB174890A966703ABE3B6EE4E229882DD0543C3E33025F072EECAC34A7
-7945C2D58A721E42FE71F1A2CBC59EE8278EE39F6BFDAE2AABA5562E0970991B
-75A3AE1B2B0CE3B8BA0E32F6D281990054BB095B9E9B128D54E3492C08380208
-B6FD878894DE6F487363C826F26F5B810314E48E86C933B885D21887ECFC7FA7
-711F256D819274209A0E08AB6E147F7642D07C97F92E70699D88ADDFFC941A17
-E521A3D5E3596491CF5D9BB95E483C353441CC4748A59F9E49C79968AAD58F19
-38FE5E275EA22403CC4A287A30F7B616CD4B31519AAB4DD7237916906B59CBCB
-C275E1E993B33AD6F76E945DD4CFC3CAC1BA88E5CF9D15F03212207182AA054E
-9B53A2469E76F128006747A7E3E95720EC90B43BAF6E016205435EA4AC8C8303
-E1E41BF20358CDA809B88C72AB0C2011A6C91A884D542D92971327564E175217
-A40ED9EDA6B45192C46B648215A556591A5C8AFB8468947B8BEBFAB854983A44
-CB88DD24D3C8920383944E2FE13C18A45D4A5507110C61FBA11945DDE8F0E5C6
-265F450C30BDF5D3C95F40573B139857539F01E8C804BDC8DA9306C133E7FC0B
-66F52013A1D7C4BBF2B2E1EBF80EC769D802C7117C06AE917206ED17D13A3E95
-5C987FBAFDF8B1B49E00376E8B4D60E9F2B140267A587BE8D14B1A0249C2B1DF
-003533FDA36B565ED493CD1A807E139F6C2CE7148B6FE62615731CDFF1EFD40A
-A79DCDDD7F4F4CA0D00DF277E7A38556B684A32AC4A8B6998EF6C1693F043E31
-374B86213BF7CAEE905D239D358FFCF91EF2F34DF7E0A1A16832A54640D42610
-8C77E6BDB82B862426F153B0C87170D31DA509ADAC29EE7A614EF359D584CA36
-787DA85840A14036378E25A53F907D10F7416D5334705DB9A111553FAF2EE20F
-9C3A0BFE2D3BE88C28899043C8293D012CD8E2752F30A883C2287D5AE64D00D7
-443218C7F45449B4C9B2BCEBCEEBAE0AC8934549F5E27BC01AED860754AB4962
-12C42C1E066CE0B5726331F64A1B6A738F4D79388076AF52C46CE481988B5341
-85A8CFC7F9ACB1F0647D33B762CCC7C34F91BF607940DFC09040775AFC3FAF6A
-41E89010D5700942F78D5F6E159CD13806F1F62C28EC0BD6F40E4E812B50F088
-A20C82231D47C911A9F4213077793947F6C8EA53BF2763F75779BBFA65A75E27
-791959727522E48FC28B9C649BB0AA1DFF96D7681CE5C8A42632EEC5CB7405FC
-167DAB24900FF3CDFA2FADEB8829283B73CBA2B1A95B483CD3E6F02C693AAFF9
-9C09D3D2DC196A6EAF720FDFE7C060FECB0392610B17EC0AE65C72D89D892694
-99CADF5E3F60F6571E29EBA897831B8AB7253557713BA2529465C615D848A1CB
-57633090AF2993CF37E19A97094B8686238056F22AAAC0CD81034661B9BFF73B
-18151C4DDCFCBA332283CB1970BF1830DB778E626626DE94E0A8004E5FD830CA
-93E4BC3607809BD56C75B558196999C92E7325ECDF73AA32B49C49C3C5FE4B95
-7F50AC40FD642A52CF12F3547ACAC754EB8F7164FE5624BEF7160B14258EDAD8
-E26A181219321F2AA523CFCA7B2E12878A5E242BB7BA5C9F22D0C5722766C564
-306F713ED39E883D2A7ED68A0D7C7EFD64EB39FC189A0C7FF8111660A188E19C
-DE642C8F2B0D284AC2B52405206A5E1A449319D94B3DFA20DBCBC522B5D67431
-E3A072463B59BF356F924434B5AEA53BD49298D25738AA79AB1E274F0A7E9330
-2982789B56EE39AEE8DF359C968C704C7D3B8FCB09FFC69587EEFA7E39DD5370
-FF513753E7518954525B083BFA191115CF310A98EF5CF0C2540265031BCC9694
-8C6A3F1A053753838516389F26ED5D57BE285F92938D59B0DBC6047C0439E127
-55CF071FE044451EC5C557F6CC29D8C5256EB48AFB23A0CCA88307B7E8EE1E45
-91B46854300FF369C6D84072D4D1625A0613CD330AB55B0B326554909D57C7DD
-73422A8588FAEA378B917785E75F25E4F4183A36AE15C7FC2C3E2C6E890B113E
-0B3FEACB2A3C5ED2F7E5BFF91E8E273869D4143A954E6A5C1012A2FC7839A878
-B86D878370EF71ED0A7555E8858C68B1468E130C1CE3A6199D93FAD963AC0877
-1981237BF431B598966143C8DC7F3B802729DF288A39EDD5B06F0F808741C6AC
-4D59EEDEE8655A6CB5FFFD911D8A942590E4BA2709403D0741C70B0FF9FBFA7C
-C3FD928B5B265DEE100172E5E917F273918C7941AB9071E1C3EC631AC555CE9F
-35F88068E213C0F9A4BA7D133755EFB674717B4FF225AA16BB0B7A930D7F4474
-F2C9C784CB7C8C0A2F2201B57541D25DB2C2C8EB11D172306F7F912149C2E61B
-40B0A570CF8A47F792860E4CDCBEB9A05B511E4903921CB80EAEB5A3B6567E14
-71229E7AE16210B7F307E1FEB739554261547BFF5B559B88CB5BDD64124817D1
-AAE0DEDA95D830BBCFE0AE34A90A70E42BE5E9A54D420B7F15D678425F1F7408
-B0A45ED88BBC61FFF2433D65AEBC21CC21A454F416913AF8B4272F7E20CAE1E6
-0AFB2D16F862DFB2861CCDFE73BA66BA95636004349740C2E9292EA3C326F077
-1A69BE963D955A35B72920D063127E3C8DB8655C089312F094231517A9198B70
-CEB0F01B22DD451966D72B2152947AE928D38F39C34EA1A6DCAA758EE660700E
-351A8E433028CD6ACD63B6745E0F501E72E3E3A001696B500F83B67E027E47C4
-36B251893D87A5B646C1BFCC94F2516C5A82CA364FCD3F128289F1DBBD0E1BD2
-8D641FBA92924ECDB132C1F89BA3650DAE6E68BAD856CDAC195A70FBB0D9ADD4
-BFE9194C5C2C525337AC29B8A55D56BB2BF90C004F1B5B3842DB2581E728BFE7
-4112D349EF2FD56CD145DC9CCE9F8364830E466E60F6F437EEE13DFC07D8009C
-ECF876BCF50BF9C60CC60544EBD3BC42EE61F0DB1ED1EB920CD367149B52B2FD
-353B4ADB2C18A087AA670E492BA5FAB513AFBE786F2A729D93F28D282A2A1945
-3A0D2565D395FB4A07E97F04E1A50AEA7EBCAB7D5DABA2603BDCA8FE770A4012
-114B736C19E1649153A74C74E7218A0A031EAAFD8420A712DEB1233036455045
-18F9902DB6390E82EF280BF3C104B4E25EDAD22880D74EE456D1E5225D683D5F
-13E8DA2C4D1A8A1F456D9A3887EB3D9ED71BBE682C7FA3AD06CE4F2C554DBB72
-71FCCF5A8D945387E9FA42BE9D774C44FD296270FB67B1004273051EFB74C2AC
-2E215CCEA6F18AADA4EE6B94915242B113F094ACC5D837566D5B49C51FA2012A
-792357BA0162EA6D04C7106B60E25EDC02CC4FDDC90FA314E4D9DD972536C486
-7A772B06B55C1545C98E90E8104FD7AA76B0DC12C7331859B6DFD01FF9022F05
-34FCF3DB906EDDF0E8
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 18 /grave put
-dup 19 /acute put
-dup 39 /quoteright put
-dup 45 /hyphen put
-dup 65 /A put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 74 /J put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 94 /circumflex put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
-61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
-92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
-EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
-43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
-FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429
-DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD
-3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A
-7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7
-CDCA11A1FF27AFA7FF189A7E8A7C0E94AEEC901DDEB541604DEC0FE90FA0685A
-FDEADEC90DFCF25D074ECABBEF0F518FF620E5DC46EEFB4EFF37B0A862754A46
-567F057C58A40714D712EA5A6F783D9A1C7AECD26458D64C2C203CBD059208D6
-F0AC8240A745488259475394331C07AE954D0E9CA3C467D35F09441535A222F5
-57A2FF2E6A20548CA3C7598CCD31AFAA761AC507A0C0B4A25D660EFE5357807A
-77F869A500A973C94A94F447DCD06A6BD6CE911E361C39C67BDE63F8C9C8DA37
-EF3B38F974D988A76BDFDFE0AB54DA1A0ED775A0F7E567AEEBE683580D9ED9EA
-DBD427477C504FBDBB53FAAAD9CDEEC4F30529BFFE61593EC32F78BA5CB44620
-14889B2495D30F49AA78518FABA939E0C08F86A4A117A55B66ADF5E35E5C247C
-3FCF5311672DAC9438EB2A92AEF7D7D4DB8860F63748EE51C7A13082B3BD6FE1
-DC8600DA605E7F6E33421392AE906279B0A58DDFB8AFB3AFC8592B8299282AE9
-51A552F05503FC6A1B269DF1B246989B3B30A1B0223A63DFD1D98157466D4AC0
-385E4BA07A9E17F29BC10BA58BA9BA1974FD3EABCA1644E74824B87F4C41CA25
-CB10397710231F7FE686465E27FE510D839343D898D4064F292E8A5F4636102D
-47AB90B92FAFC17C1C1490700228F6E6B1BDEEF3977F38F1957FD88FA2A414AA
-85971BBB1161022A4A5AB2AA0E7AD5C3C5D5B1BAABA354F932E78031D291D5F7
-5E746CDC1EC49ED6114400F4724ECFF05FE0BED47CE6C9063B9672CE2B2D1687
-E0BF5FA55A6993EA65C08AE90C22E5315994E311EA22DC5B2B886C4663E74627
-4BA7D8FF798F2A9F6C0B4A107E56FD5F51995156CDD5B7961E9FA85FF829BC2A
-EDC874B4CAAAFB9658FF1D6A46076EF08D7F48069BA083D4B526B3A946B7A828
-CE1D3979F9DF0CC3EF0599B2DEE151323EFBE9A23D08ADC21F05A3ADAB8D99B0
-4FE04D7184BB27510A69DE354644A1DDD153304E35363E7137A0E139847054A5
-19E03D0F4D2E30540A80D6C709605AB5DB6F787DA05E2ADA1C19405B9CB4C390
-F61DB018F1E2B1968DB20BEB33337F7D68119A242232B81C261B270855BC7372
-D1C0A2E2A4952103E010019BE073E6CE7CAA6EE6F4C8FDB6C31D398F7A216ECD
-C4B9985F3745569FF9153B3F29A898B4DB75378F81635568A1CA7294093EDF40
-4870424C022BCB532815FDA87D4BC8FF55DEFAC6156AC74542D671FCC53F2BBD
-016DE21E23A541F10478FF7FC501755E6AB5E75A906DB456D94F3B82165BE809
-86A232C245E4BC91CBD3CCF7734E59273D0C921098076FF86AFA61352C0530DB
-712D639163B64AEFBEA8702482DD3A1C68D270934E1FD0A93966683B8EA39CFF
-DF4E52E1CEF2D2478EBE2D43B422EA37B6297F2FC0FA44979714D0F1917F714F
-17718377AEB042785E251116D23E2B36843F7FDD927698F08E817DA602B767BE
-0D27FFCB1159F6E259C59C71AAC0CE244564D3718F8553FFCF7661258A5F6013
-E6F07AF84201AE4E57AC2407EAB2C5CACBEBEF4D4A7B8863132353A4A0F94C1A
-3E549307E6D8FE43DA728C823849ACCE7E1736F19C87DB633D9B48B56C30161C
-D386D1519AF35646E6EAE0EC1DE6ABE921FBF7E7252C77B06F40FA2BBD5A720B
-17AFCB6F674E7CE9301431190FA12FCFB1FA4C3259C4DFF1CABB3EDA464A0634
-51F290717E98F0675A2C26EBA06E94AD0B246AE538E2DD68E64B9DD1E8E9DA61
-FA9FCE0EFAB00AA1DE16D3E2A3464C8F46AB87C0C6A74DB3737FEFE0B5AF55FD
-8FCEC6B70C740DF3AE3BF665D1E57F474F5A12DCD32066A071038B1451D11A6F
-EC1EAE7E4A1F10F72FCD8E471D96EACA18F182808AAD7C25432DDE2655FC7D29
-74F28DDEC27D7240E62CA2A7A88F515C6E142216ED761F626DCDAAD76B1C0AF1
-30A527EE40D3D840433865E2D188101955BCAC01733A87391E4522B80F8009D1
-8EB2C05BBC6CC22B482DD76D20502FD13C155B621CD30E236409269B69324E91
-1E3F8295EEE82B01C32F32377C18D1B70B96F992B6A46E1F5B3F12BFCCB5D247
-9D5A73222D74FFD9CA2CA7C15BA46779E479BB6A6BE5E43750F3B42E64DEAB1C
-6A38AA4A4AC2FE6B97675D788DA7D5192027BFAA13D89DC55AA922C9E42E376A
-098DB21A0E82BD6067703EC97ED86B294FD4F6C9DE10C0DCE761F4E18E9786A2
-A7800077B3A344C26FC7209C022A1BFEF360E9A27CE10025544BD94C1C4905D9
-B6D0CC716A86D320DEBA483C3FD51E0A8095404C2104391D81FC8B125953BA94
-C8A5C3B40073B375BEC7CE1D2BB7DADC337CA7D116D03B0B117254A513CA53FA
-72A1B4EAE0692F9E169E601994D5966FA064E6BA8A4D8DD30C899EF14A6DA8E8
-FD4855A7D2AD1D8195A886BC19137C96AED43B05319016C4DE523BEEEA9B4077
-9C107CE041AFBF02613053545CDDEC1F9945FC50A2A07796F16E052A1BA3CB9F
-789AB621DAB2C21AA85B902DED049BF8CC5246154A24BFC46CEB3DA1A43C1A8E
-2A5B17860D7DF7B321F4F3024CB85B3379CEA5C69A1404787761F5A6F2A04697
-06982999F31BFD938000423E3E3F0AC26002C23E57427FC45C2CAEC40683EA75
-8DA96381CC257788BDAB943AF8FF30286ABF3C409B3E2A83C174FDECEF2C4367
-ACCBF9EE597F8742433A1D119A03FAD64B98DA0711C4C0682CA0321529E39BBB
-D63F2E5DEAE7B99BE08FD3226745A61074D724A8021858A5A70B4EDA458E7094
-67F9BB5C34DC40621F7D4104D14F5FED04D0F6D83134861EE21AD7031A007311
-635C0B7FDE742F9DD1B6A26B7708E28B3B9E19D43B007F880408ECB2B4446E3A
-92F82C8711F6296779321B29B18AC1340C83F6305D9F443856AA9E44DC262CE4
-0F2945A36F897C23F97943D8709419E9B3759E0B93CDBB0B2E4EA97618B65971
-BDCB42F9102B4E3764F46A3EB04DA60FF459D9518EAAF4DEFC0717A500EDC105
-131F43F305F42AFA0A08E9F592441DAC459A4F73F71BC01CF4D14BBD40D93935
-920A7999EF8B20583EEBA5275385BFD4CA59EC1779B85D991400CF3456637F4E
-1536F85275A9E6AB094BB2686B2507453976FE1A763D9126148B9B07A9295AA1
-2DD1C66BA4BE7EB5A9CD7CC0452935CC1F2B0FAE0C287714EDEB91DD9D163079
-FA9A33D83BFD5EBE1486B663B46552B30E325F7AE29A698680183ADA02503A45
-D137E82A07F6EF8A50D7F42D703317E82DBDB8CE78E6FA3846E7C912C65A16AB
-9966F23F2A6FCA6DAE4D7D7F7E6D563339A12F792DFE2A40B8811F03C693F019
-1861AC5009CC2CAC44B2B80436EA7AF4D978AF680E6A3A5D040780B00818ACD2
-DB7EE433EBFD4A10CFCACBB77855095F4813E0513ECC3125154D2EAA232DF8B2
-192BAFBB1B01D2E1E0ED15BCFAA6DFB91A467FDC7DC116270F2CD577A5400F4B
-B7EC1A909BF545C08006A43C207BC000AF7B83B3729810C53B985B4C4B9451C7
-C890E6D5915C051204887E7BEC8E2BC3905B7E5F463F5301D5FDF632B8CC9621
-D968CF0319E7E77268E69FEE9A103BCDFBE55EC5A44234E56D5599BCB0318772
-ECC5D92C741C20A99A3C590FA9C3D1620E4536C09B0C1A9BA59E0BD8354BA528
-AD40AE2D1CD36D9D3F19EB7A1F580150CA33BBBFCADD80B8C272C914CB53ADA7
-9FDC2F631FE209ED66EAD5F60EFA2C601A1D77541DD2502D40413ABFA9077723
-2E47727DD893CDD06C3EBBBDDD756C1862A2276930B1D7D5B82E1CB8C4458BA1
-0D0F354E9D14AF9B057D5AE0B77AE33279864B421BE03871ED2C73F56C9A69EA
-13A59F801B11F96EF73D9F6215CB55C342B4AE97B4424C2618471DC353DB1313
-34033D188A6B2BC33F0B0D9BC4FB79EC818308422052EFCE93A2C562EFD672F6
-89B5E95149EC2C65EBF4D808C6FE6ADB138DECB4F7F16486BA3F2BC05BFF7F26
-760A67839A549AD77A7A720CA5B11C5364C5A8A62D6ADFC5B1B77964A0D2AC9C
-3885625881BEE7543D1236ECA08C8B92B9E17BC4D5E30D0EEE02CB5F6F4093E7
-9CBB3903467ED98BFABD1DE45B43E19D6347C9075C7773F6C8FA7B186F7A7E5C
-7BD3860B28924B3BC81DB91EF5989CC4B2B26EF07018AAD1F4CE17D71031950B
-CC8203068853E447CF698381E26CC2ABF1A386B732350B1FC4E4DBE614E77ED9
-400D05B7537527FBBAF718DCCA9567347F230E95D3B258FD0981D5AE92BD9B83
-35213AFA4138C67563E663EE9AA2B72D28B23695E3DDAA7E39E453EA6742DE3D
-9FFD0C682305BF6A36F4662310EE6150B4BCB100BA28FAAC1F55E8C3756DA10E
-853E05E4AAD4FCC81A7DDC4482468F77AEFAF8BE272F592EB3DB0A5C9DD52120
-DA9BE6B2BA372F17CB4DDED38D6E8D8BEFA599577CA823AC4781C223FCA87BB0
-0FF99898016DB038D229D43BC9A3F64599A2A240C3B58DC64FC116A86E27631C
-05DACB3C4138295DC970610D69C52DEBB042C2EA93FE08D21C8115A17C647A6D
-A88DB5A886BBA79AE1A45E98DA902020A0A64AEAE2AAC79B19776CDC888E2F85
-BFAE06CB039EEF2BEA74CCD806AEE550B94470748ACAA17B1F0E7B3D79473DA8
-8AE663BF3B2FC71E7F03A358D8E37039A4ACE134CF4A0ED32FF46CC4D1A33215
-A672ACE9877354620BDBC5B2A79A8E639B2D07157A8E3CA43FCA9B7F86C5C8B1
-43EF6E5234FBB4EE1FCD23F2840F6A1768079A6E1313F50B10481B77EEC59B92
-9EF42DD5A12D7AF44061896EAF60EEB7711C1948C18D5EA11363954D19CD29E2
-7CCA5314EBFCB646A4C0B1E8BBFA955E3B91406D0EF98F53443824EB2F2C5D10
-45FAB9E29123F2ED827FA3249A7C240E167525BC4626D47C51CB634D7717B1A3
-56DB656F4735204521604CF930A6CB448BC3F1700BFF7D320C530D3BB34D02F6
-7A2E904A7A46FC99DF9C837AD5DB234ED236A239BF55647230713CFAED457D95
-E698FE3A9C42DC36EA072EC140A9C7171BC0823A6ED93E33D1EC107302727CEC
-AB44F336DA0F6C5D6122B607FDF7740E196D9B728CCF35B5B473305086A45A6F
-E2BBAF4C75BF1EEF04C43A93495FEF8837B7F573C8109DA3681BFC8683B19BC9
-CCA9385651FE24991E5B01C81AB98CE4A66A77846FEAA4D43197DF0956417CFC
-D53C502B203104ADEA2A775ADA9C5675486E34796F186C3D7FDF3B6F1EFEAE9F
-360A7C8D5F8FB448A6A5056F9CB6DF5704798591363DF01C40A6095226FA722B
-702C1C69E9C9D10FD0414A5BC011AEB89654250C37BB8BFB82C2F838FBD3801E
-07324AD33B7B536E6FE7458E5EAB31290AB829D1191DD37990FA60E92B5E22A4
-38F15E93E6E0B886360B33A375B30BB12C28C8ABE9F3847DF4EE10823A365DDE
-32F07477151EE5C356954721D80099BC7EAA924F93D6BDB9595D17F23206A1A0
-262DFB5CC2B58197560DEC6DB19733A4A74E15EAE8AB221485035A2228282935
-6935B8F8A66FBC11426566C9E279226C0ADFA642C6C40E82F23B5F38CAF5814F
-98143883FC3F9E78DB773BFEC9025BE2838B3D8428DB9A6974BC72D08E4D4143
-E16BE626FE5A17DD6B860402FD4CBA6DCA90E9919F0B76AB1133EB77ECC4879F
-31235389348E18ACF5575B10D172AD707B85716F28D693C24386187F1AC8EFB6
-8BC7317DA6544AD70B265FDD5D831D093058C0EA45985D21BADD8B4C574D0890
-AC0A3A297E67E93608D725F7259EB25131B9035D78B34AD91E5D8554A680E585
-7E0A5F0D0429B7BB9A3F44F90670FDA666E9D95AA12C0248F8FEC2FD1C3809BB
-81119F5D000C5D36C0EC4CF6CA870663D0DDB3C183FACB174930885DC5C36318
-34B91CA7299EE48FEB56DD90344D1415F7B18B2CF1AAB6345501E07D614D4735
-A4179F41557155F426663D4F5E2924C1977C6322E8B70142C258D5EAB6394DBB
-EABD625FDDAB289B6B7B2BCE797FBC07B27A767F8FC1FA480702512BBED3630E
-274260E4EE572785D1BC388F3027CAA6117652D2E09B2E809C224EDCF42F4539
-0D87CB471DFDE571BAC8AFE090862DA27B1858B1CCE3CB19ABD06DFCAE985887
-ED3D8767752A4FB3D89277DC2E6244A21EEBB7D4A33312C652A456FB75C3F341
-E57A8B9D96D60D962F152C0CD1548962BBB2E2996BEBD3EEC9B493077FBC633F
-B30EA5CCC5B6587ED4751E48783C996C5CBEAC5FBD7B6E6CFFB056C316C23042
-5A14EB836B430342BA073C1345CC163F4DD6A328D483559379B0FD6161882E68
-83C1A757E542CC86688947AF910FCDC2D8E9B7A8BE4909988898451B395089E2
-E4EE0F156B4F41494D097259534F43BF558B9C37224900E62DA5211FBADCBD54
-F0D78045E8AB3A7FFD84C6F82F876B77BDA2614790316D030DECC31D2B53AAEF
-23551A3998E3BC7C5DC2E6156C8C3B2020A41A08A71873D23E90350B9E668CA4
-65169F9C2870E01DE0804D5542B6D9B67E44477F8DDEA36D778497535EDFE824
-E4073D48B1CB45F752CDB5CBFA4CB1B25A377A3F64269D8D03FB58510C90A9AD
-45A14A708066A0997628998DD01C7436FB4F4A53E15405CE8B52213ABE2805E8
-8AF014F2EE142D90E2702DC46E70C2777B528B8B39F68478BE86BE53640389F6
-E0D143C89A178E18A12D8837A6E6300E2808272EC8EDAF1ABBF025BCA7E6487D
-E0A3CF69ACFF5826E99FA50BE33B3BE6113BE1F964D56A5CF80CF51DC16ED1F3
-DE85BB09753A1F049A630AA850B0AD95820CF560F86EAC10AA77FA1A93137A2B
-97D94889274048A2BF9CC772E8F3B376D3A18A7B33DF1C3FD7EB44E3F5485F05
-E8C945D3883456457E0B139A210E554AE28917C66A60683C37CDB95573C376BF
-09F0F9E8F2FF1A74043061355A26BBA7F7FAD18D068FAD5EF3776C08AE89D257
-FCE5D123259789213BBB773D25B0A171177E3AB897D124F30CBE96089B5BFADB
-5D0E7835F90BDF11E669E896B0746DFD5B6DDDFE48CB73902B39D657154D49FE
-331A94EFB68005FE13FC0CF51E775C93DA95DDEB5D65CD912FDE2785E17D7156
-D2E5F8A9F1069A901EA2E666FBB4E69371EAD5B206D89DC64EBA14F74BEFC5C0
-AA3189FCACD8AABBC65811AABD4736B7102C6557552C874487078EAF2DC5223D
-2C85F315A25C733C5238B60693A9911B6822EAD45B8000B1635A4B878C3B88C9
-765EB7DCBFF9BCB76246AA6C974A617DF95810DBC0D5C56BE511BEEB08372222
-955C07DC4DE89D64DF203C65294683E3401442855DE6CE859725486969F875FD
-035A3036DDADBA6D2CC1C1CEF2072E34705416857EB04BD77027197C9BD804CA
-D4E76BC29B62182B9A71A7F7020222A62414348BA9BCCFB341BA9205F962497B
-972A1681BDFE446CCA7C27C6DCDC18886B80936A7927DD5E226C77CA7115A4D4
-533F973AE31AF3F35916F7F5A0C20201E5B3F0FF1BAF7EE2BABA1234A678A290
-806F2005FF02570D4AC19A0498EFCDEEA83FA0101D48AA9306AC72294A91FD90
-520A0B6B1168482BA912C73C758659A930963AF7CA39135597A70DA2E6E809A4
-96B5E30830626E7AB2E66EA0B99B99D9200A3DCADA848AC1D3687D11853EB0A5
-080142D1E079E01673BEF9CC2F7CEE0B5CDA2D340BD5166FF8A857A49C1714DF
-19B0B0493621E68686096E0DEF31DA0B1D3F54FA67BF219E8A4E21A64F3E9608
-E320E2F2CD50F29179C2DDDF7853B552E228711344F9086300204BF14881B596
-9FF6FD04DB6A689062D816EEFFBDFE58DDDDF91CAD961074570B991795565A80
-BC64909BD9B9CCC6A53DC2DDF557AB1CA36A859BD43F8BA0F0E1EBE7723DDC03
-D1AA08388A698616DF90F698FC268C2D33CDB889001B0DBE019A0B6868DD39C5
-A561501F4B59B65129423DDF5E291451A60EB9B91A7D1D84F9EC5A9E99040ECC
-101B315F829500709C69ADE04CB0F5E686352B9818C440A04D0EEE3617F1845C
-4C63AD4A648942114ECFA4675B58B0A39951B04F11DBEDF797FED12B0C414C23
-B2D0E17A8F89DABEE8AB94AC2E97F8433D86C10FB56E527A1B7187414AAE6001
-556567E9CCC61D95250AC723234221D787CD986525B1557676C5F0A2D155B7B7
-160D8D6ACC76E2AD2CF22043F127A5063EF272960B564CC7B5B4487C19C31CCC
-4E1EA55AFE87F701E25CBFFC84F4C7C2C9877A0E069AD4E7FCA96EB576368401
-843BFECEC961A5F63E2F26AFA1FCD55187E2F173514ED0113398158FDE82C8DD
-793DFA23B1556F99BC5492996C673306F406DA945961E7C6C1B0CE8DA9677998
-44882D0C88BF5CD1C6065D6EC2958441186A6230358EB99CC1C1FD96F9318D4E
-2FBACF83FE3DC8989A46C7E07E4534BA1A1AC4E62CA6CBA9746171CFA81AF392
-690E2A6A52218DE19FE5C08B9BEFD3D48B788F3D591F66B28949B9E3FF9B2A89
-D3F403DD89A2554B0660FF2F56D49C324395AE8B402CB3E1B81950C9C53C274E
-C49A4D074A82ED63E81241D793F30A39D15DD9A612D152BA842A5745B890C42E
-766E89D3802A46A82D62EFA630FE0F35DE67B65892F91BC466940ED15F589F88
-6990261FF0178CD7B2EEA1DD374BF42D43612AB4F15EB0988D5DFD58BE3EBCA5
-66179A068C1E7B0286F79918CF0034BAE713B7EC42A724E481C1A4BFD71BE8D7
-223C5F20ADA5CE211E005E49E4DE2B31D7BB2FF6CC9107E0AB8C70936D403007
-F61C5794BAC4B7F1C33CBBDCBC078B4716BF6246CFF30762D4319B7A8914E08C
-28C05B410DD5E35B2C9F881F90B1D7889D205309D8B81F918665094A605DDF2B
-E96D451984EAB8C88552E81CCD17DE242ADE18E1A170CFDD0A1D67434393C555
-BFC6F0A26866BE0D581495710B1213C1E5B218A2670E6030A2E0A52A9E67A766
-5C9F62A7C3020C39A4BFD38B81844AFFBF9AF2E8E62359541AD724E116DAEECA
-3A6B0F6BB1BEE6B12D35EABF7D2AB2204A6C7A91EB8D0260889B4A6F8B55A861
-7D56C694A7D7BEC30CC8C4EFA55AB8EEF385B55BBA251BA8F24C0E50909DC7A0
-4A77CBA1AB4D5EE517418B0B8CD2EDD5646012D4791A214F8990AC55B522B52C
-36FD980F2FFE86B34D2AE3D59CC45C5ED4E7EDE8F13DA2F88F9BCC3438422BE7
-4E9909B265CAE15916F77ECD3BE1649B67F4C7F4C6A636022B5809AC59C9CE22
-F4BA7906E2ACDF5820715B05715A6700ABB935D5A8811E0E5639EAABA27685B3
-7D6AFA549A5E8B2F90D0C1DF2500D604A78512EE93B28FF939CE642BE022720A
-8DDB14073B0C005E8923A2D140515E1FA724F40B35744B9A1760C1C786DF1275
-86E66ECA994F5213A39151954A648F8D506D18F14839838055608E56CBF5F36F
-C676EF076F71C8B91793933B956C4615125665F673148C0CB32161D50FCC8219
-620CADD9CF5344A9FBB4B273D481A2FAE8203AD727315D72C6939D05CCBB4C7D
-D558617CDA26AF49CFBE57A51E04D9CE2791F7CA93B741569FA2B3A2D398088A
-83A228941402CF0874033764CE0521C719F73AED9C04B24141A7EEE45D168738
-E0BF2219D4B54D4320777C31916AF66605DCBA057D63676B02FE31CF4F7C8854
-2F96FD2C3E64CB9E2066A307F1B453A02E49EAD0F61C3D5C7FFB3162C4758047
-05175EE543ED6AD163EFD3FC47FD64941006A57F614AAA83B6EF502DC0F20868
-C3A512622347C7F990E1ABD98252413323BCAB1110AA3EE6FEA3FD5B43349D29
-F8EB69D1DF9DC510C20D343BF8A4309CBD0683A9EBE5DF9ED94C72A607BB4F3E
-4D59C8163ED08AC6132ED78C0C4664D8604AC64B721957D678F6DD65F96CEF28
-26B760421B3410A975B4A6013C049BE5CC57D308D2E08986D923E17995010D15
-FC4878D48E1CFB9597B0A1571068371D5D90094ED993505E299DF28579E639D9
-CA1A29E00EC9570F7A90104F947F9264B61CBB9474E733851E8C4901E81A82DB
-4BB1CEEAFB69C7C316656048EC4BB301DB70422F32D22852BFEC9EDADED06684
-C53A45206E50F4C41231CA3A40B72FD34DE87031384B139F4BB3795DF3D7B3B1
-C7054ABFF5355DFB450E04C44BF540B1611ED54AAB6CAECA18BB041239DDC582
-09B79CFDCE1E7628EB1F0E9F5B191937DE46DAB8A39E55E9677CE4B9A74DF5CA
-5F8697405C701DC49DEF7CBC9FD4FB8567CEBD0B50CA381DDEE6775922049F99
-B830418E4F58B4B14B675903DDE0F8B471733E99A6D3CE59D8AE86948CC2F6AF
-7F5EF218FC6EE8FF566EF68EE678CD23161D3BA274C5A4361A1F4D2A6F187FD5
-617757F57762C994911E73ED175C7861FCC3E9A90435B06617C3E20E6C0CEFA3
-26B6E0657C517DEE65F6E2623FCD635C9E2115AAC1F7AE4855950C8F304657C2
-9A91D78735DD8B3E186645C95FDD54BA42CDC50CA38F2E43A713F8F8667C971E
-314626DC049B35A4D0413693743758DB3DA78906E860B9C73E4AE913BB4C106C
-2BCEE6A2E4EF3D64F301B0955A7AB3F46E5208F6729ABD8AD606B1D6BD995E15
-620C9ABC897FF77FD40823CA164A4BC57E92AF62711479C15499CE779BF19C53
-B76F3CA8883B24B065145B1B085BC41D54EFF591039FFC95DF40B7E5D2006BF8
-3769D9CD5A7298F927041C782FFE6E1D498F2DCAE069808BBD6297A8D28C1D5C
-283F3B974F43B3E42BBFDDCBAE85CCA7DD1B71F0E2A7EAA9D6CE1ED5371DFAB8
-4463D3CA11C92C78EEC2F7DAF668E3434EBE32F468E00BB571DEF193BEE7BDBB
-3998205296F7FD37FB86455D98B5934C84D6DF1CD4B340A0F4A4D3DD62CE6FE7
-F49B761E712A389CEF6845902E915E1290556B20FC26503973CB26AD670EA9CA
-3DC725E2614BF32ED9F89A20645B3A98F3B1731229AF580F27B574D55929DC38
-C2CAC9EAC582FA2E6D77E566EDD090A737304CEAC48A170CA7D6A167079F4B0A
-CB70D93C9F2E10D437D604C7F4384CAD4C0B5C73A5863F73BFA8DAF7EE93A88A
-1E213163053617F8F1E940956606F23BC8E3811F6D2494C435D8343F0BD340D8
-09503585309C01A20EDD20FFFC0DC44172444C3F449213D5D91CC5BE01647BA9
-BB43344F6A5B51E315DF81A2C5F15B0B9A9140921966FD2798839BC0C2B435F1
-9F53927A5CAD86D0ED5882C999B844B800F541E4D121D424F3F82918E32A0E42
-E7AD6D0D9F6B36DF04CB46
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 14 /ffi put
-dup 16 /dotlessi put
-dup 18 /grave put
-dup 19 /acute put
-dup 27 /oe put
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 50 /two put
-dup 57 /nine put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 74 /J put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 88 /X put
-dup 90 /Z put
-dup 92 /quotedblleft put
-dup 94 /circumflex put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
-044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
-A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
-23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
-19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
-1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
-8BF2773F290801174DF1E106976E76D30DD26B2EAE14AEB46D9A6D5AE5DF24A8
-B1E70BF48388EB19A7C8B29C32060E48BD7F76511BDBCE65E842AC959C5046A1
-6E86BE1D71E78FA3D60420BDDE4B7AB23451F5A87CE169C24F59690D2FD61D9C
-81E29D0D3038876B09C9D5EF38006216080B644EEF27E9180DD485331A7F1C68
-2C324524CF7004B8EC76AB44560990C477AD1D11313545C7FEF3229FD8E1FB81
-C0CB794C23C0492563BF15952C1731D2613402854B0F0F69167C361E716AD247
-9A1599DB7CC277C2B15C4A8E7BC15BBF09B9FEC12962ACA3A21689E52D2F5D86
-14E14A8BA91C2502D8FBC950C4E9EE94406CC23EEF8656A3A19D820BA6A0CBD2
-04862E9B4F5C07062AD949972F8D5EF41C6B2386F26387FB0AD1D38345FCBD22
-D893B36A46C1BF3A2E79ED3864918BE7E859942A81D782517C61BCB8B71C22E3
-C83771B414724B5F477B2E7D2A4A3B31A7ED7D5CBEE58DC728E3912E8BF5D43E
-426CB9B73743CC9EC1C01E4D16B76D7D9D03EAB503168D6E8ECCE7C8264C16FA
-1CDDEE973D998C8D288BBB744E9A173CD45A9137FBC7428BEC36B98BA93A795A
-5B0363C503A49AE6FC8B77A7552E9486FD3885A69DD3DEEF00BA80712ED3AC18
-9C2AFD2ED50D78082BDB7EF77A828569EBD177ED828131936E925A60892F8972
-4216E46BEBC69A036BC915EAFBDDE504597BEE45A71B1F3EF8A725E9F8E12724
-7DAAD1B0F6F4CAFD0F9B7D6331490DE84B995192A4A74052D9D77FB87863251A
-E735E9146686F8B94AFC8E844D93FE36C9B2A7F9759AAEB94C00C174FE87A68B
-AF6304021C16F70D6DE0AC4D41B061493F1541E9660B85CC9D144BF7CC74C600
-BC3B4852D3EF21C96272DB7951CD7C99E089A12B950A64ACCD27E2A60CFFCA6C
-9A1C2FE056038CFFE667E4ED31A009DCC1897A82B113351866778927659DE5F0
-34A5A0C423EC636B8AA500F111EE3582B44E84422C745EFDF79A5567CD08FD30
-A7C3D4F4FDAA6C0443ECD80C37A6B8C79DC8777BEE2A29D9A8F886C32D9C1A27
-E36A1E1679D9397499222A00057B19DA30FA8D467AF6E39C3B144D465EBDE9D2
-A29B9D1004347E6B3ADB1988705E880F893733C09C3872092D4F57ABD8799AE3
-D93B799874C6C244E29F265101E561DA0E1A55CCA8FE7CCF33853BC63DA0BB30
-7D10C87A53F259CC17B04B24702C7011352ED6708BA178E3EFD64B9771EBBF29
-858F659D242316B0D8235FCFD5753482C30273258D25D76795C043962D6277FC
-5F11266D677AEB3FEF1C78CFCE463D8F5754DEF529F858FB63BB189AF6AC5DFD
-8CDA9EA75BCE010CC6442F7C3A2A4E82445C09F945099242F9150BF0FF432F5E
-0FBA3531493740A37ACFD827D615B51E8B31C2D04C1BADF631BCD0D88C69C3ED
-522FADE93F486BFCA28E7784C4F18D5C0810B61F1623EFC75A01A2D4CC5A6EEE
-4F1833AE27D66790747A55B544443A5A4F760D4D32658226B02AB823B50F0C27
-5AB96B1EBAB4BD292FB398E68E347D08BF931684A4B040F4080F6029ECCFD3E4
-1634F11963FB3696D7CE5BD792719D225DAD34C0FEFD258005B6D17E7AB2A3F1
-2CE99485B7EA798A0A4C82F4C62682E8DD71A8AE2DC06215E2FCAE9FCD0299ED
-71D9E2076938618EB24DDD70ABBEFE881F5C7E53A35F53E14D3A0A384F5C1887
-F3271B35DF22D585A6DBC6FD9EC887FED3FEE171B9D26D7A6D5F2D2E95B614D0
-A3A183FD19976EE569CA71BB04F0EE0B4004DD920F0E06E5EEFD7C534DC26F93
-5D089A83940C5CA041311B0C260BBDC4E507FB1EAE6E6611D92368581EEC40C6
-25456404194F3B39CCBC7B598690A63160D48E65DCEB2DBCC71838A43FE3E706
-866189E14D38E1F3F8665FD22DBA0C6632C39FE499645BEB569C27A55656EC16
-343CF42D90F6075FFCECE177E5D8AAA1AEBE69C54A5E6EE9FD63D163AB088835
-07C41D1B87E3A69D94AC3EA01203A90869FB78181265CD6FEFF5104A715B304F
-17BB57519044AF0ED113C35ED50EC5D1DDC9F64C49C54F5BE09DB5A55A15C2B8
-530CCDA044B3348279ACE2DB78B933F785D630DC5A50B5FD8B59F66CDCD5F144
-57E006AAD9C8E46F8449FE10A4FAD67399FEAD2BF4C84786999A0A202E6DE102
-4DE5A1C1AA193CCE7DDED11E061448729C2DFD77779D6137B8F16CBA1F542CAB
-DEF8D0F43E978C091F81C3E1880760E0DF6A803AD22FB18FAC19FFFCA27545C1
-A95CE57F49DC14C45042D668F486AFB17D2BC068ED6DEE387D8C1D79F6B604E1
-6B93DFFB4F740FBB246A77A20B259E0CAD2A041E49F5E8B7621BD7949C639A83
-2E22360FF4568EED8D7E5878F0ECEAD16D0C0FCEF5C60182067F65E780A85C8D
-13024A83741CEF3A0A5C7EC9AF17CC3B6A7E8E9F5CE1D9030D2B8A149870F5AE
-A6F8837E098623F4DEAFC72ABA66C2A8C451850FC4A445F7F9A5180F3A507B76
-1864229D203C2BC502FF4FAA942280C7A41AB3DCD6D6F17BC8BEE1B2778A3EDB
-7B774D000264DCE3CB4C0578637E1E5A73AFA25A514757B1E78A25B53F3A0B72
-F1C46520887103EFEEA0C8B74E03E0B2ADCF05060649B9C4AC1A38584D99482F
-3829548F3E8F8C84ABFF1FEBE6724E2B993B663B2611FDB5CEA8DB995C4841F2
-4370304BEA5FF2C7E1924DFE092F0962E2C21699BB0743B12714E9224F9AA72F
-EBB381ABCF5FCCEB0ECBFE24CFE859CE16A37A97843153B282E9EC4A7981512E
-9F6297E022C86BB50AB022EABFB2EDACB1768A07A6D6F93A37184AFAF9895B42
-F57FBB2BC89CD2CE89401AE756BEF39C9EABF986F68228A1FA92397B2AD65A9B
-4A9620866FB7935F2AFB353AAC7BD2212F03BF3CD7A675B97FD8F2E76D9AD388
-77401035D70C39FEA2D06096EC8B91B7105EB70683D6F086B4FF1B9CDD2B9ACF
-A69E0A056845E0634240DC2EAC13C086461954A90713F71FAA11F764137B9D20
-EA17D85B0B8690FB5DB9ED6DE8A59B857120401A43FF7C681B196DC34FE6DF80
-ADFF9F8044B5A73A46FD3730BDA083410904202ACFAF9B7AC9D6E1FEA68642DC
-89A8C69B8007693EA58059139C89D82376838FF3666D715F119DCCE6125BC239
-132B8F8B1910987E0431B226C86A3E75184DEF8F81D6AC4C6965CB7F609F24BB
-ACD268891727A67844B3DA9E65040DD4E6CE9EBEE720C70D419046A066A8A241
-FC17DD94FD4971A21D4B1ED809AE4E5BDF0CD2FD2C8D0E2B09162CB222B1A8F7
-E3384E2CB9B8ACD63763B11EE9FC647D74CD76F27D396285C319EC7BB85B7771
-E9984F7ABF4C7F84D1D3C458468BC86810370B8160C19EF5CECDD8B37A374ACB
-8C933C06270F2BCFCC8BC87246B7B0D83A85ECE239A435E7A46AC9E3A938A558
-603E8183620B7AED5B367F153F77F2741C21DE1C931FBB736D558191F7708DC7
-F5B5BC9291E9E283B6239E3D83B7B880DB26BD8375CD85FBB6C68800F56E65DB
-4E5D7E3DB87086C516188127FA6C9D9C874FD38DC3595CB55FFCF7A21D21E09A
-C0B8BBDDBD0412CB3C74FE85135E92AD2A74D7AFE61081BE8417446ECBB23574
-47F6A7F98BB95FED5ED34CBB36FA755A9BBE6EA87413A7F15CD0AB74E1C28731
-286FB50A23E012E26CA483CEE2835968CC6CAF6586C854E8F7786890763ABE99
-2822C1EE910AE51B0A69F39899406E993766034ABEDB8D955282B84D7194E204
-6410401868B4391890655E0B68108F8A714F41D9B0DA6CAF880E63EB84164E36
-78EAE9E37185D70D3FE3EF8600E351D9D55598327FB15BC01E49689147D5D0B8
-DF3B15523463C24329D251AB7F8B1322C6A426AFC978AA27FD1C4C2C3C0432FD
-173ED14F342C657F0A9165D09B33CB22BF9B10D7AD6FF075E0A7D00575CA6ACA
-4FC24DD249B472B0F7D812F37CD3311C63FF0ED922C287EBE368AAFC6289ECE6
-E52A0F23CC722EA14E492E475D9EAD2897BE707A3213F6442AE3974A33C69A1B
-DF8578075D47C61424B72E873752B6DB765A534007417560C8690CA7126748D5
-024FB3E9132E26267F4BEFE045B0A50265C3A6ADC2D9AC8A36C58E04C7257CA7
-82B3025A1D7D69B7833208BCC30B47F7B9DB1C15F8AFDCCC69CB42949530E38E
-8B98A151AA6BEAB2C9380560BDC236E660B9DD4B2C1A486E0E0D54039C9B7E99
-7EFF71AC4E07A863D36A09374AA63B12B671F334C32A0099EFEB2DE50697F5E4
-C2FB06A421D633CB7531826DE3FC00D9C051992C005A45B9EB4F0003EE294875
-B6EC2143C49D07E51AC0BF62CDCD56A94445116BBC872C61DE454596B0E23263
-4294F72B7AC189A3F6C9F1B726A8F422F4114D8835019867791531ED34767605
-305DB7CD7ABE8290DCBDF9C219F9EB6EF7EFECFAC3FF3B5DDA13B91D0B3CEE3E
-FE1E85E6028542067D149F727BE995B1028D451D8DF9BA109F5A01887DF4F0AE
-B786B4CB6F37AA98884083D055051D9371638591C3AC62BCCC474326986A21D0
-711D1642D457A30E49038645E6BF5ACB3B46D0A0E60FF2BCA7088ACE271E7376
-E2CC365A3180DA33977DBC15FB5C0AEEE6877ED6020267F65EFCA736EC2D6E6E
-7C57BEF4DEF28B5FCD8A33F5E634F421297006149536ADF669F9FAE0465697CE
-3B9B67A0651D21794FFFD966FD833BDE89DBFAB72465DFCDAC76038AB62E6599
-7310F1492CC4E3136AB7A06E6130690FAF1168EDB7123DABFC8180E7ACB21D1E
-A68AB0CC8765F61E087C11272DD62B1181530A819FCC15AA8ADB82E7B60C7F9E
-5D3C7EF78A61A0BBA9FE436211C4273976B53297ADA19E6B34E185F4E24C4090
-71AE1F9515C3D032CCD29EC1411780D4C90AEB08C67BCE1DCC6D45A6505ADA9A
-68EB5CB00173B5A6CF5B45856560798A9C6EDC1F43064FD6C54FECC27333B588
-9A35E1FEF53933AED516921E768FCE1C25DF66F45CC3854C9D82D4AAAAE9F1FC
-D5A0684596C00E4B48F40FD246CB91DA53A99E96BF7D72BE7E8A1F80777449D1
-2AF02ECB23EC42ACB06EF6E3F16FDECB75101CFE4C1C7EE92E942F4C6602A98E
-BC4FCB57DBB6E5F7DA3BC5501F371B6014187833547EB0D0C57AC9AAA7E27355
-CD3525C516D5E279E509BA54726DD9A3F7176552F808F6D3E73A484872E3135A
-BF56934C6AEC8008CD97EF53893871F0F8647677F33D586BF675D723A96BD6B0
-A0EFB8C5D93C9EF29509BE2398BFF3094F639E18CF7D27DA441DB5664D6B5E60
-BE9FADD4FAC3914B88871758CBCCBB38E8C4E72A4B53744A22D9894BCABB0144
-667F9E22DBAAD7934394469626CCD133AC2800882449FE082BDE41CDCDD4AC44
-7E20F083020EB46E59D9DBC744A4C7C11D5286C640DF888BE17A15E11C603435
-247B8D3892A888D88AEC22776E94861B98277FAC0F147CB0DC13CC7ED2E92C43
-CF845A58FEB59A570DA559C2A6084B1A44E2E6AE6BBA8A23512CB6AEBFA8A8A4
-5E9A5DE1BA9F175B77138469A90503D61DB62C2EBFB3B3E2D6522FF4F28B371D
-9E4A18C6195F3EC4FBFE0C9C1F1FF37FF0E1F8FC58EB7A58DBBEC681973EF716
-44ACB1C9DE4D2E82548A149E3D829DD3D5652F8A2AFD10A75DF0EB3FE4187063
-C88C7CFC0B3456AE1DBFF4D448FE2CBD205EEE3B727C76D2C7DED8926CCC1D40
-B566DF075326821926D92FF7B9F31B63F4DBE1A59B246E11FD06F0D2CA106895
-89F3259D6A9CC4611425ED3F494A3314E9A8FEDB74681B7F8E50FC2E04826A59
-9D1F6C6ECADF0B237872BE71F13D001E56CDE77D2DC8AEDD4471F56CFA9BC03B
-00B943B3C5D65B9F2FB053AC9A8930F46702B466C7D30AA7602FE1646D7EB045
-4CE04C8C9A68E9209812CAC5274DA6B5BA9431773AFE05B16AD6F07598337E93
-ED5B324AB15FC9BC52357B16A988C2D1447500534EB8A44CF6A03EB9CB247239
-A5C942951721E762A014D340858BDC57D1EAC94CB32881740C23995BFA3D91CC
-03CC1DD258A1097A29B0D0DD534D38B4BA0FB7B364BB9CDEE55569833B8900B1
-15F5B6B08FBD59C9DA5FC3E6C6CB7EA0486DB1EAF8C10177881AF188AE360C0F
-84F439766F7334A1F71F43FFEE23D0D7A545A426A95402D4FAD95354C6F79E9C
-688756C872C539E3FD53D92F12FAAC12569BAE2D75741D8FE2BAE684C61C0465
-48EA4A909FFE97239007815CC1976424C06A9D0CCA6CEE35574506604DD41A05
-3D84872C8F4D6C8653F2E3C1F90D66896EF1EDBBB78FF3FE86F92829BBC6FAA1
-6E327EBA28D0C623EF62928696D810CBFA72E12BA47AF369301489C4D7D70173
-4A71D089B71577E5338C3BCF637A1E262B187152CB5BA800E4B135690FAAF1AE
-E9464FCCEB38B1FDDCDE15060F51881EED476CD29FC0348A14EB5C48CED2D412
-B1F332B6BFE818D276C4D86E879B7B3B24FC3BA11FC22A44648B84DD304FA21C
-5A8A4CF56D1A4676A2C6C053E136A186D358DF383B9683234BA3CE3B4F2DFD58
-E78EA633572C9F03959E2B43BFA210E500B7178C23DC1E1FE9C10A693A79A29D
-E05DB8FDB7ADE08F2CE99E7B7A5A22C5EBA78D061ADC32122622B618AD22002F
-A04CC36F7D4AAAAFED1EC490CB1772D7B10E2E67A51FA830584DBE97BC0F2E20
-986B18B80DAEBEF08F5D145D8AC82AFBD8AEA7543E2FFC7623BF96D0AB99E1B5
-95245616F416A23D13B28361AB00753BA62C0609FC8FAEF12A4F5ADF11F58CE0
-C13CB24D3FB26E2D1DFF42E41BEDB3F0AB6F6970A76AB635B962C6B91D062D66
-15B1376E0E327EB4AB469A0663C86BED1C24607FE4CE5D6E09D6214B15628CB3
-BDE6A6BDF80206A25A5B07D1B55116C8858CD6E06AB272FA5104A3D852F04B2F
-D1A57F428859533DE8E5B7D61E53ECC5B85A807A680280A393CE9AF335A7BD0A
-C0568444439B3A0558D5F94FFF4DF4644F8B1FC6397D7F8A656A61394B631AF2
-77D43C8D06CB9CB020802578A1BF512353E632648FEA9400DD75E6803248D748
-7C84DE95977E95512723219029C03964441B2B96256A5B2B386A034A2D2B6586
-F0B73A5049FD96D5A54DA035F72FCE3F722584AF90452DD3B57DF93978A29FAE
-07CCE8872FD1C1F6B60886713FAC54D7493DC4391773C6B4F93F4AB4AFAD28FB
-2798AB8258448819FE0F3214C28227E080C7379F3B1F307B726EEAD0324790BA
-EE5A942DDE3E672DDCE377E0CC813A49E59465A91890E4CC6263A346B491A824
-C0355F1C2CFDB4724CABA263DA2DF1D9CD67779BA725C0FE7EFA2962541AC1AD
-CF100A8C0DBA44D54996387A7003DF1E72C32085A6F5EFC231EE1197F1F585EF
-F06BF997B2E11A2024F5628BE445B7F422697F27E267C8ED1CAB42F65BC88B7E
-6ED0C8D72C445691FBBC02D15455E9905C54B90646D3C2D3B741EBE943E31CCF
-63315D8FD762DDA3362C8CB30406E38FB38144E026E353C36B0459C65E66B79C
-AB289755A9BB7588E4C30ED78AA5EDAEEF32A81D040A60BB612E75FE23DDCBB5
-CD7F63FB545A0DBE2C9284CF11C34CC05C0291CDD3B94F2313A209A6E9778194
-7D20D65D69CCA1291694143193BF1D9E54FE17C49AAF74B94A321F2B33B3D38E
-DC8B6C10AF802C7950FFF1279728BA0E65EAABE0590EC9A41C68416A4450CEC5
-344E7C920E35BD047E87B27B019BD08550083D9ADFD3692FBFA17CDE56F7383B
-BC8FA281C6B5BDBF7F8515E60C4849E568335D06BF31025BD27D5A0747C85424
-3FFABCD15B690BD43FFAF11BF4ED7DACD462F36D50CE750399EA7AF7EB833D35
-0849EBA735755A0580DAE1FA3B8266FD53E313A9174CB4A1946013F812F63EAA
-980F4CF357F8BEAB360CE726E19D0EA211E21B7579453156E339AD3D2C251038
-57621F427D0B859BC44E2803256C5B5234DC3DB6D49DCA330AB7D71B23F05E2C
-BA6232C747B2654974E5C1A880E406DE54B95253AB8D7D2797C528C72FE124DD
-C5AABEB7E4C590C37D87D3DE9B1A0AF2B0E6305020295273E491C980CE55126E
-EC0A95B374A7308FDC9512CE9FE37C3774958EC2FDF9D77C21164FB19ED8D8C4
-B059093B6117B84502447975C4FFEF6B807EAA1252B84CFDFA006D97DE63960C
-4C3C08FF13F4B2D89AA214B170FCCFE509859C9288FF5802DA62D635AD28D72B
-2ED94065B7DBCC04677BADD74AF75CE546FB6CD31F44D7F4CC551571FF7B8A57
-873199143E332CCFBE78155F8481C6F13F973D611178766E1AFBC062C948327E
-7A7C7BBF4344960610D80EB280C58766E57928A35530F1401799A1FC18B09EEE
-24F2D584C779509D9B0A8566902158F8F0B9938951479277BE50C213E84D5DED
-FDB0FE395C41B51E3138F21BA90CFD8E68CD5364DF8FE270544D9650971689A4
-85419DDB9137CB3C1E39EBECEBE48F72EF1FD9E234CF31A9D9A20DACD5BAD570
-951EEDFF24ECA8A2D8ABCE3AED7DFA164DB03E964C964EEB02F699ACFF7DE100
-6287DA70A8D7A0E132AD534B693AC4E72F4845582A1A62FEBA4932F491A07C74
-63DD166FB3FE239B5A960DEB87EE0A2A9D542B6C1CD6F577FD573C1774A726FB
-FCF35A4A9A85F515D07454F43DB197EF8EBDC99BE2284324926A2481C770CEFE
-9408DACC976B24C46997B43F486A85FE5858A45D4C0764EE421021F5894586AF
-F04F827A024C043AD3662399D7B798972767E4300BE2018E948C6F7BE1F584A8
-30766A63B84F26CB7C1C1DFCBA6CD67654D7321DDC18C2DBFE9775E1E42A7C74
-6062387972E2C516D5C149FB94AE548CB6422B6D7ED1D68E5A972C37B974A65C
-18775FD907ED6B4F4CF83368785AA5E9F7BFFEC94C51A6754589B16DD61987D7
-C571AF11E56B7DB027F10A46110DDA458455B97CDD391E06D17D886E316401CD
-62D8E386EB0237426546FD64979566480D822D9180EDBF1FBDC1144E85ECA3C1
-954C6F95C78FC9CC567FE82FE08809C5A566D34F6DB51A83C998BCE23BA856E5
-38ABB64E22D8DC48F1E1C37C9AAE9271579E42C8B271D8B70C0600B2E660917A
-740A24C5CFFF44F5E750162F365EBD2A29C0AE993CEA7FDFDD78AA39ED3C965B
-B041691A4A57EB41622C8F2982C3C17D7FA9DFFBFCD296CF936BDB6E2904510C
-908FF6195971455E12298F861BDBD2ECE6D5D47E008CDA769ED08800B7E47CFB
-1F0767B2BDE7D437AA6938C3FA18C07EED739AD2A2EA28B4E597DD9F2C1EAD48
-7CC0661ABFCDE974A717145628406973EC6459F83335E0852982F390A0139495
-55599C104EF0F1339D25984A348982957B9267D81C446B5E09E56C70429AB895
-D0BF1A2734C0899D473418AA47D60E778980B69300B6DFF51A26FED4AA00D148
-37AC24F509CC5FACD0EAE0572E7CED539823FC1599FA6AD0FA7FAB6B0C4B1B94
-B10632EAAD840E7CEF7A35545AB6DB81F04959EE4A1DFD2996B47CF193139BB2
-C1CB75B8BD817256C67B7B8B8D6F41B42A385A2E660C5A41EC479158730C98AC
-EAC2E410226D59A948D219556CF98B755066BFF040E6A6D2286174CD87C116C9
-646F1CAF525C4392874EAD4DF0415E9B4638E6EC126F2D856447B142269FA169
-5D7C4222C422FC4728C7A05F88D0EAE70150B49731CCE7A85A81557567DC0FDC
-187D0E87739CB93AA581C3AD024ECD6E12BC2A3344665F7E596DFDE6FFFF04F1
-58CB836544FC7495A8DBC8BBBD3EA02E1A1A14D22698E9BB1AB17D43F1E33642
-5FF511C6C8A84814619C482AC70F5262B4297ADC53FEA762E58D1BF7E3515A25
-1C0316A26FA9141FB4907454E619A4D3B89E7490CF91E05C42C22CF7DAA45103
-885A3656C5C1170886F789A7237A3FF0981DB0512244A81843C755D3E81D0C31
-C79E914FD17226C7A7CB98DD5B899927FA012141DF2ACA0F5CFA9C4038CE5493
-F533DCB65E6A49AB04181566D30DA4CFD9A1DD854530BEC561A439F6B1354B66
-67CCFF1644E172CA43D6349D90A0979579B0D3DB32D9A08C0A919456922F4BFC
-CD0A493136014F530B9D8582A1EE24B0906C4D2287E897B32DD9D510009691D4
-E93A68CDA75DE51DFC4EB8BD55045E7583C91178DEE65AFD00A114A09F43A16C
-5901094FFA27F00246842E76BA2B33163172514346F4520733F0F343358DCF68
-29B5A3820C637FC639A028C80F961C302F527A2A00A5DAEFEF204832EF6C1E70
-2550F1EC5B5AF3A05826FE50656922A7AF604FB997BE8C622F0671A58AA1E698
-6DBBFF24C774D5BCC98DD2436105AE4DA658EC3AA377F905D54627D41EEAD912
-FD7E28A719B09A4BE9DBD75C065131186E1D64FBCAA4C8B70DCF6C4DB22D2EB2
-09A392658C3A23AF99A2DBB4A623E958E0F597697215A048F278241D497CC448
-F5193459E1AA66309AD7CA0897F6909037016BC3976E24443D09AA9511AF9B7E
-66BA33028C53EDB2003C11720DA394BBCA6318C13E1C11F10B7A9A52AF7A05D0
-D11844405EE6F1216FABEF4DE0845759864676DEDD8CDD81A08EFE4B8267675D
-4B971016C305D7AD7E2C2CB15E81AD0709F4D57BB534331627459156A9E79FE0
-E51169F4B0D977CDBC81139C18DC709AFCFF255BB05AAAEA7D539CF0E9E2B60F
-10E0C96116E566840FC99DB00CF7EEAE0577371861809784F5E810E5B4501383
-F4B04E3F92956DDDEA43FF563DF653899729A52A4E7133D2EB55FDE74C72745B
-667DA8CF4DDE4E15E0540A31C08D00B8F5F711330C289C5E741AB6D72313272B
-3053B23B3F78ABB23B8F82E81179A648E8676BDE7041D9EFEB6B2D4B1C5B851A
-A08F9BAEE095D2CB1992F8C9667688FB76489B60C4D3C94927779357E51DE5B8
-E0293CF92AFB6EDDD744A5EFEDC08CB52F3F11DBFDDA95A16857601D15F44A4B
-12A60E1681376ED56FBB021C6C6ABFAA9274AF78FA6FA156434E5B8F59573591
-0D03406B63704816DEB1CB7BD286330530E20E9DEE564244243CE1C35B86C63E
-C210C4591A159C27403196AACB5FAB1DAF3567B07F72113A84DDA71EF57A25E5
-696F32C68616C1209624A3B6BC8E3E762644960BC25ACE895DC6E981E60B45BF
-D7C0250F830C41C1EC111F9473CE3813E7D704375BE16D4C38D83A9FC70F198E
-1D68E23FB4BEB00EB5B6A7D4835580FCD30818BF46655D03722CEA391720E4D3
-C80FF26295CAC376B910A0E43F6A9FC856666F2F611AC40470A0BBD9CC6E22A7
-F79982D399C005815F88DE91EEFFF99A410E1AC7114063609477DC7599307DA4
-2DB6B6A6F274FC46794D70B190E267696B4A1E8BD0BC2EE5F06A7CC77844363C
-F0BE07A59DDAF0E32A3CA83FE6404179B01E7C5BFF2B76E1C7F555D5935CD7DA
-7F385A4FBCCE8BC043C868F6938FAF9CA163814E1E2BBEAB55E694E7428CD9B6
-D73569152E8C595E256590B39EE7A99627A860DC377B6EC71750A6FA64A72EE4
-F6489A1A5A234322D8DFDA02C8704419E0EF17493F9E3CDEFFC445736CDE71B9
-DCFBFF4A357C570E899C966858754C105F2908816ADB1858A0656C964F547CEE
-002C11BEBEA2A30E55A43120838E94994E390F298F7E4E6236EA30DE6CABBE0F
-03C8F3EA89130D3AF01E33E03AB649C3A731A5855601966BD09ED6F87BA768FB
-D68389A74DBCD7619FEC31503CC846099A571A35491AFD63097531DDC702CEDA
-BE9BD9E20303C0A6FE8E30B4EB2E27048A9415971E802C025D166324F4F30D25
-DE855A69D97437615DC3C1750FE021BD113C9767AA28AD16DF037D191928BE48
-0606FBB6663E07428BD2DC19EDD1D08D641DDDD8EC140AE69B31276CE7013DD4
-15EA07913F9B432735B196C137191C9C1CBEE5581732E91D1782A47913E42952
-45A9B0225D5D99514AC26E10FC7AE33BF096F2EC4E446CE08F5BB4E4F2872D9F
-56722077561BC7DAAFFBECCBF5C45DE8BC29939376EC700F52B43518C05B1002
-BD343941DE35187C54A4EC5C875F50C195471273171E4024805F0A02CDAA0158
-33891C3E50E179214D53D2EB466BB82A90516F4276E30067815FEB0585EB101D
-FA5B58A8AA860D2BAA73D94BC34D3F5CC328490F35B04B5D4D560A224AAF0EF0
-D666F1DC0750C17CDD109C63641DD41B8EF84A4247E4070C73295AE4EFCE3B66
-D2E291F745358407AF7C1FBBFC52677B33286965CAB5BE21ED85E63DB84986FE
-166515BDB9331E27C25D42D4444297A8AC93E3E5DCEC65AD75B121C80A94FC0F
-E206B5A4B6283544414FD3FE2FDC5BDAC0B3031EFC6D871E9A3D41278972C0F2
-F37FA49535AD6EA1ED801F4D00397EA06E4AC3D5D867D1F63067E74A6061615E
-C6E370D063CFADEE4EC16DA3BA0840D5F2C791A9A5DC469F519B87F6E2FB225D
-D1EB189C932D11758BC0710B1E1C4C33D9E5A17F65DECC6E920E61E53F596C8A
-9F32392078ABACA3C60E884770CF4004C5E0771C2629CFFD11F06431A57B267D
-423B07425D7C6154F4A6E2F018080C07A78672EAB2929B5A07422FA8BD1EF535
-94B4FDB61C836EF9E9642B7FCF22584B189DEEA061C3FDA4A6409274595B1AEB
-A04E3F1144B6D0F6648B4E2E8374BCFCF3235B610588292A4674488AF8498CA6
-F389E5D372C6C678F3AA03ECA699ED4D839B2BE8AA5B43E516A2850EB6532DDA
-757D3B3675AD7A37F79927DA46E1A03861F5ACC36BC19E2184AF0CB5346F9F9E
-12FA2BBB209944F4CDD5C6D255117743E7F23F03021886FF8069865093032452
-953C43B913B50DF01FC7CCC9281FDC26FD37FE1A2866B12F22973F4C57990EF9
-3504277C7091753AC591FB430F8E16E5E77A6639A8AB5A5F3DF8FCCC650AA39B
-B3EB181CB26CE6D18719E8ADDBBF5B81A9D5C4680BFE9DF5896B71344F4E17C3
-58C0576704A8E515162F615AE8CEE6E4909987FA7B0D6A5AB5F2D0146B96D3EA
-5F434D28A2244DA8460BB70E34EA42187223E9C889FFE783BAA7CC3DDA025D56
-888CC43CEB66FB6792DE7AC6753D2401487343FD66007E3C2C9D81B5B1612465
-37AF044A023A4EA768403A8FEFBE0F9160C705C333650B60F4EF63F9451F4361
-C433F5D790A37107BFFABC982E66E9191486FDEF9C640092F8B475456BE30681
-E3E1F3E216FF130CB52A0344B6CCAF3BBC8A327262A8C675A68BF3BDBE4CE061
-C4B8F33C3130DD6FB49E4DD8914FE7F7CDAF49F13956F86FA2B88E05EBF83DF2
-06711C8303A2B8877F5A0A9706A07C6505CE0C2AF5731D1A72B190FDE2FDC698
-ADAAD113AEDBCB841829B96A089750CEDA284182B360F687FE0196D4D43D4603
-EB9954331326527F77CC4B8D850B841187117413CC6B5F462C64A3959CC7693B
-E358EE5F2CE58F4EB42153F954981EDF869B5DA9559A4B69CC554FF39D4D4E77
-0C8CFFBA1E7893766F55B7D367B02E8F6C337FD10C22D60A6225048B01CF8C30
-86124E73A35DC54B2B68C97A3556AFCEA4E982D71257DAD041433A4A60B6CCC3
-98F4E749219D982CE35EE0BE0F953D908945712465097C6214746A864F4B52C3
-3A45DE9542A7F76ABE5155883D275498D6A5633800BA5B3B45078A52D321BF70
-14A506096C76DA29AE83A4D2204633D9CEC517CDC41FF04EE01790659588D0A9
-14B460FFBDCCDF568A303A5BB001CAD84BA60D4B2EF4D764F9887C21635B32FD
-E9BF53AC249BE88117CA54F8161F40B2FBEC6935D621DEE89FA7ACCF0CD1E8CB
-9ABA2079596EE31C7DB9EE1FFA7D499B43A91D117365D82852EA7DEF15F0ADD6
-AE864307FCBA01CDA5D9F17AA12551A060CD6FD4BB69EB09B99BD0D39C69D164
-E9573BC0E97BEF5D08A2936AEEE00BD6615EBECCB9DF9852A72821249EA3BED3
-020166D83242251D35B00F35BF822213BCCFA53372A5A9CC85AA0755E2840A68
-7E28C6BC6FCC151EBF5E8B74DE652794F312A6630F6FB891EEE4707E9259DC31
-230C42986B3C60AE7FDC542B7CB2180A871821D72248B2FFDF36E3A7ADED61F8
-DE6428B29CB0B98BA868E33246CF5A6BA12A6FBACA7436527FBE2FC6DF860A77
-5FA79538304FD552AB47E056AED3E3E6267BBD55CE52190DFD3932FFA9A850F5
-4CB7A7E938A32F18E7A86E94C3C365D0C4A85E64E0A749A005738C201B999B40
-8D9534D8317597A5D7169809BD0C829A5AF1B22E660BFAF7A4A1C81377B6AE44
-FC639CF5CED0AB54D0B639880CAEC0222D73B626A37C90DB982CADC78A01BCBB
-AD833E83EEF3C45F208A90B3AAAAAC8A25A28975675C64DCBE94FEAF96F07FEC
-3D8EA3DD2A0B776492BAF2F4D14A8AE1921C5DEE62BD385247A9536B2D8DDDDC
-1D51196E72804524A9175C93CB276069D7CD6555A2084A51FC13B503CEFA1835
-C572B64BB65203CD666FDD1C79DBED16B7EC15B37AD79602AFBE1A1FEC89C865
-DE6420E6790D59CDA4EFEFDF352CF101D2B64EEC253F13B3C854FC03370DB220
-227F67A5654E595E1C6E18A6A6AF672F0638D1B35C69759D347224DCC89223A8
-A9A6682EFAF9179AF0C7CDE0D9F991E89D258596E93F26819896C730526735BA
-681674536B7D1F8C243FA809DA6572601EC8E9665204C155D4EA516B61799080
-25627C82CF7E89BA81CEA8C865D0AAFBB7DA3C47E1508D985470E6A11C93AC68
-72F823BFAAB5011A760F369164158479690A2A696A4CDE768B520E75F9A9415D
-6C0CE866FB2BCACA7B9575E8F2658CCEB6E0DBFFEE00388A9BCD9706AC8D3F13
-B03109669E54C773BA71B93DD88B3972B48B1E30C6DDA9FC8F76ADF717373F85
-FD72E2095C983B1085C2436545C0260A5788641BA646755594CD06BBDEEB721F
-AB272E8145F81AFA2659029BCD25640BB9B406FD20
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 55387786 39139632 1000 600 600 (fr-refcard.dvi)
-@start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 134[35
-3[38 24 29 30 1[36 36 40 58 18 33 1[22 1[33 1[33 36 33
-33 36 51[26 45[{}19 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
-49.8132 /CMSY6 rf /Fd 128[30 4[27 32 1[43 32 34 24 24
-24 32 34 30 34 50 18 32 1[18 34 30 19 27 34 27 34 30
-10[45 45 1[34 2[41 1[45 54 3[22 1[47 39 41 1[43 42 45
-9[30 1[30 1[30 30 30 30 1[18 21 18 19[27 4[30 30 18[{}50
-49.8132 /CMR6 rf /Fe 135[43 1[43 45 32 32 34 43 45 41
-45 68 23 1[25 23 45 41 25 37 45 36 45 40 12[57 45 61
-61 55 61 2[49 2[30 2[51 53 62 59 1[61 18[23 27 25[41
-41 18[{}39 66.4176 /CMBX8 rf /Ff 130[35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 3[35 2[35 35 35 1[35
-2[35 35 4[35 35 35 35 35 35 35 35 35 35 1[35 1[35 4[35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35 35 35
-35 35 33[{}74 66.4176 /CMTT8 rf /Fg 135[60 1[60 64 45
-45 47 60 64 57 64 95 32 2[32 64 57 35 53 64 51 64 56
-2[57 7[87 1[80 64 86 86 78 86 1[109 69 1[59 43 2[72 75
-88 83 1[87 19[38 5[32 19[57 57 5[64 12[{}43 99.6264 /CMBX10
-rf /Fh 132[35 31 37 37 1[37 39 27 28 28 37 39 35 39 59
-20 1[22 20 39 35 22 31 39 31 39 35 2[35 1[35 1[43 1[53
-1[53 53 51 39 52 55 48 55 53 65 44 1[36 25 1[55 46 48
-54 51 50 53 6[20 35 6[35 35 1[35 20 24 20 2[27 27 20
-4[35 6[55 7[35 35 1[20 1[59 1[39 41 11[{}68 66.4176 /CMR8
-rf /Fi 139[53 54 57 3[76 115 6[42 63 76 61 1[67 11[106
-6[108 6[108 1[90 1[99 47[69 19[{}16 119.552 /CMBX10 rf
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: a4
-a4
-%%EndPaperSize
- @landscape end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin @landscape 1 0 bop -384 -421 a Fi(Carte)46
-b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46 b(de)g(GNU)f(Emacs)361
--313 y Fh(\(p)r(our)24 b(la)f(v)n(ersion)h(22\))-294
--135 y Fg(Lancer)37 b(Emacs)-294 16 y Fh(P)n(our)24 b(lancer)f(GNU)h
-(Emacs)g(22,)f(tap)r(ez)j(juste)e(son)f(nom)h(:)31 b
-Ff(emacs)p Fh(.)-294 190 y Fg(Quitter)37 b(Emacs)-294
-342 y Fh(Susp)r(endre)25 b(Emacs)e(\(ou)i(l'iconi\014er)e(sous)g(X\))
-211 b Ff(C-z)-294 421 y Fh(Quitter)24 b(d)n(\023)-33
-b(e\014nitiv)n(emen)n(t)26 b(Emacs)527 b Ff(C-x)36 b(C-c)-294
-596 y Fg(Fic)m(hiers)-294 747 y Fe(Lire)23 b Fh(un)h(\014c)n(hier)986
-b Ff(C-x)36 b(C-f)-294 827 y Fe(Sauv)n(egarder)22 b Fh(un)i(\014c)n
-(hier)691 b Ff(C-x)36 b(C-s)-294 906 y Fh(Sauv)n(egarder)25
-b Fe(tous)e Fh(les)g(\014c)n(hiers)551 b Ff(C-x)36 b(s)-294
-986 y Fe(Ins)n(\023)-39 b(erer)24 b Fh(un)g(\014c)n(hier)g(sous)g(le)f
-(p)r(oin)n(t)h(\(curseur\))165 b Ff(C-x)36 b(i)-294 1066
-y Fh(Remplacer)24 b(le)f(\014c)n(hier)h(par)g(un)g(autre)g(\014c)n
-(hier)208 b Ff(C-x)36 b(C-v)-294 1146 y Fh(Sauv)n(egarder)25
-b(sous)f(un)g(autre)g(nom)g(de)g(\014c)n(hier)163 b Ff(C-x)36
-b(C-w)-294 1225 y Fh(Basculer)24 b(en)g(mo)r(de)g(lecture)g(seule)490
-b Ff(C-x)36 b(C-q)-294 1402 y Fg(Obtenir)h(de)g(l'aide)-294
-1553 y Fh(Le)27 b(syst)n(\022)-33 b(eme)27 b(d'aide)g(est)g(simple.)40
-b(F)-6 b(aites)27 b Ff(C-h)h Fh(\(ou)f Ff(F1)p Fh(\))h(et)f(suiv)n(ez)g
-(les)-294 1633 y(instructions.)i(Si)16 b(v)n(ous)g(d)n(\023)-33
-b(ebutez,)19 b(faites)d Ff(C-h)36 b(t)17 b Fh(p)r(our)f(un)g
-Fe(didacticiel)p Fh(.)-294 1741 y(Supprimer)23 b(la)h(fen)n(^)-33
-b(etre)24 b(d'aide)599 b Ff(C-x)36 b(1)-294 1821 y Fh(F)-6
-b(aire)23 b(d)n(\023)-33 b(e\014ler)24 b(la)g(fen)n(^)-33
-b(etre)24 b(d'aide)555 b Ff(C-M-v)-294 1929 y Fh(Rec)n(herc)n(her)25
-b(des)f(commandes)g(selon)g(une)g(c)n(ha)-8 b(^)-27 b(\020ne)73
-b Ff(C-h)36 b(a)-294 2009 y Fh(D)n(\023)-33 b(ecrire)23
-b(la)h(fonction)g(asso)r(ci)n(\023)-33 b(ee)24 b(\022)-35
-b(a)24 b(une)h(touc)n(he)185 b Ff(C-h)36 b(k)-294 2088
-y Fh(D)n(\023)-33 b(ecrire)23 b(une)h(fonction)813 b
-Ff(C-h)36 b(f)-294 2168 y Fh(Obtenir)24 b(des)g(informations)f(relativ)
-n(es)h(au)g(mo)r(de)102 b Ff(C-h)36 b(m)-294 2333 y Fg(R)n(\023)-55
-b(ecup)n(\023)g(eration)36 b(sur)i(erreurs)-294 2485
-y Fe(Abandonner)24 b Fh(une)g(commande)517 b Ff(C-g)-294
-2564 y Fe(R)n(\023)-39 b(ecup)n(\023)g(erer)24 b Fh(les)f(\014c)n
-(hiers)h(apr)n(\022)-33 b(es)24 b(un)g(crash)72 b Ff(M-x)36
-b(recover-session)-294 2644 y Fe(Ann)n(uler)24 b Fh(une)g(mo)r
-(di\014cation)473 b Ff(C-x)36 b(u,)g(C-_)g Fh(ou)g Ff(C-/)-294
-2724 y Fh(Ann)n(uler)24 b(toutes)h(les)e(mo)r(di\014cations)305
-b Ff(M-x)36 b(revert-buffer)-294 2803 y Fh(R)n(\023)-33
-b(ea\016c)n(her)24 b(un)e(\023)-33 b(ecran)25 b(p)r(erturb)n(\023)-33
-b(e)557 b Ff(C-l)-294 2978 y Fg(Rec)m(herc)m(he)36 b(incr)n(\023)-55
-b(emen)m(tale)-294 3129 y Fh(Rec)n(herc)n(her)25 b(en)f(a)n(v)l(an)n(t)
-819 b Ff(C-s)-294 3209 y Fh(Rec)n(herc)n(her)25 b(en)f(arri)n(\022)-33
-b(ere)783 b Ff(C-r)-294 3289 y Fh(Rec)n(herc)n(her)25
-b(en)f(a)n(v)l(an)n(t)h(\(expression)f(rationnelle\))75
-b Ff(C-M-s)-294 3368 y Fh(Rec)n(herc)n(her)17 b(en)g(arri)n(\022)-33
-b(ere)15 b(\(expression)i(rationnelle\))71 b Ff(C-M-r)-294
-3477 y Fh(Utiliser)22 b(la)i(c)n(ha)-8 b(^)-27 b(\020ne)24
-b(de)g(rec)n(herc)n(he)h(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)166
-b Ff(M-p)-294 3556 y Fh(Utiliser)22 b(la)i(c)n(ha)-8
-b(^)-27 b(\020ne)24 b(de)g(rec)n(herc)n(he)h(suiv)l(an)n(te)241
-b Ff(M-n)-294 3636 y Fh(Quitter)24 b(la)f(rec)n(herc)n(he)i(incr)n
-(\023)-33 b(emen)n(tale)412 b Ff(RET)-294 3716 y Fh(Ann)n(uler)24
-b(l'e\013et)g(du)g(dernier)f(caract)n(\022)-33 b(ere)357
-b Ff(DEL)-294 3795 y Fh(Ann)n(uler)24 b(la)f(rec)n(herc)n(he)i(en)f
-(cours)526 b Ff(C-g)-294 3904 y Fh(Refaites)34 b Ff(C-s)h
-Fh(ou)f Ff(C-r)h Fh(p)r(our)f(r)n(\023)-33 b(ep)n(\023)g(eter)34
-b(la)g(rec)n(herc)n(he)h(dans)f(une)h(des)-294 3983 y(directions.)42
-b(En)28 b(cours)f(de)h(rec)n(herc)n(he,)h Ff(C-g)f Fh(e\013ace)h(les)e
-(derniers)f(car-)-294 4063 y(act)n(\022)-33 b(eres)25
-b(et)f(ne)g(conserv)n(e)h(que)f(le)g(pr)n(\023)-33 b(e\014xe)24
-b(d)n(\023)-33 b(ej\022)e(a)24 b(trouv)n(\023)-33 b(e.)-185
-4254 y Fd(c)-202 4256 y Fc(\015)20 b Fd(2007)j(F)-5 b(ree)21
-b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)27 b(P)n(ermissions)21
-b(au)g(dos.)27 b(v2.3)1902 -421 y Fg(D)n(\023)-55 b(eplacemen)m(ts)1902
--270 y Fe(Ob)5 b(jet)27 b(sur)g(lequel)g(se)g(d)n(\023)-39
-b(eplacer)102 b(En)28 b(arri)n(\022)-39 b(ere)69 b(En)28
-b(a)n(v)-5 b(an)n(t)1902 -190 y Fh(Caract)n(\022)-33
-b(ere)803 b Ff(C-b)329 b(C-f)1902 -110 y Fh(Mot)973 b
-Ff(M-b)329 b(M-f)1902 -31 y Fh(Ligne)931 b Ff(C-p)329
-b(C-n)1902 49 y Fh(Aller)22 b(en)j(d)n(\023)-33 b(ebut/\014n)25
-b(de)f(la)g(ligne)200 b Ff(C-a)329 b(C-e)1902 129 y Fh(Phrase)891
-b Ff(M-a)329 b(M-e)1902 208 y Fh(P)n(aragraphe)749 b
-Ff(M-{)329 b(M-})1902 288 y Fh(P)n(age)953 b Ff(C-x)36
-b([)258 b(C-x)36 b(])1902 368 y Fh(S-expression)721 b
-Ff(C-M-b)259 b(C-M-f)1902 448 y Fh(F)-6 b(onction)834
-b Ff(C-M-a)259 b(C-M-e)1902 527 y Fh(Aller)22 b(en)j(d)n(\023)-33
-b(ebut/\014n)25 b(du)f(tamp)r(on)180 b Ff(M-<)329 b(M->)1902
-636 y Fh(P)n(asser)23 b(\022)-35 b(a)24 b(l')n(\023)-33
-b(ecran)24 b(suiv)l(an)n(t)715 b Ff(C-v)1902 715 y Fh(P)n(asser)23
-b(\022)-35 b(a)24 b(l')n(\023)-33 b(ecran)24 b(pr)n(\023)-33
-b(ec)n(\023)g(eden)n(t)640 b Ff(M-v)1902 795 y Fh(F)-6
-b(aire)23 b(d)n(\023)-33 b(e\014ler)24 b(l')n(\023)-33
-b(ecran)24 b(v)n(ers)f(la)h(gauc)n(he)391 b Ff(C-x)36
-b(<)1902 875 y Fh(F)-6 b(aire)23 b(d)n(\023)-33 b(e\014ler)24
-b(l')n(\023)-33 b(ecran)24 b(v)n(ers)f(la)h(droite)419
-b Ff(C-x)36 b(>)1902 954 y Fh(Placer)24 b(la)f(ligne)h(couran)n(te)h
-(au)f(cen)n(tre)h(de)f(l')n(\023)-33 b(ecran)82 b Ff(C-u)36
-b(C-l)1902 1129 y Fg(D)n(\023)-55 b(etruire)36 b(et)i(supprimer)1902
-1280 y Fe(Ob)5 b(jet)26 b(\022)-40 b(a)26 b(supprimer)439
-b(En)28 b(arri)n(\022)-39 b(ere)69 b(En)28 b(a)n(v)-5
-b(an)n(t)1902 1360 y Fh(Caract)n(\022)-33 b(ere)25 b(\(suppression\))
-370 b Ff(DEL)329 b(C-d)1902 1439 y Fh(Mot)973 b Ff(M-DEL)259
-b(M-d)1902 1519 y Fh(Ligne)24 b(\(jusqu'au)g(d)n(\023)-33
-b(ebut/\014n\))282 b Ff(M-0)36 b(C-k)188 b(C-k)1902 1599
-y Fh(Phrase)891 b Ff(C-x)36 b(DEL)188 b(M-k)1902 1679
-y Fh(S-expression)721 b Ff(M--)36 b(C-M-k)118 b(C-M-k)1902
-1787 y Fh(D)n(\023)-33 b(etruire)23 b(une)i Fe(r)n(\023)-39
-b(egion)804 b Ff(C-w)1902 1867 y Fh(Copier)23 b(une)i(r)n(\023)-33
-b(egion)24 b(dans)g(le)f Fb(kil)t(l)i(ring)383 b Ff(M-w)1902
-1946 y Fh(D)n(\023)-33 b(etruire)21 b(jusqu'\022)-35
-b(a)22 b(l'o)r(ccurrence)g(suiv)l(an)n(te)h(de)f Fb(c)l(ar)71
-b Ff(M-z)36 b Fb(c)l(ar)1902 2055 y Fh(R)n(\023)-33 b(ecup)n(\023)g
-(erer)24 b(la)g(derni)n(\022)-33 b(ere)23 b(r)n(\023)-33
-b(egion)24 b(d)n(\023)-33 b(etruite)303 b Ff(C-y)1902
-2134 y Fh(R)n(\023)-33 b(ecup)n(\023)g(erer)24 b(la)g(r)n(\023)-33
-b(egion)23 b(d)n(\023)-33 b(etruite)25 b(pr)n(\023)-33
-b(ec)n(\023)g(eden)n(te)224 b Ff(M-y)1902 2310 y Fg(Marquer)1902
-2461 y Fh(Placer)24 b(la)f(marque)h(au)g(p)r(oin)n(t)634
-b Ff(C-@)36 b Fh(ou)g Ff(C-SPC)1908 2524 y Fh(\023)1902
-2541 y(Ec)n(hanger)25 b(le)e(p)r(oin)n(t)i(et)f(la)f(marque)483
-b Ff(C-x)36 b(C-x)1902 2649 y Fh(Placer)24 b(la)f(marque)h(un)g
-Fe(mot)f Fh(plus)g(loin)363 b Ff(M-@)1902 2729 y Fh(Marquer)23
-b(le)h Fe(paragraphe)678 b Ff(M-h)1902 2808 y Fh(Marquer)23
-b(la)h Fe(page)912 b Ff(C-x)36 b(C-p)1902 2888 y Fh(Marquer)23
-b(la)h Fe(s-expression)647 b Ff(C-M-@)1902 2968 y Fh(Marquer)23
-b(la)h Fe(fonction)787 b Ff(C-M-h)1902 3048 y Fh(Marquer)23
-b(tout)i(le)f Fe(tamp)r(on)653 b Ff(C-x)36 b(h)1902 3222
-y Fg(Remplacemen)m(t)g(in)m(teractif)1902 3373 y Fh(Remplacer)24
-b(une)g(c)n(ha)-8 b(^)-27 b(\020ne)25 b(de)f(texte)492
-b Ff(M-\045)1985 3453 y Fh(\022)-35 b(a)24 b(l'aide)f(d'expr.)31
-b(rationnelles)145 b Ff(M-x)36 b(query-replace-regexp)1902
-3561 y Fh(R)n(\023)-33 b(ep)r(onses)33 b(p)r(ossibles)e(p)r(our)g(c)n
-(haque)j(o)r(ccurrence)f(dans)f(le)f(mo)r(de)h(de)1902
-3641 y(remplacemen)n(t)25 b(in)n(teractif)f(:)1902 3749
-y Fe(Remplacer)f Fh(celle-l\022)-35 b(a,)23 b(passer)g(\022)-35
-b(a)24 b(la)f(suiv)l(an)n(te)182 b Ff(SPC)1902 3829 y
-Fh(Remplacer)24 b(celle-l\022)-35 b(a,)23 b(rester)g(l\022)-35
-b(a)584 b Ff(,)1902 3909 y Fe(P)n(asser)23 b Fh(\022)-35
-b(a)24 b(la)g(suiv)l(an)n(te)g(sans)g(remplacer)321 b
-Ff(DEL)1902 3988 y Fh(Remplacer)24 b(toutes)h(les)e(o)r(ccurrences)i
-(suiv)l(an)n(tes)119 b Ff(!)1902 4068 y Fe(Rev)n(enir)23
-b Fh(\022)-35 b(a)24 b(l'o)r(ccurrence)g(pr)n(\023)-33
-b(ec)n(\023)g(eden)n(te)365 b Ff(^)1902 4148 y Fe(Quitter)23
-b Fh(le)g(remplacemen)n(t)i(in)n(teractif)348 b Ff(RET)1908
-4211 y Fe(\023)1902 4227 y(Editer)23 b Fh(a)n(v)l(an)n(t)i(de)f
-(reprendre)g(\()p Ff(C-M-c)i Fh(:)31 b(sortir\))119 b
-Ff(C-r)4098 -421 y Fg(F)-10 b(en)n(^)-55 b(etres)37 b(m)m(ultiples)4098
--299 y Fh(Lorsqu'il)17 b(y)h(a)g(deux)h(commandes,)h(la)e(seconde)i
-(est)e(celle)g(qui)g(concerne)4098 -219 y(non)24 b(pas)g(les)f(fen)n(^)
--33 b(etres)25 b(mais)e(les)g(cadres.)4098 -118 y(Supprimer)g(toutes)i
-(les)f(autres)g(fen)n(^)-33 b(etres)105 b Ff(C-x)36 b(1)212
-b(C-x)37 b(5)e(1)4098 -38 y Fh(Supprimer)23 b(cette)j(fen)n(^)-33
-b(etre)487 b Ff(C-x)36 b(0)212 b(C-x)37 b(5)e(0)4098
-42 y Fh(Diviser)23 b(la)g(fen)n(^)-33 b(etre)24 b(horizon)n(talemen)n
-(t)170 b Ff(C-x)36 b(2)212 b(C-x)37 b(5)e(2)4098 143
-y Fh(Diviser)23 b(la)g(fen)n(^)-33 b(etre)24 b(v)n(erticalemen)n(t)476
-b Ff(C-x)36 b(3)4098 244 y Fh(F)-6 b(aire)23 b(d)n(\023)-33
-b(e\014ler)24 b(l'autre)g(fen)n(^)-33 b(etre)618 b Ff(C-M-v)4098
-345 y Fh(S)n(\023)-33 b(electionner)25 b(une)f(autre)h(fen)n(^)-33
-b(etre)291 b Ff(C-x)36 b(o)212 b(C-x)37 b(5)e(o)4098
-425 y Fh(Choisir)23 b(un)g(tamp)r(on)i(\(autre)g(fen)n(^)-33
-b(etre\))160 b Ff(C-x)36 b(4)g(b)141 b(C-x)37 b(5)e(b)4098
-504 y Fh(A\016c)n(her)24 b(un)g(tamp)r(on)g(\(autre)h(fen)n(^)-33
-b(etre\))141 b Ff(C-x)36 b(4)g(C-o)71 b(C-x)37 b(5)e(C-o)4098
-584 y Fh(Lire)23 b(un)h(\014c)n(hier)g(\(autre)h(fen)n(^)-33
-b(etre\))308 b Ff(C-x)36 b(4)g(f)141 b(C-x)37 b(5)e(f)4181
-664 y Fh(en)24 b(lecture)g(seule)657 b Ff(C-x)36 b(4)g(r)141
-b(C-x)37 b(5)e(r)4098 743 y Fh(Lancer)24 b(Dired)f(\(autre)i(fen)n(^)
--33 b(etre\))339 b Ff(C-x)36 b(4)g(d)141 b(C-x)37 b(5)e(d)4098
-823 y Fh(T)-6 b(rouv)n(er)24 b(un)g(tag)g(\(autre)h(fen)n(^)-33
-b(etre\))278 b Ff(C-x)36 b(4)g(.)141 b(C-x)37 b(5)e(.)4098
-924 y Fh(Agrandir)23 b(la)g(fen)n(^)-33 b(etre)25 b(v)n(erticalemen)n
-(t)416 b Ff(C-x)36 b(^)4098 1004 y Fh(R)n(\023)-33 b(eduire)24
-b(la)f(fen)n(^)-33 b(etre)24 b(horizon)n(talemen)n(t)373
-b Ff(C-x)36 b({)4098 1084 y Fh(Agrandir)23 b(la)g(fen)n(^)-33
-b(etre)25 b(horizon)n(talemen)n(t)336 b Ff(C-x)36 b(})4098
-1214 y Fg(F)-10 b(ormater)4098 1336 y Fh(Inden)n(ter)25
-b(la)f Fe(ligne)f Fh(couran)n(te)i(\(selon)f(le)g(mo)r(de\))127
-b Ff(TAB)4098 1416 y Fh(Inden)n(ter)25 b(la)f Fe(r)n(\023)-39
-b(egion)22 b Fh(couran)n(te)j(\(selon)g(le)e(mo)r(de\))76
-b Ff(C-M-\\)4098 1496 y Fh(Inden)n(ter)21 b(la)d Fe(s-expr.)30
-b Fh(couran)n(te)21 b(\(selon)e(le)g(mo)r(de\))72 b Ff(C-M-q)4098
-1576 y Fh(Inden)n(ter)25 b(la)f(r)n(\023)-33 b(egion)23
-b(sur)h(une)g(colonne)386 b Ff(C-x)36 b(TAB)4098 1655
-y Fh(Ins)n(\023)-33 b(erer)24 b(un)g(retour)f(\022)-35
-b(a)24 b(la)g(ligne)f(apr)n(\022)-33 b(es)24 b(le)f(p)r(oin)n(t)168
-b Ff(C-o)4098 1735 y Fh(D)n(\023)-33 b(eplacer)24 b(le)g(reste)g(de)g
-(la)f(ligne)h(v)n(ers)f(le)h(bas)240 b Ff(C-M-o)4098
-1815 y Fh(Supprimer)23 b(les)g(lignes)h(vierges)g(autour)g(du)g(p)r
-(oin)n(t)73 b Ff(C-x)36 b(C-o)4098 1894 y Fh(Joindre)20
-b(\022)-35 b(a)20 b(la)f(ligne)h(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)
-22 b(\(suiv.)30 b(a)n(v)n(ec)21 b Fb(ar)l(g)6 b Fh(\))71
-b Ff(M-^)4098 1974 y Fh(Supprimer)23 b(tous)h(les)g(espaces)h(autour)f
-(du)g(p)r(oin)n(t)102 b Ff(M-\\)4098 2054 y Fh(Mettre)24
-b(exactemen)n(t)j(une)d(espace)h(au)f(p)r(oin)n(t)223
-b Ff(M-SPC)4098 2155 y Fh(F)-6 b(ormater)24 b(le)f(paragraphe)715
-b Ff(M-q)4098 2235 y Fh(Placer)24 b(la)f(marge)h(droite)g(\022)-35
-b(a)24 b Fb(ar)l(g)30 b Fh(colonnes)287 b Ff(C-u)36 b
-Fb(ar)l(g)42 b Ff(C-x)36 b(f)4098 2314 y Fh(D)n(\023)-33
-b(e\014nir)23 b(le)h(pr)n(\023)-33 b(e\014xe)24 b(des)g(lignes)607
-b Ff(C-x)36 b(.)4098 2415 y Fh(D)n(\023)-33 b(e\014nir)23
-b(la)h(fon)n(te)975 b Ff(M-o)4098 2538 y Fg(Mo)s(di\014er)37
-b(la)h(casse)4098 2660 y Fh(Mettre)24 b(le)g(mot)g(en)g(capitales)627
-b Ff(M-u)4098 2740 y Fh(Mettre)24 b(le)g(mot)g(en)g(min)n(uscules)561
-b Ff(M-l)4098 2819 y Fh(Mettre)24 b(une)h(ma)t(juscule)e(au)h(mot)523
-b Ff(M-c)4098 2920 y Fh(Mettre)24 b(la)g(r)n(\023)-33
-b(egion)23 b(en)i(capitales)556 b Ff(C-x)36 b(C-u)4098
-3000 y Fh(Mettre)24 b(la)g(r)n(\023)-33 b(egion)23 b(en)i(min)n
-(uscules)490 b Ff(C-x)36 b(C-l)4098 3132 y Fg(Le)i(mini-tamp)s(on)4098
-3254 y Fh(Dans)24 b(le)f(mini-tamp)r(on)h(:)4098 3355
-y(Compl)n(\023)-33 b(eter)24 b(autan)n(t)h(que)g(p)r(ossible)496
-b Ff(TAB)4098 3435 y Fh(Compl)n(\023)-33 b(eter)24 b(un)g(mot)872
-b Ff(SPC)4098 3514 y Fh(Compl)n(\023)-33 b(eter)24 b(et)g(ex)n(\023)-33
-b(ecuter)758 b Ff(RET)4098 3594 y Fh(Mon)n(trer)23 b(les)h(compl)n
-(\022)-33 b(etemen)n(ts)25 b(p)r(ossibles)313 b Ff(?)4098
-3674 y Fh(Utiliser)22 b(l'en)n(tr)n(\023)-33 b(ee)24
-b(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)26 b(du)e(mini-tamp)r(on)91
-b Ff(M-p)4098 3753 y Fh(Utiliser)22 b(l'en)n(tr)n(\023)-33
-b(ee)24 b(suiv)l(an)n(te)h(du)f(mini-tamp)r(on)167 b
-Ff(M-n)4098 3833 y Fh(Rec)n(herc)n(her)25 b(en)f(arri)n(\022)-33
-b(ere)22 b(dans)j(l'historique)251 b Ff(M-r)4098 3913
-y Fh(Rec)n(herc)n(her)25 b(en)f(a)n(v)l(an)n(t)h(dans)f(l'historique)
-285 b Ff(M-s)4098 3993 y Fh(Quitter)24 b(en)g(ann)n(ulan)n(t)h(la)f
-(commande)394 b Ff(C-g)4098 4094 y Fh(F)-6 b(aites)39
-b Ff(C-x)d(ESC)g(ESC)j Fh(p)r(our)d(\023)-33 b(editer)39
-b(et)g(r)n(\023)-33 b(ep)n(\023)g(eter)39 b(la)f(derni)n(\022)-33
-b(ere)38 b(com-)4098 4173 y(mande)22 b(a)n(y)n(an)n(t)g(utilis)n(\023)
--33 b(e)20 b(le)h(mini-tamp)r(on.)30 b(F)-6 b(aites)22
-b Ff(F10)f Fh(p)r(our)g(utiliser)f(la)4098 4253 y(barre)j(de)h(men)n(u)
-h(sur)e(un)h(terminal)f(en)h(utilisan)n(t)g(le)f(mini-tamp)r(on.)p
-eop end
-%%Page: 2 2
-TeXDict begin @landscape 2 1 bop -384 -421 a Fi(Carte)46
-b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46 b(de)g(GNU)f(Emacs)-294
--227 y Fg(T)-10 b(amp)s(ons)-294 -76 y Fh(Choisir)23
-b(un)g(autre)i(tamp)r(on)674 b Ff(C-x)36 b(b)-294 4 y
-Fh(Lister)23 b(tous)i(les)e(tamp)r(ons)719 b Ff(C-x)36
-b(C-b)-294 84 y Fh(Supprimer)23 b(un)h(tamp)r(on)757
-b Ff(C-x)36 b(k)-294 257 y Fg(T)-10 b(ransp)s(oser)-294
-409 y Fh(T)k(ransp)r(oser)24 b(des)g Fe(caract)n(\022)-39
-b(eres)598 b Ff(C-t)-294 488 y Fh(T)-6 b(ransp)r(oser)24
-b(des)g Fe(mots)783 b Ff(M-t)-294 568 y Fh(T)-6 b(ransp)r(oser)24
-b(des)g Fe(lignes)755 b Ff(C-x)36 b(C-t)-294 648 y Fh(T)-6
-b(ransp)r(oser)24 b(des)g Fe(s-expressions)496 b Ff(C-M-t)-294
-822 y Fg(V)n(\023)-55 b(eri\014er)37 b(l'orthographe)-294
-973 y Fh(V)n(\023)-33 b(eri\014er)23 b(l'orthographe)h(du)g(mot)g
-(couran)n(t)273 b Ff(M-$)-294 1053 y Fh(V)n(\023)-33
-b(eri\014er)23 b(l'orthographe)h(d'une)g(r)n(\023)-33
-b(egion)231 b Ff(M-x)36 b(ispell-region)-294 1133 y Fh(V)n(\023)-33
-b(eri\014er)23 b(l'orthographe)h(de)g(tout)h(le)f(tamp)r(on)53
-b Ff(M-x)36 b(ispell-buffer)-294 1308 y Fg(T)-10 b(ags)-294
-1460 y Fh(T)k(rouv)n(er)24 b(un)g(tag)g(\(une)h(d)n(\023)-33
-b(e\014nition\))475 b Ff(M-.)-294 1539 y Fh(P)n(asser)23
-b(\022)-35 b(a)24 b(l'o)r(ccurrence)g(suiv)l(an)n(te)h(du)f(tag)298
-b Ff(C-u)36 b(M-.)-294 1619 y Fh(Sp)n(\023)-33 b(eci\014er)24
-b(un)g(autre)h(\014c)n(hier)e(de)h(tags)217 b Ff(M-x)36
-b(visit-tags-table)-294 1727 y Fh(Rec)n(herc)n(her)25
-b(dans)f(tous)g(les)f(\014c)n(hiers)h(des)g(tags)32 b
-Ff(M-x)k(tags-search)-294 1836 y Fh(Remplacer)24 b(dans)g(tous)g(les)g
-(\014c)n(hiers)159 b Ff(M-x)36 b(tags-query-replace)-294
-1915 y Fh(Con)n(tin)n(uer)24 b(la)g(rec)n(herc)n(he)h(ou)f(le)f
-(remplacemen)n(t)122 b Ff(M-,)-294 2090 y Fg(Shell)-294
-2241 y Fh(Ex)n(\023)-33 b(ecuter)25 b(une)f(commande)h(shell)519
-b Ff(M-!)-294 2321 y Fh(Lancer)24 b(une)h(commande)f(shell)g(sur)f(la)g
-(r)n(\023)-33 b(egion)176 b Ff(M-|)-294 2400 y Fh(Filtrer)23
-b(la)g(r)n(\023)-33 b(egion)24 b(a)n(v)n(ec)h(une)f(commande)h(shell)
-148 b Ff(C-u)36 b(M-|)-294 2480 y Fh(Lancer)24 b(un)g(shell)f(dans)h
-(la)g(fen)n(^)-33 b(etre)24 b Ff(*shell*)223 b(M-x)36
-b(shell)-294 2646 y Fg(Rectangles)-294 2797 y Fh(Copier)23
-b(le)h(rectangle)h(dans)f(un)g(registre)341 b Ff(C-x)36
-b(r)g(r)-294 2876 y Fh(D)n(\023)-33 b(etruire)23 b(le)h(rectangle)807
-b Ff(C-x)36 b(r)g(k)-294 2956 y Fh(R)n(\023)-33 b(ecup)n(\023)g(erer)24
-b(le)g(rectangle)754 b Ff(C-x)36 b(r)g(y)-294 3036 y
-Fh(D)n(\023)-33 b(ecaler)24 b(le)f(rectangle)i(\022)-35
-b(a)24 b(droite)571 b Ff(C-x)36 b(r)g(o)-294 3116 y Fh(Vider)23
-b(le)h(rectangle)894 b Ff(C-x)36 b(r)g(c)-294 3195 y
-Fh(Pr)n(\023)-33 b(e\014xer)24 b(c)n(haque)h(ligne)f(du)f(rectangle)392
-b Ff(C-x)36 b(r)g(t)-294 3370 y Fg(Abr)n(\023)-55 b(eviations)-294
-3521 y Fh(Ajouter)24 b(une)g(abr)n(\023)-33 b(eviation)25
-b(globale)462 b Ff(C-x)36 b(a)g(g)-294 3601 y Fh(Ajouter)24
-b(une)g(abr)n(\023)-33 b(eviation)25 b(lo)r(cale)f(au)g(mo)r(de)215
-b Ff(C-x)36 b(a)g(l)-294 3680 y Fh(Ajouter)24 b(une)g(expansion)h
-(globale)505 b Ff(C-x)36 b(a)g(i)f(g)-294 3760 y Fh(Ajouter)24
-b(une)g(expansion)h(lo)r(cale)f(au)g(mo)r(de)258 b Ff(C-x)36
-b(a)g(i)f(l)-294 3840 y Fh(F)-6 b(aire)17 b(une)i(expansion)g
-(explicite)f(de)g(l'abr)n(\023)-33 b(eviation)71 b Ff(C-x)36
-b(a)g(e)-294 3948 y Fh(F)-6 b(aire)23 b(une)i(expansion)f(du)g(mot)g
-(pr)n(\023)-33 b(ec)n(\023)g(eden)n(t)261 b Ff(M-/)1902
--421 y Fg(Expressions)39 b(rationnelles)1902 -270 y Fh(Un)24
-b(caract)n(\022)-33 b(ere)25 b(quelconque,)g(sauf)e(\014n)h(de)g(ligne)
-150 b Ff(.)71 b Fh(\(p)r(oin)n(t\))1902 -190 y(Z)n(\023)-33
-b(ero)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)24 b(ou)g(plus)734
-b Ff(*)1902 -110 y Fh(Une)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)24
-b(ou)h(plus)747 b Ff(+)1902 -31 y Fh(Z)n(\023)-33 b(ero)24
-b(ou)g(une)g(r)n(\023)-33 b(ep)n(\023)g(etition)751 b
-Ff(?)1908 32 y Fh(\023)1902 49 y(Ec)n(happ)r(er)25 b(le)e(caract)n
-(\022)-33 b(ere)25 b(sp)n(\023)-33 b(ecial)24 b Fb(c)488
-b Ff(\\)p Fb(c)1902 129 y Fh(Alternativ)n(e)24 b(\(\\ou")i(non)e
-(exclusif)5 b(\))476 b Ff(\\|)1902 208 y Fh(Regroup)r(emen)n(t)994
-b Ff(\\\()36 b Fa(:)11 b(:)h(:)34 b Ff(\\\))1902 288
-y Fh(Reprendre)24 b(le)g(texte)h(du)f Fb(n)5 b Fh(-i)n(\022)-33
-b(eme)24 b(group)r(emen)n(t)146 b Ff(\\)p Fb(n)1902 368
-y Fh(Limite)23 b(de)i(mot)1000 b Ff(\\b)1902 448 y Fh(Non)24
-b(limite)f(de)h(mot)874 b Ff(\\B)1902 556 y Fe(Ob)5 b(jet)707
-b(D)n(\023)-39 b(ebut)264 b(Fin)1902 636 y Fh(Ligne)743
-b Ff(^)450 b($)1902 715 y Fh(Mot)785 b Ff(\\<)415 b(\\>)1902
-795 y Fh(T)-6 b(amp)r(on)658 b Ff(\\`)415 b(\\')1902
-875 y Fe(Classe)26 b(de)i(caract)n(\022)-39 b(ere)227
-b(Corresp)r(ond)70 b(Compl)n(\023)-39 b(emen)n(t)1902
-954 y Fh(Ensem)n(ble)24 b(explicite)339 b Ff([)36 b Fa(:)11
-b(:)h(:)34 b Ff(])262 b([^)36 b Fa(:)12 b(:)f(:)35 b
-Ff(])1902 1034 y Fh(Caract)n(\022)-33 b(ere)25 b(de)f(mot)375
-b Ff(\\w)415 b(\\W)1902 1114 y Fh(Caract)n(\022)-33 b(ere)25
-b(a)n(v)n(ec)f(la)g(syn)n(taxe)h Fb(c)67 b Ff(\\s)p Fb(c)382
-b Ff(\\S)p Fb(c)1902 1288 y Fg(Jeux)38 b(de)f(caract)n(\022)-55
-b(eres)37 b(in)m(ternationaux)1902 1439 y Fh(Pr)n(\023)-33
-b(eciser)23 b(la)g(langue)i(principale)568 b Ff(C-x)36
-b(RET)g(l)1902 1519 y Fh(Lister)23 b(les)h(m)n(\023)-33
-b(etho)r(des)25 b(de)f(saisie)268 b Ff(M-x)36 b(list-input-methods)1902
-1599 y Fh(Activ)n(er/d)n(\023)-33 b(esactiv)n(er)25 b(la)f(m)n(\023)-33
-b(etho)r(de)25 b(de)f(saisie)227 b Ff(C-\\)1902 1679
-y Fh(Choisir)17 b(le)i(co)r(dage)h(p)r(our)e(la)g(commande)i(suiv)l(an)
-n(te)72 b Ff(C-x)36 b(RET)g(c)1902 1758 y Fh(Lister)23
-b(les)h(co)r(dages)568 b Ff(M-x)37 b(list-coding-systems)1902
-1838 y Fh(Choisir)23 b(le)g(co)r(dage)i(pr)n(\023)-33
-b(ef)n(\023)g(er)n(\023)g(e)312 b Ff(M-x)36 b(prefer-coding-system)1902
-2014 y Fg(Info)1902 2166 y Fh(Lire)23 b(une)h(do)r(cumen)n(tation)j
-(Info)557 b Ff(C-h)36 b(i)1902 2245 y Fh(Rec)n(herc)n(her)25
-b(une)f(fonction/v)l(ariable)h(dans)f(Info)110 b Ff(C-h)36
-b(S)1902 2354 y Fh(Se)24 b(d)n(\023)-33 b(eplacer)25
-b(dans)f(un)f(n\033ud)i(:)1973 2462 y(P)n(age)f(suiv)l(an)n(te)948
-b Ff(SPC)1973 2542 y Fh(P)n(age)24 b(pr)n(\023)-33 b(ec)n(\023)g(eden)n
-(te)873 b Ff(DEL)1973 2621 y Fh(D)n(\023)-33 b(ebut)24
-b(du)g(n\033ud)881 b Ff(.)71 b Fh(\(p)r(oin)n(t\))1902
-2730 y(Na)n(vigation)25 b(en)n(tre)f(n\033uds)g(:)1973
-2838 y(N\033ud)f Fe(suiv)-5 b(an)n(t)907 b Ff(n)1973
-2918 y Fh(N\033ud)23 b Fe(pr)n(\023)-39 b(ec)n(\023)g(eden)n(t)814
-b Ff(p)1973 2997 y Fe(Remon)n(ter)22 b Fh(d'un)i(niv)n(eau)634
-b Ff(u)1973 3077 y Fh(Choisir)22 b(un)i(sujet)g(du)g(men)n(u)g(par)g
-(son)f(nom)177 b Ff(m)1973 3157 y Fh(Choisir)22 b(le)i
-Fb(n)5 b Fh(-i)n(\022)-33 b(eme)23 b(sujet)h(\(1{9\))488
-b Fb(n)1973 3236 y Fh(Suivre)18 b(une)h(r)n(\023)-33
-b(ef)n(\023)g(erence)18 b(crois)n(\023)-33 b(ee)19 b(\(retour)f(a)n(v)n
-(ec)i Ff(l)p Fh(\))71 b Ff(f)1973 3316 y Fh(Rev)n(enir)23
-b(au)h(dernier)g(n\033ud)g(visit)n(\023)-33 b(e)413 b
-Ff(l)1973 3396 y Fh(Aller)22 b(au)i(sommaire)f(Info)658
-b Ff(d)1973 3475 y Fh(Aller)22 b(au)i(n\033ud)g(le)g(plus)f(haut)i(du)f
-(man)n(uel)189 b Ff(t)1973 3555 y Fh(Aller)22 b(sur)h(un)h(n\033ud)g
-(par)g(son)f(nom)395 b Ff(g)1902 3663 y Fh(Autres)24
-b(:)1973 3772 y(Aller)e(au)i Fe(didacticiel)e Fh(Info)591
-b Ff(h)1973 3851 y Fh(Rec)n(herc)n(her)24 b(un)g(sujet)g(dans)g
-(l'index)364 b Ff(i)1973 3931 y Fh(Rec)n(herc)n(her)24
-b(un)g(n\033ud)g(par)g(expr.)31 b(rationnelle)73 b Ff(s)1973
-4011 y Fe(Quitter)22 b Fh(Info)962 b Ff(q)4098 -421 y
-Fg(Registres)4098 -271 y Fh(Sauv)n(er)24 b(la)g(r)n(\023)-33
-b(egion)24 b(dans)g(un)g(registre)423 b Ff(C-x)36 b(r)g(s)4098
--191 y Fh(Ins)n(\023)-33 b(erer)24 b(le)f(con)n(ten)n(u)j(d'un)e
-(registre)480 b Ff(C-x)36 b(r)g(i)4098 -83 y Fh(Sauv)n(er)24
-b(la)g(v)l(aleur)g(du)g(p)r(oin)n(t)g(dans)g(un)g(registre)139
-b Ff(C-x)36 b(r)g(SPC)4098 -3 y Fh(Aller)22 b(au)i(p)r(oin)n(t)h(sauv)n
-(\023)-33 b(e)24 b(dans)g(un)g(registre)294 b Ff(C-x)36
-b(r)g(j)4098 172 y Fg(Macros)i(cla)m(vier)4098 322 y
-Fe(Lancer)23 b Fh(la)h(d)n(\023)-33 b(e\014nition)24
-b(d'une)g(macro)g(cla)n(vier)180 b Ff(C-x)36 b(\()4098
-402 y Fe(T)-7 b(erminer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
-b(d'une)f(macro)g(cla)n(vier)93 b Ff(C-x)36 b(\))4098
-481 y Fe(Ex)n(\023)-39 b(ecuter)24 b Fh(la)f(derni)n(\022)-33
-b(ere)24 b(macro)g(cla)n(vier)f(d)n(\023)-33 b(e\014nie)116
-b Ff(C-x)36 b(e)4098 561 y Fh(F)-6 b(aire)23 b(un)h(a)t(jout)h(\022)-35
-b(a)23 b(la)h(derni)n(\022)-33 b(ere)23 b(macro)h(cla)n(vier)155
-b Ff(C-u)36 b(C-x)g(\()4098 641 y Fh(Nommer)23 b(la)h(derni)n(\022)-33
-b(ere)23 b(macro)h(cla)n(vier)59 b Ff(M-x)37 b(name-last-kbd-macro)4098
-720 y Fh(En)24 b(ins)n(\023)-33 b(erer)23 b(une)h(d)n(\023)-33
-b(e\014nition)25 b(Lisp)297 b Ff(M-x)36 b(insert-kbd-macro)4098
-894 y Fg(Commandes)i(de)f(gestion)h(d'Emacs)g(Lisp)4104
-1036 y Fh(\023)4098 1053 y(Ev)l(aluer)24 b(la)f Fe(s-expression)h
-Fh(a)n(v)l(an)n(t)h(le)f(p)r(oin)n(t)227 b Ff(C-x)36
-b(C-e)4104 1116 y Fh(\023)4098 1133 y(Ev)l(aluer)24 b(la)f
-Fe(defun)h Fh(couran)n(te)620 b Ff(C-M-x)4104 1196 y
-Fh(\023)4098 1212 y(Ev)l(aluer)24 b(la)f Fe(r)n(\023)-39
-b(egion)742 b Ff(M-x)36 b(eval-region)4098 1292 y Fh(Lire)23
-b(et)f(\023)-33 b(ev)l(aluer)25 b(dans)f(le)f(mini-tamp)r(on)333
-b Ff(M-:)4098 1372 y Fh(Charger)24 b(depuis)g(un)g(r)n(\023)-33
-b(ep)r(ertoire)23 b(standard)113 b Ff(M-x)36 b(load-library)4098
-1547 y Fg(P)m(ersonnalisation)g(simple)4098 1697 y Fh(P)n(ersonnaliser)
-23 b(les)g(v)l(ariables)h(et)g(les)g(fon)n(tes)108 b
-Ff(M-x)36 b(customize)4098 1805 y Fh(Exemples)24 b(de)g(d)n(\023)-33
-b(e\014nition)25 b(globale)f(de)g(touc)n(hes)h(en)f(Emacs)g(Lisp)f(:)
-4098 1913 y Ff(\(global-set-key)40 b("\\C-cg")d('goto-line\))4098
-1993 y(\(global-set-key)j("\\M-#")d('query-replace-regexp\))4107
-2168 y Fg(\023)4098 2192 y(Ecriture)g(de)h(commandes)4098
-2342 y Ff(\(defun)f Fb(nom-c)l(ommande)43 b Ff(\()p Fb(ar)l(gs)5
-b Ff(\))4169 2422 y(")p Fb(do)l(cumentation)g Ff(")4169
-2502 y(\(interactive)38 b(")p Fb(template)5 b Ff("\))4169
-2581 y Fb(b)l(o)l(dy)h Ff(\))4098 2689 y Fh(Exemple)24
-b(:)4098 2797 y Ff(\(defun)37 b(cette-ligne-en-haut-de-)q(la-f)q(ene)q
-(tre)42 b(\(line\))4169 2877 y("Positionne)c(la)e(ligne)h(courante)g
-(en)f(haut)g(de)g(la)g(fen^)-35 b(etre.)4098 2957 y(Avec)36
-b(ARG,)h(place)g(le)e(point)i(sur)f(la)g(ligne)h(ARG.")4169
-3037 y(\(interactive)h("P"\))4169 3116 y(\(recenter)f(\(if)g(\(null)f
-(line\))4663 3196 y(0)4592 3276 y(\(prefix-numeric-value)41
-b(line\)\)\)\))4098 3384 y Fh(La)21 b(sp)n(\023)-33 b(eci\014cation)23
-b Ff(interactive)h Fh(indique)d(commen)n(t)h(lire)e(in)n(teractiv)n(e-)
-4098 3463 y(men)n(t)28 b(les)f(param)n(\022)-33 b(etres.)42
-b(F)-6 b(aites)27 b Ff(C-h)37 b(f)e(interactive)30 b
-Fh(p)r(our)e(plus)e(de)4098 3543 y(pr)n(\023)-33 b(ecisions.)4391
-3635 y Fd(Cop)n(yrigh)n(t)4694 3633 y(c)4677 3635 y Fc(\015)21
-b Fd(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
-b(Inc.)4531 3699 y(v2.3)h(p)r(our)f(GNU)g(Emacs)h(v)n(ersion)h(22,)f
-(2007)4661 3763 y(conception)g(de)f(Stephen)g(Gildea)4510
-3827 y(traduction)g(fran\030)-27 b(caise)22 b(de)e(Mic)n(ha)n(\177)-29
-b(el)22 b(Cadilhac)4098 3919 y(V)-5 b(ous)22 b(p)r(ouv)n(ez)g(faire)g
-(et)g(distribuer)f(des)h(copies)g(de)f(cette)i(carte,)f(p)r(ourvu)f
-(que)h(la)4098 3983 y(note)16 b(de)g(cop)n(yrigh)n(t)g(et)h(cette)f
-(note)g(de)g(p)r(ermission)f(soien)n(t)h(conserv)n(\023)-29
-b(ees)19 b(sur)c(toutes)4098 4046 y(les)21 b(copies.)4098
-4138 y(P)n(our)d(des)f(copies)h(du)f(man)n(uel)g(GNU)f(Emacs,)h(\023)
--29 b(ecriv)n(ez)19 b(\022)-30 b(a)17 b(la)h(F)-5 b(ree)18
-b(Soft)n(w)n(are)h(F)-5 b(oun-)4098 4202 y(dation,)29
-b(Inc.,)g(51)g(F)-5 b(ranklin)28 b(Street,)h(Fifth)f(Flo)r(or,)h
-(Boston,)i(MA)d(02110-1301)4098 4266 y(USA.)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/gnus-booklet.ps b/etc/gnus-booklet.ps
deleted file mode 100644 (file)
index 051ae54..0000000
+++ /dev/null
@@ -1,4317 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: gnus-booklet.dvi
-%%Pages: 23
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX12 CMR10 CMTT10 CMBX10 CMMI10 CMTI10 CMSY10
-%%DocumentPaperSizes: Letter
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t letter -f gnus-booklet.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.02.17:1832
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginProcSet: special.pro 0 0
-%!
-TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
-/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
-/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
-/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
-/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
-X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
-/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
-/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
-{userdict/md get type/dicttype eq{userdict begin md length 10 add md
-maxlength ge{/md md dup length 20 add dict copy def}if end md begin
-/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
-atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
-itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
-transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
-curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
-pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
-if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
--1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
-get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
-yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
-neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
-noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
-90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
-neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
-1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
-2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
--1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
-TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
-Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
-}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
-save N userdict maxlength dict begin/magscale true def normalscale
-currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
-/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
-psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
-psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
-@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
-newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
-closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
-/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
-currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
-N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
-neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
-rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
-scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
-lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
-ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
-/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
-pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
-restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
-/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
-setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
-moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
-matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
-savematrix setmatrix}N end
-
-%%EndProcSet
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.1: CMSY10 1.0
-%%CreationDate: 1991 Aug 15 07:20:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /minus put
-dup 3 /asteriskmath put
-dup 13 /circlecopyrt put
-dup 106 /bar put
-readonly def
-/FontBBox{-29 -960 1116 775}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
-27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
-5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
-0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
-DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
-71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
-4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
-515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78
-253AB32E9AD71F7E106560BA511DA17DA9B50B0585742DD7C5FC3BA0B94348CC
-1C27F194D9FD5DD303309D4E1262DC924ECA34D9AD0A1C03CA53FFC8036F7E2E
-2CD4BCCAB4E0DA5190B82FBA20E8B270A70EF52A45594AC7694410620D3C1D22
-551745BE1260BD92FB2E2E4F0EE01B20474AEBF637443CA05A7E0B10B74B26A2
-07564055ECBCD0D0FE74432C4546088809C3A727FFE5B1FD4D381384C8252E6F
-857F3C258F914EC00E2F7CFC2358216B59727FF5FBA1E338775300DB9B419413
-84D5E681B4CD663AC89F811CF0779DEDFE5C19D6B042A79F515421AFEB448EDB
-07360EFFFE6FEEA90CC2F93CBEE3D2D93F9AF8F8669A669CA69B24523F967AFC
-106C531307EDAF69C87DA583DBD6B8854984844D9108A2A80A8F5E7F7055FE31
-A245BDDC780C7557EA0ADB89681C4145BDECE9762A974B866A64AC43A0985572
-674A8B6143E9FE00CDA6D5BC4426AC59E7A0123FE2CE14DE1CEE1D36726FAFFC
-690ADA80BF135CE37E7157CEBD9AD2B0E9558B312273E48D5E2A64D5B5061351
-2BDC6B09DEB910C5B564B9EE6F5682B1E4CB138FEE1A84C4956414FACCACA131
-2BE6E5420E4F786C2AE808734394436D59A739EA3752D705F37579732B1F0277
-588DD8967ECA661987758A90E627DE0B18EF922FBA33C255DA2D65B5F0F62355
-CA7D140B162B35324ADE4C027E2C97F4667E8989930C68DA43E8BC377154D379
-4FA65238E11EE8E042A6F1647BEFA8F2B5F858ADAEE4A4202E727DB43C09A079
-2DBF9468E15E5C93CFBB7BE3EEC20AA4B794ECB6C33F2A8E61E5E18FD69792CE
-A901D8C2D2D6AA533F6BCED445F262084ED5483EA5ACE2EC337E943C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI10
-%!PS-AdobeFont-1.1: CMTI10 1.00B
-%%CreationDate: 1992 Feb 19 19:56:16
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 110 /n put
-readonly def
-/FontBBox{-163 -250 1146 969}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
-21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
-06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
-55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
-B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
-0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
-1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
-7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
-7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
-356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
-19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
-C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
-244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
-AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
-592943209E846E55B4CB54F6658CBA3C0B29796D69D0435D5431ABECF3448C15
-98CA2F36F3659E29AEB79355EC2ADF835CF0886C21B766B9DEBC3950B5B3B496
-2E06D980A8C60305B273232D4604F12632FB4F1B2F9703952C823C098543AED1
-CFB4ECF259A11985F0C944A57B5AFD853374FCF12305601200C2A393E2FC77FD
-F78C2BEB83AB223A89D9E231D1BB561CE1F4D3312057C0F2EBE3A4A42DE5841C
-76FC2DACB6AB66060F39BBC2322F2BD0DA994A0797B263F0BEC5EC4510824FCB
-4C7F8481696055EF8DE1C1C05D0674C336D02C8518CE56F343D6B42C7A97B5A8
-EA69DEE7ADE33B02CF4F76F933829F00393A85D0EA858264CB41E74E3868A981
-2B419E8D3589D2CDDF4D9DDFD5D49E2465AEC78D030632C41F8DFE22EC3F58F0
-71F6F7E8D8FDCBD2B66C36AC8BAB740DF7A644D1327039BD68E006A6F3712831
-BD5012DFDDD2B76FF5FBA9DB3900D9CA6343FDB653E8939366C6245FF354A6C1
-DEF6F8ED35EFFA585EF476968F2C493BB87F4EDAD08ACAEA4C7EE4B67A6B370A
-C7EEF09FCBAE6C68E8F472398CD0B5F8E1826464236E7B37F45AFC80D277242A
-F715AA9D4518B60BBFF8A007B2AD31A7B79C46248E76ADE55F3BAE2142CFD0D5
-619977E1A93FD9633A69A2A12CF76BC88F5227892B872AA8B3E42485FECDBE4F
-113A65D84ED470A027DDA1C38ABFA2F94E26750008F1CDE08912E517
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.1: CMMI10 1.100
-%%CreationDate: 1996 Jul 23 07:53:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 60 /less put
-dup 62 /greater put
-readonly def
-/FontBBox{-32 -250 1048 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
-990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
-6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
-DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
-59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
-D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
-8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
-6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
-1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
-03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
-95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
-74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
-3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
-47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
-AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
-42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
-40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
-B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
-95601766777978D01677B8D19E1B10A078432D2884BB4F7B8C3293B68BB78100
-16724E495064BA0168CC86D413CB48560D6D318357397832F7A858CD82030C7D
-8A4A1919716E8B26AFF8789AAF489EE4E0A88DC477551A87C7DF2856189E4596
-FE015956AFE5CC019F5CA6323A12B763B7B08B92C1A2940D3C566C43729E5482
-63C6DC5E834AEB4DAFB5AE8F0B8931A4687C94D11587B9071C8D81DA14F12776
-53A1985A3EBE37827656BD4635E03F09C3231F906874645E7DB3E59045A59D67
-E745D8487CF73FC50F64060544F624F357BC998A87FBE468DEBB38A09449EBCA
-D041D7C29225ACD16CB8A59E87924D15A9125F064710A6CCCA3AD3103D8FCC94
-CC3571C6F9192774FCFE5BB42A14B27960903144D28BF047BF4C77646EA7BF6F
-440D4EDEB712C63F2E8080419E42D1D58EED685EB5CDD49F80DB6E5553B519FA
-C6A39A093155802F3EC607721F390307E91ECB597ABA60A537E3F8C045BF5DD3
-D88CF6518D37FCD95D2F295D902D617440D23516D962F47750A682A319ACE1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX12
-%!PS-AdobeFont-1.1: CMBX12 1.0
-%%CreationDate: 1991 Aug 20 16:34:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 53 /five put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 89 /Y put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-53 -251 1139 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
-B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
-AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
-7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
-20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
-B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
-68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
-D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
-26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
-F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
-77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
-BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
-C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
-30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
-148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
-E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
-E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
-337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
-0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
-472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
-A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
-331942DA18ADF89C5E79B969611C123465054D82CE579FD1C32CCAA23D807D6F
-D9F6442FB39EDDAB88C0D5DEF3A63CDAFF6666B37B26A65384593CE2BC57B431
-BA196A7B8C6514611D83AECEE76612E2DEC60E9F661AC23BC8C0124B56B6A702
-287B95F9FBB9C60868080FF3B0F4896DE5184F0DE05535EED24D6F001A3B4ACB
-3A2321B541464B2E998294CD57DF86CDFAAB088FE612B524C8C208976D45D6DE
-EF1FE97D5AC907C5C3F7503F6E8D6856C253B85563682BFA3FCA3CA2448D1BD9
-2DCC43578BABB343AAA7E8E58885920596ADFC972CD8383DE48DEE1F7E590BDA
-AB2464F3D91A002744C19275FA149EC5A01DF715A98F4A87948F78BD565CE88C
-97F58E8FAF5022206B77732231F759EE9EFC34EC66015D35315B10F36BCDDA54
-86804DA18B754CE39697902AA03F6D49E3FF5057FE4DEE12E9C985D395F64A57
-16F939E2A7C81D1A9AA36394FF95E1FD431FA6913CBE7F50692FE1B76CB4B266
-179A7F86D84CBDF2860789BF8EC89F6AF941B3E5BB5AE1BFB49D692AB221DAF2
-D73602AD328A345CD48DEB39EE2155DEFDC024218C36FBADDFC258EFC3F14406
-39D43410CDF82CBFDD6EA9DC6AE4E8D01AA0C01722FC5AF3EF577D1AE6702258
-821F259D914110B96AC19541D7942FEC05935A4B01A977B1C9B95843DE9DE0AC
-C14EC694A278C3E2E3F6C0EE6A90F3248A066808B8E6DB3B1FBC022E9DB435C7
-294A6FD65FE3BBBF1607475E1B41B3A97064CC583A546C7E66AE909FAA575372
-765300346821C8BF7A7154F387AF49DD7F746BF4422010D4711A33C4194CF3AC
-DC6C4E4FF9171274BD982925C2C4761F453C0F5A7F85EAD77C8D74F979E67074
-D47DA7519835E6409492C6F2F6A90983D511EDDD11C9E2E1FA20FC1EB970836C
-7F9F801792A9907F1DE4F0E927CA67C1CF065BBE185B7473CB0493EE58A39AA6
-E6D3BE6DC2BD00D4D7DBF7E5A1A8742B8BE0A067FE9903C4771C26FFA66BEA49
-412718CD449ADF85C7AF7D4AD7EFC5D1182BFE3FA99F2E5167231BEA5969EE84
-310C5FC47C911CB8BB95ED58BE1E482B40CEF32E9B25BA1BBA396D7AB322028D
-66EC4DA001741D4412B554239E82E46CDE723824C38259902F4ACF395BB3AD54
-B49642CED0FFB2CD57908194A24145687682317BDE902BC0259C4CD79CC402A4
-B13747951DC48D551D570CE5D37E96A05EDFB0B0FC7AEC7FEFEF7E03518895D6
-ACA21624CE3102DC11644486012393CD1B636F3570F74A43C42F01E0CA602381
-2078D1CDF6FFDE1BEC7FFA0AB0C8C06728224DB7319E182A82ECBC85D40F9FFE
-685999ACFE52AD5CF50B76BDE28CDC76A6908B415E214038EC58150038AC774F
-CD96B15A8457216DEAEF5E306C59ED46B3D048A510C2A2DC2CF211F3D8D95149
-28FFF8F4DA0B41FA58D9F9DED1E3EB18117178CD424FD533F442F369FD62BDF7
-F3086144A316A5F5CFD032AF54EF724B52B79AF8F397BE9900E9132F06C030E9
-3679615E6F5C5D31A39E924C0246FDA63EAF32D32C4C695318A8ADDB5764FF76
-20308ACCC29AA22494938C60F00CA86D5BCC84BEA46361501866F32BF3919C72
-8D188C4925DBE2531FBF68BB18E05D13ED2D41D776DBAA8CAE61F7053AFD8F88
-BA6E4947C0533C7889B3C922EDE668A83541403CAAF1BBE16EA4A915E2390287
-F5372EC1210172005DD7C87701AF94E0460992B8A97087BB028CECF737664C84
-1ECCDC8D5BA63B34F78F799DD961C901740A116B7DB5F47A4A81B658F5414725
-DC00BF4B812A120B7F9DFB8CDE639BAB256DD69FC7FC5F3890A8EB215728C33C
-B5D0A759C560D5B8A0D3B408E795E412F83328FDDFA92552E5D05BB5189356BB
-6CFA5B1CFE89C00E4F683A7B1E40B683C3477F43891A730E4445463CD7C60BCF
-6132ACBEC67A5252B122B7DC772B2AE58284D153C139D124B12AD4C96D611BEC
-DE75B99450C55C982A9F7A5D0AA9D63A9E24C2DC9DEB6DEE7A2ADD4919397E23
-0CCF22021788B091E01824C03DFB9955886C28FC6D47FB1AAE4277B2B34DD074
-D82E26C5FC4AF6440F12DCF508E510EDF3D8FAAA1000D71BE12F064C65149B4C
-83DBFD38905DAC2871CF6B657A17CA5E990D017B65383BAD2A537A2A9BA771E3
-28B68EDC8FE4B3A82989A6099E23938B47E35FEF91C8916ADA83C64534E264AE
-1B62919A3F1391F10CEF188DD769B6FABE3DCFE92F942797C346FC770C9496E0
-B3E029ACF7F51488B4A13E740E2100EACB1D52488133A2B44A696D3C45093E3F
-D13DE8B16042E4A83B45F1D9A88FC04E70FACD67AA862F6C8E17CB14309FB2D0
-55570939239FB717050D2F9A2CEA6F554CD483D4B372A1CC9636F2F3519D00A6
-F2FDA7D77E88DB8F391B00254A6E55A93ED906E9B934BA474965701C4C113ED0
-11A882B51BE7232FC3CBE36095F1481734035BD00261A45ED22E22DFF82B58D5
-00001512FC7278A2C04CAAC330A87DE0C675D9D1B7DE28F271AF3DC21CC447A6
-65E0370B728A3FFFF01C736D36204705F83C710ED5856F1DD88CD0E862E2E5E2
-B8521A9A77612037BCB90BD6E3FD370B3A2113A784F6ED66C138A4DFD36E8088
-EAE688AB914446E11274C1C30D53599237CEE22962266D8ACED01530F2D086FA
-E316365CE2C4D71B9B84DF09103D547739D0FE6903AC5D85E90CB3009C4C6C65
-124FB515F0485751CAC9B655990B7C99194FB157598FD3A90BBE61F86C3A206E
-32A249C308B06E9C15837561ECB0AE79952C897C047CF509916409D2B86B5DA6
-442E9224D7FFF1968D89076F27238B1438B9BB4BBD6D325331FA1ED160E606A4
-445276AA977713996CEBF378623C18FD2912B4B976CD1E15E479640CA40C1D2D
-C9A99BE56EA7D61AE00BB783B4EA7529F2337C33832A99864A46EE0411D76185
-126B9438C7C0440C5EE8A71611BF29E2064A37A2023C70E41C0494A3B61F5DE5
-458D930BE96340465296B6CC7FB8B96D98EB04F1B15ED244318D362C6244630E
-55882B234F98738A7D47E1A4E32341AED639DD70BE0292BC3219B87A17696A96
-ED3F4B5193BA0BE397009A2397CD8BF5CDB4DC2BA2BBED61196881579F61AF6B
-9D3EC04DC4FBE5DAB84117CF3BAC8D710A695086F7DA5C289BEDCE43DF3A1F3F
-C01B5D86B709AC8B6BCB7816F523EF75F238AAB4E89573EB6D20D3947D27E985
-FCD630E8BCC25E920E6A126330BE13408B8D22EBE2427A97C5E632D09F0A1DD3
-FE881979C93A586676B1C4B3C88D2F4AF379E51DC7CAC13344347A7063EFD845
-0A784C3350245E0ECC320040A53570CDC19FB69FCED5D3F5241F5D18D66FD3CE
-27D66FF0FCFA0A9C7076E8C6FEDB9942857AD4BE1FDA827BCFFD0E382C15BC1A
-7B476E9192B9E8DC95C1D22D988216DF3794755B3884D7013CD56B1C270358BF
-CF80BAEB2D968966A715B63C40B5C82E342A400223F18AC470896C7AFED625F2
-823AF4057213613F099991CE653B57D2F074903E8577CB16DB00B1797C936B70
-5CD1F3647AF43068D1B4C746152616614DE2F2BF2F377DA2B321C3C89EC01FF6
-9523F8210EC36DD78FC399E767371EB06EE2D38C351BC566981183DDCD9BA010
-58AD4A9AC600B74536CDAC5F5EE448AC2178280757F75DC2584356D9409C890F
-B68A5B59B5DDE1E052982238E0DE3E114FFB06DBB17AFFDA25F9AC39C476F484
-7153EEF61C29C8EA9B34AA5161DFAFFB669FE115E4A036517A2FBD7ED07BF059
-E7B82BBAE9FB4ED1EF6283C50C31198F36226755D3E22E6E7F6BE25BEE8C8FF3
-700D71BE25B7DCEEFCE426E92640C85F86B50140317B66CE4851FD94846F67DB
-1A17A9037785F8D713CC630AA25F0FC674641B2F7AE1540EC8D8EF880C4B34A3
-77FFD6256DE1ABDBA53747CDFC59BEA50611B41EEFA167EAE4AE2446EE7E155F
-206B2A29EF61A04BC957DEE0CD3F8F66D67327F376AAA4ED580C290D6ECD6FDB
-08AD3A4199D682E1351ED3B10EBB7A2B320A7DC8B4D9BCA029EC12812320633E
-DB7A1DD37B737633DD34FD4F9F796F76F86ED80AAA3F63BCE22EA6D41B21F0CB
-19405355CDABDC2FD59C99224BA24BAE05D2CEBF5401B5D011135B954671A1F0
-9BB55C7795FC6EE89DE1555E99F2A6EC6B8807B18BDF2D372041814636E1F695
-0E9CF606B460C7BB838A3C865723C270438FBA38ED2822B296C7734837F9D11F
-B10931A6508DDFAF696F41816B9067608E8BB2AB6ED4BA93B7F4E0EB45C02F06
-45F30E2A16728651499D26EDD06465FD1A3D3E25BB322CC1BEF8E86F407A35C3
-19366B5C5B36C49684B84C2589FB3F0E39FADBC2BCFB2E00F427FA294131F73E
-D5AEF4E779CB3AE30186FCEC25E901D362E20798B6062A1012F7D6CA1B0AF647
-C5E69873F3DC9675C8C97FD29FD4C9B027982FF47E62A6947AE7ACF9439C314B
-54D00B2506930D903A0AB423BC591E3A7D042613868A2B5AD2C3AF21A9944020
-45AD834181CAAD45293BED29C4ACB2F85BB07EFFCFF697F1E272BCBE6FB24D0F
-82A7CE7B986CEAE53FD4DB128EAE1AE5C622021E85F7036DAA213CCEB943D551
-66BA1C0FA934D29EFB332936EF6C29083A52EC8575A23819852B8CC66D8DE14A
-0899C6D4378EAA447284B65198E84BE4E0B1B81E6841529ADD2F09258618C155
-164B6B01F3DEF68BA8B598FC6C93677D03F3E472B0E28E41B758B88A0E57C078
-F32F4BB4B46632DA67F27312E84E30AB1C22063AF3BF6E39AE66340D936E02AA
-8973B46E12B993C551BBB162A1680A3131D5AB45BB4D7590F220CCD982A2BB6C
-E9D3A5C43B97CB06A3E56A3AC95C16FE432CEF81A302FC359AEE0646DB549957
-411ADFA396427F5E4C59D67B824A2F1F1BE10177432B22B42B41674215A6D620
-D6F267E4FE3E5589C6173B93CD3E8CDA18A503378213665391E36BA38F85340A
-108DE72EE423222BDFA5F04464300BFE163185890B04167303698F1BCAF85E2D
-114C3DBB20B07C56ED0ADDA202E9E3A67C2DF9E4846677CED6443DC3F371ABAA
-7FB0C5ACD27AE784F48AB59ACD34CEDAE846369D85E4DCC902EACE5367BDCA11
-70FC38F708E393FA3ED5E3B444132AF63B4A88EDE13C7D6E55DDC59406CE69FA
-8BBEAEAE3BCC02C49C1636D7A0EFB5C9387EA70FCBB27F9B5775E1CBC3922FD4
-8042D2B59986FE8841399D2E4D6C358F39DB164DC62825D3D74AA55B3906A74B
-EE3B065376ADE2A20C3C67C3186E12627EA7EB726BADD821C03FF5D4CDE3E800
-09D9C6454DB6A42F68ED8A9BC160BD9D54FE5FF381A058E611463F6D4BC69525
-A7CEB4B78954256A63941AE41183756010123CA696139A2D8FD3E5BC892E764C
-9F9D7FB8401158DF1B2112772C78B1BB24F67B0B8B1C4FE9F592D43D8B639943
-3CC26AAC5CE09363BFE76CFA0C6A44EFF885F0869BBEDFF882E4700C89AA96E6
-29749A7902B324043BE77FCC6D764FF3B76223AAEC915988E21745C8C23C2C9D
-FEDB693E7E4ABB4558C78596B8C8DE9625341EC5FD02A1DBC00822E8E790B1F4
-52012004D58414C8A292CCB8F5DDC879AA8E01AFA651C54CC77411D4480E1738
-63A3E43BE6588088684C8B84E3424AF586B9FB204352FC86C3ECA65F5A838634
-6B8E3AF9109B233F06BCE4A6CBF6C99E3E9AF5540C534781D3CD0B8F9F8AE465
-6CFA77AE02DFE91D0F9B98B3B7087A4CA5757654ECDB9B037BE8C66BFCBC865A
-EA813071AD7281D34A963A193935CD1050219A8EC7270675C9A1017AA338E568
-AA1672286A51ABA92F03AA96EBBF985B985DA3794EFC88EA69C93A46B69B3E3A
-98DDFA0040F77F11D9040A933E9A0DA010EB597F57FECDAB89FCD35971E59D12
-3A722E238B9A28FB9578853EACCA3AAE8102269243A758AC4C53B84A0863D881
-51D31E04A2D2A92B6131F5E0D3760FEB635C2ECD93319D2DCCED90AAF1E841A8
-48A5F38F8922CCEC7A971EC31D74B6AAF440E03D8922492485CAC2DEDB233154
-BC40909995C15573AF4C5A20870698ED9B74C02278B21C93948096DED79F814E
-5B7DF52E1F1CF73313161C6BFCABBDB40E94D7D60B35CA037E1063F62A46309A
-E8E335146F3E0148DCF5B33F67A14391767B33E34A02823C785750B635A213CD
-A84771D4B6D61FF7D65CFF7D990C9A6DCFF7D11F74C8778F3DB4B6E1A80DDFFC
-6087A122F11B607F3ED84CFB0BBA596DC7E06C34DCE7EF1486DE9B9B6B1F97EB
-82473DF29503E61FF937211780F33F85E1CB1D6AEDA5499D703CE7597A9D2034
-82B65AB54104066CB375EA62515045AC6F240566D15280071458DEF3F7C4CA9B
-7E13419B21607717611A61E969B53318F5CAC01FF9180E283D50534F933E1FB2
-4DA052C2F8577C613F4FA2E92F57FC3A1BE9E6F8BD4C122B038F72DDA904ABA7
-DD62A56AD97F9545E20F8151D778FBDF179A518CDB3EE2A57C102867738611F7
-7CC5DB44C2F1942457C6E7842245F068A714336606525F36221096590567E22B
-D1D2FDAC84D7E53E1263EB26514C72D22BBCDF3E290BCEAF0B61EC25EFFB88D1
-B983766CE346948965DE7E4DA2109C8CE13D2E0925B5D230087C9006952BC852
-9D5D577B60C7D083CD941EA249E7C4EA58A24CEAEA0533BE38D63A8C44722077
-16C163243B757B810D13CD45CB407AC574478A6874FDA05BDBB5908723442FF9
-FEEDF696E434669FA2961D36229DD64E434D0C016C2E48A399275CBA2D4A7B17
-8630115B762A02EBE280E76C107A3F52BA07E1C02367637FC439AA0F36E5A309
-A88ECBCC43621E13BA9D1412CF1DFD815B9090D4B5D5DF8EE00FD1A31DF4A6D3
-5DBED7C09E06A65DA835A8EF9A54E823AEBA6049B33A52AB7610FDEBACCA7CA7
-28D40B5BB9F19D3B910DC51B09D4F8BDB5027EED2BC79D9149DFEC627C8EB277
-E1B5BFB31D2D252BB664807A4127DF66E9C8A98235AEF263CE37E9398AF814F1
-BAE29A162061EF2BD03DAA16B16268A3334D8B92D700CFBDAD4D965C96DE39D0
-9268AA6A9D11C403FF3D170B2BFBEE5A8F805499F825AE5440B859760CB05D55
-493F024DD03785853984509B1AC437D4F20012FBC2BED50C5B3AA3326E3FB0C1
-2CA9B111F04931D5300CD276C936CCB7730A2031C58AC9F30F062741319094BD
-75EE0A75646A6A2CEA8730904E32315A708DDDE348AA7DC050C68491CCABFEA7
-72026223026934AFD00C7877A0FBE93F11CD49142CCCFCCE2F0FD18410E817B7
-D451CD0D799A2F5137CDC3727070FF522735A1A174DBBED299B5AF2A9502A8B7
-C399AE97658C675017826A329017E25367459C46CAC71CE7917D401F742AC058
-95687876C85705AA9DD6853DA74ACF0E00596ED1CC1B1513579EFECABC3FDD90
-5BFEE49316888B05C580263D86DCBC18F78BE58BED0DD64E455F7A88385F7883
-70DF1402A6DDB36FF93EDBC5A36062917D52633BBF165CA292A8558822C220E9
-11629D5B7FC13D0D0F9FFDD40815AE1203C2F58436C23A055C80B184D1A01287
-4ED651C118B560FBB1462689A3C340976600893B63ECDF14E5056F531C8CDFCE
-48341ADDBDA17522C0B9951D32D80DE0D4568B532722081FBD06A95BC8C86E80
-1B5CE483043CAB15F9EBF09B18678EEAA6D25A7AD6B224B84D7E16DC9EA927DB
-AD16D1487E2B861D70CEA5C81B424349BEBBFBBAE84A3461EA886A7958E17FC5
-F69727B328E1D079D0F98BBA1EED665630DBF99D2D535CAF87726A74980BEB92
-75975C55AEA05A57AA96F8010ED8B1E85F7A508108AABCBD0D3FE7D67D2F830B
-63B9E6E6290EA1B283563BD930724C4745A11DA7F75383B5EA1976BAD60818FC
-E66643106D468CC0689093E39691F03FA614658EB837305BAD24888995B06979
-0F28AE16FB00B081CF2776E42F336213B31811CEB57F4DBFB5A1C5EF045A4264
-07ACD3AFEEEBA8DF985A5F937BBD43D9F5F7B313F368587D15460A273F4A2ACF
-32C94935960580FD51B177714C23991E4D9991621E99D96E03B3403DDA3885D7
-E0A4D1F9DBA54BEA9B3DC7ED21FA8ED18C3858C861F730FBCF2FD8750BBB35E2
-A4CF9B7A7B769EE6EDFC4CDE0072D466CA61E8743FC0E2AF50719527FC9CC3FC
-4F1AF130E9204972DD045FAD6A836030040E3E769786FF967E5430AADA9F5BA7
-F4B2A78618FE4F2A8AE138F2977C10FC6FC3B57059DA43CC971439DC43C170CB
-B47DF3A939F6A3F4344721D08C2939771BA61608DE96E7218C4F2BB449D83EEB
-2120A71E1B6FE49F2137BCE29399BF8FE3D77158798E2433642B5AF8FA4AC080
-24870E05E5351C98EC7A0F1F15F0309DFD3F2DA976172989DC0BD3FF32627A33
-88CC2F25E30DDBB5F7595073E3B69967A4E7B138BE7EEEC8F6EE0A363053648F
-C3FD2C9B584308005BC660FFBEC8E370CCBCC28F78FF2908EF74AB735D414699
-5410A026150D7D4C18539DA13D7A28F1D04A27B9ADC533F7217829B71C954BB3
-122D0E9CA05EA13F8AD8777E1B6FAA948683AB2B4AD510352D8EA23FA6E6AAF9
-D06CBB874DCB0F77CCA88D280CAD0E97D4661A5BAC20C0612564AEF2DDEA37AD
-1E9E2703B9AFB83AF1CC4229A8A9CB50026068B46856DE04A0C94EBA584003EC
-966C471A340F061C15933AE02AAC4571C562960F2014B41E15F456584E2E188C
-F6E3ED15A19F324CC17B715A7A1926B2A6DE01329C99CB040B3F5A37BE1E5EF5
-2EA5E374D6AD7D0769FAC3D34A521B8EA85AC2A5422F4C309798AA803070DE46
-B86141D056068BA00A345E1408CB582CE10DB970351BF2F355F7D32DE5BAA3B8
-06F04CBA2C7DEA2A8E3FCA193A078CA52655F9146DA4303A228D773B02B4631A
-70FADA4F9548A5ACE58F7C907263ACF724FDE1E82F47A11AAE4C00ED75FAA7A0
-89858BABA114B41B3289F1A4BBC9BA4EAA02020813423C6BFA45C6C9D95C8193
-02CA0FF7B2FB0A1F5168DFDB385713F3D9F2715830F9764BC016C3CA5CAABBB1
-B704F3D7301FE8A961C8103361BCB3B40969A96A22F2744737B6ADA2ABDCAAB5
-1F3EAD524A3DFDE199A9D06E87729C520D312C1CA59B5878AFD9A5CBEFA907EE
-492576ECD05E6F51256174C41DD8A9F4646010609912BFA641FDD77A1966AB6D
-4C723A8A3BFA55C6ABB0F69D0C2F1C30BBA7E7BFE217F5B6E31CB6589D4E97F0
-FF3B9E6218181FCE7A0439A254543BBDA069014A70885960956AC81E3A450BF7
-53A59F124BA02A72D4201B46465762AE579C143F5EA943BC3D93173DC27FE678
-1F408F4EEEB177304984121508E970866BA4F6888D22D653F60143CD90AE67D4
-FD4054EF70162D5252D3370FCE13C0E0366E5614D65747A414AA42702CC7FA54
-C36B6E9143DF0835D5414F9EAFE6668B6EC7E772702918855E3969AAFC89C3F4
-29239EE9953CFF5848E8BC04FA9702E8E5344313F37C48B0B9E9315093018474
-637469D1850AF738517482692898987656F0CA14C3091CCD080C3FAEB02A0A73
-82CC4DA2E60AFAA299ABF5679FD5806D20B5A1BD85CB7E93389B6E63F8B365F0
-38573DD0CACCEE2EB713411057EA6CC5E0F4517395CED9165CAC183B8536EB1D
-B94621BF6ABE1CF0128FBE95E7051FEC47481AB391D7023340B66A1FF8CA4200
-E06D3E7121359BE9C63E04F1B32597D4C41108AD8C868A26CED06D7241C07527
-40D33023AFD4D3C264C9A583E3D5AFB9D3CAB0EB5BEAFD4F012E5F6BED0E55F5
-593D1E696C3F6606DDF2960A81561DF466A10406B296F686ECFAF51A5D017406
-DEC73D06EF5CA783EF3B4D03A8E4E37393B9356AEA788AEC5BDC16708D470F22
-4B4DA6A85F390D0B90906E81F46FC2A39852503B591051ABDDA88392BBE2D186
-3D1DD279A566B0A23FA937AF106FAD4B1AE6170DEAAB519F7CB6EDC352DA91D6
-30A30B70E3D4886C1BC6EACA9203FC21515D3706A115F9E2D430957ABDB077F6
-2AE94C9197A4B3BE6236392E96BE433C063AFBEE39B3EDCFF02D790F453DD372
-0065B24210F8589E864535CC3E6BC1E9967DEE1346272CD0116F4A56DDA67B81
-2ABE3826019A727100AC5CB358BF9DD26C7E2DC9F29B5F9FC9763FD5CA81621E
-BEFADFCC04846FAB053887E1566C239DAE3505E23104F6088B94083ACA1DA43C
-41992047DCC923D1C206816DFC3419E7902342BBBCE2005D9CB0E1785203CCA3
-07A545E26BD84AFD80083BD58F5D217EA190565DDC653124E43CC8C2827DBDE4
-B5217931BEAE4A6873CE50978247CD2E48BA8668B4B36B3A37A1EF08D3D19FBD
-32709F9F31EA4311F1DF393EBF1B876B3BF5047FFFFA7240CD41FE769318DC58
-1DF16A3A8ACCA24EB905AD1058335C893F420A41CFD8E56875A2144EEF25894C
-FE6A227FB6A856A043F9C4DC7E77A5762EB8C9F46E2E46CB9CC7260F893127BA
-D5D1A781DE7DED5CD7325BCC0AF99CE303B72BD83DF1D08FF4AEC50B15B50AD0
-A7757BE5D0A1AA1C50B78934FD24F518B4A17B62D27FFCD767F20254439ECD62
-3A247A5CB3C050DE0426D0D220CB3A98901056EC90C38EC7FC2D3BE08B6DEE5B
-F6F62177B3B5D080AE1E4D21FFEA92C87604B50FB4A16FD4EB3D28F08D1E330F
-64A83864CE1EE1F55428D7CD5E5D645EF4998D1EF6041624DA46BEBFA14A32C8
-5EF6D4FA176DADD6CB90E3340FE60B1FABAC2FD6EB3EEF4BFE923B6FE66ECCA9
-F63F813C9B37408BF89A94F0450F9F8DE6D671C8A95977735DDDDC275659A458
-B4D9F805909BB97DB7532ACCB1946B6D4CE2D878D910610AE6FBFAC6A1146838
-60E05FA48E463A52AB93D657FB35CDDD64606B44A4E6A360D036636903BE101D
-8BBAEA722F21543D9EC9A2F943AEFAFA93060C97CFB56AD6995172915DA2FDE0
-EC80C3E08287AAD52E4E2EF7FD257934F03461C4D00C7E1C686108E817532714
-6818FAF4BD40810EC9B8DFCBD0D9C2409ACBA8AB5DC8AC3E2A3B822E9091FDE9
-86836156CC7BF4390ED2742767D048C6D982898570AD7EFCF386EEDB5EC7CEB4
-3E00657F9990B2099F91F540943D1ADD9B6B0DB429D9FC57477BB7F7165C54EF
-BAB5188388BC8D2D54BD81F52005055408B4CBF5E590A043CF8142417787F6F3
-B76ACAC3F565AF3FDCE3366DABD0CF85F83061ADDD5E1BCFCE0CA486361D09DF
-B195F399E4216820861A2503D829A5328AFD24E7B7DDB9B23EB675DD9DBFA945
-9EFD9BCDBB36D37438F25307E99C683271CC4EB434A059EF26AFCB95176B4823
-811F93B036E708F3E6F2F2505BB0093ACBDF045A2262E81F1684E64A128E5A4B
-B499F2A1482406E9BBD4C3DCB546B679C676065972C80A18E82E5BA47539A496
-C7BE08E3C8A3A796CEC7D30A333EC870DA3A26C671D2BF55A87F696266CA0639
-AF8DB19068AF32943E8CC4158AB3528FDA63DE7B58E7E4532D7A0C62FA37ACAE
-1DC66844CB3D1C42C168713F2A6584B9DA5A11602B4AA1BA34B9494D7E18CE18
-6CA0A0FE80B9C564234DDD4627DEED8E9A0367A8262AFADFC10573D9D0686F0E
-AF8B7D849A8E826A2A0C14AB4807ECC7EBECEF411F0FB3A528BD2F8B109A722A
-6DA8AAFDE31164AFA47C68738B6B0ADF57D9710CEBDDD1D2DC13FC6F8378F8F2
-D269B9260669412AB6013B64CDFF68B20D0EE77956AC102285E6197C5ED7D001
-A2D6CA95BD572B8307053D3213763B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 34 /quotedblright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 51 /three put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 92 /quotedblleft put
-dup 94 /circumflex put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
-61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
-92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
-EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
-43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
-FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733
-4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA
-55D48DEF261C3CE14538C0AF5D07EEFCACD74368BDA94AAD203CBCAB5465F186
-82746D4C6A28F9D30C715568BFB011B6C12327592F8B086ACDB860B1B84DB9BE
-5D62B68E710728B40D3955F2954B2172647A7E768A6C9487E3C56D4978D17EEB
-2C720C85A83E323316607D56427221155B13CDF2BBC71ACB2F390F74E4109406
-70F027BB697124CE242BF18BCABC31F73E1809D2905251CD45F02B39F4C7641C
-162D24071643036BEC9106CCD764E3BF4835180A415348B848036DC6131FA96D
-9F4B393E53015524F0B1373DDA8D93A68E8175349188C0204483838C4B9C9DCD
-4CABE113B257128A83EC5F01ACBD3C7CACAE82688CB51661E40BF436628C2D94
-445EA8814E2263B4A9171EA84D964AA3119948D4B63E570B5A0C36AE283B5868
-05C7BA57BE5EBDAA1FEC31D8156D239A8761313946217C12D9286E6FDFDA75EC
-0E5B42D509AEA741853283CBDC74DD1A10BA88B3C2CF9A92B899C8F8ABDEF899
-0E9BD56E8C4CB7196FD7BAD6C8CF690C4D4CEF20D632F79A2B82DB1194883E0A
-5EF5CC7F4D1A13941D1FF042DCB7834749500F4351F88439A9D234B02B22BF00
-85153F38C6F10A289CA60A13240297C6076F7FDA18A72D10138437EE44F47A32
-D8575595299ABA470E16D8D084E652A76AAF7E9471AE8FEBE5AEE0C0708320E8
-D6C7D8C583B812FCC770E14214522C19D9EB6219189A4623EA71E4274BA24933
-DF43A387F09730F9A250F75CC7893F256F89EA09B37359CAA6AB5816339B4FE2
-6ED8917BD41E60877E62A9FD24392F550A5787C961FE2354A441102CC7A3C0A2
-017ABC2177FD83C8865A819165DD0F00EDD38F868ADE447D8F48DE07C687E4C6
-BABDAB605D5D86A289A8618CCA17FC406CCAAB0839292A4A1AAC91FA705E540B
-63A6150DD6BA5247D7A253ADEB87A5EE05742C7B2C1E4EC27EE4AF9BDE1A497A
-E4DFF6285E286C39075D9EC1A987B85DE7DAC4A8E8D9278F9D864A7D553D204B
-9C28FD08DDFF76B910715E8B98FFD88F4C346A441E0D4C268DD401250F6E071D
-6730D1F724BFD73476F31A4D5C020F3C1E093B15AED71A403D3D17671E157931
-8C443E8545D122085ADEFD305279EFE90BDF8832103C2271A1EB33A4B134494B
-E25BEE707161B04447405835A633D126CD0654C2F6F3122AA7C4D61E5B454341
-31E17EBF13B9B41E2F04DAD907074BE3AB545A00D81B5CD020DB050916680FBF
-C9FD2D2A0727E7E81B9E7D7C58F9BEDD98E6ED9A01DC44BF1106B8F8A3D080DA
-0CB931FB2A8C3E2DF229206615A04EA3F9E0215375F90C9189297BEEE692802F
-75875E95666E455AE3BCC5B94DA269C663A8B27538AB78889581BCF5EE594087
-87BFD4594A27B03630E806C6F191D634F9D24510373C7BFB2A3B151BF1CAE371
-18C5956BC9523E372E720C0E0CDCEB71848D2E18C328603F6B480736E6DC0164
-83DB39D529A11D5E2A16DD8405471BE0314F081CDE35719C7432DE421D7E5EF7
-3D31A22243386485F5C975E2B8C62F897E917E9B48C716D29D86FE0873EC7697
-DCFF0F3362DFDCD74117AAC219A9F295FF8654336AD04308F9E006D47C6BBD5F
-A1F2175C2EDC8B23FF8F7FC50E3E6A67B01297099335C04FF4395C58389364CE
-A05B63C4F77D4D19671C4B46A790E97259B9D34E1B2155FAF5C27E88093F29E5
-0A88D76CE7C25C4146D2BB6560D5344462FA0B28F7173BA5ED4B0A54EB880055
-8052F0D50C1625776BE94A4085C6E7FB78108EA387EEF0485C71E4960C8436D5
-8F3D48708B0354BF59ECCC8AC90AF19A92B600EA9341E8049AB978224F925CA1
-D3E16F3608668B506427DF60472A5E1EC7A43EB60D280D2579B2B4AD708178AD
-27BF68DB7B4E341A2399309268019736D202E4952154715F3F6C39EEDFA2B5F6
-12CA55FB56DEAA6792576CBA328F54C396D75C4DDA7BAC2AADE8861B6C8FADC3
-9141FBB1C79B7FF265454E044B81E757B4F562604235C1559CEB012E13D47308
-2FE032ED75CA5F543969BDB56340103787650FF7DF4FCAFEC472D6F4D80CABD3
-95EA28FFB4014B99211702C460D01CF679A9835B89C9B1EC0F5917924AFA5116
-9A3547D81212935731BDD7BD099342A6D3810AA6773E8AB10EC42E2E5C7C43CB
-256D240ECCCF989EBAD7B3679F5B24ED8779A0E4A1923854F45C9646F411BCC8
-71FB9ECCCEE45FC87857597FFAB005CD0F10509C5CDE132883D58D4D366018D2
-FEB8846698CF41A4894EA69182C48F47F1582297068624B21624C5604C70B81A
-DD33FA7085DF4D6C8104027939754510A7943E7A267F669BD47F68C11FC96A0F
-6994F4CF95E64C52308494100A396712889566501A97EEBC333DE9BA93F31B7E
-3494C7A40B37DE6239A84148A09644618D891519BF7BF5079B06781E71CC4D1A
-7ED423E8156D8CE3F8B1AF834817C186628B9E41AB4F99C4CA5ACAB118A8A28E
-18C9970DC8C2C2A3DC60DF42B294AC0603AB5AA798B3054DE3A81EE161AF7DDD
-EDBA0A81B614F36460CEE4E99E4C0421F8E0AC5CE986B56AFC7A5329D24939DF
-617BC4EC5ECC462D6369E16E1D26D3F4585C2E234B816A17CC7AD8BB26AC62BA
-D4152F6307A1DD4E95637697CABA4B0F00C50B25245EBACA28DAF97618E3B8D0
-32464AF7A9FF3B582D5D8FA33B274F76BC846DABF491B7A445C036FC5B5F0C71
-6FC7A4E029B2E4384BB95CF7661C33C90EB6AB12685B1D6A410C38D3CA4B4F5A
-B3C2488762F2B8ECD440E8985434786DEA5006F65E2E5F5656023B237C079CE1
-EDEB5A95D9B8D657EE7E4A289F2B372A91629A70F78BBAA6849F4508F3258D55
-F38448AFFCFB332C02A8F747A7E6595F21D6413694C82A96726BD5C9EC74F304
-44E32B7BB056A21AFE8A28790E140C9521ADA2BA82F655DC725201F3076BA07D
-044E0DDF34E6B3465B90519B47D484CF91B31B161120019EC07548743928B550
-37FF94DFB5983E3D95FE1F4FCF5DF0CBC27C3F7F79575B4B9C112F07D5A0538F
-A7789EA1350C2D4DCB472DEBB3A58460E406BCB29F7D7EF04686607E2BFFDEBA
-FAD0F98B0767D1A19D6E48461C8DBA9056525D5D537EC56E9B0843B7787466B6
-C7303D72156E4B4538AA442FB96FCE0F03C328AA001B0A581CAE397ECE3C949D
-F9BFAB59A0ECDDD9FFC9F1B2D7FCBA709F5A58D650E6FFC0285FFBAF5C1BA13D
-4D77CD5A7D85F9F80629F65B1D347CC9ABA8232E74A5A772C610B2ECD90899B7
-81CD4BEC821537DC1CDD9E5F3C58F75F726ACE574B0E643A68652FACA4CB2809
-E6A7BC46A4AC1C797F821C183F5B7BF0E7B935862132C308EAAEC6AEDBA86442
-98369E0C9DF6A21DD7C440C1C82C7FDCD95AA8104D84A77593F81815B88845B4
-CAC9186F2320AA0AA5994B534B72D8CDB91241726CE3B537862150A7E93C4DF2
-4278001759256A463E0EE780C486700450C286C8C37C0B60A076B895AC116FA1
-CAC514BCB15E82E59A71CDE6B3F8FD0F9E298B1BDD95B8BA996680D35ECB060F
-6635D60C21BCFA41BF9C0AE9407450BA86D43632C554BEE240E59444132A31CE
-33173935FD428943F27C7D6B9689EFC4C59AF4B9679AF0CCE2D9C39CE9BA9380
-67FFE0495840A9241F57B06ABD2C8C24450718E4D3A387C74D1A9706218A7EDF
-964227DE6747E1C88E971A5572ABC171BBBC5C3F064ACB9378A9DA35A4F89FA2
-54FEF44EB8B19686FB61F81DEF8BD7D35F9B387040666A4CFEE70D77074D3985
-CE056AA89E423369741A7D5A71973E49C9DC9AA3D464FD89C15110F559BCC359
-E0F12F02D4711F54A10F4BA58726E837A327DBD36CC420A184AE5C0C97C17281
-218EC9F166FEF376DC8B22E03F974AA8EBE598945A13E8D4D28329A660B4BA51
-A23C7D8AF15D7059045D1EE9F41913F1700F41C3648F3F16833320E88FF1A780
-D2DCCB94EFC28A3E628ECB571854908366D7805385B2768B8A117C15C059E688
-8AEDD18885E0177727B304FF3630B75969CDD990C7DDE10DE4E50DC41A2AFE46
-10651E36BAA92DA9E1FDE92E0F8C689495C12058B5C01EA8A39575471446E820
-9F068414A4ECD024D28E5635F9F0F6695A775EB9A19766766F13ED39350FF230
-970717EA4245E8A176FB2B150D6F790D05FA75936F6FB0C13CF47E2B457C6118
-B04C7D350F9CBA86EDF404171A0887F7E0A3CEBF016A0FEA8ACEC09076494FD7
-B7A93696C3C6D498BB89C41AE6B355AD4551CAA6E2A755B436E8D6960BD4A849
-71D4D68643E524D6CC2B909144BAE7FA35E432693B5BA6146F23EF1F1FAD6C85
-6E3DA573EA8F69928331254D7DA243079F7695426533990F6282939A2CD2BE71
-EDF13D938AB8D440E1F4D3346305E6259E1CE52C2F15A643E33BE39DBFBADB9C
-C2F0DF6568E7FA4C229C722A722AA5B14FABC3166F9F2170DC082DF6897DEEDF
-E56733C7156AD31D5577C67FC7551C189DCDF3984B3F4873ACEE4C28166E9E1D
-C85CA23B88BF54E56B9B001D5EFF302A134301CDE12FC5336EF358A14F387AEE
-FEE879DF032B65A2CE8BF0E6610D1E197594B947198A14616AD4B288B4F42594
-5A55D10228ED75F81B7A6E51D72B610F2B9FB348137CAE8D6FEE7BE34CEB7246
-4ACCEFCC1E46023009FF18ADC18CEF3861C006EE79A69066E233DD3A084A49E9
-807F5C8D089204C97D95883CB43DDD25949864F6AD2FDEA181D6D95C5B50500F
-A9FE3A8C8C13696669138B24269D4038F1483D45DDE34C5EB31984D7226C83AA
-50512648994D4508B5E7FC87BEF9DD22CDDA111CB518CF123354C910D3892578
-F94C25D08633A428EA144C222F052502F39B7ED781E9A25EF28C0B7DBDE5F551
-A3A4DB51AFA951C1474631837CD091BDFA747D73A911DE2D0A3136F11483C142
-586303FC5238323287B4091F17F51C40BE192EEAACA596FBAB0F2B6AC5548BBF
-FFE32B64809A71F973C2A6D807D659029132C42EF05AE8720381AB007258F74E
-8C3D1F8B47868FDA1E8315A91FCF828BDDAFBE59D8A0793424E44A5DFCE9FF67
-3889F8363D92FF6D88BB1A1E266330F5BA97B6E09AD6002EE100440DB372E5A3
-8C1576A7F45854A4BA3A9AF7E5BA3338CDAC032DE2FF5E83E54358642A454DBB
-D1DBF68378DE355B59797DFFF678AA242AFF22819418DF8ADC4A96B6712C6F3C
-87606C53003B46EE015D4E076714BEA316830E6FDC25D63F2DFB538EA71C4EDF
-A0489F03F9DED8C6C4DF5AD7122588D8291ABFFCD8E94C5859FE8320D8EB2CC6
-1C6406CF0959E4ED23EB633F88D772BE533F6E10733081EB8EDF5105ECB24EFF
-5940A7CA3456E755E30EFA77D4561048EA3610E3AA21515AED4C2F0DFE0E00E4
-E309772A31B39890F58DB1A6884232B2A71AD7E4360F8338AF0C951A08D592A9
-66D1A5D92F2A5EAE938CA4818E2D9546E02AEE318392FF8D0428A4648DDD5E30
-8A9FEA96F4A744871C2535CE84F31AAC35B1E507BCBD0A3F38C62B87EFB27DBA
-2E74BB6686FB4C79AE67E5922A37878FCE64D5C4764DA46D2647355C53907DE2
-FF4C2DA4081A98951CFA9EFA1258BAAA2213443E559D5F50BC16EDDB09BDA691
-8D35C80691478FDB3DA0341CE0FD827F98A159A0F6023F8DC404F5524F106FBC
-17AA86B9CBA5080B41D141B8311C0F9797DDCBFA120801FD066EAD7C2B816B81
-BE61D751A4791C5CCB83C8F92433F526757412E8E7B20CFEB35632D601913F0B
-9E84D106B99A6C366B1FF829997A3FDD87D423A788CC160D558AD59CE2F275C9
-4401F6DB975E2AE2F7B45C70C50AE7D556E6083DE28E6AD0D3974B28394410EA
-CE178CE8319A529DB95865B82F3F53E06EE20E9FA70DEDE906BA4DE96F1F3B21
-B5D992BA16176A097B6DB210430B01C3BC689C6ADE7C4911240DD3AF5F4D8132
-32C5A7B5B6C37133B35BA0C9AE5639351D9EDF8E1352D212EF3DF5A5158080CF
-887346467F49B9A6DD802372CE73FC34540AD0121E897D84152B64BD0721FE84
-E88927694F3217A0D8316C0BE99DD684014A360F7CF85A398CBA0BBBE177A3CF
-F05A2DF43CEC93DA419B735EBCCCE5AEB0610CD72CD7CAD1BA8C394974AC86A4
-2E2171C473EB9943BDD075B01F4320B39C1A3C9A8D68909ADE0063543D1DAF81
-00959CE185E96870F199B1E27555603824875AAD23DF7BF3909DC446EFDF905B
-0E1DF67731DF20BC6C6A8794E5AEB35526563D748016A369CC78CF6506568997
-4832AA528A7D61A9848AACC14080435F4C1485EDE2F17E292FEDEBCF4C2B9309
-5E11AE7C7E74E148B6B5B6621129A0591D042E87334C794FDD077309EBEA18D4
-3CC26C96F6F82DDE429F648CC39FF3E827BE18D0D90102942875984F4E985D78
-AAF75597CC6F41A5ECCD11BFB458BB73A61F7C01C7280E301FB0DDB81CAE0F52
-4A82A6AEE509EC2BF352189798B346D8865C5FDB3C508C60C201CFE64B5975D1
-B71719E46ABA3AA52287B200623DFB901563432A5037B17756F00C0FC5EBE99E
-1F69FF47F52C5D3A627F17AB19C5AE40845527FBF7AFCC17063979E8D6A6DA7A
-BD42B97B9AB1614B30EBAE85853F28DDE5EDECD42413E1085B1004544E752B19
-1E461B72EEC0BAA7BF34395717BB25661105650A5F0A195E42AFBF80D1DBB4A9
-5EE88F12A1E09904378B4AEDE5A7AD3CF926A24CA56282CC70E5CDAEC7B2CF38
-0B12ADAACA7B5CBDC369EFE71A9B910F495D884CBE7EDAEEE6017F1DCADA73BC
-3E640D72EF023E665E2D08D0742A5A6FBFE8C1633E2EDF1C3CC3D0C6643C7CA5
-6C2A8496EFF4C50F972CD37737D3355CAA69F4D1F34018C3B68028AC5425C96B
-54B448EF955BD7B70388EC04DCDA0CD999E7038F771100F2864220A6B9A72B43
-92D5237E22A55F72DB92C265EFCE8B0B20E51DA10DF19E68D4ED5FF3718703AF
-0230F261D0311A166D1E16C9BE3DDB28D02A3BFAD21427F0A725BEF62C4C17F3
-003FA2014F38F8F0A965F10A6121CFE7079AFC996DD8164EC7CAC6D870260487
-D554B3EC13130705F7DBD9ECC6AACAE5F9A2AE166BC71353A5398855907773D3
-4756689A7561355EAB7E871B0DE608FD43BBC20EB78931814BDE794F45A7AEA7
-A92F97582E7079A488098B381E6410D3946D2ACB73E865FB49E806F5D668AE05
-47C5ABF285AE08E32045D24087B931DC94EBAF02F8358D674CBA97A3E0708BED
-9B6D55E7CD7044BB25C1E96EA516B503C4D185091F55551E1F1B8BF925E44188
-28A1668C90ADDFA30827FFC2840C728C5EA2D3241882596F8232B91DF24670F2
-FBCD9929E57F9FEF100C8C03D74DC8930B845BEBEBADACB35DAC2EABC393ABB7
-7CEE82F823794AD857F182753E60B874B527D66AC690131DBC3886F159A722FF
-3B7830AEC1BD49D3D4C87DCA623233141E4DD81369943CD6C03E62D39176785D
-D3EF16F11A3162C102E7429F3B94720F89676D7C7E42426F224C8BFDC1874341
-DA6B35DC8CFFA899C4ECCF93AE5724F01EFA3B7360FD0D6EA3CB943ADD2F723B
-2FB72884874EBC7B0E1EDA76A8AAFEA746BB6EAED407D554BC261CF7E25CB075
-0F53AD6E5CBC29C49C11DEB192D508CF0EB1ABB4970A10AB7797B41C294295C9
-DEB70DC3A582859143F074F137CCCB6AEDCE4008D48390A3FDD35A0590023A0E
-FB3D65DC5679ED5D47909043557EBB1AD8945983096B0D9C6E057650F229ADC4
-2C0494633805F89319EFE8A5B063A8E9C67E83005B1DCADED61B81B20D5CF78B
-F3E70DB1DD68CE6D860CB308928950DE9A7B5FC5FB25BFCAAB8551D6D7B37476
-50B213376A8167909F95952E5379DC0CA0EA2485ADFB8A3D07F30AFBD179CF76
-6CF45932361C2E693A04264508A4206A681AA9FA70C5BAE52416ECD70F7C2898
-33B787E3D76B0E232A95706BF5C6F40C75883B752487E6864404A76940EFAC23
-1D0B7FE592B4AF04F69D075DA097C19B87EF6554AC94A48DAD3DFDE665C473CF
-5AE950F66932474A9448B1D4083373646849C13E01A562D43BD418EBAEAF3A5C
-919687AE5CCD3633EA440C6EF9BD3A9F1FB75BF1678166B72B3CB8E13543BBCF
-837205A4C1A61B0F4B2D98D2729343AFBBEB0C59B1B7719185A43DAF01113918
-C89958DCC11B047859D4ADBE49606ABDC8ACD9D3FCF94D05B39932F36154ACBC
-DA6C5697A0E868C4604D4C7985530803E6A458341BE76959489B61D681F07D1F
-CAE8FC93E2864DDB0BC0EF7000683FFB1285CB13B4F6602C98A9AEE3D7F1CE58
-C8B78D004FF35D31623CB2E8DC18B512230537376C2A9E7366D7A8F296CE50E0
-FC20D438065820AB2B2E0DC974EF515F5218478D577A51EFF5881F3783DE7908
-E18D7C5B4E2012C88173C225263E5186F457B58E8A8561CEBCDACAC17B5A6FCC
-15725D062E1340AEC46BCB6A9AB0BCD58B218122B04BE74F352C7E13171D4005
-02AF3C7459B35EF085B8247D5A582F4D8C3C19795A5718CAFA6460836B54776E
-367931B8D5FDAD890D7AF9F426999CA7B715D686D1079B303639E228C0254E8A
-399835F0B3F5669D89A783263ACEA4E63FD9C2EDB48B774064F8AF45357EF710
-82F270C599AF4223F75E7A32C9CCC82FACD11F81C85BC8483E860D938E6F9DD8
-EFB64D4EEF307C1940C238CF674CA9A9D24454E0D0611159DE357B4F4C13A8CD
-0D40A5620166D952029661C1B47FD716010C3F74B5B783E4DFC993EA78C9F355
-194C7B93E63E012F13F1BAA690B38E2AA01FF1AB8B07349E67AE79FB965EF406
-37349BE3EE4C43151834C98465C52534AB0B46D2B586D802DADD06013D1072CE
-B8E6FDCFFA9544613780E98D3BE40CBD685B0895D04F3B43A5D45B89702EC5D2
-2C00DF71405FF1EF17563035A78D845EDC5DD6FCF66545A87C04B008383E28E1
-A73E08A0FF057D4289E706E029A5A74B5273197C358903C459FFF85460E96E2B
-505D75FC2C1CB44D62D61010684C0EF67315C12DD5F871C9466F8AF75347F439
-1AB75EBAE512ECBAE841DB5B65DBD8907286C2F16E91B8246A50CAF383C17ADB
-9D933E3B0BF030357F67C49DC53E1AF3D93AC8EEEF8722CEB6D232BB6A6F7FA2
-D0E65E88F9C6D3C701631DE0F634DEF3BDD267BA5724CD93EC3540924867834E
-52CA46B2085641282B7B04643DC21F26EABBD3DD3263FFFB1FCDA700F924EB23
-023E86C6E06A94C51572BE876FBBF18FB176E86DCEB33E58868E94FD309CDD27
-73867C86F61641786BB52CD94B39B7239EF19FA30FAF283BBF03935C668FDB04
-E975A381BE0BF70B47DEFE5C22301D512CB356C5F987592DEC7352C728BA7470
-D3C5A8702AF12E960B640BA301BD7217FC7020ED049F03C1142FBE6AE44983C9
-1165D364210F9D9252EA1BC3ED36AA203749EB393407ED92BA9839BBF54ABB13
-B08378FCD5C23B03FCC9CE6D87209E79CCF8364269E3556568467034B6AAFAFE
-4D7F6B9F75E495218F69AA8884C7A6791A1AEFE4ED94A0B2331B6276ACA4A885
-4AB8791E94DD9881C8AD291F4E4A4D16D63BA3FFEB3354A2FEA1488F234A3844
-B761E4CADC4785B7BD6E9C213CAADDBA31AD9720B281C14F11CE88D074422356
-FDA4A90D7EA2BF31AA783E17043B0D16F8399CAC7375CA7A538793BED6CD2F64
-B4B9714CF2B9F1602A02AD3D78329A129FE39B6B4FBBFF2DE2617A5AAEA87249
-4AE9B76AC8F138E7985806F8BB1FF14C80D2EAE9E2FA022DFA3198408E9E1C7E
-73C90E92AABA26003FA393A99901586DA101BED54D7D6EBDD052E5657BB5F775
-941E104EC0A469A7FF1F6E3CBF445C9B8EEFDB21AAE1A17933D795D837EC4FF3
-85C20F0DE40C2DDC80763A6D9C7ED30D8222BA2AA7A031D6D1CD6DB3FB5CB043
-3C7111AFFAFFEEA12E2A4AFB290FCE2A9C9E38B8FBC8314CD12F71857309D0F1
-AD6E5837AA630829BF0FD7B8A91BE8288747F0517128977BECC9EC9C9D1657C6
-EFA030806BA6BA21FD88A95BDC89E2CBDAA68263513F5B9822D6CAB8F1B4D850
-8678ED0949A6F231FE82AAB1B251384AA7703A1C107B09D346991012E9B1F5DB
-0691B2BED694EA55DCD833A55CBBEE420C2C081B9F2EDF6F9163B0BA533B31D8
-EA3B7790A131A86F4EE9606237AE503A0A18BE4019D41454F9D6C244DD278AA4
-694DB86F1A1C66149DC4DE6A23365D132873298092E127B419A89599F8688526
-A4345CA4F819BA09770E14DA505497C78BDE870F0B70D0F442CF1E7B94C191A6
-4D570EEE6DBB62485724232DAEDA977DE0870DA0D791C76570F9ABC5F0340026
-ABABC70C21C2528E47FECDF110C267A5FE78BB364E6D6AB0CAFD2D8A9FBD4D99
-2AAE4678C59752DB699202DA6938A09964CF58D7BDCAFCF2528C3C3AED67128F
-F4822139251368E558C2E2BA30E00BA228747D060F887706C0F2913EE9497872
-6CA6104C3FF2FDFD042D074F1FDEBE6ADA52B6E417FF5D80A77F54705D13B447
-BD96A8573F7C7882A1AC225CA0DB514CAABC753B4733690A317EB2B13825FD4D
-7279CF4F79D0B66E6BB02E7AC825CC89A70CB817CED34C99ED82A49804A99127
-7539874F49B20E18623B583FE01E025929A0C49139125E065EBEDCA347F2912A
-2A4EA5BC37A54BFBA306FC3F9A812EBB273F33D8DAB116B84B66BBE56B7DDB14
-40DB0995B87CF90791807BAF25C692FA55572E95690E142398F43E14FE64369B
-B865F2C68DA38D2880A50766566693531E95142C459643225894E9881DAD9E65
-2BED00D3E79BFC3E4243E9A71C898787CB7AF8DDC263B9277B69F8EB7208CA10
-8A84CA8D353F43F516E501E8E60F3BF48F35077C689F29074B1D22076755D2A7
-C158544985670273B564A4B486B4E3E833163C9124A3D66BD89944C54FBA69AC
-A60951F71137D96F5136543BCDABE00E8235E6AD1FD1CA29F40EA034889FF968
-1F328C2E5048B69E42DBE67EF61A89A8E1964385E6AD8895ADC7494B516DC526
-93D8343BE892C93589B8E9FF96CB43FDD05C11B3817CBAEADD18F85DD18464CF
-8F5FEDECF55F79EC3093EFCBA427757A3860081DE0879FB1C439E989607C2642
-AD972113C391A421725E0FE68B3D31EF0F2CB66E7190909B690F9EC91C74AF1B
-D073E2C6831684DBD022BEDCDA51073424EF79EF52A146D56D293224ADA12C51
-9C890E4AFDFB7CDA34ABCB1436DAC32287CCB22903678B64716E25538DEC17AE
-BA0289EE17E8FC4BD09A30AF3594F3512E2717D6119727AF0B2DEFF8219440BE
-12E4B5B20FEABE2BC51E0BA882B2C32B8F2C0F25EF876FE6A1B1F39F63B95ED6
-E1759911CBD6EDA0DA4FB7790E0334E9F567F8CF2D9CB32854C26B008408B63B
-5FD7C47E91A686EC298BBBA0A66BA2F17F52998669FFD4710772BD29DF44ECA4
-98BD87B5DFEE21B4E6E0FF266F156718E8419C1160878BE60431F24650CD7385
-71039C9FEE067BC8C62DBB3EDDA61032E2CDB2EDE53CC96A172C847AB5813823
-60911763597D1DF69D804B33B3F144936720068A5853803B95008194D0A5CF1A
-6E1322C05DB00CED12E9BA797C46ED5711A05F747940C16A265EA5B7088180FC
-782D2E7971FBDE27793E4324AB252174DC46417A66B368641B6F639D3E8CE428
-0C6DFBD2FF4A16A7994B495271577A45CCC4003006A60FF860EF1A7B00DF9BE0
-2E5B574ADA9C7E51EEFAEE75645C6A3358F2AFD5AE392BFDC1574C1D163CEC2B
-ACE0A453DDDCCC3C01670BCC23AB93BD100B844287CC43ADB3449854ECF13452
-97C7CF21EC3DF97061B8EAFAA39D48C3668C4B1EDA91970A9F129DA529CF821F
-04748FB84CA3747FFB26BFD25F9A3CCC49C8D5D97E32051DC1948DF66D371E90
-398D16ADD731B5DCC662E0626D68BC8D759E3A55CDC5A9A1C550038EC997010F
-A76ECE272AC82FE057CB366B2B36CC83D11BDBA97D1BFE06C8EED5A19D2CB801
-15E41910D7AE2A8CFE154400289CEFF63675AE00D1F9605A6FE1B5D65D70A719
-09258069A04249DF1EFC7EAC90BCC824F94B8E03DC87DE612CB178BC5CB8A674
-E8A10D6DF44F2E68893D9103461151D5BA7F9EEF2EF952C2E6D23C616972D0A6
-D3062D3BBAD2AA46ECC87E9A02367F8F52959A9F74A426FE17ED2A894DE1616E
-298DA29DF7E50F13516E8732AA5FD3E580BBFE3D0EA9712A6B3254A0F020700C
-CCC6861627B5E1EF93473E6CAAA556C2ED6EF8F9A98F6CACD1333FAB1D5C0CE2
-1F3D5FAB7561725F2B606FEEB9419318F69E95BF9A3DB7E6C16F1933D5FEFC56
-BF242FC9B939268A695D3341FF27383DA852A477AF8B969B89486FE50C68D0BF
-36F2ED911F12C51FCE5BFD9D3A17F600D9B9C807A350A045EA7B52EB30D382E3
-21EB851CD4F6BB5A22E559DB70CB5520B2EDC42380B962EEA42EB083EC5531F1
-7894DFB87224C6187427B9184FD9BB16E7526FDC692E5FFEF9A51EB23DB04341
-0F228E1849C483E5CAD6D1E419195D97608B3D89502A35D8DCB415B3A0FDF8CF
-02E4ECFA1B08D1443550C6A1B2DBC690BB9916CC2EB710F044A2E7BDB06AC1D3
-10245D0D451E2737A409260A6E37D02307A6581AFA998F97FA1046A2B0C392C2
-DBDAFF905F2D331A7308DC160B7E27A676FC0C5C2381A83E6713CD2D80073B3C
-0EBA5539E793B3CD07B282990CA2971622B1A80272C3715CCF5FC18BE299B35A
-86A9376FE12E31C9453E4AE17F2A3C3F2790C0E770E350FD7B7995822FB08115
-EA59000C14B67D0A6F0BB5969C43862C5D162897D23108D2A30A9B0D56D9099D
-5515F595E03D5368409EE05241DAF52EBF390C57BDE5297AA5153A1CB64621C3
-A8FC5E52CC90D9635C02F11CBA2181DBDBB6DD85C0B778D9F4B8FAFE5461CC42
-9F8950CFE0D173F0688CB8F15FFEF1095C06714E7A400AE32B191C7C074A47EA
-58396C20E55B8CEEF282D9222528FB282F8133408854DD5BBC3DF129926968B9
-96CA64491F9D6717E612207ABF832D0D52E1117AC05CBC46FF2AD74C245E1FD9
-6DA647BFEE0F98B5463471A7226E35979D21767957D088738DC87297D70957AA
-2949E38F98AAB7EAA32F4B85DE8F8D966480C079301FB70BC2451DFF20A192FC
-BEBD18CBD0B3653504BB48ADDB6AA7EC1F6B382E4787C2E354ED5178D7CEF606
-A5CB12D5D17386E49FF8CC9576395695252B3432F54E5616EBA9A4D524936CA7
-297F43686CA8FD613F4F5757689D221B65B12C3F9972F85B1A72009CD72DD001
-CA908C84BB0ED57913B5B976E2E464567967F17C2DF7926EF7333BEE80450675
-3DC4D84A1485E31A512FDEB1619D09D0DA43DA763E6A354EE12576026CA5503B
-669E6D2EFC62A1D945C0EAA86C6BFE933FA0EFA00CAA04BB4E200207DDD3BBF5
-FFC1058377A9A0E92A6C8443DF9F68DF8457BED7B7420A13F79F23FAF207B360
-05FFBEC591173CF8F39FFF766DD25122E6D1247A12DD5F20921A47AAA7FB26BF
-9A2406C95DEF9BFD49AB7179ED57E7B3E5724EC2E9FC1F87A6335BC55754B86F
-EE8E99E45A951AA818A6C0D6E3D56A3F97F28FF1D40A34B4D13790E270902A4C
-7BC76CDFECC8AAF220A5D698BC387B821442C0BE024117CA6E52C1759723DAAD
-9809D984EC7F8FD9D0D604D08BCD4F763A72FDD57189BC512A2F6F0911CB5788
-0E5EBF4377E9A25656B2A671F17A88AE76FF951A4143C882D531E14E63C37852
-9ED71D70AFFE1CAFFB2350850BE6FB4D7914FFEE9BEBAF7B92A97086123B83D3
-E3D74494502F62155993DE3B63B302CEB37D021506F13CE940CEF49AAC14BDEC
-78687D564312E3576B3E2954E46816A006CF1F5C681D5FA3114F0C5E7FB1B5BA
-9B134449FE8D4E3856D584BC7FDA65FBC4CD454F7CC21DEA953B57E0C6186C15
-9FE6A920398AF774FBA48A4CB47D66CCF64355C30004FBE13A29303552ABEE69
-21805589C5E04747251D260BEA9FF67E8627A43F60FC1A7AEE778AB69CC6B384
-902BCDE4C976455B05D747485F837FB69FEC9C8F7B21DF057ED184E2807F8A9F
-626C0D5B1E930846B13B16297F7E416CA30FC8D3836EBB3D88F2EAE685BC1B0C
-71A9F08913289828B25CFE9954CAF1C18BE7DAB644025968F2EF748D7DDC58C7
-4CAC4F74BCB480CC4727135C4866454A90A354586730455BF9E02877448D99C3
-865FE188DD79C77BBFD6D7BEA36C984857A56B0336DA81E9FB4BFA4630C1DFF9
-5D23949A7E0376880F970A956DFF3879C8C6BDE6E70E9E53F50984A2CB471EAC
-E2BFAC37313E698E3976842B0A0A08A99486B89D951FC2830C2492586906E63A
-26DD78C575BC641A1CED9B3D7D36EB29F261BE64F117DD96D2374F54D3F17889
-0B8D9A1B24DDE4B039AA764FBC7BE7510C70DCED3BA151D87CAD2C1E965E88D8
-AF97B802757E1C6382E85E1065A9B2CD795E12D6D9A824586CA2ED21CE150229
-8922087AE0BB0B5A02DC823B0E0D28AB0A627A56F8392614B3F79EF7430811FE
-4407BC1E9534333705502812BA2935F026472660A3EDF8F82A21ABFF923C0899
-427E05853369B8AD8F90510E7A167E5688A2FF11B24ACC83D779AB582DCA1552
-CE0DA529E0A01A22BF406AA86EC4C2234F7C42928E73F09C4163AC6DB2B42624
-FBF02FA40F57FA7D20DC43A42BD5CE0A3E089F5E979514AADADF7292F9EF5C4C
-974622867ECBCAFECCC18D1E97BF8DD7ABEAAB4A311FED1AB25455FF2811A1F3
-70846371919CEEC20EC6B1563B711DE9434D5A29FEDF4AFF303E41E95D4EC4CC
-2916DB84AF68804EC25DB9653D104013B3957F35A6960A67E8DAD91F2DE23DC5
-FDD04FDDD08165599C1EB8B773AB17D824CAE14E0F037476CC81FBDFB3058643
-0DC07DF5999EAA577F93AA85C435B8BCB48CE739A058090DAFC9342977FD1E34
-ABE0FC946B2CA764A317F61D5C91AB481F06D33DC18D666CCDCC883DBC50DD46
-15E19DA6D060DBB54FA6C1A04EB2C8BF8665116A975328C1CB0E9FFD988555AC
-31CE3AE5938D92B42C1B5F199AD57A3ABA8670E52A50E22490892E6776137B30
-8064402955792441E2215C6E7C3D992CC37A95509142BB58973905D47A71E2A4
-6ACA15FF2C96DF2AAE34EC24CDF25924A84D10CF3013E33612F365929099EB49
-834B601460BF3F692B3AE9636A8471DA375896D834941C8EF861C65D9C6AD172
-8D364263B179DEC2A871946DCEC051C3FB6CD5630D6610F5BEEF3BF6FB129AE5
-CEC3A0D2B7E720A785E2F3527D2A91C0A3B1B848224A2DF4A0FB909513622119
-20680804F8B5B1385DF54AB4FF45908B5C8E46AB65E5173D6488B49EE4FB0082
-BB523E136AE710BFB7A37CB1B61200BC94438E29CFD4DC994C11820C7E661BED
-8EC5504BEC09B3B0AB5BFB11EB0690A404FA588821FD0FB1776E4EC34D6C9972
-143A68E199F1AAFA718B76EAEB1C618FB88FB43F316915913C0AA2EB24F24AC3
-91D1364A7960E4E2E074426AE16D779009AE34DC5B6C617A561C167433AA64AA
-0713264458F0DAAB97FF276533242139D178A5FC102139BE12D0C6985430D364
-A3B361FC440662601DA89A95345534D4069A43CF59E0D2DA90CD52D0737A8F4D
-B4E1A21DD690231ADE0531A8D933D40A1A4767EBAD183BDB7608571A6087B59E
-BEDDA1909E44C5956B085D107EA68AEB984C7823AC93B6959C86BBEED5EF12CA
-9B6610FE
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT10
-%!PS-AdobeFont-1.1: CMTT10 1.00B
-%%CreationDate: 1992 Apr 26 10:42:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 108 /l put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 121 /y put
-readonly def
-/FontBBox{-4 -235 731 800}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
-38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
-D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
-EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
-A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
-F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
-4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
-6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
-A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
-E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
-1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
-452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
-8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
-5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
-DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
-BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
-741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
-E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
-E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
-D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
-C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC
-FF798F2ABFC4F3539392985C4CB324B0007229586D1E0321559F67C057FD7902
-194490A4C133DA790FF3BF23A13C2B1B69EEB75950F9106F2BA1E3CA65C90FF5
-931DADF03DA48AFB8561FC2E710087251BFC42B80B297A3DB0DA138A7622A931
-DA293B0C740987ACE9F2A8EC2DB98F85783C01623FD3612C7E4A84FD93446770
-C3DD7431F955A5F3734F6931BD790F0A45B8D17CB74BDAA4BFF6DAB5380CBF61
-72F37CB67A909E2842E0AC5D9D07D01A4BABBDE2AC70FE5753460D7E1A708B7D
-0EFB2B5FF55F9E4571C466AF1F91E545585845B09D855C3A01F713C1BF081EB2
-7E2A0E598708737D475BEDAF60BC100FD0A0628C6001A203348CF6A3AFEE6DEA
-A2EB57E35599FAD0B8A52BE1B77757E92EA2F51BF07A285E26A452F417D2751B
-3D53F9D671EEB920B5F0325D4D4C2634C07508492279701623E5224F9DA08DA5
-E0A6923FF60DE967B397E5FF727EDA6331CD8A7AFD99B233FD2F29DFF4DAEE2F
-19077C666DF3D5ACB7C7A5D8321D0F0A3BCA7A7AB68700D672AF3BBEF1809303
-753E5DF7A93276F4DAA3D09B72A1248945922F39E7AB9B8A6C79FE2124E63F81
-0E6A3000E8960E71B73E9003276E22FA43B41CCA6555DA1A22700A87C2999DDE
-579B60444EAC745BA9F007005FB64503947996D0CCD37B62DD6513D2AAA3D092
-47370C35C4DDAFB83D725A2F5158FA7E35DDA46879EF7BC3CD137B7E911D460A
-E3A396CE584E5EEC3789E72DE1D7D5770F0A04CC74222484F667011FD890B85D
-140E5CBF5B51C4D72D979F0EF522D68614EF81B6454E6BF8BEC3152F43C1D2C3
-4CF67D25CEDFF158E0E172F1FFE5FAC28C1C21FCF83DE1BA49EC21C735B1B356
-B32ACFFD6C18EA4C7CFC5EC94FCE6B36D4276637F53938A262EB354B1E1CCD50
-E75053787B56CA48F01E3F04CCE15E6E4BD7AE6D4ECC97A2A69C3179BEDDD9BB
-4DD7E669BD039347B7069A110CC3A750B4EC32F701FA042A50D4FA886F2C0858
-B776B47F02F3A6E16FF1B47C0BE0254A0DF84F099CA11A4D8CD69A8FCEDD2006
-5E373016B38695BC945374E44D33502358DA4931A199C6A0B7684CE6A5F68BF5
-AACAE1692AFD11500095266537753C476B5F50E6450425F3967A8ACA40892F4B
-6BB307862110EAB63B20F3180620809238B7AE8D4DB6EB8954D76D64D7BC964F
-16C63084D5D37F1C2CA1473AF1ED7B8E2BA2D376084E634702DBCBAF5CFD7587
-191198B11C410222AF174A1438EC89498BC3159964D5B76688757581AC78BEAF
-347597FB5C9BA56B004CDE62508D08E4A9D262F025842B2F7D3F36CE4222789E
-46C24C8031FC30501EEC14CD4EA39CE11FE9FDAFE524AB4B45DBFD0F133D3D89
-E8B0354C92975815F596A6A0D4A9D726BBCC097DA398D7E3F9CD3960ED09DBF5
-21CF052D84903D3B45C117C1D752BDF820444BA4E7B252EE8172CDC518954F6D
-33BC85CFE034B4A955FFBEF3591B95B3198DEF089B380572AB2D158235081A1B
-EEC413879DF147A49AED3F57788DF45F6F14D6E1F7D707EF27C3843B504AB16A
-0F9A521F5B78B5A0BB903CDF6FAA52877B246C62452346455D090A38126EC54A
-78314C8A717EA3A00280FC8AE6EAFB8D0564E4B2C6004FD437163590AD9B88E4
-590E8304229671D6B6B3B9D729315DFB475B7DE4C9C8852D39CF841E1C383D35
-30737F50A78FC45418833216362C976E9972BEF15C2EBA00515E7E24C30743B3
-500A760976FDDD46E4515F52407EF4A58B25A2616B23800B4A7597DDDFC77C3A
-B1C7481343153E67419C5A7D3C897680A9B7A02221266936CC527B53576EA4CE
-0FEA00283036AF4EE46247BCCDD6EC5C4AEC8716E79CDD3793C4B1B0BA2F965C
-2AE4C39480518BE6970A3E668D8F84F2AA00448D794E064731D6FD591A8FD65B
-64E32F77BCFD8A3B20CD9382F0C19E8FDE7A29B785F4C0367CF0B072E7E03B1A
-E61918832E077379093CDDC111153ACAB2C0A907AC671FE264B60F55A9812C09
-508ACF47DA10AD207224CB50A7DF6147FBCB08A517360046223FF5B0B03C93FD
-9C412E264586DF9345291EB12339C0C435C6211E818D45D50A770E811C774732
-95EDD1B252B774006131D52C3C3866C72C41FFD36580A6EA45291F8B2A9FE190
-BEE458AFD39FC2B0A1BF16593C8E37A54F1CC54F6C34A0FDB3D2BEB1DB6202D2
-194BB6F6160467DEAC412D17048D777582A330963F3E4635C29DF4D316DC6A00
-71B9D9D5E77A561A86B25EAC15D014AB4BAB38F3D60D596D23B4B1BF509A506C
-3EE8E4F204960E203E460412808BABE88375B989F76735937BC857585722D2A2
-FFD90EE1ED56895F15737A6F82271D1625A8DBCD6EC116A527BE8D0E7D7FAE9A
-FEC69B06D7EB89904FB82BD7C76EDCFDE140E4D68F3243237D86E67F4C1AF65C
-4B4ED683D1330E879202E1029E013949A3B5B75F092F1FBFC89093957F83C6EF
-C010B3D13B140B564936793B0D5E5C71DD5D11978868B1A8F14E1F91C0228807
-9E3CB0A24F55201063B3F953324439DEE32F3E8F47007489B700FE66918871CA
-06A98A89E25DAA476F0F6BEA50C1DFFFFA49C8071B03521FFE53D7691627B438
-CD80D943FDF5E01F0A1D9F8F493E04D0CC9B231252242685A9F9B5B96E5694C1
-7D135678863622202BBD917904041C599DF9A39302E88DF425266D888955D8DF
-56D7A8A93BC0CFD9CE3BDB9344B28396B3A754FE8A2E2BB7A6DB1938D7275A3A
-847991DC9D98472181FEDAADC40A0810AD524AACC09B40529BA6F2B0C7D99847
-9A04539057C79F903CD4FBD7004E952DCDA7A61533D6BC7AD370FB7189413744
-BD45AE3A13BB2551402ADFB9FA623A9487013C608EFE25F24CE777EB152D8C6F
-5AD4F12891092719918DB43D113F7F0D6EC565003270C5EF85195ADE629CFDA9
-DA8E17EF3B882A9097AA0854CAAE8A8102762F082ED84B1F317FF69E372B32AF
-0D7672679A0A03E0A613A9222B7E5EE8DE08DF7043E8D7050DCAD2118033D4EC
-57F35C0C8B607BBEC49D495B2F2A9DD69C4FD3E94964913DF759A500CF25E1F5
-7CF6174E813116B3E7B54A895617C8FC00E1F9D34F8F75D74FBC73DE4370D907
-E3EADEFABD0DE72EA4119202CFC32F5FF9CB611EF2D4376E6DBAD1AAEFC73833
-FE6A08028AF81229995AF0646FA1ACCF3D93F73CB43AE9D739C4C7731FD09A93
-76BCE1B756F8BD5214AA7474445D62AA808918EACBA03127AE41B29B78EC8A3A
-17FBD8ED9E73DE5CB9AAAD3EE447828B699A3322B1B26C4CC104C8FD0190E864
-B6B84D2AD0F9478344983438B61D43BCCDC9D85F8F0C9F1303060248BA9D9CDB
-DF5017A7DFAFCADA079C5596351DF4ECDEFCE2E08C8444298F5559DAC69CCD96
-449D610998D326C6C90560102A8F823E5C4A65F93C1FC2FFD6EDA274D5B20B92
-F5C2DE3ADC966019CBB6A26E21509C854C218EB1461FC3A51EBE003EC9971D5C
-03D2BD56D4AF35AB9EF784DF645BDBAB1F08A17AC62958F4695401D24012DB42
-CC12E37733B9768816CFD76016ABFD1A31135D8D6B404F22E6F543F085AE08E3
-449CB50ABAEF32E214B199D0D63F0DF0A7A2571C6D0D0F061EF810EE36D23893
-19BBB9961DB4D54F3582F8A0B372302CFBA72861EBC60E228B44DF0DBDA08C95
-98B0FC34D407A120A6A642D49A8FC0C50AD576FD744090B7D25193AF5F35C186
-9014E118AD66174A7E62DF12696F4844134D24B902CCE75B6E2B5E6AFC8EE691
-C81F5C5029B0048C499B9646991CF8C556A548EA34D10DE706D47B60D20BCAD1
-50B63E07821BE8F2E3AB89B350A6783619CCE1FA047F031C673DE7A408804117
-16B7BC8A2BEAF91C15D98896A5852BFAB4EB0CDD899079ABF2989964C832DF0C
-C9B6788502F4FB4B3F6DADAB5A35FC97983E436DA03AA33DBD3F6EF2C8ACB12E
-4AD050CEA10D67B9DADBE70B6B4172D8F884BFC3029925424DE005181FCDEEDF
-E5ADDAE02D99F5043728B4AFF6FC3F1EC28063E70B74FFD8BA970A8A5326B6BE
-9A43EB0B35B49FB2A15EE670A67221D5B80918396BB74BD4B111A1AFFF653DFB
-BEFD8B01BF533F41C769A4F3BDA21489EF5CDFE70262AE0660034B4AE0FE08BE
-8BB34B5188E47CA5B2BB3991B9EA77DBF9B902D0952A28341E59307BAA8E45ED
-F901CA1272CEC23B5B9ABE7EB55FAC42B24AECDB85BBAE4271C089E249D6B38D
-EA4152C06484EF912C035DE301C3352F5879DCF8D8B9BE878F4D06BFDEE05BCE
-1A5BE4AA949B73E8A84CE1278EFB79976EE93CE4F282583848307E1935006C61
-67305D7244D058B2CC17BBE6E99F4DD07ABB7A7DF01CE3FBD60746CBEF68AD1F
-8E7578346A27F0370E27D5D184599FAFFF4CD4896A18502E738EC4D5EA79A726
-0B350FC3DD3E5EF41B3EED04487255805DFA1C3D6F855A5105512D67F8E09B75
-8C0584058132B4D36720B4CB026B292D1D4511E1C310EEB6B742596ED877BB5A
-A55DE7CE8BB87526C9EE5E6708CB189980FDD9A012AAB21448D838DFA9774436
-296310CED1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.1: CMR10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:52
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 15 /ffl put
-dup 33 /exclam put
-dup 34 /quotedblright put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 61 /equal put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 94 /circumflex put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-251 -250 1009 969}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
-87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
-D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
-92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
-295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
-409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
-4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
-2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
-0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
-B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
-24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
-43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
-D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
-5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
-96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
-7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
-0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
-B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
-AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
-97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
-FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
-20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
-0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F90A32C4175B6BFB279
-024EAE1B04D721A6C54FD623E38A7F3F8BCF859C78E546BBA7FCC19854611A6D
-807792A9BB489C26149D05FAD3B703CCF8812EE946617AC1DA9EDB3A2ED55D49
-DDDEFA61EA1F01DAD8280555AFE0A03B16FF19B8626E724B27AFEB8682C898CB
-CF84E39CE3B141286A5994C60855979B402B85355D38C8282CA1FE2B6866F39D
-40CEC013FC39380642DD83F730C9336723239DBA45730D7217E40F526619FE6F
-0BF2211ADADF1135C691A3FF5C68257D7584F6824526B4D7068574CB36B7FCE9
-3F018B6A9A8F9B38BCE842100D72E9E948D1C6C7B9461A52DAB14D19C5674618
-5BBE9A74A927FD1DD053A124008AA010A5C1E67C4691D6D16D0A501EF725E67B
-573D49D451C96AF80597F94E6852CD7EEE8C3B0F854BBAE757C88EF056665465
-1085ED1F62DEEC0AFA18FE805F33EF3FC77FBAC4435B6ACC0891857D99FFD9CB
-77CC83F29DAEBAB59DDEC7FFD7FBA1AC10F8CD29B1FA089D0A6037AACECB9F9F
-F00BEA4A3FBD9E493DBADB3B5FEFE81DBE8B0D883A7B31475E66F685940ECD6D
-B48859C824FA2F48C9A647FC70531EE020C9DEEF720E914308F3E914A3EB1D31
-703482E9C67ACD0D4E6630A68D7D5EBA69A8E4EA09785BBC0D3E101F3CF87A01
-2199BE3358CA844F24B95703C918D12C373270D95EC7BB9535B379A208FDE826
-8D1553651A1C434283570DBC57F42E06725036778EE114D3C1BDAE63F93C1D6E
-CF241EC3F3724DB2EF043024BF0C75EC1CBAB4FD249C133229160EB3DF0B349F
-42D13DAB4047E22758CC35D6936FC14C8C711EF6FFA6E0116FB519A7B507295F
-C0C58D564A2A4934E33C34D525376D8A00262757CE0DC4BB61BDBC29D6DF5F17
-C176523B0DCCD364CA8C1F272323156F8111459DA8A09A1DC76ED46AF19D911F
-845042ACFFA9ACB399723B1D19F99B293715954AA68FD6EC42440357B7C4A758
-6A1CD086791F92172EE2E0240793F31139AE723140CBA57CD7942D236E72EE44
-45B80724C124BAEF8EEB3699BA3D3134790E72790126362DCAACB3B068E48A9A
-46A23F0FD2285DD1D4DAE8D4EA877B0E3574EB8E27E0DF68F2DAAD0447C1912D
-7D5B8AB1D96CF8926C19EEEA708590E7B46DCD8497A7A3E921A3CB21A43590C6
-9FF971DF49C48B362119F0015362EDCD3A6902263687A4C98A8F7C911B616DEB
-36A764559F25F6F6BA6F950586ECCF8093A75296C7046080488EB9DC920F57C7
-BD4B8D7AD35EB430EF00E0B8472E9414A43F0AE5D02B47AE510026087053C99E
-87F0F7EA60D31930AB6ED25984C2322D8E78184A1B68002611B28D8928691439
-1378D17799F6CBBA2B5D4A77E7D92480922B62513CF3B35B13170730EE733A2A
-D7460CF8294405D1B606D0C1A3D558AAD6F82C8FBAC5DC3887E3D2E86909CDFD
-42FEB809FD6EB85901100FA367DC8CF456A517176B92D4175A2B06A144BA91C4
-AE282B4D5758925895CCF6C0A22A08CC31255C06A585F3B7BA122889973D1B1F
-C171C76868897D6C4D07D6D0998EA1881428DDB3B60B749D96FE2A69E87B9B43
-C591FF9A7EAFE37102705260CF27B9F3B1AFCEDBDBD9C2F0154BC01FE340864F
-5F57BDAAD7D8A6187C4BA3F87B7CEB53EFA234B8FB2B5595BA0B6B41998718D4
-7A2668C2EB85231BB21406DDCA0759B0A6865207AB97CA226211219C690F3E71
-BC3F6B552E158DACBA3D537BCAFF71B1858E75CE9A8096EA14F8F27478E1EA56
-104B6187DC4B5013773E5934D947E535E6A02E5B3088B2FE1AD3CCEAD8D56E12
-3D05F1279320F6E6AE2E5407F983DC0A8DF2FE91412BE71A495D62D07DC91F77
-39C5DC20EA59C8A336CD187ABE7576B3098C5CA0304AD4A2270EE9839910B4BC
-B1554622A65C1082884FE7C071A0C510F928D04F4771B4900A95AB7166862793
-F07BD20A7C334AB6977BDDB78A8D2854A8B60EEE28E37A7D3DDE760A1DC3E617
-097DECDFA7FE2444B09947C113D99B74FD04B566513C5C765B32EAF5B28374D2
-A121A103E074D3AB3F66E2793BEE809EEC075882C441D991ED35EE5F7C2853D7
-07B57072C47E8804D1D6964491D9AADA9FE1F5E7CBD474E4F9AD792159C518EB
-0642E027F33C84F019678EB4A33913545085D0B8ABA4C66691DA4194C199D78A
-D93301A5A0198C78E4B9CF1F5A0DC9AF883C98D5E1186FB4A0EE876461BB392C
-9D264C18697A6234E88098D9A865526195580216E951FE954B7BCCB1699107E6
-B65D804E6A0FE9D5A3484BCAFE408A2882C05AA3F88CEB3E9A50DBFD7E590049
-BAB0DAC9CDAC62A3F2585C2D3AEDD293B05BE3CE35DB8D88FAD2BB225269F4DA
-5D75FEBCF0FF31FCED794A0C6095DEC54360514FC2FDC7F6D7B09257867731E4
-171B7367AD25A328972DC7910B274718D42E1E9306F2D7BCCFE493CBE0603127
-7656A06CABB4AEDA23A610EB414D0FA7910E2EAAC8F515E9059210BE4A216269
-9C1FB4264E9EBD96BBFE00A95BACB47699C9EAA1A0013C7DC721F63005437259
-7C6FE26C15E3AE502D1D295F6126920E8C86A754F524E1F461A384260A7F49F8
-B2A2F6BFFD7D8C2F1EBD1B7B2EAA77481923D9F98FFEFDE599FAF75BE47EF9E0
-6E2C398ACAA6B21B246E06B6979DBA4D1594CA11BB39D942329516F088E8CEC6
-FCD5649F558A832BF516F7A4DF0EF8E8E35CFD023B454383967C8EA805BE4EA0
-4E3F526C769FF910ECC3FAC4972A1AE3EE08BC77B48B75263F3F63A0E719A4C1
-47E21D24FEF5E2454613B37351BBDD0DAD3D340EB38CFC51CF65970080E4AC74
-CDC251C70FC8D04D188694BB1A5A498124DDDAECCB22170A0B288ED15D0911B7
-91BBE28793F2268602000147534292C205255C4E9F6643C20F67936F942957D0
-163A789A94214BF37D9F561012ADF4375B41D4FA0DD52202B060250F946856BC
-045171711D26453C43F65BED459ACC0CD3596AB452195BFECF9BFF49A3B1B58E
-749D001C8FA8B81293A6B064BD561E2EA00D3E2226377F57DF4C3291F8C52674
-4DB9D80AC1E2F87AA78EDB8541900ED84829325F0A07DE05B9E5CB89E2CFC344
-206ED1C0C325D9121C3D8161F1A76A14FC4BB46DB014A58F364D75D2701BED1B
-18AFDDBD70AF2F5F1837B10429F187944DE81FFF4878B45551D41E228E710C35
-87F3633E0A05A95A082E47A63D1EF1135F0A062ED2E734232ACAB250B4F821B4
-2E83450A2F8D3CDF7F55A9F554374658B373265AB95E60604993DC31DEA76121
-6C24B27841F9644C06C2A7242459C6F06A1D1D48CC938846CCA7698527635504
-EB5482F9B93B7E531F7EAB88BF86F4BD757C3FD9D0ACDE80899675395EA27551
-29A1E8113652BC93ACB6FC3813D109ABBDD5C458FF5F2A78B3EF3B4A935F2B7A
-2DEC26246E97CBAB69698D4C005C8D5E093907ABA3FACAB29AB9A2FFE363C1DB
-2C3F70BE13BA54EA6EAF09561904744FB5731302E2F85E74896B1078F6EF9381
-AD473BFB8852F36201CEE5ECEEE45F84D6FC22BC6EECC8846F74EA40A9048F8D
-E8F43F5689908E228B74266DBCC3EDE3A666FCFF6711BE61C7DE61146D9BF691
-08587DA7C6C83D29C92C3850C8263724FC55AAC0B228C390A47A56D7CDBE63C0
-4AF87FA92F40EE921D852C1FD5BEEF965D5083631682CF558C3E319C60407F1D
-EF606F8D72B9D6E9EA1B6C2F108B2B87B583410494B4BDBD7AC2EBC3A7BF6CA1
-A6A809EEB67CCC83EE39FC8D2ABFE3F3A7CBFF91A1AB4E84D3C310260C7BCD97
-DDCCA9C06AC86615C9A1E0AA194271A9EC1A80A6CE62CEED1A9CA26AD3E9BF2B
-E9835F60325D08E797741BDE1613EAEC4E330EA2B58E4C4B837229663B761F49
-217B9E268B161C10B3269160761C2B7B415F1C9BE713609948F5AE2E6CB8D61F
-5037BF4F4B887B9C98167FF4585F2CC87559FEBE0DB85059FC324651FF8551A3
-97216D31138546B1AE5A15AF59078779A9F89F2354E2309B458F2DA1DA96689D
-29EDA5A14BBF5E6E8AC03F7607E512FA6BD27667E7E55BDB32593E9449C1AD66
-D0A1E5C323CCDE758C9D47D34C9D57EE7C5DE1D924FF718CC13D439605F2FA81
-225D1BFEE6660B79F0F4CE2841F918D2A23F5FEB39B6F17E0D9FF5E249AF7D42
-72761F12975764C5DAE5F8B15809B527B2A2E13B68287371A46FB5AC674024E4
-1AD37DC93E612A828B6F2F17B4EAD061F5295CF12FE7C2E2DACB7871B87F86B6
-B4768C65DEB8257856F3EEAC2BA6E23EB38C2F8CD4357051202481325F9C3B4B
-8F7950E5E079154A0830EE37239DEE75F9947989E33E491C53AF18704D8765AB
-999E73B05C7C6D056B0D7DD13A10880DB342A95382A8221A2A9CA371483AE915
-01853F72328541C1C410FF8F12B5548EE9BF7FEA87462469BFE8C4AC108AD56A
-AF7F8920E0C75BB5645A716FE8564FAB8E98C23D548F9C01FCBD8EB1F51985DB
-9C268AA1BC0D53A6712E039C4C22CAFC287B2A24CA1ACE05FAB1F8B3E02DDA27
-97195BD68395E8CAD87BA53725EA62E439FE52B82993103E2550677ED8590FF0
-CDBB211EE2086763D599E809429D5489F2193A318422ED157E2E87BD8C0C72A3
-76E4593B36173E27901A5CFAE30353FE2B4166A4DACA2454C1667C9112F6CC1A
-CF5079ADD92A7F713D5C7040EA54BCB4C6EAAD34E6EFBC7B25D8C27FC91589BF
-7CACD2FE2916F0AB24EB8600237AF05187364C74F09B4DACB92E605DDCEBFDB1
-09A7A3B96B3BF4BF0E991F41F59FB1A6AE46158A7E560C7D22CA7934CBAF8795
-0B7A19157E3D14683AF5CC5D9C25FCF4622C3ACFC2D450950D1F218825E51428
-37446EB3A54B21A12764FD5FC3E4AC8F341DDD6D14F03BFC300608A62E112C01
-188C921686B1F04F7EAB620FE6611E4802559FCB11C2AEC174AF421E29A6481B
-9675A3A6B869D8708E034CD4314671D83521A0A5B00696EF1D1694A0B437991E
-64CB71E5BB48A8564600F5C364B2C188CC5C49B792396B534228D1D82B640E0F
-E6A80E5B8C86C6AA57B0E3657AA5B0BD51EBBA71438BC6BB64890E35710705BE
-D5F56426208E8D049815BC3F4C392009407C2F1FFDF5FC444CC1E18A74DF4F9A
-10FB516C1DA7C1645BF8A36B686301F34EA4253CCF8D5A3C2F9B918B0B748661
-EF649697A1121BC6758D79B068904C6AD976D0B6E9E570CA204DF47FA970C8A3
-E65F609353505C5709332275C48F023260F5A87B2077223ECB8EFE1A6CDEF505
-939B30D50F571C0F2BC703ED479DCB5BE16691AB6ABA0D3095B82C98EF829478
-91849CC9860A9A09A621C0B61D179EB875CF827BEF9A0B7F9191B533304419D7
-CFE5E31236498A850DBAD71EC6E53B5C979166EE82A4B6C998193BABDACB7B7B
-8824DFFA0FEF39D82C12565FB8C18E9EBB4C81C861A653BB738A67B0ADD596EE
-13E1AC54A9F1278796481D61580DEF9D4EB8F6955B95B2A48B572728A26AF46E
-B1EA7978CAB67979613C45885FBD90A61ED0CB2A116D87C70D287CAF0B5BBF03
-666938E785E6B85F64729CF4D1C73026E25D859544F17613019FC37BD7269456
-01C796C57290509047D7950454E0261AC3B986396D342A58C6BE6DF1B6BA931F
-558F32AA65B12274C20DF3A9B141C74A6A6764191C7E2ED9C847FC4B7C996D51
-190B7EE0BD9D6F10035DDED9D31840996EF1B90D801A2B632C4BA69F5BF7CC38
-10935D1100B01E0249E23569D0BF8529A4DD1881613143ECC84C534723E2F3F9
-9A6AB21703EAA67CF2F580BF9718EAD075A09C68A9B28758494A919DABBA26CC
-14B565F62A1EA4ED4F72E520E5F440CC3E766A56BAA1A557815B7DCB6764D982
-5C915788DC231B6A72ACBD3D0C504FD05B9828B32FF5E274D474C0897C77F211
-E8C238A04C79F3DB3682B0FED52236814F0F51CF4E303E066D1F2F6D91F57268
-BA85498B3070EA737A1F5764978B67F191F1CA7922788F6CD9C33697BBE99DD0
-9555A65BF47F9E34F1994036742929A97A4EC64E1F1FB4F2FA79B1763E3EC09C
-194306DF0C8E6B318F0A54960F109B757B4ED820D4570FA45BCA285248E01FCE
-91EFB04F83A07700D7E708AE0B10817AFFFB45B1541045478D643EEA02D454CD
-A298210AC4C6D1DE1D3AE19DC04F29FE82AD7AEF79233FA0CAE2793BF7F27283
-7BF47753B5FD8F88F22CB027B38AA0BB776616AD32632C7025BC5F2FEFE35A20
-6BE0682F7094F67E852DDC67272226BDA9189B574B76DB55ED083A8DD7384546
-D7BA31F1675B9987BB2FBEB58C59DD360433F53FE2447C3CF93C86FA9B9EEF94
-F72634A687F2FF318263C13FF7B16BDC37E8B31A83210F9AA3555AF10404299E
-D1B2A7D010465C507A1C8382114EDC835CF2CCECDDFEA195DC4CE33BD1BDC256
-E7F0A2469B157763B855C3A8311385FEC225024E7FA51B90DE87B75DADBC0DE4
-8437F75B73BFD3276F2B8522D2882AACB1F27227355787428CA30B5F9BA02C62
-84317B20ED0CEADCECC998B447E53F9D6F40D64F748ADE33DF0B70381588C1E6
-CD009833C34E109B8B85D75B9F45B0B4E8B50C9C91D8A046A56A497D9069C840
-C9C5C54DAA1226FE96AFADB7B23A556AA883515FCCECF748E91A69ACECBE49D9
-7DDCD20B1DE77E5D5C7583573788C57EDB633CF14AC1366FF8C2223E6585A795
-940AFC57055C0E73807DBDBE6509EDA01BC9BE066EA100F9F2DEFA01C82724E6
-8748F046E870D50EF61CCD00E392C06DFA214980C0335CB1A7AA8260DE220685
-89FB90068B4781F4401C6CB0027844F3F4DDB569D451C0CCBA6751F38FAFE6C3
-672C29D4CC32300E4D6192466BE6819A40A6EA0A8AC94FFEA0E44684AC9873C6
-1AD4A6F800082857F502BC50B7DC1A0D01925A477308E5D7CF21015FEE346F60
-0A5B643168C56507DB48FFD4A4B60EBDBF5EF1FD8BBAC9D1860969F06E9357B3
-F6872B9B6022C49694C24D227FA709DB45D4BBD264BE9941051FD2D29DC4DE27
-E7E66D2500D2FA7B4CE19D12C461BD0688E73916B58A1305617088BE3284FD19
-2BADB8068D68C1284885DB2DD22FCD73A3D30A14334E738DFB52DEAD08AFA9A9
-28B2B0A278F2F5FEE79855DCD2CCC9B7C23EC02B6BE438ECC227EAA9E308B20A
-517D7D0BA028A35620907589B40524625128703F25980C10A8C15D030E891B52
-4CEC0230C8DA96522FAA4BA0B3B67D01B937990187DEAA0FF648BF92F89145EB
-62A3A0639A9D5FDFDC4B1ADE57FA5F07F730EAED2BFD33FA4CE4CD41D4041449
-A47DF7B384DE32E7DD216F5B23FC4E1E3CD4476E6ADF3C6A5BDDFA2FED0BFC1A
-387C84FFA676CFED0312A9D5FB82297BD47525859A75F05334616301B06F55A5
-B7D1F572DE2F20112201455DA1FDFE77395E0A838249C9FF9AFF6B2FAF886970
-ACA6B38DDF305D4843BDA13F398E0DC4B5F99CA8440D9DB2B60E1BD690569C8F
-317C024810E45AE4A3492653D82C57ABF91F37F6720125E38F655AEE4CB3855B
-5F9308771F980DF3598AE44F4B44A0C1224649376039E27A2A77A1987BD69A65
-E8ACF9F64C31B5132125316B3117537F7F1569E4C37805725EBA9501EEA3FCE8
-04613013B8DE12AE3D3CEB78A1E69B74A03F4F53A8A3E3A2AA2CB0FA1CC5BD45
-D209C2EFB4C086763F08E59D1CF785358C4DEA67014205C90A4391131962B102
-CD7C1C2C9FB54CBFF97B90D14DA026B7CF4AEC7FE66ED25B5FD5D9DBB8BF8C61
-987FD2611BC6D85D34B354B288DA91A20CB01C0571272D64C5F382AF1C4E0CF6
-B6E985F17D5526085102940DB92F909148CFAE0A823AFD48B98EA1ED810162D5
-60D3FFCAA7D0F42613F00A2554A78331E2EE9AC9406067BB30DF81A4573CC45D
-5DB24990257D9BA441BBDDAF81F4AFFFC5851E07759A77578604511A26CA7954
-5338D9D9ED8216D82F46DD91647E6E08B6C2436806B64A5A4031B96A5C4EC782
-03FB8A8A311DCA0AB6816DA8D6884ECDC474441D2EF54B1273A9C2C4DF7B1848
-C4F9D2DB79B451A56C6B6CE86CBC2F3ABF1A6B0313036CE2E1D75337D7DB9536
-6ACEBAF4FB6ED96056E7EE18AA763023F8391DAF1C8F560C8CB48DB8E2C30B2E
-9B3EC8EC7310CA79940B9592988EBC940E4035036081C1BC155BA959CBCB0882
-96BC32A71B54F23E28AF9C01812D542023B6FA98509B9BCE0A11F6E4A9C2B525
-D856FA6A32BFA1AF937470602532E089185853EF4005D0F136B73500761A5B73
-20DE5CF5932B05FD0254F81B299B151A6ADD0963E919FE387A33C5BD493F9C84
-B94598F6ACF6EF10DF49D31D715BDD803A99AA7A79D782347298AB8AE734175F
-677C2C0C0CBCB26B08CFD202048FDE6B11A2B19A6F8CFF048262DF41F02FFC3D
-165C3D0CAFF801D76BADBD6D10C544366A216FA1DB31E15A9E5693406C92FD1F
-E9DAD1D395FC48DF4AB1D98378DA9946809F4B9A9F1591BEBBE6573EC790F284
-BB8BC2E9A8B9DCFB384F1FF6F48EC38212CF10C44826BF11201B1ADC90098254
-95FBA172A27FA1F2DA5667910A77B6B6B229882F27B3C151F16768E0387F81F8
-0EFB879FA9E61A2EEDB9390C837EB073EC45C74C51BF6010450DF7053D63FE93
-D9C62F5CDB02E3B49D282BB1F7A8A7AF864383C83321D3B396DC77DCF2F80038
-7DBEBB1635BA66EC76D7A517A3AB3B3367E8C9A9454ABECA448344E28B066EC7
-FA170ACE912907CA4B654BC59929CD15FCE2E41A342CAD48DDFBA5A18DB02A71
-B5D9D8F5AA183C1126D1BFA2F9096E866E01BF6A719A4B293FD2BF0AAAC4962B
-1E55EDDF52CD000004189BF0E50F1F5AC07F8DA31E2D3D4E68C24291C309205B
-8F777184535B6C779AD156154232B97C2806947E455BC7FE0F0CED79C00160C1
-F1A5FF494C6F61C3EF60FE174F11BB4447F59145B8FF9C88A2670C009C7019D5
-2416C70D765DC568BAA0EB64F653266E0D68CB50D44977E2ED5441685B773E03
-3DEC9E814C10DC475ED326618A04EAD178CC99543E042ED144A1C5E8D7851E31
-AAF157BF21B80A128EF16F42CE912545D575B801359ACEB93A40B0B87D525478
-023686C7746B1C4D894EC12F1C371257150B8DDC3B94576F86A1E3CCFE5345D3
-48DAABCA6044EA84A7D4B12DBE71FEB609B32AC2A757FC786BCEECD8B6249C61
-090609612C2E6EAEE5263A38D3A3F680A07669A2978DD61C0EAD29A64E2CB443
-2960CDA0185E10304AA7040A14842AA951947805AF6938FFCDA1D167534E537C
-5A5E384473615DEBEA0249E2C26AB35410BC6DF1AD5B8F870CC6E1793D2E8698
-8D039E56197E47F89046923D84A768E37EC4872444CB9D7D280371E1F38B9270
-B417A7E9C03B9B6647581C17870BDD5A91CC5822EAC76E7C049EFFA1305E2740
-279E456DA51FBB59CC401D09C5BC8523192CC016BA7E6A8B8BD258FD2FEE8F48
-7F96F8C2B5106582CBB0B94F0E4783AAE892B0CA4EC4F2643BC1C93547C1A92F
-CD6B7E7B697200C5A07BC59E8576228136C3810016279F4D7D09A3E2401F5FF6
-E6007EBBB48B67DE9E4F7F5EE6C0CB135F76FDC3B9D534D54F9D31DBA78940F3
-6C910CECFD4FEBE18919D67BB1383F0783C763BEDB939EAF897A89593EB764BD
-772A6BA4886E77C91D26C15A885DACAE74E4796876632570874357A6AF91E768
-4BADC1805106229D467EA963BA1F46C805AA418858EBD068411D81E7F4405F92
-5A142484B808D174F29C23A20E908986B110891840E3E0FBDB07A758194A661C
-2C86A5629F1F39DC24FC074FA2AF4DC56BD4F377189D40739F110A4DCFED88CC
-67F5175C843C2BF05A6C3DA20E11ED398A8647CF14ED8463D9DB96D756E02032
-C71FC1BB5EAFA99C30880EF70215D181884C4F8DCBA41B2847B9B90631AD92E8
-AE5730E4CAEDCEE93B95BFCE038E585EEC0E2268EC23638D738EE7378793050D
-F3B932939A052E4009780A94848F9C636210098670281884C024682661193453
-187076665BB8E01AFFC0EB888A550793FC2DB999A1BD3449BA49F85DB6DB2238
-1BE7987DA1074AEE95DD0C2052B4CB8FEFA9B445305C572D70ED0818F01646C6
-429E31DDD0EA9902B3D384506BCB1B132B0835060587B321F53EE4D51BB56D4F
-B3E6A4ED652013E189CEDD643339662CE7DD7414750B709116818D226AF9A526
-1F6F33643A8D6F6FDF1F85D16D8035D6561EEF394F5F805E532C0301B6D2C55B
-74082AF2D5B863C52120DF7F315F2E08576E9170A4D39200BCC99F914EFC91C0
-06627D0B17ABB946E77748D574191153E2DDE460EBBFFAB57A17113C418B5F53
-85C95C5740BFF028712BA4CD554E1FB60B0EFB137EF738A478E297A8811A246D
-C1C02F4DE7FAB05862F31D731BA7999277DA18BCECBFCE38B373668246E619E9
-E5CADE8D094248944E01F71CDF74C32232FB75DE48B4956AFFC77E4736397B69
-98A1DE487D71317E55DA6C337C156085EFA241A7301B37E04F8FBDE06C19EF96
-5DF3E8F61F55FF0B85B4AD77680E6E0EDB6D6EAC6EC25BE90547F1D1616A40AF
-05B8D8196410175992DE7A49C1DCBAC6AA9644FACFBF353687C60281633504D0
-1041E977A51DDEFD798D3C08E4BB156E045DA2675FD5220A77099603CC05EC70
-2BDE6EAFF38A917E645AE7E2E9D42AEA82D53BCBAAB7F7D48454CE06F92D8B99
-1675500BC6E81B3D7AD03175C3A6AFC596296C7EB64AABE8E177ADC4AFA5C9B9
-033313DB9EFA2408278A3F9F1D99DB2BC172F3945E625C97F2C3611D9D18F6DE
-ECE01162C5FE946198130D373163C5652B957DD12189360D0EEAE9505C34C59D
-38C356CCA13BB483501455EC230BBE9DE59750F3513A89AFEB864D481F14CADD
-987D4FC338A6ABF4F8246A91B7DCF09AE40A8BDB6F2E4700744478B1A74623E0
-F2FCCA9A3ED222CDD5770B58337B921A150C654B414C37863015838C26CECC34
-8EA63E57F105E78C92041514313EBAEDEED37950D5BABE305FF8AE51E3670251
-40C6EB69C967B3249D9623C268DD6CA2F55A067A9D64061C6F08C42F83B18712
-5748C595F285C1F160A8B17E7C71441BBA4EABA9D5D27ABABB93CC277365E613
-14C911195560782273B5AF701A09E491D9888F6FF80AED9B566CEF2B21D38B29
-3E693728DADD70F2E4CD4485595B69BF0B88135421AFB30C9DCAD26B13175ACF
-0203CAFBE658ABC88425EEA91C34D98FE19D2A16D00AE61403DFE173182C6F28
-D11BB7B0044B09066580397871FCE39128A5DEB836D2C6353ABD94BD2B4D3B6B
-FD6E0CF095C829BA712AFCE4CD08DC01DFA4E386986568502BD896C165565B48
-A49FFB0802582A1E58D611047CEDE03380F4C9231C48DDA202005AC32C44ED1D
-BE6C26E0F703674C15DCCBAC7FE369B7A96AAB25C40E4C13C854F4A64F346921
-9A4104071080A36904416CDF93309EE72ECF5EBC0DE4E2FDA62650F324217A61
-0646C0F9F34937E1FD91759550E40D29627A9985F21F5F8718C1997DC04D41AA
-28BA8B37B64F19BB6040A97C9DB61A172A62349426258A084F695BAC03CD5AC8
-BC6AB154C053581597D968C2F12D205CA8690D163F74EEC458C8B3324ADB8B54
-1058A4760DD3D069FD436F3A138E61D82002D7821F1B8AD4E8436236F90D8A38
-02C5C6BD375AF706B6F0D1B61FED384D045F3112126158B020F164AC40CBE52F
-83A9A9D4B16349786B6C24FD33DE9172024ED95B2D8D91A84A95BA294AE409D1
-944A2028F4ABB36B80D990E2A671274AF6AEC78A1E7110037EDD716695AB5611
-CCBBDE0598A26FB90EBB60576419C416F0DB3790CA7EC41CEA529E78BF007A01
-37B607209060F2D00CB25E8F1004C11B208EDD785C9A1A2C67C5C757A53FCDD2
-C3C63B187FD09AA4353C8E0497F26261FFB5BA8FD5468E7B93067EFAEE50BE47
-18643B1C96654598161901CA255E478A789BB034AB6B278E72BFFB10385C61F1
-01CC5B63367669552B5DF78B717C39A5CFEC8C0A213232E2AE660096EADC4747
-56BB4B4661E7A506BE2192738256A2071F20D59C5DF25E31F8B3D6DD249F11A9
-9EC99C217B720870B01094288D98C435A7441AF1244D8AF1D763897351461A23
-3D8F610095D5CA5198AD301DEBFEC59F1A808C930CEA70728D1F8BA27AE2E994
-71C6530E623C44B941F5E872213A702554623CC721750BDA28920F1741CC9BCE
-9E7A1D74D6E88F3776CD5E85A08B3F0150AD2D21DF9CA78A0F6A353B8000A74B
-0131AB96E80D0D9ED246414B414C51FF8CF41BC4E4E1062027A01B884BDDB6B3
-40B7D63997139471BD0616881192887776087F372BD2064BA14D3BEB555A8028
-176069EBB9E88A22B77C8095AA9A8356100CC95170702A9798006C356454F9C1
-F8B1A247AA75AB150364B48C4D47E35CF568B8F2BF89F92EB6E1494F40ED8399
-D7FC965A17DC5F6E2A375108C881137E1D08247094B83777DC1E59B4B0146533
-F46A5875C2E2C9BEAD7AD3D8043B761BE0B2AD4E31A1095FC7C00AC4F897CA68
-4E3449EEA7CA5069C1F00F1CC6F738746C560E11C35B4422C4E4B66E88EEFA0A
-6BB59D87FE0532DB49B5FDBCD37275CDCE2A78C2628608194F46AF27F43454EA
-0DA59865F7C1ADF0B9A5D3F7F0411984FD28EC4F0D993C0939135384AE65CF7F
-32FE1F76E9E53EDBEA582FA52A0C0E927AE4FDE57D2AA6965081ECA787932E33
-7BB7EAA86A191E98369B353C6ACE1B01D528C996332206C07838D668EC9203E8
-E835114455FE7D440A8E950C493A43B3B07897F1D78805F1F8BB58699A38238E
-FAFAF30BB6321645D50C1B52C1C49786051F1B5B1EB9652947E9A910A3AABE2B
-E04DF06EFC57B61EB2B8C08CC6C427AA4A4B575E44DC1C95E6A78D74956A8344
-32B0B1339703C8D4029C253D92BB5547E2C54A61FC7D3C57493278A4A7EA259C
-CFECAA2BE3F2A01935F896264B893E3D8AA2AE0080F4D95968539ABF66722820
-143AF605EBDD9FD85FD5CB8F778E032EFACE612FB233FF6220E2713CDCAB4D6E
-69E5D46DF23A05C50EA32364EDC5E4A7795D11810A7DC7A9BCF3CDD474406643
-0E5030458D81ACAC7828974A7C863D13480F71271C48F242E08F59E4C27C1860
-D4AA62136149EF4EFADCF5C5BB32568A6B42FD09841EA18566E5A79826D45670
-FE204BFF2D37CED76005FCA1C89BA8CE98C8844C5483F1AFB4E7E024C4005900
-58B0CD7DDD34E2998030363C7B09872FBC51E31FBFE1D59B5B8178427A09563F
-EE9B34F295DDA43547FD72AF75D4B6CD865565D8296A34736134B9DAF376120B
-E9E4130F252CC8E63337821279F7506D2AFF35F7B8B7F196EDD017A2973D71D9
-B3ED615FB1F4917EB820BB9BD78E4AE4DEC0AE8871C702D716FAAECFBF6F5F66
-0C3B98F8EE8F8027D04AD99D792D9E28F087532116581FF18EE01143DE14DCA7
-3F86F4F95023C9620B9796249A998EE423B727076BE3A25DDB2F49CE61CF6F12
-0DC3DA9E733182CA06F42FBCD9096AF41F6D7152BB8778261448A1573413A474
-F344575D495BADBF7C77F311B7B8CFE93C8C7100DDB0B8D63D79741FBBAF989B
-51CF3443256F706FE49E51DA0A82F169C15C9F9F0D42ED2167FDB68AB4A52C24
-19D890C4B5A424DC2A9CAED06878900A48B2F68AAE8017D51F08BF2F60C652F3
-41C282BA653874FE80122AB4C03E98106AB1231855304599E5D4E44444409884
-D9A9E3AAA504C7884F96681E990FD44FEBCA06C7B2D37C0A64A0D81B1CD77FE9
-B9DAFDDFF6054C89A6AE5EAB60D735A81C4B54D1E253239F2B425ED7CC96986C
-890F1C85DFC23F37BC927871D620C86F43ED2FF5D95D09D602C5B9BF115E2408
-29C1848F378C9CCCE8984AD765A9A14967A146DF6EDCADA408F436276FC9354E
-9B93A0C0317D3B8BEA979D6EE97C19B1DC44BC5DE527C4A0123EB7109742F0DE
-5CF79A8C92D1B21E0F4E80D8A6AE80765A395FD27605AD4873F70BFB57875DF6
-88C4F32E9E39C0D2261E99391703D436217D29F64E521C25B88965F50ADDBFFD
-DDBDDDEB3DD6828A9F0AFA8B5E371325866D523FAC3BCD8B715C1E93BA23884A
-F0A3ED9B585B604958DA18911855A01BBB43C9AE29B9B67085CE2862E6D39BE0
-0DB284BC530B133BA6816BCB11086299DC07E59403E078CEC4E1CD173FD555FD
-E463CB1503851C384253B249BC4B582D9204755E915C377E69B6DCAADEAB33C4
-3D6BDB7A2E0FE109296B43239C2F6D4CF8D3533CF39E349C3CA433A83BEA6A51
-D1E8F2FB6374C3C20F46032697BE1C7A2E9225E6DAC6CFB1CE3D56BF037E552D
-E21511E62EF4DC03F210BAFEAF026C9177DBCD3FEB242E352A9990105532F241
-EB240C7800AD27DBAEE973AB9243E0415D42C6A569A848145980D09540C80858
-0AB6C8C6F7529A781D9469062410C5370608C3A01743BAC595F7F6D883C76888
-8302BB4A437B69832A3BC4E6F0B673161D0152C1AE0D150F6938DEA6330E730D
-97E53BC5F123B5B210C00147CCC04B9169342B63C51FD6C3CFD76F938C114895
-AD76AEC0A5410F7D623A5E4EEB8370BE907A585B98075552AF8BBAE543EFD4E1
-A3EA07FD3D21BDC2B038A5EEC3E5BB356070A98526DE7FF6F21B0EF7CA3F96A1
-C2A80FB156E9FB3A7F86FC969786D75D8F530DE24C6C5DF8A9201E18C401FD60
-A92130950B7E53A4B82BD3A06BF5635317D3E57A63C9DEC795BF468813E69DDA
-EC79BDF6E1751E31808530F3FF97B833714C76E5342E8CEFABEDD9500E04964F
-F0894F758BA4CDFAF6155B0FDC613553E491EB43A8C7230B2D02757A0864695B
-7008A0AB7253C0773ABFF8C34CA5632BF92DA4739CC314FCC8239606F488E3C5
-06314DFAF238394E234359D0AA4F18FED20D856D987392B0E7A7B60BB6C92B92
-201C7115C01AF0E848D4F51C3F5FB39659426073B8D53D3081C9B027B059238C
-288C036B486795FAE868AD0E01BE6B4DB50C08827E4C358F0E1861E046EDEC75
-30E4758CADF3BD040B5C95D63462128C6CE83BC7CD6A749D7F9C679F108DD96D
-9F218B6085E713639696E41AF442AA7539290A043B0D7C585144D1B1BF90CC36
-1E488DB896748F5DAE6D79ECCF0BB1482D5C9B7DC9016302F4132CBC165C1AFD
-6ADC5421FE0AC39929FCEC993CFACB094405F2A76C8EDAD051857922FA8185AF
-6B5954488C52918311D16656CB731AAF1CBD12570FBBC84FC8D00225050879A9
-64128F264CAE0272A3FB1A98532E586ED7985BE0F9482519D3F02D625C9544AA
-1821508D9C8427BBEDF29AA443C367B06682B2F9358698F65F81B755C3365C9C
-124FAD4CC5521895654EB69DDB78D1B7526C0033AEF4CF9FFE9A4742BFCC783D
-2654F507FEA42E7E56EED82832088D1CC437DDD243761FD7AF1F497853A956B7
-492F6D579190704A31EE9AFC317D9696633DDBFC81B0196E232DB69832B7CD44
-41CA34FE11728AAD82AA1609C4CB6B7BA4F3B1FC6B65BB1087F4037A88B4CCD0
-EDC736196D8DC7D56AF485C744BF22856D7478BBF5F7318F500C07F18813AECD
-94DA1CA5CC3AAB7D773B5C33CC46837A5026849A01FB5731A179C6C6BFA9AC17
-F04721A001EA10157AC3CBE77D2FC7C75F6834FEF56BA001D10D128D56654E69
-739B68839AEA3127A40C6659524626DDAE1AC06FA7DE8E93CFD063A4627E5862
-2BE25201F52C4902EF3074205D6002C890B1AE01FAA0402751D86CC972315B8F
-E152EB75B0B383CC73EE30907AAD07239091FB4A09BB648694922BB0E471891C
-929845531C238CC9B391C1CE80D5D7E1778D485E5E992FE6D71BC768B49DE57A
-E9B7B3A580F58C39D8809AAC884735F06C27E4FF4A73B6EB8FE2590060646338
-D20EDDC2540A5255FE346EEC59757A7E382425B1E29380F1A2AB7802DB2E7802
-16186DA8583A9A4AD3D63EC53F2D287699CEDE3C3FC6DBFFA06F2FCE12358C3E
-1ECFED29641970DF017137AFA9B76F46AF50C7EB87F3765B433B8BE938B9BD46
-962AB615041F70391B41921A467E78A7ACCEB643F32865CF8D78F239E4173E1F
-97ED8DFBCB9985CE2FC46276F4A0AC18E862D4FF5C17F69C0A179A87E4D0B401
-0EC88E25DB4D8FBF05906126823B75E13B79D373B6447B1356B4B1686CC9CFAA
-A82AFCB659C014E3D6C06308C6DF17EC15B20880D01D2FBE8A913A7F10FC6BBE
-50CB440367B31F143BBF8EC3C1F78ACF0EE0915A001B13ECC8A03191EC915A60
-935A5F6795DBB0675981C8DA91AD33E312D416454604E61E4C3E616931A641BB
-797CAC5F7B5F60505D3FEE32AB5B12D4C0CE2116A965F97A69D8EAB4A3A8ADF3
-5D0A2D29C15B434D56797F3CA287BC76952AAE288108F7FA392341FE7FB514A7
-7BF1DA77B89FD11E7BBA73C2D7FA2ABB851D405B66A8550876BC689BC3A4ACBE
-340333E34F4845ED4F35EC11639066E3B6E64E692B824E7466AE559A209ADE97
-275EEE971F736F1DB6DC3EEA83322C7F531F57057BBF7A385353A26812CED979
-E2186625FDC3AF9144971C4D727851BA1DAE148812C0C3D337C6811593D07FFD
-44D4929F1BF3D3D33F9842D17174C7D26CF7B4D62597B8782582E763F057F748
-40B963FB3A217A063E98994FE57A5C649CF9C8CDA74FE9C05B97C0FDEC17B7B1
-90080464F13839096255CFDCD59462C50F9FA73DCEB96B11D319A05DD0B94C75
-5E7EB97079B4F13C71DC120969A439932229C3FAACFD160958162B136592A4B7
-3E2D8FEFFBA9B2C217CB2FFB7C23328AF99643856D0B3548288FBA2363D72BD9
-F8090133D7064FA406874CC25089C5662E866B40CA6BCB6BEEF73E6EC6C45DCC
-2E180CFC8398005BF20DBF1CCB9F8778F3C948B950E41EA9FBB590EE1396D9CF
-51676169DF4008477F95F7A3DF4B6C14CFC78ECC8D047684E31D1B334DA9A0C0
-277EFEAE5D70ECF0DCE45F6D3D9900EF0D7374D6D8F7F8EA237FF35F11BD0E7C
-A49758D3B6B63120D4B10A2C5CAFDA0B2BA5FB2F86F26F39974E54150E990BBF
-337E4F13B7D433B827729E218BBF6385FFE3D9C0D27330F0F8F4FB4B2D9CF3F3
-B7AA64A7E3E93ABA4BE2DF090AEEE0F1D6B1DEC285FB47A66132E7B597AC55AD
-332008A5268871527100137998EDD1E4985A9F793335221B2CD17B97DC1BF278
-B8FD9F70BDCCE69E8A8AEF7C7DF9CF2F32B59E42E64FD3FA988B55577685463E
-8932ECFE6B2C8EF31E2A74D7AFE6119C0391207464074180ED26ED7C769627F1
-7BD90B3FE64DF02F0EEF7C52DC49CBAD0141703E5A85874301383BF6B172B454
-8D75E3CAFAB9C9CE6E304135D9EB3A33F36BBD49D2DCDF8909EA41A7D68B7496
-FBDA643A106E7F4DE9178B9AA340023289F2AD6B26B619C2E3227629E631D8A9
-AA3AA68D6D608A58EF9B1181116D4C4BEB49103B3483E7D0E73C58BE81D34620
-49352AE4A2364EE4720AAA2943C632A723F81C4CDBFFA369347C32FC33AEE0AA
-6A436B3DF22AFB513B8035E2065066AFCA5FE90790A2D62F47E4F0A3B929A914
-47A5E432104E7D038E7838E344CB283BB0752528697ED54A2E895923AA52F5DF
-DA93FFA86CC591DEB6E9415B57EECE8330CE902689DF122B1CB4466ABE6942B0
-E1DD56B75F3409F2E3F44206ED7C725960E37C3C90EE0734FE9B0A2AD8CC2589
-BBB87120A802216D0A76858D45F6AB7326CBAD774370F9E4A00427DA04FD9875
-21C79DC98BA02EBF99608940C8EE41321626EF8962C7D5472DC4DD28E856B59E
-2D472144415A95D09D05B70AF0993D078BA0BEB9B5526E52BCC7DE5ACE2EFE52
-818B6F6F1050617D3C424CCC74F65A8ADBF705AF1D45DA5C8CD24264FE5E49C2
-5B75088A605BD58D01F3EB25DD45AC546AD5D8EDD4F96D10876B25EC008B5BB1
-F04A5F4CD8AEE2F628C99FFB3D31ECD1CCA781D93F2877A1E660153BFE45026F
-826C4E552305494CF7AEA54C11CD157FDF72AFE0F0D3E382140706F13CEFB8ED
-8874134782B21D5E5F4C62D22DCD0A77A2EF61794520069766E52558B3CDFA77
-586F7C88D2EEDE15D32DC6DBEC54C8C20DA8E140F3C1BA7DB7166C8093B1D774
-56931CDF81C3A85C51957DA8F81E71BDEA0707BA225BCD22659AAA99FBF6B307
-0482EBA4C7C6217DDBBA50C60FF947FCEC65F1E9D5E42F7B0C643FC08E69D50A
-D86C2094BE8175BC194451BE5E0348E0244FCDD5A529E0F6E49B055E771C990C
-2C7DE86440F8A8B3031FA3E3A99338E7E8D6549BC1347A047D8AB461928884A1
-16D79D0A708AD860C5E3C7ABB4584DA65B7AC9B303E7C660F97B43E270E390DF
-A44A5DE23FF158A8D1CBE738479F4E54C366CF27384168EDA749DD5081D2B4AF
-87EA919FB2C5829298FD1895B2569FDAD9914AC9C5151EE930079F24F1EC384F
-716B54D3371EEBFF1BD79455C75A3B95B3C11DFA0E66A123AE41033BEF6EECCF
-8599FCE6E4BAF6AA86BCFE117ED0D66D84FCF2EABB76D5F713BAC635354699AA
-6FFBFE1652A0D3307F2A73A63901804DEA7537F0D925DA890068F9C4F55F23C0
-02ACA7729E4F5ECEE704E21E59AF9F8C8BC6A4F4F7AFAF425FF2763C53950A5C
-B8A05F9A8EDB929E15229A3D6E2854CFE49EFEB2ED498D8017857135B5C28D54
-42D15322999AEFEA70CA2DC44A0B99FC9642480625201412565236950F725D96
-34323447DDA2ED1F166B92331FC42ACE46F45284F95BFAF6E6378665AC1C0005
-B15752D13ECBA0AE6E15BD57DD7CA6108D79EB8AD37C83B96F81E78A1605F9EC
-2D721D641F912C401C6B32A03C057EDBEFA094F97B250E3B906B377F7BD69341
-54D301A00A8CCB6F18B294526EEDFB1ADBFEEB8DCE4B8CA001871CB349C6FD18
-A9606000781C57F79FA340A120A58B9793C411924DABE338E931BFCAD1A45E2C
-607AE3845D7549171E05A410F34DFCCAA4F4E49FD117EA0A53F4C83393C3BCED
-0D9C2E3F5117F0DDE8228201B75C8CA9240E0BF470488DEF2E68879F9A222459
-44F9E2B4F0F63EDBA2DAC45428D600DBA1B0418858E102B371B176F97536FB9A
-7F72EDB51A87EE53B5E730E83FA4326ACDE5152BF6CBA53CFAEC721E88654DB1
-1E5A6B3145CC42534768F3380C8953A2F6F63870939CA300D231F67101952771
-C0B0879D493A01776E2A65A22408BFB0A46D7A50CC79CB72E5FE2A87C16FF499
-3514FA4E9AF60A0FB08BAB119EA92F6639D7AAE4450E0CFE0BDF3B21B5F22006
-D134072F9324670CC7EF2D68222593F0B6DE491778B4C8DE8FD5B16CC2FA7DB2
-8878D99BC3BC837279E25F15D26F691CCFDDEE514320C263E6BC5C3139A9BB5D
-58D3D27C3B341E838DA63D8FD2C91C2C6AD2CFF2A319E0D9DFA6CF78CF903FAB
-033EE0D608D63E2E6FC85F5B7E511AB2375AB55F736D5390BCACBBADC4581AEF
-3434B434C4DD5E4DD46D41A68D6BA3C73518EE12328553D9C83150FD21FC61DB
-CD93E8CE52AD786292FB1BB9F0D07CE9A51CEEB8734C7E996D37A3E5874BCEAB
-4E8A9E61808BB3DB237B376064BEE5F9AC1946E4FAB0123FF552564AB124F02F
-43281EE953F748C167450F52091541CB417693CC9723D968654F5B75351B01CA
-FDBA1B25C88F6D3B99ADFD96E7C73E7F5C502FE4F387B50A35260594D849D67E
-A0C1D90B5E38D9E41A761E1B1AA5990B5D6E31CBD5A3AED32F7B99121E54BA78
-B7A8ADEB7B4EDD1A17294E5E030F6E5FA4472E4DC016EF4313904DC90A8A1E9D
-7D10F00C8487AB25B05831FF311B958C0862E004522C0401A7327AB56488CFF5
-0757CA5768A86A21A08A6990A87AB6D3DEAA9BE36600F998B887B36514D189B0
-26BB6FF1F7C7B2B12BA982B964C8859E50F84410E362D63AFFCCABFA7DC0212A
-5D71A0B1177E57D8A1670696C0D86B6CE49BFDE2DC4049049620512DA96A4218
-E95722F552822A813EEBEFBC86039F2ED8EA3B101A546CE56A6243D10F0E7E5D
-15812878CCB1F4B043FB81C4A105B4B3704C9F37F98FC0A97F1D6B80337DE00D
-96C8CE98530274378702256CE31E1FCAC429616B763DD6C033524FAF27685F69
-986DD6BB95198FFBF37301D6A4A2AF6D6D4BE901852C905EB3BDE31B67FD0DAE
-3DE87EBE3F6CE7999990E1611A707332818E54E7D0CFED88E7313BB3B9952E16
-EDE7A5A8F54E61E1B2C53008FA2D050EF44B02F63F75E4637005ACE771AE8895
-0DA2771D1E31D8A9618ADB1A0D3D53921A9522B68AF0B70FC9DBEFD169AB67FA
-8F3E4EE711102CEF22353F5E0E3AF31DE0F51BE759C998C43B973F11F4722B16
-A059170C4EFE8BBAB5C4DF9602BD0E23F9C9792362FD0E47F453E662677CD8A1
-2C20C721DA64C700A3D33C85670FC79C652F8D08FB5A898D4D189B992F155C9A
-2297369E2899B14F2C2017A61EF5D9D41075C57AC12D06FBBE9D5BC9DA21419E
-0884FF6C09494F71F489FBDB2A59E9515D922CA4EC505965A5A167EBDFF57FBC
-A05E36B782E901F0E32510BC955F8F0973B1C79271C6EDE2D696A7A0348AA51C
-7FD9C9461DCA982C4E9A720E7F1AF93571AF0DFDEA1374C6A37149B525C0E961
-8BF60465C196687070167BE691B06D47EB5FFB07F41E043C0B526D102EADDBE4
-83466D5E5F53240A9AB0B32EA0360928BD932D92BD66F608C5B06AE8600577F5
-7094E1FC457FD692034E64FF67B5EF1166B56169C761ADA251B30CDA7D543C7F
-24EBDB65453BFAF666B61E24FC2C95396317E714ADE31305C23E6009ACDCE582
-636B42AF7D66C425E9EA338CA577121B5D7FBE8B636828659D92FD1BFB9CBD1E
-6139744873D314837A9467A05606AA632205C408D48603DCFF8253EAA0B17A63
-8F00D8D1CB8BCB827A8B84CF9316430D3AC94C52D62499A80DF402F374C8D1A2
-D9732D0EC8627D39522B1AD76A793D9921E249179D5C88335009FFE1310BBC30
-9258A5719563138BB9BBD445A0FB553DA3365C49C8EC7FE4C8A02CA5BD9850A3
-37E47C38495721DAA89096ADA012AB8283B85E84029154F6EF9D07376FD108BB
-0BD88338D13D0E5CFD0F17E16AE3FEDB4BA3BB7EC1EDD6C052E7ACC179C2CDF4
-453A7BA0F04F9ED48F2189D63E9B67C3227F4752E69C570AF2F673495E405D62
-EF2FB14B1594E0CB0065EAC033F5676A55CADE49A0AC7041A798DFAC2A856AC8
-2778ABF60FBA5607C40BBA031A0D3251D4A4AE3FC0983A3AB0385A4940A303BB
-B3966D0AE5FE555F94A582B21B697228A56BDE846ADC64C30E8822F720A42F80
-E8CEC0A4DBFF3628CEF45A581A40F387465511E864792A8091B5231797528A7E
-2BFC8095D429871F6F06CA37895188B3697B3A3BE5EFCFC44A027C61F0398FD8
-6B2E2FD5E851C8A7FC65D3DD7BD8326E3E1948DA3C2481D42ED3A9EC1DC738DD
-A7BC4972D1FCDC1A51CD997C0C71DEDBCB96A938906787101CF3ED6227DA7DEB
-9CF07CA47959CD00648018E77CD1EEB91F679DFEE825B0FD94BF093DDBECA311
-121F542394714155E8308DAF9C3614D630AF08820CAED7A72310DF20DBA4C2C8
-808AF01FDF58A27A5E5F8F888B95C9127B46F28A75CF64E876571BA08D9BEEE9
-E0F1851588713227D83B654DDF19A87112EB36028611530CDA1C176B6C000B74
-1580F2920AED544F8AA8203C19EC31371E9E1ED81E065CD6D3CA3388214E7951
-66A74465223F4891D30FB8E609505C4AF9633B23C31B93846E73CBC0420CB587
-339715AE47953D67665F018F5999D4E77226F83BA9465C0DECE46A234B712E94
-190F39AC5226C33E4099A027317EAF7AA8E796124FD83576709F59A5E3D47297
-D6F21D51CE73B4337A300CD18AD8F3C8CE848DA861BDAB21CB8B7D77F7B50446
-69E6C9816BB4E5924841B87CFBDD486E669FF23596CEDD90D21B181154BFB9CA
-C9307C1671B38DDDBADC8E01DEA15D92DBB066A87EE62409EB1E86BC04D49B8B
-11446C8579A9082A788009D65BC22ED6537D3C2931AD7D0190FFF8692B7FA29C
-3E55CBF139A282A92B9B3052C0B75DF8C45AC120B203E1DD8B0A87438CB46356
-2064F9B714DC3E9F87E47196E969360B24FA71AE14B22062170E0F213287C178
-F0EC1AC384D408F7F88ECDC195F700380AC1DA1ADD6BA8EF1F7A3B201BF3B8C6
-6D491A624242C4A74BAE0F139CD2A5F13AE9B27E26BB4F19413F5F21C4506A51
-3E9BD32E77134FB669F7358F08B7573C0C528B8D584F75AAD2AE2EC2F94B455F
-BAC45A6C27816D8EB462B046DE68085C7B713811240997F7D918E1780A0020E4
-DA51EC020D8A65BFEF7C63C1CE750FE0BB6BC50A1E49A659B66BCBBBDBEFC886
-5D6A1C20C7E657300745E93496BF33D7264034479A29BCAE32E08D048F84AA23
-784881BF5A7A1EC33966481C98674580E7281F352759572FACD09EBD50696FFE
-781C85BF021686AA494D5B4149A97FB8240B53AFB1649282ECA83FB40751065D
-F7B07DFCCCBE718547B7248354B733F7C21917E446648E0975A66173CAF742F0
-E1F97892E113EFFDDDFD39A8B4178E6E888F8A33AA6AD94A69EA32DB64E5E48D
-BE733D22A51F1F5AC42270E44B890411C3629149D6747A73863268BE15BF8F6E
-D73F81CF18B897B0C1A7FA4D196B0B9C16C30387C3B2E7B181B2162310B4FD07
-28D59D345074275832900C38CEE8FBF42D5AB5DF0DDCBC0D5A3AA423C2048F0A
-C01B930A485DD9ED6E5AB316BD3B53BDF02E654E75364620039368EDBEB66D78
-CAAA98F22FCDEEC3267B9E2570020F238AE7BCA0CA3E50CBFB8188B8F130F3A7
-28E1DD78324CD259FFF098832C38A6A60CCE16DEADBCD95684528E1C18A59CF4
-1398C99DE4ECE0FD2E5E9696FC8DB7BBC53E2D3CDA253E4AB0B70C1184DB02BE
-FA7AE04EFE483EDF5C5F1D8764AE6CD1D1A181D47DE8F6EFF60D1C0ECFB69BD6
-CD2F8AB8EB388DDC79A12952072EA059DF9F7F3CF2180A1D4FED6AAB3F2F92CF
-4EE779C0494AE74695A2A40926743ADF61E97C1C20F81B16C992DC6C10682F78
-12341588F1F746CAB11BADD065213C44BC029CC3B0DBDE737267ED743C8CDAE4
-40A6D55BDA7DDB95B0ED7E3FDDFE25D3EE59B79EA31B9AA476D577107C760C0B
-05C2D6AAAA92BF5C36AAAA292E89FB923EF38107D6626725FDDC35B31BC7E2C7
-E9408359EC70D3F9BAC167E86A50F3CF688BDBBA91FF877E873A349A91281F9B
-6368332D8F43DBF37593AE3F7827B80BA6CCCD4B93734CF515EE1A48B1AE615A
-F46A36CDC1F78F48F01E4B120C2CD31DADEBF2B3F76561680FB21E05352EE479
-8B7C4DE783FA2EDADAEF70E3013A848BC638
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 40258431 52099146 1000 600 600 (gnus-booklet.dvi)
-@start /Fa 149[23 92[83 9[42 2[65{}4 83.022 /CMSY10 rf
-/Fb 145[47 110[{}1 83.022 /CMTI10 rf /Fc 193[65 1[65
-60[{}2 83.022 /CMMI10 rf /Fd 134[71 1[97 71 75 52 53
-55 1[75 67 75 112 37 2[37 1[67 1[61 75 60 1[65 13[75
-5[128 5[106 4[96 102 19[45 3[52 52 40[{}26 119.552 /CMBX12
-rf /Fe 133[42 50 50 69 50 53 37 38 39 50 53 48 53 80
-27 50 29 27 53 48 29 44 53 42 53 46 2[48 1[50 1[58 72
-72 99 72 73 66 53 72 72 65 72 75 91 57 75 49 36 75 75
-60 63 73 69 68 72 6[27 6[48 1[48 1[48 27 32 27 9[50 21[53
-56 11[{}64 83.022 /CMBX10 rf /Ff 134[44 2[44 44 44 44
-44 1[44 44 44 1[44 2[44 1[44 1[44 44 44 1[44 51[44 45[{}17
-83.022 /CMTT10 rf /Fg 133[37 44 44 60 44 46 32 33 33
-44 46 42 46 69 23 44 25 23 46 42 25 37 46 37 46 42 23
-1[42 23 42 23 51 62 62 85 62 62 60 46 61 65 57 65 62
-76 52 65 43 30 62 65 54 57 63 60 59 62 65 39 1[65 1[23
-23 42 42 42 42 42 42 42 42 42 42 42 23 28 23 65 42 32
-32 23 65 69 42 69 42 23 17[69 1[46 46 48 11[{}91 83.022
-/CMR10 rf /Fh 134[59 59 81 59 62 44 44 46 1[62 56 62
-93 31 59 1[31 62 56 34 51 62 50 62 54 7[85 1[116 85 86
-78 62 84 1[77 84 88 106 67 88 1[42 88 88 70 74 86 81
-80 85 17[56 1[37 31 2[44 44 28[65 11[{}51 99.6264 /CMBX12
-rf /Fi 138[90 63 64 66 2[81 90 1[45 85 4[49 74 1[72 16[120
-10[127 4[115 12[81 3[81 2[45 46[{}17 143.462 /CMBX12
-rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
- end
-%%EndSetup
-%%Page: 0 1
-TeXDict begin 0 0 bop 134 906 a Fi(Gn)l(us)52 b(5.11)h(Reference)f(Bo)t
-(oklet)131 3345 y @beginspecial 0 @llx 0 @lly 493 @urx
-505 @ury 2470 @rwi @setspecial
-%%BeginDocument: gnus-logo.eps
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: gnuslogo1.ps
-%%Creator: XV Version 3.00  Rev: 3/30/93  -  by John Bradley
-%%BoundingBox: 0 0 493 505
-%%Pages: 1
-%%DocumentFonts:
-%%EndComments
-%%EndProlog
-
-%%Page: 1 1
-
-% remember original state
-/origstate save def
-
-% build a temporary dictionary
-20 dict begin
-
-% define string to hold a scanline's worth of data
-/pix 62 string def
-
-% lower left corner
-0 0 translate
-
-% size of image (on paper, in 1/72inch coords)
-493.0 505.0 scale
-
-% dimensions of data
-493 505 1
-
-% mapping matrix
-[493 0 0 -505 0 505]
-
-{currentfile pix readhexstring pop}
-image
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff01fffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff8003ffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff0000ffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff8000007ffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff0000003ffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe0000000ffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff000000003fff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff000000000fff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffc0000000007ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffff80000000003ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffff00000000001ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffe00000000000ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffc00000000000ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff8000000000007f8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0000000000003f8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0000000000003f8
-fffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffe0000000000001f8
-fffffffffffffffffffffffffff0001fffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffc0000000000000f8
-ffffffffffffffffffffffffffc00007ffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffc0000000000000f8
-ffffffffffffffffffffffffff000001ffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff8000000000000078
-fffffffffffffffffffffffffe0000003ffffffffffff0001fffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff0000000000000038
-fffffffffffffffffffffffffc0000001fffffffffffe00007ffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffe0000000000000038
-fffffffffffffffffffffffff800000007ffffffffff800001ffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffe0000000000000038
-fffffffffffffffffffffffff000000003fffffffffe0000003fffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffc0000000000000018
-ffffffffffffffffffffffffe000000001fffffffff80000000fffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffc0000000000000018
-ffffffffffffffffffffffffc000000000ffffffffe000000003ffffffffffffffffffff
-fffffffffffffffffffffffffffffffffff80000000000000018
-ffffffffffffffffffffffff80000000007fffffff8000000000ffffffffffffffffffff
-fffffffffffffffffffffffffffffffffff80000000000000008
-ffffffffffffffffffffffff00000000003fffffff00000000007fffffffffffffffffff
-fffffffffffffffffffffffffffffffffff00000000000000008
-fffffffffffffffffffffffe00000000001ffffffe00000000001fffffffffffffffffff
-fffffffffffffffffffffffffffffffffff00000000000000008
-fffffffffffffffffffffffc00000000000ffffff8000000000007ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffe00000000000000008
-fffffffffffffffffffffff8000000000007fffff0000000000007ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffe00000000000000008
-fffffffffffffffffffffff0000000000001ffffe0000000000000ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffc00000000000000000
-ffffffffffffffffffffffe0000000000000ffffc00000000000007fffffffffffffffff
-ffffffffffffffffffffffffffffffffffc00000000000000000
-ffffffffffffffffffffffc00000000000007fff800000000000001fffffffffffffffff
-ffffffffffffffffffffffffffffffffff800000000000000000
-ffffffffffffffffffffff800000000000003fff000000000000000fffffffffffffffff
-ffffffffffffffffffffffffffffffffff800000000000000000
-ffffffffffffffffffffff000000000000003fff0000000000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffff000040000000000000
-fffffffffffffffffffffe000000000000000ffe0000000000000001ffffffffffffffff
-ffffffffffffffffffffffffffffffffff0007ffc00000000000
-fffffffffffffffffffffc000000000000000ffc0000000000000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffe001ffffc0000000000
-fffffffffffffffffffffc0000000000000007fc00000000000000007fffffffffffffff
-fffffffffffffffffffffffffffffffffc003ffffe0000000000
-fffffffffffffffffffff80000000000000007f800000000000000003fffffffffffffff
-fffffffffffffffffffffffffffffffffc007fffffc000000000
-fffffffffffffffffffff00000000000000001f000000000000000001fffffffffffffff
-fffffffffffffffffffffffffffffffff800fffffff000000000
-ffffffffffffffffffffe00000000000000001f000000000000000000fffffffffffffff
-fffffffffffffffffffffffffffffffff801fffffff800000000
-ffffffffffffffffffffc00000000000000000e0000000000000000007ffffffffffffff
-fffffffffffffffffffffffffffffffff003ffffffff00000000
-ffffffffffffffffffff800000000000000000c0000000000000000003ffffffffffffff
-fffffffffffffffffffffffffffffffff007ffffffff00000000
-ffffffffffffffffffff00000000000000000000000000000000000000ffffffffffffff
-ffffffffffffffffffffffffffffffffe00fffffffff80000000
-fffffffffffffffffffe00000000000000000000000000000000000000ffffffffffffff
-ffffffffffffffffffffffffffffffffe01fffffffffc0000008
-fffffffffffffffffffc000000000000000000000000000000000000007fffffffffffff
-ffffffffffffffffffffffffffffffffc03fffffffffc0000008
-fffffffffffffffffff8000000000000000000000000000000000000001fffffffffffff
-ffffffffffffffffffffffffffffffffc07ffffffffff0000000
-fff9fffffffffffffff800000fe00000000000000000000000000000001fffffffffffff
-ffffffffffffffffffffffffffffffff807ffffffffff0000000
-fff9fffffffffffffff000001ff80000000000000000000000000000000fffffffffffff
-ffffffffffffffffffffffffffffffff80fffffffffff0000008
-fff0ffffffffffffffc000007ffc00000000000000000000000000000007ffffffffffff
-ffffffffffffffffffffffffffffffff81fffffffffff8000008
-fff0ffffffffffffffc00000fffc00000000000000000000000000000003ffffffffffff
-ffffffffffffffffffffffffffffffff01fffffffffff8000008
-ffe07fffffffffffff800001ffff00000000000000000000000000000001ffffffffffff
-ffffffffffffffffffffffffffffffff03fffffffffffc000008
-ffe07fffffffffffff00000fffffc0000000000000000000000000000000ffffffffffff
-fffffffffffffffffffffffffffffffe03fffffffffffc000008
-ffe03ffffffffffffc00001fffffe00000000000000000000000000000007fffffffffff
-fffffffffffffffffffffffffffffffe07fffffffffffe000008
-ffe03ffffffffffff800003ffffff00000000000000000000000000000003fffffffffff
-fffffffffffffffffffffffffffffffe07fffffffffffe000008
-ffc03ffffffffffff000007ffffff80000000000000f80000000000000003fffffffffff
-fffffffffffffffffffffffffffffffe0ffffffffffffe000008
-ffc01fffffffffffe00001fffffffe000000000000fffe000000000000001fffffffffff
-fffffffffffffffffffffffffffffffc0ffffffffffffe000008
-ffc00fffffffffffc00003ffffffff000000000001ffff800000000000000fffffffffff
-fffffffffffffffffffffffffffffffc1fffffffffffff000008
-ff800fffffffffff800003ffffffff800000000007ffffc000000000000007ffffffffff
-fffffffffffffffffffffffffffffffc3fffffffffffff000008
-ff8007fffffffffe00000fffffffffc0000000001ffffffc00000000000003ffffffffff
-fffffffffffffffffffffffffffffff87fffffffffffff000008
-ff8007fffffffffc00000fffffffffe0000000005ffffffe00000000000001ffffffffff
-fffffffffffffffffffffffffffffff87fffffffffffff000008
-ff8003fffffffff800001ffffffffff000000000ffffffffc0000000000000ffffffffff
-fffffffffffffffffffffffffffffff87fffffffffffff000008
-ff0001fffffffff000003ffffffffffc00000007fffffffff80000000000007fffffffff
-fffffffffffffffffffffffffffffff8ffffffffffffff000008
-ff0000ffffffffe000003ffffffffffc0000000ffffffffffc0000000000007fffffffff
-fffffffffffffffffffffffffffffffcffffffffffffff000008
-fe00007fffffff800000ffffffffffff0000001ffffffffffe0000000000001fffffffff
-ffffffffffffffffffffffffffffe7fdffffffffffffff000008
-fe00007fffffff000001ffffffffffff8000003fffffffffff0000000000001fffffffff
-ffffffffffffffffffffffffffffe7fdffffffffffffff000008
-fc00001ffffffc000003ffffffffffffc000007fffffffffffe0000000000007ffffffff
-ffffffffffffffffffffffffffffc7ffffffffffffffff000008
-fc00001ffffff0000003ffffffffffffe00000fffffffffffff0000000000007ffffffff
-fffffffffeffffffffffffffffff87ffffffffffffffff000008
-f800000fffffe0000007fffffffffffff00000fffffffffffff8000000000003ffffffff
-fffffffffcffffffffffffffffff87ffffffffffffffff000008
-f8000003ffff0000000ffffffffffffff80001fffffffffffffc000000000001ffffffff
-fffffffff8ffffffffffffffffff07ffffffffffffffff000008
-f8000001fffe0000001ffffffffffffff80001ffffffffffffff000000000000ffffffff
-fffffffff8fffffffffffffffffe0fffffffffffffffff000008
-f0000000fff00000003ffffffffffffffc0001ffffffffffffff8000000000007fffffff
-fffffffff0fffffffffffffffffe0fffffffffffffffff000018
-e00000001a000000007ffffffffffffffe0003ffffffffffffffc000000000003fffffff
-fffffffff0fffffffffffffffffc0fffffffffffffffff000018
-e000000000000000007fffffffffffffff0003ffffffffffffffc000000000003fffffff
-ffffffffe0fffffffffffffffffc1fffffffffffffffff000018
-c00000000000000000ffffffffffffffff0007ffffffffffffffe000000000001fffffff
-ffffffffe0fffffffffffffffff81fffffffffffffffff000018
-c00000000000000001ffffffffffffffff0007fffffffffffffff0000000000007ffffff
-ffffffffc0fffffffffffffffff83fffffffffffffffff000018
-800000000000000007ffffffffffffffff800ffffffffffffffffc000000000003ffffff
-ffffffff01fffffffffffffffff03fffffffffffffffff000038
-800000000000000007ffffffffffffffff800ffffffffffffffffe000000000001ffffff
-ffffffff01fffffffffffffffff03fffffffffffffffff800038
-00000000000000000fffffffffffffffffc00fffffffffffffffff000000000000ffffff
-fffffffe03ffffffffffffffffe07fffffffffffffffff800038
-00000000000000001fffffffffffffffffc01fffffffffffffffff8000000000007fffff
-fffffffc03ffffffffffffffffe07fffffffffffffffff800038
-00000000000000003fffffffffffffffffe03fffffffffffffffffc000000000003fffff
-fffffff803ffffffffffffffffc07fffffffffffffffff800038
-00000000000000007ffffffffffffffffff03fffffffffffffffffe000000000000fffff
-fffffff007ffffffffffffffffc0ffffffffffffffffff800038
-0000000000000000fffffffffffffffffff07ffffffffffffffffff000000000000fffff
-fffffff007ffffffffffffffff80ffffffffffffffffff800078
-0000000000000003ffffffffffffffff8ff87ffffffffffffffffff8000000000001ffff
-ffffffc00fffffffffffffffff81ffffffffffffffffff800078
-8000000000000007ffffffffffffffff0ff8fffffffffffffffffffc000000000000ffff
-ffffffc00fffffffffffffffff01ffffffffffffffffff8000f8
-8000000000000007fffffffffffffffe0ffffffffffffffffffffffe0000000000007fff
-ffffff801fffffffffffffffff03ffffffffffffffffff8000f8
-c00000000000001ffffffffffffffffc0fffffffffffffffffffffff0000000000001fff
-fffffe001ffffffffffffffffe07ffffffffffffffffff8000f8
-e00000000000007ffffffffffffffff83fffffffffffffffffffffffc0000000000007ff
-fffff8003ffffffffffffffffc07ffffffffffffffffff8000f8
-f00000000000007ffffffffffffffff03fffffffffffffffffffffffc0000000000001ff
-fffff0003ffffffffffffffff80fffffffffffffffffff8000f8
-f0000000000000fffffffffffffffff07fffffffffffffffffffffffe0000000000000ff
-ffffe0003ffffffffffffffff00fffffffffffffffffff8001f8
-f8000000000003ffffffffffffffffe07ffffffffffffffffffffffff00000000000000f
-ffff00007fffffffffffffffe01fffffffffffffffffff0001f8
-fc000000000007ffffffffffffffffc07ffffffffffffffffffffffff800000000000007
-fffc00007fffffffffffffffc01fffffffffffffffffff0001f8
-fc000000000007ffffffffffffffffc0fffffffffffffffffffffffff800000000000000
-ffe000007ffffbffffffffff801fffffffffffffffffff0001f8
-fe00000000001fffffffffffffffff03fffffffffffffffffffffffffe00000000000000
-00000000fffff3ffffffffff003fffffffffffffffffff0001f8
-fe00000000003fffffffffffffffff03ffffffffffffffffffffffffff00000000000000
-00000001fffff1fffffffffe003fffffffffffffffffff0003f8
-ff00000000007ffffffffffffffffe03ffffffffffffffffffffffffff00000000000000
-00000001ffffe1fffffffffc007fffffffffffffffffff0003f8
-ff8000000001fffffffffffffffffc07ffffffffffffffffffffffffff80000000000000
-00000003ffffe0fffffffff0007fffffffffffffffffff0003f8
-ffc000000003fffffffffffffffffc0fffffffffffffffffffffffffffc0000000000000
-00000003ffffc0ffffffffe0007fffffffffffffffffff0003f8
-ffe00000000ffffffffffffffffff81fffffffffffffffffffffffffffe0000000000000
-00000007ffffc07fffffff8000ffffffffffffffffffff0003f8
-fff00000003ffffffffffffffffff01ffffffffffffffffffffffffffff0000000000000
-00000007ffff803fffffff0000fffffffffffffffffffe0007f8
-fff8000000ffffffffffffffffffe03ffffffffffffffffffffffffffff8000000000000
-00000007ffff801ffffffc0001fffffffffffffffffffe0007f8
-fffc000001ffffffffffffffffffe07ffffffffffffffffffffffffffffc000000000000
-0000000fffff000ffffff80003fffffffffffffffffffe0007f8
-fffe00000fffffffffffffffffffc07ffffffffffffffffffffffffffffc000000000000
-0000000fffff0007ffffe00003fffffffffffffffffffe0007f8
-ffff80007fffffffffffffffffff80fffffffffffffffffffffffffffffe000000000000
-0000001ffffe0001ffff800007fffffffffffffffffffe000ff8
-ffffe007ffffffffffffffffffff80ffffffffffffffffffffffffffffff000000000000
-0000001ffffe0000fffc000007fffffffffffffffffffe000ff8
-ffffffffffffffffffffffffffff01ffffffffffffffffffffffffffffff800000000000
-0000003ffffe0000000000000ffffffffffffffffffffe000ff8
-fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffc00000000000
-0000003ffffc0000000000000ffffffffffffffffffffe000ff8
-fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffe00000000000
-0000007ffff80000000000001ffffffffffffffffffffe001ff8
-fffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffff00000000000
-0000007ffff80000000000001ffffffffffffffffffffe001ff8
-fffffffffffffffffffffffffff807fffffffffffffffffffffffffffffff80000000000
-000000fffff80000000000003ffffffffffffffffffffc001ff8
-fffffffffffffffffffffffffff80ffffffffffffffffffffffffffffffffc0000000000
-000003fffff00000000000007ffffffffffffffffffffc001ff8
-fffffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffe0000000000
-000007ffffe00000000000007ffffffffffffffffffffe003ff8
-fffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffff0000000000
-000007ffffe0000000000000fffffffffffffffffffffc003ff8
-ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffff8000000000
-00001fffffc0000000000001fffffffffffffffffffffc003ff8
-ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffe000000000
-00001fffffc0000000000003fffffffffffffffffffffc003ff8
-ffffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffff000000000
-00003fffff80000000000003fffffffffffffffffffffc007ff8
-ffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffffff800000000
-00007fffff80000000000007fffffffffffffffffffffc007ff8
-ffffffffffffffffffffffffff03fffffffffffffffffffffffffffffffffffc00000000
-0000ffffff0000000000000ffffffffffffffffffffffc007ff8
-fffffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffc00000000
-0001ffffff0000000000001ffffffffffffffffffffffc007ff8
-fffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffff00000000
-0003fffffe0000000000001ffffffffffffffffffffff800fff8
-fffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffff80000000
-0007fffffe0000000000003ffffffffffffffffffffff800fff8
-fffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffff0000000
-001ffffffc0000000000007ffffffffffffffffffffff800fff8
-fffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffff8000000
-003ffffffc000000000000fffffffffffffffffffffff800fff8
-ffffffffffffffffffffffffe07ffffffffffffffffffffffffffffffffffffffe000000
-00fffffff8000000000003fffffffffffffffffffffff001fff8
-ffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffff800000
-03fffffff8000000000003fffffffffffffffffffffff001fff8
-ffffffffffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffc00000
-07fffffff0000000000007fffffffffffffffffffffff001fff8
-ffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffc0000
-3ffffffff000000000000ffffffffffffffffffffffff003fff8
-ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffe03f
-fffffffff000000000003ffffffffffffffffffffffff003fff8
-ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffff800000000007ffffffffffffffffffffffff003fff8
-fffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffff80000000000ffffffffffffffffffffffffe003fff8
-fffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffc0000000003ffffffffffffffffffffffffe007fff8
-fffffffffffffffffffffffc0fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffe0000000007ffffffffffffffffffffffffe007fff8
-fffffffffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffe000000000fffffffffffffffffffffffffe00ffff8
-fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffff000000001fffffffffffffffffffffffffe00ffff8
-ffffffffffffffffffffffe03ffffffffffffffffffffffffbffffffffffffffffffffff
-ffffffffff800000007fffffffffffffffffffffffffc00ffff8
-ffffffffffffffffffffffe07ffffffffffffffffffdfffff1ffffffffffffffffffffff
-ffffffffffc0000000ffffffffffffffffffffffffffc00ffff8
-ffffffffffffffffffffffe07ffffffffffffffffff9fffff07fffffffffffffffffffff
-ffffffffffe0000001ffffffffffffffffffffffffffc00ffff8
-ffffffffffffffffffffffc0ffffffffffffffffffe3ffffe03fffffffffffffffffffff
-fffffffffff800001fffffffffffffffffffffffffffc01ffff8
-ffffffffffffffffffffff81ffffffffffffffffffc7ffffc00fffffffffffffffffffff
-fffffffffffe00007fffffffffffffffffffffffffffc01ffff8
-ffffffffffffffffffffff81ffffffffffffffffff87ffffc007ffffffffffffffffffff
-ffffffffffff8003ffffffffffffffffffffffffffff801ffff8
-ffffffffffffffffffffff03ffffffffffffffffff0fffff8007ffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff803ffff8
-fffffffffffffffffffffe07fffffffffffffffffe0fffff8001ffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff803ffff8
-fffffffffffffffffffffe07fffffffffffffffffc1fffff0000ffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff803ffff8
-fffffffffffffffffffffc0ffffffffffffffffff83ffffe00007fffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff007ffff8
-fffffffffffffffffffff81fffffffffffffffffe03ffffe00007fffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff007ffff8
-fffffffffffffffffffff83fffffffffffffffffc07ffffc00003fffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff007ffff8
-fffffffffffffffffffff03fffffffffffffffff80fffff800001fffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe00fffff8
-ffffffffffffffffffffe07fffffffffffffffff00fffff800000fffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe00fffff8
-ffffffffffffffffffffe0fffffffffffffffffe01fffff0000007ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe00fffff8
-ffffffffffffffffffffc0fffffffffffffffffc01ffffe0000003ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe00fffff8
-ffffffffffffffffffff81fffffffffffffffff803ffffe0000003ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe01fffff8
-ffffffffffffffffffff81ffffffffffffffffe007ffffc0000003ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffc01fffff8
-ffffffffffffffffffff83ffffffffffffffffe007ffffc0000001ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffc01fffff8
-ffffffffffffffffffff07ffffffffffffffff800fffff80000000ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffc01fffff8
-fffffffffffffffffffe07ffffffffffffffff800fffff00000000ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffc03fffff8
-fffffffffffffffffffc0ffffffffffffffffe001fffff00000000ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff803fffff8
-fffffffffffffffffffc0ffffffffffffffffc003ffffe000000007fffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff803fffff8
-fffffffffffffffffff81ffffffffffffffff0003ffffc000000007fffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff007fffff8
-fffffffffffffffffff01fffffffffffffffe0007ffffc000000003fffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff007fffff8
-fffffffffffffffffff03fffffffffffffffe000fffff8000000001fffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff007fffff8
-ffffffffffffffffffe07fffffffffffffff8000fffff0000000001fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
-ffffffffffffffffffc07fffffffffffffff0001fffff0000000001fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
-ffffffffffffffffffc0fffffffffffffffe0001ffffe0000000000fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
-ffffffffffffffffff80fffffffffffffff80003ffffe0000000000fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe01ffffff8
-ffffffffffffffffff81fffffffffffffff00007ffffc0000000000fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
-ffffffffffffffffff81ffffffffffffffe00007ffffc00000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
-ffffffffffffffffff03ffffffffffffffc0000fffffc00000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffc03ffffff8
-fffffffffffffffffe03ffffffffffffff00000fffffe00000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff803ffffff8
-fffffffffffffffffc07fffffffffffffe00001ffffff00000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff803ffffff8
-fffffffffffffffffc07fffffffffffffc00007ffffffc0000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff807ffffff8
-fffffffffffffffff807fffffffffffff00001fffffffe0000000003ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff807ffffff8
-fffffffffffffffff807ffffffffffffe00003ffffffff0000000003ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff007ffffff8
-fffffffffffffffff00fffffffffffff800007ffffffff8000000003ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff00fffffff8
-fffffffffffffffff00fffffffffffff00000fffffffffc000000001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff00fffffff8
-ffffffffffffffffe00ffffffffffffc00003fffffffffe000000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe01fffffff8
-ffffffffffffffffe00ffffffffffff800007ffffffffff000000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe01fffffff8
-ffffffffffffffffc00ffffffffffff00000fffffffffff800000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe01fffffff8
-ffffffffffffffff800fffffffffffc00001fffffffffffc00000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe03fffffff8
-ffffffffffffffff800fffffffffff000007fffffffffffe00000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe03fffffff8
-ffffffffffffffff001ffffffffffe00000fffffffffffff00000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffc07fffffff8
-ffffffffffffffff001ffffffffffc00001fffffffffffff80000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffc07fffffff8
-fffffffffffffffe000fffffffffe000003fffffffffffff80000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff807fffffff8
-fffffffffffffffe000fffffffffc000007fffffffffffffc0000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff807fffffff8
-fffffffffffffffc000fffffffff800000ffffffffffffffe0000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff80ffffffff8
-fffffffffffffffc0007fffffffe000001fffffffffffffff0000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff80ffffffff8
-fffffffffffffffc0003fffffffc000003fffffffffffffff0000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff01ffffffff8
-fffffffffffffff80001fffffff8000007fffffffffffffff8000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff01ffffffff8
-fffffffffffffff80000ffffffc000001ffffffffffffffff8000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff01ffffffff8
-fffffffffffffff800003fffff0000003ffffffffffffffffc000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffe01ffffffff8
-fffffffffffffff000000000000000007ffffffffffffffffc000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
-ffffffffffffffe00000000000000000fffffffffffffffffe000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
-ffffffffffffffe00000000000000001fffffffffffffffffe000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
-ffffffffffffffc00000000000000003fffffffffffffffffe000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
-ffffffffffffffc00000000000000007ffffffffffffffffff000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
-ffffffffffffffc0000000000000000fffffffffffffffffff000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
-ffffffffffffff80000000000000003fffffffffffffffffff800000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
-ffffffffffffff80000000000000007fffffffffffffffffff800001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff80fffffffff8
-ffffffffffffff8000000000000001ffffffffffffffffffff800001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff81fffffffff8
-ffffffffffffff8000000000000001ffffffffffffffffffffc00001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff81fffffffff8
-ffffffffffffff8000000000000003ffffffffffffffffffffe00001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff01fffffffff8
-ffffffffffffff000000000000000fffffffffffffffffffffe00001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff03fffffffff8
-ffffffffffffff000000000000001ffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe03fffffffff8
-fffffffffffffe000000000000003ffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe03fffffffff8
-fffffffffffffe000000000000007ffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe03fffffffff8
-fffffffffffffc00000000000001fffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe07fffffffff8
-fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffc07fffffffff8
-fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffc07fffffffff8
-fffffffffffffc0000000000003ffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
-fffffffffffffc0000000000007ffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
-fffffffffffffc000000000000fffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff80ffffffffff8
-fffffffffffffc000000000003fffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff80ffffffffff8
-fffffffffffffc000000000007fffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff00ffffffffff8
-fffffffffffffc00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff01ffffffffff8
-fffffffffffffe00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff01ffffffffff8
-fffffffffffffe0000000000fffffffffffffffffffffffffff80007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffe01ffffffffff8
-ffffffffffffff0000000001fffffffffffffffffffffffffff80007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffe03ffffffffff8
-ffffffffffffff000000000ffffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffffdffffffffffffffffffe03ffffffffff8
-ffffffffffffff800000003ffffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffff9ffffffffffffffffffc03ffffffffff8
-ffffffffffffffe0000001fffffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
-fffffffffffffff0000001fffffffffffffffffffffffffffff8000fffffffffffffffff
-fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
-fffffffffffffff800000ffffffffffffffffffffffffffffffc000fffffffffffffffff
-fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
-fffffffffffffffe0003fffffffffffffffffffffffffffffffc000fffffffffffffffff
-ffffffffffffffffffe1ffffffffffffffffff807ffffffffff8
-ffffffffffffffff4007fffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffffc1ffffffffffffffffff00fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffff03ffffffffffffffffff00fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffff03ffffffffffffffffff01fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
-ffffffffffffffffff07ffffffffffffffffff01fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
-fffffffffffffffffe07fffffffffffffffffe01fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
-fffffffffffffffffc07fffffffffffffffffe03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
-fffffffffffffffffc07fffffffffffffffffc03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
-fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
-fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
-fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
-fffffffffffffffff03ffffffffffffffffff807fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
-ffffffffffffffffe01ffffffffffffffffff807fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
-ffffffffffffffffe03ffffffffffffffffff807fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
-ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
-ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
-ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffffffff
-ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
-ffffffffffffffff00ffffffffffffffffffe01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
-fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
-fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
-fffffffffffffffc01ffffffffffffffffffc01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffffffffff
-fffffffffffffffc03ffffffffffffffffffc01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffff
-fffffffffffffffc03ffffffffffffffffffc03ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff
-fffffffffffffff807ffffffffffffffffffc03ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffff807ffffffffffffffffff803ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffff00fffffffffffffffffff803ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffff00fffffffffffffffffff807ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffe01fffffffffffffffffff807ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffe03fffffffffffffffffff807ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffc03fffffffffffffffffff807ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffff807fffffffffffffffffff00fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffff807fffffffffffffffffff00fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffff00ffffffffffffffffffff00fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffff00fffffffffffffffffffe00fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffe01fffffffffffffffffffe01fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffe03fffffffffffffffffffe01fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffc03fffffffffffffffffffc01fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffc07fffffffffffffffffffc01fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff807fffffffffffffffffffc03fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff00ffffffffffffffffffffc03fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff00ffffffffffffffffffff803fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffc03ffffffffffffffffffff807fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffc03ffffffffffffffffffff007fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff807ffffffffffffffffffff007fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff807ffffffffffffffffffff007fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff00fffffffffffffffffffff007fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffe00ffffffffffffffffffffe00ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffe01ffffffffffffffffffffe00ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffff
-fffffffffffc01ffffffffffffffffffffe00ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
-fffffffffffc03ffffffffffffffffffffe00ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
-fffffffffff803ffffffffffffffffffffc00ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffff
-fffffffffff807ffffffffffffffffffffc00ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1fffffffffffff
-fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffff
-fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffff
-ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
-ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
-ffffffffff801fffffffffffffffffffff801ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
-ffffffffff803fffffffffffffffffffff801ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffff
-ffffffffff003fffffffffffffffffffff803ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffffffff
-fffffffffe007fffffffffffffffffffff803ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffff
-fffffffffc007fffffffffffffffffffff003ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ffffffffffffff
-fffffffffc00ffffffffffffffffffffff003ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
-fffffffff800ffffffffffffffffffffff003ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
-fffffffff801ffffffffffffffffffffff003ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffff
-fffffffff803ffffffffffffffffffffff007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffff
-fffffffff003fffffffffffffffffffffe007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffc07ffffffffffffff
-ffffffffe007fffffffffffffffffffffe007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff807ffffffffffffff
-ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff007ffffffffffffff
-ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
-ffffffff800ffffffffffffffffffffffe00fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
-ffffffff000ffffffffffffffffffffffe00fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fffffffffffffff
-fffffffe001ffffffffffffffffffffffe00fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
-fffffffc003ffffffffffffffffffffffe00fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
-9ffffffc003ffffffffffffffffffffffe00fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff803fffffffffffffff
-0ffffff8003ffffffffffffffffffffffc01fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
-07fffff0007ffffffffffffffffffffffc01fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
-07ffffe000fffffffffffffffffffffffc01fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff8
-03ffffc000fffffffffffffffffffffffc01fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff0
-03ffff8001fffffffffffffffffffffff801fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffff0
-01ffff0003fffffffffffffffffffffff803fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
-00fffe0003fffffffffffffffffffffff803fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
-00fffe0003fffffffffffffffffffffff803fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffff001ffffffffffffffc0
-003ffc0007fffffffffffffffffffffff003fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff80
-001fe0001ffffffffffffffffffffffff003fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff00
-000fc0001ffffffffffffffffffffffff007fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe00
-000000001ffffffffffffffffffffffff007fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffe00
-000000003ffffffffffffffffffffffff007fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffc00
-000000003ffffffffffffffffffffffff007fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffff800
-000000007fffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff800
-000000007fffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff000
-00000001ffffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff000
-00000001ffffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe000
-00000001ffffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffc000
-00000003ffffffffffffffffffffffffc00ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffc000
-00000003ffffffffffffffffffffffffc00ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff8000
-00000007ffffffffffffffffffffffffc00ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff0000
-0000000fffffffffffffffffffffffffc01ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff0000
-0000001fffffffffffffffffffffffffc01ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffff8003fffffffffffffe0000
-0000001fffffffffffffffffffffffffc01ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffe0000
-0000003fffffffffffffffffffffffffc01ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffc0000
-0000007fffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff80000
-0000007fffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff80000
-000000ffffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff00000
-000001ffffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
-000001ffffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
-000003ffffffffffffffffffffffffff801ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe00000
-000003ffffffffffffffffffffffffff801ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffe00000
-000007ffffffffffffffffffffffffff803ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffc00000
-00000fffffffffffffffffffffffffff003ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff800000
-00000fffffffffffffffffffffffffff803ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff800000
-00001fffffffffffffffffffffffffff803ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffff0007ffffffffffffff000200
-00003fffffffffffffffffffffffffff007ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe000700
-00007fffffffffffffffffffffffffff00fffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe001f80
-0000ffffffffffffffffffffffffffff00fffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe001f80
-0001ffffffffffffffffffffffffffff00fffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffc003fc0
-0001ffffffffffffffffffffffffffff00fffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffff8007fe0
-0003ffffffffffffffffffffffffffff01fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff0007fe0
-0007ffffffffffffffffffffffffffff01fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffe0007ffffffffffffff000fff0
-0007ffffffffffffffffffffffffffff01fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe003fff8
-001fffffffffffffffffffffffffffff07fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffc
-007fffffffffffffffffffffffffffff07fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffe
-00ffffffffffffffffffffffffffffff07fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffffc007ffff
-dfffffffffffffffffffffffffffffff0ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff800fffff
-fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff800fffff
-fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff001fffff
-fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff003fffff
-fffffffffffffffffffffffffffffffe3ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffe003fffff
-ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffc007fffff
-ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffffc007fffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffffc00ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff800ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff801ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffe0000fffffffffffffff001ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff003ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffe007ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffff80007ffffffffffffffe007ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffe0001fffffffffffffffc00fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff801fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffc0003fffffffffffffff801fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffff80003fffffffffffffff003fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff007fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffff007fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc007fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc00ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffc01ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff801ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffff801ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff803ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffff803ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffe007ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffff80007fffffffffffffffe007ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffe00fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffc00fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff801fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff803fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff003fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff003fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffe007fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffc007fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffffc00ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffff80007ffffffffffffffffc00ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffe0000fffffffffffffffff003ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffc0001fffffffffffffffff003ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffe00007ffffffffffffffffc00fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffff80001fffffffffffffffff801fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffff00003fffffffffffffffff801fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffff00007fffffffffffffffff003fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffe00007fffffffffffffffff007fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffc0000ffffffffffffffffff007fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffc0001fffffffffffffffffc007fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffff80003fffffffffffffffffc00ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffff80007fffffffffffffffffc01ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffff00007fffffffffffffffff801ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffff0000ffffffffffffffffff801ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffc0001ffffffffffffffffff803ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffff80003ffffffffffffffffff803ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffe0000ffffffffffffffffffe00fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffc0000ffffffffffffffffffe00fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffc0001ffffffffffffffffffe01fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffff80003ffffffffffffffffffc03fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffff00007ffffffffffffffffffc03fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc03fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc07fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffc0001fffffffffffffffffff807fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffff00007fffffffffffffffffff81ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffe0000ffffffffffffffffffff01ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffe0001ffffffffffffffffffff03ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffc0003ffffffffffffffffffff03ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffff80003fffffffffffffffffffe07ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffff00007fffffffffffffffffffe07ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffe00007fffffffffffffffffffe0fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc0fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc1fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffc0001ffffffffffffffffffffc1fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffff80007ffffffffffffffffffff83fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffff00007ffffffffffffffffffff83fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffe00007ffffffffffffffffffff83fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffe0000fffffffffffffffffffff87fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffc0001fffffffffffffffffffff87fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffc0001fffffffffffffffffffff0ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffff80003fffffffffffffffffffff0ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffff00007fffffffffffffffffffff0ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffff0000ffffffffffffffffffffff1ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffe0000fffffffffffffffffffffe1ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffc0001fffffffffffffffffffffe3ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffff80003fffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffff00007fffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffc0003ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffc0007ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffe0001fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffc0007fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff8000ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff8001ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff0001ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffe0007ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffc000fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8003fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff0007fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffe000ffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffc001ffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffc00fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffc01fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffe00ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffe01ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff83ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-
-
-showpage
-
-% stop using temporary dictionary
-end
-
-% restore original state
-origstate restore
-
-%%Trailer
-
-%%EndDocument
- @endspecial eop end
-%%Page: 1 2
-TeXDict begin 1 1 bop -128 -281 a Fh(Notes)-128 -128
-y Fg(Gn)n(us)30 b(is)g(complex.)44 b(Curren)n(tly)29
-b(it)i(has)e(some)h(876)f(in)n(teractiv)n(e)g(\(user-callable\))-128
--28 y(functions.)43 b(Of)30 b(these)f(618)f(are)h(in)g(the)h(t)n(w)n(o)
-f(ma)5 b(jor)28 b(mo)r(des)i(\(Group)f(and)g(Sum-)-128
-72 y(mary/Article\).)55 b(Man)n(y)33 b(of)h(these)g(functions)g(ha)n(v)
-n(e)f(more)g(than)h(one)f(binding,)-128 171 y(some)i(ha)n(v)n(e)f(3)h
-(or)f(ev)n(en)g(4)h(bindings.)59 b(The)35 b(total)g(n)n(um)n(b)r(er)g
-(of)g(k)n(eybindings)f(is)-128 271 y(677.)48 b(So)32
-b(in)g(order)e(to)i(sa)n(v)n(e)e(40\045)h(space,)h(ev)n(ery)f(function)
-h(is)f(listed)h(only)g(once)-128 371 y(on)25 b(this)g(b)r(o)r(oklet,)g
-(under)g(the)g(\\more)e(logical")g(binding.)36 b(Alternativ)n(e)24
-b(bindings)-128 470 y(are)j(giv)n(en)g(in)h(paren)n(theses)e(in)i(the)g
-(b)r(eginning)f(of)h(the)g(description.)-3 570 y(Man)n(y)23
-b(Gn)n(us)h(commands)f(are)g(a\013ected)h(b)n(y)f(the)i(n)n(umeric)e
-(pre\014x.)35 b(Normally)-128 669 y(y)n(ou)24 b(en)n(ter)f(a)h
-(pre\014x)g(b)n(y)g(holding)f(the)i(Meta)f(k)n(ey)f(and)h(t)n(yping)g
-(a)g(n)n(um)n(b)r(er,)g(but)h(in)-128 769 y(most)31 b(Gn)n(us)g(mo)r
-(des)f(y)n(ou)g(don't)h(need)g(to)g(use)f(Meta)h(since)g(the)g(digits)g
-(are)e(not)-128 869 y(self-inserting.)35 b(The)23 b(pre\014xed)f(b)r
-(eha)n(vior)f(of)i(commands)f(is)g(giv)n(en)g(in)h([brac)n(k)n(ets].)
--128 968 y(Often)28 b(the)g(pre\014x)g(is)f(used)h(to)f(sp)r(ecify:)80
-1068 y([distance])g(Ho)n(w)h(man)n(y)f(ob)5 b(jects)27
-b(to)g(mo)n(v)n(e)g(the)h(p)r(oin)n(t)f(o)n(v)n(er.)80
-1168 y([scop)r(e])37 b(Ho)n(w)g(man)n(y)f(ob)5 b(jects)37
-b(to)g(op)r(erate)g(on)g(\(including)h(the)f(curren)n(t)-128
-1267 y(one\).)80 1367 y([p/p])31 b(The)f(\\Pro)r(cess/Pre\014x)d(Con)n
-(v)n(en)n(tion":)42 b(If)31 b(a)f(pre\014x)g(is)h(giv)n(en)f(then)-128
-1467 y(it)j(determines)e(ho)n(w)g(man)n(y)g(ob)5 b(jects)31
-b(to)h(op)r(erate)f(on.)49 b(Else)31 b(if)h(there)f(are)g(some)-128
-1566 y(ob)5 b(jects)31 b(mark)n(ed)f(with)i(the)f(pro)r(cess)f(mark)h
-(#,)h(these)f(are)f(op)r(erated)h(on.)47 b(Else)-128
-1666 y(only)28 b(the)g(curren)n(t)e(ob)5 b(ject)28 b(is)f(a\013ected.)
-80 1765 y([lev)n(el])h(A)g(group)f(subscrib)r(edness)g(lev)n(el.)38
-b(Only)27 b(groups)g(with)h(a)g(lo)n(w)n(er)e(or)-128
-1865 y(equal)e(lev)n(el)g(will)g(b)r(e)h(a\013ected)f(b)n(y)g(the)g(op)
-r(eration.)35 b(If)25 b(no)e(pre\014x)h(is)g(giv)n(en,)g(`gn)n(us-)-128
-1965 y(group-default-list-lev)n(el')38 b(is)h(used.)73
-b(If)40 b(`gn)n(us-group-use-p)r(ermanen)n(t-lev)n(els',)-128
-2064 y(then)28 b(a)f(pre\014x)g(to)g(the)h(`g')e(and)i(`l')f(commands)g
-(will)g(also)f(set)h(the)h(default)g(lev)n(el.)80 2164
-y([score])40 b(An)h(article)f(score.)76 b(If)41 b(no)g(pre\014x)f(is)h
-(giv)n(en,)j(`gn)n(us-summary-)-128 2264 y(default-score')27
-b(is)g(used.)-128 2463 y(Gn)n(us)h(startup-commands:)-63
-2557 y(M-x)f(gn)n(us)405 b(start)27 b(Gn)n(us.)-63 2657
-y(M-x)g(gn)n(us-no-serv)n(er)46 b(start)33 b(Gn)n(us)h(without)g
-(connecting)f(to)h(serv)n(er)d(\(i.e.)56 b(to)682 2756
-y(read)27 b(mail\).)-128 2852 y(Additionally)-7 b(,)21
-b(there)d(are)f(the)i(t)n(w)n(o)f(commands)g Ff(gnus-plugged)13
-b Fg(and)18 b Ff(gnus-unplugged)p Fg(,)-128 2952 y(whic)n(h)32
-b(are)e(only)h(used)g(if)g(y)n(ou)g(w)n(an)n(t)f(to)h(do)n(wnload)f
-(news)h(and/or)f(read)g(previ-)-128 3051 y(ously)k(do)n(wnloaded)f
-(news)h(o\017ine)g(\(see)g(C-c)g(C-i)g(g)f(Gn)n(us)h(Unplugged)g
-(RET\).)-128 3151 y(Note:)66 b Ff(gnus-no-server)36 b
-Fg(ignores)k(the)j(stu\013)f(in)g Ff(gnus-agent-direct)o(ory)o
-Fg(,)-128 3298 y(and)19 b(th)n(us)f(do)r(es)g(not)g(allo)n(w)g(y)n(ou)f
-(to)i(use)f(Gn)n(us)g(Unplugged.)1814 3247 y(C-c)28 b(C-i)72
-b(Go)27 b(to)h(the)g(Gn)n(us)f(online)h Fe(info)p Fg(.)1814
-3347 y(C-c)g(C-b)49 b(Send)28 b(a)f(Gn)n(us)h Fe(bug)f
-Fg(rep)r(ort.)-128 3672 y Fd(Group-Mo)t(de)-128 3856
-y Fg(RET)50 b(\(=\))38 b(En)n(ter)f(this)i(group.)67
-b([Pre\014x:)57 b(ho)n(w)37 b(man)n(y)h(\(read\))f(articles)100
-3955 y(to)f(fetc)n(h.)62 b(P)n(ositiv)n(e:)53 b(new)n(est)35
-b(articles,)j(negativ)n(e:)52 b(oldest)36 b(ones;)100
-4055 y(non-n)n(umerical:)f(view)28 b(all)f(articles,)g(not)g(just)i
-(unread])1139 4515 y(1)p eop end
-%%Page: 2 3
-TeXDict begin 2 2 bop -128 -294 a Fg(M-RET)137 b(En)n(ter)27
-b(group)f(quic)n(kly)-7 b(.)-128 -194 y(M-SPC)152 b(Same)28
-b(as)f(RET)g(but)h(do)r(es)f(not)h(expunge)f(and)g(hide)h(dorman)n(ts.)
--128 -95 y(M-C-RET)49 b(En)n(ter)37 b(group)g(without)i(an)n(y)e(pro)r
-(cessing,)i(c)n(hanges)e(will)h(not)g(b)r(e)291 5 y(p)r(ermanen)n(t.)
--128 104 y(SPC)256 b(Select)47 b(this)g(group)e(and)i(displa)n(y)f(the)
-h(\014rst)f(\(unread\))g(article.)291 204 y([Same)28
-b(pre\014x)f(as)g(ab)r(o)n(v)n(e.])-128 304 y(?)380 b(Giv)n(e)28
-b(a)f(v)n(ery)f(short)h(help)h(message.)-128 403 y Fc(<)354
-b Fg(Go)28 b(to)f(the)h(b)r(eginning)g(of)f(the)h(Group)f(bu\013er.)
--128 503 y Fc(>)354 b Fg(Go)28 b(to)f(the)h(end)g(of)f(the)h(Group)f
-(bu\013er.)-128 603 y(,)396 b(Jump)28 b(to)f(the)h(lo)n(w)n(est-lev)n
-(el)e(group)h(with)h(unread)f(articles.)-128 702 y(.)396
-b(Jump)28 b(to)f(the)h(\014rst)g(group)e(with)i(unread)f(articles.)-128
-802 y(^)377 b(En)n(ter)27 b(the)h(Serv)n(er)e(bu\013er)i(mo)r(de.)-128
-901 y(a)377 b(P)n(ost)30 b(an)g Fe(article)h Fg(to)g(a)g(group)e
-([Pre\014x:)43 b(use)30 b(group)g(under)h(p)r(oin)n(t)291
-1001 y(to)d(\014nd)g(p)r(osting-st)n(yle].)-128 1101
-y(b)373 b(Find)28 b Fe(b)s(ogus)f Fg(groups)f(and)i(delete)f(them.)-128
-1200 y(c)382 b(Mark)22 b(all)h(un)n(tic)n(k)n(ed)f(articles)g(in)h
-(this)g(group)e(as)i(read)e(\()p Fe(catc)m(h-up)p Fg(\).)291
-1300 y([p/p])-128 1400 y(g)377 b(Chec)n(k)27 b(the)h(serv)n(er)e(for)h
-(new)h(articles)e(\()p Fe(get)p Fg(\).)38 b([lev)n(el])-128
-1499 y(M-g)273 b(Chec)n(k)27 b(the)g(serv)n(er)e(for)h(new)h(articles)f
-(in)h(this)g(group)f(\()p Fe(get)p Fg(\).)37 b([p/p])-128
-1599 y(j)394 b Fe(Jump)28 b Fg(to)f(a)h(group.)-128 1698
-y(m)350 b Fe(Mail)26 b Fg(a)h(message)f(to)h(someone)e([Pre\014x:)36
-b(use)27 b(group)f(under)h(p)r(oin)n(t)291 1798 y(to)h(\014nd)g(p)r
-(osting-st)n(yle].)-128 1898 y(n)373 b(Go)28 b(to)f(the)h
-Fe(next)g Fg(group)e(with)j(unread)e(articles.)36 b([distance])-128
-1997 y(M-n)269 b(Go)24 b(to)g(the)g Fe(next)h Fg(group)e(on)g(the)i
-(same)e(or)g(lo)n(w)n(er)g(lev)n(el.)35 b([distance])-128
-2097 y(p)373 b(\(DEL\))21 b(Go)g(to)f(the)h Fe(previous)g
-Fg(group)e(with)i(unread)f(articles.)34 b([dis-)291 2197
-y(tance])-128 2296 y(M-p)269 b(Go)26 b(to)g(the)h Fe(previous)e
-Fg(group)g(on)h(the)h(same)e(or)h(lo)n(w)n(er)e(lev)n(el.)36
-b([dis-)291 2396 y(tance])-128 2495 y(q)375 b Fe(Quit)27
-b Fg(Gn)n(us.)-128 2595 y(r)386 b(Re-read)27 b(the)h(init)g(\014le)g
-(\()p Fe(reset)p Fg(\).)-128 2695 y(s)386 b Fe(Sa)m(v)m(e)53
-b Fg(the)f(`.newsrc.eld')g(\014le)g(\(and)f(`.newsrc')h(if)g(`gn)n
-(us-sa)n(v)n(e-)291 2794 y(newsrc-\014le'\).)-128 2894
-y(z)382 b(Susp)r(end)28 b(\(kill)g(all)g(bu\013ers)f(of)6
-b(\))29 b(Gn)n(us.)-128 2994 y(B)360 b Fe(Bro)m(wse)28
-b Fg(a)f(foreign)f(serv)n(er.)-128 3093 y(C)359 b(Mark)27
-b(all)g(articles)g(in)h(this)g(group)e(as)h(read)g(\()p
-Fe(Catc)m(h-up)p Fg(\).)38 b([p/p])-128 3193 y(F)365
-b Fe(Find)28 b Fg(new)f(groups)f(and)i(pro)r(cess)e(them.)-128
-3293 y(N)357 b(Go)28 b(to)f(the)h Fe(next)g Fg(group.)36
-b([distance])-128 3392 y(P)362 b(Go)28 b(to)f(the)h Fe(previous)f
-Fg(group.)36 b([distance])-128 3492 y(Q)354 b Fe(Quit)27
-b Fg(Gn)n(us)h(without)g(sa)n(ving)e(an)n(y)h(startup)g(\(.newsrc\))h
-(\014les.)-128 3591 y(R)358 b Fe(Restart)28 b Fg(Gn)n(us.)-128
-3691 y(Z)368 b(Clear)27 b(the)h(dribble)f(bu\013er.)1139
-4515 y(2)p eop end
-%%Page: 3 4
-TeXDict begin 3 3 bop -128 -294 a Fg(M-c)297 b(Clear)26
-b(data)h(from)h(group)e(\(marks)h(and)g(list)h(of)g(read)e(articles\).)
--128 -194 y(C-c)i(C-s)164 b Fe(Sort)39 b Fg(the)f(groups)g(b)n(y)g
-(name,)j(n)n(um)n(b)r(er)d(of)h(unread)f(articles,)i(or)310
--95 y(lev)n(el)27 b(\(dep)r(ending)h(on)f(`gn)n
-(us-group-sort-function'\).)-128 5 y(C-c)h(C-x)153 b(Run)26
-b(all)f(expirable)g(articles)g(in)g(this)h(group)f(through)g(the)h
-Fe(expiry)310 104 y Fg(pro)r(cess.)-128 204 y(C-c)i(M-C-x)49
-b(Run)28 b(all)f(articles)g(in)h(all)f(groups)f(through)h(the)h
-Fe(expiry)g Fg(pro)r(cess.)-128 304 y(C-c)g(M-g)139 b(Activ)-5
-b(ate)28 b(all)f Fe(groups)p Fg(.)-128 403 y(C-c)h(C-i)174
-b(Gn)n(us)27 b(online-man)n(ual)g(\()p Fe(info)p Fg(\).)-128
-503 y(C-x)h(C-t)158 b Fe(T)-8 b(ransp)s(ose)27 b Fg(t)n(w)n(o)g
-(groups.)-128 603 y(H)h(f)323 b(F)-7 b(etc)n(h)28 b(this)f(group's)g
-Fe(F)-11 b(A)m(Q)28 b Fg(\(using)g(ange-ftp\).)-128 702
-y(H)g(c)311 b(Displa)n(y)27 b(this)h(group's)e Fe(c)m(harter)p
-Fg(.)39 b([Pre\014x:)d(query)26 b(for)h(group])-128 802
-y(H)h(C)288 b(Displa)n(y)42 b(this)i(group's)e Fe(con)m(trol)50
-b(message)41 b Fg(\(using)i(ange-ftp\).)310 901 y([Pre\014x:)36
-b(query)26 b(for)h(group])-128 1001 y(H)h(v)304 b(\(V\))28
-b(Displa)n(y)f(the)h(Gn)n(us)g Fe(v)m(ersion)f Fg(n)n(um)n(b)r(er.)-128
-1101 y(H)h(d)302 b(\(C-c)29 b(C-d\))h(Sho)n(w)f(the)i
-Fe(description)e Fg(of)g(this)h(group)f([Pre\014x:)40
-b(re-)310 1200 y(read)26 b(from)i(serv)n(er].)-128 1300
-y(M-d)288 b Fe(Describ)s(e)27 b Fg(all)g(groups.)36 b([Pre\014x:)f
-(re-read)26 b(from)h(serv)n(er])-128 1400 y(D)i(g)304
-b(Regenerate)26 b(a)h(Siev)n(e)g(script)h(from)f(group)f(parameters.)
--128 1499 y(D)j(u)300 b(Regenerate)26 b(Siev)n(e)h(script)g(and)h
-Fe(upload)f Fg(to)h(serv)n(er.)-128 1770 y Fh(Group)38
-b(Subscrib)s(edness-Lev)m(els)-128 1923 y Fg(The)24 b(table)g(b)r(elo)n
-(w)g(assumes)e(that)j(y)n(ou)e(use)g(the)h(default)h(Gn)n(us)e(lev)n
-(els.)35 b(Fill)25 b(y)n(our)-128 2023 y(user-sp)r(eci\014c)i(lev)n
-(els)g(in)h(the)g(blank)f(cells.)p -128 2150 1608 4 v
--130 2250 4 100 v -78 2220 a(Lev)n(el)p 161 2250 V 99
-w(Groups)p 905 2250 V 479 w(Status)p 1478 2250 V -128
-2253 1608 4 v -130 2353 4 100 v -3 2323 a(1)p 161 2353
-V 173 w(draft/mail)g(groups)p 905 2353 V 1478 2353 V
--130 2452 V -3 2422 a(2)p 161 2452 V 173 w(mail)h(groups)p
-905 2452 V 1478 2452 V -130 2552 V -3 2522 a(3)p 161
-2552 V 905 2552 V 917 w(subscrib)r(ed)p 1478 2552 V -130
-2652 V -3 2622 a(4)p 161 2652 V 905 2652 V 1478 2652
-V -130 2751 V -3 2721 a(5)p 161 2751 V 173 w(default)g(list)g(lev)n(el)
-p 905 2751 V 1478 2751 V -128 2754 1608 4 v -130 2854
-4 100 v -3 2824 a(6)p 161 2854 V 905 2854 V 917 w(unsubscrib)r(ed)p
-1478 2854 V -130 2954 V -3 2924 a(7)p 161 2954 V 905
-2954 V 1478 2954 V -128 2957 1608 4 v -130 3057 4 100
-v -3 3027 a(8)p 161 3057 V 905 3057 V 917 w(zom)n(bies)p
-1478 3057 V -128 3060 1608 4 v -130 3160 4 100 v -3 3130
-a(9)p 161 3160 V 905 3160 V 917 w(killed)p 1478 3160
-V -128 3163 1608 4 v -128 3357 a Fh(List)38 b(Groups)-128
-3508 y Fg(A)28 b(d)50 b(\(C-c)26 b(C-M-a\))e(List)i(all)f(groups)f
-(whose)h(names)g(or)f Fe(descriptions)h Fg(matc)n(h)58
-3607 y(a)j(regexp.)-128 3707 y(A)g(k)52 b(\(C-c)31 b(C-l\))g(List)g
-(all)g Fe(killed)f Fg(groups.)45 b([Pre\014x:)e(lo)r(ok)30
-b(at)h(activ)n(e-\014le)f(from)58 3807 y(serv)n(er])-128
-3906 y(A)e(l)73 b(List)25 b(all)f(groups)f(on)h(a)f(sp)r(eci\014c)i
-(lev)n(el.)35 b([Pre\014x:)f(also)23 b(list)i(groups)e(with)i(no)58
-4006 y(unread)i(articles])1139 4515 y(3)p eop end
-%%Page: 4 5
-TeXDict begin 4 4 bop -128 -294 a Fg(A)28 b(a)84 b(\(C-c)21
-b(C-a\))g(List)g(all)f(groups)g(whose)g(names)h(matc)n(h)g(a)f(regexp)g
-(\()p Fe(aprop)s(os)p Fg(\).)-128 -194 y(A)28 b(A)64
-b(List)28 b(the)g(serv)n(er's)e(activ)n(e-\014le.)-128
--95 y(A)i(M)50 b(List)28 b(groups)e(that)i Fe(matc)m(h)h
-Fg(a)e(regexp.)-128 5 y(A)h(m)57 b(List)25 b(groups)d(that)j
-Fe(matc)m(h)g Fg(a)f(regexp)f(and)h(ha)n(v)n(e)f(unread)h(articles.)35
-b([lev)n(el])-128 104 y(A)28 b(s)93 b(\(l\))29 b(List)e(all)g
-Fe(subscrib)s(ed)g Fg(groups)f(with)i(unread)f(articles.)36
-b([lev)n(el;)27 b(5)g(and)88 204 y(lo)n(w)n(er)f(is)i(the)g(default])
--128 304 y(A)g(u)80 b(\(L\))29 b(List)g(all)f(groups)e(\(including)j
-(read)f(and)g Fe(unsubscrib)s(ed)p Fg(\).)38 b([lev)n(el;)29
-b(7)88 403 y(and)f(lo)n(w)n(er)e(is)h(the)h(default])-128
-503 y(A)g(z)89 b(List)28 b(all)f Fe(zom)m(bie)g Fg(groups.)-128
-603 y(A)h(c)89 b(List)28 b(all)f(groups)f(with)j(cac)n(hed)d(articles.)
-36 b([lev)n(el])-128 702 y(A)28 b(?)87 b(List)28 b(all)f(groups)f(with)
-j(dorman)n(t)d(articles.)36 b([lev)n(el])-128 973 y Fh(Create/Edit)h(F)
--9 b(oreign)38 b(Groups)-128 1126 y Fg(The)28 b(select)g(metho)r(ds)f
-(are)g(indicated)h(in)g(paren)n(theses.)-60 1220 y(G)g(a)180
-b(Mak)n(e)26 b(the)i(Gn)n(us)g(list)g Fe(arc)m(hiv)m(e)h
-Fg(group.)36 b(\(nndir)27 b(o)n(v)n(er)f(ange-ftp\))-60
-1320 y(G)i(c)185 b Fe(Customize)26 b Fg(this)i(group's)e(parameters.)
--60 1419 y(G)i(d)176 b(Mak)n(e)22 b(a)i Fe(directory)g
-Fg(group)f(\(ev)n(ery)g(\014le)h(m)n(ust)f(b)r(e)i(a)e(p)r(osting)g
-(and)h(\014les)255 1519 y(m)n(ust)j(ha)n(v)n(e)g(n)n(umeric)g(names\).)
-37 b(\(nndir\))-60 1619 y(G)28 b(D)159 b(En)n(ter)19
-b(a)h Fe(directory)h Fg(as)f(a)g(\(temp)r(orary\))g(group.)34
-b(\(nneething)21 b(without)255 1718 y(recording)k(articles)i(read\))-60
-1818 y(G)h(e)185 b(\(M-e\))27 b Fe(Edit)h Fg(this)f(group's)g(select)g
-(metho)r(d.)-60 1918 y(G)h(E)165 b Fe(Edit)27 b Fg(this)h(group's)e
-(info)i(\(select)f(metho)r(d,)h(articles)f(read,)g(etc\).)-60
-2017 y(G)h(f)197 b(Mak)n(e)26 b(a)h(group)g(based)g(on)g(a)g
-Fe(\014le)p Fg(.)37 b(\(nndo)r(c\))-60 2117 y(G)28 b(h)176
-b(Mak)n(e)26 b(the)i(Gn)n(us)g Fe(help)f Fg(\(do)r(cumen)n(tation\))h
-(group.)35 b(\(nndo)r(c\))-60 2217 y(G)28 b(k)178 b(Mak)n(e)26
-b(a)h Fe(kib)s(oze)h Fg(group.)35 b(\(nnkib)r(oze\))-60
-2316 y(G)28 b(m)153 b Fe(Mak)m(e)28 b Fg(a)f(new)h(group.)-60
-2416 y(G)g(p)176 b(Edit)27 b(this)h(group's)e Fe(parameters)p
-Fg(.)-60 2515 y(G)i(r)189 b(Rename)27 b(this)h(group)e(\(do)r(es)i(not)
-f(w)n(ork)g(with)h(read-only)e(groups!\).)-60 2615 y(G)i(u)176
-b(Create)26 b(one)h(of)h(the)g(groups)e(men)n(tioned)i(in)g(gn)n(us-)p
-Fe(useful)p Fg(-groups.)-60 2715 y(G)g(v)178 b(Add)28
-b(this)g(group)e(to)i(a)f Fe(virtual)h Fg(group.)35 b([p/p])-60
-2814 y(G)28 b(V)160 b(Mak)n(e)26 b(a)h(new)h(empt)n(y)g
-Fe(virtual)g Fg(group.)36 b(\(nn)n(virtual\))-60 2914
-y(G)28 b(w)162 b(Create)34 b(ephemeral)g(group)g(based)g(on)h(w)n
-(eb-searc)n(h.)56 b([Pre\014x:)51 b(mak)n(e)255 3014
-y(solid)27 b(group)f(instead])-60 3113 y(G)i(R)161 b(Mak)n(e)26
-b(an)i Fe(RSS)f Fg(group.)-60 3213 y(G)h(DEL)50 b Fe(Delete)26
-b Fg(group)h([Pre\014x:)36 b(delete)28 b(all)f(articles)g(as)f(w)n
-(ell].)-60 3312 y(G)i(x)178 b(Expunge)26 b(all)i(deleted)g(articles)e
-(in)i(an)f(nnimap)h(mailb)r(o)n(x.)-60 3412 y(G)g(l)199
-b(Edit)27 b(A)n(CL)h(\(Access)f(Con)n(trol)f Fe(List)p
-Fg(\))i(for)f(an)g(nnimap)h(mailb)r(o)n(x.)-128 3512
-y(Y)-7 b(ou)35 b(can)f(also)g(create)f(mail-groups)g(and)h(read)g(y)n
-(our)f(mail)i(with)g(Gn)n(us)f(\(v)n(ery)-128 3612 y(useful)c(if)g(y)n
-(ou)e(are)g(subscrib)r(ed)h(to)g(mailing)f(lists\),)i(using)f(one)g(of)
-g(the)g(metho)r(ds)-128 3712 y(nnm)n(b)r(o)n(x,)24 b(nn)n(bab)n(yl,)f
-(nnml,)h(nnmh,)g(or)d(nnfolder.)35 b(Read)23 b(ab)r(out)f(it)h(in)g
-(the)f(online)-128 3811 y(info)28 b(\(C-c)g(C-i)f(g)g(Reading)g(Mail)h
-(RET\).)-128 4044 y Fh(Unsubscrib)s(e,)40 b(Kill)d(and)h(Y)-9
-b(ank)38 b(Groups)1139 4515 y Fg(4)p eop end
-%%Page: 5 6
-TeXDict begin 5 5 bop -128 -294 a Fg(S)28 b(k)138 b(\(C-k\))27
-b Fe(Kill)f Fg(this)i(group.)-128 -194 y(S)g(l)159 b(Set)27
-b(the)h Fe(lev)m(el)f Fg(of)h(this)g(group.)36 b([p/p])-128
--95 y(S)28 b(s)149 b(\(U\))28 b(Prompt)f(for)g(a)g(group)g(and)g
-(toggle)f(its)i Fe(subscription)p Fg(.)-128 5 y(S)g(t)150
-b(\(u\))28 b Fe(T)-8 b(oggle)27 b Fg(subscription)g(to)g(this)h(group.)
-36 b([p/p])-128 104 y(S)28 b(w)122 b(\(C-w\))27 b(Kill)h(all)f(groups)f
-(in)i(the)g(region.)-128 204 y(S)g(y)138 b(\(C-y\))27
-b Fe(Y)-8 b(ank)29 b Fg(the)f(last)f(killed)h(group.)-128
-304 y(S)g(z)145 b(Kill)27 b(all)g Fe(zom)m(bie)g Fg(groups.)-128
-403 y(S)h(C-k)50 b(Kill)27 b(all)g(groups)f(on)i(a)f(certain)g(lev)n
-(el.)-128 674 y Fh(Mark)39 b(Groups)-128 825 y Fg(M)28
-b(m)50 b(\(#\))29 b(Set)f(the)g(pro)r(cess)e Fe(mark)i
-Fg(on)g(this)g(group.)35 b([scop)r(e])-128 925 y(M)28
-b(r)86 b(Mark)27 b(all)g(groups)f(matc)n(hing)h(regular)f(expression.)
--128 1024 y(M)i(u)73 b(\(M-#\))44 b(Remo)n(v)n(e)e(the)h(pro)r(cess)f
-(mark)h(from)f(this)i(group)e(\()p Fe(unmark)p Fg(\).)95
-1124 y([scop)r(e])-128 1223 y(M)28 b(U)57 b(Remo)n(v)n(e)27
-b(the)h(pro)r(cess)e(mark)h(from)g(all)g(groups)g(\()p
-Fe(umark)32 b(all)p Fg(\).)-128 1323 y(M)c(w)59 b(Mark)27
-b(all)g(groups)f(in)i(the)g(curren)n(t)f(region.)36 b([pre\014x:)g
-(unmark])-128 1423 y(M)28 b(b)73 b(Mark)27 b(all)g(groups)f(in)i(the)g
-Fe(bu\013er)p Fg(.)37 b([pre\014x:)g(unmark])-128 1693
-y Fh(Group-Unplugged)-128 1844 y Fg(J)28 b(j)87 b(T)-7
-b(oggle)26 b(plugged-state.)-128 1944 y(J)i(s)79 b(F)-7
-b(etc)n(h)28 b(articles)e(from)i(all)f(groups)f(for)h
-(o\017ine-reading.)-128 2044 y(J)h(u)66 b(F)-7 b(etc)n(h)28
-b(all)f(eligible)g(articles)g(from)g(this)h(group.)-128
-2143 y(J)g(S)66 b Fe(Send)27 b Fg(all)h(sendable)f(messages)f(in)i(the)
-g(drafts)f(group.)-128 2243 y(J)h(c)75 b(En)n(ter)27
-b Fe(category)i Fg(bu\013er.)-128 2342 y(J)f(a)70 b Fe(Add)28
-b Fg(this)g(group)e(to)i(an)f(Agen)n(t)g(category)f([p/p].)-128
-2442 y(J)i(r)79 b Fe(Remo)m(v)m(e)27 b Fg(this)h(group)e(from)i(its)f
-(Agen)n(t)h(category)e([p/p].)-128 2542 y(J)i(Y)50 b(Sync)n(hronize)26
-b(\015ags)h(c)n(hanged)f(while)i(unplugged)g(with)g(remote)f(serv)n
-(er.)-128 2812 y Fh(Group)38 b(T)-9 b(opics)-128 2966
-y Fg(T)i(opics)25 b(are)e(\\categories")f(for)i(groups.)35
-b(Press)23 b(t)i(in)g(the)g(group-bu\013er)f(to)g(toggle)-128
-3065 y(gn)n(us-topic-mo)r(de)j(\(C-c)g(C-i)g(g)h(Group)f(T)-7
-b(opics)27 b(RET\).)-91 3164 y(T)h(n)176 b(Prompt)26
-b(for)h(topic)h Fe(name)f Fg(and)h(create)f(it.)-91 3264
-y(T)h(m)153 b Fe(Mo)m(v)m(e)27 b Fg(the)h(curren)n(t)f(group)g(to)g
-(some)g(other)g(topic)h([p/p].)-91 3363 y(T)g(j)197 b
-Fe(Jump)27 b Fg(to)h(a)f(topic.)-91 3463 y(T)h(c)185
-b Fe(Cop)m(y)28 b Fg(the)g(curren)n(t)e(group)h(to)g(some)g(other)g
-(topic)h([p/p].)-91 3563 y(T)g(D)159 b(Remo)n(v)n(e)26
-b(\(not)i(delete\))g(the)g(curren)n(t)f(group)f([p/p].)-91
-3662 y(T)i(M)146 b Fe(Mo)m(v)m(e)27 b Fg(all)h(groups)e(matc)n(hing)h
-(a)g(regexp)g(to)g(a)g(topic.)-91 3762 y(T)h(C)162 b
-Fe(Cop)m(y)28 b Fg(all)f(groups)f(matc)n(hing)h(a)h(regexp)e(to)h(a)h
-(topic.)-91 3861 y(T)g(H)160 b(T)-7 b(oggle)26 b Fe(hiding)g
-Fg(of)i(empt)n(y)g(topics.)-91 3961 y(T)g(r)189 b Fe(Rename)26
-b Fg(a)i(topic.)-91 4061 y(T)g(DEL)50 b(Delete)28 b(an)f(empt)n(y)h
-(topic.)-91 4160 y(T)g(#)153 b(Mark)26 b(all)i(groups)e(in)i(the)g
-(curren)n(t)e(topic)i(with)g(the)g(pro)r(cess-mark.)1139
-4515 y(5)p eop end
-%%Page: 6 7
-TeXDict begin 6 6 bop -128 -294 a Fg(T)28 b(M-#)73 b(Remo)n(v)n(e)23
-b(the)i(pro)r(cess-mark)d(from)i(all)g(groups)f(in)h(the)h(curren)n(t)e
-(topic.)-128 -194 y(T)28 b(T)-7 b(AB)72 b(\(T)-7 b(AB\))28
-b(Inden)n(t)g(curren)n(t)f(topic)g([Pre\014x:)36 b(uninden)n(t].)-128
--95 y(M-T)-7 b(AB)56 b(Uninden)n(t)28 b(the)g(curren)n(t)f(topic.)-128
-5 y(RET)156 b(\(SPC\))28 b(Either)f(unfold)h(topic)f(or)g(en)n(ter)g
-(group)g([lev)n(el].)-128 104 y(T)h(s)213 b Fe(Sho)m(w)28
-b Fg(the)g(curren)n(t)e(topic.)37 b([Pre\014x:)f(sho)n(w)27
-b(p)r(ermanen)n(tly])-128 204 y(T)h(h)200 b Fe(Hide)27
-b Fg(the)h(curren)n(t)e(topic.)37 b([Pre\014x:)f(hide)28
-b(p)r(ermanen)n(tly])-128 304 y(C-c)g(C-x)49 b(Expire)27
-b(all)g(articles)f(in)i(curren)n(t)f(group)g(or)f(topic.)-128
-403 y(C-k)202 b Fe(Kill)26 b Fg(a)h(group)g(or)f(topic.)-128
-503 y(C-y)202 b Fe(Y)-8 b(ank)29 b Fg(a)e(group)f(or)h(topic.)-128
-603 y(A)h(T)184 b(List)28 b(activ)n(e-\014le)e(using)h
-Fe(topics)p Fg(.)-128 702 y(G)h(p)195 b(Edit)28 b(topic-)p
-Fe(parameters)p Fg(.)-128 802 y(T)g(M-n)96 b(Go)27 b(to)h
-Fe(next)g Fg(topic.)37 b([distance])-128 901 y(T)28 b(M-p)96
-b(Go)27 b(to)h Fe(previous)f Fg(topic.)37 b([distance])-128
-1155 y Fe(T)-8 b(opic)32 b(Sorting)-128 1303 y Fg(T)c(S)g(a)77
-b(Sort)27 b Fe(alphab)s(etically)p Fg(.)-128 1403 y(T)h(S)g(u)73
-b(Sort)27 b(b)n(y)g(n)n(um)n(b)r(er)h(of)f Fe(unread)h
-Fg(articles.)-128 1503 y(T)g(S)g(l)96 b(Sort)27 b(b)n(y)g(group)g
-Fe(lev)m(el)p Fg(.)-128 1602 y(T)h(S)g(v)75 b(Sort)27
-b(b)n(y)g(group)g(score)f(\()p Fe(v)-5 b(alue)p Fg(\).)-128
-1702 y(T)28 b(S)g(r)86 b(Sort)27 b(b)n(y)g(group)g Fe(rank)p
-Fg(.)-128 1801 y(T)h(S)g(m)50 b(Sort)27 b(b)n(y)g Fe(metho)s(d)p
-Fg(.)-128 1901 y(T)h(S)g(e)82 b(Sort)27 b(b)n(y)g Fe(serv)m(er)i
-Fg(name.)-128 2001 y(T)f(S)g(s)86 b(Sort)27 b(according)f(to)h(`gn)n
-(us-group-sort-function'.)-128 2096 y(With)i(a)e(pre\014x)g(these)h
-(commands)f(will)h(sort)e(in)i(rev)n(erse)e(order.)-128
-2371 y Fd(Summary)45 b(Mo)t(de)-128 2555 y Fg(SPC)169
-b(\(A)26 b(SPC,)g(A)g(n\))h(Select)f(an)f(article,)h(scroll)f(it)h(one)
-g(page,)f(mo)n(v)n(e)g(to)h(the)204 2654 y(next)h(one.)-128
-2754 y(DEL)160 b(\(A)28 b(DEL,)f(A)h(p,)g(b\))g(Scroll)f(this)h
-(article)f(one)g(page)g(bac)n(k.)36 b([distance])-128
-2853 y(RET)154 b(\(A)28 b(RET\))f(Scroll)g(this)h(article)f(one)g(line)
-h(forw)n(ard.)35 b([distance])-128 2953 y(M-RET)50 b(\(A)28
-b(M-RET\))f(Scroll)g(this)h(article)f(one)g(line)h(bac)n(kw)n(ard.)35
-b([distance])-128 3053 y(=)267 b(Expand)38 b(the)i(Summary)f(windo)n(w)
-g(\(fullsize\).)73 b([Pre\014x:)60 b(shrink)38 b(to)204
-3152 y(displa)n(y)26 b(article)h(windo)n(w])-128 3252
-y(&)267 b(Execute)36 b(a)h(command)g(on)g(all)g(articles)f(whose)h
-(header)f(matc)n(hes)h(a)204 3352 y(regexp.)e([Pre\014x:)h(mo)n(v)n(e)
-27 b(bac)n(kw)n(ards])-128 3451 y(M-&)163 b(Execute)27
-b(a)g(command)g(on)g(all)h(articles)e(ha)n(ving)h(the)h(pro)r(cess)e
-(mark.)-128 3551 y(M-n)182 b(\(G)33 b(M-n\))h(Go)f(to)g(the)h
-Fe(next)f Fg(summary)g(line)g(of)g(an)g(unread)g(article.)204
-3650 y([distance])-128 3750 y(M-p)182 b(\(G)27 b(M-p\))f(Go)g(to)h(the)
-g Fe(previous)f Fg(summary)f(line)i(of)f(an)g(unread)g(arti-)204
-3850 y(cle.)36 b([distance])1139 4515 y(6)p eop end
-%%Page: 7 8
-TeXDict begin 7 7 bop -128 -294 a Fg(M-s)151 b Fe(Searc)m(h)29
-b Fg(through)e(all)g(subsequen)n(t)g(articles)g(for)g(a)g(regexp.)-128
--194 y(M-r)151 b(Searc)n(h)26 b(through)h(all)g(previous)g(articles)g
-(for)g(a)g(regexp.)-128 -95 y(A)h(P)141 b Fe(P)m(ostscript)p
-Fg(-prin)n(t)27 b(curren)n(t)g(bu\013er.)-128 5 y(M-k)140
-b(Edit)27 b(this)h(group's)f Fe(kill)f Fg(\014le.)-128
-104 y(M-K)119 b(Edit)27 b(the)h(general)f Fe(kill)f Fg(\014le.)-128
-204 y(C-t)168 b(T)-7 b(oggle)26 b Fe(truncation)i Fg(of)g(summary)f
-(lines.)-128 304 y(Y)h(g)156 b(Regenerate)26 b(the)i(summary-bu\013er.)
--128 403 y(Y)g(c)161 b(Insert)27 b(all)g(cac)n(hed)g(articles)g(in)n
-(to)g(the)h(summary-bu\013er.)-128 503 y(M-C-e)59 b Fe(Edit)27
-b Fg(the)h(group-parameters.)-128 603 y(M-C-a)54 b(Customize)27
-b(the)h(group-parameters.)-128 702 y(A)g Fc(<)133 b Fg(\()p
-Fc(<)p Fg(,)27 b(A)h(b\))g(Scroll)f(to)h(the)g(b)r(eginning)f(of)h
-(this)g(article.)-128 802 y(A)g Fc(>)133 b Fg(\()p Fc(>)p
-Fg(,)27 b(A)h(e\))g(Scroll)f(to)h(the)f(end)h(of)g(this)g(article.)-128
-901 y(A)g(s)165 b(\(s\))28 b(P)n(erform)e(an)h(i)p Fe(searc)m(h)i
-Fg(in)f(the)g(article)e(bu\013er.)-128 1001 y(A)i(D)135
-b(\(C-d\))30 b(Un)p Fe(digestify)e Fg(this)i(article)f(in)n(to)g(a)g
-(separate)f(group.)41 b([Pre\014x:)160 1101 y(force)27
-b(digest])-128 1200 y(M-C-d)50 b(Lik)n(e)59 b(C-d,)67
-b(but)59 b(op)r(en)h(sev)n(eral)d(do)r(cumen)n(ts)j(in)f(nndo)r
-(c-groups,)160 1300 y(wrapp)r(ed)27 b(in)h(an)f(nn)n(virtual)g(group)g
-([p/p])-128 1400 y(A)h(g)156 b(\(g\))28 b(\(Re\)fetc)n(h)g(this)g
-(article)f(\()p Fe(get)p Fg(\).)37 b([Pre\014x:)f(get)27
-b(ra)n(w)g(v)n(ersion])-128 1499 y(A)h(r)165 b(\(^,)28
-b(A)g(^\))g(F)-7 b(etc)n(h)28 b(the)g(paren)n(t\(s\))g(of)g(this)g
-(article.)37 b([Pre\014x:)f(if)29 b(p)r(ositiv)n(e)160
-1599 y(fetc)n(h)f Fb(n)33 b Fg(ancestors;)26 b(negativ)n(e:)36
-b(fetc)n(h)28 b(only)f(the)h Fb(n)6 b Fg(th)28 b(ancestor])-128
-1698 y(A)g(t)166 b Fe(T)-8 b(ranslate)28 b Fg(this)g(article.)-128
-1798 y(A)g(R)137 b(F)-7 b(etc)n(h)28 b(all)f(articles)g(men)n(tioned)g
-(in)h(the)g Fe(References)p Fg(-header.)-128 1898 y(A)g(T)138
-b(F)-7 b(etc)n(h)28 b(full)g Fe(thread)g Fg(in)g(whic)n(h)g(the)g
-(curren)n(t)e(article)h(app)r(ears.)-128 1997 y(M-^)142
-b(F)-7 b(etc)n(h)28 b(the)g(article)f(with)h(a)f(giv)n(en)g
-(Message-ID.)-128 2097 y(S)h(y)170 b Fe(Y)-8 b(ank)23
-b Fg(the)f(curren)n(t)e(article)h(in)n(to)h(an)f(existing)g
-(message-bu\013er.)34 b([p/p])-128 2197 y(A)28 b(M)122
-b(Setup)28 b(group)f(parameters)g(for)g Fe(mailing)g
-Fg(lists)h(from)g(headers.)37 b([Pre-)160 2296 y(\014x:)g(replace)26
-b(old)i(settings])-128 2567 y Fh(Select)38 b(Articles)-128
-2720 y Fg(These)27 b(commands)g(select)g(the)h(target)e(article.)36
-b(They)27 b(do)g(not)g(understand)g(the)-128 2820 y(pre\014x.)-60
-2914 y(h)230 b(En)n(ter)27 b(article-bu\013er.)-60 3014
-y(G)h(b)137 b(\(,\))29 b(Go)e(to)h(the)g Fe(b)s(est)e
-Fg(article)h(\(the)i(one)e(with)h(highest)f(score\).)-60
-3113 y(G)h(f)158 b(\(.\))38 b(Go)27 b(to)h(the)g Fe(\014rst)g
-Fg(unread)f(article.)-60 3213 y(G)h(n)137 b(\(n\))29
-b(Go)e(to)h(the)g Fe(next)g Fg(unread)f(article.)-60
-3312 y(G)h(p)137 b(\(p\))29 b(Go)e(to)h(the)g Fe(previous)f
-Fg(unread)g(article.)-60 3412 y(G)h(N)121 b(\(N\))29
-b(Go)e(to)h Fe(the)f Fg(next)h(article.)-60 3512 y(G)g(P)126
-b(\(P\))28 b(Go)g(to)f(the)h Fe(previous)f Fg(article.)-60
-3611 y(G)h(C-n)49 b(\(M-C-n\))28 b(Go)g(to)f(the)h Fe(next)g
-Fg(article)f(with)h(the)g(same)f(sub)5 b(ject.)-60 3711
-y(G)28 b(C-p)49 b(\(M-C-p\))28 b(Go)g(to)f(the)h Fe(previous)f
-Fg(article)g(with)h(the)g(same)f(sub)5 b(ject.)-60 3811
-y(G)28 b(l)160 b(\(l\))29 b(Go)e(to)h(the)g(previously)e(read)h
-(article)g(\()p Fe(last-read-article)p Fg(\).)-60 3910
-y(G)h(o)141 b(P)n(op)27 b(an)g(article)g(o\013)h(the)g(summary)f
-(history)f(and)i(go)e(to)i(it.)-60 4010 y(G)g(g)141 b(Searc)n(h)27
-b(an)g(article)g(via)g(sub)5 b(ject.)-60 4109 y(G)28
-b(j)158 b(\(j\))29 b(Searc)n(h)e(an)g(article)g(via)g(Message-Id)f(or)g
-(sub)5 b(ject.)1139 4515 y(7)p eop end
-%%Page: 8 9
-TeXDict begin 8 8 bop -128 -281 a Fh(Threading)1139 4515
-y Fg(8)p eop end
-%%Page: 9 10
-TeXDict begin 9 9 bop -128 -294 a Fg(T)28 b(#)154 b(Mark)26
-b(this)i(thread)g(with)g(the)g(pro)r(cess)e(mark.)-128
--194 y(T)i(M-#)50 b(Remo)n(v)n(e)26 b(pro)r(cess-marks)f(from)i(this)h
-(thread.)-128 -95 y(T)g(t)191 b(Re-)p Fe(thread)28 b
-Fg(the)g(curren)n(t)f(article's)f(thread.)-128 5 y(T)i(^)181
-b(Mak)n(e)29 b(the)h(curren)n(t)f(article)g(c)n(hild)h(of)g(the)g(mark)
-n(ed)f(\(or)g(previous\))h(ar-)183 104 y(ticle.)-128
-204 y(T)e(n)177 b(\(M-C-f,)28 b(M-do)n(wn\))f(Go)g(to)h(the)g
-Fe(next)g Fg(thread.)36 b([distance])-128 304 y(T)28
-b(p)177 b(\(M-C-b,)27 b(M-up\))h(Go)g(to)f(the)h Fe(previous)f
-Fg(thread.)37 b([distance])-128 403 y(T)28 b(d)177 b
-Fe(Descend)27 b Fg(this)h(thread.)37 b([distance])-128
-503 y(T)28 b(u)177 b(Ascend)28 b(this)f(thread)h(\()p
-Fe(up)p Fg(-thread\).)36 b([distance])-128 603 y(T)28
-b(o)181 b(Go)27 b(to)h(the)g(top)f(of)h(this)g(thread.)-128
-702 y(T)g(s)190 b Fe(Sho)m(w)28 b Fg(the)g(thread)f(hidden)h(under)f
-(this)h(article.)-128 802 y(T)g(h)177 b Fe(Hide)27 b
-Fg(this)g(\(sub\)thread.)-128 901 y(T)h(i)200 b Fe(Increase)28
-b Fg(the)g(score)e(of)i(this)g(thread.)-128 1001 y(T)g(l)200
-b(\(M-C-l\))28 b Fe(Lo)m(w)m(er)g Fg(the)g(score)e(of)i(this)g(thread.)
--128 1101 y(T)g(k)179 b(\(M-C-k\))35 b Fe(Kill)e Fg(the)i(curren)n(t)f
-(\(sub\)thread.)59 b([Negativ)n(e)34 b(pre\014x:)50 b(tic)n(k)183
-1200 y(it,)28 b(p)r(ositiv)n(e)f(pre\014x:)37 b(unmark)27
-b(it.])-128 1300 y(T)h(H)161 b Fe(Hide)27 b Fg(all)g(threads.)-128
-1400 y(T)h(S)177 b Fe(Sho)m(w)28 b Fg(all)f(hidden)h(threads.)-128
-1499 y(T)g(T)163 b(\(M-C-t\))28 b Fe(T)-8 b(oggle)26
-b Fg(threading.)-128 1770 y Fh(Limiting)-128 1921 y Fg(//)116
-b(\(/s\))28 b(Limit)g(the)g(summary-bu\013er)e(to)i(articles)e(matc)n
-(hing)i Fe(sub)5 b(ject)p Fg(.)-128 2020 y(/a)116 b(Limit)28
-b(the)g(summary-bu\013er)f(to)g(articles)g(matc)n(hing)g
-Fe(author)p Fg(.)-128 2120 y(/x)114 b(Limit)28 b(dep)r(ending)g(on)g
-(\\extra")d(headers.)-128 2220 y(/u)112 b(\(x\))27 b(Limit)h(to)f
-Fe(unread)g Fg(articles.)36 b([Pre\014x:)f(also)26 b(exclude)h(tic)n(k)
-n(ed)f(and)h(dor-)72 2319 y(man)n(t)h(articles])-128
-2419 y(/.)135 b(Limit)28 b(to)g(unseen)f(articles.)-128
-2519 y(/m)89 b(Limit)28 b(to)g(articles)e(mark)n(ed)h(with)h(sp)r
-(eci\014ed)g Fe(mark)p Fg(.)-128 2618 y(/t)126 b(Ask)39
-b(for)f(a)g(n)n(um)n(b)r(er)h(and)f(exclude)h(articles)e(y)n(ounger)g
-(than)i(that)g(man)n(y)72 2718 y(da)n(ys.)d([Pre\014x:)g(exclude)27
-b(older)g(articles])-128 2817 y(/n)112 b(Limit)28 b(to)g(curren)n(t)f
-(article.)36 b([p/p])-128 2917 y(/w)98 b(P)n(op)26 b(the)h(previous)f
-(limit)i(o\013)f(the)g(stac)n(k)f(and)h(restore)e(it.)37
-b([Pre\014x:)f(p)r(op)27 b(all)72 3017 y(limits])-128
-3116 y(/v)114 b(Limit)28 b(to)g(score.)35 b([score])-128
-3216 y(/E)101 b(\(M)28 b(S\))g(Include)g(all)f(expunged)h(articles)e
-(in)i(the)g(limit.)-128 3316 y(/D)95 b(Include)28 b(all)f(dorman)n(t)g
-(articles)g(in)g(the)h(limit.)-128 3415 y(/*)116 b(Limit)28
-b(to)g(cac)n(hed)f(articles.)-128 3515 y(Y)h(C)50 b(Include)28
-b(all)f(cac)n(hed)g(articles)g(in)h(the)g(limit.)-128
-3615 y(/d)112 b(Exclude)27 b(all)h(dorman)n(t)e(articles)h(from)g(the)h
-(limit.)-128 3714 y(/M)82 b(Exclude)27 b(all)h(mark)n(ed)e(articles.)
--128 3814 y(/T)98 b(Include)28 b(all)f(articles)g(from)g(the)h(curren)n
-(t)f(thread)g(in)h(the)g(limit.)-128 3913 y(/c)121 b(Exclude)27
-b(all)h(dorman)n(t)e(articles)h(that)h(ha)n(v)n(e)e(no)h(c)n(hildren)h
-(from)f(the)h(limit.)1139 4515 y(9)p eop end
-%%Page: 10 11
-TeXDict begin 10 10 bop -128 -294 a Fg(/C)52 b(Mark)21
-b(all)h(excluded)f(unread)h(articles)f(as)g(read.)34
-b([Pre\014x:)f(also)21 b(mark)g(tic)n(k)n(ed)26 -194
-y(and)27 b(dorman)n(t)g(articles])-128 -95 y(/o)70 b(Insert)27
-b(all)h Fe(old)f Fg(articles.)35 b([Pre\014x:)h(ho)n(w)27
-b(man)n(y])-128 5 y(/N)50 b(Insert)27 b(all)h Fe(new)f
-Fg(articles.)-128 104 y(/p)66 b(Limit)28 b(to)g(articles)e
-Fe(predicated)i Fg(in)g(the)g(`displa)n(y')f(group)g(parameter.)-128
-375 y Fh(Sort)37 b(the)h(Summary-Bu\013er)-128 526 y
-Fg(C-c)28 b(C-s)f(C-a)53 b(Sort)27 b(the)h(summary-bu\013er)f(b)n(y)g
-Fe(author)p Fg(.)-128 626 y(C-c)h(C-s)f(C-d)49 b(Sort)27
-b(the)h(summary-bu\013er)f(b)n(y)g Fe(date)p Fg(.)-128
-725 y(C-c)h(C-s)f(C-i)72 b(Sort)27 b(the)h(summary-bu\013er)f(b)n(y)g
-(article)g(score.)-128 825 y(C-c)h(C-s)f(C-l)72 b(Sort)27
-b(the)h(summary-bu\013er)f(b)n(y)g(amoun)n(t)g(of)h Fe(lines)p
-Fg(.)-128 925 y(C-c)g(C-s)f(C-c)58 b(Sort)27 b(the)h(summary-bu\013er)f
-(b)n(y)g(length.)-128 1024 y(C-c)h(C-s)f(C-n)49 b(Sort)27
-b(the)h(summary-bu\013er)f(b)n(y)g(article)g Fe(n)m(um)m(b)s(er)p
-Fg(.)-128 1124 y(C-c)h(C-s)f(C-s)62 b(Sort)27 b(the)h(summary-bu\013er)
-f(b)n(y)g Fe(sub)5 b(ject)p Fg(.)-128 1223 y(C-c)28 b(C-s)f(C-r)62
-b(Sort)27 b(the)h(summary-bu\013er)f Fe(randomly)p Fg(.)-128
-1323 y(C-c)h(C-s)f(C-o)53 b(Sort)27 b(the)h(summary-bu\013er)f(using)g
-(the)h(default)g(metho)r(d.)-128 1419 y(With)h(a)e(pre\014x)g(these)h
-(functions)g(sort)f(in)g(rev)n(erse)f(order.)-128 1651
-y Fh(Score)38 b(\(V)-9 b(alue\))37 b(Commands)-128 1805
-y Fg(Read)28 b(ab)r(out)f(Adaptiv)n(e)h(Scoring)e(in)i(the)g(online)f
-(info.)-60 1899 y(V)h(a)245 b Fe(Add)28 b Fg(a)f(new)g(score)g(en)n
-(try)-7 b(,)27 b(sp)r(ecifying)g(all)h(elemen)n(ts.)-60
-1998 y(V)g(c)250 b(Sp)r(ecify)28 b(a)f(new)h(score)e(\014le)i(as)f
-Fe(curren)m(t)p Fg(.)-60 2098 y(V)h(e)250 b Fe(Edit)27
-b Fg(the)h(curren)n(t)e(score)h(alist.)-60 2198 y(V)h(f)262
-b(Edit)27 b(a)h(score)e Fe(\014le)h Fg(and)g(mak)n(e)g(it)h(the)g
-(curren)n(t)f(one.)-60 2297 y(V)h(m)218 b Fe(Mark)28
-b Fg(all)f(articles)g(b)r(elo)n(w)g(a)g(giv)n(en)g(score)g(as)f(read.)
--60 2397 y(V)i(s)254 b(Set)28 b(the)g Fe(score)f Fg(of)h(this)g
-(article.)-60 2497 y(V)g(t)255 b(Displa)n(y)27 b(all)g(score)f(rules)h
-(applied)h(to)f(this)h(article)f(\()p Fe(trac)m(k)p Fg(\).)-60
-2596 y(W)h(w)204 b(List)27 b Fe(w)m(ords)h Fg(used)g(in)g(scoring.)-60
-2696 y(V)g(x)243 b Fe(Expunge)27 b Fg(all)g(lo)n(w-scored)f(articles.)
-36 b([score])-60 2795 y(V)28 b(C)227 b Fe(Customize)26
-b Fg(the)i(curren)n(t)f(score)f(\014le)i(through)e(a)h(user-friendly)g
-(in-)317 2895 y(terface.)-60 2995 y(V)h(F)233 b Fe(Flush)27
-b Fg(the)h(cac)n(he)e(of)i(score)e(\014les.)-60 3094
-y(V)i(R)226 b Fe(Re-score)26 b Fg(the)i(summary)f(bu\013er.)-60
-3194 y(V)h(S)241 b(Displa)n(y)27 b(the)h Fe(score)f Fg(of)h(this)g
-(article.)-60 3294 y Fe(A)k(p)g(m)f(l)50 b Fg(Mak)n(e)26
-b(a)i(scoring)e(en)n(try)h(based)g(on)g(this)h(article.)-128
-3389 y(The)g(four)f(letters)h(stand)f(for:)-128 3489
-y Fe(A)p Fg(\)ction:)38 b(I\)ncrease,)26 b(L\)o)n(w)n(er;)-128
-3589 y Fe(p)p Fg(\)art:)64 b(a\)uthor)41 b(\(from\),)j(s\)ub)5
-b(ject,)45 b(x\)refs)c(\(cross-p)r(osting\),)i(d\)ate,)i(l\)ines,)-128
-3688 y(message-i\)d,)40 b(t\)references)d(\(paren)n(t\),)j(f)6
-b(\)ollo)n(wup,)41 b(b\)o)r(dy)-7 b(,)41 b(h\)ead)d(\(all)g(head-)-128
-3788 y(ers\);)-128 3888 y Fe(m)p Fg(\)atc)n(h)27 b(t)n(yp)r(e:)-128
-3987 y(string:)37 b(s\)ubstring,)27 b(e\)xact,)g(r\)egexp,)g(f)6
-b(\)uzzy)-7 b(,)-128 4087 y(date:)37 b(b\)efore,)28 b(a\)t,)f(n\)this,)
--128 4186 y(n)n(um)n(b)r(er:)37 b Fc(<)p Fg(,)27 b(=,)h
-Fc(>)p Fg(;)1118 4515 y(10)p eop end
-%%Page: 11 12
-TeXDict begin 11 11 bop -128 -281 a Fe(l)p Fg(\)ifetime:)38
-b(t\)emp)r(orary)-7 b(,)27 b(p\)ermanen)n(t,)g(i\)mmediate.)-3
--181 y(If)36 b(y)n(ou)e(t)n(yp)r(e)i(the)f(second)g(letter)h(in)f(upp)r
-(ercase,)i(the)e(remaining)g(t)n(w)n(o)f(are)-128 -82
-y(assumed)c(to)h(b)r(e)g(s\)ubstring)f(and)g(t\)emp)r(orary)-7
-b(.)45 b(If)30 b(y)n(ou)g(t)n(yp)r(e)h(the)g(third)f(letter)-128
-18 y(in)e(upp)r(ercase,)f(the)h(last)f(one)h(is)f(assumed)g(to)h(b)r(e)
-g(t\)emp)r(orary)-7 b(.)80 118 y(Extra)26 b(k)n(eys)h(for)g(man)n(ual)g
-(editing)h(of)f(a)g(score)g(\014le:)-63 212 y(C-c)g(C-c)59
-b(Finish)28 b(editing)g(the)g(score)e(\014le.)-63 312
-y(C-c)h(C-d)50 b(Insert)27 b(the)h(curren)n(t)f Fe(date)h
-Fg(as)f(n)n(um)n(b)r(er)g(of)h(da)n(ys.)-128 595 y Fh(MIME)38
-b(op)s(erations)g(from)g(the)f(Summary-Bu\013er)-128
-748 y Fg(F)-7 b(or)40 b(the)i(commands)e(op)r(erating)f(on)i(one)f
-(MIME)g(part)h(\(a)f(subset)h(of)f(gn)n(us-)-128 847
-y(article-*\),)i(a)d(pre\014x)g(selects)h(whic)n(h)f(part)g(to)h(op)r
-(erate)f(on.)72 b(If)41 b(the)f(p)r(oin)n(t)f(is)-128
-947 y(placed)26 b(o)n(v)n(er)f(a)g(MIME)h(button)h(in)f(the)h(article)e
-(bu\013er,)i(use)f(the)g(corresp)r(onding)-128 1047 y(bindings)i(for)f
-(the)h(article)f(bu\013er)h(instead.)-128 1141 y(K)g(v)190
-b(\(b,)28 b(W)g(M)g(b\))g Fe(View)f Fg(the)h(MIME-part.)-128
-1241 y(K)g(o)192 b Fe(Sa)m(v)m(e)29 b Fg(the)f(MIME)f(part.)-128
-1340 y(K)h(c)197 b Fe(Cop)m(y)28 b Fg(the)g(MIME)f(part.)-128
-1440 y(K)h(e)197 b(View)28 b(the)g(MIME)f(part)g Fe(externally)p
-Fg(.)-128 1539 y(K)h(i)211 b(View)28 b(the)g(MIME)f(part)g
-Fe(in)m(ternally)p Fg(.)-128 1639 y(K)h Fa(j)211 b Fg(Pip)r(e)28
-b(the)g(MIME)f(part)g(to)g(an)h(external)f(command.)-128
-1739 y(K)h(b)188 b(Mak)n(e)27 b(all)g(the)h(MIME)f(parts)g(ha)n(v)n(e)g
-(buttons)g(in)h(fron)n(t)g(of)f(them.)-128 1838 y(K)h(m)165
-b(T)-7 b(ry)27 b(to)h(repair)e Fe(m)m(ultipart-headers)p
-Fg(.)-128 1938 y(K)i(C)174 b(View)28 b(the)g(MIME)f(part)g(using)h(a)f
-(di\013eren)n(t)g Fe(c)m(harset)p Fg(.)-128 2038 y(X)h(m)168
-b(Sa)n(v)n(e)26 b(all)i(parts)f(matc)n(hing)g(a)g(MIME)g(t)n(yp)r(e)h
-(to)f(a)h(directory)-7 b(.)35 b([p/p])-128 2137 y(M-t)191
-b(T)-7 b(oggle)26 b(the)i(buttonized)g(displa)n(y)f(of)h(the)g(article)
-f(bu\013er.)-128 2237 y(W)h(M)g(w)50 b(Deco)r(de)28 b(RF)n(C2047-enco)r
-(ded)d(w)n(ords)h(in)i(the)g(article)f(headers.)-128
-2336 y(W)h(M)g(c)73 b(Deco)r(de)28 b(enco)r(ded)f(article)g(b)r(o)r
-(dies.)37 b([Pre\014x:)f(prompt)28 b(for)f(c)n(harset])-128
-2436 y(W)h(M)g(v)66 b(View)28 b(all)f(MIME)h(parts)e(in)i(the)g(curren)
-n(t)f(article.)-128 2707 y Fh(Extract)37 b(Series)h(\(Uudeco)s(de)g
-(etc\))-128 2860 y Fg(Gn)n(us)44 b(recognizes)e(if)j(the)f(curren)n(t)f
-(article)g(is)h(part)f(of)h(a)f(series)g(\(m)n(ultipart)-128
-2960 y(p)r(osting)38 b(whose)g(parts)f(are)g(iden)n(ti\014ed)i(b)n(y)f
-(n)n(um)n(b)r(ers)f(in)i(their)f(sub)5 b(jects,)41 b(e.g.)-128
-3059 y(1/10.)12 b(.)i(.)g(10/10\))26 b(and)i(pro)r(cesses)f(the)i
-(series)e(accordingly)-7 b(.)37 b(Y)-7 b(ou)28 b(can)g(mark)f(and)-128
-3159 y(pro)r(cess)37 b(more)g(than)h(one)f(series)g(at)h(a)f(time.)68
-b(If)39 b(the)f(p)r(osting)f(con)n(tains)g(an)n(y)-128
-3258 y(arc)n(hiv)n(es,)26 b(they)i(are)f(expanded)g(and)g(gathered)g
-(in)h(a)f(new)h(group.)-60 3353 y(X)g(b)50 b(Un-)p Fe(binhex)27
-b Fg(these)h(series.)36 b([p/p])-60 3452 y(X)28 b(o)54
-b(Simply)28 b Fe(output)g Fg(these)f(series)g(\(no)h(deco)r(ding\).)36
-b([p/p])-60 3552 y(X)28 b(p)50 b(Unpac)n(k)27 b(these)h
-Fe(p)s(ostscript)f Fg(series.)36 b([p/p])-60 3651 y(X)28
-b(s)63 b(Un-)p Fe(shar)28 b Fg(these)g(series.)36 b([p/p])-60
-3751 y(X)28 b(u)50 b Fe(Uudeco)s(de)28 b Fg(these)f(series.)36
-b([p/p])-3 3889 y(Eac)n(h)26 b(one)i(of)f(these)h(commands)f(has)g
-(four)g(v)-5 b(arian)n(ts:)-63 3967 y(X)28 b Fe(z)122
-b Fg(Deco)r(de)27 b(these)h(series.)36 b([p/p])-63 4067
-y(X)28 b Fe(Z)106 b Fg(Deco)r(de)27 b(and)h(sa)n(v)n(e)e(these)i
-(series.)35 b([p/p])-63 4166 y(X)28 b(v)f Fe(z)51 b Fg(Deco)r(de)27
-b(and)h(view)f(these)h(series.)36 b([p/p])1118 4515 y(11)p
-eop end
-%%Page: 12 13
-TeXDict begin 12 12 bop -128 -282 a Fg(X)28 b(v)g Fe(Z)50
-b Fg(Deco)r(de,)28 b(sa)n(v)n(e)e(and)h(view)h(these)f(series.)36
-b([p/p])-128 -181 y(where)28 b Fe(z)g Fg(or)e Fe(Z)i
-Fg(iden)n(ti\014es)g(the)g(deco)r(ding)f(metho)r(d)h(\(b,)h(o,)e(p,)h
-(s,)f(u\).)-3 -82 y(An)c(alternativ)n(e)f(binding)h(for)f(the)h
-(most-often)g(used)g(of)f(these)h(commands)f(is)-91 17
-y(C-c)28 b(C-v)f(C-v)49 b(\(X)28 b(v)g(u\))g(Uudeco)r(de)g(and)f(view)g
-(these)h(series.)36 b([p/p])-128 350 y Fh(Output)i(Articles)-128
-501 y Fg(O)28 b(o)77 b(\(o,)27 b(C-o\))g(Sa)n(v)n(e)g(this)h(article)f
-(using)g(the)h(default)g(article)f(sa)n(v)n(er.)35 b([p/p])-128
-601 y(O)28 b(b)73 b(Sa)n(v)n(e)26 b(this)i(article's)f
-Fe(b)s(o)s(dy)g Fg(in)h(plain)f(\014le)h(format)f([p/p])-128
-700 y(O)h(f)94 b(Sa)n(v)n(e)26 b(this)i(article)f(in)h(plain)f
-Fe(\014le)g Fg(format.)37 b([p/p])-128 800 y(O)28 b(F)65
-b(lik)n(e)27 b(O)g(f,)h(but)g(o)n(v)n(erwrite)e(\014le's)i(con)n(ten)n
-(ts.)36 b([p/p])-128 900 y(O)28 b(h)73 b(Sa)n(v)n(e)26
-b(this)i(article)f(in)h Fe(mh)f Fg(folder)g(format.)37
-b([p/p])-128 999 y(O)28 b(m)50 b(Sa)n(v)n(e)26 b(this)i(article)f(in)h
-Fe(mail)e Fg(format.)37 b([p/p])-128 1099 y(O)28 b(r)86
-b(Sa)n(v)n(e)26 b(this)i(article)f(in)h Fe(rmail)f Fg(format.)36
-b([p/p])-128 1199 y(O)28 b(v)75 b(Sa)n(v)n(e)26 b(this)i(article)f(in)h
-Fe(vm)f Fg(format.)37 b([p/p])-128 1298 y(O)28 b(p)73
-b(\()p Fa(j)p Fg(\))28 b Fe(Pip)s(e)f Fg(this)h(article)f(to)g(a)g
-(shell)h(command.)36 b([p/p])-128 1398 y(O)28 b(P)62
-b Fe(Prin)m(t)28 b Fg(this)g(article)f(using)g(Muttprin)n(t.)38
-b([p/p])-128 1668 y Fh(P)m(ost,)f(F)-9 b(ollo)m(wup,)39
-b(Reply)-9 b(,)37 b(F)-9 b(orw)m(ard,)38 b(Cancel)-128
-1822 y Fg(These)d(commands)f(put)h(y)n(ou)f(in)g(a)h(separate)e(news)h
-(or)g(mail)g(bu\013er.)58 b(See)35 b(the)-128 1921 y(section)28
-b(ab)r(out)f(comp)r(osing)g(messages)f(for)h(more)g(information.)-60
-2015 y(S)h(p)151 b(\(a\))28 b Fe(P)m(ost)g Fg(an)f(article)g(to)h(this)
-f(group.)-60 2115 y(S)h(f)172 b(\(f)6 b(\))29 b(P)n(ost)e(a)g
-Fe(follo)m(wup)g Fg(to)g(this)h(article.)-60 2215 y(S)g(F)143
-b(\(F\))29 b(P)n(ost)d(a)h Fe(follo)m(wup)g Fg(and)h(include)f(the)h
-(original.)36 b([p/p])-60 2314 y(S)28 b(o)f(p)82 b(F)-7
-b(orw)n(ard)26 b(this)i(article)f(as)g(a)g Fe(p)s(ost)g
-Fg(to)g(a)h(newsgroup.)-60 2414 y(S)g(M-c)56 b(Send)28
-b(a)f(complain)n(t)g(ab)r(out)g(excessiv)n(e)f(crossp)r(osting)f(to)i
-(the)h(author)e(of)211 2514 y(this)i(article.)36 b([p/p])-60
-2613 y(S)28 b(m)128 b(\(m\))29 b(Send)f(a)f Fe(mail)g
-Fg(to)g(some)g(other)g(p)r(erson.)-60 2713 y(S)h(r)164
-b(\(r\))28 b(Mail)f(a)h Fe(reply)f Fg(to)h(the)g(author)f(of)g(this)h
-(article.)-60 2812 y(S)g(R)136 b(\(R\))29 b(Mail)e(a)g
-Fe(reply)h Fg(and)f(include)h(the)g(original.)36 b([p/p])-60
-2912 y(S)28 b(B)f(r)78 b(Lik)n(e)27 b(S)h(r)f(but)i(ignore)d(the)i
-(Reply-T)-7 b(o:)36 b(header.)-60 3012 y(S)28 b(B)f(R)50
-b(Lik)n(e)27 b(S)h(R)g(but)g(ignore)e(the)i(Reply-T)-7
-b(o:)37 b(header.)-60 3111 y(S)28 b(w)137 b(Mail)28 b(a)f
-Fe(wide)g Fg(reply)g(to)g(this)h(article.)-60 3211 y(S)g(W)112
-b(Mail)28 b(a)f Fe(wide)g Fg(reply)g(to)g(this)h(article)f(and)h
-(include)g(the)g(original.)-60 3311 y(S)g(v)153 b(Mail)28
-b(a)f Fe(v)m(ery)i Fg(wide)e(reply)h(to)f(this)h(article.)-60
-3410 y(S)g(V)135 b(Mail)28 b(a)f Fe(v)m(ery)i Fg(wide)e(reply)h(to)f
-(this)h(article)f(and)g(include)h(the)g(original.)-60
-3510 y(S)g(o)f(m)59 b(\(C-c)28 b(C-f)6 b(\))28 b(F)-7
-b(orw)n(ard)26 b(this)i(article)f(b)n(y)g Fe(mail)g Fg(to)g(a)g(p)r
-(erson.)-60 3609 y(S)h(D)g(b)60 b(Resend)28 b Fe(b)s(ounced)f
-Fg(mail.)-60 3709 y(S)h(D)g(r)73 b Fe(Resend)27 b Fg(mail)g(to)h(a)f
-(di\013eren)n(t)h(p)r(erson.)-60 3809 y(S)g(D)g(e)69
-b Fe(Edit)27 b Fg(and)h(resend.)-60 3908 y(S)g(n)151
-b(P)n(ost)28 b(a)h(follo)n(wup)g(via)g Fe(news)g Fg(ev)n(en)g(if)h(y)n
-(ou)e(got)h(the)h(message)e(through)211 4008 y(mail.)1118
-4515 y(12)p eop end
-%%Page: 13 14
-TeXDict begin 13 13 bop -128 -294 a Fg(S)28 b(N)149 b(P)n(ost)27
-b(a)g(follo)n(wup)g(via)g Fe(news)g Fg(and)h(include)g(the)g(original)e
-(mail.)37 b([p/p])-128 -194 y(S)28 b(c)174 b(\(C\))29
-b Fe(Cancel)e Fg(this)h(article)f(\(only)h(w)n(orks)e(if)i(it)g(is)f(y)
-n(our)g(o)n(wn\).)36 b([p/p])-128 -95 y(S)28 b(s)178
-b Fe(Sup)s(ersede)27 b Fg(this)h(article)f(with)h(a)f(new)h(one)f
-(\(only)h(for)f(o)n(wn)g(articles\).)-128 5 y(S)h(O)f(m)50
-b(Digest)28 b(these)g(series)e(and)i(forw)n(ard)e(b)n(y)h
-Fe(mail)p Fg(.)36 b([p/p])-128 104 y(S)28 b(O)f(p)73
-b(Digest)24 b(these)g(series)f(and)g(forw)n(ard)f(as)h(a)g
-Fe(p)s(ost)g Fg(to)h(a)f(newsgroup.)34 b([p/p])-128 204
-y(S)28 b(u)165 b Fe(Uuenco)s(de)28 b Fg(a)f(\014le)h(and)f(p)r(ost)h
-(it)g(as)f(a)g(series.)-128 305 y(If)36 b(y)n(ou)f(w)n(an)n(t)f(to)i
-(cancel)e(or)h(sup)r(ersede)g(an)g(article)f(y)n(ou)h(just)h(p)r(osted)
-f(\(b)r(efore)-128 404 y(it)i(has)f(app)r(eared)f(on)h(the)h(serv)n
-(er\),)g(go)e(to)h(the)h(*p)r(ost-news*)e(bu\013er,)j(c)n(hange)-128
-504 y(`Message-ID')h(to)h(`Cancel')f(or)g(`Sup)r(ersedes')g(and)h(send)
-g(it)g(again)e(with)j(C-c)-128 603 y(C-c.)-128 836 y
-Fh(Message)e(Comp)s(osition)-128 989 y Fg(Press)27 b(C-c)g(?)37
-b(in)28 b(the)g(comp)r(osition-bu\013er)e(to)i(get)f(this)h
-(information.)-60 1083 y(C-c)f(C-c)160 b(Send)28 b(message)e(and)i
-(exit.)37 b([Pre\014x:)f(send)27 b(via)g(foreign)g(serv)n(er])-60
-1183 y(C-c)g(C-s)164 b(Send)28 b(message.)36 b([Pre\014x:)g(send)27
-b(via)g(foreign)g(serv)n(er])-60 1283 y(C-c)g(C-d)151
-b(Don't)28 b(send)g(message)e(\(sa)n(v)n(e)g(as)h Fe(draft)p
-Fg(\).)-60 1382 y(C-c)g(C-k)153 b Fe(Kill)26 b Fg(message-bu\013er.)-60
-1482 y(C-c)h(C-m)128 b Fe(Mail)37 b Fg(reply)f(to)h(the)g(address)f
-(near)g(p)r(oin)n(t.)66 b([Pre\014x:)55 b(include)37
-b(the)377 1581 y(original])-60 1681 y(C-c)27 b(C-o)155
-b(Sort)27 b(headers.)-60 1781 y(C-c)g(C-e)160 b Fe(Elide)27
-b Fg(region.)-60 1880 y(C-c)g(C-v)153 b(Kill)28 b(ev)n(erything)e
-(outside)i(region.)-60 1980 y(C-c)f(C-r)164 b(Do)28 b(a)f
-Fe(Rot-13)g Fg(on)g(the)h(b)r(o)r(dy)-7 b(.)-60 2080
-y(C-c)27 b(C-w)137 b(Insert)28 b(signature)e(\(from)i
-(`message-signature-\014le'\).)-60 2179 y(C-c)f(C-z)160
-b(Kill)28 b(ev)n(erything)e(up)i(to)g(signature.)-60
-2279 y(C-c)f(C-y)153 b Fe(Y)-8 b(ank)29 b Fg(original)d(message.)-60
-2378 y(C-c)h(C-q)153 b(Fill)28 b(the)g(y)n(ank)n(ed)f(message.)-60
-2478 y(C-c)g(M-C-y)49 b Fe(Y)-8 b(ank)29 b Fg(a)e(bu\013er)h(and)f
-(quote)h(it.)-60 2578 y(M-RET)155 b(Insert)31 b(four)f(newlines)g(and)h
-(format)f(quoted)g(text.)47 b([Pre\014x:)42 b(justify)377
-2677 y(as)27 b(w)n(ell])-60 2777 y(C-c)g(M-r)148 b Fe(Rename)27
-b Fg(message)f(bu\013er.)37 b([Pre\014x:)f(ask)27 b(for)g(new)h(name])
--128 3031 y Fe(Jumping)k(in)f(message-bu\013er)-128 3184
-y Fg(The)d(follo)n(wing)f(functions)h(create)e(the)i(header-\014eld)f
-(if)h(necessary)-7 b(.)-60 3278 y(C-c)27 b(T)-7 b(AB)164
-b(Mo)n(v)n(e)27 b(to)g Fe(signature)p Fg(.)-60 3378 y(C-c)g(C-b)204
-b(Mo)n(v)n(e)27 b(to)g Fe(b)s(o)s(dy)p Fg(.)-60 3478
-y(C-c)g(C-f)h(C-t)77 b(\(C-c)28 b(C-t\))g(Mo)n(v)n(e)e(to)i
-Fe(T)-8 b(o:)p Fg(.)-60 3577 y(C-c)27 b(C-f)h(C-c)72
-b(Mo)n(v)n(e)27 b(to)g Fe(Cc:)p Fg(.)-60 3677 y(C-c)g(C-f)h(C-b)63
-b(Mo)n(v)n(e)27 b(to)g Fe(Bcc:)p Fg(.)-60 3776 y(C-c)g(C-f)h(C-w)49
-b(Mo)n(v)n(e)27 b(to)g Fe(Fcc:)p Fg(.)-60 3876 y(C-c)g(C-f)h(C-s)76
-b(Mo)n(v)n(e)27 b(to)g Fe(Sub)5 b(ject:)p Fg(.)-60 3976
-y(C-c)27 b(C-f)h(C-r)76 b(Mo)n(v)n(e)27 b(to)g Fe(Reply-T)-8
-b(o:)p Fg(.)-60 4075 y(C-c)27 b(C-f)h(C-f)84 b(Mo)n(v)n(e)27
-b(to)g Fe(F)-8 b(ollo)m(wup-T)g(o:)p Fg(.)1118 4515 y(13)p
-eop end
-%%Page: 14 15
-TeXDict begin 14 14 bop -128 -294 a Fg(C-c)28 b(C-f)f(C-n)90
-b(\(C-c)28 b(C-n\))f(Mo)n(v)n(e)g(to)g Fe(Newsgroups:)p
-Fg(.)-128 -194 y(C-c)h(C-f)f(C-u)90 b(Mo)n(v)n(e)27 b(to)g
-Fe(Summary:)p Fg(.)-128 -95 y(C-c)h(C-f)f(C-k)92 b(Mo)n(v)n(e)27
-b(to)g Fe(Keyw)m(ords:)p Fg(.)-128 5 y(C-c)h(C-f)f(C-d)90
-b(Mo)n(v)n(e)27 b(to)g Fe(Distribution:)p Fg(.)-128 104
-y(C-c)h(C-f)f(C-m)67 b(Mo)n(v)n(e)27 b(to)g Fe(Mail-F)-8
-b(ollo)m(wup-T)g(o:)p Fg(.)-128 204 y(C-c)28 b(C-f)f(C-o)94
-b(Mo)n(v)n(e)27 b(to)g Fe(F)-8 b(rom:)p Fg(.)-128 304
-y(C-c)28 b(C-f)f(C-a)94 b(Insert)42 b(a)f(reasonable)f
-Fe(Mail-F)-8 b(ollo)m(wup-T)g(o:)64 b Fg(for)41 b(an)h(unsub-)389
-403 y(scrib)r(ed)28 b(list.)37 b([Pre\014x:)f(include)28
-b(addresses)e(in)h Fe(Cc:)p Fg(])-128 503 y(C-c)h(C-f)f(T)-7
-b(AB)50 b(\(C-c)28 b(C-u\))f(Mo)n(v)n(e)g(to)g Fe(Imp)s(ortance:)p
-Fg(.)-128 603 y(C-c)h(M-n)214 b(Insert)27 b Fe(Disp)s
-(osition-Noti\014cation-T)-8 b(o:)34 b Fg(\(request)27
-b(receipt\).)-128 857 y Fe(A)m(ttac)m(hmen)m(ts/MML)-128
-1009 y Fg(C-c)h(C-m)f(f)159 b(\(C-c)27 b(C-a\))g(A)n(ttac)n(h)h
-Fe(\014le)p Fg(.)-128 1109 y(C-c)g(C-m)f(b)138 b(A)n(ttac)n(h)27
-b(con)n(ten)n(ts)g(of)34 b Fe(bu\013er)p Fg(.)-128 1208
-y(C-c)28 b(C-m)f(e)147 b(A)n(ttac)n(h)27 b Fe(external)h
-Fg(\014le)g(\(ftp..\).)-128 1308 y(C-c)g(C-m)f(P)127
-b(Create)38 b(MIME-)p Fe(preview)h Fg(\(new)g(bu\013er\).)71
-b([Pre\014x:)59 b(sho)n(w)38 b(ra)n(w)393 1408 y(MIME)27
-b(preview])-128 1507 y(C-c)h(C-m)f(v)140 b Fe(V)-8 b(alidate)27
-b Fg(article.)-128 1607 y(C-c)h(C-m)f(p)138 b(Insert)27
-b Fe(part)p Fg(.)-128 1706 y(C-c)h(C-m)f(m)115 b(Insert)27
-b Fe(m)m(ulti)p Fg(-part.)-128 1806 y(C-c)h(C-m)f(q)140
-b Fe(Quote)27 b Fg(region.)-128 1906 y(C-c)h(C-m)f(c)h(s)86
-b(Encrypt)27 b(message)f(using)i Fe(S/MIME)p Fg(.)-128
-2005 y(C-c)g(C-m)f(c)h(o)77 b(Encrypt)27 b(message)f(using)h(PGP)-7
-b(.)-128 2105 y(C-c)28 b(C-m)f(c)h(p)73 b(Encrypt)27
-b(message)f(using)i Fe(PGP/MIME)p Fg(.)-128 2205 y(C-c)g(C-m)f(s)h(s)90
-b(Sign)27 b(message)f(using)j Fe(S/MIME)p Fg(.)-128 2304
-y(C-c)f(C-m)f(s)h(o)81 b(Sign)27 b(message)f(using)i(PGP)-7
-b(.)-128 2404 y(C-c)28 b(C-m)f(s)h(p)77 b(Sign)27 b(message)f(using)j
-Fe(PGP/MIME)p Fg(.)-128 2503 y(C-c)f(C-m)f(C-n)50 b(Remo)n(v)n(e)26
-b(securit)n(y)h(related)g(MML)h(tags)e(from)i(message.)-128
-2774 y Fh(Mark)39 b(Articles)-128 2906 y Fg(d)171 b(\(M)33
-b(d,)h(M)f(r\))f(Mark)g(this)h(article)e(as)h(read)g(and)g(mo)n(v)n(e)f
-(to)i(the)g(next)89 3005 y(one.)k([scop)r(e])-128 3105
-y(D)154 b(Mark)45 b(this)g(article)f(as)h(read)f(and)h(mo)n(v)n(e)f(to)
-h(the)g(previous)f(one.)89 3205 y([scop)r(e])-128 3304
-y(!)194 b(\(u,)37 b(M)d(!,)i(M)f(t\))g(Tic)n(k)e(this)i(article)e
-(\(mark)h(it)h(as)e(in)n(teresting\))h(and)89 3404 y(mo)n(v)n(e)27
-b(to)g(the)h(next)g(one.)37 b([scop)r(e])-128 3503 y(U)155
-b(Tic)n(k)28 b(this)f(article)g(and)h(mo)n(v)n(e)e(to)i(the)g(previous)
-e(one.)37 b([scop)r(e])-128 3603 y(M)28 b(?)74 b(\(?\))37
-b(Mark)22 b(this)i(article)f(as)g(dorman)n(t)g(\(only)g(follo)n(wups)g
-(are)g(in)n(terest-)89 3703 y(ing\).)37 b([scop)r(e])-128
-3802 y(M)28 b(D)50 b(Sho)n(w)27 b(all)h Fe(dorman)m(t)g
-Fg(articles)e(\(normally)h(they)h(are)e(hidden)i(unless)89
-3902 y(they)g(ha)n(v)n(e)f(an)n(y)f(follo)n(wups\).)1118
-4515 y(14)p eop end
-%%Page: 15 16
-TeXDict begin 15 15 bop -128 -294 a Fg(M)28 b(M-D)121
-b(Hide)28 b(all)f Fe(dorman)m(t)h Fg(articles.)-128 -194
-y(C-w)244 b(Mark)26 b(all)h(articles)g(b)r(et)n(w)n(een)h(p)r(oin)n(t)f
-(and)h(mark)f(as)g(read.)-128 -95 y(M-u)242 b(\(M)28
-b(SPC,)f(M)h(c\))g(Clear)f(all)g(marks)g(from)g(this)h(article)f(and)g
-(mo)n(v)n(e)g(to)264 5 y(the)h(next)f(one.)37 b([scop)r(e])-128
-104 y(M-U)226 b(Clear)34 b(all)h(marks)f(from)h(this)h(article)f(and)g
-(mo)n(v)n(e)f(to)h(the)h(previous)264 204 y(one.)g([scop)r(e])-128
-304 y(M)28 b(e)251 b(\(E,)27 b(M)h(x\))g(Mark)e(this)i(article)f(as)g
-Fe(expirable)p Fg(.)37 b([scop)r(e])-128 403 y(M)28 b(k)244
-b(\(k\))21 b Fe(Kill)f Fg(all)h(articles)f(with)i(the)g(same)f(sub)5
-b(ject)21 b(then)h(select)f(the)h(next)264 503 y(unread)27
-b(one.)-128 603 y(M)h(K)223 b(\(C-k\))27 b Fe(Kill)f
-Fg(all)i(articles)e(with)i(the)g(same)f(sub)5 b(ject)28
-b(as)f(this)h(one.)-128 702 y(M)g(C)228 b Fe(Catc)m(h-up)28
-b Fg(the)g(articles)f(that)h(are)f(not)g(tic)n(k)n(ed)g(and)h(not)f
-(dorman)n(t.)-128 802 y(M)h(C-c)163 b Fe(Catc)m(h-up)28
-b Fg(all)g(articles)e(in)i(this)g(group.)-128 901 y(M)g(H)226
-b Fe(Catc)m(h-up)28 b Fg(\(mark)f(read\))g(this)h(group)f(to)g(p)r(oin)
-n(t)h(\(to-)p Fe(here)p Fg(\).)-128 1001 y(M)g(b)242
-b(Set)28 b(a)f Fe(b)s(o)s(okmark)g Fg(in)h(this)g(article.)-128
-1101 y(M)g(B)229 b(Remo)n(v)n(e)26 b(the)i Fe(b)s(o)s(okmark)g
-Fg(from)f(this)h(article.)-128 1200 y(M)g(M-r)151 b(\(x\))28
-b(Expunge)e(all)i Fe(read)g Fg(articles)f(from)g(this)h(group.)-128
-1300 y(M)g(M-C-r)63 b(Expunge)26 b(all)i(articles)e(ha)n(ving)h(a)g
-(giv)n(en)g(mark.)-128 1400 y(M)h(S)242 b(\(C-c)27 b(M-C-s\))g
-Fe(Sho)m(w)h Fg(all)f(expunged)h(articles.)-128 1499
-y(M)g(M)g(C-h)50 b(Displa)n(ys)26 b(some)h(more)g(k)n(eys)g(doing)g
-(tic)n(king)g(sligh)n(tly)g(di\013eren)n(tly)-7 b(.)-128
-1595 y(The)31 b(v)-5 b(ariable)29 b(`gn)n(us-summary-goto-unread')d
-(con)n(trols)j(what)h(happ)r(ens)h(after)-128 1695 y(a)d(mark)e(has)h
-(b)r(een)h(set)g(\(C-x)f(C-i)h(g)f(Setting)h(Marks)e(RET\))-128
-1910 y Fe(Mark)33 b(Based)f(on)f(Score)-128 2042 y Fg(M)d(V)g(c)82
-b Fe(Clear)28 b Fg(all)f(marks)g(from)g(all)g(high-scored)f(articles.)
-36 b([score])-128 2141 y(M)28 b(V)g(k)75 b Fe(Kill)26
-b Fg(all)i(lo)n(w-scored)d(articles.)36 b([score])-128
-2241 y(M)28 b(V)g(m)50 b(Mark)27 b(all)g(high-scored)f(articles)h(with)
-h(a)f(giv)n(en)g Fe(mark)p Fg(.)37 b([score])-128 2341
-y(M)28 b(V)g(u)73 b(Mark)26 b(all)g(high-scored)f(articles)g(as)h(in)n
-(teresting)g(\(tic)n(k)g(them\).)38 b([score])-128 2594
-y Fe(The)32 b(Pro)s(cess)g(Mark)-128 2747 y Fg(These)27
-b(commands)f(set)g(and)g(remo)n(v)n(e)f(the)i(pro)r(cess)f(mark)f
-(\(#\).)38 b(Y)-7 b(ou)26 b(only)g(need)-128 2847 y(to)h(use)g(it)g(if)
-g(the)h(set)e(of)h(articles)f(y)n(ou)g(w)n(an)n(t)g(to)h(op)r(erate)f
-(on)g(is)h(non-con)n(tiguous.)-128 2947 y(Else)g(use)h(a)f(n)n(umeric)g
-(pre\014x.)-60 3041 y(M)h(P)f(p)69 b(\(#,)28 b(M)g(#\))g(Mark)f(this)h
-(article.)-60 3140 y(M)g(P)f(u)69 b(\(M-#,)28 b(M)g(M-#\))g
-Fe(unmark)g Fg(this)g(article.)-60 3240 y(M)g(P)f(b)69
-b(Mark)27 b(all)g(articles)g(in)g Fe(bu\013er)p Fg(.)-60
-3340 y(M)h(P)f(r)82 b(Mark)27 b(all)g(articles)g(in)g(the)h
-Fe(region)p Fg(.)-60 3439 y(M)g(P)f(g)73 b(Unmark)27
-b(all)g(articles)g(in)h(the)g(region.)-60 3539 y(M)g(P)f(R)54
-b(Mark)27 b(all)g(articles)g(matc)n(hing)g(a)g Fe(regexp)p
-Fg(.)-60 3638 y(M)h(P)f(G)50 b(Unmark)27 b(all)g(articles)g(matc)n
-(hing)g(a)g(regexp.)-60 3738 y(M)h(P)f(t)83 b(Mark)27
-b(all)g(articles)g(in)g(this)h(\(sub\))p Fe(thread)p
-Fg(.)-60 3838 y(M)g(P)f(T)55 b(Unmark)27 b(all)g(articles)g(in)h(this)g
-(\(sub\))p Fe(thread)p Fg(.)-60 3937 y(M)g(P)f(s)82 b(Mark)27
-b(all)g(articles)g(in)g(the)h(curren)n(t)f Fe(series)p
-Fg(.)-60 4037 y(M)h(P)f(S)69 b(Mark)27 b(all)g Fe(series)f
-Fg(that)i(already)e(con)n(tain)h(a)g(mark)n(ed)g(article.)-60
-4137 y(M)h(P)f(a)73 b(Mark)27 b Fe(all)g Fg(articles)f(\(in)j(series)d
-(order\).)-60 4236 y(M)i(P)f(U)53 b Fe(unmark)28 b Fg(all)g(articles.)
-1118 4515 y(15)p eop end
-%%Page: 16 17
-TeXDict begin 16 16 bop -128 -294 a Fg(M)28 b(P)f(i)87
-b Fe(In)m(v)m(ert)29 b Fg(the)f(list)g(of)g(pro)r(cess-mark)n(ed)d
-(articles.)-128 -194 y(M)j(P)f(k)66 b(Push)32 b(the)i(curren)n(t)d(pro)
-r(cess-mark)g(set)h(on)n(to)g(stac)n(k)g(and)g(unmark)g(all)170
--95 y(articles.)-128 5 y(M)c(P)f(y)66 b(P)n(op)27 b(pro)r(cess-mark)e
-(set)i(from)h(stac)n(k)e(and)i(restore)e(it.)-128 104
-y(M)i(P)f(w)50 b(Push)27 b(pro)r(cess-mark)e(set)j(on)f(the)h(stac)n
-(k.)-128 204 y(M)g(P)f(v)66 b(Mark)41 b(all)g(articles)f(with)i(score)e
-(o)n(v)n(er)g(the)i(default)g(score.)77 b([Pre\014x:)170
-304 y(score])1118 4515 y(16)p eop end
-%%Page: 17 18
-TeXDict begin 17 17 bop -128 -281 a Fe(Mark)33 b(Indication-Characters)
--128 -128 y Fg(If)28 b(a)g(command)f(directly)g(sets)h(a)f(mark,)g(it)h
-(is)f(sho)n(wn)g(in)h(paren)n(theses.)p -128 -100 2578
-4 v -130 100 4 200 v -78 -30 a Fe(\\Read")34 b(Marks.)41
-b Fg(All)29 b(these)g(marks)f(app)r(ear)g(in)h(the)g(\014rst)g(column)g
-(of)g(the)-78 70 y(summary)e(line,)h(and)f(so)g(are)g(m)n(utually)g
-(exclusiv)n(e.)p 2448 100 V -128 103 2578 4 v -130 202
-4 100 v -77 173 a(`)h(')p 47 202 V 101 w(\(M-u,)g(M)g(SPC,)f(M)h(c\))g
-(Not)f(read.)p 2448 202 V -130 302 V -51 272 a(!)p 47
-302 V 126 w(\(!,)h(M)g(!,)g(M)f(t\))i(Tic)n(k)n(ed)d(\(in)n
-(teresting\).)p 2448 302 V -130 402 V -59 372 a(?)p 47
-402 V 118 w(\(?,)i(M)g(?\))g(Dorman)n(t)f(\(only)h(follo)n(wups)e(are)h
-(in)n(teresting\).)p 2448 402 V -130 501 V -68 471 a(E)p
-47 501 V 109 w(\(E,)h(M)f(e,)h(M)g(x\))f Fe(Expirable)p
-Fg(.)37 b(Only)27 b(has)g(e\013ect)i(in)e(mail)h(groups.)p
-2448 501 V -130 601 V -72 571 a(G)p 47 601 V 105 w(\(C,)g(B)f(DEL\))h
-(Canceled)f(article)g(\(or)g(deleted)h(in)g(mailgroups\).)p
-2448 601 V -130 701 V -60 671 a($)p 47 701 V 116 w(\(M-d,)g(M)g(s)f(x,)
-h(S)f(x\).)38 b(Mark)n(ed)26 b(as)h(spam.)p 2448 701
-V -128 704 2578 4 v -128 721 V -130 1019 4 299 v -78
-790 a(The)c(marks)e(b)r(elo)n(w)h(mean)g(that)g(the)h(article)e(is)h
-(read)g(\(killed,)i(unin)n(teresting\),)-78 890 y(and)k(ha)n(v)n(e)e
-(more)g(or)h(less)g(the)h(same)e(e\013ect.)38 b(Some)27
-b(commands)g(ho)n(w)n(ev)n(er)e(ex-)-78 990 y(plicitly)i(di\013eren)n
-(tiate)g(b)r(et)n(w)n(een)f(them)i(\(e.g.)e(M)h(M-C-r,)f(adaptiv)n(e)g
-(scoring\).)p 2448 1019 V -128 1023 2578 4 v -130 1122
-4 100 v -56 1092 a(r)p 47 1122 V 121 w(\(d,)i(M)g(d,)g(M)g(r\))f
-(Deleted)h(\(mark)n(ed)f(as)g Fe(read)p Fg(\).)p 2448
-1122 V -130 1222 V -70 1192 a(C)p 47 1222 V 108 w(\(M)h(C;)g(M)g(C-c;)f
-(M)h(H;)g(c,)f(Z)h(c;)f(Z)h(n;)g(Z)f(C\))h(Killed)f(b)n(y)h
-Fe(catc)m(h-up)p Fg(.)p 2448 1222 V -130 1322 V -67 1292
-a(F)p 47 1322 V 111 w(SOUP)n(ed)f(article.)36 b(See)28
-b(the)g(man)n(ual.)p 2448 1322 V -130 1421 V -72 1391
-a(O)p 47 1421 V 105 w Fe(Old)f Fg(\(read)g(in)h(a)f(previous)f
-(session\).)p 2448 1421 V -130 1521 V -72 1491 a(K)p
-47 1521 V 105 w(\(k,)i(M)g(k;)f(C-k,)g(M)h(K\))g Fe(Killed)p
-Fg(.)p 2448 1521 V -130 1620 V -78 1591 a(M)p 47 1620
-V 100 w(Article)g(mark)n(ed)e(as)h(read)g(b)n(y)g(duplicate)h
-(suppression.)p 2448 1620 V -130 1820 4 200 v -72 1690
-a(Q)p 47 1820 V 105 w(Article)h(is)f(part)g(of)h(a)f(sparse)f(thread)h
-(\(see)h(\\Threading")d(in)j(the)g(man-)98 1790 y(ual\).)p
-2448 1820 V -130 1919 4 100 v -70 1889 a(R)p 47 1919
-V 107 w Fe(Read)e Fg(\(view)n(ed)h(in)g(actualit)n(y\).)p
-2448 1919 V -130 2019 V -71 1989 a(X)p 47 2019 V 107
-w(Killed)f(b)n(y)h(a)f(kill)h(\014le.)p 2448 2019 V -130
-2119 V -71 2089 a(Y)p 47 2119 V 107 w(Killed)f(due)h(to)g(lo)n(w)f
-(score.)p 2448 2119 V -128 2122 2578 4 v -128 2261 V
--130 2360 4 100 v -78 2330 a Fe(Marks)32 b(not)g(a\013ecting)g
-(visibilit)m(y)p 2448 2360 V -128 2364 2578 4 v -130
-2563 4 200 v -74 2433 a Fg(#)p 47 2563 V 103 w(\(#,)44
-b(M)c(#,)k(M)d(P)e(p\))i(Pro)r(cessable)d(\(will)j(b)r(e)g(a\013ected)f
-(b)n(y)g(the)h(next)98 2533 y(op)r(eration\).)36 b([2])p
-2448 2563 V -130 2662 4 100 v -71 2633 a(A)p 47 2662
-V 107 w Fe(Answ)m(ered)28 b Fg(\(follo)n(w)n(ed-up)e(or)h(replied\).)37
-b([2])p 2448 2662 V -130 2762 V -67 2732 a(F)p 47 2762
-V 111 w(F)-7 b(orw)n(arded.)35 b([2])p 2448 2762 V -130
-2862 V -60 2832 a Fa(\003)p 47 2862 V 116 w Fg(Cac)n(hed.)h([2])p
-2448 2862 V -130 2961 V -63 2931 a(S)p 47 2961 V 115
-w(Sa)n(v)n(ed.)g([2])p 2448 2961 V -130 3061 V -71 3031
-a(N)p 47 3061 V 107 w(Recen)n(tly)27 b(arriv)n(ed.)36
-b([2])p 2448 3061 V -130 3161 V -51 3131 a(.)p 47 3161
-V 126 w(Unseen.)h([2])p 2448 3161 V -130 3260 V -72 3230
-a(+)p 47 3260 V 105 w(Ov)n(er)26 b(default)i(score.)36
-b([3])p 2448 3260 V -130 3360 V -72 3330 a Fa(\000)p
-47 3360 V 105 w Fg(Under)28 b(default)g(score.)35 b([3])p
-2448 3360 V -130 3559 4 200 v -72 3430 a(=)p 47 3559
-V 105 w(Has)53 b(c)n(hildren)h(\(thread)f(underneath)h(it\).)116
-b(Add)54 b(`\045e')g(to)g(`gn)n(us-)98 3529 y(summary-line-format'.)35
-b([3])p 2448 3559 V -128 3562 2578 4 v -128 3756 a Fh
-(Summary-Unplugged)-128 3907 y Fg(J)28 b(#)154 b Fe(Mark)28
-b Fg(the)g(article)f(for)g(do)n(wnloading.)-128 4007
-y(J)h(M-#)50 b Fe(Unmark)28 b Fg(the)g(article)f(for)g(do)n(wnloading.)
-1118 4515 y(17)p eop end
-%%Page: 18 19
-TeXDict begin 18 18 bop -128 -294 a Fg(@)102 b Fe(T)-8
-b(oggle)26 b Fg(whether)i(to)f(do)n(wnload)g(the)h(article.)-128
--194 y(J)g(c)59 b(Mark)26 b(all)i(undo)n(wnloaded)e(articles)h(as)g
-(read)g(\()p Fe(catc)m(h-up)p Fg(\).)-128 -95 y(J)h(u)50
-b(Do)n(wnload)26 b(all)i(do)n(wnloadable)e(articles)g(from)h(group.)
--128 176 y Fh(Mail-Group)40 b(Commands)-128 329 y Fg(These)28
-b(commands)f(\(except)h(`B)f(c'\))h(are)f(only)g(v)-5
-b(alid)27 b(in)h(a)g(mail)f(group.)-60 428 y(B)h(DEL)106
-b(\(B)24 b(bac)n(kspace,)f(B)h(delete\))g Fe(Delete)f
-Fg(the)i(mail)f(article)f(from)g(disk)h(\(!\).)305 527
-y([p/p])-60 627 y(B)k(B)219 b(Crossp)r(ost)26 b(this)i(article)f(to)g
-(another)g(group.)-60 727 y(B)h(c)241 b Fe(Cop)m(y)28
-b Fg(this)g(article)f(from)g(an)n(y)g(group)f(to)i(a)f(mail)g(group.)36
-b([p/p])-60 826 y(B)28 b(e)241 b Fe(Expire)27 b Fg(all)g(expirable)g
-(articles)g(in)h(this)g(group.)35 b([p/p])-60 926 y(B)28
-b(i)255 b Fe(Imp)s(ort)27 b Fg(a)g(random)g(\014le)h(in)n(to)f(this)h
-(group.)-60 1026 y(B)g(I)248 b(Create)26 b(an)i(empt)n(y)f(article)g
-(in)h(this)g(group.)-60 1125 y(B)g(m)209 b Fe(Mo)m(v)m(e)28
-b Fg(the)g(article)e(from)i(one)f(mail)g(group)g(to)g(another.)36
-b([p/p])-60 1225 y(B)28 b(p)232 b(Query)26 b(whether)i(the)g(article)f
-(w)n(as)f Fe(p)s(osted)h Fg(as)g(w)n(ell.)-60 1324 y(B)h(q)234
-b Fe(Query)28 b Fg(where)f(the)h(article)f(will)g(end)h(up)g(after)f
-(fancy)h(splitting)-60 1424 y(B)g(r)245 b Fe(Resp)s(o)s(ol)25
-b Fg(this)j(mail)f(article.)36 b([p/p])-60 1524 y(B)28
-b(t)246 b Fe(T)-8 b(race)29 b Fg(the)f(fancy)f(splitting)h(patterns)f
-(applied)h(to)f(this)h(article.)-60 1623 y(B)g(w)218
-b(\(e\))28 b(Edit)f(this)h(article.)-60 1723 y(B)g(M-C-e)49
-b Fe(Expunge)18 b Fg(\(delete)h(from)f(disk\))h(all)f(expirable)g
-(articles)f(in)i(this)g(group)305 1823 y(\(!\).)37 b([p/p])-60
-1922 y(K)27 b(E)216 b Fe(Encrypt)28 b Fg(article)f(b)r(o)r(dy)-7
-b(.)38 b([p/p])-128 2193 y Fh(Draft-Group)h(Commands)-128
-2346 y Fg(The)21 b(\\drafts"-group)d(con)n(tains)i(messages)g(that)h
-(ha)n(v)n(e)e(b)r(een)j(sa)n(v)n(ed)d(but)j(not)e(sen)n(t)-128
-2446 y(and)28 b(rejected)f(articles.)-60 2540 y(D)h(e)180
-b Fe(edit)27 b Fg(message.)-60 2640 y(D)h(s)184 b Fe(Send)28
-b Fg(message.)35 b([p/p])-60 2739 y(D)28 b(S)171 b Fe(Send)28
-b Fg(all)f(messages.)-60 2839 y(D)h(t)185 b Fe(T)-8 b(oggle)27
-b Fg(sending)g(\(mark)g(as)g(unsendable\).)-60 2938 y(B)h(DEL)49
-b Fe(Delete)27 b Fg(message)f(\(lik)n(e)i(in)g(mailgroup\).)-128
-3209 y Fh(Exit)37 b(the)h(Summary-Bu\013er)-128 3360
-y Fg(Z)28 b(Z)61 b(\(q,)28 b(Z)f(Q\))h(Exit)f(this)h(group.)-128
-3460 y(Z)g(E)55 b(\(Q\))28 b Fe(Exit)f Fg(without)h(up)r(dating)g(the)g
-(group)f(information.)-128 3559 y(Z)h(c)75 b(\(c\))28
-b(Mark)f(all)g(un)n(tic)n(k)n(ed)g(articles)g(as)g(read)f(\()p
-Fe(catc)m(h-up)p Fg(\))k(and)e(exit.)-128 3659 y(Z)g(C)52
-b(Mark)27 b(all)g(articles)g(as)f(read)h(\()p Fe(catc)m(h-up)p
-Fg(\))j(and)e(exit.)-128 3759 y(Z)g(n)66 b(Mark)27 b(all)g(articles)g
-(as)f(read)h(and)h(go)e(to)i(the)g Fe(next)g Fg(group.)-128
-3858 y(Z)g(N)50 b(Exit)27 b(and)h(go)e(to)i Fe(the)f
-Fg(next)h(group.)-128 3958 y(Z)g(P)55 b(Exit)27 b(and)h(go)e(to)i(the)g
-Fe(previous)f Fg(group.)1118 4515 y(18)p eop end
-%%Page: 19 20
-TeXDict begin 19 19 bop -128 -294 a Fg(Z)28 b(G)50 b(\(M-g\))27
-b(Chec)n(k)g(for)g(new)h(articles)f(in)h(this)g(group)e(\()p
-Fe(get)p Fg(\).)-128 -194 y(Z)i(R)54 b(\(C-x)22 b(C-s\))f(Exit)h(this)g
-(group,)g(and)g(then)g(en)n(ter)g(it)g(again)f(\()p Fe(reen)m(ter)p
-Fg(\).)36 b([Pre-)66 -95 y(\014x:)h(select)27 b(all)g(articles,)g(read)
-g(and)g(unread.])-128 5 y(Z)h(s)82 b(Up)r(date)25 b(and)f(sa)n(v)n(e)f
-(the)i(dribble)f(bu\013er.)36 b([Pre\014x:)f(sa)n(v)n(e)22
-b(.newsrc*)i(as)g(w)n(ell])-128 318 y Fd(Article)46 b(Mo)t(de)e
-(\(reading\))-128 499 y Fg(The)21 b(normal)f(na)n(vigation)f(k)n(eys)g
-(w)n(ork)h(in)g(Article)h(mo)r(de.)35 b(Some)20 b(additional)g(k)n(eys)
--128 599 y(are:)-63 677 y(C-c)27 b(^)186 b(Get)28 b(the)g(article)f
-(with)h(the)g(Message-ID)e(near)g(p)r(oin)n(t.)-63 777
-y(C-c)h(RET)50 b(Send)28 b(reply)f(to)g(address)f(near)h(p)r(oin)n(t.)
--63 876 y(h)334 b(Go)27 b(to)g(the)h Fe(header)p Fg(-line)g(of)g(the)g
-(article)f(in)h(the)g(summary-bu\013er.)-63 976 y(s)347
-b(Go)27 b(to)g Fe(summary)q Fg(-bu\013er.)-63 1076 y(RET)202
-b(\(middle)23 b(mouse)f(button\))h(Activ)-5 b(ate)23
-b(the)g(button)g(at)f(p)r(oin)n(t)g(to)h(follo)n(w)317
-1175 y(an)k(URL)h(or)f(Message-ID.)-63 1275 y(T)-7 b(AB)206
-b(Mo)n(v)n(e)26 b(the)i(p)r(oin)n(t)g(to)f(the)h(next)g(button.)-63
-1374 y(M-T)-7 b(AB)102 b(Mo)n(v)n(e)26 b(p)r(oin)n(t)i(to)f(previous)g
-(button.)-128 1645 y Fh(W)-9 b(ash)38 b(the)g(Article-Bu\013er)-128
-1777 y Fg(W)28 b(6)77 b(T)-7 b(ranslate)27 b(a)g(base64)f(article.)-128
-1876 y(W)i(a)77 b(Strip)28 b(certain)f Fe(headers)h Fg(from)f(b)r(o)r
-(dy)-7 b(.)-128 1976 y(W)28 b(b)73 b(Mak)n(e)39 b(Message-IDs)f(and)h
-(URLs)h(in)g(the)g(article)f(mouse-clic)n(k)-5 b(able)104
-2076 y Fe(buttons)p Fg(.)-128 2175 y(W)28 b(c)82 b(T)-7
-b(ranslate)29 b(CRLF-pairs)f(to)h(LF)h(and)f(then)h(the)g(remaining)e
-(CR's)h(to)104 2275 y(LF's.)-128 2374 y(W)f(d)73 b(T)-7
-b(reat)27 b Fe(dum)m(b)s(quotes)p Fg(.)-128 2474 y(W)h(e)82
-b(T)-7 b(reat)27 b Fe(emphasized)g Fg(text.)-128 2574
-y(W)h(h)73 b(T)-7 b(reat)27 b Fe(HTML)p Fg(.)-128 2673
-y(W)h(l)96 b(\(w\))29 b(Remo)n(v)n(e)d(page)h(breaks)f(\()p
-Fe(^L)p Fg(\))j(from)e(the)h(article.)-128 2773 y(W)g(m)50
-b Fe(Morse)27 b Fg(deco)r(de)h(article.)-128 2873 y(W)g(o)77
-b(T)-7 b(reat)27 b Fe(o)m(v)m(erstrik)m(e)i Fg(or)e(underline)g(\(^H)p
-1371 2873 25 4 v 30 w(\))h(in)g(the)g(article.)-128 2972
-y(W)g(p)73 b(V)-7 b(erify)28 b(X-)p Fe(PGP)p Fg(-Sig)g(header.)-128
-3072 y(W)g(q)75 b(T)-7 b(reat)27 b Fe(quoted)p Fg(-prin)n(table)g(in)h
-(the)g(article.)-128 3171 y(W)g(r)86 b(\(C-c)28 b(C-r\))f(Do)h(a)f
-(Caesar)f Fe(rotate)i Fg(\(rot13\))e(on)i(the)g(article.)-128
-3271 y(W)g(s)86 b(V)-7 b(erify)28 b(\(and)g(decrypt\))f(a)h
-Fe(signed)e Fg(message.)-128 3371 y(W)i(t)87 b(\(t\))29
-b Fe(T)-8 b(oggle)27 b Fg(displa)n(y)f(of)i(all)f(headers.)-128
-3470 y(W)h(u)73 b Fe(Unsplit)27 b Fg(brok)n(en)g(URLs.)-128
-3570 y(W)h(v)75 b(\(v\))29 b(T)-7 b(oggle)26 b(p)r(ermanen)n(t)h
-Fe(v)m(erb)s(ose)g Fg(displa)n(ying)g(of)g(all)h(headers.)-128
-3670 y(W)g(w)59 b(Do)28 b(w)n(ord)f Fe(wrap)h Fg(in)g(the)g(article.)
--128 3769 y(W)g(B)60 b(Add)29 b(clic)n(k)-5 b(able)27
-b Fe(buttons)g Fg(to)h(the)g(article)f(headers.)-128
-3869 y(W)h(C)59 b Fe(Capitalize)28 b Fg(\014rst)f(w)n(ord)g(in)h(eac)n
-(h)e(sen)n(tence.)1118 4515 y(19)p eop end
-%%Page: 20 21
-TeXDict begin 20 20 bop -128 -294 a Fg(W)28 b(Q)124 b(Fill)28
-b(long)f(lines.)-128 -194 y(W)h(Z)138 b(T)-7 b(ranslate)27
-b(a)g(HZ-enco)r(ded)g(article.)-128 -95 y(W)h(G)g(u)50
-b Fe(Unfold)28 b Fg(folded)g(header)e(lines.)-128 5 y(W)i(G)g(f)71
-b Fe(F)-8 b(old)27 b Fg(all)h(header)e(lines.)-128 104
-y(W)i(G)g(n)50 b(Unfold)28 b Fe(Newsgroups:)35 b Fg(and)28
-b(F)-7 b(ollo)n(w-Up-T)g(o:.)-128 204 y(W)28 b(Y)g(c)62
-b(Repair)27 b(brok)n(en)f Fe(citations)p Fg(.)-128 304
-y(W)i(Y)g(a)57 b(Repair)27 b(brok)n(en)f Fe(attribution)i
-Fg(lines.)-128 403 y(W)g(Y)g(u)53 b Fe(Un)m(wrap)29 b
-Fg(brok)n(en)e(citation)g(lines.)-128 503 y(W)h(Y)g(f)74
-b(Do)28 b(a)f Fe(full)g Fg(deugli\014cation)g(\(W)h(Y)g(c,)g(W)g(Y)g
-(a,)f(W)h(Y)g(u\).)-128 757 y Fe(Blank)33 b(Lines)e(and)h(Whitespace)
--128 905 y Fg(W)c(E)g(l)96 b(Strip)27 b(blank)h Fe(lines)e
-Fg(from)h(the)h(b)r(eginning)g(of)f(the)h(article.)-128
-1004 y(W)g(E)g(m)50 b(Replace)42 b(blank)g(lines)g(with)h(empt)n(y)g
-(lines)f(and)g(remo)n(v)n(e)f Fe(m)m(ultiple)189 1104
-y Fg(blank)27 b(lines.)-128 1204 y(W)h(E)g(t)87 b(Remo)n(v)n(e)26
-b Fe(trailing)h Fg(blank)g(lines.)-128 1303 y(W)h(E)g(a)77
-b(Strip)26 b(blank)h(lines)f(at)h(the)g(b)r(eginning)f(and)h(the)g(end)
-g(\(W)g(E)f(l,)h(W)g(E)f(m)189 1403 y(and)h(W)h(E)f(t\).)-128
-1503 y(W)h(E)g(A)57 b(Strip)27 b Fe(all)h Fg(blank)f(lines.)-128
-1602 y(W)h(E)g(s)86 b(Strip)27 b(leading)g(blank)h(lines)f(from)h(the)f
-(article)g(b)r(o)r(dy)-7 b(.)-128 1702 y(W)28 b(E)g(e)82
-b(Strip)27 b(trailing)g(blank)h(lines)f(from)g(the)h(article)f(b)r(o)r
-(dy)-7 b(.)-128 1801 y(W)28 b(E)g(w)59 b(Remo)n(v)n(e)26
-b(leading)h Fe(whitespace)g Fg(from)h(all)f(headers.)-128
-2055 y Fe(Picons,)k(X-faces,)h(Smileys)-128 2203 y Fg(W)c(D)h(s)86
-b(\(W)28 b(g\))f(Displa)n(y)g Fe(smilies)p Fg(.)-128
-2303 y(W)h(D)h(x)75 b(\(W)28 b(f)6 b(\))29 b(Lo)r(ok)d(for)h(and)h
-(displa)n(y)f(an)n(y)f(X-)p Fe(F)-8 b(ace)29 b Fg(headers.)-128
-2402 y(W)f(D)h(d)73 b(Displa)n(y)27 b(an)n(y)f(F)-7 b(ace)28
-b(headers.)-128 2502 y(W)g(D)h(n)73 b(T)-7 b(oggle)26
-b(picons)h(in)h Fe(Newsgroups)e Fg(and)h(F)-7 b(ollo)n(wup-T)g(o.)-128
-2602 y(W)28 b(D)h(m)50 b(T)-7 b(oggle)26 b(picons)h(in)h
-Fe(mail)e Fg(headers)h(\(T)-7 b(o)27 b(and)h(Cc\).)-128
-2701 y(W)g(D)h(f)94 b(T)-7 b(oggle)26 b(picons)h(in)h
-Fe(F)-8 b(rom)p Fg(.)-128 2801 y(W)28 b(D)h(D)56 b(Remo)n(v)n(e)26
-b(all)h(images)g(from)g(the)h(article)f(bu\013er.)-128
-3055 y Fe(Time)32 b(and)g(Date)-128 3187 y Fg(W)c(T)g(u)50
-b(\(W)25 b(T)f(z\))h(Displa)n(y)f(the)h(article)e(timestamp)i(in)g(GMT)
-f(\()p Fe(UT,)29 b(ZULU)p Fg(\).)-128 3286 y(W)f(T)g(i)73
-b(Displa)n(y)27 b(the)h(article)f(timestamp)h(in)g Fe(ISO)f
-Fg(8601.)-128 3386 y(W)h(T)g(l)73 b(Displa)n(y)27 b(the)h(article)f
-(timestamp)h(in)g(the)g Fe(lo)s(cal)f Fg(timezone.)-128
-3485 y(W)h(T)g(s)63 b(Displa)n(y)27 b(according)f(to)h(`gn)n
-(us-article-time-format'.)-128 3585 y(W)h(T)g(e)59 b(Displa)n(y)27
-b(the)h(time)g Fe(elapsed)f Fg(since)g(it)i(w)n(as)d(sen)n(t.)-128
-3685 y(W)i(T)g(o)54 b(Displa)n(y)27 b(the)h Fe(original)f
-Fg(timestamp.)-128 3784 y(W)h(T)g(p)50 b(Displa)n(y)27
-b(the)h(date)g(in)f(format)h(that's)f Fe(pronounceable)h
-Fg(in)g(English.)-128 4055 y Fh(Hide/Highligh)m(t)38
-b(P)m(arts)f(of)h(the)f(Article)1118 4515 y Fg(20)p eop
-end
-%%Page: 21 22
-TeXDict begin 21 21 bop -128 -294 a Fg(W)28 b(W)g(a)133
-b(Hide)28 b Fe(all)f Fg(un)n(w)n(an)n(ted)g(parts.)36
-b(Calls)27 b(W)h(W)g(h,)g(W)g(W)g(s,)f(W)h(W)g(C-c.)-128
--194 y(W)g(W)g(h)129 b(Hide)28 b(article)f Fe(headers)p
-Fg(.)-128 -95 y(W)h(W)g(b)129 b(Hide)28 b Fe(b)s(oring)f
-Fg(headers.)-128 5 y(W)h(W)g(s)142 b(Hide)28 b Fe(signature)p
-Fg(.)-128 104 y(W)g(W)g(l)152 b(Hide)28 b Fe(list)e Fg(iden)n
-(ti\014ers)i(in)f(sub)5 b(ject-header.)-128 204 y(W)28
-b(W)g(P)118 b(Hide)28 b Fe(PEM)f Fg(\(priv)-5 b(acy)27
-b(enhanced)h(messages\).)-128 304 y(W)g(W)g(B)116 b(Hide)28
-b(banner)f(sp)r(eci\014ed)h(b)n(y)f(group)f(parameter.)-128
-403 y(W)i(W)g(c)138 b(Hide)28 b Fe(citation)p Fg(.)-128
-503 y(W)g(W)g(C-c)50 b(Hide)28 b Fe(citation)f Fg(using)h(a)f(more)g
-(in)n(telligen)n(t)g(algorithm.)-128 603 y(W)h(W)g(C)115
-b(Hide)28 b(cited)g(text)g(in)g(articles)e(that)i(aren't)f(ro)r(ots.)
--128 702 y(W)h(H)g(a)156 b(Highligh)n(t)27 b Fe(all)g
-Fg(parts.)36 b(Calls)27 b(W)h(b,)g(W)g(H)g(c,)g(W)g(H)g(h,)g(W)g(H)g
-(s.)-128 802 y(W)g(H)g(c)161 b(Highligh)n(t)27 b(article)g
-Fe(citations)p Fg(.)-128 901 y(W)h(H)g(h)152 b(Highligh)n(t)27
-b(article)g Fe(headers)p Fg(.)-128 1001 y(W)h(H)g(s)165
-b(Highligh)n(t)27 b(article)g Fe(signature)p Fg(.)-128
-1097 y(F)-7 b(or)22 b(all)g(hiding-commands:)34 b(A)22
-b(p)r(ositiv)n(e)g(pre\014x)g(alw)n(a)n(ys)f(hides,)i(and)f(a)g
-(negativ)n(e)-128 1197 y(pre\014x)28 b(will)f(sho)n(w)g(what)h(w)n(as)e
-(previously)h(hidden.)-128 1429 y Fh(MIME)38 b(op)s(erations)g(from)g
-(the)f(Article-Bu\013er)h(\(reading\))-128 1586 y Fg(RET)50
-b(\(BUTTON-2\))27 b(T)-7 b(oggle)26 b(displa)n(y)h(of)h(the)g(MIME)f
-(ob)5 b(ject.)-128 1685 y(v)184 b(Prompt)27 b(for)g(a)g(metho)r(d)h
-(and)f(then)i(view)e(ob)5 b(ject)27 b(using)h(this)f(metho)r(d.)-128
-1785 y(o)186 b(Prompt)27 b(for)g(a)g(\014lename)g(and)h(sa)n(v)n(e)e
-(the)i(MIME)f(ob)5 b(ject.)-128 1884 y(C-o)98 b(Prompt)23
-b(for)g(a)g(\014lename)h(to)f(sa)n(v)n(e)f(the)i(MIME)g(ob)5
-b(ject)23 b(to)g(and)h(remo)n(v)n(e)e(it.)-128 1984 y(d)182
-b Fe(Delete)27 b Fg(the)h(MIME)f(ob)5 b(ject.)-128 2084
-y(c)191 b Fe(Cop)m(y)28 b Fg(the)g(MIME)f(ob)5 b(ject)28
-b(to)f(a)g(new)h(bu\013er)g(and)f(displa)n(y)g(this)h(bu\013er.)-128
-2183 y(i)205 b(Displa)n(y)27 b(the)h(MIME)f(ob)5 b(ject)28
-b(in)g(this)f(bu\013er.)-128 2283 y(C)168 b(Cop)n(y)33
-b(the)i(MIME)g(ob)5 b(ject)34 b(to)g(a)g(new)h(bu\013er)f(and)h(displa)
-n(y)e(this)i(bu\013er)100 2383 y(using)27 b Fe(Charset)-128
-2482 y Fg(E)171 b(View)28 b(in)n(ternally)-7 b(.)-128
-2582 y(e)191 b(View)28 b Fe(externally)p Fg(.)-128 2681
-y(t)196 b(View)28 b(the)g(MIME)f(ob)5 b(ject)27 b(as)g(a)h(di\013eren)n
-(t)f Fe(t)m(yp)s(e)p Fg(.)-128 2781 y(p)182 b Fe(Prin)m(t)28
-b Fg(the)g(MIME)f(ob)5 b(ject.)-128 2881 y Fa(j)205 b
-Fg(Pip)r(e)27 b(the)h(MIME)g(ob)5 b(ject)27 b(to)h(a)f(pro)r(cess.)-128
-2980 y(.)205 b(T)-7 b(ak)n(e)26 b(action)i(on)f(the)h(MIME)f(ob)5
-b(ject.)-128 3293 y Fd(Serv)l(er)46 b(Mo)t(de)-128 3475
-y Fg(T)-7 b(o)28 b(en)n(ter)f(this)h(mo)r(de,)f(press)g(^)g(while)h(in)
-g(Group)f(mo)r(de.)-60 3569 y(SPC)49 b(\(RET\))28 b(Bro)n(wse)e(this)i
-(serv)n(er.)-60 3669 y(a)170 b Fe(Add)28 b Fg(a)g(new)f(serv)n(er.)-60
-3768 y(c)175 b Fe(Cop)m(y)29 b Fg(this)f(serv)n(er.)-60
-3868 y(e)175 b Fe(Edit)28 b Fg(a)f(serv)n(er.)-60 3968
-y(k)168 b Fe(Kill)27 b Fg(this)g(serv)n(er.)36 b([scop)r(e])-60
-4067 y(l)189 b Fe(List)28 b Fg(all)f(serv)n(ers.)-60
-4167 y(q)168 b(Return)28 b(to)g(the)g(group)e(bu\013er)i(\()p
-Fe(quit)p Fg(\).)1118 4515 y(21)p eop end
-%%Page: 22 23
-TeXDict begin 22 22 bop -128 -294 a Fg(s)163 b(Request)27
-b(that)h(the)g(serv)n(er)e(scan)h(its)g(sources)g(for)g(new)g
-(articles.)-128 -194 y(g)154 b(Request)27 b(that)h(the)g(serv)n(er)e
-(regenerate)f(its)j(data.)-128 -95 y(y)152 b Fe(Y)-8
-b(ank)28 b Fg(the)g(previously)f(killed)g(serv)n(er.)-128
-5 y(O)131 b(T)-7 b(ry)27 b(to)g Fe(op)s(en)g Fg(a)g(connection)g(to)h
-(this)g(serv)n(er.)-128 104 y(C)136 b Fe(Close)26 b Fg(connection)h(to)
-g(this)h(serv)n(er.)-128 204 y(D)133 b(Mark)26 b(this)i(serv)n(er)e(as)
-h(unreac)n(hable)f(\()p Fe(den)m(y)p Fg(\).)-128 304
-y(M-o)50 b Fe(Op)s(en)26 b Fg(the)i(connection)g(to)f(all)g(serv)n
-(ers.)-128 403 y(M-c)55 b Fe(Close)26 b Fg(the)i(connection)f(to)g(all)
-h(serv)n(ers.)-128 503 y(R)135 b(Mak)n(e)26 b(all)i(denied)f(serv)n
-(ers)f(in)n(to)h(closed)g(serv)n(ers.)-128 603 y(L)144
-b(Set)28 b(serv)n(er)d(status)j(to)f(o\017ine.)-128 873
-y Fh(Unplugged-Serv)m(er)-128 1024 y Fg(J)h(a)49 b Fe(Add)28
-b Fg(the)g(curren)n(t)f(serv)n(er)f(to)h(the)h(list)g(of)f(serv)n(ers)f
-(co)n(v)n(ered)g(b)n(y)h(the)h(agen)n(t.)-128 1124 y(J)g(r)58
-b Fe(Remo)m(v)m(e)28 b Fg(the)h(curren)n(t)e(serv)n(er)f(from)i(the)h
-(list)f(of)g(serv)n(ers)f(co)n(v)n(ered)f(b)n(y)i(the)34
-1223 y(agen)n(t.)-128 1536 y Fd(Bro)l(wse)46 b(Serv)l(er)f(Mo)t(de)-128
-1718 y Fg(T)-7 b(o)28 b(en)n(ter)f(this)h(mo)r(de,)f(press)g(`B')h
-(while)g(in)f(Group)g(mo)r(de.)-60 1812 y(RET)49 b(En)n(ter)27
-b(the)h(curren)n(t)f(group.)-60 1912 y(SPC)64 b(En)n(ter)27
-b(the)h(curren)n(t)f(group)f(and)i(displa)n(y)f(the)h(\014rst)f
-(article.)-60 2011 y(?)188 b(Giv)n(e)28 b(a)f(v)n(ery)f(short)h(help)h
-(message.)-60 2111 y(n)181 b(Go)28 b(to)f(the)h Fe(next)g
-Fg(group.)36 b([distance])-60 2211 y(p)181 b(Go)28 b(to)f(the)h
-Fe(previous)f Fg(group.)36 b([distance])-60 2310 y(q)183
-b(\(l\))29 b Fe(Quit)e Fg(bro)n(wse)f(mo)r(de.)-60 2410
-y(u)181 b(Subscrib)r(e)28 b(to)g(the)g(curren)n(t)e(group.)36
-b([scop)r(e])-23 3669 y(Cop)n(yrigh)n(t)390 3666 y(c)367
-3669 y Fa(\015)28 b Fg(1995,)e(2000,)f(2002,)h(2003,)g(2004,)g(2005,)f
-(2006,)h(2007)g(F)-7 b(ree)691 3768 y(Soft)n(w)n(are)26
-b(F)-7 b(oundation,)28 b(Inc.)-3 3951 y(P)n(ermission)22
-b(is)i(gran)n(ted)f(to)g(mak)n(e)h(and)f(distribute)i(copies)e(of)h
-(this)g(reference)-128 4051 y(b)r(o)r(oklet)g(pro)n(vided)e(the)i(cop)n
-(yrigh)n(t)e(notice)h(and)h(this)g(p)r(ermission)e(are)h(preserv)n(ed)
--128 4150 y(on)28 b(all)g(copies.)37 b(Please)27 b(send)h(corrections,)
-e(additions)i(and)g(suggestions)e(to)i(the)-128 4250
-y(curren)n(t)f(main)n(tainer's)g(email)g(address.)36
-b(Bo)r(oklet)27 b(last)g(edited)h(on)f(April,)h(2006.)1118
-4515 y(22)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/gnus-refcard.ps b/etc/gnus-refcard.ps
deleted file mode 100644 (file)
index 298d7e8..0000000
+++ /dev/null
@@ -1,4582 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: gnus-refcard.dvi
-%%Pages: 6
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX12 CMR7 CMTT8 CMBX7 CMMI7 CMR10 CMBX10 CMTI7 CMSY7
-%%DocumentPaperSizes: Letter
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t letter -f gnus-refcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.02.17:1832
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginProcSet: special.pro 0 0
-%!
-TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
-/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
-/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
-/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
-/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
-X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
-/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
-/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
-{userdict/md get type/dicttype eq{userdict begin md length 10 add md
-maxlength ge{/md md dup length 20 add dict copy def}if end md begin
-/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
-atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
-itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
-transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
-curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
-pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
-if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
--1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
-get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
-yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
-neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
-noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
-90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
-neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
-1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
-2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
--1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
-TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
-Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
-}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
-save N userdict maxlength dict begin/magscale true def normalscale
-currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
-/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
-psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
-psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
-@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
-newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
-closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
-/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
-currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
-N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
-neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
-rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
-scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
-lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
-ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
-/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
-pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
-restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
-/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
-setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
-moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
-matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
-savematrix setmatrix}N end
-
-%%EndProcSet
-%%BeginFont: CMSY7
-%!PS-AdobeFont-1.1: CMSY7 1.0
-%%CreationDate: 1991 Aug 15 07:21:52
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /minus put
-dup 3 /asteriskmath put
-dup 13 /circlecopyrt put
-dup 106 /bar put
-readonly def
-/FontBBox{-15 -951 1252 782}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
-8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
-F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
-E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
-424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
-E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
-C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
-868AEA25DA3D5413467B76D2F02F8097D28419D2EEAC108405E4AC2173E4304F
-5A8445E1A94C3022676F3B8E366AD06FBA451263D1014AD0ED97FBE558F363DF
-DA6BD1699F2B52BCCD8A3F91F6F7AE84A72501DC904505DE87C6F10EB1874721
-CA18FC4A7A7937BB915589A460E62278A7C52E2D75D8B1A29458ADE9F21B8596
-5D659D3BAB69F6FF11DE44938A28FF578EC12502ECABB442F42FB29C2E76B5EC
-9BE7255337BE899A9126EB7CFF1465CCD70877E16863C2A00C2E0BB4F3C8215F
-AA0526ECB9D656F2F08E54994170BB60DBADD92ADAE03829D4F9BFCBF4A1CCB9
-64B518BD068EDB92E7C3D0F954AF63F051E1D9531424BFD7B47122A986191CE9
-D1932DA8F549A439936DC5B41183B8F06FFA04EB737108F86378D7C791038663
-19CFEB6E26CAC5A284D2159240543E4EDCC912824B2E8CE6E88A6A6F08CA316F
-0A041D58E3D824F51A4B59FE8C54171E131307D544D854DD0996DDE1D7AD9B5A
-BA98C7CA45F121EBB079159095F010CAB2A3562A2CE53A09269D1642F6BB833F
-A06EA3BDBE4DFFB6D9FACE3F372619F6420F4FF71802456CA51DF66566335CD0
-00B0D3751570249F9A43C4A8BDA8EE12DF9E63B5E85305570D4D053E9B65AA6A
-14C3E00476EC8551E16A726A4946DC7B0B699E6B7AE43213230002AB7CFDEE29
-F2FC7DD3B002C51C619B095993559E5B683D9082DD9988CDFAFAA12092D6F956
-2A0940012468FAEFE2DEAD89DFCF62A70CE082F732504AA0E355520A551C43F3
-36211CA9D9111E6D524F329D181F8118036106C0011C9B1DD69B22A5A56B7A3A
-885190CA89DEE998C82E2A9023497348177A67C2C2A2BC209A93BA3552608A61
-C66A5FC069894F891AD31B17424F0D3369D2449348C0EA807D652FAB46BECFC7
-28890FB9B683EF9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI7
-%!PS-AdobeFont-1.1: CMTI7 1.0
-%%CreationDate: 1991 Aug 18 21:07:18
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 110 /n put
-readonly def
-/FontBBox{-27 -250 1268 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F
-C0962CCA6FACCEA6B71BEEF7C056FBD376F2F0D0BD6BE0A0A8259139B28B99C6
-25119B8C60FF7BA002476930DFDC2F6B1B5A80F1C0E544A22E3F0FB2FEAB64B6
-A509B61E1AB96121FBF7F2BC27CDE5B4961048FC2169C8DB745FCC7AF0EED507
-284038B15CE53E69AA22CA76C2A208F6AD8614CD500D479A5E0FD25E7BB14C7F
-C47C503E4CC38975CB0A8F7E109665FB69EBAE6EB68B2D6FA3C967D5BDE7830E
-9CE6F13DFAEBC852DF1D7D0CDD33DD4D5CD6D94DD8AE0D48AB638013CF75A25C
-04FDEA8775EC52A13AF40FA41F7354624D917EE620318C702237AF8C0E1FFA02
-127F862D4DFD0A56774235A881AFBB8F7F4BCB33811C581CFF38462F669B7F97
-1F97AC09373B8F9B7E653013AF8170613E8D7E17235A893BE296A0CD2096B71F
-16778388993EDF1B003EBCE23DD02949CBFAAAB5D9F6A08178BFB8ED1043FC1B
-0B90D9AFC27B19783740E8DDE0E5E01D116A8CB083C721FBB8EBF71018A9570E
-78590CD831116BC0FDA4229F79A581874FC3A1F108A4FCA80CE27FA54A2A7505
-5BDB3D52E2595512837732322FB5BBE459C0205EB38439E34A39544F0A1567C6
-F29FBB7CF931708C8F92786CCBCBB443D54462B3B4B7BD38E90D325EBC31BA05
-FAAB393C7EBDB9EC48E4ACC15A247D2348A62293A726FCA4250B4A407F64270F
-923EB516CB8A3B5D19876C8755EB291357E4E4CC5903D1A536A635E267F7A971
-B1C33AA7F58E1ADA931C450EA8367B18E20E683CCEEC1BC079E837DDAFFF0D16
-23C4AED0DC04DD9458A630FD498794823FFA55705315F0687E7592A5DFC8B8D6
-FE2F3C64B4A4F9D37F5F2200BAA277F2E0BA8E5A84A0ED79B2B3A074C78BF4EC
-5BB4A625C8BA32E29212FF284BD4434F8F819228D786D69351850707A15E50C0
-81F251CFC855CAD7091265B62991C10DA312443BF1C7F9E942DFCE9337DF574F
-67BE7473A8ADB1485EC45E5CC49B8CDFFB44E9410C364BB5B6736AC5100A6FB9
-C9277AB89176701EE09DAD38D7597DA4E28B8606D0881920D8DECE61C4738BCD
-D46A779C71A9EDA291E11AB7558AA542EA91A258283158F02A73E6F0BC24FEC7
-2E09A90AF14304782915366CD432AF052167C29202035CA7EE647CFE01F780C8
-6EABACE2CB4310C04FE06848C73E64B7750F59B6A5EB6C1071EF5F92FBE1EAD3
-3A43E77B1EB81CD4BC81848A08266ECD31C3DEB8AB82C69113D9FCA2EA1FD16E
-A3A52F37804F4DFCB8451384C8524C7D3B23D7AFA50691CA942E70BC33301D2B
-56CC5A949964651EF7E393CDEBC7D08BEE8E5AAAA68E29A200E461E2CBC62DD7
-2A2E0E3DF2A89286A0E120EC674DDA116380E3A0BA22B61BE0D52DF0CB4F4F7C
-81010A822077F42EC6B12E3A8C3BA0BD
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 47 /slash put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 73 /I put
-dup 74 /J put
-dup 76 /L put
-dup 77 /M put
-dup 80 /P put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 88 /X put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 121 /y put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636
-6E02817082BE6FE0B04249A4840C11F95F8ADEFF72173E9A5F2AB2F62C427E5B
-DC010E18641EAC906A5EF0F9BC2108062134A7F10956219C5847C0D82F0E8663
-12D963E012DF0DD899911EC5D8096F80B49CA3444CF1294FBFAB57DFACC9D01C
-46F3BA2F3D1C14EC30CBF83E5729F1C074D4F1665405CF54722827FBC24AEF08
-F6DD0BC6A79A2DB1FF539454E8F5D1A42D40CCFBC093AFD3E57973A009095CEA
-B91FAFD236C47F453B38DB0067907A28EB5E9ADE87A2181F1D6DE4E183631716
-C21F0F952E0666AC74371F8B5C888DC44FBA5607435A619684F502CF625663C7
-94B0DAA79BE8E129E7F5C5AD1B7495C1BC9B1C759867467F55148C7FF2F914D8
-95218C4C3C2D2DB3482C21EA050F23D6A7A056B172EB210276CDB3B1DCA47A99
-96AF4B0A1E4A219C2559BDAF6F4C56D862C31ED9A55CA79860C1AEE80CF26214
-5B9B93517F0FEC475FA130F73682FA201230EDCEE6C5F1DB8C73B21F8CE6CA78
-73DA692889A66771DA94EBB0ADB9C6FE5305C8FC02E546E39856C58CB873B99F
-5CC26488402D139BD6B3574AA0C553E5E8A17FFA5B834D213729610091D8C8CC
-E81A41A4D5DD8B19D4B8D3CB3A870316F6114EC8C247DD55447F8CC88BD98AFE
-34F2019A282357F5BB508F7244E2190400D450E8926074D4269966020B1EB798
-C66ED53549CF9E7C3EF4349EDE7B9DC97331F32D93CF694BF7815D556DF580F7
-5B6E58EA3EC79BBE1703680AF47621948723B39466BA36D51C738DF998CD2B33
-8D58CE6C9D287AEF19DAE92A730955C4CD1BE79CBB82F73A6A99029E58373CD6
-CCBD8D3032C5CDDEAD9FF65FED8C15C8C0742294EB55256C1DBA45BA0014D415
-42970DB31BDF8447E405178C1C5EB09A9F2A24AD77A05851E3C1658E1BC348AC
-6B61D84A7DF50F14B21CFD85B3A7455B4BA42566A5D50024DC5A11A473EF65CD
-A938A86FEA73795CA0E6333891CB2338C6B4A4F614773EC4E705A1FD6C0479C8
-F89AC68DE87D86F3CEFC68FD088158283822DF2C3F52BEC168B89F701F8D51E5
-95CAA1C11753DC6553C9170516D38C247C241EE4EFC27CF78E3946A733C29209
-013658C0363E6485A267A5E470F7AC44FE508D1E7F6032176750C08BFB4FDE09
-D91146989BB98AE02E126058588215D7C73127981C79E96FE937A84BAD294030
-AA8936DD0DC36D805485B9775B11697270A2690C93172291399F54C1BE1EE4E6
-90947B89A4C657C8EEC26EE2FD33A419E891E8C5AD303FF87050363CCD7CBBEF
-E129462E88397A34C45EF602E706E94A3006A29104336A5AE24E0842460EE971
-DAB656E0A43ACE183A8FE5CA18F1828E80F833FC9498DD197AF6C97B740239AA
-40E2BA5CA3E34B94447EAB95A59DB6DEB16481188F816B37802A551E265FBCCB
-EBF2EA6644EFA5BBF004DDB1C06776C1C951673B19CA2BED8C6B3E4BA82EA70B
-80CECD2F1A90C2A087DE95180225079692E9C182156857B95A01EE7FA83C9103
-0D1A06B4D9C0A61F400A2932837E897D35F95479C6006305AED0A2BFF00378C7
-89C025413F8C680AEDB84AC6973B52B6C88539288C02AF0691BC163E0E4A9A44
-13DE955F5E63581B6DDA1D92E1CB5A400FEBD34C53314AF210A0083761BB6257
-BA63640589C5277A96834879212CCB263655C52A3EE63C93E4F316520EBB2394
-A37EA8B43FED95D3A08EC186ACF044D482E39C96D93B5C49569A13349EA196F2
-EAA3B736D9AA76ACF6BCE9C19948710A7988C70E6C16183F36E86F189911D0C7
-477A95E54346123753E95EC78A7E038F9A744F248C0A2633C5E06860C372FD3A
-21689B7A5B5E332C5A2A43EF3B272877D53E0E4CB5DADE3B94C6A74630B2BEB1
-2711CC0079EFFF73C34B4276E5550256E7F2DD18F61823EBD73B5C66A2F1A254
-F79B6D4E90328FCC4EB1D8101B2B20F19CF758C7BA6344B4136292E925CBB7F6
-765B685B60525D6DB5B7D783EB9B58C21BE4D0E2C92A768E6C706CB4AA059D1F
-BC5E29D3BBC9351D44B2D40CA49A4847121B2E17A813740E434B538CB2078507
-9D860955F246711918B5684E515AF85D4C7A47A55164D59A0BE6356C65EED299
-FD53BB475808043252FA87639855E0FB03B540EB4D75E6CE8F2319F748CA8583
-9B24AD0F6DA66217EF9F3203582779EE0E655C57BE7E520A988AD7BAF25E829B
-32452864D6ECE4F6DA85D7540E12E3B304ED80C3EF82138EA2629833FEFE0383
-0DCA1760959D785DD07188FC974230871B3316D4645092E12254342404A10619
-DA7A3F4E0B3B610F6A54D3A997043F282A64380F743BD5BAE237B207F8658FEB
-53330E641EB59D7CE4AED8446BA58461B59E6797BE90667D634B432ADF54E554
-4508155F73B2E4651329E560A84CD6A6361AA10A7814CCC87A23ADCFBEC30D59
-FF88B62DB938F5EE6CA50BECE47FF8BE4806C54A07FEC1D69ADF19C043D71E25
-38E1285F15B5E397D3DE373631D3F9B5B00C0CFBD0EEC93A0E85DC6D37034017
-4B9BA9EF8EE12232A1D8CEC4A27F1055C6EF169B5DFC77D04B250E69469D2FE9
-E4231B09C4FC7D05C4C1EA4B8DA599C506E91B736D58A2CDB85CF108685E0D0D
-EB287C15119E6261309ACE646C1B9E437FF9D4C91BBEFBC273C09DA95D4EFCC6
-30097765785DD8CEA73C93D21A82D5132ADA019B616FCF189204D0017CE6326A
-EA8341D6F45511F3B03C4D62596618443742D574C6580A2F8CB0ED450937ED2F
-EF6278FEFC481874DA116855204C91B778F3F9479602800CB3223170004EE929
-58F3D5D1801EC3C1024D7059D3ED4AA21D5AB764058ACDD6D31F338A84181014
-E1A16EF03A3037DD93A0FF41AAAE1D913F0C508BBA5D64B79E72EFC58CC49F4E
-610332BCAE318E3EAE0BDEB7FB781669915C17B645DE4D047C179C7B367204FF
-3D97E1114655A02F058E02482938ABD9B000F2C6FE840B1B78EE6976BBB84284
-2FDDD83BE83A4E43BFA8B6C1D6A4067497B735DAFDE4A917FCD5AD6CCEE3DCF0
-3A181EFB99E43245AD49E9AAFEC41FB29D1A1EA82A0C8414301027B012F72AAD
-1F3365038DDF183098C6AA01C94A5B138B416118162FF5ABA9036A6723C82166
-D0A6565189CDF78381916C84D1305E217EAD2A1CDA6BA60073DB298BE6B72F6C
-C1AB2DF7F5E94A7042FAD7F52A910E71F498707A07374FC83EEB07FB217E5687
-DE50141C3BD3ABA91FF0B83F0D7B6A0B2387DE7F1F142323343FC88B1A72E17B
-FAF4519FF7E43576F4BE914F834C4FEE6427706069B9FA6D5250CA9492113AD6
-ECFFD975D06AA674D10C236AE1C95C16CD09B03CFA79F2529F44480A046BA8CE
-5EFDC03F3ED17C06EAAC65AEEC71BEE15AF3A5B7FE96879061BD7293D557A97D
-86F16C7C0D3B1B78E522CCFE81EA5111B368E6212F9B8786FB41414A6E4E5C11
-3A74D2988C52998E6C9AA90356C79F14E4BAF689D0CD524BF632CC4F01EA1F28
-71DF4BEFC748C63E5AAF4E1FB04CD32827BEC33A525E4653B6A85F52043F613B
-0702D41C48F99D43A075739D5268C9B5E2B81711B496E381A99F31E639074DD4
-12439A6090F0C20A0262BEF4CC6FB64D73F838A91E759866A0A221C4889CE71D
-6FA48543C31DF2BB91A6A12B541A9273E9472B777F158EC15AED5855D69841DA
-4DF1EE32C92C37E8CA23C544EB0C8BBFB4B3189DC7F74C10929B96824218E5CF
-274F5B8B06EC236A525C4D1CAA1B9A8E9381833078A7330938582B35AAA475C8
-1C994E1E97DB2F96E0FDA19E54F20B3D70463CE9D658DA5B802182DCEC91586E
-49AEEBF58E785AFCF1D5AF982392BC15D8B33C5F2EF4C345E48543563FCF45E5
-06539920523CA33DE5B6A291307301F14C2AE5FD7B181F36B9200C63898A0B26
-C88A4693F14566F4CE82513F3FE9564815859F041C6258D9C7BAD6DED49A706F
-979CADFB3669F699A4F61A90DB34D86A644D65BA8EA93AC3AF8582F08756A71D
-20D5F316D2E4ECC359346C601E6B39E1BED36AF7F60D9904DC711895CD8116BD
-44AC5570EC33EE859CA4D84C158C3181A57085CEE1DCD23A66C7C0194FDB97AA
-547756A8CDE2B4346AC3B10D474364F792B35C891C7B8A70984B4C4D5D47B797
-0ACF7435CD6EFC14EC87D7589FD719A4FE01FBCC009B942E36F92DF6A9E94881
-E1267B7D461CAECFDB7AFAED9C24C9E51F0E336A3AAFEC4082D61D2DDAFD98EF
-42DA608D66471B481E89BE94C6EA43B2A9C87C2D5F93F2DC1969D2BF4A8E07C9
-E5C9C1608506FBE90AD17D6808CCA415A0904314EB01C959A3A586E0062A6E7D
-DC1D95736C28CCDC9DB3C4401E2119B380028C3FA5D422EB3664D2AF340D00AF
-EAC3C63F41C2F0140C2DBF21EDCDE28312BF85D02B7AFFCC0456F60C0C67404F
-E04EAA2C4FBFCB0AB9A2DC526F106C6B895A327733D2C1061B36D9E61B309948
-C47F447443654B05B2BA393D542F83823C0A5E9024BAADB331E55736EF13B9D9
-CAB4D0CF70A7C1A6E24FB33E7EA57717D186C0A342F7FCBD84A8886A76C38446
-C71FB75D9B6FE247A7D99FC82260A833D9395368F95331B90F70EFAF9F60E059
-EF53F745227C5BFB8C83E9023966A701C14C45ED5DF0EBD17B79DCE720DB3294
-48E7761DFDEA855AB61A8FC1A77108F3BEF2F33C8661B25F763E99527B47AFF6
-D5B35B711FD6117C2A45F1511211AED24DC09C7753D0A199AB7F48B25EE615E0
-A03A5F9C7227E264E7EBAF18CA64C08DFEC5BC445E503D70258EC974E1A97F0C
-C71FAC8A5EFECAC1EA117F4B6BA511DCBBA628A5FAFBB57A469A0D484E61E90C
-6CD49750467CC7320292BB1C36A9C4CFBDA3B8C151D489226FFBFA28AFDACF5B
-9086959CD8510AFB14735134C71571B3C9A7C059498A88388AF8C8306320B0DB
-395FD549217D1B3F43ECFCD1C0A43263BE3880BDB07B2206A82751759C4309D5
-87812C46EE7EBA4802039D843BDCC8AAA7855D9CB19EAAAF15C23CC8A4F4FD16
-05499F2AA67B8C7F298F17084157B38A60829BAFDBCD9C6DF46D64FA34C4FBC2
-CC8B87A5829B8CC665A16DC1F8829C11A93863C9E00383121BB12ED2634AC363
-78686BD89F74772CB3554404990411A5D1FA62685F5AF0FD658FADE9CF5A46D4
-C121BEBDEB171C06CAFB5E6E1AA688D957EFAFE1FCD3E023D03AB0B13C350949
-1503FCA0A4C6821FF3CFEE0EAFC6BF677181707C3911E328F963A9BD15B4F255
-F3AB083296022BC414C5386FF5FE07745513877290635346034C69D4BBE93331
-8067371B19F71491AFA1E45F55457BB66375DC8A459CE9F54100D11E721E2BB9
-B1492378906ECA9E5052EA4D094A85AA19BAFB2619D544430E52DA7DFCD7CD85
-224EA1E8AA154BFD1A41AD7105AFE2DDF60577AEFF38F9CC5F1CFAA3DDD84F7C
-5D8D8AAE015C65A556E04E410390BBA806AA33D8D838178F98886F908D8C1F4B
-5632250D5E81FDAD4244162618716408A2A728D9AAF6998FDBC1AA29E5C20286
-AA3A28163D2F3E94A8F60EE16AF592CE6D32BEB8313C9BCC2603FD8A2D8B27ED
-EE115425DA1377D15DE4FA8BF049831000F1B0FD29724AC055850AA071C7D43C
-BC9D2F9FA7426DB40B1B27078CD60B9421F3B9C5989AF8DF3488D8D91499355B
-C771D762AE15AF80079BC7E6964F02716CA09A87B0EA72AF0658B03DEA67DF37
-5454E183B9813C97C9123A22A81AAF7DA97590AEE38B966EE4AFC8DA71AA943D
-32AC83DF6D6E71E9C98B95A13E92FB4130A0024B716CDE33872530947B1A21A1
-14826165940F0B4D8F055C6A938892388B3E035E1533877A8773C14562D69D3B
-8A3E60F11A265C45AF3EE773F1CED0CCB9629D99F8690412DF829D466C55AC5C
-D1A9148CEAA34F5F4B6F17369DD9E041348923647BD5FE3B57E11FF8A9B42516
-25689CF0988421F8394A82AAB30C1ECB5E8EEC36F81ED8C5BA6BFA36B1DB1E54
-C31DB816683E3E933597BBBFFA1BA9421E7906D829767FABD1AAB482F75C99E3
-F8A21011DA33C5D8A190713CE7B8CCD958194CD6803F07AC67CC480B1833CEB1
-5C8107D23925DE4D1706A350626C9830740060D4DD24E2DFDB1FE89CFA3299B9
-6C9B0AC53D187CDCF4ADDD4B39F0E5903C2E8DE39D4642DF2EC6B4B1A7FEF419
-A8470C06304A3B554438C277395625FAE555992501D2E5BCC14760438DBB7E37
-6914B87AFEC86272DB379F8E0600B8044A6D917203CC916725FD65B0BEB5C6F0
-0A8E27F9C5BC606495215EF0BCC3C9694DD0363BA9A2CC27C6A67C270DFCBD17
-A576639FD20C240886808BBD24D7D7BD2DA1C657AC5801912B770D4C8762EADA
-3FAC32614CF6EE10A4ADE075A385EA9D505CAAE4ECE338E492A37D2148A1547A
-56D2E9A7D7FCC9DA8617848F0C75D2EC5215E7C5685FC576618D6A38681F4074
-03D88A5F95A45F0ABF57396C47E2DAC23EB32437AA755660B4E964E9C9A01C7E
-EE48BE8620D06930920B5CFB9FFC97632D5D08B7D449DD3630D5FB8FA258ADB4
-2E1ECD1F946126A77791022F4EC76A42298FEE9B37CF0452A1AAB9B4336FA91E
-87E893B9E52203ACFEFA5BDB12771721A430DA086F7B9A881C484D78F3F35E80
-0937C5D449EA36EFDAF71A3023E63F0408B1F293F94D1E98D965E3B783442554
-9E559FAD2B27DA30AA240E15F8EB9177261410FA27384CC4294BBAA6C6DC378D
-2EB456D8D362EE081D83D837DB9EB4CCB2598AD307552FC8E1656D7A41D9622E
-0CA07D5EBAB6AD78345CDDA2C509659126874C1325893B9ED1FF89EF4950BC18
-483524C2353F8203E154A913F42E67E64959FF4D8197A43F1EEC5FDA1DFA0F2A
-0E1B87EE45FD240AF797172FF27032E74942095898DB7E809355C1D708BD164E
-C0348C3FEB2B97CD54D4EE2E41F6F0296B9BB025E02B565D0E05743A68D2F624
-8437C5E6AD97A8B2438E33C02BEECCE7A4B94CDE3E9E70BD1AE4BEC4477D2CA8
-1392F02EFA318742D22DDBA8A68F68F5361E5539C6525D9254D8478D67F2082A
-B96B895A6008F2A9A1FCE057F28DF81F8F67981DD91789A53329EE5DE234B28F
-8CEC97B044E1DB76F3320C7CF18874453A15CB74FBEE02A2CA38364B00E60B63
-030B6DA914CDA4D7B696E405957E4BD4BC6A5FF06ADDDFEDDB211E054D871CA9
-F8FE5994FA3EA0C56CCB3A76FD120F1DB780E9D2D698E207861AD18A2885EFBF
-73E09AA99ED95A6678554060FD1538AC3769723728921138272EBBD4D6C5B135
-F6F0809C5A74C8044D36198BCBECD50909AABD0D93FD99FC5C8E8E0410F37462
-E83B28254AE083F6D5249FCABB482DA0292513ACF1995A33D26C5C775258307D
-9162D7918627E17C0D7CF1733A306ACF7373DC36958BB3256D055EBA3ED03BAF
-CE7CEC77ACB4B95E62D450F5BD534F775DAA2E71C631ECD368BFAB0C8693EDF1
-9AFCC237B4E5BFACEB61A7BA77DF89B705AEE2C773C17234D11D159CD0F74378
-78E3DE00110AA85C3D60E9EE8DF3EA58B487889AEEB59267DB415855EAFB864A
-4EDBACF110AA863C4044FE047374FD5E7AD1B332283800C0051B1A60D6961771
-CBD32912528FBC3237B22DDD1323CA3A15C7DC579783EF55DDD9250260D1484B
-E506E664D8397BD628335F4C6D2AC558AD7975D0D9F1246935BD75548629193E
-D4E099AF3C544B8D4B85338B83F59A1CC6CF5D09F29692B637BB17A9074A1CBD
-F063F95AED674456F3427149AB2FC896FFFB5AFDA16B577CC647773ACACB8E77
-15E37639D6CF89494F7385056898CEBFE4730822029F71AE176B24119B52DCD4
-0BEA99B317256360914CE3681ECBDD2BEE63ADE6D90E6834C1AB01F9140FB8AA
-E1D5E326C2326EBCBA858C8EF06C76629EF0EF21267576B23F52CD8FBB936DC0
-FA0571E0B37F245F7940E737DEA373BB29EFC33D8944AE5541E9A3048C1958C9
-A139577C82EF29B07204329CA4E89AF54BC5D6AF21231BB24B6E5BCC4066E0FA
-08F78E4570A2296CE5D81C8E4A53E101EECF2514BDA6F61A532F6E856B920956
-B6609FBC201C463D1EC905B0C99EFC5341E747C7D2378264C8E002A0DAD0C040
-C56DB0953FA8A477E5C6EF7499590A0644D4D3F6436313819C76F850F5A2F9A3
-7F72824DA4B4912B7AACE623065C45C6F33E67E46392D78AFD6C3C349780D0ED
-16BECCBCA6B355016EF4140E668D8766BB2E2F128EF7562F296E83480509433B
-B02807CD83E9A307904CA364B92897D685E810A55B7242FC78B8653A676A0503
-E7553639167C466C00CF6CB9C153986E197F29D0F7141EE5778A9182266EF4F0
-63E3E5BE8FF5FC7887B9BA5D178E0090CC0BF78E2C54E218D7A9745662C00DF2
-5288C00B3BA0FFCAE876EC33E2844AE309EDEB7632C2CCC9AE8AF6780048FFE5
-DFDCB8D3D68CDFCD702312C5340F881CE95CFD438653439008596E450CD450C4
-6ACDB4E4F0F98739480473A34123AB62301673AAF0355A170BECDC9FF0305546
-4132F53DA59593224FC1F8620A0F5F65C2C8EC5FC842046DC653452D17CC06FD
-E304AA3687478F40C8824FC99BD288A0F61DC8AA6FE064C6774D074656262FEC
-0AFE597CEB2B406590971D949FAD3D07CA4C9B39BD036EFE39B6D721F43F03BF
-0ADEB155803651CDB32B4638963AC2C194EBACFB1464DD507CFA970AAA3357DE
-3DBF0F5AFC3C733E01CF1EE5FAB6580F70933C0D5089F95420BCC6909C57DAEC
-6BCFA637CA8CCDB6B5B97C1565440F454023377BF8357FA16B0E8582EB674624
-608C2D9B3E3915D57164396948C6AFCB325CD01EB08741AEB6F56A0FC25D2EEA
-4F8A80373FA13B4C83A6B37CF1B1E30C7CEC6675656DFA9F53A97A4C1BFE09CF
-B7BD925C639CE81A6B00313E2497A9164A5BE5C0939D6184777FA86F1D32F96D
-EE469D1E1BDD611AB7C4F8B17ACE74EB1547356C06BF8E19AA60A17D70045119
-C653A1712FF86AB2AF1677EDA48A30025BE535874838DD29F90B7AF5C9366898
-68E9EDF998403B8D66C43814D74250D4F87EC1BA428E5E74928FCD8B56B28887
-C73EDC45485EA2433881E9C436045BC988109BF289B458DC4C61F9342D480C5C
-1D38182E4D2BD8D414F88189434C477D76AF59100E5613761C90A93B2F245144
-E8D94A807FB420C7457B7EB2F8ED42E20CF3129A097C7AE41BFBE4466779AC3D
-2FD93281A01073AAC35617F90D01F69871A802668F79DFDA152B9C636C3EB50A
-CEB5644FD45C1B84BFA89BC393D403832C12441ABAC0A648EB47F025D8F7137E
-E520D47E8E6B12D61DDF1F87EEBCB8272324567D172067D1F4453BD4533416B0
-39B5C3BAF812A494AE7B63E741BD3D404F24773C0364D8D99AB55C03C8065C24
-FBECC8AA80DB69F167478CABC30E9BB6AF07AD578A184BAE62D3EA05836F2741
-E77570D1C2BCB9DA1DA2D8E0389FDA5AB53A74AF87A7940A036355E7F6770363
-31A42693A4E1BCBAA0618659ABE69227133F80D84775A03BB5F4B20DD999A0B1
-B9F962306665EF7BF71132BCBF70B10642F2497BBBDE0A213FDE6E6E812130C9
-BD67C4857B42DD17F19B73B44B45150CC793182F00CE53000B779D56E939479F
-E6BF98F2A2CED7005AEA51DA6AEBFEA53D00C40626AC6EBF0E13D247D5B3A2EC
-95E07AC0B4B06EA994721B709E
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.1: CMR10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:52
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-readonly def
-/FontBBox{-251 -250 1009 969}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
-87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
-D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
-92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
-295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
-409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
-4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
-2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
-0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
-B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
-24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
-43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
-D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
-5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
-96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
-7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3901F92CC2EC9BC842
-5EE578CF06846C7078E026DFCB18AD4D78023652F0165DE17C183E43752132BB
-19F361414774D5C13AD718B01F47E61745009D823C3996FB208C3A9D4B4F116E
-4D38E56725461BBA1FE17CDC27CD99AC7D748CF7750CA2C6E1EC5E4746AC85F5
-E8274DA59750A144AD5AEBE6C9A7CE843BD6837FE2A88078124AA1A94EFC1C50
-B811EAEB2679AD57294AB13E45AEEB8C6EA105696E341E4C14ECF573EEBB83E6
-F9DE39BD6CC376158231CA2A83D91F721ABD116A40698F26610853E7FD075472
-ED40CCE32031FCFAE2737B412807F7C9E6494D0B73B7AB13AFD20D5219A71562
-12A7B57DD9965B15AFB38BEDA28D35D73282D4F1F9A15C4403B7C69C7E80DF54
-C112D7813F7271A5474438A7CC380735F029CFDF4C0C30C3901A7E30F8B3B017
-B1A663CC9481C79B903806F30AF37522828FD5DE3EC220C719B63A90FB3CE105
-3D5E0F56440F1657C4D99760B010A26A6B8411D2FC60C28C4E885AD14A379244
-841B408BEDC905276B7C9BE5BDFC5675334396F3715517D7A61C24BE35125DBD
-E1F7E59DABE44B1155B5AD46DB008CFEFC55199AA3C109B9E8CB20C27483AD63
-EEA01A4E84E7D17631144F1F24B4B1864047E1FFD3AAC17EF92DC3567F66DEDA
-A47A0A9B59F3703ABCD08C592C654013063F9274AEAEFB3AF08C60159D834495
-5CCB7AC6233F19424729A60D4DE89BC5FB4B356DA22701D9654B9FAB411D0711
-A09247F852E3FA20245D4E9064D92BAED7C23AD21A09AAF09F4BFD20FF0B2BB7
-6720E624EF9B6B8EE2FF020E0C2995E236C7C5E3BD9F43F044C0C90BA3BE9D40
-B3F3DB25345B0B79C8587ADA006002B3B87E1567F5A3441C9C9DD1E80E0AA709
-B2870C995AF82E7E8DA5AF8CEAB2F4C53024B03DDF03D49FDD4D8EC1E140DA30
-F013232C94E7DC014E8AE24C47F693295A0124678989968736287F3F240A48F4
-68D694921FD09304E96DDD0EF3D6ED2A5E7D1BCAEE720E9E26162321E7EEDAA4
-F60C46179849A7FF437E4E760DA618EC310BB373C79BDF77DBDB2C8DC3506454
-C84A084CD32A310A5B9C53D17183FF9348424C4703563E39C7E72EA1FF3E8CD6
-26AAD04AC26F5F3D82B0AFF6DFCE69CF6A2B80C851692A361A0373EC97C7670E
-75779E8ADAB55C5882E227B8A77EED0842FD8F64ECE33DAECDD125E99258ED86
-610A5B326ECD44E272FFC7CB7C5329508F288C0B56C64B2B88C3F90770A53DD9
-5AB6188061EF70A78857C498EB73E27E5C349682BF104F8B9C0ADE7BFDB8CF3E
-D777DF991172B17F90F5EB09E054B7847BBEA260E4ECA36ADA3E89BAA1CE0776
-793B2A8E9F6F85D92BE7C596A183E99F757D607D840182E8D2052A35AF7CE66D
-DB2F50CBD8D40A857F0A0284D2177F0162D2161DBBECF72D86D085E3F4BCCF13
-17D3317BF65C87B307FC6A857E58555736F46F957CEBFD08A04236A2E18C0C86
-3E55EF783469FF5C15C7CAE01CA054961E9359C243A41CBF210AA69ED2EE4134
-08021C295367D20A17872099262A0362DC364BD720BA2F61D28626FC1004435D
-7C2CB3309B41EADC1EBFB2F2E9ABDF6ABD6879DFE17F1F8D527E5CBA9CEC328E
-CCBDE7D2F10728C99D9B62DA34EDCC42AD0011F8369EF9498F79F46753073464
-7D7E8C362ED7105BA39D30FECFB8C281A4880C46AF32EF2FB81B5E3B24E8E01D
-5F173B88E7E1DF1D917796B4373197BB682985F2A4B9D588865BF2C1A7336819
-72A9E1EBCCDB25703E0089CC2CEFCB4024ED41EAB81E265B6F911F164CA24710
-7500D1B19385F7EDAA98BB29F72D96A277A62918DD18A5D1E87E1D7C966C2AAC
-A8CFCF26DE9EC9D60DBF8C5968204265CD68212517F8E43E6C665C0A7D2639AA
-D5655363127857A67A36EB7B60FE762D505D880B7998C4D1C583D0E609087881
-30183626EEA5C4E59889AD88E8C3DF79854671AA0C9D7666135B844130A9DD87
-E31FC8BF519F30B553D927C7A3B81B8D08D6BFBF3CFE97C0370CF838B67B01BC
-A9ABE1DCB0E9ED6A49A953C3950871DE0D7BA24839FCF0666F5583F639279597
-BF6649E453DAD403B59D44E211A67180FD36BA0B89D5E8F1B4B88F1F8DEC9DFB
-5B5225D1FC4ED7F9A0937F52798954E3D8E354CD0EDEE924B56EF95107BEA498
-24892CF3C814E031A331BF6A011D0697E885E4EABC364624385EBA0708024B7C
-BB0A6F8E326C0BB47DA80734A7C580BF611B8D71EC860569BBC5D18EC9A06ACB
-B3823A877420C9481A6CD8BD6152D68CF2C9625DCCA06BCE53A3BAF23FE934CE
-9149C2D2EB647CE66B286C13213B75740A9ED1CEA56C91
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMMI7
-%!PS-AdobeFont-1.1: CMMI7 1.100
-%%CreationDate: 1996 Jul 23 07:53:53
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 60 /less put
-dup 62 /greater put
-readonly def
-/FontBBox{0 -250 1171 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F
-C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B
-B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868
-DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811
-4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3
-FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB
-76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5
-123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770
-012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6
-A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413
-44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC
-4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050
-01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608
-D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3
-914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05
-261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615
-24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2
-A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663
-9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C
-889787CDC0C51802EA1E0C63E6DE20980D3DD206F05365BAFFC8480251B55F22
-604D59D4C2CA4A8F65FBEA5D588E362EDD7BCFE6BD5F7F11160EC61912C1C4B5
-7062193A966C338C5DA9A059FA5F4B7262C6A8973A5566FA024EA42C609AA587
-4BFB0F642737EC09D42F4D95C419C25F0008B625F00A1D0A10F2E8A45E4F497D
-DE1AF68967ECF18ECA3A2919A5769247B38AF39084D6328DB47A11606DDCF69D
-17D471D165C5161B04A01C6EED7F2B1427B82F6B6E50171F18E570EB5EDC1F45
-3212A2F1F202987D5F8A3F2841CB24F6190410D49B183421E6EB5F138B2F659B
-A0B18267721341C8EF7907B02EEBB82C3B3BA7E7FE89D4FA240CDE585FAC1C67
-966D3DCA80A1725D6C008082CFFFD1E42D98B17A63233F3E8F5F3ADF8A9CBE47
-070F851CD80D9860380DE9BDFD2E34A4AFD03149FA04BE68145344C4144EB69F
-70CC929D7014060AAEBD220CB3BFD6E9EEA23F2E213AF397CAD50CD982EDF759
-1F22420BACADA3550B974507E271332FD68415C27DF380AB387429C0758B7345
-548524
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX12
-%!PS-AdobeFont-1.1: CMBX12 1.0
-%%CreationDate: 1991 Aug 20 16:34:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 53 /five put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 89 /Y put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-53 -251 1139 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
-B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
-AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
-7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
-20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
-B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
-68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
-D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
-26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
-F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
-77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
-BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
-C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
-30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
-148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
-E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
-E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
-337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
-0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
-472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
-A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
-331942DA18ADF89C5E79B969611C123465054D82CE579FD1C32CCAA23D807D6F
-D9F6442FB39EDDAB88C0D5DEF3A63CDAFF6666B37B26A65384593CE2BC57B431
-BA196A7B8C6514611D83AECEE76612E2DEC60E9F661AC23BC8C0124B56B6A702
-287B95F9FBB9C60868080FF3B0F4896DE5184F0DE05535EED24D6F001A3B4ACB
-3A2321B541464B2E998294CD57DF86CDFAAB088FE612B524C8C208976D45D6DE
-EF1FE97D5AC907C5C3F7503F6E8D6856C253B85563682BFA3FCA3CA2448D1BD9
-2DCC43578BABB343AAA7E8E58885920596ADFC972CD8383DE48DEE1F7E590BDA
-AB2464F3D91A002744C19275FA149EC5A01DF715A98F4A87948F78BD565CE88C
-97F58E8FAF5022206B77732231F759EE9EFC34EC66015D35315B10F36BCDDA54
-86804DA18B754CE39697902AA03F6D49E3FF5057FE4DEE12E9C985D395F64A57
-16F939E2A7C81D1A9AA36394FF95E1FD431FA6913CBE7F50692FE1B76CB4B266
-179A7F86D84CBDF2860789BF8EC89F6AF941B3E5BB5AE1BFB49D692AB221DAF2
-D73602AD328A345CD48DEB39EE2155DEFDC024218C36FBADDFC258EFC3F14406
-39D43410CDF82CBFDD6EA9DC6AE4E8D01AA0C01722FC5AF3EF577D1AE6702258
-821F259D914110B96AC19541D7942FEC05935A4B01A977B1C9B95843DE9DE0AC
-C14EC694A278C3E2E3F6C0EE6A90F3248A066808B8E6DB3B1FBC022E9DB435C7
-294A6FD65FE3BBBF1607475E1B41B3A97064CC583A546C7E66AE909FAA575372
-765300346821C8BF7A7154F387AF49DD7F746BF4422010D4711A33C4194CF3AC
-DC6C4E4FF9171274BD982925C2C4761F453C0F5A7F85EAD77C8D74F979E67074
-D47DA7519835E6409492C6F2F6A90983D511EDDD11C9E2E1FA20FC1EB970836C
-7F9F801792A9907F1DE4F0E927CA67C1CF065BBE185B7473CB0493EE58A39AA6
-E6D3BE6DC2BD00D4D7DBF7E5A1A8742B8BE0A067FE9903C4771C26FFA66BEA49
-412718CD449ADF85C7AF7D4AD7EFC5D1182BFE3FA99F2E5167231BEA5969EE84
-310C5FC47C911CB8BB95ED58BE1E482B40CEF32E9B25BA1BBA396D7AB322028D
-66EC4DA001741D4412B554239E82E46CDE723824C38259902F4ACF395BB3AD54
-B49642CED0FFB2CD57908194A24145687682317BDE902BC0259C4CD79CC402A4
-B13747951DC48D551D570CE5D37E96A05EDFB0B0FC7AEC7FEFEF7E03518895D6
-ACA21624CE3102DC11644486012393CD1B636F3570F74A43C42F01E0CA602381
-2078D1CDF6FFDE1BEC7FFA0AB0C8C06728224DB7319E182A82ECBC85D40F9FFE
-685999ACFE52AD5CF50B76BDE28CDC76A6908B415E214038EC58150038AC774F
-CD96B15A8457216DEAEF5E306C59ED46B3D048A510C2A2DC2CF211F3D8D95149
-28FFF8F4DA0B41FA58D9F9DED1E3EB18117178CD424FD533F442F369FD62BDF7
-F3086144A316A5F5CFD032AF54EF724B52B79AF8F397BE9900E9132F06C030E9
-3679615E6F5C5D31A39E924C0246FDA63EAF32D32C4C695318A8ADDB5764FF76
-20308ACCC29AA22494938C60F00CA86D5BCC84BEA46361501866F32BF3919C72
-8D188C4925DBE2531FBF68BB18E05D13ED2D41D776DBAA8CAE61F7053AFD8F88
-BA6E4947C0533C7889B3C922EDE668A83541403CAAF1BBE16EA4A915E2390287
-F5372EC1210172005DD7C87701AF94E0460992B8A97087BB028CECF737664C84
-1ECCDC8D5BA63B34F78F799DD961C901740A116B7DB5F47A4A81B658F5414725
-DC00BF4B812A120B7F9DFB8CDE639BAB256DD69FC7FC5F3890A8EB215728C33C
-B5D0A759C560D5B8A0D3B408E795E412F83328FDDFA92552E5D05BB5189356BB
-6CFA5B1CFE89C00E4F683A7B1E40B683C3477F43891A730E4445463CD7C60BCF
-6132ACBEC67A5252B122B7DC772B2AE58284D153C139D124B12AD4C96D611BEC
-DE75B99450C55C982A9F7A5D0AA9D63A9E24C2DC9DEB6DEE7A2ADD4919397E23
-0CCF22021788B091E01824C03DFB9955886C28FC6D47FB1AAE4277B2B34DD074
-D82E26C5FC4AF6440F12DCF508E510EDF3D8FAAA1000D71BE12F064C65149B4C
-83DBFD38905DAC2871CF6B657A17CA5E990D017B65383BAD2A537A2A9BA771E3
-28B68EDC8FE4B3A82989A6099E23938B47E35FEF91C8916ADA83C64534E264AE
-1B62919A3F1391F10CEF188DD769B6FABE3DCFE92F942797C346FC770C9496E0
-B3E029ACF7F51488B4A13E740E2100EACB1D52488133A2B44A696D3C45093E3F
-D13DE8B16042E4A83B45F1D9A88FC04E70FACD67AA862F6C8E17CB14309FB2D0
-55570939239FB717050D2F9A2CEA6F554CD483D4B372A1CC9636F2F3519D00A6
-F2FDA7D77E88DB8F391B00254A6E55A93ED906E9B934BA474965701C4C113ED0
-11A882B51BE7232FC3CBE36095F1481734035BD00261A45ED22E22DFF82B58D5
-00001512FC7278A2C04CAAC330A87DE0C675D9D1B7DE28F271AF3DC21CC447A6
-65E0370B728A3FFFF01C736D36204705F83C710ED5856F1DD88CD0E862E2E5E2
-B8521A9A77612037BCB90BD6E3FD370B3A2113A784F6ED66C138A4DFD36E8088
-EAE688AB914446E11274C1C30D53599237CEE22962266D8ACED01530F2D086FA
-E316365CE2C4D71B9B84DF09103D547739D0FE6903AC5D85E90CB3009C4C6C65
-124FB515F0485751CAC9B655990B7C99194FB157598FD3A90BBE61F86C3A206E
-32A249C308B06E9C15837561ECB0AE79952C897C047CF509916409D2B86B5DA6
-442E9224D7FFF1968D89076F27238B1438B9BB4BBD6D325331FA1ED160E606A4
-445276AA977713996CEBF378623C18FD2912B4B976CD1E15E479640CA40C1D2D
-C9A99BE56EA7D61AE00BB783B4EA7529F2337C33832A99864A46EE0411D76185
-126B9438C7C0440C5EE8A71611BF29E2064A37A2023C70E41C0494A3B61F5DE5
-458D930BE96340465296B6CC7FB8B96D98EB04F1B15ED244318D362C6244630E
-55882B234F98738A7D47E1A4E32341AED639DD70BE0292BC3219B87A17696A96
-ED3F4B5193BA0BE397009A2397CD8BF5CDB4DC2BA2BBED61196881579F61AF6B
-9D3EC04DC4FBE5DAB84117CF3BAC8D710A695086F7DA5C289BEDCE43DF3A1F3F
-C01B5D86B709AC8B6BCB7816F523EF75F238AAB4E89573EB6D20D3947D27E985
-FCD630E8BCC25E920E6A126330BE13408B8D22EBE2427A97C5E632D09F0A1DD3
-FE881979C93A586676B1C4B3C88D2F4AF379E51DC7CAC13344347A7063EFD845
-0A784C3350245E0ECC320040A53570CDC19FB69FCED5D3F5241F5D18D66FD3CE
-27D66FF0FCFA0A9C7076E8C6FEDB9942857AD4BE1FDA827BCFFD0E382C15BC1A
-7B476E9192B9E8DC95C1D22D988216DF3794755B3884D7013CD56B1C270358BF
-CF80BAEB2D968966A715B63C40B5C82E342A400223F18AC470896C7AFED625F2
-823AF4057213613F099991CE653B57D2F074903E8577CB16DB00B1797C936B70
-5CD1F3647AF43068D1B4C746152616614DE2F2BF2F377DA2B321C3C89EC01FF6
-9523F8210EC36DD78FC399E767371EB06EE2D38C351BC566981183DDCD9BA010
-58AD4A9AC600B74536CDAC5F5EE448AC2178280757F75DC2584356D9409C890F
-B68A5B59B5DDE1E052982238E0DE3E114FFB06DBB17AFFDA25F9AC39C476F484
-7153EEF61C29C8EA9B34AA5161DFAFFB669FE115E4A036517A2FBD7ED07BF059
-E7B82BBAE9FB4ED1EF6283C50C31198F36226755D3E22E6E7F6BE25BEE8C8FF3
-700D71BE25B7DCEEFCE426E92640C85F86B50140317B66CE4851FD94846F67DB
-1A17A9037785F8D713CC630AA25F0FC674641B2F7AE1540EC8D8EF880C4B34A3
-77FFD6256DE1ABDBA53747CDFC59BEA50611B41EEFA167EAE4AE2446EE7E155F
-206B2A29EF61A04BC957DEE0CD3F8F66D67327F376AAA4ED580C290D6ECD6FDB
-08AD3A4199D682E1351ED3B10EBB7A2B320A7DC8B4D9BCA029EC12812320633E
-DB7A1DD37B737633DD34FD4F9F796F76F86ED80AAA3F63BCE22EA6D41B21F0CB
-19405355CDABDC2FD59C99224BA24BAE05D2CEBF5401B5D011135B954671A1F0
-9BB55C7795FC6EE89DE1555E99F2A6EC6B8807B18BDF2D372041814636E1F695
-0E9CF606B460C7BB838A3C865723C270438FBA38ED2822B296C7734837F9D11F
-B10931A6508DDFAF696F41816B9067608E8BB2AB6ED4BA93B7F4E0EB45C02F06
-45F30E2A16728651499D26EDD06465FD1A3D3E25BB322CC1BEF8E86F407A35C3
-19366B5C5B36C49684B84C2589FB3F0E39FADBC2BCFB2E00F427FA294131F73E
-D5AEF4E779CB3AE30186FCEC25E901D362E20798B6062A1012F7D6CA1B0AF647
-C5E69873F3DC9675C8C97FD29FD4C9B027982FF47E62A6947AE7ACF9439C314B
-54D00B2506930D903A0AB423BC591E3A7D042613868A2B5AD2C3AF21A9944020
-45AD834181CAAD45293BED29C4ACB2F85BB07EFFCFF697F1E272BCBE6FB24D0F
-82A7CE7B986CEAE53FD4DB128EAE1AE5C622021E85F7036DAA213CCEB943D551
-66BA1C0FA934D29EFB332936EF6C29083A52EC8575A23819852B8CC66D8DE14A
-0899C6D4378EAA447284B65198E84BE4E0B1B81E6841529ADD2F09258618C155
-164B6B01F3DEF68BA8B598FC6C93677D03F3E472B0E28E41B758B88A0E57C078
-F32F4BB4B46632DA67F27312E84E30AB1C22063AF3BF6E39AE66340D936E02AA
-8973B46E12B993C551BBB162A1680A3131D5AB45BB4D7590F220CCD982A2BB6C
-E9D3A5C43B97CB06A3E56A3AC95C16FE432CEF81A302FC359AEE0646DB549957
-411ADFA396427F5E4C59D67B824A2F1F1BE10177432B22B42B41674215A6D620
-D6F267E4FE3E5589C6173B93CD3E8CDA18A503378213665391E36BA38F85340A
-108DE72EE423222BDFA5F04464300BFE163185890B04167303698F1BCAF85E2D
-114C3DBB20B07C56ED0ADDA202E9E3A67C2DF9E4846677CED6443DC3F371ABAA
-7FB0C5ACD27AE784F48AB59ACD34CEDAE846369D85E4DCC902EACE5367BDCA11
-70FC38F708E393FA3ED5E3B444132AF63B4A88EDE13C7D6E55DDC59406CE69FA
-8BBEAEAE3BCC02C49C1636D7A0EFB5C9387EA70FCBB27F9B5775E1CBC3922FD4
-8042D2B59986FE8841399D2E4D6C358F39DB164DC62825D3D74AA55B3906A74B
-EE3B065376ADE2A20C3C67C3186E12627EA7EB726BADD821C03FF5D4CDE3E800
-09D9C6454DB6A42F68ED8A9BC160BD9D54FE5FF381A058E611463F6D4BC69525
-A7CEB4B78954256A63941AE41183756010123CA696139A2D8FD3E5BC892E764C
-9F9D7FB8401158DF1B2112772C78B1BB24F67B0B8B1C4FE9F592D43D8B639943
-3CC26AAC5CE09363BFE76CFA0C6A44EFF885F0869BBEDFF882E4700C89AA96E6
-29749A7902B324043BE77FCC6D764FF3B76223AAEC915988E21745C8C23C2C9D
-FEDB693E7E4ABB4558C78596B8C8DE9625341EC5FD02A1DBC00822E8E790B1F4
-52012004D58414C8A292CCB8F5DDC879AA8E01AFA651C54CC77411D4480E1738
-63A3E43BE6588088684C8B84E3424AF586B9FB204352FC86C3ECA65F5A838634
-6B8E3AF9109B233F06BCE4A6CBF6C99E3E9AF5540C534781D3CD0B8F9F8AE465
-6CFA77AE02DFE91D0F9B98B3B7087A4CA5757654ECDB9B037BE8C66BFCBC865A
-EA813071AD7281D34A963A193935CD1050219A8EC7270675C9A1017AA338E568
-AA1672286A51ABA92F03AA96EBBF985B985DA3794EFC88EA69C93A46B69B3E3A
-98DDFA0040F77F11D9040A933E9A0DA010EB597F57FECDAB89FCD35971E59D12
-3A722E238B9A28FB9578853EACCA3AAE8102269243A758AC4C53B84A0863D881
-51D31E04A2D2A92B6131F5E0D3760FEB635C2ECD93319D2DCCED90AAF1E841A8
-48A5F38F8922CCEC7A971EC31D74B6AAF440E03D8922492485CAC2DEDB233154
-BC40909995C15573AF4C5A20870698ED9B74C02278B21C93948096DED79F814E
-5B7DF52E1F1CF73313161C6BFCABBDB40E94D7D60B35CA037E1063F62A46309A
-E8E335146F3E0148DCF5B33F67A14391767B33E34A02823C785750B635A213CD
-A84771D4B6D61FF7D65CFF7D990C9A6DCFF7D11F74C8778F3DB4B6E1A80DDFFC
-6087A122F11B607F3ED84CFB0BBA596DC7E06C34DCE7EF1486DE9B9B6B1F97EB
-82473DF29503E61FF937211780F33F85E1CB1D6AEDA5499D703CE7597A9D2034
-82B65AB54104066CB375EA62515045AC6F240566D15280071458DEF3F7C4CA9B
-7E13419B21607717611A61E969B53318F5CAC01FF9180E283D50534F933E1FB2
-4DA052C2F8577C613F4FA2E92F57FC3A1BE9E6F8BD4C122B038F72DDA904ABA7
-DD62A56AD97F9545E20F8151D778FBDF179A518CDB3EE2A57C102867738611F7
-7CC5DB44C2F1942457C6E7842245F068A714336606525F36221096590567E22B
-D1D2FDAC84D7E53E1263EB26514C72D22BBCDF3E290BCEAF0B61EC25EFFB88D1
-B983766CE346948965DE7E4DA2109C8CE13D2E0925B5D230087C9006952BC852
-9D5D577B60C7D083CD941EA249E7C4EA58A24CEAEA0533BE38D63A8C44722077
-16C163243B757B810D13CD45CB407AC574478A6874FDA05BDBB5908723442FF9
-FEEDF696E434669FA2961D36229DD64E434D0C016C2E48A399275CBA2D4A7B17
-8630115B762A02EBE280E76C107A3F52BA07E1C02367637FC439AA0F36E5A309
-A88ECBCC43621E13BA9D1412CF1DFD815B9090D4B5D5DF8EE00FD1A31DF4A6D3
-5DBED7C09E06A65DA835A8EF9A54E823AEBA6049B33A52AB7610FDEBACCA7CA7
-28D40B5BB9F19D3B910DC51B09D4F8BDB5027EED2BC79D9149DFEC627C8EB277
-E1B5BFB31D2D252BB664807A4127DF66E9C8A98235AEF263CE37E9398AF814F1
-BAE29A162061EF2BD03DAA16B16268A3334D8B92D700CFBDAD4D965C96DE39D0
-9268AA6A9D11C403FF3D170B2BFBEE5A8F805499F825AE5440B859760CB05D55
-493F024DD03785853984509B1AC437D4F20012FBC2BED50C5B3AA3326E3FB0C1
-2CA9B111F04931D5300CD276C936CCB7730A2031C58AC9F30F062741319094BD
-75EE0A75646A6A2CEA8730904E32315A708DDDE348AA7DC050C68491CCABFEA7
-72026223026934AFD00C7877A0FBE93F11CD49142CCCFCCE2F0FD18410E817B7
-D451CD0D799A2F5137CDC3727070FF522735A1A174DBBED299B5AF2A9502A8B7
-C399AE97658C675017826A329017E25367459C46CAC71CE7917D401F742AC058
-95687876C85705AA9DD6853DA74ACF0E00596ED1CC1B1513579EFECABC3FDD90
-5BFEE49316888B05C580263D86DCBC18F78BE58BED0DD64E455F7A88385F7883
-70DF1402A6DDB36FF93EDBC5A36062917D52633BBF165CA292A8558822C220E9
-11629D5B7FC13D0D0F9FFDD40815AE1203C2F58436C23A055C80B184D1A01287
-4ED651C118B560FBB1462689A3C340976600893B63ECDF14E5056F531C8CDFCE
-48341ADDBDA17522C0B9951D32D80DE0D4568B532722081FBD06A95BC8C86E80
-1B5CE483043CAB15F9EBF09B18678EEAA6D25A7AD6B224B84D7E16DC9EA927DB
-AD16D1487E2B861D70CEA5C81B424349BEBBFBBAE84A3461EA886A7958E17FC5
-F69727B328E1D079D0F98BBA1EED665630DBF99D2D535CAF87726A74980BEB92
-75975C55AEA05A57AA96F8010ED8B1E85F7A508108AABCBD0D3FE7D67D2F830B
-63B9E6E6290EA1B283563BD930724C4745A11DA7F75383B5EA1976BAD60818FC
-E66643106D468CC0689093E39691F03FA614658EB837305BAD24888995B06979
-0F28AE16FB00B081CF2776E42F336213B31811CEB57F4DBFB5A1C5EF045A4264
-07ACD3AFEEEBA8DF985A5F937BBD43D9F5F7B313F368587D15460A273F4A2ACF
-32C94935960580FD51B177714C23991E4D9991621E99D96E03B3403DDA3885D7
-E0A4D1F9DBA54BEA9B3DC7ED21FA8ED18C3858C861F730FBCF2FD8750BBB35E2
-A4CF9B7A7B769EE6EDFC4CDE0072D466CA61E8743FC0E2AF50719527FC9CC3FC
-4F1AF130E9204972DD045FAD6A836030040E3E769786FF967E5430AADA9F5BA7
-F4B2A78618FE4F2A8AE138F2977C10FC6FC3B57059DA43CC971439DC43C170CB
-B47DF3A939F6A3F4344721D08C2939771BA61608DE96E7218C4F2BB449D83EEB
-2120A71E1B6FE49F2137BCE29399BF8FE3D77158798E2433642B5AF8FA4AC080
-24870E05E5351C98EC7A0F1F15F0309DFD3F2DA976172989DC0BD3FF32627A33
-88CC2F25E30DDBB5F7595073E3B69967A4E7B138BE7EEEC8F6EE0A363053648F
-C3FD2C9B584308005BC660FFBEC8E370CCBCC28F78FF2908EF74AB735D414699
-5410A026150D7D4C18539DA13D7A28F1D04A27B9ADC533F7217829B71C954BB3
-122D0E9CA05EA13F8AD8777E1B6FAA948683AB2B4AD510352D8EA23FA6E6AAF9
-D06CBB874DCB0F77CCA88D280CAD0E97D4661A5BAC20C0612564AEF2DDEA37AD
-1E9E2703B9AFB83AF1CC4229A8A9CB50026068B46856DE04A0C94EBA584003EC
-966C471A340F061C15933AE02AAC4571C562960F2014B41E15F456584E2E188C
-F6E3ED15A19F324CC17B715A7A1926B2A6DE01329C99CB040B3F5A37BE1E5EF5
-2EA5E374D6AD7D0769FAC3D34A521B8EA85AC2A5422F4C309798AA803070DE46
-B86141D056068BA00A345E1408CB582CE10DB970351BF2F355F7D32DE5BAA3B8
-06F04CBA2C7DEA2A8E3FCA193A078CA52655F9146DA4303A228D773B02B4631A
-70FADA4F9548A5ACE58F7C907263ACF724FDE1E82F47A11AAE4C00ED75FAA7A0
-89858BABA114B41B3289F1A4BBC9BA4EAA02020813423C6BFA45C6C9D95C8193
-02CA0FF7B2FB0A1F5168DFDB385713F3D9F2715830F9764BC016C3CA5CAABBB1
-B704F3D7301FE8A961C8103361BCB3B40969A96A22F2744737B6ADA2ABDCAAB5
-1F3EAD524A3DFDE199A9D06E87729C520D312C1CA59B5878AFD9A5CBEFA907EE
-492576ECD05E6F51256174C41DD8A9F4646010609912BFA641FDD77A1966AB6D
-4C723A8A3BFA55C6ABB0F69D0C2F1C30BBA7E7BFE217F5B6E31CB6589D4E97F0
-FF3B9E6218181FCE7A0439A254543BBDA069014A70885960956AC81E3A450BF7
-53A59F124BA02A72D4201B46465762AE579C143F5EA943BC3D93173DC27FE678
-1F408F4EEEB177304984121508E970866BA4F6888D22D653F60143CD90AE67D4
-FD4054EF70162D5252D3370FCE13C0E0366E5614D65747A414AA42702CC7FA54
-C36B6E9143DF0835D5414F9EAFE6668B6EC7E772702918855E3969AAFC89C3F4
-29239EE9953CFF5848E8BC04FA9702E8E5344313F37C48B0B9E9315093018474
-637469D1850AF738517482692898987656F0CA14C3091CCD080C3FAEB02A0A73
-82CC4DA2E60AFAA299ABF5679FD5806D20B5A1BD85CB7E93389B6E63F8B365F0
-38573DD0CACCEE2EB713411057EA6CC5E0F4517395CED9165CAC183B8536EB1D
-B94621BF6ABE1CF0128FBE95E7051FEC47481AB391D7023340B66A1FF8CA4200
-E06D3E7121359BE9C63E04F1B32597D4C41108AD8C868A26CED06D7241C07527
-40D33023AFD4D3C264C9A583E3D5AFB9D3CAB0EB5BEAFD4F012E5F6BED0E55F5
-593D1E696C3F6606DDF2960A81561DF466A10406B296F686ECFAF51A5D017406
-DEC73D06EF5CA783EF3B4D03A8E4E37393B9356AEA788AEC5BDC16708D470F22
-4B4DA6A85F390D0B90906E81F46FC2A39852503B591051ABDDA88392BBE2D186
-3D1DD279A566B0A23FA937AF106FAD4B1AE6170DEAAB519F7CB6EDC352DA91D6
-30A30B70E3D4886C1BC6EACA9203FC21515D3706A115F9E2D430957ABDB077F6
-2AE94C9197A4B3BE6236392E96BE433C063AFBEE39B3EDCFF02D790F453DD372
-0065B24210F8589E864535CC3E6BC1E9967DEE1346272CD0116F4A56DDA67B81
-2ABE3826019A727100AC5CB358BF9DD26C7E2DC9F29B5F9FC9763FD5CA81621E
-BEFADFCC04846FAB053887E1566C239DAE3505E23104F6088B94083ACA1DA43C
-41992047DCC923D1C206816DFC3419E7902342BBBCE2005D9CB0E1785203CCA3
-07A545E26BD84AFD80083BD58F5D217EA190565DDC653124E43CC8C2827DBDE4
-B5217931BEAE4A6873CE50978247CD2E48BA8668B4B36B3A37A1EF08D3D19FBD
-32709F9F31EA4311F1DF393EBF1B876B3BF5047FFFFA7240CD41FE769318DC58
-1DF16A3A8ACCA24EB905AD1058335C893F420A41CFD8E56875A2144EEF25894C
-FE6A227FB6A856A043F9C4DC7E77A5762EB8C9F46E2E46CB9CC7260F893127BA
-D5D1A781DE7DED5CD7325BCC0AF99CE303B72BD83DF1D08FF4AEC50B15B50AD0
-A7757BE5D0A1AA1C50B78934FD24F518B4A17B62D27FFCD767F20254439ECD62
-3A247A5CB3C050DE0426D0D220CB3A98901056EC90C38EC7FC2D3BE08B6DEE5B
-F6F62177B3B5D080AE1E4D21FFEA92C87604B50FB4A16FD4EB3D28F08D1E330F
-64A83864CE1EE1F55428D7CD5E5D645EF4998D1EF6041624DA46BEBFA14A32C8
-5EF6D4FA176DADD6CB90E3340FE60B1FABAC2FD6EB3EEF4BFE923B6FE66ECCA9
-F63F813C9B37408BF89A94F0450F9F8DE6D671C8A95977735DDDDC275659A458
-B4D9F805909BB97DB7532ACCB1946B6D4CE2D878D910610AE6FBFAC6A1146838
-60E05FA48E463A52AB93D657FB35CDDD64606B44A4E6A360D036636903BE101D
-8BBAEA722F21543D9EC9A2F943AEFAFA93060C97CFB56AD6995172915DA2FDE0
-EC80C3E08287AAD52E4E2EF7FD257934F03461C4D00C7E1C686108E817532714
-6818FAF4BD40810EC9B8DFCBD0D9C2409ACBA8AB5DC8AC3E2A3B822E9091FDE9
-86836156CC7BF4390ED2742767D048C6D982898570AD7EFCF386EEDB5EC7CEB4
-3E00657F9990B2099F91F540943D1ADD9B6B0DB429D9FC57477BB7F7165C54EF
-BAB5188388BC8D2D54BD81F52005055408B4CBF5E590A043CF8142417787F6F3
-B76ACAC3F565AF3FDCE3366DABD0CF85F83061ADDD5E1BCFCE0CA486361D09DF
-B195F399E4216820861A2503D829A5328AFD24E7B7DDB9B23EB675DD9DBFA945
-9EFD9BCDBB36D37438F25307E99C683271CC4EB434A059EF26AFCB95176B4823
-811F93B036E708F3E6F2F2505BB0093ACBDF045A2262E81F1684E64A128E5A4B
-B499F2A1482406E9BBD4C3DCB546B679C676065972C80A18E82E5BA47539A496
-C7BE08E3C8A3A796CEC7D30A333EC870DA3A26C671D2BF55A87F696266CA0639
-AF8DB19068AF32943E8CC4158AB3528FDA63DE7B58E7E4532D7A0C62FA37ACAE
-1DC66844CB3D1C42C168713F2A6584B9DA5A11602B4AA1BA34B9494D7E18CE18
-6CA0A0FE80B9C564234DDD4627DEED8E9A0367A8262AFADFC10573D9D0686F0E
-AF8B7D849A8E826A2A0C14AB4807ECC7EBECEF411F0FB3A528BD2F8B109A722A
-6DA8AAFDE31164AFA47C68738B6B0ADF57D9710CEBDDD1D2DC13FC6F8378F8F2
-D269B9260669412AB6013B64CDFF68B20D0EE77956AC102285E6197C5ED7D001
-A2D6CA95BD572B8307053D3213763B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX7
-%!PS-AdobeFont-1.1: CMBX7 1.0
-%%CreationDate: 1991 Aug 20 16:35:49
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 34 /quotedblright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 51 /three put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 89 /Y put
-dup 90 /Z put
-dup 92 /quotedblleft put
-dup 94 /circumflex put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-55 -250 1289 751}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
-B1805DA88AE375A04F3C90C160DE16F890E93B13B46BB2F4971D900BB550E53F
-EC6248832A83CF441B4851445885479839AFAA2903A27676E5FDBCD653467C5B
-6757DA1B722133018873A10B4FD9D710BBD9BE518D989B67DD4533F8702D640E
-B84C3CC2607748FBD7C4BC6DA98537C7A83BCDCD871BC342E318F22902994EA5
-8F5F698960BF55B6DD1ADBAA57D96E80D7C28E06447C5E0131B450234C39D332
-D6EBE6E76DD503B658866DF4DB6774597338B1DB90AC6C0ABAEBA29CE9656E89
-167D88958F3BF262133689AD41A5B9A90DF2838A221C5067B73066612A0FAD18
-6A3670B2A69D1731367C8335600294ABC365F383F983A8AB1E37C1C1804893F7
-DBF122DA9C3843D1715ACBEF92F28AECE850981251D1D25F13B0DE4320D26157
-D14147622A29E7E7F6A037AF34A0197D57AB2A9F7129001F7F636F3B07E0F12F
-D409D880B878EC8C911E3B1F24AE299AC56227FB9D6ECDDDC5F8DFCD18D8D0B1
-4BF4C36A2E36F69E7291A1A0F738ED27D586BAAE8C04E00D5B3C88316AD3374C
-5164218F5588EEDBF966055C55E9781D75B1D7B9C1A2FD2682E7CB88FA9C6889
-8C5510BD1964BB505CABF99F91C7110745DFBC4B8A2A15295320EAF27A97ED84
-C6E59474C2832859A5E2536E33893D90929D6D2585C73A6F3D305D728BD9838C
-EC5FFFE4A313350D2D25BCA2B4A67B628DF5A11CEA76A9FDC74DC5D2879999B0
-4BF7CFC2FC4FD0995E6E201353E5B9472105BFA252E2CCE8D95B6A5389B34FC2
-E61C6F4946A12563C86E60D3802FCA4F1C330C0EA48A47D633DCC16CB4C75800
-338C14F18731B6968385634D63ABCE86699A670F904A77946A019D30CDEC9379
-659165D57232605BC12B7E1E162E384AF1F4E462A05BFD9EAE7595658C3E14F6
-F654AF27CABC7D7A1E561EFDA8AA8590CC1F8AAD0323B30DA116954E2617B11B
-55078C2F1CB86A5202E7340AB106B2674DB4FE472D089987AAA2A967B088601C
-211C281185CC8DBBBE35146A7B294EAA65D01C66C0CBBBE2812372489DC02D28
-52B9CFFADBE226B4E32EAABCDC7BF251950730153586E69544A1F83AA1DE2C81
-24AA851DEAAFF6E9E835DF4D1F4F6D352503244EDD0868AC7234DB283B2931CC
-E7F03AB5DE14CE5F0D3B1C5EE41A9CC9F137C0B631D764AE9329809094B24B4F
-B07FBEC80CEB25FEDD10470BB25A09D4E208D12B36419E68F74ACD8F639C7593
-F64BF2510423DB77600E791827B7D34B64AA94AD04E9A9F6630CD3971CC391EB
-4B1C67F2DF1C883E101EF2433670E6C4BFD1472F935461F9B9574C61511D8606
-9D29CB8E5CB77EC885E05BF095603F1E0A4E4F7CABEFA2E50243751455E09D36
-9826D4BABD9157F7A0ECF4FCD13EC591CDB10C536E4F39EB583244ED733A46E9
-700B52E2C2786687608CFAB0507F3397FBCBA83F29A2D75962CEEDBD90C04F0E
-035CAD0AE0041F4492F1EE87B77D8DD879A94E803ACD2385B5B7273068DCD050
-FB4DC1B0070ECE76F1F7EEB57665977B166FA42EB5EA6BFE038D777E18060FEF
-405EF2A734F0D3D6459B7D4876E39CCA3B74520BFC85C7061A0883675E89471E
-4B46AF1E34F9F3580D03B130913B079E15B3F354CC5C07459D7A91B035A3E501
-0A2ABE4AFAE104608E1CF9C92A15F10ADEF57A50750E33A27EBBA6B6650DAF5B
-CF26B40F15625402B611B2620F024FCC36684AE5056F2EB7FF0C2D3B728DEA4E
-48CA52A44D59D4BC7D776DB1BF54089011FFC70FBF6BBEC2C049A01688B8FDE8
-2E40A5A65A7186A3ECBF7613D01A05FDCEFD30C9A275FEE9153AEEEDF3E1A54B
-623470D18656B0A6093A77114DE346587B39293E5C2D8380DCB61C159BF607F0
-D5227054B1B6082B2E07A0C99323B62FBBD79C2F6393E5CD1BD320A270A4FD77
-D26E0378C95042B487D32CCA7221163A678DDEE821CECB098A74DA45C4AEB9AD
-7C22576FF1E14BC94F44F9EA09C59B2B10C644CEC05774C0124146FF2FAA04BC
-6BFD57350B3792D7888B4EA6B9D8F9F9A529236E6CA760B2090C4AA9F88B09A6
-DDA55675082ECD05010EE74C35FB934134BF5DFA7C10A82A3A9BCC75B45DB8D4
-9CECEA849A680AC90E1AB4A543DE60F41E3F79CD934A633F27BCE5C6A626748F
-314B9F5EA5E1762563EC4DDDCE0BE4085D26CC4F9CBFC3BF901DCECDCFD0E557
-BE5744532459F667C4EE5BBE3E901B7786D9C527883ADAFDC29AD7EF03AA1C5E
-FDE67CE5B323BB912C362C4DFEA655ED5D9ABADD2A688E9E5D05301A7222F963
-840D56CA25B3AFB14FCDA10FF49AFE3A01DD7AF7AADEEF5463878678AD09058F
-DBE57209A5CA982A6F31244D3BF7905104A6664489190E8BAD3A393B39EE08AD
-0DD12D058EEA2BA7E79C0B6E320B1DD7D83CE80D222D8A01F6AEFD94B746A6E9
-BC6729385FAACE882E904D74EF72721552A8AA44A39C05C06E9F2EBCF55518A6
-6CC8432AF4F1D11338D0C332559DAD2A85E62379FAE3E7C18BFF9481A9FCFBA7
-7F53E1EC1C019E333F47B2B3551955DDFA1284193FFDE474263711C5ADE3523A
-14AE65FFCF4A2CB16849D5D409E290ACBDF65D0305DD3AD2D7973287184ACBEA
-1151D98E1BF146B42BDDAC4BB28D1C8B246F55F8EAEF0AEA0AFE49AF4B1B98D7
-8FC49DF5BC812AED4E81C7A4CFE3565D009894747E480BCAB13F5F8214D6E734
-DEE09B30848B18B8E7AFCD3B0EE132F237207E27457256DA12E1D5D4334DCB6F
-F3EEDF302185DA039C02332DBF73F235982FBDE05EC6B46247394BB32708419C
-16BF3BF846EAE3F8C28EA07C6AA97D767F2D773402EDA4902A682DD8A198B75E
-0768CBE9DEFE3C18C619238A05021B4D6E9847E5E7D249DFA13A08A3ECCD1870
-54B05F45279377ACC6D733F6F02083B7E466D2BD493935D29A1BBAA0A61E11A0
-EE822B79C6AFC22F0673FC142C90A4BFE2BECC0031330653AA9F29ECCF31ABBC
-ED5D631200EBEFBECFCE97A7C68635D339F74F78895ABAF5287169428F599632
-E8330900A00C3252B34DA8216BFFAF0D37C235C5CF86A367E32D92DFBCFFBFEE
-6E8E1E6640955E98C0314175A9353F64FD00715D06AB62CEE84DE13E1A8D2085
-0F15E911E4E1CDB63034EC0DC8898A4DA5B141E084307FD5D906501CD09BF37E
-48AA7FB22E13E7BB8FB42014A9F3B5CBD859BC098CD23132C0D84A734AA2613C
-0DF2EA41166A505C725DB1C723E0AFCE7151DB888567ADFDB1633D0C80919F71
-8CED38FF8355738B6E9819D6DBFE4F0AB47342B50A2C981303D34543EB0D5BE1
-244FE03B8B47C2CFC5686DE39533E2E85D080D30E0BACD7A0B978BB2C593386B
-AA7AE9F9B9D02661963D572878EE92AEC470624A5D43569508D859DBBF2A0444
-9751A0B9B22487E9F59961768A03F0C01D520C30A98BC73B385FF7E7990B6D06
-D9F1187D60B43E98C6B32CA1E86AE3108F2F22957C508100A27903C482B190A8
-6C5EED0EAAFC07DFEE76AAF9F7F70BC9A7A5030A65264A4E1DF358E0A4AED12C
-816B2809DB119E4138C69EEB4F5ECA8482A6003CB9B7929B9690C7E890A47FC3
-B58E7EFAA01DB490B856D4501B02494A9420F36ADC00043522E73A15A7DF0CA6
-F65480DFCE5E7AB94E4C1F1C94311DB5CE720218FA6F2E1BE38F684F66D5738D
-096A6FBDEB758A1CF8F462E2A9F955EEABC0586CB9341080EB9F570BCAEF8971
-59119BFC9B40F70859065E3C8A164F87284C91DFE624FA26A5F17EC4591EB9F0
-005E39B925110986A738E4ECCF77F9823F6B762EFBEB2ACD7E6A3E00B1D7CA01
-BDB371B4496A63560C5941F8414F65DE0A02ED7C96517FE9B57C8EA71186C4DB
-DCC1574A49216BDD6FDA823AF322C73588A391444A50153C6147790F6D0E2BA3
-E38354655BFAD767DC70C809C0A6892AD4D60E8A8638E84CF40596FB3A70299C
-61AB6C2102DEC9C32565C82A8482F9E75BA965965BAEE6F491DCCB42BFC29500
-DD0B698A298C66111E0504C21A46414C849A9BF3EC9D2FD649223C03BED33877
-A11C27471D9BF306552984717267F112E292DE72170917B17F6B39643AAA1537
-560335A18ADF293AC7720A598AE6C3920EA7BCC525543A24BC32DCF7780C829B
-568003A9B5AE7CD89A29611FC7D88FAAD8A7F9F2E3BF39D34AA05E5EB910CB43
-3BBCB04C034E7ED64696E0535C4A62F56B4204DB762B12F5D7AD3C1F88CD3087
-8DFAD79DF65C71260FE69971AB94A1DD7D3050BA1C91086B17F808181F29E9B5
-028BBCAAACE4C84AEB2E0C5BAD73CA275B386E92250D8C5E6FBECB93F181A5F5
-D8D0BFE8BC8EC2605827C45A8C5D78E00695D25BC780BC98AF78C71658FB8B86
-070ACD29BB8F4F12D7DB518C9C05B0433F9A908528C4BDC7C3C026C9B46B0154
-74445822DA79CD04D8FDA875885ACFB0338223EB7102D657119F57A7AA441F75
-6D1A11E189C14054A2C7D42B453AF8759A28BA172EF836A6753F864805C657D7
-04D1220D0518BE7DF59019FD7448829A9E919E7C2C557EF914C3528AEBFDEE83
-A9B29D28564294E68FEC0D7CA91E40097732C35FAD349F293CC9FE62F5BD890F
-5D432D351F67FD13B2A485ED880833745ED8D7DF54B6917961035BDEFD37F813
-65CB7FB7F78A5230B8DD8E5B10A770B80638AAC3839101BC5ED86A4F1A9BB112
-CACE57B43A1A4619254591CB8E9715050BF7B79972328D23490B70720465A3D2
-45B9EDCFB856CE5EC5A2E7F5D4894B085163C7F2FA8DB663EF80715F982479A8
-7ACB24CFF9A28D7BAA4CDC360AF5B235CB1202180AE8633BE32AD359B14E77B7
-D6201980A91D70BE7AFFBF786FE734F4A1CA2A7C717378DB3E17DB2CA241994B
-CD5C0687358166BD3A040CC4DEAC9BB59989FAB0883802F0C181842ED3C37822
-0DDE3D7DE5539F23585E881086D0AF4FE088EABB37ED000E1907135776634479
-CA2455126CF07CE8E785D4A0D2BD8ADF6616E633214E85C7AFC06C47DAF31612
-84BF89C67EDE466A9C36E2592EAD0CD6F69B9EC0CB2083A86AB792469B5F1C18
-FE31069EC3CE3373C02A29D49D630AA44E1B1F79783962F8C66E57C157994DBA
-2F1C052CDFC819171F16EE9897F06B7FEA82B6EA55F9CEC8ECA702D831C08C34
-408870FD7E6AC746D27D9C72C2FBC9A04797F1EEF221E2772609E69409A564EF
-C31315EA7C80E28BF099D06AEB9F3279A1DE121CC02B42897EDDA3FD8A4D339B
-461E06F08E2346CCA53F823044959D4E42785F4E07C1632722FA9234AEC21B07
-72F66E0035A6ED9F5AE725FB226D7A11112460848137E4A851EF81E4185C2BF5
-025E257FF6D23885ECE611BAA67995845E292620C31F2B81BF7EBE6D9869EB4B
-0F0F14107E99B57139D67F67F32C7CF402EF49052EEE2EA5D1EFD207C2A61815
-62392F93D3092D5C58D2A085B3D23A356A6F5CABD6CC31DC96F3D107F6B71DA0
-3FCAB827EB7B854D7D0AAB8A2C151B60B0DA7C6B1AC3C0B3B5D0A891CFB0EFE8
-872836BCAC8951479863B1346768BF464F77997203BB869CEA66AA93B8217360
-663D7AB83532D0F6941167BC340F48F9369E5798439DAE1176A8FF6189221678
-D6D4BCA2A36663C824623FAEEAB3662829D7824767E3D2D43BB500B9E9E929FA
-47ED8D6932049E402C9428839F7AA69AA4BB870DA07682DD85AB6B117E2999D4
-B3F4B3B7C42FE796D73F0AC74F6514BE5647129789A6F1C2F2998E49DD681C08
-2FDD79A19368D04BBC2EA7DB7E1EFF2EE711326999222863598FA12DD43CD357
-1597C8640B7509D35FBB70702A33E0F50C5035A902C4790166CC8B7BBD87BF5D
-95088420D5614561E03E1F63579AC6B6E9A98C90CF48BD67BED3C3911A135327
-F1F4203405D78AC22BAC926D8424B0245027AA5E33E263D38024123ACA595928
-6879CB22FD9523D5BA5680DBB053187B4B0A56CB02B6F59C76656E4ED1572602
-D3817887286B86F5C39904D2CDAB04EB419F1C60DACA09B5F4CB0D7C0D1D46F1
-9B8054DD492D7B8EC83E84C18F31E4F11119388A7EF4DA63F218295483C6E0DB
-C2EE15F792338FA28B0AE65655509BEF69D47138FD9C42E491FD30EA57716088
-EC8FB92BABDF5469E2915A3B4AD5462C4A16157FDA7D25626454FE1C9C42551B
-ACD615F6BBB8096C952AF34A133AD853E3DA7BC646F75DF3CFD324A6BF1E65B4
-3ADBA5BB8941152EAF57376ACC944DC686D6D4170B787F2B08ADA80A396CF890
-DCE5C494252DF0556787F5B42AE68B82DC904393BEB4D68847748F8F97CB6933
-6B8C49553F6E031B8B5CF0AD3348AB29C711A44D24CD8E862E2582207F234B22
-6D2EDCDFC51B9FF26D9A7126092081EF9E1DE73BD92529961A726902B2DA2382
-9403248240174BAB2A2F7E57522248338AB8ED7A51C6B1B4D85575368B869145
-66698E6EDBF15BBC4DB60C2134DAD1745F1161246882C22F493545482B872F20
-C8DD2746D46FE66E3DB5878101C56DBE7D3075779B5F6616F01CFBCBAEFF376A
-428255AFA67A60C4F2C5257CE451A7B800CE3B41C5C0F88E45701AEF55A819E3
-F720F3BBA579163DBD50B20CDAF057AE58D49545FB101E8D9CB6E927E82C9FE7
-63A9B4AE81E60F4BB9401FEF4515D14EA8DB8652A4B0EDC06BC30CC2D4579A44
-A8BFFDC164D1AEC0952CCE2721CF2F8FE30EC9B528B2F08B6375349CA845D15B
-A6FA0FC13CC3AAEF7E57FA668982945551BF738AF657F8FC57E9DE685E6827D7
-DD992F131A3305B7570F9D9BF9632C374BD2BA0DCD2119A879279DFF4846B76C
-B702FBDFBF8B8DD82A564E5E1DC485F254CB8754084E54F44EAF8A7CBFA60CE2
-0CB45858F261F849AFF1A4894E7996C882EA8D6E767365198556C06A9878AF2A
-291D2D5EF1651A9AFED1A05C1523A4716A2DC7DCD9F37F87975B407E8463B0DD
-F4F1F04E3D92B95BFFB5F753937C2665CB455FDADA4CBF59E4B901D7E26F891F
-45363612F740E74B046935829A9224F4D3662934BAFE9994DEA5E778C8931F32
-31A908F2E6484D29357B79138B12B1A17358B5823C3085E42647E743E5BF2249
-425B9DFFEB1EBF290D90361F21F7CE706BCB8D8367130B5EE9F99AEEE5174CA6
-A20BE4BA04243CB808E90FCBE39470F539829F3E7835FD77C2579CCD4740C8B7
-D6CDF0B808FAD7B83169AD6FAB56FB83935E2D5510D8AC1308CE176DF832AFE9
-F93220286B1E5CFD8203FEECA246805C6423281B90F084B8F8031E4BD512C7CD
-76D83BE165FAA68B9006003A6739919B2B918FEF1ACBE04280114513A07A03A6
-73CF7140C382D4FC3E375A8C1BD433D9A5565F611E20FE2E72301DBB61010AA0
-594CAF5923DB274A918F07F445BE7615516F8B65173D21841E0684408D42C1D9
-AB1EC1D8EAD97DC0FF312333B1C46DE5FC57289F9CD73DBCC648F73843A42431
-E11BC173F8886DD14060A0A27A6CEBF33787A780C417AA175FAC78EC78D991CA
-C51641C0A556BCBF911A7A5BF328BE6E0DFE9AE1DF428140C0291B58E14B2A16
-62F77B66B99B32E784EAB51E3C4A72EEC40332C41241F24217E2317B2EA4D1F4
-B80014F64833C6CAA787F62D681F38B7B33339875DD835EF4BD5C82917697573
-BDA861CEAF4BFB3FC156D2183457689B9103353F45AAD1536BDB46551CBCCDAE
-83A6D844DA1AF22E697FBE4AC312F09BF17269859C48F9ACCB0546A1ADB97887
-9EBA1B44CAAC9B472EBE03CDB9B7420E51BDD599D0C50247ED46F112B4207377
-59D6EBD144AA3B8B30A5AAC117D288B3244E6C4B8CB148E238F5E1DDD0E18139
-75DC4B417172196C9EC0B6250FC1270C138C54782B56B82AB2A9CA9F7FDBB145
-395A2B66A91566CF9ED0049B0A7777D0E8224A73ADCBE246B5B1694D70CB093A
-DC7462A97B705FBB790D624BCA64872B318F265DE2AB9A66D45E5F1E51C56F6E
-BCCB696C2F577E727DFB2EF433F68AFD742B631705FDE521DD2024785CBEB985
-D511DADCFFD7B32E8EDC894C8B8A168397F7190D77B85932E42F3F605D2B0AF7
-47E27ACCEB38FD269F93FCA362CEC0522098391D8368AF79797A9625B4BE7E98
-ED53E03B3956D4AD256CB0834489F2A2773A2580D9ED2F9F0F32051F19EE3FD5
-A9D542B9611A77584C9BC77E92C88CD40CB063D6CC1580116CFE9ED2A05CBCD7
-95046E346664161C90FF82E8EF485702F975D92707B1FE8667500D0770C84E07
-5FD9D7CF6D18B0867D8CD059B3A0148B2F77D6D01C871B7D82EE65B17C2B58AF
-1BE6D871BAB085F710CDE2D5B34F4F49197F43BF14E094914940C34E7C27EA32
-CC47E9473BDEB71A35D89577601A680BA41890F6BBB13E1A06BE4655D4BFD9D6
-770EF9ED32A049B937B9317A760D7CDF99D4648BF22BF8FB025B5165F0E6DC0E
-8634A8CB4E545D2A1EE2460C3C482995A8029CD532661096BBAEA9D1CF2E60C2
-C7FF62EE04B05E0409809BC19AE9F95A5372F836AADC219F5D7368C903C30972
-87E0AC348B2B48834815907821CA2DB0ADE998D1A10784AB8F801513AE91480C
-E1DE763026F99BA5E1916C69D067D2D9960ADEC23F6B4B8B648A8CB21B239F53
-82EFC5C7BAF1D5F5B391EBD7E4B94B3CB8983F3D907A95914F1CB7A9DEFDB48F
-7876E8D58E4C02286EE961AA349F23F229CE23AEEA10A76E01107195ABC9F0E9
-E7454C2BB51D9A596F653772FB8B265B6015DFE56FD74B592BFF66E29AEFA129
-F801CD3E57E18CDFC0AD7D2903BE7267CE9D62616AA8ACBDAFA14B1E78CF182E
-9E6E86AD041D112996E72A8ED9AD8BFE86EC94041323293FBD4FC9EFA3BE8DB1
-9263AD39DC46954C1D882B89DFFEDD52DA79753BD4B0E22BAB7CE533D3D48BC6
-448A4EF9AC63F358997C73D51F75E15C05B8AFBC1EFF4ED82257AD8B4B9BEC7D
-5C821EEF63FED9F3656DEC0CC0862633F4FBB055CC8A52369888A5331CFDC014
-5578825D7C39C58374A2A43EDC424A1164192B23D48F1D69224B318F9B7B8D04
-EA6102128D55ECEC44143A9C47AA9D47FD782914FC0BD8DD697036D8DE0728F8
-1EB380DFD1A49B929E1691CDD18AA57ABD992977FFA34D410EEB15F48F716EC6
-1B3375942D366397917472F142AC175629FF5AD33F428C09098833D172E683FB
-BB7C5E809706B19528C894AC9926919F700333CDEEFAB4105F34AE4B56352C8E
-2F4B8D85EE57972D39275A29433D800911289AC98A046C3D26929C387DC3FC61
-330B1ABF2F8F5E16602AB62C2CFD7D893D3AFB2B48A31FFBCF145E49C90F93A3
-7011E5268F098AA5F4F2DEB7EB4BA0ED4670896C489BDD2BCE8757661682A4B2
-041E23FBED350ADA3C5F12A290F4960EA283CBD7067CDD0B66FA25C9FBD5B828
-11999386B1141BDA3C8EA3EC6563BD9206DFD8402C4569BC626EDC17B769F81B
-6A662AABF2D02FC4BE1E9B80354C5103BA67AB9D226A30AFAECE0873BD668734
-624780E0E4436F700646C7780272551AF201CDE43EF67B4165924D9D1B1D2F59
-8B4B3AF6AE3CCB83CD6A6CE87B818AF51A83FDC208DAF2F215E04B30D3C98C55
-DFC6870714BEE7BBD3E2D6A785C9DDEBFDEC579896F5CD651B47F1580D7C402A
-E43658097C1090BA58B149F6B4EB239DF1C1E2E272F12F0F5C7CB4E0FDA5CA64
-8EED629FED19D0BDE8B8E36B1AB1A75730549FDBC23F46528800583161C92313
-3D4E8F4C27F3DDE1BC900F45180B6760F9ED518AD47830E365370BCC91ED1BA4
-2D7062C66531359107320D0814FE03581CCD043F005184668DACAE59598886A0
-8EAAFEE8404BC00605E0B991372218F44C6EECB9B6E5543ECF7F5E6B34597D84
-33784562DEA3813A910EC618236D8EFCE9F003E17BED988A2E285AABF2185AD8
-1F201554C8A0F913BCAFF44A6B66F882161E0540AA6ACB55A30B7E5527BF6A15
-82CE26D1E2BFF5DDDC2DB4A6DEEC934D0C7A0F887EF1CF0FCFB020E15A494D88
-2F0B645B7489ADE40CAA609E4462A6AF34A4B87461819EBAD14FFC97345DBA91
-3C584672A037A9295570E0E69840801650186202DF5BD62E63C2532A6DAAC7C3
-4D8B774F622E084FE898B012500ABD7C8B7DBAE482C64464C44E497E060F86C1
-5E6C1826E9DA4E72694D8189DDC1443A08FDC86E5AA8A536D9FD58E9DA5E4164
-8762E8B16A17715FB9D7814C098A9E0CEB06473C27AE0B50D263EC567DCC7D29
-D16240A6ABC1C2384AD51A511C7C34B0A4859355159C74D4575CA07A52C36158
-DE8E0767503EB4C17E4A37966ACDE8E9E54A48603D2E6389934E44594E21EDF8
-4E29BCB99A32D7C9B6B1AE973167ACFC25D470CBBF4CB7DE6BF9A2251AFDFAAB
-A23465190121193AD7AB702E3DE6A9A44F016DBE101F56ACE64D9748E38D0764
-2257FC0802A0EBD5C9F20BC0B1166DEC516DDCBFC4B4D171C9A057E02E24508B
-FDA3FF814A6BAEDAC8A4567DB6C62A28EAF58B46A57873FA48A877A4F48CCF2C
-5EBEA58CA1C6EF69DC9BA9EE6F0D6F17AF224A51B999B1FE2A359EA317611B84
-86D973B71100E349CCD368B92381383E35907F868CB8E03BFFF7AD711B875552
-7AB30F3DCF80124970519A50DFBAD3B7AE6B7035287BCDF03766A4F96A01B463
-A72081CB766060F5E04D2825A810F22A8410E61599BB01C41887A9273200FAA0
-BFBF455C23FF89C0CE27E3517E98418CA63F4BF6C662E707FE19BC786AE61B09
-321AC4C866B11977D9AEAFC7C3EF28F10D55EBFD0FCF18FB23EF51DDFAFC5040
-0B21FAC68AB187615BF693DE34820F3332C67881ABA427B9AEBA31C4B8C32DAC
-363BFE7835DDA983F77A6083A90194DCEEA253691A465E1801C1ADDE0AE4ADFC
-49E89A8D42453A813ECBFD2F0BC5CE3B91E941DDCEBE420C590E7B1CD1066677
-2822513EDA68CE6195B738ABF24957073FC2DC672F03DA7DB86B67CC6CE5BEA0
-3DE3168CCB410D22F1B1F4107ACE598624012665AD1FCE5094B05D53D7B311A8
-9F29B91678FBDE3A6940F61961E7E0FEF2289C26810635AF390D5BD63E164C8F
-FBED6FC0E823D9824E46646F2E45ADC588FFE13260943EF33D20C50B083D84E3
-96124BB2F3196A5A08DAF7D1BB1C1FF14B5776D0B3F18C76FB50BE4C868BC914
-662A549DFFDE49004F5CE0135C78FB35FA8AD82337E1C079E02AFB7484B36945
-6371396D7187DA295AC942880FA9D99823C89C9184AF63800E4DF1B179F9FAC9
-78C89F3E121D70440091F2D9AD538D3442422EE500FBD2A05CFCDA62C439398C
-316D96995C1293CA127AA68082C1D72A6BB2A3D458A7EEF05691D5BFD9A97B3A
-E359629796B1C9D95CB92230314377CB4C1BE04D2B3F2D78A39E5A28D8DA33D6
-E493A40D4F85873763FEE46EC48B0A4FC44DA5BFB010C09167AAC2A7D91CF33F
-24C6737571E0112AF55ED408230DB1352ED4EA13CCD9B1F0F2C5B52B103C1ACF
-52BE1310C6C67C9CF01F4B5304C1317F2884AE39D2C844110B9EC35F2D6BD0F0
-D933071476E0840C35D1A1C2AFE7FEB68AFA018A8F9891654D6F2B96587C28C1
-F7FCFCC869F9FAC03DF69D9CD98D3C216CCCFC68B1E3A4D332296CFBBC77ECE7
-1A900BBD688938AABEE489FA21F3EF2CA37939A671225224D6B13BA3C224EA37
-2BFFC1EE652473BA0EDB6F415E1163B5E758023B867F7F9628EA61D9D89AE3E9
-755C6D7C210BE6AA09640242A7F929FD5FE127392CF889A295DFF83C27E3FDB1
-B2A55169AF3D6590A4B705FA54B0D762B710B8A18BEFACB2F6A959AECCC34F9B
-055B786282217114A08C7EC3DC0DF458D6017EE954F7A432F11B390348663D77
-769BDB3FF7EF653A0526FA6B7AA01DABB072274CD7B586A84FB9DFB811BBFE69
-4E13BC74CDBE0729F4072A60F1DC7853167C7D8C14C8CBCEDFED13DD48721EE3
-1E4A70884AAC386F218141BD9D6B7E5219D1F96FAD0B1E0AE1A46C31911BF361
-E0901CB0FDC7C359652EEBED18FFF38858262D7BAB129EC0486EAB500E0CC924
-F1F4B0712A638A16274ABF203BD35D9969B67BDAB2F0F1A204BD4607B18E8219
-17BF429CD76801E83E165B0AFC1327B7959DE41A2985AD2BAF5FE0BC4AC8D5DA
-CB053F1BC7F4606B93AA70B7E7ED919F49D6AD8011DE8C591AEDE4A217516F07
-C5321870B293BB58767353077BA76D950097B0D0073AD6CD5F6A3A746AB91CF8
-E0C2A2D411F76FF18C8FF9BC343979C23EAE63E7A81254ECF1BD614213FE97CA
-92B936938EA217ABE32202FCE7A683392C0C1371B1D9A5BFEAA15D924C98F69C
-9CF43E04690BD24D049E38877FDF8A7D9A43F5E1EE3EB145DA9A809F42A65AEA
-DC709E60A7DA59CA3C2A357073336AFC4702522BC3A080DEBB8FAFD7CBD35A90
-EF8E5DD9ED15E48F33530F7192DC8C9CA0A435DF7CAFD44105411AA85CB7EED0
-E0F15DBD3AB44B9615231DF87171626C83D7390BA0894567617A5E5242773524
-CE3E5A5CFC264D3CCEC985FE938AC7E8409F5812126C1CA28343EF437AC78CB9
-C78746BCF238EAD81A2C175F677FBEDABF62B71FF988858B85FE8AA22BE50634
-67F6C72E30A4453B32882F0B154C09AE5960312BB2FDAF200739ED0545811A49
-69E943000952B17D1A3B05C50067B4CD2D3B66972180FCD311CF14AAA31B4ED1
-B1F917F746FEAEE68922329E0870D69E8A483A9ED059EEE4390ED874AA1E3AD9
-BCD9CA57924779B50697A2C286ED0BFFE503FCEB0E4E9311F14F12D956B51FA0
-A242BC726B36926D9CA810E3C30FA04FA098D826AE5D482470A1E0D854021238
-F6251599F4BB54ED5BD5C4A2797E46FFAB5ACE6FFD54C16B8EB1C9AB5D5BAFE8
-1F7A4D7ABC6F881D1EBBE96C74CFF2B9E0BEDA4B8944C7F4C19DC82CD75760DD
-D2736A76FB48ACEA0C233D3F6A4A799E3063F397BA57D03EBB82D9EED85C3181
-C5E4BB6763D9A7F3E1116523454D7DBDF7DF7C431F79E169F66752C897863394
-82E708AAA1B2CAD022FFD2C739F3E1DEA199C91CF2A68B58CF6E1438831484D4
-ADDFFCFD1C9E0EFAD7091687D19160E82CDBE169542099161ACAF02B268165D2
-39A1C7AB1ECAF2CB8B4B801EC221A886E9B6C684B1BF39F94C4E5566C3A99047
-1F193234A71FBE87D8609BEAC11C0F2C112635FA558BBECE42F6779BC8366166
-FD2D53F58AB6EB9E33003652A36EEBFAC4773BA8A3D445F89460CEA116C4FBC6
-EB9E7C7259D5F69746CB868D0ED66220A118C0B3CE4E2B22267E0D975277E4B2
-E72C3E5E36730188793D0DD284F98D874ED526056F2B4BB1DDD32E11D844193C
-89DC2BC6A8AC1115109B856A755CB66C297036302D1E6074027559DDE73032ED
-0517906763C7BD521BCB91569CD9AAC830FBC26C7003207EFF51A077743A8B38
-7F60734F94AE9DF227BF29C579284EF3A2477B6DE0AAC8AF6B1FA51B8E36514B
-CD365D8A61EED27627C448722C5B50E64A02D3F717AEB807CDA28A30ACBC7B48
-F9A932818996B60CE46A9C657C7CC0B4643211199623E1035C0C1A0AE52993F1
-FA6A6B13D2E999B22A7B1410A2BFB2FB13268B3E9323325CFD734FE9D416C814
-16817F1AD16AD8FD420203F7192AE9CBD18A4507E39CBF995F612E5F28ACE226
-05670B011506E1A3A39563FA60A6D3127B829BBC315619172EFB88F9C63CF266
-A90F50A2FCFB26EE9BB4520E7F5E652E7665A06351FE281FACCD0C9D8A482D9E
-EFC288DEED5A2D8ED7570BBABA85010801091C2F4B0A00DFD7F81CF7F88AAF10
-896300C8F17739BF0ECE11C74A32F133A63162A88AB6A7DB67FDBFEE061D9DD7
-1996446B52D08B938126C48D20A304B07EFDE7025268826BA2B35D42B999E04F
-9C7676CD51FA13D16197F03D18FC498A3DCFE4498F5C75457DEC8D78AE4D4700
-9FA458AE1B0DDFEF5A157DF48418AF8F4A60C6E410157A0A9F79CBC31B5D7F7E
-C38A545F7F3C9A3ABF3DE70EE943592E89A139C8FC3F9B7D760D5671B4D1771D
-EBADEB9AA2A29AA83A3184EFDE9F37FFCF3B9EA02F8A6A24B15E5B905CA50C2C
-D1DC1ED9CF5973E4D0935A6FF1DAC61044F4AB6B7A01ADA2EBBDFC4A5D808259
-762708A06CCEF4CD709330194CDDDC9E1BA5F613C70C8F45F5BB3B9AA2281EF7
-9DC85A6DA851BA1B000497F3558EFEC21136B1C19BF1252AE5DC4FB206E8F400
-163D791BA4BC8316ECCF259E898B1D01AD4062D9CCCA08AA204E254C75716DB0
-ACD48E85A19C44ADCE79E75A2E87F15ABB7876F7D6F389C56A81C4E128EC9982
-A734C2858CCA0EE263FDEDF6B3BA6AAE6AB442F144436680913A54396A3138A5
-A801A4AD4C7B57928E5DB7DB88B010174F3A74E52DCCBC74FD07CD2662FC5E79
-D0A336A54FE84DBD2CD40041C40641182D99D218CB6BD7C75B6973960619C7D5
-E8082CD6782E88C427E7A66CB9AA53722A098657DEB3A31CDFDA95577880B4E5
-C57DB71646B3D6DB47275252EFE0DF3BBCE70552A9889F5E1A1A289FE0B15E05
-
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 108 /l put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 121 /y put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD932BAC455BF8775C27AEA6C73EED3EB2F8DB5E356AE27
-41B35C8AEFE73C4CD6A591AAE4F45762EBD6D3636C03F08C552BBFD0A13D11D5
-491F8369B4BAB8ED9D6F1DE7DB7AFD383986C4338D3AA71C9AF2B8A0955CFD86
-0345F16D9798B25156DDF826A7CB6A0CC4CB43078BEBD3E499DA95562A08EED9
-7CA27B7A0CE3FA7EBDAA87A6025D9475E08694A08C849D61903847DEE6A781D4
-6E8B2BCE73E5A8D0902FC0E90881531948E6007F6BDB3A02439ABD9CC44983F0
-8180646CCF67948BCDEBEC9520EA721D24D30C9700CF9789B880F9F3ED0D322B
-78548FBA7D0CF1A9B898B2AC7952653F4C505CBD88330EC4A5D245E284F8DEE6
-01283E96F76BF3D7452F8EF5AC05AF9259D10365CE52FE91C2065874BA057BFB
-9221BDD9138712C7CFB8CFB21AC264330A28CE321642806138E980A0550760B0
-2DF05BC74DDA1850C608EBC7EEC512D3B134EAF047E4F3A8321049DBAC94B6B5
-1EAE443BE5415E86978A7F79C780B7E3FEF356C58AE8BAB19D8BFED719358F80
-B9805059CD16428A6AE0AE7B7BBCFB9539A6DEE77FC03B331A108AE824CD5BC3
-4F4888E2EF2A65514F9FC6CEC8ADE64C441C89CD17D1D5917882DDCB7E110C12
-7B58C75757BBE2A3609C40B212E6E78FB6A6CA337BE2E31C8165A6AB72A76D62
-FF4F496A240D20B902FC19F968867B104E0653F3924DF9DA5D19207F1247277A
-42EE84ABFC9CA1B5C44C727F909932E328F079D21C7E6668E659678F57372ED6
-2F67000BA21E39EABF7EEE78F75F828A994BD0632D0DE65D89F95B900C127D08
-7C64132B93A3BDA1D9F31E7390906A1A11370F87989CB8C81FD1E0D3845496F6
-D1AF13DF88ADB3C35313FFF478C8421703AF70E1A418B8908B18239E60689421
-3CF85F804D1C3C73FB16934F622D3EB63B44C93AFD9EF2027818C8FCEB26AE56
-4C14E41063BFF3E6AC612899F3AA2B6F9B16A326893981BC78A36899F0F3B755
-ADF930ADC9CD1CCD12BED30C9D5422017986C4FEAB220D82318E7D33EDDC127E
-36C9904A23A28EAA8371A63FC88334234150A18317DCBF87ADE2414894B7C96A
-67497B5B22F803F6D2E20FEFB118294F780BF9C45AE07F7237C1A78F4664CFF8
-7ECE9E5FA9A64BB0DCE5DB07026505520B41D5A1D88A1C6CCD07A8D2BC5678A4
-2610B0D3CFF5DDF0F1022276492A154B9DA654E877034B695A9738D229CA097C
-EBF5F869F37B3F258C6F10DE9430523988EB864D9DDB28998B27C4B5726B59E2
-562455F5D80826EBCC111F58C506E5EC62D6424D05A74E0C9B08F554752092C3
-880F79F9DD9061EE8334B19A98191621465A0C2A54744A57AA2B58436E1A1AB1
-D2E6CB25E2DF67D8E30910ADB8AA66BA4ED6DC033A749B6C76D4B25CCD5AA4A3
-27F7A847C24A32F9576B206181F18D29F40836EF0371BF1F6C10F427F2D684D4
-8AA306C492542EFA658672DDB26FC4F3B8A137B4116019EF5B6DBE65C2F610A1
-1E2984A1ED0F8D00FB63EC6CA83D17AE2068A4F05124AD5467216A1785A37F06
-AA878E12DF849C77EF981EBA84200F9E8952904C943A65BC7D15C7545BC79FC3
-73C94F5D491EAB3F2EA8167F421270236A99480E3BA8E25F890A600BDBE1108C
-95D40CBD29FD1D9085BCB41F810E4FB80D90AFD637D4783CD6B6FAC069255EB2
-1B64B953F07BB3971D74DD3C6C0186AB4FD2C9BA83D24111BF64547A2CBD301C
-6951AF5675FF688EBBDF206D4F71E15688DA7C1F0B065B824FA33D4A5CB770D0
-C5240D6640C8B9528A6BBD77A306A7B8CD1649D91A516595B4A08B10062E07A4
-56B4A806D553F5DC76086C119DEE107C3D606ABF8E7F251ACA31086CDDD13A09
-DA0C251337E911C5D7C0221919376CF1E718233543837CB0B53D83B1FF297260
-37B32C922D0576B3C67C1AD9EEA0312AEFB24908F8B2E644975D65D94B1AEE65
-E448904068D1A044E5A5E1D95C8B39443E629076D98AAEE338C7D912B3716D8C
-9FB1BB650D99C7ABF670A2A9199F57F4ABC5B03A49764F4ACCE3F5580BACB54E
-A8E76BC1E7BB681C4388F99737AD7C048AF15EFC20ECC29F31F9D607F9ECF6B2
-7D85CA5100E35A9DFFBF16D0EFF4CCE0BB5437A4E9AF7DA9624358140D416B81
-3B6427038B37D7FB96692A426B3B5046537B7415563DC20367FC2E86C83A1955
-1CB2D39C0057F50C328240368B205F37A45D8F95529ECE1E5A2B504F5D6E464C
-0649217306544388E965C255AE7CC5E3D52F22271409ACBE2809BA286A62983C
-C3664714937A41A9E418EF09EDE75503D9D2FBE09182D8FF00790046538696D2
-002DA68251BC80E5EE3B0D880862E8A073A35A5C8C2E86C6B4AB367A216D2775
-86FB73C6530AF5E326A70050BEDC3C9F770DC732D9FDC3AF6D5F3D9F541BDF81
-564224DA4FE86E4F7A549A2B0B1496565E55D7877C6E25C3D980B2A9CD9FF3A3
-90A2148B8B03A0DFA8F9CBB4BC9782C52C8E401D0E77F28C44AC87608DF2EA21
-5A3E05999022D7A99301CC7DEAF40A7B2085AF6816D293CD0E532A9258511608
-D3955A6B2C86C4BBFE36A26A38A3385AE2EE45E631385852857FC9FF28EFDC98
-F3C5BDF4BD903712981C12A930323B0D3F2EBE08DAD3B9C790E8850C79CEF96F
-7B99DEE79BCD35AD82460056ACB98FC5E4F0522713062E61810B37F97D0516B1
-02AE59F0D06BAF969F3124FD63CC20C060BDBA068E3A3BD2B7463ADFDFC7E9B0
-1447AE9B86E1198779C4D4F1B22E32008C1EA78B6E3F605DB176025E704A50EC
-4F15868C5CC0E1EAF47F9D92F1BD3CD42297440941C2D1CC9501A9DD47FB263B
-F41BA73FE7E63A4F4859D8324DC806DC2CE56D039D02D1DE0462CA161A93296C
-EF3DFE9C0D222F7FC356627960FD9FDC0B0FCE1DCF693CF37BE3CE8E740C12DF
-F26DC251C4D2837A42C6D355BAEA2601EB9BB56801F06383B3E5080BB1AC1147
-4D40051EFF4DF9CAF47DF220E2E3B33E0EB922BD37AE326AD8D487CD70DE70F7
-FA19A008A5720F093A805DCF6324D950CBE4D57C67CBEDE642BE4A792E71E499
-511AB753EEDFD0908D0E74163629FA961298D52EDC3238C99CB3DD1D408B1C79
-DD395E93920B27D3E8AD65B14742E9C4E4A341BA55844ACD33CB6628E598A459
-A1052252DCE62DA4B535565571DAB7B58D68D14DAC5F524D270C8F6A8AF5DD89
-3FDF0068EC8BBD082B0F6EE7C7984C516DBE1D33A136971127828CE5F0A2A733
-0197B63A0884D55D5046D5161E29E15B30BD892D697796510B13C154CFB637E8
-ED8DE0354257BBBD31947A1BB7339AD5E9A864FAD1C724E2C2EC498001FDBF72
-09DF7C0C53F085B7F91E4F36D6755A64C6B58A57CD38A8A0B6444276ED6543D4
-09519625F13136B51CBB556E7D371920658DDD5081FAC9954D22DCF827A2109E
-594FE3173C97CAD4C1F14E4397A72D636EF95679539EBF6E9CBBF363AE7CD30D
-AB21AEDF9BB0DF8534D25138B7EF948D1698355329982DEBD0B2F6646ACE08F8
-79330D8E36F9C0BCD2633A4CBC92D6D071AED918F090C9BA719C72EFE158256A
-47B03A4201636606C12197BEF39F2B744E6B680EB2543263E18C2541DB918BD8
-CABC3E04506701726DB0A7C8B5FF980692922F123ABDA7AA6F8076025D5AE35C
-9420D1B1F24410F24A16BE625CE6D9DC9065CFADB39046C200954E359E071800
-C6B218BFC959A9C9242DAEFEB41891F2415F49E275D04723E42D58A297E5F1A7
-EDABD1B9A9D2B044A1CB0585EBD447C2BE6A2CB1DA5BCC998A492E243182162F
-187BA804B402866303D70829E5B79261FAE267398F40FF34F465D59AA5F34EA7
-266B05AA24FA69745F4668336CCC7000C74B86E3071DCCCC6B285564D1F45A1E
-7CFFCEF3C051864CB991F62C497807A7A08019BDD74F85D0DB2EBA
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR7
-%!PS-AdobeFont-1.1: CMR7 1.0
-%%CreationDate: 1991 Aug 20 16:39:21
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 15 /ffl put
-dup 33 /exclam put
-dup 34 /quotedblright put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 61 /equal put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 94 /circumflex put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-27 -250 1122 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
-E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
-47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
-8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
-78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
-1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
-01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
-C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
-F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
-8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
-A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
-455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
-9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
-EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
-52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
-563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34E6F4C9A04BEEA891E
-4D22B39729EE4F0ECBF3CF3C429B3BB657DF66811D3A108A73513A22D252AEBA
-66664B33422FED0E63D93F9F8E24320719C09F50626EABAAE93F5649E1981AEC
-E8F19F6105EA978C51CBF54E94F3DBC93516313F00B281D1B8C8E4C1DB33363E
-B81B61D7224245842A6B98939F0ACF3ED081BFE7A813215D36CD6ABC3EBD6B99
-A5FAC5AA7A0DB126B0A1FB14B58525546D4D8BB6E95F803D6E48BADA30D5E152
-5C06B84B608E7C4743E7AAA2A52C10C39DD7406E1888D7B160C93EAEF4E55220
-E9218CF1892B3CF058E803AE0FF0681AFA7297AE4EBD71D49DCC12AD3BD4699A
-88C4816B6BF304C20873F9F9AE7163480B57CE3A811F3475F23DA9C6A400C1A5
-E21560F00DD3F66902F503F451FC4D697E57240D55B61D08970122A1ABF34D19
-DCBCAF7364E269974C430C7D2AB8741AE5F2C934DA0D0F105A181767E743DEF2
-04A9B7540D00E9C092667EFBFAC9AA7962AB1212FF4E58A480071225844CCD34
-88455EE9D68CA47CC9E819F190CB5AD7ED425CAE02C1B39E3583001F087CA89E
-33E6EBCF83845D42FC62D46B7D228BFF483937EA07F8772A65FFB274E0C0FD3E
-A7DADE69D04A8204BF65A7C85BB8F1BF06F3F30488B0BC37D7847C4753632A65
-E0928FD3918D3ADD1E777F595321382AA6A2CDE3D21195FB755FB302B9657B48
-F8BC3A7F4476E6CC29C8CA773C6C51CBD11C8CCA9113DED6EA5BC8AF705FE21C
-6A6681146FE7E2AF5B881C2A962A7CF9F14326DDEC715B9D0AD2D6B4963BB0D5
-F7D12C0432C52F9835F68908DA77D0467D3FBAD2E511E578E5F60E161BA3C54D
-38C315A7A950A8517F128493170EF43B357FB104355DEF18CCE4AD2C351ADF25
-AA0987C95B94EC07C71CB684EFB1389F9881813A3CC5A930C2D2F4ADB31C436F
-61CC5C1835DD22A7CAAAAD1FC4DC66CE4A0438159E05743F51B7E4E237771D81
-749F3AD0DC601499002766ECDAA8A36F5E8E7FCA0EDE1A200E7C828ABBCF9814
-5C7292627B587C13381AB2BEB0FDC3C038301D314F9CFC4290718DB06B9BF8CF
-725265C899837501F6F8F53FA62017E29BA856A1DC78F138F44597306C907227
-0F77F54049E5F402A5A1636CBEA7E6CD02EE1B50FF23E4A8F9D379ACA241E71D
-8F0E627052E2F4080A7B7E3F4899FF6FF70B756585429ACBBA205E68DD432EB9
-644D82A66063BAC3A3CA3CD99F0053B365136412DC6B4971143A06200BAA0388
-E148837793888ECEF814B21CE33EF8FD0C7B93587FEFF4B1E26D105ED9826A39
-19260305CD90F63C9A603B90FA0DD01ABB33294DC4085182688D585E23471677
-64BFAA5CF0AA2D6C87F1345F0DD630DFCF0C182A0450F4EFA170FAA7E2BC098E
-D0B157FB41E829BD9C407989736EDC282353E4443FA7BA430E5828DF210921BD
-D91B2F87F9FE4494D6A2D56E989AE6F55EE9763BA8646124A4BBE942B463D67A
-FBF305B4B0CFA0EB896994FBE0ED10FA6B92BBF74EFDC7E9EA6FB9B2D84BF9FF
-DA89B73220C1684BE7C0E64A251996F4F7CD2EA8A2BBE6498FD57B5917B34D95
-D54F3BBB381BDC31831DCA0F9F2D9304D6414DDBA9308FC4DEB528FEB6CB0B8A
-67DB01A4157E167736A68AB8FF7217AC70BCD6590920C64ECB8E08AD1DDCD5BE
-ECD2645179AC7F616BB49E235212A17530EA3C182DE56A77883583CE9C0AC482
-D4EFA2663F734C990A00D89270C4168AF73ACC83CE2B5A2BD0C94F8A624DBF80
-D33BF96ECB57E176E67A7CEB769E31E757FD6A642B8BA84599B62AAA47E5C5B9
-8E7743574566FFF4C2FA9BA16B8DAC2E403956FED5086152F63CB97A4BE5B692
-EF92796BADD4104339CC46150AED165A3CA9CCF93FE5A2D0DA5FC3977AECD496
-90B2F2D5C6CA939ECD2239B28F81FABA32626EC3F55C04CD2962D832BD9AFBFF
-0C08B516195E27717CE68FE9CF9D742638CBD4CF0B541C9FFB3491FE3118E2A2
-5DCDDF03859386F90FFB6BA26979DFABF3853B417C8C364BE5FF46AB9C6A51F6
-FE413F4BF54C4DAAE2BC0A7B68ED18A6D6192CAA2F770DD4F25A13D3CFB66315
-2423F4FB74312797B6DDB3E0DBA1A0BC7AC2F6E75B5AFD4C5BA311D5C5413F14
-4BA2E0CD516FE16650DC5558C771C98AD79ED7C7E493C6B4F961DE3564C1E7F8
-9423C82A30EF547357D1767C83DCA302BD5D93AAA10CA9808F025CB8ACF20480
-F19567EF239153F7C314B9248E6691C8D0256C9BEA3F25C99B9FF1ECCB3829B8
-4902D963A267ECDE988DF7C06E696AB0590A3BE1497E1A4C82C8484E3F18DAF2
-B39881A1195222E579428E057C4C116772FCF183496DBEBA48D6138559679FC2
-C2E0E3FE943AA1A395AF2D7A0241C442078D361F62E4A09B4B6CD1A1FA5B809F
-A54EEE10ED45BE999CBD8717F377A6558054F0CA87FABA43F974FEADDB9C5223
-452B8718EC2CC063F9DFB889F9A9FE727A7A6CEEDEE00A2606D1FE23F5CBE5FA
-2A2A9927E765B876E90CB5F9622267FCB4C98EC1A5602E744B83F57B877FC484
-E40626F7458AB95F5A796D59921D2B4800553A71AD7DFC785129358CDE5CB1A8
-2E64FADF5EFAD14009CAA471BC26282B622904E3138CEC71B5651849448B139E
-DAD26051917049D10414023758B77164EF644633B8AE4FBF64DECCB96198B540
-2BBD3F2E194114A9756B102E914BC2B197A506E2E3AED1892B2D6F1EAA5AAF74
-D41B63620E557D568AE7FFD609B2DF1E95544C3351B6D4446DCD273FE64EDF0D
-681C2462EAD09284614841D2D61B6DE93619730A7977A359ECDBF3D7C629800A
-415853D12518E3E366428A3535F31B4A796772E9E4C202C7213BB567F0C2CDB7
-01156807EA0AECFA22A8B688910018F745DB88FA1322EE14199DFEDEE353E306
-D5E7EC3C5A0E60F5328EB0D6655FD6ECAFFDF98D69218DEB9A1EFAF31A05E193
-5D5117F54924B029DF9511693B259424246C20B6EBFDA0E3D940BEDFAA4ABE03
-A9D4CE7EFA06FA02F329298CA9ECD1A0AAA8C16D86199DE317125C8F4E7EF759
-5F0FFAECCCB82469F154A6F4DBC0DEF5EE49284AC4274D23BA9AC851708BC19D
-AB914EAB462703C12017272A80AE0DF3E79B111B6C8169FADDAF655CB7DDED35
-CC7630AE1F5770F9656C43F74BE04BDC4BD3F5B34EA0226807849C648751543C
-C6EA619C3FCE17B23A2FD7D998D7AAFDAE280AC1FCD71068D905FE7CE4493C9E
-F976DB87ABD49791F6FAE9C9C80B1886DF7966F229334B57EEDC66B18C2045B0
-ABB6AA8678A5BD0A4E2172D1F8BE8781A39C1E5C5D90746243ECF9F644DFE3A0
-CC5D9C32C9E2F01BB81FBF3C408FD39566491F7FB24FC48EAB82DFCFD1CBC38E
-8A35DA138D3345025B03C6F48835CCD1287196C7740B7E111D734A366C942B05
-EE52BA5F5092D29E9333C9CF341466E2FB65F11D5644A0180DB1AA415B3E0215
-1C40FC26A874E5B9061E0FA7BE2638AE41328EABC218C7A4D558A3DC7A882481
-2201C843E449F8DDCB63C5FEE44400CA77901FEF9F0104FA4B25221DB1F590B7
-5451D4190B87BEB4D921FA2DE2668489BD120B2FA779A1B5BB1FF3F706126AFC
-7571B9A458B91E6F28EFDB7AD747349D451E01A3F31021223A86DE0389C1E940
-BA23FBAA862D9E14899A8430B08B7D7DC7E8BAD1C8DD4CA4E9782E16BD56C106
-EA51C0C24FFBD2FF322EDD06639FD6BD91174028B692451B270DB79090A6D7A7
-45C8498ECD4C2CA23714ACE8E5476D056ACE311212A4163F19907D9C1348029C
-95F94061B152E36E151EE97A63225DB1C672600F9436D00D2E395EDB299B321B
-967949A8D0DCF34D23243B29C33127C78874EC3DBC6A3205AC0E43EF43BDE522
-8C8D5BB1A70F026375474AB25625AC7C46757C070A058E2D20D0776431D40AB3
-30ABFB1AF648BD1E01F5B6609DB351F70BF2383F5DE5B02CBCE3E9613BFE4512
-2726D4FFA44C93BBFD5D6255171810FC7D20359C9BF61A6CD020C9C1C1DA5DD9
-D5A425A9D4C57A0BEEE5513004C95330F815EB0718DC38B3AB6124EE81D80B03
-FB840DF5EAA18C52F44832CE75CA11FB2AAD868CE1132805CFE191CB6D787FFC
-0429F3D2E254E99ED3B7F1A8CA07D160AE4769A5C4D3C9BC6238524F1CA44BA6
-9B63B6D73C3A7565D24D7F810ABC3F5A221D3A5FDD744D99E8A05582CBA2A977
-22136C3F5A729BECC9929EC3301398A8EC4B786A5C2F19A77F034FC28B868DBA
-8602FAFE1A1CD0E5DF258C5B6E5041D14736D7FE48BD79E937F322362FF2AF8A
-3A1CF1C4D01E2EF30F11D0B94AEA86B2116124F00C63D94A63B78D49BF932E25
-8EDCF447D77142935E4C3714E47508F68D4A34528B8EA7ED0B083643AA9C17CE
-ADC7A0CCADEFF1CB0C66A3F1BC3A7805AD08A7BD77528606BD4FD8D849BFC1ED
-249B9E9BCDB6AE0ABC292B5DE21E5D6B44B631E31B7D34C770E8AE5E1B14C28E
-8A061CF4E638E1C395F060A8223EBB56BF05AA15481162B2807F563FBF7570C3
-35AE24D1209C52619DB7E5AFAA950D2682D5D48478CC7366A74C7059AD9F6517
-3153B8732EC9DA41AC99F884014C67DA9325DD47EE9DF7DE982A3D778867FEBA
-0D1C8F01A1DD23A132A4E0CC8ECAC484E1105F5FDAFAB08571A30DE66E94EFA1
-E6F3CBC4CE371F68A804A52861998D8C25B5E6ADA917EF34051A5E9A949BA896
-28E857982B317DFFC5E337384C5F28E2277DB2762B694DE94F4160571D868142
-7DCC0474115BBFD8348432D73E28E83FFB35D7BCB719B266B45C39DCE5D0E62E
-29B6DB4895D090CD8AF563746CCF9C16FC22534A9BCC71E968DA9414E4337327
-03ABB8E5378BB7F4FA18FADB9FD41AC925FE497C356A26A79EC56938C597643E
-DC8D1EB9C5C893B992D1830A503755FB7F9AEB2A5CF07184C350A93DCCF92CA4
-63A60B90AA90732A3EB6A6C11C0CEDC10A08D8D43B1B9E28D046EB6158CFDF05
-73941B9EB41F05F81AC485CD944987F777487BFF43ECF058C819BEED85C860D7
-05126EAAD8E3B9D33D84FAB7887052E19A8F266E10F7F1354D463D4D4175146F
-7C7457BA1C47BCF077ECAF9016D34035A62AF91DECB9C2B9CFCA339A578F5B3F
-551FB7ACFF53E437B3E3C3C4CF486DDE4F8ABBC4C2402AD38923ED1830326FE7
-792A7C90605FFF779BB3827A005D0AC6BAE938AB4F87CA4A19B39696AAE8F92F
-83DB336183169CE59DD50FB9DA6CA4FBB96AB719EFEC21F4D061B10F324C0B38
-AF62ABBA76F1B4D4DA754B60925B9E8F9FA1BE62F1D91B45A54D5113D8A2F1C7
-8D5CF5D2C4E4E6740BC2EEFFBD752C8A59AB0935F8441A22C3635A3A53530FF9
-D79717CE6806581436A3D70680ED8F10672E4C73538F271CE936882BE4690E66
-2D5BEAAECDB9332B2C526524B9AF8CE75B385ADE74E1E4E6CD583D7D81C6C3F2
-90EE5C766A31FCD817805CDB12FCDE04C665D2247D4CEECF6BD4F47CEF4285DB
-D9C41196756F3851080B99CCD3DBDED23B783823A09E74A2F2459C14A1728D07
-4890C4CC97D33B3D2525481EDDE080388E072BE5861EBD1EA509126474B2F6E9
-ED3BB5D5BCB6B04F8159120846B8289DD5AD9CF5C2352F73884BC6BA5897CE41
-221CA0A80A2C9E253438673B6BE603688CB99A57F88CDC3A2AFD36F158E5A167
-E9809B59A8782BEE091E32B96DFDAF405CDB1E5EC180AEE6E7BF5D6AA89D62C7
-D6FEEE3FC009FBA286E7AC630384147B3CBDB2D4F046B197344559BCA7108486
-5C446B7A0EE718934890680905555B7E3F38CE455C44024ED6C593567F746532
-D25820C2807B520973E1F8355CE495D727930CFF48FACEACD5DC1F583759674B
-DA32D8EA3758D76A1C71B5A33D9331F1A365C00D834C840ED7906176DFA84AA0
-E5990BFA07496B80DD91B24CFF2E85BCB6166B415F8D90D81D03968FE0AB788D
-A46FF622E6AE14F67806C40B391ED74C92A39A3B14538E6ED0002D0E6680CE19
-F95AC92E836974258F101215E9E2FCAC33F026EB5726269AA0661DFEACF27286
-827B8876DFB65D9B3A70C1FFC0EB2058F1F3D9BA32A0DBD923488FB855B2274C
-E9077CB1D2013258F5E8DE5AD2E2841B9EED1A6CFD13F42EF4643CE6EF881967
-3AD7E03707C22F62C11019057B5E330FCF16593D25EC52C2A6AF763CDDABC3B9
-51469456F6A2C37E65C06BA6FDF1B0529006095404225633DD320A252BFF2056
-74D0E1922464D03F1790D71CACB50A809CEC34A5145F3DA6A5507851D21E4826
-9E7940AB8E4C49624C0243267BFD73ACD8F0CD439C2B5E4011901397773E7FF4
-BDFEBBE7602BFAFFF3EB724C5369F9329CBDAC5A17DDF702667094C691D2B4FC
-CCDE0F097FA9517441F76DBC8EC802B26E0C81546C878C1033689A4E13E51AFE
-7BFA521EA9616314DDDE2223391EEAA8EDF941792942A4AB398320D17723E543
-07054D4BC1B3D75DE4D82EB4DC3F92691EF465A60FFABEB310B6480840075E79
-57CB36DD91E3810CF9471DA8C4D074E4C66042129045BDA514CFA07470EAF6E5
-6C7D4A407D058C57F3EC570801F15869D1823FB81A779831DA8F43CC58637793
-6F98C18C517D0206F88BD46C8DFEEC2CFFC5929D59B9C5CAC4D223F758318540
-B2AFDD38DFA90AA36DBF5577BD2B5A27022824E727F5BB69AA4CDFDDEA22DC8D
-22B87149E8F47B957A650E8BBE7C4F1F57E2EA46C6DD7E05066A7FE5DB83128A
-2C90559F2625AEF38F4E3CE9C614232460CA06962AC0D206B383C2FB35431697
-40FCC094BFDE8DD27EC6FFCF490564FBC1A558AB294D285246F5D7CA33673C6A
-754BF6E10E13F3979CDBCC1AD38916BCF34C3D9E4558B6C7955AB7F662A0E9D1
-FFD8FAA601D3040AA86E055BEBE49B6647634BF8D32F14986286570A415C936C
-3D6AD9C29C21B15F0D73C14CD5D6273498DD4BB97E725A5E3C1522CCDA436D74
-F758BF23FCFAFEC18CE37EE5225AD3CA92C5DD95B6A60E0B348F21FE02F316BC
-1D500CAF87EC16054100449149668CAC2C0BB5467834B534DA92FA6ABDA77052
-C47B3E6083A900ACFE1E964470BF89C250E25AC232C668D9F36BE3ED7B7DA74A
-CEFAE3B68A0BF9634AB0DBFE15D7EA23CBEBFFF9357D7B5F7B5EF8A7F7C1E4FB
-F62703938A6ACDC08930F0F88B06FAB42DBE48FEB1A732A838B486B24D0AC2D1
-C1D43AACBF6D18FD5C88847CF0E37162627896189140896C1951A1D7BA4ED8EC
-79CFC58CFA58037A2B68C63A43022CCD7F94F212708EA5EB98A179BC28A8722C
-6E8552AF149184A30F843C5CAFF3726FB29E105167FBFACF5ADE9D54741252B7
-E548A6571CB1AA8B26E66D4AD989D69D1F5845F03270E39593AB93012ACFD276
-853F16371587EFA9078118FF416A7BEFA383A2B9E882D4DDF003186B53EEDAA0
-36ED13FC2752E03A15B7E0CF89BC740239C73C62DAF6F4259B21428B1A8F7507
-E6A3861210792248A4F5B44132F8FF2A2488DDA9B14BD15E08A341B9E53C3455
-61854F1A251B3E51C01ED0FD73CB926C7027EDCF7625EF3BDD64FB9CDC9BFAC7
-712333ABF2C5DB5344D79411CA8B0875A123B426D2988F6E230B3723F784FB18
-CA93DF81177BDFA5199FDC8832B192D14C46CE46A981CD3EF2DD5A564DC13C56
-FD65D6B01C7BEAD7FDAE927374CF0AEDF8D742FF4A5CEF273B23B0FEFF5B7028
-B3FDB2E378E7E83292C3887B28C4DE42A131382F75709C96FD10924E1EA53587
-A7D37B4384DDE8EA13F093AA5D5F6A154F4D95BF3CC3B2BB2D621A02296B36CD
-441F6C52D2659F1BD0DFB0DB36BB6F41D2F69B4CDD61A51E993D3BEAE97DF5AF
-71D600FA1C4FAB717F3C0B016E42C4342C92C89B4A91CD243B2E2062256BA9C6
-3CD6F745653242CCBF12B07E3CE3F04AC3EFE6E354E1EAD143FB5590A464DDF5
-FE0C4A26FEFAB9E1A8B87C289F3F0058E89897D4B9067128E89C52F0F71F719B
-332D37A820D3E57ED51EB884AD23BB5991170156162C41E8F4057B2D2683F6E6
-4A82342B684D4CE077C257F1EBAF7322F36DC4D2659DEBFC872FEFCEA2ED367D
-004578AB6DF641933B6CFCC6CBA82A6889BC795518CB8B3C865EA7FB33639E0C
-0DDA3711D18191862DB833782DEDAA1926912F58CA01FE4EFA2C36911359CE25
-BCAB28E865EA5536148EFDE3A4FB7BC5B5B8F426B666C1F716EAF793D8823491
-7EFDADB40A74F5CD46B8BB6AD15D9AA25F313D9D4A26088AC61D6BED91D1A5B3
-7875C511401CB9166B93C471187B36C423F7553B6097810D337BAC80566E62CB
-BEC9F98E3C28C0A80BD0548D14344EC89EB33395BD4BFC263F541436F0144A9D
-C2904709F4225D29925595088730F81C9536BA015305009A55542951A7EA05ED
-E83FD3E0F47901FD49B4A97F67ED76770C19A7DA58AB17752C83AB1A7B67A22A
-A3E631D4862F18A010B92F6D49D2847790BCC38875B585CDD7F8DCEEF2D7487F
-21AAADFFF430662E16A8EE62B6DF8927ABFB94BDF0B1F86737184BFEA4ACE8D3
-85FF57EA1C2BC69280787AACEBC789D1C2E7A84A2CAE48760F7EE6FF6F961F50
-DD804530208BC5286460AF322C2BF181E4CFF3182FBBA2C3ACEED09D6A0A30F5
-E10BC4D807D8B3E50C73219013D8E184B92655235AB541E93F88BEE4A145DCD8
-29059B9F3CB4A5A4E1077441410458F4AFC93992526EE36D5BF0A9F18B5D9EFE
-757D5124078C6D022E17EE89EDB5D745FD64DBAC7150D1A94257F64BC8A8A6D3
-13EAA25A03FF281A2E4A646CA91BFA412903C3362B109CD07335D6A004C75243
-A605E42E98E849A5067977F610FF7EBB3A5D64047CDDD41B6160735B3785EE74
-968BD18B5AC9E334122A2D0C0FBE4A308DE1FCEB07AB09857D66B45C39DCD5F5
-877C9E6CCE4ACCEE6D7B8B889D2711316CD52702FBF09268F7E093642C0A8EED
-C28F4BD9416951F098176814330834E3C4A9A6644CF8C5D4128A51CB477EBB39
-88B9475C1B11240E3A7313512EA118E125D7F898B0D0663683F75041903E12CD
-CE261B196E0D148EAA1CB128E2D90CD4BDE6E5C805E41BDA96F8832BE4BD10A5
-506F456264634BA14C8FC68BA20F1F9708A1560F416FC7E3AB5113894885C1F2
-04D9065702B76AC46820FC40FCDDB7FB2F0919122D6953B64D3FB0BB55C1D4EC
-EE9DEE2FBF7395DE366E540D61AC8BF5AEB3DD1593A3DE9806DA10F05072A523
-1BB6023DB909171EA47AFF9B92F9726AA727D85A7BB55C22B7FA53C2EBF47A17
-60A5496A2B8BBAF47D3BC64FD86C5A97DDC9187A1E20980D29629CC88F4B0240
-281C33DC019AAAB43DDC800C457E4948EB2CE51C2E70875477AE20EB7AE33F88
-2ED0060817A64D995CAD48DE5C7A946DB734CA9C9EB5BB71FAB66B33ED3EF35C
-A85069636F840904B3AE9BEB83D944CCA17A2F0A0CAFCE5A0E37E4F5884EE149
-9E4C098DEDF882DBEDFC9F2F9FE7CC3AB1332EFB9E4BB0D65E76540A2FDAD362
-50A9FFE91C895E6833AF1048AA3C3FA579DD0D4AFF5140C2BE5E20FB42629C7E
-FD394AD12749ACA37397DDDC65795B0ED8955A7FF5FBE2553E2BCC9B6A0D2A32
-95C3F20347FD12CE3A89AC7D5F3EF343DD0E3057D1DDFCCB2C491040BF2F64F2
-8711540ABB01202DF33529595E4EF59EF97991EC89841C39F06EBE620983F254
-1A752FFDB89A276B28B6D09C006AB5C779CF06EF5DF3B05F059A82F585FEF7AD
-13C16BCE9D2BD73F3F0B3D77AAE12A793027702A7FF98B4B7FD8679157C10F87
-FECE28638AF884E28BDCD5424F0CCE1F569ED798EA4F5AB5ABE2D1DF26F16686
-72F086E61E76CF9B2B345A30C3E9BB79FE1A573DD610A0CC804500FA370E05BC
-9698EDE7361E1C0B0BA3CF1E315BFAC67C6315DCAEF837AB43D55C1AAD094014
-08B3904C8E624A39FEDF277689C2EB428CB83F28ADBD7DC2FF219451B5B9E19E
-07AA0E09AF248E77546ED560293EE9CFD3E55439AF84AE98306F251116CDFF00
-A75B92D884848BF0DF694DB95D40F00EBBD77559A124931241A35364801D5135
-2DE8473BF1A3EF06AD9040BFABDB58F7E6DC4D7E0595C0AB5F3C32569F25D94C
-437ADBC21E2B8B1CED2EC10A2847F1D6EDF39466B6C3668B2B28869F573FFBB1
-0F5C24A9A238D10C9C2099F0A985AEC98779BF2A174449CEE218041D3DE49D3D
-87916F1A3D9647F0504ACF6F034D4D910B2B168F26E7A7A8D5EBC3AC28FEA423
-38E9781BF5E7E2A7107FF81DE2954734ECBA05524B901E42402C63F57404B73D
-CE81453185073B653CC3A40C9973377B7A86D68F1CC98EE062524884F9D9CDB7
-DD3E9921BF8490E3AF6C82E631E06985BAC77999BFF70F1CA11772C2AB47FA32
-68F28D625D84265937E0F0883A4FF3FA90F77B623CB95BBC1057287E380DF6D8
-F3E5A6033CD245BB35A47BFE1A5443A20C49F9CD13FDFF613DE06FF2A4E82618
-962C45438C9CCE27FA21756328385E95FC595901489BB8A7D280DFDF3140C95D
-DCBF3D272492BCD1361C4630F5C0F3914DFA64E1DA8C7F960941D28980208344
-96712D3FEA0EC13CBFFC2F551F7ED9CB6B1A01320851F640F5F427F2AF76D5FD
-62929BF71FEB9C55D02376087A430FC0E5F1E89414F1F44BFEE2DA8A7000CFA7
-978AB2BBB15F902C00A26E7D05B6C04D26390A914F344319A2A84F8A07EEC986
-6C1BEF79EBD651EE6C526E7569ACC9279F00EA6D22D31EA760B79253AB2E02D6
-05EB48883687F551BE0EE6C7CCB94AF615377A4B225295CC5DC7BB6BEACDD5DD
-E936717CDB1CE249FF9F714F4AD4087C0AF402AD6A17BB6008B65365DC9AF3AC
-50D1199D347BC6391FB9F6C40114FD4B4581642C288B22E3C343A8C819B477DE
-FAE2AA506003EA22AFF5ADF480284DFED7AA2B3A77573A7548544DC99FF42C1B
-362AD2A10ED5A70D6101E0FD107DDD55CB717130BA4960AE8B8C53ECA0AEB3B4
-179FC416C3A5D71FF0A313A0FB1C4B847AFF034EC98BAFC34B8E1287324E3707
-DC49F3EADC9BA68DD6A2F3147AF8D183815AE347B6F0F0F6A9A58107F4784A8D
-DC3A8B2D89FA4F8B52B9AD020E4FD8451DF943809912E16BDC63E20FC19F7A59
-210DD6CFEA601C26A1DCCCA9288DB29DD191658652330AD85E920D1C639579EA
-A08259DFA5C95EFA7D87FB51276E989652BDD037AC5F8A8045A768B443440C91
-B510C36A561264E227B8590C430AC3342D980A1D120FF01E4800775610826328
-F26FB6018101548AAA1F239A4D32B1593C33B96FCD069FCACE04A1C48CFFDFB7
-BC2DC6F6DFB33C637B6D11D721F85839AA093E4827FC8209538AAE4A8D885FA7
-9FBD55ACC990B13070464D85AC1B7CC41B7D7844FE1D129E49FF126B13FF6A74
-F0B2B42C19ACC661634A4A4E4483AECE30B9A134D5FBC22C76FAB5219B3CF701
-D212CC2B0425F78372FBFFC289D617CB389A8C553E0A45070FE94945EC523FCC
-B25264925DD7374BAF301D85B750CD9EB311C8867CED774DB0B55EC06F81CD67
-77467D5C5D2C94E80B95E6B89C60B3BB0CAFF9DAF3E9DD11CF74C3F14ED09E40
-A1196B85107C6A16A200C31FEDB33E69F532EFB32F2D41158EA3E99B3AB85A0A
-B0D44D11D536EA0322E189967906893B06B8B827592D3DBB3F13B5783B20CD6E
-E767292DF1A01BC0C8CD85FAF3C18D830BA617DFCE9586381B44A27FDF4A436C
-8B861F77004A8237CD4AF97605E40E91580DB0E360285FBB817217742CD0EA28
-20998EE8BF4680E8D2B3B9E8D6DF97D07A6EBE29A5827512D44F51C9F6A534A0
-571F9046FF26EB7CFC2A9B3D9204CB9B9717554A9D3925ACA7EB555077801DB2
-A90454B3EF000D983A7CFD3F9036650D36768F98076804E0081A575650BA1C07
-DC2F914184590FC6F155B9D6A658A3A4713BFEFFBB85C9835C344FD1D53DCEFD
-7867D59B8D02715B1FE9C72E3640D80E576757F705C961BA5DE91460EDAD0797
-7BB6448F6DF8963E1A348D5FECDB0A596650F19B178F7C068BDED8379C5CB807
-9C2CF81F1EF7C0831D7A7406E0A0400736C0D29DFAEFFB68D21B11735968FC32
-FAF971BFD73DDFD4AF00744D3129B7160860EEB502D6466047A58BDF3DF15529
-239B296321E9D792B72F6DD9BE5E476B2E07746883CF397CD24A6D8F6AFCBB50
-19738FF2AF4115398997D7849867C11FEF7CC533BD063DAA70704E2306A20976
-C6C9E945A35E4603848DC8622E95B6D034892E95988DFA955C60B0F39D7F6AE9
-374B74C80CE08D5B4BE42A50D19ACC0E02EFFBB8A66347FB4F255A93374C3A4D
-FECBBFFAFC1203D89972A54AD834F921C905064A85242105E14A057BC4794A45
-40E42B446377DCD8022B32B81A922CE5F0825305D9BE365604CE79A3E661078A
-9CB3099C40EAA2A4F0FDF4B9592F9F4F62B4BCF9E566943BE19427AF592C5985
-C55474E5A4C04F627D400EFADC307FC56409CEE145FBAFF64727B5A03601EEEB
-B709A18C588CC17F517FF47663EBC466D22DF67DD096E7D6D18A9625083BCB9F
-2235F22509788E523A29CE3B0E0766C2DED71D1FFC39A7E7EC800E636CE139CC
-54A1824A83B1C0D440CEC3C8DE158A7AC3907921A341A66BAD6C6C485DF894FA
-523AA95881949EA945CB6CA873B5FA5BC47B290396F29CB8E3909B76FC3D18F4
-4DFFCD06D4CF71B75F74EA6222CE8967CDA1BEB46CD55089A97E81D4EEE53807
-F9BCAA6EED32D13A791EF109A6E4FF24EB9B36247E6D95223A542D9DF56791ED
-2F6291B54B2F88AE0C83F10B7DADFFEFD307DEA0E560CA847D13003A3DD27D43
-8F7B9DD6154DE2F3405B1E58CED5A5D2F29D9E12B2DB91D899E9A5C99ADD5372
-662E518DB733E17F4615A3985166FB496925E65B03920C02E900BF4C52B589F5
-F9A89E9136519F91A3EC0CED6D2057965DCA18BB7294C17D5E89408CAFC92840
-752649AAD0C55365FEDF393AA428609186C22F350A07D13914D2523B37F8105A
-4F2193E3609881FD3F4A219E8BAA31B925B8FF5B5A1C31A1B8F2EDAB27E4878F
-915CD50301F187ED4A8B26FA6E8B5B0DE4B703BF9254E1DEAE6475F78053CD09
-5A7AD84A666BF58641DA88640ADD560584F81648F6052A40E8E5684B9C292855
-1C5A354C50D4D8FD923FBD556A80E5C3ED7CC83CDF28CCC8AC8FA49CAA17CFB3
-4852DB42D5C28A8D09E45BA955ED82B8CA2EDA805A993981EA74F9F61653E03D
-0AFD94C6081455B887EF5B5EB49D78A45C83E0A226D4304EBD2B6394DC51211B
-CF8AEF0FD4E02DB528B95CDE8510C40ABE86FB0C5589354C945BEF9A162ED59E
-055D2944582F986DCA15F51EA5A363A103F1446655A2EB56CB1C9135DA043048
-FF9DAC6C343E75F27994F74FABFA432C8671A206401C5DF01B70519AE5C1B269
-B7689BF2470AE7765279D1DAACAE7CB3349BC3B988C902E07CAAC63F56078BF3
-097F635700B588F0C0B870569F159D51B50BB05471C00F0948C479F22526E3D9
-A1293ADEE6C4F38379EDD23510F630A2319D36646DEE5A503C2ECAF7ACD712DE
-804FCAFCE247C81D4F933234EF60500FA644CCE8EC7E6CE2620CC48980347B77
-EE24F0B5D9F14C05128E7654B80C6C1ACC7E4D5F37E42B4217D70F0A82BDF25F
-55DDF51079FD8836153B04D4F9D1F372C6C478D178C1F584EC1ECE2D780F25DC
-B1837736E64010F208B67A82950818D0C33D46A56A928C1AC828EB3B64425E83
-2C460FB8F41ECD90EE18DFBA68D47B7D2D0734885154C9D4CCD62D12CF477A93
-E76783FA0D02CCF9EB72A9F7EE89413E18607EB043D3BE4D59453D301D077E07
-3661D24DBB7BD42EE38C95FDA23765332368E11FE937D621BB484E917FDDF2D9
-D27B2E442D371F4FF204D4010406023AC236E427E7304D43759B004EB8B4C9C6
-61ABB907A482BAAEC4D533675BF9B00907DD8F36FC8BC654FE8C49F7C4A064F3
-EF4587310221EF3F3A734F11886DA0486AEADCA6D2E517DFBF435CF5F1C05B77
-ADFDCC16B1E9EE3E0F6755CD53353570A49F7480E300A6B744F948655B43D875
-457A549D757257286E8D56A240BFD003C5479A85E4321AB8BDB19F9AFE41A4B7
-0380E31EEF209142F747E69F458934A749AF2A68B108D47C7479C54E235C2299
-6481BD51F075BBE91A88C807227B8C40F09EC7D7D7744C107D581326F6D31AA7
-B77650CBA84688218D4DA76C29B65D1A94193FAF92253F11301DF52677EC47BE
-5C4BACB13334CC882BB4CAD0ED0CF545AEDC9AD97B156DB743F8F37F9CD5B513
-0F311FF9DFDD99350267E5F0274A1D8B9F6CF330DB8E366BD118C342A2E6D2B3
-43FF36E5EC1ED2A07F32D96459731E9CB0D5D3FA29FA5030911E2AFE5116C2C2
-DA1E05A47789B08AE0C7A8DD48363FCC43CC1ED4483C33A49C2D8444220E2E04
-802100B94671FE20BE1E220302EA0F6143988D0BEE3332E1577DB253EB09DAAB
-86D1FCC7B631D32A0F268DE0EB980FF605BA2C6AA1767373E9EB61D1991A62E6
-7F0B93947B3A095943EFD35FF065A60636AE67B2D4A0DD1255513681A0A610B6
-EF260A9E8496C91ABCE77A4F12539B72F18B914E053A631CAE2E8DBE62EDA3B0
-C73268E5ECF4EC38B8CD78570AD0E2D0DDA8383805589C2881BA8869A72DC024
-F6A589D4CA1C0E882BF9C39821EBB446A24BDBA0D3EF95E4CC97CF1D080205D0
-FE11B3BC35531E6570CD21BFC262ADA097EAF485203D2D68E821A0C91A0C0972
-DB17C8F867618E72B47FE307E915D4B655E96077C9ACF7E778CBF23A61B54D90
-1A67037E0C7E0FBCD8571031CFC6A7E9D4465ACAAA7865A4F2930DA0A1502C2B
-6B5CE7714265E041E5BFAC0ED16F7668EB26EE21A118A15259111A3C52D704AC
-B111BB224A8CEE81E346B808AC8B8BFD4CA4A5112515E1BDD0D2B25D2DDBAABF
-EEEBB4A194BF71B2D54B7E516FC06A27D69E895CD35EE91FB844AA3B57C2C06E
-509FFDAC0269E6EAAE00A9306CA9B9DA4D198A979DB15DAF84DBD5200226F1F3
-792FBF476A7C1371A67494919DCBBC753E27575C367B1F8E8E9D6B7A17865EF6
-47AFC502C7246C8F36B8BD80E7CCB94FC9A4721326B80249078D572BB97FEFFD
-F8F0C953E914DF0845AD81999782B75B29779A46260270A5466FFA32CAEDAD67
-C9F867610C0324D029491F91A80A6FF6FD1FD746292B1A5E374198A734FEA0AC
-04DC481F4166BF66F2ABF2ACA39F18C622511DDC95571EC38BACB8C0A1EFEACA
-0AFDB11D62080D30BE8DCDD770E95DE9DBDB0BAB3CC27B2A3AADC4C67A75C214
-92CAC2C95100D8EA9ED8DD6E11FF18CB9D2D333AAFF860FE19CB1ECB8CFFB7B4
-E50D8F6A07F0DB82C6488A0F987F416E80063A8BA0800F57AEA0FCF35B4825F8
-8D98236AC8FDC007AA6CBAC764B162DFC878F9CA2FE5C6D055773713D3040822
-E6E43CA13304E8F58637C215432AD10493D2365952D86E0D03A2245A997F59DD
-114A8B4AF4ADFDEAFF8881A717B2088B4BB41E0586172179F3BFD20FA63FA80A
-8485EE5460FDEC972DBDE1B2E35CFA67CE4A8A6C10F6C9CA1CE07492BAC5392F
-AF86E6ED6E687DC2CD5F22CD9961D1423971574CFD9BC5A90446B82FBDD3D867
-26E4E4F31B3329B8A10BF17CF59656049AF978DF69F6EF333E30254461FAE586
-DBAF2D0800162849D5ABEB6AE938E1BAF6B37B1B12176BA429BE5AA534844B8E
-36205BECCE8161F783F02E1CDF05BCEECFCE0C1E04768CCAC5B0CB982C4DFF1D
-183659891F076681B8F2744745AF2AFACD100308D0CBF9411715F44A650EEDFF
-5729684D342BF7A8ED09DA89CC24046AC9EBA9DD98AC7C57E918CE01BFAA0483
-3FEC2A837BF7CFA68E3192997258B9DF780ABF413317C7DFBF185AD58A90654F
-0D8A455CC60C0778EE666BACA413E519DC3A9F198928ED16299B917A16AB00A7
-E443E611AD8E2B59BBA43B9F7DF38BB9D9EA244610C905CB83DA96413AFBFDE6
-2792267F82697A3565193334247AF5747C196233A56F28D41C84C3444A42035B
-38179D82EFA9042DEE33AA12C602C82670933B51F9C24EE1B8D96CC3D22F5281
-18970F62CF8E65CF4B5078DD6E8C0E39B93FF68FE89BC08944E11DB1E3F0BBB8
-1E619B90F80A1ABEAE3B1C2E1716DDFFA62523CC463FB38CBBC5F78340CA3FA6
-1F494E5ABDD38B2A6CF1D52F4A280219FCEDF375FF7BB670A269CC71B51CDD4F
-D84E850AAFF98C529F0784FFA7B9252DB7DFF8F37DEE51249C283BBF25DE9D21
-BB3D3ABD2E43F530135B3F074D400AACCAE51AFCEFAAB410C30EA3A1117AEC50
-7175220722BEDEA65FC75F231B22257BA7EAB092AB76B9DA6EB0D1B3429D7B07
-FC354CCEA0A2F73DD8C6CB551CE03485A4A327B869EE2696C805A3F69A04E762
-45A998A1C5B49E88B73B8C19BC1FDF83FF2A53B2293A61467525F8552CBF9B4A
-8D70B4299E960145CFCA20050F3B45E3F817A65403203BBFCE94F6B85CD2738C
-9509AE569BD7D62D53F9DF0D4637CDB2C4E89BE84A2C5D12C734238BA541B54D
-CAF47C74249D50963A8406CBA77EFFAD0017407AC6804AA0080A8AD493218E59
-425A85B155F3BEA8212C495C46F76656F2AB5B5062DCDF11F6EAE81BED67D7A0
-67C2A2CBF8B839904B8C37AA023E3E3D4C729219D98B51D6A2E519CB94534661
-CA709D121F11EC2B0F27DE8DF29E44E7C98459FD4C7828FF56FC6FCB5EC744EE
-3109B1C6E74091F5EF1FBCDD3AB344F78D5FF96C2316271C0CFBBF0595E2AA10
-6EDEE914004512B5DCCF4FB31A4C073B742473ECF602682E06F953AEF3360D58
-49AFAF9942AC307406945A95D08C82AA135CADB262E9D171106D54C6D951BC8F
-8FC0584D019D7D29E4A083E2911EE492681F9CFA94488CB563E6DDB1FCDF561C
-9B90EA2DD166E0CEAA90291D5F9AA0BCFC2490DD8452B7674238E9E866C47B06
-9A3EBF0FF9FBD55ED0AD2C33A1AAFFB45D7ED6420A8B397C56CB7F053D099F64
-414BBB019AE3AC9D3C1BA9AE43D63376D4979B762F34C5AA2B061EAA1AF7DBC6
-B9C5111242B6A29D3C8159E8B61D2A871E28484A944CAA57C83E28C25555AFBB
-6BDFB62B1385509A313DF0B34052AF2C7A4C8A6FCF0D6FCF4F6768EB50030D76
-06C928771D31839542AAE8026E67E1140894D3AA457EB21EC98F16783EDBE246
-37ABB138BD858A880FA1F87F8747CC97D1385339C7F726B4130DBE216F2672CE
-BFAC07888A1199F690A7746E3401BFBAF06527EAC103AB67BCA7E0801CC3B55A
-AFEA3716953A394596E57D4D2F17856ECBC0664C16201CEC9FE672BE276A2FF3
-B8EA055AAC28580FFD2E01CB19622E014F5B7D282A739B7869214F227246E12C
-52E9D21A19CF3763F197FD98962B1D7241A835CDB05FF0389E9A087695F92F6A
-41760B0CB0B3E7E70174DE52ECB01E990E72A910E3AD7444A7BE5E8D713D8860
-4C167E2247217DD9C767FFAABEFC51137AFCF93C70A6486FADEF221A296E8960
-F6AF171ECE801D5624DFE8B14D68B1084F608416D8495506AD7908FCC4D4102D
-468D75EA17DD0190AED982E01B80A90D376D5E853A1F26AF3F27F6D33CBF43E6
-94CDEE0EBBC899788C3E06BFC903F5E99D4F42B63FA20290BDA005B5E3664B59
-7BC8045F6628C32DD07CBAABF37E30395310A3F8E771F8F20A83EBF18002C049
-465ED8E1A798CF04570FA68E3AD82D77F86744641B997DBBD8EB717E0481BD82
-0EBFD8A1677F202B70B838FC43CA2B9EF366507B0C807A962C7A9253B82EDADC
-AAAF59ED8E5EB33DFC15B0CAD021D63F8AB45E598BB2BBA292799A41D2E2E8AE
-18E97794F466959B2D4D14875462210458FB4931C7CE7828653512DD6D61A396
-F20FD5B09F6EA48329EA9D7275112DE826F02876458639F5680B23292A519638
-9512C9508CA76D4A02D68EAED4218E969AEAD2CC3FA02561B22AD5EE1B04EC83
-F7832DD528F66D3CA96ED440455A13A9A58BA2F0C100012E5472E9C4FCECA5AB
-A74005F524C128894C0E22A6DAEBE96CBE3A07ED9A3655A09D0D6B6DC93B923C
-47ABD95CE2B6D19C5413E545E56A4E27D193D112921748F4280AD928AFAA42BC
-65292839A5F385975D570F0D1DD960A086B1B3784DFD4CD03B20458F6F96743E
-6BFBC708B9C776350430071118996E138FBEEA651A4FD20E52810E408B05CAB5
-C44320BE99D94727E480A5E24E55CEF080A8BCD85BD6A21D11007988A16BC204
-0B616D1886404A22E20758CB03E7DEA70F10BC72829E2C5713E05B006DCA8509
-FE997F530BBCD4BF8392428E2C64608FC749A896EA08B52B97B2C53BE17E1931
-9716DA6C7C18F797B1851C258D3C9372DEA22B08FD8A67FD7F9657B94DF1B25A
-844ED9906D9C52FB6B5FC0BC8BA360FC70B0CD4195C0CF9A871966A64E52692C
-2248818968507E441EF1038AB16C329BF95F428EED86F4A6E93BF6A7E18DBAB6
-1F5F2F5AB5160D87DF4880E69AFF7B7E7FD854152820A6573EB1ED95D1C2A7C1
-3A046339236FD39CA5C2E0A487455F4D70988E50FE3A65A09411C50020C54E4A
-C282D4DDCA62F9046D8E1BBDD741F80528D143603FAD39DDF9010D2246664D8E
-176B9142315DABA3E3E58061F8A5E84047302C85C69D4E15E79FE38B20708066
-F967D44D3A6457589ABE20482A9527C183185641469C4523D6F230E07647CF29
-E718793336272E77DC9D4BA3C90CA436250C3F7A0A4D4F375CE59CE4EC194CAE
-5BE89673DF273E5E11CDD2FC9EC7902BA45F6CBE9EE44BFFC062A9B4F2773B54
-713504453037881B39290D0D77C90E0C4B9A3BB28628CB210E9B419884636658
-FB1A47B7E59771830C14AB484D831155938E64D21E579DDA18F56F019A575818
-E6FC1E9051419F264A4AA984A485AECE8836C68D4AE6BDD037A4498FAE8B97F1
-67169BAA2BC619C2C6670063C6383A1FE0318A14CB8089E0563AA7469A4655CC
-2E842E2FD53230CD84AF03E266E9B6AF869F18997E0A94E2E4ADECDFE35D58DA
-0F2B1F5A2BC29A67730719FB00F71BE9E6DCECAC60E062255C6A1E61016FB50D
-3B4F8EE6F063F6A0453045BB564A9420A92F8CD287C9F93E91214FF8713C0662
-2467C81FD25173D90C189D74961608D7EACA0AD30A43BAD334FBD3A98CAD4424
-A89418B0A0BC3D18430D2ACB49077A7394CD85104DD27C19229B2228013D3048
-265CE0CA9656F52B96056B42D1BEAC71011D80304A24BEA088209417B4D653F5
-CF890BFBF71034613F49CAF5E6EEBFA0FFBDF52B021C7BC3ABCB659575E51556
-2388D24BF93123F80F2BE6C6CBDBF3E2ECAAD15CE9A6F7E5779144432C601722
-4CB077BBD4684D72950D3CFFAAF597A63FE4E561FA40BABF4E9E6A51E7CFC4A0
-003CE461B09DD4FE843E71903CA9CCF3AA77F646928F1A89E203691B9D4A1846
-F435E783E557ADA00D0C3C070E49146D9633FB2CE9805E30B8439F30227FEBE4
-6AE570FADD8829289C91E2519C921C36CD884E64BAB406C5173645B508E8360E
-50C0E861222CFAAC063F089A2EEF7081B8E3A961BE4699011F22DD8CECC8FE1E
-8F930336D22D6934C6A08291ADC1CAF6C7589B04AB8F65E6E7A73B306222E14B
-005FA67470D72532102A38F32CB8A47455FCB9151249E769623765B93419B0F7
-28DD23F25D719DE38203AE6AFED24B1CDEB175E49BD0D1BE8461BEC54B04046F
-B3E1C77F99CA3D1480748BF1F5C5356E53891235553310785A85C22032E34E41
-EAF6BD98334F58F784B5D4200D69FE047C7403EDE66E001F150B9D3EDCB8EE13
-7B70232A0B9F15D055937A3012C11C229622012DA9A36D2FA957F3BDBB6883A5
-B04142053D0E38B822269945ACB6D78A65C657388394C22E408E7028456DCBEC
-C0A973B60A893ED7233A1947D5111CFAE629C5F555198E2027A50DA665AD365F
-8242A2FD4257DE302CC107A7F2BB023C1FB3DEB0B277A76E103D27EF109DDED0
-E71F533ADB2A7EB46D61816AC6FD01688ED1BE85EE75DBDBC7F07119B310442F
-B5F60CE2BBE85AD6D01C07E0B7AEF5A960C61C6C0E15D303AF92E441DF6A2A19
-05785913F34C8E91891BA9046E07D05E863D0B2A9258005783BAAD33BDCBEEC6
-336BC1F189FE49A4943D15715229434AA5D6FEC98E2B6CC57203CA0BCFF9F0F9
-9682BD7F06F43646395D84ACEA48D443D2142D5B4F573BE4861DA121BD642FE4
-CE7F5C8DD1A71DBCB42CA27E6223140C329BBF60B123A1EFA3335555DDE7CE26
-539BB2EE50BBBADA900DFD1EA05FACE833924930BBAB4C247780D183896E9CC3
-A0AB37DF2ACD5A3A048D63CDBB93AD03AA99A994DBCBB2617BB2E8D45B862609
-A2551705A930FEBB53F3F588D969AE920E41FE0450EF63D0C22DE488038C0D07
-F878B35194C61EE40906994CBC8EB0D810191AC4E92C199DF21D0F760F2C3753
-8D8601765DD06E5CA8CDFBEA6AED8B766F3997FD8C479CF9C3A07143CE613A3C
-1BF879F8647A610FF5EA599647E497927ECAC4FE45389FD6A972C9A144CB00B9
-52DDEE40FEFC02A7708610CE164CEEEBEC5508578CE432B9E40F09BDC81293FE
-B1CF32E8283F5CA07A6F215FE0474D6FC3BF02703CEF85B000BAE1CFA2614457
-D37B1B1A4B99DE65CAAC080D2E914E41DDC7749FF401080A706242184C2B9E2B
-011CFD9C6D66BE270DFCAC4C6252B0509BD6F295A6BAFAF4BEC661DEF4CE1F8A
-13C642E68E5025F57C5F8A0D7DDF77995B83817EBC1619F002025BC45D06839C
-B720C94266FAC4EB6112E0534ACA6174B086C81C6C9D34238FF23822C7601543
-B81045F557155DA8733F274E016B1D0CC77081D15E14278AEDC86070BA57D0FC
-A639F0177D6F37E0686CB142315F502C19559C617BF270BB3A5E34C73FB16789
-14D52E64F990AF10BF91EA4D404813EF8169CB99E6F0C174917FE3C5A51D9B11
-B376A6E861BEFCFF7EA76C4419B0AAEB1FD203B80E04670AC90C10AEC21F9937
-324ECE1E31515D7B5EAEEBFF872795DE1774AB6C9C5813F56E8F145AE98B5A5E
-004E6194B19268B109387A0A193F937468792C75FDCA8EBFC045DA0858C0D8CB
-A18C254DF04201FB57F5781CAE3F3BEDE887B364C3338EC5E67B8FC8554194E1
-A0379658BA9A3CA1F846DA7D490D1FFC90B20E1F1FCA47AA6BD40B835C281625
-A86FDB0C946FA809110538B78B07BAF03BBA979F198A7A5B1DFC330CD828B328
-21D1B5F5B0727892118CE409257083B1D418AC568A9C8479DA800C73647C2A3B
-C2553514ECD615C4844FEC5A61CBEFD6FA1CEFD7BC35E57FC02C8B53532BD1A0
-3D18136EA94881B2373449A298FCC38184B7F91CFC558B5542791030132E0EA6
-D9093A44F8ACF920D282969C8FC5D30DC6E4EFD2DCC705E11809D3B98DE9163B
-778FC9A32272740E31B2062BB218D1FE31CA54C397BD13E800191E6BA77C3634
-F467B81FAD7247CA945C6C7150CD56E3EC2BF64A925EA3BAFB762584AE7055AA
-486C224A08473C85F1BDC4BBD0FFCFBFAA90D68D9A4BD62616360DA580E4E596
-B2D05A06361278377C3295C81487E28DFEE000DA276A95E1EAFA73C94630D948
-1A8BE5F649AD1E2041E15A85
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 40258431 52099146 1000 600 600 (gnus-refcard.dvi)
-@start /Fa 149[20 92[66 9[34 2[52{}4 58.1154 /CMSY7 rf
-/Fb 145[38 110[{}1 58.1154 /CMTI7 rf /Fc 134[50 3[53
-37 38 39 1[53 48 53 80 27 50 1[27 53 48 29 44 53 42 53
-46 8[72 99 2[66 53 2[65 2[91 57 1[49 36 4[73 69 68 72
-17[48 1[32 27 32[56 11[{}37 83.022 /CMBX10 rf /Fd 201[42
-42 42 42 42 42 49[{}6 83.022 /CMR10 rf /Fe 193[52 1[52
-60[{}2 58.1154 /CMMI7 rf /Ff 134[71 1[97 71 75 52 53
-55 1[75 67 75 112 37 2[37 1[67 1[61 75 60 1[65 13[75
-5[128 5[106 4[96 102 19[45 3[52 52 40[{}26 119.552 /CMBX12
-rf /Fg 133[33 40 40 54 40 42 29 30 31 40 42 38 42 62
-21 40 23 21 42 38 23 34 42 33 42 37 2[38 1[39 1[46 56
-2[56 57 52 42 56 56 51 56 58 71 45 58 39 28 58 59 47
-49 57 54 53 56 6[21 6[38 1[38 1[38 21 25 21 9[39 21[42
-44 11[{}62 58.1154 /CMBX7 rf /Fh 134[31 2[31 31 31 31
-31 1[31 31 31 1[31 2[31 1[31 1[31 31 31 1[31 51[31 45[{}17
-58.1154 /CMTT8 rf /Fi 133[30 35 35 47 35 37 26 26 26
-35 37 33 37 55 19 35 21 19 37 33 21 30 37 30 37 33 19
-1[33 19 33 19 40 49 49 67 49 49 47 37 48 51 45 51 49
-60 41 51 34 24 49 51 43 45 50 47 46 49 51 31 1[51 1[19
-19 33 33 33 33 33 33 33 33 33 33 33 19 22 19 51 33 26
-26 19 51 55 33 55 33 19 17[56 1[38 38 39 11[{}91 58.1154
-/CMR7 rf /Fj 134[59 59 81 59 62 44 44 46 1[62 56 62 93
-31 59 1[31 62 56 34 51 62 50 62 54 7[85 1[116 85 86 78
-62 84 1[77 84 88 106 67 88 1[42 88 88 70 74 86 81 80
-85 17[56 1[37 31 2[44 44 28[65 11[{}51 99.6264 /CMBX12
-rf /Fk 138[90 1[64 66 3[90 7[49 74 90 72 1[78 14[120
-10[127 3[117 13[81 3[81 2[45 46[{}15 143.462 /CMBX12
-rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-letter
-%%EndPaperSize
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop -190 -264 a Fk(Gn)l(us)52 b(5.11)g(Reference)h
-(Card)223 881 y @beginspecial 0 @llx 0 @lly 493 @urx
-505 @ury 1235 @rwi @setspecial
-%%BeginDocument: gnus-logo.eps
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: gnuslogo1.ps
-%%Creator: XV Version 3.00  Rev: 3/30/93  -  by John Bradley
-%%BoundingBox: 0 0 493 505
-%%Pages: 1
-%%DocumentFonts:
-%%EndComments
-%%EndProlog
-
-%%Page: 1 1
-
-% remember original state
-/origstate save def
-
-% build a temporary dictionary
-20 dict begin
-
-% define string to hold a scanline's worth of data
-/pix 62 string def
-
-% lower left corner
-0 0 translate
-
-% size of image (on paper, in 1/72inch coords)
-493.0 505.0 scale
-
-% dimensions of data
-493 505 1
-
-% mapping matrix
-[493 0 0 -505 0 505]
-
-{currentfile pix readhexstring pop}
-image
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff01fffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff8003ffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff0000ffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff8000007ffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff0000003ffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe0000000ffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff000000003fff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff000000000fff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffc0000000007ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffff80000000003ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffff00000000001ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffe00000000000ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffc00000000000ff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff8000000000007f8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0000000000003f8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffff0000000000003f8
-fffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffe0000000000001f8
-fffffffffffffffffffffffffff0001fffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffc0000000000000f8
-ffffffffffffffffffffffffffc00007ffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffc0000000000000f8
-ffffffffffffffffffffffffff000001ffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff8000000000000078
-fffffffffffffffffffffffffe0000003ffffffffffff0001fffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffff0000000000000038
-fffffffffffffffffffffffffc0000001fffffffffffe00007ffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffe0000000000000038
-fffffffffffffffffffffffff800000007ffffffffff800001ffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffe0000000000000038
-fffffffffffffffffffffffff000000003fffffffffe0000003fffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffc0000000000000018
-ffffffffffffffffffffffffe000000001fffffffff80000000fffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffc0000000000000018
-ffffffffffffffffffffffffc000000000ffffffffe000000003ffffffffffffffffffff
-fffffffffffffffffffffffffffffffffff80000000000000018
-ffffffffffffffffffffffff80000000007fffffff8000000000ffffffffffffffffffff
-fffffffffffffffffffffffffffffffffff80000000000000008
-ffffffffffffffffffffffff00000000003fffffff00000000007fffffffffffffffffff
-fffffffffffffffffffffffffffffffffff00000000000000008
-fffffffffffffffffffffffe00000000001ffffffe00000000001fffffffffffffffffff
-fffffffffffffffffffffffffffffffffff00000000000000008
-fffffffffffffffffffffffc00000000000ffffff8000000000007ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffe00000000000000008
-fffffffffffffffffffffff8000000000007fffff0000000000007ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffe00000000000000008
-fffffffffffffffffffffff0000000000001ffffe0000000000000ffffffffffffffffff
-ffffffffffffffffffffffffffffffffffc00000000000000000
-ffffffffffffffffffffffe0000000000000ffffc00000000000007fffffffffffffffff
-ffffffffffffffffffffffffffffffffffc00000000000000000
-ffffffffffffffffffffffc00000000000007fff800000000000001fffffffffffffffff
-ffffffffffffffffffffffffffffffffff800000000000000000
-ffffffffffffffffffffff800000000000003fff000000000000000fffffffffffffffff
-ffffffffffffffffffffffffffffffffff800000000000000000
-ffffffffffffffffffffff000000000000003fff0000000000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffff000040000000000000
-fffffffffffffffffffffe000000000000000ffe0000000000000001ffffffffffffffff
-ffffffffffffffffffffffffffffffffff0007ffc00000000000
-fffffffffffffffffffffc000000000000000ffc0000000000000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffe001ffffc0000000000
-fffffffffffffffffffffc0000000000000007fc00000000000000007fffffffffffffff
-fffffffffffffffffffffffffffffffffc003ffffe0000000000
-fffffffffffffffffffff80000000000000007f800000000000000003fffffffffffffff
-fffffffffffffffffffffffffffffffffc007fffffc000000000
-fffffffffffffffffffff00000000000000001f000000000000000001fffffffffffffff
-fffffffffffffffffffffffffffffffff800fffffff000000000
-ffffffffffffffffffffe00000000000000001f000000000000000000fffffffffffffff
-fffffffffffffffffffffffffffffffff801fffffff800000000
-ffffffffffffffffffffc00000000000000000e0000000000000000007ffffffffffffff
-fffffffffffffffffffffffffffffffff003ffffffff00000000
-ffffffffffffffffffff800000000000000000c0000000000000000003ffffffffffffff
-fffffffffffffffffffffffffffffffff007ffffffff00000000
-ffffffffffffffffffff00000000000000000000000000000000000000ffffffffffffff
-ffffffffffffffffffffffffffffffffe00fffffffff80000000
-fffffffffffffffffffe00000000000000000000000000000000000000ffffffffffffff
-ffffffffffffffffffffffffffffffffe01fffffffffc0000008
-fffffffffffffffffffc000000000000000000000000000000000000007fffffffffffff
-ffffffffffffffffffffffffffffffffc03fffffffffc0000008
-fffffffffffffffffff8000000000000000000000000000000000000001fffffffffffff
-ffffffffffffffffffffffffffffffffc07ffffffffff0000000
-fff9fffffffffffffff800000fe00000000000000000000000000000001fffffffffffff
-ffffffffffffffffffffffffffffffff807ffffffffff0000000
-fff9fffffffffffffff000001ff80000000000000000000000000000000fffffffffffff
-ffffffffffffffffffffffffffffffff80fffffffffff0000008
-fff0ffffffffffffffc000007ffc00000000000000000000000000000007ffffffffffff
-ffffffffffffffffffffffffffffffff81fffffffffff8000008
-fff0ffffffffffffffc00000fffc00000000000000000000000000000003ffffffffffff
-ffffffffffffffffffffffffffffffff01fffffffffff8000008
-ffe07fffffffffffff800001ffff00000000000000000000000000000001ffffffffffff
-ffffffffffffffffffffffffffffffff03fffffffffffc000008
-ffe07fffffffffffff00000fffffc0000000000000000000000000000000ffffffffffff
-fffffffffffffffffffffffffffffffe03fffffffffffc000008
-ffe03ffffffffffffc00001fffffe00000000000000000000000000000007fffffffffff
-fffffffffffffffffffffffffffffffe07fffffffffffe000008
-ffe03ffffffffffff800003ffffff00000000000000000000000000000003fffffffffff
-fffffffffffffffffffffffffffffffe07fffffffffffe000008
-ffc03ffffffffffff000007ffffff80000000000000f80000000000000003fffffffffff
-fffffffffffffffffffffffffffffffe0ffffffffffffe000008
-ffc01fffffffffffe00001fffffffe000000000000fffe000000000000001fffffffffff
-fffffffffffffffffffffffffffffffc0ffffffffffffe000008
-ffc00fffffffffffc00003ffffffff000000000001ffff800000000000000fffffffffff
-fffffffffffffffffffffffffffffffc1fffffffffffff000008
-ff800fffffffffff800003ffffffff800000000007ffffc000000000000007ffffffffff
-fffffffffffffffffffffffffffffffc3fffffffffffff000008
-ff8007fffffffffe00000fffffffffc0000000001ffffffc00000000000003ffffffffff
-fffffffffffffffffffffffffffffff87fffffffffffff000008
-ff8007fffffffffc00000fffffffffe0000000005ffffffe00000000000001ffffffffff
-fffffffffffffffffffffffffffffff87fffffffffffff000008
-ff8003fffffffff800001ffffffffff000000000ffffffffc0000000000000ffffffffff
-fffffffffffffffffffffffffffffff87fffffffffffff000008
-ff0001fffffffff000003ffffffffffc00000007fffffffff80000000000007fffffffff
-fffffffffffffffffffffffffffffff8ffffffffffffff000008
-ff0000ffffffffe000003ffffffffffc0000000ffffffffffc0000000000007fffffffff
-fffffffffffffffffffffffffffffffcffffffffffffff000008
-fe00007fffffff800000ffffffffffff0000001ffffffffffe0000000000001fffffffff
-ffffffffffffffffffffffffffffe7fdffffffffffffff000008
-fe00007fffffff000001ffffffffffff8000003fffffffffff0000000000001fffffffff
-ffffffffffffffffffffffffffffe7fdffffffffffffff000008
-fc00001ffffffc000003ffffffffffffc000007fffffffffffe0000000000007ffffffff
-ffffffffffffffffffffffffffffc7ffffffffffffffff000008
-fc00001ffffff0000003ffffffffffffe00000fffffffffffff0000000000007ffffffff
-fffffffffeffffffffffffffffff87ffffffffffffffff000008
-f800000fffffe0000007fffffffffffff00000fffffffffffff8000000000003ffffffff
-fffffffffcffffffffffffffffff87ffffffffffffffff000008
-f8000003ffff0000000ffffffffffffff80001fffffffffffffc000000000001ffffffff
-fffffffff8ffffffffffffffffff07ffffffffffffffff000008
-f8000001fffe0000001ffffffffffffff80001ffffffffffffff000000000000ffffffff
-fffffffff8fffffffffffffffffe0fffffffffffffffff000008
-f0000000fff00000003ffffffffffffffc0001ffffffffffffff8000000000007fffffff
-fffffffff0fffffffffffffffffe0fffffffffffffffff000018
-e00000001a000000007ffffffffffffffe0003ffffffffffffffc000000000003fffffff
-fffffffff0fffffffffffffffffc0fffffffffffffffff000018
-e000000000000000007fffffffffffffff0003ffffffffffffffc000000000003fffffff
-ffffffffe0fffffffffffffffffc1fffffffffffffffff000018
-c00000000000000000ffffffffffffffff0007ffffffffffffffe000000000001fffffff
-ffffffffe0fffffffffffffffff81fffffffffffffffff000018
-c00000000000000001ffffffffffffffff0007fffffffffffffff0000000000007ffffff
-ffffffffc0fffffffffffffffff83fffffffffffffffff000018
-800000000000000007ffffffffffffffff800ffffffffffffffffc000000000003ffffff
-ffffffff01fffffffffffffffff03fffffffffffffffff000038
-800000000000000007ffffffffffffffff800ffffffffffffffffe000000000001ffffff
-ffffffff01fffffffffffffffff03fffffffffffffffff800038
-00000000000000000fffffffffffffffffc00fffffffffffffffff000000000000ffffff
-fffffffe03ffffffffffffffffe07fffffffffffffffff800038
-00000000000000001fffffffffffffffffc01fffffffffffffffff8000000000007fffff
-fffffffc03ffffffffffffffffe07fffffffffffffffff800038
-00000000000000003fffffffffffffffffe03fffffffffffffffffc000000000003fffff
-fffffff803ffffffffffffffffc07fffffffffffffffff800038
-00000000000000007ffffffffffffffffff03fffffffffffffffffe000000000000fffff
-fffffff007ffffffffffffffffc0ffffffffffffffffff800038
-0000000000000000fffffffffffffffffff07ffffffffffffffffff000000000000fffff
-fffffff007ffffffffffffffff80ffffffffffffffffff800078
-0000000000000003ffffffffffffffff8ff87ffffffffffffffffff8000000000001ffff
-ffffffc00fffffffffffffffff81ffffffffffffffffff800078
-8000000000000007ffffffffffffffff0ff8fffffffffffffffffffc000000000000ffff
-ffffffc00fffffffffffffffff01ffffffffffffffffff8000f8
-8000000000000007fffffffffffffffe0ffffffffffffffffffffffe0000000000007fff
-ffffff801fffffffffffffffff03ffffffffffffffffff8000f8
-c00000000000001ffffffffffffffffc0fffffffffffffffffffffff0000000000001fff
-fffffe001ffffffffffffffffe07ffffffffffffffffff8000f8
-e00000000000007ffffffffffffffff83fffffffffffffffffffffffc0000000000007ff
-fffff8003ffffffffffffffffc07ffffffffffffffffff8000f8
-f00000000000007ffffffffffffffff03fffffffffffffffffffffffc0000000000001ff
-fffff0003ffffffffffffffff80fffffffffffffffffff8000f8
-f0000000000000fffffffffffffffff07fffffffffffffffffffffffe0000000000000ff
-ffffe0003ffffffffffffffff00fffffffffffffffffff8001f8
-f8000000000003ffffffffffffffffe07ffffffffffffffffffffffff00000000000000f
-ffff00007fffffffffffffffe01fffffffffffffffffff0001f8
-fc000000000007ffffffffffffffffc07ffffffffffffffffffffffff800000000000007
-fffc00007fffffffffffffffc01fffffffffffffffffff0001f8
-fc000000000007ffffffffffffffffc0fffffffffffffffffffffffff800000000000000
-ffe000007ffffbffffffffff801fffffffffffffffffff0001f8
-fe00000000001fffffffffffffffff03fffffffffffffffffffffffffe00000000000000
-00000000fffff3ffffffffff003fffffffffffffffffff0001f8
-fe00000000003fffffffffffffffff03ffffffffffffffffffffffffff00000000000000
-00000001fffff1fffffffffe003fffffffffffffffffff0003f8
-ff00000000007ffffffffffffffffe03ffffffffffffffffffffffffff00000000000000
-00000001ffffe1fffffffffc007fffffffffffffffffff0003f8
-ff8000000001fffffffffffffffffc07ffffffffffffffffffffffffff80000000000000
-00000003ffffe0fffffffff0007fffffffffffffffffff0003f8
-ffc000000003fffffffffffffffffc0fffffffffffffffffffffffffffc0000000000000
-00000003ffffc0ffffffffe0007fffffffffffffffffff0003f8
-ffe00000000ffffffffffffffffff81fffffffffffffffffffffffffffe0000000000000
-00000007ffffc07fffffff8000ffffffffffffffffffff0003f8
-fff00000003ffffffffffffffffff01ffffffffffffffffffffffffffff0000000000000
-00000007ffff803fffffff0000fffffffffffffffffffe0007f8
-fff8000000ffffffffffffffffffe03ffffffffffffffffffffffffffff8000000000000
-00000007ffff801ffffffc0001fffffffffffffffffffe0007f8
-fffc000001ffffffffffffffffffe07ffffffffffffffffffffffffffffc000000000000
-0000000fffff000ffffff80003fffffffffffffffffffe0007f8
-fffe00000fffffffffffffffffffc07ffffffffffffffffffffffffffffc000000000000
-0000000fffff0007ffffe00003fffffffffffffffffffe0007f8
-ffff80007fffffffffffffffffff80fffffffffffffffffffffffffffffe000000000000
-0000001ffffe0001ffff800007fffffffffffffffffffe000ff8
-ffffe007ffffffffffffffffffff80ffffffffffffffffffffffffffffff000000000000
-0000001ffffe0000fffc000007fffffffffffffffffffe000ff8
-ffffffffffffffffffffffffffff01ffffffffffffffffffffffffffffff800000000000
-0000003ffffe0000000000000ffffffffffffffffffffe000ff8
-fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffc00000000000
-0000003ffffc0000000000000ffffffffffffffffffffe000ff8
-fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffe00000000000
-0000007ffff80000000000001ffffffffffffffffffffe001ff8
-fffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffff00000000000
-0000007ffff80000000000001ffffffffffffffffffffe001ff8
-fffffffffffffffffffffffffff807fffffffffffffffffffffffffffffff80000000000
-000000fffff80000000000003ffffffffffffffffffffc001ff8
-fffffffffffffffffffffffffff80ffffffffffffffffffffffffffffffffc0000000000
-000003fffff00000000000007ffffffffffffffffffffc001ff8
-fffffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffe0000000000
-000007ffffe00000000000007ffffffffffffffffffffe003ff8
-fffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffff0000000000
-000007ffffe0000000000000fffffffffffffffffffffc003ff8
-ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffff8000000000
-00001fffffc0000000000001fffffffffffffffffffffc003ff8
-ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffe000000000
-00001fffffc0000000000003fffffffffffffffffffffc003ff8
-ffffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffff000000000
-00003fffff80000000000003fffffffffffffffffffffc007ff8
-ffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffffff800000000
-00007fffff80000000000007fffffffffffffffffffffc007ff8
-ffffffffffffffffffffffffff03fffffffffffffffffffffffffffffffffffc00000000
-0000ffffff0000000000000ffffffffffffffffffffffc007ff8
-fffffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffc00000000
-0001ffffff0000000000001ffffffffffffffffffffffc007ff8
-fffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffff00000000
-0003fffffe0000000000001ffffffffffffffffffffff800fff8
-fffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffff80000000
-0007fffffe0000000000003ffffffffffffffffffffff800fff8
-fffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffff0000000
-001ffffffc0000000000007ffffffffffffffffffffff800fff8
-fffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffff8000000
-003ffffffc000000000000fffffffffffffffffffffff800fff8
-ffffffffffffffffffffffffe07ffffffffffffffffffffffffffffffffffffffe000000
-00fffffff8000000000003fffffffffffffffffffffff001fff8
-ffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffff800000
-03fffffff8000000000003fffffffffffffffffffffff001fff8
-ffffffffffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffc00000
-07fffffff0000000000007fffffffffffffffffffffff001fff8
-ffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffc0000
-3ffffffff000000000000ffffffffffffffffffffffff003fff8
-ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffe03f
-fffffffff000000000003ffffffffffffffffffffffff003fff8
-ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffff800000000007ffffffffffffffffffffffff003fff8
-fffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffff80000000000ffffffffffffffffffffffffe003fff8
-fffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffc0000000003ffffffffffffffffffffffffe007fff8
-fffffffffffffffffffffffc0fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffe0000000007ffffffffffffffffffffffffe007fff8
-fffffffffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffe000000000fffffffffffffffffffffffffe00ffff8
-fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffff000000001fffffffffffffffffffffffffe00ffff8
-ffffffffffffffffffffffe03ffffffffffffffffffffffffbffffffffffffffffffffff
-ffffffffff800000007fffffffffffffffffffffffffc00ffff8
-ffffffffffffffffffffffe07ffffffffffffffffffdfffff1ffffffffffffffffffffff
-ffffffffffc0000000ffffffffffffffffffffffffffc00ffff8
-ffffffffffffffffffffffe07ffffffffffffffffff9fffff07fffffffffffffffffffff
-ffffffffffe0000001ffffffffffffffffffffffffffc00ffff8
-ffffffffffffffffffffffc0ffffffffffffffffffe3ffffe03fffffffffffffffffffff
-fffffffffff800001fffffffffffffffffffffffffffc01ffff8
-ffffffffffffffffffffff81ffffffffffffffffffc7ffffc00fffffffffffffffffffff
-fffffffffffe00007fffffffffffffffffffffffffffc01ffff8
-ffffffffffffffffffffff81ffffffffffffffffff87ffffc007ffffffffffffffffffff
-ffffffffffff8003ffffffffffffffffffffffffffff801ffff8
-ffffffffffffffffffffff03ffffffffffffffffff0fffff8007ffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff803ffff8
-fffffffffffffffffffffe07fffffffffffffffffe0fffff8001ffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff803ffff8
-fffffffffffffffffffffe07fffffffffffffffffc1fffff0000ffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff803ffff8
-fffffffffffffffffffffc0ffffffffffffffffff83ffffe00007fffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff007ffff8
-fffffffffffffffffffff81fffffffffffffffffe03ffffe00007fffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff007ffff8
-fffffffffffffffffffff83fffffffffffffffffc07ffffc00003fffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffff007ffff8
-fffffffffffffffffffff03fffffffffffffffff80fffff800001fffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe00fffff8
-ffffffffffffffffffffe07fffffffffffffffff00fffff800000fffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe00fffff8
-ffffffffffffffffffffe0fffffffffffffffffe01fffff0000007ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe00fffff8
-ffffffffffffffffffffc0fffffffffffffffffc01ffffe0000003ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe00fffff8
-ffffffffffffffffffff81fffffffffffffffff803ffffe0000003ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffe01fffff8
-ffffffffffffffffffff81ffffffffffffffffe007ffffc0000003ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffc01fffff8
-ffffffffffffffffffff83ffffffffffffffffe007ffffc0000001ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffc01fffff8
-ffffffffffffffffffff07ffffffffffffffff800fffff80000000ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffc01fffff8
-fffffffffffffffffffe07ffffffffffffffff800fffff00000000ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffc03fffff8
-fffffffffffffffffffc0ffffffffffffffffe001fffff00000000ffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff803fffff8
-fffffffffffffffffffc0ffffffffffffffffc003ffffe000000007fffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff803fffff8
-fffffffffffffffffff81ffffffffffffffff0003ffffc000000007fffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff007fffff8
-fffffffffffffffffff01fffffffffffffffe0007ffffc000000003fffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff007fffff8
-fffffffffffffffffff03fffffffffffffffe000fffff8000000001fffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffff007fffff8
-ffffffffffffffffffe07fffffffffffffff8000fffff0000000001fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
-ffffffffffffffffffc07fffffffffffffff0001fffff0000000001fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
-ffffffffffffffffffc0fffffffffffffffe0001ffffe0000000000fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
-ffffffffffffffffff80fffffffffffffff80003ffffe0000000000fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffe01ffffff8
-ffffffffffffffffff81fffffffffffffff00007ffffc0000000000fffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
-ffffffffffffffffff81ffffffffffffffe00007ffffc00000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
-ffffffffffffffffff03ffffffffffffffc0000fffffc00000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffc03ffffff8
-fffffffffffffffffe03ffffffffffffff00000fffffe00000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff803ffffff8
-fffffffffffffffffc07fffffffffffffe00001ffffff00000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff803ffffff8
-fffffffffffffffffc07fffffffffffffc00007ffffffc0000000007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff807ffffff8
-fffffffffffffffff807fffffffffffff00001fffffffe0000000003ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff807ffffff8
-fffffffffffffffff807ffffffffffffe00003ffffffff0000000003ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff007ffffff8
-fffffffffffffffff00fffffffffffff800007ffffffff8000000003ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff00fffffff8
-fffffffffffffffff00fffffffffffff00000fffffffffc000000001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffff00fffffff8
-ffffffffffffffffe00ffffffffffffc00003fffffffffe000000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe01fffffff8
-ffffffffffffffffe00ffffffffffff800007ffffffffff000000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe01fffffff8
-ffffffffffffffffc00ffffffffffff00000fffffffffff800000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe01fffffff8
-ffffffffffffffff800fffffffffffc00001fffffffffffc00000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe03fffffff8
-ffffffffffffffff800fffffffffff000007fffffffffffe00000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffe03fffffff8
-ffffffffffffffff001ffffffffffe00000fffffffffffff00000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffc07fffffff8
-ffffffffffffffff001ffffffffffc00001fffffffffffff80000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffc07fffffff8
-fffffffffffffffe000fffffffffe000003fffffffffffff80000001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff807fffffff8
-fffffffffffffffe000fffffffffc000007fffffffffffffc0000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff807fffffff8
-fffffffffffffffc000fffffffff800000ffffffffffffffe0000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff80ffffffff8
-fffffffffffffffc0007fffffffe000001fffffffffffffff0000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff80ffffffff8
-fffffffffffffffc0003fffffffc000003fffffffffffffff0000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff01ffffffff8
-fffffffffffffff80001fffffff8000007fffffffffffffff8000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff01ffffffff8
-fffffffffffffff80000ffffffc000001ffffffffffffffff8000000ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffff01ffffffff8
-fffffffffffffff800003fffff0000003ffffffffffffffffc000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffe01ffffffff8
-fffffffffffffff000000000000000007ffffffffffffffffc000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
-ffffffffffffffe00000000000000000fffffffffffffffffe000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
-ffffffffffffffe00000000000000001fffffffffffffffffe000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
-ffffffffffffffc00000000000000003fffffffffffffffffe000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
-ffffffffffffffc00000000000000007ffffffffffffffffff000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
-ffffffffffffffc0000000000000000fffffffffffffffffff000000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
-ffffffffffffff80000000000000003fffffffffffffffffff800000ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
-ffffffffffffff80000000000000007fffffffffffffffffff800001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff80fffffffff8
-ffffffffffffff8000000000000001ffffffffffffffffffff800001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff81fffffffff8
-ffffffffffffff8000000000000001ffffffffffffffffffffc00001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff81fffffffff8
-ffffffffffffff8000000000000003ffffffffffffffffffffe00001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff01fffffffff8
-ffffffffffffff000000000000000fffffffffffffffffffffe00001ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffff03fffffffff8
-ffffffffffffff000000000000001ffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe03fffffffff8
-fffffffffffffe000000000000003ffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe03fffffffff8
-fffffffffffffe000000000000007ffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe03fffffffff8
-fffffffffffffc00000000000001fffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffe07fffffffff8
-fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffc07fffffffff8
-fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffc07fffffffff8
-fffffffffffffc0000000000003ffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
-fffffffffffffc0000000000007ffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
-fffffffffffffc000000000000fffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff80ffffffffff8
-fffffffffffffc000000000003fffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff80ffffffffff8
-fffffffffffffc000000000007fffffffffffffffffffffffff80003ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff00ffffffffff8
-fffffffffffffc00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff01ffffffffff8
-fffffffffffffe00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffff01ffffffffff8
-fffffffffffffe0000000000fffffffffffffffffffffffffff80007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffe01ffffffffff8
-ffffffffffffff0000000001fffffffffffffffffffffffffff80007ffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffe03ffffffffff8
-ffffffffffffff000000000ffffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffffdffffffffffffffffffe03ffffffffff8
-ffffffffffffff800000003ffffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffff9ffffffffffffffffffc03ffffffffff8
-ffffffffffffffe0000001fffffffffffffffffffffffffffff80007ffffffffffffffff
-fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
-fffffffffffffff0000001fffffffffffffffffffffffffffff8000fffffffffffffffff
-fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
-fffffffffffffff800000ffffffffffffffffffffffffffffffc000fffffffffffffffff
-fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
-fffffffffffffffe0003fffffffffffffffffffffffffffffffc000fffffffffffffffff
-ffffffffffffffffffe1ffffffffffffffffff807ffffffffff8
-ffffffffffffffff4007fffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffffc1ffffffffffffffffff00fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffff03ffffffffffffffffff00fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
-ffffffffffffffffff03ffffffffffffffffff01fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
-ffffffffffffffffff07ffffffffffffffffff01fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
-fffffffffffffffffe07fffffffffffffffffe01fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
-fffffffffffffffffc07fffffffffffffffffe03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
-fffffffffffffffffc07fffffffffffffffffc03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
-fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
-fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
-fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
-fffffffffffffffff03ffffffffffffffffff807fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
-ffffffffffffffffe01ffffffffffffffffff807fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
-ffffffffffffffffe03ffffffffffffffffff807fffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
-ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
-ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
-ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffffffff
-ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
-ffffffffffffffff00ffffffffffffffffffe01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
-fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
-fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
-fffffffffffffffc01ffffffffffffffffffc01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffffffffff
-fffffffffffffffc03ffffffffffffffffffc01ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffff
-fffffffffffffffc03ffffffffffffffffffc03ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff
-fffffffffffffff807ffffffffffffffffffc03ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffff807ffffffffffffffffff803ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffff00fffffffffffffffffff803ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffff00fffffffffffffffffff807ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffe01fffffffffffffffffff807ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffe03fffffffffffffffffff807ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffc03fffffffffffffffffff807ffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffff807fffffffffffffffffff00fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffff807fffffffffffffffffff00fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffff00ffffffffffffffffffff00fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffff00fffffffffffffffffffe00fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffe01fffffffffffffffffffe01fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffe03fffffffffffffffffffe01fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffc03fffffffffffffffffffc01fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffc07fffffffffffffffffffc01fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff807fffffffffffffffffffc03fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff00ffffffffffffffffffffc03fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffff00ffffffffffffffffffff803fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffc03ffffffffffffffffffff807fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffc03ffffffffffffffffffff007fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff807ffffffffffffffffffff007fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff807ffffffffffffffffffff007fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffff00fffffffffffffffffffff007fffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffe00ffffffffffffffffffffe00ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffe01ffffffffffffffffffffe00ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffff
-fffffffffffc01ffffffffffffffffffffe00ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
-fffffffffffc03ffffffffffffffffffffe00ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
-fffffffffff803ffffffffffffffffffffc00ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffff
-fffffffffff807ffffffffffffffffffffc00ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1fffffffffffff
-fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffff
-fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffff
-ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
-ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
-ffffffffff801fffffffffffffffffffff801ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
-ffffffffff803fffffffffffffffffffff801ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffff
-ffffffffff003fffffffffffffffffffff803ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffffffff
-fffffffffe007fffffffffffffffffffff803ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffff
-fffffffffc007fffffffffffffffffffff003ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ffffffffffffff
-fffffffffc00ffffffffffffffffffffff003ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
-fffffffff800ffffffffffffffffffffff003ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
-fffffffff801ffffffffffffffffffffff003ffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffff
-fffffffff803ffffffffffffffffffffff007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffff
-fffffffff003fffffffffffffffffffffe007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffc07ffffffffffffff
-ffffffffe007fffffffffffffffffffffe007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff807ffffffffffffff
-ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff007ffffffffffffff
-ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
-ffffffff800ffffffffffffffffffffffe00fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
-ffffffff000ffffffffffffffffffffffe00fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fffffffffffffff
-fffffffe001ffffffffffffffffffffffe00fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
-fffffffc003ffffffffffffffffffffffe00fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
-9ffffffc003ffffffffffffffffffffffe00fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff803fffffffffffffff
-0ffffff8003ffffffffffffffffffffffc01fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
-07fffff0007ffffffffffffffffffffffc01fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
-07ffffe000fffffffffffffffffffffffc01fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff8
-03ffffc000fffffffffffffffffffffffc01fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff0
-03ffff8001fffffffffffffffffffffff801fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffff0
-01ffff0003fffffffffffffffffffffff803fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
-00fffe0003fffffffffffffffffffffff803fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
-00fffe0003fffffffffffffffffffffff803fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffff001ffffffffffffffc0
-003ffc0007fffffffffffffffffffffff003fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff80
-001fe0001ffffffffffffffffffffffff003fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff00
-000fc0001ffffffffffffffffffffffff007fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe00
-000000001ffffffffffffffffffffffff007fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffe00
-000000003ffffffffffffffffffffffff007fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffc00
-000000003ffffffffffffffffffffffff007fffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffff800
-000000007fffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff800
-000000007fffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff000
-00000001ffffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff000
-00000001ffffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe000
-00000001ffffffffffffffffffffffffe007fffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffc000
-00000003ffffffffffffffffffffffffc00ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffc000
-00000003ffffffffffffffffffffffffc00ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff8000
-00000007ffffffffffffffffffffffffc00ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff0000
-0000000fffffffffffffffffffffffffc01ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff0000
-0000001fffffffffffffffffffffffffc01ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffff8003fffffffffffffe0000
-0000001fffffffffffffffffffffffffc01ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffe0000
-0000003fffffffffffffffffffffffffc01ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffc0000
-0000007fffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff80000
-0000007fffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff80000
-000000ffffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff00000
-000001ffffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
-000001ffffffffffffffffffffffffff801ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
-000003ffffffffffffffffffffffffff801ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe00000
-000003ffffffffffffffffffffffffff801ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffe00000
-000007ffffffffffffffffffffffffff803ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffc00000
-00000fffffffffffffffffffffffffff003ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff800000
-00000fffffffffffffffffffffffffff803ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff800000
-00001fffffffffffffffffffffffffff803ffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffff0007ffffffffffffff000200
-00003fffffffffffffffffffffffffff007ffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe000700
-00007fffffffffffffffffffffffffff00fffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe001f80
-0000ffffffffffffffffffffffffffff00fffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe001f80
-0001ffffffffffffffffffffffffffff00fffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffc003fc0
-0001ffffffffffffffffffffffffffff00fffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffff8007fe0
-0003ffffffffffffffffffffffffffff01fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff0007fe0
-0007ffffffffffffffffffffffffffff01fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffe0007ffffffffffffff000fff0
-0007ffffffffffffffffffffffffffff01fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe003fff8
-001fffffffffffffffffffffffffffff07fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffc
-007fffffffffffffffffffffffffffff07fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffe
-00ffffffffffffffffffffffffffffff07fffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffffc007ffff
-dfffffffffffffffffffffffffffffff0ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff800fffff
-fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff800fffff
-fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff001fffff
-fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff003fffff
-fffffffffffffffffffffffffffffffe3ffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffe003fffff
-ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffc007fffff
-ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffffc007fffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffffc00ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff800ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff801ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffe0000fffffffffffffff001ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff003ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffe007ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffff80007ffffffffffffffe007ffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffe0001fffffffffffffffc00fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff801fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffffc0003fffffffffffffff801fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffff80003fffffffffffffff003fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff007fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffff007fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc007fffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc00ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffc01ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff801ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffff801ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff803ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffff803ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffe007ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffff80007fffffffffffffffe007ffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffe00fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffc00fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff801fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff803fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff003fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff003fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffe007fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffc007fffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffffc00ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffff80007ffffffffffffffffc00ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffe0000fffffffffffffffff003ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffffc0001fffffffffffffffff003ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffe00007ffffffffffffffffc00fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffff80001fffffffffffffffff801fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffff00003fffffffffffffffff801fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffff00007fffffffffffffffff003fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffe00007fffffffffffffffff007fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffc0000ffffffffffffffffff007fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffffc0001fffffffffffffffffc007fffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffff80003fffffffffffffffffc00ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffff80007fffffffffffffffffc01ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffff00007fffffffffffffffff801ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffff0000ffffffffffffffffff801ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffffc0001ffffffffffffffffff803ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffff80003ffffffffffffffffff803ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffe0000ffffffffffffffffffe00fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffc0000ffffffffffffffffffe00fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffffc0001ffffffffffffffffffe01fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffff80003ffffffffffffffffffc03fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffff00007ffffffffffffffffffc03fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc03fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc07fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffffc0001fffffffffffffffffff807fffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffff00007fffffffffffffffffff81ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffe0000ffffffffffffffffffff01ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffe0001ffffffffffffffffffff03ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffffc0003ffffffffffffffffffff03ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffff80003fffffffffffffffffffe07ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffff00007fffffffffffffffffffe07ffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffe00007fffffffffffffffffffe0fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc0fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc1fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffffc0001ffffffffffffffffffffc1fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffff80007ffffffffffffffffffff83fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffff00007ffffffffffffffffffff83fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffe00007ffffffffffffffffffff83fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffe0000fffffffffffffffffffff87fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffc0001fffffffffffffffffffff87fffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffffc0001fffffffffffffffffffff0ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffff80003fffffffffffffffffffff0ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffff00007fffffffffffffffffffff0ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffff0000ffffffffffffffffffffff1ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffe0000fffffffffffffffffffffe1ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffffc0001fffffffffffffffffffffe3ffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffff80003fffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffff00007fffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffc0003ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffffc0007ffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffe0001fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffffc0007fffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff8000ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff8001ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff0001ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffe0007ffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffffc000fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8003fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffff0007fffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffe000ffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffc001ffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffc00fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffffc01fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffe00ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffe01ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff83ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-ffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffffffffffffffffffffffffffffffffffff8
-
-
-showpage
-
-% stop using temporary dictionary
-end
-
-% restore original state
-origstate restore
-
-%%Trailer
-
-%%EndDocument
- @endspecial -364 1079 a Fj(Notes)-364 1183 y Fi(Gn)n(us)23
-b(is)f(complex.)28 b(Curren)n(tly)21 b(it)h(has)g(some)g(876)h(in)n
-(teractiv)n(e)d(\(user-callable\))-364 1249 y(functions.)28
-b(Of)22 b(these)f(618)i(are)f(in)f(the)h(t)n(w)n(o)h(ma)t(jor)e(mo)r
-(des)h(\(Group)g(and)-364 1316 y(Summary/Article\).)k(Man)n(y)c(of)g
-(these)g(functions)e(ha)n(v)n(e)i(more)g(than)g(one)f(binding,)-364
-1382 y(some)g(ha)n(v)n(e)g(3)h(or)f(ev)n(en)f(4)i(bindings.)28
-b(The)21 b(total)g(n)n(um)n(b)r(er)f(of)h(k)n(eybindings)e(is)j(677.)29
-b(So)-364 1449 y(in)22 b(order)g(to)g(sa)n(v)n(e)h(40\045)f(space,)f
-(ev)n(ery)g(function)g(is)h(listed)f(only)h(once)f(on)i(this)f(card,)
--364 1515 y(under)f(the)h(\\more)f(logical")h(binding.)27
-b(Alternativ)n(e)21 b(bindings)g(are)h(giv)n(en)g(in)-364
-1581 y(paren)n(theses)f(in)h(the)f(b)r(eginning)f(of)i(the)g
-(description.)-364 1648 y(Man)n(y)g(Gn)n(us)h(commands)e(are)g
-(a\013ected)h(b)n(y)g(the)f(n)n(umeric)f(pre\014x.)28
-b(Normally)22 b(y)n(ou)-364 1714 y(en)n(ter)f(a)i(pre\014x)e(b)n(y)h
-(holding)f(the)h(Meta)f(k)n(ey)h(and)g(t)n(yping)g(a)g(n)n(um)n(b)r
-(er,)e(but)i(in)g(most)-364 1781 y(Gn)n(us)h(mo)r(des)e(y)n(ou)h(don't)
-g(need)f(to)h(use)g(Meta)g(since)f(the)g(digits)h(are)g(not)-364
-1847 y(self-inserting.)28 b(The)22 b(pre\014xed)e(b)r(eha)n(vior)h(of)h
-(commands)f(is)h(giv)n(en)g(in)g([brac)n(k)n(ets].)-364
-1913 y(Often)f(the)h(pre\014x)f(is)h(used)g(to)g(sp)r(ecify:)-298
-1980 y([distance])f(Ho)n(w)i(man)n(y)f(ob)t(jects)e(to)j(mo)n(v)n(e)f
-(the)f(p)r(oin)n(t)h(o)n(v)n(er.)-298 2046 y([scop)r(e])f(Ho)n(w)i(man)
-n(y)f(ob)t(jects)f(to)h(op)r(erate)f(on)h(\(including)e(the)i(curren)n
-(t)e(one\).)-298 2113 y([p/p])i(The)g(\\Pro)r(cess/Pre\014x)e(Con)n(v)n
-(en)n(tion":)29 b(If)22 b(a)g(pre\014x)f(is)i(giv)n(en)e(then)g(it)-364
-2179 y(determines)f(ho)n(w)j(man)n(y)f(ob)t(jects)e(to)i(op)r(erate)f
-(on.)30 b(Else)21 b(if)h(there)f(are)h(some)g(ob)t(jects)-364
-2246 y(mark)n(ed)f(with)i(the)e(pro)r(cess)h(mark)f(#,)h(these)f(are)h
-(op)r(erated)f(on.)29 b(Else)22 b(only)g(the)-364 2312
-y(curren)n(t)f(ob)t(ject)f(is)j(a\013ected.)-298 2378
-y([lev)n(el])e(A)h(group)g(subscrib)r(edness)e(lev)n(el.)28
-b(Only)22 b(groups)g(with)g(a)h(lo)n(w)n(er)f(or)h(equal)-364
-2445 y(lev)n(el)e(will)h(b)r(e)g(a\013ected)f(b)n(y)h(the)f(op)r
-(eration.)28 b(If)22 b(no)g(pre\014x)f(is)i(giv)n(en,)-364
-2511 y(`gn)n(us-group-default-list-lev)n(el')d(is)i(used.)29
-b(If)22 b(`gn)n(us-group-use-p)r(ermanen)n(t-lev)n(els',)-364
-2578 y(then)f(a)i(pre\014x)e(to)h(the)g(`g')g(and)g(`l')f(commands)g
-(will)h(also)h(set)f(the)g(default)e(lev)n(el.)-298 2644
-y([score])i(An)g(article)f(score.)28 b(If)22 b(no)h(pre\014x)e(is)h
-(giv)n(en,)-364 2710 y(`gn)n(us-summary-default-score')e(is)i(used.)
--364 2843 y(Gn)n(us)h(startup-commands:)-364 2909 y(M-x)g(gn)n(us)334
-b(start)23 b(Gn)n(us.)-364 2976 y(M-x)g(gn)n(us-no-serv)n(er)49
-b(start)26 b(Gn)n(us)f(without)g(connecting)e(to)j(serv)n(er)e(\(i.e.)
-38 b(to)25 b(read)241 3042 y(mail\).)-364 3111 y(Additionally)-5
-b(,)20 b(there)h(are)h(the)g(t)n(w)n(o)h(commands)e Fh(gnus-plugged)g
-Fi(and)-364 3177 y Fh(gnus-unplugged)p Fi(,)g(whic)n(h)g(are)h(only)g
-(used)g(if)f(y)n(ou)h(w)n(an)n(t)h(to)g(do)n(wnload)f(news)g(and/or)
--364 3244 y(read)g(previously)f(do)n(wnloaded)g(news)h(o\017ine)g
-(\(see)g(C-c)g(C-i)h(g)g(Gn)n(us)f(Unplugged)-364 3310
-y(RET\).)h(Note:)28 b Fh(gnus-no-server)21 b Fi(ignores)h(the)f
-(stu\013)i(in)f Fh(gnus-agent-directory)p Fi(,)d(and)-364
-3377 y(th)n(us)j(do)r(es)g(not)g(allo)n(w)h(y)n(ou)f(to)h(use)e(Gn)n
-(us)i(Unplugged.)-364 3443 y(C-c)g(C-i)68 b(Go)23 b(to)f(the)g(Gn)n(us)
-g(online)f Fg(info)p Fi(.)-364 3509 y(C-c)i(C-b)50 b(Send)21
-b(a)h(Gn)n(us)h Fg(bug)f Fi(rep)r(ort.)-364 3714 y Ff(Group-Mo)t(de)
--364 3850 y Fi(RET)202 b(\(=\))18 b(En)n(ter)g(this)g(group.)27
-b([Pre\014x:)f(ho)n(w)18 b(man)n(y)g(\(read\))g(articles)f(to)h(fetc)n
-(h.)-22 3916 y(P)n(ositiv)n(e:)35 b(new)n(est)25 b(articles,)f(negativ)
-n(e:)34 b(oldest)25 b(ones;)h(non-n)n(umerical:)-22 3982
-y(view)c(all)g(articles,)f(not)h(just)g(unread])-364
-4049 y(M-RET)120 b(En)n(ter)21 b(group)h(quic)n(kly)-5
-b(.)-364 4115 y(M-SPC)131 b(Same)21 b(as)i(RET)g(but)e(do)r(es)h(not)g
-(expunge)f(and)g(hide)g(dorman)n(ts.)-364 4182 y(M-C-RET)51
-b(En)n(ter)19 b(group)g(without)h(an)n(y)f(pro)r(cessing,)g(c)n(hanges)
-g(will)h(not)g(b)r(e)f(p)r(erma-)-22 4248 y(nen)n(t.)-364
-4315 y(SPC)213 b(Select)25 b(this)i(group)f(and)h(displa)n(y)f(the)h
-(\014rst)f(\(unread\))g(article.)42 b([Same)-22 4381
-y(pre\014x)21 b(as)i(ab)r(o)n(v)n(e.])-364 4447 y(?)311
-b(Giv)n(e)22 b(a)h(v)n(ery)f(short)g(help)f(message.)-364
-4514 y Fe(<)290 b Fi(Go)23 b(to)f(the)g(b)r(eginning)e(of)i(the)g
-(Group)g(bu\013er.)-364 4580 y Fe(>)290 b Fi(Go)23 b(to)f(the)g(end)f
-(of)h(the)g(Group)g(bu\013er.)-364 4647 y(,)323 b(Jump)21
-b(to)i(the)e(lo)n(w)n(est-lev)n(el)h(group)g(with)g(unread)f(articles.)
--364 4713 y(.)323 b(Jump)21 b(to)i(the)e(\014rst)h(group)g(with)g
-(unread)f(articles.)-364 4780 y(^)309 b(En)n(ter)21 b(the)h(Serv)n(er)f
-(bu\013er)h(mo)r(de.)-364 4846 y(a)309 b(P)n(ost)18 b(an)g
-Fg(article)i Fi(to)e(a)g(group)g([Pre\014x:)25 b(use)18
-b(group)f(under)g(p)r(oin)n(t)g(to)i(\014nd)-22 4912
-y(p)r(osting-st)n(yle].)-364 4979 y(b)305 b(Find)21 b
-Fg(b)r(ogus)g Fi(groups)i(and)e(delete)g(them.)-364 5045
-y(c)312 b(Mark)33 b(all)h(un)n(tic)n(k)n(ed)e(articles)h(in)g(this)g
-(group)g(as)i(read)e(\()p Fg(catc)n(h-up)p Fi(\).)-22
-5112 y([p/p])-364 5178 y(g)309 b(Chec)n(k)22 b(the)f(serv)n(er)h(for)g
-(new)g(articles)f(\()p Fg(get)p Fi(\).)30 b([lev)n(el])-364
-5244 y(M-g)227 b(Chec)n(k)22 b(the)f(serv)n(er)h(for)g(new)g(articles)f
-(in)h(this)g(group)g(\()p Fg(get)p Fi(\).)29 b([p/p])1922
--317 y(j)337 b Fg(Jump)22 b Fi(to)g(a)h(group.)1922 -251
-y(m)303 b Fg(Mail)27 b Fi(a)g(message)f(to)i(someone)e([Pre\014x:)37
-b(use)27 b(group)f(under)g(p)r(oin)n(t)g(to)2280 -184
-y(\014nd)21 b(p)r(osting-st)n(yle].)1922 -118 y(n)321
-b(Go)23 b(to)f(the)g Fg(next)g Fi(group)g(with)g(unread)f(articles.)29
-b([distance])1922 -52 y(M-n)239 b(Go)23 b(to)f(the)g
-Fg(next)g Fi(group)g(on)g(the)g(same)g(or)g(lo)n(w)n(er)h(lev)n(el.)28
-b([distance])1922 15 y(p)321 b(\(DEL\))15 b(Go)h(to)f(the)g
-Fg(previous)f Fi(group)h(with)g(unread)f(articles.)26
-b([distance])1922 81 y(M-p)239 b(Go)20 b(to)g(the)f Fg(previous)h
-Fi(group)f(on)h(the)f(same)g(or)h(lo)n(w)n(er)g(lev)n(el.)27
-b([distance])1922 148 y(q)323 b Fg(Quit)23 b Fi(Gn)n(us.)1922
-214 y(r)332 b(Re-read)22 b(the)f(init)h(\014le)f(\()p
-Fg(reset)p Fi(\).)1922 280 y(s)332 b Fg(Sa)n(v)n(e)29
-b Fi(the)g(`.newsrc.eld')e(\014le)h(\(and)h(`.newsrc')f(if)h(`gn)n
-(us-sa)n(v)n(e-newsrc-)2280 347 y(\014le'\).)1922 413
-y(z)328 b(Susp)r(end)20 b(\(kill)i(all)g(bu\013ers)g(of)5
-b(\))21 b(Gn)n(us.)1922 480 y(B)312 b Fg(Bro)n(wse)22
-b Fi(a)h(foreign)e(serv)n(er.)1922 546 y(C)311 b(Mark)22
-b(all)g(articles)f(in)h(this)g(group)g(as)h(read)f(\()p
-Fg(Catc)n(h-up)p Fi(\).)29 b([p/p])1922 613 y(F)315 b
-Fg(Find)22 b Fi(new)g(groups)g(and)g(pro)r(cess)f(them.)1922
-679 y(N)309 b(Go)23 b(to)f(the)g Fg(next)g Fi(group.)29
-b([distance])1922 745 y(P)313 b(Go)23 b(to)f(the)g Fg(previous)f
-Fi(group.)29 b([distance])1922 812 y(Q)307 b Fg(Quit)23
-b Fi(Gn)n(us)f(without)g(sa)n(ving)h(an)n(y)f(startup)g(\(.newsrc\))f
-(\014les.)1922 878 y(R)310 b Fg(Restart)23 b Fi(Gn)n(us.)1922
-945 y(Z)318 b(Clear)22 b(the)g(dribble)e(bu\013er.)1922
-1011 y(M-c)246 b(Clear)22 b(data)g(from)g(group)g(\(marks)g(and)g(list)
-g(of)g(read)f(articles\).)1922 1077 y(C-c)h(C-s)142 b
-Fg(Sort)29 b Fi(the)f(groups)g(b)n(y)h(name,)g(n)n(um)n(b)r(er)e(of)i
-(unread)e(articles,)j(or)f(lev)n(el)2280 1144 y(\(dep)r(ending)19
-b(on)k(`gn)n(us-group-sort-function'\).)1922 1210 y(C-c)f(C-x)133
-b(Run)20 b(all)g(expirable)f(articles)g(in)h(this)h(group)f(through)f
-(the)h Fg(expiry)g Fi(pro-)2280 1277 y(cess.)1922 1343
-y(C-c)i(M-C-x)51 b(Run)22 b(all)g(articles)f(in)h(all)g(groups)g
-(through)g(the)f Fg(expiry)h Fi(pro)r(cess.)1922 1410
-y(C-c)g(M-g)122 b(Activ)l(ate)22 b(all)g Fg(groups)p
-Fi(.)1922 1476 y(C-c)g(C-i)149 b(Gn)n(us)23 b(online-man)n(ual)d(\()p
-Fg(info)p Fi(\).)1922 1542 y(C-x)j(C-t)136 b Fg(T)-6
-b(ransp)r(ose)21 b Fi(t)n(w)n(o)i(groups.)1922 1609 y(H)f(f)266
-b(F)-5 b(etc)n(h)21 b(this)h(group's)g Fg(F)-8 b(A)n(Q)22
-b Fi(\(using)g(ange-ftp\).)1922 1675 y(H)g(c)257 b(Displa)n(y)22
-b(this)g(group's)g Fg(c)n(harter)p Fi(.)30 b([Pre\014x:)e(query)21
-b(for)h(group])1922 1742 y(H)g(C)240 b(Displa)n(y)19
-b(this)f(group's)h Fg(con)n(trol)i(message)e Fi(\(using)f(ange-ftp\).)
-27 b([Pre\014x:)2280 1808 y(query)21 b(for)h(group])1922
-1874 y(H)g(v)252 b(\(V\))22 b(Displa)n(y)g(the)g(Gn)n(us)g
-Fg(v)n(ersion)g Fi(n)n(um)n(b)r(er.)1922 1941 y(H)g(d)250
-b(\(C-c)26 b(C-d\))g(Sho)n(w)f(the)g Fg(description)g
-Fi(of)g(this)h(group)e([Pre\014x:)34 b(re-read)2280 2007
-y(from)22 b(serv)n(er].)1922 2074 y(M-d)239 b Fg(Describ)r(e)24
-b Fi(all)e(groups.)29 b([Pre\014x:)f(re-read)21 b(from)g(serv)n(er])
-1922 2140 y(D)h(g)253 b(Regenerate)20 b(a)j(Siev)n(e)e(script)g(from)h
-(group)g(parameters.)1922 2207 y(D)g(u)249 b(Regenerate)20
-b(Siev)n(e)h(script)h(and)g Fg(upload)f Fi(to)h(serv)n(er.)1922
-2385 y Fj(Group)38 b(Subscrib)s(edness-Lev)m(els)1922
-2489 y Fi(The)22 b(table)f(b)r(elo)n(w)h(assumes)g(that)g(y)n(ou)g(use)
-g(the)g(default)e(Gn)n(us)j(lev)n(els.)28 b(Fill)22 b(y)n(our)1922
-2556 y(user-sp)r(eci\014c)e(lev)n(els)h(in)h(the)f(blank)h(cells.)p
-1922 2645 1344 4 v 1920 2711 4 67 v 1972 2692 a(Lev)n(el)p
-2172 2711 V 98 w(Groups)p 2786 2711 V 405 w(Status)p
-3264 2711 V 1922 2715 1344 4 v 1920 2781 4 67 v 2031
-2761 a(1)p 2172 2781 V 159 w(draft/mail)f(groups)p 2786
-2781 V 3264 2781 V 1920 2848 V 2031 2828 a(2)p 2172 2848
-V 159 w(mail)h(groups)p 2786 2848 V 3264 2848 V 1920
-2914 V 2031 2894 a(3)p 2172 2914 V 2786 2914 V 774 w(subscrib)r(ed)p
-3264 2914 V 1920 2980 V 2031 2961 a(4)p 2172 2980 V 2786
-2980 V 3264 2980 V 1920 3047 V 2031 3027 a(5)p 2172 3047
-V 159 w(default)f(list)h(lev)n(el)p 2786 3047 V 3264
-3047 V 1922 3050 1344 4 v 1920 3117 4 67 v 2031 3097
-a(6)p 2172 3117 V 2786 3117 V 774 w(unsubscrib)r(ed)p
-3264 3117 V 1920 3183 V 2031 3163 a(7)p 2172 3183 V 2786
-3183 V 3264 3183 V 1922 3186 1344 4 v 1920 3253 4 67
-v 2031 3233 a(8)p 2172 3253 V 2786 3253 V 774 w(zom)n(bies)p
-3264 3253 V 1922 3256 1344 4 v 1920 3322 4 67 v 2031
-3303 a(9)p 2172 3322 V 2786 3322 V 774 w(killed)p 3264
-3322 V 1922 3326 1344 4 v 1922 3485 a Fj(List)37 b(Groups)1922
-3596 y Fi(A)22 b(d)73 b(\(C-c)29 b(C-M-a\))i(List)e(all)h(groups)f
-(whose)g(names)g(or)g Fg(descriptions)h Fi(matc)n(h)e(a)2103
-3663 y(regexp.)1922 3729 y(A)22 b(k)75 b(\(C-c)18 b(C-l\))g(List)g(all)
-g Fg(killed)g Fi(groups.)28 b([Pre\014x:)d(lo)r(ok)18
-b(at)g(activ)n(e-\014le)e(from)h(serv)n(er])1922 3796
-y(A)22 b(l)91 b(List)29 b(all)g(groups)g(on)g(a)g(sp)r(eci\014c)e(lev)n
-(el.)48 b([Pre\014x:)41 b(also)30 b(list)f(groups)g(with)g(no)2103
-3862 y(unread)21 b(articles])1922 3928 y(A)h(a)77 b(\(C-c)22
-b(C-a\))i(List)e(all)g(groups)g(whose)h(names)e(matc)n(h)g(a)i(regexp)e
-(\()p Fg(aprop)r(os)p Fi(\).)1922 3995 y(A)h(A)61 b(List)22
-b(the)g(serv)n(er's)f(activ)n(e-\014le.)1922 4061 y(A)h(M)50
-b(List)22 b(groups)g(that)g Fg(matc)n(h)h Fi(a)g(regexp.)1922
-4128 y(A)f(m)55 b(List)22 b(groups)g(that)g Fg(matc)n(h)h
-Fi(a)g(regexp)e(and)g(ha)n(v)n(e)h(unread)f(articles.)29
-b([lev)n(el])1922 4194 y(A)22 b(s)84 b(\(l\))18 b(List)h(all)f
-Fg(subscrib)r(ed)g Fi(groups)h(with)f(unread)f(articles.)27
-b([lev)n(el;)18 b(5)h(and)f(lo)n(w)n(er)2103 4260 y(is)k(the)g
-(default])1922 4327 y(A)g(u)73 b(\(L\))23 b(List)h(all)f(groups)h
-(\(including)d(read)i(and)g Fg(unsubscrib)r(ed)p Fi(\).)33
-b([lev)n(el;)22 b(7)i(and)2103 4393 y(lo)n(w)n(er)e(is)h(the)e
-(default])1922 4460 y(A)h(z)80 b(List)22 b(all)g Fg(zom)n(bie)h
-Fi(groups.)1922 4526 y(A)f(c)80 b(List)22 b(all)g(groups)g(with)h(cac)n
-(hed)d(articles.)28 b([lev)n(el])1922 4593 y(A)22 b(?)79
-b(List)22 b(all)g(groups)g(with)h(dorman)n(t)e(articles.)28
-b([lev)n(el])1922 4777 y Fj(Create/Edit)37 b(F)-9 b(oreign)38
-b(Groups)1922 4881 y Fi(The)22 b(select)f(metho)r(ds)g(are)h(indicated)
-e(in)h(paren)n(theses.)1922 4947 y(G)i(a)66 b(Mak)n(e)22
-b(the)g(Gn)n(us)g(list)g Fg(arc)n(hiv)n(e)h Fi(group.)29
-b(\(nndir)21 b(o)n(v)n(er)h(ange-ftp\))1922 5013 y(G)h(c)69
-b Fg(Customize)24 b Fi(this)e(group's)g(parameters.)1922
-5080 y(G)h(d)62 b(Mak)n(e)17 b(a)h Fg(directory)g Fi(group)f(\(ev)n
-(ery)f(\014le)h(m)n(ust)g(b)r(e)f(a)i(p)r(osting)e(and)h(\014les)g(m)n
-(ust)2095 5146 y(ha)n(v)n(e)22 b(n)n(umeric)f(names\).)28
-b(\(nndir\))1922 5213 y(G)23 b(D)49 b(En)n(ter)32 b(a)g
-Fg(directory)h Fi(as)g(a)f(\(temp)r(orary\))f(group.)58
-b(\(nneething)30 b(without)2095 5279 y(recording)21 b(articles)g
-(read\))1922 5345 y(G)i(e)69 b(\(M-e\))22 b Fg(Edit)h
-Fi(this)f(group's)g(select)f(metho)r(d.)1922 5412 y(G)i(E)54
-b Fg(Edit)23 b Fi(this)f(group's)g(info)g(\(select)e(metho)r(d,)h
-(articles)g(read,)h(etc\).)1860 5838 y Fd(1)p eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop -364 -317 a Fi(G)23 b(f)164 b(Mak)n(e)22
-b(a)h(group)f(based)f(on)h(a)h Fg(\014le)p Fi(.)30 b(\(nndo)r(c\))-364
--251 y(G)23 b(h)148 b(Mak)n(e)22 b(the)g(Gn)n(us)g Fg(help)h
-Fi(\(do)r(cumen)n(tation\))c(group.)29 b(\(nndo)r(c\))-364
--184 y(G)23 b(k)150 b(Mak)n(e)22 b(a)h Fg(kib)r(oze)f
-Fi(group.)29 b(\(nnkib)r(oze\))-364 -118 y(G)23 b(m)130
-b Fg(Mak)n(e)22 b Fi(a)h(new)e(group.)-364 -52 y(G)i(p)148
-b(Edit)22 b(this)g(group's)g Fg(parameters)p Fi(.)-364
-15 y(G)h(r)159 b(Rename)21 b(this)h(group)g(\(do)r(es)g(not)g(w)n(ork)h
-(with)f(read-only)f(groups!\).)-364 81 y(G)i(u)148 b(Create)22
-b(one)g(of)g(the)f(groups)i(men)n(tioned)d(in)h(gn)n(us-)p
-Fg(useful)p Fi(-groups.)-364 148 y(G)i(v)150 b(Add)22
-b(this)g(group)g(to)g(a)h Fg(virtual)f Fi(group.)29 b([p/p])-364
-214 y(G)23 b(V)136 b(Mak)n(e)22 b(a)h(new)f(empt)n(y)f
-Fg(virtual)h Fi(group.)29 b(\(nn)n(virtual\))-364 280
-y(G)23 b(w)138 b(Create)26 b(ephemeral)d(group)j(based)f(on)h(w)n
-(eb-searc)n(h.)40 b([Pre\014x:)35 b(mak)n(e)25 b(solid)-105
-347 y(group)d(instead])-364 413 y(G)h(R)137 b(Mak)n(e)22
-b(an)g Fg(RSS)g Fi(group.)-364 480 y(G)h(DEL)49 b Fg(Delete)25
-b Fi(group)d([Pre\014x:)27 b(delete)21 b(all)h(articles)f(as)i(w)n
-(ell].)-364 546 y(G)g(x)150 b(Expunge)21 b(all)h(deleted)e(articles)h
-(in)h(an)g(nnimap)f(mailb)r(o)n(x.)-364 613 y(G)i(l)166
-b(Edit)22 b(A)n(CL)h(\(Access)e(Con)n(trol)i Fg(List)p
-Fi(\))f(for)g(an)g(nnimap)f(mailb)r(o)n(x.)-364 684 y(Y)-5
-b(ou)22 b(can)g(also)g(create)f(mail-groups)h(and)g(read)f(y)n(our)i
-(mail)e(with)h(Gn)n(us)h(\(v)n(ery)f(useful)-364 751
-y(if)g(y)n(ou)g(are)g(subscrib)r(ed)e(to)j(mailing)e(lists\),)h(using)g
-(one)g(of)g(the)f(metho)r(ds)g(nnm)n(b)r(o)n(x,)-364
-817 y(nn)n(bab)n(yl,)f(nnml,)g(nnmh,)g(or)i(nnfolder.)27
-b(Read)20 b(ab)r(out)h(it)g(in)g(the)f(online)g(info)h(\(C-c)g(C-i)-364
-884 y(g)i(Reading)e(Mail)h(RET\).)-364 1081 y Fj(Unsubscrib)s(e,)39
-b(Kill)f(and)g(Y)-9 b(ank)38 b(Groups)-364 1193 y Fi(S)22
-b(k)120 b(\(C-k\))23 b Fg(Kill)g Fi(this)f(group.)-364
-1259 y(S)g(l)136 b(Set)21 b(the)h Fg(lev)n(el)h Fi(of)f(this)g(group.)
-29 b([p/p])-364 1326 y(S)22 b(s)129 b(\(U\))22 b(Prompt)f(for)h(a)h
-(group)e(and)h(toggle)g(its)h Fg(subscription)p Fi(.)-364
-1392 y(S)f(t)129 b(\(u\))22 b Fg(T)-6 b(oggle)21 b Fi(subscription)g
-(to)h(this)h(group.)28 b([p/p])-364 1459 y(S)22 b(w)108
-b(\(C-w\))23 b(Kill)f(all)g(groups)g(in)g(the)f(region.)-364
-1525 y(S)h(y)120 b(\(C-y\))23 b Fg(Y)-6 b(ank)21 b Fi(the)h(last)g
-(killed)f(group.)-364 1591 y(S)h(z)125 b(Kill)21 b(all)h
-Fg(zom)n(bie)h Fi(groups.)-364 1658 y(S)f(C-k)51 b(Kill)21
-b(all)h(groups)g(on)h(a)f(certain)f(lev)n(el.)-364 1837
-y Fj(Mark)38 b(Groups)-364 1948 y Fi(M)22 b(m)50 b(\(#\))21
-b(Set)h(the)f(pro)r(cess)h Fg(mark)g Fi(on)g(this)g(group.)29
-b([scop)r(e])-364 2015 y(M)22 b(r)79 b(Mark)22 b(all)g(groups)g(matc)n
-(hing)f(regular)g(expression.)-364 2081 y(M)h(u)68 b(\(M-#\))22
-b(Remo)n(v)n(e)f(the)h(pro)r(cess)f(mark)h(from)f(this)i(group)e(\()p
-Fg(unmark)p Fi(\).)29 b([scop)r(e])-364 2147 y(M)22 b(U)56
-b(Remo)n(v)n(e)21 b(the)h(pro)r(cess)f(mark)h(from)g(all)g(groups)g(\()
-p Fg(umark)i(all)p Fi(\).)-364 2214 y(M)e(w)58 b(Mark)22
-b(all)g(groups)g(in)g(the)f(curren)n(t)g(region.)28 b([pre\014x:)g
-(unmark])-364 2280 y(M)22 b(b)68 b(Mark)22 b(all)g(groups)g(in)g(the)f
-Fg(bu\013er)p Fi(.)30 b([pre\014x:)d(unmark])-364 2459
-y Fj(Group-Unplugged)-364 2571 y Fi(J)22 b(j)78 b(T)-5
-b(oggle)22 b(plugged-state.)-364 2637 y(J)g(s)73 b(F)-5
-b(etc)n(h)21 b(articles)g(from)h(all)g(groups)g(for)g
-(o\017ine-reading.)-364 2704 y(J)g(u)62 b(F)-5 b(etc)n(h)21
-b(all)h(eligible)e(articles)i(from)f(this)h(group.)-364
-2770 y(J)g(S)62 b Fg(Send)22 b Fi(all)g(sendable)f(messages)h(in)g(the)
-f(drafts)h(group.)-364 2836 y(J)g(c)69 b(En)n(ter)22
-b Fg(category)h Fi(bu\013er.)-364 2903 y(J)f(a)66 b Fg(Add)22
-b Fi(this)g(group)g(to)h(an)f(Agen)n(t)g(category)f([p/p].)-364
-2969 y(J)h(r)73 b Fg(Remo)n(v)n(e)23 b Fi(this)f(group)g(from)f(its)i
-(Agen)n(t)f(category)f([p/p].)-364 3036 y(J)h(Y)50 b(Sync)n(hronize)20
-b(\015ags)i(c)n(hanged)f(while)h(unplugged)e(with)i(remote)f(serv)n
-(er.)-364 3214 y Fj(Group)38 b(T)-9 b(opics)-364 3318
-y Fi(T)k(opics)22 b(are)g(\\categories")f(for)h(groups.)29
-b(Press)22 b(t)h(in)f(the)f(group-bu\013er)g(to)i(toggle)-364
-3385 y(gn)n(us-topic-mo)r(de)e(\(C-c)i(C-i)f(g)h(Group)f(T)-5
-b(opics)22 b(RET\).)-364 3454 y(T)h(n)169 b(Prompt)22
-b(for)g(topic)f Fg(name)h Fi(and)g(create)f(it.)-364
-3521 y(T)i(m)151 b Fg(Mo)n(v)n(e)22 b Fi(the)f(curren)n(t)g(group)h(to)
-g(some)g(other)g(topic)f([p/p].)-364 3587 y(T)i(j)185
-b Fg(Jump)22 b Fi(to)h(a)f(topic.)-364 3653 y(T)h(c)176
-b Fg(Cop)n(y)22 b Fi(the)f(curren)n(t)g(group)h(to)g(some)g(other)g
-(topic)f([p/p].)-364 3720 y(T)i(D)156 b(Remo)n(v)n(e)22
-b(\(not)g(delete\))e(the)i(curren)n(t)e(group)i([p/p].)-364
-3786 y(T)h(M)146 b Fg(Mo)n(v)n(e)22 b Fi(all)g(groups)g(matc)n(hing)f
-(a)h(regexp)f(to)i(a)f(topic.)-364 3853 y(T)h(C)159 b
-Fg(Cop)n(y)22 b Fi(all)g(groups)g(matc)n(hing)f(a)h(regexp)f(to)i(a)f
-(topic.)-364 3919 y(T)h(H)157 b(T)-5 b(oggle)22 b Fg(hiding)g
-Fi(of)g(empt)n(y)f(topics.)-364 3985 y(T)i(r)180 b Fg(Rename)23
-b Fi(a)g(topic.)-364 4052 y(T)g(DEL)70 b(Delete)21 b(an)h(empt)n(y)f
-(topic.)-364 4118 y(T)i(#)151 b(Mark)22 b(all)g(groups)h(in)e(the)h
-(curren)n(t)f(topic)g(with)h(the)g(pro)r(cess-mark.)-364
-4185 y(T)h(M-#)69 b(Remo)n(v)n(e)22 b(the)f(pro)r(cess-mark)h(from)f
-(all)h(groups)g(in)g(the)g(curren)n(t)f(topic.)-364 4251
-y(T)i(T)-5 b(AB)69 b(\(T)-5 b(AB\))23 b(Inden)n(t)e(curren)n(t)g(topic)
-g([Pre\014x:)28 b(uninden)n(t].)-364 4318 y(M-T)-5 b(AB)57
-b(Uninden)n(t)21 b(the)g(curren)n(t)g(topic.)-364 4384
-y(RET)136 b(\(SPC\))22 b(Either)f(unfold)g(topic)g(or)i(en)n(ter)e
-(group)h([lev)n(el].)-364 4450 y(T)h(s)180 b Fg(Sho)n(w)22
-b Fi(the)f(curren)n(t)g(topic.)28 b([Pre\014x:)g(sho)n(w)23
-b(p)r(ermanen)n(tly])-364 4517 y(T)g(h)169 b Fg(Hide)23
-b Fi(the)f(curren)n(t)e(topic.)29 b([Pre\014x:)e(hide)22
-b(p)r(ermanen)n(tly])-364 4583 y(C-c)h(C-x)50 b(Expire)21
-b(all)h(articles)f(in)h(curren)n(t)f(group)h(or)g(topic.)-364
-4650 y(C-k)172 b Fg(Kill)23 b Fi(a)g(group)f(or)g(topic.)-364
-4716 y(C-y)172 b Fg(Y)-6 b(ank)22 b Fi(a)g(group)g(or)g(topic.)-364
-4782 y(A)h(T)157 b(List)23 b(activ)n(e-\014le)d(using)i
-Fg(topics)p Fi(.)-364 4849 y(G)h(p)165 b(Edit)22 b(topic-)p
-Fg(parameters)p Fi(.)-364 4915 y(T)h(M-n)87 b(Go)23 b(to)g
-Fg(next)f Fi(topic.)28 b([distance])-364 4982 y(T)23
-b(M-p)87 b(Go)23 b(to)g Fg(previous)e Fi(topic.)28 b([distance])-364
-5149 y Fc(T)-8 b(opic)32 b(Sorting)-364 5257 y Fi(T)23
-b(S)f(a)54 b(Sort)22 b Fg(alphab)r(etically)p Fi(.)-364
-5324 y(T)h(S)f(u)50 b(Sort)22 b(b)n(y)g(n)n(um)n(b)r(er)e(of)i
-Fg(unread)g Fi(articles.)-364 5390 y(T)h(S)f(l)68 b(Sort)22
-b(b)n(y)g(group)f Fg(lev)n(el)p Fi(.)1922 -317 y(T)i(S)f(v)69
-b(Sort)22 b(b)n(y)g(group)g(score)g(\()p Fg(v)l(alue)p
-Fi(\).)1922 -251 y(T)h(S)f(r)78 b(Sort)22 b(b)n(y)g(group)g
-Fg(rank)p Fi(.)1922 -184 y(T)h(S)f(m)49 b(Sort)22 b(b)n(y)g
-Fg(metho)r(d)p Fi(.)1922 -118 y(T)h(S)f(e)74 b(Sort)22
-b(b)n(y)g Fg(serv)n(er)h Fi(name.)1922 -52 y(T)g(S)f(s)78
-b(Sort)22 b(according)f(to)h(`gn)n(us-group-sort-function'.)1922
-17 y(With)f(a)i(pre\014x)e(these)g(commands)g(will)h(sort)h(in)f(rev)n
-(erse)f(order.)1922 254 y Ff(Summary)45 b(Mo)t(de)1922
-390 y Fi(SPC)143 b(\(A)20 b(SPC,)g(A)g(n\))f(Select)f(an)i(article,)f
-(scroll)h(it)f(one)h(page,)g(mo)n(v)n(e)f(to)h(the)f(next)2194
-456 y(one.)1922 522 y(DEL)136 b(\(A)22 b(DEL,)g(A)g(p,)g(b\))g(Scroll)f
-(this)i(article)e(one)g(page)h(bac)n(k.)29 b([distance])1922
-589 y(RET)132 b(\(A)22 b(RET\))h(Scroll)e(this)h(article)f(one)h(line)f
-(forw)n(ard.)29 b([distance])1922 655 y(M-RET)50 b(\(A)22
-b(M-RET\))h(Scroll)e(this)h(article)f(one)h(line)f(bac)n(kw)n(ard.)29
-b([distance])1922 722 y(=)221 b(Expand)22 b(the)g(Summary)f(windo)n(w)i
-(\(fullsize\).)29 b([Pre\014x:)g(shrink)22 b(to)h(displa)n(y)2194
-788 y(article)e(windo)n(w])1922 854 y(&)221 b(Execute)18
-b(a)i(command)e(on)i(all)g(articles)f(whose)h(header)e(matc)n(hes)h(a)h
-(regexp.)2194 921 y([Pre\014x:)28 b(mo)n(v)n(e)21 b(bac)n(kw)n(ards])
-1922 987 y(M-&)139 b(Execute)20 b(a)i(command)f(on)h(all)g(articles)f
-(ha)n(ving)h(the)g(pro)r(cess)f(mark.)1922 1054 y(M-n)153
-b(\(G)25 b(M-n\))g(Go)g(to)h(the)e Fg(next)h Fi(summary)f(line)g(of)g
-(an)h(unread)f(article.)35 b([dis-)2194 1120 y(tance])1922
-1187 y(M-p)153 b(\(G)28 b(M-p\))f(Go)h(to)g(the)f Fg(previous)f
-Fi(summary)h(line)f(of)h(an)h(unread)e(article.)2194
-1253 y([distance])1922 1319 y(M-s)164 b Fg(Searc)n(h)22
-b Fi(through)g(all)g(subsequen)n(t)f(articles)g(for)h(a)g(regexp.)1922
-1386 y(M-r)164 b(Searc)n(h)21 b(through)g(all)h(previous)g(articles)f
-(for)h(a)g(regexp.)1922 1452 y(A)g(P)156 b Fg(P)n(ostscript)p
-Fi(-prin)n(t)22 b(curren)n(t)f(bu\013er.)1922 1519 y(M-k)155
-b(Edit)21 b(this)h(group's)g Fg(kill)h Fi(\014le.)1922
-1585 y(M-K)139 b(Edit)21 b(the)h(general)f Fg(kill)h
-Fi(\014le.)1922 1652 y(C-t)177 b(T)-5 b(oggle)22 b Fg(truncation)g
-Fi(of)g(summary)f(lines.)1922 1718 y(Y)h(g)168 b(Regenerate)20
-b(the)i(summary-bu\013er.)1922 1784 y(Y)g(c)171 b(Insert)22
-b(all)g(cac)n(hed)e(articles)i(in)n(to)g(the)f(summary-bu\013er.)1922
-1851 y(M-C-e)91 b Fg(Edit)23 b Fi(the)e(group-parameters.)1922
-1917 y(M-C-a)88 b(Customize)21 b(the)h(group-parameters.)1922
-1984 y(A)g Fe(<)149 b Fi(\()p Fe(<)p Fi(,)22 b(A)g(b\))g(Scroll)f(to)i
-(the)e(b)r(eginning)g(of)h(this)g(article.)1922 2050
-y(A)g Fe(>)149 b Fi(\()p Fe(>)p Fi(,)22 b(A)g(e\))g(Scroll)f(to)i(the)e
-(end)g(of)i(this)f(article.)1922 2116 y(A)g(s)175 b(\(s\))23
-b(P)n(erform)d(an)i(i)p Fg(searc)n(h)h Fi(in)e(the)h(article)f
-(bu\013er.)1922 2183 y(A)h(D)151 b(\(C-d\))21 b(Un)p
-Fg(digestify)f Fi(this)g(article)f(in)n(to)h(a)g(separate)g(group.)28
-b([Pre\014x:)f(force)2194 2249 y(digest])1922 2316 y(M-C-d)84
-b(Lik)n(e)19 b(C-d,)h(but)e(op)r(en)g(sev)n(eral)h(do)r(cumen)n(ts)e
-(in)i(nndo)r(c-groups,)f(wrapp)r(ed)g(in)2194 2382 y(an)k(nn)n(virtual)
-f(group)h([p/p])1922 2449 y(A)g(g)168 b(\(g\))22 b(\(Re\)fetc)n(h)f
-(this)h(article)f(\()p Fg(get)p Fi(\).)29 b([Pre\014x:)f(get)22
-b(ra)n(w)h(v)n(ersion])1922 2515 y(A)f(r)175 b(\(^,)20
-b(A)g(^\))g(F)-5 b(etc)n(h)18 b(the)h(paren)n(t\(s\))g(of)g(this)h
-(article.)27 b([Pre\014x:)f(if)19 b(p)r(ositiv)n(e)g(fetc)n(h)2194
-2581 y Fb(n)28 b Fi(ancestors;)21 b(negativ)n(e:)28 b(fetc)n(h)21
-b(only)h(the)g Fb(n)5 b Fi(th)22 b(ancestor])1922 2648
-y(A)g(t)175 b Fg(T)-6 b(ranslate)22 b Fi(this)g(article.)1922
-2714 y(A)g(R)153 b(F)-5 b(etc)n(h)21 b(all)h(articles)f(men)n(tioned)f
-(in)i(the)f Fg(References)p Fi(-header.)1922 2781 y(A)h(T)154
-b(F)-5 b(etc)n(h)21 b(full)g Fg(thread)h Fi(in)g(whic)n(h)g(the)f
-(curren)n(t)g(article)g(app)r(ears.)1922 2847 y(M-^)157
-b(F)-5 b(etc)n(h)21 b(the)g(article)g(with)h(a)h(giv)n(en)e
-(Message-ID.)1922 2913 y(S)h(y)178 b Fg(Y)-6 b(ank)21
-b Fi(the)h(curren)n(t)f(article)g(in)n(to)h(an)g(existing)f
-(message-bu\013er.)28 b([p/p])1922 2980 y(A)22 b(M)141
-b(Setup)28 b(group)i(parameters)e(for)h Fg(mailing)h
-Fi(lists)g(from)f(headers.)50 b([Pre\014x:)2194 3046
-y(replace)20 b(old)i(settings])1922 3225 y Fj(Select)37
-b(Articles)1922 3329 y Fi(These)22 b(commands)e(select)h(the)h(target)g
-(article.)28 b(They)22 b(do)g(not)g(understand)e(the)1922
-3395 y(pre\014x.)1922 3461 y(h)193 b(En)n(ter)21 b(article-bu\013er.)
-1922 3528 y(G)i(b)119 b(\(,\))22 b(Go)h(to)f(the)g Fg(b)r(est)g
-Fi(article)f(\(the)h(one)f(with)i(highest)e(score\).)1922
-3594 y(G)i(f)135 b(\(.\))29 b(Go)23 b(to)f(the)g Fg(\014rst)h
-Fi(unread)d(article.)1922 3661 y(G)j(n)119 b(\(n\))22
-b(Go)h(to)f(the)f Fg(next)i Fi(unread)e(article.)1922
-3727 y(G)i(p)119 b(\(p\))22 b(Go)h(to)f(the)f Fg(previous)h
-Fi(unread)f(article.)1922 3794 y(G)i(N)107 b(\(N\))22
-b(Go)h(to)f Fg(the)h Fi(next)f(article.)1922 3860 y(G)h(P)111
-b(\(P\))22 b(Go)h(to)f(the)f Fg(previous)h Fi(article.)1922
-3926 y(G)h(C-n)50 b(\(M-C-n\))23 b(Go)f(to)h(the)e Fg(next)i
-Fi(article)e(with)h(the)g(same)f(sub)t(ject.)1922 3993
-y(G)i(C-p)50 b(\(M-C-p\))23 b(Go)f(to)h(the)e Fg(previous)h
-Fi(article)f(with)h(the)f(same)h(sub)t(ject.)1922 4059
-y(G)h(l)137 b(\(l\))22 b(Go)h(to)f(the)g(previously)f(read)g(article)g
-(\()p Fg(last-read-article)p Fi(\).)1922 4126 y(G)i(o)123
-b(P)n(op)22 b(an)g(article)f(o\013)i(the)e(summary)h(history)g(and)f
-(go)i(to)f(it.)1922 4192 y(G)h(g)123 b(Searc)n(h)21 b(an)h(article)f
-(via)h(sub)t(ject.)1922 4258 y(G)h(j)135 b(\(j\))22 b(Searc)n(h)f(an)h
-(article)f(via)h(Message-Id)g(or)g(sub)t(ject.)1922 4437
-y Fj(Threading)1922 4549 y Fi(T)h(#)131 b(Mark)22 b(this)g(thread)f
-(with)i(the)e(pro)r(cess)h(mark.)1922 4615 y(T)h(M-#)49
-b(Remo)n(v)n(e)22 b(pro)r(cess-marks)f(from)h(this)g(thread.)1922
-4682 y(T)h(t)160 b(Re-)p Fg(thread)22 b Fi(the)g(curren)n(t)f
-(article's)g(thread.)1922 4748 y(T)i(^)153 b(Mak)n(e)22
-b(the)f(curren)n(t)g(article)g(c)n(hild)g(of)h(the)g(mark)n(ed)f(\(or)h
-(previous\))f(article.)1922 4815 y(T)i(n)149 b(\(M-C-f,)23
-b(M-do)n(wn\))f(Go)h(to)f(the)g Fg(next)g Fi(thread.)29
-b([distance])1922 4881 y(T)23 b(p)149 b(\(M-C-b,)23 b(M-up\))e(Go)i(to)
-g(the)e Fg(previous)h Fi(thread.)28 b([distance])1922
-4947 y(T)23 b(d)149 b Fg(Descend)23 b Fi(this)f(thread.)28
-b([distance])1922 5014 y(T)23 b(u)149 b(Ascend)21 b(this)h(thread)f(\()
-p Fg(up)p Fi(-thread\).)28 b([distance])1922 5080 y(T)23
-b(o)153 b(Go)23 b(to)f(the)g(top)g(of)g(this)g(thread.)1922
-5147 y(T)h(s)160 b Fg(Sho)n(w)22 b Fi(the)f(thread)g(hidden)g(under)f
-(this)j(article.)1922 5213 y(T)g(h)149 b Fg(Hide)23 b
-Fi(this)f(\(sub\)thread.)1922 5280 y(T)h(i)167 b Fg(Increase)23
-b Fi(the)e(score)h(of)g(this)g(thread.)1922 5346 y(T)h(l)167
-b(\(M-C-l\))23 b Fg(Lo)n(w)n(er)f Fi(the)g(score)g(of)g(this)g(thread.)
-1860 5838 y Fd(2)p eop end
-%%Page: 3 3
-TeXDict begin 3 2 bop -364 -317 a Fi(T)23 b(k)64 b(\(M-C-k\))33
-b Fg(Kill)g Fi(the)e(curren)n(t)g(\(sub\)thread.)57 b([Negativ)n(e)31
-b(pre\014x:)48 b(tic)n(k)32 b(it,)-195 -251 y(p)r(ositiv)n(e)21
-b(pre\014x:)28 b(unmark)21 b(it.])-364 -184 y(T)i(H)50
-b Fg(Hide)23 b Fi(all)f(threads.)-364 -118 y(T)h(S)62
-b Fg(Sho)n(w)21 b Fi(all)h(hidden)f(threads.)-364 -52
-y(T)i(T)52 b(\(M-C-t\))23 b Fg(T)-6 b(oggle)22 b Fi(threading.)-364
-127 y Fj(Limiting)-364 239 y Fi(//)103 b(\(/s\))22 b(Limit)g(the)f
-(summary-bu\013er)g(to)i(articles)e(matc)n(hing)g Fg(sub)t(ject)p
-Fi(.)-364 305 y(/a)103 b(Limit)21 b(the)h(summary-bu\013er)f(to)h
-(articles)f(matc)n(hing)g Fg(author)p Fi(.)-364 372 y(/x)101
-b(Limit)21 b(dep)r(ending)f(on)i(\\extra")g(headers.)-364
-438 y(/u)99 b(\(x\))22 b(Limit)g(to)h Fg(unread)f Fi(articles.)29
-b([Pre\014x:)f(also)23 b(exclude)d(tic)n(k)n(ed)i(and)g(dorman)n(t)-195
-504 y(articles])-364 571 y(/.)117 b(Limit)21 b(to)i(unseen)d(articles.)
--364 637 y(/m)81 b(Limit)21 b(to)i(articles)e(mark)n(ed)g(with)h(sp)r
-(eci\014ed)e Fg(mark)p Fi(.)-364 704 y(/t)110 b(Ask)27
-b(for)g(a)h(n)n(um)n(b)r(er)e(and)g(exclude)f(articles)i(y)n(ounger)f
-(than)h(that)g(man)n(y)g(da)n(ys.)-195 770 y([Pre\014x:)g(exclude)20
-b(older)i(articles])-364 837 y(/n)99 b(Limit)21 b(to)i(curren)n(t)d
-(article.)28 b([p/p])-364 903 y(/w)89 b(P)n(op)30 b(the)g(previous)g
-(limit)f(o\013)j(the)d(stac)n(k)i(and)f(restore)g(it.)55
-b([Pre\014x:)44 b(p)r(op)30 b(all)-195 969 y(limits])-364
-1036 y(/v)101 b(Limit)21 b(to)i(score.)28 b([score])-364
-1102 y(/E)91 b(\(M)22 b(S\))g(Include)e(all)i(expunged)e(articles)h(in)
-h(the)g(limit.)-364 1169 y(/D)86 b(Include)20 b(all)i(dorman)n(t)g
-(articles)f(in)h(the)f(limit.)-364 1235 y(/*)103 b(Limit)21
-b(to)i(cac)n(hed)d(articles.)-364 1301 y(Y)j(C)50 b(Include)20
-b(all)i(cac)n(hed)f(articles)g(in)h(the)f(limit.)-364
-1368 y(/d)99 b(Exclude)20 b(all)i(dorman)n(t)f(articles)h(from)f(the)h
-(limit.)-364 1434 y(/M)76 b(Exclude)20 b(all)i(mark)n(ed)f(articles.)
--364 1501 y(/T)89 b(Include)20 b(all)i(articles)f(from)h(the)f(curren)n
-(t)g(thread)g(in)h(the)g(limit.)-364 1567 y(/c)106 b(Exclude)20
-b(all)i(dorman)n(t)f(articles)h(that)g(ha)n(v)n(e)g(no)g(c)n(hildren)e
-(from)i(the)f(limit.)-364 1634 y(/C)89 b(Mark)18 b(all)h(excluded)d
-(unread)h(articles)h(as)h(read.)27 b([Pre\014x:)f(also)19
-b(mark)g(tic)n(k)n(ed)e(and)-195 1700 y(dorman)n(t)k(articles])-364
-1766 y(/o)103 b(Insert)22 b(all)g Fg(old)f Fi(articles.)29
-b([Pre\014x:)e(ho)n(w)c(man)n(y])-364 1833 y(/N)87 b(Insert)22
-b(all)g Fg(new)g Fi(articles.)-364 1899 y(/p)99 b(Limit)21
-b(to)i(articles)e Fg(predicated)i Fi(in)f(the)f(`displa)n(y')h(group)g
-(parameter.)-364 2078 y Fj(Sort)37 b(the)h(Summary-Bu\013er)-364
-2190 y Fi(C-c)23 b(C-s)g(C-a)55 b(Sort)22 b(the)f(summary-bu\013er)g(b)
-n(y)h Fg(author)p Fi(.)-364 2256 y(C-c)h(C-s)g(C-d)51
-b(Sort)22 b(the)f(summary-bu\013er)g(b)n(y)h Fg(date)p
-Fi(.)-364 2323 y(C-c)h(C-s)g(C-i)69 b(Sort)22 b(the)f(summary-bu\013er)
-g(b)n(y)h(article)f(score.)-364 2389 y(C-c)i(C-s)g(C-l)69
-b(Sort)22 b(the)f(summary-bu\013er)g(b)n(y)h(amoun)n(t)g(of)g
-Fg(lines)p Fi(.)-364 2455 y(C-c)h(C-s)g(C-c)58 b(Sort)22
-b(the)f(summary-bu\013er)g(b)n(y)h(length.)-364 2522
-y(C-c)h(C-s)g(C-n)51 b(Sort)22 b(the)f(summary-bu\013er)g(b)n(y)h
-(article)f Fg(n)n(um)n(b)r(er)p Fi(.)-364 2588 y(C-c)i(C-s)g(C-s)62
-b(Sort)22 b(the)f(summary-bu\013er)g(b)n(y)h Fg(sub)t(ject)p
-Fi(.)-364 2655 y(C-c)h(C-s)g(C-r)62 b(Sort)22 b(the)f(summary-bu\013er)
-g Fg(randomly)p Fi(.)-364 2721 y(C-c)i(C-s)g(C-o)55 b(Sort)22
-b(the)f(summary-bu\013er)g(using)h(the)f(default)g(metho)r(d.)-364
-2790 y(With)h(a)g(pre\014x)f(these)h(functions)e(sort)j(in)f(rev)n
-(erse)f(order.)-364 2987 y Fj(Score)38 b(\(V)-9 b(alue\))36
-b(Commands)-364 3091 y Fi(Read)22 b(ab)r(out)g(Adaptiv)n(e)f(Scoring)g
-(in)h(the)f(online)g(info.)-364 3157 y(V)i(a)202 b Fg(Add)22
-b Fi(a)h(new)f(score)f(en)n(try)-5 b(,)21 b(sp)r(ecifying)f(all)i
-(elemen)n(ts.)-364 3224 y(V)h(c)205 b(Sp)r(ecify)20 b(a)i(new)g(score)g
-(\014le)f(as)i Fg(curren)n(t)p Fi(.)-364 3290 y(V)g(e)205
-b Fg(Edit)23 b Fi(the)e(curren)n(t)g(score)h(alist.)-364
-3356 y(V)h(f)214 b(Edit)22 b(a)g(score)g Fg(\014le)h
-Fi(and)f(mak)n(e)f(it)h(the)g(curren)n(t)f(one.)-364
-3423 y(V)i(m)180 b Fg(Mark)22 b Fi(all)g(articles)f(b)r(elo)n(w)h(a)g
-(giv)n(en)g(score)f(as)i(read.)-364 3489 y(V)g(s)209
-b(Set)22 b(the)f Fg(score)i Fi(of)f(this)g(article.)-364
-3556 y(V)h(t)209 b(Displa)n(y)22 b(all)g(score)g(rules)g(applied)e(to)j
-(this)f(article)f(\()p Fg(trac)n(k)p Fi(\).)-364 3622
-y(W)h(w)171 b(List)23 b Fg(w)n(ords)e Fi(used)h(in)g(scoring.)-364
-3689 y(V)h(x)200 b Fg(Expunge)22 b Fi(all)g(lo)n(w-scored)g(articles.)
-28 b([score])-364 3755 y(V)23 b(C)188 b Fg(Customize)17
-b Fi(the)f(curren)n(t)f(score)g(\014le)g(through)h(a)g(user-friendly)e
-(in)n(terface.)-364 3821 y(V)23 b(F)192 b Fg(Flush)22
-b Fi(the)f(cac)n(he)g(of)h(score)g(\014les.)-364 3888
-y(V)h(R)187 b Fg(Re-score)23 b Fi(the)f(summary)f(bu\013er.)-364
-3954 y(V)i(S)198 b(Displa)n(y)22 b(the)g Fg(score)h Fi(of)f(this)g
-(article.)-364 4021 y Fg(A)k(p)f(m)g(l)50 b Fi(Mak)n(e)22
-b(a)g(scoring)g(en)n(try)g(based)f(on)i(this)f(article.)-364
-4089 y(The)g(four)g(letters)f(stand)h(for:)-298 4156
-y Fg(A)p Fi(\)ction:)29 b(I\)ncrease,)21 b(L\)o)n(w)n(er;)-298
-4222 y Fg(p)p Fi(\)art:)29 b(a\)uthor)22 b(\(from\),)f(s\)ub)t(ject,)f
-(x\)refs)i(\(cross-p)r(osting\),)g(d\)ate,)f(l\)ines,)-364
-4288 y(message-i\)d,)h(t\)references)d(\(paren)n(t\),)i(f)5
-b(\)ollo)n(wup,)21 b(b\)o)r(dy)-5 b(,)21 b(h\)ead)g(\(all)h(headers\);)
--298 4355 y Fg(m)p Fi(\)atc)n(h)h(t)n(yp)r(e:)-231 4421
-y(string:)29 b(s\)ubstring,)21 b(e\)xact,)g(r\)egexp,)g(f)5
-b(\)uzzy)-5 b(,)-231 4488 y(date:)28 b(b\)efore,)21 b(a\)t,)h(n\)this,)
--231 4554 y(n)n(um)n(b)r(er:)27 b Fe(<)p Fi(,)22 b(=,)g
-Fe(>)p Fi(;)-298 4621 y Fg(l)p Fi(\)ifetime:)27 b(t\)emp)r(orary)-5
-b(,)21 b(p\)ermanen)n(t,)f(i\)mmediate.)-364 4687 y(If)i(y)n(ou)g(t)n
-(yp)r(e)g(the)f(second)g(letter)g(in)h(upp)r(ercase,)e(the)i(remaining)
-e(t)n(w)n(o)j(are)f(assumed)-364 4753 y(to)h(b)r(e)e(s\)ubstring)h(and)
-f(t\)emp)r(orary)-5 b(.)28 b(If)22 b(y)n(ou)g(t)n(yp)r(e)f(the)h(third)
-f(letter)g(in)h(upp)r(ercase,)-364 4820 y(the)g(last)g(one)g(is)g
-(assumed)g(to)g(b)r(e)g(t\)emp)r(orary)-5 b(.)-298 4886
-y(Extra)22 b(k)n(eys)g(for)g(man)n(ual)g(editing)f(of)h(a)g(score)g
-(\014le:)-364 4952 y(C-c)h(C-c)57 b(Finish)22 b(editing)e(the)i(score)g
-(\014le.)-364 5019 y(C-c)h(C-d)50 b(Insert)22 b(the)f(curren)n(t)g
-Fg(date)i Fi(as)f(n)n(um)n(b)r(er)f(of)h(da)n(ys.)-364
-5197 y Fj(Output)38 b(Articles)-364 5309 y Fi(O)23 b(o)53
-b(\(o,)22 b(C-o\))h(Sa)n(v)n(e)f(this)g(article)f(using)h(the)g
-(default)e(article)h(sa)n(v)n(er.)30 b([p/p])-364 5376
-y(O)23 b(b)49 b(Sa)n(v)n(e)22 b(this)g(article's)f Fg(b)r(o)r(dy)g
-Fi(in)h(plain)g(\014le)f(format)g([p/p])-364 5442 y(O)i(f)65
-b(Sa)n(v)n(e)22 b(this)g(article)f(in)h(plain)f Fg(\014le)i
-Fi(format.)29 b([p/p])1922 -317 y(O)22 b(F)62 b(lik)n(e)21
-b(O)h(f,)g(but)g(o)n(v)n(erwrite)g(\014le's)f(con)n(ten)n(ts.)28
-b([p/p])1922 -251 y(O)22 b(h)68 b(Sa)n(v)n(e)21 b(this)i(article)e(in)g
-Fg(mh)i Fi(folder)e(format.)28 b([p/p])1922 -184 y(O)22
-b(m)50 b(Sa)n(v)n(e)21 b(this)i(article)e(in)g Fg(mail)i
-Fi(format.)28 b([p/p])1922 -118 y(O)22 b(r)79 b(Sa)n(v)n(e)21
-b(this)i(article)e(in)g Fg(rmail)i Fi(format.)28 b([p/p])1922
--52 y(O)22 b(v)70 b(Sa)n(v)n(e)21 b(this)i(article)e(in)g
-Fg(vm)i Fi(format.)28 b([p/p])1922 15 y(O)22 b(p)68 b(\()p
-Fa(j)p Fi(\))21 b Fg(Pip)r(e)i Fi(this)f(article)f(to)i(a)f(shell)g
-(command.)27 b([p/p])1922 81 y(O)22 b(P)60 b Fg(Prin)n(t)22
-b Fi(this)g(article)f(using)h(Muttprin)n(t.)28 b([p/p])1922
-265 y Fj(Extract)36 b(Series)i(\(Uudeco)s(de)g(etc\))1922
-380 y Fi(Gn)n(us)22 b(recognizes)f(if)h(the)f(curren)n(t)g(article)g
-(is)h(part)g(of)g(a)h(series)f(\(m)n(ultipart)e(p)r(osting)1922
-446 y(whose)i(parts)g(are)g(iden)n(ti\014ed)e(b)n(y)i(n)n(um)n(b)r(ers)
-f(in)h(their)f(sub)t(jects,)g(e.g.)28 b(1/10.)11 b(.)g(.)f(10/10\))1922
-513 y(and)22 b(pro)r(cesses)f(the)g(series)h(accordingly)-5
-b(.)27 b(Y)-5 b(ou)22 b(can)g(mark)f(and)h(pro)r(cess)g(more)f(than)
-1922 579 y(one)g(series)h(at)h(a)f(time.)28 b(If)22 b(the)g(p)r(osting)
-f(con)n(tains)h(an)n(y)g(arc)n(hiv)n(es,)g(they)f(are)1922
-645 y(expanded)f(and)i(gathered)f(in)g(a)i(new)f(group.)1922
-712 y(X)g(b)50 b(Un-)p Fg(binhex)22 b Fi(these)f(series.)29
-b([p/p])1922 778 y(X)22 b(o)54 b(Simply)20 b Fg(output)i
-Fi(these)g(series)f(\(no)h(deco)r(ding\).)28 b([p/p])1922
-844 y(X)22 b(p)50 b(Unpac)n(k)21 b(these)g Fg(p)r(ostscript)i
-Fi(series.)29 b([p/p])1922 911 y(X)22 b(s)61 b(Un-)p
-Fg(shar)21 b Fi(these)h(series.)28 b([p/p])1922 977 y(X)22
-b(u)50 b Fg(Uudeco)r(de)23 b Fi(these)e(series.)29 b([p/p])1922
-1046 y(Eac)n(h)21 b(one)h(of)g(these)f(commands)g(has)i(four)e(v)l
-(arian)n(ts:)1922 1101 y(X)h Fg(z)120 b Fi(Deco)r(de)21
-b(these)g(series.)29 b([p/p])1922 1167 y(X)22 b Fg(Z)107
-b Fi(Deco)r(de)21 b(and)g(sa)n(v)n(e)i(these)e(series.)29
-b([p/p])1922 1233 y(X)22 b(v)g Fg(z)63 b Fi(Deco)r(de)21
-b(and)g(view)h(these)g(series.)28 b([p/p])1922 1300 y(X)22
-b(v)g Fg(Z)50 b Fi(Deco)r(de,)20 b(sa)n(v)n(e)j(and)f(view)g(these)f
-(series.)29 b([p/p])1922 1372 y(where)21 b Fg(z)i Fi(or)g
-Fg(Z)f Fi(iden)n(ti\014es)e(the)i(deco)r(ding)e(metho)r(d)g(\(b,)i(o,)g
-(p,)g(s,)h(u\).)1922 1438 y(An)f(alternativ)n(e)f(binding)f(for)i(the)g
-(most-often)f(used)h(of)g(these)f(commands)g(is)1922
-1504 y(C-c)h(C-v)h(C-v)51 b(\(X)22 b(v)h(u\))f(Uudeco)r(de)d(and)j
-(view)g(these)f(series.)29 b([p/p])1922 1702 y Fj(MIME)37
-b(op)s(erations)i(from)e(the)h(Summary-Bu\013er)1922
-1806 y Fi(F)-5 b(or)22 b(the)f(commands)g(op)r(erating)g(on)h(one)g
-(MIME)f(part)h(\(a)h(subset)e(of)1922 1872 y(gn)n(us-article-*\),)g(a)i
-(pre\014x)e(selects)g(whic)n(h)h(part)g(to)g(op)r(erate)f(on.)29
-b(If)22 b(the)g(p)r(oin)n(t)f(is)1922 1939 y(placed)f(o)n(v)n(er)j(a)f
-(MIME)g(button)f(in)h(the)f(article)g(bu\013er,)h(use)f(the)h(corresp)r
-(onding)1922 2005 y(bindings)f(for)h(the)f(article)g(bu\013er)h
-(instead.)1922 2071 y(K)g(v)160 b(\(b,)22 b(W)g(M)h(b\))e
-Fg(View)j Fi(the)d(MIME-part.)1922 2138 y(K)h(o)162 b
-Fg(Sa)n(v)n(e)22 b Fi(the)g(MIME)f(part.)1922 2204 y(K)h(c)165
-b Fg(Cop)n(y)22 b Fi(the)f(MIME)h(part.)1922 2271 y(K)g(e)165
-b(View)22 b(the)g(MIME)f(part)h Fg(externally)p Fi(.)1922
-2337 y(K)g(i)176 b(View)22 b(the)g(MIME)f(part)h Fg(in)n(ternally)p
-Fi(.)1922 2403 y(K)g Fa(j)175 b Fi(Pip)r(e)21 b(the)h(MIME)f(part)h(to)
-h(an)f(external)e(command.)1922 2470 y(K)i(b)158 b(Mak)n(e)22
-b(all)g(the)g(MIME)f(parts)i(ha)n(v)n(e)e(buttons)h(in)g(fron)n(t)g(of)
-g(them.)1922 2536 y(K)g(m)140 b(T)-5 b(ry)23 b(to)f(repair)f
-Fg(m)n(ultipart-headers)p Fi(.)1922 2603 y(K)h(C)148
-b(View)22 b(the)g(MIME)f(part)h(using)g(a)h(di\013eren)n(t)e
-Fg(c)n(harset)p Fi(.)1922 2669 y(X)h(m)142 b(Sa)n(v)n(e)22
-b(all)g(parts)h(matc)n(hing)e(a)h(MIME)g(t)n(yp)r(e)f(to)h(a)h
-(directory)-5 b(.)27 b([p/p])1922 2736 y(M-t)160 b(T)-5
-b(oggle)22 b(the)g(buttonized)e(displa)n(y)i(of)g(the)f(article)g
-(bu\013er.)1922 2802 y(W)h(M)g(w)50 b(Deco)r(de)21 b(RF)n(C2047-enco)r
-(ded)g(w)n(ords)i(in)f(the)f(article)g(headers.)1922
-2868 y(W)h(M)g(c)67 b(Deco)r(de)21 b(enco)r(ded)f(article)h(b)r(o)r
-(dies.)28 b([Pre\014x:)f(prompt)21 b(for)h(c)n(harset])1922
-2935 y(W)g(M)g(v)62 b(View)22 b(all)h(MIME)e(parts)h(in)g(the)g(curren)
-n(t)e(article.)1922 3114 y Fj(P)m(ost,)37 b(F)-9 b(ollo)m(wup,)38
-b(Reply)-9 b(,)37 b(F)-9 b(orw)m(ard,)38 b(Cancel)1922
-3217 y Fi(These)22 b(commands)e(put)i(y)n(ou)g(in)g(a)h(separate)e
-(news)h(or)h(mail)e(bu\013er.)29 b(See)21 b(the)g(section)1922
-3284 y(ab)r(out)g(comp)r(osing)g(messages)h(for)g(more)g(information.)
-1922 3350 y(S)g(p)141 b(\(a\))22 b Fg(P)n(ost)g Fi(an)g(article)f(to)i
-(this)f(group.)1922 3416 y(S)g(f)157 b(\(f)5 b(\))21
-b(P)n(ost)i(a)f Fg(follo)n(wup)g Fi(to)g(this)g(article.)1922
-3483 y(S)g(F)135 b(\(F\))22 b(P)n(ost)g(a)h Fg(follo)n(wup)e
-Fi(and)h(include)e(the)h(original.)29 b([p/p])1922 3549
-y(S)22 b(o)g(p)86 b(F)-5 b(orw)n(ard)22 b(this)g(article)f(as)i(a)f
-Fg(p)r(ost)g Fi(to)g(a)h(newsgroup.)1922 3616 y(S)f(M-c)66
-b(Send)21 b(a)h(complain)n(t)f(ab)r(out)h(excessiv)n(e)f(crossp)r
-(osting)h(to)h(the)e(author)h(of)h(this)2159 3682 y(article.)k([p/p])
-1922 3749 y(S)22 b(m)123 b(\(m\))21 b(Send)g(a)i Fg(mail)f
-Fi(to)h(some)e(other)h(p)r(erson.)1922 3815 y(S)g(r)152
-b(\(r\))22 b(Mail)g(a)g Fg(reply)g Fi(to)h(the)e(author)h(of)g(this)g
-(article.)1922 3881 y(S)g(R)130 b(\(R\))22 b(Mail)g(a)g
-Fg(reply)h Fi(and)e(include)f(the)i(original.)29 b([p/p])1922
-3948 y(S)22 b(B)h(r)83 b(Lik)n(e)21 b(S)h(r)h(but)e(ignore)h(the)f
-(Reply-T)-5 b(o:)29 b(header.)1922 4014 y(S)22 b(B)h(R)61
-b(Lik)n(e)21 b(S)h(R)h(but)f(ignore)f(the)h(Reply-T)-5
-b(o:)28 b(header.)1922 4081 y(S)22 b(w)131 b(Mail)21
-b(a)i Fg(wide)g Fi(reply)e(to)h(this)g(article.)1922
-4147 y(S)g(W)111 b(Mail)21 b(a)i Fg(wide)g Fi(reply)e(to)h(this)g
-(article)f(and)h(include)e(the)i(original.)1922 4213
-y(S)g(v)143 b(Mail)21 b(a)i Fg(v)n(ery)f Fi(wide)g(reply)f(to)h(this)g
-(article.)1922 4280 y(S)g(V)129 b(Mail)21 b(a)i Fg(v)n(ery)f
-Fi(wide)g(reply)f(to)h(this)g(article)f(and)h(include)e(the)i
-(original.)1922 4346 y(S)g(o)g(m)68 b(\(C-c)22 b(C-f)5
-b(\))22 b(F)-5 b(orw)n(ard)23 b(this)f(article)f(b)n(y)h
-Fg(mail)g Fi(to)h(a)f(p)r(erson.)1922 4413 y(S)g(D)g(b)69
-b(Resend)21 b Fg(b)r(ounced)h Fi(mail.)1922 4479 y(S)g(D)g(r)80
-b Fg(Resend)22 b Fi(mail)f(to)i(a)f(di\013eren)n(t)f(p)r(erson.)1922
-4546 y(S)h(D)g(e)76 b Fg(Edit)22 b Fi(and)g(resend.)1922
-4612 y(S)g(n)141 b(P)n(ost)21 b(a)g(follo)n(wup)g(via)g
-Fg(news)g Fi(ev)n(en)f(if)h(y)n(ou)g(got)g(the)f(message)h(through)f
-(mail.)1922 4678 y(S)i(N)129 b(P)n(ost)22 b(a)h(follo)n(wup)e(via)h
-Fg(news)h Fi(and)f(include)e(the)h(original)h(mail.)28
-b([p/p])1922 4745 y(S)22 b(c)148 b(\(C\))22 b Fg(Cancel)h
-Fi(this)f(article)f(\(only)h(w)n(orks)h(if)f(it)g(is)g(y)n(our)h(o)n
-(wn\).)29 b([p/p])1922 4811 y(S)22 b(s)152 b Fg(Sup)r(ersede)22
-b Fi(this)g(article)f(with)h(a)h(new)f(one)f(\(only)h(for)g(o)n(wn)h
-(articles\).)1922 4878 y(S)f(O)g(m)50 b(Digest)22 b(these)f(series)h
-(and)f(forw)n(ard)i(b)n(y)f Fg(mail)p Fi(.)29 b([p/p])1922
-4944 y(S)22 b(O)g(p)68 b(Digest)22 b(these)f(series)h(and)f(forw)n(ard)
-i(as)g(a)f Fg(p)r(ost)g Fi(to)g(a)h(newsgroup.)28 b([p/p])1922
-5010 y(S)22 b(u)141 b Fg(Uuenco)r(de)22 b Fi(a)h(\014le)e(and)h(p)r
-(ost)g(it)g(as)h(a)f(series.)1922 5082 y(If)g(y)n(ou)g(w)n(an)n(t)h(to)
-f(cancel)f(or)h(sup)r(ersede)e(an)j(article)e(y)n(ou)h(just)g(p)r
-(osted)f(\(b)r(efore)f(it)j(has)1922 5149 y(app)r(eared)d(on)i(the)g
-(serv)n(er\),)f(go)i(to)f(the)g(*p)r(ost-news*)g(bu\013er,)g(c)n(hange)
-f(`Message-ID')1922 5215 y(to)h(`Cancel')f(or)i(`Sup)r(ersedes')c(and)j
-(send)f(it)i(again)f(with)g(C-c)g(C-c.)1860 5838 y Fd(3)p
-eop end
-%%Page: 4 4
-TeXDict begin 4 3 bop -364 -281 a Fj(Message)39 b(Comp)s(osition)-364
--177 y Fi(Press)22 b(C-c)h(?)30 b(in)22 b(the)f(comp)r
-(osition-bu\013er)f(to)j(get)f(this)g(information.)-364
--111 y(C-c)h(C-c)137 b(Send)21 b(message)h(and)g(exit.)28
-b([Pre\014x:)g(send)22 b(via)g(foreign)f(serv)n(er])-364
--44 y(C-c)i(C-s)141 b(Send)21 b(message.)29 b([Pre\014x:)f(send)21
-b(via)h(foreign)f(serv)n(er])-364 22 y(C-c)i(C-d)130
-b(Don't)22 b(send)g(message)g(\(sa)n(v)n(e)g(as)h Fg(draft)p
-Fi(\).)-364 89 y(C-c)g(C-k)132 b Fg(Kill)23 b Fi(message-bu\013er.)-364
-155 y(C-c)g(C-m)112 b Fg(Mail)18 b Fi(reply)g(to)g(the)g(address)g
-(near)g(p)r(oin)n(t.)27 b([Pre\014x:)f(include)16 b(the)i(original])
--364 221 y(C-c)23 b(C-o)134 b(Sort)22 b(headers.)-364
-288 y(C-c)h(C-e)137 b Fg(Elide)23 b Fi(region.)-364 354
-y(C-c)g(C-v)132 b(Kill)22 b(ev)n(erything)e(outside)i(region.)-364
-421 y(C-c)h(C-r)141 b(Do)23 b(a)f Fg(Rot-13)g Fi(on)g(the)g(b)r(o)r(dy)
--5 b(.)-364 487 y(C-c)23 b(C-w)120 b(Insert)22 b(signature)g(\(from)f
-(`message-signature-\014le'\).)-364 553 y(C-c)i(C-z)137
-b(Kill)22 b(ev)n(erything)e(up)i(to)h(signature.)-364
-620 y(C-c)g(C-y)132 b Fg(Y)-6 b(ank)22 b Fi(original)g(message.)-364
-686 y(C-c)h(C-q)132 b(Fill)22 b(the)g(y)n(ank)n(ed)f(message.)-364
-753 y(C-c)i(M-C-y)50 b Fg(Y)-6 b(ank)22 b Fi(a)g(bu\013er)g(and)g
-(quote)f(it.)-364 819 y(M-RET)136 b(Insert)29 b(four)f(newlines)f(and)i
-(format)f(quoted)f(text.)49 b([Pre\014x:)40 b(justify)28
-b(as)-6 886 y(w)n(ell])-364 952 y(C-c)23 b(M-r)128 b
-Fg(Rename)23 b Fi(message)f(bu\013er.)28 b([Pre\014x:)g(ask)23
-b(for)f(new)g(name])-364 1119 y Fc(Jumping)31 b(in)h(message-bu\013er)
--364 1223 y Fi(The)22 b(follo)n(wing)g(functions)f(create)g(the)g
-(header-\014eld)f(if)i(necessary)-5 b(.)-364 1289 y(C-c)23
-b(T)-5 b(AB)163 b(Mo)n(v)n(e)22 b(to)g Fg(signature)p
-Fi(.)-364 1356 y(C-c)h(C-b)194 b(Mo)n(v)n(e)22 b(to)g
-Fg(b)r(o)r(dy)p Fi(.)-364 1422 y(C-c)h(C-f)g(C-t)92 b(\(C-c)22
-b(C-t\))h(Mo)n(v)n(e)f(to)h Fg(T)-6 b(o:)p Fi(.)-364
-1488 y(C-c)23 b(C-f)g(C-c)88 b(Mo)n(v)n(e)22 b(to)g Fg(Cc:)p
-Fi(.)-364 1555 y(C-c)h(C-f)g(C-b)81 b(Mo)n(v)n(e)22 b(to)g
-Fg(Bcc:)p Fi(.)-364 1621 y(C-c)h(C-f)g(C-w)71 b(Mo)n(v)n(e)22
-b(to)g Fg(Fcc:)p Fi(.)-364 1688 y(C-c)h(C-f)g(C-s)92
-b(Mo)n(v)n(e)22 b(to)g Fg(Sub)t(ject:)p Fi(.)-364 1754
-y(C-c)h(C-f)g(C-r)92 b(Mo)n(v)n(e)22 b(to)g Fg(Reply-T)-6
-b(o:)p Fi(.)-364 1821 y(C-c)23 b(C-f)g(C-f)97 b(Mo)n(v)n(e)22
-b(to)g Fg(F)-6 b(ollo)n(wup-T)g(o:)p Fi(.)-364 1887 y(C-c)23
-b(C-f)g(C-n)81 b(\(C-c)22 b(C-n\))h(Mo)n(v)n(e)f(to)h
-Fg(Newsgroups:)p Fi(.)-364 1953 y(C-c)g(C-f)g(C-u)81
-b(Mo)n(v)n(e)22 b(to)g Fg(Summary:)p Fi(.)-364 2020 y(C-c)h(C-f)g(C-k)
-83 b(Mo)n(v)n(e)22 b(to)g Fg(Keyw)n(ords:)p Fi(.)-364
-2086 y(C-c)h(C-f)g(C-d)81 b(Mo)n(v)n(e)22 b(to)g Fg(Distribution:)p
-Fi(.)-364 2153 y(C-c)h(C-f)g(C-m)63 b(Mo)n(v)n(e)22 b(to)g
-Fg(Mail-F)-6 b(ollo)n(wup-T)g(o:)p Fi(.)-364 2219 y(C-c)23
-b(C-f)g(C-o)85 b(Mo)n(v)n(e)22 b(to)g Fg(F)-6 b(rom:)p
-Fi(.)-364 2285 y(C-c)23 b(C-f)g(C-a)85 b(Insert)27 b(a)i(reasonable)e
-Fg(Mail-F)-6 b(ollo)n(wup-T)g(o:)39 b Fi(for)28 b(an)g(unsubscrib)r(ed)
-58 2352 y(list.)h([Pre\014x:)f(include)20 b(addresses)h(in)h
-Fg(Cc:)p Fi(])-364 2418 y(C-c)h(C-f)g(T)-5 b(AB)50 b(\(C-c)22
-b(C-u\))h(Mo)n(v)n(e)f(to)h Fg(Imp)r(ortance:)p Fi(.)-364
-2485 y(C-c)g(M-n)181 b(Insert)22 b Fg(Disp)r(osition-Noti\014cation-T)
--6 b(o:)29 b Fi(\(request)21 b(receipt\).)-364 2657 y
-Fc(A)m(ttac)m(hmen)m(ts/MML)-364 2770 y Fi(C-c)i(C-m)g(f)135
-b(\(C-c)22 b(C-a\))i(A)n(ttac)n(h)e Fg(\014le)p Fi(.)-364
-2836 y(C-c)h(C-m)g(b)119 b(A)n(ttac)n(h)22 b(con)n(ten)n(ts)f(of)27
-b Fg(bu\013er)p Fi(.)-364 2902 y(C-c)c(C-m)g(e)126 b(A)n(ttac)n(h)22
-b Fg(external)h Fi(\014le)e(\(ftp..\).)-364 2969 y(C-c)i(C-m)g(P)111
-b(Create)23 b(MIME-)p Fg(preview)h Fi(\(new)g(bu\013er\).)32
-b([Pre\014x:)e(sho)n(w)24 b(ra)n(w)h(MIME)61 3035 y(preview])-364
-3102 y(C-c)e(C-m)g(v)121 b Fg(V)-6 b(alidate)22 b Fi(article.)-364
-3168 y(C-c)h(C-m)g(p)119 b(Insert)22 b Fg(part)p Fi(.)-364
-3235 y(C-c)h(C-m)g(m)101 b(Insert)22 b Fg(m)n(ulti)p
-Fi(-part.)-364 3301 y(C-c)h(C-m)g(q)121 b Fg(Quote)23
-b Fi(region.)-364 3367 y(C-c)g(C-m)g(c)e(s)79 b(Encrypt)20
-b(message)i(using)h Fg(S/MIME)p Fi(.)-364 3434 y(C-c)g(C-m)g(c)e(o)72
-b(Encrypt)20 b(message)i(using)g(PGP)-5 b(.)-364 3500
-y(C-c)23 b(C-m)g(c)e(p)68 b(Encrypt)20 b(message)i(using)h
-Fg(PGP/MIME)p Fi(.)-364 3567 y(C-c)g(C-m)g(s)f(s)82 b(Sign)21
-b(message)h(using)h Fg(S/MIME)p Fi(.)-364 3633 y(C-c)g(C-m)g(s)f(o)75
-b(Sign)21 b(message)h(using)g(PGP)-5 b(.)-364 3699 y(C-c)23
-b(C-m)g(s)f(p)71 b(Sign)21 b(message)h(using)h Fg(PGP/MIME)p
-Fi(.)-364 3766 y(C-c)g(C-m)g(C-n)50 b(Remo)n(v)n(e)21
-b(securit)n(y)g(related)g(MML)h(tags)h(from)f(message.)-364
-3945 y Fj(Mark)38 b(Articles)-364 4037 y Fi(d)227 b(\(M)26
-b(d,)g(M)f(r\))h(Mark)f(this)h(article)e(as)i(read)f(and)g(mo)n(v)n(e)h
-(to)f(the)g(next)g(one.)-100 4103 y([scop)r(e])-364 4170
-y(D)214 b(Mark)22 b(this)g(article)f(as)i(read)f(and)f(mo)n(v)n(e)h(to)
-h(the)e(previous)g(one.)29 b([scop)r(e])-364 4236 y(!)245
-b(\(u,)25 b(M)f(!,)h(M)f(t\))g(Tic)n(k)g(this)h(article)e(\(mark)h(it)g
-(as)h(in)n(teresting\))e(and)h(mo)n(v)n(e)-100 4303 y(to)f(the)e(next)h
-(one.)28 b([scop)r(e])-364 4369 y(U)215 b(Tic)n(k)22
-b(this)g(article)f(and)h(mo)n(v)n(e)g(to)g(the)g(previous)f(one.)29
-b([scop)r(e])-364 4435 y(M)22 b(?)151 b(\(?\))30 b(Mark)21
-b(this)h(article)f(as)h(dorman)n(t)f(\(only)h(follo)n(wups)f(are)h(in)n
-(teresting\).)-100 4502 y([scop)r(e])-364 4568 y(M)g(D)132
-b(Sho)n(w)21 b(all)g Fg(dorman)n(t)g Fi(articles)f(\(normally)g(they)g
-(are)h(hidden)e(unless)h(they)-100 4635 y(ha)n(v)n(e)i(an)n(y)g(follo)n
-(wups\).)-364 4701 y(M)g(M-D)50 b(Hide)22 b(all)g Fg(dorman)n(t)f
-Fi(articles.)-364 4768 y(C-w)148 b(Mark)22 b(all)g(articles)g(b)r(et)n
-(w)n(een)e(p)r(oin)n(t)i(and)g(mark)g(as)g(read.)-364
-4834 y(M-u)145 b(\(M)24 b(SPC,)g(M)g(c\))f(Clear)h(all)g(marks)g(from)g
-(this)g(article)e(and)i(mo)n(v)n(e)g(to)g(the)-100 4900
-y(next)e(one.)28 b([scop)r(e])-364 4967 y(M-U)133 b(Clear)28
-b(all)f(marks)g(from)g(this)g(article)f(and)h(mo)n(v)n(e)g(to)h(the)f
-(previous)f(one.)-100 5033 y([scop)r(e])-364 5100 y(M)c(e)152
-b(\(E,)22 b(M)g(x\))g(Mark)g(this)g(article)f(as)i Fg(expirable)p
-Fi(.)29 b([scop)r(e])-364 5166 y(M)22 b(k)147 b(\(k\))30
-b Fg(Kill)g Fi(all)f(articles)f(with)i(the)f(same)g(sub)t(ject)e(then)h
-(select)g(the)h(next)-100 5232 y(unread)21 b(one.)1922
--317 y(M)h(K)187 b(\(C-k\))23 b Fg(Kill)g Fi(all)f(articles)f(with)i
-(the)e(same)h(sub)t(ject)e(as)j(this)f(one.)1922 -251
-y(M)g(C)191 b Fg(Catc)n(h-up)23 b Fi(the)e(articles)g(that)h(are)g(not)
-g(tic)n(k)n(ed)g(and)f(not)h(dorman)n(t.)1922 -184 y(M)g(C-c)139
-b Fg(Catc)n(h-up)23 b Fi(all)f(articles)f(in)h(this)g(group.)1922
--118 y(M)g(H)189 b Fg(Catc)n(h-up)23 b Fi(\(mark)e(read\))h(this)g
-(group)g(to)g(p)r(oin)n(t)g(\(to-)p Fg(here)p Fi(\).)1922
--52 y(M)g(b)201 b(Set)22 b(a)g Fg(b)r(o)r(okmark)f Fi(in)h(this)g
-(article.)1922 15 y(M)g(B)192 b(Remo)n(v)n(e)22 b(the)f
-Fg(b)r(o)r(okmark)g Fi(from)h(this)g(article.)1922 81
-y(M)g(M-r)130 b(\(x\))22 b(Expunge)f(all)h Fg(read)g
-Fi(articles)f(from)h(this)g(group.)1922 148 y(M)g(M-C-r)61
-b(Expunge)21 b(all)h(articles)f(ha)n(ving)h(a)g(giv)n(en)g(mark.)1922
-214 y(M)g(S)201 b(\(C-c)23 b(M-C-s\))g Fg(Sho)n(w)f Fi(all)g(expunged)e
-(articles.)1922 280 y(M)i(M)g(C-h)50 b(Displa)n(ys)23
-b(some)f(more)f(k)n(eys)h(doing)g(tic)n(king)f(sligh)n(tly)h
-(di\013eren)n(tly)-5 b(.)1922 349 y(The)22 b(v)l(ariable)f(`gn)n
-(us-summary-goto-unread')g(con)n(trols)h(what)h(happ)r(ens)d(after)i(a)
-1922 415 y(mark)g(has)g(b)r(een)f(set)h(\(C-x)h(C-i)g(g)f(Setting)f
-(Marks)h(RET\))1922 596 y Fc(Mark)32 b(Based)g(on)g(Score)1922
-689 y Fi(M)22 b(V)g(c)75 b Fg(Clear)22 b Fi(all)g(marks)h(from)e(all)h
-(high-scored)f(articles.)28 b([score])1922 755 y(M)22
-b(V)g(k)70 b Fg(Kill)23 b Fi(all)f(lo)n(w-scored)g(articles.)28
-b([score])1922 822 y(M)22 b(V)g(m)50 b(Mark)22 b(all)g(high-scored)f
-(articles)g(with)h(a)h(giv)n(en)e Fg(mark)p Fi(.)29 b([score])1922
-888 y(M)22 b(V)g(u)68 b(Mark)22 b(all)g(high-scored)f(articles)g(as)i
-(in)n(teresting)e(\(tic)n(k)g(them\).)28 b([score])1922
-1055 y Fc(The)k(Pro)s(cess)f(Mark)1922 1159 y Fi(These)22
-b(commands)e(set)j(and)e(remo)n(v)n(e)h(the)f(pro)r(cess)h(mark)f
-(\(#\).)29 b(Y)-5 b(ou)22 b(only)g(need)f(to)1922 1226
-y(use)h(it)g(if)g(the)f(set)h(of)g(articles)g(y)n(ou)g(w)n(an)n(t)h(to)
-f(op)r(erate)f(on)h(is)h(non-con)n(tiguous.)28 b(Else)1922
-1292 y(use)22 b(a)g(n)n(umeric)e(pre\014x.)1922 1358
-y(M)i(P)g(p)64 b(\(#,)22 b(M)g(#\))g(Mark)g(this)g(article.)1922
-1425 y(M)g(P)g(u)64 b(\(M-#,)22 b(M)g(M-#\))g Fg(unmark)f
-Fi(this)i(article.)1922 1491 y(M)f(P)g(b)64 b(Mark)22
-b(all)g(articles)f(in)h Fg(bu\013er)p Fi(.)1922 1557
-y(M)g(P)g(r)75 b(Mark)22 b(all)g(articles)f(in)h(the)g
-Fg(region)p Fi(.)1922 1624 y(M)g(P)g(g)68 b(Unmark)22
-b(all)g(articles)f(in)h(the)f(region.)1922 1690 y(M)h(P)g(R)53
-b(Mark)22 b(all)g(articles)f(matc)n(hing)g(a)i Fg(regexp)p
-Fi(.)1922 1757 y(M)f(P)g(G)50 b(Unmark)22 b(all)g(articles)f(matc)n
-(hing)g(a)h(regexp.)1922 1823 y(M)g(P)g(t)75 b(Mark)22
-b(all)g(articles)f(in)h(this)g(\(sub\))p Fg(thread)p
-Fi(.)1922 1889 y(M)g(P)g(T)54 b(Unmark)22 b(all)g(articles)f(in)h(this)
-g(\(sub\))p Fg(thread)p Fi(.)1922 1956 y(M)g(P)g(s)75
-b(Mark)22 b(all)g(articles)f(in)h(the)g(curren)n(t)f
-Fg(series)p Fi(.)1922 2022 y(M)h(P)g(S)64 b(Mark)22 b(all)g
-Fg(series)h Fi(that)f(already)f(con)n(tain)h(a)g(mark)n(ed)g(article.)
-1922 2089 y(M)g(P)g(a)68 b(Mark)22 b Fg(all)g Fi(articles)g(\(in)f
-(series)h(order\).)1922 2155 y(M)g(P)g(U)52 b Fg(unmark)22
-b Fi(all)g(articles.)1922 2222 y(M)g(P)g(i)82 b Fg(In)n(v)n(ert)22
-b Fi(the)g(list)g(of)g(pro)r(cess-mark)n(ed)f(articles.)1922
-2288 y(M)h(P)g(k)66 b(Push)24 b(the)g(curren)n(t)g(pro)r(cess-mark)f
-(set)i(on)n(to)g(stac)n(k)g(and)f(unmark)g(all)g(arti-)2172
-2354 y(cles.)1922 2421 y(M)e(P)g(y)66 b(P)n(op)22 b(pro)r(cess-mark)f
-(set)i(from)e(stac)n(k)h(and)g(restore)g(it.)1922 2487
-y(M)g(P)g(w)54 b(Push)22 b(pro)r(cess-mark)f(set)h(on)g(the)g(stac)n
-(k.)1922 2554 y(M)g(P)g(v)66 b(Mark)22 b(all)g(articles)f(with)i(score)
-e(o)n(v)n(er)i(the)e(default)g(score.)28 b([Pre\014x:)g(score])1922
-2721 y Fc(Mark)k(Indication-Characters)1922 2825 y Fi(If)22
-b(a)g(command)f(directly)f(sets)j(a)f(mark,)g(it)g(is)g(sho)n(wn)h(in)f
-(paren)n(theses.)p 1922 2848 2203 4 v 1920 2981 4 133
-v 1972 2894 a Fg(\\Read")h(Marks.)k Fi(All)21 b(these)f(marks)h(app)r
-(ear)f(in)g(the)h(\014rst)f(column)g(of)h(the)f(sum-)1972
-2961 y(mary)h(line,)g(and)h(so)h(are)f(m)n(utually)f(exclusiv)n(e.)p
-4123 2981 V 1922 2984 2203 4 v 1920 3050 4 67 v 1972
-3030 a(`)h(')p 2080 3050 V 99 w(\(M-u,)g(M)g(SPC,)g(M)g(c\))g(Not)g
-(read.)p 4123 3050 V 1920 3117 V 1992 3097 a(!)p 2080
-3117 V 120 w(\(!,)g(M)g(!,)g(M)g(t\))h(Tic)n(k)n(ed)e(\(in)n
-(teresting\).)p 4123 3117 V 1920 3183 V 1986 3163 a(?)p
-2080 3183 V 114 w(\(?,)i(M)f(?\))g(Dorman)n(t)g(\(only)g(follo)n(wups)g
-(are)g(in)n(teresting\).)p 4123 3183 V 1920 3250 V 1979
-3230 a(E)p 2080 3250 V 107 w(\(E,)g(M)g(e,)g(M)g(x\))g
-Fg(Expirable)p Fi(.)29 b(Only)22 b(has)g(e\013ect)f(in)h(mail)g
-(groups.)p 4123 3250 V 1920 3316 V 1976 3296 a(G)p 2080
-3316 V 104 w(\(C,)h(B)g(DEL\))e(Canceled)g(article)g(\(or)h(deleted)e
-(in)i(mailgroups\).)p 4123 3316 V 1920 3382 V 1985 3362
-a($)p 2080 3382 V 113 w(\(M-d,)g(M)g(s)h(x,)f(S)g(x\).)29
-b(Mark)n(ed)22 b(as)g(spam.)p 4123 3382 V 1922 3386 2203
-4 v 1922 3402 V 1920 3602 4 200 v 1972 3449 a(The)17
-b(marks)h(b)r(elo)n(w)f(mean)f(that)i(the)f(article)f(is)i(read)f
-(\(killed,)g(unin)n(teresting\),)f(and)1972 3515 y(ha)n(v)n(e)28
-b(more)f(or)i(less)f(the)g(same)g(e\013ect.)47 b(Some)27
-b(commands)g(ho)n(w)n(ev)n(er)h(explicitly)1972 3582
-y(di\013eren)n(tiate)20 b(b)r(et)n(w)n(een)h(them)g(\(e.g.)g(M)h
-(M-C-r,)h(adaptiv)n(e)f(scoring\).)p 4123 3602 V 1922
-3605 2203 4 v 1920 3671 4 67 v 1989 3651 a(r)p 2080 3671
-V 116 w(\(d,)g(M)g(d,)g(M)g(r\))g(Deleted)f(\(mark)n(ed)g(as)i
-Fg(read)p Fi(\).)p 4123 3671 V 1920 3738 V 1978 3718
-a(C)p 2080 3738 V 106 w(\(M)f(C;)h(M)f(C-c;)g(M)g(H;)h(c,)e(Z)i(c;)f(Z)
-g(n;)g(Z)h(C\))f(Killed)f(b)n(y)h Fg(catc)n(h-up)p Fi(.)p
-4123 3738 V 1920 3804 V 1980 3784 a(F)p 2080 3804 V 108
-w(SOUP)n(ed)f(article.)28 b(See)21 b(the)h(man)n(ual.)p
-4123 3804 V 1920 3871 V 1976 3851 a(O)p 2080 3871 V 104
-w Fg(Old)h Fi(\(read)e(in)h(a)h(previous)e(session\).)p
-4123 3871 V 1920 3937 V 1976 3917 a(K)p 2080 3937 V 104
-w(\(k,)h(M)g(k;)g(C-k,)h(M)f(K\))g Fg(Killed)p Fi(.)p
-4123 3937 V 1920 4003 V 1972 3983 a(M)p 2080 4003 V 99
-w(Article)f(mark)n(ed)g(as)i(read)f(b)n(y)g(duplicate)e(suppression.)p
-4123 4003 V 1920 4070 V 1976 4050 a(Q)p 2080 4070 V 104
-w(Article)h(is)i(part)f(of)g(a)g(sparse)g(thread)g(\(see)f
-(\\Threading")h(in)f(the)h(man)n(ual\).)p 4123 4070 V
-1920 4136 V 1978 4116 a(R)p 2080 4136 V 105 w Fg(Read)g
-Fi(\(view)n(ed)f(in)h(actualit)n(y\).)p 4123 4136 V 1920
-4203 V 1977 4183 a(X)p 2080 4203 V 105 w(Killed)f(b)n(y)h(a)h(kill)e
-(\014le.)p 4123 4203 V 1920 4269 V 1977 4249 a(Y)p 2080
-4269 V 105 w(Killed)g(due)g(to)i(lo)n(w)f(score.)p 4123
-4269 V 1922 4272 2203 4 v 1922 4367 V 1920 4434 4 67
-v 1972 4414 a Fg(Marks)i(not)h(a\013ecting)g(visibilit)n(y)p
-4123 4434 V 1922 4437 2203 4 v 1920 4570 4 133 v 1974
-4483 a Fi(#)p 2080 4570 V 102 w(\(#,)f(M)g(#,)g(M)g(P)g(p\))g(Pro)r
-(cessable)e(\(will)i(b)r(e)g(a\013ected)e(b)n(y)i(the)g(next)f(op)r
-(era-)2131 4550 y(tion\).)29 b([2])p 4123 4570 V 1920
-4636 4 67 v 1977 4616 a(A)p 2080 4636 V 105 w Fg(Answ)n(ered)23
-b Fi(\(follo)n(w)n(ed-up)e(or)i(replied\).)k([2])p 4123
-4636 V 1920 4703 V 1980 4683 a(F)p 2080 4703 V 108 w(F)-5
-b(orw)n(arded.)29 b([2])p 4123 4703 V 1920 4769 V 1985
-4749 a Fa(\003)p 2080 4769 V 112 w Fi(Cac)n(hed.)g([2])p
-4123 4769 V 1920 4835 V 1983 4815 a(S)p 2080 4835 V 111
-w(Sa)n(v)n(ed.)g([2])p 4123 4835 V 1920 4902 V 1977 4882
-a(N)p 2080 4902 V 105 w(Recen)n(tly)21 b(arriv)n(ed.)28
-b([2])p 4123 4902 V 1920 4968 V 1992 4948 a(.)p 2080
-4968 V 120 w(Unseen.)g([2])p 4123 4968 V 1920 5035 V
-1976 5015 a(+)p 2080 5035 V 104 w(Ov)n(er)22 b(default)f(score.)28
-b([3])p 4123 5035 V 1920 5101 V 1976 5081 a Fa(\000)p
-2080 5101 V 103 w Fi(Under)21 b(default)g(score.)29 b([3])p
-4123 5101 V 1920 5234 4 133 v 1976 5148 a(=)p 2080 5234
-V 104 w(Has)c(c)n(hildren)e(\(thread)g(underneath)g(it\).)36
-b(Add)24 b(`\045e')f(to)i(`gn)n(us-summary-)2131 5214
-y(line-format'.)j([3])p 4123 5234 V 1922 5237 2203 4
-v 1860 5838 a Fd(4)p eop end
-%%Page: 5 5
-TeXDict begin 5 4 bop -364 -281 a Fj(Summary-Unplugged)-364
--169 y Fi(J)22 b(#)132 b Fg(Mark)21 b Fi(the)h(article)f(for)h(do)n
-(wnloading.)-364 -103 y(J)g(M-#)50 b Fg(Unmark)22 b Fi(the)g(article)e
-(for)i(do)n(wnloading.)-364 -36 y(@)192 b Fg(T)-6 b(oggle)22
-b Fi(whether)f(to)h(do)n(wnload)g(the)g(article.)-364
-30 y(J)g(c)157 b(Mark)22 b(all)g(undo)n(wnloaded)f(articles)g(as)i
-(read)e(\()p Fg(catc)n(h-up)p Fi(\).)-364 97 y(J)h(u)150
-b(Do)n(wnload)22 b(all)g(do)n(wnloadable)g(articles)f(from)g(group.)
--364 275 y Fj(Mail-Group)39 b(Commands)-364 379 y Fi(These)22
-b(commands)f(\(except)f(`B)j(c'\))e(are)h(only)g(v)l(alid)g(in)g(a)g
-(mail)g(group.)-364 449 y(B)h(DEL)95 b(\(B)16 b(bac)n(kspace,)g(B)g
-(delete\))e Fg(Delete)k Fi(the)d(mail)g(article)f(from)h(disk)h(\(!\).)
-27 b([p/p])-364 515 y(B)c(B)185 b(Crossp)r(ost)23 b(this)f(article)f
-(to)i(another)e(group.)-364 581 y(B)i(c)201 b Fg(Cop)n(y)22
-b Fi(this)g(article)f(from)g(an)n(y)h(group)g(to)h(a)f(mail)g(group.)29
-b([p/p])-364 648 y(B)23 b(e)201 b Fg(Expire)23 b Fi(all)f(expirable)e
-(articles)h(in)h(this)g(group.)29 b([p/p])-364 714 y(B)23
-b(i)212 b Fg(Imp)r(ort)23 b Fi(a)f(random)f(\014le)h(in)n(to)g(this)g
-(group.)-364 781 y(B)h(I)207 b(Create)22 b(an)g(empt)n(y)f(article)g
-(in)h(this)g(group.)-364 847 y(B)h(m)176 b Fg(Mo)n(v)n(e)22
-b Fi(the)f(article)g(from)h(one)f(mail)h(group)g(to)g(another.)29
-b([p/p])-364 914 y(B)23 b(p)194 b(Query)22 b(whether)f(the)g(article)g
-(w)n(as)i Fg(p)r(osted)g Fi(as)f(w)n(ell.)-364 980 y(B)h(q)196
-b Fg(Query)23 b Fi(where)e(the)h(article)f(will)h(end)f(up)h(after)f
-(fancy)g(splitting)-364 1046 y(B)i(r)205 b Fg(Resp)r(o)r(ol)22
-b Fi(this)g(mail)f(article.)28 b([p/p])-364 1113 y(B)23
-b(t)205 b Fg(T)-6 b(race)23 b Fi(the)f(fancy)f(splitting)g(patterns)h
-(applied)e(to)j(this)f(article.)-364 1179 y(B)h(w)184
-b(\(e\))22 b(Edit)f(this)h(article.)-364 1246 y(B)h(M-C-e)50
-b Fg(Expunge)18 b Fi(\(delete)e(from)h(disk\))h(all)g(expirable)e
-(articles)i(in)f(this)i(group)e(\(!\).)-64 1312 y([p/p])-364
-1378 y(K)22 b(E)182 b Fg(Encrypt)23 b Fi(article)e(b)r(o)r(dy)-5
-b(.)28 b([p/p])-364 1557 y Fj(Draft-Group)38 b(Commands)-364
-1661 y Fi(The)22 b(\\drafts"-group)g(con)n(tains)g(messages)g(that)g
-(ha)n(v)n(e)g(b)r(een)e(sa)n(v)n(ed)j(but)e(not)h(sen)n(t)-364
-1728 y(and)g(rejected)e(articles.)-364 1794 y(D)j(e)151
-b Fg(edit)23 b Fi(message.)-364 1860 y(D)g(s)155 b Fg(Send)22
-b Fi(message.)29 b([p/p])-364 1926 y(D)23 b(S)144 b Fg(Send)22
-b Fi(all)h(messages.)-364 1993 y(D)g(t)155 b Fg(T)-6
-b(oggle)22 b Fi(sending)f(\(mark)h(as)h(unsendable\).)-364
-2059 y(B)g(DEL)49 b Fg(Delete)25 b Fi(message)d(\(lik)n(e)f(in)h
-(mailgroup\).)-364 2238 y Fj(Exit)37 b(the)g(Summary-Bu\013er)-364
-2350 y Fi(Z)23 b(Z)61 b(\(q,)22 b(Z)h(Q\))f(Exit)g(this)g(group.)-364
-2416 y(Z)h(E)56 b(\(Q\))22 b Fg(Exit)h Fi(without)f(up)r(dating)e(the)i
-(group)g(information.)-364 2483 y(Z)h(c)71 b(\(c\))22
-b(Mark)g(all)g(un)n(tic)n(k)n(ed)f(articles)g(as)i(read)e(\()p
-Fg(catc)n(h-up)p Fi(\))i(and)f(exit.)-364 2549 y(Z)h(C)54
-b(Mark)22 b(all)g(articles)f(as)i(read)f(\()p Fg(catc)n(h-up)p
-Fi(\))g(and)g(exit.)-364 2615 y(Z)h(n)64 b(Mark)22 b(all)g(articles)f
-(as)i(read)f(and)g(go)g(to)g(the)g Fg(next)h Fi(group.)-364
-2682 y(Z)g(N)52 b(Exit)22 b(and)f(go)i(to)f Fg(the)h
-Fi(next)f(group.)-364 2748 y(Z)h(P)56 b(Exit)22 b(and)f(go)i(to)f(the)g
-Fg(previous)f Fi(group.)-364 2815 y(Z)i(G)50 b(\(M-g\))22
-b(Chec)n(k)g(for)g(new)g(articles)f(in)h(this)g(group)g(\()p
-Fg(get)p Fi(\).)-364 2881 y(Z)h(R)53 b(\(C-x)25 b(C-s\))g(Exit)e(this)g
-(group,)h(and)f(then)g(en)n(ter)g(it)h(again)f(\()p Fg(reen)n(ter)p
-Fi(\).)36 b([Pre\014x:)-200 2948 y(select)21 b(all)h(articles,)f(read)h
-(and)g(unread.])-364 3014 y(Z)h(s)75 b(Up)r(date)21 b(and)h(sa)n(v)n(e)
-g(the)g(dribble)e(bu\013er.)29 b([Pre\014x:)f(sa)n(v)n(e)22
-b(.newsrc*)g(as)h(w)n(ell])-364 3219 y Ff(Article)46
-b(Mo)t(de)e(\(reading\))-364 3356 y Fi(The)22 b(normal)g(na)n(vigation)
-f(k)n(eys)i(w)n(ork)f(in)g(Article)f(mo)r(de.)28 b(Some)21
-b(additional)g(k)n(eys)-364 3422 y(are:)-364 3477 y(C-c)i(^)157
-b(Get)22 b(the)g(article)f(with)h(the)f(Message-ID)i(near)e(p)r(oin)n
-(t.)-364 3543 y(C-c)i(RET)50 b(Send)21 b(reply)g(to)h(address)g(near)g
-(p)r(oin)n(t.)-364 3610 y(h)275 b(Go)23 b(to)f(the)g
-Fg(header)p Fi(-line)f(of)h(the)g(article)f(in)h(the)f
-(summary-bu\013er.)-364 3676 y(s)286 b(Go)23 b(to)f Fg(summary)q
-Fi(-bu\013er.)-364 3742 y(RET)172 b(\(middle)21 b(mouse)h(button\))g
-(Activ)l(ate)g(the)g(button)g(at)h(p)r(oin)n(t)f(to)h(follo)n(w)g(an)
--52 3809 y(URL)g(or)f(Message-ID.)-364 3875 y(T)-5 b(AB)175
-b(Mo)n(v)n(e)22 b(the)f(p)r(oin)n(t)h(to)g(the)g(next)f(button.)-364
-3942 y(M-T)-5 b(AB)93 b(Mo)n(v)n(e)22 b(p)r(oin)n(t)f(to)i(previous)e
-(button.)-364 4120 y Fj(W)-9 b(ash)38 b(the)f(Article-Bu\013er)-364
-4213 y Fi(W)22 b(6)72 b(T)-5 b(ranslate)22 b(a)g(base64)g(article.)-364
-4279 y(W)g(a)72 b(Strip)21 b(certain)g Fg(headers)h Fi(from)g(b)r(o)r
-(dy)-5 b(.)-364 4346 y(W)22 b(b)68 b(Mak)n(e)27 b(Message-IDs)i(and)e
-(URLs)i(in)e(the)h(article)e(mouse-clic)n(k)l(able)g
-Fg(but-)-170 4412 y(tons)p Fi(.)-364 4478 y(W)c(c)75
-b(T)-5 b(ranslate)20 b(CRLF-pairs)h(to)g(LF)f(and)g(then)g(the)g
-(remaining)e(CR's)k(to)e(LF's.)-364 4545 y(W)i(d)68 b(T)-5
-b(reat)22 b Fg(dum)n(b)r(quotes)p Fi(.)-364 4611 y(W)g(e)75
-b(T)-5 b(reat)22 b Fg(emphasized)g Fi(text.)-364 4678
-y(W)g(h)68 b(T)-5 b(reat)22 b Fg(HTML)p Fi(.)-364 4744
-y(W)g(l)86 b(\(w\))22 b(Remo)n(v)n(e)g(page)g(breaks)g(\()p
-Fg(^L)p Fi(\))f(from)h(the)f(article.)-364 4810 y(W)h(m)50
-b Fg(Morse)22 b Fi(deco)r(de)e(article.)-364 4877 y(W)i(o)72
-b(T)-5 b(reat)22 b Fg(o)n(v)n(erstrik)n(e)g Fi(or)g(underline)e(\(^H)p
-838 4877 20 4 v 24 w(\))i(in)g(the)g(article.)-364 4943
-y(W)g(p)68 b(V)-5 b(erify)21 b(X-)p Fg(PGP)p Fi(-Sig)h(header.)-364
-5010 y(W)g(q)70 b(T)-5 b(reat)22 b Fg(quoted)p Fi(-prin)n(table)e(in)i
-(the)g(article.)-364 5076 y(W)g(r)79 b(\(C-c)22 b(C-r\))h(Do)g(a)f
-(Caesar)h Fg(rotate)g Fi(\(rot13\))f(on)g(the)g(article.)-364
-5143 y(W)g(s)79 b(V)-5 b(erify)21 b(\(and)g(decrypt\))g(a)h
-Fg(signed)g Fi(message.)-364 5209 y(W)g(t)79 b(\(t\))22
-b Fg(T)-6 b(oggle)22 b Fi(displa)n(y)g(of)g(all)g(headers.)-364
-5275 y(W)g(u)68 b Fg(Unsplit)22 b Fi(brok)n(en)g(URLs.)1922
--317 y(W)g(v)125 b(\(v\))22 b(T)-5 b(oggle)22 b(p)r(ermanen)n(t)e
-Fg(v)n(erb)r(ose)i Fi(displa)n(ying)g(of)g(all)g(headers.)1922
--251 y(W)g(w)113 b(Do)23 b(w)n(ord)f Fg(wrap)g Fi(in)g(the)g(article.)
-1922 -184 y(W)g(B)114 b(Add)22 b(clic)n(k)l(able)f Fg(buttons)g
-Fi(to)i(the)e(article)g(headers.)1922 -118 y(W)h(C)113
-b Fg(Capitalize)23 b Fi(\014rst)f(w)n(ord)h(in)f(eac)n(h)f(sen)n
-(tence.)1922 -52 y(W)h(Q)109 b(Fill)22 b(long)g(lines.)1922
-15 y(W)g(Z)120 b(T)-5 b(ranslate)22 b(a)h(HZ-enco)r(ded)d(article.)1922
-81 y(W)i(G)h(u)49 b Fg(Unfold)22 b Fi(folded)f(header)g(lines.)1922
-148 y(W)h(G)h(f)65 b Fg(F)-6 b(old)22 b Fi(all)g(header)f(lines.)1922
-214 y(W)h(G)h(n)49 b(Unfold)21 b Fg(Newsgroups:)29 b
-Fi(and)22 b(F)-5 b(ollo)n(w-Up-T)g(o:.)1922 280 y(W)22
-b(Y)g(c)59 b(Repair)22 b(brok)n(en)f Fg(citations)p Fi(.)1922
-347 y(W)h(Y)g(a)56 b(Repair)22 b(brok)n(en)f Fg(attribution)h
-Fi(lines.)1922 413 y(W)g(Y)g(u)52 b Fg(Un)n(wrap)22 b
-Fi(brok)n(en)f(citation)h(lines.)1922 480 y(W)g(Y)g(f)68
-b(Do)23 b(a)f Fg(full)h Fi(deugli\014cation)c(\(W)j(Y)h(c,)f(W)g(Y)g
-(a,)g(W)h(Y)f(u\).)1922 647 y Fc(Blank)32 b(Lines)f(and)h(Whitespace)
-1922 755 y Fi(W)22 b(E)g(l)85 b(Strip)22 b(blank)f Fg(lines)i
-Fi(from)e(the)h(b)r(eginning)e(of)i(the)g(article.)1922
-822 y(W)g(E)g(m)49 b(Replace)27 b(blank)g(lines)g(with)h(empt)n(y)f
-(lines)h(and)f(remo)n(v)n(e)g Fg(m)n(ultiple)i Fi(blank)2182
-888 y(lines.)1922 955 y(W)22 b(E)g(t)78 b(Remo)n(v)n(e)22
-b Fg(trailing)g Fi(blank)f(lines.)1922 1021 y(W)h(E)g(a)71
-b(Strip)22 b(blank)f(lines)g(at)h(the)g(b)r(eginning)e(and)h(the)h(end)
-f(\(W)h(E)g(l,)f(W)i(E)e(m)h(and)2182 1087 y(W)h(E)f(t\).)1922
-1154 y(W)g(E)g(A)55 b(Strip)22 b Fg(all)g Fi(blank)f(lines.)1922
-1220 y(W)h(E)g(s)78 b(Strip)22 b(leading)f(blank)g(lines)h(from)f(the)h
-(article)f(b)r(o)r(dy)-5 b(.)1922 1287 y(W)22 b(E)g(e)74
-b(Strip)22 b(trailing)f(blank)h(lines)f(from)h(the)f(article)g(b)r(o)r
-(dy)-5 b(.)1922 1353 y(W)22 b(E)g(w)57 b(Remo)n(v)n(e)22
-b(leading)f Fg(whitespace)i Fi(from)f(all)g(headers.)1922
-1520 y Fc(Picons,)31 b(X-faces,)h(Smileys)1922 1629 y
-Fi(W)22 b(D)g(s)79 b(\(W)22 b(g\))g(Displa)n(y)g Fg(smilies)p
-Fi(.)1922 1695 y(W)g(D)g(x)70 b(\(W)22 b(f)5 b(\))22
-b(Lo)r(ok)g(for)g(and)g(displa)n(y)f(an)n(y)i(X-)p Fg(F)-6
-b(ace)23 b Fi(headers.)1922 1762 y(W)f(D)g(d)68 b(Displa)n(y)22
-b(an)n(y)g(F)-5 b(ace)21 b(headers.)1922 1828 y(W)h(D)g(n)68
-b(T)-5 b(oggle)22 b(picons)f(in)h Fg(Newsgroups)f Fi(and)h(F)-5
-b(ollo)n(wup-T)g(o.)1922 1894 y(W)22 b(D)g(m)50 b(T)-5
-b(oggle)22 b(picons)f(in)h Fg(mail)h Fi(headers)e(\(T)-5
-b(o)22 b(and)g(Cc\).)1922 1961 y(W)g(D)g(f)84 b(T)-5
-b(oggle)22 b(picons)f(in)h Fg(F)-6 b(rom)p Fi(.)1922
-2027 y(W)22 b(D)g(D)55 b(Remo)n(v)n(e)21 b(all)h(images)g(from)g(the)f
-(article)g(bu\013er.)1922 2195 y Fc(Time)31 b(and)h(Date)1922
-2287 y Fi(W)22 b(T)h(u)49 b(\(W)23 b(T)f(z\))g(Displa)n(y)g(the)g
-(article)f(timestamp)f(in)i(GMT)h(\()p Fg(UT,)j(ZULU)p
-Fi(\).)1922 2353 y(W)c(T)h(i)67 b(Displa)n(y)22 b(the)g(article)f
-(timestamp)g(in)g Fg(ISO)i Fi(8601.)1922 2420 y(W)f(T)h(l)67
-b(Displa)n(y)22 b(the)g(article)f(timestamp)g(in)g(the)h
-Fg(lo)r(cal)g Fi(timezone.)1922 2486 y(W)g(T)h(s)60 b(Displa)n(y)22
-b(according)f(to)i(`gn)n(us-article-time-format'.)1922
-2553 y(W)f(T)h(e)56 b(Displa)n(y)22 b(the)g(time)f Fg(elapsed)h
-Fi(since)f(it)i(w)n(as)g(sen)n(t.)1922 2619 y(W)f(T)h(o)53
-b(Displa)n(y)22 b(the)g Fg(original)f Fi(timestamp.)1922
-2685 y(W)h(T)h(p)49 b(Displa)n(y)22 b(the)g(date)g(in)f(format)h
-(that's)g Fg(pronounceable)f Fi(in)h(English.)1922 2870
-y Fj(Hide/Highligh)m(t)38 b(P)m(arts)e(of)i(the)f(Article)1922
-2987 y Fi(W)22 b(W)g(a)116 b(Hide)22 b Fg(all)g Fi(un)n(w)n(an)n(ted)g
-(parts.)29 b(Calls)23 b(W)f(W)g(h,)g(W)g(W)g(s,)h(W)f(W)g(C-c.)1922
-3053 y(W)g(W)g(h)112 b(Hide)22 b(article)f Fg(headers)p
-Fi(.)1922 3120 y(W)h(W)g(b)112 b(Hide)22 b Fg(b)r(oring)f
-Fi(headers.)1922 3186 y(W)h(W)g(s)123 b(Hide)22 b Fg(signature)p
-Fi(.)1922 3253 y(W)g(W)g(l)130 b(Hide)22 b Fg(list)g
-Fi(iden)n(ti\014ers)f(in)h(sub)t(ject-header.)1922 3319
-y(W)g(W)g(P)104 b(Hide)22 b Fg(PEM)g Fi(\(priv)l(acy)f(enhanced)f
-(messages\).)1922 3385 y(W)i(W)g(B)103 b(Hide)22 b(banner)f(sp)r
-(eci\014ed)e(b)n(y)k(group)e(parameter.)1922 3452 y(W)h(W)g(c)119
-b(Hide)22 b Fg(citation)p Fi(.)1922 3518 y(W)g(W)g(C-c)50
-b(Hide)22 b Fg(citation)g Fi(using)g(a)h(more)e(in)n(telligen)n(t)g
-(algorithm.)1922 3585 y(W)h(W)g(C)102 b(Hide)22 b(cited)f(text)g(in)h
-(articles)f(that)h(aren't)g(ro)r(ots.)1922 3651 y(W)g(H)g(a)134
-b(Highligh)n(t)22 b Fg(all)g Fi(parts.)29 b(Calls)23
-b(W)f(b,)g(W)g(H)h(c,)e(W)i(H)f(h,)g(W)g(H)h(s.)1922
-3717 y(W)f(H)g(c)137 b(Highligh)n(t)22 b(article)f Fg(citations)p
-Fi(.)1922 3784 y(W)h(H)g(h)130 b(Highligh)n(t)22 b(article)f
-Fg(headers)p Fi(.)1922 3850 y(W)h(H)g(s)141 b(Highligh)n(t)22
-b(article)f Fg(signature)p Fi(.)1922 3919 y(F)-5 b(or)22
-b(all)g(hiding-commands:)27 b(A)22 b(p)r(ositiv)n(e)f(pre\014x)g(alw)n
-(a)n(ys)j(hides,)d(and)h(a)g(negativ)n(e)1922 3985 y(pre\014x)f(will)h
-(sho)n(w)h(what)f(w)n(as)i(previously)d(hidden.)1922
-4183 y Fj(MIME)37 b(op)s(erations)i(from)e(the)h(Article-Bu\013er)1922
-4299 y(\(reading\))1922 4416 y Fi(RET)50 b(\(BUTTON-2\))24
-b(T)-5 b(oggle)22 b(displa)n(y)g(of)g(the)f(MIME)h(ob)t(ject.)1922
-4483 y(v)155 b(Prompt)21 b(for)h(a)g(metho)r(d)f(and)h(then)f(view)h
-(ob)t(ject)e(using)i(this)g(metho)r(d.)1922 4549 y(o)157
-b(Prompt)21 b(for)h(a)g(\014lename)f(and)g(sa)n(v)n(e)i(the)e(MIME)h
-(ob)t(ject.)1922 4616 y(C-o)88 b(Prompt)21 b(for)h(a)g(\014lename)f(to)
-h(sa)n(v)n(e)h(the)e(MIME)h(ob)t(ject)e(to)i(and)g(remo)n(v)n(e)f(it.)
-1922 4682 y(d)153 b Fg(Delete)24 b Fi(the)e(MIME)f(ob)t(ject.)1922
-4748 y(c)160 b Fg(Cop)n(y)21 b Fi(the)h(MIME)f(ob)t(ject)g(to)h(a)g
-(new)g(bu\013er)g(and)g(displa)n(y)f(this)i(bu\013er.)1922
-4815 y(i)171 b(Displa)n(y)22 b(the)f(MIME)h(ob)t(ject)e(in)i(this)g
-(bu\013er.)1922 4881 y(C)143 b(Cop)n(y)24 b(the)g(MIME)f(ob)t(ject)g
-(to)h(a)g(new)g(bu\013er)g(and)g(displa)n(y)f(this)h(bu\013er)g(using)
-2112 4948 y Fg(Charset)1922 5014 y Fi(E)145 b(View)22
-b(in)n(ternally)-5 b(.)1922 5080 y(e)160 b(View)22 b
-Fg(externally)p Fi(.)1922 5147 y(t)164 b(View)22 b(the)f(MIME)h(ob)t
-(ject)e(as)j(a)f(di\013eren)n(t)f Fg(t)n(yp)r(e)p Fi(.)1922
-5213 y(p)153 b Fg(Prin)n(t)22 b Fi(the)g(MIME)f(ob)t(ject.)1922
-5280 y Fa(j)170 b Fi(Pip)r(e)21 b(the)g(MIME)h(ob)t(ject)e(to)i(a)h
-(pro)r(cess.)1922 5346 y(.)171 b(T)-5 b(ak)n(e)22 b(action)f(on)i(the)e
-(MIME)h(ob)t(ject.)1860 5838 y Fd(5)p eop end
-%%Page: 6 6
-TeXDict begin 6 5 bop -364 -44 a Ff(Serv)l(er)46 b(Mo)t(de)-364
-80 y Fi(T)-5 b(o)23 b(en)n(ter)e(this)h(mo)r(de,)f(press)h(^)g(while)g
-(in)g(Group)g(mo)r(de.)-364 146 y(SPC)50 b(\(RET\))22
-b(Bro)n(wse)h(this)g(serv)n(er.)-364 213 y(a)146 b Fg(Add)22
-b Fi(a)g(new)g(serv)n(er.)-364 279 y(c)149 b Fg(Cop)n(y)21
-b Fi(this)h(serv)n(er.)-364 346 y(e)149 b Fg(Edit)22
-b Fi(a)h(serv)n(er.)-364 412 y(k)144 b Fg(Kill)23 b Fi(this)f(serv)n
-(er.)28 b([scop)r(e])-364 478 y(l)160 b Fg(List)22 b
-Fi(all)g(serv)n(ers.)-364 545 y(q)144 b(Return)21 b(to)h(the)g(group)g
-(bu\013er)f(\()p Fg(quit)p Fi(\).)-364 611 y(s)153 b(Request)21
-b(that)h(the)g(serv)n(er)f(scan)h(its)h(sources)e(for)h(new)g
-(articles.)-364 678 y(g)146 b(Request)21 b(that)h(the)g(serv)n(er)f
-(regenerate)f(its)j(data.)-364 744 y(y)144 b Fg(Y)-6
-b(ank)21 b Fi(the)h(previously)f(killed)f(serv)n(er.)-364
-810 y(O)128 b(T)-5 b(ry)22 b(to)g Fg(op)r(en)g Fi(a)h(connection)d(to)i
-(this)g(serv)n(er.)-364 877 y(C)132 b Fg(Close)22 b Fi(connection)e(to)
-i(this)g(serv)n(er.)-364 943 y(D)129 b(Mark)22 b(this)g(serv)n(er)g(as)
-g(unreac)n(hable)e(\()p Fg(den)n(y)p Fi(\).)-364 1010
-y(M-o)64 b Fg(Op)r(en)22 b Fi(the)g(connection)e(to)i(all)g(serv)n
-(ers.)-364 1076 y(M-c)67 b Fg(Close)22 b Fi(the)g(connection)d(to)k
-(all)f(serv)n(ers.)-364 1143 y(R)131 b(Mak)n(e)22 b(all)g(denied)e
-(serv)n(ers)i(in)n(to)g(closed)f(serv)n(ers.)-364 1209
-y(L)138 b(Set)21 b(serv)n(er)h(status)h(to)f(o\017ine.)-364
-1388 y Fj(Unplugged-Serv)m(er)-364 1499 y Fi(J)g(a)50
-b Fg(Add)22 b Fi(the)g(curren)n(t)f(serv)n(er)g(to)i(the)e(list)i(of)f
-(serv)n(ers)g(co)n(v)n(ered)f(b)n(y)h(the)f(agen)n(t.)-364
-1566 y(J)h(r)57 b Fg(Remo)n(v)n(e)18 b Fi(the)f(curren)n(t)f(serv)n(er)
-h(from)g(the)g(list)h(of)f(serv)n(ers)h(co)n(v)n(ered)e(b)n(y)i(the)e
-(agen)n(t.)-364 1771 y Ff(Bro)l(wse)46 b(Serv)l(er)f(Mo)t(de)-364
-1895 y Fi(T)-5 b(o)23 b(en)n(ter)e(this)h(mo)r(de,)f(press)h(`B')g
-(while)g(in)g(Group)g(mo)r(de.)-364 1961 y(RET)50 b(En)n(ter)22
-b(the)f(curren)n(t)g(group.)-364 2027 y(SPC)61 b(En)n(ter)22
-b(the)f(curren)n(t)g(group)h(and)f(displa)n(y)h(the)g(\014rst)g
-(article.)-364 2094 y(?)159 b(Giv)n(e)22 b(a)h(v)n(ery)f(short)g(help)f
-(message.)-364 2160 y(n)153 b(Go)23 b(to)f(the)g Fg(next)h
-Fi(group.)28 b([distance])-364 2227 y(p)153 b(Go)23 b(to)f(the)g
-Fg(previous)f Fi(group.)29 b([distance])-364 2293 y(q)155
-b(\(l\))22 b Fg(Quit)h Fi(bro)n(wse)g(mo)r(de.)-364 2359
-y(u)153 b(Subscrib)r(e)20 b(to)j(the)e(curren)n(t)g(group.)29
-b([scop)r(e])-344 5163 y(Cop)n(yrigh)n(t)-14 5161 y(c)-33
-5163 y Fa(\015)23 b Fi(1995,)f(2000,)h(2002,)g(2003,)f(2004,)h(2005,)f
-(2006,)h(2007)f(F)-5 b(ree)21 b(Soft)n(w)n(are)498 5229
-y(F)-5 b(oundation,)21 b(Inc.)-364 5378 y(P)n(ermission)g(is)i(gran)n
-(ted)e(to)i(mak)n(e)e(and)h(distribute)f(copies)g(of)h(this)g
-(reference)d(card)-364 5445 y(pro)n(vided)i(the)h(cop)n(yrigh)n(t)f
-(notice)g(and)h(this)g(p)r(ermission)f(are)g(preserv)n(ed)g(on)h(all)
--364 5511 y(copies.)28 b(Please)22 b(send)f(corrections,)g(additions)g
-(and)h(suggestions)g(to)g(the)g(curren)n(t)-364 5578
-y(main)n(tainer's)f(email)g(address.)29 b(Card)22 b(last)h(edited)d(on)
-i(April,)g(2006.)1860 5838 y Fd(6)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
index 8838c5aae8c03ba3914214a52148240757905bd7..b36e1e97f02b4a4a8b94af3367551ff64976dbac 100644 (file)
@@ -23,8 +23,17 @@ Author: Satyaki Das
 Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 License: GNU General Public License version 3 or later (see COPYING)
 
+The files splash.xpm, splash8.xpm contain copyright and license
+information, but it is reproduced here for convenience.
 
-The following icons are from GTK+ 2.x and GNOME 2.x.  They are not
+Files: splash.pbm, splash.xpm, splash8.xpm, gnus.pbm
+  Author: Luis Fernandes <elf@ee.ryerson.ca>
+  Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+    Free Software Foundation, Inc.
+  License: GNU General Public License version 3 or later (see COPYING)
+
+
+* The following icons are from GTK+ 2.x and GNOME 2.x.  They are not
 part of Emacs, but distributed and used by Emacs.
 
   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
similarity index 100%
rename from etc/gnus.pbm
rename to etc/images/gnus.pbm
similarity index 100%
rename from etc/letter.pbm
rename to etc/images/letter.pbm
similarity index 100%
rename from etc/letter.xpm
rename to etc/images/letter.xpm
similarity index 100%
rename from etc/splash.pbm
rename to etc/images/splash.pbm
similarity index 100%
rename from etc/splash.xpm
rename to etc/images/splash.xpm
similarity index 100%
rename from etc/splash8.xpm
rename to etc/images/splash8.xpm
diff --git a/etc/orgcard.ps b/etc/orgcard.ps
deleted file mode 100644 (file)
index 0cfcffa..0000000
+++ /dev/null
@@ -1,2871 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
-%%Title: orgcard.dvi
-%%Pages: 2
-%%PageOrder: Ascend
-%%Orientation: Landscape
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: CMBX10 CMR8 CMTT8 CMR7 CMBX8 CMTI8 CMSY8 CMR6 CMSY6
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape orgcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.02.26:1928
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 50 /two put
-dup 52 /four put
-dup 54 /six put
-dup 55 /seven put
-dup 58 /colon put
-dup 65 /A put
-dup 67 /C put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
-6D4DF600BB73729BC4A5B134928F1370B9F07C587F79388B1D9AC62BFB1566DD
-CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
-0B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
-08E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
-588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2
-C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A
-CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F
-AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C
-C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD
-85D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE
-91430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3
-2E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76
-342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113
-ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1
-C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720
-10B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C
-0FAEBF246743F62D280875D052656696AA88DABB918F79279A980754F3DCFBEF
-7999E7FB7C9E7F88CB15E1596F08E48FA74F1CB613B587BFE72717437E38D08A
-C8B160982A6F92CD0BAD7E033766BB1D92F78F22FE5750D002AB2C7A101A57D6
-3E7ABA9BD4B8C0A4F2820123BBCCD520B9608AFD4372366D876F848ED068245B
-6BC1DDF4B826E4A9FEC4390CEB2DAAA63D9D013B706059347709F3E996C3682A
-F88D827B8B7E1206BF2B2A394AFB00B1207819DAE82D112003911EA8A70DC244
-D7AC4EAA9E8FEB152DBB56A092831B8E149DBBF89E38EE4B39AEC0516C059380
-F7629463356E1A99544E6DBAECDC8AC0A5DCEA38C6E60D06F931A0BCD18F897A
-97217E61AA565EB017AD1A04F4BCB9D2773C04A068232F426DA17912BD61463E
-E4D6442E5B5C15715DF0664E565A77CE40F05BF942079BF3EA4E6EB459D452BE
-529DB54833F6EA5A05E2A645905DB6F2BE7E0594F99A20C7A529EE4B60108792
-FA3D0C09BA47241FB3768B6B224E164B87D247552DE8C62F8CA1C4482195F024
-E140450A043B9480F72A9D84518C9D120D267E49FE72ED1D2387051FEB89E474
-9CDC8226CBB3149CB9E5BD3840F81E6E071B71CBE0CAF2AD204B35BB2B4D2252
-8012AAF7493A958146E1E5A7455C21FBF36D299701570F7FD1174D3ACF461E5E
-ECCDA88DB12351D6AEF67FA66A015E6BF17CDC91D7DD10F9CBE389FFAB685507
-A32CF749510BB91F6F17263C548D0B1861B27B473CB9102085E162864214AE8E
-FFCC03E6E28DF8CAC6C6765C7A46657952FB9FAF03ADDB38E4BA14BD501570EF
-7B40AEBFD3320A5AD8BE650612DD04E13715B3DF076C7DE13A7B64AFE51F3AE8
-B26144E7CCA536FD91F083964EB721093DB72047684A6AE9F3995071AF5F5F1C
-EC0185BAD0D3D6BA33F7AA87AF2118EAFB7FE11AED9175D5BD9E56CF070843DD
-4CFF31665E76FD6CBEFCDBE0D7CC5E0638EA98E38ED8733F0A12F9846817D949
-EBED9BC845AA3F66DA46299583C3AB750EA9900AFDFEB5E5F938C565ED20E051
-88B82F596E539FD167FE3DA545CCD4D38526C915CB92CAF583034A6B935E7843
-380494244B87CBCA0116F1BE4B90F65BD82DC2C9954668CD744E701959B53B75
-DE8C1D50C7315BE4D4C94FF5A1D0F13340E8B586AE2FFF33B2307E3BCE5E0757
-8F8D4FC879CDDEB948023B6C3A9B3C989E3C0A12B054C9E4B9B063C4FDCB892B
-057A86F1142142257426515FD76509FF56A2DD69BF98ABC6ABFC4A8602903B84
-CE20B550B57BAED730F44C82DAD117146EFB6C53F705927DA998AFC1FB976484
-BAFB1F4755F6A3FABB7A2CEBD79D1EA9136F1847E3092A0D34DEC695C7509371
-FF077694F0A247AC96DB4A6F75150899C26DA07AB13DF955E0AB0D5EFE0DA8AF
-D7CD24A886975D087A4F2FAB8D0E92991A9499584E3286D78DDC2F59566EEE8C
-4BF9298E78F2A9FEDD9964A9B6A082F1012FFEEA0283E64BFFFFF9E6FF007A17
-16EA43943FF9A5F9D0CBFAF84E19F5C6DB2D89794FD5450DE9BC0D976510BA2F
-CA53022A37D273EAC3E6EC219F931B46E834F85AC444B83E8B150D974717EBCF
-1FAE1AFD51050394258C25055D30C20305C65914596EBB41E7D806BA233D0825
-529F1F5AF5296B170F061E98FF0CABE8D12FB31A34C5AFE93E65BFBEEE38F304
-32C6CE23430DEC4128FFCE4B8EAA54709529F03A12F59156E7D7DF62D4A2AB7B
-6AAA8263F46388410AC2912E551112569057472CCD7FF5ED44726C7F9DDF5750
-EAF49F466CD6F2EAAD4CC6E35FC5513DE139E7E347D0F6767CF153E432C2FEAD
-38E9E54253B1EBD071412823594F4343AB1D2FEFD0C8721505525CCD6FB3F87A
-7FFC5B88FAF58FE2E0E86A1A5162F595DAAE825BFEF488083E5CF2A48C635F74
-4B9FC91982994910A6C06F2D6FEB2CBDA98149DEF502B7BF821DC12DE0664D31
-DAFE24F67B2343510432FC637F15DB3022F9E96AFC7C25A50B508D4C212E3112
-2E86483A8874004B8E2B8F18EF1ED091647BE5950602CAA13896FDB22E10FC9C
-5F2E6CEC122E215D70DF60CFD79456D13A6889544ED4B22DD7D5C79802DDBDBD
-86174DC103DDBA097D049C6E810ED7ABCDD94BA9EDB259FC5818DF62B976DA55
-3048AFF5C449F2EF544E814FBED1339CE8A576A7336CE29CB6D0E83F8E5E3EE2
-B7A3217EE0BED4D01D02CB1D902B05292EF3FC41C04FC23501DD8818BEB701A3
-92C23851656E3614BC6A68C8BBB0FB30557882A55991C1163D2B70B76E0B9F38
-F53544EAB3AD5304077A54D4B3035803684E1837A3760901E36DFDE4407731B2
-36EADADB9FBC5B086B1A27E6F89C9B4BB12CBB26F4F8E86AB4DE8EB0B63D66AE
-CDAEB516E17954E442923697D17058CAED6609D53F7DD50895F2F79A6CA537D2
-344DDA0BDAFFF4A2CCE0753EB27C875D1140E38106DF7B3A42FD696170C05E6B
-B0661A6FABB42516931546B1DDBEDDA19BB9A7F1DC62E0437BAC2D571239C6AC
-791728D482DE9F2624F8A50F03A1ED39AD433793EA48E813C660A8B43C103438
-4C8CEA258F9875E82CC4738F61768B9A0FAA19DFC4C8CF7DDCAAC70981F03C93
-A2A6D2371B8FF974180439E3430438B0A5BE3B8516CAFB05D2EE51F5CFABD5F4
-9FF5166594E0BCAEB18EBF9D8083F38A2A707779627375B2A1AD31909BE34782
-742444578D5BE70297615061131F4A275F28E3E550777E7BD3B10102E03075FD
-9D89C24D708D12814A70F378B5908096524CC9068E8CF2E082D6BB817432FD8C
-89A17C5DC6992C1C3A59083A7F53892360B794D45FDA420CB5FC2560329640A0
-AB0564D8A0421411D481C6C608808C55342A7C5803B50A9E1D8AF4383C7ADDD4
-29CD57BE680CA8A03E9E84500479999304D4B997F8FF3B53898BADD14F89C08C
-E5718620FB4E081C54D064E015C2CCAAE54CB950BE1B8A97E7E5E2E5B5FEF65D
-9D53186116B7943BB8833FE21366E6FE43F8C5AEA2037149A3FE464A034B76F4
-098DB9FEABB4486F01788EE3F8E8C66197E009F1219470E2C95CE9059823E7FA
-4307E26EA8192B9BBE4599B1ABC06541E0A26E6E8A9F57E74B7B2A06E52282E7
-86F92BAE883FFD3D2802696515A2C69A1DA08569EB95FA10D9CA49E110A8CA1A
-350AF5A6F5A989CD498CEA19C47CBFD664EFA5410F0A7BFD969903AE3E1AC77C
-B6326381963668445133B159A9A72ECF078635DD9F89B9BF1C458086C26753B8
-29B47C70DFC282E3021DE9A4D5350BD8F98F68FD49945269FB6C73BBA9081960
-75BA537DF244074B277C4D3BF3A59FAA6F0E0F6F489FFAFAAE94DB13119757F9
-0FD044781469B0B7BA968567B0A07B6B154E7F6401028AA140E5AEF100164792
-BD57EACC8D265A287376B7624BEB67980639020825453CF24621A82C706099AD
-56277695E526C787D44AD36F97C29A471B37EB2F390120E3EE4077B1EC835547
-7FDBB26B646A35643E447E20138F7CE5C3D69CA733B0847CCDC22F5F6E20CA60
-3B81AE63F6A38483E04D634480ACCD2EE089809361D085AB9609DE8D0134F462
-AB5DC21E5A8608D25D7A5B66A6A6921DD8A27CBBD3A5E7CE49BEC015B774294E
-A497B57C35F75AF64631AF4B95258EAD0F9501B35E3C44944DB18466F2619D28
-981D2AFB1654E8CD8E174DB350992BDB35983CAA5EE9184179EAFB93552705A4
-0208877779112BE42C576FCC6A3C94133DB408F4ED2EA4E4A7A6F5EBBA74B161
-1D0F116471708CC98EFC5B14D179EF07DBCD9A5B5E7E6A15C260788A0626BF8F
-0DECA177D2CB45EA9C90F2FDBD8E799BF42C9730F367F3DB1F6167D263E38772
-4D51ABA82E74B481F7C90A4AF598946869466DF606B45FA82F214A3590C02EFE
-9A71EDF6ECA7496812F0F1FEFCB29FB0881100186AB2186509CDB0670337D096
-81A41CACC03363D397272251D7C7A1374949A9D4E3DF32789AEFE3127C224D9B
-73B6CA57FBA0E54F0A2E38C32AFCE9DD385525FFCB5CF9FE6CC9684E77BDDA53
-05049A6A3E589D31C7D7066947175109655B4C3541BF05755B0644B55D34D405
-EFB4BA8A0D486249EAC7CA0C0F185CC19680D8FB5BA540B0A5F27E430C3D0C72
-CC2F2B1F06F36258878CB8AB21BF4A4D7944F19D41B79E17613C272D5E40763E
-4462D5C8643B4E37FC329056CFA0BB8ABB6D64A146145182015F8C892A5576CC
-D22E976930DB0C1094EDB5C122276A0764844C35E10853CA4F69C58EE90D39E0
-9FAB09B52E1DE908A2CA2F33D594F585828495B281022D2D00DED3BBBFA0472B
-5C630EF89ED53FFE9BFAB5B8B7F2B08C0CA31DD7223BBDF5276F39CE71EC8FE3
-7D250EFAB54CFACC7179AAA98EB8F972E8D03485630A87CADC425526D9BF1482
-E5BACF079037F0EB2141DB6CE00D0D11EE1B7B2641D412E78583A547547350A3
-317CD3CD18F7FE7F38FFF9DA57D7D44A58A96F6EA309E2379B186B7C5CEFCB94
-EAE8195E0DE7664A364CDBA016F43EB88FE337FCF80A0498C6A894C092B585C1
-02789DA87114C50B3EFB823EF5813CAD71CA38444B2BAEB33F7387C1A9F512D1
-8439074FCCDCFEA654A5B78BC7F253076F56459695AAED5C72468AA9D48D72C0
-0D9343A63A642D2D216EF05B1D81157629EEC652411879C94F3ED47B953D314B
-8756938270DC9054ABCC8DC28763A8A5C8E561F01E3A2D76DC37EA43771CA11C
-6E06F985539FF4D300BBCA574A755C28203426729FC73F5CCB978E74B4A86F50
-090904E48F9A0A36C1201B809559E385CE9B0CBC885CF20B31BE2215E3DCCD4D
-9F1A56EA2857E0B982F2FCC3FC1F7E7850E34D2296AC3CA92DCAB4026FFA3944
-25A4E19A8C678E695526342EDDD5C9E8D055E212CC7A64E1F3DB7DDD88DB54BB
-BF92D83DAB5A0EF137B84D56883529F1795CC63FDA45EAAB1E66535297FD8A31
-8B683CFA039F6DDA6A21539E68C8C3520B825D4D8C841EDA265E7E04103E14FE
-8F5A6476DB4B6EDBCD085736502B25FF1DC12B9C0C6278E1DA8706AF096C0935
-2BE1E7AE0A5F2E2EE6DFBC34F55A2425344B5FB902F82963C77CD41340E8DEAF
-8B73457EF0031DF0461E37407B439ACEE52757DBA679B788CCD528541E8EED39
-63A63BD312457CF89C911391F10276F426E5022A760AFACA626903D896D4F9FD
-4C485261D16DACBFE6B61E455D2974247FE0F5EBC82AF0575BE40D96128409D1
-F99978F476C9ACF7E77C0F615ECC1769EE2B43900254D7F768F9BDCC0655736B
-5FF04F81066EAC2E6132EFCC2C65E859083D9928086EC36470A84FFD5FEA00D0
-67821313F38A46E47A03FA855A14063F14FD68631DD0E44ED2C6CCB171653A56
-EF323B19961D3B86CCEF235265D30805CFD1C993C71DB7922A5221C5A8C25016
-C380A6557419CC7879EDBB21C349EF33A2595412AF7F2C3688C3C20CDAF1F56D
-36475154A5AED3739FB3082CCCC3B0B325ADF3B8592A0395F1B7FC724A0AC009
-F898E8F9AA80BCB48C76AE94C151FFAF4EBF7D870C65E35002C7E445C7F00C77
-1DB6D2C260BB5E9C9497EBD922E7B9658B925E54E00BAAEE21D6A67EB514711F
-3EF05E302318206291A96BA66572201ECB3F226500277E9638BC84731B764B4E
-76AEB32C03197FF36556D34F2B8172B7924441264C9DF83BAFE162B49742BC52
-B33E31DF2102D57E8C862D930B217AC1CA0CE9534F62CFFF0125CAF9CFAE31C7
-DCEC45861CA4AEC55CF3409C95948ADCDC660BB19772F86D1D456A969F5CC3D2
-A7673706BF239363D20AC2F4A7A351EB3AE4C2DAFEC3947F49673BE9EA68B5E8
-1F35E4478E89E92B38D19C8A368C9180809B53F79FB32F408F7388C76959D215
-C2BFEFDCED1C0C8053DDEAEE81BBC97E15C6CAEE8F05415808488F419AFBBEFE
-691E5A910B53A381C7436954ED3E0E9EA0E5C8817B67288F5E6CCF731FF6B165
-C7000B664C9A38784ECD0F9C214C336AB6BF4C9ADC60F44FDE100330C5609178
-583484D91C84880B36BD316BE0563278D3D29C57D4E3404BF3E0F5069B2988C1
-F1AB5C9973DBBD265FB1165E7808BE8D168B63525D6FA944BE5BD28314AE0A5B
-101C78A4BD532877DFDAF7F4D747C27C1D1FEF2C3556A8A45BF2C88EAE01D95D
-77EE9A180CC28C601CC4B00BBA6198BC5D0E8FAE6843E705A715A51EA14809DB
-02A624CC4BDB623FADFF90F5A137093380095B820A4EF37CB35326CEA4674D9E
-4A8184D25ADCC9D3517E6B02E00B127ECE775FFA250CE9B3AA2984E856087DE9
-7AAF1907D68F8AAF3CB07A034F88E976529AB6F60C190FF952EA0DB2672FB4C0
-D24735FD57932C664B322114EA87D1D98229C1B5AAABAA7649C574E9C05E42CE
-38CDFBB171E7B1FD1882754BFC0737C55DE2DEF0DF0EBDA160D84CB03231078D
-1FD1F588BF9575C29FB680F65078DB52DACC096AEE312BE16882383C9A102E0A
-DC3966939163A1188E252633CBC3D1055AD97AF14393DCBA32EC5D24D0488DF2
-CBA1733AC645B2DE4F7C8A3ABF20C7AC37C8C43EC493F232C054373AD93027C8
-B0A2453AF04AFE94CBF29DB005F24F9AD2E6D4CEC64F329834F2F39A858F0E63
-C0FEBD5EAFA6F5B380C956F445C2BD51AF4234FBD3CA4466B34D6152FE27DF3E
-D6025608EE647DE4BA7A1DC7A1DB1651192EA787BD75D82CAFCC7A5726928CE7
-CEE722D3C8B9DBAB77EB240C51684EEBF570C8ED996018913A8D2DFD12D341CF
-212168B14F6EDC5B95EC6466454F00EC3648C03D1618ED34C57B0D1D4D1732C2
-077AC02B5FD130DAFC09090F1CA5C1743036810EF86FA119A2774E518C82C651
-F3AEAFEFB00233695DAA7528373463C8E3AADCA69D13929A265CE29CAE7C9B22
-411B13F24784DA42EB3DF6C7C6DD9C04B167384A6DF81088F50B51CD10B9A4D8
-1B6DC94827282BE31501C03C29265BE63A20BA54B1690C510A20613ABD10C545
-6A7143BFB9C6E2D5156D926891A0BBCE62EEB65A45A1BD9557C427C1872CEABC
-411CE1ED857190785BF506B52FA56FAD1EE7AA168D9CF763AB2B7DA561008E75
-F84D2DD747282FD0BA924AD3E271E597E9EE4278D1A422317FDAB9C5DF0B55F1
-67FB7847BF5C3D0ABB90D0D0D0DF95A520CDDC778ED22849B23D396774C93702
-D33D20337D58BAD00CCD12FEB34B0D4B5561C41B402A59021CE7023F12B9F305
-9E5D3136228AC189CE3D18761089781C5AAB38B3B7FA6205A926262E58AFF1D7
-FD536B19409F82B8F89457FD7503658DA8CCBB35A9C374EA7664970244F14D04
-2446BFBD583766C2F552EBCBDFFB0BA521C2EBA849B48C9541D6E7E6780A52D1
-B6326A1DFE69B33B5181FFD1013842B314787DA0E86C86F434258DECAF48CBCE
-548A76804C2DA46F3852540B2E194F5CE95B34477EE11299E7C1A08B4D4BD28E
-1AFD0E500F7BDD0B53582FF2B9662E5F608F3E355CD95E6A216EE8BC2C047FC1
-6A5DAACB08C71FDF705F882CB2D86F91964FFAD356B0D35EC4A50E83C104C95B
-724C85D256C06AFA4AA0DBDFE2160F0ED9A8D0BB6846C42055C7BAED7BE1C519
-DA628C270251C4B60D679C9D56DE5563C4C6FCE19B9C6D6EB99EE7F6E3598C9B
-063081DB9D3701B62F3BDFDFB783E35AE6ED183141CAF6867EC74C09D2B5122A
-C478BE7F37FDBEDAE08D4EE9637A4B28B81FE1A3DFCD8DD00828FF42ECF3E22A
-66F0E8317EEB7EECE2DEAAAA78687C26DDD470B49649CE19BA786989B76AA8AE
-4CE3568FB47893AE67D8C79AF5457600CB5B09A5F82CEE8027AFFC026E59F379
-70780DA7A2814587FD3BE93E38BFAC2BD30772BE2771363C561E2D9F54D6D1C1
-EB4C006DCE83EA61B8616FC149D748DEE7D53B1E2C55D487C58F987D1FA8948B
-B116FB9E8CA9BA70F0ED720655B6336764016FA354F334795EBA5FC35AADB9DC
-BB50F313F7B626AB164B5248F9460B957D3E05C047F26776E671837B4B2EB458
-5E4197F3FF3087389755B56A007A501752568F920F04BA3307B24E7211D39FF2
-40FC4988CD86E921ED827DB92212523B7DCF6A14E897A3FF05FA5690C71A2B33
-216ADF5A2E468F0E513CAF9D957688F45A719E220F8C76CD2F86B0915ECB3EE4
-BC64C54A24C753F9333C71A66551993BBAC36975DECC66D43826281B63720418
-7982B6B5C2DE44376E5D7192375381D72069C3137478490927353EAA5E6C24DD
-56AFFFE84F906F71558951ADAEDA19FA3DD49A8A8144BE907B1A139B40A5FABE
-8AB57CE03574469293ACBC02E44BC0C7F6B36FB58761C167BC9A0164B91C9995
-2172898DF2F67D623CEA81904E3589FB4A3CABFD3F8BA922F8A55BA471E799FA
-06292C922ACE066F24EDE84E43D3F34AEA8D199EC21C4BAF8C00EB611D27ECCA
-8BF0678F48EAA7020B9F98CBFF67B12D46A64467FE01BEF5E17EC7B2080655D6
-B384660F1CAF85395CA2325C1A0E8152073E1A4ECB1BA86E4671E9AFCECB044D
-AC5C4892248B1940A3279769779212D6F87CFD18FD76120BDE5AF1DDA4F42802
-90640E1B77DCD2B7B302550C046DF13D1B7C8FC0DF4A202CC4AB5908F8E229B5
-BE28252D80C6D12949DFA9776C7B3DAF0DA811EA7AE53A70B2059FF409271852
-A43F5AF79427F6EB018FEF249B7301D8C9844309A52E41E2A5984035A2860156
-44DED1705CC59885042D71DD20EF695057B8373411B15855CD9C61C59E
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY8
-%!PS-AdobeFont-1.1: CMSY8 1.0
-%%CreationDate: 1991 Aug 15 07:22:10
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 6 /plusminus put
-dup 36 /arrowboth put
-readonly def
-/FontBBox{-30 -955 1185 779}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
-5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
-80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
-1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
-DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
-9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
-CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
-F83C7D393392BCBC227771CDCB976E93302530FA3F4BEF341997D4302A48384A
-CEFFC155894130DFBD7E83DAFBCE70381094F6605C8EB9DBEEA3DCEA0333F929
-2365B0C003D8996C3E4E58354D9469906A28DAAA2DF13E0859B7EFA49E7B5EF8
-D01C865F4EC310688116C8B672599A57DB03C2DB20806B9E15BBB2A87DB203D7
-14DFAE5551A5D34D8B4B6CB1DB4CB038D54D702E3B67DEB2898C05EE33325853
-3F09AF1C2DEFC5257DC5C91A6490DC40A48F6B7168945ED1FFBA835DA83399ED
-A9EF1ADC5EB6DBD0B789B9F28DDABA4EA659DA94A569F2FF3292D067941CB094
-B6C17CF8B66DD7C555A45413C3DD9FE30B2E9C1ABC7EBEF6F15F7DA1B3D9D8C6
-2899BB3239FB59D09F31521BD6FDB84438F675A5357CC2439D97F825BAF6C79A
-4DC06A86FA4FECA352121A4A1A3FB7A976232BC4D9BE5116BF8A5EB5DB354EEE
-3D0C229F849FBD05FE564953EE85DDB485D1886E1FEF1CE64E68F00817F8B0DF
-6A653C68312B93C3AF89C1B2A83DEC642E7D1FE0A0D78A7FCCA1B8A96864EDD5
-9119B787D621E57B088B3A463640F695E6FA699AAC321B53F93576ED3DAC2FD5
-86E18127E8FA95D79886276FE099621AC8EF46951F508645581EE53EA2E38F37
-EB610A8F242DA8F7EEABD6D4ABC27DC76D01FAACC1CAD424C51D9F2070AB1A96
-AAD2D3510AA34FE5F7C534D8AE6367C287A38948D9CA2398C799C5F861C284B5
-40D6C1804F41
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 46 /period put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 115 /s put
-dup 116 /t put
-dup 120 /x put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
-BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
-09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
-3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4BBA0EC700D5662AAD9EB38047C6C7C63EB3FA03B5EA9E56DF0E30B3AC
-058198429E22081FFD4CCC1F3A7A88AB8A22C7C6C6448934DEC2212E89998259
-653D779091F4F7F6C0A76024363A9001817B1D572847779F98F02FF9A1B45270
-2F7E42A25C687D6E56C89BBB580DE865D7372A02F329E71E0BDDA2CC8CEE41B7
-FE95846B78982FAF79E544CEF8D72A94FA73E69ED3A5F834BBE082CE0E8D4EA0
-2F619CF8441B5E057482D71D834BC6D93BF9F7777FDD2A5216911D31D34CDD76
-8D0F805FF6A71D77AED0D540ABF995DC77C30ACB207DB2513D691105199B2555
-CA9418777932A54E99E56E5171261B3708D8646A28803DEC8EABB44E80F3132A
-B273B74A56B5770C09508637BE122DEFA8A0B3438403DF67AD2FE9641009CF03
-44E39E8A56E244C56B8777F486C958C5196286F36761F2568FE1A8A6E74D6891
-19F7E393FB94388DE651E078D4D40DFD141A0FC074ACB3384BE70073C08E2EE6
-065EEF9768D260C08E40B2461EB226D820BC43EBCC49A943528B8E5FFA474300
-BEE3AE339C2E0C4B247A4F8F9CE588AC67CB6FF85ABAE18AE0F77219E44DBBF0
-C6B5958D89EA19BCA780BEBC7C29EC8919CB9754753DCF4781F34FF4F75FB52D
-C00A65650B9AEA0411B117D2DB6A813F17569F8D0BD600FF94F063EED10A9F10
-72B6FF606A4778CD73CE7A03EC5F31B6B4C9D93B80921FB7109C1E9926C77113
-5AAF1CA527E5D262674D0B05681E38FE2F14916248E81C52079AE46C4AA3C1F6
-9BDE6B8A497600BF36E594079AD3637D27E2F4FB0E89F80CD10A1991CDFABF46
-C36D32D5309D24024BF22F920D954E50EF667272BFB5CAAD0824641634CA4CB5
-E7491D66A5ADE670AEF9C5B1F1B45497FF99C2361EDB1FB5C8F5D9EDAE288C68
-EA3337F3AC1EC76037252B7107C3F96746EB0A6BB2DD05F1D372B0ED5C3F56B9
-CD6BB3EE200D9A60372D4EFAC7739E2629151FDB2BC336A95260119FCE6A9511
-2937DC9F522CC0CC6DDFDDF5673A962E2DFE6EA3923A5CFE9C4EC0C69BD1DEE6
-9F56420E6E8F972A3B7462F4DFACDE97B4F821E1109099298C77FC831E6837D0
-5BEA4AE2D59CBD525A79C96E491C20EFE0138F1F9A9AA1B30367982357719380
-EDDD75F4547F1997BEADCB8B7FA9227DD211433CC05C0B804E8BAAE95171EAEC
-EFB60DBB8399E83709895D5B4DC11E11FF91E2A39861B12FFA587E8D752D74F8
-71456FE15C7B6A885F2BE67C63B2D9CDC1EE5688CE99156821183B552DF78DAD
-64F178CDF98390D8C1967CE7D9BDBA99AFD5A9908A950A11FBED22FF6A61D0B9
-3BF4842A22E2295DD259B0DCE2773F9D672B217B7F19A4D22BACD2DF929FFDED
-EEF43C052D515BF739EB5B397F9B8762083965A85F96E6BD48E0402C85FA03CC
-5CBB51BF4CDD01B891BDF1959AB822E9E6A8B9CD914EC25E861DAB64C443641C
-BC2F1ECFDF4C3966E11F137787AAE702564B3EC4754982726AD67DB2A98E2EA6
-3B843D824EE3FB92888AF133ED29CA1B92A87C50E71640E418A5ABFFF469F972
-8AAE580B2E255272870AF5BBF923F9805104847880113BBFEA1FFED8B19915E0
-A0F0436BBE20C7E3FA1DCECFF072B8FBE3A100A33B181C0816CD4E28A8E432AF
-BF308B89336A8710EE740E1583A9ED41C97F96D546DD7613CC7B214501E14087
-1E8F1002BDBDC12DBC8F4CDB5D2E62EEC19007B3D89407B865721C28C7579845
-04CB6EE7A3AD6032D3DCF9D01F83DE750BC8F0DFDFF13FD400AACEC35690983F
-B5E04373CCBF469472B8AA0FA6A398BEBEFA8D914D548D0BB5589E1C40D7F625
-4F8E0FC08108C2288DECAC258D819FF92AFCB63954960A5B194934FAB5F4E757
-FAB4AF44176447EFE9E20B44F0E8BDCCC0925DD4703F6DA0B2E61E3121CB737E
-9E5FAE5B899987C8851CCE11408B5B12D5F67DE0552ABEAC69596F377AC65A83
-25E8ED90ACA8DD09D0D9AC984C2EB9A01F3502CC81422C68456A9B15796C8B08
-0060EDCACA5CAA76549D613EE7CFF973E9091B2B8EE4B1DD0117DC140C16527B
-47B335576E75C4E558E3777AA9EEDD3DA21B63E7DDDC10CBA609090099118E86
-37A4AAA5300E6DCB887E36A60601D4A02E98A547AE834960BFE45F644A23211A
-3D039D63BE8A49BC421B19E6FCD8132DD37D65E88C685B1775B1D05FEB41C705
-E3DEEA6307A5B44AF3153407B8042099128F867D3924B477FE258B3A23A47757
-B8F09B52A747698DD84E7EE65C4B30ADC97F7D6A63BB621E9EA9CD76BF8F3408
-0FF1D4AAB7A5F1417EDD399AD210F59E06B606A26C69368CC896616E802BFBB1
-613B4CD2AC76FB267B7EB1178B703F33B8D199BFB0968A82B193A1A32325442D
-C4FEA2BB70F971AACFB0722724724FEE9041A3232BEA3A9870939C5F0A5C00D2
-B292BEB07201BA6FF9B43D887E7F18A28AC2B9C998419378DCFFD57DAA9A88BB
-B97758828F0CFD6B810FF4D2A0B2D62D06110F2C804EB4E555E1B2E0E316E503
-D30F7878704FD816B6F19D49A1F9B37CAFCEDBA771421CE1C43DF0BCF2B2912C
-2E9F1105A4A91EB3BE467C8D4B3312D204915C237E09327BEBE496031CA2BD42
-EEF53F0ED5CE1F9D6496624A97042B0B45B3E59D01D41ED3DD16399C6279A9A3
-491272AE972C2F332CA37E1D074B97C62E7308EC803C251DD44A2B9B2317FC72
-345F338F335BA8A1C0F4E6BCFF7DA5CEEC539C08B26384F70724118E3D6BFC45
-608966E2FAAEA78A14234FE7547DA9C2D02EB4EA39835064BA994175B8BEFB61
-D0450C331985D54E2B1602D85EFE3A09FDA2346D13E203F3A52C2AF678ACBC01
-3980E95BDC04F2BC968C1341FCD4463783167C3361AF4777333EA568DA52D2FD
-A2B34B7064477C2B455385ABCC88BCDF277A1B33C90D3A6A431DEC8BB5863B70
-E1C769932C49EC1540B1139F1300003F59042EF79953930CC90C087370B46999
-0CCA827C1F1AE29E1CE29098CB4B3CCB91A61052071A550DC52284DA71169D75
-EB5B418A7CAB2DD4D9245615DAF8D846D45EF49C331E11EF875B2C62E470B0F2
-01BA91B2141C4380CCF5773C0C7B90B4447DBA415A2372B2DA4AB109D13DA0C0
-6E5E54C9DBA4FC967F0350E655425D1A896A2E6FF676657F4241A76F9F018190
-6AC7B8F53052B8DCD54168874304FCF0530E38EA0A422D292DC6E310495B5AF2
-E2F54210227F0FE30576CD6EC8E8BA26A398BE076716C20F0972F153C404D539
-ABDFE8BCB69D8E9A7D7733A7123BDB6E7755E35B10C233DE30BCB34227D7E550
-56DAF2DC5ED812C1127B1EECE52E1485FF2DD092984B0DC1E58F13115E939B3C
-9639DD3B13604CE8DCD603A13E8DCB7520461CFD6EC06F7B0B729CBDDDBB89CC
-9A70CDA0840B9098C39A01DFD556E3DF37966F07921067DE045A80D5716C8F11
-BDACA5F2AF25C7527440BAACA8C5F211A3C30FE38DDF87F34FE9E3DA9BD3ADB1
-7C151D5AD23BE78FB5672C9339F8BD904AFAD6674453A3BB589C1AF295358C1E
-4F6F89BB020E1A146B5855B46A366773B65CC0C449319CCDBE75B3D8AED76104
-E4C4ECC307FBAD006E98A40268DA58CFB135869C0DF12F3D9F96AE010BBD2AFA
-5297D587D5C599DB3687EDFE865BF7AB530C8396A7DCBF84D196D65055E078FF
-CF1BA51EDE702BCDE009D9903EA7658E906887C4BD16E91D9FD49FCA8F75517A
-332077D8284E564D84789C561E93E27CA36D32DF337713FF2E91861683F6DA40
-C5E8F505640B8CE65895FACF142565AAB691F7C9376978F98B679CBE1C163029
-1E49797740BF747243A3A569811EBAC9119E7FDE8026E752C198D116BEA29A14
-03F40F6C30C571146C72E6AB8F581AA24D24B639BE55E925DB8640CCEEBF1277
-C5628599AAF6D1858ACBDA07C56A7AA9009221D0DA3B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX8
-%!PS-AdobeFont-1.1: CMBX8 1.0
-%%CreationDate: 1991 Aug 20 16:36:07
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 45 /hyphen put
-dup 58 /colon put
-dup 67 /C put
-dup 69 /E put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 79 /O put
-dup 81 /Q put
-dup 82 /R put
-dup 84 /T put
-dup 86 /V put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-59 -250 1235 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
-7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
-EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
-7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
-AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
-E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
-4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
-5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
-611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
-D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
-EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
-35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
-ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
-7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
-C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E427782B91F1098562
-3E22288F48ADE6EFA58CAEBE7C070A920C3A85F4327940DBD99179C26E3ABF17
-64E9CC6A45F17F19F3EC1C53B17485B813CB01915D55CA2034552666D5E44A96
-A0FAE064F599AEF095CA1816F7066EF0AFB220FE1DF11FAFD503505C5E6793A2
-6475E95FB467E2F3B5E7C6663A70B15698A1D158E23D3ABE3B6942B24832AC3C
-13F258038DDF209525C4124806A369ADB0423C2FD0F823AE3056F380B7128089
-68987840F5C813B43027BCB2A20A1378CE89971FFAB7C49E769C107D0A77337C
-26919C3539778669CC12C77CCBF76FFD1E1EAEB90B33848CC5CF679166698556
-B7D72CB8A2244D22E99AF9F854F242617F6F3E61A0DC7BD2BF6A40C87F046879
-D8D9A19460B6261BF22B7DB0E3C0266CB89E6B328012BA6499F3EB3016431689
-E372BB495E3C0861C6D08BD2477EA2A485BE95AA1739B80EC541D841D22DB92E
-02A1B7E3CC1686F87BCD971917C5C1A65BFE2289A803E76639F8514E0D3675D0
-96C20C000970A05788A538D6A49DF66AD5C336B20461172A6A72609A577D1689
-75FEBAA74943DCFB58C3306A436B9A04921AFD5E852BA61F8A24EECE2B189934
-9723380458FD60FA66245270133F2497692687D0ED736302E1E415C74951869F
-00EB304B5BB55326C942323BC1B45753B58A961B5FAA27E04EA4F40E5A7689CA
-2A1F93A2EE11C08431C377CB8567BFB94E591F1E90A43A0683CB6430DCC6D8C9
-260726710936305887AF0B706CB4207C093A062E9F71416BD3CDCE1B61641767
-DD8531D86855C9900740E0F462E9FB34582AE93082968D35373332D8B7826736
-391198B342749A3466F25EADDD844760D4800B34C5E62AFD5ADF384A5CC75DDB
-3A01C80C11EF5942CDCB0FF12BA3FCF59E38CA65C6281B3176A173F444F74AD2
-F04E140B0AA8FB97892C6D56EBF0CE944CE85E6338C14CE9379C0E59D12B0688
-FA11EF7690BFD992B62B21415CE5DBDEFA73F5A2A824E77EDCB985AE0DE18ECF
-DDC0B34ADDC0DBB27B780873B2805F8C6BEBD6E0FEB5E7F3055D2A2B4E5720A7
-4C955C480A8B44A600F9C05CABB4C2F4E611FD6F89F5163134298F633595FAFF
-5B5FFE82155DEF7794C43738F417358062E83CFB1874D69945085D2A3816598A
-F50C5FF9393C8943CD10CE49605A3A1AE9A156ABFEC23175B39D371164D98408
-506A49A965BA09DB934F2A75EB77DDF6C8440C9788480639AB0EFD730F4EA731
-0543BBA428FE02CA1CC4B6328F448437E1DBE7C489078336AF4F6E32D6DF15CE
-531FC458E56696745AAE8BB6B9450C245726171F769D87ED908948F4BA8AECF8
-8F003C365266F1B442AA7A7C2714E9DA2E026CECF393803FABF7680224DF9AF4
-0FA85E76249B1C4A774037409BDD1D02D4718DFB2CE5A5FC5AA2C7B06579C881
-E0C9F0CEB353D5E5F472CCFE1299C53C8CB62122024C2BB84F5D7307C94DAD6A
-57D7DC660A66CDECE10951C3E55CEC6148762139D2EA064CCD32B5BB384C82F2
-43E5DC85EFC369269C27FA9B5AA9AF74FAC95E321DEFF3C6CF75BA836024AABE
-3C30F4C4B414B96EBF3A55175F9BE6F8857870656D3051D104058BDC0FDAC3FE
-A48B5B7178168A44CB954F4D8C3195F1FC71D1B843D5404A24C7B9C4D45ABAD3
-99C51873F5238D3CD624459366DEA9C1848CD2C04EB2FFE0DFC42F7AF3498261
-AFD4EF43C651468AE86D61F311153A9A5D8789476F21EDED63D3DE855FA062F6
-43FD9D9CF6184D27CCB66EF93A1CC72F5C7FF9F3F49A2E92EFDC1D99B9FEEB20
-5FDA506E07DF6BF940C1D580A5C059D7E1DB67B3798A301741981458ACD7D2FE
-E299832B48FCCAAE65C06E1AA4E10CE41D15EA08E80B6D2A1A53C1C63C9A457B
-829A7C23C23401ABDC0F25293590BE8B632D15C80F81CFC38B85A94B5D48FC3D
-8C681F51941621760630833EF2C49A6982CF35898EC1EBD2177434E083B15A57
-836BF17B4AFD3B4F3D712636696DF05FE82C47CE62B61CFDE995149A54F298D2
-6C3235FD52595BA9B7806F11FE4F0142DACD2809372BA24629D130D8A01F10DB
-776E447925376F4B80CE2B6B66BD5B7B3D4E2621E018358F4AB3AE45D0E1A00B
-975BAD2008FEEA11552451F1A61E912503F9377718A4B325F647507D5E757230
-DDE27D6CB87589B2ED25882A7B80D89FFFF48C54C01EE3B8A918A836128CAB4D
-7D2ECD77A67A49CD91CE5C4E003DA9F1076D30C611A0DAC289C17741AF82F473
-E7C49BAE28082FC03B41D4B541D0BA5D7D82379EDB9D64FD5165A0103538AE71
-295753DC2823A7C5E100704F954891A23D719C4F936DEDBBE9C4355B27B89FAD
-45A29D0E5C85A69E2D200305BB3708308BC679C2FE980564CBC015ED3D782E78
-8D48D2F57208FFD02009D73393A0FEA4DD14CA62A446B16243C2A8BEF453A90C
-78D89D69313C27957F34A862E45FDE5638EDC3D57D3117B0CCB542E0FC3011CB
-6412293292FB551B219FE3072203142024C53D3BDC5C817B5E8B6A484A2A8BC3
-8BF7081E875F36464EBC8D7A828899001E924BB9611CD62366EE43064783C430
-21CCA1678B538BFD58A2291AC68460F1BCDB36EC0F075B8DA7B13E363C519A23
-C96FA37135DDC2EF4FA57F181A94B4CCB800D2F7024CF1D7993F053BCAF911CF
-60A36BF423C99A43A2963CF3359A1F2C8188AA8EB28DF443AF3E4AE50F23F429
-578E18A4FDB99BE0A2225E7DD7AC06B868F6B8A5660D3FBCD365230E384715D4
-33ECD66C4739A829E4885D46E14B36ADF54F37E79CC49AB1076A49AD8B27636C
-0732AB8FAAED87C7890E5FA5317580C027E5047EC30A8356E0B47749CC737382
-993D676928E8142E6B51307E1CF2B3BE5AE8CDB33B649FD018487156F8E2FF7D
-85E6B939253DD96696E6D570E259234C47992C2AAC13FA6D086CC91C102A6CAE
-B30BF0B9B45732EE55E083103C34266B2A80F1477E34EDE9913EE90FB24B5D9D
-07514B16E3BA70ADDD02564411E365C042F716B6C5C8E94C26E92AC368F51323
-E880944E0F9741FAC1EA8D41EBECACD27AD338A55BA30FC3349261BA15048299
-4DA1B2149B74BE8862637CD26CBAD1EB1E712A4C2E36B625CBE8D1B0D30ED6D3
-7D644B027941EA55026CB22D8A4C08AFCE45FCB99ADAF933E8DE08C8967E92A2
-45C42E9499522B4B122F38BDE1023EB714EF35722F077CF2D71A144B64773436
-D35008625DF320B7658F5E2E637FCDF8D94E49884F916E3F39AC2071EFFB156B
-75E3358F9D02D4EB15F088F6452CD9B3710B052FFD5C5DC3A45B7C3A9EA11305
-8DEEF39A93AA68A486275696A4E4FE27EB577388925F228B9239AD395ED7052F
-4DDF57867804E3FD4C6F7EA8622BF2401D02E2C4E53AD18105684ED2CC222B1A
-38E59F99E0E25D8A9754C6C6C171EF65A28310125AA193735F026DD112C1ED2C
-F61835AE0AD3753373678554202918B032E0A363BA9A041C95CCD442BF9D4C43
-D0DD14018E9422C4550586CE93E69BF9C9333C66137F6E087BA85EA81B90CBD2
-75F45713C407A86D381EFB9692066BFD9237468086345DF9481C8A571F695C40
-E850B30AEB04AAB9BF740ABE53BA163C563F49A566475641D674538BF8531DB9
-DD77F36086A5D1F8C2E4569560A1464F5A27A4056195565B14A0FC3EFB8AD267
-1F4996B678C8C7C804E1C7208DBC3AA7C29BCFB8A3B796E0E00C8F3832BD5132
-7602F0FBCE8E645DA3A86CDD88C7B898C31D8DA72CAB51ED4EB5EDC680029AA6
-FBA32B92E36AEA941BF29DEDECC6730EE3CC1AEB6212CA3493A734118B3466E7
-725EC06C69F7600C9C7FF98953F7A9BC0DD02C36472CDFCCE360836930293B18
-A523CDDDC9A8537F798F912967F1487D47CD1C46F1B82F1E2C764A24745D1BE5
-090E694A433F4C6865309FA9F606BF09D71A3B1EA34D64D3631012BEBAE8AB88
-37C91ABF7B06D29EEC9EB772A26C8A7EDA25CEA8F30C8C46F3847711D28EC176
-D834246943C44D362457A446951A3302816CBE65D3FB1CE0B281D795FF148938
-FAE1B297EEE2CF5F1968002BA2310CD8F1D3B7DABD2B1877F4368B5DA6E59E26
-2AD70CAC1BEDF0261EE31E3B896967D337954DE7DD1533824E1952234915D613
-069BAF373D8BE5B3A4C1D5538C4E1D741B90007560E89002B5EA819316B1263D
-9A522C23817B01E49C38454D1B1144BE93F86FD9B458CF8EC40BEFB0069919A6
-527E0EDD1B5A5D28431E8009045DE821E11F2790A0AB6DDC0D7CA40F8858E91D
-12BE281CA0EFD5A27F018EF6100F49A522F53721D8B6A41AA4725345112EE408
-904601539B671205A613D54DFB074EACAE2A86DD866429B0D1EB94F3E4E0CB8D
-D51D0A39716B59A4BCC253CB9359F3648E9207B453380FC76ECC61D46C3E07E5
-F63A715288750DCD67CEA7C055A53D53787AB422A0511E4D8E2536C471799A99
-4E3B44B6CB216831D0DB81458C2F709E8592DC238B01E1F1D39B562EB6998E9F
-FF31233047F609FE96866A96B326FD16DD5E509C045DEDF4DD8D7D02BF0ECEB4
-506B398F0A74B5C5E8CE0689C5E26BBA8AC11B22674A735D54696AC2F44547AB
-52E3BD8A7054DE97AB567EE4E0963EBF229EDADD57A2512E9B89CFEF374B7DED
-A408A7726EADBF49B0E6A177D8876B0F788B78408D56ED9FB090BAE6A8C6439C
-7F5AF2FE0C5BA57A389C92B865E52DAE238E22535279AC36E60DF19F54239538
-8A9781C520D97D49F6EA80C4EADE5BF9D17F3A28300D3C841B05A7F838544362
-6C23785D6B1C236814B0F7736CDC7ADAB919B6951FEE9BA7A62A4F4B9336C187
-117853565F7BCB05C259826777FBB49B5037F72AEAC8C1EDCF945092446FDB5B
-74CE9DCA84F3797FA667177421ADDB108AA6D482364A93F2225CF13CB3885427
-B1F6902EE69D064C1A88E5F04DA352E0345AF1E779CFA3FAF37727430A757CD5
-0B59E55A3E0230E63FF88C6750F76D07EFFA1A78B903D77E04023E5265CF5A88
-D811F3A0B3E2AF7052D2360020203F2F0102F947080662F378308D078477064C
-B8124AF110B4B33D710E440C73D210D805858A28FFDCD291A0B544C154A2AB3F
-664C26C9FC663A1A97A04A59C77E8627EB32B2A42F6690CE70786A5EF1B34E99
-57720D925F9E70F5C9DEE94C3E17BC30DA1B98937C573FC2C7EEB202645D3F3A
-816C190439C80829EEBCAD79EBDA164DEACD04107D74408F0ADA22D1F7BC00FC
-FBB6359BA6117D8EB97E17DDD4809C739137686F846FCEBBEF62B9F55A2149DC
-A71D994EB9EA9D7376F805FD9E904AC50A13579D182244B610768123B08F92FA
-1B189CBE3A9C8C5C2E0E63CF47AE522C4DB585867752FA2B64BB5F2D50ECA9FE
-2A062966103FD48A55B49F6E4830BF6C3939A40B918529B5AC01AE4B334842CE
-96B5FA4E6ECB15CED6D7F493A7E1605A9647CC0DDEF454A961CD757E59F04EA9
-8E62D3C999EFC2C5FE9BB6EDDDAF4BD31E10E9C5B3B7C4DB75274D8ACA7447ED
-B34272B2F0E41A697D693793E0C04A4E9D30750A217E504FDF62D4A2AB57630E
-193BBDD8070616D59A5CC58036F3FC66836D63CBC70BFC19FB48BDA4DCF58D12
-4106DFADD95377641DE1A24A65BDA93392161491A564A317404BF46666D2287B
-6E3F2E0D272AA18337FDB9E81D7A2D0812BC04687ABA6D9B88EA883809FF7682
-652327BB3E10557534B8F4594B9AD86B95A9326602E865EC56AF146B70FEE003
-CA5B37FE969B196DED84A6A699F23BDFB8348F7FAE27DAA2FB12C0A41C7268EE
-972B87C8724F022A01CA8DB977738033CE5D8915ED12134619A71089837660DD
-ECFAB431F53699ABB1E6FF52880B2D1A1BDFD6E613AA4448381563965DA594A1
-0701242692DB7E58AF9DC3026082DEEBABA5D6958AFE2AE19D53F6C9F0488AB3
-59C30331BDD91BA7685CF5F903AD278C3D75404E3262CC157A1D3C567DCE7BA0
-3306DB42FDFC96C1CCDC51DBC55F46C4DAA942E953AA3145B25A5E2D157B388A
-A4B68D098EF6903721C8DACC062D31E96B4F9909B7528362F1558BC915A3DB3E
-48C570D4C1C8582E797D39A7170FA22E2358BE23067159FA6C098B8827F873D6
-5680CC93B5B05CECD223C9732197B96DDEF87802B1A7E7B1B2228A6FFAF80C5C
-23767C9B21AFF004D1DAC66AB53D343030C9B0D6C25B1891AA93E911D61D35C5
-0AC26184E42658AE9271BBFAEBF2D2CBFF894DF26772E5196A0AE47C8A52231B
-FAB82CC3584540DACDCBDC8DBC09C833E5D6D012790B9AF3B1580D0F7E8BA407
-E8E35087A1E3C5361BCC8F03C6FEFFBCD8531A42F1CE478A7D1039AB25F5B2C3
-FC71F36B8380B90869C6C5956D574D4260E4EE615559A581B0FA60A599F9B181
-8EA47D431915E6D598701167A4CDFA160A4B0EBAF14CDE748D1E614E1EDBB5DF
-65B380EA41B1FF85A9989829CE1C1E6559BED3E8CE48B69AFF96CDAF942A6D6D
-15DE7C2A3D01B99334FA908EEE059045846470E862FAAF828DBA1C08E1A798A4
-6F91ABA3380A75720DACC2676A99F70891B73EC130CA6F125A4F5A0A78B37850
-0A7E9F586FCF4ABFE0C651EF317497DBDCAE1C17B11092D2E736E89B24986085
-C2EC72EE7C3BFB61EC414C71DBCEEDA3BF3F0D2D94E8EE4526B02B48ACD39360
-A563CB5AF3FF0335FCF8C626639677C4D1656463AA00F22486568EBDAFF2739C
-8D55B844ABB8CEB3D0837F03DD1C5ECD36AD948B9A29F5542C7E92C1B60E2C29
-AB2EC50135AFCD09BDF341BDFD12B2A1E2886C3AB039BF92CD769405244DDF80
-0E2FD935AFB6D7D35C76145A8D3F4824B95E338DAB335478A23F3FE655107CE0
-4C4223CD2C73C25A674AD76C1F03E71EBE63629A83FE3713B9DE78D5247DB1A1
-581958FEE0C008D9D99A91D35990F3CE3E8063A9CE632DF6AC5B2C9B502943A8
-445842BDB16737CE0C64C546F0396D4764F05CB859975AAA634852A30AC70725
-1BFDB2823526AA324DED4DA8B5AED06EB3AE464E228109D9839AD2A23BC9BFF1
-B7524D5D193F799FB1F0F69D4A8C97979C384F2D6CD8EADC052E67FCD37DF4C2
-602954EDA36B0A7671D6BE32D78E3DCCA549236197B193D4D0D0A9653F0FE062
-EEEEF079F8675723406973C1C677EC7BFA34DAE98C5A43C32B3C4608A71C7C85
-4B9704A07D90624FEFBA36201117018E3BC5AB242F9D75014A4BA9DD98C04950
-4F50530202B7578DD05F1AC087B0D64D81CE0EC06905B5CEEAF1E02C23642260
-788FF9AD68EF0380A70A192E24085D5DF02B022321505CD52F25EB2E56DCE224
-2A293566FEEE9023314FBF5F8213C65AC9D5BE7D4B0D535CD07D9B1C5A780BF2
-3B62772883CB65C9DBE77FAAE77AEAFD02D448B914D0B1A1B9B4392C2F85F000
-6364A4BDCC7DC8D374A0E17F4916C0469B76523D90E213189CCABE0F13CAF3F2
-280D7CBE4FA55D914F97BEEFDB2A9C5072E3D77792721B49980395A8B9D41B84
-BB7B1EE10FA3B984464C976D4724A370584533A199D58E897246D6B6FF2054F4
-1B2CABF615E25B9D0869FC018FB54ED68D97380EAF6386378E421A12FC5DD31E
-3DEC9B4A2C6ADC74F7087A163F40D7F477F2D99CE071C34A6432938BB026A3D5
-3F6F8424EFFB7224307D25DA338D55770A004ACB20D575E13BEED8E64819DABA
-FB571FC7553B92B71BBBC21B5F0DF73C244BC910A9143A9D5126718E482A1040
-DEDFEF8A728BF851F17054041212A881AC57FFD6C9A4F120B8ED45183649924F
-068E43703894B9B33A121B275D291AB18C149ACE51F5C5BD60AA55BA2285BEFC
-F43DAC2383B82B8145A3963170CBB6FC34122ED0A0168DB8AFFB95363BAC1725
-820F128C9444E23BEAF86AED7AF40AD0ECD47A9485B2EAE88B80729C2DCE8999
-A1F03DA20B2E0B28BD8D48C7249D2FF8C500C5B766302CEF5F4CC94FD6CAA0C5
-E37F3C595966EEC397C92A483F6C1B2565C8D08AF784E760B8797FA420801F3B
-755C0962408DB47822C97C4C7FD8FF4A27A9E7FD93C182ABC49E9D6C918861ED
-04630B87FD49C315D1564121CF91DECE8A563D25D25C67B5C4A2061006F6D0A0
-F3D3EE2B349EA1180F477C9B94D06B0130CD5660C0CDAA6D53784179417352C9
-9204E4B968CA82528E84D0F259B95C985B77D06B362329E82FDA880D8F4EBB3E
-F21F95074CB03F0457FD6281D09B20D4DFA693CB36D66122D0CF46E01B7EDDD5
-8798D0B6D5540A8B36E26ECF3F011DD2F6CDFB60BCD8BE9CE6878F2BD6FF0BC6
-98FD2EFEBD93AD48996A8F4923D947140E37DF55082BF340C822F88CD8F3E659
-4AAF2558C9188FE279FB0598B2416612F6A5B486277871F3BCC9052E560FAC2B
-FAEF36D11147F4949545BA844ECCE8765621039C8BD5354F9F46BEB2820CB0AC
-AB12DBA87EAA80BB934C9B68F2BC5E780B4D43D7B5FC37E647E21D7C72876D03
-777F285A9AB88E524E261CF1E92C2619003A2F6D4F6D38138CA537EE1FAA521C
-46E6A8F2E70E907EB364A2E0041DAC26505D70E26B3924B89037690BB8382E54
-A9D3A95A9658AC4DF9C2417F6084A5DE2CC106996AF8870AE9423874CA8FC676
-59F733E4788F18A63F11B25D43C4A831BFE5DE59325383B4B96730D9ED61DC0E
-2B223BDAC365334AB22DA73308EBE02E6C315D88CF32176F27C55DA8EE2DE43F
-69AA3721AC94BB8D4FCB2EC151411F3608B1118146329D9B041DC3B4F0FF1FB2
-D4975D260B663AFCA695BF9031BD36EDAA097B8E27F41218D99FD4D23160F939
-B71155761F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR7
-%!PS-AdobeFont-1.1: CMR7 1.0
-%%CreationDate: 1991 Aug 20 16:39:21
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-readonly def
-/FontBBox{-27 -250 1122 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
-E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
-47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
-8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
-78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
-1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
-01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
-C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
-F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
-8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
-A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
-455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
-9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
-EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
-52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
-563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
-0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
-7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
-0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
-1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4B067A46F8EE
-2AFACDE591ADF7304939394F221B5B9B316BC47DC7772711A35B466E1790D4F5
-C02C57DE57A0498128C6041CB7E702F4D8500433633B8358C438237BBA39C647
-F659FACF75574B1AAD3FE61FB97D6C5D0B19E4AC762321891092E73D192C4816
-2F14A6FFAA1B22AABB65E8F611F1E9AF66DF68DA1B2B64B4CA8870261F8663FA
-28953254FA64F0AD6EFBFAB15830AF856A65835C803B70963595060F91F4079B
-F8BF5396F04C070254AC5DCACB20C0B1FADD38825886322366927C97E3C5AA1B
-EA858D5974EBC14D17D4ADDCB3C7EA74A8A2B75293747CFCE0B484713D631F95
-43BD5A359229F1276D2F652078ADA5000D1E060CE5CDF2E57401E487F3C10975
-09AACD27CEE8581EBADC25D0FC9CEA533B99DCEDC0F28E782F4FE22AE097CCF3
-F73338DA748C535291B4E8AF84546FE4B910107B6FFC5439C5B966DE6C905D86
-460A69D6031EC3F7261FCB6D932F722BC1F550574EBD6F676AC9770969657422
-4C8212F9FC9A49C9F0E813A2ACD16D1131A73D3001E698C63F76FE6D6143D310
-155256BE90530489736CF35CA2D7E4A1FAEAE2423ABB52E55DD7314097DF7C09
-F39C3E3A29F9BAA3AEBA89CC3E7B134E79A2DA39D449D98FE4ADE1A0ACDA79C4
-1E2C78CDCC5BDD192DAA27F17DC4368EBC54CC009802018E50519F69025DE7E8
-FB61694AEA672E59D00F6BA0CA9509FB8DC6544CB92B70BA0AE393A43959C90E
-8857B0DA53A8D26426CAE0DCF2F3033BAC62502E08447B09CC18B2525AB65EC2
-C63074FF725168D115137ECDAB1EEB083711F647F757C9806056811466D59087
-B93D6B71594046B3B60A7D5789D6B99FC14764428A251F0A54ED
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 124 /bar put
-dup 126 /asciitilde put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA411E43A07E33F7B09F2857AD105C
-08EB767A9F9C2C040F3E577B74DD991C4113C44027A60B8183F23B527D74BC89
-CAFD464A929C40B5EE63D0B69B5DD928C52D0F9839232AD4E51591D15C32E331
-78CD45AE926E05C5FF0375F97B4329729976E213EAC877D8B00F85E3D589C589
-24507F435755EF67755684CDD0C0AE8771E554CD0EDEE97B77131D02CA1DF7C1
-C7F448DCB5DC4BF378B0317D21F512226770B611A3EAB0AC35738266CD03C04B
-8113AC9706A39870A7371832E9955BBBB13FD47584CDD636744376E20A2A72FA
-A1B554624DE8DDFE51ABFE1BBAD17BD357DB08B177AD0B33D864AC4CC04D7F7B
-50BF3A26CA770502D639D64FE5A198EE3D217BAD1CEAF6195AEF54362334DEC0
-6E27B0AA124D5BD99A2FF168FA3685EFA9BF5809EC76F44FA3BC2C969F7ECE87
-C71A3EFC3256C2DAD0BC78570578B95A44797C965E963285122149283A77E3C8
-D4C553D1443D094DFCE9E9C9509F2F6CA8A58C5D63471A47901FC8E1562B9C11
-4670E53FF45F4DFAA6E3A27B4F955BD43784C5BB356A6FAB3CD049B9FE5275F8
-F930F83FC21579E61E7F20F05364B72371E1112287FA5C28917C5F98A48AD51A
-87708812DD609A92FDB764D710DAB450724C84A28513973509C9E4CD3CD50A64
-F0CD0DB6A9FA459A178E7BF67D46A21B8EEFEB19FEBEB453D490EFE90094C294
-98A246B27618A049FAA90DD355DCB1AA6B602EB1BE472125791CA0E04AABCAAB
-1BAFE92760A10CD9D0B501E55D3B2AAA76CFC374313C4BB5C765C9CEF1E7E5E8
-081D45C223E1DA398F77615C3A44CB0391C505A070B9061C875929874E32EB44
-0D9692148DF4A77CFBE77F7D5D70B239DD2A5E681097ED9742663A914EADB605
-8B1C0033F1B30C06605AD37A826DE7848D3B59779BB998C3E57DD2AE80B7BDB2
-B2367579E253A2674548F1B717A0CD84E5CA6ABE166CE2F1243A4D22AF519E6C
-1C087AC5F81236BEDF794064D7F1B7A04EAFF6C628F7EEA7943B9F497E172E28
-49F8D3B3E41EFE2B0BFE65E72643F14A1853605D516E3BF7FC59C13B1134B9FA
-7D9CEBC9608A66886D03F4F5C35E7241D9EF4086250CB5C00F7D94C0B6C7B639
-A9C198FCC41D6EFD89ED68CD447EEF62F196A4FD7A7C124557C370A5CCF9E926
-592FAD165DC03F37FEA13EDE22B64694BFC42B733D8E0BD9EA4976DEF3099048
-CD0FF471F72F1BA8D67FFAB61B4FDC8834CC475713A3D144873808B51AD266CF
-BA55B8205BB40FD8A3FF28738A9990197D17B753A57B8FC24899500128A205F9
-5C8E0B63891C638B3F3E3BEC0FACBE02FD08EE9A9489CBB002E8BC0A1DE01FD0
-10A77C7FB9ECD009B61389841ED59543C10ACA8EC123F4B96F8B6E22BBE3ACAD
-8EDC13394A1C10D8C6971C37E9ADB3B5CAE2A78D9E299FF17871EFD0BD483F02
-AC96C84F5499DED22B14F13A57BBE20510BE25F17F51F299429CFAB7514FB5A4
-F4173691B1CC7775F9FDAD392B0D84AC6DBDFAB9BDEFF67C56DCC3B02D954661
-A07D765C4A4EE98F58B13D28F3DAD22A896BEB1779B0274433EB5E2E906F9522
-96E74A9D5867CDB4B4858A80DD69532A44B0BB512330D003B188FD6B6F724263
-F011390DF160D0FA044A6F0828DDBCE0E2A7E956D7E09C6546601532F053D5F2
-62069615E3F6683D2B4F0A803E1E66D499DF3819CA3B83C469A0468D5CFD228A
-70065B2B272421C0CE5BAB7671D69B4A92AAA802AA863E632EB44D2CED233A33
-3A09DAB712788E450B67D7139AD9BC3FDF80624D9B8DAEA438C0E6B5AA07684A
-D11C1452F17F5E042C8A48BC13095FC3C078E9986693D1D9929C337B8161ADC9
-258CA267C9FBB136B09C6B84879D47EBBD5D6DBAC674E659FA3AA359CE69DEF6
-3D6D038E785D1C8A284162CD416880DD5F573D563316E5DB788037B683A26CD8
-C60B75E1A1138EDCD9AA998252110177F2A1CFBF4FCC0EF7AAEF02ADDFA74628
-AF11E50A8A851174B6DE8AFD381EB48B28003EC913183B0B7EB0016C84994266
-26448FAE7FF37B6EE7604113A4FEFCF421E6A4E0F98B7180A64E9946CFF2B4CD
-A92B51C8803FFEB3B3C000DAD409715021BE9414CEBF0987F3B4456E7C27EBE2
-A3D8D250142DDB02A4FF49D9D8A67FFABC57361D619BF8B80BBECAAB9B576FBA
-A580FEB7FC6F9FD556341025EF51EBAF765A626FE93B988F0C33CB1B37873C7B
-63E9E855D07396B8BD361F4BE0E627459FDEC7B91472D22B574F546E41674D63
-62DF6225371C9DAD0A9129DCEDC89A81489708F14B6DFD79AC00A0DB7AA7D93F
-EC5BFBDC17D06D599488ACF137AC92C55FF3DE619E6CCA4FF633919E59EE1FE3
-3D153E6B8B8C1CBB3135E0025C4BB8A3CDEA44B5FF7071319DFB0112982793D9
-860A2FC92638B7C30A944685687F8DC719B0048B375F801678D9C936CD3C083E
-F5579977D7CC4267486DE97656FCAC59CD82B4DE3032445A30C8B6C8160C6016
-080AA9D647BC6649714A2282DCDD5FAFEF61EC3E7D96D8652FADEDE39BF2EBED
-41DED35B9C2E3C76B4317BFE5262DFB14BB625BBFCB103EF0F67B4559E0222DF
-CDC260F22208EF73515592B6D397E5C286C831676DEEFA29A8131072553F238E
-5E17A0E3A080AF0968362F54F5EC1990E5A3312CD4E8FE5470192642273040B7
-9B94E435DD6A0DFC69947DE35ECCE13E14E64D879E84801DBD65F0C123A3F0B5
-CFBFB6ABEFF14F860B9595ABC25FAAF7AA20588172E46F52E77D4010036AB4F7
-9F0294FEF7E66766DA9270C27FA2B159E823758A57614489C5C5D711D4F3B019
-1DF3D1C065E7592E8D342C82C740C384648CEE7DE0699516BDD298A486119E2C
-A567F5F81F76A8160996D5BD57A65557A682B77BA241B24348124C0B7BECB5A7
-60D6EA2A861C99F5F617B250C0FC760B1D81037A786166A75BF2408CFA77DE01
-152BEB50921B3624517F8023CB111527CE517C6104593F8F1C0DE3C4E6AB4E47
-E7419AF7553C784A6DCA3A4DE233245AF0F9CC749F9A7D81E19784E9677D6946
-E2D1F2A7C407C9420225A87D9E94AC52A275D8A19AF807FBBA36FE78E9C11E66
-D46602FE2D7F0E63D1E21D099B590F5EDFEEA0935C9C8056E02D57F510E71302
-F3E0F93DEAF28B3EBCF46D097F5F065B28B506392E17008C9FD21DC8654EB024
-1E5376C2427DEDD6C7369878B9DCCD04F35D594F3CE144DAD63FFB6E2AD71260
-EAB7F19290B2B8883B0E97D8A8B3D0D6E9B99503D8853223CABA8FA1AE289B8F
-C0164CDC832069D7AAA6DBA23B9520ACB4EFD0145F317DED15D9B317646A9619
-F4EF45F2389448C1A7F75BCE53865D813C97D949C9D94F225C998A1403CE718C
-A3C63CE6187801D3203CF4EA7F43440E2D620DFD3C1F7452CD9EC856188C5CBA
-FEC2D90A2DE296D850142DBE6D50D5D43C7AA4F6207B4E5A32CD0A197DF729C1
-0388636EBA410A9982F9C16B966498BE61FA25DB0A44A4C24095A4D0E92305FB
-84AC47D49C99209AAE281EA88E80D234EE1CB834771F32DBC1C1898F86802F7D
-D86B6ED5588E8029809DBDF8A9E5139CD8ABDC9BE14F073755D40E21E1BBCC68
-9DDADEEA9F2E95480DA9F0BE40F82BC18849C84216612D8E42185061429A1908
-A8BBF1CEA0B66070C4EBDA360AD5BCDD4E636396A2F92A6012BDEA37A7765F8B
-7654509788847E0ADE8EC67F87A40037F196BED1520691B9DF0D35EBF99D45FF
-B3669D2817ED8781145C79979FACCBF5DA3210C478ED890C6E404C2C9D48BE5F
-8AAB63094C7ACFC5ED7A4A56983A23C3A617BE52C0EBC20F3715D00ADA200ECB
-13A5C9762670E3A04A605BC830F9A8DB0D21BC4ECDA28ABBA03824B98F4A61B7
-319FB56C9936E2AB79C954EB1A36AC8798FA450DEB871FAC1170CCCD80BA8B42
-26544AFBE99259576D9C440E31E2C0C2918D0508047CB79DECAF20709581E13F
-1F8735E583DE60FD03E70929A75E49B3EB2D297868049BC55AFF959FE5631D9C
-746A54CD8E2E91C6D3CEC4B4AE418CDBA3C6B9B252B55E869B7AC630C50DD342
-3898204FA82E7CCA3CC91294B159C579BFAF9864B200700196587CB0A21E9218
-7AA09DF7D2C1DB463066E3D4A6EE0F0F8AADD0E4AABD2C0F8362F860A4768B05
-5AA46FF0E6C08A52BB078C7187A7321F2D0B7563D3927B6740EEEB6D20A8FB7A
-B7745CE3F751B8B6ED6DC24DB08B9E18BD6A24E93EDF9721650629AB5F3C3090
-E9C6163B15B1AE4417DD61822FC7E5C2BB3C868B3839FBCD5B1B5804D31B62F8
-14027E431828B072F7F7F3EA8D8F90D433632EE703CA43476851E3C5356FE9C5
-EC3AD392BDC12805F2FCEB66103044C32BDDAF03E8E8D18313FA6444B2E0D92B
-BA0F041CC408A2F88CF9F0CCBE3240F222B1D73499B9D732D83B976B67AB347C
-DC17A20435447D262A4AA72967A0F866D19A292684BA6DC7AF5636D266E32FCE
-2C1A62224AEA1A79E543D2F793B0B8FBA7AAD3D5A914D51A59D73FB6F1F54C3D
-54713CF59C5EFDF4C9190CAE614B217A23D8F0D69E89D102E0BCACB875EA0D02
-05EEE1DB5E95BA6D1FAE5E727140A5001190A23E5536E0B6C948E7AE1419FBB9
-7792704BEE0345A4EB038C142624A63A9FD40A27F96158214C1BB4DF2EC1A370
-D325D3EF16661BA76C6B7FCB0493EE58B89DA4C84A9C79795619781E886C6B70
-BDBBF392C846311BC58B783B30B187CBABEC60888E00BD429B39E4B7B99F874B
-E39FB98794332FDF8E12C6751B299B9E03DAD3E60707668E1543E8F0CDA3DD2C
-40C93BE077E42686390164AC9D41CBE2A1245062B053EBB608A4587AE7412B84
-CB86D3D43112CD1A3BC50C2CE958CAFAE983062AF001CD341C206AE3B612503C
-074BCBB8729D96BF2C65CDD30542DE6AAB9C1AED638F8E877EFA7F48A484AE13
-99F671320AE9532449B64EBDA99576C4A1D64632482A9571DF06EAF113A61251
-28FCF6C93D4528BDFF10B695C10BBFBDA0E09513F710FE32810FFCF6042AF596
-373CE984EF21ED2D7DE36CE1352FE2F3359ACDF1886ABF265D0209D249EA26E0
-D04F64EE2B7173FFA1956F8490CB1E83070EC24F6F215217572DD5E9DFB93DE6
-F03F73A2F5EC6822C1CD331F7AB96AA694FBE4087BE6254FC2F618D2341F0839
-C851187967A878CD2D7C15E4F9F7159782C4A7F92CD27789F0C276F59F894FA4
-8E9C3C5BF1FBB95F28C97771182B330C3F112C54C3D2C7F24A5161C7C885C7AA
-C3F8B756829468F1C1F6C06587BAEBE58BB5B2BA899AC37510696261FDE7BFDB
-39F260E2EE831CA953C22B6D752C65320BEB215A4DB801322CE2B9164C6A28B6
-3B68B6D762815503328E984864E8C376C38D3FECB286973E11A1E070E5563157
-8323E44F60015A79971D4F51E11ECAEC8DEE3888D918214B07C5DD5EC9F2AE7B
-E7C03B20BF005C2CD6EE2D901A8C1AB4D5B42E516D27B8AA49AAD3239194C371
-1FC129A71A1B9193A5D2E165AE86903005B44F2082080F365131AC55F3AE789F
-793E1917065600ED9578C815263F3D89662ED06305A4266887A8C98B2BED94AA
-76BC9D443976C37A0CDA5DC71070437159A9E5DF7A45D3428A1C2107796C81AB
-DAF6E41DB09290DCA48E502CB464DE52455367BB868A704782DBD6F8332F59D4
-9BD1662F8A63BBD1A4E8DE63A080D96ACE48C97321DCFCD8F5E642FF191CAD8F
-68D0D6658A8A5DBB8F35CC31D90CB44549676B335A0BF54C055966C552DE7DB6
-2A1E32EE7BAAE71C62D9D0104BC5B46C420EF3F2AF7A9300612C104BF3F104B4
-DE686971C770FA9550024118997F4AF8CA9A36DA51507B0DBC253C4D1D94E551
-460C37C1E0BDA5DFFA6A2C04A740283F42A812A2517D029A55A5D027A24B291F
-EA4EC929F393F7A90FCD58F7DA0871FF849AA84BCC61A2AE6C17018F0B313617
-F13507F6215C8E7CA6F9C36944D47F9D26B0E382510B71310CAF6AA091084487
-6A7DECDEE38A6C920B2DD188BE66E8FB4474DA8872409424EE3E86F7D5FEE017
-ECBFE3B30984EE7D2A21B063E619E9DEE5395C73C0C11EF645450E351DD634A4
-B0EB5F1A212BF6C74F5C70D0170990114446A05C70E15FEA203C3508034B1E08
-F841CA1AE7D2074F3B4E99413B4F2ECE3F96530988799B0C0F8FF3FC344197BE
-6D6D6F38ECF4B5D4C8626D3903EBFB7FA2881402F0505794133917C062940B4B
-971650BF3A052C2852079B30334F1F88F569A27A0FF21B69E9E265D1A6388D74
-F41C23AFB0267D90222005BE6C70035DB0348B18DEB3A024989A67D4D262A52E
-501C237DC7031B98F275ABFCE3CFF9AD80D3A22E096023E42B928C78A9CC1E28
-786362ECFBFFA1B3FC256F74C209EA02AC65B790FC277E89A9A16457F4F12453
-3C5BD1B1BC991FD9605088AED21DC1E7E723330884D24F534A696CE29799DB5A
-D148A390C355C59A96F3BF7911EB8A2A4D438DCC2EFD97B4333F1AA6092C7E38
-1ECE0929CABF258CE4EACFA5B0D1966FB89E77A3C2A4436EA6C933DDA09D9673
-54F6E7077A15A86113B4571B753EA50C7E30D9D8E837BE60C90AD137EF960221
-FB21672C1BCCEF23440B3F3BE182C39348CDF2E9ED9B23284B10DD6D55E041A4
-35B81420197BC18E35172191815A18D4D34EB23A3E945F651E5990BBC8D72D96
-FA7772381F25231EF6955F17351BDDE45A9D4CA3765C794B48F0E59E0AE081C6
-451B7DBA0703251BAA90ABE78CEA8DF423F317D88EF061DECB1C2ECDBBB99937
-506F76F7632B6BA2A8AEEEDF84D63444AFC5EFA57ADD2F951E630C6FD0C88618
-E9E40D333E6A6A0693A5B43ECAA9EFEC1AAA9454F4D7CC2D78AA85F236A64C16
-D2D6882B11D7C1487EDE396E774FD952F1E9E9E6DEAA4F2EE134874C763B8ACB
-050C2E8945602DD6C3DE22DF4883D9F29A156D7EF96AC75AD63C7DAE5D9E7C70
-4619A62938EC7DD03FEE15346198CC595E0AF5EE40EBECD97AB6A9545CF72711
-423A844D66BA7914C70D17E8283250D85DFE200EBEF4070B48BB059AB15C871D
-A94C54B8B8FB76A5A97A4DA65F5516CD5B8E1B35E69073D0DAEA406BBE1B505B
-AD6717AF7914DADB0E5164D4C874A7EEEB6D084BA86ECB1DE861F2EDC278CC8C
-BFEA8238332547201232297F4CA6C8F8CF06EA26578F0A405FA32AE5E5A622F7
-F1965D81681AC6E9C9CE77B98A620DB88AA0FAE34E1C6FF931D7CCF0F29C4541
-54A54BF4CFBFD3A578A0233722DB68094B8A65A7364DA724CEEF28D4879A5E1B
-279A0820B76F6B08CABA6B1DBE38F4D7ECB7420423479296909F023193ACE05F
-C9CEC2409A4A56D66926E79A32B9CC2AE03592785E41C31707EFBA77B98AB8C9
-7FAA2DC6C319EA203D1A0B06DAC0F43CC60763FFF13641C8B24F7AEF55E80422
-F5C1A4A378A8A05128577A8BB214FA84BCC780105D9ED556E78996B82DC470B8
-78C69B438F03F9BAA1BBE61FCAEBB4459139BFCDF7C80F4DC5410560FA7B60A8
-5B906AB6F98C80A903607EF07CB242374261483C9D4C4F7511D5F336B0362640
-FECDAA67159A22EDD94C67728F8F7DB2436528EB1CF984100A173AEC0284F38B
-74E00244512746A4DA0E2CCBE98AA9A8B27D28696075FE3959CE6CF1EC67AA45
-9F700FEC972C09BD02232BF7EF27D216138F8EF3C761B597A2FA7A08A9CFA39A
-D045177988929F9A6C984CA160CB7ADD11B6E13951607FFA017DD3AF55134743
-83CF1CE955314CB035863D0FD6C8DA3881167486AE15951D0E07CD69E0C5FCCB
-C55772ECE83EDB2F24A2540DCD181BC8474B53208B39C76CA1D205BE5AAAB47F
-8084BF7B565DD6C338FDB81ED346E0572FC45EDA2684268E6950CB749AE36F88
-9A69E1BC2E0EA73A9886E4CDE44236E96AE55DD48A1CF3AC57D023A09DD878E5
-A9B76492C226DD82E384E8E86F35947DEEB4E4A3ECDC0735AEA8D9466D1CE8C5
-96FF354F321EDFAB5E4B68C55F9624D6ECA16A66855CB9CCF4A23A3CE8C4B1FB
-6CADE3ED0539241FDF23B16B8A2E439A9CE01D7E7BB8AA406A05137DD1F4C0E6
-AEA8E68B69F6A3BF726AACE5FF5BB40BE8A3FE0E9C98F0073FD50A4CC38087F6
-91947A89B2FAD33D783E7146E93C94A16FD50624610CEBC2306E046DADC35EAC
-0115D733A3D702810E527C5D903FE6484F20173FF561C04E3995258A8BE2A5E3
-F609FE5FF236C88702AC35B5507EF0B94D0E997531150BE4ACDF31BC86D29A4E
-EF4EBDAFEC9AFB57CB079C00B6250051ED9D040538E5FDD5939F3282C5167E21
-A7F5B53028EC6CDB634E825C2E5983A7E32192676F86061A3ECE654C78B40CD8
-C7DDE58E33C9766FD2458EA023485BB07A8219AA4DDA9BF3188EDE35DA9B8E5D
-F71440CA5F8C3213CE1F2F762C00616B586D31161648C360FE3D752181990E1D
-AA745858702CFA4FE5D6510DBFA5E8F9E0765A45E87150F9276172454C5CE262
-470BBD1F9D1366AC35CDA1A7267F6FE684D4FD86B6B07D088F32BF47DBABCAB4
-B5C01B0914FBB221D3CFF148FB742F5FD4D1469EF3D477A78F54497C09A0DB00
-FD81988867D0B02BC2B503E71774C8B114B385C7AC9E0C200555F78B6184BA8B
-1D2D7F2CA058D83862FC5DEA56DD40359DEBEDFE1D82975A639312874B391A21
-85DE652AAE18A355DC023929326D569502E386D7196CEFBEF996BB20D31EED2F
-020817A2E55177612E8E20F504AA8A116AA3280BD76D2FC1D1B3CDFE7A63AC7B
-890F7ADDCC05BC6D28BB3D86EA63FB4AE285B7F6429D6FC7FF3F85ED1AE216A5
-A840ADB17924B70EB010A1B537795F45EE331A4A4F3D4F30113108694B3FD220
-E9CE77DF8F0A4839343965B61F0866E973491ED2D76BCFECF15AE8EE62D50665
-D57878EC94F6E269ECEAC001EDFC673A1731398196C0B55B92D970BE790ACD0B
-DDD898119772AFFB078777D79B163139D55789E882E982AD8E66569439208377
-F0AF3210CA4788417FBB59AB740F0D4904A6FDDCE16599E8BAFF95F8782C78B2
-7E8189DC3C3D40B5BDAF7D2E1332C825110269CFB1DF3DCA16618C794BCD1515
-D5463DC3EE2E3221E9E7C136DB9F234B436FFD4A09D5A06321927C927181CC95
-2CE7DABD8A8576C39B269C637EC3D6070049ABB0986A00C6BD3F14BDB4C81221
-0CEB236FA2D7C63C95C72C18C653AC3472D948E15403CB36B7162FE074143C88
-2CFD28E6D03B91841FAA4AF0C2C8C47FEF5ABE471AE04C39EECBBBAC487B1438
-6B7B030C8409247080742661452B326A61DFC81F1254777D4731AF831B79D349
-12429F9C6C2D5266F9FE7D1431A9402851E4BE6DADBEFF7D272BE5EEBE03BCD4
-2244BC6E7447E08E5FA2AEC3E0A435A0EBEBA5C4CB3C9A0F5A7D1FD47C2D01B8
-A04B683FA58A5EFC5C1EA7CCB9C05944C7E8E04AFE4C94199BAB4DB89A821571
-99844C61515BD39D990500A6DAFF5ED3F1D882FCB9E8789EA8FF9064725A98C6
-E327164C5DB8077C3383A0BD7DF41A241A181C43B5C176B2FB83BA378552B58F
-FEB9B8127E36F4D5531E3802914CB3D59C098DCC3F5651F3B47CB632E1F08A1C
-56D0F493DE0AE73EDED032E02A688D872569BAE68AE1830D2E43D819DBAF73C0
-213BD6B5773D404721B7F35D3F65E23187CF538423372DB5A5B0CD60B1B896F4
-8117BC736D436FBD9952D22518B04C5B9D7E51508CE19EE3DFE4687C62AEC9C0
-C0980EE943E8685F143E8C557BFECACD41A5EECAE793380E9D342143C9DF4B5A
-FE556B5730538F58D1587FD20AC8940E9EC1CC82978E620F84D26EF0AB386CBE
-02C7B91B6CDE2A5500C66C859FE35F1375701535E6FCEBEB20D959D039A0E96F
-DB79D75CB1835826E25678B7640412BD885F422FA2F5252E60F4D707173862B8
-0C4A0C28E8A6275CD5566C4361262663AF6A4F85256B54B0883940BCEABAF944
-CCEFB5E1380AE78C72DB04B6CD2A2137C3DE70338266CF670ACA499900564AA5
-7FEBC6BEEF25E9F4D5C12300E043722EBEF1179E163C387FDFE16172FE2D176E
-AACB6990D34EC078EB8B9BCEA4D5FF3FB20EBCA6D0A929196688604898DF58B5
-C44822ACF78BF35BA9E9318A4EF969AE66E2605B5B0DF692D3BECF751CBE98EA
-B727DB224847EDFCB8638217AB2210B6409B11D6962A7330935BCA373121E6EF
-7B2666272FEDB769092D1AB7E036D84F9BFB64D7669B6DDB2BA77BCB68C494D9
-34C242A708BD62D0A657C19356C27AE1E1522FE94169C4ABB15D784934191131
-4E02E6A2A75147C64327878040DB2FC995B5BD6127551C0C81F02C4D0995B6DE
-FF7353B9B034CFD2F4EE12B566FE230428CD8DB0331A84B6CEE4843A0980E33C
-DC3E643C06C545E56D2F30E67301954F2F5300C3CF46B21F7B7300D7408DFD52
-B98AE1620E80B10099B154D086A3EE9DF475680FF6D95E41BA3ECFA6E8DBC8DD
-55364E9D6E12E9A172CCBD4AA69F09E0571DDE18317020E072546A60D510EDCC
-6E002D3D097641C4BAC3C2B144CA33BEC8A46C232C394AF3C1438C817F5C57C0
-8450C805C37EAF0ADBF0A03E8BEE9303F5ECB100D2879C045341678FA1FB5D9B
-02C68CD3CDE71422C1C5263DD3E54E056BC7122EB0EBC277016FA3DBA743A8ED
-698B08FDF2AD9FF8395A33050FE1A81A46D076503AE065B0C5A674B363D814D9
-31459FEBDC640315155434D945E94BDA16053D429FE22B5EBB4DB9D97CA5E7CA
-75A3AD29D1471F0207205E32CECC459C2A3105899C9AB44C152C731AA0E8161D
-3C45731FCA8A96F300E233F70D71A08A7264677931D6044D970ED03F8AE1F23B
-50CED9E95C44855E8217C3630E5E58495F4E9FE8909A4F9C90BBB2CD31E54B69
-4823CD8C97B6CEC90B7EC15D4D5D5ACCD5546DFFCF538D04C3C8DB14E00626E9
-A835E506375FA795DA839F075B54BBD2CA94F13FFDD37F4FAEF8BE101BA6EB31
-8124E9341B27412C89933E5458084939C85B224CABD1902B38B8C548D7BD0081
-7FBF4042205C816236D83BCDFB2B4BCF4839A824C86AC3EA06FF1657B1B53F73
-DD38425FCB4843F614CD8FA950EEA47D0AB0FA032CE0A2DB5CC4350C73C361C6
-7549D5A62DC991D805185E52C0CDFF0F4A8A27ED7FD8940AC93749771BE18131
-EE96AC8777C63B7A5A3028716B81AF1755877E9C229E5D7E395752D85429A3CC
-550909DBA185FA04CDA0265BE047C4637AE47E051D880ECE7E38828842D6D05B
-A01AF70B3AD0A0735881B98C828CE9D45C346AE91A21F9593F66A3BDD7641F64
-343D8E005249FD3C5B80988F8C5C02FE02FDA5422640A078E6AD03A3D5CD7F53
-7D0C7F87349B0D7C4D688EFB052CA427959ADCA311044C10162EB3758DCA0CEF
-7098891EA9725B3AE42A39A5ABB886535A2B1DD0FF86B248C05D789F3C1DAF48
-B86296895E67B8D58327D6B3DB82FDA493DF085F1695535A1E3DE78C8003D92C
-8D1E642635B1043F4B0513245ECFF3A0B2F7772283E1722870A526000D2B350C
-ABA20A1928C4376410DB81F2E99B8711C5EA5CEFBDF37E7CB8FC123C1DF0C8DE
-38E2E805CE185BD8AFE31700043F6EF954EAC7AF7D95D1593FFDDC18D012FB83
-716BEA95D309DE82A041512392005ACFF14C19D13F860CFEDA39D47C02ACED58
-757AD14B7F8DC666A6FFBFFF96617D4EA6B3199BCA20A38FF914C68CEA41E716
-7F5B330EB9502912E192B804269E94F7146E3D90D3410E9DD43407482D4D62F9
-E9306B040CDB59E20B9E4599F397B62BD7625CACC75C8B763C727732AAE4AC3F
-03331F31A1CBEB5420B1BCB70C5A9F9E124E43D8CACA5F5421E0FE0FCC0CD6EC
-714E694AE5BD9D54432E567FB2F309CEB00DAC803AACAAEEC11E990FE58967F5
-A192A01DF7559CD3470287468768AC60104BABB26BC081B8610866B3794C0E1B
-1941FBE210A59D548C73A5D60D3427D999CDA1BBC05109C24CCB640934C4DDE5
-762AC4B75A5B290129211C702DA1E5D5CF364E98E6CBDA177F6E0D6FD040F0D7
-EEEA408C1519FC6FCA653A20F53AC49CF73C85EF3BB4411B5E9A1D3F40FEBCC1
-A4FEC836E8E2694FA07FE07F686D35779AFFF927C15BCBA436B828F3162C9AB3
-7EC1072FD97B5485338C48EAA934EABFF16ED3EF299F9EBA6347AEA4465207EC
-E64CB2AE62270EB4AF5D530902B70A2C955AF02C1818FD19640AB7715EA696D2
-0DE1330B8248112C3D9F6B63BAEFB9BE393ED909E2BF1496C010EAAFA3121342
-F79634350DA1C74F20A53790E4DD6040A8FCFB495D2FF0A542C6DADC34D3331E
-1450691A44EF78AC2313F0B275CD785F8F77513AE16C454F3F54EF0121E14955
-198837365CB81BA356DF21171B5F74FE6C88AF772CBAB1D1BC0E906DD7661028
-AA736A42C5A076699278035299AADE0BAF4A24B11D751D8FD7828A25E1DF4FAB
-408C56D1883697A809BC485A43A7D235E4F665B546CE7EB7192BCCFDDAAFF1B5
-B1CA8DC1A62242242530C3396851D7C617DCA40EC0954A2DDC3A7E630A4A0B4B
-D02A0D525B5945F595A753DC890F52505F6A55983125953D3C43BA16C59EE7E5
-84EF075581BB50D7F9F986E3D6D0D45D06A3C82A34547C26FCAC6CCDBAE3DECB
-C8713D318B6F54E44AE57C048DBC92B9679A23C76505C456676CE99822B838A4
-AE58239AEB7CD1B6BEDEA7A0483E1CD18139D42AEA29CCF5EE80AB3799621C03
-AD6BD9434618EF655DAAA10D26134BC0F1A6C434769421D8CD4DE5972A5117B8
-A256D0EABB5B570E8777A840F2601242345508F630A51F4CC3B3FDA9C2F87D2F
-E14CEF5230A595822EB7A3BDC9F4BCA5E40A8317DC9C899A9699DFCF001F02A9
-E8302FC426A59043F79071E8DD8DFFC5654FCF87B737353BB44694E474E4E72B
-D6DC4CF005F325D7D2F933964DDF26E7694075530EA2AF8E7ECA20216DACF1C2
-E5D3D4F8A48EC27435484031AB59E2EE387CD6CE46B8D1BAD37CF6ECE6C4050C
-E1E811E8874631A6572E873C6ADAB4A105832EADD0B90A09306F3A0C6D575084
-CEB6466A5FC57A9FFBDEB9A4F45E0BCD94F34F5220AD1121308F21826B030EBF
-2C2E495F3A0177F664DC1F8C6508EDD271F7B66641B8EA8664DE727C45ACB514
-2A7DA7A804EAEB8AFD108EDCAB39BF48EDAC555DE1CF9729DC2145344ED6DAF7
-DEA91F6F8A3855448AA5D0ACEA2DBF664F7B00C445B46B777DD6594631148F82
-B1D6338F5AF3DF34B607080930E12A3AFE301532A49A02847BAE99AA40394404
-E32F23860904957FA654A69FA95A39286B41186F8B2937DA7CECADCC2C74F025
-F2A436F23157E3BD12A7BB91AC443495EB65F77F6D1D3A74D13330F9BFD341A0
-41A712C7C3B7D8E06ED0BEDFC9B7253971D498743C0A056C2297F029134C5298
-DFEA70C15F237BE15BA538AF16908B7C1C9615719AAFF37F776D6E5BD5483556
-901C72F33B2ED2ECEA155672B23370C9E06BC4FC6171807AD21FD22409B4E49C
-0165FC6C7B5CC119B45D3EF0DBF04ABE79E53D4F32B4F27E2B36ABCBFF315DD8
-6B68E04AB691920B7A84DF6E27B0A120FBA1921B4BDAA1855892BC0D2A2A0609
-B29D05EFBF99D7E2C28DB6482C807D8D6A6571E59231EAE51ABA62C26A383329
-5DD7D92DACE0CFF78F8E6E75AE8EE9E49BED1288A24BA0ECC1549BDBB9FDF320
-EAF1366CBDF50E9102EA1FB23EC463E9B663CCDD587141C5860CD824715B8DCC
-E263B7D93D600110A9FBA1B3F15E8576FF9794C1D1B338A65101012036BA4D12
-D8A4312304BCF98ABADF19D1529DD939E68BA3D0095A23E8D0BB0E6F62FF214A
-517480DFF4E1E06C7D983C4B04E32B8F3ACE9FF0CFBA997B6CEF3E010AE61172
-C80FE788F6D7496A1BD4DDF0C6D049E78170F8C9B11DD37021C1E7F1D168504F
-1247F94BA5AE4D0B4190B45B54A023C4DCEA75E62D3AB0F42574F2A62E08F8AA
-38A337F612D59769B5186CC06F471A6A3334D8340F4993FA599605E5839ED720
-8DFCE26D959CD6A2A891945B4E38DD649C8AC85BCFD19584D7B5BCD8A0035BEE
-B98E6B91336AE05E057AEB2B821A4517F3B2FB4C0BCE466CB549F9626B95CD96
-1F2AC305F8C14CD4F6591AFD200D3FC61B85385D4C8666182285FF6BE411F024
-1F261A1A0A4BB05967A122B5C752F9AE2BF47336BE317B0300F7D195140605FD
-C7065ED3D7F5DB29C23B827C17B9507F3C78C88CDCC9C760B630645F3D86D2E0
-96BC935F7ADA90E3289AEEB023436CF92089EFFE4DCFA8220BEB3D647ED45216
-372129C91700A8EA1DE46CEF84A1592A3E669CCA18F6FD89E7E0319D8F6CC2CB
-3448695F445AB0D18A6864E117D94DEFC5C2C260BF643DD712DB914EA16E390D
-DFBE02C3B59DE4F3E220209B9FB3369181554C5DC88D4C69033B6815F586C854
-BF6413D7F0FF714CB574F76D0A409DA6C59E4C58C237908F06320CAF129AF21C
-E9973F0524DC319E71AA897E793D0603A03DC232D98783651AB0C3836E05FCC5
-4579177A28E192DFEE6C6A42E62A362D5CAAE29F86A48B2938E847B555C0B40E
-1CAB7ED0960FD74E124F9638F8E9F10A9BE30C60480033CEAFC8D59CB4145F2E
-CF7F9638007302FD387378C2ACAF75FD1F449BAE2C81FBA2F0898FE0C7C77311
-9207B169651133FC736A81A26AF7A8C798745A2E1EE8DD9A47D029A3D2628C72
-08F9BC00170DF30B92F1CB166C7066CFADE780FD9B18AFED5BF3075EA9F7FEA8
-BE650B548EE804EDEF2AA3CCA9BBEB82BC667D62E71B0E86CA19D67185D13A6B
-A04B186229CC4616DB9737D23AC863F2C539B616F822C7B08A422EA3D8332971
-B18BAB95BDC81A4FBC20DBACE7FF2C67B85E9760E2FEE52AE79D6E2D296AB413
-46272E6A14DB855EE6395503EE93A701F93999E5B687A5A06D554A7EA148560E
-75E22E2ABD9813CFB7704FF3A284F77A22AB45E4951B3FADA6E9624050FAD82D
-A3D8CA362ADF14B8540DE877A43E1F396E4F1E91B04C05912B615D6F078CCBD8
-F4AC7BCB49F5A1F9528274DC8E3F5C55441F4DE55365BF91F52B02C5DB2047A7
-E9717B89767368CF6DCCCB43C2E6C5F67F66BB4D7EEDDE8C45AADFA8F99BF6EB
-E0285D1820EBBC0C0B3405E8FC193517833E32B24E52B5D42DBD359BD1B8F2C2
-613DAF745C91712C160D7C2164D8411FB65C2E1D8C42AD0F6F091D30CBB3DC3F
-382C78B9ABDE94079BB7F3822DDD74FBE7265F54CFA6BD178A61CC5E037A1463
-757D01A4556E6C1EEAD960E54E5132ED38AC3D2EF464E8D8634B5119111F8A6E
-72B6C392BF64CCBCCE41974E1D26A6331ECDB6D9F853CF028C8B8EFBC0CA58D0
-8E4B15B0702A215976AADF2AC6680A58FF21EBCA326282422FF47B9ADD2A6E9A
-D463180320F6B45206016735FA4D9D959E270845319CC2679B161317E4C5FA0D
-B095BFE30938B6B69B57A98AC551B4BD5F9143650F71B7D965EFC1B364B3C9D2
-A252FD71E94E3969F09BC5CD0C48D5F99032141081A935A81D3B8B29E3C76A92
-518260F4928A21BBAD822930502251160624B6077672231080F005EE0F425E81
-28EB7B0351B9CCA88A2CF9CBA3A37AE0307DE35146B51E13BD3792C6261E3977
-399119943D7F3E277953135305A437609BECB8FC129DDBCC1D30F12745E017F8
-D541E3B718C8B64EEA64D6BD9F224B2FA26F502219425F5B77FDE4B1DF3E1D9C
-1421CDAA006836E30DA12509D2CCBD9A4467F2399AE28C476303FD21DCEDEB2E
-A65FD84DB0C3A7AFF407505C6E9BBEEBB59F8DDF21D7BB60A9E3311FF2CDC9DE
-D5BBBF2F69E37A453AAFCA9D726F0129523AE7F1FD9815F587BED78C214BA39B
-E26A06DC7C7A842E0D575057692E6D518211262836B22CA3868482F0C41DE378
-E51C699280610FBA7EB7BC73680E82B9AAF74D8AE4960922C499D179DCEB127F
-8D8E6C6E0CCA6D52C32991F5C99FCC087E449E3DAF5208813B5CCAFB41632470
-9526A36A806161F192A61A307B9CABB1F570999EAF1E351EE5D5CA3433002501
-A23CD87AB84D430BA7C93B2846F3D15CCE8C70C92251E7B0B6786CCDE65573D5
-FCE93C24AE5C70AFE021C36275F203CD64424F4AE089E59493BFFDD6A722F577
-B8675B45108C71ED9B5F2750F716EC790FFBABE0A2A147D2484A38D10406F97F
-0DCDD56078DC967DD38578B882B670905DEB5CB3A4221D48E1E62EC08237AFBE
-8D35DB38E4733B28C8AE02A9D5605D221F1A6FCD8B5749E89F3A94B1958156DC
-D8F442921991CE767B792D05E7DE2112CC36CBB334F89600699490F525E28A65
-23493100E7108B949C582805DE7E6908F8A3560AE831BBEDA0D5EC467BAC24DE
-7DF8D3661180DB1F8FCD0B725F2BC7557D659734E14591168B09F5241C30F7EA
-F6D5AF6C9E4CB0CFF75C6D1DEA6354B4D4C4B13CA8AA74A069A904B9656AD09F
-BD93B73FAEB7EDDB5AECA792CDE711C466E9B4B73C2C3A4575BCC32C5B4C3259
-C162CBAAA70BDB931E052DC281E9E08E9275F4DEE6DF1416D46D73A357786DA4
-55CC29DDF1A473948F98FC7524CBB1C94F6CB3EF9AAD9789EC1F7978C71AC24A
-F076CB6E03E70CE2026119FCEC993CFAEA086AA920C00EDFF23A4375E8F37941
-E08EACF699492AAF09A621C93B1353082883D556FFC210D851860C43E08A5FD1
-4A597BBDCCF8EAF298BBA34AD69A8194AF13B3D591C52A0361CFC76B51958660
-F297E6EDA2D5DC2A07FE0D3CB478644D65769C042FE63577BF1AC11F425A27D9
-7BAF18CF88B3022C944DBD0CA9BCEF7B1B2AB49E9CBDA3DCAADC83B02BF12D32
-0173FE78AF7009D3976DF68DD7255ADE5F84A426904A34FF6BB216D58B6FCE3A
-E7FC04384B70F7D33BB71E38F1B01DF16DC35ED834B83E14EDF1ED51DEEF33FE
-78EAE706806B2AB84F7C7AA20780136A164F558EAE0706D5F9F2F68B203BB96B
-1A36366251201EB694C0BE2D80ADFABF6E3B25A1A930FC3863982E0E6A54B405
-BE7CE3EF6BA25C9D925BBDBB153D9472BBAA340A2EE14FFE926AADE91F752581
-4ABC04C4BC506EF0B025BD27625D53DCC0D47654E1B74EC24D2E8F6322CBAD35
-0E0ABC7BCF79A6DF39F006EAD55AC826F0C49676A8215FC08E8B542AC5348E99
-08061252BE975BDC97694418591F41473FFD97826BEA061678E37E6CD1F100EA
-5729FC41ACAE6C7D4265D09B78263CD79A5AEA3B9BC746C9172889CAC7B401A1
-C5556EC1B332FF9F6FE3F5D4B819EB048F639B0813FA9559931853A9D25165AD
-4389D60D3BA99E6F3C7E6A77514CB3749D99682C7E40AC215CD4D16B82B58490
-15FDC3060967A15F83D8E1CA8E7E63E145762BC31417E490940B78AC943A81A0
-A7BEB63AFEC5C9C6B90C567F10C9C80AB3EAE5FB6C8EB7DA3EAC6CD31F6E07EF
-1DB35E919A2EAF376938D79A6F01CC8A0929749E8ED1CFE31730127110A792DD
-6FC5B8223DB9A9F7BB407881C7E613FEC1AF8CE524E54F08C4C95B6175C0C520
-C42FD183B9E1C27A3EBBCC1299137F89A5045DECAAB3C8B8EE61566AEF4BEEDD
-95F639385E4C77005CE84C9528F9A21A088DA3EC90ADC8DE6C8EA7DD5E936914
-222E1F3CB5108E889CB4FC0DC1CF82BDF94BBFD1303C09B0A095C7E0999D2EDB
-BAC04410836593F36369B537FDA6C9704ED50FDC1C5451D817DFCB374DA8EEB7
-A75AFE38DB1D0C2A0F9DAD120C398C087BC39502255B62A1812EE9CE0171838C
-5784E8B86C3B1D7F8C4614BFC0417691871806F35E3AC0BCE1C7E0BCD88EF462
-E7ACFEFDFA49176DAB278DFE545D63CA1DE4A21786DDA97E850ABC01A7491795
-3B16D3C6F1F671E296EFD9BCDFDE8F3193D82A5F3DE70C5D558E1AA4DA9378F6
-06E2C95AB3B43D9265047E73158CC88BC842672BE869770D249E1A12F7DC50D6
-75231D0F7ACA1E9F7023E3ADEADB0D2AA7937918BEEAA4A683DEBDCEA325FFA1
-4CE16DE4AEC435C23D5F75538EA6D034C3541D84A8CB47DD16DD9263BBFC6987
-475DF0278511D0BA604D0C105F245C6E6006961A46FDCCBF16E54E436E5E0BE6
-6E2CDA406056C42294F515C0E64569B58C09906CF92B5A2F2D095F0222A1DFB4
-E0360A1637D2C11A2D221E3D0B851C79BF9609946AFEF1EFD3977964FDFDAB17
-FA5C29620A73844653B97EBF5DB330367A3C52531DF1F5209845D989ABCA1EFF
-F9DEDD09803CA4ACDFE23AD7B0E7DE9F85354E551596E85C566D48D0915D2596
-3E96FFE25CE5CAFADD4795D8C77E385DB762DFFB557E1FE37E3948AF83884CF0
-A4
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 45 /hyphen put
-dup 47 /slash put
-dup 49 /one put
-dup 50 /two put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 86 /V put
-dup 88 /X put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636
-6E02817082BE6FE0B04249A4840C11F95F8ADEFF72173E9A5F2AB2F62C427E5B
-DC010E18641EAC906A5EF0F9BC2108062134A7F10956219C5847C0D82F0E8663
-12D963E012DF0DD899911EC5D8096F80B49CA3444CF1294FBFAB57DFACC9D01C
-46F3BA2F3D1C14EC30CBF83E5729F1C074D4F1665405CF54722827FBC24AEF08
-F6DD0BC6A79A2DB1FF539454E8F5D1A42D40CCFBC093AFD3E57973A009095CEA
-B91FAFD236C47F453B38DB0067907A28EB5E9ADE87A2181F1D6DE4E183631716
-C21F0F952E0666AC74371F8B5C888DC44FBA5607435A619684F502CF625663C7
-94B0DAA79BE8E129E7F5C5AD1B7495C1BC9B1C759867467F55148C7FF2F914D8
-95218C4C3C2D2DB3482C21EA050F23D6A7A056B172EB210276CDB3B1DCA47A9E
-8B03B9BADC72F42D28ACE31D0633A0A1B22254F37EBF0433F0EF1CFEBC1CC653
-E3EE6D197AAF36E7F871AE76A67986E81B67FDA59F9B0CF210C7ED7D696AC130
-748A803C64D211C6FC54BFA3A7FD94B0B54968E027E480CD0643275FC723BF56
-75B0EBA2E2731351BF689F46408D57BCCBD9566501256B58E653AA0B7567E024
-80AEC3AA619960C0D3D21113BB0352C897F8444E1767B102D88050521577DC38
-6FFEB2753BD3C35317738826822127DC3D50FC0D3DB048CC30A10DFF384A1369
-FF255E6AED7A0A9E18497BD332F0DCFF1E8D10D99B444FDF254B167F8EEB3ECA
-7E5AEF54E0D8E6F24B61D6D3D1D1249A79BBF8A64D1C43A6E625B79C6F1257E5
-8FF8BD32250A40D8C8B7A6122BD9E4567D2E06FF83BBEA5EA739AFF37556536D
-462FE2CCE6F3942D3ABE3AF440A167E357D4D4FD8B6BF13D00887F406819BF86
-F505A0ABEC3BE6CEE22FFA2054E8621FA203AE5158D6A9B72B255C6380228A3A
-4F0107C4B49DEE47A76663975BC1A346117DE5CEE30B33FB9A47B3A8CC8D2247
-1D75002040937D1952210E91FE84584200B02AA188EAD9E53228DED6A4827909
-76EBD83A3FFC6CCA78A9C8301DB15D2963462E7C2C850494934EFE4764B74850
-3FC039FEB875DA3F51EC633967352C75105A1222751EDFBB3E8B7295828C819C
-0F4409C670C9F8265515D0B02890AA1381B176ADCC0AD8BAC6773C8AD0A81072
-52359935196A0C176F31B879161A8557C439DE7A7C2EB5CDCA8FB70B3C6A4D96
-BB857EB50E62666F6491A8B33F22D827628152DEAF185C5868CDE54E70A9669A
-5F35B15645039165F8B5D38042D86D3A14F1FC54F0834216EAD6E26994ED1512
-5B1F2DC4AA6D98A4A27B251AD94799B369A9D5851CF3203E8B463B504521FAB3
-A35463DCC628BED7B28B217E936D4A902F12D25125D8A1FB9FED7BF5D93282ED
-90F51DBE642934488B673558EC5619407EEF7003976190C83EDA1C88470334D0
-F7866E00F9AA46EC23118690F4919FE8F66ACC0449643C295F609D755A50B1D9
-4A7E0E74A1BC5E54F5003108851B68D0471F8E16AEA89CE63D1DAC97105CC182
-567505956D0AB9DF91781489D2DD967FC900AF59E8C32D7EA79EBEE5E7F277C8
-E770181BA651493CC8E2FABC2470118E549E1670B8A5489F1102E1057BA9DCC9
-127DFF48BBA8CCA89F13433A68F7A7949E065058DB0BAD1E69B1F65CEB0C7721
-89547769A252E6C5676AE6721F4F851B25059ECDDB9CFC8BE72FC369D50DCEEE
-5BAB96BB7EB970CAF63F212DE07137FA4C733214FD4A20B09B1ACEF8FA5A8E0D
-A5B557B17BEC9D7DDBF6EE72196C9EC09F189118D46D5BD9F84435A8472E4114
-30C45E6361E1B68948B701565FE336563E8258B3F02879B82B01CC9006D50F65
-ED2C6891D10F8E6535E9E4FD9E681C5816AC231540F1214B14837AD1FCA18054
-BED0125C805753D9C058FC0F45BABBD7D169BAD43BD63FDA0E2A5605D07E522A
-DADFFFA92AFCEAD131DBCCADD9BAC27A11AAFE8DEBA049FD158D390CB62E5D2E
-397D988627D04D52CD8487D8FE3541F10B16E2515B330A9D1CC6BFF784077B48
-CF3E9713DC6880FF4E351B2A900479EA72D67D02A44D8F11D9AEDE578B9A0662
-F1388D0B7BFA90875258E730DC135116FB83FDCCE11BE9BF6329158B3BFF888F
-CF054A570A6859C2E5AC74A15CE1F8216D7510EDCD48497EBEECFAC300416D3C
-497DCBC23ABFEA088784042FF6DC6C30729C67FCB099BC635C89EF34115ACF2D
-A19A1361C610F3F204C1281EDD9FA169484E32ED91EF6B997A18553881D2BB0B
-008FBF43C560598A649AA261644AD10427E5E26CBCF00D6538A138CF8081E56D
-9C5A2DA70EC01F312D78A7E427F64360B4AF8F6447682139F82F92047AF537C3
-F44C8F700E7579253F381F86C842BA4A7B662D886ECAD6A0F218F48CCE2D3971
-536500745A8B2FADA62C6A161F2B9048761894A2060FE89A016970B9A94AC371
-53A531322668AEC94EDA0CFA9B1493D27713907D239FFEFCDC32790358B25465
-AFB0538D8AAE97FAD59F8E3CD360E4E9BB425FD598A9BC08048B21E3750C7D0F
-ADCCDD5787328A3EF700C18894717B2F7F5522B439A2D010B3C90BC844F7B302
-A756C5E23097C41133121E81C965D2BB031351A15B3ABB7D3064344EE61A1DB9
-D0ABF29B61290CF0A6DA5EF07A6FE9C5304B397604E26D37162CE4E68A5B09A4
-57EA2DD9315E0EEB0F12FDEEC6C15894966A0F82EC67C3121D0448F0F76B4426
-6D33F5A1441A902B12F79266908F71714AF5B9D084F4DFE87AF83F9A3D441351
-8419C5CC8CF086F6D1B7A7605CF78BCA9ADF19F5201E7B47D6DF8FBF34803EEA
-808CF8C14430B983684742EF4B0B61D6ACFBEE2813CDE3CFDEAC4E8BF9E7CF6A
-CE1B7933C5602E10A121933323E883F65312ED25E35867610869F941C328BCC0
-0A292C29CA74081EC545867FC4D72D53A08DEE3266AE7D44AA02417335A3351A
-B7E9EB5E8F56FED5F56C09D0590D8DFF8AF40A740814BCD8D52DCD33DA948BCA
-C6AB5FF12178896212A0575494CB170164A228A828CCBA6309B07520994CE8AB
-E9D7BD372135364731B6E629B7505659768236E71290BB8FA662A55B5F060AD3
-40ABB0465F52FFC21F7745AFE33FD9C1D2F348C0E06D30BFA9A15B537366D46E
-A5AA9C8D5228939B15B8D0D5DD4EB3437B51CB8B66BA669E0A437FF1670227CF
-A80869EBE85EA7E5548F2A84487DB0CE37A7513C8C5115834D63CC173A93845F
-01FB0E81E5AD3013E3A555D1B8A007F63CF721E1D03B98E4B6AFB09DE19BC080
-B10ACEE6276100FF06D44BFE9D94BE2DF0745049B7319FC922B0C729AE7D8728
-C933CD707A9C3F22D4FABBFE8A9D49A4CA2521BB0B46D0D610B8736DAD66D775
-7E731ACD4FB0552C04ADB2D2F3044FE8D779605BAFDF4BBC46C2352A9D25FB86
-00CA93F10AF819235CCFBF0A7BC5CC3E652774C090DB6AE9D05EDB0576023AEC
-C1C0B4CE3405EEEE38C2DDC11431CF0812B33FC8D6B0C152A9A99AAAD6E93F77
-D9F0380945B53DA5D671DD89AFE0108D2D83D7282BC810C7CD9218E19BC09DDC
-53BA1C4915273DD4DE16DCF9E6BEB0A70793B9B22B13006BA0D5A2001962DB3B
-B237BC6832F4394FA970CAE12903A9D0DFD5705C3925044B19EEDEED24808A78
-50DE64FA5B86AE0AEBE9F89AE6754A58DFEC0DA7D9F1561F3801C35196D2F0D2
-1E44B981172690445D9B7FD25C682BF541EDEB4F66C591140E9D64336CB2AD68
-9920A8B27C7D8204C810435BB899EE1D1B4C22C1DD3C66C0233B381B2875F71C
-987378C1B95106E46D39AC7E386F3DC12C5C644DE2CB2FF6C6AA29FDFB852AD5
-9D8CD739E655C3B03E85FBC76CBDC0D395FFAA5F1DEB5F06A3FEE3778CDC6253
-A31ABB6820591A3C0FC93CC99ED767AE73191A3609CC420E30B516B7C060E546
-308E6D1BE6049C3E4FF7C088CD957E5A6152F11328F4962D6670544069513E44
-50A0649226606AC9AE4F144C3502EE67AC7654EAACA12C226709E151B4BD9E79
-DF695DA06550B79A02D704C3D0A3921699C8EEEFAEA2F56E7D7D12D8C23E6EE7
-F4DA3010844F52C7E1D3BDEFDA7FA29026F99CCCD3442C6E7C1AEC8CCE49B39E
-140875186A3F731222CF34B0FFDD1F5ACF07AC8B2B950C8CF60B98C8CC805D5C
-5651077E0DD2497F919C158D8C16E0A4C7778475EE400CEDC340BB973090D553
-1CB4A778F436377ACE1B8A9FD3B4B4DA1A55F63BC849A199E429778ED4F03360
-E26D9A1E3E19AA6141ED9407753C4775FA23F712DBF66B2ADF76D150EDD495E3
-55931397DBA3132A1548C9842516EE60B691556AD97152978CECC323D9929F0F
-57677AEB1095C654BCC61BD1BDE977EF1948CCCE38E91C3AE6A9DA1FA7D40D1D
-82252EF589880B90C00E1CA3C597DF0D33D9FE7F8F1B995A5F3A3E6D97548937
-DB7B90B9B95B8C288CB4B10D19A618DCB32AD8DB16262D756B8AB5A4F9118C9C
-0B5456C359EBE17C0AD5888D003D4B3887EFD384F528CAA24E6445DB0692913E
-768A589A04281C3D74A5E1D8D29B543AB0F9DCC5DA0AB8F3CF654121B7557ED5
-7C89C78FD44F1652A5D01E81F4C5C2465D36E6EAB9E8FD441E81F3757EF8C534
-A2310B7F118FAC2F2485E1BCDB6979E1EA2DDBCB0433ADB4415E10A5CB9777A8
-48D0CE5FF5AAE335A1810BE551091D9808F074D577CF96E129AF3854401CB97C
-6A14598F5EAEF50810E70BF88988FD1F1C9734D39A075B5996BC79DF1FFF1864
-B3AA587691CEF8C46864C723707CFD1A3F3664EB4F364233ABC21754A156BD9B
-0508070554CB202CDC7A7856FAF71531557568B49DC69A9C91CE985E4C236C8E
-20FFC2625D257FB30E723CC2D3D7024B018EAEA7DC61A6F5AF0A5CFEC2920AE6
-B61960B28AFAF4C8650A37B832C579D2601AD3C0F88B9428BE29D04E70862F89
-7A32AB493B2D43FA1C71D4A1B01DD7A1E057714087D03F2CB45B3B6FBD511C38
-E447431FA86C77360E76A10AB910F1D70AD320244CC6CE1C08C17CFB716CC75D
-664816CDDFFE8CABD112D4B4F57EC24165EB73D27D84474277EE4DDFF1C1B8C1
-76D89E239A217970FB228E1C0EA768232CCF406D3C4FD2BA87EE5AC563A8CDDD
-E4BDB0F255283E2704AE21BCA952441C5D478E9A99952569C5D7C72F3FAB770F
-520A4A9FD34823F895667DE631BA6EE2E31D8D407BA3B5D9FBA77A9C9823034A
-110376B9F938828BD1C2BFFBF5D2C343194EC7229C17AF3A40F5C9B80FFBB8ED
-5EFD7DDD7EBD24309A19360BBE2EC267EB436A963EFB5DD1FA3D5E1A760F7F5B
-F77D85C46A9256B79C4A20DC1CEB710541C03AFAFDD25BBC42F2CC101B22FA44
-7A27AB2451FA5C4F6F81A8B293F84F7EACB88C9B3F3FFD8122D76C552927C51C
-A61D7F440D0E65ED8929E83F0BE5D5971D599922DE2F614DCCD3D081EB6A0BE0
-CEAEC598E6931CCA9E81BF364FB4D7AE89D91198F49C0FA1F3F21FB4045F9C81
-8D42A9F37126D7C8D49CD3BA9289F1EC9126779751C030921D7BE04D9C9A34EE
-DCD581F352501167C5E20E096C3E05CF76D13C63407E4C458AA18458C96A7366
-8AA5A1C59378CDDFFC07DD7F8DFDC0A9CA01C44345728F84DA7FDA0D3B9B6FBD
-AF33F5A0435DDAB4BBFB0306C6BD669CAD2BF7EDC57DBFBA18817429D6EB1DDF
-AC30904D0574FC5E241D03851AAA8AB62E4C57B128B7FB544D79A0E7A9CAEDEB
-5B0B77E7B779285971BD8F40BA7EFB89B5D671ADDE26E4E12F3D8701B136E4FE
-9D30F2DDD17838252BFBDB72223DF8C2370968A77223AF47E031ACC1F277D660
-A87E5FB474985633B9C89292851E5250754E4F599877767FEEAFE00BD0D5B3E8
-C08D1A834901A17BD1F34536BCF7C2101109D91548C83BF4D481886B8E74C36B
-4D3FF5E2EC3D3001A738F4199E941A9D43D1A0E2B17A26EBA862941C387E943B
-C395729779E674CCE545DA0AC9B55949799FB84176625190E27FDB62389AC580
-C7B6116F1B943EA8355AA673A030E60DDC19982B2B0F50514269BE3DFD7152BA
-2D03274926F77D30426D5413248A19A09E5514B7BB7059367F810B5326F2B9DE
-9C10E48BB99B63ABE59CA4ED624E5FE8D99E0A95377C85DD87CBC86D87557E3C
-4C7DF02A58B97D0EFC549693EDAEE73FF48CE60F955E3EE7AA2B5A7187CC9A79
-572AA7059A5ACF7B59D1415C3460D19AEC2F06BB65979C48D5925EBD5C808433
-94F8FAAD644E75F063F92AF84B85361E6042B000F3D9C9F201D473956B424911
-3E57AA0A162FA207720808BDEB0A6C5E92634A281157DDEED586E424E7F23FB6
-48C0C7AFA6CA9225018B7791EDB5EA4BCA9B40284557B9E06E0E6F6EBE1B87FD
-1DD442CC587E0F8EF370608A8FB34F706C1834B4E30B007188B55F67C39BCB02
-464D0C40C11EE41F06464A8A2F833371C81CD22EBABFB02F9BB72697C015F802
-2BBEBEA079D1946A166C2AA15F6A93CF099305223C50FA30695BCE01AC7D7902
-7B8270D73FD09EBA26901D56FDD42C2B4F9AF82D42A5E097DFE24B6C247F5A30
-3654A15422C44730720DB447DFAE6EE331C2620281EEE48295885F5C8DE2F080
-B569F415BA4FBBE099317494D723AA59F7AA4CD1F7952D6E88404630A5F2D31E
-798C4B31406B0CD0AEF35CA8FBAC5822E9C4DF7067892EC5AB8F56CB34FC06B5
-04D8E6E5E7D5723FAFDDD589879FD4822CFAAF3837F967578F0FE37B41EF6EC9
-D26B803E480BD052C18141E783FCA2EB700A837DC74BB1199CADFB9DED46F6F4
-5139540ADB243F4A9494AFE342C58106B76B47DF736007BFB06C8770443448DF
-472C4613ACA4FE34D3061D8A662A16ABF38FD726A307E8879A3965477242599E
-33587CAA5444E6CA15C0F01FC1CED728E0F510927DC76ABA972A9ABD2E136AF7
-15ED7237A85FCD04086B26165438A81C4BCBC2E8E634C14ACE183DA7277040BE
-A31CB4C3FF543400EB9A0EC4BC35A5570911C4EC8B9A38D6289452E375C324DB
-11560F51CAF5A8A4195E089920561E92973BCBFE3BA292947795FC69F99434AE
-7133EBFD0613EDEBD37778CECA1C54CBB4D2F4FBDBEFEC33CDB6C39942EF2A9A
-1B2762B3364C1CEDE1DE08F4B5D82D13B4176E109B8CF547D14541D2DC4F9928
-887ACC00990603B6CF0D1A2B8ABE5695C1EC615F3475D26316C27F2F0E581319
-9364CA8C849858ED624FBA87FE0C28177E9C6CF67773BAB8D7AE6EE38DA8CFEB
-2F44BC92939395719A7971FEFE234EA147F87BCED52920FC8A4E5E73BB71D695
-737438B586319D79E73FD5D319692C0A3FF3914FD2C2BDEEF9859A1669ADDDDA
-932956E6AED69B84574075BA2501BE4C3BF0C1B8BE1A925A0AB04281B2441378
-375931C02A436894C249614483F15D01CCF810550C189A9A8A33AC6AD265F81E
-39C917B36ED255526116BCC92A91BC006D41DCC1D8A375509B95E094C23B950C
-BEE6ADC9D2D6C5BEF4D0A2371A3C757722A0E604AFF93C04BDD5AD56B74FE019
-26063D0B11216EBBF92A252A9DE3F98C5C8637EC5A0C7B74D6B5C290B53FF6B1
-26E27CFCBD64F6AAE53831FEF296EB582F3F8AE0F30D14B21A7119003D50A4B5
-5D8254BCD27F3C28241E365C3F5FF692C5EEA3708E378FD86548D8BCF944908C
-BACCF574383DBFD0EF5BF49B94DDF9D07D29D8EA52F51A6F5CB30CF8E12F9516
-98E9848EA62CE3D47AB04BFF09FD75A8A461BA891662CE03BC452A6CDF5CCC2C
-77409E49D21D2E4B0646AF015FE29262442820BA7B5E7FB1E8A8D9453B647401
-0EE32CEE6F9FF9F5F2176B80603D9991B6AEAD8FE6C1D2B5C21A9223C0EDC265
-0F8F83408F6D4CB207E4BF234DCE6205CC35AE11F5FC709FF0D9B72DCCD184F9
-32B2AE2059CFBD8BA8B88890DF73DD8583EF7E61A5F521AF9D722706C3C1263B
-4F134CF9D26B7DFF3878D5467DEE392DB99913B24A538B31F50337D2969FD876
-3E1BC75B97C0283BA32DFC68CBFA6BF05E37865305C7BD81D88D68647C409A12
-CC9D6B62703913FF21EC8759E2175C5F854296CC173CD86D321DB2BF6AC73130
-024702972E209E5F21E43827A0000ED1E004C0FE2C6F85631108AC6EC40853E0
-18549AC3DFD8435C91B225111364A104BD448217BCD4123D91E44AA0D8ADA40C
-C4853EA478F37D11C7F93BD3293238E70892F2C21F1BD38E2A7064F00C48EFFE
-465B6D405820BFEA0AB5B638E8F1713659B2CCAF83B6A855CC510A25CE72F52C
-095581F033152FDFBD06E0F5EEF797D5F9033A407EBBB4E2A348C82ACEB21815
-95B232B620945921ABCC420B93F8AD4F8272D535091BCF269FC81A5474CB7232
-5DE82027CDE68BD0D8416998CB136D299A0821C42B692CB598C44B4B7E922A32
-1710D49026E8591D74D3F5C2BB90417A926762A1F03951FB7B24A1056B6C063D
-66E3C31E24042AE286DB78CFA3CBCABB3DB505B86E76E4592B1ED9083E57816A
-0E3F9ABB06C327904B01B5553A26C9A34E5B0361695727C32129906780AC59AD
-C6C8395F6BA8C8C7213545D585D9AB35A8788A68B4DB244E3BE88A387D536B7B
-4209B975B21623949B012A161D4F70B338065101656045BA681F5AD9EB608532
-0969E644D2501B6C59259EDD26C94764FC88121B09661BE3FA16AC1A680AACED
-16606E002DB4542B78DF0037084A28A3DA650AD960AC36579A3095F6AC608F47
-187754ABC3D255C4FD18A3A3B8A4C98434E82B176F236F58694685B48DBB66DF
-68EE5E2580FFB2EAD20D2302A27D740E4C5DC7E64E32A0A2F435573A473D0F7D
-30E4DA259DA4BC7CE3A4845E1339525AFDB1F90A4FADEF02B42FD736DD88AA30
-FC4A695C600AFA98515713FF5221EF3C1DE90FB89ED5E14ADDF202A3F8F8E697
-8D4942E11B8296ED2483D546FEA9E125FE16CAA4908D2C19DF1E6849C4A12474
-D3B68A6D99746B4497D8A5B6DE176E22290F0328A6CE055B4A200E66F4ED4C7B
-DBA81B9AEAAA61D07185F697E526FF92F6FC5E20B8F9EA8EB9C6F2686172CF9F
-8FD0D381F0E5CA1E8332FAE61DB487B12ECB42204D01444A4945C969498CAEA4
-C8279D212AB44C3C9B57055A5196C9B4991686C34E301A2BEC8E3D274DBE5926
-9E7A71784B305201354FABA813946C772B80FCB65C2D7FE32EBC57364CF4C151
-5CEF00E914F22C0EE6D9D5AD88BBEA04DCF55F6A1479561309DE782039069656
-F1ECE3F53B570394EFA2D75B7D85C4E675275E251EB7AE6D8EFF56BCDBE9606D
-F04637C7F123113C8F66A91703D936C95A5B509180FDAC5AF468224AEECE393E
-BE9B9239743436345A7E6EC4AC5E5E6877052A195918B3B86CCCF5FAACDC1A88
-5F3FDF5E2A73C557971F10EA11AD66AAF770403F738F61B7F2F3506A38CC4524
-CB019ECDFC5594C70E893C049B5B5FFF6343FE0F50625D08A68C7D71B3EB6F9D
-0CB6078AC1DC70F713D9E9B6763FF09C19B075FDDE93E8E5861A6B9962CC549B
-5FE5C5755110CCF41AE276D3570092D1D755D0E6F07C0A1CC52A7076269AF06E
-A251901421CB7FAC8FC7B9E40F6989F422B16962478DF29B3D37E20E34A03810
-E846F5404EC92521E8CE4928CC0EA4CCE88E48E8211EBB8F976D7879E250429A
-85CDE8EBF25AB2D8589407E8A2ACEFB2359F02A50A471300BDEA7D6B87908FFB
-15FF716552B1EE220470ECA2953E9637E679724B9FC8D6F7D5877CBA8173AEA6
-2D40252422EDE5CF58A137CFB1083844A253487DE8EE5C83FE61C78AA5019508
-5FEC27EB68A60B7AAD6054732EE12C75D947CA24253169E4DD88F275382240C9
-67863FC42C24DFD06A5254ADF80E61F48ECE49034FA887B229A7EE77FA17E93D
-7749D2221382A8F6C8044C4E7D85280A281583F9678EFBDEE2FF27D4E9BC8602
-115BE694977F3100FBF1EFB7255CE1841ED89415BDAB6819D2455F7C9D3593CF
-3AC18C74AECD26779730EEE23ACCB5DC9CCE1DBE3E9687B60534383FFCB0910A
-32D56BD315F78B95946D5264E18AACE1E2B00F26D792EDA2A5ABBF4A693CC166
-6829B28DEB2BA9880D540784304C51E5FEB2CC90DA41048160126B15AAE2985C
-1A81ADD4BC6A3415A093B2F5BEC20D40630A8AC2C4A1659D152BCBAE805CBCC0
-2D7988903F7534FAD33C11CD7803BF7547BC8794A8F434C72EC7A1CB20CF74A9
-B3EACAE96269C1FF92A06CED9142B5EAB7A303A910505E49DD98F3C12F42B28F
-E11AE4B6556DCF6D38F500CA21A712992654F066DB74FB75DDAF0D1A0C4B33BF
-6E11B2594765CA9A1B073FC1B7F1E76B8CFAD27F0247CBCAD5A6AF6A2200A120
-B707A39DDD467A561E89460459CA6C36BF66D15CED9A9EC9B48E1E1B982142FC
-6B47A130801184D97FD4F795FB3ECD25FBAB48FB2F5400F84658F9DBE0518977
-E77B925E1277CD8599F65B07C570D1B4D4945B9EACA0F1C6295AF7150C736336
-5B3C11A76C9446C8D712389323FBA5F27F1947894066F11681799115A43EA223
-8B96C6C250247943ABC44DC229FF0FF178F7A7A225BF563545AC3424783351C4
-E7637DC3769B42CE607553142AC0EC19248082473A3AB78792CC4AAE92FD6086
-C4EC0F993D2A6E78F744FEF23FE32AE02CCEFA60F691FC9ADB4287583E30B719
-C441C2DCD9C9ADC1B34717713E8B6553E25A0EE8DCA74BFA324CF1A0D4FDA066
-A11036CEFD12CBB8EACEE2E9A1C0401852AD172ADB5F17ECD2AE7E7A08017670
-1F8425F0D474992A9B463BD9961C6EE4D23ED351991D831C503AF101252677FB
-0A462AF9F642E73C9D25194263D7965DDA88E6AB27EEEFA274EB4EAA9B76A0CF
-4649CBD51CC1EDD93B832BB5909DAC55116BE1C491A2E3BC32FE65FCACA03D95
-81DB97FA18D6B7A47754CA2B4C810F72D631650EE4EC5DA654A45D161C2026B8
-EE93697B7D57A1A1C2522284B247D6D2710F6FDADA54BBC9205E213728F08512
-2BEB0CC69AAEA29B19CC9B0A7A0C2B87864F6361A18922A65BFE3F06EE7E8B8C
-6BC567ED26BB6C9DBDD9FCD0D4240C2FFCA475A636B25C41AF360EF66D87377A
-7F1FD4F52816F4C8A957A20F568BB24F62D730A5D6F8E7C3E86D44D643DEB0D2
-0C99BC31A2462F34EC6B3CCE0CC71ECAE01C50D029524C51581FFB6AAD620492
-1D9054200BFD7C89944E44C38A8A31E4E84BEB42FC00D4E6478800A0B83E4809
-053205F4770D2AB17F52C6FA0BF79F7BFFAE4957779F242C403C09ABBF03AC8B
-43D54451381426039498AD469EC5CBAF9CFFA9D1E7534565DEC499FEC9A8BFD6
-122D2B34AA9E6128107056CDA164845B9226DE2ABBA994EFD46734E708F72D5E
-CB4EE21945FE977A1271C6DD944C6954B9450B55E88F6F067A3719D2F993D565
-7FCC1DAE06ECEBB17FD00576457CD93367F426B5449ED46773C90D55716C457D
-D225D6E27146BD02F26A393DC341B8BDD57220C5E5641F937E686F698727CBE2
-2A1BD497E056956A3BA0AAC64C05DD25F438E681A026DA0DE50E65D7CA586676
-B8B40DC642FA4E712AFC16DAA8CCEFBCDD4BE6B3395BEB979DEFBEC1C7BCC606
-F57B6AC84A16F74645BF848C7615F69FA0B36B1C895CC57D1066936AD6E4519D
-935EB849C34038E888B3968CB96A8A528B5BC0BE83C90F18BFB3E0EDF825CC5A
-4BE969964B07B88EA3280163D2D11D1167972089DD388897AF3DB4DD89FD9263
-3E6F3CBFBDE028D4885B0AA94927735AD767B89055E677FEBBFF6E3D2D94C75A
-64D44206AC33EDC9419A1D2C64A54B15CC38EBD16BDD7319C73196C019C38FB8
-D355FD2F6C6774BB158AC13BF06FD8CC08DCAC580A3668AE9FF495635FE1A20C
-18D6A378F91CC979B9F24E75EC9BFA97009A9F6924330F5052D0549F7E8C5570
-8309E3F99F64499B87E626AAF6AA8D7D6E652D07F75A800B70E8ECC5BEFD3831
-3A83D88E66CBA4F0E9D915EC14D29617D17CD6C539CC10DD298BF0C5DA0368B1
-06162FB284B1CBA405DE168A7CAD737D37FA4FA2876577A03438F7D903F4A781
-E51E4ABA2D3238A13C4481835230
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 33 /exclam put
-dup 34 /quotedblright put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 54 /six put
-dup 55 /seven put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 88 /X put
-dup 92 /quotedblleft put
-dup 94 /circumflex put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
-044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
-A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
-23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
-19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
-1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
-8BF32EFC8C0D1CC0C1622ABA0B6CE939036B2D9CAFA2A3B0C4B5DD9AE5B2D798
-CC856CB41F82D3B5FCBBF70D07E05369713730081901FEDE318F9DA81D39F84C
-45D0996AC0E8FD780FD2E5E6BD013D98463E0A51034735243F2B3695371E8451
-6A6EC4236E47A282AD2966E06BF3FB59C6222C15A34F1E910E637D805741BC1D
-CD426BF31361147DA45BDA2884880D90AEE92DF02AE5C4772537FEEA157A6D50
-3BBB910A80A2EF41D18213631584B343ECFBD6BA006AD6BCAC63E9CD9430DF59
-98091BE32FE17FCA7B32DCA95052F5BACF73FEAFCE5EA47B740FDC972C2FAB94
-E1FE42F8536DE4DD0DBFC4CCF3A96DC1140F736344D4DC796756948ABEE0433B
-BFFD9F1A343259444D248598844888F046800D6BFC7BFE3F63900767727A8742
-10C756EC6380274290F84F7B2055C2390BF04B466B5D4437C0D6AC55C90792CE
-8A8BB5602BC96118B07FDB8692006E91585273AEFF55D71967011A1658205ECB
-A0B0C1CE1F7C5167A5868D5DA81EE5CC3A41983425663776391EA37525FF1357
-2CBD0C9B4644850880C5115C7F0677A605C1009D018A9D6BF4F94A6DD019CA26
-FA7D748D55D441CE1111EFE5254381E1F916912E1B446CC7803DEB5C9B1AF811
-3938473A2FDD49E5A0360F4020CAF9E85E056E59430B18AD352BA929C9A3DA10
-D7C524D92AEA6F4DCC13E2B59DBC0B8C0CD90B1E4E82BCEE516928BC9E1BB67A
-060EFD856CC9F1CFFEF90C421DBB3CAFD1959B332EADE93C9CCB31006248BD6A
-5D79AA8E049C5EA70DAB46F5D3E73984814E9F3E15A0383EFCD157240D43BF23
-F84372FB3915791E581FA0E4CD457289FACCC08C0D37CEC1FC45DE3751445A9F
-824A6B006B5E672AAABEC2B8D5DB7B0745C1D01C52657B7DF4FFB9803FD9655F
-B7D34C6048E8BF44A0235DFA9791770CB3E451E01ED7A578512DCA397F24F71D
-B2784D0778C02BCD5A88FB1671F8019523D8ECD0F42D273A72F2140D3C14F40F
-7BC451BE2FD39FA297D9857745B4B8F8531CA0DFD9E72E8EE0E7FBCDA811C8D4
-167DA0037F9F1F181115209C22FA250C8234695C1085931C3D92585563366C74
-826D4E5F9A61F39E3F8CEB8701591C4A5FC62940C2729A2D9FFAB09F833D47C8
-1B184163D87FB4E5EC4BD91B81C325FDA8ECC31EAC76FAB333A9EE090C202EFA
-FB2BF753A5AB8D147F8949C6FCA5922E1B2C6231ED86BBB953166DE2C08A3DC2
-433C76CAA7260AC901C3B4E2E78C8A6064F0ABBA1F4D16BACAC5288F199A0929
-25F1DC8ECA38DA299A229D86E105C29CCD0FD59585467BAB46AECA7A76905CEB
-1CE91EFB79E3B4EE3CDE096E2CF63DFF71544E639567BC8F12263B2F596CB4F1
-FEECEB69763A7EE15B0E59A2529A116E6E3BD067BFB3690021068ECBF18F6D9C
-3F3F07D8C7E2A7793FDEE84EAB71613A6EA8F6AC665A7C0376A6406171EAF3F3
-4E466A08318F942F2830757721CE2B193F3A7404D51375DF34495AE48356DD78
-E4AB3A71C2BE2094D5196BBBEBF056029805A302F6AE5F4A9BDB25461E81617E
-A634959D343DAC10BD072CE16D7C51C120F9B6A1D75EBC4D03DF60048B8CE15A
-94FD31DAE86A4BF525C979C7E96BC1DE88069A342C9E07C0340AA83DCF381134
-0C13C315D1B690B5E858A20362441C9F61A20B70392F87078E5C3F8B4AF23D99
-B051B170140D0069DC6E2D4FFAC6E45EE56221264A894AE68FABF04994EF9D87
-EF92B498493E3F0B2F003C47C861320E714FE36F9B4669226E40753B2FA90731
-CE281E469DB371C975B186E2910879681485763CD9316CD4017C5D9ACE43DCA0
-38397FE463F2A3D6B72209FBEA175E75793163F0FE4A2CAE3C7E5061D1A7C31E
-1F8FD3082D2743CEEA008B0F0AB55C2BBA23918A1BE4200DC628662775AC2D66
-FB16BB7C06C295357A1BD655CFF3E0C49046C2CFC70FDB87E62C2EA187A0914D
-2B55FDECDD9309FC215AF8882D65174ECEC01F38158C4D96FF9EF1B17AF32EB4
-E7C2B4770F5CE67E2B26BA0ABA9116BB3F89944E308A0127C99B1A145F730B50
-28473FD0DE250D63A7116DA1ECCE93B02F3CED8C894E6B090F5A01A26822503C
-EA68C5A7BC8734C35E40D3A56449F6AC36406A0818C666F0EFB88BF02AC4C296
-201B0D0848450A54B3FE1A75F641D1592D265CA639D29DD99C47AC8DCAA2FE5F
-0216CD31751A42FB48F53200053979FD87DEBBF427363CE1748FAADFA0C6E2C7
-9B407F5D041D9383385891A86F33AC51F0C7F4902580D9446D8118D8EF2BB177
-5C2A39867EF485A454C07CD835350997F5C18EC1C3A83E57F57D8A0813EF784D
-19B088E03344EEB3EE8AF03D18B2A4EB5A57E1DE60CFFC487FF1C2DCCDC88C40
-1B7B1B16A0DB3AA16474F6CF5F92C7490CA1F3D94B33B18DAAAED531D2740961
-53F662902417A01C2B33489862A446A5D7BC27B87ED382CC41175114C7B0D42E
-6DEED8A64B3034F764BDAFAA477191564F3EF1339976051C0BFF59E56FA20C7D
-C5954E0A805A4A8431B40401E8A188D2409A16013427152F64CD8CD502C5EC4E
-B2F5AFFBF1F4D5BBD636109F2AF10BF4737DC0F722E11649EA017EBB2F4F531C
-9D08E88CCC7D3345E4B2A96F14C9CF8E211B90F8A2CE2EF57A68BDA5997271C1
-93A69D91A285B2198A12F8B3C23FCA396CBF176473CC5A4C4E24ED72990BDF14
-162EDFE244272250864246D493134DBC29C5CF2C8A5B5E27FCCFC7C577C014FE
-FD8F723CFC46F2D9700738788930F22656B5F1AD5A34C4EA6C96EF45C8E68138
-CE87FEA609914E3936624E1E6B167A60237A34C04FF1500C52E7258FDF3DE58E
-FFED1699614DE43622D1057F172E54AEE1257FCC853C0D1828B072F7E7C0AC3A
-F14DC27378E13A403905AB96F4A00DB324AC54CEE7D0ECB3B3F1284E558EA103
-4852D84A427552A33F0E35F0E22D7DD2BABC25EC55FF814AB99F1B909C20229D
-00DE91E7F2A0822FE812AB0C9FCE5D398375F7317E37267F74D69CF30F838045
-F9907C1D5F591D85AA9B95A686A9D73E1B7093A8A38D58E67644596859206F8F
-8DD908A526C150F352A7314259DC1FD65423A25B9A21F38CD46112F27FEFF426
-1BB880A4CBE9C46DC27C4CEB94381402911B5AAB94EE5333E5F48B66F4B1480A
-F4B06CFB826DFD48239BB7C422C20BF917DFB10A29890236F795DD9C1EAE186E
-44ADB3BEA0E3A185F6A381875EFAB07F16C91143911BF848290753BD98F1A12B
-DE4E2792C0B7ECD10503C5CE2E37D525AF9EB8473E2BFFCDC2C4080A14E4A476
-F160AC58F3E9783E5395F441F2448C50E41AEAAFFF30F298EFAAA4677CE300D7
-52D527FF32A74AEA41BF3C660CA672FE9FEC4BE4BCAA5C276D8BCA8B5285452F
-6A6DAB2693ABCE19DA3DD7038DA50851083BFFDA946007F272C89ACC4655A95E
-7D99B71F8D4FDB32A91214B344D33BDC7C33B6976335A97CBD6D58E9D78561A7
-CB273F61F8EEE59DA85F76DAAB67AD82CA7FECF99BB395BCD34E4C6F06BDA2C9
-BC2C29DE279F0122F4A43DD56C1754BF2B77ABA6AFCA4C34A093366EE406E357
-3115735A9213BDF32D5C5E432DE3F99B392C3E8031706EDA1A78962870FEB011
-B9E0879272B2881534EA6DFFA50D4745B099E1F388919A69343EDD83F6F4FCDE
-306197E3A21FAE3246C66520AC829E22D8BF759B971A10692BA9046F1742C847
-D36E0DAF081816E34BB9119E9F045DC7AF4D66DDC9A540719986FF9997F8440C
-1EA3D701C64AE89A6714B43F6015AF498AEB9CFA93708CDA38334CCC077B9F3C
-790CDE2896872B41C7BFF5D900F127831DE8CE9D73040B2DE948781386F760EE
-1E7F16D09C6BCC69C59AA3093A387BBE64F66DE8785414210E3684B3C41F2449
-B9B3253B8FB62B494A1AEABF2C1ED8F8BDEA333B13FDAF1FA5BFAB70A4268BE1
-50BBD16E4521DEB6366AE0A6E6B8C3BBD56576D7CCECA6125F364259468C1B29
-EDF9BBED09B604C3C44295302CABCD71DE70A6A13B74132E2681F9A6991C3C21
-FE51F5DBFCC724953BE9A06A291EFF0775E358B13470E7B540F322BA9849DF90
-0A493AA0C92C4DB72BCBF21230D67D9EBF2B10B7E8E73EC067BA9F7FB37B26E4
-E41F99FB53B05AE9020D8B7EA591ECF2F53A2563D5B9860A2B464110A4AB3464
-E6A6C30D5AC9D6FA0D7C020231154910D325F098EF3C22CDE49FDC91022855CE
-54DA964FE24D59260F6DC5C940A0A5D7E564B8DB34E042889CB0DE84B301C4AD
-CCD1F1F9537673D5773EC6BA5756C0EEE40270FF801628AB3C397775DF0031B0
-AEB581603CA9BDFDE2C0DF758B97A8BE52EA20D35103B19B5AA2D7FDD26842BF
-F14EB69B7C8F6E5187AB60A186303942ACFF394260E95DFF9429F30C481A1921
-D48F75F7E748126A4DE5DB5458438A608D0AD758BE984B309D9F2EE1C19F833E
-ADEFF840EC97A03074ABD2CB0A4D70F750C574DBA1D139E896ED5521FFFBAAF6
-278B28E401E29D3170DC88B205899D30D668DE66642635DD8DF45865250D1E53
-4AFBD2F81B98B717895C4A51AE9679BF2B5D80EB811F0EE1D3C639EBC47EB194
-CF466F9471403F48F9B7BA17754D872C987BC22A0E0679E7BE2B7E37EAAC4B71
-BA21BBE539FFF3ABF563ECC1A2DA9E61D478C66DE3B93D4D82F3E43883BD28BD
-FE63C9189DCEEDC2D7011748FEFE8768217F138A5D304C1C20847F24F6E61D3F
-D1200BA5D94711082D250659D9CA9B4C6A9509C4C753558144622BFA364B031A
-3CD32F3358A5165C8604F06B0871B86921B210A4B2D95D0DFFEC6E06A5B06894
-787323DC6B7CC6C7AA8044743083B3CE670762229E8355AD0519F0D7043CCA79
-A37205AA182F723A3FC3E7E05AAA07D7315DD7FBA672D81E261649C5FE832866
-31976B9A567680AAED953A13F98921D0476BBBCFEEFA09264BBA421C0915092B
-1C94F775173A74D92ED9C600626B30BC0AFCBEE5749DDC362AB86C1F5F22CC2D
-6C0D9D4E6E44FAEE6D1DE961C51677812672644E2784E3ED3861D46D807493B4
-92EA8AF7D95A701100CD7570DD0A302BDD4CD7309EDC2E4D1281DBD9091FB89B
-EDDA3EC4FFFCF36DD46A509D20E202C703BAF2546E854862FA3F2B812DA1FBB2
-BCAA4FC095E0027DFC4D7845E98B9698855C38F587A4E7CB21BB7F85C3F65B36
-7343612C43DA4EAD5E9543E51F92144F0BCE6238912508AE66CE7034D23823E7
-3155F0976C4DE253FD340EEE8588044DE58DACD046BE1561F9833FEB0B64673B
-E68B0FD1D0A728C73A0E2DF54138F54FF741838AE3A81E2648907D9E9B7216E7
-2438B86A019F03354101E5FA9E7D63A02EBB2B84E1AA10565F4F34C46487D260
-7121B2F584C11F9D96B9F285465E639BC9494A0AD5F24A234A92447E0F568B71
-4C8E867D79F8DA50CE7FE73DA5EAD0BA98327095260F87DCCABB8E8A11A3D394
-1012082942A5C55C3D5FE68F9BB14FEDA80A78022D2E4612A86FCFEFF0E8A9A4
-9C5A36EF1320C143AB5B85E1547423D9FC8D5B354E551F6FD15049BA210C2249
-9170A4D5583A0715C9324D98F87A4AEDAA8AC89E5009B7639A17178DC19F474F
-474C14686D2B1E432DEF3BB0163914CB83C474DA09205188D41C080CEE1E1725
-63108F30542B8AFE5519884FC2FA36C05D5E9D49D3482F8BCA8E28260384C275
-C141C52CFDDA480514A553AD517D6F0BA8F086533D6169DD6C6E85564D0F0C2B
-018B5E6008D59A919B507C9D9ED8E61DB0B62BA874656DB7B36AE0E8168C42DC
-AA69A38A8ACB17E3F4A17F64ADD37D6E4761C815087F3316E2D1A28675DDD319
-AF189249C8E838E567E63C91D5309681B9B26565275DE739A37C6C63FD267A72
-23D018641CA1C9EC413CBE625FCB98B209A28E1A078D62159369AFE5824446F8
-CCFF3D9E1DA58AA9FAD15399DF370F3575739011C90AA013EEBBB2378506F486
-44C0D8F20E480500A761EAEE24E9A187A54F3BA9227B049782C21E4899FA0C22
-A9DEE48C564974CF49EBB1CC7AED3307C75988C1333673E11D322694EA0F60C4
-322AF2EBD48F9601F0D73BAA4273D6D2EA0FF2E03D5A3E7D8A7416B2BFAF8D1C
-380BB26FB72F7C6FF61CAA645A3AEACF0FE24375DA61572F8D9A6984BE512C25
-9B2CE5AAF0A7112B9D4EA75AF218B95B10E8D09C8A8F07BD6C7A74F7FE68C8E3
-4D8CA542FCBF1E14ED5CF2812CDDB00D6E6FCAEF4F8BBA742CB361455959CC2F
-70AE061FA46E282396921D6B3027622A30198C0893347CE952493282F7374FC9
-E6D4FAEFB1E7B6A9C291900A18843C71D1F0960AA4948EE41F4661A7FA82FE63
-EE3E3C5A7C7C031C74316A42686C299938FF605A8BC55A76E4BE11CB03AC9930
-E574BFBD6EE691ED832149E95DF5375C352406BEAF3B21BBA8CD7EAFAB6AB516
-94DFB7F03F1A3B26DE26EDE2279F541608FC6F42F955502A10888A5A21ACCC8F
-D3A9E7E4D91CA303B651287F2676608FF130C2D31B3E2D4963B165FC3F4A4B3D
-16CC4BF4209537C147C1DA9034B1A98794C56F6BA588F30968D3695BFF242DF5
-0420899AA19E45828F826AD0C97080FF2698AC33F2A93BEBEEFE66E1688E67F7
-F0D14D174E50F0981851FA0E0A7DDAFC39D69339E0B3BEA12E0A57937AA1101C
-A2D34D3B78F8D33CB545333B5A5E98287B77C615949E0D3E2A5E006E84D20A1E
-DF8BD21FE8443D1B88F01FE60AD70B7013700774CFDA9B90EEB952C956F95DD2
-F0CC75F3FB271818D0F3DB52E5838AD0E233A1725B3995D134786C267BBDFC51
-772CA3764F2AC50372ACD485E7A04104B52DCE20A9E7F282698BB0D06B49DDF9
-F454C5176FE4A331406FACDDB579FD6D29473E40EAEE218B62ADA9FF9DC9C667
-B706788AC68013EAEC48E7E7AE5495E0BDEE36A8F289007433DDECDCD9020B9D
-73FECDDDD4489BB5FE0F25C147F69E61D16F8AE9BFD5D3F94C6AE3F273C61E8B
-6D74FAD823D7977D93E01E504B64DC7DE542C7B3F363D7C7B5EEB17774D82263
-1428D494F9CBAF4DF416A83A85E0EB37E352DBED8E1350338907956A5518FB5A
-3DBFC4289AD7925471EE3F11BDC917D93A85853D101667C933CA00C8AB3F7D10
-0CE0A62324705CCFFAD98D93E6F23CF8039C5C4E7675D6C770742EC5556D92E8
-222D9F58C6DB3BAE67C9DE815EF1DD22920CF93BBD9A001F3551E1D129CDBE11
-9CDF4926EE48048B207F64B30C676E39F71FE69A981FF6A763257E77F96BC1A3
-1538DDC45F204C4EC6D4971F542DBDFE503DD1ED59B5022ED2B2188B6A1E5B9E
-8B5DD767E3C41E83B0640C4473FA5834964A1832DC8452B589F678E31F1F7524
-432D4D3CB3F487F8C2CB1BCF5B3C43B992EF8C8F5CDF0AB2DB9AB8FB0BBDE8EB
-4544918F442109A6C7195AC11903835CE46E82D05EFF7FFFE3701B6DCE9FF64D
-0066F1722C4FC1B148688C431120C5CB958E9C6F1CEEDE7DCB0E12E95C60FB56
-8AB7B60182C8346982E62650D31C0D717357B2492E50850D839785FD4BEB5DA4
-4901ED42B374FDC37CBE894C71FB6BB440F9439D7CAD8B94381660115A39371E
-C828E88DF1A75245377872351AE054CB9E3D3A10734D3C29F276844036ACE3C7
-2DBBA8F956620FB541EFAB83D8C2CD247E94326DDACB00402294CFF6E51C2209
-76073ED148B6BF55165D253F1013B653560FCDC84875B2CBA9703ACCA6220D58
-3D4147FA9A009B880C937ED0D583D252269785DE66293FFD58D04911F2C45E19
-211A9CFB03967E80A82299629A9979D68ABED7848BE9C66BE41ED517A89EA5E8
-FF0A957A885F92F12ADE25DE96F66CBE05C1BF074F127858F8C10EE636F90A8A
-1EAEF16ED8FA59616BF2F520617E70205AAE9A98FC97DD6CE2C4AD069B1B4A4B
-9FAE6A11520A619D3806AA096FA549CEB493267D3288EF94C0B71CF93F8AE863
-F2E0B77C23A3235EDE56B80134904A3EE43B8117CCD2784D9EACBC8CE5E7AB44
-B1ACDADC552C27026004E128D6D2F46377480507846DA1BD011700664E4C91AC
-DE0B1D81E68259E4F99DDCE27B6A53E8AE095E92CC5DC148D4250C26EA013AB1
-733EC33E21982D17D993DEED27528841BAF3AF0048C1CADE3C957B32C50AE1C2
-9ABBBE7B95792357179C12617103C3FFE49F3ABD0C9968BDB1AAC7430898C3D4
-3F41D510EB990B5AA8FCFC7B23260268352532955C9F805ACC41692FB5B96136
-F5FD6A64D0CFA5010F60CDE76DEAB40F7EB5E9588BD58A67716FDC109CF43515
-E71ADEC3636E73F80B80A6E9B26C7B2988C030503B8C229BE9DDEA857B801D69
-50BE7DD68ECD411B168C3063B2D387DE91FFF469151C5707CCF5950A9DF36432
-1835C7F7D7CEFFF49CBE9E859A0BF95D20C424708B3CAE98839294C453400C36
-5C5F2AE3964092522A04B0505E8C0A5E9D6770067C6D99E4BEEB8C2E1420C3DE
-25CED757A7CABE35C38CC750A823D69746368ABEDB6383A4926DEE9DFB3B2074
-E96F21D4E52DE8B3228B057A10F36E4BC6CF057916FD9FA21075A504E20F5473
-04D4BA5C45FA3F95BE41ECDDE5311D63F1B5ACA33FDFEFADF811A0CA3308949E
-98F53ED130386E3C12AD2D6A3AE35CF27C9BC2C551F2D9DFFD2219AF7D4A98DD
-DC195EB1F943C7FAAB9E2758440B10F0FF62AF5D340E04EA697D0F67AC456BDD
-006CD1D7F0AEE17F01C0FEB6E711C978AA1D0A8640FC512A7A797533D24BC65D
-0A19AFF9A01A392376B47C4F9A62233540201BC1C92FD2A157E0E8D15F08B6C3
-5A8A60008C5127E4A1CF35345AF3DC4E917BB89D7E642DF326C3B006D0C85D9C
-5AD27D02AFA792A2436C0BB073E7230FF626E9C9ABCB3D9C5306DBFE902DD8A2
-7BC63135022D4250C40AFBC8FC4C877016BAFECCE7D1BCAEA5DC8ED70C85E719
-AD21AE35A533B640D4926C5B95259A24971D0220A89BF02676098D150496BEEE
-FEE72D1A05EAAB995B0F35D9248519AD6837C4506B3AC5056CC31AE130A9AF60
-D3EEFA8672522924D5CCE22208B2EF5AB31342F42C153483344E24AB1E9046AA
-A5E26BB5D1F068F089E936ADE53AB510DFE7FB8B065E713FEA90C4A6E7DFCE12
-8AEC089FE864793307B779D8806353E5E91BE12E11F01C5F1DD44533B93D22EE
-632A1978A56ABE9B1B6973B2F742B9EE9F0C1C8BB222AB5DCBAE010691BE7AE1
-EAC06889C1BED9B89C26E6E2FF90B8339D70749FC0B2A721120B6327E8768CEC
-029E99ACE4DD1882D8C582B1436D4D7137E5124D67211702E45F72CBA6282CB5
-9F29738FBAD0D768C6DA978C42BEECA998A04C1F7287456602860635EA487C5D
-4439C4880665DB286483BE9654CB80E13561D242D85FC89951469826B07D210C
-75C2DE7BC78542152214F3FA92F8CF7902A1C95ACA9A6FB0DDF0EF117C7096B1
-32FD795DED3DBB5017047F38357097E111E1D362ECE788ADFF41CCE6406655FD
-410AB8F61CC14BE2C300EA25AB441F58F90EDE8B93678E09491A5B04916B4995
-51DD887E476E18738419E0B8A691C4B36C70EC09071E1B173ADD0622FB8F5F43
-CB9632A903F6461350A9C67589D33AFB22EFFDD22F76DB860609B1D641726052
-B7CB84925A6D55FC505904BCC38CD7344B78C07327C0BBED8936C3573432B418
-7992B9CAB68B4E1730B5428DDBE29C7BDC635CCBEEB7EC2614776A66A2199D9F
-45C53C4614537F640AD0E0451BBB338580E49841CF38EE5EAED7FF7D134ABEE0
-F08593A235B0FC63F555D1B949EE838D933A232CBA5B50E80D2CDEEF933766E3
-0EFD1587117B763701FA12018B1655D6E615EAB5A02DA41FDC6C144EF0363ED5
-CC145ABDB2A896154EF12B5341BDCECA568779EBB2D69A44453551754900319D
-D263DECA53499AA13D3ABCFC0F2DEBA8666DD85B62AE202A53ECE5B9D0A332DB
-317D9D83541E4A389D2373B7C244EB26A18A478A87E36997623C91644B3DD2DA
-2305ED1E9A6737D0EECC15207C98244E86ABCFA03CE90E448EDC0D425A76D2BD
-5CB57DA5879CC0510B3DB37F330C650C180815E459C33CF0260784F5D3067556
-A210F3DF26F101DD977A80C017BD9BE3A93EB9EEEC319A3897BBB5CC37C744C3
-E87532930951309F4289D946139B639A501F212C76E8CDEA8414B156932C9968
-1F5A0AAF4C8E27981B2CBB1B6D57981C91F1D9503A8A8CD63A914CBD058D613C
-A29538C6C40621656F149BA82E9ADF48DB129C9FE67DB0F3889CD773D1344EB8
-6836FFD09FBD83137E766AA76930199E1E74DCC608931E88C0587B38714B15DB
-DB61D069034581C574DE119ED68F7A7D1018017D910A6E76A31044B2F5D97848
-118CA5675E6A4CF4BCE2C4885DEFF02FAFC07BADEB8AC2C3870FF37049998306
-EE8A3AA61465B2073CF9A962AD576A683FD83A6300CE2C23ED0D249C8A730E26
-B3444488FB97A3F0F14E5BBF056DA1E99DACDF796728D4BEB53348E3C94D2993
-52F04F3170A731C90F821F25300E21E8FDAD2D79139CCE2BBDFD4F092936BB55
-60F50D597F4E664E0053BC7D96F148578324B93333A694A08B2BD8D27609D821
-A4622B815A6C11D81C8F5C67C98373D9C682F53E552AFE5F775D70E03326970A
-36AA5820C369958BAE2CC2BF5A38016D986905A1A71F6404B54A6742E42098C6
-D8547D8584D86288C16580EBAA6A9F6A0B8472926A184A3604CE941B02B80724
-674AC3C2A8E1AEA7D607DA25E9D14A04278A455F75B320E392835AC80721EA68
-47356167E8C4ABBB4487F4A13576716645C7C998AB0BA0E121699924AE1AA868
-39CB66B9538AE1FEC40B5760CD691B6C93362DBC95109BB95CE7E15EEB2C5CC2
-B0D301F2E18DBC0BB28F75C0735E4BDF1B3A57171BFC4563497A4607A2F8CDF1
-7BF8B1940607FC9F086C8EE502404CBBE78316BD643F85AAB14B5FC40A16D98D
-51FCA6940D0A574A47D26761BCABC4DF0944D1B9AB19FC2DD13C7F129E25763B
-03CA38F2A7A293D7625895EE8AA192F9E3BE7A89A92FEDB73B6E6837C7255A93
-50DD7C57A318C763FB44E2EAA156E3EF2EFD828E85AB7E40281BAC038EA3B775
-880A1BD39CE89E2A4296E734B8A158A59B849A73D91C17FBBF6C3734006732A9
-12C57790B61BEEB5FD9BC8408F26733F37D2F5257EDD0B8CFB6AE71CA15E5372
-6CE269E9105EE47C3834EC4DC9C2BB4E3F201FE28B2FC9B905CDDA877B338DD9
-2BAFFD5923D615FFF6F78C64BB959B6CB194EDA4EF176D805580F4CBAD51BD60
-90F858FF170B34B26C8DC3AB99DBFB6F67D7F871344783332E66715EF72692DC
-C1173EDB01892B62A153894D0DB280084E5AAE6370531005479CDAF8A0F59A69
-85E5377C09D2E25C8EDD6FB08EE556A51C13A2709F18D0F028D5CD582485C425
-216AE79A201B80061160516685DD583A7CBDC355CCC0A94AFFB4AB11497C0231
-7CEDEEFC73AC0F63B61470DA14C740D335B72C880C8CD92ED61104CEA26F181C
-6BD9B8B9AFBA2AA87551CFB09425F30AB6A28FFF777B7C375F2160A89C98E15A
-1DE1947E698DB197E053AB1635E653A062ABFADC470F2907B23AD06165683282
-2FC8271911304436EC7D55176E20AB645784C67707DB1B16C6DF4AB3C01E7434
-C68A0D01A704C73137C315D648248AB98D2EC6EB026905089E69F01B7EFEA57C
-E00CC62B0A12CDE4530ACE0A3FA59C18AFD75B36F789A39C6FAC36533A4DC147
-433CA47C4E32DE8EB62418565ED2240778F902C4461549C2B39D2B8AD041E410
-F0B538B4B62416A7E4099E3BB73A69E9AE79FEACAA422EA38AF038E1A95A3EA6
-C97ACB26CA869F75A7C16ED0AEDF918CD62BA71AE4C9BCA99C2DAF3F2D6D277D
-A9D2331E25D8AAB1DF014E58879D09E38CB9029AD2C58C39FECAF89D223239D3
-34AD88BA6D822399C411E6432D2BDB87CDADDEBDE37EE9FE231216964EC8CF69
-DC53CF66E9D8277611DCAD5AF3F2971DA84191C5A5C98C0FCCBA2544D58AA2D6
-E9475D787630677F8A6A995612DB47AE0801E197453E79666054A435745E9E14
-CE605CC3904127EAFF6876F89BD9207ED51CE30E81715A1E7AF6A50A20072E9F
-CDD7C179CBBA25724FEF2E8BA565675FE9C8E3409530F30085B632AA8790732C
-1E8DDF950D11B43885C710C9FB51D7224555F64308CB8BF281184AA6F95079C5
-EFF29B67B1AB58F1038890D944927AF462F00C683ACD8B22D50ADD052DFC7B1D
-3CA6137854F2ACA5398AFEE10880D1E619382FDC534A6C8DDCAB18A1327B81C4
-3E19E771F49237735A52D61B54A78432A36DC4F52D97543C1B4CB3D3E582EF41
-76224D2ADFA2EE9393B60AFB70EC652AC882919303A817532B739D853126B219
-756B4211795C0331630F6173ED63F793F84E8479957BB859B9E0B834B96BB889
-65C55158ABB70A6708A1A6828853E8999CE0EB78EDB7076C7D844FDD7A4EC721
-264E38186F5BE696E7CEF981B08059E80A993DA342041FFA3F55D7FBAAAFBAC8
-67077D1E794EC949C6142DD492A31CB5EE91690DFCF4FF4FC02FA8083425EF8B
-13C9FC09628674D9ABB2D86BD1E8CEFDF13D2FA22EEACCA34A0A13F74E406546
-8943E1FCE6CB34FE5138EA0EA2C15DFA7628663ADDCD621583B1CE8DF44E387B
-8682678002D9A15CB92C103C5B99A7740801A687D63BB666B1C784B426B5591F
-CE1D200BD1050905B62B5AA0198E11D21A53D011FD3808AA880E867FAB9BD9CE
-11B3265A53F382463E85A40CFCAB3DF12D09359B463D9C6B919E26A71486CBBF
-D5994B10C4C83007F8F1953F85B79ACFDB0976B4E00B478CE0BA8EB8E01F94D8
-69D4C0AEEDE6402C95B8522CA2C58E98CBA0D7720FF1F13C680F8A2A215B693E
-DF29CC6B106A919E7D99B70CA4EE33BD95354595F706405187D55A48CA9D9921
-E70B393D4FB453B1E731EB69BE8EEE7E8B4A48279898FE6E26D86B562E121778
-80214E4EE58DD6A2B16A61D59314A3E57D7C3892A3D558751A4106C0F962A5D2
-DAE214CFE1E9FE76A146662EF4307A2C62FA23D6D85FBD488834F7F7F5992E95
-ED15829CF1F36DF3CF62036FFFECA564D1EE0D949F3EA016CD0F19B305C4CCAF
-AAE8A57CDBF7B04D82C05F0FCD7B61928B3BD2814139CDAA798ECA033D4E7628
-2856ABC0A3201C43FFBD794CA3735CD2482E9F4B2C4C3B039B7ABDDAC5523135
-304833B55B3EA5CB3A1D0ED2E5E6A85A1D241B4E937BACAF2D6A311E26DA1CC8
-A823FE4A10D5CDD45DB84C99102E6CEF7D2467300A4093A4B5C1CB45F9D78149
-EFC04CD7E4717D74A8B708627FBF3640E6CB8424234B0D41A54A4385EFFACC11
-2ABF427C7416DC18946CA2B53DDD6B837F1AB9763D4A2F66E964D985D14AF408
-93AAF0FA61C90F4DC72734843947B5799493F11CB2D58E109362B003977981DA
-9B55AB5BB4DA25517335612E08C9385FAC90AFC09A5EACC3868F5982F4778805
-BEB09E0F9DCBB64D4591A92502F72B2CA1ECC8BB3179DF2E5062EDAC808C1897
-68D846DF3F87801B1FF4CA4F230811655475B245DEAA6A5E1AB290CDB3F1BC89
-C520E3411076C7882F55B018D1D48CA5BFD44D5EFD4FAE4D972C49E4301FA1B4
-4924C0FAD2C159E7552160E310C99159D4270B7F28541DFBF5B6D0A9663787E1
-9FC24DF89EC5EB7C876454FFEAB290C81519A09518CF556910A70B776CBC1375
-ECE11465577B0FDF26BAE00B0344B8DE0C41F5D2967956E8C38343D5AB79C9CC
-B015185DE0F98FD3F4296E41EBA0A5B41E2B849F80938BA21637D7D68EC65668
-5BC550FEE3123C61BD695FDC3464E5B922F696FA2AD56A842B31898B13D7F136
-DB3407C8C8D6BF091BC091D1244EE4964674AB977FC762BF582895B87492BF65
-623868AD8AB7300886C66B3A4029CB8BB96A45B8004A8EDC51E085B88824DC6E
-2B8F934C0BF938557D9E30EA2F6FDCF5B861271DCB61E1DCF2B092905E0E06E3
-630512BC9BB3CABC76C6D4ED40A9AC30DB6A595967436980B6DE103D518B08B5
-9730D8FABD09D05A1A9F8F5634D6AE4CB81FC21AF938A657FC88742DC81E809C
-C1ED81A953E19B0EEA907DAA54EB093BA9FADF6AB67769D035C7E214A445FF58
-9C277544F036623B1C06D3BA0FBFBCB94C4A5ACC290841D1B1C990304BF73B6E
-B636553F3C2326255EA57A62EEF22B7E2AF61B45A332D9DB768FBDEDB2ECD7CA
-561D4CBE7A77E0766A85DAADBEFFF969D32F7B2466F88EB821C4BAE4CE668F1E
-DC428455D9915BB0976E79BA49D57E87411AE9CE13AAB02F00447C79C8A76061
-9CA2B941F7B59A910CC714E64D0243B34A048D0507167CD2743281E8653919A2
-3197D15E34F7F57698E125B1C26B10FA55DEF390ED5034B4BFC84F71C11DCA58
-565DF8DA32D123F1919C13F3B5EB60F972C06F3E6FD7248B7A65877CCE6C6655
-988FB5B96A0509F33E984C819CAA63E411A6CA8D448C5CD0BAA74D4C5D7FDAB7
-84E514A239CAE0DA8E9B692ADAF3B66D55D5BAC0B8FB27FC2BD14D2D58A0AEE5
-6E03248A37CD0A938E633C78B60BD7D7804A07984693C6280AD9F6AFA883F588
-7EFAC89D13D06AB50DA00190B0F99414294EF59B4EBB5AB58AD968AF48C568F3
-C4AD4CBCA882F8F1CD7CF95397E6A05F97216D522E9E22C43B83981AA9C72A27
-C1A8DF7BD7BBFEEC44036924872B59BDBF6EEEF2255DF79253C204DEDEBE6168
-880F5B748D8E3EA2FB632A3C580AD35879AE044B2B12D12FB4DB566F2E001B1C
-60741F4BE72C53539B840255EB071AEC55CA0A1E22D65C4CD3F9A5230B48B317
-B3431F6F579196F72050C7ECE47A310B92515E87FC0F534D9747A216B47C8461
-75984BEE5BE9E47AA41840FD5DD746A0308748A1BA208B350BC04AA61795A290
-7EB5F91FEF7CF7937FF43AE9E29BE6F643007B1E39EE83351B936BE74BD6D052
-B7CF111A49677FFF872F3BB025DEF8649B2741935A96AC27BB7EF345FD156B4B
-3E4A5F0206AE2AF893BFCC6A4FB5FAE7A5B058ED17D2D25E81FD0E60AA720620
-9765912ADEE418695301E51124A77FDA93882C926288A3E7B9F9924000E74E30
-8B18DDA5D0A70020C9419BAC3970CA461DB34FF9D288696FCB732F58A909518A
-57D61B0D41A8BDD24A6DE0FE6EA8700DD5400691D9456CEBE6B0EE460B2CCA1E
-E4F6B5E3228A061996C30CC032CCDB70A6B00B395A92E4C707C9DE3AFEC3C290
-B00292939C106B9BB11DBC16587FC9B005D3E6162EBC12C6AB493EAC3EB84A6A
-6BDBEED24C02F827D4A94B73A0676B30A2670887B73C55B01218832EB3F57690
-C68CB1407D6088994A100D4966B43389ED0118043223EEC6345DF34A9A87D2D8
-DCCF6D5CA31C98D4A331B1DD6794E5BA75EA62BD3075FDF67AAFB910EE555813
-22E68CEB7D346B3E745DD7C8A130CA576A1B96F8C7AD5B6918836164138D6480
-35DA3A931648C9E64850A97DC73326D5605BD7B8508AA84F022771F264BD809D
-0D9260653BB70B89DB02A2EA018B615FA01105789081E8DB1A94B252C3B87A4E
-34AE5D2068EDB2F2BC5B9E577EBF8A40ADB7ADAF5741945856696744FAA0806F
-25596349553F4BF7955E60937C7A8DD6B1BC14ACC0F0E63C99B0EC211EE437D6
-97CBCEA075B12C458799A88A45501FC4C5ECC10C144E1F265C696C2BCFD14BA5
-30747B5D50F9F6A80A2E231B55E6BB42FF34C83FD1B32C751072DCAC20E480DB
-2FE35E0C58D127E80DE6741E8C2D04232E9A9300EA471D02E142E6A5687E6C34
-DC5108038E82C7238EE473AC70BF088B4C5D338A30E6FEE90C7D80CA6EBB6B82
-7750E463F5C0BC280B21DFFCEA48CF78B90AC2AB175DFAC78059D8839263937B
-7E1E7BE2C8421A02C011AE1718EA71302A73BEA2ED188274D80DAB1C3E2F7E65
-62A5F646C9859A7536B7719F7D95F2AFC3834D742D5D88D3A7A7C25959BBBF36
-B88DE17C568729E857E980B049345BE1224FDCD255356D9B5B5F7615483EB063
-CDC576B2736823C0CF5034EC0C2475C05C365F0FF775DBB724AD996203A281CB
-235FAEBEF583113C5BD8C8CCF4336C45E53CA940F3AEC63C42F08A3BE4BB63DA
-0326C9913C48C6BB5F4B64362A40F14D299A658F47BF6C47192672634F598D74
-60419837C75965C661853CD7AA551581241D0E6CB5097175A9AD7417404C6F4B
-7F2F5C248DEFE4EA85A877C1E3E5A3C10A21150FE918B6CE9FE26C234C91A69F
-9D0FF58102C128DA7AB1211DD029C946C4E88B0623C7425FE63641DC118EA01C
-7F358CCDA82B5FB6F3F7
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 55387786 39139632 1000 600 600 (orgcard.dvi)
-@start /Fa 242[61 13[{}1 49.8132 /CMSY6 rf /Fb 134[32
-1[43 32 34 24 24 24 1[34 30 34 50 18 32 1[18 34 30 19
-27 34 27 34 30 13[34 44 1[41 47 1[54 3[22 1[47 39 2[43
-1[45 6[18 2[30 30 1[30 1[30 1[30 1[18 21 18 44[{}41 49.8132
-/CMR6 rf /Fc 219[71 29[55 6[{}2 66.4176 /CMSY8 rf /Fd
-135[33 3[24 29 4[40 58 18 2[22 36 2[33 36 33 33 36 50[22
-46[{}14 66.4176 /CMTI8 rf /Fe 134[43 43 59 43 45 32 32
-34 1[45 41 45 68 23 43 1[23 45 41 25 37 45 36 45 40 10[61
-1[57 1[61 61 1[61 1[77 49 2[30 63 2[53 1[59 8[23 12[27
-32[45 47 11[{}38 66.4176 /CMBX8 rf /Ff 204[33 33 33 49[{}3
-58.1154 /CMR7 rf /Fg 129[35 1[35 1[35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 1[35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 5[35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 33[{}86 66.4176 /CMTT8 rf /Fh
-134[60 60 83 60 64 45 45 47 1[64 57 64 95 32 60 1[32
-64 57 1[53 64 51 64 56 8[87 1[87 1[80 64 86 1[78 86 90
-109 69 2[43 1[90 72 75 88 83 81 87 19[38 45[{}41 99.6264
-/CMBX10 rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35
-39 59 20 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53
-1[53 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48
-54 51 50 53 6[20 2[35 35 1[35 35 35 35 1[35 20 24 20
-1[35 27 27 20 2[35 59 35 20 19[39 39 41 11[{}71 66.4176
-/CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61 1[67 14[103
-2[103 1[131 9[99 16[69 69 1[69 1[46 3[53 53 40[{}19 119.552
-/CMBX10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- @landscape end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
-b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
-(4.67\))-150 -45 y Fh(Getting)37 b(Started)-150 79 y
-Fg(\(add-to-list)i('auto-mode-alist)h('\("\\\\.org$")e(.)e
-(org-mode\)\))-150 162 y(\(define-key)i(global-map)h("\\C-cl")e
-('org-store-link\))1504 138 y Ff(1)-150 244 y Fg(\(define-key)h
-(global-map)h("\\C-ca")e('org-agenda\))1364 221 y Ff(1)-150
-341 y Fi(F)-6 b(or)23 b(the)i(man)n(y)f(customization)h(options)g(try)
-68 b Fg(M-x)36 b(org-customize)-150 410 y Fi(T)-6 b(o)24
-b(read)g(the)g(on-line)g(do)r(cumen)n(tation)i(try)111
-b Fg(M-x)36 b(org-info)-150 606 y Fh(Visibilit)m(y)h(Cycling)-150
-754 y Fi(rotate)25 b(curren)n(t)f(subtree)g(b)r(et)n(w)n(een)i(states)
-291 b Fg(TAB)-150 824 y Fi(rotate)25 b(en)n(tire)f(bu\013er)g(b)r(et)n
-(w)n(een)h(states)384 b Fg(S-TAB)-150 893 y Fi(sho)n(w)24
-b(the)g(whole)g(\014le)854 b Fg(C-c)36 b(C-a)-150 963
-y Fi(rev)n(eal)24 b(con)n(text)i(around)e(p)r(oin)n(t)586
-b Fg(C-c)36 b(C-r)-150 1033 y Fi(sho)n(w)24 b(subtree)g(in)g(indirect)f
-(bu\013er,)h(ded.)g(frame)127 b Fg(C-c)36 b(C-k)-150
-1227 y Fh(Motion)-150 1375 y Fi(next/previous)25 b(heading)751
-b Fg(C-c)36 b(C-n/p)-150 1444 y Fi(next/previous)25 b(heading,)g(same)e
-(lev)n(el)393 b Fg(C-c)36 b(C-f/b)-150 1514 y Fi(bac)n(kw)n(ard)25
-b(to)f(higher)g(lev)n(el)f(heading)424 b Fg(C-c)36 b(C-u)-150
-1584 y Fi(jump)23 b(to)i(another)f(place)h(in)e(do)r(cumen)n(t)350
-b Fg(C-c)36 b(C-j)-150 1666 y Fi(previous/next)25 b(plain)f(list)f
-(item)557 b Fg(S-UP/DOWN)1605 1643 y Ff(3)-150 1864 y
-Fh(Structure)36 b(Editing)-150 2012 y Fi(insert)23 b(new)i
-(heading/item)g(at)f(curren)n(t)g(lev)n(el)195 b Fg(M-RET)-150
-2081 y Fi(insert)23 b(new)i(TODO)e(en)n(try/c)n(hec)n(kb)r(o)n(x)k
-(item)225 b Fg(M-S-RET)-150 2178 y Fi(promote)24 b(curren)n(t)h
-(heading)f(up)g(one)h(lev)n(el)285 b Fg(M-LEFT)-150 2248
-y Fi(demote)25 b(curren)n(t)f(heading)h(do)n(wn)f(one)g(lev)n(el)233
-b Fg(M-RIGHT)-150 2317 y Fi(promote)24 b(curren)n(t)h(subtree)f(up)g
-(one)g(lev)n(el)301 b Fg(M-S-LEFT)-150 2387 y Fi(demote)25
-b(curren)n(t)f(subtree)h(do)n(wn)f(one)g(lev)n(el)248
-b Fg(M-S-RIGHT)-150 2484 y Fi(mo)n(v)n(e)24 b(subtree/list)h(item)e
-(up/do)n(wn)445 b Fg(M-S-UP/DOWN)-150 2553 y Fi(kill)23
-b(subtree)1097 b Fg(C-c)36 b(C-x)g(C-w)-150 2623 y Fi(cop)n(y)25
-b(subtree)1052 b Fg(C-c)36 b(C-x)g(M-w)-150 2693 y Fi(y)n(ank)25
-b(subtree)1046 b Fg(C-c)36 b(C-x)g(C-y)-150 2763 y Fi(narro)n(w)23
-b(bu\013er)h(to)h(curren)n(t)f(subtree)446 b Fg(C-x)36
-b(n)g(s)-150 2937 y Fh(Arc)m(hiving)-150 3085 y Fi(toggle)25
-b(AR)n(CHIVE)e(tag)779 b Fg(C-c)36 b(C-x)g(C-a)-150 3155
-y Fi(mark)23 b(fully)g(done)i(c)n(hildren)542 b Fg(C-u)36
-b(C-c)g(C-x)g(C-a)-150 3225 y Fi(force)24 b(cycling)g(of)f(an)h(AR)n
-(CHIVEd)g(tree)341 b Fg(C-TAB)-150 3295 y Fi(mo)n(v)n(e)24
-b(subtree)h(to)f(arc)n(hiv)n(e)g(\014le)593 b Fg(C-c)36
-b(C-x)g(C-s)-150 3364 y Fi(mo)n(v)n(e)24 b(all)f(fully)g(done)i(c)n
-(hildren)444 b Fg(C-u)36 b(C-c)g(C-x)g(C-s)-150 3445
-y Fi(T)-6 b(o)24 b(set)g(arc)n(hiv)n(e)g(lo)r(cation)h(for)e(curren)n
-(t)h(\014le,)f(add)h(a)g(line)f(lik)n(e)1495 3421 y Ff(2)1533
-3445 y Fi(:)-150 3518 y Fg(#+ARCHIVE:)38 b(archfile::*)h(Archived)e
-(Tasks)-150 3692 y Fh(Filtering)g(and)g(Sparse)g(T)-10
-b(rees)-150 3840 y Fi(sho)n(w)24 b(sparse)f(tree)i(for)d(all)h(matc)n
-(hes)i(of)f(a)g(regexp)92 b Fg(C-c)36 b(/)-150 3910 y
-Fi(view)24 b(TODO's)e(in)i(sparse)f(tree)580 b Fg(C-c)36
-b(C-v)-150 3991 y Fi(global)24 b(TODO)f(list)g(in)g(agenda)i(mo)r(de)
-389 b Fg(C-c)36 b(t)1466 3967 y Ff(1)-150 4060 y Fi(create)25
-b(sparse)e(tree)i(with)e(all)g(deadlines)i(due)204 b
-Fg(C-c)36 b(C-w)-150 4130 y Fi(time)24 b(sorted)g(view)g(of)f(curren)n
-(t)h(org)g(\014le)367 b Fg(C-c)36 b(a)g(L)2046 -364 y
-Fh(T)-10 b(ables)2046 -223 y Fe(Creating)25 b(a)i(table)2046
--128 y Fi(just)d(start)g(t)n(yping,)g(e.g.)349 b Fg(|Name|Phone|Age)39
-b(RET)d(|-)g(TAB)2046 -59 y Fi(con)n(v)n(ert)25 b(region)f(to)g(table)
-741 b Fg(C-c)36 b(|)2046 11 y Fi(...)30 b(separator)24
-b(at)h(least)f(3)g(spaces)537 b Fg(C-3)36 b(C-c)g(|)2046
-106 y Fe(Commands)26 b(a)n(v)-5 b(ailable)25 b(inside)j(tables)2046
-201 y Fi(The)17 b(follo)n(wing)f(commands)i(w)n(ork)f(when)g(the)h
-(cursor)e(is)g Fd(inside)k(a)f(table)p Fi(.)2046 270
-y(Outside)24 b(of)e(tables,)i(the)g(same)f(k)n(eys)h(ma)n(y)f(ha)n(v)n
-(e)h(other)g(functionalit)n(y)-6 b(.)2046 365 y Fe(Re-aligning)25
-b(and)i(\014eld)h(motion)2046 460 y Fi(re-align)22 b(the)i(table)g
-(without)g(mo)n(ving)g(the)g(cursor)70 b Fg(C-c)36 b(C-c)2046
-530 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f(next)h(\014eld)
-311 b Fg(TAB)2046 599 y Fi(mo)n(v)n(e)24 b(to)h(previous)e(\014eld)762
-b Fg(S-TAB)2046 669 y Fi(re-align)23 b(the)h(table,)g(mo)n(v)n(e)h(to)f
-(next)h(ro)n(w)328 b Fg(RET)2046 764 y Fe(Ro)n(w)26 b(and)h(column)g
-(editing)2046 858 y Fi(mo)n(v)n(e)d(the)h(curren)n(t)f(column)g(left)
-544 b Fg(M-LEFT)2046 928 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
-(column)g(righ)n(t)497 b Fg(M-RIGHT)2046 998 y Fi(kill)23
-b(the)h(curren)n(t)g(column)731 b Fg(M-S-LEFT)2046 1068
-y Fi(insert)23 b(new)i(column)f(to)g(left)f(of)h(cursor)f(p)r(osition)
-104 b Fg(M-S-RIGHT)2046 1162 y Fi(mo)n(v)n(e)24 b(the)h(curren)n(t)f
-(ro)n(w)f(up)678 b Fg(M-UP)2046 1232 y Fi(mo)n(v)n(e)24
-b(the)h(curren)n(t)f(ro)n(w)f(do)n(wn)594 b Fg(M-DOWN)2046
-1302 y Fi(kill)23 b(the)h(curren)n(t)g(ro)n(w)g(or)f(horizon)n(tal)h
-(line)291 b Fg(M-S-UP)2046 1372 y Fi(insert)23 b(new)i(ro)n(w)e(ab)r(o)
-n(v)n(e)i(the)f(curren)n(t)g(ro)n(w)285 b Fg(M-S-DOWN)2046
-1441 y Fi(insert)23 b(hline)h(b)r(elo)n(w)g(\()p Fg(C-u)h
-Fi(:)31 b(ab)r(o)n(v)n(e\))25 b(curren)n(t)f(ro)n(w)79
-b Fg(C-c)36 b(-)2046 1511 y Fi(sort)24 b(lines)f(in)g(region)867
-b Fg(C-c)36 b(^)2046 1606 y Fe(Regions)2046 1700 y Fi(cut)25
-b(rectangular)f(region)758 b Fg(C-c)36 b(C-x)g(C-w)2046
-1770 y Fi(cop)n(y)25 b(rectangular)f(region)715 b Fg(C-c)36
-b(C-x)g(M-w)2046 1840 y Fi(paste)25 b(rectangular)f(region)695
-b Fg(C-c)36 b(C-x)g(C-y)2046 1910 y Fi(\014ll)23 b(paragraph)h(across)g
-(selected)h(cells)399 b Fg(C-c)36 b(C-q)2046 2004 y Fe(Calculations)21
-b Fi(\(in)j(com)n(bination)h(with)f(Emacs)f Fg(calc)i
-Fi(pac)n(k)l(age\))2046 2099 y(set)f(and)g(ev)l(al)g(column)g(form)n
-(ula)567 b Fg(C-c)36 b(=)2046 2169 y Fi(set)24 b(and)g(ev)l(al)g
-(\014eld)g(form)n(ula)661 b Fg(C-u)36 b(C-c)g(=)2046
-2239 y Fi(edit)24 b(form)n(ulas)f(in)g(separate)i(bu\013er)473
-b Fg(C-c)36 b(')2046 2308 y Fi(re-apply)23 b(all)g(stored)i(equations)g
-(to)f(curren)n(t)g(line)96 b Fg(C-c)36 b(*)2046 2378
-y Fi(re-apply)23 b(all)g(stored)i(equations)g(to)f(en)n(tire)g(table)
-101 b Fg(C-u)36 b(C-c)g(*)2046 2448 y Fi(iterate)25 b(table)f(to)g
-(stabilit)n(y)703 b Fg(C-u)36 b(C-u)g(C-c)g(*)2046 2542
-y Fi(rotate)25 b(calculation)g(mark)e(through)i(#)e(*)h(!)31
-b(^)p 3291 2542 22 4 v 49 w($)115 b Fg(C-#)2046 2637
-y Fi(sho)n(w)24 b(line,)f(column,)g(form)n(ula)g(reference)315
-b Fg(C-c)36 b(?)2046 2707 y Fi(sum)23 b(n)n(um)n(b)r(ers)h(in)f(curren)
-n(t)i(column/rectangle)143 b Fg(C-c)36 b(+)2046 2791
-y Fi(cop)n(y)25 b(do)n(wn)f(with)g(incremen)n(t)625 b
-Fg(S-RET)3661 2768 y Ff(3)2046 2886 y Fi(F)-6 b(orm)n(ulas)22
-b(t)n(yp)r(ed)j(in)d(\014eld)h(are)g(executed)i(b)n(y)e
-Fg(TAB)p Fi(,)h Fg(RET)f Fi(and)g Fg(C-c)37 b(C-c)p Fi(.)2046
-2955 y Fg(=)24 b Fi(in)n(tro)r(duces)g(a)g(column)g(form)n(ula,)f
-Fg(:=)h Fi(a)f(named-\014eld)i(form)n(ula.)2046 3050
-y(Example:)31 b(Add)24 b(Col1)g(and)g(Col2)522 b Fg(=$1+$2)2046
-3120 y Fi(...)30 b(with)24 b(prin)n(tf)f(format)g(sp)r(eci\014cation)
-387 b Fg(=$1+$2;\045.2f)2046 3190 y Fi(...)30 b(with)24
-b(constan)n(ts)h(from)e(constan)n(ts.el)352 b Fg(=$1/$c/$cm)2046
-3259 y Fi(sum)23 b(from)g(2nd)h(to)h(3rd)e(hline)485
-b Fg(:=vsum\(@II..@III\))2046 3329 y Fi(apply)24 b(curren)n(t)g(column)
-g(form)n(ula)518 b Fg(=)2046 3424 y Fe(Miscellaneous)2046
-3519 y Fi(to)24 b(limit)f(column)h(width)g(to)g Fg(N)g
-Fi(c)n(haracters,)g(use)140 b Fg(...|)36 b(<N>)h(|...)2046
-3588 y Fi(edit)24 b(the)h(curren)n(t)f(\014eld)g(in)f(a)h(separate)h
-(windo)n(w)126 b Fg(C-c)36 b(`)2046 3658 y Fi(mak)n(e)24
-b(curren)n(t)g(\014eld)g(fully)f(visible)502 b Fg(C-u)36
-b(TAB)2046 3728 y Fi(exp)r(ort)25 b(as)e(tab-separated)j(\014le)370
-b Fg(M-x)36 b(org-table-export)2046 3798 y Fi(imp)r(ort)23
-b(tab-separated)j(\014le)447 b Fg(M-x)36 b(org-table-import)2046
-3892 y Fe(T)-7 b(ables)27 b(created)f(with)h(the)g Fg(table.el)i
-Fe(pac)n(k)-5 b(age)2046 3987 y Fi(insert)23 b(a)h(new)g
-Fg(table.el)i Fi(table)582 b Fg(C-c)36 b(~)2046 4057
-y Fi(recognize)25 b(existing)f(table.el)g(table)474 b
-Fg(C-c)36 b(C-c)2046 4126 y Fi(con)n(v)n(ert)25 b(table)f(\(Org-mo)r
-(de)g Fc($)f Fi(table.el\))312 b Fg(C-c)36 b(~)4242 -364
-y Fh(Links)4242 -217 y Fi(globally)24 b(store)g(link)f(to)h(the)h
-(curren)n(t)f(lo)r(cation)166 b Fg(C-c)36 b(l)5858 -241
-y Ff(1)4242 -148 y Fi(insert)23 b(a)h(link)f(\(T)-6 b(AB)24
-b(completes)h(stored)f(links\))138 b Fg(C-c)36 b(C-l)4242
--78 y Fi(insert)23 b(\014le)h(link)f(with)h(\014le)g(name)g(completion)
-192 b Fg(C-u)36 b(C-c)g(C-l)4242 -8 y Fi(edit)24 b(\(also)g(hidden)g
-(part)g(of)5 b(\))24 b(link)g(at)g(p)r(oin)n(t)247 b
-Fg(C-c)36 b(C-l)4242 88 y Fi(op)r(en)25 b(\014le)e(links)g(in)h(emacs)
-722 b Fg(C-c)36 b(C-o)4242 158 y Fi(...force)22 b(op)r(en)j(in)e
-(emacs/other)j(windo)n(w)320 b Fg(C-u)36 b(C-c)g(C-o)4242
-227 y Fi(op)r(en)25 b(link)e(at)h(p)r(oin)n(t)884 b Fg(mouse-1/2)4242
-297 y Fi(...force)22 b(op)r(en)j(in)e(emacs/other)j(windo)n(w)320
-b Fg(mouse-3)4242 367 y Fi(record)24 b(a)g(p)r(osition)g(in)f(mark)g
-(ring)510 b Fg(C-c)36 b(\045)4242 437 y Fi(jump)23 b(bac)n(k)i(to)f
-(last)g(follo)n(w)n(ed)f(link\(s\))403 b Fg(C-c)36 b(&)4242
-506 y Fi(Find)24 b(next)g(link)998 b Fg(C-c)36 b(C-x)g(C-n)4242
-576 y Fi(Find)24 b(previous)f(link)876 b Fg(C-c)36 b(C-x)g(C-p)4242
-672 y Fe(In)n(ternal)26 b(Links)4242 768 y Fg(<<My)36
-b(Target>>)984 b Fi(target)4242 851 y Fg(<<<My)37 b(Target>>>)913
-b Fi(radio)23 b(target)6045 827 y Ff(2)4242 920 y Fg([[*this)37
-b(text]])948 b Fi(\014nd)24 b(headline)4242 990 y Fg([[this)37
-b(text]])620 b Fi(\014nd)24 b(target)h(or)e(text)i(in)f(bu\013er)4242
-1060 y Fg([[this)37 b(text][description]])387 b Fi(optional)24
-b(link)f(text)4242 1156 y Fe(External)j(Links)4242 1252
-y Fg(file:/home/dominik/img/)q(mars)q(.jp)q(g)352 b Fi(\014le,)23
-b(absolute)4242 1322 y Fg(file:papers/last.pdf)740 b
-Fi(\014le,)23 b(relativ)n(e)4242 1391 y Fg(file:projects.org::*tha)q(t)
-41 b(text)418 b Fi(\014nd)24 b(headline)4242 1461 y Fg
-(file:projects.org::find)42 b(me)523 b Fi(\014nd)24 b(trgt/string)4242
-1531 y Fg(http://www.astro.uva.nl)q(/~do)q(min)q(ik)317
-b Fi(on)24 b(the)h(w)n(eb)4242 1601 y Fg(mailto:adent@galaxy.net)635
-b Fi(Email)23 b(address)4242 1670 y Fg(news:comp.emacs)915
-b Fi(Usenet)25 b(group)4242 1740 y Fg(bbdb:Richard)39
-b(Stallman)701 b Fi(BBDB)23 b(p)r(erson)4242 1810 y Fg(gnus:group)1090
-b Fi(GNUS)24 b(group)4242 1880 y Fg(gnus:group#id)985
-b Fi(GNUS)24 b(message)4242 1949 y Fg(vm|wl|mhe|rmail:folder)670
-b Fi(Mail)23 b(folder)4242 2019 y Fg(vm|wl|mhe|rmail:folder#)q(id)564
-b Fi(Mail)23 b(message)4242 2089 y Fg(info:emacs:Regexps)810
-b Fi(Info)24 b(\014le:no)r(de)4242 2159 y Fg(shell:ls)38
-b(*.org)947 b Fi(shell)23 b(command)4242 2228 y Fg(elisp:\(calendar\))
-880 b Fi(elisp)23 b(form)4242 2298 y Fg([[external)38
-b(link][description]])246 b Fi(optional)24 b(link)f(text)4242
-2492 y Fh(Remem)m(b)s(er-mo)s(de)38 b(In)m(tegration)4242
-2638 y Fi(See)32 b(the)g(man)n(ual)g(for)e(ho)n(w)i(to)g(mak)n(e)g
-(remem)n(b)r(er.el)f(use)g(Org-mo)r(de)4242 2708 y(links)25
-b(and)g(\014les.)36 b(The)25 b(note-\014nishing)h(command)g
-Fg(C-c)36 b(C-c)26 b Fi(will)e(\014rst)4242 2778 y(prompt)g(for)f(an)h
-(org)f(\014le.)32 b(In)24 b(the)g(\014le,)g(\014nd)g(a)g(lo)r(cation)g
-(with:)4242 2874 y(rotate)h(subtree)f(visibilit)n(y)719
-b Fg(TAB)4242 2944 y Fi(next)25 b(heading)1043 b Fg(DOWN)4242
-3013 y Fi(previous)24 b(heading)921 b Fg(UP)4242 3109
-y Fi(Insert)24 b(the)h(note)g(with)e(one)i(of)e(the)i(follo)n(wing:)
-4242 3206 y(as)f(sublev)n(el)g(of)f(heading)i(at)f(cursor)468
-b Fg(RET)4242 3275 y Fi(righ)n(t)24 b(here)g(\(cursor)f(not)i(on)f
-(heading\))388 b Fg(RET)4242 3345 y Fi(b)r(efore)24 b(curren)n(t)g
-(heading)745 b Fg(LEFT)4242 3415 y Fi(after)24 b(curren)n(t)g(heading)
-790 b Fg(RIGHT)4242 3484 y Fi(shortcut)20 b(to)f(end)h(of)f(bu\013er)g
-(\(cursor)g(at)g(buf-start\))71 b Fg(RET)4242 3554 y
-Fi(Ab)r(ort)1256 b Fg(q)4242 3748 y Fh(Completion)4242
-3895 y Fi(In-bu\013er)34 b(completion)g(completes)h(TODO)d(k)n(eyw)n
-(ords)i(at)g(headline)4242 3964 y(start,)19 b(T)-6 b(eX)19
-b(macros)f(after)h(\\)p Fg(\\)p Fi(",)h(option)f(k)n(eyw)n(ords)g
-(after)f(\\)p Fg(#-)p Fi(",)i(T)-6 b(A)n(GS)4242 4034
-y(after)24 b(\\)p Fg(:)p Fi(",)g(and)g(dictionary)g(w)n(ords)g
-(elsewhere.)4242 4130 y(Complete)h(w)n(ord)e(at)h(p)r(oin)n(t)702
-b Fg(M-TAB)p eop end
-%%Page: 2 2
-TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
-b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
-(4.67\))-150 -47 y Fh(TODO)38 b(Items)g(and)f(Chec)m(kb)s(o)m(xes)-150
-99 y Fi(rotate)25 b(the)f(state)h(of)f(the)g(curren)n(t)g(item)354
-b Fg(C-c)36 b(C-t)-150 169 y Fi(view)24 b(TODO)f(items)g(in)h(a)g
-(sparse)f(tree)380 b Fg(C-c)36 b(C-v)-150 239 y Fi(view)24
-b(3rd)f(TODO)g(k)n(eyw)n(ord's)h(sparse)g(tree)258 b
-Fg(C-3)36 b(C-c)g(C-v)-150 335 y Fi(set)24 b(the)h(priorit)n(y)e(of)g
-(the)i(curren)n(t)f(item)369 b Fg(C-c)36 b(,)g([ABC])-150
-405 y Fi(remo)n(v)n(e)24 b(priorit)n(y)f(co)r(okie)i(from)d(curren)n(t)
-j(item)179 b Fg(C-c)36 b(,)g(SPC)-150 485 y Fi(raise)23
-b(priorit)n(y)g(of)g(curren)n(t)i(item)557 b Fg(S-UP)1430
-462 y Ff(3)-150 566 y Fi(lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)n
-(t)g(item)538 b Fg(S-DOWN)1500 542 y Ff(3)-150 662 y
-Fg(#+SEQ_TODO:)38 b(TODO)f(TRY)f(BLUFF)h(DONE)347 b Fi(to)r(do)25
-b(w)n(ork\015o)n(w)-150 731 y Fg(#+TYP_TODO:)38 b(Phil)f(home)f(work)h
-(DONE)347 b Fi(to)r(do)25 b(t)n(yp)r(es)-150 827 y(insert)e(new)i(c)n
-(hec)n(kb)r(o)n(x)g(item)f(in)f(plain)h(list)282 b Fg(M-S-RET)-150
-897 y Fi(toggle)24 b(c)n(hec)n(kb)r(o)n(x\(es\))i(in)d(region/en)n
-(try/at)i(p)r(oin)n(t)71 b Fg(C-c)36 b(C-x)g(C-b)-150
-967 y Fi(toggle)25 b(c)n(hec)n(kb)r(o)n(x)h(at)e(p)r(oin)n(t)684
-b Fg(C-c)36 b(C-c)-150 1037 y Fi(c)n(hec)n(kb)r(o)n(x)26
-b(statistics)e(co)r(okies:)32 b(insert)23 b Fg([/])i
-Fi(or)e Fg([\045])-150 1106 y Fi(up)r(date)i(c)n(hec)n(kb)r(o)n(x)h
-(statistics)e(\()p Fg(C-u)h Fi(:)31 b(whole)24 b(\014le\))81
-b Fg(C-c)36 b(#)-150 1301 y Fh(T)-10 b(ags)-150 1447
-y Fi(set)24 b(tags)h(for)d(curren)n(t)j(heading)589 b
-Fg(C-c)36 b(C-c)-150 1517 y Fi(realign)23 b(tags)i(in)e(all)g(headings)
-613 b Fg(C-u)36 b(C-c)g(C-c)-150 1587 y Fi(create)25
-b(sparse)e(tree)i(with)e(matc)n(hing)i(tags)285 b Fg(C-c)36
-b(\\)-150 1657 y Fi(globally)24 b(\(agenda\))i(matc)n(h)e(tags)h(at)f
-(cursor)243 b Fg(C-c)36 b(C-o)-150 1852 y Fh(Timestamps)-150
-1998 y Fi(prompt)24 b(for)f(date)i(and)f(insert)f(timestamp)266
-b Fg(C-c)36 b(.)-150 2068 y Fi(lik)n(e)23 b Fg(C-c)i
-Fi(.)31 b(but)24 b(insert)g(date)g(and)h(time)e(format)144
-b Fg(C-u)36 b(C-c)g(.)-150 2138 y Fi(Lik)n(e)24 b Fg(C-c)36
-b(.)24 b Fi(but)g(mak)n(e)g(stamp)h(inactiv)n(e)322 b
-Fg(C-c)36 b(!)-150 2208 y Fi(insert)23 b(DEADLINE)h(timestamp)516
-b Fg(C-c)36 b(C-d)-150 2277 y Fi(insert)23 b(SCHEDULED)h(timestamp)451
-b Fg(C-c)36 b(C-s)-150 2347 y Fi(create)25 b(sparse)e(tree)i(with)e
-(all)g(deadlines)i(due)204 b Fg(C-c)36 b(C-w)-150 2417
-y Fi(the)25 b(time)e(b)r(et)n(w)n(een)j(2)e(dates)g(in)g(a)f(time)h
-(range)172 b Fg(C-c)36 b(C-y)-150 2499 y Fi(c)n(hange)25
-b(timestamp)g(at)f(cursor)f(b)n(y)h Fc(\006)p Fi(1)g(da)n(y)238
-b Fg(S-RIGHT/LEFT)1710 2476 y Ff(3)-150 2580 y Fi(c)n(hange)25
-b(y)n(ear/mon)n(th/da)n(y)i(at)d(cursor)f(b)n(y)h Fc(\006)p
-Fi(1)189 b Fg(S-UP/DOWN)1605 2556 y Ff(3)-150 2649 y
-Fi(access)25 b(the)f(calendar)g(for)f(the)i(curren)n(t)f(date)221
-b Fg(C-c)36 b(>)-150 2719 y Fi(insert)23 b(timestamp)i(matc)n(hing)g
-(date)f(in)g(calendar)89 b Fg(C-c)36 b(<)-150 2789 y
-Fi(access)25 b(agenda)g(for)e(curren)n(t)h(date)507 b
-Fg(C-c)36 b(C-o)-150 2859 y Fi(Select)25 b(date)g(while)e(prompted)598
-b Fg(mouse-1/RET)-150 2928 y Fi(T)-6 b(oggle)17 b(custom)g(format)f
-(displa)n(y)g(for)f(dates/times)72 b Fg(C-c)36 b(C-x)g(C-t)-150
-3124 y Fh(Clo)s(c)m(king)i(Time)-150 3270 y Fi(start)24
-b(clo)r(c)n(k)g(on)g(curren)n(t)h(item)612 b Fg(C-c)36
-b(C-x)g(C-i)-150 3340 y Fi(stop)24 b(clo)r(c)n(k)h(on)f(curren)n(t)g
-(item)628 b Fg(C-c)36 b(C-x)g(C-o)-150 3410 y Fi(cancel)25
-b(curren)n(t)f(clo)r(c)n(k)829 b Fg(C-c)36 b(C-x)g(C-x)-150
-3506 y Fi(displa)n(y)24 b(total)g(subtree)h(times)619
-b Fg(C-c)36 b(C-x)g(C-d)-150 3575 y Fi(remo)n(v)n(e)24
-b(displa)n(y)n(ed)g(times)726 b Fg(C-c)36 b(C-c)-150
-3645 y Fi(insert/up)r(date)25 b(table)g(with)f(clo)r(c)n(k)g(rep)r(ort)
-289 b Fg(C-c)36 b(C-x)g(C-r)-150 3841 y Fh(LaT)-10 b(eX)37
-b(and)g(cdlatex-mo)s(de)-150 3987 y Fi(preview)24 b(LaT)-6
-b(eX)24 b(fragmen)n(t)673 b Fg(C-c)36 b(C-x)g(C-l)-150
-4057 y Fi(Expand)25 b(abbreviation)f(\(cdlatex-mo)r(de\))305
-b Fg(TAB)-150 4126 y Fi(Insert/mo)r(dify)24 b(math)h(sym)n(b)r(ol)e
-(\(cdlatex-mo)r(de\))99 b Fg(`)36 b(/)f(')2046 -364 y
-Fh(Agenda)i(Views)2046 -208 y Fi(add/mo)n(v)n(e)25 b(curren)n(t)f
-(\014le)g(to)g(fron)n(t)g(of)f(agenda)197 b Fg(C-c)36
-b([)2046 -139 y Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g(from)f(y)n
-(our)g(agenda)299 b Fg(C-c)36 b(])2046 -69 y Fi(cycle)24
-b(through)h(agenda)g(\014le)f(list)551 b Fg(C-')2046
-40 y Fi(compile)24 b(agenda)h(for)e(the)h(curren)n(t)g(w)n(eek)320
-b Fg(C-c)36 b(a)g(a)3733 17 y Ff(1)2046 121 y Fi(compile)24
-b(global)g(TODO)f(list)640 b Fg(C-c)36 b(a)g(t)3733 97
-y Ff(1)2046 201 y Fi(compile)24 b(TODO)f(list)g(for)g(sp)r(eci\014c)h
-(k)n(eyw)n(ord)218 b Fg(C-c)36 b(a)g(T)3733 178 y Ff(1)2046
-281 y Fi(matc)n(h)25 b(tags)f(in)f(agenda)j(\014les)637
-b Fg(C-c)36 b(a)g(m)3733 258 y Ff(1)2046 362 y Fi(matc)n(h)25
-b(tags)f(in)f(TODO)h(en)n(tries)554 b Fg(C-c)36 b(a)g(M)3733
-338 y Ff(1)2046 442 y Fi(\014nd)24 b(stuc)n(k)h(pro)t(jects)869
-b Fg(C-c)36 b(a)g(#)3733 419 y Ff(1)2046 523 y Fi(sho)n(w)24
-b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458 b Fg(C-c)36
-b(a)g(L)3733 499 y Ff(1)2046 603 y Fi(con\014gure)25
-b(custom)f(commands)570 b Fg(C-c)36 b(a)g(C)3733 580
-y Ff(1)2046 684 y Fi(con\014gure)25 b(stuc)n(k)g(pro)t(jects)708
-b Fg(C-c)36 b(a)g(!)3733 660 y Ff(1)2046 753 y Fi(agenda)25
-b(for)e(date)i(at)f(cursor)661 b Fg(C-c)36 b(C-o)2046
-886 y Fi(T)-6 b(o)24 b(set)g(categories,)h(add)f(lines)f(lik)n(e)3010
-863 y Ff(2)3047 886 y Fi(:)2046 961 y Fg(#+CATEGORY:)38
-b(MyCateg)2046 1059 y Fe(Commands)26 b(a)n(v)-5 b(ailable)25
-b(in)i(an)g(agenda)g(bu\013er)2046 1157 y(View)g(Org)g(\014le)2046
-1256 y Fi(sho)n(w)d(original)f(lo)r(cation)h(of)g(item)524
-b Fg(SPC/mouse-3)2046 1326 y Fi(sho)n(w)24 b(and)g(recen)n(ter)h(windo)
-n(w)626 b Fg(L)2046 1395 y Fi(goto)25 b(original)e(lo)r(cation)h(in)g
-(other)g(windo)n(w)260 b Fg(TAB/mouse-2)2046 1465 y Fi(goto)25
-b(original)e(lo)r(cation,)h(delete)h(other)f(windo)n(ws)91
-b Fg(RET)2046 1535 y Fi(sho)n(w)24 b(subtree)g(in)g(indirect)f
-(bu\013er,)h(ded.)g(frame)127 b Fg(b)2046 1604 y Fi(toggle)25
-b(follo)n(w-mo)r(de)861 b Fg(f)2046 1703 y Fe(Change)27
-b(displa)n(y)2046 1801 y Fi(delete)e(other)f(windo)n(ws)791
-b Fg(o)2046 1871 y Fi(switc)n(h)24 b(to)g(daily)g(/)g(w)n(eekly)g(view)
-534 b Fg(d)36 b(/)f(w)2046 1941 y Fi(toggle)25 b(inclusion)e(of)h
-(diary)f(en)n(tries)473 b Fg(D)2046 2010 y Fi(toggle)25
-b(time)f(grid)f(for)g(daily)g(sc)n(hedule)388 b Fg(g)2046
-2080 y Fi(toggle)25 b(displa)n(y)e(of)h(logb)r(o)r(ok)g(en)n(tries)446
-b Fg(l)2046 2150 y Fi(refresh)23 b(agenda)i(bu\013er)f(with)g(an)n(y)g
-(c)n(hanges)239 b Fg(r)2046 2220 y Fi(sa)n(v)n(e)24 b(all)f(org-mo)r
-(de)h(bu\013ers)673 b Fg(s)2046 2289 y Fi(displa)n(y)24
-b(the)g(follo)n(wing)f Fg(org-agenda-ndays)221 b(RIGHT)2046
-2359 y Fi(displa)n(y)24 b(the)g(previous)g Fg(org-agenda-ndays)238
-b(LEFT)2046 2429 y Fi(goto)25 b(to)r(da)n(y)1110 b Fg(.)2046
-2527 y Fe(Remote)27 b(editing)2046 2625 y Fi(digit)d(argumen)n(t)984
-b Fg(0-9)2046 2695 y Fi(c)n(hange)25 b(state)g(of)f(curren)n(t)g(TODO)f
-(item)333 b Fg(t)2046 2765 y Fi(kill)23 b(item)g(and)i(source)830
-b Fg(C-k)2046 2835 y Fi(arc)n(hiv)n(e)24 b(the)h(subtree)854
-b Fg($)2046 2904 y Fi(sho)n(w)24 b(tags)g(of)g(curren)n(t)g(headline)
-536 b Fg(T)2046 2974 y Fi(set)24 b(tags)h(for)d(curren)n(t)j(headline)
-573 b Fg(:)2046 3044 y Fi(toggle)25 b(AR)n(CHIVE)e(tag)779
-b Fg(a)2046 3114 y Fi(set)24 b(priorit)n(y)f(of)g(curren)n(t)i(item)612
-b Fg(p)2046 3196 y Fi(raise/lo)n(w)n(er)23 b(priorit)n(y)g(of)h(curren)
-n(t)g(item)361 b Fg(S-UP/DOWN)3801 3172 y Ff(3)2046 3266
-y Fi(displa)n(y)24 b(w)n(eigh)n(ted)h(priorit)n(y)e(of)g(curren)n(t)h
-(item)189 b Fg(P)2046 3335 y Fi(sc)n(hedule/set)26 b(deadline)e(for)f
-(this)g(item)377 b Fg(C-c)36 b(C-s/d)2046 3420 y Fi(c)n(hange)25
-b(timestamp)g(to)f(one)g(da)n(y)h(earlier/later)139 b
-Fg(S-LEFT/RIGHT)3906 3396 y Ff(3)2046 3489 y Fi(c)n(hange)25
-b(timestamp)g(to)f(to)r(da)n(y)598 b Fg(>)2046 3559 y
-Fi(insert)23 b(new)i(en)n(try)f(in)n(to)g(diary)612 b
-Fg(i)2046 3657 y Fi(start)24 b(the)h(clo)r(c)n(k)f(on)g(curren)n(t)g
-(item)g(\(clo)r(c)n(k-in\))176 b Fg(I)2046 3727 y Fi(stop)24
-b(the)h(clo)r(c)n(k)f(\(clo)r(c)n(k-out\))654 b Fg(O)2046
-3797 y Fi(cancel)25 b(curren)n(t)f(clo)r(c)n(k)829 b
-Fg(X)2046 3895 y Fe(Misc)2046 3993 y Fi(Op)r(en)24 b(link)f(in)h
-(curren)n(t)g(line)673 b Fg(C-c)36 b(C-o)4242 -364 y
-Fe(Calendar)26 b(commands)4242 -273 y Fi(\014nd)e(agenda)h(cursor)f
-(date)g(in)g(calendar)350 b Fg(c)4242 -203 y Fi(compute)25
-b(agenda)g(for)e(calendar)i(cursor)e(date)180 b Fg(c)4242
--133 y Fi(sho)n(w)24 b(phases)g(of)f(the)i(mo)r(on)669
-b Fg(M)4242 -64 y Fi(sho)n(w)24 b(sunrise/sunset)g(times)636
-b Fg(S)4242 6 y Fi(sho)n(w)24 b(holida)n(ys)1014 b Fg(H)4242
-76 y Fi(con)n(v)n(ert)25 b(date)g(to)f(other)g(calendars)478
-b Fg(C)4242 167 y Fe(Quit)27 b(and)g(Exit)4242 258 y
-Fi(quit)d(agenda,)h(remo)n(v)n(e)f(agenda)h(bu\013er)376
-b Fg(q)4242 328 y Fi(exit)24 b(agenda,)h(remo)n(v)n(e)f(all)f(agenda)i
-(bu\013ers)258 b Fg(x)4242 495 y Fh(Calendar)36 b(and)h(Diary)i(In)m
-(tegration)4242 622 y Fi(Include)25 b(Emacs)f(diary)f(en)n(tries)h(in)n
-(to)g(Org-mo)r(de)f(agenda)j(with:)4242 713 y Fg(\(setq)37
-b(org-agenda-include-diary)42 b(t\))4242 882 y Fh(Exp)s(orting)d(and)e
-(Publishing)4242 1009 y Fi(Exp)r(orting)32 b(creates)g(\014les)g(with)f
-(extensions)i Fd(.txt)k Fi(and)32 b Fd(.html)38 b Fi(in)31
-b(the)4242 1078 y(curren)n(t)c(directory)-6 b(.)38 b(Publishing)26
-b(puts)g(the)h(resulting)f(\014le)g(in)n(to)h(some)4242
-1148 y(other)d(place.)4242 1239 y(exp)r(ort/publish)h(dispatc)n(her)642
-b Fg(C-c)36 b(C-e)4242 1331 y Fi(exp)r(ort)25 b(visible)e(part)g(only)
-715 b Fg(C-c)36 b(C-e)g(v)4242 1400 y Fi(insert)23 b(template)j(of)d
-(exp)r(ort)h(options)423 b Fg(C-c)36 b(C-x)g(t)4242 1470
-y Fi(toggle)25 b(\014xed)f(width)g(for)f(en)n(try)h(or)g(region)295
-b Fg(C-c)36 b(:)4242 1561 y Fe(HTML)27 b(formatting)4242
-1652 y Fi(mak)n(e)d(w)n(ords)g Fe(b)r(old)897 b Fg(*bold*)4242
-1722 y Fi(mak)n(e)24 b(w)n(ords)g Fd(italic)898 b Fg(/italic/)4242
-1792 y Fi(mak)n(e)24 b(w)n(ords)g(underlined)p 4629 1805
-326 4 v 728 w Fg(_underlined_)4242 1861 y Fi(sub-)f(and)i(sup)r
-(erscripts)781 b Fg(x^3,)36 b(J_dust)4242 1931 y Fi(T)4281
-1945 y(E)4320 1931 y(X-lik)n(e)23 b(macros)940 b Fg(\\alpha,)37
-b(\\to)4242 2001 y Fi(t)n(yp)r(eset)25 b(lines)f(in)f(\014xed)h(width)g
-(fon)n(t)460 b Fg(start)37 b(with)f(:)4242 2071 y Fi(tables)24
-b(are)g(exp)r(orted)h(as)f(HTML)f(tables)321 b Fg(start)37
-b(with)f(|)4242 2140 y Fi(links)23 b(b)r(ecome)i(HTML)e(links)640
-b Fg(http:...)73 b(etc)4242 2210 y Fi(include)24 b(h)n(tml)g(tags)905
-b Fg(@<b>...@</b>)4242 2301 y Fe(Commen)n(ts:)35 b(T)-7
-b(ext)27 b(not)f(b)r(eing)i(exp)r(orted)4242 2392 y Fi(T)-6
-b(ext)22 b(b)r(efore)f(the)h(\014rst)f(headline)g(is)f(not)i
-(considered)g(part)f(of)g(the)h(do)r(c-)4242 2462 y(umen)n(t)29
-b(and)f(is)f(therefore)h(nev)n(er)g(exp)r(orted.)44 b(Lines)28
-b(starting)g(with)g Fg(#)4242 2532 y Fi(are)j(commen)n(ts)g(and)h(are)e
-(not)i(exp)r(orted.)53 b(Subtrees)32 b(whose)f(header)4242
-2602 y(starts)24 b(with)g(COMMENT)e(are)i(nev)n(er)g(exp)r(orted.)4242
-2693 y(toggle)h(COMMENT)d(k)n(eyw)n(ord)j(on)f(en)n(try)285
-b Fg(C-c)36 b(;)4242 2860 y Fh(Dynamic)i(Blo)s(c)m(ks)4242
-2987 y Fi(up)r(date)25 b(dynamic)f(blo)r(c)n(k)h(at)f(p)r(oin)n(t)486
-b Fg(C-c)36 b(C-x)g(C-u)4242 3056 y Fi(up)r(date)25 b(all)e(dynamic)h
-(blo)r(c)n(ks)490 b Fg(C-u)36 b(C-c)g(C-x)g(C-u)4242
-3223 y Fh(Notes)4242 3326 y Ff(1)4313 3350 y Fi(This)e(is)f(only)h(a)h
-(suggestion)g(for)e(a)h(binding)h(of)e(this)h(command.)4242
-3419 y(Cho)r(ose)24 b(y)n(ou)h(o)n(wn)f(k)n(ey)g(as)g(sho)n(wn)g(under)
-g(INST)-6 b(ALLA)g(TION.)4242 3498 y Ff(2)4304 3521 y
-Fi(After)24 b(c)n(hanging)i(a)f Fg(#+KEYWORD)i Fi(or)e
-Fg(<<<target>>>)j Fi(line,)c(press)g Fg(C-c)4242 3591
-y(C-c)g Fi(with)g(the)h(cursor)e(still)f(in)i(the)g(line)g(to)g(up)r
-(date.)4242 3669 y Ff(3)4303 3693 y Fi(Keybinding)g(a\013ected)i(b)n(y)
-e Fg(org-CUA-compatibility)p Fi(.)4535 3777 y Fb(Cop)n(yrigh)n(t)4838
-3775 y(c)4821 3777 y Fa(\015)d Fb(2007)i(F)-5 b(ree)21
-b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3833
-y(v4.67)h(for)h(Org-Mo)r(de)e(4.67,)i(2007)4912 3889
-y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3945 y(based)j(on)g(refcard)g
-(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
-4022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
-(distribute)f(copies)j(of)f(this)f(card)h(pro-)4242 4078
-y(vided)23 b(the)h(cop)n(yrigh)n(t)h(notice)g(and)f(this)f(p)r
-(ermission)h(notice)g(are)h(preserv)n(ed)g(on)4242 4133
-y(all)20 b(copies.)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/pl-refcard.ps b/etc/pl-refcard.ps
deleted file mode 100644 (file)
index 32f310e..0000000
+++ /dev/null
@@ -1,4086 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
-%%Title: pl-refcard.dvi
-%%Pages: 4
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: PLRoman10-Bold PLRoman8-Regular PLTypewriter8-Regular
-%%+ PLRoman8-Bold PLRoman6-Regular PLMathSymbols6-Italic PLRoman8-Italic
-%%+ PLMathItalic8-Italic
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips pl-refcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.02.12:1721
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: plrm.enc 0 0
-/encplrm[
-/Gamma
-/Delta
-/Theta
-/Lambda
-/Xi
-/Pi
-/Sigma
-/Upsilon
-/Phi
-/Psi
-/Omega
-/ff
-/fi
-/fl
-/ffi
-/ffl
-/dotlessi
-/dotlessj
-/grave
-/acute
-/caron
-/breve
-/macron
-/ring
-/cedilla
-/germandbls
-/ae
-/oe
-/oslash
-/AE
-/OE
-/Oslash
-/suppress
-/exclam
-/quotedblright
-/numbersign
-/dollar
-/percent
-/ampersand
-/quoteright
-/parenleft
-/parenright
-/asterisk
-/plus
-/comma
-/hyphen
-/period
-/slash
-/zero
-/one
-/two
-/three
-/four
-/five
-/six
-/seven
-/eight
-/nine
-/colon
-/semicolon
-/exclamdown
-/equal
-/questiondown
-/question
-/at
-/A
-/B
-/C
-/D
-/E
-/F
-/G
-/H
-/I
-/J
-/K
-/L
-/M
-/N
-/O
-/P
-/Q
-/R
-/S
-/T
-/U
-/V
-/W
-/X
-/Y
-/Z
-/bracketleft
-/quotedblleft
-/bracketright
-/circumflex
-/dotaccent
-/quoteleft
-/a
-/b
-/c
-/d
-/e
-/f
-/g
-/h
-/i
-/j
-/k
-/l
-/m
-/n
-/o
-/p
-/q
-/r
-/s
-/t
-/u
-/v
-/w
-/x
-/y
-/z
-/endash
-/emdash
-/hungarumlaut
-/tilde
-/dieresis
-/.notdef
-/Aogonek
-/Cacute
-/.notdef
-/.notdef
-/.notdef
-/Eogonek
-/.notdef
-/.notdef
-/.notdef
-/Lslash
-/Nacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Sacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Zacute
-/.notdef
-/Zdotaccent
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/aogonek
-/cacute
-/.notdef
-/.notdef
-/.notdef
-/eogonek
-/.notdef
-/.notdef
-/.notdef
-/lslash
-/nacute
-/.notdef
-/.notdef
-/guillemotleft
-/guillemotright
-/.notdef
-/sacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/zacute
-/.notdef
-/zdotaccent
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Oacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/oacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/quotedblbase
-] def
-
-%%EndProcSet
-%%BeginProcSet: pltt.enc 0 0
-/encpltt[
-/Gamma
-/Delta
-/Theta
-/Lambda
-/Xi
-/Pi
-/Sigma
-/Upsilon
-/Phi
-/Psi
-/Omega
-/arrowup
-/arrowdown
-/quotesingle
-/exclamdown
-/questiondown
-/dotlessi
-/dotlessj
-/grave
-/acute
-/caron
-/breve
-/macron
-/ring
-/cedilla
-/germandbls
-/ae
-/oe
-/oslash
-/AE
-/OE
-/Oslash
-/visiblespace
-/exclam
-/quotedbl
-/numbersign
-/dollar
-/percent
-/ampersand
-/quoteright
-/parenleft
-/parenright
-/asterisk
-/plus
-/comma
-/hyphen
-/period
-/slash
-/zero
-/one
-/two
-/three
-/four
-/five
-/six
-/seven
-/eight
-/nine
-/colon
-/semicolon
-/less
-/equal
-/greater
-/question
-/at
-/A
-/B
-/C
-/D
-/E
-/F
-/G
-/H
-/I
-/J
-/K
-/L
-/M
-/N
-/O
-/P
-/Q
-/R
-/S
-/T
-/U
-/V
-/W
-/X
-/Y
-/Z
-/bracketleft
-/backslash
-/bracketright
-/asciicircum
-/underscore
-/quoteleft
-/a
-/b
-/c
-/d
-/e
-/f
-/g
-/h
-/i
-/j
-/k
-/l
-/m
-/n
-/o
-/p
-/q
-/r
-/s
-/t
-/u
-/v
-/w
-/x
-/y
-/z
-/braceleft
-/bar
-/braceright
-/asciitilde
-/dieresis
-/.notdef
-/Aogonek
-/Cacute
-/.notdef
-/.notdef
-/.notdef
-/Eogonek
-/.notdef
-/.notdef
-/.notdef
-/Lslash
-/Nacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Sacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Zacute
-/.notdef
-/Zdotaccent
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/aogonek
-/cacute
-/.notdef
-/.notdef
-/.notdef
-/eogonek
-/.notdef
-/.notdef
-/.notdef
-/lslash
-/nacute
-/.notdef
-/.notdef
-/guillemotleft
-/guillemotright
-/.notdef
-/sacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/zacute
-/.notdef
-/zdotaccent
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Oacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/oacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/quotedblbase
-] def
-
-%%EndProcSet
-%%BeginProcSet: plms.enc 0 0
-/encplms[
-/minus
-/periodcentered
-/multiply
-/asteriskmath
-/divide
-/diamondmath
-/plusminus
-/minusplus
-/circleplus
-/circleminus
-/circlemultiply
-/circledivide
-/circledot
-/circlecopyrt
-/openbullet
-/bullet
-/equivasymptotic
-/equivalence
-/reflexsubset
-/reflexsuperset
-/lessequal
-/greaterequal
-/precedesequal
-/followsequal
-/similar
-/approxequal
-/propersubset
-/propersuperset
-/lessmuch
-/greatermuch
-/precedes
-/follows
-/arrowleft
-/arrowright
-/arrowup
-/arrowdown
-/arrowboth
-/arrownortheast
-/arrowsoutheast
-/similarequal
-/arrowdblleft
-/arrowdblright
-/arrowdblup
-/arrowdbldown
-/arrowdblboth
-/arrownorthwest
-/arrowsouthwest
-/proportional
-/prime
-/infinity
-/element
-/owner
-/triangle
-/triangleinv
-/negationslash
-/mapsto
-/universal
-/existential
-/logicalnot
-/emptyset
-/Rfractur
-/Ifractur
-/latticetop
-/perpendicular
-/aleph
-/A
-/B
-/C
-/D
-/E
-/F
-/G
-/H
-/I
-/J
-/K
-/L
-/M
-/N
-/O
-/P
-/Q
-/R
-/S
-/T
-/U
-/V
-/W
-/X
-/Y
-/Z
-/union
-/intersection
-/unionmulti
-/logicaland
-/logicalor
-/turnstileleft
-/turnstileright
-/floorleft
-/floorright
-/ceilingleft
-/ceilingright
-/braceleft
-/braceright
-/angbracketleft
-/angbracketright
-/bar
-/bardbl
-/arrowbothv
-/arrowdblbothv
-/backslash
-/wreathproduct
-/radical
-/coproduct
-/nabla
-/integral
-/unionsq
-/intersectionsq
-/subsetsqequal
-/supersetsqequal
-/section
-/dagger
-/daggerdbl
-/paragraph
-/club
-/diamond
-/heart
-/spade
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/xlessequal
-/xgreaterequal
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: plit.enc 0 0
-/encplit[
-/Gamma
-/Delta
-/Theta
-/Lambda
-/Xi
-/Pi
-/Sigma
-/Upsilon
-/Phi
-/Psi
-/Omega
-/ff
-/fi
-/fl
-/ffi
-/ffl
-/dotlessi
-/dotlessj
-/grave
-/acute
-/caron
-/breve
-/macron
-/ring
-/cedilla
-/germandbls
-/ae
-/oe
-/oslash
-/AE
-/OE
-/Oslash
-/suppress
-/exclam
-/quotedblright
-/numbersign
-/sterling
-/percent
-/ampersand
-/quoteright
-/parenleft
-/parenright
-/asterisk
-/plus
-/comma
-/hyphen
-/period
-/slash
-/zero
-/one
-/two
-/three
-/four
-/five
-/six
-/seven
-/eight
-/nine
-/colon
-/semicolon
-/exclamdown
-/equal
-/questiondown
-/question
-/at
-/A
-/B
-/C
-/D
-/E
-/F
-/G
-/H
-/I
-/J
-/K
-/L
-/M
-/N
-/O
-/P
-/Q
-/R
-/S
-/T
-/U
-/V
-/W
-/X
-/Y
-/Z
-/bracketleft
-/quotedblleft
-/bracketright
-/circumflex
-/dotaccent
-/quoteleft
-/a
-/b
-/c
-/d
-/e
-/f
-/g
-/h
-/i
-/j
-/k
-/l
-/m
-/n
-/o
-/p
-/q
-/r
-/s
-/t
-/u
-/v
-/w
-/x
-/y
-/z
-/endash
-/emdash
-/hungarumlaut
-/tilde
-/dieresis
-/.notdef
-/Aogonek
-/Cacute
-/.notdef
-/.notdef
-/.notdef
-/Eogonek
-/.notdef
-/.notdef
-/.notdef
-/Lslash
-/Nacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Sacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Zacute
-/.notdef
-/Zdotaccent
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/aogonek
-/cacute
-/.notdef
-/.notdef
-/.notdef
-/eogonek
-/.notdef
-/.notdef
-/.notdef
-/lslash
-/nacute
-/.notdef
-/.notdef
-/guillemotleft
-/guillemotright
-/.notdef
-/sacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/zacute
-/.notdef
-/zdotaccent
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/Oacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/oacute
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/quotedblbase
-] def
-
-%%EndProcSet
-%%BeginProcSet: plmi.enc 0 0
-/encplmi[
-/Gamma
-/Delta
-/Theta
-/Lambda
-/Xi
-/Pi
-/Sigma
-/Upsilon
-/Phi
-/Psi
-/Omega
-/alpha
-/beta
-/gamma
-/delta
-/epsilon1
-/zeta
-/eta
-/theta
-/iota
-/kappa
-/lambda
-/mu
-/nu
-/xi
-/pi
-/rho
-/sigma
-/tau
-/upsilon
-/phi
-/chi
-/psi
-/omega
-/epsilon
-/theta1
-/pi1
-/rho1
-/sigma1
-/phi1
-/arrowlefttophalf
-/arrowleftbothalf
-/arrowrighttophalf
-/arrowrightbothalf
-/arrowhookleft
-/arrowhookright
-/triangleright
-/triangleleft
-/zerooldstyle
-/oneoldstyle
-/twooldstyle
-/threeoldstyle
-/fouroldstyle
-/fiveoldstyle
-/sixoldstyle
-/sevenoldstyle
-/eightoldstyle
-/nineoldstyle
-/period
-/comma
-/less
-/slash
-/greater
-/star
-/partialdiff
-/A
-/B
-/C
-/D
-/E
-/F
-/G
-/H
-/I
-/J
-/K
-/L
-/M
-/N
-/O
-/P
-/Q
-/R
-/S
-/T
-/U
-/V
-/W
-/X
-/Y
-/Z
-/flat
-/natural
-/sharp
-/slurbelow
-/slurabove
-/lscript
-/a
-/b
-/c
-/d
-/e
-/f
-/g
-/h
-/i
-/j
-/k
-/l
-/m
-/n
-/o
-/p
-/q
-/r
-/s
-/t
-/u
-/v
-/w
-/x
-/y
-/z
-/dotlessi
-/dotlessj
-/weierstrass
-/vector
-/tie
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-/.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: PLMathItalic8-Italic
-%!PS-AdobeFont-1.0: PLMathItalic8-Italic 1.11
-%%CreationDate: Thu Apr 13 18:00:00 2000
-%%VMusage: 1024 32857
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997
-% ADL: 556 156 0
-%%EndComments
-FontDirectory/PLMathItalic8-Italic known{/PLMathItalic8-Italic findfont dup/UniqueID known{dup
-/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-17 dict begin
-/FontInfo 13 dict dup begin
-/version(1.11)readonly def
-/Notice(Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997)readonly def
-/FullName(PLMathItalic8-Italic)readonly def
-/FamilyName(PLMathItalic8)readonly def
-/Weight(Normal)readonly def
-/isFixedPitch false def
-/ItalicAngle -14.0362 def
-/UnderlinePosition -117 def
-/UnderlineThickness 36 def
-end readonly def
-/FontName /PLMathItalic8-Italic def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/StrokeWidth 0 def
-/FontMatrix[0.001 0 0 0.001 0 0]readonly def
-%/UniqueID 0 def
-/FontBBox{-24 -250 1110 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0525392EECAC163E584A9104D99AD0BC
-1B1844A0E222653FA481B8809B26A46F4C483A5D7E95816EA6582584156CFEDE
-B994ADCFF4645140E3617E4D7E1B0E4541CB9F562E55829B4DD880AABE2229E9
-4A9FA259A734D29BBA91BA1E2055CBEA4339BCBFF98D32CEFF11F296225CAABA
-DCA10577A5D431B714726C1278D8101ABD1BD8D0BD0174FFF9148F8C61C241D9
-2AD360A28616CB4A0670C1BF13E7A26E167F6FFBFA02D201035C41858D1C9BC3
-C5482BBD107AB18A030FF0012B4F80F35E3B5F2DACDA8DA3AF61CA4B9D6F97CA
-640BBDA51C5EE4608B0BA41E06E5531A75A3AA83454901AD3EB84A39DDF29139
-7F4CC0CDC03202665FB60DB649BF152427838B7192CEC676AA2A0DA9BFFBCDE5
-69E48508484670CC75B5E5A534E17E0D46EE7ADB21AD5F8B433A001279D54FE4
-66730968D8DD7CB05F42ED6EA3D86C6AE6B21B3D3BAB9E27B9C46721A475898F
-4D9018FBA3FBD95F754DB80DC5375CE15B229DFF01A6DDE71F29724C41749179
-4CE2CF23B2549F1CDB2F992C900FFF4C58A50D89FE2AF87DB2A40D86C13DE9A6
-DCB1AB47B273AC768471B1A5380A8F13E35DC0B4F61C2BE6C7AF6DA740B3B420
-5A3D3E5905EB628EF58212420084AA1A390A401A8701AA5695E99C908FE7FAEF
-78B5907B740869BB38525FEF89E5722C9472D7CB53F3FC4F591BFE0EA1D08956
-FA78F7FBBFD715357EDD7E5EB84721E202AF56F3070434199E1D6FA71F8A4F04
-8F596C8FED02A5A88A1F78A913B92D132586C1F3194CF55F2391CC65E4E12E7C
-30BE87678550213E4DE8F527B408B31E72EF7F0A034A2747CEC6361673853B40
-7F1D4B66DAA509D22557BF3DD658B4F36A3A075BCB8A96755A83EBE33291F877
-660ACD6274EF96757CB7515036BA88A9CF8E77ED0BB6C17C9D6EEDEB6D7314B5
-287EA4EA33AA18387EEA867CA0FE208A8BDE6D679508976F7928EA84F2908126
-264AE8A399DDE7F4450988622D3E319964895143AB13FD85097FA3DDF76971E2
-22E7911257FF4F9C32D68C0F195D4E90424FC1557A18DF1795A8D9BEB3D7B313
-392D40D1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: PLRoman8-Italic
-%!PS-AdobeFont-1.0: PLRoman8-Italic 1.11
-%%CreationDate: Thu Apr 13 18:00:00 2000
-%%VMusage: 1024 37745
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997
-% ADL: 556 156 0
-%%EndComments
-FontDirectory/PLRoman8-Italic known{/PLRoman8-Italic findfont dup/UniqueID known{dup
-/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-17 dict begin
-/FontInfo 13 dict dup begin
-/version(1.11)readonly def
-/Notice(Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997)readonly def
-/FullName(PLRoman8-Italic)readonly def
-/FamilyName(PLRoman8)readonly def
-/Weight(Normal)readonly def
-/isFixedPitch false def
-/ItalicAngle -14.0362 def
-/UnderlinePosition -117 def
-/UnderlineThickness 36 def
-end readonly def
-/FontName /PLRoman8-Italic def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/StrokeWidth 0 def
-/FontMatrix[0.001 0 0 0.001 0 0]readonly def
-%/UniqueID 0 def
-/FontBBox{-45 -260 1200 921}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0525392EECAC163E584A9104D99AD0BC
-1B1844A0E222653FA481B8809B26A46F4C483A5D7E95816EA6582584156CFEDE
-B994ADCFF4645140E3617E4D7E1B0E4541CB9F562E55829B4DD880AABE2229E9
-4A9FA259A734D29BBA91BA1E2055CBEA4339BCBFF98D32CEFF11F296225CAABA
-DCA10577A5D431B714726C1278D8101ABD1BD8D0BD0174FFF9148F8C61C241D9
-2AD360A28616CB4A0670C1BF13E7A26E167F6FFBFA02D201035C41858D1C9BC3
-C5482BBD107AB18A030D1E9CF347E4CDD7792FCA72747568EBACDBEE0242F654
-2AA61AF9420834407706CF33F36FDB9BB8C0BCA09E3E0D3EDB9711AAB89ED3CE
-DE5BAC9EA97ED8B2AA2EC5B0FD8F60EBF836328FB19ECF23F73D72DA42C48CEA
-7E403A5DB5841637E35178A7D1E2250CE208FB9A0CE583F9BB5F242D0D9FE5EC
-48A88EF14F534F65A1A06E03D2812E5E90B5EF2EB39962F6DE24669519B26087
-92FA2BADFFB2E71E2884959C9FCE35D20D2FAC51AE938CAA2DC481B16CA80385
-6153A79977CF168D27AC23AF5C9F5A5C699DB568890CB86800CE46D2B9A95E8A
-8FA33D57532065B43FE92134F20207B4D72A1EE997D34C8AE59813E246D2B0AE
-2002DEB3A16A92F234CF7B44A58B63AFE598C36853E0D56F000D1659799D7487
-0F9FAFD22BD2ADDE02B5705B5F8F86CAB54A5E5135A88B05136C106FE7784BF3
-43039C49B39B0B7A38728EE401FC15B57643B5BAB4968AC4965F27BF8327C9FE
-55B586D057A5B67F9729789DDC5C6C5A4AC9E21CE0ACF1C02A9B72F3C264E021
-FD054E895299785FF6190EF689DDCB6281B496A3FBEAF9140B86917135468FE0
-06F159D3299B384C346A8C02EB51E908376F7B54992F9DFD820D91DB7016505A
-8DF7F307E7A7E8E64841163AB3E1550DE6141FECE531A950C0A07C88F66C2C6D
-8FDE6D0A0D2512D7931EBC886B052717039570A75CB813B767EF3F6E157210A3
-A46A4A30114F032BA029D8207A52E17904D85DF0A7D9E501B59E4B817D6632F1
-77624C7B256530D4492AE7E4E3CBA90F50E8BAF9435EBFD205E6A62F64EF5974
-CD8E25A6906CAC83605B885C22BDD36FA9C48822F17C1071C0C7FC963342019A
-CD959A8ADEBD17C734D458EF614EF1A550F5879209A327816D66B7BCEDBE1DD0
-B5D560DF7DDC6F3E2CC8DDD94C94EF3D27DD71FBE170C8BE4617BDFA87FDE559
-AD552CFC1E5BC2A9EC89E2F197EA7A34DD83662671BD7F31FD232892A1E58878
-B389013A404C98354BF71E103BE4CE2C7181C69E5F95299EE164A740C1CCCA57
-C467DCD70275FABB0DFF9F8F1AD8AD4198DB878C3AD7CB78118E12A771959CF7
-86275EFF05A5288B4C2C7246386BFEA0B225EDD48F17DD3B54687CA515946C04
-611860F426EC3524C5FAE321B5F9FC78F1BCA9E33E21B50F40E3C37B9F9218D1
-DA2E3C6CFA4065F1A60674A6AB6C7FDE5DE8D5E4FB54155696745FE9B404D672
-492F4032F57316FB5AD3274C504FE924AC9063FF90376483C8647FD30CB62763
-F54165BF4263C2F43AB0EEAB3455B2CD9E6F785385C62EEAD35229EEB3718DBE
-0BC2EA0E63FD8AE3A2A4D72613E494716E01A9C7FBC41B9657385B3FE17C4EFB
-060F260AED6A623A639302FDEF4479EDFD9D47DAE05320FD1665794C567AFE7B
-58DF5A12CE50929D7B689BB81F7FA6C8645AD007458A277A9522BBF8BDD6175D
-EFE417F9C20DB9E80D69DF85AD1860901078C3FC53973E6829973B91B589C727
-05D0809BEC5D74611E49F8C76750BBB8F02ABD2DAA5B7A19BFFD1A04AC79CBED
-22D9A06E0D1013682B37DB1677ACDCD9C2C882B7BF79F5205F1FB7FECE186716
-2276D9CF4FC6DA7C463439B10D45C7D718949C66133B2CA8FEE89B66CAD26C84
-0798B31828EA8305FCC34415D565A241C970E47BC3F1C212B287568149F82292
-BB2DF12C1167E57C0BEBA7DEF44EDE70A2C55D4595E79DBCC5B6E4A3D8B685AB
-4B86A76260FEFE2CDE336C126BA223FA9F4B4CD364EE74452FDD69F69B69D8C1
-2007F62E80F13AA8F974B0E2D06CDD42E9B61FDC3B182449627810C93DBA6928
-3F0AF62704F47A967543D5331E935F94F2A58AA9394588881EF3502D264C81E2
-8A7E1B43265201F1B4C49A4EE76448D1CD1F48A8C01E28CB26E9AD37F59724E1
-9678A61445AD43374C6120A959A130EBE4E6566F00C1CA18C6FCBB397BE77F6C
-D0D633F95DDB27AA84711729B172ABCA93F2DEF59ECB621657FFDDF7395F8F23
-C8E2542FD282E76CC78FA320C1B249F51DEA3CB819EFFAF581E60EA5C9AFA0FE
-4348A0795B5A19537D568479C2CE392D8D5A1351531B298ED4B7DAF343114351
-01EEE86C77968293FEF7E667094888C4727B20698DA61FCA950CF774154BA653
-D5C26C224A560EE958725486FC899905CAF450F44198BA633D8639980EA7B220
-89247B9C3121BF1C0C1DD432FB523701060720730E9F51B76319D37980604F92
-E34598BDF81A3E2F8FEDA1187CA50F9236EDE39D157842BB99697A6908A49996
-02AE079A8B885AF93A5FE8B9A960C247807DD37A497D2622D848CA434C1BE615
-232A94F9D254AC9D9D4414C706E17FE6E313E2F73FED61DAAF687478A220CE96
-C89872D795D3BB3ECAE68C984F09636A149C022F4127F2E220714F4C46B51A77
-C19C9BDB44260EAC4D5D177CF6626A3EBD6025E8C4BFB074BD852EBE2A2D4B20
-656E378DF6727113FC2E4411972F265753772EC845BD8AF84289F92E00FF084E
-E23E1FDDBF92EAF6FFE8906B8442503E051275D93D41906A7A3990A637102730
-53DED37849C52D39779DAAF3AFD572A41A40D45D3F9B39005F8424ADEC822FA4
-6DBAFD4C80195448F613F24FB2C27402DA065FACEA0325A339CE2380AC4E3068
-F6E707516D38B690DF71AD0E8C35C4924D7129C419343DBDDB85ED1890F76404
-1509A21551866BFFFA6C78B414051129C72D0E315C84144B2966F72FDA22367B
-D243EF56A477B3DFBCC8AF7B6FB67E620200B215C8EAAAC52FF900289981316B
-C60E07B9A6F340CFF8CFFECBB8575DDAB8AF935881AEC6F0F7D866C1E6AADEC9
-1C8E901CD09E8CE73723AFC16BFA3EE6659849D3E05EB1CD20E45CF7C5636E95
-F2E7746600B1A247D3742F9A57BFFC2AAD5303AB20085A3110AC1CC2B7560852
-01DBDB06D7B6548E29F5307474F9F6EA10BD205FABE4465EE49B1CB1F4719F2D
-B45D11CF0F4808BBC4AEA4881748C0A2F1F9A03CCD801AEBB0EC68A78F6911E3
-6E12E02ECF7E9DDCC72C99BA46D8765468462B9AADD9F877A33AE08A7D848E5E
-B3F2831DF3DAB63CD24527A0A6E70944211C590B86E3F769D89C49BC776AEF6F
-84543FE1C546870C54BAD8FE049E4A91AC3AEA0D87D744E223D4CF6B54BDBAAD
-227763C2D8905E71628EA34AE453661179B0452AC0110490592564A451C9C2B5
-E8F3395CC1A4FC913C9166EE6B800104F28BEE3DF01BA22C5AFDBEB963177665
-6663828AF4AFADF09D8FCC025ECA483CDF75579CD24CCB5A013B13B4687A026D
-5829C885EF20E05E4D2069E117E0F85D66D2E881213E1819D30DF615DE4EAA4D
-1CFDE17373D85C7687ABC96B7AEAB6E230A511B0A95F0F111CDB9FC398A1F3B0
-FC6A85426E37C3B5EE1F629FAF9AA74DA6519EE828AEFE628891BBD83835BD4D
-BEE58B6B05801B1C94FCC20CD390495FD1D4A6D9421FBE64D4348497FCA9D5A1
-1B332C9F58FAE22D7A20FDC5A20D73CEB95EAF8A8F1512C407DE6B07852122DE
-62F98D8CAAECD64C1FC9FDFF9626E1600A56A061E2A9833070D949B1C539E42B
-4733842C69D117D2B58AE4D908FF904C71696A34C1610AA6982BC8E4D52C7D25
-D2FA3E9BF80185399BC5C251127B6C69556B9279FC9194E2846675A21436F963
-54CB97418729B8EBB94FF5664A8B29A0787F92A9B74D1DEB5E6ADCA4454CEDD2
-0F053780BC224C7246CD134F47B25ACA5AA08B431BD2315157C36611705DF0DE
-767FE9B0BF9E20989C124A54C79C77032B8514408528B970BE27C739F5308A5C
-440E8ED21BEA735122C136EE3E634BB7968281E22133A947416DA2238038CC14
-7146AAF2ED1D90FDF92AC9F25075CE7D76366B5B28AEBBC239980A38968FF9B8
-15E5DC93846CCC8A07CED3567C467E54790062892C274817774286E395ADE505
-3A4951FEE70FEB9CB1F837A1295CED4E933130C8750760B559F45B22D7C27E3C
-6583E51C894211DA5115B186FC14F401766C7591C5E01F1924741FB1F4063CEC
-627363559A53BFC7CC1CBDAE2D8231BB7CD198E97C7594F32ACB35C58A28CD0F
-CA766E49BD7D5717316BC685BD9F0481E4637B1CD7102E1C4CB48B75AE681984
-ED9CA2AC0845C47C4CED4B587C18D106959EBBD9B874FAD6E18EF539137A54C6
-C787E1B5D5F3ACB77B13DB27D871503CB5DAA2E395B4BF897509D5306D0FC936
-8EFBC24A135F07A2C28AE26A6E32E5C8D3A9A09C3F1EE0C18FAB75843EEC7B5D
-A65F61997FD9CCAF17118850F74EB98D5EA6D66D7BD2551678F5EF0231543C5F
-8EC4F703B17276912A1EBBC4BC66DC598F6F5B4953BB6790B900677E94056D90
-F65DF04CD94D395C28EEA275244C1047D178DDBAF6E0971324F72468AA5AD6D1
-3FFC9C6F679A412BBBC86A1FE55F5369B12A058513319619B0C5870276265C79
-5C55AE4E6C07855A9BC2FBF179869D8FC843020887F3103FFDADD38034D8F34E
-BA9CC74D233E20BBCD42F78C46D62EC4BE01C5454E032466231D3B7E999C1166
-890D3F5F644F8AFCC6540A50ED46346EC80B6171119377D458D193B1F81EA3BB
-72234EDDC8234B8620A78AD003F279A4B22246BEF2149C36EB3FD38729F6E875
-67247A57B89115DB90A7C0C4F0CDA620A1B77304C21C3648550D2F2750F258AA
-E40AB8D6B13DC41FFCEA039BF45BC9436FA8D61435C7A68AA72F30E27B5BA2F7
-BFE00578BB6C18A3DB61A9E84B41CC5A6F4F561D37DACDEA2AE6C8D0C05364A1
-410F300809B64B66CB87A567BEBE883B9D0923B4D2D583FF42B048E68C069BF6
-CB92D44DA5D39CD4D2B1F245E01C1F36626E3819E7DCBA9450A2BBF0324CA6EE
-EEE7B4FA88BA66620BB08F65A08BF76C5EBD69FFF5A9A7B1874BC65B1F468763
-282BC437C335BF2645040109A3D2D98CB563D4CEB5C030A7D2F2834679DE74EF
-934E027649AC2EBE9AD41E8CE89D36560FCFF3F25B87B75D65CDB23CB54D3C26
-66ABBD1FD11820859189DD2064241C0568E46CEE6FD265E7112FDE545A510341
-6158931C0FCE0FC36E3939F2FAEA67C25E93CBFD63D7EC135192132941FCCB3E
-6C30276B14D1BC62CA9CDDED45AD603B12563F509005C3E1E1A60488C0FCDCEF
-F58ED64B88A852A32989A638052F6C72D13D031D72A93A103F2F0EA765A81AA2
-5830ED17BAA8AFAE51D0A8CDD7778027505E6F9D14DD64DD2D471FE06C928FB5
-09CEC6ECCC7A7C8B1E29AF07E83C804E8DC1B2DF754B713A660582EBB6337765
-08F4688432DBBB867EAEBB4D9F2113FDB414357A3C444B90AC3B8FB8D6683B17
-083469EE367CC1F13C2388C1E140DA4004919027257F2186CF716C6858D30E57
-18711C074A9C05A17C8B512E2767AA2880C8F5D39ED4026EFD3B57466FFBE533
-0AB6BC5E2CECD68B9981B2BEF1AED8D00A3AEEB5328A5436567D6AA32DF46C7E
-F465E963B3FEEDA9112932898719493BEC545829BC2C9C99BE09D7BBDAF95DC4
-09FB645CCFCEE8A7AEB1CDAEC087354CD5EFE743E5B9422B3CE88E98C37E3AF2
-22687DB9CF10CD88109B0AA050F06A64F75ADD796D0CFE51760C4C5E1684D5EA
-B3437D479FC45AA9E0DADA17371D616CC087DBA8854E4A1372610EF06A1FDFEA
-71D4347680EF8ADD88F630075746AE447896CF63F361505A235EAFD1ECF61B9C
-2F36F92CB169B0F5A9A943C39CFE18B2F8F92CD45B12481CDDD1FE7A73DC4D18
-1C5916886C28EF30DD36AF482F2E48AA56435A4BFC57904CDBA6BB2FBF209B96
-83DD7583FE4BC0A3A381305D2284B467A236251092352BBDE73D091175D2BF8F
-DC26D77EA9B7E64FA8DC43E91706ADA1B5B74DC9D0879EA696EC44E1564EDA61
-AAF453FADF6FE1F298A21A418194C741F4E7CA7334A4F4962901A65B01942F0D
-FB1AB2AD398ACB8D44D136FC64DBD90510A6669C729E62A007D77BFB4DE9C813
-B80BC78A2240D57BA12F612C7BDBA3119C40FFB6EE0B0A7D704ACD3F96E18104
-115DD13BCD1C2E70F8ADF9F258F9B24B13060D2ACE1428C729D0AC268F5A1543
-14142AA8C89BD3E40D837F715293BB155CE657EA499F1A8C14F631774D4713B2
-67DCE7C7BBAEDBD7CD236E6DD24FA08410678A21B3BBF0BCBA7603E5B58D38F2
-6480DC5660DFB6395E5A1C3C2E64E6DAE27DF8ED36E9F2844D17BBDC17761FDE
-A4E83449FBA11226394847D3626E1BDB596AD95090D12D0BA9D148144FF6BE4E
-63740580820644A352FBC02B408A9EE41D348535CAF92B0863EB7884B5232413
-A1820718E00C9812F53EAF068B7868CEB2A755FB3B3BB04BFA131CF5D3F2342B
-858D2D40789EB15ACE5239BAEE279192A9C7D6FA8FCA10770D0BF7B4A2965C18
-BA9ABC63573339592026E53A6CD6974A9A613C036C0AD32CED13619C79539574
-C2C49EDAF6067CFBF22F6916D5B77A57308E13B23854B5C1261209C1E74D6483
-9F40DBF229141445D90A48D0D3535BC38088A07A58FB49B4328E4EC85D1B9233
-0CBF0C7CD07E6C58CC5985D7940672239A9DF4942294E8F09D45931E357CC5C4
-AC86D3B4960EF4D2BA9A099494BCFB3CA0BAC086BD1E52D51937BEAB738C9314
-302716BBC93AD9D2BCF89C8057BDD69149DB83884CEA2635DF627DB30483F131
-52D70D8C762CD2C56D3FD45B8DAF3A92DDF8582E4A2427F78924276B949C5AF4
-8B4078A4F51CCB9B129C6ABC2285718515BFF83CFB393FB7C7565BB7DB2D92CE
-8627C44FB4744DC3BD466705D1674F79026A5413390B297A18699938EC1A8F6E
-B97C6E930E069B60BFFB4419BA888A1721E7F4003EBE0C1AA54B7A5E28939CFE
-0B8B4732BA2BF3A67FDB9F528328EAE9A7CBC78AB15228156D4C7E62BBFEFB8B
-D78EA8C0CCB1838661BDF29863CF48868E4DAE932E4333CC1A7CA904620CE247
-80821FA175B59A1454FAF223D2300F3433E424395B7666D7BD74A887D66B641C
-7C49B7EE92CD764794A5B6B11F82A0E5DD3C5AAD3E35EA216E34978C90A7487B
-D8EF92E8264C4F50CBB149C450E8450506E7411DD4D2C59F76850BE79F5E0824
-AFB0C0B6207D5084C6DB32B75A85C0AFC04D3EB56A5D9D444D86174C0218E551
-9469BBFD2D82446C8A21EC7EB7196D50926443AE6281A9355BE10820960B091B
-5668527F349ABFBFDEF66D1BF9B945C979CC4B65A45A94F541305239D5D8F30C
-D234127F01D8D61246C24DF667A295744EF0B8EA9FBD304E1E27C5051E037AA4
-D77A8E8E3827BF5E3C70DE472A518BFD42CF72C4E13C4F95283393CE1604AB8B
-5D705952F36DD07E02D59FFE71F34624FCC4DF36D0F728385494B14C7B748E5F
-A8B10FFCEF5BF984CAA3BA3F907BF371C93EB43E4EE1B52986E76333A3F14901
-57CAB27F7B6949C334F264FDC984EFCB4556AE252DD5FFB101E93FAAEF0947A7
-A47A99930382ABD4D063AAB0AA041D01C2D94C190F7D4D7C7601E876471D92D2
-873049D8725885159C3AB513A0990521CFB725ADE116A6A2AC6810281F5A947A
-AD2DD7B8D84256FEFAFD5A05D414822B03FEBABAE8D7B4BDFFBD09F0D116CEFA
-8552A3D42750DD847D0C74CF8DB33CE4751B3CB1ACAA32BE5B32D39FBCF191F9
-9E588B8641909F6D22740CABE131CC78D088CD1937803753EFDA1449048B6917
-9D7554B3852ECD601A2773A1CAB7FCDF1AB101339FCDC29A06EEB427BA2B98B5
-B936FDEFAC99ED1AB910FF57513810347F3666952CABA5F90399BF95605A9630
-326E797CCFED22AE46D4748E7FEA347B82BC54EE49007DCF8453E70E9C467C96
-614BAE985EB8A9FA84AEB969B7F926C5A2B064F8B9893507EA6F80D6AEF3DF76
-9A848B2D9F368024FD53F0DA543F17ED079C706BE055D5BBBDE07A54828FA8CF
-677D43401C0FDD9DCF86920A8040F5DC5BC5E1657467D66D7806B3537A67E8FF
-D0C9C4AD9075AD7627243290CFF8300E9824519B9C9E94652FA7FFA93AB927EF
-159E3E6183DC2EFA2E2FE117BCB2A266AC3EC93019896D3F2F68C88CF24D6227
-AE1634A97A5D958F9D77781BFEE185040DD38CB013B32D31427E55C8955F245C
-83CE0DA87FB967246B36760935408B2CBC6B79E27F4EFEF8717069EBD41DE4F7
-841C635BE7F699871AEC19945CAB00903F6962CE242C3D546DF7F15DBA8728D4
-3A90F268B8A110DC4C1EADBE597E2053A0BCAB20B94AAC4D77842A0C7FDEC69F
-B5136C6FA6AC1C6C96E982428FE49259CF59C3EFD4B13B3C916A0B6C972845E9
-2AF874E893BF8D781A1E08A805B4E07053751D068AD02E22F4D3742481796993
-AFDB2DB256A659FA327440561593F32AF46133C1C891528FD69665BF4CA5AF7C
-0ED51B5C7676131D082051CF3BB2567FD6F81880088B8E08E14471F850CBEE79
-1E7DAF21293FA5EE648E931FE9A408DD63D024A156EB3335F59BF86296D3229E
-B10E851BF39F89CB172354772F1994B5FC994DF1935EBBF328BCD06A5E17D1F2
-813C5128CA9800C1515C29A6B089AB8C3C87AAA2689482F4ACEED7D292610BA8
-EBB15DFDFE6CA8770519C27E643D619C8968D72FE5953A80CF3C34CCE7ECE90F
-090938C3B1F079EFA22A9B6DE86A14D1EE7BD88F02AD7B880B4D662EB60AAD48
-C71F9D9613A492CE9A57D44A0C1E3FCA240A0F49C57285C302455BEDBCC6F7E5
-F5363853AEE3EC6BC822ABC902A152AD0713F18FBAD4EF266B2542BF31414F7C
-FFB2F9FB9F14B0EA04698F8C6413784164B8B843CC6B86710167D09805BDBFA2
-B4520DD6108F9EFDEDC16D747800463BBE0FF7232003C1E05EAA6AC17AE757C9
-E7E82BA2C9E452C076B263342E8A698B78E34F711405A1CE29782544FC466E0C
-5FE8DDA7EBED8A8D5676590570D325D3EF003B1E7F041D57AF4332E0BDFABFD6
-926C0E971A463C05F828E36FC4FC068C1BCBAD1ADDC04CFEEC0E2A7842ACFB6A
-082DAA3A619F63166742DA29F8614799DF092A4B6B55B3E61281D4B9069972C3
-77A42603AD50375EF59633D3C9E1F8DE44AC9378E95DAF5EA171B0B19CDAD5DF
-3805AB169E7571990AFEB99F5A161670B389ABC0587892446DE3CB
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: PLMathSymbols6-Italic
-%!PS-AdobeFont-1.0: PLMathSymbols6-Italic 1.11
-%%CreationDate: Thu Apr 13 18:00:00 2000
-%%VMusage: 1024 29885
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997
-% ADL: 417 117 0
-%%EndComments
-FontDirectory/PLMathSymbols6-Italic known{/PLMathSymbols6-Italic findfont dup/UniqueID known{dup
-/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-17 dict begin
-/FontInfo 13 dict dup begin
-/version(1.11)readonly def
-/Notice(Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997)readonly def
-/FullName(PLMathSymbols6-Italic)readonly def
-/FamilyName(PLMathSymbols6)readonly def
-/Weight(Normal)readonly def
-/isFixedPitch false def
-/ItalicAngle -14.0362 def
-/UnderlinePosition -88 def
-/UnderlineThickness 31 def
-end readonly def
-/FontName /PLMathSymbols6-Italic def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/StrokeWidth 0 def
-/FontMatrix[0.001 0 0 0.001 0 0]readonly def
-%/UniqueID 0 def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0525392EECAC163E584A9104D99AD0BC
-1B1844A0E222653FA481B8809B26A46F4C483A5D7E95816EA6582584156CFEDE
-B994ADCFF4645140E3617E4D7E1B0E4541CB9F562E55829B4DD880AABE2229E9
-4A9FA259A734D29BBA91BA1E2055CBEA4339BCBFF98D32CEFF11F296225CAABA
-DCA10577A5D431B714726C1278D8101ABD1BD8D0BD0174FFF9148F8C61C241D9
-2AD360A28616CB4A0670C1BF105BF4659ADEAF285B288B8C45EBB1C430ADC5E0
-55C153C58D0F07FB32132C3CEA11815265D39A20821F7A1A778738160578BCED
-399653EFF49CAC16EBD0B780A11C18E6966BE38184B550A4D69D69DB456B328E
-355FFDAA78C47EE83DAE72A4DB5A385052324763CDF9D67D462D1550C78C3AD8
-D5FF01E46EAFB7361C516DD8C71870BA0AEB8E6FEAB79E82D9CF94B9945492EC
-7526AAF2785529A98FD4A7EBB5F15BABC0619FBC49C907F07FEC8E23D3D35C71
-A304A01A695DD9119D8866D0A5DA72A216E9F80DABECA85A56CAAA79DC5E42A3
-CF4F1D171A6D50DB9BAE2F88130DF372B37A75D81089B6BEA6002C995ED468D4
-58AC20B9EEB2AAC85F82943BD9E77210E6753EA5604033D75954FC56CFE8EA07
-FAC26C11F80FFA3706A4BC08DD6698ABFD26B1E4EEB6AF0585C7CACED2867442
-F5FE4455978BDBA063C52E8210D675E198F88DAE125EAA7F5977208E4CD75D5B
-8AA2D56A3111A050E501FD978DBEC0E0DB9C4D5A1BB8A9E7BB776B37107CD588
-225511D4A92100290CDD8BF9315A05962616BDEF31DD007AC99947459D2F1279
-227E647DB37994441D207FC17B5F5127DFE683A18263F071BC1C3B8023F974E9
-CC07FF8D037BB5AF29F2B829D8492C7F0AE5DCB73E9D05B0E925556DC91B7102
-99C21C5E31B451DA322ABB2B59D887FE5E39FBCF94C05E6C67AD8A7BA2F9B635
-0B42115E8D0FF2000464A56568B9E97A96BEE20D96CECAE4ECA748C571175629
-C60F35CDB604A66EAD9D4D7AF66B53E3B0D41DFAEF96ABC838929DADBBBB98A5
-D8D52800C963E2EB8CE0D5878E65F40F5C91E7C887EC5F5B9EDFBA08700284C2
-967FE93F346CA2AEC93EF3F1BF3095A56723F43FB389AE8189C08570A68FE01C
-5F07EEF6ED05C4B4AC9D3E266A606F4C5D44CB71BDF55943069923A29BCC9632
-FB5F15E1D2E733FFB930FB
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: PLRoman6-Regular
-%!PS-AdobeFont-1.0: PLRoman6-Regular 1.11
-%%CreationDate: Thu Apr 13 18:00:00 2000
-%%VMusage: 1024 31499
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997
-% ADL: 417 117 0
-%%EndComments
-FontDirectory/PLRoman6-Regular known{/PLRoman6-Regular findfont dup/UniqueID known{dup
-/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-17 dict begin
-/FontInfo 13 dict dup begin
-/version(1.11)readonly def
-/Notice(Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997)readonly def
-/FullName(PLRoman6-Regular)readonly def
-/FamilyName(PLRoman6)readonly def
-/Weight(Normal)readonly def
-/isFixedPitch false def
-/ItalicAngle 0 def
-/UnderlinePosition -88 def
-/UnderlineThickness 31 def
-end readonly def
-/FontName /PLRoman6-Regular def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/StrokeWidth 0 def
-/FontMatrix[0.001 0 0 0.001 0 0]readonly def
-%/UniqueID 0 def
-/FontBBox{-30 -260 1203 929}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0525392EECAC163E584A9104D99AD0BC
-1B1844A0E222653FA481B8809B26A46F4C483A5D7E95816EA6582584156CFEDE
-B994ADCFF4645140E3617E4D7E1B0E4541CB9F562E55829B4DD880AABE2229E9
-4A9FA259A734D29BBA91BA1E2055CBEA4339BCBFF98D32CEFF11F296225CAABA
-DCA10577A5D431B714726C1278D8101ABD1BD8D0BD0174FFF9148F8C61C241D9
-2AD360A28616CB4A0670C1BF13E7A26E167F6FFBFA02D201035C41858D1C9BC3
-C5482BBAFCF7DF8061B51863FDE697437824573E60CC3736B77D96B9B17F4AC2
-4CCBC0394C27774C26FC66F04993D0E73F619503565343C1E03ED8880A14A7A8
-E686CEAF12D18FB2C70E54D7C524923386E488A5781001B47276F3CCB8173466
-544141F99FD85B6BCEAD8A7E1294BA184AC78C372F2E5B85E8AA15AFEA2A77F2
-C42E7590A246BE66D35D32B78F084C348A79FBBBE7B6F9567C3EA4B3B0C1CEC5
-A3DE0E36448F8C66F8992474EA20D179439C30FE7793746A258FD1F1A3714F39
-A0CAFC38273B74534DB852131FB30B383E6EDFFBCC308B14442B86C8109777EB
-79B6A3CA593C194FA43AC76959392665CB4B80FF1F4F14FF499E92D1E25C217C
-45FC5A535E0B2C2EFF0BB3EBFF84387DC0AE48D3EBCF5E702DC09298FCC1C222
-93A666201A11EF320BFFC01CBAA10C0032682C8E1E263214B80D797AB7E393E4
-6E5CEF5EDBD37618D2877E34F59F794BAF7859558C79871830A4581AB3426B88
-8F236D57DB2F5A50B37FDDFA61F635DF10C313E5AA3FD101F7027BE6C68A1C05
-0AD00D19CFEBF7C899CB6DC0F30CF38F782C94DA1B1B82FD8797EEEB29846B6D
-B84DEFD0C7F2FBD86CA8D87CB293347A95C4C462D94D7EE9B4862F04FC79F789
-D849F04C06573FF3B1C6FC0878C36954AD758A7C7BE59C3BAA712A0A56D9636B
-628138797772C16BE5309CF91E7B9440BC8CE2D95FA1D8388E21499C6652666A
-ADBC2FDF3E1CE2670000924D3BAE8E782777B037B0FBA022555B0FCC1421A0B6
-60B7381809F7FAD8EA305C71530FD9173A18E079156D95730D32EFEA3D477C04
-33ADAD9AA04C4B6A9E56344507DFC06D2EDBB23894BC719D68C21A6625E48518
-D2E33F8722EFDDB4D5DBE2E0970EF2443D4FB7D4CCC38EF2E093AA45402FBA7E
-8BD0AF96F2879BC2589DAC396A5021C1E4B35D1557349F9FE0789CDA8E35CE25
-242ADA516CBCC69635AC49A6314CC3471A1E5C9B1012DD10AE3C3B7E657D2664
-3C179C5027423D11BB023866AEF1C65E4B9824DE0908EF0E20A590BB9F5F6771
-2F9876FCA3999A6012F079C3B17D769B11BD0CA1828AC72035B1A79E19FFD9BD
-6CC4B15B5D0941AD7281D9031F89B9FE8AEA4A19EA669736C5200BF5CFE04FD3
-CE304CDED06A21C9C5BF3BCCEAD202AABA714B46E92CB87B16FCFB51D3FBC0B1
-1D69B7A4205E5112E125D2C497D8570BC5E87D6778490596F4940117DC761D3A
-97CBE3B1CDA706CB838573AF0FBCFF9C486793D5365A31053B30E0134A36E6C2
-BE8BFCA2D3368D88A5F72194EDB068A98AF034999E0789E20ECC77E4254A48E5
-1F7B432276DD279E64CB13662ABAE3C26C582E056B4745BA43CC844A757BEDCD
-010C20E025BE688F21AE393E7871517F2763CB1AA124E99BA0DA7ED9CFBBC177
-88CAD36269D9C5CB3AF26542BD43D588B6F544B8474C62E7FF2F07AED1A46A2C
-4B6084E497A4AC42D3780891731205F0348F536FC68936CF4FB684A2111EAC01
-72A53CBF5E879256D282F71F697D6DC6406131859F597CFBA4AF83394B6E823A
-B1D4A0B2C6DC5E8457B0E4C4A1E24848EDCCD19203080563B710920DD1110838
-994AEABFD1F0A5CC1318F776F9E59C1CE71334AFF1063D3B9878FEB884628827
-508D628FB3DD5AEE9A5661A5AB0139014FD7DB850346A689C3C990955AB1514A
-A37B2E33A610A1CF47FDE04D16FB56FEA578E6EA001C8428FC9C353C5A905B8A
-7C6E81B91108662E1ADE69CEB9E0C0C556B4B26BD677A4621CBA130FB1FBDD15
-FB65955F91EC0E4F9DC9D476485541083B58C378548EFE328BDD6D891C0B3D31
-9B71970E28F8DF280A2A3A9866E3258026116132692ADB296DD96ABC023742AB
-30C275A5059488787C530B85035A763F0DB28FFB7321EDFD7A84F196628CDD52
-B063FCD64976B2AC1BFF25343E48ACE0BCBFA4B17022F2B11490CEC6D844E86A
-25B597E0D475F3E0D6B62CFC70432170E2686EFC8E6DB6980D032F02ABD4F665
-7F1748F28CBE526D90398D3840182F35ECB41A03FBEDB4CA29BC51FB2BC0C62C
-E1B3FEE159A7BD1E785256B4388BE0BFDE518C3F79BA7B78FB84A3503225F146
-F9EC2A3CA0D004E35A76A3BA7B6029658F403669F2A0B5B0442BDB988DEEADCE
-82A145DEB68E18C538386C106D7BC88FBC1BF6544BF1CF40D0743BEC6FD3F826
-8D35B9176DB4F005D0FFD58FA4E07973DCDA6D7D1987934FF0D9EAC98DDF62C6
-AFDD8562D9AB60C61C32F507498352491141C005CBD6D61CDFF743D17BFEC0EC
-F5A0965FFF31D1ECE140A551EA602DAD6ECA806E9B5A0507CA54A84EE6427B86
-9046F1FD661720BD6740644A4F3BBA13278D94471F64ED8C9CAE4858366308A3
-36FFEA30517E49CD61EF344BC4DEF12AA87F0286ADDEB69705B9040340730498
-38C0DB7719CAE2A9C25076D8F5BBA7D5D4F8C596AB3BA23B48D55E673B605916
-4C4176234C61159EE24F2A6688EB74F71080636B595CCD064AAEC0CE876604D7
-6978B921AAF1168D074B2A4751C3D7C2325BEC85DF280B33285E09F25E70C469
-EA88A87CD621D3188F769B8C216D755770CA38652BF04D68761F0607FC7926C0
-D4BFFC5A4E0CB32F86CEB100C0B2DEEC22EF1EA53EBC7340D1A093ACFEC2A465
-DE64C6AE6FBCFBD9E90FDB327A6F347B37A005A4FF777167798B100F7BCAC11A
-ACF31A73C50873D3A1BAE46960D9DB146C951E9A23B49AC5B25B8487DA55B0AF
-AC54946C49BA7E773D6DEE7B2DFBD99274A8D23022ED4E29CB1BCDDC57296986
-480ECA084610D96BEDA842C9B8077E11797AC484450C17CEEFBD33397D848DCE
-D0BAB94724D3763B650F5F47AC924381F4BC6284F9E08A88C7895443D35056EC
-AD9AD3220CF58421DACCB1AEEFA5C7D4801D93C0FA7D9B51E99DE115C0F9B3CB
-6C42075E45072A114EBAC0B0F263ACEDD95A8F5D15D1339193DA369A7559BE85
-5EDE27C68AC4D888DE5F8D2B1B99B73FFEA315EA7D65D1F72AF063A629672D29
-8245D1F9672DD68961C1734BE891551CD993623082824CCB8A5983236B4DFB3D
-13C02D26B27665126BC84955402CE2D267B6F66D9465907BB3E7B2C75010F3B5
-82CEC1C97B589ACB1CF67CF762DFB0D3C65F14C6DA2BF9A875C34881E0AA0039
-3CCF1E3E7A2D1E1FA8C115059A69852439F8D31D2BB63458E0DA6D150968330F
-D6B8572443E10B01EEB0EAEDF433870C0523C32B54CC3864C25766B80E644F7A
-B7A74F91EAFF38CFEC6599D538100BAC4FCA3E575EB48CC65069D163D255AB56
-8A79706C0986E691E67A210377B13F2AE0CF71B34ED649C025A8BA6CF7C24249
-DA6D1369433C427EBFC14C67EC12ECA650670FDC930AC97A6B2449412EC60294
-905A3D1540EEC68747915A3F49482FBEAD4031D9AB6265FB6BB647FD9FD95E0A
-202A48C35320B04790905077BBAC170BE3529EB55B908CAE4B8F60D73C15112F
-317F4843C0116C8D26D271791695B51CD354B5D7D42743FA494262DF3BA47E66
-E3B8932289192BA7E030922609E03905B37E88EDFA25F24D7F07B8F5C90D04C2
-C97A7301BC5B442634F12D8DC7016FE2C013C913AFE54049D17EEC1EF32A3EE7
-6AADE218DACCEAD910D8B8B12DD40FA60319B227A4036874EDF770CFBE8E7394
-FC4DF8CB692AABF163D6EC83D30125CCE76F945F97E6222A2C93284D0F8519F2
-06FB95AEA6BB102FEF09C25D849D8D5F67C547A48937B3ED6932CB31DA99306C
-B9C02D13FF96CA0551022065DDC6D2FE07D0F2E33023013BE175CA87C5ADB9AD
-43927837F9B1F1BDF714B7D49B81029800D533B972431F4B6DBBAC79996B5882
-558441EB3370DBAAF0D5886161562831CD23DEC40E6264A2DF4B991069CDA2F8
-50B1937C6C12E5209E30C31648EDCC4ECD6472B9775021FBB6FB5527933E64E3
-112DEBB7E8167B9C10C491F14B92DD07838BC18D124357B24AB26A44B6FAB103
-7FB0997B367483D2C8C0D44E6111CEE2EC3CFCBBF060F416C0B747EC5BA54AA7
-43154084CCBE5AA960C4D1E2BCE002794741AE799F0F745B1DD6551E9DBDCC57
-51105F1B452FA8039841AC003F10F851BE565F93622832E97BB688798FC7719E
-47EEE2B94EBC03B2A99FB0444CE1B96775CE4E17444833DED69B16D0891B957E
-ADEA9B8B7B0371B5B6C525461A1B0B47B72EF158C0B8DAA61EBBD2FE4DC35FA9
-45B109E02BC9D0CA8F2F54C1BB773553E69D68E57589A437A6CFF712A5A5B775
-02E567EF0D7673C78E33FB53B8936DF55D655D394055FFCD33242AA55F5D8015
-9ED5927999DAFBE4260C95B2F05CB540672D9D294A026D04F0CF049DFA74A19F
-38BB8A746DD4976CA2B53DB31F06594B8F0A30BE859B28D6233AFBABF86E04F0
-5D4AEAE6015371E5849E2A375D979859ACBC25317F24F583F59256C1E1ED8B2C
-0334D571CECF2B4C3E28198796D327C21664F97C2F417CE0B2E60E577E946DD3
-624ADD58869960793856E257249D7E2F2A9CF549FC7625360FA022F2F055ACBC
-7A816C359AD64C6D3F146C93724A08324ED1CE7C8D3DA3C710044C03A37A680D
-1F806296BBF942428F43DFC6E9A7B5EDA26186578223C50EB478AC4131E851E4
-AAC8A0CDC05E45D59FF3D05CCA1DD7DF9A1E17C0D953F9F160F20D43269F7171
-E9320C26306F91514C90644046B293912B31CAF9FDDDBE3FBC8272FF827B677E
-CADAF295574EBED60685F10EAE1ED416C434625304D404E9A2F1002341AC2775
-0FA1CF1A994E99B20E46E76DAA92E985B513F344F9F14DD6715944830B4437CF
-D732AE81782ADB85BEC5D81E544D200A0A4823E767182192913C1B26358408A8
-3A7EDE5AB7FF3C65ABF6352258235890D5C8FFC972EBAFDC88074933F8A7D31F
-42B0F25BD659CA9E620284261237BFF4891BA7A769C5741FBEA4FB1A36D8FEFE
-EB12B472EC3A7899D9CA6D40BA17195C8530C373FDCD38877ECD01B39D57A632
-5FFBC5C4A8FFAE0D6B8EDCC9FD98FEEF4273560C8E4BBB51F39470098ACF4BEF
-68F3473D994D9CD04A768FD883B762EF29ECBB0113B85E9EEE582D062693DF8E
-223CDD15B8B185AA9778398144A77B1CEA2158DF6A2F31E70EAA93FBC1368DED
-01FD932B6B55E0AABE2DC95CA8033A3F755FBB8515426BB432CB6210B93F60CF
-A4478149856413B86B4B6F6343FB1E1C57436E6E45DAC8CDF772C0065EF634DC
-A076DD7A4137FC6C9BCC6182DF2C5346B526B1E178D16C6D2C47179F35919B74
-552FE1F7A0185C5AB94D3452AAAE1AF13B4929C91D710393EFB379209FE16ED2
-175265D14F360C6488E18A8C0973844C950B9BDA89959372A2D1D83ADEB80887
-AD84C2E2099F73A2E468110AAB2BC8367161DF44E4B8EEAEEBB91C50FD3E067E
-BB629F83EDCC2D659B3FF757B1D1CD9D256FAE1A2E9ACFC032BA9F411D5BE7BA
-35B34EB84BD59C8FC9005C544BC83CFE7F062423EEC29B326C19A0684DBBCF44
-FEAF613BE20321AF7D1CA940090DB58920B9219284D91DA3BD4CCB8DB367464F
-CC848329BCBE84245A4B5E96BA2200F2CA72A28E2D8B37EB1309FD6C6F51D89C
-16AAB4DC27CD99AC7D748CFC6CDB1BCD36CFB0020B11D1CCC9186C1571D50641
-31D888349947B448513C7E832EB9F35B28EF86C2313AC9C9D795E8419F8391DE
-31E82F5EAAA4A6474A598FAADF2F5BBADBD7460804D71371C1358E7EB05B2A2A
-871DBB24797F62063F8E28DBF7B4B6C2BE6916D5E7DABC3DD8447B926452AFF6
-B12970869D2816CAABFB163DE7D75B530B2F873CF5039B0594D1CD925DDCC24B
-CF772AF6E8BC64819469293A064442141A4D01526C93C55879A8EA0224911F07
-28FB73B1C2DF58F5D22984E6BBC957E31B7641D701115B694EE342F8362C571A
-7C31BDC1C6F2611B5337EA2F3A34AD00EA8287694838776068268A7E27B3AED8
-75F2D2745418BEF0E6DB6834777CD3B07F91EDACA9CBFED80FF429114EA8CA10
-2F52A894B559D32FD8113D33FD627F1A45160C6A78F9BBCD9F863EB98DAAE397
-E4EB52EC153DCD51E0A00C801F30D092FC6BA87A44335CBB48C9B5753D6BC5B8
-8419A6836646059BC1DCB1EA3B8DA7C513787F4347FFAABFA9652CE7053CECDC
-C6C6F581C821188EA33AE262BFE594DC5FB9A68831E34C847BB9A76D0CFAC87E
-EE89512A909C311F76C628F8AF9CAF3B3B0ECF287887C4B60AAAA76F4AEABBC4
-621A77FCEF79ED2BA0F97CDB6BA9B9A5A15750E281F613D5284F9140DDC10F6B
-F04EF552B9187C731E917E010E60D7FFF8DEFB90AD524F270AE546A0AEDAF2C3
-BA43D4F55F4E43F0D499183588A932010DB5B286081C496D7F8CEF80B726CDF7
-FF55F0110BBB7B370F4FD868249CB0A96BB35ACD1B69919F6A28087C29ABB361
-D74A9DA9BBE01D0385CC0754152E15F6E53740A5FB455B31C42939D360C9EE75
-0717CD14C8540D83BFAC01AA395F4D7000D5CED4AA191BBC3C3547A7BB582977
-AD2018357C46CDE56AE5478758A21952A9BD4C969BC4732A952FDE70391DDF69
-E53FE2E16F3128E1B32287D17243011EECC2AD462977FB0771947CA2A87CCEE7
-B70DA51DA910206FB93D1B7DDB787D23897AC0E155460E177146D39F2BA87373
-D13F599A3156967062C3C04ADA4014CA1D5291979ECBDEEB9E652324E3DFA14C
-7B11FBE5732DF381D10A7A32DEC9B4B33F474E68659BA1F7A32F692CC2A9E1FA
-963B96FEDCDE7AF353F5ED557EB63E7EB6BE5B31CE1626D8F34E8C78819D0B21
-C94D04333C03631BFC1F7D3595B6E8E8087F344789BA3D658BD459635EF190C6
-FD931CC6DC432F6B38EC25928BD5D29F481F21D3FD13850E219373D4B6A52BC8
-43442D216D3FE1A19DD68FC05C20255ED677A3DB7473E418014AD6941290855E
-E4C7FF49F8DD752EB19D171C1274A67153A226EB2AF74471396DB48A3605B32B
-D19D050841E3E32E22AA1B1D0119C51B47D45281B1A3D03D82A218C62B4183D5
-2096ADFB3682BC7B26D4FCE4353868086E257D832A76958E158640B120A04E4C
-0EDC9D66F1293445DD5E2AEFEFD4058EF3F525632A2FCC77AE0E06BA10C51B14
-2DA96B923EEE3F41B4A98E71FCE292F152ED6D670C32B244091E7AB728E87FA7
-2C5A49782F144DD9F5D7E85F87DB15A99803740BF5804BA18EAAFBE7CB36B461
-235BDC39B2A789EBC437319730EE11F7DAE6F263D7AC0BCCC7E4607A3CD013FA
-812A39E719528B8DCC8C1ABE18CD34DB785FE2F795E37BF5486BBB6F8662EDF2
-95863DBD3BA73FE26B7C38103E7AC4E1B04CB130EB34CF798E1D1FA9A365E0D5
-1D12FEDF4F2FE8DBC0404B5E809F3625D2A8EB83FCB7D0386523100A573CE1BA
-4D1C88D22C94CF7B542DAABEA1A79D0AC4739FBE423236C2CCB8A22A4D6A751B
-561E24DF2B9D64684E50A32226D2458EB5C828D74D5441EB4F6211D7E3D646E5
-C5B87214B0413FEB6A66F251B1BF0DD7E83EB7A58864E7C93BF27AA1BD0DD1AE
-226A4A908C81BE54AF8C43ABFE8C9C88AD7F724F43A7D85B6A43EB40D93B3A8B
-8CC745EFCC2153CF4C9A6583D885733AAE5EE1D55E1D182907488A48EDC74ECA
-B0303336F2C76F2E9A6FAAD123C5545CA0DF75BC4F947251AE4E295374822A12
-9525C441F8A3BA4B198F84D01655B565A503F283468FD810129217BACA9FDF27
-068A6773A3DD4077DFC854CF71303811E901E3B871FC0360FD919D83DF85BA4F
-8A38BB5B769419209E26DC34552781A99BEF4D417BD0BE537C6B026A7AA17AE5
-D7DF16459511C1C18AC14D00005E1F63BD0F9C9877BCD438C36E8BE800F488DD
-0F75FE78815881B627579F24D1DB7942617B3F5EF25EF00F6D6105A5BFB9B4A3
-0BAFCB4E3DEE046E24F67C74AB52A93D201D5DCDAB7F46BA0451E7AFF2663D00
-36052256E9A4CC1DC6971DB83BBAD54AD8214505EC661E0B95B7FDE6D222C2DC
-7EDF0773CA5E9D70BFFAE000258F3D61AE95D289F75A99C15004B3D3860843D6
-8C9045050673930281B2737F7C89F43BBF60B9755E838DD9A3B4F3578CEFE523
-A45254D80952AB05F51FDCC00454E22CD75B2090B944F06A9489FB7184EC758E
-67582592A31497383AFFCF8DBF139FC149FC6D14ABC0E4F6DF3061B2B584D4DE
-6889B93F7F704EDFC8DF9ABAF071E595D6CDA380FFC11E8506C46FD85A09C6ED
-5D5A02638E53963A0D03AC8DCA5CD347820753D0A0F0EF5F0592F17C5539DE62
-D814653080ACD0617F36270D905A48269265D404CF2A653F4E4395CEF7B3DE06
-DE9EA6A42BB17EB905650DA46019AFC6FC67719A505F093ED05413FFA4DF37F5
-B9BC3EB769ECE6AE654C50B7AB9B39C362B5068C1FB77E5A3F5629E78162D7CD
-F625E60AA72D86144B604C3E6BB6700AF62C74927A7376BF6F192FECA323A6AC
-7322D58D488B561F445A181FC3D93546488EAB314A49BE875ABC7EB71716E9C6
-7503E081482CBF436191B004EB5A4652DEBEC5E904EBC6FA6E3E864C1CE576B9
-786536B6533FC1C2102A5D11C50233C6A2A47C60E9B48D7D6706BCA5F3ADA4B9
-646E8EB39F2E7EB0B6C666C986FF1523281057E87083DF11FCCCE3A889D1A936
-DE9037C594F6E1736C9A197895F7C6D2918521460EA6F80BDFF45A5C9C32070F
-501E64E99E359F6371936E338A328245CC2EEAF6A72D5707FCAAB965A125B8E2
-2117C7871141CE94662DBF19D730F2D4F2F664984C7B6733533CAA046C9BF29D
-C52DA166C1D2274DC402A31CBF300248657BEC2B6D7D1677173819BABE5F350C
-5EBBA5DCE4B99F4BD90718DF448F2463BD5BD42074EC8F676BC0B1D28E678BFA
-F2DC379A584875E46BBD0A761213F6585DAFCE2C96D8A6D12A760674CD1CDB99
-C944FCDA5438967B66C6B6A14BD2FA48BF178D54E99D164F45F73CF25BFDCECF
-61A085F8E7762309AD094BF15AA7F180D34650EC30F7F49509DB0D55ADCB6A9D
-FCA9B91D9EB98AD3FE59D715531B254233E6A6A950C8D119607F904EE9AA5A43
-F570F8662F5DEBF9A04B44A8DD89B994C2E54982B205514C8E57DFFFA0DB4797
-BCA6DC037C90DC710C4909D5CD1175622C410272C01D72264785C95B6BD66D62
-FD392F699D4ACE97EAC92E1025CA8165FBA52F3027D8BF7DD6A3D3CFE43E524F
-4049490B1A723FB534ECB5464CAAEFFD5901A37DBDFA2E3922EAA4F1C4AA3142
-1E60E14A5E5253347F152311B48B8E1C1F7194181B2164031D611A41057FB94A
-152E669F812F39AE6AED5EAF4F2DB1A861278BBA55A8C38B8B76006FDC712D22
-0CF657158DBD3C696DB206E0A4693F97580590FE544C94697A9BC12FCDA1296D
-2B8BD5BE925E2A4170A23A3D2D1505423EE7579012FBBFCB9D2405E662C53704
-786A294C949E075D2C1DAC413FA75CCE63B3F14A307DF0DDBB5439A8B4065848
-0C8E0C1D72D311626373A1FC73EE38578ED96870B744E06972A5261CD7F635DC
-463B444423B3074FD0F857F92225EB6432A74DB5A796ABF8B88583600FBBC9B3
-B75F22604D380FD357E1316967B6B4AD59E8135CC03A0FB3542DA191F25A23A0
-F0C84A537938CE3BFF4536774490288DC73513143538F92BB5C364C8A7B27ABE
-9E24CE15D73DFD1DE9B21F97413A735608B6A67433CEFFADB6E5E12EF6E37685
-6EF8169B5FACAB8AA6B9DCF92439A3AEFCF1048358652C44D33E208D434674DC
-607DA66548F36E37AC3454152BC2A3FFE9F3B29B7486CE1F9962389DB02CD5CD
-986C897672772BE7FFE78D3D3603ED03B0B9AD81F58B4C26AA6CEB6F6EDF72CA
-F1F809D43F3432906E6561142116A38B78E3429903FE4E6D61AFFCA7BD3677F3
-13997E1519AE89A692D3827D692109AD1B0E299D2A38BC4D30BDE485C20AF8D8
-11DC4EA036574101CBA7DBAC3941A22DC3CEA88BC85FCE2E6644BE29275136D0
-9F4863F9D71E41FA380EA5E99FF79CCAC5FCBB177D90079894FE7591E558D753
-3597F91EFFD89722F4151399DADBCB5C26B3F5B4994FC102DB01D3B7577A5A38
-E2A193B6329CF31733982FFF5A5108796F9A582E37F2B60AB908139804642F3C
-FE3CAAB3CD74A1A4A3ADA8E345CBC236949E1FF94BD51E25736C3EEEE8B4EB2F
-75117AD025F24591E5C24EBE2700F5518046C507A646BF60DAD559F48BC039C7
-B650348E250EA482F19049BBCA6E5DC2C20C15474D696075AEEEA2CE72C1764F
-02922C81E2E0D2E488020A8C1E9DBDA45C6127FEB15A5FC7919261B5638E53DE
-B6E0B0776BE15539D2CF70F64F97BCAE52AB53F5C5DC8D53146082C2F66FDAD2
-7A99B173218049C3A4DFB994B3EC41CBBDBF093293835313F65672DC50A688A5
-F7678E990B156C4AB40535E42003800B400FCD06AF0465D2B73DD3ABBCD52894
-C0E88C48BA5BC0719E571044C8FD853070CC8A989792346FC407A84B54BF8276
-0A170B45F3FB64B5C51B1B0372488BC7DEFCBB8937EE5BED57881A2AEB42FEC0
-6032A1A85CC234D6F529BF313584DA6FCFA2D9627DE4B388CDDD6DF8481A4FB1
-6FD96949520D7B53D9EB9B8425483679DC1CC9E83707400CF74D2D9ADA87171F
-B5FF9A1072BF6D473714E7AD18E00CE85149D64917D76CCAB751125CFF7BD7F9
-C57EFB9DE0BE8E482039747FEC0F59F515FA68BBB37F2EE55BABE1C5C92C88B3
-EAB24BE48B7822A1ADDF81C83957E2B397A7FA474CE40003CC674E22FE93384B
-3460A9F4490F24184C4925EC140BD81EB77E01C7E8913EB4FC6A578C18956D67
-1BF0E9FA4B51CC250E9239F770B670BAB3BA2F9C090214CCEE0E6A6A3D1E4101
-A56AC6A18F067AA0120E80BE24FC1F692CD68F95E819277522655E0785FEA3C3
-5009DAD265B22EB4030B86B2F6C62E73A7532B89A38DEE7E2D68DF9500569838
-1D9A59B63FD792DEE8B630DF738742652F03258D18592FE572E51A97A6B1B26A
-9061DB341F75C42A86C70CC854F399C4B25F6B1905FE9E3615E53111D928074D
-22D42C73827FE92B63799CEE04BE3C646902CC758E8340B902CFB33211DE183E
-C64C12EF199EA37893BE52D9A32033A053B748A17568BF2BA7A6B927CE31E414
-12B545C2F7C97E1A42CD3C9B4BC560C9567C50F1B3414424341D71D36B7BCA55
-EE7C30D685FD9749B35FED2F39FE8E1E2776C3E7794FF4AC9CADCBC434FD7D45
-4C118408BA787E7211C38B520AD822DC04989F30D5306E70F1FB57D400BE3B33
-B62F01CE1D2A2132660C847BD8168262098AEE11A94AE0645530A682E4556B00
-44F0C6A358D85D0029E0F50A0BBE2571E1CB530252CB15A6797DFAC59307E7C7
-D8332A00CC02079717C6DB63110980638271DB9116961D0D57DFEA1F4254D9A6
-26919272F26F4189FD6778645D08FF094E1596A7D8BC9AE2F7A0CE53CB61A809
-7C5DD1D936C7D6F5FFFE6F4F9DC141D6C53C3F388F435468738CB3748884AE9C
-6FEAE267C403D59C2EEAFC09EE39BED756F305725C58AB433CF7B6C94C1EB2E0
-59691D70D2DCEBF52154D75CFB37DD0BBD6288AC9BBEA7666D34A8B92C4B6D5F
-AC1DC45840F3097B0A09EC5A7689C0DC1F4A6B57C9D1D4C82067E6FFAE16C98C
-2961C6BD4481ABBFCA4840B6EFBCFB00E860AF5CB8700B9786BC52C714446814
-D75DB090BD0129A0A5699D477C2F0E36D4AA030617B8E21F611E6FEAE36AEC18
-7687D1D7F3B55EA216C0312ACDD3E0F5F620B5C81A96C4F046F585A48F89006A
-1D9A8CD3B2485F85D70E24A475246F9D672CB6CF99FE3465283DF6FE77E10D71
-10B96098FED55247CC65C1D4A30C8190917C50B70F39028A7BEB816AA8323D9B
-BD8453E22306541CA84F117D8558ACAA3DF16896990FC1702CBCA1F06C4E3911
-781B42415590CC222D0A3991DCF32090E4481B966E7AFC85EB925DFE31A01203
-D19AA3E15417E059ABAD2B3EF8C25E4DB7C71BA3C3FE5BE691A666E3D8446FCD
-A6F526E52BE4C0926CCC6E180D5CF4CB683122F9EA63C65F4B696FE2AC90C480
-FA06CB6240FD371C8B082E81EE08E8134EC1417FFFFED2AB55699D2D1CBA3CFD
-D35D4821F179735890D8F4AC996C85141A95222394672B1389FCFF4596EAAF8A
-37351631EEE62B1A49E3950241BABB4838F92D003830BB0E1E89CF6E222176EF
-1666EB16B190CE48DF704965848BC049856B090B5A6906FBB75F9D23EF222D4A
-6D6E32D40452093E834FC1F5286F449467982B353D0BD5BD6ACB91C654C97A61
-BCAFB46AA514A961FB416B342A5B7B12F6F1C7F336F597D29177EE9441BF3CC9
-285244CAD94BA047AEF72DB99CF2ABF117EFCACFCD85DAABD0CDD0EE1A47C6DA
-9DBF0F87E537797C53AC25A6A9472DE0FA9F0F673F863C1C11BDB35AD8BAD61A
-B057285DF7A7A81E1AC53C414907DCEB1596807768B2DD6DC3300F93BE70B12D
-7B85FB288CC16456196B23941AA2EE0BE33C560DEA07506457A5F02B5C0E342D
-317055DED4C8C497266003B87C2B779F15033B0335B7768DB8C7E196195242CA
-0F88A303F6AF0AEB31852B6D3B363B4DEA1ABCE3E5328D3F81DF5B95F5D2D04B
-DB8781508BB850B5119E580C524A20877FD642DAC2B63112B4B218CF410FF27A
-59C128D3603B5AFA4578F39CA9F37E4CB4B5CA5B54CED209AAF97D6E5ADCF013
-5DF61BB465314DF0F876545A1D6470A05D725B1E06498FDE2FAAFE335AA1367E
-F4BD4B81F75C255E105538BE9A679553C2535B4FDDBE8065993ABC36ED244B37
-0E3F3EF423181E2D390B8D0F185FA6F568CC8AA7E61BDD861D48FDAF5135B233
-289B9FBA4EDFD177934FA02DB84D812167223AC8AB009624DDFF3B29474BE7CE
-913E9F88960D3EE6B6457EBCA53FD3FB79C0FD03BB233CD3A581D71BBB50DC64
-79A02D3AF6D2A0C1043DF47D5CB8146B2E1D95E6BC5210B2F2BA372FDE53D1B0
-FC99C72D43BE46A6C48C363B1C3C4A04B3EA0C5C3140191F5FBB8D985DD827AA
-3DA5A41A06AB07BC476674E656CC1991115D2CE27339C6BE49242A41F03B6EE8
-F23A394084C343CEEDD24598AAFBE1A4EE510018011890559E23C82FBE651F8A
-9D1F34B29B18FF0F40574CEA65B96C5FBB6EF340838DD1373328C9361FD90B96
-BC386A0DC2B6E07B18F891D8490FF38DE7FFE11AC30B47645C58ADAF22D3966D
-4B029F3AF846EFADC953EC35C00E12B1EB4DEA7E2F8382C1AC27DA639BB79FBF
-964DB7169537705DAF2E49BEDF54D62C9CD1D483EACE63D4921FE9C0FAC455CC
-874519096BFF72F2BABEA46B5723719D5A7C4D04507FA3AAB4199E4AE0DEC5C6
-383103A87B4A6383F415E5751D6C008E26BE50AA44C469EADE59CD0376689DFE
-3E0EC5421104B22814700F73C4E81BBE8789F8B0DAE5A24E89776B50382DA52C
-D45B9FCC27C9ED65221AB1CDB0E6E8F00E6438BD4263EC8D9B476D24C516BA80
-BA4C805C5B44118DC1ABBECDA8F7252844A55E2CBFC7F98CEF161ADBFAE83FB8
-300E7E2D5174854F43AA01D2D4854DA9B652858EAF9FA8015AFA30EE871FEE05
-712136E270EA14D1AF6FEA13E94ECBCB29EB18D19599EEB2A9968745096F6394
-9C531E9D96E94295601778562200B430B68D5CCCFA3DCC78037D5B490C14FDE2
-2FE93AAE188BEFFA832602DC5027B4CD1EE52A6954B4964BDDB34E8551740724
-8415F1AFFD536B5138D9B7DC721CA492EECA8355AB2F1B4305EC4A9C95B5A615
-CED28E98911D99C093EDCC36D4CFE6B64410AE7936F0E1E3FBF58CB773DE1828
-5F147A55B58FCFD290D924D12F9739B26310F924F580676662407ED212FB2F32
-B143B930F693840964AF0EBE9266CD8B401D0BA07EC798F1E1880BE0C1C61B63
-7650AB3A8AD7C594C7A9CEB69C6909C38C7F5AD9368E3410DEF3399AFA358111
-204105049C9BF95FF0FA2A603B2278BA9F719F9E0314BF3FB3EC8947782F262E
-DAA59AF7D28CC2395E2D24B70FE2F0786E97949726BE88FACC46A822359328D6
-D20176556DB3A5280D571A27356423A5D44F83FBD3CA64A03AB9B13A6972EACC
-0135CB7311DD479A9822F78551D4B723556972CF5721F49BD17CD7C9CECCEC67
-B3BC8CA4F7079707AB1366C348AAEDA2B02126E89A720BFCCBA9325E313C8C38
-4B4B6DA1DE88EF3F8D8B069AF17B9DF4FC211352F9BC8F2EDCA7F537373B57AC
-0FAFE2E10C388130FEB6A6E673CC94DEDFD9FD22E8D486784344CCA0BB25E997
-3C57B5162359C6F831F3C50C18
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: PLRoman8-Bold
-%!PS-AdobeFont-1.0: PLRoman8-Bold 1.11
-%%CreationDate: Thu Apr 13 18:00:00 2000
-%%VMusage: 1024 30988
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997
-% ADL: 556 156 0
-%%EndComments
-FontDirectory/PLRoman8-Bold known{/PLRoman8-Bold findfont dup/UniqueID known{dup
-/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-17 dict begin
-/FontInfo 13 dict dup begin
-/version(1.11)readonly def
-/Notice(Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997)readonly def
-/FullName(PLRoman8-Bold)readonly def
-/FamilyName(PLRoman8)readonly def
-/Weight(Bold)readonly def
-/isFixedPitch false def
-/ItalicAngle 0 def
-/UnderlinePosition -117 def
-/UnderlineThickness 54 def
-end readonly def
-/FontName /PLRoman8-Bold def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/StrokeWidth 0 def
-/FontMatrix[0.001 0 0 0.001 0 0]readonly def
-%/UniqueID 0 def
-/FontBBox{-70 -261 1246 937}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0525392EECAC163E584A9104D99AD0BC
-1B1844A0E222653FA481B8809B26A46F4C483A5D7E95816EA6582584156CFEDE
-B994ADCFF4645140E3617E4D7E1B0E4541CB9F562E55829B4DD880AABE2229E9
-4A9FA259A734D29BBA91BA1E2055CBEA4339BCBFF98D32CEFF11F296225CAABA
-DCA10577A5D431B714726C1278D8101ABD1BD8D0BD0174FFF9148F8C61C241D9
-2AD360A28616CB4A0670C1BF105F3D1FFA85450238616E5A0C33EAC0F9CCBDE6
-AC15F1CF2A94043733C8CD06266771C56ED8A3DA9FEC02BF3C2E26FF3BAE2CBD
-FBCB8CE1E8BA45E7C3F8D6DDB1C1C5BDC54883488DA7CC4CD2C05BFDBA771011
-DBA8CF2637698C547BE9EF95591B4E0B4BF322BAE091CDED462DD98A0FEEDD13
-B63EA201AA22586619B9E0F89E8963AA1DEBEBC5FF84827ED982298379501BDF
-B8C460A2DA020F85E62754372D716C35BC979085D5D028A78E6BF0328C4F409B
-9192E5443F6F0A4704FCB17689BB601B980A049B3507ABE7F8BABB2352FFD5D2
-DC0C9E62DA8B6E80F86A4C9C0F03E3F6FD5BC04815A0B1CF153A90701E8D69C9
-32D73148E8CD2AE4B79DB7B34A135AE9FA28BEC8579A8699D66C696ADE507683
-4329BAA902E701CA42717476298C9FF511E8DE1A268DEC768A941E3DF9669D04
-6C697F818EA103F176646D72499CDDCC90EA530A828BBDBEEEF59FADE7248B21
-1FF63B2B858D2D40789EB126C98F5489BBEFDFBF09F285EEFF14AA13715DDF6F
-7034D0EA4F1FB73476024F8769ABEEEF7FA4EFCCA30C35F607F5C12CAB51089E
-2C7C6F4150C4774423E8C99C28166E5FC3BCE52C13F05719FAF20F60E5D15B63
-0ADA5342D0CE252B67A9CCAF247C1A705A84EE6DB91C7C0A0100F1978F245635
-FA140CEF7FB92E22D07071D76B34DBB962CFC90A5084AFA8A975DBB3644ADB10
-37620E73A8012950F693A42136142D77A1741E2895CB2CF6F647E827537F2698
-9BF63286102E4EA6220BEAA1EF3FB862F9AA0FF7F3371CC1F33591F2A81E9478
-84D1E3DD1A8975EE6F7B0BB69266D0FDC747F0F89C2635D595FD984CA77B5C5D
-D25C2852914D3225D07083B0BF8E4F10510C0D2491AB13FCB507AB79FD0421C5
-C06B9D593022C0A0C703A8479904F0256C5A0B12BEF34533C9C6EBBD193EC913
-183B2BE2ADBC924DDE75551EA794895FF697FFF58FC24F8F4074B96C1735036B
-66C5A6AF44E14C485F3DBD0DCAA1D2BA8DB2FAD3A6063907DFBC54DB0C3B8554
-7C61D7E791F0EFFE61FE49DE095377351777C233796E3C3B76493BB9C08D5891
-88CFF8CAC6EEB756CF0ABE5F5A77BD5100F96AFEDFD0228ED63307080927953F
-8BC73DBF1486A8CBBAE3C2A090DBFDB78D3C62F09DB178EB00BBA223AD140645
-B75794C47656E27DBFBF9E5695E704B4AE18EA08ACA6B60CA473B46905057635
-E6502D167CA1053BE9C8A37F18431BE64882149C65F47BDD1671010328FC7FD7
-464D887D7965B8CE22255BE94C6D185D042C297E406CB8FEA4722686F0B1F3D1
-30CB7B6A59454807003F55C42D8258610E443A3D3EEF019E826ED8528FA772F9
-0CD5A59CF0F9525FCD41C0A368A954452FB1AFAF4C19766336E629B65F5ADFA4
-D0C3C442D34EF5E344A819CFACC305F6831226C56160914266B1D28D74185B0E
-0FAC89BECE59F6885F2E1394A596001FAC3C14C4AE3B287732A74624CD1AA642
-CABD334B5FCE8441F56E2FCC3EEAE0959D55D77119128D5486A2B3890E1DBD28
-018ABA72A1442AD6946BC91FECC6BF991DEF9A693800F88FCD01DD8842D53A0E
-6D87E0F2079F816DF768493C7075240C93B644EE1EAC1A1F2711CE3C5B6F7630
-6A7B57F1EA05DE738806354AC06F6330A38533E085E1EF6CC1BDD35A3F6DAAA1
-9C857EBA17FEA216B731233A518B48040D40CBF94EA8E15DF7F0D97F71A4F3E4
-3AB674E1C4AE3F7E57DD385E1C63444E5B8EF4FDB9699B949B759F595899D229
-2619ECE920ACEA03EA27944046811AFD022372C017C1161A5D9974DFEFF4F032
-92F436BCC3CBAC1B766229EC03F717405C6BA98AF61B53AFA57A14B7F2D4815E
-0733979B9FE7F2EBF30D6F43D5A1031F84BD428D30A72C71236573E05AAB9F71
-9D48E54C53FEFD797C9D6CEEF884247A495C8B6F736704478FB265EEDB2C014E
-DC06AF0F99618F7D40617650FD9314E731D92207FFE12AB3DDECBB5F218BBE63
-758374E04BA7A6B3E9C951D8F90287AD8C6485F5339624848692FD811DE08921
-43A3166E8A243C09AD0E674C1D486D4F59FC3F155A19D63A97CBB7B99FF5756A
-44F596F7FDB2249F5029FF35484E94C45FBAD23887ADF1F1F07CEC18C186F3C9
-09FD4316EE5CFB825AB81F98AB45E118E7EEC24B12C968A4DC8F5A07545EE52C
-6BBB76A334615A272924F1868E2AAB61A3C1D0E82B661EA9C1B94B2EAC616248
-3BFC6A074E90F0395AF08BDAD01BC664D35CE925F6F04405595BD5A8A009F16F
-70DB778E6032E3243476B874464269ACA5BF82566FE07660CAE36E35E6CDF134
-E82DE4DCFD2BE250662021E34D75944F3A93D799C3633FBC05451AB907B3E76E
-C0DF833FDB049A03348CDEAB9F513F4251B69782EFCB7BF7D23A5844DB96A32B
-DCE57D5C67D702AEBF0B8E2D333F98F57EEF40E66F956E98933A8C0E3DBB1D00
-989805A5D391A7728D51B18AE0FA5374AD3D78AF2B3F4C6CB32606657ECF51B6
-1ED2737839DB3B83FC3C528DD3B9304F30DA69CA757DF77A57F2EE78A22CE58C
-67244215DE18BCF06B4C2607D10368EAD71325D69BF3460F448A5E38A4D87BD8
-AEE6DF7CBE80059C2A83B08C696A8423FE23278F98D87173A9E686234B6E8B6A
-41A1565DB7CD7B6E984DEE494A7B01B637E77EAF484C238B02138995BDA8F401
-BC2AB317B12C429198C61D6D0DB796E73D1F01A4F48E7D98A9B2B4F0106A7238
-F457195D09FCB4CA2D81A942C37D7258F523002CEFA1CB9EDEBC0FF97EBEEA67
-B0B94F8A355299FBF350DB9CC57CC348B817348347A92520EBABA10C972DA468
-E1D75411661B046544BF2723FF4B45AC1F3C41698192EDAEA808C1FCEEB0A101
-C52F7A0A857FE92008A5DEB59FF71B33DAAED2DEE10380BD00159522AADD72B6
-6B8DFF757DF5A2AC8EB65977F54D3234B52B495A915C91C43CA5E08BB3F88634
-06FB1CC2CF016E6BCB592914E79DEDC7ACB9E0574E8DE0DAF6A12EA013AAADF6
-F1D7076ED71FBE9706E8CDFAB981D03330EE306078B7A2F954E5A230D5975793
-6660D3CB62D4FB676940A2F08D727FA2AEFCBE4AC82DAFEEF86EB672ACE9A64A
-A094FE3697A275D68B3A674D43404E33F99836541F880846106385A467700E14
-FF13B2D5DD4E61176641A01BDB02DD95FCD9E8F7867EECB897301D2FE70F5091
-60C1CB42875A052F4D53D6124E7D7E64030217149D945E58DFF20AE4267D1CF0
-52953745A4D54A253FB2AE3D37E39706B7571AAAED118CE796246940463E2D04
-4358AE67AC7BFC8697CF929C6B47ABCA35F1F7E9AEC0F0BDA1BDA3C46A81CA96
-EC40EA33D43AF106DFF90F450E7B24F7088A5E41311E9B82067883EDC8BCDDDF
-CB6A87C2A885AD457EB21EA14C919CE9F13C2BFED1652493DD64960EF0B77F65
-031C7D4F88A7F87669A117DCB087F1D2BC31824E9572A3F3CD0C1171F118FDC2
-149533BA921D3E005374772DC9A937B9DBBC40F6BB6BFBD9CD7021261D2C8117
-31B526265F1A63525475398013F04B49F67164F032D2F3C2DDC16FD131C7F302
-A2F9FB65ECCCAD46169329B7C59A444976F34F301F2906629B3D30BE4A54C7E4
-77FDD85B8D52A42EB6E9B4B10C0C20C1A175AB640E476814AB3ED796B8189A3F
-739C72975C388195E806E7C824571D4783F11B5F1889192ECBE6DCA069227164
-C2CC7FA6F6974CAA8E8DA1D36DDE0F6D84642CC593FBD38744296B82E44AC1A5
-54E3D03ABC8B3DA3F404CCADA635E1B497C482A2A657E4E6C9C21533B3D1672A
-022D1935DC96866AF1BFFC7A438014B5902A55B0F6CF2F8AE22F37FBD6545D9E
-8FEC766BFD055074C5D637D7CF1805F02C4559E7AD0F0C3E68A9DC74A9D79B2F
-FF0D43D16E0D780DA8251F4D0C298EA47151D9B41FF20364B875ADCBEDB9D8D2
-E139D55D686C7E96E4E59D476FD2FC56FCDBA6777B31BFB424421ED6047D0736
-338A42C2A174C3E0F92DA62475947EE726E1C877B97AE9E1A6649A0CB6953A8D
-B701BF7A8A91680293C1F5DAE96E1A7A9C9012A54077D77F63305D13F623F9B8
-ED4D7FD2F08CEF3916F1EA9CBB74334DEB94DAC8D2D246B81D8EDF863AAB492A
-E57E8EDF86F51C1705B63562D004710A84EAD6E3E6E195CBDAC59C6559093C11
-233AD680967E1EC25734E2F4C6DCA412C2E0A836F88D24D6FE389DDA01FA4306
-90CEC6D8F7061643F30D1874BE32DBF1FA9D3883FADCE79A8521483C2AD47B0A
-CA1E1FA73EA9C4CD1348704810FBF3EA97132DFA64AE2AEA572E8B3C8F56B2AC
-1D5C87E48486591A3C1C4760B0E12B51E1234E945ADBEA4BD8C6953A5C3B4BF2
-D0372D0210175B00375938695CA4A2904943033C1F9036FA76EBDCFA48841DE5
-394BBBFE6F613682D938AB70D416CD39E8562FD546F1E50BFD42D0C60D8E87DA
-E14E79860B37E3E8AACFCAFA98EEE36E181581656DD25A7835DD6BAB3830ED59
-A43AB87815C627822DB3D6E1566AE808D65B12481CDDD1FE7A73DC4D181C5916
-886C28EF3E057C202CAD95C87793D5F78FF22EDE240535D6E3DC2BA4865E3562
-D7A3B0B34414144629AA8E5986E337E7AD09BB07B4671FF09BFAD30292186B7F
-6BD8C29D65B4356C4E2C8E6ED1E2D6B1093F9F3749B84F64B1FD5992C1EF09AE
-2E4E0F5236844C1052D0EBF84B621A37B09C82C73AB92A7451F4AB96F55DA6D3
-5FB7C3A342EC821ADA931C653006BF3BE90ED148B99FE059B9DF5536CCD95377
-E0D3FE9C05F30F995C001D5F190A0BFCC817D5DBC16B44DFEDAC2A39A813FC48
-91B49E7775375100F55E9F16B3DF05B11CFD93731EE7455CCC4ED0ABEF6C73B6
-DADAD2702D31876A1CFCE58D619A66DF8CCC311631985E922540F0D3D5236EA9
-7982C05E30482CFBAB903804529BEFFC802F9800AD9A061C5A9DEFE69400B2EF
-05694742221D464A6661A7F34E6D65CC45A36D5E736F1412AECDD420CD51195E
-AACBEA028E44400CF14E44F283F129D896AC099E3A80CF8CF84F57C0E4BCEADB
-69142DB4E45865796EFC447255A99CCE4EC07AF8CBD2560CC56845D97159BD8B
-8EEE2C388AED3B21C2EB19D38EE7EF00B7FD440C38A1BD8E6A11149D6BA9283C
-269D2E0AB1795DA66CA39727598CDE36A037F2FAFDC119B5449795A6AEDFB0D6
-02DDA6976077056F38E453DACE9E719FD335668D0308E1BDC9C039C5D12C144E
-F074FC348973D42CB83D61BAA2EE3C43062E6959165E9EC2602F42298810713A
-9B31042BB5A1A31266E9604F5428E00C21C1CEF23C264CAA7ED1498203368309
-F97CF308EB489545B7ED76123320FF3E98ED91EB5F18A4F7D911D3EEADD41EB7
-B8921ED1DFEDAAD93A07401077BAEADD59BAB0E23E86CDCE1D9FF33AFA5A22B6
-21455429C82A60188A9CC302686387398B27E1352493EE662FB80E0D2F4448FB
-963304426DADE00CD6E6894AE12715154AE64BF9BE90FCE97C3147008F00F136
-FEF0E8CA99A6CF8AE101D94B52602E22933C091369BC8AA064E0AC4EE68A7C1C
-4309D6BBD6B6043F41C732FD622ED48AE06ECEDC6303F1592B79CE46CA4C8845
-39400BB3DF940EFA1C84D534874007249ADA3E06D08D112D96A5DF0FB3DAC7DC
-B6211E6A24365C3791605F84F39C859B3BE698EAA1ADC90FF68C556ED6A60335
-01F5E1C090E3A641843D4AE30DBBE4C189B5B5F89B0683474C2B05C44EC07ED3
-3B46E63C23D3E8DA5DA36488AAD1C3D83D53A038FA1F23EF76E43D5B088D0A38
-FA8A6BF8B50E61083FD9F8ABB5D85D4C18C17255B9A042CBD9DE2B1953F12988
-BBBF028A9223883F9BB654504DBE5C353EE60A5E033A38DC5393FD4C40408AE7
-49815B5F2755B73B9B5397599CE4A935999B70701E7651148B2CF46FC1B740EE
-3D97E3381F635DEE68AEF01B942C5BD89B956D79982A3403BD54D8D22E4EBB05
-585173AA55CDC6AA48050371B243E1B0966F05D0A82089E2FA3670AA62E81DEF
-656644E81D1BDE643F11B2443FF507770909B0AE054CD40FF05CA14BB428392B
-F935DCD3E32E62A547C003325C8F250AE9758545EB67E078F2697513890EBAE0
-9588F48C0A10B69864BA960D8D626027B44100380B53E4C2F5932B239F9F8C94
-B0782041128675069491EDC6393BFD9BDBC2F4BF31F70D77135241629CA599EA
-7B17C74542892876C5CE297F6C23FB62B6AA682136AB07E51153C93B32CBB0DC
-ED323005754A20A64F3D9E308E4A41F4549DD76E9F2F1D6A2A01676831AEBFD3
-B4171EFDCB28C5442BE496A96D13ED2C4C25E1A873151CF6ED500EF18B733E14
-061C6B3455CD1EDDC5E481B7BFB2614856135A86B878F86765CC77527581AE71
-32C02219E85F3B956F30F3399AFA3592C6701CCCC59E7EC7C5C5CE77F653FDAF
-73BFFA369C29D2ABDACE28F121BB6F8395DBB21EC64F0F69D1C7445D3004D45A
-8F3F541EEAAB3BAE066D98DB760D2FDDFD3D16C84CD797C1810C55505D450256
-DE2B9B1556981C6250ACBD9AEE22844A329FA077387C2319E7C86F65CC173576
-429980C812BD83ECE52D08E83FA9CD37F1BEEECD76E6909031B3B449885969CE
-752ED4874BB76182CF57EF9ABC7FC6A56E92C9795539B579DCFDCD94BDCFFF99
-D6B0566A2F144874F369C67ACDAB40586A33CA01172C1DC4ED397DAAB6937ECB
-C03CE8A8DE781129AF903A2071B32CCD999C06C27A66F8B1306FD73AA6311D73
-262D996D89D49CB5BE569EE0D7BA248DBA2E17C19C92702FDC0E06AFE8835CD1
-CBE3F9C99C3BB40E515FD7B16BA576825A5C05F297A13F5B8976437E10CC2E46
-693D1A4083AAF2B7A46C4E46F54CF6DA89266D1F965DCED45B76E61DF587FA2D
-766F39206C44E5AB89B00A5DE491BC8992BC31C851B3DAAE8B302E79D73A9819
-90A0DB13C2E3338ADD04DBDA9E67FEC445AE2D886E1B38B1F160DF505C6635E5
-C55FF27D8F388FCD81BEADE0FB3708C00A4BDE339FC8B00BD2926B9A2BA6A300
-D5A60076F863CB74628D8DE0237439F1B7C07CDBB2AE6B759E774FEC3F2CF6D0
-C964CB8D35E85540B97BAC732278341BF05B7FB7F927C13BF67EC38B752B05BF
-0085886EB77492E76C28E88692D219E16879EB0E41C9020ABE935D35B465EADE
-DB47C90FE2589CC4F1589D571180A8A4782AE1E9532FE5FF83AFBFC657B34121
-A995317A6D17310C8D714C5E590A98CEC6898DA5055F9BC4C88403B63255CC9D
-7B64FE2CD0CF3EA724201E9DF5271C9A5273D75452E8D7EC353E7D81E92D04A6
-4871A8744457EC29CE48B19D3804120D21DFA6034A14B252C7688B62F09861CA
-7BB9F160120DF141893AD510C29283CF8C5625627487584F5D9C80390F8CC18E
-380BEC846083E33344F425468DD7C19ECFFF0D16B079485659EA94578B3CE9C9
-2D3D497324077A727EF39F893C9B3740FE2E9D8DBE9CB4BC244D9DA6259DCC3E
-5A2E64AEE6B2FC3A3E5AC524756CBB7D7854CFAD833C0E4B3D2A68B2366102AB
-04094D88D3F18C3AAE9A6FBDFD2C2EAD99224C88F82E3220BB28E676941F818C
-D45F0FB2F55C4B77AED5A57BEEEB868046CCEB6DF1687AB3C6014940AFB1A6FE
-04844DDDB5D5A1A2EA65B6C789621A07F8AF76573E7BA2BDC85C893D5F4B3EF1
-014A08B5705B5F8F86CAB5020D1ED1FD9ACAB966CE06B883E8D1DED7CA22EB4C
-6799E68CFDB502EC670D15B0A1CF50CFDC11E8869C21CCA790046C2773626A1E
-DC7B140E2865F915F6AEB7EFACCE030B48991EFB54A88CED8FAABD94BC7D4F34
-82B0669F0885D1EA3DBFCD53064B70371658095EA7215574250373D8383DF962
-8957602E4F8D8E0B35BA9B0D4823485953B3CD3EF9D5B561D8E4B211C4FBE9D0
-A7349AB865B5A54329A6E5EB809F959C46437306DE6CBB953D59BC1D0619E23F
-3A9AF33258C86AFB2F73E2B0C49F62AD946AA8259A8B1D882552729A6847D7A4
-F886B9EA56ECAF341FDECB9490DFB7AFA506A3FA669B69FD3C31C7E4DEB288A5
-7D94B05643000E9B8D8A39D6B9EB08AE2741F2794C10799B06FE4359A20D42BA
-8E313C84F7694E7D9735621ACF85D920A9B6E343CC2A8FDA44FCF69B9F4B04D0
-1DC6057DBFC2B0085C29A95EB03DA57125B658AFB0BB255792D6D7039D1FEA75
-C28531E7280F26F57845D24204611DE9ED7854B7108D3C1511C95A9D188B89D4
-E33E0CA5168252B138217E94C52C3E21141C6593A1B8086692DD9F4B8FC20B85
-1B1CB51A7D983EEB01DE0AB2536A6DE82E8DE2ED92346B5918BC5735835437F8
-6CDD43B26AFE3816A6F76087D3DD7A9892460E6B6A09E5CB823BC5B7B93CCD6D
-4F2407A6573408317F15803ABC8777163DD6E1BBE517F927C34B1F3249863949
-1AB1A1CB0C4E894BCDE243A97EF9EB9C673D4EA0F58B2B11ECD0C7F700A5BEBC
-2404C7C876C281E433DA9A039F645549B32A224AAEEB83C49921E0BFC0A3B66B
-FBEE976F069D256717A40D4950FBBBD20C626217A45A4B81E98B67D920CF6596
-26B51D88373B619BC2ED5104DB78936B2F50E449E68FBB05CDAE4D7A5BCE7561
-669EDCF29419310D9EC11917D3D726F2E736A78CAE3D1B2564F7A5C35E21CEE3
-5255268AB1065F2929C07E161728190859B2C076A8411B42EDB079468F08130F
-F0C8C9E118926FCC6AA7E6375997266691C1E08BD0AEC4036AA977995A2D6889
-861ED8B5A653D68EFFFBA64D968E675949F1A7886969D17E57EA780B1BDAEDC1
-00063E0F0CA5DFA7A88EF38810F06D7C6E504512FC8AD2A626AEC53FB6FBBE49
-2ADC8189708529FF7B5DCF6C3B81C4183FCE0FD0C7F6B0713475C955C756C7A7
-366E444E1804B5A4823BA87A965BD2724F9001D0758578128A95D232F3CBC38C
-F3B76B92097A94B6E52792CE81A458755AA6246DEE8566566A1F5E7C9C458001
-22D55D4A575A91CAAC7F6AC6CAC1A04D0EE2AFE20BCF8191C0F7F147A93DD114
-F7760ACB25BE24945AC1FEA340C1F0051D0A70227B35B4B35E7C7A8C976D5380
-0506923F1FA5CB0CBD9F968D068DBF528C83F7023AB1AAB55A523B4D711B0DD5
-9987AF3B59B8A361F8F2D12E639FF368D6C892FD7CFDB8A72E327A4391E45DC6
-C5105F51DE862F93B03A24C9418E59D019445473A72AF9870D32D5DF7D83683D
-FEB4BDCCD30BAF6B590D49CF9D875B309A944A99F32AD738B618A634D4E46B69
-2F5431B34B0B08C9D6D400948E6AA7120830EB4B34B59FDA0B150D035C040E6E
-4C000633E5954C2944481154D16BB28F88CC5E36842220F4943B0272AC32A322
-7A281EC4DB95F4A9A493E3DD868DCA5868184C4CB4A16D0874C9B8B9EB48D724
-A498F77B33BDC6C51B6791F9B47C6A95437F537591F5FBE87F7FD7BC7005EEA3
-9A649CF301F783F3A79E6944F6C25D39708C553B117B05C53FA39EF76B2EB828
-13C8D18231BCAA29629EF9E81B0DFC6F84CE4886F48588F399E21A1EC805DAB3
-
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: PLTypewriter8-Regular
-%!PS-AdobeFont-1.0: PLTypewriter8-Regular 1.11
-%%CreationDate: Thu Apr 13 18:00:00 2000
-%%VMusage: 1024 30414
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997
-% ADL: 489 178 0
-%%EndComments
-FontDirectory/PLTypewriter8-Regular known{/PLTypewriter8-Regular findfont dup/UniqueID known{dup
-/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-17 dict begin
-/FontInfo 13 dict dup begin
-/version(1.11)readonly def
-/Notice(Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997)readonly def
-/FullName(PLTypewriter8-Regular)readonly def
-/FamilyName(PLTypewriter8)readonly def
-/Weight(Normal)readonly def
-/isFixedPitch true def
-/ItalicAngle 0 def
-/UnderlinePosition -133 def
-/UnderlineThickness 61 def
-end readonly def
-/FontName /PLTypewriter8-Regular def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/StrokeWidth 0 def
-/FontMatrix[0.001 0 0 0.001 0 0]readonly def
-%/UniqueID 0 def
-/FontBBox{-5 -232 545 841}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0525392EECAC163E584A9104D99AD0BC
-1B1844A0E222653FA481B8809B26A46F4C483A5D7E95816EA6582584156CFEDE
-B994ADCFF4645140E3617E4D7E1B0E4541CB9F562E55829B4DD880AABE2229E9
-4A9FA259A734D29BBA91BA1E2055CBEA4339BCBFF98D32CEFF11F296225CAABA
-DCA10577A5D431B714726C1278D8101ABD1BD8D0BD0174FFF9148F8C61C241D9
-2AD360A28616CB4A0670C1BF105BF4659ADEAF285B288B8C45EBB28817B16FD4
-E84AAACE8EEE3FF662C0A331845CF93764AC3D89DBD552B91A1E9B652CF90846
-0DB65CABC15CD4439AE5B5277F193D525319F51C7E4782F09759A87E1B37A013
-C4C25F5C7C43490B50CCE7B9C9DDB33861BF2A2B755FC0E3526A02B7C2134177
-0EE0DF579B43A3965DAF9548EF0E6A5E88A265DD968CEEF0372F7433A5575690
-DB0EB58EEB024104A2B925CD1B8C8971D80232693C6E616E78306DDC79494FD6
-F4CF9A1BE8B2478B8C2073F3DFB2AC1B08A9F95E5A6129BF96DD6F356E3CFB10
-6CD4681B468893DCDD5049B6664BC42200513B9CADB615879E41D6190AA3A0DA
-1C06F42C9AA4FDAFFC058871FF664D81B7FF38800C5754EB41D1244C5E974D96
-75B6FFF16F3C96BD9BE14FF20C785A6F46E7AB9DA0A6025784AFDAA74E9E69FA
-C88CAE97BD8239E974438E141CB19E762A1FDB01DA5EA72FC2C4A95C05EDB8A7
-B96E93483B35288221D856957449AA4AF7FA6963E77ACEBC40FC0F4228F77FFC
-CA2F2F7CAFD93CA182B25CD0F7F8387DD8CA44A544BEE210382DB0321D08CED2
-1EE48F9FC2C35D851EE98AD3863A0A6C40428D521AC56BD90E5D14B07E2D70F0
-84A5A74282463E426240BB2AECAF921477FCD299B2E5EA7AE199713BD4573977
-97B1F5E1DF730CF36E7E0DA7F9805EBCA7E545DC35A60B9C93D1A9DBDF00700F
-D1893286ADE1BC40550DBD475801848196FF59D705A0D83B4647C244630A285F
-751DAF6D51E9B9D5CB3E7541626E069F54C8A0818C4D8691E084B8B2BC1DE7C5
-7D2992EB24625547D67BD112B59BA801D75428F331EB561A6F257C8BC677E44A
-3629E20B6B00AB8DD9359F982E1B59361D233CED47B7985A34DE5861E0AE858C
-398D95179E007A6CFE211D8D3BD07A191CC377126A41EA96394170A5BF25824F
-7EAC28280B1FD9CBECFC7CE7D76F3A09B3BF227F67DF57D19B3F873D1E7E46FB
-042B8425F182A1ED39553AF1119CB14C388EAB56D36EC43623539BAE1C2022B8
-3E3269E878E4DABE11BCA251600788A06FE5A8EFD273C02B6815F111514C2BB2
-1B16C7E4F8EEE21D4959D2B78540E1566B5CEA3A7F4143DCAF0C973C32B448B5
-8F1851EC935A0A0CB753F67FCAD925FFA67EBD994DA888B66526C76E1442E95D
-FD76D944D13FFEE76B06B2243B93A714BFADD14A52A3C56D45CA8B4F0E073865
-F3309041EDE5D2768687CC471AED42F2886C1A3AE9E544B5CDB0AED33204093B
-570CA37A1D626A0D50E4E66FA2EBA88294BC72B991CD58E1D9531AABC9DE7DF9
-163FFF77B46319A796AD9178781F0E51C7EF4F7A449D9C8AA7783653A7C6BBEC
-CA0FE1D38F417818F37A3A070EBFE95EA7DB361DDD6001FE4B7368A1F1A012D2
-896DFBD327142268C81D827F8AC87AC0DF39B1E0EBAAC34D6E17090F43C615CF
-AF7439D2C6E8BF87B0383B6F7AE56DC9264635E2188986E0AEBCC298331EF89D
-F1DB61968812291C5BD83579B55601659E8374CBEC1D71A935C8D6761F3CDD58
-F8B8E447555557A7961C86F877E0D837CAB76BCAB53B32CC96206C18B1F1E45C
-30E63E42686F7F60305F5F135461F8AB4E1A5B5CEC69FEB1914AAB7AC7447F29
-30362DD09229C80137E2DCFC1D586DCEE2DAA656D1555DA1488F1F17F4CD7A08
-396913FB7265FF4F5796CAE1DD7047D46C72420DE5C1EA962F618B18A3DBDF7B
-E1566BDF90F502A700E00BF19971469BF22120B8F798205B3CDAE20E03994784
-712355A46936E8C7FC84527E7D439BC235430FE2C6D0C98D7AF768B0F4285C4F
-A2CF91CF95EB6C4616704AC458155065BE7F7633423E4283CA25D06CE7826FF3
-DD99BB594BA35798649DEA27F65FF89E3AC674408818CC72602AC5BAA57C00F2
-4B8940BFA717354350E40BF722188F38CE9D46B2ABC0413F6782048119C7B3BB
-00C482B190C7FEB04EE0C4F936D673FF29BE91E000ED4AE191931633CAAD57CF
-2076E8A43DD4B42790D389B16E1FBCF04E0C4EC39D7982084FB63865B81ECA05
-A80E40C0DA667129F87745EEF4660FB56D9F92BAF993C4A1F9918298D2DA853E
-94734B26CA503A277634E4192DC17787C412E7273DDE3F70DA94BF8D08C5A921
-6D29E2CF0BD6D47B45C1DE6D1C0F2EF0F0A0569A8BA8389597F0617364303EAF
-057DCAAA45CA93BA7CB71BBA2F3D6AED42553105A5C120308AD6E4B905367A51
-96F5A334775804EF2047F7F8BECEB82913736130C521620B2D0C877D96C24DA3
-DAA51DA0C97290306F2B40E28DCDBF18E72B17D6C2F443F2718C25440586C64F
-328339EED2EEA79229F7D6AA63EDCAC14D0E7609CA2C1325A2F5E66E9CD987C0
-4095F0034DD3BD95E0FDCED4E2B4C542E8DE10296260304F2DFAD6EBE48CC19C
-34839E7B1DA20F7E26BC52C73DBFB67111A6BA5680BBDB2E202C5641DE56ACA6
-72B233D05F45F0AAB98FF5387F0F57089A2D575B2659F0EAE5FE109377B949DC
-F7A7CD8B56AB4BAD106CD589113ED0ED88E4562C1AA4B411796D217E22BD3373
-C972885EC11829358C1583255E15BAE9ACEC391B579C16BF069302FE49157850
-C07ABAB3222956D475D6241EFE4E186C1F6147D7607A45398FA21F25E7A1E529
-2523B5C5A70AB68F0E82288384134272F550C045B9FCC0F5DFB46C9FF7436B00
-26DC732ECA0A51437AE3F14C4CF1CE9A372900526B412117FA0C16776770FF8C
-6758AF06F4E4291B21347541CBBC63FC3048F27D9C4C9369E0FF17C243C8725D
-4177FC4E030950F86B944EF7F6468A1273BA67845FC46D7C43D38CCAD33A0225
-1EEDA8600201AFC252AA5812AA5072BE796574CE2C9A985FDFBD3E2B876BE576
-710C393A8356649F386E1979A6F7EBB8CC911A0345F33273203BC909CEA33A2D
-4B68B92DF8431F441E8603E1B735366BDEA64084E2039F6F689D1D1AEFD7CE0E
-AF2EC676BF771F5B9316AFD5C2AED1F9B71F55A5D5E997CEADB3435EB9BE3CE7
-2605076331FDB634340EB236626F0EE54F1DB5B3628E247CF976B6AFE25DAF40
-3311F039C6561DAEBF46AD62DB6E27933E03BB118A00D0F025F0A14EBAFB5897
-7B835708E9D552067650A999C62F6C26F98370DAE50451FC90F48753DAF686F3
-642E6E7A209CA9617468EEA88155D181FAD328163D315EB92F8E42446275F5A6
-2376530BDEB66C20F6AA24B51A02AEBEF322648F56EA12F46DF6A22B590B9F0F
-AAD50D044E12428A74D03BFD927A376A70A50816CC70D50FB51BE1161FC30F6C
-059EB4E54EE1ADAC62B7362B8CC7D7E6C18C3EA533285B7E62617DB6523E629B
-39FDA591442B82FBABDEBF5DD307FD5FE881F99944982823409EC0269BD33DD9
-4B412A8D349640AFBBE5F42363EF87ECFBB07FD376BD2C1A641459EA2C6ABED7
-0CF63CDD5FE7231C05A3020749339681BE57B4CD50903AE0459070B2E1CBDEA4
-02066DFAC37A4B06C8D2CFE0B88F287C3FED26A115C2173238A8C843BF252705
-3FA78840C66160E0E099D4F50B9B0756B0C75BC7DC06B034D0EF5C55E86C0A7A
-3AFBFE040101F5F3E2EFCFDF11D52E8BE37297EE576202FD04008079F09BB2FB
-82B1D1E2E078E4D42F8C9ED1C9D6B0EA1CB656E493908FC60CDC49BDA893459C
-EC2F7068E9336C351E276A37D7EAD511A3BC741690961339CD650B2CEBB80EB6
-8DBC5D82F253F83F62958034C6C1590AD32A8EDB9588B3DDA9D5744616A43CBC
-56B00F822F7AE0AC4005DC811EBC418E6F0D0BA80CB2062F319454FD0EEE07E1
-55DBBAFABC7790789ED0C3E2E2237AC3FFB62638BC2BD4B3CDF1DCD2F4F7A072
-0503D7161B7EF3264E153925BAEFE64761F5EBA2915DAF3D8379BBEE93C7ADE7
-21409B093C1927BF03F3B5EBA369EEC9DEB81AC4B59F8C8A49FB435D4620E8A2
-008A02EC5681D000A8EBB023F0EF15AE3F6D91CA26515A86F5B9D008786002CB
-B1EE977C88AE260A1D2E428520C8811D02A0A094F845FF4A109BF1A5B3E4F822
-D84FF85A7AFAED62A69684C2DEC40609D994CC7847064A18E9F4B13BD4CA03F2
-42DF0F81E34F138B8A76AC6C4A8FFECCA09AE8210DC0157687AA55F982E7F97C
-2B2459661177FC792403F181E7C0131D379A49B2C7649F51FD803890EC88A5EA
-75D82CF49C948544456D6323286CEB2539DDE7A73364AB352763C407C0F09DC3
-F3022EF6347C31A53640E45FADCBE33FE5F40AC5A42258DC11796E8F834E7FCC
-4C523D95207B36E865797879DD5D854A04EB3F5AF5E709F26CD9C484E3C56D49
-78D17EEB944C905C0FB4E7F592C93535C26977C3BC6B9CB149F3725C894669FF
-44C8BDC92CC29C5B7F2DDD6DD5104E04E810338E7B485BDE7BCF903F734DD7CB
-5C9B7DBCD5ADF9264A60D166F0211390A48B60413102DE03A69C33515BF9C595
-EFEC75E06F07B35273CDCE50516A57F191028439EC8E5B8124192D43A47EEF26
-8AA1B135AC4F442444A67A855D1C96EC73E306DFAE22973DEF8FF548AF36F41E
-219F071A8126A9DF8158DF67183BC133AA81F2082FBDA1525D000067FFE55783
-E17EDFB171D6AD67DEA1649F54431D42B663F7868151FE6102F9CCC90D4FD2A0
-931193F10D34CCEB45D5F2337EAB4F70211F994C0737897477BA5BFECD0802B0
-86594E2D64281DBE9D61FF6706E8D5A4A955D3A423DACE1AB5B13A4DEEF2E9A1
-36BABC8E1328AB11B4B26222A6F4169D9ED91D60D4F8C46C16C745B58752D394
-15CCA9C948A3665E31FBDF35035E4B79D216D2A2E10837B4D590E00464AEA544
-FD607E476804BFA21D553A9A3B6E29937F52FEDF5BCBAEEA8FF205D91E61D6FB
-F0894C659A61F005C6FCE1A0E970036117F50BEF1DDDBC2AD2B526C65E1A4E98
-BB4EFAB5F880FF2492A0FD1A321D392B6590F33779183066983F1B67526D6089
-6E706D9DA2C2E4289EDB0205C94E76DF309E19377297C58FBEC02B0424B56DD3
-7AC73B7D957BF9CE3B0999EF24263FA13A3DC4FAE0E34ED9BB413501394C01D7
-3557DC869EA0D45CDD151E01EA0F5D6ACEC38C3BB28D26B8F817C641C4DC2B64
-A89E0D6A283C98929C675D9735BBF8799A87D3987420F014A0A2B1B15A104121
-6988DE7335FA7130D761D45E9F9CAA56046AD1CE245C969AA0F257BFF37ADD69
-89E85FCA26A24EF31C4375A2809CC5ED835EB1AECF35AB8ED9C07D27DA60451F
-2CFF04B9C2ED3225AFDFED29C110AEED350F45EB766CE005561141B3076B162B
-5B0DEB09713CDA59AA7ABDF6A54B35F6010FEDEF6C34FAC4077EF07FD0FC8962
-530A98376BD26C39075D9EC1A987BC99B27BB61B4A077FADD338C2A01580D84E
-0135EED6CD280ED033AD04799EB9F13AD2F4373BDA157D2389CF1D71F65EA74C
-B0A90A62A05E0E6853A89537F380C2FB287D7458FCF8C5301D4633D93064D975
-906ED3948EEA7CDCA298C41A6F679848AEB924DF95B58D8DA93DD0E43634791D
-B7B31DB298B7E78F839ED8D858AD4C77BACED05E5DD0C717505475857A47A977
-CFDC3FAB4954286AD4115B409DDFFEE2757E3B3C622CC6935DA0C4EBE6E73DBA
-9E508070C5EE9E91EACEFAFF2D8B6BF15794A552055E3B2E9707A0C61D904E41
-B9B0B901CC8489414DEF5E701BDC76E7B9700EBBB54DEAF0039BFD9D975A0C53
-23A575E10783F738A69564D8C4D3DE3B27BF408FF68EDBBA8148EA7FEBCF1093
-41488F906450AD70892A75ACEA874898A1893291A97827D2AF45C8379364325D
-D8DC1AE11DD1E3F0088AEB39EE217541A4C17DF1A012D2896DFBD32EE1A8844F
-5EA592BFA0F8530A17935D1E17DC0C1FAF30A7C463EB45F0D1798271E583290B
-0195489A5ED95EB8E3733A3BA2F98CD9C937C36603B7F3357786F66BE72851EC
-C43D94B484700D72CE5B239CB06EF050913C84520BBC0DD71A5ED6AB07863F84
-5D07F03C217FFD7A58EA0C7A398BCA6EF0DC03DF19A3B7F0621E5DF8F48C433C
-5CA5EF5AAC63F57DE0552ADA3E14BC9A225A7A06271CD2A35B031DA95C0CD59F
-19CAAE0B2173E3498FB7D0594BE5C1C51FF11BC7660627C309B251D45D787512
-8814A1B75DD571FF042DFD6A009817A28C281C3E1974EF64505EAEE437E10F0C
-446F2AADC2AFADBF3F607C7C93DF8C301739E51DD451D8AA55F085706C278C5E
-1981EC64A5A3157D7221A45C95F7E64231E58015863310F60AA52F893F9E0A8D
-7C22D8D3DC349EE4B9BEEACBE36A6DA23FB3E8BE62FBEA68C93884A25FC2EF78
-FF074A7B458B16FC14050FFD4C8F2AF68FD0E13011CC3011A88576B8430B4A72
-8F254E9C04A8F1FA82E223319B624D546799A137A61DB960A3746B2BBA04956B
-86F9B706370053CD173E9D3D2261AA9B3F73296995CD0398C35E5E008CE46E03
-4B3F80AD2AD5D46C478AC54EA771DB2E116B5F3D795D8EB4965FEA812297011C
-EF1C2764D61BF8F9E244474B07910763C27010AA86EA4B7F6B1B609DC99F0970
-D73EBD25676A2743F442E4D7193F90BC0CB3045FFD66D27ACDDDF6844EE95C8F
-00645E9CF2C3A71C1499CEF50F2E70E256AB6AB6592D605E873EF375665DFD55
-2665499DA042C5A95A254853EDE7EA1D4886861F7462E61A0C068124A89F89C6
-62F872C866C7A9878969095404E84D2420904CE81614809D97B4B88FADC24F80
-974B48D8FC563ED82DD7C0F29D35DE34A5C877A7242EA8814BD8504C65F2182A
-4F50833FE84E224696BF32270E8F67664170E613506B72390D0FEFD2B476E5DC
-9EC3DDB6310B59817ABDE32A3EE76BE0B8A3520D7A8D41D16D4A3E36D597C7EF
-86102A0AED5B0CDF3872DD27DFE5E285F8C7EB1331FA15A73709AC2C7FC1F5E9
-5F94BE63D6C28148250AB67AD6A45BD188255D5A783B32B5A6F76E0435095678
-386F97F6A459467A25F2E4A55724FED24FC2F8852D3935955D9934F923793DC8
-C963116DC5A3531FEFD7C5B014F39EAF0D7FA4DA1316C308D33B21BDA87C1A98
-1C720790A9C991F318764F19E9835FF8E82FC677217C210DA1DA5CA989C9A0A1
-67813257F9E37202DFF04A22E5AE26375A3B2CCD6F934361CA0D77F47A7E2119
-C1009E2ED2540C5E635C5BED74DE76E48E06E6CC926E03DA745316CF48850271
-71A5258697AF20F1314EEAE7564CBDDB40C97652C1697D2BAD5DADF0C1A92F7A
-DA6F3100F29C864BAC5DEC9D29C4575F7FBFA39A86BF16ED2466D8DD2EA2E80F
-589B3D0F108E530CF19D665AB209ED3EBB7280DA88C7345730E8184BFC9EEE4D
-9FE376D7825CAB14AA924CE621CE0B2988A9B0EFE7FC3E279A4429B2939059F4
-B4ACDE2A650BDB5CC9D5EDE1495155DEE2C89E1D3383D2DD1B6292B7E21C27CB
-7B049D1773BB0EDE89B977122D3F26873231FE69504FC0649FAFE3A951A6CBE1
-B23CD348F54FFC2A14A682573428FE006FE3F5CF538761B57C9C44F436A457B7
-CDD95BF3E6515958D80EE7A4F522507421DD6C9353BE1058FF7075573BE448E6
-FE375870F4820113C592E7080C797D60E3942E7913F0F41394DD01524B342881
-E852CBF50A9DD891830B3F01552C5F73CD7B30B5D459A86CA5817830AC8A29F7
-2B012B75109F5C3EF03D8A3735EBCF71EBDD6930043A3C643A6C32AE3CE9BCC4
-85CC5D3239C3736B16542980AF0FD4D413DB8EA31A431CF3879574BED7345763
-B25155ECE30DDA73A32C390177AE0796710AEABAA07E36BF91FF2BE61055CE45
-A3CDA0B1517F1DAAF840012EFAEAFD5632B370AE8955FBC699FC847FFBFDCDA5
-C1AFBE3C28EFAE4B76D065623775693E0F3E49E3BBA089C8E19C23606AC75631
-E9441EA26E2188147BBA8F70A7D7A5A77E157C651E556EBAA6474EAD3A6188A2
-DA05BAD2DE0ACC02B8ADF47401F8A55BB73B29F727ABBEEBCCA3DD33DE32C90A
-2546C090ECD872C48AB4BF001752E079D2065D9B7D8C2AF27B2546D995629784
-10572FD2E0F7DD562FAF98506FA0A2186A65E1F7427482E42145649903A220DD
-FACBA5A39A5309459035396E4E94B3BC031F24E8A43F0731EB6D10A3C1BCCF7D
-E243728C87C7C96516574D26B0B7F5A52403137483EB24731126502CC6AF65E4
-21861F92C749EC695084E897679A1D09E7C4979D6FDDEDC084737B4D8235B053
-2F0C9447D871D68AF75FE7C4D24754AE69C5A0CF0A56B288F6278D34B3DA4A62
-02D377C85DC513FB5FCE978189EACD38403BF6113933188796D8A4AFD80D2300
-A67CA6CFEF470051C6D10F9FC88148B4248784988E2158F33615341EAC94E61A
-5557C7530B5AC1B657C3BB2BBCF10FBDC0BE74AD2E8AE6D170A3787578FBBE56
-B646D229B2E148E351A63DD8460DEB8FC4CE4F9BE1E94D4A4D6FB049AFDBE1DE
-F666C14EE422C36FD17FBCBCC6ED253E29CB3BF1374422CB313853E14748BFF1
-53D14F913213FC416951EBB43CC03F854D0A45A4A9C821415D9D121966AA4CD6
-31C61065CA780CE9A649CE076161278E8AEC8E4A609C147AE7BDDAA18A31C629
-0C876ACE023566656DE99C8DD328A3CB3F59C1311A1A870FFC9399F87D391830
-13BE512EEED0D64EC9D62E85D42BFFD334BFA5DEDB60ADDBC3349FEE1A1204F5
-64D32B1E47489F91C6651A29B8628F33FED3EBC94F41A68C19FF670B7E847BF3
-14D7B208C9AE11C70595C8198CC04A5EA4FF63763A313DFC80E922A6E9E93228
-5287C3AF97002FE3BCD9479D77856FA941F152CAA9227C44F1B39B60A159223D
-0BF3A3C7921F47CC03240186432EA6675326AF7ED0E7034FE0395EE0E4C8EF10
-E60B2F5B3039BF6D022875BB277FD8633BD1F7D69E3F0ECF51B70C9F79A3E8E6
-488704F6D542DDEAD58934B8C9F894AD07C295CA6B866E436A9743BF070D8563
-E19B7C08BF709FE9C5B6D51F9767EB89239985717EF84B341F6EDC288E441482
-48DE53A7D1BAB7FA350C8593FB8FDEF73BC274B65EA08846E632CE0C60CC7F16
-ADFA60E6653103BF10422F0075B496C585C7EA4D4352FAB75ACEE263BADCF6F9
-685591D040EA6EF2F860C23E9E27D70C0BC4BDFE33186B4D160812207091ABFD
-250125F39A7A3523F57EFA2D7917653D743EE04489ED6317AA5345C3B2781902
-7A3A34E56A50009A8764F9539ECF7203CEE399698A49E1FBF816243BA11159D6
-03611ECEABFC83489227E8F58A94FD5E4061CD340BA09635BDA9183B36CA2A9B
-6119D7E5C2E55C82ED7A700772FCA980B8B95899C9C0E0AED713F04B18AA0C86
-0E00A184F14699C7AA23BA98A9B63DEDEB61826EFE3D65D5BC7A271618E9C68F
-91297E07FCFBA5E244A20E27AAB110135F538A3AE88EA6A15FD2D150E6E9EA97
-03AB24F289049B952E80E28017623E6DEC899E4E9929C668A1F8E600BC62D9D6
-C520DAA727C85C35CA0D143AD7D555615D2BF15B25BED1F8B0B19C0A4F982514
-CCC24D25D5E5DA979BE412A17E89CA231836FBDBF9F20EF5A4DCCB4EEBB22D91
-88736383A898B0C9B0D6A2EDD43CC1D15143FB8348646A34FC8C88262CF69B46
-F4C60D1AFFFEF4F6F1B008F46F1581BFD75A8F3452090D88F9DD2C8B71970FB3
-F77DD24ED084CCE11F587DBEA211BCC08739ADF1FF013BE242CE5197CD4E1E88
-69C1B9ADD4AF06FBCF316E3EF577DD728B074F13D2D36727CE498593617FFB07
-D4992BEC67799540E0A435B286027DC36F49CE3A0478839F2127DC4AA7289AD1
-680396D0C5935D3DC5582E7A8C6E7441AD77E332BBCF11EA2D9F5B98920A9B9A
-F042877D3D6B8908C9033A1E95F5F8A1D36201E233D7B49853910A59DA98B41D
-CA3A245A829395D38B9CB7717C2F2FA5D1E334B78CF52DBF6EF8F389B9C32DDA
-88EF621E3F8D25BBBC544C48EC89F3B799FC5FC1EEED325FE8AF57981321B9DF
-605565A2103A1331F8130DFBB446FEF44B5A3B8F51BA6A9EF8569954BE283FF0
-6CA7398BA4E94CF911E29C5BBD155449877263E8C348FFFEB953A6669194D489
-801B196ED4A4D09D5665D19185FBAAAC42A6B7F1CED08821977D671F820CD8E1
-1B048EC8C8F7706F7026124B2132E7EDCA20DA643CEB0ED271EF787F63F45751
-71DA1303BA5194B63EA9837CEAF441CAC7BE73129551A5EF0FD3EA2BEE24C866
-4FF43748792CB89A5777AF5968FA716C3A0B2C307341FF0752FCCF88558D837A
-3F803F870C88B1971E84AE575DFF2BB81C97E9900CECFD4FEB93F67D42AC8D5D
-2DC5B2A044C90C31167A11C43DDB568EF592E9DA606B695F4C59418914FFDFCD
-DDAFC55B36051B0EAEBADF8713489E46C0D94B3911FF6BC967EEF7099F8F2094
-E1BD2DA0C5C1CC24199790F05A6182C0D83D245932DAE9FE5DD1F6ECFE77948C
-B97C5DD2A61346B1C3592D42BB2FDD14652267A1D399B723518AAE7617042157
-35B30783B6F9F6C059CF1A7B3577A727E52A1BB0643D7C0BF67205BE4F9090A9
-4062BA511DA13FA80C389947E0F0222D29794B681DCD02070111BFD5E8E3AD79
-06AFDB28BDD7ED3FE5B86BEB27F94F7C68BD6D8D373EB6C03106A34F9B6DB854
-216C6DDFEE7F7642A33AE5CBFB043542EEAFECB6562995578C5BFBB15B6A9235
-0E85BCCC74F7202493510425674C34FF7150D22A8FF7418B1789C5A7F8B2444B
-B1056D574DF0F6EC2DA281D13C61CAE602135D72426BD0C10B3554B9CCA9E1D4
-CFCC6B1AC5AC072CEA763BBA2BF91679112A47C740E21AD18A43847D2338E3F0
-8F685971CC0199B0E8F68A9BBCD1E5AE213CE21516D94CF159627C60A60BC1C7
-2938D70601E5D0391DBB1DFE8D8BF2E7B9FEDEBAD7E245B1CC70BF69A394EC0D
-C86F1D3A4BD9F0B7E0B238A258D61F0FD05291E77CE35AA11FB2694644494B75
-3E12679F14B0E5D804DDA98D3EF39F1CC64FD3ABF464A75BF1F4D5D0E379D340
-6A452EF024D21DBF303F4EFFE269941913DCF742964A2564F44296E321EABD95
-DBD8CD1DCC3603CE1DFA14DFD5F667348C85DDD8F7CF714364CFEA703CAAF786
-152DB61A034CB4409EE8AF81B13BD45F56891CF4B7E41257F04777C9B6166AF9
-BFC16918A7ED6B226151E1888295585D8CB5FE3BE97D9FD776E8BDA02ACBEB51
-4C473F30E82243A2456F80A21894208C5DF2EAB207C5C8A563DE6CA07B436232
-7F94C0B973BE05175B316FD8EA4389968A94C978CFEDEE8FB2190E191E921521
-A4170000B5580A3FEB81A52D2AFD9330931DCA4594B784259FAF2631B34FE0CB
-7B172DA962E55C2D6D0AF34A62E8F651BA9290699FC59B3D2D6F7F081D5E706A
-A6AD5E2BF9B7BE48BD9BC51D61E2FFEEEBE997B7347ECAF56591AF9BFF5229C2
-C80B64E30DBD1985524FAC26656968042A5801ACEA877D3607F0CACBF35E24FA
-5D1C113A04A67040C66351DE85F00892C88B3F789DCE9A9F36973E17900E4D77
-ED73F6778772868CE46933A67E3C2ECE270481D074949436AA6A94E0C3580377
-4283508E7C1B0A47D617685B02579C0C5AB29D35E34AB17565A1A105340F53C3
-350AB96B5FAEE89458E00CF4F48F691DA405B49F4D5152E57EE782667BD2C06A
-68AAAF5358F07E5348D4DC98AA2E930BE03B13E936B44C29A4E70B6860AA9ABE
-A8C80D9ED9F86395F3AAEF21FA579432250A08E7EE1627AC0F30E7B6E312F476
-B5639F37282ECEC24155940FAE2BA6FFEC523A253E6DA7AD4CACBEB2E1DD7FEB
-B6DACE84E91FF8F3433DFB96E4EE5FF73482457B9477E5DB9D80CE7FFF324F48
-CD0567C07ADD825DD5DCF5FD2F657F8FE5EEE9FD2085A4677D7D5F986BD1B97B
-C09BB3083A8D33C725D5C204BFD60BE38AF2C43FF1EE18574EE86EC025980B2F
-C46E094A91F5E78929BEE0367D8D3905FD48B09714A5849CB4888A35303A4FC8
-9D591D99A57DFD9A2C914BA4444AA978B399227B218BE378B1DC01FE7095E70C
-F107A8241B9EDA3401512474015F3FE6D2205F40117D1A4869FC11A62BA85327
-5D5707F786085ECC72DADB653BCC130918854C7DA4416A7EDB961B6801D4990B
-7D8037D7D4A0E8522DD1D7592C43A62DEDCD9F50636E4F6DF10DC2DD03416EAA
-DCD800AC4306E346CEE57375625BF7C100C14C0A34E18E84B6450BDD689A10A2
-4E54FCFA7B469CF4F6E9B0A0322458184F95F7267212B7D520E1C45639711B2C
-5E5CF282A8E4242787B5669D38B15AFAEA40E319269D7D041647CFFBCC1648E2
-9D0D4159A1EBE45D1D8D5140AB03BD74A86E9BAE09180517EBF3C5351BA94E38
-44FF8E4A42277493FAF469E1BB56F6225009B7A4BFB42D6F9483FFA863C65A16
-03A9ED78D1CB105B6524EF06B6AE98A85CC97E1FF95DFA981828AAB11312E41B
-E1E8B94F29FA40B92B6C648B57E8CC1C12C8F64F19235F84C0FD8FCCD0B8F64C
-173B4671B48DAE6574D25124C400CDBF7319EA639549D6D63F5527B96AFC8102
-04AC331F5A6AE0B9FCA8ACF343ADA120E115AF74E5A370D962CDC2F03C962484
-00896098345E25958EF5F1E42E5404F0CFF25779F341825AD0CA60327B8B4EB4
-EBBE98C5901A0AB9947C7A9ACAC2A2D52A6854D4215964A9B50DC84C35DA9C80
-FD37D7F45211DB5EBAD66200BF86D1B7DDE8B8CFFC15699B57574F41BC525F44
-92D0B382D0EA1F8B260ACB4F6D20F6DC2A8E19738E6D6C2C8F8886F34346900C
-331081E46C0216245E4F951022FCC0AE71C321D72E9EE3F8E0BAB7B50AEE96AC
-57AD3E7E80292D374CC5CADA3A58EE42B8E5AF7E0857A2D7D6A49C3CCBD5FE25
-30CBFF7D2DED0C09A3465DB9866A44DB92510CC4FC7FF6A5FD2D7B9D98B42542
-E3943284FBC49A9F4D5D29AF090D9EEC1BADC848B2A1C3418DCFB8621A019EC0
-244B482A7756B7F451C8F50E639955F0CFA11667E84E00E76A14E3995BF3A17D
-0D6220F6063DD3A440DF1345FBB452CC096440BDED6A66857E5EB9F7ADCBAE97
-D6BFC65CEBB5781075053C8B8D01810DC79910A61DBD9C2FE70DF8E5A2F9B01C
-B28DBC9D078C2D461015EC70BFD21A4E8BE1D627F074CDBD3F121D57EBF35F6E
-EA5ABB33EC69A1791DC55E45724A16B26B4B4CBD0A3B391613AEC708EF590B3B
-94807CC1AABD633D0190DD6DBE07559EBDB8D547A8700245E274462234B7DFBC
-3AC8C5BE2754CAEF619AAF499BCACC517CBBBD772B873BFCD1D77D6D7AC184EF
-09824F8C93DAD1EAD6C3278DBF5BEF592944D1C0261986E5DC0E928521657898
-85C67595B54AEBD0753A2F13B23A7CFDF5B0FFD61B5DB71D7AEA9400CC22AD68
-510404AE571D56144A1CEB5FDD07EBA70373847ACA6D61251C79276E21F3612A
-A66EEDA92F9531A9E80120E754C45EE33932FCB63558F0E4436A061972CB87A7
-A78095AA583A672EFAB142684CB93E8F97BC6DAC1F943AF65430E5E1A7B589FD
-51ECC713BC2417FC2AC10748DF60079DED68C55EB78F55478C2847AF84A53D10
-22F21AB9BB80CF8C65DA34CBC16EDFCE3068C4F17B96FD44FDC30BAF101F4A7B
-0E421DDFC25470ED373BEC0FACBE01A0830E9F60B68DC014DB248AB9968C77CF
-AA5052BBEA891A9C2C153FEC849383059BDDD75CA572F6885C653944F04E6580
-3B5471A73570B36DF5BA539AF4CA561CE3F121753378D24E4F066126E9407DE6
-75CB455EEAFE31541BE8D3B11552EEB7625AF8F44AFD826CA6BBC0961EBE1E65
-D96A80F72079759D3913CC00C41AFCC2E8BD77E4684B0BA9A046C45FA064D462
-27115A711B5741929C99FE76799F3878C83DF3EB952FE3701DF6D1DD9269F45B
-059DE4221079C53EBD185834F20EAFE9516AE2542DFC07ADE444E2911A1AF742
-50DCDA2F35533B6ADC400BE3F1334BF03DAF8507F1BA344F37A62C93ED723B99
-85DD143CBB2FF1C6CAB51A3D53144B5AEEE8FBFCFD7E94C1BD65ACDC1800AFCD
-F10802E54F97AF281E8189C20B7691464A509E04F50780DDCB29E6880CE6D021
-318111668E4E00A39A3E177FBE919698F556F36DF8ABAE00B92DB57060E7C37E
-A7841F824E33CCB749A80FD9906056B3B675D2965EFAD87CFAA1439784A0C172
-F30E7C32DADC9232567FEF3D544A73C9502A6A805FD2AB6F086BEE1D4704EF0F
-696400C507EEE8DBA68CA9EA8BBA9BF656DCC6138E2B2E5A27F24191FF71F984
-6AEC38E8A427393C96BFCCAA69924DCA437B5E18B17530CEA4D3456C3D857C11
-6EF03FAE1BCF595125912F129F8713A2B5483500F099709DA2E78B87C409C6C2
-5B6B4C5E1C7FD85F23DB9B544EB428A92D63AE8DE6837479DA0A4235C81554A4
-CDEBE0A13601549E5E9EF9CC778392D8ACC6CBDF167D511A3E5212B2FD8F2093
-349FFC2843356168A97050D6BB94FCD5E51507C5DFEEEA78F8F78F3516D62215
-7FC703FA58AB15A5B6E08B071117DCD73945CA33F0E49E0E02D57F82A02FA6BD
-15946D42D5AA118078554A2F6B33C43CE5C86B9CD2E11AEF151F68A9DE431437
-358CFB4427C4C2443AA9B73A890EBB5211BD3004FEC19B09A0043B9A48BE8FC6
-D6E2B4ED3BF497D0553CE08B83B3D13C77A7F70B385FE049A2D8EF336D54DDBE
-A35505E57CBCC6173959E05CDE1CAB7B97FF8D3AF32F206EF37D821B92D76D49
-7B17D31A9343E448B1CEBB51AF0DCFADC5937A8CC468A4A26A966DE4F7A71B5A
-8576A783A64A4B9FB795F2BBEC9573F88772C68FF15020AE3F6B3D978AB61926
-B0DA27604A975C2DB6421DF604FDC5D2F639ED3337AF4E6533CA348CE58DA987
-886A0BB3B232C4871FBF95A636E90AEE93B13E4EE6690097D16A66553687007E
-C343FBB4BFD329CD63146A11C6EAE47383B7D5ADE4599D51F7ECA6C6C8435B49
-BC4AA33AD40D70CD0591274730AA3116A0BB4D9580E15B10358EF74344A35DCE
-EF7930FE8AC50ECAB81AD910150E9D909671965AC826EF3570EFE9DCD2C23E3C
-0686D6C958E81513EF8E856375EF14910FDCE53A2CC75C31FB4CC98352E497BA
-66D5B5F02683ADA1B57907FE29E551D4356DF800771FDF6323976F6CB8D41A72
-BB0BCD5BA1D0C5DFC7B30517F708580BB486D8DDCC49F5122454F7463CF54E4D
-D8FE3AB57B68D7FB62C600590366788558933F87311E6FBEAE1A0F77A01967EC
-C97267BB19A46D3574B49906D23318902F7922326591068746558FEE0A84D83B
-F553D2C485CA8C37F1A40546D7684B92D7C5DEFE312A823F117A125FDCA90648
-CC648B33DBCD17520460C89E0149E00DB2D018843F4106C35431F9A26A279016
-224E633F16FA09076239E82F6F5B101C9A1FE4AFA629399AF5CA419471EA13BC
-0610CB10DE3609E5417F814161AF869D9E4E053BA22CFED450C88E540940AB0B
-A933F2D9C989D2E00E3D3537F6377CAB0F7B6CBF6312D35B800557E269D519F7
-8092C4AC931BDA19F7737B176E4820B9D3F72A9B0E0773EF91F82BDF812FDF42
-084AECAE788D879A6FBFC2198334B437122D1F5098214290C17D63C3379D6C9E
-79ABEAB518F5BCD9BEFBD6FEB556AA64BCD5B5207541D34DB8D0036EF24AA183
-84A2D7C035437266B36FB3CDA8A80E93BCFBF25418BEEC672961BADDC36AD323
-BF12C931B2439722796F929FB1F68429124249DA2A9276D8F2420F82A81FB0C3
-DE6EF9F4F306479322D9A6A9278B1A9CB0C1ED12B73F6435048BBEA6F5E3C414
-88E459D86A9A52D4D74339BD6AB509EEB4AB7E567E237202C8F1FF0B0AFAA20D
-CABDE3409F3BE6541A1ACB557323CF3F9ECE336FEC89C4A041E09718761DE065
-7F13F42CC2ACD83037AE441247F1324F6F14AED5A13BEADC8A3F51557B35BF5B
-E2285A1E0A374E34A64DFE6694B723A02C7CB4AE2E3AA3D97EAC0B6CCECB40B5
-0CF9DE0EB8E4D9A13177A3D9E835EE742FC6479DDDA318B61AF49CB3C8DDA06F
-58568CE8468B8CB056C78D6B89957E29003CFC6D0B7BDE6550691FF6EAE5D63A
-7E83C873FF1A1EAACB8F73E5DE34A1EE71B6DEE81B6BE216AFB7670DAB35ECA5
-352830B18099FE5CD0DB566E3B6ABB12DCCA21779961A61A89B211D0B0139534
-9F8222ED81C4090FDC4DCE46F82C569A16182B126CBE5DFF50E33D9AA1F3C1F3
-8B3F8454B3B606A17FF969A160996FDEC3FD7774D7496C56FAD1D7EC85FEA79B
-BD89389275D701D5A0B220F74AE2744358FF391E70041C53649E42663BC79B0F
-896ABA484B06532BA3C542F44D04780B31793DC3588A8A57A3F43BFF32E0BBDC
-E2D5744145FE796ABB1DACEE440B5B2CEE966312E8668233B7DEE86E1662DD7A
-CA7ECAA10F9ABBADD26A5096F87FAFDC93647EC1246A1A01F835B9272CFF293D
-75111A98794F973948CD2E9256B4C11C35F648B8B099BA239F077B790BACFA13
-A7A6FB6829FA299A664AC53D866D59D69AC6219237315416DCD7634A478AA3F0
-CBF14B01440415FFB44B955CE1B7E4403B45D0C5F84FF1F94BB4673394EAEDC5
-3334D8DF5FEE387A7E170682950705AFF8911B9F82EB6D75CCBC5E830492BDFA
-78AB0E19532F13B0A68EC14DBD57694CB60734554C837EEA049EE19036437FC6
-2A8CFD94301FF00A06730103F87A46F746B141347D6A519B35842AD0F533B692
-86DE9040E12797E78041A50387FA904192917DE35BD56D767FE6D41A9394E5A4
-3E113A087CBC42C86D71672C001FB8E18AE25E99C33FF1FDF1DF12F38F2921B7
-2DCA18338C477C2040F4BA8AECF2933CFA0A9C08AB9516AF44D4197194E3906E
-1A47F428E178D7E9F5DBCC1DDC73D8C96769B43046B75593FA8FBE53A16DBE2A
-CA69312A8F4B26C7E75A2971FEF9DB92690FC43A6A55B13B6A06D53CEAFD2736
-E2C1244F106FF2118A016EB4C1FB8D76281CA50AB56F783416BBE0D85D43F6DF
-745611F6F133757E3F657EAB60D952C6769BA31027A604DAD8C28E746CE6E01E
-39CE1A5D99E826235E2B32D8D9F39ED7A90A852038A2248C92BD4D836F82DCB8
-72B6BE7EBD141D9FE4F664FB875B0D16F4DC72FE7EA927F9E9402ED47C63B5C2
-9295261BE144D10B4BB4B49B708FEF3808317A02B9D4DA689240B68DEE3E5A79
-6C5362489025315A8D44D572C6A7866C59052C27A691BCC073546E37FD699818
-64D2752D7EC32F527664CE2C218DC41BC437CEE5A744669D332CB3D0C0F32B32
-42CA982706D3B4DA6BD9B1F4E31B44BC1F9AB9AC4C26DE5B1F84392FF8D9503A
-82DCE35E7418D0BB41858253C5F8EEAC5DEB99B729487524F3FF9CDC09DD6242
-603DEEB3E534B1F9879172E5122E7C399C813547B18709C6C42482302F841314
-45FE78B4B6AB40969A46A5857E36082EDCA56B0C50F70B3C87CBCF086C2C2C94
-820F462360D116D7CAD3E24D99E9B523295C6920F7FC801D94973015C60D0E10
-A1529CA0BBEE521D4FE2CACA48BFE918170B32AE3013A028D48BE905346169E0
-090FAD0BEDDB85C78D824A7F23BC4E48CCEDBC8B1DF39F81496AE27A92FAF47F
-6A01247548DF90DBD56F16AB39961D064CFAA5C82C662E7AA737CEBEBF231756
-39A36CA5E5A62F64EF5974CD8E878B7EBE543F170BE7FC082E847F3E46AD6173
-8A3D3D5509D23B3F27372DF2D9794E76CDB43A7AAB0024A38A6BBB824BF60EE3
-FA578D4D746EED9C6344D9735AEFEF59ED9CAF65C534B2DA378A122649A112FE
-89A8507D4A61C356E9F170A38713B42A943FC535455FFCE9206108A3E1F8EBE4
-B0BB08771E558284CDEAE623C40610CFD957991FD27124272B5C36EECE403798
-740F708DC51CB62AD14711416E25EBF4E4BDF74C53268EB75397EB464DEB602C
-9F61ECCDEA568F351CD1457CEFC102D13673619175454C90756B98DE424C6BFB
-11D80BB18870F0474B4E41CA42BD48D8996E285EE8C5356AA4624372D65AED26
-E2CDB074D2F14B6A1EA9B76920EA90E22934E666A7DE2B5A083A11809B8488A9
-A4E930CE3953589341A4F9DF1F86241E452E703149D640511B02ACDB01283A9A
-A3A16536B09D018CF80B684E9F08D1AB27AB0AB47F382032C18946141F037849
-CA7ED0FEFC3998D9F8EF591811201CC423CC64CDA38485100143873139163F48
-7BB59A6AF989740D1A649A6F9B9EC50C10A9B2E93437CDEA9D314DB847436614
-28CCB4CE02662246C2424148790EC018351AA113D9A0A2E70FB46FD54EA84DA1
-C14B964468D4E42D75581F9668B83D4B4703C855CE8562BDE64A942C9D78EFF4
-9C79340157672D4DA55FC4018697AF3EC3A9DAD346C87D5CE849793C7ECA6851
-46A3B287AD6A9F004334F05C9ECFFE90B6D9C9AD5B41DFB5A38F814C4CFDB508
-2A6F5963E93E3A4CA88EFFCA9951C4D52E82C68EA28BDACB61C6AF6DB220C48E
-9DD4953A24B2CDBB5F37DF257178271BED7E6AF0A3028699F8EFE9C69A5FC3FC
-54A56483531E7925A7AD6402D32E46B7A839BE5668E4292FC083C0B336A6CC27
-9D3F91BC3985070ED952B979E9ECE9A5F05322FCCB71326DB47C2E464E453FF2
-D41606230F283D1232EFF84C278E317C6E7BEA6B0B2379DD90E7D4070C6854D7
-8A349C0EA008336F4263C63988B242B2C3BBD238AF6EDD472A4CE102C4A2BDF6
-89DD29D112A75E1D48B1262EED0E88BEA7CE6105280716E56E1867ECD075B36A
-C7129CB5611FE389EA16AD4F1D398DDEEF906EDF16D09561AB30FFE827AB7306
-F2E75BFE704EE8FEC256A6E56FF64199038C006B9BD322662AAA57128CF7C46B
-4532E9290A0BCBD99601AC41C939B74C5EEF26D4B8AFF2ABCD75573B43686B6A
-824D68C5FD86772F838F349C0EB447ED12033A2E0DF8B1282B0B8C4F66A7EF7D
-54F88CFB199769DCDB12B4F9E46BF041F9D9542BD25275751456AB8DD944EE33
-35B4F89ADF5908290E543DF55E56C4A4CD30765DDF9AB61F9365FCBC56E92FDE
-53A26F582D1009A91E848C7730A7307CE2FD2633E10AB2810DA88D73907C0174
-23F6A857F749656A85071EB2D42A73210FC95927B3FAE880BC3C2FD9EE456DAB
-E33B86FF95063E1666764B157F933014C1ED77655C2C7CD2F2FF01450844AA5D
-A2B6BAFD6689DD45532F38C9DA7035D219F1F59E7096B4091E7577FEF06A8EC7
-68CE94AC36018C7A4590BC0B23EA42970F107D23215F006CDE4E36909226315C
-E81EE4645B0F9FC187A389FC94B0B88A2B8BBD6C8584CE237BFE9A25115C3EDE
-FD7AA4B8E8F33071785DE12335BD62E18F3573B74A881A701867B7B72B366144
-4ADBB9454946F9F2815E119670AB866FA07AE46D39C6D94C1DFC73E43374D8CC
-BF8BF2660A5CABD711BAF00313DEA3E9B077F1440935AB4FAAD4EA04F3199E9E
-DA2976B9916405D4C706652477399823C5D2F1C652236FFF052DC53A8500ED33
-F86DB117FD01DF7F865917248A215F2A1E8C0C801F8773BAEE0C6BA10997D577
-D80D03428997EDBFD37C36BC606356F57E774B3CD4594E0E29CBD217101791CB
-08FE37F177D201DEEF1A08EE67CF5E402D7C688398493C2DD29E99ED397477F2
-B0872E4228A45DFDFA571C7680DFEACD9CF6184D27FFD7D6DF754405A2CED22E
-C26F9B2761463C01F64E5B4C7D1746F62642EBE648E32FC239320600690919E6
-2D9AE66DD5A552F2FDAD74858A8F87FA7653F1C2FCDB8E1F4985ED1405A5F27B
-28A1C0A04E7CAAB8BC94160E1B25734A95289D455E6A64EEB65D74C76B123EAB
-74ECAC9327F4A57D757158B51BD17A0C0BFE6251FD317AA030E211B10C9B5C28
-A617482DB21157A1A9E2B43CD32747D14DFAB92E08B9E745939F4A426F9A3E63
-0778520D33456ECE373AFC20749E267FCAA88F092FEA5F3E64BDF5629CA57F25
-28FE3F1F11906E5C583099E5A110946533A74100E32DF1A793FCF352C67CB948
-ABD084CA35EBCAAE875166F66573B5F241CB15D90B74852307D5
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: PLRoman10-Bold
-%!PS-AdobeFont-1.0: PLRoman10-Bold 1.11
-%%CreationDate: Thu Apr 13 18:00:00 2000
-%%VMusage: 1024 31190
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997
-% ADL: 694 194 0
-%%EndComments
-FontDirectory/PLRoman10-Bold known{/PLRoman10-Bold findfont dup/UniqueID known{dup
-/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-17 dict begin
-/FontInfo 13 dict dup begin
-/version(1.11)readonly def
-/Notice(Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997)readonly def
-/FullName(PLRoman10-Bold)readonly def
-/FamilyName(PLRoman10)readonly def
-/Weight(Bold)readonly def
-/isFixedPitch false def
-/ItalicAngle 0 def
-/UnderlinePosition -146 def
-/UnderlineThickness 60 def
-end readonly def
-/FontName /PLRoman10-Bold def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/StrokeWidth 0 def
-/FontMatrix[0.001 0 0 0.001 0 0]readonly def
-%/UniqueID 0 def
-/FontBBox{-56 -250 1164 916}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0525392EECAC163E584A9104D99AD0BC
-1B1844A0E222653FA481B8809B26A46F4C483A5D7E95816EA6582584156CFEDE
-B994ADCFF4645140E3617E4D7E1B0E4541CB9F562E55829B4DD880AABE2229E9
-4A9FA259A734D29BBA91BA1E2055CBEA4339BCBFF98D32CEFF11F296225CAABA
-DCA10577A5D431B714726C1278D8101ABD1BD8D0BD0174FFF9148F8C61C241D9
-2AD360A28616CB4A0670C1BF105A25E1BFC9F2B5D2ADC8239CF6CEB1085A5D47
-76BF78D14753F998C47F4FCB1AB6B7595496FA51AF12771741C525CC727551A1
-C53B99507CB5132343184F19D28615DDDF61BA4ED26FF746A8DE2D895CD9FBAD
-56CCEADDEFE9E0D07A01FA572FA8E90427DA946147C08161A3D49C534A5966D4
-9DB68B43E54B6ABCE3674E951551A86FEE8206E15D755FC96D3E006D6BFC1C3E
-DC4557CB035687755E7896FBBDD7F0E8FEB84BC965BB3A156AC014EB63AFD5EA
-9F86295B06A8954DF1FD0F5C49D1E4FC45E07F61035F23768667FA661FD8D83A
-F919B5E9FC42F7F3376488CBDF2D84189AEC29D3442963C84EF6A185E1FE8B2E
-DAC61E0AFE78F39DE16CD153A9A5521BA6235A41981D6FA292307BB16FDDDC1C
-3BA6FE06BE9366B3243E303CB1134E3301899D29B46159F65190979324826E4C
-C903AC30059F04637AEAED972F75FA7E60FD83CA6E5A43206587E6329F6CC3FF
-5895100355AD8F4D4EEC9CB5330F6B28D7229DA29624B70E833AA2943C05C912
-B7B60343A7DC7A3F6F1AEA9D868237E30DB8618BB04B765781A7EAA080503F95
-16B125739FAB9FBEF8523676B7509EA7AD0D2111E34025D45A68E6713BE04923
-2B3DF2EE4EF47A38B0D8C545F3F85475C51BE22597651714C1A4FD2F200995C6
-807B6805524A6D24289FF6CE2EB50AF4ACE16F148480E3E0A4266097351A03ED
-AD9D7E84C86C4F5E7BE57336A0CC4F925415F9F6B65DD690FB21D5EFB414B7DB
-80614C024373D7F7E68D33EFB93F057E59608220CC29F4A3B54C712E006E1D6B
-D993668999C3A856C017533B7CAF2195E89F96FEAB7D91BE5CA1D915F241BB4E
-E66E1D478AA9DD9E87F5C8B0761AEF5A91CE7EB13407DBF99FAB4515DA29F183
-AC857EB50E62666F64930EBB260229711369CEDDA424A91D8D42E19D196B44DA
-81BA1B9098DC35CCE4573C54F6813B02641C8CB75C522A0ED1925CCDF7BA6D06
-1C34D61E35F697E4A448DD19120937089808561FDBE83ED134AF5107488A9723
-63BFC0B6FB57A75B989432D8A030128F796038DFBB841803231B3D1A1A4BB33E
-22B0709D275570C37263293E6F25DE1A406FC80BB622CFC49D6B7D6D30D0F7B5
-12AC417E418D0BD296B2BC46C1E4ABF5E2D8428D248B12CFAE6A804A5536562F
-FF26C1CBA38C4FE099F8917C246F8327451148CCB23B78527E5F6729ECB4491B
-34132B6113E63B7180C5FC979D625B6D370D36E8D019AD43A7B8ED81721B449D
-67917AD7C9EF1E123570A93F53E03A2AE1A3CBE32AE587A838AB8E337ACE0AA7
-6DBC3BCB401D48A9512E4C2C162673270BEA1042D124477238B826DE582A230D
-A9890E458B8C6A10D1285B1C51570C0D94FD0AC193F8130DBB5F84D6476F5DF4
-B4DD749A33EF353D83D7CFCA9A321D23CCE16C49D5B65EB42AC17F004F7DC1CC
-C96ADEF11D3EAA6D5418583CF9F199EF342D909D8260BCAC2F6D8D50B5B60914
-009142D59F7361F842E6AF5543B264999DFC8C1AE598D322483045C74B8C5962
-3576A210A17848CE8BCC3674D9A938D7C66C1C509B8E4A79B7F9C1AC2ECBD3A0
-E7EBD5C9187F887964AF85CD87ABF45EEC4E04BF350182DC28A70C1B3E372E65
-7CF4097243AA2D200DE755C3AE18D92FA0250F62BEEBB6F14EF5E51DF139A6F3
-5ED3A8A74B81FF539DEDB60DA4FA3D729000A35317623DCC6809C3475892111B
-D952667728887DAE7D347AEE9EE0C6DE82DB06897E44E38C9E98E488F3893EFD
-099E277EA8A4697D0987FB01A110C1DED37CAF49B841976DD89EB500236CBAA8
-4C2435D88DB6260FCC2D27E03848338171AAFCE43A4561E4BDC9BF1BF4BEFF3E
-8B53097421F602A18C94817F54639AB84BEAD0D71412F8FABE5A24DE1560CB94
-9D746B5C33BB22F242D485368169D550059149EFF10496C9162F79D35DA71EC8
-997385844F8D58C6AEFFB23D9B4DF868327E7BAA061F61B65201FDC5744FD880
-0582F1C54AB74AED751F364DD9BE61C39F983276381302AB55A2F3ECDD36C59F
-299A93FF29FD80F22BCF2A9A4F01CCCF1E10C2DA4065A30828BE7CEE911370B9
-CE7E88DDDA179510EF1FD813BAEF4B930DFF8FD5B1BD2B1DF4014D9BCB47A72E
-317F79D55A9417BCD367D9234C5471ADD144DD1AF3A76EA8A63CC475F5179A8C
-18ECC0D62BA973BEB5B80B96AD9E9C4018AEF735F019AAA33799CC40467CD33A
-BDA7E803F7745E4C1C988226D1D7EEDE4BD0A7A1833B19CB43DEB2538341FA4D
-65A0A885D72FB775CE8B716878066CEEA84853BD9D097E71411511E98B27DF6F
-4C6104916EFB6F3F2AC969A4DA6D49EF4FA7B5AA479980F57705D0FE9E419307
-A77ED0815842F507F27183D8A5D55EA53B9D72DB9DFBA8D910331183571965BD
-0DBA9A840E37A7D4CE19CAF6881D65F8CB127FF9339190CD044880D04A8313E2
-C113D52C8ADDF2829CC7205928BBC4283D1719B702D7A1233DB0BAB179033DA9
-D418C328FFE1E1502AB5C9DA764112E9C82CE75C57C2E5AB45A406D2D87D17F3
-348DE0B66F121E76E6BD1FF6BC3CAEA11F7E0B2D9F3D3991A68CB9F5399C5CA4
-9F8D79C9DC04B65B020926BD092AD872B158F05CA09EC0F50AA7BC09F3067A7A
-A6254F6DBB9A3BF36665834C8D6B85DBE998CE526A2DC4672AFB01117A84560E
-31456F95396A4AD4E01789D7C44BDACD73329B02077BA34720E87F8D55257BB7
-530A2CE5F9899E56D72455378C51B46739D055183CA8800E0A79E01BABF2184B
-C4177DD5A9B869567B7E0DACC95FC3104F8FD850F4F7E5F3A3B32040409E8490
-09ECF20D3F7F0FC69F3214C00CEB9AF9F5A4C5A920BA06CD8BCDCC40219ED34E
-AD309DC79246CEA3EF9F3937F3ACCB52AD5E151A42CBD1A80DC59107424BFB3F
-05949E921C0089ECF5282E2683BE378FC17A6E3E30FC8A797CFCB0C90A83C3BA
-B4D2BAEAB95E8A590966A1F7C23FE0E61A1017DB919CEAB5799D099E451B9938
-B053874352924FFFE06ADC0596DD1C07F98D5D2F7156874CEE7459BE20D6E99A
-DB61645A21B4DEA72B19A5DE611F98E2D6D1DC621B8B40C03330E4CB6113229C
-A997D9356D87A63A6E6D2CBA7207E5ED2A8B5D6BE90BE4203C3F857F759E4697
-0DA5B1B19BFEBA52AA4C43753F00BE4D09A41E15D1A960EB9E3158BF0C92D099
-DC93D658FCFD4B0A8821B811AE3C8DAD4CF063DA31F7E8E2986CA4D81B07EBBD
-6D70427D4060323EC6C0B1D4F0D14003C671AF4B2C8202C02B110FBD21BA4CC1
-F4548E3E9704D01550E11B1D1CC97A59F5B2264D35F9A3EAC3929319ED28A90B
-37E3FFF62390EFD808BDF9537CA9479C76B8DB8FDA7BD20DA0C263D5F5029A0A
-CB527790B33C9B0E9870FD873E94D4A3CBD09FE8EFA6FA5694ADBA674280C7A0
-C102A032465003A5310EF846E4B962C8046FB3F9AF2A670D888F7266D4DA6D40
-82480147332F31087D2FE5445B295C56A2FC16217BB5B5A44C3B11027C7176E9
-3CF7DCA4E95529116303DF6A79C301E00600AB38A00EEA61310B34A5E042732D
-2A5A07070351CE3D94CCCC38CA05A3B890E925D744B6AF48AAE86AF266EC3AB8
-5890BEF91F6A0402E4C9E457A92854A526D1EDBE28594BC5F2B30B2D1C0AA610
-8E674ECCA30C45555CA2D11F94EFED513D3744BF7C85D411526108BE7B72351E
-48E30F6EDA6B277239E5E75BA397998E519B27EC9E29F7D2117C93D6155A8CE6
-CF4424870972FC2B171C4C055458665B88B08AFE9C1EAE19DF07EA703E6EE873
-EC04657166E98BA573A3EEA5967F58691C47B09CEBE352FF45D653F34E9C61DA
-16A1DA997814E99C70B6CAA983A119D5C72C143446A1F1384FC401B554D99B5A
-53378D53978C4B1DB734A10BA4315EAE6637704C683E6C590BF2EF885BE65A9F
-57662C785DE0B832395706406F4352C3BD0299E2D51F2FD2AED148A3DFFABC32
-2A2A3F62BF60D6F2439E2D50DCBA8DBF9A98E36E7F3CB0F1282761CD321E25A9
-B0771D2CC29F5BF67E7591163219389B0F4BEF7935058ED16528D28E50E37BBE
-B1D1554503645C1052CE94A55077C7300F05F142F0EF670D0975D3E512F8520A
-4F7541A9D9A7C8E66911844735529060B541F6E2706649A38F2345052550944E
-73B0CD2720E2E9EE55B42F75DA831AFF5F4A1B1587CE8B070FCD6CAD74138969
-F2C64E0D04E7A384AB792F36A93039AF47F5F301BC6859E75A2535D014B9A85A
-231737A55533C8A6318928AE4F6BB7D73551EE33D4FABED8EE7952C3AECD739C
-9C0F9B0C800627DDA0D25C33B62C5EDC02610D4A348BF572C78CB30A2F939E91
-71AF69937EE32526B0722C162E655624906DFE47F66A1EF66EE2AA37CB4120BB
-5CE017FCC070EFE541F22CB595D2E55E6C7A52C3C7DA8948ADFB24D679C3FA35
-3EE4725DB5DD405C8CE39D8C2712D7DEE63C22CE01867117D1908D958AD0EFBD
-5C6CBE684E8993B9C48429E96ABC0D85756EBB96B502E82F60BDCF13FD75A52D
-505CED91635094F55BF2570F9211FAE9B3691A04D0896F1A6D409FB13CE8590A
-7BEBAF2770DFB333EA66621A56115E2E7A1763D775A7AD326589128EE1829F1A
-1E3B8FBBD4A78F8A01F09263081B8BA278BD0B7D531AA9D50B72A167232A5C3E
-69EC1A3CC2370D8619DB10C162B96E490193208D7CE9CBC4EB12C2BEA2C26F76
-8EE4BDC1C612B31C7A4A924DAF743E8296350CA4382200124B7C22AD75592BE8
-CE7BA0842EDE36A1D32DC13EF79CD0334D822B4F4FF52A35DC39B445B55318D2
-00DB5122520207570D513B06AD9A21446882273FB569F8251ABC9287517EFD31
-1812C967F59A12EF2385A7F49B1E33AC0462BD394555FD4892363909518452AE
-28C283128602DB2E36B26E4C92C4D48E3C976E64C24E8B2C638B40A5DE68CCAE
-80B0FFF820557C27F39B6113A62C11D64ED00E224CBEABB4AC456B56C6235E20
-7E82071EFA4509598A6E3D04FE29E1CEAF4713263A0B11C7D838FB46F60D89F7
-CEE7C5C0D6C91D5102F5A4B0F09FB9B43D9D05D9E9CD6D1F52ACB1745231E213
-BCD4A2FC290AB05B0BCE4285A33BC2A9A8EAA8989AE8BF9E2E3401628296A8C6
-FC1D3D14588E07EFC19FB4DEA090AD58C190F60FB936D5078B8FF050F767A53A
-82F9D8976374F582C1513B386DFC9035C49528CAB649B6AD98F74FD037431B85
-F88956B5D698353161B2D103402F2BB0FBA01033423168BF615C33FDCB30CA36
-9A6C9857B81868B25F5E3A9B19FB70A20A4A2E4ED6201A0C74D322562BB5468D
-B1830B5F72431398040695CDC0722BEC75EC3DD979FA99344F34C69C09F6B2A5
-FDCE116D38A531B0C6A5A4AFB79D8A7063FA5214F3012B43E80B013C352EAA05
-DEC5A6772F6AAAF3D526A95DBB4FA2D09E524A75515AAB594A2CE70FF89C0248
-16FD5FE2A0CC6D6BBEA5E489A740D461B542ECC7092AB91CEA4DFB1C7C768210
-5E23A374BCA91885E747274F31E5C64B7A397FDD41932F2A16CBB052084E3E24
-90EBDF90624BB22393DDB90DF1D8545651EA776CA13D046B0ABFCA115414EB46
-52911C21C71EF12B865DD8DB8B54E7B0AD52BB9A04C1A3AD3827FFEDA3DFDCF3
-BC90CBA8188EC1FACB777CA1C5C32CC0FA8AB3125B0ACBBC32D387AE65025C55
-1AB599C3EA4A5B43EFD388D2DAB89BB947561AC3E73728A55039E4A7EA63CDDC
-B2C2AA2FD9116F5A58A72EF317F76DDDFACD79B407D72992A3B6C83A80D1EE1A
-B160FA3A167599B4678AB660942341D99178F2172D51E5FE6A532AAFEB7C1909
-8C9E2A5BFEB899C63EEDB7645170A6A63867AEA0E83B77BF5F411BD5E5E19903
-9448352F89B440C80D668FF731A43F7E858197D75EC2D18BF067556A8F861310
-0AE8E0CB05FFC5891EEA9F0E324F9909668FF731A43F7E85066F8B30F3AC3455
-EAEFC63DB890C59CDE42353355744B983B11398E7B381CBBE069E98B5DC49123
-2670D6609742C8432AAAB19E471724033995E4064CD4DC59030A1E5075D46585
-E1D62E0267C75EEF3919EB6C5635C9EA88F549F4FF7DCDA5DD6F5ABDAF12E0B1
-0F880A7996D730F9FE2F3B9316FC41775DF4F288C71B51746D20B6FEC22E6FBA
-8E9B22727AE236E786250497721120F259611D3BE08A85FA51AD2356ED33184D
-3BA70D5FB8970E912C0A2F7CEDB74F255EB3344E9524A2AE82D38AB4F653A529
-152F8B7A5077E96854439260BCC53B76CB0BD7CF8F1645BBE764E8CE87CBD1AE
-B3F08785B73EEDD5496C7EB648874EC2748E23E685294D68E286596C02EF3512
-78B15DF2AB38FE915639E033A2E65166CF72D08AF8E6C47BA0A8D7692F07A7E6
-0912138E50FB9B3B0285C7FA62B2E2E2751B919742CB4AADFFFBFC6C167505EB
-CDE13B5C46D41BB33ECA6B84DF5059BE43390F39105E94800741C67DD8A7CA79
-5C3BFF6DB885FC6AB3971A6B6C279940BB8EC33A721E686DE01614813A18D310
-CC118F55FA0A322EA09EE20EA0F98E57E9C7E810EF373A3B86CA5D3A2F9BE1DD
-E610B775D3B832A2AB360D686C35106A05E6D58359D08C11F7F211B86E827EA4
-88E454BF17ECDFCE5124A1A4F131B44066E5C90FCD461AF11FF3C6ED7D6D58E5
-D4CD38E3B381E085B733F0D46DC8A66884D9F69189DE900E73E57950F2026AF9
-C57C89A25D31394BA7C724BE83C92E65ED8F6B8F00242244CE216FC2904D50F9
-7C4D4E96EEDE68BAB0DFE4083E7722E3F8EF38A0E069A5D124F7D1ECC85143D6
-787C743E34A74471711ED3A42969A9DE0FD5D2CA9DB012A2D0028C45F255E429
-B0B5700BC9EF2D369EB96E6A51C18E0B7D11C1E8781AE1A3D0076B612D11B562
-1DC08959079B12ABD106800647D055F1B598E72D65D57A440E8EB2F63FC1BA74
-E8304F6AA6170A4D9824A57A65089E4DCAD04E977398F555DE3C62D39A3C53FF
-436B408329130BBB41E5E7A8E6A0BF1DB857B98483F987B7A0AB9EC8AD2369F0
-1BBDE6DB5D5D29A111B3A21A2C22BAFFA13368B435782155A21C5547086B58AB
-245FD1AA1D04378CC56EAA38E271F5AD173EF8FCDA96B4B4BCC8B234BEE63206
-2C8F982F7C533D161328ADE0BF280B5EEC9059FD061E3C0CDBB3ADC4A2CF5D2E
-FFAF649F60EC4C773067E3DBEB1061010A1151E984376E22A912F7DC87B1D8F9
-F837595D280E534512D611F066A0541B9522BFF9B03EB749E4C8952EB576015A
-DC4F3B405669EB8B7CA47BCFA0916B2AB84B280BC1B8AAC92CA89FB909880B99
-D96DF4CD26210105289C56119F264789527CF706F0BD8A82E5328886EBFA71FD
-7533903CE238B7253FC672484915ADB8816E25D533839F4238684B428A721307
-1F5258F29F714B2EA61E0262D25549742079FB76A1438A8DCF5655EB64342E5F
-B658F27B7E8F66327FCF51F0219F04241E4F741E77D9C6976FE371A357A51829
-C5D8B2C4D383397B01C0C2D8877DBBDDE63D5C46FD8EDD3B8ACD5BCCA5D0FBF0
-3C77A4E5605D8CEBDBE6477CEBA8D1FF0F28BBE2B28616A371CCC186DDD423D6
-8EB88F0C08E1AB4C3DF12C2203D326AF0FC6915A613EA49E6A2064BCA333F9AB
-C6130C112144D1E9BB26AC3C4AB1A54C7B0944A0BC0B30A59B8F71BDD706763F
-2B59B836E23576978F9C76D2E8823F97E5B111B184178812ECD4873088D74F0B
-7E52750E002540DFA0E09A157CF9686345ECB609FDD66F30ACD5C04833F18705
-938E2EBB9D965777BCA210F7AEA3230572AB5DB8E0878AB0236277E3EAD22C76
-DB9262FA6D18A89078E2407973F08E400788706688E4BA35AA5284CF67A1DAEC
-3971DC7EFC40DBFFDBEAE5FC0317A22756B57B2DE3A6B8038F2E5B5FC95930B4
-C58475514A22B7DC55527A93E9309E36915B0263D255A98C8E076789D6306ABC
-2674417BAB70CFC0B68EA258B56E9BE8022E717E0D3B5E7F595B112B8B522A72
-0758CBB01FF632C2750F82A557D9BF40A04BA972EC6DC7C95D711CAD8522281B
-221078F37B7CDD6360E1064DF1FA02C00CBC503EE105F0EFD56598F4761F6623
-34C6BAE583CEC27934C74B7430D649338629D99CFFF13869DA0303E61F19986F
-2BC4D18DFE52EE1275B05D195FE43B5D53CDCC0CB7051D42B2D9EFA4D1A7C650
-B85A65294CB582FADF481A756C597B046DA33CF4A84889F5C11FD913C5B90EE1
-AE09C9237750ED3AFF144833F7E02A1E6817E75390483647D9269FDF5C7905C7
-96C4D1FEB2BAAC71BB05BD07D82BF2873E3756C9A7FFE09897138C27CE899207
-36A83786208351C54A4EE2CC0FA897CF8F13B90ED37B79B5D33C3CD71A5D2029
-3794E6A79FB1AE84693C1159BC7230A9E40A5071E082030CD1F9CB2959FF37E5
-0A0BEE6B09A96E3602F9204E5CC7A9D311A8D39FCFDEE9D3C25B923F80783807
-D3778A57186403E5F3E03E6921A36373FB36ED27177033C6E827E38EC47E301B
-8DE05AD0D05A1E6EB881CD4C1DA36B97270F38342322E80461124A46987FDD26
-60A226D91F10AD11504D70201AD99ACA09A6B21C74569030270D679583BB7E99
-03ECAE0921EFE1788DDC381DE031A73D319B3B7BFFF353631E37141F9916DB7D
-4BE037550126FB9F1E56264B8E31F73B5950066BD0B6C530AEB917E75112C2C0
-914D3C52E7746C0E3DB4CF9D8D543B7145556CDEAE8D36D4D8E9B602A2B316F5
-8098D67026DA0C2E2D8C19B8CACC4E37C30782D7A8A6EC4B085610CAC9DDE535
-EFCEF15457A38A65C5598A9BEDDEF36F0C304F726C4C8A5262055B889245BBDF
-17A3DB3077685EFECEBBB624A1E5482D72781D6E552F903643A951E6BD1D24A0
-16B91D8E550F83FC8FEC7A1C50DBC13B8728F127EDC534A75C6EFAF569AC0410
-1791EE28370EFF6FAF6BBBB7FF2D7E4DA00126702255EBFA172E726A6AA3FC8E
-265326E2F8A35D7630C94B115AB564EA838A0438B847A17F580A2B8773F79443
-4138A4471575DBBECFB41C6DB983ED2BAB8405E698B49E75CB5E5355222CB222
-78A328DF0E3A05EC0C1176427E5AC9EE93489E03340B3DC577AC456856EB9B59
-F9B8F1CFAD9BC46D3A17F10E1976F9DA77F22694BA155F336A4731FEDC7096E8
-BCCC1B8648A0D68CD1D8FF199A540C79C4CAFCA596E9C5E95EC9796B36F3402C
-380471D7B9F2ABFDD056602905D5DBD8D28EC6C4262817F4B31961A6075CD478
-4CB7998FAD7F260A49F30B3A69791FB013316463B48B2983327CA4EC48518B28
-B0D52755CA172C6F9921325B37D2C95E6B7BC3DE279A5AA4BA178EC6F759CA5B
-F39E701BA58B7D3D0E7AA8C7F45BAD067C9A182E508E54655443E84B3A45E7CD
-E8F0175F40B86F59AC9B292B44E25EC3DF66C40734039BA64C612CC1F13A84C8
-3C6A4EC17BD115442BE320549EAC82A4C9DBFD9461A46D4CE42D739AB0228F07
-EB90BA652C87355F5A08BC79B5C8631CC793537A741E75C506DFE0FA63B4FB63
-34CB8DECD010782399AC2BD517576D3B82797040F254FE286138FF4957EC8F69
-DFE5565ECD326C26AD6B952793B2DEAC1DF9B63A58CA672B57861089DA967747
-DBECB32042ACE40BCA54927AE5FFD3583BC54FCC1BE2D6C4F9BA34EDB55B6FCB
-E9D4984FE301EA26EC6000B8A7B67FB45B476E3879A8E565345EB5DC90F1373F
-0B72508D564C1EADCB68083D066477F2CEFE1E112D644E3EF5DF83E067D762C6
-C0BB6991C98ED4C30A01F7843C71628E8C7B55560DB1D261236A2DA1A6C91EA3
-FC5F244DD1C94B6BE4CA711F01C56C2AE13FB162F8204075242853D83F29A5A8
-03737BA7A4DD6CD1BCDA185981F9A5DDB33F6906CB94F6736F648D96B1AD87D1
-2E74FB0373FA4EF35E9423C22CD7DA9D732623B3C0C9D1C0F18E382F3E312362
-592C4A2CA37C3390CFCFBCDBCBE6153F334A7506AF9B7B1FBCEA2A6835A068DF
-8884B4089802A732F20F463971151B22B5282C29810C42A774DDD00348F79BE7
-A13F212ECE33EA03851C54F7B4AB6E9B24E6A901234347D9C7234D792B960665
-40754B01E538A60CD050C5E5BB6D5EC39B23DEEF44FA672F7E981EA955B13FD7
-0332F569675678C1D1EC97F5B78F9E1F166BA4CBDDF6CD8DF9C4456749C4432A
-A841DFBA2B2CD86FB34839EB96CE547AC4A7FFFF432E54AA32176E645365F83B
-D4C8E0D8CE320C437847C5EC09C0162260DADFC31F6A14AA0C21EF638DBDD072
-8FB092C989BC116500B170E4A295C296DBF62B3EE1DE5063C289B99F3D64D4B6
-4A7675B258273D7E9877BC7B70799B40E27E66FDF954D155664B4A5B84732A8B
-850101796E8EC18DB08A33FC71357BAADAD0DBEEBE40EF185550403CD585F1F9
-125E1590CB168D4092318CB0C8736C98E866E3397D2F273F2E1A41AB6EB1E353
-B6B0A13088E8F71D3038948AE252DB3B0FE81C4F54B4A067ABBE8A47B5A8AF43
-1D169299EE93DB0FA105092438D1EBF5C949064FD62BB42DA88F6325C80DB521
-B9116F5FEC189B4F347EA7B3A3949ED6A73723EEC5D3093EBEE1187679D7DF62
-C2BE9AFC7AC2AB814C125D97F7149F4C8C9FE6CCEA3BE51BA03042798578EB9C
-40D5F773D7126DE9CD94BC8F37A6A77813CB6E9B0DAF23EA62F5EB658C2179FD
-FAE682962AC66FF354D2E6AE8A7C26F1E5236BD930CD2594ECF150A39BF39ACA
-2CDF5A25635ABE8F06E77F7769C2278833FB387592507FEEDA4F6A3829EAE2E7
-F1EF367867BED38573B2B1960D18516B32F644922AE761425BE640BA0F27CD80
-FD5D9F542DAB7F5EAFEBDEEE7C1B799C71DB7CF2DE13623F676D945A2C08707E
-AC6217501ABC6148F070893FB0EFC66C709AE4DF8A3518B817C183245F1B733C
-17687883CEE41732A9D7D983798F037CD453E1A9AA3CB30B2C7B48C04846746E
-CF5E512CF9C8A08916B5065BB4EB26ABEB99C4A67FD3BF11D9D2B66AE5F37364
-2E607454EE97853ABC6D40B18ED8E5D98795FB0A08C8254A8A7F0E6532B08A52
-F2AC9A9711A81BC6EC9CF652DE040EEA6AB3FAC01F65ED521B4AC18356EAE57D
-3BD2407FAF55717CD73359525EA631D74754BFA26D5865F978C52C8E1295F412
-224A628032910E48A3ED08D0556D61ED3BD7829AE7E509610F4AB454250D5AF9
-1A683B276DC3C37F330F74A59591F058B9110AE0D46DE921654B6B9391DE0FBE
-34848FEA0015CC9BE022C660E90729CE4413F00ABF8B2958BE04275ADDD4E2C7
-2424FC8F2829868168E0896B13EA6DF16B0DC33774E633F1B04B7E3D1C2813B9
-129F9A66FB407538D797E5174CA7079CB2582CF0AA108AC1864C968DC32F5177
-1135CC09EF7AF19F1F98D0357222AEC67F9CBADF73C37FFA97E826525B4FF098
-5B995A1CAC3BF1615FD8CB417E10DD91F71EAC34519F89DBB92DCD9F1557A59A
-DBB39052C4F5D732A46EB574744DCCE29090138AA1F6F47E5183C50D2A764BA6
-C1554BCA0ED6C948BC6847AEAB4736BC407670DBD077ACE83F0EEF592146BE4E
-8B2BFFB27E300E3F5F6B8B75BD9435F1BC878F26B120D58F2F8E7D5077A80D8A
-027F89A05A3B5FF0962D6F4F9CCF80F7D1430FFA224275D9CDBF55B9E352F979
-F98E41E3B8AE23AF83B5CD26DAD96BBDB702C04B147D55F5545A95719CF28C3E
-97CD9ED819667E7D95B3A3A8CD7C83A0AE1C690365CA3BB121513CD600F05283
-A0E5A09B679B6BE4EB9433E5651FC4468B8F217B4CC41369C23E4EC7985F1570
-E59A8BCA751A7D639E32C5691EC4CE8BF75D7CA6F23D0D6861D28EAC20DE03D0
-1BFC00FB080ECF71E3B70B3B871A995A41F1B7DE9065FC7561798DBDA6351A9E
-0E7255F2EDD22993EFF01EC46A1568B58FC28F87D3573314DEDC993004AA6C6C
-E9B617E4931B1523E74883E8E03B88E4A1991FFAE782095458A04752A8422F38
-D48E55B547A53BE6AC7CFDE51435137908479E87C5109D62C984B73E2BFD24F5
-2D414A56642CCAF056AEEB5A299B89FCD6704BCE23BCD81C204D549E3189EC36
-ED44101F02B9DBF8D1D9CE4C1362DF697C89C6BBFED0EAFDFAE2C5AD83C18C8A
-CB39F51CB5AEC24F7E0F663D3B53A7B0A2C277AC78DE2E29429F75071BB97AFC
-7F9762C26D4704003694532CF37C1A56D5517155BA77230422BCEB620E7EC9F3
-C6D531B49EDE685D354C7BE71655B13ACEEC052B83E9C21C3D50F69EFF06C8F6
-65D53FE037CE70241168AD11D4F3371AA8BE05F43C804481C27BD745ED277509
-E171A93D97FE67F4393C8E945E03856DEED83E72693886E16BEC3B2C8603BBC3
-F61669351E8574B8B60A425CB5AEA6640A8D79E1D1F2B949BA44D152F9A92BF6
-EC42415E2C941F291BE9B9596D2FF731E969BC54BB5CA6E0C32A63C776F9A677
-492A552EF20CC7EC30F63B84568F4D63A0989AC338A465F23CCBECAD2A485EB4
-4229B49A109A6C211B86D81B663C9AADD510E80341A823041A510811F83590A7
-332330499F3747656BC09B309DF7F3A4B3D069A93CE85AF1496A8180AAC3341B
-17E89EE49163473375E86E95A8E8E5AF26F29FA48518DD604EFE671555B9BE09
-5EB82F2E1250C59CF4040992BB4099B3AE4A80A5D6CD275AA4323DEEEFD43597
-E62FC06FEDD330EBAEBBE430A4F613CFDF4BB055A93F428FF35D7BF98D039024
-2E0C1983C79A133A1417AEB142476468F85F6A3089BE2717E3D67896D19FA490
-C4CD562B57366DEE84C857186645C4676C22E52FFBCD470EE2C62C6E4AAB0563
-9FC38E300320DEC4932920A64B152E3DEB6A793A4574D7806DBE3F4C2EC9888B
-5649A359CC203C2F71A91761847C3912E5CAA5919CC7C94D0F6BE8B1BD90ABB2
-2A002558C6D3A3EB5C02D8782A92FEE3A8AD71736EBE4BC4E987BBF0E5EF69F6
-CC6EDEF9E6EEA553E5373B010DA099907CEEB96A734884F5E959095F3F1EB9A7
-684BF6B638AD26F90F846B528684DD6457047DFA42D7D31407E365156B618A05
-E0C3D1D7B1A463E7794396EEF9390043547EE0623A16FC124A7F674A5DEF1A39
-D83FF41C05B8A407CEE6F0746D60F7DB83725CEC32E473D409C3C86A3FEDC78A
-67B03F145C16F1812AB2F8211C009D678F2871EC987405E4EACCE2F5F460E907
-5158D14300444A6F7C8991CAB4957AA40A75EF24ACFA4F151ECE3C357812B657
-104E0538D4105FCD089D1E81D08A9BAEE684BE1B397FD8D6B92F86979F67B07E
-B827697FE8DB065EB4698CFE11074C9E6AB8848B4767783A02FFAFE1CF097A22
-49BA4A46F719217287EF866BDFE7D7C751345E5AA0E578E54650E6A826C0362E
-A6A9FB112AC16FA42F9BF8B7D6653831B04BF675BD1D27A1493773E798740D5C
-034E3F19A89EA4EE3CF7E3D855C3CF4DE1FE6CDF1087591FB97CF3EAF7A1915E
-CA5ABF5986DE6B004540DFAC498950F6FF634795B83F9F1F3889AE41825FB89C
-3246F2FCDA575E926B6692F1981533759BDBAA46BC195525A78016B8C57356B7
-0F1203F2B9C61D457215C23F154ADAD643A2ACB456EFE642891FC7594CCD0771
-C64BF9A93F1701E000BDFC29AA5821C2BAA0D9AED8D3806EA4AF710E03FA2F49
-B5DECFBF182B1CBE354B697A6E5073F7C81C47C55138A3819E121884A0A5E87B
-E8DE4D02
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: PLRoman8-Regular
-%!PS-AdobeFont-1.0: PLRoman8-Regular 1.11
-%%CreationDate: Thu Apr 13 18:00:00 2000
-%%VMusage: 1024 31375
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997
-% ADL: 556 156 0
-%%EndComments
-FontDirectory/PLRoman8-Regular known{/PLRoman8-Regular findfont dup/UniqueID known{dup
-/UniqueID get 0 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-17 dict begin
-/FontInfo 13 dict dup begin
-/version(1.11)readonly def
-/Notice(Copyright (C) 1997 American Mathematical Society. All Rights Reserved. Adaptacja PL JMN 1997)readonly def
-/FullName(PLRoman8-Regular)readonly def
-/FamilyName(PLRoman8)readonly def
-/Weight(Normal)readonly def
-/isFixedPitch false def
-/ItalicAngle 0 def
-/UnderlinePosition -117 def
-/UnderlineThickness 36 def
-end readonly def
-/FontName /PLRoman8-Regular def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/StrokeWidth 0 def
-/FontMatrix[0.001 0 0 0.001 0 0]readonly def
-%/UniqueID 0 def
-/FontBBox{-46 -260 1080 920}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0525392EECAC163E584A9104D99AD0BC
-1B1844A0E222653FA481B8809B26A46F4C483A5D7E95816EA6582584156CFEDE
-B994ADCFF4645140E3617E4D7E1B0E4541CB9F562E55829B4DD880AABE2229E9
-4A9FA259A734D29BBA91BA1E2055CBEA4339BCBFF98D32CEFF11F296225CAABA
-DCA10577A5D431B714726C1278D8101ABD1BD8D0BD0174FFF9148F8C61C241D9
-2AD360A28616CB4A0670C1BF13E7A26E167F6FFBFA02D201035C41858D1C9BC3
-C5482BBAFCF7DF8061B51863FDE697437824573E60CC3736B77D96B9B17F4AC2
-4CCBC0394C27774C26FC66F04993D0E73F619503565343C1E03ED8880A14A7A8
-E686CEAF12D18FB2C70E54D7C524923386E488A5781001B47276F3CCB8173466
-544141F99FD85B6BCEAD8A7E1294BA184AC78C372F2E51950F79844BF99538D3
-5CA2530E636C821BDBF28843F9F48878C5B3D1560AD7EBF9279E90C993EB09E9
-47357DAFC76071F98E84AB3C17EA7B49A06C55E512F6265F15555A6C47AEC525
-381449C04D2A48C5C72CB15E07EB74DE8FF1F8572AA28AB47DC19E5558D0CC68
-A51733DBCCAB4AB8798079565B82622F61A03472AE0A3DE6CD251493DEF89C38
-5255DD4CD5F214B6A7B36AFBBBA1E86D352FF82CC01B72872C33384180326A01
-4C998B467A6F5307BB43CFC5807C5516517FC7066CB1F147229B0CC9A0E20126
-28A6BE305080E8FC9A94B98D56FFBE6688309F6D9793FEDAA5926EA5679791D4
-74BC0B7939D43C0AA387BB7D9759D0213A6F36607CC721D6B87FA453D0E82635
-D5695E1B8D43FB421979DCB016E5CA2765235A8148701570D9563168F06C40EA
-E2C3813033A5D7441FE2F5A3B451290BCA5D541320D8DE86610389C0D9DB3032
-4F35E3F41F7FCBEC699C2392CC42065233DA1DAC8F01EFD3C68B55FB44300E0B
-11954CA5863023430A727D50DFB8D021C3FA1F371DC668BFE9B1CF2E2C93B0CC
-107A3BD2986CC84CF28D4940F93FA5BD3D4314B3C4B93CF52BF89AC53466038C
-05C0592171D6DB3717525B37D33DC7D4DCE62BC5140AB590C156D658E164D88B
-56E6F9CEAE61FBB850C398377A8B3B9B0605595400D89642FD874209635F566E
-CD661D7DB1F56AE69F266EE3AE8475A72A79FB407FC26533A22B3EB9B11A123B
-76F23B805B496B37CDA7823E39FEA037382CF60E7CE51F6532B87D96246DF48E
-DFF837FA25657EC253C20B175686D514DE3EC4C75BA916D2BE7E935DFDA9DE27
-054A0914519B226A7A8453ECAFA803EC3719606C69B27C28B8831608E37AB0AA
-60B11750ED869357A65973A96B30ECA2849840ECA56B29812065F4CB66E936CE
-0EF228C1CD2E68F237F0AC62A0776E6F2EBC33865E5FE83EFD89FAC4C11F2F85
-E0B96415723A8F20391FE6A514D30057A0913FB3FB117254E73AD81D40CBEFB3
-3B4B742142323FA3C3B562E1EAC34E7FF56F7CDB72907984F5E73CCCCEE37DD3
-ADFC1C309B44756AD5D93FCBE749DACB54473477FBEE8798B973D7E7C4052B91
-189F059DA1B284C7F42F6BB8D95B4067A8141AB8B4CC2F091E6135645CD869F1
-A903EF745677C765D4CCDFD8B568F1339BBEBB63F268A435FE43E20B99E1FAFB
-7FCFE79828EFF008C89CD60F2D73FF874F5F00DBCD673759B39B1EC0F1E2AA5C
-A952A079E1E45B9DC216ADFADE342458015F5764D7DA28C536176409633C4337
-22F5D89E57354423D8DABF363628E62B818D14C7C8709016D2CD3EBF22608D12
-B5EAD4F2183D20A1D74B6F64989F395AD1F4253B4FADCF44C5206D8DE6AB0A9F
-67A9A5FA60EE600B71B912109EADE2541CF8DAE849562C79CC225E96A94B9BDE
-472EDE36F8DF14A368A465437978818B4C8EB837A10864912C2C9C3FC2897183
-B0B225E5156CC72A5EFA2F6C2FDABF8C0D2788448D65E6F02604D2D63D3D43A7
-45DDAD53383BE15E76538061CD6523C42AE04A309AF8949EEC96498BD7FC84E0
-ACF4C687D965E78D2A8EA4977311E33C823AC7FC1029291E7A26EB4DB0974703
-86BDB6CD26559D1C29873B6A659B937B96A1F545C8F0E4D6B74CBB6290BECAE7
-173EB9071FE57904EE3DEB4CC00F3E4019EFDC1EAD90B0F8940695805370574F
-61D17BD6FC5C9FB8D18DA9DA3404E26A97DC64A8257B75361C9829DB6E453147
-DF8C3D1F0EC964DCD9D577A5116B1418955484541550F31FE244405399F18482
-4744E06EC1D1D83451A8078E3DD3DF939F24A13BE4C74F1033CF940807905AAD
-81B0FBB016A6ABB87AF68B306A45E502A5156D0D822E770953A57C1164D26A10
-9947F3956628315A221357E004F62E80A1719218A18EDB5C817F4AE4576E49B0
-D09786B499E6E72C22F7B388B3D2426DE85C619AE7B63260B6F3D9F7389B5B9D
-2A9C9BB8FB1B2B95D7C8479149B8F71D794844779E3E75A3B587ECEB8402AFB6
-E5E9868BE0ACB7EF6488A4C772D67DDCD7084560CA43E5BA8F6F2AC2615C55A4
-F4E3D9DB6C3D0C429A3CCF6A7BA17AE2B5DC446FDE3105FBECC25AC56F94455C
-5FD01C1F2DDE31AD27950AA807562480E79985DCBC685AB12C8D4DE1C39268FD
-D2230CD25505FC28D2CED46EA6CEDC27326B62520977CA9EAF4356A981AB0F7D
-6ECC46A2D259E27A0625D1B6B7BB058750DF7E7961AC02510F5B6EE04E45B561
-E9988871D125317E14B83714D18F84E5C4E50BC74E4467777AB55BE7E79E6A34
-DAC730FF609EB5815E8929FB0742BC839A39E9378CB6D5F4CF46F48C321ECCE7
-246AB4E34AEB39829B5EE09B1EF172E8C0FFEB2E655E5FCC51C9DDBD83F855EA
-C474A8736927D72421F28DC5199CB64F57A392D2738F84625AEC2D3D6BA583EC
-24398D567BF2EC06CEC72976C1AB6B3C31410E8D6B00DDB397C0E357E657D0CC
-D61EE7A6DF3277E3D551AC55B34825D09A6F2495A39D4B32FEFF6182802287A4
-868542F933B667468D197BBD57C0E2D8C55B7673C79829358469A3FE856445AC
-A1D8FC1A02958FA16F33A2455597C010A1E3526B264DD15CD6313F6CBCDF8B39
-A869B985EED8CEF6824FBD8DD50C04CED7F87DA1797A60C5E8DCED65C1074A2D
-AB87621CEAF1864D59B1AF75F5A9128F601362FDCB045942E26D5CA5CCA1987D
-3D16E2FDCD4860EC357C5C7C61943C75F27EF6BABA6D1482E9C55F12CF7CF2A9
-13FB2CE66241390A3ED026FCBAE7E568C0AC6E1DF14C0C3E92E696B8F8E9B7E6
-3E6283F537235581D28C2EE4615334D6B5B69A25565F3514D43A141A85B4B1FF
-B55204CF730FFED115661513AE690AECDD91791D761A45D69CCBC086D1AA38E2
-780FE896E01C69E46591BA9CDCF208058849432FF49CB298674BA423C1D6CD6A
-F7BC99FF5C9B52264D486321F3D1E703E9A9E433A5AEDA8F83954EAB5781EF18
-E08CC1F7D36D1F0256561DB84E0DBA4681990CFB4A9CFA7584BDA40906265D8C
-6F9AF6978D929610EBDDAE08DA72021D9AD36682B89B02E385120D3B58213C98
-B0D69DD391C9382CA888C679ED3EB9B52AC7354906F0104D3990F40678B17CCC
-CB2C2BC758B1098AA113BA62F11004E1302D6A3AC104CC5B467DFBDD92A14720
-6523BE1A8D74DBFFC7C51921D5588D4524070473397D45BE89DAFB02871BA701
-D455FAA6B79CCFE92DEB18715405D2823867526EFEC419653EB3FBC428592F9E
-1DD0CC46FC0E92018032C37E968442AC60C06D49D4F4D92F7DA236C73B01A7EB
-F85DE9F84D3A5691C931140EFF12BDABCE7ECD74710D6F3518861A35FC1061EE
-B232963B3F0BEDF4EE6BF9C62ECA29A883D89878818276E4A5A520E260FB5780
-56EFDE8757BD405E1BB0B5087824206AFA5FE46559C2274C06F979ACA29B85F5
-85885F14D3BB3F2A6C8C837C41DE5D9B283955159B7F0C9D349CF28F2A577056
-73E627FDF21EEB0E1351CDC979DCC5C686D4C9E96650E4FA70975126E47F2803
-71E1F963484EA5717A0B4B63634F92F6862F44C45992AD1E45B86A2396A0FB90
-96DC4D2FE64193327485E7AAB8D4CAEB340725057E64058F25B597E0D475F3E0
-D76F461E9C7A0811E8EC4075D21B5F9357ECC41C4DF1DD0B9A9E1055B341DA1F
-71F73551EC7F6FC65F3D9F53140E618FD0D0ED7D053166500517C3D5C64D1C30
-B41002E7C46E47A7C65EB3AF97E72594C518A0034038946DDCFE3E23B27267DD
-B7191C87D5C92B15B71047215D80EFB45A0275641BABEC3940090EF2E3ED1FEE
-61436DA107749746B5118B5F4C57B3FEA20864A490BFFA4CFC27C7170082B8A4
-38F9CD97B97EB00D2DF8161335A24F561ECEB4FB6CF5BA98A1725AEBCC5CB1F7
-A93994DE3461A8FF61F2E56C5CA78EF6825A13BB04ABECA8B745DEEE33F77C17
-BA0EB6554C0CD94118FA8F3587D5105CAAD7D3534117B28A278F06A71EC263D7
-EC135192132942A076778D2437F4652FC3F2D1CBA0A87340AA1F3A80CDEA8165
-65D4B535A5EEF86D283956B995C6B0FCAE62AC953A08694BF444F28DA1C82E9C
-A1C2D93C8BD16760A91B02B4044AEE9931ED7B94AA019BEAD3E07F283A27E2D2
-C6708BD8A21E85ADB2E2DD7DE392216B7C53B891E16180CDC03DDD8AFB697A00
-9C4B3893DF4E2532EEB11A2955946BB92848A510C516C908501871C51A1A9828
-B41C13CA367D5A2B8E6F2E46F6C8F726DCE90FC2158B83382C7EFF505ADE1C4B
-837957293C67DF287C8B2340D731E4495446B5AADC2BF18D3CAB3AEB2B0B8771
-B7BA9939D0BAEA1174C492CE873B6522615E530B9FB90651AD700EFC78B4D4D2
-AF1AC365D58F3956C211A76C5B5D57F356EA4A9D7D7FDC6D246C967D99221C10
-E06B2F3E91005EC0BCC9A85A7D7C8906790CDD8CB5054547EF99B756661D6438
-95DF79E9BE619F569B936D8A84B759AC9A551DE571634BE643B4D346B14ADC19
-A793F80F1E6D56EF46C5AB9676458D15A7A1B69A9484857517A5F51E22F0F31C
-29AC65B5B3D05416E763B0D102F50FA386E9317108A182F9448DAC386C8CEC4C
-4A2E4950CFE234AEB39A20004EECCD3194408B8748374623A45C5EB8C4CAB000
-EF290AEA38F840066456911FF96A992819AF5EEA35CD76BF2F108FA45DF84B2E
-915123DCED78D3C953830F4FDFFE499FF2BD421F9FC06C7B364E6040B5027249
-A19AFFAD51FD58AC604FFACA84F2850431C1CA8FA02D92D6B2899C442A5A981D
-B37BBD0F95FB6612CB7D76FE663A99E6BA58A0A2EC4B1E541D96A6C8FBCBAAB6
-98D363D28FF3F3DA83E18BEE1E9E972DFA9D85A6CC5B38314F6AAC8B5CEEF712
-3DC1F6674B508BA0CA2F1D10F41CB6BF581E58F4FF03ACD3DA0F2A1298700C73
-551F9B07B443D1BC5E4EFE77037671FAAF08633A13C303EAE11BC5E7318F8D95
-72760FFA000582EC243DA0A9B677C36481A3E474F5A3D7ABF80CC0315CDF5870
-C595E8F8349D2BA5B47B3F387A73654956A72A8BE169C5D0B120667A01B928DB
-90315692D6BE29D6D17FB491A9DECF27C480F283578AD590D4557BDCFFB6BAEF
-8136B8116D81A730D638DB6574647F5F1463ABFF37AECD69BE9AD7B87EC13DF7
-B662B6AA178F4EDB8DD0AC194DF463639938A5A26374D1D5735B79C339F7B421
-983E61769C43955C269DACA02134FADD4A03EE61444C2F8DA54D9557145C8244
-96B2B89BE7CBEB6ECC8848D17A70BA8DB8DD6E5B41F5D2917F0497F0F6CAF869
-0596A92D6B28370196094CE7BD850DB4E7A6CE89EA7C92E0C40B31C03651F1D4
-45B1E94E192EADC2A6507C119021E687F2CB6EA298ACBCDFCEED5E4A97080AE3
-2BC98C90EC787CF473F88C935906D0BD17218BAC5C5CBEBA60F0298D4AD1B6F8
-5EC1E6609D09821BD121F361A0D2AE90FBCF7F0C9088B30640149CEBEF18C8C9
-0734DAF11F4928277A4F197E3EFBF17115FC387BDA86A994239C9716711FCD9D
-4D78D3CA88145F3CD0304A05C76BABFE324148AA96EBCACE22455CA060310D07
-69E1CF38CFE5F50CF6E6BF687C2500E3DAA62B3FF0C184955E04FC32A6CA464F
-42492C4FA45409B5EA00478A21937B0B1072631FD01ABCA6AF3F50DF969F3B5A
-C7B9417F7374DE7DC83F2B3D66FAC9E510D5EAA048077AEE3B7942ED0508663E
-38C51F5365F8E420A030E8713D457B54F8BF292D59FB3F556ADCEB45DF4D0071
-31943AD8320268AB1F0E9E41C167B865C8A06DF5F7365BE364258FE9318EB501
-E496182B15C6C4BBCDDB7094ED2C21EC501C520B42125CC79B078F0C2F3D497E
-077FF92CEEE279D2FF847399E70A9C4D00767155542EE22A0FA45CB0481D3330
-444D7448A966AD16A3D11FC76133074AF52C0A4A4A1BE90C3436EC6C3B42E25A
-41DFA8F71A87B059612007C141D6795671F3A1E788724EE04C6EDD8672F04BF1
-B180B3604072520484AE8BE66CA44B67C0831856D10B7DED00AE8F3B1DA1C704
-90BB59A0C9F513CAE4E7E7549429B0275AF422EB548577C286446247F1AE16A3
-C25FD6CA02D74451FDF612CD4E07EBBA6599DB6A9E6D157E7FB615FA653AF274
-4618ADB8B5F8FD83C8F01DAB3A6B7234E6136DF33F27A6DD1E55E7A513EFB425
-B3A0F9ED33760E52C72BE659A6AFF6FA89AB01DA0ACF1D4CC2A0E4DACA3EC7E6
-4E4E10824A8EB84608A5E95A2593A77AC3B48D4B4EFF99AC5E8ECAE12389B1A3
-02E16B7DB5970B85AD4B7DA373F0D51E81DC69EFC45BD40DF4EFFE58142BA8B4
-EF904FFEF935954AFB9BD2041241B1BC8519E238033113629B6246DA4B173E92
-9C882C49928D1BB2A9C024F25D85D78DD6ED27DF9056031052D9279097919A22
-5431C5E693744016124AE1F298C8CFE42A925AD42883914C13F1E40E091803D9
-D140375C5EFCD7AE903A45A531B3FF0D01341A77F5F142BB10E32729BB0C3892
-F3FF9C179F9A45F2054FAF27C47B84E63397C8EA891CD4173431F8F28084D649
-289E46000992DA783622A8DF8F0ECA99B7CD78F3DE7516C10068856ED15BCF2F
-BA48D1F4FAAC6003FA121C5611D82187A5E462AD7A7128010CC68202C17DC217
-C7A9CA60D39A737E8FAE822C8963E4EE812214117B779ABC586A2749AC9E0792
-A1437AB869AC036F4846E4AE49CCA926D2D683F66EEBFE6B60E40C0F481F20EF
-40953783C0AA5E5AF15279A3D414A11BCD5F7FBC20299DDC4C3039CB756C3DC2
-24122A755512E6E1B82614FA1BA1F145790C3C0C2D3B1495691791A0B3B277F2
-48C388212CA31B9D833A848E62533BED862F5C93831BC0D7DF4A7D89B17B01E6
-8D8315D95C3F4E7BD8C20BB0BA9355DE01DA336E69E76F551238BE8E3FB9AD4A
-566DB80360EE9E9232918C6B013EBC5CACDF4E6683D7B48FFDCEEEDC99610E1E
-D949844E178CF307F10F868F5484EA844C2DE853809D2019D63084442DC43E51
-68B38119A341ABA48C33E08DA77E617184FC84CD97519824DA3A4990703CC889
-8A859FBE7654F08D93E0C5F6E7249796D482759EF0ECDA75C678B3C8EDB84406
-CDE9B13118B1B756CDFCEA8A19E13DD8C68641F7CC6BE0E8FAB8FF04B95E820A
-3A1C90C85F73E35855764A9B8CA5BE4CA0C8C3FC699D2EC01BCA4DC383D3243F
-8F825BEC634B3E7506A8D328199ECEDA10FE9EACDE7B649BBCC5D78092427AD9
-825B7654F2E6D76B0E75CCECC577A01679757EECB85C8D3AFE287B147F6A9F87
-48502F4A198BB2BE26153AD81E8354F8B203776FCCB0100A89B425951D1B8F92
-48A26968B74E354BB337EAFFA5397857055B2801E7D7D7C23CF530D4E5A3FB29
-CEECD1AAE86EB828ECC41A6A0A5E89B4FAC2D686EB98ADFC9422773A6F8637D9
-DA64D2A24158D290EEFDF000EFF179080089918D3A502B3837C6167B2F3F6275
-131B545BB3BF3A27D91157033E8A34275B3F9105BD9E948C3774DC0D81015B99
-7BD95D5A6D2E16A229EC56E5288CD3D65277679C4EC2DAFBE68723D83CA4E606
-B0C3D2DD4C2AE6AF43A6F26735142CF5E886349383E91212FEE2C8CD98998B55
-C68F45D0DF8F1DF0471866F337222D20E2DED5A96469048562AF098EA46AA2E0
-0D6FF215EE9AF3ED128A9AC51A4B1CD0D02B3DDE08FC25128C9A440FCFDD220A
-80841B03D08C6D13EB000DAD73C64C85DC340DD9221323006A80D3706ECF7E2B
-1F58923890D034FFB3636B8CE8BE725389889891825E685D296616D727A89C9B
-EFCD87DB5546A990855D71099735224B1D86589C424B5D655C79FA548C96679E
-BC7CD17EC3D32F4C61C8619E31924D4E1DFABB55D26591F936B9634CCDA99121
-6DC7F0A516C38A6370EA9789C1A159DF5A0FDE7BB0B3B6BEBDE51DF41A98F712
-9D98F64A9911C43C1D967F23AB0AFD69FDDFFE5A1C2B2B7D6417B9B9F7871F74
-F32EDBAAD84D57CB948EFC9C9BDC9C56847A9C40E1FE1E7768DBD1E6142873F9
-F069429085567AB66B7BE423A7EC9FD2CFF80EC9FD40684C65605D540CD25CD9
-9499AA0E1624F181202EBA794307EB35938452E50F015DEEE493BBEC696F8515
-E991E9AF9A6E84D6010254A43E27D51665E509C8F9D526BC971FC1E59A948E33
-42FC09EC12681682C2FB84DE3FE4ED85DD647659C2426F6227C91873EA1E71C7
-90F1A8B46DFEAA5BE2976854217B5678678213ADBEE8A4222C11ACEACDB1339F
-255D42B9616CD67B0D406674C6E3E48CF323DC2B1784FB78A4FF02D5A1D1D5FA
-854135EFD4CE3545163013073574D8A504D502134BE30EA125A1A67B982478A8
-039EF2120FB08CD896F4CC8EB9819F5DBF74CEDC0D5D3564AD5A30151D920BE9
-5DB92CA93054D133A88A4E8540A4BD84FC05BE1AF6E6F101F07485442DBFF263
-D0AC098CECF52E0BAB9CBB766E982A849674E4053F0E3DACDB2637D03F900BB4
-C2BA4EAF9599F9F8F6F3FA2A21C96B1A3894090AB7C89BF1F90C5AC9381C998F
-8BA03805F04918729E7E1C75FB3283AEFF4EF2AFF444946A08C6FC7545F8C21D
-55A6D02C9C7CE37F62C54BBB31CE87AB0578811CFC996BF912809474583F4EAD
-94CF4C2C533BA4E10837B4D590E00460DC9B19869D8EA076C6BEB9AC5C7F0930
-6C793353E2BC38AE62B811E5FE9B42CD08612C1010C6D13FB3BBDD6436B1358F
-84029389630A47C01CCBE47224478A3797194A5442DC4F0547E58A3E07AA72C7
-19EE53B58A4A961DED5E06B9614A41F04ACD5D82B122D5E537A8884C88A30680
-E7420BB183CB7633FE6492E65F775BC4CD490116D87DB13D315377E4D9D18AA9
-40A2D014E52817F1D25307ABDF2AAEC100F0D61AD0879CAD4C7256A6F2572D5D
-4DA5DA57C4282B6A3EDFBCD92193C82B6819EC7A0E097B02F7F00A21F1AAEBE7
-A3E9D49CF87407B56B889FBBBCE311D287C59A2B07520C039A728EF2371F7813
-13188248A5AC5A28D760138CB78F8E98AD1007D3BA6E2AE69412055EAD68A871
-6CFBCCFD033F5115A9540A3E871B6935832BA240B28DEC5FB76CE50C5CBF4E31
-4A0EDBBCCEB01E837B18CF95543236D509062E9258BFD1D9E60B481957D58C3F
-B480F16829CB834856A2A46D83686EDB11D99163C96185DFBE698C5FBFD425A6
-9C783E86CF8DE5EE731F7F0DCE571434D9E8B0F75969801D81EF462278192288
-F5E4AA4EB478D42B345965257FAC9F7EE6EAC611698DD3D7DDC247B4EC54431F
-E9A9C1E02DFD319644643919DF480D626F8F6C4B870C2410B14FB7D558CF1940
-FC9E4F76A23D4F95D15FFEEA0BC8FFCD59A003689C036BDA1F271E00AFA7D2F4
-5DA5CF2FA4C13E3F7F3CF95DC4D929319233F8CACA302EC0DABF582182FBE2B7
-C8C1E962797B2F78BF0695AD8E3EB83C296D13B40ACBFA7860462B466DE909FD
-E59203E41046C9CC546F0AA7DF04FAF9BF7A9270933D8B167D25B884FA9B1424
-BCD8A86D15E8D5BDD2EA983AC7AE11C3A627E1B4C8ABACF1A3A5E5EF35C8D4C8
-DB34B96A9C9FBE4AF511C281DD652BF4B19B8D3286408B2F15B775F539728BF8
-561CD76E989896337FC86461E2AC656CD4FB63CF50B9BE39A2DAC6D19DF94521
-70137125554AE6C3074F92A087E85C326033F43A0EE3AD384E901CF96674547A
-109422D4A764FB8E074C0ABA9B9EBBF646B2CF9213303674DA2899B0E7176F71
-1C08C895A205FE2A58F63051244C90CDECAA9EDE48268E9A30EB41F7C7C8B9C3
-286FF7EBCDD8D88D5BB8236C73D275F48CDB393035C7C34CE64BFF822731CB57
-B412DA75BDD8DC89E4006297551EBB8F8DD17DCE29389F17E25F9A8937812993
-709F886D67DFF017CECA614101DEFCEEF27C73C515328B1BFD174595E361AA06
-D9AD9D6BAA92E985B513F344EA9C395BAB1D5DA7F092724DA1A8896B95DB1EDA
-54C18AE1124B37F37361E2D4778180D279EACA24D8B0556C8C35AF37D66C9D36
-2B284FEB3C8E119FD40728984FBB5D707A73A4054038326303B2EDCC2B320A95
-9CF9CB7F75850F94E97539D44BCAD3E1B344447D55FE640A8791911E0F6592FF
-403FD242FAC2887994709E897E990AE0B90650894F020B2FA8E70561819C3196
-00953A6D08AE930BEE0DD8010786431DEA7A06396DEC4CA387F4ECE353A1F262
-A415164F9FCE5A3AB645F3F1C2492A5D6A806C5E2E0F1A32B4AEF4658F37EC5F
-AA5142F698F4B47ACE8E6B9CDB63C66B7415142916176AC37C3FAA05F65EE580
-A47FB2AF726DA0178DFF6507B1E539B8BF06738821D62BD6EED27E377A0773E6
-55A753168E20D89A2F019156EDD5F4F259264F34AD94F3355A0EA1BE155A403A
-C2FBCE53095D32237781F869374C555EC2C85F173519D01B4011E66C5A5C460A
-345D6A47CD4C7723EFC96D3F87F125EB67171CF21548D17AC5E874AE4DC1EED5
-422FA44AC0A8AE53CA89F843C0C82960D9813E454EEDD02E02FB2945BB83FDFE
-69567189255200701787FE407A55DD7F39B9CC018A3DCBB912C0A7069C700870
-63935DABBB3169014C53D2AFCCF8321CE55B76427CBF8A8792DB025C79457E2E
-8AC9CE36DC55DA254AC9B584DF22F1166C2D59BF13DE16F609E6E1D02B009D87
-D7787088F93BDCB752F0B33BEFC4C54A01DD0729FAC6ACCC0B581A791ABC8B6B
-5B3975C98113C0191F42DC1F16C27A239DFD8824F52E0F52489A13D73FDFB694
-7E5A4AD1DBF2C33BF6C7DD8BCFC9C206D885291F3DADC62B6F85EBF53996997B
-38CFFB4B46E596B18F97AE1A2B9D614A460C6DA4FEDCB521C094752E5514C4E0
-A230F6F53A722462EF6C757B7AF73047B65723C118F8FBA5AFEB4C5110F6897C
-AF863825C16354255FBDA1A11E032F5CE7938F9876934C8F041FA6B0B28B1475
-C29E7A6F6134E6B7834D250263CF0484300C701AFBB50C9D3819BF272DE9E072
-5355D8BA6CBAF7918783AA5DF2A7E04205166034F08A0B9CAD265100985D711E
-C93AF97AAD54C4B62FFA16346354CE7C8E0485AFCDBDB6411CF2A11C945931E8
-1694E072414A1E454DFC2459C38158DE94153A893D27E12CC7AF879C440EF4C1
-B4DB8772520AF9F33FA6AF50F10042C55DA356EB89937479D0D4AE4A50A5CD25
-DF4F1CF780E22D97B61403A3AB0FE8C06A205B78DCBC9F07C1B51BD17A0C15DA
-6DDF7CE93671E300D47132008080C78C427E5D20D1FC6DBC6DFB821355F6C024
-5895AAE922E6928304CEB68E29AF7E1DB701F8E3455B367D1EF586D46A452A6D
-AE76D390C86F059D5AD4046836E2CC32DAD05BE0764157BF01C8046FCE356D97
-0BF3D50DDD1FB1A4B4F4D8526B253C6107465F766A5A9FF9B25A0A865E724D3F
-BD101E3301FE55B7DC49577004F7B413F5DA0DCAE6BDBF74D55340F9ABF01F90
-DADFB4DD03339EC57A1F5844F3EF3F974D01C05051BF2B71452E0B86C16C31DF
-12AD5B430F784ACAAAC977B910F9410D4DA78FDDE71866A111060DC04A9B7EE3
-447E8D5E89BAAFB954EED6F5519C8929AB015E1AE23341B3A7E64DCEEAC77792
-BBFF9BAED548B0BEB21B1A20239265A6B9FB0DDCDB9DAAAA93476EC412D8F9DA
-717DE5C0409E3B8985B528B517EF4D7DE95EFBDDCFF61B31905CD6919ADF2E99
-326104E3D761CC12B30ADAC02FC95984060002EA64DE673608F2BA4CE7687AF9
-610D825F186B6BFA2A65AB82CD8115DD1077A18DFDBF5A698E094341400EAC99
-E86343F5725B852F9AEB88538B137786C60D3CE62BE0B97217E06115115272F0
-D2969F6664B28073FC63B58B8CC16E845A95028FDC070A874AA86A4E2BC706A2
-C0D28FC06DEB1D82D7E17829A865E948D4E265B6FC039ECD95F6AE1E45DCC7E7
-85EBAFB74BB36B09FDB91E2A7496CA4AD5735FBF2685A1DD6635051DAE86DCBC
-FE2C218F64A21F76E60CBC196DCA5B2FC701CBE0EE41CDB25AC717A8573685CB
-0275B9F54DC365EF5BEFF71A9B3CA12345AFE1857B21769BCA79F0211944A2C0
-DDAFA93CFDED3FAEBEA72C7FD8BE710D6FE41E403E1DC6CDEBED50F1C034506A
-3761225C99674B27596940666C503E7CD5B248F2812B3493C597E69B51290F33
-E63359A56D0BFF41B5731FEAE368434D471411B1DC8A1AACB30E79BA2A4FB832
-45D7D2D45C6207ED7264269C84DFD7735988F8EBF44FD3304F36298C7AF2400E
-7F92C81E20C31556C90BDDE6F1260E6D68B25131259675952596E2EC365755E1
-606E5E61FA489CBF883C539F3ECD897484C88F530802A9F3E947BE40F71DBD9A
-4F35AA01D1B927C534309B31AF9BC1DE351A23ED1C8823B162A0BCC1DFD8581B
-1CFAE0F45CCEC717566D2726835C5BECB4147CB90E1F6BB04956824D435C997D
-7CCC8D1F46974559CA1EF0B7FC3234D9EBDBB7709117FD67ED3D905BC8C2F07C
-1B38EC0BB305619BA9B0E3B6D234274A8BE43616588DF08BBC60B5DB9D1996E3
-DF4BB78F2B82B798D603C9FD44592B34D371532CF3455AD9EDBFB44D91DB0BFA
-0138B7346868AE305FE7EEE0C2916CCF382DD0728F4DF4C45213F72E98D093E3
-2C7DCB222BD91675D581EADD9FD5BC6B4F3CE801CEEC450F737B1093D26A1C91
-CB2958844EB07E3B4B780E51B1B469A19D94264C9A74DB3B67391940EB7BF8F8
-B5708BC044C23DFDC813E70B602F8100E8A0E694F90EEEBCBAE58FA56AF14725
-E3995E5CB8126B6765626621AD4936921822938F70FCE180655F44910C968C65
-59BA9200B9DA68297BE8A802748266B2B5E4B3F7647FD88AD4FB366C4066F66C
-01CF96A20F03A8910C553297D1399FA0C19B1DB9BBE40296A49E4564DA6C51C3
-F01AEE882DABB7D33D717C53006BEF8F5A60E0406A7E7326F32C3538E189F268
-C286B3EF5897DA0D83A5B08A98AA6EE4874D6499FDBC0AE9201FDF4B2FFBA028
-68BAF3AF1DBBCAFA7DB513D3862822EE91CA5F54DB0AC5F6417A7CA682051C83
-89E88D28E81D7361D0E946B14EB7A3512C7AE38EA3C067A1C107EC6B0A443456
-8E1BC11C568D091B255748F695DD3314F2B4BCC9F350EE64D44A782B627F9FFC
-B9A312B657C7D9495ACE71EABDFFEE67862562C010AE5C851FF518A45AE70152
-FBA327B97D67892FA9506487995554B078C711331156DC39DACA9D7E8171C756
-20F143F1323691F9ECCB5C91B330D0E8D8069EACB692DD7EA0E7389D5CE5E0A5
-E13406703921341390B488BFE6F41A91B37D7CD6E5C1F011D26427C5872F12AA
-0CE1DE763037AE40C9AFB488B48A246E064A4AB04DAEA8906B785B43EBA146D2
-BBD1CECEA355FC195197D1D06C2C33A36C9DD4BF5E6B7AE55A67728A31A47B7A
-E831E8B6A2E0A07930229C2994F3A00048731069CA4D3336B5FAD3CF91478E7F
-FE96B235EE9603B10025B0ED1DD70300765E5550DCF62DF68203FCE7DBBB783B
-A2AB2F9A75D96D02FCC5F5BA3ABA0E3D0C65386749972F84E91DC312E31E001B
-56E5FF546E219BA46DAD405158B4B865DBC499CF6D715A4081F2B53E958B0448
-1D2AC8E79AFB2F643D59983DA05CEC6D0E3E997028E20D022C743B18DE9BAA76
-A70A117CDB6D100A1AFF652032D4348FC9A3AEFD190FC03100DAF894304BEBA7
-82786B4F50C13A70D9EF0C6B3DE685AE8AC10CE69C823866305F3207C0663955
-612AF91A19C55CCA6ADE1D9E8B8838EB8F7893F15AB5649D77809E18A58398C3
-857375AA5B9C0039784ABA892FBB524D0E932C179BF28C45DE6088E4D4DF8440
-D8C0268B2F0B59F29BBA902790F1020C0BA11586966695EFFE4B14095694B3D7
-BF65A4927ED52817C1CD73C968F13A9F79544918ED02E4C6B9686EC5BC77D108
-4CBC86CD49A1C7112B8E3E6A21FEC000576F732F27FC98BBEADB043188968A9B
-76F97835E4380D7BBEDBF4C3B97FF9CBDD06828E95FFE3E11797AEE8787E0B73
-69FBE5212734078A8A3DC378B0C17E2A63962BDF4D97ACC7E2A8085A71C42578
-DB40634AFA3498630BEC9367B5F6F472D2053BEA4A4B84440529C1F1B8695A21
-7E7CD84B9D4F924129F21BA2D1D6F7E27A57CE61292A06DEB73269B47679655D
-6B2737942C24ED49366639EDD7EFA5D2D223E52CDEBA17BD19FF47D10F401CAC
-EDD9916D5249DD046C459025462E775BAE3143C6004C4A826633446BDABF25D9
-B3B0AEDDF6585A51E49293E05EC35C0AB151464F786A5E87658DBF32F6D0DC28
-748159F30D56C40870F1936638F175D3AD4E8FC61BF9F5E3EFE0E635FAFE9E00
-E7517C54BA553C717FA02B5C7E66056BB68CDCAC43CE0B7B56AA5FD7BBDEDA87
-D8B5238439D589EDCCE7923766CF7D25DBB9FA70BBB088D3899781D7B3045FF2
-96A6FC41A267943125A7C65E949991860A3CDC129D59E4BA56209E7A3FC43FC5
-9F6BBF6F56F075BBEB47D841D0C3D4C6F8BD85F277F6DD732F73DD6697F12C5B
-4317BA505B0B46A45E05CB0EE8430F216DFB5B2891F7214641B50604D4070281
-494C635D66AABFEA79E3100A16E6EB31D9C320E34F2EFDDB0237BABD99F3D5ED
-2700BB1367DD7ED7BF0F31A87C6FEAF596C1BECAF420A8E59E08C78F1C0529A9
-E81A411599F343F07D7628BDC8B045DB1B260425976C12C80E4D38A24D5D458E
-3F55F8D5D0D823A046B8E6ED3BB2DB5707F96B012C1475AFF25A304CE2C23FB8
-E4AC0AD95EBAE53EA8CCD9BBB436676FFB06FE4B779AAED999EE403D239BD728
-B8A2AD327F8DF1FAFC9C621991AA6DD62F8A033264593CB4AAC76A132C32DC02
-E8A762976D03B915DA0552B8D466AEAF8FC57714A81B91C5031F5DFBB2932347
-A75297C2C6BE407D3F1D52AFD4BC1550827A7F56664FF865B548849492EF0BD4
-70F6DBAA26660B1EA63030AFB30A82D8A52AA0F5FE263926783E769D899FC743
-95C0C7E735A3ACCB6B4047B72A72DE0DFB2CDA8019E2AD0E3C368DC4E023187C
-86205CD1C53EA3A5C2A14537AC47C94A9E1BFB20B614EC93A2F24B401E9E5963
-1C5811D0CC797E196204DE91D2939992424C47D8E099AAB743C3A467E1ABD791
-8457E75827AC70B67FA0A30882ACB7854DE8D432828A33F1E1A0491D1A4B0EAD
-E3F5751600D83565D0984AECFE9E66399F45D8C1B2B7113F960D3BA3851BF1E0
-2C91C149EB0DBAB88279B3B881207FE40969B0A4ADD21E0897F8F775CF9B45A2
-CA439B63BBEB1936836B4F631949E6D3757B822034F385BC97602DE8FE7A64C3
-BA9763995DEE384636E6C23424A2EEF3F7943A5D053735DBC15FA404A704AC74
-9ACE75E95A0351FBADFF4B1642B0216F3FBF94CA131F7782F62A960078E42D4F
-B7243A28F99770339E02AD61A0BD4C61183EC999CD24BE87F0D3CEC147157145
-C82797C98842DD196DE1024B30FAFB9B93EDA03CCD8A890EF83423C501808C03
-C89FF69B74AC399604E11BBE039EA7E69E4C66D728755CAAD8B2970FBBAAABF9
-921E23B2864043F1E2CBA4DFDC6C215E944107776289376E5AD409F065DF0187
-2CAD15EBF47DE0481A08BA65CAF4B348F1E6E73523A6E1A34D44D837091A6260
-F217D91DECE903684CFF88A5EC91E458AD3F43DAFA00DE90E4FF42985BCB01D9
-1620879206A13B36193A06C46AD3F75C7E4339BE86B20200E15B07B02C711B06
-0818AFA86416E07BE7B0DAD8AB233CF17FD78334C7B4E2446CF5C643B9D5AAC6
-AB86DFAB1B53FD93C8FC6E34524EF28EA6565D7F9A596E6CBE6D2BF192195627
-67BA09C4B7217EFA08B6BA127E50F4C3953BF64E4E7D2F14E43E5B8558F6C908
-31C93686CFD936FA14F41AF740BB420AD26311BC90B64305D53665FC27B4DB73
-3297517331506937109C56228D771AC2F9C8A3AA1F791A1BC6D0A7DA858C1BAC
-A59F28697EAA0DFB6A6353FCE1D07C4D3BE598B04294AFABDBA9971F8A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (pl-refcard.dvi)
-@start /Fa 197[20 58[{encplmi ReEncodeFont}1 66.4176
-/PLMathItalic8-Italic rf /Fb 78[29 14[33 39[29 35 1[47
-1[38 24 1[30 2[36 40 58 1[33 22 22 36 33 22 33 36 33
-1[36 51[26 45[{encplit ReEncodeFont}22 66.4176 /PLRoman8-Italic
-rf /Fc 242[61 13[{encplms ReEncodeFont}1 49.8132 /PLMathSymbols6-Italic
-rf /Fd 85[21 47[27 32 1[43 32 34 24 24 24 1[34 30 34
-50 18 32 19 18 34 30 19 27 34 27 34 30 9[61 45 45 1[34
-2[41 1[45 54 3[22 1[47 39 41 1[43 42 45 9[30 30 30 1[30
-30 30 30 1[18 21 18 44[{encplrm ReEncodeFont}49 49.8132
-/PLRoman6-Regular rf /Fe 12[41 55[36 9[32 5[45 27 3[37
-3[36 40 38[36 43 1[59 1[45 32 32 34 1[45 41 45 68 23
-43 25 23 1[41 25 37 45 36 45 40 16[55 34[27 45[{encplrm ReEncodeFont}32
-66.4176 /PLRoman8-Bold rf /Ff 12[35 55[35 1[35 7[35 5[35
-35 3[35 3[35 35 34[35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 2[35 2[35 35 35 1[35 2[35 35 4[35
-35 35 35 35 35 35 35 35 35 1[35 1[35 4[35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 1[35 35 35 35 35 33[{encpltt ReEncodeFont}
-85 66.4176 /PLTypewriter8-Regular rf /Fg 12[57 55[51
-9[45 5[64 39 3[53 4[56 37[57 51 60 1[83 1[64 45 45 47
-1[64 57 64 95 32 60 35 32 64 57 35 53 64 51 64 56 6[70
-2[118 1[88 80 64 86 1[78 86 1[109 69 90 1[43 2[72 75
-88 1[81 53[64 12[{encplrm ReEncodeFont}48 99.6264 /PLRoman10-Bold
-rf /Fh 35 11[35 55[31 1[31 7[28 5[39 24 3[31 3[31 35
-37[35 31 37 1[51 1[39 27 28 28 1[39 35 39 59 20 37 22
-20 39 35 22 31 39 31 39 35 20 8[72 1[53 51 39 2[48 55
-53 1[44 1[36 25 1[55 1[48 54 2[53 6[20 35 4[35 35 35
-35 1[35 20 24 20 2[27 27 20 4[35 20[39 39 12[{encplrm ReEncodeFont}65
-66.4176 /PLRoman8-Regular rf /Fi 84[76 9[67 38[61 6[54
-57 1[76 69 1[115 38 4[69 1[63 76 61 1[67 11[106 4[94
-1[108 6[108 1[90 69[{encplrm ReEncodeFont}19 119.552
-/PLRoman10-Bold rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 16 83 a Fi(Przegl\241d)46 b(p)t(olece\253)g(GNU)f
-(Emacsa)738 191 y Fh(\(dla)24 b(w)n(ersji)f(22\))0 398
-y Fg(Uruc)m(hamianie)36 b(Emacsa)0 564 y Fh(Ab)n(y)24
-b(uruc)n(homi\242)g(GNU)g(Emacsa)g(22,)f(napisz)h(jego)g(nazw)n(\246:)h
-Ff(emacs)0 672 y Fh(Ab)n(y)f(w)n(czyta\242)h(plik)f(do)g(edycji,)f
-(patrz)h(rozdzia\252)g Fe(Pliki)f Fh(p)r(oni\273ej.)0
-875 y Fg(Opuszczanie)36 b(Emacsa)0 1041 y Fh(t)n(ymczaso)n(w)n(e)26
-b(zatrzymanie)f(Emacsa)492 b Ff(C-z)0 1120 y Fh(zak)n(o\253czenie)26
-b(sesji)d(z)h(Emacsem)629 b Ff(C-x)36 b(C-c)0 1331 y
-Fg(Pliki)0 1497 y Fe(w)n(czyta)5 b(j)22 b Fh(plik)h(do)h(Emacsa)742
-b Ff(C-x)36 b(C-f)0 1576 y Fe(zapisz)23 b Fh(plik)g(na)h(dysk)898
-b Ff(C-x)36 b(C-s)0 1656 y Fh(zapisz)24 b Fe(wszystkie)f
-Fh(pliki)807 b Ff(C-x)36 b(s)0 1736 y Fe(wsta)n(w)22
-b Fh(za)n(w)n(arto\261\242)j(innego)f(pliku)g(do)g(bufora)249
-b Ff(C-x)36 b(i)0 1816 y Fh(zamie\253)24 b(plik)f(w)h(buforze)g(na)g
-(inn)n(y)578 b Ff(C-x)36 b(C-v)0 1895 y Fh(zapisz)24
-b(bufor)f(do)h(pliku)g(z)g(p)r(o)r(daniem)g(nazwy)267
-b Ff(C-x)36 b(C-w)0 1975 y Fh(k)n(on)n(trola)24 b(w)n(ersji)f(pliku)g
-(`c)n(hec)n(kin/c)n(hec)n(k)n(out')293 b Ff(C-x)36 b(C-q)0
-2186 y Fg(Uzyskiw)m(anie)h(p)s(omo)s(cy)0 2351 y Fh(Napisz)20
-b Ff(C-h)h Fh(\(lub)g Ff(F1)p Fh(\))g(i)f(p)r(ost\246puj)i(w)n
-(ed\252ug)f(dalszyc)n(h)g(instruk)n(cji.)e(Je\261li)0
-2431 y(jeste\261)d(p)r(o)r(cz\241tkuj\241cym)i(u\273ytk)n(o)n(wnikiem,)
-f(napisz)f Ff(C-u)37 b(C-h)f(t)f(Polish)0 2511 y Fh(ab)n(y)24
-b(wyw)n(o\252a\242)h Fe(samouczek)e Fh(Emacsa)h(p)r(o)g(p)r(olsku.)0
-2619 y(usu\253)g(okno)h(p)r(omo)r(cy)931 b Ff(C-x)36
-b(1)0 2699 y Fh(przewi\253)24 b(okno)g(p)r(omo)r(cy)838
-b Ff(C-M-v)0 2807 y Fh(aprop)r(os:)24 b(p)r(ok)l(a\273)h(p)r(olecenia)f
-(zgo)r(dne)i(z)d(napisem)176 b Ff(C-h)36 b(a)0 2887 y
-Fh(p)r(ok)l(a\273)25 b(funk)n(cj\246)f(uruc)n(hamian\241)h(przez)f(kla)
-n(wisz)242 b Ff(C-h)36 b(c)0 2966 y Fh(opisz)24 b(funk)n(cj\246)1115
-b Ff(C-h)36 b(f)0 3046 y Fh(p)r(ok)l(a\273)25 b(informacj\246)e(o)r
-(dnosz\241c\241)j(si\246)d(do)h(trybu)260 b Ff(C-h)36
-b(m)0 3257 y Fg(Usu)m(w)m(anie)g(b\252\246d\363)m(w)0
-3423 y Fe(przerwij)23 b Fh(cz\246\261cio)n(w)n(o)i(napisane)f(lub)71
-3503 y(wyk)n(on)n(yw)n(ane)h(p)r(olecenie)750 b Ff(C-g)0
-3584 y Fe(o)r(dzysk)-5 b(a)5 b(j)23 b Fh(plik)g(zgubion)n(y)i(w)f
-(wyniku)71 3664 y(za\252amania)g(system)n(u)625 b Ff(M-x)36
-b(recover-file)0 3743 y Fe(an)n(uluj)23 b Fh(niec)n(hcian\241)i
-(zmian\246)709 b Ff(C-x)36 b(u)f Fh(lub)h Ff(C-_)0 3825
-y Fh(w)n(czyta)t(j)25 b(plik)e(wg)h(aktualnej)g(za)n(w)n(arto\261ci)h
-(na)71 3904 y(dysku)1029 b Ff(M-x)36 b(revert-buffer)0
-3984 y Fh(up)r(orz\241dkuj)25 b(za\261miecon)n(y)f(ekran)602
-b Ff(C-l)5 4758 y Fd(c)-11 4760 y Fc(\015)20 b Fd(2007)j(F)-5
-b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)g(P)n
-(ermissions)h(on)g(bac)n(k.)g(V)-5 b(ersion)21 b(1.2)2196
-83 y Fg(Szuk)-6 b(anie)36 b(przyrosto)m(w)m(e)2196 249
-y Fh(szuk)l(a)t(j)24 b(wprz\363)r(d/wstecz)i(\()p Ff(C-f)e
-Fh(ab)n(y)h(zak)n(o\253czy\242\))188 b Ff(C-s/C-r)2196
-330 y Fh(szuk)l(a)t(j)24 b(wprz\363)r(d)g(tekstu)h(zgo)r(dnego)h(z)e
-(wpisyw)n(an)n(ym)2267 410 y(wyra\273eniem)g(regularn)n(ym)705
-b Ff(C-M-s)2196 491 y Fh(szuk)l(a)t(j)24 b(wstecz)h(tekstu)g(zgo)r
-(dnego)h(z)e(wpisyw)n(an)n(ym)2267 571 y(wyra\273eniem)g(regularn)n(ym)
-705 b Ff(C-M-r)2196 679 y Fh(wybierz)24 b(p)r(oprzedni)g(napis)762
-b Ff(M-p)2196 759 y Fh(wybierz)24 b(nast\246pn)n(y)h(napis)791
-b Ff(M-n)2196 838 y Fh(zak)n(o\253cz)26 b(szuk)l(anie)e(przyrosto)n(w)n
-(e)602 b Ff(RET)2196 918 y Fh(an)n(uluj)24 b(rezultat)g(ostatniej)h(p)r
-(opra)n(wki)460 b Ff(DEL)2196 998 y Fh(przerwij)23 b(szuk)l(anie)982
-b Ff(C-g)2196 1106 y Fh(P)n(ono)n(wne)25 b Ff(C-s)p Fh(/)p
-Ff(C-r)g Fh(p)r(o)n(wtarza)g(szuk)l(anie)g(wprz\363)r(d/wstecz.)2196
-1313 y Fg(Przemieszczanie)37 b(kursora)2196 1478 y Fe(przemie\261\242)
-27 b(kursor)751 b(wstecz)71 b(wprz\363)r(d)2196 1583
-y Fh(o)24 b(znak)1154 b Ff(C-b)198 b(C-f)2196 1663 y
-Fh(o)24 b(s\252o)n(w)n(o)1127 b Ff(M-b)198 b(M-f)2196
-1742 y Fh(o)24 b(lini\246)f(wy\273ej/ni\273ej)793 b Ff(C-p)198
-b(C-n)2196 1822 y Fh(na)24 b(p)r(o)r(cz\241tek/k)n(oniec)j(linii)615
-b Ff(C-a)198 b(C-e)2196 1902 y Fh(o)24 b(zdanie)1101
-b Ff(M-a)198 b(M-e)2196 1981 y Fh(o)24 b(ak)l(apit)1107
-b Ff(M-{)198 b(M-})2196 2061 y Fh(o)24 b(stron\246)1108
-b Ff(C-x)37 b([)126 b(C-x)36 b(])2196 2141 y Fh(o)24
-b(s-wyra\273enie)941 b Ff(C-M-b)128 b(C-M-f)2196 2221
-y Fh(na)24 b(p)r(o)r(cz\241tek/k)n(oniec)j(funk)n(cji)526
-b Ff(C-M-a)128 b(C-M-e)2196 2300 y Fh(na)24 b(p)r(o)r(cz\241tek/k)n
-(oniec)j(bufora)536 b Ff(M-<)198 b(M->)2196 2409 y Fh(przewi\253)24
-b(do)g(nast\246pnego)i(ekran)n(u)578 b Ff(C-v)2196 2488
-y Fh(przewi\253)24 b(do)g(p)r(oprzedniego)h(ekran)n(u)514
-b Ff(M-v)2196 2568 y Fh(przewi\253)24 b(w)f(lew)n(o)1039
-b Ff(C-x)36 b(<)2196 2648 y Fh(przewi\253)24 b(w)f(pra)n(w)n(o)990
-b Ff(C-x)36 b(>)2196 2727 y Fh(umie\261\242)24 b(lini\246)f(z)g
-(kursorem)h(na)g(\261ro)r(dku)g(ekran)n(u)226 b Ff(C-u)36
-b(C-l)2196 2938 y Fg(Kaso)m(w)m(anie)g(i)i(usu)m(w)m(anie)2196
-3104 y Fe(obiekt)26 b(do)h(sk)-5 b(aso)n(w)n(ania)524
-b(wstecz)156 b(wprz\363)r(d)2196 3208 y Fh(znak)25 b(\(usu\253,)f(nie)f
-(k)l(asuj\))590 b Ff(DEL)283 b(C-d)2196 3288 y Fh(s\252o)n(w)n(o)1101
-b Ff(M-DEL)213 b(M-d)2196 3368 y Fh(linia)23 b(\(o)r(d)h(kursora)g(do)g
-(k)n(o\253ca\))432 b Ff(M-0)36 b(C-k)142 b(C-k)2196 3448
-y Fh(zdanie)1075 b Ff(C-x)36 b(DEL)142 b(M-k)2196 3527
-y Fh(s-wyra\273enie)915 b Ff(M--)36 b(C-M-k)72 b(C-M-k)2196
-3636 y Fh(k)l(asuj)24 b(obszar)1134 b Ff(C-w)2196 3715
-y Fh(wsta)n(w)24 b(obszar)g(do)g(`kill)e(ring')698 b
-Ff(M-w)2196 3795 y Fh(k)l(asuj)24 b(wszystk)n(o)h(a\273)f(do)g
-(wyst\241)r(pienia)g Fb(char)322 b Ff(M-z)36 b Fb(char)2196
-3903 y Fh(wsta)n(w)24 b(ostatnio)h(sk)l(aso)n(w)n(an)n(y)g(obiekt)497
-b Ff(C-y)2196 3985 y Fh(zamie\253)24 b(wsta)n(wion)n(y)h(obiekt)f(z)g
-(uprzednio)2267 4064 y(sk)l(aso)n(w)n(an)n(ym)1066 b
-Ff(M-y)2040 6050 y Fh(1)p eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 0 83 a Fg(Zaznaczanie)0 249 y Fh(wsta)n(w)24
-b(znacznik)h(w)f(p)r(ozycji)g(kursora)463 b Ff(C-@)36
-b Fh(or)f Ff(C-SPC)0 328 y Fh(zamie\253)24 b(p)r(ozycje)h(kursora)e(i)h
-(znacznik)l(a)428 b Ff(C-x)36 b(C-x)0 437 y Fh(zaznacz)26
-b(s\252o)n(w)n(o)d(p)r(o)h Fb(ar)l(g)30 b Fh(s\252\363)n(w)699
-b Ff(M-@)0 516 y Fh(zaznacz)26 b(ak)l(apit)1063 b Ff(M-h)0
-596 y Fh(zaznacz)26 b(stron\246)1064 b Ff(C-x)36 b(C-p)0
-676 y Fh(zaznacz)26 b(s-wyra\273enie)897 b Ff(C-M-@)0
-755 y Fh(zaznacz)26 b(funk)n(cj\246)1033 b Ff(C-M-h)0
-835 y Fh(zaznacz)26 b(ca\252y)e(bufor)938 b Ff(C-x)36
-b(h)0 1046 y Fg(Zamiana)h(z)h(zap)m(ytaniem)0 1211 y
-Fh(zamiana)24 b(tekstu)h(w)f(trybie)g(in)n(terak)n(cyjn)n(ym)302
-b Ff(M-\045)0 1291 y Fh(z)24 b(u\273yciem)g(wyra\273e\253)h(regularn)n
-(yc)n(h)549 b Ff(C-M-\045)0 1399 y Fh(Odp)r(o)n(wiedzi)24
-b(w)g(in)n(terak)n(cyjn)n(ym)g(trybie)g(zamian)n(y:)0
-1508 y Fe(zamie\253)f Fh(i)g(wyszuk)l(a)t(j)h(nast\246pn)n(y)i(tekst)
-443 b Ff(SPC)0 1587 y Fh(zamie\253)24 b(nie)g(przemieszcza)t(j\241c)h
-(kursora)416 b Ff(,)0 1667 y Fe(nie)24 b(zamienia)5 b(j)21
-b Fh(i)i(wyszuk)l(a)t(j)i(nast\246pn)n(y)g(tekst)223
-b Ff(DEL)0 1747 y Fh(wyszuk)l(a)t(j)24 b(i)f(zamie\253)i(wszystkie)f(p)
-r(ozosta\252e)h(tekst)n(y)113 b Ff(!)0 1827 y Fe(p)r(o)n(wr\363)r(\242)
-23 b Fh(do)h(p)r(oprzedniej)g(zamian)n(y)498 b Ff(^)0
-1906 y Fe(zak)n(o\253cz)23 b Fh(zamian\246)i(in)n(terak)n(cyjn\241)561
-b Ff(RET)0 1988 y Fh(w)n(ejd\271)24 b(do)g(trybu)g(rekursywnej)g
-(edycji)g(\()p Ff(C-M-c)h Fh(ab)n(y)71 2067 y(zak)n(o\253czy\242\))1108
-b Ff(C-r)0 2278 y Fg(Wiele)37 b(okien)0 2444 y Fh(Drugie)23
-b(z)h(p)r(olece\253)h(dot)n(yczy)h(\377innej)e(ramki")0
-2552 y(usu\253)g(p)r(ozosta\252e)h(okna)884 b Ff(C-x)36
-b(1)0 2660 y Fh(p)r(o)r(dziel)24 b(okno)h(\(jedno)f(nad)g(drugim\))270
-b Ff(C-x)36 b(2)212 b(C-x)36 b(5)g(2)0 2740 y Fh(usu\253)24
-b(okno)970 b Ff(C-x)36 b(0)212 b(C-x)36 b(5)g(0)0 2848
-y Fh(p)r(o)r(dziel)24 b(okno)h(\(jedno)f(ob)r(ok)h(drugiego\))418
-b Ff(C-x)36 b(3)0 2957 y Fh(przewija)t(j)23 b(w)g(inn)n(ym)h(oknie)753
-b Ff(C-M-v)0 3065 y Fh(przenie\261)24 b(kursor)f(do)h(innego)h(okna)328
-b Ff(C-x)36 b(o)212 b(C-x)36 b(5)g(o)0 3145 y Fh(wybierz)24
-b(bufor)f(w)h(inn)n(ym)f(oknie)386 b Ff(C-x)36 b(4)g(b)141
-b(C-x)36 b(5)g(b)0 3224 y Fh(p)r(ok)l(a\273)25 b(bufor)e(w)h(inn)n(ym)f
-(oknie)447 b Ff(C-x)36 b(4)g(C-o)71 b(C-x)36 b(5)g(C-o)0
-3304 y Fh(zna)t(jd\271)24 b(plik)g(i)f(p)r(ok)l(a\273)i(go)f(w)f(inn)n
-(ym)h(oknie)131 b Ff(C-x)36 b(4)g(f)141 b(C-x)36 b(5)g(f)0
-3384 y Fh(jak)24 b(wy\273ej,)f(t)n(ylk)n(o)i(w)e(trybie)h(do)g
-(czytania)142 b Ff(C-x)36 b(4)g(r)141 b(C-x)36 b(5)g(r)0
-3464 y Fh(uruc)n(hom)24 b(`Dired')e(w)i(inn)n(ym)g(oknie)306
-b Ff(C-x)36 b(4)g(d)141 b(C-x)36 b(5)g(d)0 3543 y Fh(zna)t(jd\271)24
-b(de\014nicj\246)h(w)e(inn)n(ym)h(oknie)331 b Ff(C-x)36
-b(4)g(.)141 b(C-x)36 b(5)g(.)0 3652 y Fh(p)r(o)n(wi\246ksz)24
-b(okno)h(w)e(pionie)786 b Ff(C-x)36 b(^)0 3731 y Fh(zmniejsz)24
-b(okno)g(w)g(p)r(oziomie)709 b Ff(C-x)36 b({)0 3811 y
-Fh(p)r(oszerz)24 b(okno)1116 b Ff(C-x)36 b(})2196 83
-y Fg(F)-10 b(ormato)m(w)m(anie)2196 249 y Fh(w)n(etnij)24
-b(bie\273\241c\241)h Fe(lini\246)d Fh(\(zale\273ne)k(o)r(d)e(trybu\))
-311 b Ff(TAB)2196 328 y Fh(w)n(etnij)24 b Fe(obszar)f
-Fh(\(zale\273ne)i(o)r(d)f(trybu\))481 b Ff(C-M-\\)2196
-408 y Fh(w)n(etnij)24 b Fe(s-wyra\273enie)f Fh(\(zale\273ne)i(o)r(d)f
-(trybu\))296 b Ff(C-M-q)2196 488 y Fh(w)n(etnij)24 b(obszar)g(o)g
-Fb(ar)l(g)29 b Fh(k)n(olumn)669 b Ff(C-x)36 b(TAB)2196
-596 y Fh(wsta)n(w)24 b(no)n(w)n(\241)g(lini\246)f(za)h(kursorem)589
-b Ff(C-o)2196 676 y Fh(przesu\253)24 b(cz\246\261\242)h(linii)d(za)i
-(kursorem)g(w)f(d\363\252)363 b Ff(C-M-o)2196 755 y Fh(usu\253)24
-b(puste)h(linie)d(w)n(ok)n(\363\252)j(kursora)568 b Ff(C-x)36
-b(C-o)2196 835 y Fh(p)r(o\252\241cz)25 b(lini\246)e(z)g(p)r
-(oprzedni\241)i(\(z)g Fb(ar)l(g)30 b Fh({)23 b(z)h(nast\246pn\241\))98
-b Ff(M-^)2196 915 y Fh(usu\253)24 b(o)r(dst\246p)n(y)h(do)r(ok)n
-(o\252a)g(kursora)586 b Ff(M-\\)2196 996 y Fh(p)r(ozosta)n(w)25
-b(dok\252adnie)g(jedn\241)f(spacj\246)g(w)g(p)r(ozycji)2267
-1076 y(kursora)1210 b Ff(M-SPC)2196 1184 y Fh(wyp)r(e\252nij)23
-b(ak)l(apit)1034 b Ff(M-q)2196 1264 y Fh(usta)n(w)24
-b(n)n(umer)g(k)n(olumn)n(y)g(dla)g(trybu)g(wyp)r(e\252niania)121
-b Ff(C-x)36 b(f)2196 1343 y Fh(usta)n(w)24 b(przedrostek)h(dla)f(k)l
-(a\273dego)h(no)n(w)n(ego)g(wiersza)77 b Ff(C-x)36 b(.)2196
-1452 y Fh(usta)n(w)24 b(czcionk)n(\246)1056 b Ff(M-g)2196
-1663 y Fg(Zamiana)37 b(wielk)m(o\261ci)h(liter)2196 1828
-y Fh(zamie\253)24 b(w)g(s\252o)n(wie)f(litery)g(ma\252e)h(na)g(du\273e)
-390 b Ff(M-u)2196 1908 y Fh(zamie\253)24 b(w)g(s\252o)n(wie)f(litery)g
-(du\273e)i(na)f(ma\252e)389 b Ff(M-l)2196 1988 y Fh(zamie\253)24
-b(pierwsz\241)g(liter\246)f(w)h(s\252o)n(wie)f(na)h(du\273\241)278
-b Ff(M-c)2196 2096 y Fh(zamie\253)24 b(w)g(obszarze)g(litery)g(ma\252e)
-f(na)h(du\273e)318 b Ff(C-x)36 b(C-u)2196 2176 y Fh(zamie\253)24
-b(w)g(obszarze)g(litery)g(du\273e)g(na)g(ma\252e)317
-b Ff(C-x)36 b(C-l)2196 2387 y Fg(Minibufor)2196 2552
-y Fh(uzup)r(e\252nij)24 b(tekst)h(o)f(t)n(yle)g(o)g(ile)f(jest)g(to)i
-(mo\273liw)n(e)214 b Ff(TAB)2196 2632 y Fh(uzup)r(e\252nij)24
-b(o)g(jedno)g(s\252o)n(w)n(o)783 b Ff(SPC)2196 2712 y
-Fh(uzup)r(e\252nij)24 b(i)f(wyk)n(ona)t(j)900 b Ff(RET)2196
-2791 y Fh(p)r(ok)l(a\273)25 b(mo\273liw)n(e)f(uzup)r(e\252nienia)653
-b Ff(?)2196 2873 y Fh(przyw)n(o\252a)t(j)24 b(uprzednio)g(wpro)n(w)n
-(adzon)n(y)h(tekst)g(do)2267 2952 y(minibufora)1104 b
-Ff(M-p)2196 3034 y Fh(przyw)n(o\252a)t(j)24 b(nast\246pn)n(y)h(tekst)g
-(z)f(`kill)e(ring')h(do)2267 3113 y(minibufora)1104 b
-Ff(M-n)2196 3193 y Fh(wyszukuj)24 b(wstecz)h(p)r(oprzez)g(histori\246)e
-(wpro)n(w)n(adze\253)92 b Ff(M-r)2196 3274 y Fh(wyszukuj)24
-b(wprz\363)r(d)g(p)r(oprzez)h(histori\246)2267 3354 y(wpro)n(w)n
-(adze\253)1065 b Ff(M-s)2196 3434 y Fh(przerwij)23 b(wyk)n(on)n(yw)n
-(ane)i(p)r(olecenie)548 b Ff(C-g)2196 3542 y Fh(Napisz)23
-b Ff(C-x)36 b(ESC)g(ESC)24 b Fh(ab)n(y)f(p)r(opra)n(wia\242)h(i)e(wyk)n
-(ona\242)i(p)r(olecenie,)g(kt\363re)2196 3622 y(ostatnio)h(u\273yw)n
-(a\252o)f(minibufora.)e(Napisz)h Ff(F10)i Fh(ab)n(y)f(uakt)n(ywni\242)g
-(men)n(u)2196 3701 y(w)f(minibuforze.)2040 6050 y(2)p
-eop end
-%%Page: 3 3
-TeXDict begin 3 2 bop 16 83 a Fi(Przegl\241d)46 b(p)t(olece\253)g(GNU)f
-(Emacsa)0 325 y Fg(Bufory)0 491 y Fh(wybierz)24 b(inn)n(y)g(bufor)930
-b Ff(C-x)36 b(b)0 570 y Fh(p)r(ok)l(a\273)25 b(spis)e(wszystkic)n(h)i
-(bufor\363)n(w)574 b Ff(C-x)36 b(C-b)0 650 y Fh(sk)l(asuj)24
-b(bufor)1139 b Ff(C-x)36 b(k)0 861 y Fg(Przesta)m(wianie)0
-1026 y Fh(przesta)n(w)25 b Fe(znaki)1031 b Ff(C-t)0 1106
-y Fh(przesta)n(w)25 b Fe(s\252o)n(w)n(a)1023 b Ff(M-t)0
-1186 y Fh(przesta)n(w)25 b Fe(linie)1067 b Ff(C-x)36
-b(C-t)0 1266 y Fh(przesta)n(w)25 b Fe(s-wyra\273enia)802
-b Ff(C-M-t)0 1476 y Fg(T)-10 b(ags)0 1641 y Fh(zna)t(jd\271)24
-b(okre\261lenie)g(\(de\014nicj\246\))656 b Ff(M-.)0 1721
-y Fh(zna)t(jd\271)24 b(nast\246pne)i(wyst\241)r(pienie)e(de\014nicji)
-366 b Ff(C-u)36 b(M-.)0 1801 y Fh(p)r(o)r(da)t(j)24 b(no)n(wy)g(plik)f
-(T)-6 b(A)n(GS)532 b Ff(M-x)36 b(visit-tags-table)0 1911
-y Fh(wyszukiw)n(anie)24 b(tekstu)i(zgo)r(dnego)f(z)f(p)r(o)r(dan)n(ym)
-71 1990 y(wyra\273eniem)g(regularn)n(ym)f(w)n(e)h(wszystkic)n(h)71
-2070 y(plik)l(ac)n(h)g(wymienion)n(yc)n(h)g(w)g(T)-6
-b(A)n(GS)247 b Ff(M-x)36 b(tags-search)0 2151 y Fh(zamiana)24
-b(z)g(zap)n(ytaniem)i(w)n(e)e(wszystkic)n(h)71 2231 y(plik)l(ac)n(h)g
-(wymienion)n(yc)n(h)g(w)g(T)-6 b(A)n(GS)179 b Ff(M-x)36
-b(tags-query-replace)0 2312 y Fh(k)n(on)n(t)n(yn)n(uuj)25
-b(wyszukiw)n(anie)g(lub)e(zamian\246)71 2392 y(z)g(zap)n(ytaniem)j(w)d
-(plik)l(ac)n(h)h(wymienion)n(yc)n(h)71 2472 y(w)f(T)-6
-b(A)n(GS)1176 b Ff(M-,)0 2683 y Fg(P)m(o)m(w\252oki)0
-2848 y Fh(wyk)n(ona)t(j)24 b(p)r(olecenie)h(p)r(o)n(w\252oki)684
-b Ff(M-!)0 2928 y Fh(wyk)n(ona)t(j)24 b(p)r(olecenie)h(p)r(o)n
-(w\252oki)f(na)g(obszarze)304 b Ff(M-|)0 3008 y Fh(\014ltruj)23
-b(obszar)h(p)r(oprzez)h(p)r(olecenie)g(p)r(o)n(w\252oki)287
-b Ff(C-u)36 b(M-|)0 3087 y Fh(uruc)n(hom)24 b(p)r(o)n(w\252ok)n(\246)h
-(w)e(oknie)h Ff(*shell*)439 b(M-x)36 b(shell)0 3298 y
-Fg(Prostok)-6 b(\241t)m(y)0 3464 y Fh(zapisz)24 b(prostok)l(\241t)h(do)
-f(rejestru)659 b Ff(C-x)36 b(r)f(r)0 3543 y Fh(sk)l(asuj)24
-b(prostok)l(\241t)1015 b Ff(C-x)36 b(r)f(k)0 3623 y Fh(wklej)23
-b(prostok)l(\241t)1040 b Ff(C-x)36 b(r)f(y)0 3705 y Fh(wsta)n(w)24
-b(pust)n(y)h(prostok)l(\241t)g(przesu)n(w)n(a)t(j\241c)71
-3784 y(tekst)f(w)g(pra)n(w)n(o)1007 b Ff(C-x)36 b(r)f(o)0
-3864 y Fh(wyczy\261\242)25 b(prostok)l(\241t)953 b Ff(C-x)36
-b(r)f(c)0 3944 y Fh(wsta)n(w)24 b(napis)g(na)g(p)r(o)r(cz\241tku)i(k)l
-(a\273dej)e(linii)376 b Ff(C-x)36 b(r)f(t)0 4155 y Fg(Skr\363t)m(y)0
-4320 y Fh(do)r(da)t(j)24 b(skr\363t)g(globalnie)858 b
-Ff(C-x)36 b(a)f(g)0 4400 y Fh(do)r(da)t(j)24 b(skr\363t)g(lok)l(aln)n
-(y)g(dla)g(trybu)603 b Ff(C-x)36 b(a)f(l)0 4480 y Fh(do)r(da)t(j)24
-b(rozwini\246cie)g(globalne)g(dla)g(skr\363tu)360 b Ff(C-x)36
-b(a)f(i)h(g)0 4559 y Fh(do)r(da)t(j)24 b(rozwini\246cie)g(lok)l(alne)g
-(dla)f(trybu)i(dla)e(skr\363tu)90 b Ff(C-x)36 b(a)f(i)h(l)0
-4639 y Fh(rozwi\253)23 b(teraz)i(skr\363t)952 b Ff(C-x)36
-b(a)f(e)0 4747 y Fh(uzup)r(e\252nij)24 b(dynamicznie)h(p)r(oprzednie)f
-(s\252o)n(w)n(o)268 b Ff(M-/)2196 83 y Fg(Wyra\273enia)38
-b(regularne)2196 243 y Fh(do)n(w)n(oln)n(y)24 b(znak)h(za)f
-(wyj\241tkiem)g(znaku)h(no)n(w)n(ej)f(linii)114 b Ff(.)35
-b Fh(\(kropk)l(a\))2196 323 y(zero)24 b(lub)g(wi\246cej)f(p)r(o)n
-(wt\363rze\253)715 b Ff(*)2196 403 y Fh(jedno)24 b(lub)g(wi\246cej)f(p)
-r(o)n(wt\363rze\253)674 b Ff(+)2196 482 y Fh(zero)24
-b(lub)g(jedno)g(p)r(o)n(wt\363rzenie)683 b Ff(?)2196
-564 y Fh(traktuj)24 b(dos\252o)n(wnie)g(nast\246pn)n(y)i(znak)e(\(na)n
-(w)n(et)i(je\261li)2267 643 y(znak)e(ma)g(sp)r(ecjalne)g(znaczenie\))i
-Fb(c)480 b Ff(\\)p Fb(c)2196 723 y Fh(alternat)n(yw)n(a)25
-b(\(`lub'\))933 b Ff(\\|)2196 803 y Fh(grup)r(o)n(w)n(anie)1161
-b Ff(\\\()35 b Fa(:)12 b(:)f(:)35 b Ff(\\\))2196 883
-y Fh(tekst)25 b(n-tej)e(grup)n(y)994 b Ff(\\)p Fb(n)2196
-962 y Fh(na)24 b(p)r(o)r(cz\241tku)i(lub)d(k)n(o\253cu)i(s\252o)n(w)n
-(a)615 b Ff(\\b)2196 1042 y Fh(nie)24 b(na)g(p)r(o)r(cz\241tku)i(i)d
-(nie)g(na)h(k)n(o\253cu)h(s\252o)n(w)n(a)368 b Ff(\\B)2196
-1149 y Fe(obiekt)26 b(do)h(p)r(or\363)n(wnania)540 b(p)r(o)r(cz\241tek)
-70 b(k)n(oniec)2196 1253 y Fh(linia)1179 b Ff(^)349 b($)2196
-1332 y Fh(s\252o)n(w)n(o)1144 b Ff(\\<)314 b(\\>)2196
-1412 y Fh(bufor)1150 b Ff(\\`)314 b(\\')2196 1519 y Fe(k)-5
-b(ategoria)25 b(znak)n(\363)n(w)583 b(p)r(or\363)n(wna)5
-b(j)26 b(z)70 b(p)r(ozosta\252ymi)2196 1623 y Fh(p)r(o)r(dan)n(y)25
-b(zbi\363r)e(znak)n(\363)n(w)543 b Ff([)36 b Fa(:)11
-b(:)h(:)34 b Ff(])244 b([^)36 b Fa(:)11 b(:)h(:)35 b
-Ff(])2196 1703 y Fh(znak)25 b(k)l(ategorii)f(sk\252adnio)n(w)n(ej)g
-(`s\252o)n(w)n(o')149 b Ff(\\w)397 b(\\W)2196 1782 y
-Fh(znak)25 b(k)l(ategorii)f(sk\252adnio)n(w)n(ej)g Fb(c)325
-b Ff(\\s)p Fb(c)364 b Ff(\\S)p Fb(c)2196 1979 y Fg(Mi\246dzynaro)s(do)m
-(w)m(e)36 b(zesta)m(wy)h(znak)m(\363)m(w)2196 2139 y
-Fh(ustal)24 b(g\252\363)n(wn)n(y)g(j\246zyk)534 b Ff(M-x)36
-b(set-language-environmen)q(t)2196 2221 y Fh(wypisz)24
-b(wszystkie)g(meto)r(dy)h(wpro)n(w)n(adzania)2267 2300
-y(znak)n(\363)n(w)917 b Ff(M-x)36 b(list-input-methods)2196
-2380 y Fh(w\252\241cz/wy\252\241cz)25 b(meto)r(d\246)g(wpro)n(w)n
-(adzania)g(znak)n(\363)n(w)138 b Ff(C-\\)2196 2461 y
-Fh(ustal)24 b(system)g(k)n(o)r(do)n(w)n(ania)h(dla)f(nast\246pnego)2267
-2541 y(p)r(olecenia)1157 b Ff(C-x)36 b(RET)g(c)2196 2621
-y Fh(wypisz)24 b(wszystkie)g(system)n(y)h(k)n(o)r(do)n(w)n(ania)58
-b Ff(M-x)36 b(list-coding-systems)2196 2702 y Fh(wybierz)24
-b(prefero)n(w)n(an)n(y)g(system)2267 2782 y(k)n(o)r(do)n(w)n(ania)783
-b Ff(M-x)37 b(prefer-coding-system)2196 2861 y Fh(wybierz)24
-b(meto)r(d\246)h(wpro)n(w)n(adzania)f(znak)n(\363)n(w)88
-b Ff(C-x)36 b(RET)g(C-\\)2196 2968 y Fh(P)n(o)24 b(wybraniu)g(meto)r
-(dy)g(wpro)n(w)n(adzania)h(znak)n(\363)n(w)g Ff(polish-slash)p
-Fh(,)2196 3048 y(k)l(a\273d\241)18 b(z)g(liter)e Ff
-(\241\242\246\252\253\363\261\271\273/)k Fh(uzysk)l(am)n(y)f(pisz\241c)
-e(ciac)n(h)h(`)p Ff(/)p Fh(')f(i)f(o)r(dp)r(o)n(wiedni)2196
-3128 y(znak)25 b(z)f Ff(acelnosxz/)p Fh(.)2196 3315 y
-Fg(Rejestry)2196 3476 y Fh(zapisz)g(obszar)g(do)g(rejestru)751
-b Ff(C-x)36 b(r)f(s)2196 3555 y Fh(wsta)n(w)24 b(za)n(w)n(arto\261\242)
-h(rejestru)e(do)h(bufora)422 b Ff(C-x)36 b(r)f(i)2196
-3662 y Fh(zapisz)24 b(p)r(ozycj\246)h(kursora)e(w)h(rejestrze)465
-b Ff(C-x)36 b(r)f(SPC)2196 3744 y Fh(przemie\261\242)24
-b(kursor)f(do)h(p)r(ozycji)g(zapisanej)2267 3823 y(w)f(rejestrze)1109
-b Ff(C-x)36 b(r)f(j)2196 4028 y Fg(Makrop)s(olecenia)2196
-4188 y Fe(zacznij)23 b Fh(de\014nicj\246)i(makrop)r(olecenia)493
-b Ff(C-x)36 b(\()2196 4268 y Fe(zak)n(o\253cz)23 b Fh(de\014nicj\246)i
-(makrop)r(olecenia)459 b Ff(C-x)36 b(\))2196 4349 y Fe(wyk)n(ona)5
-b(j)22 b Fh(ostatnio)j(zde\014nio)n(w)n(ane)2267 4429
-y(makrop)r(olecenie)967 b Ff(C-x)36 b(e)2196 4508 y Fh(dopisz)24
-b(do)g(de\014nicji)g(ostatniego)h(makrop)r(olecenia)118
-b Ff(C-u)36 b(C-x)g(\()2196 4588 y Fh(nazwij)24 b(ostatnie)g(makrop)r
-(olecenie)233 b Ff(M-x)36 b(name-last-kbd-macro)2196
-4670 y Fh(wpisz)23 b(do)i(bufora)e(nazw)n(ane)2267 4749
-y(makro)g(Lisp)r(o)n(w)n(e)713 b Ff(M-x)36 b(insert-kbd-macro)2040
-6050 y Fh(3)p eop end
-%%Page: 4 4
-TeXDict begin 4 3 bop 0 83 a Fg(Info)0 249 y Fh(w)n(ejd\271)24
-b(w)g(tryb)f(czytania)j(dokumen)n(tacji)f(Info)247 b
-Ff(C-h)36 b(i)0 328 y Fh(wyszuk)l(a)t(j)24 b(p)r(o)r(dan\241)h(funk)n
-(cj\246)f(lub)g(zmienn\241)g(w)g(Info)117 b Ff(C-h)36
-b(S)0 437 y Fh(P)n(oruszanie)24 b(si\246)g(w)f(obr\246bie)h(w)n
-(\246z\252a)g(Info:)71 545 y(przegl\241da)t(j)g(do)g(przo)r(du)786
-b Ff(SPC)71 625 y Fh(przegl\241da)t(j)24 b(do)g(t)n(y\252u)874
-b Ff(DEL)71 704 y Fh(na)24 b(p)r(o)r(cz\241tek)i(w)n(\246z\252a)876
-b Ff(.)35 b Fh(\(kropk)l(a\))0 813 y(P)n(oruszanie)24
-b(si\246)g(p)r(omi\246dzy)g(w)n(\246z\252ami:)71 921
-y Fe(nast\246pn)n(y)f Fh(w)n(\246ze\252)934 b Ff(n)71
-1001 y Fe(p)r(oprzedni)23 b Fh(w)n(\246ze\252)898 b Ff(p)71
-1080 y Fh(przenie\261)24 b(si\246)f Fe(wy\273ej)867 b
-Ff(u)71 1160 y Fh(wybierz)23 b(p)r(ozycj\246)i(z)f(men)n(u,)g(p)r(o)r
-(da)t(j\241c)g(jej)f(nazw)n(\246)111 b Ff(m)71 1241 y
-Fh(wybierz)23 b(n-t\241)h(p)r(ozycj\246)h(z)f(men)n(u)g(p)r(o)r(da)t
-(j\241c)71 1321 y(liczb)r(\246)g(\(1-9\))1094 b Fb(n)71
-1401 y Fh(spra)n(wd\271)23 b(o)r(dsy\252acz)i(\(p)r(o)n(wr\363t)g(z)f
-Ff(l)p Fh(\))497 b Ff(f)71 1480 y Fh(p)r(o)n(wr\363)r(\242)24
-b(do)g(ostatnio)h(przegl\241danego)g(w)n(\246z\252a)198
-b Ff(l)71 1560 y Fh(p)r(o)n(wr\363)r(\242)24 b(do)g(sk)n(oro)n(widza)
-762 b Ff(d)71 1640 y Fh(wybierz)23 b(w)n(\246ze\252)i(p)r(o)r(da)t
-(j\241c)f(jego)g(nazw)n(\246)389 b Ff(g)0 1748 y Fh(P)n(ozosta\252e)25
-b(p)r(olecenia:)71 1856 y(wyw)n(o\252a)t(j)e Fe(samouczek)g
-Fh(Info)638 b Ff(h)71 1936 y Fh(wyszuk)l(a)t(j)24 b(zagadnienie)h(w)f
-(indeksac)n(h)384 b Ff(i)71 2017 y Fh(wyszukuj)24 b(w)f(w)n
-(\246z\252ac)n(h)i(tekst)g(zgo)r(dn)n(y)71 2097 y(z)e(p)r(o)r(dan)n(ym)
-i(wyra\273eniem)f(regularn)n(ym)341 b Ff(s)71 2177 y
-Fe(zak)n(o\253cz)23 b Fh(Info)1021 b Ff(q)0 2388 y Fg(Dired)37
-b({)i(edytor)f(k)-6 b(atalog\363)m(w)0 2553 y Fh(wyw)n(o\252anie)24
-b(edytora)h(k)l(atalog\363)n(w)605 b Ff(C-x)36 b(d)0
-2633 y Fh(usta)n(w)24 b(\015ag\246)h(`D')e(\(do)h(usuni\246cia\))h(na)f
-(pliku)315 b Ff(d)0 2713 y Fh(usta)n(w)24 b(\015ag\246)h(`D')e(na)h
-(plik)l(ac)n(h)g(zapaso)n(wyc)n(h)333 b Ff(~)0 2792 y
-Fh(zdejmij)23 b(\015ag\246)i(`D')d(z)i(pliku)773 b Ff(u)0
-2872 y Fh(usu\253)24 b(pliki)f(oznaczone)j(\015ag\241)f(`D')587
-b Ff(x)0 2952 y Fh(uaktualnij)24 b(za)n(w)n(arto\261\242)h(bufora)654
-b Ff(g)0 3033 y Fh(w)n(czyta)t(j)25 b(plik)e(wsk)l(azyw)n(an)n(y)i
-(przez)g(kursor)e(do)71 3113 y(bufora)1242 b Ff(f)0 3194
-y Fh(prze\252\241cz)25 b(mi\246dzy)f(p)r(orz\241dkiem)g(alfab)r(et)n
-(yczn)n(ym)71 3274 y(a)f(p)r(orz\241dkiem)i(w)n(ed\252ug)f(dat)n(y)h(i)
-e(czasu)71 3354 y(p)r(o)n(wstania)h(pliku)952 b Ff(s)0
-3464 y Fh(wybierz)24 b(z)g(bie\273\241cego)h(k)l(atalogu)h(i)d(jego)71
-3543 y(p)r(o)r(dk)l(atalog\363)n(w)j(wszystkie)e(pliki,)e(kt\363re)71
-3623 y(za)n(wiera)t(j\241)h(tekst)i(zgo)r(dn)n(y)g(z)f(p)r(o)r(dan)n
-(ym)71 3703 y(wyra\273eniem)g(regularn)n(ym)459 b Ff(M-x)36
-b(find-grep-dired)0 3914 y Fg(P)m(olecenia)29 b(dot)m(ycz\241ce)h
-(j\246zyk)-6 b(a)31 b(Emacs)g(Lisp)0 4079 y Fh(oblicz)24
-b Fe(s-wyra\273enie)f Fh(przed)h(kursorem)398 b Ff(C-x)36
-b(C-e)0 4159 y Fh(oblicz)24 b(akt)n(ywn\241)h Fe(defun)830
-b Ff(C-M-x)0 4239 y Fh(oblicz)24 b(s-wyra\273enia)g(w)f
-Fe(obszarze)322 b Ff(M-x)36 b(eval-region)0 4320 y Fh(w)n(czyta)t(j)25
-b Fe(s-wyra\273enie)e Fh(i)g(oblicz)h(je)71 4400 y(w)f(minibuforze)1003
-b Ff(M-:)0 4481 y Fh(w)n(czyta)t(j)25 b(bibliotek)n(\246)f(z)g(k)l
-(atalogu)71 4561 y(systemo)n(w)n(ego)816 b Ff(M-x)36
-b(load-library)2196 83 y Fg(Proste)i(mo)s(dy\014k)-6
-b(acje)2196 249 y Fh(mo)r(dy\014k)n(o)n(w)n(anie)25 b(w)n(arto\261ci)f
-(zmienn)n(yc)n(h)2267 328 y(i)f(czcionek)911 b Ff(M-x)36
-b(customize)2196 437 y Fh(Przyk\252ady)24 b(przypisania)g(kla)n(wisza)g
-(funk)n(cji)f(Emacs)h(Lispu)2196 516 y(z)g(wyk)n(orzystaniem)h(notacji)
-f Ff("...")h Fh(i)e(notacji)h Ff([...])p Fh(:)2196 625
-y Ff(\(global-set-key)40 b("\\C-cg")d('goto-line\))2196
-704 y(\(global-set-key)j("\\M-#")d('query-replace-regexp\))2196
-809 y(\(global-set-key)j([?\\C-c)d(?g])f('goto-line\))2196
-889 y(\(global-set-key)k([?\\M-#])d('query-replace-regexp\))2196
-1094 y Fg(Tw)m(orzenie)f(no)m(wyc)m(h)i(p)s(olece\253)2196
-1259 y Ff(\(defun)f Fb(nazwa-funkcji)42 b Ff(\()p Fb(ar)l(gumenty)6
-b Ff(\))2267 1339 y(")p Fb(dokumentacja)f Ff(")2267 1419
-y(\(interactive)38 b(")p Fb(wzorze)l(c)t Ff("\))2267
-1498 y Fb(tr)l(e\261\242)25 b(funkcji)6 b Ff(\))2196
-1607 y Fh(Przyk\252ad:)2196 1715 y Ff(\(defun)37 b
-(this-line-to-top-of-win)q(dow)42 b(\(line\))2267 1795
-y("Przewi\253)37 b(lini\246)g(z)e(kursorem)j(do)e(pierwszej)i(linii)e
-(okna.)2196 1874 y(Z)g(ARG,)g(przewi\253)h(do)f(linii)h(ARG.")2267
-1954 y(\(interactive)h("P"\))2267 2034 y(\(recenter)f(\(if)g(\(null)f
-(line\))2761 2113 y(0)2690 2193 y(\(prefix-numeric-value)41
-b(line\)\)\)\))2196 2301 y Fh(W)28 b(funk)n(cji)f Ff(interactive)k
-Fb(wzorze)l(c)h Fh(opisuje,)27 b(jak)g(b)r(\246d\241)i(czytane)h(ar-)
-2196 2381 y(gumen)n(t)n(y)35 b(w)e(trybie)h(in)n(terak)n(cyjn)n(ym.)g
-(Szczeg\363\252o)n(wy)h(opis)f(uzysk)l(asz)2196 2461
-y(przez)24 b(wyw)n(o\252anie)h Ff(C-h)36 b(f)f(interactive)p
-Fh(.)2489 3610 y Fd(Cop)n(yrigh)n(t)2792 3608 y(c)2775
-3610 y Fc(\015)21 b Fd(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5
-b(oundation,)20 b(Inc.)2533 3674 y(W)-5 b(ersja)21 b(1.2)h(dla)e(GNU)g
-(Emacsa)i(22,)f(czerwiec)h(2006)2845 3738 y(pro)s(jekt)g(Stephen)e
-(Gildea)2813 3802 y(t\252umaczenie)g(W\252o)r(dek)h(Bzyl)2196
-3894 y(P)n(ermission)i(is)h(gran)n(ted)g(to)g(mak)n(e)g(and)f
-(distribute)f(copies)i(of)g(this)e(card)i(pro)n(vi-)2196
-3958 y(ded)c(the)h(cop)n(yrigh)n(t)g(notice)g(and)f(this)g(p)r
-(ermission)g(notice)g(are)i(preserv)n(ed)f(on)g(all)2196
-4022 y(copies.)2196 4114 y(F)-5 b(or)27 b(copies)f(of)h(the)f(GNU)f
-(Emacs)i(man)n(ual,)f(write)g(to)g(the)g(F)-5 b(ree)27
-b(Soft)n(w)n(are)h(F)-5 b(o-)2196 4178 y(undation,)20
-b(Inc.,)h(51)i(F)-5 b(ranklin)20 b(Street,)i(Fifth)f(Flo)r(or,)g
-(Boston,)i(MA)e(02110-1301)2196 4241 y(USA)2040 6050
-y Fh(4)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/pt-br-refcard.ps b/etc/pt-br-refcard.ps
deleted file mode 100644 (file)
index d7ce686..0000000
+++ /dev/null
@@ -1,2576 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
-%%Title: pt-br-refcard.dvi
-%%Pages: 2
-%%PageOrder: Ascend
-%%Orientation: Landscape
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape pt-br-refcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.01.20:1524
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI8
-%!PS-AdobeFont-1.1: CMMI8 1.100
-%%CreationDate: 1996 Jul 23 07:53:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-24 -250 1110 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
-4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
-788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
-C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
-617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
-D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
-532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
-5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
-4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
-DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
-B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
-A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
-8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
-D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
-AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
-AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
-A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
-AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
-85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA
-3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF
-68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409
-FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C
-B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0
-F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A
-B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 121 /y put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
-BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
-09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
-3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4813956AAB24BE7C20FCF9196E8E2F30816FE2279CE3E6067667A39E44
-488D58BFD17606AE885FA06F478D359A6ECF5564C095FE0E5038425D8B152750
-F72F41B3D1E7420EE91CF4A9ED5BBE8C2275624AE257D2BDF5752E803B426F40
-924CB5C29460BC09EC84F3F3A95F6900836F0ECCF6A7BB85A3F8D650017E5FE0
-503A73644EC6C6B0254F0259F8DD4AB3945950974CEB34521881A2506E76EBB3
-7DBA7812E0186DE2C0AD3E6D42BCA320014368DD738408C54AE2CAAA9C05612B
-E7F33218F2FECCE8DB2E4B3A3BCD9D8D0BAD7EDDCCAE45F6A15FD2B8ED263E45
-14AF0CC7B58EF52D5FE73023EE9DAB8249D1EB3B795C7B42BFD2A2852D2D16BF
-CD71056F412571F41CF7EE80AA916EA4FF1630B1E226F474CC3195006043B1AB
-915DA8A9484B930F1F00028287EA3802DA3C3F99961952E04B736CDEC7768307
-879B4D2D553518FBBA727266F94C3A607FFD5D85CD0FB802CA51E6A3792C80F9
-A637D47C13A787F5D9C5BAC24E843DA198B7CC898AD786DEAC0BA9B6EF955ECC
-72DA3A8CCCF7F3B69597A2F868AE359737A9714AE6D81989B4152DA33095DAB8
-5759080AA156DF1F3767120018CE81D296D813DC52786586CF3F38EE3CE181D3
-9D79439EE13D4E5799E03338E93315C3F6BA8ADC731A0D8282637E524C1E9736
-29C594C6F19B49C859D7CCA98148215F7E6943637797641D44DC9FB8FA403FCA
-BD581E477C7BBDBC84048141760B4EE0D181D585C519D02DEB7D1C650BB49874
-A75E95E6A17D8024346AF3288A32A7EDFFAE15BACD436CC76850F2EAC7EFF565
-C4273160FC5DC7434DB94BFA01D1648421FCFEF66D786CFF60F0031B649B6F14
-E9139B27185E6E9A70E439AA8D68C6535A42634FFDA55DE86BDEDDF3D6B73015
-37C7437A96CDAC620A29942E834F714D82774AED0A83771A152EAC0CC043CB09
-02574AFC4CA006FC0D24C3DAAF4D681CC1D2D7870F273773171A4977AD05A082
-0DF3F50C8A36D7D8AA96E82387AAFB48D048CFAE2CBAA88F1865B84CFBBC1731
-A212A44EB98265A8D4A8C118E038A0C3503B27D8B58846C4F3E8112C8B05A41A
-9F8B0E1513528F5D7E509EE847F7224AA06819954974F8065AF49F21840E972D
-C1B028B541BA1364045E814A9F8FB299B6B62CA150245D92588056992FE6D71B
-FB16F2B42A3DE425B302051FCC4A2AA76F6146BAA385614913D2B11191CA6A09
-BAE8567DCAC342D013C7830A0F03D848397110F021C63C9D6AFA90ABBC2DE4C9
-69EDFEE42C028640F9784E8CA11B83B4E7AB58F8335FA294DD68BA87FFFCC743
-67239D7FF1C54B725D53581832F5307FF1995D8273EBA54372AC82B7D5EC5773
-8F52B55255502008E0EDA0646D4D71137D822A57C0E9E05F3D61B91436B5FFE5
-CD90CABEA89420F4ADD844733B9B0F0C72688B9184A2EF69966411DF2B23A25A
-11F009C6F23E452854B77AA33129C531C2C7A8666D550A83CBA6F251CB016F0C
-940EC74FF62C721F3D854404F431DB39548F0785C5140A9D406C06306CBB0C99
-B7AA0E4680D8DE074B369A7481F0C12BCEDB787A1A9E4C71C869F5022447E317
-E6B851B8D89144BEE028D2352745CB0C081A7E806482F74E7EDDB5F1601A58D9
-EC5B92F7DAD1B462B0EB9DF22604BB2D617AC6056E723110CEBACFB0F6ADFC92
-F64C98F9910F91A8C4B39EF508A1AA01656C41247E1E8280A97089C515A1792B
-509D2DBD3C5B6972F6829B60135247B75DFA7C067675B7010FB2F116B5009B12
-1F139A8A3E25FF52BE00D9C4AE67496958CA3D1D4568218542B77C865056E45A
-0A07947C4E7D16D24E07A77ED01F10226CBBC21E0DF75293CED54214149619A2
-4A591F3F99EB14032AE840BEC7313CF1F24250BD8D6BDDBE85883D35D6907C77
-FCF01A7E8DAA9BF8E47DA3225623B645891455874BA99ABF9AC9CFABC083127E
-CA636C8673A1ECF967BABDABF1A569319A4E382E7C593CB954522CC9DF04BEA6
-57297331734B3959805B89F96DD23C38DC8CE17C7373EE5F7A9035557E40C310
-7D1DA91F87F0CF45E54518B549DDC5F91851E2899E9756A069CBAE8E63A42974
-299781A390072C7E59B9433F9D47111900DEF4E4F10913BAEE90794333454574
-37B7A46664522983EADBAF6155C6A8624CC7FF1A850313072EF5B066059CC840
-C4A1DA2BAC6DD27D3D3BC9653003D5B25405492BB64FE4A1C294F06492093093
-A4B0175F6DBFE6C4C28C310F71010F97035774250EE0468E54A7CCF54465C7FE
-7A70ADA08BB5B6A4AEBB3F60FA39FB810E6D7B1FBF169DEF45FD7E7EEC4B273E
-A11269ED5BC9F8250F8D29BCBB656105FF2D71FB624F7A67C899828D3A563491
-9CCE8EF268F2A8986577C3A752F91B650DC9717A89F76DBAC254DF1BC705308B
-2E4C7C55A152ED1AE945337B93E411B46DF56DD8F0942DD8403ED15FA515079C
-A1035F3C7A2648761792E241C6710503F7A6093FAD8BCA34C0378700928762E7
-FC371BDA7488C95F69518E1DB63068E740942234A79478DF18C5752490DF199F
-95C654423257DE301117F3C379DA5C90392A7BA173BA19BF2C35C9A0EE180098
-C228CED65FD5241B5DA3D318891994D363AE49E3B0FFDE091C82DB4BE7B240EB
-159050F74BD181337EE202011BC96EB74C68E8BBB26E46020355378E6EC2B9D8
-89DB7907378B83FDC294B134E69D5AC1B2CBC821420EE28CEE8681EA3EC902F8
-3E8503A833B675E21679D6C5B7041701FC553B95D2DB82987EB4A010C8DCD9A9
-C0FB4C048617716CEA638CE3A16C90E55DBF76408A71B3B7FB784820EC3971EF
-726DBE12A1098F350D9FF84E1846CD57B6DDAEF32C6B839644F57EE6B256090E
-C711154CB95AB2910587E15E3F16D402943157E9CBA2174BE93B820951499A42
-F797664141F9F2698166395DF7116293B6557266C7DA28E2FC1F8BDA4B00C07B
-6F7FE6AD4937A694EA423A2B90F9EBD30B8D3710E7E6D7BE15BA631E6991EE2B
-1A28A02C4CC51889C37702E57F13F1E54295D77148C7EBB6B006DD232EF94D83
-20FFCB794B221BDEB84DCD737D301A44B8414B4591BD1D184C85B09BC5E28A0D
-7DB0830419C1D92775DBFAD72F2D7E581EB08E516B0DE87BFF2DC167EBACE23B
-73A3E770832A7A22B28AD12CA07DD15D22FF5EE53C48C55CEE77BD2D429571F8
-9DC52FC92A2D4F7BEDC0F27C39E7BFBBE38721E56234E9AF5FF1EFC753C8E281
-4EAF702CA8F08D3407FEF7E177FDE6177F6604B47872CD9EC22A6644C5A78CDA
-FE3C51033C45BC1BE224F09EAF923B058E13ACDC61A0E7CB5C999DB0C8543BFC
-4D65815338F65AA12BDDFC1EF5A249270D84BF1377FA064F62F41787F3D875D3
-0E4EBD38E30D593389ED01180CA5AD540A89B31933BCEC4DEEA2CFA94C03FD0D
-290573BB3162C80FA9783A66AF33F11CD9437A7EE16812BBC32D80DC10057A97
-C83152905B954CBE464EF39D40056FF3047D9D57B9088A7FAD48E997B5096D20
-E21F9FF5858FC241EC16527F66DE8B403281A8FCA32AF1408D05387C3BFF79CF
-25C5E6EE231B17287ACC5643C94E54A6962CE33246F7D03060042B623CB80C2C
-2E2AC47CB431B64828D8D35426810074E1B98188A866406D24B8020D2082961A
-A4AA27528B60C098CC0F8D34FF1DC6C5A4836C028B2295A4D8281278264283A9
-ABE23AC0A2EC42562FFD6F5FAFA72C8A029F333C26D8CC5B972073019BFB320A
-966156DEF26E9AE303FB4E20EEC86A48468755EB228C5BDAB00714F96797F5D7
-E099755C8F80F0E3331B038527D5743345DDB65784D8234292AEB642C74D95AB
-8927727F73AF12F8B189BDA6BE8BE6A08333ED0E2F6F95CE8367174E0280565A
-97E1F70518E142D658D2335C2FF8C7C401322D6405D0964966EAC8341F34BB5D
-1C654BD9D3489E6F730BB646EDE9F8607F401C5DD1B310D7D422703F305ADDE4
-BC45DD88E798C4F4286B117962E210BB9EFDC968BEE0A9C3EB6B35D1C2E8E50F
-9B9A8D965B63255791A17BF7E7596DDB15B617B98A8E838DE92775EE9338421C
-9A4C9BF5B8E78E475E814EB117719239075BA70DC806DCEF05ACC948AEB8378F
-DBAFC9D998270678435EE7F8E262C2341B173AEE3F9A2EBC2C74CB158BE302D7
-A4FE57E744271A24F3714DF24DDC103687754CFC72ADDED342B5FD5CF9D13D98
-1A13712D09148EF593050E8099035C6B9AE8CFD59948E786E3EC4E1F426FA3A7
-9082E10E79CE44C2D9FA830113503944F8D23CDB9C27A3570907FEAEF76D3ED7
-C8E1F81DA7A51CF5B723F0E4C42E3ECAC298B3E1ACB9679A1250633C373805E5
-C9496CF87FA7A858656D4A663D3EE3218D9792CF705C361994B69461026D8CCC
-130FB9D34293701A137E393F5AE79DE677D13DF5AE9EDDC545496A8C5456A860
-B36397BCC78EF754B6965D22004B978B4A55409F73C44B9FF02801D524740B9C
-E4F45750CD7E45235F376CC2CDCD3BC1B8C7658F52A5EB185EFDB6A0884FF0AF
-1958FAA5FDF4595D6EDFE28FB5249A40BDE8BA11AB0E997E9876CA0A0CD05A5B
-A26F60316F61DBF6E65F43089BDA2D57F00EC72BA3666952E730B14C79FFADB5
-7448ACE6463BD29995D6F6F571BF3D0B426897E457BD30FE76D6CDD6151A94D3
-3D53801608A7E865A01A2FF3D915CAC2614DFDA0A931E009FD1CB63FCEFD0A3D
-B26711BE84286E389805941573E02841C8E653FD3131316E768E2D096E5BA648
-9F03F9825333B2DAC376A79850AC29CEABC8BB1E7D4E34F37D6E9F388124A9E1
-9981131FE0F6718FFC580E678C9D8C1AED790D0C0D78407050D5FF315E605C73
-A16D6868E5DE5E8C1F63A88E159CC44DC0BB3E5CEC35CCBB7493975DC55F52BB
-A33709E5AE3066894885728EE784142B492056EF876521DA69BE39FF4E2BB95E
-C60688678B37692CD40A8BCD585240B0AA809328CEC0F954F0D50DA10DF61A21
-EADE286E22F67227CA286D9A0512EC909DC28518994C6D6E207D4D00514B0EF9
-5DCDA5965D827642072E6DB4B23D1F6C3250081B4D8E66084AEFD663C5F26E7C
-E19A4F3C9A100FC4AADA76F9E4AD474D033819801F7444B51203366CC709AD98
-F62722F700E13DB42D80041014AFCA8D12B23B85BB2302AB944C437FE0FAADF3
-E86291BA50463C32C29FC7D8E4B5EFED49EC40947016D0846AC79E3776E62388
-372568D2AD0DAADAFECEFBC4F7E6A8B47C214A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E10A31C7011C0FFA
-99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904
-A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB
-11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5
-50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB600BF00E09
-8A98D1D031C430FAFDED5CFE3944C4818C6A0C98FF909FC1FA6F3E7E282BFA41
-4681DB8E2D5D12A2B653E32B01A8A9C9955AE525F963EAF4B07A6D1D08E880AC
-3D77B15077B8882DAB21B262E2EC978310BC07DB953F8C65C9D5D01F35FB5A9C
-B8C57B07209A07E1C0C1B5F1324B128B60D43C223F73DC12DE901CA5AAA63BF1
-2D47B7B0B9D35F25A459484BC917AD0D87779E379F2E5E5677F463D9D4E33B38
-99DF4ED7F1C5B33E0C23064233288FF324E07452C5DD4C46365512B412E6CF46
-DCCCB4EF51A65A8E2AC9A5BC5384F739AB8D4995143C9BD3599696884AF450A9
-0B3A707395DAD474797780AD0A87C8317DDC98871259B09B0038E5CA31E6EB6E
-8FAFD3D294971700EE6CF2D4CABAA8AE2C0965FD3E864037DBE485129CA30BCA
-3DEA01CCF4AC088FC977A4668029EDAC0CFBC69C930546E7B7EA31296D7F8B31
-0DB809DE11C0150DC81247B6259C110EF06F9B3ABC4641940EDF4CE46494AC13
-72C2933FD2B3288BD37E4055F58B0E83FF9BC369A112E9FEA4CDA525E3B92B3E
-932E64E549388DEA2C0B1F29B356A0E216B37B8742916B0AA46AFE2147532AAC
-A54DB16333B9B4B66665314F8028D1DAAA6BF0AA511DDA067041E465100A7824
-D778792F109404C1A5EFE3481C9E20007664E5664A3FFF70BE402C3BC84628F1
-2703294F2514048F2B8CA0BD9EFF679B8EBBC8E49A6909FDB6D9439E5852F7AE
-296746725B1840172ECB51B72B1F2F982740F7EE67F40D96BE2B8C310F98A980
-1116EA8A4D57850E5F87DA60D054A24BBA2831838C211B008BBF8E3683B8D407
-9A3AADB4AD7D0312D560FF2DEDDA60D0A353D797BC831E4A76A234F9AAA123D8
-1BDD68A4EFDAE4338358A616D29309A416B4962EB01F6DECB59E84A5852ACDDE
-BEFF98EAC8D864A4B457A6864A7C7ADD3EFD7B2EDB984A3D14BA84390B06B83C
-550FDEC4A8A1F60B8F47BF810BD636BA945DDA0C1ABEB31C80CC71DEA1DF420B
-D41E4D04512EA018C53422F1722EFBC78123B383C9BBACA7F62C5477BB8579B4
-471922BB21A881AB30840F1A076A3B14E7EFB5A0D04610F1D248B8D6977C7C24
-5C1307D468792CC180A2DDC3AEAAEBD1682951167D9B010A3F31F74A54114C90
-6B7E87AD0D74F6E64C225E4F6C93277084CA01C09DD7B7FA91F5D7FDF9C78C34
-9F40F5CA84E8341093AFF161914663BAD849119F4D56B5C880FBC709A99F89CC
-460183DFA77E9A8817F0488874D68F1E64F690865A6ED2FA92D4B0E08C51F5E7
-95767B6B3C433DF63FC5F8E77057C2B8194BF161C3F8104FD0FA8C4033914C21
-895DAB5D43BE63E461672613B9333FA125D04205FB9EF2708D83DF0D49483E24
-143531AE2C99F7F96F95AAE8E292E1879EBCC408CC102A32CEC3FCE958691227
-5446870CEDF38ECA235F19B62F7D83116DAE464E77EA2EF5F321EEA6E9C9B685
-27845D4BC456DC77767EE49F915496C84A7BDACF424378B835FE2CECAD2E3CEF
-366E0BEFDA94E1B4FD1D838CA676E002427508687E3535B681CD072B03356F5D
-C804A3D54746C4C7501E61176E7FCC900DD83AF1A73BBE3C3D26B3EACA9E6B30
-52430FA70C2266B17C1302659F6FD5857422D1AE32F15FC9F746B770AD6F45E1
-CCD6A402BA290917E96AE92061E801EE9876FFFF800C957D57D75EDC1199DB8D
-FAE3A98603A0964F0F05F2DECF98E798360C70AA89438452AA8CFC95C5BE6E82
-D12FF9536DB97DE9A2452013B2D95D81875820B57FB0DFDF9A4A778A914F2034
-F6A8373B81351C44D69CFDF430997BE3576D86CEE83156772E71A7A70EB0AEEE
-7621DFF6E101B32F7A2ECB0B9F02ECB4F54DCB54AAFE7978C759B116F84125D5
-401851A9360D1FDF438407FEE5843EA5E4062139D474A76121006923240EAF67
-CB93828CEC646D632F9F0EA8C20DDDAB3080BF7D774F9BBD6FDCCF38B3F560E8
-84D93B442FEA4E7EB429B7B9C14B276FCB8F39B6431A141E96A24106335B966E
-F3161D90EB9CA3DB6B3F7107D25590F7F4454D2B510A2C0B9764F80EFA8F060A
-9B078CFF276A88013D97FA5E908DE854A00FB655585B9AB0D22E9E2E86DFF0D1
-AAD10D3C1B0A34E9ED40E7B18F3AA2CB0EBE66F14A18615A0BB818A05B1B70F6
-D0DFEA076D71F8BE0978DBBFD62EC9ACABFF8703485899B12D3A68BE64B2A40D
-0D3650B42E55DCD5ED90A9CD2FE2EA64398FFE6BEC54E9BAD493D034B743A214
-5A5FD3B2AFE6FD112D73F393DD613359E7558840B0B9007483264A21F39A30E1
-239A08D90F3C11F48DEEDF8A549BAC0AB84C0CE01A39AFB47732DFBB03FB925B
-B72ADA2697186843116B540DAFC381F0BDF51FB554A7905F1FEC57CFFD19D141
-EF384F0D16F6ECFE47CD2515B9402BA6CA55D473250E3EB2DAC143823EAC583A
-BF749C1C1247CFFF1C0D41868B2CF0F6F0594D0DF2CD984757CFC86413A1FC6F
-3DB37B2CF2A2E04EBE7D05B2278EB9FABBF671ED8D8A5B1D1228C2F698240026
-8666021F7A977F2BB41CC6B1F0D3B7A46521C717285E5E61E936EC61196F820C
-C4C746560DC0F031B6797E67BAC1A518DA30EE8AB870F3A3531C781B4355DE1C
-66E31FD022BC5E8100A319F218D824FE4B0472AA8822C3F7E5F1CA5BFC2CDD93
-E1BB1B0A192842C39DB1B8703B81D1B8D8EEECD9832D321F903D7C06E724090F
-B7F4FA37064F1ED601E970091C9E99B5EA7BC06FE4E69E34052F065FB0331B07
-E3F6B76CEB7B7058EC5985AC310F9F502D982C43B144FB0A19A0EEB0E8D2D59C
-FC88340EEA8CF2EC23822956934954194DA3850C70B135FE2626D0B75C4CCB35
-132378CC7BEC8DD4F86A9B0B1D6C3A89BCA2C750DB5FDFED7BFA2C0A447C614D
-812FDD4000CC37A0CE6994E0C35871C426F872395C71B4566553D083CC436108
-7F50426FE26A03EB7877250BDCF09861DA35E0E92C34A6714244CC183FFE6F82
-C665A6408136EF31A0A50AB9C38AB284FCE23F867D12FF239654D18DB9100A85
-1FAAD02EC6F5B4AB691916A846CE953CAF5B32774D37E208DF38BC9EF3A5F680
-A62CDF924DDA39563128E7FE539FA6C2CE09F5C9F154BD523D3B1211EE7C5437
-128C316A8F171E3B75E27B204531BE59BD50374BF918DFBED45D73FB0E242B6E
-EFA52C5B0DB85952E4E6C86B301A5174920BD322C49DBB29EA44646676A4C4DE
-EBC9B61A279A3CEEDA2553D4B2136294074141687DB75364DD78E6815E9AE2EC
-366FF3E042726B039A9C5C193B53C808CBB0A498B7C80404754B67F7CF49145A
-D1B7E337076982EE64E6F76D31BF17C396A115A69E0610F25BB9E5DEAF5FECE0
-8319CFEC44B8549229993901FC72AA17351A442568754A3B5B4DF7B8061D73C6
-0B29DCEAC0DF72A6236D4BB6ECCF4EABC47713B2A609DC07D96740A769473869
-FD1AC9B5BC0137EB2A3327B51378159AFDB5BBF257F4E60F127828E8CFE74E01
-D968038F659EEBA34361CE6CE0987A80C7ADBC06D71C6E3D815989AD77551771
-66F1A1AAF42A3F7649DC718AB600BFC70E4CF0247AA2A4BFBD84771199AF150B
-78100CA83704D34EF7D65F51235DAD8A5882EEA58729CEF60CAD3683B572D0A7
-89A6DAF840DCB6C7AA4A4B23222D08087B975BB64809926B588A0300F0DE79BB
-320494CED7BDE6636F3D9D826D7353C2C923BFE00949B710611D9E3DE47C3876
-711F0135334980FBE4801C3BFF158F1FB5E2E5E388D8EC7689E92D8869A7C166
-1C4262C63687BC092675C23B6755BF2B107647A4EDCDBAE8E511A64ACEB9CDAD
-F15ACE64F8E8E4A9B2064C0FD8E446CAF1592C8F109376B98D4A5B31B15B2892
-7C0FBA025E497B454B25DA16D9C31F8C0BD17368499D3B1D92A06E5E4C8C6A87
-06E7E68C95975157BAE3712904797B50802CE069B74208F549710D978CE4A253
-C186EC2D6415479D0FEAA1DC076885B2A509B0E6411E6B5C8E0EAD7578997B9E
-C5DFA526E73CFA5D3839664B3470B1973FE1790EFE2A534A277AFE1B140E5669
-407396D0BEDEAD0A9B7B7AD54CAED5C8A70EEF86FB0045EEB34907E32204EC9B
-278C809150B70F1F086F756AFFECE6F05946C36C265EC6EE79F9A8659FF0549E
-33E4E750B3292799B3448560930996F9FCAF0B5083EE6F23B238A41EEB065506
-B63F6B94F6DE9EDD11947AFB257961EE4297C832AF97D38AEF181FED09CE97D7
-FDCC50CA3BA7332EE65E16B91F62CD678C28CD26B87DA984AE10BE0276366AC7
-7BE023637C1122C8ED16412B00637D59ECB9ED3DE6A6A816E54630DAD0E5E306
-1FC9A8070EA0EE84F2E59A7E4D814C8F766ECD9EA08A23E266F1BA97362D724A
-CB2AF5932D160D281A03342E28D57B55042D68827C831B8BAEB3A42E3A38531E
-36FC41EA30DAB3F1EC598A3E011099E5586F65C806A85629AF34351B3A24A8C2
-76E43F08449043C788C5CBA1B0EA703C100377540870DC8CB1898D6783B29D66
-23BE3D60C08251392D5060FEA9BE4A40EF55FCDF1CA4BEB397041CE284527907
-E6969695E657A1A75665CB7EA8CEAB74972919F286EF710A7D123E81F60F625B
-8BE0EECE4F52E73D0186ACD058D96721819B43AD03C98123A5892B4198E3304E
-1925512299560CCBA0AEF6F9FA2EEDD0ABB0D0649AEF7DA23DFF6EEFA2BF847D
-99A217F8665916CCE5518D0849D611C7221BDBDDC4FC0E7381A49DA520815274
-3934A0FB9435C721CAB181701E292D3368DFFC86613F755D4801E97D7B872E0A
-0F6E57A80363EF1DF156CD873C303A898A5D75D742E755D019DA3091B788A036
-0CAE670793C4CAC7A15C2DEE25E49D7697F17D2F4715C2DF7964F2F88C13D83D
-C06E6ABCBF412C543BE52A4166FCC090F12E66727FF1B01C8FDC772E52DDED00
-40EE0A60818F186487150B1E5EA3B73196834A2D201E6847E3EE97BDB9CE9B6B
-ECD33FB11216C18EC4E2CB7C4B8E841EDC37057FAB5AAF23A088C7DB0CA3DB9A
-67799B2629CE0E70610F254A87A925D3D107450F209F26481B5F416D41E26C55
-934226FAF151ED9FD52E19841CC57B3C45A5F9F15B6FA9C0CF8827EC69D372E9
-839B245139330A92B0F8F2E759D0F5E2AEE7A08F0744DAE19CA53080B062D3A7
-E1A07511FF4803F76AB6E51A80185E8734392059F3B1B9ABEAEFCCA68FBE923E
-3CFFF31A62C16BB5596DBEED2FA5F9AED96A0A42A8EC600847A1D80E24F63BCA
-D6E711FF7F0A96C1F87A8D70611B311F87A04535E4822A7FF4531A9B1FAAD13C
-4E80F5AF473AB4183C65CD87F6D9FF0E5FF6279E3E174314F3413EB629DFC3D4
-DA5B751031BB211DFE829F583DFCFAB20C9D972BD57B2C3B604141AAD99A922C
-38CD696CD05FCEB4035334B02A1FDEBAEBCE1672ED6BB7F83B5FECE3001B9F7D
-70B45AE7E282D9F9FBFA62187E7E0675969C232B581CBF4C6BBF10C5CE84C3D9
-1ADEC8110EA8566DDDCD81E0C00FC5D59BBAFFEE83C274277CB42BFF09D2AA05
-FA0D8BE8DB1EBF587D31A5A8E9C570302965B2F148833CC8C64FAED2FE6DD962
-4FDF21B46A8A9C9C54B873D6DD285C1FC20BCAA83AC67D7CEB023F29F00B1438
-3BCCF291746D6A04E176368398862D4394BDB6BAB8A24BFF5DE8848D5E250E10
-98CBEFC7D88AA7FE731F6B398BA1BCE100C3C3F602C11CC039FE279B7E46DE37
-0C8328B49107C6FBAA10E509A76C9A7D34A8B96418A36EC0B3F56348A1CB5763
-2314FBB223B0CB9C054730EB2D8F9BE48CB980024B624A3FD4794B22F18ADC84
-20DA169DFCE96CAC361942A22FCD95E260F46D1279F293F2709302539214D2DF
-70D1DF28377F0A99840226330506FB5EE3A0BD9BB02A99D840A3EA58C69B93E0
-50E7B164165A7EDDFD0E7A4083891E3F5A12653FA9AB3BF1C330678358A50910
-C65FE974EF46C8AC66CF7E16D27CC6CD372FDF2E7451BF5753B029E8A456FA07
-3207EF3EB547B319EEF01DEBC64DBC8A33FF83DB4ACBA00502EAD9B3D7CB8501
-5942A7617ACAFA1594657513F71FABD0BE842A5DC60D629D0C752D7632F7F047
-0E7C87CBF771837B5947273AE5DBD500A41B884E576488836F6A8612F93E71C5
-4D64831C34B6FAF3DECE28BF4B20E7A870AD5D0F15670E7886F43360C0BDF2E8
-5A55496CD838E57BD4A0C27610AB2F5F0A7D76C1AA97641260FA03B461A3D223
-3DE435A15CFD585F5BC82BDEABF1977D7AAF973C6207C632C2DC5EA4D6617101
-43F45CA50D60132309E8795D2B0B6927A0C06324307C6599521A9FFA4CB5113D
-7C23F8830BC9EBDBF923AC5B12BB34DE6E1C7C0129D2CF2EAA09B68DFF712912
-A46E032A2A575B214293E06ACB5DDCEEE77C39F3A9071D9CE655038DB4EC2A2C
-480AAC659FD3D18BD497A8F6C5446E2A6496AE279803F329CBB3F6923C53F965
-7B6801DE0D3B1E00A8F5BD2FF70782D962F31AE5C6D6DD32F9307A97CF121830
-157802BA4A56043F833402A7A383B94D79C80ED4FBB6CF188BB91E421165DE85
-245E64BAAB30690EB6C3A8E51F6C074BA0509AE82F59E74C7417D06C65202030
-D602637542CA33CFA6522119EC9E2F25814BB5A196E47146ECCFBC844D17A5AC
-18C1F640E28750D3B6856A38B14FBF3B3C70D4BA559B2DFFA01D112CD89F7F40
-A201D0DEADDA581EF4AC73A051C005BED84C7AE69C3AE65163E8FE89F50594C2
-67747A3724E89CC50075956D3F2BFFA490FB6C02CE988AD18F52C815F2BFC18A
-D1A86E95576C1076F955183310B6271FC489052140553A08F9E322C0003964FA
-5751F67640750AE533F7D90061AB9E487C4200A30AC0CB9D1D6B882631125FCB
-FA1B24573E504A042B2722CBB83D5701294600EBEE5AD470D1983D44124FCEA5
-51BEA2690F79C58BB913A8F6036B7FC87C5314B6960F52F2579337DDADEE0249
-B2207B7AE69D4AAD19E5CF36BA318FFA19324978B4DE4ECA1E66366B070175C9
-60529A88B19F69587F9F479EA8279312DE2F6302FA872DE1A623654D2C46938E
-4F92B56E3C1513F80425060B66928CEB8672DE30C722631FB26EDCD7883F914C
-4F07167152A21B6D4F7AA789841648EC8A6859EF4696F8E2A615ABBE54161E8D
-C79111FCF9F9C956C1DFA1B3462C3C4570C91D3720812182CA75C72CD4B1979F
-D6376F48212F466945C83A94F148F300A4FF573334D01AF0E6E37E4D8F918A02
-9CD4246AB83D1946D230FF9BE714BA3D5BEDD2D331C7FA68CFE88FC0AF6F89B5
-E515227F55EC66293FBB3FCDD1976B0DE8ED0766F8F60E44B7831E25672BF65D
-6DBD52D97FBE605A2CBC2E4B72C443D2F60658E81E2183BD70D4E66277560B0C
-DC0CAC9F41726329AE7208C956D246B45CD31AA4152D23468902E5903170F10D
-BB169BE014910AA9102F382BC033A26B4DE9DAC0D7ED7F848C9C9176805D4B5E
-8D47176190D1F7AA6F8B1B2F77A5358C3B44C21C3A4F48359DCBDE38F636929B
-F0D6140AD48F557516C88E2186B12D011573A188A71771F37E9FEFEB9781137A
-1F44F2C90F4204C3B018E015CE87976E38F65505E54DE894A2E9B292BF742ABD
-35521DBA016B6A3C1BE594C020B1254459D3334F92BCF2645A454A3AA0F9A40A
-682C816937D4CD2C392D396E6E14DC64CB72143F9C3925CED4A721ECA16F39C3
-06A04605C768344C64FA9C9B75EB4FDD28139BF786619544F0A077BC564FB554
-A59DAE6BC2058064C0106C4878418D6A124654B23D9354706AF7449C996199F8
-1D3DAA2A712A18CC214BECE73751E996933968EA5766801653EBC042D1B38AE2
-996900B303A56EC81141741E26F4310265D8E785B1BFACF7B6210F2AADCE5C84
-56474ED40D92666DEDC745E4521DBC1A26F26AD1319DE992822838EA3FAC3C02
-E4F185497747635D932FFBB6EEC172AA9B975042F665BD097556EA18AD19FF77
-CCF11C505E618A19BD21159748FCC9005C9F6BEFD4B3840307B11477F21B4C80
-C6CFA2E822731A4372613498B69886FA4F43E2423C73928395C85CA14C3D5EE0
-41A6FED4A65533409372897FFC229C88847204EA16770DC57FFDCB88FA7C69EF
-EBE08C4EB56DC0D1561023AE4F4057C138FFFACD7E0B7E4C3059B168492FCEAF
-39218326F9C53CB151479639A0AB8CD5B7EAC4F53C9D54C2B91C2D6B42124C40
-C6F69ACD9B93A1AD62F37D68A35E59EF96A332ABE5CD1B52F8BE81C98EBB5C6D
-611D98B24386832ACFDB35AFBC089181D91814CE1098799B6453E7DCD921BAE9
-92760955D4729353B1B9316BFFFF1F9395BB293244D1F2B05D5934830084A81F
-C723CBC710F0CAFB8E79D6376D874DB0DE06022FD1E9916FD034382C24D35B57
-A93B81C632F39ED08B37CBD0026D727AE8068912566BB5474F58EAA977B02B87
-3162B42EED393667CB88AB5AD10EDE4A40D5AF10955DD0CB0C99FAE88AD6FDE6
-56F222885FB42190FF4882D51DBEDFED76DAB1F9404C4723B6D7727238E1C18F
-9E607AF6948E851569349ABCC415FDE3DC33F3BFCB410FC8B9773349491AC74F
-247BA3B60D1E6183F8A666AF584453037EAD347C6C6AC7D8B0124F398AC6A323
-FCCC15CE4345B56BC2CFBBD17AC5353D60191D0E3C9A9CF78DCCD46DF5F94C08
-A012B7618901095688C82869D11824493806CCD4FD7F90A3347586E6681D260C
-168869AF2A9D1F16637484D4C81382EE66B08BFFDFC57EC9FF815B1B8F60566B
-A405CB9BF6EDA6C9030FBE770F82DDBE998CC1A21BFF7BE67CFD55FD0EF86249
-EEE248A9CD8DE1CFB4CB8B100D29E8A2E50324F7D716A6AC7745BC307E74261D
-9AC05E3A9BB4E1EA6D434C82DCC2675CCE0AB1AFABCE03F8A938321257A15ED9
-71FFCE05DC19AB211D1907BB9DC032004EC6AD80AE7342DA9EAD9B6EA8AF4DD6
-E022B3DA7D187B42BE8D6F0682FD89F4283AC87D1CF68B6193A500539C7E0280
-DAFDD1A43E0560D2FC444BB9A949FA408F7F7E130E5D1656F2355FA7264B57B8
-40A70366CB14DEF5908C1A69B8365DC0CBBADFB4B82B2FE6EB68DDC9B1FE71C6
-2D61F5A48DBDF1BC8A9FE9D81CAE0F95A2FA190FC194A94623826D4A76D24132
-3A3A453D71E03414205A14ADD34DE6654972FCEC6E77BC7F988DF7212D642FC2
-86D98BA69B2CA28426880D25B97B845D3B0BE5015029F37BE17AA11D4A457118
-08F97B141DEBBA2F4EFE542CDC3AFA825338ABF0CB919718DE8C3ED384AC8078
-10BB680A52115C92AC3A6C75CF5D9BE57277BE62A0C638D058B6FB4F22B669DC
-9BC239891E3006D13D2B74A8878B8D932F12E4CCA70E5DBA1CAB0EF0D7EBA6F9
-8C89FE5A4DE66FD55579EA6E0D0B302AD7FAC851FF41E1B50BF2771D45BD4287
-A3712CE3E26C1634C30DC6E0C2B2B9BEFED266A65DA87505B05725D9E882496A
-3A2D9BCA03344153528C694F151250CF45ED116291453BD9C364372F19E3E047
-3B2E1268377C5F3D60376892D49EC914156AC19102AE4B83FA1BCA49B20596EE
-73A6B8832F30BC5440C076A5C79E61204D8DB5C99D885955723016C7E93218D3
-3F1DE9F004F301E134966BC7B30D87DCCE1EA53863D0C4231E6FEBA239CBE110
-D00DF9F318F77B6A55BABECB54FBA883110D88F2EAA5837954B88278801F1FF9
-DF37E6642449A7296A34CE8D14B32970C37A013A83D60F9D5F3CCE70E80E3AB1
-24DB2F9982D9A1281B7792BDF5EAC3473422DBBE5492784BF5B0DEFBC6FE05BA
-283506E84F5DB90E5D31A94CB84FC593B9A12B2F48DCBE4F0567CC6ADDDBB8B4
-359C3EF63045D4A4B607DA8CEA2EF305D9AFA2EA059C061E8D877E10F2517910
-2EF8EE46DD88AAB0CD1366B226D48FAB68294269E30D032A859B1BBEDB38D679
-4C545E8D4F32E78764B36AE45E2DB298ADE78DD1661D73BBC892EEB03D3417A3
-39F4DB9D20F260885EE5D6900CCD091152DD0DDAB60EC66CEAB06E4CF987F90C
-1D4E74BF853A04C2B74601E743F52F0F29D2D05FFA0B6BACC64468CF62C0A2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX8
-%!PS-AdobeFont-1.1: CMBX8 1.0
-%%CreationDate: 1991 Aug 20 16:36:07
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 16 /dotlessi put
-dup 19 /acute put
-dup 24 /cedilla put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 126 /tilde put
-readonly def
-/FontBBox{-59 -250 1235 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
-7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
-EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
-7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
-AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
-E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
-4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
-5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
-611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
-D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
-EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
-35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
-ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
-7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
-C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E42779FA15EFDB451F
-53495CE8EFF239E4EC442E1439594549D45F5276F93D496C9AC712D762D0B702
-E894290BA028837304AFDDD8BAA6564E9DC307A14A7A206550FADDC7784DE3BF
-3390188BBCDDD929C82B1D7B529553BA75ACF5B385D31EE3902D96B2B5DDFFF1
-9F0F90FD791E54128C1717F313486896868A34FAFF22E23CEF046D02C1419BA3
-4389DED48DFDE7F78F8ABE3DA17968B0FEE61D27AB43F61978CC300F2924EA14
-BA6FC2FB5CD4E01313B34CEC99B77A3D837EE53D274DC3BB04EBB9EF0EEC5A69
-962A0F4F2A482166A52E809D5C4888EC688BD43E5A099D9FA7035129CA7C2722
-844491DE966335021F4012ABC14F978ED81748F0538178EA4C9D7A0B35351EDE
-6807474C509D11DAB19B297536ABBC95CE452FB95A95A704B50458BFA68E30D8
-BC5CF97BCD247877760E3D6214BC148EC97E11DAF733750448223DAC2431D482
-63AB82145EA5F9ABBDCC991DB40F5DD4D5F484954C2E595E477F986444F55AEE
-401B565D0FE39818DB83ED1702301ED4A36C26B64CBB6C061D6D0D15E5BBA146
-B302DD3E988B4A55409F36929DF832640D9E53100AA7ED1D1B256F255CCC0690
-C3CF605410317820B3E03ECB0B9EB0127613DD7816D649EF409EB9C1EDEA9D8B
-54F7AE88DD345B7E37076A9009EEF28BF01F3A1C854881D99A29D9034BAAFDD8
-C3F2FAD2A47CB69009B4352F69FDC78C225C69B3A637A26065954A38329AF9B5
-29A7F6932FD992D80292F2CD1597FA436D0DE7C91407D1CC2AFEB98F55478094
-2741CBAEB447D55DEFC2B7C49D020B6EB50616F4BF5063D30EE5838E4FC2E147
-715C3B6416075E9AEB71E42569A9ECEFF9A2AE2AA55C500BED59B9C1F6A1F66F
-38AE40AA742517E379E65283EE626156AF35FE4A26E1CBA0073A738709F54B4D
-B9BDAA4EE057E728D0B461687C9975DACDF3690605C2D98EE0B7BA127114E52C
-23C542E8D2EF39D2C9E4B793EA50A934110C51066DF92D7B38C3480777D07EAB
-49B84B4CEDEE7158CFE26EC882F1A5E4B28441561FD2D13647AB40792DD4A970
-25B7F1A23EF4EBDCDFF405B122646895FB3E8E628027E34A72E67020D5E62A87
-38C223A0F1BA730FB4FAC3112FEC9111997301529D41598F4A40249E083ACB42
-ADE41AC53ABBD8717429106AF10DE43B659A6BBA8A235107E1CB2FE299511AB7
-6CFDA174E57BB46991370ADD818E0BC0C54A8C66E4C97AF12E038FDA89110237
-F214F4D582705CE5B3315FA281E35AE58953F8D70457CADDD552CDD364C90FBD
-DA811ECABA00498EECC9094A28B5E198058D7E2D4D76EA6D75959FB832FB7034
-989D3059DF980833CB801F53DB5E1117FF0BFF172BA5821D83A2A3D669F39A29
-B85B33884FD0240588A9894FC06E395193E97179B9DEC65AB5F823757547945D
-863733D848BF0FA705C52606455D8A3541ECD15C42A0FFA699FF350DB28EE378
-3467202A90B7ABBDE00DB651874F6D60CC26909C7618D4C741ACE9180A572632
-BFCE0C6C9021E1ABCFAD7824095B19DF5B849A293E7F1795806DF7FC89A8A91B
-27E3908645DEE3E6468BE5356ED95832591900216DFF2BF9316A474B7BD36214
-8EEB23E9AD6FC316076B051DD9C90C7D632120F972FC285632F12367C5ED1560
-9B2918D03B72B9B551D2177E700EEEE3377B8CCC1AB270255D90A81C3183457E
-4358C0F074367D9A555149559B8A6038B2F3E740215847A92DB817B98DB070A4
-6B92C8C8A0746319DF9E9FCF25E73789ECA755D28959F89621F315608ECE9029
-BB685128C8D22BED5500D1886C7A677C985DDF465869866E2F725F6BDE7FCE2C
-C819498AE0DEA811D77FD1C7431BFA72BA2ACE9656A7B947B698B95EC35D9A1B
-E9E908B2E47F213C7780BA017D3F52E3A65ECD58002A40B9BB01A7A9D9B05484
-AC1831899684A68B28CC9DE6C37514A815145B7B13990DCC49D8C28642496457
-B23819CDF607DBFD58F09E920CB72E0C971D883DBB5C8CB563BC09F096F20EAC
-4F2E6391A8736AEDF56B60A4FBAAD9E2126C42FD8C71B5AAEC21B6206E7547E7
-0B0CECC2EFE5734F00EF5CFF7F35F4A49F2F5BB6E3B5260A9FF0C8FEBFDCD944
-F797069CE01E2CD7CAA31A8297142C8BEC67C912248931C6256BECE7D7EC08D8
-2F81BE0558DC9C80E7E9B4E60BFD3ABB8F33BD62CDD74C78272833D88A13116F
-1999901D3D02A3AB6DBAB0059C475931B9C2C7A99CE5CDDB388D95B2682DF46C
-AAB2DE828CC5A4D2F41B7689C83E30D4BD80B9909FEF97441664290119C8C36F
-E3C16D55AC2E121675137F4BEAB59765CC5C85C1B7EB918ACA2CB44EB0B06CE9
-BE34C937A8AE8122BB93773F6F411F7A759AD4811874D72F7E3F75EA52109914
-7D00EA70A4DBF354EEBCF2E8AE0CABEF155ACDC24E6797AC20B388675E8CB391
-FBA2122CB835176E241899C7F13F534DBF8DB886A6F83F126BF019DBF9FC5C8D
-E4C95FACEADD7E7B6A1755C1CEF78D7AA92286BF4837EDA2E794EE2E2277D58F
-E66DAE65897E32BF653F4AACBE2B17AB3AA7FE117E029436F8F6059069B74ACF
-1EC7B1302AFF42B38C72A96141B21FEEB4F4FFFAECEC4F2C2FC1068D831DA3D6
-7BE531812DE4307FFFE8A98B6C4AB5F9E5A1F6956AE39807CD6A18A12AF22992
-35D43F2A274D6D081E8D530C8BBA1CA5B5F8AA11E0E05036B272D9CD053C615A
-9DEA172685B70429A9A8308E9C16B95E6E06789B1E3DD22A7289F05D13BF0789
-F50D6608835CADDDA11676597736C41E7DA9A948C857439F0B6F39845FB1679D
-3C8C14F3C8C5131A469EAC144B44DD3F3DC1315FB627A80587F37A42B211064F
-9780A45ECEBB176CE484A8018D41896F6FDB4E4F4257A60E869F280DE1CAD45F
-BB478526395FC993C9CA6A566D3FAB84B678D7E0F591A8E7D009DA0952A44632
-DC4277D08D56B5E81103DF31BF466629EA658C190EFC1DFADC75D272E7DCE4A0
-C6309F2563AB76640643CCF0A905614A3EED3426DC172A4FE55B76640B415A10
-951883D8FCE87FFD8E1987E93475DA0435344EC33709FDEEA16D732B9BF323CB
-FFDC2F308FAB7D76D431713478E922BD9CA32CF958B8E6B82B8ED9B81CB06BCB
-3AF17A9CB807F8FB2A963450667F7CD93E292E13916FC07B976E7FBD978D10EB
-685D7160102AA8359E260454D8C094C2BD04648FDC58E14A075B6EBE0E861E3D
-6117DA938A1215B0790E7F46B7EEC0AB98C37FF9A54A7D3A6DD83759FE9716D6
-80F4AADC28AA151DC0E7916146343B2229FEBBE04E4650018BB3D3172C2E1455
-3080E67ADF626201FECF58201BC5FAEE3C01E8EBF8781A4F8595CF80B013ABA7
-A2842C6AAC9BB76FCD645F0B5A081B69B5A641886826EEB75C8ABAE54E7FA7D4
-39875A9ED06053C61A330ACBF818BE56FEC992BD5A30CEB78D8CA54FB1CABC63
-02E052501B309D157571BB3BF7E27493D6C2BB197064E1E26DC2FF85D5549B03
-5D53346C86588A0980DD26175314898BD7288FDFA33E44FC77AF2AF116D39543
-13B45BCFFDC83E8B9E2C9AAA46AC3ECCFB07E17B35DE3070818B648E2A69D438
-FCCD284A6955A8D50CCA3C46ED33F8C3A3D686311BBEECBA3CCA1206D01B955B
-A805244D4E5D4F02E346B408F838264C5A056413D25326FF1AADBD21C2130B87
-CB6F9C91420B9594309F002215ECA7A5BCE554CABBB1A43CBD3E76372A48D95A
-2F1237DAE67566A6BFF200E263345D4FBD5A1B7266BC04F85EAF6DEE32ED2D01
-D15F80DD5D8C1EF7E614BB629990C440C0B964B39104F82CD5D0CBB0BC376ACD
-0E2E75D06E65C92D163E7498EB7B0F9A7A6BD9C8483B0CC801C30A31A4DB8DFA
-2DDF2F1EF87634ACC600B066E017BDA91917569E9AD59F33D7564C875EF596AF
-A953F2226C410FB2CEAB7A508A666CA3D94F2C25A931ED9518DF783AEF44DE3C
-733875511D5E6E4E06E3C430D979208B60445757CAF3EEB3B63C29751E3C5C34
-D120E62F4868D87828D191221FA26BF60F4DC9741991EE948B413587CBF50520
-FF5F296B9483EB0E056F548E82E9DFECC2B90DCD5D5EA0958C62A48B1784716A
-859C863592EC99195BEECEB6AA64C2A870D34903722AA7B19B1C7F5126BB74FF
-763EC2285CCB52F13A2D1E95D8875DEECF34DDFD5CC3F18F27E925C9BF9690C6
-263CC22381F06042F0AC415A28EA5302DE6F35F1215B04C098AA18277F23EB63
-E08951EF3059C4A3C606E548DAC4CEF42D2A116C02EED4270D1334B3C7813820
-054DC6639A3C4B25A398D5354F57B7C556A5A95D20FA6FBF3406E3CFA512648F
-6680ED47767E80A0F0F1EA0603CB441476A81B8BB278584E747369C88E4A9A27
-202C3688C3C2162AECCCB65FEF5314F81E0953BA98E833F84134502BA2C4F0DB
-CBCD65A0EB3DEADFD9584FFFC9948571038249749CE13A9FF0969100DB588B09
-901964577D93D0856FF3A078C4DC79FE5B6C1B5A5B35FD22B214BC16E2D7A5FE
-9B34197D4A24A1DC48240C6CBEE2F4FF5A1353A1E8F83209B0310166B96FF31D
-56CC9EB5BC1206BFAD846CD174304627F81638FDE11A6BDE75CA9F346859E578
-85F334A455BE91A56B9413EE7D8AA01FF35499934773CAEA0D32041B04933C9F
-51AAC647AD00541885B774AD4D3634D409DADF2004D8EE731A3E6134D79F0954
-CAE30C6A6CDD2BA4A9F93C10C94C1F9934917627E4FE44965AE2DDE0B415E0AB
-EB5D1624171C7D55769F616F73D7812DC4222C2E4D65DF04EFE406BC4835F746
-BCF26D09314490CA27CA888713E8EA68C130EBB4CC5E23F2468220AA157D6803
-6811FC79435982D29E09A43F7707B821B3FD44738EC3993797469052AA9C0AAA
-F21AEC2E1D2DB7AF0F65B4C3736FAD9C3A4DE9E72CC92B53B74AD4343D244EA9
-EC06AD54D945040A6F160A6E1D9F4B5902601647A2811F9D2312FAFEFBB31BD8
-0D0B39593E10DD94B862FF81B35649FB16178D80C9F6F027C2CC3BEEFB474A17
-EF1C77A9247B0D550BD314240C2BCF0A37DDFF8BAB723B153970CE2849897844
-29D3C6ACC315198B15CD9D3FF34A8E283A5137C42474BFABD43B7C7181409831
-3BC0F8BF0506CC5FFE145289105E80854503FD574F37608D176B4F9B60B05222
-6F4D14D97B85F27066D0E19999AD9EF9B657B24136FDF9061411735629D48504
-1171A1A9186630275E705D61390E2BE3D33D0D97902096587FEA4E7DB365AD54
-0393E3A46D605A3B6EA413D14465B7B8E21106C8938A67E51FE9B1BE16637E15
-763DBE8BF1D9A10E28389421AE48C8D31A6F424350E7F10804F4626331AFC871
-69CAB26391A66A12BD07B8D761380F5717B207850257E97EA23ABEF5BB35BE49
-A09FA8CE4B0C101F614AFB6C4EFEBF1254D3B86F55F8B56D9AECC8E381CF1421
-FBE59AC373352296D8F33468BBCC19EB3185406A09528BEB811C190B99FA86E5
-AFD86E94A12C600D267F5F43D0DCE259D6D191E425B1CA0DE9175FEF448C9F3D
-EA82033212ED917388CDBD31A6658960E6CB45B6D7F40653C4802BE6C26ED167
-EDB3D361647B157A7AB0C0CED73DE07685BC674C59A7CE9CE049DE8DC1B5459F
-8F9C54441B994483FE30A024CC33F093D6FE259626A436F4DD28F37B297295E3
-22AC3F9976E7ED86D6C3C7483971D456883A62A63BB59F3CDF5E1AD6BA381B9F
-B4D042F69B7B6415B641E569FBF1A127256CE296DBB5629CB8B37AC47C93804D
-FB58DF99F70611FB2631BB84BD7E34F671EBE84325C35C4529E75239339B09FA
-313CFDF6AADA
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 58 /colon put
-dup 60 /less put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 76 /L put
-dup 77 /M put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA4111CDD092DD0CAEC1DC6D0CEEC3
-B291B4AF285DBA243A3457A855171EA0527DFBF10E34A60D3BE2092B3218365F
-07271A0CFA3AD15205D0D0886AAE1C89807C74C6BB23F55F0405A522BE78D4C3
-0E6C7A2C17EF66CDDD65AB75D03526DBD692FF1557B689A200BB5A593E92DA77
-01E5A82004AEF4402C06C65B21971E8240F87BE60F5F7E0B56D3024B7D49B9A7
-724C55353C362CB35B720A5405B2B9301A1A0083802E8766ADB7856925D45001
-1FA451AA61F72022FF0419B1650CE94208DEEC7EE3B53ED7F9E995F883338936
-EA6FCE2E2466BE5C04B46FC7DD9E80E6F1ECDF77599D3AB9E61C00D7E425636A
-E0AAD63D341CE31564C7882916EC35366208A3C06435BF1F55086D627E06B996
-7C49FF12CC6D0E793EB19C4972C3904ED0FA9FE0C4E05140CBAB2C41EC148B05
-43A9AD2CA401532FE0045933AE0B08BC1F16D94D85420A26A9D32A9F2486BD9F
-EA2553F2E8B6950F63A1102E9E8DE227BD756612412DB1520358DDB08CFFAEF4
-AC3597978F43E982BEDBAD042738D05AD42348840F9D0122535E6CE711AB2898
-9F1003DB762D3B15BF35F3B7F593C40282FCDA0CFB1DD0B2B3A8DB68E326251A
-E4B6B6C559E735EEA2CB221ED8B8E2366B1BFAFAA234FCAB5F94F7134DB434C9
-7033F5ED902DE94FAB29392934E8DFFB00C5D27505CFDB2F1BDC7B10C9379B1B
-8533F17A4369203D2C65B5C75975A65D20BF6880FFDF8043435779F26127B38E
-09399EBB27BC2CC481594BEAF8A749445805A6EDA1DCDD02D7F23038B6EF99C3
-18918626F164B6F9FB32CFFB0D936C11AE7E2AC80543864A65EA8575DE49848B
-B09FDE687FA8AD27D0221315119A0EF7CB87E6C72A232B51E48F4AA67AB0FE6F
-36C4BA99B3C0C343EEBF2C0E5905E71FB897C0E80C9A3B15A9CBE81994D24580
-EC447198E94134154F103060C6CCEEC2006A2F7B8A01457493EDB59205B0194F
-F4859CB75EAF60F98B0A213864DD8407DE4DF86AE6EDC5147FBED02C022B26D4
-158A8313188C7BFA5F185AF65FA75F0A17DE6A5CA276DCBDB01CF410114E8B17
-5DCCB1486455DDA266A778A9EEB6B41B9DE0F79021D241FEB9E9496DDEEB6558
-7145D3540032DD2F1848CF4AD9F88E67C4B77339BFA9EE3CF75FD78A63ADB40E
-68B3D693AEB0E7AA4E46B84BAF08CDC361A106C566D01FE63AF40D245B717B92
-FD7391F92B159830ACA6303C8E96AFA4780DCD4963BD98AF67D8511E4E6C6E7A
-32616CE5F6CB270F01B6AC4EE342610E0CA1AF1DFE51CECFF133AD714F5EE89E
-978C4BF5EA08125733CFE4B0C3853429E910677D568EA9A4A0800AA5D391A772
-E8114BC600B2D6B2651BBF987CC3509B00CEEBDDBDD82330A9181D209271073F
-B37241398D70D049B9FF607A41AC70E64B928DEAB1A0B4745D98ADEFB18F2D04
-0C44BD18F8687967984B9D48A5BF27E09CEFFD7953E6D9881A197CD09B8C75AE
-31C9ED0FEF539E4D71E4DE6E65D106975A0F9C57966D50E678AE5EA9FB83EC80
-0020420E2FDB7F4234A3DF285B9D761E1F0A21018BDD9EB84934B808E345BF4E
-91556AE5779EADC1BD02E198C73D1D10A56A0F09F01302BB91879DBB084C488C
-972D39D4212AAD28F9B24C164F18CAAF595BB6F9EA9DB90C3AC98D0F37C36830
-F28A9DDAFBD9E3C84928E9EA230FBC0F3C3D05DE4084621B65D26AF4F07F74E6
-183E59EAAE390C8AC834DC662B06E83A9CADC8B891B3EDB56FCA7252600082BB
-DCE150610319A3861811339A621DEEAD6D619D475BA86984561F489D052BAA18
-7AF5FF29298168AC79B1626F882CB19F6AF7DCC4E28124ECE52599C51890E580
-132273798D3013CF390A8569A8618258D3570D2F1E538E96793E4A939293BCAB
-A9EAB62579E456B5C80CB9B79A70EB36080A6AAECB786FBDC7F19E6543F67B8B
-39D24FF379D8C6C257C2E361FDB384C822DB095DA0F10211D6572E4DE6D4E8BD
-1770868E2752631376DEDD29CC784ECD374D72232026BDF4650B9E2712190D39
-4C0748743D7EE4706B7B31C90E5743E85DAB062B01DA4960E0314D9D51293BEA
-9DC2DA2C67DF7186F9346CA769A0C7C6E6DE1BD9B48709EB87C6E6139BDFB245
-69A02887DF104549CFDDD7FFD86E9822FFFD2DF186512BB81BEE95253FB15FEA
-01E04ED643D2C7ED7B43AF1919ED54C69908A87FEF3C46BE979787C79F885451
-3C658541A8E388297ACE1CE31AF3DC7DE205B72F27EA432387A609D9401C0FA7
-B53EF719D0BA60B400DD9D02C7D9626799D39C51039B3D0408CBCFEBB0B2EF81
-220B69B2953E00666BB31C73F11F1E6108C62F4F54138631B9FAAC2C9F92935C
-2B3D9989D3D78AE5CB66BB48F669178200ECEECAAF28DC0D5378238DFB8C4DEE
-D337C8F28BBAC0840F950DF373EE8C3A59568D95648E33802210A3A563B5819B
-14C059E7F4AC6F426CD4E7B3F1A2F6F4C2FC19C2C3E9DA7D2C8F950D7564C282
-860C60EADC8F9B71B90DAAD27095804884289E914F0BF17C555A91FD07B13DA0
-66232C27711289C4D5E20A39A4660BFC00566BB31FA6511B763EFBF1CF95AC91
-CCC63FB618BB886C3B7318CC8301E323EDB4E016F0F7889C4FEDE858094C23E2
-8429D32F5C52CAA03CFD74820F2B956E61560B64CCA58607B300CA9166864F66
-49FC01C8848EE25857AD731386858093E9F87299D452D9C13D06F90E9FEF2C9C
-B9B78EA3D3F31785364D36B1650A567AE8CF30A7A5E5C6686B614DFFF65EE9E1
-04211CFDD13B3F021E5D9C965BB56FA136C0B14761ADEB5C8092088990E8D0D6
-B92F39F4E85E71FA38904C93EFB4D7FFA8012920C2445339BEEFC621CD4765D7
-01A9C397BDA9C3C0D0E6B15297BA0BBF6169BF10162524EA71D7CA539FC209BF
-375314A88500ECFB9C7363C5AE0D7FB44D0D1AFA09F34E57AAEA2EA67E2888A0
-1B202C2FC4017AB742D5437E8BC89CB24A4A1B0DF2453026E69B60AD3AC8EEAF
-ABCC24A1F4C628D67BBC03985396C05E5DFFDD98A0CD615D37EE0FC2C9173D91
-7F20B0964E1FACA7FEF48DDF1ABD76716E06B403998530C15C434F1FD2BBB250
-4B95E75486B54604D3687C2320FDF083A23C01A79363A225733925DBB954D366
-3C535E17565ACB00D3ACB5116996A172743511888EAA2D69B180A4C4FECCF034
-BBB539DCD94510B84AB82E9154C93F025FE50BF00B325A6CC4B6974BC3B67596
-CF605CC04A14625DB25A6EB9E9F9BE93066E34A285CDC45ED330AD2073A9DDF4
-8D3A6739CBF4E846C3BB01B9DC7F01055BD43AA0022FFFB2B93DC850419B4BF7
-97451F057CC0BC68C208DF288E8A1310A015BDD1019C17EBDB42CDCA2509CE3C
-E74D55C55630B10A7F042F260D0B285DE8399D11D079E91F348317AA3DDE0CC2
-A8DAC75318B5FEA8A6359EE3765E6F75E58D354B9607034F6A8BF0B22C9F770A
-F537347806E5FB7C0A6A9325D0519B02A0E7CA47946561B848BFB1C00B5AC67F
-BE25853D147950FB70854C7F4C8D7C503850F1748DDA6210DDA2BDA36DE9AF9E
-7D4DD3152165C9AFE4CAD15D146B71F0B7F2DEAA5EB3E1637A9CB5C3CF60ACB0
-7E6A11244B3FE758DF42E346A847B6FDCA6B6FCD7F02BE7D467CDC4AA2435E5E
-34647FB8C7EFCBFD144895C0AECD5E0F2AA6375C005C75535C0833FCC123A07A
-C841157D68C80ED5341FBCA8C83274C751016C40FB73A5EA4C6ABE1ADB730CC5
-1CD781A616C79C2B99EB1F13115FB00A8994DF8017791E23CCC269D90D49B402
-E1AEEF2326CB2AB44079CE18A1FFA08195CA2AFAD0ED73D907F4FC6422B882BE
-F7CE67E17EE720B1767BB925E432CDE667B4D3F0483DBCA9EEF9A41A786DBC81
-AC9A52114892FB6D2FA892B6FDD27DDDB9E173AB1DB7FD612506E2D0338D1747
-1ABEB8BA78BF7127FEBBA18A70DAEEB612B7E48885C76CBB9DB5786C17B286C8
-A955C89B3DC4FBC16C3DA027D10148F5A2C685255F2D165570BF8BB7EF72A0C9
-F90C740E57BA036C38B3FD04BDE1119FD3582FAF9F254220CC20532D8C839CCD
-ADB7ED9483CB784126475CDE0E8B2C602A14D13486C214AD6B53E14779E7DCD0
-59A4C4D62A704B4EFA896439CB66B953822B492265FFA6BE2367DE24DA97CD5E
-31D715A3320B7D0E1EEC35EA1828A218BF3B2B4EFDADCF91DDF152D4E4F92155
-757446DD8D122A22AC3C02D9FB49D31732A03F9AAC36B0494F234466B3C239AB
-4D41488FFB5EE503F69942287348E09637CCE28F1A6671B06E8F700A2276B2E9
-60BCDD1CBAECFE816F6A4A1277569D6EF85BB49503708F56A8411F76E53148F8
-A49C0623E3EC3DE32B280F5BD47AE3F759589C2E4DF29ED5DFC587E8241F559B
-4B6A1F8646D292D966CBCF651D751E5C92751B289BB75A8058E9B19C375013AC
-5B810252BF23FF9C7A0A568C6B4E329F5B71003118F3DE19F99760B525AC3D51
-AC85F6E4E47F1EB7589AC39379C35DE27F4FC5B79B8F5D33049D4BF72A8FAD0D
-04A1C77795B44EDC59FEC22A5843F86D18FD4415FAC8AD44AA7520392D57B7B6
-2C755EF3AE81A83D965E65EE8583F575AE1CC4F50A37F0B3C007771A5B60B01C
-19FF8858951E0E7CAC7D157D3F5BC7F0E453738DC33EB390F31D38781CDA8578
-F9555EA83FA8BF8BDF55740882D9140C9596ABD438E903B366ADF71304E81E58
-FF9B51BA19FE3EB5599C6D1787569B44BF26D4E14FE79C1D47F3FD4E573CCECC
-BA3F8FD36B608D87CAAC3686BE994B252287AEFD9A14AB3051CD4D751F27DB18
-BED214064F065F20D3FE097DF160C63EA5CD01B3C27788A927C79A21C4F2164C
-EEE8F38C79A7C68B1C1958F7B6F0F696A203C93918B3C23DBBEECCCB2EF2D96A
-EF6BA2A7AE40979ACEEFF78FC82EA9B34F6126F515C307783045FE80587D0FD4
-D0F81422E0B82CCC82BEE3D4189536E2C08B35AFAF3FAE2D5D009DE9BB99598A
-A91B9B58964B4CC7CB625084C0DC42ED14D685C25C85181A8735C4EA6BA9CFD2
-B7C8E67977D047470C7A778166FF42BC4B9A8F33C5451FD16878F6D65A47617C
-543A1E51AC939FB97235FDCD67962AD3CB5985DFA5737B28AD2E24DFA5921B3A
-CF2CF5FF6687C7EC9C66C4DF80C039DD5965CB1B49D0091ACAC40AA078DF781E
-55A2457EE55B1E0422C5F8074A9D475E194E5742857BD6544A636AE573FD8E68
-70BF3858E463E94E5F5D956B9859DCF1917516005364779BB9DDB66F5DA107E4
-2B5BC512D0F9C32FDC34794BA631A0731CED84706E2FB9AF7CBD4ECD53B6157F
-7B01BFFB519C87689E2A489833D22F3C1D812849B656E6C91088880F135DEE39
-FBE71EB03E6B5AD77280112F6C3E2636D22A38AD1D34F33B7C327122B9F4BE2E
-791FED7545D52ABF2ACBDFCF770F8F874806DE0D1977776B330FB8D84A52834B
-0D2BC3FC18BC1885959B65A2B395202A8BE49350C1E133EBAEDF41D36345C24F
-86E4576E68E81EB707EEFED92F6F09FA46F2F54BA766E3B20F1CFBD6677B59EB
-73778BADEBB3783A5CFA9138815187A86694E8965FABF1DF6960865AE363D418
-4C3401F3854DD5C241F3667E2CB34EBBE9A74D890283DCA529E1B63DEA16898E
-FD241DAA19EECE2869780A8A03BE546819B3C82762F5757E72C0FA749F90050B
-BDDE78E6D01685F6DCEB9A6F45E7EC9D253ED34D2EBCB98FDE257FE1AE7D39C7
-1171F5425F3604B93531EBD0DFF691A905ACAB90F760AF4A674C500119B91549
-0566246482F9454E3D3927239AD8DEEE6D4E9ECB56748D2965D7D4C59E358307
-F936122ECCF570568F9C8C8FE5F135AAE916CED51041840BC4B1F403FA632FD1
-E694065B7F48EE00FE1E6ACAD8B86A11F3ECCA19B5ADB114D0980766991F8AC1
-573EA9B5C8FB5669574CC0426377764CF911BD316C8A7D772F78F47524112BB2
-A32F11FA6A6D1B295D96456A0D621C2B8F284DBD8FEA152D9EDE6A68B9CE8CED
-65E380ADEA02DD9C06733A4984AB4F7F8C5E87E58C9AEC65CD3490C87C04DCA3
-42AC5CFFDAF21995432D0115B425B20DFC3AF8206354267FD0A8242BE0B23B24
-7B8BFE5CB5A2340838F3BD77B6ED26A6E43D2F732F5036807505B5E8C155D194
-03E57F31DB974254F3CE52708587825117D646942431DC4A29E99E7DF8193B3F
-2C9FA9049DF511A48E405A3B798F0855493AA0A2777BF1F9F55B6797F27B8711
-5B34A0C897B7B13543477D159232939A052E46DF470936A8479BCA8ED9F97F88
-A9D77E43F19DBDD737EA504D94AC6DDAF29AF0DFB73AF8B7681E501AE88A6264
-B879436A69BD0DCF3465BE9D480A31B9702B2BDDB87D647E5A03B7E931505CD6
-7FF4595F44DA7EC3B1BE6C3E713AB806A1737D026A890E77AD137A9317779D08
-B84026855E4D84BFF2B50ACD7E4E23A50B888916681BE1FFD83128E9C36029BB
-AB6225DECF2F6DFE22E12A084C27F809F53074A272735FA977D783ADFA5555C5
-F2FF03C670E2018C9388CA3034414402C60E0D49E121FA06B54E649E73E65E2E
-3376B59F3E3221FF238488418E7B969795938996B506C9CCAE529C1AD10CBCBD
-B2DC727D9722C198F7BAA1BF583AEE1B88740668CC1E9EC960B33820981700CC
-01F5AB0586DEA46B96A72EBA2568E8A3774935B4A17BB2DF361B4E4D30814CAE
-7C6BABE324FE7FCC67E32F773924E8C995A025948E253CA14FD35DB48A4C9869
-10ADFBFEA18E729FE71A53584FF7CC8E50D04A3700181E0218558C262873C7D8
-DF424F5457D76FE99ACDF797E542433AAF9E811516AC28698A179E17915BB3E1
-368DC25C96394147D0483ECB7EC5543595AD8903BEBFB250C76ACC782BBA59DD
-36D393AB25D84A09E19F7788CAA4A9110997581DCA6EA82B149660101B9DA10C
-66A13ACB601596B68CBDEB3F8AAAB3DE33874C0B07B71BCB6E4BF05CA47A7AD0
-69B6F516E4ED20D017CE5D324FE97D7FD2412A73B92D8601B8D716AD4C87891B
-53D9E95DFAC1F27A582CCA123096B12BC1BFD68F432956606CAAD9752102B925
-555EB728A26DCB480AFA1E87F2990585E477E5E83C045A72FB2DD04D0AFC8512
-640086008CD6989676719D94E4646EA41508A6A4C25E93E84B3928E9F875186D
-B2C6079FA73A221FADDED66AA88F5B49208D10C2E1E91E25DB3818D69E69F10D
-197A16CF687E74CDE885CB876C185F19D120D916E66F88D03B308ECD3BF2010C
-7530AC389495B4E63B70999149C463F46DC3FBB0E77E74ACA0E0CE17172AEFB5
-F3D559DA122B384EC940CD845E8B5271D2859A12F5E913BA6CCF8576ED7F5C04
-9C4FE5B7DF849BBD08DB1B44A71A59CD1769853CF9E49A3425D48D19233988AC
-3263BD7D1861EE4E99C9D33FCDE02854B0A9CCC24F337F04F9AA4F0292F5613B
-0DC69AFFD972B2EA03B018057A588936F7868AC2FF5474B9A9584F2AB70A6813
-23571813A6B3B48ABA4CB44F6C14E9DD5EBC97D9A705F215B31352711E6DDC25
-27B5CF2AB2C4A1B2310A91711D39A4BB8EDC93361A18A38487F8D2E3C91E5D80
-53C2B713BB837DE72556FA3D1E797EB6A90D83DA02DE424D074B6A8EFF11BE23
-D9E905B15C4860FEC665B2182CA30293A86B5D1BB1F7230D7ACF88D7C53317F2
-57FABDDDC049CA2CF03E8F0FE9FD160736418DDAD7809A85D3F3CAE9F7C51E3D
-2238449F781D61AE69614F0B307558D4423C86EE67C353E9B49DBEB7B060D7F5
-25AE5A7F64F20D22B4932E86D5F70632334D3F08F22B81472545ADD27C389FAE
-F619E9FF87185F0F54BDDD40430CC44576CA2A2F3F4C115D3C82E53689203F93
-36421BCAEB7FE999BF2EA19D3B126C073EEEEDE1E841BA512B2A4D8E1BFB3A8C
-B2272496B09DD88CC7C37EE8E06BB92797FEA48E4845D7EDB60A61206C581894
-1FB3FFFFA610E81026A7AFF8D400EF068D1797F8512F05223DDA51FE18DFDD7D
-79FA8754A79D501826F705CC5450BE63C2390764D2AF32BDEF3E45940774C9AF
-E869BCF5D5C028278DA373F0B0B6ADA106DBF419FFD5ECA3C60A6C1AD46C6C25
-5C3DC971BB07A23E3F3180DD9DEAEDFC2A96DF506424C5EFA695150D5B550AF8
-E60CDEA33876B075EF693883F6FB70EF5676B4552318E1EBBD4050B2BAD9273B
-FA895B3DAB65E4202AB0EBBC633A0810F852824D3FA83865E505F0A226A85D26
-C7D69739B671A64FDAA895F7C98660E43B18923702C6E02C3B0806BC375AC535
-527265D76CAB05110C7854CB477F1ED55D0B876CF2421E3FD0F21337AFBEC2BD
-24E8E304B141B878DDF0A9F692E1481FCE9FE8734E6FE9CC2114F0F341AB9E03
-8E4118316EEA0985914711F52F7D2CA2FF11FD9D79C5CBC12807B5992B8485DC
-494FC91F87A7A8731CE88752D02E4527597BD7485D4B88BADA367D516EE4069E
-12625CD755DE031815AE82EEABBFF8563BD74A2A5430F4B084D7F10CAB27224B
-8A8ACAB00DD8B88D7A3B9F05D769D8328E46C1345B7BA0DAD75302227CE54C2C
-AB035F296ADF6F7F7E7CDE3EA657F1244C2370C6D95EE876257AD318A92D90D9
-4249B2EF5F001B88C41BF9C9424E9904A28951038318B55BEDDD504F111622D0
-0F9D23CDB090D27E1A7B0B7DEF03C71D5F90523852FB2530A4832382EC10EDDD
-EAA73D2C1CC08A53F1262BF636D56748631DEBE79B173EBF76B6E2334BF0D855
-74430668E6E49160A25FDE5DB59FE6320B10D00AFDAA328324572B6F767D98D5
-ABFF8B9418D51864EAAAAAA2872BEDBA9ADDD7F24012DDCD6200E5B322B2FBF2
-3A37639CBD9918FBAC813DDFF7A330CEAF3BBEC787D6B404C88E22F2EA4B0F88
-1260BC45253FDDB713D260F72F074FF766A841C7B258F281C092CF643013ED6D
-F4C3DB7750E93E405958FD2DFB84FE26FB582A61A029088B6193560370751546
-230789365755CF9412EE72731564C80661E5D607DB15823CFD57DC71DB65996A
-3093A3328998FC86ED7E2214BDAA5D70F0DF0D54D0E2380B71B9E321131F247D
-37AB1EE17FEC0ABCFC5906695B15B21CF44DE062BDBC4B9088844D4F0E39E071
-0B33110F36C709E62F7129C3089F2C235F2EFCB1820B54FFA88F157C0CE08271
-AF58E9BEDEEB16F461B77596D9FCA92F3ED5B751FC0C0312769C23E85DB83BA1
-A1F8D74BC27276BD842D5856664582B3F5414E2213E382DDD8EC2EEF31E79B95
-C2497A33906574377E7FAF03CE9131A925189213E7BA883D30BDA2D03A696FDC
-E62DC5B68FC604FC6E612BCDB18482FDAD3EE1E2E0ED7F93C91C81176D33BA53
-6CEBA5D8ECDF838640ED67372D1B2943A94D82DC93AC338C57CDE651DAE7C234
-03630634D5C816277DBC9EC71DC0A862F19B1756A11703DF5DB91E110FDC7271
-C2EBBC42F233B575752573E7C3DDC8EFC73A6B8DE7E6B8D48352C3733CB9635C
-ECAD66C97F2DD346865CF018F46B4565883834D989216E3CA25556E1F9E98930
-394B985ECF798743D8277C2AB8DCAC16B483610DB7C3C90F71680D807BFD5493
-FBEA7F3FA4293659AE976D036FAD43D509C2DBA3992DD24DE8A99BF1FEEE7431
-31705015A098AD47A51E6D955DAA1A4B03CEA003E0273BA5671F7F1998238D88
-D0DA4262B134AC9003BCE375A75AC93715F8F2F8A628409CAE9FF9D119301B3E
-E8147F1DE16649984430EC4BA948BF5C74111D0F8056383D444F6524C7FAD4F8
-6A4FDF445CF8EEDFED560A6C262E24C0444B2AF705926A9E0805A1911F0230ED
-5B2030D956CEC14A102CF4F8E8C3DAC74ADC16C169BC4A4DE75DB3CE82376254
-00FA86DB89265200CEB4CC133B2A993AD95C5AE5A695DEBB05624CEE6DDA6B5E
-A089344AFA90ACA83A413762F0153EAF7DE15333BF9AF6E75EFEB3964D59E183
-42C5E52A77C87E85E2B3049508C00ADA5D6F0A8EEB2A4D71DF16F3DACD580DD5
-68C68834C0778B469ED2F8C833A1BA9CD0DB2D6AD88C506F5BB23CFEF461D30C
-ABF3164B702B433E0156590C1FD699268144766D3AE1F8E582ADC19B2D4FEC59
-0DDC8270512D3318D854BE1BA7F545AF9D9A0F3B59710609AD7A624CDCE04DAB
-095A54E8FBBBB1987D01EB7CD1B6BEDCCAA46A07077655A73707D6902BE02565
-EC7C6145AF4E52D1073E3DAC7C087A14E9631570901BEE1FF3255B8D501384A4
-0658B67909EC2F6B90A1BCEFFA9D74C1CF5570D7EA96391CAB7CA4E0CFDDB3FB
-C3591EEB49AB7B154973F0EEB9879D53DE90351F0F76BD90764ADE187C68FEB5
-AF1B4B290F2F0AA66E1D138B21C1D4EE491ED26EE44CE490F326A0407B0FA267
-1707218CA4EE1FDE220835476614DD67C7845DFB243FD2C5D856ABC7E97671AD
-B85BCAABD214B9D9BA81B4E925A726A122F1FFF11F9581A3F08645BBC4197B27
-D40D2A95EE1DAFA9C8A6157E0E79866BA40C0702B26210725AA2239785D9D9F5
-017047AB62B57F6744B2D4A5D642E971074A2FB1F8809AB65A52E96C51415FC1
-A5286427DE8C81BBFB5A218090595CC14A86A40ED9709D5752157EA673A4084A
-93BD7E215DBD1148BC140DDC68FF8F3C1AE10894D8BA9C4A3AE55992F88429C8
-DD9B8247EB0D653FFE69165BE6827825C1F88FB36E69F2A8A3CDB6D72FF96DDA
-072C65F51A898EE82590678C43FC184B532ABBEEB801F0143111C9941F2B1C3A
-484DF4C0AA7E738EB2063278EB7B70E1BAAA88C50BC462ED449B66E4E0978C1F
-7DB04568AF5EB412C3E41BA22E8273C1996042DFF01F9702B676E858F4FDD430
-F6B417197D8999945E9A82DA43969580863825D31F9D59A0D87D0F313FE2C28B
-C6B97A98DB142B88A45943DD49471C3424BEB1DB482E9650B0B92AC70FE8845C
-DA7716D68C9C2A14BD68F379E2C9DBFF92DBACFA705F328AC2D196F472A24ACA
-244A17F00C82EF653DCB067E0F3762CA52E58A5604D29EB1D56B2EB40417E2E7
-9406035A253BC2F539D5B09ACABB048EF1D689A5889B9C5FA6B2E0E2EDB9599B
-F6F4B355E3733E6BF9B21DBF7580E52526F2900F980B3C28062A33A25CE7F6A7
-4F13D6AAD9327ECC7F3F97BF15C3BEDE1A0DE042E749F648354D061C3E52E7D9
-F376216E4BD2B782A5AA0D9FDC5551CF660285E4CA7363858C51DCC79F66072A
-2FFD59D6799BC84EDC0C5DC09D9E40056A4608B235F1357D454ED3028322AB8F
-DAF5CC60F8B5EF4E01A8ECE97C491D828A87CB85D50CD56E4A7BB6DE2315CB0B
-D0113AE20B4EF27FC486B648C3C0E6F69C1FFAE0C766DFB8B16611CB504FCAD3
-06B8169190CC5F836CB68D7CC34A8434BDDBBEF33E2B778884A8070654378FB3
-744459C9FFD348B2059652D47335D7C864619700681D45A39F068430F8DBC4F0
-D1122FCC17182216F62C82A2800FEAB2247A07413B3809DBAD5A03E1F1968BBD
-B41B98142B9B0403D882A3A70B334F0365353E51A7FE4309DE4EA9BE3B695601
-3CF86249952A437666BDFACB7D272F200A64B9C09A125287FE2779E950687EBB
-3EB747653C8D95758407DC3AD8C95AC3D2E18994156FD13CC03A6653EC7A2993
-F9893778089FA63708B0E3942A226A5289090412CBED2CD71BE93DD4CC56F095
-2E41EB41DE3CA0F8953C28C3285C57B75C13CB8A7E588054BDBF3B5AD6E86965
-4BAC32C54CC88E2BA882A887BD84BBC8F15DE986DC2118D2DD0A0E154EE11815
-65B18565F5C97BA8F5753324CCB5CD8D40463D909E832CAD28E62AA2250D8DC3
-120252A10404200CEA8A2B67CF44676E6003B7FC2AC00ADDE1227724B9E8999E
-B5A4E94223504B52575111E828E4AC03833844683B64101AB5D91EFB4CC8A822
-72C394436D8930F1541359194EAB8F44403958F415678D3EACC777022271EBA2
-2A76DC2E2E833B426A15D5AE648101CDB8116D353A837D466E4311DD86F1D921
-64EF76C5CB35B5B0E4B8B1B93861E03C1B635391276D77ECFCF247E714CC67EF
-72209891C418D1472541D68A6761EBB440E360881E993D3FA4E29CADBFE733AA
-7C260797DFE27403E70F6B1D2E493A1C55B2381AF9A815808B5081231FDF30D7
-CB3A1D091A4B6887F9EF692C736AB5770BA5921D48DB3F196A4515FEFD4317D5
-BCBE5394CB5EFDB4C4A972B669C294966E5D76171CE5B903E4D8E6AE50C5C075
-37C42B59E74CF491556B618191C3489D11288587FF05713B18529C7C7DE1B9FC
-CEA7667AA32EC4F02F452F9F20E54C89E071ABFC4155ACDB4DF3900EAEC25386
-E14C88BB174890A966703ABE3B6EE4E229882DD0543C3E33025F072EECAC34A7
-7945C2D58A721E42FE71F1A2CBC59EE8278EE39F6BFDAE2AABA5562E0970991B
-75A3AE1B2B0CE3B8BA0E32F6D281990054BB095B9E9B128D54E3492C08380208
-B6FD878894DE6F487363C826F26F5B810314E48E86C933B885D21887ECFC7FA7
-711F256D819274209A0E08AB6E147F7642D07C97F92E70699D88ADDFFC941A17
-E521A3D5E3596491CF5D9BB95E483C353441CC4748A59F9E49C79968AAD58F19
-38FE5E275EA22403CC4A287A30F7B616CD4B31519AAB4DD7237916906B59CBCB
-C275E1E993B33AD6F76E945DD4CFC3CAC1BA88E5CF9D15F03212207182AA054E
-9B53A2469E76F128006747A7E3E95720EC90B43BAF6E016205435EA4AC8C8303
-E1E41BF20358CDA809B88C72AB0C2011A6C91A884D542D92971327564E175217
-A40ED9EDA6B45192C46B648215A556591A5C8AFB8468947B8BEBFAB854983A44
-CB88DD24D3C8920383944E2FE13C18A45D4A5507110C61FBA11945DDE8F0E5C6
-265F450C30BDF5D3C95F40573B139857539F01E8C804BDC8DA9306C133E7FC0B
-66F52013A1D7C4BBF2B2E1EBF80EC769D802C7117C06AE917206ED17D13A3E95
-5C987FBAFDF8B1B49E00376E8B4D60E9F2B140267A587BE8D14B1A0249C2B1DF
-003533FDA36B565ED493CD1A807E139F6C2CE7148B6FE62615731CDFF1EFD40A
-A79DCDDD7F4F4CA0D00DF277E7A38556B684A32AC4A8B6998EF6C1693F043E31
-374B86213BF7CAEE905D239D358FFCF91EF2F34DF7E0A1A16832A54640D42610
-8C77E6BDB82B862426F153B0C87170D31DA509ADAC29EE7A614EF359D584CA36
-787DA85840A14036378E25A53F907D10F7416D5334705DB9A111553FAF2EE20F
-9C3A0BFE2D3BE88C28899043C8293D012CD8E2752F30A883C2287D5AE64D00D7
-443218C7F45449B4C9B2BCEBCEEBAE0AC8934549F5E27BC01AED860754AB4962
-12C42C1E066CE0B5726331F64A1B6A738F4D79388076AF52C46CE481988B5341
-85A8CFC7F9ACB1F0647D33B762CCC7C34F91BF607940DFC09040775AFC3FAF6A
-41E89010D5700942F78D5F6E159CD13806F1F62C28EC0BD6F40E4E812B50F088
-A20C82231D47C911A9F4213077793947F6C8EA53BF2763F75779BBFA65A75E27
-791959727522E48FC28B9C649BB0AA1DFF96D7681CE5C8A42632EEC5CB7405FC
-167DAB24900FF3CDFA2FADEB8829283B73CBA2B1A95B483CD3E6F02C693AAFF9
-9C09D3D2DC196A6EAF720FDFE7C060FECB0392610B17EC0AE65C72D89D892694
-99CADF5E3F60F6571E29EBA897831B8AB7253557713BA2529465C615D848A1CB
-57633090AF2993CF37E19A97094B8686238056F22AAAC0CD81034661B9BFF73B
-18151C4DDCFCBA332283CB1970BF1830DB778E626626DE94E0A8004E5FD830CA
-93E4BC3607809BD56C75B558196999C92E7325ECDF73AA32B49C49C3C5FE4B95
-7F50AC40FD642A52CF12F3547ACAC754EB8F7164FE5624BEF7160B14258EDAD8
-E26A181219321F2AA523CFCA7B2E12878A5E242BB7BA5C9F22D0C5722766C564
-306F713ED39E883D2A7ED68A0D7C7EFD64EB39FC189A0C7FF8111660A188E19C
-DE642C8F2B0D284AC2B52405206A5E1A449319D94B3DFA20DBCBC522B5D67431
-E3A072463B59BF356F924434B5AEA53BD49298D25738AA79AB1E274F0A7E9330
-2982789B56EE39AEE8DF359C968C704C7D3B8FCB09FFC69587EEFA7E39DD5370
-FF513753E7518954525B083BFA191115CF310A98EF5CF0C2540265031BCC9694
-8C6A3F1A053753838516389F26ED5D57BE285F92938D59B0DBC6047C0439E127
-55CF071FE044451EC5C557F6CC29D8C5256EB48AFB23A0CCA88307B7E8EE1E45
-91B46854300FF369C6D84072D4D1625A0613CD330AB55B0B326554909D57C7DD
-73422A8588FAEA378B917785E75F25E4F4183A36AE15C7FC2C3E2C6E890B113E
-0B3FEACB2A3C5ED2F7E5BFF91E8E273869D4143A954E6A5C1012A2FC7839A878
-B86D878370EF71ED0A7555E8858C68B1468E130C1CE3A6199D93FAD963AC0877
-1981237BF431B598966143C8DC7F3B802729DF288A39EDD5B06F0F808741C6AC
-4D59EEDEE8655A6CB5FFFD911D8A942590E4BA2709403D0741C70B0FF9FBFA7C
-C3FD928B5B265DEE100172E5E917F273918C7941AB9071E1C3EC631AC555CE9F
-35F88068E213C0F9A4BA7D133755EFB674717B4FF225AA16BB0B7A930D7F4474
-F2C9C784CB7C8C0A2F2201B57541D25DB2C2C8EB11D172306F7F912149C2E61B
-40B0A570CF8A47F792860E4CDCBEB9A05B511E4903921CB80EAEB5A3B6567E14
-71229E7AE16210B7F307E1FEB739554261547BFF5B559B88CB5BDD64124817D1
-AAE0DEDA95D830BBCFE0AE34A90A70E42BE5E9A54D420B7F15D678425F1F7408
-B0A45ED88BBC61FFF2433D65AEBC21CC21A454F416913AF8B4272F7E20CAE1E6
-0AFB2D16F862DFB2861CCDFE73BA66BA95636004349740C2E9292EA3C326F077
-1A69BE963D955A35B72920D063127E3C8DB8655C089312F094231517A9198B70
-CEB0F01B22DD451966D72B2152947AE928D38F39C34EA1A6DCAA758EE660700E
-351A8E433028CD6ACD63B6745E0F501E72E3E3A001696B500F83B67E027E47C4
-36B251893D87A5B646C1BFCC94F2516C5A82CA364FCD3F128289F1DBBD0E1BD2
-8D641FBA92924ECDB132C1F89BA3650DAE6E68BAD856CDAC195A70FBB0D9ADD4
-BFE9194C5C2C525337AC29B8A55D56BB2BF90C004F1B5B3842DB2581E728BFE7
-4112D349EF2FD56CD145DC9CCE9F8364830E466E60F6F437EEE13DFC07D8009C
-ECF876BCF50BF9C60CC60544EBD3BC42EE61F0DB1ED1EB920CD367149B52B2FD
-353B4ADB2C18A087AA670E492BA5FAB513AFBE786F2A729D93F28D282A2A1945
-3A0D2565D395FB4A07E97F04E1A50AEA7EBCAB7D5DABA2603BDCA8FE770A4012
-114B736C19E1649153A74C74E7218A0A031EAAFD8420A712DEB1233036455045
-18F9902DB6390E82EF280BF3C104B4E25EDAD22880D74EE456D1E5225D683D5F
-13E8DA2C4D1A8A1F456D9A3887EB3D9ED71BBE682C7FA3AD06CE4F2C554DBB72
-71FCCF5A8D945387E9FA42BE9D774C44FD296270FB67B1004273051EFB74C2AC
-2E215CCEA6F18AADA4EE6B94915242B113F094ACC5D837566D5B49C51FA2012A
-792357BA0162EA6D04C7106B60E25EDC02CC4FDDC90FA314E4D9DD972536C486
-7A772B06B55C1545C98E90E8104FD7AA76B0DC12C7331859B6DFD01FF9022F05
-34FCF3DB906EDDF0E8
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 19 /acute put
-dup 24 /cedilla put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 45 /hyphen put
-dup 46 /period put
-dup 58 /colon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 94 /circumflex put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 122 /z put
-dup 126 /tilde put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
-61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
-92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
-EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
-43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
-FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429
-DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD
-3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A
-7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7
-CDCA11A1FF27AFA7FF189A7E8A7C099AEEE0CAF3E121798B2721ABE8808D20A4
-AB6E704C0C376BD242C4966325D4C939669E28B55BC335405C400A9983B89EBB
-B13D8C5F3A148E38E9ABD86D0171C927F1051266CBBD5C5D12522AF7CC17918F
-410BABDD5FDD279338E8B17434DBF20B8E06B58D9E13B731E3C07E4CC350C431
-CE2034CB23828A19AE93124011BF053A3C5705D9BEF6D95205FB8360391C84B3
-7C6D719C0FB459A312AAC3C4256EAB293B6DC729CC5070524D1BDA41091E8B42
-2B6C4A092995AFB40CCF35730350CBA197F3D5BC5BB83CEDDBC6FBDE23A885CE
-61D416B3A6CEC46474A0F42D5B923A61832262F234001DBCED9A7A00F5511F3D
-C2178422A46CA5494AA8C37F51C40339CF9392A7098DF8596EA97C440989CA06
-EEEB5025B29EBF6038EFDDFD6F70989D63440E9C14E2A1040FAF427EB41259E3
-FF3BA255BD4C04BAAC47326181EC7CA1FFB32CBCAB92B1F8CDE6ED0DD3FE6D5F
-EE14B739FC25BB13CD94A0C0DD7CEDD886AAC62248C64B8439064D1038886DB3
-187F017A79318B69963296B4812128EACEFBAAE983646E021F24BDAA2B78E8FE
-2BCD5BFB302103D7DD28668DA7A60C446A27BFF8D6C66F4FBC61D271B91F0470
-16F567DABCD1E8B04CFBEF602BD9CE44B724B3EB8D30CE573EBB13BAA047F947
-90B24F2E49C20E2474EE9D019565E6FF25BDB3F74DF05BB9E148E1C5883A9EA1
-53AD383463F47D6C1077CB8D8DE48F71A5D42C54BEF4C0058EDAA735809798FB
-356002E6B41BC6D5E3D3027540168761334720113FF02B2C734749091BE71BE4
-5DA61AC33554AF15E6F60EBECDED2ED271C80B5C4F943ECFCDA66DB6165620AB
-0360CF8DD672B0C03DF892BD397923C6855938CB739FE4B3815D76DBCB1C8A22
-EE4A86AB55FF7994EB31BA410DE548B6276C354EEE51D5BBDBBEF76E9DA42C02
-CCB3729DB2F52BFC06A5A030F32927E2215BC0C86F99D9F39C0C4E342DD816A3
-B51AB73808F2545F9C55CC3D352B263E37D3D6E47854D7508D29BF6B52CDA83B
-45C36FD67DCAA7BD22745B1AA86908ADE52BB14B55498AFFB5892A6BC9256571
-575183D73B178FB7B67307222F6165175519E7CF674964F2131FF44528D21025
-3A624A5AB5BD4411386573C91A067186318F266B2EF29918160A5F5AFC3AD9C4
-68F5C559617D890FABCDDDEEAD20FE6658231877FF9B545C2042681D7FE55EE1
-BA15672861CDEAD8D891294B2648A8F238982D6EB21E190D731CCDC0D7D3B015
-EF80EE325C722BB465DD16683548DFFF777EE8C0974FF530B89A37EE183A3B9B
-7723983B3616C1309F9993AA1A5DD55CCCC4F0B6167A4D4279EDB9C4B0C161E6
-AD204EBAD822BDD6379C4FE669C2391550E799AFAD6CC1F1B9F939477B62BEF0
-304897E43C721F7624C1C14B7C04CDD413776888FC82D681820B736BB5BE00C7
-0F0419B675B503E66A43FBD834A26899EF4CC8A4548117D22F2AFFB5314688C8
-45629324E61EAF29141A2473ACF527FD0E359D6688CBBBBE09162A7292DBAE12
-3E753760B6908EB5CC5F0A6433A3A0CC0332D35B133DB3F65BD8BD8D6916D34B
-47DB6D595EF0B371789D3E86C29FA43184D530AA8F55E5B9C77EF695E4DA3608
-91589C5A163EED18214F66B832DFB9CD48D517C41722FE7E35CBF3F6C4FF5B8A
-33F7BB36440DB3D2C429E869413EC2775650C2F90F49FE64FF23FB64FECF7FF5
-F5C8E231C98ED067BAA67B964C49DA0A22E62B4B7FEB7471DA6FC2F1D6A8C078
-8CB07F28E0DF9C415C6F293DC7EB552C08AAD0380263567EA358A76B19D4B1D6
-C50A5B31C6B459EB90F0F6482E2374DBE3BA8798CFF4343A8229A15A5EFA3290
-7685A7750FBF32EEA61B7885C6D993AF73D36175D5BE0B5DAEF1814EBE0793B2
-2F767D4F52BD8566BB2122106127617CA9FB2EFBBF6FA289529587F7914BC7E3
-D9A141E953EB453FBD3D6430B8A7C11C82F2DAB16605E3F2BECA72A7E672D23C
-A51AB425C1AA404E623296B30179DD584C56C8A30746A3CFB5F2FF1AF0C667CB
-A32E6D08921BF9690A4FA541E3808C1F17531838A76A1865CD2B0156B1D44627
-D38ADA6809846DB85AB8428B157C13C87F0A1D6A104AF92906488FBC593810C1
-BA02A4DCAD1E3363D963AE266E0BBD925D595036C85BFF0C0608393467BB9793
-F5871FBEA8B5103CBE06434A7521396AB8C8D4C6CB9F2BF092CAB2BD9FF5971B
-3F4312985B64F86F0487E5234E238877E1DE24189B8066C0489F3F37A1C6CAB4
-E9782789ACF9299E527DE0108B6137EC2C0A38C72A8AC6DDE0A40EF5B50C418B
-DD8A869187381A4C84D3B9189A4F438C4DB208BF6E98A2467A3492C9F69E6AF4
-EBDF7DA5BB5F06852AA21760DB3A78CE7CDC8A3BE5ECBE695740A3F80ED42DF3
-AE8A314930F8541C68B978C817F61433D6767216DBD9FF6B65E4C8ECF8778A42
-37DA64A5DD63768706D3B0A6DF5EE723259A11A6F56D0A34E0152A8498AF8EB0
-09D1833F4C580FEF5E40BD604892279A113217A5727EF4BD330A1E8AD28D1F36
-AECA499B8D5D4F12F337D4205A541A610A3270C88156854F3356E171C2373921
-43C09D0CEEBC255293655F302CA2C580256E42A0C7D29DF5718428D6C451F739
-5B664025F68E95FBED4024FF098D6B11B3FDCA121EBC1C8D57D391147FE9731B
-3157D64F17491B4A1DFE98E65C145A3AEB1081DF03F5FAD1159AA7F64EE80BFB
-1AC2589F9848DE68732169548003F798D173D4B05C62BA04C4281185F97584D4
-388045D9413F8A93D7C7480B92C087B9245D0BE5808DA675DFE3F0FD4025BA29
-3FD3145F9DB7D6C29CB4538CA71D60121E4CA81D8F6F193A15C7EC6B2A82719B
-1B7C21F5C7193766FA33A4A43BE25E6D6911BC6373B47D7568B27DC114BEA46A
-14100A84B09D8D752D043981D3551F8BB53339308CE3C37036F4CFF24E0CBF06
-6E772315ADE640380CBBFC06FDF698714B975B3450ADB2D486F59B950E2BB590
-4664E88831F122FCFEC5F37BC61DFA985DFF06365DD0F1D477A47274E3A1CAC2
-3985E7BE059095B888BEF43580006EA4799DE8336518F27115F540EF6523325E
-7AD2DEAA4748838019EDCF5F1D4517F5141C9B03DB510DB1F1E517760DF69372
-654BC56F0EB1DF69EC626F1D9EE62F1060679AE856EF9D149A72FC4CAC01B0DA
-A2493440F110329BA302C59AC7D8B4E797E4944208441DE05D8104E02B5A2FD3
-B214CBDDAB0F2DAF4FC0216E2B4FB05CAC36A45988ADBC3B00D2817F10C3A1A7
-BD723EFBC4E2C20F2DCCF7452AE9C93CFF05DC2729AFF78A20C5AC2F4F494DBA
-27BA6B842CBD9275F2CB3673F543802A5D8D553187009A2322B7D05D9662BA39
-C6701C73BC8C6DC4E22B18390F0197F4634888F486C9F0BB2D0610B9CD3F8F41
-AF5B8AAE7F82BF2BBD4E861BB47084ED5FE7DD18085D467CD2DBE88578FA2451
-C4E2A43AA406476B99B71D1C9CFD22BD9AF53937558C0585A1E113B286981308
-0D2DA7896FBE647539252E8D6CF54A8A9E4D24FDDE28F2E58916F9A4F9137A12
-30731F9B57ECC0F310BE696D80C44FF8C7D77363774EDB0221B562E738D07F70
-819B90F9B9967C7A863C5A404B32F93B7B5A028FAFE3CE5F6AF8D644D4F7E200
-841FE9AAF13F186C298D64D31E85EACCF733597ACEA02958D5FFE1DBC90873B9
-A3D7FE0D47ADEB943CAB14CEB70CEB0B2F05BAE0516F787F9237EAC62E110CC5
-DBF203EDF10D23D001BD189F4BED786C798D6B89C0086B25097B5E9CEB377A0A
-5D46A4C4CE4820261C488A0F4CD4A8D9782B8FD97ADC65D8F5C081A7B5DBBB01
-66B568D166AB2930646E1B52F161C4CA80034D083288235943B4A41D62B2F61E
-F498859C33C340CA4E070B8DBCF11222FF7F04C1552DDA0CE634978B65F7BB05
-626C3DFDD929FCF88E3A69F6ABFA6D79294E2DC4396255B497379FFC0992793F
-5832BBDED52B2F6A0B309CA0115572722B266DB5455E4B63A74AA81B3BDD4C06
-09710F7D35EA70DBA05A39B42EF9B3C8FFB4D02B2AF1054A98A0610875C21E6D
-4377CC7D21925F670F9CF4292896678D330366FA109E0876AEC09A73B4A9BEF4
-FF27EA54758A8A861E30F5C1705D81DFD43C726CE75603067443EB17849AA6FF
-EA2FC7B0F09D6DCB5AA3E4AF20D69AE07E5752DDCC458306D97F942B1B94DAEE
-77EE52987F31011A1CBB13FD8A82ED2A3E20BE2BE9884858BC5F2144BD24BA49
-0F353F43769A48DF55BA13E34FC54CC0A0B772FDE2365464545DBDF957ABF306
-1CA6CDF9436B85987A607233D19B82DA291BA0AB332275ED2201CF7BCE51BBF4
-1534B7F5414C9607FECB9D60DD052E17671662A8755FCAB9996FE5504B55F30D
-EAE1C6C0F3FCD064A92A4F5ECFCD043DBF1C11D88CC5F0B98C1026D58B1FAD64
-DDAAF0DF9B4371FD037D0FD7966E758BC6B69FB3DF05D704E0D29C6530ADE318
-037E7AC0CF83735B89249F769174A00CA29E9E6266926A151D806C3580637905
-D5ED7D4FD68EC2FEF472D63F274097FC81E7F8DCC25D8AFF364261B7C27DB3E1
-C3ECBF9519411DAFEE1E0680EAF3041D48744D9F5936C2B86B07E58AD5F5A0BF
-64D1A8F6E80364AED36452F7605DD219270C6AEDB874A3DFC26496B929409DA4
-50E231A4DEB04ABEF427E2F6BDF573471A72155777189DD483A25FEB73D5AF2F
-5689083C6B94F2783E8B1373558D20E752D784A816154357FCD16D0CFD6AF677
-B1BDA26A104D7946AD99A84A12CA7163C4C50AB91B6EF1A9026CD218D01F6B5F
-CF661E03C01E6DEC5146196D320F5D7D7D3027C448E4E2BA5D179A178368D3D2
-1E23E9FAE1F7811DF257CFA4C720EF62497290BA024552037A5056FEB841339F
-358B8B13E52CBD48A230AEF06B2CE729B3FA79D6F648CC6728459A6033CE59F9
-7C5ABDAD30252C36A3CF3276B4187EF60311B638D15ED1BDCA77229CF3F868B1
-36943BF8594C74BDBE816DAB738BA8E5F7006EAEEDEB5E5B47EF726C22A6919A
-EC3E9C7199969C63DCF3D644AFE486AD14FD4323E4BD25CCE8EC3521C411CA2E
-6F1072C3455D019B47B3788824FF926036EF7E12DF9059429911F4FA97A7593B
-4DC22F91C96D7E765930223C8573CA13F262DB28C2544EC4582DD27C0169F169
-DA02A968DB3A0DFE8858B9BC536520CC3CCC0805442D32DB828E2AADABDB9354
-C9D3582D9E29CED492A3A62AD47BF0EAF26BE414D14AD4ADB0B757B9CAF3B85A
-C842D042C9C71D7B2CEAF04B001EB57B38CA50306391E9052B9E6561ACE60831
-4FED2919C30273C0703E7B4D49B83A30AC97793AD4DA30198F820902A05B54EB
-D62501C9C44BBF9E59493B97E2A68A2C8DA04089A6E76D127103493306633BA4
-BC378CD0DF35CBB4B859023D0F75A6785521A7168CEA6F63A5C027D6D6DF5039
-6C9B3186B7709DBC3A4A3083708D49A184E11AEC92DB7191CA98E343F2E07334
-D8A317C006B15E7751B55D5AD05D0B4034F41541A83F20D36C5529B001A9AD9E
-864008A1568C7FBA6E5AF0A8DCB20A999E146324217A9C2B1A9EE7916BA0DCC0
-ACEB6A8E7CBEB4A94F7710C745EBDB230E460B3DDE022629C52D50E30E84D9CF
-16950B26D3CECBB916BDDCD874AD8FA5112A56413F77D97B8D232258C750115E
-BFDDB88E75A8F1237794C07C346EEB75475E39FC0A9D2D7F15E617ACFB02E361
-012DF901F9DD3830076B2C9474076D653A155220024AC07FFC04BA2B63E3482F
-09BCBA47A58517A20CD834D13C7464DD7C2C757D60714D7F7BD122AE8029431D
-9F8990EE1D32B2A3780A7ECF0A770285A7C9D1EA93BEE809E848D9D7A32A4A27
-890131A0AC8EA060ACD683BBAC05288AFAB76599A9BE7254EA7D944804D2FE69
-E50078699F070907C0A95F7CACD96DE652FABB5654E3E29E5C10D93E0208D5F2
-BDB726920FE5A144A4256DF23F6D5EC89F8495F879A582B4921C3259B1B4CF24
-5A65ABEDF4626A78DA00EF9F2CBF7AAC82F2CE6FD2C0A4C6CD1C24F272E74DEA
-783C8DFD363A656EF1C399F6FA1C5F9CCF3DA479D80D6E16A2417AFBBBC5BE96
-16E48179DCFA21BF4E8FF18F118CFF54F5845EE38E6D822CDC0B331D35808C32
-56F10786824C341CD286B307CEC7BE77701D97DB098677C39C6D5CC1963221F9
-5DB0C4A95934ADC0197DEFD99EED44CD7AA7362C000109E64003EB2CE77F373E
-39BD4222CBD3886B232FDE5F00B946EBA6BABF5C06543753C3F630339BDA1F8E
-D57329078455E6409ED5865013EA7E5B907A9F4B720B2D443F5E1B22EE9E0FA9
-9B9E04D4DAD3DE7C9BC375641410FB7556B35443B2F6D2DF5B442C1D1B404CFD
-40DA8A2652C50F0B2E56A7C23F388885F2C1DABC0B1E4462F16258D8FDB8D3E6
-6AE62F29882C7BD4B9364000F8156D4DF01E004D6A914362BC52DC34F727DC96
-348210AFBFA061D38B8B7660A4404D1094DEF6B56E6DFB0433CB0445C0FEFE67
-FE6565195406B5AAC008D686337116397B5086A4AE6E089F5C55A02FDBCC2AC5
-DF2A25D00761F6F2AF6DAD1FA32BC530D7C0F511874F72A3F8C782DB8EB420AB
-02915C7BA59832167C84144B5E76162F3472C9F653D73283138879D68124ED10
-BAA6D80E452D5BDEFCBC7BA6592BB7A2B61982EAEBC9D1829FDE24539F304F6C
-5954EE1E58BF3F1DF4103DA71F7B2DD9D0E0129B3A5231B2B05E4A3510301505
-BC008BC342D3748BA2D0EB0639B5E16692E323F76B0544A18CE18E841063D290
-4D1DC08480EF2F429C8248A6985F43A7282462031D2FE5F6A4FE1B8DC407B7CF
-8BE46D3AB3A6EBC8D5F26E7E6B708AC748C3F059354047E91366323DD440D96B
-64192793D14E5551025D27B947FFCAE00EE4F620483230DA4DD41A33342A5785
-D7B0879EF7BD6CDC199AC62137DD767C06AF0B2342D4AAD9DDF080F1582B3FE1
-99F642B5D5DE3FD874E19A09CF99648B93E06B2144C34D054DCFE03C247CC953
-433EC63379BCE8EA994A15BB91360D77A6B5F9C6F7A66B11FEE6E3454366E6E5
-7D7E80AA1D5CD42D3283A8D10D1D3199D48070370EF843AACE1665B045E0D00B
-695AD62776B2EF893C79A3EA40B196AAE876E44B08D4009A6C2EB5C755EA49EF
-48A4EFEDAD1FD395FD2486348430B08B7D6CD15B1B5D4EF999C3DEA683888A6D
-7DCF8DD79E8E9C57343513BFBAE93CD5256E1C804D13B0C797BB34F70BBE57A7
-070A8709AC3CB4ADDCDCB1265AF1D2EF7A99B3BB944B5A0FB0DEF69A8C95DCDE
-B4CD0A1F26141378F1179E61767DBABEACA06DAFCA703FC72648021429C1ABCC
-28A89444B9DF7F263E71C5F184B191F32FEEAA2E21E6F72C41DA1B91B0134711
-A460721CA5A46D06AA53D821F3E43BE6BD3F580F7C81A84D35E091B05178B5AC
-A59BBF965F01CD5715AF7E6A532DE4A53DEDB1B2D52BAC1DF42DB9EB89836FE4
-CD352D9A17A1FDA99F5BB9F091E3DC02973DCA186099B17E1F8C59CB48ED6B05
-8035808110C40300E05626E1BAF62AFF738D233CC8A505E15190009DA26ED5C2
-FF9F9AAB8269F04F1E5018511DB89AF5C3086B7E5D4ECDC89A7E018AD55CB977
-47AD5C802BAF5996A0BBBA01CBE725A8CC0C77A9CAEF6A1F70AF7764E33F4043
-90520FEB84DBF662BD445639A6DA17C5AB94EEA33EF003FFCE18E4D24B18B913
-AB3C3037B526E07D8B7F36C86C66A3E335362736A1B359680FA2321F5AE99D7D
-4AD3DD038DAF197E2CC786353EB7A9282ECDDD4EA7A74013FA0D54A177AE313E
-A50DEA48354259F219A0430DBCED655B3CF35139F3035242F0B679344750144D
-0AFC7DEC91435E8CA677D9F6B0EADB00A4A5D55623D79043C7E708AB12917E57
-CCEA78D86E246047AC7398291068773A583C891C175A12C45701AB4EC468289C
-449684BF433A8679C67382D4EC94827127616C7FD0216F98E2FA375ED81444D0
-9CBC5D7CBE2933B2ED3527B3514F8BC03D006E0CA3839594F3390C5B8DD9CAD8
-4065108FA4D9008D88CE81CC92CF56501A51F0F10649EDB00E78B07EC2F740C6
-26B6DA2655CEDFA01AEA6628DA7E8048CF1168B664A5BDE5C4C96D8E91CEF757
-8A269686849C262085EFCD02AA2CEB20700CCB291EB85169E6D4DA6647BF4B13
-F93AD71FBE617F5030795A709607B8A7694A5B9A003365E9AFFE53670EE1CE2D
-D691E341A35E7A3B164986D5AFDCC16DFEB18848F7BC001D3104A182F1DCACD8
-35A6B2E78D8E147EB684A5950FD1EDADFF3466D8250619C5E08E8D5B9AAD1BF8
-D5A09F0A70B015BB85B2B579DF07043B3830745F133A82041020782641D98D1E
-F0CBA06E877EC7258FCE088028DCF38105399B84E5E7C6879D6B9CFD70B54EF3
-9C8AF17DEA2950876648D38B3586DA5A3020842486AC406CDA759CF8ED2488F7
-FC7251AEC3EFC11CA0609690BEF1507CC9CEFA0A21DB52C8CDCBE28C49E2FC92
-A8962F2ED323BF4C788B0F16EC8342D17DC91570A1A39558DFB521B27A99A155
-904D493DA60A5D789AEA141FFE3D2D79CDC882C0BF043EC48E5E5E86098E67AE
-BB27075560518C99766BFA6AF7D97B2501F5DEA5358668201451A031701C0289
-35B653064B04E3021270422E708BD1D4A8863660AED311B77CCCBB7F62734D4C
-C0AD9A6E16CDF537EB766C17754E66F7CA6AE294CA20156A6750BCEE734BCBFF
-362A3E4602A9704E0F8DA4F5F8C382631C765C0AAD7825AE2AD9A04FDF9957D5
-A087E90E5D715FABC5F246890C9FBC34318C6EB08CBC617B47C30F84E5E81253
-B7AE7F7D9311674604F136826DC9BDACC22D4AB78F3D07B71059D97B7E5A43BC
-380F4435D88B425F4777D364A4F949892BAD4E809D05ED716866CBB87A8B620F
-ECED3C289BE1CB45DE147E3B4E90417CCEBD033C95BE0FAD62BDE7EA33452E77
-F9225ED42A24A0371079ABA4473B83618452D3F59F7C62DB3970319D898C0834
-987055A5ACF619D245BCE03AA59A579FE24A4BB22154CAEF7A3B3B329B4B7368
-28AAB0A91F9D3002466D0EEB737CA3D69289E243E70DFC0D248BACFC9BB3337A
-300CF09EBAC02D888CFF89399B5958829F2D71218ECCB5F9ECDE9943FC4282A8
-C731D9718EA3D5B429F2249E2C59DBE67E2C0610A547A8A72BA1F1FFFB964328
-92E36DD628B9DAABB495540064B2F1BAF19019309D185B173A202055CC647214
-D00D80139662E966D810114DFA2DA33ABB8FBE60B69126B906544B586B6B82F3
-0E87761DAC16B27DA7D47D8EDE379CA189DE36FED1521025135B877FA076C8DE
-A1C01304CFF8DC2069BA9139617B913194FA91DD08BD915A7F8376C726FE08A5
-F0C98C4CE0AFBD2CFC06BE94B5393F5BFC83D852566B61240F9A28386B1F87DB
-B18164AF9CA8B1C7F656DC90CF7C44D9B28ADD400DA389768DDC99845818C8C3
-04F2A23D9846E3564A8E11C70A969B06C7B254AB5165D05C58A220C5A2960F7F
-27A5FDD2870229CDBD6D5EFEE92BB78B9E3DB8960133EC66E565A2A1CA822489
-8BDBBE78851C8F03B44C3071DE94FE1D42835A4E0E5B1D80280CB9106A392864
-4BD22D9AF3E3AF3C5AE945E64FF4B70396828ED465139BE30960F3AE96C7A2B6
-341C7ED348E927010202322E28A483FE98CEA6BF321C981EDE4539A4325628EC
-0C24AD1942C9D1CBFEFF525E03A7A1A3D8727635BADBF5002C31AF8050F95075
-377B8CC8ED0C959CD047846638EBEB2B66B95D1896A6A9E61B434C138DD37CD3
-742F4E984CA0BB1D77045B7E96792534EFC8F83C554BFF464299F62FD56AF8D7
-F088BCF9D50097E52806A05AD2111319E8243566E225E5CD7C0BC8DB3DC61CB2
-29B1A8A129A0BF566464720ACDA31333F501BA78001554F7725F4A66D650B28B
-BEA225D9C5F68CFE46E97045618C8C647918F06B29500DAC1B9FA25C7FA2CFA9
-B3A14F45B2614BC46BC86928830929D9B1C03AFDE044334B535425A2AB4B760A
-5BD7A39F382D28019A9E9D8263AC6D9A7671C696110B1167DB19530F6B82364F
-0F1D02126A367E4AFAD407560D0C0F3E8B8755A2A2C19706207FB6551948E6FE
-AF6AA143677DAE9C42ACEE24BFE8812006AD7340CCDF0DCF31ACC01721ABD081
-BC0486E9D97C4F1C3AD01A3CDCB65BA8759948195C41F6B56C2F079667562BED
-412604A7EBA171EF77F7334DB2E6BDC0184C15524B4064FC9597661315258825
-8F59DC08D6ADD7FF1DCD2A5EBF60D37C292490A40BD52E33683A3509741F828E
-A00BF021D83B21CAA0EB7CFB86DCCB67AB3693CDE887C07F12CD5AA3CE22D792
-BE682D5C794199B3483627C3766B843CECADBE91215E1F445BF93F022AB99BDA
-DEB9A7CB0BA9AAB562090577FFE452FB81635C16F5E9E30CD3EE87221C098858
-95296716DCF19D6247958D4828866277050979C31F27E1E9BC96DFA5B616E93C
-88D099DE70391DDF62FBE3532935DC3C5A45193BFA0B7D8C17ABB447319487B8
-C623004C9C2DDA4CD18BE390AC31B3B94697430F40B65A651635CD929688C8BD
-D6324B7531BFFD8D09F0E89E83C824738E7D897303F4F6EDD97546ACF2A54473
-6902BA3B82F2ABB3524F8787027D19AED8EA26B066EECB00F989D9E9E757C027
-8B21D22053AD17AECF7E1EF14E9A0C2DE93C623393DC74D91442EA1D8542909B
-1CD05D47E08D27F4315090B59D4F19D96B0108BD33276C23517D7F184D7E8244
-4860D87AEAE9F35F14FD45C4928D96FDFA93C888898890A6758A604077142935
-64BFC4C606268EDBF31F9A217A297AA6156E8D9151B5A5717450EDAD9FF901C5
-B1EE0A269F21CC03B308974B33E9C30E8F168022C71579AE90796051B412E5DF
-926F0C60508C999C6EBC4199C0B71036759EB4647D91F82232579FAAD24D654F
-A89BE9FB197453E958764E9B97EC7A8A76C182610323B78918037C000806C95E
-55E849B9DCEF7FBF7427986DFB4807375CDF001206C91917911313A8B4BF4E75
-202B857D6C41260CCEEF9041592FB8FACC08D7B9C2DF916D41E48964C0952BD3
-4EC0A715B8B110EB8A5FB2DE3C9BA9AA389F9784AA760838B7A998FB736F2F3F
-F91D7109D2996C0C5FBC179FEBDD47DAC74BC5A1669C58F20813986BE2CF2A05
-554DE1358574523453911BD88FD911D499D78EE025C1DC9D7D0B357E67F9244E
-4DA51AF644D330E3FE937468938AD15AC71066B167C72541236ADED8207036F8
-BE838C63D8935472F1C8B906DC1426C9373F86629F39142C4B0ACE7BAB58D4FF
-A11EC7600F4250D949049EE3FFC85D3BF0677CB31CB4CE7F7A8181F8DE6D44B9
-000AF404E211AB5249B8D7CA37246F23A48BB2078FB16A095984B137E212D2D7
-C74E5574EB534157F49283D31A18D1729DCE3A7543C208411C21E9DF00590618
-25C2D8D6546B442D69216E411BD686686CEBD1C6B59AC731F8BA1435DE732EC4
-93D9AF6AC08055203232B3C1A6E5C2612A5B6C231F5E277E60B55FF146914BF5
-69983EE4CDD11B95CCDB57B1D9AC489984AA80E3791F6F2ECA4054B8794BF03D
-60F1C0551B9BF6747741AB77A91A1D520EA763B0F74D718747D1418546E490B6
-49A9A977C82EF6F7B76C7F9D8F387D39FE73631CF8FE47A3F0CB5B06AC83B107
-613C0343C96C0C8D33B3AB58C995876FCF3A9A9144DD27D43222D30FFD93BF50
-67409BF7154DE457567A7D3C763E9D6A1FF8719CFE1AED079E2D5B9C5FB5E8CB
-5FC753202EBAD213C041493614A09F3887E2F9D8629351E4E8029319D554B36F
-FB85E8A2ABC5B3BFA7E52B222216EBEE316037CC58563A77ECB1BE77890F10EB
-B5DF6871D23063F6D2BB6E3AE2E51D654E4039797E6B8EE9E0C794246ACFBA14
-71FDC01282E37B820FFB836DB96687B390E41869F98A9B0CEA00B5816C6E37CD
-1DB55F8AF15078F166BD8C7F3AB11A6BCCDF80F73C825290B815DAE2013D098D
-2FE738FB76D38F3364608FF0DC5C6A048261E6DF21C0793E683E2902C098C6D5
-7A9C1AD8EEE88FFCD812C2F87FE19B17049719EB911DC66038B63DEACBDF6CB2
-66A6C18FA3EC7294C41329CF11FF23209E45B826EBF27609FBC10FED20A7F368
-66C0DB3036A446FCF7B2B5432D8F2E9E95AC65F828D9F824628952B27231AD09
-2F5193FFDFAE9BF3796C2BC0FFEE82251739294D82B40B70EA4FC7FC1EA71038
-1E87E951C4A3B31C1A3CA67B12EA2486F53AC6CCD7044A198E6AAFEB66D2D267
-D139FB8EB71C29056811A460FC1FEEAA5098DEC3DFB28BBA94A7F6D690B4DF93
-A40743A5718E4D8A3147C5019C847D0A4C237BCF8ACA358DED2DB5915FAAE683
-A27BD2E0545D5CF183DB9E506D46B4C885295587CC7C9C8113E22C4F42B9CBC9
-F236D99E7C41AE58B26B92BF4D689A34707D44A11793DDA31F2C95287BC719A8
-46BDB3E13392EBB14901F4A3993795E8FA5777AD6662677520D9A5D00D59EEB3
-AEF39AA66A1DA2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 16 /dotlessi put
-dup 19 /acute put
-dup 24 /cedilla put
-dup 34 /quotedblright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 50 /two put
-dup 58 /colon put
-dup 65 /A put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 92 /quotedblleft put
-dup 94 /circumflex put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 122 /z put
-dup 126 /tilde put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
-044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
-A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
-23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
-19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
-1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
-8BF148BF893357A81572660ABA054F4FB8EBDFB17C139BFAADB06A51D65DE1F6
-F050CB3E91E659BB472B9B3A9F7968B65BB053A8319789CB0728BE2E05B1D719
-3A66759ECCFC6522D6EC0A34C1F451E55F2D1C1226B62828D4041A065C741A83
-5216629A4591897025D65E85441DFD91BBB266409ABDD926FB8001E8B969DC30
-2BF245C9680634072322A9B3D6AF4074416A5C81954031BAA2BCF0C804070B46
-B2AEA4AEC2A47FB1BF4EFBAEDAD04E8F63C75C46CCEF26B057E9EB4321A1BE98
-4752B6CB6904E5A95CDC679925797402D680808F627670A273B22E373D303F20
-0EF533BAC0868D7839814EF85AE2A8CE59633DCC4D666C6A312525AA043A6CE1
-0B00C0E8866D57EF5CF0C2541C55D9708D646140D9EAAAA9B8F7C941921F9CAF
-F86ADD7D23CE47530085EE5348680E52195E6B46D12F61505BBDE52A125E1D39
-5EBACAE0C52225081F22F1DDF140A4996B21E32FA4554B1D82BCF226B2C20CBC
-5E0113B3BC9F1300ABCC2305CC9EE2714C8515BE25FE12195940B78B2198453A
-8E94956625BDA043B515A3035B8257D2F9319E6D2D07DA01CC3DBAD0B367A09B
-7E383C90EA37F3CBE8AD78BE11A2050A9F70F13ED243C582FA2C29B6F0C6C7C6
-4C4895F2C738C8681F4669D9229B73780B9A2CC762440D49BA83559D3AEB3A01
-CCC6A4CF3135DB32AFA128E8BD2594FE6CBC9C3A1971BD2D5BBD6B5B42C02F29
-27DE553E076EA4A551D5234BDDF419E845E31E9DB55CDCD729F020C6EF202A57
-F4A455FD0920A12C664C2749ACE8C7B348D2F0670B698A3CA3858173F8FF5942
-719FAC63938DE87E9B8A25AEA9BA27DAC9D5F4C6AB825FBCF96F3DECDF07B196
-3322FFD30810C832368C7CC28EE920B89FFFE9176DC4EC8D1630D915D8D67F48
-0283835D6FF115D0B68FA3C3D07095171C17CC6530A04FAC78AB00EF4A5B486B
-FFEDDC456CF3CA0C9824382A8592F3F84259A527102456ED4325AAFDB1E9E049
-CD0621FC7F802BB547EF1EF1D9631CAD8D47852271BD2907ECC3455A6B6AED82
-E1E3D760D097DEFFA164AC9C7AEB7125A46CB00BF7FE40391FA338541142C073
-636B4F11F07DD645BFB7285B1F7D646F8C1EB07545062B2C9534BEB8A1D442FE
-F0024EE23756B1166DD612DC04B9059B383F8D092DDCE6AD7462CC17E0422826
-97A829FA6C4CB92F4798608354A21144C9C9C1D51C3481650667710FBEED3FDB
-E7968794F70E6B431A1E4EF744FF61E9637DE34FBFCA87ABF788CE8DE3CC9774
-E977B26485BB0BBC853B0B7077DD66CA2583D3F44E870CD8705C81DB3D3E728E
-8F8BD31117C0C7AA94B165CBEAF56A9F6E2889DE52F88C9E4D09E5E9923DD3BC
-772993FE5A5E19733773FD3CB3D852D29F8E548AB4F683D78FF6A8D727B614E5
-7B2BB24240EE5EFAF02D5506D22E9747B32F707F9142223838E51931764D476C
-287A8CE18E7264A85B5075855B529FA76611357D9E0C25D2979006ACC54CCCC0
-686DA8E467B153809F2CBBC3D175243C5CA27D5F171B066FF3CC1D39E458FD26
-AD45DA28FCC099EBDC1F6A40F1C9B6E32124B39F29669E773C394E3569EEDF27
-3F3D6F161C35D7C1633E2237729B2098BED5F055B6E5736265BDF97709C57697
-BF2BB3BC650469F918ADDCC7C85DA8873E002ABC34906594BB43A2DA61802FEC
-8587378B3322E2B5D84D4BBCFEE0241081BEA45478C9DA7674567D9D4D1143A5
-B274106F08452F0DF1B8EE561454A6115832C9C729886189DD8FE50627DE389C
-5DEA816442952C22E000754AAD67A3865731C1E64B1BE13AEDDE8961CFE98919
-60F5EDEC2A4B16298C5EA102AD4BF8CA0D158FDDD1AFD514B5627C72792DB342
-D5421CBF7E223307E3AFE0BC31124E325B80D45EF8262323EB2BBEC53ABEA50B
-0010AAC20996F0F0842DA4AAFF538A327FFF81C7886946B8B0D10601C6976F85
-18479273F4EDE00BD6611B1E7CD9A2872C806D76E2C5FFC0BB1887AD69C1008F
-6741707C189FFF3AD0760067F71A85E62B372E3C5F22EA28AB2B6CAE00BC2CBE
-3C0EBBA114A1C246FBCF3D236C6D7D0EF16BA6A4DA6C867A694E6DC4ABA6C52B
-0B50E76CC07CB9BC107C3C80C1D991A6224BA8D9BFF3EB51153251486A215982
-78E6497BEA8F4034FF7B15F27A822303FA2B93AE248A259F8D9BBD647F7922B3
-D1A5E2EBCA10B5481412F07FCD17C9574C7A8164F34D5AFF446B09EC99C25DE1
-71E13DD7F3E2F29FDA2BE232385C1FBEB711B763FCBA851D5D2789C77FDBBBB9
-2C451DBC687B80D7F7C26927BA8E6B56C08460AA772579BF1A9DF54830212867
-B5B1990E48D834F1DC7117CB1377C81151E967D2D6F812CFBC18082FCAA97C87
-00DCE91C041926A1B69D05341175C3E490C3011F80BF15BAE23E85DE2EE56F04
-32750ED878988D802DD9939B92BD71AAC16D1A56BE59E62436064CCEB453B87D
-E9DF683A2B918859FEC38B038ABB06759262644FA44BC37FE36C3A805E6CB50B
-6C5E62DF9AE0466C1DD6E0790AEEC120E34A62892E5643E372D18504C5B96548
-76A96DE55CA7ACA66EB7F186F64512C5F9F4B9D5DEECB387B2DDBAEFC75DCC0E
-2764FC5D90DBB797C66C327CA540EA6B4BCC37ED15A7408C67404CE24010EA8D
-6D2433FF51D24FFE65A1E79155B3B1E2932DCFB5A19BF2F12989C5AEA84AA4AE
-63F262F1DF68BCAAC5AB0DB91F32A00A65B6A9D20A5621B4908792F41DE64111
-F05EE6F812B1DE676167F6D28365577BC11C5D712CD7932B62514F7DDFF51E6D
-F86F08F674A95B5E8A87B72818E3EAD9E4547201D4C4137CAE99467C0D8325D0
-DD7B2360365AACAFE901BD79761541C80BE5940900CFA61DA9A462E0AE5C6993
-7082D8990725B902B9DFD598D3EB30A98240AFF887486A6F30E3BEEBFFE5A323
-F5A579CF171EAF76E37688CB64884DACDC887E4D7BC852BFC3561FA1804A779C
-837097F716D6C9774E8DAFF0EC2EED106CE80043F2621FC8E7AE6E786846817A
-C0E1B56F7810244B18D0E7D3DBD3F8D799EF1C7FC57C233B4887F05FF643EBAB
-71C2A78DF12A7861699FA83CAD4A829A5D7391A32B5DE24992674E051683780A
-5F940A7E1A708B0F415441AEB0B15B35A3900AB727E0B31CD0AD0CD34C49BFF1
-D3D857CEFD0183D0A4E4078191C010574B463101BD0258E843BCCA3C38553E30
-38973097F9DCCC5AD3F31FB8E0EA1331A5A8AD02789280411467B1D8045DD9DE
-3D2BB653D0CE9C803ACB19412FA52C5D207D6659744A54185E6A2A9D618B0C32
-DEAF49E3DCAB1AD8AF0760DA8F1E3A6A668DA91EB2A78173F01BEE3E82EA6A9B
-2B6526817327B15FAFE636F7FB2013CD057973E0997FA082D862CA181E915313
-7E2D9269536C29A07C573D0D21FB83CBB37B9D0B87B1C215AFC4585C9408919E
-6FD4E213BA7BB30FB2135EF0722B7793E10DFE77034E84F015C021E89875E831
-D64021799C750E4E452B68975DDC50530078E286F27F148240C12DD542DEEBEF
-16F268163FAFCA552359BA3180F0E207B4CA036F1937C7ADC92D60A98691218A
-7304273D1EC865A723130A73F9954E5A93EBE8391F6212E71D6D89073349315C
-7EDE852FEDDE896CD0AB0FB3B5BA7239762B8290C1689737C260B6BBD4977F06
-4C91757D2940989D97229EF11D465EEEF6A3401F4D2EBFDD593C463806C738CE
-11EB250FBBC7DEE8988ACA14FC0470B5E05008F605685C1894EC0F8DC9DE8878
-3207C94745915483534D7BC4A580EF109763A7F2E5662F0E8376AE1B3A4200D1
-D0341D71FCAC9A97E55EC03C5F82E8C9DF8B1E7A5D03A1020197EB0E47D460A8
-84F58EEEE7009FE046D8CFD1DE90E7CF6F7908D6DA76D66E5EB7BED5C1A18865
-AAE5C9561CC80FE0FABC08DA84E879734B9D2EC5582370453FE386DFC8312E17
-EA3F88E0914FE68962803030F8FE1B77C2F6B585180772508AD72227BB8B2F25
-636879D10584408CF1D875A0EE38DD834AA05AF066FBF3739BC20DA57359ACAF
-564CF7402A618CDD168FED371AA5D082485997836D4704797BBC39FC20655B27
-D21006468300FEE7E955E2343F7141B66A9264B3EB5000899E4FD8CC392D0984
-F6ED3D9FACE627A4FD15B1CBBC862472D4717220E7CFAC40E2E0FABF4DC79AA8
-F92E7E2ACD6348D2A50E59E65627F676E48685308BFC2D77B66702FE2D7F0AD1
-0731C4FF9C3668E8A3A190523C834BCB9F19F3E0764F0BD0C820E20B4A8629C6
-220B0D7A093318F66FC99D1CD0E55BB006C8BA97927F53BAFA8602EE29EDF64C
-519FB4A1FEC8154CDEA79FCA9A51637905D8257EA895DDAFE507AE6F85243526
-39D48A15EFD4BF3F1F5A9995468BDDF3C5B17D83C19D7346599D2098F6E6306D
-AB3D85F2B4DC0AFDE66087304957B6ABCF10EB6CE261A984BF34BEDBF0F1C33C
-154D4F05D5DFB78871CD02D95999F5D10307DAE1099E31F8B483A5A5BB312F91
-89BE34A5006BF9495E60D584F76AD2DBD7E77E335F1BD5F06AAF62AD995DB8E4
-2D20E65EE417EC6157B311001FC85CA9EAC1DCD6002A80FFEAD04BFD9326BDDA
-CF79075C7CE380482AF8CB9DBD58C75ECB29B04C5F4C77D25AC5482D3B2CFA31
-5FA7AF23BEFD7F5109BCCF3A91DAF949CF95B7CD37111FBF15FCEB24A7A08286
-B8F82747353FB352A9B6F8FE9422785834EC14D50841147B99581915857A55BC
-C9255BCD68599274997DFAAA13275A21C4E2CE988BE250BC8E3BCC6743BBF578
-A92DDB1B5B0D97BFE65089EF34F9610528C6BFAFE0FEC75B4E260A7CA6EDC6BD
-75FA81D8E67EC8C0418DC3F8D079998E58C4385A78C050EA8C6D16C691DEB7C4
-D12A5D8A16B8BE277358057E112F1B42EC7A4A6DA8F8505E37837581FAB0CC39
-CCAF717E564096227E084DA4549B781C9592D69439B437E38F71FE283D425302
-5E1748339954528C27DDA3F03D0C049DFB453600DB822B3A285DE28B5B26DCE2
-CF65F7F82D90D21F5DE3A89B4F13216B1B366B12C1412E29B77863B5356F7D7B
-8DB20FD17AD170B0924575C222B3252FBDCC837EC4E62DA75CB6A074E74D2CFF
-26ABE0CA85C7FA7DF38595ED9D24361135F184277DDE45A0D28443C6817FC63A
-A0B02E67606A7E1FE8A678622DF0B539649A40EFB8ADD39E2B0FF242E05903D0
-D39F288A81D591732B4B52200F18DC92B81F9105A7751A5AE9675F5A0FB8D8E0
-6E989152A69360CC0CD0F3D18B7A6B0588A077D04210358F754C2566E20B9026
-850C4094BA7B147FDD9A8331F24F1A72B47B15226EB4BFD717BBFBB857D70C61
-176A12F99678F2E7512AECADEC1277CFC23F8C1695A8F884A02F73F2823E051C
-8E7B37E4933FF231316266C7CDA3BD4B51ED7E0229727E9CC54613E45346CEC9
-EDCEAF8E6DB711C5A0613282C16615F64989D2511721D473FAB5294C7AD8991E
-761936462EA70C93780F0021FA2AF0660E3DC7CD069D78483F6230D5F207A10D
-FC896C176A054507A673F5F0F16B90F87657B62B3684C065481C3B940A49405B
-DBD5F7E48EA3AA5DBA5AF80E5A350F7DFFAB2E5F3B61F20D1F0FCB4C5BDADDE2
-1BBF698DAC949D3626871FBB4196DDD4F7E898BC2CBFF00BE6576F9B5EEB5475
-F56320CAFFB343BCB6D7671FF528BEFDB2A39E22FBF3E4A690E230A359D0BACC
-0B0AA10BCFB8F2CD3C94113CC215BB1EECF81FDBA6295B80EDE7283213430EF8
-9824ECF151E2EAE81C2F0A60852785528C83C5051E4999868EE233188C0CD535
-E32E01774CF4E8BF4107C251A35DC781E4FBD5FDA2C5A5317EAC13B7DDEF9F20
-0A40BF9D465697A0C9BD1BB43931EA73B5FF11F914A3426276CEF562B4A755DC
-D8D4C033680C218D991106E4A886AC27CE6183BE5C5193A0670ED839E47D9354
-41E03BBFE21311BABBC8FDD7F7EE7DE0BFE63334FED4062BFAD88517424F0345
-6F6731A9C5909568A089C33797018D54A879E4D361052CE165346DA215009177
-00A6EFCDD61C2229251A7ADA84EADD0880AAB5AECAA85E420E27BD695595DA2A
-0749644E2904683501C45B670A402A4F4AB84DECF89577C524B7E07CF854DAF8
-088A8A0E1B87668700C93E22CB25E80FD6320F6FE3E6E6A28114CAB81E0496BF
-B65769628712636019FC99E5CC511849E1CF897152580D78106EFDE3DA4EC31D
-31BB8A51074CCC16E95527FFCEC4FEC2C0FE227D6F4FCEBD14D431D216F72D06
-646F66DAC716C1D5E372B6FF71786FA762652D755A956DB8E3A5E80B0DBA2B85
-06AE9BD7C947E95D9557F5BE05C946DCF2060A8318A4D5607B56D5714038B1A0
-CECACB7663C9B51E3ED42705AA5A272E255C9967CA6CBF6BCCB83205CC64AFED
-41E1D752FB6BFEA3BBBA189EE4C7429421EF0519CE9C1A789C2EB856E54E0A0C
-361AEECFB8C3C8E33FDCFD1FEDD6C9E6F1C66132C52CF6F492F8F301CA376A96
-89B9CB73ED089ABAEC1697EE2CD27D9454CA610526EEFCA2C7EDD9D48547D38F
-77F6B4196B99D30D7C9750685C63F12DEEB502161AA1D57A93475E20A419DA35
-21F972D6905A4B61604A2A5680199834768831F7F92362EA3665385115EB9621
-230ED00B3573B49E1FAC66781FECE2303B77492F7B150F0E93EE035421EEA2FC
-0EA61C003B74F882971C923F5CBCC1F19555DB6DBECDF381CCE40929A0F72750
-0185BE2971C50ADDAFA9DF32F24D30F96CA855B79998FEFE84D717094720D0A3
-87A1586CEDA198ACDDC9FAF870F4FBE2D1CC457D0A7221DFC571003FCC18EF04
-2D4F4CE6B05279CFBED6EB556526F58885AEBB19A6A395E4FDD6466AC1353740
-2746EB1D73BAA95C01C13BD26C9D9A67819EFECA4AD79305B1F9312348E0B79A
-66EEF7B5354E225FA52966F22EBA6845A4FDC1057CA961F101497661F855770D
-5C942E2FF701A82ABDD3D890BC8F0C912442053A5431EBEAC3B737D69751CA25
-5CAF1F5F192307C6C4AF459AB347E67CBF4A0EB6767B8AFA49B80CD5A6D9D9F7
-0421199501F4AD61CA812189CE016F17535A8AAEF2142CBD1AF628B820260647
-52A52255DE3C74153EB9322A4D46898B616CCAEB1831ADE8A1EDF06D399AA76D
-D87780DF6468BB6C7504BC0E431C02A57B579652790C5074F32E30D96848AD13
-8D1DB40D5CAF64DF467C4396C7269F875C05C8F37D97A66A1B16EA70AA9CEE3A
-E1BB18CE08DB8B5DC24D0C98A19AF9058820DB28D2D969F398C423F71F2291D9
-7366FE29EAAA50F062FD4B7E41183EE7904240EDF5E0D10502EB3A6446EA7E1D
-4D5019D4DC6BDD366E346266666C6ACEA04A79ED0CFEA69DA182AB57CA233FC0
-9B728DBA4DECD3CE7B01BA56761AF243660073BF036AB3410B47EB0F54E600DB
-6B78843247B0BD9E10682435BB31664F28DF504F0C733CA6719C238224F38DD3
-85C4679865FDDB643225C8DA4792A674A97FD2ECE879AFD9521AC82AC11E32C8
-A53D344257E3600AEC7A7EE6F5BD7F685BE7C976FFF5910C21250D6A2488B593
-B38DD425426E2C77ADFD5C312BC58FCC7E524BE59922FA2CE296F419E98BBE8B
-6BB860011E2178D82FE482BDBA87EE43B539E939E5040F5DBBA84A7684934CE1
-D5B941060E11C3D21E8DD456946E71D049D0050C71C981E588D3A14F1EF09C19
-3C1A3F9201CF5FB14533F5989331ADC770F0962AD6DBB44AEB5EF2833AB982D5
-88AFF86934F10A7EA4076951A9AC07E7883EF7DEFA483ADD8C29BAA5B60220BA
-108E7BA10A30815950F502AB165B824B46239110929F98A87A272D137C3B3EC2
-F5BBCB4BB4B5C566826BEBDC986B72357AD71856FF7C25B80B386EB034DC229C
-E2AD3310C9ECB2EA54D10A1AE294263F88531F526E8726891571D561FCDC134D
-A3AEB7D9D55ECB6C44342AA920B4D223D088CE9FAF0ECCFA2C56DAA10BC9E605
-A4BDD8A6E20783E33DFE5DA1CB5643BA51933A970A114D65D1710344366C10F1
-C880653605BAAE5730974D7B70A7D98B1E6B5F7BCBA9C3C637DB23DEC8DE700F
-BE7BFDF611431E5D43ACDA097EA8E31D3E643C112BD30346D7532DD106E751E3
-D3F56E8E458A31DF2E3B00A661CEB1DC91331D916AF533A793255FFCC416CC1F
-8B7C7BE961155A6385F4557625218D15B15BF9282FDB95E496E75A19E5226A9E
-7D0061F34599393C00F617D7C876AE2F95CC501636C300EFAA14496206D798D4
-5908227F20C5BBF8B41AD3A4CC346ABF759B971A0CE8694577750D3891BFA9CC
-73088A2CC81825CCEBDA0E538B50F4CF2A9512EAAC0D0EFE90D51DF6DDF3CA5A
-40574FDE79DD7A8FE4059AD856B6515D54A4466BEAA08894C305D6B68D562313
-CC5A34125131E8257CAC116E19AB71BB93D046B7C027EA2B68872F0CEDBED1F6
-173DA52D6F392DBD32D94D5934F4BB1995E84D4116666915E4D79D522DD46C77
-EAB298D578645651C77C2E64206B8C833266D5BE0593B143D868A1A4DCB478BC
-62C02EE1E2D81E97C3B11C46D87F2EE696810AED9213E108A8E298CD3A42F9FA
-74C9CD25823B6D506926D5FB56CB4EE6B2564484BE8048C2303911B86D6D713E
-5D6E0D9705FB3E16EC3237CF631169E1387A4DC3422E8833E5F918B374148D42
-D5C8D9F2DEB151FBDF589F2A430A1E780416607E94CF596F3B46E5DD54C1323F
-CBE03E29ED97AC2DDC4ECA947FFD1D9EF829CA1ECC12F63AA7B1FAD91E01FF47
-46A66923AF0B2FF7E9C9BF5AF163DD9A6D1495FEC0FAB87E23CB978BB555A3B5
-1455381BB980F082214CAF0165664CB5C43C3EC28E9284FEFD92181323406C94
-A3456D8D331DBBCAFA7DB513D62F90DB296088325BE04AD64081EEDE140772CF
-8B14808BA3733CB320E66A78B19A9F267615F018B720608F693054EC1EBE12CF
-548135A824D48EFFAABD88B56C039D8C06CEB193ABFE0BD68E508B487961C06B
-EEF59BDBD29959CC5CB88731329162127787BAD8CC00DD92CF1877931021367B
-958F90706E7C72F585D95F0845EB0071CFC2A4209F34DEAEB7F08D7A43A5CD19
-6EB9B857160FC67BC8784BD7F667D30C4CD0250878BDF3F1F41D83F2DB32A3FC
-83AD502437E619AC2C36603EB6C8BB89D8A363C26F19E968DC2B886CF1466FCF
-59C1D32BF88C71687CA3FC2873793B5EA4DD4FC246B96A85DF74E8F1EC3FE9CA
-EBFA6771871D5033E9ADA9ED5EB0BFEECC89C1DC79A06DB85A02C16987A24E96
-96E1DC2CF2BB583689E9084A21F243509E19B259348668AFCA7DA2BC4A925D2F
-3804C4BFC3C159178AA514073817C2A559F62E05FDF2F420F642B1BB723D0DFB
-415F2F92B89D73BDADB193DE08314364B113ABDD2CB6010F1D30399E0EF92033
-94A53042898B4AF669883B8BF77A0E209EA954307C7A0B111D840AA7AE23C43C
-077901CE287EECFE55C8F6030A89AF120054BB877E186C198E27C9525C65CD8A
-76B8697718D0D3A44F5C241B09643A3C15CA3493A7375361AB61DC9227A41EBA
-243DC35A558A1A963439689C9FF0FB6E1B61FD125D105B2AB3D6481700B2F2C0
-7C372E29BA80111BE854945D47A175FFFD1FF0F41E7F7E1B442C3B25D0FDF748
-334E5FE2F01CFFC7156C2F6CB59242EB561A8EF467A11FE04CEE21A23CF0E5CA
-290C61E712EB81947D94D349788B3278F64F3B454A42C5665AB1CF2A5F260652
-8161A27185CBC1D2B36A899C74C4EA141125F9F7DCE6EDD8D5D15B99ECF3EB38
-1B9481D7A97CA69E91657063B97AD87050CEBB19BD2453EDDEC05AD575904BAE
-9E209E7A4ED60E1A7BA2B70CF8F06A0E08EE3909AC8C68771C063CEEE8F402DE
-DD430CB1567FF0A8F724E66BFCF4E9EE7776AD979E8FD64277DA705596565A03
-3ADB953F0851C7713A3C12950A3322E77B36FA3AC604A68F47BBC4607E4EF46B
-2C56B20C93E10C875A9A989D39B3209D04AEA46F90B32B590EB856A92A7436E1
-66D0391E20146CDE1C04155D0A2E5CAE977FA2EB0088C673AE306E96DFB2681D
-047081F9305942C4D62CA93F634A5997B8E2BC27AFA18B440C341D7FF364C49D
-D842E9032C472A30552F7CBFEE5486ADE24243241E132ABE18DCA1EBD412A14B
-C9D44A43DDC3B80BE44B1453FEB3EDE5FC4062B9460EA0497E13926EA5D070D6
-A1F7CDB9064CE04A4988D3AF2B1720BE6B6D1A35C779F78973532A03C9A63D6A
-5E92FFC797D072CEB87DAE94B819279E214C7394EA5F3DCF88449FCE7C54C606
-C7421C5921C34DB3CF003CD867DA6D39216D05A436557E687B3308AB52153E13
-C235352D6DB1D07D1B706EA7B61E8E0679386FD5CFD1ED375B9DD9DF85099679
-995A72984A00728051CCEC5A75BF6CB98AA1C6DEE6991F3FD5EAB626A16B4E05
-A111D103E65075BB1E90B75FC19B6D9A8FAD52C36130F1C6D5A3A95A26D063FA
-0FB68F130E2701B7015749E829DAB17E52FFFA8B2F4E53A4CE194A1359415D1A
-55CEC124750C2BF4D1FF459BD4967B24085973744951E548D5272D51F6DC9503
-ECEC50EC88031A51040C402E33EA5759E49DEA36EC498D40D311A167A20D489F
-C0260BD3138CB15483851E75ABBE52BA6A435D270C44699EE3F74A16ED51E496
-7AAB2C16A461DC32FE00675E20B5B8FEA54B570D5009EE999F893027739574D1
-8D201D3FAE0084451F82C0FCDFE77DCDD0331BF1970FDC4C8806755F7944F3B2
-6FA183540FDB481F7FF062A4FB8AEC38506E5FF03EC1B862E6C825DFC1AE750D
-F2E5954DAD4AF3FBC473B77691961A0587F21CD62AEEB001E3ABB155B6913275
-710B60C5D70161F03F0045DF77B30A40EDA3F33147AD6377D11F42933084753F
-93CA21B0036A9486F3A82C8AEAD26D16897A247A1DAAF7C752A7BB1A4726E625
-488223AE7BC741BC0473F4CCDC37F6604AADCE2A11228DE9B044647A0B0D2C6A
-5AAF53D870A2B6674A9EBAF8A0990AEE11A5F1ED50C7F51B22373543A2F8420D
-225F4976AD7AA5DE2D543D2C360CE7352292879E2D4C3A41460ADF5F1BEFFB47
-5F80C39990201701E323BA2197CF0EA66F3C4898D63C311AD2802728066D8427
-F597D97E69A38E349A2E46AD1686CED2F3018A8DF8241D3935170114213FC8E0
-6239F121B43504D4BEEBAE34552EC3E439098620188D47DBF0E16A96FC172545
-30AA7112E4A3D55945CD21F86632004CE3A8332E612C7711175C350F18665073
-A3332AC5F547799A28148A4B76D9BB1F9CB3B90896B6B123B4757B8D305BB102
-DD9E3A6962D36AE8BCC9DFDE46787D8752EA2202A472738DAC63B595693CF045
-8665FFFC1874D51487686EB03559447A26166EDB513A3ECAC4C219EDA63296CB
-1AC78C3BB24B75A65B84F266525A44F152D7C5DD224F773594AEFFA09C551D30
-08C5E2DBBBE6406ECB74A41D66EFA0AA78C02D91E134ABDC31A1FF2D8B480AE6
-EE8AC22AEF76D5722A1489F6F03B0A6BEC57FB9C4E8DA62A066E9318C39BEBA3
-29835CE532B695CFF1CFB5C95BF3C5DB7A6F3276FCB7F08056197D91345D4929
-1CA2C12AC65AB118769E280DB6D612F04612312E4B7E598D09CF158CA0398D9F
-D5747C67A5B7526A43D934A22EDC2AFCB0AD56C8D3662A1C296B265766213BC4
-5D23160843DF2660245E7F5ADBCFF1AF3DEFFE6F2A0909D84ECDCB789A3AA0B8
-FD2E8E12A1132B5136F4E58DF40497266F8EE599BF39C949D062B49478B77D62
-D43C0FA30318E098F625E51948CA0609860DD8E511767795C3B8C748FE3091A6
-86CDDC5F5E30044A04126D5569B8059078B63500C2C7DA58089BBF6CC5DEF008
-B87387FED4ED821DA98A7B5E14677FECF11DD3C249501401FD1D2F8E9AFAC453
-F07A3EBA6A74B6027D0395C212F8756B67B9738962E9847F76EA4119CD1FA20A
-236868371E56412979A58E5C699A72D7355A5BBD98827DEAB84F38248CB33879
-D2548950E74C10D717D9A37F80690D80E9BE0DE440307DA795E9D2DD54F38C83
-48ACFF28572C98D56B675CCBE8E2141DE16C1606427F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 55387786 39139632 1000 600 600 (pt-br-refcard.dvi)
-@start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 134[35
-3[38 24 29 30 1[36 36 40 58 18 2[22 36 33 1[33 36 33
-33 36 51[26 45[{}19 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
-49.8132 /CMSY6 rf /Fd 134[32 1[43 32 34 24 24 24 1[34
-30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 11[45 1[34
-2[41 1[45 54 3[22 1[47 39 41 1[43 42 45 9[30 30 30 1[30
-30 30 30 1[18 21 18 44[{}44 49.8132 /CMR6 rf /Fe 129[41
-5[43 1[43 45 32 32 34 1[45 41 45 68 23 2[23 45 41 25
-37 45 36 45 40 72[36 4[41 2[23 3[45 47 11[{}26 66.4176
-/CMBX8 rf /Ff 130[35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 3[35 2[35 35 35 1[35 2[35 35 4[35 35 35
-35 35 35 35 35 35 35 1[35 1[35 4[35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 1[35 35 35 35 35 33[{}74 66.4176
-/CMTT8 rf /Fg 129[57 3[51 1[60 1[60 64 45 45 47 60 64
-57 64 95 32 1[35 32 64 57 35 53 64 51 64 56 2[57 7[87
-1[80 64 86 1[78 86 1[109 69 1[59 43 90 1[72 75 1[83 81
-87 18[32 38 3[45 45 15[51 4[57 6[64 67 11[{}49 99.6264
-/CMBX10 rf /Fh 129[35 3[31 1[37 1[37 39 27 28 28 37 39
-35 39 59 20 1[22 20 39 35 22 31 39 31 39 35 2[35 1[35
-6[53 51 39 52 55 48 55 53 65 44 2[25 1[55 46 48 54 2[53
-6[20 7[35 2[35 20 24 20 2[27 27 5[35 9[31 4[35 2[20 3[39
-41 11[{}56 66.4176 /CMR8 rf /Fi 129[69 9[53 54 57 2[69
-76 115 3[38 2[42 63 76 61 1[67 2[69 8[106 2[103 3[108
-6[108 1[90 1[99 8[38 58[{}21 119.552 /CMBX10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- @landscape end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin @landscape 1 0 bop -555 -364 a Fi(GNU)45
-b(Emacs:)62 b(Cart)o(~)-68 b(ao)45 b(de)i(Refer)m(^)-66
-b(encia)259 -266 y Fh(\(para)24 b(v)n(ers~)-35 b(ao)24
-b(22\))-450 -59 y Fg(Iniciando)37 b(o)i(Emacs)-450 97
-y Fh(P)n(ara)24 b(en)n(trar)f(no)i(GNU)e(Emacs,)h(digite:)31
-b Ff(emacs)-450 300 y Fg(Saindo)37 b(do)h(Emacs)-450
-455 y Fh(susp)r(ende)25 b(ou)f(minimiza)f(o)g(Emacs)476
-b Ff(C-z)-450 525 y Fh(encerra)24 b(o)g(Emacs)933 b Ff(C-x)36
-b(C-c)-450 709 y Fg(Arquiv)m(os)-450 865 y Fe(abre)23
-b Fh(um)h(arquiv)n(o)910 b Ff(C-x)36 b(C-f)-450 934 y
-Fe(salv)-5 b(a)23 b Fh(um)g(arquiv)n(o)h(em)g(disco)603
-b Ff(C-x)36 b(C-s)-450 1004 y Fh(salv)l(a)24 b Fe(to)r(dos)f
-Fh(arquiv)n(os)h(ab)r(ertos)543 b Ff(C-x)36 b(s)-450
-1074 y Fe(insere)24 b Fh(outro)g(arquiv)n(o)g(neste)g(bu\013er)409
-b Ff(C-x)36 b(i)-450 1144 y Fh(substitui)24 b(este)g(arquiv)n(o)g(p)r
-(or)g(outro)463 b Ff(C-x)36 b(C-v)-450 1213 y Fh(salv)l(a)24
-b(o)g(bu\013er)g(em)f(um)h(arquiv)n(o)g(esp)r(eci\014cado)155
-b Ff(C-x)36 b(C-w)-450 1283 y Fh(alterna)22 b(o)g(estado)g(de)g(somen)n
-(te)h(leitura)e(do)h(bu\013er)71 b Ff(C-x)36 b(C-q)-450
-1494 y Fg(Ajuda)h(\(Help\))-450 1661 y Fh(T)-6 b(ecle)24
-b Ff(C-h)h Fh(\(ou)f Ff(F1)p Fh(\))h(e)f(siga)f(as)h(instru\030)-31
-b(c~)c(oes.)-450 1759 y(remo)n(v)n(e)24 b(a)g(janela)g(de)g(a)t(juda)
-666 b Ff(C-x)36 b(1)-450 1829 y Fh(rola)23 b(a)h(janela)g(de)g(a)t
-(juda)766 b Ff(C-M-v)-450 1927 y Fh(aprop)r(os:)30 b(mostra)22
-b(comandos)g(que)h(casam)e(com)h(a)-450 1997 y(string)990
-1927 y Ff(C-h)36 b(a)-450 2063 y Fh(descrev)n(e)25 b(fun\030)-31
-b(c~)c(ao)24 b(asso)r(ciada)h(a)f(teclas)392 b Ff(C-h)36
-b(k)-450 2132 y Fh(descrev)n(e)25 b(uma)f(fun\030)-31
-b(c~)c(ao)803 b Ff(C-h)36 b(f)-450 2202 y Fh(busca)24
-b(informa\030)-31 b(c~)c(oes)24 b(esp)r(ec)-8 b(\023)-27
-b(\020\014cas)25 b(do)f(mo)r(do)249 b Ff(C-h)36 b(m)-450
-2405 y Fg(Recup)s(erando-se)g(de)h(Erros)-450 2561 y
-Fe(ab)r(orta)22 b Fh(uma)i(op)r(era\030)-31 b(c~)c(ao)756
-b Ff(C-g)-450 2631 y Fe(recup)r(era)24 b Fh(arquiv)n(os)f(ap\023)-35
-b(os)25 b(crash)313 b Ff(M-x)36 b(recover-session)-450
-2700 y Fh(desfaz)24 b(uma)g(altera\030)-31 b(c~)c(ao)25
-b(\()p Fe(undo)p Fh(\))400 b Ff(C-x)36 b(u,)g(C-_)g Fh(or)f
-Ff(C-/)-450 2770 y Fh(restaura)24 b(um)f(bu\013er)h(para)g(o)g(arquiv)n
-(o)252 b Ff(M-x)36 b(revert-buffer)-450 2840 y Fh(redesenha)25
-b(a)f(tela)942 b Ff(C-l)-450 3024 y Fg(Busca)38 b(Incremen)m(tal)-450
-3179 y Fh(busca)24 b(para)g(fren)n(te)907 b Ff(C-s)-450
-3249 y Fh(busca)24 b(para)g(tr\023)-35 b(as)965 b Ff(C-r)-450
-3319 y Fh(busca)24 b(p)r(or)g(express~)-35 b(ao)24 b(regular)584
-b Ff(C-M-s)-450 3389 y Fh(busca)24 b(p)r(or)g(express~)-35
-b(ao)24 b(regular)g(para)f(tr\023)-35 b(as)282 b Ff(C-M-r)-450
-3487 y Fh(seleciona)24 b(a)g(string)g(de)g(p)r(esquisa)g(an)n(terior)
-268 b Ff(M-p)-450 3557 y Fh(seleciona)24 b(a)g(string)g(seguin)n(te)h
-(de)f(p)r(esquisa)260 b Ff(M-n)-450 3626 y Fh(sai)23
-b(da)h(busca)h(incremen)n(tal)681 b Ff(RET)-450 3696
-y Fh(desfaz)24 b(o)g(efeito)g(do)i(\023)-37 b(ultimo)24
-b(caracter)413 b Ff(DEL)-450 3766 y Fh(encerra)24 b(a)g(busca)962
-b Ff(C-g)-450 3864 y Fh(Use)28 b Ff(C-s)g Fh(ou)h Ff(C-r)f
-Fh(no)n(v)l(amen)n(te)i(para)f(rep)r(etir)e(a)h(busca.)45
-b Ff(C-g)29 b Fh(cancela)-450 3934 y(ap)r(enas)c(o)e(que)i(ainda)f(n~)
--35 b(ao)24 b(foi)f(feito.)-358 4131 y Fd(c)-375 4133
-y Fc(\015)e Fd(2007)h(F)-5 b(ree)22 b(Soft)n(w)n(are)g(F)-5
-b(oundation,)20 b(Inc.)27 b(P)n(ermissions)21 b(on)g(bac)n(k.)28
-b(v2.3)1860 -364 y Fg(Mo)m(vimen)m(ta\030)-51 b(c)o(~)-56
-b(ao)1860 -208 y Fe(a)n(v)-5 b(an\030)-36 b(car)1124
-b(tr)o(\023)-40 b(as)109 b(fren)n(te)1860 -139 y Fh(um)24
-b(caracter)1027 b Ff(C-b)142 b(C-f)1860 -69 y Fh(uma)24
-b(pala)n(vra)1011 b Ff(M-b)142 b(M-f)1860 1 y Fh(uma)24
-b(linha)1085 b Ff(C-p)142 b(C-n)1860 71 y Fh(para)24
-b(in)-8 b(\023)-27 b(\020cio)23 b(ou)h(\014m)g(de)g(linha)579
-b Ff(C-a)142 b(C-e)1860 140 y Fh(sen)n(ten\030)-31 b(ca)1136
-b Ff(M-a)142 b(M-e)1860 210 y Fh(par\023)-35 b(agrafo)1103
-b Ff(M-{)142 b(M-})1860 280 y Fh(p\023)-35 b(agina)1192
-b Ff(C-x)36 b([)71 b(C-x)36 b(])1860 349 y Fh(sexp)1260
-b Ff(C-M-b)72 b(C-M-f)1860 419 y Fh(fun\030)-31 b(c~)c(ao)1194
-b Ff(C-M-a)72 b(C-M-e)1860 489 y Fh(para)24 b(in)-8 b(\023)-27
-b(\020cio)23 b(ou)h(\014m)g(do)g(bu\013er)550 b Ff(M-<)142
-b(M->)1860 587 y Fh(rolar)23 b(para)g(pr\023)-35 b(oxima)24
-b(tela)721 b Ff(C-v)1860 657 y Fh(rolar)23 b(para)g(tela)i(an)n(terior)
-732 b Ff(M-v)1860 727 y Fh(rolar)23 b(para)g(esquerda)843
-b Ff(C-x)36 b(<)1860 796 y Fh(rolar)23 b(para)g(direita)911
-b Ff(C-x)36 b(>)1860 866 y Fh(rolar)23 b(a)h(linha)f(corren)n(te)i
-(para)e(o)h(cen)n(tro)h(da)f(tela)119 b Ff(C-u)36 b(C-l)1860
-1069 y Fg(Cortando)h(e)h(Apagando)1860 1225 y Fe(en)n(tidade)27
-b(a)f(cortar)642 b(tr)o(\023)-40 b(as)250 b(fren)n(te)1860
-1295 y Fh(caracter)25 b(\(apaga,)g(n~)-35 b(ao)24 b(corta\))416
-b Ff(DEL)283 b(C-d)1860 1364 y Fh(pala)n(vra)1027 b Ff(M-DEL)213
-b(M-d)1860 1434 y Fh(linha)23 b(\(at)n(\023)-33 b(e)25
-b(o)f(\014nal\))714 b Ff(M-0)36 b(C-k)142 b(C-k)1860
-1504 y Fh(sen)n(ten\030)-31 b(ca)995 b Ff(C-x)36 b(DEL)142
-b(M-k)1860 1574 y Fh(sexp)1119 b Ff(M--)36 b(C-M-k)72
-b(C-M-k)1860 1672 y Fh(corta)24 b Fe(regi)o(~)-40 b(ao)1044
-b Ff(C-w)1860 1742 y Fh(copia)24 b(a)g Fe(regi)o(~)-40
-b(ao)981 b Ff(M-w)1860 1811 y Fh(cortar)24 b(at)n(\023)-33
-b(e)25 b(a)e(pr\023)-35 b(oxima)24 b(o)r(corr)n(^)-33
-b(encia)24 b(de)g Fb(char)211 b Ff(M-z)36 b Fb(char)1860
-1910 y Fh(colar)24 b(a)h(\023)-37 b(ultima)24 b(coisa)g(cortada)582
-b Ff(C-y)1860 1979 y Fh(substitui)24 b(a)i(\023)-37 b(ult.)31
-b(colagem)24 b(p)r(ela)g(c\023)-35 b(opia)25 b(an)n(terior)106
-b Ff(M-y)1860 2184 y Fg(Marcando)1860 2340 y Fh(p)r(osiciona)24
-b(a)g(marca)g(aqui)730 b Ff(C-@)36 b Fh(or)f Ff(C-SPC)1860
-2410 y Fh(tro)r(ca)24 b(a)g(marca)g(p)r(elo)g(p)r(on)n(to)h(e)f(vice-v)
-n(ersa)281 b Ff(C-x)36 b(C-x)1860 2508 y Fh(colo)r(ca)25
-b(a)e(marca)h Fb(ar)l(g)30 b Fe(pala)n(vras)22 b Fh(adian)n(te)290
-b Ff(M-@)1860 2578 y Fh(marca)24 b(o)g Fe(par)o(\023)-40
-b(agrafo)829 b Ff(M-h)1860 2647 y Fh(marca)24 b(a)g Fe(p)o(\023)-40
-b(agina)935 b Ff(C-x)36 b(C-p)1860 2717 y Fh(marca)24
-b(a)g Fe(sexp)1012 b Ff(C-M-@)1860 2787 y Fh(marca)24
-b(uma)g Fe(fun\030)-36 b(c)o(~)c(ao)839 b Ff(C-M-h)1860
-2857 y Fh(marca)24 b(to)r(do)g Fe(bu\013er)858 b Ff(C-x)36
-b(h)1860 3041 y Fg(Busca)i(e)g(Substitui\030)-51 b(c)o(~)-56
-b(ao)1860 3196 y Fh(Substitui)24 b(in)n(terativ)l(amen)n(te)i(uma)e
-(string)300 b Ff(M-\045)1860 3266 y Fh(usando)25 b(express~)-35
-b(ao)24 b(regular)301 b Ff(M-x)36 b(query-replace-regexp)1860
-3364 y Fh(Resp)r(ostas)24 b(v\023)-35 b(alidas)24 b(no)g(mo)r(do)g(de)g
-(busca)h(e)f(substitui\030)-31 b(c~)c(ao)1860 3463 y
-Fe(substitui)23 b Fh(esta,)h(e)g(prossegue)594 b Ff(SPC)1860
-3533 y Fh(substitui)24 b(esta)g(e)g(en)n(trada)h(e)f(n~)-35
-b(ao)24 b(a)n(v)l(an\030)-31 b(ca)298 b Ff(,)1860 3602
-y Fe(pula)23 b Fh(para)h(a)g(pr\023)-35 b(oxima)23 b(sem)h(substituir)
-331 b Ff(DEL)1860 3672 y Fh(substitui)24 b(em)g(to)r(do)g(o)g(texto)h
-(restan)n(te)388 b Ff(!)1860 3742 y Fe(v)n(olta)22 b
-Fh(para)h(a)h(pala)n(vra)g(an)n(terior)530 b Ff(^)1860
-3811 y Fe(encerra)1177 b Ff(RET)1860 3881 y Fh(en)n(tra)24
-b(na)g(edi\030)-31 b(c~)c(ao)25 b(recursiv)l(a)f(\()p
-Ff(C-M-c)h Fh(para)f(sair\))121 b Ff(C-r)4241 -364 y
-Fg(M)s(\023)-60 b(ultiplas)36 b(Janelas)4241 -223 y Fh(Quando)23
-b(forem)e(mostrados)i(2)g(comandos,)g(o)f(segundo)i(tem)f(comp)r(or-)
-4241 -153 y(tamen)n(to)i(similar)d(para)i(frame.)4241
--59 y(elimina)f(to)r(das)h(outras)g(janelas)351 b Ff(C-x)36
-b(1)212 b(C-x)36 b(5)g(1)4241 11 y Fh(divide)23 b(a)h(janela,)g(acima)f
-(e)h(abaixo)261 b Ff(C-x)36 b(2)212 b(C-x)36 b(5)g(2)4241
-81 y Fh(elimina)23 b(esta)h(janela)640 b Ff(C-x)36 b(0)212
-b(C-x)36 b(5)g(0)4241 175 y Fh(divide)23 b(a)h(janela,)g(lado)f(a)h
-(lado)606 b Ff(C-x)36 b(3)4241 270 y Fh(rola)23 b(a)h(outra)g(janela)
-870 b Ff(C-M-v)4241 365 y Fh(lev)l(a)24 b(o)f(cursor)h(para)f(outra)i
-(janela)269 b Ff(C-x)36 b(o)212 b(C-x)36 b(5)g(o)4241
-434 y Fh(seleciona)24 b(um)g(bu\013er)f(em)h(outra)g(janela)113
-b Ff(C-x)36 b(4)g(b)141 b(C-x)36 b(5)g(b)4241 504 y Fh(mostra)23
-b(um)h(bu\013er)g(em)f(outra)i(janela)171 b Ff(C-x)36
-b(4)g(C-o)71 b(C-x)36 b(5)g(C-o)4241 574 y Fh(busca)24
-b(um)g(arquiv)n(o)f(em)h(outra)g(janela)160 b Ff(C-x)36
-b(4)g(f)141 b(C-x)36 b(5)g(f)4241 644 y Fh(busca)24 b(arquiv)n(o)g
-(\(ro\))g(em)g(outra)g(janela)140 b Ff(C-x)36 b(4)g(r)141
-b(C-x)36 b(5)g(r)4241 713 y Fh(executa)25 b(Dired)e(em)h(outra)g
-(janela)279 b Ff(C-x)36 b(4)g(d)141 b(C-x)36 b(5)g(d)4241
-783 y Fh(busca)24 b(tag)h(em)e(outra)h(janela)413 b Ff(C-x)36
-b(4)g(.)141 b(C-x)36 b(5)g(.)4241 878 y Fh(aumen)n(ta)25
-b(a)f(janela)f(na)h(v)n(ertical)563 b Ff(C-x)36 b(^)4241
-948 y Fh(estreita)24 b(a)g(janela)948 b Ff(C-x)36 b({)4241
-1017 y Fh(alarga)23 b(a)h(janela)988 b Ff(C-x)36 b(})4241
-1202 y Fg(F)-10 b(ormatando)4241 1343 y Fh(iden)n(ta)24
-b(a)g Fe(linha)f Fh(corren)n(te)h(\(mo)r(do\))473 b Ff(TAB)4241
-1413 y Fh(iden)n(ta)24 b(a)g Fe(regi)o(~)-40 b(ao)22
-b Fh(\(mo)r(do\))706 b Ff(C-M-\\)4241 1482 y Fh(iden)n(ta)24
-b(a)g Fe(sexp)g Fh(\(mo)r(do\))763 b Ff(C-M-q)4241 1552
-y Fh(iden)n(ta)24 b(regi~)-35 b(ao)24 b(rigidamen)n(te)g
-Fb(ar)l(g)30 b Fh(colunas)281 b Ff(C-x)36 b(TAB)4241
-1647 y Fh(insere)23 b(uma)h(no)n(v)l(a)g(linha)g(ap\023)-35
-b(os)24 b(o)g(p)r(on)n(to)347 b Ff(C-o)4241 1717 y Fh(mo)n(v)n(e)24
-b(o)g(restan)n(te)h(da)f(linha)f(para)h(baixo)329 b Ff(C-M-o)4241
-1786 y Fh(apaga)24 b(linhas)g(em)f(branco)i(em)e(torno)i(do)f(p)r(on)n
-(to)112 b Ff(C-x)36 b(C-o)4241 1856 y Fh(jun)n(ta)24
-b(a)g(linha)f(com)h(a)g(an)n(terior)572 b Ff(M-^)4241
-1926 y Fh(apaga)24 b(to)r(dos)h(brancos)f(em)g(torno)g(do)g(p)r(on)n
-(to)212 b Ff(M-\\)4241 1995 y Fh(insere)23 b(um)g(espa\030)-31
-b(co)25 b(em)f(branco)574 b Ff(M-SPC)4241 2090 y Fh(preenc)n(he)25
-b(o)f(par\023)-35 b(agrafo)797 b Ff(M-q)4241 2160 y Fh(de\014ne)24
-b(a)g(coluna)h(limite)e(de)h(preenc)n(himen)n(to)215
-b Ff(C-x)36 b(f)4241 2230 y Fh(de\014ne)24 b(um)g(pre\014xo)g(para)g
-(cada)h(linha)403 b Ff(C-x)36 b(.)4241 2324 y Fh(formata)23
-b(fon)n(te)1024 b Ff(M-o)4241 2490 y Fg(Mai)s(\023)-60
-b(usculas)36 b(e)i(Min)s(\023)-60 b(usculas)4241 2631
-y Fh(P)n(ala)n(vra)23 b(para)h(mai)r(\023)-37 b(usculas)688
-b Ff(M-u)4241 2701 y Fh(P)n(ala)n(vra)23 b(para)h(min)r(\023)-37
-b(usculas)684 b Ff(M-l)4241 2770 y Fh(Primeira)22 b(letra)h(mai)r(\023)
--37 b(uscula)24 b(\(capitalize\))312 b Ff(M-c)4241 2865
-y Fh(Regi~)-35 b(ao)24 b(para)g(mai)r(\023)-37 b(usculas)713
-b Ff(C-x)36 b(C-u)4241 2935 y Fh(Regi~)-35 b(ao)24 b(para)g(min)r(\023)
--37 b(usculas)709 b Ff(C-x)36 b(C-l)4241 3120 y Fg(O)i(Minibu\013er)
-4241 3260 y Fh(As)23 b(teclas)h(seguin)n(tes)h(s~)-35
-b(ao)24 b(de\014nidas)g(no)g(minibu\013er.)4241 3355
-y(complete)h(o)e(m\023)-35 b(aximo)24 b(p)r(ossi)-8 b(\023)-27
-b(\020v)n(el)557 b Ff(TAB)4241 3425 y Fh(complete)25
-b(at)n(\023)-33 b(e)24 b(uma)g(pala)n(vra)641 b Ff(SPC)4241
-3494 y Fh(complete)25 b(e)e(execute)861 b Ff(RET)4241
-3564 y Fh(mostre)23 b(as)h(op\030)-31 b(c~)c(oes)25 b(para)f(completar)
-432 b Ff(?)4241 3634 y Fh(busca)24 b(a)g(en)n(trada)h(an)n(terior)e(no)
-h(minibu\013er)250 b Ff(M-p)4241 3704 y Fh(busca)25 b(a)h(pr\023)-35
-b(oxima)25 b(en)n(trada)h(no)g(minibu\013er)e(ou)i(o)4241
-3773 y(default)5681 3704 y Ff(M-n)4241 3826 y Fh(busca)e(regexp)g(no)g
-(hist\023)-35 b(orico)24 b(para)g(tr\023)-35 b(as)355
-b Ff(M-r)4241 3896 y Fh(busca)24 b(regexp)g(no)g(hist\023)-35
-b(orico)24 b(para)g(fren)n(te)297 b Ff(M-s)4241 3966
-y Fh(encerra)24 b(o)f(comando)862 b Ff(C-g)4241 4060
-y Fh(T)-6 b(ecle)22 b Ff(C-x)37 b(ESC)f(ESC)23 b Fh(para)f(editar)g(e)h
-(rep)r(etir)f(o)i(\023)-37 b(ultimo)22 b(comando)i(uti-)4241
-4130 y(lizado.)31 b(T)-6 b(ecle)24 b Ff(F10)h Fh(para)e(ativ)l(ar)h(o)g
-(men)n(u.)p eop end
-%%Page: 2 2
-TeXDict begin @landscape 2 1 bop -555 -364 a Fi(GNU)45
-b(Emacs:)62 b(Cart)o(~)-68 b(ao)45 b(de)i(Refer)m(^)-66
-b(encia)259 -266 y Fh(\(para)24 b(v)n(ers~)-35 b(ao)24
-b(22\))-450 -59 y Fg(Bu\013ers)-450 97 y Fh(seleciona)g(outro)h
-(bu\013er)779 b Ff(C-x)36 b(b)-450 166 y Fh(lista)23
-b(to)r(dos)i(bu\013ers)890 b Ff(C-x)36 b(C-b)-450 236
-y Fh(mata)24 b(um)g(bu\013er)960 b Ff(C-x)36 b(k)-450
-420 y Fg(T)-10 b(ransp)s(osi\030)-51 b(c)o(~)-56 b(ao)-450
-576 y Fh(transp~)-35 b(oe)25 b Fe(caracteres)795 b Ff(C-t)-450
-646 y Fh(transp~)-35 b(oe)25 b Fe(pala)n(vras)858 b Ff(M-t)-450
-715 y Fh(transp~)-35 b(oe)25 b Fe(linhas)945 b Ff(C-x)36
-b(C-t)-450 785 y Fh(transp~)-35 b(oe)25 b Fe(sexps)964
-b Ff(C-M-t)-450 988 y Fg(V)-10 b(eri\014ca\030)-51 b(c)o(~)-56
-b(ao)37 b(Ortogr)o(\023)-56 b(a\014ca)-450 1144 y Fh(v)n(eri\014ca)24
-b(a)g(pala)n(vra)g(corren)n(te)639 b Ff(M-$)-450 1213
-y Fh(v)n(eri\014ca)24 b(to)r(das)h(pala)n(vras)e(de)i(uma)e(regi~)-35
-b(ao)152 b Ff(M-x)36 b(ispell-region)-450 1283 y Fh(v)n(eri\014ca)24
-b(to)r(do)h(o)f(bu\013er)656 b Ff(M-x)36 b(ispell-buffer)-450
-1487 y Fg(T)-10 b(ags)-450 1643 y Fh(busca)24 b(uma)g(tag)h(\(uma)f
-(de\014ni\030)-31 b(c~)c(ao\))485 b Ff(M-.)-450 1713
-y Fh(encon)n(tra)25 b(a)f(pr\023)-35 b(oxima)23 b(o)r(corr)n(^)-33
-b(encia)25 b(da)f(tag)282 b Ff(C-u)36 b(M-.)-450 1782
-y Fh(esp)r(eci\014ca)25 b(um)f(no)n(v)n(o)g(arquiv)n(o)g(de)g(tags)142
-b Ff(M-x)36 b(visit-tags-table)-450 1881 y Fh(busca)24
-b(p)r(or)g(regexp)g(em)g(to)r(dos)h(arquiv)n(os)188 b
-Ff(M-x)36 b(tags-search)-450 1950 y Fh(busca)24 b(e)g(subst.)32
-b(em)23 b(to)r(dos)i(arquiv)n(os)119 b Ff(M-x)36 b(tags-query-replace)
--450 2020 y Fh(con)n(tin)n(ua)c(a)h(\023)-37 b(ultima)31
-b(busca)h(ou)f(busca)h(e)f(substi-)-450 2090 y(tui\030)-31
-b(c~)c(ao)990 2020 y Ff(M-,)-450 2291 y Fg(Shells)-450
-2447 y Fh(executa)26 b(um)d(comando)i(do)f(shell)528
-b Ff(M-!)-450 2517 y Fh(executa)26 b(um)d(comando)i(do)f(shell)f(na)h
-(regi~)-35 b(ao)223 b Ff(M-|)-450 2586 y Fh(\014ltra)24
-b(uma)f(regi~)-35 b(ao)24 b(p)r(or)g(um)f(comando)i(do)f(shell)120
-b Ff(C-u)36 b(M-|)-450 2656 y Fh(inicia)23 b(um)h(shell)f(na)h(janela)g
-Ff(*shell*)420 b(M-x)36 b(shell)-450 2859 y Fg(Ret)o(^)-56
-b(angulos)-450 3015 y Fh(copia)24 b(o)g(ret^)-35 b(angulo)25
-b(para)f(o)f(registrador)330 b Ff(C-x)36 b(r)g(r)-450
-3085 y Fh(corta)24 b(o)g(ret^)-35 b(angulo)912 b Ff(C-x)36
-b(r)g(k)-450 3154 y Fh(cola)24 b(o)g(ret^)-35 b(angulo)947
-b Ff(C-x)36 b(r)g(y)-450 3224 y Fh(abre)24 b(o)g(ret^)-35
-b(angulo,)24 b(mo)n(v)n(e)g(o)g(texto)h(para)f(direita)107
-b Ff(C-x)36 b(r)g(o)-450 3294 y Fh(tro)r(ca)24 b(p)r(or)g(espa\030)-31
-b(cos)25 b(o)e(con)n(te)r(\023)-37 b(udo)26 b(do)e(ret^)-35
-b(angulo)133 b Ff(C-x)36 b(r)g(c)-450 3363 y Fh(an)n(tep~)-35
-b(oe)26 b(uma)e(linha)f(a)h(string)610 b Ff(C-x)36 b(r)g(t)-450
-3567 y Fg(Abreviaturas)-450 3722 y Fh(adiciona)24 b(uma)g(abreviatura)h
-(global)442 b Ff(C-x)36 b(a)g(g)-450 3792 y Fh(adiciona)24
-b(abreviatura)h(ao)f(mo)r(do)g(lo)r(cal)352 b Ff(C-x)36
-b(a)g(l)-450 3862 y Fh(adiciona)24 b(globalmen)n(te)h(expans~)-35
-b(ao)26 b(de)e(abrev.)179 b Ff(C-x)36 b(a)g(i)f(g)-450
-3931 y Fh(adiciona)24 b(lo)r(calmen)n(te)h(expans~)-35
-b(ao)25 b(de)g(abrev.)220 b Ff(C-x)36 b(a)g(i)f(l)-450
-4001 y Fh(explicitamen)n(te)25 b(expande)h(uma)e(abrev)366
-b Ff(C-x)36 b(a)g(e)-450 4099 y Fh(completa)25 b(com)f(base)g(em)g
-(pala)n(vras)g(an)n(teriores)139 b Ff(M-/)1860 -364 y
-Fg(Express~)-57 b(oes)39 b(Regulares)1860 -208 y Fh(qualquer)24
-b(caracter)h(exceto)g(no)n(v)l(a)g(linha)344 b Ff(.)71
-b Fh(\(dot\))1860 -139 y(zero)24 b(ou)g(mais)f(rep)r(eti\030)-31
-b(c~)c(oes)725 b Ff(*)1860 -69 y Fh(uma)24 b(ou)g(mais)f(rep)r(eti\030)
--31 b(c~)c(oes)717 b Ff(+)1860 1 y Fh(zero)24 b(ou)g(uma)g(rep)r
-(eti\030)-31 b(c~)c(ao)757 b Ff(?)1860 71 y Fh(protege)25
-b(o)f(caracter)g(esp)r(ecial)h Fb(c)565 b Ff(\\)p Fb(c)1860
-140 y Fh(\(\\or"\))1253 b Ff(\\|)1860 210 y Fh(agrupamen)n(to)1040
-b Ff(\\\()36 b Fa(:)11 b(:)h(:)34 b Ff(\\\))1860 280
-y Fh(mesmo)24 b(texto)h(que)f Fb(n)5 b Fh(-)n(\023)-33
-b(esimo)24 b(grup)r(o)447 b Ff(\\)p Fb(n)1860 349 y Fh(quebra)24
-b(de)g(pala)n(vra)886 b Ff(\\b)1860 419 y Fh(sem)24 b(quebra)g(de)g
-(pala)n(vra)744 b Ff(\\B)1860 518 y Fe(en)n(tidade)707
-b(casa)26 b(in)-9 b(\023)-32 b(\020cio)70 b(casa)26 b(\014m)1860
-587 y Fh(linha)856 b Ff(^)400 b($)1860 657 y Fh(pala)n(vra)782
-b Ff(\\<)365 b(\\>)1860 727 y Fh(bu\013er)831 b Ff(\\`)365
-b(\\')1860 796 y Fe(classe)27 b(de)g(caracteres)315 b(casa)26
-b(esses)91 b(casa)26 b(os)h(outros)1860 866 y Fh(conjun)n(to)e(expl)-8
-b(\023)-27 b(\020cito)459 b Ff([)35 b Fa(:)12 b(:)f(:)35
-b Ff(])212 b([^)36 b Fa(:)11 b(:)g(:)35 b Ff(])1860 936
-y Fh(caracter)25 b(de)f(sin)n(taxe)g(de)g(pala)n(vra)84
-b Ff(\\w)365 b(\\W)1860 1006 y Fh(caracter)25 b(de)f(sin)n(taxe)g(de)g
-Fb(c)278 b Ff(\\s)p Fb(c)332 b Ff(\\S)p Fb(c)1860 1201
-y Fg(Conjun)m(tos)37 b(de)g(Carac.)50 b(In)m(ternacionais)1860
-1357 y Fh(esp)r(eci\014ca)25 b(uma)f(l)-8 b(\023)-27
-b(\020ngua)24 b(principal)488 b Ff(C-x)36 b(RET)g(l)1860
-1427 y Fh(mostra)24 b(to)r(dos)g(m)n(\023)-33 b(eto)r(dos)25
-b(de)f(inser\030)-31 b(c~)c(ao)96 b Ff(M-x)36 b(list-input-methods)1860
-1496 y Fh(habilita/desabilita)24 b(um)g(m)n(\023)-33
-b(eto)r(do)25 b(de)f(inser\030)-31 b(c~)c(ao)136 b Ff(C-\\)1860
-1566 y Fh(determina)24 b(o)g(sistema)g(de)g(co)r(di\014ca\030)-31
-b(c~)c(ao)369 b Ff(C-x)36 b(RET)g(c)1860 1636 y Fh(mostra)24
-b(sistemas)f(de)h(co)r(di\014ca\030)-31 b(c~)c(ao)166
-b Ff(M-x)37 b(list-coding-systems)1860 1706 y Fh(escolhe)25
-b(a)e(co)r(di\014ca\030)-31 b(c~)c(ao)26 b(preferida)143
-b Ff(M-x)36 b(prefer-coding-system)1860 1911 y Fg(Info)1860
-2066 y Fh(en)n(tra)24 b(no)g(leitor)g(de)g(Info)760 b
-Ff(C-h)36 b(i)1860 2136 y Fh(busca)24 b(fun\030)-31 b(c~)c(ao)25
-b(ou)f(arquiv)n(o)g(no)g(Info)448 b Ff(C-h)36 b(S)1860
-2234 y Fh(Mo)n(vimen)n(ta\030)-31 b(c~)c(ao)25 b(em)f(um)g(no)r(do:)
-1931 2333 y(rola)f(para)h(fren)n(te)891 b Ff(SPC)1931
-2402 y Fh(rola)23 b(para)h(tr\023)-35 b(as)949 b Ff(DEL)1931
-2472 y Fh(in)-8 b(\023)-27 b(\020cio)23 b(do)h(no)r(do)933
-b Ff(.)71 b Fh(\(dot\))1860 2570 y(Mo)n(vimen)n(ta\030)-31
-b(c~)c(ao)25 b(en)n(tre)g(no)r(dos:)1931 2669 y Fe(pr\023)-41
-b(oximo)22 b Fh(no)r(do)902 b Ff(n)1931 2738 y Fh(no)r(do)24
-b Fe(an)n(terior)911 b Ff(p)1931 2808 y Fh(mo)n(v)n(er)23
-b(cima)h Fe(cima)824 b Ff(u)1931 2878 y Fh(seleciona)24
-b(item)g(do)g(men)n(u)g(p)r(elo)g(nome)311 b Ff(m)1931
-2948 y Fh(seleciona)24 b Fb(n)5 b Fh(-)n(\023)-33 b(esimo)23
-b(item)h(do)g(men)n(u)385 b Fb(n)1931 3017 y Fh(segue)24
-b(refer)n(^)-33 b(encia)24 b(cruzada)h(\(retorna)f(com)g
-Ff(l)p Fh(\))113 b Ff(f)1931 3087 y Fh(retorna)26 b(\023)-37
-b(ultimo)23 b(no)r(do)i(visitado)483 b Ff(l)1931 3157
-y Fh(retorna)24 b(ao)g(diret\023)-35 b(orio)23 b(de)h(no)r(dos)470
-b Ff(d)1931 3227 y Fh(ir)22 b(para)i(o)g(top)r(o)h(do)f(arquiv)n(o)f
-(Info)445 b Ff(t)1931 3296 y Fh(ir)22 b(para)i(qualquer)g(no)r(do)h(p)r
-(or)e(nome)382 b Ff(g)1860 3395 y Fh(Outros:)1931 3493
-y(executar)25 b Fe(tutorial)c Fh(do)j(Info)575 b Ff(h)1931
-3563 y Fh(busca)24 b(p)r(elo)g(assun)n(to)h(no)16 b(\023)-27
-b(\020ndice)490 b Ff(i)1931 3633 y Fh(busca)24 b(p)r(or)f(express~)-35
-b(ao)25 b(regular)513 b Ff(s)1931 3702 y Fe(sair)22 b
-Fh(Info)1097 b Ff(q)4170 -364 y Fg(Registrador)4170 -208
-y Fh(salv)l(a)24 b(regi~)-35 b(ao)24 b(em)f(um)h(registrador)488
-b Ff(C-x)36 b(r)g(s)4170 -139 y Fh(insere)23 b(o)h(con)n(te)r(\023)-37
-b(udo)26 b(do)e(registrador)f(no)h(bu\013er)150 b Ff(C-x)36
-b(r)g(i)4170 -40 y Fh(salv)l(a)24 b(v)l(alor)f(do)h(p)r(on)n(to)h(no)f
-(registrador)361 b Ff(C-x)36 b(r)g(SPC)4170 29 y Fh(salta)24
-b(para)g(o)g(p)r(on)n(to)h(salv)n(o)e(no)h(registrador)243
-b Ff(C-x)36 b(r)g(j)4170 234 y Fg(Macros)i(de)g(T)-10
-b(eclado)4170 390 y Fe(inicia)22 b Fh(a)i(de\014ni\030)-31
-b(c~)c(ao)25 b(de)f(uma)g(macro)436 b Ff(C-x)36 b(\()4170
-460 y Fe(encerra)23 b Fh(a)h(de\014ni\030)-31 b(c~)c(ao)25
-b(de)f(uma)g(macro)362 b Ff(C-x)36 b(\))4170 529 y Fe(executa)24
-b Fh(a)h(\023)-37 b(ultima)24 b(macro)g(de\014nida)410
-b Ff(C-x)36 b(e)4170 599 y Fh(adiciona)24 b(a)i(\023)-37
-b(ultima)24 b(macro)f(de\014nida)426 b Ff(C-u)36 b(C-x)g(\()4170
-669 y Fh(nomeia)24 b(a)i(\023)-37 b(ultima)23 b(macro)h(de\014nida)129
-b Ff(M-x)37 b(name-last-kbd-macro)4170 739 y Fh(insere)23
-b(uma)h(de\014ni\030)-31 b(c~)c(ao)25 b(em)f(Lisp)318
-b Ff(M-x)36 b(insert-kbd-macro)4170 942 y Fg(Lidando)h(com)i(Emacs)f
-(Lisp)4170 1097 y Fh(a)n(v)l(alia)24 b Fe(sexp)g Fh(an)n(tes)h(do)f(p)r
-(on)n(to)603 b Ff(C-x)36 b(C-e)4170 1167 y Fh(a)n(v)l(alia)24
-b(a)g Fe(defun)g Fh(corren)n(te)712 b Ff(C-M-x)4170 1237
-y Fh(a)n(v)l(alia)24 b(a)g Fe(regi)o(~)-40 b(ao)824 b
-Ff(M-x)36 b(eval-region)4170 1306 y Fh(l)n(^)-33 b(e)23
-b(e)h(a)n(v)l(alia)g(o)g(minibu\013er)736 b Ff(M-:)4170
-1376 y Fh(carrega)24 b(do)g(diret\023)-35 b(orio)23 b(padr~)-35
-b(ao)25 b(do)f(sistema)106 b Ff(M-x)36 b(load-library)4170
-1581 y Fg(P)m(ersonaliza\030)-51 b(c)o(~)-56 b(ao)37
-b(Simples)4170 1737 y Fh(p)r(ersonaliza)24 b(v)l(ari\023)-35
-b(av)n(eis)24 b(e)g(fon)n(tes)408 b Ff(M-x)36 b(customize)4170
-1835 y Fh(F)-6 b(azendo)25 b(teclas)g(de)f(atalho)h(globais)e(em)h
-(Emacs)g(Lisp)f(\(exemplos\):)4170 1933 y Ff(\(global-set-key)40
-b("\\C-cg")d('goto-line\))4170 2003 y(\(global-set-key)j("\\M-#")d
-('query-replace-regexp\))4170 2208 y Fg(Escrev)m(endo)h(Comandos)4170
-2364 y Ff(\(defun)f Fb(c)l(ommand-name)43 b Ff(\()p Fb(ar)l(gs)5
-b Ff(\))4241 2433 y(")p Fb(do)l(cumentation)g Ff(")38
-b(\(interactive)g(")p Fb(template)5 b Ff("\))4241 2503
-y Fb(b)l(o)l(dy)h Ff(\))4170 2601 y Fh(Um)23 b(exemplo:)4170
-2700 y Ff(\(defun)37 b(this-line-to-top-of-win)q(dow)42
-b(\(line\))4241 2769 y("Reposition)c(line)e(point)h(is)f(on)g(to)g(top)
-g(of)g(window.)4170 2839 y(With)g(ARG,)h(put)f(point)h(on)f(line)g
-(ARG.")4241 2909 y(\(interactive)i("P"\))4241 2979 y(\(recenter)f(\(if)
-g(\(null)f(line\))4735 3048 y(0)4664 3118 y(\(prefix-numeric-value)41
-b(line\)\)\)\))4170 3216 y Fh(A)26 b(esp)r(eci\014ca\030)-31
-b(c~)c(ao)28 b Ff(interactive)h Fh(explica)e(como)f(ler)g(in)n(terativ)
-l(amen)n(te)4170 3286 y(argumen)n(tos.)32 b(T)-6 b(ecle)25
-b Ff(C-h)36 b(f)f(interactive)27 b Fh(para)d(mais)f(detalhes.)4463
-3550 y Fd(Cop)n(yrigh)n(t)4766 3548 y(c)4749 3550 y Fc(\015)e
-Fd(2007)h(F)-5 b(ree)22 b(Soft)n(w)n(are)h(F)-5 b(oundation,)20
-b(Inc.)4627 3606 y(v2.3)i(for)f(GNU)f(Emacs)h(v)n(ersion)h(22,)f(2006)
-4760 3661 y(designed)f(b)n(y)h(Stephen)f(Gildea)4170
-3746 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
-(distribute)f(copies)j(of)f(this)f(card)h(pro-)4170 3802
-y(vided)23 b(the)h(cop)n(yrigh)n(t)h(notice)g(and)f(this)f(p)r
-(ermission)h(notice)g(are)h(preserv)n(ed)g(on)4170 3857
-y(all)20 b(copies.)4170 3942 y(F)-5 b(or)21 b(copies)g(of)g(the)g(GNU)e
-(Emacs)i(man)n(ual,)f(write)h(to)g(the)f(F)-5 b(ree)22
-b(Soft)n(w)n(are)g(F)-5 b(oun-)4170 3998 y(dation,)29
-b(Inc.,)g(51)g(F)-5 b(ranklin)28 b(Street,)h(Fifth)f(Flo)r(or,)h
-(Boston,)i(MA)d(02110-1301)4170 4053 y(USA)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/refcard.ps b/etc/refcard.ps
deleted file mode 100644 (file)
index 7967ea4..0000000
+++ /dev/null
@@ -1,2518 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.96 Copyright 2005 Radical Eye Software
-%%Title: refcard.dvi
-%%CreationDate: Wed Aug 22 13:09:55 2007
-%%Pages: 2
-%%PageOrder: Ascend
-%%Orientation: Landscape
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8
-%%DocumentPaperSizes: Letter
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape refcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.08.22:1309
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI8
-%!PS-AdobeFont-1.1: CMMI8 1.100
-%%CreationDate: 1996 Jul 23 07:53:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-24 -250 1110 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
-4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
-788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
-C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
-617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
-D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
-532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
-5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
-4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
-DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
-B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
-A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
-8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
-D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
-AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
-AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
-A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
-AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
-85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA
-3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF
-68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409
-FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C
-B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0
-F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A
-B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 121 /y put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
-BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
-09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
-3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4813956AAB24BE7C20FCF9196E8E2F30816FE2279CE3E6067667A39E44
-488D58BFD17606AE885FA06F478D359A6ECF5564C095FE0E5038425D8B152750
-F72F41B3D1E7420EE91CF4A9ED5BBE8C2275624AE257D2BDF5752E803B426F40
-924CB5C29460BC09EC84F3F3A95F6900836F0ECCF6A7BB85A3F8D650017E5FE0
-503A73644EC6C6B0254F0259F8DD4AB3945950974CEB34521881A2506E76EBB3
-7DBA7812E0186DE2C0AD3E6D42BCA320014368DD738408C54AE2CAAA9C05612B
-E7F33218F2FECCE8DB2E4B3A3BCD9D8D0BAD7EDDCCAE45F6A15FD2B8ED263E45
-14AF0CC7B58EF52D5FE73023EE9DAB8249D1EB3B795C7B42BFD2A2852D2D16BF
-CD71056F412571F41CF7EE80AA916EA4FF1630B1E226F474CC3195006043B1AB
-915DA8A9484B930F1F00028287EA3802DA3C3F99961952E04B736CDEC7768307
-879B4D2D553518FBBA727266F94C3A607FFD5D85CD0FB802CA51E6A3792C80F9
-A637D47C13A787F5D9C5BAC24E843DA198B7CC898AD786DEAC0BA9B6EF955ECC
-72DA3A8CCCF7F3B69597A2F868AE359737A9714AE6D81989B4152DA33095DAB8
-5759080AA156DF1F3767120018CE81D296D813DC52786586CF3F38EE3CE181D3
-9D79439EE13D4E5799E03338E93315C3F6BA8ADC731A0D8282637E524C1E9736
-29C594C6F19B49C859D7CCA98148215F7E6943637797641D44DC9FB8FA403FCA
-BD581E477C7BBDBC84048141760B4EE0D181D585C519D02DEB7D1C650BB49874
-A75E95E6A17D8024346AF3288A32A7EDFFAE15BACD436CC76850F2EAC7EFF565
-C4273160FC5DC7434DB94BFA01D1648421FCFEF66D786CFF60F0031B649B6F14
-E9139B27185E6E9A70E439AA8D68C6535A42634FFDA55DE86BDEDDF3D6B73015
-37C7437A96CDAC620A29942E834F714D82774AED0A83771A152EAC0CC043CB09
-02574AFC4CA006FC0D24C3DAAF4D681CC1D2D7870F273773171A4977AD05A082
-0DF3F50C8A36D7D8AA96E82387AAFB48D048CFAE2CBAA88F1865B84CFBBC1731
-A212A44EB98265A8D4A8C118E038A0C3503B27D8B58846C4F3E8112C8B05A41A
-9F8B0E1513528F5D7E509EE847F7224AA06819954974F8065AF49F21840E972D
-C1B028B541BA1364045E814A9F8FB299B6B62CA150245D92588056992FE6D71B
-FB16F2B42A3DE425B302051FCC4A2AA76F6146BAA385614913D2B11191CA6A09
-BAE8567DCAC342D013C7830A0F03D848397110F021C63C9D6AFA90ABBC2DE4C9
-69EDFEE42C028640F9784E8CA11B83B4E7AB58F8335FA294DD68BA87FFFCC743
-67239D7FF1C54B725D53581832F5307FF1995D8273EBA54372AC82B7D5EC5773
-8F52B55255502008E0EDA0646D4D71137D822A57C0E9E05F3D61B91436B5FFE5
-CD90CABEA89420F4ADD844733B9B0F0C72688B9184A2EF69966411DF2B23A25A
-11F009C6F23E452854B77AA33129C531C2C7A8666D550A83CBA6F251CB016F0C
-940EC74FF62C721F3D854404F431DB39548F0785C5140A9D406C06306CBB0C99
-B7AA0E4680D8DE074B369A7481F0C12BCEDB787A1A9E4C71C869F5022447E317
-E6B851B8D89144BEE028D2352745CB0C081A7E806482F74E7EDDB5F1601A58D9
-EC5B92F7DAD1B462B0EB9DF22604BB2D617AC6056E723110CEBACFB0F6ADFC92
-F64C98F9910F91A8C4B39EF508A1AA01656C41247E1E8280A97089C515A1792B
-509D2DBD3C5B6972F6829B60135247B75DFA7C067675B7010FB2F116B5009B12
-1F139A8A3E25FF52BE00D9C4AE67496958CA3D1D4568218542B77C865056E45A
-0A07947C4E7D16D24E07A77ED01F10226CBBC21E0DF75293CED54214149619A2
-4A591F3F99EB14032AE840BEC7313CF1F24250BD8D6BDDBE85883D35D6907C77
-FCF01A7E8DAA9BF8E47DA3225623B645891455874BA99ABF9AC9CFABC083127E
-CA636C8673A1ECF967BABDABF1A569319A4E382E7C593CB954522CC9DF04BEA6
-57297331734B3959805B89F96DD23C38DC8CE17C7373EE5F7A9035557E40C310
-7D1DA91F87F0CF45E54518B549DDC5F91851E2899E9756A069CBAE8E63A42974
-299781A390072C7E59B9433F9D47111900DEF4E4F10913BAEE90794333454574
-37B7A46664522983EADBAF6155C6A8624CC7FF1A850313072EF5B066059CC840
-C4A1DA2BAC6DD27D3D3BC9653003D5B25405492BB64FE4A1C294F06492093093
-A4B0175F6DBFE6C4C28C310F71010F97035774250EE0468E54A7CCF54465C7FE
-7A70ADA08BB5B6A4AEBB3F60FA39FB810E6D7B1FBF169DEF45FD7E7EEC4B273E
-A11269ED5BC9F8250F8D29BCBB656105FF2D71FB624F7A67C899828D3A563491
-9CCE8EF268F2A8986577C3A752F91B650DC9717A89F76DBAC254DF1BC705308B
-2E4C7C55A152ED1AE945337B93E411B46DF56DD8F0942DD8403ED15FA515079C
-A1035F3C7A2648761792E241C6710503F7A6093FAD8BCA34C0378700928762E7
-FC371BDA7488C95F69518E1DB63068E740942234A79478DF18C5752490DF199F
-95C654423257DE301117F3C379DA5C90392A7BA173BA19BF2C35C9A0EE180098
-C228CED65FD5241B5DA3D318891994D363AE49E3B0FFDE091C82DB4BE7B240EB
-159050F74BD181337EE202011BC96EB74C68E8BBB26E46020355378E6EC2B9D8
-89DB7907378B83FDC294B134E69D5AC1B2CBC821420EE28CEE8681EA3EC902F8
-3E8503A833B675E21679D6C5B7041701FC553B95D2DB82987EB4A010C8DCD9A9
-C0FB4C048617716CEA638CE3A16C90E55DBF76408A71B3B7FB784820EC3971EF
-726DBE12A1098F350D9FF84E1846CD57B6DDAEF32C6B839644F57EE6B256090E
-C711154CB95AB2910587E15E3F16D402943157E9CBA2174BE93B820951499A42
-F797664141F9F2698166395DF7116293B6557266C7DA28E2FC1F8BDA4B00C07B
-6F7FE6AD4937A694EA423A2B90F9EBD30B8D3710E7E6D7BE15BA631E6991EE2B
-1A28A02C4CC51889C37702E57F13F1E54295D77148C7EBB6B006DD232EF94D83
-20FFCB794B221BDEB84DCD737D301A44B8414B4591BD1D184C85B09BC5E28A0D
-7DB0830419C1D92775DBFAD72F2D7E581EB08E516B0DE87BFF2DC167EBACE23B
-73A3E770832A7A22B28AD12CA07DD15D22FF5EE53C48C55CEE77BD2D429571F8
-9DC52FC92A2D4F7BEDC0F27C39E7BFBBE38721E56234E9AF5FF1EFC753C8E281
-4EAF702CA8F08D3407FEF7E177FDE6177F6604B47872CD9EC22A6644C5A78CDA
-FE3C51033C45BC1BE224F09EAF923B058E13ACDC61A0E7CB5C999DB0C8543BFC
-4D65815338F65AA12BDDFC1EF5A249270D84BF1377FA064F62F41787F3D875D3
-0E4EBD38E30D593389ED01180CA5AD540A89B31933BCEC4DEEA2CFA94C03FD0D
-290573BB3162C80FA9783A66AF33F11CD9437A7EE16812BBC32D80DC10057A97
-C83152905B954CBE464EF39D40056FF3047D9D57B9088A7FAD48E997B5096D20
-E21F9FF5858FC241EC16527F66DE8B403281A8FCA32AF1408D05387C3BFF79CF
-25C5E6EE231B17287ACC5643C94E54A6962CE33246F7D03060042B623CB80C2C
-2E2AC47CB431B64828D8D35426810074E1B98188A866406D24B8020D2082961A
-A4AA27528B60C098CC0F8D34FF1DC6C5A4836C028B2295A4D8281278264283A9
-ABE23AC0A2EC42562FFD6F5FAFA72C8A029F333C26D8CC5B972073019BFB320A
-966156DEF26E9AE303FB4E20EEC86A48468755EB228C5BDAB00714F96797F5D7
-E099755C8F80F0E3331B038527D5743345DDB65784D8234292AEB642C74D95AB
-8927727F73AF12F8B189BDA6BE8BE6A08333ED0E2F6F95CE8367174E0280565A
-97E1F70518E142D658D2335C2FF8C7C401322D6405D0964966EAC8341F34BB5D
-1C654BD9D3489E6F730BB646EDE9F8607F401C5DD1B310D7D422703F305ADDE4
-BC45DD88E798C4F4286B117962E210BB9EFDC968BEE0A9C3EB6B35D1C2E8E50F
-9B9A8D965B63255791A17BF7E7596DDB15B617B98A8E838DE92775EE9338421C
-9A4C9BF5B8E78E475E814EB117719239075BA70DC806DCEF05ACC948AEB8378F
-DBAFC9D998270678435EE7F8E262C2341B173AEE3F9A2EBC2C74CB158BE302D7
-A4FE57E744271A24F3714DF24DDC103687754CFC72ADDED342B5FD5CF9D13D98
-1A13712D09148EF593050E8099035C6B9AE8CFD59948E786E3EC4E1F426FA3A7
-9082E10E79CE44C2D9FA830113503944F8D23CDB9C27A3570907FEAEF76D3ED7
-C8E1F81DA7A51CF5B723F0E4C42E3ECAC298B3E1ACB9679A1250633C373805E5
-C9496CF87FA7A858656D4A663D3EE3218D9792CF705C361994B69461026D8CCC
-130FB9D34293701A137E393F5AE79DE677D13DF5AE9EDDC545496A8C5456A860
-B36397BCC78EF754B6965D22004B978B4A55409F73C44B9FF02801D524740B9C
-E4F45750CD7E45235F376CC2CDCD3BC1B8C7658F52A5EB185EFDB6A0884FF0AF
-1958FAA5FDF4595D6EDFE28FB5249A40BDE8BA11AB0E997E9876CA0A0CD05A5B
-A26F60316F61DBF6E65F43089BDA2D57F00EC72BA3666952E730B14C79FFADB5
-7448ACE6463BD29995D6F6F571BF3D0B426897E457BD30FE76D6CDD6151A94D3
-3D53801608A7E865A01A2FF3D915CAC2614DFDA0A931E009FD1CB63FCEFD0A3D
-B26711BE84286E389805941573E02841C8E653FD3131316E768E2D096E5BA648
-9F03F9825333B2DAC376A79850AC29CEABC8BB1E7D4E34F37D6E9F388124A9E1
-9981131FE0F6718FFC580E678C9D8C1AED790D0C0D78407050D5FF315E605C73
-A16D6868E5DE5E8C1F63A88E159CC44DC0BB3E5CEC35CCBB7493975DC55F52BB
-A33709E5AE3066894885728EE784142B492056EF876521DA69BE39FF4E2BB95E
-C60688678B37692CD40A8BCD585240B0AA809328CEC0F954F0D50DA10DF61A21
-EADE286E22F67227CA286D9A0512EC909DC28518994C6D6E207D4D00514B0EF9
-5DCDA5965D827642072E6DB4B23D1F6C3250081B4D8E66084AEFD663C5F26E7C
-E19A4F3C9A100FC4AADA76F9E4AD474D033819801F7444B51203366CC709AD98
-F62722F700E13DB42D80041014AFCA8D12B23B85BB2302AB944C437FE0FAADF3
-E86291BA50463C32C29FC7D8E4B5EFED49EC40947016D0846AC79E3776E62388
-372568D2AD0DAADAFECEFBC4F7E6A8B47C214A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E10A31C7011C0FFA
-99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904
-A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB
-11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5
-50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB600BF00E09
-8A98D1D031C430FAFDED5CFE3944C1EA9CBCA28220AA4043F389568D91C81D55
-79B07B0AB08B8C9A97E8A077E9470F009FF04CEA11DDB886852B1D8F4F8277C2
-89DB25E0B816FA5FFDE51F0BD931E82DB0A63D0A7E8EEEA61A6001419065BD7C
-C7CAE6304D67C8A9D17FA5EB6074BBB37E217394AC665BB5D62C18936FFA6416
-CA88B5EE8B4609D6DB1C0DDC3485435788AB81CD09EF2C4867AB76094199ABDC
-4C632AC625D9C171631AEB4A4597EB2C6154F21031DFA3D2421B200D98FB5BAC
-DCA2AC7EE4346880207ECD304FC1A8D1A4D89C07C3810B0966F23A82C6F2D0E0
-3C8B824D0AF596D91646C023A885F1AA7E1EBF78805984E2A9F3EA669717CFF0
-DAEACBB810476915178DCAD1DC9817927787AA1B01E700955982CE5B81636B98
-2F5C1559A47D262454C20C1C5A16365EF3D93072E09485C49DE40A0A8917B8EC
-EC2BAB34197089496C9C0D5E270BE99642D86C80EB8A4D3A1308CDB3D198CF44
-18043E5A4F6BB56C56ADD1A7F5F00E88CCCD3637DC402A10F5C9D4DB5C401029
-8C3ABE815A9A028661A1D41C9B6D22E6BFE2E9B7D50C045A2DE5553F4F483EC8
-9D6DDDE85816FDEF687938F1D8D51D2F3D895D34FACFDD36E8D6BA6A3205AC45
-78DC23BE6F9148792AC96F1C44DFB716FC883E63A26EDDC6EBABC759F1641FB8
-AF339E84052CF3CEC808E70F18AE25139CCF6143498CE992C7E645EE35A50BBD
-D3BDC9D5FA885C7F4B361F4E552C47D99F8CC0F56F0E856C2F51AD2B7296EF0E
-F7E1A964044DC9BEEBB67BDC830F6026EE80C8A0C7F3DE64086BEAB5947FEEFC
-EBAE229847E91B4E1377749F89687E1AA41494D17CFC65D65A8C5D9ADECD5309
-112006D7BE209A17B9C8C8708730BF56CF35458BB1AD7BF0D9BA86ED255961C0
-2D8D81478D5A094CCC6841624838ABEEA0AF72F1833D3BA07E3683282E501819
-7542BB0D87DFB741EACF875C838821B821F780540EC06631E3F09B4C3032C2B3
-6E2A414204120E045394417E77813028354802866ADC8648E480E8183B492A41
-8959AA9CEA6A8683CE19F68224534250E8579BC6E7B4FCE6EC8FE88C81D023B2
-803F4051D082F0DE1CD459DE0C8261336C3AD7363A50EADFE6210A0BC68282D1
-B1CF74407921143BD7186029A602D8278E3018482DEA5D7630022EB4DB667F06
-08BF071F6842F1D67E56396F2CB78BCC2995569A099175D223738A15792B375F
-EF2F03ABD91ABEEAA69ED0E78030CA879CD8862C71C92C0A8C5695C7F477B793
-959791F2B066D63EFFA1DB8AB194DCBD1231E9DBC44768BDFBC03342A733062E
-07CB4043803EA78DC80B08499DDEA63EE7702A4926236DBE5C646ACF1645C1A9
-5169D4C517A546F824DB14CE505336217774B79D48A1F026467ED406680F6A03
-AF30032E60A99CF06E1EFA182DD8BC0EA060B8A5847ACA336F3BB22FFFADC090
-F6B9DB007BB4C7864669CE4209C0B499A1A617A44C1D9406EA39DD00EB39B78D
-EC9757CD67E0B84539712657AE0FF455271205E767ABE4B34F93D3DA2DC21AA1
-2A1355DC75414A9642FC0D501B87BE14B06BDF31A29F3B0BDCF3D9DE3A28AFD3
-B2C6F624890DCFE0825AEB4A6AFC9A44CD4B4BDB1352565421BFE0CF31D8B575
-19F521183DBC31867AB58C7473657EF1A045E42E23AD6008795257FD2291DBF8
-E10BC88744902071BCD32EAC53BF8B71697EAD353B561C6221A61B6E53DFA619
-1F1F01B472A97370F3D4A3280D26B4A0A1842C26606E2AADDBE4EE716CD25465
-DF4AAE0A4B8AAC44067B78C03DC159093727712A39BDE4C902F3EB770D9CACE8
-C139E160C5E55C66258770C36A136BA9E7510B21699A079E3A771D08769D1588
-1DAD9EF22F5A2EB661CC88CC6E1346F4F5548704A9E2F2950CE9DD1239821A08
-9FB5559642CE693FAD75406C2B85F5F8CF6DDBDF9DAA24B87031B931E1751EDF
-2C0AA6BC2D8B9459B9C4981652653D57DE294AA768B1793BC175C3C081A13A4A
-961747380E3E9DB8EFBADEE8A047E78FF382AA7D2F09519A4B83C2EDAE167D7C
-5A1B230948582F1A966A721320C11E65CC85A596AAA32BCD54A7BA6C1A3FD103
-C068A2B7E7B7C66A76D1BEE1916FFBE7DACC70676900FCCE03AFBD93113E22F1
-D45B5564AD3053DF0FBE4A3DDCA73D3D49959A4256A50F8C80021FDEEA77666E
-6384FCEFECDBA01FDB2E46D6C422C46BC2B150E09A2F4D4C2D8FD7D78C5C8C12
-9A839E25281BF1BC390523AAC184BC8DC2357B41E2FB09609E0EB65E40048580
-DD33D908046166733AFFA8D33A78EF4286DF6E57FAFDC75A77C94F9486412AB4
-A27BE34BC597B2D02963BCED345DEC4776ECD653991E442709F2A4EF1DCDCB09
-A18C2FBBAB473CDC81B440D3BE42323603B25832D1A4558D857C47CAEAF798D2
-94F803B8B9082B4B4298DF5FC84D4BBF7B0C90399DCCD2E63F332DED120CD19B
-5533D7A010A34D1763B68B4DA26D12FBB82F13F5AB069D5E24E97181340551E2
-1B9FC4DB15B8913A2334C010BBB1867B210FF562E73BCC4607EE57DA9F52E99B
-D25B95E602FA62760F4FD902A2393893C80FD75C3966B523FC4515224A92E7FC
-57BE85BA6D0794AE4FFE054139C81FAFE3E82A9789E9C4CD1310643ABA10AB23
-6E3681F0862FAEC02DC74FD513898766F8A0971E2C4760975F236084CE1A1C45
-5AB43A1986CDECE8AE76A8EF0F4EB6A35223C3001F4B6FC03273FE9BCA55B7B7
-99DE05BC03E61AF713B6588F3746295C5FEB2DEC81ABE04B6C434B35381BD447
-CB5EF5E36ED368BC09452F09E7B7D0AC7B9B56456EE10515B6439A2ADD6BDD13
-8184F57B26AF67E77F0A9CFFB2198162A21041C3B7B225857C4AC9570386AEF1
-9DE4FD47C74ABEE0BF6B40456BC95A8D82FE0584D999D11A39437A32553FDB98
-72F6DB4E8EB3DD6A002D2A168ABF01B180E3860F802D46A16AB011A4A96C2F71
-0330B1260EA5444448AA5B4899202DB4DBB148F4AA4B057D085681E2D2FE89A7
-03C687E6EFC16E0858649E46C21B77A9F0EC547AA9ADE92D7FCF0BE8D353B215
-20511CD6D706DC4EC48E738FD6939EF24268F37173249A0881B0972BB2214FFB
-043A4083CC9E0135F356B36E00B64AACEE0711B784AC687AB17F5E839773221B
-E884A1F46223525D70BDA5BF82AFCD012ECD327CB4852F8CC538E09F3913AC23
-E8BB0C8613301DC12A08F0647599D1BB06960509A569BCCCCA3045C3459B93FE
-949ECDB751E2AEA912558CB0DE59FF10E3511641D3516B2DAB11AAEEF958629C
-7F756A0489105C7C1723BBC7A2304CD98D36F019FF494074488F686A967A1B9E
-8AA64B988F79342E5120476DCEC087009952E9C2F3766A272E54D27436660A5A
-7488899A8DA1F7FEB38C12EC5EC781ACDD0948EC8077022A549280828F0B7EA1
-DC3B4787E708D46B0310113C998BF40BAF77EE7B90243AF7E70391E2255F116F
-E2B0982AC9723D713A5E00454748EC8B4A855DA7DF6F239430874AFEA187B622
-A3F6705E4D79FD47A83EC981D5ED14E9AB8C4AD4F3E5CD56CC4C0453FF9E3D5D
-41327958F4D1A6E129328FFE7FF643B63F7138F280AE59CD8228B0ABC2023FEE
-7B634FF42B54F21C7F945539C0AABD81298C72964413D966BD53ECDE9969A22A
-0B0BBC172553A4430BA0C48A7499ED6BCD19917B3BED8708899E98DB07C1B1AB
-6A17B5ACD6BAC51892EE4870D6EA08C0EB89AE4ECFE10F19E1242E7490D91D52
-DAD1B515A38A9F277FC07A728023ECDE78F10130CD3DB1AECB3CF2408FB1A9EC
-D899A4C6C8747F8311502A88450A113796573CB5F2FF149C61B9F4D475C12A35
-B36842C17AA26DE8ABB0AB97D3CC329189388DD57D9A51B671460162E360448B
-E8A9B1C6B81BD88EEDED5C868814209C6CB99A4C345CF153E015A8699F4BBBA6
-4CCA3996981B9BE36A02B38F4A3BE0C79F1628CBB5B792678362AD968FC459A0
-DFDF6257425D5C665B53DC5FAA741E6E83359AEC56F3590AEEEFE87C5DCD05CE
-4294E1DDAD41ADD5861043BEBCA5BC8E0048DDEF0D48C213D750EB7AA9B55831
-1A3AEDB1757C1D193BEF212212D46DDC2CA98504E47A0897D3B1479D98D825A7
-80DCFE89BD6EA0BB7F0D9FDC2636B9DD627CA76019E6EC89E489D64051099F59
-5D4826AF2B1D15D78BB1FA98CDCD524DF47798111A887C1D650E4C4D94FF174E
-8B794D79F789F34F25448B9FCC218608D4830D7AC1ABD2C9DEB90B0B9EB1970C
-44693ECF1FE235580BB33FD43BD28558202EC7EA566C64D2F5D6D8D284EF73F5
-2093AE92C65C76E7424393B6EFF08C3010A0038651CB063B8DC785BDAC78BCDA
-E9A9C574CB20991157708B6A1FAE0C9156C1B0580961777DBF42A79E665E55B4
-68756B12BC393A464B61A506EF0E782476A6FD48529DE8B1DC82CA79DFB6E947
-CE777123A054BA86CBB9ECE3B75EEB73BCA23098B1359E152A121DFDB935EF6C
-8CB0F35604754C02DDB317D94036BBC99349B20596BC36FFFA65BF11D2075E65
-6A36F0A3C5F3117C02A4BD0BD58D434A66B851D279CDFF194165027633BFFBC4
-C6F47CD99CC7FA385F2E7A70022A9E73A54C5B8BF9EBD394B8C11D95B08AF3F6
-6B6626A7D89C485593BD244FB3E926CF54D02B9CACAD09EB17D8B2036AB3DACB
-D6D3B5F8655BD222489AD8415D44A7B7840296028F2E7EDF8F3E5B126D5F6764
-B9832A346CC52D02DA12A043BD9E39310C65D93407799C837F80FA8A181DA13E
-9EE446FE474A236321357DFFA9EDFEACCBA6B6DE4ED895FC94D08F509BE63825
-A661794B10C730457B29809FA68453C95AAE6C0AF0AFDD4C3DBE75E43AC59E39
-04CF82829398EEF70EFA8ECC473E76A1B6C02BB2A7B142EB4985530C0A173D27
-B4259EA302692E1D01DBA7C71ED9A8DCFD371FD692B14E8751BE83CB8F0EFB18
-FDC0617882A29B04755F1FBF7A50FD75325F4BC6267AB43B485AE0728D8F17CE
-02F8512DD62228731E469B21EC1497F49982137B368D6D33FC3436DDB9FE774A
-2A290BFFDAC838F44EB659193DD8B495B351A4BC75AD18A05C50854A303F0878
-8DF3F200FAB1ACA287D847D33A8C8F9521AA4CC8B4257DDBB62C2399FE32D32C
-D99CEEF5BA561E0709A1D44A1D73CCA06255062A12E6549136360F6A262B4672
-B3B2D39A8097B4AA529FF4288DE0B9E5DA4CF2024D717CBDC29759812914F140
-76A5E136194107A7CDE76E2C0EF8A0804190D3322C8C8E281A522A6660E6590B
-875DD18787F1D142373B63F52FAE9ECF5BD4AA0225CCC2DA26BCD2AE0360014F
-8FE4BBA8FAFC8C778C228C98C47B2A33C63A1C313F22AE8CE340F50C9162C64E
-2BEA1B8295270344E705F41E5E0FE0892E8B2555309A68EE2BBDDDCFD9098282
-552EE99C3B355FC4B1329AC2BABDCD888D9493AEC24B7064BB716E91071C3204
-BC86820FD8D54CF3D4CC22803D4A4F083E312376735EB8C44744C1B8A1C3A4F8
-1607AF7087CAA62374C724308125770AE240BA73E2E9C3264AE21C07C75B97E1
-D127679574C6F7FEE51B5FF5532CDF05178DEB4B9DDE6AEEA908A8FC4A57FC98
-EA737002C581DBE9DB2A7159C18086DC7B54FE88E1C9455AD57324E710365553
-575AAD6CA71B81E2F75F31AE7D2AA54B7FA22CE8BA75D821182EF3F8113FE53D
-47F30A70597371AD7381BE349A849D2DD95D461FB737D2F73683BD85040A93A0
-830E3916AB7B6A80C15BD6FD14D850C3F620E11EA4937FACFD68C5F1CFA05871
-AEAC0911C0356D82B579F689B24C288EDCFBAFA6C5A70CDE0849B1CA0CA41412
-4DFC1E409847415402FCE9F3E35CF87FF5CADBFFF71F3B1EE2C13DB56380411C
-241F03BD12242DD35987BDD5B2482B0CFED9CED935F183B9975977EFC0A93862
-8AD3FB48835E0AB04CC04526D956B63C480FA99FB558311F02C9134B83D5CDB2
-527231B74D29DECE0DD2328B55FC228410BF01BC9A5236C21A96CE39DD2A8936
-E28447AB661B6130F9A12B9DB56DF2C32183379FF5947E3572CD123DCE23B7C8
-59F318F1D19D1AD8FE7AC4D6AB1BA48B74AD10A9084E26BF022C66ABC9E18D03
-20175FCCB7A346DC4A07D87B6B89A93533AF929EC1A99EDE00B38A9E6D073244
-4059E56420431FC37660CEF5009B55BE2D9E096DC21DE0DD3DB9ED61AEB31B18
-F1AA98162929CB2B11183970961008DB9782B9F0AA3FD24C71F63EAC783C1B35
-49F76798E46CD1024CB4EF6D75081FE2E6A31131A6261BC206F7C2A86D687FFC
-C5E886E4E3DDEAC8F4932CCC21D35E1107576699E88399C6103525BE7B22515E
-B600F6E701C277C4094D3A904B16040A744CE4D8A3330B9CC11CB89348C34689
-8113C7386D6C5BB195B284E73B6FBB913F7F962E460E1EB3ADFDFDBF5229966F
-710BA348F9B64805F8ECB7245CF52C1E34005DFCCFC29FA1C5938CAB1FC1D00A
-D906E1738172082DCC35FDD1C523678AA295B0F607BAA88A0A21C703DE7D40E2
-99B24AD007263A8ABAB7B8185B18BEEFD57C7D82175A28972AE4D0C09ABEE7E9
-BC51DCAC9A588FF4AB7CBAE0EF799171887B6DCB5381888D56ADA069D95B97B4
-4F447E8B7033214C890DED5FBF0926AC73364762A8684B36C971F324A1A2AD8C
-C98AD1ADB37D1C034AB23CF71967A44262211CF3B1AB7DBD7A835CC1D8485063
-94088A21E91CCDF10A61BA7B39E20C91A2A838D6DF27ED2A3E6C7D31982CD55D
-C63C4D2028625AFD7FC6B4AFB6874721E1F5FB483DEB672858872F5714A120A8
-6411DB2545F42AA8F40229FCB0981D7BBDCB4AD8DEFDB582564610FA1A0A23AC
-0648AA88577DFD9F75FF196F1D0C58D1AEB886A6443781D36D69FAFEA413B093
-CD03D450AB5B93CCFDF5897BE21FD7686936F9C052D9234292E5D8C6E3AEF79E
-27C3469FEA5773DC61F151347E6E910BDAAEF1B8FFE606F50431403AABA2DC91
-AAA75D0B6277159C96F8CEB5E7C24BC2675141D64493F0142C5D6DAC0FC6385F
-0809A80779BAFCCAFE715C7A7EC5A2DCFC64DABA55FA55CD5AD7002887B3F54A
-59E6A7702FD135ADCED5ACFC2DB06AECB4297E8A8A367FAA62840ABFE0BF5E9F
-C58EF2CFD8EA8464BD0DC03251D1E0F405CA9D686C92173ED29DA37D9F616A50
-6DCB98E5DD8D238547078FF053D4FD52426A431EC81560835DC98E4CED52CAC4
-62E20AC5254B9BEDE84869623421C3787240560DB885F6C0C40444FF4BC91774
-D13EA62E8049740582E48C9EA3CF28AB4560963D2D4273FC30EA178CE3B3EED4
-8AEE6D37D9BDD9A1086834093D3454D046D0C8DD50AA309A47D796DCAB3E4144
-92C44ADD7A338F15E3C543F91D081D12D3668C933A977830A69C159EC189FCF2
-6B01B20AF2D25A8D6FD040C55914F77650CE40788A689FE9BABB7EBC257BDDB5
-1E0793C240425DD1F5F6FF75EDB200758331D8531C10E1C4188F48E783CABAD8
-30F946671136F2FE14B7BF2A2BE952E90CE8436E48401F324D1342632F9C1AE9
-E248CF06ED1106E6FFCC8444DEE4639264C2CC604F9BA31D6CDEF45D1B30DE95
-18C637B2A2B664FF0819D65F1FFDEDD628A0E4EE584574425959EB41558BA91B
-C807A11BAD0DE0BCC713AF7A8B1292735C17EAF001F176E2686EA035E344CA61
-6DF6F468ED41045DC47A4371DE882B850DEE11096CED7EC72C3AF36AA2F4301E
-4FDE09FADD6A93DDE03932B21622B705FB82BEA14D1D217F947F68871CDD710A
-8B3840BF0D33F5867E0DB5C9DCCEDB903C8A5DA2D82CE6377E281900B2FFCB36
-21E7CAB72383D1C4A5DBEED82B1C30FA2304BB87076A6C4A5BF6305803C9385F
-B387642BDD2EBC6D660E1492B13266306DAFE8EFFB2EC94B472F32F6D5A5D357
-929E6014A97A55E7549E384A6E3B4051ED84F55A0CE39DBC8BE5F6EB3533B34D
-EB8C013F219F9432C007D9D783EDA498709EB0704B8A30E36080E536D9FC90E4
-A41C758AB3DCF3D741373EEC4202A812240E1FCB40396A257FAE74B8B0937B38
-5F96BB52264834FFBC95C12898E309E76C92F7D7905E3834B89F1A6BDD0A58D5
-BDA6B9C6ED10DCE2CE9CAB4B1D4D2112B2AA880EB6709AFFC515555DBDAD8307
-1158F820DA6A6DFBE2269F98A0B02AE270F144F8E11FC7F5E1B8A4044A6ACA21
-5152288D343A8EC876B96F2D13C4EACAE1650481ED417090344E044F682C0D65
-2BFA753D02A72CC0507EA8FDE860701B43027DFCBC7B3FAF26B3C484F602B00D
-DB1F747CD60F02EC569671FD0CA70323A158633B86C45381DD81AF80C935786C
-713DE54521C43260E77B3308687524864B5D764E6A65400A984C788A6B6C7FDC
-CA5B874E2890A8F956031FBB205D0F527C8CC3D65202A957CD552068CF4853E1
-9AC32CED27EC96F53880AC4B62DAF7EE6B892C4030442237503EB68C19365596
-BA25710DE5C0804AB2D28745D348AA1AA26DA9FDD8C0E33F66183AF0C8DF0E58
-D83ED9FC39A0DA78DCBF76729FAC538E018A1DCFA998318632D45B7E2D70D97E
-AD99C52DD6189707DA73360C4523015D55E8C82E28822C42B724CB9E3C35BE2B
-F0021CD83B3F04316948021F4EA1C01959C45AAFE6BF3C7D83C4009913E7C1B6
-D26410338411BDCFF261238D75431D0AEF473129A7AF610768138C8612BBDE3D
-2FAA5937F2A4EEF1758B57CF132C14EF80FCF68B59E20E3D910B53B674CFA3DE
-C74BF65B19BC99522C88C3697D473A790EBBA79F66A8C031F5540DCD42C4E6FC
-96AB35C7F4ED9A887DF2DA76831A009973C94FBE60FDD3544E6A05169FED5BAD
-252FF65648B7DB4540C41230815AC3A25E9E563A4B98D37B1BF9EB43739538FA
-9D168855DCD55E268155E047B12B1DA6E57A50C9DD7AD5162B6BEC0195154878
-D311EFC4CD15B75649FC917634A9A9372F110EC0483319D93D311A143F3FBA05
-441C6444446193DD5874F1AFB9FBCB244F0BBEFE122160E4DFCDD4C8FC866925
-510B4F9C35B8F5538AF5C7506056DCB52CB8972B28E4097501C527BC1489FCD3
-BB51B6F0EA29A48E26B61CF367CE6E0A3DEE3277E07CD347B1B4053079E19C2A
-F11AD996A20466E3DB3E225641AF23F6C5C4D8CFA0DFA6952FAF262B05B52824
-B2D5E768DAA24DBC0D75A59957407BA162800D659383C98B1E9EE7C46F69870F
-2ED9F3F5AF5018AB7B52B5C26BA3C94F76F99E15E35EED8D00B994A1D1B23A1A
-5F892C5558DE9FB4DD14AC92F8F649EDF9E7AC85604C3FBC752DF7143F2A7239
-8302B08CBA56172C1FD319094B9B920DCFEFF4EF3EBC755EEC4A5950722EB60B
-5E54502ED16E1AFFD4281DEA5AA79FA474F661865233B620681639CBEB1A6B49
-43B9E7BFAF391C8819FB1EEF7AD854907C0F2B5E7BCBB168C87B45FDFB24142E
-13C7E826BF169A3412750528F7B229991C0E81AFA9D90001789235E6ABF935BC
-BE0D225E5EA55C9980D1ADBFA63BEF090F054B65E4653452F289A4EFDDD44D42
-4242D1504468E522E475F6939C3A24599396A164ED9D5E6BDADBF381F7C15445
-D3C77DD819A4015507452B994198FB572934BDDD0CB582645333F567DF13F839
-4042D4DC89B3325D128A2A93D8B406EC774505960086E5DEFC62E6B5927CB842
-7A4075162232EE9ED861D997240BBE94F87F5379E97F8DB09D15B0B67B73997A
-A7CEDEF83B9246212A0FC036DB2BD6A2F883F9748AE84193A31DEDAC285C700D
-3929FECE62567902B60F8109A920AE6CDE5EE6F19CC701FCCEC11AD33DF63CF5
-547877EE2625BA39D0952BF10E6CA242599AEA71CDD288FEFF6FFC511CAAF4D3
-CC16216793D35E6488DA771C25AEF92389E27BDA29ED2E8087FA6CE8B52513AA
-9E51008FA424CAD8C48E81F33B3A957033153C03B1AE368C68AD5670233C9DDF
-7A785AC5E6728C07109C23BDA88BFFC9B40767D65D1B451CC0ECD6DF104A0A5E
-9C030CE244452BE8FAAEDFCA13D93D8AF4EC9A9665340673A9EF13A88D4E0CD5
-66020C635F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX8
-%!PS-AdobeFont-1.1: CMBX8 1.0
-%%CreationDate: 1991 Aug 20 16:36:07
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-59 -250 1235 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB
-7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D
-EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C
-7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E
-AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30
-E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420
-4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272
-5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762
-611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025
-D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9
-EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923
-35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606
-ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
-7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
-C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E42779FA15EFDB451F
-53495CE8EFF239E4EC442E1439594549D45F5276F93D496C9AC712D762D0B702
-E894290BA028837304AFDDD8BAA6564E9DC307A14A7A206550FADDC7784DE3BF
-3390188BBCDDD929C82B1D7B529553BA75ACF5B385D31EE3902D96B2B5DDFFF1
-9F0F90FD791E54128C1717F313486896868A34FAFF22E23CEF046D02C140CCD4
-9730CDEA373A7CAC4D69E3ED60590B4CF83F26EB66896E706DFAB81296288E1C
-41CE859B3767F0AD86413F8EA2E72110FC52BF6804ED797C3B31CFEDB482B58B
-39C27F22547956219CFA5F19855B8FBEF0272DACD598ED59993377D76FCE9551
-285694FC4109E112FB3B531145321D33201949D2B68213B0E7F96F20BBFDE3CC
-992AADBF0DF7DE6B75436DE2D0BF13D8BC7535804A71D4544E98B9E203D5388A
-89BB181750CEAD2FACB627BC6107EE1C9C2860E491AB54D40769F9822C77E830
-5F20BFCE14A539F27C0BEEA7B6F11FEA0FDA7B542C0C84F8FE811F0BB6EE47F7
-ED10C4FA171225FAE1E92DC79B62605BF720FB79F2B59B925D1B1BB08A2FE6D4
-6A888653F496E5199172B81D32FD04ED21EEEEE08CED51C87F22208FA48C8F70
-18573E3D31B1664D932578C1D24535B2FBA5B1628C3FFAADB4B29A481E754D4B
-CB5BBE2AC2393AB94393C640E6429D99F55DC15761194DADA1C56B216EE4BB60
-1D106EF3DCC9D02631376C3448A47EEC7522AD087C4DADA713B72552E2B9627A
-1FA7FABCEB12B5CC3C2789CA9351D3EB78DD73CD6442DD2122BAFDACD317747F
-588DB4DB7E7FA894A13C7CBE2665D2F4E668BA4D5976832F8BBACC2F4EB6E00A
-805AB5BFB52D402C1A5F607016CCA00602D2BDCF4953B503D5FBCD1F8CCD4930
-0212BCF99C3BF4D2055407A962FF2D451843A96BDB812D7EB7AEA8FC5B020ABF
-312D8E98A261902F2085F5546BAD83F189615BBC3D431D43841C70016320E050
-33D0DD9FB670F25F3A47C818EE9D173209A95AF350AE5114D2B5B1F4A526BBF8
-951DC1B9994E77234A8106D74DE3F3CFCACAF4FF5B6608145C731A80E9C05A97
-6F118480BF5895FEDB8606E6B00409ADBD6D60C39A4A30CB9B5AE46508095FF2
-2E5E0BE6CC724DD66014BEC91FAA107F8AF7AC5986C1488995117DBA4616E335
-646BF32CB244FE26073330BCDBA19C29AEA59576F4141AFAEB3326FCD5304C62
-6E81506BB2AF943D196A033B89BC0E00BDE0863C05ACA121CB8777355FBF122E
-80B452FEFEE07B3678DC1AA93B3F6975CF4EC48049FEB6BE4ED39B01C5D3AB00
-E0984A4F61D7384FF3D94ABFACD1ADE899E982E11BC9A0E984874EC2DF8D233A
-DC199301547833C5C33E64B08E72FC8A097092E054BEC04E4E59CEB8328A646A
-C9275AE8D781125676F18FAF1BA2B88BB814CB7AF980817B67C967EE7A1221E6
-CD311A025F5F258E0A9710DF92B6CA1919B859D0BEF4B00F49DC632D9A82BC37
-A5475BB3C27D56FE647D72EB0B96FEF22A43A2FB28A49C8F49CFB68514318208
-CAEE1EED06021A7E5550EBBD8745BAEDBC5320C87285B6DD4D5AEA230E47DC94
-6B704162CD8EB7F95C2B1E1FCBB3BDC5EB90A3A7E6B28A084EDCD665C626E0BF
-288A680B54A79CA47EE352C57B6393DC6742C5B99AC3043A23D6B1E131A89059
-1B1CE7BADEBB878CA5A93B0CE4D4A6433EEA505E3E85E0CDD299CDACFC1E3945
-9733039E66152DF405081E320FECB14DCA425411EF73DEA0C10A9FD032EEE891
-F24B6AC497E42A796A565BC545418C889510BC82994DB46D47B27960F3BDBCCE
-1FE918F7437310468D9C1D4CFA08A23586B23F209CA5E1D5B9219F9146FD4A67
-272861D66B633C6115E0512EA33E99E5A2C9F786BCF687DE4D94EF7F781A849B
-B5AB60B6E571F5510242BF41FA501EDEDED1E98632385821B6111E7C243F0F8F
-394554D6F3E6B7CCE3904DF60006BC23971460A063161D8C7B188C00691CC2C6
-744BB48BBB19BF42C81787A6A60352C30631B9DDC6B25635D09190C72539F39F
-D2A60792DCB4D6C9B0E89B118C83266E6E545DCB0B40E2655EA02E1399C7F1CA
-076C97D6CBD3A89350CFDDD35AFEB9F5DC6180FD53C667540D462848D1B0A575
-114DAD87E1C280AD20030C8C29E93F0FC77465D473C26EF10B332F3D9EB16C84
-93B2F19701547BCBFC251E9B7AA540C2889BD38A17DB039BF9B0C10B1ABA41D2
-BF051BA690B962CE839E6F9C2AFC081031C1049FBBE87B4067A63515BFD1D7C5
-857F560A16B9F7999509D8D825872DAA36E44EA4F7D3CDA7488566D5713CFDF3
-4138C9A981045F83D83FD19EFC2D14CB163A590DF68AA7E5F59E05C7A6F26B46
-5786456B43EF57FB329C91530D503848EA324CE9F87747C2B1D0182CC61C28F5
-98847100F23192937A5B5E3327605FFAD1ED0395B2AA53A41C52E014D3C15E15
-0E91D9D963F377629B43BF71DC3090DB109A56ECF6C5C9EAB8C8C9A12CCCD471
-E6FC1030D7FF7D400AE435D5C333958896A4F6E57BC68321F6B1E6D7540586DB
-5A4F495CA2266A45D940FAE1C55AC750D2C650AB0A770DBC7DA2BAD9F14EF411
-64058DDBB9C050317F53D46B59DF5A8D2B4AAEED48ABE87CD5396FE2E8FAEA86
-BAE4C009CD71165A2EAEB72D680F70D55A9B866AEDC2690643B9B1A59CC85862
-AE40CCF7CED2EA6CD30D4B3BD5BE48C547FF52A9FAD1CD75BB7F21BEFCCAE738
-709CCA12294AA1EBA6A89204A8400E25466167B6A8CDA5E87CE571CD841F53D6
-AC5C57D5DE83FFDA77A5AFF1246B1B6B0527864B348DFD44CBD8205CCBD8B5A3
-51D56D897CA483951D2EDA954DD164D4252CAADCA3E5E0539BE0B9DADE6972E6
-3ADF7572F855F4825DC5FC85FDBF7F3A63F914CB5580676DA8FCFB9FAB170CB5
-CEB586F231153E29D03E85BB16F36BE558A91D706DD07CD6A426ED3BE8E64CA4
-5B9AE4FCBEA5EBB41ABB853A208D06F1668111A4D936C9A967ACB9D8263CA679
-79511E31CE1964ABEF5B4786CDFAE5CAF695F52DD437880746244CF68E793C27
-35E12A0BEDFC4CFA874A1FE53CAC6BC262BEF051087A988DC6B612C6E923268F
-7960CF416473761118D9B9FDB2F4A8D0454D2472272ACAC1CB4012EC52FA4903
-5A34C2B762B9702583795F9E046D096CC2CDF32BBFD0852233316DB914863AD3
-7B44CD88BEC7A3B3F0BDD1A199A172E318A62F5099BEDBFFB9F0A0074D9D6FD9
-072CC2D9899A31290CC098A77A18688164C6B86D60FD64D2F2B4FB89A7DF8272
-56740E85F27F11A4C429A438A6489A9E9BAADD235CA7E2478EAE998AE0A083C3
-30ECC6ACAAC3AA5053BE5780F5E082A56720143C3482A0DC91B0E1BE3AFE0327
-1FCD1A1F7BAB38E208747D8F465C5D3CB763B8EBB4691C20899F9618D8AD30E5
-166F8F0484E62116B22FEAAFCC9E337F2188F3B0E6967AA8364930E6B300903A
-AD310F61A1D9E37E5E81A6789981D000419B8D27048C525A7FA22B1F96F4946E
-70C9578B257B67888E28D2A2A1586A460842A32F2C264F7514BC3C6630A0DC1B
-BF4E583D6302A09EEBE76DB3AC28CC9D7DC341D14C745CB4AD539047DF9A5B59
-06A3FFE21DF9CE5F12A8C603B91652D07A044476729451FD8ADD752E6DC28972
-70D69C4491E906F5B0FE2008EB0705FA5D98B3AC8C8E2419BF34E2F4741FD369
-D07228085B26F57BD5DBF28CC92608FD0E0731BBC304D6B00308FC3C068B225A
-5E9EA26A18BC3EEE444D6C40C6ACC6B583A6F87DC5CE75F51C871FA18E0883D1
-4978C0D8F123A1BA73B66A268ABE134F62F9A3A60AADD56B9039F9DB87099429
-ABE357CC0ACE37D572AD946D0481F6207C2A3369E9470B5C2317A9ACF4B73414
-9EF59CC9F3716AC5D1E3F048BA6542F16331A71222E5ED686F7E28D63DECDDF9
-9ACAC3D605063AB18089D375A321B14941969ED7E35D9F9AE73CD825C6104E2C
-334534442103B9451EBC3688722A20404251C003AD0BDF43411609A20FB1E600
-7F328DDB7AF1746FBDE127447E0FE50050E678E4DD1E79291F7D83CD07821AEE
-5DD61EEBCEDF75F183437C9AA6417BE61E74F8FB2DB0A7C1891C80C5D04E592E
-FF1095AE86EEBF40998EE452520DC0D79332F77A7F3838716836C9E64D9EC809
-555A8C7FD72F6B3C9F4A81FD4CD9E66D2856FAA087A59248DDFD33AADCA0D403
-990DA961A15068ED6A20538A564E1F891439660BCEFB21D1E205B546BF63C89F
-F80C6716A2364C1222E4DE7DCAABC01329C3C335EE1C9C6003FECFFE0ADAC78E
-3256339722CA93243C823566ACFD0DDE09E237B5256CE9F4ABF43DC5790648BA
-111E032BDB926A263C45B30024D2AB93E2D214BFDC2DBC93B8D38B1A6229F6CB
-74FF545158BD92BFDBAC7613968EAD2083BD7748A581C2E5BFCD38D6EB672038
-36364AA51FC4B3683A408EBF1ACC7DBA0FBDDE1D455C6E03017A688D4E580BF6
-D9D44CA668C778AF4204A578B9E04A74DF77E13F19CDA2733679FA237CF1DF5B
-81C8256833369AD723B9826B8C87A6E1122A84EB49AB63CDE1B281756ED3AC70
-BF7FCDC06B9183DC625C57C547962811D7F0AD3E43B3EA65FDF3878B3A06BF45
-4075A761241AA220E3043790143C688E2CB33B716D77C2C9FB9C1948B5F61457
-B0A6079251472EB89672AC6C3DEFE3A0A512A9899FF79A366463CD3E4A5EBB33
-5BDCDF65F66DB23C5F4478FE98D3CE0FBED50FAD539D6597568033FBF26D49FF
-FD339DD37DD0D6361A981B794BB4571B7211F145E033E71962DF5FD3DAC4ACB1
-72A15DFF9A26CEAD20BFAC76440FC3F770B83E45A8C8AD9833E685BF589FE9B0
-7C12A2B3B9A3EBEC71FBE7FE08AC4F73E716522763A151E70DEC10519FA96831
-9D3F87869FF731EA332A5A240FA36B49BF2E010F976C9792B9C984C42CCF8A0F
-5F40ACF8735D0C87406BB3E2555C81236696EE69DAF4AF68908E912316758B60
-CD6D36B7DE897E595711831D8B456FFF483CFB58CEF8594510B45D24E0F06571
-A5C0C45E73706657C7A26C244AD7860E71E1B41D5276DEDE69FBE758B18B6BCB
-147E166575CE65AF8AEE345FE1A6266F4A82BAAADA58A989B5D30ED7F992A2EC
-8E92B256EBA63FC6AFF2A5368E9ECCEB5541DBAF23D287DF8027359D4FB4C692
-540E7BFA0B12FF6084966A6FAEE65455AEA90803C44EFD50EFA95F6E6E41583A
-934C8D1E72D95F1F3BF78B2D4F3BCA05E79A5A8AF5D48732BE2533F5434F8C6A
-413A90A1922D46B894CCF8CA366C4ED049142245BF77753B4ED19700E16518D3
-3254A6EF730704AC9EBDF9EECDCCACE4525A6DFA808DE4094383C2F74281EC73
-86E106A3EED8497A15B6966E4E00C9F46577DB1AB5F6A3C2DE0360EF4C140165
-968A3D36B10258E2866764D324D9ED6B377F3026A433F2D850103906A729608C
-6230339BE659B3E6CDC5239994088AFD77452A173E33BC1963F0B845737A3040
-CBB1351E499CC6D02684C0E019A709BC0826173B340D815533324FE52E6C851E
-D4C734EB3064D292B077DF7EC087CAE537D54F5CC85920492C5E0631AA13DB19
-F50ED934FBECD744C468C443C1AF9904739589A6362CDD7C359E1B5D8B3D409F
-A0EC10FF5A64FEA3F8E5809E1C2BC6C1EC220216A4D21627CCFEC0CF7C923F9F
-1F18FA6BF44FE990AEF8E3C731431D044F4E3DE561DE8BC272FA8E28A0655DE6
-597B68539CC1320EE0B2F2B33D4877ECA9AFF56D2F8A67F65A47DDBCDBFE8818
-219E9FD419F00CCA14C2A79B8E225D9919F552567ED66E867CB91DC2074DC442
-A8E29392B0F40D77CBC215B60217D2BAC703954074F2BC90EDBA6470AA0F4A9E
-F2401222256B7CA2F6D18A085E687E6ACD5F2A37147C2D7FF6F0CC7B87DA3803
-B3157E9615F61B4792C3DBF7A44139203C2B9B1398C72A2255BD5D8803780F0C
-D2CCA4E7848F0E02C63C35E859B80B5B2953A9E68C221841EE10B1B0098BBBE8
-1DD9C187DB3C487238E92EEA4C762C9D48
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 58 /colon put
-dup 60 /less put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 76 /L put
-dup 77 /M put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA4111CDD092DD0CAEC1DC6D0CEEC3
-B291B4AF285DBA243A3457A855171EA0527DFBF10E34A60D3BE2092B3218365F
-07271A0CFA3AD15205D0D0886AAE1C89807C74C6BB23F55F0405A522BE78D4C3
-0E6C7A2C17EF66CDDD65AB75D03526DBD692FF1557B689A200BB5A593E92DA77
-01E5A82004AEF4402C06C65B21971E8240F87BE60F5F7E0B56D3024B7D49B9A7
-724C55353C362CB35B720A5405B2B9301A1A0083802E8766ADB7856925D45001
-1FA451AA61F72022FF0419B1650CE94208DEEC7EE3B53ED7F9E995F883338936
-EA6FCE2E2466BE5C04B46FC7DD9E80E6F1ECDF77599D3AB9E61C00D7E425636A
-E0AAD63D341CE31564C7882916EC35366208A3C06435BF1F55086D627E06B996
-7C49FF12CC6D0E793EB19C4972C3904ED0FA9FE0C4E05140CBAB2C41EC148B05
-43A9AD2CA401532FE0045933AE0B08BC1F16D94D85420A26A9D32A9F2486BD9F
-EA2553F2E8B6950F63A1102E9E8DE227BD756612412DB1520358DDB08CFFAEF4
-AC3597978F43E982BEDBAD042738D05AD42348840F9D0122535E6CE711AB2898
-9F1003DB762D3B15BF35F3B7F593C40282FCDA0CFB1DD0B2B3A8DB68E326251A
-E4B6B6C559E735EEA2CB221ED8B8E2366B1BFAFAA234FCAB5F94F7134DB434C9
-7033F5ED902DE94FAB29392934E8DFFB00C5D27505CFDB2F1BDC7B10C9379B1B
-8533F17A4369203D2C65B5C75975A65D20BF6880FFDF8043435779F26127B38E
-09399EBB27BC2CC481594BEAF8A749445805A6EDA1DCDD02D7F23038B6EF99C3
-18918626F164B6F9FB32CFFB0D936C11AE7E2AC80543864A65EA8575DE49848B
-B09FDE687FA8AD27D0221315119A0EF7CB87E6C72A232B51E48F4AA67AB0FE6F
-36C4BA99B3C0C343EEBF2C0E5905E71FB897C0E80C9A3B15A9CBE81994D24580
-EC447198E94134154F103060C6CCEEC2006A2F7B8A01457493EDB59205B0194F
-F4859CB75EAF60F98B0A213864DD8407DE4DF86AE6EDC5147FBED02C022B26D4
-158A8313188C7BFA5F185AF65FA75F0A17DE6A5CA276DCBDB01CF410114E8B17
-5DCCB1486455DDA266A778A9EEB6B41B9DE0F79021D241FEB9E9496DDEEB6558
-7145D3540032DD2F1848CF4AD9F88E67C4B77339BFA9EE3CF75FD78A63ADB40E
-68B3D693AEB0E7AA4E46B84BAF08CDC361A106C566D01FE63AF40D245B717B92
-FD7391F92B159830ACA6303C8E96AFA4780DCD4963BD98AF67D8511E4E6C6E7A
-32616CE5F6CB270F01B6AC4EE342610E0CA1AF1DFE51CECFF133AD714F5EE89E
-978C4BF5EA08125733CFE4B0C3853429E910677D568EA9A4A0800AA5D391A772
-E8114BC600B2D6B2651BBF987CC3509B00CEEBDDBDD82330A9181D209271073F
-B37241398D70D049B9FF607A41AC70E64B928DEAB1A0B4745D98ADEFB18F2D04
-0C44BD18F8687967984B9D48A5BF27E09CEFFD7953E6D9881A197CD09B8C75AE
-31C9ED0FEF539E4D71E4DE6E65D106975A0F9C57966D50E678AE5EA9FB83EC80
-0020420E2FDB7F4234A3DF285B9D761E1F0A21018BDD9EB84934B808E345BF4E
-91556AE5779EADC1BD02E198C73D1D10A56A0F09F01302BB91879DBB084C488C
-972D39D4212AAD28F9B24C164F18CAAF595BB6F9EA9DB90C3AC98D0F37C36830
-F28A9DDAFBD9E3C84928E9EA230FBC0F3C3D05DE4084621B65D26AF4F07F74E6
-183E59EAAE390C8AC834DC662B06E83A9CADC8B891B3EDB56FCA7252600082BB
-DCE150610319A3861811339A621DEEAD6D619D475BA86984561F489D052BAA18
-7AF5FF29298168AC79B1626F882CB19F6AF7DCC4E28124ECE52599C51890E580
-132273798D3013CF390A8569A8618258D3570D2F1E538E96793E4A939293BCAB
-A9EAB62579E456B5C80CB9B79A70EB36080A6AAECB786FBDC7F19E6543F67B8B
-39D24FF379D8C6C257C2E361FDB384C822DB095DA0F10211D6572E4DE6D4E8BD
-1770868E2752631376DEDD29CC784ECD374D72232026BDF4650B9E2712190D39
-4C0748743D7EE4706B7B31C90E5743E85DAB062B01DA4960E0314D9D51293BEA
-9DC2DA2C67DF7186F9346CA769A0C7C6E6DE1BD9B48709EB87C6E6139BDFB245
-69A02887DF104549CFDDD7FFD86E9822FFFD2DF186512BB81BEE95253FB15FEA
-01E04ED643D2C7ED7B43AF1919ED54C69908A87FEF3C46BE979787C79F885451
-3C658541A8E388297ACE1CE31AF3DC7DE205B72F27EA432387A609D9401C0FA7
-B53EF719D0BA60B400DD9D02C7D9626799D39C51039B3D0408CBCFEBB0B2EF81
-220B69B2953E00666BB31C73F11F1E6108C62F4F54138631B9FAAC2C9F92935C
-2B3D9989D3D78AE5CB66BB48F669178200ECEECAAF28DC0D5378238DFB8C4DEE
-D337C8F28BBAC0840F950DF373EE8C3A59568D95648E33802210A3A563B5819B
-14C059E7F4AC6F426CD4E7B3F1A2F6F4C2FC19C2C3E9DA7D2C8F950D7564C282
-860C60EADC8F9B71B90DAAD27095804884289E914F0BF17C555A91FD07B13DA0
-66232C27711289C4D5E20A39A4660BFC00566BB31FA6511B763EFBF1CF95AC91
-CCC63FB618BB886C3B7318CC8301E323EDB4E016F0F7889C4FEDE858094C23E2
-8429D32F5C52CAA03CFD74820F2B956E61560B64CCA58607B300CA9166864F66
-49FC01C8848EE25857AD731386858093E9F87299D452D9C13D06F90E9FEF2C9C
-B9B78EA3D3F31785364D36B1650A567AE8CF30A7A5E5C6686B614DFFF65EE9E1
-04211CFDD13B3F021E5D9C965BB56FA136C0B14761ADEB5C8092088990E8D0D6
-B92F39F4E85E71FA38904C93EFB4D7FFA8012920C2445339BEEFC621CD4765D7
-01A9C397BDA9C3C0D0E6B15297BA0BBF6169BF10162524EA71D7CA539FC209BF
-375314A88500ECFB9C7363C5AE0D7FB44D0D1AFA09F34E57AAEA2EA67E2888A0
-1B202C2FC4017AB742D5437E8BC89CB24A4A1B0DF2453026E69B60AD3AC8EEAF
-ABCC24A1F4C628D67BBC03985396C05E5DFFDD98A0CD615D37EE0FC2C9173D91
-7F20B0964E1FACA7FEF48DDF1ABD76716E06B403998530C15C434F1FD2BBB250
-4B95E75486B54604D3687C2320FDF083A23C01A79363A225733925DBB954D366
-3C535E17565ACB00D3ACB5116996A172743511888EAA2D69B180A4C4FECCF034
-BBB539DCD94510B84AB82E9154C93F025FE50BF00B325A6CC4B6974BC3B67596
-CF605CC04A14625DB25A6EB9E9F9BE93066E34A285CDC45ED330AD2073A9DDF4
-8D3A6739CBF4E846C3BB01B9DC7F01055BD43AA0022FFFB2B93DC850419B4BF7
-97451F057CC0BC68C208DF288E8A1310A015BDD1019C17EBDB42CDCA2509CE3C
-E74D55C55630B10A7F042F260D0B285DE8399D11D079E91F348317AA3DDE0CC2
-A8DAC75318B5FEA8A6359EE3765E6F75E58D354B9607034F6A8BF0B22C9F770A
-F537347806E5FB7C0A6A9325D0519B02A0E7CA47946561B848BFB1C00B5AC67F
-BE25853D147950FB70854C7F4C8D7C503850F1748DDA6210DDA2BDA36DE9AF9E
-7D4DD3152165C9AFE4CAD15D146B71F0B7F2DEAA5EB3E1637A9CB5C3CF60ACB0
-7E6A11244B3FE758DF42E346A847B6FDCA6B6FCD7F02BE7D467CDC4AA2435E5E
-34647FB8C7EFCBFD144895C0AECD5E0F2AA6375C005C75535C0833FCC123A07A
-C841157D68C80ED5341FBCA8C83274C751016C40FB73A5EA4C6ABE1ADB730CC5
-1CD781A616C79C2B99EB1F13115FB00A8994DF8017791E23CCC269D90D49B402
-E1AEEF2326CB2AB44079CE18A1FFA08195CA2AFAD0ED73D907F4FC6422B882BE
-F7CE67E17EE720B1767BB925E432CDE667B4D3F0483DBCA9EEF9A41A786DBC81
-AC9A52114892FB6D2FA892B6FDD27DDDB9E173AB1DB7FD612506E2D0338D1747
-1ABEB8BA78BF7127FEBBA18A70DAEEB612B7E48885C76CBB9DB5786C17B286C8
-A955C89B3DC4FBC16C3DA027D10148F5A2C685255F2D165570BF8BB7EF72A0C9
-F90C740E57BA036C38B3FD04BDE1119FD3582FAF9F254220CC20532D8C839CCD
-ADB7ED9483CB784126475CDE0E8B2C602A14D13486C214AD6B53E14779E7DCD0
-59A4C4D62A704B4EFA896439CB66B953822B492265FFA6BE2367DE24DA97CD5E
-31D715A3320B7D0E1EEC35EA1828A218BF3B2B4EFDADCF91DDF152D4E4F92155
-757446DD8D122A22AC3C02D9FB49D31732A03F9AAC36B0494F234466B3C239AB
-4D41488FFB5EE503F69942287348E09637CCE28F1A6671B06E8F700A2276B2E9
-60BCDD1CBAECFE816F6A4A1277569D6EF85BB49503708F56A8411F76E53148F8
-A49C0623E3EC3DE32B280F5BD47AE3F759589C2E4DF29ED5DFC587E8241F559B
-4B6A1F8646D292D966CBCF651D751E5C92751B289BB75A8058E9B19C375013AC
-5B810252BF23FF9C7A0A568C6B4E329F5B71003118F3DE19F99760B525AC3D51
-AC85F6E4E47F1EB7589AC39379C35DE27F4FC5B79B8F5D33049D4BF72A8FAD0D
-04A1C77795B44EDC59FEC22A5843F86D18FD4415FAC8AD44AA7520392D57B7B6
-2C755EF3AE81A83D965E65EE8583F575AE1CC4F50A37F0B3C007771A5B60B01C
-19FF8858951E0E7CAC7D157D3F5BC7F0E453738DC33EB390F31D38781CDA8578
-F9555EA83FA8BF8BDF55740882D9140C9596ABD438E903B366ADF71304E81E58
-FF9B51BA19FE3EB5599C6D1787569B44BF26D4E14FE79C1D47F3FD4E573CCECC
-BA3F8FD36B608D87CAAC3686BE994B252287AEFD9A14AB3051CD4D751F27DB18
-BED214064F065F20D3FE097DF160C63EA5CD01B3C27788A927C79A21C4F2164C
-EEE8F38C79A7C68B1C1958F7B6F0F696A203C93918B3C23DBBEECCCB2EF2D96A
-EF6BA2A7AE40979ACEEFF78FC82EA9B34F6126F515C307783045FE80587D0FD4
-D0F81422E0B82CCC82BEE3D4189536E2C08B35AFAF3FAE2D5D009DE9BB99598A
-A91B9B58964B4CC7CB625084C0DC42ED14D685C25C85181A8735C4EA6BA9CFD2
-B7C8E67977D047470C7A778166FF42BC4B9A8F33C5451FD16878F6D65A47617C
-543A1E51AC939FB97235FDCD67962AD3CB5985DFA5737B28AD2E24DFA5921B3A
-CF2CF5FF6687C7EC9C66C4DF80C039DD5965CB1B49D0091ACAC40AA078DF781E
-55A2457EE55B1E0422C5F8074A9D475E194E5742857BD6544A636AE573FD8E68
-70BF3858E463E94E5F5D956B9859DCF1917516005364779BB9DDB66F5DA107E4
-2B5BC512D0F9C32FDC34794BA631A0731CED84706E2FB9AF7CBD4ECD53B6157F
-7B01BFFB519C87689E2A489833D22F3C1D812849B656E6C91088880F135DEE39
-FBE71EB03E6B5AD77280112F6C3E2636D22A38AD1D34F33B7C327122B9F4BE2E
-791FED7545D52ABF2ACBDFCF770F8F874806DE0D1977776B330FB8D84A52834B
-0D2BC3FC18BC1885959B65A2B395202A8BE49350C1E133EBAEDF41D36345C24F
-86E4576E68E81EB707EEFED92F6F09FA46F2F54BA766E3B20F1CFBD6677B59EB
-73778BADEBB3783A5CFA9138815187A86694E8965FABF1DF6960865AE363D418
-4C3401F3854DD5C241F3667E2CB34EBBE9A74D890283DCA529E1B63DEA16898E
-FD241DAA19EECE2869780A8A03BE546819B3C82762F5757E72C0FA749F90050B
-BDDE78E6D01685F6DCEB9A6F45E7EC9D253ED34D2EBCB98FDE257FE1AE7D39C7
-1171F5425F3604B93531EBD0DFF691A905ACAB90F760AF4A674C500119B91549
-0566246482F9454E3D3927239AD8DEEE6D4E9ECB56748D2965D7D4C59E358307
-F936122ECCF570568F9C8C8FE5F135AAE916CED51041840BC4B1F403FA632FD1
-E694065B7F48EE00FE1E6ACAD8B86A11F3ECCA19B5ADB114D0980766991F8AC1
-573EA9B5C8FB5669574CC0426377764CF911BD316C8A7D772F78F47524112BB2
-A32F11FA6A6D1B295D96456A0D621C2B8F284DBD8FEA152D9EDE6A68B9CE8CED
-65E380ADEA02DD9C06733A4984AB4F7F8C5E87E58C9AEC65CD3490C87C04DCA3
-42AC5CFFDAF21995432D0115B425B20DFC3AF8206354267FD0A8242BE0B23B24
-7B8BFE5CB5A2340838F3BD77B6ED26A6E43D2F732F5036807505B5E8C155D194
-03E57F31DB974254F3CE52708587825117D646942431DC4A29E99E7DF8193B3F
-2C9FA9049DF511A48E405A3B798F0855493AA0A2777BF1F9F55B6797F27B8711
-5B34A0C897B7B13543477D159232939A052E46DF470936A8479BCA8ED9F97F88
-A9D77E43F19DBDD737EA504D94AC6DDAF29AF0DFB73AF8B7681E501AE88A6264
-B879436A69BD0DCF3465BE9D480A31B9702B2BDDB87D647E5A03B7E931505CD6
-7FF4595F44DA7EC3B1BE6C3E713AB806A1737D026A890E77AD137A9317779D08
-B84026855E4D84BFF2B50ACD7E4E23A50B888916681BE1FFD83128E9C36029BB
-AB6225DECF2F6DFE22E12A084C27F809F53074A272735FA977D783ADFA5555C5
-F2FF03C670E2018C9388CA3034414402C60E0D49E121FA06B54E649E73E65E2E
-3376B59F3E3221FF238488418E7B969795938996B506C9CCAE529C1AD10CBCBD
-B2DC727D9722C198F7BAA1BF583AEE1B88740668CC1E9EC960B33820981700CC
-01F5AB0586DEA46B96A72EBA2568E8A3774935B4A17BB2DF361B4E4D30814CAE
-7C6BABE324FE7FCC67E32F773924E8C995A025948E253CA14FD35DB48A4C9869
-10ADFBFEA18E729FE71A53584FF7CC8E50D04A3700181E0218558C262873C7D8
-DF424F5457D76FE99ACDF797E542433AAF9E811516AC28698A179E17915BB3E1
-368DC25C96394147D0483ECB7EC5543595AD8903BEBFB250C76ACC782BBA59DD
-36D393AB25D84A09E19F7788CAA4A9110997581DCA6EA82B149660101B9DA10C
-66A13ACB601596B68CBDEB3F8AAAB3DE33874C0B07B71BCB6E4BF05CA47A7AD0
-69B6F516E4ED20D017CE5D324FE97D7FD2412A73B92D8601B8D716AD4C87891B
-53D9E95DFAC1F27A582CCA123096B12BC1BFD68F432956606CAAD9752102B925
-555EB728A26DCB480AFA1E87F2990585E477E5E83C045A72FB2DD04D0AFC8512
-640086008CD6989676719D94E4646EA41508A6A4C25E93E84B3928E9F875186D
-B2C6079FA73A221FADDED66AA88F5B49208D10C2E1E91E25DB3818D69E69F10D
-197A16CF687E74CDE885CB876C185F19D120D916E66F88D03B308ECD3BF2010C
-7530AC389495B4E63B70999149C463F46DC3FBB0E77E74ACA0E0CE17172AEFB5
-F3D559DA122B384EC940CD845E8B5271D2859A12F5E913BA6CCF8576ED7F5C04
-9C4FE5B7DF849BBD08DB1B44A71A59CD1769853CF9E49A3425D48D19233988AC
-3263BD7D1861EE4E99C9D33FCDE02854B0A9CCC24F337F04F9AA4F0292F5613B
-0DC69AFFD972B2EA03B018057A588936F7868AC2FF5474B9A9584F2AB70A6813
-23571813A6B3B48ABA4CB44F6C14E9DD5EBC97D9A705F215B31352711E6DDC25
-27B5CF2AB2C4A1B2310A91711D39A4BB8EDC93361A18A38487F8D2E3C91E5D80
-53C2B713BB837DE72556FA3D1E797EB6A90D83DA02DE424D074B6A8EFF11BE23
-D9E905B15C4860FEC665B2182CA30293A86B5D1BB1F7230D7ACF88D7C53317F2
-57FABDDDC049CA2CF03E8F0FE9FD160736418DDAD7809A85D3F3CAE9F7C51E3D
-2238449F781D61AE69614F0B307558D4423C86EE67C353E9B49DBEB7B060D7F5
-25AE5A7F64F20D22B4932E86D5F70632334D3F08F22B81472545ADD27C389FAE
-F619E9FF87185F0F54BDDD40430CC44576CA2A2F3F4C115D3C82E53689203F93
-36421BCAEB7FE999BF2EA19D3B126C073EEEEDE1E841BA512B2A4D8E1BFB3A8C
-B2272496B09DD88CC7C37EE8E06BB92797FEA48E4845D7EDB60A61206C581894
-1FB3FFFFA610E81026A7AFF8D400EF068D1797F8512F05223DDA51FE18DFDD7D
-79FA8754A79D501826F705CC5450BE63C2390764D2AF32BDEF3E45940774C9AF
-E869BCF5D5C028278DA373F0B0B6ADA106DBF419FFD5ECA3C60A6C1AD46C6C25
-5C3DC971BB07A23E3F3180DD9DEAEDFC2A96DF506424C5EFA695150D5B550AF8
-E60CDEA33876B075EF693883F6FB70EF5676B4552318E1EBBD4050B2BAD9273B
-FA895B3DAB65E4202AB0EBBC633A0810F852824D3FA83865E505F0A226A85D26
-C7D69739B671A64FDAA895F7C98660E43B18923702C6E02C3B0806BC375AC535
-527265D76CAB05110C7854CB477F1ED55D0B876CF2421E3FD0F21337AFBEC2BD
-24E8E304B141B878DDF0A9F692E1481FCE9FE8734E6FE9CC2114F0F341AB9E03
-8E4118316EEA0985914711F52F7D2CA2FF11FD9D79C5CBC12807B5992B8485DC
-494FC91F87A7A8731CE88752D02E4527597BD7485D4B88BADA367D516EE4069E
-12625CD755DE031815AE82EEABBFF8563BD74A2A5430F4B084D7F10CAB27224B
-8A8ACAB00DD8B88D7A3B9F05D769D8328E46C1345B7BA0DAD75302227CE54C2C
-AB035F296ADF6F7F7E7CDE3EA657F1244C2370C6D95EE876257AD318A92D90D9
-4249B2EF5F001B88C41BF9C9424E9904A28951038318B55BEDDD504F111622D0
-0F9D23CDB090D27E1A7B0B7DEF03C71D5F90523852FB2530A4832382EC10EDDD
-EAA73D2C1CC08A53F1262BF636D56748631DEBE79B173EBF76B6E2334BF0D855
-74430668E6E49160A25FDE5DB59FE6320B10D00AFDAA328324572B6F767D98D5
-ABFF8B9418D51864EAAAAAA2872BEDBA9ADDD7F24012DDCD6200E5B322B2FBF2
-3A37639CBD9918FBAC813DDFF7A330CEAF3BBEC787D6B404C88E22F2EA4B0F88
-1260BC45253FDDB713D260F72F074FF766A841C7B258F281C092CF643013ED6D
-F4C3DB7750E93E405958FD2DFB84FE26FB582A61A029088B6193560370751546
-230789365755CF9412EE72731564C80661E5D607DB15823CFD57DC71DB65996A
-3093A3328998FC86ED7E2214BDAA5D70F0DF0D54D0E2380B71B9E321131F247D
-37AB1EE17FEC0ABCFC5906695B15B21CF44DE062BDBC4B9088844D4F0E39E071
-0B33110F36C709E62F7129C3089F2C235F2EFCB1820B54FFA88F157C0CE08271
-AF58E9BEDEEB16F461B77596D9FCA92F3ED5B751FC0C0312769C23E85DB83BA1
-A1F8D74BC27276BD842D5856664582B3F5414E2213E382DDD8EC2EEF31E79B95
-C2497A33906574377E7FAF03CE9131A925189213E7BA883D30BDA2D03A696FDC
-E62DC5B68FC604FC6E612BCDB18482FDAD3EE1E2E0ED7F93C91C81176D33BA53
-6CEBA5D8ECDF838640ED67372D1B2943A94D82DC93AC338C57CDE651DAE7C234
-03630634D5C816277DBC9EC71DC0A862F19B1756A11703DF5DB91E110FDC7271
-C2EBBC42F233B575752573E7C3DDC8EFC73A6B8DE7E6B8D48352C3733CB9635C
-ECAD66C97F2DD346865CF018F46B4565883834D989216E3CA25556E1F9E98930
-394B985ECF798743D8277C2AB8DCAC16B483610DB7C3C90F71680D807BFD5493
-FBEA7F3FA4293659AE976D036FAD43D509C2DBA3992DD24DE8A99BF1FEEE7431
-31705015A098AD47A51E6D955DAA1A4B03CEA003E0273BA5671F7F1998238D88
-D0DA4262B134AC9003BCE375A75AC93715F8F2F8A628409CAE9FF9D119301B3E
-E8147F1DE16649984430EC4BA948BF5C74111D0F8056383D444F6524C7FAD4F8
-6A4FDF445CF8EEDFED560A6C262E24C0444B2AF705926A9E0805A1911F0230ED
-5B2030D956CEC14A102CF4F8E8C3DAC74ADC16C169BC4A4DE75DB3CE82376254
-00FA86DB89265200CEB4CC133B2A993AD95C5AE5A695DEBB05624CEE6DDA6B5E
-A089344AFA90ACA83A413762F0153EAF7DE15333BF9AF6E75EFEB3964D59E183
-42C5E52A77C87E85E2B3049508C00ADA5D6F0A8EEB2A4D71DF16F3DACD580DD5
-68C68834C0778B469ED2F8C833A1BA9CD0DB2D6AD88C506F5BB23CFEF461D30C
-ABF3164B702B433E0156590C1FD699268144766D3AE1F8E582ADC19B2D4FEC59
-0DDC8270512D3318D854BE1BA7F545AF9D9A0F3B59710609AD7A624CDCE04DAB
-095A54E8FBBBB1987D01EB7CD1B6BEDCCAA46A07077655A73707D6902BE02565
-EC7C6145AF4E52D1073E3DAC7C087A14E9631570901BEE1FF3255B8D501384A4
-0658B67909EC2F6B90A1BCEFFA9D74C1CF5570D7EA96391CAB7CA4E0CFDDB3FB
-C3591EEB49AB7B154973F0EEB9879D53DE90351F0F76BD90764ADE187C68FEB5
-AF1B4B290F2F0AA66E1D138B21C1D4EE491ED26EE44CE490F326A0407B0FA267
-1707218CA4EE1FDE220835476614DD67C7845DFB243FD2C5D856ABC7E97671AD
-B85BCAABD214B9D9BA81B4E925A726A122F1FFF11F9581A3F08645BBC4197B27
-D40D2A95EE1DAFA9C8A6157E0E79866BA40C0702B26210725AA2239785D9D9F5
-017047AB62B57F6744B2D4A5D642E971074A2FB1F8809AB65A52E96C51415FC1
-A5286427DE8C81BBFB5A218090595CC14A86A40ED9709D5752157EA673A4084A
-93BD7E215DBD1148BC140DDC68FF8F3C1AE10894D8BA9C4A3AE55992F88429C8
-DD9B8247EB0D653FFE69165BE6827825C1F88FB36E69F2A8A3CDB6D72FF96DDA
-072C65F51A898EE82590678C43FC184B532ABBEEB801F0143111C9941F2B1C3A
-484DF4C0AA7E738EB2063278EB7B70E1BAAA88C50BC462ED449B66E4E0978C1F
-7DB04568AF5EB412C3E41BA22E8273C1996042DFF01F9702B676E858F4FDD430
-F6B417197D8999945E9A82DA43969580863825D31F9D59A0D87D0F313FE2C28B
-C6B97A98DB142B88A45943DD49471C3424BEB1DB482E9650B0B92AC70FE8845C
-DA7716D68C9C2A14BD68F379E2C9DBFF92DBACFA705F328AC2D196F472A24ACA
-244A17F00C82EF653DCB067E0F3762CA52E58A5604D29EB1D56B2EB40417E2E7
-9406035A253BC2F539D5B09ACABB048EF1D689A5889B9C5FA6B2E0E2EDB9599B
-F6F4B355E3733E6BF9B21DBF7580E52526F2900F980B3C28062A33A25CE7F6A7
-4F13D6AAD9327ECC7F3F97BF15C3BEDE1A0DE042E749F648354D061C3E52E7D9
-F376216E4BD2B782A5AA0D9FDC5551CF660285E4CA7363858C51DCC79F66072A
-2FFD59D6799BC84EDC0C5DC09D9E40056A4608B235F1357D454ED3028322AB8F
-DAF5CC60F8B5EF4E01A8ECE97C491D828A87CB85D50CD56E4A7BB6DE2315CB0B
-D0113AE20B4EF27FC486B648C3C0E6F69C1FFAE0C766DFB8B16611CB504FCAD3
-06B8169190CC5F836CB68D7CC34A8434BDDBBEF33E2B778884A8070654378FB3
-744459C9FFD348B2059652D47335D7C864619700681D45A39F068430F8DBC4F0
-D1122FCC17182216F62C82A2800FEAB2247A07413B3809DBAD5A03E1F1968BBD
-B41B98142B9B0403D882A3A70B334F0365353E51A7FE4309DE4EA9BE3B695601
-3CF86249952A437666BDFACB7D272F200A64B9C09A125287FE2779E950687EBB
-3EB747653C8D95758407DC3AD8C95AC3D2E18994156FD13CC03A6653EC7A2993
-F9893778089FA63708B0E3942A226A5289090412CBED2CD71BE93DD4CC56F095
-2E41EB41DE3CA0F8953C28C3285C57B75C13CB8A7E588054BDBF3B5AD6E86965
-4BAC32C54CC88E2BA882A887BD84BBC8F15DE986DC2118D2DD0A0E154EE11815
-65B18565F5C97BA8F5753324CCB5CD8D40463D909E832CAD28E62AA2250D8DC3
-120252A10404200CEA8A2B67CF44676E6003B7FC2AC00ADDE1227724B9E8999E
-B5A4E94223504B52575111E828E4AC03833844683B64101AB5D91EFB4CC8A822
-72C394436D8930F1541359194EAB8F44403958F415678D3EACC777022271EBA2
-2A76DC2E2E833B426A15D5AE648101CDB8116D353A837D466E4311DD86F1D921
-64EF76C5CB35B5B0E4B8B1B93861E03C1B635391276D77ECFCF247E714CC67EF
-72209891C418D1472541D68A6761EBB440E360881E993D3FA4E29CADBFE733AA
-7C260797DFE27403E70F6B1D2E493A1C55B2381AF9A815808B5081231FDF30D7
-CB3A1D091A4B6887F9EF692C736AB5770BA5921D48DB3F196A4515FEFD4317D5
-BCBE5394CB5EFDB4C4A972B669C294966E5D76171CE5B903E4D8E6AE50C5C075
-37C42B59E74CF491556B618191C3489D11288587FF05713B18529C7C7DE1B9FC
-CEA7667AA32EC4F02F452F9F20E54C89E071ABFC4155ACDB4DF3900EAEC25386
-E14C88BB174890A966703ABE3B6EE4E229882DD0543C3E33025F072EECAC34A7
-7945C2D58A721E42FE71F1A2CBC59EE8278EE39F6BFDAE2AABA5562E0970991B
-75A3AE1B2B0CE3B8BA0E32F6D281990054BB095B9E9B128D54E3492C08380208
-B6FD878894DE6F487363C826F26F5B810314E48E86C933B885D21887ECFC7FA7
-711F256D819274209A0E08AB6E147F7642D07C97F92E70699D88ADDFFC941A17
-E521A3D5E3596491CF5D9BB95E483C353441CC4748A59F9E49C79968AAD58F19
-38FE5E275EA22403CC4A287A30F7B616CD4B31519AAB4DD7237916906B59CBCB
-C275E1E993B33AD6F76E945DD4CFC3CAC1BA88E5CF9D15F03212207182AA054E
-9B53A2469E76F128006747A7E3E95720EC90B43BAF6E016205435EA4AC8C8303
-E1E41BF20358CDA809B88C72AB0C2011A6C91A884D542D92971327564E175217
-A40ED9EDA6B45192C46B648215A556591A5C8AFB8468947B8BEBFAB854983A44
-CB88DD24D3C8920383944E2FE13C18A45D4A5507110C61FBA11945DDE8F0E5C6
-265F450C30BDF5D3C95F40573B139857539F01E8C804BDC8DA9306C133E7FC0B
-66F52013A1D7C4BBF2B2E1EBF80EC769D802C7117C06AE917206ED17D13A3E95
-5C987FBAFDF8B1B49E00376E8B4D60E9F2B140267A587BE8D14B1A0249C2B1DF
-003533FDA36B565ED493CD1A807E139F6C2CE7148B6FE62615731CDFF1EFD40A
-A79DCDDD7F4F4CA0D00DF277E7A38556B684A32AC4A8B6998EF6C1693F043E31
-374B86213BF7CAEE905D239D358FFCF91EF2F34DF7E0A1A16832A54640D42610
-8C77E6BDB82B862426F153B0C87170D31DA509ADAC29EE7A614EF359D584CA36
-787DA85840A14036378E25A53F907D10F7416D5334705DB9A111553FAF2EE20F
-9C3A0BFE2D3BE88C28899043C8293D012CD8E2752F30A883C2287D5AE64D00D7
-443218C7F45449B4C9B2BCEBCEEBAE0AC8934549F5E27BC01AED860754AB4962
-12C42C1E066CE0B5726331F64A1B6A738F4D79388076AF52C46CE481988B5341
-85A8CFC7F9ACB1F0647D33B762CCC7C34F91BF607940DFC09040775AFC3FAF6A
-41E89010D5700942F78D5F6E159CD13806F1F62C28EC0BD6F40E4E812B50F088
-A20C82231D47C911A9F4213077793947F6C8EA53BF2763F75779BBFA65A75E27
-791959727522E48FC28B9C649BB0AA1DFF96D7681CE5C8A42632EEC5CB7405FC
-167DAB24900FF3CDFA2FADEB8829283B73CBA2B1A95B483CD3E6F02C693AAFF9
-9C09D3D2DC196A6EAF720FDFE7C060FECB0392610B17EC0AE65C72D89D892694
-99CADF5E3F60F6571E29EBA897831B8AB7253557713BA2529465C615D848A1CB
-57633090AF2993CF37E19A97094B8686238056F22AAAC0CD81034661B9BFF73B
-18151C4DDCFCBA332283CB1970BF1830DB778E626626DE94E0A8004E5FD830CA
-93E4BC3607809BD56C75B558196999C92E7325ECDF73AA32B49C49C3C5FE4B95
-7F50AC40FD642A52CF12F3547ACAC754EB8F7164FE5624BEF7160B14258EDAD8
-E26A181219321F2AA523CFCA7B2E12878A5E242BB7BA5C9F22D0C5722766C564
-306F713ED39E883D2A7ED68A0D7C7EFD64EB39FC189A0C7FF8111660A188E19C
-DE642C8F2B0D284AC2B52405206A5E1A449319D94B3DFA20DBCBC522B5D67431
-E3A072463B59BF356F924434B5AEA53BD49298D25738AA79AB1E274F0A7E9330
-2982789B56EE39AEE8DF359C968C704C7D3B8FCB09FFC69587EEFA7E39DD5370
-FF513753E7518954525B083BFA191115CF310A98EF5CF0C2540265031BCC9694
-8C6A3F1A053753838516389F26ED5D57BE285F92938D59B0DBC6047C0439E127
-55CF071FE044451EC5C557F6CC29D8C5256EB48AFB23A0CCA88307B7E8EE1E45
-91B46854300FF369C6D84072D4D1625A0613CD330AB55B0B326554909D57C7DD
-73422A8588FAEA378B917785E75F25E4F4183A36AE15C7FC2C3E2C6E890B113E
-0B3FEACB2A3C5ED2F7E5BFF91E8E273869D4143A954E6A5C1012A2FC7839A878
-B86D878370EF71ED0A7555E8858C68B1468E130C1CE3A6199D93FAD963AC0877
-1981237BF431B598966143C8DC7F3B802729DF288A39EDD5B06F0F808741C6AC
-4D59EEDEE8655A6CB5FFFD911D8A942590E4BA2709403D0741C70B0FF9FBFA7C
-C3FD928B5B265DEE100172E5E917F273918C7941AB9071E1C3EC631AC555CE9F
-35F88068E213C0F9A4BA7D133755EFB674717B4FF225AA16BB0B7A930D7F4474
-F2C9C784CB7C8C0A2F2201B57541D25DB2C2C8EB11D172306F7F912149C2E61B
-40B0A570CF8A47F792860E4CDCBEB9A05B511E4903921CB80EAEB5A3B6567E14
-71229E7AE16210B7F307E1FEB739554261547BFF5B559B88CB5BDD64124817D1
-AAE0DEDA95D830BBCFE0AE34A90A70E42BE5E9A54D420B7F15D678425F1F7408
-B0A45ED88BBC61FFF2433D65AEBC21CC21A454F416913AF8B4272F7E20CAE1E6
-0AFB2D16F862DFB2861CCDFE73BA66BA95636004349740C2E9292EA3C326F077
-1A69BE963D955A35B72920D063127E3C8DB8655C089312F094231517A9198B70
-CEB0F01B22DD451966D72B2152947AE928D38F39C34EA1A6DCAA758EE660700E
-351A8E433028CD6ACD63B6745E0F501E72E3E3A001696B500F83B67E027E47C4
-36B251893D87A5B646C1BFCC94F2516C5A82CA364FCD3F128289F1DBBD0E1BD2
-8D641FBA92924ECDB132C1F89BA3650DAE6E68BAD856CDAC195A70FBB0D9ADD4
-BFE9194C5C2C525337AC29B8A55D56BB2BF90C004F1B5B3842DB2581E728BFE7
-4112D349EF2FD56CD145DC9CCE9F8364830E466E60F6F437EEE13DFC07D8009C
-ECF876BCF50BF9C60CC60544EBD3BC42EE61F0DB1ED1EB920CD367149B52B2FD
-353B4ADB2C18A087AA670E492BA5FAB513AFBE786F2A729D93F28D282A2A1945
-3A0D2565D395FB4A07E97F04E1A50AEA7EBCAB7D5DABA2603BDCA8FE770A4012
-114B736C19E1649153A74C74E7218A0A031EAAFD8420A712DEB1233036455045
-18F9902DB6390E82EF280BF3C104B4E25EDAD22880D74EE456D1E5225D683D5F
-13E8DA2C4D1A8A1F456D9A3887EB3D9ED71BBE682C7FA3AD06CE4F2C554DBB72
-71FCCF5A8D945387E9FA42BE9D774C44FD296270FB67B1004273051EFB74C2AC
-2E215CCEA6F18AADA4EE6B94915242B113F094ACC5D837566D5B49C51FA2012A
-792357BA0162EA6D04C7106B60E25EDC02CC4FDDC90FA314E4D9DD972536C486
-7A772B06B55C1545C98E90E8104FD7AA76B0DC12C7331859B6DFD01FF9022F05
-34FCF3DB906EDDF0E8
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636
-6E02817082BE6FE0B04249A4840C11F95F8ADEFF72173E9A5F2AB2F62C427E5B
-DC010E18641EAC906A5EF0F9BC2108062134A7F10956219C5847C0D82F0E8663
-12D963E012DF0DD899911EC5D8096F80B49CA3444CF1294FBFAB57DFACC9D01C
-46F3BA2F3D1C14EC30CBF83E5729F1C074D4F1665405CF54722827FBC24AEF08
-F6DD0BC6A79A2DB1FF539454E8F5D1A42D40CCFBC093AFD3E57973A009095CEA
-B91FAFD236C47F453B38DB0067907A28EB5E9ADE87A2181F1D6DE4E183631716
-C21F0F952E0666AC74371F8B5C888DC44FBA5607435A619684F502CF625663C7
-94B0DAA79BE8E129E7F5C5AD1B7495C1BC9B1C759867467F55148C7FF2F914D8
-95218C4C3C2D2DB3482C21EA050F23D6A7A056B172EB210276CDB3B1DCA47A9E
-8B03B9BADC72F42D28ACE31D0633A0A1B22254F37EBF0433F0EF1CFEBC1CC653
-E3EE6D197AAF36E7FFCC75FE1811BD701298F763AA466B7843770F5F21996A50
-DAA186F387AA9717FEBF91992ED5C4DED8E2C57F0C29F9E3C607A0B528DEC8EC
-4908033A0EB87FE3614C55D35338F758606E2B971F4F1956D9009904DC07007D
-FB7C7879D19CD37FB26769ADA21348B058957261B5A8CBB91F9A4E6BECC2445C
-BF9F64DDD464C6FD2F3E8C89A40CA8FC75CBF6CADA6A6B7D2C63EB5714D15C26
-6E5AA387CF1587932E216BCB4E7391D63F1469206CBF2E297124D8B8C93B1418
-7855751D9C3112888B1E80AAACA230A30728456CA5B1AA59E075C5B534895B24
-F7689D6D6A998EB98A49CE1E2548C4059539E501B40B465322E26B47E2D64843
-E6E675F055A97BA488249709434A12E8F25CC476C8A43944BB37C25EC841F696
-0202AB3EA1EEB657105CA1EEC7B3BC1860F59E1D517B1EF715E9E7946401926E
-D0A2FDEC1B14931699A266CFF4506DC74CFD11878E9675664F7B0984F807CBA1
-3F84CDEBCE60D893C887BAEEBD19C68D676727B36D31591AFD543F60669891BA
-94B31E3E0267301F74D799F5116296B883D9940164A8FD9C5EF6BA97D75949E2
-32995ECDC83C8B55E12858B4AF11CA04CF1DBD9E89D9450AAC2B8E733A702D27
-8B5520A3577B7F8EA6A1D7B0B468262623D6C55D9BB33C6824BBF3F48BF10599
-42C77FF13EB7EB6F971B0BB2F06F856541DAF495B850AB6402528C284A4BA939
-65D7754A8AAE431D01DA7C7547C92F29A3D152A758D6237E52C61974DC49BBD3
-AF7E01C6CA74526E48515B5B19D8A96E67A403F8B96C699F750DC36C46D1167C
-C3B84A260AB5E7A530B8D23B99D098F7160C4C3C275A1F76ED1E167807C65135
-BAD8BE880A844B64A6DA80CC40FEEA6CEB6EEF1FD01504E1BC8DCE99225BC02B
-A4224B206C072E95B6A32B4CF6351CE1CCB009BDD15C304E566BDCCF714D2E90
-46B3DD8F3180A0FD2C814936742F96B99D6F8853F55FC596F782FFF3666137C7
-91642CFF9EA7F703E67820742B44104DD9355ECAEBB9779CECB2D6790A84FE34
-6194D3AB97C02C4AF635DAA0365BDC2B8FC811A9676143FFB839C488165F941A
-6443A6CB4550F5399B1A4C60B4992A0BAB139F08EBE8FB4F072D208511888489
-27142135141C6F5CCFFA6A2494AE9985CE6B8864BD50B9CDD2D9C19A83371CCA
-9626C02A938CD95A052DFD66C0C76F807732F578B9FA4057418055F9281787DA
-8CA227B2A7A106E4BD09BC0D5F1D14D5C325B0CFBC4B2BD7E64037896E8C4D37
-CD4B78191DC36999E7AAA353DFA73251BB85006018BB901DEDA41D48339B6CA2
-DAB70C8465F78ADBE36BB42DFD2547E9A18D01FC529B4EAE6BB1EFCAC5FCC50A
-4AA032B2FC7323488EDDF56A77C8C82FF09A97212C295946A81058C3266CEB83
-7F76EC815673B6449D53289112E3A09E874E0A75443AE4AB1796D3433C7AC5A9
-9E90C2515BA532B1037DF0B26E8A900888D57BA61CE086D8D48140D648BC4EAE
-490CFE2D9694B7BD9C45020769AAA8C3CD90E1283F2A3F480DC7FB575B8B8435
-FBD16FD244321C4958142323025076A52067231FB64D602DC386E8AC85B76B99
-D702429C8DF0A17E51670DD63DF7274790D2464AAECB288BF7A02CFAECD3AC61
-1C5E6C819FC5F03E8A98952287A44DCFD9C9079DFA9772E94E768478D3632AFB
-23E9195DA4473F141EB705A949F9F7149ECB0315EC56DF03F135E1ED0EA6A046
-AE61A8E88CF70A59CBE42C4987414F4593F53C98C8C7C82AD4D8F339E426AA61
-B207E51BAF2323771794FA1CF77BAB933A36EF91733FF412E7A621A8DAC07A96
-E8E68E22388EC51C61ECD1CF6E1812D894A9FF867F97F9B3A15EF0785B6AECAD
-B4C3DAAF79DE59055A270A86A4C299906C90683A8AB69F06CC473C6B0E3470AE
-5596DCF72CF801FB84A338C1BCF8AE0CC43D3581C628B5AD3EB2D01CC89A6845
-D1A66CDC12F662A4D9D73B1DDC2978E2B68B4F8B8E7B4389F5448680ED77BCBC
-09CF4106FA91DC27E02A05747C31DBDAC47797CFE9452C43F6178D2F835EF7F1
-2DF381BBB65A9A2D390349E955D8A2126B17CD7431EE7AD45CB3B180049520AB
-90EE579C057019BD152D9CD985EAD1D4E111BE36DE5503B7F55D95FAEC4A74C5
-D0A61A6AAC800729DA9F7F8762F6447A5A30B3591FD624C57CB42AC85A3DC6E4
-3884E778E4A76801AE7537536DF232DBCFFDA5B777784EEDEA44B184CEF28352
-6F9FC878EF329369D22C9DDB965615AE9551CA29E374332C3AB0DE815AB44196
-42F9C1AAD67133B5320CC69808D934491C1B963D0AC3F506052675A65AB37F5A
-948EC38216D618F4F18555B956E82914D5218C956D08AECE229685B190CFC9E5
-C8D7A4567FE38E03273C47F698EFBB2950A73AD8C07543988399C7F586760C90
-9B527CBBAB1F343049BDFABDDE94B472FC19B269F15D3A315883526AAE6F931A
-0EB3CAD700F88C29CE862CA43E43DAE03CA982A81F58FC879BD445945168326A
-04C5A6380AECD7EBEA3D0FCFE1EF1B7C310368CFC0EDB1D6E0547DCD5831CDDD
-E06450C1EA0D8345A0D17DE19A5EF92136C1F8F404825B82F50315DC696A921F
-B8B2FEDCFA3E999E494B57010DB57E4345C721B4736C55DA23671088813BB09E
-624BB63B38DAA68C21EBDF1F3DA652EB693CDE19C6FBFCF8FA9A2BF70A01ECF1
-1C358D5231D4135876E48E5FF1A4B9DEB14494E5A3282BC88F386165EBBA6928
-8E0DFF6D932D7FF591DF34A219D395561D905F49F89309314BFA91082B060960
-816C86DEC3BB0F6BE43E7F66782125B3925BA85D97CA2A1F48A3B2362777EE5F
-3D476B1A16664CAAA5E7BD51D2C890828FDDFC33CB16FFCA42B6898472FD698D
-D931B10B439675B5C003882A30447058FB4195831A27286F25027B10F5B603C8
-16254D13132471369A1800E3D5FE04806B8B445A293F6308F9C0DD0130CCB422
-764E87361242E7BC3EF8EA420A26B3F2ED9F1E03AB8CD73D60302389D6507AA0
-7356D610923699B603701A87D9E1C5632FA5856597F59FAE2CAA6D47D17A7EF0
-8D2F208F8818271BCC8896669BFA402F2002EA57261874640843CE0F1F8392DC
-87109F142169FA8C83D4FA1D2971CAFEC7439D67DA2A615ED0C961601078A251
-5524579325C7A82A13096F32D3EC76A67E2493A91ED24A6B2DAAA49951B2D332
-3F58B00ADBA185CF3AA9BE207725A0B286CAA61D076117EE225E7C66E2462A01
-DE9D2885C5E97C472EE04F692703CD75A55E846B5B3E9672541F3EF0A8EF34C7
-CE1FFF82424D3EC2836BA099781D08F43EBF74C7DFB20FFC208D5B0FABB1B0BF
-779B386917E1DF953E7DD89BEB6976ACAA42FF9206849397D61705835FB87958
-314BA40C37D62D6F02A70375A93056B55ACC9621CF94B19448AEA37D5B43D9BD
-2050D71C3BDE5B624EAD096F67327B37746C3D07B4B408A97DD4AF4C0DF7473B
-71916E53D2CE9A9A133FFD0B392B1FB47601C2A9D54D844B4BCEC5EF938E6D1A
-DB2A905B37908A8072C54D5737300302306A586F388368CB7A506296DA6C5E17
-2B8B54B9EEE6AA1E11557B26B1D62C5B4ABA17FA10D4AE0D9E1D3C4FE91D9E8B
-70B97F5A918DD46AED82E1E3EA4734BF45805D18531167A9ADA1ACBD8DEB48BC
-9B5436EC24279DC4B0710A0270A919C2E9722CC029AC29FC5F270B314CD211A5
-ED2C93920FAC054DB2524ED3F8B27B07AD7A63DE96F00FDF2D74D7957D3C856F
-647BF955B7EFDB0F01F9A64B07494878BDDDA08B63412234253C04D2AF94657B
-B68483E6145D7312D96F12C69E6C854394C377B619BAB9B371C8A9ADA103859D
-1C7BA93CD925C144D39AEBF2BA72E67C17437270992AD464626B43158AA7E7D5
-E8A25DD5D36AC2896D03FBD961432F735AD83F87C86F67025B749B4172AD9BA1
-6E452108889C5B1A3D656DF1B8993ECFF57C312F2B3B6DB4B8BC3C8380FA8681
-4C29470E19DC9E6A56F1D5D147D5D25FB88F890B750494BB9DB44AC231DD0CFD
-EB7CFB59F76571C86EA2B17D85B0FC0D2DF014463111C932DE08820B3D3C0D17
-92AC0C9F00427FEEB1F53135198538CBF238446341B9CFDC17646194583A3F19
-649A1503A7F07F5DDC20A441B1C2C70F38AD5CD8981252DAE9A3A8F4238CB4F0
-3975E0084FF6C31F446853CDBFE77B87FD7EEF60D57373A95C062676B4F79102
-92300F652574833B0D0AF2D92C214BAAFD656BDED35DECF617EBFBEA2E5A8367
-0198E4BAEE596F1C54B3ECA7D4D7F9AA9BFD5AD5A9D228FC6C6D1B7BB512AADB
-E84167C24B65291DB5814959E98A99931437B00AF36A30D5D98B17B278DD1D39
-13DF0B59AD0A1E91CF9B90CEEE1E487B6CD65E0CF3B3A74F2C7B8086B7270908
-F29076338AD4B4EA0D37C04856ABCAD938E9D4E9BD43BC3E13124727B2A085D0
-ACC979A96185BEAF79F042EE42CD352F37899A05176DEB9C4FBBD9D5B5A63D2B
-82B195936FBB29B383ABB647CD51E704879A1AD69C451B2B0F2A3327A67C0425
-D3A1AC63C0F73C25168E393C1767E9D07B04D7A2D1ED3BBCE1153123A8A1C89C
-64C6F53BB7BFFFB57040B3CA289669021C9F7800EF5F416042321D95DC5D225B
-29B23FA7EC5F8151A9CAD269EBF1BF9A4DD0D4CEB63988FFFEDB55A34C3AD692
-5334E33E7BD882A4ADA0D98BC2E7B4EF04587F2CE9D25A1ABA29DA682EAE7533
-52E0734E35CE7FB158D520EE0D66242703429DAF3C4D167AD0685187193E9FE1
-06EF6C3E90315064EB2EC2EB8EF53FD56012D7426D2C8BC229CD39723C339BCD
-989618B22949F6D4979D564D350D5E1300C71180BF74BDEDA4B5D961E887B357
-20DF075DD09FDBF469FC19981B48CD28CABB558C8AAEBAA54B36A6C303BBB215
-BB1C8B0ED96B418AF84C69CBBB60F054FA9B8279CCA8EBE8628FFF877217ABB4
-F2E1B8569CD2AA6B2224A275E6423E108FFD8508F17C703E9043476491687842
-5CE5795324D9B64EE0281A38BF37265355E8CC5D84CFAA60830C73271407126A
-BF9E48D4AC6723B7A8D54A8880FAB3BAA5DFB1307F7149F8BE635BF7C79721B9
-9448FF1170781E6A773AAF493B5CC7CC0068FF421EF4923BC8F7FC547191BE15
-5D45809DC1303B2E1C4C7A23A1D8161CAA852036B453D8D1B4DF62BD0E8BE7CF
-50B95DAC1C8E5844D4F18AFB129C71D0DFFF958BE26B57D4E57E3A0B275BDED2
-05E769FF2A073BC45BC3B2549DCE8204CF78B8950F38A92270F4AEA9FC428562
-60CC1A26B7B20BC6FB3B675B268138A49947ADD087B5B39FD45770DB5C10FB83
-DD18D7AB1C9EBB29BEC7983562265A1686CCD395AB0EF3C9748C5A33C2939D1F
-DC3146AF0F2E30B4172984B73A48341311237E974697D1EE03533061B865FB76
-D1C26FBE4E0CA76C8B3C278C650DDBCBADECFC3028F402120F1190AEE9EBC9AA
-A6EE57FF7082C113DDAFC9B094D4B9AF0E3405165BDAF284C478F7F10F294380
-ED8948BBD7AC87878B508D65797DC240B555DED69F8B883479CA5DF85F59F392
-93DD5C83334464657E7F5B344BD8B1803A42D4F3B365FD73D1237129A45488A2
-5350B2872598A5FE7E7E1C967C5A5E6533B85ADE0E855C6D559B8BD80E5C714D
-CCB04307AEDFFDC41E693F64CA3674F1CC113448BED653DFE02508C07D0B57AB
-FBAC51E87F46CD90ED99EDD6536E6BD9C5A12FDC8C38ABA2DE20D28E48911377
-49E573E47F6048A5616173EF23597922629BAF0577349E52F20E6F6D473C3AC6
-DDBBA3CC5901277D39F2EE81FF226E300A9BB0B5894C276F4718BE50EFEC1FF5
-8A2283EE27F5E199D62EDB8EA10C36020AF5312DED0050AA79D79F52F588AF4D
-7436B3555D7B6ABA5502645511EA6F215FEEA1D5E7790202F6125E4AC4164A1F
-B6A0C4B1AE9C25475DCDF4A9B34161858F7B7D0A2BA865C65E4BDD57F81CB8CB
-A04CC0326814E419EAFF3ADF468C654187F9F9E4E699AC891BDC68CDD7B6238C
-AD7DD458F9D2BDC35242631DF71A327A2BF6BCA1CC3D7236F8B9D615F5A310AB
-DF553AD76FBDAEF228E3619DAC71528B4842E9EDF753F3F9F17F0D0DA81AF276
-056B9EF78A0EBC517B40D1157CEBEF8B9AE4DC17FEF5AABD97BFA91A3AE70112
-0F637C128631161CBD9D4C056F8E2D3B2A90F48108BCEC3871766E242B2E0C82
-1E4BBE0E468FC1C1B7389734BF0E9638634BCD62B00C8ABF2691CC2DB6972588
-A75B58640CD738ABA1BA4C17D66987D73A5C36081894FAF432EC3847DA898C6D
-A4801F56CF236EEEB28C6263584B701254AB7112E62DF2AFCCE0A57D6D252359
-3609FC9E3721513165D54FD71A6DC7F2FC7EBBEB54659C0DD241ECF2CD6B835B
-D43C1840855A3FFDDF4A260A97C86B01111A5AC6BC55CCAB612E68BF59F3B97B
-8472B792F72B7BCFE16ADCEF782441D6B1ED237085AB948C1DF3C6A1AC5E548F
-1651F3EDF3C8D445109FBB6EC5AD5889482F4B73AE2540A4AA1B3CD153BFE497
-93E758F6B2E07C6436353F809A66CD6D9AB482E75CE2B55ADA22A2B1C55F2810
-875ACF9E3F5B9E49C476FFDE0FDA12E05942EB9C4C59A10CA4231E1A04DC03E2
-6361E285E517DD39C80C97CDF6FDF4B794EDF24B78ADC7995501C8E3996C3FC5
-CBE409478E6192F9A782B5B163252BCB4968BAA2B0C9CA3FC905492F9BB70855
-25CA8873DD1C994D65E74F37C56FEEB948CF5CAB1C6D51DF6C1E06B3DB776740
-6080D9B0EEBFD8EE81F607A99DA723FD58AC40C2E23B095A3B74C0282A8B1B5D
-03CF0FF89AA3F18CA86792F8AC6E29840019186058F9B000B7CDE938DF60F3CB
-C202602F2378C608BA9D002281CDB22DF15D4722ADEC41EC942F7F826AC6F516
-6A1943156FB0DB95DC36A30ADBD988846B0C8EC476E5DF4E536FE4B7717FE1A8
-5FC19A2C469577B609073119029A9AE6A82C9E00E3E6694E62116AFC0D7CC96C
-B645F7DAE1CBAC1FFBECE873E590614A13E21FD94A805561334767CE5E4FB6EF
-ECD1A83016BD9F6469ED9F1D0EE77BF5E88492A1E569A8D1A54B2DB47A93369D
-7E4DC9188ACB4523AF57A86E1595274B76FC566967989D50194F59F97F6F039E
-243A91094E3CCA88A899A347BF94CCC8A733EB2A9F646C77A2C2FF36939CDFD1
-4AC0BC711B00B35B6BE4017CC994469CAE8500AB667153C99E9FD5CD386F114F
-8ADC7426D9A1A229B604EC688610D0055F287739054F9BF7330C1716182C3A3B
-5B1991C09C75D862DDC48CA11361F38C387F7CD147122BAA0F7CB1C8819006DA
-7257789A3083A7C7349114871D8AF42677673A3AF007E9CEC3B27A63EEA877F1
-91C5820BA602AACC3351F64EAD99EF9D5AB7880B3949209CFB66A810673BB410
-73C7056D04F2CDC9457E790F649951B3AF95ED7DD5D9A97C1D7F6A5DD76A1B3A
-9AA803F712E73573CEB3A1CE391D276B3FC20E1FAF2781FB035D7B1098E9692E
-2E6909273D14F754778387B24C4CCD76DC6EFBA53AC2334653EAA12D96F986DD
-44B283C6370D191113A5DB4F972FC2FEB6C7B51F6A41665F544C8B60460842F1
-869D4FF7A64E884830B866A7609ACC4B1F17B4337EEDA863FDD72AEE54113C65
-53EBEC75EA24C5F65FA0AA7321D24ECD23843A0317ACD32D09B1F3F690DAFD5F
-0C328FDB63A9388B128ECDBBB6AB3C8D054D80BC3D2C6192960FEC592C295CE5
-503308B68AC6DE1FE8A0E6535FD283CCBDF820A23F399746BF54133535A5D7D2
-42A1BA10E73D90FDB75028936C4E6EC5FE86732BB869BE527E1074AC01CDF755
-AFBC2855A2DDC8B44AF4FE761E58B04E0FB1FDCEF4C45AEFFEC84AB88141D4D1
-038C6035009977652A3279A628CB134481FFD5281CD073714AADB87A8191A762
-912F238557F6A1825FC721BD32FF20E507138D479CC1FA57060A86C3748BC414
-9F475A5FC0E6096BF9C1E6946FBF9175C6F03D94284A214A83072D75CCA5FC40
-121EF84A9778E42F4D96D61B15518F855DC40A09A25B1221AC6FC13310F17AA4
-CBFF2950B4A6BD40E8DEEE0A0CE86A3C2314932C1C8D1651CBE2BF33C2A88ED9
-1DE9D87287EA84F2E6A4B9BCC914884B8305D9BBFCAAA91C52F44784F5B603CD
-3C2106E067669F67E2371AC3BAEE828D14114AD032F9CD2D7607AFD9D6C4D170
-DF7C005B7085736CD303E6D18C64488EB35A210BDC5E9BB3B20B55D4DF6DDBC2
-B1BC0099CB2C7CFF4DF3086BA81EE3309D8BDFDA4AA59727E8B5A7D7E520B0AB
-A1A123B776311DB50BF87E9E22A4C4F9A90ADD35397FEEB7C090A029A98D332B
-B44D8E8DE0CDA3A605BCCA9A470A965EF9F3192599F5B2218828A88AC877434F
-D7EEB17744ACF3C9E5DE73B08B1D49B517B8DFA306049D2F381CF68E47B6A85B
-2C9E6C72CA5C7799FB6C71A79AFE7F00F96B8C9AB952CECA3FD3EB815BB3EB68
-0FB79E838F1CF01790ABB471298D304B18037CB71F291EEAB1D144B7F64A70CB
-A1C754B12AD657D1CC0DBC66B7E6F93ACD9D5A8C7B36F959A99706B9AB5B3332
-7A1DBF66E13EE0E7F7EF900BB6B2BC14BD0F938E2E27E41FF4FFA8296EC1D829
-A58C7587E3BAC293A5FAFE95CFC4F8E133ED5F43A5FA80524C996B32C8E54B90
-C3BF4B3BB002D433D22440868DAA1061B9B95448F0425C138F877EF7CFD481CD
-15B29B6CDD5B440D64C4246FB79BB080CB85477BC3E09A57AB9CE155339F2E50
-5EF003B07A68B6769C8D87621A69BCA512B59192C7D06CB4461B9C8FB29C8319
-2872479837E3EE93DFB86BC3376EE661220FFC3F5283C00F043FC5AF4C089E91
-F602DF07DF62BB3990C59490CEF80B1D736811157BF54FD83DDE66EC3B040A4D
-E562EC4B502796F8602CC6F8C67A03FF2C6471A693143F57DBB5017C41998F33
-F6DF5B2C297C0C44C89C55465F7C0C2CC7846E7D3A096D7F6AC4B15D65704642
-CA4359A7E20456BE1AD12E5FE803C9F513912EE4584B522819186B8DE6BCFC77
-00F36A9CA7AF968675B0272A3DFDB13AB5AA3E6CB0B77E228F7A0CA45F45BA7F
-B7F065631BF416BCC832C278C4AE249C3DBC77FE7CC5163D06AE9771471C445C
-214E451884A7DD7E6F4D110EAA5EE71F5003A3FC9218EBCB2CD5E5C28BBC2FAD
-3F4829CB50BB5B91DA35CE8E00B33DEA993154537396EC1904BD155F4B01EA4A
-3F3BCD19E3F3BFD55A974A5518E622CFB06D525B8CA92AD7A290DE6D9FEA242B
-8B89E069868760DC9BEC1E42EECA652C0A1CB4C1763AC63A582BB15120BCD29F
-C1C5FDB0D353CF18385EEA4D99C8C69BC4B76921096870B2121084CAA1840CF6
-08AD34B322CE5C4AEAAA670F74E244EAF893134777DA2769A49767B49823AE41
-59CCD7B86F6B4532F672EFA35430B57871F768574A064C6EF9FC353BF988471E
-921B377B6DAFE54517B3D3276CF95E5772B619D3430E89F2A693E32A6A15EF87
-017BC9446751B38B373C62EB6C9287D2C1851634A833771ED7D17FEF8683B643
-17B1F717FB3CFBFF9609D653E407C05B23567A5BD2E624250D69ACD2047F3A31
-897740E407D6FF79F719270ADB6163C47E6F97987BFC36AA5C0CE086FE19BA89
-688E90A92EA796E87C4BBC45493FD57199AC96BBBBC3677ECC3CA3DC5310E414
-65091454BDBC56D276CC3B1904955A5FD555C7CB3FB3C99837B7CF398CD00C2A
-1273AEA37A40A4317A1F9519D725960ED08D184C2B42B2CE4D490CF870D88353
-7604CE9F854D134474F22516F9DA1D170AEDF6527C268D51693121D3E7D6F43A
-5CBF12758A3F70D547ADC3388F8DB433B08C7046AF624C08BE63437B247F6E14
-922B66AC15F172A23F71AAC52D95405D851381ADB28C5773304199135FEE8E89
-345C35ABCB6FE96AC1E85ABF190CA64D8872E4ABBDE787E59976460FC0889076
-4D9658B6D71355053D5F200D25ADB1E529D8A8BB547C7DA5F4DF91614FEB198D
-11A5B0ECBC8A9066C145A44B2E76DB97C8B964FE4E53EE9981D91814ABAE1697
-F003014BD58A125EE73C50CF278C4E7624B8387B496121CB8A41F13E076FC452
-9CB0962308EC2BA763565C6CD88AAB5EB9D499641BF50FB904152F64FF94147E
-FBF463E3CAAA3C5409007BBF6B8C60654EDF9FF305487C45FB49491EFEC6F8A4
-5E417E861B0B86610995AEBD0479824574D9B8FCA4875B43E4B89E6B3CC785B1
-E524D81EDAE69E2B71774210EAEF78326910A836405A87A37FE227473A034FFD
-1DCEB3468ECDA953BAD29F12DAC93653F615AFE7D374C7FFDCE9C15E52D7F2B7
-1D3CEDFD21059E9FF4B7E1355DE12E9C3B1E6BE7E4C0E28C5F4EE8E1514288EF
-A0476F13B17388C0676A16DFF26939319C14F72AEEDB6D4D51FBD5CDFA885E36
-F49C78A363D0849A956E9D8D8D6BF45AF42C1630F2F01925CB855AC9838E9A91
-8467F3E1DA6B4B6473FB1EF853593891E2095FE159C7AF24E419B743B135CD42
-E89823DFC5F316D927C3956376C11375371AE45C8BD02E502DFBC9CA56982B48
-B69285102C9B38972612B3DC8AA9C8AFA35830FBD3CB7C9CEF46AA860DBAEDD9
-841063BCCB67FC242D63014362310F3A6BEBC614E67AAE395F4285604CC37E94
-4CBE201FC1085D87303503E39CD9C338948287FCA7F351E2B055E75F497558EF
-33772AB2035A24C19D962E63397D7F9ADBDFD8EB3BEADF4C74E0A7B21E6240F8
-739237CA345BA42E0C6EE14D7087F655420E98B052199BEA5F71CF8B629D7518
-584B37E3B4DAE3B002B9F56A06D91A91DFB058096E4892C78314296C549EC7B0
-893EC4E3324B33E0CC412CA96DC4DC97AD7574FF232DE50AF0F2B581365EB7ED
-A354613092C87F6088D8B7A1E702282F7E8FA12A1675C88B4A2A4DDCA858C14C
-DA96EA3ACD45A05433BFC8502A02B5737D1F08534FD794A4022178F87A2C26E5
-10B4956A095EED54275C9B822E65D256F02355811FBF6B036E5F46B6F5EA4E05
-F3CFFB4D686A7A7501467F1BBDE90345A1CFD75C06A59A2315F35981338C1B0A
-65094CD2498E40233CE54E475A6F3E139D215CFC2996CCCAFF9B76FAF0C4978A
-CD54E73E7BF74C11DEC651602FA5B8D0D85E8A173599DEC761802DAB5157A40A
-AE177E59E1BFC4AF440FDBEAAD87E9E702214BC1A378B0127AA405F26AC727A0
-2046173A3016A387B2A00FEB03A1EB4001017193B9DA6438792983FCCFDE2D5E
-BECAD57F8CED5CB7002ED3E626B5477EA0108E85ED6D47BF044BD6C25BA9EEF7
-8E6A6E55179D18B9B652D8E13AC22A6B3DF1BC88F1FBB5534FC306D5473BF3EB
-57014EEFA1E8D7E719D7D17DFC71830FAE02298E45C13573C413E0E5DF7EFA1A
-C28B04DB57F3527364963B30164A58424C6907F7038B7DCAAEED91F0FAE03E24
-521BBA746344E36CAEC164EF0332475C75B2ED03459390C2BE49CDDA207A24B0
-BD764351D17B621D1933B2689379D15518775759A1091937EF8DC2D161BB4BCB
-A15624C7AD3EF06162A1DAC94D8B6C6C0AC49F95FF6C5C86
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 49 /one put
-dup 50 /two put
-dup 57 /nine put
-dup 58 /colon put
-dup 65 /A put
-dup 68 /D put
-dup 69 /E put
-dup 71 /G put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 92 /quotedblleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30
-4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632
-BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B
-041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721
-3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762BE10AC538E4B
-58C4B6BE0BBBE0D121DCD89FA1D8532F91EA374A83705EFA8FD4DFEB37C91DF0
-C1459A641899007FB972682950D1380B4537582E33C818CD46BE14D91C44836C
-F921476D1F55F6225310120A5BF9FC29E9B3BBCE29CEF9FF78704C59022BB254
-BB0981F6948E37682E172ECFFD060080860B58BDAEF87EE9CC9606838CE391E4
-144F941CE0BB5A49FDBC5BCB2A47011EF3E7B4CA1FEB87503D5CC5CC0A4BD51C
-D5CFC57415CBA0C3E89A334931243678CA19517332040320E2544F563ECF0A86
-542D89C23B40F671E78C8AD864FA543E49F43685DE66F6390C67CDE9CE1389A3
-A85EDBEC0A29C42FFF201BF642D9761D61E1BA6499B3EB61C2E313CB84E38ED8
-6F038A950AA7A3E12A60C14BC2A48252F1FC4A24049A52A9993FE1053401CE48
-34CDE4BD2C865DEBF6EF2E48F7C085FB8976B37383C9F8E3D4425417DA2F1DFF
-33A95CE01B3BE1CAFE80D65D56AC63CB2D873856AE925337292925402BBA4CBF
-70EC76AD6E5229CC4CB2B587DF328F780350D1E4AD579B4444F7BA546AC1AEE2
-C6E4BD774D3BF38E11F397F5439157F3CF809955C7927DC8CAF7D176720843B3
-6505A59181085C4F0C7D31E6A206F3C4CB427C031C459C797886CF2410745CDF
-4C24248346ECA2767CCC3A3DBADA103F1A6A7C94EEA4210AD76877733CA35606
-BDCD78C5A626F031B8B9E98D91F2BAA7ED9C2AB4954DA5DC94FC48C859BB5B31
-43131A021C9C903021ABDAAE0B20BD5A3B28A51CCA07D41E5A99C1F14072573E
-175F3465C772B0F4056E2716BE5E008D0FF1BA87B639E2B4A8F88539226E38DC
-732CF5B742D29C364777828DE30F57B2A019A932A1544E8AC5841D6782411945
-B76ACE4C2562028102372626A5A264AE3F13F746F3E478D83C447F6AB7304D5E
-5977DDF5C254E328F84FC29EB6E3010253BA4E6595364F15F06CA446F0B5CBE3
-578A9AEA1738D94DFB906593827521FB920B876CF9E89CA2E21AEF896492233E
-D81C02F646907E0532B5D646B64EEFF6FA5E91AE6503954A7B60883FE7B08EE5
-0648FFE45080B84B9563E98A3F679DE8E9BD3FB7A1B2F035549BC2BE6766F4DF
-A8400AE7A70C499D6C49264A77252B2D3738E666D7BFA5CDD9F1A5B203DACBE5
-F1EE7FF770A8A2567626162FC83143451EC2648AF80CC4EB48DA17BF683067DA
-F465A3C6D4225BC2282B4DC86217CE5AF2F731D07A56FD61BA12F7C298A3D7B3
-B1401B0A31D378D5E15135C014F563DDFD8476AD4A94E24CABDB0C1756F8AF17
-5715B2F045BCD1E40FDF22A58F87C593DDC28F5A1F53A089296357878ED76CAC
-A1E269C56FDA60DF76FB52F1950883B47A5E0DA7119ED98D56ED590AD19C1700
-34CEEB5576C8CEF59A22A39A026E0FDCF96205D452BC8FAD4D119E8E20DDD104
-9D7ECED52E420D85995B9F7969E560C7A49B3A4429891CF29E658D88D6AB6B1A
-0C2854552EDE7C2F6F4488EAD52EEA40EFA7DBBF91360A062B926B30B78AD6CF
-75F05CF91AC211C71A7317403461A525BDFF08C380FB2296672D864FA77BABF3
-D26D94EE5558F0985170F83730FBECC03E4BA0BBE3C3909CD9C520F05D8AD3DC
-77C649A03DF750A1441E67954670D427DC267D13D5C1C43E38110378F66F7C83
-3AD0014DB37AAA9E1F399BC397FF7359FCCC7CE758BC69EF13E50016376E98C2
-2CEA7397E8EB4F96E2C9965A088B061063D5D8DB68C96DD3662363A929CD947B
-CB477012BE5078D2C1E8B0179C57F7F67D3E2707067E27DB122D6563ECA39B2F
-1CD189D785354263449E0028190D7EEFAF6D0424509AA2EA43F6A53B95EE3FE4
-82354DB8E3F7B7833F9B55E35BCCD28F608D3A9D8C4B81E588D3A15DFFCF3B66
-4B0D156B223C61A568D8451E7E65B473907900B5040E3486FD2B0E0E0A5D24AE
-6D9406A9115DD0FC8F3B785CA4CB8E98DC1E7DF922485BEAD4AC9BB02374E852
-4960719075010F730A748A9E5B909A02CF7EF3EE368DDEC383D4FFB47A5096FF
-6139811F850DB3E05910EB07D2F04D7CA61FAC4DA080161127F1CF088BB0B9C6
-376B635B2C57F30F7D594CDA88B2ED752D395F360DB50269DF6FCC0DBEA85839
-906AC2E9FCD5CB3F003E628BE01FABCBDB76FB97DAF6E5F76F2FFC30FEA042C7
-2353540DE16611F350A256E31B3891A38F9ABC2970651A3E2E48D6817CCA709D
-A499AF22F1CEEFD30A005DA4CDE594F562135180985D21A5B180991E501F3CD7
-E46DBB5ADA616A329459559AF55E9C3C85BC89684860D5D9D0C798A213279CC0
-4AD06C510D69D922337E57789E0CD91D3F804341A7B803432621F3A166FFEAA0
-01A382152D1C61747C49C668B12D24FA861C72543FC3970F9117F454792A7349
-3BF873F2BFCAC89D0C17DD4898952DC1E69AF87B68043B385F1411EE9A879650
-ADA6501475945E5DAFAF42EE3E2FDD7868F01C17CB28A292DE35C305CD1A9FCC
-8AF025E0AA1FFA9A579E0672257A513116B346541F511323FF26F57D2CE59501
-84BB15C355D729B0C41C20416BB3AEDE66F45D6D6E98710321D3B6ED8E718626
-03ED3AAB1DDF52FAE18C29F48C6CB31735A0F45F4188A1AA3C0959EC53F7CE05
-757D437A569826D882AC4517C33FD3FAECF06F03FCE758F9A777C629C44ADD0E
-20DFFCD9976EEB5158BE2294D3691296201B19DD837779AA946441E673AA7AB5
-90BB2065E682F32A1D46EC589E3F0184A73AA5743765D6C53C137BEBBC9E01C5
-BD9F07165EB6C77393F4D4861A5C4CACB7E289FA428514C3C8045804C61B407B
-2BAA59B8CEE81512382CF039001F0EFAF69EC62AF9BA2A4CB53874F0D93A2F9B
-E74F9A58F9E317FCF8F82697E47665E55D518F607E6285CD826B439A775D4971
-D8EB1D2825633446806D7FF9AE54F62F82F5E00D2193DF1B23CC0A3323B8F6BA
-654BD4383D0B476E52D381B99A3424A7F6A5DD1F7A807531799899E8ACA483B5
-08FE009CADC9F07121703B6DEEA0284B941EAD7D53ABF0E172A4F6F4FF0FD280
-F95BE8E25E9C01A4EDC0D5AC0500A7AB8D99E5D7E7816BA87C9E913BC14D8FB0
-A4A145C0E398CAB10B7F281213F96B848C19FBBE3985FE439420277848F91C60
-E90EAA66922DA62B69A14648DCEE900D7CE9C87F3F375DCE4565BDC0D6B05CE9
-A418CC881CF0266C9E0FF3E02D1EDF4F46488B36595D534FDB419212E180E910
-507044EF09D562A557636D5AF6D1D6A4E9D6888AF4AC91402C7E67FBED2B88E6
-947AAC3C8840DBF58286C1B94FBFF1BE0732896A26F61F772FF979B667D4765E
-CC8380503610158EBB18002172D612EC5FBAACF8A724C7AFDAEB22CFD018FE14
-EC736E2D256FCC47DF8117477A7AD858BE6D8986F11762A775DCAFE44A81E309
-A16C619EBEB9623DFC1667C600409C30190113CB87A94512114E8A2C0105793C
-8A74FA831F05C81ABF13786372681E1B3892C648867E75D2C7F5D501520B64E4
-CC0BAA74ECC6A2E033047CB14D854E7A198C181E3E4DF06A5EFE9C6AB13E65D5
-2172BFE493DC0C75F6A5997A5CC6F7A622F3F9318B08F32C3FF8A7ED14BD9743
-58E8C60C45C858F5145459893011E9D40A667876F48633D079C347BA66CF02A2
-0F6B7A08159EF5F4D71D370E18CD3159A17988962F9764640E18F7CD34707E50
-D46C7BE1466703F4E5A76FCB59FD68C6DFB4A205E770FD1F11811B52E1A11641
-7720ECF4B11FD3AD44C2FB5E37279AB0C320704A22B8F6F70F53E0F47A619F82
-D4166E5B7C1EA0CDC1FB1AD52A6FED667D61A200E64A15D2C974F07457BA976B
-675764000F46AE8E91E351529562B217C9E9A3B93950ECF294996317EF4D929A
-81A8CA086E4A7242D48587A676164B7DC98F9875D14B044276FB4A031845FD38
-C47BE4F77018375BAC63648275B477024FB35208B4061A495EB1A9FC667DAE70
-F417AEEB931CEE0C9A435FA3BD20144ADB5473CD137430BF267ADA3FF5E333CB
-C80B1AD385E05F347329E68A1B2C7C0C05EFD8F49398922E9C6DEE3BA7198C89
-30B571D1B1AC79CD7390A46ACFF7AF92FC99CD10E9BA4407A2DB70D4BB1FCAEE
-FC662BCD66CF83B63A2B3A9923A56B0540B72510E498037AF9BE8DD385F32BBC
-99A202B137D4C540BDBAF6413877DEE14B26D58B357D8851CFB751DF2A2CE7D8
-F772D98DE7DD4A9FC7D4BA8D1DB4A439D57C9DB5F8F93D889D70E7716036E52C
-5A92CD4157C0BE9FDD4660414AB9F29428A7407AAC0D28793BE17BEB46D9A953
-D5D5F27C852CF88E50BAD670BD0847D4E1B167074D2964AA4944DB45B879BE86
-9C56BF924719799969C9E7DE3FD0196F3CD0586855C490C430DA82B220D8E86E
-767234CCAA939F9AF1FD74225DAC5746F3F29A8C89D001F193FFDA7580BCB069
-EC4A0F13D6C9D261F93055379E8E6CAE8359449B86057B2342CF4BD51787BAB0
-8F2E2277C7DE40A06BFA90C93C7F5DA6A3C71CCDBA9D944ED7B014FA426DB638
-1B39A364D6B98B631293FEDF6646F5D9E7B6BE216DBFA565907E308669012F27
-A84890F9E3D7B1BF61E831C8ADD8BCC441D02D964E6BD3128AE5030611AD6048
-66614FB904F2B8722DA5368D5E5FC7E1D60D20F2AC08B20E4E1FE618984C8A61
-391B281C55476EC56D1A51C1B1D39AF4A10CB0448B6AECBB9B014A233526B6CB
-005610C9228DABEC64B56D1BFEAE81BC1E9007542BE5C47E3B05CF109A1A6709
-54EEA279D32E4040370B58E33B5A1A1D80B395A8AB364C88C2FDD3F7EF449A41
-10180533589D20244E5E0A65C5F1D4275434E19B8AFB84DCA93AC1937C6C2CEC
-4A420730B464217660843AFFF049A99426D882FA2CC3680CEC254C6E4FF81C53
-4978AC63C602DBFDD81D14D3964C4739A1F3EF4B15C98B7A73D26BBF39F27559
-2AB8E8029F6E83EACFA1F8DA09CDF2562C002BD9367EBA5D682E5425CADDBFD1
-45FBE01862D7DE9D083C95502D03C779E8A51DF6131EDF12488396D512AD24FC
-411F248AA851B54E399B81CDBD605919771A4F3FDCEAB92274EFA582F59C7771
-10AE7AA21801548A13EA8532E0543A9C560C20EE3C73AA75FAFA795BA39372E3
-0DE80F5F47F7AB05B4F21028EF298247B51ECD3E34E0D4AE3C1303958F0CDB35
-6BE93BE9D3014161D81A3E863F7C3767F5D82284CA2605E43E0CD6C9A01F3DC9
-433CA526AC3CA43869D1E5AF320C19A7A034C03658C30D5A5A72C25B4ED43ACA
-E14D6B8C249D6E6D0C9C291CE0CBB404060E837A965A1F5D8937F681522BB956
-FA363C842256273A25E464B43A19B86DBF9EEAB1E7F70EEEEEEF3F93EF54262E
-647DF4701506F4B346EECDF569C85F7D03B29B26D1E8FAA28386CE07A9BF8E3F
-8DCA805F2CCBC55A6F5E32E50E32026BBCB128315E2D35E35EAB1E1C142D8C4F
-CAC940888BC1DB394595A3F748C9CFA2ADF493EE70A41C7D26556DFE9DBB6A74
-FB23C9AC863CB34BDCFE560DDF98D231876003A86C5714BF76CD3CBEE1052963
-44C200A3918E0EA3F51231515ED5449E9B8F06B451BA7B124F05634868C24D2B
-A14C0511EC27C28E836F76F1765BBFC3E9AC484721768F0475B3C98C775D5B70
-D9EC58945DDACA523EFDA41C4830A26E91E4C8D2006708EF956C7EBD7D19DFBC
-DD20A6598F6894791A6C032DC5E6540597C97651D50F83F6A430E931DDC0C516
-1EC297528B9D72B9787DF9D6C9900AFD7F5EA607F790984984FA603ACEA8D05D
-20560237F60CE521E9642CEE775EB04806912A01AB73EC92FFA64AA3A84999CA
-1B57C6C133EC4B6865DA57E83828B8AA2635B3EB57F64D2D90F9AD559E049FB1
-26886D577CEED6C370EB6A303057172B46F443FD4BD9FD0E0D50CB441D970151
-F01DF840CE3DFB5CDA9104F4A4B6634693CA32F6FB73A38F3173014D8E1CFE0B
-B163AFD91EA1D945AF548065FE55AE954FAABA468262E8BC19843EE3E11125A3
-CB3F59B3E32C6162D6F2C58B2CD5D28E87219F9A9A9722874A9B88911425E31B
-EFF198DF3480030F6ED1555C91FF3DB151E5A566819674659C25271450CD9354
-330C9B1CDBC54E4DC98861764E3675C336BB5DF130A43BBC7B8E2C5C40D16C94
-033DE6EDCDE05F232B3FEF61EC182028EDF281F42591D1F597B4E424F73BBB10
-F3EFB5F275E722213E52AB94AA6D767A945E3E82F9A217B786DFCFC19593A88D
-ABE66FCDF794E6356F991B754290088F9B55219AD3F20447B56716119A483003
-99E284DAA7321A4129BBCE1D9A58E7AF7C65994BB62D529EE7EC99CD1D1F658E
-C37052410F535ABFEF7B401D0ED1277CCB6E18179925F6E7001330F8B939F7E1
-605C63BE858882DE246270507A0A1777ED4245DD7CB2FC4BD49CA6F5DE6697A6
-CE05A3022C84ECCAE8F0F1500885DD835E13E5BB336B208CBFE1870F80D52912
-3F777D348EFEAA77DA609ADC6D53372F3E01182EAB8A05FC4B3DDE07CCB10BBB
-7441A3F2E4AFF140F6663B7DF0C96E804BF35AEABD1176D94B8974E199B6D6E8
-97D4EABFCD54C7B4629924F22C80DF1801EF9F8482660F5CED63AA229F225816
-5CEF2B6A12D736604089E3BC6F21E30A768890CC5DFDDCC10DFA1E614C4C913F
-1DBED33CAA775B1C01D58B30B57F26B9E6FDFC0F1449B5EB002D9D5B999F95FB
-AE0A1D9E7B8C7A7824463B841A0565EFE3F19F10920098BC0430A3A9A1898363
-8EA14F0A84D59DA321CB6A346FA3308AB7DB8A0BE4FB3FDCCF5F46B8B4AC9203
-A6428E9B510305140820AC86AD4BF419AF9094FD60FF3463DA0258C5F0FB767B
-FBCA4B62160FAD8D2419796FF10D8AD44DDD1CE8BEC22067D7AD5096B1E6B326
-3AA531227B02B0672BFB2ADF9356ECC541C556151E59AE021D9043B1847292F7
-E6E00F991FE9376CE92307A13C037C14CF1413EFAAC096A19C0A4B14B2089621
-81B47727C6014FA86F0479AAB63C4944D78A9AB967AE17F4F7BA746EADED5417
-D5BBD68DDC822C744432CCBC00587AFF808EC0EB5DB4ACAE9E55A18E2DBE88E3
-5556976658B4E181DE93AC670431D90FB14ACCC19B9EE95E7AA3317B9345FC42
-C7A38347F930152E7A9525561904F9292955226AEFD2CA05D9823927FD34D582
-0139F662DE08AC60D0456883744557E9B78C6A4F2E6B7535B3F5BFE1754130C2
-C9BA2B6493F612D4307F183D82723FB73653EB980A379CE58FD7E8B7D688AD7D
-CED57CF951D0B0D00671C9E0E25C748379A8BC89475616670952E796A1804B4F
-30D9A6AA145712D1C1859A87FE4C8EF8210E9ACFE5193261183D0C170EB03C12
-84EF83013710D350AA0438C0EA0A9D66F4350796327B12019E6B4BC708094ECF
-CD85AD6FFE5D5C6A9AC95FA066BB08F44AC97E8445FEA67E3520BF38024801E8
-912FAFDB543124BB8B03528F372B22FB2482D7667D57188118AB1C95B46AF0F1
-ADFF94D2E39D73DAE759928FC0D2F7DD00E854ACAC62B9D783075666A0FD9909
-99A6BB222AD272EFA07C9F4E62EA6E22B67C363E5AF7335CCF18DA0B59FB33B7
-2C352DA67F87B28AE464D1EE92E38AD396DABC9ED22CD973BB850797FA4BA155
-549F071280BB12C7A9B9D1834F32A3E4407963103ED244226E5892F5A2EA4144
-EFF6A0C4BA24BCF45B9366131D0C09D69AD50E1150859BC44E283EB84D257AA6
-F970EB9E48F6B60C8180C169626F43D5A232AD674B7438CAFDCA244F2F711FC2
-E50BE43FE379B9AB380882CD15CC1272450246E8FCDFB64E98309BE6FFCBFD43
-BB10D1826CA228C0C0331CA36216E680680289445471AF6528D2E3E4F6321298
-10B2D6AFFC5EAD6AA8721F46515473173C0040D5425E1D1BC660C864C5011FFC
-ED996B2083F5CC11630D64B5C7029237004710B1EF765667C8DADA607452CAC4
-60A1CD85AAC006CB60786D9F566AB7E9624D571B7388D5CADF26274C7EDCA1D1
-D75D054F5D931D7950704B18921CDDDF5CEAE257671F377A0C1ABD7597D4FB29
-ECB923FF12083BA90BEBC95E93B61193595C0BE7181ACFC3F5A068E6E56026F6
-984E01B341C01685E1D306AD9A42A7DD375704DDD345647989A6CAC2FA407233
-82BA30F71584586AD5F8308DD164FD0E788555EED6B1E8B0E4484893076D1D71
-182578ED0C5C5D4DB805B7C75FF92C7A1CC96773BA32203CD0C893DD592117F2
-DAFE8C9E1FBE859D3AFE11FA068279D7B75C0157F065FA16577A872CD1B2CA71
-784CAE81D720FFA3EE1C6EA6220B253FB088698CCE811D37C9668D2F71302F9F
-159C95BA8BC41BB56B7C584CBE6AEEF8D6716AC6B9C8BF657F340241FACB8B5F
-863DA71BC37F91AEF5F3EC379AAA07DA8BA900E45AC3888A1435980BA7ADB033
-B4AA9054F9E855E1973BF162EC3F4DC2455CBD98FC31D5451246CC88F3FF5CDB
-22880E3685C97149CCFCCF7DDD19B7AD61B46C8762194274F48237098AC5EC7C
-F2D7F56EB2AC91CC5275D7D0838BC76DA9E0BB1F1B6E88F439EAB042B3487A77
-3694AE03422D5019416920E7D95618B24B07A8D2EF7F6C22EC67F22DADBF1499
-2A2CD15EC4B518BEF37BCF67EE085B7FC3D32F56EA6EE08180990371E83B1327
-8AAB1973E6DA6188E1732F4D66AFBB39E7C21E1A6D299D87043B0C86F6811B8F
-A1B87646692587220A4AE0A91648F3E86BC6343EADADE07D89C674FDBF6CE091
-3C9BE0501AD4C13CB61B8985CC0C1FBA92A213B688A3DCCB1A13016E3196B7E8
-0B987D6417D7028DF1A94AE0B996962B085AF7584B0E29AC9EE2C22A7D124702
-F26855ACE2E21939D1746E843A679DFA46D7293F08CBC31EEA3D005D87C28B05
-D0AC1ABEFB49FFC9C5859926E7997A1F4007827221BC9077222208A7E6762563
-009E297BBADD0A33B009FDCB4EE02B6D1A5D4553C2A6A3FC4B1088E764F40A08
-59C9BA931D73143550D8AAFBE07891F64D4F748A3AE56F3923A8A49FBAFDD8CA
-22A757FA39E915E2002D1D9EB83FA146FA8FE4A375CD8D8B8BBA8F3054999F07
-67F4BE0292774E5B221075824D3D57161860763927D2BE57F82CE63D178AEA54
-24FDDB4B529145B32BDDC83EDF5918FB6930AAFDC21E1A16A8F64007455DE27B
-210CD374A3FD8291594DD90309D97D53EC23D2CE5105D54EAD696A035D72DC92
-98375DE338BC720E939F763BC5A3B9B1CA9742AEF605D4799E5149820B09A788
-F2777C9F485B2748E6DC1EAC03EBBD9D1160F679841BC8D068767A70E2503FFB
-F16FD289760BED0C149CFF778B006EAA6D10E2381B853BA57557640F76C44F93
-F6A3FD5EAC05027F2CADC059BADCA6B2FA2380C7E24F91633804CC32F93AFB71
-42FC3C5430ECF3C363E9363BA165507B1E631D80919D740C83048E788E27CE03
-481334F41BDA50EA0C5AC08E45657210DF5E9E9049C99BD86075F7AEB96C1DF9
-812339D5E95DBB961A6CCD4432A842AD176C0F11DCD32044D5D4C3CD870A9C19
-C2F8F8108E94033960A12FBA170465E5BA2ED2B427B5C4259FF8D51248DB80C5
-778A7DC0CED69DCE784AAA3D3FB236C8CDF9ADD9E3A8A0566A15B95481D64D1B
-3361C657A586B9E38AB0E98C6C67108DC7BE7413948E4488A1EB2E48F5111699
-3D5655D6B7F375FF90DC89490ADE36CD53B969C6B1491F020E70F926A4002F58
-D80516B0604E12A9EB0AD9F8369D90A690F390475F046ED82837106B989B081F
-AB718EA8337DAB429DCC126F80E23217C98DD8EA3449A73C66E6E2162E7C3475
-739AC26909A195E6FD34821FCD52FCEF60BAB85D81031B93215BB137E4D7771E
-6DEDD8C0512406BD0509050F499B20174F694019D33AC7B9923F11F9EC9EE79A
-75DC1C6E23D78137543F3F39040144A3AF04075C8FCA201A18FEDB3A9CAB10C1
-BDC2395425B27631859D655AB5E00AD2E7D044243AF8DD4AFA7E898151B94AC8
-58B588E4E8C3A8EF78DBA31C88CE8EE5B9581B1894876327366C782E52A05004
-D14CC443A6A22493C70D7B32BBE8FEC14DDE0DF75EC3EDAB52A7D5AA1B41AE09
-0279F8AFF104EDBABA8BCC9E461E4FEBC5CB3D2FB012C2F0711FB4A12CF7E8C1
-E973D8C32EB71F362C6743AF79F86A772854DE6B4FA36ACCD814A7AEEE7D6BEB
-BB431B064212DB00C054AB718D2579C22E81A6F49C76EB7382DA8A1764E04A74
-C67BE4207D93279A70240793BC6A5358E97D119B3F9A6F7DC8858B22BF8666F3
-91C9E444FF6EF893DA7454AD98E7B0BABF9615205979A8A69CAC43A9F69233F1
-BB922EE0DA52E8F41F955AF57586DC3BEA16FFBF55033CA2DD8F0C55297FB0B7
-E6CE026A3F2B08573DB1E91A34AED33429680E544A30108C90E597E8BD39BAE1
-75C4064951CFB38F1A64AB2AEBAAF6806DECE33488B580D9F9647EE41E8F9B0C
-7A199225C9174D025B23A158F4F04D76B6BB9F5B78DC168DA7874426EA616009
-9BBCB08948CE5FE807C0979F61F386576329955001A680DAC16D925577DC20EB
-E97243D030BF16DD5098275B6555B366B59989DB8D79D509D5775932DF6845E5
-4769CC4716952EE82FA2D09C4C419137B84E48EA64C7E119B43FA7D441BC2923
-35B8B5FC2A8FF5D46503AC496886596048611EE35DE217CCBBCF01749BB933FD
-20C50750C54259A7EC0B2CECBD752BEB13A899D4552292D77F4B64781D61F090
-D34D66C2C7C6BBC4C85016A46DE2637680534300A04CB6E0C16B5A7FE654B06C
-4FD71FA1A17B0E4A067CB9306A1AEA6CF5A590DC0E30961EDD056D60D6366819
-B3EC4E7C6B9E0082B86363666C83565C80FDCE6152F3B6607975822AA2897B78
-806881C6B8451B0C2BCF1FC07EB24BB304EDC5E64E777CCFA2B86DCC276D185E
-8DE6294BEDC1FF52975B1F017327E27C04B121504F45CAD532164CCE73D4CFEB
-3D216F46F9DB2C1C58EEAA9DA74586DA321A742E01C61773AD4D39261893DF6A
-63F22F80F02B38FAF41D188F923F889EBF1B0709E34AD60331F323DCF2097672
-7EFC30127AB402A3C4D9C7AE88302D5A7B91247AE89AA98BEB035DF51954A42E
-922E73FA4A66E378C6688A1CDF425A48563049C30216CA209BDF479914039327
-EB9175B4C8EA399F0BC02F4D3A1EF795F1F774D9C4FDAEB1DA6C0F977A4B4C5F
-FB71B7790D704F4DCB3ACBA2B32C0434635DB7133E5EBC144C2868AB3C4E67A6
-5C4D347D0A77A23681281EFE53FCDDA9DF62C7AB0F8B537BE4B22544B5074BE8
-7B193D2B5339FD46A62B8B14E6660BDDCB157F016FDEA3ED1CB3CDCB5CD7E796
-2A12A21CCCC0E568D56733CD6FFC3199A776E31F044A32801203B11EED7E8BA2
-F7153E9ED49EDCA747A48D8ADCBC4CDB33B9E530FD51AC36D43FE8BC19B07311
-D765E02E4BAC5252B9DD5E0D02C554A25607341E5C437192F2BE10B8D895FAF9
-BC645E2E714F6F2E9716AB7AC7706C389F5A072C222D808848D61EA3222F935F
-A58A4D0DE506E6EB351396E3F53AFEC44A0AC4CC6B22064AA6AC79E8BFCF477B
-36311FB56CF3F2F4CF290610E4C9EC3FCA898AD685B083593A0355BA6D68BAE1
-ECD13F2752EBD5082AED23542184F6BD0820711BF6889F74335684720DB88A0B
-D09973122AD44C6F8A29524427AEA937799C2A5A7530624872CCD6E0D5B4A4FB
-71128163937E60CE472641E0BF20E5AA447B7BCDFF0430B0DC51ED862A942C77
-6559E7E729AD91B5FC8A8C0B9A3A81A7B25B79F867D290E051E61DB6584292C3
-1D3FF2A43B7F330CC4EF51F889CF6C41BC17C0A37D48CBFACA320D0F8F81FB6C
-0FA345815B553245AFBF5757F50ED6443D1928ECDEA26D69132B144E610D67C6
-A097A94AD061A05F641FD4E8626FA58EC9AD6FBC956A161518732B84C1422EF9
-E70F0FAF340AA35FB904E50AE6B47F6C45A8E7D5B2B1368B45AD5B1CDE5C80A5
-9E65385C8C0C5CBB89189084E1C92C1BE209B2EE3EE712637127DD73FBFE6BFA
-9D4ADB559F6F5883F215273D674784A1C4F64F79196676942D2B90840336F42E
-EE44767432CFE2EBE2550487C9567C990BAF93A246A77F77AFCCA2BF738966BB
-D811A2922F825AD11D769C15F24299D7405341FF867FD6E7550463DB69AC5C48
-767A9F55EDCF31421FB230322E493A5B99F347E33A811C890F69888B35045166
-B37C730F954856C8BB7DFED1ECDAF30AF7FDB675F727F6FFB931B81476DE3F0B
-950456E6235B4E2DDEFB07CE3E96D1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 52099146 40258431 1000 600 600 (refcard.dvi)
-@start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 134[35
-3[38 24 29 30 1[36 36 40 58 18 2[22 36 33 1[33 36 33
-33 36 51[26 45[{}19 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
-49.8132 /CMSY6 rf /Fd 134[32 1[43 32 34 24 24 24 1[34
-30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 11[45 1[34
-2[41 1[45 54 3[22 1[47 39 41 1[43 42 45 9[30 1[30 1[30
-30 30 30 1[18 21 18 31[35 12[{}44 49.8132 /CMR6 rf /Fe
-134[43 43 59 43 45 32 32 34 43 45 41 45 68 23 43 1[23
-45 41 25 37 45 36 45 40 85[47 11[{}25 66.4176 /CMBX8
-rf /Ff 130[35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 3[35 2[35 35 35 1[35 2[35 35 4[35 35 35 35 35
-35 35 35 35 35 1[35 1[35 4[35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 1[35 35 35 35 35 33[{}74 66.4176 /CMTT8
-rf /Fg 133[51 60 60 83 60 64 45 45 47 1[64 57 64 95 32
-60 1[32 64 57 35 53 64 51 64 56 9[118 2[80 64 86 86 3[109
-69 90 1[43 90 90 72 75 88 83 81 87 53[67 11[{}42 99.6264
-/CMBX10 rf /Fh 132[35 31 37 37 51 37 39 27 28 28 37 39
-35 39 59 20 37 22 20 39 35 22 31 39 31 39 35 4[35 3[53
-72 53 53 51 4[55 53 65 44 2[25 1[55 1[48 54 2[53 6[20
-35 6[35 35 2[20 24 20 2[27 27 20 4[35 21[39 41 11[{}55
-66.4176 /CMR8 rf /Fi 140[54 57 3[76 115 6[42 63 76 61
-1[67 11[106 2[103 3[108 6[108 1[90 1[99 67[{}15 119.552
-/CMBX10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-/setpagedevice where
-{ pop << /PageSize [612 792] >> setpagedevice }
-{ /letter where { pop letter } if }
-ifelse
-%%EndPaperSize
- @landscape end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin @landscape 1 0 bop -358 -364 a Fi(GNU)45
-b(Emacs)h(Reference)g(Card)274 -256 y Fh(\(for)23 b(v)n(ersion)g(22\))
--450 -58 y Fg(Starting)37 b(Emacs)-450 101 y Fh(T)-6
-b(o)24 b(en)n(ter)g(GNU)g(Emacs)g(22,)f(just)h(t)n(yp)r(e)h(its)e
-(name:)32 b Ff(emacs)-450 295 y Fg(Lea)m(ving)37 b(Emacs)-450
-454 y Fh(susp)r(end)24 b(Emacs)g(\(or)g(iconify)f(it)h(under)g(X\))254
-b Ff(C-z)-450 533 y Fh(exit)24 b(Emacs)g(p)r(ermanen)n(tly)691
-b Ff(C-x)36 b(C-c)-450 728 y Fg(Files)-450 886 y Fe(read)23
-b Fh(a)h(\014le)g(in)n(to)g(Emacs)744 b Ff(C-x)36 b(C-f)-450
-966 y Fe(sa)n(v)n(e)23 b Fh(a)h(\014le)f(bac)n(k)i(to)f(disk)722
-b Ff(C-x)36 b(C-s)-450 1046 y Fh(sa)n(v)n(e)24 b Fe(all)f
-Fh(\014les)1062 b Ff(C-x)36 b(s)-450 1125 y Fe(insert)16
-b Fh(con)n(ten)n(ts)j(of)e(another)h(\014le)f(in)n(to)g(this)g
-(bu\013er)71 b Ff(C-x)36 b(i)-450 1205 y Fh(replace)24
-b(this)g(\014le)g(with)f(the)i(\014le)e(y)n(ou)i(really)e(w)n(an)n(t)78
-b Ff(C-x)36 b(C-v)-450 1285 y Fh(write)23 b(bu\013er)h(to)h(a)e(sp)r
-(eci\014ed)i(\014le)538 b Ff(C-x)36 b(C-w)-450 1364 y
-Fh(toggle)25 b(read-only)f(status)g(of)f(bu\013er)454
-b Ff(C-x)36 b(C-q)-450 1561 y Fg(Getting)h(Help)-450
-1719 y Fh(The)22 b(help)g(system)g(is)f(simple.)30 b(T)n(yp)r(e)22
-b Ff(C-h)h Fh(\(or)e Ff(F1)p Fh(\))i(and)f(follo)n(w)f(the)i(di-)-450
-1799 y(rections.)30 b(If)20 b(y)n(ou)g(are)g(a)g(\014rst-time)g(user,)g
-(t)n(yp)r(e)h Ff(C-h)36 b(t)20 b Fh(for)f(a)h Fe(tutorial)p
-Fh(.)-450 1905 y(remo)n(v)n(e)k(help)g(windo)n(w)813
-b Ff(C-x)36 b(1)-450 1985 y Fh(scroll)23 b(help)h(windo)n(w)869
-b Ff(C-M-v)-450 2092 y Fh(aprop)r(os:)32 b(sho)n(w)23
-b(commands)i(matc)n(hing)f(a)g(string)80 b Ff(C-h)36
-b(a)-450 2171 y Fh(describ)r(e)24 b(the)g(function)h(a)f(k)n(ey)g(runs)
-449 b Ff(C-h)36 b(k)-450 2251 y Fh(describ)r(e)24 b(a)g(function)856
-b Ff(C-h)36 b(f)-450 2331 y Fh(get)25 b(mo)r(de-sp)r(eci\014c)f
-(information)528 b Ff(C-h)36 b(m)-450 2524 y Fg(Error)j(Reco)m(v)m(ery)
--450 2683 y Fe(ab)r(ort)17 b Fh(partially)g(t)n(yp)r(ed)i(or)f
-(executing)h(command)72 b Ff(C-g)-450 2762 y Fe(reco)n(v)n(er)23
-b Fh(\014les)g(lost)h(b)n(y)g(a)g(system)g(crash)142
-b Ff(M-x)36 b(recover-session)-450 2842 y Fe(undo)24
-b Fh(an)g(un)n(w)n(an)n(ted)h(c)n(hange)474 b Ff(C-x)36
-b(u,)g(C-_)g Fh(or)f Ff(C-/)-450 2922 y Fh(restore)24
-b(a)g(bu\013er)g(to)g(its)f(original)g(con)n(ten)n(ts)114
-b Ff(M-x)36 b(revert-buffer)-450 3001 y Fh(redra)n(w)23
-b(garbaged)i(screen)717 b Ff(C-l)-450 3196 y Fg(Incremen)m(tal)36
-b(Searc)m(h)-450 3354 y Fh(searc)n(h)24 b(forw)n(ard)990
-b Ff(C-s)-450 3434 y Fh(searc)n(h)24 b(bac)n(kw)n(ard)935
-b Ff(C-r)-450 3514 y Fh(regular)23 b(expression)h(searc)n(h)671
-b Ff(C-M-s)-450 3593 y Fh(rev)n(erse)24 b(regular)f(expression)h(searc)
-n(h)435 b Ff(C-M-r)-450 3700 y Fh(select)24 b(previous)g(searc)n(h)g
-(string)576 b Ff(M-p)-450 3780 y Fh(select)24 b(next)h(later)f(searc)n
-(h)g(string)533 b Ff(M-n)-450 3859 y Fh(exit)24 b(incremen)n(tal)g
-(searc)n(h)729 b Ff(RET)-450 3939 y Fh(undo)24 b(e\013ect)i(of)d(last)h
-(c)n(haracter)580 b Ff(DEL)-450 4019 y Fh(ab)r(ort)24
-b(curren)n(t)g(searc)n(h)815 b Ff(C-g)-450 4125 y Fh(Use)20
-b Ff(C-s)h Fh(or)f Ff(C-r)h Fh(again)g(to)f(rep)r(eat)h(the)h(searc)n
-(h)e(in)g(either)h(direction.)30 b(If)-450 4205 y(Emacs)19
-b(is)g(still)f(searc)n(hing,)i Ff(C-g)f Fh(cancels)h(only)g(the)f(part)
-h(not)g(matc)n(hed.)-358 4311 y Fd(c)-375 4313 y Fc(\015)h
-Fd(2007)h(F)-5 b(ree)22 b(Soft)n(w)n(are)g(F)-5 b(oundation,)20
-b(Inc.)27 b(P)n(ermissions)21 b(on)g(bac)n(k.)28 b(v2.3)1746
--364 y Fg(Motion)1746 -201 y Fe(en)n(tit)n(y)e(to)g(mo)n(v)n(e)h(o)n(v)
-n(er)472 b(bac)n(kw)n(ard)69 b(forw)n(ard)1746 -121 y
-Fh(c)n(haracter)885 b Ff(C-b)302 b(C-f)1746 -42 y Fh(w)n(ord)1017
-b Ff(M-b)302 b(M-f)1746 38 y Fh(line)1058 b Ff(C-p)302
-b(C-n)1746 118 y Fh(go)24 b(to)g(line)g(b)r(eginning)g(\(or)g(end\))281
-b Ff(C-a)302 b(C-e)1746 197 y Fh(sen)n(tence)913 b Ff(M-a)302
-b(M-e)1746 277 y Fh(paragraph)855 b Ff(M-{)302 b(M-})1746
-357 y Fh(page)1028 b Ff(C-x)36 b([)231 b(C-x)37 b(])1746
-437 y Fh(sexp)1033 b Ff(C-M-b)232 b(C-M-f)1746 516 y
-Fh(function)916 b Ff(C-M-a)232 b(C-M-e)1746 596 y Fh(go)24
-b(to)g(bu\013er)g(b)r(eginning)h(\(or)f(end\))212 b Ff(M-<)302
-b(M->)1746 704 y Fh(scroll)23 b(to)h(next)h(screen)822
-b Ff(C-v)1746 783 y Fh(scroll)23 b(to)h(previous)g(screen)700
-b Ff(M-v)1746 863 y Fh(scroll)23 b(left)1155 b Ff(C-x)36
-b(<)1746 943 y Fh(scroll)23 b(righ)n(t)1108 b Ff(C-x)36
-b(>)1746 1022 y Fh(scroll)23 b(curren)n(t)h(line)f(to)h(cen)n(ter)h(of)
-f(screen)312 b Ff(C-u)36 b(C-l)1746 1213 y Fg(Killing)h(and)g(Deleting)
-1746 1376 y Fe(en)n(tit)n(y)26 b(to)g(kill)723 b(bac)n(kw)n(ard)69
-b(forw)n(ard)1746 1456 y Fh(c)n(haracter)25 b(\(delete,)g(not)f(kill\))
-360 b Ff(DEL)302 b(C-d)1746 1536 y Fh(w)n(ord)1017 b
-Ff(M-DEL)232 b(M-d)1746 1615 y Fh(line)23 b(\(to)i(end)f(of)5
-b(\))699 b Ff(M-0)36 b(C-k)161 b(C-k)1746 1695 y Fh(sen)n(tence)913
-b Ff(C-x)36 b(DEL)161 b(M-k)1746 1775 y Fh(sexp)1033
-b Ff(M--)36 b(C-M-k)91 b(C-M-k)1746 1882 y Fh(kill)23
-b Fe(region)1099 b Ff(C-w)1746 1962 y Fh(cop)n(y)25 b(region)e(to)i
-(kill)d(ring)736 b Ff(M-w)1746 2042 y Fh(kill)23 b(through)h(next)h(o)r
-(ccurrence)g(of)e Fb(char)329 b Ff(M-z)36 b Fb(char)1746
-2149 y Fh(y)n(ank)25 b(bac)n(k)f(last)g(thing)g(killed)620
-b Ff(C-y)1746 2229 y Fh(replace)24 b(last)g(y)n(ank)g(with)g(previous)g
-(kill)358 b Ff(M-y)1746 2431 y Fg(Marking)1746 2594 y
-Fh(set)24 b(mark)g(here)1018 b Ff(C-@)36 b Fh(or)f Ff(C-SPC)1746
-2673 y Fh(exc)n(hange)26 b(p)r(oin)n(t)e(and)g(mark)658
-b Ff(C-x)36 b(C-x)1746 2781 y Fh(set)24 b(mark)g Fb(ar)l(g)30
-b Fe(w)n(ords)22 b Fh(a)n(w)n(a)n(y)639 b Ff(M-@)1746
-2861 y Fh(mark)23 b Fe(paragraph)894 b Ff(M-h)1746 2940
-y Fh(mark)23 b Fe(page)1095 b Ff(C-x)36 b(C-p)1746 3020
-y Fh(mark)23 b Fe(sexp)1101 b Ff(C-M-@)1746 3100 y Fh(mark)23
-b Fe(function)966 b Ff(C-M-h)1746 3179 y Fh(mark)23 b(en)n(tire)h
-Fe(bu\013er)852 b Ff(C-x)36 b(h)1746 3370 y Fg(Query)i(Replace)1746
-3533 y Fh(in)n(teractiv)n(ely)25 b(replace)f(a)g(text)h(string)414
-b Ff(M-\045)1746 3613 y Fh(using)24 b(regular)f(expressions)305
-b Ff(M-x)36 b(query-replace-regexp)1746 3721 y Fh(V)-6
-b(alid)23 b(resp)r(onses)h(in)f(query-replace)i(mo)r(de)f(are)1746
-3828 y Fe(replace)f Fh(this)h(one,)g(go)g(on)g(to)g(next)466
-b Ff(SPC)1746 3908 y Fh(replace)24 b(this)g(one,)g(don't)g(mo)n(v)n(e)
-572 b Ff(,)1746 3988 y Fe(skip)23 b Fh(to)i(next)f(without)h(replacing)
-488 b Ff(DEL)1746 4067 y Fh(replace)24 b(all)f(remaining)h(matc)n(hes)
-525 b Ff(!)1746 4147 y Fe(bac)n(k)27 b(up)d Fh(to)g(the)g(previous)g
-(matc)n(h)460 b Ff(^)1746 4227 y Fe(exit)23 b Fh(query-replace)871
-b Ff(RET)1746 4306 y Fh(en)n(ter)24 b(recursiv)n(e)g(edit)g(\()p
-Ff(C-M-c)i Fh(to)e(exit\))370 b Ff(C-r)3942 -364 y Fg(Multiple)36
-b(Windo)m(ws)3942 -244 y Fh(When)27 b(t)n(w)n(o)f(commands)g(are)g(sho)
-n(wn,)g(the)h(second)g(is)d(a)i(similar)e(com-)3942 -164
-y(mand)g(for)f(a)h(frame)f(instead)h(of)g(a)f(windo)n(w.)3942
--67 y(delete)i(all)e(other)h(windo)n(ws)467 b Ff(C-x)36
-b(1)212 b(C-x)37 b(5)e(1)3942 12 y Fh(split)23 b(windo)n(w,)h(ab)r(o)n
-(v)n(e)h(and)f(b)r(elo)n(w)267 b Ff(C-x)36 b(2)212 b(C-x)37
-b(5)e(2)3942 92 y Fh(delete)25 b(this)e(windo)n(w)640
-b Ff(C-x)36 b(0)212 b(C-x)37 b(5)e(0)3942 189 y Fh(split)23
-b(windo)n(w,)h(side)f(b)n(y)h(side)649 b Ff(C-x)36 b(3)3942
-286 y Fh(scroll)23 b(other)h(windo)n(w)838 b Ff(C-M-v)3942
-383 y Fh(switc)n(h)24 b(cursor)f(to)h(another)h(windo)n(w)206
-b Ff(C-x)36 b(o)212 b(C-x)37 b(5)e(o)3942 463 y Fh(select)25
-b(bu\013er)e(in)h(other)g(windo)n(w)320 b Ff(C-x)36 b(4)g(b)141
-b(C-x)37 b(5)e(b)3942 542 y Fh(displa)n(y)24 b(bu\013er)g(in)f(other)h
-(windo)n(w)273 b Ff(C-x)36 b(4)g(C-o)71 b(C-x)37 b(5)e(C-o)3942
-622 y Fh(\014nd)24 b(\014le)g(in)f(other)h(windo)n(w)460
-b Ff(C-x)36 b(4)g(f)141 b(C-x)37 b(5)e(f)3942 702 y Fh(\014nd)24
-b(\014le)g(read-only)g(in)f(other)h(windo)n(w)148 b Ff(C-x)36
-b(4)g(r)141 b(C-x)37 b(5)e(r)3942 782 y Fh(run)23 b(Dired)h(in)f(other)
-h(windo)n(w)390 b Ff(C-x)36 b(4)g(d)141 b(C-x)37 b(5)e(d)3942
-861 y Fh(\014nd)24 b(tag)h(in)e(other)h(windo)n(w)452
-b Ff(C-x)36 b(4)g(.)141 b(C-x)37 b(5)e(.)3942 958 y Fh(gro)n(w)24
-b(windo)n(w)f(taller)852 b Ff(C-x)36 b(^)3942 1038 y
-Fh(shrink)23 b(windo)n(w)h(narro)n(w)n(er)698 b Ff(C-x)36
-b({)3942 1118 y Fh(gro)n(w)24 b(windo)n(w)f(wider)844
-b Ff(C-x)36 b(})3942 1264 y Fg(F)-10 b(ormatting)3942
-1384 y Fh(inden)n(t)25 b(curren)n(t)f Fe(line)f Fh(\(mo)r(de-dep)r
-(enden)n(t\))267 b Ff(TAB)3942 1464 y Fh(inden)n(t)25
-b Fe(region)d Fh(\(mo)r(de-dep)r(enden)n(t\))420 b Ff(C-M-\\)3942
-1544 y Fh(inden)n(t)25 b Fe(sexp)f Fh(\(mo)r(de-dep)r(enden)n(t\))482
-b Ff(C-M-q)3942 1623 y Fh(inden)n(t)25 b(region)e(rigidly)g
-Fb(ar)l(g)30 b Fh(columns)413 b Ff(C-x)36 b(TAB)3942
-1720 y Fh(insert)23 b(newline)h(after)g(p)r(oin)n(t)662
-b Ff(C-o)3942 1800 y Fh(mo)n(v)n(e)24 b(rest)g(of)f(line)h(v)n
-(ertically)f(do)n(wn)437 b Ff(C-M-o)3942 1880 y Fh(delete)25
-b(blank)f(lines)f(around)h(p)r(oin)n(t)482 b Ff(C-x)36
-b(C-o)3942 1959 y Fh(join)23 b(line)g(with)h(previous)g(\(with)g(arg,)f
-(next\))236 b Ff(M-^)3942 2039 y Fh(delete)25 b(all)e(white)h(space)h
-(around)f(p)r(oin)n(t)358 b Ff(M-\\)3942 2119 y Fh(put)24
-b(exactly)h(one)g(space)f(at)h(p)r(oin)n(t)503 b Ff(M-SPC)3942
-2216 y Fh(\014ll)23 b(paragraph)1025 b Ff(M-q)3942 2295
-y Fh(set)24 b(\014ll)f(column)h(to)g Fb(ar)l(g)800 b
-Ff(C-x)36 b(f)3942 2375 y Fh(set)24 b(pre\014x)g(eac)n(h)h(line)e
-(starts)h(with)506 b Ff(C-x)36 b(.)3942 2472 y Fh(set)24
-b(face)1211 b Ff(M-o)3942 2609 y Fg(Case)37 b(Change)3942
-2730 y Fh(upp)r(ercase)25 b(w)n(ord)961 b Ff(M-u)3942
-2809 y Fh(lo)n(w)n(ercase)24 b(w)n(ord)979 b Ff(M-l)3942
-2889 y Fh(capitalize)25 b(w)n(ord)975 b Ff(M-c)3942 2986
-y Fh(upp)r(ercase)25 b(region)924 b Ff(C-x)36 b(C-u)3942
-3066 y Fh(lo)n(w)n(ercase)24 b(region)942 b Ff(C-x)36
-b(C-l)3942 3212 y Fg(The)h(Minibu\013er)3942 3332 y Fh(The)24
-b(follo)n(wing)f(k)n(eys)h(are)g(de\014ned)h(in)e(the)i(minibu\013er.)
-3942 3429 y(complete)g(as)f(m)n(uc)n(h)g(as)f(p)r(ossible)539
-b Ff(TAB)3942 3509 y Fh(complete)25 b(up)f(to)g(one)h(w)n(ord)673
-b Ff(SPC)3942 3588 y Fh(complete)25 b(and)f(execute)778
-b Ff(RET)3942 3668 y Fh(sho)n(w)24 b(p)r(ossible)f(completions)636
-b Ff(?)3942 3748 y Fh(fetc)n(h)25 b(previous)e(minibu\013er)g(input)484
-b Ff(M-p)3942 3828 y Fh(fetc)n(h)25 b(later)e(minibu\013er)g(input)i
-(or)e(default)276 b Ff(M-n)3942 3907 y Fh(regexp)24 b(searc)n(h)h(bac)n
-(kw)n(ard)f(through)h(history)204 b Ff(M-r)3942 3987
-y Fh(regexp)24 b(searc)n(h)h(forw)n(ard)d(through)j(history)261
-b Ff(M-s)3942 4067 y Fh(ab)r(ort)24 b(command)953 b Ff(C-g)3942
-4164 y Fh(T)n(yp)r(e)28 b Ff(C-x)37 b(ESC)f(ESC)28 b
-Fh(to)h(edit)f(and)h(rep)r(eat)f(the)h(last)f(command)h(that)3942
-4243 y(used)e(the)g(minibu\013er.)38 b(T)n(yp)r(e)26
-b Ff(F10)h Fh(to)g(activ)l(ate)h(men)n(u)f(bar)e(items)i(on)3942
-4323 y(text)e(terminals.)p eop end
-%%Page: 2 2
-TeXDict begin @landscape 2 1 bop -358 -364 a Fi(GNU)45
-b(Emacs)h(Reference)g(Card)-450 -141 y Fg(Bu\013ers)-450
-24 y Fh(select)24 b(another)h(bu\013er)811 b Ff(C-x)36
-b(b)-450 104 y Fh(list)23 b(all)g(bu\013ers)1018 b Ff(C-x)36
-b(C-b)-450 184 y Fh(kill)23 b(a)g(bu\013er)1084 b Ff(C-x)36
-b(k)-450 378 y Fg(T)-10 b(ransp)s(osing)-450 543 y Fh(transp)r(ose)24
-b Fe(c)n(haracters)760 b Ff(C-t)-450 623 y Fh(transp)r(ose)24
-b Fe(w)n(ords)915 b Ff(M-t)-450 703 y Fh(transp)r(ose)24
-b Fe(lines)964 b Ff(C-x)36 b(C-t)-450 782 y Fh(transp)r(ose)24
-b Fe(sexps)935 b Ff(C-M-t)-450 985 y Fg(Sp)s(elling)37
-b(Chec)m(k)-450 1151 y Fh(c)n(hec)n(k)25 b(sp)r(elling)e(of)h(curren)n
-(t)g(w)n(ord)516 b Ff(M-$)-450 1231 y Fh(c)n(hec)n(k)25
-b(sp)r(elling)e(of)h(all)f(w)n(ords)g(in)g(region)201
-b Ff(M-x)36 b(ispell-region)-450 1310 y Fh(c)n(hec)n(k)25
-b(sp)r(elling)e(of)h(en)n(tire)g(bu\013er)395 b Ff(M-x)36
-b(ispell-buffer)-450 1514 y Fg(T)-10 b(ags)-450 1680
-y Fh(\014nd)24 b(a)g(tag)g(\(a)h(de\014nition\))716 b
-Ff(M-.)-450 1760 y Fh(\014nd)24 b(next)h(o)r(ccurrence)g(of)e(tag)612
-b Ff(C-u)36 b(M-.)-450 1839 y Fh(sp)r(ecify)24 b(a)f(new)i(tags)f
-(\014le)537 b Ff(M-x)36 b(visit-tags-table)-450 1948
-y Fh(regexp)24 b(searc)n(h)h(on)f(all)f(\014les)g(in)g(tags)i(table)138
-b Ff(M-x)36 b(tags-search)-450 2027 y Fh(run)23 b(query-replace)i(on)f
-(all)f(the)h(\014les)144 b Ff(M-x)36 b(tags-query-replace)-450
-2107 y Fh(con)n(tin)n(ue)25 b(last)f(tags)g(searc)n(h)g(or)g
-(query-replace)163 b Ff(M-,)-450 2310 y Fg(Shells)-450
-2476 y Fh(execute)26 b(a)e(shell)f(command)670 b Ff(M-!)-450
-2555 y Fh(run)23 b(a)h(shell)f(command)i(on)f(the)g(region)362
-b Ff(M-|)-450 2635 y Fh(\014lter)24 b(region)f(through)i(a)f(shell)f
-(command)276 b Ff(C-u)36 b(M-|)-450 2715 y Fh(start)24
-b(a)g(shell)f(in)g(windo)n(w)h Ff(*shell*)467 b(M-x)36
-b(shell)-450 2909 y Fg(Rectangles)-450 3074 y Fh(cop)n(y)25
-b(rectangle)g(to)f(register)659 b Ff(C-x)36 b(r)g(r)-450
-3154 y Fh(kill)23 b(rectangle)1043 b Ff(C-x)36 b(r)g(k)-450
-3234 y Fh(y)n(ank)25 b(rectangle)992 b Ff(C-x)36 b(r)g(y)-450
-3313 y Fh(op)r(en)25 b(rectangle,)f(shifting)f(text)i(righ)n(t)401
-b Ff(C-x)36 b(r)g(o)-450 3393 y Fh(blank)24 b(out)h(rectangle)843
-b Ff(C-x)36 b(r)g(c)-450 3473 y Fh(pre\014x)24 b(eac)n(h)h(line)e(with)
-h(a)g(string)553 b Ff(C-x)36 b(r)g(t)-450 3676 y Fg(Abbrevs)-450
-3841 y Fh(add)24 b(global)g(abbrev)886 b Ff(C-x)36 b(a)g(g)-450
-3921 y Fh(add)24 b(mo)r(de-lo)r(cal)g(abbrev)737 b Ff(C-x)36
-b(a)g(l)-450 4001 y Fh(add)24 b(global)g(expansion)h(for)e(this)g
-(abbrev)313 b Ff(C-x)36 b(a)g(i)f(g)-450 4081 y Fh(add)24
-b(mo)r(de-lo)r(cal)g(expansion)h(for)e(this)g(abbrev)164
-b Ff(C-x)36 b(a)g(i)f(l)-450 4160 y Fh(explicitly)24
-b(expand)h(abbrev)680 b Ff(C-x)36 b(a)g(e)-450 4269 y
-Fh(expand)25 b(previous)f(w)n(ord)f(dynamically)368 b
-Ff(M-/)1746 -364 y Fg(Regular)37 b(Expressions)1746 -198
-y Fh(an)n(y)24 b(single)g(c)n(haracter)h(except)g(a)f(newline)291
-b Ff(.)71 b Fh(\(dot\))1746 -119 y(zero)24 b(or)f(more)h(rep)r(eats)807
-b Ff(*)1746 -39 y Fh(one)24 b(or)g(more)f(rep)r(eats)827
-b Ff(+)1746 41 y Fh(zero)24 b(or)f(one)i(rep)r(eat)882
-b Ff(?)1746 120 y Fh(quote)25 b(regular)e(expression)h(sp)r(ecial)g(c)n
-(haracter)h Fb(c)96 b Ff(\\)p Fb(c)1746 200 y Fh(alternativ)n(e)25
-b(\(\\or"\))900 b Ff(\\|)1746 280 y Fh(grouping)1170
-b Ff(\\\()36 b Fa(:)11 b(:)h(:)34 b Ff(\\\))1746 359
-y Fh(same)24 b(text)h(as)e Fb(n)5 b Fh(th)25 b(group)718
-b Ff(\\)p Fb(n)1746 439 y Fh(at)24 b(w)n(ord)g(break)1009
-b Ff(\\b)1746 519 y Fh(not)24 b(at)h(w)n(ord)e(break)884
-b Ff(\\B)1746 627 y Fe(en)n(tit)n(y)676 b(matc)n(h)27
-b(start)84 b(matc)n(h)26 b(end)1746 707 y Fh(line)774
-b Ff(^)465 b($)1746 787 y Fh(w)n(ord)733 b Ff(\\<)430
-b(\\>)1746 866 y Fh(bu\013er)706 b Ff(\\`)430 b(\\')1746
-946 y Fe(class)27 b(of)f(c)n(haracters)238 b(matc)n(h)27
-b(these)71 b(matc)n(h)26 b(others)1746 1026 y Fh(explicit)e(set)549
-b Ff([)36 b Fa(:)11 b(:)h(:)35 b Ff(])276 b([^)36 b Fa(:)11
-b(:)g(:)35 b Ff(])1746 1105 y Fh(w)n(ord-syn)n(tax)24
-b(c)n(haracter)201 b Ff(\\w)430 b(\\W)1746 1185 y Fh(c)n(haracter)25
-b(with)f(syn)n(tax)g Fb(c)157 b Ff(\\s)p Fb(c)397 b Ff(\\S)p
-Fb(c)1746 1388 y Fg(In)m(ternational)36 b(Character)g(Sets)1746
-1554 y Fh(sp)r(ecify)24 b(principal)f(language)643 b
-Ff(C-x)36 b(RET)g(l)1746 1633 y Fh(sho)n(w)24 b(all)f(input)h(metho)r
-(ds)423 b Ff(M-x)36 b(list-input-methods)1746 1713 y
-Fh(enable)25 b(or)e(disable)g(input)i(metho)r(d)478 b
-Ff(C-\\)1746 1793 y Fh(set)24 b(co)r(ding)h(system)f(for)f(next)h
-(command)307 b Ff(C-x)36 b(RET)g(c)1746 1872 y Fh(sho)n(w)24
-b(all)f(co)r(ding)h(systems)372 b Ff(M-x)37 b(list-coding-systems)1746
-1952 y Fh(c)n(ho)r(ose)25 b(preferred)e(co)r(ding)h(system)114
-b Ff(M-x)36 b(prefer-coding-system)1746 2157 y Fg(Info)1746
-2323 y Fh(en)n(ter)24 b(the)h(Info)f(do)r(cumen)n(tation)i(reader)321
-b Ff(C-h)36 b(i)1746 2402 y Fh(\014nd)24 b(sp)r(eci\014ed)h(function)f
-(or)f(v)l(ariable)h(in)g(Info)183 b Ff(C-h)36 b(S)1746
-2511 y Fh(Mo)n(ving)24 b(within)f(a)h(no)r(de:)1817 2619
-y(scroll)e(forw)n(ard)949 b Ff(SPC)1817 2699 y Fh(scroll)22
-b(rev)n(erse)973 b Ff(DEL)1817 2778 y Fh(b)r(eginning)24
-b(of)f(no)r(de)820 b Ff(.)71 b Fh(\(dot\))1746 2887 y(Mo)n(ving)24
-b(b)r(et)n(w)n(een)h(no)r(des:)1817 2995 y Fe(next)e
-Fh(no)r(de)1043 b Ff(n)1817 3075 y Fe(previous)23 b Fh(no)r(de)900
-b Ff(p)1817 3154 y Fh(mo)n(v)n(e)24 b Fe(up)1097 b Ff(u)1817
-3234 y Fh(select)24 b(men)n(u)g(item)g(b)n(y)g(name)564
-b Ff(m)1817 3314 y Fh(select)24 b Fb(n)5 b Fh(th)25 b(men)n(u)f(item)g
-(b)n(y)g(n)n(um)n(b)r(er)g(\(1{9\))176 b Fb(n)1817 3393
-y Fh(follo)n(w)22 b(cross)i(reference)g(\(return)g(with)g
-Ff(l)p Fh(\))230 b Ff(f)1817 3473 y Fh(return)23 b(to)i(last)e(no)r(de)
-i(y)n(ou)f(sa)n(w)518 b Ff(l)1817 3553 y Fh(return)23
-b(to)i(directory)f(no)r(de)621 b Ff(d)1817 3633 y Fh(go)24
-b(to)g(top)g(no)r(de)h(of)e(Info)h(\014le)578 b Ff(t)1817
-3712 y Fh(go)24 b(to)g(an)n(y)g(no)r(de)h(b)n(y)f(name)623
-b Ff(g)1746 3821 y Fh(Other:)1817 3929 y(run)23 b(Info)h
-Fe(tutorial)825 b Ff(h)1817 4009 y Fh(lo)r(ok)23 b(up)h(a)g(sub)t(ject)
-h(in)e(the)i(indices)398 b Ff(i)1817 4088 y Fh(searc)n(h)24
-b(no)r(des)g(for)f(regexp)648 b Ff(s)1817 4168 y Fe(quit)22
-b Fh(Info)1083 b Ff(q)3942 -364 y Fg(Registers)3942 -198
-y Fh(sa)n(v)n(e)24 b(region)g(in)f(register)767 b Ff(C-x)36
-b(r)g(s)3942 -119 y Fh(insert)23 b(register)h(con)n(ten)n(ts)i(in)n(to)
-e(bu\013er)392 b Ff(C-x)36 b(r)g(i)3942 -10 y Fh(sa)n(v)n(e)24
-b(v)l(alue)h(of)e(p)r(oin)n(t)h(in)g(register)531 b Ff(C-x)36
-b(r)g(SPC)3942 69 y Fh(jump)23 b(to)i(p)r(oin)n(t)f(sa)n(v)n(ed)g(in)g
-(register)486 b Ff(C-x)36 b(r)g(j)3942 274 y Fg(Keyb)s(oard)i(Macros)
-3942 440 y Fe(start)22 b Fh(de\014ning)j(a)e(k)n(eyb)r(oard)i(macro)429
-b Ff(C-x)36 b(\()3942 519 y Fe(end)24 b Fh(k)n(eyb)r(oard)h(macro)f
-(de\014nition)482 b Ff(C-x)36 b(\))3942 599 y Fe(execute)24
-b Fh(last-de\014ned)h(k)n(eyb)r(oard)g(macro)278 b Ff(C-x)36
-b(e)3942 679 y Fh(app)r(end)25 b(to)f(last)g(k)n(eyb)r(oard)h(macro)477
-b Ff(C-u)36 b(C-x)g(\()3942 758 y Fh(name)24 b(last)g(k)n(eyb)r(oard)h
-(macro)292 b Ff(M-x)37 b(name-last-kbd-macro)3942 838
-y Fh(insert)23 b(Lisp)h(de\014nition)g(in)g(bu\013er)289
-b Ff(M-x)36 b(insert-kbd-macro)3942 1041 y Fg(Commands)i(Dealing)f
-(with)g(Emacs)i(Lisp)3942 1207 y Fh(ev)l(al)24 b Fe(sexp)g
-Fh(b)r(efore)g(p)r(oin)n(t)744 b Ff(C-x)36 b(C-e)3942
-1287 y Fh(ev)l(al)24 b(curren)n(t)g Fe(defun)855 b Ff(C-M-x)3942
-1366 y Fh(ev)l(al)24 b Fe(region)935 b Ff(M-x)36 b(eval-region)3942
-1446 y Fh(read)24 b(and)g(ev)l(al)g(minibu\013er)687
-b Ff(M-:)3942 1526 y Fh(load)24 b(from)f(standard)h(system)g(directory)
-175 b Ff(M-x)36 b(load-library)3942 1731 y Fg(Simple)h(Customization)
-3942 1896 y Fh(customize)25 b(v)l(ariables)e(and)i(faces)396
-b Ff(M-x)36 b(customize)3942 2004 y Fh(Making)24 b(global)g(k)n(ey)g
-(bindings)g(in)f(Emacs)h(Lisp)f(\(example\):)3942 2113
-y Ff(\(global-set-key)40 b(\(kbd)c("C-c)g(g"\))h('search-forward\))3942
-2192 y(\(global-set-key)j(\(kbd)c("M-#"\))h('query-replace-regexp\))
-3942 2397 y Fg(W)-10 b(riting)38 b(Commands)3942 2563
-y Ff(\(defun)f Fb(c)l(ommand-name)43 b Ff(\()p Fb(ar)l(gs)5
-b Ff(\))4013 2643 y(")p Fb(do)l(cumentation)g Ff(")38
-b(\(interactive)g(")p Fb(template)5 b Ff("\))4013 2722
-y Fb(b)l(o)l(dy)h Ff(\))3942 2831 y Fh(An)24 b(example:)3942
-2939 y Ff(\(defun)37 b(this-line-to-top-of-win)q(dow)42
-b(\(line\))4013 3019 y("Reposition)c(current)f(line)g(to)f(top)g(of)g
-(window.)3942 3098 y(With)g(ARG,)h(put)f(point)h(on)f(line)g(ARG.")4013
-3178 y(\(interactive)i("P"\))4013 3258 y(\(recenter)f(\(if)g(\(null)f
-(line\))4507 3337 y(0)4436 3417 y(\(prefix-numeric-value)41
-b(line\)\)\)\))3942 3525 y Fh(The)35 b Ff(interactive)k
-Fh(sp)r(ec)c(sa)n(ys)g(ho)n(w)h(to)f(read)h(argumen)n(ts)g(in)n(terac-)
-3942 3605 y(tiv)n(ely)-6 b(.)32 b(T)n(yp)r(e)24 b Ff(C-h)36
-b(f)g(interactive)26 b Fh(for)d(more)h(details.)4235
-3736 y Fd(Cop)n(yrigh)n(t)4538 3734 y(c)4521 3736 y Fc(\015)d
-Fd(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
-b(Inc.)4399 3800 y(v2.3)i(for)f(GNU)f(Emacs)h(v)n(ersion)h(22,)f(2007)
-4532 3864 y(designed)f(b)n(y)h(Stephen)f(Gildea)3942
-3956 y(P)n(ermission)29 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
-(distribute)g(mo)r(di\014ed)f(or)j(unmo)r(di\014ed)3942
-4020 y(copies)f(of)h(this)e(card)h(pro)n(vided)g(the)f(cop)n(yrigh)n(t)
-i(notice)f(and)g(this)f(p)r(ermission)3942 4084 y(notice)21
-b(are)g(preserv)n(ed)h(on)f(all)f(copies.)3942 4176 y(F)-5
-b(or)21 b(copies)g(of)g(the)g(GNU)e(Emacs)i(man)n(ual,)f(write)h(to)g
-(the)f(F)-5 b(ree)22 b(Soft)n(w)n(are)g(F)-5 b(oun-)3942
-4240 y(dation,)29 b(Inc.,)g(51)g(F)-5 b(ranklin)28 b(Street,)h(Fifth)f
-(Flo)r(or,)h(Boston,)i(MA)d(02110-1301)3942 4304 y(USA)p
-eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
similarity index 52%
rename from etc/Makefile
rename to etc/refcards/Makefile
index 4608ea2c93de1a88ba04bf116b1d1c55a9039683..8ac87d26d754469a3ab76cd6a7e668e4b20cb533 100644 (file)
@@ -1,4 +1,4 @@
-### Makefile for Emacs etc/ directory
+### Makefile for Emacs refcards
 
 ## Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
 ##   2007 Free Software Foundation, Inc.
 
 ## Top-level targets.
 
-## PS files included with Emacs.
-all: refcards dired-refcards misc-refcards
+## PDF files that are included with Emacs.
+all: refcards_pdf dired-refcards_pdf misc-refcards_pdf
 
+REFCARDS_PDF = refcard.pdf cs-refcard.pdf de-refcard.pdf fr-refcard.pdf \
+            pl-refcard.pdf pt-br-refcard.pdf ru-refcard.pdf sk-refcard.pdf
+refcards_pdf: ${REFCARDS_PDF}
+refcards_ps: ${REFCARDS_PDF:.pdf=.ps}
 
-refcards: refcard.ps cs-refcard.ps de-refcard.ps fr-refcard.ps \
-          pl-refcard.ps pt-br-refcard.ps ru-refcard.ps sk-refcard.ps
+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: dired-ref.ps cs-dired-ref.ps fr-drdref.ps sk-dired-ref.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}
 
-## No PS files: vipcard.tex viperCard.tex survival.tex sk-survival.tex
-misc-refcards: calccard.ps gnus-booklet.ps gnus-refcard.ps orgcard.ps
 
-## Following PS files are not included with Emacs.
-survival-cards: survival.ps cs-survival.ps sk-survival.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}
+
+VIPER-CARDS_PDF = vipcard.pdf viperCard.pdf
+viper-cards_pdf: ${VIPER-CARDS_PDF}
+viper-cards_ps: ${VIPER-CARDS_PDF:.pdf=.ps}
+
+
+## PDF files.
+
+## The page layouts (a4/letter) are written directly in the .tex files.
+
+cs-refcard.pdf cs-dired-ref.pdf cs-survival.pdf sk-refcard.pdf \
+sk-dired-ref.pdf sk-survival.pdf: %.pdf:       %.tex
+       csplain "\pdfoutput=1\input $<"
+
+pl-refcard.pdf: %.pdf: %.tex
+       if ! kpsewhich -format=fmt mex > /dev/null; then \
+         echo "No mex format found."; false; \
+       fi
+       pdftex $<
+
+ru-refcard.pdf: %.pdf: %.tex
+       pdflatex $<
+
+gnus-logo.pdf: %.pdf: %.eps
+       ps2pdf $<
+
+gnus-refcard.pdf: %.pdf: %.tex gnus-logo.pdf 
+       pdflatex $<
+
+gnus-booklet.pdf: gnus-refcard.tex gnus-logo.pdf
+       pdflatex '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}'
+       mv gnus-refcard.pdf $@
+
+## Everything not explicitly listed above.
+%.pdf: %.tex
+       pdftex $<
 
-viper-cards: vipcard.ps viperCard.ps
 
 
 ## dvi files.
 
-## FIXME the sk-*.tex files say to use csplain, but were not
-## traditionally in this rule. Fix the doc or the rule.
-cs-refcard.dvi cs-dired-ref.dvi cs-survival.dvi: %.dvi:        %.tex
+cs-refcard.dvi cs-dired-ref.dvi cs-survival.dvi sk-refcard.dvi \
+sk-dired-ref.dvi sk-survival.dvi: %.dvi:       %.tex
        csplain $<
 
 pl-refcard.dvi: %.dvi: %.tex
@@ -78,7 +120,7 @@ de-refcard.ps fr-refcard.ps pt-br-refcard.ps orgcard.ps: %.ps: %.dvi
        dvips -t a4 -t landscape $< -o $@
 
 ## A4, portrait.
-cs-dired-ref.ps cs-refcard.ps cs-survival.ps fr-drdref.ps \
+cs-dired-ref.ps cs-refcard.ps cs-survival.ps fr-dired-ref.ps \
 pl-refcard.ps ru-refcard.ps \
 sk-dired-ref.ps sk-refcard.ps sk-survival.ps: %.ps: %.dvi
        dvips -t a4 $< -o $@
@@ -93,34 +135,9 @@ viperCard.ps: %.ps: %.dvi
        dvips -t letter $< -o $@
 
 
-.PHONY: mostlyclean clean distclean maintainer-clean unlock relock
+.PHONY: clean
 
-mostlyclean:
+clean:
        -rm -f *.dvi *.log
 
-## Note does not delete generated ps files.
-clean distclean maintainer-clean: mostlyclean
-       -rm -f DOC*
-
-
-SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* ms-* \
-       spook-lines termcap.* *.tex
-
-unlock:
-       chmod u+w $(SOURCES)
-
-relock:
-       chmod u-w $(SOURCES)
-
-# ${etcdir}/e/eterm-color is used by ../lisp/term.el.
-# TERMINFO systems use terminfo files compiled by the Terminfo Compiler (tic).
-# These files are binary, and depend on the version of tic, but they seem
-# to be system-independent and backwardly compatible.
-# So there should be no need to recompile the distributed binary version.
-TIC=tic
-e/eterm-color: e/eterm-color.ti
-       TERMINFO=`pwd`; export TERMINFO; $(TIC) e/eterm-color.ti
-
-
-## arch-tag: 4261f003-cf77-4478-a10a-5284e9d8f797
 ### Makefile ends here
diff --git a/etc/refcards/README b/etc/refcards/README
new file mode 100644 (file)
index 0000000..c9ae93a
--- /dev/null
@@ -0,0 +1,17 @@
+Some of the *.tex files need special versions of TeX to typeset them.
+The files cs-*.tex and sk-*.tex need csTeX, a special version of TeX
+tailored to typesetting Czech and Slovak documents.  We provide
+generated files for these documents, so that you could print them
+without installing the modified TeX versions.
+
+
+COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
+
+The file gnus-logo.eps contains copyright and license information, but
+it is reproduced here for convenience.
+
+File: gnus-logo.eps, gnus-logo.pdf
+  Author: Luis Fernandes <elf@ee.ryerson.ca>
+  Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+    Free Software Foundation, Inc.
+  License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/refcards/calccard.pdf b/etc/refcards/calccard.pdf
new file mode 100644 (file)
index 0000000..10ac28d
Binary files /dev/null and b/etc/refcards/calccard.pdf differ
similarity index 98%
rename from etc/calccard.tex
rename to etc/refcards/calccard.tex
index f2f033cc7e1fd588aa326abfe943cf3e394f0ee5..12cbd4a686b93e4d0867e8caedcf19f546826d83 100644 (file)
@@ -6,10 +6,17 @@
 % card version 1.9, by Stephen Gildea.
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 
 \columnsperpage=3
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(1l)
+
+% Nothing else needs to be changed.
 % Typical command to format:  tex calccard.tex
 % Typical command to print (3 cols):  dvips -t landscape calccard.dvi
 
@@ -666,7 +673,7 @@ Variable names are single digits or whole words.
 \bye
 \f
 % Local variables:
-% compile-command: "tex calccard"
+% compile-command: "pdftex calccard"
 % End:
 
 % arch-tag: a2764f34-ec23-4083-bd5c-53f9e70a5da9
diff --git a/etc/refcards/cs-dired-ref.pdf b/etc/refcards/cs-dired-ref.pdf
new file mode 100644 (file)
index 0000000..9b9d106
Binary files /dev/null and b/etc/refcards/cs-dired-ref.pdf differ
similarity index 98%
rename from etc/cs-dired-ref.tex
rename to etc/refcards/cs-dired-ref.tex
index c936ab0eedf05a112d2c8411d787fcd597c8fec8..913e0112699213cb126d6d2d9594285cdae9a68f 100644 (file)
 % Boston, MA 02110-1301, USA.
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 %**start of header
 
 \newcount\columnsperpage
 
 \columnsperpage=2
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
+% Nothing else needs to be changed.
 % This file is intended to be processed by plain TeX (TeX82).
 % The reference card looks OK with 2 columns per page, portrait mode.
 % I haven't tried it with 3 columns per page.
diff --git a/etc/refcards/cs-refcard.pdf b/etc/refcards/cs-refcard.pdf
new file mode 100644 (file)
index 0000000..8f4b684
Binary files /dev/null and b/etc/refcards/cs-refcard.pdf differ
similarity index 99%
rename from etc/cs-refcard.tex
rename to etc/refcards/cs-refcard.tex
index c9742eed0ebabadfc08da1adbfbc0ff7ce230525..7d87a1826039090df9d4d69a7e183bf2c107f589 100644 (file)
@@ -7,10 +7,17 @@
 \newcount\columnsperpage
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 
 \columnsperpage=1
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
+% Nothing else needs to be changed.
 % Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
 %   2005, 2006, 2007  Free Software Foundation, Inc.
 
similarity index 98%
rename from etc/cs-survival.tex
rename to etc/refcards/cs-survival.tex
index 25f2786103f8e496d8add8e02efc59cd65084a9f..f19c8ddf2283fb95485fc0e2e8428433dd69d73f 100644 (file)
   \endinput
 \fi
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
 % Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
 %   2006, 2007  Free Software Foundation, Inc.
 
diff --git a/etc/refcards/de-refcard.pdf b/etc/refcards/de-refcard.pdf
new file mode 100644 (file)
index 0000000..8817294
Binary files /dev/null and b/etc/refcards/de-refcard.pdf differ
similarity index 98%
rename from etc/de-refcard.tex
rename to etc/refcards/de-refcard.tex
index 76de0410b52b71e0f9bbbfefb8ffdc4bee25f54b..6199a0249ecce6b725d98209a53ff4bb7b07cc6f 100644 (file)
@@ -4,17 +4,17 @@
 %
 %**start of header
 \newcount\columnsperpage
-\newcount\letterpaper
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
 % Specify how many you want here.
 
 \columnsperpage=3
 
-% Set letterpaper to 0 for A4 paper, 1 for letter (US) paper.  Useful
-% only when columnsperpage is 2 or 3.
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
 
-\letterpaper=0
+\input pdflayout.sty
+\pdflayout=(0l)
 
 % If you don't have german.sty, you can either get it from CTAN or
 % change the \glqq and \grqq commands below.
@@ -394,7 +394,7 @@ Wenn Emacs sucht, unterbricht \kbd{C-g} nur die jeweils letzte Suche.
 \section{Interaktives Ersetzen}
 
 \key{Zeichenkette interaktiv ersetzen}{M-\%}
-\metax{mit regul\"aren Ausdr\"ucken}{M-x query-replace-regexp}
+\key{mit regul\"aren Ausdr\"ucken}{C-M-\%}
 
 M\"ogliche Antworten in diesem Modus:
 
@@ -689,7 +689,7 @@ wird. F\"ur n\"ahere Details geben Sie \kbd{C-h f interactive} ein.
 \bye
 \f
 % Local variables:
-% compile-command: "tex de-refcard"
+% compile-command: "pdftex de-refcard"
 % End:
 
 % arch-tag: af0a2666-f289-49f1-a9cc-cedab9783314
diff --git a/etc/refcards/dired-ref.pdf b/etc/refcards/dired-ref.pdf
new file mode 100644 (file)
index 0000000..5ee213a
Binary files /dev/null and b/etc/refcards/dired-ref.pdf differ
similarity index 98%
rename from etc/dired-ref.tex
rename to etc/refcards/dired-ref.tex
index 45c1e8fc14fc85dedb5506e355083f84e9874ff8..3a76c6894cb99cf7d54d0222cb4dbeff6d820338 100644 (file)
 % Boston, MA 02110-1301, USA.
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.  
 %**start of header
 
 \newcount\columnsperpage
 
 \columnsperpage=2
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
+% Nothing else needs to be changed.
 % This file is intended to be processed by plain TeX (TeX82).
 % The reference card looks OK with 2 columns per page, portrait mode.
 % I haven't tried it with 3 columns per page.
diff --git a/etc/refcards/fr-dired-ref.pdf b/etc/refcards/fr-dired-ref.pdf
new file mode 100644 (file)
index 0000000..e23d4bd
Binary files /dev/null and b/etc/refcards/fr-dired-ref.pdf differ
similarity index 98%
rename from etc/fr-drdref.tex
rename to etc/refcards/fr-dired-ref.tex
index e768a5212033e5d30ad4e80bef872f8f2d1e428c..0e082c8bdd2e9e448bb2fb9fc76baf9bc3ac4b87 100644 (file)
 % Boston, MA 02110-1301, USA.
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 %**start of header
 
 \newcount\columnsperpage
 
 \columnsperpage=2
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
+% Nothing else needs to be changed.
 % This file is intended to be processed by plain TeX (TeX82).
 % The reference card looks OK with 2 columns per page, portrait mode.
 % I haven't tried it with 3 columns per page.
diff --git a/etc/refcards/fr-refcard.pdf b/etc/refcards/fr-refcard.pdf
new file mode 100644 (file)
index 0000000..eedf0de
Binary files /dev/null and b/etc/refcards/fr-refcard.pdf differ
similarity index 97%
rename from etc/fr-refcard.tex
rename to etc/refcards/fr-refcard.tex
index 202f5d483d2e7af0389242c897549c73c3d1d02c..b8264c944125f370c47fcb724b560418f295d884 100644 (file)
@@ -1,17 +1,17 @@
 % Reference Card for GNU Emacs version 22 on Unix systems
 %**start of header
 \newcount\columnsperpage
-\newcount\letterpaper
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
 % Specify how many you want here.
 
 \columnsperpage=3
 
-% Set letterpaper to 0 for A4 paper, 1 for letter (US) paper.  Useful
-% only when columnsperpage is 2 or 3.
+% PDF output layout.  0 for A4, 1 for Letter (US), a `l' is added for
+% a landscape layout.
 
-\letterpaper=0
+\input pdflayout.sty
+\pdflayout=(0l)
 
 % Nothing else needs to be changed below this line.
 % Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
@@ -82,9 +82,9 @@
 \centerline{traduction fran\c{c}aise de Micha\"el Cadilhac}
 % previously: Eric Jacoboni
 
-Vous pouvez faire et distribuer des copies de cette carte, pourvu que
-la note de copyright et cette note de permission soient conserv\'ees sur
-toutes les copies.
+Vous pouvez faire et distribuer des copies de cette carte, modifiée ou
+non, pourvu que la note de copyright et cette note de permission
+soient conserv\'ees sur toutes les copies.
 
 Pour des copies du manuel GNU Emacs, \'ecrivez \`a la Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
@@ -308,7 +308,7 @@ suivez les instructions. Si vous d\'ebutez, faites \kbd{C-h t} pour un
 \key{D\'ecrire une fonction}{C-h f}
 \key{Obtenir des informations relatives au mode}{C-h m}
 
-\section{R\'ecup\'eration sur erreurs}
+\section{R\'ecup\'eration sur erreur}
 
 \key{{\bf Abandonner} une commande}{C-g}
 \metax{{\bf R\'ecup\'erer} les fichiers apr\`es un crash}{M-x recover-session}
@@ -649,8 +649,8 @@ Autres :
 Exemples de d\'efinition globale de touches en Emacs Lisp :
 
 \beginexample%
-(global-set-key "\\C-cg" 'goto-line)
-(global-set-key "\\M-\#" 'query-replace-regexp)
+(global-set-key (kbd "C-c g") 'search-forward)
+(global-set-key (kbd "M-\#") 'query-replace-regexp)
 \endexample
 
 \section{\'Ecriture de commandes}
@@ -683,7 +683,7 @@ plus de pr\'ecisions.
 \bye
 \f
 % Local variables:
-% compile-command: "tex fr-refcard"
+% compile-command: "pdftex fr-refcard"
 % End:
 
 % arch-tag: 39d6dc6e-1a4a-4071-84db-4719d4e9e40d
similarity index 98%
rename from etc/fr-survival.tex
rename to etc/refcards/fr-survival.tex
index e39f23bf05b60e6f587c3c76a6ceeee34bbd5078..2a1190b51f46104b9a6945900f91366ded046ada 100644 (file)
   \endinput
 \fi
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
 % Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
 %   2006, 2007  Free Software Foundation, Inc.
 
@@ -413,7 +419,7 @@ contient entre parenth\`eses le nom des modes en cours.
 \bye
 \f
 % Local variables:
-% compile-command: "tex survival"
+% compile-command: "pdftex survival"
 % End:
 
 % arch-tag: 2fb4e93f-8bfa-4ab4-bc6d-b475131d766a
diff --git a/etc/refcards/gnus-booklet.pdf b/etc/refcards/gnus-booklet.pdf
new file mode 100644 (file)
index 0000000..1137d3e
Binary files /dev/null and b/etc/refcards/gnus-booklet.pdf differ
similarity index 100%
rename from etc/gnus-logo.eps
rename to etc/refcards/gnus-logo.eps
diff --git a/etc/refcards/gnus-logo.pdf b/etc/refcards/gnus-logo.pdf
new file mode 100644 (file)
index 0000000..3629a60
Binary files /dev/null and b/etc/refcards/gnus-logo.pdf differ
diff --git a/etc/refcards/gnus-refcard.pdf b/etc/refcards/gnus-refcard.pdf
new file mode 100644 (file)
index 0000000..bcbde3d
Binary files /dev/null and b/etc/refcards/gnus-refcard.pdf differ
diff --git a/etc/refcards/orgcard.pdf b/etc/refcards/orgcard.pdf
new file mode 100644 (file)
index 0000000..26f1d63
Binary files /dev/null and b/etc/refcards/orgcard.pdf differ
similarity index 81%
rename from etc/orgcard.tex
rename to etc/refcards/orgcard.tex
index 1207fadc76bf6eea449bfdd870c314b93abe1a5d..95cd63b04c257ef8f4d380c96e738268b01befa3 100644 (file)
@@ -1,27 +1,33 @@
 % Reference Card for Org Mode
-\def\orgversionnumber{4.67}
+\def\orgversionnumber{5.03}
 \def\versionyear{2007}          % latest update
 \def\year{2007}                 % latest copyright year
-%
+
 %**start of header
 \newcount\columnsperpage
+\newcount\letterpaper
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% At the moment this card works quite nicely in 3 column format and
-% currently takes 2 full pages.  It is thus suited to producing one 
-% double-side page when printed.
+% Specify how many you want here.
 
-% There are a couple of tweaks in the format of this card which make it work
-% slightly better on A4 paper.  The changes due, I think, to Stephen Eglen,
-% are commented below.  Revert the changes if you want letter sized paper.
+\columnsperpage=3
 
-% Try running something like
-% tex org-mode-ref.tex; dvips -t landscape org-mode-ref.dvi
-% to print the card
+% Set letterpaper to 0 for A4 paper, 1 for letter (US) paper.  Useful
+% only when columnsperpage is 2 or 3.
 
-\columnsperpage=3
+\letterpaper=0
+
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
 
-% Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc
+\input pdflayout.sty
+\pdflayout=(0l)
+
+% Nothing else needs to be changed below this line.
+% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
+%   2005, 2006, 2007  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
@@ -35,8 +41,8 @@
 
 % You should have received a copy of the GNU General Public License
 % along with GNU Emacs; see the file COPYING.  If not, write to
-% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
+% the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
 
 % This file is intended to be processed by plain TeX (TeX82).
 %
 %    For this you need a dvi device driver that can print sideways.
 % Which mode to use is controlled by setting \columnsperpage above.
 %
+% To compile and print this document:
+% tex refcard.tex
+% dvips -t landscape refcard.dvi
+%
 % Author:
 %  Stephen Gildea
 %  Internet: gildea@stop.mail-abuse.org
@@ -82,20 +92,20 @@ are preserved on all copies.
 % can be scanned without complaint.
 \def\bye{\par\vfill\supereject\end}
 
-\newdimen\intercolumnskip       %horizontal space between columns
-\newbox\columna                 %boxes to hold columns already built
+\newdimen\intercolumnskip      %horizontal space between columns
+\newbox\columna                        %boxes to hold columns already built
 \newbox\columnb
 
 \def\ncolumns{\the\columnsperpage}
 
-\message{[\ncolumns\space 
+\message{[\ncolumns\space
   column\if 1\ncolumns\else s\fi\space per page]}
 
 \def\scaledmag#1{ scaled \magstep #1}
 
 % This multi-way format was designed by Stephen Gildea October 1986.
 % Note that the 1-column format is fontfamily-independent.
-\if 1\ncolumns                  %one-column format uses normal size
+\if 1\ncolumns                 %one-column format uses normal size
   \hsize 4in
   \vsize 10in
   \voffset -.7in
@@ -106,15 +116,18 @@ are preserved on all copies.
 
   \footline{\hss\folio}
   \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
-\else                           %2 or 3 columns uses prereduced size
-  \hsize 3.2in
-
-% FIXME - Try to make things more A4 friendly
-%  \vsize 7.95in
-  \vsize 7.65in
-%  \hoffset -.75in
-  \hoffset -.25in
-  \voffset -.745in
+\else                          %2 or 3 columns uses prereduced size
+  \if 1\the\letterpaper
+     \hsize 3.2in
+     \vsize 7.95in
+     \hoffset -.75in
+     \voffset -.745in
+  \else
+     \hsize 3.2in
+     \vsize 7.65in
+     \hoffset -.25in
+     \voffset -.745in
+  \fi
   \font\titlefont=cmbx10 \scaledmag2
   \font\headingfont=cmbx10 \scaledmag1
   \font\smallfont=cmr6
@@ -132,13 +145,14 @@ are preserved on all copies.
   \def\bf{\eightbf}
   \def\it{\eightit}
   \def\tt{\eighttt}
-
-% FIXME - Try to make things more A4 friendly
-%  \normalbaselineskip=.8\normalbaselineskip
-  \normalbaselineskip=.7\normalbaselineskip
+  \if 1\the\letterpaper
+     \normalbaselineskip=.8\normalbaselineskip
+  \else
+     \normalbaselineskip=.7\normalbaselineskip
+  \fi
   \normallineskip=.8\normallineskip
   \normallineskiplimit=.8\normallineskiplimit
-  \normalbaselines\rm           %make definitions take effect
+  \normalbaselines\rm          %make definitions take effect
 
   \if 2\ncolumns
     \let\maxcolumn=b
@@ -154,16 +168,16 @@ are preserved on all copies.
 
   \intercolumnskip=.46in
   \def\abc{a}
-  \output={%                    %see The TeXbook page 257
+  \output={%                   %see The TeXbook page 257
       % This next line is useful when designing the layout.
       %\immediate\write16{Column \folio\abc\space starts with \firstmark}
       \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
       \else\if a\abc
-        \global\setbox\columna\columnbox \global\def\abc{b}
+       \global\setbox\columna\columnbox \global\def\abc{b}
         %% in case we never use \columnb (two-column mode)
         \global\setbox\columnb\hbox to -\intercolumnskip{}
       \else
-        \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
+       \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
   \def\multicolumnformat{\shipout\vbox{\makeheadline
       \hbox{\box\columna\hskip\intercolumnskip
         \box\columnb\hskip\intercolumnskip\columnbox}
@@ -173,7 +187,7 @@ are preserved on all copies.
   \def\bye{\par\vfill\supereject
     \if a\abc \else\null\vfill\eject\fi
     \if a\abc \else\null\vfill\eject\fi
-    \end}  
+    \end}
 \fi
 
 % we won't be using math mode much, so redefine some of the characters
@@ -225,7 +239,7 @@ are preserved on all copies.
 \def\<#1>{{\it #1\/}}
 
 % kbd - argument is characters typed literally.  Like the Texinfo command.
-\def\kbd#1{{\tt#1}\null}        %\null so not an abbrev even if period follows
+\def\kbd#1{{\tt#1}\null}       %\null so not an abbrev even if period follows
 
 % beginexample...endexample - surrounds literal text, such a code example.
 % typeset in a typewriter font with line breaks preserved
@@ -316,15 +330,15 @@ are preserved on all copies.
 \section{Archiving}
 
 \key{toggle ARCHIVE tag}{C-c C-x C-a}
-\metax{mark fully done children}{C-u C-c C-x C-a}
+%\metax{mark fully done children}{C-u C-c C-x C-a}
 \key{force cycling of an ARCHIVEd tree}{C-TAB}
 \key{move subtree to archive file}{C-c C-x C-s}
-\metax{move all fully done children}{C-u C-c C-x C-s}
-To set archive location for current file, add a line like$^2$:
-\vskip -1mm
-\beginexample%
-\#+ARCHIVE: archfile::* Archived Tasks
-\endexample
+%\metax{move all fully done children}{C-u C-c C-x C-s}
+%To set archive location for current file, add a line like$^2$:
+%\vskip -1mm
+%\beginexample%
+%\#+ARCHIVE: archfile::* Archived Tasks
+%\endexample
 
 \section{Filtering and Sparse Trees}
 
@@ -359,13 +373,11 @@ Outside of tables, the same keys may have other functionality.
 
 {\bf Row and column editing}
 
-\key{move the current column left}{M-LEFT}
-\key{move the current column right}{M-RIGHT}
+\key{move the current column left}{M-LEFT/RIGHT}
 \key{kill the current column}{M-S-LEFT}
 \key{insert new column to left of cursor position}{M-S-RIGHT}
 
-\key{move the current row up}{M-UP}
-\key{move the current row down}{M-DOWN}
+\key{move the current row up/down}{M-UP/DOWN}
 \key{kill the current row or horizontal line}{M-S-UP}
 \key{insert new row above the current row}{M-S-DOWN}
 \key{insert hline below (\kbd{C-u} : above) current row}{C-c -}
@@ -378,34 +390,6 @@ Outside of tables, the same keys may have other functionality.
 \key{paste rectangular region}{C-c C-x C-y}
 \key{fill paragraph across selected cells}{C-c C-q}
 
-{\bf Calculations} (in combination with Emacs \kbd{calc} package)
-
-\key{set and eval column formula}{C-c =}
-\key{set and eval field formula}{C-u C-c =}
-\key{edit formulas in separate buffer}{C-c '}
-\key{re-apply all stored equations to current line}{C-c *}
-\key{re-apply all stored equations to entire table}{C-u C-c *}
-\key{iterate table to stability}{C-u C-u C-c *}
-
-%\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation
-%in lines starting with: {\tt | \# |}.
-
-\key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#}
-
-\key{show line, column, formula reference}{C-c ?}
-\key{sum numbers in current column/rectangle}{C-c +}
-\key{copy down with increment}{S-RET$^3$}
-
-Formulas typed in field are executed by \kbd{TAB},
-\kbd{RET} and \kbd{C-c C-c}.  \kbd{=} introduces a column
-formula, \kbd{:=} a named-field formula.
-
-\key{Example: Add Col1 and Col2}{=\$1+\$2}
-\key{... with printf format specification}{=\$1+\$2;\%.2f}
-\key{... with constants from constants.el}{=\$1/\$c/\$cm}
-\metax{sum from 2nd to 3rd hline}{:=vsum(@II..@III)}
-\key{apply current column formula}{=}
-
 {\bf Miscellaneous}
 
 \key{to limit column width to \kbd{N} characters, use}{...| <N> |...}
@@ -413,6 +397,7 @@ formula, \kbd{:=} a named-field formula.
 \key{make current field fully visible}{C-u TAB}
 \metax{export as tab-separated file}{M-x org-table-export}
 \metax{import tab-separated file}{M-x org-table-import}
+\key{sum numbers in current column/rectangle}{C-c +}
 
 {\bf Tables created with the \kbd{table.el} package}
 
@@ -420,6 +405,43 @@ formula, \kbd{:=} a named-field formula.
 \key{recognize existing table.el table}{C-c C-c}
 \key{convert table (Org-mode $\leftrightarrow$ table.el)}{C-c ~}
 
+{\bf Spreadsheet}
+
+Formulas typed in field are executed by \kbd{TAB},
+\kbd{RET} and \kbd{C-c C-c}.  \kbd{=} introduces a column
+formula, \kbd{:=} a field formula.
+
+\key{Example: Add Col1 and Col2}{|=\$1+\$2      |}
+\key{... with printf format specification}{|=\$1+\$2;\%.2f|}
+\key{... with constants from constants.el}{|=\$1/\$c/\$cm |}
+\metax{sum from 2nd to 3rd hline}{|:=vsum(@II..@III)|}
+\key{apply current column formula}{| = |}
+
+\key{set and eval column formula}{C-c =}
+\key{set and eval field formula}{C-u C-c =}
+\key{re-apply all stored equations to current line}{C-c *}
+\key{re-apply all stored equations to entire table}{C-u C-c *}
+\key{iterate table to stability}{C-u C-u C-c *}
+\key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#}
+\key{show line, column, formula reference}{C-c ?}
+\key{toggle coordinate grid}{C-c \}}
+\key{toggle formula debugger}{C-c \{}
+
+\newcolumn
+{\it Formula Editor}
+
+\key{edit formulas in separate buffer}{C-c '}
+\key{exit and install new formulas}{C-c C-c}
+\key{exit, install, and apply new formulas}{C-u C-c C-c}
+\key{abort}{C-c C-q}
+\key{toggle reference style}{C-c C-r}
+\key{pretty-print Lisp formula}{TAB}
+\key{complete Lisp symbol}{M-TAB}
+\key{shift reference point}{S-cursor}
+\key{shift test line for column references}{M-up/down}
+\key{scroll the window showing the table}{M-S-up/down}
+\key{toggle table coordinate grid}{C-c \}}
+
 \section{Links}
 
 \key{globally store link to the current location}{C-c l$^1$}
@@ -466,24 +488,24 @@ formula, \kbd{:=} a named-field formula.
 %\key{\kbd{vm://myself@some.where.org/folder\#id}}{\rm VM remote}
 
 
-\section{Remember-mode Integration}
+\section{Remember-mode Integration}
 
-See the manual for how to make remember.el use Org-mode links and
-files.  The note-finishing command \kbd{C-c C-c} will first prompt for
-an org file. In the file, find a location with:
+See the manual for how to make remember.el use Org-mode links and
+files.  The note-finishing command \kbd{C-c C-c} will first prompt for
+an org file. In the file, find a location with:
 
-\key{rotate subtree visibility}{TAB}
-\key{next heading}{DOWN}
-\key{previous heading}{UP}
+\key{rotate subtree visibility}{TAB}
+\key{next heading}{DOWN}
+\key{previous heading}{UP}
 
-Insert the note with one of the following: 
+Insert the note with one of the following: 
 
-\key{as sublevel of heading at cursor}{RET}
-\key{right here (cursor not on heading)}{RET}
-\key{before current heading}{LEFT}
-\key{after current heading}{RIGHT}
-\key{shortcut to end of buffer (cursor at buf-start)}{RET}
-\key{Abort}{q}
+\key{as sublevel of heading at cursor}{RET}
+\key{right here (cursor not on heading)}{RET}
+\key{before current heading}{LEFT}
+\key{after current heading}{RIGHT}
+\key{shortcut to end of buffer (cursor at buf-start)}{RET}
+\key{Abort}{q}
 
 \section{Completion}
 
@@ -502,16 +524,18 @@ after  ``{\tt :}'', and dictionary words elsewhere.
 \section{TODO Items and Checkboxes}
 
 \key{rotate the state of the current item}{C-c C-t}
+\metax{select next/previous state}{S-LEFT/RIGHT}
+\metax{select next/previous set}{C-S-LEFT/RIGHT}
 \key{view TODO items in a sparse tree}{C-c C-v}
 \key{view 3rd TODO keyword's sparse tree}{C-3 C-c C-v}
 
 \key{set the priority of the current item}{C-c , [ABC]}
 \key{remove priority cookie from current item}{C-c , SPC}
-\key{raise priority of current item}{S-UP$^3$}
-\key{lower priority of current item}{S-DOWN$^3$}
+\key{raise/lower priority of current item}{S-UP/DOWN$^3$}
+%\key{lower priority of current item}{S-DOWN$^3$}
 
-\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow}
-\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types}
+%\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow}
+%\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types}
 
 \key{insert new checkbox item in plain list}{M-S-RET}
 \key{toggle checkbox(es) in region/entry/at point}{C-c C-x C-b}
@@ -526,6 +550,24 @@ after  ``{\tt :}'', and dictionary words elsewhere.
 \key{create sparse tree with matching tags}{C-c \\}
 \key{globally (agenda) match tags at cursor}{C-c C-o}
 
+\section{Properties and Column View}
+
+\key{special commands in property lines}{C-c C-c}
+\key{next/previous allowed value}{S-left/right}
+\key{turn on column view}{C-c C-x C-c}
+
+\key{quit column view}{q}
+\key{next/previous allowed value}{S-left/right}
+\key{next/previous allowed value}{n / p}
+\key{edit value}{e}
+\key{edit allowed values list}{a}
+\key{show value}{v}
+\key{make column wider/narrower}{> / <}
+\key{move column left/right}{M-left/right}
+\key{add new column}{M-S-right}
+\key{Delete current column}{M-S-left}
+
+
 \section{Timestamps}
 
 \key{prompt for date and insert timestamp}{C-c .}
@@ -548,23 +590,17 @@ after  ``{\tt :}'', and dictionary words elsewhere.
 %\key{... forward/backward one month}{M-S-LEFT/RIGT}
 \key{Toggle custom format display for dates/times}{C-c C-x C-t}
 
+\newcolumn
 
-\section{Clocking Time}
+{\bf Clocking time}
 
 \key{start clock on current item}{C-c C-x C-i}
 \key{stop clock on current item}{C-c C-x C-o}
 \key{cancel current clock}{C-c C-x C-x}
-
 \key{display total subtree times}{C-c C-x C-d}
 \key{remove displayed times}{C-c C-c}
 \key{insert/update table with clock report}{C-c C-x C-r}
 
-\section{LaTeX and cdlatex-mode}
-
-\key{preview LaTeX fragment}{C-c C-x C-l}
-\key{Expand abbreviation (cdlatex-mode)}{TAB}
-\key{Insert/modify math symbol (cdlatex-mode)}{` / '}
-
 \section{Agenda Views}
 
 \key{add/move current file to front of agenda}{C-c [}
@@ -605,7 +641,7 @@ To set categories, add lines like$^2$:
 {\bf Change display}
 
 \key{delete other windows}{o}
-\key{switch to daily / weekly view}{d / w}
+\key{switch to day/week/month/year view}{d w m y}
 \key{toggle inclusion of diary entries}{D}
 \key{toggle time grid for daily schedule}{g}
 \key{toggle display of logbook entries}{l}
@@ -632,6 +668,7 @@ To set categories, add lines like$^2$:
 \key{change timestamp to today}{>}
 \key{insert new entry into diary}{i}
 
+\newcolumn
 \key{start the clock on current item (clock-in)}{I}
 \key{stop the clock (clock-out)}{O}
 \key{cancel current clock}{X}
@@ -640,7 +677,6 @@ To set categories, add lines like$^2$:
 
 \key{Open link in current line}{C-c C-o}
 
-\newcolumn
 {\bf Calendar commands}
 
 \key{find agenda cursor date in calendar}{c}
@@ -662,6 +698,12 @@ Include Emacs diary entries into Org-mode agenda with:
 (setq org-agenda-include-diary t)
 \endexample
 
+\section{LaTeX and cdlatex-mode}
+
+\key{preview LaTeX fragment}{C-c C-x C-l}
+\key{Expand abbreviation (cdlatex-mode)}{TAB}
+\key{Insert/modify math symbol (cdlatex-mode)}{` / '}
+
 \section{Exporting and Publishing}
 
 Exporting creates files with extensions {\it .txt\/} and {\it .html\/}
@@ -674,17 +716,17 @@ some other place.
 \key{insert template of export options}{C-c C-x t}
 \key{toggle fixed width for entry or region}{C-c :}
 
-{\bf HTML formatting}
+%{\bf HTML formatting}
 
-\key{make words {\bf bold}}{*bold*}
-\key{make words {\it italic}}{/italic/}
-\key{make words \underbar{underlined}}{_underlined_}
-\key{sub- and superscripts}{x\^{}3, J_dust}
-\key{\TeX{}-like macros}{\\alpha, \\to}
-\key{typeset lines in fixed width font}{start with :}
-\key{tables are exported as HTML tables}{start with |}
-\key{links become HTML links}{http:... etc}
-\key{include html tags}{@<b>...@</b>}
+%\key{make words {\bf bold}}{*bold*}
+%\key{make words {\it italic}}{/italic/}
+%\key{make words \underbar{underlined}}{_underlined_}
+%\key{sub- and superscripts}{x\^{}3, J_dust}
+%\key{\TeX{}-like macros}{\\alpha, \\to}
+%\key{typeset lines in fixed width font}{start with :}
+%\key{tables are exported as HTML tables}{start with |}
+%\key{links become HTML links}{http:... etc}
+%\key{include html tags}{@<b>...@</b>}
 
 %{\bf Export options}
 %
@@ -720,21 +762,6 @@ Subtrees whose header starts with COMMENT are never exported.
 
 \key{toggle COMMENT keyword on entry}{C-c ;}
 
-
-%\section{CUA and pc-select compatibility}%
-
-%Configure the variable {\tt org-CUA-compatibility} to make Org-mode
-%avoid the \kbd{S-<cursor>} bindings used by these modes.  When set,
-%Org-mode will change the following keybindings (also in the agenda
-%buffer, but not during date selection). See note mark four$^3$
-%throughout the reference card.
-%%\vskip-mm
-%\beginexample
-%S-UP    $\to$ M-p             S-DOWN  $\to$ M-n
-%S-LEFT  $\to$ M--             S-RIGHT $\to$ M-+
-%S-RET   $\to$ C-S-RET
-%\endexample
-
 \section{Dynamic Blocks}
 
 \key{update dynamic block at point}{C-c C-x C-u}
@@ -753,10 +780,8 @@ $^3$ Keybinding affected by {\tt org-CUA-compatibility}.
 
 \bye
 \f
+% Local variables:
+% compile-command: "pdftex refcard"
+% End:
 
 % arch-tag: 139f6750-5cfc-49ca-92b5-237fe5795290
-
-%%% Local Variables: 
-%%% mode: latex
-%%% TeX-master: t
-%%% End: 
diff --git a/etc/refcards/pdflayout.sty b/etc/refcards/pdflayout.sty
new file mode 100644 (file)
index 0000000..187ffee
--- /dev/null
@@ -0,0 +1,49 @@
+% Copyright (C) 2007  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, 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; see the file COPYING.  If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
+
+% This file defines `\pdflayout':
+%  - \pdflayout=(0) is A4 portrait,
+%  - \pdflayout=(1) is letter (US) portrait,
+%  - \pdflayout=(0l) is A4 landscape.
+%  - \pdflayout=(1l) is letter (US) landscape,
+
+\input ifpdf.sty
+
+\ifpdf
+  \def\pdflayout=(#1#2){
+    \if0#1 % A4
+      \pdfpagewidth=21cm
+      \pdfpageheight=29.7cm
+    \else\if1#1 % Letter
+      \pdfpagewidth=8.5in
+      \pdfpageheight=11in
+    \fi\fi
+    \if l#2 % Landscape
+      \edef\oldwidth{\the\pdfpagewidth}
+      \pdfpagewidth=\pdfpageheight
+      \pdfpageheight=\oldwidth
+    \fi
+  }
+\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.pdf b/etc/refcards/pl-refcard.pdf
new file mode 100644 (file)
index 0000000..03e517b
Binary files /dev/null and b/etc/refcards/pl-refcard.pdf differ
similarity index 99%
rename from etc/pl-refcard.tex
rename to etc/refcards/pl-refcard.tex
index 43f583b8e75c62183fc7d7b2e7a956b0dab8c14e..f9e478f6467a8626b71d6a68523e034b73aab8f4 100644 (file)
 \newcount\columnsperpage
 
 % This file can be printed with 1, or 2 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 
 \columnsperpage=2
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
+% Nothing else needs to be changed.
 % Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005,
 %   2006, 2007  Free Software Foundation, Inc.
 
@@ -995,7 +1002,7 @@ przez wywo/lanie \kbd{C-h f interactive}.
 \bye
 \f
 % Local variables:
-% compile-command: "tex pl-refcard"
+% compile-command: "pdftex pl-refcard"
 % End:
 
 % arch-tag: 19d15a16-70be-40c8-ad91-88899aac32a9
diff --git a/etc/refcards/pt-br-refcard.pdf b/etc/refcards/pt-br-refcard.pdf
new file mode 100644 (file)
index 0000000..ca65c99
Binary files /dev/null and b/etc/refcards/pt-br-refcard.pdf differ
similarity index 98%
rename from etc/pt-br-refcard.tex
rename to etc/refcards/pt-br-refcard.tex
index 6492ce55c102152bbb5c9dc50d6636da7a2e4e4f..2531af624b25f6910cbcc91e1cd2584010e4a09c 100644 (file)
@@ -8,11 +8,17 @@
 
 \columnsperpage=3
 
-% Set letterpapaer to 0 for A4 paper, 1 for letter (US) paper.  Useful
+% Set letterpaper to 0 for A4 paper, 1 for letter (US) paper.  Useful
 % only when columnsperpage is 2 or 3.
 
 \letterpaper=0
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0l)
+
 % Nothing else needs to be changed below this line.
 % Copyright (C) 1987, 1993, 1996, 1997, 2002, 2003, 2004,
 %   2006, 2007  Free Software Foundation, Inc.
@@ -681,7 +687,7 @@ detalhes.
 \bye
 \f
 % Local variables:
-% compile-command: "tex pt-br-refcard"
+% compile-command: "pdftex pt-br-refcard"
 % coding: iso-latin-1
 % End:
 
diff --git a/etc/refcards/refcard.pdf b/etc/refcards/refcard.pdf
new file mode 100644 (file)
index 0000000..51dd334
Binary files /dev/null and b/etc/refcards/refcard.pdf differ
similarity index 98%
rename from etc/refcard.tex
rename to etc/refcards/refcard.tex
index cbe82c48c9cdf1f23431892ffcf1ae0175c8da17..0e12bf57ac6cae10aa5184ce7299bbada4999885 100644 (file)
@@ -8,11 +8,17 @@
 
 \columnsperpage=3
 
-% Set letterpapaer to 0 for A4 paper, 1 for letter (US) paper.  Useful
+% Set letterpaper to 0 for A4 paper, 1 for letter (US) paper.  Useful
 % only when columnsperpage is 2 or 3.
 
 \letterpaper=1
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(1l)
+
 % Nothing else needs to be changed below this line.
 % Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
 %   2005, 2006, 2007  Free Software Foundation, Inc.
@@ -673,7 +679,7 @@ Type \kbd{C-h f interactive} for more details.
 \bye
 \f
 % Local variables:
-% compile-command: "tex refcard"
+% compile-command: "pdftex refcard"
 % End:
 
 % arch-tag: d67bdf5d-b77c-44eb-a22e-f4f7d25174d2
diff --git a/etc/refcards/ru-refcard.pdf b/etc/refcards/ru-refcard.pdf
new file mode 100644 (file)
index 0000000..d962cd8
Binary files /dev/null and b/etc/refcards/ru-refcard.pdf differ
similarity index 99%
rename from etc/ru-refcard.tex
rename to etc/refcards/ru-refcard.tex
index 2853c65a1155db2f0bb034e502c6be3a46563a0b..16f9538857a62223ab49f160abadecb5504ff6c9 100644 (file)
@@ -518,7 +518,7 @@ With ARG, put point on line ARG."
 \end{document}
 \f
 % Local variables:
-% compile-command: "latex ru-refcard"
+% compile-command: "pdflatex ru-refcard"
 % coding: cyrillic-koi8
 % End:
 
diff --git a/etc/refcards/sk-dired-ref.pdf b/etc/refcards/sk-dired-ref.pdf
new file mode 100644 (file)
index 0000000..412cd3b
Binary files /dev/null and b/etc/refcards/sk-dired-ref.pdf differ
similarity index 98%
rename from etc/sk-dired-ref.tex
rename to etc/refcards/sk-dired-ref.tex
index e00de765241bb41911063ee8c16ca091f69b3c19..4767ad7de75a34138a4019928873be2d02377064 100644 (file)
 % Boston, MA 02110-1301, USA.
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 %**start of header
 
 \newcount\columnsperpage
 
 \columnsperpage=2
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
+% Nothing else needs to be changed.
 % This file is intended to be processed by plain TeX (TeX82).
 % The reference card looks OK with 2 columns per page, portrait mode.
 % I haven't tried it with 3 columns per page.
diff --git a/etc/refcards/sk-refcard.pdf b/etc/refcards/sk-refcard.pdf
new file mode 100644 (file)
index 0000000..722e933
Binary files /dev/null and b/etc/refcards/sk-refcard.pdf differ
similarity index 99%
rename from etc/sk-refcard.tex
rename to etc/refcards/sk-refcard.tex
index be5b57b84055d674b4d1be8bceb7875c522228e5..e51a1872d9b9b9a70dba1a686af47de3b9793529 100644 (file)
@@ -7,10 +7,17 @@
 \newcount\columnsperpage
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 
 \columnsperpage=1
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
+% Nothing else needs to be changed.
 % Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
 %   2005, 2006, 2007  Free Software Foundation, Inc.
 
similarity index 98%
rename from etc/sk-survival.tex
rename to etc/refcards/sk-survival.tex
index 61d549e1b5b556bec6cf8090cd166e055496be28..d936c6da393fe774c4c854504bbbf8de1840c009 100644 (file)
   \endinput
 \fi
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(0)
+
 % Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
 %   2006, 2007  Free Software Foundation, Inc.
 
similarity index 98%
rename from etc/survival.tex
rename to etc/refcards/survival.tex
index 45662ecc4eac3b76027dcfd44ec4ddc5cbd69273..75072f7b4e84ae2e324a8218beef4a3d9c0d7950 100644 (file)
@@ -3,9 +3,6 @@
 % Title:  GNU Emacs Survival Card
 % Author: Wlodek Bzyl <matwb@univ.gda.pl>
 %
-% $Revision: 1.8 $
-% $Date: 2000/05/05 22:00:48 $
-%
 %**start of header
 
 % User interface is `plain.tex' and macros described below
   \endinput
 \fi
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(1)
+
 % Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
 %   2006, 2007  Free Software Foundation, Inc.
 
@@ -410,7 +413,7 @@ contains names of the current modes, in parentheses.
 \bye
 \f
 % Local variables:
-% compile-command: "tex survival"
+% compile-command: "pdftex survival"
 % End:
 
 % arch-tag: 4f9a0562-617b-4843-aee1-450c41d6b22c
similarity index 98%
rename from etc/vipcard.tex
rename to etc/refcards/vipcard.tex
index 667a8e9d1320865bbf3bc07a6af88e16b063ad20..09fc583eb4a7bb9b3e4cf39798a7c945eb7dc131 100644 (file)
@@ -3,10 +3,17 @@
 \newcount\columnsperpage
 
 % This file can be printed with 1, 2, or 3 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 
 \columnsperpage=1
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(1)
+
+% Nothing else needs to be changed.
 % Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005,
 %   2006, 2007  Free Software Foundation, Inc.
 
@@ -678,7 +685,7 @@ moves 11 lines below current line to the end of buffer.
 \bye
 \f
 % Local variables:
-% compile-command: "tex refcard"
+% compile-command: "pdftex vipcard"
 % End:
 
 % arch-tag: 342a9548-4de4-499d-b864-74fb426b6729
similarity index 99%
rename from etc/viperCard.tex
rename to etc/refcards/viperCard.tex
index 71996e9d143b1b7efd2a51c745751fb68cc434e0..b672ce9ebc8c7122fa261e7f758401256de06c14 100644 (file)
@@ -3,10 +3,17 @@
 \newcount\columnsperpage
 
 % This file can be printed with 1 or 2 columns per page (see below).
-% Specify how many you want here.  Nothing else needs to be changed.
+% Specify how many you want here.
 
 \columnsperpage=2
 
+% PDF output layout.  0 for A4, 1 for letter (US), a `l' is added for
+% a landscape layout.
+
+\input pdflayout.sty
+\pdflayout=(1)
+
+% Nothing else needs to be changed.
 % Copyright (C) 1995, 1996, 1997, 2001, 2002, 2003, 2004,
 %   2005, 2006, 2007  Free Software Foundation, Inc.
 
@@ -743,7 +750,7 @@ Ex commands can be made to have history. See the manual for details.
 \bye
 \f
 % Local variables:
-% compile-command: "tex viperCard"
+% compile-command: "pdftex viperCard"
 % End:
 
 % arch-tag: e287b45c-4c5e-4bf9-ae28-ead4cd9f68e3
diff --git a/etc/ru-refcard.ps b/etc/ru-refcard.ps
deleted file mode 100644 (file)
index 108beb7..0000000
+++ /dev/null
@@ -1,3938 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
-%%Title: ru-refcard.dvi
-%%Pages: 6
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: CMSY10 CMMI10 CMSY8
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips ru-refcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.01.20:1526
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMSY8
-%!PS-AdobeFont-1.1: CMSY8 1.0
-%%CreationDate: 1991 Aug 15 07:22:10
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-30 -955 1185 779}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
-5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
-80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
-1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
-DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
-9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
-CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
-F83C7D393392BCBC227771CDCB976E93302531886DDA73EBC9178917EFD0C20B
-133F1E59A8222E5BFB551A83F4FA4E7575C4E9556A1CD08636CCD84A8CD68BC5
-B0B5FDB60A42D5268523571C380A40A2185DA33AFCEF07CF681C587F69335477
-0A535626330F01005AE0E22F4F056542904D0BC2735740435058364F3E7EAE12
-D6E8F8F33F9F6E5B5DC4B10CCE72C3A8B08746022ADDA3C1C47766E8BE936416
-3C4F26FA35AF5DA3F7D9F49E6A866FE2F2536512BF226E3CCD1C2B9ADF85B404
-6377DEB1E20508D3D0E69F244B91C1C736A1BE3815FDDAB369C55D99CDA5C82A
-7873D8B378A3ED6E0D6C518B5F741029D946B0356249E3A6BCD013B7C829C503
-BA9D46A1C3CBD3FEC92F0C2D2207B273DC24E300E83AB9EED3EBBA394BE52DBA
-35BA6B291F971A79BC60
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.1: CMMI10 1.100
-%%CreationDate: 1996 Jul 23 07:53:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-32 -250 1048 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
-990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
-6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
-DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
-59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
-D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
-8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
-6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
-1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
-03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
-95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
-74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
-3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
-47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
-AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
-42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
-40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
-B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
-9560176676ABB71BBD0EE56B4CC492C0652750227CEC6CBEEE374709231B00CD
-0DE83AFDE295B314F6C8B1FFD32251C1925D96A64D739FF1DA4926460B28B3DE
-E949AA0BA3DDB16534FBA30C32092D5F712B5E8C8D5142F35AF2906E6C219D2C
-7FD9A368C193E0EB9C7E25FF03C546B6ED993F964CEDB1B8537C617170787F37
-88D6F2AD02384B01067FE3F98257BAB958BB3BCD1001090A4502DA0638080EC6
-DB784CC8AC37CDC01B29BC481D6A05ADC6188785262358C1BF1D694BBF31C1F1
-AF117C1ACED44AAC6EB4B9A2511A6762DDE8FCCBA5
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.1: CMSY10 1.0
-%%CreationDate: 1991 Aug 15 07:20:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 106 /bar put
-dup 110 /backslash put
-readonly def
-/FontBBox{-29 -960 1116 775}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
-27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
-5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
-0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
-DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
-71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
-4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
-515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD
-5F3D998C7A49AEF3CB6B1A9EB69F3CEA454AD2808F02492DD00C7050748656DA
-5A3A67850F65A778D67EBCC7040722819412C6225B3188DD2D94DDE572362C17
-4F50D814C4EBB50F501DE84522460B812765DDAABC6A311FFB429457E6767CDA
-983F330179AF9D598AEB9650568AD79307FB100555AB73B0929E428272550D22
-FBFA319BCE7F77420EFC9514634223E3BB29AD77E0B2A7D67B90AF5FEF8199FF
-0109AF4F39A23E7860EFC6F83A1BEE01DA2F5092363C2FA05251FAB8B291517B
-5806321FFA8B26906A5EECFE9CDD4949944E19B3504B268938BCAC03C2CE0CC5
-F4465CF1CF403B667113059AC5D340E30AE1825AA2829DA83196C33044E6023F
-C1654A0861D138AE84F16B962C0122AC9345ED069B0D66F1B775F1D5E3CD3B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (ru-refcard.dvi)
-@start /Fa 242[71 13[{}1 66.4176 /CMSY8 rf
-%DVIPSBitmapFont: Fb larm0800 8 56
-/Fb 56 241 df<3C007E00FF00FF00FF80FF807F803D8001800180018003800300030007
-0006000E001C0038007000600009157A8714>44 D<FFFFC0FFFFC0FFFFC0FFFFC012047F
-9018>I<3C7EFFFFFFFF7E3C08087A8714>I<003FC00000FFF00003E07C0007C03E000F80
-1F000F000F001E0007801E0007803E0007C03E0007C07C0003E07C0003E07C0003E07C00
-03E07C0003E0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC00
-03F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F07C00
-03E07C0003E07C0003E07E0007E03E0007C03E0007C03E0007C01F000F800F000F000F80
-1F0007C03E0003F0FC0000FFF000003FC0001C2D7DAB23>48 D<000C00003C00007C0003
-FC00FFFC00FC7C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000
-7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000
-7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000
-7C00007C0000FE007FFFFE7FFFFE172C7AAB23>I<007F800001FFF0000780FC000E003F
-001C001F8038000FC070000FC0600007E0F00007E0FC0007F0FE0007F0FE0003F0FE0003
-F0FE0003F07C0007F0000007F0000007F0000007E000000FE000000FC000001FC000001F
-8000003F0000007E0000007C000000F8000001F0000003E0000007C000000F8000001E00
-00003C00000078000000F0003000E0003001C0003003800060070000600E0000E01FFFFF
-E03FFFFFE07FFFFFC0FFFFFFC0FFFFFFC01C2C7DAB23>I<003FC00001FFF00007C0FC00
-0E007E001C003F001C001F803F001FC03F001FC03F800FC03F000FC03F000FC00C001FC0
-00001FC000001F8000001F8000003F0000003E0000007C000000F8000003F00000FFC000
-00FFF0000000FC0000003F0000001F8000001FC000000FC000000FE000000FE0000007F0
-000007F0380007F07C0007F0FE0007F0FE0007F0FE0007F0FE000FE0F8000FE060000FC0
-70001FC038001F801E003F000780FC0001FFF000007FC0001C2D7DAB23>I<0C0001800F
-C01F800FFFFF000FFFFE000FFFFC000FFFF0000FFFC0000C7E00000C0000000C0000000C
-0000000C0000000C0000000C0000000C0000000C0000000C1FC0000C7FF8000DE07C000F
-801F000F001F800E000F800C0007C0000007E0000007E0000003E0000003F0000003F000
-0003F0000003F0780003F0FC0003F0FC0003F0FC0003F0FC0003F0F80007E0E00007E060
-0007C070000FC038000F801C001F000E003E000780F80001FFE000007F80001C2D7DAB23
->53 D<0003F800000FFE00003E078000F8018001F007C003E00FC007C00FC00F800FC00F
-800FC01F0007801F0000003E0000003E0000007E0000007E0000007C0000007C0FC000FC
-3FF000FCF07C00FDC01E00FF800F00FF000F80FF0007C0FE0007E0FE0007E0FE0003E0FC
-0003F0FC0003F0FC0003F0FC0003F07C0003F07C0003F07C0003F07E0003F07E0003F03E
-0003E03E0007E01E0007E01F0007C00F000F8007801F0003C03E0001E07C00007FF00000
-1FC0001C2D7DAB23>I<300000003C0000003FFFFFF83FFFFFF83FFFFFF07FFFFFF07FFF
-FFE0700001C06000018060000380C0000700C0000E00C0000C0000001C00000038000000
-3000000070000000E0000001C0000001C00000038000000380000007000000070000000F
-0000000E0000001E0000001E0000003E0000003E0000003E0000003C0000007C0000007C
-0000007C0000007C000000FC000000FC000000FC000000FC000000FC000000FC000000FC
-000000FC000000FC0000007800001D2E7CAC23>I<0000000000C00000000003C0000000
-000F00000000003C0000000000F00000000003C0000000000F00000000003C0000000000
-F00000000003C0000000001F00000000007C0000000001E0000000000780000000001E00
-00000000780000000001E0000000000780000000001E0000000000780000000000E00000
-0000007800000000001E000000000007800000000001E000000000007800000000001E00
-0000000007800000000001E000000000007C00000000001F000000000003C00000000000
-F000000000003C00000000000F000000000003C00000000000F000000000003C00000000
-000F000000000003C00000000000C02A297AA437>60 D<C00000000000F000000000003C
-00000000000F000000000003C00000000000F000000000003C00000000000F0000000000
-03C00000000000F000000000003E00000000000F800000000001E0000000000078000000
-00001E000000000007800000000001E000000000007800000000001E0000000000078000
-00000001C0000000000780000000001E0000000000780000000001E00000000007800000
-00001E0000000000780000000001E0000000000F80000000003E0000000000F000000000
-03C0000000000F00000000003C0000000000F00000000003C0000000000F00000000003C
-0000000000F00000000000C000000000002A297AA437>62 D<00003FF000000001FFFE00
-000007C00F8000001E0001E00000380000700000F000003C0001C000000E000380000007
-0007000000038006000FC001800E007FF001C01C01F03C00E01803E00E00603807C00700
-70300F80038030701F0001F838601F0001F818603E0000F818603E0000F818E03E0000F8
-1CC07C0000F80CC07C0000F80CC07C0000F80CC07C0000F80CC07C0000F80CC07C0000F8
-0CC07C0000F80CC07C0000F80CE03E0000F80C603E0000F80C603E0000F80C601F0001F8
-1C701F0001F818300F8003F8183807C007F8181803E00EF8381C01F03C7C700E007FF03F
-E006000FC00F8007000000000003800000000001C00000000000F00000003C0038000001
-FC001E00001FF00007C003FF800001FFFFF80000003FFE00002E307CAE37>64
-D<000001800000000003C00000000003C00000000003C00000000007E00000000007E000
-0000000FF0000000000FF0000000000FF0000000001BF80000000019F80000000019F800
-00000030FC0000000030FC0000000070FE00000000607E00000000607E00000000C03F00
-000000C03F00000000C03F00000001801F80000001801F80000003801FC0000003000FC0
-000003000FC00000060007E00000060007E00000060007E000000C0003F000000C0003F0
-00001FFFFFF800001FFFFFF80000180001F80000300000FC0000300000FC0000300000FC
-00006000007E00006000007E0000E000007F0000C000003F0000C000003F0001C000001F
-8003C000001F8007C000001FC00FF000003FE0FFFC0003FFFFFFFC0003FFFF302F7EAE35
->I<FFFFFFFC0000FFFFFFFF800003F8000FC00001F80003F00001F80001F80001F80000
-FC0001F80000FE0001F800007E0001F800007F0001F800007F0001F800007F0001F80000
-7F0001F800007F0001F800007F0001F800007E0001F80000FE0001F80000FC0001F80001
-F80001F80003F00001F8000FE00001F8007F800001FFFFFF000001FFFFFFE00001F80003
-F00001F80001FC0001F80000FE0001F800007F0001F800003F0001F800003F8001F80000
-1F8001F800001FC001F800001FC001F800001FC001F800001FC001F800001FC001F80000
-1FC001F800001F8001F800003F8001F800003F0001F800007F0001F80000FE0001F80003
-FC0003F8000FF000FFFFFFFFC000FFFFFFFE00002A2D7DAC32>I<00001FF000C00000FF
-FE01C00003F00F83C0000F8001E3C0003F000077C0007C00003FC001F800001FC003F000
-000FC007E0000007C007E0000007C00FC0000003C01FC0000003C01F80000001C03F8000
-0001C03F00000001C07F00000000C07F00000000C07F00000000C0FE0000000000FE0000
-000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000
-000000FE0000000000FE0000000000FE00000000007F00000000007F00000000C07F0000
-0000C03F00000000C03F80000000C01F80000001C01FC0000001800FC00000018007E000
-00038007E00000070003F00000060001F800000E00007C00001C00003F00007800000F80
-01E0000003F00FC0000000FFFE000000001FF000002A2F7CAD33>I<FFFFFFFFFC00FFFF
-FFFFFC0003F80003FC0001F800007C0001F800003E0001F800001E0001F800000E0001F8
-00000E0001F80000060001F80000060001F80000060001F80000070001F80000030001F8
-0030030001F80030030001F80030000001F80030000001F80030000001F80070000001F8
-0070000001F801F0000001FFFFF0000001FFFFF0000001F801F0000001F80070000001F8
-0070000001F80030000001F80030000001F8003000C001F8003000C001F8003000C001F8
-0000018001F80000018001F80000018001F80000018001F80000038001F80000030001F8
-0000070001F80000070001F800000F0001F800001F0001F800007F0003F80001FE00FFFF
-FFFFFE00FFFFFFFFFE002A2D7DAC30>69 D<FFFFFFFFFCFFFFFFFFFC03F80003FC01F800
-007C01F800003E01F800001E01F800000E01F800000E01F800000601F800000601F80000
-0601F800000701F800000301F800180301F800180301F800180001F800180001F8001800
-01F800380001F800780001F800F80001FFFFF80001FFFFF80001F800F80001F800780001
-F800380001F800180001F800180001F800180001F800180001F800180001F800000001F8
-00000001F800000001F800000001F800000001F800000001F800000001F800000001F800
-000001F800000001F800000003FC000000FFFFF80000FFFFF80000282D7EAC2E>I<0000
-1FF000C00000FFFE01C00003F00F83C0000F8001E3C0003F000077C0007C00003FC001F8
-00001FC003F000000FC007E0000007C007E0000007C00FC0000003C01FC0000003C01F80
-000001C03F80000001C03F00000001C07F00000000C07F00000000C07F00000000C0FE00
-00000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE00
-00000000FE0000000000FE0000000000FE00001FFFFEFE00001FFFFE7F0000001FE07F00
-00000FC07F0000000FC03F0000000FC03F8000000FC01F8000000FC01FC000000FC00FC0
-00000FC007E000000FC007E000000FC003F000000FC001F800001FC0007C00001FC0003F
-00003FC0000F8000F3C00003F007C1C00000FFFF00C000001FF800002F2F7CAD37>I<FF
-FFF0FFFFF003FC0001F80001F80001F80001F80001F80001F80001F80001F80001F80001
-F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
-F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
-F80001F80001F80001F80001F80001F80003FC00FFFFF0FFFFF0142D7EAC19>73
-D<007FFFF0007FFFF00000FF0000007E0000007E0000007E0000007E0000007E0000007E
-0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E
-0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E
-0000007E0000007E0000007E0000007E0000007E0000007E0000007E0038007E00FE007E
-00FE007E00FE007E00FE00FE00FE00FC007800FC007001F8003803F0001E07E00007FF80
-0001FC00001C2E7DAC24>I<FFF800000007FFC0FFFC0000000FFFC003FC0000000FF000
-01FC0000000FE00001BE0000001BE00001BE0000001BE000019F00000033E000019F0000
-0033E000019F00000033E000018F80000063E000018F80000063E0000187C00000C3E000
-0187C00000C3E0000183E0000183E0000183E0000183E0000183E0000183E0000181F000
-0303E0000181F0000303E0000180F8000603E0000180F8000603E0000180F8000603E000
-01807C000C03E00001807C000C03E00001803E001803E00001803E001803E00001803E00
-1803E00001801F003003E00001801F003003E00001800F806003E00001800F806003E000
-018007C0C003E000018007C0C003E000018007C0C003E000018003E18003E000018003E1
-8003E000018001F30003E000018001F30003E000018001F30003E000018000FE0003E000
-018000FE0003E0000180007C0003E00003C0007C0003E0000FF0007C0007F000FFFF0038
-01FFFFC0FFFF003801FFFFC03A2D7DAC41>77 D<FFF80003FFFCFFFC0003FFFC01FC0000
-3FC001FE00000F0001FF0000060001BF8000060001BF80000600019FC0000600018FE000
-06000187E00006000187F00006000183F80006000181F80006000181FC0006000180FE00
-060001807E00060001807F00060001803F80060001801FC0060001800FC0060001800FE0
-0600018007F00600018003F00600018003F80600018001FC0600018000FC0600018000FE
-06000180007F06000180003F86000180001F86000180001FC6000180000FE60001800007
-E60001800007F60001800003FE0001800001FE0001800001FE0001800000FE0001800000
-7E00018000003E00018000003E0003C000001E000FF000000E00FFFF00000E00FFFF0000
-06002E2D7DAC35>I<00003FF000000001FFFE00000007E01F8000001F8007E000003E00
-01F00000FC0000FC0001F800007E0003F000003F0007E000001F8007C000000F800FC000
-000FC01F80000007E01F80000007E03F00000003F03F00000003F07F00000003F87F0000
-0003F87E00000001F87E00000001F8FE00000001FCFE00000001FCFE00000001FCFE0000
-0001FCFE00000001FCFE00000001FCFE00000001FCFE00000001FCFE00000001FCFE0000
-0001FC7F00000003F87F00000003F87F00000003F83F00000003F03F80000007F01F8000
-0007E01F80000007E00FC000000FC00FE000001FC007E000001F8003F000003F0001F800
-007E0000FC0000FC00007E0001F800001F8007E0000007E01F80000001FFFE000000003F
-F000002E2F7CAD37>I<FFFFFFF800FFFFFFFF0003F8001FC001F80007E001F80001F001
-F80001F801F80000FC01F80000FE01F800007E01F800007F01F800007F01F800007F01F8
-00007F01F800007F01F800007F01F800007E01F80000FE01F80000FC01F80001F801F800
-01F001F80007E001F8001FC001FFFFFF0001FFFFF80001F800000001F800000001F80000
-0001F800000001F800000001F800000001F800000001F800000001F800000001F8000000
-01F800000001F800000001F800000001F800000001F800000001F800000001F800000001
-F800000003FC000000FFFFF00000FFFFF00000282D7DAC30>I<003F803001FFF07007C0
-7C700F000EF01E0007F03C0003F0780001F0780000F0700000F0F0000070F0000070F000
-0070F0000030F8000030F8000030FC0000007E0000007F0000003FE000003FFE00001FFF
-E0000FFFFC0007FFFF0001FFFF80003FFFE00003FFE000003FF0000007F8000001F80000
-00F8000000FC0000007CC000007CC000003CC000003CC000003CE000003CE000003CE000
-0078F0000078F8000070FC0000F0FE0001E0F78003C0E3F00F00E07FFE00C00FF0001E2F
-7CAD27>83 D<FFFFF003FFFCFFFFF003FFFC03FC00003FC001F800000F0001F800000600
-01F80000060001F80000060001F80000060001F80000060001F80000060001F800000600
-01F80000060001F80000060001F80000060001F80000060001F80000060001F800000600
-01F80000060001F80000060001F80000060001F80000060001F80000060001F800000600
-01F80000060001F80000060001F80000060001F80000060001F80000060001F800000600
-01F80000060001F80000060001F80000060001F80000060001F800000E0000F800000C00
-00FC00000C0000FC00001C00007C00001800007E00003800003F00007000001F00006000
-000F8001E0000007E00380000001F80F000000007FFC000000000FF000002E2E7DAC35>
-85 D<00FF000007FFC0000F01F0001C00F8003F007C003F003E003F003E003F003F001E
-001F0000001F0000001F0000001F0000001F000007FF00007FFF0001FE1F0007F01F001F
-C01F003F801F007F001F007E001F00FE001F06FC001F06FC001F06FC001F06FC003F06FE
-003F067E007F067F00EF8C1F83C7FC0FFF03F801FC01E01F207D9E23>97
-D<07C0000000FFC0000000FFC00000000FC000000007C000000007C000000007C0000000
-07C000000007C000000007C000000007C000000007C000000007C000000007C000000007
-C000000007C000000007C0FE000007C7FF800007CF03E00007DC01F00007F8007C0007F0
-007E0007E0003E0007C0001F0007C0001F8007C0001F8007C0000F8007C0000FC007C000
-0FC007C0000FC007C0000FC007C0000FC007C0000FC007C0000FC007C0000FC007C0000F
-C007C0001F8007C0001F8007C0001F0007C0003F0007E0003E0007F0007C0007B000F800
-07BC01F000070E07E0000607FF80000001FC0000222F7EAD27>I<001FE000007FFC0001
-F01E0003E0070007C01F800F801F801F001F803F001F803E000F007E0000007E0000007C
-000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC
-0000007E0000007E0000007E0000C03F0000C01F0001C01F8001800FC0038007E0070001
-F03E00007FF800001FC0001A207E9E1F>I<000000F80000001FF80000001FF800000001
-F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8
-00000000F800000000F800000000F800000000F800000000F800000FE0F800007FF8F800
-01F81EF80003E007F80007C003F8000F8001F8001F0001F8003F0000F8003E0000F8007E
-0000F8007E0000F800FC0000F800FC0000F800FC0000F800FC0000F800FC0000F800FC00
-00F800FC0000F800FC0000F800FC0000F8007C0000F8007E0000F8007E0000F8003E0001
-F8001F0001F8001F8003F8000F8007F80003E00EFC0001F03CFFC0007FF0FFC0001FC0F8
-00222F7EAD27>I<001F800000FFF00003E0780007C03E000F801E001F001F001F000F80
-3E000F807E0007807E0007C07C0007C0FC0007C0FC0007C0FC0007C0FFFFFFC0FFFFFFC0
-FC000000FC000000FC000000FC000000FC0000007E0000007E0000003E0000C03F0000C0
-1F0001C00F8003800FC0030003E00F0001F03C00007FF800001FC0001A207E9E1F>I<00
-03F0000FFC003E1E007C3F00F83F01F03F01F03F03E00C03E00003E00003E00003E00003
-E00003E00003E00003E00003E00003E000FFFFE0FFFFE003E00003E00003E00003E00003
-E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
-E00003E00003E00003E00003E00003E00003E00003E00007F0007FFF807FFF80182F7FAE
-16>I<003F00F800FFC3FE03E1FF1E07807C1E0F807C0C1F003E001F003E003E001F003E
-001F003E001F003E001F003E001F003E001F003E001F001F003E001F003E000F807C0007
-8078000FE1F0000CFFC0001C3F00001C0000001C0000001C0000001E0000001F0000000F
-FFF8000FFFFF0007FFFFC00FFFFFF01E0007F83C0000F87800007CF800007CF000003CF0
-00003CF000003CF000003CF800007C7C0000F83E0001F01F0003E007E01F8001FFFE0000
-3FF0001F2D7E9D23>I<07C0000000FFC0000000FFC00000000FC000000007C000000007
-C000000007C000000007C000000007C000000007C000000007C000000007C000000007C0
-00000007C000000007C000000007C000000007C0FE000007C3FF800007C703E00007DE01
-F00007F801F00007F000F80007F000F80007E000F80007E000F80007C000F80007C000F8
-0007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F800
-07C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007
-C000F80007C000F8000FE001FC00FFFE1FFFC0FFFE1FFFC0222E7EAD27>I<07800FC01F
-E01FE01FE01FE00FC007800000000000000000000000000000000007C0FFC0FFC00FC007
-C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007
-C007C007C007C007C00FE0FFFCFFFC0E2E7EAD14>I<07C0000000FFC0000000FFC00000
-000FC000000007C000000007C000000007C000000007C000000007C000000007C0000000
-07C000000007C000000007C000000007C000000007C000000007C000000007C000000007
-C01FFE0007C01FFE0007C00FF00007C007C00007C007800007C00E000007C01C000007C0
-38000007C070000007C0E0000007C3C0000007C7C0000007CFE0000007DFF0000007F9F0
-000007F0F8000007E0FC000007C07E000007C03E000007C01F000007C01F800007C00FC0
-0007C007C00007C003E00007C003F00007C001F8000FE003FC00FFFE07FF80FFFE07FF80
-212E7EAD25>107 D<07C0FFC0FFC00FC007C007C007C007C007C007C007C007C007C007
-C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007
-C007C007C007C007C007C007C007C007C007C007C007C00FE0FFFEFFFE0F2E7EAD14>I<
-07C07F0007F000FFC3FFC03FFC00FFC783F0783F000FCE01F8E01F8007DC00F9C00F8007
-F800FF800FC007F0007F0007C007E0007E0007C007E0007E0007C007C0007C0007C007C0
-007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C000
-7C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C
-0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C0007C007C0007C00
-07C007C0007C0007C00FE000FE000FE0FFFE0FFFE0FFFEFFFE0FFFE0FFFE371E7E9D3C>
-I<07C0FE0000FFC3FF8000FFC703E0000FDE01F00007F801F00007F000F80007F000F800
-07E000F80007E000F80007C000F80007C000F80007C000F80007C000F80007C000F80007
-C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C0
-00F80007C000F80007C000F80007C000F80007C000F80007C000F8000FE001FC00FFFE1F
-FFC0FFFE1FFFC0221E7E9D27>I<001FE000007FF80001F03E0003C00F00078007800F00
-03C01F0003E03E0001F03E0001F07C0000F87C0000F87C0000F8FC0000FCFC0000FCFC00
-00FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FC7C0000F87C0000F83E00
-01F03E0001F01F0003E01F0003E00F8007C007C00F8001F03E00007FF800001FE0001E20
-7E9E23>I<07C0FE0000FFC7FF8000FFCF03E0000FDC01F00007F800FC0007F0007E0007
-E0003E0007C0003F0007C0001F8007C0001F8007C0001F8007C0000FC007C0000FC007C0
-000FC007C0000FC007C0000FC007C0000FC007C0000FC007C0000FC007C0001FC007C000
-1F8007C0001F8007C0003F0007C0003F0007E0007E0007F0007C0007F000F80007FC01F0
-0007CE07E00007C7FF800007C1FC000007C000000007C000000007C000000007C0000000
-07C000000007C000000007C000000007C000000007C00000000FE0000000FFFE000000FF
-FE000000222B7E9D27>I<0781F0FF87FCFF9E7E0F987E07B87E07B07E07F03C07E00007
-E00007E00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
-C00007C00007C00007C00007C00007C00007C0000FE000FFFF00FFFF00171E7E9D1B>
-114 D<01FE1807FFB81E01F83C00F8780078F00038F00038F00018F00018F80018FC0018
-FF00007FF0003FFF001FFFC00FFFF001FFF8001FFC0001FCC0007EC0003EC0003EE0001E
-E0001EF0001EF0001EF8003CF8003CFC0078FF01F0E3FFC0C0FF0017207E9E1C>I<0060
-0000600000600000600000E00000E00000E00001E00003E00003E00007E0001FE000FFFF
-F0FFFFF003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
-0003E00003E00003E00003E00003E01803E01803E01803E01803E01803E01803E01803E0
-3801F03001F07000F860003FE0000F80152A7FA81B>I<07C000F800FFC01FF800FFC01F
-F8000FC001F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F8
-0007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F800
-07C000F80007C000F80007C000F80007C000F80007C000F80007C001F80007C001F80007
-C001F80007C003F80003E007F80003E00EFC0001F81CFFC0007FF8FFC0001FE0F800221F
-7E9D27>I<FFFC01FFC0FFFC01FFC00FE0007E0007E0007C0007E000380003E000300003
-E000700001F000600001F000600000F800C00000F800C00000F800C000007C018000007C
-018000003E030000003E030000003F070000001F060000001F060000000F8C0000000F8C
-0000000FDC00000007D800000007D800000003F000000003F000000003F000000001E000
-000001E000000000C00000221E7F9C25>I<FFFC3FFE07FFFFFC3FFE07FF0FE003F001F8
-0FC003E000F007C001E000E007C001F000E003E003F000C003E003F000C003E007F801C0
-01F00678018001F00678018001F80E7C038000F80C3C030000F80C3C0300007C181E0600
-007C181E0600007C181F0600003E300F0C00003E300F0C00003E300F8C00001F60079800
-001F60079800001F6007D800000FC003F000000FC003F000000FC003F00000078001E000
-00078001E00000078001E00000030000C000301E7F9C33>I<FFFC07FF80FFFC07FF800F
-F003FC0003F001F00001F001C00001F803800000F8030000007C060000003E0E0000001F
-1C0000001FB80000000FB000000007E000000003E000000001F000000003F800000007F8
-000000067C0000000C3E0000001C1F000000381F800000700F800000E007C00000E003E0
-0003C003F00007C001F8001FE003FC00FFF007FFC0FFF007FFC0221D7F9C25>I<FFFC01
-FFC0FFFC01FFC00FE0007E0007E0007C0007E000380003E000300003F000700001F00060
-0001F000600000F800C00000F800C00000FC01C000007C018000007E038000003E030000
-003E030000001F060000001F060000001F8E0000000F8C0000000F8C00000007D8000000
-07D800000003F000000003F000000003F000000001E000000001E000000000C000000000
-C0000000018000000001800000000380000000030000007803000000FC06000000FC0600
-0000FC0C000000FC1C000000783800000070700000003FE00000000F80000000222B7F9C
-25>I<FFFFFFFFFFFFFFFFFFFFFFFF03F800001FC001F800001F8001F800001F8001F800
-001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800
-001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800
-001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800
-001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800
-001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800
-001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800
-001F8003FC00003FC0FFFFF00FFFFFFFFFF00FFFFF302D7DAC37>207
-D<FFFFF800FFFFFF000FC01F8007C007E007C003E007C003F007C003F007C003F007C003
-F007C007E007C00FC007C03F8007FFFC0007FFFE0007C00F8007C003E007C001F007C000
-F807C000FC07C000FC07C000FC07C000FC07C000FC07C001F807C001F807C003F00FC00F
-E0FFFFFF80FFFFFE001E1D7E9C23>226 D<00FFFFFFE000FFFFFFE0000E007E00000E00
-7C000006007C000004007C00000C007C00000C007C00000C007C00000C007C00000C007C
-00000C007C00000C007C00000C007C00000C007C00000C007C000018007C000018007C00
-0018007C000030007C000030007C000070007C000060007C0000E0007C0001C0007C0003
-80007C000F00007E007FFFFFFFE07FFFFFFFE07C000003E078000001E070000000E06000
-000060E000000070E000000070C000000030C000000030C000000030C000000030C00000
-003024287F9C27>228 D<001F800000FFF00003E0780007C03E000F801E001F001F001F
-000F803E000F807E0007807E0007C07C0007C0FC0007C0FC0007C0FC0007C0FFFFFFC0FF
-FFFFC0FC000000FC000000FC000000FC000000FC0000007E0000007E0000003E0000C03F
-0000C01F0001C00F8003800FC0030003E00F0001F03C00007FF800001FC0001A207E9E1F
->I<001FE000007FF80001F03E0003C00F00078007800F0003C01F0003E03E0001F03E00
-01F07C0000F87C0000F87C0000F8FC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC00
-00FCFC0000FCFC0000FCFC0000FC7C0000F87C0000F83E0001F03E0001F01F0003E01F00
-03E00F8007C007C00F8001F03E00007FF800001FE0001E207E9E23>238
-D<07C0FE0000FFC7FF8000FFCF03E0000FDC01F00007F800FC0007F0007E0007E0003E00
-07C0003F0007C0001F8007C0001F8007C0001F8007C0000FC007C0000FC007C0000FC007
-C0000FC007C0000FC007C0000FC007C0000FC007C0000FC007C0001FC007C0001F8007C0
-001F8007C0003F0007C0003F0007E0007E0007F0007C0007F000F80007FC01F00007CE07
-E00007C7FF800007C1FC000007C000000007C000000007C000000007C000000007C00000
-0007C000000007C000000007C000000007C00000000FE0000000FFFE000000FFFE000000
-222B7E9D27>240 D E
-%EndDVIPSBitmapFont
-/Fc 197[23 58[{}1 83.022 /CMMI10 rf /Fd 145[42 3[23 106[{}2
-83.022 /CMSY10 rf
-%DVIPSBitmapFont: Fe lati1000 10 6
-/Fe 6 115 df<0000F800000007FE0000001F871C00003E03FE00007C03FE0000F801FE
-0001F801FE0003F000FC0007E000FC000FE000FC000FC001FC001FC001F8001FC001F800
-3F8001F8003F8003F8007F8003F0007F0003F0007F0003F0007F0007F000FF0007E000FE
-0007E000FE0007E000FE000FE000FE000FC000FC000FC1C0FC000FC1C0FC001FC1C0FC00
-1F83C0FC001F8380FC003F8380FC003F87807C007F87007C00FF07003E01FF0F003E038F
-8E001F0F079E0007FE03FC0001F000F000222677A42A>97 D<00007F000003FFC0000FC1
-E0001F0070007E007800FC003801F801F803F003F807F003F807E003F80FE003F81FC003
-F01FC000003F8000003F8000007F8000007F0000007F0000007F000000FF000000FE0000
-00FE000000FE000000FE000000FC000000FC000000FC000000FC000030FC000038FC0000
-787C0000F07E0001E03E0003C03E000F801F003E000F81F80003FFE00000FF00001D2677
-A426>99 D<000007C00000003FF0000000FC38E00001F01FF00003E01FF00007C00FF000
-0F800FF0001F8007F0003F0007E0007F0007E0007E000FE000FE000FE000FC000FC001FC
-000FC001FC001FC003FC001FC003F8001F8003F8001F8003F8003F8007F8003F8007F000
-3F0007F0003F0007F0007F0007F0007F0007E0007E0007E0007E0007E000FE0007E000FE
-0007E000FC0003E001FC0003E003FC0003E007FC0001F00FF80000F01FF80000787BF800
-003FF3F800000FC3F000000003F000000007F000000007F000000007E000000007E00000
-000FE00000000FC0001C000FC0007E001FC0007E001F8000FE003F0000FE007E0000FE00
-FC00007801F800007C07E000001FFF80000003FE00000024367CA426>103
-D<0003F0000001FFF0000001FFF0000001FFF000000007F000000007E000000007E00000
-0007E00000000FE00000000FC00000000FC00000000FC00000001FC00000001F80000000
-1F800000001F800000003F800000003F000000003F000000003F000000007F000000007E
-07F000007E1FFC00007E783E0000FFE01F0000FFC01F8000FF800F8000FF000F8001FE00
-0F8001FE000FC001FC000FC001F8001F8003F8001F8003F0001F8003F0001F8003F0003F
-8007F0003F0007E0003F0007E0003F0007E0007F000FE0007E000FC0007E000FC000FE00
-0FC000FC001FC000FC001F8001FC1C1F8001F81C1F8001F83C3F8003F8383F0003F0383F
-0003F0383F0003F0707F0003E0707E0003E0F07E0003E0E07E0003E1C0FE0001E380FC00
-00FF003800003C00263B7BB92A>I<01E000FE000007F803FF80000E3C0F07C0001E3E3C
-03E0001C1F7803F000383FF001F000383FE001F000783FC001F000703FC001F800703F80
-01F800703F0003F000F07F0003F000E07E0003F000E07E0003F000007E0007F00000FE00
-07E00000FC0007E00000FC0007E00000FC000FE00001FC000FC00001F8000FC00001F800
-1FC00001F8001F800003F8001F800003F0003F838003F0003F038003F0003F078007F000
-7F070007E0007E070007E0007E070007E0007E0E000FE0007C0E000FC0007C1E000FC000
-7C1C000FC0007C38001FC0003C78001F80001FE000070000078000292679A42F>110
-D<03C003F0000FF01FFC001E783C0F001C7C700F003C3EE03F80383FC03F80387F803F80
-787F803F00707F003F00707F001C00F07E000000E0FE000000E0FC000000E0FC00000000
-FC00000001FC00000001F800000001F800000001F800000003F800000003F000000003F0
-00000003F000000007F000000007E000000007E000000007E00000000FE00000000FC000
-00000FC00000000FC00000001FC00000001F800000001F800000001F800000003F800000
-003F000000000E00000000212679A423>114 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff labx1000 10 36
-/Ff 36 256 df<FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FF
-FFFF8019087F9620>45 D<000000007F800000007FFF800000007FFF800000007FFF8000
-00007FFF8000000003FF8000000001FF8000000001FF8000000001FF8000000001FF8000
-000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000
-000001FF8000000001FF8000000001FF8000000001FF8000000001FF800001FF81FF8000
-0FFFF1FF80003FFFFDFF8000FFC07FFF8003FF001FFF8007FC0007FF800FFC0003FF801F
-F80001FF801FF00001FF803FF00001FF803FF00001FF807FE00001FF807FE00001FF807F
-E00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FF
-E00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF807FE00001FF807F
-E00001FF807FF00001FF803FF00001FF803FF00001FF801FF80003FF800FF80007FF8007
-FC000FFF8003FE001FFFC001FF80FDFFFE007FFFF9FFFE001FFFE1FFFE0001FF01FFFE2F
-3A7DB935>100 D<0003FF8000001FFFF000007FFFFC0001FF83FE0003FE007F8007FC00
-3F800FF8003FC01FF8001FE01FF0001FE03FF0000FF03FF0000FF07FE0000FF07FE0000F
-F87FE00007F8FFE00007F8FFE00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000
-FFE0000000FFE0000000FFE00000007FE00000007FE00000007FE00000003FF00000003F
-F00000781FF00000780FF80000F80FFC0000F007FC0003F001FF000FE000FFC07FC0007F
-FFFF00000FFFFC000001FFE00025257DA42C>I<00001FF0000001FFFC000007FFFF0000
-1FF87F80003FE0FF8000FFC1FFC000FFC1FFC001FF81FFC001FF81FFC003FF01FFC003FF
-00FF8003FF00FF8003FF003E0003FF00000003FF00000003FF00000003FF00000003FF00
-000003FF00000003FF00000003FF000000FFFFFF0000FFFFFF0000FFFFFF0000FFFFFF00
-0003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000
-03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003
-FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
-00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
-0000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE0000223A7DB91D>I<00FE007FC000FF
-FE03FFF800FFFE0FFFFE00FFFE1F03FF00FFFE3C01FF8007FE7801FF8003FEF000FF8003
-FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30
-257DA435>110 D<00FF00003FC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC0FFFF003F
-FFC007FF0001FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000
-FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000
-FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000
-FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0001FFC003FF0001
-FFC003FF0003FFC003FF0003FFC001FF0007FFC001FF800FFFE000FFC03EFFFF007FFFFC
-FFFF001FFFF0FFFF0003FF80FFFF30257DA435>117 D<003FFE00000003FFFFE000000F
-FFFFF800001FF00FFE00003FF003FF00003FF801FF80003FF800FFC0003FF800FFC0003F
-F8007FE0003FF8007FE0001FF0007FE0000FE0007FE0000380007FE0000000007FE00000
-00007FE00000003FFFE000000FFFFFE000007FFFFFE00001FFF87FE00007FF807FE0000F
-FE007FE0003FF8007FE0003FF0007FE0007FE0007FE000FFE0007FE000FFC0007FE000FF
-C0007FE000FFC0007FE000FFC0007FE000FFC000FFE000FFE001FFE0007FE001FFE0003F
-F007FFF8001FFC1FBFFFC00FFFFE1FFFC003FFF80FFFC0003FE003FFC02A257DA42E>
-224 D<000000003E0000000003FE00000001FFFE0000007FFFFE000007FFFFFE00001FFF
-FFFC00007FFFFFFC0001FFFFFFF80003FFFFFFF00007FFFFFFC0000FFFFFF800000FFFC0
-0000001FFC000000001FF0000000003FE0000000003FC0000000003F80000000003F0000
-0000007E00000000007E00000000007C00000000007C01FFC000007C0FFFF80000787FFF
-FF0000F8FF80FF8000FBFE003FE000FFFC001FF000FFF8000FF800FFF00007FC00FFF000
-07FC00FFF00007FE00FFE00003FE00FFE00003FF00FFE00003FF00FFE00003FF00FFE000
-03FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE000
-03FF80FFE00003FF80FFE00003FF807FE00003FF007FE00003FF007FE00003FF003FE000
-03FE003FF00007FE001FF00007FC001FF00007FC000FF8000FF80007FC001FF00003FE00
-3FE00001FF80FFC000007FFFFF0000001FFFFC00000001FFC00000293A7DB930>I<FFFF
-FFFC0000FFFFFFFFC000FFFFFFFFF00003FF001FF80003FF000FFC0003FF0007FE0003FF
-0007FE0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0007FE0003FF
-0007FE0003FF001FFC0003FF007FF00003FFFFFFC00003FFFFFF000003FFFFFFE00003FF
-000FF80003FF0007FC0003FF0003FE0003FF0001FF0003FF0001FF8003FF0001FFC003FF
-0001FFC003FF0001FFC003FF0001FFC003FF0001FFC003FF0001FFC003FF0001FF8003FF
-0003FF8003FF0003FF0003FF0007FE0003FF001FFC00FFFFFFFFF800FFFFFFFFE000FFFF
-FFFF00002A257EA430>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FF003FE003FF000FE0
-03FF0007E003FF0003E003FF0001E003FF0001F003FF0001F003FF0000F003FF0000F003
-FF0000F003FF0000F003FF0000F003FF00000003FF00000003FF00000003FF00000003FF
-00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
-000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF0000
-00FFFFFE0000FFFFFE0000FFFFFE000024257EA429>I<000FFFFFFFFFC0000FFFFFFFFF
-C0000FFFFFFFFFC000007C003FF000000078003FF000000078003FF000000078003FF000
-000078003FF000000078003FF000000078003FF000000078003FF000000078003FF00000
-0078003FF000000078003FF000000078003FF000000070003FF000000070003FF0000000
-F0003FF0000000F0003FF0000000F0003FF0000000E0003FF0000001E0003FF0000001E0
-003FF0000001C0003FF0000003C0003FF0000003C0003FF000000780003FF00000078000
-3FF000000F00003FF000001F00003FF000003E00003FF000007C00003FF00000F800003F
-F00001F000003FF0007FFFFFFFFFFFE07FFFFFFFFFFFE07FFFFFFFFFFFE07FE00000007F
-E07F000000000FE07E0000000007E07C0000000003E07C0000000003E0F80000000001F0
-F80000000001F0F80000000001F0F00000000000F0F00000000000F0F00000000000F0F0
-0000000000F0F00000000000F0343280A435>I<0003FF8000001FFFF000007FFFFC0001
-FF83FE0003FE007F8007FC003F800FF8003FC01FF8001FE01FF0001FE03FF0000FF03FF0
-000FF07FE0000FF07FE0000FF87FE00007F8FFE00007F8FFE00007F8FFFFFFFFF8FFFFFF
-FFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE00000
-007FE00000003FF00000003FF00000781FF00000780FF80000F80FFC0000F007FC0003F0
-01FF000FE000FFC07FC0007FFFFF00000FFFFC000001FFE00025257DA42C>I<3FFF003F
-FFFF003FFF003FFF003FFFFF003FFF003FFF003FFFFF003FFF0003FE0000FFC0001FF000
-00FE0000FFC0001FC000007F0000FFC0003F8000001FC000FFC000FE0000000FE000FFC0
-01FC00000007F000FFC003F800000001FC00FFC00FE000000000FE00FFC01FC000000000
-3F00FFC03F00000000001FC0FFC0FE00000000000FE0FFC1FC00000000000FF0FFC3FC00
-000000000FFCFFCFFC00000000001FFEFFDFFE00000000003FFFFFFFFF00000000007FFF
-FFFFFF8000000000FFEFFFFDFFC000000001FFE3FFF1FFE000000003FFC1FFE0FFF00000
-0003FF80FFC07FF000000007FF00FFC03FF80000000FFE00FFC01FFC0000001FFC00FFC0
-0FFE0000003FF800FFC007FF0000007FF800FFC007FF8000007FF000FFC003FF800000FF
-E000FFC001FFC00001FFC000FFC000FFE00003FF8000FFC0007FF00007FF0000FFC0003F
-F8000FFF0000FFC0003FFC00FFFFE03FFFFF01FFFFC0FFFFE03FFFFF01FFFFC0FFFFE03F
-FFFF01FFFFC04A257EA44F>I<701FFF00007CFFFFF0007FFFFFFE007FE00FFF007F8001
-FF807F0000FFC07E0000FFC07C00007FE07C00007FE07800007FE07800007FE0000000FF
-C0000001FFC0000003FF0000000FFE00003FFFF800003FFFC000003FFFF80000000FFE00
-000003FF80000000FFC0000000FFC00000007FE00000007FF00000007FF00000007FF000
-00007FF0F000007FF0F800007FF07800007FE0780000FFE07C0000FFC03E0003FF801FC0
-0FFF000FFFFFFC0003FFFFF000007FFF000024257EA42A>I<FFFFFC3FFFFFFFFFFC3FFF
-FFFFFFFC3FFFFF03FF0000FFC003FF0000FFC003FF0001FFC003FF0003FFC003FF0003FF
-C003FF0007FFC003FF000FFFC003FF001FFFC003FF001EFFC003FF003CFFC003FF007CFF
-C003FF0078FFC003FF00F0FFC003FF01E0FFC003FF01E0FFC003FF03C0FFC003FF0780FF
-C003FF0780FFC003FF0F00FFC003FF1E00FFC003FF3E00FFC003FF3C00FFC003FF7800FF
-C003FFF800FFC003FFF000FFC003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FF
-C003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30257EA435
->I<000F8001F000001FE007F800003FF00FFC00007FF00FFE00007FF81FFE00007FF81F
-FE00007FF81FFE00007FF81FFE00007FF00FFE00003FF00FFC00003FE007FC00001FC003
-F800000FFFFFF0000003FFFFC0000000FFFF000000001FF8000000000000000000000000
-0000000000000000000000000000FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF03FF0000
-FFC003FF0000FFC003FF0001FFC003FF0003FFC003FF0003FFC003FF0007FFC003FF000F
-FFC003FF001FFFC003FF001EFFC003FF003CFFC003FF007CFFC003FF0078FFC003FF00F0
-FFC003FF01E0FFC003FF01E0FFC003FF03C0FFC003FF0780FFC003FF0780FFC003FF0F00
-FFC003FF1E00FFC003FF3E00FFC003FF3C00FFC003FF7800FFC003FFF800FFC003FFF000
-FFC003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF0000FFC003FF0000
-FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30397EB835>I<FFFFFC00FFFCFFFFFC
-00FFFCFFFFFC00FFFC03FF00007FC003FF00007F0003FF0000FE0003FF0003F80003FF00
-07F00003FF000FE00003FF003F800003FF007F000003FF00FC000003FF03F8000003FF07
-F0000003FF0FF0000003FF3FF0000003FF7FF8000003FFFFFC000003FFFFFE000003FFF7
-FF000003FFC7FF800003FF83FFC00003FF01FFC00003FF00FFE00003FF007FF00003FF00
-3FF80003FF001FFC0003FF001FFE0003FF000FFE0003FF0007FF0003FF0003FF8003FF00
-01FFC003FF0000FFE003FF0000FFF0FFFFFC07FFFFFFFFFC07FFFFFFFFFC07FFFF30257E
-A435>I<001FFFFFFFFF80001FFFFFFFFF80001FFFFFFFFF800000F8007FE0000000F000
-7FE0000000F0007FE0000000F0007FE0000000F0007FE0000000F0007FE0000000F0007F
-E0000000F0007FE0000000F0007FE0000000F0007FE0000000F0007FE0000000F0007FE0
-000000F0007FE0000000F0007FE0000000F0007FE0000000F0007FE0000000F0007FE000
-0000F0007FE0000000F0007FE0000000F0007FE0000000F0007FE0000000F0007FE0001E
-01F0007FE0003F01F0007FE0007F81E0007FE000FFC1E0007FE000FFC3E0007FE000FFC3
-E0007FE000FFC7C0007FE000FF8FC0007FE0007FFF80007FE0003FFF001FFFFF801FFE00
-1FFFFF800FF8001FFFFF8031257FA435>I<FFFF8000007FFF80FFFFC00000FFFF80FFFF
-C00001FFFF8003FFE00001FFE00003FFE00001FFE00003FFE00003BFE00003DFF00003BF
-E00003DFF000073FE00003CFF800073FE00003CFF8000E3FE00003C7FC000E3FE00003C7
-FC001C3FE00003C7FC001C3FE00003C3FE001C3FE00003C3FE00383FE00003C1FF00383F
-E00003C1FF00703FE00003C0FF80703FE00003C0FF80E03FE00003C07FC0E03FE00003C0
-7FC1C03FE00003C07FC1C03FE00003C03FE1C03FE00003C03FE3803FE00003C01FF3803F
-E00003C01FF7003FE00003C00FFF003FE00003C00FFE003FE00003C007FE003FE00003C0
-07FE003FE00003C007FC003FE00003C003FC003FE00003C003F8003FE00007E001F8003F
-E000FFFF01F00FFFFF80FFFF00F00FFFFF80FFFF00E00FFFFF8039257DA440>I<FFFFFC
-3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF03FF0000FFC003FF0000FFC003FF0000FFC003FF00
-00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00
-00FFC003FF0000FFC003FF0000FFC003FFFFFFFFC003FFFFFFFFC003FFFFFFFFC003FF00
-00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00
-00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00
-00FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC
-3FFFFF30257EA435>I<0001FFC00000000FFFF80000007FFFFF000000FF80FF800003FE
-003FE00007FC001FF0000FF8000FF8001FF00007FC001FF00007FC003FF00007FE003FE0
-0003FE007FE00003FF007FE00003FF007FE00003FF00FFE00003FF80FFE00003FF80FFE0
-0003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE0
-0003FF807FE00003FF007FE00003FF007FE00003FF003FE00003FE003FF00007FE001FF0
-0007FC001FF00007FC000FF8000FF80007FC001FF00003FE003FE00001FF80FFC000007F
-FFFF0000001FFFFC00000001FFC0000029257DA430>I<FFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFF03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
-FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30257EA435>I<
-00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE07FF00FFFFF001FF8003FFE000FFC0
-03FF80007FE003FF00007FF003FF00003FF803FF00003FF803FF00001FFC03FF00001FFC
-03FF00001FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE
-03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFC
-03FF00001FFC03FF00001FFC03FF00001FF803FF00003FF803FF00003FF003FF80007FF0
-03FFC0007FE003FFE000FFC003FFF003FF8003FFFC07FE0003FF3FFFF80003FF0FFFE000
-03FF03FF000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000
-03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000
-03FF00000000FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC0000002F357EA435>
-I<0001FFC000000FFFFC00007FFFFF0000FF80FF8003FE00FFC007FC01FFC00FF801FFC0
-1FF801FFC01FF001FFC03FF001FFC03FF000FF807FE0007F007FE0001C007FE0000000FF
-E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0
-000000FFE00000007FE00000007FE00000007FF00000003FF00000003FF00001E01FF800
-01E01FF80003E00FFC0007C007FE00078003FF001F8000FFC07E00007FFFFC00000FFFF0
-000001FF800023257DA42A>I<7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7F81FF81FE7E01FF
-807E7C01FF803E7801FF801E7801FF801EF801FF801FF801FF801FF001FF800FF001FF80
-0FF001FF800FF001FF800FF001FF800F0001FF80000001FF80000001FF80000001FF8000
-0001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF800000
-01FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001
-FF800001FFFFFF8001FFFFFF8001FFFFFF8028257EA42D>I<FFFFF001FFF8FFFFF001FF
-F8FFFFF001FFF807FF00003F8003FF00001F0003FF00001E0003FF80003E0001FF80003C
-0001FFC0007C0000FFC000780000FFE000F800007FE000F000007FF001F000003FF001E0
-00003FF801E000001FF803C000001FF803C000001FFC07C000000FFC078000000FFE0F80
-000007FE0F00000007FF1F00000003FF1E00000003FFBE00000001FFBC00000001FFFC00
-000000FFF800000000FFF800000000FFF8000000007FF0000000007FF0000000003FE000
-0000003FE0000000001FC0000000001FC0000000000F80000000000F80000000000F0000
-0000000F00000000001F00000000001E0000003F003E0000007F803C000000FFC07C0000
-00FFC078000000FFC0F8000000FFC1F0000000FFC3E00000007F87C00000007D1F800000
-003FFF000000001FFC0000000007F0000000002D357EA432>I<00000001FE0000000000
-0001FFFE00000000000001FFFE00000000000001FFFE00000000000001FFFE0000000000
-00000FFE0000000000000007FE0000000000000007FE0000000000000007FE0000000000
-000007FE0000000000000007FE0000000000000007FE0000000000000007FE0000000000
-000007FE0000000000000007FE0000000000000007FE0000000000000007FE0000000000
-000007FE0000000000000007FE0000000000000007FE0000000000000007FE0000000000
-00FF87FE1FF00000000FFFE7FE7FFF0000003FFFFFFFFFFFC00000FFE07FFFE07FF00003
-FF801FFF801FFC0007FF000FFF000FFE000FFE0007FE0007FF001FFC0007FE0003FF801F
-F80007FE0001FF803FF80007FE0001FFC03FF00007FE0000FFC07FF00007FE0000FFE07F
-F00007FE0000FFE07FF00007FE0000FFE0FFE00007FE00007FF0FFE00007FE00007FF0FF
-E00007FE00007FF0FFE00007FE00007FF0FFE00007FE00007FF0FFE00007FE00007FF0FF
-E00007FE00007FF0FFE00007FE00007FF0FFE00007FE00007FF07FF00007FE0000FFE07F
-F00007FE0000FFE07FF00007FE0000FFE03FF00007FE0000FFC03FF80007FE0001FFC01F
-F80007FE0001FF801FFC0007FE0003FF800FFE000FFF0007FF0007FF000FFF000FFE0003
-FF801FFF801FFC0000FFE07FFFE07FF000003FFFFFFFFFFFC000000FFFE7FE7FFF000000
-00FF87FE1FF0000000000007FE0000000000000007FE0000000000000007FE0000000000
-000007FE0000000000000007FE0000000000000007FE0000000000000007FE0000000000
-000007FE0000000000000007FE0000000000000007FE0000000000000007FE0000000000
-000007FE00000000000001FFFFF8000000000001FFFFF8000000000001FFFFF800000000
-0001FFFFF8000000444A7DB94B>I<FFFFF01FFFF0FFFFF01FFFF0FFFFF01FFFF007FF00
-03FE0003FF8001F00001FFC003E00000FFC007E000007FE007C000003FF00F8000003FF8
-1F0000001FFC3E0000000FFC7C00000007FEFC00000003FFF800000003FFF000000001FF
-E000000000FFC0000000007FE0000000003FF0000000003FF8000000007FFC000000007F
-FC00000000FFFE00000001F3FF00000003E3FF80000007C1FFC000000FC0FFC000001F80
-7FE000001F003FF000003E003FF800007C001FFC0000F8000FFC0001F80007FE0007FC00
-07FF00FFFF003FFFF8FFFF003FFFF8FFFF003FFFF82D257EA432>I<FFFFFC3FFFFF00FF
-FFFC3FFFFF00FFFFFC3FFFFF0003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF
-0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF00
-00FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000
-FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FF
-C00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC0
-0003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC00003FF0000FFC000
-03FF0000FFC00003FF0000FFC000FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF8000
-00000001FF8000000000003F8000000000001F8000000000000F8000000000000F800000
-00000007C0000000000007C0000000000007C0000000000003C0000000000003C0000000
-000003C0000000000003C0000000000003C032327EA435>I<FFFFFC3FFFFFFFFFFC3FFF
-FFFFFFFC3FFFFF03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
-C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
-C003FF0000FFC003FF0000FFC001FF8001FFC000FF800FFFC0007FC07FFFC0003FFFFEFF
-C0000FFFF0FFC00001FF80FFC000000000FFC000000000FFC000000000FFC000000000FF
-C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF
-C000000000FFC000000000FFC00000003FFFFF0000003FFFFF0000003FFFFF30257EA435
->I<FFFFFC3FFFFF0FFFFFC0FFFFFC3FFFFF0FFFFFC0FFFFFC3FFFFF0FFFFFC003FF0000
-FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF000
-03FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0
-003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF
-0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003F
-F00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000
-FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF000
-03FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0
-003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF0000FFC0003FF00003FF
-0000FFC0003FF00003FF0000FFC0003FF000FFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFF
-FFE0FFFFFFFFFFFFFFFFFFE000000000000000007FE000000000000000000FE000000000
-0000000007E0000000000000000003E0000000000000000003E0000000000000000001F0
-000000000000000001F0000000000000000001F0000000000000000000F0000000000000
-000000F0000000000000000000F0000000000000000000F0000000000000000000F04C32
-7EA44F>249 D<7FFFFFF00000007FFFFFF00000007FFFFFF00000007F81FF800000007E
-01FF800000007C01FF800000007801FF800000007801FF80000000F801FF80000000F801
-FF80000000F001FF80000000F001FF80000000F001FF80000000F001FF80000000F001FF
-800000000001FFFFFF00000001FFFFFFF0000001FFFFFFFC000001FF801FFE000001FF80
-07FF000001FF8003FF800001FF8001FFC00001FF8001FFC00001FF8000FFE00001FF8000
-FFE00001FF8000FFE00001FF8000FFE00001FF8000FFE00001FF8000FFE00001FF8001FF
-C00001FF8001FFC00001FF8003FF800001FF8007FF000001FF801FFE00007FFFFFFFFC00
-007FFFFFFFF000007FFFFFFF000033257EA439>I<FFFFFC00003FFFFFFFFFFC00003FFF
-FFFFFFFC00003FFFFF03FF00000000FFC003FF00000000FFC003FF00000000FFC003FF00
-000000FFC003FF00000000FFC003FF00000000FFC003FF00000000FFC003FF00000000FF
-C003FF00000000FFC003FF00000000FFC003FF00000000FFC003FF00000000FFC003FFFF
-FE0000FFC003FFFFFFE000FFC003FFFFFFF800FFC003FF003FFC00FFC003FF000FFE00FF
-C003FF0007FF00FFC003FF0003FF80FFC003FF0003FF80FFC003FF0001FFC0FFC003FF00
-01FFC0FFC003FF0001FFC0FFC003FF0001FFC0FFC003FF0001FFC0FFC003FF0001FFC0FF
-C003FF0003FF80FFC003FF0003FF80FFC003FF0007FF00FFC003FF000FFE00FFC003FF00
-3FFC00FFC0FFFFFFFFF83FFFFFFFFFFFFFE03FFFFFFFFFFFFE003FFFFF40257EA445>I<
-FFFFFC000000FFFFFC000000FFFFFC00000003FF0000000003FF0000000003FF00000000
-03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000
-03FF0000000003FF0000000003FF0000000003FFFFFE000003FFFFFFE00003FFFFFFF800
-03FF003FFC0003FF000FFE0003FF0007FF0003FF0003FF8003FF0003FF8003FF0001FFC0
-03FF0001FFC003FF0001FFC003FF0001FFC003FF0001FFC003FF0001FFC003FF0003FF80
-03FF0003FF8003FF0007FF0003FF000FFE0003FF003FFC00FFFFFFFFF800FFFFFFFFE000
-FFFFFFFE00002A257EA430>I<FFFFFC0000FFE00000FFFFFC0007FFFC0000FFFFFC003F
-FFFF800003FF00007FC07FC00003FF0001FF001FF00003FF0003FE000FF80003FF0007FC
-0007FC0003FF000FF80003FE0003FF000FF80003FE0003FF001FF80003FF0003FF001FF0
-0001FF0003FF003FF00001FF8003FF003FF00001FF8003FF003FF00001FF8003FF007FF0
-0001FFC003FFFFFFF00001FFC003FFFFFFF00001FFC003FFFFFFF00001FFC003FF007FF0
-0001FFC003FF007FF00001FFC003FF007FF00001FFC003FF007FF00001FFC003FF007FF0
-0001FFC003FF003FF00001FF8003FF003FF00001FF8003FF003FF00001FF8003FF001FF0
-0001FF0003FF001FF80003FF0003FF000FF80003FE0003FF000FF80003FE0003FF0007FC
-0007FC0003FF0003FE000FF80003FF0001FF001FF00003FF0000FFC07FE000FFFFFC003F
-FFFF8000FFFFFC000FFFFE0000FFFFFC0000FFE0000042257EA448>254
-D<0001FFFFFFF8003FFFFFFFF800FFFFFFFFF803FFC007FE0007FE0007FE000FFE0007FE
-000FFC0007FE001FFC0007FE001FFC0007FE001FFC0007FE001FFC0007FE001FFC0007FE
-000FFC0007FE0007FE0007FE0003FF0007FE0001FFE007FE00007FFFFFFE00001FFFFFFE
-000000FFFFFE000001FFE7FE000001FFC7FE000003FF87FE000007FF87FE00000FFF07FE
-00001FFE07FE00001FFC07FE00003FFC07FE00007FF807FE0000FFF007FE0001FFE007FE
-0001FFE007FE0003FFC007FE0007FF8007FE001FFF8007FE00FFFFF1FFFFF8FFFFF1FFFF
-F8FFFFF1FFFFF82D257EA432>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg latt1000 10 75
-/Fg 75 126 df<000E0000003F8000007FC00001FFF00003FFF8000FFFFE001FFBFF007F
-F1FFC0FFC07FE0FF803FE0FE000FE07C0007C0780003C01B0D77B42D>2
-D<7FFFFFF0FFFFFFF8FFFFFFF8FFFFFFF87FFFFFF01D0579942C>21
-D<1F003F807FC0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FF
-E0FFE07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC01F00000000
-00000000000000000000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B3470
-B32C>33 D<3C001E007F007F00FF007F80FF007F80FF007F80FF007F80FF007F80FF007F
-807F007F007F007F007F007F007F007F007F007F007F007F007E003F007E003F007E003F
-007E003F007E003F007E003F003E003E003E003E003E003E003C001E001C001C00191977
-B32C>I<0007001C00000F803E00000F803E00000F803E00000F803E00000F803E00000F
-803E00000F803E00000F803E00001F807E00001F007C00001F007C00001F007C00001F00
-7C003FFFFFFFE0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8003E00F800003E00F8
-00007E01F800007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000
-007C01F000007C01F00000FC03F00000F803E00000F803E000FFFFFFFFF8FFFFFFFFF8FF
-FFFFFFF8FFFFFFFFF83FFFFFFFE001F007C00001F007C00001F007C00003F00FC00003E0
-0F800003E00F800003E00F800003E00F800003E00F800003E00F800003E00F800003E00F
-800001C007000025337DB22C>I<0001C000000003E000000003E000000003E000000003
-E000000003E000000003E00000000FFC0000007FFF800001FFFFE00007FFFFF0000FFFFF
-F8001FFBEFFC003FC3E1FE003F03E07F007E03E03F007C03E03F00FC03E03F80F803E03F
-80F803E07F80F803E07F80F803E07F80FC03E03F00FC03E03F007E03E000007F03E00000
-3FC3E000003FFBE000001FFFE000000FFFFC000007FFFF000001FFFFC000007FFFE00000
-1FFFF8000003FFFC000003E7FC000003E1FE000003E07F000003E03F001803E01F007E03
-E01F807E03E00F80FF03E00F80FF03E00F80FF03E00F80FE03E00F80FE03E01F80FE03E0
-1F007E03E03F007F03E03E003F83E0FE003FC3E1FC001FFBEFF8000FFFFFF00007FFFFE0
-0003FFFFC00000FFFF0000001FF800000003E000000003E000000003E000000003E00000
-0003E000000003E000000001C0000021417BB92C>I<07800007001FE0000F801FE0001F
-803FF0001F807FF8003F807FF8003F007CF8007F00FCFC007E00F87C007E00F87C00FE00
-F87C00FC00F87C01FC00F87C01F800F87C01F800F87C03F800FCFC03F0007CF803F0007F
-F807F0007FF807E0003FF00FE0001FE00FC0001FE00FC00007801FC00000001F80000000
-3F800000003F000000003F000000007F000000007E00000000FE00000000FC00000000FC
-00000001FC00000001F800000001F800000003F800000003F000000007F000000007E000
-000007E00000000FE00000000FC00000001FC00000001F800F00001F803FC0003F807FE0
-003F007FE0007F00FFF0007E00F9F0007E00F9F000FE01F9F800FC01F0F800FC01F0F801
-FC01F0F801F801F0F803F801F0F803F001F0F803F001F9F807F000F9F007E000F9F00FE0
-00FFF00FC0007FE00FC0007FE007C0003FC00380000F0025417DB92C>I<0F801FE03FF0
-7FF07FF87FF87FFC7FFC3FFC1FFC0FFC007C007C007C00FC00F800F801F801F003F007E0
-07E00FC03F807F80FF00FE00F80070000E1D71B22C>39 D<0000380000FC0001FC0003FC
-0007F8000FF0001FC0003F80007F0000FE0001FC0003F80003F00007F00007E0000FE000
-0FC0001F80001F80003F80003F00003F00007F00007E00007E00007E0000FE0000FC0000
-FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FE0000
-7E00007E00007E00007F00003F00003F00003F80001F80001F80000FC0000FE00007E000
-07F00003F00003F80001FC0000FE00007F00003F80001FC0000FF00007F80003FC0001FC
-0000FC000038164272B92C>I<700000FC0000FE0000FF00007F80003FC0000FE00007F0
-0003F80001FC0000FE00007F00003F00003F80001F80001FC0000FC00007E00007E00007
-F00003F00003F00003F80001F80001F80001F80001FC0000FC0000FC0000FC0000FC0000
-FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0001FC0001F80001F80001F80003
-F80003F00003F00007F00007E00007E0000FC0001FC0001F80003F80003F00007F0000FE
-0001FC0003F80007F0000FE0003FC0007F8000FF0000FE0000FC0000700000164279B92C
->I<000380000007C0000007C0000007C0000007C0000007C0000007C0002007C008F807
-C03EFE07C0FEFF07C1FEFFC7C7FEFFE7CFFE3FFFFFF80FFFFFE003FFFF8001FFFF00007F
-FC00007FFC0001FFFF0003FFFF800FFFFFE03FFFFFF8FFE7CFFEFFC7C7FEFF07C1FEFE07
-C0FEF807C03E2007C0080007C0000007C0000007C0000007C0000007C0000007C0000003
-80001F247AAA2C>I<00007000000000F800000000F800000000F800000000F800000000
-F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8
-00000000F800000000F800000000F800003FFFFFFFE0FFFFFFFFF8FFFFFFFFF8FFFFFFFF
-F8FFFFFFFFF80000F800000000F800000000F800000000F800000000F800000000F80000
-0000F800000000F800000000F800000000F800000000F800000000F800000000F8000000
-00F800000000F800000000F80000000070000025267DAB2C>I<0F801FE03FF07FF87FF8
-7FFC7FFC7FFC3FFC1FFC0FFC00FC00F800F801F803F007F01FE07FC0FF80FF00FC007000
-0E17718A2C>I<7FFFFFF0FFFFFFF8FFFFFFF8FFFFFFF87FFFFFF01D0579942C>I<1F003F
-807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B0B708A2C>I<00000007000000000F80
-0000000F800000001F800000001F000000003F000000003E000000007E000000007C0000
-00007C00000000FC00000000F800000001F800000001F000000003F000000003E0000000
-07E000000007C00000000FC00000000F800000001F800000001F000000003F000000003E
-000000003E000000007E000000007C00000000FC00000000F800000001F800000001F000
-000003F000000003E000000007E000000007C00000000FC00000000F800000001F800000
-001F000000003F000000003E000000003E000000007E000000007C00000000FC00000000
-F800000001F800000001F000000003F000000003E000000007E000000007C00000000FC0
-0000000F800000001F800000001F000000001F000000003F000000003E000000007E0000
-00007C00000000FC00000000F800000000F800000000700000000021417BB92C>I<0003
-F80000000FFE0000003FFF8000007FFFC00000FFFFE00001FE0FF00003F803F80007F001
-FC0007E000FC000FC0007E000FC0007E001F80003F001F80003F003F00001F803F00001F
-803E00000F807E00000FC07E00000FC07E00000FC07C000007C0FC000007E0FC000007E0
-FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC
-000007E0FC000007E0FC000007E0FE00000FE07E00000FC07E00000FC07E00000FC07E00
-000FC03F00001F803F00001F803F00001F801F80003F001F80003F000FC0007E000FE000
-FE0007E000FC0007F001FC0003F803F80001FE0FF00000FFFFE000007FFFC000003FFF80
-00000FFE00000003F8000023357CB32C>I<00070000000F8000000F8000001F8000001F
-8000003F8000007F800000FF800001FF800007FF80007FFF8000FFFF8000FFDF8000FF9F
-80007C1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
-8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
-8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
-8000001F8000001F8000001F8000001F8000001F8000001F80007FFFFFE0FFFFFFF0FFFF
-FFF0FFFFFFF07FFFFFE01C3477B32C>I<000FF80000007FFF800001FFFFE00007FFFFF0
-000FFFFFFC001FF80FFE003FE001FF003F80007F007F00003F807E00001F80FE00001FC0
-FE00000FC0FF00000FE0FF000007E0FF000007E0FF000007E07E000007E03C000007E000
-000007E000000007E00000000FE00000000FC00000001FC00000001F800000003F800000
-003F000000007F00000000FE00000001FC00000003FC00000007F80000000FF00000001F
-E00000003FC0000000FF80000001FE00000003FC00000007F80000000FF00000003FE000
-00007F80000000FF00000001FE00000003FC0003C007F80007E01FE00007E03FC00007E0
-7FFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC023347CB32C>I<000FFC00
-00007FFF800001FFFFE00007FFFFF8000FFFFFFC001FF807FE001FC000FE003F80007F00
-3FC0003F003FC0003F803FC0001F803FC0001F801F80001F800F00001F800000001F8000
-00003F800000003F000000007F00000000FE00000001FE00000003FC0000001FF800001F
-FFF000003FFFE000003FFFE000003FFFF800001FFFFC00000007FE00000000FF00000000
-7F000000003F800000001FC00000000FC00000000FC00000000FE000000007E000000007
-E03C000007E07E000007E0FF000007E0FF00000FE0FF00000FC0FF00000FC0FE00001FC0
-7F00003F807F80007F003FC000FF001FF807FE000FFFFFFC0007FFFFF80003FFFFE00000
-7FFF8000000FFC000023357CB32C>I<000007F00000000FF80000001FF80000003FF800
-00003FF80000007EF80000007EF8000000FCF8000001F8F8000001F8F8000003F0F80000
-07E0F8000007E0F800000FC0F800001F80F800001F80F800003F00F800007E00F800007E
-00F80000FC00F80001F800F80001F800F80003F000F80003E000F80007E000F8000FC000
-F8000FC000F8001F8000F8003F0000F8003F0000F8007E0000F800FC0000F800FFFFFFFF
-FCFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC000000F800000000F800000000F800
-000000F800000000F800000000F800000000F800000000F800000000F800000000F80000
-007FFFF00000FFFFF80000FFFFF80000FFFFF800007FFFF027347EB32C>I<0FFFFFFE00
-1FFFFFFF001FFFFFFF001FFFFFFF001FFFFFFE001F800000001F800000001F800000001F
-800000001F800000001F800000001F800000001F800000001F800000001F800000001F80
-0000001F800000001F800000001F83FE00001F9FFF80001FFFFFE0001FFFFFF8001FFFFF
-FC001FFE03FE001FF000FF001FC0007F001F80003F801F00001F800F00001FC00000000F
-C00000000FC000000007E000000007E000000007E000000007E03C000007E07E000007E0
-FF000007E0FF00000FE0FF00000FC0FF00000FC0FE00001FC07E00003F807F00007F003F
-8000FF003FC001FE001FF80FFC000FFFFFF80007FFFFF00001FFFFC000007FFF0000000F
-F8000023347CB22C>I<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F0000000000
-0000000000000000000000000000000000000000000000001F003F807FC0FFE0FFE0FFE0
-FFE0FFE07FC03F801F000B2470A32C>58 D<00000002000000000F800000001F80000000
-7F80000000FF80000003FE0000000FFC0000001FF00000007FE0000000FF80000003FE00
-000007FC0000001FF00000003FE0000000FF80000003FF00000007FC0000001FF8000000
-3FE0000000FF80000000FF00000000FF00000000FF800000003FE00000001FF800000007
-FC00000003FF00000000FF800000003FE00000001FF000000007FC00000003FE00000000
-FF800000007FE00000001FF00000000FFC00000003FE00000000FF800000007F80000000
-1F800000000F800000000200212A7BAD2C>60 D<2000000000F800000000FC00000000FF
-00000000FF800000003FE00000001FF800000007FC00000003FF00000000FF800000003F
-E00000001FF000000007FC00000003FE00000000FF800000007FE00000001FF00000000F
-FC00000003FE00000000FF800000007F800000007F80000000FF80000003FE0000000FFC
-0000001FF00000007FE0000000FF80000003FE00000007FC0000001FF00000003FE00000
-00FF80000003FF00000007FC0000001FF80000003FE0000000FF80000000FF00000000FC
-00000000F8000000002000000000212A7BAD2C>62 D<003FFE000003FFFFC0000FFFFFF0
-001FFFFFFC003FFFFFFE007FE007FF007F0000FF00FE00003F80FF00001F80FF00001F80
-FF00001F80FF00003F807E00007F003C0000FF00000003FE0000000FFC0000001FF80000
-003FE00000007FC0000000FF00000001FE00000003FC00000003F800000007F800000007
-F00000000FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0
-0000000FE000000007C00000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000003800000000FE00000000FE00000001FF00000
-001FF00000001FF00000000FE00000000FE00000000380000021337BB22C>I<00007F80
-000003FFE000000FFFF000003FFFF800007FFFFC0000FFC0FE0001FE007F0003F8003F00
-07F0001F8007E00FCF800FC03FFF801F807FFFC01F80FFFFC03F01FFFFC03E03F87FC03E
-07F03FE07E07E01FE07C0FC00FE07C0F8007E07C0F8007E0FC1F8007E0F81F0003E0F81F
-0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F00
-03E0FC1F8007E07C0F8007C07C0F8007C07C0FC00FC07E07E01F803E07F03F803E03F87F
-003F01FFFE001F80FFFC001F807FF8000FC03FF00007E00FC00007F00007C003F8000FE0
-01FE001FE000FFC0FFE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC00023
-337CB22C>I<0000FE00000001FF00000001FF00000001FF00000001FF00000003FF8000
-0003FF80000003EF80000003EF80000007EF80000007EFC0000007EFC0000007C7C00000
-07C7C000000FC7E000000FC7E000000FC7E000000FC3E000001F83F000001F83F000001F
-83F000001F83F000001F83F000003F01F800003F01F800003F01F800003F01F800007E00
-FC00007E00FC00007E00FC00007E00FC00007E00FC0000FC007E0000FFFFFE0000FFFFFE
-0000FFFFFE0001FFFFFF0001FFFFFF0001F8003F0001F8003F0001F8003F0003F0001F80
-03F0001F8003F0001F8003F0001F8007F0001FC007E0000FC07FFE00FFFC7FFF01FFFCFF
-FF01FFFE7FFF01FFFC7FFE00FFFC27347EB32C>I<7FFFFFE0007FFFFFF800FFFFFFFE00
-7FFFFFFF007FFFFFFFC003F0003FC003F0000FE003F00007F003F00003F003F00003F003
-F00001F803F00001F803F00001F803F00001F803F00001F803F00001F803F00003F003F0
-0003F003F00007F003F0000FE003F0001FC003F000FF8003FFFFFF0003FFFFFE0003FFFF
-FC0003FFFFFF0003FFFFFFC003F0001FE003F00007F003F00003F803F00001F803F00000
-FC03F00000FC03F00000FE03F000007E03F000007E03F000007E03F000007E03F000007E
-03F000007E03F00000FE03F00000FC03F00001FC03F00003F803F0000FF803F0003FF07F
-FFFFFFE07FFFFFFFC0FFFFFFFF807FFFFFFE007FFFFFF00027337FB22C>I<0000FF0070
-0007FFE0F8000FFFF9F8003FFFFDF8007FFFFFF800FF81FFF801FE007FF803FC001FF807
-F0000FF807F00007F80FE00007F80FC00003F81F800003F81F800001F83F000001F83F00
-0001F87F000001F87E000000F07E000000007E00000000FE00000000FC00000000FC0000
-0000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000000
-00FC00000000FC00000000FE000000007E000000007E000000007E000000007F000000F0
-3F000001F83F000001F81F800001F81F800001F80FC00003F80FE00003F007F00007F007
-F00007E003FC001FE001FE003FC000FF81FF80007FFFFF00003FFFFE00000FFFFC000007
-FFF0000000FF800025357DB32C>I<7FFFFF0000FFFFFFC000FFFFFFF000FFFFFFF8007F
-FFFFFC0007E003FE0007E000FF0007E0007F8007E0003F8007E0001FC007E0000FE007E0
-000FE007E00007E007E00007F007E00003F007E00003F807E00001F807E00001F807E000
-01F807E00001F807E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000
-FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00001F8
-07E00001F807E00001F807E00003F807E00003F007E00003F007E00007F007E00007E007
-E0000FE007E0001FC007E0003FC007E0007F8007E000FF0007E003FE007FFFFFFC00FFFF
-FFF800FFFFFFF000FFFFFFC0007FFFFF000026337EB22C>I<7FFFFFFFF0FFFFFFFFF8FF
-FFFFFFF8FFFFFFFFF87FFFFFFFF803F00001F803F00001F803F00001F803F00001F803F0
-0001F803F00001F803F00001F803F00000F003F000000003F000000003F000000003F000
-000003F001E00003F003F00003F003F00003F003F00003F003F00003FFFFF00003FFFFF0
-0003FFFFF00003FFFFF00003FFFFF00003F003F00003F003F00003F003F00003F003F000
-03F001E00003F000000003F000000003F000000003F000000003F000000003F000003C03
-F000007E03F000007E03F000007E03F000007E03F000007E03F000007E03F000007E03F0
-00007E7FFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC27337EB22C>I<7F
-FFFFFFF8FFFFFFFFFCFFFFFFFFFCFFFFFFFFFC7FFFFFFFFC03F00000FC03F00000FC03F0
-0000FC03F00000FC03F00000FC03F00000FC03F00000FC03F000007803F000000003F000
-000003F000000003F000000003F000000003F000F00003F001F80003F001F80003F001F8
-0003F001F80003FFFFF80003FFFFF80003FFFFF80003FFFFF80003FFFFF80003F001F800
-03F001F80003F001F80003F001F80003F000F00003F000000003F000000003F000000003
-F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0
-00000003F000000003F00000007FFFE00000FFFFE00000FFFFF00000FFFFE000007FFFE0
-000026337EB22C>I<0001FC0380000FFF87C0001FFFEFC0007FFFFFC000FFFFFFC001FF
-07FFC003FC01FFC003F800FFC007F0007FC00FE0003FC00FC0001FC01FC0001FC01F8000
-1FC03F80000FC03F00000FC03F00000FC07E00000FC07E000007807E000000007E000000
-00FE00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000
-FC00000000FC00000000FC0003FFF8FC0007FFFCFC0007FFFCFE0007FFFC7E0003FFF87E
-00000FC07E00000FC07E00000FC03F00001FC03F00001FC03F80001FC01F80001FC01FC0
-003FC00FC0003FC00FE0007FC007F0007FC003F800FFC003FC01FFC001FF07FFC000FFFF
-FFC0007FFFEFC0001FFFCFC0000FFF07800001FC000026357DB32C>I<7FFFE00000FFFF
-F00000FFFFF00000FFFFF000007FFFE0000003F000000003F000000003F000000003F000
-000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
-0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
-03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
-F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0
-0000F003F00001F803F00001F803F00001F803F00001F803F00001F803F00001F803F000
-01F803F00001F87FFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFFFFF025337DB2
-2C>76 D<7FE0000FFCFFF0001FFEFFF0001FFEFFF8003FFE7FF8003FFC0FF8003FE00FBC
-007BE00FBC007BE00FBC007BE00FBC007BE00F9E00F3E00F9E00F3E00F9E00F3E00F9F01
-F3E00F9F01F3E00F8F01E3E00F8F01E3E00F8F83E3E00F8F83E3E00F8783C3E00F87C7C3
-E00F87C7C3E00F83C783E00F83C783E00F83EF83E00F83EF83E00F81EF03E00F81EF03E0
-0F81FF03E00F80FE03E00F80FE03E00F80FE03E00F807C03E00F803803E00F800003E00F
-800003E00F800003E00F800003E00F800003E00F800003E00F800003E00F800003E00F80
-0003E00F800003E00F800003E00F800003E07FF0001FFCFFF8003FFEFFF8003FFEFFF800
-3FFE7FF0001FFC27337EB22C>I<7FFFFFC000FFFFFFF800FFFFFFFC00FFFFFFFF007FFF
-FFFF8003F000FFC003F0003FC003F0000FE003F00007F003F00007F003F00003F003F000
-03F803F00001F803F00001F803F00001F803F00001F803F00001F803F00001F803F00003
-F803F00003F003F00007F003F00007F003F0000FE003F0003FC003F000FFC003FFFFFF80
-03FFFFFF0003FFFFFC0003FFFFF80003FFFFC00003F000000003F000000003F000000003
-F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0
-00000003F000000003F000000003F000000003F000000003F00000007FFF800000FFFFC0
-0000FFFFC00000FFFFC000007FFF80000025337EB22C>80 D<7FFFFC000000FFFFFF8000
-00FFFFFFE00000FFFFFFF800007FFFFFFC000007E007FE000007E001FE000007E0007F00
-0007E0003F800007E0001F800007E0001F800007E0000FC00007E0000FC00007E0000FC0
-0007E0000FC00007E0000FC00007E0000FC00007E0001F800007E0001F800007E0003F80
-0007E0007F000007E001FE000007E007FE000007FFFFFC000007FFFFF8000007FFFFE000
-0007FFFFF0000007FFFFF8000007E007FC000007E001FE000007E000FE000007E0007F00
-0007E0003F000007E0003F000007E0003F000007E0003F000007E0003F000007E0003F00
-0007E0003F000007E0003F000007E0003F0F0007E0003F1F8007E0003F1F8007E0003F1F
-8007E0003F1F8007E0003F1F807FFE001FBF80FFFF001FFF00FFFF000FFF00FFFF000FFE
-007FFE0007FC0000000001F00029347EB22C>82 D<001FF8070000FFFF0F8001FFFFCF80
-07FFFFFF800FFFFFFF801FF01FFF803FC003FF803F8001FF807F0000FF807E00007F80FE
-00003F80FC00003F80FC00001F80FC00001F80FC00001F80FC00001F80FE00000F007E00
-0000007F000000007F800000003FE00000001FFC0000001FFFC000000FFFFC000003FFFF
-C00001FFFFF000007FFFF8000007FFFC0000007FFE00000007FF00000000FF800000003F
-800000001FC00000001FC00000000FE00000000FE078000007E0FC000007E0FC000007E0
-FC000007E0FC000007E0FC000007E0FE00000FC0FE00000FC0FF00001F80FF80003F80FF
-E0007F00FFFE01FF00FFFFFFFE00FFFFFFFC00F9FFFFF000F83FFFC0007007FF00002335
-7CB32C>I<7FFFFFFFFCFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFC007E007EFC
-007E007EFC007E007EFC007E007EFC007E007EFC007E007EFC007E007E78007E003C0000
-7E000000007E000000007E000000007E000000007E000000007E000000007E000000007E
-000000007E000000007E000000007E000000007E000000007E000000007E000000007E00
-0000007E000000007E000000007E000000007E000000007E000000007E000000007E0000
-00007E000000007E000000007E000000007E000000007E000000007E000000007E000000
-007E000000007E000000007E000000007E0000003FFFFC00003FFFFC00007FFFFE00003F
-FFFC00003FFFFC0027337EB22C>I<7FF00007FF00FFF8000FFF80FFF8000FFF80FFF800
-0FFF807FF00007FF001F0000007C001F0000007C001F0000007C001F0000007C000F8000
-00F8000F800000F8000F800000F8000F800000F8000F800000F8000F800000F8000F8000
-00F80007C00001F00007C00001F00007C00001F00007C00001F00007C03E01F00007C07F
-01F00007C07F01F00007C07F01F00003E0FF83E00003E0FF83E00003E0F783E00003E0F7
-83E00003E1F7C3E00003E1F7C3E00003E1F7C3E00001E1E3C3C00001E1E3C3C00001F1E3
-C7C00001F3E3E7C00001F3E3E7C00001F3E3E7C00001F3C1E7C00001F3C1E7C00000F3C1
-E7800000F3C1E7800000F7C1F7800000F780F7800000F780F7800000F780F7800000FF80
-FF8000007F80FF0000007F007F0000007F007F0000007F007F0000007F007F0000003E00
-3E000029347FB22C>87 D<7FFFFCFFFFFEFFFFFEFFFFFEFFFFFCFC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FFFFFCFFFFFEFFFFFEFFFFFE7FFFFC17416FB92C>91
-D<7000000000F800000000F800000000FC000000007C000000007E000000003E00000000
-3F000000001F000000001F000000001F800000000F800000000FC000000007C000000007
-E000000003E000000003F000000001F000000001F800000000F800000000FC000000007C
-000000007E000000003E000000003E000000003F000000001F000000001F800000000F80
-0000000FC000000007C000000007E000000003E000000003F000000001F000000001F800
-000000F800000000FC000000007C000000007E000000003E000000003E000000003F0000
-00001F000000001F800000000F800000000FC000000007C000000007E000000003E00000
-0003F000000001F000000001F800000000F800000000FC000000007C000000007C000000
-007E000000003E000000003F000000001F000000001F800000000F800000000F80000000
-070021417BB92C>I<7FFFFCFFFFFEFFFFFEFFFFFE7FFFFE00007E00007E00007E00007E
-00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E
-00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E
-00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E
-00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E
-00007E00007E00007E7FFFFEFFFFFEFFFFFEFFFFFE7FFFFC17417DB92C>I<7FFFFFFF00
-FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF807FFFFFFF0021067B7D2C>95
-D<0038007C01FC03FC07F807F00FC01F801F803F003E007E007C007C00FC00F800F800F8
-00FFC0FFE0FFF0FFF8FFF87FF87FF83FF83FF01FE007C00E1D72B82C>I<01FFF0000007
-FFFE00001FFFFF80001FFFFFE0003FFFFFF0003FC01FF8003FC007F8003FC001FC001F80
-00FC00060000FE000000007E000000007E000000007E000000FFFE00001FFFFE0000FFFF
-FE0003FFFFFE000FFFFFFE001FFF807E003FF8007E007FC0007E007F00007E00FE00007E
-00FC00007E00FC00007E00FC00007E00FC00007E00FE00007E007F0000FE007F8003FE00
-3FE01FFE001FFFFFFFFC0FFFFFFFFE07FFFFBFFE01FFFE1FFE003FF007FC27247CA32C>
-I<7FF0000000FFF8000000FFF8000000FFF80000007FF800000001F800000001F8000000
-01F800000001F800000001F800000001F800000001F800000001F800000001F800000001
-F800000001F81FE00001F8FFF80001FBFFFE0001FFFFFF0001FFFFFF8001FFF07FC001FF
-801FE001FF0007F001FE0003F801FC0003F801FC0001FC01F80000FC01F80000FC01F800
-00FE01F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01F80000
-7E01F800007E01F80000FE01FC0000FC01FC0000FC01FC0001F801FE0003F801FF0007F0
-01FF000FF001FF801FE001FFE07FC001FFFFFF8001FFFFFF0001FBFFFE0001F8FFF80000
-F03FC00027337FB22C>I<0003FFE000001FFFF800007FFFFE0001FFFFFE0003FFFFFF00
-07FE00FF000FF000FF001FE000FF001FC0007E003F800018003F000000007F000000007E
-000000007E00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00
-000000FC00000000FC000000007E000000007E000000007F000000003F00000F003F8000
-1F801FC0001F801FE0003F800FF0007F0007FE03FF0003FFFFFE0001FFFFFC00007FFFF8
-00001FFFE0000003FF000021247AA32C>I<00000FFE0000001FFF0000001FFF0000001F
-FF0000000FFF000000003F000000003F000000003F000000003F000000003F000000003F
-000000003F000000003F000000003F000000003F000007F83F00003FFE3F0000FFFFBF00
-01FFFFFF0003FFFFFF0007FC0FFF000FF003FF001FE001FF001FC000FF003F80007F003F
-00007F007E00003F007E00003F00FE00003F00FC00003F00FC00003F00FC00003F00FC00
-003F00FC00003F00FC00003F00FC00003F00FC00003F00FE00003F007E00007F007E0000
-7F007F0000FF003F8000FF003F8001FF001FC003FF000FF007FF0007FC1FFF0003FFFFFF
-FC01FFFFBFFE00FFFF3FFE003FFC3FFE000FF01FFC27337DB22C>I<0003FE0000001FFF
-C000007FFFF00001FFFFF80003FFFFFC0007FE03FE000FF800FF001FE0003F801FC0003F
-803F80001FC03F00000FC07F00000FC07E00000FE07E000007E0FC000007E0FFFFFFFFE0
-FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFC0FC00000000FE000000007E000000007E
-000000007F000000003F000003C03F800007E01FC00007E00FF0000FE007F8003FC007FF
-00FFC001FFFFFF8000FFFFFF00003FFFFC00000FFFF0000001FF800023247CA32C>I<00
-000FF80000003FFE000000FFFF000001FFFF800003FFFF800007FC7F800007F07F80000F
-E03F00000FC03F00000FC00000000FC00000000FC00000000FC00000000FC00000000FC0
-00007FFFFFFE00FFFFFFFF00FFFFFFFF00FFFFFFFF007FFFFFFE00000FC00000000FC000
-00000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000
-000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000000
-0FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000F
-C00000000FC00000000FC000003FFFFFF0007FFFFFF8007FFFFFF8007FFFFFF8003FFFFF
-F00021337DB22C>I<00000003F80007F80FFC001FFE3FFE007FFFFFFF01FFFFFFFF03FF
-FFFE7F03FC0FF87F07F003F83E0FE001FC1C0FC000FC001FC000FE001F80007E001F8000
-7E001F80007E001F80007E001F80007E001F80007E001FC000FE000FC000FC000FE001FC
-0007F003F80003FC0FF00007FFFFF00007FFFFE0000FFFFF80000F9FFE00000F87F80000
-0F800000000F800000000F800000000FC000000007E000000007FFFFF00003FFFFFE0007
-FFFFFF800FFFFFFFE01FFFFFFFF03FC0001FF87F000003FC7E000000FC7C0000007CFC00
-00007EF80000003EF80000003EF80000003EF80000003EFC0000007E7E000000FC7F8000
-03FC3FE0000FF81FFC007FF00FFFFFFFE003FFFFFF8001FFFFFF00003FFFF8000007FFC0
-0028387EA42C>I<7FF000000000FFF800000000FFF800000000FFF8000000007FF80000
-000001F80000000001F80000000001F80000000001F80000000001F80000000001F80000
-000001F80000000001F80000000001F80000000001F80000000001F81FE0000001F87FFC
-000001F9FFFE000001FBFFFF000001FFFFFF000001FFF03F800001FFC01F800001FF801F
-C00001FF000FC00001FE000FC00001FC000FC00001FC000FC00001F8000FC00001F8000F
-C00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000F
-C00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000F
-C00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0007FFFE0FF
-FF00FFFFF1FFFF80FFFFF1FFFF80FFFFF1FFFF807FFFE0FFFF0029337FB22C>I<000700
-00001FC000001FC000003FE000003FE000003FE000001FC000001FC00000070000000000
-000000000000000000000000000000000000000000000000007FFFC0007FFFE000FFFFE0
-007FFFE0007FFFE0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
-000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
-000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
-000007E0007FFFFFFCFFFFFFFEFFFFFFFEFFFFFFFE7FFFFFFC1F3479B32C>I<00000E00
-00003F8000003F8000007FC000007FC000007FC000003F8000003F8000000E0000000000
-00000000000000000000000000000000000000000000000001FFFF8003FFFFC003FFFFC0
-03FFFFC001FFFFC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0
-00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0
-00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0
-00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0
-00000FC000000FC000000FC000000FC000001FC03C001F807E003F80FF003F00FF007F00
-FF01FE00FFFFFC007FFFF8007FFFF0001FFFE00007FF00001A467CB32C>I<7FE0000000
-FFF0000000FFF0000000FFF00000007FF000000001F000000001F000000001F000000001
-F000000001F000000001F000000001F000000001F000000001F000000001F000000001F0
-1FFFF001F03FFFF801F03FFFF801F03FFFF801F01FFFF001F000FE0001F001FC0001F003
-F80001F007F00001F00FE00001F01FC00001F03F800001F07F000001F0FE000001F1FC00
-0001F3FC000001F7FE000001FFFF000001FFFF000001FF9F800001FF0FC00001FE0FE000
-01FC07E00001F803F00001F001F80001F001FC0001F000FC0001F0007E0001F0003F0001
-F0003F8001F0001F807FFFC0FFFCFFFFE1FFFEFFFFE1FFFEFFFFE1FFFE7FFFC0FFFC2733
-7EB22C>I<7FFFE00000FFFFF00000FFFFF00000FFFFF000007FFFF000000003F0000000
-03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
-F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0
-00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
-000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
-0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
-03F000000003F000000003F000000003F000007FFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFF
-FFFFC07FFFFFFF8022337BB22C>I<7F83F007E0007FCFFC1FF800FFDFFE3FFC007FFFFE
-FFFC007FFFFFFFFE0007FE1FFC3E0007FC1FF83F0007F80FF01F0007F00FE01F0007E00F
-C01F0007E00FC01F0007E00FC01F0007C00F801F0007C00F801F0007C00F801F0007C00F
-801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F
-801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F
-801F0007C00F801F0007C00F801F0007C00F801F007FFC3FF87FF07FFC7FF8FFF0FFFE7F
-FCFFF87FFC7FF8FFF07FFC3FF87FF02D2481A32C>I<7FF01FE00000FFF87FFC0000FFF9
-FFFE0000FFFBFFFF00007FFFFFFF000001FFF03F800001FFC01F800001FF801FC00001FF
-000FC00001FE000FC00001FC000FC00001FC000FC00001F8000FC00001F8000FC00001F8
-000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8
-000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8
-000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0007FFFE0FFFF00FFFF
-F1FFFF80FFFFF1FFFF80FFFFF1FFFF807FFFE0FFFF0029247FA32C>I<0007FC0000001F
-FF0000007FFFC00001FFFFF00003FFFFF80007FC07FC000FF001FE001FE000FF001F8000
-3F003F80003F803F00001F807E00000FC07E00000FC07E00000FC0FC000007E0FC000007
-E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FE00000FE07E00000FC0
-7E00000FC07F00001FC03F00001F803F80003F801FC0007F001FE000FF000FF001FE0007
-FC07FC0003FFFFF80001FFFFF000007FFFC000001FFF00000007FC000023247CA32C>I<
-7FF01FE000FFF8FFF800FFFBFFFE00FFFFFFFF007FFFFFFF8001FFF07FC001FF801FE001
-FF0007F001FE0003F801FC0003F801FC0001FC01F80000FC01F80000FC01F80000FE01F8
-00007E01F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01F800
-007E01F80000FE01FC0000FC01FC0000FC01FC0001F801FE0003F801FF0007F001FF000F
-F001FF801FE001FFE07FC001FFFFFF8001FFFFFF0001FBFFFE0001F8FFF80001F83FC000
-01F800000001F800000001F800000001F800000001F800000001F800000001F800000001
-F800000001F800000001F800000001F800000001F800000001F80000007FFFE00000FFFF
-F00000FFFFF00000FFFFF000007FFFE0000027367FA32C>I<0003FC078000001FFF0FC0
-00007FFFCFC00001FFFFEFC00003FFFFFFC00007FE07FFC0000FF001FFC0001FE000FFC0
-001FC0007FC0003F80003FC0003F00003FC0007F00001FC0007E00001FC0007E00000FC0
-00FC00000FC000FC00000FC000FC00000FC000FC00000FC000FC00000FC000FC00000FC0
-00FC00000FC000FC00000FC000FE00000FC0007E00001FC0007E00001FC0003F00003FC0
-003F80003FC0001FC0007FC0001FE000FFC0000FF003FFC00007FC0FFFC00003FFFFFFC0
-0001FFFFEFC000007FFF8FC000003FFF0FC0000007F80FC0000000000FC0000000000FC0
-000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0
-000000000FC0000000000FC0000000000FC0000000000FC0000000000FC000000003FFFF
-00000007FFFF80000007FFFF80000007FFFF80000003FFFF0029367DA32C>I<7FFE003F
-C0FFFF01FFF0FFFF07FFF8FFFF1FFFFC7FFF3FFFFC003F7FE1FC003FFF01FC003FFC00F8
-003FF80070003FF00000003FE00000003FE00000003FC00000003F800000003F80000000
-3F800000003F000000003F000000003F000000003F000000003F000000003F000000003F
-000000003F000000003F000000003F000000003F000000003F000000003F000000003F00
-0000003F0000007FFFFFE000FFFFFFF000FFFFFFF000FFFFFFF0007FFFFFE00026247EA3
-2C>I<007FF87003FFFFF80FFFFFF81FFFFFF83FFFFFF87FC00FF87E0003F8FC0001F8F8
-0001F8F80001F8F80001F8FC0000F07F0000007FF000003FFFC0001FFFFE000FFFFF8003
-FFFFE0007FFFF80001FFFC000007FC000000FE7800007FFC00003FFC00001FFE00001FFE
-00001FFF00003FFF80003EFFC000FEFFF007FCFFFFFFFCFFFFFFF8FFFFFFE0F8FFFF8070
-1FFC0020247AA32C>I<001E000000003F000000003F000000003F000000003F00000000
-3F000000003F000000003F000000003F000000003F0000007FFFFFFF00FFFFFFFF80FFFF
-FFFF80FFFFFFFF807FFFFFFF00003F000000003F000000003F000000003F000000003F00
-0000003F000000003F000000003F000000003F000000003F000000003F000000003F0000
-00003F000000003F000000003F000000003F000000003F000000003F0003C0003F0007E0
-003F0007E0003F0007E0003F0007E0003F0007E0003F800FE0001F801FC0001FE07FC000
-0FFFFF80000FFFFF000003FFFE000001FFF80000003FE000232E7EAD2C>I<7FF003FF80
-00FFF807FFC000FFF807FFC000FFF807FFC0007FF803FFC00001F8000FC00001F8000FC0
-0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
-0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
-0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
-0001F8000FC00001F8001FC00001F8001FC00001F8003FC00001FC007FC00000FE03FFC0
-0000FFFFFFFF00007FFFFFFF80003FFFFFFF80001FFFCFFF800003FE07FF0029247FA32C
->I<7FFF01FFFCFFFF01FFFEFFFF83FFFEFFFF01FFFE7FFF01FFFC03E0000F8003E0000F
-8003F0001F8001F0001F0001F0001F0001F8003F0000F8003E0000F8003E0000FC007E00
-007C007C00007C007C00007E00FC00003E00F800003E00F800003F01F800001F01F00000
-1F01F000001F83F000000F83E000000F83E000000FC7E0000007C7C0000007C7C0000007
-EFC0000003EF80000003EF80000003FF80000001FF00000001FF00000000FE000000007C
-000027247EA32C>I<7FFF007FFF007FFF80FFFF00FFFF80FFFF807FFF80FFFF007FFF00
-7FFF0007C00001F00007C00001F00007C00001F00007C00001F00007C00001F00007C000
-01F00003E00003E00003E00003E00003E00003E00003E03E03E00003E07F03E00003E07F
-03E00001F07F07C00001F0FF87C00001F0FF87C00001F0F787C00001F0F787C00001F1F7
-C7C00000F1F7C7800000F9E3CF800000F9E3CF800000FBE3EF800000FBE3EF800000FBE3
-EF8000007BC1EF0000007FC1FF0000007FC1FF0000007F80FF0000007F80FF0000003F80
-FE0000001F007C000029247FA32C>I<3FFF03FFF07FFF87FFF87FFF87FFF87FFF87FFF8
-3FFF03FFF000FC007E0000FC00FC00007E01F800003F01F000001F83F000001F87E00000
-0FCFC0000007EF80000003FF80000001FF00000001FE00000000FC000000007C00000000
-FE00000001FE00000001FF00000003EF80000007CFC000000FC7C000000F83E000001F01
-F000003F01F800007E00F800007C007C0000F8007E0001F8003F007FFF01FFFC7FFF83FF
-FCFFFF83FFFE7FFF83FFFC7FFF01FFFC27247EA32C>I<7FFF01FFFCFFFF81FFFEFFFF83
-FFFEFFFF81FFFE7FFF01FFFC03E0000F8001F0000F8001F0001F8001F8001F0000F8001F
-0000F8003F0000FC003E00007C003E00007E007E00003E007C00003E007C00003F00FC00
-001F00F800001F00F800000F81F800000F81F000000F81F0000007C1F0000007C3E00000
-07C3E0000003E3E0000003E7C0000001E7C0000001F7C0000001F780000000FF80000000
-FF80000000FF000000007F000000007F000000003E000000003E000000007E000000007C
-000000007C00000000FC00000000F800000000F800000C01F800003F01F000007F83F000
-007F87E000007E0FE000007E1FC000007FFF8000003FFF0000001FFE0000000FFC000000
-07E000000027367EA32C>I<3FFFFFFFE07FFFFFFFF07FFFFFFFF07FFFFFFFF07FFFFFFF
-F07E00001FE07E00003FC07E00007F807E0000FF007E0001FE003C0003FC00000007F800
-00000FF00000001FE00000003FC00000007F80000000FF00000001FC00000003F8000000
-0FF00000001FE00000003FC00000007F80000000FF00000001FE0001E003FC0003F007F8
-0003F00FF00003F01FE00003F03FC00003F07F800003F0FFFFFFFFF0FFFFFFFFF0FFFFFF
-FFF0FFFFFFFFF07FFFFFFFE024247DA32C>I<000000FF00000007FF8000001FFF800000
-7FFF800000FFFF000001FFC0000001FE00000003F800000003F000000003F000000003F0
-00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
-000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
-0003F000000003F000000007F00000001FE0000000FFE000007FFFC00000FFFF800000FF
-FE000000FFFF8000007FFFC0000000FFE00000001FE000000007F000000003F000000003
-F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0
-00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
-000003F000000003F000000003F000000003F800000001FE00000001FFC0000000FFFF00
-00007FFF8000001FFF80000007FF80000000FF0021417BB92C>I<78FCFCFCFCFCFCFCFC
-FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
-FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC7806416DB92C>I<7FC0000000FFF80000
-00FFFE000000FFFF8000007FFFC0000000FFE00000001FE000000007F000000003F00000
-0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
-03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
-F000000003F000000003F000000003F000000003F800000001FE00000001FFC0000000FF
-FF0000007FFF8000001FFF8000007FFF800000FFFF000001FFC0000001FE00000003F800
-000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
-0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
-03F000000003F000000003F000000003F000000003F000000007F00000001FE0000000FF
-E000007FFFC00000FFFF800000FFFE000000FFF80000007FC000000021417BB92C>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh labx1440 14.4 68
-/Fh 68 256 df<0000001E0000003E000000FC000001F8000003F0000007E000000FE000
-001FC000003F8000007F000000FF000000FE000001FC000003FC000007F8000007F80000
-0FF000001FF000001FE000003FE000003FC000007FC000007F800000FF800000FF800001
-FF000001FF000003FF000003FE000007FE000007FE000007FC00000FFC00000FFC00000F
-FC00001FF800001FF800001FF800001FF800003FF800003FF800003FF000003FF000007F
-F000007FF000007FF000007FF000007FF000007FF000007FE00000FFE00000FFE00000FF
-E00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FF
-E00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FF
-E000007FE000007FF000007FF000007FF000007FF000007FF000007FF000003FF000003F
-F000003FF800003FF800001FF800001FF800001FF800001FF800000FFC00000FFC00000F
-FC000007FC000007FE000007FE000003FE000003FF000001FF000001FF000000FF800000
-FF8000007F8000007FC000003FC000003FE000001FE000001FF000000FF0000007F80000
-07F8000003FC000001FC000000FE000000FF0000007F0000003F8000001FC000000FE000
-0007E0000003F0000001F8000000FC0000003E0000001E1F7974D933>40
-D<F0000000F80000007E0000003F0000001F8000000FC000000FE0000007F0000003F800
-0001FC000001FE000000FE0000007F0000007F8000003FC000003FC000001FE000001FF0
-00000FF000000FF8000007F8000007FC000003FC000003FE000003FE000001FF000001FF
-000001FF800000FF800000FFC00000FFC000007FC000007FE000007FE000007FE000003F
-F000003FF000003FF000003FF000003FF800003FF800001FF800001FF800001FFC00001F
-FC00001FFC00001FFC00001FFC00001FFC00000FFC00000FFE00000FFE00000FFE00000F
-FE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000F
-FE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000FFE00000F
-FC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF800001FF800003F
-F800003FF800003FF000003FF000003FF000003FF000007FE000007FE000007FE000007F
-C00000FFC00000FFC00000FF800001FF800001FF000001FF000003FE000003FE000003FC
-000007FC000007F800000FF800000FF000001FF000001FE000003FC000003FC000007F80
-00007F000000FE000001FE000001FC000003F8000007F000000FE000000FC000001F8000
-003F0000007E000000F8000000F00000001F7979D933>I<07E0001FF0003FFC007FFC00
-7FFE00FFFF00FFFF00FFFF00FFFF80FFFF80FFFF807FFF807FFF803FFF801FFF8007E780
-000780000780000780000F80000F00000F00000F00001F00001E00003E00003E00007C00
-007C0000F80000F80001F00003E00007E0000FC0001F80001F00001E00000C0000112776
-8F25>44 D<000003FF80000000003FFFF800000001FFFFFF00000007FFFFFFC000000FFF
-01FFE000003FFC007FF800007FF0001FFC0000FFE0000FFE0001FFC00007FF0001FF8000
-03FF0003FF800003FF8007FF000001FFC007FF000001FFC00FFE000000FFE00FFE000000
-FFE01FFE000000FFF01FFE000000FFF01FFE000000FFF03FFE000000FFF83FFE000000FF
-F83FFC0000007FF83FFC0000007FF87FFC0000007FFC7FFC0000007FFC7FFC0000007FFC
-7FFC0000007FFC7FFC0000007FFC7FFC0000007FFCFFFC0000007FFEFFFC0000007FFEFF
-FC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC
-0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC00
-00007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000
-007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC000000
-7FFE7FFC0000007FFC7FFC0000007FFC7FFC0000007FFC7FFC0000007FFC7FFC0000007F
-FC7FFC0000007FFC3FFC0000007FF83FFE000000FFF83FFE000000FFF83FFE000000FFF8
-1FFE000000FFF01FFE000000FFF01FFE000000FFF00FFE000000FFE00FFF000001FFE007
-FF000001FFC007FF000001FFC003FF800003FF8001FF800003FF0001FFC00007FF0000FF
-E0000FFE00007FF0001FFC00003FFC007FF800000FFF01FFE0000007FFFFFFC0000001FF
-FFFF000000003FFFF80000000003FF800000374F7BCD42>48 D<0000001E00000000003E
-0000000000FE0000000003FE000000000FFE000000007FFE00000007FFFE000003FFFFFE
-0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFF87FFE0000FC007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE
-000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE00007FFFFFFF
-FFFC7FFFFFFFFFFC7FFFFFFFFFFC7FFFFFFFFFFC7FFFFFFFFFFC2E4E76CD42>I<00001F
-FE0000000001FFFFF00000000FFFFFFC0000003FFFFFFF8000007FFFFFFFE00001FF803F
-FFF00003FC0007FFFC0007F00001FFFE000FE00000FFFF001F8000007FFF803F0000003F
-FF803F0000001FFFC07FE000001FFFE07FF800000FFFE07FFC00000FFFF0FFFC000007FF
-F0FFFE000007FFF0FFFE000003FFF8FFFE000003FFF8FFFE000003FFF8FFFE000003FFF8
-FFFE000003FFF87FFC000003FFF87FFC000003FFF83FF8000003FFF81FF0000003FFF803
-80000003FFF80000000003FFF00000000007FFF00000000007FFF00000000007FFE00000
-00000FFFE0000000000FFFC0000000001FFFC0000000001FFF80000000003FFF00000000
-003FFE00000000007FFC0000000000FFF80000000000FFF00000000001FFE00000000003
-FFC00000000007FF800000000007FF00000000000FFC00000000001FF800000000003FF0
-00000000007FC00000000000FF800000000001FF000000000003FC000000000007F80000
-0000000FF00000F800001FE00000F800003FC00000F800007F000000F80000FE000001F0
-0001FC000001F00003F8000001F00007F0000001F00007E0000001F0000F80000003F000
-1F00000003F0003E00000007F0007FFFFFFFFFF000FFFFFFFFFFE001FFFFFFFFFFE003FF
-FFFFFFFFE007FFFFFFFFFFE00FFFFFFFFFFFE01FFFFFFFFFFFE03FFFFFFFFFFFE07FFFFF
-FFFFFFE0FFFFFFFFFFFFE0FFFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFF
-FFFFC0354E7ACD42>I<000007FFC0000000007FFFFC00000003FFFFFF8000000FFFFFFF
-E000001FF803FFF800007FC000FFFC0000FE00003FFE0001FC00003FFF0003F800001FFF
-8003FE00001FFF8007FF80000FFFC007FFC0000FFFC00FFFC0000FFFE00FFFE0000FFFE0
-0FFFE0000FFFE00FFFE0000FFFE00FFFE0000FFFE00FFFE0000FFFE00FFFE0000FFFE007
-FFC0000FFFE007FFC0000FFFC003FF80000FFFC001FF00001FFFC0003800001FFF800000
-00001FFF80000000003FFF00000000003FFF00000000007FFE00000000007FFC00000000
-00FFF80000000001FFF00000000003FFC0000000000FFF80000000007FFE000000007FFF
-F8000000007FFFC0000000007FFFFC000000007FFFFF800000000003FFE000000000007F
-F800000000003FFE00000000001FFF00000000000FFF80000000000FFFC00000000007FF
-E00000000007FFF00000000003FFF80000000003FFF80000000003FFFC0000000001FFFC
-0000000001FFFC0000000001FFFE0000000001FFFE0000000001FFFE03C0000001FFFE0F
-F0000001FFFE3FFC000001FFFE7FFE000001FFFE7FFE000001FFFEFFFF000001FFFEFFFF
-000001FFFEFFFF000001FFFCFFFF000001FFFCFFFF000003FFFCFFFF000003FFF8FFFF00
-0003FFF87FFE000003FFF07FFC000007FFF07FF8000007FFE03FE000000FFFC01FC00000
-1FFFC00FF000003FFF8007FE00007FFE0003FFE003FFFC0001FFFFFFFFF800007FFFFFFF
-E000000FFFFFFF00000001FFFFFC000000001FFF800000374F7BCD42>I<0000000000FC
-00000000000001FC00000000000001FC00000000000003FC00000000000007FC00000000
-00000FFC0000000000000FFC0000000000001FFC0000000000003FFC0000000000007FFC
-0000000000007FFC000000000000FFFC000000000001FFFC000000000003FFFC00000000
-0003FFFC000000000007FFFC00000000000FFFFC00000000001FFFFC00000000001F7FFC
-00000000003E7FFC00000000007E7FFC0000000000FC7FFC0000000000F87FFC00000000
-01F07FFC0000000003F07FFC0000000007E07FFC0000000007C07FFC000000000F807FFC
-000000001F807FFC000000003F007FFC000000003E007FFC000000007C007FFC00000000
-FC007FFC00000001F8007FFC00000001F0007FFC00000003E0007FFC00000007E0007FFC
-0000000FC0007FFC0000000F80007FFC0000001F00007FFC0000003F00007FFC0000007E
-00007FFC0000007C00007FFC000000F800007FFC000001F800007FFC000003F000007FFC
-000003E000007FFC000007C000007FFC00000FC000007FFC00001F8000007FFC00001F00
-00007FFC00003E0000007FFC00007E0000007FFC0000FC0000007FFC0000FFFFFFFFFFFF
-FF80FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FFFFFFFFFFFFFF800000
-0000FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC
-000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC00000000
-0000FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC
-000000000000FFFC000000001FFFFFFFFF8000001FFFFFFFFF8000001FFFFFFFFF800000
-1FFFFFFFFF8000001FFFFFFFFF80394F7CCE42>I<0180000000060001F00000003E0001
-FE000001FE0001FFF0003FFE0001FFFFFFFFFC0001FFFFFFFFF80001FFFFFFFFF00001FF
-FFFFFFE00001FFFFFFFFC00001FFFFFFFF800001FFFFFFFF000001FFFFFFFC000001FFFF
-FFF8000001FFFFFFE0000001FFFFFF00000001FFFFFC00000001F0FF8000000001F00000
-00000001F0000000000001F0000000000001F0000000000001F0000000000001F0000000
-000001F0000000000001F0000000000001F0000000000001F0000000000001F000000000
-0001F0000000000001F007FF80000001F03FFFF8000001F0FFFFFE000001F3FFFFFF8000
-01FFFC01FFE00001FFE0007FF80001FF00003FFC0001FE00001FFE0001F800000FFF0001
-F000000FFF0001F0000007FF8001E0000007FFC00000000007FFC00000000007FFE00000
-000003FFE00000000003FFF00000000003FFF00000000003FFF00000000003FFF0000000
-0003FFF80000000003FFF80000000003FFF80300000003FFF80FE0000003FFF83FF80000
-03FFF87FFC000003FFF87FFC000003FFF8FFFC000003FFF8FFFE000003FFF8FFFE000003
-FFF8FFFE000003FFF0FFFE000003FFF0FFFC000003FFF0FFFC000007FFF07FF8000007FF
-E07FF0000007FFE07FC0000007FFC03F0000000FFFC03F0000000FFF801F8000001FFF00
-1FC000001FFF000FF000003FFE0007F80000FFFC0003FE0001FFF00001FFE00FFFE00000
-7FFFFFFF8000003FFFFFFF0000000FFFFFF800000001FFFFC0000000003FFC000000354F
-7ACD42>I<00000007FE0000000000FFFFC000000003FFFFF00000001FFFFFFC0000007F
-FC01FE000000FFE0007F000003FF80003F800007FF00001F80000FFE00007FC0001FFC00
-00FFC0003FF80003FFE0007FF00003FFE000FFE00007FFE001FFE00007FFE003FFC00007
-FFE003FFC00007FFE007FF800007FFE007FF800007FFE00FFF800003FFC00FFF000003FF
-C01FFF000000FF001FFF0000007E001FFF00000000003FFF00000000003FFF0000000000
-3FFE00000000007FFE00000000007FFE00000000007FFE003FF000007FFE01FFFF00007F
-FE07FFFFC000FFFE0FFFFFF000FFFE1F807FF800FFFE3E001FFE00FFFE78000FFF00FFFE
-F00007FF80FFFEF00003FFC0FFFFE00003FFC0FFFFC00001FFE0FFFFC00001FFF0FFFF80
-0001FFF0FFFF800000FFF8FFFF800000FFF8FFFF000000FFFCFFFF000000FFFCFFFF0000
-00FFFCFFFF000000FFFCFFFE000000FFFEFFFE000000FFFEFFFE000000FFFE7FFE000000
-FFFE7FFE000000FFFE7FFE000000FFFE7FFE000000FFFE7FFE000000FFFE7FFE000000FF
-FE3FFE000000FFFE3FFE000000FFFE3FFE000000FFFE3FFF000000FFFE1FFF000000FFFC
-1FFF000000FFFC1FFF000000FFFC0FFF000000FFF80FFF000001FFF807FF000001FFF807
-FF800001FFF003FF800001FFE001FFC00003FFE001FFE00003FFC000FFE00007FF80007F
-F0000FFF00003FFC001FFE00001FFF00FFFC000007FFFFFFF0000003FFFFFFE0000000FF
-FFFF800000001FFFFC0000000003FFC00000374F7BCD42>I<1F0000000000001F800000
-0000001FC000000000001FFF80000000001FFFFFFFFFFFFF1FFFFFFFFFFFFF1FFFFFFFFF
-FFFF1FFFFFFFFFFFFF3FFFFFFFFFFFFF3FFFFFFFFFFFFE3FFFFFFFFFFFFC3FFFFFFFFFFF
-F83FFFFFFFFFFFF03FFFFFFFFFFFF03FFFFFFFFFFFE03FFFFFFFFFFFC03FFFFFFFFFFF80
-7FFFFFFFFFFF007F800000003E007E000000007E007E00000000FC007C00000001F8007C
-00000003F0007C00000003E0007C00000007E0007C0000000FC000F80000001F8000F800
-00003F0000F80000007E0000F80000007C000000000000FC000000000001F80000000000
-03F0000000000003F0000000000007E000000000000FE000000000001FC000000000001F
-C000000000003F8000000000003F8000000000007F000000000000FF000000000000FF00
-0000000001FF000000000001FE000000000003FE000000000003FE000000000007FE0000
-00000007FC00000000000FFC00000000000FFC00000000000FFC00000000001FFC000000
-00001FFC00000000003FFC00000000003FFC00000000003FFC00000000007FF800000000
-007FF800000000007FF800000000007FF80000000000FFF80000000000FFF80000000000
-FFF80000000000FFF80000000000FFF80000000000FFF80000000001FFF80000000001FF
-F80000000001FFF80000000001FFF80000000001FFF80000000001FFF80000000001FFF8
-0000000001FFF80000000001FFF80000000001FFF80000000001FFF80000000000FFF000
-000000007FE000000000003FC000000000001F80000000385279D042>I<000003FFC000
-0000003FFFFC00000001FFFFFF80000007FFFFFFE000000FFC00FFF800003FE0001FFC00
-007F800007FE0000FF000003FF0000FE000001FF8001FC000000FF8003FC000000FFC003
-F80000007FC007F80000007FC007F80000007FE007F80000003FE00FF80000003FE00FF8
-0000003FE00FFC0000003FE00FFC0000003FE00FFE0000003FE00FFF0000003FE00FFF80
-00007FE00FFFE000007FC00FFFF000007FC00FFFFC0000FFC007FFFF0000FF8007FFFF80
-01FF0007FFFFE003FF0003FFFFF807FE0003FFFFFC0FFC0001FFFFFF1FF00000FFFFFFFF
-E00000FFFFFFFF8000007FFFFFFE0000003FFFFFFE0000000FFFFFFF80000007FFFFFFC0
-000001FFFFFFF0000000FFFFFFF8000003FFFFFFFE00000FFFFFFFFF00003FF7FFFFFF80
-007FC1FFFFFFC001FF807FFFFFE003FF001FFFFFE007FE000FFFFFF00FFC0003FFFFF81F
-F80000FFFFF81FF000007FFFFC3FF000001FFFFC3FE0000007FFFC7FE0000003FFFE7FC0
-000000FFFE7FC00000007FFEFFC00000003FFEFF800000001FFEFF800000000FFEFF8000
-000007FEFF8000000007FEFF8000000003FEFF8000000003FEFF8000000003FCFF800000
-0003FCFFC000000003FC7FC000000003FC7FE000000007F87FE000000007F83FF0000000
-0FF03FF80000000FF01FFC0000001FE00FFE0000003FC007FF000000FF8003FFC00003FF
-0001FFFC003FFE00007FFFFFFFF800001FFFFFFFE0000007FFFFFF80000000FFFFFC0000
-00000FFFC00000374F7BCD42>I<000007FF80000000007FFFF800000001FFFFFE000000
-07FFFFFF8000001FFE01FFE000007FF8003FF00000FFF0001FF80001FFE0000FFC0003FF
-C00007FE0007FF800007FF000FFF800003FF800FFF000003FF801FFF000001FFC03FFF00
-0001FFC03FFF000001FFE07FFE000001FFE07FFE000001FFF07FFE000001FFF07FFE0000
-00FFF8FFFE000000FFF8FFFE000000FFF8FFFE000000FFF8FFFE000000FFFCFFFE000000
-FFFCFFFE000000FFFCFFFE000000FFFCFFFE000000FFFCFFFE000000FFFCFFFE000000FF
-FEFFFE000000FFFEFFFE000000FFFEFFFE000001FFFE7FFE000001FFFE7FFE000001FFFE
-7FFE000001FFFE7FFE000001FFFE3FFE000003FFFE3FFE000003FFFE1FFF000003FFFE1F
-FF000007FFFE0FFF000007FFFE07FF80000FFFFE07FF80001EFFFE03FFC0001EFFFE01FF
-E0003CFFFE007FF000F8FFFE003FFC03F0FFFE001FFFFFE0FFFE0007FFFFC0FFFC0000FF
-FF00FFFC00001FF800FFFC0000000000FFFC0000000000FFFC0000000000FFF800000000
-01FFF80000000001FFF80000000001FFF800FC000001FFF001FE000001FFF007FF800001
-FFE007FF800003FFE00FFFC00003FFC00FFFC00003FFC00FFFC00007FF800FFFC00007FF
-800FFFC0000FFF000FFFC0000FFE000FFF80001FFE0007FF80003FFC0007FE00007FF800
-07FC0000FFF00003F80001FFE00003FC0007FFC00001FF803FFF000000FFFFFFFC000000
-3FFFFFF80000001FFFFFC000000007FFFF00000000007FF0000000374F7BCD42>I<FFFF
-FFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFF
-FE00FFFFFFFFFFFFFFFFFE00000FFFE0000007FFFF00000FFFE00000007FFF00000FFFE0
-0000001FFF00000FFFE000000007FF00000FFFE000000003FF00000FFFE000000001FF00
-000FFFE000000000FF00000FFFE0000000007F00000FFFE0000000007F00000FFFE00000
-00003F80000FFFE0000000003F80000FFFE0000000001F80000FFFE0000000001F80000F
-FFE0000000001F80000FFFE0000000000F80000FFFE0000000000F80000FFFE000000000
-0F80000FFFE0000000000F80000FFFE00001F0000FC0000FFFE00001F00007C0000FFFE0
-0001F00007C0000FFFE00001F00007C0000FFFE00001F00007C0000FFFE00001F0000000
-000FFFE00001F0000000000FFFE00003F0000000000FFFE00003F0000000000FFFE00003
-F0000000000FFFE00007F0000000000FFFE0000FF0000000000FFFE0001FF0000000000F
-FFE000FFF0000000000FFFFFFFFFF0000000000FFFFFFFFFF0000000000FFFFFFFFFF000
-0000000FFFFFFFFFF0000000000FFFFFFFFFF0000000000FFFE000FFF0000000000FFFE0
-001FF0000000000FFFE0000FF0000000000FFFE00007F0000000000FFFE00003F0000000
-000FFFE00003F0000000000FFFE00003F0000000000FFFE00001F0000000000FFFE00001
-F00000F8000FFFE00001F00000F8000FFFE00001F00000F8000FFFE00001F00001F0000F
-FFE00001F00001F0000FFFE00001F00001F0000FFFE00000000001F0000FFFE000000000
-01F0000FFFE00000000003F0000FFFE00000000003F0000FFFE00000000003E0000FFFE0
-0000000003E0000FFFE00000000007E0000FFFE00000000007E0000FFFE00000000007E0
-000FFFE0000000000FE0000FFFE0000000000FC0000FFFE0000000001FC0000FFFE00000
-00003FC0000FFFE0000000003FC0000FFFE0000000007FC0000FFFE000000000FFC0000F
-FFE000000001FF80000FFFE000000007FF80000FFFE00000001FFF80000FFFE00000007F
-FF80000FFFE000000FFFFF80FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFF80FFFFFFFF
-FFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF004D527CD156>69
-D<FFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFF
-FCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFC0007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFFFFFFFFFFFFFFF80000007FFFFFFFFFFFFFFFF80
-000007FFFFFFFFFFFFFFFF80000007FFFFFFFFFFFFFFFF80000007FFFFFFFFFFFFFFFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF8000FFFFFFFFFF8007FFFFFFFF
-FCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFF
-FCFFFFFFFFFF8007FFFFFFFFFC5E527CD167>72 D<FFFFFFFFFF80FFFFFFFFFF80FFFFFF
-FFFF80FFFFFFFFFF80FFFFFFFFFF800007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF000000007FFF000000007FFF000000007FFF000000007FF
-F000000007FFF000000007FFF00000FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFF
-FFFF80FFFFFFFFFF8029527DD130>I<FFFFFFFFFFE0000000FFFFFFFFFFE0000000FFFF
-FFFFFFE0000000FFFFFFFFFFE0000000FFFFFFFFFFE0000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000F
-FFE000000000F8000FFFE000000000F8000FFFE000000000F8000FFFE000000000F8000F
-FFE000000001F8000FFFE000000001F0000FFFE000000001F0000FFFE000000001F0000F
-FFE000000001F0000FFFE000000001F0000FFFE000000003F0000FFFE000000003F0000F
-FFE000000003F0000FFFE000000007F0000FFFE000000007F0000FFFE00000000FF0000F
-FFE00000000FE0000FFFE00000001FE0000FFFE00000001FE0000FFFE00000003FE0000F
-FFE00000007FE0000FFFE0000000FFE0000FFFE0000001FFE0000FFFE0000007FFE0000F
-FFE000000FFFE0000FFFE000007FFFE0000FFFE00003FFFFE0FFFFFFFFFFFFFFFFC0FFFF
-FFFFFFFFFFFFC0FFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFC04552
-7CD14F>76 D<00003FFE000000000007FFFFE0000000001FFFFFFC000000007FFFFFFF00
-000001FFC00FFFC0000003FE0003FFE0000007FF0000FFF0000007FF80007FF800000FFF
-C0007FFC00000FFFC0003FFE00000FFFC0003FFE00000FFFC0001FFF00000FFFC0001FFF
-00000FFFC0001FFF00000FFFC0000FFF800007FF80000FFF800003FF00000FFF800001FE
-00000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF
-8000000000000FFF8000000000000FFF800000000007FFFF8000000003FFFFFF80000000
-7FFFFFFF80000003FFFFFFFF8000001FFFF00FFF8000007FFF000FFF800000FFFC000FFF
-800003FFF0000FFF800007FFC0000FFF80000FFF80000FFF80001FFF00000FFF80003FFF
-00000FFF80003FFE00000FFF80007FFC00000FFF80007FFC00000FFF81F0FFFC00000FFF
-81F0FFF800000FFF81F0FFF800000FFF81F0FFF800000FFF81F0FFF800001FFF81F0FFF8
-00001FFF81F0FFFC00003FFF81F07FFC00003FFF81F07FFE00007FFF81F03FFE0000F7FF
-C3F03FFF0001E3FFC3E01FFFC007E3FFFFE007FFF01F81FFFFC003FFFFFF00FFFF8000FF
-FFFC007FFF00001FFFF0003FFC000001FF800007F0003C387CB642>97
-D<000003FFE0000000003FFFFE00000000FFFFFF80000003FFFFFFE000000FFF003FF800
-003FFC0007FC00007FF8000FFE0000FFF0001FFE0001FFE0003FFF0003FFC0003FFF0007
-FF80003FFF0007FF80003FFF000FFF00003FFF001FFF00003FFF001FFE00003FFF003FFE
-00001FFE003FFE00000FFC003FFE000007F8007FFE00000000007FFC00000000007FFC00
-000000007FFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000
-000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC000000
-0000FFFC0000000000FFFC0000000000FFFC0000000000FFFC00000000007FFC00000000
-007FFE00000000007FFE00000000007FFE00000000003FFE00000000003FFF0000000000
-1FFF0000000F801FFF0000000F800FFF8000001F800FFF8000001F0007FFC000003F0003
-FFE000003E0001FFF000007E0000FFF80000FC00007FFC0001F800003FFF0007F000000F
-FFC01FE0000007FFFFFF80000001FFFFFE000000003FFFF80000000003FF80000031387C
-B63A>99 D<0000001FF800000003FFFE0000000FFFFF8000003FFFFFC00000FFF83FE000
-03FFE0FFF00007FF80FFF0000FFF01FFF8001FFF01FFF8003FFE01FFF8003FFE01FFF800
-7FFC01FFF8007FFC01FFF8007FFC00FFF000FFF800FFF000FFF8007FE000FFF8001F8000
-FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF8000000FFFFFFFFC000FFFFFFFFC000FFFFFFFFC000FFFFFFFFC000FF
-FFFFFFC00000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000
-FFF800000000FFF8000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FF
-FFFFFE00002D547CD328>102 D<003F000000FFC00001FFE00003FFF00003FFF00007FF
-F80007FFF80007FFF80007FFF80007FFF80007FFF80003FFF00003FFF00001FFE00000FF
-C000003F0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000001FF800FFFFF800FFFF
-F800FFFFF800FFFFF800FFFFF80001FFF80000FFF80000FFF80000FFF80000FFF80000FF
-F80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FF
-F80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FF
-F80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FF
-F80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FF
-F80000FFF800FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF01C547CD324>105
-D<003FF0001FF8000001FF800000FFFFF000FFFF80000FFFF80000FFFFF003FFFFE0003F
-FFFE0000FFFFF00FFFFFF000FFFFFF0000FFFFF03F80FFF803F80FFF8000FFFFF07E007F
-FC07E007FFC00003FFF0F8003FFE0F8003FFE00000FFF1F0001FFE1F0001FFE00000FFF3
-E0001FFF3E0001FFF00000FFF3C0001FFF3C0001FFF00000FFF780001FFF780001FFF000
-00FFF700000FFFF00000FFF80000FFFF00000FFFF00000FFF80000FFFE00000FFFE00000
-FFF80000FFFE00000FFFE00000FFF80000FFFC00000FFFC00000FFF80000FFFC00000FFF
-C00000FFF80000FFFC00000FFFC00000FFF80000FFF800000FFF800000FFF80000FFF800
-000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000
-FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FF
-F80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF80
-0000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF80000
-0FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FF
-F800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF8
-0000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF8000
-00FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000F
-FF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF8
-00000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF800
-00FFF800000FFF800000FFF80000FFF800000FFF800000FFF800FFFFFFF80FFFFFFF80FF
-FFFFF8FFFFFFF80FFFFFFF80FFFFFFF8FFFFFFF80FFFFFFF80FFFFFFF8FFFFFFF80FFFFF
-FF80FFFFFFF8FFFFFFF80FFFFFFF80FFFFFFF865367BB56E>109
-D<003FF0001FFC000000FFFFF000FFFF800000FFFFF003FFFFE00000FFFFF00FFFFFF800
-00FFFFF01FC07FFC0000FFFFF07E003FFE000003FFF0F8001FFF000000FFF1F0001FFF00
-0000FFF1E0000FFF800000FFF3C0000FFF800000FFF780000FFF800000FFF7000007FFC0
-0000FFFF000007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC000007FFC0
-0000FFFC000007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFF8000007FFC0
-0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0
-0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0
-0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0
-0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0
-0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0
-0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0
-0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0
-0000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFF
-C0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC042367CB549>I<000001FFC00000000000
-3FFFFE0000000000FFFFFF8000000003FFFFFFE00000000FFF80FFF80000003FFC001FFE
-0000007FF00007FF000000FFE00003FF800001FFC00001FFC00003FF800000FFE00003FF
-0000007FE00007FF0000007FF0000FFF0000007FF8000FFE0000003FF8001FFE0000003F
-FC001FFE0000003FFC003FFE0000003FFE003FFC0000001FFE003FFC0000001FFE007FFC
-0000001FFF007FFC0000001FFF007FFC0000001FFF007FFC0000001FFF00FFFC0000001F
-FF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC
-0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001F
-FF80FFFC0000001FFF80FFFC0000001FFF807FFC0000001FFF007FFC0000001FFF007FFC
-0000001FFF003FFC0000001FFE003FFE0000003FFE003FFE0000003FFE001FFE0000003F
-FC001FFE0000003FFC000FFF0000007FF8000FFF0000007FF80007FF800000FFF00003FF
-800000FFE00001FFC00001FFC00000FFE00003FF8000007FF00007FF0000003FFC001FFE
-0000001FFF80FFFC00000007FFFFFFF000000001FFFFFFC0000000003FFFFE0000000000
-03FFE000000039387CB642>I<003FF8007FF0000000FFFFF807FFFF000000FFFFF81FFF
-FFC00000FFFFF87FFFFFF00000FFFFF9FF00FFFC0000FFFFFFF8003FFF000003FFFFE000
-0FFF800000FFFF800007FFC00000FFFF000003FFE00000FFFE000003FFF00000FFFC0000
-01FFF00000FFF8000000FFF80000FFF8000000FFFC0000FFF80000007FFC0000FFF80000
-007FFE0000FFF80000007FFE0000FFF80000003FFE0000FFF80000003FFF0000FFF80000
-003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000001FFF8000FFF80000
-001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000
-001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000
-001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000
-003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000
-007FFE0000FFF80000007FFE0000FFF80000007FFC0000FFF8000000FFFC0000FFF80000
-00FFF80000FFFC000001FFF80000FFFC000001FFF00000FFFE000003FFE00000FFFF0000
-07FFC00000FFFF80000FFF800000FFFFE0001FFF000000FFFFF0007FFE000000FFF9FE01
-FFF8000000FFF8FFFFFFF0000000FFF83FFFFFC0000000FFF807FFFE00000000FFF800FF
-E000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000
-0000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000
-0000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000
-0000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000
-0000000000FFF8000000000000FFFFFFF80000000000FFFFFFF80000000000FFFFFFF800
-00000000FFFFFFF80000000000FFFFFFF80000000000414D7DB549>I<0003FFC00E0000
-1FFFFC1E0000FFFFFF7E0003FFFFFFFE0007FE003FFE000FF0000FFE001FE00003FE003F
-C00001FE003F800000FE007F800000FE007F0000007E007F0000007E00FF0000003E00FF
-0000003E00FF8000003E00FF8000003E00FFC000003E00FFF000000000FFFC00000000FF
-FF800000007FFFFE0000007FFFFFF000003FFFFFFE00003FFFFFFF80001FFFFFFFE0000F
-FFFFFFF00007FFFFFFFC0003FFFFFFFE0000FFFFFFFF00003FFFFFFF00000FFFFFFF8000
-01FFFFFF8000000FFFFFC00000003FFFC000000007FFE000000001FFE0F8000000FFE0F8
-0000007FE0FC0000003FE0FC0000003FE0FC0000001FE0FE0000001FE0FE0000001FE0FE
-0000001FC0FF0000001FC0FF8000003FC0FF8000003F80FFC000003F80FFE000007F00FF
-F80000FF00FFFC0003FE00FFFF801FFC00FE7FFFFFF000F81FFFFFC000F007FFFF0000E0
-007FF000002B387CB634>115 D<FFFFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFFFC00FFFF
-FFFFFFFFFFFFFC00FFFFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFFFC00000FFFC000000FFF
-FE00000FFFC0000000FFFE00000FFFC00000003FFE00000FFFC00000000FFE00000FFFC0
-00000007FE00000FFFC000000003FE00000FFFC000000001FE00000FFFC000000000FE00
-000FFFC000000000FE00000FFFC0000000007F00000FFFC0000000007F00000FFFC00000
-00003F00000FFFC0000000003F00000FFFC0000000003F00000FFFC0000000001F00000F
-FFC0000000001F00000FFFC0000000001F00000FFFC0000000001F00000FFFC000000000
-1F80000FFFC0000000000F80000FFFC0000000000F80000FFFC0000000000F80000FFFC0
-000000000F80000FFFC0000000000000000FFFC0000000000000000FFFC0000000000000
-000FFFC0000000000000000FFFC0000000000000000FFFC0000000000000000FFFC00000
-80000000000FFFC07FFFFFE00000000FFFFFFFFFFFFE0000000FFFFFFFFFFFFF8000000F
-FFFFFFFFFFFFE000000FFFFFFFFFFFFFF800000FFFFFE0007FFFFE00000FFFE0000007FF
-FF00000FFFC0000001FFFF80000FFFC00000007FFFC0000FFFC00000003FFFE0000FFFC0
-0000001FFFF0000FFFC00000000FFFF8000FFFC000000007FFF8000FFFC000000007FFFC
-000FFFC000000003FFFC000FFFC000000003FFFE000FFFC000000001FFFE000FFFC00000
-0001FFFE000FFFC000000001FFFE000FFFC000000000FFFF000FFFC000000000FFFF000F
-FFC000000000FFFF000FFFC000000000FFFF000FFFC000000000FFFF000FFFC000000000
-FFFF000FFFC000000000FFFF000FFFC000000000FFFF000FFFC000000000FFFF000FFFC0
-00000000FFFE000FFFC000000001FFFE000FFFC000000001FFFE000FFFC000000001FFFE
-000FFFC000000003FFFC000FFFC000000003FFFC000FFFC000000007FFF8000FFFC00000
-0007FFF8000FFFC00000000FFFF0000FFFC00000001FFFE0000FFFC00000003FFFC0000F
-FFC00000007FFF80000FFFC0000001FFFF00000FFFC000000FFFFE00FFFFFFFFFFFFFFFF
-F800FFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFF8000FFFFFFFFFFFFFFFE0000FFFFFFFF
-FFFFFFC0000050527BD15D>193 D<FFFFFFFFFFFFFE000000FFFFFFFFFFFFFFF00000FF
-FFFFFFFFFFFFFE0000FFFFFFFFFFFFFFFF8000FFFFFFFFFFFFFFFFE000000FFFC000001F
-FFF000000FFFC0000003FFF800000FFFC0000001FFFC00000FFFC00000007FFE00000FFF
-C00000007FFF00000FFFC00000003FFF80000FFFC00000001FFFC0000FFFC00000001FFF
-C0000FFFC00000000FFFE0000FFFC00000000FFFE0000FFFC00000000FFFE0000FFFC000
-000007FFF0000FFFC000000007FFF0000FFFC000000007FFF0000FFFC000000007FFF000
-0FFFC000000007FFF0000FFFC000000007FFF0000FFFC000000007FFF0000FFFC0000000
-07FFF0000FFFC000000007FFF0000FFFC00000000FFFE0000FFFC00000000FFFE0000FFF
-C00000000FFFE0000FFFC00000001FFFC0000FFFC00000001FFF80000FFFC00000003FFF
-80000FFFC00000007FFF00000FFFC00000007FFE00000FFFC0000000FFFC00000FFFC000
-0003FFF800000FFFC0000007FFE000000FFFC000003FFFC000000FFFFFFFFFFFFF000000
-0FFFFFFFFFFFF80000000FFFFFFFFFFFF80000000FFFFFFFFFFFFF8000000FFFC000001F
-FFE000000FFFC0000001FFF800000FFFC00000007FFE00000FFFC00000003FFF00000FFF
-C00000000FFFC0000FFFC00000000FFFE0000FFFC000000007FFF0000FFFC000000003FF
-F0000FFFC000000003FFF8000FFFC000000001FFFC000FFFC000000001FFFC000FFFC000
-000000FFFE000FFFC000000000FFFE000FFFC000000000FFFE000FFFC000000000FFFF00
-0FFFC000000000FFFF000FFFC000000000FFFF000FFFC000000000FFFF000FFFC0000000
-00FFFF000FFFC000000000FFFF000FFFC000000000FFFF000FFFC000000000FFFF000FFF
-C000000000FFFF000FFFC000000000FFFE000FFFC000000000FFFE000FFFC000000001FF
-FE000FFFC000000001FFFC000FFFC000000001FFFC000FFFC000000003FFFC000FFFC000
-000007FFF8000FFFC000000007FFF0000FFFC00000000FFFF0000FFFC00000001FFFE000
-0FFFC00000007FFFC0000FFFC0000001FFFF80000FFFC000000FFFFE00FFFFFFFFFFFFFF
-FFFC00FFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFC000FFFFFFFFFFFFFFFE0000FFFFFF
-FFFFFFFFC0000050527BD15D>I<3800003FFF000000003C0007FFFFF80000003F003FFF
-FFFF8000003F80FFFFFFFFE000003FE3FFFFFFFFF800003FF7FFC007FFFE00003FFFFC00
-00FFFF00003FFFE000003FFF80003FFF8000001FFFE0003FFF0000000FFFE0003FFC0000
-0007FFF0003FF800000003FFF8003FF000000001FFFC003FE000000001FFFC003FE00000
-0000FFFE003FC000000000FFFE003FC000000000FFFE003F8000000000FFFF003F800000
-00007FFF003F00000000007FFF003F00000000007FFF003F00000000007FFF003E000000
-00007FFF003E00000000007FFF003E00000000007FFF003E0000000000FFFF0000000000
-0000FFFE00000000000000FFFE00000000000001FFFC00000000000001FFFC0000000000
-0003FFF800000000000003FFF000000000000007FFE00000000000000FFFC00000000000
-001FFF800000000000003FFE00000000000000FFF800000000000007FFE0000000000FFF
-FFFF80000000001FFFFFFC00000000001FFFFFF800000000001FFFFFFF80000000000000
-1FFFF000000000000000FFFE000000000000001FFF8000000000000007FFE00000000000
-0003FFF000000000000001FFF800000000000000FFFE000000000000007FFF0000000000
-00003FFF000000000000003FFF800000000000001FFFC00000000000001FFFC000000000
-00001FFFE00000000000000FFFE00000000000000FFFF00000000000000FFFF000000000
-00000FFFF0F800000000000FFFF0F800000000000FFFF0F800000000000FFFF0F8000000
-00000FFFF0F800000000000FFFF0FC00000000000FFFF07C00000000000FFFE07C000000
-00000FFFE07E00000000001FFFE07E00000000001FFFC03F00000000003FFFC03F000000
-00003FFF801F80000000007FFF801FC000000000FFFF000FE000000001FFFE0007F00000
-0003FFFC0003FC00000007FFF80001FF0000000FFFF00000FFE000007FFFC000007FFF00
-03FFFF8000001FFFFFFFFFFE00000007FFFFFFFFF800000001FFFFFFFFC0000000003FFF
-FFFE000000000000FFFF8000000044547AD250>199 D<FFFFFFFFFF8007FFFFFFFFFCFF
-FFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFF
-FFFFFFFF8007FFFFFFFFFC0007FFF0000000003FFF80000007FFF0000000007FFF800000
-07FFF000000000FFFF80000007FFF000000000FFFF80000007FFF000000001FFFF800000
-07FFF000000001FFFF80000007FFF000000003FFFF80000007FFF000000007FFFF800000
-07FFF000000007FFFF80000007FFF00000000FFFFF80000007FFF00000001FFFFF800000
-07FFF00000001FBFFF80000007FFF00000003F3FFF80000007FFF00000003F3FFF800000
-07FFF00000007E3FFF80000007FFF0000000FE3FFF80000007FFF0000000FC3FFF800000
-07FFF0000001F83FFF80000007FFF0000001F83FFF80000007FFF0000003F03FFF800000
-07FFF0000007E03FFF80000007FFF0000007E03FFF80000007FFF000000FC03FFF800000
-07FFF000000FC03FFF80000007FFF000001F803FFF80000007FFF000003F003FFF800000
-07FFF000003F003FFF80000007FFF000007E003FFF80000007FFF000007E003FFF800000
-07FFF00000FC003FFF80000007FFF00001F8003FFF80000007FFF00001F8003FFF800000
-07FFF00003F0003FFF80000007FFF00007F0003FFF80000007FFF00007E0003FFF800000
-07FFF0000FC0003FFF80000007FFF0000FC0003FFF80000007FFF0001F80003FFF800000
-07FFF0003F80003FFF80000007FFF0003F00003FFF80000007FFF0007E00003FFF800000
-07FFF0007E00003FFF80000007FFF000FC00003FFF80000007FFF001F800003FFF800000
-07FFF001F800003FFF80000007FFF003F000003FFF80000007FFF003F000003FFF800000
-07FFF007E000003FFF80000007FFF00FC000003FFF80000007FFF00FC000003FFF800000
-07FFF01F8000003FFF80000007FFF01F8000003FFF80000007FFF03F0000003FFF800000
-07FFF07E0000003FFF80000007FFF07E0000003FFF80000007FFF0FC0000003FFF800000
-07FFF1FC0000003FFF80000007FFF1F80000003FFF80000007FFF3F00000003FFF800000
-07FFF3F00000003FFF80000007FFF7E00000003FFF80000007FFFFE00000003FFF800000
-07FFFFC00000003FFF80000007FFFF800000003FFF80000007FFFF800000003FFF800000
-07FFFF000000003FFF80000007FFFE000000003FFF80000007FFFE000000003FFF800000
-07FFFC000000003FFF80000007FFFC000000003FFF80000007FFF8000000003FFF800000
-07FFF0000000003FFF8000FFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFF
-FFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFC5E
-527CD167>I<FFFFFFFFFF800003FFFFFFE0FFFFFFFFFF800003FFFFFFE0FFFFFFFFFF80
-0003FFFFFFE0FFFFFFFFFF800003FFFFFFE0FFFFFFFFFF800003FFFFFFE00007FFF00000
-00000FFF80000007FFF00000000001FC00000007FFF00000000003F800000007FFF00000
-00000FF000000007FFF0000000001FE000000007FFF0000000003FC000000007FFF00000
-00007F0000000007FFF000000000FE0000000007FFF000000001FC0000000007FFF00000
-0003F80000000007FFF000000007F00000000007FFF00000000FE00000000007FFF00000
-003FC00000000007FFF00000007F800000000007FFF0000000FF000000000007FFF00000
-01FC000000000007FFF0000003F8000000000007FFF0000007F0000000000007FFF00000
-0FE0000000000007FFF000001FC0000000000007FFF000007F80000000000007FFF00000
-FF00000000000007FFF00001FE00000000000007FFF00003F800000000000007FFF00007
-F000000000000007FFF0000FE000000000000007FFF0001FC000000000000007FFF0003F
-E000000000000007FFF0007FF000000000000007FFF001FFF000000000000007FFF003FF
-F800000000000007FFF007FFFC00000000000007FFF00FFFFE00000000000007FFF01FFF
-FE00000000000007FFF03FFFFF00000000000007FFF07FFFFF80000000000007FFF0FE7F
-FF80000000000007FFF3FC7FFFC0000000000007FFF7F83FFFE0000000000007FFFFF01F
-FFF0000000000007FFFFC00FFFF0000000000007FFFF800FFFF8000000000007FFFF0007
-FFFC000000000007FFFE0003FFFC000000000007FFFC0003FFFE000000000007FFF80001
-FFFF000000000007FFF00000FFFF800000000007FFF000007FFF800000000007FFF00000
-7FFFC00000000007FFF000003FFFE00000000007FFF000001FFFE00000000007FFF00000
-1FFFF00000000007FFF000000FFFF80000000007FFF0000007FFFC0000000007FFF00000
-03FFFC0000000007FFF0000003FFFE0000000007FFF0000001FFFF0000000007FFF00000
-00FFFF0000000007FFF0000000FFFF8000000007FFF00000007FFFC000000007FFF00000
-003FFFE000000007FFF00000001FFFE000000007FFF00000001FFFF000000007FFF00000
-000FFFF800000007FFF000000007FFF800000007FFF000000007FFFC00000007FFF00000
-0003FFFE00000007FFF000000001FFFF00000007FFF000000000FFFF00000007FFF00000
-0000FFFF80000007FFF0000000007FFFC0000007FFF000000000FFFFE000FFFFFFFFFF80
-00FFFFFFFFF8FFFFFFFFFF8000FFFFFFFFF8FFFFFFFFFF8000FFFFFFFFF8FFFFFFFFFF80
-00FFFFFFFFF8FFFFFFFFFF8000FFFFFFFFF85D527CD167>202 D<FFFFFFF00000000000
-0001FFFFFFF0FFFFFFF800000000000003FFFFFFF0FFFFFFFC00000000000007FFFFFFF0
-FFFFFFFC00000000000007FFFFFFF0FFFFFFFC00000000000007FFFFFFF00007FFFE0000
-000000000FFFFE00000007FFFE0000000000000FFFFE00000007DFFF0000000000001F7F
-FE00000007DFFF0000000000001F7FFE00000007CFFF8000000000003E7FFE00000007CF
-FF8000000000003E7FFE00000007CFFF8000000000003E7FFE00000007C7FFC000000000
-007C7FFE00000007C7FFC000000000007C7FFE00000007C3FFE00000000000F87FFE0000
-0007C3FFE00000000000F87FFE00000007C1FFF00000000001F07FFE00000007C1FFF000
-00000001F07FFE00000007C0FFF80000000003E07FFE00000007C0FFF80000000003E07F
-FE00000007C0FFF80000000003E07FFE00000007C07FFC0000000007C07FFE00000007C0
-7FFC0000000007C07FFE00000007C03FFE000000000F807FFE00000007C03FFE00000000
-0F807FFE00000007C01FFF000000001F007FFE00000007C01FFF000000001F007FFE0000
-0007C01FFF000000001F007FFE00000007C00FFF800000003E007FFE00000007C00FFF80
-0000003E007FFE00000007C007FFC00000007C007FFE00000007C007FFC00000007C007F
-FE00000007C003FFE0000000F8007FFE00000007C003FFE0000000F8007FFE00000007C0
-03FFE0000000F8007FFE00000007C001FFF0000001F0007FFE00000007C001FFF0000001
-F0007FFE00000007C000FFF8000003E0007FFE00000007C000FFF8000003E0007FFE0000
-0007C0007FFC000007C0007FFE00000007C0007FFC000007C0007FFE00000007C0007FFC
-000007C0007FFE00000007C0003FFE00000F80007FFE00000007C0003FFE00000F80007F
-FE00000007C0001FFF00001F00007FFE00000007C0001FFF00001F00007FFE00000007C0
-000FFF80003E00007FFE00000007C0000FFF80003E00007FFE00000007C0000FFF80003E
-00007FFE00000007C00007FFC0007C00007FFE00000007C00007FFC0007C00007FFE0000
-0007C00003FFE000F800007FFE00000007C00003FFE000F800007FFE00000007C00001FF
-F001F000007FFE00000007C00001FFF001F000007FFE00000007C00000FFF803E000007F
-FE00000007C00000FFF803E000007FFE00000007C00000FFF803E000007FFE00000007C0
-00007FFC07C000007FFE00000007C000007FFC07C000007FFE00000007C000003FFE0F80
-00007FFE00000007C000003FFE0F8000007FFE00000007C000001FFF1F0000007FFE0000
-0007C000001FFF1F0000007FFE00000007C000001FFF1F0000007FFE00000007C000000F
-FFBE0000007FFE00000007C000000FFFBE0000007FFE00000007C0000007FFFC0000007F
-FE00000007C0000007FFFC0000007FFE00000007C0000003FFF80000007FFE00000007C0
-000003FFF80000007FFE00000007C0000003FFF80000007FFE00000007C0000001FFF000
-00007FFE00000007C0000001FFF00000007FFE00000007C0000000FFE00000007FFE0000
-0007C0000000FFE00000007FFE0000001FF00000007FC00000007FFE0000FFFFFFFE0000
-7FC0000FFFFFFFFFF0FFFFFFFE00007FC0000FFFFFFFFFF0FFFFFFFE00003F80000FFFFF
-FFFFF0FFFFFFFE00003F80000FFFFFFFFFF0FFFFFFFE00001F00000FFFFFFFFFF074527C
-D17D>204 D<FFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF80
-07FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFC0007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFFFFFFFFFFFFFFF80000007FFFFFFFF
-FFFFFFFF80000007FFFFFFFFFFFFFFFF80000007FFFFFFFFFFFFFFFF80000007FFFFFFFF
-FFFFFFFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF00000
-00003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF8000FFFFFFFFFF80
-07FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF80
-07FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFC5E527CD167>I<FFFFFFFFFFFFFFFFFFFFFF
-FCFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFF
-FCFFFFFFFFFFFFFFFFFFFFFFFC0007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF80000007FFF0000000003FFF80000007FFF0000000003FFF80
-000007FFF0000000003FFF8000FFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFF
-FCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFFFCFFFFFFFFFF8007FFFFFFFF
-FC5E527CD167>207 D<FFFFFFFFFFFFFC000000FFFFFFFFFFFFFFE00000FFFFFFFFFFFF
-FFFE0000FFFFFFFFFFFFFFFF8000FFFFFFFFFFFFFFFFE000000FFFE000003FFFF000000F
-FFE0000003FFFC00000FFFE0000000FFFE00000FFFE00000007FFF00000FFFE00000003F
-FF80000FFFE00000001FFFC0000FFFE00000000FFFE0000FFFE000000007FFE0000FFFE0
-00000007FFF0000FFFE000000007FFF0000FFFE000000007FFF8000FFFE000000003FFF8
-000FFFE000000003FFF8000FFFE000000003FFFC000FFFE000000003FFFC000FFFE00000
-0003FFFC000FFFE000000003FFFC000FFFE000000003FFFC000FFFE000000003FFFC000F
-FFE000000003FFFC000FFFE000000003FFFC000FFFE000000003FFFC000FFFE000000003
-FFF8000FFFE000000003FFF8000FFFE000000003FFF8000FFFE000000007FFF8000FFFE0
-00000007FFF0000FFFE000000007FFF0000FFFE000000007FFE0000FFFE00000000FFFC0
-000FFFE00000001FFFC0000FFFE00000003FFF80000FFFE00000007FFF00000FFFE00000
-00FFFE00000FFFE0000007FFF800000FFFE000003FFFF000000FFFFFFFFFFFFFC000000F
-FFFFFFFFFFFF0000000FFFFFFFFFFFF80000000FFFFFFFFFFF800000000FFFE000000000
-0000000FFFE0000000000000000FFFE0000000000000000FFFE0000000000000000FFFE0
-000000000000000FFFE0000000000000000FFFE0000000000000000FFFE0000000000000
-000FFFE0000000000000000FFFE0000000000000000FFFE0000000000000000FFFE00000
-00000000000FFFE0000000000000000FFFE0000000000000000FFFE0000000000000000F
-FFE0000000000000000FFFE0000000000000000FFFE0000000000000000FFFE000000000
-0000000FFFE0000000000000000FFFE0000000000000000FFFE0000000000000000FFFE0
-000000000000000FFFE0000000000000000FFFE0000000000000000FFFE0000000000000
-000FFFE0000000000000000FFFE0000000000000000FFFE0000000000000000FFFE00000
-00000000000FFFE0000000000000000FFFE0000000000000FFFFFFFFFE0000000000FFFF
-FFFFFE0000000000FFFFFFFFFE0000000000FFFFFFFFFE0000000000FFFFFFFFFE000000
-00004E527CD15A>I<0000000003FFF0000007000000007FFFFF00000F00000007FFFFFF
-E0001F0000003FFFFFFFF8003F000000FFFFFFFFFE007F000003FFFFC003FF00FF00000F
-FFF800003FC1FF00003FFFC000000FE3FF0000FFFF00000003FFFF0001FFFC00000001FF
-FF0003FFF800000000FFFF0007FFE0000000007FFF001FFFC0000000003FFF003FFF8000
-0000001FFF003FFF00000000000FFF007FFE000000000007FF00FFFC000000000003FF01
-FFFC000000000003FF01FFF8000000000001FF03FFF0000000000001FF07FFF000000000
-0000FF07FFF0000000000000FF0FFFE00000000000007F0FFFE00000000000007F1FFFC0
-0000000000007F1FFFC00000000000003F1FFFC00000000000003F3FFF80000000000000
-3F3FFF800000000000001F3FFF800000000000001F7FFF800000000000001F7FFF800000
-000000001F7FFF80000000000000007FFF00000000000000007FFF0000000000000000FF
-FF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000
-000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF00
-00000000000000FFFF0000000000000000FFFF0000000000000000FFFF00000000000000
-00FFFF0000000000000000FFFF0000000000000000FFFF00000000000000007FFF000000
-00000000007FFF00000000000000007FFF80000000000000007FFF80000000000000007F
-FF80000000000000003FFF800000000000001F3FFF800000000000001F3FFF8000000000
-00001F1FFFC00000000000001F1FFFC00000000000001F1FFFC00000000000003F0FFFE0
-0000000000003F0FFFE00000000000003E07FFF00000000000003E07FFF0000000000000
-7E03FFF80000000000007C01FFF8000000000000FC01FFFC000000000000F800FFFC0000
-00000001F8007FFE000000000003F0003FFF000000000003F0003FFF800000000007E000
-1FFFC0000000000FC00007FFE0000000001F800003FFF8000000003F000001FFFC000000
-00FE000000FFFF00000001FC0000003FFFC0000007F80000000FFFFC00003FF000000003
-FFFFC001FFC000000000FFFFFFFFFF00000000003FFFFFFFFC000000000007FFFFFFF000
-00000000007FFFFF8000000000000003FFF0000000505479D25F>I<3FFFFFFFFFFFFFFF
-FFFE003FFFFFFFFFFFFFFFFFFE003FFFFFFFFFFFFFFFFFFE003FFFFFFFFFFFFFFFFFFE00
-3FFFFFFFFFFFFFFFFFFE003FFFC0007FFF0001FFFE003FFC00007FFF00001FFE007FF000
-007FFF000007FF007FE000007FFF000003FF007FC000007FFF000001FF007F8000007FFF
-000000FF007F0000007FFF0000007F007F0000007FFF0000007F007E0000007FFF000000
-3F007E0000007FFF0000003F007E0000007FFF0000003F007C0000007FFF0000001F007C
-0000007FFF0000001F007C0000007FFF0000001F007C0000007FFF0000001F007C000000
-7FFF0000001F00FC0000007FFF0000001F80F80000007FFF0000000F80F80000007FFF00
-00000F80F80000007FFF0000000F80F80000007FFF0000000F80F80000007FFF0000000F
-80F80000007FFF0000000F80000000007FFF0000000000000000007FFF00000000000000
-00007FFF0000000000000000007FFF0000000000000000007FFF0000000000000000007F
-FF0000000000000000007FFF0000000000000000007FFF0000000000000000007FFF0000
-000000000000007FFF0000000000000000007FFF0000000000000000007FFF0000000000
-000000007FFF0000000000000000007FFF0000000000000000007FFF0000000000000000
-007FFF0000000000000000007FFF0000000000000000007FFF0000000000000000007FFF
-0000000000000000007FFF0000000000000000007FFF0000000000000000007FFF000000
-0000000000007FFF0000000000000000007FFF0000000000000000007FFF000000000000
-0000007FFF0000000000000000007FFF0000000000000000007FFF000000000000000000
-7FFF0000000000000000007FFF0000000000000000007FFF0000000000000000007FFF00
-00000000000000007FFF0000000000000000007FFF0000000000000000007FFF00000000
-00000000007FFF0000000000000000007FFF0000000000000000007FFF00000000000000
-00007FFF0000000000000000007FFF0000000000000000007FFF0000000000000000007F
-FF0000000000000000007FFF0000000000000000007FFF0000000000000000007FFF0000
-000000000000007FFF0000000000000000007FFF0000000000000000007FFF0000000000
-000000007FFF00000000000001FFFFFFFFFFFFC000000001FFFFFFFFFFFFC000000001FF
-FFFFFFFFFFC000000001FFFFFFFFFFFFC000000001FFFFFFFFFFFFC0000051527BD15C>
-I<FFFFFFFFF80000003FFFFFF0FFFFFFFFF80000003FFFFFF0FFFFFFFFF80000003FFFFF
-F0FFFFFFFFF80000003FFFFFF0FFFFFFFFF80000003FFFFFF0001FFFF000000000003FF0
-00000FFFF000000000000FC000000FFFF800000000000F80000007FFFC00000000001F80
-000003FFFC00000000001F80000003FFFE00000000001F00000001FFFE00000000003F00
-000000FFFF00000000003E00000000FFFF80000000007E000000007FFF80000000007E00
-0000003FFFC0000000007C000000003FFFE000000000FC000000001FFFE000000000F800
-0000001FFFF000000001F8000000000FFFF800000001F80000000007FFF800000001F000
-00000007FFFC00000003F00000000003FFFE00000003E00000000001FFFE00000007E000
-00000001FFFF00000007E00000000000FFFF00000007C000000000007FFF8000000FC000
-000000007FFFC000000F8000000000003FFFC000001F8000000000001FFFE000001F8000
-000000001FFFF000001F0000000000000FFFF000003F0000000000000FFFF800003E0000
-0000000007FFFC00007E00000000000003FFFC00007E00000000000003FFFE00007C0000
-0000000001FFFF0000FC00000000000000FFFF0000F800000000000000FFFF8001F80000
-00000000007FFF8001F8000000000000003FFFC001F0000000000000003FFFE003F00000
-00000000001FFFE003E0000000000000000FFFF007E0000000000000000FFFF807E00000
-000000000007FFF807C00000000000000007FFFC0FC00000000000000003FFFE0F800000
-000000000001FFFE1F800000000000000001FFFF1F800000000000000000FFFF9F000000
-0000000000007FFFBF0000000000000000007FFFFE0000000000000000003FFFFE000000
-0000000000001FFFFE0000000000000000001FFFFC0000000000000000000FFFFC000000
-00000000000007FFF800000000000000000007FFF800000000000000000003FFF8000000
-00000003800003FFF00000000000000FF00001FFF00000000000003FF80000FFE0000000
-0000007FFC0000FFE00000000000007FFE00007FC0000000000000FFFE00003FC0000000
-000000FFFF00003F80000000000000FFFF00001F00000000000000FFFF00003F00000000
-000000FFFF00007E00000000000000FFFF00007E00000000000000FFFE0000FC00000000
-000000FFFE0001F8000000000000007FFC0003F0000000000000007FF8000FF000000000
-0000003FE0001FE0000000000000003FC000FFC0000000000000001FF807FF0000000000
-0000000FFFFFFE000000000000000003FFFFFC000000000000000001FFFFF00000000000
-000000007FFF800000000000000000000FFC000000000000005C537DD163>I<000000FF
-FFFFFFFFFC000000000000FFFFFFFFFFFC000000000000FFFFFFFFFFFC000000000000FF
-FFFFFFFFFC000000000000FFFFFFFFFFFC0000000000000000FFFC000000000000000000
-00FFFC00000000000000000000FFFC00000000000000000000FFFC000000000000000000
-00FFFC00000000000000000000FFFC00000000000000000000FFFC000000000000000001
-FFFFFFFE00000000000000FFFFFFFFFFFC00000000000FFFFFFFFFFFFFC0000000007FFF
-FFFFFFFFFFF800000001FFFFE0FFFC1FFFFE0000000FFFFC00FFFC00FFFFC000001FFFE0
-00FFFC001FFFE000007FFF8000FFFC0007FFF80000FFFE0000FFFC0001FFFC0001FFFC00
-00FFFC0000FFFE0003FFF80000FFFC00007FFF0007FFF00000FFFC00003FFF800FFFE000
-00FFFC00001FFFC00FFFE00000FFFC00001FFFC01FFFC00000FFFC00000FFFE01FFFC000
-00FFFC00000FFFE03FFF800000FFFC000007FFF03FFF800000FFFC000007FFF07FFF8000
-00FFFC000007FFF87FFF800000FFFC000007FFF87FFF000000FFFC000003FFF87FFF0000
-00FFFC000003FFF8FFFF000000FFFC000003FFFCFFFF000000FFFC000003FFFCFFFF0000
-00FFFC000003FFFCFFFF000000FFFC000003FFFCFFFF000000FFFC000003FFFCFFFF0000
-00FFFC000003FFFCFFFF000000FFFC000003FFFCFFFF000000FFFC000003FFFCFFFF0000
-00FFFC000003FFFCFFFF000000FFFC000003FFFCFFFF000000FFFC000003FFFC7FFF0000
-00FFFC000003FFF87FFF000000FFFC000003FFF87FFF800000FFFC000007FFF87FFF8000
-00FFFC000007FFF83FFF800000FFFC000007FFF03FFF800000FFFC000007FFF01FFFC000
-00FFFC00000FFFE01FFFC00000FFFC00000FFFE00FFFE00000FFFC00001FFFC00FFFE000
-00FFFC00001FFFC007FFF00000FFFC00003FFF8003FFF80000FFFC00007FFF0001FFFC00
-00FFFC0000FFFE0000FFFE0000FFFC0001FFFC00007FFF8000FFFC0007FFF800001FFFE0
-00FFFC001FFFE000000FFFFC00FFFC00FFFFC0000001FFFFE0FFFC1FFFFE000000007FFF
-FFFFFFFFFFF8000000000FFFFFFFFFFFFFC00000000000FFFFFFFFFFFC00000000000001
-FFFFFFFE000000000000000000FFFC00000000000000000000FFFC000000000000000000
-00FFFC00000000000000000000FFFC00000000000000000000FFFC000000000000000000
-00FFFC00000000000000000000FFFC00000000000000000000FFFC000000000000000000
-00FFFC00000000000000000000FFFC0000000000000000FFFFFFFFFFFC000000000000FF
-FFFFFFFFFC000000000000FFFFFFFFFFFC000000000000FFFFFFFFFFFC000000000000FF
-FFFFFFFFFC0000005E5279D16D>I<00003FFE000000000007FFFFE0000000001FFFFFFC
-000000007FFFFFFF00000001FFC00FFFC0000003FE0003FFE0000007FF0000FFF0000007
-FF80007FF800000FFFC0007FFC00000FFFC0003FFE00000FFFC0003FFE00000FFFC0001F
-FF00000FFFC0001FFF00000FFFC0001FFF00000FFFC0000FFF800007FF80000FFF800003
-FF00000FFF800001FE00000FFF8000000000000FFF8000000000000FFF8000000000000F
-FF8000000000000FFF8000000000000FFF8000000000000FFF800000000007FFFF800000
-0003FFFFFF800000007FFFFFFF80000003FFFFFFFF8000001FFFF00FFF8000007FFF000F
-FF800000FFFC000FFF800003FFF0000FFF800007FFC0000FFF80000FFF80000FFF80001F
-FF00000FFF80003FFF00000FFF80003FFE00000FFF80007FFC00000FFF80007FFC00000F
-FF81F0FFFC00000FFF81F0FFF800000FFF81F0FFF800000FFF81F0FFF800000FFF81F0FF
-F800001FFF81F0FFF800001FFF81F0FFFC00003FFF81F07FFC00003FFF81F07FFE00007F
-FF81F03FFE0000F7FFC3F03FFF0001E3FFC3E01FFFC007E3FFFFE007FFF01F81FFFFC003
-FFFFFF00FFFF8000FFFFFC007FFF00001FFFF0003FFC000001FF800007F0003C387CB642
->224 D<000000000000FC0000000000000FFC000000000000FFFC00000000003FFFFC00
-0000000FFFFFFC00000001FFFFFFFC0000001FFFFFFFF8000000FFFFFFFFF8000003FFFF
-FFFFF000000FFFFFFFFFF000001FFFFFFFFFE000003FFFFFFFFF800000FFFFFFFFFF0000
-00FFFFFFFFF0000001FFFFFFE000000003FFFFC00000000007FFF8000000000007FFE000
-000000000FFF8000000000000FFE0000000000000FFC0000000000001FF8000000000000
-1FF00000000000001FE00000000000003FE00000000000003FC00000000000003F800000
-000000003F800000000000007F0001FFC00000007F003FFFFE0000007F00FFFFFF800000
-7E03FFFFFFE000007E0FFF80FFF800007E3FFC001FFE00007C7FF00007FF00007CFFE000
-03FF8000FDFFC00001FFC000FFFF800000FFE000FFFF0000007FE000FFFF0000007FF000
-FFFF0000007FF800FFFE0000003FF800FFFE0000003FFC00FFFE0000003FFC00FFFE0000
-003FFE00FFFC0000001FFE00FFFC0000001FFE00FFFC0000001FFF00FFFC0000001FFF00
-FFFC0000001FFF00FFFC0000001FFF00FFFC0000001FFF80FFFC0000001FFF80FFFC0000
-001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80
-FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000
-001FFF807FFC0000001FFF007FFC0000001FFF007FFC0000001FFF003FFC0000001FFE00
-3FFE0000003FFE003FFE0000003FFE001FFE0000003FFC001FFE0000003FFC000FFF0000
-007FF8000FFF0000007FF80007FF800000FFF00003FF800000FFE00001FFC00001FFC000
-00FFE00003FF8000007FF00007FF0000003FFC001FFE0000001FFF80FFFC00000007FFFF
-FFF000000001FFFFFFC0000000003FFFFE000000000003FFE000000039547CD242>I<FF
-FFFFFFFE000000FFFFFFFFFFF00000FFFFFFFFFFFC0000FFFFFFFFFFFF000000FFF8001F
-FF800000FFF80007FFE00000FFF80001FFF00000FFF80001FFF00000FFF80000FFF80000
-FFF80000FFF80000FFF800007FFC0000FFF800007FFC0000FFF800007FFC0000FFF80000
-7FFC0000FFF800007FFC0000FFF800007FFC0000FFF80000FFF80000FFF80000FFF80000
-FFF80001FFF00000FFF80003FFE00000FFF80007FFC00000FFF8001FFF000000FFFFFFFF
-FC000000FFFFFFFFF0000000FFFFFFFFE0000000FFFFFFFFFC000000FFF80007FF000000
-FFF80001FFC00000FFF80000FFF00000FFF800007FF80000FFF800003FFC0000FFF80000
-3FFE0000FFF800001FFE0000FFF800001FFF0000FFF800001FFF0000FFF800001FFF8000
-FFF800001FFF8000FFF800001FFF8000FFF800001FFF8000FFF800001FFF8000FFF80000
-1FFF8000FFF800001FFF0000FFF800001FFF0000FFF800003FFF0000FFF800003FFE0000
-FFF800007FFC0000FFF80000FFFC0000FFF80003FFF80000FFF8000FFFF000FFFFFFFFFF
-FFC000FFFFFFFFFFFF0000FFFFFFFFFFFC0000FFFFFFFFFFC0000039357CB442>I<FFFF
-FFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFF0000FFF8001FFF0000FFF8
-0003FF0000FFF80001FF0000FFF800007F0000FFF800007F0000FFF800003F0000FFF800
-003F0000FFF800001F8000FFF800001F8000FFF800001F8000FFF800001F8000FFF80000
-0F8000FFF800000F8000FFF800000F8000FFF800000F8000FFF800000F8000FFF800000F
-8000FFF80000000000FFF80000000000FFF80000000000FFF80000000000FFF800000000
-00FFF80000000000FFF80000000000FFF80000000000FFF80000000000FFF80000000000
-FFF80000000000FFF80000000000FFF80000000000FFF80000000000FFF80000000000FF
-F80000000000FFF80000000000FFF80000000000FFF80000000000FFF80000000000FFF8
-0000000000FFF80000000000FFF80000000000FFF80000000000FFF80000000000FFF800
-00000000FFF80000000000FFF800000000FFFFFFFE000000FFFFFFFE000000FFFFFFFE00
-0000FFFFFFFE00000031357CB439>I<0000FFFFFFFFFFFFF80000FFFFFFFFFFFFF80000
-FFFFFFFFFFFFF80000FFFFFFFFFFFFF8000000FC0000FFF800000000F80000FFF8000000
-00F80000FFF800000000F80000FFF800000000F80000FFF800000000F80000FFF8000000
-00F80000FFF800000000F80000FFF800000000F80000FFF800000000F80000FFF8000000
-00F80000FFF800000000F80000FFF800000000F80000FFF800000000F80000FFF8000000
-00F80000FFF800000000F00000FFF800000000F00000FFF800000001F00000FFF8000000
-01F00000FFF800000001F00000FFF800000001F00000FFF800000001F00000FFF8000000
-01E00000FFF800000003E00000FFF800000003E00000FFF800000003E00000FFF8000000
-03C00000FFF800000007C00000FFF800000007C00000FFF800000007C00000FFF8000000
-0F800000FFF80000000F800000FFF80000001F000000FFF80000001F000000FFF8000000
-3F000000FFF80000003E000000FFF80000007C000000FFF80000007C000000FFF8000000
-F8000000FFF8000001F8000000FFF8000003F0000000FFF8000007E0000000FFF800000F
-C0000000FFF800003F80000000FFF800007F00000000FFF8003FFFFFFFFFFFFFFFFC3FFF
-FFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFC3FFF0000000000FFFC3FF8
-00000000001FFC7FE0000000000007FE7FC0000000000003FE7F80000000000001FE7F00
-000000000000FE7F000000000000007E7E000000000000007E7E000000000000007E7C00
-0000000000003E7C000000000000003E7C000000000000003E7C000000000000003EFC00
-0000000000003FF8000000000000001FF8000000000000001FF8000000000000001FF800
-0000000000001FF8000000000000001F484880B449>I<000007FF80000000007FFFF800
-000001FFFFFE00000007FFFFFF8000001FFF03FFE000003FFC007FF000007FF0003FF800
-00FFE0001FFC0001FFC0000FFC0003FF800007FE0007FF800007FF000FFF000003FF000F
-FF000003FF801FFE000003FF801FFE000001FF803FFE000001FFC03FFE000001FFC03FFE
-000001FFC07FFC000001FFC07FFC000001FFE07FFC000000FFE07FFC000000FFE0FFFC00
-0000FFE0FFFC000000FFE0FFFFFFFFFFFFE0FFFFFFFFFFFFE0FFFFFFFFFFFFE0FFFFFFFF
-FFFFE0FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC000000
-0000FFFC00000000007FFC00000000007FFC00000000007FFC00000000007FFE00000000
-003FFE00000000003FFE00000000003FFE00000003E01FFF00000003E01FFF00000007E0
-0FFF00000007C007FF8000000FC007FF8000000F8003FFC000001F8001FFE000003F0000
-FFF000007E00007FFC0001FC00001FFF0007F800000FFFE03FF0000003FFFFFFC0000000
-FFFFFF800000003FFFFC0000000001FFE0000033387CB63C>I<1FFFFF0003FFFFFFE000
-7FFFFC001FFFFF0003FFFFFFE0007FFFFC001FFFFF0003FFFFFFE0007FFFFC001FFFFF00
-03FFFFFFE0007FFFFC00007FFC000003FFE000001FFF0000000FF8000003FFE000000FF8
-00000003FC000003FFE000001FE000000001FE000003FFE000003FC000000000FF000003
-FFE000007F80000000007FC00003FFE00001FF00000000001FE00003FFE00003FC000000
-00000FF00003FFE00007F8000000000007FC0003FFE0001FF0000000000001FE0003FFE0
-003FC0000000000000FF0003FFE0007F800000000000007F8003FFE000FF000000000000
-001FE003FFE003FC000000000000000FF003FFE007F80000000000000007F803FFE00FF0
-0000000000000003FE03FFE03FE00000000000000003FF03FFE07FE00000000000000007
-FF83FFE0FFF0000000000000000FFFE3FFE3FFF8000000000000001FFFF3FFE7FFFC0000
-00000000003FFFFBFFEFFFFE000000000000003FFFFFFFFFFFFE000000000000007FFFFF
-FFFFFFFF00000000000000FFFE7FFFFF3FFF80000000000001FFFC3FFFFE1FFFC0000000
-000003FFF80FFFF80FFFE0000000000003FFF007FFF007FFE0000000000007FFF003FFE0
-07FFF000000000000FFFE003FFE003FFF800000000001FFFC003FFE001FFFC0000000000
-3FFF8003FFE000FFFE00000000003FFF0003FFE0007FFE00000000007FFF0003FFE0007F
-FF0000000000FFFE0003FFE0003FFF8000000001FFFC0003FFE0001FFFC000000003FFF8
-0003FFE0000FFFE000000007FFF00003FFE00007FFF000000007FFF00003FFE00007FFF0
-0000000FFFE00003FFE00003FFF80000001FFFC00003FFE00001FFFC0000003FFF800003
-FFE00000FFFE0000007FFF000003FFE000007FFF0000007FFF000003FFE000007FFF0000
-00FFFE000003FFE000003FFF800003FFFF000003FFE000007FFFE000FFFFFFE003FFFFFF
-E003FFFFFF80FFFFFFE003FFFFFFE003FFFFFF80FFFFFFE003FFFFFFE003FFFFFF80FFFF
-FFE003FFFFFFE003FFFFFF8069357EB46E>I<7000FFFE0000007C0FFFFFF000007E3FFF
-FFFE00007FFFFFFFFF80007FFF801FFFE0007FF80003FFF0007FF00000FFF8007FC00000
-7FFC007F8000007FFC007F8000003FFE007F0000003FFE007E0000001FFF007E0000001F
-FF007E0000001FFF007C0000001FFF007C0000001FFF00000000001FFF00000000003FFE
-00000000003FFE00000000007FFC00000000007FF80000000001FFF00000000003FFC000
-0000000FFF80000001FFFFFC00000003FFFFF000000003FFFFF000000003FFFFFE000000
-00001FFFC00000000003FFE00000000000FFF800000000007FFC00000000003FFE000000
-00001FFF00000000001FFF00000000000FFF80000000000FFF80000000000FFFC0000000
-000FFFC0000000000FFFC0000000000FFFC0F80000000FFFC0F80000000FFFC0F8000000
-0FFFC0FC0000000FFF807C0000001FFF807E0000001FFF007E0000003FFF003F0000007F
-FE001F800000FFFC001FE00003FFF8000FFE001FFFF00003FFFFFFFFC00000FFFFFFFF00
-00003FFFFFF800000003FFFF00000032387DB63A>I<FFFFFFF807FFFFFFC0FFFFFFF807
-FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC000FFF8000007FFC00000FFF80000
-07FFC00000FFF800000FFFC00000FFF800001FFFC00000FFF800001FFFC00000FFF80000
-3FFFC00000FFF800007FFFC00000FFF800007FFFC00000FFF80000FFFFC00000FFF80001
-F7FFC00000FFF80001F7FFC00000FFF80003E7FFC00000FFF80007C7FFC00000FFF80007
-C7FFC00000FFF8000F87FFC00000FFF8001F07FFC00000FFF8003F07FFC00000FFF8003E
-07FFC00000FFF8007C07FFC00000FFF800FC07FFC00000FFF800F807FFC00000FFF801F0
-07FFC00000FFF803F007FFC00000FFF803E007FFC00000FFF807C007FFC00000FFF80FC0
-07FFC00000FFF80F8007FFC00000FFF81F0007FFC00000FFF83F0007FFC00000FFF83E00
-07FFC00000FFF87C0007FFC00000FFF8F80007FFC00000FFF8F80007FFC00000FFF9F000
-07FFC00000FFFBE00007FFC00000FFFBE00007FFC00000FFFFC00007FFC00000FFFF8000
-07FFC00000FFFF800007FFC00000FFFF000007FFC00000FFFE000007FFC00000FFFE0000
-07FFC00000FFFC000007FFC00000FFF8000007FFC00000FFF8000007FFC000FFFFFFF807
-FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC042357DB449
->I<00003E00001F0000000000FF80007FC000000001FFC000FFE000000003FFE001FFF0
-00000003FFE001FFF000000007FFF003FFF800000007FFF003FFF800000007FFF003FFF8
-00000007FFF003FFF800000007FFF003FFF800000007FFE001FFF800000003FFE001FFF0
-00000003FFC000FFF000000001FF80007FE000000001FF80007FE000000000FFFFFFFFC0
-000000003FFFFFFF00000000001FFFFFFE000000000007FFFFF8000000000001FFFFE000
-00000000001FFE0000000000000000000000000000000000000000000000000000000000
-0000000000000000000000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFF
-FFC0FFFFFFF807FFFFFFC000FFF8000007FFC00000FFF8000007FFC00000FFF800000FFF
-C00000FFF800001FFFC00000FFF800001FFFC00000FFF800003FFFC00000FFF800007FFF
-C00000FFF800007FFFC00000FFF80000FFFFC00000FFF80001F7FFC00000FFF80001F7FF
-C00000FFF80003E7FFC00000FFF80007C7FFC00000FFF80007C7FFC00000FFF8000F87FF
-C00000FFF8001F07FFC00000FFF8003F07FFC00000FFF8003E07FFC00000FFF8007C07FF
-C00000FFF800FC07FFC00000FFF800F807FFC00000FFF801F007FFC00000FFF803F007FF
-C00000FFF803E007FFC00000FFF807C007FFC00000FFF80FC007FFC00000FFF80F8007FF
-C00000FFF81F0007FFC00000FFF83F0007FFC00000FFF83E0007FFC00000FFF87C0007FF
-C00000FFF8F80007FFC00000FFF8F80007FFC00000FFF9F00007FFC00000FFFBE00007FF
-C00000FFFBE00007FFC00000FFFFC00007FFC00000FFFF800007FFC00000FFFF800007FF
-C00000FFFF000007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC000007FF
-C00000FFF8000007FFC00000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFF
-FFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0424E7DCD49>I<FFFFFFF8001FFFFF00
-FFFFFFF8001FFFFF00FFFFFFF8001FFFFF00FFFFFFF8001FFFFF0000FFF8000007FFC000
-00FFF8000003FE000000FFF8000007F8000000FFF800000FF0000000FFF800001FE00000
-00FFF800007FC0000000FFF80000FF00000000FFF80001FE00000000FFF80007FC000000
-00FFF8000FF000000000FFF8001FE000000000FFF8007FC000000000FFF800FF00000000
-00FFF801FE0000000000FFF803FC0000000000FFF80FF80000000000FFF81FF800000000
-00FFF83FFC0000000000FFF8FFFE0000000000FFF9FFFF0000000000FFFBFFFF80000000
-00FFFFFFFF8000000000FFFFFFFFC000000000FFFFCFFFE000000000FFFF87FFF0000000
-00FFFE03FFF800000000FFFC01FFF800000000FFF801FFFC00000000FFF800FFFE000000
-00FFF8007FFF00000000FFF8003FFF80000000FFF8001FFF80000000FFF8001FFFC00000
-00FFF8000FFFE0000000FFF80007FFF0000000FFF80003FFF8000000FFF80001FFFC0000
-00FFF80001FFFC000000FFF80000FFFE000000FFF800007FFF000000FFF800003FFF8000
-00FFF800001FFFC00000FFF800001FFFC00000FFF800000FFFE00000FFF800001FFFF800
-FFFFFFF800FFFFFFE0FFFFFFF800FFFFFFE0FFFFFFF800FFFFFFE0FFFFFFF800FFFFFFE0
-43357DB449>I<0003FFFFFFFFFFFFE00003FFFFFFFFFFFFE00003FFFFFFFFFFFFE00003
-FFFFFFFFFFFFE0000003F00003FFE000000003E00003FFE000000003E00003FFE0000000
-03E00003FFE000000003E00003FFE000000003E00003FFE000000003E00003FFE0000000
-03E00003FFE000000003E00003FFE000000003E00003FFE000000003E00003FFE0000000
-03E00003FFE000000003E00003FFE000000003E00003FFE000000003E00003FFE0000000
-03E00003FFE000000003E00003FFE000000003E00003FFE000000003E00003FFE0000000
-03E00003FFE000000003E00003FFE000000003E00003FFE000000003E00003FFE0000000
-03E00003FFE000000003E00003FFE000000003E00003FFE000000003E00003FFE0000000
-03E00003FFE000000007E00003FFE000000007C00003FFE000000007C00003FFE0000000
-07C00003FFE000000007C00003FFE0000F8007C00003FFE0001FC007C00003FFE0003FE0
-0FC00003FFE0007FF00FC00003FFE000FFF80F800003FFE000FFF80F800003FFE000FFF8
-1F800003FFE000FFF81F800003FFE000FFF81F000003FFE000FFF83F000003FFE000FFF0
-7E000003FFE0007FE0FE000003FFE0007FFFFC0003FFFFFFE03FFFF80003FFFFFFE01FFF
-F00003FFFFFFE00FFFE00003FFFFFFE003FF800000000000000030000000000000004337
-7EB449>I<FFFFFC000000007FFFFEFFFFFE00000000FFFFFEFFFFFF00000000FFFFFEFF
-FFFF00000001FFFFFE00FFFF00000001FFFE0000FFFF80000001FFFE0000FFFF80000003
-DFFE0000FBFFC0000003DFFE0000FBFFC00000079FFE0000F9FFE00000079FFE0000F9FF
-E000000F1FFE0000F8FFF000000F1FFE0000F8FFF000000F1FFE0000F8FFF000001E1FFE
-0000F87FF800001E1FFE0000F87FF800003C1FFE0000F83FFC00003C1FFE0000F83FFC00
-00781FFE0000F81FFE0000781FFE0000F81FFE0000F01FFE0000F81FFE0000F01FFE0000
-F80FFF0000F01FFE0000F80FFF0001E01FFE0000F807FF8001E01FFE0000F807FF8003C0
-1FFE0000F803FFC003C01FFE0000F803FFC007801FFE0000F801FFE007801FFE0000F801
-FFE00F001FFE0000F801FFE00F001FFE0000F800FFF00F001FFE0000F800FFF01E001FFE
-0000F8007FF81E001FFE0000F8007FF83C001FFE0000F8003FFC3C001FFE0000F8003FFC
-78001FFE0000F8001FFE78001FFE0000F8001FFE78001FFE0000F8001FFEF0001FFE0000
-F8000FFFF0001FFE0000F8000FFFE0001FFE0000F80007FFE0001FFE0000F80007FFC000
-1FFE0000F80003FFC0001FFE0000F80003FF80001FFE0000F80003FF80001FFE0000F800
-01FF80001FFE0000F80001FF00001FFE0007FF0000FF00001FFE00FFFFF800FE001FFFFF
-FEFFFFF8007E001FFFFFFEFFFFF8007C001FFFFFFEFFFFF8003C001FFFFFFE4F357CB458
->I<FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFF
-FFC000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFFFFFFFFFFFC00000FFFFFFFFFFFF
-C00000FFFFFFFFFFFFC00000FFFFFFFFFFFFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FF
-C00000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFF
-FFC0FFFFFFF807FFFFFFC042357DB449>I<000001FFC000000000003FFFFE0000000000
-FFFFFF8000000003FFFFFFE00000000FFF80FFF80000003FFC001FFE0000007FF00007FF
-000000FFE00003FF800001FFC00001FFC00003FF800000FFE00003FF0000007FE00007FF
-0000007FF0000FFF0000007FF8000FFE0000003FF8001FFE0000003FFC001FFE0000003F
-FC003FFE0000003FFE003FFC0000001FFE003FFC0000001FFE007FFC0000001FFF007FFC
-0000001FFF007FFC0000001FFF007FFC0000001FFF00FFFC0000001FFF80FFFC0000001F
-FF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC
-0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001F
-FF80FFFC0000001FFF807FFC0000001FFF007FFC0000001FFF007FFC0000001FFF003FFC
-0000001FFE003FFE0000003FFE003FFE0000003FFE001FFE0000003FFC001FFE0000003F
-FC000FFF0000007FF8000FFF0000007FF80007FF800000FFF00003FF800000FFE00001FF
-C00001FFC00000FFE00003FF8000007FF00007FF0000003FFC001FFE0000001FFF80FFFC
-00000007FFFFFFF000000001FFFFFFC0000000003FFFFE000000000003FFE00000003938
-7CB642>I<FFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFC0FFFFFFFF
-FFFFFFFFC000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
-0007FFC00000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF8
-07FFFFFFC0FFFFFFF807FFFFFFC042357DB449>I<003FF8007FF0000000FFFFF807FFFF
-000000FFFFF81FFFFFC00000FFFFF87FFFFFF00000FFFFF9FF00FFFC0000FFFFFFF8003F
-FF000003FFFFE0000FFF800000FFFF800007FFC00000FFFF000003FFE00000FFFE000003
-FFF00000FFFC000001FFF00000FFF8000000FFF80000FFF8000000FFFC0000FFF8000000
-7FFC0000FFF80000007FFE0000FFF80000007FFE0000FFF80000003FFE0000FFF8000000
-3FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF8000000
-1FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF8000000
-1FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF8000000
-1FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF8000000
-1FFF8000FFF80000003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF8000000
-3FFF0000FFF80000007FFE0000FFF80000007FFE0000FFF80000007FFC0000FFF8000000
-FFFC0000FFF8000000FFF80000FFFC000001FFF80000FFFC000001FFF00000FFFE000003
-FFE00000FFFF000007FFC00000FFFF80000FFF800000FFFFE0001FFF000000FFFFF0007F
-FE000000FFF9FE01FFF8000000FFF8FFFFFFF0000000FFF83FFFFFC0000000FFF807FFFE
-00000000FFF800FFE000000000FFF800000000000000FFF800000000000000FFF8000000
-00000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000000
-00000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000000
-00000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000000
-00000000FFF800000000000000FFF8000000000000FFFFFFF80000000000FFFFFFF80000
-000000FFFFFFF80000000000FFFFFFF80000000000FFFFFFF80000000000414D7DB549>
-I<000003FFE0000000003FFFFE00000000FFFFFF80000003FFFFFFE000000FFF003FF800
-003FFC0007FC00007FF8000FFE0000FFF0001FFE0001FFE0003FFF0003FFC0003FFF0007
-FF80003FFF0007FF80003FFF000FFF00003FFF001FFF00003FFF001FFE00003FFF003FFE
-00001FFE003FFE00000FFC003FFE000007F8007FFE00000000007FFC00000000007FFC00
-000000007FFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000
-000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC000000
-0000FFFC0000000000FFFC0000000000FFFC0000000000FFFC00000000007FFC00000000
-007FFE00000000007FFE00000000007FFE00000000003FFE00000000003FFF0000000000
-1FFF0000000F801FFF0000000F800FFF8000001F800FFF8000001F0007FFC000003F0003
-FFE000003E0001FFF000007E0000FFF80000FC00007FFC0001F800003FFF0007F000000F
-FFC01FE0000007FFFFFF80000001FFFFFE000000003FFFF80000000003FF80000031387C
-B63A>I<7FFFFFFFFFFFFC7FFFFFFFFFFFFC7FFFFFFFFFFFFC7FFFFFFFFFFFFC7FF807FF
-C03FFC7FC007FFC007FC7F8007FFC003FC7F0007FFC001FC7E0007FFC000FC7E0007FFC0
-00FC7C0007FFC0007CFC0007FFC0007EFC0007FFC0007EFC0007FFC0007EF80007FFC000
-3EF80007FFC0003EF80007FFC0003EF80007FFC0003EF80007FFC0003EF80007FFC0003E
-F80007FFC0003E000007FFC00000000007FFC00000000007FFC00000000007FFC0000000
-0007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC000000000
-07FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007
-FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FF
-C00000000007FFC00000000007FFC00000000007FFC00000000007FFC00000000007FFC0
-0000000007FFC00000000007FFC00000000007FFC00000007FFFFFFFFC00007FFFFFFFFC
-00007FFFFFFFFC00007FFFFFFFFC0037357DB43E>I<FFFFFFE0001FFFFCFFFFFFE0001F
-FFFCFFFFFFE0001FFFFCFFFFFFE0001FFFFC01FFF8000001FF8001FFF8000000FE0000FF
-F80000007C0000FFFC000000FC00007FFC000000F800007FFE000001F800003FFE000001
-F000003FFF000001F000003FFF000003F000001FFF800003E000001FFF800007E000000F
-FF800007C000000FFFC0000FC0000007FFC0000F80000007FFE0001F80000003FFE0001F
-00000003FFF0001F00000003FFF0003F00000001FFF8003E00000001FFF8007E00000000
-FFF8007C00000000FFFC00FC000000007FFC00F8000000007FFE00F8000000007FFE01F8
-000000003FFF01F0000000003FFF03F0000000001FFF03E0000000001FFF87E000000000
-0FFF87C0000000000FFFCFC00000000007FFCF800000000007FFEF800000000007FFFF80
-0000000003FFFF000000000003FFFF000000000001FFFE000000000001FFFE0000000000
-00FFFC000000000000FFFC0000000000007FF80000000000007FF80000000000007FF800
-00000000003FF00000000000003FF00000000000001FE00000000000001FE00000000000
-000FC00000000000000FC00000000000000FC00000000000000F800000000000001F8000
-00000000001F000000000000003F000000000000003E000000000000007E000000001FC0
-007C000000003FE0007C000000007FF000FC00000000FFF800F800000000FFF801F80000
-0000FFF801F000000000FFF803E000000000FFF807E000000000FFF80FC0000000007FF0
-1F80000000007FE03F00000000007FC07F00000000003F81FC00000000001FFFF8000000
-00000FFFF0000000000003FFC0000000000000FE0000000000003E4D7DB445>I<000000
-00003FF8000000000000000000FFFFF8000000000000000000FFFFF80000000000000000
-00FFFFF8000000000000000000FFFFF8000000000000000000FFFFF80000000000000000
-0003FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF80000000000000003FF80FFF80FFE00000000003F
-FFF0FFF87FFFE000000000FFFFFCFFF9FFFFF800000003FFFFFEFFFBFFFFFE0000000FFF
-C03FFFFFE01FFF8000003FFF000FFFFF8007FFE000007FFC0007FFFF0001FFF00000FFF8
-0003FFFE0000FFF80001FFF00001FFFC00007FFC0003FFE00000FFF800003FFE0007FFC0
-0000FFF800001FFF000FFFC00000FFF800001FFF800FFF800000FFF800000FFF801FFF80
-0000FFF800000FFFC01FFF000000FFF8000007FFC03FFF000000FFF8000007FFE03FFF00
-0000FFF8000007FFE07FFE000000FFF8000003FFF07FFE000000FFF8000003FFF07FFE00
-0000FFF8000003FFF07FFE000000FFF8000003FFF0FFFC000000FFF8000001FFF8FFFC00
-0000FFF8000001FFF8FFFC000000FFF8000001FFF8FFFC000000FFF8000001FFF8FFFC00
-0000FFF8000001FFF8FFFC000000FFF8000001FFF8FFFC000000FFF8000001FFF8FFFC00
-0000FFF8000001FFF8FFFC000000FFF8000001FFF8FFFC000000FFF8000001FFF8FFFC00
-0000FFF8000001FFF8FFFC000000FFF8000001FFF8FFFC000000FFF8000001FFF87FFE00
-0000FFF8000003FFF07FFE000000FFF8000003FFF07FFE000000FFF8000003FFF07FFE00
-0000FFF8000003FFF03FFF000000FFF8000007FFE03FFF000000FFF8000007FFE01FFF00
-0000FFF8000007FFC01FFF800000FFF800000FFFC00FFF800000FFF800000FFF800FFFC0
-0000FFF800001FFF8007FFC00000FFF800001FFF0003FFE00001FFFC00003FFE0001FFF0
-0001FFFC00007FFC0000FFF80003FFFE0000FFF800007FFC0007FFFF0001FFF000003FFF
-000FFFFF8007FFE000000FFFC07FFFFFF01FFF80000003FFFFFEFFFBFFFFFE00000000FF
-FFF8FFF8FFFFF8000000003FFFF0FFF87FFFE00000000001FF80FFF80FFC000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF800000000000000000000FFF80000000000000000
-0000FFF800000000000000000000FFF8000000000000000000FFFFFFF800000000000000
-00FFFFFFF80000000000000000FFFFFFF80000000000000000FFFFFFF800000000000000
-00FFFFFFF8000000005D6A7CD266>I<FFFFFFF001FFFFFCFFFFFFF001FFFFFCFFFFFFF0
-01FFFFFCFFFFFFF001FFFFFC00FFFE00001FFE00007FFE00000FF000003FFF00000FE000
-001FFF80001FC000001FFF80001F8000000FFFC0003F00000007FFE0007E00000003FFF0
-00FE00000001FFF801FC00000001FFF803F800000000FFFC03F0000000007FFE07E00000
-00003FFF0FC0000000003FFF1FC0000000001FFFBF80000000000FFFFF000000000007FF
-FE000000000007FFFC000000000003FFF8000000000001FFF8000000000000FFFC000000
-0000007FFE0000000000007FFE0000000000003FFF0000000000003FFF8000000000007F
-FFC00000000000FFFFC00000000000FFFFE00000000001FBFFF00000000003F1FFF80000
-000007F0FFFC000000000FE0FFFC000000001FC07FFE000000001F803FFF000000003F00
-1FFF800000007E001FFF80000000FE000FFFC0000001FC0007FFE0000003F80003FFF000
-0003F00003FFF8000007E00001FFF800000FC00000FFFC00001FC000007FFE00003FC000
-003FFF0001FFE000003FFF00FFFFFE0007FFFFFFFFFFFE0007FFFFFFFFFFFE0007FFFFFF
-FFFFFE0007FFFFFF40357EB445>I<FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFF
-F807FFFFFFC0FFFFFFF807FFFFFFC000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8
-000007FFC00000FFF8000007FFC00000FFF8000007FFC000FFFFFFFFFFFFFFFFE0FFFFFF
-FFFFFFFFFFE0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE000000000000007FFE0000000
-00000000FFE0000000000000003FF0000000000000001FF0000000000000000FF0000000
-0000000007F00000000000000003F00000000000000003F00000000000000003F0000000
-0000000001F00000000000000001F00000000000000001F00000000000000001F0000000
-0000000001F80000000000000000F80000000000000000F80000000000000000F8000000
-0000000000F80000000000000000F845487DB449>I<FFFFFFF807FFFFFFC0FFFFFFF807
-FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC000FFF8000007FFC00000FFF80000
-07FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF80000
-07FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF80000
-07FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF80000
-07FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000007FF80000
-07FFC000007FFC000007FFC000003FFC00003FFFC000003FFE0000FFFFC000001FFF000F
-FFFFC0000007FFFFFFF7FFC0000001FFFFFF87FFC00000007FFFFC07FFC000000007FFC0
-07FFC000000000000007FFC000000000000007FFC000000000000007FFC0000000000000
-07FFC000000000000007FFC000000000000007FFC000000000000007FFC0000000000000
-07FFC000000000000007FFC000000000000007FFC000000000000007FFC0000000000000
-07FFC000000000000007FFC000000000000007FFC000000000000007FFC0000000000000
-07FFC000000000000007FFC000000000000007FFC000000000000007FFC0000000000007
-FFFFFFC00000000007FFFFFFC00000000007FFFFFFC00000000007FFFFFFC042357DB449
->I<FFFFFFF81FFFFFFF03FFFFFFE0FFFFFFF81FFFFFFF03FFFFFFE0FFFFFFF81FFFFFFF
-03FFFFFFE0FFFFFFF81FFFFFFF03FFFFFFE000FFF800001FFF000003FFE00000FFF80000
-1FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FF
-F800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE0
-0000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF0000
-03FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001F
-FF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF8
-00001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE000
-00FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003
-FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF
-000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800
-001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000
-FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FF
-E00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF00
-0003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF80000
-1FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FF
-F800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE0
-0000FFF800001FFF000003FFE00000FFF800001FFF000003FFE000FFFFFFFFFFFFFFFFFF
-FFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFF
-FFFFFFFFFFFFE063357CB46C>I<FFFFFFF81FFFFFFF03FFFFFFE0FFFFFFF81FFFFFFF03
-FFFFFFE0FFFFFFF81FFFFFFF03FFFFFFE0FFFFFFF81FFFFFFF03FFFFFFE000FFF800001F
-FF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF8
-00001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE000
-00FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003
-FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF
-000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800
-001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000
-FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FF
-E00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF00
-0003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF80000
-1FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FF
-F800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE0
-0000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF0000
-03FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001F
-FF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF8
-00001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003FFE000
-00FFF800001FFF000003FFE00000FFF800001FFF000003FFE00000FFF800001FFF000003
-FFE000FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF
-FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000003FFF000000000
-000000000000007FF000000000000000000000001FF800000000000000000000000FF800
-0000000000000000000007F8000000000000000000000003F80000000000000000000000
-01F8000000000000000000000001F8000000000000000000000001F80000000000000000
-00000000F8000000000000000000000000F8000000000000000000000000F80000000000
-00000000000000F8000000000000000000000000FC0000000000000000000000007C0000
-000000000000000000007C0000000000000000000000007C000000000000000000000000
-7C0000000000000000000000007C66487CB46C>I<FFFFFFF80000007FFFFFFCFFFFFFF8
-0000007FFFFFFCFFFFFFF80000007FFFFFFCFFFFFFF80000007FFFFFFC00FFF800000000
-007FFC0000FFF800000000007FFC0000FFF800000000007FFC0000FFF800000000007FFC
-0000FFF800000000007FFC0000FFF800000000007FFC0000FFF800000000007FFC0000FF
-F800000000007FFC0000FFF800000000007FFC0000FFF800000000007FFC0000FFF80000
-0000007FFC0000FFF800000000007FFC0000FFF800000000007FFC0000FFF80000000000
-7FFC0000FFF800000000007FFC0000FFF800000000007FFC0000FFF800000000007FFC00
-00FFF800000000007FFC0000FFFFFFF80000007FFC0000FFFFFFFFF000007FFC0000FFFF
-FFFFFE00007FFC0000FFFFFFFFFF80007FFC0000FFF8001FFFE0007FFC0000FFF80007FF
-F0007FFC0000FFF80001FFF8007FFC0000FFF80000FFFC007FFC0000FFF800007FFE007F
-FC0000FFF800007FFE007FFC0000FFF800003FFF007FFC0000FFF800003FFF007FFC0000
-FFF800001FFF807FFC0000FFF800001FFF807FFC0000FFF800001FFF807FFC0000FFF800
-001FFF807FFC0000FFF800001FFF807FFC0000FFF800001FFF807FFC0000FFF800001FFF
-807FFC0000FFF800003FFF007FFC0000FFF800003FFF007FFC0000FFF800007FFE007FFC
-0000FFF800007FFE007FFC0000FFF80000FFFC007FFC0000FFF80001FFF8007FFC0000FF
-F80007FFF0007FFC0000FFF8001FFFE0007FFC00FFFFFFFFFFFFC07FFFFFFCFFFFFFFFFF
-FF007FFFFFFCFFFFFFFFFFF8007FFFFFFCFFFFFFFFFF80007FFFFFFC56357CB45F>251
-D<FFFFFFF800000000FFFFFFF800000000FFFFFFF800000000FFFFFFF80000000000FFF8
-000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800000000
-0000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8
-000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800000000
-0000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFFF
-FFF800000000FFFFFFFFF0000000FFFFFFFFFE000000FFFFFFFFFF800000FFF8001FFFE0
-0000FFF80007FFF00000FFF80001FFF80000FFF80000FFFC0000FFF800007FFE0000FFF8
-00007FFE0000FFF800003FFF0000FFF800003FFF0000FFF800001FFF8000FFF800001FFF
-8000FFF800001FFF8000FFF800001FFF8000FFF800001FFF8000FFF800001FFF8000FFF8
-00001FFF8000FFF800003FFF0000FFF800003FFF0000FFF800007FFE0000FFF800007FFE
-0000FFF80000FFFC0000FFF80001FFF80000FFF80007FFF00000FFF8001FFFE000FFFFFF
-FFFFFFC000FFFFFFFFFFFF0000FFFFFFFFFFF80000FFFFFFFFFF80000039357CB442>I<
-000001FFFFFFFFFE00007FFFFFFFFFFE0003FFFFFFFFFFFE000FFFFFFFFFFFFE003FFFC0
-003FFE00007FFE00003FFE0000FFF800003FFE0001FFF000003FFE0003FFF000003FFE00
-03FFE000003FFE0007FFE000003FFE0007FFE000003FFE0007FFE000003FFE0007FFE000
-003FFE0007FFE000003FFE0007FFE000003FFE0003FFE000003FFE0003FFF000003FFE00
-01FFF000003FFE0001FFF800003FFE0000FFF800003FFE00007FFE00003FFE00001FFFC0
-003FFE000007FFFFFFFFFE000001FFFFFFFFFE0000001FFFFFFFFE00000001FFFFFFFE00
-000001FFFC3FFE00000003FFF83FFE00000007FFF83FFE0000000FFFF03FFE0000000FFF
-E03FFE0000001FFFC03FFE0000003FFFC03FFE0000007FFF803FFE0000007FFF003FFE00
-0000FFFF003FFE000001FFFE003FFE000003FFFC003FFE000003FFF8003FFE000007FFF8
-003FFE00000FFFF0003FFE00001FFFE0003FFE00001FFFE0003FFE00003FFFC0003FFE00
-007FFF80003FFE0000FFFF00003FFE0001FFFF00003FFE0007FFFF00003FFE00FFFFFFF8
-3FFFFFFEFFFFFFF83FFFFFFEFFFFFFF83FFFFFFEFFFFFFF83FFFFFFE3F357EB445>255
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi larm1000 10 82
-/Fi 82 256 df<01800060038000E0070001C00E0003801C0007001800060038000E0030
-000C0070001C006000180060001800E0003800C0003000C0003000C0003000C0003000CE
-003380FF803FE0FFC03FF0FFC03FF0FFC03FF07FC01FF07FC01FF03F800FE00E0003801C
-1981B91C>16 D<1C0007007F001FC0FF803FE0FF803FE0FFC03FF0FFC03FF0FFC03FF07F
-C01FF01CC0073000C0003000C0003000C0003000C0003001C00070018000600180006003
-8000E0030000C0070001C0060001800E0003801C00070038000E0070001C00600018001C
-1980B91C>I<FFFFFFFFFF80FFFFFFFFFF80290280962A>21 D<0000600000E00001C000
-0380000700000E00001E00003C0000780000780000F00001E00001E00003C00003C00007
-C0000780000F80000F00000F00001F00001E00001E00003E00003E00003E00007C00007C
-00007C00007C00007C00007C0000F80000F80000F80000F80000F80000F80000F80000F8
-0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800007C00007C
-00007C00007C00007C00007C00003E00003E00003E00001E00001E00001F00000F00000F
-00000F800007800007C00003C00003C00001E00001E00000F000007800007800003C0000
-1E00000E000007000003800001C00000E0000060135278BD20>40
-D<C00000E000007000003800001C00000E00000F000007800003C00003C00001E00000F0
-0000F000007800007800007C00003C00003E00001E00001E00001F00000F00000F00000F
-80000F80000F800007C00007C00007C00007C00007C00007C00003E00003E00003E00003
-E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
-E00003E00003E00007C00007C00007C00007C00007C00007C0000F80000F80000F80000F
-00000F00001F00001E00001E00003E00003C00007C0000780000780000F00000F00001E0
-0003C00003C0000780000F00000E00001C0000380000700000E00000C0000013527CBD20
->I<1C007F00FF80FF80FFC0FFC0FFC07FC01CC000C000C000C000C001C0018001800380
-0300070006000E001C003800700060000A19798817>44 D<FFFFFCFFFFFCFFFFFCFFFFFC
-FFFFFC16057F941C>I<1C007F00FF80FF80FF80FF80FF807F001C000909798817>I<0001
-C0000003C0000007C000001FC00000FFC000FFFFC000FFFFC000FF1FC000001FC000001F
-C000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F
-C000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F
-C000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F
-C000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F
-C000001FC000001FC000001FC000001FC000001FC000003FE0007FFFFFF07FFFFFF07FFF
-FFF01C3779B62A>49 D<000FF00000007FFE000001FFFF800003E03FE0000F000FF0001E
-0007F8001C0003FC00380001FE00700001FE00700000FF00600000FF00FE0000FF00FF00
-007F80FF80007F80FF80007F80FF80007F80FF80007F80FF80007F807F00007F801C0000
-7F800000007F80000000FF00000000FF00000000FE00000001FE00000001FC00000003FC
-00000003F800000007F00000000FE00000000FC00000001F800000003F000000007E0000
-0000FC00000001F800000001E000000003C000000007800000000F000000001E00018000
-3C000180007800018000F000038001E000030003C0000300078000030007000007000FFF
-FFFF001FFFFFFF003FFFFFFF007FFFFFFE00FFFFFFFE00FFFFFFFE00FFFFFFFE0021377C
-B62A>I<0007F80000003FFF000000FFFFC00001F80FF00003C007F800078003FC000E00
-01FE000F8001FE001FE000FF001FF000FF001FF000FF001FF000FF001FF000FF001FF000
-FF000FE000FF0007C000FF00000001FE00000001FE00000001FC00000003FC00000003F8
-00000007F000000007E00000000F800000007F0000001FFC0000001FFF800000000FE000
-000007F000000001FC00000001FE00000000FF000000007F800000007F800000007FC000
-00007FC00000003FC00000003FE00000003FE01E00003FE07F80003FE07F80003FE0FFC0
-003FE0FFC0003FE0FFC0003FE0FFC0003FC0FFC0007FC0FF80007F807E00007F80700000
-FF00380001FE001E0001FE000F8003F80007F00FF00001FFFFC000007FFF0000000FF800
-0023397DB62A>I<000000380000000038000000007800000000F800000000F800000001
-F800000003F800000007F800000007F80000000FF80000001FF80000001BF800000033F8
-00000073F800000063F8000000C3F8000001C3F800000183F800000303F800000703F800
-000603F800000C03F800001C03F800001803F800003003F800007003F800006003F80000
-C003F80001C003F800038003F800030003F800070003F8000E0003F8000C0003F8001800
-03F800380003F800300003F800600003F800E00003F800FFFFFFFFF8FFFFFFFFF8FFFFFF
-FFF8000003F800000003F800000003F800000003F800000003F800000003F800000003F8
-00000003F800000003F800000003F800000007FC000003FFFFF80003FFFFF80003FFFFF8
-25387EB72A>I<0600000C000780003C0007F003F80007FFFFF80007FFFFF00007FFFFE0
-0007FFFF800007FFFF000007FFFC0000067FE00000060000000006000000000600000000
-060000000006000000000600000000060000000006000000000600000000060000000006
-07F80000061FFE000006780F800006E007E00007C003F000078001F800070001F8000600
-00FC00060000FE00000000FE00000000FF000000007F000000007F000000007F80000000
-7F800000007F800000007F801C00007F807F00007F80FF00007F80FF80007F80FF80007F
-80FF80007F80FF00007F00FF0000FF00FC0000FF00600000FE00700000FE00700001FC00
-380001F8001C0003F8001E0007F0000F800FE00007E03F800001FFFF0000007FFC000000
-1FE0000021397CB62A>I<00003FC0000001FFF0000007FFFC00000FE03E00003F800700
-007E001F0000FC003F8001F8007F8003F0007F8007F0007F8007E0007F800FE0003F000F
-C0001E001FC00000001F800000003F800000003F800000003F800000007F800000007F00
-0000007F01FC00007F07FF8000FF1E07E000FF3801F000FF7000F800FF6000FC00FFE000
-7E00FFC0003F00FFC0003F80FF80003F80FF80001FC0FF80001FC0FF80001FC0FF00001F
-E0FF00001FE0FF00001FE0FF00001FE0FF00001FE07F00001FE07F00001FE07F00001FE0
-7F00001FE07F80001FE03F80001FE03F80001FC03F80001FC01F80003F801FC0003F800F
-C0003F000FE0007F0007E000FE0003F000FC0001F801F80000FE07F000007FFFC000001F
-FF00000003FC000023397DB62A>I<0003F80000001FFF0000007FFFC00001FC07E00003
-F803F00007E001F8000FE000FC001FC0007E001F80007E003F80003F003F80003F007F00
-003F807F00003F80FF00003F80FF00001FC0FF00001FC0FF00001FC0FF00001FC0FF0000
-1FC0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE07F00003FE07F00003F
-E07F00003FE03F80003FE03F80007FE01F80007FE00FC000FFE007E000DFE003E001DFE0
-01F0039FE000FC0F1FE0003FFC1FC00007F01FC00000001FC00000001FC00000003FC000
-00003F800000003F800000003F000000007F000F00007F001F80007E003FC000FC003FC0
-00FC003FC001F8003FC003F0003F8007E0001F000FE0001C001F80000F807F000007FFFE
-000001FFF80000003FC0000023397DB62A>57 D<1C007F00FF80FF80FF80FF80FF807F00
-1C0000000000000000000000000000000000000000000000000000000000000000000000
-00001C007F00FF80FF80FF80FF80FF807F001C00092479A317>I<FFFFFFFFC00000FFFF
-FFFFF80000FFFFFFFFFE000001FF8001FF800000FF00003FE00000FF00000FF00000FF00
-0003F80000FF000001FC0000FF000000FE0000FF0000007F0000FF0000007F0000FF0000
-003F8000FF0000003FC000FF0000001FC000FF0000001FE000FF0000000FE000FF000000
-0FF000FF0000000FF000FF0000000FF000FF00000007F800FF00000007F800FF00000007
-F800FF00000007F800FF00000007FC00FF00000007FC00FF00000007FC00FF00000007FC
-00FF00000007FC00FF00000007FC00FF00000007FC00FF00000007FC00FF00000007FC00
-FF00000007FC00FF00000007FC00FF00000007FC00FF00000007F800FF00000007F800FF
-00000007F800FF00000007F800FF0000000FF000FF0000000FF000FF0000000FE000FF00
-00000FE000FF0000001FE000FF0000001FC000FF0000003F8000FF0000003F8000FF0000
-007F0000FF000000FE0000FF000001FC0000FF000003F80000FF00000FF00000FF00003F
-E00001FF8000FF8000FFFFFFFFFF0000FFFFFFFFF80000FFFFFFFFC0000036397DB83F>
-68 D<FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFFFFFE0001FF800007FE0000FF000000
-FE0000FF0000003F0000FF0000001F0000FF0000000F0000FF000000070000FF00000007
-0000FF000000070000FF000000030000FF000000030000FF000000030000FF0000000380
-00FF000000018000FF0000C0018000FF0000C0018000FF0000C0018000FF0000C0000000
-FF0000C0000000FF0000C0000000FF0001C0000000FF0001C0000000FF0003C0000000FF
-000FC0000000FFFFFFC0000000FFFFFFC0000000FFFFFFC0000000FF000FC0000000FF00
-03C0000000FF0001C0000000FF0001C0000000FF0000C0000000FF0000C0000000FF0000
-C0006000FF0000C0006000FF0000C0006000FF0000C000E000FF00000000C000FF000000
-00C000FF00000000C000FF00000000C000FF00000001C000FF00000001C000FF00000001
-C000FF000000038000FF000000038000FF000000078000FF000000078000FF0000000F80
-00FF0000003F8000FF0000007F8001FF800007FF00FFFFFFFFFFFF00FFFFFFFFFFFF00FF
-FFFFFFFFFF0033397EB838>I<000000FF8000C000000FFFF001C000003FFFFC01C00000
-FF803F03C00003FC000787C0000FF00003CFC0001FE00000EFC0003FC000007FC0007F80
-00003FC000FF0000001FC001FE0000001FC003FC0000000FC007F800000007C007F80000
-0007C00FF000000003C00FF000000003C01FE000000003C01FE000000001C03FE0000000
-01C03FC000000001C07FC000000000C07FC000000000C07FC000000000C07FC000000000
-C0FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000
-FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF
-800000000000FF800000FFFFFFFF800000FFFFFF7FC00000FFFFFF7FC00000007FE07FC0
-0000003FC07FC00000003FC03FC00000003FC03FE00000003FC01FE00000003FC01FE000
-00003FC00FF00000003FC00FF00000003FC007F80000003FC007F80000003FC003FC0000
-003FC001FE0000003FC000FF0000007FC0007F8000007FC0003FC00000FFC0001FE00000
-EFC0000FF80003C7C00003FE000783C00000FFC03F01C000003FFFFC00C000000FFFF000
-00000000FF800000383D7CBA41>71 D<FFFFFF01FFFFFEFFFFFF01FFFFFEFFFFFF01FFFF
-FE01FF800003FF0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE00
-00FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000
-FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF
-000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF00
-0001FE0000FF000001FE0000FF000001FE0000FFFFFFFFFE0000FFFFFFFFFE0000FFFFFF
-FFFE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001
-FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE
-0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE00
-00FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0000
-FF000001FE0000FF000001FE0000FF000001FE0000FF000001FE0001FF800003FF00FFFF
-FF01FFFFFEFFFFFF01FFFFFEFFFFFF01FFFFFE37397DB83E>I<FFFFFFE00000FFFFFFE0
-0000FFFFFFE0000001FFC000000000FF0000000000FF0000000000FF0000000000FF0000
-000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000
-000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000
-000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000
-000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000
-000000FF0000000000FF0000000000FF0000000000FF0000001800FF0000001800FF0000
-001800FF0000001800FF0000001800FF0000003800FF0000003000FF0000003000FF0000
-003000FF0000007000FF0000007000FF0000007000FF000000F000FF000000F000FF0000
-01F000FF000003F000FF00000FF000FF00001FE001FF8000FFE0FFFFFFFFFFE0FFFFFFFF
-FFE0FFFFFFFFFFE02D397DB834>76 D<FFFF0000000007FFF8FFFF800000000FFFF8FFFF
-800000000FFFF801FF800000000FFC0000DFC00000001BF80000DFC00000001BF80000CF
-E000000033F80000CFE000000033F80000CFE000000033F80000C7F000000063F80000C7
-F000000063F80000C7F000000063F80000C3F8000000C3F80000C3F8000000C3F80000C1
-FC00000183F80000C1FC00000183F80000C1FC00000183F80000C0FE00000303F80000C0
-FE00000303F80000C07F00000603F80000C07F00000603F80000C07F00000603F80000C0
-3F80000C03F80000C03F80000C03F80000C03F80000C03F80000C01FC0001803F80000C0
-1FC0001803F80000C00FE0003003F80000C00FE0003003F80000C00FE0003003F80000C0
-07F0006003F80000C007F0006003F80000C003F800C003F80000C003F800C003F80000C0
-03F800C003F80000C001FC018003F80000C001FC018003F80000C001FC018003F80000C0
-00FE030003F80000C000FE030003F80000C0007F060003F80000C0007F060003F80000C0
-007F060003F80000C0003F8C0003F80000C0003F8C0003F80000C0001FD80003F80000C0
-001FD80003F80000C0001FD80003F80000C0000FF00003F80000C0000FF00003F80000C0
-000FF00003F80001E00007E00003F80003F00007E00003F8000FFC0003C00007FC00FFFF
-C003C003FFFFF8FFFFC003C003FFFFF8FFFFC0018003FFFFF845397DB84C>I<FFFF0000
-07FFFEFFFF800007FFFEFFFFC00007FFFE00FFC000007FE000FFE000001F8000DFF00000
-0F0000DFF00000060000CFF80000060000C7FC0000060000C7FC0000060000C3FE000006
-0000C1FF0000060000C1FF0000060000C0FF8000060000C07FC000060000C07FC0000600
-00C03FE000060000C01FF000060000C01FF800060000C00FF800060000C007FC00060000
-C007FE00060000C003FE00060000C001FF00060000C001FF80060000C000FF80060000C0
-007FC0060000C0007FE0060000C0003FE0060000C0001FF0060000C0000FF8060000C000
-0FF8060000C00007FC060000C00003FE060000C00003FE060000C00001FF060000C00000
-FF860000C00000FF860000C000007FC60000C000003FE60000C000003FE60000C000001F
-F60000C000000FFE0000C000000FFE0000C0000007FE0000C0000003FE0000C0000003FE
-0000C0000001FE0000C0000000FE0000C0000000FE0000C00000007E0001E00000003E00
-03F00000003E000FFC0000001E00FFFFC000000E00FFFFC000000E00FFFFC00000060037
-397DB83E>I<FFFFFF0007FFFEFFFFFF0007FFFEFFFFFF0007FFFE01FF8000007FE000FF
-0000001F8000FF0000000F0000FF000000060000FF000000060000FF000000060000FF00
-0000060000FF000000060000FF000000060000FF000000060000FF000000060000FF0000
-00060000FF000000060000FF000000060000FF000000060000FF000000060000FF000000
-060000FF000000060000FF000000060000FF000000060000FF000000060000FF00000006
-0000FF000000060000FF000000060000FF000000060000FF000000060000FF0000000600
-00FF000000060000FF000000060000FF000000060000FF000000060000FF000000060000
-FF000000060000FF000000060000FF000000060000FF000000060000FF000000060000FF
-000000060000FF000000060000FF0000000E00007F0000000C00007F8000000C00007F80
-00001C00003F8000001C00003F8000001800001FC000003800001FC000007000000FE000
-00F0000007F00000E0000003F80001C0000001FC000780000000FE000F000000007F807E
-000000001FFFF80000000007FFE000000000007F800000373B7DB83E>85
-D<7FFFFF003FFFFC007FFFFF003FFFFC007FFFFF003FFFFC0000FFF80007FF8000007FE0
-0003FC0000003FE00001F00000001FF00001E00000001FF00001C00000000FF800018000
-000007FC00038000000007FC00070000000003FE00060000000003FE000E0000000001FF
-001C0000000000FF80180000000000FF803800000000007FC03000000000003FE0600000
-0000003FE0E000000000001FF0C000000000000FF18000000000000FFB80000000000007
-FF00000000000007FE00000000000003FE00000000000001FF00000000000001FF000000
-00000000FF800000000000007FC00000000000007FC0000000000000FFE0000000000000
-DFE00000000000019FF00000000000038FF80000000000030FF800000000000607FC0000
-0000000E03FE00000000000C03FE00000000001801FF00000000003800FF000000000030
-00FF800000000060007FC000000000E0007FC000000000C0003FE00000000180001FF000
-00000380001FF00000000300000FF800000006000007FC0000000E000007FC0000000C00
-0003FE0000001C000001FE0000003C000001FF000000FE000001FF800007FF800007FFE0
-00FFFFE0003FFFFF80FFFFE0003FFFFF80FFFFE0003FFFFF8039397EB83E>88
-D<001FE0000000FFFC000003E03F000007000F80000F8007E0001FC003F0001FE003F000
-1FE001F8001FE001F8001FE000FC000FC000FC00078000FC00000000FC00000000FC0000
-0000FC00000000FC0000007FFC000007FFFC00003FE0FC0000FE00FC0003F800FC000FF0
-00FC001FC000FC003FC000FC007F8000FC007F0000FC007F0000FC0CFE0000FC0CFE0000
-FC0CFE0000FC0CFE0001FC0CFE0001FC0CFF0003FC0C7F00077C0C7F80063E183FC01E3E
-180FE0781FF003FFF00FE0007F8007C026277DA52A>97 D<0003FC00001FFF80007E03E0
-01F8007003F000F807E001FC0FC003FC0FC003FC1F8003FC3F8003FC3F0001F87F0000F0
-7F0000007F0000007E000000FE000000FE000000FE000000FE000000FE000000FE000000
-FE000000FE000000FE000000FE0000007E0000007F0000007F0000003F0000063F800006
-1F80000E1FC0000C0FC0001C07E0003803F0007001F800E0007C07C0001FFF000007F800
-1F277DA525>99 D<0000000FC0000003FFC0000003FFC0000003FFC00000003FC0000000
-0FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000F
-C00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0
-0000000FC00003F80FC0001FFF0FC0007E078FC000F801EFC003F0007FC007E0003FC00F
-C0001FC00FC0001FC01F80000FC03F80000FC03F00000FC07F00000FC07F00000FC07E00
-000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE0000
-0FC0FE00000FC0FE00000FC0FE00000FC07E00000FC07F00000FC07F00000FC03F00000F
-C03F00000FC01F80001FC01F80001FC00FC0003FC007E0007FC003F000EFF001F801CFFF
-007C078FFF001FFE0FFF0007F80FC0283B7DB92E>I<0007F800001FFF00007C0FC001F8
-03E003F001F007E001F80FC000F81F80007C1F80007C3F00007E3F00003E7F00003E7F00
-003F7E00003FFE00003FFE00003FFE00003FFFFFFFFFFFFFFFFFFE000000FE000000FE00
-0000FE000000FE0000007E0000007E0000007F0000007F0000003F0000033F8000031F80
-00070FC0000607C0000E07E0001C01F0003800F80070007E03E0001FFF800003FC002027
-7EA525>I<00007E000003FF80000FC1E0001F87E0003F0FF0007E0FF0007E0FF000FC0F
-F000FC0FF001F803C001F8000001F8000001F8000001F8000001F8000001F8000001F800
-0001F8000001F8000001F8000001F8000001F8000001F80000FFFFFC00FFFFFC00FFFFFC
-0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
-0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
-0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
-0001F8000001F8000003FC00007FFFF8007FFFF8007FFFF8001C3B7FBA19>I<00000003
-F0000FF00FF8003FFC3C3C00F81F707C01F00FE07C03E007C07C07C003E0100FC003F000
-0FC003F0001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001F8001F
-8001F8001F8001F8000FC003F0000FC003F00007C003E00003E007C00003F00F800003F8
-1F0000073FFC0000060FF000000E000000000E000000000E000000000E000000000F0000
-00000F000000000FC000000007FFFFC00007FFFFF80003FFFFFE0001FFFFFF8003FFFFFF
-C00F80007FE01F00000FF03E000003F07C000001F07C000001F8F8000000F8F8000000F8
-F8000000F8F8000000F8F8000000F8FC000001F87C000001F03E000003E03F000007E00F
-80000F8007E0003F0001FC01FC00007FFFF0000007FF000026387EA52A>I<0380000FE0
-001FF0001FF0001FF0001FF0001FF0000FE0000380000000000000000000000000000000
-0000000000000000000000000000000003F000FFF000FFF000FFF00007F00003F00003F0
-0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
-0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
-0003F00003F00007F800FFFFC0FFFFC0FFFFC012387EB717>105
-D<03F000FFF000FFF000FFF0000FF00003F00003F00003F00003F00003F00003F00003F0
-0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
-0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
-0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
-0003F00003F00003F00003F00003F00003F00007F800FFFFC0FFFFC0FFFFC0123A7EB917
->108 D<03F00FF0001FE000FFF03FFC007FF800FFF0F03F01E07E00FFF1C01F83803F00
-0FF3800FC7001F8003F7000FCE001F8003FE000FDC001F8003FC0007F8000FC003FC0007
-F8000FC003F80007F0000FC003F80007F0000FC003F80007F0000FC003F00007E0000FC0
-03F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007
-E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC0
-03F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007
-E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC0
-03F00007E0000FC003F00007E0000FC007F8000FF0001FE0FFFFC1FFFF83FFFFFFFFC1FF
-FF83FFFFFFFFC1FFFF83FFFF40257EA445>I<0003FE0000000FFF8000003E03E00000F8
-00F80001F0007C0003E0003E0007C0001F000F80000F801F80000FC01F000007C03F0000
-07E03F000007E07E000003F07E000003F07E000003F07E000003F0FE000003F8FE000003
-F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8
-7E000003F07E000003F07F000007F03F000007E03F000007E01F80000FC00F80000F800F
-C0001F8007E0003F0003F0007E0000F800F800007E03F000001FFFC0000003FE00002527
-7EA52A>111 D<03F01FE000FFF07FF800FFF1E07E00FFF3801F8007F7000FC003FE0007
-E003FC0003F003F80003F803F00001F803F00001FC03F00000FC03F00000FE03F00000FE
-03F00000FE03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03
-F000007F03F000007F03F000007F03F000007F03F00000FE03F00000FE03F00000FE03F0
-0001FC03F00001FC03F80003F803F80003F003FC0007F003FE000FE003F6000FC003F780
-3F0003F1E07E0003F0FFF80003F01FC00003F000000003F000000003F000000003F00000
-0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
-07F8000000FFFFC00000FFFFC00000FFFFC0000028357EA42E>I<0003F800C0001FFE01
-C0007E0781C000FC01C3C003F000E3C007F00077C00FE00037C00FC0003FC01FC0001FC0
-3F80001FC03F80000FC07F00000FC07F00000FC07F00000FC0FE00000FC0FE00000FC0FE
-00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00
-000FC07F00000FC07F00000FC07F00000FC03F00000FC03F80001FC01F80001FC01FC000
-3FC00FC0003FC007E0007FC003F000EFC001F801CFC0007E078FC0001FFE0FC00007F80F
-C00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0
-0000000FC00000000FC00000000FC00000000FC00000001FE0000003FFFF000003FFFF00
-0003FFFF28357DA42C>I<07E01F00FFE07FC0FFE1E3E0FFE387F00FE707F003E607F003
-EE07F003EC03E003FC008003F8000003F8000003F8000003F8000003F0000003F0000003
-F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003
-F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000007
-F80000FFFFF000FFFFF000FFFFF0001C257EA421>I<00FF030003FFE7000F80FF001E00
-3F003C001F0078000F0070000700F0000700F0000700F0000300F8000300F8000300FC00
-0300FF0000007FE000007FFF00003FFFE0001FFFF8000FFFFC0003FFFE0000FFFF000007
-FF8000007F8000001F80C0000FC0C00007C0C00007C0E00003C0E00003C0E00003C0F000
-03C0F0000380F8000780FC000780FC000F00FF001E00F3C07C00E1FFF000C03F80001A27
-7DA521>I<00180000001800000018000000180000001800000038000000380000003800
-0000780000007800000078000000F8000001F8000003F8000007F800001FFFFF00FFFFFF
-00FFFFFF0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
-0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
-0001F8000001F800C001F800C001F800C001F800C001F800C001F800C001F800C001F800
-C001F800C000FC01C000FC0180007C0380007E0300003F0700000FFE000001F8001A347F
-B220>I<03F00007E000FFF001FFE000FFF001FFE000FFF001FFE0000FF0001FE00003F0
-0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0
-0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0
-0007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F0
-0007E00003F00007E00003F00007E00003F00007E00003F0000FE00003F0000FE00003F0
-000FE00003F0001FE00001F0001FE00001F8003FE00000F80077F80000FC00E7FF80003F
-03C7FF80001FFF87FF800003FC07E00029267EA42E>I<FFFF807FFF00FFFF807FFF00FF
-FF807FFF0003FE003FF00001FE001F800000FE001F0000007E001C0000003F0018000000
-1F80300000001FC0700000000FC0E000000007E0C000000007F18000000003FB80000000
-01FF0000000000FE0000000000FE00000000007F00000000003F00000000007F80000000
-007FC000000000CFC000000001C7E00000000383F00000000703F80000000601F8000000
-0C00FC0000001C007E00000038007F00000078003F000000F0001F800001F8001FC0000F
-F8003FF000FFFE00FFFF80FFFE00FFFF80FFFE00FFFF8029247FA32C>120
-D<FFFF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007C003F000038001F8000380
-01F800030001FC00030000FC00060000FC000600007E000C00007E000C00007F000C0000
-3F001800003F001800001F803000001F803000001FC07000000FC06000000FC060000007
-E0C0000007E0C0000007F1C0000003F180000003F180000001FB00000001FB00000001FF
-00000000FE00000000FE000000007C000000007C000000007C0000000038000000003800
-00000030000000003000000000700000000060000000006000000000C000000000C00000
-7C01C00000FE01800000FE03800000FE03000000FE06000000FC0E000000701C00000038
-380000001FF00000000FC000000027357EA32C>I<FFFFFFFFE00000FFFFFFFFFC0000FF
-FFFFFFFF000001FF80007FC00000FF00001FE00000FF00000FF00000FF000007F80000FF
-000003FC0000FF000003FC0000FF000001FE0000FF000001FE0000FF000001FF0000FF00
-0001FF0000FF000001FF0000FF000001FF0000FF000001FF0000FF000001FF0000FF0000
-01FF0000FF000001FE0000FF000003FE0000FF000003FC0000FF000007F80000FF00000F
-F00000FF00001FE00000FF00003FC00000FF0000FF800000FFFFFFFC000000FFFFFFFC00
-0000FF00007F800000FF00001FE00000FF000007F00000FF000003F80000FF000001FC00
-00FF000001FE0000FF000000FF0000FF000000FF0000FF000000FF8000FF0000007F8000
-FF0000007FC000FF0000007FC000FF0000007FC000FF0000007FC000FF0000007FC000FF
-0000007FC000FF0000007FC000FF0000007F8000FF000000FF8000FF000000FF8000FF00
-0001FF0000FF000001FE0000FF000003FE0000FF000007FC0000FF00001FF80001FF8000
-7FF000FFFFFFFFFFC000FFFFFFFFFF0000FFFFFFFFF8000032397DB83B>194
-D<0003FFFFFFFFFFF80003FFFFFFFFFFF80003FFFFFFFFFFF8000003C0000FFC00000001
-800007F800000001800007F800000001800007F800000001800007F800000001800007F8
-00000001800007F800000001800007F800000001800007F800000001800007F800000001
-800007F800000001800007F800000001800007F800000001800007F800000001000007F8
-00000003000007F800000003000007F800000003000007F800000003000007F800000003
-000007F800000003000007F800000003000007F800000003000007F800000006000007F8
-00000006000007F800000006000007F800000006000007F800000006000007F80000000C
-000007F80000000C000007F80000000C000007F80000000C000007F800000018000007F8
-00000018000007F800000018000007F800000030000007F800000030000007F800000030
-000007F800000060000007F800000060000007F8000000C0000007F8000000C0000007F8
-00000180000007F800000380000007F800000300000007F800000600000007F800000E00
-000007F800001C00000007F800003800000007F800007800000007F80000F80000000FFC
-003FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC3FE00000000007FC3F0000
-00000000FC7C0000000000003E780000000000001E780000000000001E70000000000000
-0E700000000000000E600000000000000660000000000000066000000000000006600000
-0000000006E000000000000007C000000000000003C000000000000003C0000000000000
-03C000000000000003404980B841>196 D<FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFF
-FFFE0001FF800007FE0000FF000000FE0000FF0000003F0000FF0000001F0000FF000000
-0F0000FF000000070000FF000000070000FF000000070000FF000000030000FF00000003
-0000FF000000030000FF000000038000FF000000018000FF0000C0018000FF0000C00180
-00FF0000C0018000FF0000C0000000FF0000C0000000FF0000C0000000FF0001C0000000
-FF0001C0000000FF0003C0000000FF000FC0000000FFFFFFC0000000FFFFFFC0000000FF
-FFFFC0000000FF000FC0000000FF0003C0000000FF0001C0000000FF0001C0000000FF00
-00C0000000FF0000C0000000FF0000C0006000FF0000C0006000FF0000C0006000FF0000
-C000E000FF00000000C000FF00000000C000FF00000000C000FF00000000C000FF000000
-01C000FF00000001C000FF00000001C000FF000000038000FF000000038000FF00000007
-8000FF000000078000FF0000000F8000FF0000003F8000FF0000007F8001FF800007FF00
-FFFFFFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFF0033397EB838>I<FFFFFF0001FFFF00
-FFFFFF0001FFFF00FFFFFF0001FFFF0001FF8000007FF00000FF0000003F800000FF0000
-003E000000FF0000003C000000FF00000038000000FF00000070000000FF000000E00000
-00FF000001C0000000FF00000380000000FF00000700000000FF00000E00000000FF0000
-1C00000000FF00003800000000FF00007000000000FF0000E000000000FF0001C0000000
-00FF00078000000000FF000E0000000000FF001C0000000000FF003E0000000000FF007E
-0000000000FF00FF0000000000FF01FF0000000000FF03FF8000000000FF077FC0000000
-00FF0E7FC000000000FF1C3FE000000000FF381FF000000000FF701FF000000000FFE00F
-F800000000FFC007FC00000000FF8007FC00000000FF0003FE00000000FF0001FF000000
-00FF0001FF00000000FF0000FF80000000FF00007FC0000000FF00007FC0000000FF0000
-3FE0000000FF00001FF0000000FF00001FF0000000FF00000FF8000000FF00000FF80000
-00FF000007FC000000FF000003FE000000FF000003FE000000FF000001FF000000FF0000
-00FF800000FF000000FFC00000FF000000FFE00001FF800001FFF000FFFFFF001FFFFF80
-FFFFFF001FFFFF80FFFFFF001FFFFF8039397DB841>202 D<FFFFFF003FFFFFC0FFFFFF
-003FFFFFC0FFFFFF003FFFFFC001FF8000007FE00000FF0000003FC00000FF0000003FC0
-0000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF00
-00003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC0
-0000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF00
-00003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC0
-0000FF0000003FC00000FF0000003FC00000FFFFFFFFFFC00000FFFFFFFFFFC00000FFFF
-FFFFFFC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC0
-0000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF00
-00003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC0
-0000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF00
-00003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC0
-0000FF0000003FC00000FF0000003FC00001FF8000007FE000FFFFFF003FFFFFC0FFFFFF
-003FFFFFC0FFFFFF003FFFFFC03A397DB841>205 D<FFFFFFFFFFFFFFC0FFFFFFFFFFFF
-FFC0FFFFFFFFFFFFFFC001FF8000007FE00000FF0000003FC00000FF0000003FC00000FF
-0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003F
-C00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF
-0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003F
-C00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF
-0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003F
-C00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF
-0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003F
-C00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF
-0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003F
-C00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF0000003FC00000FF
-0000003FC00000FF0000003FC00001FF8000007FE000FFFFFF003FFFFFC0FFFFFF003FFF
-FFC0FFFFFF003FFFFFC03A397DB841>207 D<000001FF80018000000FFFE0038000007F
-FFF803800001FF807E07800003FC000F0F80000FF000039F80001FE00001DF80003F8000
-00FF80007F0000007F8000FE0000003F8001FE0000003F8003FC0000001F8007F8000000
-0F8007F80000000F800FF000000007800FF000000007801FE000000007801FE000000003
-803FE000000003803FC000000003807FC000000001807FC000000001807FC00000000180
-7F800000000180FF800000000000FF800000000000FF800000000000FF800000000000FF
-800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80
-0000000000FF800000000000FF800000000000FF8000000000007F8000000000007FC000
-000001807FC000000001807FC000000001803FC000000001803FE000000001801FE00000
-0003801FE000000003000FF000000003000FF0000000070007F8000000070007F8000000
-060003FC0000000E0001FE0000001C0000FE0000001800007F0000003800003F80000070
-00001FE00000E000000FF00003C0000003FC000F80000001FF803F000000007FFFFC0000
-00000FFFF00000000001FF800000313D7BBA3C>209 D<001FE0000000FFFC000003E03F
-000007000F80000F8007E0001FC003F0001FE003F0001FE001F8001FE001F8001FE000FC
-000FC000FC00078000FC00000000FC00000000FC00000000FC00000000FC0000007FFC00
-0007FFFC00003FE0FC0000FE00FC0003F800FC000FF000FC001FC000FC003FC000FC007F
-8000FC007F0000FC007F0000FC0CFE0000FC0CFE0000FC0CFE0000FC0CFE0001FC0CFE00
-01FC0CFF0003FC0C7F00077C0C7F80063E183FC01E3E180FE0781FF003FFF00FE0007F80
-07C026277DA52A>224 D<00000000C000000007C00000003FC0000007FFC000007FFF80
-0003FFFF00000FFFFC00003FFFF00000FFFE000001FFC0000003FC00000007F00000000F
-C00000000F800000001F000000001E000000003C000000003C0000000038000000007800
-0000007003FE0000700FFF8000703E03E00060F800F80061F0007C00E3E0003E00E7C000
-1F00EF80000F80DF80000FC0DF000007C0FF000007E0FF000007E0FE000003F0FE000003
-F0FE000003F0FE000003F0FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8
-FE000003F8FE000003F8FE000003F8FE000003F87E000003F07E000003F07F000007F03F
-000007E03F000007E01F80000FC00F80000F800FC0001F8007E0003F0003F0007E0000F8
-00F800007E03F000001FFFC0000003FE0000253B7EB92A>I<FFFFFF8000FFFFFFF00007
-F801FC0003F0007E0003F0003F0003F0001F8003F0001FC003F0001FC003F0001FC003F0
-001FC003F0001FC003F0003F8003F0003F0003F000FE0003F003F80003FFFFC00003FFFF
-C00003F000F80003F0003E0003F0001F0003F0000FC003F0000FE003F00007E003F00007
-F003F00007F003F00007F003F00007F003F00007F003F00007E003F0000FE003F0000FC0
-03F0001FC003F0007F8007F800FE00FFFFFFFC00FFFFFFE00024247EA32A>I<FFFFFFFE
-FFFFFFFE07F800FE03F0001E03F0000E03F0000E03F0000603F0000703F0000703F00003
-03F0000303F0000303F0000303F0000303F0000003F0000003F0000003F0000003F00000
-03F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F00000
-03F0000003F0000003F0000003F0000003F0000007FC0000FFFFF000FFFFF00020247EA3
-25>I<003FFFFFFFE0003FFFFFFFE00001E003FC000000C001F8000000C001F8000000C0
-01F8000000C001F8000000C001F8000000C001F8000000C001F8000000C001F8000000C0
-01F8000000C001F8000000C001F8000000C001F80000008001F80000018001F800000180
-01F80000018001F80000018001F80000018001F80000030001F80000030001F800000300
-01F80000060001F80000060001F80000060001F800000C0001F800001C0001F800001800
-01F80000300001F80000F00001F80001E00001F80007E00003FC007FFFFFFFFFF07FFFFF
-FFFFF07F00000007F07C00000001F0700000000070700000000070600000000030E00000
-000038E00000000038E00000000038C00000000018C00000000018C00000000018C00000
-000018C000000000182D3180A32E>I<0007F800001FFF00007C0FC001F803E003F001F0
-07E001F80FC000F81F80007C1F80007C3F00007E3F00003E7F00003E7F00003F7E00003F
-FE00003FFE00003FFE00003FFFFFFFFFFFFFFFFFFE000000FE000000FE000000FE000000
-FE0000007E0000007E0000007F0000007F0000003F0000033F8000031F8000070FC00006
-07C0000E07E0001C01F0003800F80070007E03E0001FFF800003FC0020277EA525>I<3F
-FF00FFFFC03FFF003FFF00FFFFC03FFF0007FE0007F8001FF80001FC0003F0000FE00000
-7C0003F0000F8000001E0003F0001E0000000F0003F0003C000000078003F00078000000
-01C003F000E000000000E003F001C0000000007003F00380000000003C03F00F00000000
-000E03F01C00000000000F03F03C00000000001F83F07E00000000003FE3F1FF00000000
-003FF3F3FF00000000007F3BF73F8000000000FE1FFE1FC000000001FC0FFC0FE0000000
-01FC03F00FE000000003F803F007F000000007F003F003F80000000FE003F001FC000000
-0FE003F001FC0000001FC003F000FE0000003F8003F0007F0000007F0003F0003F800000
-7E0003F0001F800000FE0003F0001FC00001FC0003F0000FE00003FC0003F0000FF00007
-FC0003F0000FF8000FFC0007F8000FFC00FFFF00FFFFC03FFFC0FFFF00FFFFC03FFFC042
-247FA345>I<C07FF000E3FFFF00FF803FC0FC000FE0F80003F0F00003F8E00001F8E000
-01FCC00001FCC00001FC000001FC000001FC000001F8000003F0000007E000000FC00000
-3F00007FF800007FFC0000003F8000000FE0000003F0000001F8000001FC000000FC0000
-00FE000000FE000000FEC00000FEC00000FEC00000FEC00000FCE00001FC600001F87000
-03F03C000FE00F003FC003FFFF0000FFF0001F277EA525>I<FFFFC1FFFF80FFFFC1FFFF
-8007F8000FF00003F00007E00003F00007E00003F00007E00003F00007E00003F0000FE0
-0003F0001FE00003F0003FE00003F00077E00003F000E7E00003F000C7E00003F001C7E0
-0003F00387E00003F00707E00003F00E07E00003F00C07E00003F01807E00003F03807E0
-0003F07007E00003F0E007E00003F1C007E00003F18007E00003F38007E00003F70007E0
-0003FE0007E00003FC0007E00003F80007E00003F00007E00003F00007E00003F00007E0
-0003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF8029247EA32E>I<001E003C
-0000007F007F0000007F80FF000000FF80FF800000FF80FF800000FF80FF800000FF80FF
-8000007F007F0000003E003E0000001FFFFC00000007FFF000000000FF80000000000000
-0000000000000000000000000000000000000000FFFFC1FFFF80FFFFC1FFFF8007F8000F
-F00003F00007E00003F00007E00003F00007E00003F00007E00003F0000FE00003F0001F
-E00003F0003FE00003F00077E00003F000E7E00003F000C7E00003F001C7E00003F00387
-E00003F00707E00003F00E07E00003F00C07E00003F01807E00003F03807E00003F07007
-E00003F0E007E00003F1C007E00003F18007E00003F38007E00003F70007E00003FE0007
-E00003FC0007E00003F80007E00003F00007E00003F00007E00003F00007E00003F00007
-E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF8029347EB32E>I<FFFFC03FFF00FFFFC0
-3FFF0007F8001FF80003F0000FE00003F0000F800003F0001E000003F0003C000003F000
-78000003F000E0000003F001C0000003F00380000003F00F00000003F01C00000003F03C
-00000003F07E00000003F1FF00000003F3FF00000003F73F80000003FE1FC0000003FC0F
-E0000003F00FE0000003F007F0000003F003F8000003F001FC000003F001FC000003F000
-FE000003F0007F000003F0003F800003F0001F800003F0001FC00003F0000FE00003F000
-0FF00003F0000FF80007F8000FFC00FFFFC03FFFC0FFFFC03FFFC02A247EA32E>I<00FF
-FFFFFFC000FFFFFFFFC00003C007F80000018003F00000018003F00000018003F0000001
-8003F00000018003F00000018003F00000018003F00000018003F00000018003F0000001
-8003F00000018003F00000018003F00000018003F00000018003F00000018003F0000003
-8003F00000030003F00000030003F00000030003F00000030003F00000030003F0000003
-0003F00000070003F00000060003F00038060003F0007C060003F000FE060003F000FE0E
-0003F000FE0C0003F000FE1C0003F000F8180007F800703800FFFFC03FF000FFFFC01FC0
-000000002A257FA32E>I<FFF000000FFFFFF800001FFF07F800001FE003F800001FC003
-7C000037C0037C000037C0033E000067C0033E000067C0033E000067C0031F0000C7C003
-1F0000C7C0030F800187C0030F800187C0030F800187C00307C00307C00307C00307C003
-03E00607C00303E00607C00303E00607C00301F00C07C00301F00C07C00300F81807C003
-00F81807C00300F81807C003007C3007C003007C3007C003003E6007C003003E6007C003
-003E6007C003001FC007C003001FC007C007800F8007C00FC00F8007C01FE00F800FE0FF
-FC0701FFFFFFFC0701FFFF30247DA337>I<FFFFC1FFFF80FFFFC1FFFF8007F8000FF000
-03F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E000
-03F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E000
-03FFFFFFE00003FFFFFFE00003F00007E00003F00007E00003F00007E00003F00007E000
-03F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E000
-03F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E000
-07F8000FF000FFFFC1FFFF80FFFFC1FFFF8029247EA32E>I<0003FE0000000FFF800000
-3E03E00000F800F80001F0007C0003E0003E0007C0001F000F80000F801F80000FC01F00
-0007C03F000007E03F000007E07E000003F07E000003F07E000003F07E000003F0FE0000
-03F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003
-F8FE000003F87E000003F07E000003F07F000007F03F000007E03F000007E01F80000FC0
-0F80000F800FC0001F8007E0003F0003F0007E0000F800F800007E03F000001FFFC00000
-03FE000025277EA52A>I<FFFFFFFFFF80FFFFFFFFFF8007F8000FF00003F00007E00003
-F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
-F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
-F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
-F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
-F00007E00003F00007E00003F00007E00003F00007E00003F00007E00007F8000FF000FF
-FFC1FFFF80FFFFC1FFFF8029247EA32E>I<03F01FE000FFF07FF800FFF1E07E00FFF380
-1F8007F7000FC003FE0007E003FC0003F003F80003F803F00001F803F00001FC03F00000
-FC03F00000FE03F00000FE03F00000FE03F000007F03F000007F03F000007F03F000007F
-03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F00000FE03
-F00000FE03F00000FE03F00001FC03F00001FC03F80003F803F80003F003FC0007F003FE
-000FE003F6000FC003F7803F0003F1E07E0003F0FFF80003F01FC00003F000000003F000
-000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
-0003F000000003F000000007F8000000FFFFC00000FFFFC00000FFFFC0000028357EA42E
->I<0003FC00001FFF80007E03E001F8007003F000F807E001FC0FC003FC0FC003FC1F80
-03FC3F8003FC3F0001F87F0000F07F0000007F0000007E000000FE000000FE000000FE00
-0000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000007F00
-00007F0000003F0000063F8000061F80000E1FC0000C0FC0001C07E0003803F0007001F8
-00E0007C07C0001FFF000007F8001F277DA525>I<7FFFFFFFE07FFFFFFFE07E03FC07E0
-7801F801E07001F800E06001F800606001F80060E001F80070E001F80070C001F80030C0
-01F80030C001F80030C001F80030C001F800300001F800000001F800000001F800000001
-F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8
-00000001F800000001F800000001F800000001F800000001F800000001F800000001F800
-000001F800000007FE000003FFFFFC0003FFFFFC0024247EA329>I<FFFF803FFEFFFF80
-3FFE0FF8000FF807F00007E003F00003C003F000038001F800038001F800030001FC0003
-0000FC00060000FC000600007E000C00007E000C00007F000C00003F001800003F001800
-001F803000001F803000001FC07000000FC06000000FC060000007E0C0000007E0C00000
-07F1C0000003F180000003F180000001FB00000001FB00000001FF00000000FE00000000
-FE000000007C000000007C000000007C0000000038000000003800000000300000000030
-00000000700000000060000000006000000000C000000000C000007C01C00000FE018000
-00FE03800000FE03000000FE06000000FC0E000000701C00000038380000001FF0000000
-0FC000000027357EA32C>I<0000003F0000000000000FFF0000000000000FFF00000000
-00000FFF00000000000000FF000000000000003F000000000000003F000000000000003F
-000000000000003F000000000000003F000000000000003F000000000000003F00000000
-0000003F000000000000003F000000000000003F000000000000003F000000000000003F
-000000000000003F000000000000003F000000000000003F000000000000003F00000000
-0003F83F07F00000000FFE3F1FFC0000007F07BF783F800000FC01FFE00FC00001F800FF
-C007E00007F0007F8003F8000FE0007F8001FC000FC0003F0000FC001FC0003F0000FE00
-3F80003F00007F003F80003F00007F007F00003F00003F807F00003F00003F807F00003F
-00003F80FE00003F00001FC0FE00003F00001FC0FE00003F00001FC0FE00003F00001FC0
-FE00003F00001FC0FE00003F00001FC0FE00003F00001FC0FE00003F00001FC0FE00003F
-00001FC0FE00003F00001FC07F00003F00003F807F00003F00003F807F00003F00003F80
-3F80003F00007F003F80003F00007F001FC0003F0000FE000FC0003F0000FC000FE0007F
-8001FC0007F000FFC003F80001F800FFC007E00000FC01FFE00FC000007F07BF783F8000
-000FFE3F1FFC00000003F83F07F000000000003F000000000000003F000000000000003F
-000000000000003F000000000000003F000000000000003F000000000000003F00000000
-0000003F000000000000003F000000000000003F000000000000003F000000000000007F
-8000000000000FFFFC00000000000FFFFC00000000000FFFFC0000003A4A7DB941>I<FF
-FF807FFF00FFFF807FFF0007FF003FF00003FE001FC00001FC001F000000FE001E000000
-7E001C0000003F00180000001F80300000001FC0700000000FC0E000000007E0C0000000
-07F18000000003FB8000000001FF0000000000FE0000000000FE00000000007F00000000
-003F00000000007F80000000007FC000000000CFC000000001C7E00000000383F0000000
-0703F80000000601F80000000C00FC0000001C007E00000038007F00000078003F000000
-F0001F800001F0001FC00003F0001FE0001FF8003FF800FFFE00FFFF80FFFE00FFFF8029
-247FA32C>I<FFFFC1FFFF80FFFFC1FFFF8007F8000FF00003F00007E00003F00007E000
-03F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E000
-03F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E000
-03F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E000
-03F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E000
-03F00007E00003F00007E00003F00007E00003F00007E00007F8000FF000FFFFFFFFFFC0
-FFFFFFFFFFC0000000001FC00000000007C00000000001C00000000001C00000000000C0
-0000000000E00000000000E00000000000E0000000000060000000000060000000000060
-0000000000600000000000602B317EA32E>I<FFFFC1FFFF80FFFFC1FFFF8007F8000FF0
-0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
-0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
-0001F80007E00000F8001FE000007E00FFE000003FFFE7E0000007FF07E00000000007E0
-0000000007E00000000007E00000000007E00000000007E00000000007E00000000007E0
-0000000007E00000000007E00000000007E00000000007E00000000007E00000000007E0
-000000000FF000000001FFFF80000001FFFF8029247EA32E>I<FFFFC3FFFF0FFFFCFFFF
-C3FFFF0FFFFC07F8001FE0007F8003F0000FC0003F0003F0000FC0003F0003F0000FC000
-3F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0
-000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC000
-3F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0
-000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC000
-3F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0
-000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC000
-3F0007F8001FE0007F80FFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFC3E247EA343>I<FFFFC3
-FFFF0FFFFCFFFFC3FFFF0FFFFC07F8001FE0007F8003F0000FC0003F0003F0000FC0003F
-0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F000
-0FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F
-0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F000
-0FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F
-0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F000
-0FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F0003F0000FC0003F
-0003F0000FC0003F0007F8001FE0007F80FFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFE000000
-00000000FE000000000000003E000000000000000E000000000000000E00000000000000
-060000000000000007000000000000000700000000000000070000000000000003000000
-000000000300000000000000030000000000000003000000000000000340317EA343>I<
-7FFFFF0000007FFFFF0000007E03FC0000007801F80000007001F80000006001F8000000
-6001F8000000E001F8000000E001F8000000C001F8000000C001F8000000C001F8000000
-C001F8000000C001F80000000001F80000000001FFFFE0000001FFFFFC000001F800FF00
-0001F8003F800001F8001FC00001F8000FE00001F80007F00001F80007F00001F80003F8
-0001F80003F80001F80003F80001F80003F80001F80003F80001F80007F00001F80007F0
-0001F8000FE00001F8001FC00001F8003F800003FC00FF00007FFFFFFC00007FFFFFE000
-2D247EA333>I<FFFFC00007FFFFFFFFC00007FFFF07F80000003FC003F00000001FC003
-F00000001F8003F00000001F8003F00000001F8003F00000001F8003F00000001F8003F0
-0000001F8003F00000001F8003F00000001F8003F00000001F8003F00000001F8003F000
-00001F8003FFFFC0001F8003FFFFF8001F8003F001FE001F8003F0007F001F8003F0003F
-801F8003F0001FC01F8003F0000FE01F8003F0000FE01F8003F00007F01F8003F00007F0
-1F8003F00007F01F8003F00007F01F8003F00007F01F8003F0000FE01F8003F0000FE01F
-8003F0001FC01F8003F0003F801F8003F0007F001FC007F801FE003FC0FFFFFFF807FFFF
-FFFFFFC007FFFF38247EA33C>I<FFFFC00000FFFFC0000007F800000003F000000003F0
-00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
-000003F000000003F000000003F000000003FFFFC00003FFFFF80003F001FE0003F0007F
-0003F0003F8003F0001FC003F0000FE003F0000FE003F00007F003F00007F003F00007F0
-03F00007F003F00007F003F0000FE003F0000FE003F0001FC003F0003F8003F0007F0007
-F801FE00FFFFFFF800FFFFFFC00024247EA32A>I<003F8000C1FFF000E7C0FC00FE003F
-00FC001F80F8000FC0F00007E0E00007E0E00003F0C00003F8000001F8000001FC000001
-FC000001FC000000FC000000FE03FE00FE0FFF80FE0FFFFFFE003FFFFE000FFCFE0003C0
-FE000000FE000000FE000000FE000000FC000001FC000001FCC00001F8C00003F8E00003
-F0600007F0700007E038000FC01C001F800E003F0007C07C0001FFF000003FC0001F277E
-A525>I<000000001FE0000000000000FFFC0000FFFFC003F03F0000FFFFC007C00F8000
-07F8000F0003C00003F0001E0001E00003F0003E0001F00003F0007C0000F80003F000FC
-0000FC0003F000F800007C0003F001F800007E0003F001F800007E0003F003F000003F00
-03F003F000003F0003F003F000003F0003F007F000003F8003F007F000003F8003FFFFF0
-00003F8003FFFFF000003F8003F007F000003F8003F007F000003F8003F007F000003F80
-03F007F000003F8003F007F000003F8003F007F000003F8003F003F000003F0003F003F0
-00003F0003F003F800007F0003F001F800007E0003F001F800007E0003F000FC0000FC00
-03F0007C0000F80003F0007E0001F80003F0003E0001F00003F0001F0003E00007F80007
-C00F8000FFFFC003F03F0000FFFFC000FFFC0000000000001FE0000039277EA53E>I<00
-01FFFFFF80001FFFFFFF80007F000FF00000FC0007E00001F80007E00003F00007E00007
-F00007E00007F00007E00007F00007E00007F00007E00007F00007E00003F00007E00003
-F80007E00001F80007E00000FE0007E000003F8007E000000FFFFFE0000000FFFFE00000
-00FE07E0000000FC07E0000001F807E0000003F007E0000007F007E0000007E007E00000
-0FC007E000001F8007E000003F8007E000007F0007E000007E0007E00000FE0007E00001
-FC0007E00003F80007E00007F80007E0001FF8000FF000FFFF01FFFF80FFFF01FFFF8029
-247FA32D>I E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 1258 -45 a Fi
-(\321\357\360\340\342\356\367\355\350\352)27 b(\352)n
-(\356\354\340\355\344)g(GNU)h(Emacs)1583 55 y(\(\344\353\377)h
-(\342\345\360\361\350\350)e(22\))-128 330 y Fh(1)132
-b(\307\340\357\363)l(\361\352)45 b(Emacs)-128 511 y Fi(\304\353\377)28
-b(\347\340\357\363)n(\361\352)n(\340)e(GNU)i(Emacs)f(22,)g
-(\357\360\356\361\362\356)g(\355\340\341\345\360\350\362\345)h
-(\350\354\377)g(\357\360\356\343\360\340\354\354\373:)f
-Fg(emacs)-128 786 y Fh(2)132 b(\302\373\365)l(\356)l(\344)45
-b(\350\347)f(Emacs)-78 966 y Fi(\317\360\350\356\361\362)n
-(\340\355\356\342\350\362\374)26 b(\360\340\341\356\362\363)h(Emacs)g
-(\(\350\353\350)h(\361\342\345\360\355\363\362\374)f(\342)g(\350\352)n
-(\356\355\352\363)h(\357\360\350)g(\360\340\341\356\362\345)e(\342)h
-(X\))255 b Fg(C-z)-78 1065 y Fi(\302\373\351\362\350)28
-b(\350\347)g(Emacs)2307 b Fg(C-x)42 b(C-c)-128 1310 y
-Fh(3)132 b(\324\340\351\353\373)-78 1471 y Ff
-(\356\362\352\360\373\362\374)28 b Fi(\364\340\351\353)f(\342)g(Emacs)
-2014 b Fg(C-x)42 b(C-f)-78 1570 y Ff(\361\356)m
-(\365\360\340\355\350\362\374)29 b Fi(\364\340\351\353)e
-(\356\341\360\340\362\355\356)g(\355\340)g(\344\350\361\352)1627
-b Fg(C-x)42 b(C-s)-78 1670 y Fi(\361\356)n
-(\365\360\340\355\350\362\374)27 b Ff(\342\361\345)g
-Fi(\364\340\351\353\373)2104 b Fg(C-x)42 b(s)-78 1770
-y Ff(\342\361\362)m(\340\342\350\362\374)29 b Fi(\361\356)n
-(\344\345\360)n(\346\350\354\356\345)d(\344\360\363\343\356\343\356)h
-(\364\340\351\353\340)f(\342)h(\362\345\352\363\371\350\351)h
-(\341\363\364\345\360)809 b Fg(C-x)42 b(i)-78 1869 y
-Fi(\356\362\352\360\373\362\374)28 b(\355\363\346\355\373\351)g
-(\342\340\354)f(\364\340\351\353)g(\342\354\345\361\362\356)g
-(\362\345\352\363\371\345\343\356)1226 b Fg(C-x)42 b(C-v)-78
-1969 y Fi(\361\356)n(\365\360\340\355\350\362\374)27
-b(\341\363\364\345\360)f(\342)h(\363\352)n
-(\340\347\340\355\355\356\354)g(\364\340\351\353\345)1534
-b Fg(C-x)42 b(C-w)-78 2068 y Fi
-(\317\345\360\345\352\353\376\367\350\362\374)28 b
-(\361\356\361\362\356)n(\377\355\350\345)f(\341\363\364\345\360\340)f
-(\020\362\356\353\374\352)n(\356)g(\344\353\377)i
-(\367\362\345\355\350\377\021)928 b Fg(C-x)42 b(C-q)-128
-2314 y Fh(4)132 b(\317\356\353\363\367\345\355\350\345)43
-b(\357\356\354\356\371\350)-128 2496 y Fi
-(\321\357\360\340\342\356\367\355\340\377)19 b
-(\361\350\361\362\345\354\340)i(\344\356\361\362)n
-(\340\362\356\367\355\356)e(\357\360\356\361\362)n(\340.)h
-(H\340\346\354\350\362\345)i Fg(C-h)d Fi(\(\350\353\350)i
-Fg(F1)p Fi(\))f(\350)h(\361\353\345\344\363\351\362\345)g
-(\350\355\361\362\360\363\352\366\350\377\354.)g(\305\361\353\350)h
-(\342\373)d(\342)i(\357\345\360\342\373\351)-128 2595
-y(\360\340\347)28 b(\360\340\341\356\362)n(\340\345\362\345)e(\361)h
-(Emacs,)h(\362\356)g(\355\340\341\345\360\350\362\345)f
-Fg(C-u)42 b(C-h)g(t)i(Russian)c(RET)27 b Fi(\344\353\377)h
-(\342\373\347\356\342\340)d Ff(\363\367\345\341\355\350\352)m(\340)p
-Fi(.)-78 2689 y(\321\352\360\373\362\374)j(\356\352\355\356)f
-(\361\357\360\340\342\352\350)2104 b Fg(C-x)42 b(1)-78
-2789 y Fi(\317\360\356\352\360\363\362\350\362\374)28
-b(\356\352\355\356)f(\361\357\360\340\342\352\350)1940
-b Fg(C-M-v)-78 2889 y Fi(aprop)r(os:)26 b(\357\356\352)n
-(\340\347\340\362\374)g(\352)n(\356\354\340\355\344\373,)h
-(\361\356\356\362\342\345\362\361\362\342\363\376\371\350\345)g
-(\361\362\360\356\352)n(\345)921 b Fg(C-h)42 b(a)-78
-2988 y Fi(\357\356\352)n(\340\347\340\362\374)26 b(\350\354\377)i
-(\364\363\355\352\366\350\350,)g(\352)n(\356\362\356\360\340\377)f
-(\347\340\357\363)n(\361\352)n(\340\345\362\361)n(\377)e
-(\352\353\340\342\350\370\345\351)835 b Fg(C-h)42 b(k)-78
-3088 y Fi(\357\356\353\363\367\350\362\374)28 b
-(\350\355\364\356\360\354\340\366\350\376)f(\356)g
-(\364\363\355\352\366\350\350)1623 b Fg(C-h)42 b(f)-78
-3187 y Fi(\357\356\353\363\367\350\362\374)28 b
-(\350\355\364\356\360\354\340\366\350\376)f(\356)g
-(\360\345\346\350\354\345)1672 b Fg(C-h)42 b(m)-128 3434
-y Fh(5)132 b(\310\361\357\360\340\342\353\345\355\350\345)43
-b(\356\370\350\341\356\352)-78 3617 y Ff
-(\357\360\345\360\342\340\362\374)28 b Fi
-(\367\340\361\362\350\367\355\356)f
-(\355\340\341\360\340\355\355\363\376)g(\350\353\350)h
-(\350\361\357\356\353\355\377\345\354\363\376)g(\352)n
-(\356\354\340\355\344\363)682 b Fg(C-g)-78 3717 y Ff
-(\342\356\361\361\362)m(\340\355\356\342\350\362\374)29
-b Fi(\364\340\351\353,)e(\357\356\362\345\360)n(\377\355\355\373\351)g
-(\357\360\350)h(\352\360\340\365)n(\345)f(\361\350\361\362\345\354\373)
-895 b Fg(M-x)2857 3816 y(recover-file)-78 3916 y Ff
-(\356\362\354\345\355\350\362\374)27 b Fi(\355\345\346)n
-(\345\353\340\362\345\353\374\355\373\345)g
-(\350\347\354\345\355\345\355\350\377)1502 b Fg(C-x)42
-b(u,)h(C-_)2857 4016 y Fi(\350\353\350)g Fg(C-/)-78 4115
-y Fi(\342\356\361\361\362)n(\340\355\356\342\350\362\374)26
-b(\341\363\364\345\360)g(\342)h(\357\345\360\342\356\355\340)n
-(\367\340\353\374\355\356\345)e(\361\356\361\362\356)n
-(\377\355\350\345)1086 b Fg(M-x)2857 4215 y(revert-buffer)-78
-4315 y Fi(\357\345\360\345\360\350\361\356\342\340\362\374)27
-b(\347\340\357\356\353\355\345\355\355\373\351)g(\354\363)n
-(\361\356\360\356\354)f(\375\352\360\340\355)1321 b Fg(C-l)-128
-4560 y Fh(6)132 b(H\340\360\340\371\350\342\340\345\354\373\351)41
-b(\357\356\350\361\352)-78 4743 y Fi(\357\356\350\361\352)28
-b(\342\357\345\360\345\344)2436 b Fg(C-s)-78 4843 y Fi
-(\357\356\350\361\352)28 b(\355\340\347\340\344)2477
-b Fg(C-r)-78 4943 y Fi(\357\356\350\361\352)28 b(\357\356)f
-(\360\345\343\363)-5 b(\353\377\360\355\356\354\363)28
-b(\342\373\360\340\346)n(\345\355\350\376)f(\342\357\345\360\345\344)
-1335 b Fg(C-M-s)-78 5042 y Fi(\357\356\350\361\352)28
-b(\357\356)f(\360\345\343\363)-5 b(\353\377\360\355\356\354\363)28
-b(\342\373\360\340\346)n(\345\355\350\376)f(\355\340\347\340\344)1376
-b Fg(C-M-r)-78 5142 y Fi(\342\373\341\360\340\362\374)26
-b(\357\360\345\344\373\344\363\371\363\376)i(\361\362\360\356\352\363)g
-(\357\356\350\361\352)n(\340)1527 b Fg(M-p)-78 5241 y
-Fi(\342\373\341\360\340\362\374)26 b
-(\361\353\345\344\363\376\371\363\376)i(\361\362\360\356\352\363)g
-(\357\356\350\361\352)n(\340)1580 b Fg(M-n)-78 5341 y
-Fi(\357\360\345\352\360\340\362\350\362\374)28 b
-(\355\340\360\340\371\350\342\340\345\354\373\351)f
-(\357\356\350\361\352)1659 b Fg(RET)-78 5441 y Fi
-(\356\362\354\345\355\350\362\374)28 b(\375\364\364\345\352\362)g
-(\342\342\356)n(\344\340)d(\357\356\361\353\345\344\355\345\343\356)i
-(\361\350\354\342\356\353\340)1248 b Fg(DEL)-78 5540
-y Fi(\357\360\345\360\342\340\362\374)27 b
-(\362\345\352\363\371\350\351)h(\357\356\350\361\352)1994
-b Fg(C-g)-128 5636 y Fi(\304\353\377)26 b(\357\356\342\362\356\360\340)
-f(\357\356\350\361\352)n(\340)f(\342)i(\353\376\341\356\354)f
-(\355\340\357\360\340\342\353\345\355\350\350)h
-(\350\361\357\356\353\374\347\363\351\362\345)f
-(\352\353\340\342\350\370\350)g Fg(C-s)g Fi(\350\353\350)h
-Fg(C-r)p Fi(.)f(\305\361\353\350)h(Emacs)g(\342\361\345)f(\345\371\345)
-h(\357\360\356\350\347-)-128 5736 y(\342\356)n(\344\350\362)i
-(\357\356\350\361\352,)f Fg(C-g)f Fi(\356\362\354\345\355\350\362)j
-(\362\356\353\374\352)n(\356)e(\355\345)g
-(\342\373\357\356\353\355\345\355\355\363\376)g(\367\340\361\362\374.)
-1860 6192 y(1)p eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop -128 -45 a Fh(7)132 b
-(\317\345\360\345\354\345\371\345\355\350\345)-78 139
-y Ff(\345\344\350\355\350\366\373)32 b
-(\357\345\360\345\354\345\371\345\355\350\377)1944 b
-(\355\340\347\340\344)450 b(\342\357\345\360\345\344)-78
-239 y Fi(\361\350\354\342\356\353)2667 b Fg(C-b)558 b(C-f)-78
-338 y Fi(\361\353\356\342\356)2726 b Fg(M-b)558 b(M-f)-78
-438 y Fi(\361\362\360\356\352)n(\340)2683 b Fg(C-p)558
-b(C-n)-78 537 y Fi(\355\340)n(\367\340\353\356)26 b(\(\350\353\350)j
-(\352)n(\356\355\345\366\))e(\361\362\360\356\352\350)1916
-b Fg(C-a)558 b(C-e)-78 637 y Fi(\357\360\345\344\353\356)n(\346)n
-(\345\355\350\345)2441 b Fg(M-a)558 b(M-e)-78 737 y Fi
-(\340\341\347\340\366)2726 b Fg(M-{)558 b(M-})-78 836
-y Fi(\361\362\360\340\355\350\366\340)2589 b Fg(C-x)42
-b([)472 b(C-x)42 b(])-78 936 y Fi(\342\373\360\340\346)n
-(\345\355\350\345)27 b(\(sexp\))2261 b Fg(C-M-b)470 b(C-M-f)-78
-1036 y Fi(\364\363\355\352\366\350\377)2597 b Fg(C-M-a)470
-b(C-M-e)-78 1135 y Fi(\357\345\360\345\365)n(\356)n(\344)27
-b(\342)g(\355\340)n(\367\340\353\356)f(\(\350\353\350)i(\352)n
-(\356\355\345\366\))g(\341\363\364\345\360\340)1508 b
-Fg(M-<)558 b(M->)-78 1243 y Fi(\357\360\356\352\360\363\362\352)n(\340)
-27 b(\375\352\360\340\355\340)g(\342\355\350\347)2054
-b Fg(C-v)-78 1343 y Fi(\357\360\356\352\360\363\362\352)n(\340)27
-b(\375\352\360\340\355\340)g(\342\342\345\360)n(\365)2016
-b Fg(M-v)-78 1442 y Fi(\357\360\356\352\360\363\362\352)n(\340)27
-b(\342\353\345\342\356)2302 b Fg(C-x)42 b(<)-78 1542
-y Fi(\357\360\356\352\360\363\362\352)n(\340)27 b
-(\342\357\360\340\342\356)2251 b Fg(C-x)42 b(>)-78 1642
-y Fi(\363)n(\361\362)n(\340\355\356\342\352)n(\340)25
-b(\362\345\352\363\371\345\351)j(\361\362\360\356\352\350)g(\342)f
-(\366\345\355\362\360)i(\375\352\360\340\355\340)1329
-b Fg(C-u)42 b(C-l)-128 1887 y Fh(8)132 b(\323\355\350\367\362\356)l
-(\346)l(\345\355\350\345)44 b(\350)g(\363)-7 b
-(\344\340\353\345\355\350\345)-78 2070 y Ff(\363\355\350\367\362\356)m
-(\346)m(\340\345\354\373\351)33 b(\356\341\372\345\352\362)1956
-b(\355\340\347\340\344)450 b(\342\357\345\360\345\344)-78
-2170 y Fi(\361\350\354\342\356\353)27 b(\(\363)-5 b
-(\344\340\353\345\355\350\345,)28 b(\340)f(\355\345)h
-(\363\355\350\367\362\356)n(\346)n(\345\355\350\345\))1510
-b Fg(DEL)558 b(C-d)-78 2270 y Fi(\361\353\356\342\356)2726
-b Fg(M-DEL)470 b(M-d)-78 2369 y Fi(\361\362\360\356\352)n(\340)27
-b(\(\344\356)h(\352)n(\356\355\366\340)e(\361\362\360\356\352\350\))
-1972 b Fg(M-0)42 b(C-k)384 b(C-k)-78 2469 y Fi
-(\357\360\345\344\353\356)n(\346)n(\345\355\350\345)2441
-b Fg(C-x)42 b(DEL)384 b(M-k)-78 2569 y Fi(\342\373\360\340\346)n
-(\345\355\350\345)2512 b Fg(M\025)42 b(C-M-k)340 b(C-M-k)-78
-2676 y Fi(\363\355\350\367\362\356)n(\346\350\362\374)28
-b Ff(\356\341\353\340\361\362\374)2116 b Fg(C-w)-78 2776
-y Fi(\361\352)n(\356\357\350\360\356\342\340\362\374)26
-b(\356\341\353\340\361\362\374)g(\342)h(\361\357\350\361\356\352)h
-(\363\355\350\367\362\356)n(\346)n(\345\355\350\351)1265
-b Fg(M-w)-78 2876 y Fi(\363\355\350\367\362\356)n(\346\350\362\374)28
-b(\344\356)f(\361\353\345\344\363\376\371\345\343\356)g(\342\365)n
-(\356)n(\346\344\345\355\350\377)f(\361\350\354\342\356\353\340)h
-Fe(char)916 b Fg(M-z)42 b Fe(char)-78 2975 y Fi(\342\361\362)n
-(\340\342\350\362\374)27 b(\357\356\361\353\345\344\355\350\351)g
-(\363\355\350\367\362\356)n(\346)n(\345\355\355\373\351)h
-(\356\341\372\345\352\362)1306 b Fg(C-y)-78 3075 y Fi
-(\347\340\354\345\355\350\362\374)24 b(\362\356\353\374\352)n(\356)e
-(\367\362\356)i(\342\356\361\361\362)n
-(\340\355\356\342\353\345\355\355\373\351)d(\362\345\352)n(\361\362)k
-(\357\360\345\344\370\345\361\362\342\363\376\371\350\354)f
-(\363\355\350\367\362\356)n(\346)n(\345\355-)-78 3175
-y(\355\373\354)k(\362\345\352)n(\361\362\356\354)2857
-3075 y(M-y)-128 3420 y Fh(9)132 b(\317\356\354\345\362\352)l(\340)-78
-3580 y Fi(\363)n(\361\362)n(\340\355\356\342\350\362\374)26
-b(\357\356\354\345\362\352\350)2177 b Fg(C-@)42 b Fi(\350\353\350)i
-Fg(C-SPC)-78 3680 y Fi(\357\356\354\345\355\377\362\374)28
-b(\354\345\361\362)n(\340\354\350)g(\352\363\360\361\356\360)f(\350)h
-(\357\356\354\345\362\352\363)1541 b Fg(C-x)42 b(C-x)-78
-3779 y Fi(\357\356\354\345\362\350\362\374)28 b Fe(ar)l(g)36
-b Ff(\361\353\356\342)2219 b Fg(M-@)-78 3879 y Fi
-(\357\356\354\345\362\350\362\374)28 b Ff
-(\357\340\360\340\343\360\340\364)2144 b Fg(M-h)-78 3979
-y Fi(\357\356\354\345\362\350\362\374)28 b Ff
-(\361\362\360\340\355\350\366\363)2162 b Fg(C-x)42 b(C-p)-78
-4078 y Fi(\357\356\354\345\362\350\362\374)28 b Ff
-(\342\373\360\340\346)m(\345\355\350\345)2071 b Fg(C-M-@)-78
-4178 y Fi(\357\356\354\345\362\350\362\374)28 b Ff
-(\364\363\355\352\366\350\376)2148 b Fg(C-M-h)-78 4277
-y Fi(\357\356\354\345\362\350\362\374)28 b(\342\345\361\374)f
-Ff(\341\363\364\345\360)2102 b Fg(C-x)42 b(h)-128 4523
-y Fh(10)131 b(\307\340\354\345\355\340)44 b(\361)g
-(\347\340\357\360\356\361\356\354)-78 4706 y Fi
-(\350\355\362\345\360\340\352\362\350\342\355\340\377)28
-b(\347\340\354\345\355\340)f(\362\345\352)n(\361\362\356\342\356\351)g
-(\361\362\360\356\352\350)1398 b Fg(M-\045)-78 4806 y
-Fi(\361)28 b(\350\361\357\356\353\374\347\356\342\340\355\350\345\354)e
-(\360\345\343\363)-5 b(\353\377\360\355\373\365)27 b
-(\342\373\360\340\346)n(\345\355\350\351)1333 b Fg(M-x)42
-b(query-replace-r)o(ege)o(xp)-128 4901 y Fi(\302)28 b
-(\360\345\346\350\354\345)g
-(\350\355\362\345\360\340\352\362\350\342\355\356\351)g
-(\347\340\354\345\355\373)f
-(\357\356\353\374\347\356\342\340\362\345\353\376)f
-(\344\356\361\362\363\357\355\373)i
-(\361\353\345\344\363\376\371\350\345)g(\352)n
-(\356\354\340\355\344\373:)-78 4995 y Ff
-(\347\340\354\345\355\350\362\374)g Fi(\344\340\355\355\356\345)f
-(\361\356\356\362\342\345\362\361\362\342\350\345,)g
-(\357\345\360\345\351\362\350)h(\352)g
-(\361\353\345\344\363\376\371\345\354\363)815 b Fg(SPC)-78
-5095 y Fi(\347\340\354\345\355\350\362\374)28 b(\375\362\356)f
-(\361\356\356\362\342\345\362\361\362\342\350\345,)g(\355\345)h
-(\357\345\360\345\354\345\371\340\362\374\361)n(\377)1238
-b Fg(,)-78 5194 y Ff(\357\360\356\357\363)m(\361\362\350\362\374)29
-b Fi(\361\356\356\362\342\345\362\361\362\342\350\345)e(\341\345\347)g
-(\347\340\354\345\355\373)1487 b Fg(DEL)-78 5294 y Fi
-(\347\340\354\345\355\350\362\374)28 b(\342\361\345)f(\356\361\362)n
-(\340\342\370\350\345\361)n(\377)e
-(\361\356\356\362\342\345\362\361\362\342\350\377)1468
-b Fg(!)-78 5393 y Ff(\342\345\360\355\363\362\374\361)m(\377)29
-b Fi(\352)f(\357\360\345\344\373\344\363\371\345\354\363)f
-(\361\356\356\362\342\345\362\361\362\342\350\376)1337
-b Fg(\002)-78 5493 y Ff(\342\373\351\362\350)28 b Fi(\350\347)g
-(\360\345\346\350\354\340)f(\020\347\340\354\345\355\340)g(\361)g
-(\347\340\357\360\356\361\356\354\021)1453 b Fg(RET)-78
-5593 y Fi(\342\356\351\362\350)38 b(\342)g(\360\345\346\350\354)h
-(\360\345\352\363\360\361\350\342\355\356\343\356)d
-(\360\345\344\340\352\362\350\360\356\342\340\355\350\377)i
-(\(\344\353\377)g(\342\373\365)n(\356)n(\344\340)e
-(\350\361\357\356\353\374\347\363)n(\345\362\361)n(\377)-78
-5692 y Fg(C-M-c)p Fi(\))2857 5593 y Fg(C-r)1860 6192
-y Fi(2)p eop end
-%%Page: 3 3
-TeXDict begin 3 2 bop -128 -45 a Fh(11)131 b
-(\310\361\357\356\353\374\347\356\342\340\355\350\345)44
-b(\355\345\361\352)l(\356\353\374\352\350\365)g(\356\352)l(\356\355)
--128 137 y Fi(\312\356\354\340\355\344\373,)26 b
-(\357\360\350\342\345\344\345\355\355\373\345)h(\342\356)f
-(\342\362\356\360\356\354)g(\361\362\356\353\341\366\345,)g
-(\357\360\350\354\345\355\377\376\362\361)n(\377)i(\352)f
-(\344\360\363\343\356\354\363)f(\364\360\375\351\354\363)h
-(\(\356\352\355\363)f(\350\361\357\356\353\374\347\363)n
-(\345\354\356\351)g(\356\352)n(\356\355\355\356\351)-128
-237 y(\361\350\361\362\345\354\373\).)-78 336 y(\363)-5
-b(\344\340\353\350\362\374)28 b(\342\361\345)f(\356\361\362)n
-(\340\353\374\355\373\345)f(\356\352\355\340)1869 b Fg(C-x)42
-b(1)-78 444 y Fi(\360\340\347\341\350\362\374)27 b(\356\352\355\356)g
-(\357\356)g(\343\356\360\350\347\356\355\362)n(\340\353\350)1825
-b Fg(C-x)42 b(2)472 b(C-x)42 b(5)h(2)-78 543 y Fi(\363)-5
-b(\344\340\353\350\362\374)28 b(\344\340\355\355\356\345)f
-(\356\352\355\356)2143 b Fg(C-x)42 b(0)472 b(C-x)42 b(5)h(0)-78
-643 y Fi(\360\340\347\341\350\362\374)27 b(\356\352\355\356)g(\357\356)
-g(\342\345\360\362\350\352)n(\340\353\350)1904 b Fg(C-x)42
-b(3)-78 743 y Fi(\342\373\357\356\353\355\350\362\374)27
-b(\357\360\356\352\360\363\362\352\363)h(\342)f
-(\344\360\363\343\356\354)h(\356\352\355\345)1530 b Fg(C-M-v)-78
-850 y Fi(\357\345\360\345\354\345\361\362\350\362\374)29
-b(\352\363\360\361\356\360)e(\342)g(\344\360\363\343\356\345)g
-(\356\352\355\356)1629 b Fg(C-x)42 b(o)472 b(C-x)42 b(5)h(o)-78
-950 y Fi(\342\373\341\360\340\362\374)26 b(\341\363\364\345\360)h(\342)
-g(\344\360\363\343\356\354)h(\356\352\355\345)1795 b
-Fg(C-x)42 b(4)h(b)385 b(C-x)42 b(5)h(b)-78 1050 y Fi(\357\356\352)n
-(\340\347\340\362\374)26 b(\341\363\364\345\360)h(\342)g
-(\344\360\363\343\356\354)g(\356\352\355\345)1775 b Fg(C-x)42
-b(4)h(C-o)297 b(C-x)42 b(5)h(C-o)-78 1149 y Fi
-(\347\340\343\360\363\347\350\362\374)27 b(\364\340\351\353)g(\342)g
-(\344\360\363\343\356\345)g(\356\352\355\356)1786 b Fg(C-x)42
-b(4)h(f)385 b(C-x)42 b(5)h(f)-78 1249 y Fi
-(\356\362\352\360\373\362\374)28 b(\364\340\351\353)f(\342)g
-(\360\345\346\350\354\345)h(\367\362\345\355\350\377)h(\342)e
-(\344\360\363\343\356\354)g(\356\352\355\345)1149 b Fg(C-x)42
-b(4)h(r)385 b(C-x)42 b(5)h(r)-78 1349 y Fi(\347\340\357\363)n
-(\361\362\350\362\374)27 b(Dired)h(\342)f(\344\360\363\343\356\354)h
-(\356\352\355\345)1766 b Fg(C-x)42 b(4)h(d)385 b(C-x)42
-b(5)h(d)-78 1448 y Fi(\355\340\351\362\350)28 b(\362)n(\340\343)g(\342)
-f(\344\360\363\343\356\354)g(\356\352\355\345)2003 b
-Fg(C-x)42 b(4)h(.)385 b(C-x)42 b(5)h(.)-78 1556 y Fi
-(\363\342\345\353\350\367\350\362\374)28 b(\342\373\361\356\362\363)e
-(\356\352\355\340)2049 b Fg(C-x)42 b(\002)-78 1656 y
-Fi(\361\363\347\350\362\374)28 b(\362\345\352\363\371\345\345)f
-(\356\352\355\356)2148 b Fg(C-x)42 b({)-78 1755 y Fi
-(\360\340\361\370\350\360\350\362\374)28 b
-(\362\345\352\363\371\345\345)f(\356\352\355\356)1982
-b Fg(C-x)42 b(})-128 2001 y Fh(12)131 b
-(\324\356\360\354\340\362\350\360\356\342\340\355\350\345)-78
-2184 y Fi(\361)n(\344\345\353\340\362\374)27 b
-(\356\362\361\362\363\357)h(\344\353\377)g
-(\362\345\352\363\371\345\351)g Ff(\361\362\360\356\352\350)g
-Fi(\(\342)f(\347\340\342\350\361\350\354\356\361\362\350)g(\356\362)h
-(\360\345\346\350\354\340\))470 b Fg(TAB)-78 2284 y Fi(\361)n
-(\344\345\353\340\362\374)27 b(\356\362\361\362\363\357)h(\344\353\377)
-g Ff(\356\341\353\340\361\362\350)g Fi(\(\342)g
-(\347\340\342\350\361\350\354\356\361\362\350)f(\356\362)g
-(\360\345\346\350\354\340\))775 b Fg(C-M-)p Fd(n)-78
-2383 y Fi(\361)n(\344\345\353\340\362\374)27 b
-(\356\362\361\362\363\357)h(\344\353\377)g Ff(\342\373\360\340\346)m
-(\345\355\350\377)h Fi(\(\342)e
-(\347\340\342\350\361\350\354\356\361\362\350)g(\356\362)h
-(\360\345\346\350\354\340\))617 b Fg(C-M-q)-78 2483 y
-Fi(\361)n(\344\345\353\340\362\374)27 b(\356\362\361\362\363\357)h
-(\352)g(\347\340\344\340\355\355\356\351)e Fe(ar)l(g)36
-b Fi(\352)n(\356\353\356\355\352)n(\345)1445 b Fg(C-x)42
-b(TAB)-78 2583 y Fi(\342\361\362)n(\340\342\350\362\374)27
-b(\355\356\342\363\376)f(\361\362\360\356\352\363)i
-(\357\356\361\353\345)f(\352\363\360\361\356\360\340)1493
-b Fg(C-o)-78 2682 y Fi(\361)n(\344\342\350\355\363\362\374)27
-b(\356\361\362)n(\340\362\356\352)g(\361\362\360\356\352\350)h
-(\342\345\360\362\350\352)n(\340\353\374\355\356)e(\342\355\350\347)
-1293 b Fg(C-M-o)-78 2782 y Fi(\363)-5 b(\344\340\353\350\362\374)28
-b(\357\363)n(\361\362\373\345)f(\361\362\360\356\352\350)h
-(\342\356\352\360\363\343)f(\352\363\360\361\356\360\340)1442
-b Fg(C-x)42 b(C-o)-78 2882 y Fi
-(\356\341\372\345\344\350\355\350\362\374)27 b
-(\361\362\360\356\352\363)h(\361)f
-(\357\360\345\344\373\344\363\371\345\351)h(\(\361\356)f
-(\361\353\345\344\363\376\371\350\354\350)h(arg\))817
-b Fg(M-\002)-78 2981 y Fi(\363)-5 b(\344\340\353\350\362\374)28
-b(\357\363)n(\361\362\356\345)f
-(\357\360\356\361\362\360\340\355\361\362\342\356)g
-(\342\356\352\360\363\343)g(\352\363\360\361\356\360\340)1211
-b Fg(M-)p Fd(n)-78 3081 y Fi(\357\356\354\345\361\362\350\362\374)28
-b(\362\356\353\374\352)n(\356)f(\356)n(\344\350\355)g
-(\357\360\356\341\345\353)g(\342)g(\357\356\347\350\366\350\350)h
-(\352\363\360\361\356\360\340)1036 b Fg(M-SPC)-78 3180
-y Fi(\356\362\364\356\360\354\340\362\350\360\356\342\340\362\374)26
-b(\362\345\352\363\371\350\351)i(\357\340\360\340\343\360\340\364)1513
-b Fg(M-q)-78 3280 y Fi(\363)n(\361\362)n(\340\355\356\342\350\362\374)
-26 b(\361\362\356\353\341\345\366)h
-(\347\340\357\356\353\355\345\355\350\377)1739 b Fg(C-x)42
-b(f)-78 3380 y Fi(\363)n(\361\362)n(\340\355\356\342\350\362\374)26
-b(\357\360\345\364\350\352)n(\361)h
-(\347\340\357\356\353\355\345\355\350\377)g(\352)n
-(\340\346\344\356\351)g(\361\362\360\356\352\350)1108
-b Fg(C-x)42 b(.)-78 3479 y Fi(\363)n(\361\362)n
-(\340\355\356\342\350\362\374)26 b(\355\340)n(\367\345\360\362)n
-(\340\355\350\345)h(\(face\))1833 b Fg(M-g)-128 3725
-y Fh(13)131 b(\310\347\354\345\355\345\355\350\345)44
-b(\360\345\343\350\361\362\360\340)-78 3908 y Fi(\361)n
-(\344\345\353\340\362\374)27 b(\341\363\352\342\373)g
-(\361\353\356\342\340)f(\347\340\343)n(\353\340\342\355\373\354\350)
-1672 b Fg(M-u)-78 4008 y Fi(\361)n(\344\345\353\340\362\374)27
-b(\341\363\352\342\373)g(\361\353\356\342\340)f
-(\361\362\360\356\367\355\373\354\350)1704 b Fg(M-l)-78
-4107 y Fi(\361)n(\344\345\353\340\362\374)27 b
-(\357\345\360\342\363\376)g(\341\363\352\342\363)g
-(\361\353\356\342\340)f(\347\340\343)n(\353\340\342\355\356\351)1457
-b Fg(M-c)-78 4207 y Fi(\361)n(\344\345\353\340\362\374)27
-b(\341\363\352\342\373)g(\356\341\353\340\361\362\350)f(\347\340\343)n
-(\353\340\342\355\373\354\350)1585 b Fg(C-x)42 b(C-u)-78
-4307 y Fi(\361)n(\344\345\353\340\362\374)27 b(\341\363\352\342\373)g
-(\356\341\353\340\361\362\350)f(\361\362\360\356\367\355\373\354\350)
-1617 b Fg(C-x)42 b(C-l)-128 4553 y Fh(14)131 b
-(\314\350\355\350\341\363\364\345\360)-128 4735 y Fi
-(\321\353\345\344\363\376\371\350\345)28 b
-(\352\353\340\342\350\370\350)f(\(\352\353\376\367\350\))i
-(\356\357\360\345\344\345\353\345\355\373)e(\342)h
-(\354\350\355\350\341\363\364\345\360\345.)-78 4833 y
-(\344\356\357\356\353\355\350\362\374)f(\355\340\361\352)n
-(\356\353\374\352)n(\356)f(\342\356\347\354\356)n(\346\355\356)1727
-b Fg(TAB)-78 4933 y Fi(\344\356\357\356\353\355\350\362\374)27
-b(\344\356)h(\356)n(\344\355\356\343\356)e(\361\353\356\342\340)1907
-b Fg(SPC)-78 5033 y Fi(\344\356\357\356\353\355\350\362\374)27
-b(\350)h(\342\373\357\356\353\355\350\362\374)2026 b
-Fg(RET)-78 5132 y Fi(\357\356\352)n(\340\347\340\362\374)26
-b(\342\356\347\354\356)n(\346\355\373\345)g
-(\344\356\357\356\353\355\345\355\350\377)1677 b Fg(?)-78
-5232 y Fi(\342\373\341\360\340\362\374)26 b
-(\357\360\345\344\373\344\363\371\363\376)i(\361\362\360\356\352\363)g
-(\350\347)f(\350\361\362\356\360\350\350)h(\342\342\356)n(\344\340)1130
-b Fg(M-p)-78 5332 y Fi(\342\373\341\360\340\362\374)26
-b(\361\353\345\344\363\376\371\363\376)i(\361\362\360\356\352\363)g
-(\350\347)f(\350\361\362\356\360\350\350)h(\342\342\356)n(\344\340)1183
-b Fg(M-n)-78 5431 y Fi(\357\356\350\361\352)28 b(\342)f
-(\350\361\362\356\360\350\350)h(\357\356)f(\360\345\343\363)-5
-b(\353\377\360\355\356\354\363)28 b(\342\373\360\340\346)n
-(\345\355\350\376)f(\342)g(\356\341\360\340\362\355\356\354)g
-(\355\340\357\360\342\353\345\355\350\350)293 b Fg(M-r)-78
-5531 y Fi(\357\356\350\361\352)28 b(\342)f
-(\350\361\362\356\360\350\350)h(\357\356)f(\360\345\343\363)-5
-b(\353\377\360\355\356\354\363)28 b(\342\373\360\340\346)n
-(\345\355\350\376)f(\342)g(\357\360)n(\377\354\356\354)h
-(\355\340\357\360\342\353\345\355\350\350)361 b Fg(M-s)-78
-5630 y Fi(\357\360\345\360\342\340\362\374)27 b(\352)n
-(\356\354\340\355\344\363)2247 b Fg(C-g)-128 5726 y Fi
-(\315\340\341\345\360\350\362\345)31 b Fg(C-x)42 b(ESC)g(ESC)30
-b Fi(\344\353\377)i
-(\360\345\344\340\352\362\350\360\356\342\340\355\350\377)e(\350)h
-(\357\356\342\362\356\360\345\355\350\377)g
-(\357\356\361\353\345\344\355\345\351)g(\352)n
-(\356\354\340\355\344\373)f(\355\340\341\360\340\355\355\356\351)g
-(\342)h(\354\350\355\350\341\363\364\345\360\345.)-128
-5826 y(\315\340\341\345\360\350\362\345)c Fg(F10)p Fi(,)g
-(\367\362\356\341\373)g(\360\340\341\356\362)n(\340\362\374)f(\361)h
-(\357\363\355\352\362)n(\340\354\350)h(\354\345\355\376)h(\357\360\350)
-f(\357\356\354\356\371\350)f(\352)n(\356\354\340\355\344)g
-(\354\350\355\350\341\363\364\345\360\340.)1860 6192
-y(3)p eop end
-%%Page: 4 4
-TeXDict begin 4 3 bop -128 -45 a Fh(15)131 b(\301\363\364\345\360\340)
--78 139 y Fi(\342\373\341\360\340\362\374)26 b
-(\344\360\363\343\356\351)i(\341\363\364\345\360)2071
-b Fg(C-x)42 b(b)-78 239 y Fi(\342\373\344\340\362\374)27
-b(\361\357\350\361\356\352)g(\342\361\345\365)g
-(\341\363\364\345\360\356\342)1849 b Fg(C-x)42 b(C-b)-78
-338 y Fi(\363\355\350\367\362\356)n(\346\350\362\374)28
-b(\341\363\364\345\360)2212 b Fg(C-x)42 b(k)-128 583
-y Fh(16)131 b(\317\345\360\345\361\362)l(\340\355\356\342\352)l(\340)44
-b(\344\340\355\355\373\365)-78 767 y Fi
-(\356\341\354\345\355\377\362\374)27 b(\354\345\361\362)n(\340\354\350)
-h Ff(\361\350\354\342\356\353\373)1842 b Fg(C-t)-78 867
-y Fi(\356\341\354\345\355\377\362\374)27 b(\354\345\361\362)n
-(\340\354\350)h Ff(\361\353\356\342\340)1982 b Fg(M-t)-78
-966 y Fi(\356\341\354\345\355\377\362\374)27 b(\354\345\361\362)n
-(\340\354\350)h Ff(\361\362\360\356\352\350)1925 b Fg(C-x)42
-b(C-t)-78 1066 y Fi(\356\341\354\345\355\377\362\374)27
-b(\354\345\361\362)n(\340\354\350)h Ff(\342\373\360\340\346)m
-(\345\355\350\377)1727 b Fg(C-M-t)-128 1311 y Fh(17)131
-b(\317\360\356\342\345\360\352)l(\340)44 b
-(\357\360\340\342\356\357\350\361\340\355\350\377)-78
-1495 y Fi(\357\360\356\342\345\360\350\362\374)27 b
-(\362\345\352\363\371\345\345)h(\361\353\356\342\356)1974
-b Fg(M-$)-78 1594 y Fi(\357\360\356\342\345\360\350\362\374)27
-b(\342\361\345)g(\361\353\356\342\340)f(\342)i
-(\356\341\353\340\361\362\350)1776 b Fg(M-x)42 b(ispell-region)-78
-1694 y Fi(\342\373\357\356\353\355\350\362\374)27 b
-(\357\360\356\342\345\360\352\363)g(\342\361\345\343\356)f
-(\341\363\364\345\360\340)1624 b Fg(M-x)42 b(ispell-buffer)-128
-1939 y Fh(18)131 b(\322)-11 b(\345\343\350)-78 2099 y
-Fi(\355\340\351\362\350)28 b
-(\356\357\360\345\344\345\353\345\355\350\345)g(\362\345\343)n(\340)
-2037 b Fg(M-.)-78 2199 y Fi(\355\340\351\362\350)28 b
-(\361\353\345\344\363\376\371\345\345)g(\342\365)n(\356)n
-(\346\344\345\355\350\345)e(\362\345\343)n(\340)1659
-b Fg(C-u)42 b(M-.)-78 2299 y Fi
-(\350\361\357\356\353\374\347\356\342\340\362\374)26
-b(\355\356\342\373\351)g(\364\340\351\353)h(\361)h(\362\345\343)n
-(\340\354\350)1595 b Fg(M-x)42 b(visit-tags-tabl)o(e)-78
-2398 y Fi(\357\356\350\361\352)28 b(\357\356)f
-(\370\340\341\353\356\355\363)f(\357\356)h(\342\361\345\351)g(\362)n
-(\340\341\353\350\366\345)g(\362\345\343\356\342)1392
-b Fg(M-x)42 b(tags-search)-78 2498 y Fi
-(\342\373\357\356\353\355\350\362\374)27 b(query-replace)f
-(\355\340\344)h(\342\361\345\354\350)g(\364\340\351\353\340\354\350)
-1237 b Fg(M-x)42 b(tags-query-repl)o(ace)-78 2597 y Fi(\357\360\356)n
-(\344\356\353\346\350\362\374)27 b(\357\356\350\361\352)h(\350\353\350)
-g(\357\356\350\361\352-\347\340\354\345\355\363)e(\362\345\343)n(\340)
-1346 b Fg(M-,)-128 2843 y Fh(19)131 b
-(\312\356\354\340\355\344\355\373\345)43 b
-(\357\360\356\366\345\361\361\356\360\373)-78 3026 y
-Fi(\302\373\357\356\353\355\350\362\374)28 b(\352)n
-(\356\354\340\355\344\363)e(\352)n
-(\356\354\340\355\344\355\356\343\356)g
-(\357\360\356\366\345\361\361\356\360\340)1245 b Fg(M-!)-78
-3126 y Fi(\342\373\357\356\353\355\350\362\374)27 b(\352)n
-(\356\354\340\355\344\363)g(\352)n
-(\356\354\340\355\344\355\356\343\356)f
-(\357\360\356\366\345\361\361\356\360\340)g(\355\340\344)i
-(\356\341\353\340\361\362\374\376)720 b Fg(M-|)-78 3225
-y Fi(\357\360\356\357\363)n(\361\362\350\362\374)28 b(\361\356)n
-(\344\345\360)n(\346\350\354\356\345)e(\356\341\353\340\361\362\350)h
-(\367\345\360\345\347)h(\352)n(\356\354\340\355\344\363)f(\352)n
-(\356\354\340\355\344\355\356\343\356)f
-(\357\360\356\366\345\361\361\356\360\340)210 b Fg(C-u)42
-b(M-|)-78 3325 y Fi(\347\340\357\363)n(\361\362\350\362\374)27
-b(\352)n(\356\354\340\355\344\355\373\351)h
-(\357\360\356\366\345\361\361\356\360)e(\342)i(\356\352\355\345)f
-Fg(*shell*)1098 b(M-x)42 b(shell)-128 3571 y Fh(20)131
-b(\317\360)l(\377\354\356\363\343\356\353\374\355\373\345)44
-b(\356\341\353\340\361\362\350)-78 3755 y Fi(\361\352)n
-(\356\357\350\360\356\342\340\362\374)26 b(\357\360)n
-(\377\354\356\363\343\356\353\374\355\363\376)g
-(\356\341\353\340\361\362\374)g(\342)i(\360\345\343\350\361\362\360)
-1140 b Fg(C-x)42 b(r)h(r)-78 3854 y Fi(\363)-5 b
-(\344\340\353\350\362\374)28 b(\357\360)n
-(\377\354\356\363\343\356\353\374\355\363\376)e
-(\356\341\353\340\361\362\374)1692 b Fg(C-x)42 b(r)h(k)-78
-3954 y Fi(\342\361\362)n(\340\342\350\362\374)27 b
-(\357\356\361\353\345\344\355\363\376)g(\363\355\350\367\362\356)n
-(\346)n(\345\355\355\363\376)h(\357\360)n
-(\377\354\356\363\343\356\353\374\355\363\376)e
-(\356\341\353\340\361\362\374)638 b Fg(C-x)42 b(r)h(y)-78
-4054 y Fi(\356\362\352\360\373\362\374)28 b(\357\360)n
-(\377\354\356\363\343\356\353\374\355\363\376)e
-(\356\341\353\340\361\362\374,)h(\361)n(\344\342\350\343)n(\340\377)f
-(\362\345\352)n(\361\362)i(\342\357\360\340\342\356)821
-b Fg(C-x)42 b(r)h(o)-78 4153 y Fi(\356\367\350\361\362\350\362\374)28
-b(\357\360)n(\377\354\356\363\343\356\353\374\355\363\376)f
-(\356\341\353\340\361\362\374)1652 b Fg(C-x)42 b(r)h(c)-78
-4253 y Fi(\357\360\345\344\342\340\360\350\362\374)27
-b(\352)n(\340\346\344\363\376)h(\361\362\360\356\352\363)f
-(\361\362\360\356\352)n(\356\351)g(\362\345\352)n(\361\362)n(\340)1291
-b Fg(C-x)42 b(r)h(t)-128 4498 y Fh(21)131 b
-(\321\356\352\360\340\371\345\355\350\377)-78 4682 y
-Fi(\344\356\341\340\342\350\362\374)26 b(\343)n
-(\353\356\341\340\353\374\355\356\345)f
-(\361\356\352\360\340\371\345\355\350\345)1675 b Fg(C-x)42
-b(a)h(g)-78 4781 y Fi(\344\356\341\340\342\350\362\374)26
-b(\353\356\352)n(\340\353\374\355\356\345)g(\344\353\377)i
-(\360\345\346\350\354\340)f(\361\356\352\360\340\371\345\355\350\345)
-1220 b Fg(C-x)42 b(a)h(l)-78 4881 y Fi
-(\344\356\341\340\342\350\362\374)26 b(\343)n
-(\353\356\341\340\353\374\355\356\345)f(\347\355\340)n
-(\367\345\355\350\345)i(\344\353\377)h(\344\340\355\355\356\343\356)e
-(\361\356\352\360\340\371\345\355\350\377)813 b Fg(C-x)42
-b(a)h(i)g(g)-78 4981 y Fi(\344\356\341\340\342\350\362\374)26
-b(\361\357\345\366\350\364\350\367\345\361\352)n(\356\345)h
-(\344\353\377)h(\360\345\346\350\354\340)f(\347\355\340)n
-(\367\345\355\350\345)g(\344\340\355\355\356\343\356)g
-(\361\356\352\360\340\371\345\355\350\377)342 b Fg(C-x)42
-b(a)h(i)g(l)-78 5080 y Fi(\377\342\355\356)27 b(\342\361\362)n
-(\340\342\350\362\374)f(\347\355\340)n(\367\345\355\350\345)h
-(\344\353\377)h(\361\356\352\360\340\371\345\355\350\377)1395
-b Fg(C-x)42 b(a)h(e)-78 5180 y Fi
-(\344\350\355\340\354\350\367\345\361\352\350)28 b
-(\344\356\357\356\353\355\350\362\374)g
-(\357\360\345\344\373\344\363\371\345\345)f(\361\353\356\342\356)1287
-b Fg(M-/)1860 6192 y Fi(4)p eop end
-%%Page: 5 5
-TeXDict begin 5 4 bop -128 -45 a Fh(22)131 b(\320)l(\345\343\363)-7
-b(\353\377\360\355\373\345)44 b(\342\373\360\340\346)l
-(\345\355\350\377)-78 139 y Fi(\353\376\341\356\351)27
-b(\356)n(\344\350\355\356\367\355\373\351)g(\361\350\354\342\356\353)g
-(\(\347\340)h(\350\361\352\353\376\367\345\355\350\345\354)g
-(\361\350\354\342\356\353\340)f(\355\356\342\356\351)f
-(\361\362\360\356\352\350\))388 b Fg(.)43 b Fi(\(dot\))-78
-239 y(\355\356\353\374)27 b(\350\353\350)h(\341\356\353\345\345)f
-(\357\356\342\362\356\360\345\355\350\351)1901 b Fg(*)-78
-338 y Fi(\356)n(\344\355\356)27 b(\350\353\350)h(\341\356\353\345\345)e
-(\357\356\342\362\356\360\345\355\350\351)1904 b Fg(+)-78
-438 y Fi(\355\356\353\374)27 b(\350\353\350)h(\356)n(\344\355\356)f
-(\357\356\342\362\356\360\345\355\350\345)1940 b Fg(?)-78
-537 y Fi(\375\352\360\340\355\350\360\356\342\340\362\374)26
-b(\361\357\345\366\350\340\353\374\355\373\351)h
-(\361\350\354\342\356\353)h Fe(c)1536 b Fd(n)p Fe(c)-78
-637 y Fi(\342\373\341\356\360)26 b(\354\345\346\344\363)i(\340\353\374)
-n(\362\345\360\355\340\362\350\342\340\354\350)f
-(\(\020\350\353\350\021\))1501 b Fd(nj)-78 737 y Fi
-(\343\360\363\357\357\350\360\356\342\352)n(\340)2454
-b Fd(n)p Fg(\()42 b Fc(:)14 b(:)g(:)44 b Fd(n)p Fg(\))-78
-836 y Fi(\362\345\352)n(\361\362)29 b(\342)e Fe(n)6 b
-Fi(-\351)27 b(\343\360\363\357\357\345)2227 b Fd(n)p
-Fe(n)-78 936 y Fi(\343\360\340\355\350\366\340)27 b
-(\361\353\356\342\340)2394 b Fd(n)p Fg(b)-78 1036 y Fi(\355\345)28
-b(\343\360\340\355\350\366\340)f(\361\353\356\342\340)2283
-b Fd(n)p Fg(B)-78 1144 y Ff(\356\341\372\345\352\362)2640
-b(\355\340)m(\367\340\353\356)79 b(\361\356\356\362-)2857
-1243 y(\342\345\362\361\362\342\350\377)3547 1144 y(\352)m
-(\356\355\345\366)127 b(\361\356\356\362-)3547 1243 y
-(\342\345\362\361\362\342\350\377)-78 1343 y Fi(\361\362\360\356\352)n
-(\340)2683 b Fg(\002)645 b($)-78 1442 y Fi(\361\353\356\342\356)2726
-b Fd(n)p Fg(<)604 b Fd(n)p Fg(>)-78 1542 y Fi(\341\363\364\345\360)2701
-b Fd(n)p Fg(`)604 b Fd(n)p Fg(')-78 1650 y Ff(\352\353\340\361\361)33
-b(\361\350\354\342\356\353\356\342)2262 b
-(\361\356\356\362\342\345\362-)2857 1750 y(\361\362\342\363)m(\345\362)
-32 b(\350\354)3547 1650 y(\361\356\356\362\342\345\362-)3547
-1750 y(\361\362\342\363)m(\345\362)131 b(\344\360\363-)3547
-1849 y(\343\350\354)-78 1949 y Fi(\377\342\355\373\351)28
-b(\355\340\341\356\360)2450 b Fg([)43 b Fc(:)14 b(:)g(:)43
-b Fg(])419 b([\002)p Fc(:)14 b(:)g(:)41 b Fg(])-78 2048
-y Fi(\361\350\354\342\356\353-\341\363\352\342\340)2423
-b Fd(n)p Fg(w)604 b Fd(n)p Fg(W)-78 2148 y Fi(\361\350\354\342\356\353)
-27 b(\361)h(\361\350\355\362)n(\340\352)n(\361\350\361\356\354)f
-Fe(c)2039 b Fd(n)p Fg(s)p Fe(c)566 b Fd(n)p Fg(S)p Fe(c)-128
-2394 y Fh(23)131 b(\314\345\346\344\363\355\340\360\356)l
-(\344\355\373\345)43 b(\355\340\341\356\360\373)g
-(\361\350\354\342\356\353\356\342)-78 2578 y Fi
-(\342\373\341\360\340\362\374)26 b(\377\347\373\352)2406
-b Fg(C-x)42 b(RET)g(l)-78 2677 y Fi(\357\356\352)n
-(\340\347\340\362\374)26 b(\342\361\345)h(\342\356\347\354\356)n
-(\346\355\373\345)f(\354\345\362\356)n(\344\373)i(\342\342\356)n
-(\344\340)1457 b Fg(M-x)42 b(list-input-meth)o(ods)-78
-2777 y Fi(\360\340\347\360\345\370\350\362\374)27 b(\350\353\350)h
-(\347\340\357\360\345\362\350\362\374)g(\354\345\362\356)n(\344)g
-(\342\342\356)n(\344\340)1473 b Fg(C-)p Fd(n)-78 2877
-y Fi(\363)n(\361\362)n(\340\355\356\342\350\362\374)26
-b(\361\350\361\362\345\354\363)i(\352)n(\356)n
-(\344\350\360\356\342\340\355\350\377)e(\344\353\377)i
-(\361\353\345\344\363\376\371\345\351)f(\352)n
-(\356\354\340\355\344\373)705 b Fg(C-x)42 b(RET)g(c)-78
-2976 y Fi(\357\356\352)n(\340\347\340\362\374)26 b
-(\361\357\350\361\356\352)i(\342\361\345\365)e
-(\361\350\361\362\345\354)j(\352)n(\356)n
-(\344\350\360\356\342\340\355\350\377)1338 b Fg(M-x)42
-b(list-coding-sys)o(tem)o(s)-78 3076 y Fi(\342\373\341\360\340\362\374)
-26 b(\357\360\345\344\357\356\367\362\350\362\345\353\374\355\363\376)j
-(\361\350\361\362\345\354\363)f(\352)n(\356)n
-(\344\350\360\356\342\340\355\350\377)1041 b Fg(M-x)42
-b(prefer-coding-s)o(yst)o(em)-128 3329 y Fh(24)131 b
-(\310\355\364\356\360\354\340\366\350\377)44 b
-(\(\361\350\361\362\345\354\340)g(Info\))-78 3519 y Fi
-(\347\340\357\363)n(\361\362\350\362\374)27 b
-(\361\350\361\362\345\354\363)i(\344\356\361\362\363\357\340)e(\352)g
-(\344\356\352\363\354\345\355\362)n(\340\366\350\350)1275
-b Fg(C-h)42 b(i)-78 3619 y Fi(\355\340\351\362\350)28
-b(\363\352)n(\340\347\340\355\355\363\376)f
-(\364\363\355\352\366\350\376)g(\350\353\350)h
-(\357\345\360\345\354\345\355\355\363\376)h(\342)e
-(\344\356\352\363\354\345\355\362)n(\340\366\350\350)615
-b Fg(C-h)42 b(S)-128 3719 y Fi
-(\317\345\360\345\354\345\371\345\355\350\345)28 b
-(\342\355\363\362\360\350)f(\363\347\353\340)g(\(\355\356)n
-(\344\340\354\350\):)-78 3818 y(\357\360\356\352\360\363\362\352)n
-(\340)g(\342\357\345\360\345\344)2257 b Fg(SPC)-78 3917
-y Fi(\357\360\356\352\360\363\362\352)n(\340)27 b(\355\340\347\340\344)
-2298 b Fg(DEL)-78 4017 y Fi(\357\345\360\345\351\362\350)29
-b(\352)e(\355\340)n(\367\340\353\363)g(\363\347\353\340)2074
-b Fg(.)43 b Fi(\(dot\))-128 4112 y
-(\317\345\360\345\354\345\371\345\355\350\345)28 b
-(\354\345\346\344\363)g(\363\347\353\340\354\350:)-78
-4206 y Ff(\361\353\345\344\363\376\371\350\351)f Fi(\363\347\345\353)
-2245 b Fg(n)-78 4306 y Ff(\357\360\345\344\373\344\363\371\350\351)27
-b Fi(\363\347\345\353)2184 b Fg(p)-78 4405 y Fi
-(\357\345\360\345\351\362\350)29 b(\352)e Ff(\342\345\360)m
-(\365\355\345\354\363)h Fi(\363\347\353\363)1932 b Fg(u)-78
-4505 y Fi(\342\373\341\360\340\362\374)26 b(\357\363\355\352\362)j
-(\354\345\355\376)f(\357\356)f(\350\354\345\355\350)1769
-b Fg(m)-78 4605 y Fi(\342\373\341\360\340\362\374)26
-b Fe(n)6 b Fi(-\351)28 b(\357\363\355\352\362)g(\354\345\355\376)h
-(\357\356)e(\355\356\354\345\360\363)g(\(1\0259\))1357
-b Fe(n)-78 4704 y Fi(\357\345\360\345\351\362\350)29
-b(\357\356)e(\361\361\373\353\352)n(\345)g
-(\(\342\356\347\342\360\340\362)g(\361)g(\357\356\354\356\371\374\376)g
-Fg(l)p Fi(\))1330 b Fg(f)-78 4804 y Fi
-(\342\356\347\342\360\340\362\350\362\361)n(\377)27 b(\352)g
-(\357\356\361\353\345\344\355\345\354\363)h
-(\357\360\356\361\354\356\362\360\345\355\355\356\354\363)f
-(\363\347\353\363)1089 b Fg(l)-78 4904 y Fi
-(\342\356\347\342\360\340\362\350\362\361)n(\377)27 b(\352)g
-(\363\347\353\363-\352)n(\340\362)n(\340\353\356\343\363)1841
-b Fg(d)-78 5003 y Fi(\317\345\360\345\351\362\350)28
-b(\352)g(\342\345\360)n(\365)n(\345\354\363)e(\363\347\353\363)i
-(\364\340\351\353\340)1748 b Fg(t)-78 5103 y Fi
-(\357\345\360\345\351\362\350)29 b(\352)e(\363\347\353\363)-7
-b(,)28 b(\347\340\344\340\355\355\356\354\363)e
-(\350\354\345\355\345\354)1617 b Fg(g)-128 5198 y Fi
-(\304\360\363\343\350\345)27 b(\352)n(\356\354\340\355\344\373:)-78
-5292 y(\347\340\357\363)n(\361\362\350\362\374)g Ff
-(\363\367\345\341\355\350\352)h Fi(\357\356)f
-(\361\350\361\362\345\354\345)i(\344\356\352\363\354\345\355\362)n
-(\340\366\350\350)1183 b Fg(h)-78 5392 y Fi(\357\356\350\361\352)28
-b(\362\345\354\373)g(\342)f(\350\355\344\345\352)n(\361\345)2107
-b Fg(i)-78 5491 y Fi(\357\356\350\361\352)28 b(\342)f
-(\363\347\353\340\365)g(\361)g(\357\356\354\356\371\374\376)g
-(\360\345\343\363)-5 b(\353\377\360\355\373\365)28 b
-(\342\373\360\340\346)n(\345\355\350\351)1028 b Fg(s)-78
-5591 y Ff(\357\360\345\352\360\340\362\350\362\374)32
-b(\360\340\341\356\362\363)d Fi(\361)e
-(\344\356\352\363\354\345\355\362)n(\340\366\350\345\351)1455
-b Fg(q)1860 6192 y Fi(5)p eop end
-%%Page: 6 6
-TeXDict begin 6 5 bop -128 -45 a Fh(25)131 b(\320)l
-(\345\343\350\361\362\360\373)-78 139 y Fi(\361\356)n
-(\365\360\340\355\350\362\374)27 b(\356\341\353\340\361\362\374)f(\342)
-h(\360\345\343\350\361\362\360\345)1810 b Fg(C-x)42 b(r)h(s)-78
-239 y Fi(\342\361\362)n(\340\342\350\362\374)27 b(\361\356)n
-(\344\345\360)n(\346\350\354\356\345)f
-(\360\345\343\350\361\362\360\340)i(\342)f(\341\363\364\345\360)1435
-b Fg(C-x)42 b(r)h(i)-78 338 y Fi(\361\356)n
-(\365\360\340\355\350\362\374)27 b(\357\356\353\356)n(\346)n
-(\345\355\350\345)f(\352\363\360\361\356\360\340)h(\342)g
-(\360\345\343\350\361\362\360\345)1365 b Fg(C-x)42 b(r)h(SPC)-78
-438 y Fi(\357\345\360\345\351\362\350)29 b(\352)e(\357\356\353\356)n
-(\346)n(\345\355\350\376)g(\352\363\360\361\356\360\340,)g(\361\356)n
-(\365\360\340\355\345\355\355\356\354\363)f(\342)h
-(\360\345\343\350\361\362\360\345)775 b Fg(C-x)42 b(r)h(j)-128
-683 y Fh(26)131 b(\312\353\340\342\350\340\362\363\360\355\373\345)44
-b(\354\340\352\360\356\361\373)-78 867 y Ff(\355\340)m
-(\367\340\362\374)29 b Fi(\356\357\360\345\344\345\353\345\355\350\345)
-e(\352\353\340\342\350\340\362\363\360\355\356\343\356)f
-(\354\340\352\360\356\361\340)1227 b Fg(C-x)42 b(\()-78
-966 y Ff(\347\340\352)m(\356\355\367\350\362\374)29 b
-Fi(\356\357\360\345\344\345\353\345\355\350\345)e
-(\352\353\340\342\350\340\362\363\360\355\356\343\356)f
-(\354\340\352\360\356\361\340)1077 b Fg(C-x)42 b(\))-78
-1066 y Ff(\342\373\357\356\353\355\350\362\374)27 b Fi
-(\357\356\361\353\345\344\355\350\351)h
-(\356\357\360\345\344\345\353\345\355\355\373\351)g
-(\354\340\352\360\356\361)1187 b Fg(C-x)42 b(e)-78 1165
-y Fi(\344\356\357\356\353\355\350\362\374)27 b
-(\357\356\361\353\345\344\355\350\351)h
-(\356\357\360\345\344\345\353\345\355\355\373\351)g
-(\354\340\352\360\356\361)1260 b Fg(C-u)42 b(C-x)g(\()-78
-1265 y Fi(\347\340\344\340\362\374)27 b(\350\354\377)h(\344\353\377)g
-(\357\356\361\353\345\344\355\345\343\356)f
-(\356\357\360\345\344\345\353\345\355\355\356\343\356)f
-(\354\340\352\360\356\361\340)990 b Fg(M-x)42 b(name-last-kbd-m)o(acr)o
-(o)-78 1365 y Fi(\342\361\362)n(\340\342\350\362\374)27
-b(\342)g(\341\363\364\345\360)f
-(\356\357\360\345\344\345\353\345\355\350\345)i
-(\354\340\352\360\356\361\340)e(\355\340)i(\377\347\373\352)n(\345)f
-(Lisp)898 b Fg(M-x)42 b(insert-kbd-macr)o(o)-128 1611
-y Fh(27)131 b(\312\356\354\340\355\344\373,)43 b
-(\361\342\377\347\340\355\355\373\345)h(\361)h(Emacs)e(Lisp)-78
-1794 y Fi(\342\373\367\350\361\353\350\362\374)28 b Ff
-(\342\373\360\340\346)m(\345\355\350\345)g Fi(\357\345\360\345\344)g
-(\352\363\360\361\356\360\356\354)1389 b Fg(C-x)42 b(C-e)-78
-1894 y Fi(\342\373\367\350\361\353\350\362\374)28 b
-(\362\345\352\363\371\363\376)g(\364\363\355\352\366\350\376)f
-Ff(defun)1518 b Fg(C-M-x)-78 1994 y Fi
-(\342\373\367\350\361\353\350\362\374)28 b Ff
-(\356\341\353\340\361\362\374)g Fi(\352)n(\340\352)f
-(\342\373\360\340\346)n(\345\355\350\345)1561 b Fg(M-x)42
-b(eval-region)-78 2093 y Fi(\361\367\350\362)n(\340\362\374)28
-b(\350)g(\342\373\367\350\361\353\350\362\374)f(\342\373\360\340\346)n
-(\345\355\350\345)g(\350\347)g
-(\354\350\355\350\341\363\364\345\360\340)1078 b Fg(M-:)-78
-2193 y Fi(\347\340\343\360\363\347\350\362\374)27 b(\350\347)h
-(\361\362)n(\340\355\344\340\360\362\355\356\343\356)e
-(\361\350\361\362\345\354\355\356\343\356)i(\352)n(\340\362)n
-(\340\353\356\343)n(\340)1113 b Fg(M-x)42 b(load-library)-128
-2438 y Fh(28)131 b(\317\360\356\361\362)l(\340\377)45
-b(\355\340\361\362\360\356\351\352)l(\340)-78 2619 y
-Fi(\355\340\361\362\360\356\350\362\374)28 b
-(\357\345\360\345\354\345\355\355\373\345)g(\350)f
-(\356\364\356\360\354\353\345\355\350\345)g(\(faces\))1249
-b Fg(M-x)42 b(customize)-128 2720 y Fi
-(\321\356\347\344\340\355\350\345)27 b(\343)n
-(\353\356\341\340\353\374\355\373\365)f
-(\357\360\350\342\377\347\356\352)g(\352\353\340\342\350\370)h
-(\(\352\353\376\367\345\351\))i(\355\340)e(Emacs)h(Lisp)f
-(\(\357\360\350\354\345\360\373\):)-128 2902 y Fg(\(global-set-key)38
-b("\\C-cg")i('goto-line\))-128 3002 y(\(global-set-key)e("\\M-#")j
-('query-replace-)o(re)o(gex)o(p\))-128 3276 y Fh(29)131
-b(\315\340\357\350\361\340\355\350\345)44 b(\352)l
-(\356\354\340\355\344)-128 3458 y Fg(\(defun)d(<command-name>)d
-(\(<args>\))-40 3558 y("<documentation)o(>")f(\(interactive)h
-("<template>"\))-40 3658 y(<body>\))-128 3840 y Fi
-(\317\360\350\354\345\360:)-128 4023 y Fg(\(defun)j(this-line-to-top-)o
-(of)o(-wi)o(nd)o(ow)c(\(line\))-40 4122 y("Reposition)i(line)i(point)h
-(is)h(on)f(to)h(top)f(of)h(window.)-128 4222 y(With)f(ARG,)g(put)h
-(point)e(on)i(line)f(ARG.")-40 4322 y(\(interactive)c("P"\))-40
-4421 y(\(recenter)h(\(if)k(\(null)e(line\))570 4521 y(0)483
-4621 y(\(prefix-numeric)o(-v)o(al)o(ue)c(line\)\)\)\))-128
-4803 y Fi(\321\357\345\366\350\364\350\352)n(\340\366\350\377)30
-b Fg(interactive)25 b Fi(\361\356\356\341\371\340\345\362)j(\356)h
-(\362\356\354,)h(\367\362\356)g(\340\360\343\363\354\345\355\362)g
-(\355\340\344\356)e(\361\367\350\362\373\342\340\362\374)i
-(\350\355\362\345\360\340\352\362\350\342\355\356.)g(\304\353\377)f
-(\344\356\357\356\353\355\350-)-128 4903 y
-(\362\345\353\374\355\356\351)f
-(\350\355\364\356\360\354\340\366\350\350)f
-(\355\340\341\345\360\350\362\345)g Fg(C-h)43 b(f)g(interactive)p
-Fi(.)1110 5391 y Fb(Cop)n(yrigh)n(t)1461 5389 y(c)1441
-5391 y Fa(\015)23 b Fb(2007)i(F)-6 b(ree)25 b(Soft)n(w)n(are)g(F)-6
-b(oundation,)25 b(Inc.)1214 5470 y(v2.3)f(for)g(GNU)g(Emacs)e(v)n
-(ersion)j(22,)f(June)g(2006)1453 5549 y(designed)g(b)n(y)g(Stephen)i
-(Gildea)1242 5628 y(\317\345\360\345\342\356)n(\344)f(Alex)e(Ott)h
-(<alexott@gmail.com>)-128 5707 y(P)n(ermission)31 b(is)h(gran)n(ted)i
-(to)f(mak)n(e)e(and)i(distribute)g(copies)g(of)e(this)h(card)i(pro)n
-(vided)f(the)g(cop)n(yrigh)n(t)h(notice)f(and)g(this)f(p)r(ermission)f
-(notice)i(are)-128 5786 y(preserv)n(ed)27 b(on)c(all)g(copies.)-128
-5864 y(F)-6 b(or)28 b(copies)f(of)f(the)h(GNU)f(Emacs)g(man)n(ual,)f
-(write)i(to)g(the)h(F)-6 b(ree)27 b(Soft)n(w)n(are)h(F)-6
-b(oundation,)28 b(Inc.,)e(51)h(F)-6 b(ranklin)27 b(Street,)h(Fifth)e
-(Flo)r(or,)h(Boston,)g(MA)-128 5943 y(02110-1301)f(USA)1860
-6192 y Fi(6)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/sk-dired-ref.ps b/etc/sk-dired-ref.ps
deleted file mode 100644 (file)
index 99037ff..0000000
+++ /dev/null
@@ -1,2071 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: sk-dired-ref.dvi
-%%Pages: 1
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: csbx10 csr8 csbx8 cstt8 csr6 CMSY6
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips sk-dired-ref.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.03.19:1912
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMSY6
-%!PS-AdobeFont-1.1: CMSY6 1.0
-%%CreationDate: 1991 Aug 15 07:21:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-4 -948 1329 786}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
-49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
-9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
-1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
-6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
-007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
-F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
-C5FD550F53CE5583743B50B0F9B7C4F836DEF7499F439A6EBE9BF559D2EE0571
-CE54AEC461D354A32E69F39DD0C017BD6576F1E9500DC0328E8AF6EAB528FD7B
-85132A2A9995EB211FCE849216BF6D663AD649AE92DA953C4D520AB9A22D27B5
-6C34121FD688F9E17FE39B939D8DCED9EDDE5AF6DD7DC2297F2A3E1287E5AF45
-0306EDBA3C843FB8234D0DDEC7595CDE6657E499324DA260BACAE9D6DB126FD9
-AAA7368F7164F6BBBBE11EFFFB65660DA0961A97D51ADAF2136A085FDC16C199
-72BC2CA210B330C03F4252A275FEAADC95CFBC79C3B7285C4C7B5C9665909A56
-4176C37DCB569C8EED1B59C58B5EBD3ADD31010DCFD59411FC2020E238A07B83
-2439DEB653AFF1CF197533724E45EDA9810B6793E27943CF51484A5BC7DC61C5
-E97F71E04BB623E0BC9C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csr6
-%!FontType1-1.0: csr6 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25711 25989
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csr6) readonly def
-/FamilyName (csr6) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csr6 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-24 -250 1193 864] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A1390082AA03548CCE363896DC
-8285532C521369225C90F80D727FDE65092A0044327885EC680B2ECCDFCCC5C5
-9B4F8AE2D078A25AEEA345A6E6A1D9F372DB3CF2B4AE635D7DB823D70EC82CC7
-1CF7E7DD0D047DC2513344927562EE8FDA9076DD136C4996A22589ABE803CAFE
-BDA907DB1C62DABD22A05EAF9FA8313F815BEDB67BADCEB77C1B22D845131345
-22CF2296D57DE34C11EDF6DD3E42B726C8D60E4A98663DE8F7CFBB416F0A4B01
-734649B217E4E94992F66E77AAD2A7289B5413E7F1DD41B9334CBC2EDE944C80
-D9758E1AC551D298DDCE91757B374D66B6BCB92998411DD3B7E6350480D52ADA
-A0DA546F63DF2A7AE22BE6BF9A78F5C34CBB597DDC4FF03AB527637DE7F3AEBD
-59ACFB058C4833A4A62A9125B4D90E7073184DAEC9D4662987F5CF6D0484D870
-C0FC4A29C03AF2BD159097D46F491069FF43EB0B92CEB9F09E71E089F2C916AA
-57DF56E8F0595F9ECB2B1F2431411F7311294DFA91459BC05EFD5C1C68099335
-7BF9559397107F8ED80B43B6E113CE5AD25E1F980D08A891F2A2C0F3A99B7281
-55128F8A4CC9B78A96D6FE58AC946267448735F669C6DF170FCEBCA6108F94C6
-CF3D5DBB8B2304D66AE30096A7D7E17A5E8DCA207567091B96CFE64BA77AF942
-E51BCF3793EF5B02DBF510FAC25F4E523C54CAD23CF2F472B4B3D42BC66565A9
-F5794FAB132F78020CDAB120A21E23DBFBE16FB32F7A618A7736C5F269691069
-D8B35B291D6876340C4158958C56A6717C5DEEA0A86C9C89D9BACB999156717C
-BFFE2CC56DF4F47B56EBEE1D2C3A118208D9778776104AFFE60A0C7A2BCC9ADE
-FD471CD27FA8318703D497D7F1E2F51B67B9E50D9A56C85EFBED66535792D720
-974ED9168E082F5211F2F607D91F5D81AF63A2DDD31D23E65D3AF936FF194F6D
-B9EF5D40498DB69F3BC87E7E19AE76FC0C54E0B4706FA34621284606BCDAB55C
-32BE1E917D3B3CC1AFCDF3D35507E63D119B0A3174D32B6AB0A05A8F919A426D
-9CB0E7F90458CA6C439565A9AD5648C12F47BCA98599D31E834654AD20E719AC
-64D073F8DA31D1FF07C1AFAEAD34D9A58C9CFB12FF747775D5CDEC0C1D84FF41
-B8EFC696D77D2105043CD29074D828D1E03C1A2CBB80C5112F4CBCCB4A769BB9
-A4F91F4366DF0B44B0480E6D1522A779C4EA84DBF398B540A2A4546216DE7B02
-CDFEAC0DF8D9A35DFD72457B2FC7F051D85EA1437F13ED17E53D5DE0F38A5AAE
-58B077651C978C555A9873AA29F0A4ADDD1B6BC50EA6C95B1588E7F8D6049EC3
-8D9D2730FF086983030ECAE9600D8A11335A186A6FE48DAFF7F663872B23F22A
-C62F5ADA341F5BC0106B99ACB3A1C8268D3DA2C4F93B17749BE68AACEBA9D456
-B3F0B7B3C1FB011B20FDF4067A48421B1ACAD3F6210BCDA6D664361849170191
-7E57121F1D6787DDC6E8EF9022A91290E1534CFD830134126467D7E328E92267
-B730800397D9A384D62460853F56C6C9A634D04E02932EC17CF0F54705615E03
-58A437569FD55BD44A33C29DADE84E385C97F7B788106B018E3C265726C31E4F
-B1509BB80A94E8258F503048C85DC89C7439141A587E13017010AA6DA23FA2C6
-97E37155FA9538B31C4CE0B72E1417382A1A1223828D9C4B2178EEA561BFE6B9
-43AEBE58EFAE10175760ADC68AE5642AD2D413F2B9D35DD07A69B45FDDF2673D
-28B02C23EFD71C08690ADF55C233BDFB3DBD1769138EB92AB13023B5D9C8FFB6
-B0A93C729DCD5E5CB8ACF9F7E1CBBA9B67CCF2A0296C8D1FB7113405844D654C
-33ED93894598563D1ECDD5CDEE590D8063C42782DCEF3812968B7F6DD27F409C
-91A278CFDE7D4803E089C0769EC1C3C0CE1328EA3C53827D65DF602AB6DE79B2
-F4FD4A5C9E3047B07A084E1B48F8B9DB9C8F4F8ABA76A2E1716C8103CD1A7191
-E0DDB5627F65E3475E3436250D9000B37F82CD5092E1638F1C771BE23B3C7494
-15F16719E4C1549FBB4C5E7AE764BF97FC458319AF304B72CC1B73C5F5A0CABC
-1C8134C14F861E325B030719248E3AF17D742D736AD0F07CA757AA4A1BCE50C6
-83C0DEBC1F64D96332769A65AFB4F8DF6310D8DB846431392B63CEB036A6FF54
-410E717681265F811A992B82B302F406614183A9BDBBAAEA43BBBAF8828B3D74
-7CAB59D02F4C41B5E8BB2369CC4BFDB378CC5831AEF9DF1715F915365968A422
-66FE4CC18FCE0666A1F0CE9A202B5F581D252347BA49B5F351EE40FF21F68B7C
-3DFBC1920114CE2D02D564F1B5C398DD834E20E9DC2639E3B7A2935D77894960
-AFB1584B7E0094C9F22D69BDB0F005CFBFEDF56E08790DAD1D3CE2AEE6C90298
-6507CC72FDC0BDBEA2D45CB8544A7001AB67B8B3E9A359ACBFCFA135DC277A44
-D578F9E962F1CA8D31E34D3128AE12E178AF39B18159EBEA4D1D0829DC536FD5
-8C48E955D7D52D1BD6527EE388C1BB2E6A5DADD1E7C452160A5D4768146E8811
-8722D5F9D69E925D6699E7EC2DE2C645FDCA36AB6A06BAC60DE1C355401A35C7
-E287DE71AD3A6CAA532A0DF377C6E02583D6DDECA77FE50842214051AFA0418C
-62244C0213DEB448711801EEF13CF96D498E45209185AB6CEFC9F304D32ACA2A
-98E8D8EA3737EA2F5C2BD6A1CFD08B7E2B3C0285BBBD2199AA120AE737B8B269
-535C20CC1FCB4612EAF3EEF2B49E98CBDF1F71F997DBC89403E7CAFA2F6E2B4A
-E9C90F2FE5FE13837FFE33AB01414903C905E4DA170F12C3F1A11BFCA51049CD
-6A34457EB03EDCE6DDBEA995DF832AD05A84DCD3A672FE6C35556FEB442202C4
-427D004540520B66AD955F2ADC68DD53FD7E9AB3B38DF22D8C44549F06214082
-15A7F95684F1727A53EC834E9CEBDC4C599B0A9A255BE0FC78EECDC9CFBFDB35
-29EFCC293A02D52F20E3EF5C148C1F6CF5BD4FC7F42D00411FE742BAD03AFEAC
-FA91FF2661AC60D5EBEC548AF4B4E0845E3D02AB7C9FC9E68CE7F1B5E4DE1EFD
-077562EDE46E6790015D18C0E9D9A52D5C7D617C5B7820924D99381FB8BF04DA
-5EF1732435FE328FBF8B1DEC60D5BEA45890A2B6D66A7B4B47B03FD3D19D9229
-9D1C8458085C909C125472CBC53798C16AF2C6F44ACEFA2F6CB6C5DD84B648EB
-1E1468D6A89DCF23A4AFE8C8EEA44048D240D392D0CE05C082CD711BE907BE94
-1E7ECE39CB183A185E602C47680AAE88859618761CB8A5282ACE290EAED9265B
-466DF5124F1C78253AC2DBABCF010D960A26E60830E11475B1BE35ACCD48036D
-97EC4867D6AE95F67A563952600952D30DE1F148B2B6950E33B2FCBD7ABE5BE5
-9CFFF37354288D61FC68B3377C6C24749C3B06F87F25D4E35CD717B6A9EF1867
-D4C13E024231589C9E89A3C87AF9F926B329419728A7F04C93F186D16D322191
-AEA715EF468CAE95EF9DFC6B2B69074D10C1866651961A061B909DA1FCABE3FE
-3855C578C953F5DAAAAAC876A4FEA53498B40DEABFF5DCCFAF8EF467CB26571F
-6E5D54FBACFF3ABB4EA0B1C41F237E26667D9DB110A600F0CF98B6066BB145B3
-96DC26800F08437185590EE3D2C080B2A547B51C7A131E9F7B55F0772DE5C844
-C2E8B1F55EA131D16E307008E408DD8A6665C97A01A63AB6BE1B41A158EF2F27
-348737DFB0B31ED64D5EB558A8E0D99478C8A2206FA0F050ADC736BD32CA0339
-D0305441F007C7DFEE295D6360BD4DD34FB25F2A07F3B00D2A4B3CDB49F021EA
-2DDC4D625F7CA6B50DED913ED0643F556A686E46BCCAEA641692FE2E996CB21F
-33ED78F3010D51EDE32C0A0AE3491FB91E7AA05D015A9AEA3B727C4EE45DF853
-37C5E0BE05D272C3A0C435C9C1CB1A1966AEE7F1687524246D409B0954971282
-53F7661B5CFFC8480E1BA4C039BF214DE3C7A1D7F0DC372CEC274F0945BBB948
-831DABEC5825C95ACD926B23B2EEEE6ED531B27DC3BFF41EE7554A75A0EA4B25
-A3461ABCA0C1558DCC68D8BA7AC6A05D0BC2C32CDA016655D87E2CE0501AE6C7
-D9324D637A9D70CB9EA0F15667B1730C0DA56400298741857E6E6A426E9CD5DF
-4F07CB4E882875B9DFC47786D1DFCC0C4EBA6EB5F7B890B2904E3FC00C4E2FF4
-7282022BE6254C35FCADE5AF9B6BE80864DA76D437D0284C3BEDD35B2209B5CA
-7A2D69EF139C6611D38FDBD46AB7BEFFC13BBBD9FC6564BC859B531B848A7C97
-8DBFA4CD4C98CC8D3E170955222011FA738A2A940B3D71BF0A18E4604FE2331D
-96588E9DCC91F026602044835C12BD112E7267DF7C0B674D48CFBCDA7B64B4ED
-1C16BC6F1A17AFED38C8943994F3E07771471A950D91B3C99F1B11D85A5142E1
-DBBDB2D142CF48130AF3E03F4D06DA816AF0914D0DBA5BB270AEE4E66F9C6BA3
-A57B1A68C3C0088D2248309C0CAEA2D5AF93F1734201F7B4580DDB4A4277DD0F
-FCC56F43D4B1E5DFF341C8952A723A40A02DAFCD95E57D975300484F68EF3507
-1BFB61E4E4CFFD0DE5920B271BBD4E3CB91EF76D42AB30427CCB980FA4736497
-20E8A12FD2E0B4F14E55482C99272941BBD7F75667929869C1840DC4E77B7AFC
-FEFB1DE383AB74441B16736487C2071B29015C52D47E1DFF058A4393BDB2F07E
-1BE759B8FBE39B80669F272BEA0ABD7C36D94C5A53806EC6F8C9FD5B68560815
-2C7933A78F7E4524C14B3CC0BCF25D44B8ED70E46026C7959E1CF055D07D8871
-8C576458B8C9DF424198A618B8E3377631DC6CC7405624160EA52171B167951A
-3234D91595AEAFE425F31872F11693FA0F9B1F09C6D2E19CBBC66EC4543A90E1
-D9173ACC94F7FE489010109CE1EBB2AD8E2E807C62875867D8FACC3805650253
-21F8E64CB5ABED16CEF3FC29936DB8B06E015C041198B700B493D274E2F3CB25
-D53F5D46DDDFCAF86C876B3FCF5CE00875D8A6237DB1247199AEFA377B4BA19F
-AFD56AD2FD2A463800579DAD33112DF863E2C504CFEC293D3F30BD350C77A248
-C3D0CA21D662F665407A19B6D0DF95FD73F01E530440C89924F0C2854EF730B0
-FEAA26912851247A73E99C0941CEC44FBEAA49275B96B42F61C6A446C3227562
-7751D752F3E0E8C634B129BD953C44829EB1876ADBCACE29E10F0948BB931A0E
-3CD1DA2129AA3CD2CFCB25A59D581F0A10F1813FC4501B3C97CA05EA3C7F69BA
-262903FA7EF879CF03FC000B23E09E9AAE09A022C0658C73730AD5822E0B989B
-A845ADFDC9F83879A747309EB8B819A5F1BD54C17DEDD16B24DED8A068516060
-4E28D3559B53947CA1F9FB1DF17370F5A76CC796DE2DCB2497CB476C73063977
-CCDEFFEC5940BAD140AF5B8EF887C034E9EB5A11DB0CACBC36D91B5756E43CC1
-3F873330B15EE187C3DE825D284E81FBC790DB5FDC8D4387D970450EF2DDFA09
-74F0504B90A0A9A643AF661F7670D4054DC3D1A35F5CE3D0C6308E33ED883D28
-B6F99E31AD5C291577CA6018F34CA0A69EF627F95C3ABF760A2F29760A6C8CB5
-2339B9C653FB9E73172354E5F9256FDF9B70168CA01089017C50C17FC5004AF3
-C906F760F7D05D0AE20BD3ECB7C118A9FA2022606848CA9D0E659E0F077A6293
-3F6E8494CA79BA412FC3C535E5DA9BDC2B96A336CFC803AE8B7CDE2ED42F9FE7
-236C33353457A3387978F50558A639345FBB8BB5954A86D855DBDE9004BB24AE
-6E3B6356B1C7F7EDAD3C8BA35BD02BEC40E17FB92E4E76EBA9536D8750BB4C9B
-AC67FA6D253A6384FE9EE3436EF62E620E87B961358B9F09CD64C864FC9B4CD7
-4A774CE71301176885DEFF3437BA9549B4E7FA3B9A46EF380C42154131482854
-EBCEABA59FC594AE632131479D682D88982173C51E64905D4131DE51C3D241B1
-51CE0B3EC3388CDDBA6DFBBAB2C2932B597BA3F10BA2FDF57B2FE8FBDB3A89CA
-B3BE45A42742D3343AAAA01C0F7A5FB1A50BDC460C9736867C41CC9D10F01863
-110AF2BA750E0920646FDD4A30F5274B295C915B2E832D01249146A9EFB7E30A
-897762A22C1ECC17B3E29294DC306A27944699DAD3759D838E75435D7F52A1BD
-8CB5ED924328F734A535193296AF4CC70AD6422E8ED3572B8B104BC40A28C8FC
-DA9E9B8B47FA9A94BABC582D3608BAE0CB94C2B67DC65ED95281387BD40B294C
-2FD516909ACEDE90991C023FDD3C5584EED0CBEA055A0221B575A62FBC5ECC72
-241D6C80260A4355B92E92EF644257C00E13D82D47CF0740CE71D1462705FBB3
-3E8F8DB59C787154BBE9E0FC791606BE3BD11537CBDD858487183595255E3360
-00EAB3E593AEA4AE635D0DCDB7F0AD2D95ACC4D6C37BE01762CB5E5D728B780E
-14A139A7F5E329ADC6C406A266AE90ED6DFC86D68A417ECB7A486EF0551FDFD3
-C83793A4B3F305D380DC56FA962B5474ADB62DEF714FFFA498467934E95BC976
-BE99035AADCB5250A5DD5FCAA64D3601BD788C35C214058AAB025DD3B77864A4
-76BF7F562574DC4466B23C7256246BBEC7E47419D3B7924AFDDDB7B605D499F9
-815D19F8BD8797AAC599DC62F2B3CED680A3860BCF87428A993BDA11643B830D
-ACC0D0493DCD72AAA9ABA51A8514E91EDB75DEC2378D5710332707DB8E9A3C61
-A85D1114E88D89CBDEFD3BE65C215292ABFFAF211CD17605C4DB85B9AE505150
-BDE896444F55C7A15BFEEA608D8055583487B1DFB5E831E35AEBECCA99EE9348
-2A428FF4DCEEFC005FC7D54AC750E1D228329718711AEA3AFCCFDEED13884A00
-DD02186AD492BE03EA4C836D3994CB345511AE8A0981753F77B562BA3A0F0703
-45EE012D273721070B5CC63453E78EC5B40E3F1845F08AF780885D5B55F7552D
-385F2F22BC86C4D37CFB2B8D43AB30B071DCF1FF032575BD87354EB680ACF012
-3881D4428F9AD52478B55858CE48CA964291FF97AB5CB46FABB04EED462AD1CD
-07404089DF52B923E492CFA2120C11DFF6156FD3A9FBE7B7AA4BCC4ED3BD4EF4
-E21200516D96DE372E8139D56C3F76FB29E42FFA6531AFCBEB2F6DA84336FA31
-8E7028E1E0D828AA135620FE30198506A3E094EAC140370D6C35293E816BE135
-96704BE5E4D6D6C83B42F91CF760D7D7E5DE20F569B31A3F49B3444AB5418B71
-9F72E599982F16AB21C83370BC1B3F9CEF750804FFF8C251368FB57850D5C49D
-2D49E43890C19232329E930ED9B8543DFE943F9C325467716C1CA7B43EF7BD27
-E0CE660DF3E6EA1D32E1C51F1C1CC36D273F1A482C9A62A7983D59C75EAF354A
-DBD703801513C471BEE721C2C728DB77658CC64F59FA9606FE85A3955E956EF5
-0537F5DB54B18E15622FC1187746362ADAA7B93BD0B0B3C1295FB350430E00E7
-F8C852467D0035394DDA11ECAB23FBCEF8D8888929C41577561DEC1D96D36CE9
-F45F0F17674E9C6C4133B36FB19936DBE5BABEE039C9BCD0AE86C9F15F218C39
-0CFE18EE9F26D4E0188085820F87D2BB8ED4C81191F36BB157AA2D97FEF3C500
-06DEFE2635F4A45F78FE9AD3585EEEB3F10651733DD1F4808BCAC418F92A7DF3
-B2E1712FBF5FF569E4E930E70E054A22F6862CAA271470C9F4358FB6CD1A3D3F
-15048080030F17D92DB7692257C8528DC80C79B145F29720F9468CE7768BFBAB
-5169811E01D06D43DD8A3B0F3C002E79248A48445DE4844855326A7E58F54876
-F9744E723980B6A61907CA9A13F4C12F823ACFC8F778E7089843E11216782D8E
-89D4875DFD01BB67BF85A0692BE5048AF1D3EB1CF8C087BE6FFFD60822CA5B47
-CAC2413F7A4E8A0DA4CF76C340578918B40FEDE73C48193391BE10D7F36019A2
-732B902C426CF80FC98581251100867B6D9BB728B3D010B882CDB07CB6F9FB22
-54F0B427EAF1EDD1FAEA5FE3AD156DDAC67CB8202A4E0D0AE5B49F35FC31E6CC
-87F00E54011DDE86A32DC844D0372FF2430F552545D648138C0502F46D7F90D6
-65736FB0D53F90EAB2DE0ED5ECF7C179FE1D846DF9256A669BE668F9AF96EBFA
-9EB14ABA4113994A6A56FE7FB3E8CA25DDD95273549052106DB8ADC5818DCF45
-841FC9336207CF67EA835DAC1D2C3918BD570C1E56B63D563EACDB397F28E198
-BE36D9E48CC5B228994866F68F858F7CCD1283668A9A949C99F3DE12F975EEBE
-D273BAB53FFDC9915F3EBBE6353C8D74B2E4517092D9BEAE2420942DF0074A69
-30A696E4B7FE4491AEEBD05385FE95E0003E14907C1BEF058D6ABD417CFAC682
-AD0949E6B0AE41D8F6C2C76BEE7F696E8FC623280F96DC4BDFC33F73FAC10265
-49F98BB4CEEF2676279F4FC5928FF7E51C7AE464377E29873E4E8D3F8A384626
-F030953654FD3A42A1127E7EF9DFF57EDD38F7BF4FC146A755FA5F6C810C706D
-6A834B32E68505B9E0726624BA8B7DCA96DBDD8F2344386260478160B0F3F85B
-E09A8E3AC4ACB796BCA6383A47B70F98FD798D6F2C1C385813EA7B3661D43DDE
-7B3C0C6455785420553956EF58B460CCC897187847802EF8DE9FBD23934FA8D1
-AD37F59724DA239776F0F513402D86060903C24105BF537BB2C0BC4D572E6D4A
-144BC35F7C1E710745FC4B02D6EF02F607489543C30B3E10FB765A73A9571845
-549565B5E4DC13EA259603958545A964C38480EDDF58FB409FC43A2909662F39
-5DE08816008CFD770B8A3B7517CBE72A5B23E5D6F96B3D6715B81F03190B3284
-E72034E0F51272427A6DA9C72CD39D8E8E5BB13D232D4D2CD741EF2550220269
-80C4B614FDB1972052A427C723FD8F774BEF5708160F46F11C702E4A35DD1AF1
-A920D08B6B91392293573169711A8A306CC5FCCD1B53B9D7A3DAF2D9911028F3
-3EED3A7E7BC346A70B919387423C91E2813A7A0892AC99BE0CA97D85975348B9
-CEC6BF3EE2BB656506244A9500A94A6CF9FA44AAEA2EBEA1A0DC7414E8B4708B
-1949EE5092B13881877F5F46EA92F3A1988A2C419C6CBA6307EA93F3CDFF149C
-AA132D48FD0818529452C8722E6277F8AA668E8CCB0D177248A00282A0316550
-2F6E96123B03AA20D8E7BEC2618947F71BD405BA3710043C4B627E211113F14B
-ED4AB1117B0A48E925A884F3730D05480984FB80B30744A528B3653F8CFD50B9
-8753EE836F07373751BFC86BF01390080306C3CF564419EDD4D9102FF4656529
-2D88B3F816CC70FB0CDEB89AFA68F968FADA39B23321BE4DC083D7643A6F4ED4
-02CF176ABE73AAE3FAE9BFFDB8E67CDF56330FBBAD21CD1977F5746B08193528
-A23BE8C98888DD658B8655362781AAB8AC2636F06838419FF581FD66B96FECDE
-C69D818BBFB8261DEF801EC40D20A6B79032F4B007C0D6F6907EA457731BA2F0
-60FA71D8886FBABA4EFD51998C1186C4BDF06CED2C2D7FF23250E48BAE3A8AE2
-ACEB2C0D0B37E2C7DA24CF6C43D76D4EBCCF409B7C7E4BC6323061703A5A3EA6
-B1A53EDACBD107296914D927D853C8840D4CF1D833741327FF21FE9BA51A9E32
-C0E97E86F03E9671E32E143894B1F05DCDADFEA60B24655EAFA58807909E90BD
-A5988A86C9BD38E0B1CD98FC79D1ADB5C3ADB78F285A7A314A72DACECCA0EA35
-BAFBB5EAB396AD4729DCFFA5264DC0DD86157078024A590E6067A6F1B5B2562A
-D1F15B3C8B118C15F07F6AB0BF1D9190D30976D88EA982E57D2E202AE26CD9BD
-00FA6220805E6D6FE5639B12813C5A6038851299DF0BD94A205D668CE5144749
-F71A18F633BF283DA453714EFE14E5FE869E524E80BC04A0AC3DEFD93B3231CD
-C88528CE3133EB6287EC0226A4DF0ECD42A13C0FD832320C0E29318D6C237D55
-AEE8B077AF3A819025EB88B94A6831B16E7BC10957C5E7CDAECB20BA23241E94
-CAC0734555505BBDD55A973A06A3C146A21AEEF899ABD43CBFEBC105FFF56C63
-7CE50DAC6913230A323201A81E101ADA71FAD718F35C74406505C62A605246D4
-EECB52D70D5E07D10D13CF303466A8A5198D02485FD445F56B2D90FA7B039711
-22523CF282CDA36BC0FC3539CBAE0E636094E7A37529A026A5AAD5B292D6E55E
-F16FC9E442DDEADEDC307BBBAB221CA11033982F971EAD2AB3E2A0C47805F059
-2333D6C473E1F5CCB9F8133AF91B63A2F3F6FE9FB11EB74900AA2D20C007DBC2
-681E5CF1A025DD2C25268B441B02911492539028345B03EFEB64D2C1AE9CA7AD
-94472236D7DFFCC081197351701145B365AB622CC2E5E09A17B357BBE0B0C523
-5A8D68AFC00BAD865B291678A7D9F83909B29516086D0DD4434E498F7CCD0645
-F327C654165AF137E197B17E6D37F90224F3568706852AB7BF5C78AC69A4C0F9
-23F18949932C058C8C21DC52956DA498E749437B69582751E1E12EB46231A450
-BDC05A65409630B0C6281534035BEC3FE0F3F173CA94BFF7E93E15F66D0B3C73
-F784C00BF1ED61F36996FDC82D0C9A11E1B3718675ABE286429E725A9F383B9B
-168F31734B8EDCB37E82C4B26C9A8553E6C454499CC89289E6045F8810413E9C
-4406391C6989AAA1BE34224B98C2EC4D3986095037158632C17F8D7A510CEEE0
-1C21F1C92593B2066AF4B86DD30E896D548C88B5946D1408D22839103C7A0EB6
-7F3D488173887A94B4A2B367DC8C67531286D131A1BDF35D6041EEAF1A086860
-22BE71A2A535B6264EE70F4C7CEE0990B33075D55733A5BDE0C63499EB9111A5
-ED5DA484D11063D8F03A2CEBC6612DC43D8C22913EB0B8E467B02A15A7595A36
-4DCB8AD0D74CB5493B59EF02B69ADAAC5F3CD7ECE0CA793A378C97E07C37C7E9
-4E5F11CDE9DFD0E61F9B88968A015CC4FB8D7966200C48C6EDCF59AC60CA9693
-74267C4A067BC76F8C0A4F204FDEB9D91CA4A69FE0E30C7158D44E1BAA50D92B
-1AE92896CFFFE56EE0AC571C2AFADBBFE59F1F23D42DAEE552D4D86F00B48F42
-60D7834201C7CCD9E52A7AC3029896C251F52CF3BA23451E8A18A383411071FE
-B4D214A45F297C0B9DD06578ED375B7E302B3AF410ADF197CDE49A0F58B40CC5
-64A4E14453FFB0FF7B59292AD7A63FCE0239FFFD0EBEA23C091D0760693D2ED8
-9A0B66E0125606F15424D3B3D82764BCF6A2A2BD399BDF0EB5B38E4980306D74
-558833268726829CC7579DC4AAD6E9589EB1473D8C289B9E331EA905830D07F8
-042B642F60B69D66B8D2D2FDB948BC16D16344AE983FC67352292C05EA1F5E16
-18DDA42173B00390985D3F8981FD33B102D37BB98B56A4BF76A17DAC639183D1
-8CA84E33BBC5BBA5D41821DA254A5BD4A8E8011D766319E001D2BAABF097556B
-8660001C2A9938E1A08265A3912BBCBDE5B1A592EA64D1F141CC3CD437194CD4
-5E4330FFD0FC6823469A618BA4B5C0E35DC27DB79E90F6F2B563CBF7E1D86A63
-6973573D2A9A8357C4EDC4D4D5C9BF56AAE4035E93B41B8D0807474E54035A88
-997BCAAE58A4A672E47D0F44C1EDA3C3ABC7AB8F3CB4F11AA89C23B00295F763
-38F77E9C4D509C18D4B2DCAE5A26A2E2E12FE603C19C220225A78BEE4A48B371
-935761EC9E601671940DC7E0F7819110E6FE16736AAB9EA8D395ED021957DA95
-5BEF62E5BB3B440CCC5926CA3C5652E22D9DEF2EE4F39764565A505704B3F80D
-37D58ED65304186111BF95C074E3B7097B953E24317BD119257C16434D5CC75B
-C9EFE5B27C115CFA047BDA6B41BD82D7359FB6EBB2F515B8C6750564C316A2F5
-E515EAFA9E5415D2474A3938F85A0D7B12980D11FA95AFCDCC23D131364CC544
-D10B3BD0A4F18A6EEFB79195F7566BAEB133847422802CF3234784FB095C6BA4
-B243A6C25C7BCDDD647988E640036B2662364B87C77E57DD501A017574DF1A32
-843C71FE7091
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: cstt8
-%!FontType1-1.0: cstt8 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 27102 27374
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (cstt8) readonly def
-/FamilyName (cstt8) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/CapHeight 611 def
-/XHeight 431 def
-/Ascender 611 def
-/Descender -222 def
-end readonly def
-/FontName /cstt8 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 40 /parenleft put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 50 /two put
-dup 51 /three put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 85 /U put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 123 /braceleft put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-7 -232 547 749] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E61A0E1428E106CCC2583525
-72D46D12AB29122B2F73E8A1840E92A8B89FC7EB2DC186823768722F16340C65
-6DD7DC66340FDBED5DE27349212038949E02A53C843B61C70E1DD9DBD0087F65
-15B0F0D9BAE4BB4E41E67AD2A0627A0A172C22D63B4821EDFBCD61B658A40308
-132441266CF3C9493FFD6F22069801D31293B9BE8D89CB818E8ED600661D5183
-2E556F2B3D05DC1D4373F9890892FB7AB653D27E2633AB532F25D6EDE1857DB4
-C1F451A24EA87B44C7CE899D4978EA02D57085859C57CC3F1179AAAFA42490C7
-DA9BDBB4EDF14A2F18DD23B43727FCEAEF202CA5A65234905E786170816442CF
-D6B62BA8F62C10EE680DE45AB210E79CE579DB97E6727D763F4B9054F443CABA
-76BDE6AC53B3DB2F1297AFDAF08ACC65EAF52597D52CB237ECBA29A18AF0C0BE
-8FE6FA66CCEA594306E6F3AE4B9E21BA245325E122B85E38C3DD1AAF78869029
-377FEB743C8E393B1CEBF5118FE83D9F35B7F94FED7CCB0368F5D961179160B3
-0060975A6E3A783ABCCE964A7FADE8A5C8BD5B2039247E9C018E827AEA49A311
-ABCEF022A409DA1D18C821DF8961891AF8DE1AC3E4C4F41F17B8E5661B7C44AE
-308824113BD2D15FB2FCE33EC549E4770E65CEB695D0FE7B5377474B61759E36
-E4C91AC5818A3328B030125132AC01CE1D523E630391C1D8993B4170AD45352B
-6905F6E2E60AA156C0F5111580622309D79CF79EA745830144CC8823B4B5B330
-54BFC451FD8CD5FF0E388EDEA82764535C50F417A9DC659D8326BFEC6E5CA9D8
-D34BA3C647BFE0FA7C8FAD2E87A658F558B8F627C0356DDB161520F1640386D7
-4166B19F03C8024D14BBA67CDAFA3504FE5BDBF8A19E93F313C9B5C83296F632
-3E814A5F5427196DB2633B363FEA67DF56AF73A6F78A28B81CAC57FD11493B1A
-9233A404A1E8CBF2E5E4519A97070049C6E1C389020DD3219ED5D06C044E0F30
-DF4D4B472A3D0BE8B2B554F7244ABE708803E370C11E70298B1AF1E25F2D262E
-4134F7A239BB81496BCCD89F963783CE73442D4305E9EA8D2D08016BECBCD25C
-2E7FA6266569E55664DC7C43695B14B6FB573136E8E5B2D0A2C5EFC1E56A9C55
-021EB6A716D317768EEBE62439B6714F15EAD6402D6CB18772B202DFBCAF4A72
-01C041ECA0CE48C2D458AC0DFBBF9327D4566CD5AA138B21C0578718629C8EF4
-FE605BBD9FF46DA1FB9EBE950D6CA66A02CB7E640DCC0367D635E5CB62A8A35A
-6FFFE390984900CB1385D1C5B708F743895270823715BCB69EEB8D8F36874F51
-A0972B68861EC54632209346594DD1273BDB95F5CAB8B463780B97017348ED2A
-855AC367B9BA949C4F6CD562E6A4D8D49C133D5386646F9428D8AEB6790A33E7
-CE46937E6490E148362FF3DD636512B9D90063425D1BCC351789EBB732209296
-0B45B053697260E744D820447275668126FA78C3DBCB60B0C25230F87B8012CE
-E09068065FF335343A90FC6BD7E62793D1E77DD557CA6169F80484F7151CDE5C
-47305AA06889BEC69CB34B6678202DFF80A0B3F0D345E5C2D0EB04DCD6A378E7
-BA57A2A5EC3F26111FD8C0805ADAAF0355D0CDE87A01C7D8DFFE2EC6A870E173
-898C2B3816CD777C55A7D786FD2BF098CF4C518C728898977D97AA5BFD152219
-E0EB9D3DBBBDF115AB3E253060716D62B9CD254DAEEBE134625069483B82AC4D
-2730EB6AC36A7BA36DC79D8C49FAE2E47F54593A950B869CCA9C4ECD4E93F465
-B9D4513F8BEFED9EADA808A7270CDDF26F3215F0D11373988598C514F9F63BB3
-D49E5F4D91BBC63194EE89C826F9AA488BEA86903CF6A9975D9E2977407D3FA3
-CFCAC175E2A0FEDF042203C88CADFFC1FD0D03FCB765A3B53516836CDC340A8B
-07456DA4DE5BD8BE4E0CF3262F621FF6013F3814961C142F8B4A2E0AC9FC9442
-BC9A4DA90D056F7196DB877078B5A479F2AE9C206BA0CB36C1EAB352972F21BC
-9EF53807A42EEAE6F55CBBBB99E7F6CAD9228F9C69F0AE42C1290457E74179BB
-E7C44073664CB4714C8E56E02D4BF30458B111E0611800C761981DDBA311070E
-E2B1F37775E0C98009709E5C92595B51B5C0D397DFDDF558AEA81C600EABF0E5
-BF0514311C7AA66C444C3D13EA48DBDC5B8ACB12F31BF6225EF1CA6D52F3DF87
-07FF7B7C5D60629C831578D703B70E365E05BB1C166BC09AA6445D149C132589
-12F4EDAD89D1364AF705F5CAFA2A676B4825DEF98F313F611BFA9FA840AE88EC
-AB4B29E8C61162BD9ABC7AC2540AECA52D55A5277035DE68AD43B0A6D5B420B5
-4552AEEB397774E63006D34992E1755C5D0D51161C46FEEDAAA059CE145FB14D
-53270F269340C9BF94C7C1717892327547568B8B5D339664A59A689B59728260
-CF3FD421110CF5B6852D46BFF6E57C26CBA870D726BF73B04A4F83FADC8973E3
-071F7AEF640E838D64B9DEE76C9B9A45E3A6AE564D65D4A5E8D94019E2860283
-68D9228D386BBA73286977CCCDFA092C5DD868936F9DD875BBE83478F031EB03
-D2F92BCA8EDAD6D72341D7A906DE3DA431B65B4CEB8CE79E3AD78BC939EF5671
-FF65A3C67426AE4E49E45F4C8154420E0647883761376178AC4167D0381EBEBC
-B59A48E2B68AB15A2F99F44D6C6D6490CD60878BB9040DFA6A28DCB35F10515C
-CCC43ACFD4E5B75955D307F71FEE3DF10A386B85CDF5F1033633C6EC369EBBA1
-5A415AA426B3A8B48CDE6F754A7BA8072AA99BD61C501142454872E8FF69CDAC
-E63350EB72C2846AE2991E936B1B1EA4AAEB47CFEE542784F5158301015F8D10
-5020956399AA8FA4953F632EFC02A3738297871E55E1B953F0A4C6CCBFCC2361
-261ABE986A2D9BD1658B4C5BBBA208BEA23F717F0314DBF77F264FE46BE92831
-3455CAE4111E9E291E85F6774106B2F9D9339F28FEAB65B95619B07C150C3E74
-AC9C8BAB4ED7C35DFB3B3CC0BAEB67C0D49AACE9B5128E25E471C25EEAA41B8A
-F4E6043DCFB80A35FB7741F0B76805698574941039A897A703F109C6B5597919
-C3CE868E5871466E683B50088A70A04DB9571EB7A5947A0BB2461F222E0D1307
-CFD27B25B505F54CE38AA58573934EBB706A72F13D6722D5CD68900B196C59A0
-D457469D5C43DBEC8EAFC88F91AF4B363D6BA39D11515D446830E1A51777D6A5
-4719EBB6D0F2B04EFCC53AF6BB70CC5B7FC88D74FAD1065CCE7BE5C545A11E30
-2E66C05AF6354AB13CD3317ABF745FEFD8E38DBA4D1AAF1641340B1E940679E2
-9FA8B6AAD0D37EE6367E0E7D37F4F30629A54D3438BDD89D6C4EFC3C3EBAF606
-0508ADBF71E54BDDB4B58704EF6B0554DD6221FDB431BAF080E6404AA9E2153E
-FD34D3DCEBD3B1B7D0C80AF5EE4BB255BC08C19B1B06C7737099922BD287ED43
-BA5DECAF672051F967E0F3E9C0AADDBDA2A2546B6A56BFFD0557C864653D418A
-4B1B7F87336494CB026A466F8FA6E492D1CDB9465FBAD7107DCC537D7F00C261
-16AB59B2ADE773E9D6E386DC1ABF23C612EC78058484A5E1B4D293C8D88C8E54
-892CA442C9DF3A16AB1EDD3A673FDC573E98215AB675CEF4A3CEA6EF11F1C4D2
-E643C433E6F846C5240E85DD77E8F55786F3D8219D851A4A2EC3285A8921B640
-AEA54076FE2CDE81148814D5B44994BFC8B1BA8AA0CC29D55B9D419671E75093
-86068AFCAB7CD34DE7229D555F36129AB6A006EA7B022D66CF9054994E55D1FE
-0194638D21916C7DC85335EAACEC28D880D56A577C641CF1EA3519E13DCBC518
-42199B2626C95E503A4D616A255D4189EB395C5B9D5E421304C3720C90119121
-DA3B71761B7D3B88EE8F9E13B645DA1736F6127AD06F9668B437B80B9811999B
-425AB8E41CC713749D0069700A8D4082388F6B951777D0D0EF327326A545DFE6
-15734679385D5B51EDEC0E627CD66320A3C8CAF528FF63DC0EEF4EDDA1708F1D
-54DE66CC8689845EE2C8B199E53F2176C8DB8C16871A95F1C2B75623E495DDDC
-DAC40B2F0C2AA5B4BEF34E85F7014C942EB82771ED07399426C281E6E724B4F7
-9EFC644FFD0B36835D9A29052E3CC2793CCDC387FDDCCB0AC11A01332DF05D4E
-41FDDAEE1AFAEE91552789E9FCD645FC38F78E6354F28F1163B6E5F808A032CE
-296B1A5F44419FB8D34D183446B99A294D9F09E7CC3E8CE953C6971BFE5745EE
-6FCB7CBC1FD7DA6CF93FC65651F89FBDA2D3550DD04C1322F1FCB570F4B5D9E7
-C3162603874B40A18C9B75D33D50FE11BF835C06C4ECFAAF22F9087AB241C594
-CB769CB7C0E2396AEF11C56614DB1A25133209A780AE81C2829CD20EFA1435EA
-79F444108EDA18958F4F7AA04FB1422C0862C2DA45F6F938F350D07E5CA0229F
-4544185723144F9C57AB2A181EEA5EBADB6AA8354A8BF652A2EDF2E7A6BB9713
-04622F85744C6D8F818C4E32431CC4378DC69760BB773BA6D6094172EF07F4BD
-5ACEA4E89A41C2E6795E238A7D7FCD4C26C33B5FA65FE89153F7E7B630E4877E
-84A05776358376676CF0E11430649DD800737B8F1C91E9D822059DADE8C2C0E7
-89FF613D5B1CFD79621A7DAF5652B54B8A2761FA1C545AC80EF60C77861023D5
-0E64B65D1ABC28F524E92068ECC137E5A250F8C2FA42E9CCFB122EA19D4D03B2
-EFF72539E6738CAC2EF2AB949DE2228358EBE2A6DA9A6674DAAEE65DB92AA466
-7590B88165E9484AC4E7D9C906966AF728C7B55AE1788CBCBABA26F77BA0F226
-501CA47F81B4452197D80551834983FF7388342F85525211B5572A1E057F9E64
-6F4B281AC073401CEDEF2020E990A4AF3020F33DF136FFBDB087A4F62039A3B2
-BF1A96553CF5B0165FAC89CA21EC6E9A23F8EF5ED3F57EF1DD35C3E340D74A33
-54221A264176C1676B0A1290B13E48A043E51018666077F171D17A9A62630E33
-72D873CAC592E127EB2E2D2948A7E990674F9132B38C49BE15C335C661311FA5
-C52F446427496227B6AB973A9AE3EA5D5FDB9C4A24AE4451F0F7A05B48140B48
-6301522D8F130D5CDC8DBDD297E0F179B238642E2436B5DB98C0DD43D2B50E7B
-6BA30ED317BCA71BB2B109E70C982ECFE62821D38619B31FBD0D3917628C4BDD
-BBFA43DDD2D2AD28C8709ACB321570A99FAE28989412D5E3E8FE93A681207D28
-9BA01C4388EE00A94E09894B7738876110397D2D40643EA96DC8D0C780C22DF9
-5FF6BA8F46FCA42934A66CAB425270DA12383823776214FD2915C26E0228D948
-56065D62BB717E150A30CE77E8ECC4A1585CD0ABA26DC36231820B9057D9D270
-5050D4C18D22BB970709D6821D6F76F9DBC16B2D1EC6E5BE6C88DE213DE46A5C
-220529B9FEBC3A0CA8D176EC0D74E32AA5CF7345B8FF8F4CE7051C6D4DFD66B9
-EA8F8BC928A6421A0025B404E263F49DB7C54CB7C08DC783FF10FD24068BEA2D
-B0AC7AEEA6386EF4C98DA309231BA3EE83FE788EF7381C7ECEE3FAEB3779CBFB
-E51AFE29D5C49230BE72ED828339FA5F1FE9704CF831345453A84072F3312CE3
-C066947E9CBAE98806A87240022378C2D31F9257A54B0FE5D020F5BC0EFF5479
-CE50C2B49844B0B25E0B32023C7039A746F092B1775D7780DD67A2EF4A147439
-E7E1B3D4FDB73762EF27F5F3A495E60D2DC4A54FDF2AB3AFC054CCA17DAB27EB
-0B30EC4D0922EDE2B081908603E20D88BFD20221CAD443564A070ADCCE970A17
-7BDB1BBA43F4A1FDD52B849E516B1FB2EEBF91D2E6B6D1D4C10D2AF4EB2CFD63
-78B3C368414F2BA66D9D3422FD5164913495FB75B6DF1093A7C238F313AF78F4
-E48B4248C0841F0F4D1CC2BA47BF5E06E133BCA2323F7A9F2C694C7806A17977
-B83A7A714B48727D291325482D96220CDD4DB1A96089C693E57E275225472B9C
-217B6EAC289B8EBBD7273431B1BB1DC243D4B2CF94718C0B2759313D6551E1AE
-4C6D3A92FC3381B1F7E61ED04B063211379C4B88C5C6F22335EBDC24CAD8D9E5
-189A22C3D6F54428F5E2FEFCDE5C0EE2131C519A0DDFEC8851C02D82B5B48265
-7B11A40E8793300CE171853FD82874E09D814F5833F04441329C6650B0B7ECD3
-7FEC743EBD43E7F88542C389BED47D31A10FD8E02C23FF191B9F3174113723DF
-934E3665A5034A639C17B3985CD6D2F1CA289146581EF6D1BE3717EBC7E6A824
-C3D2290BB60244E163D213FF98A281FA409513AED35F15B4097FEFE4C3AACB03
-613570E1D66D29BE3D14AA5F3266920FA088D33948D96BDBA0E3980254360DF5
-7A7E1836BCBABB7BF9C42FC87556F8D08DAAD6249B65AE106296BB7F0C36A86C
-1A7DC23EFB77AF78D006DAFB6A703C6C1A16EDE52BD2B01A4218AC671769409F
-90D13744FB1FBF1F2EB3DA35F5B0D13F3862D69EAC091D48C57C647F71A0D718
-233F6A7950A610E1CAA551BD702098466A9ACF3F74FB64BC0DCE6C952DD26739
-857084C96302B0B641D425EFE5A2857DC340BFD3B8ECED763B298137E930E6B9
-A3C2565EA96CD52BC01A2959B21CABEF6DF7837DB737E006A72E5945B076F197
-84EBD29B05B50A78C92D0F2EF60C8842F26B506C1BE919590F4FB4FF34923664
-868037BA9C227C790BFC0DE4DD05D54D975B64F845540CB8CA4A005F9590B511
-653C782C81F0D64F3FDF8FFB627E985E877F41292BD6B752F76AEDC9846A1408
-F3056CD2C28ECB255B5FA6F3BC782A2A194559F33DE3FE01B5FE1BC223A15E2D
-19A2E61C48BDA40451EC6D1227724B9119D0F6BCA1B3E0394EC201D29EE7BD06
-99FA5D7F79A7894B801983D18A2AD3FFB641EEBC30313EF5F0E7524D1FD1FA9E
-3E996BA34FD8654EF1CBF0AF94929B7FE3B59C3BE1D1328CC1041CFDD358C360
-C275535CE03332E745115BF3212802D0AEEA8B9830E8F22D91289B531EDE024E
-5529E078B3F07D44CD0CED639E3F6307F3A5920C80461653CD1165276A9A8406
-C977F00D546307433DA39B3F0C7E77FBC3006B9CE33A9AF600A2E77947808B04
-C8A8432483A92B52649F0DDABE5DEEC492F4057F971D217BDAE50F2E9068F047
-65C9DC2BF810FB485424F1EEE5481F0A418BA3B04B0982F7645B72EC3434463C
-D7AAD47D971B0EA27F08B4768E5534C91BC97A55DB0C507450CD8A23A69C69EC
-88E3920BC8F2546A64F94DFF27825F40EA724E372853B9D6F88B076B2F3048C1
-418296D7C1C334C7978CC9CFF63D389A272D089BE63E2AE49B3111B16D7C799D
-6C748B8215DEA3A0B3917E1BB566409EAD33315BAAA2DAEB3D8CF0249D77CD6A
-B249757258F85CEDA706631A3A744B58199520234BD0CFFB9A2419ABDE6F672F
-1A17FF37D2F90FBD4EB7FA6A61D8AAF46A0088E5A4036BAB380E009980E4E046
-D44809CAF538BEF8A6A9F9FD0F79292B7E957C9ACF483334DBCC6F74BCA0A65D
-37A6F17FCB125391F0D08E5D2D103FB724254DBB0AA13D402AE99184C3769CD8
-B815348CCAF561F9D0D9E822616A8FFE8F8C5551BDBBF975772D5950C89F6205
-76477756526F9E1DC50AE067566B3BB8FDCBA50C3240425FDFC0ECC4C13F61CF
-C531DCCF8409AE8F982BB83DFA61127741962E35F961259B25CFAC3B8D4B7661
-84F2B75F8675AB774DA36A90FAA5203226CE0C1559D9EF9548C42AEE0981EE2A
-ADABA93DCE5749C832D6346536CC1B4EDE38FEB505C691AA2F16249555C51387
-0943062F78BF1D3E2E9BCAD32360E994A7198FB6FB73BFAE552DA090330B2EA5
-83BE32BCE7A118503C991E52A5608FC6FE369A851E21F52EF086D5290D254138
-97CCBA430363A3E9A857949EE4B0038A46139B938827D308DF12160EB4589AD4
-51F43C21C6B37F774170B52BE4B9059F4145B1CE0698FCDCFE0219543AE7EF0A
-581F553986F396A9BF2DABE719F5323E022FD3009D00BAE068481B3BDD54EEC5
-2FE03CCF1026000405284A3B0B4E7CAD80CC4715DCF9876E0953529FE25CEFD6
-E880F78DAC530CE52CF4B386DF921B4FDEF292C1946E8592C991B4ADDD161CEF
-343920F9D643FE7E4A134B301FB80E9F250E3D4103A6A80998565F1985517EA4
-A08B6DF5C3B04A5CE9C2E195C9F616295CEBF166EA762DACFCA087342A95CAD1
-7CF50A554DEC41BA6DC058B8DE3EE6C915C19EB54E7BE62D27A657A5E25451A0
-9AA9CF07C84F0AD930D7289E5A89ACF43B325E7AEBAE129D1F9362307603BED2
-47EB0AA9506711EB69AB7DF32FCEE97D305558147490B729B91A26BB637800F0
-D96E0A0B2F8CA9565779BDD5AE2C8953215B14D01C97AA2E6F222F3A334A4260
-793A569202E944082A535376E6C43877C42E7AF340DA943A3CAA65DE36FD7D0F
-63D5416A652B245183BC054F18B9DAAC1B737E39DAC19691BE14E7C34F2CD914
-9DB9D6EEFE763E88B68C3709BB720CB64AE6B53D63EE734EF705BAA0325E5B3A
-01615DCC3427909935A63DBFAE60ABA2553F4B902CD10FAE937CAEFF4CCAC346
-9BE15D5216E6AFC9EF9DB97CBD0BF84C1C0D236677754E7DEA7E8D7D70EBF3D4
-F76F085D46E3FA5B54BE692559C6A921450A80EE43AA32708580A635B3E111E4
-585ADC605208EFFF7DA65F2AB7CE1BB3797608661F24540B65B0BC2A967BA0A9
-589FCC9E21FECE0DA26FD85BCD09F79F2989B284C5F688264D43E6F2594FBFF7
-8459705BB01BA576EA4F2EB28BBE01D9178313B7B784E11F9E214CC3697E0DD3
-D71068D077867578033D1C6DECFF9E20EAB41E79D0975A99D16C886EF3452F26
-BDAF0D59C63626434165299CC6B943FDBFCFAFAF0713A07E6785CC8E8771C080
-EC6463B0FBD9903E845525CCD2DEE24A11C42C749AF67B67EEFA096DD5860AD1
-75DCA722CF280C1D76A0BE878D84FB69A34A8B5FDC115FEF5E11F14F40C522D8
-09B058982135D811ACD94E29FFF3FF91726E8E981749AA281DD237B12F994802
-530DBE2FC4254243B0D0BB483BA0F0768AB055EA84785E0E6C955E0BB66AF909
-FEFABC824EDCA7F8FE1E1D4B10D618A9B01D29ED46B5284C2BD31617099D73F9
-E33193ED394F895F40C941206876531F8CE68F6682FDC0D7110F3F72F1A896B0
-64C752337D910518EF68FF843EB63E62D466E328C3B21114E9B50C94452A0AC2
-5D145AFC71665D24C1B357B7C33F3062F3A3C62C2F261C116E6E66B23D86CF00
-497189200BD200A9CF608D78E4066A01CCA2B61D6062738B3915FB7F1F94BA84
-EFB6E7E43F62082F1F51073651925B9BAA1767E79317C54377ABBEEEE2FD8485
-FE1399F5F3DD5EDFD3003C1ED74F6A5DE9BFC51DB939E55DAFCA94D0E89323DB
-68A8D52F0DF168F4ADFD436E271AD2DF4376A835B886EE3565CD2FCC642C6B3E
-A01B998060F6A132C78A97D45541E4A2B6699C07AC6336BCAD8C57FC5AB74109
-D6D1AA0CBBEFDF35A43BAA60B6476F92F6BB85B3BF63A4CDF10824FB8274736A
-7FABD17B443D69DF7CE29B45B716F3F5CB4B5A4C71F99D4326815C4072E97508
-A6ADB4C48B541B724A3F3BD80FF1463B910D1091C1BF280A1148DEE7F1A953F6
-61A006B614AD830337B18F5D6B2CC0EC5402E6FDCC81B76478AFEA9EF6A6D5D6
-7B09553BFD0F60AA2B36C1BE3C30E64DCBBA143B8F83644B6A7A1056DB08DBEF
-846043D579B9A1A88662B4FFFB80018F9DF2B0B1292497EB1E0F19C84AB2163F
-DFBBCBDFB9A487F0A825807A1F12CE7BA75CF7436F88566D31472F4BCE1F16AB
-4441202980DF34AC9051E70171DE69B8C8B03D0F15D7BE95D3D0AAA6A82EABC4
-2AD24F67087AC91DF56E121DE01CBA5F202730889A03BFF834392D7859EF5BA4
-F9AA6AA0A082C5AC36CBE22668787809EBF2F471825655DC4FF532D1B4BAB278
-D0A775D3AF92B850DFDA1B7D0AD3CAE7D009CF0A12186160E29744FA239B86A8
-8DDB50CC132381EFC8BD80BEDE488C858C66966D8E84C67427A261AE1D50E127
-0FBDF478F15FA5CBE925F753FF13393BCF96F0E4CAE6C30AB6FC965B9DBB894B
-DEBD651C558430F620B47EF3EBD29F239CEBDF6B89B7B94D2ED0000644CBF1EF
-860DF2EC44A444E5D0328A5343329899A661EDF3878AE2C09935E16697563B20
-073A6FC372E76328803DA9BD7415B44F0B46ACB8321CB49AF1F420EA7B1D5F99
-2300AD9E8D4E8A66FDB767A4227D2252A61670A293A79E0B07BAC6BD0F12D8B2
-3FF4E170D6D2E8A0A9746A76F81B4F2FEC1F7050AE35FD468DC400626295A4D2
-52A1E243C4F52B6294F72141A0AF1A04B753F376AADC56359F7C4ADBFE79AA68
-53E3990330F33255287CB1192AE506E36FB3C3A00F2FE277722D48B526189372
-412F957A3D33F9B642DAACE6739B0096FE4B51E6FFD06027F7339778CB5BA57B
-34EDCF26F51A17C0370202B3DEAA2175CB97DFE6EA831D241DEEF080B233E87A
-C18672E784E66DFEBD46CDDCA5F4D98FFBA34D6BCB0DD73FC52B5168A35A7075
-E06D14A35438A35CE3D3540341C62FC9D3F1ECC4292A4783926AF2E33A8324CD
-87AE643A10E4823CA797A6D874840F93565E0ACC14E8B15A367ED5B34C920F03
-44E5CF0B77F25EB6E156D91DA019D1DFFFC07DC721F1CE87EE0B5798FB05CBD9
-AF1A1B537C82516022D1C455BB3A7400D311135F91293DB610DC5ADB8726D71D
-74E19DFCDA3C9C974CBEFA7DE04D0EBC0E6F36B76C0488275177AD779ACF91C6
-557E6259C55186992A07DA27629C12617EC2AD99DB78747D903606B1BD731209
-368506CB88E926D33875C1F03A076F1E2DEE72B04AE9CBBD637BAE78F85D5359
-F12FEFB099E7F79F9F4E4BC19967EADE1C774D39E17283D640CED5EEBE5F7065
-B9484913948988BB6397FA675C3CAD9184AA103ED711647FC1F2447B89A491FE
-07F08861BFDD33D8BFCC29419195CB424D7CA739B071A6CB48AA07BB8D6EA149
-6D3E5F0A6C0E0810FE6EA95067216F4948F14A1B5BA099FACBE40AF2EE31FBAD
-CE4203CA3A448255C2E01D848E1E16A06BF4911B3B6173DE296F8D599353943A
-340B7AAF53ADD697F7F0DB8C7AE71D41291C14A6BDF48437F53521C5914DE245
-B090282984C7A044FAB93B310717E1CAE827D3709FA4B3133F4B1D48793C8B67
-7520CF5A1667ECED10F65156FF80AEF4223A3A1DD4A2B5CFDCEC54068A5110C9
-B6BE775E937F87F78BD610C30F41FEFC96CC425E1D399F87FA4E224FD6DE6156
-A6FC881D166C2EF51E74020A7DA82C23C1B44D742DD8AE7796562A3FA1403CB7
-72726FAF5243AD865F16E1C7E9CFA9FB07C8D50EC46E6BA6204D7633595D5449
-379F93B7B5DF609834A03FD494DCA24C38988143C9BE067CC851E592209CE9E3
-EB91A4EBBDE654B21162D7E5569CC136C318EE081E7843EDBF9EFFBAD2372FD6
-A8C7BC331E304175AEF4542E601C15FDAB36310C7ED2531B06E0D8ECA422765B
-8FC546BA663B30831A2C948AD871BA3492A559C9E167E722EE6302981C66FEE5
-C8797E4531EEC2EE800363BEBF135FBD49958F17B3C714E30CE8150FE6B10C14
-1EE290B785A68646714C865A5525935AB83625D1C4B36030714561BAE2AFF947
-9062EB00A5553C70541C072627F4B2002B273098EA313ECF8D4304D89E4D58E4
-8894B1747BDFB183AFC1AAE2D4EBED27037840747C2B181EBB4A28F7DBB69AB4
-B1539E8256BB8FE1D496FD20C27E4F32D760A1589F1EA8B1892909A3FD5655D4
-E922F8178C513969267F3DBB4E9906EB689AE2CEE01B7E6242B2ED98F7D10FA9
-48AFDA10679C4375A6EEF12FC20DD02D21CC44995559839C1093E6EA7D867D2C
-A7EF5DCD6238FDD38A0C368F199AE515C8546F8BD511C9671510D335B769FE8D
-DA7554FC032DA527C628650AF7CDDEB5F0A17ABB3D30DAB0D264E523510351E3
-95B89A8B4BBC739708A9F6E2A9B2E1C246D653CD83E94847FD563F76C0F97E15
-87FBA4C60C3093D184F41BFCB3C36DD5B64D0B54D5BD45C36F4F0CA49B4B3871
-D5D7AE4848B3545FEE5508A5437B6336B0CB1BE95C52C4A956830CF0C5C77EFB
-89AF33CACD05C7BC3DEA59023F12B4DFD425762683605B4D6D0578D26C89F116
-46D81D0077CA9E1B418DD33BE7BB7FA0390C3015A455BF34F9F5521C52050B8D
-C467305A567984EF85ECE9BA26A60A81C57480E1342E861BB24C5DD2014E32AD
-51C74DF5EE6621532F926839C389C6943D1CC25957578BAA1FC0E3946C1198E2
-CA33BDC0CD4A7146C06E9CB7A094BECDAF9DD2D8DD90398707728B7CDCC0F512
-5587FACF96DE3C0CDC40D11059DA30FC8266120F94E6760E57AB1CC6F97A3373
-DFE6E49474A9BE9BA57B204070A2181612F62C2FAE9F76FF53E1EEFEBBB418EF
-AFA5D01FF7E2AAA3FC8EF390F1C90F81F7B725F577DA9E3724E4DB5D8B7EE2F3
-66989DDEB59FF71BB3FE57CB6A199A0B8904A00E7690269B916E00598CAB1321
-092F490EB7901D5E5B0CB4308CA693D9E89740F7FC86A294EA94EC5AA9E5556A
-A18D56E6DC6B2D27742AC888A0233E23F5DA77B88257AE4A4B50EDEA38F3FA61
-1E23B6269E9A41ABDC22C0A8365103F27E508737038F8E1A60FD47452CAEA728
-E00BFE2CCB5CF528295D5E689136C5637CE2FC9838AA32D84C8FB5E26962EF50
-0B545B5B4DAC2A05A637074F2514D6CEA7A69CF2F88A05C0FEA61B6042E92A46
-408DF757305F686C0E3083A06833EC9C8B2B23B6649815307978F32CFC60F17F
-DD370E1C0A7E5E764D212A1F385CC73725E08ACBB8CBF759F66AEF5AFF6C644C
-FA9807EDD1706D83C8A5C88AE979700ECF1FB3BC3ACC1AEA58CD17177289CB96
-68A67167CF719FBF54BCA2FC0338CA22CF1BE9E6DA4193E0754B5F3F0B5645FD
-19B9DB6503C2F6200CE27E6CC79D0F10EC7114E5CD60CBEFED555C8FE0F95209
-B5107D1181A4B9D6286F3DD8E664580BEFDB436E3CF716BAD8CEB658086346E7
-083EB572FDB69BDA6FED25237CFDC5DB6F1BB321B27F61C5E5899674AE1B0808
-CB878023FC1CA40AAF6E4AB02BF337FCEA41A20EFF533A03FBBECEE5CA70E196
-820A06C57FA25651940679389DD522864DC5FA35107087293FB21F8DD2C3BFF7
-4F4B5373D363BC73EB8CEB672204C8638C9EB97103590EACA1F0F3151A57E436
-AFEC0DF129291509AAD40E6BFAF8E324CD9C17AD056FD9C7AEDDD3C4791C1125
-56D15190F34753ED08855C8D1448F39AF103706BB3BD67716C0A96DCD01331C1
-F0B0C56D369AF5DA96328EA85DA2C427BD9BC6968772330442684C39CDED9D16
-F6F25A9CBD94F9AB4942017F4551168B0DA8A940668EE04404E5A62EB7CFA744
-9208A56833949C989E2464E4D4CCA2A956CE7DFEE8B6FBD69983362017FB07C3
-DB2DD65AA40E019BB3B4579D014FAB4892D5CE63C9EC14DC71D69D86B3840B7B
-166908760E4E2C2A598C71048E222E0A694EA77CE21330DF75433BA06F6B93D6
-C7A68E1D370ED66AE05C03C74BF2CFEC3C1231856F0113A11B84F5E975118955
-08FC432A4EA0DE469CAEBDA7800D2224CDB7E386F81E4D27B37EA521E38B1ABF
-61FF132292B87C362661225E64FDC8E9E45370CADAB9B57C9A0CD09C699D9CF0
-FB14A3ABCCB87085B33A08BE932074A7E10F5E733FB981EFA68F95DA8DAB2886
-8272D76CF125E81FA01EC92474431F9BD17EAFF42437CA4027E5A68526691A76
-A3767AC34172C5F509D8F6D3A9056F02D3ACB43BB5D70D8B24F5CF8A602F263E
-1BF1184E4A12BAACD82529BE2814E73038AD71730F2AD6EF0DEEF2673B0E8600
-50D316A9988E3B35CEF343B0E5F24D0214BFB1DABA00387677AE8D16FE961B47
-6E56551AAEB6AA9ECA626ABD01CA41EB6BBC15FF2892D7675F23F8959386F24C
-170610025CC0F6724E975DBF843AC45C0279895274FB57091432F504051A52C9
-819993050681762E87154B8000D436B04768061595694649ABA87131B0B8B850
-9B9AC65D1CF1CCFE6ED073AD680E9DAF2FFF847B216EA50FF97C2E0738E083D2
-54C9BD239B4D23C32A6B94BAD95102F70DE6C64BA20E480D6BB8EEBFD755586A
-EECF15900961CBA26BD6FEC03C3BB51A5D17024CCF8F054980E01C45BFDC1F18
-CB160EC8722349AC2CBD62B12F0D3C3555FBD815332F15D4BD3C833B4699C5D9
-57F84D305C363D7387E4011C025AE775E218E8BFC12C8E3727BC4D0D28BE308D
-6AD7E438094CDE7E2660234BE947811965606263564C7CE66853498677DD8F28
-943CBA9FD54E57B1720DBF90F6E399CED323AC651BFC4770911F515CDF8AAA69
-D2E26A8CA01859367931A33E96940EBFE29E653039622FC202A2ABDE7B451B00
-2E93E8AF6ED01D1E1A076AA60AE5CC51406DF644586AB7A9E1E20AD183AB50A9
-CF331A59D7691685C8D50EF7B473739799236302FFE5D2BD3FEC9A825DA4E686
-07E2108E32AC88F180C63C16BC300119A912D1A3D2ADB435EAF8B4B1437620C4
-9BF07318952AF158B6FBB24E3BC8C79949119CB8213864FB444FD39344C696C4
-014975DFD60E5793947D9985C668186CFF156B5A51A101FD652BC65B945EEBC0
-629D88593334CCFAB38D5E13A05037D5D91DDFBA4656494699C6DD524EA39B50
-3851D7F0FDB6AD2848426787C8B8F7C5A65CE9ACC644636D236409AD05C7AF57
-90350464847E98E9806CB4051992296FDE0D24EA95814A8F7B1FCA2B3DD7E1A4
-BFE0114B02876615F15E3BDD86C4D31619007E8FDA49EBEA8927EB28FBE0118B
-5615CF1A2479B97EA9209B2336D796934C2ACCBD815A603643EBC010D77F2DFA
-BE1934ED3617FB150B2D69AFC9227CCF457C31B6E98148D14F22889D3EEBE747
-1F58CBB932CECCE24B2E91EC2CBB4852957B152502BCF73BEE6172AFC954B44F
-1649ADB935FB67389319E24F359A87C790B8E04D997F48FD97879D969C7F299D
-99B011B9DBA379F5A90C5889DED01E871C39B9B3BF2A5F54C04E5F4AD327227F
-197BEEB00E54FD85911CB14675B3FB5DA8B4FF9D80EEF5F92DD6D22F01A40B18
-8CE8F740348E6458B2749D084CCF21AD59CFAA438B5B2B52BA165C3776FA5FB0
-59F95EDEA3F05B82817790C2247B4D4BB6D04312A176986C4DC3EC5BC5BEEA12
-BA0892ADCD2E5817F971BE60529228E88173D053D8D37CEFC40A53E3A7D56655
-E78CE8D89E0C2157F462B91BF66562608E84A7CCBF0FC97DCE7C32F4937CD1BA
-5A9EF98122077CCD77F0D4B413D88134428EDDD4B408A1CA44227FCC064AF791
-74B378997106AB867A0DAEB81C05A0E52046B893EB3264B13DE157487A870B21
-6B626804C90CA35C7487D8572D374F89BC214C104623F4FEB3FC9921A37BFBCD
-5691FC8D34C1504ECAAC62E5639E3D603DEAF642AFB29D65510C4649D1E10029
-478F57006EB3FC50650C79EC23799E3096B920D519D2777C0558ED6148CA36A7
-6B7960FDA29951C6806E43D886F4E09885AC300738BB85CCF1B9DB2702B26D28
-E71E20C15361E0AE4E62321EF84275E6C38A5394071989EDD48A50717C47F6F5
-FBB8CE06F4B98303F87B580F791BC936B474EE9AEF5D0B520394D29864F54747
-312FD93DEEFBC9A4E8948D0F04981A4B0FFC277F5331EADB2C9B260492104D1B
-9FF4A550E46526E18628FBC914FDFE4AF06FEFAAFDB7612BEB08A8F9701CF8E6
-16FEFE9F3FDD4C69CD8B94E774C6D7A5D0DA3B5542C8CCB50D99D2AA72E775B2
-F492FA87D09BDFADEBCD184F03EF0E2D32E9CB8CE536793FE7DC4FC36D4CCE41
-C7E4832CFCB89AC3C2D9424032B5200C0EBD030450E1F187C05132DA4CE553CF
-34322CAE917D85EC50CE6B5FA5683402B23DC346ABDCF3E6DE9932BC41CAFD66
-D5458DBBB689B60CEFB2C684764732C290F613777624D349DC3CD27515F730D4
-F7E7452C23FD57E50888B33A9359F3834A45DD8372E4CE789A50D6B4FAA9E5EF
-C300CDFF97216429E2F04F607EC88917D4F37D54A92D2B7E071A556686CC334D
-ED4E2509248075FCDC6E9EE6B36E1D1A87F7E7A5AF045184C7618E9730A88CF4
-788A783A9F0FDA1A62AA5D739618DF70976B29E2070A5DA79E7BE8BCCA15B10D
-C3034F128A120EE0204CBB875525B21ED31171E2671A86080DB1708AA5095096
-87B4A93754CC6728BA0FE317ADAB3D080132107CEDE64DE0E8A2169FA6CA58F0
-C0F859DED55CCC42840845EE5126C67FB7C12D06255EC8C1EA8D0818AFC432A7
-BF138150106B06296C19F723677937F0EF4916D9867A61881813165ECDAEF3B9
-DAC80ACCDA42728B299D3162F604F8EEDB5329516C21A722B6F90B44E3C178E8
-05AF55DCA05DEF68AC75F1AA91613E34B528C9E104A8A620DD863B7931441F1C
-980A606A0B2004484C1A2E88D0AFE8CAA98E5A9064C923F14B2B5906F9DB8F10
-8DFD79F217C965308DAA3A6F387B0BBA044588845A80B3850D96CE61954D7E26
-EC7D7E92001BDD39F0CA86751F6FC4E987A6C3267E60C8A02FAF445916B9BB44
-2EE70009084AD0EB3ABAC072200D33EEC864D50135653DA2774B9283D8978DFA
-EA91B0B759BDE7867758493A9EC7251A7C620DCCC132CD154F2F66678BA89750
-FA7E3D23D3050FC9D54F990A6F96F035CFC231302DFE51D0139FABA75A23B168
-685DDA1C9E68236A7D19541193F753A633B103FC09BBFB3E6F384DB7639429E1
-76EF95062BBA
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csbx10
-%!FontType1-1.0: csbx10 1.1/12-Nov-94
-% CSfonts -- pfb ver. Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25027 25304
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csbx10) readonly def
-/FamilyName (csbx10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 444 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 686 def
-end readonly def
-/FontName /csbx10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 68 /D put
-dup 70 /F put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 121 /y put
-dup 122 /z put
-dup 185 /scaron put
-dup 190 /zcaron put
-dup 225 /aacute put
-dup 232 /ccaron put
-dup 233 /eacute put
-dup 237 /iacute put
-dup 250 /uacute put
-dup 253 /yacute put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-60 -250 1164 908] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E729C1F3C653E51B9F09F139
-E332F81467DCD46C6B80A4E88E1FB2B35C9134E8C9E669DEEFA533F7F13511CF
-F16ED856C594BE960395D34E6F1FB840870E1390BD51DF0CB99AE59E98B369A9
-308EBD4D62411D723A06592B3F044EE52173E7B573E2FBC21F32D00ADCFD4905
-7907BAC782355B39ADF860CF2381EC0CC3136060C15C7F794F54FDF9445AE615
-FA03D051B337AB511F64C838302CBEB69E431B2B66B4CF0E61EB5ACCC8F55213
-E44FC7CB51E3ACC12F45BBEDC00C9A63A43839BDAD1C0186974C7539367FB600
-B9D9DE3DFCE060C626C826CCC9C6AF9B765C6D6487D5945B01FB21FD234A6D46
-FB48C4A049CA13C82BF001906C71B5E4C7D8317DEC3B2F4A0B8F28A9CA07F8CD
-FAEB3ED1ACDD5162F7D3491964E990EF808D40307E9FBDC0AB3B5BCAD56C895C
-C6666B4096AFADBC5B931D07B418009ED6BF9886982EF5689E1C67D980F16913
-28DCD11AF89476D84997CBC50E8E7942C3B7AB5C03A7DF37E3120834DAAF7EB6
-E1A625F38D0EFF2CE86A1AC4ACA3A3556D98D515AD265D35FCD8750E1F4E73E3
-A74900BDC6A9FA84C7A4A36214935A985CADB31B33706C0DDE055D4BBF888C0B
-38320A34A47CC395F479E84CBFB77BA6F9EB33F344B34D19ECD3466836255387
-772A0F959C9872EEBC9D69943B4CB8051FDB325D6277BBE0490A93FA59538F70
-E3AC3CB5A692944D30F6910239CC42F60DAAE4DD433F3F975668F57CAEBE86C8
-FAEBA262650D218F5DB434BC6B1DFB3532D244AB20D22A7E42C5EE6D3018269A
-8541F06633E64A7213BEBCB302886322215C3D9AEEC195F65BA110D897AAE35A
-FC5F90AA018E1A0C5BC69220A49AD863023AD349757E512042A101C8118DD50F
-9C8BBDC7B3E70E8959857A595C27F9E77496A50E83DD2AB513681A207DE3C58D
-43C0CF228D97497B4AF40E8C06F70D6F57CB07C4FE265CD1F01DF9CE14CA0687
-A58CF8150494A7C35F098E9602137EEB7EE353485A89C96E5188F9E0672AA9BD
-D8BEBAC637D3C1FC1CB6A9E46A2904299DC9FCE32806235D9DC6A3CA9AB79F4D
-A8B3A206698DCA8E3C32777B66C306861D1804686C70E9E677FE80A8C2EA40E3
-19260D8DF961B469BE5C0644637E9787C21146D045F3C5D5F98FEA3576D091DF
-92556B47B2C5D90D8ABF8C14A0C8FD4F4FCBB68971E4439EA9547D4E09D99124
-3111D02F4C228490C47EB3D54C79D3849AF18E823911621F53D54C34855FBCBD
-E727ED6A8E4E5C373769E6B9DB3E923275926683F4B77F637F9953C042A412CD
-417BCBCCD4836BA816F517976C798BA49413360F4AB6E2D6D2ABFFAACD9DE329
-E24EAAD32603F2C48A25D198AC539A604DA3D9C6F90676BDC54A16586D58C8F0
-114D19D4BA338890C5E4C89A830E36982B3F7356A05BCF4DF2CCC15628B63821
-5C6BBFE1ADB167545A1FA648B401EE68EC4F25D587FA08B3DD4D7B1059ACC681
-384ED46BEB92C39E3FFFA59AFD9218ED0F0EEDB0C7CF4C9C557306C10A99284D
-534F1505FE75349320256CB0F6BD29CA2177EC8E8B0528AFEE349409EACE7793
-8C1A2B7E4D651EAF719D3F6B356E8C4A7E6797F2E826F75943A0911A73DE8F31
-014CC3808CBFFDCBE9928E0062DB07EC284BE862A9A2917B4B4E0F6080580619
-246321AB5FCE069695FA75D15E336AEF8E52CF9B2903D5088F9C6F33243C3203
-F241B1E2DEE785425B8A3CB371F8AAEC54859A9BCAAC35FBF38FFFBE2BD98110
-0E8B7446C07B2DC41A4DEF18F47B79E769EE0D9B8C5CABE516B15A1C9A515676
-5D8EE4E1D799C04A464816E985F93D7A06B69964346240FBBF35D635DCBBDDA4
-4F1073D91945A036E575C7A4F038618F4851249D4680A3AD1F7BE79F4E995206
-382942615B9A280A4F3A37FD33C9BB7720E5B39FF719B82EAC5D74747F804C96
-A974D753E21D76E1E78647EF86B4D950F17B8F3119BD31D43CA2E540D8C8C091
-A8831C82B77DE71B44C81DC3CB1730481CE1BF5378F38CCDE06E9326712AF114
-DC9F86BE51C320ECFEBFD9766FC9BEBA6883584951B913DBEE0857F04B0A4600
-F5667B96E362E4848D4505965DFDDDE2CA0F51A16AF9082ABF1BAC60BEFA972D
-906D012BFBB3F2E796D6B56ECD295C5DA05AE1C8BB06E60D04CC59F665A7403E
-0929E42E6E0FA9505DA9D97ADDE5C05970C37DE096A4B5F8DFD283A167E1B8E8
-3785D5DACCC1DDB58523B9B359244DE9E0A8D200C202E046B6DED0F5F2414A5D
-0C47948A558C53FB128DE4567568CEEFF15D36C55585E6B93FD7D953894FD71E
-985328AB6EC292CFA50CE69D6AACB8B8E1FA2AE93EA4FE23B163BDF195AEE33A
-149314B62997DAE4410694CE7484B9F82709F9FC520227B02C90C67FA2098530
-57ED811F412BB9E9005F378D577514D9569BDFFECC18DFA953F47B84E20D0A15
-0BC60BF983236BA8E0E902CF8E94BAB84342F86F8041C3E2F7F6104C1A8D2DAA
-EABDB9499A4DBB2C2759D1AB3A34EEA5F799FA61F1813281AA4C529BF241FE17
-7603BDB87A0598EFBBF6CE8FA0DD67F4D13E26E406BF6A03605F77D7D7D7983E
-8B8274B99E885FD3AF61927E6A5738EF7CE6F5F296DCC5283B0821E9D6EA198E
-509B39C6BA68E9B357BBE0B0D510B157934FA99DCD8A91C01A46B33CD2AC2C55
-6DE9D95D40007EC3CF2D28474BEF6093AE8A33D7996E158D64AC4FC8AD4BF21B
-8293EE770C8A73564B477CE92663195610934B515AA390A00243CE0F4BF1BB01
-A152AD7FE106A6240C2E11A64AD8CF063805D68BDE3636E7BDA6D1C01301BF6F
-7825A5C5B3903A7526C4D25777401EBB72688D7F7C5DC3810CD0D40ECD22C399
-B97F231217449E66040EFA9104781BC4092E89DFDB73ABEFAB4058655D4894B2
-14224B36D9B9D21C04DA1F9CDCB6C276AC101F77A84B431DF3360B4DC4C6702C
-88FDB095395FD9B90116C1AAAAA761EE60B74138B33785C750E59B8F344CF20F
-8A27DF10D18AB38131097C48993268D27D99BFC273D7465C03CECD418F829BCA
-0A50A4AF5FFA39E5EB97AB12250460F497A82BE12288921FD8F6E6E514D2A755
-34687D264B2B1DE4B5ABECE5696E5D158D3C9C43A08A9A5F8C55243E3C1FB561
-279FF668B4EB1006E29AE4A5053514F98B1024F261FA7488F1AFCDE0E799330C
-4F9572C68FE8185581E0DFDDFD39FADB0BBAFF46C34AB17D3A1A73C8755B7A8F
-F3593CB2815945C2FAD7CA5618202EB4FB57F135DF1DEAA0201FB7A8453B3FB9
-D325C73CF27BBEE93F38D40E9900B9FB602C47E2E56494963E62BB8FB6B08D91
-2DBE58633DDE655E43ED9885F7F68572F82EEF73EE362D8AD4DA6CD8C4963435
-46393A215684E0A20DB432FAAAA21570E2C79594DCE22CB6DA1ABAA46A1475FE
-19CCB09ADF94BC4DD35AAF57AE000A5DAAFB9BB967A92097267E6CC790157DFD
-E2617DA45E1089F30413D934A4C3F69AE085F9A68D545B0218C107D4B26EF873
-655495FFDBE58498F98ABBC55F92D085D95DAC0AC94B680CA8F0096C975B10A7
-7B0D38759FA0A8C25AF088A86903A104E0EA4567E4FBDE7C2C836E4B2154B282
-06350AAE0BF06AF1F64B08DC2B883E6FA1014DA47B77D953903F4807E54E7ECE
-D9ED32206A4C0653EF1BBBED540C5726342B23E89270328961B05CE7EF8B2133
-94037B301CF2976A3C70AE59E30D24EAC361895D8B2E3098E1E40E17CE6B9DE1
-7683BBEBAD3BF4466487BB904DB43AFBE3871EACBAB6B6786B280240CFEA1378
-9B8EBD5286E03F9797ABA5F4684D21EC8C1AAD43FA373D6C45EC5B40C7C6192B
-216569A115DD4C5B335B26715CB18FD8019BBD2E58BBF32164859804082369BA
-148FD919D69482D0B16DB44E7EDFF65A2444AE146119B115C489A90122C13948
-7AE46F3194AFDDDFDAF95B64A06D40069577C5187B7C35C25B0FB44B93B17B61
-7BDEA227EACC07E3DDAA318D433B3DA8D14575189E5B79AE70699EE248FFC365
-403616B7CEA32DE77C2D29EF7E4F5BACF38872BE19FCD1CC402DB66E195EE094
-15F2E091012789079F24E8B75354C78D702250D0E77B7F9BC3E8D8B89A00338E
-C5A1B086A3F3DB8B8F87DA48A45B223F043AA4B9F53BE5E4BAB9A9FAD17F3EA9
-B1B4CB5BA6FEAA5935AFEEE9FEC4E30144AB7296AF26FA37CCBA79445F6F3AF0
-9D473B6618D1B552B8560450D315C0CDBBEFD7B62BBB5EF5D198178DDCEAAF8E
-BB76802FBF7771CA6D6081C312053B5A3365465176B636F3BA43791D8701D4B9
-45ACBA3CA361756F83233234E44F375B47B8D12A0D766BC05FAB092F6FA11EC7
-057FA9C303346E31534A7D0AC1B78CF6D9D1D03E1AB74CF3C980B466C4EA3783
-BD317F06261E4F7EEE67FE7965BE9E21E3FB99EF0AF54E554A2F02892E6546C2
-3E3CE6A9006CEC4EE733718B4B8C2B92AD09BD4CD4880EC34947708E2878CFBA
-6397DE32299869CBBDB4048BB2176ADA5605E50E394B59F33F718D61BAD8AA1B
-8D948010830FAE3CC75868301905CAFD5209240D23F34FDB2405F087502A2D98
-E8DDF7402C72C296D3AEB2F6A1F6FE81B25B8C3BB4570919DBB7916C62FC4C93
-CCF733A6A2B65AD88A102847533D68BF799360DC82636BEDD8B51F5529711121
-163A36BB7664B98CE379EF3787234D2E841D97FD1A8E2BC67FE045C93F403E1D
-59EF5765AC4FF95D5763EC0F41D2E879E27267BFA509B93D855B61FD1F3A49D0
-836F70D833FF2E9B8E688850B1B164CB41F54990A6D9A7226C49CCC309794EDA
-44CAAD11F956E3EE046B06D24579B5F04D645DF1899E189FD50D929E44305730
-BD61D30F0E2C5A3AD1DF2E3A05D25A964154FA096899CC35ACDDD9DE4921CE80
-41FB4649B556FE4E0EDF67E55154E57C96F560BEB805E5456772B80BFF822E22
-EA13847D867A1E3E56A714EB0E7D20244AA4275D964CE5515D87EC3F26B335EC
-2EBBA5CB0DEE8271002AF22185905F9C9E44F90BEA91E65D9AC6DEB4395631D9
-A96DA3BDA4CB2416CE4D40AAFB44F7B026E687577F1C9046931EAE225BD536F4
-EDEC94E3DD1963602F3949C5CB357C1C0F8B6ADDB33AE6CBE95693FAA0F8C3D7
-67842045F5CA48C8EA4CFF79864A85F650212829C9B8A0055BAFBCDD88BEAF42
-9DE610C7A4E0106742E5DCB5D8C1A0C6D4F4991D514D3EB096CF6B545522FAF0
-2AAA8DCA601CA5CD0B574D31C3E065E41E322A0624E3AD48834B7F7F6C08B1C6
-6A24153617BAA52981C696D4AB49CE9798229D3C65D3451BBCAEBAE81A381573
-C138A105AA4AA27B20DCCF8AA51A35CE38F93CCB6194D295D8CC0CA80C56B5FB
-DFCCAA6E311B3A99A6B6A28400B06BF95B10FBDA47AB04D59BE2A3F1492B4E56
-B2B79657B04A85F3BB9F99F9AEA511FBF449029F4F23F17F0092C2BD87D6D87D
-B51498C6C7330C595F1D03C6C3F95FAF3974E0E12950A2F590EB8DD7A01A25B2
-C87EA320CC5CC5EA938CE23C9B18F0A4C28426829FEBE7BF81BC5DCCFD930FBE
-2111AA91C4605FDAB56A367BC5C5B02EE4E543337BBC50A6B2C66B3E5D25A5A7
-1B8491F5589C965D5CF3EABED65A6AB96D493E3C8C9C0F9A56D0E11E0501969E
-53A78C5CE968EAE73F48380BEB7063EBF9A13DE8E1580531E6692EE9CCA42E65
-DE4B0697A788AF9EC4559DA06C54B05B2DD97EF0D5248121C96AA9ECDC3F6F32
-F9A77E87712779290874AC2E8E65C016B76AD96040A483990140C4A6176CC1C6
-5E83A1E8023B095950A8673E6CBA8F4574F7F3B23B471EC220A9F2F48E90EB48
-D3BAA50ECF066C038D9EBC8384D71D868F32DB0208DAB7A08E01DBE795BB6564
-FE137F69F29155F06B86A6D4D6D05BB18AD9D189A13256231F3CBBFFF8583CC6
-61908B1AD434B98BD1092B9174A46EF3B8408EC97EFA66494DC04E177FC39200
-4C115A56E03DE423FEA6BB20C3C9CC9AA5CFA918F050C1EFCA18EA8A1FB9D5F6
-3293BF3B6AB706987D1E65EE1C82D5FC8C5B4E0532F39698AB5AB0C40382BEB7
-69259023BBDE982804F02DA684463F59BEE2F06A61DFCF3B2A082F299D34A5F3
-17B31EA18AAD9069241DF0E80C8BB025F1485E71DBD6794747BCE4807D588DD1
-C5DEDE8D24189304926B103BE2CD55439225F084AA107C207E1F718E3042A993
-1C3EDEF8C47C5FE8526D78C6B5ADF013F15628470CCA64692A4A2C61CD056928
-BA63AA3AA736FF26270C73442FE279786B99F6EF7B54B1D7D506552AE2868B17
-418DE9AB202075628331DD3D93D591825727ECC92F7F9EE7050CBC831518F3FB
-DB4329339637CAF3815A39F342A9CE167B6B84BCE77BE3BD719DA663CC386A0C
-20CEEAF6D4D6D7B7191AEAE05E02CC409AF50199B71F86B07E2C97B05A958ECF
-8A55702227FF7C40DDF14EA0AA37FE2D4FC9AB4645B6C46894D391B2DF95C0C2
-D13868AB9738F3184445B00D501AA60836615861FF842096004D8B98E92AE327
-9950D1EE488E14EB1054A942ABFF94C6B9E28DBC57273C1DA440B3DF76A5F474
-0125A8A09347FF721CCE9E88A9329572041B9A993E614C2B9264E66FB20ECFDB
-6F767575C13D97F5FDF6D1AD3FD8F58FCE2B09B4726A46A65A8466EE17174EB1
-B176D051B0AB7E03A5CDCD047B66470B773524F4A2FCBD7759733CA3844367B6
-99985D0C03AD4B5CA381218126759958B5C9979BEC428EF80FA8E2A968608855
-4473E6D5E1B930B135FE26548E2AB40C54858ACB1B0220286091E60A16063B71
-28E1C3DE0719F068CE26522D7CCF676FEED0B84EA57EE1B2C93FF5A36154776C
-1FC758396623F08FAEA90414DF2C68F47284456F851B7670F453037E9220BEF3
-3F3F4E48847168B099A2157B83BCEBB6FF9171DF8C32250E74342508C32C018F
-FB44A1742CFAD58F25F2754ADB210518E7C1EE81028EB98E047713F7AFCF9A94
-E5A9E64E02D2B06DE33E3D6E8714335D5096B3175A9E67ACBF2A07D26D6705F2
-1AC1B84D1E2738412F244BE490928C1CEABB2C96166F00D2BAC0247459693757
-866871848899B2C6ACF19DCEE9BC77284AD0B7EC385A270858DEEABC803F9543
-CEB27797DCB4F7AC51956017FBFF0BB7E805E558CFBDC9ABF482296489964622
-9C57DE7D8E5ADB68A9269EBB71E8A733BA4323C55FBC6C7576AE27517A3B2B01
-784D213165F51F431629B051B400DDA7579B1ED75FF8A5DE30941271756FEB99
-939B6AB6C9C71B9C6B24BF57FF338BC512B7C076C944D21ED7CABFE2309F1744
-DD9193960884337CEF1690C5BB034DF5F5867C5016568709967CA55EDD013FA9
-B40E7AB512DFE90EBCDA8C2FB04CB94664EDA6956F0BFC35B43720709E3422E3
-D3344E791F2B5CE33970446C119E95056B4F594E5D78D13DA3805F8D9FC1E2C9
-A03854E6AE35A763186CE2D09D8DBB66A850BC86D113F60C27DA5691C788C6D3
-3E614E05231FAEB6E0C04D1A12396932BC82D63B00149EE23CE6D2A4A86EFD52
-0B33EDC9DDBEE4EA34181B9C4E90828C9DFB1F41C1D6BB07B3A049E6901CB025
-80152B12A344A6174A35AF1E3F675B30768E84A0F021A3F0A3279F2176777185
-40A4BE96F01A7D58DB64D6FDE60CC421AC4A038B92D18DA5537B8D5CD573B796
-F5DBDE6F40FF8634539A03C42911B33C3CCAABE42E8E60B5F333CE6F446B8006
-A34EF3C6DDA6156EF51F45EF5E1184B518EDE218A0470418DE161013DDAF31AC
-B66A079F299D74DF02468BAC37B2E8EF0F3D0760FB5B2E7DF9688EAAF624CFE1
-CF3E4904293093318498EDD1A8BB5892A1CD9B1EB2635942D40051A4EEF60177
-2D2839716F09A388464CE6325B0B05C18B816C65A28569772FC91149E7B467FC
-75713A51312D46109EA46FBF9F338393D606538D0D69D272B8085774BA1E280A
-14200D05585E688F4B71BA482D373B04B1FDCC303B6B2DF6087E03EF52E5285B
-A0DE927E8181534BB1AE01BABAC693122D7EA7E8EC11990471697A98B9573D3F
-010F5DC4C6728C9530BDD7FFE35657D848775B86899F08653BEC6FDAD2CF3ABB
-BA5C9913846B08D6C4B636899A0000DA116B39C9A5B914C656E6C6FD14AD5638
-E1D19A7A029E29A70D5853D57CE6CE43AC73D7758D8ADA48F6997B250A874454
-6CE5DC51A20F19513BDFBA02F637EE9A37AE688333C6EA8142A1C464882B6F56
-04E14C88CA53E34E24AEFECDF68E673BA4A22BF5D706FC3C6632156360786DC6
-3AA69AA896BCD2A72B35842AF203B11F50CAE61F6AD4BFB275CC761C842BD467
-D614E6780FE45163E0A23259008160AA936D364710BF02267C7B4BFAB09C04B1
-2CE61BB3BD949CEA2DED2DB92E5BBBC54F72B827C26D3D8EFB07EA934E8D3DF2
-BEB9C2BFD2EA9C3B9E8EF2BBCC33E9C45D1AF7F884BBD6C6922921A6490A5475
-2C2B295A373435A845A9E0E1336FB34697ACC534E596FE3C1DEE5414E62E1CEB
-CD823E1975ACE5E05AF06D4541BC9681A9C52C716A3378E86B9B4941BECDEFD4
-6A0EB5AFDDACEC487CA551E5971565E3B971116AD68075875B6EF98EF9BEDDCD
-4A1626D2CB614754A8FAE0104C703C84A715516A9FD2E5C883E2D3F611D984C4
-EAC171A290C8F19376093B516952C81691C090A880A60D7C57F65F615F58D6D2
-6303AF77118B1C2F842494E8AB2BD90C2AF2484D3309F40A6070C88509B32812
-7C37A01B8051CE4719825DEDEF30EBBB0863FA45E53C724C1FFE63BC8532EDE4
-2A34BCCAF706B559C3FBA0D2341F530E2A7FC53666F0A08B81BE19083DAE033B
-2AE86FCD88365A70ED2B96F07CFD6AE98A16C56BA95404514974575277099791
-5AE2D7D4C11C1F77099729D4E3A1CDC65691700D7B036919505E8B9AB1AD862D
-3DA326116785E82B88A4D0FB9CA730B0164AB17951401EFF78E020AAAEB7E443
-F944118738C1DE82831BE36A58130B230F4BAD4124D1EF0B4B4C671C1EFDC56F
-97798C8709363AC16CDA30E7D067BC129EEDF95624AB393AC95A78C03C175FDE
-FCC2CAA112FE2E3A017A93A89B3EC023074C11D3D920C31469A68E5010C1998B
-3DC48F608B077E8F961A9F45519C753E0FC8BC8AC8317ECB8A0C0BFCBFF9ECD7
-C4A93A7100CFD3A92B04C98BF99DB786990FE9FB263FE4F5A916865BD404172A
-51E0C0C766BD2B93266B3634E57A076C8744B7089ACF220775582E4459BC0248
-88FB9CB698FC6F61854D9626DAB281B828FC455BEA7FA64E66147E394EFC0B19
-E94ADB65D6370DB6B74C632EBA112F622F9E59CF911C4BE6C6109B928E40FF9A
-0977D655FE862C67B0C614779C13006958E288F22F78BD10DFB217CC4082277A
-A3E957C1BFB6F11F64F3E3CD9C97885B9BBB92C8BC03A8B14508D59B8C07C418
-EE79AC80FCA55AE0B53DB0B300438271FF36A420FAF314BFC246ADBDA2F3CF7C
-E33118904B862D053B6EDCD36A32876194CA090E89F8143F05864722177FD6A3
-4DDC7793C7E1AF2BA38A78F5B6D7DD0C026C5E219BAF6C36A5F6C4F1C7CE6054
-34108F81A473579159FB797B7D052C73383ABCC612B665EFC4B4F85B024892EA
-70A7DB7737EE5A87DA21217759D4AC6DBDDDAD0D86BED1714CEE4D69D0650258
-8AAB22CEBFA0DC80FC54943171D47C22615FD50971B066766CD40EFE0EF7BF0A
-BCFC6CEF84C778F2F852CAEEE77020419B52D02BE2BF67DFAB7E56DDD2B307C6
-C08419D07BB13A4CBE7B1BF08F5849BC8466C04FFACE91322652E724E486E1DE
-3DACC4903B1C5A0D6D0968CC315A2256DD19A09B276588A8F1571F0C207DA338
-7682B4119A8488C67BBED9BC8467FA95FBECEB1D6429D9F0F7011A3652CC5D3D
-897DDE77A28B94E56168FFC44ABA5C5DB97B2DE100DA3473084492D889B15858
-253128DB3DE7D008CBD3689A9AC130F6EB480A4035644B23696F6BCAD2213FBB
-E539F9C431A2A946D3120BF4953197DDB7012BCFA77686CC2B2A8FFB7DC00FE4
-66608941FA9EA90225FCC227F83A56E61039E6FC115860F338994142275A1203
-DBEE8B235610947549930DCF1661C8ECBE8EB514AD3FC0DA56E804FE98188CF0
-FC56255636DF9C0D7F0BED0CC834CC771B8B68903A3A7F7FE3024BE4341D47D9
-2F6B6126A4116C0994E857CF1C0C8B5ACDD5C1D22056016D39137FB0E3240C2C
-91650B1E140095F6F8746B65F990E40DFC6728AFB5D4AEA98799DF6220C5480C
-5DAA607995C714F40C8C7111A41AF324D723870087AF582EEF7CB41AE052972D
-F6E94DAD
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csbx8
-%!FontType1-1.0: csbx8 1.1/12-Nov-94
-% CSfonts -- pfb ver. Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25242 25747
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csbx8) readonly def
-/FamilyName (csbx8) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 444 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 686 def
-end readonly def
-/FontName /csbx8 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 68 /D put
-dup 79 /O put
-dup 88 /X put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 109 /m put
-dup 110 /n put
-dup 112 /p put
-dup 114 /r put
-dup 117 /u put
-dup 121 /y put
-dup 122 /z put
-dup 190 /zcaron put
-dup 232 /ccaron put
-dup 237 /iacute put
-dup 250 /uacute put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-63 -250 1235 908] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E2214AFC380F5ADA59470F60
-D8D2FC158BF2F0A53EF87A1802A897E4E860F34BF60C83C787AD1CA226FD5272
-574AA5061E43F5ED5C153D504B9658DAD50711C40D80A64620231075FA7ABE3E
-BD352D568BFB58C633E5BF9C561DF52E008B6270A05DE0C24269DDFA6B90EC90
-A0BE858A557DD6AEC6BFE6391078465E967382FE98FF878DD1E6DF2B713AC8BD
-D0E7CC7A6CA9EB806A96DE26EAA48F6BC49A016BA0950BD9EC232543199A1D6C
-5DE780E51C464DEAFE906C67C49C455BF0CA836160C409FC80C6F82370C72BA8
-D5C3C0EF2535E3FA3DC2F4F540258726F28ABCA9CAA3CA878CCBDD6273639EA3
-3FFA29C328F8F9E13479B8B91887F4C073B873960EF6FEB4AD5A2D48197B28BB
-F5F5889EAE914D38E97DAF6F87C2C6FC300AA4152CD5DCFCA4D25C6EC8FD9574
-F9A763F3B362A7945B7F392CB9CD126E93E93998BEB1B48FA7148FFC8A4E3D3B
-FE2E959A1D12839E2549C628C4D60BB88BB045DD9113BAC0CA2AE95D514ACD8E
-F7295207634056AF510379159EBC72F24E52327FEC852295DC6EA59178BD6A8D
-3651E23EBD4BB12104654D566EDEE0B9D2D7134EFD01281C34C1EEC0A5713A96
-4CED3F0A760F5C37C8CA3163884FDBCBC075A0210A6E76BB413DF97AD6A0C787
-835D361A6ED43349EDDF3732CFAF4E0214B3650D7DDF7650F27D78D21769D353
-CC0F680A66ABAC83137C95C8320C361E0698AED9C0D736FBBE80D4359D8CBB45
-AB5F76401EE22C6CA9D78DC4590CEF1CD7D9F9EE334E93E0147DBCE5233686D1
-607998FFE1340140D01E6381252DB48967EE6DFF5422E8B301289648A5000AC8
-A3AD9D1825FE41E9E3A55597FE88BCDAD2A05C02204EA9D8962958BF100A9189
-488F9422B96396E29C438C2829B9254719BE08BB792A23CF23AE241992E2A731
-7D274FCA140E52839EADF299B6F7FCBD91C1EED9F09ECC2B0E6AD3AB468086AB
-B06ECB9CF4F23E1064585EB784AD2F5C33858B103D979480FAE1376502863F8D
-EDB1B1FBEB37FD1594608A69C7E9F78B7405B7AEF8D733992A739E44AE5BB770
-3C322675D8EC3F149CF3062EECCABCA42B6F41EAF4859C250FCF197EEF370E00
-45337EA05779AC0871796EBE40AA547D1B437DF0D8C3C050FE006464A2BFF97B
-39226EFA909BC04CCC5D3C5B8E6211C3F4C77C6DFDEDAF2CF0DE416D8632737C
-313B4F64682B9C446A878C782BA6D48AEE80E17953AAC7FDD23465363D9DCB98
-83AE261391BB54AEF57E8A5CA874C985BA59C4D1B57B6C8C3E056166319AE0C7
-A3901006FCDF8C522D1AEE2980FC7069A31D428F46C6623C7F7CF67CC77605F9
-3ABFD90E284BCE7CD72B54BBD37D4A2258EDEDE22F0A4EBC50EBF121854647AA
-569AECAAF54302F3064A3EF0B4017A8D53AAEF3115E208BC6040842D63C44911
-DCD90055D3B8AA5B91C00BF0035005D95468408633A976C2ADBA3AF8EBDCE658
-702B43ADD3832CE4BFCD1B61B37EFFD5AAF1922A3D829C633B0A4C0994611381
-2B83D3740FF3D7ED55DE1CA370209533AA5476C2EC803A7EF39EDE2C8E93360E
-1FC06A0069ED59ECE66C7978560BDEA165F84750F35C14DB4A4F7FC8123FD5AB
-ACFC49C2E96F45762595330BA8FE7DD80BA78103202820517E60D2D875C34317
-5BAF5CD54F977CB8B5D65E8AC638E3494E00F477C8D189EFD727A97C84E6B9E3
-FB139F7B6D5ACA1C723098A78E45A7F5B5ED3832AB28CBD448250BB9FE3B87E6
-8AC82DCBDB46E5343CC380151E941D517034F7C7EC984C2A117A6C7AC1EEA683
-B440B80A35F68C6ADCF07A8658B5929F6DA9415DCEC757234D7E12B0CD5D162C
-B41088E32F66C33739C33E018E5EB1F3FEE383C92177F8D7AE7E91F7DF158B16
-6366FC8E3A74845AD8C79B0A8611701B27461B74B80AAC905F9A699324CF7A3E
-D1723472890054C8BFC017250AD6D0A3255FD94DDC8F6D441A34C171C40C60FB
-9BA5B7DBD0A753BC363701BECDA5FCAC6F11DF3DE30A171828B9C96C964A14DC
-AC4C086A4B2552B3882357A5230DC048BC38170375ADA0C62535FC1ABC15F4A2
-FFA216377D4150D390E681658A17228A9C6F30BF4B24BC797DC1DDFF20492EA3
-4DBE29160FB2F608AB1CDFAB1AE1FEA96DE6B1564624177AD14E76E25587DCD6
-7D9E8FD6E82C5117FA27CC45D4C51C05C48492B9263BC4250302A70ED13922C6
-50D444AA631FF5A60CCDC3D72AFE4055554939127138E0F75AB5E2B2628577DA
-2CFD62E98C7F50275656F719DF78B72F8320B6C931FB7552302932FEB21FC02A
-12A167C1AAD59FD604C64D8FF49A496976B17200E233F1933F326F03AC309AF4
-91BB3B04ED0DA2E498ECDD863A23C95EE128597D2D38D6C03BF9C52FA42197EE
-2CCB4994074DD381322F9394D959C400D9106AC7DE4D83AA228285C5DB0856F5
-E1EDD10CEC92D0667EF2B62DC2DA9F2D8E92B9D67C9F47FC0985987F5CBA9D20
-87998EA5CCF56797122B3E8BC68D9176A0ED55A404FBE65F6C05799A732EED5D
-21986E5722AF2088D1A5D5BB01CF220BACE1091A8C8EA3E62EE2D2937A1C8936
-83D795876F89D7012D993518B96625DF5927AFA7DBA4D2747C455AA87281AA06
-C40DB502DFDD70F5DAA87B8727255841099DA98D46CA21C000F9B4EE7F4271C6
-9A0A7B72F114AEA494B7AAFE23DB8EC3A832431BCCB348561F889C566DE515DC
-06DDDA0082C6BEA629DB41CBA65377833056F60AEB2AE78441E30F4C25BF65AA
-365B9FF79D24C8CA7EDF59C5916563D04F15F56C57906AFA44344C37ECFE9D34
-D137D42B6579D4E89D4E7EA45545B47F3FE2BBC26EA0F155F77B70DF96B4881C
-F1A7A0765C61B0D5A0DE4826793FF7D6D8A90DBA44AD1A51816AC6B92AF3F26A
-EA52EF1FC68A6168EEAFA86693D02C6CCCB18BF84094887DB6A7DAC9FF656D5A
-53EEF104B0385A7C10E96165D1793754E40448F7E29691354DB9AB24C5185272
-78DA0E931D8A449F8FFB196051935C3E3E84448DECA7EF2FD8EAB8FB30F60862
-E0C0A14E58FCBE7E2EDFE1B0747D628D1093CF666217326D96A0DC7A9A2514AE
-869683F646A10238919D4E5757401BD8018210C047C48265F34156AB58FD8E54
-C6CD03FB133606D555F43BC28752A3533060DC591541AC48EF83DD3D7724B934
-3DE8085F0C93839B5C0CA783EB1AE94423F279BEB73DDEB6C3F91ADC68BFAE05
-65F6F9687FB93610A1B3AE2124685641BD4A36D56B31F89C7D08D04541D701E4
-FC243CDA055B08AC954FAB21DAAE09722FE94C8C6A51834ED385991BD3502F24
-4189248E3137AFB9B71A2B2329D1C81882F21C88ABB967361B1E8A826953EB09
-966507D44698D01AA2C23ABA5B2EE35431FCF4533724D7C23EC6A3876C9513C3
-B61C58E0559A3A226EB0C32CBBA2D00579F9152B8863BDEB3E20EBB0270329E4
-AF9E25BB76C8FBCBC31B65B53654E0721EA9079752183706B01FDC3372E03545
-D2A935933326E5C973F28E2ED89AC0C070E507F40A81C21B1F18F8BEE064803C
-65DF650B5852E5CFDD8EC43BF90F956B8DE26364DAAD253BD2C804BE7FE17F6A
-04CB4DADC762FD5DA38D1382CD8F84AE5F504BEEFBAB13A965992F08B812836F
-FAF2AB5D5379EA5487A79473A16C27831CD11803071A00908A7EDED2D002B4A2
-B374F9CB8EA325C1B49B0E34370479BB75729818F10185FD5FD8B3D9DEE0BA58
-3F1CEA4C6209E5C44842FC44CB82C64ED1E9CEDF5849735E9631617832C36C8F
-6509058B788E952BB4B9A2E817BB557DFA1AAF741955687D888B13614CB78564
-E7CFEC5EF4BB753BC849423D738E956667C3D4064EA243B210914315D3D5A3E5
-FEE457C615DAFD4B867FEC8466B480FDF02A8310F51A3DA19119F4207C6BA79F
-797A30268F9CB755CAAA19DE6241E5FB6A1906564D5B8F1D264C988332312240
-87B405853B6D8F43601E602090221EDE3202B90E16B9DCB3EAAC50567C7F3505
-C68532B476EAE85E0A2FD88B2A76AA3FB580636D539B30DB118010A920052589
-27B2FED128A379AB521B31BACD5705A3AE0D8803B213DC6F0F348E59F59BC214
-D00278CBFB392B3F17C71A48208AA40CE9A2AF5FE6EF2B93A0C5C91296FB83C4
-2FAD6AEA3B931E991540FCAE632C846915C267C8239B7524C7E7F770549539D4
-1CED8E5C518B8FC86577F471562E05FE36CC680AB595C65897BFBE679B7CC1F0
-F36602E1FC750A4F33F42759B3E745661D7AA2B1C1909ED9F5C6E7AC7FF063D5
-1C294863ED1492D14BD166A71CDF4EA7EFCFA3E8EA7785DD57DFA74AB3520FBF
-6A169387B0425FFCD807EFE09427405DF7F52BA1200DEB0C542638176C6357DF
-816ADB9ECB7C1DD940DEFFA2B5725D457B149913ACE2DD508ABFF92151B37CED
-BBE13A912A19FFD52C3A020219114284809A350C9A01D05440787DA6AE6B60C5
-31751E99872175145A127940E1C108EA730E513E66FB499A348F395190C97AB6
-AF2CBA545F69445C8581C00FF7A9C1F9479E28B872087659230A81F38D8B679A
-82788CB4B1296C9916D7F2933AA6DB908F2AF0AA1314E6D113D8AB42F4F2B905
-77AD60F3C9B3A04E3431F2E5BB4DA87056EF328AC60489F2F5F8891D42C916E3
-C7E5A2D1509FA283622296F4089C17C8A297158E342034A4A1BA35C71CDD6B69
-4D87176FDEF490027F6CEE15BD20A6914D3993AF6DC912608EB9C2034B201534
-D5ED5FC3B1BE12798727CA0F3BCDC4C8CE3E17099AF38A0408777269369F2B2C
-D95C71475CA7A04413A83D45B5447823F86ABCD252B4A811A4CF46CCE2D496A6
-E03BB98A3FEC502D6D114D02B2058B6B206E1EB80D7B0E83DAA50E9D9481C8C1
-7FB732FA6A22349505861A8FDDD3A48AABB48065EB92E51327493207F28BDCBE
-91543B64CB2261DCC97437CA61876075B836F532947F4666DEB8A72C3FE488F7
-01A26A2A927BEDF8E65A7A9695181FAB841FFEBADED7E461525D4A3110378F2A
-6F691B43BF89173E1A2A184E1F9533F80F87D101FBD6F0E12F19B959FA2E81EE
-BB9C6D477FE7AF117AD0FEE3FFE2713317D5E5B163F7F70FFA22DF288EEDDF61
-C28E442594D26FEA08E2F2B7B5AD4F3B25EF6D39BE6FE177A77A8B7FF22FE177
-ECF96E7586811233AB0258088FAE31FCFE20C3D5742920EA09B2F2990492D4D0
-6626F2BCDA30F65B294FFD08CAECE8E3164B3052406EBE35BD1676BE5345ABDF
-7C242D0A2B503EFE816996C6D06436AAA3C6EEA4AD64FBE7CF2B47192C26CDA1
-816FB56D963AA4417595C1162883F7681228396B42979250E76B2FAF3BC2DA41
-6C56910C96F3675933468E6C2F1FC47CD1CA9E8F5F0239EE5CBC718A06BEF611
-45E64B217F2A3CD0FA4A5E9CB35378ED8E0248471EA75066F8586468757934E1
-BDFB5D6DBEE9B85818E8EDB4B5025FD23A43276EDE974975103E0898F08BB160
-E33A1BFAB2A4F0D011D468D48EEE7DA67ED1782559455422F1715498F9989423
-6733344B3BA5A9253E8A8FB515DA69E3A1F85009567B8CD92B1EC89291F6D396
-D6230F005B441694E73B958FD4E72F1CF62512394717EB14F22965C4F766D729
-6C89B363BBF3718A3D3525BACC74242E6670F4067C85E40DB39DAC0AC73C5F14
-3F8A373D2D914812298FFD77B9E63FF35D4DDD434F1C37B86C6C6B7DAEE81B8A
-E1D63E37EB6A03A8749F287F40E12BE20FB3F6C8CB06F2DAB3ED9983EEB00357
-E501718D76A39C0C5A702DA0918CC86D33A9250303F157FD13916341A20DF4D7
-DD676C98D869C6E03F7034F13F8896861D75AD150EF9ED31895A0AB49E837FC0
-54E1F06DAC48562ACA61D6BCADBD419847D3DB8AA65886DBC55F1FC5998C40FD
-8F4AF01BCF60E69331FA71751492FCCD83A6BF8240D828BAC7B55E51CB7B93C9
-0A0F6B47B386A9E68DD6A747B9413AB5F6144E30791E25D3DFED4046BD67E2EA
-D37A94B5CB3FC06A61F65371E8436CBAEF180488947A19B6287F403C6A80F1A2
-C206AB5AACAD966DDBA7D0EF363291C16006671375B71DB175AF02861C26849A
-41EFBED4CB93A0483D64DEE6800FCA2C1664FA100BEE214A28BBB0F207C8BC7A
-43CBF4AB6AD83335DF0AEED9DAFC3B355F8F69595E43BDC531C18D6F880D86B6
-1EE0EF469A2CC51212C1E0E1D922E0F2DB46879040DE4C2D1FF151A43C2A892A
-BDE033F31A636D54DD6AE2564C7735AE1B5F7BC302E6F353D3327CD04771CD87
-D9B0C0
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csr8
-%!FontType1-1.0: csr8 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25661 25938
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csr8) readonly def
-/FamilyName (csr8) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csr8 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 50 /two put
-dup 68 /D put
-dup 69 /E put
-dup 71 /G put
-dup 78 /N put
-dup 80 /P put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 126 /tilde put
-dup 181 /lcaron put
-dup 185 /scaron put
-dup 187 /tcaron put
-dup 190 /zcaron put
-dup 225 /aacute put
-dup 228 /adieresis put
-dup 232 /ccaron put
-dup 233 /eacute put
-dup 237 /iacute put
-dup 239 /dcaron put
-dup 242 /ncaron put
-dup 244 /ocircumflex put
-dup 250 /uacute put
-dup 253 /yacute put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-40 -250 1111 864] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A1390082AA03548CCE363896DC
-8285532C521369225C90F80D727FDE65092A0044327885EC680B2ECCDFCCC5C5
-9B4F8AE2D078A25AEEA345A6E6A1D9F372DB3CF2B4AE635D7DB823D70EC82CC7
-1CF7E7DD0D047DC2513344927562E9838BB0A17DEC4E513ACF1FF782F3D8027B
-7E9250875DDD4EE3CCA440DE9C628C3EC0D771840D359B9EC8C94991ED9E551F
-1B6836631196198581D2485BC6D82918C11874F095154B0872CE54E96900BB2F
-F1C79982170757E4A6D158B2AD92AB11E0684F74C0AD96A690D55E3663F37009
-CC9CEA85C49FB69932378B3822EF0B43C4F6854FEA53FE3DA8C66F54621F5904
-A7167F09938B97C9827B8062CD47DB637EC42FCBE54AF3A2609355A07B317576
-DE207567493BEAC1C89FF58B9C93FFA827307FB2E6F3F01DBD6FC8E66F97A4D6
-21EE41A240574E711450DAAFDF021C9F67A3DF3B780BE6B6232F6F229F1968F3
-81E3D30852A756A7A7D78EEF9EC6B4D8D66E9D944152711B910140E070124051
-2366C14DFA3C6C1E735E950E6936B762980AFCBFE3AAE4146ED2CFCD68807BEC
-214893E1E127C8EEC0CCA2876DA14304B733B1794AA02E72848E8E518B25EEBE
-F97452C663FA963ACABED12285D143DA237226E2BD7A4F0716639EED78EBE378
-E9D7BC4B83C5A0A2669245F917062108AD42F9764EBE10296BF54D7986B6CA80
-087E85C5F00F28DA6531C4AE041F2E5D4AA22F9E9DA737F4A6BF14869A7EB733
-75DA3322DFDF99B3728AF856EDBC918E5E5C51A54E525BA6FC2D3371030BE5AE
-092F9B858E3BB0D1D4FD4A575532A9C1CB735FA64BC79B2FC5EAE708C34EBD9D
-FDC58B37503ED13115E5F582102C9783E60B190C327D29965133EBB08548C09B
-85A6241DD366C39A78E5B29FC95F9144E36E45667AD3285CECAB7F9821CE3B56
-A1667E12B07CDED4A718BE3B6B348A20D957D775A1EBE00A88FA49D7162D5DA3
-49E2D10FDFCB371480AE057743F4A2F70C61188724B89583E037E1E9EB3B504E
-3C216068BD41CD7D5DC36EFF5DB32968DF686401A661D6BCCB0D5FE9770F732F
-294945FB2ABBC294DC7C846B0EC59A70C0509B424179FAEA0FC66E1A132AC823
-8E0DEF34A278BAAC6E0A3A5B40DFBB643D9BA7BE0DF8B50A2062A57BB60907E3
-04ED4115C6D54944FAD307A470AC86AF424D4F13281CAF3D230C946BD348053E
-3C27D24DB0385CD21B828DE52FFDD3AE194DA3B93BF851F4C6221C2EDA9373D0
-F7929C6B47AB88035D0944FFFE3002DF6AE6CCF91B847EA18AECF20E65142069
-3935901493ECDC5F6A7B5003F22B01111D92525F8D0110DBBEAB16E9ED6DEFCA
-7213829FFC1EEC83BB567764558776657C2AADDBB4DEAF6173DF15CCC34FD035
-C03458A6A578F45764486FDFD45E3E44D28B08340691A100CAFCE5AD44BF7F5D
-0AEE079F28BAD7C8D0EA2B55E320CD7FE3B77EDA9698F8451AC1D854BB10FEFC
-9C741CC32E2D7F2643AE066DA33DE7989CBBC604FFF86ABD2530630F257D4BB4
-F2260CCB88476E32262EC47A50644F962357733FC1B356B9518351776FD3DEB9
-1877503A72206810737A89929306EA0465A385D0BF218F3A11F4433B125B4BD4
-7C08478D9475A06E581ABE9CC523B9CB0558154BDC923F71E97900BA235CE8DF
-21D4461A0D822365912A74FDB2B29ECD5E540440EA91FE9D2762CDEA07441BAC
-714E876997F26C1556CA24219E705A01FFA2BDD006686575AA14BE7415679E50
-43D0F9A58414A458F4849476A3C322FB4BD50A4307BBC935CE5176285D4E6B60
-1F21C9D354EDF049017200333CC07F49CFE7A8E43EFA5E6E28EEDFFCE9D47C8A
-761686B3CB63C93A35BEA8FE88940B5C066697D5A514160F885F43CD8AB67C9B
-BF9705E0CA4DC64294D357B54C1409082A13977887FC85F0F038CB78DE39D29F
-7EE11F4D31AD66E8CF87CD70E79287EA95906C9A0AC65F04B9BA12724660FE31
-D24EF556CE9C161D1DFED59645E40B7B88365D6CE8450B456FB8C10D886142EE
-BB64056179E959FE6E4D9A9B2425633072B651C6982E296AC93379408538D053
-ADE1BB933C09791A87A9FCF1217AA9A67B0698A2357249CF3407C6B317DAAA07
-7140D221DB8F3554D80E2AEED997349FDA0590CFAB161B8A73E8BC46131DDF3D
-6B0C1D3BC5CE7A33534D1676F129264A19BAC6F0349F89EAD1059433A5CE8E8C
-5467FF6A3CB0EA04ED101DB0F62367E039B77B2B3F740A5524BAC9C650E15306
-03B66761A133F9591E9DE638B7AA9C114924274FDE6E49A2E9F423F6B3AA1E86
-06EFAF52AA6127FEB0861CC7ADDFEB958F6D45CA6877780A50C4FB6F6B93DB75
-E49A8BB0B662739B69D43B4989D4693403AE37BD7E69AE96CE00E15B86F1C6D4
-4000C37DBA4A37D8138E34098A570A8E865CA365430C8A9C4B859F60A3B2A256
-0C97C49EBDFBDE5623A6F926BF0DDA2444FAEC53BE7D7D61BD17A80537A5DFED
-65A166E2DD9D565CEF04D6F4052688E451F4A4ED2D4A642AFC64074DF1060452
-C5761A1C46A69F7CAE3119EF7574AEF94F01021FAFB921CE965EC7B8EBEF82C1
-729AE5426D7D97CE45A222019C4896F9F623CC8D716F5B7772BA21252559983E
-F67873D21D535F41C91B2ABFC9D7DA596B0664DB5ED87B46D5C8AE9AFA111F4F
-267919AD8049F91CBDD00194B7969C3C6391E0F7B470E88B844BE4903A14BC53
-AD6A5F75E5EDDE9F3344CB109F552E4AE184CA60744601A1178B8E417519D3C5
-BC9917B7987337A60E65E07AC1AD7B44C74A2F506E1F6276B5951FE289D33760
-13371D55B1FB441D30CF22D308D636330AFAD2E713D40B3CDAD5CBAAFB9F27E8
-4CB8E251D57BC92725F58349CFF1C0694146C46A6DA7ECD8456A20D0EF5B9F53
-B7EA82A379B5405C1CD8D3C8D56E398E25FA87EA568CD18F4406A6B0B1DF8315
-8A50400F8E149F0A74B4D8108E199057E34D99FF61AC44DB4E4E3A7DA051B9FF
-C766850839FAF5316DD6747D2351662379D4B42D278A7D0A2648031E19A88559
-91B2EFAC65D1017912ACFAC9903C261D2A3238A4713D25AB304CCC397AC28D04
-59CFEEC713B2C2B0DF1502F74DA2517D0635052AF45C80A628706E4964EEC43C
-8C0767D37ED6234F012AA59BFF3E5B65A83756BE5276B1E4594F360BE45E5919
-86D4411CC8B8A79AE77FBE6A4ADBFFA8EB02B814E46D4D17A9B61F35F3F60A79
-361D0585C1AB96651E3C0267F5B4C9562BA19D440A20FF9F55DF2F954530A5A0
-1BDC34AE2FD29352DFBC654A9647AE21C536A7843E16DD14E64E0EB0836277B1
-1D204BA28F81B4F4E5F3C7DE5BF2797C035B2B20A86BEA475E558527CC045F16
-A0F2EBBDDCD3F3575D2709099CA113B43BC0796B4545F6BD76336E48DCDAD950
-36B8CD49ECD9CE1D2D3EDE3DA855B3CB1DC18FFD0173345D027CFB81F91607EE
-42126E55948235F1EF7F15BDE8ED2BA445D887794A30754218B68B589C2CA977
-41A4433495939F58E420174767AAA196EFFC9444BD858AD48E2F47D4F2B1A4B4
-DD87BFD95175BBA16A7621B0CDFF3D12047898A6F5937F7E79BEE4624867A4D5
-15CF367AB2A0D98A0CD50C7E2F052AAE7D33B2C774CA7C0228F15CA9D65B9AE9
-72728875E6DF099D84CDCF16A93B1C4B55F5CF82D99E81F68ABE1EB0F27B44DE
-235863CDAB077DCC0678E274F3C0F92332E6DD690B89835437ACF21018B70B35
-BE8B5935D1BC5C9132F4924FB4B37B6FE7341C2D03A8FDF0F239C7C36F92A885
-DB53438AE9F4EA20CFAB2967C68428067FF8FCA8921B0B534B5319F2F45A7B79
-67FEFDC358C6F93440F8DAE91E31FEFBFB875BED8C92FAC2C49178F48550D160
-71CA54E82FCB5768AA5DECD380A86E73F7F9969B12E2D84C776DC43D3F9904C2
-C9DE8B8986196FF05FB3AEB8A633FFB38449F9247F90954F3570B4AEBFE1D840
-08D127F1471614619B50CD819EF29A7F3B3E05FD6A2F01EAD9B93EEFB3336847
-A3339C54796DD8F9D179A56B213C17B7633D7425D459DBA81E168644E4EF6A1B
-DF29A4941E450015D187F1EB6F2476E7A85E60F544C31146E5C09AF55066379B
-E1C9C55AEB9F98CF7D4702A4B085E78D38C1EBDFFB40CE0D706DC5D28543F419
-0D8B0B53FD8BC8FB81E511AB0BD33130D9F04CC38E694C8707D19FAABA5F507C
-5C1DA53DCA966B0E1836223CDBCA502B0D93CFB4B78A3EDE820F6BDC902EFD82
-F902DDD8103314600CA46BCE0CD0DAE6929BEC37D0ED814C63F7CFE6F712643C
-8F7D92BE9E47851E63EF3D5236DE822CFE0E136D48EBA150505BD59DDD94CE9B
-85C60E7173B2ABCC644D7FB7EBC6DF19CED6BAFC264008A72C2DF8BD0B459AD1
-52E8CE7FF30BF3DB89AE7B1DF29D52876FC81D4DF5F4DA36431BC8F6EA54B70C
-0EF8BEB8604FF5FD9E3173E7DDB3BF92585C10E917475156F390C9ACCE88B06F
-F707AA2F03A08A23394E2284F82393DC0F8370316E32E8B7F46ADC29F090CCEA
-84E54A7EC3B68E43A7ACFC6297C470D14622F0B7253CA7E0DB6BD7F937695EAC
-3D0A40409C0C67C736E669CED8A4DCE0A62204D96C94FF5BA678141D98D2D6CB
-FB28685983747B5B3852619D92B819E7ACF68EBCBD752BD6163817E93BE9BE09
-1880C88708AE3198B801DF0058B40279CDD99B65FACD13E6533881716796158D
-1C512DCBA26E1F3A2B8F0B5E4015522A10EA9FA4661F6D938493D376565DE1C6
-F1E885FE2BD3A2A7B8DF70C6AFD144C552591CF870650DF77C2EB6854E0ED019
-6862C7EFDB2368BF067A29EE38B98BC38B2B068033E07D1F701800439A027840
-2AB2D2FD19491397EA75713372A5261D4D69075D99F04B4CDED3B58084463B7F
-C1A285144B67E4A7D7F1327DF0DDFE3C29EE7D16E72DC368A3F3F0E8F5E6E727
-289A40307AE1F46F9A902494396134D11622DF81477F24A7332ED803E491D5A9
-ED6C3484C1A41D4DABBE497E51A78D535DBEBA13589FBB672821890510107246
-3B60C95F21310B86A03B2B983D1BB92601B487E33FED11DB571AB7C34E0C3537
-4099BFE1B2E0461E4576024EE88E8553EDD187FD1E7CCCB0B72787837A04A001
-455EC052C2F61B5234EE225987A03939CF14BCC9FD679627020B983CC704A8CC
-E9CEB7B5168D841F6717E4EC4A15A92CF9EAE6B8969FFF4F0794339D95093824
-F5B400A25B444876934607FCE7D07BCFCA67D4F8064CE5F446B56AB5C64D2BBD
-8BA18A5FE894FB4B6E12BEE8911D0B4E379AF22675A9AAD957644E5B9D0C07CB
-26F30D811D2644C8D07349C6FDCC28077704FB17619AD46F23AAA97303C3BA75
-933B7539D0DB1D970A47D6EBEA988A865E5E4E79EC89AE7A71D6F8571AF437D1
-B9E67A4C97B398DB54840FE2BFB0EDC11F852A246127888E0CA82765495C86E5
-C0B5A0EDBCAF29A8305AD10EB67585FC0F3242B56C5229ADBC45006F61C07E84
-40480BB621F8847016DFE7E3D0B3CA0201FA5B45E938BBEB4CDB67182D07CAE4
-1FE738160E8FF43A160EA0C40A1035CC7C3601D995150C5EB339FE04DA863BDF
-DD3161D357887D1A1E699D5136486E2F86C48B573B987B7AC29155B637171F4B
-8AEF42BD3AC44271985DD0486FED4610DAC764506D7ACA530EBB62F93479F780
-20B44398C3CE288D53F9D3F6E727E260E93C04021FC9E9B08E262CB9516BB3F3
-9B17B75D3C63B0CF4BF42E1B78D436B8D8F975CDA99DF4538EBD6E31104E0DC6
-BE56B68D9D7EE4A69806933404A9C93DAE7D6F10335C3FD37601BCD44EDB22BB
-BE48C4DEF81DC29A0869280E5E05C96DF61B1A8DAE9FB396CCBE78F0BD403184
-95EB5FFD0E8A6E71CFF84EFD8B851BC1CF1BD54A9BDAFA98F9082D78B44595D1
-DC94C7E25BAD8A752AA5D7BA9B687BD47672695C0752B0F998395B5E837D05F4
-091F68DA4692E364EA2958BEE17FEA81AAB2D709999B42769F316B85BF8ECB9F
-0EE57E5296E1BA089910C005A28A494691A20EA4A82EA82262B87AB14BA8FAB5
-EC572492A7C54FB7967F66036BEB8CCE631150BF4F061A57FF8FDE33D3A6F5EC
-1D661554EEDAEE6F8CECB6C9AE6D1B4F438F70544BB86B631EDADB7C3A61162E
-655A173CEC4F286D23A651155E46C0549202A1290B83BF3C864A071870946F1E
-09958F0849CACAC8EC60BCD95A292E3B406BC3707C6D6DADE8448D28CD48CD2F
-2FE0B81C6A6A258F255DFFFF895743F73267C042667808B708B634042C5D832B
-487B27B8449A319073F6DB98FDD9907AF53034E58E6EE02E320B38096751A93A
-2FC8903CA28C987C8C64DDECDABBEA53AE09E9EC7FAB1D76C240EC61F16A69E8
-0DDCF9B71D1D063CD3FE784DCD22CFA472A0224BB50A374FC6535BF0D2E9B971
-BCA305A872589DB11815F8533B2B6DE7AA5FB46CCE207CCD338291205D1C8011
-A4603E682C2144EF395C27D4642981D5F2BF89B61ADE6EB218FF092C12C1BC14
-F7FB77A8FA3E02AEF84199717D7F89A138E5A8E6C47D4FE968A7E75BE732BBDC
-86005A6AD29138082703CF2B849E22918BC07F12C0AD7112BA408723431D7C81
-493D6844900B6334EF8C6991803FEC41EFDBA14CA8ABF21120C62C254C3FBA12
-EB82E4C5953DF4480D73654B1F50BDF395B2733C00942AF58AF1EFC21F7F5D5F
-C0756D629A6B03612572CA7AE2F0683B558AFE4459F07F66491D7A5B41FAA64B
-55768E1EC9DE8E705DF32C3B4DB746DEC2430FF5A37C38F80A779889F39B9BAB
-01296D48E85D6550CEC37ADF4727892A2D3DE9FE489A1E434BE61E39E862CA60
-BBE55CB0480758A01ED77038065D347EC7959650B7F84A94CF496184A40B07AE
-08934E9DF83E8F69BB8B183AD6663E92FA514AEF1487DBD52180B24596754387
-C99CFA9BFC5E6247C74470E5402F1D85FB4343A8766170EBB96A89369F7F72FD
-5108F4E4571EF9ABF8FD0E114648881A5EE6DF669ACE73CA32976296CF3F1A58
-1B616B41EBCBD3D4C659ECAD8FDC0E597B86E974DB4A3094EA41F159A761384E
-91F0D358CD07CD16D6D47C2CE9ADE6AF506409A55E5D98AA42541D85C0FA966B
-B12E7E9F30037630904D3F52A7B3E7813E75B2A51620B49FC035EFA937AE9F95
-51BBCFB6E1961A42FE363BE6E5E58C5897015E5F88987A59B85A70CCC8523E68
-5A7FD1ED4078A5FE609337DAD0CADB792A88014D0C3D568A4F1D8959D9362446
-51F9A95E28140167EAA169610940D8DEE902FF76B7BA0FACD63B19FDE7042B55
-7F07ADAA9DA81A9867BBE53E02CCC491D7A5482C08AE3D2734A19342458C0FCB
-92D5CDE2F297CB467E5D86D52538998AC840E31B6F3A1682A0248B5B51BB2C66
-6C273F889562F76598587B298B82AEE81A383A6601677897473CB0F12827CD64
-6DD6897BB1F10062D8A697AE87AC09675BD66C55D874D7C51F6CEE004FA2AB98
-F7F5B8C7A69469672BC60072B7285436E6D19009144E17A69AF9C75AF8CC5954
-C27B9CB2A91D40453C3D4EC731732638B9BB424AC5AC7F5FB294B8A43C8CB688
-5A1CED394A4FC1C594DF0DEFD0A887065F7CFAD4EB6258D1F3F128CE67E239AB
-D781962DD3CDDE781600BED82963F8DA956398DC324B1F27AE1E4779807D461B
-246D58C11E534FD0C32BEADC7D80DCBE7E5C523EEDDDB14A29D167934C4EB81D
-D5FD065B14BF76676C095A4A8F7998EE8626957B1A98D19EE5868D37510FFA7A
-7412CE0F8E1B7811E787D0CC8DD00EA54D778C07926E29E37A2FF2B05D80EC4B
-F47A61C266D399955748F69CDFF16E1B42EC667BC32E3D7DDD2560B8AD58435B
-D6A9772A6F7E5DC47A0C0A11256DC2D6E8842D816B0390EC66FEC9CC90E2D297
-2513780B68273DB761FF6B5DE0E48C9C5905B51EF916F38266D214D6B62D7A7E
-7D5A0B1BB8CFB2FE3C5AA85F8493ED6012130751C711EE872657E8B88FA6EFEA
-81A91F7BA8C684FFA97BCD1193EBA08F93FCAE346A66949CFAC8583A161734F6
-6760C4BCC657C5F9D6425399BAE067D1B2A9E5BBE52BBAA9F1A6A973C88FEAB5
-43F97B3DBDCFB11D1B270DB0F87F87378565EE6820BA6697E6EAEBB202D8FB44
-65F88001F83B7A71AD9FE4BBE7307F9104218EED6891B3F28F4E86EF3B6F9F1F
-F93722874C53C73A9AF5691A3A90EA5E8786467895BB96DF77C7E43E80EF8459
-7FBD645DE3819474827408E10DBA6C8027D9D95052A4779AA2F57E7EB5D0BC20
-32C9A9EFC8BA2D240AB9A40C90BE5F3C6706FCCC4506CE05F45EF29301179B81
-5ABDC0226852EC246DF70261888879DB8F4B5C49549182FA278BF3029CB8E9F3
-04C6B9FB736F263093F6964508F986893F690856A3CE7A660D628F2194934315
-651AED9D746178DB8D026A4B7C153F23CDE6EFE943A18488B16BC8431659DE93
-4FEDC555D16C0DACAF7DF78E60098ABA2AD2A5ACD5748281EE6E462BA0022839
-D535DF8B9CDF6571D00FDEC1E356C879A12BE5F6AA7A7AA0E6E7882933675FEA
-18A0DA3ED360570DF5DC9F4B890229F9ED8233EEB732C8351E66B92F538986C8
-7C9DF17A169A1089751D5B9B3463651BE40E477155B0E737E719945BC2E42161
-4EC791599F93AB62248F4B5805F06AF9A0A143F178CA10BE059CC65C967DA033
-D1197498669BA22297944143E61C23B278BBDF64766430F9A972AB167BE0398C
-E7E925DE2FD5A7DE7278102D748C661A42C75CB5BB702E235115DE37D424A8D9
-5AB8B255B99A4FB174180F3418CCEE82747C17655E47E4B504A548CEF198D84C
-8964578ACE8B5CEB3CD9BAF646C86B2B15A78076A2743FFD4B469D9BE32470F7
-EB86402331DD7D65587DBA6DD1B4D5A1BBCD12886350B490B7BD60228B5D9E7C
-A900692F54A0155B3561A5389D0D94B2D3AC32A074BCB322AD4125935E9CB590
-A1BB932217D3B1CAA8B2FF0BB974EC9B02FBC926CB2433CA58866704F710BF88
-9D46043E96619716FC57FF52B2A5D290E0CFB87F675905F63475B2ACE31B60B1
-9AA6D0DDA0F1D7DC2CA3DD2F894A4F11C7C0D43B03A8FCF8E2DB70E0996480E7
-B155E65A6886FCC11241A95D135C3E7E8D81F3B582F2C6B70BCF2211484AA40A
-5AE20467E1A8052A4D8600C171F9FC87745C9233E91116EB8628DB16D93147EF
-5D0E092C314F9449B64FAF2C9143C5AA1FF160DD0ADE161E2C1827E2B54268CC
-556B286D590F746DD8CFD671D0EE29F8BA2CAEA3B02F859AB7D28E6F0E1E51B9
-AA3087172E1E52EC0E1D508BAA2E93E29D07AAE40391D9684E616DAF52A90DE0
-9DC04DE7C5D8DDAD516E985952C55C22FAC74CF5A376FCD3FD3471CC818ED831
-7AA36C82737D14672986F14C11F572A4B979B8E65394803B3D6B34E238CC8762
-154B3A67F608B4FD76F1557B16467FA38E86DD45C76ADA664A237777FDA0483D
-E021E481DB918CDAB2C4A8B6C2297262855FAC2935EB3B284F0BB97157CBB444
-196D6EAD70EA205B142BD4F55155990276FB4503A70EEB8CC626B2B2B0A0D373
-783EC741BCDA22AD1A839A14B9A97D0C85EAE401A0D7F17CD57A6CF9B3E088E0
-365F09D1C927AB4DA80D1F7AED1A79F95E48B5CEDD27D23CE1F372760B08EA7C
-5DDB53598C07BB9DA3AAB787C3721288056FA3121B6AC1E6CDAEE51CD964A341
-5CE8050E8A24476C1047BB0E78367ED50199A68A19F3C8CDDBAD3FC2B8F7084A
-C8D5C0E63A718D19C94DCD31E3A8D792E63C57B921E9083C68FF087F68C852DE
-086AD9FC46D94634A40754BB9771F33B31CC7C15AC8048237B35F1B289487436
-2971A39EBCB636E773EE1AD4C0556B43BC3608E4BBB2FB96BAA1671C0FC7D93C
-7F0CF7EEB2873730129F797669EB3716D0FB966F06D1C19E10E46257F5A44A3F
-5801FA3C76985FE15E8C6C7017288EABF56FA1D0E70552C15E7C0E50C94DFBA9
-F0CE421196E07129E2753B9A3C6A04CD956D91074C5F41D862DD09A907290014
-01C32A64D486495A88E8DC8CDC94052A2A02424C07F9973CAB15F2BA5F02704A
-5AB0C9C0302F60C98B264925FE6783844AA4DFD981AAA3D16E0EE21E1120CF8F
-F463B6E382FADE9F6118693A6ABA6AE4014CC44D391B0B8EB9BC6FAFDBA0EDEF
-B4EEA2F2CC69F29B6C5C33F587DD60D98940C508D3DDB0CD06A2CE62BE4A367C
-B6938BDA64EC959F06D8B41AE8D7D469AC4F0625C9375CED6AD1FC554C79BBD8
-3D9533544936910BBFA9BA81D8DF7A41630625259B1B35EEC474C9A4E1766694
-1D825E46A5CE1C06FFA3D8CAB54DDBA0C28E22EE95ECF451A54BA43404CEAAA8
-726EDEFADB2958EB77C9911166B3AC7B4F6A96629E5528E70173903B3DE93D85
-A9358B70619C5674CC2225EA8DDB87F453D299C0644DCE1D8FF6CF025752DC97
-FD8DE71699CA9C70B8ACB4D721CC7853835452A1193A97F21C18A3B41F6C59D3
-0BD6737422214FA339E99D43BD1C590AFDD7596FF0D11C536E61E16A77B272FE
-D37CD28FB1330043EDB707F3006A9FCCF2CC50030A3F738BCC81C3B785F0FA36
-A62C0570E15CBA245B37CC3637DF5E62ACBD1A6D97ED6856097C3F325A624215
-5E0385AE2D933A150B4C9DEBF7B5E0A2284992C27258F975A48B071DD5145BD2
-A8DB6BEFF219ADA81F71C5D6F82E5BB14AF17BCBDE037C010DCD92F94849286B
-087F3FA85CF66C5A32C6DBE6D907B0CAD21566C51269AD28693165D82D6C5642
-3C61D381A9D2612E22993B1DD20A841721904D1E2A43EE91C23438BDB2BB2B64
-95D20C4BD5112541978C439B7E1E0FD376862F5B8E3EE945D11C4DC652B91F7C
-D35D6F80C96B820FA512ADFCEE5DC8B636F3C8C353E596F77A477210C130DE8F
-FEE70044ECBDD1E07163217CC782C2EA28F9A269878FC9C71B8608490958FF27
-C273B3C1266C478F151D273D78DBD999463F356D72E76BCC2FB8479A30860639
-B09B61DAAFD3C7CB6F743CB0DE661F5F009867968B936F5B2C5E2D9283108D58
-763F1C549ABF5F445B367D1EBC49F0AB2DF426CCEEAF3B016A7FE71B92F1C9AA
-D954E454F825A19024461514C918DBF724835B8A7D5ABA28442F26720B3BB194
-963052CA0D54168BF24FD8CEB9FD91AACACF6D56814E30BF0D0CCFA25235231D
-4038F5B4F16198D7F2DAC82F797A1AFE4F3B0AEFCA30BBD1304EA4E7C379235C
-8095D02797C141D070C1F2D0053414A8394A4C02B0A68C2AA62DB0311D2736CC
-700A7F1AA7043CC0956D412686A2EC165BF5EEF5399E9E209CCA99FCA2126AF3
-4D3DC19FC13AD5CE601B8457D0044C79A7F6F427842FE54DA145B03A06DB4231
-745289858ED456DD43B27709CD2C6269F4EB5E1D5D6B180B232F09DCE691F7F8
-9D472DA89A0E4AD769E52EBEEFDCDC40B9A16BD8F53B166F8CA87D42F5F03F83
-A574FCFDEFEE9A58FA0228B8EF495B879D14F5337FE08A426BEBB4E95FA1A478
-A2C0383F6D714B79839BA789B6C84CAA24B3116290C688179EBC8D8974B6B83D
-6864A8BDBD3119208B65BCBD2D235AAA888F9D37B3622BF88A297004AD2E2F2B
-D1D2BB1A32DD3A2A46D9E4F39755A1F16AFE8711AEAD81DB3F6EF138DD814EDF
-0A0CE8667B0985B405EFBF58E68DA69C5B48A30536AE7B9E8AB0BB2882001ABE
-242B837F58608BA8FCF10A948F1C909B8CD6EF0962F0B18F340AA3E9BACA6A25
-61D45476AE2984019BF108109EB8C83D16B759BC65ACB7A324984BA50BCC2D09
-ECA71CB617C18B66504F4DA9681E66B55D2D17798B8870219871187CEC31CAAB
-AE42420466E634F64380F065269985B22B4B9A4BCE1F48E9964488CDDC566661
-A604EEF778A5AB11BA356A2A37E770F11E6E78E0F253585E11C0F881321C7059
-A8A62BC13DEA6879668721A0CB20DC1203F54782F9403ADCE7271415ECAC5587
-1B3EA170B8331726C049117D081E0B168FF6D0629F1A4554D8C8F574D331597B
-DCEC0EEEA3718AAE845D3F6C9A0E11F789BE56641535FB75B1B2F32828FEAF1B
-15C31CBA3E673758E2E04D6B607A996A12B2DE67CBFB51B6777CCEFD3BB2A317
-1818A35DD6641EAF719D3F6B356E8C4A7E67F2FCAE1B7475C18DF9DAA5BC193B
-320498074BFAF27F871CF0250EDE025184F6B5646CFF95DA1C007F859BC37327
-DCD235958BF53924E79F798FA820D6DC2169F99F503DE112094EEE77DFD75C5C
-6182FDEFC228C48BA87D979E4C06C5F90956B68A133F548751291E78879746BB
-8F4085EB7B0038B2C835CC7F4562E082AAED3F5F803DB0BAF26D8AD1E917685C
-8FAC69C85D2B069768CDE45C39CA964683DCFA5A5EE1AB0D83058A4597EAE2EF
-63EEEB94184DBC2406111BF53C3515A37E78A1BAC7F3147A402F226CDB77F2CE
-94EB11B6225168957C13D849623C0F59642562824D79E2CE3707D21DC6F29772
-CE1D416815DDBCD0175BCF5F5E0DE3E9BBB3128968388188892A84699D0B2A96
-9EF32168ABE59A3C9AC81F7CD7D46FC2C3EAE1F2E6C3A8DD7F425D18633F09F3
-9559E50B45E2D3485DED4ED9E48815C6667A695BDE35F5BB65B6787B0FBE278D
-4E14340FB2DE92A46F16F51F0FC82E65E980C3DC333E170FB78DBF550CD830DC
-2A2A1ACDD5998CA23CB71C4F2DE57E6C3F58EE85D5A7D51B6A4A94F8010CB2A5
-1EF05F55C65872EFF24332466B6A2200AAA5A8120A78893F7F9F2D5DB03378EE
-104142760CD50836A96306C1592DB07ADFD88797537B6A1B0ECCDAA904C30D38
-672233ACCE77D662A7F38B30D8403D6DD720176A1CDA181D259202BAE3CB5F67
-49E680B7F9C6BDBF30654837A5761A6A52BDC262F466A1E40DF1BB5AC239A23F
-B27DD3A3F9612F999880AFF524E3C915B65CB7DE8C785E05569A1A9C4EFD79D9
-ED4AA298783C8EB1B98006C9FBCB72F1C623C45068598BDDBA1FFA7D53B109DE
-CC1DC908A9A0400111AB469AC20D8E8C8C705BCD4359C24B8976A440DD863FBE
-615F22659C37E0B0A4B169845C717EF200876A519BB0C5F9BD066120B73D301C
-14DEFED06B889DE143978FF3AD885DAC3FB1BBFB9B0A081E66720D2A2993EEA4
-B72220BF7F3E53B6FA6C2350A5156B2523053C970CD322AF91D3D775DA8F222E
-FDD492E5C208883ED3FCBC0E2C7015F41137102A5F4F059CA6F51F0AA9D9EBF0
-BCBB6F2F79338847BC7C4814E976973B60FBDD0060FCA8087E00C47B81432A13
-FEC19A3F38573CA9C6E82D950C481F74032A2DBADE0DFE98228B3CAFFA44C57F
-0DEEC8796EB434FA2B945085A223EC257DDDD9091ECEC1746DAE2750CBA8E112
-FD6DAFB57ED73E01AABD091D910F3F992A644C565C8E036A553DD5755C766A3C
-1A50BBD02F9767486714D1F6319A0315F421B7F225F660A56911CFB94940C9F3
-D313A2D7E07BD0404FDE7B73A71932E2B343DA71B6DD9E91EF8A61F4C5E10644
-DB74ED3F2E45640E1DDE19AD7E752B92E6D8656C65DB65DEEE05765D05FE3468
-6B68C406F2070974DFB1643EC5E833EEC9AB1C3B263095A2174A5D54F7631E3C
-F3953CE8A0AF2962AE604C8D32670329E49922AB48CAB1B1BC556B6363D4A421
-BB42B3D27ABD305B465E445BA5EA30162679A5B30A0F7121F4F86A060D09641A
-FFD3B7378704D1A7AD005491E758E2674B5C9096400839BB0A3E585AAE44F1A3
-EF8A7468466E812B078D21DF051A4232F7DD4779D87F993F4DC55EC88F7F4EE6
-4C99A807
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (sk-dired-ref.dvi)
-@start /Fa 242[61 13[{}1 49.8132 /CMSY6 rf /Fb 134[32
-32 43 32 34 24 24 24 1[34 30 34 50 18 32 1[18 34 30 19
-27 34 27 34 30 11[45 1[34 44 1[41 1[45 54 3[22 1[47 39
-41 46 43 42 45 9[30 30 30 1[30 30 30 30 1[18 21 18 44[{}47
-49.8132 /csr6 rf /Fc 129[35 35 1[35 2[35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35
-1[35 35 3[35 35 35 2[35 1[35 35 35 35 35 1[35 35 2[35
-35 35 3[35 35 35 35 35 35 35 35 8[35 35 2[35 35 35 1[35
-35 1[35 1[35 35 35 35 1[35 33[{}63 66.4176 /cstt8 rf
-/Fd 2[60 2[64 12[32 3[53 51 6[56 34[51 4[45 62[51 60
-2[60 64 45 45 47 1[64 57 64 95 32 60 1[32 1[57 1[53 64
-51 64 56 13[64 2[78 86 90 109 6[72 1[88 55[64 67 11[{}37
-99.6264 /csbx10 rf /Fe 5[45 12[23 4[36 41[36 67[36 43
-3[45 2[34 1[45 1[45 68 1[43 25 23 3[37 45 36 1[40 8[61
-8[61 10[62 26[32 32 40[{}23 66.4176 /csbx8 rf /Ff 2[37
-2[39 5[35 1[39 2[39 1[20 3[31 31 3[35 2[35 34[31 2[27
-1[28 3[20 54[35 2[35 31 37 37 1[37 39 27 28 28 1[39 35
-39 59 20 37 22 20 39 35 22 31 39 31 39 35 11[53 4[48
-1[53 6[55 1[48 54 17[35 35 1[35 20 24 20 2[27 27 27[39
-41 11[{}56 66.4176 /csr8 rf /Fg 23[61 6[67 108[53 1[57
-1[76 1[76 2[73 1[38 2[42 63 76 2[67 14[103 13[105 68[{}14
-119.552 /csbx10 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop -259 -364 a Fg(Referen\350n\341)47
-b(k)l(arta)e(pre)h(Dired)-42 -256 y Ff(\(ur\350en\351)25
-b(pre)f(Dired)f(v)g(GNU)h(Emacse)g(22.x\))-73 -176 y(Pr\355k)n(azy)g
-(ozna\350en\351)i Fe(\(D)n(X\))d Ff(vy\276aduj\372)i(dired-x)-450
-31 y Fd(Spustenie)35 b(a)j(uk)m(on\350enie)f(Dired)-450
-196 y Ff(spustenie)25 b(dired)1066 b Fc(C-x)36 b(d)-450
-276 y Ff(spustenie)21 b(dired)e(v)h(adres\341ri)g(s)f(aktu\341ln)n(ym)i
-(s\372b)r(orom)71 b Fc(C-x)36 b(C-j)g Fe(\(D)n(X\))-450
-356 y Ff(uk)n(on\350enie)25 b(dired)1048 b Fc(q)-450
-561 y Fd(Pr\355k)m(azy)39 b(pre)e(presun)m(y)-450 726
-y Ff(sp\344\273)24 b(na)g(predc)n(h\341dza)t(j\372ci)i(riadok)598
-b Fc(p)-450 806 y Ff(vpred)24 b(na)g(nasleduj\372ci)g(riadok)673
-b Fc(n)-450 886 y Ff(hore)24 b(na)g(predc)n(h\341dza)t(j\372ci)h
-(adres\341r)565 b Fc(<)-450 965 y Ff(dole)24 b(na)g(nasleduj\372ci)g
-(adres\341r)692 b Fc(>)-450 1045 y Ff(na)24 b(\357al\271\355)f
-(ozna\350en)n(\375)j(s\372b)r(or)794 b Fc(M-})-450 1125
-y Ff(na)24 b(predc)n(h\341dza)t(j\372ci)h(ozna\350en)n(\375)h(s\372b)r
-(or)473 b Fc(M-{)-450 1204 y Ff(sp\344\273)24 b(na)g(predc)n(h\341dza)t
-(j\372ci)i(p)r(o)r(dadres\341r)451 b Fc(M-C-p)-450 1284
-y Ff(vpred)24 b(na)g(\357al\271\355)f(p)r(o)r(dadres\341r)728
-b Fc(M-C-n)-450 1364 y Ff(na)24 b(nadraden)n(\375)h(adres\341r)863
-b Fc(^)-450 1444 y Ff(c)n(ho)r(\357)25 b(na)f(prv\375)f(p)r(o)r
-(dadres\341r)758 b Fc(M-C-d)-450 1647 y Fd(Pr\355k)m(azy)39
-b(p)s(omo)s(cou)g(m)m(y\271i)-450 1812 y Ff(otv)n(or)24
-b(s\372b)r(or)1034 b Fc(Mouse_Button_2)-450 1892 y Ff(zobraz)25
-b(men)n(u)874 b Fc(Control-Mouse_Button_3)-450 2086 y
-Fd(Ok)m(am\276it\351)38 b(ak)m(cie)f(nad)g(s\372b)s(ormi)-450
-2251 y Ff(otv)n(or)24 b(aktu\341ln)n(y)h(s\372b)r(or)883
-b Fc(f)-450 2331 y Ff(otv)n(or)24 b(aktu\341ln)n(y)h(s\372b)r(or)f(iba)
-g(pre)f(\350\355tanie)417 b Fc(v)-450 2411 y Ff(otv)n(or)24
-b(aktu\341ln)n(y)h(s\372b)r(or)f(v)g(inom)f(okne)480
-b Fc(o)-450 2491 y Ff(otv)n(or)24 b(aktu\341ln)n(y)h(s\372b)r(or)f(v)g
-(inom)f(r\341mci)449 b Fc(w)-450 2570 y Ff(zobraz)25
-b(aktu\341ln)n(y)g(s\372b)r(or)843 b Fc(C-u)36 b(o)-450
-2650 y Ff(vytv)n(or)25 b(no)n(v\375)f(p)r(o)r(dadres\341r)795
-b Fc(+)-450 2730 y Ff(p)r(oro)n(vna)t(j)24 b(s\372b)r(or)g(p)r(o)r(d)g
-(kurzorom)f(s)h(ozna\350en)n(\375m)194 b Fc(=)-450 2933
-y Fd(Ozna\350o)m(v)m(anie)37 b(a)g(o)s(dzna\350o)m(v)m(anie)g(s\372b)s
-(oro)m(v)-450 3098 y Ff(ozna\350)21 b(s\372b)r(or)e(aleb)r(o)h(p)r(o)r
-(dadres\341r)g(pre)f(\357al\271ie)g(pr\355k)n(azy)71
-b Fc(m)-450 3178 y Ff(o)r(dzna\350)25 b(s\372b)r(or)f(aleb)r(o)g
-(s\372b)r(ory)g(p)r(o)r(dadres\341re)308 b Fc(u)-450
-3258 y Ff(zru\271)23 b(ozna\350enie)j(v\271etk\375c)n(h)g(s\372b)r(oro)
-n(v)e(v)f(bu\013eri)249 b Fc(M-delete)-450 3337 y Ff(ozna\350)25
-b(s\372b)r(ory)f(so)f(zadanou)j(pr\355p)r(onou)461 b
-Fc(*)36 b(.)-450 3417 y Ff(ozna\350)25 b(v\271etky)g(adres\341re)857
-b Fc(*)36 b(/)-450 3497 y Ff(ozna\350)25 b(v\271etky)g(sym)n(b)r(olic)n
-(k)n(\351)f(o)r(dk)n(azy)541 b Fc(*)36 b(@)-450 3576
-y Ff(ozna\350)25 b(v\271etky)g(spustite\265n\351)g(s\372b)r(ory)550
-b Fc(*)36 b(*)-450 3656 y Ff(in)n(v)n(ertuj)24 b(ozna\350enie)975
-b Fc(*)36 b(t)-450 3736 y Ff(ozna\350)25 b(v\271etky)g(s\372b)r(ory)f
-(v)f(aktu\341lnom)i(p)r(o)r(dadres\341ri)108 b Fc(*)36
-b(s)-450 3816 y Ff(ozna\350)25 b(s\372b)r(ory)f(vyho)n(vuj\355ce)h
-(regul\341rnem)n(u)f(v\375razu)138 b Fc(*)36 b(\045)-450
-3895 y Ff(zme\362)24 b(zna\350)n(ku)h(na)g(in\351)e(p\355smeno)648
-b Fc(*)36 b(c)-450 3975 y Ff(ozna\350)25 b(s\372b)r(ory)-6
-b(,)24 b(pre)f(ktor\351)h(elisp)r(o)n(v\375)g(v\375raz)h(vrac\355)e(t)
-120 b Fc(*)36 b(\()f Fe(\(D)n(X\))-450 4182 y Fd(Mo)s(di\014k)m
-(\341cia)i(Dired)g(bu\013eru)-450 4347 y Ff(vlo\276)24
-b(do)g(toh)n(to)h(bu\013eru)f(p)r(o)r(dadres\341r)517
-b Fc(i)-450 4427 y Ff(o)r(dstr\341\362)24 b(ozna\350en\351)i(s\372b)r
-(ory)e(z)g(bu\013eru)471 b Fc(k)-450 4507 y Ff(o)r(dstr\341\362)24
-b(z)g(bu\013eru)g(v\375pis)g(p)r(o)r(dadres\341ra)416
-b Fc(C-u)36 b(k)-450 4586 y Ff(zno)n(vu)25 b(na\350\355ta)t(j)f
-(adres\341r)g(\(zna\350)n(ky)h(sa)f(zac)n(ho)n(v)n(a)t(j\372\))165
-b Fc(g)-450 4666 y Ff(prepni)24 b(triedenie)g(adres\341ra)g(p)r(o)r
-(d\265a)g(mena/d\341tum)n(u)106 b Fc(s)-450 4746 y Ff(upra)n(v)24
-b(v)n(o\265b)n(y)g(pr\355k)n(azu)g(ls)843 b Fc(C-u)36
-b(s)-450 4825 y Ff(obno)n(v)25 b(zna\350)n(ky)-6 b(,)25
-b(skryt\351)f(riadky)g(a)f(p)r(o)r(d.)448 b Fc(C-_)-450
-4905 y Ff(skry)23 b(v\271etky)i(p)r(o)r(dadres\341re)783
-b Fc(M-$)-450 4985 y Ff(skry)23 b(aleb)r(o)i(o)r(dkry)f(v\271etky)g(p)r
-(o)r(dadres\341re)395 b Fc($)1866 -364 y Fd(Pr\355k)m(azy)39
-b(nad)e(ozna\350en)m(\375mi)g(s\372b)s(ormi)1866 -198
-y Ff(k)n(op\355ruj)23 b(s\372b)r(or\(y\))1027 b Fc(C)1866
--119 y Ff(premen)n(uj)24 b(s\372b)r(or)f(aleb)r(o)i(presu\362)e(s\372b)
-r(ory)404 b Fc(R)1866 -39 y Ff(zme\362)24 b(vlastn\355k)n(a)h(s\372b)r
-(oru\(o)n(v\))711 b Fc(O)1866 41 y Ff(zme\362)24 b(skupin)n(u)g(s\372b)
-r(oru\(o)n(v\))749 b Fc(G)1866 120 y Ff(zme\362)24 b(pr\355stup)r(o)n
-(v)n(\351)h(pr\341)n(v)n(a)f(s\372b)r(oru\(o)n(v\))472
-b Fc(M)1866 200 y Ff(vytla\350)25 b(s\372b)r(or\(y\))1056
-b Fc(P)1866 280 y Ff(zme\362)24 b(n\341zo)n(v)h(s\372b)r(oru\(o)n(v\))g
-(na)f(mal\351)g(p\355smen\341)269 b Fc(\045)36 b(l)1866
-359 y Ff(zme\362)24 b(n\341zo)n(v)h(s\372b)r(oru\(o)n(v\))g(na)f(v)n
-(e\265k)n(\351)h(p\355smen\341)261 b Fc(\045)36 b(u)1866
-439 y Ff(zma\276)24 b(ozna\350en\351)i(s\372b)r(ory)844
-b Fc(X)1866 519 y Ff(vyk)n(ona)t(j)25 b(uuenco)r(de)g(aleb)r(o)f
-(uudeco)r(de)i(s\372b)r(oru\(o)n(v\))118 b Fc(U)1866
-599 y Ff(sk)n(omprim)n(uj)23 b(aleb)r(o)h(dek)n(omprim)n(uj)f(s\372b)r
-(or\(y\))270 b Fc(Z)1866 678 y Ff(spusti)24 b(info)f(na)h(s\372b)r(ore)
-886 b Fc(I)36 b Fe(\(D)n(X\))1866 758 y Ff(vytv)n(or)25
-b(sym)n(b)r(olic)n(k\375\(\351\))g(o)r(dk)n(az\(y\))587
-b Fc(S)1866 838 y Ff(vytv)n(or)25 b(relat\355vne)f(sym)n(b)r(olic)n(k)n
-(\351)g(o)r(dk)n(azy)443 b Fc(Y)1866 917 y Ff(vytv)n(or)25
-b(p)r(evn)n(\375)f(o)r(dk)n(az)922 b Fc(H)1866 997 y
-Ff(preh\265ada)t(j)24 b(s\372b)r(ory)f({)h(h\265ada)t(j)g(regul\341rn)n
-(y)g(v\375raz)224 b Fc(A)1866 1077 y Ff(nahra\357)24
-b(regul\341rne)g(v\375razy)776 b Fc(Q)1866 1156 y Ff(prelo\276)24
-b(s\372b)r(ory)g(\(b)n(yte-compile\))645 b Fc(B)1866
-1236 y Ff(na\350\355ta)t(j)24 b(s\372b)r(ory)g(\(load-\014le\))764
-b Fc(L)1866 1316 y Ff(spusti)24 b(pr\355k)n(az)f(nad)i(s\372b)r
-(orom\(mi\))578 b Fc(!)1866 1523 y Fd(Ozna\350enie)36
-b(s\372b)s(oro)m(v)j(pre)e(zmazanie)1866 1660 y Fe(Odzna\350uj\372ce)28
-b(pr\355k)n(azy)e(ma\276\372)h(zna\350)n(ku)g(pre)g(zmazanie)1866
-1768 y Ff(ozna\350)e(s\372b)r(or)f(pre)f(zmazanie)737
-b Fc(d)1866 1848 y Ff(o)r(dstr\341\362)24 b(zna\350)n(ku)h(pre)f
-(zmazanie)635 b Fc(delete)1866 1927 y Ff(ozna\350)25
-b(v\271etky)g(z\341loh)n(y)f(\(s\372b)r(ory)h(k)n(on\350iace)g(na)f
-(~\))191 b Fc(~)1866 2007 y Ff(ozna\350)25 b(v\271etky)g(z\341loh)n(y)f
-(\(auto-sa)n(v)n(e\))552 b Fc(#)1866 2087 y Ff(ozna\350)25
-b(r\364zne)f(do)r(\350asn\351)h(s\372b)r(ory)673 b Fc(&)1866
-2166 y Ff(ozna\350)20 b(\350\355slo)n(v)n(an\351)g(z\341loh)n(y)g(\(k)n
-(on\350iace)h(na)e(.~1~)h(a)f(p)r(o)r(d.\))71 b Fc(.)1866
-2246 y Ff(vyma\276)24 b(s\372b)r(ory)g(ozna\350en\351)i(na)e(zmazanie)
-398 b Fc(x)1866 2326 y Ff(ozna\350)25 b(s\372b)r(ory)f(vyho)n
-(vuj\372ce)h(regul\341rnem)n(u)f(v\375razu)119 b Fc(\045)36
-b(d)1866 2529 y Fd(Pr\355k)m(azy)j(s)f(regul\341rn)m(ymi)g(v\375razmi)
-1866 2694 y Ff(ozna\350)25 b(s\372b)r(ory)f(vyho)n(vuj\372ce)h
-(regul\341rnem)n(u)f(v\375razu)119 b Fc(\045)36 b(m)1866
-2774 y Ff(sk)n(op\355ruj)23 b(ozna\350en\351)j(s\372b)r(ory)e(obsah)n
-(uj\372ce)h(regexp)169 b Fc(\045)36 b(C)1866 2854 y Ff(premen)n(uj)24
-b(ozna\350en\351)i(s\372b)r(ory)e(vyho)n(vuj\372ce)h(regexp)119
-b Fc(\045)36 b(R)1866 2933 y Ff(p)r(evn)n(\375)25 b(o)r(dk)n(az)1145
-b Fc(\045)36 b(H)1866 3013 y Ff(sym)n(b)r(olic)n(k\375)24
-b(o)r(dk)n(az)988 b Fc(\045)36 b(S)1866 3093 y Ff(sym)n(b)r(olic)n
-(k\375)24 b(o)r(dk)n(az)h(s)e(relat\355vnou)i(cestou)385
-b Fc(\045)36 b(Y)1866 3173 y Ff(ozna\350)25 b(pre)f(zmazanie)931
-b Fc(\045)36 b(d)1866 3376 y Fd(Dired)h(a)h(Find)1866
-3541 y Ff(otv)n(or)24 b(v)g(dired)f(s\372b)r(ory)h(vyho)n(vuj\372ce)i
-(vzork)n(e)145 b Fc(M-x)36 b(find-name-dired)1866 3621
-y Ff(otv)n(or)24 b(v)g(dired)f(s\372b)r(ory)h(obsah)n(uj\372ce)h
-(vzorku)145 b Fc(M-x)36 b(find-grep-dired)1866 3701 y
-Ff(otv)n(or)24 b(v)g(dired)f(s\372b)r(ory)h(p)r(o)r(d\265a)g
-(v\375stupu)h Fc(find)125 b(M-x)36 b(find-dired)1866
-3904 y Fd(N\341p)s(o)m(v)m(eda)1866 4069 y Ff(zobraz)25
-b(n\341p)r(o)n(v)n(edu)1014 b Fc(h)1866 4149 y Ff(preh\265ad)24
-b(pr\355k)n(azo)n(v)g(dired)836 b Fc(?)2219 4454 y Fb(Cop)n(yrigh)n(t)
-2522 4452 y(c)2505 4454 y Fa(\015)21 b Fb(2007)i(F)-5
-b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)2302
-4517 y(designed)h(b)n(y)f(Stephen)g(Gildea,)g(Ma)n(y)i(2006)g(v0.1)2299
-4581 y(for)f(GNU)f(Emacs)i(v)n(ersion)f(22)h(on)e(Unix)g(systems)2128
-4645 y(Up)r(dated)f(for)j(Dired)e(in)f(Ma)n(y)j(2000)h(b)n(y)e(Evgen)n
-(y)g(Roubinc)n(h)n(tein)1866 4737 y(P)n(ermission)d(is)g(gran)n(ted)h
-(to)g(mak)n(e)g(and)f(distribute)f(copies)h(of)h(this)f(card)g(pro)n
-(vided)g(the)1866 4801 y(cop)n(yrigh)n(t)k(notice)e(and)h(this)f(p)r
-(ermission)g(notice)h(are)g(preserv)n(ed)h(on)e(all)h(copies.)1866
-4893 y(F)-5 b(or)17 b(copies)g(of)h(the)e(GNU)g(Emacs)h(man)n(ual,)f
-(write)h(to)g(the)g(F)-5 b(ree)17 b(Soft)n(w)n(are)i(F)-5
-b(oundation,)1866 4957 y(Inc.,)20 b(51)h(F)-5 b(ranklin)20
-b(Street,)h(Fifth)f(Flo)r(or,)g(Boston,)i(MA)f(02110-1301,)j(USA.)p
-eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/etc/sk-refcard.ps b/etc/sk-refcard.ps
deleted file mode 100644 (file)
index 3239a03..0000000
+++ /dev/null
@@ -1,2588 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: sk-refcard.dvi
-%%Pages: 6
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: csbx10 csr10 cstt10 csti10 csr7 CMSY7 CMMI10
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips sk-refcard.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.02.13:1231
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.1: CMMI10 1.100
-%%CreationDate: 1996 Jul 23 07:53:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-32 -250 1048 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
-990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
-6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
-DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
-59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
-D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
-8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
-6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
-1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
-03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
-95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
-74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
-3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
-47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
-AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
-42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
-40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
-B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
-9560176676ABB71BBD0EE56B4CC492C0652750227CEC6CBEEE374709231B00CD
-0DE83AFDE295B314F6C8B1FFD32251C1925D96A64D739FF1DA4926460B28B3DE
-E949AA0BA3DDB16534FBA30C32092D5F712B5E8C8D5142F35AF2906E6C219D2C
-7FD9A368C193E0EB9C7E25FF03C546B6ED993F964CEDB1B8537C617170787F37
-88D6F2AD02384B01067FE3F98257BAB958BB3BCD1001090A4502DA0638080EC6
-DB784CC8AC37CDC01B29BC481D6A05ADC6188785262358C1BF1D694BBF31C1F1
-AF117C1ACED44AAC6EB4B9A2511A6762DDE8FCCBA5
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY7
-%!PS-AdobeFont-1.1: CMSY7 1.0
-%%CreationDate: 1991 Aug 15 07:21:52
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-readonly def
-/FontBBox{-15 -951 1252 782}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
-8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
-F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
-E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
-424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
-E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
-C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
-868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A
-089B2D24FA80E89E381E17A5E49663B60435D79C04AFCB27AF313045D656F461
-93419897889D12DC113AC6F3E770F84030ABB6E0E84822062F22823E15C18EE6
-E524114FBC6B5FE333E2C649670C7EEAB2EE8F98CECBC72B2061A886113BCD86
-34BC89B316AED93C32336F15F2038797FA6AA3B63EF403BEC4F40DCE0B2A1C89
-92BC8F62BF85B2D4418236D4795B16BAB0DC89098B5226FB96544457550AE495
-36ADB1399938FF601079DBCBD45914B5E3EB0D6AC6DD675A093B837B3A42BC37
-528CF6FF82FDD1BFEA6FDC9AC1D7C2B234D3E2CB59258C530CE314F409C10B0C
-6F6AB5C5328407AA1A3A0835D81524219D501B2CA34F839703364431A499320B
-F219D27AE28BC90912E7
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csr7
-%!FontType1-1.0: csr7 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25529 25807
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csr7) readonly def
-/FamilyName (csr7) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csr7 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 77 /M put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 85 /U put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-31 -251 1122 864] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A13872340A840BE8B95A5F1C25
-CD575CD32721748B2E67F9EFB55236DAEBD0A0A66E00D40EA8F97CC2D2C60B23
-D6D605B155A7303A9304DF379860F72EEAAA9A6A3D763A766A4F7F7C298B77F3
-8BEFAAFC7E7C91B8285AAC489F9B84598AD6FD112A7E3F85F66B0E063013FA13
-EAAE7D3008EF4CC3C5E3A73EE8DDF17EF3426989F331E68C4E36976CA972DEAB
-90B647C14B200DE939EA777B45D3220E4619DFE510764CF8D22D8219515BD27D
-EDFE3C56106DEA15E8C5B3E8A66B1B8EFEEB3AF622C560D4D8A5C8CFD081C385
-9CE1F49CB88A38F2EB89589DEC399626D687B1AF9C593DAD2839D4A2593A1F13
-3FFC135447C687382EEEC507833E465286304C3200E5D3E7328064B84F05E696
-F7C269217DAA9466269DF343D09B283931A74BED0B18DB3F17F9E9F23F598D56
-D5EC687F7A1E6E70E6D6AB335CCAD0426C5396072F15A124743CA6149C5ABB72
-B8D388E2829E1FF5614D22C358B72F7A86EC62F17514C5A0C9EC297A31D0AD53
-1C9FDB368EC14813B24C84D3FDE47DC7990E350ADA10FC2E710099EBCAE53C63
-FEC9C91AA27DE81273BCC7EC20DDB18EED75D7D04DC39DD27EB86BA5EC4EC9E4
-349CE0EE181973616918A974B51A34B147BD3204EB4EFAB3A48CAEA28950D309
-6D39676C15E531296E88B57CCAC3DC957037D5E97FE28E784A2F98B3767F41CD
-6C5D59E708F123892A76C60EAB7EA01FEE0CBD94A78ABFBA9A34D0FEA1117400
-85FDDF49D3313E227746DE830E6D090D17073AC9D62BD413D8E8083658152108
-652C317C168DEAAB3CA7F0E20A50BF81B4BB1D32B7A26FD1D6ABF8907AFD01B4
-63272EB0915973C52515C87B55390252A98957C41751D016F2BBCB1E8577E6A9
-65600DBB29116D97A4DC9ECE699DCC7CAF542B507DDD77014C2926BAA2BC1631
-BA1E8FA5B5B98022786D9638A76360FFD99E9044C1F5B0655747B0DDAAD865BD
-A0E537302FA691935B8767EDB785573B859622143BED2717AB03262A0CBA7E5A
-F695D44640348F5C7CA372A9C7C4FCF369309FC3F27D7601646F7BE779596563
-D34BDE93140A1EC6F2BCC20D8EA1210CCF194D253C3234BF4CBB58256AAA4DD8
-3C8174AB99A31D54AAB23F63A8B80B973C5FB15770EC42B469B0BE7BC493C294
-16527A0F5D5C3BA85983E84F59D9F86F1642548A4ED5790BA17FDAAA2C8658D4
-771BAFEA3869A86E4777825D745663392642D27A1661C65202889D65D15D0A50
-B6C4F06A98D4302F694C03749274C25D91C9FE728405B46CB5289B854A7E8682
-A7A6E426D4DE26D5775808E650DA607A1171808788DED17A1715D7440D6A22CF
-01173F11A4954AA49209DE91D48049F3194DF0C25DEA3DB243B777885FF45FDB
-6ECDD1074B0052010F734F7DBC2F79AD8A3E267FAE9D97C3E43F0CED01AB9E5D
-93DAFCCCB326DD03C7291AD83CDFF069C79A939196AFFBC6930B0B5641402DAE
-4CDE4ABF5421FDFF8AC14C4421D3F253567FDBF9BEC201546C32C08CF24A0B5D
-7150DEE9208FD0E20F30DC460F3A3056018CBC2B3BDEBF3C971654E807E337E4
-7FDDF0F773DE0FCEAE36B0E0B859E1F2C5998994E9552D8E914675F5A00A855E
-8B17167F7073133BE20413033D04420649CD805B13785265A5EB42B76AEF246A
-3FC66787060EA27C1DA79B16DCCE11A67B92758ADB7496B1C9426D4837BAC8C8
-1110018C1FE3E882C6DDC059CAA29A2A451E202C0877C47FA7BB582977E8E7B7
-3944561FB68717A32BDA2C12B6E0E0613F5DF1B99908AFB05963CA5F48F44B37
-528903BAAD3BB7B44DC1DF804B48B814FAB4ED9C8B67B90753FA0544CB7151EA
-F414F439E45447B7E00EA0DDD9716CB18E6F4B1B876B46F4AE3FEF38D22125B1
-8030F8000A0869EC20DCEFF8FFDB0E7C39155E681D1CA1AE18770D60D3847B7B
-0C0232FE0EEDF8422A71AADC8429207AEFD8F9D68D8A8A81CA4058524A85EBEC
-627DCE848671DB10952F97CDA499AE32DA838CC4B2042ABFD9C82E1C44FD9B4D
-D778E3DE1EF0ACCFF0E98667F99BBE81A3A8EA8FE12A209F6BEE36AF7FE0430A
-7A05F781AA6015A9388AF7A7BC050402BF4B911DB192F6F50A20C488E297B9FF
-D62C7BA568DF06DC56379E97AD83A2162E4C088363E3FA1903E5BD6938BD3D0C
-74D6561B236D1F78786C20F4A5C0330B2FD2F175D75D4FAAB8DB701B92702C89
-44524FAE730767800C1B71DD4C7B217F3C12E54728B6CDC35DEAA6DC6827BCB1
-22AEB3B04198CC5DB863BC3552287EEBB8FDA1EB19E2B14EBE23790CFF34ABD2
-7479919A4816B83FC399B36E5C65930593CC4D07FADA850A6F9BAC3743DB32A3
-3FD7932EEE76FCBFA0F05BF141902025B9D92D7E6E829A7DF8AAFF4AC4E67C6C
-5E1E987438314F8C9900516B4AC073E5EA5E6DA4A6AB40A30517CCEEC1BAE4B4
-D2E574D2487C992980B9BEC05FAB0A7E5533CF9AC951E2BBF21810241A49C709
-D66D7066416185CC2404224DBBCDC121D2A77B833167A4FF40C2E296CEEAE79B
-C3D7842578CCB70330152C215F116FADAF32C037B418D269D591035D246C3A28
-1D94DFBAE0FCC2E4F3DD684847727DD8507C56D7DD1180455C231D0F22A83558
-C0035B7EA552FEFD1AA9FD1DC0BA8716E64CD5BC86F84276FA9D302BB8329CAC
-D7B36D5D28BC84B104E2E7C620566144104B113E6EABC02F4B499A919A0EB2C9
-254750F791E9D288981848A17BB406397750E1E063533909EED5F9A145E573AD
-8824A137907F7C4C931CD7F974BC226B848416CAC06C172D6F4921778AB362D9
-CEA68F1C66AC5795F4AE11FF52FFE1354B152C682B9DCEDBEE5937802430CA4B
-9D8DB908560440506E8273319195E0FB9BBC7676A10C8A2FE8E00E02F5533658
-40987BD7D583BBC165118939024D457D461A019D4DB4F98BF3A6FF801BD96D91
-3C83BF834E119C012686B9953AD97AE25BE1C7A7E741EB26D3D93E55B5CD7B78
-ACDEAC1FA02F5BC4CF7DA4C3675E695F77E64008F94AC2FA6A928555C33AE481
-D94575652F509FD01FFFC15041AE754BDE5A33F7C5FABDF5669944EAEB8A884D
-BE562D38199C73C4289E185D1793D70E2B5BD210147722F9A76C92C252728192
-E0932953D98F88E25ED673B03C498396179B45B0B7B34E77C7802540C2D32848
-F30961C6A297D69941E50190C896F459052478D24126D19EAC1F8A1531E66970
-C87560D13B94294FEB10FABE7A60CF96B3E866F56E0A30D6BDDDEC913178217F
-EDA129B098F4864EEE7745B85F39484775E852111D06F09221C42B65D1344148
-B75E80F2C73C52382E09C1869645C61F94FBF0F75279FB1874C7B6725612EDF9
-860E2D43416FE779337F3B057177FC1927AC7C08E664BB078D7A88754E8AEEC7
-B7050A42A1FB41E9109B0D0D853AEE0C8CC858C2322F5B84D48A6D706EA58DA3
-B559F5FA891834E7FCB636EC92C8D4AD667935B766637D4DF180A036E124C3E4
-37BE953E6A69AB663A24E8040D4E7955F81653993115ADD6EAE5EF3E99FBC1F6
-026B3861B9D14210BEE715B4B740E5228AB9AECBC553F7EFAA12A6B05E2F8076
-237CA834A9517EF999A1BACB14AB7B0D76DA0424FA37239F3DE56AC699F5DECB
-584E177ED1B778AC58D1FAE0ADF84F6ED1DAF4BCCC47FED08E972120C04146BB
-525AB915F7DE3BFC728D31D00C83C1703F0487C9B2943C512D1C366FDFCA03FC
-47FE882178C1DF18158090A62C5E7617FC34120326EAB952754559F0D8B69703
-460509F10D9FDAF4E29F4427CBA489D7A98AA60428B22449777E399E3E78FEB6
-1464FFF0247279C31B48524C28A84549B120DA1B8798DACC2367B0932A0BFF75
-F2D3F44EFF1FFB5066E0037BDDDD2229BB2530ED4D01C2A466F7F1FE89928092
-EA674F63B4B4C4AD64331A99681E63EDB66CA5D62B5598DC226936EA8614C5E3
-603267E6FF17FC08F7920FA3D92C9DCC571C4B31C12B8A4497C54261C7F916F1
-F70CC389EB038CF41EACDFF47E02959EDB3D8F50980FBBAE2E20CF28B6B96ECE
-D1582505FB0C00E662B1D0A31D48BF609210D038C9F8F52064AAFC42D3F4BDC9
-AB1916B45687100E58E97D910431F50E0BB03C9E5577591CD09684FC818E62C5
-3490925DBA1883BBD8CF5749FB25072754DEADCBF8EF6AB4AD998A5A82A90EF1
-D89C8F1CFDD15E703C4EF8A75F716541156508DA2067462C3B3D1332831A6258
-EA1B487B2039FBAC9B1898FFCEF004EBD7B748BE8812FF092B4592F317852A5F
-D450ED65F9AB7084B26632C69640CF28D54CF20363A49CC061445A11FA981B24
-868FA71DEA8753D395494C570FE29CDAFC2522EA3712CF8B4E072518EEFC3D4C
-591A86F3D33AA5112C33E7B4C4396D8E1C205A9DA6C1D8982E2093874A553B1E
-20D8C824B0F9934C8FE700A3C433D66D936AFB1464F369171A015A594344A973
-39205C1A75DE8830AC151D6076B1325FEB2A54BA363191FF74E67764A997E14D
-29270E9F7009E86548DFC8CBD96B1D3455D84B2FDBF10174EB054B62FAF3B72C
-5FEA8049A05B27168B4EFF01DD370C17DE4376C2793ACC698EA19C15C2E9E976
-C2F6D151D9E96F9892FEBE99F8AA201AA4031AE6A5502FA06AF57044566C590A
-2FA7EFB9F9A208C78B3970EC9AC9383A07F78A6B8E322F3F482B136148B37CF3
-B8D76BDE754050D7D491B47A559BC6741224D97652956E889B02261D9F164C3C
-903DBB12FF2A0D1A5BF986DFDED798728D29B9B988894E59BEFFF4B33C46E2ED
-22578236EC46C85947CBFE32894FDFA44319A135D989DE1015A66B5E2C0F3267
-227B0D1976E93AE88F6B5DEF77F049225C7190CFB9B733905B4548403288061B
-0B3793F72BD759941BBA7DD59BFCBE05BA7C9B8B21BD813654D0A3F8345E629B
-05B9100CCE2A26C826186AF363D4257733EA1175FF820B35B6D3290FEED1ABE0
-AF29C45610EB4109A999F098930DA22B1651995D1011DA3BC3C06A23182D72CA
-2CDF3079A8AB8A957E6932B4443C4286BB7787D949A7E6630C609304968C5A4A
-E6B75AC96C23959EEB0CA2F1D7AB77392EB1F0DAA029DB24B061068A453B6B4E
-8710DA5E406CFBC130ED9C494352F35D92491BBFD7563E43DBCCA40A4E8EE90D
-695DA2D1CA76684A7AD5465B2AC8F98DB84F7470DD3BF5D690384D58AF278448
-64C28AC301C9A5376040654BFEB63D68EB030A0816DB38F253B92AD36D3408FE
-CACC49666D06416CCBF60F7625103A1C8B06F0444BA457264F17834E3C631AE9
-3CD16C38A2764E21E5C06469DC9941DE01B2B69C249A21058DA41C0F712D6EB4
-771D564D395DB75E59B6B6FCAD823AA9292D16577986497570D3BF0027804326
-9BD710BA73326DEA241D8FEA02C77CFAFFB2E1B22C89BD7BBF762206BB7B63B0
-FFD8BB27727A4A563E5EF3C76DD57181408AD5D8D4CE428090A0BB7AB574F201
-591C049E4092C83725CB53433BC98592D5C401D05F01FBE781553AD2DA858885
-D905DE7C0A65E813175A4EB760BB3E01D73EAEA2F1AA91C203E695CFF8049550
-D8DE626DD2C256D519DC5324B99B354037A9978E3FF637F76F5E15595E09B6C5
-1D9C7D0EE94425F89BBC6C57A65DCE445DC2F49FA8C7636CCAD804F0B26126D1
-FD549870235BF4E5C7CA986F104C7C0E33BB7536E5A9FB8C986E89C6B25DA205
-A91D76249898F66AA72B8DBD39F60AD50FFC49AC88D7EA03FB0CB9E2BD13A3D8
-CE65E7FD6C6A88571FCFBBC727D54B69BE166B5739068D087E9BF832FB2D221D
-9716ACA9FE6AFC513ADF36F652265E0D202B32E1012851650EE6B39A5835EF65
-524CA2AE86DEAB22D43AB33B93512161F8C0C968382712788690EAB1356CE14A
-B10B24123BEE065424955021DBFC0243572607A62DC41ECB1E0E2108D4B2B805
-027E50BBB534B19193151BF0E4D5B3CDE4EF593F2FF4B2BE846B9BB8B2548ED5
-A647651FA1A93EBA678CF5A3069FC36C073423ABC716062D460DEA2ED5C5EDF2
-93BAF334EB970F9A5A2C069C273F332B5348BF8C52BFF8E5E6B395258A3FDF46
-90243DC26F19827D027445E99993D46D1D80B83991F9E49A36BE735B53AC696E
-E29A951AC9FB290D97382B593F2634FDF45429CF9557A23F957056D601E8DCCB
-828567132B96D5FD8CF721475AB86494CD3AAD998C2E17320F279577773E9501
-5FB03D38EE5D937B7BC9D3E8E089E47A1900717CADE0985E0D919C550AADE846
-125270BC3B1E72AE6B09333DDFB1644F3735FEE4748ADBBD6F33560FE348253D
-A1A2EA0406867C967E96D419E8A5E29B4AD6EE5415FFA396853E991AF6004448
-0A8AF0FAC0A09B5CE25CDB7C7D90450321527AF04343534302461E4E498FA76E
-66B801141737177FDA17A926DD22312AF9608A77D941FFC26CAF7E9C6736B62C
-B4F99589A95967E68680AEEAA8C41D44DE0C3ECCAB62188B325969B8E0A11820
-A6811E8050E222E7AF8B9134C3AA641A8C10667E0363675CA0702B346DFF151D
-1AB8DFD54C75530E9F215A40B481BA803A7BC22513C6F62B395C33A72F529C1F
-2C43692FF5E245856762501C8CA3F4597D1F620A8B4A48190C68A6FD3BD0B79E
-45B39DAA0A83404C59D7F2CEA76D8C39B3F9DA544C603AF27D2E0698B0D59B22
-52723B51A4C7240957A5F9BA3E07E79F8E93867EF1537C9E4CF857CC8A6E0896
-EA633D20C16EC0905AA74FB443F301D6C2FF909C363F99DD6A3BEC57B12859D9
-904D3D37F9B84215698108F4B3D6CB2B1E6DF5DEE5B166879342CA642D5F919C
-6BE08B6637817155564C3D7ABD29EEE1EBDED5571C31A8C75FBFFB52A616A773
-525A92B7E34DF5CF7328F6EABE0B9AA4282C8001FC1F5787BCE8D99544EA4790
-06C13E5D3C05802AD29662968CA835D043837DB65BBFAD21D4703D45274AAF55
-B04FDB4231E9D4D7F5EB4D14ED75850BFBFF2290750F3FD72284830780414A75
-E8553105F9C804B4BB2C5035CD7A1AAC5D2924D1B6C3FA7E717F4BCC00E784AC
-9FA498D9C814B6318AE10D15B6147495C1AB8FDDB12A38C93B3E20AC16C0756C
-2C0955D4C6B82C9DA7121AEB2D9DEC413E97E106CA1742146B72501AEFCF3D8D
-567B5B49359049096DD81065722BEAB7050BFE32F5DD8F141FF7D01630C673E4
-325EC6FF2D541F20FCCBC41FF5D311589C25F39F521C722F0B0A8F785FBE4818
-C984EB22D5293B799344DDDAF4A0414ABD71E4C66E5436999B14E925E7EEF81B
-3FC0903E36F7D902A4135A45A199CCF6B24E769A3CDE0544A914296C3D15BA76
-FA0EFFB40F7FA7E8A789462BE9603E85B01FCDC8A46C735D6937D407B5CEE5BC
-9BED3E4C4798FABA68BBA6663848C5432B5DC3CCAD6252040E245F9E02F30D4E
-0C7707093A1B654F9C80DC870773DCDFF7B7603614A0D00493EA8BFDBF5C6FDC
-9C9F4611E55F7E614312AD00F41837D4BAE3A6B966919437A60DA5D6A541D1E3
-2C528CE4297D3379181ADBCA7B6CA86155156D633DAB4EB5FE2653D95262E2DC
-AEF216304F72D1DAA0DBF303075ED87AA036E2D54F5574197793215322055D87
-73EB1543AC86CFFF249C495A0ACEAED06D9A61BD432D9FC8E45B27BAF9E9780D
-B37F1C0CF3D44EE1E5587DF39C18DE2A1C870278809F31C6DE14711B060818C7
-43A5949D8352932E9FCB4232372E55AF7CB5F283D8AAFF8F5D352577FA8FD9E8
-E337E4C6C2888DCE39CB6E6BC497EA04378CEE24D0E2ED2177602DC8D8E18260
-71C2FD1DDDDCBD1737E2E9FC117AF78BBC6C2C3A1BBD7B7F41AB71874D5B3FBB
-17EC95E055E0ECBF74EA6D9EFC259C7727996C90672AF33F8B4A343647401EDF
-70E7A4D43C136CD3E8AD2618810BCB00D0DDC484F9B7A5DD0473FD64F0E0DBE7
-3798E953E737EC83A330FBFD500A5A930B9117F1C720D2CD18FD4B2F6776724E
-EB7E137E6C8BBEBB70B8789BE8CCD9413F4098F08D0F2C7131C24962F717E97A
-96C507E726AC79EECBBB53BC3DE1DDE64425BE968233BEADF8124C09673371C0
-36C2B469F8D8E266531B13B82A18E7CBCEE346B40BEBAD371CBA5D36F8EDEF2C
-DB943BF490A6D8082922499B3CBC398853854FDAEE8DA4FAF204ECB931136234
-BB3CA445228F005C81B7040605337AAE3DFB3D0E36BE183E31FF848AA588DFA0
-7375E839956CAEDD61ACC25644682D9A36B780733490DC944614AAC380F8F03C
-5E595C5641E32FDE24FCD018E182837323A57AF0DD8E1C7A035CD704A5DF14C4
-0D8C9D7CF25029A6B55DCA871B88F4A59F28418C96F8F07500D331ADE797F880
-2E4D44FDB4B11195C9DCDFA24CF169FA95356B98D6263A8D15D82C2F88120744
-DFDB06F521D6113DCB863F779E7AFB31C9EE8CC55C3CC6A5B9862990EE30A78C
-C0FF46553998EFFF66F1E27BF8312CE63B8B0487EDF508C99D5F54586A6A88FB
-57AF348E3221C910DECCDBFC2005DC0B0CDAB3AF3DC7DF9391D50F219EE4C27B
-0A312F4AB26AFB6A3C6A67F5697EE2880DCBCD6E27CC92BD481452D205CC7155
-4DA8EDD05C91B096C3F8A3C7EF174A2A7D8CC2495D5FD5B7DF19256EB4A55548
-ACF2AF826B8FFF00CB38FE3B6FFB59C3E5C868A6A996E6D8B8A5B9B511B99810
-83615F55A7C5577FD55367D536BE414B5B3334221D0AD4250590547BCF01FC09
-1B491FF84C3B2C4A8781AE24D9B5EA4D10F6F4B6F6BA25FC48F480601B8D783E
-D1A820D978498ABE73FF98BC5D4A45A78672A997D9F63D97C6B87CD0E8E97F32
-A9478F43FA9D80AB17D5A0B5DA855076219B874084FD76037FC5EF73056C09EE
-FACD5CD1C28A95581F4F52C7837DE54009EBE541514F5BE2D9F334C26F25BCAA
-8C121C649034E00C962A4431640E897DE29C136CE85C0B409ABF38754BF77F48
-9100CDAFDF1BC6F391DF18AD5CD759056A68E9DF569EFA2F3C6EFEF4C83D6506
-5302153C57EC7B6CA17AD0831F0703F8D043A4B26BFEB59242020E29F88EB1BE
-7D90042D3BEF94BFCD6B3BD1A9F9A5A71FB24C3B8CE48182B40443811FAD8B11
-AF7D7F23CA94CA69B9FDDD267B57370095062384E51C606634BE9200A733F631
-740C64B1BD6004B169EE5EC4B2F4F61CF0C6D755B489E96342DE840218CD610D
-C539415D23B834EC5522068F34635B8504C08877916B90CC8F012959E9048500
-71060825C23416DD9A5F9362FBBA9D17419872092296424CB694A60D3586E1C4
-A695D880F51D5963F1B5B1F372E2CFE0B1013BD90FDD31EC1EC79010E9371E55
-69917283DD3AFC128E5BC1F973589975290B51C054C2B8B9BCBCAF73842CADB7
-9BA75E171B7E523E0DC4F3168415057EF3005B5E6635D70F935D2A923FBBF2C8
-F498B05478CDE2FE1FEC4956822F8F46488D1B0D87E211F345066501F975A264
-5720B66A158E262DABA754F8A4911F68485917AACE531B63EC3366128A81A8D7
-96F8A38F9381B537AEE62A7CCE3E774705C706A8387582B34E71EC690B0B1ABD
-082B8A776FD27DE161A37999539A7874C9DAD54BAF0DA2C4415F07FA6EFBD987
-578FA2F1611D60C9E51B4C3589C85EFAD5AF06DD2A5A65E32B340D41B201308C
-5E0BD23C854008135398365381747497D15DC7CE5FFAD2C3B38203F7A4743984
-96314336CC4CC4BCA070295B3CC0883B0217E01FEF746F33C77EBE589162A6B5
-8826CF158E7681124DAD20B92D4166DA46100FB53A8FD9FA7EA65BA56D282D23
-9B3781BE3C05EFC3CFB4ED2A28CC802F4AC8A4D0284FDACF75105D0A55A6857F
-767BEA5AD1F833B59D146774AADCC101C7C8855C6817D2AE7883B41418C3A8DC
-ED39537E4AA6A2A1AD574C4E13A9428075CA17FCDC9F1BAA753EA6EC4FDFF0A0
-7C742E4C3D07A24EED2B0FF46CDB875E79FED9F13EB898E63B9A49FBC6191DB6
-B242E36D1BD611404513FC058DA9B5BB644F48AFABD788EC0924D66FEA2A38BF
-A0010B4027C6FAD9FA0C643368557E82B9D850479CE651911C3F9607E355800F
-2FD921F5E4E4904A76145485848A17154B0A609035705D6876D2B7B7729714AE
-007A79545B39502B82DF0B391F9E89A566D99E8B2A331C9F6B5A60D401AD240D
-1AF72344DCF5A52E7640A36AA16736738A98E3C04D6B9B788DAA4B363D6BA39D
-11517B9F0362C60D7F44FB29EAF8C8C658ED66C60852AD6EE6ACBC262E2381F2
-6EBFD1E1258881E79E6014F5D526D9C676522D590CD3CBB50D457C6BDB72808F
-CF70B900B734042520F82336EEBB184457FC33E400748A617187D527A68FED76
-140E83B4650F0C6B044E201E535ABC637432CD36D108ED6E68E4CD3085B201BD
-D3D13E39228F39481654E5373543E24E689E81C2451D6FD78437C12C036AE1E8
-203FCD393B650A0EFA025074A921FFA6CE1668C761E74B1A42D1E8849404706C
-4D6B815193E47A7D6CB4B4AE469CA869B1D705AA23C9C368805DFEC8EA88FFF8
-1E6EA916369FEE9EDEBE97F7134D0A9730CCA89BEE27E262709D0EB56EA86867
-3560CCB75B1DE42DB59CB612298EBCA1B2F0F77C697AE08B9D2019BF835B3CAA
-714D5DD72179F90D53E9DF099F53BE9A326002D73FEF4358E065F43C51185F79
-AA0966D318DF5218E869689A166ECAD06746D3ADE72EDA65135E705CECF2C4DB
-04577C749A721518F65FD05573737FFBC3C1504CDD1C69B38B35866032EA1774
-011EF686959D33C37A60D173D907F28C08EF367137E146F0AC8EEB8315444263
-DD40774A0EB98FBBBE77A8270EB71514D6C2B7F5020938E02C06CC742D3F797E
-7D1BF310AB9F6124FF3FC1E2E5B15AAA48168C406D6B8F6E67CD3EB98766DEB0
-44B17FCDAFD247AF8243081010D3AE3C4C003E3A114A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csti10
-%!FontType1-1.0: csti10 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 31328 31604
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csti10) readonly def
-/FamilyName (csti10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csti10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 45 /hyphen put
-dup 46 /period put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-35 -250 1125 857] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A13ACF068469E92BC111E5E809
-0E489E43C83DC29BDB053C4AF9440B668638D0EB64D2976E6F7D6472CE149020
-5249A42D7DBCA06030F48694F7CA0B38978998765D7E7BE1D365613011E79D8E
-DEB631764D47D1F9663A46A0702AE1CE700ABAC55A77DC4472405C469FCE7E7C
-36DAB4AE21FA18B149BB410DBFAC2B75994B10460A6C7E751278CCB5FA8E5B24
-5E892520BA083342A1002931BB5ABE2EFF28D930E0D7930AA5851A1AFFFFBDF6
-FF6D48342144760BA1E175D10A97EE1B90A38AF420466B14ABC5E5C82C949C95
-05665E2C47A9664D867B8B21F8972097D0CE8331D68CFA625C8889AEBF7EFD5F
-1443A9611CC142ECDB943B3C846032619AAB3A2EA3A4F8D4E016867BA36A4B3F
-5794DAC8B0B20FCAC48D701F8A66A0CC4B9B69C515F80A4DE93C7E14407AE197
-482425982208919BABDF9409FAA23D562486686557713769FDDB610C53EF1FEB
-98ED5C66B433459F187C46FFFCF9EAF4279CEE6771299B3F50B2A391427AE643
-5F4AF3D542ABB4F4894C8C4CA5FAC4246D797D939BE93652D0E7D7FD7B60DC4D
-C6E09254712DD95FD5CEB56885B95E0CF9478BD8ED8BB02566707CC3706ED88A
-A0536627AFD4D15DCA1BBAD2B2B5E16E0AC3117C0C60CC4243AE399D6573AD12
-881EFF746786E30261BC2DBE96DD8584F95AAB1A4DA0F48EF1420AD9E916172C
-6715E356C23C695DD51BE9967C8A49AC4A212733D71A0D5E2D0C6D85C5725607
-F441E959B8871102FB3927DFB2D1CBAD1DED737B6553A15CDF7D34FB7E32F6BB
-063962E928F1E7EA425CB2E597FE22DE83521F5FB6252BA3AEEEC6375BF1F8E8
-CF83439E3E8EB67B381CBBE03E7713075CE9B88F6F08974CCA3615F3A79225FB
-98D7D341AD62184152F44962DFA18FD3F7D7D2FB9DD5B2187AA4D7651F0105FF
-FB614F7BF7BFD58253C416C80431717FD3964BE33A3523CCA82EBDAD66348097
-47B760CAB3A6184E959536A730FE6CB0657A937909E1EBB8E8441B0CB40DEAAD
-95EDF48E202EF1A884004754EE06E217859097EF64CEDAD29FF8DD24B3DBAAFC
-5773018FA560022291F48ABFACF8F756D4BECA7245F95B37A2370668EB7DA739
-343123380AADC1DCEA7B5A49AD18503DFA577358BFD7AD66A2DE7DAE898315CE
-E464A80EE93D10723484FF9A156EF31A4368603D6B8BFA735F0F77093797A2C6
-206F7FA5C079C87B511F788DE52D1EA101FD5B8FB84A2E94782BCA6356A395ED
-769E5426308DEA7E69B397DEA706F9E9EBCBCB1D05D8C364C94281A9EEA64E71
-5D1C06273B79FBD6EE43BDA3E85B31208B8544D84AC03D3658A040A56105FCEF
-CA2AA8B746118344A1D93A926D421DF5B9376FB7F5422C7025D4DB0E26037249
-81C4D09F4E9931B5A2936051F9F7213D28E9D5DDC5A638B0D923FB3981E76B30
-0998B072127B47E189F5050B6533462AA4AD6DCAD8FF255828D847179012ED4A
-B503E502D371740C2E908AD4ECC6A831A3043B0217E29DBF0F87E5797C47A8ED
-66B13B91FE14A74674556FFBBC7599B02E5AA76A9295A705DEEBB649CF86FD21
-C7AE15B8784A1C9CE62BF09B19A595070994F5C7D1ED6989F64774476894E728
-CD45258A39664EE77A7BFBAEB5DCCDD6FF58AF63786AF5871BAD9B84527FEC7E
-CCB379D876402126484B741F0C568233AD9CA9246FD01BC9D0AEFA19FDF0EB89
-0BA642C6DAF52F4A12B5E5C97D1E8D7D150D16E91DB26DD2D6F9B7795546F05A
-9C55BCED0D69489184DA5EBF1B25627D5AD13AA85E29DF9C4F18C81BB562BF7A
-62C652EDDDD46698F1A5A4675F535F673E91BEDB7E9099E40E6E9E2DD24C1435
-6FC591417524C9D539490DAC5A00BD7BAFD86C664DBB7A34D32021CF5BF87894
-4A2E17A64C4F7F749B5DA2E891222E3E2526905301E47D0F6F2A7FDA2BA7D5DD
-754666413EA904DEC7522E873663AAB3BF305A3B3527FCA18031C2CC4B4DBE77
-A00C4D404E65C08BFB059244D0950A8DB4C508386F0F142897A191D1B03C6724
-95A25CBBE6B222307D95BE7A2F3EBEDBABE11833249FDAB48BE0EAB0A437CF49
-C7DC7356751770FAD9DB984BD5381781D4AE8311822A1AB3ED55CCEF3BFF4B57
-752D72E9F5B1676B22646E7FA913FD10E8AAAAB5D744464FFD06FB2A2C95BE01
-F9C59DB30A34BC9F7AEF84714F45B1A3781CD02B3795CB776739CD6BE49FE936
-6E8106A7AF90C684373F7DD88A7D552102D10E01B14813AE3E3F1F48023710B7
-F2D124ACF55014C8DACC03D56AB77687D391A69A7A67406E783FCF55AC828B71
-63E4F1CD119ABAC5FC938B0B8DD9D4E1C60867C483C077D29CB34B4E02888B85
-3BBDA01C7B6F2E05320731D8CADA91DAE369A89C7CAA128277B1BEB9A00EBC1F
-093125747363290CFD3D8D1E86ED6861B82DF2B71C37A29EACC9EFFA3439E4BC
-CFDCCD4BA4600F8BB4B90A5830AE598684840CFC5A5E3FA6F0CF8CE2D1905EFE
-163F81F441B521C6CC449F7E6DBF9E569590885DD01184FA776FC038CEAC6ECE
-18CE1E6554E9FDB967BA1A71B66A9E542684F73979A56D2718A9570A72AA3569
-8F42652F2794A6851BD33B0142612BE728C5C01D011F3D3D8D831282A2E02DDB
-2D724217BAEC4151ED2B99D5A0C7B8E9C6F4DB69ACDDB3192A6DC94767C16EA8
-2A224B08F00A2961409025F383D6CCF1F97B8152AD2D7C259D873A2DEEE4E024
-C21DDF2EF5DED14EFE94DC4BFE481995EB67F2E4ABBD74BB95EADC33A8672DC9
-67CDE20477F22D2CE160615114D7C549F037BED8438C621F745D34F73C52C626
-DD57A11951D0FDFEA9C389DD3ED6E4F1E0D57574D85D81A4D949BD4B8AB64089
-7B8596B43F41E911779E32BF55E7B0857497C1A094515CECCDFED5663820A5B0
-360E8A07CB60CA63DA0FC67DAEA24769E18547D8BDE50A205E936D635D1E8489
-153CB2C1B836322B9BE3C611D76B5C95C42DE6972F165C8E6F1D3288334BA696
-E674F3B19FA72CA0275E092D39D7034DC509D5AA40AB3645C556F2736B212C0A
-62F1E73454A3B3373A6968CE0D316A494F1F73B16CF75327EC45996F7EFD6465
-49E42F012E95A4AD1EE7A110BD398A78A2C5E395E2DDF37CD54CA94A77EB61C1
-9917A40CCD6EE62A916F4DC79A0F8DA20899EE0B1035C9B4C2B966A0C4A0F409
-77B0369E4A3B4CF38A8674AF1496FE2126CFC7E8C6DA1A36397F0554AB0276CD
-068C2DA3C42A7EE3077DC9264EABB616397BDCA53D3758885B35F5585F5C07A5
-DE6CBB7DADAB7B87DD92770226F568BB2953DFB53011C921CB16B162A80C3DC5
-BA865E5AF2B1BD218847C5F8BEE994CED23414009ED155DB3B594142836134CC
-F43A682107C6B1528706CBD124E0A8F446F278C2441374DCC36F37C16D4E3DB0
-1956807EB1FBF57677195B5777B5DBF61323C2BE3D7178C59EEB1B4615D15EC0
-758FCF44FF0A8B82A4C021AE6A71C2502D7B27AE3846C694A048D1CF0F0BE789
-BEA0BDEDB9A7A991FD239F61754068732610CF1358C9596D3FBE1A3A1DCFA1C2
-6CD2E4D3447CCDCB577228998E034FDE94A696A2C0AFE9EFAEB6D8F9EA8A2979
-D0FF87F8A2743E451197B9CF0D27505F6E963D201B346215BA945CDD86E8C66F
-16FEC3DD0D705A9EF958CE119D30DEF9D8FB4D91E229009B5F1C51AF6F19CD61
-B5611559A1B809E3289FF3A531DC8933D1D1BBE9AB6497472224D20B2E75CA41
-3927BB4C967B164D06F451B08B77E7D25DFC852D496D660CB969ECA1A52CD624
-F2C33BDB300632866303E9A561D8720B6CAF9435ED29A3DA1CA2D4D17811ED65
-296A8CCC27496DC9D58B11E5916F985E4089AD593C364BB9FF07251CCEA90A10
-68A3CAEBF82173952C53BA4AE1C60CCD6C569600A3B08AE4CF9275A6A907E2BA
-E4D090F833E41E47A28C1A5AF2D9D93EF9065D6B34D587334B7293EA22B25028
-B84227000100B8FD881E1BCB574918E4FD9C61FB7D5810A2191E62667207603E
-A7AC030301FC3452298307D00624090FDFB5ED8C04D88D9746D6DE2A2A5EC5F8
-569228BD686E8CD8660D40A17D0F49CC8803A28DBEFC63859AE2A1B477087CA8
-2BFF0B288ED86597C27A4EB540C380BC6E437DBEF233450FB80E1D486B30E32B
-5BD899A54D378E503B1F0B1B51BFC208D362A2061714F9991AF5C11C934C539D
-6441A8CCAE24FEB0DC84D4E84A9640546255FF78A9E4719CC53EA9B7468E11C6
-E6EDC21E7958B23FF38DE56A8416ED5217B1481F9629EFB47B9AF0F1B4D48950
-5834D62A7715CB7B848FA22F6B23002E1FFFCBA6B0A9B1CD091926C4D8C8CD76
-1CE506B380E48EFDAFC6E976DFA4F26C864A93C8BDC381F42BBAEF3DC235FD1A
-347E130611593E338CB5F645A15531F931174D36421792B8B075712065B7BA88
-AA548CD3BDC099A2CA24C178F2CDA2F706A187CFE9D9C98B75C4F83EA4D5AB78
-6421ED5B7C3CE6F13F67E8081A38C4AE82941A26A44FA3B7CC43BCC2EF7C44FE
-09148B3CA8EDBF50AA9F13404051E3DF923FA74953A2889C6FA94397F00829AA
-6DBFEFDE4AC6B41E77699555D80F62A2FBC5E9667A255F1A80951C78D0463EC8
-C8ED3372EADAF407559F031F9FA54D00EE86833F20D6B92AB054F3BD1711A8E5
-F2865E30DB320FF34F343FF079B9DC1BF2087B168548D9D74E5462CFF5CC865C
-4ABDCE765AE32EF11C12EE815BCA8AAB0ADA7F8321A4D512BC8FACE53FA5DC61
-B02EF24FFAFEA7F0EAFA57CE839371DA016FCA90B708ED641B5560BC88BB5F09
-59D7E25B155AEC3D78A26C332D36B70B4676F3695AD0BC6A505C908AA703CDFD
-C576C9B3E403F89AE4A2923FABC21F337CA91011E4C15064C92937E4FE0855E9
-47D14F88FDEF2DB4E176DDC22402C63EAE882CCD929132529DBB43810E0C5C13
-B64828A9BE2E4B7970066C592ECCE5D5AD7F26B18E05D926A0754471B49315AF
-641DCC33181395A1F7C3AFC1B0A2423A3458904B239F9DF3B219D919E3264567
-E98C3A05443BBEBEFA4CEC5BD3051A8C824A59EC51D908F34D07DEBAADF03F96
-5002DA513DC29DC2C0E299C8FD1E31FFC4F4951884DD1E387F65A28415B94507
-6F5074D9F7C11EA02B203CF3AB9FE13C99B80E9014F9F16511773B2B0CDDE337
-69B1A1F4F3BA6188FD560D8A58D7B91F0C8071839E4B8ED466874F7E5155E2EF
-2C6BBCF793DCFC02F9438A577DE76881DC450A4A1E85304E4B47AE6BADF1CC0C
-1D670E19A74F251BEEC734100F8E54E90CDEB140DAB7CE12A983EAF01AC382FB
-B9E566A19C818C19563CDE05BE6FBDDCD0EEFBCDE6FE33F457524827B4D49106
-21E96604F74281044684E6912E693218DAB3D3EE0A30F0709C4DAD3973823CD2
-3FD3428B5C09FD450812A579F87F8611D1D0DC308769D7B5001C96F2342D007A
-2AD9E469439055F7C2CE8B3C0212E5004D95B2038010C896BDC082AD919980A7
-1D8046CAB6A946130E200DA6A0FC4C36D0CA97F81F50C15E2C32E64BFB0CD738
-547DA26ED088CD26260B3A94BE9603033BAD08058E4BC56690DF90D5832FAEB5
-9C097460A33E3937E5B9CF5EB3C73AA52D56A505613816C2F704F0C7EAB91D42
-D4F8BA4A50161A9882AAF71CFD49091E255960BF77B444B6A074727F0A4D3678
-C35FEC92F53EDB4159603BBBFCA4212F307FC5D9D2553450E5876C36A1E39F4D
-DF0F94A4E829F4FCE02168AD02CF7C20FFFB570460B0EE2E9667C41641D040FA
-554D567019BD0BD93E9758B8B851DA4BD6B8C7901FBE14C1ED8763C0983285A6
-A2EA93E6583726AFBDBB137250B5C454F3C4033DDE41BCEE59E6B094343B45B3
-BAFE1C6C60C75FCC12F5F684DFC140B423A65D4811E7992CCC18165780775637
-735D2A680E7155F651962E3F8B91FFD24D8EAA7A3785490231B85A2DE3CB42F8
-0FF20191C487781D4BBEC33B392B5EB621C29453E5A6871D59430B8E108F028E
-3527ECD8EEAB5A09B1EE5DAE318A85D774623642904EDFD28DBAA84532397FE8
-8276F93262C79191A0021A3E558965F97518A2CE3BB5F382A5812EB8DB836612
-BE692DF48F19BBF8C750B981C98CBE21C91C791B44BD74EAB09C688D39253317
-BFC40A5F19DE0EFEE938FAB0208742DF9C0D9B6D43A158ED73AB2404E5D3984B
-4B3F4B4669920FC62403304F28B07456184080125A5F2AB416200FCFBAFA9D58
-9E98E71B813CFBE32466F9F88E79086D1A3A7FBEB4925C8D8559D8D3CFABC307
-39C03F2D5E6D317641CBC82424BD332D9CF9D7A5F157771BEBBD9EC164010FFC
-06C96E5628EF58B049D3EAC2709F4E0303BF57DF65E084FD277D74EBD4CED34F
-AD216E57297DC8D3753787B4A8C956C3FDFE40C60CB5994424DA48E498851F65
-2AFF7CB32F4D0067680F6890892A0829E2AAAD3BD0C4342AC52D5C5A4A4D4F0E
-7EFCF1A109CC043B206943A5C5744773536533161CE0D3A1658499C8C95076C6
-9EE31B24EED4173803A901D9FF7C3B415C44205451F9F5720E094C5253CFA24B
-6B7049963F8C18F4A8DC4956F6F34D9DB1318FCBB6D322079ECC7DBCA80723E9
-CCCC1328024E256121F20E6418DA4E815EF774B1F3CE398082960188277F1E00
-F18FE464E416718CB8957E575BC370AC23941D7D6FD308F0F40146FE7FCF0F1D
-627E5413B9CAC9D828656CC135B30BC2CF9773FC1A5C5DB9B2EBC5F6FDA37371
-959B381CA883DF7C1329620D7B7168809F3FB2B451DDB559C5B47A5EE70E5128
-88CC2FDB37CB23DD70C7CFA3985E5FEE49D10C24F0C3E54A666E8F16
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csbx10
-%!FontType1-1.0: csbx10 1.1/12-Nov-94
-% CSfonts -- pfb ver. Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25027 25304
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csbx10) readonly def
-/FamilyName (csbx10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 444 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 686 def
-end readonly def
-/FontName /csbx10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 66 /B put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 90 /Z put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 181 /lcaron put
-dup 185 /scaron put
-dup 187 /tcaron put
-dup 190 /zcaron put
-dup 225 /aacute put
-dup 228 /adieresis put
-dup 229 /lacute put
-dup 232 /ccaron put
-dup 233 /eacute put
-dup 237 /iacute put
-dup 239 /dcaron put
-dup 244 /ocircumflex put
-dup 250 /uacute put
-dup 253 /yacute put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-60 -250 1164 908] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E729C1F3C653E51B9F09F139
-E332F81467DCD46C6B80A4E88E1FB2B35C9134E8C9E669DEEFA533F7F13511CF
-F16ED856C594BE960395D34E6F1FB840870E1390BD51DF0CB99AE59E98B369A9
-308EBD4D62411D723A06592B3F044EE52173E7B573E2FBC21F32D00ADCFD4905
-7907BAC782355B39ADF860CF2381EC0CC3136060C15C7F794F54FDF9445AE615
-FA03D051B337AB511F64C838302CBEB69E431B2B66B4CF0E61EB5ACCC8F55213
-E44FC7CB51E3ACC12F45BBEDC00C9A63A43839BDAD1C0186974C7539367FB600
-B9D9DE3DFCE060C626C826CCC9C6AF9B765C6D6487D5945B01FB21FD234A6D46
-FB48C4A049CA13C82BF001906C71B5E4C7D8317DEC3B2F4A0B8F28A9CA07F8CD
-FAEB3ED1ACDD5162F7D3491964E990EF808D40307E9FBDC0AB3B5BCAD56C895C
-C6666B4096AFADBC5B931D07B418009ED6BF9886982EF5689E1C67D980F16913
-28DCD11AF89476D84997CBC50E8E7942C3B7AB5C03A7DF37E3120834DAAF7EB6
-E1A625F38D0EFF2CE86A1AC4ACA3A3556D98D515AD265D35FCD8750E1F4E73E3
-A74900BDC6A9FA84C7A4A36214935A985CADB31B33706C0DDE055D4BBF888C0B
-38320A34A47CC395F479E84CBFB77BA6F9EB33F344B34D19ECD3466836255387
-772A0F959C9872EEBC9D69943B4CB8051FDB325D6277BBE0490B40A719343973
-13DEAE8D919C8249DE8B60E941AC5072AB647D75A4D38CF7B9588638DB3EDCC2
-0B11FDB0F2DADDCAD5DAB5B3A50520D5D0F5D0A87E550E475C4970EFE8F65857
-AC7138482456FD3E608120BCA6C483598937229D196896D16EC4737CF89BD4B3
-8CEDA90AFAE1206A96CA1F968771EDC9EF951844B94A006DC83BFF440DDC5994
-21048329FB1BAAF487936405456D1190C4B9407719F13E3E3058A363F4742F8F
-AA7A194CB41D89DDC4AFC13C8AE416B70FC98F9199970C09DA44479FF43EEC9F
-ADC6254F7742B066B0639591074DF34F63C258E373C50EE19D043F3246BAB6CC
-37EA07269EBB7308C2058BC3F4396C554E3D34130DE619E426A35D47EC7F1853
-D6008FF3507F6F5C474EDD7E93A6F78D5F6FA9E78F7FBE0C431CCA3176AB14F4
-8814332AF14A0CCCBB9E1DAC1991DF0ED814B53B2442C352D79110CEA883B1FC
-DF0C8E82CB626A3CDC090D06AA74CAC58FFDF7CF7D93FC4292E1044905181115
-4265A22CD0D05FD6EFA01D9DE496ACFA549F3E4B9DFA8084C510FA2602B844E9
-4F8F4FB5F334B62CBEDBDF0242871F546E906300AB550C45141390EE271D2BA5
-D8B0906C4E7C9A6181DFED9C34F6A3FAA8B678DF14C1E14826078ADFDB4E6C7F
-70B75E90777354D1429514DA56D71DF858E34B6D27E108C7822BE4025C75A72B
-B691E9C72B7FE62437E7D4666A2757694287A7C727A46DA84A86684B5A99DF9C
-CDA473F8EA13444FEABDD969CD18C61CAC91F57FA0B97FCE0FD0870068140D86
-F2002BCD8A1416C2AA35E6D3C331708BF7B40D4978CDB311EF111101C418EE69
-D86175019DE6985FF2AFF0E283BE508517C83872033E6CA7B018011D60ED622C
-5BEECCA28D2620CE9DFB45B593EE4B6B364B0EFE700D1C99A1C83874198E5CC0
-B6E9662552B7DE065F075D57D8FF0069E112E5553FF6111A501180F784CB395E
-28AB057F876C61E0B2B4889CCBC5956ACC76393F477B56387425CCBC53B3E3E1
-82E268E8FC759E0977F04D5ADB128DA32B8325D840DB3EA260FB2FF9BA70593D
-D2B0739412659725A2C739AD0EB00F9E79F168B55CBEF8FE70576EA4200F3D88
-BBC0CA2AB40F3AACF5744457EC281AB2A60432CDB7C3C2BAC0975AC960D4F28A
-725E6339AF7AF96FD6D0641C1762801CA876242AEE092FA0AA4E58F64142070D
-4A2BB0258AA98AB2FE6823A265C87BFA842F1513B0D4ED5D88BAA4307AC474B9
-CD08808AA4CA70DE6C1FA605909CEA1F6A5A02B04C0EAE0F92D3E0343274A50C
-E66F7C48F312E40D94FC1EA500930E6E9A6EE30F3BE60BB7BE9AEFBC6ECC9F2E
-244D34F801B9E56F089F76A4F8A224B0E013208B63AF2A891935D95E99B814C0
-C35B8399C3F27890755AA03F90F7580ED864ECB9A40EE498800518904FEED78D
-AEE60ABF4B9BAB3640421E26C996CB51205B57F5C3D94E07B48AAB64E7721287
-C6BAB1499225FF594DEB706C5C2143FEC4BFD21D7ED84874CC2C29742B5D609D
-D4B00DFE0571B7E9F1BFF7F232F0E0560B37E0A840D6ADCB72AA38EA26091851
-3579EE079E4B1E00E668090F4EB06891D4A91A91A719832540274D9A8107863B
-9A0FE19243F0E809DB394CC8C2FCB9E3F574B410CD0F28AA6CC6DA54495E7D79
-EA5A9FD225DA496F9D07BF1EAD17727623D47D45DA4F163BC15DFC1113EF3C40
-D5B3F71717E544F2D5BD98DC103822FD2F74AB1B82BBAC90B1D5F64E8021DCA9
-62D663CACA674BBF7E10453FE7B76E8CC37D7CCD04D0053657255DD339C46D6F
-F33EC4CDD8A6630D0A7BB98EFA936276DB968A1181A2ABD49859AF5FCC0A5925
-B8242D41FD0B18822B2E0C5EFA5DA1A8F005E49861825D631F964BA4A0526499
-B2F3022FDEC1F65E036C7527BA826EC142E6628B77B5F3B829C0401B6878A6AB
-FFE3159594DA428286254E2E17B10DD277AD92E7A497B89A515149D7EECD4777
-E1B6109EEB391AD61456E974C237FBA4E098566008C374C7D4A902013D1C3E97
-82693FA58BA7306E1E3EE352E9063EF27A8C52668C8E0EE8FACFC23F46B4734E
-634313610D8606847A72FC48C4E913F47F4E0F1855FDAC884723FB02E8DAD01A
-B77249456F04180C48F91B3844A30A06F122C6FB43A74FB5732F52D284822AD3
-A90FC837462561F3BDB490C0E8AEA8A88F6C1DB13F3A32AB039E9AC9967AB5B0
-02AA895405BACA3565C2B0D083D777333EA2EE05BC9A56515CC2712076408926
-716D901557BBE1DA7C5B25747F8B6F59E78B05A32A55ADFCBF69C59BBD378496
-02239914AC59BDDEB8D49EFD5B6BCB0AE54FDCFA9B832BEDF483F23478000BCD
-9C6425715CB9EB65D757B7FA57B2E016237AF3F426CFE92F2CD8867580807BCF
-24221C6F79B9B42B1801773F3FA2607E8B7FC8DCF45B38AF662A9009D8E22C00
-DE9E00BB801CAA9CF4E8042354F69084322AE1BA550CEDCCB08141B4E6467362
-2AFC963B3FC328F610638E112020B784B81749068D65725C5E304EE234FCB71D
-27B4B67833E0BC0B9DE63B93901D816EBE9948B8360A3BB862E10DEFDDC57DFB
-B9AD4F4E3758359B4ADA41110F0AFA7C2FB569A0B4C24541CC82CDA98D38CFBB
-AAF92E5997E2B30455DD90573B94C07CA3E3409E96FCFB88EB85F4CB3E36B8AF
-58ACB43A5981431CF9B7BA506254CF13C87AC5D91B44A26223ABC9E046AE28BF
-17BA17DE81C7922240780D7D8E58DEE7CE1BA37D6A2CA23F5495500F505009D4
-9707A1C3D2A9BD0EEC07EABB6B868F1B0728573F9EB7AA974F095CF0EFC7EF7A
-05F2EFF41F3C38BE7F8A48B5CDF540C099911C6D3655B93070B0B5EA5E421F88
-14C93F7C5B0C4AC26B0ABC0B9A672AA5744163F2EB86FBD1AA3F65DC9C6914AC
-5181F626501F0CEC756C93B39662E6D1843879C1DDCCB552352FAC0BF8FDB38E
-EBEFB70C514A9CE9FD5378155393058CDC11B0D20B18A40421C0A4D3009C929A
-9091A50CBAF55D4FFE6682393766D1813E07E1719A23031F72CCFEAE31416592
-43D322327D1EE95D035C3D6CF9D92DF74F2824395EF1856FBF4BF5FA8E184E6A
-D76BB2FE9AEAD584D63A4DD3B39EE8546B5FBDCC632942D2B0E65CCD369DD001
-C87DAC4365C2F9565B1CB28A64119234B6E9844507EDDB35693C4E365F00677A
-13265AEF8BCA4CA11A2DD85C1CC9A868901451DDA1D034528B8EE63852001CAC
-735326689F4AE86627FA8C419C818E215765CD89236697EDBB28B66B6E329F2D
-1679B84DFD15F4CFF75F3EA9F5188A61CF3325DB571A744C6B3FFF963E5F83BB
-1DF9FDE6473F8CEAE67E4391346EF4467524485EB5B1CC3A2996622B54F72E29
-30CCFB6CCF00F89E5F67D31A94F2B381289A718B0AA7FDD64DD6DB3051B2CC07
-E507A5A393706EDA30975A55D08A2DCE5E24C8EBC1FF05B0ED18BFA8E05BD842
-533F043E74AA28F46E1C6EBCEAED4D538E41215B960FF9B7E4887E2E742E4898
-DE83BBB4FDD71232E051BD7C40531FB676C5961CCA91E596F8AA2443D07B6A30
-41851BFA10EB1F4D76508F70B835F38F773E74E74070BA402FDF88F41163E2EB
-AB7E4A62183FAC05AE108AAD4B8F3650863233EC0A39E0E352A7DC363E687EB9
-DF4E60D8F006A3D18A413E80F8A59A9ACD61F802C4017214096CEF3770175539
-5642C1A9F8B5760F81BD85380B2BA28306B8B553C606FB09105A508AAD007EE9
-69D29B5477D517E18981183882BB7755633AB552FE884F70C0A17FADFE645F73
-AEA2D3EE7B2BC02505AE91462C262F0144E88D5646C40175D11FF2E77AD8F8FE
-D89F9135C975046EDFC7BA91749FE0ECF1A22E105C3ECF2710288C128B906A53
-10E80DBFD84DD5C22B8C87AC8EE510C35569647962D1A459CED55D01802310BB
-D68D5FD1823CF9245F534F31E45B3EBA3383685203F8DAC9F8E74B14985839D1
-DBCCC47FAFC8DB72057C6D034EB893AFD409B700AEFB52D9439A49FCAA948D90
-FFDAFA5AF87122759A33891B037C9E7D5E512A865A63FB3EE331C8A465530597
-825BB60736124E6E87F58A02D4A3CC8F3173323431D38EF063802DFA7C03ACB7
-CC813420E569110C10C6C00D584655C5DFACA3FACF74A6DC30F58944C19E82EF
-70091A543CD1C89F33A03C0DF205A102639F4585867ED7ACB4691A7144DC2F44
-0C8ABC96C6DCC0B21E8771B44F82042861DE7FD6117D47ECE96B6FC7D91B2F9C
-C294FDF3EF7DBF20C06CFF39B29AF25BA17C7EB7DAFDDE1C3E24D744F76FDFC1
-A97D5291142B7DCA1F4A5741C66F38FC345877D79450C4C4A9E296F910BC1CAB
-2389C7CD8524F2D75CA746F13A2F5E29542DE6F8C888A3CF6E1F2F5F9F81DAB1
-750B8EA9261A52A382769E2C94D92C16C8A8CBC29FAC0A343FCC741B6E3FA601
-0FAF1C9AFF394245E38E12ACEB608745E8645B8DF2426D182406048E2C0C7748
-3CE5E23FC895EADBE18C0497043E2612F8D1D47A87C6EA3DDCA5556906970A45
-048B038FB6E02477C60633B7E21D6CDF2977104C1C4A46C6C585535E1EFBB15A
-CA882FFA7E7B56CBCF7A3D3F5C5EA5F2B5459871883F36F8ADF1A5C4E5FDF402
-BD9C712AD5664C959CDEA33F4DED472DD15A4EA261901B122700C79820A705C9
-D0126684C0EA3273B601C60D17FBBE1A5343175D284E1BB7479D236DB0436ED6
-E4B3FA792AF4A2E6895DEB3FAC0E206184B720E664C9C580A55E12A305D73FCA
-9EC4F5EE952FE1A9E8BFFFDB23CC7A6E74F160BA33525D57ED47022DDEC70001
-3BC92C27B1EF28A5671FD24091DA2F6442E3E2105568A8E4DFBE796C588632DE
-D8E6F83ABF0AB80CFC4A0373D9C1247BF47E101E7EBB5D13404263BFDE17D02D
-16F77AA4E5F5FBD26F6D981B5F30B00229A51C1EB4293567060E142787EF0390
-4702297E5A10D7B511428603567D497BFF6B616C53F18E19A27C5C0ED67F0EAA
-DAE565464EB8C39D5F5C5BE42DD98F1891C34AE7F018010AAD2D16278FB3CADB
-F18CE883730CE55A9CB054AA1FF0CE524B9272DDE5D0438F1476A69019A83E00
-69500C2E65B05500B7EF7B5124E6D916398B49E4C646F3C13EED04599543E60C
-8D4B90194E82E3C080BDE8BD29ED2843448528D55EDB9912AABB7F3B71727E60
-6D06D408F175DE0DB1F2817C109063677DCE2401FD29FBF6315815E5725FA05D
-0B8158687941B07ECF1DC24F6D7FE940619B0D6F47BEDD7E6956112B95FE5D07
-0B1C4DDA74596ECA6075EE149BBF74ED4985AAD1AD1562F5CE624BA06DC9C1F4
-C0293464450EB069730F7E875C556B4826314284CD1620B343821AD2902110D1
-5F78B45EC687E2762D5D86829374B549B703700BA048FEC78D30CD7697E03E0F
-4963E818F8AD5CA19B494D67802C7D5C2E7F21C081EFE20081EF9037D9931911
-2C6BB8F06E2616F1C05777E78274223E12417839F678C5D5E1AE4190794155A8
-7BC335700CA3FC7E008FB8F64B53C0B85D78805A2F025CD50CB9E63766709561
-604178903C55AD1595755616726B8F384A3A969452CCE517112702FABAA07352
-74F307145A175294877D759C8BB62781C0071E47CF07E0918793633D34547AA2
-929C263487F7D4CE89B3081C42816429E1159882455DBB4BC252F485D1B853C6
-310016AA3A44341D9414EC010DF0D71A6D65ABD9A9347CD1175BD94E67E7171C
-456FA9DD32D476FFB4C3737F30D23A4402C68E4D51B0F91766BA4DA816699BED
-8C1E663F67C84A8E95CF78EED19F67D001904EA83D453A86B1593F0CEE814930
-A37E9A069739FCF1C162C62EBFD14424A8D9DB9FFB33A195E12CE46B94438C5B
-7B742F67BC435213B6CB521CFCE58D612400226ED682798E2B8900563A2EA3C6
-D535C829CC1D0376B8D54D4BF1D7B2B447D01206CEADDF3E8D0C1C05158C895B
-409A7C6C0994E14BCD5AFDEDC4705C10DB095E68BE81141EEBEC5BAAB0FD622B
-3891BEF98EF9961E3ADADD442577A73399F190338527F6CFE8D263778906C332
-6A65BD51166CE728E521797998BC265581DD5EF579FCB3A99045B924D2A76985
-D55ED260F7506747012CBA5E822B7F37E41A8926EE658D2EC542FCEFBB1FA970
-5AC37E738F183CF93719D5C064B9AB28BBBDAC399DB6E95542BF814BD8D02EE5
-372E7B5F503FA254FC1199F52684B7DB25D7F0252EEA99FEF90B909A0703DC98
-7DF420CA5374E56EBCEE32F70B7B54445DDEC3F93926FB746BEF6306F90FA472
-09FBB40BF94F7C394E95D5154EA88FD2EFD39B3C3ADF655949225DABD8BC42AE
-4317B533C31FDFBF9B94970B0C6574C678CA11CB0FDB3D4948F971007C9CFCCD
-FE4A0E5E1F9BA78772B60A7DBA24F789E9997AC91960D44DA79DB567F7F9FFED
-215C0A9585E3DB997A651B29B917C6A9FFBF11F616FDEEB300111D3976ABD248
-778427708CE701C0D2F89722448E41CAF23D9E4DA58ECCEA707FF27F3738E29F
-BBE17292EE69556CB0AEB4C1B12D146747BF5EB5BA8EB6168F5D9A7A24692C12
-BB4B8F4819B1402467E7F74B602123B52E58EB4B78AC279DFCCEDD365AECDDC4
-848B2498A85E23C43961D494FDE46090623CDD8729FBA1686D8729C4B8280238
-92E4FD1905F5A1AD1D0318B0B8B5C789B04C994C40206317F4FBB52DB0C7C6BF
-3B20446FF07A7D3117C3F59150B01E2E49D51C9F888F826DDD1F4C789D5A5091
-625294B5EB9BB9B9683FA2C28C0F7DE92D2FDA4D92BD60949692C7CEFD306B7C
-A43583138A32EB7D4CD08EB2DA109178CF8ED4D8A15823440527EA3B963A4492
-672A8605C8CA3017786761F6159E336C64A9C9439C3770A080C7E2AAB11CC750
-3D3DDE31C12566BD323ED135098F66B7A20C2AD0E6E34ED83A3BC416EB1EB0DF
-E9A3402F4E37B5DCA19AC99EC9EAF16665D422BD857298C8C6FAC50886B22076
-EAA875797D45C2BF7BE954DA45EAA3E4C729C5CD0B04FC213738E259F7795D28
-AFD506BBE213984DA91DBDFD48E4813A1F95F0C59DB1E4FE8013DDE7792B15EE
-C8871DC176D11FA3EEA37203D9BDFA12EEDE768E300F33DFD96104E16071D2D3
-2CE124F000DE8390A1CC4C6EF046CBFEA92E998ECFE478DD1E73B768BEDBC4B3
-414B99860E83C430DFE16C450A6B30413B7DEF1CF11C7B31000D1684314CBB30
-E1F06EC86F8D665BCC10AE035DA5D89B91EA92B0575FB761CF87721C2899BBED
-C95E91B6B299945D133F69D60B2D9AC8108B3B415C4B77E6F98A9EAF9A737A23
-D2EB466A9AB6E7B48BA33064556CCD21A74F72996E91D37900BB0C89C9505457
-B876BB21C0E406856A79133F1719C9441596D660855BAF76A10FB44A1584B3F8
-ACD8F0FFB9080B8B351B9A9C5C83A3E1FD67220B88674B965AC5477C81D5D4CE
-EEA62AF9148CDC3F684BBFE68F7AC74F3DDA8F45CECDC6B04C4B600588454BCE
-37DA0415EC8868C65E13CE8DFE60F3482419A84A8E01A30A6C38FDFB275B0F11
-16AC840BC0F60CF82A3D2453FB2E0E3AFC1EC311AC6A7F2DF42EE1E34F68F33C
-D507DEF9567D860BC052E014CA830CC3598106FE677311DDE9FCD81AAD4C6ABB
-453B7E55DB03761465C949D756B94CD975161042E6C4E14399DD3B58249CFC60
-63170C7F752D952C2334CA76323257DA48ED382D18F87ED305513C91C152B49B
-91F7349C677895AB7A172F00B8AE8B954FE7192401119FE67E7B919844EBD872
-530B1BEE9354E70E333C78B3CE28A9BF446D92BFBA85AB05243C980FC84D0DFE
-77EF4DF19551017A55DA07AE4DD21740B263FDBC3183CD0349564EB5EAD2A6E8
-46990D2C650C52A6EA567D713B2EFF34A53222E8A8BA052E01202D4427DDA498
-D72C9BE05B69C44C717CB0AFA9902898445AE479AA0CE3A71B8442E41C1E410C
-B97FCDEB1A24A7F37E7C0F7E1A1C23465191A2A88BA5E9D4931B7751CF683425
-FD15918140F88C503D0E7E53A23A2FA00790208322BE3E892539EEC1103A03E2
-292E792BDB7158AF68E60770F0914508E980051C7ADBFB3F49F192878160ED57
-B9EB2D111DAB662BB34487BE397D4224E99344950BABAC9E3463DCEE065DFEEC
-DECE48276DE29913D2765C61538BE959F8ED3A89EE395CA10704C0668D09D148
-2A806531BE18890799CCB783481B33DE339D658896B161DD925B2F88F6C8B534
-DE679CB77C035B379099D6D487CC60624520646EF8A226CF7D22C864F86CCB1D
-46346A4CDC557331952E387C8A3727CC9B8CF3086A6C5DF141876B77541791B0
-AC3607FE496101830A7E8FCCE2C113B421197F23AA0E2C036B193EDDF472C02D
-DFC755ABC67238861277B4DAA32703A69DD096EAD228A2F8834A43B047D4F8FF
-4E1ADF0C81A146ABF2CDA5A3302637907E1F1923440DDEF3AC69716D53B2FB8D
-F859735734DF0751E428E15B5F3BA9A082E75803CCCCFB574E5532E474E98FA6
-69B0BA8AF6132EB214CF02FEB04AC831796B91D3F1344428A29C18EA48014AAE
-11AAE6DE9EB115632C2FDFC502FBE3ED1BD1AE0AC81C0F3221E8AB0A0A0C737B
-CAD01CF7A6632C0FFEF23A47B504859B428AC7547888201C6FC0C28B166DFE75
-BF82458CCE6EE03A8734B18800251D6412689F7671C1F9C02EDF08E11D78ACFA
-CF15149AAEA2CCA02219ED56DDC9F508F60CF99F137A454D227A54430C4EC869
-A6E56EAB8F477575EB2DD5F716C7EAFB0A2935BA273B19C1689F3E35C75076A9
-9A58C888893D28561862B0B504BD91A0E83572B559F651584B2593856B1872FA
-7F8E116607AB325DE780E51C5AE48CB9A9D949A0F93E436D1725AA205320FD5C
-C3A2EAF1030E12AE91020F6179359C717EB44F60DEC37A2BDF0EEE21ABB7B758
-E5AFFE92041A31F3ED8395B0F9A251AA7EE6EF16DF9FDAFBC580EF5A5D3E7B53
-68C2575979FC64D403A707CE2A04D78E5C9FE1F0639D0DE261FC8864A37AE2C7
-E65ABD04C5B18E56C4E3095947E035454115D7751258F322D6CF7E2005BF9D06
-3B8B807FA2B1678D2B80776301CEA02173B33540B608A506DE29B799A2A8DDDF
-C61E7DB6B7C82D5575FC16F9F951F3AB117D10F1087D831F009EBAC6BB22936A
-CDA7278C0A172D9130679F594B62829ED9302904B6EC8092DCAA7F31E62C8B9F
-2C3FB096A0641EE04C249E256EB213E4ACBE6A17870DA305521728517A166E53
-70B9B48E763D46919FBF0F5879A3B332EE6AE56C90D4418669DD9969BF14AA5B
-8350FA5A2F8EB70C2CBC922073C454C9797D3F4C91EC26CAEB8DD38F318CF916
-5011FBD85A6D4A3B355DF7053C3E8CE71944BEA029A84C2FE2DFBC76D2DD69C7
-60A5155F3BFF3DE858665E2F0C4A24D6802E0CB57B41D55F08E439EE983785F5
-F5939DCCC53084AB8E785FCEA7E9CEC384AC2A8C47E7C97176E3BFAE6928DB28
-FA876E4E916E3A80CDA6A3DDB8C41B95E2A92344188D601EF38E25D6EC02FD9E
-3E6A731960F251298417E6086722375594B0BA1066D309239D257552D02B4267
-7CA192DB03326E6BEBE2B8F00B1C71E6E3CA6E7EADE94E6417AC37AFBC89D888
-266D510F96B27DEB8763CB3406E1CB4711E0D1AAA9C47438CE5C4FE8246C184E
-4A2765960AB89DF086FBFCD58E297E2DA1A67BFDB43995FD09E1F7FEDC1281E4
-84165095A6A4522D61711AEEB78C7A02DED55B9C6323206BB72D58B528B14B3F
-54823D66290DBEE7E2575C2EB0908A0FEF879823DD991C95ECD5135B82F2E58C
-5054C16CF89F14678558427A4B58722A547BF827F8F580E890AA7FC0ABE383F8
-2D15A4D54AA1B8B55C21E244E61DCDC6C74BC1977FE95B87EC6EEA104F809041
-CEC9DCBD036035BC2D8D83DD646500554CDBA746D7FF4D9EF5A8D05D411C498F
-EE4A2F7751922A460DC6553CDFA82E4B2CD14AF4066FFEECED560F512411D8F6
-05E3C23992B28EB7F1F814482D06982D4204E98903B8AB59FAA89ED44E29D51C
-87DFF08FAE71B6C1F963D35FC0DA85C93256FC228028A627DCFE8A593AA06FE0
-455F05B184714CB9646B9D554007830C6A66E9C514822FC08FCB984F6DF3BD90
-A6D40439A8FBFBFE8C6E34CCB6350F66B3EEEBA607C6B30CC8E9D0A27E25434E
-6074A094481460B561C2DA1CFC2E4E572C8B7ADA1480084D9E20A5ED14242CD4
-2EE28743EF1A270475C2B5E6DE3D44F0646246195041D7F569B61EFE0BE3EEBE
-7ECF3567A8856A11FF990B964702C351422CA8ADA67340B447506D60F4E7C760
-F6A237B5FEC336F75302CA9427FBB9F38BF3FE0C5CAACE330E27D7EC598A3971
-AA8874E6B90E43860BFA084180291A485AFF66570BC1C517F6080B000CCAA91B
-02D28E99A2B633940F807BD13529C9423D7B83CB3F6FBF8EEECD56254A357195
-19B828239A6899EE3169565721BF67864E3B528A7D5580F518FD1DA9F6C9D559
-DD891DF9FFA0497AD5924EE853D42F398E799365EFBD34FABA4CAD2DF8F10C1A
-3F70791A0ACDC5A72ED0527E4AFCD0B63370A705C0F38C06C3DDD0DC457C0BB5
-6D2208935AAE50D4C0CFFAC537D4C5828CB2D5691EF678BECD8C19A723DBB767
-8FDE643CB01E08B101C624EB53CFB2D6D30EA053F0B56B24661A395E880A6C88
-D2855084C8B6A67EB3C30B79F8F69C30E5A982814C0A98561A3B3500EB0FECBE
-BBB5E20ABAC3D2BD790786394ECF90A3F2069EADA7A5BD4F797D888CCB8BD310
-95B716EE728AFC5C937A49E16EB4AC5125FB5679CC1EAC9B452370912C83BDFA
-B59C3EAFAF414BC1971CFA7E4EF92C15170963C7222C3860753CE986489370E9
-AC56A1160933338FEBE4E017CA8B0B8E2B2C54497BD804B5B3C376769AC7E464
-74D5B44009485DF79438454F286730D0A3F5E8501E2D8281C9753DF36B845C81
-4E73A8EECDE8FC7D80CBC5157A4296BC0185F1532FF683D28471038BA6830D90
-27A8E7D132B0C4AB147C9D5AF7BC6F77C15CD411BF7EEF9530A733CF0B1C4132
-9AC7CFDE4AD37B89AF3C1F9CCED2EF9746BE854E1EA232147ED3F55342608E0F
-6D54F79C5E576885F490162627A98D75DD5069D5544FAED0063BD3930DE42E4E
-7B85E66BB64F6AC5533AEAC178B52AC0CB60F2AAB891E8C8A24215C16B335FB2
-3022DB8B8F05ECADF1A63022F22FA5B72492C020F1BAC3CA3C2F56BD9B77272C
-28317A144C13B6AABAAA64A42E5EF383141E122F6DE72D77433E778FA4EA0AA9
-9CCE7A37379E16F7DB37D12C8C3B8BFA9566019E83C8465D08689320DD3B8C0B
-9104496955383B7C2BD3C8B4F60AA60741BDC12BEBD4026BDC256B74A1E1CC84
-98915C9C2A0A9F2B1A36D88161C0335A9845027CC21DD649840594BCBB4C1826
-2468791EAAC3793294AED8CA25915F502E8736B8C762D3753B2477C6DAE01DB7
-B4B86C314101E40C6F8D3738A1C96813BE8373A8BFDBC8272D022D122C1959FD
-B68AC9B461A33DC3AE70C745D5B69D4A669FD6578842611BA256A82723C56F76
-E3F63ABF3A83D29A6E511768565F2EF1CE3ED586E60264DF3F9EB8A7742DBF81
-DF8DCEEC79DE4406469C9E56F966935ACF973A611BAF9780789DB843B2BCA71A
-3B328FF5873D3A5817DBEAF519DF1F931550A0EB957A1FCC36ABBB92B0996124
-127876EB8500673509BCE5F176CA20C0EAEA47F61A6F39D76F9A40252F4CFA55
-0C0FB609A73735C5B63E434C88BC515527AA8AB57A8836EAC44A63E20ABFAC61
-49F9B4BDBA6E28D87D47926DBE13D59996717E5907B2AEE0069FBCF0ACEDA2D6
-EF1DB764236BBC7801583333E92AFE72E2FA243190BA9447AB5AD9D868C36947
-C5D4A3A3A5E0D63FE7D49A60166B90B1CCD99CFF47C60B2D1FDBDFD355B4FBE3
-B330F32613C355AEDB7E4101937F164EB2A23A9829DEFF065D3350BAA692F88D
-44A0DAA86B10B254AEA90E8613DF1BAF3704840189A109D546042850A2B9A748
-615C7195124749D46627D2B20C1C8387320A6C624F745D66230E04372716FF8A
-25660C407602802940402F5CB594DED3A36B063ABCAE106C57B31D0801DB08D3
-B4A50E78A6A80AF67334FD75F6A53A05B38EFCC39A010043A361E9A0FD8FA21E
-BA9DFE44A8A791B94D49310695706E91C238A1B6A44A586A2760A450B1268032
-BD8FB6B39EA4E1DA846913577F7E75023CBC10AF73C34D60ED27FD1AF708CC70
-0E18AA0794CF9BB7E3BB8A3D4C20ACF9EBA1DD16C32F142AECC74EF37B0342E9
-A29F45FCCBEE8C506A01BF6DC8CE94B060B124A5BAD64F45FC2E23E663F413B4
-9316F94C1C03D2DBCE8EEFF9F7018248A9F5F929B6C5EB9FB521FB4C1E981C94
-185EA7BDF7A97B0038138A656150A3F2803D31B70B079AC0E10D28838F6B3329
-762A0CDFF651C03E604A39FFEEFB0D0336422B2D2D44A726BEBE6D313EF946E2
-37AAFF61518823AF00C7685EEA3E7D6EE644840DBD5E83C84A14F255985FD228
-F3A2C91ECEB58BB2E543668B413439770E5DF3E2938AFD849EB85A890DC8C94D
-B817F101A6783BEB7E24C8895959B8126D3A1A8F61BD1355964CC0FD4284DB13
-E977E16FCE0202BC147892DC28C76DE356A966A504FC0F24E67FF4BAF31EA048
-5E4048234A0DEB30C27CA190FFC724D817B0D3C1080DFF040F555182D9A33A6C
-EFF03FA526AEA64DCF2498707839ECDAE65003203FFBE650B07FE01AF4E17CC1
-0E10866566BAC525D9DE6F0ED4DBB310E299A947B62F280A651210A65A7F265F
-700E2FB0E2597C9D3D4B01FBF5500F203D2E53EEE0F04F2548C33B034BF978F8
-97D79672422BF0EB298B6179CA896C410FBF419DC6FC7829DDAA2C8A6AEE01BA
-E5FF1075325E07A55180CAAAFFF925A49DC0141FBA0342DE3A5187CFFBCD8AC8
-FDC24F873E1C53DC4FFEC0C0776447D1DBA99E60E69EF693D0C6EC81D72BC3A3
-A7E565CBA543441DBE7C31A92A9A9A144853EB2AABCCE1BF0612BE5D3F897056
-958C6D0924EAA3B3E1E02AA51E543B559F231673615E204F12D1F3FF9D4B2CC3
-A7A440503E4DF693919EE2E21926F8DD063D1626F557C95823DE429AEB93A4BC
-BFE20A4E0B251DA0ADFE5C4665B05490CC5BF50EA7915A934A963D279E98B87D
-65C059CD3BC7C6E84F2FF4AEBBDBA216D365ED051FAB8C572E58F1396AF664E4
-BA78788DC82D9EF4226ACC17B81B9DC6A142B7B559B73BDA9B49438B30DD597A
-0E3E296688E593FCDF1AA40064C1500AC4FBFFE0A96417906A7E706885FEE2BE
-8333558A464B5AEB89B5595B27986BEE4E8072E1D547989484DA80DD2AD2A7D9
-D61CE89A8FAA36ADB53C77C54CE2A4E81426899D3E4BD75BAE18F74D176135AA
-1D2DB92D869F071E0346E0619D792B28DC9BFBB5DE363CECCDD20609DFFBB403
-8FAB8A00A52325DEB0246D9351BF40EA0D4F900E64846F22A84CFB4005072D13
-98D29998D16C77EA531F8095E30792
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: cstt10
-%!FontType1-1.0: cstt10 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 26147 26416
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (cstt10) readonly def
-/FamilyName (cstt10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 611 def
-/Descender -222 def
-/CapHeight 611 def
-end readonly def
-/FontName /cstt10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 58 /colon put
-dup 60 /less put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 76 /L put
-dup 77 /M put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 87 /W put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-6 -233 539 749] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A2E729C1F3C654AE5C10A2F637
-7885DEF6A2275DC695462949A67E0D187D38D4A662CF4FA12D30CCA27CE7A810
-692937F6C2BC165CE2B8622BD15D5E5E6CF11188ED2932DDC14A54EC300FCE1A
-2C0327DE4D1CE9EA805CEF466DDB70A9920DDDC1F8E2F221D9D2090BFCE081C4
-57317529B50A66612DE3F73CE16603D25D14319AC60398985FD75232461654DB
-2A541747ACA527AA312FC27F84AAFBBB7F32996C15D8E819BD14DC1EB8E32517
-A1085EDF51DA03E28D2D370F6148FA4CA5551A1577803A2F28D69BB52DAE3A21
-E7694EC5E8AAAE0A2E5BE5D6B4B7F9F9E0214DCA121536C0F03ABF09B3DCD1D5
-7842908B4480553EEC1250FDC4E4378A115DF03DDD18844135CF9C098E067275
-6044DD8E906F9A5FE4045B801FFB78CCD0B89F91DDA22768ADB0873958A698F9
-9F264E31FC8C2202AD497CB8F4D5FCC7B4B25F49ADE1472B8F4A60D9F54D4356
-9359F02EFD4058C58FA5E55F60BA752F27725618302916E03B39CA30EAB2C1D5
-10B84955DDD48C7F6C6A1627635192132959536AEB5D58F9A01E249978BF10D0
-D3FCBDE0143238F62CFC2D227521B9A378BC4962D8FF5B5423261096F4AE3427
-49367D8FD1A016AA686396062CDAB592721EF1DEB820EB141C2BB733F3FE3DB4
-2643F8E0BD0A99A49188A4018D6787D4C0CB301152A70157310047A3FE7C6E5D
-99DB6A9E6D909C86DEF977363DFC5E1523001D95C0DAD9F1E6AAC0184E6D9FEA
-B2BEE38745AE21871F43249D4A6D0E867AC7E43E80EF84597F9E17083DDAD189
-2E952ACE33A48351CAFF2BF2B977937E70B713CCB186BBE6C5825A46C99A54D9
-577EB6EDFBAD85503029B9A0776BDA3C877A0E650CAA6E799EADEB641E165016
-31603C8459F31242729A18EDB411FC40B0CD9A196661A5AF768C67C2C02654B2
-331B923D1BB8A85655E6D40B798A3ECF1CAF79DDA7EECB0F1782FD5D8F1BA5B4
-87A6694809B1BD85530F5E2CFE0DF37A6732DB59F595D16DCC5493BE2C847312
-8449B7212B211FD9179E5D7D6363D39D9AF2694D1543FE8814CCE09F57BC3676
-0BD45A687480DC365D0A0FA9459CB54891F74EB54079D63E53C8B0DB627F3A1E
-D2CA70C7A3705053579F811D5728B57DEC286F9DECA4B1C4EDE8ABBD76EE2C4A
-30C93B45C3B1D1C895809AFC85E0E6BF5BD16078D68714E51C0DB582018AA4C2
-0EF7225A3451CA2AB96C64863425A8DB30730A88D81FA788E35BF8F7FC19034E
-37A565087AB2E18A8286B88CBCC2D46E57FC508D1ED03CA06491D973B10252DC
-8E088D8AEC852F51B857A389BBB334C21251ACC9BAF6F648D4EB41EFBF209A9F
-81DCF104FC6A46174D9F0D84C09F998363D3F3F392F2B1FCB711AD32F5F69EAD
-D2D9ADB6D9ABAEFEFF7A9150417A4BBDF8518E241C96655C354247A63DA7C883
-B8E7606E9B3B31DF582B40F9D2987CF94619ABC955B8194B5AC6F6A0A35C4F04
-DFDF783B12276B6EA24CEFD160B537690EE0D9237297AE18CC9D557E36FF842D
-56EB0E9309672DA03FFF3610762392B2CAAA898F7465BFF165AFEA30AB740FC8
-DDE2AF312399850379515BA605D8123F8113ED125B11AC8F5C149E5E8AEA106D
-747F8C20E2BC75ED880969372C7FAEC67828B182C7F5619621FE2F7815F374C7
-1390C27508EC5E88F3DDB1CC12F3424EB859119E4C33FB4959B7157EC86A0250
-AF21592A3F136524848DBAFC51D1D72C3ADFC6AA3C1CC762333E910AAE808406
-5CFA83C16EBE0EAC9F4422E8C23383C76B1CA2453AD17408FEDEF3FFB6C81AE8
-3D4E69661AA96AD96DD667129AF4A1089B390E95C5E53B01C9A06C90A2CACC8E
-BC06A44D45AD42480FA293ECC658F897E2E0B1271AC2F4B846BCFD434D80AA8E
-1B620F2EE9B280C3647197EB6F0D966B4747B048F7B56306A4E563957386FA64
-096FB619E3FD2320EBBE7207B2D1ABBE6498535B0BD35D89076975A3CFFC401A
-E2AA685584B5BD587160609CBA3F9C532D5C416DBEF870FBF9D2BE835022CDE8
-E12A2B663679B010018ADE93A7346B6D03358366E2FB8DF511C08BD383199FA1
-07A9CA35D3763BCC7A9EC5FDA448214C914C774590CFF75EBF86F71C1EF0A3D0
-24B9AB7EFE5FEA107659FBBB586462A3CDA8397825D269D700C5441A5E764F8A
-D703FAB8F4BBB1554CC9BAB6D51230281DD54394AA449E01F38A4F7441102975
-E81593EBA6701209D404451C677583C0E298FDC778E8B2464D04D19D82F104DB
-4A2B43054D39B5F470C1CE551775A1E9AAEDD484442097914FCE106218FC1D9A
-1D2F4D5D6D5370EEE6A6291F110FB4DE8CB21FF14AE894F7F5E4911D4A46065A
-88595349D0BDB4147B0E27428921E67AF6FEBFD85547491F8746330B2634427B
-A10C654942DFEBC62F94E006B9CF723C7A097ED8C23FF4324E26CCC46489298E
-0275A1FA08168A1D3F9C7FDDBD18BB8FB8478B1B374C1DE41D8FC6281C5BFBEA
-8508B69F32A3BF2D1A6EE98C51277476DD6AB75382CB2F304996F3A15859CE1D
-96D38F20FAD46616EF29D34F1A09B7EF5D2A6330CC3AB097878E4248B9935072
-DC99F172B2036ED2A824D99453311599FC58702709DFC7422B518942146EE05B
-06A483BF60420E5187F7819E670B70CE29B1826454939F5E807EA94C0EDB525B
-09130337D1FD7567851A2CFB4BA6CADCD42E32BBE10CB2E2D474ABD44677ECB9
-FEB5B1BB1EE0B62F0C6CEA9E425486012B1110D1885BCDD5B5152E5F9F0F92BE
-4EA94EADE14A6BE6A74830E8309084E2C43612E1F6A8DC0D3619294134C6ECBC
-939E1EAB363857CA9DE3F213CF8B505787B52663F34AC647F6B1E3EAFA7D48F2
-445275F5A3E06ED3310C68FAF4EC12BD44476D50F64E866F7195860F56DF531F
-67B127FF9E7FB0FF7FFCA52B3AFEAE76D6DA2380A712C4E8BE72A3311E3DF0C0
-193B9BC27433C97B5090BE8BEE458AFBFB57BE9230F0743C3F854A3379E03107
-EABEA4CA0871F1126015B03589E7EFAC6581E387BF5B39BF2E9F0CC0F0DE16A7
-4D0933DBF682F64CF4471975FEEA002D42F81B54C3E286CE2FE2CE48548C9808
-B0AD35B955DFAA3D10C244F84F377E8DDAD0B18B4D444DC5A1A6DD4914A22FF1
-EDBF796A2B1E71690CAF5C3A15B36C0A65EB0E98678351E776E07E3D536898E5
-1A991B7CBAC30A87A9155C587A477F0C890CFD19FA90DFD8E6A2F20D2067A91E
-67270A1D469270F8CE354717D5B4044974015E825BFE5DFC6405278B74F61294
-1CF9A4517482740E9FCA86D7FF8106CD1FA71499E26B0D603A5585C58EF7C017
-6F209F202263AD128A8C781C58A01167008997DF2CE1EAED186DD9AD8DD93BB7
-4CBE69E6809FE0A0EBE876275DC9226742428C1679F10D705B8599F3B66226F4
-55D0312DD2F36F850D28CF509CD45DAB4720FAEBEB852A1FB29A51F8276EFC52
-9ACE54399ABABEE67A6D7E0EC4CA1FEDA0F9F2BD08BBC2F558C9CA61D1F43452
-7E0C84A00B62E0B07C313A04A86A5CE74741752BB26681E24750160B8BBF56EC
-7BB69100410B7053D06C31FD6B01A9B63D81169711477DA8C820A53BB28234C1
-4B5A7C155EDB51868BDBC0DB4510753A08F58A05AB07A61D841D8853BF16E00F
-41E626A0E83A9DCA8C3012EA7726A571FA5E7E5454C7A578B66859B454C6CE87
-D34F5F961E9617248141442C2E48ED308AF38EEB8D10FC08FEA32593DACCBBD9
-A1491432D70630F748167D8EF61C27ACB18BF42EA98601BE8FFF91A07A64A34D
-17A05772BA2FD518D8F7934172DAC8767B9EF7D46CAEAA6EF7E55A8DD06FC2EC
-5AFD04D17A7B91C4A9C42EE20856C0CB82EC4D09D8A32216957A78884F8CB77A
-09391BA5F59CA3F8094134A565F98E68D5174F5735475D9520E32B3ED70EECEC
-F6B5D3D72C6014375DC23FD7BA51DA5E07B68988FB133FAFDE6593B8BCE3A218
-77285F0C7AC963636791701341F6C2B5D062EB5BF98CB359667FB5352CD2F770
-FCCF1B637527CFC0F08C99EBAFADF4C97AD9D63D3B3891CA52C10389F2E46ACE
-F5D2DF909916274EC8AEDE68732B6C7B0047B00A5E7A23E5A69A1288BB190CC0
-75C0D21235F67DD0FF54A429975122DEA2EA9557CF9532AF46458036B6ACF27C
-CA64F9280818AEFF8EE0D3F14FA881D0AFFA9A0C9F23B96672464C9DEA0C68D9
-959BE56E197FCE8230B69A78E9AD2B7B895CBFEDBF22B1EC7AAC71396793C018
-2BD793BC1F1D8828C651E2FF234D621098FC234A1278F8807DE1CA26BCAAA253
-26F73B6800E16F589488E72879D8BAFAB26F6A2AE172BA72F1B63993AD0B9330
-45DA68C901AA49999E149D3FF0C691721E2376052118FDA9D3F485DC2B9628A5
-A679A7AB050197EA233DF301426D3F0693CEB5A5BFE6F7C476E2398B493CE1CE
-0A0F4205ED4A2FDC90CDEA808DFEF41E57FEAD7CDB3071D22275B1063A45695E
-19C8BB3CC0119CD0C6575E2E2160C746480C2C211AC57DEECD64C6E80733B048
-6F72154637966158D13F1EAE6ADACC063A9D94D9C077F634970D8469E1E3E294
-5C66347082C7DDC5EE97CB1FF28AD25E3F2415529CB930EE0D689E4E45E810BA
-2FCB5FB3B7E7BD4B92A3E6BCA5DE7670E0993EB5B81FB04A49A52D7EF616493E
-5229DD78C71D8670A1CB73E0D302F5302436BC7F8B816BE336C5BAE54E9A6719
-BA3692C614415CFE5F85D6D8815EA8420806116E147E99F9542599CD130E60DC
-C311B3CA551AFC7F32FDAD3B8DE4FBA46AA4FCB179F9E50EA979425D06B86025
-0DE10BD8B889B974A4B04528D26E3A5B754906EF59FC58B2580B20E1C32A6A65
-204BB1183DFA58C9D3DBACAD4643755508E5B43FADAA25767CB5B384E7D6F00C
-E8F890F7AFF34BB4C684F8A94C7E31C89E28887B498D9FA4C65C2E060BE61EB3
-802133497E4B41393C9C82BCAA46FEEF28159A326666579801F823BC5A5CB39D
-5DDAB7F50125B53B8EBDEF012BFB897C3F6A67409E0E3D52A1CD556CE3EE2622
-B57F1801A0E8888E16C069F26ABE6E09EF5937EFF485A6DCEA669ED47182754B
-CEC4AC865505E47478AF090559F269205565B9166D728280BBC5927D0DD6FD0E
-203493017CBA4BADD7D43BD10F077BA43C5A9479DFF6DD57835D64355DFD3769
-0DE5513BCBA645B0DB189DF33D7924148CFB343441F5529FA891C7083C752164
-87AF0F94125CFFEED444FB4D80D4FAAE0CB9510E647028E2964D374F12F84B6B
-215DB51D1BCDF120B62BCBC7576F3CAC5C848E53B4AFB7872A32BB4D3BA5E65D
-1F07FF87992DF1C96A3C896EF50CBD250735DE6915FE98F791B1DC62B85C77DA
-7864E9A037E6137252794497D17D1DEDF9ECFF7F80D1C2F9E89BC9FDE6618151
-260192BB0819DB1F1C4357DE51919B456B7D3CCE9E4F7102F3F268D61C448A15
-9A034BCDE6BC4DC676A3B3EE4B40811E81D6BB8CFB1DE4F4665522B194121C5A
-BD85444E262CD6BC7054219554EBD5B9F3789A328F88924B063F5F31DE07FF3C
-99D377AFB16AF86D8F7D3C18EBB95CED6936555CE2407A9001A8A4461B446741
-31E4D250517B2BA4C443CDED995C40B79D1BE00BA0334E94401AA1EC59E9618E
-BB8833A14E3A09BACC22C8627E4CD941EA254F38E0D48B17611741FDC5448510
-B85D6E6B787EDBF5E6587854DEFD03A225B53943808C8187AC75D10114F6D958
-CDBF9096CDB82A16C2190940124832C2F9A82323CB4CCB8DF8FB38F76014AEDD
-A860CEF99FC92B0C5AF52E8D2317CEF2FD8832AA54567AE028B8E299689179F5
-2D042911CB8EDE42AE253F25AAC58C808C5DC22FCE83501EF0596428FE7DAABE
-58E0DAF3BFFE57B1E81EFC15E54C1862EAC7F9E757B083348EAD536C3269D514
-FB30121FFFC9FB49FA34BABE4D63C64A05F66B6577D09717C6D465F9F7387F37
-DC0E5EA1600F8BAA0BAA4A0D17606FC9FDD85C4C94064FB85FAD7C99A8D64BE0
-8E1B60CC15FE61173F98BBF0549D6CC750D30F95CD461F9BFC6B199C96EEBCC7
-0D3BA58389D8405D3A2497AF2021B395B51D1C160CB4E60DA6E185052933BD21
-698FD0F76BA5BBD2C2B9DD330066469A92BB0076D6CA4F738D235614091D1121
-1B0B20DF408B01C8484935DD0BE5221F0A1F5A49FD2439C9A57AC3F0AA2844BD
-58ED88F0DAD9DE259596E551031BC28E38E7DB901FD79FF4683E82F7547B4610
-E457F1AA7510A234393FBB462F887DA421594183E2D1B8B68E2477B8D6BBA5A1
-DA11A740208DCFE8C3D7E9E92393BA0962F5AC5FF5A1010E8CA209E286375686
-05860B84D0D3211E16799ECEB1FDABBF21EE401088F7AFEDAFEC8E1D5DE8D532
-686D66818D42140461F37C1D83C5097FF1CD43A6F732E7660FB139890584D388
-9A4F830069D89D067D74E6BDA0A91BD3A461273B23782EA570EE1A644678F528
-A9C44345A0AB98788A64A89D2326FF2A2F646527531A5E2DC2118100B70F9BB5
-E48C3F550E64394F8F261778F5495F6F505EE7AF9A839FBBC551EB43F5B3982A
-9D863F516DC3F005AE00C012ECE801617567616C8F69D736CA6F4DE67F76942C
-6B3C5A16E4B4759F09FF8D6291E5B0ABB207BDD0478F6095E29568E9B4BC9CA7
-74EADFD4AC3819689ACBC25FEEB46439BF8ACB1FE3D7835B7A4C3197BB470A75
-821E9F1E4EE6A03676DF8D6FA88D8D1F29CE425BFA88EF3ED887CB56EA46A1BF
-3ECB7FB943A579EF060B64C9E900FDAE29F98608B1C4D01954AE9D4CE2449FC8
-FEDD0252AC95CB21DE18B767A8900045BF0AD9F1259012FFD58046D408D5FF8B
-56E5B8FC93C08B78547E1907BFD409BD10584AFA90410CB5077E0DC08C40DB44
-645F2062AA5AC95A0DBC58A5D18AE142C045547756B4500F770B3EBC70C72119
-AA5E3A50643409850F648AA38F20EBB5385658EB1B79482177F6EC6E807C1350
-6F2E201077988C8AC6B35A36D983C3E8783983D90FB4EC866CC34B1668A65FA2
-18E6E16413F14FD5523B2C93BB7AC4825257615AF1591A2A8E5EB95C672B9F6A
-2FC7DD3B3CEFDE8BA17A09BCF8194162D2249E4FFF69597B54BA86610A92A469
-81A39529A3CC720D953CCE466AA16B5D739915A8D68EB05495C3E83BD39AE625
-068A4A274E88054D1C1EE28ADABE453D6A62D2AE38E5D11E5006886C1FF86A8F
-7BE217F3DBA5004B23F345DE0A4687DF8A6ED77CB4FDCEA22F4B78A833489806
-E2C0009246757077E71AD7BD5821DB5F901C94F3E2B581178B5DB72E7DAB1E2D
-05CE8828B7C1E366768B9FF7D7266FCA4C0C407D3535E435AC9E09C20FD50A5F
-F86FDDEF95426B531EF220515101E1B5C28F2D8375A80B38FB1371D9CFC203C9
-7E035113435298E7F13B021936D5EDEC08801D746E8086DE824B19D759899F00
-EC3ACB6C2D94D9854F5C63851F0F6CB175019488B42A8B32C7F355A783B1A311
-9809305171C13600817075ED66DFE6E0AFE5CAA9C4B2FD6752A802EE5720C75D
-10D9ED4FB0A6A3B7E3B30FD619FCC6E4D585990196D20460B2212DA901D6D2E0
-37D95B8A164E6F48F92F06210228CA18714D95F07A31093382E5DBCC63FD1CF9
-A0FB922B1F53ED589DAAD82FE31EB4CA7337920ACDFC7ECB292FC943D64B4C91
-547B9FD13F218FA9765AF17613B4E6E0D92FF52C81182BF37F0ADA03A127383D
-CA6B29669CD277E6C2AF63D090C3C98EE22C53F1AACC392DE4603A82B6357E8F
-07A652418C13E400A3C50DBE5F5ADB3209A4181090E2314223BE637F40874FC3
-486B977631D05CB9C3440EED99AEFF52AF4D51E17E1EACB0DEE5FF59427D12D6
-BA4A9C05A0F851ED8ACDA56A86A322054084EF5A9CD69A4BB25CC715F63508C6
-489331DB805B7829132BAC356A1536FD6ECC5C4CBB256209C34E0D23CAE5053E
-23F6D3AB4095069C3CAC1B5CED50AB5FF625A022B6A57D0FFF5CF452F58265E4
-640EFE34D0E1E5A8BE5306311191742AE274BD6C4D0CBE99161BD3B277A1F7D1
-5768D1C80F162599CD946EC06323D7324AF3F4719180A441BD7C1EAEAEB64D88
-863D573A49F5B109959CB41BDAB81354665581E1F4BE4BDCD2820D44855014F9
-337D2CB99CB5121FF5B6D0531EC53DB41456D1AD77216BEBFD95A36EAE2DFA29
-C0AA7DF47A5824150445D5022E1AAA276D9D00167A333175B16701AA8C5A71C2
-E2FE6B094456F89C01AA64BD0B342EBA9D4A9F6458FEF0DC5A98FCE815986402
-5470C09B983C3FF119EA4565D7AA557055B62EBC14D20BAFF6F8328E9C05E3BE
-DE307950616A278174F682524A269BCDCF2259C3F3DF3E66F81BFDA17A20458F
-BE412BAEE9784BFCF5A91ACB4945F063FBE27260F879957D35DA59FBF5992EFE
-DD0ED3740DE5CF59E4A18ED0B202C26BB109EAFF9842741DD054036376C2BA24
-CAE66146E9728C291DA90614FCFC5331A460A902F8B50F8B400DFB49A0F20BBB
-FBB9F6E68BDBF31F58E656289FC611548F9C4BC02F1EE438B87CBC583ED872C0
-EBA4341155BFF53B224A7C197C69C52F0F18C838573937B505E9685AEEAD06AB
-A42A8DD91B96F67488CC9B609B8DCA8F99A2B139795F66F2916852D300B5338E
-FEE33BBADA4D02C1A57C2261C0F81CCD9188D7B37F9EE0F0B722B6F0BBB2F695
-683C5990056651864337503752884629E965018D948ED19870122A3AEA754B8C
-33EE5DACF17BF3232EEED081881CE8F50CD02497DA2A5C82257C8656D2B7EAD0
-E82A63A9353A5BD56100F434D5A92637C84BAD6527EF07FAAA4C2C6E7E2BE5E2
-7624B211C5E910EA3255E329644A1A3623227DE543B6154708C7E28AC903AB16
-2A121E2510892B051D62669BC8188C0D438538278520C75A38F1EEE82CB1AA56
-65B56DF3A51C9EC543A5E375D55372CEEBF951823AD1880195E077ED5C4C5050
-1A81AFA18069CACA5977604C0E84F234668C2E6D165037EBDBE36A3DEAC68887
-EF5F657C6515117B6CB4E0096A766AE856FA0B109339A75061BFC99F6F1230FC
-3074872E5EA7D93CCC3EA0A2AE6F114EEB578FC4E9DF74CF0FA5E90C4F5CBB0E
-1E775F2DADFE29553D14770386CCDFF6EC39E4B51A58F533DB5134E37DBF7DA6
-DCCF5E5DCF14B92146C72D3A8770A4B0509B0221A1CD806F22FB30B892976891
-CC5E5C11AF7CFFC237D1AE50095608EE584D6202F9ACCA370DB7A4B6D9AD5FCA
-9A650D4EAA9B3B7050374C3CB6274CCA80EDDB36B7A7CB776211758ABE97A8A7
-328E366E494026D142332957BD6B5F4E8E02F4E94F3EAC8D6D6EEA0002430C35
-6F17AFEF01531C7CEA582AE5F9638B401842B7E43CA0D6EBB2AB5AD28F7E4288
-4807D68DFF33948C06427019B514069EA8876657C34EA188C7BCE9F90B789947
-D2AC7BDB67AE6BE6BF2F2E493AC7F3D808B34E5D367FFF37C7F5DF24FA25E334
-C676AE154AFBBA026D405BA76914991B5C751BBFE7E7FB7AE6DC91DF41EF97AE
-9C4B5EC8664ACCE6CD2B602D440B75979F585611973B31CA9A8D022C2DA4AFBF
-BC0A9F40515BDFBF09D44086EE226841EE90733D9231E7979173D464B0FD2C05
-52CB437CFA0C265D9273EFA946F65CA38AD0BA6AC8FA73900CFB71FE6824E98E
-26D8E888662B33F0CF1FD2909499BAAE56CA998922501FB142457B1480221D96
-382899310DA463CAEDC8A6B44C5137DC6A9912652BBE9AAD5C535E5C13BC1EAE
-45654146ADEA066BA9DC12DD52E820EAE83DF4C66667E5B1FC05CA5B692FA13B
-126C657A398A869218488A9AE08B5A9306EE7CEF918E7D67A6CE22EA48534B6A
-7F23625C7E287D71EC3980D9F89AF0B29F2E6461A7C0874400AD0F2817BFE217
-8A2800131E4255E8743D55282B5B439E59E1A19B77E45FC030EE0CF2FC62DFFC
-8801C38C2EF38E819172D860F9D5898933FCCA29C0ADDBA72DC85E45D8190FAD
-04B7CF05CC534849E25270409C271AEAA4A93B00907D88C3F74C34EF20AEB90A
-10D6EF0C0D29229A0341595B6E17DA0D0A227D0A8CA14F7638DD23D016C4E9A2
-00A8E07B9849F21E4646ED07701F562AEEE85576FCB7C87D3819B318CD3A7F4F
-4A7F73834569F9FA80BD6BFB0F38615BB1DEDD9D2BDB7755D24805C9D1EACCA1
-6B723990353B7863909D6C1D6418BA0F144A9C089366331CAD6DD9B0FD411A4A
-0D28ADA58F69D2C3B0BBFB2A1F4D6B6C9B1646205CDF402CF4A72357DAD99FA5
-24702D3FBC0BF59EC79897AF7F6BE85666CA86637520B87DE875CE821C2C6D6B
-5C0DB8EF15230F7848E386A3348C2051083D99486533F0FA0C66C38A628BF6D4
-7249B16808764C3869C8A9290579D936B7BB34BDB73A0CA0E8BC6D46AA91BFF7
-F07839483BD052166EEAA29E539D520EFFB064C3774E9B48386328F464410B0F
-6F551CC3C3ECB8CC7AE371F405CE62F7921DFFC38B50C38DFAFE3591DE0E84D8
-7A0B895B2CEF4046B4EA651708AD81BD657431BB09848C778B8BB110B90CBF45
-1FD4CCA77CDF38DE2A919C915F38136196C7EBD5757185D2E0ED73333BA1119F
-C7E3145AA217D1673B451188798B63618DE43B37B946CFE053DBEB5E608EE038
-5151C099D6F55D26B7A74D3355C2C4E62BFD7EBBF8D904A4BBABDF4E34F4F2DB
-2E174746FF2A531BD24E266C9ACB64081940C0ADC3C9FFC5F3E79267D0596ECA
-29D2F9A701992F485D113D5AF9F52AF3E0329E2A2846CE5AD4F78CC28DECA22D
-26116819FECA8422E557A5F6A4F5431C5B7C982FCF1CB46B102227D1FDAE6685
-E1767E5535AD4252AB80A78DBF10BF52736D88BE397E006C63FB14F3B1A9B178
-E65F04114291F451ED91C8BEDCDC35F941DD8B6FADE1FDC0DC0E52E30B087412
-894B8EA885C12EAE88AE2DE400CCB5DB7A5BBFE569C3F6A2765C7D8C924A3303
-42148B1908A3BBED1E684A3C04DDF1004FE446BE7C685584F345EAEAE62296C8
-7C3A2311A008CDCB5D9090B3470380231FB3996E5F5AB87E69D580FB26780D60
-D134150C1F6B925ED74B72820D34D118BB77904617DBF21093D6094BCDB3A3FA
-75F260676C05C38C784C8A5D54376A8468AE1E43A6DD446A924CA89B45D1E77F
-562D1027CD81C6FA57F10FC83ABDEF4425263E91952D1B4EC9A5F81E159A9266
-0C3A5D1485525295A1A1E179F1534ABF5F6755D02886BBCF8831E8C7BD5ACE20
-29797018DA2D5F1DEDDCBA00D52D276FDCB0EBADBE0C04F33DB765E937CDE39D
-B59966BD0645EB7518687ABB07AF5945EF6A91B3ABEC6DB4CA22337427C9C75F
-FF90667487F5BD2E4E012C7C540F1048D3387930B2E0D27CBD670C0FBEB8EFFC
-B258E9E6AC5FE4DC16A22EF66177D796A6BCD303AC83DE3AF907703BBD87BFBB
-594FF2895801139276FB384651EC7649E9D66D2BEBF745C717A09617DB876470
-8E090D11B27A648C24605B228C35A4EE4DEA2D27578E7FCEEF4A6A343911C878
-02064D77770DB72CA6B55D5E24CFBA3C7208F2D72E7ADEAB56899AA90F23332F
-6B1646DA7DC1162644AAFB439CEE67E92EA2DEF4C8C560AF9EFC80A677E5FD02
-D674D764C07B384E9650E92B59A76DCAB1142257142E73AFD1DC6419FC7265E2
-83A52ED941B1DA36A6AC59991C40E27A48F738371A0665E6F54F12FA0EF0A240
-1BE92C980E11AE111375ABB0839F208805E945D69B1B7A5759DD9D10A7490A47
-11647FBDB7F09E1B091B37D2301A896BC90BE1E7C28A583018A752840FDCD3E2
-21214A8B920BA27CA37A76767CAA8D10F46BAC7D6CE00DE86194E72A4E0186EC
-35B996E135A24A312AD285D682A0E1F655583FBED8731E05DD2E7BB56C15D2C3
-0BE1811E0E26971EF11120A386B888949D16C8D371DECE752E085693CA5D121E
-7392FD8F7BD1A9E884EE2264266787DA730C7AA72A6F6A007AD627718C7DD4C9
-3A56A1FCBFF4C6DDD38D5D22BF69DDD21E00C94586D0C8E28951927DEDE1F224
-5710D6A4CDC27FC57EF3D0C66DFDBDD51BCFB3DE60B9B07E88D60C6E39BF04AC
-33F68AC2B518FE4FF8B09939E4831BF900CB7F38D1B3C4D2AEFA1FFB449AC0CE
-5AA1B24E09F5F2030959E4A13A636BB45AFAF057FA1D42FD3DC5CADFD750F045
-0EBD5D70C79911430C5CAE55065C1511942DAA2C42548E0A8E418BBE1FDDC636
-42C18FEDC12A79F1B73ED60E2A5A4E753A6436F95C52664E39EEB9F1290B843E
-8886BB6772A31EE986C38088687311462BC8A53A6442BB70BD5366728BEB7184
-260C6713B90CBDE76BCA55CB84A168BE45DB300C71CA5C28E0F94C5498F7DDB1
-D812800552332434F5D5605EE16CBC4D3D8CB16DA3E01AA3AFE87A5FF240D452
-7E9FED37A96848AD8E0EB856172FE3211420A6E3194C1B338D97B718F99478B8
-B1664C3AD7898757E86946E68730A5063B2F6A961D1C64E4A6D6A593ADB39389
-95DF4ECB11A7DE9FD70C5BE4B485BB655D1F8AA407AFAC574C437C1D506698DD
-92C17CC44B7D02BDD86200540C9E2EA910F3E295E028CA11240C2579B6370801
-B57FD623D4C027CCBA79C107E6E910C5DF4C21B59EB80C9B76E6D6C03015FD5E
-E434644F29C739E5A8D18B917ABB3D5C0B41881FB68AA7815CA64C55B25EF388
-D399145961A5920799E8470819CCF742977392AFA019626FF415A45815023125
-48590E3DC705D132A18A92EB2DB31CBAFF84DAF0F7A36E72D275449C3CF68E82
-234A75E358A2909B78FCDA7601139A75A79CB315090064379B736B05A5FE08E2
-77782845ACCC65152EA2A7F177F00DC1178D63210D53C3CD401C9C99479BBCC7
-A56D4225195343E36EC60C3D2FC9802E0F748C3A5D0978FE38EBC301CEAE0951
-C546DBD908AC474B940262B061F8F4D7B174470039EB7BE30AD02C1C3D600CF7
-EEEE7E385A133D3244ECA79A9B56CC35E3F58E5125D4139CED98CC00CC859A6D
-4ED845818B11C3CE8D0C7FA31A8C912B51D37DB31A5C916B31534A5707CDB3D8
-8F2A5027D312B5490B60BA8939F2BF89599A13496D0CA59A41889DF1836C1F47
-B791FAAD254509F51D0E50BF3B666A565C09154A80EE9BBB4C5963BD8CF7C4FF
-BBE3790BCB1C36047E9CFDD022C5D49B34A46290AF34AD77B278208A0C305ABC
-41EC281F20374C3E497BCC18C00BAA2D479A0442304C117FC5B3D2FC77BDDA24
-68B1DF2C1E7083B0A30C462ADE9B9C4134773EF6ED5693DC4E7A92AE4CC46E4D
-9D446C534FE0AF3F99991FFAE782123428CE3DE03C8EEE7466A196CBBA75A597
-690F9CA29D32045D440373AF992BB7997A831ED125E297837B144022A6F70530
-4612FA11EB1C5562CD666813ABDFB6FC662ECAEEED44CD43C40EDDE26F9F27B6
-700523DE3349A86E13262E4C55DBF7232B5DA6DFF69861E07BE6A5AF0C5F5A7E
-B35F54295BFF72AF442551753A0BE05FE26A04C67855F1F79BBD23C3DC20F09E
-448875E328AEB4B761946E240539EB8949197020B337E38CFDDE272D12FED5B8
-B84610DCB3675ADF54830AB7F4D5CB88DC9E1A0094B8C629A7592A04AD10BC8E
-553EC4AF5B88783D15BF3B52B7B40090A7860874543DC7538686292A6308C8D8
-B2B5FCC89500B3DE8FCF31623615BC4C3C0E5AA08EB8B88D91975C3064ABF700
-796A24B0689F09D49529BEA293AC6E115E75A8C49B82A0E185BBD0EA87C5AB12
-988D149D9D7AB5C4A20AFCCB0880FE80D080EC45A1B8817784E3854941D4FBF2
-73380745471EE9837B2EF0CDBE081A9FF98A42AEB54D57082D599A15F53A262C
-D8E11CD48D10DBDD99EFAD8FE38AFDDA0E1558A9E4123ABD7FCA44537D235BE1
-CCD6374584F17B047EF8356105E4F17EBAC0CE73428C5F18170558C31A6B8D8A
-EE51C3BD9CB5262B83D66CCEEDA7FDC8EDFF9984C05570CA0186154109121DF7
-BDC20E2906080D9B890700A06B6A609625F30A410821911C81CFE16068012033
-1BEE1B023045ADC0C7672C9FEEF79CBA5ABE95306616BD1922A4E68CBF15571E
-935F9466EE7AFD691D176CB768C0E2AF2B3E7765F59B0F2540BF7F7170B145B6
-793876429BA1C17509A65FE2C85DD6EA826F4E3DE909F8AD63FC8E9CA28986E8
-905D5325646FAE5D9AF72448785A951AA015916C5FA343D2414D2772335CEC07
-9FCF76CAF18AEDEDF264BDA8899DCB06C20C28EE8542EA46872732D863D65E9C
-6DFC6221C90A9FD9BFE833A1B9AFD1B333AE519F5A95EF395C99F788DB151F37
-F149C7C2E476330BB5557E09B9678B4675911281A19767878582CD3E36602608
-FF5177BBCE5AE601F3EB152987EDF604CD4928E2247C15A1F47E189B9C248DC0
-3FB6F0D1E16855AAC279AA3590EE80E5946E6BED4CB1F02856F14BB542E86BB1
-EE2408B9EEDC7EE2B8B0FCD1308273C87F72504CBFE816EC89466E78F9A6EA37
-26C1C3002887704AE92CC360F4108D3146D5AC3801DFC5ED05DE405587AF286E
-9157F9D40AAD08DA87D9EEB1A5B0141285C210DAB3AE7EF760B003B77C006284
-5AE8F84933609BCADA81DC47B943C31C8B22361A45F8EE632EDDB57641F58AC1
-ACD085AF64EE12975E498B3B922AEF89C59036FAFF7772C479DE6075FAFB2210
-D7795616225A4B75613BF589865FB0AEC66D287C5D82AA8B48C7F83574E4D4B5
-352A470ACC64AD03C62F013C0BCA45CE0B78FCC38B73B8A28BC991EFF5449EC7
-3966A35E53148443F512E3E4F7B56790AE29481D8AA4D8E321706D4110C9F0C7
-23CE214F1E145E1A55CDA8BC67E988F2D3432CF1B9A8287F890F2D4C1080D7ED
-1B930ABF96DCA16D2AE3FF5123AEB2CD51B48CB854F2282C52DC1A6AC78D5D82
-5BA7E5F5CFA810A0025DFDB334E74E02A90AA41775A26B12E0852724A7C779A8
-A55E17F006FEACCA8B7A6B2FAA7719455B92DC7728EFB608A32A3206387708BC
-802A09DE0DE78F6B12A36A4BBA709B16FD5D2699B96351CED92C9AE95112E5DF
-D25512251D965FB3DD925B3429430DBE475ED6D871AA61F1EC780DE6D0D0E0C0
-0205838E5FA5663D1CC13FFFA723EC4789DB2141A9E45422F6D9DFFBD5B34390
-C18817772A3C86D8028F656B09217E2807AB09309561F40C2730871C7441E40C
-309C44367F54538136B129AD100CB27C70E0D391B80181F9980128E4C25FEFDF
-229B48458F7826ABA333D06CE72874EEF09AAB3DF2C6525CD10257F50CC6F2C1
-FCD3865B5162234EE0EF5E52BA43D102B806773F6B6A89A052A871C9954F6F62
-A6D7D62959D94D102DEA0C0A85B048AEC157DEE3009F3B80497F0945201388CB
-21F55478472A8F037DBE28963C9EB787181EBEDD13A8276BCD829BF3C62B6E0F
-4C8DFC4534ABF21962BFD926D508FA85A5F6B186A294474A46697F74EDD76C76
-8184551680C1A50E0F5793628767D436D8B0204997387FF3423586E5FC113609
-1D437CBF17B8F5B8FEC2A52CBDA89495EAFDED96F26C5D9F6C7890F64A8C1AD9
-0A1F2162295C814BAED96085A8AD3B9532E323B2DB2C52165A4867C8A8AA2FA9
-1F5FBE6C6821BC99539C3CAF9BC10226EAF1951773DB1A1EC7EC83ADFE1AF835
-F560CABF62E7BF1A0E68A6EF495F9FEFC1466332C7CC85339693DD3EB5364E98
-DDEBBB00A2EBF926A50526D893AE38B62B875B1EF1FEE2B3E87E01F5E97C734F
-4A4E9097F441E4C819E8DFFD89278F51EF03A00A840846CED8D9E59EFD93D61C
-2375E5BF3F22C4C0B00724B10ACC9D9B94EF49D774C10D355E149536CDA29305
-CFC938DC976354F3BF7A3305F8EE3485AC7E779B83A92BC892354ECD15C6041B
-633886BF05E4C9868F1E0CE20655DD3AC63B80C0C0114EC949FD6A55F15969A0
-80504508FE299038B736F8205FF4C6AA24770881AFA8C5FFB385F76476F9406A
-6ADAE263C94158DAB91B64A0DBBC0AD305845D1CF9777BA4622BA59F5DAC31CF
-64D71AC7FAD218DE9548EB7C00996F162E308E8D0496BAC73921F6D19088DF5E
-3684D4CD02F12DFD87F6ABAA13DE4BCE2C64A4FDA8F9D8695AA2B4FE7AED2510
-D251F7413854B3355CB452F4029845F5E292C0B4E50C5E112E5A933438705844
-4A81E1043DE175562054FEF9D92B5DCEBF9F7EB5B7019BDC65E9617A7BCE3D3A
-8DC18CCC56657485ED065717B327174C59008DF94C123BD9AF8A7FE6ABC0D147
-105D0128379F7A3272D2856C88B28602D09400FA4EE0EB7F1AA0D4AB2C26C510
-2C4FDCA28F150D1F1D5660649533E1E6B0D6EA98791C98531B2C4B5BFDA832C5
-F592375FBCAB1D9B6808689D8615C152E66863EDEC4962722E45570038FA3AF5
-0ACAFC13618735E81F375EADBA653A86AD5044BD0F14ECD23BCF06008E522C39
-63B627A6D60F2F2823F0A72AA0AA269FF9202660E4F79D2E4688289C7670E553
-6E8985B539A753463CFDA12219B502714323741F3A0AE9D7FB51ACD312FF3538
-E0E0CEF015CC6C188F498884DFBDAB2DFFA1BC8BD732A65145E99FED1045DBA0
-C91CF9A53E4A5C1DB1C4C8235D80321C73F76DE2F82C80BED05798D7BDD9453D
-C1A61B0AED9984DFAFC130AF735026B7A455B0F549EB48F60B4829B3ED39BE55
-0C6BC67693FD84A588572A485305485E754E71F30A360881392C435A5599032F
-9BDB950F03CC4974290C58889E8413D32EBF54CEC76E07261AB64ACB8D1F9B66
-A72CFD757B453AFD53C43CB87A9676B0A95F60CFB22F365382F439E32F604BA5
-014FED486B57B927F5BCF3B97259C284C7D68A87A4269B24F6440C95B46BF8AC
-3580814D8511BD4CC3F965403D98969EE2C64B068127DA6F56F4AABEC1F231C0
-8221EDD2AFE29876A3CB64FDC80BE31555A313CAF76767C84605F1C5177E669C
-91F7C10360652851CE5999B30B234B355C7671FBC2ACEBE035891700A4B14A76
-F8AB9E9B5D7B93874739AE9E894BFA1AB0CF689A55B3980000D90199C8A04336
-D579C02EB1EBC37B48C7AA69231F125A5C70533A227880F1491209E8527DCC9A
-AECA2DB80A334D9D56721622205DF3F3B5C5B8380B8A2B6DA52F2B8BCAC1377E
-E54D4D12BED531B1A77E3DF48F07073DD5E2B0D0AB86062BE345CD570093D679
-2E7372C6313AC353C1C44C0B3EEE3F56CD519EFE407ACBC9B6418512662FEFE4
-4ED6948D34A282541333FF86D8FA8A22245A53CFD197B559E959FDDE027DC91F
-3DE344F4258D10CFD36AF35898CE83A1CE8EE387A2925F286A1AEDF311CC9AC5
-E3FD676DE98924D3D02843478879AEE2B52E59CFDF3F2818E9594D2D3B16243C
-97B62D70108B91FC76319DAA69B58817442627A73C7C6866F3DECF147EBA4022
-B19B94122C081EC1953C91A0DB2C8447268BA769ADA62EF540E2AE8A177DD572
-77D26175C55CE90347A1C238E648CA338867895149404451E4EA631429DEB62A
-C2ADA338686FB7D64C908400CA165B689AFBBC25AB8178D5653C091F8BE9E9BE
-46481D4436D2890802468539377FB38EE709377B0E71CF3F0D0600988F42695A
-481D3C73C8AB83A6BA9EB32D5C3D359E12EA325E56BCCD860B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: csr10
-%!FontType1-1.0: csr10 1.1/12-Nov-94
-% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY.
-% Accents are added using t1accent program, (c) Petr Olsak, 1998
-%%VMusage: 25429 25707
-% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved.
-12 dict begin
-/FontInfo 13 dict dup begin
-/version (1.1/12-Nov-94) readonly def
-/Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def
-/FullName (csr10) readonly def
-/FamilyName (csr10) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -133 def
-/UnderlineThickness 20 def
-/XHeight 431 def
-/Ascender 694 def
-/Descender -194 def
-/CapHeight 683 def
-end readonly def
-/FontName /csr10 def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 57 /nine put
-dup 58 /colon put
-dup 65 /A put
-dup 68 /D put
-dup 69 /E put
-dup 71 /G put
-dup 73 /I put
-dup 76 /L put
-dup 78 /N put
-dup 80 /P put
-dup 83 /S put
-dup 85 /U put
-dup 86 /V put
-dup 88 /X put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 169 /Scaron put
-dup 181 /lcaron put
-dup 185 /scaron put
-dup 187 /tcaron put
-dup 190 /zcaron put
-dup 207 /Dcaron put
-dup 218 /Uacute put
-dup 225 /aacute put
-dup 228 /adieresis put
-dup 229 /lacute put
-dup 232 /ccaron put
-dup 233 /eacute put
-dup 237 /iacute put
-dup 239 /dcaron put
-dup 243 /oacute put
-dup 244 /ocircumflex put
-dup 250 /uacute put
-dup 253 /yacute put
-dup 254 /quotedblbase put
-dup 255 /csquotedblright put
-readonly def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/FontBBox [-44 -250 1111 864] readonly def
-/StrokeWidth 0 def
-currentdict end
-currentfile eexec
-D9D66F633B846A989B9974B0179FC6CC445BC2C03103C68570A7B354A4A280AE
-6FBF7F98F75ADF5180CDD505CDC93F13EE312CB03AC7B00C9C4622C80D74023C
-C1962BD0CAF57F3C335DED6A6C36110E591128C8861CA07DCA77CF521BEAB94F
-BB761A39789AF6C405EB8B495E41C5915360664D422344DE89DA844EFDD13C45
-CB82B522B9E7256916FD366B61290914FC63045EA3C05BBD24545CC5F4451E74
-EDDDBE488ADB69505C96937B35E2D8E7DD2A21A13ACF068469E92BC111E5E809
-0E489E43C83DC29BDB053C4AF9440B668638D0EB64D2976E6F7D6472CE149020
-5249A42D7DBCA06030F48694F7CA0B38978998765D7E7BE1D365613011E79D8E
-DEB631764D47D1F9663A46A0702AE1CE700ABAC55A77DC4472405C469FCE7CD9
-FF240937B0C74279ABCB8583B4D1CEDC2856847F4CC2BB267318451B79C1AFE6
-6DBBE53C3CBE648C7E1554964DCF29B12753A8431E0E0793099E24E698395683
-346C2A1535DD6D0263200E9F1B76843F139EDDD475BEC3EB84BE3E1E664EC01B
-63B5EC60E6BC15EC7134E83F445BDF0C06D3AFA7EF773B48CD9E51AC628172E6
-D4D4D306767B31219D3E545A0819F4429C34E598F8A758719E02602982D87758
-5FD419D175B959787D3707D1467AB66BF8BEAF14AC38E07F6B90BAA760BB3807
-F83BA97C7C696849BFBE8EF51DBCE39508F288CFCC9A00D3534B62F8AB995AE0
-A2608EECBB5C156F4DED7195DEE9F66550737765DBAEC14039CDA155A14D9591
-B7AC0282147BC3DE8ED0DDB1280C7A23A51428C250F859584BF2DFDA68E82E09
-3E18B41374F224F3EAC407807CE5159AC61DBD6D308BA0FAF841AA47D482D8B0
-7B8524840E786C67FA7583E00445EC83AD41C7B1E472A1D50B243B4CE011C530
-3906853E6C1BE90D5EA39263010537E6C648EBA7A2471E162690233160C16585
-0765B12AA469C3384607C01312874ECED6F159354EAE356CF33F6E4750AF8261
-DE2D8CE36A47733FBBAE7EF2EF05BBC417EA2438E51FE64D79B5A8B72B33D6CD
-3899F761AC46D5DB2DBC85D61ADA5CE5567AC2FDAFEDE35069E38D96F784D79C
-2F08341CD43C8383249CF414967A307CA70CA44119F5D2FA8F9D85A40D5265A4
-CB432284702C5F6C8A311472442903F6FF36A794CCC6E244C61B93055D0EB49A
-520AD5DFDBA656EF2AC36E5F7FB910A1A7F3A7E86BE78297F2F856262200C7BC
-B07257C36767EFC44FA6248C34842722816CB49058B1142501F2377EC92B1974
-EC76639145C66141E61F75AE7CC6E8107B4AA9B7005DFA29B4D4473EE59B61E2
-FBED510F5E296AC9FCDD858C67E9C1DBB1168C67BDFC99016B1B34B3B0F2666E
-0FF4724DE3FA77DE5FEA14784C4237F82F11DF2BA370EF0354529BEA522D190C
-AE42F427E8E8FD3316FDE3591D08201E5AAC23865E36C7A35FACB7452D90179F
-5CCDBEFF01A02D952B50EC36A2CF9A0A30F5C36DB4BDB59AAF5A02040DE14123
-474B7CD72AD9B6051B2C83BCDBF4CF43E626CFA46495305810656C24D6187FC5
-1F29165A69077587677174A1528B05F585674DB38BE0A5C8B360F09FD897796D
-5C805A6ABBD010D86EE2AE24657174D4D6EEDDC9A7A4D050513FA40D26FF3B35
-DAE9AFD3749821AA86B44A4B073A67DFBAEB5C2E30198E883D00CCC22515D2FF
-ABC289CDE655DEC992D480DE31F16418D13CA057BA8E9B22728CBA7005E64180
-A33859BCBB8B8B3177B3F3EB1DC13E232F1B1FF6DC0482148C9F5EF254F540EA
-D89BBB09A4C3CAAD213F42F9D4CF57748F457C94DF8063A219E1C5DCF4C788F0
-30D506C4D789D6459510B9C7E3AB0CCEEE1063F75505EF96555466724D3FBD10
-BBBBBF32C1ACC7C13543A233DCEFA530A83E16FD42DE434703DDBE0921DBFCF3
-28FDF7BFEA972A8BA764F5BCE78063E6093434255E6C3BE4333BFBE1B325BF33
-ED8166B20E4E57B13B956E14CF9C88CB71E2498E45EEB0F144C46D2ED300DF05
-32DF4638AB8CF5C081E1AEDEA132362A53B712B4DDF140C56A2ABF05CE9EA0CC
-B76532F1857197D4D8DFB520BAC2D90B8839F11F5DD3BEE36B143FB9D80D79A6
-BBCA8F9AEFB675DCE7C0E5852C0FD399A0849EB56B488D0D67F228F93CF905AA
-69ABBDE20459D5E2C94E6710CEDFAAC1C15EF356997A12C2DACBFD9BA0526D38
-D2BB3BCED49F7CD15FC462DCC5BFD3D6F68FD45B96C23B33CEACDBF0C45788C6
-B6576591FF83A13DA0660589F7AB542C1FFFE3D307B43F4FD5D9751E1AFB6B6F
-5ABB927FC662DAFE37789B0ADA19CC6413723408E70AB67F1FC84286D52791E6
-12F7E3BD77CBE0A95400DA9BEAD85A2792554F2C5389CC2B8CBB3FD1E4F513E2
-0B47645196976250B5D680F1AD34324CF6F532130466ACC825DEFF64DD821B1A
-DEC09CB3A156687E7C3D32DCEC5A983CA2FFF2794B9EEBF6B8ED6C0189590C1B
-5C3ED7F6C71B3C920C03A2BE7353A5D46F3E5A19665A985CBEA89DFBF8EF0AD0
-3443DA81CC8CFF5186EC4B731DA3E37590C23912562503832AB1350298C532CB
-0BA75432F6EA6386DAE14864E4E83359656DFCFC6A975DB6FCA7EDC8E46D49EF
-02704D39F9308332B7A224A3969BA23AF2726A98F74CB8A1C788AD9C34F1AFBD
-8C3B8C71768FC23002F24643B61E70E92D7A820AA27D1934D9FB656BCDBEC6C1
-D7E826197A4A2DC64BA0685ADFDB96D4205C4B5191CB2B5469537EE8F4D4B4C2
-F0DEF0073B29F61008426B9E0E75A258AA90694C2BE86989B16DA3E01AA3AFE8
-67B546F5A94EAEA5BAE1FB7D5117FD838AA56D85A340F00826B205DE894516F3
-A0DFB5EDF0A00ACCC72F3436A1A30F58EE9298E33346F4F37AEC47212EE9FC99
-E0242D74F623FE862160F5ED6C4B26D22375C6308AE859F9C58F101DE58A76DB
-83EA7E3A54EA6BB8949CBD937D097BCBF264DE55D5F3BD4C2D4F2793796662C2
-C000A9F702CDED849D53114EACDD4AC7B0AF3BA0BDD01195488EB6C3471BCE7D
-7B2D88993F454DBD380993AF43F95C8048FCB199CDBE0B673D85A76A89B5C83E
-693D37248F1AD12D301E51DD4F42275BA825133E8EE29EC5E0616EFB870AAF76
-7C6EC45851799FCB44F5A7DD69BDDD8CFD1DFAAD1E2EF294D964237A9C1A307F
-3558137D87AA76F8F2AADBE5F814D44FA569A1E514B28BF8915A6938F5693984
-9D69175C949BE87AC2F8034B4173148F54168ACCD77DD3BFC3FC8F0D87CCD015
-9B51A0DBD22E87BDBDE1AE407B2DD30C9DF6BF92B0EEFFB9B9E020E782F137C5
-6CD55D8DDDACE55259898203D26142127CE59F5174B6E239376DE2081A801E7D
-1D8F4D705B4CF1ACE3AC96A8F7015E8A22277A8E2F963F311F336CAB1F95415B
-B03270B607E70F163583CC511B1AEB088DBA7AB389C5954C5958B10696469BFC
-1E76DE0F90622CD0151A15BE52D39BC642D55029B52F01B80F3EE244C9C53C3F
-7592A57E48586F51530B437AA43A190331F61365A3EA6B515B9C5BEDB30C9016
-E844A6DC01CD89586AB8D15D83CB302CAEA04E25B62EE5768FBF326CA8A2B0DC
-876E71B5BB4CA7288684C8B19094D1CB70D396F42D8D49213608FED657DABD22
-48BB600B34DFD978AB95782B7876E31DD639CFC09A29B226622D12E93BD6BAC8
-857525BEA6F072967808C0032A501D34B42230D915A6209240F58DFFCACE028E
-736D09FF9663FD014C90620695689D9FAAAB6333173089670193F85EA68F8A0B
-EDEB49D202379C510B1F6965C5656FAE1E236840FAEB87306C291F67AF589DB8
-B9A3B864441F9ABEDFB5E2FF38A9018C8C26BFFFCADCDBFA5CFA0CBBA02D50E3
-0DD7466DAC3C29629F5B9C7066967D61606F744D53C675DF1ED4573EAEE0532A
-A08D2686BCBC82455FF19C585697C7D39FD08E71B5C518051348ABE67611CF8A
-86E2FF7F6250425C036CDA20ECD0014D44E3CC946DF2D38F8D4BECDB3742463B
-1EB5E00F47FDF3770FCD6A8F143D2B1A015D514C22C55D5DDD82B1A52ADC89BA
-533448AB558D2C3F5A6B82BE896009DBD9F22F117EBEDAF848864FCF36BB9581
-D1BD608E0BB52B5AEDED8A888517B5FBB2CD8DE86DFFE2F96BC4338AB776413B
-7BC0403F5281A631CA1B1A6C64E5759744387D049975E6F94E86E175FFFAE8B6
-2A5298D0AF042667DEA120505B1DBE627748826E676727114D1890052E57C9E1
-110D8EBE9018BB33DE6107A9700E6B4C5CF62105675B2A23CB40EB9D1924A707
-209B4E469719F7F37F9ABB7FB89A418E75DAC9D457C537505DD69830615F857E
-2E8E08701B69FDE9C26B8C1D5A77E1BC65C0BE9B872C572464352FB4D7C9200B
-D160BD33327991718C3865F21E5668107ABE1FE888020E0D6AC9584348453352
-7100738D77DE5BE5DEE88CFDCB00C833B730A436FBC5D7B932DF41196111BC73
-DC7F839E1A34BD72D3278E257AB0BC71E284830CECAE28C129D1A70B2954A846
-407BDFDFCE7F7E548AD7D208DD88EA1558819F7875E3E23B527457E28C25E134
-9C2461C5362DB24B705FA00B5CA5417337785CDDFAED65BA193B9D55BC1EB29B
-17ACCABDD6204B126D5CF9F291FA29931EA55FEC69A9A79A87500875791EE36D
-3C5196A3C0D52572EF48C7CE18A2736280404D9E1FD6562FC97F2458D1511161
-E627A3D3E51A35DFF4619E96280787030B944F3E265DF324D8F12E907ABBAE28
-174BAEB1DAC1B7F7B898C4C408691C5ED405EDEDC5233A438B2165E86D4FE06C
-D6180D24C2162D74FA743CDB490D86807499DC6321A111A6F2AB13263BF1A22A
-12E331865DBEAED52BD1B51000AC133C7AD1592736A163D76FDB12F4E7699A5E
-2C1053B747F7B58AF0C4527837DBB865F60648002D18020B290EE4DFEA4D73AD
-18CDF7D6479CCE4313C69FEFCB2E5AC3017E420307C7DC26912032D2C30C9368
-E7CF998D4244062D85E2FE59A7B414D945402D36984919D5098A6070DF406CE9
-6F68DBE2B959A7ACEDF2A1F92BF725CE3A71848B32B9F4599EAA4BA0A796ED49
-8ADE5B0DA88E3D2E1E7B385972120E543DF0816833D12748EEF0CF388D8C41CA
-ECE2C65E1F8790FF18F61AC404159D90CF252A9F48BECFBC3566D1DBCAF2EEEB
-2E90B012B8D078449C4C47FE1BA9211863C4A1292428EC5BB2C45BF1C2272ACE
-E508A07FBDBECAAE35CFA84579525882FC928DA83E5968CC2198B70858ED9CA5
-09C09E3A975CD2D32720163CEEFA565DC53C8AAA97B937079039BC6C0E5CD7EB
-7D7E39CE93F4FDAFE37DD78E2C15811FF330B5E78E9125739AC1397F3524B65B
-99BEAF36F82E82D5753BCE45CCA46AAFFBAF896267898F80D596C6FA04257DDB
-C16D00626A9E7A8E9D1F73FFA7754F6681F80C17B20155BFA713460BC1A2ED83
-E728F4E8926E50E0A7FB2A49074348DB019FD8F0A5A285EA601462F1EC156EF6
-3592E84F08BBAB9E26F58B9897E0D9421889860AC6356EDF2B7A6EC8056D38AE
-B1CBBAAAE7C320CCADB9C89BDAAF5E837AA6D1333B777941CAB82327E71D96A0
-8E88C341D8F28EDA664FB6A497FB0D04529073A209CC8A1B372DDC604E8B204F
-C39BE591371AEBF5FC2BF2F98C50449E20ECC79417A6BE08599FADF54122E480
-66D925543904389039485DD94DB6AF85188FC254F3714D4FF61A9B44BBE8BF36
-6ADCBF0B2C72FB730B65172CCE433AE4A9039DA02BB3FE6A6C7646C4E2DDBA40
-AB008E3663A066476925825BA73DE3CB1C171E3FD9463B81DC3163608010545C
-7BC71432F17AC69F4E225FD19A963655BF676BAF0BF445499FB22D718E06E931
-5595733AB886CB555450E1D8FB5688ABB561F394B313ED1F58BFE51FEA6FE83A
-7E229857DB8DC88D0DDC442C49FB4299055E42AE4F15F51292E91EB56826D013
-EC3AAE90DBFE46414A726B4CC13AA8B3BBBE4B873C139C0D536776F75EAF51CA
-5FE4B49677D97126E03397C1836827ABFD9D98C94322B82D8ACEBA4445E9BAA2
-848A065A1560B16EEBF70844C3CF28B2C8A1C9FAD52B3A6F6D5F83A1F79C2C3F
-9C55F4D084BA8B89A58CD60B07760D1AD44A84EFA268CCA16BE8E77FBB70C1D9
-73E0AF44D42230CC54730844BE451A55187BEBEF420E11F547C05AFBCC5211D6
-5D6E1E9665521E05DFD24422D1C5C818541FA754C4EBA94F0ED136E44FE68DA2
-4CB091707F4031379D19CD5D955EB4923C97D7A80F7847E6B60F8942D93404E4
-0ED419D36838E6BCA782BC0328FD1158E8F39A41B187D27978F306F434F0EA02
-F48B7E065113B5DB42BF5E6AE5F7863738D7D3592C6C880AB13A31D5B87A2B10
-D707242CEA07F20E0F71580A7F63CFC2286818AD317BA59D47E3CD321570A99F
-AE289895309A7E5B7E1E05FDFC148C509F3BD2A9C35A0527C15B0417A35C959D
-5BA801C03846EB0416C59B28D48766631AB8FAB647094E795B6240CCDD04DFEF
-E238848B5970CC7BE66C9816B2D93420BD186C95D239A6F090B450F9F4E89368
-EF28F0691A4A9CCBEABA4EEDA5261FD53702220485BB3DDF572E07EA36FFFFD2
-30B7AEA9584C15BC4616A8FF30BDC971A9A7BB61AB918447AF07606AD10C5DF4
-DE1BE6A8AD5B0718AD90F7BBDA3DF6B13029A41A93DE6572B14B89B09B199D56
-5877D1B2E74FAB8216F3B5720825C34AAE5523DEB487019DBBB8450BD14159EA
-C4B89634E985FA1E3E174313B6BA3E6688CE2A86AD96DB5FA3E816CD11A32E4B
-199D9E48CF8687DFC19E9080EF09F73872A1D6E906BC4BB458F4F905D1B8667E
-429E286D10D994E2327451244E96952839D9F937CBA15B06163D648B18E45518
-F76F081F73EC03DCC069916D7584B26F0CE1F0ABE2B3576DC40B4C68DF81D798
-35B6326AA7FDD29F2B9AF4ACD153F102B37CA813D687821571790163422FECB8
-7ECDC97A4B1671642505DEA334666EC91F7138B04FF9443709BFC03B3C6A956E
-F25CE5635DE213F1DED0C6E5FE5D9F2FCE36D8C680300E03EBF5FF096C1F3A94
-00513AFA8D0330C6D282499ECEFF4967971034748E2FF34B6CFFCDB16A6BD8FC
-44E991F65428CE04A3691BC6312A069F1A937B92465DC86E0CBB08117FABA377
-DF85B7F83ABB937BCBDE037C1386638E34DC07D45D4E2A90DBF8A8A418EA9345
-8C7DE6CE6620E7BD173DC7FEE5973E4B42D8EA8BBBEC048174BC86B77E64716C
-AFF29B0154E9354ADF68BE019890356E69D5D7812FD59ECE7CBFC65CA8E77F1A
-D69C84673DFBB91C96786B70A6484767AD1CA5BAE4CE2D39DBA626EF2CF58E5A
-A08B9BAF117A1756698E4C24BCF71D266D4733F9BC961D7A7267E6703DC6446F
-B11C382759BC5771B50754CF6325FAED452F798871F059349CD33DBFE43D073A
-89A790AFED84163E3D7B15889ABFE2BFED5A9705E8D081454001C313F9A79A55
-158A102E8DD5A4971811F03D7A4C71EC7D97D74FB238DF6A8C9ACA0BF1911CE9
-5FF2912BD1555966CBBA6C433C7A6721277EE175E93F6526DCF8EC76144B3198
-7FCBE92DE5D4123836D6042B144A57B02CB140F6A20753C2D7ED2449EBF1BDB2
-28D077DD06EB6908CDDC1D9DC7EB8EAA3AF67CE6781E35D4BE1E89C22DDA1B48
-599754547362595D23B2A659F5540223B4ED28877CEDC9E463A80EEABC380BF5
-3F83F84D1B7B48D2F583D530A5DF646C6BBEC746F393164AB5D3C69A00214A59
-02EA5362FF07CE4F0BDC06F1252EF1AF16D16D57940CC1C3721A119E3580A4EB
-D8D8AE59625A078EA7F64CB7C88252B5779E7CF6954FF5305A6CC4BFFCBF2256
-DBBA7559FD51DB69868242DBBA909D472952EE59F59FD4B81DEA3F9C31D65CD9
-2E3D7674551C793F8BEE7418C5CC0B22BB516BCD037E7C06B3742B9ACCA739A1
-8B51AA1F260C93CE6F8780BB7630879C4EE216B5D185A59E6D42F77FED7F26E4
-43F14E90A752DF9D22A994C5B3B55544A0BBCAFE5BD5A812FD6297C1BFF1C258
-2BF06D93590B918ACBE661B6DE1A5A74C0489870D656000393CF2AA83D83BC96
-962231E52076EC7F4C5995D2D38FA840F4A87234DBB464E6E1761782CF9C1118
-76D5FC5E2C89D1A226DD2386FDA561F1816382C04F111014123DFD49608AF987
-2DD22EBE9C267D5F6D8DF516B9F4E2001F564A6DFFDF248F1FCA6F25D6241EF2
-CC57E0EC3D3A7293871BFB84D95E366AFE2131781F3906C0809855D25A56CD35
-D8346FE3D9E69C80455CDB72018A5D0BCA63BA569DA9EFEB69F8FC9715BAC136
-9A7B65429CF8DCC7B25C5326BFE47A42EBF15E5F48DE495E40CD240193506F7D
-A7EBAF871F3BC6174ED1DBF12A3EF450F834F9D3BDF1575DE0C5C5C7D68D7B73
-4BCF1396662ECF12C56D7EB7E516671CB4332CFE4D926B22EADE00BD78F26D37
-A477671E70BDD6D094217943BD58C1E5074143DA35FB83564348A65DCEC67B6F
-B084FF63B779DE5D7E56A42052C158F771B2CDCD69EA1F9CA8BA5EABC547A20B
-09E1BD76AC65FF3845569692AF62EA55A8999F1C1715AF207805CF9F6DF97A37
-4D17D0D8627D296241990D5C2F624EF53EB575BFFBB2E96103B00897415B4B0E
-DE3CD500CF667CB59425E0556F42C696730D0C76DB3AC4D91D596CA885719C0D
-CE895B16BA2A2B3CC11E9924CB17D81625A979F04442C4A00CD7900CECE8E4A9
-FE2009615B85FEB5630156FFE3397473984E7E748981E9327037CEF6DE119932
-B55ED057303CA48A59F270D7FB479D6FB45303091DECE506735B218EBC1CF14F
-9EC4BACE5778703533120CCBC42E57455E25DF2C931DB53ED9F3A53A5DF0BC6C
-277BDA971E09F57550B25F362A1B404F7F02825021F796E2C0ABFBD7F80E4D17
-E476FA5B10D85F125924203536CBA5C3D7871F44E83AE2B944268626EE7FC067
-5B6E56D0D068713D397D756FA9119B576EF0241E7EE1EFA9EAC62F3028AD8BE9
-5DB7865CDAFC7915FD4C34829BE0279EE3439AFB26FFA59DFF6D288F2E546690
-529161D76DCA67D3C03F55701FA773A8C30DFBC9F52F4E8C165D4DE48C8842AB
-B669AB69DA331903CE9B6C75B439495A5815334485B1ECE90BFF92A2DD48BDA5
-27A8309373293AA65D32F9426BB5D30364F3893346DBA26F6DAEBE8F5F04E4EA
-437C3CE25B0DB6855D08CBDC7E0C5668F1D6ACAE46531B92C7DB47CF69BF1112
-334F52032D4FD716E3581D309150CBFB9C8D6151254554A02DCACDD23CD9701E
-01841DF6D99BAA8F89D5B01C0A1CBD8A3B806185B0699FF8106E793C479166AF
-069356EC9D461AED4B8E6B445F282BCDFEA868A0671052DAEF6C839F74542470
-05678774EC90E0ECA5A3F64B7B856CAE487C26CB4395E510F2F0FEE7A58691BE
-A93285B21803FD1ED0516BF73A0AEFEA574E41FC72E293CDD4E91AC9E52DC1A3
-19DE629A1EAA3E2FEED5F89094F7A6EE5464496ED05618960B59A365CEBFCF0B
-325B51B43E6520AB43279F13E5B47134D97ABEBD82E734B008E3AD33EE4EEF18
-F91CD50DADE7A68F47873DD4B79FA9C2AFDEC3300DD8DB87C951A636F18A1052
-5BD277DF165E464460BEBCC7108E2CC9A503E76ABDA24C6A4981BD1B5EB493D7
-1A7E7E9D596095B6B6C22690A0E82F9EAA96F176E2E189CCCE4810D1CAD04652
-9CD05D5B7094852B90E94E9193D1045E7FD4059A0382AA6F3A68DB545A2B7E5D
-0310BED4244217F340CB9AC13DFF7330904746BE85958AEE2732E9C3B61925B5
-BEBB29BD8C0C1EE07A4EBE3486EE9B4D2B1052E368DBECBF71A960ABAC31E7FC
-99C171D55C46BF490C16573D2742BE7589A579D37CF938F9964D50DF54E9D2B3
-BD17A08AACF167C0B3E810CA115B4F6EA13A959E202DDA26A9825720153F42D4
-B2570B453EC57BAA64A9929383DEDEC3E35A2B3DA837A2B191F95705D1D0BE22
-5001F06A93141FFD90871FEDF481DA1742947243CA152034F716E9D223B25F16
-9BDC695E084BC1497C8EFC7811323BE99486EA1C341001A47F96CE521FA3C95E
-3513975D211DC3D985249ED81FC88226BEC3408B70E0085F9BDB3110AD9A8649
-D42EBE7C07727C2FCAE4C075DA6E5DE41FF7BC571ACE37DD587E736D6B211FAD
-3EF0ADDD425C4384D3081A1D803EBDCEE62EFE2329A19C702A7A52C2D3A55A87
-93963A0A5A6C3FC2D17A24EF41B0B106DE3B51499E88E46CB59C39F265BCB1F6
-3785B1394EADE83715A040162957AB41788BCCD990484CF14ECF85A62EA6D6C0
-DC30CA753BF8290B6BF5668D6B3D38D4B0A2B490FA5A6D12020FF6EBE50AE815
-51ECE7DD40D82C1DE63C09FA0703B872613431C198303546F87A1752CA50AE2A
-3AD1DB4E5B95CE5939E09DA6D1079008A273E42F9C92AF64DF4D361CE7C297B3
-03EC811065FD3893E8E4A8F991F0C5FC699847D0C81CD34FD059E72F056C522D
-770C4D591B4139F7FD2D8D2B06FC2DF233239382124A72B3605B221DEE67E51D
-5ECEB932D027C388747D7768A6011D53BF1E48376B33B94841E301E821E12771
-9D74F539FB83C5CA508A4DE101B369163919047A3C7200F74E61EE3AC309ECE6
-35DF24D6FB9923217BF2DA47508903CBAD039500A74BF8919F1DA10BD14F37D6
-8ED96790EB547B67627666C307852F48C9C409ECBBEC1B1DCD80A64BBE25307D
-1E453700303F5096ADF3C1AE83117A7A648F16782DA9251DAB5333DED0987B25
-C31FDD9A67106D6B27BEBDA09F31E348410693B4C692F16C9E3201A15CC63636
-AEA5AB14A8AEFC118C97760A6A43ED87B38B28871FAABB4D7DA11F32FB25EBCA
-10EF57C8FA807DB3CFBF7014DEED2C8ABF6423B383E80D60AAF9B78007298562
-2E2ECDB2CF5BFE3CB96C16626739C0D9EBA4AFF02DCCF2C2C58B16681E130CBE
-CCA230AE2C06F1BBA2F0A6DEC7FE5441593E15F76220ACD54533D77719E40952
-391E8D21C6F4BB4B37CE6AA3BE05C86F7C3D2E7FCA566304DC79FCD9481E5BE6
-83376E04115B52F43065993B716AB8C58197BD0E79372F1C709DEB48C2A615E8
-4201C481DAA12FC33E47FCE85CEED9DA5BED08879E7806E771F40CD9AC12662B
-B23F86E13F8C33810BF94BBBF251465C93127FE60148E637C82757CF4C4DE200
-6EEA6AF78E4E2AA934B3B1FDBCE185D511BF9DAFC93DF6D3C6B446B63EF630B6
-23BE65F11C018AEB98D6BD89C18CA5E197E546BB15DB82F0B1AD81126E768FFF
-1982BE285B7822DD1675C3C5E8455F74D54219654F5B39026A94AEE60C0E1D6A
-853A6D4B555FF13DC63F243CF818E771EBC78092A507728E39A9406AD123DDE6
-B2DC4307BC12C05E49E22D03BE60D375F5FA8C134C2852E287A08838B3843667
-DF3327361E49F1BFC9C60F99D266C864BD5AC7D433B2AB5AE3EB71171168A006
-FDEC465A57840942DAECA4AA90E559D639DA434AB01FDCC7AC7C55BB43724B99
-F2F4391DD3E8E900A2163EFC4BB8C35BC8DF0AB0E70D268CC58B70139E109A12
-7546BE35BCF0E2A51A65981D83145101CD7144BA158BF0B905D3720AA3A7B0DD
-785AA48D34E645A6466D86716AB76E708C233E68E06FD06D0E599875F3163281
-5085CCFC30692D1AAE31AE1BFDBBBBD11094DFF0DCB8B0E74220A954706D946D
-2355C4ECAFF1CE437D705C2D1446709BED5C06DDA5B537E15C190A2E7F21EBF9
-B99A98541E2959AE80F361526993A8FC7C6AF59E15CEE620FF16FA5D805A5CAE
-7EA1679DF550C0212515BE4F3A372BD3B3FFB6040F2524B824865606C0BF386D
-EB1107A15FBB9EE7853E517F06F8F8596FB5AF6BB94D8FD45771A426E08B6719
-5DE6ACF4C682FF6FD744B4E8FD0BE417BEB79028471E783334020327E4BD3D37
-1A2DA8D0FC688A1FFDC786F6052C8F925A8AF83130A35783AA018B580F4C9CD8
-5963467F7DBB30717A98A2FD744FBB26EA1556117A27D6E834D2EB0C2E13FB1D
-4372E9A3A95C2C8FD0F4D39E7FD9ACD6A38397D2EE4D505603652BE0B6D1D353
-E96CC49C0BD7ECA5CAADE2D522EA03250E807A3AED1EC6BF8CB82253A88EA733
-118E0FF10C19F78643118B81915764E22AFE9AE43F0D5003A99E5F0FA2BF4E0D
-DC23AC76B591F0A88E70979AFAF5ED180359B993234BC62BE0F61826597C4721
-D6375E21CF20AA5B0DC48B3B22A9EB5D0D09D3E4B54D3AC096AC3509E5A8DA60
-2A5A5B753A38F2AF0489B47375DC8897B06F5CD6163F37D0A1B9F894EB7397AD
-751F9A8677B0682D95BE4CC20A0FA0187C565DBFE2F295CA0818548BD6C434FD
-7F1718089CE574845F36CEB5791956E07DEB5D721231A9AFFEFC39DC18522EEC
-7237A9DA851A36432F578E03DD0911F90F85B0F3EA0D2B30621CC8E0B775991C
-2E6947A6B7783681864EE73C609F8DA0CC0F57E431B09E5B4BDA4465CEA86A4B
-9DD2A849FD621AE04240D719E54A07AEB2C53161DC3361460BEE4BD617AF9569
-7AFF56F5D87F72C52667252ECF93FDD2E1BBE075B364C28CD524BE083DB0434D
-D9C0673FADB2D4C62CAA5EDE3EDF1355B5A9EF384A9D9A090CFDA9A2F0A6717E
-CDB21A6F4D0B822E7F69E4DC23C28CC5FE083A1FD9294797AFB8D79DB9B56DCC
-F93BB7634BADD83EA29CE1AECA33B9619F47ADBE17CEF45F7DE702A3745AD232
-EDE706FEB7E2AFF7B1E6ED27FD3C043502B31C1EE703C54FB59B0BD0C7FBC0FA
-0B50B97A855649818C46756A764489E232C53D68BDDD197648288E484C3CEDAF
-72B2F1F91BCABFAC85DF4EA99E298D386975830F9AC1E01C2D828EE7051D5D29
-7A657213983073189E270933394A4C83B0290080804CD92A1A59AD4CD552FA02
-1BCC5C94226C9CA840ED4EE5FF449E71BD7A87C0EE8AA7F38749169BF787F43B
-B096BE4D0F25DD85F56DB4D45A16C05FDDBAB9C57A90FEAA7BA84337C589E941
-513AE4B76808F55FE2DE5748C333E497F26BF03CFA53DB0BA9541C93C0495B07
-F37DF6F494B6DC33680DCD036A1474E194F89C15BA2544D1DBF9300E2AF29721
-1C81D342FBB437E06661BDF26719E80F7A4D4B2171FCDCC8886F5BF0D8872D7D
-6CAF3C3E7536C47D74C96488235DFA6A71D40C8A52F0C687292D81A3EF22DE14
-AB6DDA63D7BF778EE1513F04D718544BAF29C652C78F42003E203A0C2A6C699C
-26F05DC0D862834E1B7973DFA37E900B1D8C02D2FAA466B55DB3AE15BFC242FD
-A8E91798051A69167C46447532F2C19E0B72CA676886C358D02084C59E900276
-3FB571207517301B829E4B8892AE9A1158037CB490FFC2A9E6D4A4BDFADF39CD
-A00965E73B86437ABE1B40BB3E57BF1CCDBBA674DD7A063277573A30DF184149
-94F616E3628CE274AD48C4BF0B3247121B3E6554CC25C6712407D54E4B1BEAFC
-0CEE4C2A0CCA73A2B95EEBEA627D98895AC198172931395C08846B5E27600FC2
-02139782D4363FB9C6F644C52E937DA41035C4545FCBCA1C44AEA6B389359F90
-6AFC1FF5D6B2DF418FC2FF5FE25FC51602B51B1A81B70B98F62A5C6777018824
-6D3216FA561119D8AA6BAB615F5A61F612FECC52590E7FB9D3663A881D47FEA3
-DAF2A103DF947BE55D89053CE5D371A69F9235617E0E751659F744225EC5EF8B
-2071FF985149DBF89A5ADDDAA8B4754F61279D966F14CCA82A67021D143316E8
-5D3765164DA95970F90CD8946B2F8665ED634E1FAADD71FCB980B36F5DA82317
-2809CFC5FDB477C5B8719194E3FDF85C754D519CE08EC517B0AF9F582831F479
-EF1FE865C65BDCB76378CF71D9964B7A4431D77C4681D5468D321C159433D0E6
-8FE9C3E459A1A42F26BE104201C6D4856595FB2F13C52F1FDB1AF5A5E46F13EB
-4B082425B5467127CC680658B7BE1391D8A41D2865DF4BBE7F39A41F08F7BB9A
-91F4A111F4D999C4E7848CEA93DC55037170A78EA15426B2FD210D683917F1AF
-63AD61B4FDF5D75B3AC9F25326BFD74CCBBAB667875F9F30FB2A3E24FF35FC26
-2B4365EE847153E7D5ADB51680A9EE5DBA9520E17F4EC6A6D6E22142CBC8E19E
-F0DF0EDF0AD5BB10692F58141AE0DD199CDB8058C85DFE80F72E47BFDF43185D
-C5AFFB77002F568E92B2604C4AD78DAA2AAF0FA395AAA138860D01D05D077DE3
-E37214109954286A218B6F636FEF3FCC5EA03B7C19C051F46DF5B5F345F5F344
-127D768A6E62B5014062337BB4A27B89B0F96EF1B7C90E72DB42AE784B647A05
-5439DC218CA4A60D90E8EE1CDF7538D962768D434CE9B1002931425A2EA15842
-2D99933A4242E7712833819AF98B10FC392F5101594FF94CFC8FD138A03772BC
-CFA4C0723A614E679701B5322691FD62E577CAB7E42B4B94E41DC0BD0BE5871F
-320D101D16B8FA56937B61BE183D113A9A3BFA8B439A73575330DBEF9B696517
-27B6FEC34B1A26C130729D175A2ECD8F490AEC82A0CB767E458C409222607431
-A95E0C86FE70C8EDFE443742C3B2A4B5859A2B7AB9659BA608A60DAB9D98E40B
-BEEEACF01CE236EA578B3FC5172E9379DDD744662E663250A0367363DC51CC42
-CEE635B183CF8E0EBA4CFB8873EDCD81CA6F4F35CB044A537DDB3D67BBF682D4
-4E70AB3EE4E8AA6760C9150E788933944BE9CD43FC7D0DE054B460ADA0DC197E
-303A7EAB17190BC91F1B3121E632C32EFFAB189D9F9ED4AEB6E0B73F5CBAB5AA
-8ACEF78486ABA8ECBAA81FC1D92A52738FBBF432718C9527145B227CB1AE681D
-04E7DFC79FFD36D138A49DAA8AEA6E8604BEC3E524CDB4F82F6E9904614E38F7
-892BF46301661CD162B5DB0701E4FD274C81E5174C57BC073D0768F003DB008B
-E98CE28AC2B3E650673DF6B6DF863ECA649D5B296F2F2C06A68F6059BDB0E285
-BBFEB2D301C89C04B995A65E0D21A1C1BDC712A94C613AD662E723468D0F2B8A
-88825606CE45C06DAF4CF57BA84BD8F8DEA9F4287EB9B782F1CDD9D7EECF5EDC
-635314BDEB9E562CC65D625AA81D00FA649BEEE01523A2C46D8BC09B71EA3B8A
-9E3E555BF1E07567078FB7F243BA068DF51FC2378E86F07A9E29DD38DC8B20BD
-218FCB3883FCA2BF5F8E7EB70F7866FAB5BC9394E8FA55EC3543A2FE67C22ED0
-3C4764189B97DB5F7F7667B255ED8CDB7018BEF24DA2A32116AA4AAD5E14647E
-18918243CB662330BDC5B2F4B7FCE449192D27254E0AC1E4358545A9207A133B
-E498FEFFA504ED7079989E2C4FD4A01623AA212820DB4F78EF9B80A9E1DD625B
-9402DB67CA0B2D18850538E513172FA398A418A6F2D11F7129693FCBC765DFF9
-B5930707E4B15F2BB476B23F6A457B8A61C2541709F4E57B8B14C59A76F8F4AA
-DC12834569A260F8DF688C3C19595218EF9F6E474023CE28A0BC2DF85E635660
-6DC5642726AA5F977EEF4D945FBB64815A79E4FBB5B201D0CBE8384248351999
-217420FDFD83AEE32E43F14ACBFDABBF1AECB00533DBA3D85072403F80571D0A
-B6715CDA3F5672DEB60DACE48669D5B4B0BAF50B01A32B344CE3950D217F4EDA
-821887CF9CF38717F497E3037AE59C665C77AC2AAEDB934098B78C8003AC2567
-2B1734796B0A41D6D795262C3FA664535FA150C21FD241C7E4EBF507978A0B44
-4576BD81E79AD01E4DCF78FC0E58708D6D1838C7A699AD9E990DFB6067925E33
-832B537FAD0E84A9EA7F79141685D6254416AA369E9379CEE9C5578B4D558683
-E0A2317CE41E73E8933249D531998F63588127A36816B84BD96CEA56D7AD2AD0
-F1C674B8EB17BE298CFA1C961B442A46BA8485DD4E3BC2AB1C99FC1063CDBDDD
-AFC2094B20EB5A774F0A73234B5DD2AD8E54305EDBC6C2F9689C22E2861059FE
-492E0B31F02FC8D05429332A2F6107FB20521C35916C72B14FD6BC320EC5E868
-2E3987FB1C885C38DD75C82789693317BC00EF4872F438FBC18BB6CC571D9A41
-9EA1ABE41CE832746926217121AE4F0E63E734BDBCD537C114D65FC4BE6AEDE0
-4FB1D26070EC3C10C27E5B31F05B19055F850091A4582EEDDA3842B619B9DBA0
-A58726F3A3DE4491D49CA49610AFCC9CB09412A1CCF53A99BB9496005FE9C496
-E1D5A085C4FAFC8299FCBFFC471DF46CA8741E4F53E9B24EBFBBA41C72A49820
-5385B8A16EA34163641ED8568C42E3D3916CAA40046899049124A44E933EC80C
-276E998B5CE81DE827CC902DF319FBC56F44B13D589737AF03BF1930E345F173
-9EF71EB5BA4DA28E34A661681F0F2B7A9088252D3D5509F7C2B1AAADA137F8F1
-5AC6C8B5ECFA3ECD6FBA5756D99EB5AAC13C6C38C7140DD51C1D3DEE1B0A7CBB
-46F9E73CC57B533D88A22847BE7C3BB7717543A4A1B96F7887CA400AF5C19CF7
-50C121CFF3507663ADA376E804FC477DA156BB96A519DE066A0EFBF233621D78
-FA52E7B9E3CF963F9433FDB31F925195D803533CD51ADFD4E354F380C064BC27
-8514A32D87B663A1E0A478ECF2DD3F415A8552E7F634327787473915EAB5F1E2
-BBDBF60F60AE733B742442A79DFC61598BCE4D54EB1AAC86ABF7D5DE012C5F5A
-D3A4B40CBB61259E7A0F7FF063D8E1D6593B46105B948B68C94D07EF26A17385
-DAF432918846645D3BC90898F07A50CCBC1E75AB103ABBF461D4ECF3C7C2A7FC
-3B8C2F401134AAC2630EDC580B8086E67747C517BD0F5C76386D18A52E9F85A3
-1C894AB0E05FE097418C8711D77634C76F8BAC3425DB3456CF5A59645D14E48C
-E1CDB1E1410B2B2E28E10F4BBF71AFAD3470C78E14BC2ED1D47178CA9E4F03D8
-7EFAF2417669ACDDBB6C51AE64F5CE755C89392E3293D9E96CDC08F9AB41CD06
-E983067118FE93E786C985B5D5F376AD6DFEAE835CB6C7B6E730C4EB92432C7E
-57EE24C8BBF064A15FADBB4D8BBE10F14628F7CEB4D466942D6B856BF639DD0D
-792E2D86797BE01ECAAF6EAE9727B818F4B013B7C54F5D4A81A4BD6174E5C522
-05FE90E3DD8ECAFBC5E24657C42A1CA7CF9781A32D5BEDC8ADEC8881865A778B
-795E212869B358A34F160AFF29C107F97F063C21B955F0154D06E827D57178CF
-6DC93EFBCBAB2E4472FBBBFED0BE3182E926DA981679BC87858DD515C08050F2
-4C6DE6E39C6674A5681744B2509544B30C0CF248EDB780C859E8F5328B46FD15
-DD8D3C7CAC2FFD0A34946DC70A3ECC3D7FEA8F092AA1CAED372FF1131081F782
-15DA7CAF3F2C15ABF66BB0C6D19714B1705929175C729360969FEA4CA76A1B01
-D55704A50120D54771DB1D51B7851BC504E9B6A1F9E9FFF3130F322DACA8E771
-DCECEC44237DBA9BAC1C0B1C81AB8B784A3744858E2C779E20951E31058132B4
-ECF62FE42B7618695C535076526ED0F96CC0DDBDFA181E81528ACE841E99E217
-37686B4C31D34A24E57236A20E243199AAF847E266B3497047D1D3E94989B0AA
-DE3589FF0AE4253523BE66AA1F81746B9D3AEDC4EC2C50CF409BB80CC7054957
-766AEBD32E697C14A734DFFFC8503E397564A9EC2A6A0280600584441A474D00
-A12C88E9BC60A0CCB9E0C06778F308B1D56B1DEF377887CE1A53E53B8AF0B877
-B5CD9E466B0A62469A7A8D6E2395F885B8A882CD684A64C6FAC9A5A05A707B3E
-EB3941CC153BB625DEF2239B76F86E06ED48D2A39BAF4CD1B1623883AD423720
-6D30BC5C7E4BC1F3C8CB283F005CB403A7922D65F90A8BD6AB9BF0AF90551CFF
-8C94947CBCD11962819F1E6741551075A429CF35959772DEE452F0726501163E
-DA22581ECEE4731F49085FB1222FD66318D9C05C1C3FD93E15B784D3DA96681A
-FB56CB33BD7B96B18909CF1821C395DD309E3B46F0FB7293A61F327C2B4962F2
-8BE38910F19687B5DD6ACDBC81F8A32104D37CC932F4B4D4FC15A01CBFA98B3A
-0D108008C002B7BDBC68E8FE79C07C7EC817CF610197D694A2E986AF0506A76E
-3EC3D8C066932899081757DBFF2C09BFD4B5CD5F24C53B6238B35ABA2C07B17C
-08B2A806681DFF59EB32FC9958
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (sk-refcard.dvi)
-@start /Fa 197[23 58[{}1 83.022 /CMMI10 rf /Fb 242[66
-13[{}1 58.1154 /CMSY7 rf /Fc 134[35 1[47 35 37 26 26
-26 1[37 33 37 55 19 35 1[19 37 33 21 30 37 30 37 33 11[49
-1[37 2[45 1[49 60 3[24 1[51 43 45 1[47 46 49 9[33 33
-33 1[33 33 33 33 1[19 22 19 44[{}44 58.1154 /csr7 rf
-/Fd 133[34 40 3[45 28 34 35 1[42 42 47 68 21 38 1[25
-1[38 1[38 42 38 38 42 50[25 30 45[{}21 83.022 /csti10
-rf /Fe 2[50 2[53 10[53 1[27 3[44 42 3[46 2[46 34[42 2[37
-1[38 62[42 50 2[50 53 37 38 39 1[53 48 53 80 27 50 29
-27 53 1[29 44 53 42 53 46 85[56 11[{}34 83.022 /csbx10
-rf /Ff 130[44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 3[44 2[44 44 44 1[44 2[44 44 4[44 44 44 44 44
-44 44 44 44 44 1[44 1[44 4[44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 1[44 44 44 44 44 33[{}74 83.022 /cstt10
-rf /Fg 2[73 2[76 5[69 6[38 3[63 61 2[38 3[67 34[61 4[54
-3[38 58[61 73 2[73 76 53 54 57 1[76 69 76 115 38 73 1[38
-76 69 42 63 76 61 76 67 6[84 3[104 106 96 76 103 1[94
-103 1[131 83 108 71 52 2[87 90 2[98 54[80 11[{}50 119.552
-/csbx10 rf /Fh 42 42 44 2[46 5[42 42 3[46 1[23 3[37 37
-2[23 42 2[42 6[62 10[63 16[37 2[32 1[33 3[23 11[46 45[42
-37 44 44 1[44 46 32 33 33 44 46 42 46 69 23 44 25 23
-46 42 25 37 46 37 46 42 8[62 1[62 62 1[46 2[57 1[62 1[52
-2[30 1[65 1[57 63 2[62 6[23 42 2[42 42 42 42 42 42 2[23
-28 23 2[32 32 27[46 48 11[{}73 83.022 /csr10 rf /Fi 23[73
-6[80 101[82 6[64 65 68 3[92 137 1[87 4[50 76 1[73 1[80
-11[127 2[124 3[129 6[130 1[108 69[{}18 143.462 /csbx10
-rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 33 -320 a Fi(GNU)55 b(Emacs)h({)g
-(Referen\350n\341)e(k)-5 b(arta)932 -185 y Fh(\(pre)28
-b(v)n(erziu)e(21\))0 56 y Fg(Spustenie)48 b(Emacsu)0
-252 y Fh(Pre)27 b(spustenie)g(GNU)i(Emacsu)d(21)h(nap\355\271te)g(jeho)
-h(meno:)f Ff(emacs)0 385 y Fh(Ak)n(o)g(na\350\355ta\273)g(a)g(edito)n
-(v)n(a\273)g(s\372b)r(ory)g(sa)g(dozviete)g(ni\276\271ie)g(v)h(o)r
-(ddiele)f(S\372b)r(ory)-7 b(.)0 614 y Fg(Uk)l(on\350enie)46
-b(Emacsu)0 810 y Fh(p)r(ozasta)n(v)n(enie)26 b(\(zmen\271enie)i(do)f
-(ik)n(on)n(y)f(v)i(X11\))304 b Ff(C-z)0 909 y Fh(de\014nit\355vn)n(y)28
-b(o)r(dc)n(ho)r(d)f(z)h(Emacsu)750 b Ff(C-x)42 b(C-c)0
-1138 y Fg(S\372b)t(ory)0 1334 y Fe(na\350\355ta\273)29
-b Fh(s\372b)r(or)e(do)g(Emacsu)855 b Ff(C-x)42 b(C-f)0
-1434 y Fe(ulo\276i\273)27 b Fh(s\372b)r(or)g(sp\344\273)g(na)h(disk)868
-b Ff(C-x)42 b(C-s)0 1534 y Fh(ulo\276i\273)28 b Fe(v\271etky)g
-Fh(s\372b)r(ory)1026 b Ff(C-x)42 b(s)0 1633 y Fe(vlo\276i\273)27
-b Fh(obsah)g(in\351ho)g(s\372b)r(oru)h(do)f(bu\013eru)438
-b Ff(C-x)42 b(i)0 1733 y Fh(zameni\273)28 b(ten)n(to)f(s\372b)r(or)g
-(in)n(\375m)h(s\372b)r(orom)522 b Ff(C-x)42 b(C-v)0 1832
-y Fh(zap\355sa\273)27 b(bu\013er)h(do)f(zadan\351ho)f(s\372b)r(oru)553
-b Ff(C-x)42 b(C-w)0 1932 y Fh(vlo\276i\273)27 b(do)h(syst\351m)n(u)f
-(spr\341)n(vy)f(v)n(erzi\355)676 b Ff(C-x)42 b(C-q)0
-2171 y Fg(P)l(ou\276\355v)l(anie)47 b(n\341p)t(o)l(v)l(edy)0
-2367 y Fh(Syst\351m)29 b(n\341p)r(o)n(v)n(edy)e(je)j(jedno)r(duc)n(h)n
-(\375)-7 b(.)28 b(Stla\350te)h Ff(C-h)f Fh(\(aleb)r(o)h
-Ff(F1)p Fh(\))f(a)g(sledujte)0 2467 y(in\271truk)n(cie.)f(\332v)n(o)r
-(dn)n(\375)g Fe(t\372torial)g Fh(je)h(mo\276n\351)g(spusti\273)g(p)r
-(omo)r(cou)f Ff(C-h)42 b(t)p Fh(.)0 2599 y(o)r(dstr\341ni\273)27
-b(okno)g(s)g(n\341p)r(o)n(v)n(edou)792 b Ff(C-x)42 b(1)0
-2699 y Fh(rolo)n(v)n(a\273)25 b(okno)i(s)g(n\341p)r(o)n(v)n(edou)871
-b Ff(C-M-v)0 2832 y Fh(aprop)r(os:)26 b(pr\355k)n(azy)g(zo)r(dp)r(o)n
-(v)n(eda)5 b(j\372ce)26 b(re\273azcu)350 b Ff(C-h)42
-b(a)0 2931 y Fh(zobrazi\273)26 b(funk)n(ciu)i(danej)g(kl\341)n(v)n(esy)
-702 b Ff(C-h)42 b(c)0 3031 y Fh(zobrazi\273)26 b(p)r(opis)i(funk)n(cie)
-1006 b Ff(C-h)42 b(f)0 3130 y Fh(zobrazi\273)26 b(inform\341cie)h(o)g
-(aktu\341ln)n(yc)n(h)g(m\363)r(do)r(c)n(h)300 b Ff(C-h)42
-b(m)0 3359 y Fg(Opra)l(vy)j(c)l(h)l(\375b)0 3555 y Fe(preru\271i\273)27
-b Fh(vkladan)n(\375)g(aleb)r(o)g(vyk)n(on\341)n(v)n(an)n(\375)d
-(pr\355k)n(az)191 b Ff(C-g)0 3655 y Fe(obno)m(vi\273)28
-b Fh(s\372b)r(or)f(straten)n(\375)f(p\341dom)h(syst\351m)n(u)169
-b Ff(M-x)42 b(recover-file)0 3755 y Fe(zru\271i\273)28
-b Fh(nec)n(hcen)n(\372)f(zmen)n(u)948 b Ff(C-x)42 b(u)i
-Fd(n.)f Ff(C-_)0 3854 y Fh(vr\341ti\273)27 b(p\364)n(v)n(o)r(dn)n(\375)
-f(obsah)h(bu\013eru)569 b Ff(M-x)42 b(revert-buffer)0
-3954 y Fh(prekresli\273)27 b(\376rozpadn)n(ut\372\377)e(obrazo)n(vku)
-535 b Ff(C-l)0 4208 y Fg(Inkremen)l(t\341lne)47 b(vyh\265ad\341)l(v)l
-(anie)0 4404 y Fh(vyh\265ada\273)27 b(vpred)1248 b Ff(C-s)0
-4504 y Fh(vyh\265ada\273)27 b(vzad)1285 b Ff(C-r)0 4603
-y Fh(vyh\265ada\273)27 b(regul\341rn)n(y)e(v\375raz)885
-b Ff(C-M-s)0 4703 y Fh(vyh\265ada\273)27 b(regul\341rn)n(y)e(v\375raz)i
-(dozadu)599 b Ff(C-M-r)0 4803 y Fh(predc)n(h\341dza)5
-b(j\372ci)26 b(vyh\265ad\341)n(v)n(an)n(\375)f(re\273azec)491
-b Ff(M-p)0 4902 y Fh(nasleduj\372c\355)28 b(no)n(v\271\355)e
-(vyh\265ad\341)n(v)n(an)n(\375)f(re\273azec)419 b Ff(M-n)0
-5002 y Fh(uk)n(on\350i\273)27 b(inkremen)n(t\341lne)g(vyh\265ad\341)n
-(v)n(anie)490 b Ff(RET)0 5101 y Fh(zru\271i\273)27 b(efekt)h(p)r
-(osledn\351ho)f(zadan\351ho)g(znaku)359 b Ff(DEL)0 5201
-y Fh(preru\271i\273)27 b(prebieha)5 b(j\372ce)27 b(vyh\265ad\341)n(v)n
-(anie)528 b Ff(C-g)0 5334 y Fh(\317al\271ie)34 b Ff(C-s)f
-Fh(aleb)r(o)h Ff(C-r)f Fh(zopakuje)h(vyh\265ad\341)n(v)n(anie)e(v)i
-(danom)g(smere.)g(Ak)0 5433 y(Emacs)27 b(vyh\265ad\341)n(v)n(a,)e
-Ff(C-g)h Fh(zru\271\355)h(iba)h(nen\341)5 b(jden)n(\372)27
-b(\350as\273)g(re\273azca.)265 5567 y Fc(c)247 5569 y
-Fb(\015)22 b Fc(2007)h(F)-5 b(ree)21 b(Soft)n(w)n(are)h(F)-5
-b(oundation,)20 b(Inc.)h(P)n(ermissions)h(on)g(bac)n(k.)g(v2.2)3858
-5663 y Fh(1)p eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 0 -337 a Fg(P)l(oh)l(yb)0 -137
-y Fe(p)s(osuv)31 b(o)1452 b(vzad)110 b(vpred)0 -38 y
-Fh(znak)1607 b Ff(C-b)169 b(C-f)0 62 y Fh(slo)n(v)n(o)1596
-b Ff(M-b)169 b(M-f)0 162 y Fh(riadok)1546 b Ff(C-p)169
-b(C-n)0 261 y Fh(na)27 b(za\350iatok)f(aleb)r(o)i(k)n(oniec)e(riadku)
-629 b Ff(C-a)169 b(C-e)0 361 y Fh(v)n(etu)1619 b Ff(M-a)169
-b(M-e)0 461 y Fh(o)r(dsta)n(v)n(ec)1465 b Ff(M-{)169
-b(M-})0 560 y Fh(str\341nku)1500 b Ff(C-x)43 b([)82 b(C-x)43
-b(])0 660 y Fh(sym)n(b)r(olic)n(k\375)26 b(v\375raz)1147
-b Ff(C-M-b)81 b(C-M-f)0 759 y Fh(funk)n(ciu)1511 b Ff(C-M-a)81
-b(C-M-e)0 859 y Fh(na)27 b(za\350iatok)f(aleb)r(o)i(k)n(oniec)e
-(bu\013eru)607 b Ff(M-<)169 b(M->)0 993 y Fh(rolo)n(v)n(a\273)25
-b(na)j(\357al\271iu)f(obrazo)n(vku)791 b Ff(C-v)0 1092
-y Fh(rolo)n(v)n(a\273)25 b(na)j(predc)n(h\341dza)5 b(j\372cu)26
-b(obrazo)n(vku)436 b Ff(M-v)0 1192 y Fh(rolo)n(v)n(a\273)25
-b(v\265a)n(v)n(o)1330 b Ff(C-x)42 b(<)0 1292 y Fh(rolo)n(v)n(a\273)25
-b(vpra)n(v)n(o)1274 b Ff(C-x)42 b(>)0 1391 y Fh(aktu\341ln)n(y)27
-b(riadok)f(do)h(stredu)h(obrazo)n(vky)458 b Ff(C-u)42
-b(C-l)0 1625 y Fg(Ru\271enie)47 b(a)f(mazanie)0 1825
-y Fe(ru\271en)m(\375)32 b(ob)5 b(jekt)1030 b(vzad)284
-b(vpred)0 1924 y Fh(znak)27 b(\(mazanie,)g(nie)h(ru\271enie\))607
-b Ff(DEL)343 b(C-d)0 2024 y Fh(slo)n(v)n(o)1422 b Ff(M-DEL)255
-b(M-d)0 2124 y Fh(riadok)26 b(\(do)i(k)n(onca\))957 b
-Ff(M-0)42 b(C-k)169 b(C-k)0 2223 y Fh(v)n(eta)1449 b
-Ff(C-x)42 b(DEL)169 b(M-k)0 2323 y Fh(sym)n(b)r(olic)n(k\375)26
-b(v\375raz)973 b Ff(M--)42 b(C-M-k)81 b(C-M-k)0 2456
-y Fh(zru\271i\273)27 b Fe(oblas\273)1320 b Ff(C-w)0 2556
-y Fh(sk)n(op\355ro)n(v)n(a\273)25 b(oblas\273)i(do)g(sc)n(hr\341nky)717
-b Ff(M-w)0 2656 y Fh(zru\271i\273)27 b(a\276)g(p)r(o)h(na)5
-b(jbli\276\271\355)27 b(v\375skyt)g(znaku)g Fd(znak)344
-b Ff(M-z)42 b Fd(znak)0 2789 y Fh(vho)r(di\273)28 b(nap)r(osledy)f
-(zru\271en)n(\375)f(ob)5 b(jekt)618 b Ff(C-y)0 2889 y
-Fh(nahradi\273)28 b(vho)r(den)n(\375)h(ob)5 b(jekt)28
-b(predc)n(h\341dza)5 b(j\372cim)28 b(zru-)0 2988 y(\271en)n(\375m)1800
-2889 y Ff(M-y)0 3230 y Fg(Ozna\350o)l(v)l(anie)0 3430
-y Fh(vlo\276i\273)f(zna\350)n(ku)1322 b Ff(C-@)42 b Fd(n.)i
-Ff(C-SPC)0 3529 y Fh(preho)r(di\273)28 b(kurzor)e(a)h(zna\350)n(ku)885
-b Ff(C-x)42 b(C-x)0 3663 y Fh(ozna\350i\273)27 b(zadan)n(\375)f(p)r(o)r
-(\350et)i Fe(slo)m(v)847 b Ff(M-@)0 3763 y Fh(ozna\350i\273)27
-b Fe(o)s(dsta)m(v)m(ec)1159 b Ff(M-h)0 3862 y Fh(ozna\350i\273)27
-b Fe(str\341nku)1198 b Ff(C-x)42 b(C-p)0 3962 y Fh(ozna\350i\273)27
-b Fe(sym)m(b)s(olic)m(k\375)32 b(v\375raz)793 b Ff(C-M-@)0
-4062 y Fh(ozna\350i\273)27 b Fe(funk)m(ciu)1210 b Ff(C-M-h)0
-4161 y Fh(ozna\350i\273)27 b(cel\375)g Fe(bu\013er)1101
-b Ff(C-x)42 b(h)0 4395 y Fg(In)l(terakt\355vne)47 b(nahradzo)l(v)l
-(anie)0 4595 y Fh(in)n(terakt\355vne)27 b(nahradi\273)g(texto)n(v\375)g
-(re\273azec)444 b Ff(M-\045)0 4694 y Fh(s)27 b(p)r(ou\276it\355m)i
-(regul\341rneho)c(v\375razu)247 b Ff(M-x)42 b(query-replace-reg)o(ex)o
-(p)0 4828 y Fh(Platn\351)27 b(o)r(dp)r(o)n(v)n(ede)g(v)g(m\363)r(de)h
-(query-replace)d(s\372)0 4961 y Fe(nahradi\273)k Fh(a)e(\355s\273)h(na)
-f(\357al\271ie)913 b Ff(SPC)0 5061 y Fh(nahradi\273)27
-b(a)g(zosta\273)g(na)g(mieste)803 b Ff(,)0 5161 y Fe(sk)m(o)s
-(\350i\273)28 b Fh(na)f(\357al\271ie)g(b)r(ez)h(nahradenia)631
-b Ff(DEL)0 5260 y Fh(zameni\273)28 b(v\271etky)f(zost\341)n(v)n(a)5
-b(j\372ce)25 b(v\375skyt)n(y)499 b Ff(!)0 5360 y Fe(sp\344\273)28
-b Fh(na)f(predc)n(h\341dza)5 b(j\372ci)26 b(v\375skyt)h(re\273azca)383
-b Ff(^)0 5460 y Fe(k)m(oniec)28 b Fh(nahradzo)n(v)n(ania)984
-b Ff(RET)0 5559 y Fh(rekurz\355vne)26 b(edito)n(v)n(anie)h(\(uk)n
-(on\350\355)g(sa)g Ff(C-M-c)p Fh(\))350 b Ff(C-r)3858
-5663 y Fh(2)p eop end
-%%Page: 3 3
-TeXDict begin 3 2 bop 0 -337 a Fg(Okn\341)0 -164 y Fh(Ak)21
-b(s\372)g(zobrazen\351)e(dv)n(a)h(pr\355k)n(azy)-7 b(,)20
-b(p)r(otom)h(ten)g(druh)n(\375)g(plat\355)g(pre)f(Xo)n(v)n(\351)g
-(okno.)0 -38 y(zru\271i\273)27 b(v\271etky)g(ostatn\351)g(okn\341)843
-b Ff(C-x)42 b(1)0 89 y Fh(rozdeli\273)27 b(okno)g(na)g(horn\351)g(a)g
-(doln\351)427 b Ff(C-x)42 b(2)257 b(C-x)42 b(5)h(2)0
-189 y Fh(zru\271i\273)27 b(toto)h(okno)956 b Ff(C-x)42
-b(0)257 b(C-x)42 b(5)h(0)0 316 y Fh(rozdeli\273)27 b(okno)g(na)g(\265a)
-n(v)n(\351)f(a)i(pra)n(v)n(\351)748 b Ff(C-x)42 b(3)0
-443 y Fh(rolo)n(v)n(a\273)25 b(in\351)j(okno)1213 b Ff(C-M-v)0
-569 y Fh(prepn)n(\372\273)28 b(kurzor)e(do)h(in\351ho)g(okna)498
-b Ff(C-x)42 b(o)257 b(C-x)43 b(5)g(o)0 669 y Fh(vybra\273)27
-b(bu\013er)h(v)f(inom)h(okne)627 b Ff(C-x)42 b(4)h(b)170
-b(C-x)43 b(5)g(b)0 769 y Fh(zobrazi\273)26 b(bu\013er)i(v)g(inom)f
-(okne)577 b Ff(C-x)42 b(4)h(C-o)82 b(C-x)43 b(5)g(C-o)0
-868 y Fh(otv)n(ori\273)26 b(s\372b)r(or)h(v)h(inom)f(okne)632
-b Ff(C-x)42 b(4)h(f)170 b(C-x)43 b(5)g(f)0 968 y Fh(otv)n(ori\273)26
-b(s\372b)r(or)h(iba)h(pre)f(\350\355tanie)g(v)h(inom)g(okne)82
-b Ff(C-x)42 b(4)h(r)170 b(C-x)43 b(5)g(r)0 1068 y Fh(spusti\273)28
-b(Dired)g(v)f(inom)h(okne)630 b Ff(C-x)42 b(4)h(d)170
-b(C-x)43 b(5)g(d)0 1167 y Fh(n\341)5 b(js\273)27 b(tag)g(v)h(inom)f
-(okne)780 b Ff(C-x)42 b(4)h(.)170 b(C-x)43 b(5)g(.)0
-1294 y Fh(zv)n(\344\350\271i\273)27 b(okno)1353 b Ff(C-x)42
-b(^)0 1394 y Fh(z\372\276i\273)28 b(okno)1423 b Ff(C-x)42
-b({)0 1493 y Fh(roz\271\355ri\273)26 b(okno)1344 b Ff(C-x)42
-b(})0 1693 y Fg(F)-11 b(orm\341to)l(v)l(anie)0 1866 y
-Fh(o)r(dsadi\273)27 b(aktu\341ln)n(y)g Fe(riadok)h Fh(\(p)r(o)r(d\265a)
-g(m\363)r(du\))372 b Ff(TAB)0 1965 y Fh(o)r(dsadi\273)27
-b Fe(oblas\273)h Fh(\(p)r(o)r(d\265a)f(m\363)r(du\))731
-b Ff(C-M-\\)0 2065 y Fh(o)r(dsadi\273)27 b Fe(sym)m(b)s(olic)m(k\375)32
-b(v\375raz)e Fh(\(p)r(o)r(d\265a)e(m\363)r(du\))256 b
-Ff(C-M-q)0 2165 y Fh(o)r(dsadi\273)27 b(oblas\273)g(nap)r(evno)g(o)h
-Fd(ar)l(gument)34 b Fh(st\345p)r(co)n(v)232 b Ff(C-x)42
-b(TAB)0 2291 y Fh(vlo\276i\273)27 b(znak)g(no)n(v)n(\351ho)f(riadku)h
-(za)g(kurzor)495 b Ff(C-o)0 2391 y Fh(p)r(osun)n(\372\273)28
-b(zb)n(ytok)f(riadku)f(zvisle)i(dole)578 b Ff(C-M-o)0
-2491 y Fh(zmaza\273)27 b(pr\341zdne)g(riadky)f(ok)n(olo)g(kurzoru)444
-b Ff(C-x)42 b(C-o)0 2590 y Fh(sp)r(o)5 b(ji\273)28 b(riadok)e(s)h
-(predc)n(h\341dza)5 b(j\372cim)27 b(\(s)g(arg.)g(s)g(nasl.\))88
-b Ff(M-^)0 2690 y Fh(zmaza\273)27 b(pr\341zdne)g(miesto)g(ok)n(olo)f
-(kurzoru)439 b Ff(M-\\)0 2790 y Fh(nec)n(ha\273)27 b(presne)g(jedn)n(u)
-h(medzeru)g(ok)n(olo)d(kurzoru)220 b Ff(M-SPC)0 2916
-y Fh(zalomi\273)27 b(o)r(dsta)n(v)n(ec)1194 b Ff(M-q)0
-3016 y Fh(nasta)n(vi\273)27 b(st\345p)r(ec)h(pre)f(zalamo)n(v)n(anie)
-657 b Ff(C-x)42 b(f)0 3116 y Fh(nasta)n(vi\273)27 b(pre\014x,)g
-(ktor\375m)g(za\350\355na)5 b(j\372)27 b(riadky)372 b
-Ff(C-x)42 b(.)0 3215 y Fh(nasta)n(vi\273)27 b(fon)n(t)1338
-b Ff(M-g)0 3443 y Fg(Zmena)46 b(v)l(e\265k)l(osti)g(p\355smen)0
-3615 y Fh(zmeni\273)28 b(p\355smen\341)f(slo)n(v)n(a)f(na)h(v)n(e\265k)
-n(\351)703 b Ff(M-u)0 3715 y Fh(zmeni\273)28 b(p\355smen\341)f(slo)n(v)
-n(a)f(na)h(mal\351)713 b Ff(M-l)0 3815 y Fh(zmeni\273)28
-b(za\350iato)r(\350n\351)f(p\355smeno)g(slo)n(v)n(a)f(na)h(v)n(e\265k)n
-(\351)299 b Ff(M-c)0 3941 y Fh(zmeni\273)28 b(p\355smen\341)f(oblasti)g
-(na)h(v)n(e\265k)n(\351)640 b Ff(C-x)42 b(C-u)0 4041
-y Fh(zmeni\273)28 b(p\355smen\341)f(oblasti)g(na)h(mal\351)650
-b Ff(C-x)42 b(C-l)0 4241 y Fg(Minibu\013er)0 4414 y Fh(Nasleduj\372ce)
-28 b(kl\341)n(v)n(esy)d(s\372)j(platn\351)g(pre)f(minibu\013er.)0
-4540 y(doplni\273)h(z)g(p)r(on)n(uky)1181 b Ff(TAB)0
-4640 y Fh(doplni\273)28 b(do)f(na)5 b(jbli\276\271ieho)27
-b(slo)n(v)n(a)764 b Ff(SPC)0 4740 y Fh(doplni\273)28
-b(a)f(vyk)n(ona\273)1153 b Ff(RET)0 4839 y Fh(zobrazi\273)26
-b(mo\276n\351)i(doplnenia)872 b Ff(?)0 4939 y Fh(predc)n(h\341dza)5
-b(j\372ci)26 b(pr\355k)n(az)g(z)i(minibu\013eru)497 b
-Ff(M-p)0 5039 y Fh(no)n(v\271\355)27 b(aleb)r(o)g(implicitn)n(\375)h
-(pr\355k)n(az)e(z)i(minibu\013eru)245 b Ff(M-n)0 5138
-y Fh(vyh\265ada\273)27 b(regul\341rn)n(y)e(v\375raz)i(v)g(hist\363rii)g
-(vzad)336 b Ff(M-r)0 5238 y Fh(vyh\265ada\273)27 b(regul\341rn)n(y)e
-(v\375raz)i(v)g(hist\363rii)g(vpred)299 b Ff(M-s)0 5337
-y Fh(zru\271i\273)27 b(pr\355k)n(az)1346 b Ff(C-g)0 5464
-y Fh(Stla\350te)26 b Ff(C-x)43 b(ESC)f(ESC)25 b Fh(pre)h(edito)n(v)n
-(anie)e(a)i(zopak)n(o)n(v)n(anie)d(p)r(osledn\351ho)j(pr\355-)0
-5564 y(k)n(azu)h(z)g(minibu\013eru.)i(Stla\350te)e Ff(F10)g
-Fh(pre)g(aktiv)n(\341ciu)g(men)n(u)g(v)h(minibu\013eri.)3858
-5663 y(3)p eop end
-%%Page: 4 4
-TeXDict begin 4 3 bop 33 -320 a Fi(GNU)55 b(Emacs)h({)g
-(Referen\350n\341)e(k)-5 b(arta)0 -42 y Fg(Bu\013ery)0
-165 y Fh(vybra\273)27 b(in)n(\375)g(bu\013er)1184 b Ff(C-x)42
-b(b)0 264 y Fh(zoznam)27 b(v\271etk\375c)n(h)g(bu\013ero)n(v)864
-b Ff(C-x)42 b(C-b)0 364 y Fh(zru\271i\273)27 b(bu\013er)1359
-b Ff(C-x)42 b(k)0 607 y Fg(V\375men)l(y)0 814 y Fh(preho)r(di\273)28
-b Fe(znaky)1224 b Ff(C-t)0 913 y Fh(preho)r(di\273)28
-b Fe(slo)m(v)m(\341)1262 b Ff(M-t)0 1013 y Fh(preho)r(di\273)28
-b Fe(riadky)1200 b Ff(C-x)42 b(C-t)0 1112 y Fh(preho)r(di\273)28
-b Fe(sym)m(b)s(olic)m(k)m(\351)j(v\375razy)704 b Ff(C-M-t)0
-1355 y Fg(Kon)l(trola)46 b(pra)l(v)l(opisu)0 1562 y Fh(k)n(on)n(trola)
-25 b(pra)n(v)n(opisu)h(aktu\341lneho)h(slo)n(v)n(a)491
-b Ff(M-$)0 1662 y Fh(k)n(on)n(trola)25 b(pra)n(v)n(opisu)h
-(v\271etk\375c)n(h)h(slo)n(v)f(v)i(oblasti)103 b Ff(M-x)42
-b(ispell-region)0 1761 y Fh(k)n(on)n(trola)25 b(pra)n(v)n(opisu)h
-(cel\351ho)h(bu\013eru)419 b Ff(M-x)42 b(ispell-buffer)0
-2013 y Fg(T)-11 b(agy)0 2220 y Fh(n\341)5 b(js\273)27
-b(tag)g(\(de\014n\355ciu\))1079 b Ff(M-.)0 2319 y Fh(n\341)5
-b(js\273)27 b(\357al\271\355)h(v\375skyt)e(tagu)966 b
-Ff(C-u)42 b(M-.)0 2419 y Fh(zada\273)27 b(s\372b)r(or)g(s)g(no)n
-(v\375mi)g(tagmi)512 b Ff(M-x)43 b(visit-tags-tabl)o(e)0
-2554 y Fh(vyh\265ada\273)27 b(reg.)g(v\375raz)f(v)h(s\372b)r(oro)r(c)n
-(h)g(s)g(tagmi)199 b Ff(M-x)42 b(tags-search)0 2654 y
-Fh(spusti\273)28 b(nahradzo)n(v)n(anie)d(pre)i(dot)n(y\350n\351)g
-(s\372b)r(ory)-77 b Ff(M-x)42 b(tags-query-replac)o(e)0
-2754 y Fh(p)r(okra\350o)n(v)n(a\273)25 b(v)i(preh\265ad\341)n(v)n
-(an\355)f(aleb)r(o)h(nahradzo)n(v)n(an\355)106 b Ff(M-,)0
-2996 y Fg(Pr\355k)l(azo)l(v\375)44 b(in)l(terpr\351t)0
-3203 y Fh(vyk)n(ona\273)26 b(shello)n(vsk\375)g(pr\355k)n(az)866
-b Ff(M-!)0 3303 y Fh(vyk)n(ona\273)26 b(shello)n(vsk\375)g(pr\355k)n
-(az)h(nad)g(oblas\273ou)372 b Ff(M-|)0 3402 y Fh(pre\014ltro)n(v)n
-(a\273)26 b(oblas\273)h(shello)n(vsk\375m)f(pr\355k)n(azom)327
-b Ff(C-u)42 b(M-|)0 3502 y Fh(spusti\273)28 b(shell)g(v)f(okne)g
-Ff(*shell*)762 b(M-x)42 b(shell)0 3770 y Fg(Ob)t(d\345\276niky)0
-3977 y Fh(sk)n(op\355ro)n(v)n(a\273)25 b(ob)r(d\345\276nik)i(do)h
-(registra)673 b Ff(C-x)42 b(r)i(r)0 4077 y Fh(zru\271i\273)27
-b(ob)r(d\345\276nik)1260 b Ff(C-x)42 b(r)i(k)0 4176 y
-Fh(vho)r(di\273)28 b(ob)r(d\345\276nik)1228 b Ff(C-x)42
-b(r)i(y)0 4276 y Fh(vlo\276i\273)27 b(ob)r(d\345\276nik)h(medzier)953
-b Ff(C-x)42 b(r)i(o)0 4375 y Fh(nahradi\273)27 b(ob)r(d\345\276nik)h
-(ob)r(d\345\276nik)n(om)f(medzier)399 b Ff(C-x)42 b(r)i(c)0
-4475 y Fh(nahradi\273)27 b(riadky)f(ob)r(d\345\276niku)i(zadan)n(\375m)
-f(re\273azcom)142 b Ff(C-x)42 b(r)i(t)0 4718 y Fg(Skratky)0
-4925 y Fh(prida\273)27 b(glob\341ln)n(u)g(skratku)942
-b Ff(C-x)42 b(a)i(g)0 5024 y Fh(prida\273)27 b(lok)n(\341ln)n(u)g
-(skratku)988 b Ff(C-x)42 b(a)i(l)0 5124 y Fh(prida\273)27
-b(glob\341ln)n(u)g(expanziu)g(pre)g(skratku)451 b Ff(C-x)42
-b(a)i(i)f(g)0 5223 y Fh(prida\273)27 b(lok)n(\341ln)n(u)g(expanziu)g
-(pre)g(skratku)497 b Ff(C-x)42 b(a)i(i)f(l)0 5323 y Fh(expando)n(v)n
-(a\273)26 b(skratku)1083 b Ff(C-x)42 b(a)i(e)0 5458 y
-Fh(dynamic)n(k)n(\341)26 b(expanzia)h(predc)n(h\341dza)5
-b(j\372ceho)25 b(slo)n(v)n(a)188 b Ff(M-/)3858 5663 y
-Fh(4)p eop end
-%%Page: 5 5
-TeXDict begin 5 4 bop 0 -337 a Fg(Regul\341rne)46 b(v\375razy)0
--130 y Fh(\265ub)r(o)n(v)n(o\265n)n(\375)26 b(znak)h(okrem)g(no)n(v)n
-(\351ho)f(riadku)461 b Ff(.)43 b Fh(\(te\350)n(k)n(a\))0
--30 y(\276iadne)27 b(aleb)r(o)g(niek)n(o\265k)n(o)f(opak)n(o)n(v)n
-(an\355)635 b Ff(*)0 69 y Fh(jedno)28 b(aleb)r(o)f(viac)g(opak)n(o)n(v)
-n(an\355)819 b Ff(+)0 169 y Fh(\276iadne)27 b(aleb)r(o)g(jedno)h(opak)n
-(o)n(v)n(anie)697 b Ff(?)0 268 y Fh(zru\271i\273)27 b(zvl\341\271tn)n
-(y)g(v\375znam)g(znaku)g Fd(c)33 b Fh(v)n(o)26 b(v\375raze)274
-b Ff(\\)p Fd(c)0 368 y Fh(alternat\355v)n(a)26 b(\(\376aleb)r(o\377\))
-1040 b Ff(\\|)0 468 y Fh(skupina)1520 b Ff(\\\()43 b
-Fa(:)14 b(:)g(:)43 b Ff(\\\))0 567 y Fh(ro)n(vnak\375)25
-b(text)j(ak)n(o)f Fd(n)6 b Fh(-t\341)27 b(skupina)694
-b Ff(\\)p Fd(n)0 667 y Fh(hranice)27 b(slo)n(v)n(a)1329
-b Ff(\\b)0 767 y Fh(nie)28 b(hranice)f(slo)n(v)n(a)1195
-b Ff(\\B)0 902 y Fe(elemen)m(t)936 b(za\350iatok)183
-b(k)m(oniec)0 1002 y Fh(riadok)1032 b Ff(^)477 b($)0
-1101 y Fh(slo)n(v)n(o)1082 b Ff(\\<)433 b(\\>)0 1201
-y Fh(bu\013er)1052 b Ff(\\`)433 b(\\')0 1300 y Fe(trieda)32
-b(znak)m(o)m(v)701 b(zo)s(dp)s(o)m(v)m(ed\341)84 b(nezo)s(dp)s(o)m(v)m
-(ed\341)0 1400 y Fh(explicitn\341)28 b(mno\276ina)576
-b Ff([)43 b Fa(:)14 b(:)g(:)44 b Ff(])249 b([^)42 b Fa(:)14
-b(:)g(:)44 b Ff(])0 1500 y Fh(slo)n(v)n(otv)n(orn)n(\375)24
-b(znak)652 b Ff(\\w)433 b(\\W)0 1599 y Fh(znak)27 b(so)g(syn)n(taxou)f
-Fd(c)573 b Ff(\\s)p Fd(c)395 b Ff(\\S)p Fd(c)0 1842 y
-Fg(Medzin\341ro)t(dn\351)46 b(znak)l(o)l(v)l(\351)g(sady)0
-2049 y Fh(zada\273)27 b(hla)n(vn)n(\375)g(jazyk)494 b
-Ff(M-x)42 b(set-language-env)o(ir)o(onm)o(en)o(t)0 2148
-y Fh(zobrazi\273)26 b(v\271etky)i(vstupn\351)f(met\363)r(dy)278
-b Ff(M-x)42 b(list-input-method)o(s)0 2248 y Fh(zapn)n(\372\273)27
-b(aleb)r(o)h(vypn)n(\372\273)f(vstupn)n(\372)h(met\363)r(du)430
-b Ff(C-\\)0 2348 y Fh(zada\273)27 b(k)n(\363)r(do)n(v)n(anie)e(pre)j
-(nasleduj\372ci)f(pr\355k)n(az)389 b Ff(C-x)42 b(RET)h(c)0
-2447 y Fh(zobrazi\273)26 b(v\271etky)i(k)n(\363)r(do)n(v)n(ania)451
-b Ff(M-x)42 b(list-coding-syst)o(em)o(s)0 2547 y Fh(zmeni\273)28
-b(prefero)n(v)n(an\351)d(k)n(\363)r(do)n(v)n(anie)277
-b Ff(M-x)42 b(prefer-coding-sys)o(te)o(m)0 2800 y Fg(Info)0
-3007 y Fh(spusti\273)28 b(Info)1384 b Ff(C-h)42 b(i)0
-3106 y Fh(n\341)5 b(js\273)27 b(zadan)n(\372)g(funk)n(ciu)h(aleb)r(o)f
-(premenn)n(\372)g(v)h(Info)194 b Ff(C-h)42 b(C-i)0 3242
-y Fh(P)n(oh)n(yb)26 b(v)n(o)h(vn)n(\372tri)g(uzlo)n(v:)83
-3377 y(rolo)n(v)n(anie)e(vpred)1158 b Ff(SPC)83 3476
-y Fh(rolo)n(v)n(anie)25 b(vzad)1195 b Ff(DEL)83 3576
-y Fh(na)27 b(za\350iatok)g(uzla)1128 b Ff(.)43 b Fh(\(te\350)n(k)n(a\))
-0 3711 y(P)n(oh)n(yb)26 b(medzi)i(uzlami:)83 3847 y Fe(\357al\271\355)f
-Fh(uzol)1351 b Ff(n)83 3946 y Fe(predc)m(h\341dza)5 b(j\372ci)30
-b Fh(uzol)915 b Ff(p)83 4046 y Fe(nadraden)m(\375)30
-b Fh(uzol)1105 b Ff(u)83 4146 y Fh(vybra\273)27 b(z)g(men)n(u)h(p)r(o)r
-(d\265a)g(n\341zvu)715 b Ff(m)83 4245 y Fh(vybra\273)27
-b Fd(n)6 b Fh(-t\372)28 b(p)r(olo\276ku)f(men)n(u)g(\(1{9\))540
-b Fd(n)83 4345 y Fh(na)5 b(jbli\276\271\355)22 b(nasleduj\372ci)g
-(kr\355\276o)n(v\375)e(o)r(dk)n(az)h(\(n\341)n(vrat)g
-Ff(l)p Fh(\))83 b Ff(f)83 4445 y Fh(vr\341ti\273)27 b(sa)g(do)g(nap)r
-(osledy)g(prezeran\351ho)f(uzlu)265 b Ff(l)83 4544 y
-Fh(vr\341ti\273)27 b(sa)g(do)g(adres\341ra)e(uzlo)n(v)744
-b Ff(d)83 4644 y Fh(prejs\273)28 b(do)f(ktor\351hok)n(o\265v)n(ek)e
-(uzlu)i(p)r(o)r(d\265a)h(mena)233 b Ff(g)0 4779 y Fh(\317al\271ie:)83
-4915 y(spusti\273)28 b Fe(t\372torial)g Fh(k)f(Infu)884
-b Ff(h)83 5014 y Fh(vyh\265ada\273)27 b(re\273azec)g(v)g(uzlo)r(c)n(h)
-787 b Ff(M-s)83 5114 y Fe(sk)m(on\350i\273)28 b Fh(Info)1254
-b Ff(q)3858 5663 y Fh(5)p eop end
-%%Page: 6 6
-TeXDict begin 6 5 bop 0 -337 a Fg(Registre)0 -130 y Fh(ulo\276i\273)28
-b(oblas\273)f(do)g(registra)934 b Ff(C-x)42 b(r)i(s)0
--30 y Fh(vlo\276i\273)27 b(obsah)g(registra)f(do)h(bu\013era)668
-b Ff(C-x)42 b(r)i(i)0 105 y Fh(ulo\276i\273)28 b(p)r(oz\355ciu)f
-(kurzoru)f(do)i(registra)588 b Ff(C-x)42 b(r)i(SPC)0
-205 y Fh(sk)n(o)r(\350i\273)27 b(na)g(p)r(oz\355ciu)h(ulo\276en)n(\372)
-f(v)h(registri)533 b Ff(C-x)42 b(r)i(j)0 457 y Fg(Kl\341)l(v)l(eso)l(v)
-l(\351)h(makr\341)0 664 y Fe(za\350a\273)29 b Fh(de\014no)n(v)n(anie)e
-(kl\341)n(v)n(eso)n(v)n(\351ho)d(makra)446 b Ff(C-x)42
-b(\()0 764 y Fe(sk)m(on\350i\273)28 b Fh(de\014no)n(v)n(anie)e(kl\341)n
-(v)n(eso)n(v)n(\351ho)e(makra)369 b Ff(C-x)42 b(\))0
-863 y Fe(vyk)m(ona\273)30 b Fh(nap)r(osledy)c(de\014no)n(v)n(an\351)h
-(makro)413 b Ff(C-x)42 b(e)0 963 y Fh(prip)r(o)5 b(ji\273)28
-b(k)f(p)r(osledn\351m)n(u)h(kl\341)n(v)n(eso)n(v)n(\351m)n(u)c(makru)
-262 b Ff(C-u)42 b(C-x)h(\()0 1063 y Fh(p)r(omeno)n(v)n(a\273)26
-b(p)r(osledn\351)i(makro)404 b Ff(M-x)42 b(name-last-kbd-ma)o(cr)o(o)0
-1162 y Fh(vlo\276i\273)27 b(do)h(bu\013era)f(lisp)r(o)n(v\372)g
-(de\014n\355ciu)317 b Ff(M-x)43 b(insert-kbd-macr)o(o)0
-1405 y Fg(Pr\355k)l(azy)i(s\372visiace)h(s)g(Emacs)g(Lisp)t(om)0
-1612 y Fh(vyho)r(dnoti\273)28 b Fe(v\375raz)h Fh(pred)f(kurzorom)581
-b Ff(C-x)42 b(C-e)0 1711 y Fh(vyho)r(dnoti\273)28 b Fe(funk)m(ciu)g
-Fh(p)r(o)r(d)g(kurzorom)529 b Ff(C-M-x)0 1811 y Fh(vyho)r(dnoti\273)28
-b Fe(oblas\273)950 b Ff(M-x)42 b(eval-region)0 1911 y
-Fh(na\350\355ta\273)27 b(a)h(vyho)r(dnoti\273)f(v\375raz)f(v)i
-(minibu\013eri)331 b Ff(M-:)0 2010 y Fh(na\350\355ta\273)27
-b(s\372b)r(or)g(zo)g(syst\351mo)n(v)n(\351ho)f(adres\341ra)221
-b Ff(M-x)42 b(load-library)0 2263 y Fg(Jedno)t(duc)l(h\351)48
-b(prisp\364sob)t(enia)0 2470 y Fh(nasta)n(vi\273)27 b(premenn\351)g(a)g
-(faces)686 b Ff(M-x)42 b(customize)0 2605 y Fh(De\014n\355cia)28
-b(v\271eob)r(ecnej)f(kl\341)n(v)n(eso)n(v)n(ej)e(skratky)h(v)i(Emacs)e
-(Lisp)r(e)i(\(pr\355klad\):)0 2741 y Ff(\(global-set-key)37
-b("\\C-cg")k('goto-line\))0 2840 y(\(global-set-key)c("\\M-#")k
-('query-replace-re)o(gex)o(p\))0 3093 y Fg(Z\341pis)46
-b(pr\355k)l(azo)l(v)0 3300 y Ff(\(defun)41 b Fd(command-name)51
-b Ff(\()p Fd(ar)l(gs)7 b Ff(\))87 3399 y(")p Fd(documentation)f
-Ff(")44 b(\(interactive)38 b(")p Fd(template)6 b Ff("\))87
-3499 y Fd(body)h Ff(\))0 3634 y Fh(Pr\355klad:)0 3770
-y Ff(\(defun)41 b(this-line-to-top)o(-of)o(-w)o(ind)o(ow)c(\(line\))87
-3869 y("Reposition)i(line)j(point)g(is)g(on)h(to)g(top)f(of)h(window.)0
-3969 y(With)f(ARG,)g(put)g(point)g(on)g(line)g(ARG.")87
-4069 y(\(interactive)d("P"\))87 4168 y(\(recenter)h(\(if)i(\(null)g
-(line\))697 4268 y(0)610 4368 y(\(prefix-numeric-v)o(al)o(ue)37
-b(line\)\)\)\))0 4503 y Fh(\251p)r(eci\014k)n(\341cia)22
-b Ff(interactive)c Fh(vra)n(v\355,)k(ak)n(o)f(in)n(terakt\355vne)h
-(na\350\355ta\273)g(argumen-)0 4603 y(t)n(y)-7 b(.)28
-b(Viac)f(sa)g(dozviete)g(p)r(o)h(vyk)n(onan\355)e Ff(C-h)42
-b(f)h(interactive)p Fh(.)476 4919 y Fc(Cop)n(yrigh)n(t)805
-4917 y(c)787 4919 y Fb(\015)22 b Fc(2007)h(F)-5 b(ree)21
-b(Soft)n(w)n(are)h(F)-5 b(oundation,)20 b(Inc.)654 4998
-y(v2.2)i(for)g(GNU)h(Emacs)e(v)n(ersion)h(21,)h(2006)798
-5078 y(designed)e(b)n(y)h(Stephen)e(Gildea)0 5194 y(P)n(ermission)f(is)
-i(gran)n(ted)f(to)h(mak)n(e)e(and)i(distribute)d(copies)i(of)g(this)h
-(card)e(pro)n(vided)g(the)h(cop)n(y-)0 5273 y(righ)n(t)i(notice)f(and)h
-(this)g(p)r(ermission)f(notice)g(are)g(preserv)n(ed)g(on)h(all)g
-(copies.)0 5389 y(F)-5 b(or)20 b(copies)g(of)h(the)f(GNU)h(Emacs)f(man)
-n(ual,)g(write)g(to)h(the)f(F)-5 b(ree)20 b(Soft)n(w)n(are)g(F)-5
-b(oundation,)19 b(Inc.,)0 5468 y(51)k(F)-5 b(ranklin)20
-b(Street,)h(Fifth)g(Flo)r(or,)h(Boston,)h(MA)f(02110-1301)h(USA)3858
-5663 y Fh(6)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
similarity index 100%
rename from etc/TUTORIAL
rename to etc/tutorials/TUTORIAL
similarity index 100%
rename from etc/TUTORIAL.bg
rename to etc/tutorials/TUTORIAL.bg
similarity index 100%
rename from etc/TUTORIAL.cn
rename to etc/tutorials/TUTORIAL.cn
similarity index 100%
rename from etc/TUTORIAL.cs
rename to etc/tutorials/TUTORIAL.cs
similarity index 100%
rename from etc/TUTORIAL.de
rename to etc/tutorials/TUTORIAL.de
similarity index 100%
rename from etc/TUTORIAL.eo
rename to etc/tutorials/TUTORIAL.eo
similarity index 100%
rename from etc/TUTORIAL.es
rename to etc/tutorials/TUTORIAL.es
similarity index 100%
rename from etc/TUTORIAL.fr
rename to etc/tutorials/TUTORIAL.fr
similarity index 100%
rename from etc/TUTORIAL.it
rename to etc/tutorials/TUTORIAL.it
similarity index 100%
rename from etc/TUTORIAL.ja
rename to etc/tutorials/TUTORIAL.ja
similarity index 100%
rename from etc/TUTORIAL.ko
rename to etc/tutorials/TUTORIAL.ko
similarity index 100%
rename from etc/TUTORIAL.nl
rename to etc/tutorials/TUTORIAL.nl
similarity index 100%
rename from etc/TUTORIAL.pl
rename to etc/tutorials/TUTORIAL.pl
similarity index 100%
rename from etc/TUTORIAL.ro
rename to etc/tutorials/TUTORIAL.ro
similarity index 100%
rename from etc/TUTORIAL.ru
rename to etc/tutorials/TUTORIAL.ru
similarity index 100%
rename from etc/TUTORIAL.sk
rename to etc/tutorials/TUTORIAL.sk
similarity index 100%
rename from etc/TUTORIAL.sl
rename to etc/tutorials/TUTORIAL.sl
similarity index 100%
rename from etc/TUTORIAL.sv
rename to etc/tutorials/TUTORIAL.sv
similarity index 100%
rename from etc/TUTORIAL.th
rename to etc/tutorials/TUTORIAL.th
similarity index 100%
rename from etc/TUTORIAL.zh
rename to etc/tutorials/TUTORIAL.zh
index a9292e3550caf32d9a84b091c6139bc20325b7a9..3df1f9dd03992e980420fae6c263981ba2b9da48 100644 (file)
@@ -4,7 +4,7 @@
 
        * COPYING: Switch to GPLv3.
 
-2007-07-20  Eli Zaretskii  <eliz@gnu.org>
+2007-07-16  Eli Zaretskii  <eliz@gnu.org>
 
        * makefile.w32-in (extraclean): Don't delete *~.
 
index a09ba2c078c872e9c9421b444c8a9c1ec053c95b..6ea05fb9e9a37fbea0291493407cfd5420a92cd6 100644 (file)
@@ -1,9 +1,103 @@
+2007-10-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacsclient.c (print_help_and_exit): Fix space to improve
+       alignment in output messages.
+
 2007-09-27  Jason Rumney  <jasonr@gnu.org>
 
        * makefile.w32-in (emacsclient, emacsclientw): Link to COMCTL32.
 
        * emacsclient.c (w32_window_app): Init common controls when windowed.
 
+2007-09-21  Glenn Morris  <rgm@gnu.org>
+
+       * emacstool.c: Remove file.
+       * Makefile.in (emacstool, nemacstool, xvetool, xveterm):
+       Delete targets built from emacstool.
+
+2007-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacsclient.c (decode_options): -t implies -c.
+
+2007-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacsclient.c (DIRECTORY_SEP, IS_DIRECTORY_SEP, IS_DEVICE_SEP)
+       (IS_ANY_SEP): Only define if !defined(HAVE_GET_CURRENT_DIR_NAME).
+       (main_argc): Remove.
+       (strprefix): Use strncmp.
+
+2007-09-20  Jason Rumney  <jasonr@gnu.org>
+
+       * emacsclient.c (main) [SIGSTOP]: Change conditional from WINDOWSNT.
+
+2007-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacsclient.c (current_frame): Change the default.
+       (longopts): Replace --current-frame by --create-frame.
+       (decode_options): Reverse the meaning of -c.
+       (print_help_and_exit): Update help text accordingly.
+       (main): Remove the -version and -good-version messages.
+
+2007-09-12  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (SOURCES, unlock, relock): Delete.
+
+2007-08-29  Glenn Morris  <rgm@gnu.org>
+
+       * makefile.w32-in (VERSION): Increase to 23.0.50.
+
+2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * emacsclient.c (w32_execvp): Move definition before use.
+       (decode_options): Don't use a tty on mac carbon or windows.
+
+2007-08-29  Jason Rumney  <jasonr@gnu.org>
+
+       * emacsclient.c (SEND_STRING, SEND_QUOTED): Remove obfuscation macros.
+       (quote_argument, set_tcp_socket, handle_sigcont, handle_sigtstp):
+       (main): Expand removed macros inline.
+       (main) [WINDOWSNT]: Don't call ttyname.  Don't recognize -suspend
+       option.
+       (main) [NO_SOCKETS_IN_FILE_SYSTEM]: Don't call init_signals.
+
+2007-08-29  Karoly Lorentey  <lorentey@elte.hu>
+
+       * emacsclient.c (signal.h): New include.
+       (sys/stat.h, errno.h): Always include, even on WINDOWSNT.
+       (DIRECTORY_SEP, IS_DIRECTORY_SEP, IS_DEVICE_SEP, IS_ANY_SEP):
+       Copy definitions here from src/lisp.h.
+       (main_argc, main_argv, current_frame, window_system, tty): New vars.
+       (longopts): Add tty, current-frame.
+       (xmalloc, xstrdup): New functions.
+       (get_current_dir_name): New function, copied from src/sysdep.c.
+       (decode_options): Set display from environment.  Add tty and
+       current_frame options.  Make --no-wait imply --current-frame,
+       except when it is the only option given.  Make sure no frame is
+       opened when --current-frame is set.
+       (print_help_and_exit): Document tty and current-frame options.
+       (fail): Change arguments to void.
+       (main): When sockets are not defined, set main_argc, main_argv,
+       and call fail() with no arguments.
+       (emacs_socket): New variable (moved out from main `s').
+       (quote_file_name): Rename to quote_argument.
+       (quote_argument): New name for old quote_file_name.
+       (unquote_argument, strprefix, pass_signal_to_emacs)
+       (handle_sigcont, handle_sigtstp, init_signals): New functions.
+       (set_local_socket): Initialize saved_errno to 0.  If socket-name
+       is too long, call `fail' rather than `exit'.
+       (main): Doc update.  Set main_argc, main_argv.  New var `str'.
+       Don't need a filename or argument if tty or window_system set.
+       Call fail with no arguments.  Use get_current_dir_name to send
+       over the current directory.  Send version number to Emacs for
+       verification.  If tty is set, check TERM, and pass name and type
+       to Emacs.  Pass window_system to Emacs.  Move sending of eval to
+       optind loop.  Send -position, -file to Emacs.  Call fsync after
+       fflush.  Check for a client/server version match.
+       Handle -emacs-pid, -window-system-unsupported, -print, -error, and
+       -suspend commands.  Don't exit prematurely on --no-wait, let Emacs
+       close the connection for us.  When creating a new frame, send
+       environment and pwd to Emacs.  Send current-frame to Emacs.
+
 2007-08-25  Eli Zaretskii  <eliz@gnu.org>
 
        * Makefile.in (rcs2log, rcs-checkin, grep-changelog, vcdiff):
 
        * COPYING: Switch to GPLv3.
 
-2007-07-20  Eli Zaretskii  <eliz@gnu.org>
+2007-07-17  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * etags.c (C_entries): Reset the fvdef machine when out of function.
+       (PRINT_UNDOCUMENTED_OPTIONS_HELP): #define as FALSE if undefined.
+       (print_help): Use it in if() rather than #if.
+       (print_help): Conditionally print help about --no-line-directive.
+
+2007-07-16  Eli Zaretskii  <eliz@gnu.org>
 
        * makefile.w32-in (clean): Don't delete *~.
 
+2007-06-07  Glenn Morris  <rgm@gnu.org>
+
+       * etags.c (print_version): Add `emacs_copyright' string, for
+       easier automatic updating.
+
+2007-05-18  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * etags.c: Extern definitions of some more pointer functions for
+       standalone compilation, especially important for 64bit platforms.
+       (main, print_help): --members is now the default for etags.
+       (C_entries): Parse start of C comment as a space == end of token.
+       This is not necessary for C++ comment, already parsed as newline.
+
+2007-04-26  Glenn Morris  <rgm@gnu.org>
+
+       * makefile.w32-in (VERSION): Increase to 22.1.50.
+
 2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * Version 22.1 released.
        suggest using options to make them explicit.
        (AUTH_KEY_LENGTH, SEND_BUFFER_SIZE): New constants.
        (send_buffer, sblen): New variables.
-       (send_to_emacs): New function to buffer output and send it with
-       send().
+       (send_to_emacs): New function to buffer output and send it with `send'.
        (quote_file_name): Use SEND_STRING.
        (close_winsock, initialize_sockets): New functions to load and
        unload Winsock.
 
 2006-05-23  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 
-       * pop.c (pop_open, socket_connection, KPOP_SERVICE): Added
-       comments explaining why the "kpop" service is never used.
+       * pop.c (pop_open, socket_connection, KPOP_SERVICE):
+       Add comments explaining why the "kpop" service is never used.
 
 2006-05-13  Eli Zaretskii  <eliz@gnu.org>
 
 
        * makefile.w32-in (../src/config.h): Don't overwrite.  Print a
        message instead.
-       (../src/paths.h): Removed.
+       (../src/paths.h): Remove.
 
 2005-07-27  Juanma Barranquero  <lekktu@gmail.com>
 
 
 2003-01-06  Kim F. Storm  <storm@cua.dk>
 
-       * pop.c (__P): Renamed from _P to avoid problems on Cygwin.
+       * pop.c (__P): Rename from _P to avoid problems on Cygwin.
        All uses changed.
 
 2002-12-18  Andrew Innes  <andrewi@gnu.org>
        [WINDOWSNT]: #undef DOS_NT and #define it even if built with
        HAVE_CONFIG_H.  This change does nothing in Emacs, as DOS_NT is
        always defined when HAVE_CONFIG_H and WINDOWS are both defined.
-       [!HAVE_UNISTD_H]: use defined(WINDOWSNT) instead of the bare
+       [!HAVE_UNISTD_H]: Use defined(WINDOWSNT) instead of the bare
        WINDOWSNT, as this is the correct way to use it.
 
 2001-01-28  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 
 1997-03-14  Francesco Potort\e,Al\e(B  <F.Potorti@cnuce.cnr.it>
 
-       * etags.c (add_regex): reset *putbuf before using it.
+       * etags.c (add_regex): Reset *putbuf before using it.
 
 1997-02-23  Jonathan I. Kamens  <jik@kamens.brookline.ma.us>
 
 
 1995-12-04  Francesco Potort\e,Al\e(B  <pot@cnuce.cnr.it>
 
-       * Makefile.in (ctags): depend on etags only for simplicity;
+       * Makefile.in (ctags): Depend on etags only for simplicity;
        compile with regexp support enabled.
 
 1995-11-24  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 1995-06-27  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (plain_C_entries): new function.
-       (lowcase): new macro.
-       (tail, Fortran_functions, Pascal_functions): use new macro lowcase.
-       (lang_suffixes): new suffix ".pc" for Pro*C files.
-       (consider_token): don't tag all tokens beginning with DEFUN & Co..
-       (tail): look for the end of the token when comparing.
-       (takeprec): since now tail behaves differently, use strneq.
+       * etags.c (plain_C_entries): New function.
+       (lowcase): New macro.
+       (tail, Fortran_functions, Pascal_functions): Use new macro lowcase.
+       (lang_suffixes): New suffix ".pc" for Pro*C files.
+       (consider_token): Don't tag all tokens beginning with DEFUN & Co..
+       (tail): Look for the end of the token when comparing.
+       (takeprec): Since now tail behaves differently, use strneq.
 
 1995-07-08  Paul Eggert  <eggert@twinsun.com>
 
 
 1995-06-27  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (plain_C_entries): new function.
-       (lowcase): new macro.
-       (tail, Fortran_functions, Pascal_functions): use new macro lowcase.
-       (lang_suffixes): new suffix ".pc" for Pro*C files.
-       (consider_token): don't tag all tokens beginning with DEFUN & Co..
-       (tail): look for the end of the token when comparing.
-       (takeprec): since now tail behaves differently, use strneq.
+       * etags.c (plain_C_entries): New function.
+       (lowcase): New macro.
+       (tail, Fortran_functions, Pascal_functions): Use new macro lowcase.
+       (lang_suffixes): New suffix ".pc" for Pro*C files.
+       (consider_token): Don't tag all tokens beginning with DEFUN & Co..
+       (tail): Look for the end of the token when comparing.
+       (takeprec): Since now tail behaves differently, use strneq.
 
 1995-06-26  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1995-03-13  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (process_file): free (filename) after using it.
+       * etags.c (process_file): Free (filename) after using it.
        (readline_internal): Do not access the char before start of line.
 
 1995-02-22  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
 1994-11-22  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (print_help): print --regex usage for ctags also.
-       (main): use -h in addition to -H as abbreviation for --help.
+       * etags.c (print_help): Print --regex usage for ctags also.
+       (main): Use -h in addition to -H as abbreviation for --help.
 
 1994-11-16  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
 
 1994-10-21  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (prestr, substr): return a logical type.
+       * etags.c (prestr, substr): Return a logical type.
        (consider_token): Comment out "EXFUN".  Use "DEFUN" instead of "DEF".
-       (consider_token): set funcdef to fignore when a DEFUN is met.
+       (consider_token): Set funcdef to fignore when a DEFUN is met.
        (C_entries): Now we can use Tom Hageman patch for extern "C".
 
 1994-10-20  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 1994-10-17  Francesco Potort\e,Al\e(B  (pot@fly.cnuce.cnr.it)
 
-       * Makefile.in.in (etags): add dependency on regex.o, link with it.
-       (REGEXPOBJ, REGEXPDEPS, regex.o): target and macros added.
+       * Makefile.in.in (etags): Add dependency on regex.o, link with it.
+       (REGEXPOBJ, REGEXPDEPS, regex.o): Target and macros added.
 
 1994-10-12  David J. MacKenzie  (djm@duality.gnu.ai.mit.edu)
 
 
 1994-07-08  Dave Love  (d.love@dl.ac.uk)
 
-       * etags.c (takeprec): recognise `character*(*) function'
+       * etags.c (takeprec): Recognise `character*(*) function'.
 
 1994-07-08  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
 
 1994-04-18  Francesco Potort\e,Al\e(B  (pot@fly.cnuce.cnr.it)
 
-       * etags.c (main, print_help): eliminate the -F option.
+       * etags.c (main, print_help): Eliminate the -F option.
 
 1994-04-18  Francesco Potort\e,Al\e(B  (pot@fly.cnuce.cnr.it)
 
-       * etags.c (absolute_filename): compare against '\0' instead of NULL.
+       * etags.c (absolute_filename): Compare against '\0' instead of NULL.
 
 1994-04-16  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 
 1994-04-08  Francesco Potort\e,Al\e(B  (pot@fly.cnuce.cnr.it)
 
-       * etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
-       (PF_funcs, Asm_funcs, L_funcs, PAS_funcs, TEX_funcs,
-       Scheme_funcs, prolog_funcs): renamed to Fortran_functions,
+       * etags.c (outf, outfiledir): Renamed to tagf, tagfiledir.
+       (PF_funcs, Asm_funcs, L_funcs, PAS_funcs, TEX_funcs)
+       (Scheme_funcs, prolog_funcs): Renamed to Fortran_functions,
        Asm_labels, Lisp_functions, Pascal_functions, Scheme_functions,
        TeX_functions, Prolog_functions.
-       (inf): no more a global variable.
-       (C_entries): take 2nd parameter `inf' instead of using the global one.
-       (find_entries): added the cp1 var for optimisation.
-       (find_entries): added more suffixes for assembler files.
+       (inf): No more a global variable.
+       (C_entries): Take 2nd parameter `inf' instead of using the global one.
+       (find_entries): Added the cp1 var for optimisation.
+       (find_entries): Added more suffixes for assembler files.
        (Asm_funcs): Now finds labels even without an ending colon.
 
 1994-03-30  Francesco Potort\e,Al\e(B  (pot@fly.cnuce.cnr.it)
 
-       * etags.c (main): use etags_getcwd for compatibility.
-       (etags_getcwd): new function.
+       * etags.c (main): Use etags_getcwd for compatibility.
+       (etags_getcwd): New function.
 
 1994-03-25  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 
 1994-03-25  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (emacs_tags_format, ETAGS): removed.  Use CTAGS instead.
-       (main): don't allow the use of -t and -T in etags mode.
-       (print_help): don't show options enabled by default.
-       (print_version): show the emacs version number if VERSION is #defined.
-       (find_entries): add "ss" as suffix for Chez Scheme.
+       * etags.c (emacs_tags_format, ETAGS): Removed.  Use CTAGS instead.
+       (main): Don't allow the use of -t and -T in etags mode.
+       (print_help): Don't show options enabled by default.
+       (print_version): Show the emacs version number if VERSION is #defined.
+       (find_entries): Add "ss" as suffix for Chez Scheme.
 
 1994-03-23  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (cwd, outfiledir): vars added.
+       * etags.c (cwd, outfiledir): Vars added.
        (relative_filename, absolute_filename, absolute_dirname):
        functions added to compute filenames in tags files.
-       (process_file): filenames in tags file are relative to the
+       (process_file): Filenames in tags file are relative to the
        directory where the tags file is (useful with the -o option).
-       (main): initialise the outfiledir var.
-       (TYPEDST): added the `tignore' value.
-       (C_entries): corrected various small bugs.
+       (main): Initialise the outfiledir var.
+       (TYPEDST): Added the `tignore' value.
+       (C_entries): Corrected various small bugs.
 
 1994-03-19  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 
 1994-03-14  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (TYPEDST): added the `tignore' value.
-       (C_entries): corrected various bugs, now correctly parses the
+       * etags.c (TYPEDST): Added the `tignore' value.
+       (C_entries): Corrected various bugs, now correctly parses the
        `extern "C" {' construction (patch by Tom R.Hageman).
 
 1994-03-05  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 1994-02-22  Karl Heuer  (kwzh@gnu.ai.mit.edu)
 
        * profile.c (get_time): Simplify; avoid calling index.
-       (main): exit on EOF.
+       (main): Exit on EOF.
 
 1994-02-17  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
 
 1994-02-14  Francesco Potort\e,Al\e(B  (pot@fly)
 
-       * etags.c (absolute_pathnames, cwd): added global vars.
-       (longopts, print_help, main, process_file): put absolute filenames
+       * etags.c (absolute_pathnames, cwd): Added global vars.
+       (longopts, print_help, main, process_file): Put absolute filenames
        in the tag file if the -A --absolute-pathnames option is used.
-       (print_help): alfabetically order the options.
-       (malloc, realloc, strcpy, strncpy, strcmp): remove extern declar.
+       (print_help): Alfabetically order the options.
+       (malloc, realloc, strcpy, strncpy, strcmp): Remove extern declar.
 
 1994-02-09  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 1994-01-14  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
        * etags.c (stab_entry, stab_create, stab_find, stab_search,
-       stab_type, add_keyword, C_reate_stab, C_create_stabs): deleted.
+       stab_type, add_keyword, C_reate_stab, C_create_stabs): Deleted.
        Use gperf generated hash table instead of linked list.
-       (C_stab_entry, hash, in_word_set, get_C_stab, C_symtype): added.
+       (C_stab_entry, hash, in_word_set, get_C_stab, C_symtype): Added.
        Mostly code generated by gperf.
-       (consider_token): removed unused parameter `lp'.
-       (PF_funcs, getit): allow subroutine and similar declarations
+       (consider_token): Removed unused parameter `lp'.
+       (PF_funcs, getit): Allow subroutine and similar declarations
        to span multiple lines.
-       (C_entries): check for newline if inchar to avoid bus errors.
-       (process_file, find_entries): distinguish among nonexistent
+       (C_entries): Check for newline if inchar to avoid bus errors.
+       (process_file, find_entries): Distinguish among nonexistent
        and not regular file.
 
 1994-01-14  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
        functions returning a pointer to a function, a la `signal', can be
        parsed.  This also required new state `fstartlist' to `FUNCST'.
        (SAVE_TOKEN, RESTORE_TOKEN, TOKEN_SAVED_P): 1-deep token save stack.
-       (C_entries, CNL): use it to isolate preprocessor directive processing
+       (C_entries, CNL): Use it to isolate preprocessor directive processing
        from the other state engines.
-       (begtk): add '~', for C++ class destructors.
+       (begtk): Add '~', for C++ class destructors.
 
 1993-11-02  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (consider_token): removed unused variable firsttok.
-       (prolog_getit): call pfnote with the right number of arguments.
+       * etags.c (consider_token): Removed unused variable firsttok.
+       (prolog_getit): Call pfnote with the right number of arguments.
 
 1993-10-19  Paul Eggert  (eggert@twinsun.com)
 
 
 1993-10-01  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (process_file): dead code removed.
+       * etags.c (process_file): Dead code removed.
        (S_ISREG): #define it using S_IFREG if not defined.
-       (process_file): regular files have nothing to do with symlinks.
+       (process_file): Regular files have nothing to do with symlinks.
 
 1993-09-28  Brian Fox  (bfox@ai.mit.edu)
 
 
 1993-08-04  Francesco Potort\e,Al\e(B  (pot@spiff.gnu.ai.mit.edu)
 
-       * etags.c (L_isdef, L_isquote, L_getit): small optimisations.
-       (L_funcs): the (foo::defmumble stuff now should work.
-       (consider_token): function returned random value--corrected.
-       (C_entries): corrected == versus = typo.
+       * etags.c (L_isdef, L_isquote, L_getit): Small optimisations.
+       (L_funcs): The (foo::defmumble stuff now should work.
+       (consider_token): Function returned random value--corrected.
+       (C_entries): Corrected == versus = typo.
 
 1993-08-01  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
 
        * etags.c (FINCST): Added the fignore status.  Means we are
        after the parameter list and before the open curly brace.
        Allows correct parsing of C++ constructors.
-       (C_entries, consider_token): make use of fignore.
-       (consider_token): reset funcdef when next_token_is_func: when in
+       (C_entries, consider_token): Make use of fignore.
+       (consider_token): Reset funcdef when next_token_is_func: when in
        ctags mode makes DEFVAR and others work better.
-       (L_isquote): function that recognises the "(quote" string.
-       (L_getit): ignore quoting via "'" or "(quote".  Useful for defalias.
+       (L_isquote): Function that recognises the "(quote" string.
+       (L_getit): Ignore quoting via "'" or "(quote".  Useful for defalias.
 
 1993-07-29  Paul Eggert  (eggert@twinsun.com)
 
 
 1993-07-08  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (alloca): removed all references to it.
-       (main): now calls xnew instead of alloca for portability.
-       (../src/config.h): included only if HAVE_CONFIG_H.
-       (const): void definition removed--config.h takes care of it.
+       * etags.c (alloca): Removed all references to it.
+       (main): Now calls xnew instead of alloca for portability.
+       (../src/config.h): Included only if HAVE_CONFIG_H.
+       (const): Void definition removed--config.h takes care of it.
 
 1993-07-08  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (consider_token): was `==', now is `='.
+       * etags.c (consider_token): Was `==', now is `='.
        (consider_token): DEFUNs now treated like funcs in ctags mode.
 
-       * etags.c (LEVEL_OK_FOR_FUNCDEF): removed.
-       (C_entries): optimized the test that used LEVEL_OK_FOR_FUNCDEF.
-       (C_entries): removed a piece of useless code.
-       (C_entries): making typedef tags is delayed until a semicolon
+       * etags.c (LEVEL_OK_FOR_FUNCDEF): Removed.
+       (C_entries): Optimized the test that used LEVEL_OK_FOR_FUNCDEF.
+       (C_entries): Removed a piece of useless code.
+       (C_entries): Making typedef tags is delayed until a semicolon
        is met.  This handles "typedef int X, Y, Z;" correctly.
 
 1993-07-06  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
 
 1993-03-22  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (YACC): flag added to c_ext.
-       (c_ext): no more a synonim for c_ext&C_PLPL because of YACC.
-       (find_entries): consistently use streq when reasonable.
-       (find_entries): a .y file is a yacc file.
+       * etags.c (YACC): Flag added to c_ext.
+       (c_ext): No more a synonim for c_ext&C_PLPL because of YACC.
+       (find_entries): Consistently use streq when reasonable.
+       (find_entries): A .y file is a yacc file.
        (get_C_stab): c_ext becomes c_ext&C_PLPL.
-       (C_entries): logical cplpl means c_ext&C_PLPL.
-       (C_entries): logical yacc_rules means we are after the first %%.
-       (C_entries): added logic for yacc files.
+       (C_entries): Logical cplpl means c_ext&C_PLPL.
+       (C_entries): Logical yacc_rules means we are after the first %%.
+       (C_entries): Added logic for yacc files.
 
 1993-03-16  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
        * etags.c (C_entries): ':' case moved to the second switch.
-       (C_entries): do not examine token if structdef==scolonseen.
+       (C_entries): Do not examine token if structdef==scolonseen.
        (consider_token): structtag set to null string for enum.
 
 1993-03-12  Francesco Potort\e,Al\e(B  (pot@cnuce.cnr.it)
 
-       * etags.c (GET_COOKIE): and related macros removed.
-       (logical): is now int, no more a char.
-       (reg): define deleted.
-       (isgood, _gd, notgd): deleted.
-       (gotone): deleted.
-       (TOKEN): member linestart removed.
-       (linepos, prev_linepos, lb1): deleted.
-       (main): call initbuffer on lbs array instead of lb1.
-       (init): removed the initialisation of the logical _gd array;
-       (find_entries): a .sa suffix means assembler file.
+       * etags.c (GET_COOKIE): And related macros removed.
+       (logical): Is now int, no more a char.
+       (reg): Define deleted.
+       (isgood, _gd, notgd): Deleted.
+       (gotone): Deleted.
+       (TOKEN): Member linestart removed.
+       (linepos, prev_linepos, lb1): Deleted.
+       (main): Call initbuffer on lbs array instead of lb1.
+       (init): Removed the initialisation of the logical _gd array;
+       (find_entries): A .sa suffix means assembler file.
        (C_create_stab): "auto", "void", "extern", "static" are st_C_typespec.
        All C state machines rewritten.
-       (C_entries): complete rewrite.
-       (condider_token): complete rewrite.
-       (getline): deleted.
+       (C_entries): Complete rewrite.
+       (condider_token): Complete rewrite.
+       (getline): Deleted.
 
 1993-03-01  Francesco Potort\e,Al\e(B  (pot@fly.CNUCE.CNR.IT)
 
 
 1993-03-19  Eric S. Raymond  (eric@geech.gnu.ai.mit.edu)
 
-       * Makefile.in (EXECUTABLES): added rcs-checkin.
+       * Makefile.in (EXECUTABLES): Added rcs-checkin.
 
        * Makefile.in (unlock, relock): New productions.
 
 
 1992-05-04  Jim Blandy  (jimb@pogo.cs.oberlin.edu)
 
-       * Makefile.in: flags in CC invocations rearranged for no reason.
+       * Makefile.in: Flags in CC invocations rearranged for no reason.
 
 1992-04-20  Jim Blandy  (jimb@pogo.cs.oberlin.edu)
 
 
 1989-04-18  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
 
-       * loadst.c: on bsd4.3, use gettimeofday instead of CPUSTATES.
+       * loadst.c: On bsd4.3, use gettimeofday instead of CPUSTATES.
 
 1989-03-15  Jeff Peck  (rms@sugar-bombs.ai.mit.edu)
 
        * emacstool.c: setenv IN_EMACSTOOL=t, TERM=sun, TERMCAP=.
 
-       * emacsstool.1: update to document environment variables.
+       * emacsstool.1: Update to document environment variables.
 
 1989-02-21  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
 
 
 1988-09-24  Richard Stallman  (rms@gluteus.ai.mit.edu)
 
-       * etags.c (main): default setting of eflag was backwards.
+       * etags.c (main): Default setting of eflag was backwards.
 
 1988-09-23  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
 
 1988-04-28  Richard Stallman  (rms@frosted-flakes.ai.mit.edu)
 
        * movemail.c: #undef close, since config can #define it on V.3.
-       * emacsclient.c, fakemail.c, loadst.c, server.c: likewise.
+       * emacsclient.c, fakemail.c, loadst.c, server.c: Likewise.
 
 1988-04-26  Richard Stallman  (rms@lucky-charms.ai.mit.edu)
 
 
 1988-03-20  Richard M. Stallman  (rms@wilson)
 
-       * server.c [not BSD and not HAVE_SYSVIPC]: fix error message.
+       * server.c [not BSD and not HAVE_SYSVIPC]: Fix error message.
 
-       * loadst.c (main) [XENIX]: use /usr/spool/mail, not /usr/mail.
+       * loadst.c (main) [XENIX]: Use /usr/spool/mail, not /usr/mail.
 
 ;; Local Variables:
 ;; coding: iso-2022-7bit
index 5d8da71dbdda743843c0e876d62c679dadd43f1b..91074d3ccb1c5d6ebd0ec90a6146175ffbe562ba 100644 (file)
@@ -122,9 +122,6 @@ SCRIPTS= rcs2log vcdiff
 
 EXECUTABLES= ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}
 
-SOURCES = COPYING ChangeLog Makefile.in README emacs.csh \
-       makedoc.com *.[chy] rcs2log vcdiff
-
 # Additional -D flags for movemail (add to MOVE_FLAGS if desired):
 # MAIL_USE_POP         Support mail retrieval from a POP mailbox.
 # MAIL_USE_MMDF                Support MMDF mailboxes.
@@ -368,12 +365,6 @@ maintainer-clean: distclean
 extraclean: maintainer-clean
        -rm -f *~ \#*
 
-unlock:
-       chmod u+w $(SOURCES)
-
-relock:
-       chmod u-w $(SOURCES)
-
 /* Test the contents of the directory.  */
 check:
        @echo "We don't have any tests for GNU Emacs yet."
@@ -471,24 +462,3 @@ update-game-score${EXEEXT}: update-game-score.o $(GETOPTDEPS)
 update-game-score.o: ${srcdir}/update-game-score.c ../src/config.h $(GETOPT_H)
        $(CC) -c ${CPP_CFLAGS} ${srcdir}/update-game-score.c \
          -DHAVE_SHARED_GAME_DIR="\"$(gamedir)\""
-
-/* These are NOT included in INSTALLABLES or UTILITIES.
-   See ../src/Makefile.in.  */
-emacstool${EXEEXT}: ${srcdir}/emacstool.c
-       $(CC) ${srcdir}/emacstool.c -o emacstool ${ALL_CFLAGS} \
-         -lsuntool -lsunwindow -lpixrect $(LOADLIBES)
-
-/* For SUN Japanese Language Environment.  */
-nemacstool${EXEEXT}: ${srcdir}/emacstool.c
-       $(CC) -o nemacstool -DJLE ${ALL_CFLAGS} ${srcdir}/emacstool.c \
-         -lsuntool -lmle -lsunwindow -lpixrect $(LOADLIBES)
-
-xvetool${EXEEXT}: ${srcdir}/emacstool.c
-       $(CC) -o xvetool -DXVIEW ${ALL_CFLAGS} ${srcdir}/emacstool.c \
-         -lxview -lX -I$(OPENWINHOME)/include -L$(OPENWINHOME)/lib \
-         $(LOADLIBES)
-
-xveterm${EXEEXT}: ${srcdir}/emacstool.c
-       $(CC) -o xveterm -DXVIEW -DTTERM ${ALL_CFLAGS} ${srcdir}/emacstool.c \
-         -lxview -lolgx -lX  -I$(OPENWINHOME)/include -L$(OPENWINHOME)/lib \
-         $(LOADLIBES)
index c7f0bcf561326af9cebb7ca8ca2855b34931a11d..bfa4f9c01d7a23754574659fa5087ca077e778b1 100644 (file)
@@ -77,7 +77,12 @@ Boston, MA 02110-1301, USA.  */
 # include <pwd.h>
 #endif /* not WINDOWSNT */
 #endif /* not VMS */
+#include <sys/stat.h>
 
+#include <signal.h>
+#include <errno.h>
+
+\f
 char *getenv (), *getwd ();
 char *(getcwd) ();
 
@@ -85,8 +90,6 @@ char *(getcwd) ();
 #define VERSION "unspecified"
 #endif
 \f
-#define SEND_STRING(data) (send_to_emacs (s, (data)))
-#define SEND_QUOTED(data) (quote_file_name (s, (data)))
 
 #ifndef EXIT_SUCCESS
 #define EXIT_SUCCESS 0
@@ -111,15 +114,27 @@ char *(getcwd) ();
 /* Name used to invoke this program.  */
 char *progname;
 
+/* The second argument to main. */
+char **main_argv;
+
 /* Nonzero means don't wait for a response from Emacs.  --no-wait.  */
 int nowait = 0;
 
 /* Nonzero means args are expressions to be evaluated.  --eval.  */
 int eval = 0;
 
+/* Nonzero means don't open a new frame.  Inverse of --create-frame.  */
+int current_frame = 1;
+
+/* Nonzero means open a new graphical frame. */
+int window_system = 0;
+
 /* The display on which Emacs should work.  --display.  */
 char *display = NULL;
 
+/* Nonzero means open a new Emacs frame on the current terminal. */
+int tty = 0;
+
 /* If non-NULL, the name of an editor to fallback to if the server
    is not running.  --alternate-editor.   */
 const char *alternate_editor = NULL;
@@ -141,6 +156,8 @@ struct option longopts[] =
   { "eval",    no_argument,       NULL, 'e' },
   { "help",    no_argument,       NULL, 'H' },
   { "version", no_argument,       NULL, 'V' },
+  { "tty",     no_argument,       NULL, 't' },
+  { "create-frame", no_argument,   NULL, 'c' },
   { "alternate-editor", required_argument, NULL, 'a' },
 #ifndef NO_SOCKETS_IN_FILE_SYSTEM
   { "socket-name",     required_argument, NULL, 's' },
@@ -150,6 +167,130 @@ struct option longopts[] =
   { 0, 0, 0, 0 }
 };
 
+\f
+/* Like malloc but get fatal error if memory is exhausted.  */
+
+long *
+xmalloc (size)
+     unsigned int size;
+{
+  long *result = (long *) malloc (size);
+  if (result == NULL)
+    {
+      perror ("malloc");
+      exit (EXIT_FAILURE);
+    }
+  return result;
+}
+
+/* Like strdup but get a fatal error if memory is exhausted. */
+
+char *
+xstrdup (const char *s)
+{
+  char *result = strdup (s);
+  if (result == NULL)
+    {
+      perror ("strdup");
+      exit (EXIT_FAILURE);
+    }
+  return result;
+}
+
+/* From sysdep.c */
+#if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME)
+
+/* From lisp.h */
+#ifndef DIRECTORY_SEP
+#define DIRECTORY_SEP '/'
+#endif
+#ifndef IS_DIRECTORY_SEP
+#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
+#endif
+#ifndef IS_DEVICE_SEP
+#ifndef DEVICE_SEP
+#define IS_DEVICE_SEP(_c_) 0
+#else
+#define IS_DEVICE_SEP(_c_) ((_c_) == DEVICE_SEP)
+#endif
+#endif
+#ifndef IS_ANY_SEP
+#define IS_ANY_SEP(_c_) (IS_DIRECTORY_SEP (_c_))
+#endif
+
+
+/* Return the current working directory.  Returns NULL on errors.
+   Any other returned value must be freed with free. This is used
+   only when get_current_dir_name is not defined on the system.  */
+char*
+get_current_dir_name ()
+{
+  char *buf;
+  char *pwd;
+  struct stat dotstat, pwdstat;
+  /* If PWD is accurate, use it instead of calling getwd.  PWD is
+     sometimes a nicer name, and using it may avoid a fatal error if a
+     parent directory is searchable but not readable.  */
+    if ((pwd = getenv ("PWD")) != 0
+      && (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1])))
+      && stat (pwd, &pwdstat) == 0
+      && stat (".", &dotstat) == 0
+      && dotstat.st_ino == pwdstat.st_ino
+      && dotstat.st_dev == pwdstat.st_dev
+#ifdef MAXPATHLEN
+      && strlen (pwd) < MAXPATHLEN
+#endif
+      )
+    {
+      buf = (char *) xmalloc (strlen (pwd) + 1);
+      if (!buf)
+        return NULL;
+      strcpy (buf, pwd);
+    }
+#ifdef HAVE_GETCWD
+  else
+    {
+      size_t buf_size = 1024;
+      buf = (char *) xmalloc (buf_size);
+      if (!buf)
+        return NULL;
+      for (;;)
+        {
+          if (getcwd (buf, buf_size) == buf)
+            break;
+          if (errno != ERANGE)
+            {
+              int tmp_errno = errno;
+              free (buf);
+              errno = tmp_errno;
+              return NULL;
+            }
+          buf_size *= 2;
+          buf = (char *) realloc (buf, buf_size);
+          if (!buf)
+            return NULL;
+        }
+    }
+#else
+  else
+    {
+      /* We need MAXPATHLEN here.  */
+      buf = (char *) xmalloc (MAXPATHLEN + 1);
+      if (!buf)
+        return NULL;
+      if (getwd (buf) == NULL)
+        {
+          int tmp_errno = errno;
+          free (buf);
+          errno = tmp_errno;
+          return NULL;
+        }
+    }
+#endif
+  return buf;
+}
+#endif
+
 /* Message functions. */
 
 #ifdef WINDOWSNT
@@ -170,7 +311,41 @@ w32_window_app ()
 
   return window_app;
 }
-#endif
+
+/*
+  execvp wrapper for Windows.  Quotes arguments with embedded spaces.
+
+  This is necessary due to the broken implementation of exec* routines in
+  the Microsoft libraries: they concatenate the arguments together without
+  quoting special characters, and pass the result to CreateProcess, with
+  predictably bad results.  By contrast, Posix execvp passes the arguments
+  directly into the argv array of the child process.
+*/
+int
+w32_execvp (path, argv)
+     char *path;
+     char **argv;
+{
+  int i;
+
+  /* Required to allow a .BAT script as alternate editor.  */
+  argv[0] = (char *) alternate_editor;
+
+  for (i = 0; argv[i]; i++)
+    if (strchr (argv[i], ' '))
+      {
+       char *quoted = alloca (strlen (argv[i]) + 3);
+       sprintf (quoted, "\"%s\"", argv[i]);
+       argv[i] = quoted;
+      }
+
+  return execvp (path, argv);
+}
+
+#undef execvp
+#define execvp w32_execvp
+
+#endif /* WINDOWSNT */
 
 void
 message (int is_error, char *message, ...)
@@ -209,16 +384,19 @@ decode_options (argc, argv)
      char **argv;
 {
   alternate_editor = getenv ("ALTERNATE_EDITOR");
+  display = getenv ("DISPLAY");
+  if (display && strlen (display) == 0)
+    display = NULL;
 
   while (1)
     {
       int opt = getopt_long (argc, argv,
 #ifndef NO_SOCKETS_IN_FILE_SYSTEM
-                            "VHnea:s:f:d:",
+                            "VHnea:s:f:d:tc",
 #else
-                             "VHnea:f:d:",
+                            "VHnea:f:d:tc",
 #endif
-                             longopts, 0);
+                            longopts, 0);
 
       if (opt == EOF)
        break;
@@ -261,6 +439,15 @@ decode_options (argc, argv)
          exit (EXIT_SUCCESS);
          break;
 
+        case 't':
+          tty = 1;
+         current_frame = 0;
+          break;
+
+        case 'c':
+          current_frame = 0;
+          break;
+
        case 'H':
          print_help_and_exit ();
          break;
@@ -271,21 +458,49 @@ decode_options (argc, argv)
          break;
        }
     }
+
+  if (!tty && display)
+    window_system = 1;
+#if !defined (WINDOWSNT) && !defined (HAVE_CARBON)
+  else
+    tty = 1;
+#endif
+
+  /* --no-wait implies --current-frame on ttys when there are file
+       arguments or expressions given.  */
+  if (nowait && tty && argc - optind > 0)
+    current_frame = 1;
+
+  if (current_frame)
+    {
+      tty = 0;
+      window_system = 0;
+    }
+
+  if (tty)
+    window_system = 0;
 }
 
+\f
 void
 print_help_and_exit ()
 {
+  /* Spaces and tabs are significant in this message; they're chosen so the
+     message aligns properly both in a tty and in a Windows message box.
+     Please try to preserve them; otherwise the output is very hard to read
+     when using emacsclientw.  */
   message (FALSE,
-         "Usage: %s [OPTIONS] FILE...\n\
+          "Usage: %s [OPTIONS] FILE...\n\
 Tell the Emacs server to visit the specified files.\n\
 Every FILE can be either just a FILENAME or [+LINE[:COLUMN]] FILENAME.\n\
 \n\
 The following OPTIONS are accepted:\n\
-\n\
 -V, --version          Just print version info and return\n\
--H, --help             Print this usage information message\n\
--e, --eval             Evaluate FILE arguments as Lisp expressions\n\
+-H, --help             Print this usage information message\n\
+-t, --tty              Open a new Emacs frame on the current terminal\n\
+-c, --create-frame     Create a new frame instead of trying to\n\
+                       use the current Emacs frame\n\
+-e, --eval             Evaluate the FILE arguments as ELisp expressions\n\
 -n, --no-wait          Don't wait for the server to return\n\
 -d, --display=DISPLAY  Visit the file in the given display\n"
 #ifndef NO_SOCKETS_IN_FILE_SYSTEM
@@ -295,66 +510,27 @@ The following OPTIONS are accepted:\n\
 "-f, --server-file=FILENAME\n\
                        Set filename of the TCP authentication file\n\
 -a, --alternate-editor=EDITOR\n\
-                       Editor to fallback to if server is not running\n\
+                       Editor to fallback to if the server is not running\n\
 \n\
 Report bugs to bug-gnu-emacs@gnu.org.\n", progname);
   exit (EXIT_SUCCESS);
 }
 
-\f
-#ifdef WINDOWSNT
-
-/*
-  execvp wrapper for Windows. Quotes arguments with embedded spaces.
-
-  This is necessary due to the broken implementation of exec* routines in
-  the Microsoft libraries: they concatenate the arguments together without
-  quoting special characters, and pass the result to CreateProcess, with
-  predictably bad results.  By contrast, Posix execvp passes the arguments
-  directly into the argv array of the child process.
-*/
-int
-w32_execvp (path, argv)
-     char *path;
-     char **argv;
-{
-  int i;
-
-  /* Required to allow a .BAT script as alternate editor.  */
-  argv[0] = (char *) alternate_editor;
-
-  for (i = 0; argv[i]; i++)
-    if (strchr (argv[i], ' '))
-      {
-       char *quoted = alloca (strlen (argv[i]) + 3);
-       sprintf (quoted, "\"%s\"", argv[i]);
-       argv[i] = quoted;
-      }
-
-  return execvp (path, argv);
-}
-
-#undef execvp
-#define execvp w32_execvp
-
-#endif /* WINDOWSNT */
-
 /*
   Try to run a different command, or --if no alternate editor is
   defined-- exit with an errorcode.
+  Uses argv, but gets it from the global variable main_argv.
 */
 void
-fail (argc, argv)
-     int argc;
-     char **argv;
+fail (void)
 {
   if (alternate_editor)
     {
       int i = optind - 1;
 
-      execvp (alternate_editor, argv + i);
+      execvp (alternate_editor, main_argv + i);
       message (TRUE, "%s: error executing alternate editor \"%s\"\n",
-               progname, alternate_editor);
+              progname, alternate_editor);
     }
   exit (EXIT_FAILURE);
 }
@@ -367,10 +543,12 @@ main (argc, argv)
      int argc;
      char **argv;
 {
-  message (TRUE, "%s: Sorry, the Emacs server is supported only\non systems with Berkely sockets.\n",
+  main_argv = argv;
+  progname = argv[0];
+  message (TRUE, "%s: Sorry, the Emacs server is supported only\n"
+          "on systems with Berkeley sockets.\n",
           argv[0]);
-
-  fail (argc, argv);
+  fail ();
 }
 
 #else /* HAVE_SOCKETS && HAVE_INET_SOCKETS */
@@ -381,8 +559,6 @@ main (argc, argv)
 # include <sys/types.h>
 # include <sys/socket.h>
 # include <sys/un.h>
-# include <sys/stat.h>
-# include <errno.h>
 #endif
 
 #define AUTH_KEY_LENGTH      64
@@ -394,6 +570,8 @@ extern int errno;
 /* Buffer to accumulate data to send in TCP connections.  */
 char send_buffer[SEND_BUFFER_SIZE + 1];
 int sblen = 0; /* Fill pointer for the send buffer.  */
+/* Socket used to communicate with the Emacs server process.  */
+HSOCKET emacs_socket = 0;
 
 /* Let's send the data to Emacs when either
    - the data ends in "\n", or
@@ -434,18 +612,21 @@ send_to_emacs (s, data)
     }
 }
 
-/* In NAME, insert a & before each &, each space, each newline, and
+\f
+/* In STR, insert a & before each &, each space, each newline, and
    any initial -.  Change spaces to underscores, too, so that the
-   return value never contains a space.  */
+   return value never contains a space.
+
+   Does not change the string.  Outputs the result to STREAM.  */
 void
-quote_file_name (s, name)
+quote_argument (s, str)
      HSOCKET s;
-     char *name;
+     char *str;
 {
-  char *copy = (char *) malloc (strlen (name) * 2 + 1);
+  char *copy = (char *) xmalloc (strlen (str) * 2 + 1);
   char *p, *q;
 
-  p = name;
+  p = str;
   q = copy;
   while (*p)
     {
@@ -463,18 +644,54 @@ quote_file_name (s, name)
        }
       else
        {
-         if (*p == '&' || (*p == '-' && p == name))
+         if (*p == '&' || (*p == '-' && p == str))
            *q++ = '&';
          *q++ = *p++;
        }
     }
   *q++ = 0;
 
-  SEND_STRING (copy);
+  send_to_emacs (s, copy);
 
   free (copy);
 }
 
+
+/* The inverse of quote_argument.  Removes quoting in string STR by
+   modifying the string in place.   Returns STR. */
+
+char *
+unquote_argument (str)
+     char *str;
+{
+  char *p, *q;
+
+  if (! str)
+    return str;
+
+  p = str;
+  q = str;
+  while (*p)
+    {
+      if (*p == '&')
+        {
+          p++;
+          if (*p == '&')
+            *p = '&';
+          else if (*p == '_')
+            *p = ' ';
+          else if (*p == 'n')
+            *p = '\n';
+          else if (*p == '-')
+            *p = '-';
+        }
+      *q++ = *p++;
+    }
+  *q = 0;
+  return str;
+}
+
+\f
 int
 file_name_absolute_p (filename)
      const unsigned char *filename;
@@ -556,6 +773,7 @@ initialize_sockets ()
   atexit (close_winsock);
 }
 #endif /* WINDOWSNT */
+
 \f
 /*
  * Read the information needed to set up a TCP comm channel with
@@ -666,13 +884,22 @@ set_tcp_socket ()
    */
   auth_string[AUTH_KEY_LENGTH] = '\0';
 
-  SEND_STRING ("-auth ");
-  SEND_STRING (auth_string);
-  SEND_STRING ("\n");
+  send_to_emacs (s, "-auth ");
+  send_to_emacs (s, auth_string);
+  send_to_emacs (s, "\n");
 
   return s;
 }
 
+
+/* Returns 1 if PREFIX is a prefix of STRING. */
+static int
+strprefix (char *prefix, char *string)
+{
+  return !strncmp (prefix, string, strlen (prefix));
+}
+
+
 #if !defined (NO_SOCKETS_IN_FILE_SYSTEM)
 
 /* Three possibilities:
@@ -695,6 +922,93 @@ socket_status (socket_name)
   return 0;
 }
 
+\f
+/* A signal handler that passes the signal to the Emacs process.
+   Useful for SIGWINCH.  */
+
+SIGTYPE
+pass_signal_to_emacs (int signalnum)
+{
+  int old_errno = errno;
+
+  if (emacs_pid)
+    kill (emacs_pid, signalnum);
+
+  signal (signalnum, pass_signal_to_emacs);
+  errno = old_errno;
+}
+
+/* Signal handler for SIGCONT; notify the Emacs process that it can
+   now resume our tty frame.  */
+
+SIGTYPE
+handle_sigcont (int signalnum)
+{
+  int old_errno = errno;
+
+  if (tcgetpgrp (1) == getpgrp ())
+    {
+      /* We are in the foreground. */
+      send_to_emacs (emacs_socket, "-resume \n");
+    }
+  else
+    {
+      /* We are in the background; cancel the continue. */
+      kill (getpid (), SIGSTOP);
+    }
+
+  signal (signalnum, handle_sigcont);
+  errno = old_errno;
+}
+
+/* Signal handler for SIGTSTP; notify the Emacs process that we are
+   going to sleep.  Normally the suspend is initiated by Emacs via
+   server-handle-suspend-tty, but if the server gets out of sync with
+   reality, we may get a SIGTSTP on C-z.  Handling this signal and
+   notifying Emacs about it should get things under control again. */
+
+SIGTYPE
+handle_sigtstp (int signalnum)
+{
+  int old_errno = errno;
+  sigset_t set;
+
+  if (emacs_socket)
+    send_to_emacs (emacs_socket, "-suspend \n");
+
+  /* Unblock this signal and call the default handler by temprarily
+     changing the handler and resignalling. */
+  sigprocmask (SIG_BLOCK, NULL, &set);
+  sigdelset (&set, signalnum);
+  signal (signalnum, SIG_DFL);
+  kill (getpid (), signalnum);
+  sigprocmask (SIG_SETMASK, &set, NULL); /* Let's the above signal through. */
+  signal (signalnum, handle_sigtstp);
+
+  errno = old_errno;
+}
+/* Set up signal handlers before opening a frame on the current tty.  */
+
+void
+init_signals (void)
+{
+  /* Set up signal handlers. */
+  signal (SIGWINCH, pass_signal_to_emacs);
+
+  /* Don't pass SIGINT and SIGQUIT to Emacs, because it has no way of
+     deciding which terminal the signal came from.  C-g is now a
+     normal input event on secondary terminals.  */
+#if 0
+  signal (SIGINT, pass_signal_to_emacs);
+  signal (SIGQUIT, pass_signal_to_emacs);
+#endif
+
+  signal (SIGCONT, handle_sigcont);
+  signal (SIGTSTP, handle_sigtstp);
+  signal (SIGTTOU, handle_sigtstp);
+}
+
+
 HSOCKET
 set_local_socket ()
 {
@@ -716,30 +1030,30 @@ set_local_socket ()
   {
     int sock_status = 0;
     int default_sock = !socket_name;
-    int saved_errno;
+    int saved_errno = 0;
     char *server_name = "server";
 
     if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\'))
       { /* socket_name is a file name component.  */
-       server_name = socket_name;
-       socket_name = NULL;
-       default_sock = 1;       /* Try both UIDs.  */
+       server_name = socket_name;
+       socket_name = NULL;
+       default_sock = 1;       /* Try both UIDs.  */
       }
 
     if (default_sock)
       {
-       socket_name = alloca (100 + strlen (server_name));
-       sprintf (socket_name, "/tmp/emacs%d/%s",
-                (int) geteuid (), server_name);
+       socket_name = alloca (100 + strlen (server_name));
+       sprintf (socket_name, "/tmp/emacs%d/%s",
+                (int) geteuid (), server_name);
       }
 
     if (strlen (socket_name) < sizeof (server.sun_path))
       strcpy (server.sun_path, socket_name);
     else
       {
-       message (TRUE, "%s: socket-name %s too long",
-                progname, socket_name);
-       exit (EXIT_FAILURE);
+        message (TRUE, "%s: socket-name %s too long",
+                 progname, socket_name);
+        fail ();
       }
 
     /* See if the socket exists, and if it's owned by us. */
@@ -778,7 +1092,7 @@ set_local_socket ()
                  }
 
                sock_status = socket_status (server.sun_path);
-               saved_errno = errno;
+                saved_errno = errno;
              }
            else
              errno = saved_errno;
@@ -788,26 +1102,26 @@ set_local_socket ()
     switch (sock_status)
       {
       case 1:
-        /* There's a socket, but it isn't owned by us.  This is OK if
-           we are root. */
-        if (0 != geteuid ())
-          {
-            message (TRUE, "%s: Invalid socket owner\n", progname);
+       /* There's a socket, but it isn't owned by us.  This is OK if
+          we are root. */
+       if (0 != geteuid ())
+         {
+           message (TRUE, "%s: Invalid socket owner\n", progname);
            return INVALID_SOCKET;
-          }
-        break;
+         }
+       break;
 
       case 2:
-        /* `stat' failed */
-        if (saved_errno == ENOENT)
-          message (TRUE,
-                   "%s: can't find socket; have you started the server?\n\
+       /* `stat' failed */
+       if (saved_errno == ENOENT)
+         message (TRUE,
+                  "%s: can't find socket; have you started the server?\n\
 To start the server in Emacs, type \"M-x server-start\".\n",
                   progname);
-        else
-          message (TRUE, "%s: can't stat %s: %s\n",
+       else
+         message (TRUE, "%s: can't stat %s: %s\n",
                   progname, server.sun_path, strerror (saved_errno));
-        return INVALID_SOCKET;
+       return INVALID_SOCKET;
       }
   }
 
@@ -835,10 +1149,9 @@ set_socket ()
     {
       s = set_local_socket ();
       if ((s != INVALID_SOCKET) || alternate_editor)
-        return s;
-
+       return s;
       message (TRUE, "%s: error accessing socket \"%s\"",
-               progname, socket_name);
+              progname, socket_name);
       exit (EXIT_FAILURE);
     }
 #endif
@@ -851,10 +1164,10 @@ set_socket ()
     {
       s = set_tcp_socket ();
       if ((s != INVALID_SOCKET) || alternate_editor)
-        return s;
+       return s;
 
       message (TRUE, "%s: error accessing server file \"%s\"",
-               progname, server_file);
+              progname, server_file);
       exit (EXIT_FAILURE);
     }
 
@@ -943,129 +1256,264 @@ main (argc, argv)
      int argc;
      char **argv;
 {
-  HSOCKET s;
   int i, rl, needlf = 0;
-  char *cwd;
+  char *cwd, *str;
   char string[BUFSIZ+1];
 
+  main_argv = argv;
   progname = argv[0];
 
   /* Process options.  */
   decode_options (argc, argv);
 
-  if ((argc - optind < 1) && !eval)
+  if ((argc - optind < 1) && !eval && !tty && !window_system)
     {
-      message (TRUE, "%s: file name or argument required\nTry `%s --help' for more information\n",
-              progname, progname);
+      message (TRUE, "%s: file name or argument required\n"
+              "Try `%s --help' for more information\n",
+              progname, progname);
       exit (EXIT_FAILURE);
     }
 
-  if ((s = set_socket ()) == INVALID_SOCKET)
-    fail (argc, argv);
+  if ((emacs_socket = set_socket ()) == INVALID_SOCKET)
+    fail ();
 
-#ifdef HAVE_GETCWD
-  cwd = getcwd (string, sizeof string);
-#else
-  cwd = getwd (string);
-#endif
+
+  cwd = get_current_dir_name ();
   if (cwd == 0)
     {
       /* getwd puts message in STRING if it fails.  */
-      message (TRUE, "%s: %s (%s)\n", progname,
-#ifdef HAVE_GETCWD
-              "Cannot get current working directory",
-#else
-              string,
-#endif
-              strerror (errno));
-      fail (argc, argv);
+      message (TRUE, "%s: %s\n", progname,
+              "Cannot get current working directory");
+      fail ();
     }
 
 #ifdef WINDOWSNT
   w32_give_focus ();
 #endif
 
+  /* Send over our environment. */
+  if (!current_frame)
+    {
+      extern char **environ;
+      int i;
+      for (i = 0; environ[i]; i++)
+        {
+          char *name = xstrdup (environ[i]);
+          char *value = strchr (name, '=');
+          send_to_emacs (emacs_socket, "-env ");
+          quote_argument (emacs_socket, environ[i]);
+          send_to_emacs (emacs_socket, " ");
+        }
+    }
+
+  /* Send over our current directory. */
+  if (!current_frame)
+    {
+      send_to_emacs (emacs_socket, "-dir ");
+      quote_argument (emacs_socket, cwd);
+      send_to_emacs (emacs_socket, "/");
+      send_to_emacs (emacs_socket, " ");
+    }
+
+ retry:
   if (nowait)
-    SEND_STRING ("-nowait ");
+    send_to_emacs (emacs_socket, "-nowait ");
 
-  if (eval)
-    SEND_STRING ("-eval ");
+  if (current_frame)
+    send_to_emacs (emacs_socket, "-current-frame ");
 
   if (display)
     {
-      SEND_STRING ("-display ");
-      SEND_QUOTED (display);
-      SEND_STRING (" ");
+      send_to_emacs (emacs_socket, "-display ");
+      quote_argument (emacs_socket, display);
+      send_to_emacs (emacs_socket, " ");
+    }
+
+  if (tty)
+    {
+      char *type = getenv ("TERM");
+      char *tty_name = NULL;
+#ifndef WINDOWSNT
+      tty_name = ttyname (fileno (stdin));
+#endif
+
+      if (! tty_name)
+        {
+          message (TRUE, "%s: could not get terminal name\n", progname);
+          fail ();
+        }
+
+      if (! type)
+        {
+          message (TRUE, "%s: please set the TERM variable to your terminal type\n",
+                   progname);
+          fail ();
+        }
+
+      if (! strcmp (type, "eterm"))
+        {
+          /* This causes nasty, MULTI_KBOARD-related input lockouts. */
+          message (TRUE, "%s: opening a frame in an Emacs term buffer"
+                   " is not supported\n", progname);
+          fail ();
+        }
+#if !defined (NO_SOCKETS_IN_FILE_SYSTEM)
+      init_signals ();
+#endif
+
+      send_to_emacs (emacs_socket, "-tty ");
+      quote_argument (emacs_socket, tty_name);
+      send_to_emacs (emacs_socket, " ");
+      quote_argument (emacs_socket, type);
+      send_to_emacs (emacs_socket, " ");
     }
 
+  if (window_system)
+    send_to_emacs (emacs_socket, "-window-system ");
+
   if ((argc - optind > 0))
     {
       for (i = optind; i < argc; i++)
        {
+          int relative = 0;
+
          if (eval)
-           ; /* Don't prepend any cwd or anything like that.  */
-         else if (*argv[i] == '+')
-           {
+            {
+              /* Don't prepend cwd or anything like that.  */
+              send_to_emacs (emacs_socket, "-eval ");
+              quote_argument (emacs_socket, argv[i]);
+              send_to_emacs (emacs_socket, " ");
+              continue;
+            }
+
+          if (*argv[i] == '+')
+            {
              char *p = argv[i] + 1;
              while (isdigit ((unsigned char) *p) || *p == ':') p++;
-             if (*p != 0)
-               {
-                 SEND_QUOTED (cwd);
-                 SEND_STRING ("/");
-               }
-           }
+             if (*p == 0)
+                {
+                  send_to_emacs (emacs_socket, "-position ");
+                  quote_argument (emacs_socket, argv[i]);
+                  send_to_emacs (emacs_socket, " ");
+                  continue;
+                }
+              else
+                relative = 1;
+            }
           else if (! file_name_absolute_p (argv[i]))
-           {
-             SEND_QUOTED (cwd);
-             SEND_STRING ("/");
-           }
-
-         SEND_QUOTED (argv[i]);
-         SEND_STRING (" ");
-       }
+            relative = 1;
+
+          send_to_emacs (emacs_socket, "-file ");
+          if (relative)
+            {
+              quote_argument (emacs_socket, cwd);
+              send_to_emacs (emacs_socket, "/");
+            }
+          quote_argument (emacs_socket, argv[i]);
+          send_to_emacs (emacs_socket, " ");
+        }
     }
   else
     {
-      while (fgets (string, BUFSIZ, stdin))
-       {
-         SEND_QUOTED (string);
-       }
-      SEND_STRING (" ");
+      if (!tty && !window_system)
+        {
+          while ((str = fgets (string, BUFSIZ, stdin)))
+            {
+              if (eval)
+                send_to_emacs (emacs_socket, "-eval ");
+              else
+                send_to_emacs (emacs_socket, "-file ");
+              quote_argument (emacs_socket, str);
+            }
+          send_to_emacs (emacs_socket, " ");
+        }
     }
 
-  SEND_STRING ("\n");
+  send_to_emacs (emacs_socket, "\n");
+
+  /* Wait for an answer. */
+  if (!eval && !tty && !nowait)
+    {
+      printf ("Waiting for Emacs...");
+      needlf = 2;
+    }
+  fflush (stdout);
+  fsync (1);
 
-  /* Maybe wait for an answer.   */
-  if (!nowait)
+  /* Now, wait for an answer and print any messages.  */
+  while ((rl = recv (emacs_socket, string, BUFSIZ, 0)) > 0)
     {
-      if (!eval)
+      char *p;
+      string[rl] = '\0';
+
+      p = string + strlen (string) - 1;
+      while (p > string && *p == '\n')
+        *p-- = 0;
+
+      if (strprefix ("-emacs-pid ", string))
         {
-          printf ("Waiting for Emacs...");
-          needlf = 2;
+          /* -emacs-pid PID: The process id of the Emacs process. */
+          emacs_pid = strtol (string + strlen ("-emacs-pid"), NULL, 10);
         }
-      fflush (stdout);
-
-      /* Now, wait for an answer and print any messages.  */
-      while ((rl = recv (s, string, BUFSIZ, 0)) > 0)
+      else if (strprefix ("-window-system-unsupported ", string))
         {
-         string[rl] = '\0';
-          if (needlf == 2)
+          /* -window-system-unsupported: Emacs was compiled without X
+              support.  Try again on the terminal. */
+          window_system = 0;
+          nowait = 0;
+          tty = 1;
+          goto retry;
+        }
+      else if (strprefix ("-print ", string))
+        {
+          /* -print STRING: Print STRING on the terminal. */
+          str = unquote_argument (string + strlen ("-print "));
+          if (needlf)
             printf ("\n");
-         printf ("%s", string);
-         needlf = string[0] == '\0' ? needlf : string[strlen (string) - 1] != '\n';
+          printf ("%s", str);
+          needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n';
+        }
+      else if (strprefix ("-error ", string))
+        {
+          /* -error DESCRIPTION: Signal an error on the terminal. */
+          str = unquote_argument (string + strlen ("-error "));
+          if (needlf)
+            printf ("\n");
+          fprintf (stderr, "*ERROR*: %s", str);
+          needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n';
+        }
+#ifdef SIGSTOP
+      else if (strprefix ("-suspend ", string))
+        {
+          /* -suspend: Suspend this terminal, i.e., stop the process. */
+          if (needlf)
+            printf ("\n");
+          needlf = 0;
+          kill (0, SIGSTOP);
+        }
+#endif
+      else
+        {
+          /* Unknown command. */
+          if (needlf)
+            printf ("\n");
+          printf ("*ERROR*: Unknown message: %s", string);
+          needlf = string[0] == '\0' ? needlf : string[strlen (string) - 1] != '\n';
         }
-
-      if (needlf)
-        printf ("\n");
-      fflush (stdout);
     }
 
-  CLOSE_SOCKET (s);
+  if (needlf)
+    printf ("\n");
+  fflush (stdout);
+  fsync (1);
+
+  CLOSE_SOCKET (emacs_socket);
   return EXIT_SUCCESS;
 }
 
 #endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */
 
+\f
 #ifndef HAVE_STRERROR
 char *
 strerror (errnum)
diff --git a/lib-src/emacstool.c b/lib-src/emacstool.c
deleted file mode 100644 (file)
index 7b39d2e..0000000
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
-   Copyright (C) 1986, 1988, 1990, 1991, 2001, 2002, 2003, 2004,
-                 2005, 2006, 2007  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, 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; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA.  */
-
-/*
- * For Emacs in SunView/Sun-Windows: (supported by Sun Unix v3.2 or greater)
- * Insert a notifier filter-function to convert all useful input
- * to "key" sequences that emacs can understand.  See: Emacstool(1).
- *
- * Author: Jeff Peck, Sun Microsystems, Inc. <peck@eng.sun.com>
- *
- * Original Idea: Ian Batten
- * Updated 15-Mar-88, Jeff Peck: set IN_EMACSTOOL, TERM, TERMCAP
- * Updated 10-Sep-88, Jeff Peck: add XVIEW and JLE support
- * Updated  8-Oct-90, Jeff Peck: add Meta-bit for Xview
- * Updated  6-Mar-91, Jeff Peck: Hack to detect -Wt invocation
- *     [note, TTYSW limitation means you must Click-To-Type in Openwin]
- *     [fixed in OW3 or use local/tty.o]
- *     for better results, this should move to using TERMSW.
- * Updated 10-Mar-91, Jeff Peck, et al: support for TERMSW (TTERM)
- *     allows point-to-type even in OW2
- *
- *     [note: xvetool should be started with the "-nw" flag for emacs!]
- */
-
-#ifdef XVIEW
-#include <xview/xview.h>
-#include <xview/panel.h>
-#include <xview/attr.h>
-#include <xview/tty.h>
-#include <xview/ttysw.h>               /* private defines */
-#include <xview/termsw.h>              /* -DTTERM */
-#include <xview/font.h>                        /* for testing */
-#else
-#include <suntool/sunview.h>
-#include <suntool/tty.h>
-#include <suntool/ttysw.h>
-#endif XVIEW
-
-#ifdef JLE
-# include <locale.h>
-#endif JLE
-
-#include <stdio.h>
-#include <sys/file.h>
-
-#define BUFFER_SIZE 128               /* Size of all the buffers */
-
-/* define WANT_CAPS_LOCK to make f-key T1 (aka F1) behave as CapsLock */
-#define WANT_CAPS_LOCK
-#ifdef WANT_CAPS_LOCK
-int caps_lock;         /* toggle indicator for f-key T1 caps lock */
-static char *Caps = "[CAPS] ";         /* Caps Lock prefix string */
-#define CAPS_LEN 7                     /* strlen (Caps) */
-#endif
-
-static char *mouse_prefix = "\030\000";        /* C-x C-@ */
-static int   m_prefix_length = 2;       /* mouse_prefix length */
-
-static char *key_prefix = "\030*";     /* C-x *   */
-static int   k_prefix_length = 2;       /* key_prefix length */
-
-#ifdef JLE
-static char *emacs_name = "nemacs";    /* default run command */
-static char *title = "NEmacstool - ";  /* initial title */
-#else
-static char *emacs_name = "emacs";     /* default run command */
-static char *title = "Emacstool - ";   /* initial title */
-#endif JLE
-
-static char buffer[BUFFER_SIZE];       /* send to ttysw_input */
-static char *bold_name = 0;            /* for -bold option */
-
-Frame frame;                            /* Base frame for system */
-
-#ifndef TTERM
-#define SWTYPE TTY
-Tty tty_win;                           /* Where emacs is reading */
-#else
-#define SWTYPE TERMSW
-Termsw tty_win;                                /* Termsw does follow-mouse */
-#endif TTERM
-
-#ifdef XVIEW
-Xv_Window tty_view;                    /* Where the events are in Xview*/
-#else
-Tty tty_view;                          /* SunView place filler */
-#endif XVIEW
-
-int font_width, font_height;            /* For translating pixels to chars */
-int left_margin = 0;           /* default window -- frame offset */
-
-int console_fd = 0;            /* for debugging: setenv DEBUGEMACSTOOL */
-FILE *console;                 /* for debugging: setenv DEBUGEMACSTOOL */
-
-Icon frame_icon;
-/* make an icon_image for the default frame_icon */
-static short default_image[258] =
-{
-#include <images/terminal.icon>
-};
-mpr_static(icon_image, 64, 64, 1, default_image);
-\f
-/*
- * Assign a value to a set of keys
- */
-int
-button_value (event)
-     Event *event;
-{
-  int retval = 0;
-  /*
-   * Code up the current situation:
-   *
-   * 1 = MS_LEFT;
-   * 2 = MS_MIDDLE;
-   * 4 = MS_RIGHT;
-   * 8 = SHIFT;
-   * 16 = CONTROL;
-   * 32 = META;
-   * 64 = DOUBLE;
-   * 128 = UP;
-   */
-
-  if (MS_LEFT   == (event_id (event))) retval = 1;
-  if (MS_MIDDLE == (event_id (event))) retval = 2;
-  if (MS_RIGHT  == (event_id (event))) retval = 4;
-
-  if (event_shift_is_down (event)) retval += 8;
-  if (event_ctrl_is_down  (event)) retval += 16;
-  if (event_meta_is_down  (event)) retval += 32;
-  if (event_is_up         (event)) retval += 128;
-  return retval;
-}
-\f
-/*
- *  Variables to store the time of the previous mouse event that was
- *  sent to emacs.
- *
- *  The theory is that to time double clicks while ignoring UP buttons,
- *  we must keep track of the accumulated time.
- *
- *  If someone writes a SUN-SET-INPUT-MASK for emacstool,
- *  That could be used to selectively disable UP events,
- *  and then this cruft wouldn't be necessary.
- */
-static long prev_event_sec = 0;
-static long prev_event_usec = 0;
-
-/*
- *  Give the time difference in milliseconds, where one second
- *  is considered infinite.
- */
-int
-time_delta (now_sec, now_usec, prev_sec, prev_usec)
-     long now_sec, now_usec, prev_sec, prev_usec;
-{
-  long sec_delta = now_sec - prev_sec;
-  long usec_delta = now_usec - prev_usec;
-
-  if (usec_delta < 0) {                /* "borrow" a second */
-    usec_delta += 1000000;
-    --sec_delta;
-  }
-
-  if (sec_delta >= 10)
-    return (9999);             /* Infinity */
-  else
-    return ((sec_delta * 1000) + (usec_delta / 1000));
-}
-
-\f
-/*
- * Filter function to translate selected input events for emacs
- * Mouse button events become ^X^@(button x-col y-line time-delta) .
- * Function keys: ESC-*{c}{lrt} l,r,t for Left, Right, Top;
- * {c} encodes the keynumber as a character [a-o]
- */
-static Notify_value
-input_event_filter_function (window, event, arg, type)
-#ifdef XVIEW
-     Xv_Window window;
-#else
-     Window window;
-#endif XVIEW
-     Event *event;
-     Notify_arg arg;
-     Notify_event_type type;
-{
-  struct timeval time_stamp;
-
-  if (console_fd) fprintf(console, "Event: %d\n", event_id(event));
-
-  /* UP L1 is the STOP key */
-  if (event_id(event) == WIN_STOP) {
-    ttysw_input(tty_win, "\007\007\007\007\007\007\007", 7);
-    return NOTIFY_IGNORED;
-  }
-
-  /* UP L5 & L7 is Expose & Open, let them pass to sunview */
-  if (event_id(event) == KEY_LEFT(5) || event_id(event) == KEY_LEFT(7))
-    if(event_is_up (event))
-      return notify_next_event_func (window, event, arg, type);
-    else return NOTIFY_IGNORED;
-
-  if (event_is_button (event)) {             /* do Mouse Button events */
-/* Commented out so that we send mouse up events too.
-   if (event_is_up (event))
-      return notify_next_event_func (window, event, arg, type);
-*/
-    time_stamp = event_time (event);
-    ttysw_input (tty_win, mouse_prefix, m_prefix_length);
-    sprintf (buffer, "(%d %d %d %d)\015",
-            button_value (event),
-            (event_x (event) - left_margin) / font_width,
-            event_y (event) / font_height,
-            time_delta (time_stamp.tv_sec, time_stamp.tv_usec,
-                        prev_event_sec, prev_event_usec)
-            );
-    ttysw_input (tty_win, buffer, strlen(buffer));
-    prev_event_sec = time_stamp.tv_sec;
-    prev_event_usec = time_stamp.tv_usec;
-    return NOTIFY_IGNORED;
-  }
-
-  { /* Do the function key events */
-    int d;
-    char c = (char) 0;
-    if ((event_is_key_left  (event)) ?
-       ((d = event_id(event) - KEY_LEFT(1)   + 'a'), c='l') :
-       ((event_is_key_right (event)) ?
-        ((d = event_id(event) - KEY_RIGHT(1) + 'a'), c='r') :
-        ((event_is_key_top   (event)) ?
-         ((d = event_id(event) - KEY_TOP(1)  + 'a'), c='t') : 0)))
-      {
-       if (event_is_up(event)) return NOTIFY_IGNORED;
-       if (event_shift_is_down (event)) c = c -  32;
-       /* this will give a non-{lrt} for unshifted keys */
-       if (event_ctrl_is_down  (event)) c = c -  64;
-       if (event_meta_is_down  (event)) c = c + 128;
-#ifdef WANT_CAPS_LOCK
-/* set a toggle and relabel window so T1 can act like caps-lock */
-       if (event_id(event) == KEY_TOP(1))
-         {
-           /* make a frame label with and without CAPS */
-           strcpy (buffer, Caps);
-           title = &buffer[CAPS_LEN];
-           strncpy (title, (char *)window_get (frame, FRAME_LABEL),
-                    BUFFER_SIZE - CAPS_LEN);
-           buffer[BUFFER_SIZE] = (char) 0;
-           if (strncmp (title, Caps, CAPS_LEN) == 0)
-             title += CAPS_LEN;                 /* already Caps */
-           caps_lock =  (caps_lock ? 0 : CAPS_LEN);
-           window_set(frame, FRAME_LABEL, (title -= caps_lock), 0);
-           return NOTIFY_IGNORED;
-         }
-#endif
-       ttysw_input (tty_win, key_prefix, k_prefix_length);
-       sprintf (buffer, "%c%c", d, c);
-       ttysw_input(tty_win, buffer, strlen(buffer));
-
-       return NOTIFY_IGNORED;
-      }
-  }
-  if ((event_is_ascii(event) || event_is_meta(event))
-      && event_is_up(event)) return NOTIFY_IGNORED;
-#ifdef WANT_CAPS_LOCK
-/* shift alpha chars to upper case if toggle is set */
-  if ((caps_lock) && event_is_ascii(event)
-      && (event_id(event) >= 'a') && (event_id(event) <= 'z'))
-    event_set_id(event, (event_id(event) - 32));
-/* crufty, but it works for now. is there an UPCASE(event)? */
-#endif
-#ifndef NO_META_BIT
-/* under Openwindows/X, the meta bit is not set in the key event,
- * emacs expects this so we add it in here:
- */
-  if (event_is_ascii(event) && event_meta_is_down(event))
-    event_set_id(event, 128 | event_id(event));
-#endif
-  return notify_next_event_func (window, event, arg, type);
-}
-\f
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  int error_code;      /* Error codes */
-
-#ifdef JLE
-  setlocale(LC_ALL, "");
-#endif JLE
-
-  if(getenv("DEBUGEMACSTOOL"))
-    console = fdopen (console_fd = open("/dev/console",O_WRONLY), "w");
-
-  putenv("IN_EMACSTOOL=t");    /* notify subprocess that it is in emacstool */
-
-  if (putenv("TERM=sun") != 0) /* TTY_WIN will be a TERM=sun window */
-    {fprintf (stderr, "%s: Could not set TERM=sun, using `%s'\n",
-            argv[0], (char *)getenv("TERM")) ;};
-  /*
-   * If TERMCAP starts with a slash, it is the pathname of the
-   * termcap file, not an entry extracted from it, so KEEP it!
-   * Otherwise, it may not relate to the new TERM, so Nuke-It.
-   * If there is no TERMCAP environment variable, don't make one.
-   */
-  {
-    char *termcap ;    /* Current TERMCAP value */
-    termcap = (char *)getenv("TERMCAP") ;
-    if (termcap && (*termcap != '/'))
-      {
-       if (putenv("TERMCAP=") != 0)
-         {fprintf (stderr, "%s: Could not clear TERMCAP\n", argv[0]) ;} ;
-      } ;
-  } ;
-
-  /* find command to run as subprocess in window */
-  if (!(argv[0] = (char *)getenv("EMACSTOOL")))        /*  Set emacs command name */
-      argv[0] = emacs_name;
-  /* Emacstool recognizes two special args: -rc <file> and -bold <bold-name> */
-  for (argc = 1; argv[argc]; argc++)           /* Use last one on line */
-    {
-      if(!(strcmp ("-rc", argv[argc])))                /* Override if -rc given */
-       {int i = argc;
-        argv[argc--]=0;                /* kill the -rc argument */
-        if (argv[i+1]) {       /* move to argv[0] and squeeze the rest */
-          argv[0]=argv[i+1];
-          for (; argv[i+2]; (argv[i]=argv[i+2],argv[++i]=0));
-        }
-       }
-
-      if (!(strcmp ("-bold", argv[argc])))
-         {int i = argc;
-          argv[argc--]=0;              /* kill the -bold argument */
-          if (argv[i+1]) {     /* move to bold_name and squeeze the rest */
-              bold_name = argv[i+1];
-              for (; argv[i+2]; (argv[i]=argv[i+2],argv[++i]=0));
-          }
-       }
-  };
-
-  strcpy (buffer, title);
-  strncat (buffer, argv[0],             /* append run command name */
-          (BUFFER_SIZE - (strlen (buffer)) - (strlen (argv[0]))) - 1);
-
-  error_code = interpose_on_window(argc,argv);
-  if (error_code != 0) {               /* Barf */
-      fprintf (stderr, "notify_interpose_event_func returns %d.\n", error_code);
-      exit (1);
-  }
-
-#ifdef XVIEW
-  xv_main_loop (frame);                  /* And away we go */
-#else
-  window_main_loop (frame);
-#endif XVIEW
-}
-
-#ifdef XVIEW
-int interpose_on_window(argc,argv)
-    int argc;
-    char **argv;
-{
-#ifndef TTERM
-    int i, font_width_adjust = 1; /* hackery, and heuristics */
-    /* if -Wt is not supplied, then font comes out as lucida-14 (width=8)
-     * rather than the screen.r.12 (width=7) typically used
-     * this hack attempts to workaround it.
-     * could use a env var EMACSTOOL_DEFAULT_FONT_WIDTH instead */
-    for (i = 1; argv[i]; i++) {
-       if (!(strcmp ("-Wt", argv[i])))
-           {font_width_adjust = 0;
-            if (console_fd) fprintf(console, "-Wt = %d\n", font_width_adjust);
-            break;}
-    }
-#endif TTERM
-    /* initialize Xview, and strip window args */
-    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, 0);
-
-    /* do this first, so arglist can override it */
-    frame_icon = icon_create (ICON_LABEL, "Emacstool",
-                             ICON_IMAGE, &icon_image,
-                             0);
-
-    /* Build a frame to run in */
-    frame = xv_create ((Xv_Window)NULL, FRAME,
-                      FRAME_LABEL, buffer,
-                      FRAME_ICON, frame_icon,
-                      0);
-
-    /* Create a tty with emacs in it */
-    tty_win = xv_create (frame, SWTYPE, WIN_IS_CLIENT_PANE,
-                        TTY_QUIT_ON_CHILD_DEATH, TRUE,
-                        TTY_BOLDSTYLE, TTYSW_BOLD_INVERT,
-                        TTY_ARGV, argv,
-                        0);
-
-    if (bold_name) {
-       (void)xv_set(tty_win, TTY_BOLDSTYLE_NAME, bold_name, 0);
-    }
-
-    {
-       Xv_font font;           /* declare temp font variable */
-       font = (Xv_font)xv_get (tty_win, XV_FONT);
-       font_height = (int)xv_get (font, FONT_DEFAULT_CHAR_HEIGHT);
-       font_width  = (int)xv_get (font, FONT_DEFAULT_CHAR_WIDTH);
-    }
-    if (console_fd) fprintf(console, "Width = %d\n", font_width);
-
-#ifndef TTERM
-    font_width -= font_width_adjust; /* A guess! font bug in ttysw*/
-#else
-    /* make the termsw act as a tty */
-    xv_set(tty_win, TERMSW_MODE, TTYSW_MODE_TYPE, 0);
-    /* termsw has variable offset depending on scrollbar size/location */
-    left_margin = (int)xv_get (tty_win, TEXTSW_LEFT_MARGIN);
-#endif TTERM
-
-    tty_view = (Xv_Window) xv_get (tty_win, OPENWIN_NTH_VIEW, 0);
-    xv_set(tty_view,
-          WIN_CONSUME_EVENTS,
-          WIN_MOUSE_BUTTONS, WIN_UP_EVENTS,
-          ACTION_ADJUST, ACTION_MENU,
-          WIN_ASCII_EVENTS,
-          WIN_LEFT_KEYS, WIN_TOP_KEYS, WIN_RIGHT_KEYS,
-          0,
-          0);
-    /* Interpose my event function */
-    return (int) notify_interpose_event_func
-       (tty_view, input_event_filter_function, NOTIFY_SAFE);
-}
-#else
-int interpose_on_window (argc, argv)
- int argc;
- char **argv;
-{
-    /* do this first, so arglist can override it */
-    frame_icon = icon_create (ICON_LABEL, "Emacstool",
-                             ICON_IMAGE, &icon_image,
-                             0);
-
-    /* Build a frame to run in */
-    frame = window_create ((Window)NULL, FRAME,
-                          FRAME_LABEL, buffer,
-                          FRAME_ICON, frame_icon,
-                          FRAME_ARGC_PTR_ARGV, &argc, argv,
-                          0);
-
-    /* Create a tty with emacs in it */
-    tty_win = window_create (frame, TTY,
-                            TTY_QUIT_ON_CHILD_DEATH, TRUE,
-                            TTY_BOLDSTYLE, TTYSW_BOLD_INVERT,
-                            TTY_ARGV, argv,
-                            0);
-
-    if (bold_name) {
-       (void)window_set(tty_win, TTY_BOLDSTYLE_NAME, bold_name, 0);
-    }
-
-    /* ttysw uses pf_default, one must set WIN_FONT explicitly */
-                       window_set (tty_win, WIN_FONT, pf_default(), 0);
-    font_height = (int)window_get (tty_win, WIN_ROW_HEIGHT);
-    font_width  = (int)window_get (tty_win, WIN_COLUMN_WIDTH);
-
-    tty_view = tty_win;
-    window_set(tty_view,
-              WIN_CONSUME_PICK_EVENTS,
-              WIN_STOP,
-              WIN_MOUSE_BUTTONS, WIN_UP_EVENTS,
-              /* LOC_WINENTER, LOC_WINEXIT, LOC_MOVE, */
-              0,
-              WIN_CONSUME_KBD_EVENTS,
-              WIN_STOP,
-              WIN_ASCII_EVENTS,
-              WIN_LEFT_KEYS, WIN_TOP_KEYS, WIN_RIGHT_KEYS,
-              /* WIN_UP_ASCII_EVENTS, */
-              0,
-              0);
-    /* Interpose my event function */
-    return (int) notify_interpose_event_func
-       (tty_view, input_event_filter_function, NOTIFY_SAFE);
-}
-#endif XVIEW
-
-/* arch-tag: 7a2e7105-c059-418a-b3d9-5b5de96abb4e
-   (do not change this comment) */
index 5da144c46b0e6ef7c27a60f3a139daca5b05aab8..0412137496fe7d0d8c2c455042a660a93960e1de 100644 (file)
@@ -61,10 +61,10 @@ University of California, as described above. */
 
 /*
  * Authors:
- *     Ctags originally by Ken Arnold.
- *     Fortran added by Jim Kleckner.
- *     Ed Pelegri-Llopart added C typedefs.
- *     Gnu Emacs TAGS format and modifications by RMS?
+ * 1983        Ctags originally by Ken Arnold.
+ * 1984        Fortran added by Jim Kleckner.
+ * 1984        Ed Pelegri-Llopart added C typedefs.
+ * 1985        Emacs TAGS format by Richard Stallman.
  * 1989        Sam Kendall added C++.
  * 1992 Joseph B. Wells improved C and C++ parsing.
  * 1993        Francesco Potortì reorganised C and C++.
@@ -81,7 +81,7 @@ University of California, as described above. */
  * configuration file containing regexp definitions for etags.
  */
 
-char pot_etags_version[] = "@(#) pot revision number is 17.26";
+char pot_etags_version[] = "@(#) pot revision number is 17.34";
 
 #define        TRUE    1
 #define        FALSE   0
@@ -160,7 +160,14 @@ char pot_etags_version[] = "@(#) pot revision number is 17.26";
 #  include <stdlib.h>
 #  include <string.h>
 # else /* no standard C headers */
-    extern char *getenv ();
+   extern char *getenv ();
+   extern char *strcpy ();
+   extern char *strncpy ();
+   extern char *strcat ();
+   extern char *strncat ();
+   extern unsigned long strlen ();
+   extern PTR malloc ();
+   extern PTR realloc ();
 #  ifdef VMS
 #   define EXIT_SUCCESS        1
 #   define EXIT_FAILURE        0
@@ -484,7 +491,7 @@ static char
   *midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789";
 
 static bool append_to_tagfile; /* -a: append to tags */
-/* The next four default to TRUE for etags, but to FALSE for ctags.  */
+/* The next five default to TRUE for etags, but to FALSE for ctags.  */
 static bool typedefs;          /* -t: create tags for C and Ada typedefs */
 static bool typedefs_or_cplusplus; /* -T: create tags for C typedefs, level */
                                /* 0 struct/enum/union decls, and C++ */
@@ -876,18 +883,25 @@ etags --help --lang=ada.");
 # define EMACS_NAME "standalone"
 #endif
 #ifndef VERSION
-# define VERSION "version"
+# define VERSION "17.34"
 #endif
 static void
 print_version ()
 {
+  /* Makes it easier to update automatically. */
+  char emacs_copyright[] = "Copyright (C) 2007 Free Software Foundation, Inc.";
+
   printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION);
-  puts ("Copyright (C) 2007 Free Software Foundation, Inc.");
+  puts (emacs_copyright);
   puts ("This program is distributed under the terms in ETAGS.README");
 
   exit (EXIT_SUCCESS);
 }
 
+#ifndef PRINT_UNDOCUMENTED_OPTIONS_HELP
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP FALSE
+#endif
+
 static void
 print_help (argbuffer)
      argument *argbuffer;
@@ -970,7 +984,16 @@ Relative ones are stored relative to the output file's directory.\n");
     puts ("--no-globals\n\
        Do not create tag entries for global variables in some\n\
        languages.  This makes the tags file smaller.");
-  puts ("--no-members\n\
+
+  if (PRINT_UNDOCUMENTED_OPTIONS_HELP)
+    puts ("--no-line-directive\n\
+        Ignore #line preprocessor directives in C and derived languages.");
+
+  if (CTAGS)
+    puts ("--members\n\
+       Create tag entries for members of structures in some languages.");
+  else
+    puts ("--no-members\n\
        Do not create tag entries for members of structures\n\
        in some languages.");
 
@@ -986,13 +1009,17 @@ Relative ones are stored relative to the output file's directory.\n");
        MODS are optional one-letter modifiers: `i' means to ignore case,\n\
        `m' means to allow multi-line matches, `s' implies `m' and\n\
        causes dot to match any character, including newline.");
+
   puts ("-R, --no-regex\n\
         Don't create tags from regexps for the following files.");
+
   puts ("-I, --ignore-indentation\n\
         In C and C++ do not assume that a closing brace in the first\n\
         column is the final brace of a function or structure definition.");
+
   puts ("-o FILE, --output=FILE\n\
         Write the tags to FILE.");
+
   puts ("--parse-stdin=NAME\n\
         Read from standard input and record tags as belonging to file NAME.");
 
@@ -1020,13 +1047,16 @@ Relative ones are stored relative to the output file's directory.\n");
         Print on the standard output an index of items intended for\n\
         human consumption, similar to the output of vgrind.  The index\n\
         is sorted, and gives the page number of each item.");
-# if PRINT_UNDOCUMENTED_OPTIONS_HELP
-      puts ("-w, --no-duplicates\n\
+
+      if (PRINT_UNDOCUMENTED_OPTIONS_HELP)
+       puts ("-w, --no-duplicates\n\
         Do not create duplicate tag entries, for compatibility with\n\
        traditional ctags.");
-      puts ("-w, --no-warn\n\
+
+      if (PRINT_UNDOCUMENTED_OPTIONS_HELP)
+       puts ("-w, --no-warn\n\
         Suppress warning messages about duplicate tag entries.");
-# endif /* PRINT_UNDOCUMENTED_OPTIONS_HELP */
+
       puts ("-x, --cxref\n\
         Like --vgrind, but in the style of cxref, rather than vgrind.\n\
         The output uses line numbers instead of page numbers, but\n\
@@ -1216,7 +1246,7 @@ main (argc, argv)
   if (!CTAGS)
     {
       typedefs = typedefs_or_cplusplus = constantypedefs = TRUE;
-      globals = TRUE;
+      globals = members = TRUE;
     }
 
   /* When the optstring begins with a '-' getopt_long does not rearrange the
@@ -3398,17 +3428,15 @@ C_entries (c_ext, inf)
        case '/':
          if (*lp == '*')
            {
-             lp++;
              incomm = TRUE;
-             continue;
+             lp++;
+             c = ' ';
            }
          else if (/* cplpl && */ *lp == '/')
            {
              c = '\0';
-             break;
            }
-         else
-           break;
+         break;
        case '%':
          if ((c_ext & YACC) && *lp == '%')
            {
@@ -3971,10 +3999,16 @@ C_entries (c_ext, inf)
              bracelev = 0;     /* reset brace level if first column */
              parlev = 0;       /* also reset paren level, just in case... */
            }
-         else if (bracelev > 0)
-           bracelev--;
          else
-           token.valid = FALSE; /* something gone amiss, token unreliable */
+           {
+             if (--bracelev < 0)
+               {
+                 bracelev = 0;
+                 token.valid = FALSE; /* something gone amiss, token unreliable */
+               }
+             if (bracelev == 0 && fvdef == vignore)
+               fvdef = fvnone;         /* end of function */
+           }
          popclass_above (bracelev);
          structdef = snone;
          /* Only if typdef == tinbody is typdefbracelev significant. */
index eaebb2abfa65e6b192e0d19e303459396afef864..07be340c2bd5248e359eea68392685bbb3cb17cd 100644 (file)
@@ -24,7 +24,7 @@ ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacs
 
 .PHONY: $(ALL)
 
-VERSION                = 22.1.50
+VERSION                = 23.0.50
 
 LOCAL_FLAGS    = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
                  -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
index 33ed2702a04c2fc47803e4f469b05efb810f5c41..3a68b694a34b644e363852e26826d42d095cc38d 100644 (file)
@@ -1,3 +1,40 @@
+2007-10-14  Drew Adams  <drew.adams@oracle.com>
+
+       * emacs-lisp/ring.el (ring-convert-sequence-to-ring)
+       (ring-insert+extend, ring-remove+insert+extend, ring-member)
+       (ring-next, ring-previous): New functions.
+
+2007-10-14  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/advice.el (documentation): Advice deleted.
+       Doc for advised functions is now handled at C level.
+       This is now handled at C level.
+       (ad-stop-advice, ad-start-advice): Don't enable or disable
+       advice for `documentation'.
+       (ad-advised-definition-docstring-regexp): Var deleted.
+       (ad-make-advised-definition-docstring): Store orig name
+       as text property of string.
+       (ad-advised-definition-p): Check for text property of docstring.
+
+       * help-fns.el (describe-function-1): Find source of advised functions.
+
+2007-10-14  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (describe-face): Allow handling a string as the face name.
+
+       * textmodes/ispell.el (ispell-word): Call `ispell-region' on the
+       active region in transient-mark-mode.
+       (ispell-region): Change messages displayed at the start and end of
+       the spell-checking to be the same.
+
+       * startup.el (fancy-startup-tail): Say exactly what does the button
+       dismiss ("Dismiss this startup screen").  Use text "Never show
+       it again" for the checkbox after this button.
+       (fancy-startup-screen, fancy-about-screen): Put point before the
+       first link, so the user can quickly select links with the keyboard.
+       (normal-mouse-startup-screen): Add more useful text describing how
+       to follow a link.
+
 2007-10-14  Glenn Morris  <rgm@gnu.org>
 
        * progmodes/etags.el (select-tags-table): Disable undo in the
        (dired-font-lock-keywords): Use dired-warn-writable-face, instead
        of dired-warning-face, for group- and world-writable files.
 
+2007-10-13  Richard Stallman  <rms@gnu.org>
+
+       * files.el (directory-abbrev-alist): Doc fix.
+
+2007-10-13  Jari Aalto  <jari.aalto@cante.net>
+
+       * comint.el (comint-password-prompt-regexp): Add 'LDAP'.
+
+2007-10-12  Martin Rudalics  <rudalics@gmx.at>
+
+       * frame.el (set-frame-configuration): Assign name parameter only
+       if it has been set explicitly before.
+
+2007-10-11  Tom Tromey  <tromey@redhat.com>
+
+       * progmodes/gdb-ui.el (gdb-info-stack-custom): Ensure current
+       frame is visible.
+
+2007-10-10  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/debug.el (debugger-setup-buffer): Disable undo
+       in *Backtrace*.
+
+       * faces.el (face-font-selection-order): Doc fix.
+
+       * loadhist.el (unload-feature): Doc fix.
+
 2007-10-13  Glenn Morris  <rgm@gnu.org>
 
        * progmodes/octave-mod.el (octave-looking-at-kw): Add doc string.
@@ -18,6 +82,9 @@
        (octave-scan-blocks, octave-beginning-of-defun): Explicitly pass
        `inc' to search functions.
 
+       * faces.el (face-spec-set): When FRAME is nil, set the default for
+       new frames (restores pre-2007-09-17 behavior).  Doc fix.
+
 2007-10-13  John W. Eaton  <jwe@octave.org>
 
        * progmodes/octave-mod.el (octave-looking-at-kw)
        (octave-beginning-of-defun): Likewise, for octave-re-search-backward-kw.
        (octave-scan-blocks): Likewise, for octave-re-search-forward-kw.
 
-2007-10-13  Richard Stallman  <rms@gnu.org>
+2007-10-13  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * files.el (directory-abbrev-alist): Doc fix.
+       * frame.el (select-frame-set-input-focus): Fix typo
+       "max" -> "mac". Do not use a single clause cond.
 
-2007-10-13  Jari Aalto  <jari.aalto@cante.net>
+       * cus-start.el (all): Use test that does not match the X11 version
+       for mac.
 
-       * comint.el (comint-password-prompt-regexp): Add 'LDAP'.
+2007-10-13  Markus Gritsch  <m.gritsch@gmail.com>  (tiny change)
 
-2007-10-12  Martin Rudalics  <rudalics@gmx.at>
+       * progmodes/ebrowse.el (ebrowse-tree-mode): Disable undo in the
+       BROWSE buffer.
 
-       * frame.el (set-frame-configuration): Assign name parameter only
-       if it has been set explicitly before.
+2007-10-13  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * cus-start.el (all): Undo previous change.
+
+2007-10-13  Glenn Morris  <rgm@gnu.org>
+
+       * woman.el (woman0-rename): Fix paren typo.
+
+       * mail/feedmail.el (feedmail-run-the-queue)
+       (feedmail-look-at-queue-directory):
+       * mail/reporter.el (reporter-dump-state):
+       * net/eudc-hotlist.el (eudc-edit-hotlist):
+       * net/eudc.el (eudc-display-records)
+       (eudc-filter-duplicate-attributes)
+       (eudc-distribute-field-on-records, eudc-query-form)
+       (eudc-process-form):
+       * net/eudcb-bbdb.el (eudc-bbdb-filter-non-matching-record)
+       (eudc-bbdb-query-internal):
+       * net/eudcb-ldap.el (eudc-ldap-simple-query-internal):
+       * net/socks.el (socks-build-auth-list):
+       * progmodes/cc-cmds.el (top level):
+       * progmodes/cc-styles.el (c-make-styles-buffer-local)
+       (c-set-style):
+       * progmodes/cperl-mode.el (top level, cperl-imenu-addback)
+       (cperl-write-tags, cperl-tags-treeify):
+       * progmodes/ebnf-yac.el (ebnf-yac-token-table):
+       * progmodes/ebnf2ps.el (ebnf-map-name, ebnf-dimensions):
+       * progmodes/idlw-shell.el (idlwave-shell-filter-bp, top level):
+       * progmodes/idlw-toolbar.el (idlwave-toolbar-add-everywhere)
+       (idlwave-toolbar-remove-everywhere):
+       * progmodes/idlwave.el (idlwave-indent-line)
+       (idlwave-sintern-keyword-list, idlwave-scan-user-lib-files)
+       (idlwave-write-paths, idlwave-all-method-classes)
+       (idlwave-all-method-keyword-classes, idlwave-entry-keywords)
+       (idlwave-fix-keywords, idlwave-display-calling-sequence)
+       (idlwave-complete-in-buffer):
+       * textmodes/org.el (org-export-as-html, org-export-as-ascii)
+       (org-fast-tag-selection):
+       * textmodes/reftex-sel.el (reftex-select-item):  Use mapc rather
+       than mapcar.
+
+2007-10-13  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * diff-mode.el (diff-fine-change): Add :group.
+
+2007-10-12  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * cus-start.el (all): Use the same test as the 22.2 branch.
+
+2007-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * diff-mode.el (diff-current-defun): Force recomputation of
+       change-log-default-name.
+
+2007-10-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * startup.el (fancy-startup-screen): Remove an unnecessary newline
+       and some leftover logic regarding dedicated frames.  If showing
+       concise startup screen, fit window to buffer.
+       (command-line-1): If we will be using the splash screen, use
+       find-file instead of find-file-other-window to find additional
+       files.  Comment out unused code for coping with the old sit-for
+       behavior.
+
+2007-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * term/xterm.el (xterm-function-map, xterm-alternatives-map): Use the
+       `meta' modifier consistently, rather than using sometimes meta
+       sometimes alt.
+
+2007-10-12  Martin Rudalics  <rudalics@gmx.at>
 
-       * window.el (handle-select-window): Revert part of 2007-10-06
+       * window.el (handle-select-window): Revert part of 2007-10-08
        change setting the input focus.
 
 2007-10-12  Glenn Morris  <rgm@gnu.org>
 
+       * startup.el (command-line): Do not read abbrev file in batch mode.
+
+       * emacs-lisp/byte-opt.el (top level):
+       * mail/rmail.el (rmail-list-to-menu):
+       * obsolete/hilit19.el (hilit-mode):
+       * progmodes/cc-mode.el (c-postprocess-file-styles)
+       (c-submit-bug-report):
+       * textmodes/org-publish.el (org-publish-get-plist-from-filename):
+       * textmodes/reftex.el (reftex-erase-all-selection-and-index-buffers)
+       (reftex-access-parse-file):
+       * textmodes/reftex-cite.el (reftex-do-citation)
+       (reftex-insert-bib-matches):
+       * textmodes/reftex-ref.el (reftex-offer-label-menu):
+       * textmodes/reftex-sel.el (reftex-select-unmark):
+       * textmodes/reftex-toc.el (reftex-toc-do-promote):
+       * vc-mcvs.el (vc-mcvs-checkin): Use mapc rather than mapcar.
+
        * cus-edit.el (custom-variable-menu, custom-face-menu)
        (custom-group-menu): Check init-file-user rather than
        user-init-file, in case cus-edit is loaded by site-run-file.
 
+2007-10-11  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * vc.el (vc-deduce-fileset): Delete unused code.
+       (vc-next-action): Fix typos.
+
+2007-10-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bs.el (bs--mark-unmark): New function.
+       (bs-mark-current, bs-unmark-current): Use it.
+
+2007-10-11  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * vc.el (vc-diff):
+       (vc-diff-internal): Merge a patch by Juanma Barranquero.  Also,
+       emporarily disable the check for his edge case of
+       vc-diff (stopping it from grinding when callerd from $HOME), as
+       it's calling some brittle code in vc-hooks.el.
+       (with-vc-properties): Fix evaluation time of a macro argument.
+       * ediff-vers.el (ediff-vc-internal):
+       * vc-hooks.el:
+       * loaddefs.el: Follow up on VC terminology change.
+
 2007-10-11  Juanma Barranquero  <lekktu@gmail.com>
 
        * follow.el (follow-stop-intercept-process-output):
        Use `follow-call-process-filter' rather than `process-filter'.
+       Simplify.
 
-2007-10-11  Tom Tromey  <tromey@redhat.com>
-
-       * progmodes/gdb-ui.el (gdb-info-stack-custom): Ensure current
-       frame is visible.
+2007-10-11  Eric S. Raymond  <esr@snark.thyrsus.com>
 
-2007-10-10  Richard Stallman  <rms@gnu.org>
+       * vc.el: Address an edge case in vc-diff pointed out by
+       Juanma Barranquero.  This is an experimental fix and may change.
 
-       * emacs-lisp/debug.el (debugger-setup-buffer): Disable undo
-       in *Backtrace*.
+       * vc-hooks.el (vc-registered): Robustify this function a bit
+       against filenames with no directory component.
 
-       * faces.el (face-font-selection-order): Doc fix.
+2007-10-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * loadhist.el (unload-feature): Doc fix.
+       * international/characters.el: Undo unwanted and unexplained change.
 
 2007-10-10  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
        (ps-face-foreground-color-p, ps-face-background-color-p)
        (ps-face-color-p): New inline funs.
 
+2007-10-10  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.el (org-additional-option-like-keywords): New constant.
+       (org-complete): Use `org-additional-option-like-keywords'.
+       (org-parse-local-options): New function.
+
+2007-10-10  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.el (org-in-clocktable-p): New function.
+       (org-clock-report): Only update the table at point, or insert a
+       new one.
+       (org-clock-goto): New function.
+       (org-open-file): Use `start-process-shell-command' instead of
+       `shell-command' with an ampersand.
+       (org-deadline, org-schedule): New argument REMOVE to remove the
+       date from the entry.
+       (org-agenda-schedule, org-agenda-deadline): Pass the prefix
+       argument to `org-schedule' and `org-deadline'.
+       (org-trim): Use the correct expressions for beginning and end of
+       the string.
+       (org-get-cleaned-entry): Trim the string before returning it.
+       (org-clock-find-position): New function.
+       (org-clock-into-drawer): New option.
+       (org-agenda-tags-column): Rename from
+       `org-agenda-align-tags-to-column'.
+       (org-agenda-align-tags): Allow negative values for
+       `org-agenda-tags-column'.
+       (org-insert-labeled-timestamps-before-properties-drawer): Remove var.
+       (org-agenda-to-appt): New optional argument FILTER.
+       (org-completion-fallback-command): New variable.
+       (org-complete): Use `org-completion-fallback-command'.
+       (org-find-base-buffer-visiting): Catch the case that there is no
+       buffer visiting the file.
+       (org-property-or-variable-value): New function.
+       (org-todo): Use `org-property-or-variable-value'
+       (org-agenda-compact-blocks): New option.
+       (org-prepare-agenda, org-agenda-list): Use `org-agenda-compact-blocks'.
+       (org-agenda-schedule, org-agenda-deadline):
+       Call `org-agenda-show-new-time'.
+       (org-agenda-show-new-time): New argument PREFIX.
+       (org-colgroup-info-to-vline-list): Fix but that cause a
+       shift in the vertical lines.
+       (org-buffer-property-keys): New argument INCLUDE-DEFAULTS.
+       (org-maybe-renumber-ordered-list, org-cycle-list-bullet)
+       (org-indent-item): No arg in call to `org-fix-bullet-type'.
+       (org-fix-bullet-type): Remove argument.
+       (org-read-date): Check for am/pm twice, to catch the end time.
+       (org-goto-map): Use `suppress-keymap'.
+       (org-remember-apply-template): Respect the dynamically scoped
+       selection character.
+
+       * org.texi (Appointment reminders): New section.
+
+2007-10-10  Bastien Guerry  <Bastien.Guerry@ens.fr>
+
+       * org-export-latex.el (org-export-latex-protect-string):
+       Renaming of `org-latex-protect'.
+       (org-export-latex-emphasis-alist): By default, don't protect
+       any emphasis formatter from further conversion.
+       (org-export-latex-tables): Honor column grouping for tables.
+       (org-export-latex-title-command): New option.
+       (org-export-latex-treat-backslash-char): Use \textbackslash{} to
+       export backslash character.
+
+2007-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.el (frame-inherited-parameters): Remove unused `environment'
+       parameter, and let server.el add `client' when needed.
+
+       * server.el (server-create-tty-frame)
+       (server-create-window-system-frame): Set frame-inherited-parameters.
+
+       * frame.el (frame-inherited-parameters): New var.
+       (make-frame): Use it.
+
+       * font-lock.el (lisp-font-lock-keywords-2): Remove let-environment.
+
+       * env.el (let-environment): Remove.  Unused.
+       (read-envvar-name): Simplify.
+       (setenv): Remove unused arg `frame'.
+
+       * help-fns.el (describe-variable): Add missing "  " for multiline
+       obsolescence info and missing EOL after global value.
+
+2007-10-10  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * add-log.el:
+       * ediff-vers.el:
+       * log-view.el:
+       * pcvs.el:
+       * vc-arch.el:
+       * vc-bzr.el:
+       * vc-cvs.el:
+       * vc.el:
+       * vc-git.el:
+       * vc-hg.el:
+       * vc-hooks.el:
+       * vc-mcvs.el:
+       * vc-mtn.el:
+       * vc-rcs.el:
+       * vc-sccs.el:
+       * vc-svn.el: Terminology cleanup: workfile-version -> working-revision,
+       {find,init,next,previous,annotate-*,log}-version ->
+       {find,init,next,previous,annotate-*,log}-revision,
+       annotate-focus-version -> annotate-working-revision, The term
+       'focus' is gone.  The term 'revision' is now used consistently
+       everywhere that reference to a revision ID is intended, replacing
+       older use of 'version'.
+
 2007-10-10  Juanma Barranquero  <lekktu@gmail.com>
 
        * follow.el: Change all instances of "Follow Mode" to "Follow
        mode" in docstrings and messages.
+       (follow-menu-filter): Fix arg passed to `bound-and-true-p'.
+
+2007-10-10  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * vc.el (vc-next-action): Rewrite completely; this principal
+       entry point now operates on a current fileset selected either
+       explicitly via VC-Dired or implicitly by visiting a file buffer,
+       rather than always operating on the file of the current buffer as
+       in older versions.  Rewrite the rest of the mode to match.
+       (with-vc-properties): Rewrite to operate on a file list.
+       (with-vc-file): vc-checkin takes a file list argument now.
+       (vc-post-command-functions): This hook now receives a file list.
+       (vc-do-command): Take a either a file or a file list as argument.
+       (vc-deduce-fileset): New function for deducing a file list to
+       operate on.
+       (vc-next-action-on-file, vc-next-action-dired): Remove.
+       Merge into vc-next-action.
+       (vc-register): Adapt to the fact that vc-start-entry now takes a
+       file list.
+       (vc-register-with): New function.
+       (vc-start-entry): Take a file list argument rather than a
+       file argument.
+       (vc-checkout): Cope with vc-start-entry taking a file list.
+       (vc-steal-lock): Cope with with-vc-properties taking a
+       file list.
+       (vc-checkin): Take a file list argument rather than a file argument.
+       (vc-finish-logentry): Use the filelist passed by vc-start-entry.
+       (vc-diff-internal): Rewrite for filesets.
+       (vc-diff-sentinel): New function, tests whether changes were
+       written into a diff buffer.
+       (vc-diff): Rewrite for filesets.
+       (vc-version-diff): Rewrite for filesets.
+       (vc-print-log): Take a fileset argument.
+       (vc-revert): Revert the entire selected fileset, not just the
+       current buffer.
+       (vc-rollback): Roll back the entire selected fileset, if
+       possible.  No longer accepts a prefix argument.
+       (vc-update): Merge new changes for the entire selected
+       fileset, not just the current buffer.
+       (vc-revert-file): Cope with with-vc-properties taking a file list.
+       (vc-default-dired-state-info): Add + status suffix if the file is
+       modified.
+       (vc-annotate-warp-version): Use the new diff machinery.
+       (vc-log-edit): Take a file list argument rather than a file argument.
 
-2007-10-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faces.el (face-font-selection-order): Doc fix.
-
-       * follow.el (follow-mode-hook, follow-mode): Doc fixes.
-       (follow-mode-off-hook): Mark as obsolete.
-
-2007-10-08  Richard Stallman  <rms@gnu.org>
+2007-10-10  Michael Albinus  <michael.albinus@gmx.de>
 
-       * emacs-lisp/edebug.el (edebug-install-custom-print-funcs)
-       (edebug-install-custom-print, edebug-reset-print-funcs)
-       (edebug-uninstall-custom-print, edebug-uninstall-custom-print-funcs):
-       Functions deleted.
-       (edebug-prin1, edebug-print, edebug-prin1-to-string)
-       (edebug-format, edebug-message): Define directly as aliases.
+       Sync with Tramp 2.1.11.
 
-2007-10-08  Juanma Barranquero  <lekktu@gmail.com>
+       * net/tramp.el (tramp-open-connection-setup-interactive-shell):
+       Pacify byte compiler.
 
-       * follow.el (follow-mode): Don't run hooks twice.  Use `when'.
+       * net/trampver.el: Update release number.
 
-2007-10-07  Glenn Morris  <rgm@gnu.org>
+2007-10-09  Richard Stallman  <rms@gnu.org>
 
-       * simple.el (bad-packages-alist): Clarify Semantic and CEDET
-       version numbers.
+       * play/gamegrid.el (gamegrid-setup-default-font): Use face-spec-set.
 
-2007-10-06  Michael Albinus  <michael.albinus@gmx.de>
+2007-10-09  Juanma Barranquero  <lekktu@gmail.com>
 
-       * net/tramp.el (tramp-completion-mode): Extend doc-string.
-       (tramp-completion-mode-p): Revert change from 2007-09-24.
-       Checking for `return' etc as last character is not sufficient, for
-       example in dired-mode when entering <g> (revert-buffer) or
-       <s> (dired-sort).
+       * follow.el: Require easymenu.
+       (follow-mode-hook, follow-mode): Doc fixes.
+       (follow-mode-off-hook): Mark as obsolete.
 
-2007-10-06  Martin Rudalics  <rudalics@gmx.at>
+2007-10-08  Martin Rudalics  <rudalics@gmx.at>
 
        * window.el (mouse-autoselect-window-cancel): Don't cancel for
        select-window or select-frame events.
        (handle-select-window): When autoselecting window set input
        focus.  Restructure.
 
-       * frame.el (focus-follows-mouse): Moved to frame.c.
+       * frame.el (focus-follows-mouse): Move to frame.c.
        * cus-start.el (all): Add focus-follows-mouse.
 
-2007-10-05  Chris Moore  <dooglus@gmail.com>
-
-       * server.el (server-kill-new-buffers): Doc fix.
-
-2007-10-05  Juanma Barranquero  <lekktu@gmail.com>
+2007-10-08  Juanma Barranquero  <lekktu@gmail.com>
 
        * bs.el (bs-mode): Make sure global-font-lock-mode doesn't
        activate font-locking in the *buffer-selection* buffer.
        (bs--get-mode-name, bs-mode): Fix typos in docstrings.
        (bs--format-aux): Doc fix.
 
-2007-10-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image-dired.el (image-dired-image-at-point-p): Fix typo in docstring.
-
-2007-10-04  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
+2007-10-08  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
        * progmodes/gud.el (gud-gud-gdb-command-name): Fix typo in docstring.
 
-2007-10-04  Nick Roberts  <nickrob@snap.net.nz>
+2007-10-08  Nick Roberts  <nickrob@snap.net.nz>
 
        * progmodes/gud.el (gud-gud-gdb-command-name): New option.
        (gud-gdb): New function for old M-x gdb (text command mode).
        * progmodes/gdb-ui.el: ...here and adapt doc string.
        (gud-gdba-command-name, gdba): Delete.
 
-2007-10-03  Juanma Barranquero  <lekktu@gmail.com>
+2007-10-08  Juanma Barranquero  <lekktu@gmail.com>
 
        * bs.el: Don't defvar `font-lock-verbose'.
        (bs-config-clear, bs-kill, bs-string-show-normally, bs-sort-functions)
        (bs-visits-non-file, bs-sort-buffer-interns-are-last, bs-show):
        Doc fixes.
 
-2007-10-02  Adam Hupp  <adam@hupp.org>  (tiny change)
+2007-10-08  Adam Hupp  <adam@hupp.org>  (tiny change)
 
        * progmodes/gdb-ui.el (pdb): Specify file for gud-break.
 
-2007-10-02  Nick Roberts  <nickrob@snap.net.nz>
+2007-10-08  Nick Roberts  <nickrob@snap.net.nz>
 
        * progmodes/gud.el (gdb): Make graphical mode the default and
        switch to text command mode if appropriate, i.e., reverse previous
        (gud-gdba-marker-filter): Use it to switch to text command
        mode if appropriate.
 
-2007-10-02  Richard Stallman  <rms@gnu.org>
-
-       * frame.el (cursor-in-non-selected-windows): Doc fix.
-
-2007-10-01  Nick Roberts  <nickrob@snap.net.nz>
+2007-10-08  Nick Roberts  <nickrob@snap.net.nz>
 
        * progmodes/gud.el (gud-display-line): Find source buffer even when
        GUD buffer has its own frame.
 
-2007-10-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+2007-10-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * term/x-win.el (icon-map-list): Set to nil for 22.1 compatibility.
 
-2007-09-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+2007-10-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * term/x-win.el (x-gtk-stock-map): Version is 22.2.
 
-2007-09-29  Martin Rudalics  <rudalics@gmx.at>
+2007-10-08  Martin Rudalics  <rudalics@gmx.at>
 
        * allout.el (allout-before-change-handler): Replace got-char by
        goto-char.
 
-2007-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * vc-svn.el (vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
        Used to try and automatically enabled smerge-mode in the presence of
        conflicts and to call `svn resolved' when the conflicts are gone.
        (vc-svn-parse-status): Remember the svn-specific status.
 
-       * newcomment.el (comment-choose-indent): New function extracted
-       from comment-indent.  Improve the alignment algorithm.
-       (comment-indent): Use it.
-
-2007-09-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/eldoc.el (eldoc-message-commands-table-size)
-       (eldoc-message-commands, eldoc-current-idle-delay):
-       Fix typos in docstrings.
-
-       * progmodes/python.el (python-eldoc-function): Doc fix.
-
-2007-09-26  Eli Zaretskii  <eliz@gnu.org>
+2007-10-08  Eli Zaretskii  <eliz@gnu.org>
 
        * menu-bar.el (menu-bar-search-documentation-menu): Rename from
        menu-bar-apropos-menu.  All users changed.
        (menu-bar-help-menu): Change menu symbols to better match the text
        displayed by the menu.
 
-2007-09-25  Glenn Morris  <rgm@gnu.org>
-
-       * view.el (view-search-no-match-lines): Add a doc string.
-       Rewrite to simplify and work better.
-
-2007-09-24  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-completion-mode-p): Rename from
-       `tramp-completion-mode'.  Revert logic, check `return', `newline'
-       and such alike.  Packages like Icicles tend to use other completion
-       characters but `tab' and `space' only.
-       (top): Require cl.el, when `copy-tree' is not available otherwise.
-
-       * net/tramp-vc.el (tramp-vc-user-login-name): Get argument by
-       `ad-get-arg'.
-
-2007-09-24  Ville Skytt\e,Ad\e(B  <scop@xemacs.org>  (tiny change)
-
-       * net/tramp-vc.el (tramp-vc-user-login-name):
-       Use `vc-find-version' instead of `process-file' to check whether we
-       have a new enough vc that doesn't need the defadvice.
-
-2007-09-23  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-10-08  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * files.el (file-name-sans-versions): Use [:alnum:] and also allow
        #, @, : and ^.
 
-2007-09-23  Glenn Morris  <rgm@gnu.org>
-
-       * ses.el (ses-calculate-cell): Don't evaluate unsafe formulae.
-
-2007-09-22  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-10-08  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * pcvs-defs.el (cvs-mode-map): Bind TAB and backtab.
 
 
        * diff-mode.el (diff-mode-shared-map): Likewise.
 
-2007-09-21  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * progmodes/octave-inf.el (inferior-octave-mode): Use add-hook to
-       add inferior-octave-directory-tracker to the buffer-local value
-       of comint-input-filter-functions.
-
-2007-09-22  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-10-08  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * files.el (file-name-sans-versions): Also allow `A-Z'.
 
        * vc.el: Mention all supported VC backends.
 
-2007-09-22  Richard Stallman  <rms@gnu.org>
+2007-10-08  Richard Stallman  <rms@gnu.org>
 
        * wid-edit.el (widget-specify-button): Don't merge mouse-face with
        neighbouring buttons.
 
-2007-09-22  Andreas Schwab  <schwab@suse.de>
+2007-10-08  Andreas Schwab  <schwab@suse.de>
 
        * files.el (file-name-sans-versions): Also allow `_'.
 
-2007-09-22  Glenn Morris  <rgm@gnu.org>
-
-       * eshell/esh-mode.el (eshell-output-filter-functions):
-       Add eshell-postoutput-scroll-to-bottom.
-
-2007-09-21  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-10-08  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * files.el (file-name-sans-versions): Allow - and a-z in version names.
 
        (log-view-mode): Use log-view-beginning-of-defun and
        log-view-end-of-defun.
 
-2007-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacs-lisp/easy-mmode.el (define-minor-mode): Fix staging.
 
-2007-09-21  Kevin Ryde  <user42@zip.com.au>
-
-       * international/mule.el (sgml-html-meta-auto-coding-function):
-       Bind `case-fold-search' to t.
-
-2007-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * wid-edit.el (widget-image-insert): Don't merge mouse-face with
        neighbouring buttons.
        * progmodes/compile.el (compilation-error-regexp-alist-alist):
        Recognize gcc's use of "note" for informational messages.
 
-2007-09-20  Glenn Morris  <rgm@gnu.org>
-
-       * textmodes/tex-mode.el (tex-validate-buffer): Use paragraph
-       motion functions, rather than hard-coding "\n\n".
-       (tex-validate-region): Check for eobp, to speed up.
-       (tex-next-unmatched-end): Doc fix.
-
-2007-09-19  Glenn Morris  <rgm@gnu.org>
-
-       * textmodes/tex-mode.el (tex-terminate-paragraph):
-       Use backward-paragraph.
-
-2007-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * textmodes/css-mode.el (css-electric-keys): electrick->electric.
        (css-mode): Update correspondingly.
 
-2007-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
-
-       * vc-hooks.el (vc-menu-entry): New var.
-       (vc-mode-line-map): Use it so that this menu also uses the extra-menu.
-       (menu-bar-tools-menu): Add the VC menu here rather than in menu-bar.el.
-       (vc-menu-map): Declare and initialize in one step.
-
-       * menu-bar.el (vc-menu-map): Don't setup any more.
-       Instead, just create the proper spot in the menu.
-
-2007-09-18  Dan Nicolaescu  <dann@ics.uci.edu>
-           Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc.el: Document new VC operation `extra-menu'.
-
-       * vc-hooks.el (vc-default-extra-menu, vc-menu-map-filter): New fun.
-
-2007-09-17  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-10-08  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * vc-git.el (vc-git-log-view-mode): Add font-lock patterns for
        Signed-off-by, Acked-by and Merge.
 
-2007-09-17  Glenn Morris  <rgm@gnu.org>
-
-       * textmodes/tex-mode.el (tex-compilation-parse-errors): Prefer the
-       filename from `--file-line-error', if it is available.
-
-2007-09-17  Joe Wells  <jbw@macs.hw.ac.uk>  (tiny change)
-
-       * textmodes/tex-mode.el (tex-compilation-parse-errors): Also match
-       TeX `--file-line-error' format.
-
-2007-09-17  Glenn Morris  <rgm@gnu.org>
-
-       * textmodes/tex-mode.el (tex-region): Simplify previous change,
-       handling the case where the region is not in `tex-main-file'.
-       (tex-region-1): Delete.
-       (tex-region-header): New function, doing the header part of the
-       old tex-region-1.
-
-2007-09-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * ediff-init.el (ediff-verbose-p): This var is not a constant.
 
-2007-09-16  Drew Adams  <drew.adams@oracle.com>
-
-       * cus-edit (custom-face-edit-activate): Doc fix.
-
-2007-09-16  Glenn Morris  <rgm@gnu.org>
-
-       * textmodes/tex-mode.el (tex-region): Handle the case where the
-       region is not in `tex-main-file'.  Move the old code that applies
-       to both cases...
-       (tex-region-1): ...to this new function.
-
-2007-09-15  Martin Rudalics  <rudalics@gmx.at>
-
-       * simple.el (blink-matching-open): Don't display message when no
-       paren is found within blink-matching-paren-distance characters.
-       Don't search prompt in blink-matching-paren-distance nil case.
-
-2007-09-14  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Add C-M- bindings.
-
-2007-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * vc-mtn.el: New file.
 
        * vc-hooks.el (vc-handled-backends): Add Mtn.
 
-2007-09-13  Eli Zaretskii  <eliz@gnu.org>
+2007-10-08  Eli Zaretskii  <eliz@gnu.org>
 
        * files.el (find-file, find-file-other-window)
        (find-file-other-frame, find-file-existing, find-file-read-only)
        (find-file-read-only-other-frame)
        (find-alternate-file-other-window, find-alternate-file): Doc fixes.
 
-2007-09-13  Jari Aalto  <jari.aalto@cante.net>
-
-       * man.el (Man-default-man-entry): At end of line, continue looking
-       to the next line for possible end of hyphenated command.
-
-2007-09-13  Chris Moore  <dooglus@gmail.com>
-
-       * shell.el (shell-resync-dirs): Don't move the cursor relative to
-       the command being edited.
-
-2007-09-13  Nick Roberts  <nickrob@snap.net.nz>
+2007-10-08  Nick Roberts  <nickrob@snap.net.nz>
 
        * progmodes/gud.el (gdb-ready): New variable.
        (gdb): Set it to nil.  Set gud-running to nil here...
        * progmodes/gdb-ui.el (gdba, gdb-send, gdb-source-info):
        Use gdb-ready.  Discard input until GDB is ready to accept it.
 
-2007-09-12  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Add bindings for M-S- and
-       C-M-S- keys.
-
-2007-09-12  Martin Rudalics  <rudalics@gmx.at>
+2007-10-08  Martin Rudalics  <rudalics@gmx.at>
 
        * dired.el (dired-warning): Inherit from font-lock-warning-face to
        make it show up with eight colors.
 
-2007-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * diff-mode.el (diff-sanity-check-hunk): Fix up the case when unified
        diffs are concatenated with no intervening line.
 
-2007-09-10  Dave Love  <fx@gnu.org>
+2007-10-08  Dave Love  <fx@gnu.org>
 
        * progmodes/python.el: Merge changes from Dave Love's v2007-Sep-10.
        (python-font-lock-keywords): Update to the 2.5 version of the language.
        (python-find-imports): Handle imports spanning several lines.
        (python-mode): Add `class' to hideshow support.
 
-2007-09-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * pcvs.el (cvs-mode-add-change-log-entry-other-window): Use
-       add-log-buffer-file-name-function rather than bind buffer-file-name,
-       so we dont end up calling change-log-mode in *cvs* when `fi' is the
-       ChangeLog file itself.
+       * pcvs.el (cvs-mode-add-change-log-entry-other-window):
+       Use add-log-buffer-file-name-function rather than binding
+       buffer-file-name, so we don't end up calling change-log-mode in *cvs*
+       when `fi' is the ChangeLog file itself.
 
        * outline.el (outline-flag-region): Use front-advance.
 
-2007-09-07  Ilya Zakharevich  <ilyaz@cpan.org>
+2007-10-08  Ilya Zakharevich  <ilyaz@cpan.org>
 
        * progmodes/cperl-mode.el: Merge upstream 5.23.
        (cperl-where-am-i): Remove function.
        (cperl-find-pods-heres): If the second part of s()[] is missing,
        don't try to highlight delimiters...
 
-2007-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * progmodes/compile.el (compilation-get-file-structure): Complete last
        change by also using spec-directory in the puthash.
 
-2007-09-07  Riccardo Murri  <riccardo.murri@gmail.com>
+2007-10-08  Riccardo Murri  <riccardo.murri@gmail.com>
 
-       * vc-bzr.el (vc-bzr-admin-lastrev): New constant.
-       (vc-bzr-file-name-relative): Use 'when' instead of 'and'.
+       * vc-bzr.el (vc-bzr-file-name-relative): Use 'when' instead of 'and'.
        (vc-bzr-status): Fix shadowing of variable 'status'.
        (vc-bzr-workfile-version): Use correct path to 'last-revision' file.
        Use `expand-file-name' instead of `concat'.
        (vc-bzr-annotate-command): Use option name '--long' instead of '-l'.
        Update annotation line regexp.  Fixes launchpad.net [Bug 137435].
 
-2007-09-05  Jason Rumney  <jasonr@gnu.org>
+2007-10-08  Jason Rumney  <jasonr@gnu.org>
 
        * frame.el (focus-follows-mouse): Doc-fix. Change default on w32.
 
-2007-09-02  Richard Stallman  <rms@gnu.org>
+2007-10-08  Richard Stallman  <rms@gnu.org>
 
        * emacs-lisp/lisp-mode.el (lisp-indent-offset): Make defcustom.
        Add `safe-local-variable' property.
        (lisp-body-indent): Likewise.
 
-2007-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+2007-10-08  Richard Stallman  <rms@gnu.org>
 
-       * info.el (info-tool-bar-map): Add :rtl keyword to right/left-arrow and
-       prev/next-node.
+       * files.el (hack-local-variables-confirm): Rename arg VARS to ALL-VARS.
+       Add doc string.
 
-       * term/x-win.el (x-gtk-stock-map, icon-map-list): New variables.
-       (x-gtk-map-stock): New function.
+2007-10-08  Martin Rudalics  <rudalics@gmx.at>
 
-2007-09-02  Glenn Morris  <rgm@gnu.org>
+       * files.el (backup-buffer-copy): Try to overwrite old backup first.
 
-       * comint.el (comint-mode): Don't set scroll-conservatively.
+2007-10-08  Martin Rudalics  <rudalics@gmx.at>
 
-       * eshell/em-unix.el (eshell/time): Stringify and flatten the
-       non-command arguments.
+       * repeat.el (repeat): Use last-repeatable-command instead of
+       real-last-command.  Run pre- and post-command hooks for
+       self-insertion.  Update doc-string.
 
-2007-09-01  Thien-Thi Nguyen  <ttn@gnuvola.org>
+2007-10-08  Alexandre Julliard  <julliard@winehq.org>
 
-       * emacs-lisp/bytecomp.el (byte-recompile-directory):
-       Fix bug: Don't expand top-level file name more than once.
-       Reported by Dmitry Antipov <dmantipov@yandex.ru>.
-
-2007-09-01  Richard Stallman  <rms@gnu.org>
-
-       * files.el (hack-local-variables-confirm): Rename arg VARS to ALL-VARS.
-       Add doc string.
-
-2007-08-30  Richard Stallman  <rms@gnu.org>
-
-       * speedbar.el (speedbar-frame-reposition-smartly)
-       (speedbar-set-mode-line-format, speedbar-reconfigure-keymaps)
-       (speedbar-check-vc): Don't use dframe-xemacsp.
-
-2007-08-30  Martin Rudalics  <rudalics@gmx.at>
-
-       * files.el (backup-buffer-copy): Try to overwrite old backup first.
-
-2007-08-29  Martin Rudalics  <rudalics@gmx.at>
-
-       * repeat.el (repeat): Use last-repeatable-command instead of
-       real-last-command.  Run pre- and post-command hooks for
-       self-insertion.  Update doc-string.
-
-2007-08-28  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/cc-langs.el (c-constant-kwds): Add java: true, false, null.
-
-2007-08-27  Alexandre Julliard  <julliard@winehq.org>
-
-       * vc-git.el (vc-git-state): Call git-add --refresh to update the
-       state of the file.
-       (vc-git-workfile-unchanged-p): Delegate implementation to vc-git-state.
-       (vc-git-create-repo): Fix invalid command.
-
-2007-08-27  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-mode):
-       Catch errors in flyspell-mode-on.
-
-2007-08-27  Thien-Thi Nguyen  <ttn@gnuvola.org>
-
-       * progmodes/modula2.el (m2-definition, m2-module):
-       Don't use previous-line.  Reported by T. V. Raman.
-
-2007-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-handle-toolbar-switch-mode): Add explicit
-       argument to tool-bar-mode call.
-
-2007-08-27  Glenn Morris  <rgm@gnu.org>
-
-       * diff-mode.el (diff-find-file-name): Only accept regular files,
-       to rule out /dev/null, directories, etc.
-
-2007-08-25  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * progmodes/cperl-mode.el (cperl-indent-level): Autoload the
-       safe-local-variable setting.
-       * progmodes/perl-mode.el (perl-indent-level): Likewise.
-
-2007-08-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * uniquify.el (uniquify-rationalize-file-buffer-names): Check liveness
-       of buffers in uniquify-managed.
-
-       * simple.el (invisible-p): Rename from text-invisible-p.
-       Update callers.
-
-2007-08-25  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-langs.el (c-other-decl-block-key-in-symbols-alist):
-       new language variable.
-
-       * progmodes/cc-engine.el (c-brace-anchor-point): New function.
-       (c-add-stmt-syntax): Give accurate anchor points for "namespace",
-       "extern" etc., rather than BOI.  Fix addition of spurious
-       syntactic-symbol 'defun-block-intro, replacing it with
-       'innamespace, etc.
-
-2007-08-25  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * pcvs.el (cvs-query-directory): Only prompt when prefix is given.
-       Don't behave differently when executed via M-x.  Add doc string.
-
-2007-08-24  Ulrich Mueller  <ulm@gentoo.org>  (tiny change)
-
-       * files.el (backup-buffer-copy): Don't wrap delete in
-       condition-case, only try to delete if file exists.
-
-2007-08-24  Glenn Morris  <rgm@gnu.org>
-
-       * files.el (backup-buffer-copy): Revert 2007-08-22 change.
-
-2007-08-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/cperl-mode.el (defcustom, x-color-defined-p, cperl-is-face)
-       (cperl-is-face, cperl-force-face, cperl-etags-snarf-tag, cperl-mode)
-       (cperl-etags-snarf-tag, cperl-etags-goto-tag-location, cperl-init-faces)
-       (cperl-etags-goto-tag-location): Use new style backquotes.
-
-       * subr.el (complete-with-action): Backport from trunk (for vc-arch.el).
-       (dynamic-completion-table): Use it it.
-
-       * net/browse-url.el: Remove spurious * in custom docstrings.
-       (browse-url-filename-alist): Use new-style backquote.
-
-       * emacs-lisp/backquote.el (backquote-unquote-symbol)
-       (backquote-splice-symbol): Clarify they're not new-style unquotes.
-
-       * emacs-lisp/edebug.el (edebug-list-form, edebug-match-symbol, \,)
-       (\,@): Backslash the , and ,@ which are not new-style unquotes.
-
-       * textmodes/texinfmt.el (\,): Clarify it's not a new-style unquote.
-
-       * net/socks.el (socks-username/password-auth-filter):
-       Remove unused vars `state' and `desired-len'.
-       (socks-parse-services, socks-nslookup-host): Use with-current-buffer.
-       (socks-wait-for-state-change): Use new-style backquotes.
-
-       * pcvs.el (cvs-mode-status): Fix long-standing typo.
-
-       * emacs-lisp/bytecomp.el (byte-compile-from-buffer): Check old-style
-       backquotes after each `read' rather than once per buffer.
-
-       * dframe.el: Remove spurious * in custom docstrings.
-       (dframe-xemacsp): Remove, use (featurep 'xemacs) instead.
-       (dframe-xemacs20p): Remove, inline at the sole use point.
-       (defface): Don't defvar the face, don't use old-style backquote.
-       (defcustom): Don't use old-style backquote.
-       (dframe-frame-parameter, dframe-mouse-event-p):
-       Make it obvious that it's always defined.
-       (dframe-popup-kludge): New function to replace
-       dframe-xemacs-popup-kludge and dframe-xemacs-popup-kludge.
-       (dframe-frame-mode, dframe-set-timer-internal)
-       (dframe-mouse-set-point): Remove use of with-no-warnings from
-       XEmacs-specific code.
-       (dframe-set-timer-internal): Fix very old bug with
-       post-command-idle-hook.
-
-       * emacs-lisp/byte-opt.el (byte-optimize-featurep): Handle `sxemacs'.
-
-2007-08-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-mode.el (image-minor-mode): Use image-mode-text-map.
-
-2007-08-22  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * sort.el (sort-fold-case, sort-numeric-base): Mark as
-       safe-local-variable.
-
-2007-08-22  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * net/browse-url.el (browse-url-emacs): New function.
-
-2007-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/bytecomp.el (byte-compile-from-buffer): Display a big fat
-       warning if the file uses old style backquotes.
-
-       * emacs-lisp/bytecomp.el (byte-compile-log-file)
-       (byte-recompile-directory, byte-compile-file)
-       (byte-compile-from-buffer): Use with-current-buffer.
-
-       * simple.el (text-invisible-p): Rename from line-move-invisible-p.
-       (line-move-invisible-p): Keep as an obsolete alias, just to be safe.
-       (line-move-1, line-move-finish, line-move-to-column)
-       (move-end-of-line, move-beginning-of-line): Use new name.
-
-2007-08-22  Glenn Morris  <rgm@gnu.org>
-
-       * files.el (backup-buffer-copy): Check backup directory is
-       writable, to avoid infloop deleting old backup.
-
-       * mail/rmail.el (rmail-movemail-variant-p): Call on load to set
-       movemail related variables.
-       (rmail-insert-inbox-text): Use only rmail-movemail-program, which
-       will now be set before this is called.
-
-2007-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/backquote.el (backquote-delay-process): Fix last change.
-
-       * progmodes/ada-mode.el: Fix up comment style in header.
-       (ada-check-emacs-version): Remove.
-       (ada-mode): Set parse-sexp-* even if they don't exist: can't hurt.
-       (ada-region-selected): Use (featurep 'xemacs) rather than contortions
-       to try and quieten the byte-compiler.
-       (ada-create-keymap): Use [(..)] keys, which work on both (X)Emacs.
-
-       * vc.el (vc-annotate-warp-version): Don't use previous-line.
-
-2007-08-20  Johannes Weiner  <hannes@saeurebad.de>  (tiny change)
-
-       * emacs-lisp/lisp-mode.el (preceding-sexp): New fun, the code was
-       extracted from `eval-last-sexp-1'.
-       (eval-last-sexp-1): Call `preceding-sexp'.
-
-2007-08-19  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (custom-deps, finder-data, autoloads, recompile)
-       (progmodes/cc-mode.elc, mh-e/mh-loaddefs.el): Use $(emacs) rather
-       than $(EMACS), so that EMACSLOADPATH is set.  Prevents any system
-       shadow files messing up the compilation.
-
-2007-08-18  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/scheme.el (scheme-mode-variables):
-       Set font-lock-comment-start-skip.
-
-2007-08-18  Martin Rudalics  <rudalics@gmx.at>
-
-       * progmodes/ada-mode.el (ada-create-syntax-table):
-       Move set-syntax-table from here to ...
-       (ada-mode): ... here.  Don't change global value of comment-multi-line.
-       Call new function ada-initialize-syntax-table-properties.
-       Add ada-handle-syntax-table-properties to font-lock-mode-hook.
-       (ada-deactivate-properties, ada-initialize-properties):
-       Replace by new functions ...
-       (ada-handle-syntax-table-properties, ada-set-syntax-table-properties)
-       (ada-initialize-syntax-table-properties): ... to set up syntax-table
-       properties uniformly, independently from whether font-lock-mode
-       is enabled or not.  Handle read-only buffers and do not change
-       undo-list when setting syntax-table properties.
-       (ada-after-change-function): Use ada-set-syntax-table-properties.
-
-2007-08-17  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
-
-       * progmode/cperl-mode.el (cperl-look-at-leading-count)
-       (cperl-find-pods-heres): Fix an error when typing expressions like
-       `s{a}{b}'.
-
-2007-08-17  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/compile.el (compilation-get-file-structure): Make use
-       of the directory part when checking for an existing entry, to
-       handle files with same basename in different directories.
-
-2007-08-16  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el (ps-header-font-size, ps-header-title-font-size)
-       (ps-footer-font-size, ps-line-number-font-size, ps-line-spacing)
-       (ps-paragraph-spacing): Docstring fix.
-
-2007-08-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * smerge-mode.el (smerge-resolve): New arg `safe'.
-       (smerge-resolve-all, smerge-batch-resolve): New function.
-       (smerge-refine): Make sure `diff' returns the expected result.
-       (smerge-parsep-re): New const.
-       (smerge-mode): Use it to adjust paragraph-separate.
-
-       * progmodes/perl-mode.el (perl-font-lock-syntactic-keywords):
-       Correctly match / regexp matchers as first char on a line when
-       fontifying only that line.
-
-       * emacs-lisp/cl-macs.el (cl-transform-lambda): Preserve the match-data.
-
-2007-08-16  Glenn Morris  <rgm@gnu.org>
-
-       * ps-print.el (ps-font-size): Doc fix.
-
-2007-08-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-bzr.el: Don't fiddle with vc-handled-backend.
-       (vc-bzr-registered): Don't redundantly protect against
-       file-error.  Actually use the format-specific code.
-       (vc-bzr-buffer-nonblank-p): Remove.
-       (vc-bzr-status): Change `kindchange' -> `kindchanged'.
-
-2007-08-15  Glenn Morris  <rgm@gnu.org>
-
-       * mail/undigest.el (rmail-digest-parse-rfc1153sloppy): Be even
-       sloppier, for the sake of GNU Mailman.
-       (rmail-digest-rfc1153): Initialize `result' correctly.
-
-2007-08-14  Glenn Morris  <rgm@gnu.org>
-
-       * simple.el (bad-packages-alist): New constant.
-       (bad-package-check): New function.  Together, these two add
-       elements to `after-load-alist' to check for problematic external
-       packages.
-       * emulation/cua-base.el: Move CUA-mode check to `bad-packages-alist'.
-
-2007-08-13  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * pcvs-parse.el (cvs-parse-table): Handle additional instance of
-       optional quotes around files in NEED-UPDATE . REMOVED case.
-
-       * progmodes/ada-xref.el (ada-gnatls-args): Fix docstring.
-       (ada-treat-cmd-string): Improve error message.
-       (ada-do-file-completion): Call `ada-require-project-file', so
-       project variables are set properly.
-       (ada-prj-find-prj-file): Delete Emacs 20.2 support.
-       (ada-gnatfind-buffer-name): New constant.
-       (ada-find-any-references): Use new constant.  Set buffer name
-       properly in compilation-start.  Toggle read-only properly.
-       (ada-find-in-src-path): Fix spelling error in docstring.
-
-       * progmodes/vhdl-mode.el (vhdl-update-progress-info): Avoid divide
-       by zero error.
-
-2007-08-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-send): Handle CTRL-D more carefully.
-
-2007-08-12  Richard Stallman  <rms@gnu.org>
-
-       * pcvs.el (cvs-reread-cvsrc, cvs-checkout, cvs-mode-checkout)
-       (cvs-execute-single-file): Use new name split-string-and-unquote.
-       (cvs-header-msg): Use new name combine-and-quote-strings.
-
-       * emulation/vi.el (vi-next-line): Ignore return value of line-move.
-
-       * progmodes/gud.el (gud-common-init): Use new name
-       split-string-and-unquote.
-
-       * progmodes/flymake.el (flymake-err-line-patterns): Fix infloop
-       in javac regexp.
-
-       * pcvs-util.el (cvs-qtypedesc-strings): Use new names
-       combine-and-quote-strings and split-string-and-unquote.
-
-       * subr.el (combine-and-quote-strings): Rename from strings->string.
-       (split-string-and-unquote): Rename from string->strings.
-
-2007-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * log-view.el (log-view-font-lock-keywords): Use `eval' so as to adapt
-       to buffer-local settings.
-
-       * emacs-lisp/backquote.el (backquote-delay-process): New function.
-       (backquote-process): Add internal arg `level'.  Use the two to
-       correctly handle nested backquotes.
-
-2007-08-09  Riccardo Murri  <riccardo.murri@gmail.com>
-
-       * vc-bzr.el (vc-bzr-registered): Use \0 instead of literal NULs.
-       (vc-bzr-state-words): Add "kind changed" state word.
-       (vc-bzr-status): New function.  Return Bzr idea of file status,
-       which is different from VC's.
-       (vc-bzr-state): Use vc-bzr-status.
-       (vc-workfile-unchanged-p): Use vc-bzr-status.
-       (vc-bzr-revert): Use synchronous process; expect exitcode 0.
-       (vc-dired-state): Process "kind changed" state word.
-
-2007-08-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-hooks.el (vc-default-find-file-not-found-hook): Do nothing.
-
-       * vc-rcs.el (vc-rcs-find-file-not-found-hook):
-       Move from vc-default-find-file-not-found-hook.
-
-2007-08-09  Edward O'Connor  <hober0@gmail.com>  (tiny change)
-
-       * url/url-auth.el (url-basic-auth): When prompting for username
-       and password, default to the username and password in the URL.
-
-2007-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * man.el: Remove spurious * in docstrings.
-       Merge defvars and toplevel setq-defaults.
-       (Man-highlight-references0): Limit=nil rather than point-max.
-       (Man-mode-map): Move initialization into the declaration.
-       (Man-strip-page-headers, Man-unindent): Use dolist & inhibit-read-only.
-       (Man-view-header-file): Use expand-file-name rather than concat.
-       (Man-notify-when-ready, Man-bgproc-sentinel): Use with-current-buffer.
-
-       * man.el (Man-next-section): Make sure we do not move backward.
-
-2007-08-08  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el (ps-default-fg, ps-default-bg): Docstring fix.
-       (ps-begin-job): Use ps-default-fg and ps-default-bg only when
-       ps-print-color-p is neither nil nor black-white.  Reported by Christian
-       Schlauer <cs-muelleimer-rubbish.bin@arcor.de>.
-
-2007-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * files.el (auto-mode-alist): Use the purecopied text (duh!).
-
-2007-08-08  Andreas Schwab  <schwab@suse.de>
-
-       * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook): Check for
-       self-insert-command, not self-insert.
-
-2007-08-08  Glenn Morris  <rgm@gnu.org>
-
-       * emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words): Remove `iff'.
-
-       * Replace `iff' in doc-strings and comments.
-
-       * help-mode.el (help-make-xrefs): Search for symbol constituents,
-       rather than just `-'.
-
-2007-08-08  Martin Rudalics  <rudalics@gmx.at>
-
-       * dired.el (dired-pop-to-buffer):
-       * mouse-drag.el (mouse-drag-should-do-col-scrolling):
-       * calendar/calendar.el (generate-calendar-window):
-       * progmodes/compile.el (compilation-set-window-height):
-       * textmodes/two-column.el (2C-two-columns, 2C-merge):
-       Use window-full-width-p instead of comparing frame-width and
-       window-width.
-
-       * progmodes/compile.el (compilation-find-buffer): Remove extra
-       argument in call to compilation-buffer-internal-p.
-
-2007-08-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-handle-file-remote-p): Handle optional
-       parameters IDENTIFICATION and CONNECTED.
-       (tramp-handle-insert-file-contents): VISIT must be handled after
-       insertion of the local copy.  Reported by Peter Gordon
-       <peter@pg-consultants.com>.
-       (tramp-file-name-handler): No special handling for
-       `expand-file-name'.  But for `file-name-as-directory'.
-       (tramp-find-shell, tramp-open-connection-telnet)
-       (tramp-open-connection-rsh, tramp-open-connection-su)
-       (tramp-open-connection-multi)
-       (tramp-open-connection-setup-interactive-shell): Guard against
-       $PROMPT_COMMAND shell var.  Reported by Steve Youngs
-       <steve@sxemacs.org>.
-       (tramp-append-tramp-buffers): Replace "sensible" by "sensitive" in
-       the hint.
-
-       * net/trampver.el: Update release number.
-
-2007-08-07  Tom Tromey  <tromey@redhat.com>
-
-       * progmodes/tcl.el (tcl-indent-level, tcl-continued-indent-level):
-       Add safe-local-variable property.
-
-2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-mode.el (image-toggle-display): Use image-refresh.
-
-       * longlines.el (longlines-decoded): New variable.
-       (longlines-mode): Avoid encoding or decoding the buffer twice.
-
-2007-08-07  Riccardo Murri  <riccardo.murri@gmail.com>
-
-       * vc-bzr.el: Remove comments about vc-bzr.el being a modified
-       unofficial version.
-       (vc-bzr-command): Remove redundant setting of process-connection-type.
-       (vc-bzr-admin-checkout-format-file): Add autoload.
-       (vc-bzr-root-dir): Remove in favor of vc-bzr-root.
-       (vc-bzr-root): Switch to implementation of vc-bzr-root-dir.
-       (vc-bzr-registered): Compare dirstate format tag with known good
-       value, abort parsing if match fails.  Warn user in docstring.
-       (vc-bzr-workfile-version): Case for different Bzr branch formats.
-       See bzrlib/branch.py in Bzr sources.
-       (vc-bzr-diff): First argument FILES may be a string rather than a list.
-       (vc-bzr-shell-command): Remove in favor of
-       vc-bzr-command-discarding-stderr.
-       (vc-bzr-command-discarding-stderr): New function.
-
-2007-08-06  Riccardo Murri  <riccardo.murri@gmail.com>
-
-       * vc-bzr.el (vc-bzr-registered): Gracefully handle missing "bzr"
-       program, and return nil
-       (vc-bzr-state): Gracefully handle missing "bzr" program, and return nil.
-       (vc-bzr-state): Look for path names relative to the repository
-       root after status keyword.
-       (vc-bzr-file-name-relative): New function.
-       (vc-bzr-admin-dirname): Reinstate, as other vc-bzr-admin-... paths
-       depend on it.
-       (vc-bzr-admin-dirname, ...-checkout-format-file)
-       (...-branch-format-file, ...-revhistory): Paths to some Bzr internal
-       files that we now parse directly for speed.
-       (vc-bzr-root-dir): Use `vc-bzr-admin-checkout-format-file' as witness.
-       (vc-bzr-registered): Only parse vc-bzr-admin-dirstate file if it exists.
-       (vc-bzr-state): "bzr status" successful only if exitcode is 0
-       (vc-bzr-root): Use `vc-bzr-shell-command'.  Stderr may contain
-       Bzr warnings, so we must discard it.
-       (vc-bzr-workfile-version): Speedup counting lines from
-       `vc-bzr-admin-revhistory' file, but fallback to spawning "bzr revno"
-       if that file doesn't exist.
-       (vc-bzr-responsible-p): Use `vc-bzr-root' instead of
-       `vc-bzr-root-dir' for speed.  Add `vc-bzr-admin-dirname'
-       (not ".bzr"!) to `vc-directory-exclusion-list'
-       (vc-bzr-shell-command): New function.
-
-2007-08-06  Tom Tromey  <tromey@redhat.com>
-
-       * diff-mode.el (diff-unified->context, diff-reverse-direction)
-       (diff-fixup-modifs): Typo in docstring.
-
-2007-08-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emulation/tpu-edt.el (tpu-current-line): Use posn-at-point and
-       count-screen-lines.
-       (tpu-edt-off): Disable relevant pieces of advice.
-
-       * emulation/tpu-extras.el (tpu-before-save-hook): Rename from
-       tpu-write-file-hook.  Activate it with add-hook on buffer-save-hook.
-       (newline, newline-and-indent, do-auto-fill): Use advice instead of
-       redefining the function.
-       (tpu-set-scroll-margins): Activate the pieces of advice.
-
-2007-08-06  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/ange-ftp.el (ange-ftp-hook-function): Catch also errors in
-       process-filter.
-
-2007-08-06  Martin Rudalics  <rudalics@gmx.at>
-
-       * help.el (resize-temp-buffer-window): Use window-full-width-p
-       instead of comparing frame-width and window-width.
-
-2007-08-05  Peter Povinec  <ppovinec <at> yahoo.com>  (tiny change)
-
-       * term.el: Honor term-default-fg-color and term-default-bg-color
-       settings when modifying term-current-face.
-       (term-default-fg-color, term-default-bg-color): Initialize from
-       default term-current-face.
-       (term-mode, term-reset-terminal): Set term-current-face with
-       term-default-fg-color and term-default-bg-color.
-       (term-handle-colors-array): term-current-face has term-default-fg-color
-       and term-default-bg-color after reset escape sequence.
-       (term-handle-colors-array): Set term-current-color with
-       term-default-fg/bg-color instead of ansi-term-color-vector when the
-       index (term-ansi-current-color or term-ansi-current-bg-color) is zero.
-
-2007-08-05  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.el (set-auto-mode): Handle also remote files wrt
-       `auto-mode-alist'.
-
-       * net/tramp.el (tramp-handle-file-remote-p): Return a string as
-       remote identification.
-
-2007-08-04  Glenn Morris  <rgm@gnu.org>
-
-       * autorevert.el (auto-revert-tail-mode): auto-revert-tail-pos is
-       zero, not nil, when the library is first loaded.  Check for a file
-       that has been modified on disk.
-
-       * progmodes/cperl-mode.el (cperl-compilation-error-regexp-alist):
-       Remove duplicate defvar preventing initialization.
-       (cperl-mode): Fix compilation-error-regexp-alist-alist setting.
-
-2007-08-03  Miles Bader  <miles@gnu.org>
-
-       * vc-hooks.el (vc-handled-backends): Change capitalization of VC
-       backend names for new backends to `Git', `Hg', and `Bzr'.
-       * vc-hg.el (vc-hg-dired-state-info): Use `Hg' as VC backend name,
-       not `HG'.
-       * vc-git.el (vc-git-dired-state-info): Use `Git' as VC backend
-       name, not `GIT'.
-       * vc-bzr.el (vc-bzr-dir-state, vc-bzr-dired-state-info)
-       (vc-bzr-unload-hook): Use `Bzr' as VC backend name, not `BZR'.
-
-2007-08-03  Glenn Morris  <rgm@gnu.org>
-
-       * net/telnet.el (telnet-mode): Set comint-use-prompt-regexp to t.
-
-2007-08-02  Richard Stallman  <rms@gnu.org>
-
-       * mail/rmailsum.el (rmail-make-summary-line): Find end of msg number
-       to update deleted flag.
-
-       * cus-edit.el (customize-apropos, customize-apropos-options)
-       (customize-apropos-faces, customize-apropos-groups): Improve prompt.
-
-       * menu-bar.el (menu-bar-help-menu): Add "About GNU" menu item.
-
-       * startup.el (fancy-splash-head, startup-echo-area-message):
-       Change message text.
-
-       * emulation/tpu-edt.el (next-line-internal): Setting deleted.
-       All callers use line-move.
-
-       * progmodes/compile.el (compilation-find-buffer): Return current
-       buffer immediately if suitable.
-       (compile, compilation-buffer-name, compilation-start): Doc fixes.
-
-2007-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-bzr.el (vc-bzr-admin-dirstate): Rename from `...-dirname'.
-       Make it more discriminating and more useful.
-       (vc-bzr-root-dir): Use new name.
-       (vc-bzr-registered): Use new name and look at the dirstate file to
-       determine if it's registered or not without running `bzr'.
-
-2007-08-01  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
-
-       * ibuf-ext.el (ibuffer-mark-old-buffers): Docstring fix.
-
-2007-07-31  Drew Adams  <drew.adams@oracle.com>
-
-       * cus-edit.el (custom-group-value-create, custom-goto-parent):
-       Fix parent groups link.
-
-2007-07-31  Daiki Ueno  <ueno@unixuser.org>
-
-       * faces.el (face-normalize-spec): New function.
-       (frame-set-background-mode): Normalize face-spec before calling
-       face-spec-match-p.
-
-2007-07-31  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-bzr.el: New file (copied from the trunk).
-
-       * vc-hooks.el (vc-handled-backends): Add BZR.
-       (vc-find-file-hook): Failsafe if the backend's `registered'
-       function burps.
-
-       * server.el (server-window): Add switch-to-buffer-other-frame option.
-
-2007-07-30  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc-git.el (vc-directory-exclusion-list, vc-handled-backends): Remove.
-       (vc-git-revision-completion-table): Enable.
-
-       * vc-hooks.el (vc-handled-backends): Add GIT and HG.
-
-       * vc.el (vc-directory-exclusion-list): Add .git and .hg.
-
-       * vc-hg.el (vc-hg-revision-completion-table): Re-enable.
-       (vc-hg-registered): Set the vc-state property.
-
-       * diff-mode.el (diff-mode-menu): New entries.
-
-2007-06-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * diff-mode.el (diff-beginning-of-file-and-junk): New function.
-       (diff-file-kill): Use it.
-       (diff-beginning-of-hunk): Add arg `try-harder' using it.
-       (diff-restrict-view, diff-find-source-location, diff-refine-hunk):
-       Use it so they find the hunk even when we're in the file header.
-
-       * vc.el: Add new VC operation `revision-completion-table'.
-       (vc-default-revision-completion-table): New function.
-       (vc-version-diff, vc-version-other-window): Use it to provide
-       completion of revision names if the backend provides it.
-
-       * vc-arch.el (vc-arch--version-completion-table)
-       (vc-arch-revision-completion-table): New functions to provide
-       completion of revision names.
-
-       * vc-cvs.el: Require CL.
-       (vc-cvs-revision-table, vc-cvs-revision-completion-table):
-       New functions to provide completion of revision names.
-
-2007-07-29  Kimit Yada  <kimitto@gmail.com>  (tiny change)
-
-       * emacs-lisp/copyright.el (copyright-update-year, copyright-update)
-       (copyright-fix-years, copyright): Correctly handle the case where
-       copyright-limit is nil.
-
-2007-07-28  Konstantin Novitsky  <knovitsk@Bear.com>  (tiny change)
-
-       * progmodes/python.el (run-python): Fix path separator under w32.
-
-2007-07-28  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc-git.el: New File.
-
-2007-07-28  Alan Mackenzie  <acm@muc.de>
-
-       Fix problem with modes derived from CC Mode:
-       * progmodes/cc-mode.el (c-make-emacs-variables-local): Move this
-       macro to cc-langs.
-       (c-init-language-vars-for): Remove call to above macro.
-       * progmodes/cc-langs.el (c-make-emacs-variables-local): Macro has
-       been moved to here.
-       (c-make-init-lang-vars-fun): Call c-make-emacs-variables-local.
-
-2007-07-28  Eli Zaretskii  <eliz@gnu.org>
-
-       * net/trampver.el: Fix the `coding' cookie.
-
-2007-07-25  Nick Roberts  <nickrob@snap.net.nz>
-
-       * add-log.el (change-log-redate): Remove (not needed anymore and
-       doesn't appear to work).
-
-2007-07-25  Glenn Morris  <rgm@gnu.org>
-
-       * Relicense all FSF files to GPLv3 or later.
-
-       * COPYING: Switch to GPLv3.
-
-2007-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs.el (cvs-temp-buffer): Undo last ill-conceived change.
-       Replace it with another one which disables undo before calling
-       erase-buffer and then turns it back on if needed.
-
-2007-07-24  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el: Problem with foreground and background color when
-       printing a buffer with and without faces.  Reported by Christian
-       Schlauer <cs-muelleimer-rubbish.bin@arcor.de>.
-       (ps-print-version): New version 6.7.5.
-       (ps-default-fg): Change default value to nil, so black color is used
-       when a face does not specify a foreground color.
-       (ps-default-bg): Change default value to nil, so white color is used
-       for background color.
-       (ps-begin-job): Fix code.
-
-2007-07-24  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc-hg.el (vc-hg-revision-completion-table): Temporarily comment out.
-
-2007-07-24  Alan Mackenzie  <acm@muc.de>
-
-       * emacs-lisp/bytecomp.el (byte-compile-from-buffer):
-       Initialise byte-compile-unresolved-functions before rather than
-       after a compilation.
-       (byte-compile-unresolved-functions): Amplify doc string.
-
-2007-07-24  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/cal-tex.el (cal-tex-holidays, cal-tex-diary)
-       (cal-tex-rules, cal-tex-buffer, cal-tex-24)
-       (cal-tex-cursor-month-landscape, cal-tex-cursor-month)
-       (cal-tex-cursor-week, cal-tex-cursor-week2)
-       (cal-tex-cursor-week-iso, cal-tex-week-hours)
-       (cal-tex-cursor-week-monday, cal-tex-weekly4-box)
-       (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
-       (cal-tex-cursor-filofax-daily, cal-tex-daily-page): Doc fix.
-
-2007-07-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs.el (cvs-temp-buffer): Disable undo in temp buffers.
-
-2007-07-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * ses.el (ses-cleanup): Prevent Emacs from spuriously checking if the
-       underlying file is uptodate.
-
-2007-07-23  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/octave-inf.el (inferior-octave-prompt): Accept .exe.
-
-2007-07-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-font-lock-backslash-quote)
-       (sh-font-lock-flush-syntax-ppss-cache): New funs.
-       (sh-font-lock-syntactic-keywords): Use them to distinguish the
-       different possible cases for \'.
-       (sh-font-lock-paren): Mark the relevant text with font-lock-multiline.
-
-       * vc-hooks.el (vc-find-root): Walk up the tree to find an existing
-       `file' from which to start the search and fix case where `file' is the
-       current directory and the root as well.
-
-       * pcvs.el (cvs-mode-add-change-log-entry-other-window): Use a directory
-       name for buffer-file-name if it refers to a directory.
-
-2007-07-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32-fns.el (set-default-process-coding-system): Use dos line ends
-       for input to cmdproxy on all versions of Windows.
-       Use dos line ends for input to plink.
-
-       * comint.el (comint-simple-send): Concat newline before sending.
-       (comint-password-prompt-regexp): Recognize plink's passphrase prompt.
-
-2007-07-22  Juri Linkov  <juri@jurta.org>
-
-       * isearch.el (isearch-edit-string): Save old point and
-       isearch-other-end to old-point and old-other-end before reading
-       the search string from minibuffer.  After exiting minibuffer set
-       point to old-other-end if point and the search direction is the
-       same as before reading the search string.
-       (isearch-del-char): Don't set isearch-yank-flag to t.  Put point
-       to isearch-other-end.  Instead of isearch-search-and-update call
-       three functions isearch-search, isearch-push-state and isearch-update.
-
-2007-07-22  Ralf Angeli  <angeli@caeruleus.net>
-
-       * textmodes/reftex.el (reftex-access-parse-file): Do not risk
-       destroying an existing buffer.
-
-2007-07-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * startup.el (command-line-x-option-alist): Use x-handle-no-bitmap-icon.
-
-       * term/x-win.el (x-handle-no-bitmap-icon): New function.
-
-2007-07-22  Ralf Angeli  <angeli@caeruleus.net>
-
-       * textmodes/reftex.el (reftex-access-parse-file): Create parse
-       file in a way that does not interfere with recentf.
-
-2007-07-21  Thien-Thi Nguyen  <ttn@gnuvola.org>
-
-       * image-dired.el (image-dired-sane-db-file): New func.
-       (image-dired-write-tags, image-dired-remove-tag)
-       (image-dired-list-tags, image-dired-write-comments)
-       (image-dired-get-comment, image-dired-mark-tagged-files)
-       (image-dired-create-gallery-lists): Call new func.
-       Reported by Dieter Wilhelm <dieter@duenenhof-wilhelm.de>.
-
-2007-07-21  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc-hg.el (vc-hg-diff): Use vc-hg-command.
-       (vc-hg-dir-state): Fix loop.
-       (vc-hg-print-log): Fix expected return value for vc-hg-command.
-       (vc-hg-next-version, vc-hg-delete-file, vc-hg-rename-file)
-       (vc-hg-register, vc-hg-create-repo, vc-hg-checkin)
-       (vc-hg-revert): Likewise.
-       (vc-hg-revision-table, vc-hg-revision-completion-table): New functions.
-
-2007-07-21  Thien-Thi Nguyen  <ttn@gnuvola.org>
-
-       * emacs-lisp/lisp-mode.el (calculate-lisp-indent): In the
-       case of alignment under a constant symbol, find and consider
-       the sexp actually at indentation to be the "last sexp".
-
-2007-07-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (install-lisp-SH, install-lisp-CMD): New targets.
-       (install): Use them to copy all *.el files before *.elc.
-       (clean): Don't delete *~.
-
-2007-07-20  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc-hg.el (vc-hg-workfile-unchanged-p): New function.
-
-2007-07-19  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc-hg.el (vc-hg-registered): Replace if with when.
-       (vc-hg-state): Deal with nonexistent files.
-
-2007-07-18  Juanma Barranquero  <lekktu@gmail.com>
-
-       * follow.el (follow-mode-hook, follow-mode-off-hook, follow-mode)
-       (follow-delete-other-windows-and-split, follow-recenter)
-       (follow-windows-aligned-p, follow-point-visible-all-windows-p)
-       (follow-redisplay, follow-estimate-first-window-start)
-       (follow-xemacs-scrollbar-support, follow-intercept-process-output):
-       Fix typos in docstrings.
-
-2007-07-17  Thien-Thi Nguyen  <ttn@gnuvola.org>
-
-       * bookmark.el (bookmark-show-all-annotations):
-       Make sure each inserted annotation ends with newline.
-
-       (bookmark-maybe-sort-alist): Don't modify
-       bookmark-alist.  Instead, if not sorting, simply return it.
-       (bookmark-bmenu-list): Call bookmark-maybe-sort-alist
-       for its return value, not for its side effect.
-
-2007-07-17  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc.el: Add more info about the vc-registered function.
-
-2007-07-16  David Kastrup  <dak@gnu.org>
-
-       * emacs-lisp/advice.el (defadvice): Doc fix.
-
-2007-07-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * subr.el (when, unless): Doc fix.
-
-2007-07-16  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc-hg.el (vc-hg-state): Handle removed files.
-       (vc-hg-dir-state, vc-hg-dired-state-info): New functions.
-       (vc-hg-checkout): Re-enable.
-
-2007-07-15  Richard Stallman  <rms@gnu.org>
-
-       * kmacro.el (kmacro-bind-to-key): Avoid comparisons on function keys.
-
-       * tutorial.el (tutorial--find-changed-keys):
-       Handle C-x specially like ESC.
-
-2007-07-15  Roland McGrath  <roland@frob.com>
-
-       * add-log.el (add-change-log-entry): Check add-log-full-name
-       and add-log-mailing-address later, after change-log-mode-hook.
-
-2007-07-15  Richard Stallman  <rms@gnu.org>
-
-       * isearch.el (isearch-mode, isearch-done):
-       Delete unintended code in previous change.
-
-       * ps-print.el (ps-default-bg): Change to White.
-
-2007-07-15  Aaron Hawley  <aaronh@garden.org>
-
-       * tar-mode.el (tar-get-descriptor): No error for zero-length file.
-
-2007-07-15  Martin Rudalics  <rudalics@gmx.at>
-
-       * mouse.el (mouse-drag-track): Reset transient-mark-mode to nil
-       when handling the terminating event.
-
-2007-07-15  Jeff Miller  <jmiller@cablespeed.com>  (tiny change)
-
-       * calendar/calendar.el (calendar-goto-bahai-date): Autoload it.
-
-2007-07-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (install-lisp-SH, install-lisp-CMD): New targets.
-       (install): Use them to copy all *.el files before *.elc.
-
-2007-07-13  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * replace.el (match): Use yellow1 instead of yellow.
-
-       * progmodes/gdb-ui.el (breakpoint-enabled): Use red1 instead of red.
-
-       * pcvs-info.el (cvs-unknown): Likewise.
-
-2007-07-12  Davis Herring  <herring@lanl.gov>
-
-       * desktop.el (desktop-buffer-info, desktop-save):
-       Use `desktop-dirname' instead of `dirname'.
-
-2007-07-10  Jim Meyering  <jim@meyering.net>  (tiny change)
-
-       * emacs-lisp/copyright.el (copyright-current-gpl-version): Set to 3.
-
-       * autoinsert.el (auto-insert-alist): s/2/3/ in the generated comment.
-
-2007-07-10  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/lisp-mode.el (eval-defun):
-       Explain special handling of `defface'.
-
-2007-07-09  Richard Stallman  <rms@gnu.org>
-
-       * isearch.el (isearch-edit-string): Call to isearch-push-state
-       after the search.
-
-2007-07-08  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * cus-start.el (file-coding-system-alist): Fix custom type.
-
-2007-07-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-wrap-region): Avoid marking buffer as
-       modified.
-       (longlines-auto-wrap, longlines-window-change-function):
-       Remove unnecessary calls to set-buffer-modified-p.
-
-2007-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc.el (vc-default-log-view-mode): New function.
-       (vc-print-log): Add new `log-view-mode' VC operation.
-
-2007-07-08  Nick Roberts  <nickrob@snap.net.nz>
-
-       * pcvs-util.el (cvs-strings->string, cvs-string->strings):
-       Rename and move to...
-
-       * subr.el (strings->string, string->strings): ...here.
-
-       * pcvs.el (cvs-reread-cvsrc, cvs-header-msg, cvs-checkout)
-       (cvs-mode-checkout, cvs-execute-single-file): Use new function names.
-
-       * progmodes/gud.el (gud-common-init): Call string->strings instead
-       of split-string.
-
-2007-07-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * term/w32-win.el (menu-bar-open): New function.
-       Bind <f10> to it.
-
-2007-07-07  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * log-view.el (log-view-mode-menu): New menu.
-
-2007-07-06  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * vc-hg.el: New file.
-
-2007-07-06  Andreas Schwab  <schwab@suse.de>
-
-       * emacs-lisp/lisp-mode.el (eval-last-sexp): Avoid introducing any
-       dynamic bindings around the evaluation of the expression.
-       Reported by Jay Belanger <jay.p.belanger@gmail.com>.
-
-2007-07-03  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * progmodes/gud.el (auto-mode-alist): Match more valid gdb init
-       file names.
-
-2007-07-02  Martin Rudalics  <rudalics@gmx.at>
-
-       * help-mode.el (help-make-xrefs): Skip spaces too when skipping tabs.
-
-       * mouse.el (mouse-drag-mode-line-1): Quit mouse tracking when
-       event is not a cons cell.  Do not unread drag-mouse-1 events.
-       Select right window in check whether space was stolen from
-       window above.
-
-2007-07-01  Richard Stallman  <rms@gnu.org>
-
-       * files.el (find-file-visit-truename): Fix safe-local-variable value.
-
-2007-06-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * generic-x.el (generic-define-mswindows-modes)
-       (generic-define-unix-modes, apache-log-generic-mode)
-       (bat-generic-mode-keymap, java-manifest-generic-mode)
-       (show-tabs-generic-mode): Fix typos in docstrings.
-
-2007-06-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * dnd.el (dnd-get-local-file-name): Set fixcase to t in call to
-       replace-regexp-in-string.
-
-2007-06-28  Andreas Schwab  <schwab@suse.de>
-
-       * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Depend on
-       $(lisp)/subdirs.el.
-
-2007-06-28  Juanma Barranquero  <lekktu@gmail.com>
-
-       * speedbar.el (speedbar-handle-delete-frame): Don't try to delete
-       the speedbar frame if nil; that deletes the current frame or
-       causes an error if it is the only frame.
-       Reported by Angelo Graziosi <Angelo.Graziosi@roma1.infn.it>.
-
-2007-06-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * desktop.el (desktop-read): Run `desktop-not-loaded-hook' in the
-       directory where the desktop file was found, as the docstring says.
-       (desktop-kill): Use `read-directory-name'.
-
-       * desktop.el (desktop-load-locked-desktop): New option.
-       (desktop-read): Use it.
-       (desktop-truncate, desktop-outvar, desktop-restore-file-buffer):
-       Use `when'.
-
-2007-06-24  Davis Herring  <herring@lanl.gov>
-
-       * desktop.el (desktop-save-mode-off): New function.
-       (desktop-base-lock-name, desktop-not-loaded-hook): New variables.
-       (desktop-full-lock-name, desktop-file-modtime, desktop-owner)
-       (desktop-claim-lock, desktop-release-lock): New functions.
-       (desktop-kill): Tell `desktop-save' that this is the last save.
-       Release the lock afterwards.
-       (desktop-buffer-info): New function.
-       (desktop-save): Use it.  Run `desktop-save-hook' where the doc
-       says to.  Detect conflicts, and manage the lock.
-       (desktop-read): Detect conflicts.  Manage the lock.
-
-2007-06-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * ls-lisp.el (insert-directory): If an invalid regexp error is
-       thrown, try using FILE as a literal file name, not a wildcard.
-       Check for FILE as an existing file, not just a directory.
-
-2007-06-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ruler-mode.el (ruler-mode): Prevent clobbering the original
-       `header-line-format' when reentering ruler mode.
-
-2007-06-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * ls-lisp.el (insert-directory): Don't treat FILE as a wildcard if
-       FILE exists as a directory.
-
-2007-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vera-mode.el (vera-mode): Fix `commend-end-skip' setting.
-       (vera-font-lock-match-item): Fix doc string.
-       (vera-in-comment-p): Remove unused function.
-       (vera-skip-forward-literal, vera-skip-backward-literal): Improve code,
-       use `syntax-ppss'.
-       (vera-forward-syntactic-ws): Fix argument order.
-       (vera-prepare-search): Use `with-syntax-table'.
-       (vera-indent-line): Fix doc string.
-       (vera-electric-tab): Fix doc string.
-       (vera-expand-abbrev): Define alias instead of using `fset'.
-       (vera-comment-uncomment-region): Use `comment-start-skip'.
-
-2007-06-20  Reto Zimmermann  <reto@gnu.org>
-
-       * progmodes/vera-mode.el: New file.
-
-2007-06-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ido.el (ido-find-file-in-dir): Don't signal an error for
-       empty directories.
-
-2007-06-18  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-mode.el (c-remove-any-local-eval-or-mode-variables):
-       When removing lines, also remove the \n.  Correction of patch of
-       2007-04-21.
-
-2007-06-17  Glenn Morris  <rgm@gnu.org>
-
-       * lpr.el (lpr-page-header-switches): Move %s to separate element
-       for correct quoting.  Doc fix.
-
-2007-06-13  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * term/xterm.el (terminal-init-xterm): Escape parens in character
-       constants.
-
-2007-06-12  Ralf Angeli  <angeli@caeruleus.net>
-
-       * scroll-lock.el (scroll-lock-mode): Doc fix.
-
-2007-06-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (font-lock-add-keywords): In case font-lock was only
-       half-activated, forcefully activate it completely.
-
-2007-06-11  Richard Stallman  <rms@gnu.org>
-
-       * cus-edit.el (custom-variable-type): Doc fix.
-
-2007-06-09  Alfred M. Szmidt  <ams@gnu.org>  (tiny change)
-
-       * mail/rmail.el (rmail-movemail-variant-in-use): Fix doc typo.
-
-2007-06-09  Davis Herring  <herring@lanl.gov>
-
-       * desktop.el (desktop-minor-mode-table): Doc fix.
-
-2007-06-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-mode.el (image-forward-hscroll, image-backward-hscroll)
-       (image-next-line, image-previous-line, image-scroll-up)
-       (image-scroll-down, image-bol, image-eol, image-bob, image-eob):
-       New functions.
-       (image-mode-map): Remap motion commands.
-       (image-mode-text-map): New keymap for viewing images as text.
-       (image-mode): Use image-mode-map.
-       (image-toggle-display): Toggle auto-hscroll-mode and mode keymaps.
-
-2007-06-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.56.
-
-       * net/tramp.el:
-       * net/tramp-ftp.el:
-       * net/tramp-smb.el:
-       * net/tramp-util.el:
-       * net/tramp-vc.el:
-       Don't load cl.el, because that pollutes the namespace.  Replace cl
-       macros by their implementations where necessary.  Requested by
-       Richard Stallman <rms@gnu.org>.
-
-       * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it
-       doesn't exist.
-       (with-parsed-tramp-file-name): Protect debug spec during compilation.
-       (tramp-handle-insert-directory): Check (featurep 'ls-lisp).
-       (tramp-file-name-p, tramp-file-name-multi-method)
-       (tramp-file-name-method, tramp-file-name-user)
-       (tramp-file-name-host, tramp-file-name-localname): New defuns,
-       replacing defstruct `tramp-file-name'.
-       (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1)
-       (tramp-dissect-file-name, tramp-dissect-multi-file-name):
-       Apply `vector' instead of `make-tramp-file-name'.
-       (tramp-handle-make-auto-save-file-name):
-       Apply `tramp-temporary-file-directory' for compatibility reasons.
-       (tramp-completion-mode): Use `natnump' instead of `wholenump'
-       because of XEmacs.
-       (tramp-completion-mode): `last-input-event' is nil when XEmacs is
-       started.
-
-2007-06-07  David Kastrup  <dak@gnu.org>
-
-       * dired.el (dired-recursive-deletes, dired-recursive-copies):
-       Change default to `top'.
-
-2007-06-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * dired.el (dired-mode-map): Remove spurious separator.
-
-2007-06-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/ebrowse.el (ebrowse-draw-file-member-info): Doc fix.
-
-       * progmodes/mixal-mode.el (mixal-operation-codes-alist):
-       * progmodes/idlwave.el (idlwave-one-key-select): Fix typo in docstring.
-
-2007-06-07  Alfred M. Szmidt  <ams@gnu.org>  (tiny change)
-
-       * mail/rmailsum.el (rmail-summary-save-buffer): New command.
-       (rmail-summary-mode-map): Add rmail-summary-save-buffer.
-
-2007-06-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/ebrowse.el (ebrowse-member-table):
-       * textmodes/org.el (org-export-ascii-bullets): Fix typos in docstrings.
-
-2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * pgg.el (pgg-sign-region, pgg-sign):
-       * ses.el (ses-call-printer):
-       * calendar/icalendar.el (icalendar--diarytime-to-isotime):
-       * textmodes/org.el (org-cycle): Fix typos in docstrings.
-
-2007-06-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * tar-mode.el (tar-header-block-summarize, tar-summarize-buffer)
-       (tar-get-descriptor): Handle type 55, an extended pax header.
-
-2007-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/css-mode.el: New file.
-
-2007-06-06  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/socks.el: New file, taken from w3 repository.
-       (top): Update Copyright.  Don't load cl.el.
-       (all): Replace `case' by `cond', `string-to-int' by
-       `string-to-number', and `process-kill-without-query' by
-       `set-process-query-on-exit-flag'.
-       (socks-char-int): Remove defalias and all occurrences.
-
-2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * international/mule-cmds.el (toggle-enable-multibyte-characters)
-       (sort-coding-systems, search-unencodable-char): Doc fixes.
-       (coding-system-change-eol-conversion, set-default-coding-systems)
-       (prefer-coding-system, find-multibyte-characters, princ-list)
-       (leim-list-entry-regexp, set-input-method, locale-language-names)
-       (input-method-exit-on-first-char, exit-language-environment-hook)
-       (locale-charset-language-names): Fix typos in docstrings.
-
-2007-06-05  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bs.el (bs-cycle-previous): Don't modify the cycle list until
-       `switch-to-buffer' has returned succesfully.
-       (bs-cycle-next): Ditto.  Also, don't bury the buffer when the
-       window is dedicated (it could iconify the frame).
-
-2007-06-05  Glenn Morris  <rgm@gnu.org>
-
-       * files.el (auto-mode-alist): Open `.asd' files in lisp-mode.
-
-2007-06-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (auto-mode-alist): Add lower-priority match for names
-       like ChangeLog.old.
-
-2007-06-04  Andreas Schwab  <schwab@suse.de>
-
-       * emacs-lisp/sregex.el (sregexq): Fix doc string quoting.
-
-2007-06-04  Davis Herring  <herring@lanl.gov>
-
-       * calendar/timeclock.el: Update version number.
-       (timeclock-modeline-display): Mention timeclock-use-display-time
-       in explanatory message.
-       (timeclock-log): Suppress warnings when finding the log.
-       Don't check for a nil project twice.  Run hooks after killing the
-       buffer (if applicable).
-       (timeclock-geometric-mean): Rename to `timeclock-mean' (it never
-       was geometric).  All uses changed.
-       (timeclock-generate-report): Support prefix argument.
-
-2007-06-04  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
-
-       * man.el (Man-next-section): Don't consider the last line of the
-       page as being part of any section.
-
-2007-06-04  Martin Rudalics  <rudalics@gmx.at>
-
-       * hilit-chg.el (highlight-changes-rotate-faces): Don't set
-       modified flag of buffer.  Use `inhibit-modification-hooks'.
-
-2007-06-04  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * mail/mail-extr.el (mail-extract-address-components):
-       Recognize non-ASCII characters except for NBSP as words.
-
-2007-06-04  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/webjump.el (webjump-sample-sites): Add Wikipedia query.
-
-2007-06-04  Michael Olson  <mwolson@gnu.org>
-
-       * emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has
-       died and we are trying to send a signal to it.
-
-2007-06-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode)
-       (easy-mmode-define-navigation): Fix typos in docstrings.
-
-       * progmodes/compile.el (compilation-find-file, compilation-handle-exit):
-       Fix typos in docstrings.
-       (compilation-search-path, compilation-buffer-name-function): Doc fixes.
-       (compilation-finish-function): Fix typo in obsolescence declaration.
-
-       * progmodes/idlwave.el (idlwave-routines): Fix typo in docstring.
-
-2007-06-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (magic-mode-alist): Remove image-type-auto-detected-p.
-       (magic-fallback-mode-alist): Add image-type-auto-detected-p.
-
-       * image.el (image-type-auto-detected-p): Don't scan auto-mode-alist.
-
-       * longlines.el (longlines-mode): Make longlines-auto-wrap
-       buffer-local.  Add hooks unconditionally.
-       (longlines-auto-wrap): Toggle wrapping.
-       (longlines-after-change-function)
-       (longlines-post-command-function): Check longlines-auto-wrap.
-
-2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * Version 22.1 released.
-
-2007-06-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20
-       changes.
-
-2007-05-31  Richard Stallman  <rms@gnu.org>
-
-       * dired.el (dired-do-delete, dired-do-flagged-delete): Doc fixes.
-
-2007-05-29  Martin Rudalics  <rudalics@gmx.at>
-
-       * textmodes/table.el (table--point-entered-cell-function)
-       (table--point-left-cell-function):
-       Bind `inhibit-point-motion-hooks' to t.
-
-2007-05-29  Nikolaj Schumacher  <n_schumacher@web.de>  (tiny change)
-
-       * emacs-lisp/rx.el (rx): Doc fix.
-
-2007-05-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * textmodes/sgml-mode.el (sgml-point-entered): Use condition-case.
-
-2007-05-27  Tetsurou Okazaki  <okazaki@be.to>  (tiny change)
-
-       * log-edit.el (log-edit-changelog-paragraph): Return point-max
-       as the end of the ChangeLog paragraph when it ends without a line
-       termination.
-
-2007-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/fill.el (canonically-space-region): Make the second arg
-       a marker if it's not already the case.
-
-       * xt-mouse.el (xterm-mouse-truncate-wrap): New function.
-       (xterm-mouse-event): Use it.
-
-2007-05-25  Miles Bader  <miles@fencepost.gnu.org>
-
-       * vc-hooks.el (vc-find-root): Fix file attribute test.
-
-2007-05-24  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-correct-word-before-point):
-       Don't let opoint be nil.
-       (flyspell-emacs-popup): Explicit error if no dialogs.
-
-2007-05-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * tar-mode.el (tar-file-name-handler): New function.
-       (tar-extract): Bind file-name-handler-alist to it to force
-       find-buffer-file-type-coding-system behave as if the file being
-       extracted existed.  Use last-coding-system-used to force
-       buffer-file-coding-system to what decode-coding-region actually
-       used to decode the file.
-
-2007-05-23  Nikolaj Schumacher  <n_schumacher@web.de>  (tiny change)
-
-       * progmodes/compile.el (compilation-handle-exit):
-       `compilation-finish-function' may change the current buffer.
-
-2007-05-22  Richard Stallman  <rms@gnu.org>
-
-       * files.el (set-auto-mode): Doc fix.
-
-2007-05-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * dos-w32.el (find-buffer-file-type-coding-system): Doc fix.
-
-2007-05-21  Trent Buck  <trentbuck@gmail.com>  (tiny change)
-
-       * net/rcirc.el (rcirc-fill-column): Allow `window-width'.
-       (rcirc-print): Handle `window-width'.
-       (rcirc-buffer-maximum-lines): Doc fix.
-
-2007-05-19  Kevin Ryde  <user42@zip.com.au>
-
-       * info.el (Info-fontify-node): Match https also.
-
-2007-05-18  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (push-mark): Doc fix.
-
-2007-05-18  Rob Riepel  <riepel@Stanford.EDU>
-
-       * emulation/tpu-edt.el (CSI-map, SS3-map): Move from global-map to
-       tpu-global-map.
-       (tpu-original-global-map): Delete variable.
-       (tpu-control-keys-map): New keymap variable.
-       (tpu-set-control-keys): Use tpu-reset-control-keys rather than
-       setting keymapping directly.
-       (tpu-reset-control-keys): Use tpu-control-keys-map instead of
-       tpu-global-map.
-       (tpu-edt-on): Activate the tpu-global-map.
-       (tpu-edt-off): Deactivate the tpu-global-map.
-
-2007-05-18  Ryan Yeske  <rcyeske@gmail.com>
-
-       * textmodes/ispell.el (ispell-get-word): Return markers
-       for start and end positions.
-       (ispell-word): Assume END is a marker.
-
-2007-05-17  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el: Use default color when foreground or background color
-       are unspecified.  Reported by Leo <sdl.web@gmail.com>.
-       (ps-print-version): New version 6.7.4.
-       (ps-rgb-color): New argument.  Use default color when color is
-       unspecified.
-       (ps-begin-job): Fix code.
-
-2007-05-17  Martin Rudalics  <rudalics@gmx.at>
-
-       * textmodes/ispell.el (ispell-start-process): Defend against bad
-       default-directory.
-
-2007-05-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-hooks.el (vc-find-root): Stop searching when the user changes.
-
-2007-05-16  Richard Stallman  <rms@gnu.org>
-
-       * buff-menu.el (Buffer-menu-sort-column): Doc fix.
-
-2007-05-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * files.el (magic-mode-alist, magic-fallback-mode-alist):
-       Move the *ml, Postscript, and XmCD entries to the fallback part.
-
-       * files.el (magic-fallback-mode-alist):
-       Rename from file-start-mode-alist.
-
-2007-05-16  Nikolaj Schumacher  <n_schumacher@web.de>  (tiny change)
-
-       * progmodes/compile.el (compilation-handle-exit): Quote first
-       argument of `run-hook-with-args'.
-
-2007-05-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buff-menu.el (Buffer-menu-sort-column):
-       * dabbrev.el (dabbrev-upcase-means-case-search):
-       * dired.el (dired-recursive-deletes, dired-recursive-copies):
-       * info.el (Info-current-subfile):
-       * ls-lisp.el (ls-lisp-verbosity):
-       * msb.el (msb-menu-cond):
-       * pcvs.el (cvs-dired-use-hook):
-       * simple.el (set-mark-command-repeat-pop):
-       * time.el (display-time-24hr-format, display-time-mail-file):
-       Doc fixes.
-
-       * tutorial.el (get-lang-string, tutorial--find-changed-keys):
-       * printing.el (pr-ps-fast-fire): Fix typos in docstrings.
-
-       * view.el (view-inhibit-help-message): Fix typo in docstring.
-       (view-scroll-auto-exit, view-try-extend-at-buffer-end): Doc fixes.
-
-2007-05-14  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/rmail.el (rmail-convert-to-babyl-format):
-       Check content-transfer-encoding _last_, because we need its position
-       in base64-header-field-end.
-
-2007-05-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * files.el (mode-require-final-newline, require-final-newline)
-       (enable-local-variables, enable-local-eval): Doc fixes.
-
-2007-05-10  Edward O'Connor  <hober0@gmail.com>  (tiny change)
-
-       * progmodes/python.el (python-font-lock-keywords)
-       (python-open-block-statement-p, python-mode): Add support for the new
-       "with" keyword.
-
-2007-05-10  Richard Stallman  <rms@gnu.org>
-
-       * international/iso-cvt.el (iso-cvt-read-only): Ignore arguments.
-       (iso-cvt-write-only): Likewise.
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode):
-       Fix generated doc string.
-
-       * startup.el (fancy-splash-text): Add URL of guided tour.
-       Adjust horizontal and vertical whitespace.
-
-       * progmodes/compile.el (compilation-handle-exit):
-       Use run-hook-with-args to run compilation-finish-functions.
-
-       * files.el (file-start-mode-alist): New variable.
-       (magic-mode-regexp-match-limit): Doc fix.
-       (set-auto-mode): Handle file-start-mode-alist.
-       A little cleanup of structure.
-
-2007-05-10  Davis Herring  <herring@lanl.gov>
-
-       * calendar/timeclock.el (timeclock-in): Fix non-interactive
-       workday specifications.
-       (timeclock-log): Don't kill the log buffer if it already existed.
-
-2007-05-08  Richard Stallman  <rms@gnu.org>
-
-       * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook):
-       Don't include non-self-insert commands in the exception for `-'.
-
-2007-05-08  David Reitter  <david.reitter@gmail.com>
-
-       * progmodes/python.el (python-guess-indent): Check non-nullness
-       before comparing indent against the 2..8 interval.
-
-2007-05-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-ts-unicode-for-key-event): Check if text is
-       available.
-
-2007-05-06  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/eldoc.el (turn-on-eldoc-mode): Doc fix.
-
-2007-05-03  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-timeout-seconds): Increase to prevent unwanted
-       disconnections.
-
-2007-05-01  Romain Francoise  <romain@orebokech.com>
-
-       * dired-x.el: Revert 2007-04-06 change.
-
-2007-04-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Pdb can't handle SIGINT so
-       don't put stop on toolbar.
-
-2007-04-29  Stephen Berman  <Stephen.Berman@gmx.net>
-
-       * find-dired.el (find-dired-filter): Propertize all text down to eob.
-
-2007-04-29  Richard Stallman  <rms@gnu.org>
-
-       * international/mule.el (auto-coding-alist): Add pdf => no-conversion.
-
-2007-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/cc-mode.el (c-before-change): Use point-min rather
-       than 1.
-
-2007-04-28  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/sh-script.el (sh-mode): Recognize .profile as sh style.
-
-2007-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-hooks.el (vc-ignore-dir-regexp): Add /.../ for the DFS filesystem.
-
-2007-04-28  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el): Use ./mh-e
-       instead of $(lisp)/mh-e.
-
-       * textmodes/fill.el (fill-paragraph): Doc fix.
-
-2007-04-28  Glenn Morris  <rgm@gnu.org>
-
-       * image-dired.el (image-dired-cmd-create-thumbnail-options)
-       (image-dired-cmd-create-temp-image-options): Replace option
-       +profile "*" with -strip.
-
-2007-04-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * textmodes/flyspell.el (flyspell-auto-correct-previous-word):
-       Use window-start and window-end.
-
-2007-04-26  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/python.el: Restore file pending consideration of legal
-       status.
-
-2007-04-26  Luc Teirlinck  <teirllm@dms.auburn.edu>
-
-       * locate.el (locate-in-alternate-database): Doc fix.
-
-2007-04-26  Glenn Morris  <rgm@gnu.org>
-
-       * button.el (button): Use underline if supported, else fall back
-       to color.
-
-2007-04-25  Richard Stallman  <rms@gnu.org>
-
-       * hi-lock.el (hi-lock-file-patterns-policy): Default to `ask'.
-
-2007-04-25  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlwave.el (idlwave-beginning-of-subprogram)
-       (idlwave-end-of-subprogram): Take optional NOMARK arg to prevent
-       pushing mark.
-       (idlwave-current-routine): Don't push mark.
-
-2007-04-25  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * image-dired.el (image-dired-display-image): Derive image-type from
-       filename rather than assuming jpeg, in case no resizing was needed.
-
-2007-04-25  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * custom.el (defface): Doc fix.
-
-2007-04-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/python.el: Remove due to unclear legal issues.
-
-2007-04-24  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlw-shell.el (idlwave-shell-clear-all-bp):
-       Don't re-query for each cleared BP.
-       (idlwave-shell-clear-bp): Optionally skip BP query.
-       (idlwave-shell-update-bp-overlays): Use set-window-margins instead
-       of set-window-buffer, which incorrectly moves displayed region.
-
-2007-04-23  Jay Belanger  <jay.p.belanger@gmail.com>
-
-       * calc/calc.el (calc-bug-address): Update maintainer's address.
-       * calc/*: Update maintainer's address.
-
-2007-04-23  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (set-mark-command-repeat-pop): Doc fix.
-       Put in `editing-basics' group.
-
-2007-04-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * info.el (Info-mouse-scroll-up, Info-mouse-scroll-down):
-       New functions.
-       (Info-mode-line-node-keymap): Bind mouse commands to
-       Info-mouse-scroll-up/down instead of Info-scroll-up/down.
-
-2007-04-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * locate.el (locate-local-prompt): New var.
-       (locate-prompt-for-command): Doc fix.
-       (locate-prompt-for-search-string): New function.
-       (locate): New optional arg.  Make locate-local-prompt
-       buffer-local.  Use locate-prompt-for-search-string.
-       (locate-with-filter): New optional arg.
-       Use locate-prompt-for-search-string.
-       (locate-update): Bind locate-prompt-for-command.
-
-2007-04-23  Glenn Morris  <rgm@gnu.org>
-
-       * files.el (magic-mode-alist): `<!DOCTYPE HTML' in html-mode.
-
-2007-04-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * button.el (button): Inherit from link face on a tty.
-
-2007-04-23  Glenn Morris  <rgm@gnu.org>
-
-       * button.el (button): Use color for this face on a tty.
-
-       * files.el (magic-mode-alist): Allow for carriage-returns in
-       html-mode and sgml-mode entries.
-
-2007-04-22  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
-       Improve doc string of generated command.
-
-       * subr.el (read-number): Catch errors.
-
-       * hi-lock.el (hi-lock-file-patterns-policy): Doc fix.
-
-2007-04-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-dired.el: Rename from thumbnails.el.  All instances of
-       "thumbnails" replaced with "image-dired".
-
-       * dired.el (dired-mode-map): Rename "thumbnails" again, to
-       "image-dired".
-
-2007-04-22  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-kill-buffer-at-head, ido-delete-file-at-head):
-       Don't use kill-line.
-
-2007-04-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * t-mouse.el (t-mouse-make-event): Pass on mev's more informative
-       error message.
-
-2007-04-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * dired.el: Rename "tumme" to "thumbnails".
-
-       * thumbnails.el: Rename from tumme.el.  All instances of "tumme"
-       replaced with "thumbnails".
-
-2007-04-22  Glenn Morris  <rgm@gnu.org>
-
-       * hi-lock.el (hi-lock-file-patterns-policy): Make it a defcustom,
-       and give it the risky-local-variable property.
-
-       * textmodes/flyspell.el (flyspell-define-abbrev): Downcase abbrev
-       before defining it.
-
-2007-04-21  Martin Rudalics  <rudalics@gmx.at>
-
-       * progmodes/cc-mode.el (c-remove-any-local-eval-or-mode-variables):
-       Use delete-region instead of kill-line.
-
-2007-04-21  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-cmds.el (c-electric-slash): Replace wrong use of
-       `kill-region' by `delete-region'.
-
-2007-04-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/perl-mode.el (perl-indent-command): Use delete-region
-       instead of kill-region.
-
-       * progmodes/mantemp.el (mantemp-make-mantemps-region)
-       (mantemp-insert-cxx-syntax, mantemp-sort-and-unique-lines)
-       (mantemp-remove-memfuncs): Use delete-region instead of kill-word
-       and kill-line.
-
-       * progmodes/vhdl-mode.el (vhdl-template-type)
-       (vhdl-template-record, vhdl-template-nature)
-       (vhdl-template-configuration-spec, vhdl-template-component-inst)
-       (vhdl-template-break, vhdl-regress-line, vhdl-electric-tab):
-       Use delete-region instead of kill-word and kill-line.
-
-2007-04-21  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * dired-x.el (dired-virtual-mode): Doc fix.
-
-2007-04-21  Richard Stallman  <rms@gnu.org>
-
-       * font-lock.el (font-lock-keywords-alist): Mark as risky.
-
-       * subr.el (read-number): Doc fix.
-
-       * simple.el (pop-to-mark-command): Display message "mark popped"
-       if point does not move.
-       (set-mark-command): Doc fix.
-
-2007-04-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * locate.el: Revert 2006-09-09 and 2007-04-20 changes.
-       (locate-local-filter, locate-local-search): New vars.
-       (locate): Make variables local.
-       (locate-update): Bind locate-buffer-name.  Call locate using
-       locate-local-filter and locate-local-search.
-
-2007-04-20  David Koppelman  <koppel@ece.lsu.edu>
-
-       * hi-lock.el (hi-lock-file-patterns-policy): New var.
-       (hi-lock-find-patterns): Use hi-lock-file-patterns-policy.
-       (hi-lock-mode): Update docstring.
-
-2007-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/fill.el (fill-move-to-break-point): Don't inhibit
-       fill-nobreak-predicate when the break is past fill-column.
-
-2007-04-20  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * locate.el (locate): Output from shell-command should go in the
-       current buffer rather than *Shell Command Output*.
-
-2007-04-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * paren.el (show-paren-function): Fix last fix.
-
-2007-04-19  Kevin Ryde  <user42@zip.com.au>
-
-       * arc-mode.el (archive-find-type): lzh-exe for lzh self-extracting exe.
-       (archive-lzh-summarize): Add optional start arg for where to start
-       looking at the archive.
-       (archive-lzh-exe-summarize, archive-lzh-exe-extract): New functions.
-
-       * international/mule.el (auto-coding-alist): no-conversion for .exe
-       and .EXE.
-
-2007-04-19  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-cmds.el (c-in-function-trailer-p): Fix this: when a
-       function return type contains "struct", "union", etc.
-       c-end-of-defun goes too far forward.
-
-2007-04-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * paren.el (show-paren-function): Reset window-start to avoid
-       recentering.
-
-2007-04-19  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/todo-mode.el: Fix typo: "threshhold" -> "threshold".
-
-2007-04-18  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/diary-lib.el (diary-header-line-format): Add a custom
-       :set function.
-       (diary-list-entries): Only switch to diary-mode from
-       default-major-mode (reverts 2007-03-21 change).  Otherwise, if in
-       diary-mode set header-line-format, in case of any customization.
-
-2007-04-18  Levin Du  <zslevin@gmail.com>  (tiny change)
-
-       * calendar/parse-time.el (parse-time-string-chars): Check if CHAR
-       is less than the length of parse-time-syntax.
-
-2007-04-17  David Kastrup  <dak@gnu.org>
-
-       * replace.el (query-replace-regexp-eval): Deprecate.
-
-2007-04-17  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-cmds.el (c-beginning-of-defun): With -ve arg and
-       point too close to EOB, leave point at EOB rather than last `}'.
-
-2007-04-17  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-include-OPTkey)
-       (bibtex-user-optional-fields, bibtex-entry-field-alist):
-       Fix defcustom.
-
-2007-04-17  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/cal-dst.el (calendar-dst-find-startend): If YEAR cannot
-       be encoded, fall back to current year.
-
-2007-04-14  Kevin Ryde  <user42@zip.com.au>
-
-       * arc-mode.el (archive-lzh-summarize): Only apply the "downcase if
-       all upcase" rule to OS-ID 0 "generic".  Always downcase for OS-ID
-       M "MSDOS".
-
-2007-04-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/python.el (python-end-of-block): Avoid looping forever
-       if python-next-statement fails.
-
-2007-04-16  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-entry-field-alist): Use defcustom.
-
-2007-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * progmodes/perl-mode.el (perl-indent-level): Mark as safe local var.
-       * progmodes/cperl-mode.el (cperl-indent-level): Likewise.
-
-2007-04-15  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (calc-version): New function.
-       (calc-trail-mode): Shorten the title.
-
-2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mail/footnote.el (footnote-style): Clarify docstring to state
-       that customizing this only applies to future footnotes.
-
-2007-04-15  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-field-list): Use functionp.
-       (bibtex-make-field): Check that INIT is a string. Use functionp.
-
-2007-04-14  Glenn Morris  <rgm@gnu.org>
-
-       * complete.el (PC-goto-end): New buffer-local variable.
-       (PC-do-completion-end): Make buffer-local.
-       (partial-completion-mode) <choose-completion-string-functions>:
-       Do not go to the end of the minibuffer if PC-goto-end is non-nil.
-       (PC-do-completion): New optional fourth argument GOTO-END.  Add a
-       doc string.  Set PC-goto-end for choose-completion.
-       (PC-lisp-complete-symbol): Pass non-nil GOTO-END arg to
-       PC-do-completion.
-
-       * textmodes/bibtex.el (bibtex-insert-kill): Pass non-nil NODELIM
-       arg to bibtex-make-field.
-       (bibtex-make-field): Add optional fourth arg NODELIM.
-       Insert delimiters around INIT unless this arg is non-nil.
-
-2007-04-14  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the
-       global map isn't modified.
-
-2007-04-14  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/appt.el (appt-disp-window): Do not split small windows.
-       Suggested by Jeff Miller <jmiller@cablespeed.com>.
-
-2007-04-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/compile.el (compilation-start): Revert 2007-03-25 change.
-
-       * files.el: Ditto.
-
-2007-04-13  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cus-edit.el (minibuffer, auto-save): Fix typos in docstrings.
-
-       * term.el (term-buffer-maximum-size, term-exec, term-escape-char)
-       (term-set-escape-char, term-termcap-format, term-get-old-input-default)
-       (term-skip-prompt, term-send-string, term-send-region, term-pager-page)
-       (term-pager-help): Fix typos in docstrings.
-
-       * wid-edit.el (widget-documentation): Fix typo in docstring.
-
-       * progmodes/ebnf2ps.el (ebnf-insert-style, ebnf-merge-style):
-       Fix typos in error messages.
-
-2007-04-13  Martin Rudalics  <rudalics@gmx.at>
-
-       * emacs-lisp/edebug.el (edebug-pop-to-buffer): Don't select
-       window marked as dedicated.
-
-       * mail/footnote.el (footnote-latin-string): New variable.
-       (footnote-latin-regexp): Redefine as regexp alternative.
-       (Footnote-latin): Use footnote-latin-string instead of
-       footnote-latin-regexp.
-
-2007-04-13  Glenn Morris  <rgm@gnu.org>
-
-       * tmm.el (tmm-get-keybind): Use car-safe to avoid errors with
-       inherited keymaps.
-
-2007-04-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * outline.el (outline-get-next-sibling): Clarify docstring.
-       (outline-get-last-sibling): Handle case where we are at the first
-       heading.  Clarify docstring.
-
-2007-04-12  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-minor-mode-map): Make go button same
-       length as stop button to lessen flicker.
-       (jdb): Add gud-print.
-       (gud-find-expr): Jdb prints the expression with the value, so
-       don't insert it in the output.
-
-2007-04-11  Jason Rumney  <jasonr@gnu.org>
-
-       * dnd.el (dnd-get-local-file-name): Decode both upper and lower
-       case hex.  Do not try to decode non-hex letters.
-
-2007-04-11  Markus Triska  <markus.triska@gmx.at>
-
-       * emacs-lisp/byte-opt.el (byte-optimize-backward-char)
-       (byte-optimize-backward-word): Remove (move to bytecomp.el).
-       (byte-optimize-form-code-walker): Evaluate pure function calls if
-       possible.
-       (byte-optimize-all-constp): New function.
-
-       * emacs-lisp/bytecomp.el (byte-compile-char-before):
-       Improve numeric argument case.
-       (byte-compile-backward-char, byte-compile-backward-word):
-       New functions, performing rewriting previously done in byte-opt.el.
-       Fix their "Fixme" item (restriction to numeric arguments).
-
-2007-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * desktop.el (desktop-save, desktop-create-buffer): Replace mapcar
-       with dolist.
-       (after-init-hook): Don't quote lambda.
-       (desktop-first-buffer): Don't wrap it in eval-when-compile.
-       (desktop-internal-v2s): Remove unused var `el'.
-       (desktop-buffer-major-mode, desktop-buffer-locals): Move out of
-       desktop-restore-file-buffer.
-       (desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of
-       desktop-create-buffer.
-
-2007-04-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * woman.el (woman-decode-buffer): Postpone macro-set check...
-       (woman-decode-region): ...to here.
-
-2007-04-10  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * startup.el (tty-handle-args): Use %S to log ARGS.
-
-2007-04-10  Glenn Morris  <rgm@gnu.org>
-
-       * dframe.el (dframe-frame-mode): Do not set auto-show-mode, since
-       it is obsolete and has no effect.
-
-       * dos-w32.el (default-buffer-file-type): Add defvar to quieten
-       byte-compiler.
-
-       * progmodes/cperl-mode.el (cperl-mode): Remove unnecessary call to
-       obsolete function make-local-hook.
-
-       * progmodes/dcl-mode.el (top-level): Move (require 'tempo) to
-       start to quieten byte-compiler.
-
-2007-04-10  Markus Triska  <markus.triska@gmx.at>
-
-       * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move
-       to bytecomp.el as byte-compile-char-before).
-       * emacs-lisp/bytecomp.el (byte-compile-char-before):
-       New function (modified replacement for byte-optimize-char-before in
-       byte-opt.el).
-
-2007-04-09  Alan Mackenzie  <acm@muc.de>
-
-       * startup.el (inhibit-splash-screen): Emphatically state that it
-       can't be set in site-start.el.
-
-2007-04-09  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/cc-subword.el (c-capitalize-subword): More closely
-       mimic the behavior of `capitalize-word'.  Do not move point with a
-       negative argument.  Based on tiny change by Paul Curry.
-
-2007-04-09  Paul Curry  <dashteacup@gmail.com>  (tiny change)
-
-       * progmodes/cc-subword.el (c-downcase-subword, c-upcase-subword):
-       Don't move point if ARG is negative.
-
-2007-04-09  Alan Mackenzie  <acm@muc.de>
-
-       Changes to make `narrow-to-defun' and `mark-defun' work properly
-       in CC Mode:
-
-       * progmodes/cc-defs.el (c-beginning-of-defun-1):
-       * progmodes/cc-cmds.el (c-beginning-of-defun, c-end-of-defun):
-       Bind beginning/end-of-defun-function to nil around calls to
-       beginning/end-of-defun.
-
-       * progmodes/cc-langs.el (beginning-of-defun-function)
-       (end-of-defun-function): New c-lang-setvar's.
-
-       * progmodes/cc-awk.el (c-awk-beginning-of-defun): Add "(or arg
-       (setq arg 1))" to enable non-interactive call.
-
-2007-04-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * simple.el (set-mark-command): Doc fix.
-
-2007-04-09  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gdb): Restore existing session if user
-       tries to start a second one in graphical mode.
-
-2007-04-08  Martin Rudalics  <rudalics@gmx.at>
-
-       * cus-start.el <scroll-preserve-screen-position>: Add choices.
-
-2007-04-08  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * term/xterm.el (terminal-init-xterm): Fix key definitions.
-       Add binding for C-M-SPC.
-
-2007-04-08  Richard Stallman  <rms@gnu.org>
-
-       * pcomplete.el (pcomplete-read-event): One single definition,
-       and not a defsubst.
-
-2007-04-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/cc-cmds.el (c-end-of-defun): Tidy up, to eliminate
-       byte-compiler warning "value unused".
-
-2007-04-08  Andreas Schwab  <schwab@suse.de>
-
-       * term/xterm.el (terminal-init-xterm): Add bindings for keypad keys.
-
-2007-04-07  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/calendar.el (diary-font-lock-keywords, diary-live-p):
-       Autoload these functions.
-       (diary-date-forms): Add a custom :set form.
-
-       * calendar/diary-lib.el (diary-set-maybe-redraw): Move definition
-       before first use.
-       (diary-font-lock-keywords): New function with old code for
-       initialization of variable of same name.
-
-2007-04-07  David Hansen  <david.hansen@gmx.net>  (tiny change)
-
-       * progmodes/cc-cmds.el (c-electric-paren): Fix space-before-funcall
-       clean-up: only insert space when on identifier, etc.
-
-2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/grep.el (grep-find-use-xargs): Rewrite docstring.
-
-       * net/tls.el (open-tls-stream): Properly handle case where there
-       is no associated buffer.
-
-2007-04-07  Glenn Morris  <rgm@gnu.org>
-
-       * ffap.el (ffap-file-at-point): Lower the priority of the
-       ffap-ftp-sans-slash-regexp check.
-
-2007-04-06  Alan Mackenzie  <acm@muc.de>
-
-       Fix fontification of labels, and other things with ":".
-
-       * progmodes/cc-engine.el (c-forward-label): The function now
-       returns 'goto-target, 'qt-2kwds-colon, 'qt-1kwd-colon, as well as
-       the former t.
-
-       * progmodes/cc-fonts.el (c-font-lock-declarations): Interpret the
-       new return code from c-forward-label, fontifying tokens properly.
-       Add some general comments throughout the file.
-
-2007-04-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * textmodes/flyspell.el (flyspell-duplicate, flyspell-incorrect):
-       Revert 2006-01-27 change.
-
-       * diff-mode.el (diff-mode): Revert 2007-03-04 change.
-
-       * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change.
-
-       * desktop.el (desktop-create-buffer, desktop-save):
-       Revert 2004-11-12 change for lack of copyright papers.
-
-       * dired-x.el (dired-guess-shell-case-fold-search): Delete var.
-       (dired-guess-default): Respect case.
-
-       * isearch.el (isearch-forward): Revert 1998-08-26 doc change.
-
-       * emacs-lisp/byte-opt.el (byte-optimize-pure-func): Remove function;
-       was originally checked in as byte-optimize-concat on 1997-11-02.
-
-       * mail/sendmail.el (mail-text, mail-mode): Revert extant pieces of
-       1995-05-19 doc changes.
-
-2007-04-06  Kim F. Storm  <storm@cua.dk>
-
-       * loadhist.el (read-feature): Reimplement.  New optional arg LOADED-P.
-       (unload-feature): Update interactive spec accordingly.
-
-       * progmodes/grep.el (grep-program): Remove commentary about zgrep.
-
-2007-04-06  John Paul Wallington  <jpw@pobox.com>
-
-       * subr.el (with-case-table): Use `make-symbol' to avoid variable
-       capture.  Restore the table in the same buffer.
-
-       * font-lock.el (lisp-font-lock-keywords-2): Add `with-case-table'.
-
-2007-04-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
-       Print entire form.
-
-2007-04-05  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (breakpoint-disabled): Tweak face (again)
-       for low-color displays.
-
-2007-04-05  Glenn Morris  <rgm@gnu.org>
-
-       * play/5x5.el, play/animate.el, play/dissociate.el, play/doctor.el,
-       * play/gomoku.el, play/landmark.el, play/tetris.el, play/zone.el:
-       Seed random number generator on loading.
-
-       * emacs-lisp/authors.el (top-level): Provide self.
-
-       * play/animate.el (top-level): Provide self.
-
-2007-04-04  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-vars.el (c-special-indent-hook): Amend doc-string
-       to mention c-syntactic-indentation.
-
-2007-04-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * subr.el (with-case-table): New macro.
-
-       * international/mule.el (ascii-case-table): New var.
-
-       * mail/smtpmail.el (smtpmail-via-smtp): Use ascii-case-table when
-       downcasing.
-
-2007-04-03  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-minor-mode-map): Simplify.
-
-       * t-mouse.el (t-mouse-make-event-element): Don't use the left edge
-       of the window if we're outside it e.g menu-bar.
-
-       * xt-mouse.el (xterm-mouse-event): Don't use the left edge of the
-       window if we're outside it e.g menu-bar.
-
-2007-04-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/rmail.el (rmail-convert-to-babyl-format): Don't try to
-       decode base-64 encoded body if its content-type is something other
-       than text/* or message/*.
-
-2007-04-03  Juanma Barranquero  <lekktu@gmail.com>
-
-       * simple.el (activate-mark-hook): Fix typo in docstring.
-
-2007-04-03  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tmm.el (tmm-c-prompt): Initialize.
-       (tmm-menubar): Deal with extended menu-items at top level.
-       (tmm-get-keybind): Handle bindings redefined/undefined locally.
-       (tmm-prompt): Handle visibility of top level menu-items.
-
-       * progmodes/gud.el (gud-menu-map): Simplify.
-       (gud-minor-mode-map): Add tool-bar like bindings to the text mode
-       menubar.
-
-2007-04-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mail/smtpmail.el (smtpmail-via-smtp): Revert last change.
-
-       * comint.el (comint-send-input): Widen the buffer first.
-
-       * info.el (Info-fontify-maximum-menu-size): Revert to 100000.
-
-2007-04-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Only obey
-       emacs-lisp-docstring-fill-column in emacs-lisp-mode.
-
-       * newcomment.el (comment-search-forward): Discard comment starters
-       before point.
-
-2007-04-01  Guanpeng Xu  <herberteuler@hotmail.com>
-
-       * mouse.el (mouse-set-secondary): Update mouse-secondary-overlay.
-
-2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mail/smtpmail.el (smtpmail-via-smtp): Use standard case table
-       when downcasing.
-
-       * button.el (previous-button): Rewrite to account for adjacent buttons.
-
-2007-04-01  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlwave.el (idlwave-auto-fill):
-       Revert paragraph-separate change.
-
-       * progmodes/idlw-shell.el (idlwave-shell-break-in):
-       Simplify module calc.
-       (idlwave-shell-set-bp-in-module): Compute module.
-
-2007-03-31  Glenn Morris  <rgm@gnu.org>
-
-       * emacs-lisp/timer.el (run-at-time): Doc fix.
-
-       * emacs-lisp/warnings.el (display-warning): If we create the
-       buffer displaying the warning, disable undo there.
-
-2007-03-31  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-register-file-name-handler)
-       (tramp-register-completion-file-name-handler): New defsubst,
-       derived from `tramp-register-file-name-handlers'.  The split is
-       necessary because Tramp's file name handlers must be registered at
-       different startup places.
-
-2007-03-31  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/hideshow.el (turn-off-hideshow): New function.
-       (hs-minor-mode): Use it instead of a lambda expression in
-       change-major-mode-hook.
-
-2007-03-31  David Kastrup  <dak@gnu.org>
-
-       * woman.el (woman-Cyg-to-Win): Don't convert cons cells
-       corresponding to MANPATH_MAP entries.
-       (woman-man.conf-path, woman-parse-man.conf): Doc fix.
-       (woman-parse-man.conf): Use more discriminating man.conf name.
-       (woman-parse-man.conf): Parse MANPATH_MAP entries.
-       (woman-manpath): Doc fix and type fix.
-       (woman-cached-data): Check for MANPATH_MAP entries.
-       (woman-expand-directory-path): Treat MANPATH_MAP entries.
-
-2007-03-31  Stuart Herring  <herring@lanl.gov>
-
-       * emacs-lisp/sregex.el (sregexq): Doc fix.
-
-2007-03-31  Markus Triska  <markus.triska@gmx.at>
-
-       * flymake.el (flymake-err-line-patterns): Doc fix.
-
-2007-03-30  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * info.el (info-tool-bar-map): Use "exit" for Info-exit.
-       Move to the right.
-
-2007-03-30  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-cmds.el (c-forward-to-nth-EOF-}): Fix EOB bug.
-
-2007-03-30  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc--insert-new-node): Take additional arg DLL.
-       Use it, passed in explicitly, instead of from the dynamic binding.
-       (ewoc-create, ewoc-enter-before): Update to use new call sequence.
-
-2007-03-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * simple.el (blink-matching-open): When in minibuffer, don't
-       search for a match inside the prompt.
-
-2007-03-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tmm.el (tmm-menubar): Select the right menu item with the mouse.
-       (tmm-prompt): Don't make the mouse user select the first menu
-       item twice.
-
-2007-03-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * eshell/esh-proc.el (eshell/kill): Tweak regexp to recognize
-       SIGUSR1 and SIGUSR2.
-
-2007-03-29  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-read-internal): When reading file or dir, only override
-       minibuffer-local-filename-completion-map, otherwise only override
-       minibuffer-local-completion-map.
-
-2007-03-29  Glenn Morris  <rgm@gnu.org>
-
-       * complete.el (partial-completion-mode): Set PC-do-completion-end
-       to nil after use.
-       (PC-lisp-complete-symbol): Create and use a marker at `end',
-       rather than using point-marker.
-
-2007-03-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (next-error-highlight): Doc fix.
-       (compose-mail): Revert 2007-03-19 change.
-
-2007-03-28  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/edebug.el (edebug-display): Don't go to
-       edebug-outside-buffer if it is dead.
-
-2007-03-28  Juanma Barranquero  <lekktu@gmail.com>
-
-       * view.el (view-mode): Fix typos in docstring.
-
-2007-03-28  Stephen Berman  <Stephen.Berman@gmx.net>
-
-       * recentf.el (recentf-save-file): Add a custom :set function.
-
-2007-03-28  Glenn Morris  <rgm@gnu.org>
-
-       * complete.el (PC-do-completion-end): New variable.
-       (partial-completion-mode) <choose-completion-string-functions>:
-       Use PC-do-completion-end in the non-minibuffer case to replace the
-       correct amount of text.
-       (PC-do-completion): Set PC-do-completion-end for c-c-s-f.
-       (PC-lisp-complete-symbol): Give marker the after-insertion type,
-       to deal with improvements inserted after point.
-
-2007-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * button.el (make-text-button): Add explicit `button' property.
-       (default-button): Don't put a `button' property on it.
-
-       * progmodes/python.el (python-mode): Skip comments when parsing.
-
-       * vc-arch.el (vc-with-current-file-buffer): New macro.
-       (vc-arch-file-source-p): Use it to avoid infloop.
-
-2007-03-28  David Hansen  <david.hansen@gmx.net>  (tiny change)
-
-       * emacs-lisp/lisp.el (lisp-complete-symbol):
-       Fix call to get-buffer-window to find windows in other frames.
-
-2007-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * comint.el (comint-proc-query, comint-dynamic-list-completions):
-       Fix calls to get-buffer-window to find windows in other frames.
-       Reported by David Hansen <david.hansen@gmx.net>.
-
-2007-03-27   Kevin Ryde  <user42@zip.com.au>
-
-       * info.el (Info-display-images-node): On a text-only terminal,
-       show the "text" or "alt" parts of the image blobs.
-
-2007-03-27  Glenn Morris  <rgm@gnu.org>
-
-       * complete.el (PC-do-completion): Compute completion-base-size in
-       the non-filename case, rather than setting to nil.
-       (PC-lisp-complete-end): New variable.
-       (PC-lisp-complete-symbol): Use PC-lisp-complete-end to store the
-       original end in a series of consecutive invocations.
-
-       * calendar/calendar.el (calendar-mode-hook): Declare it.
-
-       * calendar/diary-lib.el (diary-live-p): Do not check for
-       diary-selective-display.
-
-2007-03-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * replace.el (occur-next-error): *Occur* might not be displayed in the
-       selected frame.  Reported by David Hansen <david.hansen@gmx.net>.
-
-2007-03-26  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-large-region):
-       Use ispell-call-process-region.
-
-2007-03-26  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble):
-       Use prin1 instead of princ.
-
-2007-03-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * faces.el (face-set-after-frame-default): Revert 2007-03-10 change.
-       Merge in X resources before global face.
-
-       * progmodes/compile.el (compilation-start): Save compilation-directory
-       rather than default-directory as local var.
-       (compilation-directory): Mark as safe local var.
-
-       * files.el: Don't mark default-directory as a safe local var.
-
-2007-03-25  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-mode.el (c-before-change): Fix BOB bug.
-       * progmodes/cc-engine.el: Fix typo.
-
-2007-03-25  Juri Linkov  <juri@jurta.org>
-
-       * compare-w.el (compare-windows): Rename customization group
-       `compare-w' to `compare-windows'.
-       (compare-windows-whitespace, compare-ignore-whitespace)
-       (compare-ignore-case, compare-windows-sync)
-       (compare-windows-sync-string-size, compare-windows-recenter)
-       (compare-windows-highlight, compare-windows): Change group name in
-       the `group' tag from `compare-w' to `compare-windows'.
-       (compare-windows-sync): Add option `nil' for no sync.  Doc fix.
-
-2007-03-24  Markus Triska  <markus.triska@gmx.at>
-
-       * expand.el: Change example to always enable abbrev-mode,
-       and remove redundant `function'.
-       (expand-abbrev-hook): Add autoload cookie.
-
-2007-03-24  Ryan Yeske  <rcyeske@gmail.com>
-
-       * emacs-lisp/testcover.el (testcover-start, testcover-end)
-       (testcover-mark-all, testcover-unmark-all): Add prompts to
-       interactive specs.
-
-2007-03-24  Jason Rumney  <jasonr@gnu.org>
-
-       * autorevert.el (find-file-hook, auto-revert-tail-mode):
-       Use file size in bytes for auto-revert-tail-pos not characters.
-
-2007-03-24  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * vc-rcs.el (vc-rcs-annotate-command):
-       Set text property :vc-annotate-prefix on the annotation text.
-       (vc-rcs-annotate-time): Instead of searching for ": ",
-       search for end of text propertized with :vc-annotate-prefix.
-
-2007-03-24  Martin Rudalics  <rudalics@gmx.at>
-
-       * whitespace.el (top level): Remove calls putting
-       permanent-local nil property since these are no-ops.
-
-       * man.el (Man-support-local-filenames): Assure that
-       default-directory exists when doing call-process.
-
-2007-03-23  David Vazquez  <xeos00@gmail.com>  (tiny change)
-
-       * progmodes/m4-mode.el (m4-m4-buffer, m4-m4-region):
-       Fix omission bug: Use m4-program-options to construct shell command.
-
-2007-03-23  David Kastrup  <dak@gnu.org>
-
-       * progmodes/cc-mode.el (c-make-emacs-variables-local):
-       Use `mapcar' rather than `mapcan' to silence compiler warning.
-
-2007-03-22  Ralf Angeli  <angeli@caeruleus.net>
-
-       * textmodes/reftex.el, textmodes/reftex-vars.el,
-       * textmodes/reftex-toc.el, textmodes/reftex-sel.el,
-       * textmodes/reftex-ref.el, textmodes/reftex-parse.el,
-       * textmodes/reftex-index.el, textmodes/reftex-global.el,
-       * textmodes/reftex-dcr.el, textmodes/reftex-cite.el,
-       * textmodes/reftex-auc.el: Add maintainer address.
-
-2007-03-22  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-agenda-mode, org-table-edit-formulas):
-       Make sure that `global-font-lock-mode' does not turn on font-lock
-       in these buffers.
-
-2007-03-21  Kim F. Storm  <storm@cua.dk>
-
-       * xt-mouse.el (xt-mouse-epoch): New variable.
-       (xterm-mouse-event): Use float-time.
-
-2007-03-21  Nick Roberts  <nickrob@snap.net.nz>
-
-       * xt-mouse.el (xterm-mouse-event): Compute a timestamp using
-       current-time.
-
-2007-03-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * complete.el (read-file-name-internal): Don't add the final > if the
-       completion is not finished (re-application of this patch, which was
-       accidentally undone by Eli).
-
-2007-03-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emulation/viper.el (viper-non-hook-settings): Handle mouse
-       clicks in describe-key and describe-key-briefly advice a little better.
-
-2007-03-21  Juanma Barranquero  <lekktu@gmail.com>
-
-       * server.el (server-process-filter): Cancel any pending isearch.
-
-2007-03-21  Ulf Jasper  <ulf.jasper@web.de>
-
-       * calendar/icalendar.el (icalendar-version): Increase to 0.15.
-       (icalendar--get-unfolded-buffer): Define actual arguments rather
-       than just using &rest.  Check replace-in-string is fbound.
-       (icalendar-import-buffer): Doc fix.
-       (icalendar--convert-ical-to-diary): Set diary-file.
-       Check diary-file before inserting final newline.
-       (icalendar--add-diary-entry): Return diary-file.
-
-2007-03-21  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/calendar.el (diary-set-maybe-redraw): Autoload it.
-       (diary-display-hook): Add custom :set function.
-
-       * calendar/diary-lib.el (diary-header-line-flag): Doc fix.
-       Add custom :set function.
-       (diary-header-line-format): Doc fix.
-       (diary-set-maybe-redraw): New function.
-       (number-of-diary-entries): Change :set to use diary-set-maybe-redraw.
-       (diary-list-entries): Always run diary-mode.
-
-2007-03-20  Kenichi Handa  <handa@m17n.org>
-
-       * international/quail.el (quail-setup-completion-buf): Make the
-       completion buffer read-only.
-       (quail-completion): Adjusted for the above change.  Leave the
-       modified flag nil.
-
-2007-03-20  David Kastrup  <dak@gnu.org>
-
-       * files.el (magic-mode-alist): Require literal "%!PS" string for
-       magic postscript file detection.
-
-2007-03-20  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/ispell.el (ispell-call-process): New function.
-       Defends against bad `default-directory.'
-       (ispell-check-version, ispell-find-aspell-dictionaries)
-       (ispell-get-aspell-config-value, lookup-words): Call it.
-       (ispell-call-process-region): New function.
-       (ispell-send-string): Call it.
-
-2007-03-20  Andreas Schwab  <schwab@suse.de>
-
-       * Makefile.in (custom-deps): Depend on $(lisp)/subdirs.el.
-       (finder-data): Likewise.
-       (autoloads): Likewise.
-
-2007-03-20  Martin Rudalics  <rudalics@gmx.at>
-
-       * files.el (basic-save-buffer): Do not set visited filename when
-       the corresponding directory does not exist or the specified
-       filename is that of an existing directory.
-
-2007-03-20  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/diary-lib.el (diary-live-p): New function.
-       (number-of-diary-entries): Add a :set function to redisplay diary
-       when necessary.
-
-2007-03-19  Nick Roberts  <nickrob@snap.net.nz>
-
-       * t-mouse.el (t-mouse-make-event-element): Use timestamp output
-       from client program, mev, to compute mouse event.
-
-2007-03-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * faces.el (momentary): Face removed; unused due to reversion of
-       2007-01-04 changes by Kevin Rodgers.
-
-       * mouse.el (mouse-drag-track): Remove spurious input-pending-p test.
-       Suggested by Johan Bockg\e,Ae\e(Brd.
-
-2007-03-19  Martin Rudalics  <rudalics@gmx.at>
-
-       * font-lock.el (lisp-font-lock-keywords-1):
-       Highlight define-globalized-minor-mode as a keyword.
-
-2007-03-19  Kim F. Storm  <storm@cua.dk>
-
-       * calc/calc-forms.el (math-std-daylight-savings)
-       (math-std-daylight-savings-old): Doc fix.
-
-2007-03-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/python.el (python-default-template): Doc fix.
-       (python-buffer): Fix typo in docstring.
-
-       * isearchb.el (isearchb-follow-char):
-       * subr.el (def-edebug-spec): Fix typo in docstring.
-
-2007-03-19  Richard Stallman  <rms@gnu.org>
-
-       * files.el (default-directory): Mark safe.
-       (basic-save-buffer-2): Put proper dir name in error message.
-
-       * simple.el (compose-mail): Run switch-function after
-       setting up the mail buffer.
-
-       * startup.el (inhibit-splash-screen, initial-major-mode): Doc fixes.
-
-2007-03-18  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-forms.el (math-parse-date): Fix a regular expression.
-       (math-std-daylight-savings-new): Rename from
-       `math-std-daylight-savings'.
-       (math-std-daylight-savings-old): Rename from old value of
-       `math-std-daylight-savings'.
-       (math-std-daylight-savings): Use `math-std-daylight-savings-new' or
-       `math-std-daylight-savings-old' depending on the year.
-
-2007-03-18  Detlev Zundel  <dzu@gnu.org>
-
-       * emacs-lisp/re-builder.el (reb-update-overlays): Do not mark
-       zero-width regexps as invalid but rather at least count them correctly.
-
-2007-03-18  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * net/tls.el (open-tls-stream): In handshake-waiting loop,
-       don't wait more if there is output available to process.
-
-2007-03-18  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/compile.el (compilation-find-file): Revert change
-       from 2006-07-18 to allow completion of directory names.
-       Reported by John Carter <john.carter@tait.co.nz>.
-
-2007-03-18  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (when, unless): Doc fix.
-
-2007-03-17  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * net/tls.el (tls-program): Doc fix.
-
-2007-03-17  Denis Bueno  <dbueno@gmail.com>  (tiny change)
-
-       * autorevert.el (auto-revert-tail-handler):
-       Call after-revert-hook.
-
-2007-03-17  Ryan Yeske  <rcyeske@gmail.com>
-
-       * simple.el (switch-to-completions): No error if search for \n\n fails.
-
-2007-03-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (line-move-1):
-       Respect `inhibit-line-move-field-capture' property.
-
-2007-03-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * comint.el (comint-arguments): Mark backslash-escaped chars.
-       (comint-delim-arg): Don't treat them as delimiters.
-
-2007-03-12  Kim F. Storm  <storm@cua.dk>
-       * ido.el (ido-init-completion-maps): Remap delete-backward-char.
-
-2007-03-12  Lawrence Mitchell  <wence@gmx.li>  (tiny change)
-
-       * tempo.el (tempo-insert): Deal with 'r> if it appears
-       specified with a prompt argument.
-
-2007-03-12  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-set-font-lock-defaults):
-       Handle narrow table columns correctly.
-
-2007-03-12  Mark A. Hershberger  <mah@everybody.org>
-
-       * xml.el (xml-parse-tag, xml-parse-string, xml-parse-attlist)
-       (xml-parse-dtd, xml-parse-elem-type, xml-substitute-special):
-       Return to use of the -no-properties variants.  There was
-       consensus on emacs-devel that the speed of these variants was
-       prefered since we are usually parsing files (from the internet
-       or on disk) instead of XML created in Emacs.
-
-       * eshell/esh-mode.el (eshell-handle-ansi-color): New function.
-       Add customize option.
-
-2007-03-12  Glenn Morris  <rgm@gnu.org>
-
-       * calc/calc-forms.el (math-std-daylight-savings): Switch to new
-       North American rule.  Replace "daylight savings" with "daylight
-       saving" in doc.
-
-       * calendar/cal-china.el, cal-dst.el, calendar.el, diary-lib.el:
-       * calendar/lunar.el, solar.el: Replace "daylight savings" with
-       "daylight saving" in text.
-
-       * woman.el (woman-change-fonts): Tweak previous change by using
-       woman-request-regexp rather than "^\\.".
-
-       * startup.el (command-line-1): Make insertion of
-       initial-scratch-message not depend on scratch being selected.
-
-2007-03-11  Juri Linkov  <juri@jurta.org>
-
-       * replace.el (match): Use yellow background on light-bg terminals.
-
-2007-03-11  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/bytecomp.el (byte-compile-warning-prefix):
-       Correctly compute line number.
-
-2007-03-11  Guanpeng Xu  <herberteuler@hotmail.com>
-
-       * type-break.el (type-break-get-previous-count):
-       Repeat previous change here.
-
-2007-03-11  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * progmodes/grep.el (grep-find-ignored-directories):
-       Add .git and .bzr to list.
-
-2007-03-11  Andreas Schwab  <schwab@suse.de>
-
-       * diff-mode.el (diff-apply-hunk): Use proper format string for error.
-
-2007-03-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mail/emacsbug.el (report-emacs-bug): Don't hard code the "X" name.
-
-2007-03-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * faces.el (face-set-after-frame-default): Recalculate face
-       customizations after applying X resources.
-
-2007-03-10  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-timeout-seconds): New variable.
-       (rcirc-keepalive-seconds): Remove variable.
-       (rcirc-server-name, rcirc-timeout-timer, rcirc-connecting)
-       (rcirc-process, rcirc-user-disconnect): New variables.
-       (rcirc-connect): Initalize new variables.
-       (rcirc-keepalive): Don't send keepalive pings before connection
-       is completed.
-       (rcirc-sentinel): Do mark all channels with activity when
-       connection is dropped.  Run hook with process buffer local.
-       (rcirc-reschedule-timeout, rcirc-delete-process): New functions.
-       (rcirc-buffer-process): Return value of rcirc-process if
-       rcirc-server-buffer is nil.
-       (rcirc-server-name): Return the reported server name.
-       (rcirc-update-prompt): Simplify computation of the server name.
-       (rcirc-format-response-string): Likewise.
-       (rcirc-handler-001): Mark server as connected, record the reported
-       server name, and schedule a timeout.
-       (rcirc-track-nick): Add a spec for the tty class.
-       (rcirc-user-non-nick): Remove function.
-       (rcirc-nick-prefix-chars): Add variable.
-       (rcirc-user-nick): Use above variable.
-
-2007-03-10  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * icomplete.el (icomplete-tidy, icomplete-exhibit):
-       Bind deactivate-mark to nil.
-
-2007-03-10  Martin Rudalics  <rudalics@gmx.at>
-
-       * complete.el (PC-do-completion): Bind dirlength to nil to avoid
-       that buffer contents get erased during completion.
-
-2007-03-10  Glenn Morris  <rgm@gnu.org>
-
-       * woman.el (woman-change-fonts): Add a hack to deal with
-       font-escape followed by "." at start of a line.
-       (woman2-IP): Add a hack to deal with consecutive requests.
-       (woman2-tagged-paragraph): Extend existing hack to handle "sp".
-
-2007-03-10  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-mode.el (c-before-change): Wrap in save-match-data.
-
-2007-03-09  Richard Stallman  <rms@gnu.org>
-
-       * abbrev.el (abbrev): Add `provide'.
-
-2007-03-09  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * net/ange-ftp.el (ange-ftp-try-passive-mode): Doc fix.
-
-2007-03-09  Martin Rudalics  <rudalics@gmx.at>
-
-       * complete.el (PC-try-completion): New function.
-       (PC-do-completion, read-file-name-internal): Use it instead of
-       try-completion.
-
-2007-03-08  Alan Mackenzie  <acm@muc.de>
-
-       Remove stale tokens from `c-found-types' cache.
-
-       * progmodes/cc-mode.el (c-unfind-enclosing-token)
-       (c-unfind-coalesced-tokens, c-before-change): New functions.
-       (c-maybe-stale-found-type): New variable.
-
-       * progmodes/cc-engine.el (c-partial-ws-p, c-unfind-type)
-       (c-trim-found-types): New functions.
-
-2007-03-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * smerge-mode.el (smerge-remove-props): Don't mark the buffer modified.
-       (debug-ignored-errors): Add entry from smerge-match-conflict.
-
-2007-03-08  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlw-help.el (idlwave-do-context-help1): Don't visit
-       special help topics for keywords.
-       (idlwave-help-assistant-command): Include ".exe" for ms-dos
-       etc. Assistant command.
-
-2007-03-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * replace.el (occur-engine): Move buffer-undo-list binding...
-       (occur-1): ...to here.
-
-       * complete.el (PC-bindings): Rebind M-TAB in read-expression-map.
-
-       * simple.el (minibuffer-completing-symbol): New var.
-       (eval-expression): Use it.
-       (completion-setup-function): Don't bind completion-base-size when
-       completing a symbol in the minibuffer.
-
-2007-03-08  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gdb): Pop up current GUD buffer if user
-       tries to start a second session in graphical mode.
-
-2007-03-07  Miles Bader  <miles@gnu.org>
-
-       * international/isearch-x.el
-       (isearch-process-search-multibyte-characters):
-       Strip text-properties from PROMPT to avoid an error from read-string.
-
-2007-03-07  Kim F. Storm  <storm@cua.dk>
-
-       * complete.el (PC-bindings): Remap lisp-complete-symbol to
-       PC-lisp-complete-symbol instead of binding M-TAB in global-map.
-
-2007-03-07  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
-
-       * complete.el (PC-do-completion): Delete duplicates in the list of
-       possible completions.
-
-2007-03-07  Glenn Morris  <rgm@gnu.org>
-
-       * ses.el (ses-mode): Doc fix.
-
-2007-03-06  Kim F. Storm  <storm@cua.dk>
-
-       * isearch.el (isearch-message-prefix): Undo 2007-03-01 change.
-
-2007-03-06  Kenichi Handa  <handa@m17n.org>
-
-       * term/x-win.el (x-select-utf8-or-ctext): Improve the strategy.
-
-2007-03-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * simple.el (completion-setup-function): Improve last fix so it doesn't
-       set it to a relative directory name either.
-
-2007-03-05  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el: Replace some (defvar VAR) by (defvar VAR nil).
-
-2007-03-05  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/re-builder.el (reb-re-syntax): Fix custom type.
-
-       * files.el (find-file-noselect): No error if file no longer exists.
-       Display a message and avoid other questions.
-
-2007-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcomplete.el (pcomplete-show-completions): Improve last change, so
-       as not to use an invisible window and to create a window if none exist.
-
-       * progmodes/python.el (python-send-command): Restart proc if necessary.
-       (python-proc): Simplify.
-
-2007-03-05  David Hansen  <david.hansen@gmx.net>  (tiny change)
-
-       * pcomplete.el (pcomplete-show-completions): Search all frames for
-       completions buffer.
-
-2007-03-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (customize-save-variable): Clear customized-value
-       property (saved values are now put in theme-value property).
-       (customize-set-variable): Doc fix.
-
-       * complete.el (PC-do-completion): If completion-ignore-case is
-       non-nil, replace field with completion string before exiting.
-
-2007-03-05  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-make-temp-file): New parameter FILENAME.
-       Append its extension to the resulting temporary file name.
-       (tramp-handle-file-local-copy, tramp-handle-write-region): Apply it.
-
-       * net/tramp-smb.el (tramp-smb-handle-file-local-copy)
-       (tramp-smb-handle-write-region): Apply it.
-
-2007-03-05  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
-
-       * emacs-lisp/lisp-mode.el (calculate-lisp-indent):
-       Redo previous change.
-
-2007-03-04  Kevin Rodgers  <kevin.d.rodgers@gmail.com>  (tiny change)
-
-       * diff-mode.el (diff-mode): Doc fix.
-
-2007-03-05  Kenichi Handa  <handa@m17n.org>
-
-       * international/characters.el: Set category `l' (latin)
-       for more characters.
-
-2007-03-04  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/authors.el (authors-aliases): Add alias.
-
-2007-03-04  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/hideshow.el (hs-minor-mode): Turn mode off and show
-       all when switching major mode.
-       (hs-minor-mode, hs-c-start-regexp, hs-block-start-regexp)
-       (hs-block-start-mdata-select, hs-block-end-regexp)
-       (hs-forward-sexp-func, hs-adjust-block-beginning):
-       Do not make these variables permanent-local.
-
-2007-03-04  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/cperl-mode.el (cperl-mode):
-       Modify cperl-compilation-error-regexp-alist by appending.
-
-       * emacs-lisp/edebug.el (edebug-kill-buffer): New function.
-       (edebug-mode): Add the hook.
-       (edebug-recursive-edit): Remove the hook on exiting.
-
-       * type-break.el (type-break-get-previous-time):
-       Handle end-of-file errors specially
-       so they don't get reported wrong in .emacs.
-
-       * startup.el (fancy-splash-text): Clarify text.
-
-       * simple.el (beginning-of-buffer, end-of-buffer):
-       Avoid treating plain C-u like numeric arg.
-
-       * simple.el (completion-setup-function): Don't set
-       default-directory to nil.
-
-       * shell.el (shell-dirstack-query): Doc fix.
-
-       * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line):
-       Don't select the window -- pass it to primitives instead.
-
-       * faces.el (minibuffer-prompt): Use medium blue by default.
-
-2007-03-04  David Kastrup  <dak@gnu.org>
-
-       * jit-lock.el (jit-lock-stealth-time): Change default to nil.
-       Preserve 16 as default value for "seconds" when customizing.
-
-2007-03-04  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-self-insert-command)
-       (orgtbl-self-insert-command, org-delete-char)
-       (org-delete-backward-char): Set the `flyspell-delayed' property.
-
-2007-03-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * international/mule.el (find-auto-coding): Don't search for
-       line-ending characters past the end of the tail.
-
-2007-03-03  Christopher Allan Webber  <cwebber@dustycloud.org>  (tiny change)
-
-       * play/gamegrid.el (gamegrid-add-score-with-update-game-score-1):
-       Jump to the line where new score has been uploaded.
-
-       * play/tetris.el (tetris-move-bottom, tetris-move-left)
-       (tetris-move-right, tetris-rotate-prev, tetris-rotate-next):
-       Do nothing when the game is paused.
-
-2007-03-03  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-set-tags): Prevent slipping of point
-       during completion.
-
-2007-03-01  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * isearch.el (isearch-message-prefix):
-       Use minibuffer-prompt-properties.
-
-2007-03-01  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el: Replace (defvar VAR nil) by (defvar VAR).
-       (ps-setup): Print which Emacsen is running ps-print package.
-
-2007-03-01  Stuart Herring  <herring@lanl.gov>
-
-       * files.el (set-auto-mode-0): Use `indirect-function'.
-       (hack-one-local-variable): Don't reapply current major mode.
-
-2007-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/python.el (python-quote-syntax): Don't bother with
-       syntax-ppss-context.
-       (python-fill-paragraph): Make sure that fenced-string delimiters that
-       stand on their own line stay there.
-
-2007-03-01  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * replace.el (perform-replace): Propertize message.
-
-2007-03-01  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-prepare-agenda-buffers): Also check for
-       invisible heading.
-
-2007-02-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * net/tramp.el (tramp-file-name-handler): Revert last change.
-
-2007-02-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-mouse-until, gdb-mouse-jump):
-       Correct doc strings.
-
-2007-02-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * replace.el (perform-replace): Undo forward-char immediately if
-       non-adjacent search fails.
-
-2007-02-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * version.el (emacs-major-version, emacs-minor-version):
-       string-to-int -> string-to-number.
-
-2007-02-28  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help.el (where-is): Fail gracefully when not passed a command.
-
-2007-02-28  Stuart Herring  <herring@lanl.gov>
-
-       * find-lisp.el (find-lisp-default-directory-predicate):
-       Fix bug: Do symlink check on expanded filename.
-
-2007-02-28  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-set-tags, org-table-get-field): Avoid case
-       changes during replacement.
-       (org-agenda-mode-map): Add default binding for `org-agenda-archive'.
-
-2007-02-28  Lars Hansen  <larsh@soem.dk>
-
-       * desktop.el: Delete header line listing me as maintainer.
-
-2007-02-28  Glenn Morris  <rgm@gnu.org>
-
-       * tutorial.el (tutorial--describe-nonstandard-key): Tweak text in
-       the menus case.
-
-2007-02-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * net/tramp.el (tramp-file-name-handler): Inhibit modification
-       hooks to avoid confusion when combining after-change calls.
-
-2007-02-27  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-encrypt-string): Remove inhibition of gpg-agent,
-       now that pgg-gpg-process-region correctly honors passed-in passphrase.
-       (allout-distinctive-bullets-string): Add info about bullet conventions.
-       (allout-mode): Add info about distinctive vs plain bullets.
-
-2007-02-27  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-archive-subtree): Quote variable name.
-       (org-agenda-get-todos): Make sure skip properties are checked correctly.
-
-2007-02-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-bashdb-history, gud-bashdb-marker-filter)
-       (gud-bashdb-command-name, bashdb): Remove.
-       (gud, gud-menu-map): Remove references to bash/bashdb.
-
-2007-02-26  Andrey Zhdanov  <susuman@hotmail.com>  (tiny change)
-
-       * progmodes/gud.el (gud-pdb-marker-regexp): Add optional <module>
-       keyword for Python 2.5.
-
-2007-02-26  Romain Francoise  <romain@orebokech.com>
-
-       * net/net-utils.el (whois-server-tld): Update server for .org.
-       (whois-server-list): Add whois.publicinterestregistry.net.
-       (whois-guess-server): Fix formatting in docstring.
-
-2007-02-26  Kim F. Storm  <storm@cua.dk>
-
-       * mouse.el (mouse-show-mark): Run hooks and perform command
-       remapping for mouse-region-delete-keys.
-
-2007-02-26  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * font-core.el (font-lock-mode): Doc fix.
-
-2007-02-25  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-buffer-internal): Set this-command to fallback command.
-       Add selected buffer to buffer-name-history.
-       (ido-file-internal): Set this-command to fallback command.
-       Add file names to file-name-history.
-
-       * emacs-lisp/map-ynp.el (map-y-or-n-p):
-       Apply minibuffer-prompt-properties.
-
-2007-02-25  Andreas Schwab  <schwab@suse.de>
-
-       * files.el (hack-one-local-variable-eval-safep): Correct handling
-       of edebug-form-spec property value.  Reported by Johan Bockg\e,Ae\e(Brd.
-
-2007-02-25  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-table-overlay-coordinates)
-       (org-table-toggle-coordinate-overlays): New functions.
-       (org-table-overlay-coordinates, org-table-coordinate-overlays):
-       New variables.
-       (org-startup-with-deadline-check): Remove option.
-       (org-mode): Remove deadline check on startup.
-       (org-table-limit-column-width): Remove option.
-       (org-table-formula-numbers-only): Remove option.
-       (org-link-style, org-link-format): Remove options.
-       (org-select-agenda-window, org-fit-agenda-window): Remove options.
-       (org-export-ascii-show-new-buffer)
-       (org-export-html-show-new-buffer): Remove options.
-       (org-activate-links): Remove camel option.
-       (org-file-link-context-use-camel-case): Remove option.
-       (org-camel-regexp): Remove variable.
-       (org-activate-camels): Remove function.
-       (org-store-link): Remove Camel stuff.
-       (org-make-org-heading-camel): Remove function.
-       (org-open-at-point): Remove camel stuff.
-       (org-link-search): Remove camel stuff.
-       (org-camel-to-words): Function removed.
-       (org-get-agenda-file-buffer): Make sure we prepare the base
-       buffers, not any indirect buffers.
-       (org-sort-entries): Sort top-level when not on a headline, and no
-       active region.
-       (org-in-regexp): New function.
-       (org-search-not-self): Rename from `org-search-not-link'.
-       (org-open-link-marker): New variable.
-       (org-open-at-point): Set `org-open-link-marker'.
-       (org-print-icalendar-entries): Fixe bug with excluding DONE
-       entries from the exported list.
-       (org-edit-formula-lisp-indent): New command.
-       (orgtbl-to-texinfo, orgtbl-to-html): New functions.
-       (orgtbl-to-latex, orgtbl-insert-radio-table)
-       (orgtbl-toggle-comment, orgtbl-send-table): New functions.
-       (orgtbl-radio-table-templates): New option.
-       (org-store-link-props):
-       (org-remember-templates): More possibilities to insert info
-       into templates.
-       (org-remember-apply-template): Make use of the extended
-       template capabilities.
-       (org-remember-redo-template): New command.
-       (org-upgrade-old-links)
-       (org-table-modify-formulas, org-table-replace-in-formulas)
-       (org-table-find-dataline)
-       (org-table-get-vertical-vector): Remove functions.
-       (org-table-remove-rectangle-highlight)
-       (org-time-stamp-format, org-toggle-log-option)
-       (org-table-highlight-rectangle)
-       (org-table-iterate, org-table-make-reference):
-       (org-translate-time, org-tree-to-indirect-buffer)
-       (org-table-field-info, org-table-fix-formulas)
-       (org-table-force-dataline, org-table-get-descriptor-line)
-       (org-table-get-range)
-       (org-skip-comments, org-sort)
-       (org-sort-entries, org-sublist, org-table-add-rectangle-overlay)
-       (org-table-current-dline, org-table-current-field-formula)
-       (org-table-edit-backward-field)
-       (org-table-edit-formulas-post-command)
-       (org-table-edit-line-down, org-table-edit-line-up)
-       (org-agenda-archive)
-       (org-agenda-clock-cancel)
-       (org-agenda-clock-out, org-agenda-list-stuck-projects)
-       (org-agenda-open-link, org-agenda-show-new-time)
-       (org-agenda-skip-subtree-when-regexp-matches)
-       (org-agenda-tree-to-indirect-buffer, org-agenda-undo)
-       (org-at-regexp-p, org-auto-repeat-maybe, org-check-log-option)
-       (org-do-sort, org-file-image-p, org-find-overlays)
-       (org-find-row-type, org-get-indirect-buffer, org-get-repeat)
-       (org-highlight-until-next-command, org-isearch-end)
-       (org-match-any-p, org-next-link, org-previous-link):
-       (org-remove-subtree-entries-from-agenda, org-replace-escapes)
-       (org-rewrite-old-row-references)
-       (org-isearch-post-command)
-       (org-table-edit-move, org-table-edit-next-field)
-       (org-table-edit-scroll, org-table-edit-scroll-down)
-       (org-set-frame-title, org-show-reference)
-       (org-unhighlight-once, org-verify-change-for-undo): New functions.
-       (org-show-variable): Remove command.
-       (org-add-log-maybe): New arguments STATE, FINDPOS
-       (org-table-sort-lines): Rewrite from scratch.
-       (org-link-search): New argument AVOID-POS.
-       (org-print-icalendar-entries): Remove argument CATEGORY.
-       (org-run-agenda-series): Remove argument WONDOW.
-       (org-next-link, org-previous-link): New commands.
-       (org-agenda-date-format): New option.
-       (org-table-iterate): New command.
-       (org-table-modify-formulas)
-       (org-table-replace-in-formulas): Remove functions.
-       (org-table-fix-formulas): New function.
-       (org-table-insert-column, org-table-delete-column)
-       (org-table-move-column): Use `org-table-fix-formulas'.
-       (org-follow-gnus-link): Patch from Bastien/Leo.
-       (org-table-current-field-formula): New function.
-       (org-file-image-p): New function.
-       (org-agenda-show-new-time): New function.
-       (org-agenda-date-later): Call `org-agenda-show-new-time'.
-       (org-with-remote-undo): New macro.
-       (org-agenda-undo): New command.
-       (org-verify-change-for-undo): New function.
-       (org-time-stamp-format): New function.
-       (org-agenda-get-timestamps): Skip scheduled if DONE and requested
-       by user.
-       (org-match-any-p): New function.
-       (org-make-tags-matcher): Handle regular expressions for tag and
-       todo matches.
-       (org-read-date): Accept "+N" as input for a date relative to the
-       current date.
-       (org-remove-subtree-entries-from-agenda): New function.
-       (org-agenda-archive, org-agenda-kill):
-       Use `org-remove-subtree-entries-from-agenda'.
-       (org-do-sort, org-sort-entries): New functions.
-       (org-sort): New command.
-       (org-table-sort-lines): Use `org-do-sort'.
-       (org-fix-decoded-time): New function.
-       (org-table-number-regexp): Require 0x... to identify as number
-       in tables.
-       (org-startup-options): New keywords for note taking.
-       (org-upgrade-old-links): Remove function.
-       (org-get-repeat): New function.
-       (org-show-context): Also show siblings on current level.
-       (org-show-siblings): New function.
-       (org-isearch-end, org-isearch-post-command): New functions.
-       (org-show-siblings): New option.
-       (org-show-context): Use `org-show-siblings'.
-       (org-table-maybe-recalculate-line): No longer require `calc-eval'
-       to be bound, because user may just use elisp.
-
-2007-02-24  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-paste): Handle x-clipboard-yank.
-       (cua--init-keymaps): Remap x-clipboard-yank to cua-paste.
-
-2007-02-24  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * startup.el (command-line): Also check if the abbrev file is readable.
-
-2007-02-24  John Paul Wallington  <jpw@pobox.com>
-
-       * net/tls.el (tls-certtool-program): Fix custom type.
-
-       * mail/feedmail.el (feedmail-message-id-generator)
-       (feedmail-date-generator): Fix custom types.
-
-       * mail/rmail.el (rmail-message-filter): Fix custom type.
-
-2007-02-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * startup.el (command-line): If simple.el cannot be found, proceed
-       with a warning message.
-
-2007-02-24  Kenichi Handa  <handa@m17n.org>
-
-       * international/utf-8.el (utf-8-pre-write-conversion): Handle the
-       case that BEG is a string.
-
-2007-02-24  Chris Moore  <dooglus@gmail.com>
-
-       * pgg-pgp5.el (pgg-pgp5-encrypt-region):
-       * pgg-pgp.el (pgg-pgp-encrypt-region):
-       * pgg-gpg.el (pgg-gpg-encrypt-region):
-       Check pgg-encrypt-for-me if no other recipients.
-
-2007-02-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/rmailedit.el (rmail-cease-edit): Restore the Rmail toolbar.
-
-       * textmodes/sgml-mode.el (sgml-validate): Quote the file name with
-       shell-quote-argument.
-
-2007-02-23  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
-
-       * comint.el (comint-read-input-ring): Use comint-input-ring-size
-       from the comint buffer instead of the temporary one.
-
-2007-02-23  David Reitter  <david.reitter@gmail.com>
-
-       * cus-edit.el (custom-save-all): Canonicalize custom-file before
-       storing it in recentf-exclude.
-
-2007-02-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * startup.el (fancy-splash-screens): Make cursor-type buffer-local
-       in splash screen.
-
-2007-02-22  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlw-shell.el (idlwave-shell-mode): Clean up pending
-       commands, for restart.
-       (idlwave-shell-current-module): Fix handling of module name by type.
-       (idlwave-shell-break-in): Update type handling.
-       (idlwave-shell-bp-get): Encode type in BP structure.
-       (idlwave-shell-set-bp): Fix setting condition/count on disabled BPs.
-       (idlwave-shell-module-source-query): Query routine info based on type.
-       Fix path parsing for non-compiled files.
-       (idlwave-shell-module-source-filter): Don't signal error in filter
-       if no source found.
-       (idlwave-shell-set-bp-in-module): Use fallback source to prevent
-       filter race.
-
-2007-02-22  Kim F. Storm  <storm@cua.dk>
-
-       * wid-edit.el (widget-default-create): Undo 2007-02-04 change.
-       (editable-field): Document need to put some text before the %v
-       escape in :format string.
-
-2007-02-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-svn.el: Remove the code inherited from CVSREAD and `cvs edit'.
-       (vc-svn-use-edit): Remove unused config var.
-       (vc-svn-update, vc-svn-revert): Checkout is always implicit.
-
-       * outline.el (hide-sublevels): Keep empty last line, if available.
-
-       * buff-menu.el (list-buffers-noselect): Use explicit unicode code
-       rather than the corresponding unicode char, to make the code
-       more readable.
-
-2007-02-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * speedbar.el (speedbar-frame-mode, speedbar-frame-width)
-       (speedbar-show-unknown-files, speedbar-item-info-file-helper)
-       (speedbar-item-info-tag-helper): Doc fixes.
-
-2007-02-19  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (locale-language-names):
-       Map "eo" to "Esperanto".
-
-       * language/european.el ("Esperanto"): New language environment.
-
-2007-02-17  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
-
-       * simple.el (kill-line): Doc fix.
-
-2007-02-17  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/bindat.el (bindat--unpack-u*): Optimize.
-       (bindat--unpack-item, bindat--length-group, bindat--pack-item)
-       (bindat--unpack-group, bindat--pack-group):
-       Handle vectors with optional element type.
-
-2007-02-17  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-gpg.el (pgg-gpg-process-region): Make USE-AGENT nil
-       if PASSPHRASE is given.
-
-2007-02-17  Chris Moore  <dooglus@gmail.com>
-
-       * jka-cmpr-hook.el (jka-compr-compression-info-list):
-       Recognize backups of bz2 compressed files.
-
-2007-02-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * info-look.el (info-lookup): Bind Info-fontify-maximum-menu-size
-       to nil to speed up lookup of the symbol in index nodes.
-
-2007-02-17  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
-
-       * emacs-lisp/lisp-mode.el (calculate-lisp-indent):
-       Add indentation for the constants of Lisp.
-
-2007-02-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * ps-print.el: Use (defvar <foo>) where applicable.
-       (ps-print-emacs-type): Remove.
-       (ps-x-frame-property, ps-e-frame-parameter): Remove.
-       (ps-frame-parameter): Align its call-convention with frame-parameter.
-       (ps-begin-job): Adjust calls to it appropriately.
-       (ps-setup): Don't print ps-print-emacs-type.
-       (ps-e-find-composition, ps-mark-active-p, ps-color-device):
-       Define in such a way that it's obvious that it's defined.
-       (ps-prsc, ps-c-prsc, ps-s-prsc): Remove.
-       (ps-rmail-mode-hook, ps-vm-mode-hook, ps-gnus-summary-setup)
-       (ps-jts-ps-setup): Use flavor-neutral syntax instead.
-
-2007-02-15  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-cmds.el (c-indent-new-comment-line): When splitting
-       an empty one-line C-style comment, post-position point properly.
-
-2007-02-15  Chris Moore  <dooglus@gmail.com>
-
-       * isearch.el (isearch-lazy-highlight-space-regexp): New variable.
-       (isearch-lazy-highlight-new-loop): Bind it.
-       (isearch-lazy-highlight-search): Use it.
-
-       * replace.el (replace-highlight): Bind search-whitespace-regexp to nil.
-
-2007-02-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (font-lock-extend-region-wholelines):
-       Only return non-nil if the region has really been changed.
-       Reported by David Hansen <david.hansen@physik.fu-berlin.de>
-
-2007-02-15  Juanma Barranquero  <lekktu@gmail.com>
-
-       * play/5x5.el (5x5-crack-xor-mutate): Doc fix.
-       (5x5-draw-grid-end, 5x5-make-xor-with-mutation, 5x5-mode, 5x5-crack)
-       (5x5-play-solution, 5x5-y-or-n-p): Fix typos in docstrings.
-
-2007-02-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faces.el (color-values): Revert changes to docstring from
-       2007-01-31 and 2000-09-07.
-
-       * textmodes/ispell.el (ispell-keep-choices-win, ispell-word)
-       (ispell-begin-skip-region-regexp): Fix typos in docstrings.
-       (ispell-dictionary-alist, ispell-process-line): Doc fixes.
-       (ispell-help): Fix typos in docstring and output message.
-
-2007-02-14  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (grep-files-aliases): Add tex and texi aliases.
-       (lgrep): Add DIR arg to start grep in specific directory, like rgrep.
-       (grep): Fix lgrep reference.
-
-       * disp-table.el (make-glyph-code, glyph-char, glyph-face): New defuns.
-       (standard-display-underline): Use make-glyph-code.
-
-       * descr-text.el (describe-char): Use glyph-char and glyph-face.
-
-       * international/latin1-disp.el (latin1-display-char):
-       Use make-glyph-code.
-
-2007-02-13  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ehelp.el (with-electric-help, electric-help-exit)
-       (electric-help-retain): Doc fixes.
-
-       * emacs-lisp/bytecomp.el (byte-compile-dest-file)
-       (byte-compile-file): Doc fixes.
-
-2007-02-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Change all uses of
-       mac-set-font-panel-visibility to mac-set-font-panel-visible-p.
-       (mac-ae-number): Return integer 0 if coerced result is float 0.0.
-       (mac-ae-get-url): Call select-frame-set-input-focus.
-       (mac-dnd-handle-drag-n-drop-event): Don't call
-       select-frame-set-input-focus.
-
-2007-02-13  Kenichi Handa  <handa@m17n.org>
-
-       * international/characters.el: Fix documentation of category `a'.
-
-2007-02-11  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * progmodes/grep.el (grep): Mention lgrep and rgrep in the docstring.
-
-2007-02-12  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-get-ls-command, tramp-get-file-exists-command)
-       (tramp-get-remote-ln): Handle error case.
-       Reported by Chris Moore <dooglus@gmail.com>.
-
-2007-02-11  Kim F. Storm  <storm@cua.dk>
-
-       * bindings.el (ctl-x-map): Remove register compatibility bindings
-       C-x /, C-x j, C-x x, and C-x g (deprecated since Emacs 19).
-
-2007-02-11  Richard Stallman  <rms@gnu.org>
-
-       * loadhist.el (unload-feature): Handle (t . SYMBOL) entries
-       in load history.
-
-       * emacs-lisp/lisp-mode.el (indent-sexp): Clean up termination
-       condition -- don't fail to stop at endpos.
-
-2007-02-11  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-agenda-get-todos)
-       (org-agenda-get-timestamps, org-agenda-get-closed)
-       (org-agenda-get-deadlines, org-agenda-get-scheduled)
-       (org-agenda-get-blocks, org-format-agenda-item)
-       (org-agenda-change-all-lines, org-scan-tags): Rename text property
-       from `category' to `org-category'.
-
-2007-02-11  Kenichi Handa  <handa@m17n.org>
-
-       * international/titdic-cnv.el (titdic-convert): Force files be written
-       with Unix-like eol format.  Read files under CXTERM-DIC by raw-text.
-       (miscdic-convert): Force files be written with Unix-like eol format.
-
-2007-02-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * files.el (change-major-mode-with-file-name): Fix typo in docstring.
-
-       * calculator.el (calculator-prompt): Doc fix.
-       (calculator-mode-map): Fix typo in menu entry.
-
-2007-02-10  Jay Belanger  <belanger@truman.edu>
-
-       * calculator.el (calculator): Do more extensive checking for when
-       3 lines should be used for the calculator.
-
-2007-02-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * info-look.el (info-lookup-make-completions):
-       Bind Info-fontify-maximum-menu-size to nil to speed up lookup of
-       index nodes.
-
-       * info.el (Info-fontify-maximum-menu-size): Document the effect
-       of a nil value.
-       (Info-fontify-node): Make sure Info-fontify-maximum-menu-size is
-       non-nil before using it as size.
-
-2007-02-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * subr.el (insert-for-yank-1): Prevent read-only properties from
-       interfering with text property operations.
-
-       * image-mode.el (image-mode): Revert 2007-01-30 changes.
-
-       * image.el (image-type-auto-detectable): Don't autodetect x[pb]m.
-       (image-type-auto-detected-p): Fail if another match is found in
-       auto-mode-alist.
-
-       * files.el (magic-mode-alist): Call image-mode instead of
-       image-mode-maybe for autodetected images.
-
-2007-02-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * mail/smtpmail.el (smtpmail-smtp-service, smtpmail-queue-index-file):
-       Fix typos in docstrings.
-       (smtpmail-local-domain, smtpmail-queue-mail): Doc fixes.
-
-2007-02-09  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/float-sup.el: Remove obsolete comment.
-
-2007-02-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * diff-mode.el (diff-sanity-check-hunk): Fix last fix.
-
-2007-02-08  Karl Fogel  <kfogel@red-bean.com>
-
-       * simple.el: Revert previous change, at request of RMS:
-       (fundamental-mode-hook): Remove.
-       (fundamental-mode): Run after-change-major-mode-hooks manually,
-       and don't run the now-nonexistent fundamental-mode-hook.
-
-2007-02-08  Karl Fogel  <kfogel@red-bean.com>
-
-       * simple.el (fundamental-mode-hook): Declare new hook.
-       (fundamental-mode): Run the new dedicated hook, and don't run
-       after-change-major-mode-hooks manually anymore.
-
-2007-02-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-svn.el (vc-svn-merge-news): Understand the new format with two
-       added columns of chars.  Remove support for the "no-meta-info" format.
-       Prompted by Romain Francoise <romain@orebokech.com>.
-
-2007-02-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-if-arrow): New macro.
-       (gdb-mouse-until, gdb-mouse-jump): Use it.
-
-2007-02-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-mouse-until, gdb-mouse-jump): Make them
-       work when there is just an assembler buffer (no source buffer).
-
-2007-02-07  Per Cederqvist  <ceder@lysator.liu.se>  (tiny change)
-
-       * diff-mode.el (diff-sanity-check-hunk): Don't reject the hunk
-       just because the diff was produced using "-p" (--show-c-function).
-
-2007-02-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faces.el (frame-set-background-mode): Use `color-values' and
-       `display-color-p', not `x-color-values' and `x-display-color-p'.
-       (face-valid-attribute-values): Use `defined-colors' instead of
-       `x-defined-colors'.
-
-2007-02-07  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.ps: The ps-print commands without face printing should not
-       print background color.  Reported by Leo <sdl.web@gmail.com>.
-       (ps-print-version): New version 6.7.3.
-       (ps-begin-job): New arg.  Fix ps-default-background and
-       ps-default-foreground initialization.
-       (ps-face-attributes): Fix doc string.
-       (ps-face-background, ps-generate-postscript, ps-generate): Fix code.
-
-       * printing.el: Fix ps-print link.
-
-2007-02-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * faces.el (face-set-after-frame-default): Compile attributes to
-       be set by frame parameters before merging in X resources.
-
-2007-02-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * simple.el (blink-matching-paren-dont-ignore-comments):
-       (blink-matching-paren-on-screen): Doc fixes.
-
-2007-02-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-frames-mode): Truncate lines in stack buffer.
-
-2007-02-05  Juanma Barranquero  <lekktu@gmail.com>
-
-       * loadhist.el (unload-feature): Silently ignore `load-history' entries
-       of the form `(defface . SYMBOL)', and treat `(autoload . SYMBOL)'
-       entries like `defun'.  Return nil.
-
-2007-02-05  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el: Doc fixes.
-
-2007-02-04  David Kastrup  <dak@gnu.org>
-
-       * play/mpuz.el (mpuz-random-puzzle): Fix potential lockup when
-       `mpuz-allow-double-multiplicator' is non-zero, and correct
-       calculation of `min'.
-
-2007-02-04  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * wid-edit.el (widget-default-create): Insert new text at the
-       :from marker _after_ the marker, not before it.
-
-2007-02-04  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-cmds.el (c-indent-line): Don't erase ^L when a line
-       containing it is re-indented.
-
-2007-02-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * net/newsticker.el (newsticker--insert-image): Update docstring,
-       and insert the image directly.
-       (newsticker--buffer-redraw): Update docstring.
-
-       * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
-       Rename from define-global-minor-mode.
-
-       * progmodes/cwarn.el (global-cwarn-mode):
-       * emacs-lisp/autoload.el (make-autoload):
-       * hi-lock.el (global-hi-lock-mode):
-       * font-core.el (global-font-lock-mode): All callers changed.
-
-2007-02-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * textmodes/texnfo-upd.el (texinfo-menu-copy-old-description):
-       Don't copy @ignore lines into menu descriptions.
-       (texinfo-multi-file-update): Goto the @node line before attempting
-       to pluck the node name.
-       (texinfo-multiple-files-update): Reverse the optional arguments'
-       order, as per the doc string and the `interactive' form.
-
-2007-02-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-mode.el: Use autoload to avoid overriding disabled setting
-       applied in .emacs.
-
-2007-02-03  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-engine.el (c-in-knr-argdecl): Slight correction
-       for, e.g. "void (*hdone)();" in a k&r list.  (No WS between
-       adjacent paren groups).
-
-2007-02-02  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * progmodes/ebnf2ps.el: Doc fixes.
-       (ebnf-eps-buffer, ebnf-eps-region, ebnf-syntax-alist): Doc fixes.
-
-2007-02-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * dired-x.el (dired-do-relsymlink): Add reference to
-       dired-do-symlink.  Add an autoload cookie.
-
-       * dired-aux.el (dired-do-symlink): Add reference to
-       dired-do-relsymlink.
-
-2007-02-02  Doug Maxey  <dwm@enoyolf.org>  (tiny change)
-
-       * mouse.el <left-fringe mouse-2, right-fringe mouse-3>:
-       <left-fringe mouse-3>: New bindings.
-
-2007-02-02  Ulf Jasper  <ulf.jasper@web.de>
-
-       * newsticker.el (newsticker-version): Changed to "1.10".
-       (newsticker--set-customvar): Doc string.
-       (newsticker-new-item-face): Doc string.
-       (newsticker-mode): Initialize `invisibility-spec' with t.
-       (newsticker-mode-map): Added
-       `newsticker-mark-all-items-at-point-as-read'.
-       (newsticker-menu): Added narrow-to-item and narrow-to-feed.
-       (newsticker-w3m-show-inline-images): Do not call
-       `w3m-remove-image'.
-       (newsticker--buffer-after-w3m-insert-image): New advice for
-       w3m-insert-image to cache images.
-       (newsticker-next-item-same-feed): New.
-       (newsticker-mark-all-items-at-point-as-read-and-redraw): New.
-       (newsticker-mark-all-items-of-feed-as-read): New.
-       (newsticker-mark-all-items-at-point-as-read): Use new functions.
-       (newsticker-mark-item-at-point-as-read): Doc string.
-       (newsticker-mark-item-at-point-as-read): Use new functions.
-       (newsticker--do-mark-item-at-point-as-read): New, extracted from
-       `newsticker-mark-item-at-point-as-read'.
-       (newsticker-hide-entry): Use (t) instead of t for invisibility.
-       (newsticker--sentinel): Yet another xml-parser workaround.
-       (newsticker--decode-iso8601-date): Bugfix for datestrings without
-       days.
-       (newsticker--buffer-do-insert-text): Fix.
-       (newsticker--buffer-insert-enclosure): Fix. length might be missing.
-       (newsticker--buffer-make-item-completely-visible):
-       `switch-to-buffer' not necessary.
-
-2007-02-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * progmodes/ebnf2ps.el (ebnf-eps-buffer, ebnf-eps-region)
-       (ebnf-syntax-directory, ebnf-syntax-file, ebnf-syntax-region)
-       (ebnf-style-database, ebnf-apply-style, ebnf-reset-style)
-       (ebnf-push-style, ebnf-pop-style, ebnf-eps-production-list)
-       (ebnf-directory, ebnf-file, ebnf-syntax-alist): Doc fixes.
-
-2007-02-02  Kenichi Handa  <handa@m17n.org>
-
-       * international/quail.el (quail-show-key): Fix an error message.
-
-2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faces.el (set-face-underline-p, modify-face): Rename arg
-       UNDERLINE-P to UNDERLINE (it is not a flag).
-
-2007-02-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-speedbar-update): Avoid duplication
-       when adding gdb-speedbar-update to gdb-input-queue.
-
-2007-02-01  Kenichi Handa  <handa@m17n.org>
-
-       * international/quail.el (quail-show-key): Signal an error if the
-       current input method is not using Quail.
-
-2007-02-01  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlwave.el (idlwave-xml-create-sysvar-alist):
-       Trim leading whitespace in sysvar names.
-
-2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faces.el (internal-find-face, internal-get-face): Doc fixes.
-
-2007-01-31  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ido.el (ido-set-common-completion): Use `let', not `let*'.
-
-2007-01-31  Romain Francoise  <romain@orebokech.com>
-
-       * comint.el: Delete extra copy of `comint-copy-old-input' added in
-       previous change to this file.
-
-2007-01-31  Jason Rumney  <jasonr@gnu.org>
-
-       * files.el (magic-mode-alist): Use image-mode-maybe rather than
-       image-mode.
-
-       * image-mode.el (image-mode-maybe): Prevent magic-mode-alist from
-       interfering with attempt to set major mode from modified
-       auto-mode-alist.
-
-2007-01-31  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faces.el (color-values): Doc fix.
-       (face-differs-from-default-p): Don't check :foreground twice.
-
-2007-01-31  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * comint.el (comint-mode): Prevent non-keyword fontification by default.
-
-2007-01-31  Kenichi Handa  <handa@m17n.org>
-
-       * international/quail.el (quail-store-decode-map-key): Store a
-       translated character too.
-       (quail-char-equal-p): New function.
-       (quail-find-key1): Check character equality by quail-char-equal-p.
-       (quail-decode-map-generated): New variable.
-       (quail-find-key): Check quail-decode-map-generated and re-generate
-       a decode map if necessary.
-
-2007-01-30  Richard Stallman  <rms@gnu.org>
-
-       * tutorial.el (tutorial--detailed-help): Make the list of
-       changed keys look nicer.
-
-2007-01-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-delete-1): New function.
-       (gdb-var-delete): Use it.
-       (gdb-var-update-handler-1): Handle value "invalid" for MI field
-       `in_scope'.
-
-2007-01-30  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.el (get-free-disk-space): Return nil for remote directories.
-
-       * net/ange-ftp.el (ange-ftp-ls): In case of wildcards, use "ls"
-       instead of "dir".
-
-2007-01-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * type-break.el (type-break-catch-up-event): New function.
-       (type-break-demo-hanoi, type-break-demo-life)
-       (type-break-demo-boring): Use it.
-
-       * image-mode.el (image-mode): Don't automatically view as image.
-       (image-toggle-display): Add `disabled' property.
-
-2007-01-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * isearchb.el (isearchb-iswitchb):
-       * ps-print.el (ps-build-face-reference):
-       * emacs-lisp/shadow.el (list-load-path-shadows):
-       * eshell/esh-cmd.el (eshell-rewrite-for-command):
-       * international/mule.el (find-auto-coding):
-       * mail/supercite.el (sc-attrib-selection-list):
-       * progmodes/cc-defs.el (c-emacs-features):
-       * progmodes/cc-vars.el (c-offsets-alist):
-       * progmodes/flymake.el
-       (flymake-init-create-temp-source-and-master-buffer-copy):
-       Fix typos in docstrings (some suggested by Chris Moore).
-
-       * progmodes/vhdl-mode.el (vhdl-components-package-name)
-       (vhdl-get-library-unit, vhdl-corresponding-begin)
-       (vhdl-skip-case-alternative, vhdl-backward-skip-label)
-       (vhdl-align-region-2, vhdl-electric-dash, vhdl-case-word)
-       (vhdl-hooked-abbrev, vhdl-hs-forward-sexp-func)
-       (vhdl-font-lock-match-item): Fix typos in docstrings.
-       (vhdl-get-library-unit, vhdl-get-block-state, vhdl-sort-alist)
-       (vhdl-set-offset, vhdl-fix-case-region-1, vhdl-scan-directory-contents)
-       (vhdl-speedbar-insert-project-hierarchy):
-       Improve argument/docstring consistency.
-
-2007-01-29  Kenichi Handa  <handa@m17n.org>
-
-       * international/titdic-cnv.el (py-converter): Fix previous change.
-
-2007-01-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * jka-compr.el (jka-compr-partial-uncompress)
-       (jka-compr-call-process): Rebind default-directory if it is
-       invalid.  Suggested by Chris Moore.
-
-       * comint.el (comint-insert-input): Handle situation where the
-       selected buffer is not the clicked buffer.
-
-2007-01-29  Kenichi Handa  <handa@m17n.org>
-
-       * international/ja-dic-cnv.el (skkdic-convert):
-       Add byte-compile-disable-print-circle:t at the head.
-
-       * international/titdic-cnv.el (tit-process-header):
-       Add byte-compile-disable-print-circle:t at the head.
-       (miscdic-convert): Likewise.
-       (py-converter): Skip the header comments.
-
-       * emacs-lisp/bytecomp.el (byte-compile-disable-print-circle):
-       New variable.
-       (byte-compile-output-file-form): Bing print-circle to nil if
-       byte-compile-output-file-form is not nil.
-       (byte-compile-output-docform): Likewise.
-
-2007-01-28  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-global-keymap, cua--region-keymap):
-       Declare earlier to avoid byte compiler warnings.
-
-2007-01-28  Markus Triska  <markus.triska@gmx.at>
-
-       * speedbar.el (speedbar-make-specialized-keymap): Doc fix.
-
-2007-01-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * play/gamegrid.el (gamegrid-kill-timer): Cancel timer directly.
-       (gamegrid-add-score-with-update-game-score-1): Allow local quits
-       when calling update-game-score program.  Remove unnecessary
-       save-excursion.
-
-       * play/tetris.el (tetris-new-shape): Stop drawing if game is over.
-
-2007-01-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-breakpoint-regexp): Declare earlier to
-       avoid compiler warning.
-       (gdb-var-update-handler-1): Consider that the MI field `in_scope'
-       might have values other than "true" or "false".
-
-2007-01-28  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/fill.el (fill-paragraph-function): Doc fix.
-       (fill-paragraph): Bind fill-paragraph-function to t to avoid recursion.
-
-       * emacs-lisp/pp.el (pp-eval-last-sexp): Don't eval here.
-
-       * image.el (image-type-header-regexps): Make GIF regex more specific.
-
-       * tutorial.el (tutorial--default-keys): Check M-DEL, not `M-backspace'.
-       Don't check `backspace'.
-       (tutorial--find-changed-keys): Look up bindings in a temp buffer
-       in Fundamental mode.
-
-       * startup.el (fancy-splash-text, normal-splash-screen):
-       Mention C-g.
-
-       * simple.el (eval-expression): Don't use eval-last-sexp-print-value
-       when inserting in buffer.
-
-       * vc-arch.el (vc-arch-file-id): Move with-current-buffer
-       inside the if.
-
-2007-01-27  Richard Stallman  <rms@gnu.org>
-
-       * obsolete/awk-mode.el (awk-font-lock-keywords): Add "do".
-
-2007-01-27  Guanpeng Xu  <herberteuler@hotmail.com>
-
-       * add-log.el (add-log-current-defun): Skip the semicolon ``;'' for
-       enum/union/struct/class definition.
-       Revert change to call `forward-sexp' multiple times.
-
-2007-01-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (hack-local-variables-confirm): Don't keep trying to
-       read an event from an empty kbd macro.
-
-2007-01-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * server.el (server-start): Mention LEAVE-DEAD arg in the doc string.
-
-2007-01-27  Ben North  <ben@redfrontdoor.org>
-
-       * outline.el (outline-promote, outline-demote): Doc fix.  Rename
-       the arg CHILDREN -> WHICH.
-
-2007-01-27  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Set
-       default-directory to a sane value when calling start-process.
-
-2007-01-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * ls-lisp.el (ls-lisp-use-localized-time-format): New defcustom.
-       (ls-lisp-format-time-list): Doc fix.  Mention
-       ls-lisp-use-localized-time-format.
-       (ls-lisp-format-time): Use ls-lisp-format-time-list if
-       ls-lisp-use-localized-time-format is non-nil, even if a valid
-       locale is defined.
-
-2007-01-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * jka-compr.el (jka-compr-shell): Doc fix.
-
-       * jka-cmpr-hook.el (jka-compr-compression-info-list): Doc fix.
-
-2007-01-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.ps: Fix background height.
-       (ps-print-version): New version 6.7.2.
-
-2007-01-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (finder-data, custom-deps): Depend on
-       $(lisp)/loaddefs.el.
-
-2007-01-24  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * Makefile.in (custom-deps, finder-data): Add dependency to loaddefs.el.
-
-2007-01-24  Miles Bader  <miles@gnu.org>
-
-       * emacs-lisp/bytecomp.el (byte-compile-output-file-form)
-       (byte-compile-output-docform): Bind `print-circle' to t.
-
-2007-01-24  Kenichi Handa  <handa@m17n.org>
-
-       * international/ja-dic-cnv.el (skkdic-convert): Insert a related
-       file name of the original SKK dictionary file.
-
-2007-01-24  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-initial-position): New variable.
-       (ido-read-internal): Set it if default item is specified.
-       (ido-minibuffer-setup): Position cursor accordingly if set.
-       (ido-edit-input): C-e moves to end of input if not already there.
-       (ido-magic-backward-char): C-b does like M-b if prev char is /.
-       Don't switch to buffer mode if repeating C-b at start of input.
-       (ido-toggle-ignore): C-a only toggles ignore at start or end of
-       input; else it moves to start of input.
-       (ido-kill-buffer-at-head, ido-delete-file-at-head): If cursor is
-       not at end of input, delete rest of input, rather than normal op.
-
-2007-01-23  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-keym.el (viper-insert-basic-map): Delete binding for S-TAB.
-
-       * ediff-util.el (ediff-clone-buffer-for-region-comparison): Change text
-       of message.  Activate mark.
-       (ediff-activate-mark): Set transient-mark-mode to t.
-
-       * ediff.el (ediff-regions-wordwise, ediff-regions-linewise): Doc fix.
-
-2007-01-23  Martin Rudalics  <rudalics@gmx.at>
-
-       * help-fns.el (describe-variable): Don't suppress display of
-       buffer local value when the value is "large".
-
-2007-01-22  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-active): Add XEmacs test from ido-minibuffer-setup.
-       (ido-initiate-auto-merge, ido-exhibit, ido-minibuffer-setup)
-       (ido-tidy): Use ido-active.
-
-2007-01-22  Chris Moore  <christopher.ian.moore@gmail.com>
-
-       * hexl.el (hexl-mode-exit): Add missing quote.
-
-2007-01-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-keyboard-modifier-mask-alist): New constant.
-       (mac-ae-keyboard-modifiers): New function.
-       (mac-handle-toolbar-switch-mode): Use it.
-       (mac-dnd-handle-drag-n-drop-event): Likewise.  Set action to `copy'
-       if keyboard modifiers on drop contain option key.
-       (mac-dnd-drop-data): Add optional argument `action'.
-       (special-event-map): Remove binding for M-drag-n-drop.
-
-2007-01-21  Guanpeng Xu  <herberteuler@hotmail.com>
-
-       * add-log.el (add-log-current-defun): Use CC Mode functions to
-       find the beginning and end of a defun.
-
-2007-01-21  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-create-regexp)
-       (gdb-var-create-handler): Handle value field in GDB output of
-       -var-create.
-       (gdb-max-frames): New variable.
-       (gdb-stack-buffer, gdb-frames-select): Use it.
-       (gdb-info-stack-custom): Help user customize gdb-max-frames,
-       if necessary.
-       (gdb-get-frame-number): Simplify.
-
-2007-01-21  Glenn Morris  <rgm@gnu.org>
-
-       * net/tramp.el (tramp-perl-encode, tramp-perl-decode):
-       Update copyrights.
-
-2007-01-21  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-cmds.el (c-where-wrt-brace-construct): Correct the
-       handling of K&R stuff.
-
-2007-01-21  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-files): Fix customization type.
-
-2007-01-21  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el: Handle frame parameters (background and/or foreground
-       colors) changing dynamically.  Reported by Leo <sdl.web@gmail.com>.
-       (ps-print-version): New version 6.7.1.
-       (ps-x-frame-property, ps-e-frame-parameter): New aliases.
-       (ps-frame-parameter): New fun.
-       (ps-default-fg, ps-default-bg): New default value ('frame-parameter).
-       Fix doc and customization.
-       (ps-begin-job): Get frame parameters (background and/or foreground
-       colors).
-       (ps-do-despool): Ensure ps-printer-name has a valid value.
-
-2007-01-21  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-debug-log): Rename from gdb-debug-ring.
-       (gdb-debug-log-max): Rename from gdb-debug-ring-max.
-       (gud-gdba-marker-filter): Make a value of nil for gdb-debug-ring-max
-       mean unlimited.
-
-2007-01-20  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-engine.el (c-in-knr-argdecl): Reformulate to do
-       much more rigorous analysis of putative K&R regions.
-
-2007-01-20  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-defs.el (c-go-list-forward, c-go-list-backward):
-       New functions.
-
-2007-01-20  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-align.el, progmodes/cc-cmds.el,
-       * progmodes/cc-defs.el, progmodes/cc-engine.el,
-       * progmodes/cc-langs.el, progmodes/cc-styles.el,
-       * progmodes/cc-vars.el: Add my name.
-
-2007-01-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (find-alternate-file): Revert query message to Emacs 21
-       version.
-
-2007-01-20  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
-
-       * progmodes/cperl-mode.el (cperl-electric-keywords): Document in
-       the doc string how to use personal abbrevs without electric
-       keywords.
-
-2007-01-20  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
-
-       * lisp/emacs-lisp/lisp-mode.el (last-sexp-toggle-display):
-       Fixed cursor position when toggle abbreviated display.
-
-2007-01-20  Nick Roberts  <nickrob@snap.net.nz>
-
-       * t-mouse.el: Update copyright following assignment by
-       Alessandro Rubini.
-
-2007-01-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * type-break.el (type-break-demo-hanoi, type-break-demo-life)
-       (type-break-demo-boring): Call read-event instead of read-char.
-
-2007-01-19  Daniel Pfeiffer  <occitan@esperanto.org>  (tiny change)
-
-       * progmodes/compile.el: Add handling for makepplog.
-
-2007-01-19  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * textmodes/ispell.el (ispell-change-dictionary): Ensure that
-       aspell dictionaries are initialized when called non-interactively.
-
-2007-01-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/compile.el (compilation-loop): New arg limit.
-       Handle case where the first error is at point-min.
-       (compilation-next-error): New arg to compilation-loop call.
-
-2007-01-18  Bruno Haible  <bruno@clisp.org>  (tiny change)
-
-       * info.el (Info-default-dirs): Change default info dir to
-       share/info.
-
-       * paths.el (Info-default-directory-list): Ditto.
-
-2007-01-18  Chris Moore  <christopher.ian.moore@gmail.com>
-
-       * hexl.el (hexl-before-revert-hook): New function.
-       (hexl-mode): Use it.
-       (hexl-after-revert-hook): Just call hexl-mode.
-       (hexl-mode-exit): Remove before-revert-hook.
-
-2007-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * isearch.el (isearch-no-upper-case-p): Look for [:upper:] as well.
-
-2007-01-16  Martin Rudalics  <rudalics@gmx.at>
-
-       * textmodes/ispell.el (ispell-dictionary-alist-3): Replace "---"
-       by "-" in francais7 otherchars entry.
-       (ispell-dictionary-alist-5): Replace "." by "[.]" for polish
-       otherchars entry.
-
-2007-01-15  Karl Fogel  <kfogel@red-bean.com>
-
-       * bookmark.el (bookmark-buffer-file-name): Abbreviate the bookmark
-       path.  Rewrite function in `cond' style for readability.
-
-       Suggested by: Stephen Eglen <S.J.Eglen{_AT_}damtp.cam.ac.uk>.
-       (The path shortening, that is, not the rearrarangement.)
-
-2007-01-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-ae-quit-application): New function.
-       (mac-apple-event-map): Bind "quit application" Apple event to it.
-
-2007-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-svn.el (vc-svn-parse-status): Trust the filename argument more
-       than the program's output.
-
-2007-01-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * kmacro.el (kmacro-insert-counter, kmacro-set-counter)
-       (kmacro-start-macro-or-insert-counter)
-       (kmacro-step-edit-prefix-commands): Fix typos in docstrings.
-       (kmacro-call-ring-2nd, kmacro-call-ring-2nd-repeat): Doc fixes.
-
-       * longlines.el (longlines-show-hard-newlines):
-       * ruler-mode.el (ruler-mode-ruler):
-       * emulation/keypad.el (keypad-setup):
-       * progmodes/antlr-mode.el (antlr-indent-at-bol-alist):
-       Fix typo in docstring.
-
-2007-01-13  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-cmd-rotate-original-options): Add -outfile option.
-       Remove redirect character ">".
-
-2007-01-13  Juanma Barranquero  <lekktu@gmail.com>
-
-       * replace.el (perform-replace): Remove leftover code.
-
-2007-01-12  Richard Stallman  <rms@gnu.org>
-
-       * replace.el (perform-replace): Don't clear NODENT when computing
-       the replacement string.
-
-2007-01-11  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-handle-file-local-copy):
-       Set `enable-multibyte-characters' to nil.  Reported by Chris Moore
-       <christopher.ian.moore@gmail.com>.
-
-2007-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * diff-mode.el (diff-sanity-check-context-hunk-half)
-       (diff-sanity-check-hunk): New functions.
-       (diff-find-source-location): Use'em to check the hunks are well-formed.
-
-       * hexl.el (hexlify-buffer, dehexlify-buffer): Don't complain and don't
-       activate undo when undo is not active.
-       Reported by Chris Moore <christopher.ian.moore@gmail.com>.
-
-2007-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * ffap.el (ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
-       (ffap-newsgroup-p, ffap-alist, ffap-string-at-point-mode-alist)
-       (ffap-url-at-point): Use char-classes rather than "a-z".
-
-2007-01-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ediff-init.el (ediff-autostore-merges):
-       * textmodes/fill.el (fill-region): Doc fix.
-
-2007-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * server.el (server-ensure-safe-dir): UIDs may be floats.
-
-2007-01-10  Richard Stallman  <rms@gnu.org>
-
-       * battery.el (battery-linux-proc-acpi): Use ignore-errors
-       around calls to directory-files.
-
-       * subr.el (momentary-string-display): Use save-excursion.
-
-       * emacs-lisp/pp.el (pp-eval-expression): Once again eval the
-       argument, but read it as `X' does.
-
-2007-01-09  Juri Linkov  <juri@jurta.org>
-
-       * info.el (Info-fontify-node): Don't hide node names of index entries.
-
-       * faces.el (momentary): Change :group to basic-faces where all
-       basic faces belong to.  Add :version.
-
-2007-01-09  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * tutorial.el (tutorial--display-changes): Show M-x sequence if no
-       keybinding is found.
-       (tutorial--find-changed-keys): Never treat null keybinding as a
-       remapping.
-
-2007-01-09  Martin Rudalics  <rudalics@gmx.at>
-
-       * wdired.el (wdired-xcase-word): Skip non-word read-only characters.
-
-2007-01-09  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el
-       (select-safe-coding-system-interactively): Fix message.
-
-2007-01-09  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-process-one-action): Remove `with-timeout'.
-       (tramp-process-actions): Add optional parameter TIMEOUT.
-       (tramp-open-connection-telnet, tramp-open-connection-rsh)
-       (tramp-open-connection-su): Add timeout of 60".
-
-2007-01-09  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/compile.el (compile): Doc fix.
-
-2007-01-09  Markus Triska  <markus.triska@gmx.at>
-
-       * tumme.el (tumme-display-thumb): Doc fix.
-
-2007-01-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * battery.el (battery-search-for-one-match-in-files):
-       * bindings.el (mode-line-minor-mode-help):
-       * x-dnd.el (x-dnd-types-alist):
-       * calendar/icalendar.el (icalendar-import-buffer):
-       * term/mac-win.el (mac-dnd-types-alist): Fix typo in docstring.
-
-       * progmodes/vhdl-mode.el (vhdl-save-caches): Fix typo in error message.
-
-2007-01-07  Chris Moore  <christopher.ian.moore@gmail.com>
-
-       * replace.el (replace-regexp): Fix typo in docstring.
-
-2007-01-07  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-langs.el (c-operators, c-filter-ops):
-       Amend doc-string and comments.
-
-2007-01-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.el (abbreviate-file-name): Doc fix.
-
-2007-01-06  Markus Triska  <triska@gmx.at>
-
-       * subr.el (split-string): Remove spurious ")" from doc string.
-
-2007-01-05  Takaaki Ota  <Takaaki.Ota@am.sony.com>
-
-       * textmodes/table.el (table--warn-incompatibility):
-       Use display-warning instead of momentary-string-display.
-
-2007-01-05  Richard Stallman  <rms@gnu.org>
-
-       * image.el (image-type-header-regexps): Recognize xbm more strictly.
-
-       * simple.el (backward-kill-word): Doc fix.
-
-2007-01-05  Romain Francoise  <romain@orebokech.com>
-
-       * international/mule.el (sgml-html-meta-auto-coding-function):
-       Ensure that the buffer contains a HTML document.
-
-2007-01-05  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * faces.el (momentary): Move here ...
-       * subr.el (momentary): ... from here.
-
-2007-01-05  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-max-children): New customizable variable.
-       (gdb-speedbar-expand-node): Ask user for confirmation before expanding
-       large structures/arrays.
-
-2007-01-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * files.el (find-file-noselect-1, set-visited-file-name):
-       Allow backup-enable-predicate to be nil.
-
-2007-01-04  Andreas Schwab  <schwab@suse.de>
-
-       * progmodes/ebrowse.el (ebrowse-global-prefix-key): Fix typo in
-       last change.
-
-2007-01-03  Richard Stallman  <rms@gnu.org>
-
-       * woman.el (woman-decode-buffer): Clarify error message.
-
-2007-01-03  Alan Mackenzie  <acm@muc.de>
-
-       * progmode/cc-cmds.el (c-mask-paragraph): Fix yesterday's buggy patch.
-
-2007-01-03  Chris Moore  <christopher.ian.moore@gmail.com>
-
-       * tutorial.el (tutorial--describe-nonstandard-key): Fix typo.
-
-2007-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * iswitchb.el (iswitchb-global-map): Use command-remapping if available.
-
-2007-01-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emulation/viper.el (viper-custom-file-name, viper-mode):
-       Fix typos in docstrings.
-
-       * subr.el (momentary-string-display): After moving point, set POS
-       variable to it to avoid later errors once the buffer is modified.
-       Doc fix.
-
-2007-01-02  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-cmds.el (c-mask-paragraph): In a block comment,
-       check that the "*/" is present before trying to manipulate it.
-
-2007-01-02  Richard Stallman  <rms@gnu.org>
-
-       * wid-edit.el (widget-choose): Avoid ugly error for function keys.
-
-       * progmodes/cfengine.el (cfengine-font-lock-syntactic-keywords):
-       Fix format of value.
-
-       * cus-edit.el (customize-unsaved): Rename from customize-customized.
-       Change messages accordingly.
-       (customize-customized): Now alias.
-
-2007-01-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * files.el (version-control): Doc fix.
-
-2007-01-01  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax, case 5N):
-       Check the format of c-state-cache is valid for an optimisation before
-       using it.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): New case 5Q "we
-       are at a statement within a macro".  Other changes so that only
-       the first continuation line in a macro gets the symbol
-       `cpp-define-intro', the others getting `statement', or whatever.
-
-       * progmodes/cc-cmds.el (c-context-line-break): When invoked within
-       a string, preserve whitespace.  Add a backslash only when also in
-       a macro.
-
-       * progmodes/cc-defs.el: Correct typos.
-
-       * progmodes/cc-cmds.el (c-context-line-break): Don't indent the
-       new line after an escaped EOL in a string.
-
-       * progmodes/cc-engine.el (c-forward-label): Recognise "foo:" as a
-       label when it directly follows "else", "do", ....
-
-       * progmodes/cc-engine.el (c-backward-<>-arglist): Tolerate empty
-       angle brackets (as seen in "explicit specialisations" of C++
-       templates).
-
-       * progmodes/cc-vars.el (c-indentation-style): Mention c-file-style
-       in the doc-string.
-
-       * progmodes/cc-cmds.el (c-mask-paragraph): Fix for C comments,
-       when the comment ender looks like "=========*/" and is alone on
-       its line.
-
-       * progmodes/cc-langs.el, progmodes/cc-engine.el: Correct the
-       spelling of c-opt-op-identiTier-prefix, t -> f.  Leave an alias
-       for the old name.
-
-       * progmodes/cc-mode.el: Bind C-M-a and C-M-e to
-       c-\(beginning\|end\)-of-defun by default.
-
-       * progmodes/cc-align.el (c-lineup-gnu-DEFUN-intro-cont):
-       New line-up function, for the DEFUN macro in the Emacs C sources.
-       Only used in "gnu" style.
-
-       * progmodes/cc-styles.el (c-style-alist): Use this new function in
-       the "gnu" style.
-
-       * progmodes/cc-cmds.el (c-electric-slash): Extend the handling of
-       clean-up comment-close-slash also to work when there's a comment
-       terminator on the line.
-       (c-beginning-of-defun, c-end-of-defun): Refactor and optimise
-       these for large arg - only take account of top level {..}, except
-       for initial and final adjustments.  M-- C-M-[ae] now go to the
-       right defuns when the starting point is between defuns.  They use
-       the four new functions:
-       (c-in-function-trailer-p, c-where-wrt-brace-construct)
-       (c-backward-to-nth-BOF-{, c-forward-to-nth-EOF-}): New functions to
-       support c-\(beginning\|end\)-of-defun.
-
-       * progmodes/cc-engine.el (c-forward-label): Analyze ":"
-       expressions more rigorously, to exclude bit-field specifiers from
-       being classed as labels.
-       (c-forward-label): When analyzing a ":" within a macro, be careful
-       about using c-forward-syntactic-ws at the macro beginning.
-       (c-beginning-of-decl-1): Whilst searching for "=" as evidence of a
-       stmt boundary, check for "operator=", etc.
-
-       * progmodes/cc-mode.el (c-postprocess-file-styles):
-       Bind inhibit-read-only to t, around the call to
-       c-remove-any-local-eval-or-mode-variables, so that it works on a
-       RO file.
-
-       * progmodes/cc-defs.el (c-version): Update the version number to
-       "5.31.4".
-
-2007-01-01  Richard Stallman  <rms@gnu.org>
-
-       * isearch.el (isearch-done): Use FOUND-POINT or FOUND-START
-       only if we restored isearch-window-configuration.
-
-2006-12-31  Romain Francoise  <romain@orebokech.com>
-
-       * net/tramp.el (tramp-default-method): Don't use `symbol-function'.
-
-2006-12-31  Kim F. Storm  <storm@cua.dk>
-
-       * files.el (auto-mode-case-fold): New defcustom.
-       (set-auto-mode): If non-nil, perform second case-sensitive pass
-       through auto-mode-alist if first pass failed.
-
-2006-12-30  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/easy-mmode.el (define-global-minor-mode): Doc fix.
-
-2006-12-30  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-encrypt-string): Handle symmetric-key
-       passphrase caching but leave keypair caching to pgg.
-
-2006-12-30  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.55.
-
-       * net/tramp.el (tramp-completion-mode): Use `wholenump' instead of
-       `integerp'.  `char-equal' could fail else in case of negative
-       numbers.  Reported by Toby Speight <T.M.Speight.90@cantab.net>.
-       (top): Check for `font-lock-add-keywords' before calling; it
-       doesn't exist under XEmacs.
-       (tramp-yn-prompt-regexp): Fix regexp.  Add question from plink.
-       (tramp-completion-mode): Remove clause (not
-       tramp-unified-filenames), because the function is called in other
-       context too, where this check results in wrong results in the
-       XEmacs case on Windows.
-       (tramp-touch): UTC handling is not possible for XEmacs.
-
-2006-12-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * scroll-bar.el (previous-scroll-bar-mode): New variable
-       (set-scroll-bar-mode): Set previous-scroll-bar-mode.
-       (scroll-bar-mode): Use previous-scroll-bar-mode if set.
-
-       * term/x-win.el: Set scroll bar mode to right if set by X resources.
-
-2006-12-30  Richard Stallman  <rms@gnu.org>
-
-       * files.el (make-backup-file-name-1): Precompute abs name
-       but don't lose the relative name.
-
-       * international/mule-cmds.el (select-safe-coding-system-interactively):
-       Fix message.
-
-2006-12-30  Kevin Rodgers  <kevin.d.rodgers@gmail.com>  (tiny change)
-
-       * files.el (backup-buffer): Show entire backup file name in msg.
-
-2006-12-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image.el (image-type-header-regexps, image-type-from-data)
-       (image-type-from-buffer, image-type-from-file-header):
-       Revert changes from 2006-12-26.
-       (image-type-auto-detectable): New variable.
-       (image-type-auto-detected-p): New function.
-
-       * files.el (magic-mode-alist): Detect image files with
-       `image-type-auto-detected-p' instead of `image-type-from-buffer'.
-
-2006-12-29  Nick Roberts  <nickrob@snap.net.nz>
-
-       * dired.el (dired-sort-other): Move test for dired-mode...
-       (dired-sort-set-modeline): ...to here.
-
-2006-12-29  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * textmodes/fill.el (fill-comment-paragraph): Document 2006-12-24
-       change.  Suggested by Stefan Monnier.
-
-2006-12-29  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/bindat.el (bindat--unpack-group, bindat--length-group)
-       (bindat--pack-group): Let-bind COUNT during repeat block evaluation.
-
-2006-12-27  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/authors.el (authors-aliases): Anchor FSF alias regexp,
-       so it doesn't accidentally match an fsf.org mail address.
-       (authors-renamed-files-alist): Add tcover-*.el.
-
-2006-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-arch.el (vc-arch-find-version): New function.
-
-       * vc-hooks.el (vc-version-backup-file-name): Revision names may be
-       composed of arbitrary characters (even /) in some systems.
-
-2006-12-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * international/mule-cmds.el (select-safe-coding-system-interactively):
-       Improve the message in the *Warning* buffer.
-
-2006-12-27  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-set-matches-1): Fix last change.  If default item is
-       current buffer, it is ok to be first.
-
-2006-12-27  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (select-safe-coding-system-interactively):
-       Use face `link' for problematic chars.
-
-2006-12-27  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (select-safe-coding-system-interactively):
-       Improve the message in *Warning* buffer.
-
-2006-12-27  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-set-matches-1): Never put current buffer first if
-       there are other matches.
-
-2006-12-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gud-watch): Allow duplicate names for watch
-       expressions.
-       (gdb-var-delete): Handle duplicate names.  Print message for non
-       root expressions.
-       (gdb-partial-output-name): Start buffer name with a space.
-       (gdb-info-breakpoints-custom, gdb-reset): Handle space in above
-       buffer name.
-
-2006-12-26  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * mail/footnote.el (Footnote-insert-footnote): Fix the search of the
-       last footnote when `footnote-spaced-footnotes' is nil.
-
-2006-12-26  Richard Stallman  <rms@gnu.org>
-
-       * cus-edit.el (custom-browse-sort-alphabetically)
-       (custom-buffer-sort-alphabetically)
-       (custom-menu-sort-alphabetically): Doc fixes.  Add autoloads.
-
-       * image.el (image-type-header-regexps): Change element format
-       to include third item NOT-ALWAYS.
-       (image-type-from-data): Handle new format.
-       (image-type-from-buffer): Handle new format.  New arg INCLUDE-MAYBES.
-       (image-type-from-file-header): Pass t for INCLUDE-MAYBES.
-
-2006-12-26  Guanpeng Xu  <herberteuler@hotmail.com>
-
-       * add-log.el (add-log-current-defun): Call `forward-sexp'
-       multiple times to pick a member function name defined as
-       part of nested classes/namespaces.
-
-2006-12-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * emacs-lisp/easymenu.el (easy-menu-change): New arg MAP to indicate
-       which keymap should be used to change menu.  It does not affect any
-       existent code.
-
-2006-12-26  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/fill.el (fill-paragraph): Check for a minibuffer
-       rather than for being in a minibuffer window.
-
-2006-12-25  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-def.el (pgg-passphrase-coding-system): Default to nil instead of
-       locale-coding-system.
-       * pgg-gpg.el (pgg-gpg-process-region): Encode passphrase with eol-type
-       LF.
-
-2006-12-25  Michael R. Mauger  <mmaug@yahoo.com>
-
-       * progmodes/sql.el (sql-mode-abbrev-table): Correct initialization.
-       (sql-mode-syntax-table): Disable double quoted strings.
-       (sql-mode-font-lock-object-name): Add TYPE and TYPE BODY.
-
-2006-12-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * startup.el (fancy-splash-last-input-event): New variable.
-       (fancy-splash-special-event-action): New function.
-       (fancy-splash-screens): Temporarily bind special events to it.
-       Execute command for saved special event before exiting from
-       recursive editing.
-
-       * term/mac-win.el (mac-keyboard-translate-char, mac-unread-string):
-       New functions.
-       (mac-ts-update-active-input-area, mac-ts-unicode-for-key-event):
-       Use mac-unread-string.
-
-2006-12-24  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * textmodes/fill.el (fill-comment-paragraph): Prevent the use of
-       an optimized comment regexp if `comment-start-skip' uses a ^.
-       * bs.el (bs--up): Remove interactive spec.
-
-2006-12-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * woman.el (woman-decode-buffer): Signal error for alien macro sets.
-       Suggested by James Cloos.
-
-2006-12-24  Kevin Ryde  <user42@zip.com.au>
-
-       * calendar/cal-dst.el (calendar-dst-starts): Default to second Sunday
-       in March.
-       (calendar-dst-ends): Default to first Sunday in November.
-
-2006-12-24  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-encrypt-string): Inhibit use of agent within
-       body of let form where encryption happens.  Acknowledge non-use of
-       gpg-agent in docstring.
-       (allout-toggle-subtree-encryption): Acknowledge non-use of
-       gpg-agent in docstring.
-
-2006-12-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (custom-add-frequent-value): Alias for custom-add-option.
-
-2006-12-23  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * ediff-diff.el (ediff-diff-options): Clarify docstring.
-       (ediff-setup-diff-regions): Disallow -u in ediff-diff-options.
-
-       * viper-cmd.el (viper-post-command-sentinel): Protect against errors
-       in hooks.
-       (viper-add-newline-at-eob-if-necessary): Add newline only if we
-       actually modify buffer; ignore errors if occur.
-
-2006-12-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * calendar/calendar.el (calendar-mode-map): Switch < and >.
-       (calendar-mode-line-format): Use mouse-1 bindings, and tweak
-       formatting.
-
-2006-12-23  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (delete-horizontal-space): Doc fix.
-
-2006-12-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (bootstrap-clean): Run bootstrap-clean-$(SHELLTYPE)
-       explicitly in a recursive Make, not implicitly through prerequisites,
-       since the latter is wrong under parallel builds.
-
-2006-12-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32-fns.el (convert-standard-filename): Wrap in save-match-data.
-
-2006-12-22  Kevin Rodgers  <kevin.d.rodgers@gmail.com>  (tiny change)
-
-       * progmodes/sh-script.el (sh-make-vars-local): Fix a typo in
-       message string.
-
-2006-12-22  Ben North  <ben@redfrontdoor.org>  (tiny change)
-
-       * outline.el (outline-next-visible-heading): Fix the case with a
-       header at end-of-file with no final newline.
-
-2006-12-22  Robert Thorpe  <rthorpe@realworldtech.com>  (tiny change)
-
-       * indent.el (tab-always-indent): Doc fix.
-
-2006-12-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * info.el (Info-fontify-maximum-menu-size): Bump to 1000000.
-       (Info-fontify-node): Do fontify indices.
-
-       * tutorial.el (tutorial--detailed-help): Remove unnecessary link
-       to the Emacs Lisp reference manual.
-       (tutorial--tab-map): Remove.  All callers changed.
-       (tutorial--find-changed-keys): New elt QUIET, used to...
-       (tutorial--display-changes): ...ensure that warning messages are
-       only issued once per changed key.
-       (tutorial--remove-remarks): Delete unused code-path.
-       (lang-strings): Remove extraneous formatting.
-       (tutorial--save-tutorial): Prompt before saving tutorial state.
-
-2006-12-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * tutorial.el: Remove `cl' requirement.  Clean up whitespace.
-       Replace '?\ ' by '?\s' throughout.
-       (tutorial-warning-face): Inherit font-lock-warning-face.  Move to
-       `help' custom group.
-       (tutorial--key-description): New function.
-       (tutorial--display-changes): Remove redundant arg.  Scan for all
-       key sequences to avoid false matches.  Cleanup.
-       (tutorial--saved-dir): Save to a subdirectory in .emacs.d to
-       reduce homedir pollution.
-       (help-with-tutorial): Call tutorial--display-changes with no arg.
-
-2006-12-21  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-mode-map): Bind org-complete also to M-\t.
-
-2006-12-20  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-default-method): We still need to check for
-       `executable-find', because it is not bound under Emacs 20.
-       (tramp-handle-file-name-completion)
-       (tramp-completion-handle-file-name-completion): Handle optional
-       parameter PREDICATE.
-       (tramp-find-default-method): Add code for default values.
-
-2006-12-20  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-stopped): After attaching to a process
-       make gud-go send "continue".
-
-2006-12-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image.el (image-type-header-regexps): Be more specific detecting `pbm'
-       and `png' files.  Use non-capturing parenthesis for `tiff' regexp.
-
-2006-12-19  Kim F. Storm  <storm@cua.dk>
-
-       * bindings.el: Bind sigusr1 and sigusr2 in special-event-map
-       instead of global-map.
-
-       * files.el (magic-mode-alist): Allow matching file type by
-       calling a function at bob.  Check for image types by calling
-       image-type-from-buffer.  Suggested by Juanma Barranquero.
-       (set-auto-mode): Do it.
-
-2006-12-19  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-methods): Introduce new method `scpc'.
-       Remove "ControlMaster" option from the other `scp*' methods.
-       (tramp-default-method): Check for ssh-agent before setting to `scp'.
-
-2006-12-18  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-mode): Show context after isearch.
-       (org-show-siblings): New function.
-       (org-show-context): Use `org-show-siblings'.
-
-2006-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/syntax.el (syntax-ppss-flush-cache, syntax-ppss):
-       Use syntax-ppss-toplevel-pos.
-
-2006-12-18  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-current-line): Make sure that lines are
-       counted from beginning of buffer.
-       (org-table-copy-region, org-table-paste-rectangle): Make sure that
-       lines are counted from beginning of buffer.
-
-2006-12-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * info.el (Info-build-node-completions): Signal error if tag-table
-       marker is not found.
-
-       * pgg-gpg.el (pgg-gpg-use-agent): Default to t.
-
-2006-12-17  Alan Mackenzie  <acm@muc.de>
-
-       * emacs-lisp/lisp.el (beginning-of-defun-raw): Optimise (for
-       speed) the case when open-paren-in-column-0-is-defun-start is nil.
-       Based on code by Martin Rudalics.
-
-       * progmodes/cc-mode.el (c-basic-common-init): Don't set
-       open-paren-in-column-0-is-defun-start to nil any more.
-
-2006-12-17  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (delete-horizontal-space): Use prefix arg.
-
-       * help-fns.el (describe-variable): Improve blank separator lines.
-
-       * files.el (magic-mode-alist): Mark as risky.
-
-       * files.el (make-backup-file-name-1):
-       Expand backup-directory explicitly.
-
-2006-12-17  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-default-method): Before setting to "pscp",
-       check whether package password.el is loaded, or Pageant is running.
-
-2006-12-17  Ulf Jasper  <ulf.jasper@web.de>
-
-       * calendar/icalendar.el (icalendar-version): Increase to "0.14".
-       (icalendar--rris): First try Emacs, then XEmacs.
-       (icalendar--convert-ical-to-diary): Doc fix.
-       Insert newline at end of target file.
-
-2006-12-17  Kim F. Storm  <storm@cua.dk>
-
-       * outline.el (outline-isearch-open-invisible-function): New defvar.
-       (outline-flag-region): Use it if non-nil for isearch-open-invisible
-       overlay property instead of outline-isearch-open-invisible.
-
-2006-12-16  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-completion-help): Build ido-cur-list and ido-matches
-       if ido-directory-too-big is set on entry.
-       (ido-toggle-ignore, ido-completion-help): Print message while
-       reading big directory.
-
-2006-12-15  Richard Stallman  <rms@gnu.org>
-
-       * shell.el (shell): Doc fix.
-
-2006-12-15  Kevin Gallagher  <Kevin.Gallagher@boeing.com>
-
-       * emulation/edt.el (edt-xserver):
-       * emulation/edt-mapper.el (edt-xserver): Replace `/' with a `-',
-       to fix a problem on Cygwin.
-
-       * emulation/edt.el
-       * emulation/edt-mapper.el
-       * emulation/edt-lk201.el
-       * emulation/edt-pc.el
-       * emulation/edt-vt100.el: Update maintainer's email address.
-
-2006-12-15  Simon Marshall  <simon@gnu.org>
-
-       * progmodes/cc-fonts.el (c-font-lock-declarations): Fix previous change.
-
-2006-12-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-atsu-font-table): Remove defvar.
-       (mac-handle-font-selection): Use mac-atsu-font-face-attributes
-       instead of mac-atsu-font-table.
-       (fontset-default): Specify argument MAXIMUM in x-list-fonts calls.
-
-2006-12-14  Stephen Leake  <stephen_leake@member.fsf.org>
-
-       * align.el (align-match-tex-pattern): Fix a rare bug which
-       hanged Emacs.
-
-2006-12-14  Richard Stallman  <rms@gnu.org>
-
-       * startup.el (use-fancy-splash-screens-p): Use frame-height
-       instead of window-height.  Pass frame to image-size.
-
-2006-12-13  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (set-locale-environment):
-       Set default-sendmail-coding-system too.
-
-2006-12-12  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlw-help.el: Fix copyright notice.
-
-2006-12-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/syntax.el (syntax-ppss-toplevel-pos): New fun.
-
-2006-12-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * subr.el (unread-command-char): Reformat obsolescence info.
-
-2006-12-11  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/cl-macs.el (defstruct): Suppress warnings
-       about calls to cl-struct-setf-expander.
-
-2006-12-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ediff-merg.el (ediff-show-clashes-only): Doc fix.
-       (ediff-combination-pattern): Fix typo in docstring.
-
-       * textmodes/refer.el (refer-find-entry): Doc fix.
-       (refer-bib-files-regexp, refer-bib-directory, refer-bib-files)
-       (refer-cache-bib-files, refer-find-next-entry, refer-yank-key):
-       Fix tipos in docstrings.
-
-       * progmodes/idlwave.el (idlwave-library-path): Fix typos in docstring.
-
-2006-12-10  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-init-completion-maps): Remap backward-kill-word
-       instead of binding M-backspace.
-
-2006-12-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * replace.el (replace-match-data, replace-match-maybe-edit):
-       * calc/calc-aent.el (calc-eval-error):
-       * emulation/vi.el (vi-char-argument):
-       * progmodes/cc-langs.el (c-at-vsemi-p-fn)
-       (c-vsemi-status-unknown-p-fn): Doc fixes.
-
-2006-12-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * menu-bar.el (menu-bar-showhide-menu, menu-bar-tools-menu)
-       (menu-bar-help-menu): Tooltip fixes.  Suggested by Francis Wright.
-
-2006-12-10  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/ld-script.el (ld-script-keywords): Fix a typo.
-
-2006-12-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mouse-sel.el (mouse-sel-mode): Register mouse-2 as a click type.
-
-       * man.el (Man-xref-button-action): New function.  If the
-       `Man-target-string' button property is a function, assume it
-       accepts a position argument.
-       (Man-abstract-xref-man-page): Use it.
-       (Man-default-man-entry): New optional arg POS.
-
-       * wdired.el (wdired-preprocess-symlinks): Make the spaces after
-       symlink arrows read-only and non-rear-sticky.
-
-2006-12-09  Martin Rudalics  <rudalics@gmx.at>
-
-       * wdired.el (wdired-change-to-wdired-mode, wdired-finish-edit)
-       (wdired-search-and-rename): Simplify code.
-       (wdired-preprocess-files, wdired-preprocess-perms): Make
-       read-only property of preceding character rear-nonsticky to
-       avoid that it can be modified.  Put old-name and old-link
-       properties on character preceding name and replace
-       put-text-property by add-text-properties.
-       (wdired-get-filename, wdired-get-previous-link): Get old-name
-       and old-link properties from character preceding name and
-       simplify code.
-       (wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit)
-       (wdired-perms-to-number): Make local-map property
-       rear-nonsticky to avoid that text following permissions may be
-       modified.  Use add-text-properties instead of put-text-property
-       when changing a permission bit.
-       (wdired-change-to-dired-mode): Remove stickiness properties.
-
-2006-12-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * international/mule-cmds.el (register-input-method): Doc fix.
-
-2006-12-09  Masayuki Ataka  <masayuki.ataka@gmail.com>  (tiny change)
-
-       * cmuscheme.el (scheme-start-file): Use `let*', not `let'.
-
-2006-12-09  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * textmodes/flyspell.el (flyspell-hack-local-variables-hook): New.
-       Force buffer local defs evaluation on local variables loading.
-       (flyspell-mode-on, flyspell-mode-off): Use it in
-       `hack-local-variables-hook'.
-
-2006-12-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs-lisp/find-func.el (find-variable): Doc fix.
-
-       * help-fns.el (variable-at-point): Doc fix.
-
-       * w32-fns.el (w32-append-code-lines): New function.
-
-2006-12-09  Romain Francoise  <romain@orebokech.com>
-
-       * comint.el (comint-insert-input): Delete obsolete comment.
-
-2006-12-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * net/browse-url.el (browse-url): Set DISPLAY to the one of the
-       current frame, in case we're connected to several displays.
-
-2006-12-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * frame.el (other-frame): Doc fix.
-       (set-frame-parameter): Fix typo in docstring.
-
-2006-12-07  Kim F. Storm  <storm@cua.dk>
-
-       * info.el (Info-index): Strip leading colon from topic.
-
-2006-12-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-buttons): Deal with references
-       to pointers.
-
-2006-12-05  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlwave.el (idlwave-xml-create-class-method-lists):
-       Trim out spurious class inheritance "None" entries.
-
-2006-12-05  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-paste-pop-rotate-temporarily): Doc fix.
-       (cua-paste-pop): Rework last change for
-       cua-paste-pop-rotate-temporarily, so first M-y and C-y works alike,
-       pasting the head of the kill-ring, and prefix arg C-u M-y inserts the
-       text inserted by the last M-y command.
-
-2006-12-05  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * cmuscheme.el (run-scheme, scheme-start-file): Search the start
-       file in ~/.emacs.d as `init_SCHEMENAME.scm' instead.
-
-       * shell.el (shell): Search the start file in ~/.emacs.d as
-       `init_SHELLNAME.sh' instead.
-
-2006-12-05  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/cperl-mode.el (cperl-mode)
-       * progmodes/f90.el (f90-mode-abbrev-table)
-       * progmodes/fortran.el (fortran-mode-abbrev-table)
-       * progmodes/octave-mod.el (octave-abbrev-table)
-       * progmodes/sql.el (sql-mode-abbrev-table): Define abbrevs even
-       if abbrev-table is non-nil (saved user abbrevs may have been restored).
-
-       * progmodes/vhdl-mode.el (vhdl-mode-abbrev-table-init): Do not
-       clear abbrev table, else saved abbrevs will not be restored.
-
-2006-12-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * facemenu.el (facemenu-unlisted-faces): Put obsolescence info in
-       the call to `make-obsolete-variable', not in the docstring.
-
-2006-12-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * facemenu.el (facemenu-unlisted-faces): Define as obsolete variable.
-
-2006-12-04  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * progmodes/ebnf-abn.el:
-       * progmodes/ebnf-bnf.el:
-       * progmodes/ebnf-dtd.el:
-       * progmodes/ebnf-ebx.el:
-       * progmodes/ebnf-iso.el:
-       * progmodes/ebnf-otz.el:
-       * progmodes/ebnf-yac.el:
-       * progmodes/ebnf2ps.el:
-       * delim-col.el:
-       * printing.el:
-       * ps-bdf.el:
-       * ps-mule.el:
-       * ps-print.el: Remove 'Time-stamp' comment mark.
-
-       * printing.el (pr-menu-bind): Replace 'easy-menu-change' by
-       'easy-menu-add-item' when called in Emacs 21 or higher.
-
-2006-12-04  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * progmodes/ada-xref.el (ada-check-current): Doc fix.
-       (ada-make-body-gnatstub): Doc fix.  Remove redundant `progn'.
-
-2006-12-04  Kim F. Storm  <storm@cua.dk>
-
-       * bindings.el (global-map): Bind [signal t] to ignore, to have
-       user signals ignored by default.
-
-2006-12-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * descr-text.el (describe-char-unicode-data): Use a hidden buffer for
-       Unicode data file pointed to by `describe-char-unicodedata-file'.
-
-2006-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/sgml-mode.el (sgml-font-lock-keywords-1): Fix pathological
-       O(n^2) regexp-search by anchoring the search.
-
-2006-12-04  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * whitespace.el (whitespace-cleanup-internal): Use current
-       argument for recursive call.
-
-2006-12-04  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-methods): Add "ControlPath" and
-       "ControlMaster" to scp, scp1 and scp2 methods.  Suggested by
-       Andreas Schwab <schwab@suse.de>.
-       (tramp-do-copy-or-rename-file-out-of-band)
-       (tramp-open-connection-rsh): Compute format spec for ?t.
-       (tramp-process-actions): Trace command parameters.
-
-2006-12-04  Nick Roberts  <nickrob@snap.net.nz>
-
-       * simple.el (toggle-truncate-lines): Clarify doc string.
-
-       * progmodes/gdb-ui.el (gdb-var-delete-children): New function.
-       (gdb-speedbar-expand-node): Use it.
-
-2006-12-04  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/python.el (python-indent): Add safe-local-variable prop.
-
-       * dired.el (dired-revert): Turn off dired-after-readin-hook
-       around call to dired-readin.
-
-       * menu-bar.el (menu-bar-make-toggle): Add "globally"
-       to echo area messages.
-       <indicate-empty-lines, case-fold-search>:
-       Add "globally" to Help string.
-       <case-fold-search>: MESSAGE arg need not say "globally".
-       (menu-bar-edit-menu <paste-from-menu>): Rename from select-and-paste.
-
-2006-12-03  Liam Healy  <lnp@healy.washington.dc.us>  (tiny change)
-
-       * outline.el (outline-end-of-subtree): Don't leave an empty
-       line hidden as we would a real next heading.
-
-2006-12-03  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-ascend): Add an optional argument to preserve
-       original position of point when unsuccessful.  Also, fix a
-       docstring error.
-       (allout-yank-processing): Fix depth shift of multiple-topic so yanks
-       work again, using allout-ascend's new option.
-       (allout-setup-mode-map): Extract from allout-mode to initialize
-       allout-mode-map.  Call it on file load, so the mode docstring
-       substitutions work even if allout mode has not yet been invoked.
-       (allout-mode): Use new allout-setup-mode-map to track any keybinding
-       customizations since the map was last processed.  Also, refine the
-       docstring so it's ship-shape for release.
-       (allout-default-layout, allout-beginning-of-line-cycles)
-       (allout-distinctive-bullets-string, allout-use-mode-specific-leader)
-       (allout-encrypt-unencrypted-on-saves, allout-inhibit-auto-fill)
-       (allout-version, allout-layout, allout-infer-body-reindent)
-       (allout-infer-header-lead-and-primary-bullet, allout-view-change-hook)
-       (allout-init, allout-mode, allout-next-heading, allout-chart-subtree)
-       (allout-previous-heading, allout-goto-prefix-doublechecked)
-       (allout-current-bullet-pos, allout-next-sibling-leap)
-       (allout-pre-command-business, allout-encrypted-type-prefix)
-       (allout-make-topic-prefix, allout-open-topic, allout-rebullet-heading)
-       (allout-rebullet-topic, allout-rebullet-topic-grunt)
-       (allout-flag-region, allout-expose-topic, allout-expose-topic)
-       (allout-old-expose-topic, allout-listify-exposed)
-       (allout-process-exposed, allout-latex-verb-quote)
-       (allout-latex-verbatim-quote-curr-line, allout-adjust-file-variable)
-       (allout-toggle-current-subtree-encryption)
-       (allout-toggle-subtree-encryption, allout-bullet-isearch):
-       Remove extraneous open-paren and close paren string escapes.
-
-2006-12-03  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/ada-xref.el (is-windows, ada-find-in-src-path): Doc fixes.
-       (ada-xref-pos-ring-max, ada-xref-project-files, ada-xref-initialize)
-       (ada-prj-default-comp-cmd, ada-quote-cmd, ada-compile-current):
-       Fix typos in docstrings.
-
-2006-12-03  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/cc-align.el
-       * progmodes/cc-awk.el
-       * progmodes/cc-cmds.el
-       * progmodes/cc-compat.el
-       * progmodes/cc-defs.el
-       * progmodes/cc-engine.el
-       * progmodes/cc-langs.el
-       * progmodes/cc-menus.el
-       * progmodes/cc-mode.el
-       * progmodes/cc-styles.el
-       * progmodes/cc-vars.el
-       * progmodes/vhdl-mode.el: Fix Copyright format.
-
-2006-12-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mouse.el (mouse-drag-track): Suppress automatic hscrolling for
-       initial down event.
-
-2006-12-02  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-toggle-set-mark): Doc fix.
-       (cua-repeat-replace-region): Make M-v more robust.
-       (cua-paste-pop-rotate-temporarily): New defcustom.
-       (cua-paste-pop): Use it.
-       (cua-auto-mark-last-change): New defcustom.
-       (cua-pop-to-last-change): New helper function.
-       (cua-set-mark): Use them.
-
-2006-12-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * menu-bar.el (toggle-case-fold-search): Clarify doc/help string and
-       mini-buffer message.
-
-2006-12-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * descr-text.el (describe-char-unicodedata-file): Fix typo in docstring.
-
-2006-12-01  Ben North  <ben@redfrontdoor.org>
-
-       * paren.el: Fix the highlight overlay extension when the user types a
-       sequence of char very fast just before the open parenthesis.
-
-2006-12-01  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-mule.el: Eliminate Emacs 20 compatibility.
-
-       * ps-print.el: Eliminate Emacs 20 & 21 compatibility.
-       (ps-print-version): New version 6.7.
-       (ps-print-quote): Replace '?\ ' by '?\s'.
-
-2006-11-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * hexl.el (hexl-goto-address, hexl-forward-char, hexl-forward-short)
-       (hexl-forward-word, hexl-previous-line, hexl-beginning-of-1k-page)
-       (hexl-end-of-1k-page): Doc fixes.
-       (hexl-address-region, hexl-ascii-region, hexl-highlight-line-range):
-       Fix typos in docstrings.
-
-2006-11-30  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * ido.el (ido-local-file-exists-p): New.  Tell if a file exists
-       locally, i.e. without using file name handlers.
-       (ido-read-internal): Allow mono letter host names, avoiding the
-       `c:' problem by testing if the file exists locally.
-       (ido-complete, ido-make-file-list, ido-exhibit): Ditto.
-
-2006-11-30  Masatake YAMATO  <jet@gyve.org>
-
-       * hexl.el (hl-line-range-function, hl-line-face): Declare variables
-       to avoid bytecomp warnings.
-       (hexl-mode-old-ruler-function): New variable.
-       (hexl-follow-line): Bind `hexl-mode-old-hl-line-range-function'
-       and `hl-line-range-function' after `require' hl-line.
-       Then bind `hl-line-range-function' and `hl-line-face'.
-       Don't require frame.  Don't use `with-no-warnings'.
-       (hexl-activate-ruler): Store the original value of
-       `ruler-mode-ruler-function' to `hexl-mode-old-ruler-function'.
-       (hexl-mode-exit): Restore the original value of
-       `ruler-mode-ruler-function'.
-
-2006-11-30  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
-
-       * hexl.el (hexl-mode-old-hl-line-range-function): New variable.
-       (hexl-mode-old-hl-line-face): New variable.
-       (hexl-mode, hexl-mode-exit): Fix the highlighting of the current
-       line when exit from the hexl-mode.
-
-2006-11-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/bytecomp.el (byte-optimize, byte-compile-warnings):
-       Doc fixes.
-
-       * international/fontset.el (create-fontset-from-ascii-font)
-       (create-fontset-from-fontset-spec, x-compose-font-name): Doc fixes.
-       (fontset-name-p): Fix typo in docstring.
-
-       * progmodes/cc-cmds.el (c-indent-exp): Fix typo in docstring.
-
-2006-11-30  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-bdf.el: Fix maintainer email.
-
-       * ps-mule.el: Fix maintainer email.  Define functions for Emacs 20
-       compatibility.
-
-       * ps-print.el: Fix maintainer email.  Define functions for Emacs 20 &
-       21 compatibility.
-       (ps-print-quote): Replace '?\s' by '?\ ' to keep compatibility with
-       Emacs 20 & 21.
-
-2006-11-29  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlwave.el (idlwave-auto-fill):
-       Remove paragraph-start let to prevent auto-fill giving up.
-
-2006-11-28  Juanma Barranquero  <lekktu@gmail.com>
-
-       * vt100-led.el (led-state): Fix typo in previous change.
-
-2006-11-27  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
-
-       * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation):
-       Fix interactive spec of the functions getting defined to make them
-       work as documented.
-
-2006-11-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * startup.el (fancy-splash-screens): Hide initial splash buffer.
-
-2006-11-28  Kim F. Storm  <storm@cua.dk>
-
-       * icomplete.el (icomplete-tidy, icomplete-exhibit): Check that
-       icomplete-mode is enabled.
-
-2006-11-28  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (require): Require gnus-sum during compilation
-       to avoid problem with a macro call.
-
-2006-11-28  Glenn Morris  <rgm@gnu.org>
-
-       * emacs-lisp/authors.el (authors-aliases): Add new alias.
-
-       * progmodes/fortran.el (fortran-font-lock-keywords-4): Add `min'.
-       (fortran-window-create-momentarily): Do not need string-to-char.
-
-2006-11-28  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/bytecomp.el (byte-compile-get-constant):
-       Replace incorrect use of assoc-default with a loop.
-
-       * term.el (term-exec-1): Set envvar INSIDE_EMACS.
-
-       * simple.el (next-error-find-buffer): Improve messages.
-
-       * files.el (revert-buffer): Special error message if file
-       is now not readable.
-
-       * facemenu.el (facemenu-add-new-face): Improve doc strings of
-       constructed commands.
-
-       * comint.el (comint-exec-1): Provide Emacs version and `comint'
-       in INSIDE_EMACS.
-
-2006-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * diff-mode.el (diff-mode-map): Add a binding for unified->context.
-
-       * server.el: Remove spurious * in docstrings.
-       (server-process-filter): Exit from recursive editing before processing
-       a new request.
-
-2006-11-27  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/hideshow.el (hs-already-hidden-p): Move to end of
-       line so hidden blocks will be correctly identified.
-
-2006-11-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ledit.el (ledit-save-defun, ledit-mode):
-       * resume.el (resume-emacs-args-buffer):
-       * rot13.el (rot13-display-table, rot13-translate-table, rot13)
-       (rot13-string, rot13-region, rot13-other-window, toggle-rot13-mode):
-       * vmsproc.el (subprocess-input, start-subprocess, subprocess-command)
-       (command-send-input, command-kill-line):
-       * vt100-led.el (led-state, led-on): Fix typos in docstrings.
-
-       * autoarg.el (autoarg-kp-mode): Doc fix.
-
-       * emacs-lock.el (toggle-emacs-lock): Doc fix.  Simplify.
-       (emacs-lock-check-buffer-lock): Doc fix.  Use `when'.
-       (check-emacs-lock): Doc fix.  Simplify.
-
-       * iimage.el (iimage-mode-image-regex-alist): Doc fix.
-       (iimage-mode-buffer): Fix typos in docstring.
-
-       * misc.el (zap-up-to-char): Doc fix.
-
-       * time-stamp.el: Fix comment and obsolescence string for old
-       functions.  Use `dolist' instead of `while'.
-
-       * userlock.el (ask-user-about-lock-help): Fix typos in output message.
-
-       * disp-table.el (standard-display-8bit, standard-display-default):
-       * ebuff-menu.el (electric-buffer-list):
-       * ehelp.el (electric-help-command-loop):
-       * font-core.el (font-lock-mode):
-       * help-macro.el (make-help-screen):
-       * help.el (describe-minor-mode-completion-table-for-indicator)
-       (lookup-minor-mode-from-indicator):
-       * indent.el (tab-to-tab-stop, move-to-tab-stop):
-       * info-look.el (info-lookup-guess-custom-symbol):
-       * locate.el (locate-main-listing-line-p, locate-mode, locate-do-setup):
-       * longlines.el (longlines-wrap-line):
-       * macros.el (insert-kbd-macro):
-       * menu-bar.el (menu-bar-update-buffers):
-       * misc.el (copy-from-above-command):
-       * mouse.el (mouse-popup-menubar, mouse-buffer-menu-alist):
-       * newcomment.el (comment-indent):
-       * novice.el (disabled-command-function):
-       * sort.el (sort-fields-syntax-table):
-       * subr.el (momentary-string-display):
-       * tar-mode.el (tar-header-block-summarize)
-       (tar-clear-modification-flags):
-       * terminal.el (terminal-cease-edit, te-more-break-unwind, te-newline)
-       (te-clear-rest-of-line, te-clear-rest-of-screen, te-clear-screen)
-       (te-insert-lines, te-delete-lines, te-delete, te-insert-spaces)
-       (te-delete-char, te-down-vertically-or-scroll):
-       * time-stamp.el (time-stamp-string-preprocess):
-       * tmm.el (tmm-add-one-shortcut): "?\ " -> "?\s".
-
-2006-11-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * speedbar.el (speedbar-timer-fn): Revert to old behaviour when not
-       in GUD mode.
-
-       * progmodes/gud.el (gud-install-speedbar-variables): Remove bindings:
-       speedbar-expand-line-descendants, speedbar-contract-line-descendants.
-
-2006-11-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * progmodes/cc-vars.el (c-backslash-column): Add . at end of sentence.
-
-2006-11-26  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * progmodes/ada-mode.el (ada-which-compiler): Fix typo in docstring.
-       (ada-compile-goto-error): Adapt to new argument profile of
-       compilation-goto-locus in Emacs 22.  Don't check if the various
-       compile functions are defined; we already do "(require 'compile)".
-
-2006-11-26  Kim F. Storm  <storm@cua.dk>
-
-       * kmacro.el: Fix commentary.
-
-2006-11-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gdb): Explain how to run in text command mode
-       more clearly.  Say in error message that multiple debugging
-       requires restarting GDB.
-
-2006-11-25  Juanma Barranquero  <lekktu@gmail.com>
-
-       * international/fontset.el (create-fontset-from-fontset-spec): Doc fix.
-
-2006-11-25  Pavel Kobiakov  <pk_at_work@yahoo.com>
-
-       * progmodes/flymake.el (flymake-posn-at-point-as-event): New function.
-       (flymake-popup-menu): Use it instead of posn-at-point.
-
-2006-11-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * progmodes/cc-vars.el (c-backslash-column):
-       Mention c-backslash-max-column in documentation for c-backslash-column.
-
-2006-11-24  Lars Hansen  <larsh@soem.dk>
-
-       * net/tramp.el (tramp-default-method): Under Windows, change from
-       plink to pscp.
-       (tramp-copy-failed-regexp, tramp-action-copy-failed): Add.
-       (tramp-actions-copy-out-of-band):
-       Add pair (tramp-copy-failed-regexp tramp-action-copy-failed).
-       (tramp-action-out-of-band): Move "Permission denied" handling to
-       tramp-action-copy-failed.
-       (tramp-do-copy-or-rename-file-out-of-band): unwind-protect killing of
-       process buffer.
-
-2006-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pgg-pgp.el (pgg-pgp-process-region): Change `args' from a list of
-       strings to a single string.  Quote `errors-file-name'.
-       (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region, pgg-pgp-sign-region)
-       (pgg-pgp-verify-region, pgg-pgp-insert-key, pgg-pgp-snarf-keys-region):
-       Adjust calls.  Use `shell-quote-argument'.
-
-       * international/mule.el (load-with-code-conversion)
-       (with-category-table): Use with-current-buffer.
-       (after-insert-file-set-coding): Use restore-buffer-modified-p.
-
-2006-11-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/smtpmail.el (smtpmail-send-it):
-       Copy buffer-file-coding-system from the mail buffer.  Possibly add a
-       MIME header for the message encoding.
-       Bind coding-system-for-write around the call to mail-do-fcc.
-       Use smtpmail-code-conv-from to encode queued mail messages.
-
-2006-11-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * tabify.el (tabify-regexp): Doc fix.
-
-       * net/rcirc.el (rcirc-buffer-maximum-lines):
-       * progmodes/gud.el (jdb): Fix space/tab mixup in docstrings.
-
-       * play/gomoku.el (gomoku-terminate-game, gomoku-human-takes-back)
-       (gomoku-prompt-for-move, gomoku-human-plays, gomoku-offer-a-draw):
-       Fix typos in output messages.
-       (gomoku-vector-length, gomoku-init-board): Fix typos in docstrings.
-
-2006-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * hexl.el (hexl-mode): Don't try to guess the max-address: get it from
-       the horse's mouth.
-       (hexlify-buffer): Don't re-encode an arg that's already encoded.
-
-2006-11-23  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * ediff-diff.el (ediff-exec-process, ediff-same-file-contents):
-       Remove condition-case.
-
-2006-11-23  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/f90.el (f90-comment-indent): Do not move point in
-       default case.
-
-2006-11-21  Romain Francoise  <romain@orebokech.com>
-
-       * emacs-lisp/find-func.el (find-library-name): Don't strip ".el"
-       from library name (reverts change of 2005-10-25).
-
-2006-11-21  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * tutorial.el (tutorial--default-keys): Add newline and
-       delete-backward-char bindings.
-       (tutorial--detailed-help): Save excursion when finding keys.
-       Correct warning string for M-x FOO case.
-       (tutorial--display-changes): Print special keys in tutorial style.
-       Tweak search regexp for changed keys.
-
-2006-11-21  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
-
-       * thingatpt.el (thing-at-point-url-at-point): Don't add a
-       redundant scheme.
-
-2006-11-21  Diane Murray  <disumu@x3y2z1.net>  (tiny change)
-
-       * thingatpt.el (thing-at-point-uri-schemes): Add schemes that
-       are new to the list at IANA.  Also added irc, mms, mmsh.
-
-2006-11-20  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlw-help.el (idlwave-html-help-location):
-       Fail gracefully for missing help packages.
-       (idlwave-help-assistant-open-link): Open full links.
-       (idlwave-help-assistant-help-with-topic): Direct help link.
-
-       * progmodes/idlwave.el (idlwave-mode):
-       Set add-log-current-defun-function.
-       (idlwave-current-routine-fullname): Add, to support add-log.
-       (idlwave-convert-xml-system-routine-info): Simplify XML parsing
-       to reflect improvements to xml-parse-file.
-       (idlwave-mode-menu-def): New binding for help-with-topic.
-
-       * progmodes/idlw-shell.el (idlwave-shell-filter-directory):
-       Handle extra newlines and spaces.
-       (idlwave-shell-mode-map): Add help-with-topic.
-
-2006-11-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * tutorial.el (tutorial-warning-face): New face.
-       (tutorial--detailed-help, tutorial--display-changes): Use it.
-       (tutorial--find-changed-keys): Check ESC-prefix binding specially.
-       Improve search pattern for occurrences of changed keys.
-
-2006-11-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el (x-last-cut-buffer-coding): New variable.
-       (x-select-text): Set it.
-       (x-cut-buffer-or-selection-value): Check also x-last-cut-buffer-coding
-       when checking for newness.
-
-2006-11-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * subr.el (posn-image):
-       * progmodes/ebnf2ps.el (ebnf-stop-on-error): Fix typos in docstrings.
-
-       * emacs-lisp/regexp-opt.el (regexp-opt): Doc fix.
-
-2006-11-19  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * progmodes/glasses.el (glasses-separate-parentheses-exceptions): New.
-       Exceptions to the rule "add a space between an identifier and an
-       opening parenthesis".  Defaulted to the `#define' problem of cpp.
-       (glasses-parenthesis-exception-p): New.  Check if the region is an
-       exception regarding to that.
-       (glasses-make-readable): Use it.
-       (glasses-convert-to-unreadable): Ditto.  Modify the file also if
-       `glasses-convert-on-write-p' and `glasses-separate-parentheses-p' are t.
-
-2006-11-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/bytecomp.el (byte-compile-if): Revert last change.
-
-2006-11-19  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * progmodes/ada-mode.el (ada-make-body): Fix typo.
-
-       * progmodes/ada-xref.el (ada-make-body-gnatstub): Fix typo.
-       (ada-xref-initialize): Fix typo.  Use add-hook and remove-hook.
-
-2006-11-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded): Check `and'
-       conditions for function or variable bindings.
-
-       * comint.el (comint-exec-1): Set EMACS and INSIDE_EMACS to t.
-
-       * progmodes/compile.el (compilation-start): Ditto.
-
-2006-11-18  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (top): cl and custom are always required.
-
-2006-11-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el (x-cut-buffer-or-selection-value): Decode text from
-       cut-buffers with next-selection-coding-system if not nil.
-
-2006-11-17  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-fix-decoded-time): New function.
-       (org-display-custom-time): Use `org-fix-decoded-time'.
-
-2006-11-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * menu-bar.el (menu-bar-games-menu): Remove yow.
-
-2006-11-17  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-scan-tags): Re-align code fixed.
-       (org-detach-overlay): Rename from `org-detatch-overlay'.
-       (org-table-convert-region): Insert space after column separator.
-       (org-agenda-kill): New command.
-       (org-metaleft): Call `org-outdent-item' on bullets.
-       (org-metaright): Call `org-indent-item' on bullets.
-       (org-timestamp-change): Set `org-last-changed-timestamp'.
-       (org-current-line): Make sure (bolp) returns correct result.
-       (org-agenda-change-all-lines): Make sure TODO are highlighted.
-
-2006-11-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs.el (cvs-retrieve-revision): Set buffer-file-coding-system.
-
-2006-11-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mouse.el (global-map): Change 2006-08-16 fix to call
-       mouse-yank-at-click explicitly, since mouse events are not carried
-       over into keyboard macros.
-
-2006-11-16  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-file-internal): Use current buffer's file name as default
-       choice for ido-find-alternate-file.  Suggested by Matt Hodges.
-
-2006-11-15  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-doublecheck-at-and-shallower): Clarify docstring.
-       (allout-inhibit-aberrance-doublecheck): Rename from
-       allout-during-yank-processing.  All callers changed.
-       (allout-ascend): Provide for unusual case where some topic after
-       the first in file is at lower depth than the first.
-       (allout-shift-in): Ensure the offspring of the new containing
-       topic are exposed.
-       (allout-encrypt-string): Preserve the coding-system of the text,
-       according to that of the containing buffer.
-       (allout-toggle-subtree-encryption): When the text being encrypted
-       requires a different coding system, offer to preserve the coding
-       system using a file local var.
-
-2006-11-15  Simon Marshall  <simon@gnu.org>
-
-       * progmodes/cc-fonts.el (c-font-lock-declarators): Use c-at-toplevel-p
-       to recognise "T t()" as a function declaration, rather than a
-       variable instantiation, iff at the top-level or inside a class
-       declaration.  Suggested by Feng Li <fengli@gmail.com>.
-
-2006-11-14  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * progmodes/ada-xref.el (ada-parse-prj-file):
-       Don't delete project buffer; user may want to edit it.
-       (ada-xref-set-project-field, ada-xref-current-project-file)
-       (ada-xref-current-project, ada-show-current-project)
-       (ada-set-main-compile-application): New functions.
-       (ada-xref-get-project-field, ada-require-project-file):
-       Normalize use of ada-prj-default-project-file.
-       (ada-gdb-application, ada-get-ada-file-name, ada-make-body-gnatstub):
-       Normalize use of ada-require-project-file.
-       (ada-prj-find-prj-file): Improve doc string, comments.
-
-       * progmodes/ada-mode.el (ada-mode-version): Bump version.
-       (ada-create-keymap): Add \C-c\C-m 'ada-set-main-compile-application.
-       (ada-create-menu): Add ada-set-main-compile-application,
-       ada-show-current-main, ada-show-current-project.
-
-2006-11-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/python.el (inferior-python-mode-syntax-table): New var.
-       (inferior-python-mode): Use it.
-
-2006-11-14  Andreas Schwab  <schwab@suse.de>
-
-       * term/xterm.el (terminal-init-xterm): Add more key bindings.
-
-2006-11-13  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-copy-current-word): C-o copies region if active.
-
-2006-11-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-emph-face): Fix typo in variable name.
-
-2006-11-13  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ediff.el (ediff-revision):
-       * files.el (set-visited-file-name):
-       * mail/rmailout.el (rmail-output-body-to-file):
-       Use `format', not `message', in `y-or-n-p' call.
-
-2006-11-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-metaleft): Call `org-outdent-item' on bullets.
-       (org-metaright): Call `org-indent-item' on bullets.
-       (org-timestamp-change): Set `org-last-changed-timestamp'.
-       (org-current-line): Make sure (bolp) returns correct result.
-       (org-agenda-change-all-lines): Make sure highlighting TODO always works.
-
-2006-11-12  Richard Stallman  <rms@gnu.org>
-
-       * language/european.el (turkish-case-conversion-enable)
-       (turkish-case-conversion-disable): New functions.
-       ("Turkish" lang env): Use them.
-
-       * international/characters.el (case table):
-       Do nothing special for i and I.
-
-       * subr.el (remove-overlays): Fix last change.
-
-       * cus-edit.el (custom-save-all): Use find-file-visit-truename
-       for visiting the custom file.
-
-2006-11-12  Markus Triska  <triska@gmx.at>
-
-       * play/handwrite.el (handwrite): Also process lines not ending
-       with newline.  Replace some position-fiddling with different
-       logic.  Improve performance.
-
-2006-11-12  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * progmodes/ada-xref.el (ada-prj-default-check-cmd): New variable,
-       replacing deleted variable `ada-check-switch'.
-       (ada-project-file-extension): Rename to `ada-prj-file-extension'.
-       (ada-xref-project-files): Improve doc string.
-       (ada-find-executable): New function.
-       (ada-initialize-runtime-library): Use `ada-find-executable'.
-       (ada-xref-set-default-prj-values): In compile commands, don't need
-       `ada-cd-command'; `compile' does that more portably.
-       Use ada-prj-default-check-cmd.
-       (ada-parse-prj-file): Don't set 'debug_post_cmd, 'debug_pre_cmd
-       properties if not specified in project file.
-       (ada-goto-declaration): Display useful message for new error
-       'error-file-not-found.
-       (ada-get-ada-file-name, ada-find-in-src-path): Signal new error
-       'error-file-not-found.
-       (ada-get-all-references): Match latest ali syntax.  Signal new
-       error 'error-file-not-found.
-       (ada-find-in-ali): Match latest ali syntax.
-       (ada-make-filename-from-adaname): Handle different semantics of
-       gnatkr in GNAT 3.15p vs later.
-
-       * progmodes/ada-stmt.el (ada-func-or-proc-name): Match changes to
-       ada-procedure-start-regexp.
-       (ada-or-accept, ada-or-delay, ada-or-terminate): Improve doc string.
-
-       * progmodes/ada-mode.el: Replace conditional (require 'ispell)
-       with defvar.
-       (ada-language-version): Rename ada05 -> ada2005.
-       (ada-align-region-separate): Add `eval-when-compile'.
-       (ada-name-regexp): Remove unneeded escapes in regexp character
-       alternative.
-       (ada-compile-goto-error-file-linenr-re): New constant.
-       (ada-matching-start-re): Handle additional cases `declare',
-       `procedure', `function'.
-       (ada-compile-goto-error): Handle "... at line nn".
-       (ada-mode): Clearer syntax, comments for ff-special-constructs.
-       Delete support for old versions of `align'.
-       (ada-search-prev-end-stmt): Handle additional keyword `private'.
-       (ada-check-defun-name): Simplify handling of `declare'.
-       (ada-goto-matching-start): Handle nested `begin ... end'.
-       Handle `declare', `protected', `procedure', `function'.
-       (ada-create-menu): Presence of arm95 is not conditional on using
-       GNAT compiler.
-
-2006-11-12  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/re-builder.el (reb-mode): Set `blink-matching-paren' to
-       nil in the *RE-Builder* buffer (it causes spurious error messages).
-
-       * server.el (server-visit-files): If `minibuffer-auto-raise' has
-       been set to t, respect it.
-
-2006-11-11  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * progmodes/ada-mode.el: Delete `eval-and-compile' around `require'.
-       Delete commented out code for old Emacs versions.  Autoloading of
-       "ada-xref", "ada-prj" is useful even if compiler is not GNAT.
-       (ada-mode-version): Bump version number.
-       (ada-95-string-keywords, ada-2005-string-keywords)
-       (ada-2005-keywords, ada-name-regexp): New constant.
-       (ada-language-version, ada-procedure-start-regexp, ada-mode)
-       (ada-font-lock-keywords): Add support for Ada 2005 keywords.
-       (ada-package-start-regexp): Support private packages, include package
-       name (for ada-set-point-accordingly).
-       (ada-next-procedure, ada-previous-procedure)
-       (ada-which-function-are-we-in): Match changes to
-       ada-procedure-start-regexp.
-       (ada-make-body): Make non-interactive; not a user function.
-       (ada-make-subprogram-body): Improve doc string.
-
-2006-11-11  Romain Francoise  <romain@orebokech.com>
-
-       * progmodes/cperl-mode.el (cperl-mode): Before adding to it, make
-       `compilation-error-regexp-alist' buffer-local, since we changed
-       `compilation-error-regexp-alist-alist' locally.
-
-2006-11-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * server.el (server-visit-files): Bind `minibuffer-auto-raise'
-       to the value of `server-raise-frame'.
-
-2006-11-11  Glenn Morris  <rgm@gnu.org>
-
-       * ido.el (ido-enable-prefix)
-       * ses.el (ses-call-printer-return)
-       * net/tramp.el (tramp-unified-filenames)
-       * progmodes/cc-align.el (c-lineup-string-cont)
-       * progmodes/compile.el (compilation-directory-matcher)
-       * progmodes/ebnf2ps.el (ebnf-stop-on-error)
-       * progmodes/vhdl-mode.el (vhdl-reset-active-high)
-       (vhdl-clock-rising-edge)
-       * textmodes/org.el (org-export-with-timestamps)
-       (org-export-remove-timestamps-from-toc)
-       (org-export-with-tags): Improve previous doc fixes.
-
-2006-11-11  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-mode-map):
-       Bind C-c $ instead of M-RET.
-
-2006-11-10  Simon Marshall  <simon@gnu.org>
-
-       * progmodes/cc-fonts.el (c-font-lock-declarations): Don't overwrite
-       fontification for "case" and "default" keywords.
-
-2006-11-10  Andreas Schwab  <schwab@suse.de>
-
-       * calendar/cal-dst.el (calendar-dst-check-each-year-flag):
-       Avoid starting sentence with "nil".
-
-2006-11-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * server.el (server-raise-frame): New option.
-       (server-switch-buffer): Use it.
-
-2006-11-10  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-many-windows): Start doc string
-       with a capital.
-
-2006-11-10  Carsten Dominik  <carsten.dominik@gmail.com>
-
-       * textmodes/org.el (org-show-hierarchy-above)
-       (org-show-following-heading): Fix typo in default value.
-       (org-scan-tags): Make the search case-sensitive.
-       (org-tags-sparse-tree): Don't overrule
-       `org-show-following-heading' and `org-show-hierarchy-above'.
-       (org-reveal): New command.
-       (org-show-context): Rename from `org-show-hierarchy-above'.
-       (org-fast-tag-selection-single-key): New option.
-       (org-fast-tag-show-exit, org-set-current-tags-overlay): New functions.
-       (org-tags-overlay): New variable.
-       (org-agenda-todo-ignore-deadlines): New option.
-       ("session"): Add circular data structure `org-mark-ring' to
-       exceptions list in session.el.
-       (org-agenda-window-setup, org-agenda-restore-windows-after-quit):
-       New options.
-       (org-agenda-quit): Use `org-agenda-restore-windows-after-quit'.
-       (org-prepare-agenda, org-agenda-quit): Use `org-agenda-window-setup'.
-       (org-pre-agenda-window-conf, org-blank-before-new-entry): New vars.
-       (org-finalize-agenda): Activate bracket links in agenda.
-       (org-at-timestamp-p, org-at-date-range-p): Additional argument
-       INACTIVE-OK.
-       (org-show-hierarchy-above, org-show-following-heading):
-       List values allowed for fine-tuned configuration.
-       (org-show-hierarchy-above): New argument CONTEXT, use the
-       fine-tuned settings in `org-show-hierarchy-above' and
-       `org-show-following-heading'.
-       (org-display-custom-time): New function.
-       (org-toggle-time-stamp-overlays, org-insert-time-stamp): New function.
-       (org-display-custom-times, org-time-stamp-custom-formats):
-       (org-maybe-intangible): New macro.
-       (org-activate-bracket-links, org-hide-wide-columns):
-       Use `org-maybe-intangible'.
-       (org-open-file): Use `shell-quote-argument'.
-       (org-display-internal-link-with-indirect-buffer): New option.
-       (org-file-remote-p): Get regexp from list.
-       (org-link-expand-abbrev): New function.
-       (org-link-abbrev-alist): New option.
-       (org-open-at-point, org-cleaned-string-for-export):
-       Call `org-link-expand-abbrev'.
-       (org-timeline, org-agenda-list, org-todo-list)
-       (org-tags-view): Remove the KEEP-MODES argument.
-       (org-finalize-agenda-hook): New hook.
-       (org-get-alist-option): New function.
-       (org-follow-timestamp-link): New function.
-       (org-open-at-point): Call `org-follow-timestamp-link'.
-       (org-log-note-marker, org-log-note-purpose)
-       (org-log-note-window-configuration): New variables.
-       (org-add-log-maybe, org-add-log-note, org-store-log-note): New funs.
-       (org-log-note-headings): New option.
-       (org-dblock-write:clocktable): Bug fix, removed infinite loop.
-       (org-store-link): Support for dired-mode.
-       (org-open-file): Substitute environment variables into filename.
-       (org-last): New defsubst.
-       (org-agenda-re-align-tags): New function.
-       (org-agenda-align-tags-to-column): New option.
-       (org-agenda-timeline): Group removed.
-       (org-prepare-agenda, org-prepare-agenda-buffers)
-       (org-run-agenda-series, org-timeline, org-agenda-list)
-       (org-todo-list, org-tags-view): Call `org-agenda-prepare' and set
-       the text property inticating the agenda type.
-       (org-agenda-post-command-hook): Get agenda type from text property
-       at point.
-       (org-agenda): Handle command sets.  Set `org-agenda-last-arguments'
-       and obey `org-agenda-overriding-arguments'.
-       (org-agenda-overriding-arguments, org-agenda-last-arguments): New vars.
-       (org-agenda-goto-today, org-agenda-later, org-agenda-earlier)
-       (org-agenda-week-view, org-agenda-day-view):
-       Use `org-agenda-overriding-arguments' to make updating work with
-       multi-block agendas.
-       (org-agenda-prefix-format): Allow different formats for the
-       different agenda entry types.
-       (org-timeline-prefix-format): Option removed, use
-       `org-agenda-prefix-format' instead.
-       (org-prepare-agenda): New function.
-       (org-select-timeline-window): Option removed, use
-       `org-select-agenda-window' instead.
-       (org-respect-restriction): Variable removed.
-       (org-cmp-tag): New function.
-       (org-agenda-sorting-strategy, org-entries-lessp):
-       Implement sorting by last tag.
-       (org-complete): Better completion in in-buffer option lines.
-       (org-in-item-p): New function.
-       (org-org-menu): Add entries for checkboxes.
-       (org-cycle): Extra brouping in outline-regexp, because it is used
-       in a search with "^" prepended.
-       (org-provide-checkbox-statistics): New option.
-       (org-set-font-lock-defaults): Highlight checkbox statistics.
-       (org-update-checkbox-count-maybe)
-       (org-get-checkbox-statistics-face): New functions.
-       (org-update-checkbox-count): New command.
-       (org-insert-item, org-toggle-checkbox):
-       Call `org-update-checkbox-count-maybe'.
-       (org-export-as-html): XEmacs compatibility for coding system.
-       (org-force-cycle-archived): New command.
-       (org-cycle-hide-archived-subtrees): Display message when ARCHIVE
-       overrules cycling.
-       (org-fix-position-after-promote): If the line contains only a todo
-       keyword, add a final space.
-       (org-promote-subtree, org-demote-subtree):
-       Call `org-fix-position-after-promote'.
-
-2006-11-10  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/cal-dst.el: Do not assume DST starts/ends on the same
-       date in every year.
-       (calendar-dst-check-each-year-flag): New customizable variable.
-       (calendar-dst-find-data): New function, extracted from
-       calendar-current-time-zone.
-       (calendar-current-time-zone): Use calendar-dst-find-data.
-       (calendar-dst-transition-cache): New variable.
-       (calendar-dst-find-startend, calendar-dst-starts)
-       (calendar-dst-ends): New functions.
-       (calendar-daylight-savings-starts)
-       (calendar-daylight-savings-ends): Change value to use
-       calendar-dst-starts, calendar-dst-ends; respectively.
-
-       * progmodes/f90.el (f90-indent-region): Bind case-fold-search to t.
-
-       * ido.el (ido-enable-prefix)
-       * ses.el (ses-call-printer-return)
-       * net/tramp.el (tramp-unified-filenames)
-       * progmodes/cc-align.el (c-lineup-string-cont)
-       * progmodes/compile.el (compilation-directory-matcher)
-       * progmodes/ebnf2ps.el (ebnf-stop-on-error)
-       * progmodes/gdb-ui.el (gdb-many-windows)
-       * progmodes/vhdl-mode.el (vhdl-reset-active-high)
-       (vhdl-clock-rising-edge)
-       * textmodes/org.el (org-export-with-timestamps)
-       (org-export-remove-timestamps-from-toc, org-export-with-tags)
-       (org-read-date): Doc fix (Nil -> nil).
-
-2006-11-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el (x-select-text, x-cut-buffer-or-selection-value):
-       Encode/decode text to/from cut buffers to/from iso-latin-1 only.
-
-2006-11-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bs.el (bs--window-for-buffer): Remove.
-       (bs--show-with-configuration): Use `get-window-with-predicate'
-       instead of `bs--window-for-buffer'.
-
-2006-11-10  Kenichi Handa  <handa@m17n.org>
-
-       * files.el (revert-buffer): Fix previous change.
-
-2006-11-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bs.el (bs--redisplay): Fix typo in docstring.
-       (bs--window-config-coming-from): Make frame-local.
-       (bs--restore-window-config): New function.
-       (bs-kill, bs-select, bs-select-other-window)
-       (bs-select-other-frame): Use it.
-       (bs--window-for-buffer): Return as soon as a matching buffer is found.
-       (bs--show-with-configuration): Save the window configuration as a
-       frame local var, and only if *buffer-selection* is not already
-       visible on this frame.
-
-2006-11-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * vc-svn.el (vc-svn-admin-directory): New var.
-       (vc-svn-registered, vc-svn-responsible-p)
-       (vc-svn-repository-hostname): Use it.
-       Suggested by arit93@yahoo.com.
-
-2006-11-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ldefs-boot.el: Regenerate.
-
-2006-11-08  Alan Mackenzie  <acm@muc.de>
-
-       * emacs-lisp/lisp.el (beginning-of-defun-raw): Code up the
-       case (eq open-paren-in-column-0-is-defun-start nil) by searching
-       for least nested open-paren.
-
-2006-11-08  Romain Francoise  <romain@orebokech.com>
-
-       * subr.el (remove-overlays): Fix typo in last change.
-
-2006-11-08  Richard Stallman  <rms@gnu.org>
-
-       * subr.el (remove-overlays): Call overlay-recenter.
-
-2006-11-08  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * printing.el (pr-alist-custom-set, pr-ps-utility-custom-set)
-       (pr-ps-name-custom-set, pr-txt-name-custom-set): Return back the old
-       behaviour.
-       (pr-menu-bind): Act on global-map instead of menu-bar-file-menu
-       directly.
-
-2006-11-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ido.el (ido-ignore-extensions, ido-show-dot-for-dired)
-       (ido-max-dir-file-cache, ido-decorations)
-       (ido-rewrite-file-prompt-functions, ido-use-mycompletion-depth)
-       (ido-magic-backward-char, ido-enter-dired)
-       (ido-enter-insert-buffer, ido-enter-insert-file, ido-dired)
-       (ido-list-directory, ido-first-match, ido-only-match)
-       (ido-subdir, ido-indicator): Fix typos in docstrings.
-       (ido-buffer-internal, ido-completion-help): Fix typos in messages.
-       (ido-read-internal): Fix typo in error message.
-
-2006-11-08  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (set-default-coding-systems):
-       Always set default-file-name-coding-system to utf-8 for Mac Darwin.
-
-2006-11-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * makefile.w32-in (setwins): Remove.
-       (WINS_ALMOST): New macro.
-       (WINS): Use it.
-       (autoloads): Don't extract autoloads from files in obsolete/.
-
-2006-11-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * whitespace.el (whitespace-buffer): Call remove-overlays after
-       overlay-recenter for performance.  Suggested by Martin Rudalics.
-
-2006-11-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-default-method): scp is the default method.
-
-2006-11-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * server.el (server-start): Save also the Emacs pid in the server file.
-
-2006-11-07  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/reftex-cite.el (reftex-pop-to-bibtex-entry): Preserve
-       point when displaying a bibtex cross reference in the echo area.
-
-2006-11-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * international/mule.el (make-char): Fix typo in docstring.
-       (load-with-code-conversion, charsetp): Doc fixes.
-
-       * international/ja-dic-cnv.el (skkdic-convert):
-       * cus-edit.el (hook): Fix typo in docstring.
-
-2006-11-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (custom-mode-map): Move defvar above code using it.
-       (custom-mode-link-map): New variable.
-       (custom-group-link, custom-manual): Use follow-link.
-
-2006-11-06  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el: Fix typo in name of author of bibtex.el,
-       "Mark Shapiro" -> "Marc Shapiro".  Update his email address.
-
-2006-11-06  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-correct-word-before-point):
-       New function broken out of flyspell-correct-word.
-       (flyspell-mode-map): Bind it to M-RET.
-       (flyspell-correct-word): Call it.
-
-       * textmodes/fill.el (fill-minibuffer-function): New function.
-       (fill-paragraph): Bind fill-paragraph-function to
-       fill-minibuffer-function.
-
-       * ruler-mode.el (ruler-mode-map): Add bindings for up-events
-       so that they aren't undefined.
-
-       * dired.el (dired-readin): Locally bind file-name-coding-system.
-
-       * bindings.el: Shorten and clarify usual mode line mouse help string.
-
-       * Makefile.in (autoloads): Don't include `obsolete'.
-
-2006-11-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * printing.el (pr-alist-custom-set, pr-ps-utility-custom-set)
-       (pr-ps-name-custom-set, pr-txt-name-custom-set): Don't update the
-       Printing menu if it's not initialized.
-       (pr-menu-bind): Act on menu-bar-file-menu directly.
-
-2006-11-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help.el (view-emacs-news): Fix typo in error message.
-
-       * menu-bar.el (menu-bar-update-buffers): Fix typo in menu entry.
-
-       * shadowfile.el (shadow-define-regexp-group)
-       (shadow-literal-groups, shadow-insert-var): Doc fixes.
-       (shadow-read-files): Fix typo in message.
-       (shadow-inhibit-overload, shadow-find, shadow-suffix)
-       (shadow-site-match, shadow-write-todo-file, shadow-insert-var)
-       (shadow-suffix, shadow-site-match, shadow-expand-file-name)
-       (shadow-file-match): Fix typos in docstrings.
-
-       * terminal.el (terminal-emulator): Fix typo in message.
-
-       * emacs-lisp/authors.el (authors-fixed-entries): Fix typo.
-
-       * emacs-lisp/lselect.el (x-kill-primary-selection)
-       (x-delete-primary-selection, x-copy-primary-selection):
-       Fix typos in error messages.
-
-       * emulation/edt-mapper.el: Fix typo in interactive message.
-
-       * mail/emacsbug.el (report-emacs-bug): Fix typos in output message.
-
-       * textmodes/ispell.el (ispell, ispell-local-dictionary-alist)
-       (ispell-help): Fix typos in docstrings.
-       (ispell-help): Fix typo in output message.
-
-       * allout.el (allout-adjust-file-variable)
-       (allout-passphrase-verifier-string)
-       (allout-passphrase-hint-string)
-       (allout-toggle-current-subtree-encryption):
-       * apropos.el (apropos-synonyms):
-       * cus-edit.el (hook):
-       * emacs-lock.el (emacs-lock-from-exiting):
-       * follow.el (follow-avoid-tail-recenter-p):
-       * hexl.el (hexl-mode):
-       * mouse-copy.el (mouse-copy-work-around-drag-bug):
-       * mouse.el (mouse-set-font):
-       * resume.el (resume-emacs-args-file):
-       * rfn-eshadow.el (file-name-shadow-tty-properties):
-       * t-mouse.el (t-mouse-process, t-mouse-mode):
-       * emacs-lisp/cust-print.el (custom-print-install)
-       (custom-print-uninstall, custom-format):
-       * emacs-lisp/shadow.el (list-load-path-shadows):
-       * emulation/tpu-edt.el (tpu-help-text)
-       (tpu-save-all-buffers-kill-emacs, tpu-emacs-replace)
-       (tpu-reset-control-keys):
-       * emulation/vip.el (vip-emacs-local-map)
-       (vip-change-mode-to-emacs):
-       * emulation/viper.el (viper-mode, viper-set-hooks)
-       (viper-major-mode-modifier-list):
-       * emulation/viper-init.el (viper-emacs-state-cursor-color):
-       * emulation/viper-keym.el (viper-emacs-kbd-map)
-       (viper-toggle-key):
-       * mail/feedmail.el (feedmail-queue-reminder)
-       (feedmail-queue-reminder-alist, feedmail-confirm-outgoing)
-       (feedmail-confirm-outgoing-timeout, feedmail-nuke-bcc)
-       (feedmail-nuke-resent-bcc, feedmail-fill-to-cc-fill-column)
-       (feedmail-sender-line, feedmail-force-binary-write)
-       (feedmail-from-line, feedmail-deduce-envelope-from)
-       (feedmail-x-mailer-line, feedmail-message-id-generator)
-       (feedmail-date-generator, feedmail-fiddle-plex-user-list)
-       (feedmail-enable-spray, feedmail-spray-this-address)
-       (feedmail-spray-address-fiddle-plex-list, feedmail-enable-queue)
-       (feedmail-queue-runner-confirm-global)
-       (feedmail-ask-before-queue-prompt)
-       (feedmail-ask-before-queue-reprompt)
-       (feedmail-prompt-before-queue-standard-alist)
-       (feedmail-prompt-before-queue-user-alist)
-       (feedmail-prompt-before-queue-help-supplement)
-       (feedmail-queue-use-send-time-for-message-id)
-       (feedmail-queue-default-file-slug, feedmail-queue-fqm-suffix)
-       (feedmail-mail-send-hook-splitter, feedmail-mail-send-hook)
-       (feedmail-mail-send-hook-queued)
-       (feedmail-confirm-addresses-hook-example)
-       (feedmail-last-chance-hook, feedmail-before-fcc-hook)
-       (feedmail-queue-runner-mode-setter)
-       (feedmail-queue-alternative-mail-header-separator)
-       (feedmail-queue-runner-message-sender)
-       (feedmail-buffer-eating-function, feedmail-binmail-template)
-       (feedmail-run-the-queue-no-prompts)
-       (feedmail-run-the-queue-global-prompt)
-       (feedmail-queue-subject-slug-maker, feedmail-fiddle-header)
-       (feedmail-envelope-deducer, feedmail-fiddle-date)
-       (feedmail-default-message-id-generator)
-       (feedmail-fiddle-message-id, feedmail-fiddle-x-mailer)
-       (feedmail-fiddle-spray-address, feedmail-deduce-address-list):
-       * mail/vms-pmail.el (vms-pmail-save-and-exit, vms-pmail-abort)
-       (vms-pmail-setup):
-       * play/dunnet.el (dun-help):
-       * play/handwrite.el (handwrite):
-       * play/hanoi.el (hanoi-unix-64):
-       * progmodes/idlwave.el (idlwave-rescan-asynchronously):
-       * textmodes/enriched.el (fixed):
-       * textmodes/org.el (org-file-apps)
-       (org-emphasis-regexp-components, org-emphasis-alist):
-       * textmodes/texinfmt.el (batch-texinfo-format):
-       Fix typos in docstrings.
-
-2006-11-05  Juanma Barranquero  <lekktu@gmail.com>
-
-       * loadhist.el (read-feature): Don't complete features not loaded
-       from a file (which make `unload-feature' to fail).
-
-2006-11-05  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * add-log.el (add-log-time-zone-rule): Mark as safe-local-variable.
-
-2006-11-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * startup.el (command-line-1): Kill emacs if the last frame is
-       deleted while evaluating the command-line arguments.
-
-2006-11-05  Richard Stallman  <rms@gnu.org>
-
-       * startup.el (init-file-had-error): Add doc string.
-       (fancy-splash-text, fancy-splash-head, fancy-splash-tail):
-       Use fixed-width font for keyboard key descriptions.
-
-       * cus-edit.el (custom-save-all): Error if saving in .emacs
-       and it had an error when loaded.
-
-       * dired-aux.el (dired-copy-file-recursive): Catch errors
-       from recursive copies in the loop, around the recursive call.
-
-2006-11-05  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * battery.el (battery-linux-proc-acpi): Search an ac_adapter in
-       `/proc/acpi/ac_adapter/*'.  Ditto for the thermometers in
-       `/proc/acpi/thermal_zone/*'.
-       (battery-search-for-one-match-in-files): New.  Search a regexp in
-       the content of some files.
-
-2006-11-05  Martin Rudalics  <rudalics@gmx.at>
-
-       * window.el (mouse-autoselect-window-now): Remove variable.
-       (mouse-autoselect-window-state): New variable.
-       (mouse-autoselect-window-start, mouse-autoselect-window-cancel)
-       (mouse-autoselect-window-select, handle-select-window):
-       Rewritten to make mouse-autoselect-window-timer a one-shot timer.
-       Suspend delayed autoselection during menu or popup dialog.
-
-       * info-look.el (info-lookup-guess-custom-symbol): New function
-       for retrieving symbol at point in custom buffers.
-       (top level) <info-lookup-maybe-add-help>: Add backquote and
-       comma to ignored characters in regexps of help specifications
-       for emacs-lisp-mode and lisp-interaction-mode.  This permits
-       looking up symbols in `...' and after a comma.  Add help
-       specifications for custom-mode and help-mode.
-
-2006-11-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/rmail.el (rmail-redecode-body): New optional argument RAW.
-       Don't encode body if RAW is non-nil, or if the old encoding is
-       identical to the new encoding, or if the body contains only
-       eight-bit-* characters.
-
-2006-11-04  Yoni Rabkin Katzenell  <yoni-r@actcom.com>  (tiny change)
-
-       * faces.el (faces-sample-overlay, describe-face): Revert last changes.
-       (faces-sample-overlay): Remove variable.
-       (describe-face): Insert sample text in the face being described.
-
-2006-11-04  Martin Rudalics  <rudalics@gmx.at>
-
-       * whitespace.el (whitespace-indent-regexp): Make this match any
-       multiples of eight spaces near the beginning of a line.
-       (whitespace-buffer): Use `remove-overlays' instead of
-       `whitespace-unhighlight-the-space' and `overlay-recenter' to
-       speed up overlay handling.
-       (whitespace-buffer-leading, whitespace-buffer-trailing):
-       Make these functions highlight the text removed by
-       `whitespace-buffer-leading-cleanup' and
-       `whitespace-buffer-trailing-cleanup' respectively.
-       (whitespace-buffer-search): Use `with-local-quit'.
-       Move `format' out of loop to speed up scanning larger buffers.
-       (whitespace-unhighlight-the-space): Remove `remove-hook' since
-       that function is never added to a hook.
-       (whitespace-spacetab-regexp, whitespace-ateol-regexp)
-       (whitespace-buffer-leading-cleanup)
-       (whitespace-refresh-rescan-list): Fix docstrings.
-
-2006-11-03  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-during-yank-processing): Cue for inhibiting
-       aberrance processing during yanks.
-       (allout-doublecheck-at-and-shallower): Reduce the limit to reduce
-       the amount of yanked topics that can be aberrant.
-       (allout-do-doublecheck): Encapsulate this multiply-used recipe in
-       a function, and supplement with inihibition of doublechecking
-       during yanks.
-       (allout-beginning-of-line, allout-next-heading)
-       (allout-previous-heading, allout-goto-prefix-doublechecked)
-       (allout-back-to-current-heading, allout-next-visible-heading)
-       (allout-next-sibling): Use new allout-do-doublecheck function.
-       (allout-next-sibling): Ensure we made progress when returning
-       other than nil.
-       (allout-rebullet-heading): Preserve text property annotations
-       indicating the text was hidden, if it was.
-       (allout-kill-line): Remove any added was-hidden annotations.
-       (allout-kill-topic): Remove any added was-hidden annotations.
-       (allout-annotate-hidden): Inhibit adding was-hidden text
-       properties to the undo list.
-       (allout-deannotate-hidden): New function to remove was-hidden
-       annotation.
-       (allout-hide-by-annotation): Use new allout-deannotate-hidden.
-       (allout-remove-exposure-annotation): Replace by
-       allout-deannotate-hidden.
-       (allout-yank-processing): Signal that yank processing is happening
-       with allout-during-yank-processing.  Also, wrap
-       allout-unprotected's closer to the text changes, for easier
-       debugging.  We need to inhibit-field-text-motion explicitly, in
-       lieu of the encompassing allout-unprotected.
-       (outlineify-sticky): Adjust criteria for triggering new outline
-       decorations to presence or absence of any topics, not just a topic
-       at the beginning of the buffer.
-
-2006-11-03  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bs.el (bs--show-all, bs--redisplay):
-       * cus-edit.el (custom-unlispify-menu-entries)
-       (custom-unlispify-tag-names, custom-prompt-variable):
-       * expand.el (expand-pos):
-       * speedbar.el (speedbar-generic-list-tag-p):
-       * wid-edit.el (widget-image-enable):
-       * emacs-lisp/checkdoc.el (checkdoc-rogue-space-check-engine):
-       * emacs-lisp/find-func.el (find-function-noselect)
-       (find-function, find-variable-noselect, find-variable)
-       (find-definition-noselect, find-face-definition):
-       * mail/rmail-spam-filter.el (rsf-scanning-messages-now):
-       * net/eudc-vars.el (eudc-expansion-overwrites-query):
-       * progmodes/ada-xref.el (ada-find-in-ali):
-       * textmodes/flyspell.el (flyspell-check-tex-math-command):
-       * textmodes/org.el (org-copy-subtree):
-       * textmodes/table.el (table--row-column-insertion-point-p):
-       Use "non-nil" in docstrings.
-
-2006-11-03  Mark Davies  <mark@mcs.vuw.ac.nz>
-
-       * sort.el (sort-columns): Set the field separator to tab; on
-       NetBSD, sort complains if "\n" is used as field separator.
-
-2006-11-03  NIIMI Satoshi  <sa2c@sa2c.net>
-
-       * emacs-lisp/pp.el (pp-eval-last-sexp): Evaluate target sexp.
-
-2006-11-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * server.el (server-auth-key): Remove.  Replace by a process-property.
-       (server-start): Don't remove the file of the previous process, but
-       instead clear out the place for the new file.
-       (server-start): Set the :auth-key property.
-       (server-process-filter): Use the :auth-key property.
-
-2006-11-02  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-mode-map): No longer copy
-       `outline-mode-map' explicitly - this is already done by
-       `define-derived-mode'.
-
-2006-11-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * server.el (server-visit-files): Use `when'.
-       (server-process-filter): When authentication fails, send error
-       message to client.  Wrap `process-send-region' in `ignore-errors'
-       instead of `condition-case', and remove misleading comment.
-
-2006-11-01  Juri Linkov  <juri@jurta.org>
-
-       * simple.el (yank): Doc fix.
-
-2006-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * server.el: Try and fit within 80 columns.
-       (server-start): Make the auth file unreadable by other users.
-
-2006-10-31  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
-
-       * battery.el (battery-linux-proc-acpi): Prevent range error when
-       `full-capacity' is 0.
-
-2006-10-31  Yoni Rabkin Katzenell  <yoni-r@actcom.com>  (tiny change)
-
-       * faces.el (faces-sample-overlay): New defvar.
-       (faces-sample-overlay): New function to show face sample text.
-       (describe-face): Use it.
-
-2006-10-31  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * progmodes/ada-stmt.el: Change maintainer, apply
-       whitespace-cleanup, checkdoc.
-       (ada-func-or-proc-name): Add doc string.
-
-       * progmodes/ada-prj.el (ada-prj-new): Change maintainer, apply
-       whitespace-cleanup, checkdoc.  Minor improvements to many doc
-       strings and comments.
-       (ada-prj-display-page): Change buffer name to more accurately
-       reflect function.
-
-       * progmodes/ada-xref.el: Change maintainer, apply
-       whitespace-cleanup, checkdoc.  Minor improvements to many doc
-       strings and comments.  Don't look for `gvd' or `ddd' debuggers.
-       (ada-compile-current): Don't add newlines to commands.
-
-2006-10-31  Juanma Barranquero  <lekktu@gmail.com>
-
-       * server.el: Add support for TCP sockets.
-       (server-use-tcp, server-host, server-auth-dir): New options.
-       (server-auth-key): New variable.
-       (server-ensure-safe-dir): Create nonexistent parent dirs.
-       Ignore Unix-style file modes on Windows.
-       (server-start): Crete a TCP or Unix socket according to the value
-       of `server-use-tcp'.  For TCP sockets, create the id/auth file in
-       `server-auth-dir' directory.
-       (server-process-filter): Delete process if authentication
-       fails (which never happens for Unix sockets).
-
-2006-10-30  David Kastrup  <dak@gnu.org>
-
-       * subr.el (add-to-list): Don't continue checking if a match has
-       been found.
-
-2006-10-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * tutorial.el: Move defvars to avoid bytecomp warnings.
-       (tutorial--find-changed-keys): Check if viper-current-state is
-       bound before using it.
-       (help-with-tutorial): Check if viper-tutorial is defined before
-       using it.
-
-2006-10-30  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * help-fns.el (help-with-tutorial): Move to tutorial.el.
-
-       * tutorial.el: New file.
-       (help-with-tutorial): Move here from help-fns.el. Added help for
-       rebound keys.  Fixed resume of tutorial.
-       (tutorial--describe-nonstandard-key, tutorial--sort-keys)
-       (tutorial--find-changed-keys, tutorial--display-changes)
-       (tutorial--saved-dir, tutorial--saved-file)
-       (tutorial--save-tutorial): New functions to support the changes in
-       help-with-tutorial.
-
-2006-10-30  Kenichi Handa  <handa@m17n.org>
-
-       * files.el (revert-buffer): If a unibyte buffer is being reverted
-       with a coding system for multibyte, set buffer multibyte before
-       calling insert-file-contents.
-
-2006-10-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * server.el (server-select-display): Use a dummy buffer to detect when
-       the frame is later used.
-       (server-select-display): New function.
-       (server-process-filter): Use it to detect unused temp frames.
-
-2006-10-29  Stephen Leake  <stephen_leake@stephe-leake.org>
-
-       * progmodes/ada-mode.el: Change maintainer, apply
-       whitespace-clean, checkdoc.  Minor improvements to many doc strings.
-       (ada-mode-version): New function.
-       (ada-create-menu): Menu operations are available for all supported
-       compilers.
-
-2006-10-29  Lars Hansen  <larsh@soem.dk>
-
-       * net/tramp.el (with-parsed-tramp-file-name): Correct debug spec.
-       Highlight as keyword.
-       (tramp-do-copy-or-rename-file): Correct data for 'file-already-exists.
-       Don't call tramp-method-out-of-band-p for local files.
-       (tramp-touch): Quote file name.
-
-2006-10-28  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/calendar.el (cal-html-cursor-month)
-       (cal-html-cursor-year): Add autoloads for this new package.
-       (calendar-mode-map): Bind cal-html-cursor-month, cal-html-cursor-year.
-
-2006-10-28  Anna M. Bigatti  <bigatti@dima.unige.it>
-
-       * calendar/cal-html.el: New file.
-
-2006-10-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/authors.el (authors-aliases): Update.
-
-2006-10-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * version.el (emacs-version): Bump version number to 22.0.90.
-
-2006-10-26  John W. Eaton  <jwe@octave.org>
-
-       * progmodes/octave-inf.el (inferior-octave-has-built-in-variables):
-       New defvar.
-       (inferior-octave-resync-dirs): Check to see whether Octave has
-       built-in variables and set inferior-octave-has-built-in-variables.
-       Check inferior-octave-has-built-in-variables to decide whether to
-       send commands that set built-in variables or call functions to
-       change Octave's behavior.
-       Send "disp (pwd ())" to Octave instead of just "pwd".
-       (inferior-octave-startup): Send "more off" to Octave instead of
-       "page_screen_output = 0".
-
-2006-10-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/cl-indent.el (lisp-indent-259): Indent nil's in the
-       pattern normally.
-
-2006-10-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * bindings.el (mode-line-mode-menu): Remove bindings for global
-       minor modes (line/column number) as they are on the menubar.
-
-2006-10-25  Juanma Barranquero  <lekktu@gmail.com>
-
-       * term/w32-win.el (x-handle-name-switch): Doc fix.
-       (w32-standard-fontset-spec): Fix typo in docstring.
-
-       * midnight.el (midnight-buffer-display-time): Doc fix.
-       (clean-buffer-list-kill-never-buffer-names): Add "*server*".
-
-2006-10-23  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-cmd.el (viper-prefix-arg-com): Define gg as G0.
-
-       * viper-ex.el (ex-read): Quote file argument.
-
-       * ediff-diff.el (ediff-same-file-contents): Expand file names.
-
-       * ediff-mult.el (ediff-append-custom-diff): Quote shell file arguments.
-
-2006-10-22  Martin Rudalics  <rudalics@gmx.at>
-
-       * textmodes/flyspell.el (flyspell-check-region-doublons):
-       Fix last fix.
-
-2006-10-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * bindings.el (mode-line-mode-menu): List global minor modes
-       before local ones.
-
-2006-10-23  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (add-to-list): Optimize if compare-fn is `eq' or `eql'.
-       (sit-for): If last command was a prefix arg, add the read-ahead
-       event to unread-command-events as (t . EVENT) so it will be added
-       to this-command-keys by read-key-sequence.
-
-2006-10-22  Martin Rudalics  <rudalics@gmx.at>
-
-       * textmodes/flyspell.el (flyspell-word): Skip past all previous
-       whitespace when checking doublons.
-       (flyspell-check-region-doublons): Fix doublon regexp.
-       (flyspell-highlight-incorrect-region): Highlight doublons using
-       flyspell-duplicate face.
-
-       * progmodes/cperl-mode.el (cperl-invalid-face): Fix defcustom.
-
-2006-10-22  John Wiegley  <johnw@newartisans.com>
-
-       * progmodes/python.el (python-use-skeletons): python-mode was
-       auto-inserting templates (for those with abbrev-mode on), not only
-       by default -- *but without a configuration variable to disable
-       it*.  This rendered python-mode completely useless for me, so I
-       have added `python-use-skeletons', which is now off by default.
-
-2006-10-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/cperl-mode.el (cperl-mode): Don't assume
-       font-lock-multiline is auto-local (it's not).
-       (cperl-windowed-init): Ensure that cperl-font-lock-multiline is
-       initialized before calling cperl-init-faces.
-
-2006-10-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-info-stack-custom): Don't try to give
-       gdb-stack-position a value when there is no fringe.
-
-       * bindings.el (mode-line-mode-menu): Disable auto-revert-tail-mode
-       indicator if not visiting a file.
-
-2006-10-20  David Kastrup  <dak@gnu.org>
-
-       * window.el (kill-buffer-and-window): Fix a bug where an aborted
-       operation would still cause some window to collapse later.
-
-2006-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc.el (vc-switch-backend): Try to be more careful with unwanted
-       side-effect due to mixing various backends's file properties.
-
-       * vc-svn.el (vc-svn-parse-status): Remove unused arg `localp'.
-       Add arg `filename' instead.  Don't set vc-backend if `filename' is set.
-       Return `filename's status if applicable.  Update callers.
-
-2006-10-19  Kenichi Handa  <handa@m17n.org>
-
-       * international/kkc.el (kkc-region): When a key sequence is not
-       defined, append (this-single-command-raw-keys) to
-       unread-input-method-events.
-
-2006-10-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/ada-mode.el (ada-in-string-p): Doc fix.
-
-2006-10-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * version.el (emacs-version): Use mac-carbon-version-string.
-
-       * term/macterm.el (res-geometry): Apply 2006-10-18 change for x-win.el.
-
-2006-10-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * select.el (ccl-check-utf-8, string-utf-8-p): New functions (by
-       Kenichi Handa).
-       (xselect-convert-to-string): Decline requests for UTF8_STRING if
-       the selection is not UTF-8.
-
-2006-10-18  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/ada-mode.el (ada-83-string-keywords)
-       (ada-last-which-function-line ada-no-auto-case, ada-indent-region)
-       (ada-which-compiler, ada-align-modes, ada-adjust-case-buffer)
-       (ada-looking-at-semi-private, ada-get-body-name):
-       Fix typos in docstrings.
-       (ada-create-case-exception, ada-create-case-exception-substring):
-       Fix typos in error messages.
-       (ada-goto-matching-end, ada-narrow-to-defun): Doc fixes.
-
-2006-10-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el (res-geometry): Don't set geometry from Xresources
-       to default-frame-alist if default-frame-alist already contains
-       width/height.
-
-2006-10-18  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/pp.el (pp-eval-expression): Use `X' to read value.
-       Non-interactive arg is the value, not the expression.
-
-       * simple.el (read-expression-map): Just set it, no defvar.
-
-       * subr.el (insert-for-yank-1): If last inserted char has
-       properties, mark them as rear-nonsticky.
-
-       * recentf.el (recentf-mode): Doc fix.
-
-       * facemenu.el (facemenu-add-new-face): Defend against symbol
-       that isn't a face name.
-
-       * dired-aux.el (dired-do-copy): Doc fix.
-
-2006-10-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (line-move-1): Ignore fields when moving to the
-       beginning of line to avoid getting point stuck.
-
-2006-10-18  Martin Rudalics  <rudalics@gmx.at>
-
-       * textmodes/flyspell.el (flyspell-word-search-backward):
-       Set inhibit-point-motion-hooks to avoid looping due to intangibile
-       text.
-
-2006-10-16  Richard Stallman  <rms@gnu.org>
-
-       * help-fns.el (describe-function-1): Special case optimization
-       for self-insert-command.
-
-2006-10-16  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-reread-directory): Work in `dir' mode too.
-
-2006-10-15  Martin Rudalics  <rudalics@gmx.at>
-
-       * textmodes/table.el: Require 'regexp-opt.
-
-2006-10-15  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * progmodes/flymake.el (flymake-get-project-include-dirs-imp):
-       Use shell-quote-argument.
-
-       * shell.el (explicit-bash-args): Likewise.
-
-       * progmodes/ada-xref.el (ada-find-in-src-path): Likewise.
-       Use grep -E rather than egrep.
-
-2006-10-15  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * ido.el (ido-exhibit): Allow `-', `_', and trailing `$' in user id.
-
-2006-10-15  Kim F. Storm  <storm@cua.dk>
-
-       * filesets.el (filesets-run-cmd--repl-fn): Use shell-quote-argument.
-
-2006-10-14  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * filesets.el (filesets-cmd-shell-command): Quote buffer-file-name
-       to protect whitespace and metacharacters from the shell.
-
-2006-10-13  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
-
-       * apropos.el (apropos-pattern-quoted): Fix a typo in a doc string.
-
-2006-10-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * subr.el (start-process-shell-command): Doc fix.
-
-2006-10-13  Andrea Russo  <rastandy@salug.it>  (tiny change)
-
-       * info-look.el <maxima-mode, inferior-maxima-mode>: Allow [0-9] in
-       the regexp for Maxima symbols.
-
-2006-10-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-hooks.el (vc-ignore-dir-regexp): Make it into a defcustom.
-       (vc-find-root): Don't walk higher up than ~.
-
-2006-10-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * international/utf-8.el (utf-translate-cjk-load-tables):
-       Avoid clobbering last-coding-system-used during load.
-
-2006-10-12  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/reftex-global.el (reftex-create-tags-file):
-       Quote file arguments.
-
-2006-10-12  Richard Stallman  <rms@gnu.org>
-
-       * files.el (file-name-history): Add defvar.
-       (save-some-buffers-action-alist): Improve description strings.
-
-2006-10-12  Andreas Schwab  <schwab@suse.de>
-
-       * files.el (auto-mode-alist): Match change log file name also with
-       a dash before a numeric extension.
-
-2006-10-11  Ilya Zakharevich  <ilyaz@cpan.org>
-
-       * progmodes/cperl-mode.el: Merge from upstream, upto version 5.22.
-       After 5.0:
-       (cperl-add-tags-recurse-noxs-fullpath): New function (for -batch mode).
-
-       After 5.1: Major edit.  Summary of most visible changes:
-
-       - Multiple <<HERE per line allowed.
-       - Handles multiline subroutine declaration headers (with comments).
-         (The exception is `cperl-etags' - but it is not used in the rest
-         of the mode.)
-       - Fontifies multiline my/our declarations (even with comments,
-         and with legacy `font-lock').
-       - Major speedup of syntaxification, both immediate and postponed
-         (3.5x to 15x [for different CPUs and versions of Emacs] on the
-         huge real-life document I tested).
-       - New bindings, edits to imenu.
-       - "_" is made into word-char during fontification/syntaxification;
-         some attempts to recognize non-word "_" during other operations too.
-       - Detect bug in Emacs with `looking-at' inside `narrow' and bulk out.
-       - autoload some more perldoc-related stuff
-       - New convenience features: ISpell POD/HEREDOCs, narrow-to-HEREDOC.
-       - Attempt to incorporate XEmacs edits which reached me.
-
-       Fine-grained changelog:
-       (cperl-hook-after-change): New configuration variable.
-       (cperl-vc-sccs-header): Likewise.
-       (cperl-vc-sccs-header): Likewise.
-       (cperl-vc-header-alist): Default via two preceding variables.
-       (cperl-invalid-face): Remove double quoting under XEmacs
-               (still needed under 21.2).
-       (cperl-tips): Update URLs for resources.
-       (cperl-problems): Likewise.
-       (cperl-praise): Mention new features.
-       New C-c key bindings: for `cperl-find-bad-style',
-       `cperl-pod-spell', `cperl-here-doc-spell', `cperl-narrow-to-here-doc',
-       `cperl-perdoc', and `cperl-perldoc-at-point'.
-       CPerl Mode menu changes: "Fix style by spaces", "Imenu on Perl Info"
-       moved, new submenu of Tools with Ispell entries and narrowing.
-       (cperl-after-sub-regexp): New defsubst.
-       (cperl-imenu--function-name-regexp-perl): Use `cperl-after-sub-regexp'.
-               Allows heads up to head4.
-               Allow "package;".
-       (defun-prompt-regexp): Use `cperl-after-sub-regexp'.
-       (paren-backwards-message): ??? Something for XEmacs???
-       (cperl-mode): Never auto-switch abbrev-mode off.
-               Try to allow '_' be non-word char.
-               Do not use `font-lock-unfontify-region-function' on XEmacs.
-               Reset syntax cache on mode start.
-               Support multiline facification (even on legacy `font-lock').
-       (cperl-facemenu-add-face-function): ??? Some contributed code ???
-       (cperl-after-change-function): Since `font-lock' and `lazy-lock'
-               refuse to inform us whether the fontification is due to lazy
-               calling or due to edit to a buffer, install our own hook
-               (controlled by `cperl-hook-after-change').
-       (cperl-electric-pod): =cut may have been recognized as start.
-       (cperl-block-p): Move, updatedfor attributes.
-       (cperl-calculate-indent): Try to allow '_' be non-word char
-               Support subs with attributes.
-       (cperl-where-am-i): Quiet (?) a warning.
-       (cperl-cached-syntax-table): New function.
-       (cperl-forward-re): Use `cperl-cached-syntax-table'.
-       (cperl-unwind-to-safe): Recognize `syntax-type' property
-               changing in a middle of line.
-       (cperl-find-sub-attrs): New function.
-       (cperl-find-pods-heres): Allow many <<EOP per line.
-               Allow subs with attributes.
-               Major speedups (3.5x..15x on a real-life test file nph-proxy.pl).
-               Recognize "extproc " (OS/2) case-folded and only at start.
-               /x on s///x with empty replacement was not recognized.
-               Better comments.
-       (cperl-after-block-p): Remarks on diff with `cperl-block-p'.
-               Allow subs with attributes, labels.
-               Do not confuse "else::foo" with "else".
-               Minor optimizations...
-       (cperl-after-expr-p): Try to allow '_' be non-word char.
-       (cperl-fill-paragraph): Try to detect a major bug in Emacs
-               with `looking-at' inside `narrow' and bulk out if found.
-       (cperl-imenu--create-perl-index): Updates for new
-               `cperl-imenu--function-name-regexp-perl'.
-       (cperl-outline-level): Likewise.
-       (cperl-init-faces): Allow multiline subroutine headers
-               and my/our declarations, and ones with comments.
-               Allow subroutine attributes.
-       (cperl-imenu-on-info): Better docstring.
-       (cperl-etags): Rudimentary support for attributes.
-               Support for packages and "package;".
-       (cperl-add-tags-recurse-noxs): Better (?) docstring.
-       (cperl-add-tags-recurse-noxs-fullpath): Likewise.
-       (cperl-tags-hier-init): Misprint for `fboundp' fixed.
-       (cperl-not-bad-style-regexp): Try to allow '_' be non-word char.
-       (cperl-perldoc): Add autoload.
-       (cperl-perldoc-at-point): Likewise.
-       (cperl-here-doc-spell): New function.
-       (cperl-pod-spell): Likewise.
-       (cperl-map-pods-heres): Likewise.
-       (cperl-get-here-doc-region): Likewise.
-       (cperl-font-lock-fontify-region-function): Likewise (backward
-               compatibility for legacy `font-lock').
-       (cperl-font-lock-unfontify-region-function): Fix style.
-       (cperl-fontify-syntaxically): Recognize and optimize away deferred
-               calls with no-change.  Governed by `cperl-hook-after-change'.
-       (cperl-fontify-update): Recognize that syntaxification region
-               can be larger than fontification one.
-               XXXX we leave `cperl-postpone' property, so this is quadratic...
-       (cperl-fontify-update-bad): Temporary placeholder until
-               it is clear how to implement `cperl-fontify-update'.
-       (cperl-time-fontification): New function.
-       (attrib-group): New text attribute.
-       (multiline): New value: `syntax-type' text attribute.
-
-       After 5.2:
-       (cperl-emulate-lazy-lock): New function.
-       (cperl-fontify-syntaxically): Would skip large regions.
-       Add `cperl-time-fontification', `cperl-emulate-lazy-lock' to menu.
-       Some globals were declared, but uninitialized.
-
-       After 5.3, 5.4:
-       (cperl-facemenu-add-face-function): Add docs, fix U<>.
-       Copyright message updated.
-       (cperl-init-faces): Work around a bug in `font-lock'. May slow
-                       facification down a bit.
-               Misprint for my|our|local for old `font-lock'
-                       "our" was not fontified same as "my|local".
-               Highlight variables after "my" etc even in
-                       a middle of an expression.
-               Do not facify multiple variables after my etc
-                       unless parentheses are present.
-
-       After 5.5, 5.6
-       (cperl-fontify-syntaxically): after-change hook could reset.
-       (cperl-syntax-done-to) to a middle of line; unwind to BOL.
-
-       After 5.7:
-       (cperl-init-faces): Allow highlighting of local ($/).
-       (cperl-problems-old-emaxen): New variable (for the use of DOCSTRING).
-       (cperl-problems): Remove fixed problems.
-       (cperl-find-pods-heres): Recognize #-comments in m##x too.
-               Recognize charclasses (unless delimiter is \).
-       (cperl-fontify-syntaxically): Unwinding to safe was done in wrong order.
-       (cperl-regexp-scan): Update docs.
-       (cperl-beautify-regexp-piece): Use information got from regexp scan.
-
-       After 5.8:
-       Major user visible changes:
-       Recognition and fontification of character classes in RExen.
-       Variable indentation of RExen according to groups.
-
-       (cperl-find-pods-heres): Recognize POSIX classes in REx charclasses.
-               Fontify REx charclasses in variable-name face.
-               Fontify POSIX charclasses in "type" face.
-               Fontify unmatched "]" in function-name face.
-               Mark first-char of HERE-doc as `front-sticky'.
-               Reset `front-sticky' property when needed.
-       (cperl-calculate-indent): Indents //x -RExen accordning to parens level.
-       (cperl-to-comment-or-eol): Recognize ends of `syntax-type' constructs.
-       (cperl-backward-to-noncomment): Recognize stringy `syntax-type'
-               constructs.  Support `narrow'ed buffers.
-       (cperl-praise): Remove a reservation.
-       (cperl-make-indent): New function.
-       (cperl-indent-for-comment): Use `cperl-make-indent'.
-       (cperl-indent-line): Likewise.
-       (cperl-lineup): Likewise.
-       (cperl-beautify-regexp-piece): Likewise.
-       (cperl-contract-level): Likewise.
-       (cperl-toggle-set-debug-unwind): New function.
-               New menu entry for this.
-       (fill-paragraph-function): Use when `boundp'.
-       (cperl-calculate-indent): Take into account groups when indenting RExen.
-       (cperl-to-comment-or-eol): Recognize # which end a string.
-       (cperl-modify-syntax-type): Make only syntax-table property non-sticky.
-       (cperl-fill-paragraph): Return t: needed for `fill-paragraph-function'.
-       (cperl-fontify-syntaxically): More clear debugging message.
-       (cperl-pod2man-build-command): Check (XEmacs) `Man-filter-list'.
-       (cperl-init-faces): More complicated highlight even on XEmacs (new).
-       Merge cosmetic changes from XEmacs.
-
-       After 5.9:
-       (cperl-1+): Move to before the first use.
-       (cperl-1-): Likewise.
-
-       After 5.10:
-
-       This code may lock Emacs hard!!!  Use at your own risk!
-
-       (cperl-font-locking): New internal variable.
-       (cperl-beginning-of-property): New function.
-       (cperl-calculate-indent): Use `cperl-beginning-of-property'
-       instead of `previous-single-property-change'.
-       (cperl-unwind-to-safe): Likewise.
-       (cperl-after-expr-p): Likewise.
-       (cperl-get-here-doc-region): Likewise.
-       (cperl-font-lock-fontify-region-function): Likewise.
-       (cperl-to-comment-or-eol): Do not call `cperl-update-syntaxification'
-                       recursively.
-               Bound `next-single-property-change' via `point-max'.
-       (cperl-unwind-to-safe): Bound likewise
-       (cperl-font-lock-fontify-region-function): Likewise.
-       (cperl-find-pods-heres): Mark as recursive for `cperl-to-comment-or-eol'
-               Initialization of `cperl-font-lock-multiline-start' could be
-               missed if the "main" fontification did not run due to the
-               keyword being already fontified.
-       (cperl-pod-spell): Return t from do-one-chunk function.
-       (cperl-map-pods-heres): Stop when the worker returns nil.
-               Call `cperl-update-syntaxification'.
-       (cperl-get-here-doc-region): Call `cperl-update-syntaxification'.
-       (cperl-get-here-doc-delim): Remove unused function.
-
-       After 5.11:
-
-       The possible lockup of Emacs (introduced in 5.10) fixed.
-
-       (cperl-unwind-to-safe): `cperl-beginning-of-property' won't return nil.
-       (cperl-syntaxify-for-menu): New customization variable.
-       (cperl-select-this-pod-or-here-doc): New function.
-       (cperl-get-here-doc-region): Extra argument.
-               Do not adjust pos by 1.
-
-       New menu entries
-               (Perl/Tools): Selection of current POD or HERE-DOC section.
-               (Debugging CPerl:) backtrace on fontification.
-
-       After 5.12:
-       (cperl-cached-syntax-table): Use `car-safe'.
-       (cperl-forward-re): Remove spurious argument SET-ST.
-               Add documentation.
-       (cperl-forward-group-in-re): New function.
-       (cperl-find-pods-heres): Find and highlight (?{}) blocks in RExen
-       (XXXX Temporary (?) hack is to syntax-mark them as comment).
-
-       After 5.13:
-       (cperl-string-syntax-table): Make { and } not-grouping
-         (Sometimes they ARE grouping in RExen, but matching them would only
-          confuse in many situations when they are not)
-       (beginning-of-buffer): Replace two occurrences with goto-char...
-       (cperl-calculate-indent): `char-after' could be nil...
-       (cperl-find-pods-heres): REx can start after "[" too.
-               Hightlight (??{}) in RExen too.
-       (cperl-maybe-white-and-comment-rex): New constant
-       (cperl-white-and-comment-rex): Likewise.
-               XXXX Not very efficient, but hard to make
-               better while keeping 1 group.
-
-       After 5.13:
-       (cperl-find-pods-heres): $foo << identifier() is not a HERE-DOC.
-               Likewise for 1 << identifier.
-
-       After 5.14:
-       (cperl-find-pods-heres): Different logic for $foo .= <<EOF etc.
-               Error-less condition-case could fail.
-       (cperl-font-lock-fontify-region-function): Likewise.
-       (cperl-init-faces): Likewise.
-
-       After 5.15:
-       (cperl-find-pods-heres): Support property REx-part2.
-       (cperl-calculate-indent): Likewise.
-               Don't special-case REx with non-empty 1st line.
-       (cperl-find-pods-heres): In RExen, highlight non-literal backslashes.
-               Invert highlighting of charclasses:
-                       now the envelop is highlighted.
-               Highlight many others 0-length builtins.
-       (cperl-praise): Mention indenting and highlight in RExen.
-
-       After 5.15:
-       (cperl-find-pods-heres): Highlight capturing parens in REx.
-
-       After 5.16:
-       (cperl-find-pods-heres): Highlight '|' for alternation
-       Initialize `font-lock-warning-face' if not present.
-       (cperl-find-pods-heres): Use `font-lock-warning-face' instead of
-                        `font-lock-function-name-face'.
-       (cperl-look-at-leading-count): Likewise.
-       (cperl-find-pods-heres): Localize `font-lock-variable-name-face',
-                       `font-lock-keyword-face' (needed for
-                       batch processing), etc...
-               Use `font-lock-builtin-face' for builtin in REx
-                       Now `font-lock-variable-name-face'
-                       is used for interpolated variables
-               Use "talking aliases" for faces inside REx
-               Highlight parts of REx (except in charclasses)
-                       according to the syntax and/or semantic
-               Syntax-mark a {}-part of (?{}) as "comment"
-                       (it was the ()-part)
-               Better logic to distinguish what is what in REx
-       (cperl-tips-faces): Document REx highlighting
-       (cperl-praise): Mention REx syntax highlight etc.
-
-       After 5.17:
-       (cperl-find-sub-attrs): Would not always manage to print error message.
-       (cperl-find-pods-heres): Localize `font-lock-constant-face'.
-
-       After 5.18:
-       (cperl-find-pods-heres): Misprint in REx for parsing REx.
-               Very minor optimization.
-               `my-cperl-REx-modifiers-face' got quoted.
-               Recognize "print $foo <<END" as HERE-doc.
-               Put `REx-interpolated' text attribute if needed.
-       (cperl-invert-if-unless-modifiers): New function.
-       (cperl-backward-to-start-of-expr): Likewise.
-       (cperl-forward-to-end-of-expr): Likewise.
-       (cperl-invert-if-unless): Works in "the opposite way" too.
-               Cursor position on return is on the switch-word.
-               Indents comments better.
-       (REx-interpolated): New text attribute.
-       (cperl-next-interpolated-REx): New function.
-       (cperl-next-interpolated-REx-0): Likewise.
-       (cperl-next-interpolated-REx-1): Likewise.
-       "\C-c\C-x", "\C-c\C-y", "\C-c\C-v": New keybinding for these functions.
-       Perl/Regexp menu: 3 new entries for `cperl-next-interpolated-REx'.
-       (cperl-praise): Mention finded interpolated RExen.
-
-       After 5.19:
-       (cperl-init-faces): Highlight %$foo, @$foo too.
-       (cperl-short-docs): Better docs for system, exec.
-       (cperl-find-pods-heres): Better detect << after print {FH} <<EOF etc.
-               Would not find HERE-doc ended by EOF without NL.
-       (cperl-short-docs): Correct not-doubled \-escapes.
-       start block: Put some `defvar' for stuff gone from XEmacs.
-
-       After 5.20:
-       initial comment: Extend copyright, fix email address.
-       (cperl-indent-comment-at-column-0): New customization variable.
-       (cperl-comment-indent): Indentation after $#a would increasy by 1.
-       (cperl-mode): Make `defun-prompt-regexp' grok BEGIN/END etc.
-       (cperl-find-pods-heres): Mark CODE of s///e as `syntax-type' `multiline'
-       (cperl-at-end-of-expr): Would fail if @BAR=12 follows after ";".
-       (cperl-init-faces): If `cperl-highlight-variables-indiscriminately'
-                       highlight $ in $foo too (UNTESTED).
-       (cperl-set-style): Docstring missed some available styles.
-       toplevel: Menubar/Perl/Indent-Styles had FSF, now K&R.
-               Change "Current" to "Memorize Current".
-       (cperl-indent-wrt-brace): New customization variable; the default is
-               as for pre-5.2 version.
-       (cperl-styles-entries): Keep `cperl-extra-newline-before-brace-multiline'.
-       (cperl-style-alist): Likewise.
-       (cperl-fix-line-spacing): Support `cperl-merge-trailing-else' being nil,
-               and `cperl-extra-newline-before-brace' etc
-               being t
-       (cperl-indent-exp): Plans B and C to find continuation blocks even
-               if `cperl-extra-newline-before-brace' is t.
-
-       After 5.21:
-       Improve some docstrings concerning indentation.
-       (cperl-indent-rules-alist): New variable.
-       (cperl-sniff-for-indent): New function name
-               (separated from `cperl-calculate-indent').
-       (cperl-calculate-indent): Separate the sniffer and the indenter;
-               uses `cperl-sniff-for-indent' now.
-       (cperl-comment-indent): Test for `cperl-indent-comment-at-column-0'
-               was inverted;
-               Support `comment-column' = 0.
-
-2006-10-11  Martin Rudalics  <rudalics@gmx.at>
-
-       * dnd.el (dnd-handle-one-url): Fix typo in doc-string.
-       * help-at-pt.el (scan-buf-move-to-region): Likewise.
-       * longlines.el (longlines-window-change-function): Likewise.
-       * simple.el (undo-ask-before-discard): Likewise.
-       * wid-edit.el (widget-field-prompt-internal)
-       (widget-documentation-link-p): Likewise.
-
-2006-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-get-kw): | is not among the allowed chars
-       for a keyword.
-
-2006-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * newcomment.el (comment-valid-prefix-p): Make the check
-       more thorough.  From an idea by Martin Rudalics <rudalics@gmx.at>.
-       (comment-indent-new-line): Adjust call.
-
-2006-10-09  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-back-to-current-heading): Base on lower-level
-       routines to get proper disqualification of aberrant topics.
-
-2006-10-09  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/two-column.el (2C-two-columns): Doc fix.
-
-2006-10-09  Kim F. Storm  <storm@cua.dk>
-
-       * shell.el (explicit-csh-args, explicit-bash-args): Add comment
-       about implicit use.
-
-2006-10-08  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/two-column.el (2C-two-columns): Doc fix.
-
-2006-10-08  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * files.el: Mark `buffer-read-only' as safe-local-variable.
-
-2006-10-08  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-speedbar-expand-node):
-       Burp if GUD buffer has been killed.
-
-2006-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * completion.el (add-completions-from-c-buffer):
-       Don't presume an error's second element is a string.
-       Use looking-at rather than buffer-substring + member.
-
-2006-10-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/rmail.el (rmail-redecode-body): If the old encoding is
-       `undecided', call find-coding-systems-region to find a proper
-       non-trivial encoding.
-       (rmail-mime-charset-pattern): Allow a TAB between "Content-Type"
-       and "text/plain".
-
-2006-10-07  Kevin Ryde  <user42@zip.com.au>
-
-       * textmodes/reftex-vars.el (defgroup reftex): Update home page
-       url-link.
-
-       * strokes.el (defgroup strokes): Remove invalid url-link.
-
-2006-10-07  Magnus Henoch  <mange@freemail.hu>
-
-       * autoinsert.el (auto-insert-alist): Doc fix.
-
-2006-10-07  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * mouse-sel.el (mouse-insert-selection-internal):
-       Use insert-for-yank, so that yank handlers are run.
-
-2006-10-07  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-file-extension-aux): Fix comparison.
-
-2006-10-06  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-wide-find-dirs-or-files): Use shell-quote-argument.
-
-2006-10-05  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/advice.el (ad-remove-advice, ad-parse-arglist)
-       (ad-make-mapped-call): Use `let', not `let*'.
-
-2006-10-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * international/mule-cmds.el (coding-system-change-eol-conversion):
-       Ensure the coding system is initialized before calling
-       coding-system-eol-type.
-
-2006-10-04  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-rm-props, org-activate-plain-links)
-       (org-activate-angle-links, org-activate-dates)
-       (org-activate-target-links, org-activate-camels)
-       (org-activate-tags): Add `rear-nonsticky' text property to avoid
-       textproperty keymaps from being active beyond the end of a line.
-       (org-unfontify-region): Also remove `rear-nonsticky' property.
-
-2006-10-04  Kenichi Handa  <handa@m17n.org>
-
-       * international/code-pages.el (next): Table fixed.
-
-2006-10-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-prev-thing): Remove (forward-char 1) now
-       that it's been made unnecessary by removing narrowing.
-
-2006-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-prev-thing): Massage to untangle the
-       control flow a bit, simplify another bit, and add comments.
-
-2006-10-03  David Kastrup  <dak@gnu.org>
-
-       * help.el (describe-mode): For clicks on mode-line, use "@"
-       interactive argument to get the major mode of the click instead of
-       the current buffer.
-
-       * isearch.el (isearch-mouse-2): Use new semantics of `key-binding'
-       in order to better redirect mouse-2 clicks.  Also allow default
-       bindings to apply.
-
-2006-10-03  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/cl.el (pushnew-internal): Remove defvar.
-       (pushnew): Fix last change.
-
-2006-10-03  Denis St\e,A|\e(Bnkel  <dstuenkel@googlemail.com>  (tiny change)
-
-       * ibuf-ext.el (eval, view-and-eval) <define-ibuffer-op>:
-       Use the interactive spec of `eval-expression'.
-
-2006-10-02  Michael Welsh Duggan  <md5i@cs.cmu.edu>
-
-       * progmodes/sh-script.el (sh-prev-thing): Fix last change.
-
-2006-10-02  MIYOSHI Masanori  <miyoshi@meadowy.org>  (tiny change)
-
-       * mail/smtpmail.el (smtpmail-try-auth-methods): Fix typo in
-       2006-09-28 commit.
-
-2006-10-02  Kenichi Handa  <handa@m17n.org>
-
-       * international/code-pages.el (iso-8859-6): Table fixed.
-
-2006-10-01  Chris Moore  <christopher.ian.moore@gmail.com>
-
-       * dired.el (dired-build-subdir-alist): Fix previous change.
-
-2006-10-01  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * simple.el (undo-elt-crosses-region): Fix the inequalities.
-
-2006-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/find-func.el (find-function-regexp): Don't match
-       "define-button-type".
-
-       * pcvs.el (cvs-update-header): Fix handling of extra newlines so that
-       they don't keep accumulating.
-
-2006-10-01  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
-
-       * ffap.el (ffap-rfc-path): Change the address of the RFC
-       repository to ftp.rfc-editor.org, as ds.internic.net seems to be gone.
-
-2006-10-01  Stephen Berman  <Stephen.Berman@gmx.net>
-
-       * allout.el (allout-expose-topic): Rectify implementation of "+"
-       spec, so that bodies are not exposed with headlines.
-
-2006-10-01  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-current-depth): Do aberrent check only at or
-       below doublecheck depth.
-       (allout-chart-subtree): Make it explicit that LEVELS being nil
-       means unlimited depth.  Drop undocumented support for LEVELS value
-       t meaning unlimited depth.  (This is consistent with
-       allout-chart-to-reveal, but contrary to allout-show-children,
-       which needs to use nil to default to depth of 1.)
-       (allout-goto-prefix-doublechecked): Wrap long docstring line.
-       (allout-chart-to-reveal): Be explicit in docstring about meaning
-       of nil LEVELS, and drop support for LEVELS value t.
-       (allout-show-children): Translate the level spec used by this
-       routine to that used by allout-chart-subtree and
-       allout-chart-to-reveal.
-       (allout-show-to-offshoot): Retry once when stuck, after opening
-       subtree - improvements in discontinuity handling likely will
-       enable progress.
-
-2006-09-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * wid-edit.el (widget-button-click-moves-point): New variable.
-       (widget-button-click): If widget-button-click-moves-point is
-       non-nil, set point after performing the button action.
-
-       * cus-edit.el (custom-mode): Set widget-button-click-moves-point.
-
-2006-09-30  Martin Rudalics  <rudalics@gmx.at>
-
-       * files.el (find-file-existing): Modify to not allow wildcards.
-
-2006-09-30  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * simple.el (undo-more): When undo information for the region is
-       exhausted, say "No further undo information FOR REGION".
-
-2006-09-30  Michael Welsh Duggan  <md5i@cs.cmu.edu>
-
-       * progmodes/sh-script.el (sh-prev-thing):
-       Take `sh-leading-keywords' into account.
-
-2006-09-29  Glenn Morris  <rgm@gnu.org>
-
-       * custom.el (defcustom): Doc fix.
-
-       * calendar/calendar.el (european-calendar-style):
-       Call european-calendar or american-calendar as needed when set.
-       (diary-view-entries, list-calendar-holidays): Move autoloads
-       before use.
-
-2006-09-29  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/cperl-mode.el (cperl-after-expr-p): Don't move point
-       to nil if there is no previous property change.
-
-2006-09-29  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * cus-edit.el (custom-save-all): Switch to emacs-lisp mode before
-       saving anything to be sure that `forward-sexp' behaves correctly.
-
-2006-09-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (line-move-finish): Ignore field boundaries if the
-       initial and final points have the same `field' property.
-
-2006-09-29  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-file-internal): Only bind minibuffer-completing-file-name
-       to t while calling ido-read-internal.
-
-2006-09-29  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-file-remote-p): Get regexp from list.
-       (org-archive-subtree): Remove erraneous `]' from character list.
-
-2006-09-28  Jonathan Yavner  <jyavner@member.fsf.org>
-
-       * ses.el (ses-in-print-area, ses-goto-data, ses-load)
-       (ses-reconstruct-all): Make undo of "insert row" work by keeping
-       markers for data-area and parameters-area.
-
-2006-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/make-mode.el (makefile-mode): Don't disable jit-lock.
-
-       * font-lock.el (font-lock-after-change-function): Refontify next line
-       as well if end is at BOL.
-       (font-lock-extend-jit-lock-region-after-change): Be more careful to
-       only extend the region as much as needed.
-
-2006-09-28  Richard Stallman  <rms@gnu.org>
-
-       * comint.el (comint-mode): Bind font-lock-defaults non-nil.
-
-       * subr.el (insert-for-yank-1): Handle `font-lock-face' specially.
-
-       * international/mule.el (after-insert-file-set-coding):
-       If VISIT, don't let set-buffer-multibyte make undo info.
-
-2006-09-28  Osamu Yamane  <yamane@green.ocn.ne.jp>  (tiny change)
-
-       * mail/smtpmail.el (smtpmail-try-auth-methods): Do not break long
-       lines in base64-encoded authentication response.
-
-2006-09-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * progmode/ebnf2ps.el: Doc fix. Implement arrow spacing and scaling.
-       (ebnf-version): New version 4.3.
-       (ebnf-arrow-extra-width, ebnf-arrow-scale): New options.
-       (ebnf-prologue): Adjust PostScript programming.
-       (ebnf-begin-file, ebnf-insert-ebnf-prologue, ebnf-terminal-dimension1)
-       (ebnf-repeat-dimension, ebnf-except-dimension): Adjust code.
-
-2006-09-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * jit-lock.el (jit-lock-force-redisplay): Rename from
-       jit-lock-fontify-again, and undo the mistaken change I've just done.
-
-       * jit-lock.el (jit-lock-fontify-now): Don't fontify the empty text.
-       (jit-lock-fontify-again): Don't refontify text that's not displayed.
-
-2006-09-26  Kenichi Handa  <handa@m17n.org>
-
-       * startup.el (display-splash-screen): Allow a prefix argument.
-
-2006-09-25  Jason Rumney  <jasonr@gnu.org>
-
-       * subr.el (shell-quote-argument): Use DOS logic for Windows
-       shells with DOS semantics.
-
-2006-09-24  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/compile.el (compilation-goto-locus-delete-o): New fn.
-       (compilation-goto-locus): Use compilation-goto-locus-delete-o
-       to delete the overlay.  Put it on pre-command-hook.
-
-       * emacs-lisp/timer.el (timer-max-repeats): Doc fix.
-
-       * startup.el (fancy-splash-screens, normal-splash-screen):
-       Call the splash buffer *About GNU Emacs*.
-
-       * simple.el (next-error-highlight, next-error-highlight-no-select):
-       Default to 0.5.
-       (yank-excluded-properties): Add `fontified'.
-
-       * font-lock.el (font-lock-compile-keywords): Allow value of
-       syntax-begin-function to enable paren-column-0 highlighting.
-
-2006-09-24  Chris Moore  <christopher.ian.moore@gmail.com>
-
-       * dired.el (dired-build-subdir-alist): When file ends in colon,
-       don't exit the loop, just disregard that file.
-
-2006-09-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (line-move-finish): Handle corner case for fields in
-       continued lines.
-       (line-move-1): Remove flawed test for that case.
-
-2006-09-24  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * icomplete.el (icomplete-simple-completing-p): Use the correct
-       name for the new variable, `icomplete-with-completion-tables'.
-       (file local variables): Remove superfluous setting.
-
-2006-09-23  Jeff Miller  <jmiller@cablespeed.com>  (tiny change)
-
-       * calendar/appt.el (appt-check): Fix typo for appointments just
-       after midnight.
-
-2006-09-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * help.el (describe-key-briefly, describe-key): Don't expect an
-       extra up event if a down-event is generated by a popup menu.
-
-2006-09-23  Michal Nazarewicz  <mnazarewicz@gmail.com>  (tiny change)
-
-       * textmodes/ispell.el (ispell-change-dictionary): Don't check the
-       local dictionary when changing the global dictionary.
-
-2006-09-23  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * icomplete.el (icomplete-with-completion-tables): List of
-       specialized completion tables with which icomplete should
-       operate.  Include the new `internal-complete-buffer', so icomplete
-       works with interactive buffer-selection.
-       (icomplete-simple-completing-p): Add acceptance of specialized
-       completion tables listed in icomplete-with-completion-tables.
-
-2006-09-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * frame.el (focus-follows-mouse): Set default to nil on Mac.
-
-       * startup.el (command-line): Use `custom-reevaluate-setting' for
-       `focus-follows-mouse'.
-
-2006-09-22  Richard Stallman  <rms@gnu.org>
-
-       * cus-edit.el (custom-buffer-create-internal): In `emacs -q',
-       explain why Save is not available.
-
-2006-09-22  Juanma Barranquero  <lekktu@gmail.com>
-
-       * woman.el (woman0-so): Use `let*', not `let'.
-       (woman-horizontal-line): Remove unbalanced parenthesis.
-
-2006-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * woman.el: Make sure all the end-of-region markers we use have
-       a non-nil insertion-type.
-       (woman0-so): Move things around so we can use copy-marker.
-       (woman0-roff-buffer, woman2-process-escapes-to-eol, woman2-roff-buffer):
-       Adjust marker type.
-       (woman2-process-escapes): Check marker type.
-       (woman-horizontal-line): Dispense with the use of a marker.
-
-2006-09-22  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-lang.el: Add Greek letters to math-variable-table
-       property of tex.
-
-2006-09-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (save-some-buffers-action-alist): Display diff in view-mode.
-
-2006-09-22  Masatake YAMATO  <jet@gyve.org>
-
-       * add-log.el (add-log-current-defun): Use `forward-sexp'
-       instead of `forward-word' to pick c++::symbol.
-       Reported by Guanpeng Xu <herberteuler@hotmail.com>.
-
-2006-09-22  Kenichi Handa  <handa@m17n.org>
-
-       * bindings.el: Fix setting self-insert-command for multibyte
-       characters in global-map.
-
-2006-09-21  David Kastrup  <dak@gnu.org>
-
-       * mouse.el (mouse-posn-property): Fix typo for `event-start' in
-       doc string.
-
-2006-09-21  Kenichi Handa  <handa@m17n.org>
-
-       * language/european.el ("Latin-1"): Add windows-1252 to
-       coding-priority.
-       ("German"): Likewise.
-
-2006-09-21  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/cl-macs.el (member*): Use memql instead of complex code.
-       Suggested by Miles Bader.
-
-       * emacs-lisp/cl.el (pushnew): Rework 2006-09-10 change.  Use memql
-       instead of add-to-list in the simple case.
-
-2006-09-20  Kenichi Handa  <handa@m17n.org>
-
-       * isearch.el (isearch-process-search-char): Cancel the previous change.
-       (isearch-search-string): New function.
-       (isearch-search): Use isearch-search-string.
-       (isearch-lazy-highlight-search): Likewise.
-
-2006-09-20  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * lpr.el (lpr-page-header-switches): Insert `*' at beginning of doc
-       string to become an option.
-
-2006-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * files.el (find-buffer-visiting): Don't get fooled by a nil inode.
-
-2006-09-20  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (line-move-partial): Call pos-visible-in-window-p with
-       position t instead of trying both window-end and window-end - 1.
-
-2006-09-20  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-scan-tags): Find end of subtrees also in
-       hidden trees.
-
-2006-09-20  David Kastrup  <dak@gnu.org>
-
-       * mouse.el (mouse-posn-property): Improve doc string.
-       (mouse-on-link-p): Change buffers for function calls on links.
-
-       * menu-bar.el (clipboard-yank): Bomb out in interactive use if
-       buffer is read-only.
-
-2006-09-20  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-unprotected): Let inhibit-read-only only when
-       buffer-read-only isn't set.
-       (allout-annotate-hidden): Enable topic annotation during copies even
-       when the buffer is read-only, eg for topic copies.  Ensure that the loop
-       advances, even when the span extends beyond the deletion region.
-       (allout-toggle-subtree-encryption): Use allout-structure-added-hook
-       rather than allout-exposure-changed-hook, as a stronger assertion.
-       (allout-keybindings-list): Add bindings for
-       allout-copy-line-as-kill and allout-copy-topic-as-kill.
-       (allout-copy-line-as-kill, allout-copy-topic-as-kill):
-       Copy wrappers for allout-kill-line and allout-kill-topic.
-       (allout-listify-exposed): Position correctly to accumulate lines.
-
-2006-09-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (line-move-1): Escape field boundaries occurring
-       exactly at point.  Update goal column if constrained to a field.
-       (line-move-finish): Escape field boundaries occurring exactly at point.
-
-2006-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mouse.el (mouse-on-link-p): Tentatively fix last change.
-       (mouse-drag-vertical-line): Remove unused var `wconfig'.
-
-2006-09-19  Kim F. Storm  <storm@cua.dk>
-
-       * help.el (describe-key-briefly, describe-key): Simplify printing
-       of descriptions by using format and %S.  Fix "is undefined"
-       messages to say "at that spot" for mouse events.
-
-       * simple.el (line-move-partial): Optimize.  Try window-line-height
-       before posn-at-point to get vpos of current line.
-
-2006-09-18  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper.el: Bump up version/date of update to reflect the substantial
-       changes done in August 2006.
-
-       * viper-cmd (viper-next-line-at-bol): Make sure button-at, push-button
-       are defined.
-
-       * ediff-util.el (ediff-add-to-history): New function.
-
-       * ediff.el: Use ediff-add-to-history instead of add-to-history.
-
-2006-09-18  Wolfgang Jenkner  <wjenkner@inode.at>  (tiny change)
-
-       * textmodes/conf-mode.el (conf-space-mode): Doc fix.
-       Delete duplicate make-local-variable form.
-       (conf-space-keywords): Add autoload cookie.
-       Fix typo (`keywords', not `keyword').
-
-2006-09-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * cus-start.el (all): Rename x-gtk-show-chooser-help-text to
-       x-gtk-file-dialog-help-text.  Rename x-use-old-gtk-file-dialog
-       to x-gtk-use-old-file-dialog.
-
-2006-09-18  Richard Stallman  <rms@gnu.org>
-
-       * wid-edit.el (widget-button-click): Handle non-mouse-motion events
-       that might come in during mouse tracking.
-
-2006-09-18  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (line-move-partial): Rework 2006-09-15 change to use
-       new window-line-height function.  Further optimize by not calling
-       pos-visible-in-window-p for window-end when window-line-height
-       returns useful information.
-
-2006-09-16  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/conf-mode.el (conf-mode-map): Use conf-space-keywords cmd.
-       (conf-space-mode): Don't handle prefix arg.
-       Delete conf-space-keywords-override code.
-       Use add-hook.
-       (conf-space-keywords): New command.
-       (conf-space-mode-internal): Be careful with imenu-generic-expression.
-       Delete conf-space-keywords-override code.
-       (conf-space-keywords-alist): Doc fix.
-       (conf-space-font-lock-keywords): Doc fix.
-       (conf-space-keywords-override): Var deleted.
-
-2006-09-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * startup.el (fancy-splash-screens): Don't switch to the scratch
-       buffer; it may not be the next buffer.
-
-2006-09-16  Romain Francoise  <romain@orebokech.com>
-
-       * saveplace.el (load-save-place-alist-from-file): Use expanded name
-       in both messages.
-
-2006-09-16  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>
-
-       * progmodes/python.el (python-preoutput-filter):
-       Fix arg order to string-match.
-
-2006-09-16  Richard Stallman  <rms@gnu.org>
-
-       * obsolete/fast-lock.el (fast-lock-cache-data): Provide 2nd arg to
-       font-lock-compile-keywords.
-
-       * font-lock.el (font-lock-compile-keywords): Rename optional arg
-       to SYNTACTIC-KEYWORDS and reverse the sense.  All callers changed.
-
-2006-09-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * cus-start.el (all): Add x-gtk-show-chooser-help-text.
-
-       * select.el (xselect-convert-to-string): If UTF8_STRING is requested
-       and the data doesn't look like UTF8, send STRING instead.
-
-2006-09-16  Agust\e,Am\e(Bn Mart\e,Am\e(Bn  <agustin.martin@hispalinux.es>
-
-       * textmodes/flyspell.el (flyspell-check-region-doublons):
-       New function to detect duplicated words.
-       (flyspell-large-region): Use it.
-
-2006-09-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (line-move-to-column): Revert 2006-08-03 change.
-
-2006-09-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * help.el (describe-prefix-bindings): Use let, not let*.
-
-2006-09-16  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-regexp, allout-line-boundary-regexp)
-       (allout-bob-regexp): Correct grouping and boundaries to fix
-       backwards traversal.
-       (allout-depth-specific-regexp, allout-depth-one-regexp):
-       New versions that exploit \\{M\\} regexp syntax, to avoid geometric or
-       worse time in allout-ascend.
-       (allout-doublecheck-at-and-shallower): Identify depth threshold
-       below which topics are checked for and disqualified by containment
-       discontinuities.
-       (allout-hotspot-key-handler): Correctly handle multiple-key
-       strokes.  Remove some unused variables.
-       (allout-mode-leaders): Clarify that mode-specific comment-start
-       will be used.
-       (set-allout-regexp): Correctly regexp-quote allout regexps to
-       properly accept alternative header-leads and primary bullets with
-       regexp-specific characters (eg, C "/*", mathematica "(*").
-       Include new regular expressions among those configured.
-       (allout-infer-header-lead-and-primary-bullet):
-       Rename allout-infer-header-lead.
-       (allout-recent-depth): Manifest as a variable as well as a function.
-       (allout-prefix-data): Simplify into an inline instead of a macro,
-       assuming current match data rather than being explicitly passed
-       it.  Establish allout-recent-depth value as well as
-       allout-recent-prefix-beginning and allout-recent-prefix-end.
-       (allout-aberrant-container-p): True when an item's immediate
-       offspring discontinuously contained.  Useful for disqualifying
-       unintended topic prefixes, likely at low depths.
-       (allout-goto-prefix-doublechecked): Elaborate version of
-       allout-goto-prefix which disqualifies aberrant pseudo-items.
-       (allout-pre-next-prefix): Layer on top of lower-level routines, to
-       get disqualification of aberrant containers.
-       (allout-end-of-prefix, allout-end-of-subtree): Disqualify aberrant
-       containers.
-       (allout-beginning-of-current-entry): Position at start of buffer
-       when in container (depth 0) entry.
-       (nullify-allout-prefix-data): Invalidate allout-recent-* prefix data.
-       (allout-current-bullet): Strip text properties.
-       (allout-get-prefix-bullet): Use right match groups.
-       (allout-beginning-of-line, allout-next-heading):
-       Disqualify aberrant containers.
-       (allout-previous-heading): Disqualify aberrant containers, and
-       change to regular (rather than inline) function, to allow
-       self-recursion.
-       (allout-get-invisibility-overlay): Increment so progress is made
-       when the first overlay is not the sought one.
-       (allout-end-of-prefix): Disqualify aberrant containers.
-       (allout-end-of-line): Cycle something like allout-beginning-of-line.
-       (allout-mode): Make allout-old-style-prefixes (ie, enabling use with
-       outline.el outlines) functional again.  Change the primary bullet
-       along with the header-lead - level 1 new-style bullets now work.
-       Engage allout-before-change-handler in mainline Emacs, not just
-       XEmacs, to do undo handling.
-       (allout-before-change-handler): Expose undo changes occurring in
-       hidden regions.  Use allout-get-invisibility-overlay instead of
-       reimplementing it inline.
-       (allout-chart-subtree): Use start rather than end of prefix in
-       charts.  Use allout-recent-depth variable.
-       (allout-chart-siblings): Disqualify aberrant topics.
-       (allout-beginning-of-current-entry): Position correctly.
-       (allout-ascend): Use new allout-depth-specific-regexp and
-       allout-depth-one-regexp for linear instead of O(N^2) or worse
-       behavior.
-       (allout-ascend-to-depth): Depend on allout-ascend, rather than
-       reimplementing an algorithm.
-       (allout-up-current-level): Depend on allout-ascend, rather than
-       reimplementing an algorithm.  Return to start-point if we fail.
-       (allout-descend-to-depth): Use allout-recent-depth variable
-       instead of function.
-       (allout-next-sibling): On traversal of numerous intervening
-       topics, resort to economical allout-next-sibling-leap.
-       (allout-next-sibling-leap): Specialized version of
-       allout-next-sibling that uses allout-ascend cleverly, to depend on
-       a regexp search to leap large numbers of contained topics, rather
-       than arbitrarily many one-by-one traversals.
-       (allout-next-visible-heading): Disqualify aberrant topics.
-       (allout-previous-visible-heading): Position consistently when
-       interactive.
-       (allout-forward-current-level): Base on allout-previous-sibling
-       rather than (differently) reimplmenting the algorithm.  Remove some
-       unused variables.
-       (allout-solicit-alternate-bullet): Present default choice stripped
-       of text properties.
-       (allout-rebullet-heading): Use bullet stripped of text properties.
-       Register changes using allout-exposure-change-hook.
-       Disregard aberrant topics.
-       (allout-shift-in): With universal-argument, make topic a peer of
-       it's former offspring.  Simplify the code by separating out
-       allout-shift-out functionality.
-       (allout-shift-out): With universal-argument, make offspring peers
-       of their former container, and its siblings.  Implement the
-       functionality here, rather than inappropriately muddling the
-       implementation of allout-shift-in.
-       (allout-rebullet-topic): Respect additional argument for new
-       parent-child separation function.
-       (allout-yank-processing): Use allout-ascend directly.
-       (allout-show-entry): Disqualify aberrant topics.
-       (allout-show-children): Handle discontinuous children gracefully,
-       extending the depth being revealed to expose them and posting a
-       message indicating the situation.
-       (allout-show-to-offshoot): Remove obsolete and incorrect comment.
-       Leave cursor in correct position.
-       (allout-hide-current-subtree): Use allout-ascend directly.
-       Disqualify aberrant topics.
-       (allout-kill-line, allout-kill-topic): Preserve exposure layout in
-       a way that the yanks can restore it, as used to happen.
-       (allout-yank-processing): Restore exposure layout as recorded by
-       allout-kill-*, as used to happen.
-       (allout-annotate-hidden, allout-hide-by-annotation): New routines
-       for preseving and restoring exposure layout across kills.
-       (allout-toggle-subtree-encryption): Run allout-exposure-change-hook.
-       (allout-encrypt-string): Strip text properties.
-       Rearranged order and outline-headings for some of the
-       miscellaneous functions.
-       (allout-resolve-xref): No need to quote the error name in the
-       condition-case handler section.
-       (allout-flatten): Classic recursive (and recursively intensive,
-       without tail-recursion) list-flattener, needed by allout-shift-out
-       when confronted with discontinuous children.
-
-2006-09-16  Jason Rumney  <jasonr@gnu.org>
-
-       * dnd.el (dnd-open-remote-file-function): Use dnd-open-local-file
-       on ms-windows.
-       (dnd-open-unc-file): Remove.
-       (dnd-open-local-file): Mention in doc string that it also handles
-       remote files if the system natively supports unc file-names.
-
-2006-09-15  Kim F. Storm  <storm@cua.dk>
-
-       * help.el (describe-key): Handle C-h k in *Help* buffer; collect
-       all necessary information about the event before erasing *Help*.
-
-       * simple.el (line-move-partial): Use window-line-visiblity to
-       quickly check whether last line is partially visible, and only do
-       the hard (and slow) part in that case.
-
-2006-09-15  Jay Belanger  <belanger@truman.edu>
-
-       * COPYING: Replace "Library Public License" by "Lesser Public
-       License" throughout.
-
-2006-09-15  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el (x-menu-bar-open): New function for F10.
-
-2006-09-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist):
-       Disallow filenames containing " -" to avoid confusion with libtool
-       compilation messages.  Suggested by Stefan Monnier.
-
-2006-09-15  David Kastrup  <dak@gnu.org>
-
-       * mouse-sel.el (mouse-sel-follow-link-p): Use event position
-       instead of buffer position for `mouse-on-link-p'.
-
-       * mouse.el (mouse-posn-property): New function looking up the
-       properties at a click position in overlays and text properties in
-       either buffer or strings.
-       (mouse-on-link-p): Use `mouse-posn-property' to streamline lookup
-       of both `follow-link' as well as `mouse-face' properties.
-       (mouse-drag-track): Check `mouse-on-link-p' on event position, not
-       buffer position.
-
-       * help.el (describe-key-briefly): When reading a down-event on
-       mode lines or scroll bar, swallow the following up event, too.
-       Use the new mouse sensitity of `key-binding' for lookup.
-       (describe-key): The same here.
-
-2006-09-15  Juanma Barranquero  <lekktu@gmail.com>
-
-       * play/life.el (life-patterns): Add a few more interesting patterns.
-       (life-setup): Force `show-trailing-whitespace' to nil.
-
-2006-09-14  Richard Stallman  <rms@gnu.org>
-
-       * startup.el (fancy-splash-text): Change text to improve alignment.
-       (fancy-splash-screens): Don't set non-standard tab width.
-       Bind cursor-type temporarily, and make it easy to patch to
-       preserve the splash buffer.
-       (normal-splash-screen, fancy-splash-tail): Spell out "Meta-x".
-       (fancy-splash-screens): Display echo-area message explicitly.
-       Don't set fancy-splash-help-echo.
-
-       * simple.el (line-number-mode): Group mode-line instead of
-       editing-basics.
-       (column-number-mode, size-indication-mode): Likewise.
-
-       * faces.el (mode-line-faces): Group mode-line instead of modeline.
-
-       * time.el (display-time): Group mode-line instead of modeline.
-
-       * cus-edit.el (mode-line): Rename from modeline.  All uses changed.
-
-2006-09-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * startup.el (fancy-splash-text): Move editing instructions to
-       fancy-splash-head.
-       (fancy-splash-head): Issue editing instructions.
-       (fancy-splash-screens): Fixup whitespace.
-
-2006-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * bindings.el (mode-line-buffer-identification-keymap):
-       Remove duplicate line.
-
-2006-09-14  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * ido.el (ido-ignore-item-p): Allow any kind of functions in
-       ignore lists.
-
-2006-09-14  Kim F. Storm  <storm@cua.dk>
-
-       * jit-lock.el (jit-lock-fontify-again): New function.
-       (jit-lock-fontify-now): Use it instead of lambda form.
-
-2006-09-13  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/flyspell.el (flyspell-word, flyspell-correct-word)
-       (flyspell-auto-correct-word): Make ispell-filter local to these
-       functions.  Check that ispell-filter has new stuff before calling
-       ispell-parse-output.
-
-2006-09-13  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (line-move-partial): Optimize.
-
-2006-09-13  Richard Stallman  <rms@gnu.org>
-
-       * thingatpt.el (thing-at-point-bounds-of-url-at-point):
-       Delete spurious backquote.
-
-2006-09-07  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-print): Fix last change.
-
-2006-09-12  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (calc-dispatch): Remove unnecessary `sit-for'.
-
-2006-09-07  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-scroll-show-maximum-output): Rename from
-       rcirc-show-maximum-output.
-       (rcirc-mode): Remove window-scroll-function hook.
-       (rcirc-scroll-to-bottom): Remove function.
-       (rcirc-print): Recenter so point stays at the bottom of the window
-       if point was already there.
-
-2006-09-12  Paul Eggert  <eggert@cs.ucla.edu>
-
-       * comint.el (comint-exec-1): Set EMACS to the full name of Emacs,
-       not to "t".
-       * progmodes/compile.el (compilation-start): Likewise.
-       * progmodes/idlwave.el (idlwave-rescan-asynchronously):
-       Don't use expand-file-name on invocation-directory, since this
-       might mishandle special characters in invocation-directory.
-
-2006-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs-defs.el: Remove * in defcustom's docstrings.
-
-2006-09-12  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/compile.el (compilation-directory-properties):
-       Doc fix for help-echo.
-
-2006-09-12  Lars Hansen  <larsh@soem.dk>
-
-       * desktop.el (desktop-read): Add comment.
-
-2006-09-12  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (next-error-highlight, next-error-highlight-no-select):
-       Fix spelling error.
-
-       * subr.el (sit-for): Rework to use input-pending-p and cond.
-       Return nil input is pending on entry also for SECONDS <= 0.
-       (while-no-input): Use input-pending-p instead of sit-for.
-
-2006-09-11  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (next-error-highlight, next-error-highlight-no-select):
-       Fix custom type and doc strings.
-
-2006-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * diff-mode.el (diff-apply-hunk-to-backup-file): New var.
-       (diff-apply-hunk): Use it to ask for confirmation.
-
-2006-09-11  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * emacs-lisp/cl.el (pushnew): Add missing `,'.
-
-2006-09-11  David Kastrup  <dak@gnu.org>
-
-       * help.el (string-key-binding, describe-key-briefly)
-       (describe-key): Remove `string-key-binding' and its callers since
-       `key-binding' already caters for the proper lookup now.
-
-2006-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/cfengine.el (cfengine-font-lock-syntactic-keywords): Newvar.
-       (cfengine-mode): Use it.  Fix \ syntax to be like /.
-
-       * bindings.el (mode-line-buffer-identification-keymap):
-       Move initialization into declaration.
-
-2006-09-10  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-edit-input, ido-complete, ido-take-first-match)
-       (ido-push-dir-first, ido-kill-buffer-at-head, ido-exhibit)
-       (ido-delete-file-at-head): Pass head of ido-matches through ido-name
-       in case of merged directories.  Reported by Micha\e,Ak\e(Bl Cadilhac.
-
-2006-09-10  Richard Stallman  <rms@gnu.org>
-
-       * dired-aux.el: Handle errors in recursive copy usefully.
-       (dired-create-files-failures): New variable.
-       (dired-copy-file): Remove condition-case.
-       (dired-copy-file-recursive): Check for errors on all file
-       operations, and add them to dired-create-files-failures.
-       Check file file-date-erorr here too.
-       (dired-create-files): Check dired-create-files-failures
-       and report those errors too.
-
-       * emacs-lisp/cl.el (pushnew): Use add-to-list when convenient.
-
-       * subr.el (add-to-list): New argument COMPARE-FN.
-
-2006-09-10  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * filecache.el (file-cache-add-directory)
-       (file-cache-add-directory-list, file-cache-add-file)
-       (file-cache-add-directory-using-find)
-       (file-cache-add-directory-using-locate)
-       (file-cache-add-directory-recursively): Add autoloads.
-
-2006-09-09  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/conf-mode.el (conf-space-mode):
-       Use hack-local-variables-hook instead of calling hack-local-variables.
-       (conf-space-keywords-override): New variable.
-       (conf-space-mode-internal): New subroutine.  Reinit Font Lock mode.
-       (conf-space-mode): Always make conf-space-keywords and
-       conf-space-keywords-override local.
-       Call conf-space-mode-internal directly as well as via hook.
-
-2006-09-09  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>  (tiny change)
-
-       * progmodes/python.el (python-font-lock-keywords): Add `self' and other
-       quasi-keywords.
-
-2006-09-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/python.el: Quieten the compiler about hippie-expand vars.
-       (python-send-string): Be slightly more careful about adding \n.
-
-       * startup.el (normal-splash-screen): Don't display the buffer if we'll
-       kill it right away anyway.
-
-2006-09-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * international/codepage.el (cp850-decode-table): Fix a few codes.
-       (cp858-decode-table): New variable.
-
-2006-09-09  Toby Allsopp  <Toby.Allsopp@navman.com>  (tiny change)
-
-       * net/ldap.el (ldap-search-internal): Doc fix.
-
-2006-09-09  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * play/life.el (life-display-generation): Test for input manually if
-       `sleeptime' is negative or null.
-
-       * lpr.el (lpr-page-header-switches): Page title switch is one of them.
-       (print-region-1): Substitute `%s' with the page title.
-
-2006-09-09  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * locate.el (locate-current-search): New variable.
-       (locate): Set buffer local value.  Use current buffer if it is
-       in Locate mode.
-       (locate-mode): Disable undo here.
-       (locate-do-setup): Use locate-current-filter from buffer to be killed.
-       (locate-update): Use locate-current-search and locate-current-filter.
-
-2006-09-08  David Kastrup  <dak@gnu.org>
-
-       * desktop.el (desktop-read): When loading a desktop, disable
-       saving it while the load progresses, and switch off a pending lazy
-       load by calling `desktop-lazy-abort'.
-
-2006-08-27  Martin Rudalics  <rudalics@gmx.at>
-
-       * window.el (mouse-autoselect-window-timer)
-       (mouse-autoselect-window-position)
-       (mouse-autoselect-window-window)
-       (mouse-autoselect-window-now): New vars.
-       (mouse-autoselect-window-cancel)
-       (mouse-autoselect-window-select)
-       (mouse-autoselect-window-start): New functions.
-       (handle-select-window): Call `mouse-autoselect-window-start' when
-       delayed window autoselection is enabled.
-
-       * cus-start.el (mouse-autoselect-window): Handle delayed window
-       autoselection.
-
-       * emacs-lisp/eldoc.el: Add `handle-select-window' to the set of
-       commands after which it is allowed to print in the echo area.
-
-2006-09-08  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/fill.el (adaptive-fill-regexp): Don't match `(1)' or `1.'
-
-       * mail/rmail.el (rmail-get-new-mail): Say whether all msgs are spam.
-       (rmail-convert-to-babyl-format): Don't record undo, leave list empty.
-
-       * emacs-lisp/timer.el (timer-create, timer-activate): Doc fixes.
-       (cancel-timer-internal): Add doc string.
-       (cancel-function-timers): Doc fix.
-       (with-timeout-handler, timer-event-last*): Add doc strings.
-
-       * emacs-lisp/bindat.el (bindat-unpack): Doc fix.
-
-       * files.el (risky-local-variable-p): Match ...-bindat-spec.
-
-       * dired.el (dired-log-summary): Add doc string.
-
-       * cus-edit.el (custom-menu-create): Bind deactivate-mark here.
-       (custom-group-menu-create): Not here.
-
-2006-09-08  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-dblock-write:clocktable): Avoid infinite loop.
-
-2006-09-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (show-hide-font-panel): New HI command ID symbol.
-       (mac-apple-event-map): Define its handler.
-
-2006-09-07  Toby Allsopp  <Toby.Allsopp@navman.com>  (tiny change)
-
-       * net/ldap.el (ldap-search-internal): Handle `auth' key.
-
-2006-09-07  Magnus Henoch  <mange@freemail.hu>
-
-       * net/rcirc.el (rcirc-activity-string): Don't quote value in case
-       clause.
-
-2006-09-07  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * info.el (Info-index): Bind completion-ignore-case.
-
-2006-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/prolog.el (inferior-prolog-flavor): New var left out of
-       previous commit.
-       (inferior-prolog-guess-flavor): New fun left out of previous commit.
-       (prolog-consult-region-and-go): Don't hard code "*prolog*" and don't
-       burp in dedicated windows.
-       (inferior-prolog-self-insert-command): New command.
-       (inferior-prolog-mode-map): Use it.
-
-2006-09-07  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * international/latexenc.el (latex-inputenc-coding-alist): Add cp858.
-
-       * international/code-pages.el: Add cp858.
-
-2006-09-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * dnd.el: Fix bootstrapping.
-
-2006-09-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
-       (dnd-open-remote-url): New function.
-       (dnd-open-remote-file-function): Set to dnd-open-remote-url if
-       not windows-nt.
-
-2006-09-07  Jason Rumney  <jasonr@gnu.org>
-
-       * dnd.el (dnd-open-remote-file-function): New variable.
-       (dnd-open-unc-file): New function.
-       (dnd-open-file): Call dnd-open-remote-file-function if set.
-
-2006-09-06  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-gpg.el (pgg-gpg-process-region): Encode passphrase with
-       pgg-passphrase-coding-system rather than locale-coding-system.
-       * pgg-def.el (pgg-passphrase-coding-system): New user option.
-
-2006-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/prolog.el: Remove * in docstrings.
-       (prolog-program-name): Add SWI prolog.
-       (prolog-mode-menu): New menu.
-       (prolog-mode): Set comment-add.
-       (prolog-indent-line): Simplify.  Use indent-line-to.
-       (inferior-prolog-buffer): New var.
-       (inferior-prolog-run, inferior-prolog-process): New funs.
-       (run-prolog, switch-to-prolog): Rewrite, using them.
-       (prolog-consult-region): Use inferior-prolog-buffer.
-       (inferior-prolog-load-file): New function.
-       (prolog-mode-map): Add bindings for load-file and switch-to-prolog.
-
-       * textmodes/fill.el (fill-single-word-nobreak-p): Allow breaking before
-       last word, if it's not the end of the paragraph.
-
-       * files.el (abbreviate-file-name): Don't mistakenly match newlines in
-       file name.
-
-2006-09-06  Ralf Angeli  <angeli@caeruleus.net>
-
-       * frame.el (display-mm-dimensions-alist): New defcustom.
-       (display-mm-height, display-mm-width): Use it.
-
-2006-09-06  Simon Josefsson  <jas@extundo.com>
-
-       * mail/smtpmail.el (smtpmail-starttls-credentials): Doc fix.
-
-2006-09-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-list-children-regexp)
-       (gdb-var-list-children-regexp-1): Tweak regexps to catch full
-       string values.
-
-2006-09-06  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (line-move-partial): New function to do vscrolling for
-       partially visible images / tall lines.  Rewrite based on code
-       previously in line-move.  Simplify backwards vscrolling.
-       (line-move): Use it.  Simplify.
-
-2006-09-05  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua--pre-command-handler-1): Rewrite.
-
-2006-09-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist):
-       Process the `gcc-include' after the `gnu' rule.
-
-2006-09-05  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-visit-buffer): Use buffer name if buffer arg is a buffer.
-
-2006-09-05  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg.el (pgg-clear-string): Alias to clear-string for backward
-       compatibility.
-
-       * pgg-gpg.el (pgg-gpg-process-region): Avoid display blinking with
-       inhibit-redisplay; encode passphrase with locale-coding-system.
-
-2006-09-04  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Add more C-M- bindings.
-
-2006-09-05  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-list-children-regexp)
-       (gdb-var-list-children-regexp): Make type field optional.
-
-       * progmodes/gud.el (gud-speedbar-buttons): Allow for no type
-       e.g public, protected in C++.
-
-2006-09-04  John Paul Wallington  <jpw@pobox.com>
-
-       * simple.el (completion-show-help): New defcustom.
-       (completion-setup-function): Heed it.
-
-2006-09-04  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Add C-M- bindings.
-
-2006-09-04  Richard Stallman  <rms@gnu.org>
-
-       * mail/rmail-spam-filter.el (rsf-scanning-messages-now): Doc fix.
-       (rsf-min-region-to-spam-list): Doc fix.
-       (rsf-add-content-type-field): Doc fix.
-
-       * simple.el (kill-region): Explicitly test there is a region.
-
-2006-09-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mail/feedmail.el (feedmail-buffer-to-sendmail): Look for
-       sendmail in several common directories.
-
-       * mail/sendmail.el (sendmail-program): Moved here from paths.el.
-
-       * paths.el (sendmail-program): Removed.
-
-2006-09-04  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-gpg.el (pgg-gpg-process-region): Revert two patches from Satyaki
-       Das.  http://article.gmane.org/gmane.emacs.gnus.general/49947
-       http://article.gmane.org/gmane.emacs.gnus.general/50457
-
-2006-09-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (custom-group-menu-create): Avoid deactivating the
-       mark after running the menu filter.
-
-2006-09-03  Juri Linkov  <juri@jurta.org>
-
-       * international/quail.el (quail-defrule-internal): Add a check
-       if a key is a vector.
-
-2006-09-02  Juri Linkov  <juri@jurta.org>
-
-       * man.el (Man-topic-history): New variable.
-       (man): Use it.
-
-       * woman.el (woman-topic-history): Change defvar to defvaralias
-       for symbol `Man-topic-history'.
-
-       * shell.el (shell-filter-ctrl-a-ctrl-b): Check if
-       `comint-last-output-start' is a marker by using `markerp' and
-       check if it has a position by using `marker-position', and use
-       this position for `goto-char'.
-
-       * international/quail.el (quail-defrule-internal): Add missing
-       `error' call for null key.
-
-2006-09-02  Ryan Yeske  <rcyeske@gmail.com>
-
-       * rcirc.el (rcirc-keywords): New variable.
-       (rcirc-bright-nicks, rcirc-dim-nicks): New variables.
-       (rcirc-bright-nick-regexp, rcirc-dim-nick-regexp): Remove
-       variables.
-       (rcirc-responses-no-activity): New function.
-       (rcirc-handler-generic): Check for responses in above.
-       (rcirc-process-command): Add ?: character to arguments of raw
-       server commands.
-       (rcirc-format-response-string): Use `rcirc-bright-nicks' and
-       `rcirc-dim-nicks'.
-       (rcirc-gray-toggle): Remove unused variable.
-       (rcirc-print): Remove some tracking logic, which is moved into
-       markup functions.
-       (rcirc-activity-types): Was `rcirc-activity-type', now a list of
-       types.
-       (rcirc-activity-string): Look for 'keyword in activity-types.
-       (rcirc-window-configuration-change): Don't erase overlay-arrow
-       unnecessarily.
-       (rcirc-add-or-remove): New function.
-       (rcirc-cmd-ignore): Use it.
-       (rcirc-message-leader): Remove unused function.
-       (rcicr-cmd-bright, rcirc-cmd-dim, rcirc-cmd-keyword): New commands.
-       (rcirc-add-face): New function.
-       (rcirc-facify): Use rcirc-add-face.
-       (rcirc-url-regexp): Add parens.
-       (rcirc-map-regexp): Remove function.
-       (rcirc-mangle-regexp): Remove function.
-       (rcirc-markup-text-functions): New variable.
-       (rcirc-markup-text): New function (replaces `rcirc-mangle-text').
-       (rcirc-markup-body-text, rcirc-markup-attributes)
-       (rcirc-markup-my-nick, rcirc-markup-urls, rcirc-markup-keywords)
-       (rcirc-markup-bright-nicks): New markup handler functions.
-       (rcirc-nick-in-message-full-line): New face.
-       (rcirc-track-nick): Rename from `rcirc-mode-line-nick'.
-       (rcirc-track-keyword, rcirc-url, rcirc-keyword): New faces.
-
-2006-09-02  Martin Rudalics  <rudalics@gmx.at>
-
-       * cus-start.el (hscroll-margin, hscroll-step)
-       (mode-line-in-non-selected-windows, mouse-autoselect-window)
-       (x-use-underline-position-properties): Change version to "22.1"
-       since they will appear there for the first time.
-
-2006-09-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * imenu.el (imenu-update-menubar): Use buffer-chars-modified-tick.
-
-2006-08-31  Richard Stallman  <rms@gnu.org>
-
-       * cus-edit.el (custom-save-variables): Slight cleanup.
-       (Custom-no-edit): Renamed from custom-no-edit.
-       (Custom-newline): Renamed from custom-newline.
-       (custom-mode-map): Use new names.
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Reference manual
-       about customization, rather than M-x customize, in the doc string
-       made for the defcustom.
-
-       * emacs-lisp/trace.el (trace-function-background): Doc fix.
-
-2006-08-31  Romain Francoise  <romain@orebokech.com>
-
-       * dired-x.el (dired-guess-shell-alist-default): Update.
-
-2006-08-31  Michael Mauger  <mmaug@yahoo.com>
-
-       * custom.el (custom-theme-set-variables): Autoload packages before
-       sorting the variables.
-
-2006-08-30  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-cmd.el (viper-special-read-and-insert-char): Convert events to
-       chars if XEmacs.
-       (viper-after-change-undo-hook): Check if undo-in-progress is bound.
-
-2006-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/python.el (python-eldoc-function): Re-enable quit while
-       waiting for process.
-
-2006-08-30  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-string-to-utxt): If adjustment for MacJapanese
-       results in ASCII-only string, encode original one directly.
-
-2006-08-29  Romain Francoise  <romain@orebokech.com>
-
-       * startup.el (normal-splash-screen, fancy-splash-screens):
-       Make buffer read-only and arrange to enter view mode if necessary.
-
-2006-08-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * hl-line.el (hl-line): New face.
-       (hl-line-face): Use it.
-
-       * image-mode.el (image-mode): Fix last fix.
-       Suggested by Kim F. Storm.
-
-2006-08-29  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.54.
-
-       * net/tramp.el (tramp-convert-file-attributes): Call `eql' instead
-       of `=', because `tramp-get-remote-gid' might not always return an
-       integer when expected.
-       (tramp-register-file-name-handlers): `partial-completion-mode' is
-       unknown to XEmacs.
-       (tramp-time-diff): Don't use `floor', it might fail for large
-       differences.
-       (tramp-handle-make-auto-save-file-name): For Emacs 21, set
-       `tramp-auto-save-directory' if unset in order to guarantee unique
-       auto-save file names.
-
-2006-08-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-mode.el (image-mode): Display image as text on a terminal.
-
-2006-08-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/python.el (python-send-command): Simplify.
-       (run-python): Don't generate a new buffer unless `new' was specified.
-       Make sure we send `import emacs' to the proper process.
-
-       * progmodes/python.el (python-send-command): Don't wait for the command
-       to terminate.  Don't fiddle with compilation-parsing-end.
-
-2006-08-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/checkdoc.el (checkdoc-file-comments-engine):
-       Insert commentary after first line summary.
-
-       * woman.el (woman-follow): New function, based on `man-follow'.
-       (woman-mode-map): Use it.
-
-       * ibuffer.el (ibuffer-do-sort-by-recency): Perform full update
-       since ibuffer-do-sort-by-recency does not define a sorter.
-
-2006-08-28  Kim F. Storm  <storm@cua.dk>
-
-       * find-dired.el (find-dired): Use shell-quote-argument to properly
-       escape ( and ) args.  Also use it on {} and ; args in default
-       value of find-ls-option string.
-       (find-grep-dired): Use shell-quote-argument on {} and ; args.
-
-2006-08-27  Michael Olson  <mwolson@gnu.org>
-
-       * emacs-lisp/tq.el: Small grammar fix in comments.
-       (tq-enqueue): Check for existence of queue rather than the
-       head queue item's question, which was a no-op.
-       (tq-filter, tq-process-buffer): Make sure the process buffer
-       exists before making it the current buffer.
-
-2006-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-apple-event-map): Rename hicommand to hi-command.
-       (mac-dnd-drop-data): Apply 2006-08-22 change for x-dnd-drop-data.
-       (special-event-map): Apply 2006-08-16 change for x-win.el.
-
-2006-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/python.el (python-send-receive): Wait in the
-       process's buffer so as to check the right buffer-local variables.
-
-2006-08-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/checkdoc.el: Remove * in defcustoms.
-       (defgroup checkdoc): Move to beginning.
-
-       * progmodes/python.el (python-preoutput-skip-next-prompt): New var.
-       (python-preoutput-continuation): Remove.
-       (python-preoutput-filter): Simplify correspondingly.
-       Remove handling of _emacs_ok.  Make sure we skip _emacs_out's prompts.
-       Loop around to catch embedded _emacs_out output.
-       (run-python): Send the import&print command on a single line.
-       (python-send-command): Send command&print on a single line.
-       (python-send-string): Only add double \n if needed.
-       (python-send-receive): Loop until the result comes.
-       (python-mode-running): Defvar it.
-       (python-setup-brm): Remove unused var `menu'.
-       Only bind py-mode-map and `features' around brm-init.
-       (python-calculate-indentation): Remove unused var `point'.
-       (python-beginning-of-defun): Remove unused var `def-line'.
-
-2006-08-25  Richard Stallman  <rms@gnu.org>
-
-       * kmacro.el (kmacro-repeat-on-last-key): Doc fix.
-
-2006-08-25  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper.el (viper-set-hooks): Use frame bindings for
-       viper-vi-state-cursor-color.
-       (viper-non-hook-settings): Don't set default
-       mode-line-buffer-identification.
-
-       * viper-util.el (viper-set-cursor-color-according-to-state): New fun.
-       (viper-set-cursor-color-according-to-state)
-       (viper-get-saved-cursor-color-in-replace-mode)
-       (viper-get-saved-cursor-color-in-insert-mode): Make conditional on
-       viper-emacs-state-cursor-color.
-
-       * viper-cmd.el (viper-envelop-ESC-key): Bug fix.
-       (viper-undo): Use point if undo-beg-posn is nil.
-       (viper-insert-state-post-command-sentinel, viper-change-state-to-emacs)
-       (viper-after-change-undo-hook): Don't use
-       viper-emacs-state-cursor-color by default.
-       (viper-undo): More sensible positioning after undo.
-
-       * viper-ex.el (ex-splice-args-in-1-letr-cmd): Get rid of caddr.
-       (viper-emacs-state-cursor-color): Default to nil, since this feature
-       doesn't work well yet.
-
-       * ediff-mult.el (ediff-intersect-directories)
-       (ediff-get-directory-files-under-revision, ediff-dir-diff-copy-file):
-       always expand filenames.
-
-2006-08-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * tumme.el: Remove * in defcustoms's docstrings.
-
-2006-08-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/timer.el (timer-set-idle-time, run-with-idle-timer):
-       Accept internal time format for SECS arg.
-       (timer-relative-time): Doc fix.
-
-       * jit-lock.el: "Stealth fontification by requeuing timers" patch,
-       adapted from Martin Rudalics.
-       (jit-lock-stealth-repeat-timer, jit-lock-stealth-buffers): New vars.
-       (jit-lock-mode): Create jit-lock-stealth-repeat-timer.
-       (jit-lock-stealth-fontify): Reschedule as a idle timer instead of
-       using sit-for.
-
-2006-08-24  Francesc Rocher  <francesc.rocher@gmail.com>
-
-       * cus-start.el (all): Add `overline-margin' and
-       `x-underline-at-descent-line'.
-
-2006-08-24  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (grep-find-use-xargs): Use explicit value `exec'
-       to mean "use find -exec"; nil now unambiguously means auto-detect.
-       (grep-compute-defaults): Set grep-find-use-xargs to `exec' if not `gnu'.
-       Use shell-quote-argument to build grep-find-command and
-       grep-find-template.
-       (rgrep): Use shell-quote-argument to properly quote arguments to find.
-       Reported by Tom Seddon.
-
-2006-08-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * startup.el (fancy-splash-head): Give instructions for dismissing
-       the splash screen for default startup too.
-       (display-startup-echo-area-message, fancy-splash-screens)
-       (use-fancy-splash-screens-p): New arg hide-on-input.  If nil, show
-       all splash text at once and keep the splash buffer around.
-       (command-line-1): Give display-startup-echo-area-message a t arg.
-
-2006-08-23  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-follow-gnus-link): Make sure the dedicated
-       gnus frame is selected.
-
-2006-08-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-starting): Reset gdb-signalled to nil.
-
-2006-08-22  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-set-matches-1): Fix full matching for subdirs.
-       Add suffix matching for subdirs.
-
-2006-08-22  Jorgen Schaefer  <forcer@forcix.cx>  (tiny change)
-
-       * x-dnd.el (x-dnd-drop-data): Don't call goto-char if
-       mouse-yank-at-point is non-nil.
-
-2006-08-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-frame-memory-buffer): Make frame
-       a bit wider and remove fringes to fit initial output on line.
-
-2006-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * frame.el (blink-cursor-end): Only ignore the error we care about.
-       (blink-cursor-mode): Use blink-cursor-end to simplify the code.
-
-2006-08-21  Richard Stallman  <rms@gnu.org>
-
-       * whitespace.el (whitespace-cleanup): Doc fix.
-
-2006-08-20  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-show-maximum-output): New var.
-       (rcirc-buffer-process): If no buffer argument is supplied, use
-       current-buffer.
-       (rcirc-complete-nick): Complete to the last completed nick first.
-       (rcirc-mode): Preserve the value of `rcirc-urls' across
-       connections.  Setup scroll function.
-       (rcirc-scroll-to-bottom): New function.
-       (rcirc-print): Use nick syntax around regexp work.
-       Notice dim-nicks speaking only if they say our nick.
-       (rcirc-update-activity-string): Do not show the modeline indicator
-       if there are no live rcirc processes.
-       (rcirc-cmd-ignore): Ignore case.
-       (rcirc-browse-url-at-point): Fix off-by-one error.
-
-2006-08-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/python.el: Remove * in defcustom docstrings.
-       (run-python, python-proc, python-try-complete): Use derived-mode-p.
-       (python-mode): Set tab-width and indent-tabs-mode.
-
-2006-08-20  Dave Love  <fx@gnu.org>
-
-       * progmodes/python.el: Update to Dave Love's latest version.
-       (python-font-lock-keywords, python-mode): Don't use
-       font-lock-syntax-table, but match symbol elements explicitly instead.
-       (python-mode-map): Add help, and a few more key bindings.
-       (python-skip-comments/blanks): Move out of comments as well.
-       (python-continuation-line-p): Behave better with unbalanced parens.
-       (python-blank-line-p): New fun.
-       (python-open-block-statement-p): Don't use a heuristic.
-       (python-outdent-p): Better handle blocks-in-the-same-line.
-       (python-calculate-indentation): Misc improvements.
-       (python-comment-indent): Remove.
-       (python-block-pairs): New var.
-       (python-first-word): New fun.
-       (python-indentation-levels): Handle more common cases.
-       (python-indent-line-1): Add `leave' argument.
-       (python-indent-region): New fun.
-       (python-skip-out): New fun.
-       (python-beginning-of-statement, python-end-of-statement): Use it.
-       (python-next-statement): Return correct count even at eob.
-       (python-end-of-block): Fix paren-typo.
-       (python-imenu-create-index): Add module variables.
-       (run-python): Add `new' arg.
-       Check we're at a prompt before returning.
-       (python-send-command): Move to end of buffer.
-       Wait for prompt to return.
-       (python-set-proc): New fun.
-       (python-imports): New var.
-       (python-describe-symbol): Use it.  Adjust to new interface of `ehelp'.
-       (python-eldoc-function): Try to move out of arg list.
-       (python-outline-level): Offset by 1.
-       (python-find-imports): New fun.
-       (python-symbol-completions): Use python-imports.
-       (python-module-path, ffap-alist): Add support for ffap.
-       (python-skeletons, python-mode-abbrev-table, def-python-skeleton)
-       (python-insert-*, python-default-template, python-expand-template):
-       Add templates/skeletons.
-       (python-setup-brm): Support for Bicycle Repair Man.
-       (python-abbrev-syntax-table): New var.
-       (python-abbrev-pc-hook, python-pea-hook): New funs.
-
-2006-08-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frame.el (blink-cursor-start): Set timer first.
-       (blink-cursor-end): Ignore timer cancelling errors.
-       Suggested by Ken Manheimer.
-
-2006-08-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * newcomment.el (comment-box): Call `comment-normalize-vars'.
-       Add autoload cookie.
-
-2006-08-20  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (line-number-at-pos): Doc fix.
-
-       * emacs-lisp/timer.el (run-with-idle-timer): Pass t to
-       timer-activate-when-idle, so timer can run before Emacs becomes
-       non-idle again.
-
-2006-08-18  Yoni Rabkin Katzenell  <yoni-r@actcom.com>  (tiny change)
-
-       * whitespace.el (whitespace-cleanup-internal): New optional arg
-       REGION-ONLY.  If it's non-nil, modify the message to the user
-       accordingly.
-       (whitespace-cleanup-region): Call whitespace-cleanup-internal with
-       a non-nil argument.
-
-2006-08-18  Gustav H\e,Ae\e(Bllberg  <gustav@gmail.com>  (tiny change)
-
-       * rect.el (spaces-string): Simplify and add doc string.
-
-2006-08-17  Romain Francoise  <romain@orebokech.com>
-
-       * progmodes/gdb-ui.el (gdb-edit-locals-value): Balance parens.
-
-2006-08-17  Richard Stallman  <rms@gnu.org>
-
-       * compare-w.el (compare-windows): lambda's take an arg and pass
-       it to compare-windows-skip-whitespace.
-
-2006-08-17  Martin Rudalics  <rudalics@gmx.at>
-
-       * jit-lock.el (jit-lock-fontify-now): Protect the modified status of
-       the right buffer.
-
-2006-08-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs-parse.el (cvs-parse-table): Accept the new `...' format for
-       removed files.
-
-2006-08-17  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-locals-watch-map)
-       (gdb-locals-watch-map-1): Suppress keymap first.
-       (gdb-edit-locals-map-1): New variable.
-       (gdb-edit-locals-value): New function.
-       (gdb-stack-list-locals-handler): Use them.
-
-2006-08-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mouse.el (global-map): Allow yanking with mouse-2 at a spot whose
-       cursor would normally be drawn in the fringe.
-
-       * font-lock.el (font-lock-extend-region-wholelines): Fix up typo.
-       Reported by Martin Rudalics <rudalics@gmx.at>.
-
-2006-08-16  Richard Stallman  <rms@gnu.org>
-
-       * term/x-win.el (x-clipboard-yank): Specify * in interactive spec.
-       (special-event-map): Process drag-n-drop events this way.
-
-       * simple.el (move-beginning-of-line): Test whether fields
-       would prevent motion back to line's first visible character.
-       If so, stop where the fields would stop the motion.
-
-       * newcomment.el (comment-indent): Fully update INDENT
-       before checking to see if it will change the text.
-
-       * cus-edit.el (custom-newline): New function.
-       (custom-mode-map): Bind newline to custom-newline.
-
-       * compare-w.el (compare-windows): Factor compare-ignore-whitespace
-       into ignore-whitespace.
-       Check each buffer for its skip-function.
-       Handle compare-windows-skip-whitespace special-case test
-       by returning t from default skip function.
-
-2006-08-15  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-clock-special-range)
-       (org-clock-update-time-maybe): New functions.
-       (org-stamp-time-of-day-regexp): Allow weekday to be of word chars,
-       not only a-z.
-       (org-agenda-get-blocks): Allow multiple blocks per headline.
-       (org-timestamp-change): Call `org-clock-update-time-maybe'.
-       (org-export-html-title-format)
-       (org-export-html-toplevel-hlevel): New options.
-       (org-export-language-setup): Add support for Czech.
-       (org-mode, org-insert-todo-heading, org-find-visible)
-       (org-find-invisible, org-invisible-p, org-invisible-p2)
-       (org-back-to-heading, org-on-heading-p, org-up-heading-all)
-       (org-show-subtree, org-show-entry, org-make-options-regexp):
-       Remove compatibility support for old outline-mode.
-       (org-check-occur-regexp): Funtion removed.
-       (org-on-heading-p, org-back-to-heading): Made defalias.
-       (org-set-local): New defsubst.
-       (org-set-regexps-and-options, org-mode)
-       (org-set-font-lock-defaults, org-edit-agenda-file-list)
-       (org-timeline, org-agenda-list, org-todo-list, org-tags-view)
-       (org-remember-apply-template, org-table-edit-field)
-       (org-table-edit-formulas, orgtbl-mode, org-export-as-ascii)
-       (org-set-autofill-regexps): Use `org-set-local'.
-       (org-table-eval-formula): Fix bug with parsing of display flags.
-
-2006-08-15  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-info-stack-custom): Indicate selected
-       frame with fringe arrow.  Suggested by Simon Marshall
-       <simon.marshall@misys.com>.
-       (gdb-stack-position): New variable.
-       (gdb-starting, gdb-exited): Reset gdb-stack-position to nil.
-       (gdb-frames-mode): Set gdb-stack-position to nil.
-       Add to overlay-arrow-variable-list
-       (gdb-reset): Delete gdb-stack-position from above list.
-
-2006-08-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el (menu-bar-edit-menu): Disable paste if buffer is
-       read only.
-
-2006-08-13  Romain Francoise  <romain@orebokech.com>
-
-       * cus-theme.el (customize-create-theme)
-       (custom-theme-visit-theme): End `y-or-n-p' prompt with a space.
-
-       * filesets.el (filesets-add-buffer): Ditto.
-
-       * pcvs.el (cvs-change-cvsroot): Ditto.
-
-2006-08-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-frame-separate-io-buffer)
-       (gdb-use-separate-io-buffer, menu): Avoid using `inferior' in text.
-       (gdb-memory-mode, gdb-locals-watch-map): Don't quote lambda
-       expressions.
-       (gdb-info-breakpoints-custom): Use gdb-breakpoint-regexp.
-       Only search till end of line.
-       Add face to function names in case of no filename.
-       Add face to variable names of watchpoints.
-
-2006-08-12  Robert Thorpe  <rthorpe@realworldtech.com>  (tiny change)
-
-       * cus-start.el <indent-tabs-mode>: Move to the `indent'
-       customization group.
-
-2006-08-12  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-prior-bindings, allout-added-bindings):
-       Remove, after long deprecation.
-       (allout-beginning-of-line-cycles, allout-end-of-line-cycles):
-       Add customization vars controlling allout-beginning-of-line and
-       allout-end-of-line conveniences.
-       (allout-header-prefix, allout-use-mode-specific-leader)
-       (allout-use-mode-specific-leader, allout-mode-leaders):
-       Revise docstrings.
-       (allout-infer-header-lead): Change to be an alias for
-       allout-infer-header-lead-and-primary-bullet.
-       (allout-infer-header-lead-and-primary-bullet): New version of
-       allout-infer-header-lead which assigns the primary bullet to the
-       same as the header lead, when its being changed.
-       (allout-infer-body-reindent): Apply regexp-quote instead of
-       unconditionally prepending "\\", so that all literal
-       allout-header-prefix and allout-primary-bullet strings are
-       properly handled.
-       (allout-add-resumptions): Add optional qualifier for extending or
-       appending to existing values, rather than replacing them.
-       (allout-view-change-hook): Clarify docstring.
-       (allout-exposure-change-hook): Take explicit arguments, via
-       run-hook-with-args.
-       (allout-structure-added-hook)
-       (allout-structure-deleted-hook)
-       (allout-structure-shifted-hook): New hooks analogous to
-       allout-exposure-change-hook for other kinds of structural outline
-       edits.
-       (allout-encryption-plaintext-sanitization-regexps): New encryption
-       customization variable, by which cooperating modes can provde
-       massage of the plaintext without actually being passed it.
-       (allout-encryption-ciphertext-rejection-regexps)
-       (allout-encryption-ciphertext-rejection-ceiling): New encryption
-       customization variables, by which cooperating modes can prohibit
-       rare but possible ciphertext patterns from fouling their
-       operation, with actually being passed the ciphertext.
-       (allout-mode): Run activation and deactivation hooks after the
-       minor-mode variable has been toggled, to clarify the mode
-       disposition.  The new encryption ciphertext rejection variable is
-       used to ensure that the ciphertext does not contain text that
-       would be recognized as outline structural elements by allout.
-       Substite allout-beginning-of-line and allout-end-of-line for
-       conventionall beginning-of-line and end-of-line bindings.
-       If allout-old-style-prefixes is non-nil, don't nullify it on mode
-       activation!
-       (allout-beginning-of-line): Respect `allout-beginning-of-line-cycles'.
-       (allout-end-of-line): Respect `allout-end-of-line-cycles'.
-       (allout-chart-subtree): Implement new mode, charting only the
-       visible items in the subtree, when new 'visible' parameter is non-nil.
-       (allout-end-of-subtree): Properly handle the last item in the buffer.
-       (allout-pre-command-business, allout-command-counter):
-       Increment an advertised counter so that cooperating enhancements can
-       track revisions of items.
-       (allout-open-topic): Run allout-structure-added-hook with suitable
-       arguments.
-       (allout-shift-in): Run allout-structure-shifted-hook with suitable
-       arguments.
-       (allout-shift-out): Fix doubling for negative args and ensure call
-       of allout-structure-shifted-hook by solely using allout-shift-in.
-       (allout-kill-line, allout-kill-topic):
-       Run allout-structure-deleted-hook with suitable arguments.
-       (allout-yank-processing): Run allout-structure-added-hook with
-       proper arguments.
-       (allout-yank): Enclose activity in allout-unprotected.
-       (allout-flag-region): Run allout-exposure-change-hook with
-       suitable arguments, instead of making the callee infer the arguments.
-       (allout-encrypt-string):
-       Support allout-encryption-plaintext-sanitization-regexps,
-       allout-encryption-ciphertext-rejection-regexps, and
-       allout-encryption-ciphertext-rejection-ceiling.  Indicate correct
-       en/de cryption mode in symmetric encryption failure message.
-       (allout-obtain-passphrase): Use copy-sequence to get a distinct
-       copy of the passphrase, and don't zero it or we'll corrupt the
-       stashed copy.
-       (allout-create-encryption-passphrase-verifier)
-       (allout-verify-passphrase): Respect the new signature for
-       allout-encrypt-string.
-       (allout-get-configvar-values): Convenience for getting a
-       configuration variable value and handling its absence gracefully.
-
-2006-08-11  Romain Francoise  <romain@orebokech.com>
-
-       * obsolete/zone-mode.el: Delete.
-
-2006-08-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/dns-mode.el (dns-mode): Use before-save-hook.
-
-2006-08-11  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/bindat.el (bindat-ip-to-string):
-       Use `format-network-address' if possible.
-
-2006-08-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * x-dnd.el (x-dnd-init-frame): Call x-register-dnd-atom.
-
-2006-08-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/edebug.el (edebug-recursive-edit): Don't save and
-       restore unread-command-events here.
-       (edebug-display): Do it here, to detect sit-for interruptions.
-
-2006-08-10  Romain Francoise  <romain@orebokech.com>
-
-       * textmodes/dns-mode.el: Alias `zone-mode' to `dns-mode'.
-       (dns-mode-soa-auto-increment-serial): New user option.
-       (dns-mode-soa-maybe-increment-serial): New function.
-       (dns-mode): Add the latter to `write-contents-functions'.
-
-       * obsolete/zone-mode.el: Move to obsolete/ from net/.
-       Delete autoload cookies.
-
-2006-08-10  John Wiegley  <johnw@newartisans.com>
-
-       * eshell/em-glob.el (eshell-glob-chars-list)
-       (eshell-glob-translate-alist): Add support for [^g] in character globs.
-
-2006-08-10  Richard Stallman  <rms@gnu.org>
-
-       * facemenu.el (facemenu-add-face): Pass frame to facemenu-active-faces.
-       (facemenu-set-face): Doc fix.
-       (facemenu-listed-faces): Doc fix.
-
-2006-08-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * avoid.el (mouse-avoidance-animating-pointer): New var.
-       (mouse-avoidance-nudge-mouse): Use it.
-       (mouse-avoidance-banish): Rename from mouse-avoidance-banish-hook.
-       (mouse-avoidance-exile): Rename from mouse-avoidance-exile-hook
-       (mouse-avoidance-fancy): Rename from mouse-avoidance-fancy-hook.
-       Don't activate if currently animating.  All callers changed.
-
-2006-08-09  John Wiegley  <johnw@newartisans.com>
-
-       * calendar/timeclock.el (timeclock-use-elapsed): Added a new
-       variable, which causes timeclock to report elapsed time worked,
-       instead of just work remaining.
-
-2006-08-09  Kenichi Handa  <handa@m17n.org>
-
-       * international/latexenc.el (latexenc-find-file-coding-system):
-       Fix for the case that the 2nd element of arg-list is a cons.
-
-2006-08-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * info.el (Info-fontify-node): Handle preceding `in' for note
-       reference hiding rules.
-
-2006-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-quoted-subshell): Make sure we don't
-       mistake a closing " for an opening one.
-
-2006-08-07  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Add more key bindings.
-
-2006-08-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * complete.el (PC-do-completion): Filter out completions matching
-       completion-ignored-extensions before checking whether there are
-       multiple completions.
-       Don't use `list' unnecessarily when building completion tables.
-
-2006-08-06  Richard Stallman  <rms@gnu.org>
-
-       * help.el (describe-mode): Make minor mode list more concise.
-
-2006-08-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * bindings.el: Give mode-line-format, mode-line-modes, and
-       mode-line-position `standard-value' properties.
-
-2006-08-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * buff-menu.el (list-buffers-noselect): For Info buffers, use
-       "(file)node" instead of the file name.
-
-2006-08-05  Richard Stallman  <rms@gnu.org>
-
-       * faces.el (escape-glyph): Doc fix.
-
-2006-08-04  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-diag.el (describe-font): Improve docstring
-       and error message.  Use frame-parameter (not frame-parameters).
-
-2006-08-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/gud.el (gdb-script-font-lock-syntactic-keywords):
-       Correctly mark the end-of-docstring char.
-
-2006-08-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (line-move-to-column): Constrain move-to-column to
-       current field.
-
-2006-08-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (font-lock-beg, font-lock-end)
-       (font-lock-extend-region-functions): New vars.
-       (font-lock-extend-region-multiline)
-       (font-lock-extend-region-wholelines): New functions.
-       (font-lock-default-fontify-region): Use them.
-       (font-lock-extend-jit-lock-region-after-change): Only round up
-       if font-lock-default-fontify-region will do it as well.
-
-       * font-lock.el (font-lock-extend-after-change-region-function):
-       Rename from font-lock-extend-region-function.
-       (font-lock-extend-region): Remove by inlining at call sites.
-       (font-lock-after-change-function): Don't needlessly round up to a whole
-       number of lines.
-       (font-lock-extend-jit-lock-region-after-change): Be more careful about
-       the boundary conditions and the interactions between the various ways
-       to extend the region.
-
-2006-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * jit-lock.el (jit-lock-fontify-now): Preserve the buffer's
-       modification status when forcing the second redisplay.
-
-2006-08-03  Kim F. Storm  <storm@cua.dk>
-
-       * edmacro.el (edmacro-fix-menu-commands): Ignore switch-frame.
-
-2006-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs-util.el (cvs-get-buffer-create): Obey `noreuse' even if `name'
-       doesn't look like a file name.
-
-       * complete.el (PC-expand-many-files): Avoid signalling an error when
-       the current directory doesn't exist.  Reported by Micha\e,Ak\e(Bl Cadilhac.
-
-2006-08-02  Andreas Schwab  <schwab@suse.de>
-
-       * bindings.el (mode-line-format): Simplify reference to vc-mode.
-
-2006-08-02  Nick Roberts  <nickrob@snap.net.nz>
-
-       * bindings.el (map): Make mode-line-buffer-identification-keymap
-       before defining propertized-buffer-identification.
-
-2006-08-01  Richard Stallman  <rms@gnu.org>
-
-       * bindings.el (mode-line-format): Adjust spacing around vc-mode.
-
-2006-08-02  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-find-source-frame): Make nil the
-       default value.
-       (gdb-find-source-frame): New function.
-       (menu): Add to menu bar.
-
-2006-08-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-core.el (font-lock-extend-region-function)
-       (font-lock-extend-region): Move to font-lock.el.
-
-       * font-lock.el (font-lock-extend-region-function)
-       (font-lock-extend-region): Move from font-core.el.  Simplify.
-
-       * jit-lock.el (jit-lock-fontify-now): Cause a second redisplay
-       if needed.
-       (jit-lock-start, jit-lock-end): New dynamic scoped vars.
-       (jit-lock-after-change-extend-region-functions): New hook.
-       (jit-lock-after-change): Use it instead of hard-coding font-lock code.
-
-       * font-lock.el (font-lock-extend-jit-lock-region-after-change): New fun.
-       (font-lock-turn-on-thing-lock): Use it.
-
-       * longlines.el (longlines-show-region): Make it work on read-only
-       buffers as well.
-
-2006-08-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-set-hollow): Check for gud-last-last-frame.
-
-2006-07-31  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/vhdl-mode.el (vhdl-speedbar-display-directory)
-       (vhdl-speedbar-display-projects): Update old obsolete
-       speedbar variable names.
-
-2006-07-31  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-find-source-frame): New option.
-       (gdb-stopped): Use it.
-
-       * t-mouse.el (t-mouse-mode): Use set-process-query-on-exit-flag.
-
-2006-07-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * loadhist.el (unload-feature): Handle new `(t . SYMBOL)' format
-       for load-history elements.
-
-2006-07-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.el (convert-standard-filename): For Cygwin, replace
-       characters not allowed in Windows file names.
-       (make-auto-save-file-name): Add Cygwin to the list of systems
-       where the auto-save file name needs to be run through
-       convert-standard-filename.
-
-2006-07-29  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * window.el (bw-get-tree): Don't integerp subtree if it's nil.
-
-2006-07-28  Richard Stallman  <rms@gnu.org>
-
-       * bindings.el (mode-line-frame-identification)
-       (propertized-buffer-identification): Centralize the code
-       to initialize the variable.
-
-       * progmodes/grep.el (grep-default-command): Catch errors from
-       wildcard-to-regexp.
-
-2006-07-29  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (grep-tag-default): New function.
-       (grep-default-command, grep-read-regexp): Use it.
-       (grep-read-files): Use car of grep-files-history or grep-files-aliases
-       as default if nothing else applies.
-
-2006-07-28  Bill Atkins  <atkinw@rpi.edu>  (tiny change)
-
-       * wdired.el (wdired-change-to-wdired-mode, wdired-change-to-dired-mode):
-       Throw error if buffer is not in Dired and Wdired mode, respectively.
-
-2006-07-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (custom-no-edit): Revert 2006-07-27 change, so that
-       self-insert-command keys don't activate buttons.
-       (custom-mode-map): Just don't bind "\C-m" to `custom-no-edit'.
-
-2006-07-29  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-info-breakpoints-custom): Use different
-       faces for enable character.
-
-2006-07-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * Makefile.in (recompile): Update comment to reflect change
-       on 2004-04-21.
-
-2006-07-27  Richard Stallman  <rms@gnu.org>
-
-       * cus-edit.el (customize-package-emacs-version-alist): Doc fix.
-       (customize-package-emacs-version): Change msg when pkg has no entry.
-       (custom-no-edit): On a button, do like widget-button-press.
-
-2006-07-27  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Fix bindings for C-tab,
-       S-tab and C-S-tab.
-
-2006-07-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/which-func.el (which-function): Fix documentation/
-       comment typo.
-
-2006-07-26  Richard Stallman  <rms@gnu.org>
-
-       * textmodes/ispell.el (ispell-word): If we replace the word,
-       move point to the end.  Insert before deleting.
-
-2006-07-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * subr.el (sit-for): Use new SECONDS arg of read-event instead of
-       a timer.
-
-2006-07-26  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-backward-image): Add prefix argument.  Add error
-       when at first image.
-       (tumme-forward-image): Add prefix argument.  Add error when at last
-       image.
-
-2006-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * tabify.el (tabify-regexp): Use more specific regexps.
-       (tabify): Avoid modifying the buffer unnecessarily.
-
-2006-07-25  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-track-original-file): Add `buffer-live-p' check.
-       (tumme-format-properties-string): Handle empty `buf'.
-       (tumme-get-comment): Change variable names inside `let'.
-       Add missing `let' variable that cause font-lock problems.
-       (tumme-write-comments): Change variable names inside `let'.
-       Add missing `let' variable that cause font-lock problems.
-       (tumme-forward-image): Rename from `tumme-forward-char'.
-       (tumme-backward-image): Rename from `tumme-backward-char'.
-
-2006-07-25  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/ld-script.el (ld-script-keywords)
-       (ld-script-font-lock-keywords, ld-script-builtins): Update keywords
-       and add comments.
-
-2006-07-25  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers)
-       (gdb-resync, gdb-prompt, gdb-starting, gdb-exited, gdb-stopped)
-       (gdb-set-gud-minor-mode-existing-buffers-1): Use different faces
-       for status indicator.
-
-2006-07-24  Richard Stallman  <rms@gnu.org>
-
-       * xml.el (xml-parse-file): Clean up, and use with-temp-buffer.
-
-       * subr.el (dolist, dotimes): Use interned symbols for locals.
-       (--dotimes-limit--, --dolist-tail--): New defvars.
-       (looking-back): Doc fix.
-
-       * replace.el (replace-match-string-symbols): Handle dotted lists.
-
-2006-07-24  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-write-tags): Add.
-       (tumme-write-comments): Add.
-       (tumme-tag-files): Change to use `tumme-write-tags'.
-       (tumme-tag-thumbnail): Change to use `tumme-write-tags'.
-       (tumme-dired-comment-files): Change to use `tumme-write-comments'.
-       (tumme-save-information-from-widgets): Change to use
-       `tumme-write-comments' and `tumme-write-tags'.
-       (tumme-comment-thumbnail): Change to use `tumme-write-comments'.
-       (tumme-write-tag): Remove.
-       (tumme-write-comment): Remove.
-       (tumme-display-previous-thumbnail-original): Remove empty line.
-       (tumme-widget-list): Add punctuation.
-
-2006-07-24  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-line-up): Add an extra check for end of buffer.
-
-2006-07-24  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-def.el (pgg-truncate-key-identifier): Truncate the key ID to 8
-       letters from the end.  Thanks to "David Smith" <davidsmith@acm.org>
-       and andreas@altroot.de (Andreas V\e,Av\e(Bgele).
-
-2006-07-23  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * mouse.el (mouse-on-link-p): Doc fix.
-
-2006-07-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * emacs-lisp/find-func.el (find-function-search-for-symbol):
-       Handle "C-h f `".
-
-2006-07-22  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * ibuffer.el (ibuffer-formats): Use left alignment for the mode
-       column.
-
-2006-07-22  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * textmodes/table.el: Add move-beginning-of-line and
-       move-end-of-line to Point Motion Only Group.
-
-2006-07-22  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
-
-       * progmodes/delphi.el (delphi-fill-comment): Use save-restriction.
-
-2006-07-22  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * startup.el (user-mail-address): Initialize from the `EMAIL'
-       environment variable first.  Document this.
-       (command-line): Ditto.
-
-2006-07-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * help-mode.el (help-function-def, help-variable-def)
-       (help-face-def): Print a message in the minibuffer.
-
-2006-07-21  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Fix key bindings
-       syntax.  Bind S-return, C-M-., C-TAB, S-TAB and C-S-TAB.
-
-2006-07-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * dos-w32.el (find-buffer-file-type-coding-system): Support calls
-       where `(nth 1 command)' is a cons cell.  Doc fix.
-
-       * textmodes/po.el (po-find-charset): Doc fix.
-
-2006-07-21  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-unprotected, allout-e-o-prefix-p)
-       (allout-beginning-of-current-line, allout-end-of-current-line)
-       (allout-next-visible-heading, allout-open-topic)
-       (allout-kill-topic, allout-yank-processing, allout-resolve-xref)
-       (allout-flag-current-subtree, allout-show-to-offshoot)
-       (allout-hide-current-entry, allout-show-current-branches)
-       (allout-hide-region-body, allout-old-expose-topic)
-       (allout-listify-exposed, allout-latex-verbatim-quote-curr-line)
-       (allout-mark-topic, allout-adjust-file-variable): Enclose scopes
-       containing `beginning-of-line' and `end-of-line' with
-       `inhibit-field-text-motion' t.
-
-2006-07-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * frame.el (focus-follows-mouse): Document that it doesn't have
-       any effect on MS-Windows.
-
-2006-07-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-quoted-subshell): Further fix last change.
-
-2006-07-20  Jay Belanger  <belanger@truman.edu>
-
-       * calc.el (calc-previous-alg-entry): Remove variable.
-
-       * calc-aent.el (calc-alg-entry-history, calc-quick-calc-history):
-       New variables.
-       (calc-alg-entry): Use `calc-alg-entry-history'.
-       (calc-do-quick-calc): Use `calc-quick-calc-history'.
-       Remove reference to `calc-previous-alg-entry'.
-       (calcAlg-edit, calcAlg-enter): Remove reference to
-       `calc-previous-alg-entry'.
-       (calcAlg-previous): Use `previous-history-element' instead of
-       `calc-previous-alg-entry'.
-       (calc-do-alg-entry): Use history when calling `read-from-minibuffer'.
-       Change keybinding for `calcAlg-plus-minus', add keybindings for
-       `previous-history-element' and `next-history-element'.
-
-       * calc-rewr.el (calc-match): Remove reference to
-       `calc-previous-alg-entry'.
-
-       * calc-sel.el (calc-selection-history): New variable.
-       (calc-enter-selection, calc-sel-mult-both-sides)
-       (calc-sel-add-both-sides): Use `calc-selection-history'.
-
-       * calc-map.el (calc-get-operator-history): New variable.
-       (calc-get-operator): Use `calc-get-operator-history'.
-
-       * calcalg3.el (calc-curve-fit-history): New variable.
-       (calc-curve-fit): Use `calc-curve-fit-history'.
-
-2006-07-20  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (select-safe-coding-system): Fix the
-       way of deciding eol-type of the coding system.
-
-2006-07-20  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-langs.el (c-emacs-variable-inits): New variable.
-       (c-lang-setvar): New macro.
-       (c-make-init-lang-vars-fun): Use the initialization forms in
-       c-emacs-variable-inits in addition to those in c-lang-variable-inits.
-       (comment-start, comment-end, comment-start-skip): Change these from
-       c-lang-defvar's to c-lang-setvar's.
-
-       * progmodes/cc-mode.el (c-make-emacs-variables-local): New macro,
-       which calls make-local-variable on the elements of
-       c-emacs-variable-inits.
-       (c-init-language-vars-for): Call this new macro.
-
-2006-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist) <gnu>:
-       Try to rule out false positives due to time stamps.
-       (compilation-mode-font-lock-keywords): Remove rules made redundant
-       because of the above change.  Add `segmentation fault' to the known and
-       highlighted compilation termination messages.
-
-2006-07-19  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (grep-find-ignored-directories):
-       Add .svn and _darcs to list.
-
-2006-07-19  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * dired.el (dired-mode-map): Add key binding `C-te' for
-       `tumme-dired-edit-comment-and-tags'.
-
-       * tumme.el (tumme-display-thumbnail-original-image): Make sure
-       image display buffer is displayed before call to
-       `tumme-display-image.
-       (tumme-dired-display-image): Make sure image display buffer is
-       displayed before call to `tumme-display-image.
-       (tumme-mouse-display-image): Make sure image display buffer is
-       displayed before call to `tumme-display-image.
-       (tumme-widget-list): Add.
-       (tumme-dired-edit-comment-and-tags): Add.
-       (tumme-save-information-from-widgets): Add.
-
-2006-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-quoted-subshell): Fix last change.
-
-2006-07-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-font-lock-keywords-1):
-       Revert inadvertently installed patch hunk.
-
-       * progmodes/compile.el (compilation-find-file): Handle the
-       cases where the user selects a non-existent file.
-
-2006-07-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * bindings.el (minibuffer-local-map): Rebind TAB so it inserts a \t.
-
-2006-07-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * subr.el (sit-for): Just sleep-for if noninteractive.
-
-2006-07-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/autoload.el (make-autoload): Use new arg.
-
-       * custom.el (custom-autoload): Add `noset' argument.
-       (custom-push-theme): Don't autoload the variable, let callers do it.
-       (custom-theme-set-variables): Autoload the variable if necessary.
-
-       * cus-edit.el (custom-variable-state-set): If the variable was
-       originally set outside custom, but to the same value as the default,
-       consider it to be standard.
-
-       * Makefile.in (mh-loaddefs.el): Finish setting up the default empty
-       file *before* telling Emacs to add the autoloads, in case it fails.
-
-       * progmodes/sh-script.el (sh-quoted-subshell): Don't match escaped `.
-       Use `cond', push', and `dolist'.
-
-2006-07-17  Richard Stallman  <rms@gnu.org>
-
-       * image-mode.el (tar-superior-buffer, archive-superior-buffer):
-       Add defvars to silence warnings.
-
-2006-07-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/compile.el (compilation-mode-font-lock-keywords):
-       Don't highlight "Compiling file" messages as error.
-
-       * dired-aux.el (dired-compress-file): Confirm again if gzipped
-       file already exists.
-
-2006-07-16  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * find-file.el (ff-special-constructs): Doc fix.  Also, for C/C++
-       entry, don't assign to free var; simply return the extracted filename.
-       (ff-treat-as-special): Incorporate common preamble from callers.
-       (ff-other-file-name, ff-find-the-other-file):
-       Update call to ff-treat-as-special.
-
-       * progmodes/ada-mode.el (ada-mode): Rewrite ff-special-constructs init.
-
-2006-07-16  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-get-comment): Fix bug.
-
-2006-07-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * files.el: Remove spurious * in docstrings.
-
-2006-07-14  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-run-unit-tests-on-load): Rectify docstring
-       grammar.
-       (allout-beginning-of-current-line): Beware beginning of buffer.
-       Also, a comment is simplified.
-       (allout-hotspot-key-handler): Only set allout-post-goto-bullet
-       when appropriate.  (This fix enables use for other than
-       bullet-hotspot operation.)
-       (allout-hide-current-subtree): While escalating to sibling-close,
-       make sure to situate on a topic.
-
-2006-07-14  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-delete-selection)
-       (cua-toggle-set-mark): New defcustoms.
-       (cua-rectangle-modifier-key): Add `alt' modifier.
-       (cua-replace-region): Don't delete if cua-delete-selection is nil.
-       (cua-set-mark): Don't clear mark if cua-toggle-set-mark is nil.
-       Suggested by Klaus Zeitler <kzeitler@lucent.com>.
-
-       * emulation/cua-rect.el (cua-help-for-rectangle): Add `alt' modifier.
-
-2006-07-14  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el: Require 'cl during byte-compilation/interactive load,
-       for the `assert' macro.
-       (allout-mode-deactivate-hook): New hook, run when allout mode
-       deactivates.
-       (allout-developer): New allout customization subgroup.
-       (allout-run-unit-tests-on-load): New allout-developer
-       customization variable, when true allout unit tests are run towards
-       end of file load/eval.
-       (allout-inhibit-auto-fill): Disable auto-fill activity even during
-       auto-fill-mode.
-       (allout-resumptions): Remove, to be replaced by...
-       (allout-add-resumptions): Register variable settings to be
-       reinstated by `allout-do-resumptions'.  The settings are made
-       buffer-local, but the locality/globality of the suspended setting
-       is restored on resumption.
-       (allout-do-resumptions): Reinstate all settings suspended using
-       `allout-add-resumptions'.
-       (allout-test-resumptions): Unit tests (and intermediate variables)
-       for resumptions.
-       (allout-tests-globally-unbound, allout-tests-globally-true)
-       (allout-tests-locally-true): Intermediate variables for
-       resumptions unit tests.
-       (allout-overlay-preparations): Replaces `allout-set-overlay-category'.
-       (allout-exposure-category): Replaces 'allout-overlay-category variable.
-       (allout-mode): Use `allout-add-resumptions' and `allout-do-resumptions'
-       instead of retired `allout-resumptions'.  For hook functions, use
-       `local' parameter so hook settings are created and removed as
-       buffer-local settings.  Revise (resumptions) setting
-       auto-fill-function so it is set only if already active.  (The
-       related fill-function settings are all made in either case, so
-       that activating auto-fill-mode activity will have the custom
-       allout-mode behaviors (hanging indent on topics, if configured for it).
-       Remove all allout-exposure-category overlays on mode deactivation.
-       (allout-hotspot-key-handler): New function extracted from
-       `allout-pre-command-business', so the functionality can be used
-       for other purposes, eg as a binding in an overlay.
-       (allout-pre-command-business): Use new `allout-hotspot-key-handler'.
-       (allout-auto-fill): Respect new `allout-inhibit-auto-fill'
-       customization variable.
-       (allout-run-unit-tests): Run the (currently quite small)
-       repertoire of unit tests.  Called just before the provide iff user
-       has customized `allout-run-unit-tests-on-load' non-nil.
-
-2006-07-14  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
-
-       * emacs-lisp/authors.el (authors-aliases): Update.
-
-2006-07-14  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-display-buffer): Check for
-       gdb-source-window.  Add dedicated argument.
-       (gdb-display-separate-io-buffer, gdb-append-to-inferior-io)
-       (gdb-display-breakpoints-buffer, gdb-display-stack-buffer)
-       (gdb-display-threads-buffer, gdb-display-memory-buffer)
-       (gdb-display-locals-buffer): Use it.
-
-       * progmodes/gud.el (gud-display-line): Use gdb-display-buffer.
-       Set gdb-source-window.
-
-2006-07-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/autoload.el (make-autoload): Remove special handling of
-       minor modes, redundant with the custom-autoload line above.
-
-2006-07-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-post-command-function): Handle open-line too.
-
-2006-07-12  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/grep.el (grep-last-buffer): Doc fix.
-
-       * info.el (Info-try-follow-nearest-node): Doc fix.
-
-       * emacs-lisp/edebug.el (edebug-instrument-function):
-       Err if find-function-noselect gives no position.
-
-       * emacs-lisp/find-func.el (find-function-search-for-symbol):
-       If can't find definition, return nil for position.
-       (find-function-do-it): Handle new return value
-       of find-definition-noselect.
-       (find-definition-noselect, find-variable-noselect): Doc fix.
-       (find-function-noselect): Doc fix.
-
-       * help-mode.el (help-variable-def): Handle find-variable-noselect
-       returning no position.
-       (help-function-def): Likewise for find-function-search-for-symbol.
-       (help-face-def): Likewise.
-
-       * help-fns.el (describe-variable): Handle find-variable-noselect
-       returning no position.
-
-       * files.el (locate-file-completion): Avoid duplicates in result.
-
-       * cus-edit.el (custom-no-edit): New command.
-       (custom-mode-map): Remap to custom-no-edit instead of
-       using suppress-keymap.
-
-2006-07-12  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tumme.el (tumme-create-thumb, tumme-thumbnail-display-external)
-       (tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original)
-       (tumme-set-exif-data, tumme-get-exif-data): Use shell-command-switch.
-
-       * thumbs.el (thumbs-call-convert): Use shell-command-switch.
-
-2006-07-11  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-copy-current-file-name): Use buffer-name if
-       buffer-file-name is nil.
-
-2006-07-11  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (undo-ask-before-discard): Set to nil.
-
-       * vc.el (vc-exec-after): Don't delete process manually.
-       (vc-print-log): Run log-view-mode in process sentinel inside
-       inhibit-read-only.  Don't shrink window due to timing issues.
-
-       * progmodes/ebrowse.el (ebrowse-display-member-buffer):
-       Avoid using with-output-to-temp-buffer, which clobbers local vars.
-
-2006-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist):
-       Fix ambiguity introduced by last change.
-       (compilation-find-file): Move save-excursion to where it may
-       make sense.  Fix a left over `find-file'.
-
-2006-07-11  Robert J. Chassell  <bob@rattlesnake.com>
-
-       * textmodes/texinfmt.el (texinfo-format-separate-node):
-       Insert a string before point, which fits documentation, not after.
-       (texinfo-multitable-item): In a multitable row, insert any
-       additional needed @tabs and spaces.
-
-2006-07-11  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tumme.el (tumme-create-thumb, tumme-thumbnail-display-external)
-       (tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original)
-       (tumme-set-exif-data, tumme-get-exif-data): Use call-process
-       instead of shell-command.
-       (tumme-create-thumbnail-buffer, tumme-create-display-image-buffer)
-       (tumme-display-thumbs, tumme-modify-mark-on-thumb-original-file)
-       (tumme-display-image, tumme-get-exif-data): Use with-current-buffer.
-       (tumme-display-properties-format, tumme-dired-insert-marked-thumbs)
-       (tumme-thumbnail-set-image-description, tumme-gallery-generate)
-       (tumme-rotate-original, tumme-get-exif-file-name): Fit to 80 columns.
-
-2006-07-11  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (sit-for): Doc fix.  Specify normal arg list using fn-form.
-       Remove special case for seconds < 0.  Use (redisplay t) instead.
-
-2006-07-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/cc-awk.el (c-awk-escaped-nls*): Use eval-and-compile to
-       avoid compilation error.
-
-       * subr.el (sit-for): New function.
-
-       * play/hanoi.el (hanoi-sit-for): Check sit-for return value.
-
-2006-07-10  Richard Stallman  <rms@gnu.org>
-
-       * ldefs-boot.el (edebug): Update page.
-
-2006-07-10  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/authors.el (authors-ignored-files): Ignore changes
-       to FOR-RELEASE and TODO.
-
-2006-07-10  Romain Francoise  <romain@orebokech.com>
-
-       * emacs-lisp/authors.el (authors-aliases): Update.
-
-2006-07-10  Alan Mackenzie  <acm@muc.de>
-
-       * progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el:
-       * cc-mode.el: Changes to eradicate eval-after-load.
-
-2006-07-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/helper.el (Helper-help-scroller): Don't signal error
-       on non-char events.
-
-2006-07-09  Romain Francoise  <romain@orebokech.com>
-
-       * progmodes/compile.el (compilation-mode-font-lock-keywords):
-       Don't highlight start/end markers as compilation messages.
-
-       * isearch.el (isearch-yank-line): Let-bind `inhibit-field-text-motion'
-       to t.
-
-2006-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/fill.el (fill-region-as-paragraph): Refine last change.
-
-2006-07-08  Richard Stallman  <rms@gnu.org>
-
-       * term/x-win.el (x-handle-display): Add doc string.
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix.
-
-       * subr.el (def-edebug-spec): Move here.
-       * emacs-lisp/edebug.el (def-edebug-spec): Move to subr.el.
-
-       * imenu.el (imenu-choose-buffer-index): Doc fix.
-
-2006-07-08  Romain Francoise  <romain@orebokech.com>
-
-       * term/x-win.el (x-display-name): Fix typo.
-
-2006-07-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * hexl.el (hexl-find-file): Doc fix.
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix.
-
-2006-07-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * term/x-win.el (x-display-name): Doc fix.
-
-2006-07-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/fill.el (fill-delete-prefix): Don't ignore excessively
-       long prefixes.
-       (fill-region-as-paragraph): Don't round up to a whole line.
-       (fill-comment-paragraph): Don't include the code-before-the-comment
-       when calling fill-region-as-paragraph.
-
-       * international/mule.el (make-char): Remove redundancy.
-
-       * emacs-lisp/bytecomp.el (byte-compile-form): The `byte-compile'
-       property may contain an anonymous function rather than a symbol.
-
-       * pcvs-defs.el (cvs-temp-buffer-name): Fix non-hiddenness.
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist) <gnu>:
-       Use shy regexp.  Fix incorrect backref to potentially unmatched group.
-
-       * dirtrack.el (dirtrack-default-directory-function): Remove.
-       (dirtrack-directory-function): Use file-name-as-directory.
-       (dirtrack-windows-directory-function): Simplify.
-       (dirtrack-forward-slash, dirtrack-backward-slash)
-       (dirtrack-replace-slash): Remove.
-       (dirtrack-toggle): Adjust comint-preoutput-filter-functions as well.
-       (dirtrack): Fix wrong parenthesizing; use match-string.
-
-       * progmodes/octave-inf.el: Remove spurious * in docstrings.
-       (inferior-octave-mode): Only change the buffer-local value of
-       comint-dynamic-complete-functions.
-       (inferior-octave-mode-map, inferior-octave-mode-syntax-table):
-       Move the initialization to the declaration.
-       (inferior-octave-complete): Remove unused var `filter'.
-
-       * shell.el (shell-mode): Only change the buffer-local value of
-       comint-dynamic-complete-functions.
-
-2006-07-07  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-agenda-get-todos): Skip subtree also if
-       entry is skipped because it has been scheduled.
-       (org-prepare-agenda-buffers): Don't mark buffers as modified when
-       changing `:org-archived' and `:org-comment' properties.
-
-2006-07-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * server.el (server-select-display): Don't make the temp frame
-       minibuffer-only, in case it's not a temp frame.
-       (server-process-filter): Don't delete the temp frame if it's the
-       only one we have on that display.
-
-       * files.el (find-alternate-file): Doc fix.
-
-2006-07-05  Richard Stallman  <rms@gnu.org>
-
-       * files.el (abbreviate-file-name): Add save-match-data.
-
-2006-07-03  Richard Stallman  <rms@gnu.org>
-
-       * faces.el (read-face-name): Doc fix.
-
-2006-07-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * net/goto-addr.el (goto-address): Mark as safe for local evals.
-
-2006-07-05  Andre Spiegel  <spiegel@gnu.org>
-
-       * vc.el (vc-diff-internal): Fix prev change.
-
-2006-07-05  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/lisp-mode.el (emacs-lisp-mode-map): Use eval-buffer.
-       * play/dunnet.el (dun-load-d, dun-eval): Likewise.
-
-2006-07-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * thingatpt.el (symbol-at-point): Don't use `form-at-point' which
-       fails if the symbol contains chars like ( or '.
-       (bounds-of-thing-at-point): Remove unused vars `end' and `beg'.
-       (thing-at-point-bounds-of-url-at-point): Remove unused vars `url' and
-       `short'.
-
-2006-07-04  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (set-language-info): If LANG-ENV is
-       the current one, don't call set-language-environment, but call one
-       of set-language-environment-XXX to make INFO effective now.
-       (set-language-environment): Call set-language-environment-XXX
-       functions instead of doing the various setups directly.
-       (set-language-environment-coding-systems): Delete argument eol-type.
-       (set-language-environment-input-method)
-       (set-language-environment-nonascii-translation)
-       (set-language-environment-charset)
-       (set-language-environment-fontset)
-       (set-language-environment-unibyte): New functions.
-
-2006-07-03  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * locate.el (locate-update-when-revert): New option.
-       (locate-update-path): New option (suggested by Michael Albinus).
-       (locate-prompt-for-command): Whitespace change.
-       (locate-update): No longer offer to update the locate database by
-       default.  Implement the two new options.
-
-2006-07-04  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tooltip.el: Move comment about track-mouse...
-
-       * progmodes/gud.el: ...to here.
-
-2006-07-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * facemenu.el (facemenu-listed-faces): New var.
-       (facemenu-unlisted-faces): Variable deleted.
-       (facemenu-add-new-face): Use facemenu-listed-faces.
-
-       * emulation/viper-init.el, calendar/calendar.el:
-       * progmodes/make-mode.el: Delete calls to facemenu-unlisted-faces.
-
-2006-07-03  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-mode): Remove no invalid settings for
-       calc embedded mode.
-       (org-mode-p): New defsubst.
-       (org-save-all-org-buffers): New function.
-       (org-first-headline-recenter): Enclose outline-regexp in group
-       delimiters.
-       (org-set-tags): Keep single space after stars.
-
-2006-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.el (set-window-text-height): Only set window-min-height to
-       1 if that's the requested size.
-
-       * diff-mode.el (diff-find-file-name): Obey cvs-pcl-cvs-dirchange-re.
-       (diff-unified->context, diff-context->unified)
-       (diff-reverse-direction): Make sure the end marker stays at the end.
-       (diff-mode): Add the keymap table at the end of docstring.
-       Use lexical-let rather than constructing a closure manually.
-
-       * files.el (find-file-noselect-1): Remove unused var assignment.
-       (hack-local-variables-confirm): Print lists of strings as lists of
-       strings rather than lists of symbols.
-       (abbreviate-file-name, hack-local-variables-prop-line):
-       Use match-string.
-       (hack-one-local-variable): Move `make-local-variable' nearer its use.
-       (recover-session-finish): Use line-end-position.
-
-2006-07-02  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-handle-shell-command): Preserve current-buffer.
-
-2006-07-02  Daniel Pfeiffer  <occitan@esperanto.org>
-
-       * progmodes/make-mode.el (makefile-macroassign-regex):
-       Accept preceding keyword.
-       (makefile-gmake-statements): Reorganize, now that makepp has
-       "override" and also handle forgotten "override define".
-       (makefile-makepp-statements): Add new "global", "override export"
-       and "override global".
-
-2006-06-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/ada-mode.el (ada-which-compiler, ada-mode-menu)
-       (ada-compile-mouse-goto-error, ada-deactivate-properties)
-       (ada-no-auto-case): Fix typos in docstrings.
-
-2006-06-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * info.el (Info-find-node-2): Search for makeinfo version more
-       carefully.
-
-2006-06-29  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-prepare-agenda-buffers):
-       Use `invisible-OK' argument for `org-end-of-subtree'.
-       (org-export-cleanup-toc-line): Rename from `org-html-cleanup-toc-line'.
-       (org-beginning-of-item): Fix bug in regular expression for white line.
-       (org-export-as-html): Enforce space after bullet in plain list items.
-       (org-set-autofill-regexps): Require space after plain list bullet
-       for paragraph-start.
-       (org-ts-regexp3): New constant.
-       (org-at-timestamp-p): New optional argument ALSO-INACTIVE.
-       (org-timestamp-up-day, org-timestamp-down-day)
-       (org-timestamp-change): Work with inactive timestamps.
-       (org-ts-regexp1): Don't allow brackets in time stamps.
-
-2006-06-29  Nick Roberts  <nickrob@snap.net.nz>
-
-       * help-mode.el (help-xref-symbol-regexp): Add property as a keyword
-       for ignoring links.
-
-       * faces.el (read-face-name): Use it.
-
-2006-06-28  Juri Linkov  <juri@jurta.org>
-
-       * buff-menu.el (list-buffers-noselect): Compare Info file
-       with the string "dir" to detect Info directory.
-
-       * complete.el (partial-completion-mode): In lambda for
-       `choose-completion-string-functions' use full function signature
-       with 4 args, and move point to the end of the minibuffer only if arg
-       `mini-p' is non-nil.
-
-2006-06-28  John Paul Wallington  <jpw@pobox.com>
-
-       * ibuffer.el (ibuffer-mode): Doc fix.
-
-2006-06-28  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-context): New contexts :item-bullet,
-       :latex-fragment, :latex-preview.
-       (org-overlays-at, org-overlay-start, org-overlay-end):
-       New compatibility functions.
-       (org-inside-LaTeX-fragment-p): More accurate matching, using the
-       exact regexp that will be used during export.
-       (org-latex-regexps): New variable.
-       (org-cdlatex-mode): Improve advice for `texmathp'.
-       (turn-on-org-cdlatex): New function.
-
-2006-06-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-handle-font-selection): Change keys of
-       mac-atsu-font-table from strings to numbers.
-       (mac-ts-caret-position): Use also when cursor-type is nil.
-       (mac-ts-update-active-input-area): Add Mac OS Classic support.
-       Relax condition for using overlay strings.
-       Use mac-ts-caret-position face when cursor-type is nil.
-
-2006-06-26  Kim F. Storm  <storm@cua.dk>
-
-       * help.el (view-emacs-news): Declare `res' in the right let* form.
-
-2006-06-25  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/rcompile.el (remote-compile): Replace ange-ftp based
-       implementation by Tramp functions.
-       Suggested by Marc Abramowitz <msabramo@gmail.com>.
-
-       * net/tramp.el (tramp-unload-tramp): Provide a doc string.
-
-2006-06-24  Yoshinori Koseki  <kose@meadowy.org>
-
-       * international/fontset.el (setup-default-fontset): Fix a typo in
-       the "Oriya-Akruti" registry name.
-
-2006-06-23  Lars Hansen  <larsh@soem.dk>
-
-       * desktop.el (desktop-full-file-name): New function.
-       (desktop-kill, desktop-save, desktop-remove, desktop-read)
-       (desktop-revert): Use it.
-       (desktop-clear, desktop-save, desktop-remove): Add autoload cookie.
-       (desktop-after-read-hook): Add option list-buffers.
-       (desktop-locals-to-save): Add tab-width.
-       (desktop-save-mode, desktop-no-desktop-file-hook, desktop-save-hook):
-       Fix docstring.
-
-2006-06-23  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-cdlatex-mode-map)
-       (org-cdlatex-texmathp-advice-is-done): New variables.
-       (org-cdlatex-mode): New minor mode.
-       (org-inside-LaTeX-fragment-p, org-try-cdlatex-tab): New functions.
-       (org-cdlatex-underscore-caret, org-cdlatex-math-modify): New commands.
-       (org-export-with-archived-trees): New option.
-       (org-open-file): Remove the call to `convert-standard-filename'.
-       (org-archive-tag, org-agenda-skip-archived-trees)
-       (org-cycle-open-archived-trees)
-       (org-sparse-tree-open-archived-trees): New options.
-       (org-cycle-hide-archived-subtrees, org-hide-archived-subtrees)
-       (org-toggle-tag, org-prepare-agenda-buffers, org-agenda-skip):
-       New functions.
-       (org-agenda-toggle-archive-tag, org-toggle-archive-tag): New commands.
-       (org-agenda-mode-map): Add binding of `org-agenda-toggle-archive-tag'.
-       (org-mode-map): Add binding for `org-toggle-archive-tag'.
-       (org-timeline, org-agenda-list, org-todo-list, org-tags-view):
-       Call `org-prepare-agenda-buffers'.
-       (org-occur, org-scan-tags): Call `org-hide-archived-subtrees'.
-       (org-file-apps, org-file-apps-defaults-gnu)
-       (org-file-apps-defaults-macosx, org-file-apps-defaults-windowsnt):
-       Handle remote files by forcing them to be opened in Emacs.
-
-2006-06-23  Andre Spiegel  <spiegel@gnu.org>
-
-       * vc.el (vc-diff-knows-L): New variable.
-       (vc-diff-internal): Use it to handle "diff" programs that don't
-       understand -L.  This works automatically, no user action is necessary.
-
-2006-06-23  Daniel Brockman  <daniel@brockman.se>
-
-       * net/rcirc.el (rcirc-default-user-full-name): Default to
-       `rcirc-default-user-name' instead of `rcirc-user-name' (which no
-       longer exists).
-       (rcirc-process-list): Check `buffer-live-p' before attempting to
-       switch to a buffer.
-
-2006-06-23  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-mode): Fix initialization of coding systems
-       based on rcirc-coding-system-alist.
-
-2006-06-23  Martin Rudalics  <rudalics@gmx.at>
-
-       * cus-edit.el (customize-apropos): A better error message.
-       (top level) <debug-ignored-errors>: Extend and update the list of
-       ignored error messages.
-
-2006-06-23  Michael Ernst  <mernst@alum.mit.edu>
-
-       * complete.el (PC-do-completion): Retain capitalization of user
-       input, when possible, even if completion-ignore-case is set.
-
-2006-06-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * generic-x.el (bat-generic-mode): Support .cmd files.
-
-       * dos-w32.el (top level): Use find-file-not-found-functions
-       instead of the obsolete find-file-not-found-hooks.
-
-2006-06-22  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (grep-mode-font-lock-keywords): Correct regexps
-       to recognize mode name containing submodes, such as Grep/lw.
-
-2006-06-21  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (line-move-1): Check for move-end-of-line instead of
-       end-of-line when setting temporary-goal-column.
-
-2006-06-21  Miles Bader  <miles@gnu.org>
-
-       * play/cookie1.el (cookie): Work properly when there's only one entry.
-
-2006-06-21  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-exited): Ensure overlay arrow gets killed.
-       (gdb-frame-handler): Generalize frame regexp for templates.
-
-2006-06-20  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/appt.el (appt-display-format): Default value must be
-       one of the customize options.
-
-2006-06-20  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Update key availability info.
-       Bind C-return.
-
-       * term.el (term-delete-lines, term-insert-lines): Clarify comments.
-
-2006-06-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (hack-local-variables): Run `hack-local-variables-hook'
-       whether or not a local variables list is defined.
-
-       * msb.el (msb): Move `sit-for' hack here to handle both
-       "mouse-down and drag" and "mouse-up and select" situations.
-       (mouse-select-buffer): Move `sit-for' hack to `msb'.
-
-2006-06-20  Kenichi Handa  <handa@m17n.org>
-
-       * international/characters.el (word-combining-categories):
-       Add entries for 2-byte Han characters.
-
-2006-06-19  Richard Stallman  <rms@gnu.org>
-
-       * bindings.el (mode-line-format): Save some mode line space.
-
-       * files.el (find-file-noselect): Improve the question wording.
-       (basic-save-buffer-2): Mask UMASK against 666.
-
-       * mouse.el (mouse-drag-vertical-line-rightward-window): New function.
-       (mouse-drag-vertical-line): Call it.
-
-       * cus-edit.el (customize-option, customize-option-other-window):
-       Error if SYMBOL is nil.
-
-2006-06-19  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el: Require noutline, also on XEmacs.
-       (org-end-of-subtree): Return point.
-       (org-dblock-start-re, org-dblock-end-re): New constants.
-       (org-create-dblock, org-prepare-dblock, org-map-dblocks)
-       (org-dblock-update, org-update-dblock, org-beginning-of-dblock)
-       (org-update-all-dblocks, org-find-dblock): New functions.
-       (org-collect-clock-time-entries): New function.
-       (org-html-handle-time-stamps): Never export CLOCK timeranges.
-       (org-fixup-indentation): Modify to deal correctly with lines
-       starting with TAB.  Only one argument DIFF now.
-       (org-demote, org-promote): Call `org-fixup-indentation' with just
-       one argument, DIFF.
-       (org-mode): Don't mark buffer as modified when aligning tables.
-       (org-clock-sum): Don't mark buffer modified when adding time sum
-       properties.
-       (org-export-as-html): Add support for a link validation function.
-       (org-archive-all-done): New function.
-       (org-archive-subtree): New prefix argument.  When set, archive all
-       done subtrees in this buffer.
-       (org-remove-clock-overlays)
-       (org-remove-occur-highlights): Use `org-inhibit-highlight-removal'.
-       (org-inhibit-highlight-removal): New variable, for dynamic scoping.
-       (org-put-clock-overlay): Don't swallow last headline character
-       when displaying overlay.
-       (org-store-link): Link to `image-mode' with just the file name.
-
-2006-06-18  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-cmd.el (viper-special-read-and-insert-char):
-       Use read-key-sequence.
-       (viper-after-change-undo-hook): Misc enhancements.
-       (viper-after-change-undo-hook): New hook.
-       (viper-undo): Use viper-after-change-undo-hook.
-       (viper-add-newline-at-eob-if-necessary): Widen before making changes.
-       (viper-next-line-at-bol): If point is on a widget or a button, simulate
-       clicking on that widget/button.
-
-       * viper.el (viper-mode): Allow a separate cursor color in Emacs state.
-
-       * ediff-diff (ediff-test-patch-utility): Catch errors.
-       (ediff-actual-diff-options, ediff-actual-diff3-options): New variables.
-       (ediff-set-actual-diff-options): New function.
-       (ediff-reset-diff-options, ediff-toggle-ignore-case):
-       Use ediff-set-actual-diff-options.
-       (ediff-extract-diffs): Catch errors.
-       (ediff-whitespace): Add non-breakable space.
-       (ediff-same-file-contents): Catch errors.
-
-       * ediff-mult.el (ediff-collect-custom-diffs):
-       Save coding-system-for-read.
-
-       * ediff-vers.el (ediff-keep-tmp-versions): New variable.
-       (ediff-vc-internal, ediff-vc-merge-internal):
-       Use ediff-delete-version-file.
-       (ediff-delete-version-file): New function.
-
-       * ediff-wind.el (ediff-control-frame-parameters): Set frame fringes.
-
-       * ediff.el (ediff-directories, ediff-directory-revisions)
-       (ediff-merge-directories, ediff-merge-directories-with-ancestor)
-       (ediff-directories-internal, ediff-merge-directory-revisions)
-       (ediff-merge-directory-revisions-with-ancestor)
-       (ediff-directories3): Use read-directory-name.
-
-2006-06-18  Ralf Angeli  <angeli@caeruleus.net>
-
-       * textmodes/tex-mode.el (tex-font-lock-match-suscript):
-       Remove superfluous part of regexp for brace matching which is handled
-       by `scan-lists' call.
-
-2006-06-16  Richard Stallman  <rms@gnu.org>
-
-       * obsolete/options.el (list-options): Put "obsolete" msg in buffer.
-
-       * files.el (basic-save-buffer-2): For a new precious file,
-       use the default modes in the return value.
-
-       * facemenu.el (facemenu-color-alist): Doc fix.
-
-       * cus-edit.el (custom-guess-name-alist): Recognize `-flag'.
-
-2006-06-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * cus-start.el (all): Add mac-ts-script-language-on-focus.
-
-       * term/mac-win.el (mac-text-encoding-ascii): New constant.
-       (mac-utxt-to-string): Use it.
-       (mac-ts-update-active-input-area): Use mac-ae-number.
-
-2006-06-15  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term.el (term-handle-scroll, term-delete-lines)
-       (term-insert-lines): Fix off by one errors.
-
-2006-06-15  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * net/tramp.el (tramp-touch): Use UTC to express time.
-
-2006-06-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mail/sendmail.el (mail-send): Search explicitly for
-       mail-header-separator when checking for corrupted header lines.
-
-2006-06-15  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-same-frame): New option.
-       (gud-old-arrow, gdb-frame-begin, gdb-printing): New variables.
-       (gdb-init-1): Initialise them.
-       (gdb-starting): Reset gdb-printing
-       (gdb-starting): Save value of gud-overlay-arrow-position.
-       (gdb-frame-begin): Set gdb-frame-begin, gdb-printing.
-       (gdb-stopped): Don't look for source if calling procedure e.g "p a ()".
-       Use gdb-*-gdb-buffer conditionally on gdb-same-frame.
-       (gdb-frame-gdb-buffer): Keep menu bar, tool bar for GUD buffer.
-
-2006-06-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs.el (cvs-retrieve-revision): Use decode-coding-inserted-region.
-
-2006-06-13  Martin J. Reed  <mjreed@essex.ac.uk>  (tiny change)
-
-       * net/ldap.el (ldap-ldapsearch-args): Default to SASL search.
-       (ldap-search-internal): Keep error messages, and a regexp fix.
-
-2006-06-12  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * files.el (hack-local-variables-confirm):
-       Display string value using its printed representation.
-
-2006-06-11  Chong Yidong  <cyd@stupidchicken.com>
-
-       * server.el (server-edit): No-op if no server buffers exist.
-
-2006-06-11  Robert J. Chassell  <bob@rattlesnake.com>
-
-       * textmodes/page-ext.el (pages-directory-for-addresses):
-       Including `pages-directory-address-mode' in the function results
-       in the message "Buffer in which pages were found is deleted".
-
-2006-06-10  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-agenda-mode-map): Add bindings for
-       clocking functions.
-
-       (org-agenda-clock-in, org-check-running-clock)
-       (org-clock-out-if-current, org-remove-clock-overlays)
-       (org-put-clock-overlay): New functions.
-       (org-clock-marker, org-clock-file-total-minutes)
-       (org-clock-overlays): New variables.
-       (org-clock-display, org-clock-sum, org-clock-cancel)
-       (org-clock-out, org-clock-in): New commands.
-       (org-export): New function.
-       (org-emph-re): New constant.
-       (org-set-emph-re, org-do-emphasis-faces): New functions.
-       (org-emphasis-regexp-components, org-emphasis-alist): New options.
-       (org-set-font-lock-defaults): Call `org-do-emphasis-faces'.
-       (org-export-html-convert-emphasize): Use the configurable emphasis.
-       (org-cleaned-string-for-export): Make multiline emphasis visible
-       to the exporter.  New optional argument PARAMETERS.
-       (org-export-as-html): Specify :emph-multiline parameter to
-       `org-cleaned-string-for-export'.
-
-2006-06-10  Richard Stallman  <rms@gnu.org>
-
-       * help.el (help-for-help-internal): Clean up help text.
-
-2006-06-10  Andreas Schwab  <schwab@suse.de>
-
-       * language/ethio-util.el (ethio-fidel-to-java-buffer): Fix quoting
-       in doc string.
-
-       * progmodes/cperl-mode.el (cperl-short-docs): Likewise.
-
-2006-06-09  Karl Chen  <quarl@cs.berkeley.edu>
-
-       * progmodes/make-mode.el (makefile-fill-paragraph): Don't remove
-       spaces after the comment start.
-
-2006-06-09  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * play/pong.el (pong-init-buffer):
-       Fill buffer with spaces instead of ^A.
-
-       * textmodes/ispell.el (ispell-kill-ispell): If ispell has been
-       launched asynchronously, delete its process instead of being cool.
-       (ispell-async-processp): Check for `delete-process' existence
-       instead of `kill-process' one for consistency.
-
-2006-06-09  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers-1)
-       (gdb-prompt, gdb-set-gud-minor-mode-existing-buffers): Show status
-       in mode line at startup.
-
-2006-06-08  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-take-first-match, ido-push-dir-first): New commands.
-       (ido-init-completion-maps): Bind them to M-SPC and M-v.
-       (ido-copy-current-file-name): Repeating C-w inserts whole file name.
-       (ido-file-internal): Pass full file name to write-file.
-       (ido-read-internal): Only pop stack elements automatically if they
-       actually match an existing directory or file name.
-
-2006-06-07  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule.el (find-auto-coding): Don't handle the short
-       name `char-trans'.
-
-       * files.el (hack-local-variables-prop-line)
-       (hack-local-variables): Cancel the previous change.
-
-2006-06-06  Jesper Harder  <harder@phys.au.dk>
-
-       * ediff-diff.el (ediff-test-utility): Protect against file-error.
-
-2006-06-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * diff-mode.el (diff-mode): Set buffer-read-only to t when
-       diff-default-read-only is non-nil.
-       (diff-hunk-kill, diff-file-kill, diff-split-hunk)
-       (diff-refine-hunk): Set inhibit-read-only to t.
-
-       * diff.el (diff-sentinel, diff): Set inhibit-read-only to t when
-       modifying the *Diff* buffer.
-       (diff-process-filter): New filter function for diff process that
-       sets inhibit-read-only to t when modifying the *Diff* buffer.
-
-2006-06-06  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-archive-subtree): Use end-of-subtree as
-       insertion point and control the number of empty lines.
-       (org-paste-subtree): Limit the number of empty lines at the end of
-       the inserted tree.
-       (org-agenda): Use buffer name of current file for narrowing.
-       (org-export-as-xml): Command removed.
-       (org-export-xml-type): Option removed.
-       (org-mode-map): Call `org-export-as-xoxo' directly.
-       (org-get-indentation): New optional argument LINE.
-       (org-fix-indentation, org-remove-tabs): New functions.
-       (org-export-as-ascii, org-ascii-level-start): Determine and apply
-       correct indentation for headlines that are converted it items.
-       (org-skip-comments): Remove table lines that contain narrowing
-       cookies but no other non-empty fields.
-       (org-set-tags): Allow groups of mutually exclusive tags.
-       (org-cmp-time): Sort 24:21 before items without time.
-       (org-get-time-of-day): Fix the interpretation of 12pm and 12am.
-       (org-open-at-point): Require double colon also for numbers.
-
-2006-06-06  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-default-file-method, ido-default-buffer-method):
-       Make choice values consistent with corresponding command names.
-       (ido-visit-buffer): Update accordingly.  Default to selected-window.
-
-2006-06-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-running): Fix doc string.
-       (gud-menu-map): Use :visible instead fo :enable for debugger test.
-       (gud-tooltip-modes): Add python-mode.
-       (gud-tooltip-print-command): Add pdb.  Remove perldb.
-
-2006-06-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (bootstrap, $(lisp)/mh-e/mh-loaddefs.el):
-       Quote $(EMACS).
-
-2006-06-05  Richard Stallman  <rms@gnu.org>
-
-       * faces.el (defined-colors): Doc fix.
-
-2006-06-05  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * vc.el (vc-process-filter): Inhibit undo info collection around
-       call to insert.
-       (vc-setup-buffer): Likewise for call to erase-buffer.
-       (vc-do-command): Likewise for call to process-file.
-
-2006-06-05  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Use a conditional help echo
-       for gud-go.
-       (gud-common-init): Other debuggers may trigger error.
-
-2006-06-05  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule.el (find-auto-coding):
-       Handle enable-character-translation in file header.
-
-2006-06-04  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/authors.el (authors-aliases): Add mode aliases.
-       (authors-fixed-entries): Fix spelling.
-       (authors-canonical-file-name): Don't report error for wildcards.
-
-       * help.el (view-emacs-news): Rewrite to support new NEWS,
-       NEWS.major, and NEWS.1-17 file naming.  Add more intelligence,
-       e.g. version 10 matches 1.10, and don't be confused by version 1.1
-       being a prefix of 1.12 (etc).  A numeric prefix arg also works.
-
-2006-06-03  Vivek Dasmohapatra  <vivek@etla.org>
-
-       * progmodes/sh-script.el (sh-quoted-exec): New face for quoted
-       exec constructs like `foo bar`.
-       (sh-quoted-subshell): New helper function to search for a possibly
-       nested subshell (like `` or $()) within a "" quoted string.
-       (sh-font-lock-keywords-var): Add sh-quoted-exec for Bash.
-       (sh-apply-quoted-subshell): Flag quote characters inside a
-       subshell, which is itself already in a quoted region, as
-       punctuation, since this is the closest to what they actually are.
-       (sh-font-lock-syntactic-keywords): Add sh-quoted-subshell and
-       sh-apply-quoted-subshell.
-       (sh-font-lock-syntactic-face-function): Apply the new face for
-       text inside `` instead of the old font-lock-string-face.
-
-2006-06-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-ts-active-input-overlay): Add defvar.
-       (mac-ae-number, mac-ae-frame, mac-ae-script-language)
-       (mac-bytes-to-text-range, mac-ae-text-range-array)
-       (mac-ts-update-active-input-buf, mac-split-string-by-property-change)
-       (mac-replace-untranslated-utf-8-chars, mac-ts-update-active-input-area)
-       (mac-ts-unicode-for-key-event): New functions.
-       (mac-handle-toolbar-switch-mode): Use mac-ae-frame.
-       (mac-handle-font-selection): Use mac-ae-number.
-       (mac-ts-active-input-buf, mac-ts-update-active-input-area-seqno):
-       New variables.
-       (mac-ts-caret-position, mac-ts-raw-text, mac-ts-selected-raw-text)
-       (mac-ts-converted-text, mac-ts-selected-converted-text)
-       (mac-ts-block-fill-text, mac-ts-outline-text)
-       (mac-ts-selected-text, mac-ts-no-hilite): New faces.
-       (mac-ts-hilite-style-faces): New constant.
-       (mac-apple-event-map): Bind text input events.
-       (mac-dispatch-apple-event): Use command-execute instead of
-       call-interactively.
-       (global-map): Don't bind mac-apple-event.
-       (special-event-map): Bind mac-apple-event.
-
-2006-06-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (EMACS): Remove quotes from the Emacs executable
-       file name.
-       (emacs): Enclose the value of $(EMACS) in quotes.
-
-2006-06-02  Juri Linkov  <juri@jurta.org>
-
-       * international/mule.el (sgml-html-meta-auto-coding-function):
-       Remove the condition `(search-forward "<html" size t)'.
-       Replace `\"' with `[\"']?' in `re-search-forward'.
-
-2006-06-02  Kenichi Handa  <handa@m17n.org>
-
-       * files.el (hack-local-variables-prop-line): Ignore `char-trans'
-       as well as `coding'.
-       (hack-local-variables): Likewise.
-
-       * international/mule.el (enable-character-translation):
-       Put permanent-local and safe-local-variable properties.
-       (find-auto-coding): Handle char-trans: tag.
-
-2006-06-02  Juri Linkov  <juri@jurta.org>
-
-       * international/mule.el (sgml-html-meta-auto-coding-function):
-       Limit the search by the end of the HTML header (if any).
-
-2006-06-01  Richard Stallman  <rms@gnu.org>
-
-       * subr.el (with-current-buffer): Doc fix.
-
-2006-06-02  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist::gcov-*):
-       Almost rewrite.  Underlines over all lines of gcov output are too
-       uncomfortable to read.  Suggested by Dan Nicolaescu.
-
-2006-06-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * progmodes/inf-lisp.el (inferior-lisp-mode): Doc fixes.
-
-       * shell.el (shell-mode): Use shell-mode-map in docstring.
-
-       * comint.el (comint-send-input): Do not add help-echo and
-       mouse-face to input if `comint-use-prompt-regexp' is non-nil.
-
-2006-06-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el: Change x-menu-bar-start to menu-bar-open.
-
-2006-06-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-look-up-stack): New variable.
-       (gdb-stopped, gdb-info-stack-custom): If there is no source info
-       look up the stack and pop up GUD buffer if necessary.
-       (gdb-frames-select): Remove redundant call to gud-display-frame.
-       (gdb-info-threads-custom): Keep point at start of buffer.
-       (gdb-find-file-hook): Make it work for pre-GDB 6.4.
-
-2006-05-31  Juri Linkov  <juri@jurta.org>
-
-       * replace.el (query-replace-read-from, query-replace-read-to):
-       Bind `history-add-new-input' to nil.  Call `add-to-history'.
-
-2006-05-31  Takaaki Ota  <Takaaki.Ota@am.sony.com>
-
-       * textmodes/table.el: Convert all HTML tags to lower case for
-       XHTML compatibility.
-
-2006-05-31  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/compile.el:
-       (compilation-error-regexp-alist-alist::gcov-called-line):
-       Don't put face on `-' lines in gcov file.  Suggested by Dan Nicolaescu.
-
-2006-05-31  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-query-cmdline, gud-common-init):
-       Revert inadvertent changes made with last commit.
-
-2006-05-30  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * textmodes/flyspell.el (turn-on-flyspell, turn-off-flyspell):
-       New functions.
-
-       * textmodes/text-mode.el (text-mode-hook): Use turn-on-flyspell.
-
-2006-05-30  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-agenda-highlight-todo): Make sure regexp
-       only matches in the right place.
-       (org-upcoming-deadline): New face.
-       (org-agenda-get-deadlines): Use new face `org-upcoming-deadline'.
-       (org-export-ascii-underline): Rename constant `org-ascii-underline'
-       and make it an option.
-       (org-export-ascii-bullets): New option.
-       (org-export-as-html): Many changes to emit valid XHTML.
-       (org-par-open): New variable.
-       (org-open-par, org-close-par-maybe, org-close-li-maybe): New functions.
-       (org-html-do-expand, org-section-number): Fix case in `replace-match'.
-       (org-timeline): Pass `org-timeline-show-empty-dates' to
-       `org-get-all-dates'.  Interpret empty dates returned by
-       `org-get-all-dates'.
-       (org-get-all-dates): New argument EMPTY.  Add dates without
-       entries to the list, mark large ranges of empty dates.
-       (org-point-in-group, org-context): New functions.
-
-2006-05-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-stop-subjob): Make it work in all buffers.
-
-       * progmodes/gdb-ui.el: Move gdb-mouse-toggle-breakpoint-* to
-       C-mouse-1.  Move gdb-mouse-until to mouse-3, gdb-mouse-jump
-       to C-mouse-3 (for 2 button mice).
-       (gdb-send): Do the right thing for C-d.
-
-       * speedbar.el (speedbar-detach): Delete.
-       (speedbar-easymenu-definition-trailer): Remove speedbar-detach as
-       it breaks things.
-       (speedbar-reconfigure-keymaps): Always add extra items to pop up menu.
-
-2006-05-30  Daniel Pfeiffer  <occitan@esperanto.org>
-
-       * files.el (auto-mode-alist): Add makepp suffix and optional mk on
-       Makeppfile.
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist):
-       Add makepp diagnostic.
-
-2006-05-29  Richard Stallman  <rms@gnu.org>
-
-       * window.el (fit-window-to-buffer): Doc fix.
-
-       * help.el (temp-buffer-max-height): Doc fix.
-
-       * subr.el (with-current-buffer): Doc fix.
-
-2006-05-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el: Bind F10 to menu-bar-start if available.
-
-2006-05-28  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term.el (term-if-xemacs, term-ifnot-xemacs): Delete, replace
-       uses with a simple test.
-       (term-set-escape-char, term-mode, term-check-kill-echo-list)
-       (term-send-raw-string, term-send-raw, term-mouse-paste)
-       (term-char-mode, term-line-mode, term-exec, term-sentinel)
-       (term-handle-exit, term-read-input-ring)
-       (term-previous-matching-input-string)
-       (term-previous-matching-input-string-position)
-       (term-previous-matching-input-from-input)
-       (term-replace-by-expanded-history, term-send-input)
-       (term-skip-prompt, term-bol, term-send-invisible)
-       (term-kill-input, term-delchar-or-maybe-eof)
-       (term-backward-matching-input, term-check-source)
-       (term-proc-query, term-emulate-terminal)
-       (term-handle-colors-array, term-process-pager, term-pager-line)
-       (term-pager-bob, term-unwrap-line, term-word)
-       (term-dynamic-complete-filename)
-       (term-dynamic-complete-as-filename)
-       (term-dynamic-simple-complete): Replace one arm ifs with whens or
-       unlesses.
-
-2006-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * files.el (hack-one-local-variable-eval-safep): Don't burp if used
-       during bootstrapping.
-
-       * emacs-lisp/ewoc.el (ewoc--current-dll): Remove.
-       Basically undo the change of 2006-05-26: use extra arguments instead of
-       dynamic scoping.
-       (ewoc-locate): Remove unused var `footer'.
-
-2006-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/ewoc.el (ewoc--insert-new-node): Use ewoc--refresh-node.
-
-       * emacs-lisp/autoload.el (no-update-autoloads): Declare.
-       (generate-file-autoloads): Obey it.  Return whether autoloads were
-       added at point or not.
-       (update-file-autoloads): Use this new return value.
-       Remove redundant test for the presence of an autoload cookie.
-
-       * emacs-lisp/autoload.el (autoload-find-file): New fun.
-       This one calls hack-local-variables.
-       (generate-file-autoloads, update-file-autoloads): Use it.
-
-       * textmodes/bibtex.el (bibtex-autokey-name-case-convert-function)
-       (bibtex-sort-entry-class): Add safe-local-variable predicate.
-       (bibtex-sort-entry-class-alist): Don't set the global value.
-       (bibtex-init-sort-entry-class-alist): New fun.
-       (bibtex-sort-buffer, bibtex-prepare-new-entry): Call it to compute
-       bibtex-init-sort-entry-class-alist from the buffer-local value (if any)
-       of bibtex-init-sort-entry-class.
-
-2006-05-28  Richard Stallman  <rms@gnu.org>
-
-       * subr.el (load-history-regexp): If FILE is relative, insist
-       entire last name component must match it.
-       (load-history-filename-element, load-history-regexp): Doc fixes.
-
-2006-05-29  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/bindat.el (bindat-idx, bindat-raw): Rename dynamic vars
-       `pos' and `raw-data' for clarity, as eval forms may access these.
-
-2006-05-28  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/bindat.el (bindat--unpack-u8): Use aref also for strings.
-
-2006-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/make-mode.el (makefile-browser-map)
-       (makefile-mode-syntax-table): Move initialization inside declaration.
-       (makefile-fill-paragraph): Use the default comment-filling code.
-
-2006-05-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * replace.el (query-replace-defaults): New variable.
-       (query-replace-read-from): Use `query-replace-defaults' for
-       default value, instead of history list.
-       (query-replace-read-to): Update `query-replace-defaults'.
-
-2006-05-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * msb.el (mouse-select-buffer): Minor fix to make popup menu work
-       with no X toolkit.
-
-2006-05-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tumme.el (tumme-show-all-from-dir-max-files): Fix typo.
-       (tumme-show-all-from-dir): Add autoload.
-
-2006-05-27  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el: Change a lot of `(if .. (progn ..)' to `(when ..)'.
-       (tumme-remove-tag): Fix bug.
-
-2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc--create): No longer take HEADER and
-       FOOTER args.  Update unique caller.
-       (ewoc-delete): Compute last node once before looping.
-       (ewoc--node-branch): Merge into unique caller.
-       (ewoc--node): Don't define constructor make-ewoc--node for this
-       structure.
-       (ewoc): Add member `hf-pp' to this structure.
-       (ewoc--wrap): New func.
-       (ewoc-create): Take additional arg NOSEP.  If nil, wrap node and
-       header/footer pretty-printers.  Save header/footer pretty-printer.
-       (ewoc-set-hf): Use ewoc's header/footer pretty-printer.
-
-       * pcvs.el (cvs-make-cvs-buffer): Specify NOSEP to `ewoc-create'.
-
-2006-05-27  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * dired.el (dired-mode-map): Change `tumme-tag-remove' to
-       `tumme-delete-tag'.  Rename `Remove Image Tag' to `Delete Image
-       Tag'.  Change "Compare directories..." to "Change Directories...".
-       Move tumme commands to Operate, Regexp and Immediate menus.
-       Change "Add Comment" to "Add Image Comment".  Change "Add Image
-       Tag" to "Add Image Tags".
-
-       * tumme.el (tumme-delete-tag): Rename from `tumme-tag-remove'.
-       (tumme-setup-dired-keybindings): Change `tumme-add-remove' to
-       `tumme-delete-tag'.
-
-2006-05-26  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * shell.el (shell-mode): Call shell-dirtrack-mode after
-       list-buffers-directory is made a local variable, to avoid setting
-       the default value.
-
-2006-05-26  Kevin Ryde  <user42@zip.com.au>
-
-       * info.el (Info-index-next): Use where-is-internal to report
-       actual binding of Info-index-next, rather than hard-coded `,'.
-
-2006-05-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * menu-bar.el (menu-bar-apropos-menu): Move "Find Key in Manual"
-       and "Find Command in Manual" to here.
-
-       * buff-menu.el (list-buffers-noselect): For Info buffers, use
-       Info-current-file as the file name.
-
-2006-05-26  Jonathan Yavner  <jyavner@member.fsf.org>
-
-       * ses.el (defadvice undo-more): Delete this defadvice.  The undo
-       overrides will now be done a different way.
-       (ses-set-parameter): Reapply this function for undo.
-       (ses-set-header-row): Reconstruct header row during undo.
-       (ses-widen): New function.
-       (ses-goto-data, ses-reconstruct-all): Use new function.
-       (ses-command-hook): Widen buffer during undo, before unupdating
-       the cells.
-       (ses-insert-row, ses-delete-row): Widen buffer during undo.
-       (ses-load, ses-header-row): Permit empty (zero-row) spreadsheets.
-       (ses-read-cell): Avoid stupid warning for RET RET on a cell whose
-       formula hasn't been executed yet.
-
-2006-05-26  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * comint.el (comint-kill-whole-line): Rename arg to count.
-       Fix doc string.
-
-2006-05-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (backup-buffer-copy): Remove deleted MUSTBENEW argument
-       to copy-file.
-
-2006-05-26  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * simple.el (toggle-truncate-lines): Make arg optional for
-       backward compatibility.
-
-2006-05-26  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc--current-dll): New var.
-       (ewoc--node-next, ewoc--node-prev, ewoc--node-nth): Don't take
-       DLL arg.  Instead, use ewoc--current-dll.  Update all callers.
-       (ewoc--set-buffer-bind-dll-let*): Bind ewoc--current-dll, not `dll'.
-       (ewoc--adjust): Use ewoc--current-dll.
-       (ewoc-next, ewoc-prev, ewoc-nth): Bind ewoc--current-dll.
-
-2006-05-26  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-next-item, org-previous-item): Emit more
-       compact error message.
-       (org-tags-view): Refresh category table in each file.
-       (org-table-justify-field-maybe): Remove superfluous arguments to
-       `format'.
-       (org-export-as-html): Insert "<p>" before postamble.
-       (org-paste-subtree, org-kill-is-subtree-p): Check for empty kill ring.
-
-2006-05-26  Kenichi Handa  <handa@m17n.org>
-
-       * textmodes/po.el (po-find-charset): Pay attention to the case
-       FILENAME is a cons (NAME . BUFFER).
-       (po-find-file-coding-system-guts): Likewise.
-
-       * arc-mode.el (archive-set-buffer-as-visiting-file):
-       Call find-operation-coding-system with (FILENAME . BUFFER).
-
-       * tar-mode.el (tar-extract): Call find-operation-coding-system
-       with (FILENAME . BUFFER).
-
-       * international/mule.el (decode-coding-inserted-region):
-       Call find-operation-coding-system with (FILENAME . BUFFER).
-
-2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-mode.el (image-toggle-display): Use buffer contents to
-       generate image for a remote file.
-
-2006-05-25  Juri Linkov  <juri@jurta.org>
-
-       * replace.el (query-replace-read-from, query-replace-read-to):
-       Remove 8th arg KEEP-ALL in read-from-minibuffer.
-
-2006-05-25  Rajesh Vaidheeswarran  <rv@gnu.org>
-
-       * whitespace.el (whitespace-cleanup): Change to cleanup
-       region if one is active.
-       * whitespace.el (whitespace-cleanup-internal): New internal method.
-
-2006-05-25  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * dired.el (dired-mode-map): Add help-echo strings to tumme
-       commands.  Bind `tumme-dired-display-image' to C-t i.
-
-       * tumme.el (tumme-display-image): Change documentation string slightly.
-       (tumme-dired-display-image): Add call to `display-buffer'.
-
-2006-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/bindat.el (bindat-unpack, bindat-pack):
-       Signal error if RAW-DATA is a multibyte string.
-
-2006-05-24  Richard Stallman  <rms@gnu.org>
-
-       * subr.el (with-local-quit): When handling `quit' signal,
-       make a chance for quit-flag to cause a quit.
-
-       * emacs-lisp/advice.el (ad-enable-advice, ad-activate)
-       (ad-disable-advice): Add autoloads.
-
-       * subr.el (read-passwd): Copy PROMPT before changing its properties.
-
-2006-05-25  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * dired.el (dired-mode-map): Change menu items for tumme as per
-       suggestions in emacs-devel.
-
-2006-05-25  Nick Roberts  <nickrob@snap.net.nz>
-
-       * dired.el (dired-mode-map): Fix breakage.
-
-2006-05-25  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-display-dired-image): Rename to...
-       (tumme-dired-display-image): ...this.
-       (tumme-track-movement): Change default value to t.
-       (tumme-display-thumbs): Add new optional parameter DO-NOT-POP,
-       used from `tumme-next-line-and-display' and similar commands.
-
-       * dired.el (dired-mode-map): Add Thumbnail submenu under the
-       Immediate menu.  Add some tumme commands there.
-
-2006-05-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * loadup.el ("jka-cmpr-hook"): Load it before it is needed.
-
-2006-05-24  Chong Yidong  <cyd@mit.edu>
-
-       * menu-bar.el, international/mule-cmds.el: Remove tooltips for
-       menu entries that open submenus.
-
-2006-05-24  Alan Mackenzie  <acm@muc.de>
-
-       * startup.el (command-line): For names of preloaded files, don't
-       append ".elc" (now done in Fload), and call file-truename on the
-       lisp directory.
-
-       * subr.el (eval-after-load): Fix the doc-string.  Allow FILE to
-       match ANY loaded file with the right name, not just those in
-       load-path.  Put a regexp matching the file name into
-       after-load-alist, rather than the name itself.
-
-       * subr.el (load-history-regexp, load-history-filename-element)
-       (do-after-load-evaluation): New functions.
-
-       * international/mule.el (load-with-code-conversion): Do the
-       eval-after-load stuff by calling do-after-load-evaluation.
-
-2006-05-25  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-sentinel): Condition on GUD buffer if it
-       has not been killed.
-
-2006-05-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Set idle timer to clean up expired Apple events.
-       (mac-ae-get-url): Redispatch Apple event on unknown scheme.
-       (mac-dispatch-apple-event): Resume Apple event if it is suspended.
-       Optionally set error message in reply.
-
-2006-05-24  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-open-at-point): Use renamed variable
-       `org-confirm-shell-link-function'.
-       (org-confirm-shell-link-function): Rename from
-       `org-confirm-shell-links'.
-       (org-export-directory): New function.
-       (org-export-as-ascii, org-export-as-html, org-export-as-xoxo)
-       (org-export-icalendar): Use `org-export-directory'.
-       (org-indent-item): Keep cursor position.
-       (org-link-file-path-type): New option.
-       (org-export-as-html): Fix bug with plain lists starting in
-       column 0.
-       (org-export-as-html): Remove deadline formatting, this happens
-       now already in `org-html-handle-time-stamps'.
-       (org-export-html-style): Deadline class removed.
-       (org-insert-labeled-timestamps-at-point): New option.
-       (org-cycle, org-occur, org-scan-tags): Use `org-overview' instead
-       of `hide-sublevels 1', in case the first headline is not level 1.
-       (org-overview, org-content): New fuction.
-       (org-cycle-global-status, org-cycle-subtree-status): Make these
-       variables buffer-local.
-       (org-global-cycle): New command.
-       (org-shifttab): Use `org-global-cycle'.
-       (org-insert-heading, org-insert-item): Go to end of new
-       headline/item after creating it.
-       (org-export-visible): Rename from `org-export-copy-visible'.
-       Now creates a temporary org-file and applies an exporting command
-       to it.
-       (org-table-eval-formula): Support for lisp forms.
-       (org-agenda-todo-ignore-scheduled): New option.
-       (org-agenda-get-todos): Use new option
-       `org-agenda-todo-ignore-scheduled'.
-       (org-export-html-inline-images): New value `maybe'.
-       (org-export-as-html): Inlining of images dependent on link description.
-       (org-archive-subtree): Check for end-of-buffer before trying
-       `kill-line'.
-       (org-agenda-follow-mode): New option.
-       (org-export-with-tags, org-export-with-timestamps): New options.
-       (org-html-handle-time-stamps): New function.
-       (org-keyword-time-regexp): New variable.
-       (org-agenda-get-todos): Use `org-agenda-todo-list-sublevels'.
-       (org-agenda-todo-list-sublevels): New option.
-       (org-html-level-start): When TITLE is nil, just close all levels.
-       (org-parse-key-lines, org-parse-export-options): Remove functions,
-       replaced by `org-infile-export-plist'.
-       (org-combine-plists, org-infile-export-plist)
-       (org-default-export-plist): New functions.
-       (org-export-html-preamble, org-export-html-postamble)
-       (org-export-html-auto-preamble, org-export-html-auto-postamble):
-       New variables.
-       (org-export-publishing-directory): New option.
-       (org-export-as-html, org-export-as-ascii): Use the new property
-       lists for settings.
-       (org-export-copy-visible, org-export-as-xoxo):
-       Respect `org-export-publishing-directory'.
-       (org-link-search, org-store-link, org-file-apps): Support for
-       links to BibTeX database entries..
-       (org-get-current-options, org-set-regexps-and-options):
-       Implement logging as a startup option.
-       (org-store-link): Make sure context string is never empty
-       (org-insert-link): Use relative path when possible.
-       (org-at-item-checklet-p): New function.
-       (org-shifttab, org-shiftmetaleft, org-shiftmetaright)
-       (org-shiftmetaup, org-shiftmetadown, org-metaleft)
-       (org-metaright, org-metaup, org-metadown, org-shiftup)
-       (org-shiftdown, org-shiftright, org-shiftleft)
-       (org-ctrl-c-ctrl-c, org-cycle, org-return, org-meta-return):
-       Dispatch using `call-interactively'.
-       (org-call-with-arg): New defsubst.
-       (org-tag-alist, org-use-fast-tag-selection): New options.
-       (org-complete): Use `org-tag-alist'.
-       (org-fast-tag-insert, org-fast-tag-selection): New functions.
-       (org-next-item, org-previous-item): New commands.
-       (org-beginning-of-item, org-end-of-item): Add (interactive) to
-       make command.
-       (org-shiftup, org-shiftdown): Accommodate the item-navigation commands.
-
-2006-05-23  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc-delete): New function.
-       (ewoc-filter): Use `ewoc-delete'.
-
-       * emacs-lisp/bindat.el (bindat-pack): Doc fix.
-
-2006-05-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/bibtex.el (bibtex-format-entry, bibtex-clean-entry):
-       Signal more user-friendly error messages.
-
-       * complete.el (PC-do-completion): Undo the addition of implicit
-       wildcards if they did not lead to finding any match.
-       (read-file-name-internal): Don't add the final > if the completion is
-       not finished.
-
-2006-05-22  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * textmodes/bibtex.el (bibtex-maintain-sorted-entries):
-       Quote safe-local-variable predicate.
-
-2006-05-22  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc-set-data): New function.
-
-2006-05-21  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-maintain-sorted-entries): Mark as safe.
-
-       * progmodes/make-mode.el (makefile-special-targets-list)
-       (makefile-macro-table, makefile-target-table): Mark as risky.
-       (makefile-query-one-target-method): Make this the alias for the
-       following variable.
-       (makefile-query-one-target-method-function): Make this the real name.
-
-       * textmodes/artist.el (artist-text-renderer): Make this the alias
-       for the following variable.
-       (artist-text-renderer-function): Make this the real name.
-
-       * textmodes/flyspell.el (flyspell-generic-check-word-p): Make this
-       the alias for the following variable.
-       (flyspell-generic-check-word-predicate): Make this the real name.
-
-       * textmodes/ispell.el (ispell-format-word): Make this the alias
-       for the following variable.
-       (ispell-format-word-function): Make this the real name.
-       (ispell-message-text-end): Mark as risky.
-
-       * skeleton.el (skeleton-transformation, skeleton-filter)
-       (skeleton-pair-filter): Make these the aliases for the following
-       variables.
-       (skeleton-transformation-function, skeleton-filter-function)
-       (skeleton-pair-filter-function): Make these the real names.
-
-       * progmodes/sh-script.el (sh-mode): Use skeleton-filter-function
-       and skeleton-pair-filter-function.
-
-       * textmodes/sgml-mode.el (sgml-transformation): Make this the
-       alias for the following variable.
-       (sgml-transformation-function): Make this the real name.
-       (sgml-tag-alist): Mark as risky.
-
-2006-05-21  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (kill-region): Interactively, pass point, then mark.
-
-2006-05-22  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc-create): Add autoload cookie.
-
-2006-05-21  Romain Francoise  <romain@orebokech.com>
-
-       * dired-x.el (dired-mode-map): Don't bind M-g.
-
-2006-05-20  Richard Stallman  <rms@gnu.org>
-
-       * dired.el (dired-mode-map): Put dired-goto-file on j, not M-g.
-       (dired-goto-file): Doc fix.
-
-2006-05-21  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el: Mention customizing cua-mode as alternative
-       way to enable built-in cua-mode if user loads older CUA-mode package.
-
-       * ido.el (ido-read-file-name): Bind ido-show-dot-for-dired to nil
-       if default-filename is specified.
-
-2006-05-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * menu-bar.el (menu-bar-manuals-menu) <info-apropos>: New menu item.
-
-       * info.el (info-apropos): Make sure current-file and current-node
-       have non-nil values.  Speed up by using add-to-list instead of
-       manual consing.
-
-2006-05-20  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * progmodes/make-mode.el (makefile-mode): Doc fix.
-
-2006-05-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * dired-aux.el (dired-do-shell-command): Doc fix.
-
-2006-05-20  Kevin Ryde  <user42@zip.com.au>
-
-       * info-xref.el (info-xref-check-all-custom): Skip :tag part of
-       ``(custom-manual :tag "Foo" "(foo)Node")''.
-
-2006-05-20  Karl Chen  <quarl@cs.berkeley.edu>
-
-       * progmodes/cc-vars.el (c-backslash-column): Mark as safe if its
-       value is an integer.
-
-2006-05-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/rmail.el (rmail-mime-charset-pattern): Add "?:" before
-       "format".
-       (rmail-convert-to-babyl-format): Undo the change from 2006-04-19.
-
-2006-05-20  Martin Rudalics  <rudalics@gmx.at>
-
-       * progmodes/hideif.el (show-ifdef-block): Fix bug where parts of
-       a hidden block remained hidden if `hide-ifdef-lines' is non-nil.
-
-2006-05-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/gud.el (gdb-script-font-lock-keywords): Use a stricter
-       regexp for keywords.
-
-2006-05-20  Masayuki FUJII  <boochang@m4.kcn.ne.jp>  (tiny change)
-
-       * dnd.el (dnd-get-local-file-name): Specify LITERAL in
-       replace-regexp-in-string.
-
-       * term/w32-win.el (w32-drag-n-drop): Substitute '/' for '\',
-       encode, and escape file name on conversion to URL.
-
-2006-05-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dnd.el (dnd-handle-one-url): Change 3rd arg ARG to URL.
-       Don't unescape URL.
-       (dnd-get-local-file-name): Unescape URL on conversion to file name.
-
-       * x-dnd.el (x-dnd-handle-file-name): Encode and escape file names
-       on conversion to URLs.
-
-       * net/browse-url.el (browse-url-file-url): Encode file name on
-       conversion to URL.
-
-       * term/mac-win.el (mac-ae-open-documents): Escape file name on
-       conversion to URL.
-
-2006-05-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * progmodes/cc-styles.el (c-style-alist): Doc fix.
-
-2006-05-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-bytes-to-digits): Remove function.
-       (mac-handle-toolbar-switch-mode): Use coercion instead of it.
-
-2006-05-19  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/diary-lib.el (diary-bahai-date)
-       (list-bahai-diary-entries, mark-bahai-diary-entries)
-       (mark-bahai-calendar-date-pattern): Not interactive.
-       (add-to-diary-list): New optional arg LITERAL.  Doc fix.
-       (diary-entries-list): Change format of 4th element in each entry.
-       (diary-list-entries): Use add-to-diary-list.
-       (diary-goto-entry): Handle the case where the buffer visiting the
-       diary has been killed.
-       (fancy-diary-display): Add 'locator to button rather than 'marker.
-       Only generate temp-face when there are marks to apply.
-       (list-sexp-diary-entries): Pass literal to add-to-diary-list.
-       (diary-fancy-date-pattern): New variable.
-       (diary-time-regexp): Doc fix.
-       (diary-anniversary, diary-time): New faces.
-       (fancy-diary-font-lock-keywords): Use diary-fancy-date-pattern and
-       diary-time-regexp.  Add font-lock-multiline property where needed.
-       Use new faces diary-anniversary and diary-time.
-       (diary-fancy-font-lock-fontify-region-function): New function, to
-       handle multiline font-lock pattern in fancy diary.
-       (fancy-diary-display-mode): Set font-lock-fontify-region-function.
-       (diary-font-lock-keywords): Tweak time regexp.  Use new face
-       diary-time.
-
-2006-05-19  Alexander Shopov  <ash@contact.bg>  (tiny change)
-
-       * international/code-pages.el (mik): Table corrected.
-
-2006-05-18  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (grep-find): Don't check grep-find-command
-       before running command (breaks non-interactive usage).
-
-2006-05-18  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc--adjust): New func.
-       (ewoc--insert-new-node): Don't insert trailing newline.
-       Instead, adjust successor nodes's start markers.
-       (ewoc--refresh-node): Delete all text from current node's start
-       marker to the next one's; adjust successor nodes's start markers.
-       (ewoc--create): Doc fixes.
-       (ewoc--refresh): Don't insert newline.
-       (ewoc--set-hf): Use `ewoc--set-buffer-bind-dll-let*'.
-       * pcvs.el (cvs-make-cvs-buffer):
-       Specify extra newline for ewoc's header and footer.
-       (cvs-update-header): Update initial header recognition.
-       Append newline to final header and footer values.
-       * pcvs-info.el (cvs-fileinfo-pp): Insert trailing newline.
-
-2006-05-17  Richard Stallman  <rms@gnu.org>
-
-       * files.el (file-name-extension): Doc fix.
-
-2006-05-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * shell.el (shell-dirtrack-mode): Make it into a proper minor mode, so
-       we can explicitly enable/disable rather than toggle.
-       (shell-mode): Use it.
-       (shell-cd): Don't try to reproduce what `cd' does.
-
-2006-05-17  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-read-internal): Use only nondirectory part of
-       default item.
-
-2006-05-17  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc-data): Add docstring.
-       (ewoc-nth): Doc fix.
-
-       (ewoc-map, ewoc-invalidate): Compute PP before looping.
-
-2006-05-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * international/mule.el (auto-coding-alist): Add .lha to files
-       read with no-conversion.
-
-       * files.el (auto-mode-alist): Add .lha files to archive file
-       extensions.
-
-       * arc-mode.el (archive-arc-summarize, archive-lzh-summarize):
-       Convert csize to integer when computing offsets within the
-       compressed archive file.
-
-2006-05-16  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (add-to-history): Add KEEP-ALL arg and align functionality
-       with read-from-minibuffer.
-
-2006-05-16  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * emacs-lisp/bytecomp.el (byte-compile-warnings-safe-p): New function.
-       (byte-compile-warnings): Fix safe-local-variable property.
-
-2006-05-16  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-show-bodies, allout-old-style-prefixes)
-       (allout-stylish-prefixes, allout-numbered-bullet)
-       (allout-file-xref-bullet, allout-use-hanging-indents): Use simple
-       predicates to qualify `safe-local-variable' property, when
-       available, else use equivalent lambda.
-       (allout-current-topic-collapsed-p): Do the right thing regarding
-       trailing blank lines.
-
-2006-05-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * server.el (server-start): Only create a directory if needed.
-       (server-edit, server-unload-hook): server-start => server-mode.
-       (kill-emacs-hook): Cleanup upon exit.
-
-2006-05-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * hexl.el (hexlify-buffer): Encode process arguments manually.
-
-2006-05-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-tooltip-tips): Add missing argument to
-       call to gdb-tooltip-print.
-
-2006-05-15  Romain Francoise  <romain@orebokech.com>
-
-       * dired-x.el (dired-guess-shell-gnutar): On GNU and GNU/Linux
-       systems, default to "tar" since those systems probably have GNU tar.
-
-2006-05-14  Lars Hansen  <larsh@soem.dk>
-
-       * desktop.el (desktop-missing-file-warning): Fix docstring.
-       (desktop-restore-file-buffer): Correct question asked on missing file.
-
-2006-05-14  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/cc-subword.el (c-forward-subword, c-backward-subword):
-       Add CUA move property.
-
-2006-05-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (custom-push-theme): Load the variable before checking
-       its `standard-value'.
-
-2006-05-13  Lars Hansen  <larsh@soem.dk>
-
-       * desktop.el (desktop-save): Use with-temp-buffer.
-
-2006-05-12  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/cal-menu.el (calendar-mode-map, calendar-mouse-3-map):
-       * calendar/calendar.el (calendar-mode-map):
-       * calendar/diary-lib.el (include-other-diary-files, diary-mail-entries):
-       * calendar/appt.el (appt-check, appt-make-list): Refer to
-       diary-view-entries, diary-list-entries, diary-show-all-entries
-       rather than obsolete aliases.
-
-2006-05-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (line-move-finish): Avoid calling point motion hooks
-       while processing intangibility.
-
-2006-05-12  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Fix typo.
-
-2006-05-12  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (allout-view-change-hook): Mark as being deprecated,
-       to be replaced by `allout-exposure-change-hook'.
-       (allout-exposure-change-hook): New, replacing
-       `allout-view-change-hook'.
-       (allout-flag-region): Run new hook `allout-exposure-change-hook',
-       in addition to `allout-view-change-hook'.
-       (allout-show-bodies, allout-old-style-prefixes)
-       (allout-stylish-prefixes, allout-use-hanging-indents): Quote the
-       lambda forms to prevent their showing up in variable help
-       presentations as inscrutable byte-compiled code.
-       (allout-numbered-bullet, allout-file-xref-bullet, allout-layout):
-       Use string-or-null-p to qualify safe-local-variable values.
-       (allout-reindent-bodies): Use memq to qualify matches against
-       valid safe-local-variable values.  Also, quote the lambda as above.
-       (allout-use-mode-specific-leader): Add missing candidate-value
-       symbols, use memq, and quote the lambda.
-       (allout-overlay-interior-modification-handler): Remove unused
-       variables `msg' and 'opened'.
-       (allout-hidden-p): Constrain invisibility consideration to allout's
-       invisibility spec, disregarding invisibility for other reasons.
-
-2006-05-12  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * files.el (version-control): Correct safe values.
-
-2006-05-12  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc-refresh): Compute PP once before looping.
-
-       (ewoc--node-enter-before, ewoc--create-node): Delete funcs.
-       (ewoc--insert-new-node): New func.
-       Update callers of deleted funcs to use it, instead.
-
-2006-05-11  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/calendar.el (diary-show-all-entries): Do not refer to
-       obsolete alias `show-all-diary-entries'.
-       (make-diary-entry): Not interactive.
-       (cal-tex-cursor-month, cal-tex-cursor-month-landscape)
-       (cal-tex-cursor-day, cal-tex-cursor-week, cal-tex-cursor-week2)
-       (cal-tex-cursor-week-iso, cal-tex-cursor-week-monday)
-       (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
-       (cal-tex-cursor-year-landscape, cal-tex-cursor-filofax-year)
-       (cal-tex-cursor-filofax-daily, cal-tex-cursor-year): Interactive.
-
-2006-05-11  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * calendar/calendar.el (calendar-french-date-string)
-       (calendar-mayan-date-string, calendar-chinese-date-string)
-       (calendar-astro-date-string, calendar-iso-date-string)
-       (calendar-islamic-date-string, calendar-bahai-date-string)
-       (calendar-hebrew-date-string, calendar-coptic-date-string)
-       (calendar-ethiopic-date-string, calendar-persian-date-string):
-       These functions are not interactive.
-
-2006-05-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * files.el: Balance parentheses.
-
-2006-05-11  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * files.el, newcomment.el, outline.el, simple.el,
-       * emacs-lisp/bytecomp.el, progmodes/cc-compat.el,
-       * progmodes/cc-vars.el, progmodes/compile.el:
-       Move `safe-local-variable' declarations to the respective files.
-
-       * help-fns.el (describe-variable): Don't print safe-var if it is
-       byte-code.  Improve wording as suggested by Luc Teirlinck.
-
-2006-05-11  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-reset): Update speedbar if necessary.
-       (gdb-var-evaluate-expression-handler, gdb-var-update-handler):
-       Use a token for pending-triggers to ensure gdb-var-update
-       gets called once per user input again for pre-GDB 6.4.
-       (gdb-var-delete): Match on more complex expressions.
-       (gdb-var-list-children-handler, gdb-var-create-handler):
-       Use a token for consistency.
-
-2006-05-11  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-read-date, org-goto-calendar)
-       (org-agenda-goto-calendar):
-       Bind `view-calendar-holidays-initially' to nil.
-
-2006-05-11  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc--refresh-node): No longer save-excursion.
-       Update all callers to do it there, instead.
-
-2006-05-10  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/calendar.el (calendar-basic-setup): Set day to 1 in
-       prefix arg case, to avoid view-diary-entries-initially error.
-       Reported by Stephen Berman <Stephen.Berman at gmx.net>.
-       (calendar-date-is-legal-p): Handle dates with no day part.
-
-2006-05-11  Nick Roberts  <nickrob@snap.net.nz>
-
-       * comint.el (comint-insert-input): Just make it when
-       comint-use-prompt regexp is nil (default) and with the mouse.
-       (comint-copy-old-input): Reinstate from 2004-06-23.
-       (comint-mode-map): Bind C-c C-m to it.
-
-2006-05-10  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlw-shell.el (idlwave-shell-move-or-history):
-       Remove spurious move to point-max (new comint behavior fixes).
-
-       * progmodes/idlwave.el (idlwave-push-mark): Removed obsolete
-       compatibility function (Emacs 18/19).
-       (idlwave-is-continuation-line): Always return point at start of
-       previous non-blank continuation line.
-       (keyword-parameters): Fix continued comment font-lock matcher.
-       (idlwave-font-lock-fontify-region): Written, use as
-       font-lock-fontify-region-function, to fix continued keyword
-       fontification issues.
-
-2006-05-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-font-panel-mode): Doc fix.
-       (mac-service-selection, mac-service-open-file)
-       (mac-service-open-selection, mac-service-mail-selection)
-       (mac-service-mail-to, mac-service-insert-text): Rename from
-       mac-services-*.  All uses changed.
-       (mac-apple-event-map): Rename event symbol `services' to `service'.
-
-2006-05-10  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc--dll-create, ewoc--node-delete)
-       (ewoc--node-enter-first, ewoc--node-enter-last)
-       (ewoc--delete-node-internal): Merge funcs into unique callers.
-
-2006-05-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/crm.el (completing-read-multiple): Properly handle
-       return value of read-from-minibuffer for empty input.
-
-2006-05-09  Miles Bader  <miles@gnu.org>
-
-       * comint.el (comint-insert-input): Remove redundant calls to setq
-       and goto-char.
-
-2006-05-10  Nick Roberts  <nickrob@snap.net.nz>
-
-       * comint.el (comint-insert-input): Make it work when
-       comint-use-prompt-regexp is t.
-
-2006-05-10  Miles Bader  <miles@gnu.org>
-
-       * subr.el (field-at-pos): New function.
-
-       * comint.el (comint-insert-input): Use it.
-
-2006-05-09  Juri Linkov  <juri@jurta.org>
-
-       * battery.el (battery-linux-proc-acpi): Also try
-       `/proc/acpi/thermal_zone/THR2/temperature'.
-
-       * files.el <safe-local-variable>: Remove `eval' and `let' binding
-       for now unused lambda `string-or-null'.
-
-       * add-log.el (change-log-default-name): Put `string-or-null-p'
-       instead of lambda on `safe-local-variable' property.
-
-       * diff-mode.el (diff-context->unified): Use `region-beginning' and
-       `region-end' instead of `mark' and `point'.
-       (diff-unified->context, diff-reverse-direction, diff-fixup-modifs):
-       Operate on region in Transient Mark mode when the mark is active.
-       Use `region-beginning' and `region-end' instead of `mark' and
-       `point'.
-       (diff-hunk-text, diff-goto-source): Doc fix.
-
-       * startup.el (fancy-splash-screens, normal-splash-screen): Use
-       face `mode-line-buffer-id' for mode-line buffer face instead of
-       hard-coded `(:weight bold)'.
-
-       * arc-mode.el (archive-set-buffer-as-visiting-file): Bind
-       buffer-undo-list to t (undo-ask is reproducible by visiting
-       nested archives).
-
-2006-05-09  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (rgrep): Set default directory of *grep*
-       buffer if we start M-x rgrep in the *grep* buffer and choose
-       a different base directory.
-
-2006-05-09  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-register-file-name-handlers): Enable Tramp
-       completion also when ido is loaded.
-
-2006-05-09  Masatake YAMATO  <jet@gyve.org>
-
-       * font-lock.el (cpp-font-lock-keywords-source-directives): Addded
-       "warning" and "import".
-       (cpp-font-lock-keywords): Added "warning".
-
-2006-05-08  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Add more key bindings.
-
-2006-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mwheel.el (mwheel-scroll): Make sure that when scrolling multiple
-       pages at a time, if we signal the end, we should indeed reach that end.
-
-2006-05-08  David Reitter  <david.reitter@gmail.com>
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Only preserve messages
-       output during execution of the body.
-
-2006-05-08  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (lgrep, rgrep): Doc fixes.
-
-2006-05-08  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc--set-buffer-bind-dll-let*):
-       Use with-current-buffer.
-
-2006-05-07  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (add-to-history): Remove keep-dups arg.
-
-       * kmacro.el (kmacro-push-ring): Let-bind history-delete-duplicates
-       to nil around call to add-to-history.
-
-2006-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/syntax.el (syntax-ppss): Flush the cache before rather
-       than after a buffer modification.
-
-2006-05-08  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-create-handler): Move speedbar
-       call to...
-       (gud-watch): ...here so speedbar is raised for already watched
-       expressions.
-       (gdb-speedbar-refresh): Delete function.
-       (gdb-speedbar-update, gdb-speedbar-timer-fn): New functions.
-       Use speedbar-timer-fn instead of speedbar-refresh (reverting
-       earlier change).
-       (gdb-var-evaluate-expression-handler)
-       (gdb-var-list-children-handler-1, gdb-var-update-handler-1): Use it.
-
-       * speedbar.el (speedbar-timer-fn): Remove save-window-excursion.
-       Update localized contents for all buffers except ignored modes.
-
-2006-05-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-utxt-to-string): Use `eq' instead of `='.
-       (mac-atsu-font-table, mac-font-panel-mode): Add defvars.
-       (mac-bytes-to-digits, mac-handle-toolbar-switch-mode)
-       (mac-handle-font-panel-closed, mac-handle-font-selection):
-       New functions.
-       (mac-font-panel-mode): New minor mode.
-       (mac-apple-event-map): Add bindings for toolbar toggle button and
-       font panel.
-       (menu-bar-showhide-menu): Add mac-font-panel-mode.
-
-2006-05-07  John Paul Wallington  <jpw@pobox.com>
-
-       * ibuffer.el (ibuffer-compressed-file-name-regexp):
-       Avoid `regexp-opt'; simplify regexp for readability.
-
-2006-05-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * ldefs-boot.el (dired-do-redisplay, dired-maybe-insert-subdir):
-       * files.el (buffer-stale-function):
-       * dired-aux.el (dired-do-redisplay, dired-maybe-insert-subdir):
-       * autorevert.el (global-auto-revert-non-file-buffers): Point Info
-       links to the main manual, not to emacs-xtra.
-
-2006-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-utxt-to-string): Don't make adjustment for
-       MacJapanese if text is ASCII-only.
-
-2006-05-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-goto-breakpoint): Use or instead of
-       unless so nil isn't returned.
-       (gdb-setup-windows, gdb-restore-windows): Reset gdb-source-window.
-
-2006-05-06  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (add-to-history): New function.
-
-       * ediff.el (ediff-files, ediff-files3, ediff-merge-files)
-       (ediff-merge-files-with-ancestor):
-       * env.el (setenv):
-       * isearch.el (isearch-update-ring):
-       * server.el (server-visit-files):
-       * progmodes/grep.el (lgrep, rgrep):
-       * progmodes/vhdl-mode.el (vhdl-generate-makefile-1):
-       * progmodes/xscheme.el (xscheme-insert-expression):
-       Use add-to-history.
-
-       * kmacro.el (kmacro-push-ring): Use add-to-history.
-       (kmacro-ring-length): Remove unused defun.
-       (kmacro-start-macro): Use kmacro-push-ring.
-
-2006-05-06  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el (ewoc-create, ewoc-set-hf): Use `insert'
-       directly instead of a lambda expression that calls it.
-
-2006-05-06  Kim F. Storm  <storm@cua.dk>
-
-       * avoid.el (mouse-avoidance-point-position): Use posn-at-point
-       instead of compute-motion.
-
-2006-05-05  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * ibuffer.el (ibuffer-compressed-file-name-regexp): Undo previous
-       change.
-
-2006-05-05  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * startup.el (command-line-1): Refer to "Pure Storage" on
-       pure-space-overflow.
-
-2006-05-05  Martin Rudalics  <rudalics@gmx.at>
-
-       * emacs-lisp/re-builder.el (reb-update-overlays): Cycle through
-       provided faces once they all have been used up.
-
-2006-05-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * startup.el (normal-splash-screen, fancy-splash-screens-1): Add a
-       reference to the Lisp manual to the warning about pure space
-       overflow.
-
-2006-05-05  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * textmodes/ispell.el (ispell-buffer-local-dict): Add a `no-reload'
-       argument to avoid the call to `ispell-internal-change-dictionary'
-       when not needed.
-       (ispell-change-dictionary): Use this argument and call
-       `ispell-internal-change-dictionary' after the possible change
-       to `ispell-local-dictionary'.
-       (ispell-internal-change-dictionary): Check for a change in
-       personal dictionary use too.
-
-2006-05-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * startup.el (command-line): On MS-Windows, probe "~", not
-       "~USER", for warning about non-existent home directory.
-
-       * arc-mode.el (archive-l-e): New optional argument `float' means
-       generate a float value.
-       (archive-arc-summarize, archive-lzh-summarize)
-       (archive-zip-summarize, archive-zoo-summarize): Invoke archive-l-e
-       with 3rd argument non-nil when file's size is being computed.
-       Format the file sizes with %8.0f instead of %8d.
-
-2006-05-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * cus-start.el (all): Add mac-dnd-known-types.
-
-       * term/mac-win.el (mac-utxt-to-string, mac-string-to-utxt)
-       (mac-TEXT-to-string, mac-string-to-TEXT, mac-furl-to-string)
-       (mac-TIFF-to-string): New functions.
-       (x-get-selection, x-selection-value)
-       (mac-select-convert-to-string): Use them.
-       (mac-text-encoding-mac-japanese-basic-variant): New constant.
-       (mac-dnd-types-alist): New customization variable.
-       (mac-dnd-handle-furl, mac-dnd-handle-hfs, mac-dnd-insert-utxt)
-       (mac-dnd-insert-TEXT, mac-dnd-insert-TIFF, mac-dnd-drop-data)
-       (mac-dnd-handle-drag-n-drop-event): New functions.
-       (mac-drag-n-drop): Remove function.
-       (global-map): Bind drag-n-drop and M-drag-n-drop to
-       mac-dnd-handle-drag-n-drop-event.
-
-2006-05-04  Karl Chen  <quarl@NOSPAM.quarl.org>
-
-       * progmodes/perl-mode.el (perl-beginning-of-function):
-       Skip anonymous subs.
-
-2006-05-04  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * ibuffer.el (ibuffer-compressed-file-name-regexp): Avoid loading
-       regexp-opt at run time.
-
-       * term.el (term-handle-ansi-escape): Fix off by one error.
-
-2006-05-04  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-force-update): Delete variable...
-       (gdb-init-1, gdb-post-prompt): ...and references to it.
-       (gdb-frame-handler): Strip directory name from filename if present.
-
-       * progmodes/gud.el (gdb-force-update): Delete defvar
-       (gud-speedbar-buttons): ...and references to it.  Use window-start
-       to try to keep positon in watch expression.
-
-2006-05-03  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (next-history-element, previous-history-element): Doc fix.
-
-       * isearch.el (isearch-update-ring): Doc fix.
-
-2006-05-03  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * isearch.el (isearch-update-ring): Take history-delete-duplicates
-       into consideration.  Replace one arm ifs with whens.
-
-2006-05-03  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gud-watch): Let user select an expression.
-       (menu): Fix typo.
-
-2006-05-02  Miles Bader  <miles@gnu.org>
-
-       * replace.el (occur-engine): Bind `inhibit-field-text-motion' to t.
-
-2006-05-02  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-embed.el (calc-override-minor-modes-map)
-       (calc-override-minor-modes): New variables.
-       (calc-do-embedded): Make sure that Calc keystrokes aren't
-       overwritten by minor modes.
-
-2006-05-02  Chong Yidong  <cyd@mit.edu>
-
-       * msb.el (msb): If EVENT is a down event, read and discard the up event.
-
-2006-05-02  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * startup.el (command-line-1): Refer to Lisp manual when
-       pure-space-overflow occurs.
-
-       * files.el (byte-compile-dynamic, byte-compile-dynamic-docstrings)
-       (byte-compile-warnings, find-file-visit-truename, indent-tabs-mode)
-       (left-margin, no-byte-compile, no-update-autoloads, truncate-lines)
-       (version-control): Don't use `t' for safe-local-variable declarations.
-
-2006-05-01  Richard Stallman  <rms@gnu.org>
-
-       * diff-mode.el (diff-mode-shared-map): Don't bind M-W, M-U, M-C,
-       M-r, M-R, M-A, M-SPC or M-DEL.
-       (diff-mode-map): diff-refine-hunk now on C-c C-w
-       (diff-mode-map): Bind C-c C-e, C-c C-n, C-c C-r, C-c C-u.
-
-       * help-mode.el (help-mode): view-exit-action calls delete-window
-       only when it is safe and possible.
-
-       * simple.el (undo-outer-limit-truncate): Put quotes around buffer name
-       in messages.
-
-       * emacs-lisp/warnings.el (display-warning, lwarn): Doc fixes.
-
-       * tool-bar.el (tool-bar-setup): Put Help and Preferences items
-       in the default tool-bar-map.
-
-2006-05-01  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-completion-file-name-handler-alist)
-       (tramp-run-real-handler, tramp-completion-run-real-handler)
-       (tramp-completion-handle-file-name-all-completions)
-       (tramp-completion-handle-file-name-completion): Autoload them.
-       (tramp-completion-handle-file-exists-p)
-       (tramp-completion-handle-file-name-directory)
-       (tramp-completion-handle-file-name-nondirectory)
-       (tramp-completion-handle-expand-file-name): Remove them.
-       (tramp-handle-file-name-directory): Return the real directory name.
-       Returning "/" only doesn't need to be necessary any longer.
-       (tramp-file-name-handler): Make special attention when in hostname
-       completion mode.
-       (tramp-completion-file-name-handler): Revert patch from 2006-04-28.
-       (tramp-register-file-name-handlers):
-       Register `tramp-completion-file-name-handler' only when
-       `partial-completion-mode' is enabled.
-       (tramp-completion-handle-file-name-all-completions):
-       Delete directory part from results.
-       (tramp-get-completion-methods, tramp-get-completion-user-host):
-       Discard deleting "/", it doesn't work after the change of
-       `tramp-handle-file-name-directory' above.
-
-2006-05-01  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (grep-expand-template): Use save-match-data
-       and symbol-value.
-
-2006-05-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-ae-open-documents, mac-drag-n-drop):
-       Use select-frame-set-input-focus instead of raise-frame.
-       (global-map): Bind M-drag-n-drop to mac-drag-n-drop.
-
-2006-05-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-def): Add %c case.
-       (gud-speedbar-buttons): Don't bind case-fold-search unnecessarily.
-       (gud-format-command): Make match case sensitive.  Match on %F.
-
-2006-04-30  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/cal-tex.el (cal-tex-preamble-extra): New variable.
-       (cal-tex-preamble): Use cal-tex-preamble-extra.
-       (cal-tex-list-diary-entries): Refer to `diary-list-entries' rather
-       than alias `list-diary-entries'.
-
-2006-04-29  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * help-fns.el (describe-variable): Add info about safe local variables.
-
-2006-04-29  Richard Stallman  <rms@gnu.org>
-
-       * bindings.el (mode-line-format): help-echo doc fixes.
-
-       * net/tramp.el (tramp-file-name-handler-alist): Delete
-       expand-file-name and other operations that can cause spurious loading.
-
-2006-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * files.el (safe-local-variable-p): Remove support for the special
-       value t.
-
-       * textmodes/paragraphs.el (sentence-end-without-space):
-       Fix safety predicate.
-       (sentence-end-double-space, sentence-end-without-period)
-       (paragraph-ignore-fill-prefix):
-       * textmodes/fill.el (colon-double-space):
-       * abbrev.el (abbrev-mode): Tighten the safety predicate.
-
-       * subr.el (booleanp): New fun.
-
-       * textmodes/reftex-vars.el (reftex-guess-label-type):
-       Tighten the safety predicate.
-
-2006-04-28  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/grep.el (defgroup grep): Doc fix.
-       (grep-auto-highlight): Remove.
-       (grep-template): New defcustom.
-       (grep-find-template): Rename from grep-tree-template.
-       (grep-files-aliases): Rename from grep-tree-files-aliases.
-       Remove "all" alias, add "l" alias.
-       (grep-tree-ignore-case, grep-tree-ignore-CVS-directories): Remove.
-       (grep-find-ignored-directories): New defcustom to replace
-       grep-tree-ignore-CVS-directories, to facilitate ignoring
-       subdirectories for multiple version control systems.
-       (grep-mode-map): Add Recursive grep item to GREP menu.
-       (grep-regexp-history, grep-files-history): New defvars.
-       (grep-probe): New helper function.
-       (grep-compute-defaults): Use it to simplify code.
-       Adapt to name changes.
-       Use `.' as base in grep-find-template rather than <D>.
-       (grep): Remove superfluous highlight-regexp arg.  Fix doc.
-       Call grep-compute-defaults unconditionally.
-       (grep-expand-keywords): New defconst.
-       (grep-expand-template): Rename from grep-expand-command-macros.
-       Simplify via grep-expand-keywords.  Look at case-fold-search instead
-       of grep-tree-ignore-case to add -i option.
-       Bind case-fold-search to nil while matching keywords.
-       (grep-tree-last-regexp, grep-tree-last-files): Remove.
-       (grep-read-regexp, grep-read-files): New helper functions.
-       (rgrep): Rename from grep-tree.  Rework to use proper histories.
-       Adapt to changes in defcustoms and functions above.
-       (lgrep): New command, as grep, but using same interactive UI as rgrep.
-
-2006-04-28  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-completion-file-name-handler):
-       Disable Tramp's functionality while loading Tramp itself.
-       (tramp-register-file-name-handlers): That's a defsubst now.
-       Code from `tramp-repair-jka-compr' moved here.  Apply it via
-       `after-init-hook'.
-       (tramp-repair-jka-compr): Remove.
-
-2006-04-27  Jay Belanger  <belanger@truman.edu>
-
-       * calc-embed.el (calc-embedded-make-info): Use `math-read-expr' to
-       read expression when `math-read-big-expr' doesn't work.
-
-2006-04-27  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * startup.el (command-line-1): Display warning when
-       pure-space-overflow is non-nil.
-
-2006-04-26  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-user-optional-fields): Mark as
-       risky.
-
-2006-04-26  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-url): New optional arg no-browse.
-       Return the URL or nil if none can be generated.
-
-2006-04-27  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-comint-buffer): Move forward to stop
-       byte compiler warnings.
-       (gud-basic-call, gud-find-expr): Let user select an expression
-       for printing.  Print expression as well as value in GUD buffer.
-
-2006-04-17  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el: Remove local autoload declaration for
-       pgg-gpg-symmetric-key-p, since that's now done in pgg-gpg.el.
-       (allout-show-bodies, allout-header-prefix, allout-primary-bullet)
-       (allout-plain-bullets-string, allout-distinctive-bullets-string)
-       (allout-use-mode-specific-leader, allout-old-style-prefixes)
-       (allout-stylish-prefixes, allout-numbered-bullet)
-       (allout-file-xref-bullet, allout-presentation-padding)
-       (allout-use-hanging-indents, allout-reindent-bodies): Mark as
-       safe-local-variable with suitable value spec, and add autoload
-       cookie for loaddefs inclusion.  We now use an explicit spec everywhere.
-       (move-beginning-of-line, move-end-of-line): Repair so these compat
-       functions now actually resituate the point, when appropriate.
-
-2006-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/cc-subword.el (c-subword-mode-map): Use command remapping.
-
-       * add-log.el (add-log-iso8601-time-zone): Make parameter optional.
-       (add-log-iso8601-time-string): Fix call to format-time-string.
-
-2006-04-26  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (posn-string, posn-image, posn-object): Doc fix.
-
-2006-04-26  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/asm-mode.el (asm-mode, asm-mode-syntax-table):
-       Add support for "//" style comments.  Remove `b' flag
-       from ?* in `asm-mode-syntax-table'.
-
-2006-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * follow.el: Use (featurep 'xemacs) everywhere.
-       (follow-mode): Use define-minor-mode.
-       (follow-mode-map): Move initialization into the declaration.
-       Use command remapping.
-       (follow-emacs-version-xemacs-p): Remove.
-       (follow-submit-feedback): Remove.
-
-       * allout.el (allout-layout, allout-passphrase-verifier-string)
-       (allout-passphrase-hint-string): Tighten up a bit the safety predicate.
-
-       * textmodes/reftex-vars.el (reftex-vref-is-default)
-       (reftex-fref-is-default, reftex-guess-label-type):
-       Tighten up a bit the safety predicate.
-
-       * textmodes/paragraphs.el (sentence-end-double-space)
-       (sentence-end-without-period, sentence-end-without-space)
-       (page-delimiter, paragraph-ignore-fill-prefix):
-       Tighten up a bit the safety predicate.
-
-       * textmodes/fill.el (colon-double-space): Tighten up the safety pred.
-
-       * progmodes/python.el (python-continuation-line-p)
-       (python-beginning-of-statement): syntax-ppss may return
-       a negative depth.
-       (python-mode): Don't forcefully enable font-lock.
-
-       * time-stamp.el (time-stamp-start, time-stamp-end)
-       (time-stamp-inserts-lines): Tighten up a bit the safety predicate.
-
-       * add-log.el: Remove spurious * in docstrings.
-       (add-log-time-zone-rule): Rename from change-log-time-zone-rule.
-       (add-change-log-entry): Use it here, since it's not specific
-       to iso8601.
-       (add-log-iso8601-time-string): Don't use it here any more.
-       (change-log-indent-text, change-log-indent): Rename from add-log-*.
-
-       * abbrev.el (abbrev-mode): Tighten up a bit the safety predicate.
-
-2006-04-25  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-print): Revert last change with ignored nicks.
-       (rcirc-toggle-low-priority): Doc fix.
-       (rcirc-handler-NOTICE): Remove beginning of line anchor in
-       ChanServ regexp.
-       (rcirc-startup-channels-alist): Connect to #rcirc by default, not
-       #emacs.
-       (rcirc-bright-nick-regexp, rcirc-dim-nick-regexp): Add variables.
-       (rcirc-decode-coding-system): Use utf-8 as the default.
-       (rcirc-multiline-minor-mode): Set the fill-column.
-       (rcirc-format-response-string): Display bright and dim nicks.
-       (rcirc-browse-url): Update interactive spec to fill ARG.
-       (rcirc-bright-nick, rcirc-dim-nick): Add faces.
-       (rcirc-print): Ignore dim-nick messages wrt modeline-activity.
-
-2006-04-24  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * textmodes/bibtex.el (bibtex-find-entry): Don't demand matching
-       case for @Article, etc.
-
-2006-04-23  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-register-file-name-handlers): New defun.
-       Added with autoload cookie.
-       (tramp-unload-file-name-handlers): Rename from
-       `tramp-unload-file-name-handler-alist'.
-
-2006-04-23  Romain Francoise  <romain@orebokech.com>
-
-       * comint.el (comint-match-partial-filename): Doc fix.
-
-2006-04-21  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/cal-menu.el (calendar-mode-map): Refer to
-       `diary-view-entries' rather than alias `view-diary-entries'.
-       * calendar/diary-lib.el (view-other-diary-entries): Ditto.
-
-2006-04-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * progmodes/antlr-mode.el (antlr-default):
-       * cus-edit.el (custom-documentation):
-       * faces.el (scroll-bar, border, cursor, mouse): Avoid nil spec
-       in defface.
-
-2006-04-21  Kim F. Storm  <storm@cua.dk>
-
-       * image.el (image-type): New defun split out of create-image.
-       (create-image): Use it.
-
-2006-04-21  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-mode-map): Catch conflict with old allout.el.
-       (org-open-at-point): Remove the "...done" message to keep output
-       in the echo area visible.
-       (org-export-as-xoxo): Fix call to `indent-region'.
-
-2006-04-21  Kevin Ryde  <user42@zip.com.au>
-
-       * international/mule.el (keyboard-coding-system): defcustom
-       info-link fixes: "Specify Coding" has been split, keyboard now in
-       "Terminal Coding", and "Single-Byte Character Support" is now
-       "Unibyte Mode".
-
-2006-04-21  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-data-list-register-values-handler):
-       Use font-lock-warning-face for any errors e.g. no stack.
-       (gdb-stack-list-locals-handler): Display any errors e.g. no stack.
-
-2006-04-20  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * progmodes/sh-script.el (sh-shell): Mark as safe.
-
-       * newcomment.el (comment-start, comment-start-skip)
-       (comment-end-skip, comment-end): Mark as safe.
-
-2006-04-20  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-deadline-announce): Face removed.
-       (org-level-faces, org-n-levels): Convert to constant.
-       (org-compatible-face): New function.
-       (org-hide, org-level-1, org-level-2, org-level-3, org-level-4)
-       (org-level-5, org-level-6, org-level-7, org-level-8)
-       (org-special-keyword, org-warning, org-headline-done, org-link)
-       (org-date, org-tag, org-todo, org-done, org-table, org-formula)
-       (org-scheduled-today, org-scheduled-previously, org-time-grid):
-       Face definition revised for better color tty support.
-       (org-bold-re, org-italic-re, org-underline-re): New constants.
-       (org-set-font-lock-defaults): Use the new constants.
-       (org-agenda-highlight-todo): New function.
-       (org-agenda-todo): Fix bug with point at end of line.
-       (org-agenda-change-all-lines, org-finalize-agenda-entries):
-       Fontify TODO keywords.
-       (org-insert-link): Preserve relative path in ../ links.
-       (org-export-as-html): Convert links pointing to .org files into
-       links that will work beteen the exported HTML files.
-       (org-todo-list): Fix bug when arg=0.
-       (org-insert-heading): More fine-tuning.
-
-2006-04-19  Romain Francoise  <romain@orebokech.com>
-
-       * mail/rmail.el (rmail-convert-to-babyl-format): Use second group
-       from `rmail-mime-charset-pattern'.
-
-2006-04-18  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * progmodes/python.el (python-mode): Fix typo.
-
-2006-04-18  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * comint.el (comint-previous-input): Don't clobber input line
-       when moving off either end of the input history ring.
-       (comint-delete-input): New function, used by
-       `comint-previous-input' and others.
-       (comint-previous-matching-input):
-       Use `coming-delete-input'.  Save the partial input if leaving the
-       edit line.  Goto point-max before deleting input to avoid
-       partial input fragments hanging around.
-       (comint-restore-input): New function, used by `comint-previous-input'.
-
-2006-04-18  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * imenu.el (imenu--index-alist): Balance parentheses.
-
-2006-04-18  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * progmodes/python.el (python-mode): Add support for hs-minor-mode.
-
-2006-04-19  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * abbrev.el (read-abbrev-file): Use abbrev-file-name if optional
-       file is nil.
-
-2006-04-18  Richard Stallman  <rms@gnu.org>
-
-       * tooltip.el (tooltip-mode, tooltip-use-echo-area): Doc fixes.
-
-       * imenu.el (imenu-create-index-function, imenu--index-alist)
-       (imenu--last-menubar-index-alist, imenu--make-index-alist)
-       (imenu-default-create-index-function, imenu--generic-function):
-       Doc fixes.
-
-       * image-mode.el (image-toggle-display): Handle tar and arc subfiles.
-
-       * help-mode.el (help-mode): Set view-exit-action to delete window.
-
-       * env.el (setenv): Get rid of arg UNSET.  Interactive unsetting
-       now works by passing nil as arg.
-
-       * apropos.el (apropos-print): Don't do where-is on self-insert-command.
-
-       * abbrev.el (edit-abbrevs-redefine): Temporarily widen.
-       (read-abbrev-file): Provide default when reading filename.
-
-       * files.el (enable-local-variables): Allow :all as value.
-       (hack-local-variables): Implement that value.
-       (safe-local-variable-values, safe-local-eval-forms)
-       (enable-local-variables): Mark as risky.
-       (find-file-visit-truename, kept-old-versions): Mark safe.
-
-       * time-stamp.el (time-stamp-format, time-stamp-line-limit)
-       (time-stamp-start, time-stamp-end, time-stamp-inserts-lines)
-       (time-stamp-count, time-stamp-pattern): Add safe-local-variable prop.
-
-2006-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/tcl.el (tcl-send-string, tcl-send-region):
-       Use forward-line so as to get to BOL even in the presence of fields.
-       (tcl-eval-region): Strip surrounding space to avoid multiple prompts
-       in return.
-       (inferior-tcl): Tell tclsh to work in interactive mode.
-
-       * complete.el (partial-completion-mode):
-       Use 'choose-completion-string-functions to make sure that
-       choose-completion fills the minibuffer properly.
-
-       * complete.el (PC-old-read-file-name-internal): Remove.
-       (PC-read-include-file-name-internal): Remove.  Turn it into an advice
-       of read-file-name-internal.
-       (partial-completion-mode): Enable/disable this advice.
-
-2006-04-18  Juanma Barranquero  <lekktu@gmail.com>
-
-       * net/tramp.el (tramp-completion-file-name-handler): Revert change
-       of 2006-04-17.
-
-2006-04-18  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-insert-heading): Insert heading before
-       current if at beginning of line.
-       (org-todo, org-date): New faces.
-       (org-table-align): Make sure tooltip window contains full text.
-       (org-no-properties): New defsubst.
-       (org-set-font-lock-defaults): Use new faces.
-
-2006-04-18  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-item-info): Display frame address
-       for root variables.
-
-       * progmodes/gdb-ui.el (gdb-pc-address): Rename from gdb-frame-address.
-       (gdb-frame-address): Re-use to identify frame for watch expression.
-       (gdb-var-list, gdb-var-create-handler): Add frame address for root
-       variables.
-       (gdb-init-1, gdb-source, gdb-post-prompt)
-       (gdb-assembler-custom, gdb-invalidate-assembler): Use gdb-pc-address.
-       (gdb-frame-handler): Get gdb-frame-address.
-
-2006-04-17  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.53.
-
-       * net/tramp.el (tramp-completion-mode): ?\t has event-modifier
-       'control.  Reported by Matthias F\e,Av\e(Brste <slashdevslashnull@gmx.net>.
-       (tramp-completion-file-name-handler): Add autoload cookie for
-       adding to `file-name-handler-alist'.
-
-       * net/tramp-smb.el (tramp-smb-wait-for-output): Wait always for
-       the prompt.  If it returns earlier (when detecting an error
-       message), the rest of the output will merge accidently with the
-       output of the next command.  Reported by M Jared Finder
-       <jared@hpalace.com>.
-
-       * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
-       for `process-file', in order to let it work for older Emacsen too.
-
-2006-04-17  Ralf Angeli  <angeli@iwi.uni-sb.de>
-
-       * textmodes/tex-mode.el (tex-font-lock-match-suscript): New function.
-       (tex-font-lock-keywords-3): Use it.
-
-2006-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * newcomment.el (comment-add): New function.
-       (comment-region-default, comment-dwim): Use it.
-
-2006-04-15  Michael Olson  <mwolson@gnu.org>
-
-       * emacs-lisp/tq.el: Improve comments.
-       (tq-queue-head-question): New accessor function.
-       (tq-queue-head-regexp, tq-queue-head-closure, tq-queue-head-fn):
-       Update for modified queue structure.
-       (tq-queue-add): Accept `question' argument.
-       (tq-queue-pop): If a question is pending, send it.
-       (tq-enqueue): Accept new optional argument `delay-question'.
-       If this is non-nil, and at least one other question is pending a
-       response, queue the question rather than sending it immediately.
-
-2006-04-15  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * calendar/appt.el (appt-add): Check whether an appointment is
-       already present in appt-time-msg-list.  Simplify code.
-
-2006-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/cc-langs.el (c-mode-menu):
-       Don't presume c-subword-mode is bound.
-
-2006-04-13  Bill Wohler  <wohler@newt.com>
-
-       * cus-edit.el (customize-package-emacs-version-alist): Update docstring.
-       (customize-package-emacs-version): Use cdr instead of cadr now
-       that alists use dotted pairs.
-
-       * custom.el (defcustom): Fix docstring for :package-version.
-
-2006-04-13  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-display-shell-command-buffer): New defvar.
-       (tramp-handle-shell-command): Display output buffer only when
-       `tramp-display-shell-command-buffer' is true.
-       (tramp-handle-process-file): Set `tramp-display-shell-command-buffer'.
-
-2006-04-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-set-autofill-regexps): Set only the local
-       values of `adaptive-fill-regexp' and `adaptive-fill-function'.
-
-2006-04-13  Romain Francoise  <romain@orebokech.com>
-
-       * pcvs-parse.el (cvs-parse-table): Use `with-temp-buffer' to avoid
-       leaving temporary .cvsignore buffers behind.
-
-2006-04-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-set-regexps-and-options)
-       (org-get-current-options): Better names for the startup folding
-       options.
-
-2006-04-13  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * vc.el (vc-annotate): Arrange for point to end up at the same
-       line number as in the original, but only when using a new buffer.
-
-2006-04-12  Stuart Herring  <herring@lanl.gov>  (tiny change)
-
-       * files.el (hack-one-local-variable-eval-safep):
-       Recognize `edebug-form-spec' for `put', but only if it passes
-       `edebug-basic-spec'.  Generalize `put' handling.
-
-       * emacs-lisp/edebug.el (edebug-basic-spec): New function for
-       vetting file-local form specs.
-
-       * allout.el (allout-layout): Autoload its `safe-local-variable'
-       property.
-
-2006-04-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-ctrl-c-ctrl-c): Improve documentation string.
-       (org-agenda-mouse-1-follows-link)
-       (org-mouse-1-follows-link): New options.
-       (org-format-agenda-item): Fix bug if TAGS is nil.
-       (org-agenda-get-scheduled): Quote `priority' symbol in plist.
-
-2006-04-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers):
-       GDB 6.1+ gives full filename for "info sources" so use
-       file-name-nondirectory.
-
-2006-04-12  Romain Francoise  <romain@orebokech.com>
-
-       * subr.el (read-passwd): Bind `message-log-max' to nil.
-
-2006-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/perl-mode.el (perl-indent-new-calculate):
-       Recompute parse-start after jumping backward by a whole sexp.
-
-2006-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc.el (vc-ensure-vc-buffer): Only change current-buffer, not the
-       window configuration.
-       (vc-annotate-display-select): Select the buffer so that current-buffer
-       (and selected-window) is the output buffer at the end of vc-annotate.
-
-2006-04-11  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * vc.el (vc-annotate-color-map): Add custom TTY color map for
-       8-color terminals, to use all of the colors in a sensible order.
-       256-color terminals work well with the standard map.
-       (vc-annotate-lines): Only strip the first color character if it
-       is "#", to allow for terminal-style named colors.
-       (vc-annotate-warp-version): Pass buf to `goto-line' to ensure
-       the correct buffer is scrolled.
-
-2006-04-11  Richard Stallman  <rms@gnu.org>
-
-       * emacs-lisp/bytecomp.el (byte-compile-file):
-       Bind enable-local-variables to :safe, and make normal-mode obey it.
-
-       * files.el (enable-local-variables): Allow value :safe.
-       (normal-mode): Doc fix.
-       (hack-local-variables): Implement enable-local-variables = :safe.
-       (hack-local-variables-confirm): Don't prevent quitting.
-
-2006-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * loadhist.el (unload-feature): A bit of sanity check of
-       load-history entries.  Cancel timer-vars before unbinding them.
-
-       * hexl.el (hexl-isearch-search-function): Fix regexp-building code to
-       quote special chars, and make the trick work on the hex part of the
-       buffer as well.
-       (hexl-mode, hexl-save-buffer, hexl-mode-exit)
-       (hexl-maybe-dehexlify-buffer): Use restore-buffer-modified-p.
-
-       * startup.el (normal-splash-screen): Fix last change so we don't wait
-       2 minutes if we don't show the splash screen.
-
-2006-04-11  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-export-plain-list-max-depth)
-       (org-table-spaces-around-separators)
-       (org-radio-targets, org-activate-camels)
-       (org-table-spaces-around-invisible-separators): Options removed.
-       (org-time-stamp-rounding-minutes, org-remember-templates)
-       (org-ellipsis, org-activate-links, org-descriptive-links):
-       New options.
-       (org-remember-apply-template, org-current-time)
-       (org-finish-edit-table-field)
-       (org-link-unescape, org-link-escape)
-       (org-string-width, org-table-clean-line, org-html-do-expand)
-       (org-edit-agenda-file-list, org-store-new-agenda-file-list)
-       (org-read-agenda-file-list): New functions.
-       (org-table-edit-field)
-       (org-table-create-or-convert-from-region): New commands
-       (org-table-toggle-vline-visibility): Command removed.
-       (org-table-convert-region): Made a command.
-       (orgtbl-deleta-backward-char, orgtbl-delete-char): Remove commands.
-       Replace with the normal org- functions.
-       (org-self-insert-command): Don't trigger realign unnecessarily
-       when blanking a field that is not full.
-       (org-mode): `Set buffer-invisibility-spec' for links.
-       (org-activate-links2): Hide link part and only show descriptive
-       part of the link.
-       (org-insert-link): Modify for new linking system.
-       (org-store-link): Store description separately, for use by
-       `org-insert-link'.
-       (org-table-align): Use `org-string-width'.
-       (defgroup): Completely new group structure for custom variables.
-       (org-agenda-files): Option: Single file name allowed.  Function:
-       Optional argument unrestrited means ignore any restricitons.
-       (org-install-agenda-files-menu): Find a buffer in Org-mode before
-       trying to modify the menu.  Use generalized access to
-       `org-agenda-files.'
-       (org-agenda-list, org-todo-list, org-cycle-agenda-files)
-       (org-agenda-file-to-front, org-remove-file, org-diary)
-       (org-tags-view, org-export-icalendar-all-agenda-files)
-       (org-export-icalendar-combine-agenda-files): Use generalized
-       access to `org-agenda-files'.
-       (org-remember-handler): Correctly preserve heading if present.
-       (org-table-insert-row, org-table-insert-hline): Deal with
-       invisible characters.
-
-2006-04-10  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * vc.el (vc-annotate-display-mode): Made default 'fullscale.
-       (vc-annotate-color-map): New 18 element constant
-       value/saturation, rotating hue colormap, from red->blue.
-       (vc-annotate-mode-menu): "Default" -> "By Color Map Range".
-       (vc-annotate-display-select): Switch to annotate-mode elsewhere.
-       (vc-annotate): To avoid killing the required local variables,
-       set them before the end of `with-output-to-temp-buffer', and
-       after first switching to annotate-mode.
-       (vc-annotate-warp-version): Add buffer argument in goto-line to
-       ensure annotation, not source, is scrolled.
-
-2006-04-10  Bill Wohler  <wohler@newt.com>
-
-       * custom.el (defcustom, custom-handle-keyword):
-       Add :package-version keyword.
-       (custom-add-package-version): New function.  Sets value of new
-       property 'custom-package-version from :package-version keyword.
-       (defcustom): Create Common Keywords section in docstring.
-       (defface, defgroup): Replace definitions of a select few keywords
-       with a reference to the Common Keywords in defcustom.
-       (defcustom, defface, defgroup): Replace reference to Customization
-       chapter in manual with hyperlink.
-
-       * cus-edit.el (customize-package-emacs-version-alist): New variable.
-       (customize-changed-options): Add check for custom-package-version.
-       (customize-package-emacs-version): New function to look up Emacs
-       version corresponding to the given package version.
-
-       * emacs-lisp/find-func.el (find-function-regexp): Allow dashes in
-       defun name, in similar fashion to find-variable-regexp.
-
-2006-04-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * international/mule-cmds.el (set-locale-environment): Fix last
-       change for when the locale's preferences don't specify any encoding.
-
-2006-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/find-func.el (find-function-search-for-symbol): Fix regexp
-       so the defined var/fun doesn't need to be quoted.
-
-2006-04-10  Richard Stallman  <rms@gnu.org>
-
-       * finder.el (finder-mode-map): Add n and p bindings.
-
-2006-04-10  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-init-1): Re-initialise gdb-main-file to nil.
-       (gdb-get-version): Make it work for pre "interpreter mi" (GDB 5.3?).
-       (gdb-setup-windows): Put something in source window if we can't find
-       the source file.
-       (gdb-frame-handler): Make it work again with just assembly.
-       (gdb-data-list-register-values-handler): Make it work when there is
-       no stack.
-
-2006-04-09  Richard Stallman  <rms@gnu.org>
-
-       * mail/rmail.el (rmail-mime-charset-pattern): Ignore format and delsp
-       specs while looking for charset.
-
-       * textmodes/picture.el (picture-mode-exit): Run picture-mode-exit-hook.
-
-       * play/landmark.el (lm-font-lock-face-O, lm-font-lock-face-X):
-       Make them faces.
-       (lm-font-lock-keywords): Update appropriately.
-
-2006-04-10  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (filter-buffer-substring): Add NOPROPS arg, so
-       it can also replace buffer-substring-no-properties.
-
-       * emulation/cua-base.el (cua-delete-region, cua-paste)
-       (cua-repeat-replace-region): Use filter-buffer-substring.
-
-       * emulation/cua-gmrk.el (cua-copy-region-to-global-mark)
-       (cua-cut-region-to-global-mark): Likewise.
-
-       * emulation/cua-rect.el (cua--extract-rectangle)
-       (cua-incr-rectangle, cua--rectangle-aux-replace): Likewise.
-
-2006-04-09  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-entry-update): New optional arg
-       entry-type.  Add field delimiters to numerical fields if they are
-       not present.
-
-2006-04-09  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-find-text-internal): Add new element
-       string-const to return value.
-       (bibtex-remove-delimiters): Use it.
-
-2006-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/bytecomp.el (byte-compile-form): Don't call
-       cl-byte-compile-compiler-macro unless it exists.
-
-2006-04-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.el (hack-local-variables-confirm) <offer-save>:
-       Clarify message text.  Suggested by Ralf Angeli.
-
-2006-04-08  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * rect.el (kill-rectangle): Don't barf if `kill-read-only-ok' is set.
-       (delete-extract-rectangle-line): Use `filter-buffer-substring'
-       instead of `buffer-substring' and `delete-region'.  (Most of the
-       code actually copied from `kill-region'.)
-
-2006-04-08  Ryan Yeske  <rcyeske@gmail.com>
-
-       * rcirc.el (rcirc-default-server): Rename from rcirc-server.
-       (rcirc-default-port): Rename from rcirc-port.
-       (rcirc-default-nick): Rename from rcirc-nick.
-       (rcirc-default-user-name): Rename from rcirc-user-name.
-       (rcirc-default-user-full-name): Rename from rcirc-user-full-name.
-       (rcirc-low-priority-flag): New variable.
-       (rcirc-decode-coding-system): New defcustom.
-       (rcirc-encode-coding-system): New defcustom.
-       (rcirc-coding-system-alist): New defcustom.
-       (rcirc-multiline-major-mode): New defcustom.
-       (rcirc-nick): New internal variable.
-       (rcirc-process): Remove variable.
-       (rcirc-server-buffer): New variable.
-       (rcirc): Update to use rcirc-default-* variables above.
-       (rcirc-connect): Do not add window-configuration-hook-here.
-       (rcirc-server): New internal variable.
-       (rcirc-connect): Do not send keepalive pings if
-       rcirc-keepalive-seconds is nil.
-       (with-rcirc-server-buffer): New macro.
-       (rcirc-send-string): Encode with rcirc-encode-coding-system.
-       (rcirc-server-name): Rename from rcirc-server.
-       (rcirc-buffer-process): New function.
-       (rcirc-buffer-nick): New function.
-       (rcirc-buffer-target): Remove function.
-       (set-rcirc-decode-coding-system, set-rcirc-encode-coding-system):
-       New commands.
-       (rcirc-mode-map): Change binding of C-c C-l to
-       rcirc-toggle-low-priority.
-       (rcirc-mode): Initialize coding system based on
-       rcirc-coding-system-alist.  New change-major-mode-hook to part the
-       channel on a mode change.  Make kill-buffer-hook buffer-local.
-       (rcirc-change-major-mode-hook): New function.
-       (rcirc-clean-up-buffer): Rename from rcirc-kill-buffer-hook-1.
-       (rcirc-last-post-time): New variable.
-       (rcirc-process-message): Store the last time user posted a message
-       to this target.
-       (rcirc-multiline-minor-mode): New mode.
-       (rcirc-multiline-minor-mode-map): New mode map.
-       (rcirc-edit-multiline): Put multiline-edit buffer in
-       rcirc-multiline-major-mode along with rcirc-multiline-minor-mode.
-       (rcirc-print): Ignore any line starting with an ignored nick.
-       (rcirc-print): Decode using rcirc-decode-coding-system.
-       (rcirc-track-minor-mode): Update global-mode-string when disabling
-       this mode.
-       (minor-mode-alist): Add LowPri indicator.
-       (rcirc-toggle-low-priority): New function.
-       (rcirc-last-non-irc-buffer): Prefix arg now no means switch to
-       next lowpriority buffer with activity.
-       (rcirc-record-activity): Sort buffers in rcirc-activity by the
-       last time the user posted a message in to the target.
-       (rcirc-update-activity-string): New formatting for low priority
-       buffers.
-       (rcirc-split-activity): New function.
-       (rcirc-handler-PART, rcirc-handler-KICK)
-       (rcirc-handler-PART-or-KICK): Kick responses are printed properly.
-       (rcirc-nick-away-alist): New variable.
-       (rcirc-handler-301): New handler.  Away messages are printed once
-       per change.
-
-2006-04-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * info.el (Info-follow-nearest-node): Doc fix.
-
-       * international/mule-cmds.el (set-locale-environment): Make sure
-       the coding-system preferred by the locale's language has the same
-       EOL conversion type as the original buffer-file-coding-system.
-       (locale-language-names): Add a few MS Windows language codes.
-
-2006-04-07  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (eval-expression): Doc fix.
-
-       * emacs-lisp/lisp-mode.el (eval-print-last-sexp, eval-last-sexp)
-       (eval-defun): Doc fixes.
-
-2006-04-07  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * pgg-gpg.el: Revert to revision 1.8 to allow the use of gpg-agent.
-
-2006-04-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-init-2): Set current filename using
-       GDB list command without argument for greater generality.
-
-2006-04-06  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * subr.el (string-or-null-p): New function.
-
-       * textmodes/paragraphs.el (sentence-end): Use string-or-null-p.
-
-       * textmodes/ispell.el (ispell-local-dictionary): Use string-or-null-p.
-
-       * files.el: Update comment about safe-local-variable declarations.
-
-2006-04-06  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * progmodes/idlwave.el: Updated to IDLWAVE version 6.0.
-       See idlwave.org.
-
-       * progmodes/idlw-shell.el: Updated to IDLWAVE version 6.0.
-       See idlwave.org.  Includes code to obsolete idlw-rinfo.el.
-
-       * progmodes/idlw-help.el: Updated to IDLWAVE version 6.0.
-       See idlwave.org.
-
-       * progmodes/idlw-complete-structtag.el: Updated to IDLWAVE
-       version 6.0 (minimal changes).  See idlwave.org.
-
-       * progmodes/idlw-toolbar.el: Updated to IDLWAVE version
-       6.0 (minimal changes).  See idlwave.org.
-
-       * progmodes/idlw-rinfo.el: File obsoleted and removed.
-
-2006-04-06  Romain Francoise  <romain@orebokech.com>
-
-       * pgg-gpg.el: Sync back with Gnus 5.10, reverting changes that add
-       symmetric encryption features and a new asynchronous interface to
-       GnuPG.  This new version is version 1.4, plus whitespace changes.
-
-2006-04-06  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * files.el: Move some `safe-local-variable' declarations to the
-       respective files.
-
-       * textmodes/ispell.el (ispell-check-comments)
-       (ispell-local-dictionary): Mark as safe.
-
-       * abbrev.el (abbrev-mode): Mark as safe.
-
-       * add-log.el (change-log-default-name): Mark as safe.
-
-       * textmodes/reftex-vars.el (reftex-vref-is-default)
-       (reftex-fref-is-default, reftex-level-indent)
-       (reftex-guess-label-type): Mark as safe.
-
-       * textmodes/fill.el (colon-double-space): Mark as safe.
-
-       * textmodes/paragraphs.el (paragraph-start, paragraph-separate)
-       (sentence-end-double-space, sentence-end-without-period)
-       (sentence-end-without-space, sentence-end, sentence-end-base)
-       (page-delimiter, paragraph-ignore-fill-prefix): Mark as safe.
-
-2006-04-06  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-mode): Remove ido-ignore-unc-host-regexps from
-       the :set-after list.
-       (ido-downcase-unc-hosts): New user option.  Default on.
-       (ido-ignore-unc-host-regexps): Don't reset ido-unc-hosts-cache
-       when it is set, as regexps are now applied on the fly.
-       (ido-unc-hosts): Keep all known hosts in ido-unc-hosts-cache.
-       Make C-a DTRT--filter hosts through ido-ignore-unc-host-regexps
-       on the fly, but only when ido-process-ignore-lists is set.
-       Do case insensitive filtering if ido-downcase-unc-hosts is set.
-       Only downcase names if ido-downcase-unc-hosts is set.
-
-2006-04-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ido.el (ido-unc-hosts-cache): Fix typo in docstring.
-
-       * woman.el (WoMan-xref-man-page): Fix call to `substring'.
-
-2006-04-05  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-mode): Set after ido-unc-hosts and
-       ido-ignore-unc-host-regexps.
-       (ido-save-history): Save ido-unc-hosts-cache.
-       (ido-load-history): Load ido-unc-hosts-cache.
-       (ido-reread-directory): Refresh unc hosts cache in // dir.
-
-       * startup.el (fancy-splash-screens): Set emulation-mode-map-alists
-       to nil while displaying slash screen.
-
-2006-04-05  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-gpg.el (pgg-gpg-encrypt-region, pgg-gpg-sign-region):
-       Wait for BEGIN_SIGNING too, new in GnuPG 1.4.3.
-
-2006-04-05  Kenichi Handa  <handa@m17n.org>
-
-       * international/characters.el: Setup cases of Latin, Greek, and
-       Cyrillic characters in CJK charsets.
-
-2006-03-29  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-gpg.el (pgg-gpg-start-process): Don't bind
-       default-enable-multibyte-characters.  This reverts the change from
-       revision 6.17 which is no longer necessary because the passphrase
-       is sent separately now.  GnuPG messages are unreadable under
-       multibyte locales with default-enable-multibyte-characters set to nil.
-
-2006-04-04  Andreas Schwab  <schwab@suse.de>
-
-       * files.el: Mark `left-margin', `byte-compile-dynamic-docstrings'
-       and `byte-compile-warnings' as `safe-local-variable'.
-
-2006-04-04  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * man.el (Man-mode-map): Restore the \r binding.
-       (Man-abstract-xref-man-page): If Man-target-string is a function,
-       call it.
-       (Man-highlight-references): Use Man-default-man-entry to get the
-       target.  Deal with xrefs too.
-       (Man-highlight-references0): Don't call the target function.
-
-       * woman.el (WoMan-xref-man-page): Strip the section number, woman
-       cannot deal with it.
-
-2006-04-04  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-gpg.el: Clean up process buffers every time gpg processes
-       complete.
-
-2006-04-04  Kenichi Handa  <handa@m17n.org>
-
-       * sort.el (sort-build-lists): Don't bind inhibit-field-text-motion
-       here.
-       (sort-lines, sort-numeric-fields, sort-fields, sort-columns):
-       Temporarily bind inhibit-field-text-motion to t.
-
-2006-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * startup.el (normal-splash-screen): Only set mode-line-format in the
-       splash buffer, so as not to interfere when debugging the code.
-       Ignore errors when switching buffer.
-
-2006-04-03  Romain Francoise  <romain@orebokech.com>
-
-       * dired.el (dired-dnd-protocol-alist): Fix typo.
-
-2006-04-03  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * savehist.el (savehist): Add :version.
-       (savehist-ignored-variables): New variable.
-       (savehist-minibuffer-hook): Don't save variables listed in
-       `savehist-ignored-variables'.
-
-       * dired.el (dired-dnd-protocol-alist): Mention that change does
-       only apply to new buffers in doc string.
-
-2006-04-03  Lennart Borgman  <lennart.borgman.073@student.lu.se>  (tiny change)
-
-       * recentf.el (recentf-open-files-item): Include newline in button
-       field, so opening a file will work, when the point is at the end
-       of the file name.  Allow, for example, to [i]search a file by
-       extension and just push RET to open it.
-
-2006-04-03  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-gpg.el (pgg-gpg-process-filter)
-       (pgg-gpg-wait-for-completion): Check if buffer is alive.
-
-       * pgg-gpg.el (pgg-gpg-process-sentinel): Don't remove GNUPG:
-       lines, temporary fix.
-
-2006-04-02  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * ibuf-macs.el (define-ibuffer-column): Document the new parameter.
-
-2006-04-02  Richard Stallman  <rms@gnu.org>
-
-       * progmodes/compile.el (compilation-message-face): Make it defcustom.
-
-2006-04-02  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * ibuf-macs.el (define-ibuffer-column): Add a new key:
-       header-mouse-map.
-
-       * ibuffer.el (ibuffer-name-header-map, ibuffer-size-header-map)
-       (ibuffer-mode-header-map): New keymaps.
-       (ibuffer-update-title-and-summary): Enable mouse face highlighting
-       and keybindings for column headers.
-       (name, size, mode) <define-ibuffer-column>: Add a header-mouse-map
-       property.
-
-2006-04-02  Drew Adams  <drew.adams@oracle.com>
-
-       * speedbar.el (speedbar-after-create-hook): Doc fix.
-
-2006-04-02  Michael Ernst  <mernst@alum.mit.edu>
-
-       * shell.el (shell-directory-tracker)
-       (shell-dynamic-complete-command): Doc fixes.
-
-2006-04-01  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * pcomplete.el (pcomplete-show-completions): Recognize TAB on text
-       terminals.
-
-2006-04-01  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-unc-hosts-cache): New defvar.
-       (ido-unc-hosts): If value of defcustom is a function, call it to
-       get list of UNC hosts.  Add function-item choices to specify
-       ido-unc-hosts-net-view or user function.
-       (ido-ignore-unc-host-regexps): New defcustom.
-       (ido-unc-hosts-net-view, ido-unc-hosts): New functions.
-       (ido-is-unc-root, ido-is-unc-host, ido-file-name-all-completions)
-       (ido-exhibit): Call ido-unc-hosts to get list of UNC hosts.
-
-2006-03-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs-util.el (cvs-insert-strings): Fix bug with strings longer than
-       wwidth.
-
-2006-03-31  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ido.el (ido-cache-unc-host-shares-time, ido-report-no-match)
-       (ido-max-work-file-list, ido-switch-buffer)
-       (ido-read-file-name-as-directory-commands):
-       Fix typos in docstrings.
-
-2006-03-30  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-system-coding-system): Define and use after
-       Mac-specific coding systems are ready.
-
-2006-03-27  Romain Francoise  <romain@orebokech.com>
-
-       * net/rcirc.el (rcirc-connect): Add autoload cookie.
-
-       * ldefs-boot.el: Update.
-
-2006-03-27  Daiki Ueno  <ueno@unixuser.org>
-
-       * pgg-gpg.el: Invoke gpg asynchronous, to avoid querying for
-       passphrases when it is not needed.
-       (pgg-gpg-use-agent): Add, to hard code that pgg shouldn't wait for
-       passphrase stuff from gpg, should only be necessary when you use
-       gpg with a smartcard.
-
-2006-03-27  Nick Roberts  <nickrob@snap.net.nz>
-
-       * comint.el (comint-dynamic-list-completions): Allow user to
-       select *Completions* buffer.
-
-2006-03-27  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-get-level-face): Fix bug with level counting.
-
-2006-03-26  Andreas Schwab  <schwab@suse.de>
-
-       * progmodes/gud.el (gdb): Only complain about multiple debugging
-       when the gdb process is still running.
-
-2006-03-25  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/rmail.el (tool-bar-map): Defvar it.
-       (rmail-tool-bar-map): Tool-bar buttons for Rmail.
-       (rmail-perm-variables): Make rmail-tool-bar-map a local variable.
-
-2006-03-25  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
-
-       * help.el (print-help-return-message): Suggest to use
-       display-buffer instead of switch-to-buffer-other-window to restore
-       the previous window without selecting it.
-
-2006-03-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * frame.el (select-frame-by-name): Call x-focus-frame also when
-       window-system is mac.
-
-       * term/mac-win.el: Adjust Courier font specifications in
-       x-fixed-font-alist.
-       (mac-select-convert-to-string): Use utf-16be-mac or utf-16le-mac
-       when directly encoding to UTF-16 in native byte order, no BOM.
-
-2006-03-25  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-rectangle-mark-key): New defcustom.
-       (cua--init-keymaps): Use it instead of fixed C-return.
-       (cua-mode): Set after it.
-
-       * emulation/cua-rect.el (cua--init-rectangles):
-       Use cua-rectangle-mark-key instead of fixed C-return.
-
-2006-03-25  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdba): Revert 2006-03-10 change for case of
-       "run" in .gdbinit.
-       (gdb-var-create-regexp): Remove "^done" prefix for gdb-mi.el.
-
-2006-03-24  Romain Francoise  <romain@orebokech.com>
-
-       * files.el (ctl-x-5-map): Really bind C-x 5 C-o to
-       `display-buffer-other-frame'.
-
-2006-03-24  Kim F. Storm  <storm@cua.dk>
-
-       * apropos.el (apropos-synonyms): Add selection => region.
-
-2006-03-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-create-regexp)
-       (gdb-var-list-children-regexp, gdb-var-update-regexp)
-       (gdb-var-list-children-regexp-1, gdb-var-update-regexp-1)
-       (gdb-data-list-register-values-regexp)
-       (gdb-stack-list-locals-regexp, gdb-stack-list-locals-handler):
-       Future proof against new fields being added to MI output.
-       (gdb-send): Don't treat backslashes for program input as
-       continuations.
-       (gdb-assembler-handler): Don't use window-start for this handler.
-       (gdb-frame-handler): Don't change to hollow arrow if overlay
-       arrow doesn't move to new frame.
-
-2006-03-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-continuation): Declare earlier to
-       prevent compiler warnings.
-       (gdb-stopped): Check for gud-last-last-frame (case: signal).
-       (breakpoint-disabled): Make lighter for contrast with overlay arrow.
-       (gdb-assembler-custom): Use hollow-right-triangle for assembler
-       buffer too.
-
-2006-03-23  Reiner Steib  <reinersteib+gmane@imap.cc>
-
-       * pgg-gpg.el (pgg-gpg-update-agent): Check for
-       make-network-process, so we can use the same code in Gnus v5-10
-       too and have this file fully synchronized with that release.
-
-2006-03-23  Romain Francoise  <romain@orebokech.com>
-
-       * ibuf-ext.el (ibuffer-read-filter-group-name):
-       Use `ibuffer-generate-filter-groups' to make completion list match
-       the filter groups that are really displayed in the Ibuffer buffer.
-       (ibuffer-generate-filter-groups): Add new args noempty, nodefault.
-
-2006-03-23  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (sort-coding-systems): Describe that
-       the argument is modified in docstring.
-
-2006-03-22  Sascha Wilde  <wilde@sha-bang.de>
-
-       * pgg-gpg.el (pgg-gpg-use-agent): Disable by default.
-       (pgg-gpg-update-agent): New function.
-       (pgg-gpg-use-agent-p): New function.
-       (pgg-gpg-process-region, pgg-gpg-encrypt-region)
-       (pgg-gpg-encrypt-symmetric-region, pgg-gpg-decrypt-region)
-       (pgg-gpg-sign-region): Use it.
-
-2006-03-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (custom-face-set): Call custom-push-theme before
-       face-spec set so that `changed' theme is correctly saved.
-       (custom-face-reset-standard): Reset to recalculated face rather
-       than defface spec.
-
-       * custom.el (custom-push-theme): Only save `changed' theme if the
-       current face does not match the defface specs.
-
-2006-03-21  Simon Josefsson  <jas@extundo.com>
-
-       * pgg-gpg.el: Ideas below based on patch from Sascha Wilde
-       <wilde@sha-bang.de>.
-       (pgg-gpg-use-agent): New variable.
-       (pgg-gpg-process-region): Use it.
-       (pgg-gpg-encrypt-region): Likewise.
-       (pgg-gpg-encrypt-symmetric-region): Likewise.
-       (pgg-gpg-decrypt-region): Likewise.
-       (pgg-gpg-sign-region): Likewise.
-       (pgg-gpg-possibly-cache-passphrase): Don't cache a nil password.
-
-2006-03-21  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-open-at-point): Fix bug in wiki-style
-       bracket links.
-
-2006-03-21  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/gdb-ui.el (gdb-reset): Set buffer local value of
-       fringe-indicator-alist instead of modifying global value.
-       (gdb-frame-handler): Likewise.
-
-2006-03-21  Nick Roberts  <nickrob@snap.net.nz>
-
-       * diff-mode.el (diff-function): Make it inherit from diff-header
-       instead of diff-context.
-
-       * progmodes/gdb-ui.el (hollow-right-triangle): Define as fringe
-       bitmap.
-       (gdb-info-stack-custom): Rename from gdb-info-frames-custom and
-       change names in macro above for consistency.
-       (gdb-frame-handler): Use hollow-right-triangle for all selected
-       frames which except the innermost (where execution has stopped).
-       (gdb-reset): Reset buffer-local values of overlay-arrow.
-
-2006-03-20  Richard Stallman  <rms@gnu.org>
-
-       * simple.el (set-mark-command): Doc fix.
-
-       * files.el (display-buffer-other-frame): New command.
-       (ctl-x-4-map): Bind C-x 5 C-o to it.
-
-2006-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * jit-lock.el (jit-lock-function): Check for the actual defer-timer
-       rather than just defer-time, in case defer-time has been changed but
-       the timer isn't running yet.
-       (jit-lock-deferred-fontify): Correspondingly let-bind defer-timer.
-
-2006-03-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * help-mode.el (help-follow-symbol): New function.
-       Essentially identical to the old `help-follow', but do not let
-       `push-button' do the work when on an xref.
-       (help-mode-map): Bind `help-follow-symbol' to "C-c C-c".
-
-2006-03-19  Richard Stallman  <rms@gnu.org>
-
-       * help-mode.el (help-xref-symbol-regexp): Make no xref for symbol
-       preceded by the word `program'.
-       (help-follow-mouse, help-follow): Throw error if not on xref.
-       Delete no longer used args.
-
-2006-03-20  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-stopped): Even when there is no source
-       annotation ensure gud-overlay-arrow-position is redisplayed.
-
-2006-03-19  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-include-OPTkey)
-       (bibtex-entry-field-alist, bibtex-generate-url-list): Mark as risky.
-       (bibtex-autokey-name-case-convert)
-       (bibtex-autokey-titleword-case-convert): Make these the aliases
-       for the following two variables.
-       (bibtex-autokey-name-case-convert-function)
-       (bibtex-autokey-titleword-case-convert-function): Make these the
-       real names.
-       (bibtex-font-lock-keywords): Make bibtex-font-lock-url and
-       bibtex-font-lock-crossref sublists.
-       (bibtex-mode): Revert 2005-12-30 change (which made
-       completion-ignore-case buffer-local).
-       (bibtex-url): Simplify.
-
-2006-03-19  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-rect.el (cua--highlight-rectangle): Set overlay
-       cursor property value to 2 (to align with C level change).
-
-2006-03-19  Bill Wohler  <wohler@newt.com>
-
-       * image.el (image-load-path-for-library): Shorten first line in
-       docstring.
-
-2006-03-18  Richard Stallman  <rms@gnu.org>
-
-       * mail/rmail.el (rmail-reply-regexp): Undo previous change.
-
-2006-03-18  Ben North  <ben@redfrontdoor.org>  (tiny change)
-
-       * isearch.el (isearch-other-meta-char): Handle user bindings for
-       shifted control characters.
-
-2006-03-18  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/ispell.el (ispell-skip-region-alist): Add "_+" to the
-       part that matches email addresses, file names, etc.
-
-2006-03-18  Eli Zaretskii  <eliz@gnu.org>
-
-       * term/w32-win.el (mouse-set-font):
-       Mention w32-list-proportional-fonts in the doc string.
-
-2006-03-18  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-cache-ftp-work-directory-time): Doc fix.
-       (ido-unc-hosts): New user option to explicitly define list of know
-       UNC-style hosts for completion.
-       (ido-cache-unc-host-shares-time): New user option.
-       (ido-is-unc-root, ido-is-unc-host, ido-cache-unc-valid):
-       New helper functions for UNC file-name support.
-       (ido-may-cache-directory): Check for UNC host.  Simplify.
-       (ido-wash-history): Clean out old UNC hosts.
-       (ido-nonreadable-directory-p): UNC hosts are always readable.
-       (ido-directory-too-big-p): UNC hosts are never too big.
-       (ido-set-current-directory): Handle UNC root path.
-       (ido-file-name-all-completions): Complete UNC host names from
-       ido-unc-hosts list.  Cache UNC host shares.
-       (ido-make-file-list-1): Don't filter UNC root.
-       (ido-exhibit): Check for // in root directory, and switch to UNC
-       mode by setting ido-current-directory to //.
-
-2006-03-17  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (customize-changed-options): Mention explicit
-       version number as default in prompt.
-
-2006-03-17  Bill Wohler  <wohler@newt.com>
-
-       * image.el (image-load-path-for-library): Minor docstring fix.
-
-2006-03-17  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-read-date): Include subgroup 5 into
-       replacement text.
-       (org-popup-calendar-for-date-prompt): Fix customization type.
-
-2006-03-17  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gud-watch): Provide completion.
-       (gdb-continuation): New variable.
-       (gdb-send): Deal with continuation lines.
-
-       * progmodes/gud.el (gud-gdb-complete-command)
-       (gud-gdb-run-command-fetch-lines): Adapt for use with watch
-       expressions.
-       (gud-tooltip-mode): Use buffer-local value.
-
-2006-03-16  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-edit-input): Use selected match, if any.
-
-2006-03-16  Bill Wohler  <wohler@newt.com>
-
-       * image.el (image-load-path-for-library): Prefer user's images in
-       image-load-path.
-
-2006-03-16  Martin Rudalics  <rudalics@gmx.at>
-
-       * mouse.el (mouse-drag-vertical-line): Use window-inside-edges
-       when checking for attempt to drag leftmost or rightmost scrollbar.
-
-2006-03-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-inferior-status): New variable.
-       (gdb-force-mode-line-update): New function.
-       (gdb-resync, gdb-starting, gdb-signal, gdb-exited, gdb-stopped)
-       (gdb-exited): Use them.
-       (gdb-signal): New function.
-       (gdb-annotation-rules): Provide a rule for it.
-
-2006-03-16  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule.el (auto-coding-regexp-alist): Add entries
-       for Unicode BOM.
-
-       * sort.el (sort-build-lists): Temporarily bind
-       inhibit-field-text-motion to t.
-
-2006-03-15  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * locate.el (locate-command, locate-make-command-line)
-       (locate-fcodes-file, locate-update-command)
-       (locate-prompt-for-command, locate, locate-with-filter)
-       (locate-get-file-positions): Doc fixes.
-       (locate-buffer-name, locate-header-face): Remove leading `*' in
-       defcustom.
-       (locate-filter-output): Use `keep-lines' instead of its alias
-       `delete-non-matching-lines'.
-       (locate-get-filename, locate-get-dirname): Add introductory comment.
-       (locate-find-directory-other-window): Give appropriate error
-       message if used outside main listing.
-
-2006-03-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (font-lock-lines-before): Delete variable, subsumed by
-       the new extend-region feature.
-       (font-lock-after-change-function): Update correspondingly.
-       * jit-lock.el (jit-lock-after-change): Update correspondingly.
-       * progmodes/grep.el (font-lock-lines-before): Don't disable.
-
-2006-03-15  Bill Wohler  <wohler@newt.com>
-
-       * image.el (image-load-path-for-library): Fix example by not
-       recommending that one binds image-load-path.  Just defvar it to
-       placate compiler and only use it if previously defined.
-
-2006-03-15  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-insert-centered): Use `string-width' to
-       make underlining work for wide characters.
-       (org-goto-map, org-agenda-mode-map, org-mode-map): Explicitly bind
-       TAB to `org-cycle', to make sure that no binding in
-       `outline-mode-map' can supercede it.
-
-2006-03-14  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el: Increment version to 2.2.1 in file commentary.
-
-       (allout-version): Increment to 2.2.1.
-
-       (allout-default-layout): New customization variable, used when the
-       file lacks a specific allout-layout.  Uses allout-layout-type for
-       recursively nested definition.
-
-       (allout-layout-type): Widget defining allout layouts, necessary for
-       self-recursive definition.
-
-       (allout-mode): Incorporate allout-default-layout as fallback for
-       allout-layout.
-
-       (allout-layout): Mark as 'safe-local-variable', and refer mention
-       fallback to `allout-default-layout' in absence of a specified value.
-       (allout-passphrase-verifier-string)
-       (allout-passphrase-hint-string): Mark as 'safe-local-variable'.
-
-       (allout-file-passphrase-verifier-string): Obsolete variable, removed.
-
-       (allout-get-encryption-passphrase-verifier): Use correct name of
-       passphrase verifier in docstring.
-
-2006-03-15  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-list): Change order of first two
-       elements.
-       (gdb-find-watch-expression): Make it work for arrays too.
-       Follow change to gdb-var-list.
-       (gud-watch): Allow the user to enter variable name with a prexix
-       arg.  Create keybindings.
-       (gdb-var-create-handler, gdb-var-evaluate-expression-handler)
-       (gdb-var-list-children-handler, gdb-var-update-handler)
-       (gdb-var-delete, gdb-edit-value, gdb-speedbar-expand-node)
-       (gdb-var-list-children-handler-1, gdb-var-update-handler-1):
-       Follow change to gdb-var-list.
-       (gdb-starting): Don't show the overlay arrows when program is running.
-
-       * progmodes/gud.el (gud-speedbar-buttons): Follow change to
-       gdb-var-list.
-
-2006-03-14  Bill Wohler  <wohler@newt.com>
-
-       * image.el (image-load-path-for-library): Pass value of path
-       rather than symbol.  Always return list of directories.
-       Guarantee that image directory comes first.
-
-2006-03-14  Alan Mackenzie  <acm@muc.de>
-
-       * font-core.el (font-lock-extend-region\(-function\)?.):
-       New function/variable.
-
-       * font-lock.el (font-lock-after-change-function):
-       Call font-lock-extend-region.  Obey font-lock-lines-before.
-       (font-lock-default-fontify-region): Remove reference to
-       font-lock-lines-before.
-
-       * jit-lock.el (jit-lock-after-change):
-       Call font-lock-extend-region.  Obey font-lock-lines-before.
-
-2006-03-14  David Ponce  <david@dponce.com>
-
-       * tree-widget.el (tree-widget-themes-load-path)
-       (tree-widget-themes-directory, tree-widget-theme): Doc fix.
-
-2006-03-13  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc) <defgroup>: Add link to manual.
-       (rcirc-print): Mark the start of text at the end of the prompt.
-       (rcirc-track-minor-mode): Add autoload cookie.
-       (rcirc-update-activity-string): Add space to front of mode-line
-       indicator.
-
-2006-03-13  Miles Bader  <miles@gnu.org>
-
-       * net/rcirc.el (rcirc-nick-abbrevs): Remove variable.
-       (rcirc-abbrev-nick): Remove function.
-       (rcirc-format-response-string): Don't call `rcirc-abbrev-nick'.
-
-2006-03-13  David Ponce  <david@dponce.com>
-
-       * tree-widget.el: Handle themes across all occurrences of the main
-       themes sub-directory found in tree-widget-themes-load-path.
-       (tree-widget-themes-directory, tree-widget-theme): Doc fix.
-       (tree-widget--locate-sub-directory): Return all occurrences.
-       (tree-widget-themes-path): New function.
-       Replace tree-widget-themes-directory, and return a list of directories.
-       (tree-widget-set-parent-theme)
-       (tree-widget-lookup-image): Use it.
-
-2006-03-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-link-search): Avoid self-matching of
-       links, allow target text to be distributed over several lines.
-       (org-search-not-link): New function.
-       (org-set-regexps-and-options, org-get-current-options):
-       New startup options.
-       (org-export-as-html): Take odd-level setting from local variable.
-       (org-fontify-emphasized-text): New option.
-       (org-set-font-lock-defaults): Include emphasized text.
-       (org-follow-mhe-link): Allow folder-only links, fix folder name.
-       (org-font-lock): Customize group renamed from `org-faces'.
-
-2006-03-13  John Paul Wallington  <jpw@pobox.com>
-
-       * ibuf-ext.el (ibuffer-never-show-predicates): Add `require'
-       keyword; require `ibuf-ext' feature.  Thanks to Zhang Wei.
-
-2006-03-12  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-start.el (all): Delete :version keyword for members of the
-       fringe group, since the entire group is new in 22.1.
-
-2006-03-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-stack-list-locals-handler): Add local
-       map if value is hexadecimal (an address).
-       (gud-watch): Only search roots for existing watch expressions.
-       (gdb-speedbar-refresh): Bind speedbar-shown-directories to nil to
-       prevent caching problems with speedbar-update-directory-contents.
-
-2006-03-12  Juri Linkov  <juri@jurta.org>
-
-       * battery.el (battery-linux-proc-acpi): Check `capacity' for non-nil
-       before comparing with `low' and `warn'.
-
-       * info.el (Info-dir-remove-duplicates): Move point to the
-       beginning of the current line after deleting the entries from
-       redundant heading.  Use marker for `limit' and compare it with
-       point before calling `re-search-forward'.
-
-2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * simple.el (yank): Fix typo in docstring.
-
-2006-03-11  Ryan Yeske  <rcyeske@gmail.com>
-
-       * mail/rmailsum.el (rmail-summary-next-msg): Skip deleted
-       messages, where "D" is the 6th character.
-
-2006-03-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * simple.el (yank): Fix last change.
-
-2006-03-11  David Ponce  <david@dponce.com>
-
-       * ispell.el (ispell-find-aspell-dictionaries): Add aliases before
-       merging elements from the standard ispell-dictionary-alist.
-       (ispell-aspell-add-aliases): Add aliases to the passed dictionary
-       alist, and return the new alist.
-
-2006-03-11  Richard Stallman  <rms@gnu.org>
-
-       * mail/rmail.el (rmail-ignored-headers): Discard DomainKey-Signature.
-
-       * eshell/eshell.el (eshell-prefer-to-shell): Variable deleted;
-       the way it is implemented is too unclean.
-
-       * simple.el (kill-region, yank): Doc fix.
-
-       * battery.el (battery-echo-area-format): Doc fix.
-       (battery-mode-line-format): Likewise.
-       (battery-linux-proc-apm, battery-linux-proc-acpi): Likewise.
-       (battery-linux-proc-acpi): Ignore batteries that say "charged".
-
-2006-03-11  Kurt Hornik  <Kurt.Hornik@wu-wien.ac.at>
-
-       * progmodes/octave-mod.el (octave-indent-for-comment):
-       Behave according to do string.
-
-2006-03-11  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/ispell.el (ispell-menu-map-needed) [ispell-message]:
-       Be visible only if major mode is Mail Mode.
-
-       * textmodes/flyspell.el (flyspell-external-point-words)
-       (flyspell-process-localwords): Fix last changes.
-
-2006-03-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * calendar/holidays.el (list-holidays): Doc fix.
-
-       * international/mule.el (auto-coding-alist): Add .odt
-       (OpenOffice's open document) files.
-
-       * files.el (auto-mode-alist): Add .odt (OpenOffice's open
-       document) files.  Mention in the doc string the need to sync with
-       auto-coding-alist.
-
-2006-03-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (hack-local-variables-confirm): Don't prompt for ! if
-       enable-local-variables is set to always query, or there is no
-       savable variable.
-
-2006-03-10  Bill Wohler  <wohler@newt.com>
-
-       * image.el (image-load-path-for-library): Merge at least three
-       functions from Gnus and MH-E into this one function that can now
-       be shared.
-
-2006-03-11  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-remove-text-properties): Rename from
-       gdb-remove-mouse-face and remove help-echo too.
-       (gdb-enqueue-input): Correct conditional clause.
-
-2006-03-10  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/calendar.el (calendar-holidays): Doc fix.
-       * calendar/holidays.el (list-holidays): Doc fix.
-
-2006-03-10  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdba): Don't call gdb-init-1 explicitly as
-       it gets called in gdb-prompt anyway.
-       (gdb-use-separate-io-buffer): Only restore window arrangement for
-       gdb-many-windows.
-       (gdb-enqueue-input): Make it harder to send GDB input when program
-       is running.
-       (gdb-buffer-list): New variable.
-       (gdb-remove-mouse-face): New function.
-       (gdb-starting): Use it when GDB input won't get sent.
-
-2006-03-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help.el (view-lossage): Remove trailing whitespace before
-       inserting "\n".
-
-2006-03-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (hack-local-variables-confirm):
-       Set coding-system-for-read to nil before writing to .emacs.
-
-       * arc-mode.el (archive-extract): Check if an existing buffer name
-       comes from a different archive.
-
-       * help.el (describe-key-briefly): If KEY is a down event, read and
-       discard the up event.
-
-2006-03-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-buttons): Allow pointers to
-       be edited and use font-lock-warning-face for any changes.
-
-       * progmodes/gdb-ui.el (gdb-edit-value-handler): New function.
-       (gdb-edit-value): Use it to report any errors.
-
-2006-03-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help.el (describe-key): Remove leftover test code.
-
-2006-03-07  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el: Move defvars out of eval-when-compile.
-       Use buffer-file-name variable.
-       (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused
-       arg `file'.
-       (org-level-faces): Remove startup dependency.
-       (org-cycle, org-map-tree, org-scan-tags)
-       (org-remember-handler): Don't call `outline-level' directly.
-       (org-mhe-search-all-folders): New option.
-       (org-mhe-get-message-folder-from-index)
-       (org-mhe-get-message-folder): Fix indexing search.
-       (org-format-agenda-item): Handle nil TAGS argument.
-       (org-cleaned-string-for-export, org-activate-target-links)
-       (org-make-target-link-regexp): Deal with empty radio target list.
-       (org-tag): New face.
-       (org-get-level-face): New function.
-       (org-set-font-lock-defaults): Simplify setup for headlines.
-       (org-complete): Pass common substring to `display-completion-list'.
-
-2006-03-06  David Ponce  <david@dponce.com>
-
-       * tree-widget.el: Update Commentary header.
-       (tree-widget-theme-name): Ignore parent themes.
-       (tree-widget-set-parent-theme): New function.
-       (tree-widget-set-theme): Use it.
-       (tree-widget-set-image-properties): Move definition.  Does nothing
-       if image properties have already been set.
-       (tree-widget-image-properties): Move definition.  Receive an image
-       name.  Set the :pointer property.
-       (tree-widget-lookup-image): Doc fix.  Search in parent themes.
-       Don't set the :pointer image property.
-       (tree-widget-convert-widget): New function.  Handle :dynargs
-       compatibility here.
-       (tree-widget): Use it to :convert-widget.  Add the :expander-p
-       predicate to control when the :expander function is entered.
-       Thanks to Ken Manheimer <ken.manheimer@gmail.com> for the idea.
-       (tree-widget-value-create): Handle :expander-p.  widget-apply
-       :expander.
-       (tree-widget-expander-p): New function.  Default value of the
-       :expander-p property.
-
-2006-03-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * help.el (describe-key): Properly handle the return value of
-       read-key-sequence when grabbing an up-event.  Cleanup mouse-1
-       remaps.  Handle string and vector `follow-link' values.
-
-2006-03-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * complete.el (PC-expand-many-files): Try be more careful when parsing
-       the shell's output.
-
-2006-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * outline.el (hide-sublevels): Provide better interactive default.
-
-2006-03-06  Kenichi Handa  <handa@m17n.org>
-
-       * international/fontset.el (create-fontset-from-fontset-spec):
-       Fix regexp for paring FONTSET-SPEC (allow spaces after `:').
-
-2006-03-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * progmodes/gud.el (gud-jdb-marker-filter): Quote `[' with two
-       backslashes instead of one in regexp.
-       (gud-tooltip-dereference): Add missing optional argument.
-
-2006-03-04  John Paul Wallington  <jpw@pobox.com>
-
-       * wdired.el (toplevel): Require `cl' at compile-time.
-
-2006-03-04  Andreas Schwab  <schwab@suse.de>
-
-       * server.el (server-process-filter): Handle errors during
-       evaluation of the argument.
-
-2006-03-03  John Paul Wallington  <jpw@pobox.com>
-
-       * t-mouse.el (t-mouse-drag-start, t-mouse-swap-alt-keys): Doc fix;
-       escape parentheses at beginning of line.
-       (t-mouse-tty, t-mouse-make-event): Doc fix; use imperative.
-       (t-mouse-mode): Remove period from end of error message.
-
-2006-03-03  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/flyspell.el (flyspell-process-localwords):
-       Be case-sensitive.
-
-2006-03-03  Martin Rudalics  <rudalics@gmx.at>
-
-       * cus-edit.el (custom-quote): Remove function, since it has been
-       moved to custom.el.
-
-       * font-lock.el (lisp-font-lock-keywords-2)
-       * emacs-lisp/rx.el (rx-check-any, rx-check-not)
-       * generic-x.el (reg-generic-mode): Quote "]"s in regexps when
-       they have no special meaning.
-
-       * midnight.el (clean-buffer-list): Handle case where base-buffer of
-       indirect buffer gets killed before indirect buffer.  Use dolist.
-
-2006-03-03  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * emacs-lisp/edebug.el (edebug-display): Use `edebug-sit-for-seconds'
-       value instead of a literal constant (1) on more pauses.
-
-2006-03-03  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>  (tiny change)
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       Be case-sensitive.
-
-2006-03-03  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-url-regexp): Match entire url when it starts
-       with "www".
-
-2006-03-03  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el: Restablish intermediate missing comment header to
-       preserve outline structure.
-       (allout-beginning-of-current-entry): Skip invisible text.
-       (allout-open-topic): Fix opening a topic at end-of-buffer.
-       (allout-minor-mode): Move nearer to allout-mode function.
-
-2006-03-02  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-paste-subtree): Remove (debug) form.
-
-2006-03-02  Nick Roberts  <nickrob@snap.net.nz>
-
-       * dframe.el (dframe-frame-mode): Don't burp when menu-bar-lines
-       is nil.
-
-       * progmodes/gud.el (gud-speedbar-menu-items):
-       Use buffer-local-value and add missing :visible keyword.
-
-       * progmodes/gdb-ui.el (gdb-speedbar-refresh): Quieten speedbar-refresh.
-
-2006-03-01  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/reftex-index.el (reftex-index-map): `follow-mouse'
-       must be `follow-link'.
-
-       * textmodes/reftex-toc.el (reftex-toc-map): Likewise.
-
-       * textmodes/org.el (org-export-as-html): Fix bugs in HTML
-       formatting: No nested anchors.
-       (org-all-targets): Fix bug with XEmacs compatibility.
-       (org-read-date): Add (require 'parse-time).
-       (org-set-tags): Fix bug with extra inserted space.
-       (org-export-html-style): Define a style class for targets.
-       (org-agenda-keymap, org-mouse-map): Add a binding for `follow-link'.
-       (org-hide-leading-stars): New option.
-       (org-hide): New face.
-       (org-set-font-lock-defaults): Allow to hide leading stars.
-       (org-get-legal-level, org-tr-level): New functions.
-       (org-odd-levels-only): New option.
-       (org-level-faces, org-paste-subtree, org-convert-to-odd-levels)
-       (org-demote, org-promote): Deal with double-star levels.
-       (org-convert-to-odd-levels): New command.
-
-2006-03-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * speedbar.el (speedbar-update-localized-contents): Try to
-       preserve window-start.
-       (speedbar-update-directory-contents): Try to preserve window-start
-       and window-point.
-       (speedbar-update-special-contents): Don't move back to start of window.
-
-       * progmodes/gdb-ui.el (gdb-speedbar-refresh): Rename from
-       gdb-speedbar-timer-fn.  Use speedbar-refresh instead of
-       speedbar-timer-fn.
-       (gdb-var-update-handler, gdb-var-update-handler-1): Use it.
-       (gdb-speedbar-expand-node): Use speedbar-delete-subblock
-       instead of gdb-speedbar-timer-fn.
-
-2006-02-28  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calccomp.el (math-compose-tex-matrix): Add a latex option.
-       (math-compose-expr): Use latex option when calling
-       `math-compose-tex-matrix' for latex mode.
-
-2006-02-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * speedbar.el: Re-instate comments about developing for speedbar
-       [this is what info and gdb-ui use even if better methods exist now].
-
-       * t-mouse.el: New file.
-       (t-mouse-tty): Use with-temp-buffer.  Add more terminal types.
-       (t-mouse-lispy-buffer-posn-from-coords): Remove.
-       (t-mouse-make-event-element): Use posn-at-x-y instead.
-       (t-mouse-make-event): Deal with Fedora Core 3.
-       (t-mouse-make-event): Don't sink the `stupid text mode menubar'.
-       (t-mouse-mouse-position-function): New function.  Use it instead
-       of advising mouse-position.
-       (t-mouse-mode): New minor mode.
-       (t-mouse-stop, t-mouse-run): Remove.  Use t-mouse-mode instead.
-
-2006-02-27  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/calendar.el (calendar-holidays): Doc fix.
-
-2006-02-27  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-source-window): New variable.
-       Re-introduce the concept of a source window.
-       (gdb-get-buffer-create): Rename from gdb-get-create-buffer for
-       consistency with get-buffer-create.
-       (def-gdb-auto-update-handler, gdb-info-locals-handler)
-       (gdb-data-list-register-values-handler)
-       (gdb-stack-list-locals-handler): Try to preserve window-start as
-       well as window-point.
-       (gdb-display-source-buffer): New function (old concept).
-       (gdb-goto-breakpoint): Use it.
-
-       * progmodes/gud.el (gud-display-line): Use gdb-display-source-buffer
-       for gdb-ui/gdb-mi (old concept).
-
-2006-02-27  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/reftex-index.el (reftex-index-map): Add `follow-mouse'
-       binding.
-
-       * textmodes/reftex-toc.el (reftex-toc-map): Add `follow-mouse' binding.
-
-       * textmodes/reftex-sel.el (reftex-select-label-map)
-       (reftex-select-bib-map): Add `follow-mouse' binding.
-
-2006-02-26  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * jka-cmpr-hook.el (jka-compr-compression-info-list)
-       (jka-compr-mode-alist-additions, jka-compr-load-suffixes):
-       Give :set functions to provide automatic updating.
-       Update docstring.  Give compiler defvars early in the file
-       and move the defcustoms to a later spot where all called functions
-       are defined.
-       (jka-compr-file-name-handler-entry): Doc fix.
-       (jka-compr-compression-info-list--internal)
-       (jka-compr-mode-alist-additions--internal)
-       (jka-compr-load-suffixes--internal): New variables.
-       (jka-compr-install): Set the three above variables.
-       Update `load-file-rep-suffixes' instead of `load-suffixes'.
-       (jka-compr-update, jka-compr-set): New functions.
-       (auto-compression-mode): Doc fix.
-
-       * jka-compr.el (jka-compr-uninstall): Replace `mapcar' with `mapc'.
-       Update `load-file-rep-suffixes' instead of `load-suffixes'.
-       Use jka-compr-compression-info-list--internal,
-       jka-compr-mode-alist-additions--internal and
-       jka-compr-load-suffixes--internal.
-
-       * files.el (load-library):
-       * loadhist.el (file-loadhist-lookup):
-       * startup.el (command-line):
-       * subr.el (locate-library):
-       * emacs-lisp/autoload.el (update-directory-autoloads):
-       * emacs-lisp/find-func.el (find-library-suffixes):
-       Use `get-load-suffixes' instead of `load-suffixes'.
-
-       * subr.el (locate-library):
-       * emacs-lisp/find-func.el (find-library-name):
-       Use `load-file-rep-suffixes' instead of '("").
-
-2006-02-26  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-save-history, ido-load-history): Simplify.
-       Don't use find-file-noselect to avoid interference from other modes.
-
-2006-02-25  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * progmodes/sh-script.el (sh-mode): Fix bug: Arrange
-       to use the default shell if filename is not available.
-       Reported by Giorgos Keramidas.
-
-2006-02-25  John Williams  <jrw@pobox.com>  (tiny change)
-
-       * progmodes/etags.el (tags-completion-table): Do completion from
-       all the tables in the current list, as documented in the manual.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * CC Mode Update to 5.31.3.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-mode.el (c-postprocess-file-styles):
-       Bind inhibit-read-only to t, around the call to
-       c-remove-any-local-eval-or-mode-variables, so that it works on a
-       RO file.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-awk.el: Correct a typo.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el, cc-mode.el: Rename c-hungry-backspace to
-       c-hungry-delete-backwards, at the request of RMS.  Leave the old
-       name as an alias.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-mode.el: Correct a typo.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-defs.el: Update the version number to 5.31.3.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el (c-electric-brace): Fix clean-up
-       brace-else-brace (error due to mbeg, mend being undefined).
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-mode.el: File Local variables: Solve the problem
-       where both `mode' and c-file-offsets are specified: `mode' will
-       overwrite c-f-o's settings:
-       (c-remove-any-local-eval-or-mode-variables): New function.
-       (c-postprocess-file-styles): Call the above new function, within
-       c-tentative-buffer-change, to splat `mode' and `eval' before the
-       second hack-local-variables.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-mode.el:
-       [Supersedes patch to cc-engine.el 2005-12-16T20:07:49Z!monnier@iro.umontreal.ca]
-       (c-after-change): Protect the match data with save-match-data.
-       It was getting corrupted by c-after-change-check-<>-operators.
-
-       * cc-defs.el: [Supersedes patch V1.38]:
-       (top level): Check for a buggy font-lock-compile-keywords ONLY in
-       XEmacs.  GNU Emacs 22 now has a check which would throw an error here.
-
-       * progmodes/cc-awk.el (c-awk-after-change): Protect the match data
-       with save-match-data.  It was being corrupted when Font Lock was
-       not enabled.
-
-2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-langs.el (c-mode-menu): Add menu items for Electric
-       Mode and Subword Mode.
-
-       * progmodes/cc-engine.el (c-beginning-of-statment-1): Distinguish
-       real labels ("case 1:" or "foo:") from non-labels ("public:").
-       (c-forward-objc-directive): Replace c-forward-token-2 with crude
-       coding; c-f-t-2 doesn't move over a token at EOB.
-
-       * progmodes/cc-defs.el (c-version): Update version number to 5.31.2.
-
-       * progmodes/cc-cmds.el, cc-mode.el, cc-engine.el
-       (c-update-modeline): Concatenate the minor mode indicators
-       directly onto mode-name, removing c-submode-indicators.
-       Sometimes, c-s-i got separated from the mode name on the mode line.
-
-       * progmodes/cc-cmds.el (c-electric-brace, c-electric-semi&comma)
-       (c-electric-colon): Correct doc-strings: "/ln" -> "/la".
-
-2006-02-24  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Improve the
-       error message when there's an evaluation error to show whether
-       it's loaded from source or not.
-       (c-filter-ops): Make it available at runtime too to work when
-       `c-make-init-lang-vars-fun' needs to evaluate from source.
-
-2006-02-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help.el (help): Revert last part of 2006-02-23 change (deletion
-       of the `provide' call).
-
-2006-02-23  Juri Linkov  <juri@jurta.org>
-
-       * compare-w.el (compare-windows-highlight): Add new value
-       `persistent' and change :type from `boolean' to `choice'.
-       (compare-windows-overlays1, compare-windows-overlays2):
-       New internal variables.
-       (compare-windows-highlight): If compare-windows-highlight is
-       `persistent', add current overlays to compare-windows-overlays[12]
-       instead of adding compare-windows-dehighlight to pre-command-hook.
-       (compare-windows-dehighlight): Delete all overlays from
-       compare-windows-overlays[12].
-
-       * info.el (Info-search): Don't bind search-spaces-regexp to
-       Info-search-whitespace-regexp in non-regexp isearch mode.
-
-2006-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * help.el (describe-mode): Pass `mode-name' to format-mode-line.
-
-2006-02-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * textmodes/org.el (org-xemacs-p)
-       (org-export-html-show-new-buffer, org-table-may-need-update)
-       (org-insert-item, org-mhe-get-message-real-folder)
-       (org-mhe-get-message-folder-from-index)
-       (org-mhe-get-message-folder, org-mhe-get-message-num)
-       (org-mhe-get-header, org-make-org-heading-search-string)
-       (org-make-org-heading-camel, org-table-sort-lines)
-       (org-format-org-table-html, org-format-table-table-html):
-       Fix typos in docstrings.
-
-2006-02-23  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-cleaned-string-for-export)
-       (org-solidify-link-text): New function.
-       (org-add-hook): Use `add-local-hook' instead of `make-local-hook' for
-       XEmacs, just to silence the compiler.
-       (org-export-as-ascii, org-export-as-html-and-open):
-       Use `org-cleaned-string-for-export' and create internal links.
-       (org-follow-mhe-link): Require mh-e, use folder.
-
-2006-02-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-buttons): Use shadow face properly.
-
-       * progmodes/gdb-ui.el (gdb-debug-ring-max): Rename from
-       gdb-debug-log-length.
-       (gdb-debug-ring): Rename from gdb-debug-log-ring.  Don't make
-       it a real ring but...
-       (gud-gdba-marker-filter): ...make it work like mark-ring.
-       (gdb-enable-debug): Rename from gdb-enable-debug-log.
-       (gdb-mouse-jump): New function.  Add bindings.
-
-2006-02-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-signalled): New variable and function.
-       (gdb-debug-log-ring): Rename from gdb-debug-log and make a ring.
-       (gdb-send, gdb-send-item, gud-gdba-marker-filter): Use it.
-       (gdb-debug-log-length): Customize it's length.
-       (gud-watch, gdb-var-create-handler): Display function::var format
-       but don't use to create variable object.
-       (gdb-var-create-handler): Use message-box in place of message.
-       (gdb-stopped): Call gdb-exited if signalled.
-
-2006-02-22  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/reftex.el (reftex-locate-file): Remove duplicate function.
-
-       * textmodes/reftex-vars.el (reftex-try-all-extensions): New option.
-
-       * textmodes/reftex.el (reftex-locate-file): Search all extensions
-       if `reftex-try-all-extensions' is set.
-
-       * textmodes/reftex-dcr.el (reftex-view-crossref): New argument to
-       fail silently when there is no valid argument at point.
-       (reftex-view-crossref-when-idle): Call `reftex-view-crossref' with
-       `fail-silently' argument.  From a patch by David Reiter.
-
-       * textmodes/org.el (org-mark-ring-push, org-mark-ring-goto):
-       New commands.
-       (org-mark-ring): New variable.
-       (org-mark-ring-length): New option.
-       (org-open-at-point, org-goto, org-open-file): Push old position
-       onto the mark ring.
-       (org-add-hook): New function.
-       (org-export-table-remove-special-lines): New option.
-       (org-skip-comments, org-format-org-table-html): Respect new
-       option `org-export-table-remove-special-lines'.
-       (org-open-file): Allow special command configuration for
-       directory link.
-       (org-file-apps): Fix bugs in customize type, added setting
-       for directories.
-       (org-activate-tags, org-format-agenda-item, org-complete)
-       (org-get-tags-at, org-scan-tags, org-make-tags-matcher)
-       (org-get-tags, org-get-buffer-tags, org-open-at-point)
-       (org-link-search, org-make-org-heading-search-string)
-       (org-make-org-heading-camel): Allow @ and 0-9 as tags characters.
-       (org-radio-targets, org-file-link-context-use-camel-case)
-       (org-activate-camels): New options.
-       (org-update-radio-target-regexp, org-all-targets)
-       (org-make-target-link-regexp, org-activate-target-links):
-       New functions.
-       (org-make-org-heading-search-string): New function.
-       (org-store-link, org-insert-link): Use new option
-       `org-file-link-context-use-camel-case'.
-       (org-activate-camels): Use new option `org-activate-camels'.
-       (org-link-regexp): Add mhe prefix.
-       (org-open-at-point, org-store-link): Support for mhe links.
-       (org-mhe-get-message-real-folder, org-mhe-get-message-folder)
-       (org-mhe-get-message-folder-from-index, org-mhe-get-message-num)
-       (org-mhe-get-header, org-follow-mhe-link): New functions.
-       (org-remove-angle-brackets, org-add-angle-brackets):
-       New functions.
-       (org-bracket-link-regexp): New constant.
-       (org-read-date): Fix bug that was rejecting all typed dates.
-       (org-link-search): Make hierarchy above visible after a match.
-       (org-follow-bbdb-link): Inhibit electric mode for BBDB.
-       (org-store-link): Fix bug with link creation when cursor is in
-       an empty line.
-       (org-open-at-point): Fix bug with matching a link.
-       Fixed buggy argument sequence in call to `org-view-tags'.
-       (org-compile-prefix-format): Set `org-prefix-has-tag'.
-       (org-prefix-has-tag): New variable.
-       (org-format-agenda-item): Remove tags from headline
-       if appropriate.
-       (org-agenda-remove-tags-when-in-prefix): New option.
-
-2006-02-21  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * ediff-diff.el (ediff-setup-diff-regions, ediff-setup-diff-regions3):
-       Fix the regular expressions.
-
-2006-02-21  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/sh-script.el (sh-mode): Set shell type based on file name
-       if there's no other specific basis.
-
-       * emacs-lisp/unsafep.el (unsafep): Don't treat &rest or &optional
-       as variables at all.
-       (unsafep-variable): Rename arg; doc fix.
-
-       * abbrevlist.el (list-one-abbrev-table): Add autoload.
-
-       * calendar/appt.el (diary-selective-display): Add defvar.
-
-       * sort.el (sort-columns): Use Posix arg syntax for `sort'.
-
-       * isearch.el (search-whitespace-regexp): Fix custom type.
-
-       * help.el (describe-key-briefly): Compute interactive args
-       in same was as before previous change.
-
-       * files.el (enable-local-variables): Doc fix.
-
-2006-02-21  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.el: Cleanup as file is now pre-loaded.
-       (fringe-bitmaps): Initialize unconditionally.
-       (fringe-mode, set-fringe-style): Remove autoload cookies.
-
-2006-02-21  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
-
-       * fringe.el (fringe-bitmaps): Rename `horisontal-bar' to
-       `horizontal-bar'.
-       (fringe-cursor-alist): Use `horizontal-bar'.
-
-2006-02-20  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.el (fringe-bitmaps): Update to new bitmap names.
-       (fringe-indicator-alist, fringe-cursor-alist): Initialize.
-
-       * loadup.el: Load "fringe" on window systems.
-
-2006-02-20  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-buttons): Use shadow face for all
-       out of scope components.
-
-       * progmodes/gdb-ui.el (gdb-speedbar-auto-raise): Don't enable by
-       default.
-
-2006-02-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (customize-mark-to-save, customize-mark-as-set):
-       Load the symbol first.
-
-2006-02-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buff-menu.el (list-buffers-noselect): Turn also "\n" into a
-       strech spec so it doesn't display as "^J" on the header line
-       when `Buffer-menu-use-header-line' is t.
-
-2006-02-20  Nick Roberts  <nickrob@snap.net.nz>
-
-       * speedbar.el (speedbar-make-button): Keep text properties
-       of string arguments if desired.
-
-       * progmodes/gud.el (gud-speedbar-buttons): Fontify watch
-       expessions.
-
-       * progmodes/gdb-ui.el (gdb-speedbar-expand-node): Force update
-       of speedbar.
-
-2006-02-19  Ryan Yeske  <rcyeske@gmail.com>
-
-       * ffap.el (ffap-read-file-or-url): Bind `completion-ignore-case'
-       to value of `read-file-name-completion-ignore-case'.
-
-2006-02-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (customize-mark-as-set): Push to `user' theme.
-
-       * cus-edit.el (custom-save-variables): Allow unthemed values.
-       (customize-set-variable): Push setting to `user' theme.
-
-2006-02-19  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el: Don't require font-lock as it's now
-       automatically loaded.
-       (gud-speedbar-buttons): Replace gdb-var-changed with
-       gdb-force-update.
-
-       * progmodes/gdb-ui.el (gdb-force-update): Rename from
-       gdb-var-changed.
-       (gdb-post-prompt): Use it.
-       (gdb-var-create-handler, gdb-var-evaluate-expression-handler)
-       (gdb-var-update-handler, gdb-var-delete)
-       (gdb-speedbar-expand-node, gdb-var-list-children-handler-1)
-       (gdb-var-update-handler-1): Don't set gdb-var-changed, just set
-       gdb-force-update in gdb-post-prompt.
-       (gdb-reset): Clear watch expressions from speedbar when quitting.
-
-2006-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-cmd.el (viper-insert-state-post-command-sentinel)
-       (viper-change-state-to-vi, viper-change-state-to-emacs):
-       Make aware of cursor coloring in the Emacs state.
-       (viper-special-read-and-insert-char): Use read-char-exclusive.
-       (viper-minibuffer-trim-tail): Workaround for fields in minibuffer.
-
-       * viper-init.el (viper-emacs-state-cursor-color): New variable.
-
-       * viper-util.el (viper-save-cursor-color)
-       (viper-get-saved-cursor-color-in-replace-mode)
-       (viper-get-saved-cursor-color-in-insert-mode)
-       (viper-restore-cursor-color): Make aware of the cursor color in Emacs
-       state.
-       (viper-get-saved-cursor-color-in-emacs-mode): New function.
-
-       * ediff-diff.el (ediff-ignore-case, ediff-ignore-case-option)
-       (ediff-ignore-case-option3, ediff-actual-diff-options)
-       (ediff-actual-diff3-options): New variables to control case sensitivity.
-       (ediff-make-diff2-buffer, ediff-setup-fine-diff-regions)
-       (ediff-setup-diff-regions3): Make aware of case-sensitivity.
-       (ediff-toggle-ignore-case): New function.
-       (ediff-extract-diffs, ediff-extract-diffs3): Preserve point in buffers.
-
-       * ediff-help.el (ediff-long-help-message-narrow2)
-       (ediff-long-help-message-compare2, ediff-long-help-message-compare3)
-       (ediff-long-help-message-word-mode): Add ignore-case command.
-       (ediff-help-for-quick-help): Add ignore-case command.
-
-       * ediff-merg.el: Move provide to the end.
-
-       * ediff-ptch.el: Move provide to the end.
-
-       * ediff-wind.el: Move provide to the end.
-
-       * ediff-mult.el: Move provide to the end.
-       (ediff-set-meta-overlay): Enable follow-link.
-
-       * ediff.el: Move provide to the end.
-       Break recursive load cycle in eval-when-compile.
-       (ediff-patch-buffer): Better heuristics.
-
-       * ediff-util.el: Move provide to the end.
-       Break recursive load cycle in eval-when-compile.
-       (ediff-setup-keymap): Add binding for #c.  Replace some defsubsts with
-       defuns.
-       (ediff-submit-report): Pass the values of ediff-diff3-program,
-       ediff-diff3-options.
-
-2006-02-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help-fns.el (help-do-arg-highlight): Recognize also ARG- followed by
-       the opening bracket of the following bracketing pairs: {}, [], (), <>,
-       `' (for example, in the docstring of `windmove-default-keybindings').
-
-2006-02-19  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-buttons): Update properly for
-       shadow face.  Don't provide binding to edit variable when it is
-       out of scope.
-
-       * progmodes/gdb-ui.el (gdb-var-evaluate-expression-handler)
-       (gdb-var-update-handler): Detect out of scope variables with pre
-       GDB 6.4 too.
-       (gdb-post-prompt): Revert change from 2006-02-17 (force update).
-       Reset status of variable objects to nil in update handlers.
-       (gdb-var-update-handler-1): Detect when a variable object comes
-       in scope.  setcar on var changes gdb-var-list directly.
-
-2006-02-17  Juri Linkov  <juri@jurta.org>
-
-       * ffap.el (ffap) <defface>: Add explicit face declaration.
-       (ffap-highlight): Use face `ffap' directly instead of checking
-       for its existence.
-
-       * icomplete.el (icomplete-get-keys): Use `t' for the second arg
-       `visible-ok' of `other-buffer' to find the right original buffer.
-
-       * info.el (Info-search): Skip `Local Variables' node.
-
-2006-02-17  Juri Linkov  <juri@jurta.org>
-
-       * info.el (Info-find-file): Check for symbols `apropos', `history',
-       `toc' in the input filename, and return these symbols as is.
-       (Info-find-node-2): Set Info-current-file to symbols `apropos',
-       `history', `toc' instead of strings.
-       (Info-set-mode-line): For non-string Info-current-file use the
-       symbol's name inside **.
-       (Info-isearch-push-state): Add quote before Info-current-file and
-       Info-current-node.
-       (Info-isearch-pop-state): Use `equal' instead of `string='.
-       (Info-extract-pointer, Info-following-node-name): Use
-       `match-string-no-properties' instead of `match-string'.
-       (Info-up): Check `old-file' for `stringp'.
-       (Info-history): Use `equal' instead of `string-equal'.
-       Check `file' for `stringp'.
-       (Info-history): Use symbol `history' instead of string as first arg
-       of `Info-find-node'.
-       (Info-toc): Check `Info-current-file' for `stringp'.  Use symbol
-       `toc' instead of string.
-       (Info-extract-menu-node-name): Use `buffer-substring-no-properties'
-       instead of `buffer-substring', and `match-string-no-properties'
-       instead of `match-string'.
-       (Info-index-nodes): Check for symbols `apropos', `history', `toc'
-       instead of strings.
-       (info-apropos): Use `Info-find-node' instead of `Info-goto-node'.
-       Use symbol `apropos' instead of string.
-       (Info-copy-current-node-name): Check `Info-current-file' for
-       `stringp' and construct a command with `Info-find-node' from it.
-       (Info-fontify-node): Use `match-string-no-properties' instead of
-       `match-string' and check file names for `stringp'.
-       (Info-desktop-buffer-misc-data): Check for symbols `apropos',
-       `history', `toc' instead of strings.
-
-2006-02-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el: Rearrange functions and variables in the file local
-       variables section.
-
-2006-02-17  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * files.el: Add truncate-lines, ispell-check-comments and
-       ispell-local-dictionary as safe local variables.
-
-2006-02-18  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-buttons): Use shadow face for
-       out of scope variables.
-       (gud-speedbar-buttons): Use unless.
-
-       * progmodes/gdb-ui.el (gdb-var-list): Update doc string.
-       (gdb-init-1, gdb-var-changed): Set gdb-var-changed to t initially.
-       (gdb-show-changed-values): Also use for out of scope variables.
-       (gdb-var-update-handler-1): Note if variable goes out of scope.
-
-2006-02-17  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-connect): Make all arguments optional, and
-       default to global variable values for unsupplied args.
-       (rcirc-get-buffer-create): Fix bug with setting the target.
-       (rcirc-any-buffer): Rename from rcirc-get-any-buffer, and include
-       test for rcirc-always-use-server-buffer-flag here.
-       (rcirc-response-formats): Add %N, which is a facified nick.  %n
-       uses the default face.  Change the ACTION format string.  If the
-       "nick" is the server, don't print anything for that field.
-       Comment fixes.
-       (rcirc-target-buffer): Don't test
-       rcirc-always-use-server-buffer-flag here.
-       (rcirc-print): Squeeze extra spaces out of the text before message.
-       (rcirc-put-nick-channel): Strip potential "@" char from nick
-       before adding them to nick table.
-       (rcirc-url-regexp): Improve to match address like "foo.com".
-
-2006-02-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * allout.el (allout-hidden-p): Move this defsubst before
-       allout-overlay-interior-modification-handler, where it is first
-       used.
-
-2006-02-17  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el: Use allout invisible-text overlays instead of
-       selective display for concealed text.  Also, lots of general
-       cleanup, and improved compatibility code.
-
-       (allout-version): Incremented, corrected, revised, and refined
-       module commentary.
-
-       (provide 'allout): Moved to the bottom, added a require of overlay.
-
-       (allout-encrypt-unencrypted-on-saves): Defaults to t instead of
-       `except-current'.
-       (allout-write-file-hook-handler): Minimize delay.
-       (count-trailing-whitespace-region): New function so
-       auto-encryption of current topic can resituate cursor exactly.
-       PGP/GPG encryption trims trailing whitespace from lines, which
-       must be accounted for across encryption then decryption.
-
-       (allout-command-prefix): Now defaults to "\C-c<space>" rather than
-       just plain "\C-c", to avoid intruding on user's keybinding space.
-
-       (allout-toggle-current-subtree-encryption): Pass along fetch-pass
-       parameter, so user request to provide a new password is done.
-
-       (allout-outside-normal-auto-fill-function, allout-auto-fill):
-       Refined mechanism for auto-filling behavior while in allout mode.
-
-       (allout-mode): Explicitly specify the mode map in the docstring.
-       Clarify provision for various write-file hook var names.
-       Adjusted for invisible-text overlays instead of selective-display.
-
-       (allout-depth): Really return 0 if not within any topic.  This
-       rectifies `allout-beginning-of-level' and sequence numbering
-       errors that occur when cutting and pasting numbered topics.
-       Changed from a in-line subst to a regular function, as well.
-
-       (allout-pre-next-prefix): Renamed from allout-pre-next-preface.
-
-       (allout-end-of-subtree, allout-end-of-subtree)
-       (allout-end-of-entry, allout-end-of-current-heading)
-       (allout-next-visible-heading, allout-open-topic, allout-show-entry)
-       (allout-show-children, allout-show-to-offshoot)
-       (allout-hide-current-entry, allout-show-current-entry): Rectified
-       handling of trailing blank lines between items.
-
-       (allout-line-boundary-regexp, set-allout-regexp, allout-depth)
-       (allout-current-depth, allout-unprotected, allout-hidden-p)
-       (allout-on-current-heading-p, allout-listify-exposed)
-       (allout-chart-subtree, allout-goto-prefix)
-       (allout-back-to-current-heading, allout-get-body-text)
-       (allout-snug-back, allout-flag-current-subtree, allout-show-all)
-       (allout-hide-region-body, allout-toggle-subtree-encryption)
-       (allout-encrypt-string, allout-encrypted-key-info)
-       (allout-next-topic-pending-encryption, allout-encrypt-decrypted)
-       (allout-file-vars-section-data): Adjusted for use with
-       invisible-text overlays instead of selective-display.
-
-       (allout-kill-line, allout-kill-topic, allout-yank-processing):
-       Reworked for use with invisible text overlays.
-
-       (allout-current-topic-collapsed-p): New function.
-
-       (allout-hide-current-subtree): Use allout-current-topic-collapsed-p
-       to know when to close the containing topic.
-
-       (allout-pre-command-business, allout-post-command-business):
-       Simplify undo-batching and dynamic isearch exposure.
-
-       (allout-set-overlay-category): New for invisible-text overlays.
-       Sets properties of allout-overlay-category, used by
-       allout-flag-region to set invisible-text overlay properties.
-       (allout-get-invisibility-overlay): Get the first qualifying
-       invisibility overlay, so we can find the extent of it.
-       (allout-back-to-visible-text): Get to just before the beginnining
-       of the current invisibility overlay, if any.
-
-       (allout-overlay-insert-in-front-handler)
-       (allout-overlay-interior-modification-handler)
-       (allout-before-change-handler, allout-isearch-end-handler): New
-       functions to handle extraordinary actions affecting concealed
-       text.
-
-       (allout-flag-region): Use overlays instead of selective-display
-       for invisible text - by inheritence from the properties of
-       allout-overlay-category in mainline Emacs, and applied
-       property-by-property in XEmacs, some recent versions of which
-       don't inherit the properties from the category.  Provisions to
-       respond to concealed-text edits simplified drastically.
-
-       (allout-isearch-rectification, allout-isearch-was-font-lock)
-       (allout-isearch-expose, allout-enwrap-isearch)
-       (allout-isearch-abort, allout-pre-was-isearching)
-       (allout-isearch-prior-pos, allout-isearch-did-quit)
-       (allout-isearch-dynamic-expose)
-       (allout-hide-current-entry-completely): Functions deleted.
-
-       (allout-undo-aggregation): Explicit undo aggregation no longer
-       necessary due to transition away from selective-display.
-
-       (set-allout-regexp, allout-up-current-level)
-       (allout-next-visible-heading, allout-forward-current-level)
-       (allout-open-topic, allout-reindent-body, allout-rebullet-topic)
-       (allout-kill-line, allout-yank-processing, allout-show-children)
-       (allout-expose-topic, allout-old-expose-topic)
-       (allout-listify-exposed, allout-insert-latex-header)
-       (allout-toggle-subtree-encryption, allout-encrypt-string)
-       (remove-from-invisibility-spec, allout-hide-current-subtree):
-       Ditched unused variables.
-
-2006-02-17  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/ispell.el (ispell-change-dictionary): Call
-       ispell-buffer-local-dict instead of
-       ispell-accept-buffer-local-defs.
-       (ispell-local-dictionary-alist): Accept as valid any coding-system
-       supported by Emacs.
-       (ispell-dictionary-alist-3): Esperanto dictionary's coding system
-       changed to iso-8859-3.
-
-2006-02-17  Nick Roberts  <nickrob@snap.net.nz>
-
-       * speedbar.el (speedbar-frame-width): Make an inline function
-       instead of a macro.  Use frame-width.
-       (speedbar-try-completion, speedbar-update-contents)
-       (speedbar-timer-fn): Use consp.
-       (speedbar-update-localized-contents): Try to preserve point.
-
-       * progmodes/gdb-ui.el (gdba, gdb-var-list): Improve doc strings.
-       (menu): Re-order menu items.
-       (gdb-var-update-regexp, gdb-var-update-regexp-1): Match "in_scope"
-       field.
-       (gdb-var-update-handler-1): Use it for GDB 6.4+.
-       (gdb-post-prompt): Speed things by not forcing update.
-
-2006-02-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * wid-edit.el (widget-button-click): For mouse-1, cancel button
-       press and perform default action if we get a mouse movement event.
-
-2006-02-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * calendar/icalendar.el (icalendar--get-event-property)
-       (icalendar--get-event-property-attributes): Fix typos in
-       docstrings.
-
-       * progmodes/flymake.el (flymake-fix-file-name): Fix typo in
-       docstring.
-
-2006-02-15  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bs.el (bs-mode): Use `buffer-disable-undo'.
-       (bs--get-file-name): Simplify.
-       (bs-show-in-buffer): Mark the buffer as not modified.
-
-2006-02-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * wid-edit.el (widget-keymap): Bind down-mouse-1 to
-       widget-button-click.
-
-       * cus-edit.el (custom-mode-map): Remove mouse-1 binding.
-       (custom-mode): Update docstring.
-
-       * cus-theme.el (custom-new-theme-mode-map): Remove mouse-1
-       binding.
-
-       * files.el (hack-local-variables-confirm): Allow scrolling if the
-       file variable list is too long.  Kill temp buffer after use.
-
-2006-02-15  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gdb): Improve doc string.
-       (gdb-script-font-lock-keywords): Expand allowed character set.
-
-       * progmodes/gdb-ui.el (gdb-use-separate-io-buffer)
-       (gdb-display-separate-io-buffer, gdb-frame-separate-io-buffer)
-       (gdb-separate-io-interrupt, gdb-separate-io-quit)
-       (gdb-separate-io-stop, gdb-separate-io-eof):
-       Rename from gdb-inferior-* to gdb-separate-*.
-       (gdb-set-gud-minor-mode-existing-buffers-1): Improve doc string.
-
-2006-02-14  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-arith.el (math-check-known-scalarp): Make sure
-       expression is a symbol before checking that it is bound.
-
-       * calc/calcalg2.el (math-integrate-by-parts): Do a more careful
-       test to see if equation can be solved.
-
-2006-02-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * wid-edit.el (widget-button-click): Use :pressed-face property
-       for overlay face, if it exists.
-
-       * cus-edit.el (custom-manual, custom-add-see-also)
-       (custom-add-parent-links, custom-group-link): Add :pressed-face
-       property to links.
-
-       * files.el (hack-local-variables): Remove ignored variables before
-       checking if any variables need setting.
-
-2006-02-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * cus-start.el (all): Add x-gtk-whole-detached-tool-bar.
-
-2006-02-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help.el (where-is): Fix message for remapped commands.
-
-       * mwheel.el (mouse-wheel-click-event, mouse-wheel-mode):
-       Fix typos in docstrings.
-
-2006-02-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * files.el (safe-local-variable-values): New option.
-       (hack-local-variables-prop-line): Return a list of variable-value
-       pairs if MODE-ONLY is non-nil.
-       (hack-local-variables): Construct list of variable-value pairs,
-       and apply or reject them in one go.  Ask for confirmation if
-       variables are not known safe.
-       (hack-local-variables-confirm): Complete rewrite.  Support
-       `safe-local-variable-values'.
-       (enable-local-variables): Update docstring to reflect new
-       behavior.
-       (ignored-local-variables): Ignore ignored-local-variables and
-       safe-local-variable-values.
-       (safe-local-variable-p): New function.
-       (risky-local-variable-p): `safe-local-variable' property check
-       moved to safe-local-variable-p.
-       (hack-one-local-variable): Checks moved to hack-local-variables.
-
-       (byte-compile-dynamic, c-basic-offset, c-file-style)
-       (c-indent-level, comment-column, fill-column, fill-prefix)
-       (indent-tabs-mode, kept-new-versions, no-byte-compile)
-       (no-update-autoloads, outline-regexp, page-delimiter)
-       (paragraph-start, paragraph-separate, sentence-end)
-       (sentence-end-double-space tab-width, version-control):
-       Add `safe-local-variable' property.
-
-       * find-lisp.el: Delete nonexistent `autocompile' file variable.
-
-       * icomplete.el, play/landmark.el: Change nonexistent
-       `outline-layout' file variable to `allout-layout'.
-
-2006-02-14  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gud-watch, gdb-invalidate-registers-1)
-       (gdb-get-changed-registers): Test value of gud-minor-mode relative
-       to gud-comint-buffer.
-       (gdb-speedbar-expand-node, gdb-locals-mode): Use functions in
-       gdb-ui.el for gdb-mi.el.
-       (gdb-post-prompt, gdb-get-changed-registers): Move test for
-       registers buffer to gdb-get-changed-registers.
-       (gdb-breakpoint-regexp): New regexp.  Allow toggling and
-       deletion of catchpoints (throw and catch).
-       (gdb-toggle-breakpoint, gdb-delete-breakpoint)
-       (gdb-goto-breakpoint): Use it for both gdb-ui and gdb-mi.
-       (gdb-find-file-hook, gdb-set-gud-minor-mode-existing-buffers-1)
-       (gdb-var-list-children-1, gdb-info-breakpoints-custom)
-       (gdb-var-update-1, gdb-invalidate-locals-1): Use also for gdb-mi.
-
-2006-02-13  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-arith.el (math-check-known-matrixp): Make sure
-       expression is a symbol before checking that it is bound.
-
-2006-02-13  Richard M. Stallman  <rms@gnu.org>
-
-       * mouse.el (mouse-drag-mode-line-1): Use mouse-drag-move-window-bottom
-       for the minibuffer too, but not if resize-mini-windows will interfere.
-
-       * help.el (describe-key-briefly, describe-key): Do all arg-reading
-       inside `interactive' spec.
-       (describe-key-briefly-internal, describe-key-internal):
-       Functions merged back into their callers.
-
-2006-02-13  Martin Rudalics  <rudalics@gmx.at>
-
-       * info.el (info-xref-visited): Inherit from info-xref too.
-       (Info-set-mode-line): Replace occurrences of `%' by `%%'
-       when propertizing Info-current-file and Info-current-node.
-
-2006-02-13  Juri Linkov  <juri@jurta.org>
-
-       * tumme.el (tumme-thumbnail-storage): Fix docstring.
-       (tumme-thumb-name): Fix per-directory format.
-
-2006-02-13  Juanma Barranquero  <lekktu@gmail.com>
-
-       * subr.el (substitute-key-definition): Doc fix (hide internal arg).
-
-2006-02-12  Miles Bader  <miles@gnu.org>
-
-       * net/rcirc.el (rcirc-format-response-string): Fix small bugs.
-
-2006-02-13  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el: Remove history section.  If someone needs the it, it
-       can always be found in CVS.
-
-2006-02-12  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-thumbnail-storage): Update docstring.  Add info
-       about the Thumbnail Managing Standard option.
-
-2006-02-12  Richard M. Stallman  <rms@gnu.org>
-
-       * subr.el (substitute-key-definition): Doc fix.
-
-       * simple.el (blink-matching-paren-dont-ignore-comments): Doc fix.
-
-       * files.el (magic-mode-alist): Don't use `\\s ' in regexps.
-
-       * info.el (Info-mode): Doc fix.
-
-       * progmodes/ebrowse.el (ebrowse-global-prefix-key): Change to C-c C-m.
-
-2006-02-12  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-remote-path): Add "/usr/xpg4/bin" on top,
-       because on Solaris a POSIX compatible "id" is needed.  Reported by
-       Magnus Henoch <mange@freemail.hu>.
-
-2006-02-12  Juri Linkov  <juri@jurta.org>
-
-       * tumme.el: Remove todo item about Thumbnail Managing Standard.
-       (tumme) <defgroup>: Change :group to `multimedia'.
-       (tumme-thumbnail-storage): Add choice `standard' for Thumbnail
-       Managing Standard.
-       (tumme-cmd-create-thumbnail-options): Use %w and %h instead of %s.
-       Fix dostring.
-       (tumme-cmd-create-temp-image-options): Use %w and %h instead of %x
-       and %y.  Fix docstring.
-       (tumme-cmd-pngnq-program, tumme-cmd-pngcrush-program)
-       (tumme-cmd-create-standard-thumbnail-command): New user options.
-       (tumme-thumb-size): Set default to 128 if tumme-thumbnail-storage
-       is `standard'.  Fix docstring.
-       (tumme-thumb-width, tumme-thumb-height): New user options.
-       (tumme-external-viewer): Try to find various viewers.
-       (tumme-get-thumbnail-image): Use `create-image' instead of
-       constructing the `image' structure.
-       (tumme-insert-thumbnail): Use `png' if tumme-thumbnail-storage is
-       `standard'.
-       (tumme-thumb-name): Add file name generation for standard storage.
-       Simplify code for other storages.
-       (tumme-thumb-name): Use width %w and height %h instead of size %s.
-       Add modification time %m and thumbnail-nq8 %q.
-       Use `tumme-cmd-create-standard-thumbnail-command' if
-       tumme-thumbnail-storage is `standard'.
-       (tumme-dired-insert-marked-thumbs): New autoload command.
-       (tumme-dired-after-readin-hook): New function.
-       (tumme-line-up-dynamic): Use `tumme-thumb-width' instead of
-       `tumme-thumb-size'.
-       (tumme-display-image): Replace size-x %x and size-y %y with
-       width %w and height %h.
-
-       * dired.el (dired-mode-map): Bind `\C-t\C-t' to
-       `tumme-dired-insert-marked-thumbs'.
-
-2006-02-12  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-write-tag): Fix small bug (file name did not
-       include path).
-       (tumme-mark-tagged-files): Fix bug in regexp used to find rows
-       matching tag.
-
-2006-02-12  Miles Bader  <miles@gnu.org>
-
-       * net/rcirc.el (rcirc-nick-abbrevs, rcirc-response-formats):
-       New variables.
-       (rcirc-abbrev-nick): New function.
-       (rcirc-format-response-string): Rewrite to use the formats in
-       `rcirc-response-formats' and expand escape sequences therein.
-       A text-property `rcirc-text' is added over the actual response
-       text to make easy to find inside the returned string.
-       (rcirc-print): When filling, just look for the `rcirc-text'
-       text-property to find the appropriate fill prefix, instead of
-       using hardwired patterns.
-
-2006-02-11  Mathias Dahl  <brakjoller@hotmail.com>
-
-       * tumme.el: Enhance some docstrings.  Add todo item about Thumbnail
-       Managing Standard.
-
-2006-02-11  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-buffer-internal): Set mark for ido-insert-buffer.
-       Don't use insert-buffer; do insert-buffer-substring directly.
-       (ido-file-internal): Set mark for ido-insert-file.  Use insert-file-1.
-
-2006-02-11  Martin Rudalics  <rudalics@gmx.at>
-
-       * files.el (revert-buffer, recover-file): Replace buffer-read-only
-       with inhibit-read-only.  Suggested by Stefan Monnier.
-       (revert-buffer): Let insert-file-contents discard
-       buffer-undo-list.  Simplify code.
-       (find-file, find-file-existing, revert-buffer): Doc-string fixes.
-
-2006-02-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * menu-bar.el (menu-bar-select-yank): Add a doc string.
-
-       * help.el (describe-key-briefly): Now a wrapper for
-       describe-key-briefly-internal.  Bind enable-disabled-menus-and-buttons
-       to t.  Populate yank-menu if empty.
-       (describe-key-briefly-internal): Renamed from describe-key-briefly.
-       (describe-key): Now a wrapper for describe-key-internal.  Bind
-       enable-disabled-menus-and-buttons to t.  Populate yank-menu if empty.
-       (describe-key-internal): Renamed from describe-key.
-
-2006-02-11  Milan Zamazal  <pdm@zamazal.org>
-
-       * progmodes/glasses.el (glasses-separator): Doc fix.
-       (glasses-original-separator): New defcustom.
-       (glasses-make-readable, glasses-convert-to-unreadable): Use it.
-
-2006-02-11  Martin Rudalics  <rudalics@gmx.at>
-
-       * mwheel.el (mouse-wheel-up-event): Doc fix.
-
-2006-02-11  Mathias Dahl  <brakjoller@hotmail.com>
-
-       * tumme.el (tumme-dir): Change default value to "~/.emacs.d/tumme/".
-       (tumme-dir): New function.  Copied from thumbs.el.
-
-2006-02-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * desktop.el (desktop-outvar): Fix typo.
-       (desktop-save-buffer-p): Doc fix.
-
-       * subr.el (substitute-key-definition): Fix typo.
-
-2006-02-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * frame.el (select-frame-set-input-focus): Call x-focus-frame also
-       when window-system is mac.
-
-       * term/mac-win.el (fontset-standard): Rename from "fontset-mac".
-
-2006-02-10  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (substitute-key-definition-key): Pass t for NOERROR to
-       indirect-function instead of using condition-case.
-
-2006-02-10  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el (tumme-copy-with-exif-file-name): Try to make docstring
-       less `colloquial'...
-
-2006-02-09  Mathias Dahl  <mathias.dahl@gmail.com>
-
-       * tumme.el: Add a couple of todo items.
-
-2006-02-09  Lars Hansen  <larsh@soem.dk>
-
-       * hilit-chg.el: Add highlight-changes-mode to desktop-locals-to-save.
-       (highlight-changes-mode): Don't change desktop-locals-to-save.
-
-2006-02-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-mode.el (image-toggle-display): Clear image cache if using
-       filename.
-
-2006-02-09  Masatake YAMATO  <jet@gyve.org>
-
-       * dired-x.el (dired-guess-shell-alist-default): Add .man as
-       a `dired-man' target.
-
-       * progmodes/autoconf.el (autoconf-font-lock-keywords): Check start
-       boundary of symbols.
-
-2006-02-08  Peter Doornbosch  <peter.doornbosch@luminis.nl>  (tiny change)
-
-       * vc-svn.el (vc-svn-print-log): Show recent commits as well.
-
-2006-02-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * hilit-chg.el (hilit-chg-update-all-buffers): Use `mapc' instead of
-       `mapcar'; return nil.
-
-2006-02-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mouse.el (mouse-drag-track): Don't change window if we rebind to
-       some other event.
-
-2006-02-08  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-startup-channels-alist):
-       Add irc.freenode.net and #emacs as defaults.
-       (rcirc-ignore-all-activity-flag): Remove variable.
-       (rcirc-authinfo): New variable.
-       (rcirc-authinfo-filename): Remove variable.
-       (rcirc-always-use-server-buffer-flag): New flag.
-       (rcirc): M-x rcirc will automatically connect without prompting.
-       C-u M-x rcirc will prompt.  Use rcirc-connect to create a
-       connection in lisp.
-       (rcirc-process-server-response-1): Remove everything but the nick
-       portion of the sender so it doesn't need to be done everywhere
-       else.  Update related code.
-       (global-map): Remove global keybindings.
-       (rcirc-get-buffer-create): Make sure rcirc-topic is set.
-       (rcirc-send-input): Split into several functions.
-       (rcirc-process-input-line, rcirc-process-message)
-       (rcirc-process-command): New functions.
-       (rcirc-target-buffer): New function to determine where to route
-       messages.
-       (rcirc-user-nick): Save match data.
-       (rcirc-toggle-ignore-buffer-activity)
-       (rcirc-update-activity-string): Remove global ignore functionality,
-       which can be done now by toggling rcirc-track-minor-mode.
-       (rcirc-track-minor-mode-map): New keymap.
-       (rcirc-track-minor-mode): New minor-mode.
-       (ignore): Make the ignore output nicer.  Always print it when
-       adding or removing nicks.
-       (rcirc-url-regexp): Improve.
-       (rcirc-mangle-text): Remove properties before using text in the
-       modeline.
-       (rcirc-authenticate): Authentication data comes from
-       rcirc-authinfo, not the file pointed to by rcirc-authinfo-file.
-       (rcirc-server-prefix): Inherit from rcirc-server.
-
-2006-02-08  Mathias Megyei  <Mathias.Megyei@micronas.com>  (tiny change)
-
-       * Makefile.in (compile): Append "|| true" to the end of the `find'
-       command, like compile-always does.
-
-2006-02-08  Sam Steingold  <sds@gnu.org>
-
-       * net/tramp.el (tramp-maybe-open-connection): Do not wait for
-       output from a dead connection.
-
-2006-02-07  Mathias Dahl  <brakjoller@hotmail.com>
-
-       * dired.el (dired-mode-map): Add more bindings for tumme.
-
-2006-02-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * wdired.el (wdired-mode-map): Use remap.
-       (wdired-get-filename): Massage.
-       (wdired-perm-mode-map): Don't copy bindings from wdired-mode-map.
-       (wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit): Use the
-       `keymap' property rather than `local-map'.
-
-2006-02-07  Mathias Dahl  <brakjoller@hotmail.com>
-
-       * tumme.el (tumme-get-thumbnail-image): New utility function.
-       Suggested by from Chong Yidong.
-       (tumme-dired-with-window-configuration): Rename from
-       `tumme-dired'.  Add code to save window configuration.
-       (tumme-restore-window-configuration): New command to restore the
-       window configuration that `tumme-dired-with-window-configuration'
-       saves before it changes the window configuration.
-       (tumme-show-all-from-dir): New command to display thumbnails for
-       all files in a directory entered by the user, like M-x thumbs.
-       (tumme-display-thumbs): Call `pop-to-buffer' after all thumbnails
-       have been created.
-       (tumme-display-thumbnail-original-image): Call `display-buffer'.
-       (obsolete-tumme-display-thumbnail-original-image-and-buffer):
-       Remove obsolete test function.
-
-2006-02-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * vc.el (small-temporary-file-directory): Remove defvar; there's
-       a defcustom for it in files.el.
-
-       * tumme.el (tumme-get-thumbnail-image): Add missing arg to `error'.
-       Fix typo in message.
-       (tumme-gallery-generate): Fix typo in `error' message.
-       (tumme-display-window-height-correction)
-       (tumme-display-window-width-correction, tumme-line-up-dynamic)
-       (tumme-line-up-interactive): Dox fixes.
-       (tumme-cmd-rotate-original-options, tumme-display-properties-format)
-       (tumme-restore-window-configuration, tumme-format-properties-string)
-       (tumme-create-thumbs, tumme-display-previous-thumbnail-original):
-       Fix typos in docstrings.
-
-2006-02-07  Chris Moore  <christopher.ian.moore@gmail.com>
-
-       * wdired.el (wdired-get-filename): Fix bug: Don't re-normalize OLD.
-
-2006-02-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-tooltip-mode): Remove autoload cookie.
-       User should use hook if desired.
-
-       * progmodes/gdb-ui.el (gdb-post-prompt): Regenerate breakpoints
-       buffer if necessary.
-       (gdb-delete-frame-or-window): New function.
-       (gdb-breakpoints-mode-map): Bind "q" to it.
-
-2006-02-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/nroff-mode.el: Clean up name space.
-       (nroff-mode-syntax-table): Remove spurious `1' in the syntax of \n.
-       (nroff-mode): Obey the global setting of nroff-electric-mode.
-       (nroff-electric-mode): Use define-minor-mode and derived-mode-p.
-
-       * calendar/calendar.el (calendar-increment-month): Typo in last change.
-
-2006-02-06  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * vc-svn.el (vc-svn-previous-version, vc-svn-next-version): New funcs.
-
-2006-02-06  Lars Hansen  <larsh@soem.dk>
-
-       * generic-x.el (etc-fstab-generic-mode): Add file system types
-       cifs and usbdevfs.  Allow special chars in file names.
-
-2006-02-05  Jay Belanger  <belanger@truman.edu>
-
-       Update copyright notices of the files in lisp/calc.
-
-2006-02-05  Romain Francoise  <romain@orebokech.com>
-
-       Update copyright notices of all files in the lisp/play directory.
-
-2006-02-04  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * ldefs-boot.el: Regenerate.
-
-       * emacs-lisp/find-func.el (find-definition-noselect): Minor doc fix.
-
-2006-02-05  Kim F. Storm  <storm@cua.dk>
-
-       * files.el (magic-mode-regexp-match-limit): New defvar.
-       (set-auto-mode): Use it to limit magic-mode-alist matching.
-
-2006-02-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * info.el (Info-index, Info-mode): Improve the description of the
-       `i' command.
-
-       * ldefs-boot.el: Regenerate.
-
-2006-02-03  Werner Lemberg  <wl@gnu.org>
-
-       * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
-       greedy to find the closing bracket in \*[...] and similar
-       expressions.  This is a first rough fix -- many additional
-       refinements are necessary to make nroff mode really usable with groff.
-
-2006-02-03  Jens Petersen  <petersen@redhat.com>  (tiny change)
-
-       * international/mule-cmds.el (set-locale-environment):
-       Add "/usr/share/X11/locale/locale.alias" to search list for xorg-x11
-       libX11.
-
-2006-02-03  Joe Wells  <jbw@macs.hw.ac.uk>  (tiny change)
-
-       * arc-mode.el (archive-maybe-copy): Fix the way directories in the
-       archive are created in archive-tmpdir.
-
-2006-02-02  John Paul Wallington  <jpw@pobox.com>
-
-       * ibuffer.el (ibuffer-compressed-file-name-regexp): New defcustom.
-       (ibuffer-fontification-alist): Use it.
-       (ibuffer-mode-map): Bind `ibuffer-mark-compressed-file-buffers'
-       to "* z" and the Ibuffer Mark menu.
-
-       * ibuf-ext.el (ibuffer-mark-compressed-file-buffers): New command.
-
-2006-02-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/table.el (*table--cell-describe-mode)
-       (*table--cell-describe-bindings): Undo last change since
-       print-help-return-message is not obsoleted by anything at all.
-
-2006-02-02  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emulation/cua-base.el (cua-mode): Doc fix.
-
-2006-02-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * dframe.el (dframe-handle-make-frame-visible)
-       (dframe-handle-iconify-frame, dframe-get-focus)
-       (dframe-select-attached-frame, dframe-power-click)
-       (dframe-frame-mode): Fix typos in docstrings.
-
-       * ezimage.el (ezimage-mail, ezimage-object-out-of-date)
-       (ezimage-insert-image-button-maybe, ezimage-insert-over-text):
-       Fix typos in docstrings.
-
-       * hi-lock.el (hi-lock-mode, hi-lock-line-face-buffer)
-       (hi-lock-face-buffer, hi-lock-font-lock-hook)
-       (hi-lock-archaic-interface-message-used)
-       (hi-lock-file-patterns-range): Fix typos in docstrings.
-
-       * savehist.el (savehist-loaded, savehist-load, savehist-install)
-       (savehist-autosave, savehist-trim-history): Fix typos in docstrings.
-
-       * mail/mailclient.el (mailclient-place-body-on-clipboard-flag):
-       Fix typo in docstring.
-
-       * net/newsticker.el (newsticker--decode-iso8601-date)
-       (newsticker--set-customvar, newsticker--buffer-insert-item)
-       (newsticker--do-run-auto-mark-filter)
-       (newsticker--parse-generic-feed): Doc fixes.
-       (newsticker--retrieval-timer-list, newsticker-url-list)
-       (newsticker-hide-immortal-items-in-echo-area)
-       (newsticker-hide-obsolete-items-in-echo-area)
-       (newsticker-new-item-face, newsticker--enclosure)
-       (newsticker-buffer-update, newsticker-w3m-show-inline-images)
-       (newsticker--parse-atom-0.3, newsticker--parse-rss-1.0)
-       (newsticker--parse-generic-feed, newsticker--cache-contains)
-       (newsticker--stat-num-items, newsticker-download-enclosures):
-       Fix typos in docstrings.
-
-       * net/rcirc.el (rcirc-debug): Doc fix.
-       (rcirc-fill-column, rcirc-receive-message-hooks)
-       (rcirc-browse-url-map, rcirc-read-only-flag, rcirc-prompt)
-       (rcirc-mode, rcirc-generate-new-buffer-name)
-       (rcirc-startup-channels, rcirc-ignore-update-automatic)
-       (rcirc-cmd-ignore, rcirc-browse-url, rcirc-url-regexp):
-       Fix typos in docstrings.
-       (rcirc-print): "?\ " -> "?\s".
-       (rcirc-cmd-join): Improve argument/docstring consistency.
-
-2006-02-01  Mark A. Hershberger  <mah@everybody.org>
-
-       * xml.el (xml-parse-region): Move save-excursion and set-buffer up
-       before narrow-to-region.
-
-2006-02-01  Richard M. Stallman  <rms@gnu.org>
-
-       * simple.el (move-beginning-of-line): Scan properly for invis change.
-
-       * replace.el (multi-occur-in-matching-buffers): Fix prev change.
-
-2006-02-01  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-convert-file-attributes): Set file's gid
-       change bit only when id-format is 'integer.  Reported by Matt
-       Hodges <M.P.Hodges@rl.ac.uk>.
-
-2006-02-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * hilit-chg.el (highlight-changes-initial-state)
-       (highlight-changes-global-initial-state): Doc fixes.
-       (highlight-changes-global-modes, global-highlight-changes):
-       Fix typos in docstrings.
-
-2006-02-01  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-mode): Mention that CUA enables
-       transient-mark-mode in doc string.
-
-2006-01-31  Richard M. Stallman  <rms@gnu.org>
-
-       * replace.el (multi-occur): Doc fix.
-       (multi-occur-in-matching-buffers): Rename from
-       multi-occur-by-filename-regexp.  Prefix arg says match
-       buffer names instead of file names.
-
-2006-01-31  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bs.el: Allow non-default values of `bs-header-lines-length'.
-       (bs--running-in-xemacs): Remove (not needed anymore).
-       (bs--set-window-height): Simplify by using `fit-window-to-buffer'
-       instead of `shrink-window', thus avoiding having to compute the
-       height of the window.
-       (bs--up): Wrap around even when there's no header.
-       (bs--down): Use `forward-line' instead of `next-line'.
-
-2006-01-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image-mode.el (image-toggle-display): Use file name if possible,
-       instead of unnecessarily allocating a (possibly huge) lisp string.
-
-2006-01-30  John Paul Wallington  <jpw@pobox.com>
-
-       * subr.el (toplevel): Define `cl-assertion-failed' condition here
-       because the `assert' macro signals it at runtime.
-
-       * emacs-lisp/cl.el (toplevel): Remove definition of
-       `cl-assertion-failed' condition.
-
-2006-01-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * thumbs.el (thumbs-marked-list): Make buffer-local and
-       permanent-local.
-       (thumbs-insert-thumb): Make help-echo non-sticky.
-       (thumbs-file-alist): Use eolp as check for (non)-image.
-
-2006-01-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ediff-mult.el (ediff-meta-buffer-keymap-setup-hook)
-       (ediff-before-session-group-setup-hooks)
-       (ediff-default-filtering-regexp, ediff-meta-mark-equal-files):
-       Fix typos in docstrings.
-
-       * window.el (bw-dir, bw-eqdir, balance-windows)
-       (split-window-keep-point): Fix typos in docstrings.
-
-       * textmodes/org.el (org-allow-space-in-links, org-closed-string)
-       (org-quote-string, org-calendar-to-agenda-key)
-       (org-agenda-sorting-strategy, org-agenda-use-time-grid)
-       (org-show-following-heading, org-tags-column)
-       (org-use-tag-inheritance, org, org-allow-space-in-links)
-       (org-usenet-links-prefer-google, org-file-apps-defaults-gnu)
-       (org-enable-table-editor, org-calc-default-modes)
-       (org-table-allow-automatic-line-recalculation)
-       (org-export-html-style, org-export-with-fixed-width)
-       (org-export-with-sub-superscripts, org-special-keyword)
-       (org-formula, org-time-grid, org-table-may-need-update)
-       (org-mode, org-goto-ret, org-goto-left, org-goto-right)
-       (org-goto-quit, org-get-indentation, org-end-of-item)
-       (org-move-item-down, org-move-item-up)
-       (org-renumber-ordered-list, org-todo, org-log-done, org-occur)
-       (org-remove-occur-highlights, org-read-date, org-goto-calendar)
-       (org-agenda, org-agenda-day-view, org-agenda-previous-date-line)
-       (org-agenda-log-mode, org-agenda-toggle-diary)
-       (org-agenda-toggle-time-grid, org-agenda-cleanup-fancy-diary)
-       (org-agenda-file-to-end, org-agenda-no-heading-message)
-       (org-agenda-get-closed, org-format-agenda-item)
-       (org-cmp-priority, org-cmp-category, org-cmp-time)
-       (org-agenda-change-all-lines, org-agenda-diary-entry)
-       (org-scan-tags, org-after-todo-state-change-hook, org-tags-view)
-       (org-link-search, org-camel-to-words, org-open-file)
-       (org-remember-handler, org-table-convert-region)
-       (org-table-move-row-down, org-table-move-row-up)
-       (org-table-copy-region, org-table-wrap-region)
-       (org-table-toggle-vline-visibility)
-       (org-table-get-vertical-vector, org-table-modify-formulas)
-       (org-table-get-specials, org-recalc-commands)
-       (org-table-rotate-recalc-marks, org-table-eval-formula)
-       (orgtbl-make-binding, org-in-invisibility-spec-p, org-cycle)
-       (org-level-color-stars-only, org-insert-heading):
-       Fix typos in docstrings.
-       (last-arg): Add defvar.
-
-       * makefile.w32-in (WINS): Add erc.
-       (MH_E_SRC): Update (copied from lisp/Makefile.in).
-
-2006-01-29  Bill Wohler  <wohler@newt.com>
-
-       * Makefile.in (MH_E_SRC): Add mh-compat.el, mh-folder.el,
-       mh-letter.el, mh-limit.el, mh-scan.el, mh-show.el, mh-thread.el,
-       mh-tool-bar.el, mh-xface.el.  Remove mh-customize.el, mh-init.el.
-       (mh-autoloads): Don't use comments on otherwise empty lines.
-
-2006-01-29  Edward O'Connor  <ted@oconnor.cx>
-
-       * emulation/viper.el (viper-major-mode-modifier-list):
-       Add insert-state and vi-state entries for erc-mode.
-       (viper-go-away, viper-set-hooks): Add and remove
-       viper-comint-mode-hook from erc-mode-hook as appropriate.
-
-       * emulation/viper.el (viper-insert-state-mode-list): Add erc-mode.
-
-2006-01-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bs.el (bs--format-aux): Implement `middle' alignment as
-       described in the docstring for `bs-attributes-list'.
-       (bs--get-name): Simplify.  Don't pad the buffer name.
-
-2006-01-27  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/ispell.el (ispell-find-aspell-dictionaries): If no
-       English aspell dictionary is installed, use the first entry of
-       ispell-dictionary-alist-1.
-
-2006-01-27  Kevin Rodgers  <ihs_4664@yahoo.com>  (tiny change)
-
-       * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
-       Doc fix.
-
-2006-01-27  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
-       for `process-file', in order to let it work for older Emacsen too.
-
-2006-01-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * international/latexenc.el: Add a suitable `coding:' tag.
-       (latexenc-find-file-coding-system): Undo last change.
-
-2006-01-27  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
-
-       * international/latexenc.el (latexenc-find-file-coding-system):
-       Make sure latexenc-main-file is a regular file and is readable.
-
-2006-01-27  Andre Spiegel  <spiegel@gnu.org>
-
-       * vc-rcs.el (vc-rcs-fetch-master-state, vc-rcs-consult-headers):
-       Pass FILE to vc-user-login-name.
-
-       * vc-sccs.el (vc-sccs-state): Pass FILE to vc-user-login-name.
-
-2006-01-27  Nick Roberts  <nickrob@snap.net.nz>
-
-       * thumbs.el (thumbs-do-thumbs-insertion): Suppress message when
-       there are no more images to display.
-       (thumbs-mark, thumbs-unmark): Revert change so that they move to
-       the next image.
-
-2006-01-26  Richard M. Stallman  <rms@gnu.org>
-
-       * cus-edit.el (custom-mode): Doc: Use advertised-widget-backward.
-
-       * wid-edit.el (advertised-widget-backward): New alias.
-       (widget-keymap): Use advertised-widget-backward for S-TAB.
-
-       * tumme.el: Correct the keywords.
-       (tumme-dir-max-size): Use defvar.
-       (tumme-setup-dired-keybindings, tumme-dired): Add autoload cookie.
-
-       * simple.el (move-beginning-of-line): Take account of fields.
-       (clone-indirect-buffer-other-window): Take args like
-       clone-indirect-buffer, and work like it.
-
-       * help-fns.el (describe-function): Don't pass `nil' as default.
-
-       * files.el (risky-local-variable-p): Follow var aliases.
-
-       * subr.el (lazy-completion-table): Doc fix.
-
-       * mail/rmailsum.el (rmail-make-summary-line-1): Don't set
-       global binding of `line'.
-
-2006-01-25  Andre Spiegel  <spiegel@gnu.org>
-
-       * vc-hooks.el (vc-user-login-name): Rewritten to handle access via
-       Tramp.
-
-       * vc.el (vc-default-dired-state-info): Pass FILE to
-       vc-user-login-name.
-       (vc-default-update-changelog): Don't use vc-user-login-name, we
-       don't need it here.
-
-       * net/tramp-vc.el (vc-user-login-name): Comment out defadvice, it is
-       no longer necessary.
-
-2006-01-25  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule.el (decode-char): Avoid the overhead of
-       calling utf-lookup-subst-table-for-decode if
-       utf-translate-cjk-mode is nil.
-       (encode-char): Avoid the overhead of calling
-       utf-lookup-subst-table-for-encode if utf-translate-cjk-mode is
-       nil.
-
-2006-01-22  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule.el (make-subsidiary-coding-system): Reset
-       `coding-system-define-form' property of subsidiaries to nil.
-       Avoid duplicated entry in coding-system-alist.
-       (make-coding-system): Avoid duplicated entry in
-       coding-system-alist.
-       (define-coding-system-alias): Likewise.
-
-2006-01-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * completion.el: Minor fixes in introductory comment.
-       (completion-def-wrapper): Fix alist.
-
-2006-01-25  Nick Roberts  <nickrob@snap.net.nz>
-
-       * thumbs.el (thumbs-new-image-size): New function.
-       (thumbs-increment-image-size-element)
-       (thumbs-decrement-image-size-element, thumbs-increment-image-size)
-       (thumbs-decrement-image-size): Delete.
-       (thumbs-resize-image-1): Rename from thumbs-resize-image.  Keep old
-       temp files and use to resize.
-       (thumbs-resize-image): Rename from thumbs-resize-image-interactive.
-       Use increment argument to enlarge/shrink.  Preserve point.
-       (thumbs-shrink-image): Rename from thumbs-resize-image-size-down.
-       (thumbs-enlarge-image): Rename from thumbs-resize-image-size-up
-       (thumbs-show-thumbs-list): Set thumbs-buffer to current-buffer.
-       (thumbs-mark, thumbs-unmark): Preserve point.
-       (thumbs-modify-image): Keep old temp files and use to modify.
-       Cleanup old temp files at load time.  Preserve point.
-       (thumbs-view-image-mode-map): Use new command names.
-
-2006-01-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * log-view.el (log-view-minor-wrap): First rev is the one at point.
-
-       * calendar/cal-menu.el: Avoid macros from calendar.el so as to break
-       the nastiest part of the cyclic dependency.
-       (cal-menu-update): Use dotimes and calendar-increment-month.
-
-       * calendar/calendar.el: Remove unnecessary leading stars in docstrings.
-       (calendar-week-start-day): Add an :initializer.
-       (calendar-mode-map): Use suppress-keymap, and command remapping.
-       (describe-calendar-mode): Setup xref-stack info for the back button.
-       (calendar-star-date): Insert before delete.
-       (calendar-set-mode-line): Add file-modified info if applicable.
-       (calendar-increment-month): New function.
-
-2006-01-24  Tobias C. Rittweiler  <tcr@freebits.de>  (tiny change)
-
-       * font-lock.el (lisp-font-lock-keywords-2):
-       Recognize "& keywords" only at word boundaries.
-
-2006-01-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * thumbs.el (thumbs-extra-images): New variable.  Make it buffer-local
-       and permanent-local.
-       (thumbs-max-image-number): New variable.
-       (thumbs-do-thumbs-insertion): Use them.
-       (thumbs-per-line): Change default to 4.
-       (thumbs-marked-list): Rename from thumbs-markedL.
-       (thumbs-cleanup-thumbsdir, thumbs-delete-images)
-       (thumbs-rename-images): Use -list instead of L for internal variables.
-       (thumbs-call-convert): Use call-process instead of shell-command.
-       (thumbs-insert-thumb): Add filename as help-echo to each image.
-       (thumbs-show-from-dir): Rename from thumbs-show-all-from-dir.
-       Give dir to thumbs-show-thumbs-list.
-       (thumbs-show-thumbs-list): Set default-directory to that of images.
-       (thumbs-dired-show): Rename from thumbs-dired-show-all.
-       (thumbs-display-thumbs-buffer, thumbs-show-more-images): New functions.
-       (thumbs-mode-map): Bind "+" to thumbs-show-more-images.
-       (thumbs-view-image-mode-map): Bind "^" to thumbs-display-thumbs-buffer.
-
-2006-01-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * ses.el (ses-read-cell): Provide a default value.
-
-2006-01-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * term/w32-win.el (image-library-alist): Add additional names for
-       GIF library.
-
-2006-01-23  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
-
-       * international/latexenc.el (latexenc-find-file-coding-system):
-       Add file-regular-p check.
-
-2006-01-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * simple.el (clone-buffer): Don't show the new buffer in the same
-       window.
-
-2006-01-23  Juri Linkov  <juri@jurta.org>
-
-       * faces.el (link, link-visited): New faces based on default values
-       of `info-xref' and `info-xref-visited'.
-
-       * info.el (info-xref): Inherit from `link'.
-       (info-xref-visited): Inherit from `link-visited'.
-
-       * cus-edit.el (custom-buffer-create-internal): Use widget type
-       `custom-manual' instead of `info-link' and don't set properties
-       `button-face' and `mouse-face' explicitly.
-       (custom-browse-group-tag, custom-browse-variable-tag)
-       (custom-browse-face-tag): Inherit from widget class
-       `custom-group-link' instead of `push-button'.
-       (custom-button-unraised): Inherit from `underline' face.
-       (custom-link): Inherit from `link' face.  Fix doc and group.
-       (custom-add-parent-links, custom-group-value-create): Don't set
-       properties `button-face' and `mouse-face' explicitly for
-       `custom-group-link' widget.
-       (custom-group-link): Add properties `button-face' and `mouse-face'
-       to widget definition.
-       (custom-field-keymap): New variable.  Put `custom-field-keymap' to
-       editable-field's :keymap property.
-       (custom-mode): Fix docstring: substitute keybindings for
-       `widget-forward' and `widget-backward' from `widget-keymap',
-       `widget-complete' from `custom-field-keymap', replace old
-       `Custom-move-and-invoke' with `widget-move-and-invoke'.  Untabify.
-
-       * desktop.el (desktop-load-file): Check for `fboundp' before
-       calling `symbol-function'.
-
-       * simple.el (clone-buffer, clone-indirect-buffer)
-       (clone-indirect-buffer-other-window): Use `read-buffer' instead of
-       `read-string'.  Fix prompts.
-
-       * play/doctor.el (doctor-mode-map): Rename from `doc-mode-map'.
-
-2006-01-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * thumbs.el (thumbs-file-alist): Avoid creating duplicate entries.
-
-2006-01-22  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * startup.el (inhibit-splash-screen, initial-scratch-message):
-       Doc fixes.
-
-2006-01-22  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.52.
-
-       * net/tramp.el, net/tramp-ftp.el, net/tramp-util.el,
-       * net/tramp-vc.el: Add code for unloading Tramp.  See comment before
-       `tramp-unload-tramp' for checklist.
-
-       * net/tramp.el: Require `timer-funcs' instead of `timer' if in
-       XEmacs.  Contributed by Steve Youngs <steve@sxemacs.org>.
-       (tramp-unload-file-name-handler-alist)
-       (tramp-unload-tramp): New defuns.
-       (tramp-advice-PC-expand-many-files): New defadvice.
-       (tramp-save-PC-expand-many-files, tramp-setup-complete): Defuns
-       removed.
-       (tramp-handle-expand-file-name): Remove double slash.
-       (tramp-handle-file-attributes-with-ls): Return t as 9th attribute.
-       It doesn't matter, because it will be converted later on.
-       (tramp-handle-file-ownership-preserved-p): Rewritten.  The old
-       implementation was just heuristic.
-       (tramp-post-connection): Set uid and gid properties.
-       (tramp-convert-file-attributes): Set file's gid change bit.
-       (tramp-get-remote-uid, tramp-get-remote-gid): New defuns.
-       (tramp-handle-expand-file-name): Use "~root" for tilde expansion
-       in case of su(do)? methods.  The home directory of the local user
-       will be taken else.
-       (tramp-open-connection-telnet)
-       (tramp-open-connection-rsh, tramp-open-connection-su)
-       (tramp-open-connection-multi): Set PS1 to "$ ".  Otherwise, a
-       local shell prompt could hurt.  Reported by Romain Francoise
-       <romain@orebokech.com>.
-       (tramp-let-maybe): Add `edebug-form-spec' property.
-       (tramp-handle-expand-file-name): Bind `default-directory' locally
-       to "/" in order to avoid problems with UNC shares or Cygwin
-       mounts.
-       (tramp-md5-function): Fix typo in error message.
-
-       * net/tramp-ftp.el (tramp-ftp-enable-ange-ftp): New defun.
-
-       * net/tramp-util.el (top): Apply `ignore' instead of `identity'
-       for byte-compiler pacification.
-
-2006-01-22  Andre Spiegel  <spiegel@gnu.org>
-
-       * vc-rcs.el (vc-rcs-state-heuristic): Use file-attributes with
-       ID-FORMAT `string'.  This allows us to get rid of
-       `vc-user-login-name UID'.
-
-       * vc-sccs.el (vc-sccs-state-heuristic): Likewise.
-
-2006-01-22  John Paul Wallington  <jpw@pobox.com>
-
-       * hl-line.el (hl-line-highlight, hl-line-move): Doc fixes.
-
-2006-01-21  Martin Rudalics  <rudalics@gmx.at>
-
-       * emacs-lisp/find-func.el (find-definition-noselect)
-       (find-variable-noselect): Search variables in C source code too.
-       (find-function-C-source, find-function-noselect, find-function)
-       (find-function-other-frame, find-variable-noselect, find-variable)
-       (find-variable-other-frame, find-variable-at-point):
-       Fix docstrings.
-
-2006-01-21  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * mail/rmailout.el (rmail-output): Don't use content-type if it is nil.
-
-2006-01-21  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/flyspell.el (flyspell-emacs-popup, flypell-xemacs-popup):
-       Default to disabling the "Save affix" question.
-
-2006-01-21  Marien Zwart  <marienz@gentoo.org>  (tiny change)
-
-       * progmodes/python.el (python-mode) <eldoc-mode-hook>: Pass nil as
-       the first arg to run-python.
-
-2006-01-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * startup.el (command-line-1): Handle --no-desktop if desktop.el
-       is not loaded.
-
-2006-01-20  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calcalg2.el (calc-sum-rec): Fix the sum when the lower
-       limit is 0.
-
-       * calc/calc-arith.el (math-add-symb-fancy): Check the length of
-       the correct variable.
-
-2006-01-20  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-open-at-point): Fixed bug with matching a
-       link.  Fixed buggy argument sequence in call to `org-view-tags'.
-       (org-compile-prefix-format): Set `org-prefix-has-tag'.
-       (org-prefix-has-tag): New variable.
-       (org-format-agenda-item): Remove tags from headline if
-       appropriate.
-       (org-agenda-remove-tags-when-in-prefix): New option.
-       (org-get-tags-at): New function.
-
-2006-01-20  Nick Roberts  <nickrob@snap.net.nz>
-
-       * thumbs.el (thumbs-buffer): New variable.  Make it buffer local.
-       (thumbs-find-image): Move image name and number from buffer name
-       to mode name.  Set thumbs-buffer.  Preserve point so that large
-       images remain visible.
-       (thumbs-file-alist): Construct list in thumbs-buffer and reverse
-       order.
-       (thumbs-show-image-num): Get image from thumbs-file-alist.  Set
-       mode name.
-       (thumbs-next-image, thumbs-previous-image): Make them work.
-
-2006-01-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (custom-buffer-create-internal): State in the text above
-       the whole buffer buttons that they do not operate on hidden items.
-       (custom-face-menu): Use `custom-face-save' instead of
-       `custom-face-save-command'.
-       (custom-face-save-command): Make it an alias for `custom-face-save'
-       and declare it obsolete.
-       (custom-face-save): Doc fix.
-
-       * dired.el (dired-no-confirm): Add quote.
-       (dired-subdir-alist-pre-R): Add quote in
-       `make-variable-buffer-local' form and remove unbalanced parenthesis.
-
-2006-01-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/table.el (table-mode-indicator): Typo in last change.
-
-2006-01-19  Richard M. Stallman  <rms@gnu.org>
-
-       * outline.el (hide-leaves): Don't call outline-end-of-heading.
-       Fixes bug reported in Nov 2005.
-
-       * isearch.el (isearch-forward): Doc fix.
-
-       * dired.el (dired-move-to-filename-regexp): Define as alias.
-       (dired-no-confirm): Use defcustom.
-       (dired-subdir-alist-pre-R): Put defvar at top level.
-
-       * battery.el (battery-linux-proc-acpi): Handle "last full capacity".
-
-       * textmodes/bibtex.el (bibtex-strings, bibtex-reference-keys):
-       Mark as risky.
-
-       * simple.el (set-mark-command): Doc fix.
-       (clone-indirect-buffer-other-window):
-       Read arg like clone-indirect-buffer.
-       (move-beginning-of-line): Skip invisible newlines.
-
-2006-01-19  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/cpp.el (cpp-edit-load): Make the order of
-       listed conditions in a base C code buffer and its associate
-       CPP Edit buffer the same.
-
-2006-01-19  Kenichi Handa  <handa@m17n.org>
-
-       * mail/rmail.el (rmail-enable-mime): Docstring fixed.
-       (rmail-mime-feature): Likewise.
-       (rmail-require-mime-maybe): Use display-warning to show a warning
-       message.
-
-       * international/mule.el (auto-coding-regexp-alist-lookup): New fun.
-       (find-auto-coding): Use auto-coding-regexp-alist-lookup.
-
-2006-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * array.el: Move defvars out of eval-when-compile.
-       (array-make-template): Replace undeclared global var with a local one.
-       (array-mode): Inline initialization functions.
-       (array-init-local-variables, array-init-max-row)
-       (array-init-max-column, array-init-columns-per-line)
-       (array-init-field-width, array-init-rows-numbered)
-       (array-init-line-length, array-init-lines-per-row): Remove.
-
-       * play/doctor.el: Move defvars out of eval-when-compile.  Use dolist.
-       (doc-mode-map): Define explicitly.
-       (doctor-txtype): Use mapc.
-
-       * textmodes/table.el: Move defvars out of eval-when-compile.
-       Remove harmful code meant to avoid byte-compiler warnings.
-       (table-fixed-mode-indicator): Remove.  Use a more complex mode-line
-       specification that checks table-fixed-width-mode directly.
-       (table-recognize-region, table-recognize-cell):
-       Use restore-buffer-modified-p.
-       (table-fixed-width-mode): Remove code that refreshes
-       table-fixed-mode-indicator.
-       (*table--cell-describe-bindings, *table--cell-describe-mode):
-       Avoid obsolete name print-help-return-message.
-       (table--test-cell-list): Don't use replace-regexp from elisp.
-       (table--point-entered-cell-function, table--point-left-cell-function):
-       Don't set table-fixed-mode-indicator, use force-mode-line-update.
-
-       * textmodes/org.el: Move defvars out of eval-when-compile.  Move code
-       that was after the end of file.  Use buffer-file-name variable.
-       (org-timestamp-change): Use with-current-buffer.
-       (org-todo-list): Don't unnecessarily define a new buffer-local var.
-       (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused arg
-       `file'.
-
-       * progmodes/fortran.el: Move defvars out of eval-when-compile.
-       (fortran-break-line): Remove unused var `opoint'.
-       (fortran-abbrev-start): Obey help-event-list.
-
-2006-01-18  Jesper Harder  <harder@phys.au.dk>
-
-       * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-substring.
-
-2006-01-18  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/make-mode.el (makefile-imake-mode): New mode
-       derived from makefile-mode.
-       (makefile-imake-mode-syntax-table): New syntax table
-       derived from makefile-mode-syntax-table.
-       (makefile-mode): Write about makefile-imake-mode in doc string.
-       (makefile-mode-map): Bind "\C-c\C-m\C-i" to makefile-imake-mode.
-       (makefile-imake-font-lock-keywords): New font lock keywords.
-
-       * files.el (auto-mode-alist): Add Imakefile.
-
-2006-01-17  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/flyspell.el (ispell-kill-ispell-hook): Add to the hook when
-       loading the file rather than when turning on flyspell-mode.
-
-2006-01-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (customize-rogue): Minor doc fix.
-
-2006-01-17  Juri Linkov  <juri@jurta.org>
-
-       * dired-aux.el (dired-diff): Use dired-dwim-target-directory
-       instead of the file at the mark as default if the file at the mark
-       is the same as the file at point or if dired-dwim-target-directory
-       is not the same as the current directory and the mark is not active.
-
-       * log-view.el (log-view-minor-wrap): Use the same logic to get
-       revisions as `log-view-diff'.
-
-       * info.el (Info-revert-find-node): Check for Info-current-file
-       before preserving new-history.
-
-       * man.el (Man-heading-regexp): Add `/'.
-
-       * textmodes/sgml-mode.el: Add `coding: iso-2022-7bit' cookie.
-       (html-mode): Set `sentence-end-base' instead of `sentence-end'.
-
-2006-01-16  Juri Linkov  <juri@jurta.org>
-
-       * faces.el (mode-line-faces): New defgroup.
-       (mode-line-highlight): Move definition after new defgroup.
-       (mode-line, mode-line-inactive, mode-line-highlight):
-       Replace :group `modeline' with `mode-line-faces'.
-       (mode-line-buffer-id): New face.
-       (modeline-buffer-id): New face alias.
-       (vertical-border): Remove :group `modeline'.
-
-       * bindings.el (propertized-buffer-identification): Use face
-       `mode-line-buffer-id' instead of `Buffer-menu-buffer'.
-       (mode-line-next-buffer, mode-line-previous-buffer): New functions.
-       (mode-line-buffer-identification-keymap): For mouse-1 replace
-       `mode-line-unbury-buffer' with `mode-line-previous-buffer'.
-       Replace `mode-line-bury-buffer' with `mode-line-next-buffer' for
-       mouse-3.
-
-       * buff-menu.el (buffer-menu-buffer) <defface>: Renamed from
-       Buffer-menu-buffer.  Doc fix.
-       (Buffer-menu-buffer): Face alias to buffer-menu-buffer.
-       (list-buffers-noselect): Use `buffer-menu-buffer' face instead of
-       `Buffer-menu-buffer'.
-
-       * info.el (Info-mode-line-node-keymap): New defvar.
-       (Info-set-mode-line): Use `stringp' to check Info-current-file.
-       Propertize Info-current-node with `mode-line-buffer-id' and
-       `mode-line-highlight' faces and `Info-mode-line-node-keymap'.
-
-       * time.el (display-time-mail-face): Replace :group `faces' with
-       `mode-line-faces'.
-
-2006-01-16  Kenichi Handa  <handa@m17n.org>
-
-       * international/code-pages.el: Add autoload cookies for cp125[0345678].
-
-       * language/european.el (cp1252): New alias for windows-1252.
-
-       * international/mule.el (autoload-coding-system): Prepare for EOL
-       variants.
-
-2006-01-15  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term.el (term-raw-map): Add mapping for insert.
-       (term-send-insert): New.
-       (term-mode): Make variables local here instead of doing it in
-       `term-emulate-terminal'.
-       (term-emulate-terminal): Delete incorrect optimization for cr+lf.
-       Scroll reverse needs to take into account the scroll region.
-       Saving and restoring the cursor should save the color attributes too.
-       (term-reset-terminal): Reset the scroll region.
-       (term-handle-ansi-escape): Cursor up and down should take into
-       account the scroll region.
-       (term-set-scroll-region): Rename from `term-scroll-region'.
-       Move to 0,0 after setting the region.
-       (term-handle-scroll): Handle scroll up.
-       (term-down): Fix off by one error.
-       (term-delete-lines): Do not delete outside the scroll region.
-       (term-insert-lines): Take into account the scroll region.
-
-2006-01-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/ispell.el (ispell-internal-change-dictionary)
-       (ispell-change-dictionary): Undo most of last change of 2006-01-13.
-       (start, end): Move declaration outside of eval-when-compile.
-
-       * textmodes/flyspell.el (flyspell-kill-ispell-hook): New fun.
-       (flyspell-mode-on): Use it.
-
-       * textmodes/ispell.el (ispell-kill-ispell): Run new hook
-       ispell-kill-ispell-hook.
-
-2006-01-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (Custom-set, Custom-save, Custom-reset-current)
-       (Custom-reset-saved): Do not ask for confirmation in single option
-       buffers.
-
-2006-01-13  Richard M. Stallman  <rms@gnu.org>
-
-       * font-lock.el (lisp-font-lock-keywords-1): Minor rearrangement.
-
-2006-01-13  Romain Francoise  <romain@orebokech.com>
-
-       * add-log.el (add-change-log-entry, change-log-merge):
-       Conditionally use `hard-newline'.
-
-2006-01-13  Martin Rudalics  <rudalics@gmx.at>
-
-       * wid-edit.el (widget-field-end): If the overlay is no longer
-       associated with a buffer, behave as if the overlay didn't exist.
-
-       * cus-edit.el (custom-add-see-also, custom-add-parent-links):
-       Make sure the links use the `custom-link' face.
-
-2006-01-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/ld-script.el (auto-mode-alist): Use \' rather than $.
-       (ld-script-mode): Don't set indent-line-function since we don't
-       have one.
-
-2006-01-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-open-file): Use mailcap for selecting an
-       application.
-       (org-file-apps-defaults-gnu): Use mailcap as the default for
-       selecting an application on a UNIX system.
-       (org-agenda-show-tags): New command.
-       (org-table-insert-hline): Keep cursor in current table line.
-       (org-table-convert): Offset effect of modifying
-       `org-table-insert-hline'.
-       (org-format-agenda-item): New optional argument TAG.
-       (org-compile-prefix-format): Handle %T format for the tag.
-       (org-expand-wide-chars): New function.
-       (org-table-insert-row, org-table-insert-hline):
-       Use `org-expand-wide-chars'.
-       (org-open-file): Fix bug in program launch.
-       (org-get-time-of-day): Fix bug with times before 1am.
-       (org-agenda-menu): Add tags commands.
-
-2006-01-13  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/ispell.el (ispell-init-process): Include the used
-       dictionary in ispell process start message.
-       (ispell-internal-change-dictionary): When flyspell-mode is active
-       and dictionary is changed, make sure ispell process is restarted
-       and flyspell word cache cleared out for the current buffer.
-       (ispell-change-dictionary): Make sure flyspell word cache is
-       cleared out in all buffers with active flyspell mode when
-       dictionary is globally changed.
-       Call ispell-internal-change-dictionary after dictionary change.
-
-2006-01-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs-lisp/bytecomp.el (batch-byte-recompile-directory): Doc fix.
-
-       * makefile.w32-in (MH_E_SRC): Synchronize with Makefile.in.
-       (pre-mh-loaddefs.el-SH, pre-mh-loaddefs.el-CMD): Update Copyright
-       years.  Fix small differences wrt Makefile.in.
-       (recompile): Use --eval '(batch-byte-recompile-directory 0)', like
-       Makefile.in does.
-
-2006-01-12  Bill Wohler  <wohler@newt.com>
-
-       * Makefile.in (MH_E_SRC): Replace mh-index.el and mh-pick.el with
-       mh-search.el.
-
-2006-01-12  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/ld-script.el: Update copyright year.
-
-2006-01-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-theme.el (custom-theme-add-variable, custom-theme-add-face):
-       Don't add widget if setting undefined.
-
-2006-01-12  John Paul Wallington  <jpw@pobox.com>
-
-       * help-fns.el (describe-variable): Remove newlines from void
-       variable output.
-
-2006-01-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * wdired.el (wdired-mode-map): Add help echo for
-       wdired-abort-changes.
-
-       * man.el (Man-file-name-regexp): Adjust for a list of files.
-
-2006-01-12  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/ld-script.el (auto-mode-alist): Support
-       suffix conventions used in netbsd and eCos.
-
-2006-01-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (custom-reset-menu, custom-buffer-create-internal)
-       (custom-variable-menu, custom-face-menu, custom-group-menu)
-       (Custom-mode-menu): Change names of menu items.  (As discussed on
-       emacs-devel.)
-       (custom-face-menu): Add "Undo Edits" item.
-
-       * startup.el (init-file-user): defcustom -> defvar.
-
-       * tooltip.el (tooltip-mode): Doc fix.
-
-2006-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * reveal.el (reveal-post-command): window-buffer signals an error on
-       dead windows rather than returning nil.
-       (reveal-open-new-overlays): An overlay might die while we open others.
-
-2006-01-11  Bill Wohler  <wohler@newt.com>
-
-       * cus-dep.el (generated-custom-dependencies-file): Fix typo and
-       phrasing in docstring.
-
-       * Makefile.in (MH_E_SRC): Rename from MH-E-SRC since the dashes
-       can give some systems gas.  Add new file mh-buffers.el.
-
-2006-01-06  Masatake YAMATO  <jet@gyve.org>
-
-       * font-lock.el (cpp-font-lock-keywords): Font lock keywords for
-       C preprocessor forward ported from GNU Emacs 21.2.
-
-       * progmodes/asm-mode.el (asm-font-lock-keywords):
-       Use `cpp-font-lock-keywords'.
-
-       * progmodes/ld-script.el (ld-script-font-lock-keywords): Ditto.
-
-       * progmodes/ld-script.el (auto-mode-alist): Use \\> instead
-       of $ for "\\.ld[s]?".
-
-2006-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/tcl.el (tcl-indent-command): Use indent-for-tab-command.
-       (tcl-indent-line): Return `noindent' if inside a string.
-
-       * progmodes/flymake.el (flymake-split-string): Remove more than one
-       empty string at beg/end of the result.
-       (flymake-find-buildfile, flymake-find-possible-master-files):
-       Use expand-file-name.
-       (flymake-fix-file-name): Don't replace \ with / and don't remove ./
-       since expand-file-name does it for us.  Use directory-file-name.
-       (flymake-ler-get-full-file, flymake-ler-get-file, flymake-ler-get-line)
-       (flymake-ler-get-type, flymake-ler-get-text)
-       (flymake-ler-make-ler): Remove.  Replace by defstruct.  Update callers.
-       (flymake-current-line-no): Remove spurious interactive spec.
-       (flymake-delete-temp-directory): Remove unused var `slash-pos'.
-       (flymake-check-include): Remove arg inc-path merged into inc-name.
-       (flymake-check-patch-master-file-buffer): Fit in 80 columns.
-       Arg regexp-list replaced by a simple regexp.
-       (flymake-master-make-header-init, flymake-master-tex-init):
-       Correspondingly replace regexp-list with a regexp.  Fix regexp.
-
-2006-01-10  Simon Josefsson  <jas@extundo.com>
-
-       * mail/smtpmail.el (smtpmail-try-auth-methods): Add comment
-       describing AUTH PLAIN fix.
-
-2006-01-10  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * mail/emacsbug.el (report-emacs-bug-text-prompt): Delete var.
-       (report-emacs-bug): Don't record initial prompt text.
-       Instead, add text properties to prompting text.
-       (report-emacs-bug-hook): Delete prompting text.
-
-2006-01-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/flymake.el (flymake-find-buildfile): Remove invariant arg
-       `dirs'.  Adjust callers.
-
-2006-01-09  John Paul Wallington  <jpw@gnu.org>
-
-       * cus-edit.el (custom-comment) <defface>: Add TTY definitions.
-
-2006-01-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * reveal.el (reveal-open-new-overlays): New extracted fun.
-       (reveal-close-old-overlays): Idem.  Check overlays's liveness before
-       using them.  Simplify the code.
-       (reveal-post-command): Use them.  Fix up obsolete windows in
-       reveal-open-spots.
-
-       * progmodes/flymake.el: Use `require' rather than autoload for
-       XEmacs's overlays.
-       (flymake-get-common-file-prefix, flymake-build-relative-filename):
-       Delete.  Use file-relative-name instead.
-       (flymake-get-syntax-check-program-args, flymake-perl-init):
-       Simplify the resulting code.
-
-       * log-view.el (log-view-file-re, log-view-message-re): Add support
-       for DaRCS output.
-
-2006-01-09  Alex Schroeder  <alex@gnu.org>
-
-       * mail/rmail.el (rmail-reply-regexp): Also ignore mailing list
-       identifiers sometimes added in square brackets at the beginning of
-       subject lines.
-
-2006-01-07  Richard M. Stallman  <rms@gnu.org>
-
-       * cus-edit.el (Custom-set, Custom-save): Doc fix.
-       (Custom-reset-current, Custom-reset-saved): Change question text.
-       (Custom-reset-standard): Likewise.
-       (custom-variable-reset-saved): Doc fix.
-
-2006-01-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * startup.el (init-file-user): Doc fix.
-
-2006-01-07  Alex Schroeder  <alex@gnu.org>
-
-       * mail/rmail.el (rmail-current-subject): New function.
-       (rmail-current-subject-regexp): New function.
-       (rmail-next-same-subject): Use it.
-
-       * mail/rmailsum.el (rmail-summary-by-topic):
-       Use rmail-current-subject and rmail-current-subject-regexp.
-       (rmail-summary-next-same-subject): Ditto.
-
-       * net/rcirc.el (rcirc-send-input): No longer check whether the
-       process is open, since not all commands need an open process.
-       (rcirc-send-string): Check whether the process is open before
-       sending anything.
-       (rcirc-ignore-list): New option.
-       (rcirc-ignore-list-automatic): New variable.
-       (rcirc-print): Take rcirc-ignore-list into account.
-       (rcirc-cmd-ignore): New command.
-       (rcirc-ignore-update-automatic): New function.
-       (rcirc-handler-PART, rcirc-handler-QUIT): Use it to maintain the
-       list if ignored nicks.
-       (rcirc-handler-NICK): Ditto, and also ignore the new nick.
-
-2006-01-06  David Reitter  <david.reitter@gmail.com>
-
-       * mail/emacsbug.el (report-emacs-bug): Let explanations correctly
-       reflect the address to which the report will be sent.
-
-2006-01-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * progmodes/ld-script.el (auto-mode-alist): Recognize linker
-       scripts whose file-name extensions are "\.x[bdsru]?[cn]?$".
-
-2006-01-01  Michael Ernst  <mernst@alum.mit.edu>  (tiny changes)
-
-       * textmodes/tildify.el: Fix typos (misspellings) in the commentary.
-
-       * emacs-lisp/find-func.el (find-definition-noselect): Fix typo in
-       the doc string: "functoin" => "function".
-       * ldefs-boot.el: Likewise.
-
-       * textmodes/bibtex.el (bibtex-validate-globally): Fix typo in a
-       message text: "Duplicat" => "Duplicate".
-
-2006-01-06  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
-
-       * files.el (basic-save-buffer-2): If backing-up failed, reset
-       buffer-backed-up to nil.
-
-2006-01-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gdb-script-skip-to-head)
-       (gdb-script-calculate-indentation): Indent for breakpoint command
-       lists also.
-
-2006-01-05  Bill Wohler  <wohler@newt.com>
-
-       * Makefile.in (compile-always): Add mh-autoloads dependency.
-       (bootstrap): Remove mh-autoloads dependency, as compile dependency
-       provides it.
-       (updates): Remove mh-autoloads dependency, since it probably has
-       already run recently (via recompile).
-
-2006-01-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/flyspell.el (flyspell-accept-buffer-local-defs): Add an
-       argument `force' to disable the flyspell-last-buffer optimization.
-       (flyspell-mode-on): Use it.
-
-       * progmodes/flymake.el (flymake-get-cleanup-function): Default to
-       flymake-simple-cleanup.
-       (flymake-allowed-file-name-masks): Use this new default.
-       All the functions are now called in the right buffer rather than
-       passing the buffer as argument.
-       (flymake-process-sentinel): Switch to buffer before calling cleanup.
-       (flymake-parse-err-lines): Remove redundant buffer arg.
-       (flymake-get-program-dir): Comment out unused function.
-       (flymake-start-syntax-check, flymake-start-syntax-check-process):
-       Remove redundant buffer argument.
-       (flymake-get-real-file-name, flymake-simple-java-cleanup)
-       (flymake-simple-cleanup, flymake-master-cleanup): Remove buffer arg.
-
-2006-01-05  Richard M. Stallman  <rms@gnu.org>
-
-       * info.el (Info-find-node): Don't record previous node if have none.
-       (info): Go to directory only if history is empty.
-
-       * simple.el (mark): Doc fix.
-
-2006-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-ae-parameter): Don't coerce data if it is
-       already of desired type.
-       (mac-ae-list): Coerce parameter to "list" type.
-       (mac-dispatch-apple-event): Replace cadr part of event with a
-       dummy position so that event-start returns it.
-
-2006-01-05  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-end-of-subtree): New function.
-       (org-cycle, org-subtree-end-visible-p, org-scan-tags):
-       Use `org-end-of-subtree'.
-       (org-agenda, org-agenda-convert-date): Protect calls to
-       `fit-window-to-buffer'.
-       (org-tags-view): Force matching of sublevels when doing a
-       todo-only search.  Define the correct redo command, including the
-       arguments.
-       (org-agenda-redo): Display message.
-       (org-check-for-org-mode): New function.
-       (org-agenda-type): New variable.
-       (org-timeline, org-agenda-list, org-todo-list, org-tags-view):
-       Set `org-agenda-type'.
-       (org-agenda-check-type): New function.
-       (org-agenda-goto-today, org-agenda-later, org-agenda-earlier)
-       (org-agenda-week-view, org-agenda-day-view)
-       (org-agenda-next-date-line, org-agenda-previous-date-line)
-       (org-agenda-log-mode, org-agenda-toggle-diary)
-       (org-agenda-toggle-time-grid, org-agenda-date-later)
-       (org-agenda-date-prompt, org-agenda-diary-entry)
-       (org-agenda-execute-calendar-command, org-agenda-goto-calendar)
-       (org-agenda-convert-date, org-agenda-menu):
-       Use `org-agenda-check-type'.
-       (org-make-overlay, org-delete-overlay)
-       (org-detatch-overlay, org-move-overlay, org-overlay-put):
-       New compatibility functions.
-       (org-calendar-select-mouse): New command.
-
-2006-01-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (Custom-reset-current, Custom-reset-saved)
-       (Custom-reset-standard): Fix y-or-n-p messages.
-       (custom-link): New face for links.
-       (custom-buffer-create-internal, custom-manual): Use it.
-       (custom-face-save): Push to theme-face before setting face spec.
-
-       * wid-edit.el (widget-default-mouse-face-get): New function.
-       (widget-specify-button): Handle mouse-face like button-face.
-
-       * custom.el (load-theme): Clear old theme settings if reloading.
-
-2006-01-03  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (custom-buffer-create-internal): Move whole buffer
-       "Erase Customization" button back to same position it occupies in
-       the individual State menus.
-
-2006-01-04  Kim F. Storm  <storm@cua.dk>
-
-       * wid-edit.el (key-sequence): Rework widget to read key binding
-       using `kbd' syntax.  Use C-q to insert literal key, event, or code.
-       (widget-key-sequence-default-value): Default value for empty sequence.
-       (widget-key-sequence-map): New map for reading key binding.  Bind C-q.
-       (widget-key-sequence-read-event): New command for C-q.
-       (widget-key-sequence-validate, widget-key-sequence-value-to-internal)
-       (widget-key-sequence-value-to-external): New functions.
-
-2006-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/flymake.el (flymake-create-temp-with-folder-structure):
-       Use expand-file-name.
-       (flymake-delete-temp-directory): Use expand-file-name,
-       file-name-directory, and directory-file-name.
-       (flymake-strrchr): Delete.
-       (flymake-start-syntax-check): Don't pass the redundant buffer argument
-       to the init-f function.
-       (flymake-save-buffer-in-file, flymake-init-create-temp-buffer-copy)
-       (flymake-init-find-buildfile-dir)
-       (flymake-init-create-temp-source-and-master-buffer-copy)
-       (flymake-simple-make-init-impl, flymake-simple-make-init)
-       (flymake-master-make-init, flymake-master-make-header-init)
-       (flymake-simple-make-java-init, flymake-simple-ant-java-init)
-       (flymake-perl-init, flymake-simple-tex-init, flymake-master-tex-init)
-       (flymake-xml-init): Remove corresponding redundant buffer argument.
-       (flymake-allowed-file-name-masks): Remove last elems that are equal to
-       the default anyway.  Clean up regexps.
-
-       * progmodes/flymake.el (flymake-temp-source-file-name)
-       (flymake-master-file-name, flymake-temp-master-file-name)
-       (flymake-base-dir): New buffer-local vars.
-       (flymake-buffer-data, flymake-get-buffer-value)
-       (flymake-set-buffer-value): Replace those hash-tables by the new
-       buffer-local vars.  Update callers.
-
-       * progmodes/flymake.el (flymake-check-start-time)
-       (flymake-check-was-interrupted, flymake-err-info, flymake-is-running)
-       (flymake-last-change-time, flymake-new-err-info, flymake-timer):
-       Move definition, so we can remove redundant earlier declaration.
-       (flymake-replace-regexp-in-string, flymake-split-string)
-       (flymake-get-temp-dir): Use defalias.
-       (flymake-popup-menu): Remove `pos' argument.  Use posn-at-point.
-       (flymake-xemacs-window-edges): Remove unused function.
-       (flymake-get-point-pixel-pos): Move.
-       (flymake-pid-to-names, flymake-reg-names)
-       (flymake-get-source-buffer-name, flymake-unreg-names): Remove.
-       Replace by a simple list flymake-processes and by process-buffer.
-       Update callers.  Other than simplify the code, it uses buffers rather
-       than buffer-names so it doesn't get confused by uniquify.
-       (flymake-buffer-data): The global value should just be nil.
-
-       * emacs-lisp/bytecomp.el (byte-compile-file-form-defalias):
-       Optimize the body of a defalias like any other code.
-
-       * font-lock.el (font-lock-fontify-buffer, font-lock-fontify-region):
-       Make sure we've setup font-lock's vars.  It may influence which
-       function we then call.
-       (font-lock-default-fontify-buffer): Don't bother calling set-defaults
-       here since it's too late anyway.
-
-2006-01-03  Romain Francoise  <romain@orebokech.com>
-
-       * startup.el (fancy-splash-tail, normal-splash-screen):
-       Update copyright year.
-
-2006-01-02  J.D. Smith  <jdsmith@as.arizona.edu>
-
-       * mouse.el (mouse-drag-track): Rename, from
-       `mouse-drag-region-1'.  Includes optional argument required to
-       enable post-drag event processing (e.g. delete region keys).
-       Can be used without this argument to track a mouse region and operate
-       on it as soon as the drag completes.
-       (mouse-drag-region): Use `mouse-drag-track'.
-
-2006-01-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (custom-guess-name-alist, custom-guess-doc-alist):
-       Move to `custom-buffer' group.
-
-       * cus-theme.el: Rewrite the Custom New Theme Mode interface.
-       (custom-new-theme-mode-map, custom-theme-insert-variable-marker)
-       (custom-theme-insert-face-marker, custom-theme-variable-menu)
-       (custom-theme-face-menu): New variables.
-       (custom-theme-add-variable, custom-theme-variable-action)
-       (custom-variable-reset-theme, custom-theme-delete-variable)
-       (custom-face-reset-theme, custom-theme-face-action)
-       (custom-theme-delete-face, custom-theme-merge-theme)
-       (custom-theme-add-face, custom-theme-visit-theme): New functions.
-
-2006-01-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el: Move Custom Themes commentary to start of theme code.
-       (custom-known-themes): Rename `standard' theme to `changed'.
-       (custom-push-theme): Caller no longer specifies what theme to use
-       when doing `reset'---the setting is simply removed from the theme.
-       Delete MODE from `theme-value' and `theme-settings' properties.
-       (custom-declare-theme): Ignore &rest args since we don't use them.
-
-       (custom-loaded-themes): Delete variable.
-       (custom-theme-load-themes, custom-theme-loaded-p)
-       (custom-theme-value): Delete functions.
-
-       (custom-declare-theme): Signal error on invalid theme names.
-       (provide-theme): custom-loaded-themes was deleted.
-       (load-theme): Load the file unconditionally.
-       (enable-theme): Call `load-theme' if theme is undefined.
-       (custom-enabled-themes): Only update value for successful loads.
-       (disable-theme): Complete from enabled themes when interactive.
-       (custom-variable-theme-value): Calculate theme value directly.
-
-       (custom-theme-reset-variables, custom-reset-variables): Mark as
-       XEmacs compatibility functions.  We don't actually use these.
-
-       * cus-edit.el (custom-variable-state-set):
-       Use custom-variable-theme-value instead of custom-theme-value.
-       (custom-face-state-set): Rename `standard' theme to `changed'.
-       (custom-save-variables, custom-save-faces): Delete unneeded
-       references to custom-reset-variables.
-       (custom-save-resets): Delete function.
-       (custom-save-variables, custom-save-faces): MODE argument deleted.
-       (custom-save-variables, custom-save-faces): Ignore theme values.
-
-       * cus-face.el (custom-theme-reset-faces): Mark as XEmacs
-       compatibility function.
-
-2006-01-01  Richard M. Stallman  <rms@gnu.org>
-
-       * cus-edit.el (Custom-set, Custom-save): Ask for confirmation.
-       (Custom-reset-current, Custom-reset-saved): Likewise.
-       (Custom-reset-standard): Show message if aborted.
-       (custom-mode): Doc fix, describing those commands.
-
-       * mouse.el (mouse-drag-region-1): When following link via mouse-2,
-       put on event-kind property.
-
-2005-12-31  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (provide-theme): Ban `user' theme name.
-       (custom-enabling-themes): New variable.
-       (enable-theme): Don't enable user if custom-enabling-themes is t.
-       (custom-enabled-themes): Make it a defcustom.
-       (custom-theme-recalc-face): No-op if face is undefined.
-
-       * cus-edit.el (custom-button-mouse): New variable.
-       (custom-button-mouse): New face.
-       (custom-raised-buttons, custom-mode): Use it.
-
-       * cus-theme.el (custom-new-theme-mode): Use custom-button-mouse.
-
-2005-12-31  Eli Zaretskii  <eliz@gnu.org>
-
-       * progmodes/gud.el (gud-display-line): Support hl-line in the
-       source buffer.
-
-2005-12-31  Lennart Borgman  <lennart.borgman.073@student.lu.se>  (tiny change)
-
-       * mouse.el (mouse-drag-window-above): Verify that the found window
-       overlaps with the given window in the horizontal dimension.
-
-2005-12-31  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (cvs-update): New target.
-
-       * makefile.w32-in (cvs-update): Ditto.
-
-2005-12-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-theme.el (custom-new-theme-mode): Use cus-edit faces.
-       (custom-new-theme-mode-map): New variable.
-
-2005-12-30  Richard M. Stallman  <rms@gnu.org>
-
-       * custom.el (custom-load-themes): Function deleted.
-
-       * cus-edit.el (custom-save-loaded-themes): Function deleted.
-       (custom-save-variables): Don't delete or add custom-load-themes call.
-
-2005-12-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * cus-start.el: Add `visible-cursor'.
-
-       * progmodes/flymake.el (flymake-copy-buffer-to-temp-buffer): Simplify.
-       (flymake-parse-output-and-residual): Remove `source-buffer' argument.
-       (flymake-process-filter): Switch to buffer before calling it instead.
-       (flymake-post-syntax-check, flymake-highlight-err-lines)
-       (flymake-delete-own-overlays, flymake-parse-err-lines)
-       (flymake-start-syntax-check, flymake-start-syntax-check-process)
-       (flymake-count-lines, flymake-parse-residual):
-       Remove constant buffer argument.
-       (flymake-start-syntax-check-for-current-buffer): Remove.
-       Update callers to use flymake-start-syntax-check instead.
-       (flymake-display-err-menu-for-current-line):
-       Remove unused var `mouse-pos'.
-       (flymake-restore-formatting): Comment out unused function.
-       (flymake-report-status, flymake-report-fatal-status): Remove buffer
-       argument, use current-buffer instead.  Update callers.
-
-2005-12-30  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-mode): Make completion-ignore-case
-       buffer-local because choose-completion-delete-max-match requires
-       that we set completion-ignore-case (i.e., binding via let is not
-       sufficient).
-       (bibtex-complete): Always set completion-ignore-case and
-       choose-completion-string-functions.  The latter is needed because
-       choose-completion-string-functions keeps its value if we quit the
-       *Completions* buffer without requesting a completion.
-
-2005-12-30  Andreas Schwab  <schwab@suse.de>
-
-       * progmodes/cc-defs.el: Ignore errors from font-lock-compile-keywords.
-
-2005-12-30  Eli Zaretskii  <eliz@gnu.org>
-
-       * jit-lock.el (jit-lock-chunk-size): Doc fix.
-
-2005-12-30  Juri Linkov  <juri@jurta.org>
-
-       * locate.el (locate-fcodes-file, locate-header-face)
-       * progmodes/delphi.el (delphi-other-face)
-       * progmodes/glasses.el (glasses-face): Add tag "None" to const nil.
-
-       * paren.el (show-paren-match, show-paren-mismatch): Use existing
-       group `paren-showing-faces'.
-
-       * net/goto-addr.el (goto-address-highlight-keymap): Fix docstring.
-       (goto-address): Fix docstring.
-
-       * net/webjump.el (webjump-sample-sites): Update URLs.
-
-       * textmodes/fill.el (fill-single-word-nobreak-p): Use `sentence-end'.
-
-       * subr.el (cancel-change-group): Add listp around pending-undo-list.
-
-2005-12-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (font-lock-compile-keywords): Signal an error when
-       font-lock-set-defaults hasn't been called.
-
-2005-12-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * subr.el (noreturn, 1value): Doc fixes.
-
-2005-12-29  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-text-in-field-bounds): Handle case
-       that assoc-string returns nil.
-
-2005-12-29  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-entry-type-whitespace)
-       (bibtex-entry-type-str, bibtex-empty-field-re)
-       (bibtex-search-backward-string, bibtex-preamble-prefix)
-       (bibtex-search-entry, bibtex-enclosing-entry-maybe-empty-head): Remove.
-       (bibtex-any-valid-entry-type): New variable.
-       (bibtex-parse-field-name): Simplify.
-       (bibtex-parse-string, bibtex-search-forward-string): New arg empty-key.
-       (bibtex-preamble-prefix): Include left delimiter.
-       (bibtex-search-forward-field, bibtex-search-backward-field):
-       Allow unbounded search past entry boundaries (required by bibtex-pop).
-       (bibtex-text-in-field-bounds): Use push.
-       (bibtex-text-in-field): Do not use bibtex-narrow-to-entry.
-       (bibtex-parse-preamble, bibtex-valid-entry)
-       (bibtex-beginning-first-field): New functions.
-       (bibtex-skip-to-valid-entry): Use bibtex-valid-entry.  Fix regexp.
-       (bibtex-map-entries): Fix docstring.
-       (bibtex-flash-head): New arg prompt.  Simplify.
-       (bibtex-enclosing-field): Include code of bibtex-inside-field.
-       (bibtex-insert-kill): Simplify.  Always insert text past the
-       current field or entry.
-       (bibtex-format-entry): Use bibtex-parse-field.
-       (bibtex-pop): Use bibtex-beginning-of-entry and
-       bibtex-end-of-entry to initiate the search.  Insert empty field if
-       we found ourselves.
-       (bibtex-print-help-message): New args field and comma.
-       Handle entry keys.
-       (bibtex-make-field): Use bibtex-beginning-of-entry.
-       (bibtex-end-of-entry): Use bibtex-valid-entry.  Recognize any
-       invalid entry.
-       (bibtex-validate): Use bibtex-valid-entry and bibtex-parse-string.
-       Handle preambles.  Simplify code for thorough test.
-       (bibtex-next-field, bibtex-find-text, bibtex-find-text-internal):
-       New arg comma.  Handle entry heads.
-       (bibtex-remove-OPT-or-ALT, bibtex-remove-delimiters)
-       (bibtex-kill-field, bibtex-copy-field-as-kil, bibtex-empty-field):
-       New arg comma.
-       (bibtex-kill-entry): Use bibtex-any-entry-maybe-empty-head.
-       (bibtex-fill-field): Simplify.
-       (bibtex-fill-entry): Use bibtex-beginning-first-field and
-       bibtex-parse-field.
-       (bibtex-convert-alien): Do not wait before calling bibtex-validate.
-       (bibtex-complete): Use bibtex-parse-preamble.
-
-2005-12-29  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-tooltip-print, gdb-tooltip-print-1):
-       Display name of expression instead of convenience variable.
-       (gdb-post-prompt): Only call gdb-get-changed-registers if needed.
-
-       * progmodes/gud.el (gud-tooltip-dereference): Rename from
-       toggle-gud-tooltip-dereference.
-       (gud-tooltip-print-command): Move concatenation of "*" to expr to...
-       (gud-tooltip-tips): ...here when dereferencing.
-
-2005-12-28  Bill Wohler  <wohler@newt.com>
-
-       * simple.el (mh-e-user-agent): Move to mh-e/mh-comp.el and autoload.
-
-2005-12-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc.el (vc-annotate-display): Replace optional arg `color-map' with
-       compulsory arg `ratio'.  Inline body of vc-annotate-time-span.
-       (vc-annotate-display-autoscale): Adjust call.
-       (vc-annotate-display-default): Adjust call.  Make arg compulsory.
-       Fix interactive spec.
-       (vc-annotate-time-span): Remove.
-       (vc-annotate-oldest-in-map): Rename from vc-annotate-car-last-cons.
-       (vc-annotate-mode-menu, vc-annotate-display-autoscale)
-       (vc-annotate-display-select): Use new name.
-
-       * vc.el (vc-annotate-mode-map): Remove obsolete binding.
-       (vc-annotate-mode-menu): Remove left-over redundant declaration.
-       Correct the construction of span entries.  Simplify.
-       (vc-annotate-display-select): Fix the nil case.
-       (vc-annotate): Remove obsolete (and now broken) code.
-       (vc-annotate-extract-revision-at-line): Remove obsolete code.
-       (vc-annotate-time-span): Remove unused arg `quantize'.  Simplify.
-
-2005-12-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * subr.el (lazy-completion-table): Correct typo in docstring.
-
-       * startup.el (command-line): Use `custom-reevaluate-setting' for
-       `send-mail-function'.
-
-       * mail/sendmail.el (send-mail-function): Autoload the standard-value.
-
-2005-12-05  Ralf Angeli  <angeli@iwi.uni-sb.de>
-
-       * mail/smtpmail.el (smtpmail-try-auth-methods):
-       Send credentials together with "AUTH PLAIN" command.
-
-2005-12-27  Richard M. Stallman  <rms@gnu.org>
-
-       * mouse.el (mouse-drag-region-1): When remapping mouse-1 to
-       mouse-2, go back to previously selected window, so it's selected
-       when mouse-2 command runs.
-
-2005-12-27  Juri Linkov  <juri@jurta.org>
-
-       * descr-text.el (describe-text-sexp): Use square brackets for
-       button [Show] to distinguish it from the property value `show'.
-       (describe-property-list): Use `insert-text-button' with
-       `help-face' type instead of putting face in quotes, because button
-       is not created automatically for a list of faces.
-       (describe-text-properties-1): Put button-type value in quotes to
-       distinguish from plain text "button".
-       (describe-char): Display code point values in hex.  Don't use
-       `symbol-name' for `current-input-method' because it is a string.
-       Use `insert-text-button' with `help-face' type instead of putting
-       hardcoded face in quotes, because button is not created automatically.
-
-2005-12-27  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/glasses.el (glasses-face): More specific custom type.
-
-       * files.el (set-visited-file-name): Doc fix.
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       Use local var buffer-scan-pos to advance scan for next misspelling.
-       Advance it only after we find the misspelling.
-
-2005-12-27  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       New criteria for finding the misspelling in the buffer.
-
-2005-12-27  Nick Roberts  <nickrob@snap.net.nz>
-
-       * help-mode.el (help-insert-string): Set help-xref-stack-item
-       rather than call help-setup-xref.
-
-       * descr-text.el (describe-char): Revert previous changes for
-       optional buffer argument.
-
-2005-12-27  Juri Linkov  <juri@jurta.org>
-
-       * help-mode.el (help-insert-string): New function.  Save buffer
-       contents in cases where it is impossible to recompute the old contents.
-
-       * descr-text.el (describe-char): Set help-xref-stack-item
-       explicitly after buffer has been generated.
-
-2005-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * cus-start.el (all): Add x-gtk-show-hidden-files.
-
-2005-12-26  Richard M. Stallman  <rms@gnu.org>
-
-       * replace.el (perform-replace): Calculate match-again
-       before skipping read-only matches.
-
-       * paren.el (paren-showing-faces): New group.
-       (show-paren-match, show-paren-mismatch): Move to that group.
-
-       * button.el (button): Put into group `basic-faces'.
-
-       * progmodes/make-mode.el: Remove faces from group `faces'.
-
-       * apropos.el (apropos, apropos-value): Doc fix.
-       (apropos-documentation): Doc fix.
-
-2005-12-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * subr.el (lazy-completion-table): Remove argument `args'.
-
-       * textmodes/bibtex.el (bibtex-strings, bibtex-reference-keys):
-       Don't use the `args' argument of lazy-completion-table.
-
-2005-12-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * descr-text.el (describe-char): Add optional argument for buffer.
-       Set buffer appropriately.  Call help-setup-xref.
-       Suggested by Stefan Monnier.
-
-2005-12-26  Juri Linkov  <juri@jurta.org>
-
-       * descr-text.el: Require `help-fns' at runtime.  Don't require
-       `button' for byte compilation.
-       (describe-text-widget): Add `help-echo' for first button.
-       Use `help-info' for second.
-       (describe-property-list): Use `help-argument-name' instead of `italic'.
-       (describe-text-category): Add prompt to interactive spec.
-       Call `help-setup-xref'.
-       (describe-char): Use `help-character-set'.  Add `help-echo' for
-       code point.  Use `help-input-method'.  Remove superfluous insert.
-
-2005-12-25  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/cc-defs.el (c-emacs-features): Do parse-partial-sexp
-       at point, in case of narrowing.
-
-       * progmodes/delphi.el (delphi-other-face): Allow nil in type.
-
-       * locate.el (locate-header-face): Allow nil in type.
-
-       * progmodes/cpp.el (cpp-face-none-list): Use cpp-face instead of face.
-
-2005-12-25  Romain Francoise  <romain@orebokech.com>
-
-       * battery.el (battery-linux-proc-acpi): Also try
-       `/proc/acpi/thermal_zone/THM0/temperature'.
-
-2005-12-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (custom-push-theme): Fix docstring.
-
-       * cus-edit.el (custom-variable-set, custom-variable-save)
-       (custom-variable-save): Custom-quote widget values.
-       (customize-save-variable): Fix custom-push-theme call.
-
-2005-12-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32-fns.el (w32-batch-update-autoloads): New function.
-
-       * makefile.w32-in (autoloads, $(lisp)/mh-e/mh-loaddefs.el):
-       Use w32-batch-update-autoloads, and don't setq generated-autoload-file
-       from the command line.
-
-2005-12-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (custom-push-theme): Clarify docstring.  VALUE nil for
-       reset means to remove setting from theme entirely.  Don't keep
-       expanding theme-settings list; delete old entries if necessary.
-
-       * cus-edit.el (custom-buffer-create-internal): Move "Erase
-       customization" button one line up.
-       (custom-themed): New face.
-       (custom-magic-alist): New value, THEMED, for theme settings.
-       (custom-variable-state-set, custom-face-state-set):
-       Check theme-value instead of saved-value.
-       (custom-variable-reset-standard, custom-face-reset-standard):
-       Remove theme setting entirely.  Recalculate new values.
-       (custom-variable-set, custom-variable-set)
-       (custom-variable-reset-saved, custom-variable-reset-backup)
-       (custom-face-set, custom-face-reset-saved): Update `user' theme.
-       (custom-variable-save): Fix typos.
-
-2005-12-23  Juri Linkov  <juri@jurta.org>
-
-       * emacs-lisp/edebug.el (edebug-all-defs, edebug-all-forms):
-       Add autoload cookies.
-       (edebug-outside-d-c-i-n-s-w): New variable.
-       (edebug-display, edebug-outside-excursion): Use it to save the
-       original value of default-cursor-in-non-selected-windows.
-       Set default-cursor-in-non-selected-windows to t while Edebug
-       is active.
-       (edebug-mode, edebug-eval-mode): Doc fix.
-
-       * mouse.el (mouse-choose-completion): Replace `buffer-substring'
-       with `buffer-substring-no-properties' to remove common substring
-       highlighting.
-
-       * info.el (info-other-window, info): Rename function argument
-       `file' to `file-or-node'.
-       (Info-complete-menu-item): Use local variable `complete-nodes' to
-       keep the global value of `Info-complete-nodes' unchanged for
-       subsequent completions.
-       (info-tool-bar-map): Put `Info-index' icon just before `Info-search'.
-
-       * simple.el (get-next-valid-buffer, last-buffer)
-       (next-error-buffer-p, next-error-find-buffer)
-       (minibuffer-history-sexp-flag): Doc fix.
-
-       * savehist.el (savehist-mode-hook): Add `:group'.
-
-       * log-view.el: Call autoload for vc-find-version.
-       (log-view-current-file): Adjust subgroup numbers.
-       (log-view-current-tag): Add `length'.
-
-2005-12-23  Richard M. Stallman  <rms@gnu.org>
-
-       * vc.el (vc-annotate-car-last-cons): Defn moved up.
-
-2005-12-23  Juri Linkov  <juri@jurta.org>
-
-       * hi-lock.el (hi-lock-archaic-interface-message-used)
-       (hi-lock-archaic-interface-deduce, hi-lock-mode): Doc fix.
-       (hi-lock-mode): Display "Hi" in the mode line only when
-       hi-lock-interactive-patterns or hi-lock-file-patterns is non-nil.
-       (hi-lock-write-interactive-patterns):
-       Use hi-lock-file-patterns-prefix instead of hard-coded "Hi-lock".
-       (hi-lock-set-pattern, hi-lock-set-file-patterns)
-       (hi-lock-font-lock-hook): Set 3rd arg `how' of
-       font-lock-add-keywords to t.
-
-2005-12-23  David Koppelman  <koppel@ece.lsu.edu>
-
-       * hi-lock.el (hi-lock-highlight-range): New variable.
-       (hi-lock-mode, hi-lock-unface-buffer): Call font-lock-fontify-buffer
-       only if font-lock-fontified is non-nil.  Remove overlays.
-       (hi-lock-set-pattern): Call font-lock-fontify-buffer if
-       font-lock-fontified is non-nil, otherwise use overlays (instead of
-       text properties).
-       (hi-lock-string-serialize-hash, hi-lock-string-serialize-serial):
-       New variables.
-       (hi-lock-string-serialize): New function.
-
-2005-12-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * menu-bar.el (menu-find-file-existing): New function.
-       (menu-bar-file-menu): Use menu-find-file-existing for Open.
-
-       * tool-bar.el (tool-bar-setup): Open changed to menu-find-file-existing.
-
-2005-12-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc.el: Remove unnecessary leading * in docstrings.
-       (vc-annotate-mode-map): Move initialization into declaration.
-       (vc-static-header-alist): Nitpick on the regexp.
-       (vc-default-init-version): New fun.
-       (vc-register): Use it.
-       (vc-insert-headers): Use dolist.
-       (vc-annotate-get-backend): Remove unused function.
-       (vc-annotate-add-menu): Remove.  Build the menu directly at toplevel.
-       (vc-annotate-mode): Remove corresponding call.
-       (vc-annotate-car-last-cons): Simplify.
-       (vc-annotate-buffers): Remove var.
-       (vc-annotate-backend): Make it buffer-local.
-       (vc-annotate): Move the interaction to the interactive spec.
-       Add a `buf' argument.
-       (vc-annotate-warp-version): Use this new `buf' argument to avoid
-       killing&creating a vc-annotate buffer, which is very disruptive when
-       the buffers are shown in dedicated frames.
-
-2005-12-23  Nick Roberts  <nickrob@snap.net.nz>
-
-       * descr-text.el: Add FSF as maintainer.
-       (describe-text-mode, describe-text-mode-map)
-       (describe-text-mode-hook, describe-text-done): Delete.  Use normal
-       help-mode.
-       (describe-text-widget, describe-text-sexp)
-       (describe-property-list, describe-text-category)
-       (describe-text-properties, describe-text-properties-1)
-       (describe-char): Use help buttons instead of widgets.
-       (describe-char-unicodedata-file): Make URL link in doc string.
-
-2005-12-22  Richard M. Stallman  <rms@gnu.org>
-
-       * cus-edit.el (custom-variable-prompt): Say "variable" in prompt.
-       (custom-buffer-create-internal): Reword the top-of-buffer help intro.
-       Don't include buttons that write a file when there's no file.
-       (custom-variable-menu, custom-face-menu, custom-group-menu):
-       Don't include commands that write a file when there's no file.
-       (customize-browse): Reword the top-of-buffer help intro.
-       (custom-buffer-create-internal): Fix previous change.
-       (customize-changed-options-previous-release): Prev release is 21.1.
-       (customize-changed-options): Doc fix.
-       (customize-changed): New alias.
-       (custom-reset-menu, custom-magic-alist, Custom-mode-menu):
-       Say "standard values".
-       (Custom-reset-standard): Doc fix.
-       (custom-face-reset-standard): Doc fix.
-
-2005-12-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (font-lock-default-fontify-buffer): Try and set-defaults
-       even if font-lock-mode is non-nil since it may be t without having
-       turned on font-lock-mode-internal.
-       (font-lock-choose-keywords): Minor optimization.
-       (font-lock-add-keywords, font-lock-remove-keywords)
-       (font-lock-set-defaults): Don't call make-local-variable on a variable
-       that we know to already be local.
-
-2005-12-22  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * emacs-lisp/lisp.el (lisp-complete-symbol): Don't print progress
-       messages if in the minibuffer.
-
-2005-12-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/flyspell.el (flyspell-check-word-p): Don't quote - in a RE.
-       (tex-mode-flyspell-verify, flyspell-get-word)
-       (flyspell-external-point-words): Don't use point-min/max uselessly.
-
-       * emacs-lisp/lisp.el (lisp-complete-symbol): Mostly undo the change
-       by Kevin Rodgers.  Instead, just hide the completions buffer if we
-       don't need to show it.
-
-2005-12-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * wid-edit.el (file, directory): Doc fixes for the `define-widget's.
-
-2005-12-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/lisp.el (lisp-complete-symbol): Don't call
-       delete-windows-on with an inexistent buffer.
-
-2005-12-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display):
-       Delete defcustom variable :tag names.
-
-2005-12-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * log-view.el (log-view-file-re, log-view-message-re): Use shy groups.
-       (log-view-font-lock-keywords): Ajust subgroup numbers.
-       (log-view-current-tag): Don't hard code the number of subgroups.
-
-2005-12-20  Juri Linkov  <juri@jurta.org>
-
-       * tooltip.el (tooltip): Move defgroup before define-minor-mode.
-       (tooltip-x-offset, tooltip-y-offset): Doc fix.
-
-       * menu-bar.el (menu-bar-menu-frame-live-and-visible-p)
-       (menu-bar-non-minibuffer-window-p): Instead of checking
-       display-multi-frame-p, use selected-frame when menu-updating-frame
-       is nil.
-
-2005-12-20  Stuart Herring  <herring@lanl.gov>  (tiny change)
-
-       * align.el (align-rules-list): Use [ \t] instead of \s-
-       for column separators in text mode.
-
-2005-12-20  Nick Roberts  <nickrob@snap.net.nz>
-
-       * help-mode.el (help-customize-variable, help-customize-face):
-       Don't pop help-xref-stack as help-follow no longer pushes
-       anything on to it.
-
-2005-12-20  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-agenda-custom-commands): New option.
-       (org-agenda): Offer custom commands on splash screen.
-       (org-make-tags-matcher): Parser for Boolean logic added.
-       (org-agenda-set-tags): New command.
-       (org-agenda-menu, org-agenda-mode-map): Add `org-agenda-set-tags'.
-       (org-set-tags): Efficiency improvements.
-       (org-auto-align-tags): New option.
-       (org-todo, org-demote, org-promote): Realign tags.
-       (org-tags-completion-function): Use also "&" and "|" as separators.
-       (org-org-menu): Agenda commands simplified.
-
-2005-12-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (customize-apropos, customize-apropos-options):
-       Docstring changes.
-
-       * font-lock.el (font-lock): Add tags to the links in the defgroup.
-
-2005-12-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-mode): Wrap while widened.
-       (longlines-decode-region, longlines-encode-region): Compute max
-       just once.
-
-2005-12-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * cus-edit.el (mac): New group.
-
-       * cus-start.el (all): Add user options in macterm.c.  Add test for
-       Mac-related built-ins.  Fix test for GTK-related built-ins.
-
-       * term/mac-win.el (mac-handle-language-change)
-       (mac-ae-open-documents, mac-ae-get-url, mac-services-open-file)
-       (mac-services-open-selection, mac-services-mail-selection)
-       (mac-services-mail-to, mac-services-insert-text)
-       (mac-dispatch-apple-event): Add docstrings.
-       (x-get-selection, mac-select-convert-to-string): Select coding
-       system from `utf-16be' and `utf-16le' using `byteorder'.
-
-2005-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * subr.el (lazy-completion-table): Don't be fooled if the var holds
-       a "list" (lambda ...) rather than a real completion list.
-
-       * emacs-lisp/cl-extra.el (cl-macroexpand-all): Fix code-walk for
-       lexical-let when encountering ((lambda (...) ...) ...).
-
-2005-12-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/sh-script.el (sh-mode):
-       * language/ethio-util.el (ethio-fidel-to-sera-mail-or-marker):
-       * textmodes/picture.el (picture-mode): Update docstrings.
-
-2005-12-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (autoloads, custom-deps): Warn that parts of
-       commands enclosed in $(ARGQUOTE)s should not be split between two
-       lines, as that will break with GNU Make >3.80, when sh.exe is used
-       and arg quoting is with '..'.
-       (autoloads): Don't break the quoted --eval expression between
-       several lines.
-
-2005-12-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * emacs-lisp/edebug.el (edebug-safe-prin1-to-string):
-       Capture error from printing circular structures.
-
-2005-12-17  Martin Rudalics  <rudalics@gmx.at>
-
-       * wid-edit.el (widget-checkbox-action): Clear undo info.
-
-2005-12-16  Bill Wohler  <wohler@newt.com>
-
-       * menu-bar.el (kill-this-buffer): Set a good example by using menu
-       bar, not menubar in comment.
-
-2005-12-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/cc-engine.el (c-after-change-check-<>-operators):
-       After-change-functions should not clobber the match data.
-
-2005-12-16  Juri Linkov  <juri@jurta.org>
-
-       * simple.el (choose-completion): Use `buffer-substring-no-properties'
-       instead of `buffer-substring'.
-       (completion-common-substring): Doc fix.
-       (completion-setup-function): Use minibuffer-completion-contents
-       instead of minibuffer-contents.  Don't set common-string-length
-       initially.  Remove special handling of partial-completion-mode.
-       Move computation of completion-base-size into one cond.
-       Call completion-base-size-function in mainbuf.  In computation of
-       completion-base-size for file name completion don't move point to
-       the end of the minibuffer.  Move computation of common-string-length
-       into one cond.  Start putting faces only when common-string-length>=0.
-       Add condition to put completions-common-part when
-       common-string-length>0.
-
-       * complete.el (PC-do-completion): Remove `(equal (point) beg)' to
-       place point at the first different character in the minibuffer
-       even if this position is at the beginning of the minibuffer.
-
-       * info.el (Info-read-node-name-1): In completion-base-size-function's
-       lambda return 1 if common-substring or minibuffer-completion-contents
-       starts with (, and 0 otherwise.
-
-       * emacs-lisp/crm.el (crm-minibuffer-completion-help):
-       Use `crm-current-element' for second arg of `display-completion-list'.
-
-2005-12-16  Klaus Zeitler  <kzeitler@lucent.com>
-
-       * files.el (set-auto-mode): Look for an interpreter specified on
-       the first line also if search for mode specification succeeded,
-       but the mode is not known.
-
-2005-12-16  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-tags-match-list-sublevels): New option.
-       (org-open-at-point): Implement tag searches as links.
-       (org-fit-agenda-window, org-get-buffer-tags, org-get-tags)
-       (org-make-tags-matcher, org-scan-tags, org-activate-tags): New funs.
-       (org-tags-sparse-tree, org-tags-view, org-set-tags)
-       (org-agenda-dispatch): New commands.
-       (org-use-tag-inheritance, org-tags-column): New options.
-       (org-tab-follows-link, org-return-follows-link): New options.
-       (org-tags): New customize group.
-       (org-start-icalendar-file): Get local time zone.
-       (org-tags-completion-function): New function.
-       (org-set-font-lock-defaults): Make sure links will also be
-       highlighted inside headlines.
-
-2005-12-16  Mark Plaksin  <happy@usg.edu>  (tiny change)
-
-       * term.el (term-emulate-terminal):
-       Let term-handle-ansi-terminal-messages override what Bash says about
-       its current directory.
-
-2005-12-16  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
-
-       * bindings.el (last-buffer): Move to simple.el.
-       * simple.el (last-buffer): Move here.
-       (get-next-valid-buffer): New function.
-       (next-buffer): Use frame-local buffer list, maintain buried buffer list.
-       (prev-buffer): Ditto.  Rename to `previous-buffer'.
-
-       * menu-bar.el (menu-bar-update-buffers): Update uses of `prev-buffer'.
-       * bindings.el (global-map): Ditto.
-
-2005-12-15  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el: Introductory comment change.
-       (custom-magic-alist): Change message string for the `rogue' state.
-
-2005-12-15  Richard M. Stallman  <rms@gnu.org>
-
-       * tooltip.el: Delete defcustom variable :tag names.
-
-       * complete.el (partial-completion-mode): Doc fix.
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       Use save-excursion to ensure we don't move backward in the
-       search loop, not even one character.
-       (flyspell-delete-all-overlays): Use remove-overlays directly.
-
-       * textmodes/ispell.el (ispell-current-personal-dictionary): New var.
-       (ispell-start-process): Set that variable.
-       Clear ispell-buffer-local-name.
-       (ispell-internal-change-dictionary):
-       Set ispell-current-dictionary after killing process.
-       (ispell-buffer-local-dict):
-       Don't set spell-personal-dictionary after killing process.
-       (ispell-buffer-local-words): Don't clear out ispell-buffer-local-name.
-       (ispell-tex-skip-alists, ispell-html-skip-alists)
-       (ispell-skip-region-alist): Mark as risky.
-
-       * net/newsticker.el (newsticker--retrieval-timer-list)
-       (newsticker--display-timer, newsticker-running-p)
-       (newsticker-ticker-running-p): Definitions moved up.
-
-2005-12-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-many-windows): Echo new state in minibuffer.
-
-2005-12-15  David Ponce  <david@dponce.com>
-
-       * recentf.el (recentf-dialog-goto-first): Fix missing error condition.
-       (recentf-edit-list, recentf-open-files): Signal an error when
-       there is no recent file.
-
-2005-12-14  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * textmodes/texinfmt.el (texinfo-format-region): Set buffer to
-       read-only except for texinfo-format-region evaluation.
-
-2005-12-14  Richard M. Stallman  <rms@gnu.org>
-
-       * vc.el (vc-default-previous-version, vc-default-next-version)
-       (vc-do-command): Doc fixes.
-
-2005-12-14  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-expand-strings)
-       (bibtex-autokey-expand-string, bibtex-name-part)
-       (bibtex-entry-type-whitespace, bibtex-entry-type-str)
-       (bibtex-any-entry-maybe-empty-head, bibtex-string-type)
-       (bibtex-preamble-prefix, bibtex-string-empty-key): New variables.
-       (bibtex-entry-type, bibtex-entry-head): Match only valid entries.
-       (bibtex-entry-postfix, bibtex-known-entry-type-re)
-       (bibtex-valid-entry-re, bibtex-any-valid-entry-re)
-       (bibtex-valid-entry-whitespace-re, bibtex-empty-field-re)
-       (bibtex-field-name-for-parsing, bibtex-remove-delimiters-string)
-       (bibtex-beginning-of-last-entry): Remove.
-       (bibtex-parse-field-name): Use bibtex-field-name.  Issue error
-       message if comma is missing but buffer is read-only.
-       (bibtex-parse-field-text): Handle whitespaces at the end of field
-       text.  Return 3-element list with beginning and end of field text
-       and end of field.
-       (bibtex-end-of-text-in-field, bibtex-end-of-field): Change accordingly.
-       (bibtex-parse-field): Remove arg name.  Use bibtex-field-name.
-       (bibtex-search-forward-field, bibtex-search-backward-field):
-       Search always delimited by limits of entry.  Use more efficient
-       search algorithms.
-       (bibtex-name-in-field): Use bibtex-start-of-name-in-field and
-       bibtex-end-of-name-in-field.
-       (bibtex-text-in-field-bounds): Handle BibTeX strings when
-       extracting the content of a field.
-       (bibtex-text-in-field): Use search limits.
-       (bibtex-parse-string-prefix): Handle empty string keys based on
-       bibtex-string-empty-key.
-       (bibtex-parse-string): Fix docstring.
-       (bibtex-text-in-string): Use bibtex-text-in-field-bounds.
-       (bibtex-preamble-prefix, bibtex-strings): New functions.
-       (bibtex-skip-to-valid-entry): Include preceding whitespace in
-       BibTeX entries (consistent with other BibTeX functions).
-       (bibtex-map-entries): Use bibtex-skip-to-valid-entry.
-       (bibtex-search-entry): Fix docstring.  Simplify.
-       (bibtex-flash-head, bibtex-complete-string-cleanup)
-       (bibtex-count-entries, bibtex-sort-buffer): Simplify.
-       (bibtex-beginning-of-first-entry): Use bibtex-skip-to-valid-entry.
-       (bibtex-parse-entry): New optional arg content.
-       (bibtex-format-entry, bibtex-autofill-entry, bibtex-url): Use it.
-       Use bibtex-text-in-field-bounds.
-       (bibtex-print-help-message): Handle BibTeX strings and preambles.
-       (bibtex-end-of-entry): Use bibtex-preamble-prefix and
-       bibtex-parse-string-postfix.
-       (bibtex-find-text-internal): New function.
-       (bibtex-remove-delimiters): Use it.
-       (bibtex-find-text): Use it.  New optional arg help.
-       (bibtex-complete): Handle BibTeX string and preamble entries.
-       (bibtex-Preamble): Fix order of closing delimiters.
-
-2005-12-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc.el (vc-default-revert): New fun.
-
-       * vc-mcvs.el (vc-mcvs-revert): Fix call to vc-default-revert.
-
-2005-12-14  Romain Francoise  <romain@orebokech.com>
-
-       * font-lock.el (font-lock-keywords-alist): Rename `append' to `how'.
-       (font-lock-add-keywords, font-lock-update-removed-keyword-alist):
-       (font-lock-remove-keywords): Likewise.
-
-2005-12-14  Juri Linkov  <juri@jurta.org>
-
-       * log-view.el (log-view-diff): Doc fix.
-
-       * isearch.el (isearch-query-replace): Use (mark) instead of
-       isearch-opoint if mark is active in transient-mark-mode.
-
-2005-12-14  Aaron S. Hawley  <Aaron.Hawley@uvm.edu>
-
-       * isearch.el (isearch-query-replace): Check for isearch-other-end.
-
-2005-12-14  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * progmodes/cpp.el (cpp-face): New widget.
-       (cpp-known-face, cpp-unknown-face, cpp-edit-list): Use it.
-
-2005-12-14  Juri Linkov  <juri@jurta.org>
-
-       * help-macro.el (make-help-screen): Bind `inhibit-read-only' to t
-       around `erase-buffer' and `insert'.
-
-       * descr-text.el (describe-text-properties): Replace buffer name
-       "*Help-2*" with "*Help*<2>".
-       (describe-char): Add functions print-help-return-message,
-       toggle-read-only.  Use help-setup-xref with nil to not store
-       describe-char in help-xref-stack.  Use help-make-xrefs to
-       make [back] button.
-
-       * desktop.el (desktop-minor-mode-table): Add vc-dired-mode with nil.
-
-       * wdired.el (wdired-old-point): New internal variable.
-       (wdired-change-to-wdired-mode): Set it buffer-locally.
-       (wdired-abort-changes): Restore point after aborting changes.
-
-2005-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc.el (vc-do-command): Add a new value t for okstatus.
-
-       * vc-svn.el (vc-svn-registered): Use it to avoid popping up a spurious
-       frame in case of errors.
-
-2005-12-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * menu-bar.el (menu-bar-showhide-fringe-menu): Move "On the Right"
-       so it comes after "On the Left" in the menu.
-
-2005-12-12  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (customize-apropos, customize-apropos-options)
-       (customize-apropos-faces, customize-apropos-groups): Doc fixes.
-
-2005-12-12  Bill Wohler  <wohler@newt.com>
-
-       * vc-svn.el (vc-svn-registered): Fix problem of visiting
-       non-writable Subversion-controlled files by saving window
-       configuration before calling vc-do-command.  vc-do-command calls
-       pop-to-buffer on error which is unexpected during registration.
-
-2005-12-12  Jay Belanger  <belanger@truman.edu>
-
-       * calc/README: Update the summary of changes.
-
-2005-12-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * descr-text.el (describe-char): Rework last fix to solve the problem
-       is the same way it's solved for everything else in that function
-       (i.e. by extracting the info before setting up the *Help* buffer).
-
-2005-12-12  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (version-regexp-alist): Allow space as separator before
-       non-numeric part, e.g. "1.0 alpha".
-       (version-to-list): Interpret .X.Y version as 0.X.Y version.
-
-2005-12-12  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-agenda, org-timeline, org-todo):
-       Implement Logging and the keep-modes setting.
-       (org-get-category): Make sure a string is returned.
-       (org-log-done): New function.
-       (org-log-done, org-closed-string): New options.
-
-2005-12-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * tooltip.el (tooltip-y-offset): Change default to 20.
-
-2005-12-12  Richard M. Stallman  <rms@gnu.org>
-
-       * mouse.el (mouse-drag-vertical-line): Use adjust-window-trailing-edge.
-
-       * frame.el (display-hourglass): Doc fix.
-
-       * help.el (help-for-help-internal): Simplify entry for `a'.
-
-       * info.el (Info-on-current-buffer): Doc fix.
-       (info-insert-file-contents): Don't test (featurep 'jka-compr).
-
-       * startup.el (inhibit-splash-screen): Make this the real name.
-       (inhibit-startup-message): Make this the alias.
-       (command-line): Find only simple.el, and use its directory
-       to fill in other preloaded files' names.
-       (command-line): Deactivate the mark if deactivate-mark is set.
-
-       * international/mule.el (load-with-code-conversion):
-       Bind deactivate-mark.
-
-       * progmodes/compile.el (compilation-error-regexp-alist): Doc fix.
-
-2005-12-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (customize-apropos): Avoid listing an option more
-       than once under different aliases.  No longer list user options
-       that are not defined with defcustom (unless a prefix arg is given).
-       Doc fix.
-       (customize-apropos-options): Doc fix.
-
-2005-12-11  Juri Linkov  <juri@jurta.org>
-
-       * frame.el (set-background-color, set-foreground-color)
-       (set-cursor-color, set-mouse-color, set-border-color):
-       Add explicit prompts to read colors by `facemenu-read-color'.
-       (show-trailing-whitespace, blink-cursor-delay)
-       (blink-cursor-interval, display-hourglass, hourglass-delay):
-       Remove tags.
-       (display-hourglass, hourglass-delay): Doc fix.
-       (cursor-in-non-selected-windows): Capitalize words in tag.
-
-       * faces.el (frame-background-mode): Replace `choice-item' keywords
-       with `const' to not make [default] button.  Change default value tag
-       from `default' to `automatic'.  Doc fix.
-       (trailing-whitespace) <defface>: Change group `whitespace' to
-       `whitespace-faces'.
-
-2005-12-11  Richard M. Stallman  <rms@gnu.org>
-
-       * buff-menu.el (Buffer-menu-sort-column): Not a user variable.
-
-2005-12-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Create keymap for mac-apple-event-map.
-
-2005-12-11  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tooltip.el (tooltip-mode): Move to start of file so that it
-       appears at top of customize buffer.
-
-       * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display):
-       Add the gud groupname.
-       (gud-tooltip-mode): Add the tooltip groupname.
-       (gud-tooltip-echo-area): Add the gud groupname.  Remove tag to
-       avoid conflict with tooltip-use-echo-area.
-
-2005-12-10  Romain Francoise  <romain@orebokech.com>
-
-       * help.el (help-for-help-internal): Add `r' in doc string.
-
-2005-12-10  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * align.el (align-regexp, align-highlight-rule):
-       Use region-beginning and region-end instead of point and mark, so that
-       repetition (with `repeat-complex-command') recomputes the region
-       bounds.
-
-2005-12-10  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * window.el (bw-get-tree, bw-get-tree-1, bw-find-tree-sub)
-       (bw-find-tree-sub-1, bw-l, bw-t, bw-r, bw-b, bw-dir, bw-eqdir)
-       (bw-refresh-edges, bw-adjust-window, bw-balance-sub): New functions.
-       (balance-windows): Rewrite using the above new functions.
-
-2005-12-10  David Koppelman  <koppel@ece.lsu.edu>
-
-       * hi-lock.el (hi-lock-mode): Rename from hi-lock-buffer-mode;
-       react if global-hi-lock-mode seems intended.
-       (global-hi-lock-mode): Renamed from hi-lock-mode.
-       (hi-lock-archaic-interface-message-used)
-       (hi-lock-archaic-interface-deduce): New variables.
-       (turn-on-hi-lock-if-enabled, hi-lock-line-face-buffer)
-       (hi-lock-face-buffer, hi-lock-face-phrase-buffer)
-       (hi-lock-find-patterns, hi-lock-font-lock-hook):
-       Replace hi-lock-buffer-mode with hi-lock-mode.
-
-2005-12-10  Kevin Rodgers  <ihs_4664@yahoo.com>  (tiny change)
-
-       * emacs-lisp/lisp.el (lisp-complete-symbol): Regenerate the
-       completion list, even after a partial completion has been
-       inserted in the current buffer.  If there are more than 1
-       completion, redisplay the *Completions* buffer; if the
-       completion is unique, delete the *Completions* window.
-
-2005-12-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * mail/rmail.el (rmail-next-same-subject): Handle multiple "Re: "
-       strings and long subject lines that were broken into multiple
-       lines at arbitrary places.  Handle subjects that have "Re: " in
-       the middle.
-
-2005-12-10  John W. Eaton  <jwe@octave.org>
-
-       * emacs/octave-mod.el (octave-electric-space): Don't indent
-       comments or strings if octave-auto-indent is nil.
-
-2005-12-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Require url when compiling.
-       Call mac-process-deferred-apple-events after loading init files.
-       (mac-apple-event-map): New defvar.  Define event handlers in it.
-       (core-event, internet-event): New Apple event class symbols.
-       (open-application, reopen-application, open-documents)
-       (print-documents, open-contents, quit-application)
-       (application-died, show-preferences, autosave-now, get-url):
-       New Apple event ID symbols.
-       (about): New HICommand ID symbol.
-       (mac-event-spec, mac-event-ae): New macros.
-       (mac-ae-parameter, mac-ae-list, mac-bytes-to-integer)
-       (mac-ae-selection-range, mac-ae-text-for-search)
-       (mac-ae-open-documents, mac-ae-text, mac-ae-get-url): New functions.
-       (mac-application-menu-map): Remove keymap.  Handlers for HICommand
-       and Services menu events are now defined in mac-apple-event-map.
-       (mac-drag-n-drop): Remove selection range handling.
-
-2005-12-10  Kenichi Handa  <handa@m17n.org>
-
-       * simple.el (zap-to-char):
-       * isearch.el (isearch-process-search-char): Translate CHAR by
-       translation-table-for-input.
-
-2005-12-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * foldout.el (foldout-exit-fold): Properly hide subtree.
-
-2005-12-09  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * files.el (save-buffer):
-       * international/ucs-tables.el (ucs-set-table-for-input):
-       * mail/mail-extr.el (mail-extract-address-components):
-       * mail/sendmail.el (mail-mode): Reformat doc string.
-
-2005-12-09  Juri Linkov  <juri@jurta.org>
-
-       * isearch.el (isearch-highlight): Change main overlay priority
-       from 1 to 1001.  Simplify.
-       (isearch-lazy-highlight-update): Change lazy overlay priority
-       from 0 to 1000.
-
-       * replace.el (replace-highlight): Change overlay priority from
-       1 to 1001.
-
-       * textmodes/ispell.el (ispell-highlight-spelling-error-overlay):
-       Change overlay priority from 1 to 1001.  Reuse existing overlay.
-
-       * compare-w.el (compare-windows-highlight): Change overlay
-       priority from 1 to 1000.
-
-       * menu-bar.el (menu-bar-edit-menu): Add listp around
-       pending-undo-list to disable menu item "undo" when pending
-       undo list is empty.
-
-       * locate.el (locate): Disable undo in *Locate* buffer.
-
-2005-12-09  Kim F. Storm  <storm@cua.dk>
-
-       * mail/smtpmail.el (smtpmail-via-smtp): Disable undo in SMTP buffer.
-
-2005-12-09  David Ponce  <david@dponce.com>
-
-       * recentf.el: Improvement of the menu code.
-       (recentf-enabled-p): Move before first use.  Use `kill-emacs-hook'
-       instead of menu hook.
-       (recentf-show-menu, recentf-hide-menu): New functions.
-       (recentf-menu-customization-changed, recentf-mode): Use them.
-       (recentf-menu-action, recentf-max-menu-items)
-       (recentf-menu-open-all-flag, recentf-menu-append-commands-flag)
-       (recentf-arrange-by-rule-others)
-       (recentf-arrange-by-rules-min-items)
-       (recentf-arrange-by-rule-subfilter): Don't use
-       `recentf-menu-customization-changed'.
-       (recentf-arrange-rules): Likewise.  Accept functions to compute
-       sub-menu titles.
-       (recentf-menu-filter): Likewise.  Doc fix.
-       (recentf-menu-value-shortcut): Doc fix.
-       (recentf-dump-variable): Quote atom value.
-       (recentf-make-menu-items): Update to use it as a menu filter.
-       (recentf-match-rule): New function.
-       (recentf-arrange-by-rule): Use it.
-       (recentf-indirect-mode-rule): New function.
-       (recentf-build-mode-rules): Use it.
-       (recentf-dir-rule): New function.
-       (recentf-arrange-by-dir): Use it.
-       (recentf-filter-changer-current): Rename from
-       `recentf-filter-changer-state'.  All references updated.
-       (recentf-filter-changer-alist): Update filter names.
-       (recentf-filter-changer-select): New function.
-       (recentf-filter-changer): Use it.  Make a sub-menu from filters
-       available in `recentf-filter-changer-alist'.
-       (recentf-data-cache, recentf-clear-data)
-       (recentf-update-menu): Remove.  All references updated.
-       (recentf-match-rule-p, recentf-build-dir-rules)
-       (recentf-filter-changer-goto-next)
-       (recentf-filter-changer-get-current)
-       (recentf-filter-changer-get-next): Remove.
-
-2005-12-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (custom-buffer-create-internal): Relabel the whole
-       buffer "Reset" button to "Reset to Current" for consistency with
-       the State buttons.
-
-2005-12-08  John Paul Wallington  <jpw@pobox.com>
-
-       * ibuf-ext.el (define-ibuffer-filter filename):
-       If `dired-directory' is a list then really use its car.
-
-2005-12-08  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-rect.el (cua--rectangle-aux-replace):
-       Fix indention of text on right side of replaced rectangle.
-
-2005-12-09  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-buttons, gud-tooltip-tips):
-       No need to check gud-comint-buffer is bound.
-       (gdb): Prevent multiple debugging when first session uses gdba.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       CC Mode update to 5.31.
-
-       * progmodes/cc-subword.el: Add a dummy `c-subword-mode' for
-       Emacsen which lack `define-minor-mode'.  (Currently Emacs <21.
-       We might do this function properly in the future).
-
-       * progmodes/cc-cmds.el, cc-defs.el, cc-styles.el, cc-vars.el:
-       New macros c-sentence-end and c-default-value-sentence end, to cope
-       with Emacs 22's new function `sentence-end'.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el (c-show-syntactic-information): Solve the
-       compat issue using `c-put-overlay' and `c-delete-overlay'.
-
-       * progmodes/cc-defs.el (c-put-overlay, c-delete-overlay):
-       New compat macros to handle overlays/extents.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-fix.el: Add definitions of the macros push and pop
-       (for GNU Emacs 20.4).
-
-       * progmodes/cc-defs.el:
-       (i): Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4).
-
-       * progmodes/cc-cmds.el (c-show-syntactic-information): Change the
-       highlighting mechanism so it will work in XEmacs too.
-
-       * progmodes/cc-defs.el: Insert c-int-to-char.
-
-       * progmodes/cc-langs.el (c-nonsymbol-token-char-list): Insert a
-       call to the new macro c-int-to-char.  This solves XEmacs's
-       regarding characters as different from integers.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-fonts.el (c-make-syntactic-matcher):
-       New internal helper.
-
-       (c-cpp-matchers, c-basic-matchers-before): Use the `eval'
-       construct to make the indirect face lookup work in XEmacs.
-
-       (c-cpp-matchers): Append the negation char face to the existing
-       fontification, so that the cpp face doesn't disappear.
-       Use `c-make-syntactic-matcher' to avoid negation chars in comments
-       and strings.
-
-       * progmodes/cc-fonts.el (c-negation-char-face-name): New variable
-       to map to `font-lock-negation-char-face' in emacsen where it exists.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-mode.el: Bind c-subword-mode to C-c C-w.
-
-       * progmodes/cc-subword.el, cc-cmds.el, cc-mode.el:
-       Rename "c-subword-move-mode" as "c-subword-mode".
-
-       * progmodes/cc-mode.el: Added tty suitable bindings for C-c
-       <delete> and C-c C-<delete>.  (To the c-hungry- delete functions).
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-mode.el: Added autoload directive for
-       `c-subword-move-mode' for use in older emacsen.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-mode.el:
-       (i): Insert a binding for C-c C-backspace into
-       c-bind-special-erase-keys which works in TTYs.
-       (ii): Make sure that when file styles are used, any explicitly
-       given style variables take priority over those in the style.
-       Do this by calling `hack-local-variables' a second time.
-
-       * progmodes/cc-vars.el: Add language specific customization
-       widgets for AWK to c-doc-comment-style, c-require-final-newline
-       and c-default-style.  Add a defcustom for awk-mode-hook.
-       Give c-syntactic-element and c-syntactic-context doc-strings by
-       directly setting their `variable-documentation' propery.
-       This allows Emacs 22.1 to read these with C-h v.
-
-       * progmodes/cc-awk.el: Apply a tidy-up patch (from Stefan Monnier).
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-fonts.el, cc-vars.el
-       (gtkdoc-font-lock-doc-comments, gtkdoc-font-lock-doc-protection)
-       (gtkdoc-font-lock-keywords): GtkDoc patterns contributed by
-       Masatake YAMATO.
-
-       (c-doc-comment-style): Made GtkDoc default in C mode.
-
-       * progmodes/cc-mode.el: Fixed key bindings for C-c C-<backspace>
-       and C-c C-<delete>.
-
-       (c-bind-special-erase-keys): New function for use on
-       `normal-erase-is-backspace-hook' to bind C-c C-<delete> correctly.
-
-       * progmodes/cc-cmds.el (c-hungry-delete): New function to fix
-       <delete> key behavior in XEmacs according to `delete-forward-p'.
-       C.f. `c-electric-delete'.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-mode.el: Give c-hungry-backspace and
-       c-hungry-delete-forward permanent key bindings.
-
-       * progmodes/cc-cmds.el (c-electric-semi&comma):
-       Bind c-syntactic-context for calls to "criteria functions", for
-       consistency with other calls to user functions.
-
-       * progmodes/cc-cmds.el (c-indent-command): Expunge use of
-       `current-prefix-arg', since this might be the prefix arg to a
-       command which calls c-indent-command as a function.  Change the
-       interactive spec from "p" to "P".
-
-       * progmodes/cc-styles.el: Amend the doc-string of c-set-style, in
-       reponse to a report from Joseph Kiniry <kiniry@acm.org> that it
-       was difficult to understand.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-engine.el (c-on-identifier): Fix bug when at the
-       first char of an identifier.
-
-       * progmodes/cc-engine.el (c-on-identifier): Handle the "operator
-       +" syntax in C++.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el (c-mask-paragraph): Correct, so that
-       auto-fill doesn't split a c-comment's last word from a hanging
-       "*/" when a space is typed between them after fill-column.
-
-       * progmodes/cc-defs.el: New macro c-delete-and-extract-region.
-
-       * progmodes/cc-styles.el (c-set-style)
-       (c-setup-paragraph-variables): Abort the command if we're not in a
-       CC Mode buffer.
-
-       * progmodes/cc-align.el (c-lineup-C-comments): Correct indentation
-       with blank comment-prefix, and a blank line as the comment's
-       second line.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-fonts.el (c-cpp-matchers, c-basic-matchers-before):
-       Incorporate the patterns added in the Emacs development branch
-       for the new Emacs 22 face `font-lock-negation-char-face'.
-
-       * progmodes/cc-fonts.el (c-invalid-face-name): Use "red1" instead
-       of "red" since it stands out better in xterms and DOS terminals.
-
-       * progmodes/cc-engine.el (c-literal-faces):
-       Add `font-lock-comment-delimiter-face' which is new in Emacs 22.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el: Make C-c C-a (`c-toggle-auto-newline')
-       forcibly enable c-electric-flag.
-
-       * progmodes/cc-vars.el, cc-cmds.el: New clean-up
-       `comment-close-slash' on c-electric-slash: if enabled, typing `/' just
-       after the comment-prefix of a C-style comment will close that comment.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-fonts.el (c-basic-matchers-before)
-       (c-complex-decl-matchers): Fix the "not-arrow-prefix" regexp used
-       in Pike.
-
-       * progmodes/cc-langs.el (c-other-op-syntax-tokens): Only C++ has
-       digraphs.
-
-       * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el
-       (c-cpp-message-directives, c-cpp-include-directives)
-       (c-opt-cpp-macro-define, c-opt-cpp-macro-define-start)
-       (c-cpp-expr-directives): Introduce new language constants to
-       control cpp syntax in a cleaner way.
-
-       (c-cpp-expr-functions): Rename from c-cpp-defined-fns.
-
-       (c-cpp-matchers, c-forward-to-cpp-define-body): Use them.
-
-       * progmodes/cc-langs.el, cc-fonts.el (c-string-escaped-newlines)
-       (c-multiline-string-start-char): New language constants and
-       variables to specify how newlines in string literals work.
-
-       (c-font-lock-invalid-string): Use them.
-
-       * progmodes/cc-cmds.el (c-try-one-liner): Robustness fix if an
-       unbalanced close brace is entered.  Optimization by avoiding going
-       back over arbitrarily large blocks.  Removed hints that this
-       function only would be relevant/useful in AWK.
-
-       (c-electric-brace): Indent syntactically after the cleanups since
-       lineup functions might do it differently then.
-
-       * progmodes/cc-engine.el, cc-langs.el
-       (c-opt-op-identifier-prefix): New language constant and variable.
-
-       (c-just-after-func-arglist-p, c-after-special-operator-id)
-       (c-search-decl-header-end, c-inside-bracelist-p): Use it.
-
-       * progmodes/cc-align.el, cc-engine.el
-       (c-after-special-operator-id): New helper to handle C++ operator
-       identifiers.
-
-       (c-lineup-topmost-intro-cont, c-just-after-func-arglist-p)
-       (c-guess-basic-syntax): Handle C++ operator identifiers in
-       declarations.
-
-       * progmodes/cc-langs.el (c-assignment-operators): Add the
-       trigraph version of ^= too.
-
-       * progmodes/cc-langs.el (c-assignment-operators): Add the
-       trigraph version of |= in C++.
-
-       * progmodes/cc-fonts.el (c-font-lock-declarators):
-       Handle `c-decl-hangon-kwds' after the identifier name.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): When deciding
-       whether an arglist is "nonempty", ignore a comment after the open
-       paren if it isn't followed by a non-comment token on the same line.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): Case 4:
-       Enable heuristics below the point to cope with classes inside special
-       brace lists in Pike.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el: Amend c-point-syntax to handle macros.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-guess.el (cc-guess-install): New function to
-       install an already guessed style in another buffer.
-
-       * progmodes/cc-defs.el (c-tentative-buffer-changes): No longer
-       sets `inhibit-read-only' - `c-save-buffer-state' should be used
-       anyway if the change always is undone.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       Implement togglable electricity:
-
-       * progmodes/cc-defs.el: Enhance c-save-buffer-state's doc-string,
-       saying when it should be used.
-
-       * progmodes/cc-engine.el: Add the new buffer-local variable,
-       c-electric-flag.
-
-       * progmodes/cc-langs.el: Change the name of c-toggle-auto-state to
-       c-toggle-auto-newline.
-
-       * progmodes/cc-mode.el: Rename c-toggle-auto-state to
-       c-toggle-auto-newline.  Remove the binding for
-       c-toggle-auto-hungry-state.  Add the binding C-c C-l for the new
-       c-toggle-electric-state.
-
-       * progmodes/cc-vars.el: Make c-syntactic-indentation buffer local.
-
-       * progmodes/cc-cmds.el: Add `c-bytecomp-defun's for
-       c-\(forward\|backward\)-subword.
-       (c-update-modeline): Add the new modeline flag `l' for
-       `c-electric-flag'.  Make the auto-newline flag `a' dependent on `l'.
-       (c-toggle-auto-state): Rename it to `c-toggle-auto-newline'.
-       Make the old name an alias of the new name.
-       (c-toggle-electric-state): New function.
-       (c-electric-\(pound\|brace\|slash\|star\|semi&comma\|colon\|lt-gt\|paren\|continued-statement\)):
-       Adapt these functions to do electric things only when
-       c-electric-flag is non-nil.
-       (c-point-syntax, c-brace-newlines, c-try-oneliner): Extract these
-       new functions from c-electric-brace.
-       (c-point-syntax): Add a check for "virtual semicolons" in AWK
-       mode, so that the tentative extra newline doesn't change the
-       syntax of the following brace.
-       (c-electric-brace): Restructure by extracting the above functions.
-       Tidy up the coding somewhat.
-       (c-electric-semi&comma, c-electric-colon, c-electric-paren):
-       restructure a bit.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el (c-show-syntactic-information): Show the
-       anchor position(s) using faces.  Thanks to Masatake YAMATO for the idea.
-
-       * progmodes/cc-mode.el, cc-cmds.el, cc-defs.el, cc-engine.el
-       (c-submode-indicators): Change name from `c-auto-hungry-string'
-       since it's now used to track another submode.
-
-       (c-update-modeline): Convert to function and extended to check
-       `c-subword-move-mode'.
-
-       (c-forward-into-nomenclature, c-backward-into-nomenclature):
-       Convert to compat aliases for `c-forward-subword' and
-       `c-backward-subword'.
-
-       * progmodes/cc-subword.el: New functions and minor mode to handle
-       SillyCapsedStyleIndentifiers, contributed by Masatake YAMATO:
-
-       (c-forward-subword, c-backward-subword, c-mark-subword)
-       (c-kill-subword, c-backward-kill-subword, c-transpose-subwords)
-       (c-capitalize-subword, c-downcase-subword, c-upcase-subword):
-       Functions corresponding to the standard word handling functions.
-
-       (c-subword-move-mode): Minor mode that replaces all the standard
-       word handling functions with their subword equivalences.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-vars.el (c-cleanup-list): Insert a customization
-       entry for one-liner-defun.
-
-       * progmodes/cc-defs.el: Give c-tentative-buffer-changes its own
-       name in its def-edebug-spec.
-
-       * progmodes/cc-cmds.el (c-electric-brace): Make the
-       one-liner-defun clean-up work with empty-defun-braces.  o-l-d now
-       compacts space before a comment, if this will make things fit on
-       one line.
-
-       Introduce an "awk" style, mainly for auto-newline and clean-ups.
-
-       * progmodes/cc-align.el: New function c-snug-1line-defun-close.
-
-       * progmodes/cc-cmds.el: In c-electric-brace, add code for new
-       clean-up one-liner-defun.
-
-       * progmodes/cc-styles.el: Add the new "awk" style.
-
-       * progmodes/cc-vars.el: Add description of one-liner-defun to
-       c-cleanup-list's doc-string.  New user options,
-       c-max-one-liner-length.  In c-default-style, set the default style
-       for AWK to "awk".
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-engine.el (c-forward-label): Fix fontification of
-       macros inside labels.
-
-       * progmodes/cc-engine.el (c-looking-at-bos): Obsolete in favor of
-       `c-at-statement-start-p' and `c-at-expression-start-p'.
-
-       * progmodes/cc-defs.el (c-tnt-chng-record-state): Don't signal an
-       error if the mark isn't set.
-
-       * progmodes/cc-engine.el (c-guess-continued-construct)
-       (c-guess-basic-syntax): Use `c-forward-decl-or-cast-1' to more
-       accurately detect functions inside functions.
-
-       * progmodes/cc-engine.el (c-at-expression-start-p): New function
-       like `c-at-statement-start-p' that additionally recognizes commas
-       and expression parentheses as delimiters.
-
-       * progmodes/cc-engine.el (c-looking-at-inexpr-block): Add flag
-       to avoid heuristics that doesn't work for unclosed blocks.
-       (c-at-statement-start-p): New function.
-
-       * progmodes/cc-engine.el, cc-fonts.el: Fixes in handling of
-       Objective-C directives, e.g. directives spanning lines should work
-       reasonably well now.
-
-       (c-put-c-type-property, c-clear-c-type-property): New helpers.
-
-       (c-forward-objc-directive): New function to move over any ObjC
-       directive.
-
-       (c-just-after-func-arglist-p, c-guess-basic-syntax)
-       (c-basic-matchers-before): Use it.
-
-       (c-font-lock-objc-iip-decl): Remove.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): Some improvement
-       in the template arglist recognition.
-
-       * progmodes/cc-styles.el (c-style-alist): Fix several
-       inconsistencies in the Whitesmith style.
-
-       * progmodes/cc-align.el (c-lineup-after-whitesmith-blocks):
-       New lineup function to get lines after Whitesmith style blocks
-       correctly indented.
-
-       (c-lineup-whitesmith-in-block): Back out the compensation for
-       opening parens since it's done using `add' lists in the style
-       definition instead.  Don't use the anchor position since it varies
-       too much between the syntactic symbols. :P
-
-       * progmodes/cc-vars.el (c-valid-offset): Update.
-
-       * progmodes/cc-engine.el (c-evaluate-offset): Extend to handle
-       lists where the offsets are combined according to several
-       different methods: `first', `min', `max', and `add'.
-       Report offset evaluation errors with `c-benign-error' so that some kind
-       of reindentation still is done.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax):
-       Anchor `arglist-intro' the same way as `arglist-cont-nonempty' and
-       `arglist-close'.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): Fix similar
-       situations for `arglist-cont-nonempty' and `arglist-close'.
-
-       * progmodes/cc-langs.el (c-opt-identifier-concat-key-depth): New const.
-
-       * progmodes/cc-defs.el: Use `cc-bytecomp-fboundp' and
-       cc-bytecomp-boundp' in a number of places.
-
-       * progmodes/cc-engine.el (c-beginning-of-statement-1): Fix a
-       macro related issue.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-awk.el: Change the terminology of regexps: A char
-       list is now [asdf], a char class [:alpha:].
-       Include code for char classes.
-       Set c-awk-NL-prop on lines ending in open strings.  (Bug fix.)
-       Add character classes (e.g. "[:alpha:]") into AWK Mode's regexps.
-
-       Remove (nearly all of) the cruft associated with AWK Mode's former
-       concept of "virtual semicolons":
-
-       Adapt c-beginning-of-statement, c-end-of-statement (together with
-       subfunctions) to use the new notion of "virtual semicolon" in
-       place of the old awkward special handling for AWK.  There remains
-       much cruft in cc-awk.el, cc-cmds.el and cc-engine.el to clear out.
-       * progmodes/cc-cmds.el:
-       (c-ascertain-adjacent-literal): In the backwards direction, now
-       recognises AWK regexp delimiters as string delimiters.
-       (c-after-statement-terminator-p): Adapt for virtual semicolons;
-       check more rigorously for "end of macro".
-       (c-back-over-illiterals, c-forward-over-illiterals): Adapt for
-       virtual semicolons;
-       (c-beginning-of-statement): Adapt for virtual semicolons; Separate
-       out the code for forward movement into ...
-       (c-end-of-statement): Now contains the code for forward movement,
-       adapted for virtual semicolons.
-
-       * progmodes/cc-engine.el:
-       (c-ws*-string-limit-regexp): New regexp.
-       (c-forward-single-comment, c-backward-single-comment): Comment out
-       the (now redundant) "special" AWK stuff.
-
-       * progmodes/cc-styles.el, cc-vars.el: Change the settings of
-       c-string-par-start, c-string-par-separate to be more like Text
-       Mode than Fundamental Mode.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-fonts.el (c-font-lock-declarations): Always narrow
-       to the fontified region so that fontification doesn't occur
-       outside it (could happen e.g. when fontifying a line with an
-       unfinished declaration).
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-awk.el: Move regexps for analysing AWK code to near the
-       start of the file.  ^L now separate sections of the file.
-       (c-awk-non-eol-esc-pair-re, c-awk-blank-or-comment-line-re)
-       (c-awk-one-line-possibly-open-string-re)
-       (c-awk-regexp-one-line-possibly-open-char-class-re)
-       (c-awk-one-line-possibly-open-regexp-re)
-       (c-awk-one-line-non-syn-ws*-re): New defonsts.
-       (c-awk-at-vsemi-p, c-awk-vsemi-status-unknown-p): New functions.
-
-       Amend the concept of "virtual semicolons" (in the indentation
-       engine) for languages like AWK, such that they are now
-       conceptually attached to end of the last token of a statement, not
-       the end of the line.  (In AWK Mode, however, the pertinent text
-       property is still physically set on the EOL.)  Remove the specific
-       tests for awk-mode, thus facilitating the introduction of other
-       language modes where EOLs can end statements.
-       (Note: The funtionality in cc-cmds.el, specifically
-       c-beginning/end-of-statement has yet to be amended.)
-
-       * progmodes/cc-defs.el (c-at-vsemi-p, c-vsemi-status-unknown-p):
-       New macros.
-
-       * progmodes/cc-langs.el: Added `#' into AWK Mode's value of
-       c-stmt-delim-chars.  New c-lang-defvars: c-at-vsemi-p-fn,
-       c-vsemi-status-unknown-p-fn (in a new page).
-
-       * progmodes/cc-engine.el: In c-beginning-of-statement-1,
-       c-crosses-statement-barrier-p, c-guess-basic-syntax, replace
-       numerous awkward forms like
-       (if (c-major-mode-is 'awk-mode) (c-awk-prev-line-incomplete-p))
-       with (c-at-vsemi-p).  Fix a few typos.  In c-guess-basic-syntax, new
-       variable before-ws-ip, the place just after char-before-ip appears.
-
-       * progmodes/cc-mode.el: Fix what's almost a semantic ambiguity in
-       a comment.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el (c-electric-brace): Clean up using
-       `c-tentative-buffer-changes'.
-
-       * progmodes/cc-defs.el (c-region-is-active-p): Simplify and
-       convert to macro to choose between Emacs and XEmacs at compile time.
-
-       (c-set-region-active): New set counterpart to `c-region-is-active-p'.
-
-       (c-tentative-buffer-changes): New macro to handle temporary buffer
-       changes in a convenient way.
-
-       (c-tnt-chng-record-state, c-tnt-chng-cleanup): Internal helpers
-       for `c-tentative-buffer-changes'.
-
-       * progmodes/cc-engine.el (c-looking-at-inexpr-block): Tighten up
-       the checks for paren sexps between the point and the keyword, to
-       avoid some false alarms.
-
-       * progmodes/cc-engine.el, cc-langs.el (c-looking-at-inexpr-block):
-       Fixed a situation where an error could be thrown for unbalanced
-       parens.  Changed to make use of c-keyword-member' to avoid some
-       repeated regexp matches.
-
-       (c-opt-lambda-key, c-opt-inexpr-block-key, c-opt-inexpr-class-key):
-       These language variable are no longer necessary.
-
-       (c-block-stmt-kwds): New language constant used by
-       c-looking-at-inexpr-block'.
-
-       (c-guess-basic-syntax): Remove an optional check that looked at
-       the existence of the now removed language variables.
-
-       * progmodes/cc-engine.el (c-fdoc-shift-type-backward)
-       (c-forward-decl-or-cast-1): Fix invalid recognition of C++ style
-       object instantiation expressions as declarations in some contexts.
-       This bug only affected languages where the declarator can't be
-       enclosed in parentheses.
-
-       * progmodes/cc-styles.el (c-style-alist): Fix the GNU style to
-       insert newlines before and after substatement braces.
-
-       * progmodes/cc-engine.el: Improved the heuristics for recognizing
-       function declaration headers and the handling of C++ style member
-       init lists.
-
-       (c-just-after-func-arglist-p): Rewritten to use
-       `c-forward-decl-or-cast-1'.  Now behaves a bit differently too.
-
-       (c-beginning-of-member-init-list): Remove since it isn't used anymore.
-
-       (c-guess-basic-syntax): Adapt case 5B for the new
-       `c-just-after-func-arglist-p'.  Merge cases 5B.1 and 5B.3.
-       Remove cases 5D.1 and 5D.2 since they aren't trigged anymore (case 5B.1
-       covers all cases now).
-
-       * progmodes/cc-defs.el (c-point): Add `bosws' and `eosws'.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el, cc-styles.el, cc-vars.el: New variables
-       c-string-par-start/separate c-sentence-end-with-esc-eol,
-       initialised in c-setup-paragraph-variables, used in string
-       scanning subroutines of c-beginning-of-statement.
-
-       * progmodes/cc-cmds.el (c-electric-brace): Don't delete a comment
-       which precedes the newly inserted `{'.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-engine.el, cc-langs.el: Rewrote the recognition
-       function for declaration level blocks.  It should now cope with
-       templates better and also be a lot more comprehensible.
-
-       (c-looking-at-decl-block): The new function.
-
-       (c-search-uplist-for-classkey): The old one.  It's now a wrapper
-       for compatibility.
-
-       (c-add-class-syntax, c-guess-continued-construct)
-       (c-guess-basic-syntax): Adapt for `c-looking-at-decl-block'.
-
-       (c-decl-block-key): Change to tell apart ambiguous and
-       unambiguous keywords.  Pike specials are now handled directly in
-       the code instead.
-
-       (c-block-prefix-disallowed-chars, c-block-prefix-charset):
-       New language constants and variables to make the backward skip in
-       `c-looking-at-decl-block' as tight as possible.
-
-       (c-nonsymbol-token-char-list): New language constant.
-
-       * progmodes/cc-engine.el (c-backward-<>-arglist): New function to
-       find balanced template arglists backwards.
-
-       * progmodes/cc-defs.el (c-make-bare-char-alt): New helper for
-       making char classes for `c-syntactic-skip-backward'.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): Simplify case
-       16D - can't be a class-close at that point.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax)
-       (c-add-class-syntax): Don't narrow out the enclosing declaration
-       level.  This makes everything a lot easier, and it was actually
-       only four small places that needed it to work.  Some places that
-       previously did `widen' are removed now, which has the effect that
-       `c-guess-basic-syntax' never will look at things outside the
-       current narrowment now.  The anchor position for `topmost-intro'
-       is affected by this, but it was so bogus it was basically useless
-       before, and now it's equally bogus but in a slightly different way.
-
-       (c-narrow-out-enclosing-class): Gone.
-
-       (c-most-enclosing-brace, c-least-enclosing-brace): Don't filter to
-       the narrowed region.
-
-       (c-least-enclosing-brace): Remove silly optional argument.
-
-       * progmodes/cc-engine.el (c-beginning-of-decl-1): Fix bug where
-       the point could be left directly after an open paren when finding
-       the beginning of the first decl in the block.
-
-       * progmodes/cc-engine.el, cc-fonts.el (c-forward-keyword-clause):
-       Specify which submatch to use.
-
-       * progmodes/cc-langs.el (c-symbol-start): Include `@' in ObjC.
-
-       (c-decl-start-re): No longer any need for special treatment of
-       ObjC due to the above.
-
-       (c-other-block-decl-kwds): Handle "extern" in ObjC too since it
-       presumably follows C in that regard.
-
-       * progmodes/cc-langs.el (c-identifier-ops, c-after-id-concat-ops):
-       New language constants to specify operator tokens inside
-       identifiers in a more high level way.
-
-       (c-opt-identifier-prefix-key): New internal language constant.
-
-       (c-opt-identifier-concat-key, c-opt-after-id-concat-key)
-       (c-identifier-start, c-identifier-key): Now completely calculated
-       from other constants.
-
-       (c-identifier-last-sym-match): Decommission since it's no longer used.
-
-       (c-operators): Use `c-identifier-ops'.  Document `postfix-if-paren'.
-
-       * progmodes/cc-engine.el (c-forward-name): Remove the
-       optimization when c-identifier-key is equal to c-symbol-key since
-       it doesn't work in byte compiled files.  Don't record empty
-       regions as identifiers.
-
-       * progmodes/cc-langs.el (c-filter-ops): New helper function to
-       simplify access to `c-operators' and its likes.
-
-       (c-operator-list, c-all-op-syntax-tokens)
-       (c-nonsymbol-token-regexp, c-<>-multichar-token-regexp)
-       (c-<-op-cont-regexp, c->-op-cont-regexp, c-expr-kwds)
-       (c-primary-expr-regexp, c-cast-parens): Use it.
-
-       * progmodes/cc-defs.el (c-lang-const): Fixes to allow use without
-       an explicit language in functions.
-
-       * progmodes/cc-defs.el (c-make-keywords-re): Add an appendable
-       variant of adornment.
-
-       * progmodes/cc-langs.el (c-any-class-key): Remove unused language
-       variable.
-
-       (c-type-decl-prefix-key): Remove some now unnecessary cruft from
-       the Pike value.
-
-       * progmodes/cc-engine.el (c-on-identifier)
-       (c-simple-skip-symbol-backward): Small fix for handling "-"
-       correctly in `skip-chars-backward'.  Affected the operator lfun
-       syntax in Pike.
-
-       * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Disable the
-       diagnostic message about precompiled language vars not being used.
-
-       * progmodes/cc-langs.el (c-paren-nontype-kwds): The GCC keyword
-       "__attribute__" is followed by a parenthesis.
-
-       (c-type-start-kwds, c-prefix-spec-kwds, c-prefix-spec-kwds-re)
-       (c-specifier-key, c-not-decl-init-keywords): Some cleanup using new
-       language constants `c-type-start-kwds' and `c-prefix-spec-kwds'.
-
-       * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el:
-       Internal cleanups to properly detect the declared identifiers in
-       various declarations.
-
-       (c-decl-start-kwds): New language constant to recognize
-       declarations that can start anywhere.  Used for class declarations
-       in Pike.
-
-       (c-specifier-key, c-not-decl-init-keywords)
-       (c-decl-prefix-or-start-re, c-find-decl-prefix-search)
-       (c-find-decl-spots): Implement `c-decl-start-kwds'.
-
-       (c-other-decl-kwds, c-postfix-decl-spec-kwds, c-decl-hangon-kwds)
-       (c-decl-hangon-key, c-forward-decl-or-cast-1): Separate the
-       handling of the compiler specific extension keywords into a new
-       language constant `c-decl-hangon-kwds' that defines keyword
-       clauses to be ignored in declarations.
-
-       (c-forward-id-comma-list, c-forward-keyword-clause): Don't skip
-       past unrecognized tokens when handling `c-colon-type-list-kwds'.
-       Necessary to stop at the declared identifier in e.g. IDL valuetype
-       declarations.
-
-       (c-typedef-decl-kwds, c-typeless-decl-kwds, c-type-list-kwds)
-       (c-prefix-spec-kwds-re, c-postfix-spec-kwds)
-       (c-after-suffixed-type-decl-key, c-opt-postfix-decl-spec-key)
-       (c-forward-decl-or-cast-1): Recognize the declared identifier in
-       class and enum declarations as such and not as part of the type.
-
-       (c-forward-decl-or-cast-1, c-forward-label): Relax the
-       interpretation of PRECEDING-TOKEN-END when there's no preceding token.
-
-       (c-forward-decl-or-cast-1): Don't disregard sure signs of
-       declarations when there's some syntax error later on.
-
-       (c-complex-decl-matchers): Did away with a reference to
-       `c-specifier-key'.
-
-       * progmodes/cc-engine.el (c-maybe-labelp): Provide no default
-       value - this variable is always dynamically bound.
-
-       * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el
-       * cc-mode.el, cc-styles.el, cc-vars.el, cc-align.el, cc-awk.el
-       * cc-cmds.el, cc-defs.el: Change the policy for marking up
-       functions that might do hidden buffer changes: All such internal
-       functions are now marked instead of those that don't.
-
-       (c-beginning-of-macro, c-end-of-macro, c-(forward|backward)-comments)
-       (c-(forward|backward)-single-comment, c-parse-state, c-on-identifier)
-       (c-(fast-|slow-|)in-literal, c-literal-limits, c-collect-line-comments)
-       (c-literal-type): Allow these functions to make hidden buffer changes,
-       so that they are free to use text property caching later on.
-
-       (c-electric-backspace, c-electric-delete-forward, c-electric-pound)
-       (c-electric-brace, c-electric-slash, c-electric-star)
-       (c-electric-semi&comma, c-electric-colon, c-electric-lt-gt)
-       (c-electric-paren, c-electric-continued-statement, c-indent-command)
-       (c-indent-region, c-mask-paragraph, c-indent-new-comment-line)
-       (c-context-line-break): Add `c-save-buffer-state' calls to comply
-       with the changed semantics of the functions above.
-
-       * progmodes/cc-engine.el (c-beginning-of-statement-1): Fix a bug
-       when macros occur in obscure places.  Optimized the sexp movement
-       a bit.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       Enhancements for c-beginning-of-statement to work in AWK Mode:
-
-       * progmodes/cc-awk.el: Supersede c-awk-NL-prop value `;'
-       (completed statement) with `}' (statement completed by closing
-       brace or semicolon) and `$' (statement completed by EOL).
-
-       (c-awk-virtual-semicolon-ends-prev-line-p)
-       (c-awk-virtual-semicolon-ends-line-p)
-       (c-awk-skip-semantic-ws-forward, c-awk-skip-semantic-ws-backward)
-       (c-awk-at-statement-end-p): New functions.
-
-       * progmodes/cc-cmds.el: Simplify the structure of functions
-       c-forward-over-illiterals, c-back-over-illiterals.  Enhance these
-       two functions and c-beginning-of-statement to handle AWK Mode.
-
-       * progmodes/cc-engine.el: Enhance c-forward-single-comment,
-       c-backward-single-comment for AWK mode.  Attempt to clarify their
-       doc-strings.
-
-       * progmodes/cc-mode.el: Put M-a and M-e into awk-mode-map.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el: Cleaned up the
-       label handling.  Labels are now recognized in a uniform and more
-       robust way, regardless of context.  Text properties are put on all
-       labels to recognize the following declarations better.
-       Multiword labels are handled both in indentation and fontification for
-       the benefit of language extensions like Qt.  For consistency, keywords
-       in labels are now fontified with the label face instead.
-       That also applies to "case" and "default".
-
-       (c-beginning-of-statement-1): Fix some bugs in the label
-       handling.  Disregard `c-nonlabel-token-key' in labels that begin
-       with `c-label-kwds'.
-
-       (c-find-decl-spots): Support that the callback adds more
-       `c-decl-end' spots to find.
-
-       (c-forward-decl-or-cast-1): Don't treat a list of plain
-       identifiers followed by a colon as a declaration.
-
-       (c-forward-label): New function to recognize labels.
-
-       (c-guess-basic-syntax): Replace uses of `c-label-key' with
-       `c-forward-label'.  Moved the label recognition cases (14 and 15)
-       earlier since they aren't so context sensitive now.  Handle labels
-       on the top level gracefully.  Moved access label recognition to
-       the generic label case (CASE 15) - removed CASE 5E.
-
-       (c-font-lock-declarations): Add recognition of labels in the
-       same round since we need to handle labels in parallell with other
-       declarations to recognize both accurately.  It should also improve
-       speed.
-
-       (c-simple-decl-matchers, c-basic-matchers-after):
-       Move `c-font-lock-labels' so that it only is used on decoration level 2
-       since `c-font-lock-declarations' handles it otherwise.
-
-       (c-complex-decl-matchers): Remove the simplistic recognition of
-       access labels.
-
-       (c-decl-prefix-re): Remove the kludges that was necessary to cope
-       with labels earlier.
-
-       (c-decl-start-re): New language variable to make
-       `c-font-lock-declarations' stop for the special protection labels
-       in Objective-C that start with `@'.
-
-       (c-label-key): Remove since it's no longer used.
-
-       (c-recognize-colon-labels, c-label-prefix-re): New language
-       constants to support recognition of generic colon-terminated labels.
-
-       (c-type-decl-end-used): `c-decl-end' is now used whenever there
-       are colon terminated labels.
-
-       * progmodes/cc-align.el (c-lineup-arglist): Fix bug when the
-       first argument starts with a special brace list.
-
-       * progmodes/cc-engine.el, cc-fonts.el (c-forward-decl-or-cast-1)
-       (c-font-lock-declarations): Break out the declaration and cast
-       recognition from `c-font-lock-declarations' to a new function, so
-       that it can be used in the indentation engine.
-
-       * progmodes/cc-engine.el (c-find-decl-spots): Fix bug in backing
-       up to the start of the literal.  Fixed bug with the point on the
-       wrong side of the search limit that could happen when the start
-       position is inside a literal.
-
-       * progmodes/cc-engine.el (c-parse-state)
-       (c-invalidate-state-cache): Modify the use of `c-state-cache-end'
-       so that it's kept a little bit back to increase the hit rate.
-
-       (c-parse-state): Change the macro handling and fixed some
-       glitches.  Macro context is checked more often than necessary now,
-       but otoh less garbage conses are generated.
-
-       * progmodes/cc-engine.el (c-parse-state)
-       (c-invalidate-state-cache): Cache the last position where
-       `c-state-cache' applies.  This can speed up refontification quite
-       a bit in blocks where there are many non-brace parens before the point.
-
-       (c-state-cache-end): New variable for this.
-
-       (c-guess-basic-syntax, c-debug-parse-state): Adapt for the new
-       cache variable.
-
-       * progmodes/cc-engine.el (c-find-decl-spots): Take more care to
-       get close initial continue positions when the start position is
-       inside a literal or macro.  Do not call the callback for spots
-       before the start position (which can happen e.g. for `c-decl-end'
-       spots inside comments).  Optimize better in special cases when the
-       region is a single line inside a literal or macro (typically when
-       the current line is refontified).
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): Simplify calls
-       to `c-add-stmt-syntax' - there's no need to explicitly whack off
-       entries from the paren state.
-
-       * progmodes/cc-engine.el (c-add-stmt-syntax): Narrow down the
-       special case for "else if" clauses.
-
-       * progmodes/cc-engine.el (c-looking-at-inexpr-block)
-       (c-add-stmt-syntax): Use `c-recognize-paren-inexpr-blocks'.
-
-       * progmodes/cc-langs.el (c-recognize-paren-inexpr-blocks):
-       New language variable to recognize the gcc extension with statement
-       blocks inside expressions.
-
-       * progmodes/cc-engine.el (c-add-stmt-syntax): Restructure to make
-       it somewhat more comprehensible.  The argument AT-BLOCK-START is
-       no longer used and hence removed.
-
-       (c-guess-continued-construct, c-guess-basic-syntax): Update calls
-       to `c-add-stmt-syntax'.
-
-       * progmodes/cc-engine.el (c-backward-to-decl-anchor):
-       Use `c-beginning-of-statement-1' instead of duplicating parts of it.
-       This fixes bogus label recognition.
-
-       * progmodes/cc-engine.el (c-add-type, c-check-type)
-       (c-forward-name, c-forward-type): Improve storage of template
-       types in `c-found-types' so that they can be recognized better.
-
-       (c-syntactic-content): Add option to skip past nested parens.
-
-       * progmodes/cc-engine.el (c-forward-name):
-       Set `c-last-identifier-range' all the time.  It's less work that way.
-       Handle that there might not be an identifier to store in
-       `c-last-identifier-range'.
-
-       (c-forward-type): Handle that `c-last-identifier-range' might be
-       nil from `c-forward-name'.
-
-       * progmodes/cc-defs.el (c-safe-scan-lists)
-       (c-(go-)?(up|down)-list-(forward|backward)): Add limit arguments.
-
-       * progmodes/cc-defs.el (c-save-buffer-state): Use `unwind-protect'
-       to work even if the form fails.
-
-       * progmodes/cc-engine.el (c-parse-state): Speedup when moving far
-       down in a large file in one go.
-
-       (c-get-fallback-start-pos): New helper function for `c-parse-state'.
-
-       * progmodes/cc-align.el (c-lineup-assignments): New lineup
-       function which is like `c-lineup-math' but returns nil instead of
-       `c-basic-offset' when it doesn't match.
-
-       (c-lineup-math): Change to use `c-lineup-assignments'.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el: Fix some bugs in subfunctions of
-       c-beginning-of-statement.  New subfunctions
-       c-in-comment-line-prefix-p, c-narrow-to-comment-innards.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-fonts.el, cc-langs.el: Use `c-simple-ws' instead of
-       hardcoded char classes whereever possible.  Changed a couple of
-       places to use skip by syntax instead of skip by char class.
-
-       * progmodes/cc-langs.el (c-unterminated-block-comment-regexp):
-       Fix a bug in the regexp that caused extreme backtracking.
-
-       * progmodes/cc-langs.el (c-block-comment-starter)
-       (c-block-comment-ender): New language constants to specify in a
-       single place how block comments look.
-
-       (c-comment-start-regexp, c-block-comment-start-regexp)
-       (comment-start, comment-end, comment-start-skip)
-       (c-syntactic-ws-start, c-syntactic-ws-end, c-nonwhite-syntactic-ws)
-       (c-syntactic-ws, c-nonempty-syntactic-ws)
-       (c-single-line-syntactic-ws, c-syntactic-eol): Now built from
-       `c-line-comment-starter', `c-block-comment-starter' and
-       `c-block-comment-ender'.
-
-       (c-block-comment-regexp, c-unterminated-block-comment-regexp):
-       New language constants to break up things a bit.
-
-       (c-simple-ws): New language constant for simple whitespace.
-
-       * progmodes/cc-defs.el (c-concat-separated): New convenience function.
-
-       * progmodes/cc-defs.el (c-make-keywords-re): Add kludge for bug
-       in `regexp-opt' in Emacs 20 and XEmacs when strings contain
-       newlines.  Allow and ignore nil elements in the list.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el: Comment out a (n almost certainly
-       superfluous) check, (eq here (point-max)) in c-beginning-of-statement.
-
-       * progmodes/cc-cmds.el: Tidy up the comments in
-       c-beginning-of-statement and subfunctions.
-
-       * progmodes/cc-awk.el: Replace calls to put-text-property to the
-       more flexible c-put-char-property and c-clear-char-properties.
-       Add the author's email address.
-
-       * progmodes/cc-langs.el (c-block-comment-start-regexp): New variable.
-
-       * progmodes/cc-cmds.el: Fix bug with M-e, when point is inside the
-       closing "*/" of a block comment.
-
-       * progmodes/cc-cmds.el: Tidy c-beginning-of-sentence (and
-       subfunctions) so that it works at BOB and EOB.
-
-       * progmodes/cc-cmds.el, cc-vars.el: More updating of
-       c-beginning-of-statement, including new variable
-       c-block-comment-start-regexp.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-langs.el (c-known-type-key): Optimize simple
-       symbols from `*-font-lock-extra-types' so that there's no need to
-       use `regexp-opt' on those lists.
-
-       * progmodes/cc-langs.el (c-type-decl-suffix-key): Fix when
-       `c-type-modifier-kwds' is empty.
-
-       * progmodes/cc-fonts.el (c-font-lock-invalid-string): Fix when
-       there are several strings on the same line.
-
-       * progmodes/cc-engine.el (c-literal-limits): Remove the
-       compatibility function for older emacsen.  `c-literal-limits-fast'
-       has now taken the place of this function.
-
-       * progmodes/cc-vars.el (c-emacs-features): Remove compatibility
-       with older emacsen: We now require `pps-extended-state'.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el: New function c-beginning-of-sentence,
-       which obviates the need to hack sentence-end.  This now handles
-       escaped newlines in strings correctly.  Correct minor bugs in
-       c-move-over-sentence and in c-beginning-of-statement.
-
-       * progmodes/cc-cmds.el (c-beginning-of-statement (and
-       subfunctions)): Adapt c-\(back\|forward\)-over-illiterals such
-       that movement over macros and code are rigorously separated from
-       eachother.  Correct a few incidental bugs.
-
-       * progmodes/cc-cmds.el: Restructure c-beginning-of-statement:
-       Improve its doc-string.  Improve the handling of certain specific cases.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el
-       (c-guess-basic-syntax): Change the way class-level labels are
-       recognized; they can now contain essentially any symbols.
-
-       (c-opt-extra-label-key): New language variable to cope with the
-       special protection label syntax in Objective-C.
-
-       (c-opt-access-key): Remove; this is now handled better by
-       `c-nonlabel-token-key' and `c-opt-extra-label-key'.
-
-       (c-complex-decl-matchers): Update to handle that
-       `c-opt-access-key' no longer exists.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): Make use of the
-       improved label recognition in `c-beginning-of-statement-1'.
-
-       * progmodes/cc-engine.el (c-beginning-of-member-init-list):
-       Recognize bitfields better.
-
-       * progmodes/cc-engine.el (c-beginning-of-inheritance-list):
-       Remove some cruft and fixed a bug that could cause it to go to a
-       position further down.
-
-       * progmodes/cc-langs.el, cc-engine.el
-       (c-beginning-of-statement-1): Improve detection of labels in
-       declaration contexts.
-
-       (c-beginning-of-decl-1): Use it.
-
-       (c-nonlabel-token-key): New language constant and variable needed
-       by `c-beginning-of-statement-1'.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): Fix bug that
-       manifested itself due to the correction in `c-forward-sexp'.
-
-       * progmodes/cc-defs.el (c-forward-sexp, c-backward-sexp):
-       Make these behave as documented when used at the buffer limits.
-
-       * progmodes/cc-mode.el, cc-engine.el, cc-langs.el
-       (c-type-decl-end-used): Made this a language variable.
-
-       * progmodes/cc-mode.el (c-after-change): Widen the buffer to work
-       correctly when `combine-after-change-calls' is used together with
-       temporary narrowings.
-
-       * progmodes/cc-engine.el (c-beginning-of-statement-1):
-       Report labels correctly when the start point is immediately after the
-       colon.
-
-       * progmodes/cc-defs.el (c-parse-sexp-lookup-properties):
-       Remove since it isn't used anymore.
-
-       * progmodes/cc-cmds.el (c-electric-lt-gt): Detect and mark angle
-       bracket arglists such as template parens in C++.
-
-       * progmodes/cc-engine.el (c-syntactic-skip-backward): Fix a bug
-       in the last check-in.  Some optimization.
-
-       * progmodes/cc-engine.el (c-syntactic-skip-backward): Fix bug
-       where it could stop at the same level in a preceding sexp when
-       PAREN-LEVEL is set.
-
-       * progmodes/cc-mode.el (c-basic-common-init): Turn on syntax-table
-       text property lookup only when it's needed.
-
-       * progmodes/cc-langs.el, cc-engine.el, cc-fonts.el, cc-mode.el:
-       Change the policy for paren marked angle brackets to be more
-       persistent; once marked they remain marked even when they're found
-       to be unbalanced in the searched region.  This should keep the
-       paren syntax around even when individual lines are refontified in
-       multiline template arglists.
-
-       (c-parse-and-markup-<>-arglists): New dynamically bound variable
-       to control markup so that incorrect angle bracket arglists aren't
-       marked in contexts where the correct value for
-       `c-disallow-comma-in-<>-arglists' isn't known.
-
-       (c-forward-<>-arglist, c-forward-<>-arglist-recur): The reparse
-       argument has become `c-parse-and-markup-<>-arglists'.
-
-       (c-remove-<>-arglist-properties): Remove - no longer used.
-
-       (c-after-change-check-<>-operators): New function used on
-       `after-change-functions' to avoid that "<" and ">" characters that
-       are part of longer operators have paren syntax.
-
-       (c-<>-multichar-token-regexp): New language variable used by
-       `c-after-change-check-<>-operators'.
-
-       (c-after-change): Call `c-after-change-check-<>-operators'.
-
-       (c-font-lock-<>-arglists): Use the context properties set by
-       `c-font-lock-declarations' to set `c-disallow-comma-in-<>-arglists'
-       correctly to avoid doing invalid markup.
-
-       (c-font-lock-declarations): Remove code that undoes the invalid
-       markup done by `c-font-lock-<>-arglists'.
-
-       (c-complex-decl-matchers): `c-font-lock-<>-arglists' now runs
-       after `c-font-lock-declarations'.
-
-       * progmodes/cc-engine.el (c-syntactic-skip-backward):
-       Add paren-level feature.
-
-       (c-guess-basic-syntax): Improve the anchor position for
-       `template-args-cont' in nested template arglists.  There's still
-       much to be desired in this area, though.
-
-2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-cmds.el, cc-engine.el, cc-langs.el, cc-vars.el:
-       Make the "Text Filling and Line Breaking" commands work for AWK buffers.
-
-2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       * progmodes/cc-defs.el, cc-engine.el (c-mode-is-new-awk-p):
-       Removed; (c-major-mode-is 'awk-mode) can be used instead now.
-
-       * progmodes/cc-mode.el: Always set up AWK mode since emacsen where
-       it doesn't work no longer are supported.
-
-       * progmodes/cc-mode.el, cc-styles.el, cc-vars.el, cc-defs.el
-       * cc-engine.el, cc-fonts.el, cc-langs.el, cc-cmds.el: CC Mode now
-       requires support for the syntax-table' text property, which rules
-       out Emacs 19 and XEmacs < 21.4.  Removed various compatibility
-       cruft associated with those versions.
-
-       * progmodes/cc-defs.el, cc-fix.el: CC Mode now requires support
-       for the `syntax-table' text property, which rules out Emacs 19 and
-       XEmacs < 21.4.  Removed various compatibility cruft associated
-       with those versions.
-
-       * progmodes/cc-vars.el (c-emacs-features): CC Mode now requires
-       support for the `syntax-table' text property.
-
-       * progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove the
-       variable and use an extra quoted face name instead.  All the
-       emacsen flavors handle that correctly.
-
-       * progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare)
-       (c-font-lock-declarators, c-font-lock-declarations)
-       (c-complex-decl-matchers, c-basic-matchers-after): Use a text
-       property to mark the items in in declarator lists to handle
-       refontification inside multiline declarations better.
-
-       * progmodes/cc-fonts.el (c-font-lock-declarations): Recognize a
-       construct like "a * b = c;" as a declaration.
-
-2005-12-08  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-use-hyper-key): Replace by ...
-       (cua-rectangle-modifier-key): ... this.  New defcustom.  Can now
-       select either meta, hyper, or super modifier for rectangle commands.
-       (cua--rectangle-modifier-key): New defvar.
-       (cua--M/H-key): Use it.  Remove special case for `space'.
-       (cua--init-keymaps): Initialize it from cua-rectangle-modifier-key
-       on X, to meta otherwise.  Always bind C-return to toggle
-       rectangle.  Pass ?\s instead of `space' to cua--M/H-key.
-
-       * emulation/cua-rect.el (cua-help-for-rectangle):
-       Use cua--rectangle-modifier-key.  Handle super modifier too.
-       (cua--init-rectangles): Always bind C-return to toggle rectangle.
-       Pass ?\s instead of `space' to cua--M/H-key and cua--rect-M/H-key.
-
-       * ido.el: Move Acknowledgements and History after Commentary.
-       Minor changes to Commentary.
-
-       * emulation/cua-base.el (cua--select-keymaps): Enable repeat
-       keymap if cua--prefix-override-timer is `shift'.
-       (cua--shift-control-prefix): New function; emulate "type prefix
-       key twice" functionality to handle shifted prefix key override.
-       (cua--shift-control-c-prefix, cua--shift-control-x-prefix):
-       New commands.
-       (cua--init-keymaps): Bind them to S-C-c and S-C-x.
-
-2005-12-08  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-insert-heading): Try to do items before
-       headings.
-       (org-agenda-mode): Quote `org-agenda-mode-hook'.
-       (org-insert-item): New function.
-       (org-renumber-ordered-list): Don't skip to higher level lists.
-
-2005-12-08  Juri Linkov  <juri@jurta.org>
-
-       * info.el (Info-mode-map): Bind M-TAB to `Info-prev-reference'.
-
-       * button.el (button-buffer-map): Bind M-TAB to `backward-button'.
-
-       * wid-edit.el (widget-keymap): Bind M-TAB to `widget-backward'.
-
-       * pcvs.el (defun-cvs-mode): Put `definition-name' property on
-       the constructed function name fun-1.
-
-       * cus-edit.el (custom-add-parent-links): Filter out custom-group-link,
-       because such links don't lead to parent documentation.
-
-2005-12-08  Kenichi Handa  <handa@m17n.org>
-
-       * descr-text.el (describe-char): Use *Help-2* buffer if the
-       current buffer is *Help*.  Call describe-text-properties while
-       setting the original buffer.
-
-2005-12-07  Bill Wohler  <wohler@newt.com>
-
-       * files.el (auto-mode-alist): Remove mh-letter-mode.  Unnecessary,
-       and causes problems with non-MH users (such as Gnus users).
-
-2005-12-08  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-find-file-unhook): Delete variable.
-       (gdb-set-gud-minor-mode, gdb-set-gud-minor-mode): Delete functions.
-       (gdb-set-gud-minor-mode-existing-buffers, gdb-init-2): Use GDB
-       command "info sources".  Move calls to GDB command "list".
-       (gdb-find-file-hook): Just use gdb-source-file-list.
-       (gdb-source-file-regexp): Use regexp for pre-GDB 6.4.
-       (gdb-source-file-regexp-1): New regexp for GDB 6.4+ only.
-       (gdb-set-gud-minor-mode-existing-buffers-1): Use it.
-       (gdb-data-list-register-values-handler): Use correct trigger name.
-
-2005-12-07  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-completion-map): Rename from ido-mode-map.
-       (ido-common-completion-map, ido-file-completion-map)
-       (ido-file-dir-completion-map, ido-buffer-completion-map):
-       Rename from ido-mode-....-map.
-       (ido-init-completion-maps): Rename from ido-init-mode-maps.
-       (ido-setup-completion-map): Rename from ido-define-mode-map.
-       (ido-read-internal): Bind minibuffer-local-filename-completion-map
-       to ido-completion-map.
-
-2005-12-07  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el
-       (set-display-table-and-terminal-coding-system): If the coding
-       system specified in `unibyte-display' property is different from
-       the arg coding-system, don't setup standard-display-table.
-
-2005-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/edebug.el (edebug-skip-whitespace): read1:lread.c says
-       that comments end at \n, regardless of selective-display.
-
-2005-12-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-error-regexp, gdb-first-post-prompt)
-       (gdb-version): New variables.
-       (gdb-source-file-list, gdb-register-names)
-       (gdb-changed-registers): New variables for use with GDB 6.4+.
-       (gdb-ann3): Replace with...
-       (gdb-init-1, gdb-init-2): ...two new functions.
-       (gdba, gdb-prompt): Call gdb-init-1.
-       (gdb-get-version): New function.  Call gdb-init-2 from here.
-       (gud-watch): Make it work with mouse events too.
-       (gdb-post-prompt): Don't add to queue until GDB version is known.
-       (gdb-speedbar-expand-node, gdb-post-prompt, gdb-registers-mode)
-       (gdb-locals-mode): Use gdb-version.
-       (gdb-memory-format-map, gdb-memory-unit-map)
-       (gdb-locals-watch-map): Rename from gdb-*-*-keymap.
-       (gdb-locals-font-lock-keywords-1)
-       (gdb-locals-font-lock-keywords-2): New variables.
-       (gdb-find-file-hook): Make it work with GDB 6.4+ too.
-       (gdb-set-gud-minor-mode-existing-buffers-1)
-       (gdb-var-list-children-1, gdb-var-list-children-handler-1)
-       (gdb-var-update-1, gdb-var-update-handler-1)
-       (gdb-data-list-register-values-handler)
-       (gdb-data-list-register-values-custom)
-       (gdb-get-changed-registers, gdb-get-changed-registers-handler)
-       (gdb-stack-list-locals-handler, gdb-get-register-names):
-       New functions for use with GDB 6.4+.
-       (gdb-locals-watch-map-1): New variable for use with GDB 6.4+.
-       (gdb-source-file-regexp, gdb-var-list-children-regexp-1)
-       (gdb-var-update-regexp-1, gdb-data-list-register-values-regexp)
-       (gdb-stack-list-locals-regexp)
-       (gdb-data-list-register-names-regexp): New regexps for use with
-       GDB 6.4+.
-
-2005-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/cc-defs.el (c-emacs-features): Don't assume point-min==1.
-
-2005-12-06  Nozomu Ando  <nand@mac.com>
-
-       * mail/smtpmail.el (smtpmail-try-auth-methods): Make password
-       prompts work for AUTH PLAIN.  Also reported by Steve Allan
-       <seallan@verizon.net>.
-
-2005-12-06  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
-
-       * frame.el (set-frame-parameter): Add doc string.
-
-2005-12-06  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-occur-highlights): New variable.
-       (org-highlight-new-match, org-remove-occur-highlights): New functions.
-       (org-highlight-sparse-tree-matches): New option.
-       (org-do-occur): New function.
-       (org-get-heading): Make it work also at beginning of line.
-       (org-category-table): New variable.
-       (org-get-category-table, org-get-category)
-       (org-camel-to-words, org-link-search): New functions.
-       (org-select-this-todo-keyword): New variable.
-       (org-todo-list): New command.
-       (org-shiftright, org-shiftleft): New commands.
-       (org-agenda-todo): Add prefix argument.
-       (org-show-hierarchy-above): New option.
-       (org-show-todo-tree): Numerical prefix creates tree for specific
-       TODO keyword.
-       (org-outline-level): New function, to assign a level to plain
-       lists items.
-       (org-cycle-include-plain-lists): New option.
-       (org-mode): Use `org-outline-level' as value of `outline-level'.
-       (org-cycle): Temporarily switch `outline-regexp' if
-       `org-cycle-include-plain-lists' is non-nil.
-       (org-start-icalendar-file): Fix format bug.
-       (org-agenda-get-day-entries): Create category table.
-       (org-agenda-get-todos, org-agenda-get-timestamps)
-       (org-agenda-get-deadlines, org-agenda-get-scheduled)
-       (org-agenda-get-blocks): Use `org-get-category'.
-       (org-context-in-file-links): Rename from
-       `org-line-numbers-in-file-links'.
-
-2005-12-06  Romain Francoise  <romain@orebokech.com>
-
-       * window.el (balance-windows): Delete extraneous third arg in call
-       to `enlarge-window'.
-
-2005-12-06  Kenichi Handa  <handa@m17n.org>
-
-       * international/kinsoku.el (kinsoku-longer): Check eolp, not eobp.
-
-2005-12-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-create-handler)
-       (gdb-var-evaluate-expression-handler, gdb-frame-handler)
-       (gdb-var-list-children-handler, gdb-var-update-handler):
-       Current buffer is already gdb-partial-output-buffer, don't
-       make it current again.
-
-2005-12-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buff-menu.el (Buffer-menu-use-frame-buffer-list): New user option.
-       (list-buffers-noselect): Use it.
-
-2005-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mail/sendmail.el: Remove unnecessary leading-star in docstrings.
-       (mail-yank-ignored-headers): Use regexp-opt.
-       (mail-mode-map): Move initialization into declaration.
-       (mail-sent-via): Remove unused shadowed var `to-line'.
-       (mail-mailer-swallows-blank-line): Use with-temp-buffer.
-       (mail-bury, sendmail-send-it, mail-do-fcc): Use with-current-buffer.
-       (mail-do-fcc): Use dolist and push.
-       (mail-mode-fill-paragraph): Pass the arg to fill-region-as-paragraph.
-       (mail-yank-ignored-headers): Don't autoload.
-
-2005-12-05  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (set-language-info-internal): New fun.
-       (set-language-info): Call set-language-info-internal to update
-       language-info-alist.  If LANG-ENV is the current one, call
-       set-language-environment to make INFO effective now.
-       (set-language-info-alist): Likewise.
-       (locale-language-names): With locale "en", use English
-       lang. env. but set the default codings to iso-8859-1.
-
-2005-12-04  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-use-inferior-io-buffer)
-       (gdb-speedbar-auto-raise): Echo new state in minibuffer.
-       (gdb-var-create-handler, gdb-assembler-custom): Use search-forward
-       for plain strings.
-       (gdb-frames-mode): Remove redundant call to font-lock-mode.
-       (gdb-all-registers): Rename from toggle-gdb-all-registers.
-       Create registers buffer if necessary.  Echo new state in minibuffer.
-       (gdb-registers-mode-map, gdb-registers-mode): Use gdb-all-registers.
-
-2005-12-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * info.el (Info-fontify-node): Match external links using
-       non-directory part of filename.
-
-2005-12-04  Juri Linkov  <juri@jurta.org>
-
-       * font-core.el (global-font-lock-mode): Use define-global-minor-mode
-       instead of easy-mmode-define-global-mode.  Add `:group font-lock'.
-       (font-lock-mode): Replace `:group font-lock' with `nil nil nil'
-       because there is no customization option for it.
-
-       * font-lock.el (lisp-font-lock-keywords-1):
-       Add define-global-minor-mode.
-
-       * emacs-lisp/autoload.el (make-autoload): Add define-global-minor-mode.
-
-       * emacs-lisp/derived.el (define-derived-mode): Put `definition-name'
-       properties on the constructed variable names.
-
-       * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation):
-       Put `definition-name' properties on the constructed function names
-       next-sym and prev-sym.
-
-       * emacs-lisp/find-func.el (find-function-regexp):
-       Add define-global-minor-mode.  Replace `easy-mmode-define-global-mode'
-       with `easy-mmode-define-[a-z-]+'.  Add easy-menu-define.
-       (find-variable-regexp): Add easy-mmode-defmap, easy-mmode-defsyntax
-       and easy-menu-define.
-
-       * emacs-lisp/lisp-mode.el: Put `doc-string-elt' property on
-       easy-mmode-define-global-mode and define-global-minor-mode.
-       (lisp-imenu-generic-expression): Add define-global-minor-mode.
-
-       * progmodes/cwarn.el (global-cwarn-mode): Use define-global-minor-mode
-       instead of easy-mmode-define-global-mode.
-
-       * progmodes/idlw-shell.el (idlwave-shell-electric-debug-mode):
-       Use define-minor-mode instead of easy-mmode-define-minor-mode.
-
-       * cus-edit.el (customize-group, customize-group-other-window):
-       Filter out autoloaded options from the group completion list by
-       using heuristics that autoloaded groups don't have `custom-autoload'
-       property on their symbols (they have only `custom-loads').
-
-       * simple.el (completion-setup-function): Put completions-common-part
-       face on complete completion string too (i.e. completion string
-       without completions-first-difference face).
-
-       * man.el (Man-section-regexp): Add 0-9 to support "3X11" sections.
-
-2005-12-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * view.el (view-mode): Doc fix.
-
-       * disp-table.el (standard-display-european): Add to the warning
-       message a reference to the doc string.
-
-       * play/yow.el (apropos-zippy): Call print-help-return-message,
-       similar to other Help and Apropos commands.
-
-       * help.el (print-help-return-message): If pop-up-frames is
-       non-nil, set up help-return-method to delete the help window and,
-       possibly, its frame as well, and don't display message about
-       scrolling the help window.  Doc fix.
-       (help-return-method): Doc fix.
-
-2005-12-03  Martin Rudalics  <rudalics@gmx.at>
-
-       * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression): Fix bug
-       whereby names of length one or names starting with a
-       symbol-constituent character would not be returned.
-
-2005-12-03  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * subr.el (atomic-change-group): Add edebug and indentation spec.
-
-2005-12-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * completion.el (save-completions-file-name): Fix typo in last change.
-
-2005-12-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * info.el: Move back/forward history to the beginning of the tool bar.
-
-2005-12-02  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el (eval-when-compile): Remove unnecessary load of cl.
-       Add fset of allout-real-isearch-abort during compile to fix
-       byte-compilation warnings.
-       (allout-mode-p): Move definition of this macro above all uses, or
-       byte compilation in barren Emacs (eg, during Emacs build) will
-       lack the definition.
-       (allout-mode): Move this variable above any uses, or byte
-       compilation will fail.
-       (allout-resolve-xref): Remove use of personal file-reference function.
-       (allout-toggle-current-subtree-encryption): Do the current (ie,
-       visible containing) topic, rather than nearest around point.  Doc fix.
-       (allout-toggle-subtree-encryption): New function, workhorse that
-       works on nearest topic containing point.
-       (allout-encrypt-string): Signal requirement for newer version of pgg.
-       (allout-resumptions): Doc fix.
-
-2005-12-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * international/latexenc.el (latex-inputenc-coding-alist): Doc fix.
-
-2005-12-02  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       Consider a misspelling as found in the string search if: (a) misspelling
-       and found string lengths match, or (b) misspelling is found as
-       element in a boundary-chars separated longer string, or (c)
-       ispell-program-name is really ispell and misspelling is found as
-       part of a TeX string.  After successful match move beginning of
-       search region to end of match.  Warn about not found misspellings
-       once the process is done.
-       (flyspell-large-region): Do not set ispell-parser to tex if in TeX mode.
-
-2005-12-02  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Put gud-finish back on the
-       tool bar (removed inadvertently).
-
-2005-12-02  Juri Linkov  <juri@jurta.org>
-
-       * log-view.el (log-view-diff): Clarify doc string.
-
-2005-12-01  Bill Wohler  <wohler@newt.com>
-
-       * Makefile.in (mh-loaddefs.el): Reinsert Change Log as its absence
-       triggers lm-verify errors.
-
-2005-12-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * simple.el (transient-mark-mode, line-number-mode)
-       (column-number-mode, size-indication-mode): Remove `:require nil'.
-
-2005-12-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-2 to gdb-mouse-until
-       in the margin also.
-       (gdb-breakpoints-mode-map): Use D instead of d for
-       gdb-delete-breakpoint.
-       (gdb-get-frame-number): Require a number to match on.
-       (gdb-threads-mode-map): Add follow-link binding.
-
-2005-11-30  Jason Rumney  <jasonr@gnu.org>
-
-       * isearch.el (isearch-mode-map): Avoid exiting search on
-       language-change event.
-
-2005-11-30  Romain Francoise  <romain@orebokech.com>
-
-       * speedbar.el (speedbar-default-position): New defcustom.
-       (speedbar-frame-reposition-smartly): Use it.
-
-       * dframe.el (dframe-reposition-frame-emacs): Fix position
-       computation for `left' location.
-       Update copyright year.
-
-2005-11-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * help.el (help-map): Move initialization into declaration.
-
-       * emacs-lisp/autoload.el (make-autoload): Handle defgroup specially.
-
-       * help-fns.el (help-argument-name): Don't autoload.
-       It's useless and triggers a bug in cus-dep.el causing ldefs-boot
-       to be re-loaded when customizing the `help' group.
-
-2005-11-30  John Paul Wallington  <jpw@gnu.org>
-
-       * help-fns.el (describe-function-1): Fill arglist output.
-
-2005-11-30  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-rect.el (cua--rectangle-overlays): Make permanent-local.
-       (cua--rectangle-post-command): Cleanup overlays and deactivate mark
-       after revert-buffer (or anything else which kills all local variables).
-
-       * apropos.el (apropos-parse-pattern): Doc fix.
-       Set apropos-regexp directly, rather than expecting callers to do so.
-       (apropos-command, apropos, apropos-value, apropos-documentation):
-       Simplify calls to apropos-parse-pattern.
-
-2005-11-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
-       (hi-lock-face-phrase-buffer): Use hi-yellow face.
-       (hi-lock-write-interactive-patterns): Use comment-region.
-
-       * longlines.el (longlines-mode): Add mail-setup-hook.
-
-       * mail/mailheader.el, mail/sendmail.el: Revert 2005-11-17 changes.
-
-       * simple.el (sendmail-user-agent-compose, next-line):
-       Conditionally use hard-newline.
-
-2005-11-29  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * international/latexenc.el (latex-inputenc-coding-alist):
-       Reword doc string.
-
-2005-11-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * help.el (describe-key-briefly, describe-key): Recognize default
-       bindings.
-
-2005-11-29  Romain Francoise  <romain@orebokech.com>
-
-       * view.el (view-inhibit-help-message): New defcustom.
-       (view-mode-enter): Use it.
-
-2005-11-29  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * ediff-wind.el (ediff-setup-control-frame, ediff-make-wide-display):
-       Preserve user position.
-
-2005-11-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * font-lock.el: Throw error if facemenu is not loaded to prevent
-       accidental change of loading order in loadup.el.  (Suggested by RMS.)
-
-       * loadup.el: Add comment explaining why facemenu must be loaded
-       before font-lock.
-
-2005-11-28  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el: Change global keybinding for calc-dispatch to "\C-x*".
-       (calc-dispatch-map): Add more keys for `calc-same-interface'.
-
-       * calc/calc-misc.el (calc-dispatch-help): Update docstring.
-
-       * calc/calc-embed.el (calc-do-embedded): Update help message.
-
-       * calc/calc-prog.el (calc-user-define-invokation): Update help message.
-
-2005-11-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * log-edit.el (log-edit-insert-cvs-rcstemplate): Ignore stderr.
-
-       * emacs-lisp/elp.el (elp-not-profilable): Replace interactive-p with
-       called-interactively-p.
-       (elp-profilable-p): Rename from elp-not-profilable-p.
-       Invert result and take into account macros and autoloaded functions.
-       (elp-instrument-function): Update call.
-       (elp-instrument-package): Update call.  Add completion.
-       (elp-pack-number): Use match-string.
-       (elp-results-jump-to-definition-by-mouse): Merge into
-       elp-results-jump-to-definition and then remove.
-       (elp-output-insert-symname): Make help echo text single-line.
-
-       * replace.el (query-replace-map): Move initialization into declaration.
-       (occur-engine): Use with-current-buffer.
-       (occur-mode-goto-occurrence): Make it work for mouse-clicks as well.
-       (occur-mode-mouse-goto): Replace with an alias.
-
-2005-11-28  Juri Linkov  <juri@jurta.org>
-
-       * simple.el (quoted-insert): Let-bind input-method-function to nil.
-
-       * term/w32-win.el: Bind [S-tab] to [backtab].
-
-       * info.el (Info-fontify-node): Set 2nd arg `noerror' of
-       `Info-find-file' to t.
-
-       * replace.el (occur-mode-mouse-goto): Pop, don't switch.
-       (occur-mode-goto-occurrence): Let-bind same-window-buffer-names
-       and same-window-regexps.
-       (occur-next-error): Don't move point for arg 0.
-
-2005-11-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * replace.el (occur-mode-goto-occurrence): Pop, don't switch.
-
-2005-11-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * log-edit.el (log-edit-changelog-use-first): New var.
-       (log-edit-changelog-ours-p): Use it.
-       (log-edit-insert-changelog): Set it with new arg `use-first'.
-       (log-edit-insert-cvs-rcstemplate, log-edit-insert-filenames): New funs.
-       (log-edit-hook): Add them to the list of suggested options.
-
-       * textmodes/flyspell.el (flyspell-last-buffer): New var.
-       (flyspell-accept-buffer-local-defs): Use it to avoid doing silly
-       redundant work.
-       (flyspell-mode-on): Use add-hook for after-change-functions.
-       (flyspell-mode-off): Use remove-hook for after-change-functions.
-       (flyspell-changes): Make it buffer-local.
-       (flyspell-after-change-function): Make it non-interactive.  Use push.
-       (flyspell-post-command-hook): Check input-pending-p while processing
-       the potentially long list of buffer changes.
-
-2005-11-28  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
-
-       * buff-menu.el (list-buffers-noselect): Display the selected
-       frame's buffer list, not the global one.
-
-2005-11-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * xt-mouse.el (xterm-mouse-event): Set last-input-event so
-       that (list last-input-event) works as in interactive spec.
-
-2005-11-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * loadup.el ("facemenu"): Load facemenu before font-lock, because
-       `facemenu-keymap' needs to be defined when font-lock is loaded.
-       Otherwise, `M-o M-o' is not bound to `font-lock-fontify-block'.
-
-2005-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * completion.el: Remove useless leading * in defcustom docstrings.
-       (save-completions-file-name): Use ~/.emacs.d if available.
-       (completion-standard-syntax-table): Rename from
-       cmpl-standard-syntax-table and fold initialization into declaration,
-       thus removing cmpl-make-standard-completion-syntax-table.
-       (completion-lisp-syntax-table, completion-c-syntax-table)
-       (completion-fortran-syntax-table, completion-c-def-syntax-table): Idem.
-       (cmpl-saved-syntax, cmpl-saved-point): Remove.
-       (symbol-under-point, symbol-before-point)
-       (symbol-under-or-before-point, symbol-before-point-for-complete)
-       (add-completions-from-c-buffer): Use with-syntax-table.
-       (make-completion): Don't return a list of completion entries.
-       Update callers.
-       (cmpl-prefix-entry-head, cmpl-prefix-entry-tail): Use defalias.
-       (completion-initialize): Rename from initialize-completions.
-       (completion-find-file-hook): Rename from cmpl-find-file-hook.
-       (kill-emacs-save-completions): Collect stats here.
-       (save-completions-to-file, load-completions-from-file):
-       Use with-current-buffer.
-       (completion-def-wrapper): Rename from def-completion-wrapper.  Make it
-       into a function.  Move all calls to toplevel.
-       (completion-lisp-mode-hook): New fun.
-       (completion-c-mode-hook, completion-setup-fortran-mode):
-       Set the syntax-table here.  Use local-set-key.
-       (completion-saved-bindings): New var.
-       (dynamic-completion-mode): Make it into a proper minor mode.
-       (load-completions-from-file): Remove unused var `num-uses'.
-
-       * emacs-lisp/cl-macs.el (defstruct): Don't define the default
-       constructor if it is explicitly overridden.
-
-       * complete.el (PC-completion-as-file-name-predicate):
-       Use minibuffer-completing-file-name.
-       (partial-completion-mode): Use find-file-not-found-functions.
-       (PC-lisp-complete-symbol): Use with-syntax-table.
-       (PC-look-for-include-file): Remove dead setq.
-       (PC-look-for-include-file, PC-expand-many-files, PC-do-completion)
-       (PC-complete): Use with-current-buffer.
-
-       * progmodes/sh-script.el (sh-font-lock-syntactic-keywords): \ doesn't
-       escape single quotes.
-
-2005-11-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * dabbrev.el (dabbrev-completion): Simplify code, by getting rid
-       of `if' whose condition always returned nil.  Doc fix.
-
-       * buff-menu.el (Buffer-menu-revert-function): Make the selected
-       window's buffer the current buffer around the call to
-       `list-buffers-noselect'.  This is necessary to mark that buffer
-       with a `.' in the Buffer Menu when called from Lisp, for instance
-       by Auto Revert Mode.
-
-2005-11-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-stopped): Detect child process when
-       attaching to it.
-       (gdb-pre-prompt): Make sure gdb-error is reset.
-
-       * progmodes/gud.el (gud-gdb-marker-filter): When GDB is invoked
-       with a child process, detect it.
-       (gud-speedbar-buttons): Match regexp more carefully.
-
-2005-11-27  Richard M. Stallman  <rms@gnu.org>
-
-       * mouse.el (mouse-drag-move-window-bottom):
-       Use adjust-window-trailing-edge.
-
-2005-11-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * simple.el (blink-matching-open): Ignore
-       `blink-matching-paren-on-screen' if `show-paren-mode' is enabled.
-       (blink-matching-paren-on-screen): Update docstring.
-
-       * paren.el (show-paren-mode): No longer change
-       `blink-matching-paren-on-screen'.
-
-2005-11-27  John Paul Wallington  <jpw@pobox.com>
-
-       * progmodes/gdb-ui.el (gdb-goto-breakpoint, gdb-frames-select)
-       (gdb-threads-select, gdb-edit-register-value):
-       Use `posn-set-point' instead of `mouse-set-point' because the
-       latter is not fbound when configured without X.
-
-2005-11-27  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-rect.el (cua--highlight-rectangle): Preserve
-       existing face when partially highlighting a TAB in a rectangle.
-
-2005-11-26  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-mode-map): Doc fix.
-       (ido-mode-common-map, ido-mode-file-map)
-       (ido-mode-file-dir-map, ido-mode-buffer-map): New keymaps.
-       (ido-define-mode-map): Rewrite.  Select one of the new maps as
-       parent for ido-mode-map instead of building from scratch.
-       (ido-init-mode-maps): New defun to initialize new maps.
-       (ido-mode): Call it.
-       (ido-switch-buffer): Doc fix -- use \<ido-mode-buffer-map>.
-       (ido-find-file): Doc fix -- use \<ido-mode-file-map>.
-
-2005-11-26  John Paul Wallington  <jpw@pobox.com>
-
-       * arc-mode.el (archive-extract): Use `posn-set-point' instead of
-       `mouse-set-point' because the latter is not fbound when configured
-       without X.
-
-2005-11-26  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * files.el (file-relative-name): Doc fix.
-
-2005-11-26  Kurt Hornik  <Kurt.Hornik@wu-wien.ac.at>
-
-       * progmodes/octave-inf.el (inferior-octave-startup): Force a
-       non-empty string for secondary prompt PS2.
-
-2005-11-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * progmodes/compile.el (compilation-setup): Fix last change.
-
-2005-11-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-info-breakpoints-custom)
-       (gdb-mouse-toggle-breakpoint-margin)
-       (gdb-mouse-toggle-breakpoint-fringe, gdb-threads-select):
-       Add gdb-server-prefix to keep out of command history.
-       (gdb-edit-register-value): New function.
-       (gdb-registers-mode-map): Bind mouse-2 and RET to it.
-       (gdb-info-registers-custom): Use above map.
-
-2005-11-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (enable-theme): Signal error if argument is not a
-       theme.  Don't recalculate a face if it's not loaded yet.
-
-       * cus-face.el (custom-theme-set-faces): Don't change saved-face if
-       the `user' theme is in effect.
-
-       * info.el (Info-on-current-buffer): Record actual filename in
-       Info-current-file, instead of t, or a fake filename if a non-file
-       buffer.  Make autoload.
-       (Info-find-node, Info-revert-find-node): No need to check for
-       Info-current-file nil.
-       (Info-set-mode-line, Info-up, Info-copy-current-node-name):
-       Info-current-file is now never `t'.
-       (Info-fontify-node): Many simplifications due to Info-current-file
-       always being valid.  Use Info-find-file to find node filename.
-
-2005-11-25  David Kastrup  <dak@gnu.org>
-
-       * longlines.el (longlines-wrap-line): Reorder wrapping to "insert
-       new character, then delete" in order to preserve markers.
-
-2005-11-25  David Ponce  <david@dponce.com>
-
-       * recentf.el (recentf-arrange-by-rule): Handle a special
-       `auto-mode-alist'-like "strip suffix" rule.
-       (recentf-build-mode-rules): Handle second level auto-mode entries.
-
-2005-11-25  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-keym.el (viper-ESC-key): Use different values in terminal and
-       window modes.
-
-       * viper.el (viper-emacs-state-mode-list): Delete mail-mode, add
-       jde-javadoc-checker-report-mode.
-
-       * ediff-wind (ediff-make-wide-display): Slight simplification.
-
-       * ediff.el (ediff-date): Change the date of last update.
-
-2005-11-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
-       Use define-minor-mode, and make it a local mode.  Turn on font-lock.
-       (hi-lock-mode): New global minor mode.
-       (turn-on-hi-lock-if-enabled): New function.
-       (hi-lock-line-face-buffer, hi-lock-face-buffer, hi-lock-set-pattern):
-       Change arguments to regexp and face instead of a font-lock pattern.
-       Directly set face property, instead of refontifying.
-       (hi-lock-font-lock-hook): Check if font-lock is being turned on.
-       (hi-lock-find-patterns): Use line-number-at-pos.
-
-       (hi-lock-face-phrase-buffer): Call hi-lock-buffer-mode.  Use new
-       arguments for hi-lock-set-pattern.
-       (hi-lock-unface-buffer, hi-lock-set-file-patterns):
-       Call font-lock-fontify-buffer.
-       (hi-lock-find-file-hook, hi-lock-current-line)
-       (hi-lock-refontify, hi-lock-set-patterns): Delete unused functions.
-
-       (hi-lock-font-lock-hook): Turn off hi-lock when font lock is
-       turned off.
-
-       * progmodes/compile.el (compilation-setup): Don't fiddle with
-       font-lock-defaults.
-
-2005-11-25  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-create-handler)
-       (gdb-var-list-children-handler): Find values for all variable
-       objects.  gud-speedbar-buttons decides whether to display them.
-
-2005-11-24  Romain Francoise  <romain@orebokech.com>
-
-       * info.el (Info-speedbar-fetch-file-nodes): Prefix temporary
-       buffer name with a space.
-
-2005-11-24  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-export-plain-list-max-depth): Rename from
-       `org-export-local-list-max-depth'.  Change default value to 3.
-       (org-auto-renumber-ordered-lists)
-       (org-plain-list-ordered-item-terminator): New options.
-       (org-at-item-p, org-beginning-of-item, org-end-of-item)
-       (org-get-indentation, org-get-string-indentation)
-       (org-maybe-renumber-ordered-list, org-renumber-ordered-list):
-       New functions.
-       (org-move-item-down, org-move-item-up): New commands.
-       (org-export-as-html): New classes for CSS support.  Bug fix in
-       regular expression detecting fixed-width regions.  Respect
-       `org-local-list-ordered-item-terminator'.
-       (org-set-autofill-regexps, org-adaptive-fill-function): "1)" is
-       also a list item.
-       (org-metaup, org-metadown, org-shiftmetaup, org-shiftmetadown):
-       New item moving functions.
-
-2005-11-24  Juri Linkov  <juri@jurta.org>
-
-       * isearch.el (isearch-repeat): With empty search ring set
-       `isearch-error' to the error string instead of signaling error
-       with the function `error'.
-
-2005-11-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Make modifier `ctrl' an alias for `control'.
-
-2005-11-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-speedbar-auto-raise): New function
-       and variable.
-       (gdb-var-create-handler, gdb-var-list-children-handler):
-       Don't match on "char **...".
-       (gdb-var-update-handler): Find values for all variable objects.
-       (gdb-info-frames-custom): Identify frames by leading "#".
-
-       * progmodes/gud.el (gud-speedbar-menu-items): Add
-       gdb-speedbar-auto-raise as radio button.
-       (gud-speedbar-buttons): Raise speedbar if requested.
-       Don't match on "char **...".
-       (gud-speedbar-buttons): Add (pointer) value for non-leaves.
-       Make it editable.
-
-2005-11-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * info.el (Info-fontify-node): Handle the case where
-       Info-current-file is t.
-
-2005-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * simple.el (blink-matching-open): Fix off-by-one in last change.
-
-2005-11-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Don't change default directory.
-
-2005-11-22  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (Custom-reset-standard): Make it handle Custom group
-       buffers correctly.  (It used to throw an error in such buffers.)
-       Make it ask for confirmation in group buffers and other Custom
-       buffers containing more than one customization item.
-
-2005-11-22  John Paul Wallington  <jpw@gnu.org>
-
-       * net/goto-addr.el (goto-address-fontify): Put `follow-link'
-       property on mail and url overlays.
-       (goto-address-at-point): Use `posn-set-point' instead of
-       `mouse-set-point' because the latter is not fbound when configured
-       without X.
-
-2005-11-22  Lars Hansen  <larsh@soem.dk>
-
-       * ls-lisp.el (ls-lisp-parse-symlink): Delete.
-       (ls-lisp-classify, ls-lisp-format): Delete call to
-       ls-lisp-parse-symlink.
-       (ls-lisp-handle-switches): Handle symlinks to directories as
-       directories when ls-lisp-dirs-first in non-nil.
-
-2005-11-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * startup.el (command-line): Make sure that loaddefs.el is handled
-       correctly in load-history.
-
-2005-11-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-locals-watch-keymap): New local map.
-       (gdb-struct-string, gdb-array-string): New constants.
-       (gdb-info-locals-handler): Use them.
-       (gdb-reset): Reset gdb-var-list to nil.
-
-2005-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-font-lock-paren): Handle continued lines
-       in patterns.
-
-2005-11-21  Juri Linkov  <juri@jurta.org>
-
-       * custom.el (defcustom): Update link types in docstring.
-
-2005-11-20  Martin Rudalics  <rudalics@gmx.at>
-
-       * custom.el (defgroup): Add doc-string-elt info.
-
-       * widget.el (define-widget): Don't use declare for the doc-string-elt.
-
-2005-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * newcomment.el (comment-enter-backward): Fix last fix.
-
-       * simple.el (blink-matching-open):
-       * paren.el (show-paren-function): Allow new paren-class info.
-
-2005-11-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * faces.el: Revert 2005-11-17 change.  :ignore-defface is now
-       handled automagically.
-
-2005-11-20  Andreas Schwab  <schwab@suse.de>
-
-       * descr-text.el (describe-char): When copying overlays put them
-       over the full char description instead of just the first character
-       of it.
-
-2005-11-20  Juri Linkov  <juri@jurta.org>
-
-       * simple.el (what-cursor-position):
-       * descr-text.el (describe-char): Use Lisp-readable syntax
-       for octal and hex.  Reorder decimal, octal and hex values.
-       Remove excess whitespace in the output.  Use `=' in `column='
-       like in `point=' and `Hscroll='.
-
-       * international/mule-cmds.el (encoded-string-description):
-       Use Lisp-readable syntax for hex.
-
-2005-11-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * newcomment.el (comment-enter-backward): Handle the case where the
-       comment is closed by EOB.
-
-2005-11-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-before-revert-hook)
-       (longlines-after-revert-hook): New functions.
-       (longlines-mode): Turn off longlines temporarily when reverting.
-       Add a message-setup-hook.
-       (longlines-decode-buffer): New function.
-       (longlines-wrap-line): Preserve marker positions.
-
-2005-11-19  Andreas Schwab  <schwab@suse.de>
-
-       * emacs-lisp/shadow.el: Handle compressed files.
-
-2005-11-19  Romain Francoise  <romain@orebokech.com>
-
-       * net/browse-url.el (browse-url-default-browser): Signal an error
-       if no usable browser can be found, rather than try to load w3.
-
-2005-11-16  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el (rcirc-mangle-text): Add bold face property without
-       replacing existing properties.
-       (rcirc-my-nick, rcirc-other-nick, rcirc-server)
-       (rcirc-nick-in-message, rcirc-prompt): Use min-colors and remove
-       tty specs.
-       (rcirc-server-prefix, rcirc-server): New faces.
-       (rcirc-url-regexp): Generate with rx macro.
-       (rcirc-last-server-message-time): New variable.
-       (rcirc-filter): Record time of last message.
-       (rcirc-keepalive): Kill processes that did not send a message
-       since the last ping.
-       (rcirc-mode): Give rcirc-topic a local binding here.
-
-2005-11-19  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * subr.el (read-passwd): Fontify the prompt as we do with other
-       prompts.
-
-2005-11-19  Ryan Yeske  <rcyeske@gmail.com>
-
-       * ffap.el (ffap-menu-rescan): Use inhibit-read-only instead of
-       binding buffer-read-only to nil.
-
-2005-11-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * complete.el (partial-completion-mode):
-       Mention completion-auto-help in the doc string.
-
-       * man.el (Man-highlight-references): Doc fix.  Reformat code in a
-       more Lisp-ish way.
-
-2005-11-19  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>  (tiny change)
-
-       * ls-lisp.el (ls-lisp-format-file-size): Format file size with 9
-       digits, not 8, to avoid misalignment for files larger than 100MB.
-
-2005-11-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * menu-bar.el (menu-bar-describe-menu) <list-keybindings>:
-       Mention "keyboard shortcuts" in the help text.
-
-2005-11-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * startup.el (fancy-splash-default-action): Discard only
-       mouse-down and succeeding mouse-up events in the splash screen
-       window so that drag-n-drop event can be processed.
-
-2005-11-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-mode): Add hacks for mail-mode and
-       message-mode.
-
-2005-11-18  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-table-sort-lines): New command.
-       (org-tbl-menu): Add entry for `org-table-sort-lines'.
-       (org-add-file): Command removed, use `org-agenda-file-to-front'
-       instead.
-       (org-export-icalendar): Use `org-icalendar-combined-name'.
-       (org-cycle-agenda-files, org-agenda-file-to-end)
-       (org-agenda-file-to-front): New commands.
-       (org-table-tab-jumps-over-hlines, org-export-html-style):
-       New options.
-       (org-table-next-field): Use `org-table-tab-jumps-over-hlines'.
-       (org-at-table.el-p, org-set-autofill-regexps, org-html-protect):
-       New functions.
-       (org-fill-paragraph): Call `org-table-align' in tables.
-       (org-mode): Call `org-set-autofill-regexps'.
-       (org-export-as-html): Support for local handformatted lists.
-       Modified to produce valid HTML 4.0.  Use `org-export-html-style'.
-       (org-export-local-list-max-depth): New option.
-       (org-html-expand): Use `org-html-protect'.
-
-2005-11-18  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-install-speedbar-variables): Bind gud-pp
-       to "p".
-       (gdb): Move definition of gud-pp to...
-
-       * progmodes/gdb-ui.el (gdb-ann3): ...here.  Make it work in the
-       speedbar.
-       (gdb-find-watch-expression): New function.
-
-2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * faces.el (face-attribute, set-face-attribute): Mention existence
-       of `:ignore-defface' setting in docstring.
-
-2005-11-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * simple.el (completion-setup-function): Fix last change.
-
-2005-11-17  John Paul Wallington  <jpw@pobox.com>
-
-       * ibuf-ext.el (ibuffer-interactive-filter-by-mode):
-       Use `posn-set-point' instead of `mouse-set-point' because the
-       latter is not fbound when configured without X.
-
-       * comint.el (comint-insert-input): Likewise.
-
-2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (hard-newline): New variable.
-       (sendmail-user-agent-compose, next-line): Use it.
-
-       * mail/sendmail.el (mail-setup, mail-send, mail-insert-from-field)
-       (sendmail-send-it, mail-do-fcc, mail-cc, mail-bcc, mail-fcc)
-       (mail-mail-reply-to, mail-mail-followup-to)
-       (mail-position-on-field, mail-signature, mail-yank-original)
-       (mail-attach-file): Likewise.
-
-       * mail/mailheader.el (mail-header-format)
-       (mail-header-format-function): Likewise.
-
-       * add-log.el (add-change-log-entry, change-log-merge): Likewise.
-
-2005-11-17  Juri Linkov  <juri@jurta.org>
-
-       * font-lock.el (font-lock-faces): Rename this defgroup from
-       `font-lock-highlighting-faces'.
-       (font-lock-comment-face, font-lock-comment-delimiter-face)
-       (font-lock-string-face, font-lock-doc-face)
-       (font-lock-keyword-face, font-lock-builtin-face)
-       (font-lock-function-name-face, font-lock-variable-name-face)
-       (font-lock-type-face, font-lock-constant-face)
-       (font-lock-warning-face, font-lock-negation-char-face)
-       (font-lock-preprocessor-face)
-       (font-lock-regexp-grouping-backslash)
-       (font-lock-regexp-grouping-construct): Rename :group from
-       `font-lock-highlighting-faces' to `font-lock-faces'.
-
-       * cus-edit.el (lisp, c, tex):
-       * progmodes/ada-mode.el (ada):
-       * progmodes/asm-mode.el (asm):
-       * progmodes/cperl-mode.el (cperl-faces):
-       * progmodes/cpp.el (cpp):
-       * progmodes/dcl-mode.el (dcl):
-       * progmodes/f90.el (f90):
-       * progmodes/fortran.el (fortran):
-       * progmodes/icon.el (icon):
-       * progmodes/idlwave.el (idlwave-misc):
-       * progmodes/m4-mode.el (m4):
-       * progmodes/make-mode.el (makefile):
-       * progmodes/meta-mode.el (meta-font):
-       * progmodes/modula2.el (modula2):
-       * progmodes/octave-mod.el (octave):
-       * progmodes/pascal.el (pascal):
-       * progmodes/perl-mode.el (perl):
-       * progmodes/prolog.el (prolog):
-       * progmodes/ps-mode.el (PostScript-edit):
-       * progmodes/scheme.el (scheme):
-       * progmodes/sh-script.el (sh-script):
-       * progmodes/simula.el (simula):
-       * progmodes/tcl.el (tcl):
-       * textmodes/nroff-mode.el (nroff):
-       * textmodes/reftex-vars.el (reftex-fontification-configurations):
-       * textmodes/sgml-mode.el (sgml):
-       * textmodes/texinfo.el (texinfo):
-       Add :link (custom-group-link font-lock-faces) to defgroup.
-
-       * hi-lock.el (hi-lock): Rename this defgroup from
-       `hi-lock-interactive-text-highlighting'.  Change parent group from
-       `faces' to `font-lock'.  Add link to the manual.
-       (hi-lock-mode, hi-lock-file-patterns-range)
-       (hi-lock-exclude-modes, hi-lock-faces): Rename :group from
-       `hi-lock-interactive-text-highlighting' to `hi-lock'.
-       (hi-lock-faces): Add :group `faces'.
-
-       * cus-edit.el (custom-variable-prompt): Clarify the code.
-
-       * faces.el (face-read-string): Set the default value arg of
-       completing-read.
-
-2005-11-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * rfn-eshadow.el (file-name-shadow-properties)
-       (file-name-shadow-tty-properties, file-name-shadow-mode):
-       Remove autoloads, because the file is now preloaded.
-
-2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * printing.el (easy-menu-intern): Don't define.
-       (pr-get-symbol): Use easy-menu-intern only if defined.
-
-       * simple.el (blink-matching-open): Simplify a bit.
-       (completion-setup-function): Fix the case of partial-completion-mode
-       when the minibuffer's contents start with "-".
-       Obey completion-base-size-function even when
-       minibuffer-completing-file-name is non-nil.
-
-2005-11-16  Richard M. Stallman  <rms@gnu.org>
-
-       * net/eudcb-ph.el (eudc-ph-open-session):
-       Use set-process-query-on-exit-flag.
-
-       * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-contents.
-
-       * international/ucs-tables.el (ucs-set-table-for-input):
-       Use make-local-variable, not make-variable-buffer-local.
-
-       * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
-       Improve warning message text.
-
-       * savehist.el (savehist-save-hook): Add :group.
-
-       * menu-bar.el (menu-bar-help-menu):
-       Rename Find Extra Packages to External Packages.
-
-       * cus-edit.el (Custom-reset-standard): Verify that
-       :custom-standard-value prop exists before calling it.
-
-       * apropos.el (apropos-calc-scores): Use apropos-pattern.
-
-2005-11-16  Martin Rudalics  <rudalics@gmx.at>
-
-       * wid-edit.el (color): Enclose %t in %{...%}.
-
-       * cus-edit.el (face): Enclose %t in %{...%}.
-
-2005-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
-
-       * savehist.el (savehist-mode-hook): Re-add the var.
-       (savehist-mode): Use it.
-
-2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/flyspell.el: Fix commenting convention.
-       Remove unnecessary leading * in custom docstrings.
-       (flyspell-emacs): Remove unused var.
-       (flyspell-delete-region-overlays): Use remove-overlays.
-       (flyspell-accept-buffer-local-defs): Use save-current-buffer.
-       (flyspell-debug-signal-no-check, flyspell-debug-signal-changed-checked)
-       (flyspell-debug-signal-pre-word-checked, flyspell-post-command-hook)
-       (flyspell-debug-signal-word-checked): Use with-current-buffer.
-       (make-flyspell-overlay): Don't locally reuse a global name.
-       (flyspell-highlight-incorrect-region)
-       (flyspell-highlight-duplicate-region): Use flyspell-unhighlight-at.
-       (flyspell-check-previous-highlighted-word): Use flyspell-overlay-p.
-       (flyspell-notify-misspell): Remove unused args `start' and `end'.
-       (flyspell-word): Adjust call accordingly.  Use ispell-send-string.
-       Wrap calls to accept-process-output inside with-local-quit since it's
-       often called from a post-command-hook.
-       (flyspell-correct-word, flyspell-auto-correct-word):
-       Use ispell-send-string.
-       (flyspell-xemacs-popup): Remove unused arg `event'.  Update call.
-
-       * calendar/diary-lib.el (diary-list-entries): Also hide the
-       terminating newline.
-
-2005-11-16  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/reftex.el (reftex-use-fonts): Remove the check for
-       window-system, to allow fonts on tty.
-
-2005-11-17  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-item-info): New function.
-       (gud-install-speedbar-variables): Use it to display data type
-       of watch expression as a tooltip in speedbar.
-
-2005-11-15  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * font-core.el (global-font-lock-mode): Add :version keyword,
-       because default was changed.
-
-       * jka-cmpr-hook.el (auto-compression-mode): Ditto.
-
-       * startup.el (command-line): Use `custom-reevaluate-setting' for
-       `file-name-shadow-mode'.
-
-       * loadup.el: Preload rfn-eshadow.
-
-       * rfn-eshadow.el (file-name-shadow-mode): Set :init-value to t.
-       Add :version keyword.
-       (file-name-shadow-properties, file-name-shadow-tty-properties)
-       (file-name-shadow): Add :version keyword.
-
-       * cus-edit.el (custom-add-parent-links): Fix bug whereby, for
-       instance, `(fringe custom-face)' shadowed `(fringe custom-group)'
-       in the custom-group property of the symbol frames and the fringe
-       group got no link to its parent group frames.
-       Doc fix.
-
-2005-11-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-stop-subjob): New function.
-       (gud-menu-map, gud-tool-bar-map): Use it.
-
-2005-11-16  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/gud.el (gud-menu-map): Let [stop] stop program rather
-       than kill it.
-       (gud-tool-bar-map): Likewise.  Move cont/until/finish buttons
-       to a more useful/logical place.
-
-2005-11-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Make visibility of stop and
-       go buttons complementary.
-
-2005-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * rfn-eshadow.el (rfn-eshadow-regexp): Remove.
-       (rfn-eshadow-sifn-equal): New function.
-       (rfn-eshadow-update-overlay): Rewrite to use substitute-in-file-name.
-
-2005-11-15  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-utils.el (viper-non-word-characters-reformed-vi):
-       Quote `-' in string.
-
-       * viper.el (viper-emacs-state-mode-list): Ensure that
-       rcirc-mode buffers come up in Emacs state.
-
-       * ediff-util.el (ediff-make-temp-file): Use proper file-name-handler
-       operation.
-
-2005-11-15  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term.el (term-termcap-format): Fix typos.
-       (term-down): Fix the negative argument case.
-
-2005-11-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el: Remove face-alias left over from change on
-       2005-08-15.
-       (gdb-ann3): New command gud-go.
-       (menu): Accomodate gdb-mi.el.
-       (gdb-assembler-custom): Make buffer of selected window current
-       so that set-window-point works.
-
-       * progmodes/gud.el (gud-menu-map, gud-tool-bar-map): Re-define
-       buttons and include new ones.
-
-2005-11-16  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/gud.el (gud-tool-bar-item-visible-no-fringe): New function.
-       (gud-menu-map): Use it.
-
-2005-11-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * jka-cmpr-hook.el (auto-compression-mode): Enable it in a way
-       that works correctly for Custom and that does not override a user
-       who disables it.
-
-       * help-mode.el (help-make-xrefs, help-xref-on-pp)
-       (help-xref-interned, help-follow): Make hyperlinks for variables
-       that are unbound, but have a non-nil variable-documentation property.
-
-       * emacs-lisp/derived.el (define-derived-mode): Remove defvar for
-       mode hook.  (It conflicted with defcustoms for some mode hooks.)
-       Use the `variable-documentation' property to give the mode hook a
-       docstring and expand that docstring.
-
-2005-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
-
-       * savehist.el (savehist-mode): Don't bother with
-       `custom-set-minor-mode'.
-       (savehist-coding-system): Check XEmacs version.
-       (history-length): Declare also at run time.
-       (savehist-mode): Don't emit a message.  Don't run the minor mode hook.
-       Don't set the customize state.
-       (savehist-minibuffer-hook): Special case for when
-       minibuffer-history-variable is equal to t.
-
-2005-11-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * files.el (write-file): Refresh VC status.
-
-       * calendar/diary-lib.el (diary-list-entries, diary-show-all-entries)
-       (mark-diary-entries, make-diary-entry): Check default-major-mode rather
-       than fundamental-mode to see if the mode was set.
-
-2005-11-14  Romain Francoise  <romain@orebokech.com>
-
-       * dired-x.el: If `vm-visit-folder' doesn't exist, define it as a
-       dummy function in `eval-when-compile' to avoid compiler warning.
-       Require `man' at compile time.
-
-2005-11-14  Jay Belanger  <belanger@truman.edu>
-
-       * calc-alg.el (calcFunc-write-out-power): Rename it to
-       calcFunc-powerexpand.
-       (math-write-out-power): Rename it to math-powerexpand; have it
-       handle negative exponents.
-       (calc-writeoutpower): Rename it to calc-powerexpand.
-
-       * calc-ext.el: Change calcFunc-writeoutpower and
-       calc-writeoutpower to calcFunc-powerexpand and calc-powerexpand in
-       autoloads.
-       Add calcFunc-ldiv to autoloads.
-
-       * calc-arith.el (calcFunc-ldiv): New function.
-
-       * calc.el (calc-left-divide): New function.
-
-2005-11-14  Juri Linkov  <juri@jurta.org>
-
-       * cus-edit.el (custom-variable-prompt): Set the default value arg
-       of completing-read.
-
-       * cus-dep.el (custom-make-dependencies): Reverse the list of
-       found dependencies.
-
-2005-11-14  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * menu-bar.el (menu-bar-options-menu): Delete "Syntax
-       Highlighting" entry, it is on by default now.
-       (menu-bar-options-save): Do not save global-font-lock-mode.
-
-2005-11-13  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-large-region):
-       Call flyspell-accept-buffer-local-defs.
-
-2005-11-13  Agustin Martin  <agustin.martin@hispalinux.es>
-
-       * textmodes/flyspell.el (flyspell-notify-misspell):
-       Fix misspelling of "Misspelling".
-       (flyspell-process-localwords): New function.
-       (flyspell-large-region): Call flyspell-process-localwords and
-       flyspell-delete-region-overlays.
-       (flyspell-delete-region-overlays): New function.
-       (flyspell-delete-all-overlays): Call that.
-
-2005-11-13  Richard M. Stallman  <rms@gnu.org>
-
-       * help.el (help-for-help-internal): Improve doc of C-h a.
-       (describe-key): Improve prompt; doc fix.
-
-2005-11-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * vc-svn.el (vc-svn-registered): Catch all errors.
-
-       * cus-dep.el (custom-make-dependencies): Typo.
-
-2005-11-13  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp-util.el (top): Fix compilation warning.
-
-2005-11-13  Kim F. Storm  <storm@cua.dk>
-
-       * help.el (help-for-help-internal): Fix `a' entry.  Add `d' entry.
-
-2005-11-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Move parentheses (again).
-       (gud-speedbar-buttons): Match on "const char *" too.
-
-       * progmodes/gdb-ui.el (gdb-var-create-handler)
-       (gdb-var-list-children-handler): Match on "const char *" too.
-       (gdb-var-evaluate-expression-handler): Match on empty string.
-       (gdb-var-update-handler): Only call
-       gdb-var-evaluate-expression-handler when required.
-
-2005-11-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Revert to window-fringes for
-       selected window.  This still doesn't work for speedbar.
-       (gud-speedbar-buttons): Handle string expressions properly.
-
-       * progmodes/gdb-ui.el (gdb-var-evaluate-expression-handler)
-       (gdb-var-create-handler): Handle string expressions properly.
-       (gdb-var-list-children-regexp, gdb-var-list-children-handler):
-       Handle string expressions properly.  Move "type" field into regexp.
-
-2005-11-12  Karl Fogel  <kfogel@red-bean.com>
-
-       * bookmark.el (bookmark-maybe-message): New function to reduce
-       code duplication: invokes `message' iff baud-rate is high enough.
-       (bookmark-write-file): Use above instead of an inline conditional.
-       (bookmark-load): Same.
-
-2005-11-12  Karl Fogel  <kfogel@red-bean.com>
-
-       * bookmark.el (bookmark-write-file): Don't visit the destination
-       file, just write the data to it using write-region.  This is
-       similar to saveplace.el at 2005-05-29T08:36:26Z!rms@gnu.org, but with an additional
-       change to avoid visiting the file in the first place.
-
-2005-11-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * hi-lock.el (hi-lock-mode): Set the default value of
-       font-lock-defaults.
-
-2005-11-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * find-lisp.el (find-lisp-find-dired-insert-file): Pass `string'
-       arg to `file-attributes'.
-       (find-lisp-format): The UID and GID can now be strings.
-
-2005-11-12  Kim F. Storm  <storm@cua.dk>
-
-       * help.el (help-map): Bind C-h d to apropos-documentation.
-
-       * simple.el (what-cursor-position): Print (EOB) instead of (100%)
-       when point is at end-of-buffer.
-
-       * apropos.el (apropos-match-face): Doc fix.
-       (apropos-sort-by-scores): Add new choice `verbose'.
-       (apropos-documentation-sort-by-scores): New defcustom.
-       (apropos-pattern): Now contains the pattern entered by the user.
-       (apropos-pattern-quoted): New defvar.
-       (apropos-regexp): New defvar, containing the regexp corresponding
-       to apropos-pattern.
-       (apropos-all-words-regexp): Rename from apropos-all-regexp.
-       (apropos-read-pattern): New defun.  Use it to read pattern arg in
-       interactive calls; returns list of words for a word list, and
-       string for a regexp.
-       (apropos-parse-pattern): Rename from apropos-rewrite-regexp.  Now
-       parses a list of words or regexp as returned by apropos-read-pattern.
-       (apropos-calc-scores): Return nil if apropos-regexp doesn't match.
-       (apropos-score-doc): Return a very high score if the string
-       entered by the user matches literally.
-       (apropos-variable): Doc fix.  Use apropos-read-pattern.
-       (apropos-command): Doc fix.  Use apropos-read-pattern and
-       apropos-parse-pattern.  Call apropos-print with nosubst=t.
-       (apropos, apropos-value): Doc fix.  Use apropos-read-pattern and
-       apropos-parse-pattern.
-       (apropos-documentation): Doc fix.  Use apropos-read-pattern and
-       apropos-parse-pattern.  Locally bind apropos-sort-by-scores to
-       apropos-documentation-sort-by-scores.  Call apropos-print with
-       nosubst=t.
-       (apropos-documentation-internal): Pass doc string through
-       substitute-key-definition before adding text properties.
-       Highlight substring matching literal user input if possible.
-       (apropos-documentation-check-doc-file): Remove locals beg and end.
-       Fix calculation of score (as added twice).  Pass doc string through
-       substitute-key-definition before adding text properties.
-       (apropos-documentation-check-elc-file): Pass doc string through
-       substitute-key-definition before adding text properties.
-       Highlight substring matching literal user input if possible.
-       (apropos-print): Add new arg NOSUBST; if set, command and variable
-       doc strings have already been passed through substitute-key-definition.
-       Add code to handle apropos-accumulator items without score element
-       for backwards compatibility (e.g. with woman package).
-       Only show scores if apropos-sort-by-scores is `verbose'.
-
-2005-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * jka-cmpr-hook.el (jka-compr-install): Use push and dolist.
-       Add jka-compr-load-suffixes to load-suffixes.
-
-       * jka-compr.el: Require jka-cmpr-hook.
-       (jka-compr-info-compress-message, jka-compr-info-compress-program)
-       (jka-compr-info-compress-args, jka-compr-info-uncompress-message)
-       (jka-compr-info-uncompress-program, jka-compr-info-uncompress-args)
-       (jka-compr-info-can-append, jka-compr-info-strip-extension)
-       (jka-compr-info-file-magic-bytes, jka-compr-get-compression-info)
-       (jka-compr-info-regexp): Remove.  Provided by jka-cmpr-hook.
-       (jka-compr-uninstall): Remove entries from
-       jka-compr-added-to-file-coding-system-alist after they are used.
-       (jka-compr-error): Remove unused var `curbuf'.
-       (jka-compr-file-local-copy): Remove unused var `notfound'.
-
-2005-11-10  Romain Francoise  <romain@orebokech.com>
-
-       * apropos.el (apropos-calc-scores): Use `apropos-pattern'.
-
-2005-11-11  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Move parentheses.
-       (gdb): New command gud-pv.
-
-2005-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * tar-mode.el: Remove spurious or unnecessary leading stars
-       in docstrings.
-       (tar-header-block-tokenize): Also obey default-file-name-coding-system.
-       (tar-parse-octal-integer-safe): Use mapc.
-       (tar-header-block-summarize): Remove unused var `ck'.
-       (tar-summarize-buffer): Don't clear the modified-p bit if it wasn't
-       cleared before.  Obey default-enable-multibyte-characters.
-       Use mapconcat.  Simplify setting of tar-header-offset.
-       (tar-mode-map): Move initialization inside delcaration.
-       (tar-flag-deleted): Use `abs'.
-       (tar-expunge-internal): Remove unused var `line'.
-       (tar-expunge-internal): Don't hardcode point-min==1.
-       (tar-expunge): Widen while doing set-buffer-multibyte.
-       (tar-rename-entry): Use file-name-coding-system.
-       (tar-alter-one-field): Don't hardcode point-min==1.
-       (tar-subfile-save-buffer): string-as-unibyte works on unibyte strings.
-       (tar-pad-to-blocksize): Don't hardcode point-min==1.  Clarify the code.
-
-2005-11-10  Masatake YAMATO  <jet@gyve.org>
-
-       * add-log.el (add-log-current-defun): Handle class::method
-       notation of c++.  Fix incorrect comment.
-
-2005-11-10  Alan Mackenzie  <acm@muc.de>
-
-       * help-fns.el (describe-variable): Make C-h v work when a variable
-       has variable documentation yet is unbound.
-
-2005-11-10  Masatake YAMATO  <jet@gyve.org>
-
-       * man.el (Man-highlight-references): Set an empty
-       string to `Man-arguments' if it is nil.
-       Suggested by Reiner Steib <Reiner.Steib@gmx.de>.
-
-2005-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * Makefile.in (mh-loaddefs.el, loaddefs.el): Better follow the
-       commenting conventions.
-
-       * cus-dep.el (custom-make-dependencies): Simplify.
-       Better follow the commenting conventions.
-
-2005-11-09  Richard M. Stallman  <rms@gnu.org>
-
-       * apropos.el (apropos-pattern): Rename from apropos-regexp.
-       (apropos-orig-pattern): Rename from apropos-orig-regexp.
-       All uses changed.
-       (apropos-rewrite-regexp): Doc fix.
-       (apropos-variable, apropos-command, apropos, apropos-value):
-       Change prompt; carry through the argument renaming.
-
-2005-11-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * find-lisp.el: Require dired.
-       (find-lisp-find-dired-internal): Do not call
-       `abbreviate-file-name' on DIR.
-
-2005-11-10  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gdb): Make gud-pp use user-defined command pp1.
-
-2005-11-09  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Ensure tool-bar is constant
-       when using the speedbar.
-       (gdb): New command gud-pp.
-       (gud-menu-map, gud-tool-bar-map): Put it on the tool bar.
-
-2005-11-09  Juri Linkov  <juri@jurta.org>
-
-       * replace.el (occur-excluded-properties): New defcustom.
-       (occur-1, occur-engine, occur-accumulate-lines): Use it.
-
-2005-11-08  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-units.el (math-convert-units): Replace any composite
-       unit by its definition.
-
-2005-11-08  Lars Hansen  <larsh@soem.dk>
-
-       * emacs-lisp/autoload.el (update-directory-autoloads):
-       Add obsolete function alias.
-
-2005-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/lisp-mode.el (lisp-mode-variables): Don't set
-       comment-indent-function.
-       (lisp-comment-indent): Replace by an alias for comment-indent-default.
-
-       * reveal.el (reveal-post-command): Rework the handling of
-       reveal-open-spots, so as to be more reliable.  There were several
-       tricky corner cases where an open spot might be lost, or where
-       a closed spot might end up on the list of open spots.
-       Only reveal text that's ellipsised.
-
-2005-11-07  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-export-as-html): Remove bogus (debug) form.
-
-2005-11-07  John Paul Wallington  <jpw@gnu.org>
-
-       * ibuffer.el (ibuffer): Search iconified frames too when
-       getting Ibuffer buffer's window.
-
-2005-11-06  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/compile.el (compilation-internal-error-properties):
-       save-excursion around the computation of MARKER.
-
-2005-11-06  Piet van Oostrum  <piet@cs.uu.nl>
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       flyspell-get-word returns a list, not just a string.
-
-2005-11-06  John Paul Wallington  <jpw@pobox.com>
-
-       * ibuffer.el (ibuffer): Search all visible frames when getting
-       Ibuffer buffer's window.
-
-2005-11-07  Masatake YAMATO  <jet@gyve.org>
-
-       * man.el (Man-reference-regexp): Accept spaces between
-       `Man-name-regexp' and `Man-section-regexp'.
-       (Man-apropos-regexp): New variable.
-       (Man-abstract-xref-man-page): Use value for `Man-target-string'
-       if available.
-       (Man-highlight-references, Man-highlight-references0):
-       Handle the case when `Man-arguments' includes "-k".
-       (Man-highlight-references0): Rename the argument `TARGET-POS' to
-       `TARGET'. `TARGET' can be a number, function or nil.
-
-2005-11-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-create-handler, gdb-var-delete)
-       (gdb-edit-value, gdb-speedbar-expand-node, gdb-get-create-buffer)
-       (gdb-breakpoints-mode, gdb-toggle-breakpoint, gdb-delete-breakpoint)
-       (gdb-goto-breakpoint, gdb-frames-mode, gdb-registers-mode)
-       (gdb-locals-mode, gdb-find-file-hook): Use buffer-local-value.
-       (gdb-send-item): Use buffer-local-value and simplify.
-
-2005-11-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * startup.el (command-line): Use `custom-reevaluate-setting' for
-       `global-font-lock-mode'.
-
-       * font-core.el (global-font-lock-mode): Enable `global-font-lock-mode'
-       by default, except in batch mode or when the -D option is given.
-
-       * emacs-lisp/easy-mmode.el (define-global-minor-mode): Pass all
-       specified keyword args on to `define-minor-mode'.  Update docstring.
-
-2005-11-05  Romain Francoise  <romain@orebokech.com>
-
-       * replace.el (occur-engine): Add marker at end of line, too.
-
-2005-11-04  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
-       (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
-       (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt)
-       (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE
-       argument to all these routines, so the passphrase can be managed
-       externally and passed in to the system.
-       (pgg-pgp-decrypt-region, pgg-pgp-sign-region): Use new name for
-       pgg-add-passphrase-to-cache function.
-
-       * pgg-pgp5.el (pgg-pgp5-encrypt-region, pgg-pgp5-decrypt-region)
-       (pgg-pgp5-encrypt-symmetric-region, pgg-pgp5-encrypt-symmetric)
-       (pgg-pgp5-encrypt, pgg-pgp5-decrypt-region, pgg-pgp5-decrypt)
-       (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE
-       argument to all these routines, so the passphrase can be managed
-       externally and passed in to the system.
-       (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
-       function.
-
-2005-11-04  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * font-lock.el: Don't deal with font-lock-face-attributes here,
-       move the code ...
-
-       * startup.el (command-line): ... here.  Use face-spec-set instead
-       of custom-declare-face.
-
-       * faces.el (face-spec-set): Reset the face if spec is not nil.
-
-2005-11-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * newcomment.el (comment-region-internal): Box more tightly in the
-       common case where there's no TAB in the boxed text.
-
-2005-11-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * info.el (info-tool-bar-map): Use images prev-node, next-node and
-       up-node.
-
-2005-11-04  Ulf Jasper  <ulf.jasper@web.de>
-
-       * newsticker.el: Commentary updated.  Code formatting changed.
-       (newsticker-version): Change to "1.9".
-       (newsticker, newsticker-feed): Doc fix.
-       (newsticker-url-list): Doc fix.  Add option "Weekly".
-       (newsticker-retrieval-interval): Add option "Weekly".
-       (newsticker-headline-processing): Doc fix.
-       (newsticker-auto-mark-filter): Remove.
-       (newsticker-auto-mark-filter-list): New.
-       (newsticker-layout, newsticker-sort-method): Doc fix.
-       (newsticker-hide-old-items-in-newsticker-buffer)
-       (newsticker-heading-format, newsticker-item-format)
-       (newsticker-desc-format): Doc fix.
-       (newsticker-show-all-rss-elements): Remove.
-       (newsticker-show-all-news-elements): New.
-       (newsticker-faces, newsticker-ticker): Doc fix.
-       (remove-from-invisibility-spec): Code formatting.
-       (newsticker--process-ids): New.
-       (newsticker-mode): Doc fix.
-       (newsticker-mode): Change mode-line-format.
-       (newsticker-start): Remove debug output.
-       (newsticker-start-ticker): Doc fix.  Add autoload cookie.
-       (newsticker-w3m-show-inline-images): Code formatting.
-       (newsticker-next-item): Call `force-mode-line-update'.
-       (newsticker-previous-item): Call `force-mode-line-update'.
-       (newsticker-next-feed): Call `force-mode-line-update'.
-       (newsticker-previous-feed): Call `force-mode-line-update'.
-       (newsticker-mark-all-items-at-point-as-read): Code formatting.
-       (newsticker-show-old-items): Do not show descs.
-       (newsticker-hide-entry): Hide too much.
-       (newsticker-hide-entry, newsticker-show-entry)
-       (newsticker-toggle-auto-narrow-to-feed): Code formatting.
-       (newsticker-set-auto-narrow-to-feed): Update buffer immediately.
-       (newsticker-toggle-auto-narrow-to-item): Code formatting.
-       (newsticker-set-auto-narrow-to-item): Update buffer immediately.
-       (newsticker-running-p, newsticker-ticker-running-p): Autoload cookie.
-       (newsticker-get-news): Call `force-mode-line-update'.
-       Collect process ids.
-       (newsticker--sentinel): Change coding system handling.
-       Move image retrieval to new functions newsticker--get-logo-url-*.
-       Move feed parsing to new functions newsticker--parse-*.
-       Update list of process ids.
-       (newsticker--get-logo-url-atom-1.0, newsticker--get-logo-url-atom-0.3)
-       (newsticker--get-logo-url-rss-2.0, newsticker--get-logo-url-rss-1.0)
-       (newsticker--get-logo-url-rss-0.92, newsticker--get-logo-url-rss-0.91)
-       (newsticker--parse-atom-0.3, newsticker--parse-atom-1.0)
-       (newsticker--parse-rss-0.91, newsticker--parse-rss-0.92)
-       (newsticker--parse-rss-1.0, newsticker--parse-rss-2.0)
-       (newsticker--parse-generic-feed, newsticker--parse-generic-items): New.
-       (newsticker--decode-coding-string): Remove.
-       (newsticker--decode-numeric-entities): Check input.  Format code.
-       (newsticker--remove-whitespace): Check input.
-       (newsticker--do-forget-preformatted): Doc fix.
-       (newsticker--decode-rfc822-date): Allow for missing time.
-       (newsticker--update-process-ids): New.
-       (newsticker--image-sentinel): Change comment.
-       (newsticker--image-read): Change error message.
-       (newsticker--imenu-goto): Doc fix.  Show headline title.
-       (newsticker--buffer-set-uptodate): Call `force-mode-line-update'.
-       (newsticker--buffer-do-insert-text): Clean whitespace in
-       html-rendered headline title.  Code formatting.
-       Call `newsticker--buffer-print-extra-elements'.
-       (newsticker--buffer-print-extra-element): Remove.
-       (newsticker--buffer-print-extra-elements): New.
-       (newsticker--buffer-do-print-extra-element): New.
-       (newsticker--buffer-insert-enclosure): Doc fix.  Use MBytes for
-       large sizes.
-       (newsticker--run-auto-mark-filter)
-       (newsticker--do-run-auto-mark-filter):
-       Use `newsticker-auto-mark-filter-list'.
-
-2005-11-04  Ryan Yeske  <rcyeske@gmail.com>
-
-       * net/rcirc.el: Use split-string OMIT-NULLS argument.
-       (rcirc-print): Force redisplay before running hooks.  Do long
-       buffer truncation after making new text read-only.  Deal with nil
-       text when decoding strings.  If TARGET is nil, use either the
-       currently selected buffer, if it is an rcirc buffer and of the
-       same process or the process buffer.
-       (rcirc-mode): Remove header-line.  Recompute short buffer names.
-       Initialize rcirc-buffer-alist here instead of rcirc-get-buffer-create.
-       (rcirc-short-buffer-name): Add variable.
-       (rcirc-kill-buffer-hook): Recompute short buffer names.
-       Remove nick from private channel.
-       (rcirc-send-input): Send command text to current-buffer.
-       Don't clear overlay arrow here.
-       (rcirc-short-buffer-name): Return a short buffer name.
-       (rcirc-update-short-buffer-names, rcirc-abbreviate)
-       (rcirc-rebuild-tree, rcirc-make-trees): Add functions to generate
-       buffer-name abbreviations.
-       (rcirc-kill-buffer-hook-1): Split to make debugging easier.
-       Do not touch nick-table when killing a parted channel.
-       (rcirc-window-configuration-change): Rename from rcirc-update-activity.
-       Clear arrow from current buffer if it is now hidden.
-       (rcirc-current-buffer): Add variable.
-       (rcirc-my-nick, rcirc-other-nick, rcirc-server)
-       (rcirc-nick-in-message, rcirc-prompt, rcirc-mode-line-nick):
-       Remove -face from names.
-       (rcirc-update-activity-string): Print "DND" when globally ignoring
-       activity.
-       (rcirc-ignore-buffer-activity-flag): Rename from
-       rcirc-ignore-channel-activity.
-       (rcirc-ignore-all-activity-flag): Doc fix.
-       (rcirc-channels): Remove variable.
-       (rcirc-kill-buffer-hook):
-       (rcirc-get-buffer-create): Add nick to private channel.
-       (rcirc-multiline-edit-submit): Remove tabs.
-       (rcirc-put-nick-channel, rcirc-channel-nicks): Look up nicks case
-       folded.
-       (rcirc-remove-nick-channel): Bug fix.
-       (rcirc-toggle-ignore-buffer-activity): Rename from
-       rcirc-toggle-ignore-channel-activity.
-       (rcirc-record-activity): Add buffers to the front of the list.
-       (rcirc-update-activity): Remove killed buffers from list.
-       (rcirc-process-server-response-1): Remove last argument if it is
-       null before calling handler.
-       (rcirc): Add "rcirc" defcustom prefix.
-       (rcirc-prompt): Simplify default prompt.
-       Use custom-initialize-default.
-       (rcirc-private-chats): Remove variable.
-       (rcirc-prompt): Change initialization.
-       (rcirc-version): Remove function.
-       (rcirc-id-string): Add constant.
-       (rcirc-last-buffer): Remove variable.
-       (rcirc-buffer-alist): Add variable.
-       (rcirc-connect): Update variable setup.
-       (rcirc-sentinel, rcirc-update-prompt): Use `rcirc-buffer-alist'.
-       (rcirc-trap-errors-flag): Rename from `rcirc-trap-errors' change
-       default.
-       (rcirc-handler-generic): Trigger activity.
-       (rcirc-send-message): Create the buffor of the target.
-       (rcirc-generate-new-buffer-name): Rename from `rcirc-get-buffer-name'.
-       (rcirc-get-buffer): Just return nil if there is no matching buffer.
-       (rcirc-multiline-edit-cancel): Remove function.
-       (rcirc-set-last-buffer): Remove function.
-       (rcirc-get-any-buffer): Add function.
-       (rcirc-join-channels): Don't print /join text.
-       (rcirc-toggle-ignore-channel-activity): Add and update echo area
-       messages.
-       (rcirc-cmd-ctcp): Use rcirc-send-string to send request.
-       (rcirc-handler-NOTICE): Recognize CTCP responses.
-       (rcirc-handler-332, rcirc-handler-332): Use a temp buffer for
-       constructing TOPIC string for buffers we are not JOINed.
-       (rcirc-handler-CTCP-response): Add handler.
-       (rcirc-multiline-edit-submit): Restore the window-configuration
-       before adjusting point.
-       (rcirc): Add customization group.
-       (rcirc-server, rcirc-port, rcirc-nick, rcirc-user-name)
-       (rcirc-user-full-name, rcirc-startup-channels-alist)
-       (rcirc-fill-flag, rcirc-fill-column, rcirc-fill-prefix)
-       (rcirc-ignore-all-activity-flag, rcirc-time-format)
-       (rcirc-input-ring-size, rcirc-read-only-flag)
-       (rcirc-buffer-maximum-lines, rcirc-authinfo-file-name)
-       (rcirc-auto-authenticate-flag, rcirc-prompt, rcirc-print-hooks):
-       Change defvar to defcustom.
-       (rcirc-update-prompt): Add optional ALL arg, which will update
-       prompts in all rcirc buffers.  Regexp quote replacement text.
-       (rcirc-fill-column): Accept frame-width as a value.
-       (rcirc-set-changed): Add function.
-       (rcirc-next-active-buffer): Write more meaningful messages.
-       (rcirc-faces): Add customization group.
-       (rcirc-my-nick-face, rcirc-other-nick-face, rcirc-server-face)
-       (rcirc-nick-in-message-face, rcirc-prompt-face)
-       (rcirc-mode-line-nick-face): Move into rcirc-faces group.
-       (with-rcirc-process-buffer): Move before first usage.
-       (rcirc-debug-buffer): Rename from `rcirc-log-buffer'.
-       (rcirc-debug-flag): Rename from `rcirc-log-p'.
-       (rcirc-debug): Rename from `rcirc-log'.
-       (rcirc-format-response-string): Do not print `-' chars for a
-       NOTICE with no sender.  Simplify output of server responses.
-
-2005-11-04  Henrik Enberg  <henrik.enberg@telia.com>
-
-       (rcirc-browse-url-map, rcirc-browse-url-at-point)
-       (rcirc-browse-url-at-mouse, rcirc-mangle-text):
-       Make urls mouse and RET clickable.
-
-2005-11-04  Henrik Enberg  <henrik.enberg@telia.com>
-
-       * mail/rmailout.el (rmail-output-to-rmail-file, rmail-output): Doc fix.
-
-2005-11-04  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
-       (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
-       (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt)
-       (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE
-       argument to all these routines, so the passphrase can be managed
-       externally and passed in to the system.
-       (pgg-pgp-decrypt-region, pgg-pgp-sign-region): Use new name for
-       pgg-add-passphrase-to-cache function.
-
-       * pgg-pgp5.el (pgg-pgp5-encrypt-region, pgg-pgp5-decrypt-region)
-       (pgg-pgp5-encrypt-symmetric-region, pgg-pgp5-encrypt-symmetric)
-       (pgg-pgp5-encrypt, pgg-pgp5-decrypt-region, pgg-pgp5-decrypt)
-       (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE
-       argument to all these routines, so the passphrase can be managed
-       externally and passed in to the system.
-       (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
-       function.
-
-2005-11-04  Edward O'Connor  <hober0@gmail.com>  (tiny change)
-
-       * net/goto-addr.el (goto-address-url-regexp): Remove `data:' URLs
-       from goto-address-url-regexp.
-
-2005-11-04  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-read-date, org-goto-calendar)
-       (org-recenter-calendar, org-agenda-goto-calendar):
-       Temporarily clear `calendar-move-hook'.
-
-2005-11-04  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * ediff-merge.el (ediff-merge-region-is-non-clash): Return t, if not
-       merging.
-
-       * ediff-util.el (ediff-previous-difference): Don't skip regions that
-       have merge clashes.
-
-2005-11-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mwheel.el (mouse-wheel-down-event, mouse-wheel-up-event):
-       Undo previous change.
-
-       * startup.el (command-line): Use `custom-reevaluate-setting' for
-       mouse-wheel-down-event and mouse-wheel-up-event.  Don't call
-       tty-register-default-colors on Mac.
-
-2005-11-04  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-buffer-type): Remove duplicate declaration.
-       (gdb-buffer-type): Make it automatically buffer local...
-       (gdb-get-create-buffer): ...and set it accordingly.
-       (gdb-frame-gdb-buffer, gdb-display-gdb-buffer): Make these
-       actually work.
-
-2005-11-03  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * font-lock.el (font-lock-warning-face): Use the more vivid red1,
-       not red.
-
-2005-11-04  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gud-watch): Use save-selected-window in
-       case GUD buffer is not visible.
-       (gdb-goto-breakpoint): Try to force display in source buffer.
-       (gdb-frame-gdb-buffer): Copy other similar functions.
-       (gdb-restore-windows): Don't display source if not asked for.
-       (gdb-assembler-buffer-name): Don't capitalise.
-
-2005-11-03  Richard M. Stallman  <rms@gnu.org>
-
-       * wid-edit.el (key-sequence): New widget type.
-
-       * simple.el (set-mark-command-repeat-pop): New variable.
-       (set-mark-command): Only interpret plan C-@ after a pop as a pop
-       if set-mark-command-repeat-pop is true.
-
-       * info.el (Info-fontify-node): Don't display extra "see" if there
-       already is one here.
-
-       * mouse.el: Fix special handling of DEL after dragging a region:
-       (mouse-drag-region-1): Treat mouse-set-region like mouse-set-point.
-       (mouse-region-delete-keys): Change to defcustom.  Add [backspace].
-
-       * mail/feedmail.el: Use insert-buffer-substring, not insert-buffer.
-
-       * textmodes/ispell.el (ispell-command-loop): Change `i' description
-       not to assume it pertains to an affix.
-
-       * textmodes/flyspell.el (flyspell-post-command-hook):
-       Bind deactivate-mark to prevent deactivation.
-
-2005-11-03  Lars Hansen  <larsh@soem.dk>
-
-       * dired-x.el: Add menu bindings for dired-do-find-marked-files,
-       dired-do-relsymlink, dired-flag-extension, dired-mark-extension,
-       dired-mark-omitted, dired-do-relsymlink-regexp, dired-omit-mode.
-
-2005-11-03  Romain Francoise  <romain@orebokech.com>
-
-       * net/eudcb-mab.el: Now part of GNU Emacs.  Update FSF's address.
-       Update copyright years.
-
-2005-11-03  Sam Steingold  <sds@gnu.org>
-
-       * mwheel.el (mouse-wheel-down-event, mouse-wheel-up-event):
-       Use system-type instead of window-system because window-system is not
-       correctly defined during loadup.
-
-2005-11-02  Mark A. Hershberger  <mah@everybody.org>
-
-       * xml.el (xml-syntax-table): Allow xml.el to compile in XEmacs.
-       (xml-parse-tag): Join strings separated by a comment properly.
-
-2005-11-02  Andreas Schwab  <schwab@suse.de>
-
-       * emacs-lisp/byte-opt.el (byte-optimize-pure-func): Fix last fix.
-
-2005-11-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/byte-opt.el (string-to-syntax): Mark it as pure.
-       (byte-optimize-pure-func): Quote the eval'd value.
-
-       * progmodes/perl-mode.el (perl-font-lock-special-syntactic-constructs):
-       Rename from perl-font-lock-syntactic-face-function.
-       Change the calling convention so it can be used as a font-lock MATCHER.
-       Do the parse-partial-sexp loop outselves.
-       (perl-font-lock-syntactic-keywords): Use it.
-       (perl-mode): Don't set font-lock-syntactic-face-function any more.
-
-2005-11-02  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-mouse-until): Make it work in the
-       disassembly buffer too.
-       (gdb-exited): Remove overlay arrows when execution has finished.
-       (gdb-info-frames-custom, gdb-info-threads-custom)
-       (gdb-info-registers-custom): Don't add inappropriate text
-       properties if inferior is not active.
-
-2005-11-02  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/fortran.el (fortran-blink-match):
-       Use `blink-matching-delay'.
-
-2005-11-02  John Mongan  <jmongan@mccammon.ucsd.edu>  (tiny change)
-
-       * progmodes/f90.el (f90-match-end): Use `blink-matching-delay'.
-
-2005-11-02  Lars Hansen  <larsh@soem.dk>
-
-       * net/tramp.el (tramp-action-out-of-band): Handle scp message
-       "Permission denied".
-
-2005-11-01  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       Pass nil to flyspell-get-word.
-
-2005-11-02  Kim F. Storm  <storm@cua.dk>
-
-       * menu-bar.el (menu-bar-options-menu): Show "Shift Movement (CUA)"
-       item instead of "C-x/C-c/C-v (CUA)" if cua-enable-cua-keys is nil.
-
-2005-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * calendar/cal-menu.el (date, event): Don't declare as dynamic-var.
-       (calendar-mouse-holidays, calendar-mouse-view-diary-entries)
-       (calendar-mouse-print-dates): Add optional `event' argument.
-       Update interactive-spec.
-       (calendar-mouse-cal-tex-menu, cal-tex-mouse-filofax):
-       Use `calendar-event-to-date' instead of `event'.
-
-2005-11-02  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/ld-script.el (ld-script-builtins):
-       Add more words: "DATA_SEGMENT_ALIGN", "DATA_SEGMENT_END",
-       "DATA_SEGMENT_RELRO_END", "LENGTH", "ORIGIN", and "SEGMENT_START".
-       (auto-mode-alist): Accept .ld, .lds, ld.in and .lds.in.
-
-2005-11-01  Romain Francoise  <romain@orebokech.com>
-
-       * vc-sccs.el: Update copyright year.
-       * ezimage.el: Likewise.
-
-2005-11-01  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>  (tiny change)
-
-       * info.el (Info-fontify-node): Use `string-width' for fontifying
-       underlined titles.
-
-2005-11-01  Juri Linkov  <juri@jurta.org>
-
-       * info.el (Info-fontify-node): Downcase node header keywords Node,
-       Prev, Next, Up before comparison.
-       (Info-history): Insert absolute directory name, and put invisible
-       property on it.
-
-2005-11-01  Juri Linkov  <juri@jurta.org>
-
-       * info.el (Info-file-supports-index-cookies): New variable.
-       (Info-find-node-2): Check makeinfo version for index cookie support.
-       (Info-index-nodes): Search for nodes with index cookies only when
-       Info-file-supports-index-cookies is t.  Otherwise, search nodes
-       with "Index" in the node name.
-       (Info-index-node): Search index cookie in the current node only when
-       Info-file-supports-index-cookies is t.  Otherwise, check the word
-       "Index" in the node name.
-       (Info-find-emacs-command-nodes): Remove code that searches nodes
-       with "Index" node name in the top menu.
-
-2005-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/scheme.el (scheme-mode-variables): Use the default
-       comment-indent-function.
-
-       * faces.el (face-attribute): Handle the case where a face inherits from
-       a non-existent face.
-
-       * simple.el (eval-expression-print-format): Use lisp-readable syntax
-       for octal and hexa output, and merge the char into the paren.
-       (kill-new): Use push.
-       (copy-to-buffer): Use with-current-buffer.
-       (completion-setup-function): Move code in loop to remove redundancy.
-       (minibuffer-local-must-match-map): Don't add bindings that duplicate
-       those inherited from minibuffer-local-completion-map.
-
-       * savehist.el (savehist-mode) <defcustom>:
-       Use custom-set-minor-mode if available.
-       (savehist-mode) <defun>: Run the minor mode hook, set the custom state
-       and emit a message if applicable.
-
-2005-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
-
-       * savehist.el: Sync up to version 19.
-       (savehist-mode): New minor mode.
-       (savehist-file): Use ~/.emacs.d or ~/.xemacs if available.
-       (savehist-length): Remove (use history-length instead).
-       (savehist-file-modes): Rename from savehist-modes.
-       (savehist-save-hook, savehist-loaded): New vars.
-       (savehist-load): Use savehist-mode.  Try to smooth up transition from
-       old format to new format.
-       (savehist-install): Allow savehist-autosave-interval to be nil.
-       (savehist-save): Run the new hook.  Be more careful to only trim the
-       history variables.
-       (savehist-trim-history): New fun.  Replaces savehist-process-for-saving.
-       (savehist-printable): Print into a buffer rather than char-by-char.
-
-2005-11-01  John Wiegley  <johnw@newartisans.com>
-
-       * iswitchb.el (iswitchb-define-mode-map): Re-enable the
-       toggle-ignore keybinding (C-a).  The author said it had been
-       disabled much earlier due to a possible incompatibility, but after
-       many months of usage I have encountered no problems (and it is a
-       rather useful option, especially for switching to " *temp*").
-
-       * net/eudcb-mab.el (eudc-mab-query-internal): Add backend
-       support for OS/X's AddressBook, by calling out to the open source
-       program "contacts" (installable through Fink).
-
-       * net/eudc.el (eudc-expand-inline): If the
-       `eudc-multiple-match-handling-method' is set to `all', delete the
-       query string before inserting the query result.
-
-       * eshell/em-ls.el (eshell-do-ls): Add no-op support for --dired
-       flag, to prevent Eshell from using the system ls when
-       `eshell-ls-insert-directory' is in used.
-       (eshell-ls-insert-directory): Disable font-lock in directory
-       buffer so that Eshell's own fontification is seen.  This broke
-       recently due to changes in font-lock, so this goes back to version
-       21 behavior.
-
-2005-11-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-use-inferior-io-buffer): New function.
-       (menu, toggle-gdb-use-inferior-io-buffer): Get rid of defadvice.
-       (gdb-many-windows): Doc fix.
-
-2005-10-31  Romain Francoise  <romain@orebokech.com>
-
-       * help-fns.el (describe-simplify-lib-file-name): Add autoload cookie.
-
-2005-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * loadup.el: Load emacs-lisp/syntax, font-lock and jit-lock so
-       that global-font-lock-mode can be enabled by default.
-
-       * font-lock.el (font-lock-keywords, font-lock-mode-internal)
-       (font-lock-add-keywords, font-lock-remove-keywords)
-       (font-lock-fontify-buffer): Remove autoload cookies.
-
-       * jit-lock.el (jit-lock-register): Likewise.
-
-       * emacs-lisp/syntax.el (syntax-ppss): Likewise.
-
-2005-10-31  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-many-windows): Leave window configuration
-       intact if there is no gud-comint-buffer.
-
-2005-10-31  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * progmodes/gud.el (gud-filter): Use comint-update-fence to delete
-       old prompt comint-prompt-read-only is t and GDB commands are
-       issued from tool bar etc.
-
-2005-10-31  Masatake YAMATO  <jet@gyve.org>
-
-       * vc.el (vc-directory-exclusion-list): Add "{arch}".
-
-2005-10-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * thumbs.el (thumbs-thumbsdir): Default to ~/.emacs.d/thumbs.
-       (thumbs-thumbsdir): Make .emacs.d if it does not exist.
-
-2005-10-30  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-chunksize): Escape parentheses in docstring
-       starting at beginning of line.  Fontification is messed up when
-       `open-paren-in-column-0-is-defun-start' set to t.
-       Reported by John Paul Wallington <jpw@pobox.com>.
-
-2005-10-30  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * comint.el (comint-send-input): Call `comint-update-fence' when
-       `comint-process-echoes' and `comint-prompt-read-only' are both
-       non-nil, to avoid leftover read-only newline.
-
-2005-10-30  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       Detect when WORD can't be checked properly because
-       flyspell-get-word finds just part of it, and move on.
-
-       * textmodes/ispell.el (ispell-dictionary-alist-5): Add . as
-       boundarychar for Polish.
-       (ispell-dictionary-alist-4): Add . as boundarychar for Italian.
-       (ispell-dictionary-alist-3): Add . and @ as boundarychars for French.
-
-2005-10-31  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-tooltip-print-1): Fix regexp.
-       (gdb-registers-font-lock-keywords): Delete.
-       (gdb-registers-mode): Don't fontify.
-       (gdb-info-registers-custom): Use text properties instead as, in
-       future, changed register values will use font-lock-warning-face.
-       (gdb-local-font-lock-keywords): Rename to...
-       (gdb-locals-font-lock-keywords): ...for consistency.
-
-2005-10-30  Andre Spiegel  <spiegel@gnu.org>
-
-       * vc.el (vc-switch-backend): Better error message if the buffer is
-       not visiting a file under version control.
-
-       * vc-cvs.el (vc-cvs-delete-file): Commit the file after removing it.
-
-2005-10-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * startup.el (command-line): Use ~/.emacs.d/init.el instead of
-       ~/.emacs.d/.emacs.
-
-2005-10-29  Richard M. Stallman  <rms@gnu.org>
-
-       * replace.el (occur-mode-mouse-goto): Always go to other window.
-       (occur-mode-goto-occurrence): Always switch in same window.
-
-       * simple.el (undo): Display message at end, not at start.
-
-       * emacs-lisp/timer.el (timer-activate, timer-activate-when-idle):
-       New arg REUSE-CELL.
-       (cancel-timer-internal): New function.
-       (timer-event-handler): Use cancel-timer-internal,
-       and pass the cell it returns to timer-activate...
-
-       * jit-lock.el (jit-lock-function, jit-lock-stealth-fontify)
-       (jit-lock-deferred-fontify, jit-lock-context-fontify)
-       (jit-lock-after-change): Test memory-full.
-
-2005-10-29  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * pgg-gpg.el (pgg-gpg-select-matching-key): Fix: look at the right
-       part of the decoded armor to find the key-identifier.
-       (pgg-gpg-lookup-key-owner): New function to return the
-       human-readable identifier of a key owner.
-       (pgg-gpg-lookup-id-from-key-owner): Make it easy to identify the
-       key itself.
-       (pgg-gpg-decrypt-region): Prompt with the key owner (rather than
-       the key value) if we have a key and can match it against a secret
-       key.  Also, added a note pointing out fact that the prompt only
-       indicates the first matching key.
-
-       * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
-       pgg-decrypt-region.
-       (pgg-pending-timers): A new hash for tracking the passphrase cache
-       timers, so that new ones supercede old ones.
-       (pgg-add-passphrase-to-cache): Rename from
-       `pgg-add-passphrase-cache' to reduce confusion (all callers
-       changed).  Modified to cancel old timers when new ones are added.
-       (pgg-remove-passphrase-from-cache): Rename from
-       `pgg-remove-passphrase-cache' to reduce confusion (all callers
-       changed).  Modified to cancel old timers when their keys are
-       removed from the cache.
-       (pgg-cancel-timer): In Emacs, an alias for cancel-timer; in
-       XEmacs, an indirection to delete-itimer.
-       (pgg-read-passphrase-from-cache, pgg-read-passphrase):
-       Extract pgg-read-passphrase-from-cache from pgg-read-passphrase so
-       users can only check cache without risk of prompting.  Correct bug in
-       notruncate behavior.
-       (pgg-read-passphrase-from-cache, pgg-read-passphrase)
-       (pgg-add-passphrase-cache, pgg-remove-passphrase-cache):
-       Add informative docstrings.
-       (pgg-decrypt): Convey provided passphrase in subordinate call to
-       pgg-decrypt-region.
-
-       * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region)
-       (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region)
-       (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional
-       `passphrase' argument, so the passphrase can be managed externally
-       and then passed in to the system.
-
-       * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache)
-       (pgg-remove-passphrase-cache): Add optional NOTRUNCATE argument,
-       so the passphrase cache can be used reliably with identifiers
-       besides a pgp packet's key id.
-
-       * pgg-gpg.el (pgg-pgp-encrypt-region)
-       (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
-       (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt)
-       (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE
-       argument to all these routines, so the passphrase can be managed
-       externally and passed in to the system.
-
-       * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional
-       `notruncate' argument, so the passphrase cache can be used
-       reliably with identifiers besides a pgp packet's key id.
-
-2005-10-29  Sascha Wilde  <swilde@sha-bang.de>
-
-       * pgg-gpg.el (pgg-gpg-encrypt-symmetric-region): New function for
-       symmetric encryption.
-       (pgg-gpg-symmetric-key-p): New function to check for an symmetric
-       encrypted session key.
-       (pgg-gpg-decrypt-region): When decrypting a symmetric encrypted
-       message ask for the passphrase in a proper way.
-
-       * pgg.el (pgg-encrypt-symmetric, pgg-encrypt-symmetric-region):
-       New user commands for symmetric encryption.
-
-2005-10-29  Roland Winkler  <roland.winkler@physik.uni-erlangen.de>
-
-       * textmodes/conf-mode.el (conf-assignment-sign)
-       (conf-assignment-regexp): Fix docstrings.
-       (conf-mode-initialize): New function.
-       (conf-mode): Remove optional args.  Use delay-mode-hooks to
-       recognize recursive calls.
-       (conf-unix-mode, conf-windows-mode, conf-javaprop-mode)
-       (conf-space-mode, conf-colon-mode, conf-ppd-mode)
-       (conf-xdefaults-mode): Use define-derived-mode and
-       conf-mode-initialize.
-
-2005-10-29  Romain Francoise  <romain@orebokech.com>
-
-       * help-fns.el (describe-simplify-lib-file-name): Fix regexp.
-
-2005-10-29  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * pgg-gpg.el (pgg-gpg-select-matching-key): Fix: look at the right
-       part of the decoded armor to find the key-identifier.
-       (pgg-gpg-lookup-key-owner): New function to return the
-       human-readable identifier of a key owner.
-       (pgg-gpg-lookup-id-from-key-owner): Make it easy to identify the
-       key itself.
-       (pgg-gpg-decrypt-region): Prompt with the key owner (rather than
-       the key value) if we have a key and can match it against a secret
-       key.  Also, added a note pointing out fact that the prompt only
-       indicates the first matching key.
-
-       * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
-       pgg-decrypt-region.
-       (pgg-pending-timers): A new hash for tracking the passphrase cache
-       timers, so that new ones supercede old ones.
-       (pgg-add-passphrase-to-cache): Rename from
-       `pgg-add-passphrase-cache' to reduce confusion (all callers
-       changed).  Modified to cancel old timers when new ones are added.
-       (pgg-remove-passphrase-from-cache): Rename from
-       `pgg-remove-passphrase-cache' to reduce confusion (all callers
-       changed).  Modified to cancel old timers when their keys are
-       removed from the cache.
-       (pgg-cancel-timer): In Emacs, an alias for cancel-timer; in
-       XEmacs, an indirection to delete-itimer.
-       (pgg-read-passphrase-from-cache, pgg-read-passphrase):
-       Extract pgg-read-passphrase-from-cache from pgg-read-passphrase so
-       users can only check cache without risk of prompting.  Correct bug in
-       notruncate behavior.
-       (pgg-read-passphrase-from-cache, pgg-read-passphrase)
-       (pgg-add-passphrase-cache, pgg-remove-passphrase-cache):
-       Add informative docstrings.
-       (pgg-decrypt): Convey provided passphrase in subordinate call to
-       pgg-decrypt-region.
-
-2005-10-20  Ken Manheimer  <ken.manheimer+emacs@gmail.com>
-
-       * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region)
-       (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region)
-       (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional
-       `passphrase' argument, so the passphrase can be managed externally
-       and then passed in to the system.
-
-       * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache)
-       (pgg-remove-passphrase-cache): Add optional NOTRUNCATE argument,
-       so the passphrase cache can be used reliably with identifiers
-       besides a pgp packet's key id.
-
-       * pgg-gpg.el (pgg-pgp-encrypt-region)
-       (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
-       (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt)
-       (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE
-       argument to all these routines, so the passphrase can be managed
-       externally and passed in to the system.
-
-       * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional
-       `notruncate' argument, so the passphrase cache can be used
-       reliably with identifiers besides a pgp packet's key id.
-
-2005-10-29  Sascha Wilde  <swilde@sha-bang.de>
-
-       * pgg-gpg.el (pgg-gpg-encrypt-symmetric-region): New function for
-       symmetric encryption.
-       (pgg-gpg-symmetric-key-p): New function to check for an symmetric
-       encrypted session key.
-       (pgg-gpg-decrypt-region): When decrypting a symmetric encrypted
-       message ask for the passphrase in a proper way.
-
-       * pgg.el (pgg-encrypt-symmetric, pgg-encrypt-symmetric-region):
-       New user commands for symmetric encryption.
-
-2005-10-28  Bill Wohler  <wohler@newt.com>
-
-       * help-mode.el (help-url): New button type.  Calls browse-url.
-       (help-xref-url-regexp): New regexp to recognize URLs in docstring.
-       Similar to Info nodes: URL `url'.
-       (help-make-xrefs): Create help-url buttons for
-       help-xref-url-regexp matches.
-
-2005-10-29  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tool-bar.el (tool-bar-add-item-from-menu)
-       (tool-bar-local-item-from-menu): Fix doc strings.
-
-2005-10-28  Romain Francoise  <romain@orebokech.com>
-
-       * ldefs-boot.el: Update.
-
-       * subr.el (locate-library): Move from help-fns.el.
-       * help-fns.el (locate-library): Move to subr.el.
-
-2005-10-28  Richard M. Stallman  <rms@gnu.org>
-
-       * net/tramp.el (tramp-completion-mode): defvar moved up.
-
-       * emacs-lisp/easymenu.el (easy-menu-change): Doc fix.
-
-       * tool-bar.el (tool-bar-mode): Delete autoload cookie.
-
-       * files.el (find-file-noselect): Use %d to format large file size.
-
-       * bindings.el (mode-line-format): Add %e.
-
-       * loadup.el ("facemenu"): Load unconditionally.
-       ("image", "international/fontset", "dnd", "mwheel", "tool-bar"):
-       ("x-dnd"): Load, when appropriate.
-
-       * startup.el (command-line): Call before-init-hook earlier.
-       Warn about some bad characters in -u user name.
-
-       * textmodes/flyspell.el (flyspell-large-region): Pass -t if Tex file.
-       (flyspell-external-point-words): Error if misspelled word is not found.
-       Set flyspell-large-region-beg at end of word.
-
-2005-10-28  Andreas Schwab  <schwab@suse.de>
-
-       * view.el (View-revert-buffer-scroll-page-forward):
-       Use view-page-size-default.
-
-2005-10-28  Juri Linkov  <juri@jurta.org>
-
-       * international/quail.el (quail-get-current-str): Translate last
-       raw character for deterministic input methods.
-
-2005-10-27  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-ext.el: Add functions to autoloads.
-       (math-identity-matrix-p, math-ident-row-p): New functions.
-
-       * calc/calc-arith.el (calc-mul-symb-fancy): Add checks for
-       multiplication by an identity matrix; don't turn multiplication by
-       an inverse matrix into division.
-       (math-div-symbol-fancy): Replace division by matrices with
-       multiplication by inverse.
-
-       * calc/calc-misc.el (calcFunc-inv): Check for symbolic matrices.
-
-       * calc/calc-alg.el (calcFunc-writeoutpower, math-write-out-power)
-       (calc-writeoutpower): New functions.
-
-2005-10-27  Romain Francoise  <romain@orebokech.com>
-
-       * replace.el (occur-engine): Include colon in mouse-face highlight.
-
-       * dired-x.el: Change Maintainer field.
-
-2005-10-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-mode): Bind after-change-functions to
-       nil during initial decoding and final encoding.
-
-2005-10-26  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term.el (term-emulate-terminal, term-handle-colors-array)
-       (term-handle-ansi-escape): Specify the terminfo capabilities
-       implemented.
-
-2005-10-26  Richard M. Stallman  <rms@gnu.org>
-
-       * info.el (Info-fontify-node): Fix detection of sentence-break
-       before *Note.
-
-2005-10-26  Romain Francoise  <romain@orebokech.com>
-
-       * smerge-mode.el: Add `tools' to file keywords.
-
-2005-10-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Only display gud-until icon
-       when the fringe is not available.
-
-       * progmodes/gdb-ui.el (def-gdb-auto-updated-buffer)
-       (def-gdb-auto-update-trigger): Simplify construction.
-       (gdb-locals-buffer): Use def-gdb-auto-update-trigger instead of
-       def-gdb-auto-updated-buffer as gdb-info-locals-handler is
-       defined explicitly.
-       (gdb-assembler-buffer): Use def-gdb-auto-update-handler instead of
-       def-gdb-auto-updated-buffer as gdb-invalidate-assembler is
-       defined explicitly.
-       (gdb-info-locals-custom): Remove as it's a no-op.
-
-2005-10-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-mode): Remove narrowing before
-       performing the initial decoding or final encoding.
-
-2005-10-25  Romain Francoise  <romain@orebokech.com>
-
-       * emacs-lisp/find-func.el (find-library-name): Also strip
-       extension if library name ends in .el, to take advantage of
-       `find-library-suffixes'.
-
-2005-10-25  Richard M. Stallman  <rms@gnu.org>
-
-       * menu-bar.el (menu-bar-help-menu): Say which kind of therapist.
-
-2005-10-25  Juri Linkov  <juri@jurta.org>
-
-       * textmodes/texinfo.el (texinfo-mode): Change charset of one
-       quotation mark from [mule-unicode-0100-24ff] to [japanese-jisx0208].
-
-2005-10-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * play/blackbox.el (blackbox-mode-map): Move init into declaration.
-       (blackbox-redefine-key): Add argument `map'.
-
-       * jit-lock.el (jit-lock-fontify-now): Be careful not to skip multiline
-       regions when moving the jit-lock-context-unfontify-pos boundary.
-
-2005-10-25  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * net/browse-url.el (browse-url-of-buffer): Add ".html" to filename.
-
-2005-10-25  Masatake YAMATO  <jet@gyve.org>
-
-       * dired-x.el (dired-virtual): Don't use `dired-insert-headerline'.
-
-2005-10-25  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac-@t-lrde.epita.fr>
-
-       * play/blackbox.el (blackbox-redefine-key): New function.
-       (blackbox-mode-map): Use it to remap existing bindings for cursor
-       motion instead of binding literal keys.
-
-2005-10-25  Glenn Morris  <rgm@gnu.org>
-
-       * calendar/diary-lib.el (diary-list-entries): Prevent infloop when
-       diary does not end in a newline.  Do not assume a blank line at
-       the start of the diary file.
-
-2005-10-25  Kenichi Handa  <handa@m17n.org>
-
-       * international/quail.el (quail-translate-key): If the input
-       method is deterministic and failed to handle the last key, restart
-       the key handling loop from an appropriate key.
-
-2005-10-25  Michael Albinus  <michael.albinus@gmx.de>
-
-       * vc.el (vc-dired-mode): Extend comment for binding of
-       `directory-listing-before-filename-regexp'.
-
-2005-10-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/texinfo.el (texinfo-mode):
-       * textmodes/paragraphs.el (sentence-end-base): Use real chars, so as
-       not to unnecessarily expose emacs-mule's internal char codes.
-
-2005-10-25  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Correct help-echo.
-       Display hand pointer and help-echo on disabled icon too.
-       (gdb-mouse-until): New function.
-       (gdb-ann3): Bind it to mouse-2 and drag-mouse-1 in left fringe.
-
-2005-10-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * menu-bar.el (menu-bar-help-menu): Rename "psychiatrist", in line
-       with 2005-10-23 change to doctor.el.
-
-       * finder.el (finder-mode-map): Add follow-link binding.
-
-2005-10-25  Kim F. Storm  <storm@cua.dk>
-
-       * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-3 in left fringe
-       to gdb-mouse-toggle-breakpoint-fringe.
-       (gdb-mouse-toggle-breakpoint-margin): Rename from
-       gdb-mouse-toggle-breakpoint.  Fix doc.
-       (gdb-mouse-toggle-breakpoint-fringe): New defun.
-       (gdb-put-string): Add optional SPROPS arg.  Add props to string.
-       (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled
-       string properties also for fringe breakpoint bitmaps.
-
-2005-10-24  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-start-icalendar-file): Fix format form.
-
-2005-10-25  Masatake YAMATO  <jet@gyve.org>
-
-       * simple.el (completion-common-substring):
-       Use `completion-common-substring' prior to `completion-base-size'.
-
-2005-10-24  Hrvoje Niksic  <hniksic@xemacs.org>
-
-       * savehist.el: Require CL while compiling.
-       (savehist-history-variables): Remove.
-       (savehist-save-minibuffer-history, savehist-additional-variables)
-       (savehist-minibuffer-history-variables): New vars.
-       (savehist-save): Use them.
-       (savehist-uninstall, savehist-minibuffer-hook): New funs.
-       (savehist-install): New fun, extracted from savehist-load.
-       (savehist-load): Use them.
-
-2005-10-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/lisp-mode.el (easy-mmode-define-global-mode): Don't add
-       a dummy doc-string-elt property.
-       (defalias, defvaralias, define-category): Add a docstring property.
-
-       * image.el (defimage):
-       * widget.el (define-widget):
-       * custom.el (defface, defcustom): Add `doc-string' declaration.
-
-       * emacs-lisp/advice.el (ad-make-advised-definition): Fix arg-order.
-       (defadvice): Add `doc-string' declaration.
-
-       * emacs-lisp/byte-run.el (macro-declaration-function):
-       Handle `doc-string' declarations.
-       (define-obsolete-function-alias, define-obsolete-variable-alias):
-       Add `doc-string' declaration.
-
-2005-10-24  Kenichi Handa  <handa@m17n.org>
-
-       * international/utf-7.el (utf-7): Add autoload cookie.
-
-       * term/x-win.el: Register more Cyrillic characters in x-keysym-table.
-
-2005-10-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (autoloads): Use "." instead of $(lisp) in the
-       list of directories passed to batch-update-autoloads.  Add "." to
-       the list of the echoed directories.
-
-       * pgg-def.el:
-       * pgg-gpg.el:
-       * pgg-parse.el:
-       * pgg-pgp.el:
-       * pgg-pgp5.el:
-       * pgg.el: Moved here from the gnus subdirectory.
-
-2005-10-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-filter): Bind inhibit-read-only to t
-       in case comint-prompt-read-only is set to t.
-
-       * progmodes/gdb-ui.el (gdb-send): Bind inhibit-read-only to t
-       in case comint-prompt-read-only is set to t.
-
-2005-10-24  Ulf Jasper  <ulf.jasper@web.de>
-
-       * calendar/icalendar.el (icalendar-version): Increase to 0.13.
-       Now a string.
-       (icalendar-import-format): Handle CLASS, STATUS, URL.
-       Rename `subject' to `summary'.
-       (icalendar-import-format-summary): Rename from
-       `icalendar-import-format-subject'.
-       (icalendar-import-format-url, icalendar-import-format-status)
-       (icalendar-import-format-class): New variables.
-       (icalendar--rris): Take variable argument list.
-       (icalendar--datestring-to-isodate): Remove unnecessary
-       calendar-style check when converting dates with explicit month names.
-       (icalendar-export-region): Change return type of conversion
-       subroutines.  Bury current buffer unless error occurred.
-       (icalendar--convert-to-ical)
-       (icalendar--parse-summary-and-rest): New functions.
-       (icalendar--convert-ordinary-to-ical)
-       (icalendar--convert-weekly-to-ical)
-       (icalendar--convert-yearly-to-ical)
-       (icalendar--convert-block-to-ical)
-       (icalendar--convert-cyclic-to-ical)
-       (icalendar--convert-anniversary-to-ical): Change return type.
-       Strip trailing blanks from subject.
-       (icalendar--convert-sexp-to-ical): Change return type.
-       Strip trailing blanks from subject.  Handle simple sexp
-       entries as generated by icalendar.el.
-       (icalendar--convert-float-to-ical)
-       (icalendar--convert-date-to-ical): Strip trailing blanks from subject.
-       (icalendar-import-file): Doc fix.
-       (icalendar--format-ical-event): Handle CLASS, STATUS, URL.
-       Correct call to icalendar--rris.
-       (icalendar--convert-ical-to-diary): Doc fix.  Rename `subject' to
-       `summary'.
-       (icalendar--add-diary-entry): Rename `subject' to `summary'.
-
-2005-10-24  Romain Francoise  <romain@orebokech.com>
-
-       * server.el (server-sentinel): Set query-on-exit flag to nil on
-       new client processes (it isn't inherited from the server process).
-
-       * replace.el (occur-engine): Rearrange text properties.
-
-2005-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/debug.el (debugger-make-xrefs): Don't assume
-       case-fold-search is nil.
-       (debug-help-follow): Use help-xref-interned directly.
-
-2005-10-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * thumbs.el (thumbs-image-type): Add .pbm.
-
-2005-10-23  Richard M. Stallman  <rms@gnu.org>
-
-       * faces.el (inhibit-face-set-after-frame-default): New variable.
-       (set-face-attribute): Bind it.
-       (face-set-after-frame-default): Test it.
-
-       * help-fns.el (describe-simplify-lib-file-name): New function.
-       (describe-function-1, describe-variable): Use it.
-
-       * faces.el (describe-face): Use describe-simplify-lib-file-name.
-
-       * tooltip.el (tooltip-x-offset, tooltip-y-offset): Change defaults.
-       Eliminate nil as possible value.
-       (tooltip-hide-delay): Reduce internal-border-width.
-
-       * menu-bar.el (menu-bar-file-menu) <dired>: Change help-echo string.
-       (menu-bar-file-menu) <new-file>: Likewise.
-
-       * simple.el (line-move-finish): Ignore fields computing LINE-END.
-
-       * international/mule.el (load-with-code-conversion):
-       Pass full file name to `eval-buffer' unless preloading.
-
-       * textmodes/flyspell.el (flyspell-large-region):
-       Call ispell-check-version.
-
-       * textmodes/ispell.el (ispell-local-dictionary-overridden):
-       Fix the make-variable-buffer-local call that was supposed
-       to be for this variable.
-       (ispell-aspell-supports-utf8): Doc fix.
-       (ispell-find-aspell-dictionaries): Preserve elements of
-       ispell-dictionary-alist for dictionaries that aspell doesn't report.
-       (ispell-aspell-find-dictionary): Return nil on error.
-
-       * play/doctor.el (doctor-doc): Don't say "psychiatrist".
-       (doctor-symptoms): Likewise.
-
-       * add-log.el (add-log-current-defun): Clean up handling of DEFUNs.
-
-2005-10-23  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (custom-button, custom-button-pressed): New vars.
-       (custom-raised-buttons): Add :set spec.
-       (custom-button-unraised, custom-button-pressed-unraised):
-       New faces, so that custom-raised-buttons actually does something.
-       (custom-mode): Use custom-button and custom-button-pressed.
-
-       * wid-edit.el (widget-specify-button): Don't ignore
-       widget-mouse-face on graphic terminals.
-       (widget-move-and-invoke): Cleanup.
-
-2005-10-23  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * whitespace.el (whitespace-cleanup): Doc fix.
-
-2005-10-23  Romain Francoise  <romain@orebokech.com>
-
-       * emulation/viper.el (viper-set-hooks): Quote forms passed to
-       `eval-after-load' to avoid evaluating their result.
-
-2005-10-23  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.el (directory-listing-before-filename-regexp):
-       New defvar.  Replaces `dired-move-to-filename-regexp' from dired.el.
-
-       * dired.el (dired-move-to-filename-regexp): Remove.
-       All occurrences replaced by `directory-listing-before-filename-regexp'.
-
-       * dired-x.el, locate.el, vc.el:
-       Replace `dired-move-to-filename-regexp' by
-       `directory-listing-before-filename-regexp'.  In vc.el it is
-       overwritten locally; maybe this can be handled in files.el too.
-
-       * net/ange-ftp.el (ange-ftp-date-regexp): Remove.  All occurrences
-       replaced by `directory-listing-before-filename-regexp'.
-
-2005-10-23  Andreas Schwab  <schwab@suse.de>
-
-       * font-lock.el (lisp-font-lock-keywords-2): Add eval-at-startup
-       and eval-next-after-load.
-
-2005-10-23  MIYOSHI Masanori  <miyoshi@meadowy.org>  (tiny change)
-
-       * mouse.el (mouse-drag-region): If the *Messages* buffer doesn't
-       exist, create it.
-
-2005-10-23  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el: Remove autoloads for mailcrypt and crypt++.
-       Require pgg, pgg-gpg during compilation.
-       (allout-version): Increment version number to 2.1, and use a literal
-       rather than RCS Id.
-       (allout-default-encryption-scheme): Remove.
-       (allout-passphrase-verifier-handling)
-       (allout-passphrase-verifier-string)
-       (allout-file-passphrase-verifier-string)
-       (allout-passphrase-hint-string): Rename -key- to -passphrase-.
-       (allout-passphrase-hint-handling): Rename and simplify.
-       (allout-init): Use `find-file-hook' if available, otherwise
-       `find-file-hooks'.
-       (allout-mode): Use `write-file-functions' if available, otherwise
-       `local-write-file-hooks' and, instead of making auto-save-hook
-       buffer local, make the write-file-hook activity contingent to
-       allout-mode.
-       (allout-mode): Use key-binding substitution in the docstring.
-       (allout-kill-line): Spell-out kill ring data structure mutation
-       instead of using byte-compiler-complaint-provoking `pop'.
-       (allout-insert-listified): Use `insert' rather than `insert-string'
-       (allout-toggle-current-subtree-encryption): Update docstring, adjust
-       to new gpp-based encryption, use new `allout-encrypted-topic-p'.
-       (allout-encrypt-string): Totally revamped vis new underlying
-       encryption facilities.
-       (allout-mc-activate-passwd): Remove.
-       (allout-obtain-passphrase): New, more or less replaces
-       allout-mc-activate-passwd.
-       (allout-encrypted-key-info): More or less replaces
-       allout-encrypted-text-type.
-       (outlineify-sticky, outlinify-sticky): Add autoload cookie.
-       (my-mark-marker): Use `(featurep 'xemacs)'.
-
-2005-10-23  Lars Hansen  <larsh@soem.dk>
-
-       * emacs-lisp/bytecomp.el (byte-compile-lambda): New arg add-lambda.
-       (byte-compile-file-form-defmumble, byte-compile-defun)
-       (byte-compile-defmacro): Use it.
-       (byte-compile-form): Don't call byte-compile-set-symbol-position
-       when a byte-compile handler is called.
-
-2005-10-22  Romain Francoise  <romain@orebokech.com>
-
-       * savehist.el (savehist-history-variables): Add `grep-find-history'.
-
-       * subr.el (eval-after-load): Convert library name to an absolute
-       file name using locate-library, since load-history no longer has
-       library names in it.
-
-2005-10-22  Richard M. Stallman  <rms@gnu.org>
-
-       * files.el (make-temp-file): Move from subr.el.
-       * subr.el (make-temp-file): Move to files.el.
-
-       * window.el (get-buffer-window-list): Move from subr.el.
-       * subr.el (get-buffer-window-list): Move to window.el.
-
-       * image.el (image-load-path): Use eval-at-startup to initialize.
-
-       * subr.el (eval-at-startup): New macro.
-
-       * subr.el: Much rearrangement of functions and division
-       into pages.  No code changes.
-
-2005-10-22  Kenichi Handa  <handa@m17n.org>
-
-       * tar-mode.el (tar-extract): Be sure to call
-       find-operation-coding-system if set-auto-coding doesn't find a
-       coding system.
-
-2005-10-22  Kim F. Storm  <storm@cua.dk>
-
-       * image.el (image-type-header-regexps): Rename from image-type-regexps.
-       Change users.
-       (image-type-file-name-regexps): New defconst.
-       (image-type-from-data): Simplify loop.
-       (image-type-from-buffer): New defun.
-       (image-type-from-file-header): Use it instead of image-type-from-data.
-       Use image-search-load-path instead of only looking in data-directory.
-       (image-type-from-file-name): New defun.
-       (image-search-load-path): Change `pathname' to `filename'.
-       Make PATH arg optional, default to image-load-path.
-
-2005-10-21  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/texinfo.el (texinfo-mode): Set sentence-end-base.
-
-       * textmodes/paragraphs.el (sentence-end-base): New variable.
-       (sentence-end): Use sentence-end-base.
-
-2005-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (font-lock-default-fontify-region): Check the multiline
-       property independently from the font-lock-multiline variable.
-
-2005-10-21  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/find-func.el (find-library-name): Doc fix.
-
-       * startup.el (command-line): Convert library names
-       in `load-history' to absolute file names.
-
-       * subr.el (symbol-file): Doc fix.
-
-       * loadhist.el (file-loadhist-lookup): Call locate-library
-       instead of find-library-name.  Don't try converting
-       abs file names to library names, since load-history no longer
-       has library names in it.
-       (file-dependents, file-provides, file-requires): Doc fixes.
-
-2005-10-21  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/etags.el (tags-table-mode): New function.
-       (tags-verify-table): Replace initialize-new-tags-table with
-       tags-table-mode.
-
-       * desktop.el (desktop-buffers-not-to-save): Remove TAGS from the
-       default value.
-       (desktop-modes-not-to-save): Add tags-table-mode to the
-       default value.
-
-       * info.el (Info-index-next): Add total number of index
-       alternatives to the message.
-
-       * textmodes/fill.el (fill-nobreak-p): Fix first two rules to skip
-       backward only space (instead of space and period) before looking
-       at sentence end.
-
-       * simple.el (set-variable): Use user-variable-p instead of symbolp.
-       Add the old variable value as 4th default-value arg of read-string.
-
-2005-10-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * cus-face.el (custom-declare-face): Make face from X resources
-       also on Mac.
-
-       * disp-table.el (standard-display-g1, standard-display-graphic):
-       Refuse to use string glyphs also on Mac.
-       (standard-display-european): Don't set terminal coding system also
-       on Mac.
-
-       * frame.el (display-screens): Use x-display-screens also on Mac.
-
-2005-10-21  Romain Francoise  <romain@orebokech.com>
-
-       * net/rcirc.el: Now part of GNU Emacs.  Update FSF's address.
-
-2005-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-font-lock-syntactic-keywords): Make $@
-       and $? into sexps.
-
-       * font-lock.el (font-lock-compile-keywords): Add a help-echo to the
-       warning face on open-paren-in-column-0.
-
-       * emacs-lisp/syntax.el (syntax-ppss-flush-cache): Fix corner
-       boundary case.  Fix typo.
-       Suggested by Martin Rudalics <rudalics@gmx.at>.
-
-2005-10-21  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-combined-agenda-icalendar-file)
-       (org-icalendar-include-todo, org-icalendar-combined-name): New options.
-       (org-export-icalendar-this-file)
-       (org-export-icalendar-all-agenda-files)
-       (org-export-icalendar-combine-agenda-files): New commands.
-       (org-export-icalendar, org-print-icalendar-entries)
-       (org-start-icalendar-file, org-finish-icalendar-file)
-       (org-ical-ts-to-string): New functions.
-       (org-read-date, org-goto-calendar)
-       (org-agenda-goto-calendar): Inhibit displaying diary entries by
-       call to `calendar'.
-       (orgtbl-setup): Remove the :keys arguments from the menu description.
-       (org-after-save-iCalendar-file-hook): New variable.
-
-2005-10-21  Kenichi Handa  <handa@m17n.org>
-
-       * language/vietnamese.el (tcvn-5712): Make it an alias of
-       vietnamese-tcvn coding-system.
-
-2005-10-20  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/ange-ftp.el (ange-ftp-date-regexp): Handle also the case no
-       group id is given.
-
-2005-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-escaped-line-re): New var.
-       (sh-here-doc-open-re, sh-font-lock-close-heredoc): Use it.
-       (sh-font-lock-open-heredoc): Try to properly handle heredoc starters
-       whose line is either continued or ends with a comment.
-
-2005-10-20  Romain Francoise  <romain@orebokech.com>
-
-       * net/rcirc.el (with-rcirc-process-buffer): Move above its first user.
-
-       * replace.el (occur-engine): Add follow-link property.
-
-       * font-core.el (font-lock-mode): Doc fix.
-
-2005-10-20  Richard M. Stallman  <rms@gnu.org>
-
-       * net/rcirc.el: New file.
-
-2005-10-20  Bryan Henderson  <bryanh@giraffe-data.com>  (tiny change)
-
-       * term.el (term-term-name): Initialize to "eterm-color".
-
-2005-10-20  Ken Manheimer  <ken.manheimer@gmail.com>
-
-       * allout.el: Add autoloads of crypt++ and mailcrypt routines, all
-       for encryption functionality.
-       Move allout customization subgroup from `editing' to `outlines' group.
-       Fix commentary keywords to legitimate ones.
-       Update author info (using my current email address, obscurified).
-       (allout-encrypt-string, allout-encryption-produce-work-buffer)
-       (allout-encrypted-topic-p, allout-encrypted-text-type)
-       (allout-mc-activate-passwd, allout-create-encryption-key-verifier)
-       (allout-situate-encryption-key-verifier)
-       (allout-get-encryption-key-verifier, allout-verify-key)
-       (allout-next-topic-pending-encryption)
-       (allout-encrypt-decrypted, allout-encrypted-type-prefix): New funcs.
-       (outline-topic-encryption-bullet, outline-default-encryption-scheme)
-       (outline-key-verifier-handling, outline-key-hint-handling)
-       (outline-encrypt-unencrypted-on-saves): New defcustoms.
-       (allout-file-key-verifier-string, allout-encryption-scheme)
-       (allout-key-verifier-string, allout-key-hint-string)
-       (allout-after-save-decrypt): New variables.
-       (allout-write-file-hook-handler, allout-auto-save-hook-handler)
-       (allout-after-saves-handler): New hook functions.
-       (allout-post-command-business): Do allout-after-save-decrypt.
-       (allout-enable-file-variable-adjustment): Custom var to enable
-       mechanism for adding and adjusting settings of Emacs file variables.
-       (allout-adjust-file-variable, allout-file-vars-section-data):
-       New functions, implement the mechanism.
-       (outlineify-sticky): Use the file vars mechanism.
-       (allout-inhibit-protection, allout-during-write-cue)
-       (allout-override-protect, allout-before-change-protect): Remove.
-       (allout-flag-region, allout-open-topic): Adjust read-only text.
-       (allout-open-line-not-read-only): Add to facilitate read-only
-       text based protection.
-       (allout-kill-line): Revise to adjust read-only text, clue the
-       user about the inhibition.
-       (allout-unprotected): Use unwind-protect.
-       (allout-shift-in, allout-shift-out): Disallow manually shifting a
-       topic deeper than the offspring depth of the previous topic -
-       avoiding confusing "containment discontinuities".
-       (allout-reindent-bodies): Fix retention of body relative hanging
-       indent during promotion of collapsed bodies.
-       (allout-open-topic): Make it easy to open new topic with same
-       bullet as current topic - topic creation functions provided with
-       any universal argument provokes now prompt for bullet, defaulting
-       to the bullet of the previous topic.
-       (allout-plain-bullets-string, allout-distinctive-bullets-string):
-       Plain bullet alternates `.' period and `,' comma only.  All other
-       bullets are relegated to special status (but customizable).
-       (allout-end-of-entry): Rename from allout-end-of-current-entry
-       since it actually operates w.r.t. most immediately containing
-       entry, visible or not.
-       (allout-hide-current-entry, allout-show-current-entry): Use the
-       revised version.
-       (allout-old-expose-topic): Solidify deprecation.
-       (allout-end-of-subtree): Add so we can span concealed as well
-       as visible topics.
-       (allout-end-of-current-subtree): Use `allout-end-of-subtree'.
-       (allout-end-of-current-heading): Tweak to just respect the first line.
-       (allout-get-body-text): Add.
-       (allout-ascend-to-depth, allout-ascend): Position at end of prefix
-       when invoked interactively.
-       (allout-up-current-level): Use `interactive-p'.
-       (allout-mode, allout-init): Miscellaneous docstring and
-       operational refinements, as well as hookups of new encryption stuff.
-       (allout-beginning-of-current-entry): Now works as advertised.
-       (allout-end-of-current-entry): Remove of superfluous allout-show-entry.
-       (allout-isearch-rectification): Refine condition for isearching.
-       (allout-isearch-abort, allout-enwrap-isearch)
-       (allout-flag-region, my-region-active-p): Relocate some macros.
-       (allout-title): Fallback title is (buffer-name), not
-       non-existing (current-buffer-name).
-       (subst-char-in-string): Define if absent (for some XEmacs versions).
-
-2005-10-20  Jari Aalto  <jari.aalto@cante.net>
-
-       * mail/sendmail.el (mail-setup-hook, mail-aliases)
-       (mail-yank-prefix, mail-indentation-spaces, mail-yank-hooks)
-       (mail-citation-prefix-regexp, mail-signature-file)
-       (mail-default-headers, mail-bury-selects-summary)
-       (mail-send-nonascii): Add autoload cookies.
-
-2005-10-20  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
-
-       * frame.el (blink-cursor-mode): Add `mac' to the list of
-       window-system's that support blinking cursor.
-
-2005-10-20  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * textmodes/org.el (org-level-color-stars-only): Fix typo in docstring.
-
-2005-10-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el):
-       Bind find-file-suppress-same-file-warnings to t, to avoid warnings due
-       to different drive letter case in D:/foo/bar.el vs d:/foo/bar.el.
-
-2005-10-20  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-is-tramp-root): Simplify regexp matching tramp root.
-       (ido-set-current-directory): Don't add / after final @.
-       (ido-file-name-all-completions-1): Adapt to fixed tramp completion.
-       Explicitly handle ange-ftp completion oddities.
-       (ido-make-file-list): Don't rotate list at tramp root to avoid
-       triggering tramp file handler for expand-file-name via get-file-buffer.
-
-2005-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * savehist.el (savehist-coding-system): Revert to checking XEmacs.
-
-2005-10-19  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-units.el (math-standard-units): Add units, adjust
-       symbols and update values.
-       (math-unit-prefixes): Add more prefixes.
-
-2005-10-19  Romain Francoise  <romain@orebokech.com>
-
-       * bookmark.el (bookmark-menu-heading): New face.
-       (bookmark-bmenu-list): Use it.
-       Don't fiddle with `baud-rate' at top-level.
-
-2005-10-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.el (create-image, find-image): Mention max-image-size in
-       docstring.
-
-2005-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * savehist.el (savehist-load): Revert to checking XEmacs.
-
-       * textmodes/conf-mode.el: Don't use font-lock-defaults-alist.
-       Various docstring and line-width fixups.
-       (conf-mode): Use cond.
-       Set font-lock-defaults.  Don't set comment-use-syntax.
-
-2005-10-18  David Ponce  <david@dponce.com>
-
-       * tree-widget.el (tree-widget-button-click): New function.
-       (tree-widget-button-keymap): Use it.
-
-2005-10-18  Romain Francoise  <romain@orebokech.com>
-
-       * bookmark.el (bookmark-insert-location, bookmark-bmenu-list)
-       (bookmark-bmenu-hide-filenames): Add follow-link property.
-       Improve help-echo text.
-
-       * ffap.el (find-file-at-point): Doc fix.
-
-2005-10-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mouse.el (mouse-set-region): Don't do sit-for on a mac frame.
-
-2005-10-18  Masatake YAMATO  <jet@gyve.org>
-
-       Install to the CVS repository what I forgot to install in my
-       2005-10-16 changes.
-
-       * progmodes/python.el (python-complete-symbol): Pass the common
-       prefix substring of completion to `display-completion-list'.
-
-       * textmodes/org.el (org-complete): Ditto.
-
-2005-10-18  Masatake YAMATO  <jet@gyve.org>
-
-       Fix a bug reported by Sven Joachim <sven_joachim@web.de>.
-
-       * woman.el (WoMan-xref-man-page): New button type derived
-       from `Man-abstract-xref-man-page'.
-       (woman-mode): Pass `WoMan-xref-man-page' to `Man-highlight-references'.
-
-       * man.el (Man-abstract-xref-man-page): New button type.
-       (Man-xref-man-page): Make it derived from `Man-abstract-xref-man-page'.
-       (Man-highlight-references): Add new optional argument `xref-man-type'.
-
-2005-10-18  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Correct condition for fringe.
-
-2005-10-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-edit.el (Custom-move-and-invoke): Delete.
-       (custom-mode-map): Bind mouse-1 to widget-move-and-invoke.
-
-       * wid-edit.el (widget-move-and-invoke): New function, from
-       Custom-move-and-invoke.
-
-2005-10-17  Bill Wohler  <wohler@newt.com>
-
-       Move all remaining images from lisp/toolbar to etc/images, move
-       lisp/toolbar/tool-bar to lisp and "delete" lisp/toolbar.  Place
-       the low resolution images in their own directory (low-color).
-
-       * toolbar/attach.*, toolbar/cancel.*, toolbar/close.*
-       * toolbar/copy.*, toolbar/cut.*, toolbar/diropen.*, toolbar/exit.*
-       * toolbar/help.*, toolbar/home.*, toolbar/index.*, toolbar/info.*
-       * toolbar/mail.*, toolbar/new.*, toolbar/open.*, toolbar/paste.*
-       * toolbar/preferences.*, toolbar/print.*, toolbar/save.*
-       * toolbar/saveas.*, toolbar/search.*, toolbar/search-replace.*
-       * toolbar/spell.*, toolbar/undo.*: Move to etc/images.
-
-       * toolbar/lc-copy.*: Move to etc/images/low-color/copy.*.
-       * toolbar/lc-cut.*: Move to etc/images/low-color/cut.*.
-       * toolbar/lc-help.*: Move to etc/images/low-color/help.*.
-       * toolbar/lc-home.*: Move to etc/images/low-color/home.*.
-       * toolbar/lc-index.*: Move to etc/images/low-color/index.*.
-       * toolbar/lc-new.*: Move to etc/images/low-color/new.*.
-       * toolbar/lc-open.*: Move to etc/images/low-color/open.*.
-       * toolbar/lc-paste.*: Move to etc/images/low-color/paste.*.
-       * toolbar/lc-preferences.*: Move to etc/images/low-color/preferences.*.
-       * toolbar/lc-print.*: Move to etc/images/low-color/print.*.
-       * toolbar/lc-save.*: Move to etc/images/low-color/save.*.
-       * toolbar/lc-saveas.*: Move to etc/images/low-color/saveas.*.
-       * toolbar/lc-search.*: Move to etc/images/low-color/search.*.
-       * toolbar/lc-spell.*: Move to etc/images/low-color/spell.*.
-       * toolbar/lc-undo.*: Move to etc/images/low-color/undo.*.
-
-       To conform with convention, replace the underscore (_) in the
-       following image names with dash (-) or (/) as appropriate.
-
-       * toolbar/back_arrow.*: Move to etc/images/back-arrow.*.
-       * toolbar/fld_open.*: Move to etc/images/fld-open.*.
-       * toolbar/fwd_arrow.*: Move to etc/images/fwd-arrow.*.
-       * toolbar/jump_to.*: Move to etc/images/jump-to.*.
-       * toolbar/left_arrow.*: Move to etc/images/left-arrow.*.
-       * toolbar/right_arrow.*: Move to etc/images/right-arrow.*.
-       * toolbar/up_arrow.*: Move to etc/images/up-arrow.*.
-       * toolbar/lc-back_arrow.*: Move to etc/images/low-color/back-arrow.*.
-       * toolbar/lc-fwd_arrow.*: Move to etc/images/low-color/fwd-arrow.*.
-       * toolbar/lc-jump_to.*: Move to etc/images/low-color/jump-to.*.
-       * toolbar/lc-left_arrow.*: Move to etc/images/low-color/left-arrow.*.
-       * toolbar/lc-right_arrow.*: Move to etc/images/low-color/right-arrow.*.
-       * toolbar/lc-up_arrow.*: Move to etc/images/low-color/up-arrow.*.
-       * toolbar/mail_compose.*: Move to etc/images/mail/compose.*.
-       * toolbar/mail_send.*: Move to etc/images/mail/send.*.
-
-       * info.el (info-tool-bar-map): Replace underscores in image names
-       with dashes.
-
-       * makefile.w32-in (WINS): Remove toolbar.
-
-       * menu-bar.el: Replace toolbar/tool-bar.el with tool-bar.el in comment.
-
-       * tool-bar.el: Move to lisp from toolbar.  Now that
-       toolbar is empty, it should be deleted when folks run "cvs up -P".
-
-2005-10-18  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-store.el (calc-store-into): Get the proper variable name
-       to display in message.
-
-2005-10-18  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-create-handler): Make watch
-       expressions display in speedbar for all buffers when debugging.
-       (gdb-speedbar-expand-node): Ensure node contraction is always updated.
-
-       * speedbar.el (speedbar-set-mode-line-format): Indent properly.
-       (speedbar-insert-button, speedbar-make-button):
-       Use add-text-properties.
-       (speedbar-update-localized-contents)
-       (speedbar-update-directory-contents)
-       (speedbar-update-special-contents): Use dolist.
-       (speedbar-buffer-easymenu-definition): Add a menu separator.
-
-2005-10-17  Jason Rumney  <jasonr@gnu.org>
-
-       * makefile.w32-in: Use $(lisp) consistently.
-       (pre-mh-loaddefs.el-SH, pre-mh-loaddefs.el-CMD): New targets
-       for shell specific generation of mh-autoloads.
-
-2005-10-17  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/tex-mode.el (tex-font-lock-keywords-2): Undo prev change.
-
-2005-10-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * jit-lock.el (jit-lock-fontify-now):
-       Move jit-lock-context-unfontify-pos to avoid wasted work.
-
-2005-10-17  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-completion-mode): New defvar.  Used in
-       `tramp-completion-mode' for checking if we are in completion mode.
-       (tramp-completion-handle-file-name-all-completions): Reorder code
-       in order to complete for file names only in case there are no
-       method/user/host completions.  This is necessary for cooperation
-       with ido.  Reported by Kim F. Storm <storm@cua.dk>.
-
-2005-10-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-search-forward)
-       (longlines-search-backward): Match any number of spaces.
-
-2005-10-16  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * diff-mode.el (diff-mode): Doc fix.
-
-2005-10-16  David Reitter  <david.reitter@gmail.com>
-
-       * mail/sendmail.el (send-mail-function): Use mailclient-send-it
-       as default on darwin and windows systems.
-
-2005-10-16  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
-
-       * arc-mode.el (archive-zip-extract): Doc fix.
-
-2005-10-16  Romain Francoise  <romain@orebokech.com>
-
-       * mouse.el (mouse-1-click-follows-link): Doc fix.
-
-2005-10-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * savehist.el: Don't require CL at runtime.
-       (savehist-xemacs): Remove.
-       (savehist-coding-system): Use utf-8 if present, regardless of religion.
-       (savehist-no-conversion): Use (featurep 'xemacs).
-       (savehist-load): Check existence of start-itimer rather than XEmacs.
-       Use an idle timer.
-       (savehist-process-for-saving): Replace use of CL funs `subseq' and
-       `delete-if-not'.
-
-2005-10-16  Hrvoje Niksic  <hniksic@xemacs.org>
-
-       * savehist.el: Newer version.
-       (savehist-autosave-interval, savehist-coding-system, savehist-timer)
-       (savehist-last-checksum, savehist-no-conversion): New vars.
-       (savehist-autosave, savehist-process-for-saving, savehist-printable):
-       New functions.
-       (savehist-load, savehist-save): Use them.
-       (savehist-delimit): Remove.
-
-2005-10-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/compile.el (compilation-goto-locus): Display the
-       compilation buffer first and the source buffer second, in case they're
-       in overlapping frames.  Don't raise the compilation frame if it was the
-       selected window upon entry.  Pass the `other-window' arg to
-       pop-to-buffer.
-
-       * info.el (Info-fontify-node): Use dolist.
-       Change add-text-properties to put-text-property.
-
-2005-10-16  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-font-lock-url): Catch when point past
-       bound of search.
-
-2005-10-16  Masatake YAMATO  <jet@gyve.org>
-
-       * dabbrev.el (dabbrev-completion): Pass the common
-       prefix substring of completion to `display-completion-list'.
-
-       * filecache.el (file-cache-minibuffer-complete)
-       (file-cache-complete): Ditto.
-
-       * tempo.el (tempo-display-completions): Ditto.
-
-       * wid-edit.el (widget-file-complete, widget-color-complete): Ditto.
-
-       * emacs-lisp/lisp.el (lisp-complete-symbol): Ditto.
-
-       * eshell/em-hist.el (eshell-list-history): Ditto.
-
-       * mail/mailabbrev.el (mail-abbrev-complete-alias): Ditto.
-
-       * mail/mailalias.el (mail-complete): Ditto.
-
-       * progmodes/etags.el (complete-tag): Ditto.
-
-       * progmodes/make-mode.el (makefile-complete): Ditto.
-
-       * progmodes/meta-mode.el (meta-complete-symbol): Ditto.
-
-       * progmodes/octave-mod.el (octave-complete-symbol): Ditto.
-
-       * progmodes/pascal.el (pascal-complete-word)
-       (pascal-show-completions): Ditto.
-
-       * textmodes/bibtex.el (bibtex-complete-internal): Ditto.
-
-       * simple.el (completion-common-substring): New variable.
-       (completion-setup-function): Use `completion-common-substring'
-       to put faces.
-
-2005-10-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Apply 2005-10-09 change for term/x-win.el.
-       (x-get-selection, mac-select-convert-to-string): Convert from/to
-       UTF-16 clipboard data as in native byte order, no BOM.
-
-2005-10-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-tool-bar-map): Rename the images
-       appropriately (gud/next, gud/nexti, gud/step, gud/stepi).
-       (gud-sentinel): Use speedbar-frame to check for speedbar.
-
-2005-10-15  Richard M. Stallman  <rms@gnu.org>
-
-       * savehist.el: New file.
-
-2005-10-14  Karl Chen  <quarl@cs.berkeley.edu>
-
-       * textmodes/tex-mode.el (tex-font-lock-keywords-2):
-       Fix bug in \bf fontification.
-
-2005-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * pcvs.el (cvs-edit-log-files): New var.
-       (cvs-mode-edit-log): New arg `file'.
-       (cvs-edit-log-minor-wrap): Don't set the ignore-marks property.
-       Instead force the use of the original file and nothing else.
-       (cvs-edit-log-filelist): Don't use the cvs-mode-* function unless
-       the cvs-minor-wrap-function is set.
-       (cvs-do-edit-log): Obey the vars set in cvs-edit-log-minor-wrap.
-
-2005-10-14  Bill Wohler  <wohler@newt.com>
-
-       * toolbar/gud-break.*: Moved to etc/images/gud/break.*.
-       * toolbar/gud-cont.*: Moved to etc/images/gud/cont.*.
-       * toolbar/gud-down.*: Moved to etc/images/gud/down.*.
-       * toolbar/gud-finish.*: Moved to etc/images/gud/finish.*.
-       * toolbar/gud-ni.*: Moved to etc/images/gud/ni.*.
-       * toolbar/gud-n.*: Moved to etc/images/gud/n.*.
-       * toolbar/gud-print.*: Moved to etc/images/gud/print.*.
-       * toolbar/gud-pstar.*: Moved to etc/images/gud/pstar.*.
-       * toolbar/gud-remove.*: Moved to etc/images/gud/remove.*.
-       * toolbar/gud-run.*: Moved to etc/images/gud/run.*.
-       * toolbar/gud-si.*: Moved to etc/images/gud/si.*.
-       * toolbar/gud-s.*: Moved to etc/images/gud/s.*.
-       * toolbar/gud-until.*: Moved to etc/images/gud/until.*.
-       * toolbar/gud-up.*: Moved to etc/images/gud/up.*.
-       * toolbar/gud-watch.*: Moved to etc/images/gud/watch.*.
-
-       * progmodes/gud.el (gud-tool-bar-map): Rename the images
-       appropriately (for example, gud-break to gud/break).
-
-2005-10-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlinges-search-function)
-       (longlines-search-forward, longlines-search-backward): New functions.
-       (longlines-mode): Set isearch-search-fun-function to
-       longlinges-search-function.
-
-       * mouse.el (mouse-drag-region-1): Handle the case where a
-       double-click event is bound to an arbitrary function.
-
-2005-10-14  David Ponce  <david@dponce.com>
-
-       * recentf.el (recentf-track-opened-file)
-       (recentf-track-closed-file, recentf-update-menu)
-       (recentf-used-hooks, recentf-enabled-p): Move before dialog stuff.
-       (recentf-dialog-mode-map): Map follow-link to RET, so dialogs obey
-       mouse-1-click-follows-link.
-
-2005-10-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from
-       Gnome file-manager.png.  Suggested by
-       Joachim Nilsson <joachim.nilsson@vmlinux.org>.
-
-       * toolbar/README: Add diropen.xpm.
-
-2005-10-13  Bill Wohler  <wohler@newt.com>
-
-       * makefile.w32-in (MH_E_SRC): Rename from MH-E-SRC per NMAKE
-       restrictions.  Suggested by David Robinow <drobinow@gmail.com>.
-
-2005-10-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/mixal-mode.el (mixal-operation-codes-alist):
-       Don't waste the byte-compiler's time on constant data.
-
-2005-10-13  Kenichi Handa  <handa@m17n.org>
-
-       * international/utf-8.el (utf-8-compose): Display an invalid UTF-8
-       byte with `escape-glyph' face.
-
-       * international/fontset.el (ccl-encode-unicode-font):
-       Lookup utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode.
-       Handle the case that ucs-mule-to-mule-unicode translates a character to
-       ASCII (usually for IPA characters).
-
-2005-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * info.el (Info-fontify-node): Don't be fooled by a lone "...".
-       Don't hide the underline of titles if font-lock-mode is disabled.
-
-2005-10-12  Bill Wohler  <wohler@newt.com>
-
-       * makefile.w32-in (MH-E-SRC): New.  Used by mh-autoloads.
-       (mh-autoloads): New.  Builds mh-e/mh-loaddefs.el.  Rebuilds if any
-       files in MH-E-SRC have been updated.
-       (updates, compile, recompile, bootstrap): Depend on mh-autoloads.
-
-2005-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/mixal-mode.el (mixal-operation-codes): Remove.
-       (mixal-mode-syntax-table): Add \n as end-comment.
-       (mixal-operation-codes-alist): Immediately initialize to full value.
-       (mixal-add-operation-code): Remove.
-       (mixal-describe-operation-code): Make the arg non-optional.
-       Use the interactive spec instead.
-       Use mixal-operation-codes-alist rather than mixal-operation-codes.
-       (mixal-font-lock-keywords): Don't highlight comments here any more.
-       (mixal-font-lock-syntactic-keywords): New var.
-       (mixal-mode): Use it.  Fix comment-start-skip.
-
-2005-10-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * startup.el (command-line-x-option-alist): -nb => -nbi.
-
-2005-10-12  Kim F. Storm  <storm@cua.dk>
-
-       * startup.el (fancy-splash-default-action): Discard mouse click in
-       the splash screen window, as it has no sensible meaning in the
-       next window to be selected.  Fixes error reported by Jan D.
-
-2005-10-12  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil.
-
-2005-10-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/mixal-mode.el: Sync with version in the GNU MDK project.
-       Try to fix up minor layout issues like indentation, line break, etc...
-       (mixal-mode-syntax-table): Don't try to specify comment syntax,
-       because it doesn't work.
-       (mixal-operation-codes): Add some more codes.
-       (mixal-font-lock-keywords): Process comments here.
-       (mixal-mode): mixasm no longer needs -g option.
-
-2005-10-11  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
-
-       * progmodes/sh-script.el (sh-tmp-file):
-       Use mktemp -t.  Finish support for es and rc shells.
-
-2005-10-11  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calcalg2.el (calc-integral): With an argument, compute the
-       definite integral.
-
-2005-10-11  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mouse.el (mouse-drag-region-1): Don't try to catch a
-       double-click when doing follow-link (it's overridden anyway).
-
-2005-10-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/autoload.el (update-directory-autoloads): Doc fix.
-       (autoload-print-form-outbuf): Add docstring.
-
-2005-10-11  Juri Linkov  <juri@jurta.org>
-
-       * info.el (Info-mode-menu): Delete menu item "Edit".
-       (Info-mode): Delete description of Info-edit from docstring,
-       and rearrange descriptions of Info commands in the order
-       they are documented in the Info manual.
-
-2005-10-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * calendar/appt.el (appt-check): Use diary-selective-display var.
-
-2005-10-10  Richard M. Stallman  <rms@gnu.org>
-
-       * net/newsticker.el (newsticker-start, newsticker-show-news):
-       Add autoload cookies.
-
-2005-10-10  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>
-
-       * progmodes/sh-script.el (sh-tmp-file): Use mktemp.
-
-2005-10-10  Karl Chen  <quarl@cs.berkeley.edu>
-
-       * jka-cmpr-hook.el (jka-compr-handler): Fix typo in `operations' prop.
-
-2005-10-10  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-arith.el (math-check-known-scalarp)
-       (math-check-known-matrixp): Check the values of arguments that are
-       variables.
-       (math-check-known-square-matrixp): New function.
-       (math-known-square-matrixp): Use math-check-known-square-matrixp.
-       (math-super-types): Add sqmatrix type.
-
-       * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec): Change the
-       mode name `square' to `sqmatrix'.
-
-       * calc/calc.el (calc-matrix-mode, calc-set-mode-line): Change the
-       mode name `square' to `sqmatrix'.
-
-2005-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/etags.el (select-tags-table-mode): Don't use
-       selective-display.
-       (tags-select-tags-table): Pass `button' to the action function.
-       (select-tags-table): Place the side-info on button properties rather
-       than in hidden text.  Abbreviate file names.
-       (select-tags-table-mode-map): Inherit rather than copy buttom-map.
-       (select-tags-table-select): Add `button' argument.
-       Get side-info from the button property rather than from hidden text.
-
-2005-10-11  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-install-speedbar-variables): Add more bindings.
-       (gud-speedbar-buttons): Preserve point if possible.
-       (gud-sentinel): Restore previous speedbar display type.
-
-       * progmodes/gdb-ui.el (gdba): Improve diagram.
-       (def-gdb-auto-update-handler, gdb-info-locals-handler)
-       (gdb-put-breakpoint-icon, gdb-remove-breakpoint-icons):
-       Call get-buffer-window once.
-
-2005-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/pascal.el (pascal-mode-map): Move init into declaration.
-       (pascal-mode-syntax-table): Make (* *) markers same class as { ... }.
-       (pascal-indent-command): Remove unused var `ind'.
-       (pascal-indent-case): Remove unused var `oldpos'.
-       (pascal-outline-map): Don't inherit from pascal-mode-map anymore,
-       since it's now used as a proper minor mode map.
-       (pascal-outline): Rename to pascal-outline-mode.
-       (pascal-outline-mode): Use define-minor-mode.
-       (pascal-outline-mode, pascal-outline-change): Use overlays rather than
-       selective-display.
-
-2005-10-10  Andreas Schwab  <schwab@suse.de>
-
-       * textmodes/tex-mode.el (tex-font-lock-keywords-2): Adjust match
-       number.  Reported by Karl Chen <quarl@cs.berkeley.edu>.
-
-       * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Fix for building
-       outside source directory.
-
-2005-10-10  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-mode-map): Explicit definition of `C-c
-       C-x' as a prefix.
-       (orgtbl-mode-map): Full keymap instead of sparse, because all
-       `self-insert-command' keys are redefined in this map.
-       (org-export-as-html): Specify charset for HTML file, by taking it
-       from the coding system.
-
-2005-10-10  Kenichi Handa  <handa@m17n.org>
-
-       * textmodes/flyspell.el (flyspell-check-word-p):
-       If unread-command-events is non-empty, don't call sit-for.
-
-2005-10-09  Richard M. Stallman  <rms@gnu.org>
-
-       * font-lock.el (font-lock-syntactic-keywords)
-       (font-lock-keywords): Doc fixes.
-
-       * textmodes/flyspell.el (flyspell-external-point-words):
-       Simplify logic, and don't try to check for consecutive appearances
-       of one incorrect word.
-
-2005-10-10  Nick Roberts  <nickrob@snap.net.nz>
-
-       * speedbar.el (speedbar-buffer-easymenu-definition): Add menu
-       separator.
-
-       * progmodes/gud.el (gud-last-speedbar-buffer): Remove.
-       (gud-install-speedbar-variables): Add GUD to speedbar "Displays" list.
-       (gud-expansion-speedbar-buttons): New function.
-       (gud-speedbar-buttons): Check for gud-comint-buffer.
-
-2005-10-09  Bill Wohler  <wohler@newt.com>
-
-       * Makefile.in (updates): Add mh-loaddefs dependency.
-
-2005-10-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * speedbar.el (speedbar-file-key-map): Fix typo.
-
-2005-10-09  Daniel Brockman  <daniel@brockman.se>
-
-       * cus-start.el (line-spacing): Add custom spec.
-
-2005-10-09  Romain Francoise  <romain@orebokech.com>
-
-       * textmodes/ispell.el (ispell-check-version): Fix last change.
-
-2005-10-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * term/x-win.el: Remove -i, --icon-type from comment.
-
-       * startup.el (command-line-x-option-alist): Remove options -i,
-       -itype, --icon-type, added -nb, --no-bitmap-icon.
-
-2005-10-09  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-speedbar-menu-items): Use :visible
-       instead of :active.
-
-2005-10-08  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
-
-       * textmodes/ispell.el (ispell-check-version):
-       Ignore hyphen, and all that follows, in aspell's version text.
-
-2005-10-08  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-arith.el (math-known-square-matrixp): New function.
-       (math-pow-fancy): Check for matrices before distributing exponent
-       across products.
-
-       * calc/calc-keypd.el (calc-do-keypad): Widen keypad window for
-       fullscreen keypad.  Suggested by Luc Teirlinck.
-       (calc-keypad-show-input): Add space for formatting.
-
-       * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec):
-       Add square matrix option.
-
-       * calc/calc-poly.el (math-expand-term): Check for matrices instead
-       of checking calc-matrix-mode when deciding how to expand.
-
-       * calc/calc.el (calc-set-mode-line): Add square matrix option.
-
-2005-10-08  Lars Hansen  <larsh@soem.dk>
-
-       * net/tramp.el (tramp-perl-directory-files-and-attributes):
-       Add error handling.
-       (tramp-handle-directory-files-and-attributes): Handle perl error msg.
-
-2005-10-08  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.51.
-
-       * net/tramp.el (tramp-handle-set-visited-file-modtime)
-       (tramp-handle-insert-file-contents, tramp-handle-write-region):
-       Insert special handling for `last-coding-system-used', again
-       it still seems to be necessary (unlike stated before).
-       Reported by Toshinori Sugita <sugita@d-pad.co.jp>.
-       (tramp-password-prompt-regexp): There might be other words before
-       trailing ":".  Reported by Kurt Steinkraus <kurt@steinkraus.us>.
-       (tramp-chunksize): Improve docstring.
-       (tramp-set-auto-save-file-modes): Octal integer code #o600 breaks
-       Emacs 20.  Use `tramp-octal-to-decimal' therefore.  Reported by
-       Christian Joergensen <bugs@razor.dk>.
-
-2005-10-07  Glenn Morris  <rgm@gnu.org>
-
-       * progmodes/f90.el (f90-keywords-re, f90-mode): Doc fix.
-       (f90-font-lock-keywords-2, f90-mode-abbrev-table): Add `double
-       precision'.
-
-2005-10-07  Romain Francoise  <romain@orebokech.com>
-
-       * ibuf-ext.el (ibuffer-do-shell-command-pipe)
-       (ibuffer-do-shell-command-pipe-replace)
-       (ibuffer-do-shell-command-file, ibuffer-do-eval)
-       (ibuffer-do-view-and-eval, ibuffer-do-rename-uniquely)
-       (ibuffer-do-revert, ibuffer-do-replace-regexp)
-       (ibuffer-do-query-replace, ibuffer-do-query-replace-regexp)
-       (ibuffer-do-print, ibuffer-filter-by-mode, ibuffer-filter-by-used-mode)
-       (ibuffer-filter-by-name, ibuffer-filter-by-filename)
-       (ibuffer-filter-by-size-gt, ibuffer-filter-by-size-lt)
-       (ibuffer-filter-by-content, ibuffer-filter-by-predicate
-       (ibuffer-do-sort-by-major-mode, ibuffer-do-sort-by-mode-name)
-       (ibuffer-do-sort-by-alphabetic, ibuffer-do-sort-by-size):
-       Autoload file sans suffix.
-
-       * emulation/cua-base.el (cua-toggle-global-mark): Likewise.
-
-2005-10-07  David Ponce  <david@dponce.com>
-
-       * recentf.el (recentf-menu-open-all-flag): New option.
-       (recentf-digit-shortcut-command-name): New function.
-       (recentf--shortcuts-keymap): New variable.
-       (recentf-menu-shortcuts): New variable.
-       (recentf-make-menu-items): Initialize it.  Replace the "More..."
-       menu item by "All...", if `recentf-menu-open-all-flag' is non-nil.
-       (recentf-menu-value-shortcut): New function.
-       (recentf-make-menu-item): Use it.  No more in-lined.
-       (recentf-dialog-mode-map): Base on `recentf--shortcuts-keymap'.
-       (recentf-open-most-recent-file): Rename from
-       `recentf-open-file-with-key'.  Don't depend on key binding.
-       (recentf-mode-map): New variable.
-       (recentf-mode): Use it.
-
-2005-10-06  Bill Wohler  <wohler@newt.com>
-
-       * mh-e/mh-loaddefs.el: Remove.  Now generated automatically.
-
-       * Makefile.in (AUTOGENEL): Add mh-e/mh-loaddefs.el.
-       (MH-E-SRC): New.  Used by mh-autoloads.
-       (mh-autoloads): New.  Builds mh-e/mh-loaddefs.el.  Rebuilds if any
-       files in MH-E-SRC have been updated.
-       (compile, recompile, bootstrap): Depend on mh-autoloads.
-
-2005-10-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-menu-map): Only display un-intuitive
-       gud-break and gud-remove icons when the fringe is not available.
-
-       * progmodes/gdb-ui.el (gdb-fringe-width -> gdb-buffer-fringe-width):
-       Typo.
-
-2005-10-06  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac-@t-lrde.epita.fr>
-
-       * play/zone.el (zone): Wrap body with save-window-excursion.
-
-2005-10-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * calendar/cal-menu.el (calendar-mouse-view-diary-entries):
-       Use the new `list-only' arg to diary-list-entries.
-
-       * calendar/diary-lib.el: Use overlays rather than selective-display.
-       (diary-selective-display): New var.
-       (diary-header-line-format): Use it.
-       (diary-list-entries): Add argument `list-only'.
-       Put the buffer in diary-mode.  Don't add \^M at beg and end.
-       Replace \^M by invisible overlays.
-       (diary-unhide-everything): Replace \^M by invisible overlays.
-       (print-diary-entries): Look for overlays rather than \^M.
-       Add a space to the temp buffer name.
-       (diary-show-all-entries, mark-diary-entries, make-diary-entry):
-       Put the buffer in diary-mode.
-       (list-sexp-diary-entries): Replace \^M by invisible overlays.
-       (diary-anniversary): Make the year arg optional.
-       (diary-time-regexp): New const.
-       (diary-font-lock-keywords): Use it to accept a few more time formats.
-
-       * pcvs.el (cvs-sentinel): Make sure we do re-enable undo.
-
-2005-10-06  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * textmodes/artist.el (artist-ellipse-mirror-quadrant):
-       Fix bug introduced 2005-07-03: Use (car (last ...))
-       to faithfully reproduce replaced artist-last.
-       (artist-set-arrow-points-for-poly): Likewise.
-       Suggested by Johan Bockg\e,Ae\e(Brd.
-
-2005-10-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * dframe.el (x-pointer-hand2, x-pointer-top-left-arrow):
-       * wid-edit.el (widget):
-       * progmodes/gdb-ui.el (gdb-buffer-fringe-width):
-       * progmodes/vhdl-mode.el (speedbar-attached-frame): Add defvars.
-
-2005-10-06  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (set-language-environment):
-       Fix setting up of case-table for unibyte mode.
-
-       * simple.el (what-cursor-position): If the character is displayed
-       by some `display' text property, show that.  Don't use
-       single-key-description for eight-bit characters in multibyte mode.
-
-2005-10-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-fringe-width): New variable.
-       (gdb-ann3): Set it.
-       (gdb-put-breakpoint-icon): Don't take fringe-width from speedbar frame.
-       (gdb-info-frames-custom): Use inverse-video for first five
-       characters of selected frame only.
-       (gdb-get-frame-number): Select frame even when point is on frame
-       number.
-
-2005-10-06  Masatake YAMATO  <jet@gyve.org>
-
-       * progmodes/gdb-ui.el (gdb-info-breakpoints-custom):
-       Put `font-lock-function-name-face'.
-       (gdb-info-frames-custom): Put `font-lock-function-name-face'
-       and `font-lock-variable-name-face'
-       (gdb-registers-font-lock-keywords): New font lock keywords definition.
-       (gdb-registers-mode): Use `gdb-registers-font-lock-keywords`.
-       (gdb-memory-font-lock-keywords): New font lock keywords definition.
-       (gdb-memory-mode): Use `gdb-memory-font-lock-keywords'.
-       (gdb-local-font-lock-keywords): New font lock keywords definition.
-       (gdb-locals-mode): Use `gdb-local-font-lock-keywords'
-       (gdb-threads-font-lock-keywords): New font lock keywords definition.
-       (gdb-threads-mode): Use `gdb-threads-font-lock-keywords'.
-
-2005-10-05  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * ediff-merge.el (ediff-merge-region-is-non-clash): New defsubst.
-       (ediff-merge-region-is-non-clash-to-skip): Previously called
-       ediff-merge-region-is-non-clash.
-
-       * ediff-mult.el (ediff-append-custom-diff, ediff-meta-show-patch):
-       Use insert-buffer-substring.
-
-       * ediff-ptch.el (ediff-fixup-patch-map): Use better heuristics for
-       selecting files to patch.  Also bug fixes.
-
-       * ediff-util.el (ediff-setup): Bug fix.
-       (ediff-next-difference): Never skip clashes that differ in white
-       space only.
-
-       * ediff-wind.el (ediff-setup-control-frame)
-       (ediff-destroy-control-frame): Check the menubar feature.
-
-       * viper-cmd.el (viper-normalize-minor-mode-map-alist)
-       (viper-refresh-mode-line): Use make-local-variable to localize
-       some vars instead of make-variable-buffer-local.  Suggested by
-       Stefan Monnier.
-
-       * viper-init.el (viper-make-variable-buffer-local): Delete alias.
-       (viper-restore-cursor-type, viper-set-insert-cursor-type):
-       Use make-local-variable instead of make-variable-buffer-local.
-       Suggested by Stefan Monnier.
-
-       * viper.el (viper-mode): Don't use viper-make-variable-buffer-local.
-       (viper-comint-mode-hook): Use make-local-variable on
-       require-final-newline.
-       (viper-non-hook-settings): Don't use make-variable-buffer-local.
-
-2005-10-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/scheme.el (scheme-mode-syntax-table): Mark ; as being
-       also the second char of a comment-start sequence.
-       (scheme-sexp-comment-syntax-table): New var.
-       (lambda, define): Set their scheme-doc-string-elt property.
-       (scheme-font-lock-syntactic-face-function): Handle sexp-comments.
-       Use lisp-font-lock-syntactic-face-function now that it properly
-       handles |...| symbols.
-       (scheme-mode-variables): Set lisp-doc-string-elt-property,
-       parse-sexp-lookup-properties and font-lock-extra-managed-props.
-
-       * emacs-lisp/lisp-mode.el (lisp-mode-syntax-table): Move the nesting
-       bit from # to |.
-       (lisp-font-lock-syntactic-face-function): Distinguish |...| symbols.
-
-       * emacs-lisp/lisp-mode.el (lambda): Add its doc-string-elt property.
-       (lisp-doc-string-elt-property): New var.
-       (lisp-font-lock-syntactic-face-function): Use it.
-       Rewrite to recognize docstrings even for forms not at toplevel.
-
-       * progmodes/scheme.el (scheme-mode-syntax-table): Put the nested
-       annotation on the | part of #| rather than on the # part.
-       (scheme-font-lock-syntactic-face-function): New function, to
-       distinguish strings from |...| symbols.
-       (scheme-mode-variables): Use it.  Also fix up the font-lock-time
-       syntax-table so that #|...|# is properly highlighted.
-
-       * emacs-lisp/lisp-mode.el (lisp-font-lock-syntactic-face-function):
-       Don't mark as docstring the 3rd elem of an unknown toplevel form.
-
-2005-10-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * bindings.el (global-map): Resync [home] and [end] bindings with C-a
-       and C-e.
-
-       * emacs-lisp/eldoc.el: Move comments into docstrings.
-       (eldoc-message-commands): Initialize in its declaration.
-       Add move-beginning-of-line and move-end-of-line.
-       (eldoc-add-command, eldoc-add-command-completions)
-       (eldoc-remove-command, eldoc-remove-command-completions): Simplify.
-
-       * outline.el (outline-mark-subtree): Activate the mark.
-
-       * calendar/appt.el (appt-time-regexp): New var.
-       (appt-add, appt-make-list): Use it.
-       (appt-convert-time): Clean up.
-
-       * textmodes/tex-mode.el (tex-font-lock-syntactic-face-function):
-       Don't set any syntax-table property here.
-       (tex-font-lock-verb): New function.  Do it here.
-       (tex-font-lock-syntactic-keywords): Use it.
-
-2005-10-04  Richard M. Stallman  <rms@gnu.org>
-
-       * wid-edit.el (widget-file-complete): Get the widget start point
-       the right way.  Default directory to `/' if file has none.
-
-       * x-dnd.el (x-dnd-drop-data): Check for dedicated windows.
-
-       * textmodes/flyspell.el (flyspell-mode-on):
-       Call ispell-maybe-find-aspell-dictionaries.
-
-       * textmodes/ispell.el (ispell-word, ispell-region):
-       Call ispell-maybe-find-aspell-dictionaries.
-       (ispell-accept-buffer-local-defs):
-       Don't call ispell-maybe-find-aspell-dictionaries.
-
-2005-10-04  Richard M. Stallman  <rms@gnu.org>
-
-       * iswitchb.el (iswitchb-buffer-ignore): Label it risky.
-
-2005-10-04  Emilio C. Lopes  <eclig@gmx.net>
-
-       * iswitchb.el (iswitchb-ignore-buffername-p): Use `functionp'
-       instead of `fboundp' in order to allow for anonymous functions.
-
-2005-10-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
-       case the user clicks on the link while another window is selected.
-       (Info-speedbar-hierarchy-buttons): Use speedbar-current-frame.
-
-       * dframe.el (dframe-update-keymap): Use mouse-1-click-follows-link
-       functionality.
-       (dframe-help-echo): Save point in case mouse tracking is off.
-
-2005-10-04  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * net/ange-ftp.el (ange-ftp-ls): Fix typo introduced in last change.
-
-2005-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/cc-styles.el (c-setup-paragraph-variables): Make sure we do
-       not change the global value of those vars.
-
-       * progmodes/cc-mode.el (c-basic-common-init): Remove calls to
-       make-local-variable which we do not need any more.
-
-2005-10-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * speedbar.el (speedbar-ignored-path-regexp, speedbar-line-path)
-       (speedbar-ignored-path-expressions, speedbar-buffers-line-path)
-       (speedbar-add-ignored-path-regexp, speedbar-buffers-line-path)
-       (speedbar-path-line): Define obsolete aliases.
-       (speedbar-line-directory): Doc fix.
-
-       * progmodes/vhdl-mode.el (vhdl-speedbar-initialize)
-       (vhdl-speedbar-rescan-hierarchy): Call speedbar-line-directory
-       instead of speedbar-line-path.
-
-2005-10-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * x-dnd.el (x-dnd-drop-data): Don't set dnd-open-file-other-window
-       to nil if dropping on a window.  Handle dropping on a minibuffer window
-       like dropping on a non-window part of Emacs.
-
-2005-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * net/ange-ftp.el: Use with-current-buffer.
-       (ange-ftp-insert-directory): Do not follow symlinks any more.
-
-       * textmodes/ispell.el (ispell-find-aspell-dictionaries):
-       Remove interactive spec.
-
-2005-10-03  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-mode): Use custom-initialize-set.
-
-2005-10-02  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/ebnf2ps.el (ebnf-eps-production-list):
-       Use insert-buffer-substring.
-
-       * net/tramp.el: Pacify byte compiler warnings in pacification code.
-       (tramp-handle-file-local-copy): Use insert-buffer-substring.
-
-2005-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * net/ange-ftp.el (ange-ftp-insert-directory): Undo unintended part
-       in last change.
-       (ange-ftp-insert-directory): Fix up the search for the case where
-       `file' is absolute.
-
-2005-10-02  Romain Francoise  <romain@orebokech.com>
-
-       * progmodes/compile.el (compile-goto-error): Delete extra paren.
-
-2005-10-02  Andreas Schwab  <schwab@suse.de>
-
-       * ediff-ptch.el (ediff-fixup-patch-map): Handle file names without
-       directory component in the session info.
-
-2005-10-01  Richard M. Stallman  <rms@gnu.org>
-
-       * comint.el (comint-redirect-subvert-readonly): Doc fix.
-
-       * simple.el (next-error-internal): New function.
-
-       * progmodes/compile.el (compilation-buffer-name): New arg MODE-COMMAND.
-       (compilation-start): Pass new arg to compilation-buffer-name.
-       (compile-goto-error): Use next-error-internal.
-
-2005-10-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * speedbar.el: Remove RCS tag.
-       (speedbar-check-read-only): Handle non-existent files.
-
-       * dframe.el, ezimage.el, sb-image.el: Remove RCS tags.
-
-       * info.el (Info-speedbar-hierarchy-buttons)
-       (Info-speedbar-goto-node): Call speedbar-select-attached-frame.
-
-2005-10-01  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-valid-entry-whitespace-re):
-       Do not match newline.
-       (bibtex-realign): Do not use bibtex-valid-entry-whitespace-re.
-       (bibtex-summary): Remove unnecessary save-excursion.
-       (bibtex-fill-field-bounds): Use fill-region-as-paragraph.
-
-2005-10-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Add charset info for "iso10646-1".
-       Modify default fontset to use ATSUI-compatible fonts for some charsets
-       if available.
-
-2005-10-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * speedbar.el: Re-apply arch tag.
-       (speedbar-version): Rename to version 1.0.  Suggested by Eric
-       M. Ludlam.
-       Reapply two changes from Emacs CVS' version of speedbar lost
-       during the merge:
-       (speedbar-use-imenu-flag): Avoid unnecessary use of locate-library.
-       (speedbar-frame-parameters): Improve customize type.
-
-2005-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * net/ange-ftp.el (ange-ftp-gwp-start): Use with-current-buffer.
-       (ange-ftp-file-directory-p): Fix the symlink case.
-       (ange-ftp-insert-directory): When listing a single file, get a list of
-       the parent buffer and extract the relevant line.  Inspired from a patch
-       by Katsumi Yamaoka <yamaoka@jpl.org>.
-       (ange-ftp-file-name-sans-versions): Simplify.
-
-2005-09-30  Bill Wohler  <wohler@newt.com>
-
-       Move MH-E image files from toolbar and mail directories into
-       etc/images.
-
-       * mail/reply2.*: Move to etc/images/mail/reply*.
-
-       * toolbar/execute.*, toolbar/highlight.*, toolbar/mh-logo.xpm:
-       * toolbar/page-down.*, toolbar/show.*, toolbar/widen.*: Move to
-       etc/images.
-
-       * toolbar/alias.*, toolbar/refile.*, toolbar/repack.*:
-       * toolbar/reply*: Move to etc/images/mail.
-
-       * toolbar/rescan.*: Move and rename to etc/images/refresh.*.
-
-2005-09-30  Eric M. Ludlam  <zappo@gnu.org>
-
-       * speedbar.el: New version 1.0pre3.
-
-       Frame management code (including timer, and mouse click specifics)
-       moved to dframe.el:
-       (speedbar-attached-frame): Removed.  Use dframe-attached-frame.
-       (speedbar-timer): Removed.  Use dframe-timer.
-       (speedbar-close-frame): Removed.  Use dframe-close-frame.
-       (speedbar-activity-change-focus-flag): Removed.  Use
-       dframe-activity-change-focus-flag.
-       (speedbar-update-speed, speedbar-navigating-speed): Obsolete.  Use
-       dframe-update-speed.
-
-       (speedbar-current-frame): New macro.  Use this instead of the
-       variable speedbar-frame.
-
-       (speedbar-use-images, speedbar-expand-image-button-alist)
-       (speedbar-insert-image-button-maybe): Moved to sb-image.el.
-
-       (speedbar-find-image-on-load-path): Removed.  Replaced by
-       defezimage in ezimage.el.
-       (speedbar-expand-image-button-alist): Removed.  Replaced by
-       ezimage-expand-image-button-alist in ezimage.el.
-
-       (speedbar-ignored-directory-regexp)
-       (speedbar-add-ignored-directory-regexp)
-       (speedbar-ignored-directory-expressions)
-       (speedbar-line-directory, speedbar-buffers-line-directory)
-       (speedbar-directory-line, speedbar-buffers-line-directory):
-       Renamed, replacing `path' with `directory'.
-
-       (speedbar-create-directory, speedbar-expand-line-descendants)
-       (speedbar-toggle-line-expansion)
-       (speedbar-contract-line-descendants): New commands.
-
-       (speedbar-query-confirmation-method, speedbar-select-frame-method)
-       (speedbar-use-tool-tips-flag): New options.
-
-       (speedbar-check-read-only, speedbar-require-version)
-       (speedbar-insert-separator, speedbar-buffers-tail-notes)
-       (speedbar-handle-delete-frame, speedbar-try-completion)
-       (speedbar-update-localized-contents): New functions.
-
-       (speedbar-incompatible-version, speedbar-ro-to-do-point)
-       (speedbar-object-read-only-indicator): New variables.
-
-       (speedbar-visiting-tag-hook, speedbar-before-visiting-file-hook):
-       New hooks.
-
-       (speedbar-separator-face): New face.
-
-       (speedbar-supported-extension-expressions): Add `.g' and `.ma?k'.
-       (speedbar-ignored-modes): Add fundamental-mode.
-       (speedbar-directory-unshown-regexp): Add . directories.
-
-       (speedbar-key-map): Remove old SPC and DEL page up/down keys.
-       (speedbar-file-key-map): Add SPC to toggle node expansion, `[' and
-       `]' for full expand/close.
-       (speedbar-buffers-key-map): Add SPC to toggle node expansion.
-
-       (speedbar-check-vc): Support hidden files.
-       (speedbar-vc-check-dir-p): Use vc-state if available for CVS.
-       (speedbar-this-file-in-vc): Use vc-state if available.  If VC
-       state is nil, it is not checked out.
-
-       (speedbar-line-text, speedbar-line-token): Support expand buttons
-       with no text.
-       (speedbar-refresh): Universal argument acts as power-click.
-       (speedbar-fetch-dynamic-tags): If a buffer is in Emacs, switch to
-       that buffer to get variable values.
-
-       And many other bugfixes.
-
-       * dframe.el, ezimage.el, sb-image.el: New files.
-
-       * sb-*.xpm: Remove files.  New image files installed into
-       etc/images/ezimage.
-
-2005-09-30  Kenichi Handa  <handa@m17n.org>
-
-       * ps-mule.el (ps-mule-show-warning): If a character is in
-       ps-print-translation-table, don't treat it as non-printable.
-
-2005-09-30  David Ponce  <david@dponce.com>
-
-       * tree-widget.el (tree-widget-themes-load-path): New variable.
-       (tree-widget-themes-directory): Doc fix.
-       (tree-widget-image-formats) [Emacs]: Doc fix.
-       (tree-widget--locate-sub-directory): New function.
-       (tree-widget-themes-directory): Use it.
-
-       * recentf.el (recentf-filename-handlers): Rename from
-       `recentf-filename-handler'.  Allow a list of functions.
-       (recentf-menu-items-for-commands): Fix :help strings.
-       (recentf-apply-filename-handlers): New function.
-       (recentf-expand-file-name): Use it.
-       (recentf-cleanup): Remove duplicates too.
-
-2005-09-29  Juri Linkov  <juri@jurta.org>
-
-       * faces.el: Rearrange face definitions to be in the same order as
-       their face descriptions in "(emacs)Standard Faces".
-
-       * isearch.el (isearch, lazy-highlight): Add group `basic-faces'.
-
-       * tooltip.el (tooltip): Add group `basic-faces'.
-
-       * buff-menu.el (Buffer-menu-buffer): Remove group
-       `font-lock-highlighting-faces'.
-
-       * progmodes/compile.el (compilation-error, compilation-warning)
-       (compilation-info, compilation-line-number, compilation-column-number):
-       Change group from `font-lock-highlighting-faces' to `compilation'.
-
-       * progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
-       (vhdl-font-lock-attribute-face, vhdl-font-lock-enumvalue-face)
-       (vhdl-font-lock-function-face, vhdl-font-lock-directive-face)
-       (vhdl-font-lock-reserved-words-face)
-       (vhdl-font-lock-translate-off-face, syntax-alist): Remove group
-       `font-lock-highlighting-faces'.
-
-       * cus-edit.el (custom-buffer-sort-alphabetically): Default to nil.
-
-2005-09-28  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el: Set CUA move property on additional commands:
-       up-list, down-list, backward-up-list, end-of-defun beginning-of-defun,
-       forward-sexp, backward-sexp, forward-list, backward-list.
-
-2005-09-28  Romain Francoise  <romain@orebokech.com>
-
-       * comint.el (comint-show-output): Really set point at the
-       beginning of the output when not using `comint-use-prompt-regexp'.
-
-2005-09-27  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-lang.el (math-oper-table): Raise the precedence of "/"
-       in TeX mode.
-
-2005-09-26  Juanma Barranquero  <lekktu@gmail.com>
-
-       * textmodes/org.el (org-table-sum): Fix format string.
-
-       * textmodes/tex-mode.el (tex-insert-quote, latex-indent):
-       Quote face names.
-
-2005-09-26  Romain Francoise  <romain@orebokech.com>
-
-       * isearch.el (isearch-forward-regexp): Close doc string.
-
-2005-09-25  Richard M. Stallman  <rms@gnu.org>
-
-       * simple.el (blink-matching-open): Don't no-op when point is BEGV+1.
-
-       * isearch.el (isearch-forward, isearch-forward-regexp): Doc fixes.
-
-       * progmodes/compile.el (compilation-error-properties):
-       When getting the file from the previous error message,
-       correctly decode the new data format.
-
-       * progmodes/cc-cmds.el (c-electric-paren):
-       Call old-blink-paren only for close-paren.
-
-2005-09-24  Andreas Schwab  <schwab@suse.de>
-
-       * term/rxvt.el (rxvt-register-default-colors): Delete redundant
-       condition.
-
-2005-09-25  Romain Francoise  <romain@orebokech.com>
-
-       * dired-aux.el (dired-copy-file-recursive):
-       * dired.el (dired-delete-file):
-       * ediff-mult.el (ediff-dir-diff-copy-file):
-       * ediff-util.el (ediff-test-save-region):
-       * forms.el (forms-mode):
-       * ido.el (ido-file-internal, ido-delete-file-at-head):
-       * log-edit.el (log-edit-done):
-       * ses.el (ses-yank-resize):
-       * play/gomoku.el (gomoku-human-plays, gomoku)
-       (gomoku-human-resigns, gomoku-prompt-for-other-game)
-       (gomoku-offer-a-draw):
-       * play/landmark.el (lm-human-resigns, lm):
-       * net/eudcb-ldap.el (eudc-ldap-check-base):
-       * play/mpuz.el (mpuz-offer-abort, mpuz-try-letter, mpuz-close-game):
-       * progmodes/ebrowse.el (ebrowse-find-pattern):
-       * progmodes/idlw-shell.el (idlwave-shell-set-bp-check):
-       * textmodes/reftex-index.el (reftex-index-initialize-phrases-buffer):
-       End `yes-or-no-p' and `y-or-n-p' prompts with question mark and space.
-
-       * vc.el (vc-delete-file):
-       * play/gomoku.el (gomoku-terminate-game, gomoku)
-       (gomoku-prompt-for-move, gomoku-human-takes-back):
-       * play/landmark.el (lm-human-takes-back, lm-prompt-for-move)
-       (lm-start-robot, lm-human-plays): Remove extraneous spaces in messages.
-
-2005-09-24  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/rxvt.el (rxvt-register-default-colors): Add support for 255
-       color rxvt terminals by using the code xterm.el used to use before
-       2005-04-09 in order to match the colors used by rxvt.
-
-2005-09-24  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
-
-       * term/rxvt.el (rxvt-register-default-colors): Add support for 88
-       colors rxvt-unicode terminals by using the same code as xterm.el.
-
-2005-09-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/tex-mode.el (tex-font-lock-append-prop)
-       (tex-font-lock-suscript, tex-insert-quote, latex-indent): Adjust to the
-       new symbol used for the tex-verbatim face.
-
-2005-09-24  Emilio C. Lopes  <eclig@gmx.net>
-
-       * woman.el (woman-file-name):
-       * wid-edit.el (widget-file-prompt-value)
-       (widget-coding-system-prompt-value):
-       * w32-fns.el (set-w32-system-coding-system):
-       * vc.el (vc-version-diff, vc-annotate):
-       * textmodes/reftex-auc.el (reftex-arg-cite)
-       (reftex-arg-index-tag):
-       * textmodes/refer.el (refer-get-bib-files):
-       * textmodes/artist.el (artist-figlet-choose-font):
-       * terminal.el (terminal-emulator):
-       * replace.el (occur-read-primary-args):
-       * rect.el (string-rectangle, string-insert-rectangle):
-       * ps-print.el (ps-print-preprint):
-       * progmodes/pascal.el (pascal-goto-defun):
-       * progmodes/etags.el (visit-tags-table, visit-tags-table-buffer):
-       * progmodes/compile.el (compilation-find-file):
-       * printing.el (pr-interactive-n-up):
-       * play/animate.el (animate-birthday-present):
-       * net/rcompile.el (remote-compile):
-       * man.el (man, Man-goto-section, Man-follow-manual-reference):
-       * mail/rmailsum.el (rmail-summary-search-backward)
-       (rmail-summary-search):
-       * mail/rmailout.el (rmail-output-read-rmail-file-name)
-       (rmail-output-read-file-name):
-       * mail/rmail.el (rmail-search, rmail-search-backwards):
-       * mail/mailabbrev.el (merge-mail-abbrevs, rebuild-mail-abbrevs):
-       * locate.el (locate):
-       * international/quail.el (quail-show-keyboard-layout):
-       * international/mule.el (set-buffer-file-coding-system)
-       (revert-buffer-with-coding-system, set-file-name-coding-system)
-       (set-terminal-coding-system, set-keyboard-coding-system)
-       (set-next-selection-coding-system):
-       * international/mule-diag.el (describe-coding-system)
-       (describe-font, describe-fontset):
-       * international/mule-cmds.el (universal-coding-system-argument)
-       (search-unencodable-char, describe-input-method)
-       (set-language-environment, describe-language-environment):
-       * international/codepage.el (codepage-setup):
-       * international/code-pages.el (codepage-setup):
-       * info.el (Info-search, Info-follow-reference)
-       (Info-search-backward):
-       * emacs-lisp/advice.el (ad-read-advised-function)
-       (ad-read-advice-class, ad-clear-cache, ad-activate)
-       (ad-deactivate, ad-update, ad-unadvise, ad-read-advice-name)
-       (ad-enable-advice, ad-disable-advice, ad-remove-advice)
-       (ad-read-regexp):
-       * ediff-util.el (ediff-toggle-regexp-match):
-       * ediff-ptch.el (ediff-prompt-for-patch-file):
-       * dired-aux.el (dired-diff):
-       * diff.el (diff):
-       * cus-edit.el (custom-variable-prompt):
-       * calendar/timeclock.el (timeclock-ask-for-project):
-       * calc/calcalg3.el (calc-get-fit-variables):
-       * calc/calc-store.el (calc-edit-variable)
-       (calc-permanent-variable):
-       * vc-mcvs.el (vc-mcvs-register):
-       * shadowfile.el (shadow-define-literal-group):
-       * woman.el (woman-file-name):
-       * vc.el (vc-version-diff, vc-merge):
-       * textmodes/reftex-index.el (reftex-index-complete-tag):
-       * format.el (format-decode-buffer, format-decode-region):
-       * emulation/viper-cmd.el (viper-read-string-with-history):
-       * emacs-lisp/debug.el (cancel-debug-on-entry):
-       * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
-       * ediff.el (ediff-merge-revisions)
-       (ediff-merge-revisions-with-ancestor, ediff-revision):
-       * completion.el (interactive-completion-string-reader):
-       * calc/calc-prog.el (calc-user-define-formula):
-       Follow convention for reading with the minibuffer.
-
-2005-09-24  Steven Huwig  <steven_h@acm.org>  (tiny change)
-
-       * progmodes/python.el (python-describe-symbol): Add globals() and
-       locals() to the arguments of emacs.ehelp.
-
-2005-09-24  Magnus Henoch  <mange@freemail.hu>
-
-       * textmodes/ispell.el (ispell-maybe-find-aspell-dictionaries):
-       New function, code extracted from ispell-valid-dictionary-list.
-       (ispell-valid-dictionary-list, ispell-accept-buffer-local-defs):
-       Call it.
-
-2005-09-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * subr.el (version-regexp-alist): Extend valid syntax for version
-       strings: allow any of the characters -,_,+ to separate the
-       alpha/beta/rc part from the version part.  Doc fix.
-       (version-to-list): Doc fix.  Bind case-fold-search to t, as advertised.
-
-2005-09-23  David Reitter  <david.reitter@gmail.com>
-
-       * mail/mailclient.el: New file.
-
-2005-09-23  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-highlight-incorrect-region)
-       (flyspell-incorrect-hook, flyspell-highlight-duplicate-region):
-       Doc fixes.
-
-       * progmodes/cc-mode.el (c-font-lock-init):
-       Specify font-lock-lines-before.
-
-2005-09-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * smerge-mode.el (smerge-remove-props): Cause re-highlighting of the
-       whole conflict.
-
-2005-09-23  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-mode-map, orgtbl-mode-map):
-       Move keybindings with `C-c C-h' prefix to `C-c C-x' prefix.  Make use
-       of `remap' feature when available.  Additional key bindings for
-       better tty support.
-       (org-mode-restart, org-force-self-insert): New commands.
-       (org-time-stamp-inactive): New command.
-       (org-remap): New function.
-       (org-table-auto-blank-field, org-level-color-stars-only): New options.
-       (org-enable-fixed-width-editor): Move to `org-structure'
-       customization group.
-       (org-self-insert-command, orgtbl-self-insert-command): Modify to
-       blank field after field motion commands.
-
-2005-09-23  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (set-language-environment):
-       Don't check utf-translate-cjk-lang-env is nil or not on deciding if we
-       have to call utf-translate-cjk-load-tables.
-
-2005-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mouse.el (mouse-move-drag-overlay): Fix last change.
-
-2005-09-22  David Ponce  <david@dponce.com>
-
-       * tree-widget.el (tree-widget-value-create): Fix previous change.
-
-2005-09-21  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Fix loading rxvt at run time.
-
-2005-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mouse.el (mouse-move-drag-overlay): New function.
-       (mouse-drag-region-1): Use it.
-       Try to simplify a bit the state handling.  Handle clicks on links
-       inside intangible areas.
-       (mouse-save-then-kill): Minor simplification.
-       (mouse-secondary-overlay): Make it always non-nil instead of
-       recreating it each time.
-       (mouse-start-secondary, mouse-set-secondary, mouse-drag-secondary)
-       (mouse-kill-secondary, mouse-secondary-save-then-kill):
-       Simplify accordingly.
-
-2005-09-21  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/rxvt.el (rxvt-standard-colors): Fix some colors.
-
-2005-09-20  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * ediff-ptch.el (ediff-prompt-for-patch-file): More intuitive prompt.
-       (ediff-file-name-sans-prefix): Treat nil as an empty string.
-       (ediff-fixup-patch-map): Better heuristic for intuiting the file names
-       to patch.
-
-       * ediff-util.el: Use insert-buffer-substring.
-
-       * ediff-vers.el (cvs-run-ediff-on-file-descriptor): Bug fix.
-
-       * emulation/viper-cmd.el (viper-change-state): Don't move over the
-       field boundaries in the minibuffer.
-       (viper-set-minibuffer-style): Add viper-minibuffer-post-command-hook.
-       (viper-minibuffer-post-command-hook): New hook.
-       (viper-line): Don't move cursor at bolp.
-
-       * emulation/viper-ex.el (ex-pwd, viper-info-on-file): Fix message.
-
-       * emulation/viper-init.el: Add alias to make-variable-buffer-local to
-       avoid compiler warnings.
-
-       * emulation/viper-macs.el (ex-map): Better messages.
-
-       * emulation/viper-utils.el (viper-beginning-of-field): New function.
-
-       * emulation/viper.el: Replace make-variable-buffer-local with
-       viper-make-variable-buffer-local everywhere, to avoid warnings.
-
-2005-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line):
-       Delete unused var `old-selected-window'.
-       (mouse-drag-region-1): Delete unused vars `start-frame', `end-of-range'.
-       (mouse-drag-secondary): Delete unused var `start-frame'.
-
-2005-09-19  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
-
-       * term/rxvt.el (terminal-init-rxvt): Add entry for [end].
-
-2005-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * calendar/calendar.el (mark-visible-calendar-date): Save excursion.
-       Re-indent within 80 columns.  Use inhibit-read-only.
-
-2005-09-19  Romain Francoise  <romain@orebokech.com>
-
-       * calendar/diary-lib.el (mark-diary-entries): Revert last change.
-
-2005-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (font-lock-default-fontify-region): Don't add a line
-       unconditionally, since the after-change-function already did it.
-
-2005-09-19  Miles Bader  <miles@gnu.org>
-
-       * net/newsticker.el: Get rid of CVS keyword.
-
-2005-09-19  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * dired-aux.el (dired-handle-overwrite): Don't use `format' here.
-       The prompt is formatted later.
-
-2005-09-19  David Ponce  <david@dponce.com>
-
-       * tree-widget.el (tree-widget-value-create): Save the converted
-       tree :node widget.
-
-2005-09-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/sh-script.el (sh-blink): Fix spurious reference to
-       variable `message'.
-
-2005-09-18  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-login-prompt-regexp): Expand regexp in order
-       to cover prompts like "login as:".  Reported by Slawomir Nowaczyk
-       <slawomir.nowaczyk.847@student.lu.se>.
-
-2005-09-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.el (image-load-path): Use symbol `data-directory' instead
-       of its value, for backward compatibility with packages that bind
-       it during `find-image'.  Suggested by Katsumi Yamaoka.
-       (image-search-load-path): Handle symbols whose values are strings.
-
-2005-09-18  Romain Francoise  <romain@orebokech.com>
-
-       * calendar/diary-lib.el (mark-diary-entries): Rearrange to wrap
-       with-current-buffer form in save-excursion.
-
-2005-09-18  Deepak Goel  <deego@gnufans.org>
-
-       * apropos.el (apropos-command): Fix `message' call: first arg
-       should be a format spec.  In this and all other cases that appear
-       below and elsewhere in the source code, I made a change only when
-       two conditions were satisfied: [1] I can think of a possibility
-       that the arguments would cause an error, for example, the code in
-       question relies on external variables such as filenames.  [2] I
-       was sure that the arg to `message' could not have been nil in the code.
-
-       * textmodes/tildify.el (tildify-region): Ditto.
-
-       * textmodes/reftex-index.el (reftex-index-change-entry)
-       (reftex-index-phrase-selection-or-word, reftex-query-index-phrase):
-       * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite):
-       * textmodes/org.el (org-complete, org-deadline, org-schedule)
-       (org-priority, org-table-sum):
-       * textmodes/ispell.el (ispell-check-version, ispell-parse-output):
-       * textmodes/flyspell.el (flyspell-mode-on, flyspell-notify-misspell)
-       (flyspell-word, flyspell-display-next-corrections):
-       * textmodes/bibtex.el (bibtex-print-help-message):
-       * textmodes/artist.el (artist-key-set-point-poly):
-       * term/mac-win.el (mac-services-insert-text):
-       * progmodes/vhdl-mode.el (vhdl-warning, vhdl-print-warnings)
-       (vhdl-hooked-abbrev, vhdl-template-insert-fun)
-       (vhdl-port-paste-testbench, vhdl-compose-new-component)
-       (vhdl-compose-configuration):
-       * progmodes/sh-script.el (sh-blink, sh-show-indent)
-       (sh-set-indent, sh-learn-line-indent):
-       * progmodes/ps-mode.el (ps-mode-target-column):
-       * progmodes/idlwave.el (idlwave-make-tags)
-       (idlwave-scan-library-catalogs):
-       * progmodes/idlw-shell.el (idlwave-shell-parse-stack-and-display):
-       * progmodes/gud.el (gud-jdb-analyze-source):
-       * progmodes/flymake.el (flymake-log):
-       * progmodes/ebnf2ps.el (ebnf-generate-region):
-       * progmodes/cmacexp.el (c-macro-expansion):
-       * progmodes/ada-xref.el (ada-treat-cmd-string):
-       * progmodes/ada-mode.el (ada-create-case-exception-substring)
-       (ada-justified-indent-current, ada-batch-reformat):
-       * play/zone.el (zone):
-       * play/landmark.el (lm-move):
-       * play/decipher.el (decipher-show-alphabet):
-       * net/newsticker.el (newsticker--display-jump)
-       (newsticker--display-scroll):
-       * mail/rmail-spam-filter.el (rsf-add-subject-to-spam-list)
-       (rsf-add-sender-to-spam-list, rsf-add-region-to-spam-list):
-       * mail/feedmail.el (feedmail-dump-message-to-queue):
-       * eshell/esh-proc.el (eshell-remove-process-entry):
-       * emulation/ws-mode.el (ws-last-error):
-       * emulation/viper-macs.el (ex-map-read-args, ex-unmap-read-args)
-       (viper-record-kbd-macro):
-       * emulation/viper-ex.el (ex-pwd, viper-info-on-file):
-       * emacs-lisp/lisp-mnt.el (lm-report-bug):
-       * emacs-lisp/find-func.el (find-function-noselect):
-       * calendar/timeclock.el (timeclock-status-string)
-       (timeclock-workday-remaining-string, timeclock-workday-elapsed-string)
-       (timeclock-when-to-leave-string):
-       * calendar/icalendar.el (icalendar--convert-ical-to-diary):
-       * calc/calc-units.el (calc-enter-units-table):
-       * calc/calc-mode.el (calc-mode-record-mode):
-       * woman.el (woman-mini-help):
-       * wdired.el (wdired-change-to-wdired-mode):
-       * vc.el (vc-retrieve-snapshot):
-       * strokes.el (strokes-read-stroke, strokes-read-complex-stroke):
-       * startup.el (display-startup-echo-area-message):
-       * simple.el (set-goal-column):
-       * ses.el (ses-command-hook, ses-recalculate-cell):
-       * server.el (server-process-filter):
-       * printing.el (pr-interface-txt-print, pr-interface-printify)
-       (pr-interface-ps):
-       * pcvs.el (cvs-help):
-       * log-edit.el (log-edit, log-edit-mode-help):
-       * iswitchb.el (iswitchb-possible-new-buffer):
-       * isearch.el (isearch-edit-string):
-       * image-mode.el (image-mode, image-minor-mode):
-       * ibuf-macs.el (define-ibuffer-filter):
-       * hi-lock.el (hi-lock-find-patterns):
-       * files.el (toggle-read-only):
-       * ediff-util.el (ediff-copy-diff)
-       (ediff-write-merge-buffer-and-maybe-kill):
-       * echistory.el (Electric-history-undefined):
-       * dnd.el (dnd-insert-text):
-       * dired-aux.el (dired-query):
-       * desktop.el (desktop-restore-file-buffer, desktop-lazy-create-buffer):
-       * bookmark.el (bookmark-bmenu-locate):
-       * obsolete/fast-lock.el (@top-level) <with-temp-message macro>:
-       Fix `message' calls to ensure first arg is a format string.
-       The change was made only when these two conditions were satisfied:
-       [1] when there is a possibility that the arguments would cause an error
-       for example, if the code in question relies on external variables
-       such as filenames, and
-       [2] if the arg to `message' could not have been nil in the code.
-
-       * pcomplete.el (pcomplete--help): Fix `message' format spec.
-       Not having a %s would be weird, though not technically wrong.
-
-2005-09-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-add-charset-info): Doc fix.
-
-2005-09-17  Romain Francoise  <romain@orebokech.com>
-
-       * shell.el (shell-resync-dirs): Handle echoing processes more
-       reliably.  Don't insert resync command if `comint-process-echoes'
-       is non-nil.
-
-2005-09-17  Magnus Henoch  <mange@freemail.hu>
-
-       * textmodes/ispell.el (ispell-aspell-supports-utf8): New variable.
-       (ispell-check-version): Set ispell-aspell-supports-utf8 to t for
-       aspell versions >= 0.60.
-       (ispell-valid-dictionary-list): Call ispell-find-aspell-dictionaries
-       only if ispell-aspell-supports-utf8 is non-nil.
-
-2005-09-17  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
-
-       * progmodes/scheme.el (scheme-mode-variables): Use setq to assign
-       buffer-local value to lisp-indent-function.
-
-2005-09-17  Milan Zamazal  <pdm@zamazal.org>
-
-       * progmodes/glasses.el (glasses-make-readable): If
-       glasses-separator differs from underscore, put appropriate
-       overlays over underscore characters.
-       (glasses-convert-to-unreadable): If glasses-separator differs from
-       underscore, try to convert glasses-separator characters to
-       underscores.
-
-2005-09-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * calendar/diary-lib.el (mark-diary-entries): Don't move point.
-       Use with-syntax-table and dolist.
-
-2005-09-16  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/reftex-auc.el:
-       * textmodes/reftex-cite.el:
-       * textmodes/reftex-dcr.el:
-       * textmodes/reftex-global.el:
-       * textmodes/reftex-parse.el:
-       * textmodes/reftex-ref.el:
-       * textmodes/reftex-sel.el:
-       * textmodes/reftex-toc.el:
-       * textmodes/reftex-vars.el:
-       * textmodes/reftex.el: Small changes to remove compiler warnings.
-
-       * textmodes/reftex-index.el: Likewise.
-       (reftex-query-index-phrase): More efficient use of markers.
-
-2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.el (image-load-path): New variable.
-       (image-search-load-path): New function.
-       (find-image): Search for images in `image-load-path'.
-
-2005-09-15  Richard M. Stallman  <rms@gnu.org>
-
-       * follow.el: Change Maintainer field.
-
-2005-09-15  David Ponce  <david@dponce.com>
-
-       * recentf.el (recentf-save-file-modes): New option.
-       (recentf-save-list): Use it.
-
-2005-09-15  Nick Roberts  <nickrob@snap.net.nz>
-
-       * bindings.el (mode-line-eol-desc, mode-line-coding-system-map)
-       (mode-line-mule-info, mode-line-modified): Move bindings from
-       mouse-3 to mouse-1.
-
-2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * simple.el (sendmail-user-agent-compose): Revert last change.
-
-2005-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * net/ange-ftp.el (ange-ftp-process-filter): Revert to ^#+$.
-       Use with-current-buffer.
-       (ange-ftp-gwp-start): Remove unused var `gw-user'.
-       (ange-ftp-guess-hash-mark-size): Remove unused var `result'.
-       (ange-ftp-insert-directory): Remove unused var `short'.
-       (ange-ftp-file-name-sans-versions): Remove unused var `host-type'.
-
-       * pcvs-defs.el (cvs-version): Recognize CVSNT version string.
-       (cvs-execute-single-dir): Change default: cvs-1.9 is ancient.
-
-       * calendar/cal-menu.el: Don't require easymenu, since we don't use it.
-       (check-calendar-holidays, diary-list-entries): Autoload.
-       Otherwise `emacs -q' followed by "mouse-2 -> diary entries" burps.
-       (calendar-mouse-holidays, calendar-mouse-view-diary-entries): Simplify.
-
-       * calendar/diary-lib.el (diary-show-all-entries): Fix last change,
-       which mistakenly removed a call to display-buffer.
-
-2005-09-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * obsolete/iso-insert.el: Move to obsolete/ from international/.
-
-2005-09-14  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * progmodes/hideshow.el
-       (hs-hide-comments-when-hiding-all): Remove autoload cookie.
-       (hs-allow-nesting): New user var.
-       (hs-discard-overlays): Skip "internal" overlays if nesting allowed.
-       (hs-hide-block-at-point): When nesting allowed,
-       if there is already an overlay in place, delete it.
-       (hs-safety-is-job-n): Delete func; remove call sites.
-       (hs-hide-level-recursive): Don't pre-clean if nesting allowed.
-       (hs-overlay-at): New func.
-       (hs-already-hidden-p, hs-show-block): Use it.
-       (hs-hide-all): Don't pre-clean if nesting allowed.
-       (hs-show-all): Temporarily disallow
-       nesting around call to `hs-discard-overlays'.
-
-2005-09-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * mouse.el (mouse-major-mode-menu): Make `prefix' optional.
-       Delete unused local var.
-
-2005-09-13  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help-fns.el (describe-categories): "?\ " -> "?\s".
-       (help-do-arg-highlight): Recognize also ARG-n, as in
-       `move-to-left-margin' (ARG+n is already recognized).  Simplify.
-
-       * international/codepage.el (dos-unsupported-char-glyph):
-       * net/newsticker.el (tool-bar-map, w3-mode-map)
-       (w3m-minor-mode-map):
-       * progmodes/vhdl-mode.el (conf-alist, conf-entry, conf-key)
-       (ent-alist):
-       * textmodes/reftex-vars.el (reftex-tables-dirty): Add defvars.
-
-2005-09-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (custom-push-theme): Handle the case where a symbol is
-       bound but face properties have not yet been assigned.
-
-       * mail/sendmail.el (mail): Use new buffer if `noerase' is `new'.
-       Fix behavior if noerase is `t' and there is no mail buffer.
-
-       * simple.el (sendmail-user-agent-compose): Use a new mail buffer
-       if `continue' is nil, rather than signal an error.
-
-2005-09-12  Richard M. Stallman  <rms@gnu.org>
-
-       * font-lock.el (font-lock-keywords): Add autoload.
-
-       * help-fns.el (describe-variable): Rearrange to put source link
-       in a predictable place.
-
-       * net/newsticker.el: New file.
-
-2005-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * calendar/calendar.el (calendar-for-loop): Add edebug info.
-       (calendar-basic-setup): Use the new nil arg.
-       (number-of-diary-entries): Move to diary-lib.el.
-
-       * calendar/diary-lib.el: Use with-current-buffer, match-string.
-       (diary-list-entries): Use with-syntax-table and dolist.
-       Rename from list-diary-entries.
-       Use number-of-diary-entries if `number' is nil.
-       (diary, diary-view-entries): Use this new name and new nil arg value.
-       (number-of-diary-entries): Move from calendar.el.
-       (diary-unhide-everything): New function.
-       (include-other-diary-files, fancy-diary-display)
-       (diary-show-all-entries, make-diary-entry): Use it.
-       (diary-mail-entries): Use buffer-string.
-       (mark-diary-entries): Fix long standing paren typo.
-       (diary-sexp-entry): Use count-lines.
-       (make-diary-entry): Avoid `previous-line'.
-       (diary-mode-map): New var.
-       (diary-mode): Redraw cal after saving.  Setup header-line.
-       (fancy-diary-display-mode): Use local-set-key.
-
-       * startup.el (command-line): Try calling various terminal-init-foo-bar
-       functions by stripping hyphenated suffixes from $TERM.
-
-       * files.el (normal-mode): Check boundness of font-lock-keywords.
-
-2005-09-12  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/compile.el: Don't decide a file's directory
-       until the user actually tries to go there.
-       (compilation-next-error-function):
-       Pass compilation-find-file the directory from the file-struct.
-       (compilation-internal-error-properties): Separate local FILE-STRUCT
-       from FILE.  Doc the args better.  Rename arg FMT to FMTS.
-       (compilation-find-file): Arg DIR renamed to DIRECTORY.
-       Expand it, and if nil, use default-directory.
-       (compilation-get-file-structure): Don't mix specified directory
-       with default directory.  Put specified directory into
-       file-struct.  Don't make the file name absolute.
-
-       * progmodes/compile.el (compilation-error-regexp-alist): Doc fix.
-       (compile-command): Add autoload.
-       (compilation-disable-input): Add autoload.
-
-2005-09-11  Stephen Gildea  <gildea@stop.mail-abuse.org>
-
-       * time-stamp.el: Mention variable `time-stamp-pattern' in doc
-       strings of the variables it can override.
-       (time-stamp): New (as yet undocumented) time-stamp-format escapes
-       %Q and %q, for fully-qualified domain name and unqualified host name.
-
-2005-09-11  Kim F. Storm  <storm@cua.dk>
-
-       * emacs-lisp/authors.el (authors-aliases): Update list.
-       (authors-fixed-entries): Update mldrag.el entry.
-
-2005-09-10  Alan Mackenzie  <acm@muc.de>
-
-       * page.el (narrow-to-page): Exclude _entire_ multi-line delimiter
-       from the region narrowed to.
-
-2005-09-10  Magnus Henoch  <mange@freemail.hu>
-
-       * textmodes/ispell.el (ispell-check-version): Signal an error if
-       aspell version is less than 0.60.
-
-2005-09-10  Pascal Dupuis  <Pascal.Dupuis@esat.kuleuven.be>  (tiny change)
-
-       * progmodes/octave-inf.el (inferior-octave-startup):
-       Resync current dir at the end.
-
-2005-09-10  Emilio C. Lopes  <eclig@gmx.net>
-
-       * woman.el (woman-topic-at-point-default):
-       Rename to woman-use-topic-at-point-default.
-       (woman-topic-at-point): Rename to woman-use-topic-at-point.
-       (woman-file-name): Reflect renames above.  Automatically use the
-       word at point as topic if woman-use-topic-at-point is non-nil.
-       Otherwise offer it as default but don't insert it in the
-       minibuffer.  Also use `test-completion' instead of `assoc' as
-       suggested by Stefan Monnier.
-
-2005-09-10  Andre Spiegel  <spiegel@gnu.org>
-
-       * vc.el (vc-directory, vc-update-change-log): Throw an error on
-       the attempt to do it over Tramp.  This is not yet supported.
-
-2005-09-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * menu-bar.el (menu-bar-menu-frame-live-and-visible-p)
-       (menu-bar-non-minibuffer-window-p): New functions.
-       ("Split Window", "Save As..."): Use them.
-       ("Postscript Print Buffer (B+W)", "Postscript Print Buffer")
-       ("Print Buffer", "Truncate Long Lines in this Buffer"):
-       Use menu-bar-menu-frame-live-and-visible-p.
-       ("Save Buffer", "Insert File", "Open Directory...")
-       ("Open File...", "Visit New File..."):
-       Use menu-bar-non-minibuffer-window-p.
-       (kill-this-buffer-enabled-p, dired <menu-enable>):
-       Use menu-bar-non-minibuffer-window-p.
-
-2005-09-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * cus-start.el (all): Don't complain about fringe-related
-       built-ins if fringes are not supported.  Ditto about
-       selection-related built-ins.  Fix the test for GTK-related built-ins.
-
-       * menu-bar.el ("Split Window", "Postscript Print Buffer (B+W)")
-       ("Postscript Print Buffer", "Print Region", "Save As...")
-       ("Save", "Insert File...", "Open Directory...")
-       ("Open File...", "Visit New File..."")
-       ("Truncate Long Lines in this Buffer"): Don't look at
-       menu-updating-frame if this display does not support multiple frames.
-
-2005-09-09  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
-
-       * mail/sendmail.el (default-sendmail-coding-system): Doc fix.
-
-2005-09-09  Emilio C. Lopes  <eclig@gmx.net>
-
-       * woman.el: Format- and whitespace-related changes.
-
-2005-09-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * woman.el: Fix my email address.
-
-2005-09-08  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/sh-script.el (sh-skeleton-pair-default-alist): New var.
-       (sh-mode): Locally set skeleton-pair-default-alist.
-
-       * progmodes/make-mode.el (makefile-add-log-defun): Trim the result.
-
-       * progmodes/flymake.el: Require `compile' unconditionally.
-
-       * mail/sendmail.el (send-mail-function): Add Mailclient alternative.
-
-       * woman.el (woman-file-name): Provide a default, not initial input.
-
-       * smerge-mode.el (smerge-resolve): Pass args to smerge-remove-props.
-
-       * font-lock.el (font-lock-support-mode): Doc fix.
-
-       * descr-text.el (describe-property-list): Handle non-symbol prop names.
-
-2005-09-08  Richard M. Stallman  <rms@gnu.org>
-
-       * simple.el (blink-matching-open): Get rid of text props from
-       the string shown in echo area.  Don't permanently set point.
-       Some rearrangements.
-
-2005-09-08  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * recentf.el (recentf-filename-handler): Add custom choice
-       `abbreviate-file-name'.
-
-       * msb.el (msb--very-many-menus): Fix typo.
-
-       * disp-table.el (standard-display-european): Don't set
-       enable-multibyte-characters to nil.
-
-2005-09-08  David Ponce  <david@dponce.com>
-
-       * recentf.el (recentf-show-file-shortcuts-flag): New option.
-       (recentf-expand-file-name): Doc fix.
-       (recentf-dialog-mode-map): Define digit shortcuts.
-       (recentf--files-with-key): New variable.
-       (recentf-show-digit-shortcut-filter): New function.
-       (recentf-open-files-items): New function.
-       (recentf-open-files): Use it.
-       (recentf-open-file-with-key): New command.
-
-2005-09-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * buff-menu.el (Buffer-menu-sort-by-column): New function.
-       Suggested by Kim F. Storm.
-       (Buffer-menu-sort-button-map): Global keymap for sort buttons.
-       (Buffer-menu-make-sort-button): Use global keymap.
-
-2005-09-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       * woman.el (top): Remap `man' command by `woman' in `woman-mode-map'.
-       (Man-getpage-in-background-advice): Remove defadvice; it isn't
-       necessary any longer with the remapped command.
-       (Man-bgproc-sentinel-advice): Remove defadvice which counts
-       formatting time only.
-
-       * net/tramp.el (tramp-action-password)
-       (tramp-multi-action-password): Compile the password prompt from
-       `method', `user' and `host'.  Sometimes it isn't obvious which
-       password to enter, for example with remote files offered by
-       recentf.el, or with multiple steps.  Suggested by Robert Marshall
-       <robert@chezmarshall.freeserve.co.uk>.
-
-2005-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/perl-mode.el (perl-font-lock-syntactic-keywords):
-       Fix regexp for when "s///" is at the beginning of line.
-
-2005-09-07  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-poly.el (math-expand-term): Multiply out any powers
-       when in matrix mode.
-
-2005-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * buff-menu.el (Buffer-menu-make-sort-button): Add docstrings, use
-       non-anonymous functions.
-
-2005-09-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * buff-menu.el (Buffer-menu-make-sort-button): Allow mouse-1 clicks
-       when using a header line.  Otherwise, use mouse-1-click-follows-link.
-
-       * mouse.el (mouse-drag-header-line): Do nothing if the header-line
-       can't be moved; don't signal an error.
-
-2005-09-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cus-theme.el (custom-theme-write-faces): Save the current face
-       spec, not the defface spec.
-
-       * custom.el (custom-known-themes): Clarify meaning of "standard".
-       (custom-push-theme): Save old values in the standard theme.
-       (disable-theme): Correct typo.
-       (custom-face-theme-value): Deleted unused function.
-       (custom-theme-recalc-face): Rewritten to treat enable/disable properly.
-
-2005-09-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/compile.el (compilation-goto-locus): Take into account
-       iconified frames when determining whether the buffer is
-       already visible.
-       Don't reset window height if the window already existed.
-
-2005-09-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * custom.el (load-theme): Rename from require-theme.
-       Add interactive spec.
-       (enable-theme): Rename from custom-enable-theme.
-       Add interactive spec.
-       (disable-theme): Rename from custom-disable-theme.
-       Add interactive spec.
-       (custom-make-theme-feature): Doc fix.
-       (custom-theme-directory): Doc fix.
-       (provide-theme): Call enable-theme.
-
-2005-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * obsolete/lazy-lock.el (lazy-lock-mode):
-       * obsolete/fast-lock.el (fast-lock-mode): Don't try to turn on
-       font-lock-mode if it's off.  Print a warning instead.
-
-       * progmodes/compile.el (compilation-start): Ignore errors if the
-       process died before we get to send-eof.
-
-       * textmodes/tex-mode.el (tex-send-tex-command, tex-bibtex-file):
-       Undo last change.  Enclosing the result in quotes broke things on Unix
-       since tex-send-command passes it through shell-quote-argument.
-       (tex-send-command): Pass `file' through convert-standard-filename
-       when possible.
-       (tex-uptodate-p): Handle the case where TeX hasn't put additional
-       info in a transcript.
-
-2005-09-02  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el (terminal-init-xterm): Add eval-when-compile to
-       fix compilation warning.  Reorder the key definitions to group
-       together keys emitted by the current version of xterm.
-
-       * progmodes/vhdl-mode.el (vhdl-highlight-faces)
-       (vhdl-speedbar-entity-face, vhdl-speedbar-entity-selected-face):
-       Reorder predicates to correct min-color usage.
-
-2005-09-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-mode): Inhibit read-only when encoding.
-       Kill local variables when longlines-mode is turned off.
-
-2005-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * international/mule-cmds.el (set-locale-environment): Soothe compiler.
-
-       * obsolete/lazy-lock.el (lazy-lock) <defgroup>: Move from font-lock.el.
-
-       * obsolete/fast-lock.el (fast-lock) <defgroup>: Move from font-lock.el.
-
-       * font-lock.el (fast-lock, lazy-lock) <defgroup>: Remove.
-       (font-lock-lines-before): Change default to being inactive.
-       (font-lock-default-fontify-region): Obey font-lock-lines-before.
-       (font-lock-after-change-function): Don't handle f-l-lines-before here.
-
-2005-08-31  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp.el (tramp-handle-make-auto-save-file-name):
-       Deactivate temporarily advice if active (not needed for Emacs 22,
-       but for backwards compatibility).
-       (tramp-exists-file-name-handler): Rewrite.  First implementation
-       was too simple.
-       (tramp-advice-make-auto-save-file-name):
-       Call `tramp-handle-make-auto-save-file-name' (again, just for
-       backwards compatibility).
-
-2005-08-31  Reto Zimmermann  <reto@gnu.org>
-
-       * progmodes/vhdl-mode.el
-       (vhdl-update-sensitivity-list): Handle multi-dimensional array access.
-       (vhdl-end-p): Fix indentation bug "else" after "-- when".
-       (vhdl-set-default-project): New function (easier setting of default).
-       (vhdl-port-copy): Handle extended identifiers for generics.
-       (vhdl-compiler-alist): Better description for error message regexp.
-       (vhdl-make): Query for target, use previous as default.
-       (vhdl-port-copy): Fix port copy for port names starting with "signal".
-       (vhdl-font-lock-keywords-2): Fix fontification for record
-       el. assign.
-       (vhdl-speedbar-make-subpack-line): Add package body link.
-       (vhdl-generate-makefile-1): Not include itself as dependency.
-       (vhdl-font-lock-init): Highlight c-preprocessor directives.
-       (vhdl-*ward-syntactic-ws): Skip c-preprocessor directives.
-       (vhdl-get-syntactic-context): Handle c-preprocessor directives.
-       (vhdl-update-sensitivity-list): Start scan at opening parenthesis.
-       (vhdl-fixup-whitespace-region): Fix jumping point (infinite loop).
-       (vhdl-update-sensitivity-list-buffer): Add string argument for `error'.
-       (vhdl-import-project): Add string argument for `error'.
-       (vhdl-compose-configuration)
-       (vhdl-compose-configuration-architecture): Add configuration
-       declaration generation.
-       (vhdl-scan-directory-contents): Scan for block/generate hierarchy.
-       (vhdl-trailer-re): Add "record" keyword (better indentation).
-       (vhdl-fixup-whitespace-region): "[^ \t\"-]+" instead of
-       "[^ \t-\"]+".
-       (vhdl-font-lock-keywords-2): Not highlight formal parameter after `|'.
-       (vhdl-testbench-entity-file-name)
-       (vhdl-testbench-architecture-file-name): Allow separate
-       customization of testbench file names.
-       (vhdl-beginning-of-block): Handle optional subprogram parameter list.
-       (vhdl-get-visible-signals): Allow newline within alias declaration.
-       (vhdl-update-sensitivity-list): Signal read only on certain attributes.
-       (vhdl-fixup-whitespace-region): Fix bug with strings (double quotes).
-       (member-ignore-case): Alias for missing function in XEmacs.
-       (vhdl-compiler-alist): Add unit-to-file name mapping for Cadence NC.
-       (vhdl-update-sensitivity-list): Ignore case on read signals.
-       (vhdl-replace-string): Adjust case only for file names.
-       (vhdl-update-sensitivity-list): Fix search for read signals.
-       (vhdl-update-sensitivity-list): Exclude formal parameters.
-       (vhdl-get-visible-signals): Include aliases of signals.
-       (vhdl-get-visible-signals): Fix signal name searching.
-       (vhdl-port-flatten, vhdl-port-reverse-direction): Better message.
-       (vhdl-fixup-whitespace-region): Fix for character
-       literals (e.g. `:').
-
-2005-08-31  Juanma Barranquero  <lekktu@gmail.com>
-
-       * ansi-color.el (comint-last-output-start):
-       * bs.el (font-lock-verbose):
-       * diff-mode.el (add-log-buffer-file-name-function):
-       * dired-x.el (vm-folder-directory):
-       * faces.el (help-xref-stack-item):
-       * files.el (font-lock-keywords):
-       * find-lisp.el (dired-buffers, dired-subdir-alist):
-       * ido.el (cua-inhibit-cua-keys):
-       * log-view.el (cvs-minor-wrap-function):
-       * outline.el (font-lock-warning-face):
-       * simple.el (compilation-current-error):
-       * speedbar.el (ange-ftp-path-format, efs-path-regexp)
-       (font-lock-keywords, x-pointer-hand2, x-pointer-top-left-arrow):
-       * tooltip.el (comint-prompt-regexp):
-       * w32-fns.el (explicit-shell-file-name):
-       * term/mac-win.el (mac-charset-info-alist)
-       (mac-services-selection, mac-system-script-code):
-       * term/tty-colors.el (msdos-color-values):
-       * term/w32-win.el (xlfd-regexp-registry-subnum):
-       * term/x-win.el (x-keysym-table, x-selection-timeout)
-       (x-session-id, x-session-previous-id):
-       * textmodes/ispell.el (mail-yank-prefix):
-       * textmodes/makeinfo.el (tex-end-of-header, tex-start-of-header):
-       * textmodes/org.el (calc-embedded-close-formula)
-       (calc-embedded-open-formula)
-       (font-lock-unfontify-region-function):
-       * textmodes/reftex-global.el (isearch-next-buffer-function)
-       (TeX-master):
-       * textmodes/reftex.el (font-lock-keywords):
-       * textmodes/tex-mode.el (font-lock-comment-face)
-       (font-lock-doc-face):
-       * textmodes/texinfo.el (outline-heading-alist):
-       Add defvars.
-
-       * textmodes/artist.el (x-pointer-crosshair): Add defvar.
-       (artist-spray-chars, artist-mode-init, artist-replace-string)
-       (artist-select-erase-char, artist-vap-find-endpoints-horiz)
-       (artist-vap-find-endpoints-vert, artist-vap-find-endpoints-swne)
-       (artist-vap-find-endpoints-nwse): "?\ " -> "?\s".
-
-       * textmodes/conf-mode.el (outline-heading-end-regexp): Add defvar.
-       (conf-align-assignments): "?\ " -> "?\s".
-
-       * textmodes/reftex-index.el (TeX-master): Add defvar.
-       (reftex-index-phrases-marker): Move up defvar.
-
-       * textmodes/reftex-toc.el (zmacs-regions): Add defvar.
-       (reftex-toc-include-labels-indicator)
-       (reftex-toc-include-index-indicator)
-       (reftex-toc-max-level-indicator): Move up declarations.
-
-       * net/tramp.el (tramp-handle-make-auto-save-file-name): Pass list
-       of args to `tramp-run-real-handler', even if it's empty in this case.
-
-2005-08-31  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dired.el (dired-move-to-filename-regexp): Add date format for
-       Mac OS X 10.3 in East Asian locales.
-
-2005-08-31  Michael Albinus  <michael.albinus@gmx.de>
-
-       * files.el (make-auto-save-file-name): Add file name handler call
-       if applicable.
-
-       * net/tramp.el (tramp-file-name-handler-alist)
-       (tramp-file-name-for-operation): Add `make-auto-save-file-name'.
-       (tramp-handle-make-auto-save-file-name): Rename from
-       `tramp-make-auto-save-file-name'.
-       (tramp-exists-file-name-handler): New defun.
-       (tramp-advice-make-auto-save-file-name): Make defadvice only when
-       `make-auto-save-file-name' is not a magic file name operation.
-
-2005-08-30  Richard M. Stallman  <rms@gnu.org>
-
-       * files.el (risky-local-variable-p):
-       Match `-predicates' and `-commands.
-
-       * cus-edit.el (custom-buffer-sort-alphabetically): Default to t.
-       (custom-save-all): Visit the file if necessary;
-       kill the buffer if we created it.
-       (custom-save-delete): Don't visit file or kill buffer here.
-
-2005-08-30  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-special-keyword): New face.
-       (org-table-copy-down, org-table-eval-formula)
-       (org-table-recalculate, org-init-section-numbers):
-       Use `string-to-number' instead of `string-to-int'.
-       (org-get-location): Use `insert-buffer-substring' instead of
-       `insert-buffer'.
-       (org-modify-diary-entry-string): New function.
-       (org-get-entries-from-diary): Set the hook for `add-to-diary-list'.
-       (org-disable-agenda-to-diary): Rename from `org-disable-diary'.
-       (org-toggle-fixed-width-section): Use QUOTE keyword if there is no
-       active region.
-       (org-export-as-html): Handle QUOTE keyword.
-       (org-quote-string): New option.
-       (org-bookmark-jump-unhide): New function, used for
-       `bookmark-after-jump-hook'.
-       (org-diary-default-entry): Apply only when not called through
-       `org-agenda'.
-
-2005-08-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * net/eudc.el (mode-popup-menu):
-       * play/handwrite.el (ps-printer-name, ps-lpr-command):
-       * progmodes/ada-mode.el (compile-auto-highlight)
-       (skeleton-further-elements):
-       * progmodes/autoconf.el (font-lock-syntactic-keywords):
-       * progmodes/cmacexp.el (msdos-shells):
-       * progmodes/compile.el (font-lock-extra-managed-props)
-       (font-lock-keywords, font-lock-maximum-size)
-       (font-lock-support-mode):
-       * progmodes/grep.el (font-lock-lines-before):
-       * progmodes/idlw-complete-structtag.el (idlwave-completion-help-info):
-       * progmodes/mixal-mode.el (compile-command):
-       * progmodes/perl-mode.el (font-lock-comment-face)
-       (font-lock-doc-face, font-lock-string-face):
-       * progmodes/prolog.el (comint-prompt-regexp):
-       * progmodes/sh-script.el (font-lock-comment-face)
-       (font-lock-set-defaults, font-lock-string-face):
-       * progmodes/sql.el (font-lock-keyword-face)
-       (font-lock-set-defaults, font-lock-string-face):
-       * progmodes/vhdl-mode.el (compilation-file-regexp-alist)
-       (itimer-version, lazy-lock-defer-contextually)
-       (lazy-lock-defer-on-scrolling, lazy-lock-defer-on-the-fly):
-       Add defvars.
-
-       * progmodes/cperl-mode.el (cperl-electric-lbrace)
-       (cperl-electric-keyword, cperl-electric-pod)
-       (cperl-electric-backspace, cperl-forward-re)
-       (cperl-fix-line-spacing, cperl-fill-paragraph): "?\ " -> "?\s".
-       (vc-rcs-header, vc-sccs-header): Add defvars.
-
-       * progmodes/fortran.el (fortran-indent-to-column): "?\ " -> "?\s".
-       (font-lock-syntactic-keywords, gud-find-expr-function):
-       Add defvars.
-
-       * progmodes/gdb-ui.el (tool-bar-map): Add defvar.
-       (gdb-frame-parameters): Declare before use.
-
-       * progmodes/gud.el (gdb-active-process, gdb-define-alist)
-       (gdb-macro-info, gdb-server-prefix, gdb-show-changed-values)
-       (gdb-var-changed, gdb-var-list, tool-bar-map): Add defvars.
-       (gud-expr-compound-sep, gud-expr-compound): "?\ " -> "?\s".
-
-       * progmodes/idlw-help.el (browse-url-generic-args): Add defvar.
-       (idlwave-help-with-source): Use `insert-buffer-substring', not
-       `insert-buffer'.
-
-2005-08-29  Juri Linkov  <juri@jurta.org>
-
-       * outline.el (hide-entry, hide-leaves, outline-toggle-children):
-       Put outline-back-to-heading function call inside save-excursion.
-
-2005-08-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * man.el (Man-init-defvars, Man-translate-references)
-       (Man-support-local-filenames, Man-highlight-references):
-       * progmodes/sql.el (sql-interactive-mode):
-       * shell.el (shell-mode, shell-resync-dirs): Fix typos in docstrings.
-
-       * emacs-lisp/checkdoc.el (compilation-error-regexp-alist)
-       (compilation-mode-font-lock-keywords): Add defvars.
-       (checkdoc-interactive-loop): "?\ " -> "?\s".
-
-       * emacs-lisp/lisp-mode.el (font-lock-comment-face)
-       (font-lock-doc-face, font-lock-string-face)
-       (font-lock-keywords-case-fold-search): Add defvars.
-       (emacs-lisp-mode-syntax-table): "?\ " -> "?\s".
-
-       * obsolete/sun-fns.el (mouse-select-or-drag-move-point):
-       Don't pass X and Y (they are ignored anyway).
-       (mouse-set-mark, mouse-select-window, mouse-delete-other-windows)
-       (mouse-delete-window): Make arguments optional.
-
-       * obsolete/rnews.el (news-add-news-group): Don't use `end-of-line'.
-       (caesar-translate-table, minor-modes, news-buffer-save)
-       (news-group-name, news-minor-modes): Add defvars.
-
-       * emacs-lisp/lselect.el (mouse-highlight-priority)
-       (x-lost-selection-functions, zmacs-regions):
-       * emacs-lisp/pp.el (font-lock-verbose):
-       * emacs-lisp/syntax.el (font-lock-beginning-of-syntax-function):
-       * emacs-lisp/tcover-ses.el (ses-initial-global-parameters)
-       (ses-mode-map):
-       * emacs-lisp/tcover-unsafep.el (safe-functions):
-       * international/mule-cmds.el (mac-system-coding-system)
-       (mac-system-locale):
-       * language/ethio-util.el (rmail-current-message)
-       (rmail-message-vector):
-       * language/thai-util.el (thai-auto-composition-mode):
-       * mail/metamail.el (rmail-current-message, rmail-message-vector):
-       * mail/mspools.el (rmail-inbox-list, vm-crash-box)
-       (vm-folder-directory, vm-init-file, vm-init-file-loaded)
-       (vm-primary-inbox, vm-spool-files):
-       * mail/rmail.el (deleted-head, font-lock-fontified)
-       (mail-abbrev-syntax-table, mail-abbrevs, messages-head)
-       (rmail-use-spam-filter, rsf-beep, rsf-sleep-after-message)
-       (total-messages):
-       * mail/rmail-spam-filter.el (bbdb/mail_auto_create_p)
-       (rmail-summary-mode-map):
-       * mail/rmailkwd.el (rmail-buffer, rmail-current-message)
-       (rmail-last-label, rmail-last-multi-labels)
-       (rmail-summary-vector, rmail-total-messages):
-       * mail/rmailmsc.el (rmail-current-message, rmail-inbox-list):
-       * mail/rmailsum.el (msgnum):
-       * mail/uce.el (gnus-original-article-buffer, mail-reply-buffer)
-       (rmail-current-message):
-       * obsolete/fast-lock.el (font-lock-face-list):
-       * obsolete/rnewspost.el (mail-reply-buffer):
-       * obsolete/scribe.el (compile-command):
-       * obsolete/x-menu.el (x-process-mouse-hook): Add defvars.
-
-2005-08-28  John Paul Wallington  <jpw@gnu.org>
-
-       * ibuf-ext.el (ibuffer-auto-update-changed):
-       Use `frame-or-buffer-changed-p' to check whether we need to update.
-       (ibuffer-auto-mode): Don't advise `get-buffer-create' and
-       `kill-buffer'.  Initialise `ibuffer-auto-buffers-changed'
-       as a `frame-or-buffer-changed-p' state vector instead.
-
-2005-08-27  Romain Francoise  <romain@orebokech.com>
-
-       * textmodes/makeinfo.el (makeinfo-compile):
-       Use `compilation-start'.  Set `next-error-function' according to
-       `disable-errors'.
-       (makeinfo-next-error): New function.
-       (makeinfo-region): Adjust to new `makeinfo-compile' prototype.
-       (makeinfo-buffer): Likewise.
-
-       * progmodes/compile.el (compilation-start): Add autoload cookie.
-
-       * progmodes/antlr-mode.el: Don't autoload `compilation-start'.
-       * textmodes/sgml-mode.el: Likewise.
-       * progmodes/python.el: Likewise.
-
-2005-08-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * simple.el (blink-matching-paren-distance): Document the meaning
-       of nil value, and allow to customize to nil.
-
-       * eshell/esh-ext.el (eshell-windows-shell-file): Look for
-       command.com, not command.exe.
-
-2005-08-26  John Wiegley  <johnw@newartisans.com>
-
-       * eshell/esh-cmd.el (eshell-rewrite-named-command): Change the
-       code around a bit so that an extraneous nil argument is not added
-       to a command when no args are given.
-
-       * eshell/esh-arg.el (eshell-parse-double-quote): If a
-       double-quoted argument resolves to nil, return it as an empty
-       string rather than as nil.  This made it impossible to pass "" to
-       a shell script as a null string argument.
-
-2005-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * outline.el (outline-invent-heading): New fun.
-       (outline-promote, outline-demote): Use it.
-       (outline-move-subtree-down): Remove unused vars `re' and `txt'.
-       (outline-end-of-subtree): Remove unused var `opoint'.
-
-2005-08-26  David Reitter  <david.reitter@gmail.com>
-
-       * menu-bar.el (truncate-lines, write-file, print-buffer)
-       (ps-print-buffer-faces, ps-print-buffer, split-window):
-       Disable menu items when the frame they refer to is invisible, or when
-       they refer to a buffer and the minibuffer is selected.
-
-2005-08-26  Pavel Kobiakov  <pk_at_work@yahoo.com>
-
-       * progmodes/flymake.el (flymake-highlight-err-lines):
-       Use save-excursion around flymake-highlight-line to preserve point.
-
-2005-08-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * progmodes/octave-mod.el: Change Author and Maintainer address.
-       (octave-maintainer-address): Change Kurt's email address.
-       * progmodes/octave-inf.el: Change Author and Maintainer address.
-       * progmodes/octave-hlp.el: Change Author and Maintainer address.
-
-2005-08-26  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (version-list-<, version-list-<=, version-list-=):
-       Rename from integer-list-*.
-       (version-list-not-zero): Likewise.  Fix while loop.
-       (version=): Use version-list-= instead of string-equal.
-
-2005-08-26  Richard M. Stallman  <rms@gnu.org>
-
-       * outline.el (outline-promote): Try shortening the heading.
-       As last resort, read the heading to use.
-       (outline-demote): As last resort, read the heading to use.
-
-2005-08-26  Romain Francoise  <romain@orebokech.com>
-
-       * progmodes/compile.el (compilation-start): Doc fix.
-
-       * progmodes/antlr-mode.el (antlr-default): Fix defface form.
-       (antlr-font-lock-additional-keywords): Fix reference to
-       `antlr-font-lock-literal-regexp' erroneously changed during the
-       mass face rename.
-       (antlr-run-tool): Use `compilation-start'.
-
-       * textmodes/sgml-mode.el (sgml-validate): Use `compilation-start'
-       instead of the obsolete `compile-internal'.
-
-2005-08-26  Juanma Barranquero  <lekktu@gmail.com>
-
-       * calendar/cal-bahai.el (date, displayed-month, displayed-year)
-       (number, original-date):
-       * calendar/cal-china.el (date):
-       * calendar/cal-coptic.el (date):
-       * calendar/cal-french.el (date):
-       * calendar/cal-hebrew.el (date, entry, number, original-date):
-       * calendar/cal-islam.el (date, number, original-date):
-       * calendar/cal-iso.el (date):
-       * calendar/cal-julian.el (date):
-       * calendar/cal-mayan.el (date):
-       * calendar/cal-menu.el (date, event):
-       * calendar/cal-persia.el (date):
-       * calendar/lunar.el (date):
-       * calendar/solar.el (date): Add defvars.
-
-       * emerge.el:
-       * ibuffer.el:
-       * info-xref.el:
-       * obsolete/bg-mouse.el:
-       * obsolete/sun-curs.el:
-       * obsolete/swedish.el: Move the `defvar's to the top level.
-
-       * smerge-mode.el (smerge-refined-change): Add :group.
-
-2005-08-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * smerge-mode.el (smerge-remove-props): Make the args non-optional.
-       (smerge-keep-n): Remove props.
-       (smerge-keep-base, smerge-keep-other, smerge-keep-mine)
-       (smerge-keep-current, smerge-kill-current): Don't remove props anymore
-       now that it's done in smerge-keep-n.
-       (smerge-refined-change): New face.
-       (smerge-refine-chopup-region, smerge-refine-highlight-change)
-       (smerge-refine): New funs.
-       (smerge-basic-map): Bind smerge-refine.
-
-2005-08-25  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/grep.el (grep, grep-mode): Make buffer-local variables
-       compilation-process-setup-function and compilation-disable-input
-       in grep-mode instead of let-bindings in grep.
-
-       * menu-bar.el (menu-bar-options-menu, menu-bar-options-save):
-       Delete "Automatic File De/compression" (auto-compression-mode).
-
-2005-08-25  Juanma Barranquero  <lekktu@gmail.com>
-
-       * obsolete/bg-mouse.el: Move to obsolete/ from term/.
-       Silence warning about non-existent variable.
-
-2005-08-25  Richard M. Stallman  <rms@gnu.org>
-
-       * menu-bar.el (menu-bar-describe-menu): Delete "What's New".
-       Rename "Describe Key" to "Describe Key or Mouse Operation".
-
-       * mail/mailalias.el (build-mail-aliases): Delete comments
-       from the contents before processing them.
-
-       * isearch.el (isearch-edit-string): Erase the Search prompt
-       if user enters an empty string and there is no default.
-
-       * comint.el (comint-file-name-prefix): Add autoload.
-
-2005-08-25  Joe Corneli  <jcorneli@math.utexas.edu>
-
-       * subr.el (play-sound): Rearrange to avoid warning.
-
-2005-08-25  Carsten Dominik  <dominik@science.uva.nl>
-
-       * calendar/diary-lib.el (diary-modify-entry-list-string-function):
-       New hook.
-       (add-to-diary-list): Call `diary-modify-entry-list-string-function'.
-
-2005-08-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Simplify.
-
-       * custom.el (custom-theme-set-variables): Sort minor modes last.
-
-2005-08-24  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * subr.el (version-separator, version-regexp-alist): New vars used by
-       version comparison funs.
-       (integer-list-<, integer-list-=, integer-list-<=)
-       (integer-list-not-zero): New funs for integer list comparison.
-       (version-to-list, version=, version<, version<=): New funs for version
-       comparison.
-
-2005-08-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emerge.el (merge-begin, merge-end, template, A-begin, A-end)
-       (B-begin, B-end, diff, diff-vector, valid-diff): Defvar at compile
-       time to silence the byte-compiler.
-
-       * ibuffer.el (ibuffer-compile-make-eliding-form)
-       (ibuffer-check-formats): Use `with-no-warnings' to hide references
-       to `ibuffer-elide-long-columns' (which is defined on ibuffer.el,
-       so it's silly to get warnings for it).
-       (ibuffer-auto-mode, ibuffer-cached-filter-formats)
-       (ibuffer-compiled-filter-formats, ibuffer-filter-format-alist)
-       (ibuffer-filter-group-kill-ring, ibuffer-filter-groups)
-       (ibuffer-filtering-qualifiers, ibuffer-hidden-filter-groups)
-       (ibuffer-inline-columns, ibuffer-show-empty-filter-groups)
-       (ibuffer-tmp-hide-regexps, ibuffer-tmp-show-regexps):
-       Defvar at compile time.
-       (ibuffer-compiled-formats, ibuffer-cached-eliding-string)
-       (ibuffer-cached-formats, ibuffer-cached-elide-long-columns):
-       Declare them before use.
-
-       * info-xref.el (info-xref-xfile-alist, info-xref-filename-heading)
-       (info-xref-good, info-xref-bad): Defvar at compile time.
-
-       * obsolete/mlsupport.el (filter-region, execute-monitor-command):
-       Use `let*' instead of `let'.
-
-       * obsolete/sun-curs.el (icon-edit, *mouse-window*, *mouse-x*)
-       (*mouse-y*, menu, char): Defvar at compile time.
-       (sc::menu): Declare it before use.
-       (sc::pack-one-line): Use `let', not `let*'.
-
-       * obsolete/swedish.el (news-inews-hook, news-group-hook-alist)
-       (mail-send-hook): Defvar at compile time.
-
-       * term/bg-mouse.el (bg-mouse-x, bg-mouse-y, bg-cursor-window):
-       Defvar at compile time.
-
-       * term/sun-mouse.el (current-global-mousemap)
-       (current-local-mousemap): Declare them before use.
-
-2005-08-24  Carsten Dominik  <dominik@science.uva.nl>
-
-       * bookmark.el (bookmark-after-jump-hook): New hook.
-       (bookmark-jump): Run `bookmark-after-jump-hook'.
-
-2005-08-23  Juri Linkov  <juri@jurta.org>
-
-       * faces.el (minibuffer-prompt): Doc fix.
-
-2005-08-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/xscheme.el: Trivial changes to silence warnings.
-       (xscheme-previous-mode, xscheme-previous-process-state):
-       Add defvars.
-       (xscheme-last-input-end, xscheme-process-command-line)
-       (xscheme-process-name, xscheme-buffer-name)
-       (xscheme-expressions-ring-max, xscheme-expressions-ring)
-       (xscheme-expressions-ring-yank-pointer, xscheme-running-p)
-       (xscheme-control-g-synchronization-p)
-       (xscheme-control-g-disabled-p, xscheme-string-receiver)
-       (default-xscheme-runlight, xscheme-runlight)
-       (xscheme-runlight-string, xscheme-process-filter-state)
-       (xscheme-allow-output-p, xscheme-prompt, xscheme-mode-string):
-       Move to beginning of file.
-       (scheme-interaction-mode-commands-alist)
-       (scheme-interaction-mode-map, scheme-debugger-mode-map):
-       Declare them before use.  Note: the initialization code for the
-       variables has not been moved because it uses functions that reference
-       the variables.
-       (xscheme-control-g-message-string, xscheme-process-filter-alist)
-       (xscheme-prompt-for-expression-map): Declare them before use.
-       (scheme-debugger-mode-commands): "?\ " -> "?\s".
-
-2005-08-23  Ed Swarthout  <ed.swarthout@gmail.com>  (tiny change)
-
-       * hexl.el (hexl-print-current-point-info): Fix simple spelling error.
-
-2005-08-22  Juri Linkov  <juri@jurta.org>
-
-       * faces.el (set-face-underline): Delete this duplicate function
-       and make an obsolete alias to set-face-underline-p.
-       (set-face-underline-p): Use docstring of set-face-underline.
-       (describe-face): Create hyperlink to parent face.
-
-       * info.el (Info-insert-dir): Use save-excursion around
-       insert-buffer-substring.
-       (Info-isearch-search): Use LITERAL arg of replace-regexp-in-string.
-       (Info-escape-percent): Delete function.
-       (Info-fontify-node): Replace Info-escape-percent by
-       replace-regexp-in-string with REP arg set to lambda that
-       duplicates `%' and preserves text properties.
-
-       * progmodes/compile.el (compilation-disable-input): Doc fix.
-       (define-compilation-mode): Doc fix and refill.
-       (kill-compilation): Use `mode-name' in the error message.
-       (compilation-find-file): Use `compilation-error' in the
-       read-file-name's prompt.
-
-2005-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * smerge-mode.el (smerge-basic-map): Bind smerge-combine-with-next.
-       (smerge-auto-leave): Make undo re-enable the mode.
-       (debug-ignored-errors): Add the user-error of impossible resolution.
-       (smerge-resolve): Move things around a bit, in preparation for later.
-       (smerge-diff): Don't fail if the buffer has no associated file.
-       (ediff-ancestor-buffer, ediff-quit-hook): Quieten byte-compiler.
-       (smerge-conflict-overlay): New function.
-       (smerge-match-conflict): Don't add text properties here.
-       (smerge-find-conflict): Instead, add an overlay here.
-       Also check for the case where we're inside a conflict already, so as to
-       obviate the need for font-lock-multiline, which is unbearably slow with
-       large conflicts and ciomplex font-lock patterns.
-       (smerge-remove-props): Remove overlay rather than text-properties.
-       (smerge-mode): Don't set font-lock-multiline.
-       Remove overlays when turned off.
-
-2005-08-21  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-ignore-item-p): Use save-match-data.
-       Bind case-fold-search to ido-case-fold locally.
-
-2005-08-20  Richard M. Stallman  <rms@gnu.org>
-
-       * files.el (normal-mode): If font lock is on, turn it off and on.
-
-       * subr.el (replace-regexp-in-string): Doc fix.
-
-       * startup.el (command-line-1): Don't suppress startup screen
-       due to existing processes.
-
-       * progmodes/grep.el (grep): Bind compilation-disable-input to t.
-
-       * progmodes/compile.el (compilation-disable-input): Default to nil.
-
-2005-08-20  Kevin Rodgers  <ihs_4664@yahoo.com>  (tiny change)
-
-       * progmodes/compile.el (compilation-disable-input): New defcustom.
-       (compilation-start): If compilation-disable-input is non-nil, send
-       EOF to the compilation process.
-
-2005-08-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * textmodes/tex-mode.el (tex-bibtex-file, tex-send-tex-command):
-       Run the argument of tex-shell-cd-command through
-       convert-standard-filename, to get the correct style of slashes on
-       Windows, and enclose the result in quotes, in case the file name
-       includes whitespace or other special characters.
-
-2005-08-19  Andreas Schwab  <schwab@suse.de>
-
-       * progmodes/gud.el (gud-kill-buffer-hook): Don't kill unrelated
-       process.
-
-2005-08-18  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-start.el (minibuffer-prompt-properties): Correct typo.
-
-2005-08-18  Kim F. Storm  <storm@cua.dk>
-
-       * scroll-lock.el: Fix errors due to incorrect line wrapping.
-
-2005-08-18  Richard M. Stallman  <rms@gnu.org>
-
-       * scroll-lock.el: New file.
-
-2005-08-18  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * dired.el (dired-move-to-end-of-filename):
-       Handle fifo as rendered by "ls -lF": Don't include trailing "|".
-
-2005-08-18  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-everywhere): Fix defcustom :set function to disable
-       rather than toggle mode when custom value is nil.
-       (ido-everywhere): Fix defun doc string.
-
-2005-08-17  Richard M. Stallman  <rms@gnu.org>
-
-       * cus-start.el (minibuffer-prompt-properties): Use "Don't Enter"
-       as tag instead of "Inviolable".
-
-2005-08-17  Kim F. Storm  <storm@cua.dk>
-
-       * windmove.el (windmove-coordinates-of-position): Remove.
-       (windmove-coordinates-of-window-position): Remove.
-       (windmove-reference-loc): Use posn-at-point instead.
-
-       * subr.el (insert-for-yank-1): Doc fix.
-
-       * ido.el (ido-enter-matching-directory): Rename from
-       ido-enter-single-matching-directory.  Change `slash' choice to
-       `only'.  Add `first' choice.
-       (ido-exhibit): Adapt to above changes.
-
-2005-08-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * Makefile.in: Expand comment about building loaddefs.el.
-
-2005-08-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (toggle-gdb-use-inferior-io-buffer):
-       Comment use of defadvice.
-
-       * progmodes/gud.el (gud-jump): Rework for gdb-ui.
-
-2005-08-15  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * buff-menu.el, compare-w.el, emacs-lisp/testcover.el,
-       * play/gomoku.el, play/mpuz.el, progmodes/flymake.el,
-       * progmodes/gdb-ui.el, progmodes/idlw-help.el,
-       * progmodes/idlw-shell.el, progmodes/ld-script.el,
-       * progmodes/which-func.el, ruler-mode.el, strokes.el,
-       * textmodes/sgml-mode.el, textmodes/table.el: Do not use face-alias
-       for backward compatibility for faces that did not appear in the
-       previous Emacs release.
-
-       * simple.el (next-error-follow-minor-mode): Fix init value and lighter.
-
-2005-08-15  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-delete-region): Return t if
-       deleted region was non-empty.
-       (cua-replace-region): Inhibit overwrite-mode for
-       self-insert-command if replaced region was non-empty.
-       (cua--explicit-region-start, cua--status-string): Make them
-       buffer-local at top-level...
-       (cua-mode): ...rather than when mode is enabled.
-
-2005-08-15  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * progmodes/vhdl-mode.el (vhdl-emacs-21):
-       Set t for Emacs 21, 22, and so on.
-
-2005-08-15  David Ponce  <david@dponce.com>
-
-       * tree-widget.el: Update Commentary header.
-       (tree-widget-theme): Doc fix.
-       (tree-widget-space-width): New option.
-       (tree-widget-image-properties): Look up in the default theme too.
-       (tree-widget--cursors): Only for images with arrow pointer shape.
-       (tree-widget-lookup-image): Pointer shape is hand by default.
-       (tree-widget-icon): Rename generic icon widget from
-       `tree-widget-control'.
-       (tree-widget-*-icon): Rename from `tree-widget-*-control' and
-       derive from `tree-widget-icon'.
-       (tree-widget-handle): Improve default look and feel of the text
-       representation.
-       (tree-widget): Rename :*-control properties to :*-icon properties.
-       Add :action and :help-echo properties.
-       (tree-widget-after-toggle-functions): Move.
-       (tree-widget-close-node, tree-widget-open-node): Remove.
-       (tree-widget-before-create-icon-functions): New hook.
-       (tree-widget-value-create): Update to allow customization of icons
-       and nodes at run-time via that new hook.
-       (tree-widget-icon-create, tree-widget-leaf-node-icon-p)
-       (tree-widget-icon-action, tree-widget-icon-help-echo)
-       (tree-widget-action, tree-widget-help-echo): New functions.
-
-2005-08-15  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-buffer-internal): Use with-no-warnings.
-       (ido-make-merged-file-list): Use while-no-input.
-
-2005-08-15  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-mark-duplications-flag): Doc fix.
-       (flyspell-large-region): Fix doc and custom type.
-
-2005-08-14  Richard M. Stallman  <rms@gnu.org>
-
-       * files.el (interpreter-mode-alist): Doc fix.
-
-       * mail/rmail.el (rmail-nonignored-headers): New variable.
-       (rmail-clear-headers): Use it.
-       (rmail-reply): Better handling of mail-followup-to header.
-
-       * progmodes/sh-script.el (sh-font-lock-keywords-var):
-       Rename variable from sh-font-lock-keywords.  In the `shell' entry,
-       don't try to refer to executable-font-lock-keywords.
-       (sh-font-lock-keywords-var-1): Rename from sh-font-lock-keywords-1.
-       (sh-font-lock-keywords-var-2): Rename from sh-font-lock-keywords-2.
-       (sh-font-lock-keywords): Append executable-font-lock-keywords here.
-       (sh-mode): Set comment-start-skip, local-abbrev-table,
-       imenu-case-fold-search.
-       (sh-set-shell): Don't set them here.
-       (sh-feature): Simplify.  Get rid of the eval-a-variable feature.
-       Don't cache the results in the original alist; don't ever modify
-       that alist.
-
-       * textmodes/flyspell.el (flyspell-mode): Autoload a defvar.
-
-       * textmodes/ispell.el (lookup-words): Cope with case where ARGS is
-       empty.
-
-2005-08-15  Andreas Schwab  <schwab@suse.de>
-
-       * desktop.el: Put autoload cookie at risky-local-variable declarations.
-
-       * dired.el, info.el, mail/rmail.el: Revert last change.
-
-2005-08-14  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * dired.el: Fix dependency bug: Wrap `desktop-buffer-mode-handlers'
-       modification in `eval-after-load' form.
-       * info.el: Likewise.
-       * mail/rmail.el: Likewise.
-
-2005-08-14  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/compile.el (compilation-mode-font-lock-keywords):
-       Remove highlighting of "Compilation started".  Highlight only
-       the word "finished" in "Compilation finished".  Add highlighting
-       of "interrupt", "killed", "terminated" and the exit code.
-       (compilation-start): Add newline after header.  Use exactly the
-       same time stamp format as the finishing message.
-       (compilation-mode-map): Add ellipsis to "Search Files (grep)".
-
-       * progmodes/grep.el (grep-mode-map): Add ellipsis to "Another grep".
-       (grep-mode-font-lock-keywords): Don't highlight "Grep started".
-       Add highlighting of "interrupt", "killed", "terminated".
-
-       * delsel.el (delete-selection-pre-hook): If overwrite-mode is
-       enabled and the current command is self-insert-command, call it
-       explicitly with overwrite-mode bound to nil, to not allow it
-       to delete the character after the selected region.
-
-2005-08-12  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * emacs-lisp/eldoc.el: Add move-beginning-of-line,
-       move-end-of-line, end-of-line, and beginning-of-line to the list
-       of commands after which the echo area is updated.
-
-2005-08-12  Eli Zaretskii  <eliz@gnu.org>
-
-       * cus-edit.el (custom-save-all, custom-save-delete):
-       Bind recentf-exclude to exclude custom-file.
-
-2005-08-12  Ehud Karni  <ehud@unix.mvs.co.il>
-
-       * mail/rmailsum.el (rmail-summary-end-of-message): New command
-       to go to the bottom of the mail message.  Added to
-       `rmail-summary-mode-map' with key "/".
-       (rmail-summary-show-message): New (internal) function for use by
-       both `rmail-summary-beginning/end-of-message'.
-       (rmail-summary-beginning-of-message): Change to use
-       rmail-summary-show-message.
-
-       * mail/rmail.el (rmail-end-of-message): New command to go to the
-       end of the current message.  Added to `rmail-mode-map' with key "/".
-       (rmail-beginning-of-message): Fix to work as documented.
-       (rmail-mode): Change documentation.
-
-       * progmodes/compile.el (compilation-start): Add the line
-       "Compilation started" with compilation start time.
-       (compilation-mode-font-lock-keywords): Add `started' to keywords.
-
-2005-08-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * menu-bar.el (menu-bar-options-menu): Standardize capitalization
-       of menu items.
-
-2005-08-11  Richard M. Stallman  <rms@gnu.org>
-
-       * simple.el (pop-global-mark): Reverse test of widen-automatically.
-
-       * battery.el (battery-status-function): Don't use ignore-errors.
-
-2005-08-11  Lute Kamstra  <lute@gnu.org>
-
-       * emacs-lisp/generic.el (generic-font-lock-defaults): Declare with
-       define-obsolete-variable-alias.
-
-2005-08-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * net/ange-ftp.el: Use \\` and \\' instead of ^ and $ in regexps.
-       (ange-ftp-send-cmd): Revert last change, and expand
-       the comment explaining the problem.
-
-2005-08-10  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * ldefs-boot.el: Update.
-
-       * menu-bar.el (menu-bar-showhide-menu): Rename "Date, Time and Mail"
-       item to "Time, Load and Mail".  Change help echo text.
-
-       * time.el (display-time-use-mail-icon, display-time-format)
-       (display-time-string-forms): Shorten first line of docstrings.
-
-2005-08-10  Lars Hansen  <larsh@soem.dk>
-
-       * desktop.el (desktop-buffer-mode-handlers):
-       Make non-customizable.  Add autoload cookie.  Change initial value to
-       nil; add elements in respective modules instead.  Fix doc string.
-       (desktop-load-file): New function.
-       (desktop-minor-mode-handlers): New autoloaded variable.
-       (desktop-create-buffer): Call minor mode handlers.
-       Use desktop-load-file to load major and minor mode modules prior to
-       checking for a handler.
-       (desktop-save): Don't add nil to desktop-minor-modes for minor
-       modes with nil function in desktop-minor-mode-table.  Don't delete
-       desktop file before rewriting it.
-       (desktop-locals-to-save): Add autoload cookie.  Don't make
-       automatically buffer-local.  Add variables column-number-mode,
-       size-indication-mode, indent-tabs-mode,
-       indicate-buffer-boundaries, indicate-empty-lines and
-       show-trailing-whitespace.
-       (desktop-clear): Allow desktop-clear-preserve-buffers to contain
-       regexps.  Don't use desktop-clear-preserve-buffers-regexp.
-       (desktop-clear-preserve-buffers-regexp): Delete.
-       (desktop-clear-preserve-buffers): Update initial value and docstring.
-       (desktop-save-buffer): Fix doc string.
-
-       * hilit-chg.el: Add handler to desktop-minor-mode-handlers.
-       (hilit-chg-desktop-restore): New function.
-       (highlight-changes-mode): Add highlight-changes-mode to
-       desktop-locals-to-save.
-
-       * dired.el: Add handler to desktop-buffer-mode-handlers.
-       (dired-restore-desktop-buffer): Remove autoload cookie.
-       (dired-mode): Add autoload cookie.
-
-       * info.el: Add handler to desktop-buffer-mode-handlers.
-       (Info-restore-desktop-buffer): Remove autoload cookie.
-       (Info-mode): Add autoload cookie.
-
-       * mh-e/mh-e.el: Add handler to desktop-buffer-mode-handlers.
-       (mh-restore-desktop-buffer): Remove autoload cookie.
-       (mh-folder-mode): Add autoload cookie.
-
-       * mail/rmail.el: Add handler to desktop-buffer-mode-handlers.
-       (rmail-restore-desktop-buffer): Remove autoload cookie.
-
-2005-08-11  Masatake YAMATO  <jet@gyve.org>
-
-       * hexl.el (hexl-address-region):
-       (hexl-ascii-region, hexl-font-lock-keywords):
-       (hexl-highlight-line-range): Use the term "region"
-       instead of "area" for consistency with the other symbols
-       defined in hexl.el.
-
-2005-08-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * menu-bar.el (menu-bar-options-save): Move `display-time-mode' to
-       correct group: it is set with `menu-bar-make-mm-toggle' (pointed
-       out by Juri Linkov).  Add `display-battery-mode'.
-
-2005-08-09  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/compile.el (compilation-mode-font-lock-keywords):
-       Remove `-text' from face variable names.
-       (compilation-error-file-name, compilation-warning-file-name)
-       (compilation-info-file-name): Delete faces.
-       (compilation-line-number, compilation-column-number):
-       Remove face underlining.
-       (compilation-message-face): Set to `underline' value by default.
-       (compilation-error-face, compilation-warning-face)
-       (compilation-info-face): Remove `-file-name' from face names.
-       (compilation-error-text-face, compilation-warning-text-face)
-       (compilation-info-text-face): Delete face variables.
-       (compilation-text-face): Delete function.
-
-       * progmodes/grep.el (grep-regexp-alist): Use `.+?' instead of `[^:\n]+'.
-       (grep-mode-font-lock-keywords): Use `.+?' instead of `[^\n-]+'.
-       (grep-error-face): Set to `compilation-error' instead of
-       `compilation-error-face' (which is redefined to `grep-hit-face' in
-       grep buffers).
-       (grep-mode-font-lock-keywords): Remove `-text' from face variable
-       names.  Use `grep-error-face' instead of `compilation-error-text-face'.
-
-       * dired-aux.el (dired-do-query-replace-regexp):
-       Use `query-replace-read-args'.
-
-       * replace.el (query-replace-read-from, query-replace-read-to)
-       (query-replace-read-args): Rename arg `string' to `prompt'.
-
-       * menu-bar.el (menu-bar-showhide-menu): Add `showhide-battery'.
-
-2005-08-09  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * net/ange-ftp.el (ange-ftp-send-cmd): Make it work properly with
-       uploading files.
-       (ange-ftp-canonize-filename): Handle file names beginning with ~
-       correctly.
-
-2005-08-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * textmodes/fill.el (canonically-space-region)
-       (fill-context-prefix, fill-french-nobreak-p)
-       (fill-delete-newlines, fill-comment-paragraph)
-       (justify-current-line): "?\ " -> "?\s".
-
-2005-08-09  Ben North  <ben@redfrontdoor.org>  (tiny change)
-
-       * textmodes/fill.el (fill-nonuniform-paragraphs):
-       Improve argument/docstring consistency.
-
-2005-08-09  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/ispell.el (ispell-word): More fboundp checks.
-
-       * files.el (find-file-noselect): Don't call set-buffer-major-mode.
-       (find-file-noselect-1): Call it here, only if RAWFILE.
-       (normal-mode): Always set some major mode.
-       (save-some-buffers-action-alist): Change some explanation strings.
-       (file-name-non-special): In the `quote' method, use unwind-protect.
-
-2005-08-09  Magnus Henoch  <mange@freemail.hu>
-
-       * textmodes/ispell.el (ispell-find-aspell-dictionaries): New command.
-       (ispell-have-aspell-dictionaries): New variable.
-       (ispell-aspell-data-dir, ispell-aspell-dict-dir): New variables.
-       (ispell-get-aspell-config-value): New function.
-       (ispell-aspell-find-dictionary): New function.
-       (ispell-aspell-add-aliases): New function.
-       (ispell-valid-dictionary-list): Call ispell-find-aspell-dictionaries if
-       appropriate.  Don't look for ispell dictionaries if we use aspell.
-       (ispell-menu-map): Don't build a submenu of dictionaries.
-
-2005-08-09  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/sql.el (sql-interactive-mode-map): Use fboundp.
-       (sql-read-passwd): Use read-passwd.
-
-       * progmodes/idlw-toolbar.el (idlwave-toolbar)
-       (idlwave-toolbar-is-possible): Add defvars.
-
-       * progmodes/idlw-shell.el (idlwave-xemacs-hack-mouse-track):
-       Avoid warnings.
-
-       * progmodes/idlw-rinfo.el (idlwave-system-variables-alist)
-       (idlwave-system-class-info, idlwave-executive-commands-alist):
-       Use defvar.
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax): Add autoload.
-
-       * mail/supercite.el (sc-ask, sc-no-blank-line-or-header):
-       Avoid warnings.
-
-       * mail/rmail.el (rmail-ignored-headers): Don't hide mime-version:
-       and content-type: headers.
-
-       * eshell/eshell.el (eshell): Avoid warnings about eshell-mode.
-
-       * emacs-lisp/map-ynp.el (map-y-or-n-p): Reorder the options
-       and rename some of them to be more self-explanatory.
-
-       * calendar/calendar.el (calendar-mode-map): Bind < and > usefully.
-
-       * startup.el (command-line-1): Implement -scriptload.
-
-       * replace.el (occur-engine): Initial *Occur* output not undoable.
-
-       * menu-bar.el (menu-bar-file-menu): Rename some menu items
-       and improve help strings.
-
-       * isearch.el (isearch-repeat): When changing direction,
-       mark search successful.
-
-       * ediff-init.el: Use (featurep 'xemacs).
-
-       * comint.el (send-invisible): Identify buffer, if not selected.
-
-       * align.el: Delete autoload for c-guess-basic-syntax.
-
-2005-08-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * textmodes/refbib.el (r2b-convert-record, r2b-convert-buffer):
-       Improve argument/docstring consistency.  Doc fixes.
-       (r2b-variables, r2bv-address, r2bv-annote, r2bv-author)
-       (r2bv-booktitle, r2bv-date, r2bv-decade, r2bv-editor)
-       (r2bv-entry-kind, r2bv-institution, r2bv-journal, r2bv-keywords)
-       (r2bv-kn, r2bv-month, r2bv-note, r2bv-number, r2bv-ordering)
-       (r2bv-organization, r2bv-pages, r2bv-primary-author)
-       (r2bv-publisher, r2bv-school, r2bv-title, r2bv-title-first-word)
-       (r2bv-tr, r2bv-type, r2bv-volume, r2bv-where, r2bv-year):
-       Defvar at compile time.
-
-2005-08-09  Juri Linkov  <juri@jurta.org>
-
-       * info.el: Replace `info' with upper-case `Info' where appropriate.
-       (info-title-1, info-title-2, info-title-3, info-title-4)
-       (info-menu-header): Move up face definitions.
-       (info-menu-star): Rename from `info-menu-5'.
-       (Info-fontify-node): Replace `info-menu-5' with `info-menu-star'.
-       (Info-fontify-visited-nodes): Fix docstring.
-       (Info-hide-note-references): Fix docstring.
-       (Info-up, Info-next-reference, Info-prev-reference): Put cursor on
-       menu items in the same way as on cross-references.
-       (info-apropos): Fix sorting order and formatting to be like in the
-       stand-alone Info browser.  Display error messages for 1 sec.
-       (Info-mode-map): Move down `c' key binding.  Bind `^' to `Info-up'.
-       (Info-mode-menu): Remove item for `Info-search-case-sensitively'
-       from the menu bar.
-       (Info-insert-dir): Restore point after calling
-       `insert-buffer-substring'.
-
-2005-08-08  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/lmenu.el (lucid-menubar-map, lucid-failing-menubar)
-       (recompute-lucid-menubar): Add defvars.
-
-       * mail/sendmail.el (mail-yank-original): Use with-no-warnings.
-
-       * mail/reporter.el (reporter-dump-state): Use insert-buffer-substring.
-
-       * net/net-utils.el (run-dig): Rename from `dig'.
-
-       * play/gametree.el (gametree-mode): Use make-local-variable,
-       not make-variable-buffer-local.
-
-       * progmodes/ada-prj.el (ada-prj-display-page): Use with-no-warnings.
-
-       * ansi-color.el (ansi-color-make-extent)
-       (ansi-color-set-extent-face): Use fboundp, not functionp.
-
-       * autorevert.el (auto-revert-tail-mode): Use make-local-variable,
-       not make-variable-buffer-local.
-
-       * bookmark.el (Info-current-file): Add defvar.
-       (bookmark-jump-noselect): Use with-no-warnings.
-
-       * completion.el (c-mode-map, fortran-mode-map): Add defvars.
-
-       * ebuff-menu.el (Helper-return-blurb): Add defvar.
-
-       * ffap.el (gnus-summary-buffer, gnus-article-buffer): Add defvars.
-
-       * find-file.el (ada-procedure-start-regexp)
-       (ada-package-start-regexp): Add defvars.
-
-       * info.el (Info-insert-dir): Use insert-buffer-substring.
-
-       * xml.el (xml-att-def-re): Add defvar.
-
-       * icomplete.el (icomplete-exhibit): Adapt to new while-no-input
-       calling convention.
-
-       * subr.el (while-no-input): Return t if there is input.
-
-2005-08-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-start.el (all): Add `overflow-newline-into-fringe'.
-
-2005-08-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cmuscheme.el (inferior-scheme-mode-hook, inferior-scheme-mode)
-       (scheme-prev-l/c-dir/file): Fix typos in docstrings.
-
-2005-08-08  Emilio C. Lopes  <eclig@gmx.net>
-
-       * cmuscheme.el (scheme-start-file): Replace reference to
-       `user-emacs-directory' by "~/.emacs.d/".
-
-2005-08-08  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * info.el (Info-dir-remove-duplicates): Avoid case folding
-       in loop; instead, keep downcased strings for comparison.
-       Suggested by Helmut Eller.
-
-2005-08-07  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.50.
-
-       * net/tramp.el: Remove defvar of `last-coding-system-used' in the
-       XEmacs case; not necessary anymore.
-       (tramp-user-regexp): Allow "@" as part of user name.
-       (tramp-handle-set-visited-file-modtime)
-       (tramp-handle-insert-file-contents)
-       (tramp-handle-write-region): No special handling for
-       `last-coding-system-used, because this is done in
-       `tramp-accept-process-output' now.
-       (tramp-accept-process-output): New defun.
-       (tramp-process-one-action, tramp-process-one-multi-action)
-       (tramp-wait-for-regexp, tramp-wait-for-output)
-       (tramp-discard-garbage-erase-buffer): Call it.  Reported by David
-       Howells <dhowells@redhat.com>.
-       (clear-visited-file-modtime): Defadvice removed.  The check for
-       unset buffer's modtime does not need to be based on
-       `tramp-buffer-file-attributes'.  Suggested by RMS.
-       (tramp-message): Insert "\n" if not being at beginning of line.
-       (tramp-find-shell): Use `tramp-barf-if-no-shell-prompt' for code
-       sequence with same logic.
-       (tramp-completion-handle-expand-file-name): Discard call of
-       `tramp-drop-volume-letter'.  It is not necessary, and there have
-       been problems with (expand-file-name "~/.netrc" "/") in ange-ftp.
-       Reported by Richard G. Bielawski <Richard.G.Bielawski@wellsfargo.com>.
-       (tramp-do-copy-or-rename-file-out-of-band): Transfer message
-       should always be visible.
-       (tramp-handle-insert-directory, tramp-setup-complete)
-       (tramp-set-process-query-on-exit-flag)
-       (tramp-append-tramp-buffers): Pacify byte-compiler.
-       (tramp-bug): Delete non-existing variables from list.
-       Apply `tramp-load-report-modules' as pre-hook.
-       Mask `tramp-password-prompt-regexp', `tramp-shell-prompt-pattern' and
-       `shell-prompt-pattern' because of non-7bit characters.
-       Reported by Sebastian Luque <sluque@mun.ca>.
-       (tramp-reporter-dump-variable, tramp-load-report-modules): New defuns.
-       (tramp-match-string-list): Remove function.
-       (tramp-wait-for-regexp): Remove call of that function.
-       Suggested by Kim F. Storm <storm@cua.dk>.
-       (tramp-set-auto-save-file-modes): Use octal integer code #o600
-       instead of octal character code ?\600.  The latter resulted in a
-       syntax error with XEmacs.
-
-       * net/tramp-smb.el: Remove defvar of `last-coding-system-used' in the
-       XEmacs case; not necessary anymore.
-       (tramp-smb-handle-write-region): No special handling for
-       `last-coding-system-used, because this is done in
-       `tramp-accept-process-output' now.
-       (tramp-smb-wait-for-output): Call `tramp-accept-process-output'.
-
-2005-08-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * wid-edit.el (widget-choice-value-create):
-       Unconditionally respect user choice.  Set :explicit-choice back to nil
-       when no longer needed.
-       (widget-choice-action): Unconditionally respect user choice.
-       Eliminate :explicit-choice-value.
-
-       * fringe.el (set-fringe-indicators-1, fringe-indicators): Delete.
-
-       * menu-bar.el (menu-bar-options-save): Replace `fringe-indicators'
-       with `indicate-empty-lines' and `indicate-buffer-boundaries'.
-       (menu-bar-showhide-fringe-menu): Add new item "Empty line indicators"
-       running new function `toggle-indicate-empty-lines'.
-       Rename "Customize" item to "Customize fringe".
-       Rename "Indicators" item to "Buffer boundaries" and change help echo.
-       (menu-bar-showhide-fringe-ind-menu): Change several help echos.
-       Add `menu-bar-showhide-fringe-ind-customize' as "Other (customize)".
-       Delete "Empty lines only" item.
-       (menu-bar-showhide-fringe-ind-customize): New function.
-       (menu-bar-showhide-fringe-ind-mixed)
-       (menu-bar-showhide-fringe-ind-box)
-       (menu-bar-showhide-fringe-ind-right)
-       (menu-bar-showhide-fringe-ind-left)
-       (menu-bar-showhide-fringe-ind-none): Use `indicate-buffer-boundaries'
-       instead of `fringe-indicators'.
-
-2005-08-06  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper.el (viper-emacs-state-mode-list): Add recentf-dialog-mode.
-       Change the date of last update.
-
-2005-08-06  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-cmd.el (viper-harness-minor-mode, viper-exec-delete)
-       (viper-exec-yank, viper-put-back): Don't display modification msg
-       if in the minibuffer.
-
-       * viper-init.el (viper-replace-overlay-cursor-color)
-       (viper-insert-state-cursor-color, viper-vi-state-cursor-color):
-       Make variables frame local.
-
-       * viper-util.el (viper-append-filter-alist): Use append instead of
-       nconc.
-
-       * viper.el (viper-vi-state-mode-list)
-       (viper-emacs-state-mode-list): Move help-mode and
-       completion-list-mode from the first list to the second.
-       (viper-mode): Docstring.
-       (viper-go-away, viper-non-hook-settings): Don't localize
-       minor-mode-alist in newer Emacsen.  Add advice to
-       set-cursor-color.  Don't bind "\C-c\\".
-
-2005-08-06  Emilio C. Lopes  <eclig@gmx.net>
-
-       * cmuscheme.el (scheme-trace-command, scheme-untrace-command)
-       (scheme-macro-expand-command): New user options.
-       (scheme-trace-procedure, scheme-expand-current-form): New commands.
-       (scheme-form-at-point, scheme-start-file)
-       (scheme-interactively-start-process): New functions.
-       (scheme-get-process): New function, extracted from `scheme-proc'.
-       (run-scheme): Call `scheme-start-file' to get start file, and pass
-       it to `make-comint'.
-       (switch-to-scheme, scheme-proc):
-       Call `scheme-interactively-start-process' if no Scheme buffer/process
-       is available.
-
-2005-08-06  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/compile.el (compilation-mode-font-lock-keywords):
-       Use `compilation-text-face', `compilation-info-text-face' and
-       `compilation-error-text-face' instead of `font-lock-keyword-face'.
-       (compilation-error): New face.
-       (compilation-error-file-name): Inherit from
-       `compilation-error' instead of `font-lock-warning-face'.
-       (compilation-warning-file-name): Inherit from
-       `compilation-warning' instead of `font-lock-warning-face'.
-       (compilation-info, compilation-error-file-name)
-       (compilation-warning-file-name, compilation-info-file-name)
-       (compilation-line-number, compilation-column-number): Doc fix.
-       (compilation-error-text-face, compilation-warning-text-face)
-       (compilation-info-text-face): New face variables.
-       (compilation-line-face, compilation-column-face)
-       (compilation-enter-directory-face)
-       (compilation-leave-directory-face): Doc fix.
-       (compilation-text-face): New function.
-
-       * progmodes/grep.el (grep-regexp-alist): Set 5th arg `TYPE' to 0
-       instead of 1 to display binary file names as info file links.
-       (grep-error-face): Use `compilation-error-face' instead of
-       `font-lock-keyword-face'.
-       (grep-mode-font-lock-keywords): Use `compilation-info-text-face'
-       and `compilation-warning-text-face' instead of
-       `font-lock-keyword-face'.  Use `compilation-error-text-face'
-       instead of `grep-error-face'.
-
-2005-08-05  Kenichi Handa  <handa@m17n.org>
-
-       * international/code-pages.el: Add autoload cookies for all coding
-       systems.
-
-2005-08-04  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-start.el (all): Put undo.c where it alphabetically belongs.
-
-2005-08-04  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/compile.el (compilation-mode-map):
-       * progmodes/grep.el (grep-mode-map):
-       Bind TAB to `compilation-next-error' and [backtab] to
-       `compilation-previous-error'.
-
-       * progmodes/grep.el (grep-regexp-alist): Replace complex regexp
-       matching line numbers, column numbers and their ranges with regexp
-       matching only line numbers.
-       (grep-context-face): New face variable.
-       (grep-mode-font-lock-keywords): Use it.
-
-       * faces.el (read-face-name): Delete duplicate faces.
-
-2005-08-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * thumbs.el (thumbs-find-image): Don't make variables
-       automatically buffer local.
-       (thumbs-current-tmp-filename, thumbs-current-image-filename)
-       (thumbs-image-num): Make automatically buffer local.
-       (thumbs-show-thumbs-list): Use `make-local-variable', not
-       `make-variable-buffer-local'.
-       (thumbs-insert-image): Make `thumbs-current-image-size' buffer-local.
-
-       * play/doctor.el (doctor-type-symbol): "?\ " -> "?\s".
-       (**mad**, *debug*, *print-space*, *print-upcase*, abuselst)
-       (abusewords, account, afraidof, arerelated, areyou, bak, beclst)
-       (bother, bye, canyou, chatlst, continue, deathlst, describe)
-       (drnk, drugs, eliza-flag, elizalst, famlst, feared, fears)
-       (feelings-about, foullst, found, hello, history, howareyoulst)
-       (howdyflag, huhlst, ibelieve, improve, inter, isee, isrelated)
-       (lincount, longhuhlst, lover, machlst, mathlst, maybe, moods)
-       (neglst, obj, object, owner, please, problems, qlist)
-       (random-adjective, relation, remlst, repetitive-shortness)
-       (replist, rms-flag, schoollst, sent, sexlst, shortbeclst)
-       (shortlst, something, sportslst, stallmanlst, states, subj)
-       (suicide-flag, sure, things, thlst, toklst, typos, verb, want)
-       (whatwhen, whereoutp, whysay, whywant, zippy-flag, zippylst):
-       Defvar at compile time.
-
-       * progmodes/ada-mode.el (ada-mode): Use `make-local-variable',
-       not `make-variable-buffer-local'.
-
-2005-08-02  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-rect.el (cua--highlight-rectangle): Only show
-       rectangle overlay in selected window.
-
-2005-08-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-start.el (all): Put `indicate-empty-lines' in fringe group
-       instead of display group.  Make `indicate-buffer-boundaries'
-       customizable through Custom.
-
-2005-08-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/gdb-ui.el (gdb-frame-address, gdb-var-changed)
-       (gdb-output-sink, gdba, gdb-cpp-define-alist-program)
-       (gdb-set-gud-minor-mode, gdb-exited, gdb-setup-windows)
-       (gdb-put-string): Fix typos in docstrings.
-
-2005-08-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       Update copyright notices of files in progmodes directory for
-       release of Emacs 22.1.
-
-       * progmodes/gdb-ui.el (gdb-enable-debug-log): Add autoload cookie.
-
-       * progmodes/gud.el (gud-tooltip-mode): Add autoload cookie.
-       Don't barf if the GUD buffer has been killed.
-
-2005-08-01  Kim F. Storm  <storm@cua.dk>
-
-       * textmodes/table.el (table-yank-handler): Change defcustom to defvar.
-
-2005-07-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * simple.el (next-error-follow-minor-mode):
-       make-variable-buffer-local -> make-local-variable.
-
-       * emacs-lisp/cl-extra.el: Require CL also when compiling.
-
-       * emacs-lisp/bytecomp.el (byte-compile-make-variable-buffer-local)
-       (byte-compile-form-make-variable-buffer-local): New functions to warn
-       about misuses of make-variable-buffer-local where make-local-variable
-       was meant.
-
-2005-07-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bs.el (bs-attributes-list): Doc fix.
-       (bs): Update url-link.
-
-       * desktop.el (desktop-save-buffer): Fix typos in docstring.
-       (desktop-load-default): Simplify.
-
-       * ibuffer.el (ibuffer-columnize-and-insert-list)
-       (ibuffer-mouse-toggle-mark, ibuffer-count-marked-lines)
-       (ibuffer-unmark-all, ibuffer-toggle-marks)
-       (ibuffer-unmark-forward, ibuffer-unmark-backward)
-       (ibuffer-compile-make-format-form, ibuffer-format-column)
-       (ibuffer-current-buffers-with-marks)
-       (ibuffer-update-title-and-summary): "?\ " -> "?\s".
-       (ibuffer): Doc fix.
-       (ibuffer-mode): Fix typo in docstring.
-       (ibuffer-hooks, ibuffer-mode-hooks): Make obsolete and declare
-       with `define-obsolete-variable-alias'.
-       (ibuffer-elide-long-columns): Mark as obsolete.  Doc fix.
-
-2005-07-29  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (select-message-coding-system):
-       Be sure to use LF for end-of-line.  If no coding system is decided,
-       return iso-8859-1-unix.
-
-2005-07-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * net/ange-ftp.el (ange-ftp-gateway-fatal-msgs)
-       (ange-ftp-pending-error-line): New vars.
-       (ange-ftp-process-handle-line, ange-ftp-process-filter): Use them
-       to handle the non-fatal no-route-to-host messages.
-       (internal-ange-ftp-mode): Make the no-match regexp more efficient.
-
-2005-07-28  Juanma Barranquero  <lekktu@gmail.com>
-
-       * isearch.el (isearch-mode-map, isearch-other-meta-char)
-       (isearch-quote-char, isearch-printing-char)
-       (isearch-text-char-description): "?\ " -> "?\s".
-       (isearch-lazy-highlight-cleanup)
-       (isearch-lazy-highlight-initial-delay)
-       (isearch-lazy-highlight-interval)
-       (isearch-lazy-highlight-max-at-a-time)
-       (isearch-lazy-highlight-face, isearch-lazy-highlight-cleanup):
-       Declare with define-obsolete-*-alias macros.
-       (isearch-forward): Fix typo in docstring.
-       (search-invisible, search-ring-yank-pointer)
-       (regexp-search-ring-yank-pointer): Doc fixes.
-
-       * recentf.el (recentf-menu-append-commands-p): Declare with
-       `define-obsolete-variable-alias'.
-       (recentf-max-saved-items, recentf-menu-filter)
-       (recentf-arrange-by-rule-subfilter): Doc fixes.
-       (recentf-menu-append-commands-flag)
-       (recentf-initialize-file-name-history, recentf-expand-file-name)
-       (recentf-clear-data): Fix typos in docstrings.
-
-2005-07-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el: Smarten comments.
-       (gdb-info-breakpoints-custom): Use nowarn when finding file.
-
-2005-07-27  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/apollo.el (terminal-init-apollo): New function containing
-       all former top level forms in the file.
-       * term/bobcat.el (terminal-init-bobcat):
-       * term/cygwin.el (terminal-init-cygwin):
-       * term/iris-ansi.el (terminal-init-iris-ansi):
-       * term/linux.el (terminal-init-linux):
-       * term/news.el (terminal-init-news):
-       * term/rxvt.el (terminal-init-rxvt):
-       * term/sun.el (terminal-init-sun):
-       * term/tvi970.el (terminal-init-tvi970):
-       * term/vt100.el (terminal-init-vt100):
-       * term/vt102.el (terminal-init-vt102):
-       * term/vt125.el (terminal-init-vt125):
-       * term/vt200.el (terminal-init-vt200):
-       * term/vt201.el (terminal-init-vt201):
-       * term/vt220.el (terminal-init-vt220):
-       * term/vt240.el (terminal-init-vt240):
-       * term/vt300.el (terminal-init-vt300):
-       * term/vt320.el (terminal-init-vt320):
-       * term/vt400.el (terminal-init-vt400):
-       * term/vt420.el (terminal-init-vt420):
-       * term/wyse50.el (terminal-init-wyse50):
-       * term/xterm.el (terminal-init-xterm): Likewise.
-
-       * term/README: Describe the terminal-init-* functionality.
-
-       * startup.el (command-line): After loading the terminal initialization
-       file call the corresponding terminal initialization function.
-
-2005-07-27  Kenichi Handa  <handa@m17n.org>
-
-       * ps-bdf.el (bdf-read-font-info): Ignore glyphs whose ENCODING is
-       negative.
-
-       * ps-mule.el (ps-mule-bitmap-prologue): Fix arguments to setcharwidth.
-       (ps-mule-composition-prologue): Fix for the case that
-       RelativeCompose is false.
-
-2005-07-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * smerge-mode.el (smerge-ediff): Use insert-buffer-substring.
-
-       * descr-text.el (describe-char): Handle the case where the list of
-       chars is displayed in a separate frame.
-       Be a bit more discriminating when looking for the char.
-
-2005-07-26  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bookmark.el (bookmark-automatically-show-annotations)
-       (bookmark-read-annotation-text-func): Doc fixes.
-       (bookmark-save): Improve argument/docstring consistency.
-       (bookmark-get-bookmark, bookmark-get-bookmark-record)
-       (bookmark-alist-from-buffer)
-       (bookmark-upgrade-file-format-from-0)
-       (bookmark-grok-file-format-version)
-       (bookmark-maybe-upgrade-file-format, bookmark-kill-line)
-       (bookmark-read-annotation-mode)
-       (bookmark-insert-current-bookmark, bookmark-jump)
-       (bookmark-exit-hook): Fix typos in docstrings.
-       (bookmark-exit-hooks): Define as obsolete alias.
-       (bookmark-exit-hook-internal): Run `bookmark-exit-hook',
-       not `bookmark-exit-hooks'.  Fix docstring.
-       (bookmark-bmenu-select): "?\ " -> "?\s".
-
-2005-07-25  Ari Roponen  <arjuropo@cc.jyu.fi>  (tiny change)
-
-       * startup.el (command-line): Fix typo.
-
-2005-07-24  Richard M. Stallman  <rms@gnu.org>
-
-       * tooltip.el (tooltip-mode): Test emacs-basic-display,
-       not emacs-quick-startup.
-
-2005-07-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/re-builder.el (reb-with-current-window): Delete.
-       (reb-next-match, reb-show-subexp): Use `with-selected-window'
-       instead of `reb-with-current-window'.
-       (reb-prev-match): Likewise.  Also, don't move left if the search
-       was unsuccessful.
-       (reb-initialize-buffer): New function.
-       (re-builder, reb-change-syntax): Use it.
-
-       * man.el (Man-goto-page): Make second argument NOERROR optional.
-
-2005-07-23  Richard M. Stallman  <rms@gnu.org>
-
-       * man.el (Man-bgproc-sentinel): Check here for failure to find
-       any man page in the output, and report the error here.
-       (Man-arguments): Make it permanent local.
-       (Man-goto-page): New arg NOERROR.  Never kill the current buffer.
-       (Man-mode): Pass t for NOERROR.
-
-       * progmodes/grep.el (grep-error-face): Use font-lock-keyword-face.
-       (grep-mode-font-lock-keywords):
-       Don't use compilation-...-face for messages that are not file names.
-
-       * progmodes/compile.el (compilation-mode-font-lock-keywords):
-       Don't use compilation-...-face for messages that are not file names.
-
-2005-07-22  Juri Linkov  <juri@jurta.org>
-
-       * startup.el (normal-splash-screen): Update menu name.
-
-       * tempo.el (tempo-insert-template): Fix 2005-07-16 change.
-
-2005-07-22  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term/xterm.el: Load term/rxvt if the terminal is actually an
-       rxvt terminal.
-       (xterm-rxvt-set-background-mode): Remove, not used anymore.
-
-       * term/rxvt.el (function-key-map): Use substitute-key-definition
-       to bind {C,S,C-S}-{f1-f10}.  Add a few missing key bindings.
-
-       * term/cygwin.el: New file.
-
-2005-07-22  Kim F. Storm  <storm@cua.dk>
-
-       * image-file.el (insert-image-file, image-file-yank-handler):
-       Fix last change to maintain a (unique) yank-handler on yanked images.
-
-2005-07-22  Eduardo Mu\e,Aq\e(Boz  <emufer@terra.es>  (tiny change)
-
-       * dired.el (dired-move-to-filename-regexp): Recognize the B suffix
-       of the file size (as in "177B" for 177 bytes).  This happens with
-       "ls -lh" on FreeBSD.
-
-2005-07-22  Juanma Barranquero  <lekktu@gmail.com>
-
-       * hilit-chg.el (highlight-changes-global-initial-state)
-       (highlight-compare-buffers, hilit-chg-turn-on-maybe)
-       (hilit-chg-fixup, highlight-changes-mode):
-       Fix typos in docstrings.
-       (highlight-changes-global-modes, highlight-changes-rotate-faces):
-       Doc fixes.
-
-2005-07-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Never call the
-       mode function using `eval-after-load'.
-
-2005-07-21  Kim F. Storm  <storm@cua.dk>
-
-       * mail/emacsbug.el (report-emacs-bug): Request that backtraces are
-       included when reporting an Emacs crash, and tell about the DEBUG file.
-
-       * image-file.el (insert-image-file): Add yank-handler.
-       (image-file-yank-handler): Yank handler to make unique copies of
-       images when they are yanked into a buffer next to each other.
-
-2005-07-21  Juanma Barranquero  <lekktu@gmail.com>
-
-       * comint.el (comint-use-prompt-regexp, comint-send-input)
-       (comint-source-default, comint-extract-string)
-       (comint-get-source, comint-word, comint-completion)
-       (comint-source, comint-prompt-read-only, comint-update-fence):
-       Fix typos in docstrings.
-       (comint-use-prompt-regexp-instead-of-fields, comint-kill-output):
-       Declare with define-obsolete-*-alias macros.
-       (comint-previous-matching-input-from-input)
-       (comint-next-matching-input-from-input)
-       (comint-previous-matching-input, comint-next-matching-input)
-       (comint-forward-matching-input):
-       Improve argument/docstring consistency.
-
-       * desktop.el (desktop-clear-preserve-buffers-regexp):
-       Also preserve the *server* buffer.
-
-       * simple.el (clone-indirect-buffer): Doc fix.
-       (fixup-whitespace, just-one-space)
-       (backward-delete-char-untabify, lambda): "?\ " -> "?\s".
-       (next-error, next-error-highlight)
-       (next-error-highlight-no-select, next-error-last-buffer)
-       (next-error-buffer-p, next-error-find-buffer, next-error)
-       (previous-error, next-error-no-select, previous-error-no-select)
-       (open-line, split-line, minibuffer-prompt-width, kill-new)
-       (binary-overwrite-mode): Fix typos in docstrings.
-       (set-fill-column): Fix typo in message.
-
-       * skeleton.el (skeleton-proxy-new): Doc fix.
-
-       * strokes.el (strokes-load-hook): Doc fix.
-       (strokes-grid-resolution, strokes-get-grid-position)
-       (strokes-renormalize-to-grid, strokes-read-stroke)
-       (strokes-read-complex-stroke, strokes-file, strokes-last-stroke)
-       (strokes-global-map): Fix typos in docstrings.
-       (strokes-help): Doc fix.  Fix help message and pass it through
-       `substitute-command-keys'.
-
-       * tempo.el (tempo-insert-prompt, tempo-interactive)
-       (tempo-show-completion-buffer, tempo-tags, tempo-match-finder)
-       (tempo-insert-string-functions, tempo-local-tags)
-       (tempo-define-template, tempo-insert-template)
-       (tempo-insert-prompt-compat, tempo-is-user-element)
-       (tempo-insert-mark, tempo-find-match-string, tempo-complete-tag):
-       Fix typos in docstrings.
-
-       * vcursor.el (vcursor-other-window, vcursor-bind-keys)
-       (vcursor-key-bindings, vcursor-use-vcursor-map)
-       (vcursor-find-window, vcursor-scroll-down)
-       (vcursor-disable, vcursor-beginning-of-buffer)
-       (vcursor-end-of-buffer): Fix typos in docstrings.
-       (vcursor-relative-move, vcursor-get-char-count):
-       Improve argument/docstring consistency.
-
-       * version.el: "?\ " -> "?\s".
-
-       * wid-edit.el (widget-default-create, widget-after-change)
-       (widget-default-format-handler, widget-checklist-add-item)
-       (widget-radio-add-item, widget-choose, widget-specify-secret)
-       (widget-field-value-create, widget-field-value-get)
-       (widget-editable-list-format-handler)
-       (widget-editable-list-entry-create, widget-group-value-create)
-       (widget-documentation-link-add)
-       (widget-documentation-string-value-create): "?\ " -> "?\s".
-       (widget-convert-text): Doc fix.
-       (widget-narrow-to-field, widget-field-find)
-       (widget-url-link-action, widget-emacs-library-link-action)
-       (widget-color-notify): Fix typos in docstrings.
-
-       * w32-fns.el (w32-shell-name): Use `bound-and-true-p'.
-       (x-select-text, set-w32-system-coding-system)
-       (w32-add-charset-info): Fix typos in docstrings.
-
-       * emulation/cua-base.el (cua-mode, cua-enable-register-prefix)
-       (cua-enable-cua-keys, cua-use-hyper-key)
-       (cua-virtual-rectangle-edges): Fix typos in docstrings.
-       (cua--M/H-key, cua--init-keymaps): "?\ " -> "?\s".
-
-       * net/tramp.el (tramp-handle-load): Fix typo in error message.
-
-       * emacs-lisp/re-builder.el (regexp-builder): Declare with
-       `defalias' instead of faking it.
-
-       * eshell/em-ls.el (eshell-ls-decorated-name): Doc fix.
-       (eshell-ls-missing, eshell-ls-dired-initial-args)
-       (eshell-ls-use-in-dired): Fix typos in docstrings.
-
-2005-07-20  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-mode): Improve doc string.
-
-2005-07-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * abbrev.el (expand-region-abbrevs): Doc fix.
-       (inverse-add-mode-abbrev, inverse-add-global-abbrev):
-       Improve argument/docstring consistency.
-
-       * arc-mode.el (archive-get-descr, archive-alternate-display):
-       Doc fixes.
-       (archive-l-e): Improve argument/docstring consistency.
-       (archive-tmpdir, archive-unixdate, archive-unixtime)
-       (archive-chmod-entry): Fix typos in docstrings.
-       (archive-unflag, archive-unflag-backwards)
-       (archive-unmark-all-files): "?\ " -> "?\s".
-
-       * buff-menu.el (Buffer-menu-unmark): Doc fix.
-       (Buffer-menu-not-modified, Buffer-menu-execute)
-       (Buffer-menu-toggle-read-only, Buffer-menu-buffer+size)
-       (list-buffers-noselect, Buffer-menu-select): "?\ " -> "?\s".
-
-       * composite.el (compose-string, encode-composition-rule)
-       (compose-last-chars): Fix typos in docstrings.
-
-       * desktop.el (desktop-enable, desktop-basefilename):
-       Declare with `define-obsolete-variable-alias'.
-       (desktop-internal-v2s): Don't quote keywords.
-       (desktop-clear): "?\ " -> "?\s".
-
-       * dired.el (dired-align-file, dired-flag-backup-files)
-       (dired-change-marks, dired-unmark-all-files): "?\ " -> "?\s".
-       (dired-listing-switches, dired-ls-F-marks-symlinks)
-       (dired-dwim-target, dired-load-hook, dired-mode-hook)
-       (dired-directory, dired-faces, dired, dired-revert)
-       (dired-mode, dired-summary, dired-view-file)
-       (dired-copy-filename-as-kill, dired-delete-file)
-       (dired-no-confirm, dired-unmark-all-marks)
-       (dired-sort-by-date-regexp, dired-sort-by-name-regexp)
-       (dired-sort-inhibit, dired-sort-other): Fix typos in docstrings.
-       (dired-undo, dired-get-file-for-visit, dired-sort-toggle-or-edit):
-       Fix typos in message strings.
-
-       * dired-x.el (virtual-dired): Declare with `defalias'.
-       (dired-mark-unmarked-files, dired-local-variables-file)
-       (dired-omit-here-always): Doc fix.
-       (dired-omit-mode, dired-find-subdir)
-       (dired-enable-local-variables, dired-clean-up-buffers-too)
-       (dired-extra-startup, dired-mark-extension, dired-jump)
-       (dired-jump-other-window, dired-omit-localp, dired-virtual-mode)
-       (dired-smart-shell-command, dired-guess-shell-alist-user)
-       (dired-man, dired-initial-position, dired-x-hands-off-my-keys)
-       (dired-x-bind-find-file, dired-x-submit-report):
-       Fix typos in docstrings.
-       (dired-mark-unmarked-files): "?\ " -> "?\s".
-
-       * dirtrack.el (dirtrack-list): Fix typos in docstring.
-
-       * faces.el (describe-face): "?\ " -> "?\s".
-       (read-all-face-attributes, read-face-font, modify-face)
-       (face-attr-construct, italic): Fix typos in docstrings.
-       (frame-update-face-colors): Declare with
-       `define-obsolete-function-alias'.
-
-       * files.el (find-file-noselect, recode-file-name): Doc fixes.
-       (insert-directory, kill-some-buffers): "?\ " -> "?\s".
-       (magic-mode-alist, buffer-file-numbers-unique)
-       (write-file-functions, get-free-disk-space):
-       Fix typos in docstrings.
-       (find-file-not-found-hooks, find-file-hooks, write-file-hooks)
-       (write-contents-hooks, write-file-hooks):
-       Declare with `define-obsolete-variable-alias'.
-
-       * forms-d2.el (arch-rj): Fix typo in docstrings.
-       (arch-tocol): Likewise.  "?\ " -> "?\s".
-
-       * frame.el (set-frame-font, cursor-in-non-selected-windows):
-       Fix typo in docstring.
-       (set-screen-width, set-screen-height): Delete redundant info in
-       doctrings.
-       (new-frame, screen-height, screen-width): Declare with
-       `define-obsolete-function-alias'.
-       (delete-frame-hook, blink-cursor): Declare with
-       `define-obsolete-variable-alias'.
-
-       * paths.el (prune-directory-list): Fix typos in docstring.
-
-       * pcvs-util.el (cvs-flags-query, cvs-strings->string)
-       (cvs-prefix-get): Fix typos in docstrings.
-
-       * ps-print.el (ps-extend-face-list, ps-extend-face)
-       (ps-print-background-image): Fix typos in docstrings.
-       (ps-default-fg, ps-default-bg): Doc fixes.
-
-       * s-region.el (s-region-bind): Doc fix.
-       (s-region-move-p1, s-region-move-p2): Fix typos in docstrings.
-
-       * textmodes/org.el (org-table-formula-substitute-names)
-       (org-table-get-vertical-vector): Doc fixes.
-       (org-table-recalculate): Remove unused argument to `message'.
-
-2005-07-19  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-table-column-names)
-       (org-table-column-name-regexp)
-       (org-table-named-field-locations): New variables.
-       (org-archive-subtree): Protect `this-command' when calling
-       `org-copy-subtree' and `org-cut-subtree', to avoid appending to
-       the kill buffer.
-       (org-complete): Remove fixed-formula completion.
-       (org-edit-formulas-map): New variable.
-       (org-table-edit-formulas): New command.
-       (org-finish-edit-formulas, org-abort-edit-formulas)
-       (org-show-variable, org-table-get-vertical-vector): New functions.
-       (org-table-maybe-eval-formula): Handle `:=' fields.
-       (org-table-get-stored-formulas, org-table-store-formulas)
-       (org-table-get-formula, org-table-modify-formulas)
-       (org-table-replace-in-formulas): Handle named field formulas.
-       (org-table-get-specials): Store locations of named fields.
-
-2005-07-19  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/grep.el (grep-regexp-alist)
-       (grep-mode-font-lock-keywords, grep-process-setup):
-       Use default GNU grep match color "01;31m" instead of "01;41m".
-       (grep-regexp-alist, grep-mode-font-lock-keywords):
-       Use `\\[[0-9]*m' instead of `\\[00m'.
-       (grep-regexp-alist): Move `\\(?:\033\\[K\\)?' from sgr_end to
-       sgr_start where its handling is more important.  Use the real
-       length of sgr_start instead of constant 8.
-       (grep-mode-font-lock-keywords): Don't delete `\\(?:\033\\[K\\)?'
-       specially.  Delete all remaining escape sequences.
-       (grep-process-setup): Set "GREP_COLORS" for GNU grep 2.5.1-cvs.
-       (grep-regexp-alist): Make hyperlink only for binary file name
-       instead of the whole line.
-       (grep-mode-map): Bind `backtab' to `compilation-previous-file'.
-       (grep-mode): Add autoload.
-
-       * emacs-lisp/find-func.el (find-function-regexp):
-       Add `define-compilation-mode'.
-
-2005-07-19  Juri Linkov  <juri@jurta.org>
-
-       * compare-w.el (compare-ignore-whitespace, compare-windows-sync)
-       (compare-windows-sync-string-size, compare-windows-recenter)
-       (compare-windows-highlight, compare-windows): Add version 22.1.
-       (compare-windows) <defface>: Inherit from lazy-highlight instead
-       of duplicating its default value.
-
-       * cus-edit.el (custom-mode-map): Bind `C-c C-c' to `Custom-set'.
-       (Custom-mode-menu): Use `info' instead of `Info-goto-node'.
-
-       * descr-text.el (describe-char): Create link buttons for `charset'
-       and `code point'.  Add the current input method name with a link
-       button to `to input' field.  Print face names of display table
-       characters in `The display table entry is displayed by' section
-       instead of printing face-id in the `display' field.
-       Guess hardcoded faces and create a link button for them.
-       Skip empty fields when calculating max-width.
-       Treat `widget-create' specially while inserting strings from the
-       collected field list.
-       (describe-char-after): Made obsolete in version 22.1, not 21.5.
-
-       * diff-mode.el (diff-file-header): Change foreground color from
-       yellow to green on light backgrounds.
-       (diff-context): Inherit from `shadow' only for color/grayscale
-       with more than 88 colors.
-       (diff-indicator-removed, diff-indicator-added)
-       (diff-indicator-changed): New faces.
-       (diff-font-lock-keywords): Use new faces.  Regroup rules.
-       Add "^---$" for `normal' diff format.  Fontify `#' lines with
-       font-lock-comment-delimiter-face and font-lock-comment-face.
-       Add `#' to ^[^...] in the rule for `diff-context-face'.
-
-       * faces.el (mode-line-highlight): Replace RoyalBlue4 with
-       a button-like box.  Inherit from `highlight' on low colors.
-       (shadow): Use shades of gray only for color/grayscale with
-       more than 88 colors.  Use green for light backgrounds with
-       8 colors, and yellow for dark backgrounds with 8 colors.
-
-       * font-lock.el (font-lock-regexp-grouping-backslash):
-       Don't inherit from escape-glyph (use bold for all cases).
-
-       * info.el (info-xref-visited): Use light foreground color `violet'
-       for dark backgrounds instead of dark color `magenta3'.
-       (info-title-1): Use `yellow' color for dark backgrounds.
-
-       * isearch.el (isearch): Use not-too-dark magenta3 instead of
-       too-light magenta2.
-
-       * replace.el (match): Use slightly more light RoyalBlue3 instead
-       of dark RoyalBlue4.
-
-       * wid-edit.el (widget-inactive): Inherit from `shadow'.
-
-2005-07-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * novice.el (disabled-command-hook): Declare it with
-       `define-obsolete-variable-alias'.
-
-       * desktop.el (desktop-enable, desktop-buffer-modes-to-save)
-       (desktop-buffer-misc-functions, desktop-buffer-handlers)
-       (desktop-load-default): Add release to obsolescence info.
-       (desktop-globals-to-clear, desktop-buffer-mode-handlers)
-       (desktop-append-buffer-args, desktop-read):
-       Fix typos in docstrings.
-       (desktop-kill): Fix typo in message.
-       (desktop-save): Doc fix.
-
-2005-07-19  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-cmd.el (viper-escape-to-state): Bug fix.
-       (viper-envelop-ESC-key): Change the definition of fast
-       keysequence so it'll work with keyboard macros.
-
-       * ediff.el (ediff-patch-buffer): Change the docstring.
-
-2005-07-19  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule-cmds.el (select-safe-coding-system): Try to
-       use an auto-coding (if any) before anything else.  If the found
-       auto-coding is invalid, show a warning message.
-
-       * international/mule.el (find-auto-coding): New function created
-       by modifying the body of set-auto-coding.
-       (set-auto-coding): Use find-auto-coding to find a coding.
-
-2005-07-18  Richard M. Stallman  <rms@gnu.org>
-
-       * allout.el (allout-isearch-expose): Use isearch-mode-end-hook-quit,
-       not isearch-mode-end-hook-error.
-       (allout-before-change-protect): Fix error message.
-
-2005-07-18  Juri Linkov  <juri@jurta.org>
-
-       * allout.el (allout-mode):
-       * calculator.el (calculator-copy):
-       * custom.el (custom-known-themes):
-       * dired.el (dired-desktop-buffer-misc-data)
-       (dired-restore-desktop-buffer):
-       * dired-x.el (dired-omit-marker-char):
-       * files.el (basic-save-buffer):
-       * font-core.el (font-lock-mode):
-       * calendar/calendar.el (calendar-goto-hebrew-date)
-       (calendar-goto-coptic-date, calendar-goto-ethiopic-date)
-       (calendar-goto-persian-date):
-       * language/ethio-util.el (ethio-sera-to-fidel-region):
-       * textmodes/picture.el (picture-mode):
-       Delete duplicate duplicate words.
-
-2005-07-18  Juri Linkov  <juri@jurta.org>
-
-       * isearch.el (isearch-mode-map): Remove key bindings for regexp
-       chars * ? } |.
-       (isearch-fallback): Don't call `isearch-process-search-char'.
-       (isearch-*-char, isearch-}-char, isearch-|-char): Remove functions.
-       (isearch-process-search-char): Call `isearch-fallback' for regexp
-       chars * ? } |.
-       (isearch-return-char): Make obsolete with `make-obsolete' instead
-       of simply documenting it as obsolete in the docstring.
-       (isearch-fallback): Refill docstring.
-
-       * international/isearch-x.el
-       (isearch-process-search-multibyte-characters): Remove unneeded
-       `concat'.  Add intermediate values to `junk-hist' instead of
-       `minibuffer-history'.  Test the length of `str'.
-
-2005-07-18  Juanma Barranquero  <lekktu@gmail.com>
-
-       * allout.el (allout-resolve-xref): Fix typos in error strings.
-       (allout-before-change-protect): Remove unneeded `concat'.
-
-       * array.el (array-mode, array-reconfigure-rows)
-       (untabify-backward): Fix typos in docstrings.
-       (array-reconfigure-rows): Use `insert-buffer-substring', not
-       `insert-buffer'.
-
-       * calendar/icalendar.el (icalendar--get-unfolded-buffer):
-       * progmodes/ada-mode.el (ada-make-body):
-       Use `insert-buffer-substring' and `goto-char', not `insert-buffer'.
-
-       * dired.el (dired-log):
-       * tar-mode.el (tar-subfile-save-buffer):
-       * play/zone.el (zone-pgm-stress-destress):
-       Use `insert-buffer-substring', not `insert-buffer'.
-
-2005-07-17  Simon Josefsson  <jas@extundo.com>
-
-       * mail/smtpmail.el (smtpmail-auth-supported): Prefer PLAIN over LOGIN.
-
-2005-07-16  Jose E. Marchesi  <jemarch@gnu.org>
-
-       * lisp/mail/smtpmail.el (smtpmail-auth-supported):
-       Add plain auth method.
-       (smtpmail-try-auth-methods): Add AUTH PLAIN dialog.
-
-2005-07-17  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (dired-other-window): Add ido property.
-
-2005-07-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded):
-       Fix typo in docstring.
-       (byte-compile-interactive-only-functions): Add `insert-buffer' and
-       `insert-file-literally'.
-
-       * emacs-lisp/edebug.el (def-edebug-form-spec): Add obsolescence
-       info and delete redundant message.  Doc fix.
-       (edebug-install-custom-print-funcs, edebug-reset-print-funcs)
-       (edebug-uninstall-custom-print-funcs): Define as obsolete aliases.
-
-2005-07-16  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/bytecomp.el (byte-compile-and-recursion): New function.
-       (byte-compile-and): Use byte-compile-and-recursion.
-       (byte-compile-or-recursion): New function.
-       (byte-compile-or): Use that.
-       (byte-compile-if): Guard the else-clause too.
-       (byte-compile-maybe-guarded): Handle (not (featurep 'emacs)).
-
-       * isearch.el (isearch-mode-end-hook-quit): New variable.
-       (isearch-done): Bind it.
-       (isearch-mode-end-hook): Doc fix.
-
-       * allout.el (allout-isearch-did-quit): Variable deleted.
-       (allout-real-isearch-abort): Function name no longer used.
-       (allout-mode): Do allout-enwrap-isearch whenever feature is wanted.
-       (allout-isearch-rectification): isearch-mode always exists.
-       Don't set allout-isearch-did-quit.
-       (allout-isearch-expose): Check isearch-mode-end-hook-error, not
-       allout-isearch-did-quit.
-       (allout-enwrap-isearch): Just add the hook.
-       (allout-isearch-abort): Function deleted.
-       (allout-pre-command-business): Avoid warning.
-
-       * progmodes/pascal.el (pascal-outline-map): Use fboundp, not boundp.
-       Correctly avoid warnings.
-       (pascal-outline): Likewise.
-
-       * progmodes/f90.el (f90-abbrev-start): Avoid warning.
-
-       * progmodes/asm-mode.el (asm-comment): Use with-no-warnings.
-
-       * play/tetris.el (tetris-mode): Avoid warning.
-
-       * play/snake.el (snake-mode): Avoid warning.
-
-       * play/gamegrid.el (gamegrid-shared-game-dir): Add defvar.
-       (gamegrid-set-display-table): Avoid warning.
-       (gamegrid-set-timer): Likewise.
-       (gamegrid-make-mono-tty-face): Use set-face-inverse-video-p.
-       (gamegrid-add-score-with-update-game-score-1): Take FILE
-       as argument.
-       (gamegrid-add-score-with-update-game-score): Pass that argument.
-       Rename have-shared-game-dir to gamegrid-shared-game-dir.
-
-       * net/eudc-hotlist.el (eudc-hotlist-mode): Avoid warnings.
-
-       * net/eudc-bob.el (eudc-jump-to-event): Avoid warning.
-       (eudc-bob-display-jpeg, eudc-bob-can-display-inline-images): Likewise.
-
-       * mail/uce.el (uce-reply-to-uce): Replace beginning-of-buffer
-       and insert-file.
-
-       * mail/supercite.el (sc-no-blank-line-or-header): Avoid warning.
-       (sc-ask): Avoid warnings.
-
-       * eshell/em-hist.el (eshell-rebind-keys-alist): Add defvar.
-       (eshell-hist-initialize): Use that var the natural way.
-
-       * emulation/viper-init.el (viper-activate-input-method): Avoid warning.
-
-       * emacs-lisp/re-builder.el (reb-cook-regexp):
-       Avoid warning calling lre-compile-string.
-       (reb-color-display-p): Avoid warning.
-
-       * calculator.el (calculator-last-input): Guard uses
-       of event-key and key-press-event-p.
-       (event-key, key-press-event-p): Delete definitions.
-
-       * emacs-lisp/find-gc.el (find-gc-unsafe-list)
-       (find-gc-source-directory, find-gc-subrs-callers)
-       (find-gc-noreturn-list, find-gc-source-files)
-       (find-gc-subrs-called): Vars renamed and defvar'd.
-
-       * emacs-lisp/checkdoc.el (checkdoc-make-overlay)
-       (checkdoc-overlay-put, checkdoc-delete-overlay)
-       (checkdoc-overlay-start, checkdoc-overlay-end)
-       (checkdoc-mode-line-update, checkdoc-char=):
-       Define such that compiler knows they are defined.
-       (checkdoc-call-eval-buffer): Delete.  Use eval-buffer directly.
-       (checkdoc-read-event): Delete.  Use read-event directly.
-
-       * whitespace.el (whitespace-make-overlay)
-       (whitespace-overlay-put, whitespace-delete-overlay)
-       (whitespace-overlay-start, whitespace-overlay-end):
-       Define such that compiler knows they are defined.
-       (whitespace): Move conditional inside.
-
-       * tempo.el (tempo-insert-template): Suppress warning.
-
-       * ediff-diff.el (longlines-mode): Add defvar.
-
-2005-07-16  Gary Howell  <g1howell-list@yahoo.com>  (tiny change)
-
-       * server.el: Bind "C-x #" in a way that works even if C-x is
-       redefined to a command key, not a prefix key.
-
-2005-07-16  Johan Bockg\e,Ae\e(Brd  <bojohan@users.sourceforge.net>  (tiny change)
-
-       * emacs-lisp/cl-macs.el (cl-make-type-test): Defer evaluation of
-       cl-make-type-test till execution time.
-
-2005-07-16  Markus Rost  <rost@math.uni-bielefeld.de>
-
-       * dired-x.el (dired-do-relsymlink-regexp): Add missing optional
-       arg ARG and use it.
-
-2005-07-16  Johan Bockg\e,Ae\e(Brd  <bojohan@users.sourceforge.net>  (tiny change)
-
-       * emacs-lisp/cl-macs.el (cl-make-type-test): Add `atom' type.
-
-2005-07-15  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Avoid constructing
-       a defcustom with two :set or :type keywords.
-
-2005-07-15  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/lisp-mode.el (emacs-lisp-mode-syntax-table):
-       Don't give ^M comment-end syntax.
-
-2005-07-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-var-update, gdb-var-update-handler):
-       Don't consider gdbmi (gdb-mi.el has its own update functions).
-       (gdb-var-delete): Make it work for gdbmi as well.
-       (gdb-speedbar-expand-node): Move var-update here for gdbmi.
-
-       * progmodes/gud.el (etags, sdb): Only require etags when needed.
-       (gud-speedbar-menu-items): Correct logic for enabling items.
-
-2005-07-15  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el: Fix commentary.
-       (ido-define-mode-map): Move ido-next-work-file to C-M-o.
-       Use with-no-warnings around ffap-guesser.
-       (ido-file-internal, ido-read-file-name, ido-read-directory-name):
-       Let bind minibuffer-completing-file-name to t.
-
-2005-07-15  Juanma Barranquero  <lekktu@gmail.com>
-
-       * startup.el (site-run-file, keyboard-type): Doc fixes.
-       (command-line): Check for "--basic-display" argument; also for
-       "--quick", not "--bare-bones" (which was renamed).
-       (fancy-splash-text): Add missing item "Getting New Versions".
-       (normal-splash-screen): Fix typos and improve consistency with
-       `fancy-splash-text'.  Update copyright year.
-
-       * hexl.el (hexl-mode-map): Recognize also `ehelp-command' as a
-       valid binding for `help-char'.
-
-       * emacs-lisp/derived.el (derived-mode-hook-name): Doc fix.
-
-2005-07-14  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term.el (term-mode): Disable cua-mode for term buffers.
-
-2005-07-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * add-log.el (add-log-mailing-address, change-log-merge):
-       Doc fixes.
-       (change-log-get-method-definition): Fix typo in docstring.
-
-2005-07-14  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el:
-       (cua--pre-command-handler-1, cua--pre-command-handler)
-       (cua--post-command-handler-1, cua--post-command-handler):
-       Split in two.  Check (buffer local) value of cua-mode.
-       (cua-selection-mode): New command.
-
-2005-07-13  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * custom.el (custom-initialize-safe-set)
-       (custom-initialize-safe-default): Doc fixes.
-
-       * frame.el (blink-cursor-mode): Use `custom-initialize-safe-default'
-       and simplify :init-value again.
-
-       * tooltip.el (tooltip-mode): Use `custom-initialize-safe-default'
-       and simplify :init-value again.  Delete autoload.
-
-       * startup.el (command-line): Use `custom-reevaluate-setting' again
-       for tooltip-mode.
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Avoid constructing
-       a defcustom with two :initialize keywords.
-
-2005-07-13  Juanma Barranquero  <lekktu@gmail.com>
-
-       * allout.el (my-mark-marker, allout-isearch-prior-pos)
-       (allout-unprotected, allout-undo-aggregation, allout-snug-back)
-       (allout-post-command-business, allout-flag-region)
-       (isearch-reenable-font-lock, allout-yank)
-       (allout-insert-latex-header, allout-insert-latex-trailer)
-       (allout-latex-verbatim-quote-curr-line, allout-latexify-exposed)
-       (allout-latex-verb-quote): Fix typos in docstrings.
-       (allout-enwrap-isearch, regexp-sans-escapes): Doc fixes.
-       (allout-unprotected, allout-prefix-data):
-       Improve argument/docstring consistency.
-       (allout-chart-subtree): Fix argument spec.
-       (allout-open-topic): Rename `use_sib_bullet' argument to
-       `use-sib-bullet'.  Doc fix.
-
-       * whitespace.el (whitespace-check-buffer-leading)
-       (whitespace-check-buffer-trailing)
-       (whitespace-check-buffer-indent)
-       (whitespace-check-buffer-spacetab)
-       (whitespace-check-buffer-ateol, whitespace-highlighted-space)
-       (whitespace-check-leading-whitespace)
-       (whitespace-check-trailing-whitespace)
-       (whitespace-check-spacetab-whitespace)
-       (whitespace-check-indent-whitespace)
-       (whitespace-check-ateol-whitespace, whitespace-abort-on-error)
-       (whitespace-modes): Fix typos in docstrings.
-       (defgroup, defcustom): Doc fixes.
-
-       * winner.el (winner-mode, winner-boring-buffers)
-       (winner-pending-undo-ring): Doc fixes.
-       (winner-ring): Remove unneeded `progn'.
-       (winner-equal): `defsubst' it.
-       (winner-redo): Fix message.
-
-2005-07-13  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (line-move-1): Always use vertical-motion to
-       do the last (or only) line move to ensure some movement.
-       Undo 2005-06-23 change--don't check for overlays.
-
-2005-07-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (ccl-encode-mac-roman-font)
-       (ccl-encode-mac-centraleurroman-font)
-       (ccl-encode-mac-cyrillic-font, ccl-encode-mac-symbol-font):
-       (ccl-encode-mac-dingbats-font): Remove check for ASCII.
-       Change charset-id boundary of dimension to ?\xef.
-       (mac-char-fontspec-list): New constant.
-       (fontset-add-mac-fonts): Use it.  Accept non-string `base-family'
-       argument.  Nil uses itself as family in font-spec.  Previous
-       behavior for nil is now provided by non-nil non-string argument.
-       All callers changed.  Add font-specs for Mac fonts to
-       "fontset-default" unless iso8859-1 fonts are installed.
-
-2005-07-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/sh-script.el (sh-get-indent-info): Only indent
-       a continuation line if the \ is preceded by SPC or TAB.
-       (sh-get-indent-info): Simplify.
-       (sh-mark-init, sh-learn-buffer-indent, sh-add-completer):
-       Use with-current-buffer.
-
-       * font-lock.el (font-lock-fontify-keywords-region): Avoid inf-loops
-       when the matched text is empty.
-
-2005-07-12  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * startup.el (command-line): Revert to previous handling of
-       tooltip-mode.  Explain in comment why the complexity is needed.
-
-       * tooltip.el (tooltip-mode): Revert to previous implementation of
-       its defcustom.
-
-       * frame.el (blink-cursor-mode): Revert to previous implementation
-       of its defcustom.  Update comment.
-
-2005-07-12  Lars Hansen  <larsh@soem.dk>
-
-       * desktop.el: Update e-mail address.
-
-2005-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el (mac-services-mail-selection)
-       (mac-services-mail-to): New functions.
-       (mac-application-menu-map): Bind them.
-
-2005-07-12  wulei  <milton@wulei.net>  (tiny change)
-
-       * progmodes/gdb-ui.el: Add note about buffering with Windows.
-
-2005-07-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * custom.el (custom-reevaluate-setting): Doc fix.
-
-2005-07-11  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (calc-embedded-announce-formula-alist)
-       (calc-embedded-open-close-plain-alist)
-       (calc-embedded-open-close-mode-alist): Add checks for additional
-       major modes (due to Robert J. Chassell <bob@rattlesnake.com>).
-
-2005-07-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * custom.el (custom-enable-theme): Don't add theme to
-       `custom-enabled-themes' with `push' because there is no
-       setf-method for `delq'.
-
-2005-07-11  Richard M. Stallman  <rms@gnu.org>
-
-       * custom.el (custom-declare-variable): Doc fix.
-
-       * dired-aux.el (dired-compare-directories): Remove "." and ".."
-       from the alists.
-
-       * emacs-lisp/edebug.el (edebug-slow-after, edebug-slow-before):
-       Do nothing if edebug-active.
-
-       * emacs-lisp/edebug.el (edebug-enter): Don't with-timeout-suspend here.
-       (edebug-display): Do it here instead.
-
-2005-07-10  Richard M. Stallman  <rms@gnu.org>
-
-       * cus-face.el (custom-theme-set-faces): Make it work.
-       (custom-reset-faces): Doc fix.
-       (custom-theme-reset-internal-face, custom-theme-face-value):
-       Functions deleted.
-
-       * custom.el (custom-push-theme): Maintain list of the settings
-       of a given theme in its theme-settings property.
-       Maintain position of old settings in the theme-value
-       or theme-face property.
-       (custom-enabled-themes): New variable.
-       (custom-theme-enabled-p): New function.
-       (provide-theme): Update custom-enabled-themes.
-       Disable and reenable the `user' theme.
-       (require-theme): Doc fix.
-       (custom-do-theme-reset, custom-remove-theme): Functions deleted.
-       (custom-theme-value, custom-theme-variable-value): Likewise.
-       (custom-theme-reset-internal): Likewise.
-       (custom-theme-load-themes): Fix bugs and use custom-disable-theme.
-       (custom-enable-theme, custom-disable-theme): New functions.
-       (custom-variable-theme-value, custom-face-theme-value): Likewise.
-       (custom-theme-recalc-variable, custom-theme-recalc-face): Likewise.
-       (custom-theme-reset-variables): Simplify.
-       (deftheme, custom-declare-theme, custom-make-theme-feature):
-       Definitions moved.
-
-2005-07-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * longlines.el (longlines-show-region)
-       (longlines-unshow-hard-newlines): Recognize hard newlines by
-       non-nil hard property, instead of t.
-
-2005-07-10  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * viper-cmd.el (viper--key-maps): New variable.
-       (viper-normalize-minor-mode-map-alist): Use viper--key-maps and
-       emulation-mode-map-alists.
-       (viper-envelop-ESC-key): Use viper-subseq.
-       (viper-search-forward/backward/next): Disable debug-on-error.
-
-       * viper-keym.el (viper-toggle-key, viper-quoted-insert-key)
-       (viper-ESC-key): New defcustoms.
-
-       * viper-macs.el (ex-map-read-args): Use viper-subseq.
-
-       * viper-util.el (viper-key-to-emacs-key): Use viper-subseq.
-       (viper-subseq): Copy of subseq from cl.el.
-
-       * viper.el (viper-go-away, viper-set-hooks): Use
-       emulation-mode-map-alists, advise self-insert-command, add-minor-mode.
-
-       * viper-mous.el (viper-current-frame-saved): Use defvar.
-
-       * viper-init.el: Get rid of -face in face names.
-
-       * ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3):
-       Make it work with longlines mode.
-
-       * ediff-mult.el (ediff-meta-mode-hook): New variable.
-
-       * ediff-ptch.el (ediff-file-name-sans-prefix): Quote regexp.
-
-       * ediff-init.el: Get rid of -face in face names.
-
-2005-07-10  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/edebug.el (edebug-enter): Call with-timeout-suspend
-       and with-timeout-unsuspend.
-
-       * emacs-lisp/debug.el (debug): Call with-timeout-suspend
-       and with-timeout-unsuspend.
-
-       * emacs-lisp/timer.el (with-timeout-timers): New variable.
-       (with-timeout): Bind that variable to record timers.
-       (with-timeout-suspend, with-timeout-unsuspend): New functions.
-
-       * emacs-lisp/debug.el (debug-help-follow): New function.
-       (debugger-mode-map): Use that instead of help-follow.
-       (debugger-setup-buffer): Use eval-buffer-list
-       to handle eval-buffer frames.
-
-2005-07-10  N. Raghavendra  <raghu@mri.ernet.in>  (tiny change)
-
-       * timezone.el (timezone-parse-date): Change first regexp
-       so it will not mistakenly match dates with no time zone.
-
-2005-07-10  Jeff Dwork  <jeff.dwork@amd.com>  (tiny change)
-
-       * facemenu.el (facemenu-read-color): Do case-insensitive matching.
-
-2005-07-10  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * custom.el (custom-initialize-safe-set)
-       (custom-initialize-safe-default): New functions.
-
-       * frame.el (blink-cursor-mode): Use `custom-initialize-safe-default'
-       and simplify :init-value.
-
-       * tooltip.el (tooltip-mode): Use `custom-initialize-safe-default'
-       and simplify :init-value.  Delete obsolete comment.
-
-       * startup.el (command-line): Use `custom-reevaluate-setting' to
-       handle `tooltip-mode'.  Delete obsolete comment.
-
-       * files.el (set-visited-file-name): Avoid calling
-       `file-name-nondirectory' with a nil argument.
-
-2005-07-09  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/debug.el (debugger-setup-buffer): When eval-buffer
-       was called with nil for the buffer, handle the read position right.
-       Handle read position for eval-region, too.
-
-2005-07-09  Juri Linkov  <juri@jurta.org>
-
-       * fringe.el (fringe-mode): Add period in docstring.
-       (fringe-query-style): Build prompt depending on `all-frames' arg.
-
-       * dired.el (dired-marker-char): Avoid quotations for `do' and `mark'
-       to not create links to unrelated functions in the Help buffer.
-
-       * progmodes/compile.el (compilation-mode-hook, compilation-mode):
-       Doc fix.
-
-       * simple.el (next-error-hook): New variable.
-       (next-error): Use it.  Doc fix.
-
-       * textmodes/ispell.el (ispell-command-loop): Add current
-       dictionary name and program name to mode-line-format.
-       (ispell-region, ispell-process-line): Add current dictionary name
-       and program name to messages.
-
-2005-07-08  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (calc-embedded-announce-formula-alist)
-       (calc-embedded-open-close-formula-alist)
-       (calc-embedded-open-close-word-alist)
-       (calc-embedded-open-close-plain-alist)
-       (calc-embedded-open-close-new-formula-alist)
-       (calc-embedded-open-close-mode-alist)
-       (calc-embedded-new-buffer-hook, calc-embedded-new-formula-hook)
-       (calc-embedded-mode-hook): New variables.
-
-       * calc/calc-embed.el (calc-embedded-firsttime)
-       (calc-embedded-firsttime-buf, calc-embedded-firsttime-formula):
-       New variables.
-       (calc-do-embedded): Use calc-embedded-firsttime,
-       calc-embedded-firsttime-buf and calc-embedded-firsttime-formula to
-       determine whether or not to run hooks.
-       (calc-embedded-make-info): Set calc-embedded-firsttime-buf and
-       calc-embedded-firsttime-formula appropriately.
-       Set calc-embedded delimiter variables according to mode.
-
-2005-07-08  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/checkdoc.el (checkdoc-proper-noun-list):
-       Check for "emacs", etc., as entire symbol, not just as word.
-       (checkdoc-file-comments-engine): Use regexp-quote on FN.
-
-       * files.el (set-visited-file-name): Report the error
-       for "empty filename" earlier.
-       (kill-some-buffers): Ignore buffers already dead.
-
-       * fringe.el (fringe-mode): Doc fix.
-
-       * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded):
-       Check for (featurep 'xemacs) and turn off warnings in what it guards.
-       Use unwind-protect to ensure byte-compile-unresolved-functions
-       is updated.
-
-       * whitespace.el (whitespace-buffer-leading-cleanup):
-       Simplify w/ skip-chars-forward.
-       (whitespace-buffer-trailing-cleanup): Simplify w/ skip-chars-backward.
-
-       * mail/rmail.el (rmail-only-expunge): Fix paren error.
-       Unconditionally try to leave point at the same old place.
-
-2005-07-08  Ralf Angeli  <angeli@iwi.uni-sb.de>  (tiny change)
-
-       * comint.el (comint-postoutput-scroll-to-bottom)
-       (comint-show-maximum-output): Take scroll-margin into consideration.
-
-2005-07-08  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-use-filename-at-point): New choice `guess'.
-       (ido-file-internal): Try ffap-guesser if selected.
-
-       * ido.el (ido-before-fallback-functions): New hook.
-       (ido-buffer-internal, ido-file-internal, ido-read-buffer)
-       (ido-read-file-name): Run it.
-
-2005-07-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/hideif.el (hide-ifdef-use-define-alist): Pass a list of
-       strings rather than a list of symbols to the completion function.
-
-2005-07-07  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-units.el (math-apply-units): Change the places in
-       which units are simplified.
-
-2005-07-07  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-edit.el (customize-option, customize-option-other-window):
-       Make them handle aliases.
-
-       * custom.el (custom-variable-p): Make it recursively follow
-       aliases.  Mention that in the docstring.
-
-2005-07-07  Richard M. Stallman  <rms@gnu.org>
-
-       * cus-start.el (exec-path): Use `directory' instead of `file'.
-       Fix tag for nil.
-
-2005-07-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * replace.el (occur-rename-buffer): Use `generate-new-buffer' also
-       when called non-interactively.  Doc fix.
-
-2005-07-07  Lute Kamstra  <lute@gnu.org>
-
-       * elide-head.el (elide-head-headers-to-hide): Recognize the FSF's
-       new address as well.
-
-2005-07-07  Kenichi Handa  <handa@m17n.org>
-
-       * international/mule.el (make-coding-system):
-       Describe `ascii-incompatible' property in the docstring.
-       (set-file-name-coding-system): Signal an error if coding-system is
-       ascii-incompatible.
-       (set-keyboard-coding-system): Likewise.
-
-       * international/mule-cmds.el (set-default-coding-systems):
-       Don't set default-file-name-coding-system and
-       default-keyboard-coding-system if coding-system is ASCII-incompatible.
-
-       * international/utf-16.el: Declare that all UTF-16-based coding
-       systems are ASCII-incompatible.
-
-2005-07-07  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el: Require font-lock for displaying errors.
-       Used by gdb-ui.el.
-
-2005-07-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * hi-lock.el (hi-lock-find-patterns): Protect also against invalid
-       values for the pattern lists which are `read'able but not
-       `append'able (like symbols).
-
-2005-07-06  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/flymake.el (flymake-float-time): Instead of
-       with-no-warnings, test for XEmacs.
-       (flymake-replace-regexp-in-string): Test fboundp of replace-in-string
-       to avoid warning.
-
-2005-07-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * w32-vars.el (w32-fixed-font-alist): Fix typo in `defcustom' tag.
-
-2005-07-05  Lute Kamstra  <lute@gnu.org>
-
-       * battery.el: Add support for Darwin (with much debugging help
-       from Samuel Lauber <sam124@operamail.com>).
-       (battery-status-function, battery-echo-area-format)
-       (battery-mode-line-format): Add support for pmset on Darwin.
-       (battery-load-low, battery-load-critical): New user options.
-       (battery-pmset): New function.
-
-2005-07-05  Lute Kamstra  <lute@gnu.org>
-
-       Update FSF's address in GPL notices.
-
-       * textmodes/page-ext.el: Update FSF's address.
-
-2005-07-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/lisp-mode.el (lisp-mode-variables): Prevent adaptive
-       filling from using prefix when filling a single-line docstring.
-
-       * progmodes/flymake.el: Remove useless eval-when-compile.
-
-       * arc-mode.el (archive-lzh-ogm): Reorder save excursion/restriction.
-
-2005-07-04  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/org.el (org-file-apps-defaults-gnu):
-       Rename from org-file-apps-defaults-linux.
-       (org-default-apps): Don't test system-type for `linux'.
-       (org-file-apps): Doc fix.
-
-2005-07-04  David Ponce  <david@dponce.com>
-
-       * tree-widget.el: Improve header Commentary section.
-       (tree-widget) [defgroup]
-       (tree-widget-image-enable, tree-widget-themes-directory)
-       (tree-widget-theme, tree-widget-image-properties-emacs)
-       (tree-widget-image-properties-xemacs, tree-widget-create-image)
-       (tree-widget-image-formats, tree-widget-control)
-       (tree-widget-empty-control, tree-widget-leaf-control
-       (tree-widget-guide, tree-widget-end-guide, tree-widget-no-guide)
-       (tree-widget-handle, tree-widget-no-handle, tree-widget-p)
-       (tree-widget-keep, tree-widget-after-toggle-functions)
-       (tree-widget-open-node, tree-widget-close-node): Doc fix.
-       (tree-widget-open-control, tree-widget-close-control): Fix doc and
-       :help-echo message.
-       (tree-widget-set-theme): Doc fix.  Use `string-equal'.
-       (tree-widget-image-properties): Doc fix.  Clearer implementation.
-       (tree-widget--cursors): New constant.
-       (tree-widget-lookup-image): New function split from
-       `tree-widget-find-image'.  Clearer implementation.
-       (tree-widget-find-image): Use it.
-       (tree-widget-button-keymap): Use `set-keymap-parent'.
-       (tree-widget) [define-widget]: Use `widget-children-value-delete'.
-       Define the sub-widgets here.
-       (tree-widget-node): Check that :node is not a tree-widget.
-       (tree-widget-get-super, tree-widget-open-control)
-       (tree-widget-close-control, tree-widget-empty-control)
-       (tree-widget-leaf-control, tree-widget-guide)
-       (tree-widget-end-guide, tree-widget-no-guide, tree-widget-handle)
-       (tree-widget-no-handle, tree-widget-value-delete)
-       (tree-widget-map): Remove.
-       (tree-widget-children-value-save): Doc fix.  Simplified.
-       (tree-widget-value-create): Update according to previous changes.
-
-2005-07-04  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el: Leading space replaced by TABS.
-       (org-recalc-marks, org-table-rotate-recalc-marks)
-       (org-table-get-specials): Treat "^" and "_" marks.
-       (org-table-justify-field-maybe): Optional argument NEW.
-       (org-table-eval-formula): Parsing of the format simplified.
-       New modes C,I.  Honor the %= parameter in the current table.
-       Avoid unnecessary re-align by using the NEW argument to
-       `org-table-justify-field-maybe'.
-       (org-calc-default-modes): Default for date-format mimicks org-mode.
-       (org-agenda, org-timeline): Quote argument in org-agenda-redo-command.
-
-2005-07-03  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * cus-face.el (custom-theme-set-faces): Make it handle face
-       aliases whose alias declarations are pre- or autoloaded.
-
-2005-07-04  Juri Linkov  <juri@jurta.org>
-
-       * faces.el (read-face-name): Put the code for getting a face name
-       from the buffer before adding the faces from the `face' property.
-       Use `completing-read-multiple' instead of `completing-read'.
-       Require `crm'.  Add default value and post-process the returned
-       list of faces.
-
-       * emacs-lisp/crm.el (crm-find-current-element)
-       (crm-minibuffer-complete-and-exit): Handle minibuffer prompt.
-
-       * emacs-lisp/lisp-mode.el (eval-defun-1):
-       * emacs-lisp/edebug.el (edebug-eval-defun):
-       Remove unnecessary quotes.
-
-2005-07-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/prolog.el (prolog-eof-string): Doc fixes.
-       (prolog-indent-level): Fix typo in docstring.
-
-       * info.el (Info-history, Info-history-forward)
-       (Info-history-list, Info-speedbar-fetch-file-nodes): Doc fixes.
-
-       * add-log.el (add-change-log-entry):
-       * comint.el (comint-dynamic-list-input-ring)
-       (comint-dynamic-list-completions):
-       * dabbrev.el (dabbrev-expand):
-       * delim-col.el (delimit-columns-rectangle-line):
-       * diff-mode.el (diff-context->unified, diff-reverse-direction)
-       (diff-unified->context):
-       * ediff-init.el (ediff-abbrev-jobname):
-       * ediff-mult.el (ediff-replace-session-status-in-meta-buffer)
-       (ediff-replace-session-activity-marker-in-meta-buffer):
-       * info.el (Info-summary):
-       * lpr.el (printify-region):
-       * printing.el (pr-create-interface):
-       * ps-print.el (ps-print-quote):
-       * ses.el (ses-column-widths, ses-print-cell)
-       (ses-adjust-print-width, ses-center):
-       * shell.el (shell-file-name-quote-list):
-       * strokes.el (strokes-read-stroke, strokes-read-complex-stroke)
-       (strokes-fill-current-buffer-with-whitespace)
-       (strokes-xpm-for-stroke, strokes-list-strokes)
-       (strokes-xpm-char-bit-p, strokes-xpm-for-compressed-string):
-       * term.el (term-dynamic-list-input-ring)
-       (term-dynamic-list-completions):
-       * calc/calc.el (math-format-stack-value):
-       * emacs-lisp/edebug.el (edebug-display-freq-count):
-       * progmodes/delphi.el (delphi-indent-line, delphi-fill-comment)
-       (delphi-new-comment-line):
-       * progmodes/ebnf2ps.el (ebnf-eps-filename, ebnf-trim-right):
-       * progmodes/executable.el (executable-set-magic):
-       * progmodes/python.el (inferior-python-mode):
-       * progmodes/scheme.el (scheme-mode-syntax-table):
-       * progmodes/sh-script.el (sh-maybe-here-document):
-       * progmodes/sql.el (sql-copy-column):
-       * progmodes/tcl.el (tcl-comment-indent, tcl-quote):
-       * textmodes/bibtex.el (bibtex-mode):
-       * textmodes/sgml-mode.el (html-imenu-index, sgml-attributes)
-       (sgml-auto-attributes):
-       * textmodes/table.el (table-insert, table-shorten-cell)
-       (table--generate-source-scan-lines, table-delete-row)
-       (*table--cell-delete-char, table--spacify-frame)
-       (table--horizontally-shift-above-and-below)
-       (table--cell-insert-char, table--cell-blank-str)
-       (table--fill-region-strictly):
-       * textmodes/tex-mode.el (tex-insert-quote, latex-find-indent):
-       * textmodes/texinfo.el (texinfo-insert-quote): "?\ " -> "?\s".
-
-       * add-log.el (change-log):
-       * apropos.el (apropos):
-       * comint.el (comint-completion, comint-source):
-       * dabbrev.el (dabbrev):
-       * delim-col.el (columns):
-       * diff-mode.el (diff-mode):
-       * ediff.el (ediff):
-       * ediff-diff.el (ediff-diff):
-       * ediff-init.el (ediff-highlighting, ediff-merge, ediff-hook):
-       * ediff-mult.el (ediff-mult):
-       * ediff-ptch.el (ediff-ptch):
-       * ediff-wind.el (ediff-window):
-       * facemenu.el (facemenu):
-       * indent.el (indent):
-       * info.el (info):
-       * jka-cmpr-hook.el (compression, jka-compr):
-       * lpr.el (lpr):
-       * outline.el (outlines):
-       * pcmpl-cvs.el (pcmpl-cvs):
-       * pcmpl-rpm.el (pcmpl-rpm):
-       * printing.el (printing):
-       * ps-print.el (postscript, ps-print, ps-print-horizontal)
-       (ps-print-vertical, ps-print-headers, ps-print-font)
-       (ps-print-color, ps-print-face, ps-print-n-up, ps-print-zebra)
-       (ps-print-background, ps-print-printer, ps-print-page)
-       (ps-print-miscellany):
-       * ses.el (ses):
-       * shell.el (shell, shell-directories, shell-faces):
-       * startup.el (initialization):
-       * strokes.el (strokes):
-       * term.el (term):
-       * uniquify.el (uniquify):
-       * w32-vars.el (w32):
-       * calc/calc.el (calc):
-       * emacs-lisp/bytecomp.el (bytecomp):
-       * emacs-lisp/cl-indent.el (lisp-indent):
-       * emacs-lisp/edebug.el (edebug):
-       * emacs-lisp/elp.el (elp):
-       * emacs-lisp/testcover.el (testcover):
-       * emacs-lisp/trace.el (trace):
-       * emulation/viper-ex.el (viper-ex):
-       * emulation/viper-mous.el (viper-mouse):
-       * mail/mailalias.el (mailalias):
-       * mail/supercite.el (supercite, supercite-frames)
-       (supercite-attr, supercite-cite, supercite-hooks):
-       * net/rcompile.el (remote-compile):
-       * net/rlogin.el (rlogin):
-       * obsolete/ooutline.el (outlines):
-       * progmodes/delphi.el (delphi):
-       * progmodes/ebnf2ps.el (postscript, ebnf2ps, ebnf-special)
-       (ebnf-except, ebnf-repeat, ebnf-terminal, ebnf-non-terminal)
-       (ebnf-production, ebnf-shape, ebnf-displacement, ebnf-syntactic)
-       (ebnf-optimization):
-       * progmodes/etags.el (etags):
-       * progmodes/executable.el (executable):
-       * progmodes/idlwave.el (idlwave):
-       * progmodes/pascal.el (pascal):
-       * progmodes/prolog.el (prolog):
-       * progmodes/python.el (python):
-       * progmodes/scheme.el (scheme):
-       * progmodes/sh-script.el (sh, sh-script):
-       * progmodes/sql.el (SQL):
-       * progmodes/tcl.el (tcl):
-       * textmodes/bibtex.el (bibtex, bibtex-autokey):
-       * textmodes/enriched.el (enriched):
-       * textmodes/makeinfo.el (makeinfo):
-       * textmodes/sgml-mode.el (sgml):
-       * textmodes/table.el (table-hooks):
-       * textmodes/tex-mode.el (tex-file, tex-run, tex-view):
-       * textmodes/texinfo.el (texinfo):
-       * textmodes/two-column.el (two-column):
-       Finish `defgroup' description with period.
-
-       * emacs-lisp/cl-indent.el (lisp-indent-maximum-backtracking):
-       * eshell/esh-var.el (eshell-var):
-       * progmodes/vhdl-mode.el (vhdl-testbench):
-       * textmodes/org.el (org): Fix typos in docstrings.
-
-       * emacs-lisp/timer.el (with-timeout): Improve argument/docstring
-       consistency.
-
-       * progmodes/flymake.el (flymake-find-file): Remove.
-       (flymake-float-time): Use `with-no-warnings'.
-       (flymake-check-start-time, flymake-check-was-interrupted)
-       (flymake-err-info, flymake-is-running, flymake-last-change-time)
-       (flymake-new-err-info): `defvar' at compile time.
-
-2005-07-03  Juanma Barranquero  <lekktu@gmail.com>
-
-       * replace.el (occur-hook): Doc fix.
-       (occur-1): Don't call `occur-hook' if there are no matches.
-
-2005-07-03  Richard M. Stallman  <rms@gnu.org>
-
-       * emulation/tpu-edt.el (tpu-original-global-map): Don't copy
-       global-map, save the same map.
-       (global-map): Don't alter it at top level.
-       (tpu-edt-on): Save global map in tpu-original-global-map, then copy.
-       Then alter it here instead.
-       (tpu-edt-off): Set global-map to the saved one.
-
-       * emulation/tpu-edt.el (tpu-emacs19-p): Var deleted.
-       All references simplified.
-       (tpu-lucid-emacs-p): Rename from tpu-lucid-emacs19-p.  Uses changed.
-       (zmacs-regions): Add defvar.
-       (repeat-complex-command-map): Everything about that deleted.
-
-       * textmodes/artist.el (artist-key-is-drawing)
-       (artist-key-endpoint1, artist-key-poly-point-list)
-       (artist-key-shape, artist-key-draw-how, artist-popup-menu-table)
-       (artist-key-compl-table, artist-rb-save-data)
-       (artist-arrow-point-1, artist-arrow-point-2): Move defvars up.
-       Don't put them in eval-when-compile.
-       (artist-set-arrow-points-for-poly): Use `last', not `artist-last'.
-
-       * progmodes/ebrowse.el (ebrowse-revert-tree-buffer-from-file):
-       Use with-no-warnings.
-
-       * net/browse-url.el (dos-windows-version): Add defvar.
-
-       * mail/supercite.el (filladapt-prefix-table): Add defvar.
-
-       * mail/rmailsum.el (rmail-summary-redo): Add defvar.
-       (rmail-summary-mode-map, rmail-summary-overlay): Defvars moved up.
-       (rmail-new-summary-line-count): Rename from new-summary-line-count.
-       Add defvar.
-       (rmail-summary-beginning-of-message): Use with-no-warnings.
-       (rmail-summary-first-message, rmail-summary-last-message): Likewise.
-
-       * emulation/vip.el (vip-replace-string, ex-map, ex-read):
-       Use with-no-warnings.
-
-       * emulation/vi.el (vi-mark-region): Use c-mark-function.
-       (c-mark-function): Add point-moving-unit property.
-       (vi-goto-line): Use with-no-warnings.
-
-       * emulation/edt.el (edt-last-copied-word): Add defvar.
-       (zmacs-region-stays): Likewise.
-       (edt-mark-section-wisely): Use c-mark-function for C.
-       Use makr-defun for Fortran.
-       (time-string): defvar deleted.
-       (edt-display-the-time): Don't set time-string.
-
-       * emacs-lisp/macroexp.el (macroexp-accumulate): Rename arg to var+list.
-
-       * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
-       Don't warn when name is not constant
-       or for defining the group `emacs'.
-
-       * tooltip.el (gud-tooltip-mode): Add defvar.
-
-       * startup.el (default-frame-background-mode): Add defvar.
-
-       * smerge-mode.el (smerge-mode): Add duplicate defvar near top.
-
-       * info.el (tool-bar-map): Add defvar.
-
-       * dired.el (dnd-protocol-alist): Add defvar.
-
-       * dired-aux.el (dired-query): Display question with answer, when
-       the user answers.
-
-       * custom.el (custom-add-option): Doc fix.
-
-       * bookmark.el (Info-current-node, Info-suffix-list): Add defvars.
-
-2005-07-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * font-lock.el (font-lock-regexp-grouping-construct): Fix the
-       bogus name from the last change.
-
-2005-07-02  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * custom.el (custom-declare-variable): Fix typos in comment.
-       (custom-known-themes): Doc fix.
-       (custom-theme-directory): New defcustom.
-       (require-theme): Make it check `custom-theme-directory'.
-
-       * cus-theme.el (custom-new-theme-mode): New function.
-       (custom-theme-name, custom-theme-variables, custom-theme-faces)
-       (custom-theme-description): Add compiler defvars.
-       (customize-create-theme): Add doc to the "*New Custom Theme*"
-       buffer.  Use `custom-new-theme-mode'.
-       (custom-theme-write): Put the created buffer in emacs-lisp-mode
-       and save it to the `custom-theme-directory'.  Make this the
-       default directory of the buffer.
-
-2005-07-02  David Hunter  <hunterd_42@comcast.net>  (tiny change)
-
-       * progmodes/flymake.el (flymake-mode, flymake-mode-off):
-       Fix unbalanced parentheses.
-
-2005-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/flymake.el (flymake-mode-on, flymake-mode-off): Move body
-       into flymake-mode and delegate to flymake-mode.
-
-       * find-file.el (ff-which-function-are-we-in): Clean up.
-
-2005-07-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * replace.el (occur-rename-buffer): Fix docstring.
-
-       * emulation/edt.el (*EDT-keys*, edt-default-global-map)
-       (edt-last-copied-word, edt-learn-macro-count)
-       (edt-orig-page-delimiter, edt-orig-transient-mark-mode)
-       (edt-rect-start-point, edt-user-global-map, rect-start-point)
-       (time-string, zmacs-region-stays):
-       * emulation/edt-mapper.el (edt-save-function-key-map)
-       (EDT-key-name): `defvar' to silence the byte-compiler.
-
-2005-07-02  Martin Rudalics  <rudalics@gmx.at>
-
-       * font-lock.el (font-lock-regexp-grouping-backslash): Rename from
-       font-lock-regexp-backslash.  Doc fix.
-       (font-lock-regexp-backslash-grouping-construct): Rename from
-       font-lock-regexp-backslash-construct.  Doc fix.
-       (lisp-font-lock-keywords-2): Fix highlighting of Elisp regexp
-       grouping constructs.
-
-2005-07-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (bootstrap): Remove the $(EMACS) binary after
-       updating all the prerequisites.
-
-2005-07-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * textmodes/org.el (org-agenda-start-on-weekday)
-       (org-calendar-to-agenda-key, org-agenda-sorting-strategy)
-       (org-agenda-use-time-grid, org-archive-location)
-       (org-allow-space-in-links, org-usenet-links-prefer-google)
-       (org-enable-table-editor, org-export-default-language)
-       (org-export-html-show-new-buffer, org-fill-paragraph)
-       (org-cycle, org-goto-ret, org-goto-left, org-goto-right)
-       (org-goto-quit, org-occur, org-eval-in-calendar)
-       (org-agenda-cleanup-fancy-diary, org-agenda-no-heading-message)
-       (org-agenda-diary-entry, org-remember-help)
-       (org-table-convert-region, org-at-table-p)
-       (org-table-move-row-down, org-table-move-row-up)
-       (org-table-copy-region, org-table-toggle-vline-visibility)
-       (org-table-get-stored-formulas, org-table-get-specials)
-       (org-recalc-commands, org-table-eval-formula)
-       (org-table-formula-substitute-names, orgtbl-make-binding)
-       (org-format-org-table-html, org-format-table-table-html)
-       (org-format-table-table-html-using-table-generate-source)
-       (org-customize): Fix typos in docstrings.
-       (org-level-2, org-at-timestamp-p, org-agenda-day-view)
-       (org-agenda-toggle-diary, org-agenda-toggle-time-grid)
-       (org-back-to-heading): Doc fixes.
-       (org-agenda-toggle-time-grid, org-cmp-category, org-cmp-time)
-       (org-agenda-change-all-lines, org-get-header):
-       Improve argument/docstring consistency.
-       (orgtbl-error): Fix error message.
-
-       * progmodes/flymake.el (flymake-find-possible-master-files)
-       (flymake-master-file-compare, flymake-get-line-err-count)
-       (flymake-highlight-line, flymake-gui-warnings-enabled):
-       Fix typos in docstrings.
-       (flymake-parse-line, flymake-get-project-include-dirs-function)
-       (flymake-get-prev-err-line-no, flymake-goto-prev-error):
-       Doc fixes.
-       (flymake-get-project-include-dirs-function)
-       (flymake-make-err-menu-data):
-       Improve argument/docstring consistency.
-
-2005-07-01  Lute Kamstra  <lute@gnu.org>
-
-       * battery.el (battery-linux-proc-apm): Fix typo in docstring.
-       Catch errors with ignore-errors.  Use temporary buffer.
-       (battery-linux-proc-acpi): Fix typo in docstring.  Document `%r'.
-
-       * facemenu.el (facemenu-unlisted-faces): Delete foreground and
-       background color faces.
-       (facemenu-set-foreground, facemenu-set-background):
-       Use facemenu-set-face-from-menu.
-       (facemenu-set-face-from-menu): Treat face names that start with
-       "fg:" or "bg:" as special.
-       (facemenu-add-new-color): Don't create faces.  Simplify.
-
-2005-06-30  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/crm.el (crm-do-completion): Handle minibuffer prompt.
-       (crm-find-current-element): Likewise.
-
-2005-06-30  Johan Bockg\e,Ae\e(Brd  <bojohan@users.sourceforge.net>
-
-       * help-fns.el (help-do-arg-highlight): Regexp-quote argument names.
-
-2005-06-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * arc-mode.el (archive-extract): Make it work as a mouse binding.
-       (archive-mouse-extract): Make it an obsolete alias.
-       (archive-mode-map): Don't use archive-mouse-extract any more.
-       (archive-mode, archive-extract): write-contents-hooks ->
-       write-contents-functions.
-       (archive-arc-rename-entry, archive-lzh-rename-entry): Remove unused
-       first arg.
-       (archive-rename-entry): Update the call.
-       (archive-zip-summarize): Remove unused var `method'.
-       (archive-lzh-summarize): Remove unused var `creator'.
-
-       * emacs-lisp/debug.el (debug): Quieten Drew Adams by killing the
-       dedicated frame upon exit.
-
-       * arc-mode.el: Bind inhibit-read-only rather than buffer-read-only.
-       (archive-zip-extract, archive-zip-expunge)
-       (archive-zip-update, archive-zip-update-case): Use executable-find.
-       (archive-resummarize, archive-flag-deleted, archive-unmark-all-files):
-       Use restore-buffer-modified-p.
-       (archive-extract, archive-add-new-member, archive-write-file-member):
-       Use with-current-buffer.
-       (archive-lzh-ogm, archive-zip-chmod-entry): Use dolist.
-
-2005-06-30  Andreas Schwab  <schwab@suse.de>
-
-       * progmodes/gud.el (gud-filter): Remove unneeded progn.
-
-2005-06-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * progmodes/sh-script.el (sh-get-kw): `&' also separates words.
-
-2005-06-30  Juri Linkov  <juri@jurta.org>
-
-       * faces.el (vertical-border): Inherit from mode-line-inactive
-       only on tty.
-
-2005-06-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help-fns.el (help-do-arg-highlight): Highlight also -ARG (for
-       example, -NLINES in the `occur' docstring).
-
-       * replace.el (occur-1): When no matches are found, do not set the
-       `buffer-read-only' and modified flags for the occur buffer,
-       because it is deleted.
-
-       * emulation/cua-base.el (cua-check-pending-input)
-       (cua-repeat-replace-region, cua-mode, cua-debug)
-       (cua-auto-tabify-rectangles, cua-inhibit-cua-keys):
-       Fix typos in docstrings.
-
-       * emulation/cua-gmrk.el (cua-toggle-global-mark)
-       (cua-cut-region-to-global-mark)
-       (cua--cut-rectangle-to-global-mark):
-       Remove period from end of messages.
-
-       * emulation/cua-rect.el (cua-do-rectangle-padding):
-       Remove period from end of messages.
-       (cua--rectangle-seq-format): Fix typo in docstring.
-       (cua-sequence-rectangle, cua-fill-char-rectangle):
-       Improve argument/docstring consistency.
-
-2005-06-29  Juri Linkov  <juri@jurta.org>
-
-       * faces.el (default-frame-background-mode): New internal variable.
-       (frame-set-background-mode): Use it.
-
-       * startup.el (normal-top-level): Set default-frame-background-mode
-       instead of frame-background-mode.  Before setting it, test for its
-       nil value.  Remove tests for frame-background-mode and frame
-       parameter `reverse'.  Add test for "unspecified-fg".
-
-       * term/xterm.el (xterm-rxvt-set-background-mode):
-       * term/rxvt.el (rxvt-set-background-mode):
-       Set default-frame-background-mode instead of frame-background-mode.
-
-2005-06-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * simple.el (set-variable): Warn about obsolete user variables.
-
-       * imenu.el (imenu--completion-buffer):
-       * mouse.el (mouse-buffer-menu-alist):
-       * msb.el (msb-invisible-buffer-p):
-       * calendar/diary-lib.el (diary-header-line-format):
-       * emacs-lisp/pp.el (pp-buffer):
-       * progmodes/cperl-mode.el (cperl-do-auto-fill):
-       * textmodes/picture.el (picture-replace-match):
-       Change space constants followed by a sexp to "?\s ".
-
-       * play/decipher.el (decipher-loop-with-breaks):
-       * textmodes/texinfo.el (texinfo-insert-@item): Change space
-       constants "protected" from end of line by a comment to "?\s".
-
-2005-06-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * font-lock.el (save-buffer-state): Use `declare'.
-
-       * progmodes/cperl-mode.el (cperl-find-pods-heres): Don't gratuitously
-       reset the syntax-table to cperl-mode-syntax-table.
-       (cperl-mode): Make _ into word-syntax during font-locking so "print" in
-       "foo_print_bar" is not matched as a reserved keyword.
-
-2005-06-29  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (orgtbl-setup): New function, for delayed
-       setup for the orgtbl commands.
-       (org-calc-default-modes): New option.
-       (orgtbl-make-binding): Use `defun' to get better help display.
-       (org-diary): Call `org-compile-prefix-format'.
-       (org-table-formula-substitute-names): New function.
-       (org-agenda-day-view, org-agenda-week-view): New commands.
-       (org-agenda-toggle-week-view): Command removed.
-       (org-tbl-menu): Split off from org-org-menu.
-       (org-mode): Move removal of outline-mode menus to here.
-       (org-table-formula-debug): New option.
-       (org-table-insert-row): Keep first field if just "#" or "*".
-       (org-mode): Paragraph regexps fixed.
-       (org-table-recalculate-regexp): New constant.
-       (org-table-justify-field-maybe): Avoid replace if not necessary.
-       (org-copy-special, org-cut-special): Use `call-interactively'.
-       (org-table-copy-region): Take region from `interactive' call.
-       (org-trim): Return string even if no match.
-       (org-formula): New face.
-       (org-set-font-lock-defaults): No longer highlight "FIXME".
-       But highlight formula-related fields in table.
-       (org-table-p): Use regexp, not fontification.
-       (org-table-align): Handle white space at end of line.
-       (org-table-formula-evaluate-inline): New option.
-       (org-mode): Auto-wrapping in comment lines turned off.
-       (org-table-copy-down): Evaluate only in copied field, not in
-       destination.
-       (org-table-current-formula): Variable removed.
-       (org-table-store-formulas, org-table-get-stored-formulas)
-       (org-table-modify-formulas, org-table-replace-in-formulas)
-       (org-table-maybe-eval-formula): New functions.
-       (org-table-get-formula): Modify to use stored formulas.
-       (org-table-insert-column, org-table-delete-column)
-       (org-table-move-column): Call `org-table-modify-formulas'.
-       (org-complete): Add completion for keyword formulas.
-       (orgtbl-mode): Pull orgtbl-mode-map to start of
-       minor-mode-map-alist.
-
-2005-06-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/python.el (python-check): Require `compile' before
-       modifying its variables.
-
-       * newcomment.el (comment-indent-default): Don't get fooled by an early
-       end of buffer.
-
-2005-06-28  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el (ps-print-version): Fix version number.
-
-2005-06-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * textmodes/ispell.el (ispell-word): Remove stray parenthesis.
-
-2005-06-28  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-use-local-map): Variable deleted.
-       (flyspell-local-mouse-map): Declaration deleted.
-       (flyspell-mouse-map): Bind only mouse-2.
-       (flyspell-mode-map): Don't test flyspell-use-local-map.
-       (flyspell-overlay-keymap-property-name): Var deleted.
-       (flyspell-mode-on): Don't make local bindings for
-       flyspell-mouse-map and flyspell-mode-map.
-       (make-flyspell-overlay): Unconditionally put on `keymap' text prop.
-
-       * textmodes/ispell.el (ispell-word): Do not ignore short words.
-
-       * progmodes/compile.el (compilation-next-error-function):
-       Don't switch buffers; operate on the current buffer.
-
-       * progmodes/compile.el (compilation-error-file-name)
-       (compilation-warning-file-name, compilation-info-file-name)
-       (compilation-line-number, compilation-column-number): New faces.
-       (compilation-error-face, compilation-warning-face)
-       (compilation-info-face, compilation-line-face)
-       (compilation-column-face): Use them.
-
-       * facemenu.el (facemenu-add-face): Warn when font-lock is active.
-
-       * comint.el (comint-password-prompt-regexp): Accept ", try again".
-
-       * bindings.el (global-map): Bind insertchar and its variants.
-
-2005-06-27  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/artist.el (artist-text-overwrite)
-       (artist-figlet-get-extra-args, artist-text-see-thru): Use read-string.
-
-2005-06-27  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * ps-print.el: It was not working the page selection for printing.
-       Reported by Sebastian Tennant <sebyte@smolny.plus.com>.
-       (ps-print-version): New version 6.6.7.
-       (ps-end-sheet): New fun.
-       (ps-header-sheet, ps-end-job): Call it.
-
-2005-06-27  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * subr.el (add-to-list, add-to-ordered-list): Doc fixes.
-
-2005-06-27  Lute Kamstra  <lute@gnu.org>
-
-       * facemenu.el (facemenu-unlisted-faces): Add foreground and
-       background color faces.
-       (facemenu-get-face): Delete function.
-       (facemenu-set-face-from-menu): Don't call facemenu-get-face.
-       (facemenu-add-new-color): Make second argument mandatory.
-       Create the appropriate face and return it.  Simplify.
-       (facemenu-set-foreground, facemenu-set-background): Don't check if
-       color is defined.  Use return value of facemenu-add-new-color.
-
-2005-06-26  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-filter): Add missing argument to
-       with-selected-window.
-
-2005-06-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Don't automatically add
-       a :require to the defcustom.
-
-       * emacs-lisp/autoload.el (make-autoload): Add the :setter for
-       defcustoms corresponding to minor modes.
-
-2005-06-26  David Ponce  <david@dponce.com>
-
-       * recentf.el: Require tree-widget instead of wid-edit.
-       (recentf-filename-handler): Fix widget :type.
-       (recentf-cancel-dialog, recentf-open-more-files)
-       (recentf-open-files-action): Doc fix.
-       (recentf-dialog-goto-first): New function.
-       (recentf-dialog-mode-map): Set parent keymap first.
-       (recentf-dialog-mode): Define with define-derived-mode.
-       Don't display continuation lines in dialogs.
-       (recentf-edit-list): Rename from recentf-edit-selected-items.
-       (recentf-edit-list-select): Rename from recentf-edit-list-action.
-       Simplify.
-       (recentf-edit-list-validate): New function.
-       (recentf-edit-list): Update accordingly.
-       (recentf-open-files-item-shift): Remove.
-       (recentf-open-files-item): Convert menu elements into tree and
-       link widgets.  Don't create the widgets.
-       (recentf-open-files): Update accordingly.
-       (recentf-save-list): Untabify.
-
-2005-06-25  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * replace.el (keep-lines-read-args): Add INTERACTIVE arg.
-       (keep-lines): Add INTERACTIVE arg.  Never delete lines only
-       partially contained in the active region.  Do not take active
-       region into account when called from Lisp, unless INTERACTIVE arg
-       is non-nil.  Use `forward-line' instead of `beginning-of-line' to
-       avoid trouble with fields.  Make marker point nowhere when no
-       longer used.  Always return nil.  Doc fix.
-       (flush-lines): Add INTERACTIVE arg.  Do not take active region
-       into account when called from Lisp, unless INTERACTIVE arg is
-       non-nil.  Use `forward-line' instead of `beginning-of-line' to
-       avoid trouble with fields.  Make marker point nowhere when no
-       longer used.  Always return nil.  Doc fix.
-       (how-many): Add INTERACTIVE arg.  Make RSTART and REND args
-       interchangeable.  Do not take active region into account when
-       called from Lisp, unless INTERACTIVE arg is non-nil.  Do not print
-       message in echo area when called from Lisp, unless INTERACTIVE arg
-       is non-nil.  Avoid saying "1 occurrences".  Do not use markers.
-       Return the number of matches.  Doc fix.
-       (occur): Doc fix.
-       (perform-replace): Make comment follow double space convention for
-       the sake of `outline-minor-mode'.
-
-       * faces.el (facep): Doc fix.
-
-2005-06-25  Richard M. Stallman  <rms@gnu.org>
-
-       * facemenu.el (facemenu-enable-faces-p): New function.
-       (facemenu-background-menu, facemenu-foreground-menu)
-       (facemenu-face-menu): Add menu-enable property.
-
-       * jka-compr.el (jka-compr-insert-file-contents):
-       Special handling if cannot find the uncompression program.
-
-       * cus-face.el (custom-face-attributes): Add autoload.
-
-       * emacs-lisp/lisp-mode.el (lisp-mode-variables):
-       Bind comment-indent-function locally.
-
-       * window.el (save-selected-window): Use save-current-buffer.
-
-       * subr.el (with-selected-window): Use save-current-buffer.
-
-       * progmodes/gud.el (gud-filter): Simplify using with-selected-window
-       and with-current-buffer.
-
-2005-06-24  Richard M. Stallman  <rms@gnu.org>
-
-       * simple.el (line-move-1): Fix previous change.
-
-2005-06-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * replace.el (occur-1): Set `buffer-read-only' and the
-       buffer-modified flag before running `occur-hook' to protect
-       against unintentional buffer switches that can lead to data loss.
-
-2005-06-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-tooltip-print-command): Indent properly.
-       (gud-gdb-marker-filter): Use font-lock-warning-face for any
-       initial error.
-
-       * progmodes/gdb-ui.el (gdb-send): Remove warning face from errors
-       after fresh input.
-       (gdb-var-create-handler): Put name of expression in quotes.
-
-2005-06-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emacs-lisp/ring.el (ring-elements): Make it return a list of the
-       elements of RING in order, and without bogus nil elements.
-
-2005-06-23  Richard M. Stallman  <rms@gnu.org>
-
-       * simple.el (set-variable): Args renamed; doc fix.
-       (line-move-1): When there are overlays around, use vertical-motion.
-
-       * faces.el (escape-glyph): Use brown against light background.
-       (nobreak-space): Rename from no-break-space.
-       Fix previous change.
-
-       * dired-aux.el (dired-do-copy): Fix arg prompt.
-
-       * mail/sendmail.el (mail-setup-with-from): Fix custom type.
-
-2005-06-23  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * mail/emacsbug.el (report-emacs-bug): Use "X server distributor"
-       rather than "Distributor".
-
-2005-06-23  Lute Kamstra  <lute@gnu.org>
-
-       * emacs-lisp/debug.el (debugger-special-form-p): New defun.
-       (debug-on-entry): Use it.  New interactive declaration that uses
-       function-called-at-point.
-
-2005-06-23  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (save-match-data): Add comment about using evaporate arg
-       to set-match-data.
-
-2005-06-22  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * cus-edit.el (customize-face)
-       (customize-face-other-window): Handle face aliases.
-
-       * faces.el (face-documentation, set-face-attribute)
-       (face-spec-set): Handle face aliases.
-
-2005-06-22  Juanma Barranquero  <lekktu@gmail.com>
-
-       * help-mode.el (help-make-xrefs): If a symbol representing a face
-       name is not followed by the word "face", it could still be a
-       function or variable name, so don't bypass other checks.
-
-2005-06-22  Juri Linkov  <juri@jurta.org>
-
-       * ps-print.el (ps-face-foreground-name, ps-face-background-name):
-       Replace aliased functions with calls where second arg `inherit' is t.
-
-2005-06-22  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-error): New variable.
-       (gdb-error): New function.
-       (gdb-annotation-rules): Act on error-begin and error annotations.
-       (gdb-concat-output): Use font-lock-warning-face for errors.
-
-2005-06-22  Miles Bader  <miles@gnu.org>
-
-       * bindings.el (propertized-buffer-identification): Use renamed
-       `Buffer-menu-buffer' face.
-
-       * faces.el (vertical-border): Rename from `vertical-divider'.
-       (escape-glyph): Change dark-background color back to `cyan'.
-
-2005-06-21  Juri Linkov  <juri@jurta.org>
-
-       * faces.el (face-user-default-spec): Try getting `customized-face'
-       prior to `saved-face'.
-       (frame-background-mode): Refill docstring.
-
-       * emacs-lisp/lisp-mode.el (eval-defun-1):
-       * emacs-lisp/edebug.el (edebug-eval-defun):
-       Set `saved-face' temporarily to nil before calling form.
-       Set `customized-face' to the new spec after that.
-
-2005-06-21  Juanma Barranquero  <lekktu@gmail.com>
-
-       * subr.el (1value, lambda, key-substitution-in-progress):
-       Doc fixes.
-
-       * autoinsert.el (auto-insert-alist):
-       * ses.el (ses-call-printer):
-       * subr.el (noreturn):
-       * emacs-lisp/lisp.el (check-parens):
-       * emacs-lisp/byte-opt.el (byte-optimize-pure-func):
-       * net/browse-url.el (browse-url-mosaic):
-       * progmodes/cc-defs.el (c-safe-scan-lists):
-       * progmodes/ebnf-abn.el (ebnf-abn-lex):
-       * progmodes/ebnf-bnf.el (ebnf-bnf-lex):
-       * progmodes/ebnf-dtd.el (ebnf-dtd-lex):
-       * progmodes/ebnf-ebx.el (ebnf-ebx-lex):
-       * progmodes/ebnf-iso.el (ebnf-iso-lex):
-       * progmodes/ebnf-yac.el (ebnf-yac-lex): Fix spellings.
-
-2005-06-21  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * pcvs-defs.el (cvs-menu): Add cvs-mode-mark and cvs-mode-unmark.
-
-2005-06-21  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * calendar/appt.el (appt-make-list): Activate the package, if
-       not already active (for backwards compatibility).
-
-2005-06-20  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (add-to-ordered-list): Test membership with eq.  Simplify.
-
-2005-06-20  Miles Bader  <miles@gnu.org>
-
-       * faces.el (vertical-divider): New face.
-
-2005-06-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * simple.el (kill-whole-line): Doc fix.
-       (next-error-buffer-p, next-error-find-buffer)
-       (clone-indirect-buffer): Fix typos in docstrings.
-       (comment-line-break-function): Doc fix: don't say variable
-       is automatically buffer-local (it isn't).
-
-2005-06-19  Michael Albinus  <michael.albinus@gmx.de>
-
-       * net/tramp-ftp.el (top):
-       * net/tramp-smb.el (top):
-       * net/tramp-util.el (top):
-       * net/tramp-uu.el (top):
-       * net/tramp-vc.el (top):
-       * net/tramp.el (top): Revert copyright years back to original
-       ones.  Tramp has a life outside GNU Emacs.
-
-2005-06-19  Nick Roberts  <nickrob@snap.net.nz>
-
-       * tooltip.el (tooltip-use-echo-area): Don't make it obsolete.
-
-2005-06-18  Juri Linkov  <juri@jurta.org>
-
-       * progmodes/grep.el (grep-regexp-alist): Use backreference at the
-       end of first regexp to limit the match to the position between
-       line number and source line with same separator character as used
-       between file name and line number.  In the second regexp limit
-       mouse-face area to file name and line number by adding new group
-       for them and referring it in HYPERLINK arg.
-       (grep-regexp-alist, grep-mode-font-lock-keywords): Use shy group.
-       (grep-mode): Set font-lock-lines-before to 0 to not refontify the
-       previous line where grep markers may be already removed.
-
-2005-06-18  Peter Kleiweg  <p.c.j.kleiweg@rug.nl>
-
-       * progmodes/ps-mode.el: Update version and maintainer's email address.
-
-2005-06-18  Steve Youngs  <steve@xemacs.org>
-
-       * net/browse-url.el (browse-url-browser-function)
-       (browse-url-default-browser): Add firefox.
-       (browse-url-firefox-program, browse-url-firefox-arguments)
-       (browse-url-firefox-startup-arguments)
-       (browse-url-firefox-new-window-is-tab): New defcustoms.
-       (browse-url-firefox, browse-url-firefox-sentinel): New functions.
-
-2005-06-17  Richard M. Stallman  <rms@gnu.org>
-
-       * startup.el (command-line): Warn if specified user name has
-       no home directory.
-
-       * term.el (term-get-old-input, term-input-filter, term-input-sender)
-       (term-mode-hook, term-exec-hook, term-escape-char): Doc fixes.
-
-       * longlines.el (longlines-mode, longlines-show-hard-newlines):
-       Doc fixes.
-
-       * faces.el (underline): Try bold if terminal doesn't support underline.
-
-       * mail/sendmail.el (mail-setup-with-from): New variable.
-       (mail-insert-from-field): New function.
-       (sendmail-send-it): Call it.
-       (mail-setup): Optionally call it here.
-
-       * term/linux.el: Call tty-no-underline.
-
-2005-06-17  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emacs-lisp/edebug.el (edebug-goto-here): Doc fix.
-
-2005-06-17  Miles Bader  <miles@gnu.org>
-
-       * ediff-init.el (ediff-current-diff-A, ediff-current-diff-B)
-       (ediff-current-diff-C, ediff-current-diff-Ancestor)
-       (ediff-fine-diff-A, ediff-fine-diff-B, ediff-fine-diff-C)
-       (ediff-fine-diff-Ancestor, ediff-even-diff-A, ediff-even-diff-B)
-       (ediff-even-diff-C, ediff-even-diff-Ancestor, ediff-odd-diff-A)
-       (ediff-odd-diff-B, ediff-odd-diff-C, ediff-odd-diff-Ancestor):
-       Remove "-face" suffix from face names.
-       (ediff-current-diff-face-A, ediff-current-diff-face-B)
-       (ediff-current-diff-face-C, ediff-current-diff-face-Ancestor)
-       (ediff-fine-diff-face-A, ediff-fine-diff-face-B)
-       (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor)
-       (ediff-even-diff-face-A, ediff-even-diff-face-B)
-       (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor)
-       (ediff-odd-diff-face-A, ediff-odd-diff-face-B)
-       (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor):
-       New backward-compatibility aliases for renamed faces.
-       (ediff-current-diff-face-A, ediff-current-diff-face-B)
-       (ediff-current-diff-face-C, ediff-current-diff-face-Ancestor)
-       (ediff-fine-diff-face-A, ediff-fine-diff-face-B)
-       (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor)
-       (ediff-even-diff-face-A, ediff-even-diff-face-B)
-       (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor)
-       (ediff-odd-diff-face-A, ediff-odd-diff-face-B)
-       (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor):
-       Use renamed ediff faces.
-
-       * eshell/esh-test.el (eshell-test-ok, eshell-test-failed):
-       Remove "-face" suffix from face names.
-       (eshell-test-ok-face, eshell-test-failed-face):
-       New backward-compatibility aliases for renamed faces.
-       (eshell-run-test): Use renamed eshell-test faces.
-
-       * eshell/em-prompt.el (eshell-prompt): Remove "-face" suffix from
-       face name.
-       (eshell-prompt-face): New backward-compatibility alias for renamed
-       face.
-       (eshell-emit-prompt): Use renamed eshell-prompt face.
-
-       * eshell/em-ls.el (eshell-ls-directory, eshell-ls-symlink)
-       (eshell-ls-executable, eshell-ls-readonly, eshell-ls-unreadable)
-       (eshell-ls-special, eshell-ls-missing, eshell-ls-archive)
-       (eshell-ls-backup, eshell-ls-product, eshell-ls-clutter):
-       Remove "-face" suffix from face names.
-       (eshell-ls-directory-face, eshell-ls-symlink-face)
-       (eshell-ls-executable-face, eshell-ls-readonly-face)
-       (eshell-ls-unreadable-face, eshell-ls-special-face)
-       (eshell-ls-missing-face, eshell-ls-archive-face)
-       (eshell-ls-backup-face, eshell-ls-product-face)
-       (eshell-ls-clutter-face):
-       New backward-compatibility aliases for renamed faces.
-       (eshell-ls-decorated-name): Use renamed eshell-ls faces.
-
-       * progmodes/cc-fonts.el (c-nonbreakable-space-face):
-       Remove "-face" suffix from face name.
-       (c-cpp-matchers): Use the variable `c-nonbreakable-space-face'
-       instead of literal face.
-
-2005-06-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/warnings.el (display-warning, lwarn)
-       (warning-minimum-log-level): Doc fixes.
-       (warning-minimum-level, warning-minimum-log-level):
-       Add :debug to :type choices.
-
-       * progmodes/ada-mode.el (ada-format-paramlist)
-       (ada-get-indent-case, ada-check-matching-start)
-       (ada-check-defun-name, ada-goto-matching-decl-start)
-       (ada-goto-matching-start, ada-goto-matching-end, ada-tab)
-       (ada-untab, ada-move-to-start, ada-fill-comment-paragraph)
-       (ada-make-subprogram-body): Follow error conventions.
-       (ada-case-exception-file, ada-indent-comment-as-code)
-       (ada-indent-handle-comment-special, ada-indent-renames)
-       (ada-indent-return, ada-search-directories-internal)
-       (ada-tab-policy, ada-case-exception-substring)
-       (ada-other-file-alist, ada-matching-start-re)
-       (ada-matching-decl-start-re, ada-contextual-menu-last-point)
-       (ada-imenu-generic-expression, ada-compile-goto-error)
-       (ada-in-comment-p, ada-in-string-p, ada-in-string-or-comment-p)
-       (ada-popup-menu, ada-add-extensions, ada-mode)
-       (ada-region-selected, ada-create-case-exception)
-       (ada-create-case-exception-substring, ada-after-keyword-p)
-       (ada-activate-keys-for-case, ada-adjust-case-region)
-       (ada-adjust-case-buffer, ada-format-paramlist)
-       (ada-scan-paramlist, ada-insert-paramlist)
-       (ada-indent-newline-indent)
-       (ada-indent-newline-indent-conditional)
-       (ada-justified-indent-current, ada-goto-previous-word)
-       (ada-indent-current, ada-get-indent-open-paren)
-       (ada-get-indent-paramlist, ada-get-indent-end)
-       (ada-get-indent-case, ada-get-indent-when, ada-get-indent-if)
-       (ada-get-indent-block-start, ada-get-indent-subprog)
-       (ada-get-indent-noindent, ada-get-indent-label)
-       (ada-get-indent-loop, ada-get-indent-type, ada-goto-stmt-start)
-       (ada-search-prev-end-stmt, ada-goto-next-non-ws)
-       (ada-goto-stmt-end, ada-goto-next-word)
-       (ada-check-matching-start, ada-check-defun-name)
-       (ada-goto-matching-decl-start, ada-goto-matching-start)
-       (ada-goto-matching-end, ada-search-ignore-string-comment)
-       (ada-in-decl-p, ada-looking-at-semi-or)
-       (ada-looking-at-semi-private, ada-in-paramlist-p)
-       (ada-in-open-paren-p, ada-tab, ada-indent-current-function)
-       (ada-untab-hard, ada-move-to-start, ada-move-to-end)
-       (ada-next-procedure, ada-previous-procedure, ada-next-package)
-       (ada-previous-package, ada-create-menu)
-       (ada-fill-comment-paragraph-justify)
-       (ada-fill-comment-paragraph-postfix, ada-fill-comment-paragraph)
-       (ada-other-file-name, ada-last-which-function-line)
-       (ada-last-which-function-subprog, ada-which-function)
-       (ada-get-body-name, ada-outline-level, ada-narrow-to-defun)
-       (ada-gen-treat-proc, ada-check-emacs-version)
-       (ada-continuation-indent, ada-align-region-separate):
-       Fix typos in docstrings.
-       (ada-adjust-case, ada-adjust-case-interactive): Doc fixes.
-
-2005-06-16  Lute Kamstra  <lute@gnu.org>
-
-       * simple.el (fundamental-mode): Run after-change-major-mode-hook
-       conditionally.
-
-2005-06-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * comint.el (comint-replace-by-expanded-filename)
-       (comint-prompt-regexp, comint-delimiter-argument-list)
-       (comint-preinput-scroll-to-bottom):
-       * info.el (Info-hide-cookies-node):
-       * ls-lisp.el (ls-lisp-classify):
-       * find-file.el (ff-search-directories, ff-special-constructs)
-       (ff-find-other-file):
-       * font-lock.el (font-lock-keywords):
-       * shell.el (shell-prompt-pattern)
-       (shell-dynamic-complete-functions, shell-mode)
-       (shell-delimiter-argument-list):
-       * term.el (term-replace-by-expanded-filename)
-       (term-prompt-regexp, term-delimiter-argument-list):
-       * woman.el (woman-ignore, woman0-if):
-       * emacs-lisp/derived.el (derived-mode-init-mode-variables):
-       * emacs-lisp/elint.el (elint-init-env):
-       * emacs-lisp/regexp-opt.el (regexp-opt-depth):
-       * eshell/esh-mode.el (eshell-preinput-scroll-to-bottom):
-       * language/ethio-util.el (ethio-tilde-escape)
-       (ethio-use-three-dot-question):
-       * net/zone-mode.el (zone-mode-load-time-setup):
-       * progmodes/cc-align.el (c-lineup-argcont):
-       * progmodes/cc-awk.el (c-awk-beginning-of-defun):
-       * progmodes/cperl-mode.el (cperl-set-style-back):
-       * progmodes/inf-lisp.el (inferior-lisp-prompt):
-       * progmodes/vhdl-mode.el (vhdl-beginning-of-libunit):
-       Fix spellings in docstrings.
-
-       * textmodes/sgml-mode.el (sgml-calculate-indent, html-tag-help):
-       * progmodes/modula2.el (m2-for): Fix spellings.
-
-       * menu-bar.el (menu-bar-games-menu): Fix typo in menu help string.
-
-       * simple.el (undo-more): Don't use `format' on `error' arguments.
-       Improve argument/docstring consistency.
-       (pending-undo-list): Doc fix.
-
-       * smerge-mode.el (smerge-ensure-match):
-       * emulation/vip.el (vip-ex):
-       * net/zone-mode.el (zone-mode-update-serial):
-       * progmodes/idlwave.el (idlwave-complete):
-       * progmodes/vhdl-mode.el (vhdl-visit-file)
-       (vhdl-compose-wire-components):
-       Don't use `format' on `error' arguments.
-
-       * tooltip.el (tooltip-start-delayed-tip, tooltip-timeout)
-       (tooltip-use-echo-area, tooltip-process-prompt-regexp)
-       (tooltip-help-tips): Fix typos in docstrings.
-
-2005-06-16  David Ponce  <david@dponce.com>
-
-       * tree-widget.el (tree-widget-value-create): Simplify last change.
-
-2005-06-15  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * ido.el (ido-incomplete-regexp): New variable.
-       (ido-set-matches-1): Handle invalid-regexp error and set
-       ido-incomplete-regexp.
-       (ido-incomplete-regexp): New face.
-       (ido-completions): Use it.
-       (ido-complete, ido-exit-minibuffer, ido-completions):
-       Handle incomplete regexps.
-       (ido-completions): Add check for complete match when entering a regexp.
-
-2005-06-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * subr.el (add-to-ordered-list): Use a weak hash-table to avoid leaks.
-
-2005-06-15  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-Preamble): Enclose BibTeX preamble
-       by field delimiters.
-
-2005-06-15  David Ponce  <david@dponce.com>
-
-       * tree-widget.el: eval-and-compile inlined functions so they will
-       be available at run-time too.
-       (tree-widget-super-format-handler)
-       (tree-widget-format-handler): Remove.
-       (tree-widget-value-create): Handle the :indent property.
-
-2005-06-15  Miles Bader  <miles@gnu.org>
-
-       * progmodes/which-func.el (which-func): Only inherit
-       `font-lock-function-name-face' when that makes sense against the
-       default mode-line face, otherwise set the face color explicitly.
-
-       * progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl
-       faces instead of (non-existent) variables.
-
-2005-06-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * iswitchb.el (iswitchb-to-end): Replace mapcar with dolist.
-       (iswitchb-get-matched-buffers): Likewise.  Simplify.
-
-2005-06-14  Miles Bader  <miles@gnu.org>
-
-       * progmodes/ld-script.el (ld-script-location-counter):
-       Remove "-face" suffix from face name.
-       (ld-script-location-counter-face):
-       New backward-compatibility alias for renamed face.
-       (ld-script-location-counter-face): Use renamed face.
-
-       * progmodes/cperl-mode.el (cperl-nonoverridable, cperl-array)
-       (cperl-hash): Remove "-face" suffix from face names.
-       (cperl-nonoverridable-face, cperl-array-face, cperl-hash-face):
-       New backward-compatibility aliases for renamed faces.
-       (cperl-find-pods-heres, cperl-init-faces, cperl-ps-print-init)
-       (cperl-ps-print-face-properties): Use renamed cperl-mode faces.
-
-       * progmodes/which-func.el (which-func): Remove "-face" suffix from face
-       name.
-       (which-func-face): New backward-compatibility alias for renamed face.
-       (which-func-format): Use renamed which-func face.
-
-       * progmodes/vhdl-mode.el (vhdl-prompt, vhdl-attribute, vhdl-enumvalue)
-       (vhdl-function, vhdl-directive, vhdl-reserved-word)
-       (vhdl-translate-off): Remove "-face" suffix and "font-lock-" from face
-       names.
-       (vhdl-speedbar-entity, vhdl-speedbar-architecture)
-       (vhdl-speedbar-configuration, vhdl-speedbar-package)
-       (vhdl-speedbar-library, vhdl-speedbar-instantiation)
-       (vhdl-speedbar-subprogram, vhdl-speedbar-entity-selected)
-       (vhdl-speedbar-architecture-selected)
-       (vhdl-speedbar-configuration-selected)
-       (vhdl-speedbar-package-selected)
-       (vhdl-speedbar-instantiation-selected): Remove "-face" suffix from face
-       names.
-       (vhdl-font-lock-keywords-2, vhdl-font-lock-keywords-5):
-       Use renamed faces.
-       (vhdl-prompt-face, vhdl-attribute-face, vhdl-enumvalue-face)
-       (vhdl-function-face, vhdl-directive-face, vhdl-reserved-words-face)
-       (vhdl-translate-off-face): Variables renamed to remove "font-lock-".
-       Use renamed faces.
-       (syntax-alist): Don't use "font-lock-" or "-face" in generated face
-       names.
-       (vhdl-font-lock-init, vhdl-ps-print-settings): Use renamed faces.
-       (vhdl-speedbar-insert-hierarchy, vhdl-speedbar-expand-entity)
-       (vhdl-speedbar-expand-package, vhdl-speedbar-update-current-unit)
-       (vhdl-speedbar-make-inst-line, vhdl-speedbar-make-pack-line)
-       (vhdl-speedbar-make-subpack-line, vhdl-speedbar-make-subprogram-line)
-       (vhdl-speedbar-item-info, vhdl-speedbar-check-unit): Use renamed faces.
-
-       * progmodes/sh-script.el (sh-heredoc): Remove "-face" suffix from
-       face name.
-       (sh-heredoc-face): New backward-compatibility alias for renamed face.
-       (sh-heredoc-face): Use renamed sh-heredoc face.
-
-       * progmodes/idlw-help.el (idlwave-help-link):
-       Remove "-face" suffix from face name.
-       (idlwave-help-link-face):
-       New backward-compatibility alias for renamed face.
-       (idlwave-highlight-linked-completions): Use renamed idlwave-help faces.
-
-       * progmodes/idlw-shell.el (idlwave-shell-bp-face)
-       (idlwave-shell-disabled-bp): Remove "-face" suffix from face names.
-       (idlwave-shell-bp-face, idlwave-shell-disabled-bp):
-       New backward-compatibility aliases for renamed faces.
-       (idlwave-shell-disabled-breakpoint-face)
-       (idlwave-shell-breakpoint-face): Use renamed idlwave-shell faces.
-
-       * progmodes/flymake.el (flymake-errline, flymake-warnline):
-       Remove "-face" suffix from face names.
-       (flymake-errline-face, flymake-warnline-face):
-       New backward-compatibility aliases for renamed faces.
-       (flymake-highlight-line): Use renamed flymake faces.
-
-       * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
-       (ebrowse-file-name, ebrowse-default, ebrowse-member-attribute)
-       (ebrowse-member-class, ebrowse-progress):
-       Remove "-face" suffix from face names.
-       (ebrowse-tree-mark-face, ebrowse-root-class-face)
-       (ebrowse-file-name-face, ebrowse-default-face)
-       (ebrowse-member-attribute-face, ebrowse-member-class-face)
-       (ebrowse-progress-face):
-       New backward-compatibility aliases for renamed faces.
-       (ebrowse-show-progress, ebrowse-show-file-name-at-point)
-       (ebrowse-set-mark-props, ebrowse-draw-tree-fn)
-       (ebrowse-draw-member-buffer-class-line, ebrowse-draw-member-long-fn)
-       (ebrowse-draw-member-short-fn): Use renamed ebrowse faces.
-
-       * progmodes/antlr-mode.el (antlr-default, antlr-keyword,
-       antlr-syntax)
-       (antlr-ruledef, antlr-tokendef, antlr-ruleref, antlr-tokenref)
-       (antlr-literal): Remove "-face" suffix and "font-lock-" from face
-       names.
-       (antlr-font-lock-default-face, antlr-font-lock-keyword-face)
-       (antlr-font-lock-syntax-face, antlr-font-lock-ruledef-face)
-       (antlr-font-lock-tokendef-face, antlr-font-lock-ruleref-face)
-       (antlr-font-lock-tokenref-face, antlr-font-lock-literal-face): New
-       backward-compatibility aliases for renamed faces.
-       (antlr-default-face, antlr-keyword-face, antlr-syntax-face)
-       (antlr-ruledef-face, antlr-tokendef-face, antlr-ruleref-face)
-       (antlr-tokenref-face, antlr-literal-face): Variables renamed to
-       remove "font-lock-".  Use renamed antlr-mode faces.
-       (antlr-font-lock-additional-keywords): Use renamed faces.  Replace
-       literal face-names with face variable references.
-
-       * buff-menu.el (Buffer-menu-buffer): Remove "-face" suffix from
-       face name.
-       (Buffer-menu-buffer-face): New backward-compatibility alias for
-       renamed face.
-       (list-buffers-noselect): Use renamed Buffer-menu-buffer face.
-
-2005-06-15  Daniel Pfeiffer  <occitan@esperanto.org>
-
-       * progmodes/make-mode.el (makefile-space, makefile-makepp-perl):
-       Eliminate "-face" suffix.
-       (makefile-targets): Inherit from font-lock-function-name-face and
-       eliminate "-face" suffix.
-       (makefile-shell): Remove attributes and eliminate "-face" suffix.
-       (makefile-*-font-lock-keywords): Append makefile-targets in rule
-       actions, instead of prepending, to make it less visible.
-       (makefile-previous-dependency, makefile-match-dependency):
-       Don't match a target on a continuation line.
-
-       * files.el (auto-mode-alist): Put Makefile in gmake mode.
-
-2005-06-15  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (menu): Re-order menu items.
-       (gdb-tooltip-print): Respect tooltip-use-echo-area.
-
-       * progmodes/gud.el (tooltip-use-echo-area): Remove alias.
-       Define in tooltip.el.
-       (gud-tooltip-process-output): Respect tooltip-use-echo-area.
-       (gud-tooltip-tips): Respect tooltip-use-echo-area and
-       gud-tooltip-echo-area.
-
-       * tooltip.el (tooltip-use-echo-area): Restore from gud.el for
-       backward compatibility and make obsolete.
-       (tooltip-help-tips): Use tooltip-use-echo-area.
-       (tooltip-show-help-function): Rename to...
-       (tooltip-show-help): ...this, because it is a function.
-       (tooltip-mode, tooltip-help-message): Call tooltip-show-help.
-
-2005-06-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emacs-lisp/edebug.el (edebug-all-defs, edebug-initial-mode)
-       (edebug-print-length, edebug-print-level, edebug-print-circle)
-       (edebug-modify-breakpoint, edebug-eval-last-sexp)
-       (edebug-eval-print-last-sexp): Doc fixes.
-
-2005-06-14  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-mode): Make a new keymap every time we enable ido,
-       as the coverage buffer/file/both may change.
-
-2005-06-14  Lute Kamstra  <lute@gnu.org>
-
-       * net/ange-ftp.el (internal-ange-ftp-mode): Use delay-mode-hooks
-       and run-mode-hooks.  Simplify.
-
-       * mail/rmailedit.el (rmail-edit-mode):
-       * progmodes/octave-inf.el (inferior-octave-mode):
-       * progmodes/sql.el (sql-interactive-mode): Use delay-mode-hooks.
-
-       * recentf.el (recentf-dialog-mode): Use kill-all-local-variables
-       and run-mode-hooks.
-       (recentf-edit-list, recentf-open-files): Don't call
-       kill-all-local-variables directly.
-
-       * emacs-lisp/debug.el (debug-on-entry): Fix docstring.
-
-2005-06-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/byte-run.el (make-obsolete)
-       (define-obsolete-function-alias): Rename arguments FUNCTION and
-       NEW to OBSOLETE-NAME and CURRENT-NAME respectively.
-       (make-obsolete-variable, define-obsolete-variable-alias):
-       Rename arguments VARIABLE and NEW to OBSOLETE-NAME and CURRENT-NAME
-       respectively.
-
-       * isearchb.el (isearchb-activate):
-       * pcvs.el (cvs-mode):
-       * ses.el (ses-load):
-       * vc-arch.el (vc-arch-checkin, vc-arch-diff):
-       * net/tramp.el (tramp-find-file-exists-command)
-       (tramp-find-shell):
-       * progmodes/ada-mode.el (ada-create-case-exception)
-       (ada-create-case-exception-substring, ada-make-subprogram-body):
-       * progmodes/idlw-shell.el (idlwave-shell-move-to-bp):
-       * progmodes/idlwave.el (idlwave-complete-class-structure-tag-help):
-       * progmodes/vhdl-mode.el (vhdl-speedbar-place-component):
-       * textmodes/org.el (org-promote, org-evaluate-time-range)
-       (org-agenda-next-date-line, org-agenda-previous-date-line)
-       (org-agenda-error, org-open-at-point, org-table-move-row)
-       (org-format-table-table-html-using-table-generate-source)
-       (org-shiftcursor-error, org-ctrl-c-ctrl-c):
-       * textmodes/reftex.el (reftex-access-scan-info):
-       * textmodes/reftex-toc.el (reftex-toc-dframe-p)
-       (reftex-toc-promote-prepare): Follow error conventions.
-
-       * diff-mode.el (diff-mode): Fix typo in docstring.
-
-       * forms.el (forms--intuit-from-file): Fix reference to
-       `forms-number-of-fields' in error message.
-       (forms-print): Fix quoting in error message.
-
-       * forms.el (forms-mode):
-       * emulation/vi.el (vi-goto-insert-state):
-       * progmodes/flymake.el (flymake-new-err-info)
-       (flymake-start-syntax-check-for-current-buffer)
-       (flymake-simple-cleanup):
-       * eshell/esh-var.el (eshell/export):
-       * progmodes/gud.el (xdb):
-       * textmodes/flyspell.el (flyspell-incorrect-hook)
-       (flyspell-maybe-correct-transposition)
-       (flyspell-maybe-correct-doubling): Fix quoting in docstring.
-
-2005-06-13  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emacs-lisp/debug.el (cancel-debug-on-entry): Mention default in
-       minibuffer prompt.
-
-2005-06-13  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (add-to-ordered-list): New defun.
-
-       * emulation/cua-base.el (cua-mode): Use add-to-ordered-list to
-       add cua--keymap-alist to emulation-mode-map-alists.
-
-2005-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * subr.el (complete-in-turn): New macro.
-       (dynamic-completion-table, lazy-completion-table): Add debug info.
-
-       * faces.el (read-face-name): Use complete-in-turn complete non-aliases
-       in preference to face aliases.
-
-       * textmodes/fill.el (fill-match-adaptive-prefix): New function.
-       (fill-context-prefix): Use it to avoid guessing absurdly long prefixes.
-       Remove unused vars `start' and `firstline'.
-       (fill-nobreak-p): Fix line-move-invisible -> line-move-invisible-p.
-       (justify-current-line, fill-individual-paragraphs): Remove unused vars.
-
-2005-06-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * cus-start.el (all): Don't complain about missing GTK-related
-       variables, unless either `gtk' is boundp or this isn't a
-       `windows-nt' build.
-
-2005-06-13  Lute Kamstra  <lute@gnu.org>
-
-       * abbrev.el (edit-abbrevs-mode): Use kill-all-local-variables and
-       run-mode-hooks.
-
-       * ediff-mult.el (ediff-meta-mode):
-       * ediff-util.el (ediff-mode): Use run-mode-hooks.
-
-       * ledit.el (ledit-mode): Use delay-mode-hooks.
-
-       * woman.el (woman-mode-line-format): Delete constant.
-       (woman-mode-map): Initialize it properly.
-       (woman-mode): Set mode-class property to special.
-       Use delay-mode-hooks and run-mode-hooks.  Use the right keymap.
-       Set major-mode and mode-name.  Don't set mode-line-format directly.
-       (Man-getpage-in-background): Don't reference woman-mode-line-format.
-
-       * emacs-lisp/debug.el (cancel-debug-on-entry): Make the empty
-       string argument obsolete.
-
-2005-06-13  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-CUA-compatible): New option.
-       (org-disputed-keys): New variable.
-       (org-key): New function.
-       (orgtbl-make-binding): Add docstring to the created function.
-       (org-mode): Set paragraph start/separate regexps.
-       (orgtbl-mode): Don't start `orgtbl-mode' in `org-mode' buffers.
-       (org-archive-location, org-archive-mark-done)
-       (org-archive-stamp-time): New options.
-       (org-archive-subtree): New command.
-       (org-fill-paragraph): New function.
-       (org-mode): Set `fill-paragraph-function' to `org-fill-paragraph'.
-       (org-fake-empty-table-line): Function removed.
-       (org-format-org-table-html): Do not create empty table lines at
-       separator lines.  Improved table header treatment.
-       (org-link-format): New option.
-       (org-make-link): New function.
-       (org-insert-link, org-store-link): Use org-make-link.
-       (org-open-file): Quote file name for shell command, to allow
-       spaces in file names.
-       (org-link-regexp): Fix bug with mailto link.
-       (org-link-maybe-angles-regexp, org-protected-link-regexp):
-       New constants.
-       (org-export-as-html): Deal with the optional angles around a link.
-       Better treatment of file: links.
-       (org-open-at-point): Replace @{ and @} with < and >.
-       (org-run-mode-hooks): Function removed.
-       (org-agenda-mode): No longer use `org-run-mode-hooks'.
-
-2005-06-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-registers-mode): Let gdbmi use
-       MI command -data-list-register-values.
-       (gdb-post-prompt): Indent properly.
-
-2005-06-13  Juanma Barranquero  <lekktu@gmail.com>
-
-       * hilit-chg.el (highlight-changes-colors): Rename from
-       `highlight-changes-colours'.
-       (highlight-changes-colours): Keep as obsolete alias.
-       (highlight-changes-face-list): Doc fix.
-       (hilit-chg-make-list): Use `highlight-changes-colors'.
-
-2005-06-12  Mark A. Hershberger  <mah@everybody.org>
-
-       * progmodes/cperl-mode.el (cperl-mode): Remove stray paren in
-       defun-prompt-regexp.
-
-2005-06-12  Eli Zaretskii  <eliz@gnu.org>
-
-       * loadup.el: Don't say we are dumping under 2 names on windows-nt
-       and cygwin.
-
-       * makefile.w32-in (bootstrap-clean-CMD, bootstrap-clean-SH):
-       Don't use an old loaddefs.el, as in Makefile.in.
-
-2005-06-12  Lute Kamstra  <lute@gnu.org>
-
-       * Makefile.in (bootstrap-prepare): Don't use an old loaddefs.el.
-
-       * man.el (Man-mode-map): Initialize it properly.
-       (Man-mode): Set mode-class property to special.
-
-       * calendar/calendar.el (calendar-mode): Use run-mode-hooks.
-
-2005-06-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * menu-bar.el (menu-bar-make-toggle): Remove stray backslash.
-       A newline is needed in the docstring there.
-
-       * emacs-lisp/debug.el (debug-on-entry, cancel-debug-on-entry):
-       Doc fixes.
-
-2005-06-11  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
-
-       * printing.el: Doc fix.  The menubar is no more changed when printing
-       is loaded, it only changes when pr-menu-bind or pr-update-menus is
-       called.  Now, the menubar changing will work in Emacs 20, 21 and 22.
-       (pr-version): New version number (6.8.4).
-       (pr-menu-bind): New command.
-       (pr-update-menus): Docstring and code fix.
-       (pr-menu-print-item): Now is a global var in Emacs and XEmacs.
-       Docstring fix.
-       (pr-txt-printer-alist, pr-ps-printer-alist, pr-gv-command)
-       (pr-gs-command, pr-gs-switches, pr-ps-utility-alist): Docstring fix.
-
-2005-06-11  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs-lisp/ewoc.el: Doc fixes for public funcs:
-       "Returns" to "return", document useful return values, etc.
-
-2005-06-11  Alan Mackenzie  <acm@muc.de>
-
-       * fill.el (fill-context-prefix): Try `adaptive-fill-function'
-       BEFORE `adaptive-fill-regexp' when determining a fill prefix.
-       (adaptive-file-function): Minor amendment to doc-string.
-
-2005-06-11  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
-
-       * thumbs.el (thumbs-per-line, thumbs-thumbsdir-max-size)
-       (thumbs-relief, thumbs-margin, thumbs-image-resizing-step):
-       Fix :type--it is `integer', not `string'.
-
-       * faces.el (modeline-highlight): Rename from (the erroneous)
-       `modeline-higilight'.
-
-2005-06-11  Lute Kamstra  <lute@gnu.org>
-
-       * emacs-lisp/edebug.el (edebug-eval-mode-map): Don't copy
-       lisp-interaction-mode-map but make it the parent.
-       (edebug-eval-mode): Use define-derived-mode.
-
-2005-06-11  Andreas Schwab  <schwab@suse.de>
-
-       * bindings.el: Add binding of `ESC functionkey' for every
-       `M-functionkey'.
-       * hexl.el (hexl-mode-map): Likewise.
-
-2005-06-10  Michael Hotchin  <michael@hotchin.net>  (tiny change)
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist)
-       [msft]: update regexp for newer msft compilers.
-
-2005-06-10  Mark A. Hershberger  <mah@everybody.org>
-
-       * xml.el (start-chars, xml-parse-dtd): Add the ability to skip
-       ATTLIST portions of included DTDs.
-       (xml-parse-dtd): Eliminate use of inefficient match-data.
-
-2005-06-10  Miles Bader  <miles@gnu.org>
-
-       * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
-       (mpuz-text): Remove "-face" suffix from face names.
-       (mpuz-unsolved-face, mpuz-solved-face, mpuz-trivial-face)
-       (mpuz-text-face): New backward-compatibility aliases for renamed faces.
-       (mpuz-create-buffer, mpuz-paint-digit): Use renamed mpuz faces.
-
-       * play/gomoku.el (gomoku-O, gomoku-X):
-       Remove "-face" suffix from face names.
-       (gomoku-font-lock-O-face, gomoku-font-lock-X-face):
-       New backward-compatibility aliases for renamed faces.
-       (gomoku-font-lock-keywords): Use renamed gomoku faces.
-
-2005-06-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * thumbs.el: Fixes for changes of 2005-06-09.
-       (thumbs-thumbsdir): Force `thumbs-thumbsdir' to be interpretable
-       as a directory.
-       (thumbs-thumbname): Remove directory separator from format string;
-       `thumbs-thumbsdir' now returns a valid directory name.
-       (thumbs-temp-dir): New defsubst.
-       (thumbs-temp-file, thumbs-resize-image, thumbs-modify-image):
-       Use it.
-
-       * cus-edit.el (minibuffer):
-       * files.el (make-backup-file-name-function):
-       * filesets.el (filesets-external-viewers):
-       * hilit-chg.el (highlight-changes-colours)
-       (highlight-changes-face-list, highlight-changes-rotate-faces):
-       * ielm.el (ielm-dynamic-return, inferior-emacs-lisp-mode):
-       * kmacro.el (kmacro-call-macro):
-       * log-edit.el (log-edit-changelog-full-paragraphs):
-       * mouse.el (mouse-1-click-follows-link):
-       * skeleton.el (skeleton-autowrap):
-       * subr.el (insert-for-yank-1):
-       * tempo.el (tempo-insert-region):
-       * terminal.el (terminal-emulator):
-       * time.el (display-time-mail-face):
-       * vc.el (vc-annotate):
-       * vcursor.el (vcursor-copy-line):
-       * woman.el (woman-bold-headings, woman-ignore)
-       (woman-default-faces, woman-monochrome-faces):
-       * calendar/todo-mode.el (todo-insert-threshold):
-       * emulation/pc-select.el (pc-select-selection-keys-only)
-       (pc-selection-mode):
-       * emulation/vip.el (vip-find-char-forward):
-       * emulation/viper-cmd.el (viper-find-char-forward):
-       * international/mule-cmds.el
-       (select-safe-coding-system-accept-default-p)
-       (input-method-exit-on-invalid-key):
-       * international/mule-diag.el (describe-coding-system):
-       * international/ucs-tables.el (unify-8859-on-encoding-mode):
-       * net/browse-url.el (browse-url-xterm-program):
-       * obsolete/lazy-lock.el (lazy-lock-mode):
-       * progmodes/cperl-mode.el (cperl-info-on-command-no-prompt)
-       (cperl-mode):
-       * progmodes/cpp.el (cpp-face-light-name-list)
-       (cpp-face-dark-name-list):
-       * progmodes/delphi.el (delphi-newline-always-indents):
-       Fix spellings in docstrings.
-
-       * ido.el (ido-mode, ido-file-extensions-order)
-       (ido-default-file-method, ido-default-buffer-method)
-       (ido-max-prospects, ido-slow-ftp-hosts, ido-setup-hook)
-       (ido-decorations, ido-read-file-name-as-directory-commands)
-       (ido-read-file-name-non-ido, ido-work-directory-list)
-       (ido-ignore-item-temp-list, ido-current-directory)
-       (ido-magic-forward-char, ido-enter-find-file)
-       (ido-enter-switch-buffer, ido-visit-buffer, ido-switch-buffer)
-       (ido-find-file, ido-read-buffer): Fix typos in docstrings.
-
-2005-06-10  Lute Kamstra  <lute@gnu.org>
-
-       * play/dunnet.el (dun-mode): Use define-derived-mode.
-       (dungeon-mode-map): Rename to dun-mode-map.  Keep old name as an
-       obsolete alias.
-
-       * play/doctor.el (doctor-mode-map): Remove defvar.
-       (doctor-mode): Use define-derived-mode.
-
-       * mail/mspools.el (mspools-mode):
-       * net/eudc-hotlist.el (eudc-hotlist-mode):
-       * play/blackbox.el (blackbox-mode): Use run-mode-hooks.
-
-2005-06-10  Miles Bader  <miles@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
-       Remove "-face" suffix from face names.
-       (flyspell-incorrect-face, flyspell-duplicate-face):
-       New backward-compatibility aliases for renamed faces.
-       (flyspell-mode-on, make-flyspell-overlay)
-       (flyspell-highlight-incorrect-region)
-       (flyspell-highlight-duplicate-region)
-       (flyspell-display-next-corrections)
-       (flyspell-auto-correct-previous-word): Use renamed flyspell faces.
-
-       * textmodes/texinfo.el (texinfo-heading): Remove "-face" suffix
-       from face name.
-       (texinfo-heading-face): New backward-compatibility alias for
-       renamed face.
-       (texinfo-heading-face): Use renamed texinfo-heading face.
-
-       * textmodes/tex-mode.el (tex-math, tex-verbatim): Remove "-face"
-       suffix from face names.
-       (tex-math-face, tex-verbatim-face):
-       New backward-compatibility aliases for renamed faces.
-       (tex-math-face, tex-verbatim-face): Use renamed tex-mode faces.
-       (tex-insert-quote): Use `tex-verbatim-face' variable instead of
-       literal face name.
-
-       * textmodes/table.el (table-cell): Remove "-face" suffix from face
-       name.
-       (table-cell-face): New backward-compatibility alias for renamed face.
-       (table--put-cell-face-property, table--update-cell-face):
-       Use renamed table-cell face.
-
-       * textmodes/sgml-mode.el (sgml-namespace): Remove "-face" suffix
-       from face name.
-       (sgml-namespace-face): New backward-compatibility alias for
-       renamed face.
-       (sgml-namespace-face): Use renamed sgml-namespace face.
-
-       * textmodes/org.el (org-level-1, org-level-2, org-level-3)
-       (org-level-4, org-level-5, org-level-6, org-level-7)
-       (org-level-8, org-warning, org-headline-done)
-       (org-deadline-announce, org-scheduled-today)
-       (org-scheduled-previously, org-link, org-done, org-table)
-       (org-time-grid): Remove "-face" suffix from face names.
-       (org-level-1-face, org-level-2-face, org-level-3-face)
-       (org-level-4-face, org-level-5-face, org-level-6-face)
-       (org-level-7-face, org-level-8-face, org-warning-face)
-       (org-headline-done-face, org-deadline-announce-face)
-       (org-scheduled-today-face, org-scheduled-previously-face)
-       (org-link-face, org-done-face, org-table-face)
-       (org-time-grid-face):
-       New backward-compatibility aliases for renamed faces.
-       (org-level-faces, org-set-font-lock-defaults, org-timeline)
-       (org-agenda, org-agenda-get-todos, org-agenda-get-deadlines)
-       (org-agenda-get-timestamps, org-agenda-get-scheduled)
-       (org-agenda-add-time-grid-maybe, org-table-p): Use renamed org faces.
-
-       * emulation/viper-init.el (viper-search, viper-replace-overlay)
-       (viper-minibuffer-emacs, viper-minibuffer-insert)
-       (viper-minibuffer-vi): Remove "-face" suffix from face names.
-       (viper-search-face, viper-replace-overlay-face)
-       (viper-minibuffer-emacs-face, viper-minibuffer-insert-face)
-       (viper-minibuffer-vi-face):
-       New backward-compatibility aliases for renamed faces.
-       (viper-search-face, viper-replace-overlay-face)
-       (viper-minibuffer-emacs-face, viper-minibuffer-insert-face)
-       (viper-minibuffer-vi-face): Use renamed viper faces.
-
-       * emacs-lisp/testcover.el (testcover-nohits, testcover-1value):
-       Remove "-face" suffix from face names.
-       (testcover-nohits-face, testcover-1value-face):
-       New backward-compatibility aliases for renamed faces.
-       (testcover-mark): Use renamed testcover faces.
-
-       * calendar/diary-lib.el (diary-button): Remove "-face" suffix from
-       face name.
-       (diary-button-face): New backward-compatibility alias for renamed face.
-       (diary-entry): Use renamed diary-button face.
-
-       * calendar/calendar.el (diary, calendar-today, holiday)
-       (mark-visible-calendar-date): Remove "-face" suffix from face names.
-       (diary-face, calendar-today-face, holiday-face):
-       New backward-compatibility aliases for renamed faces.
-       (eval-after-load "facemenu", diary-entry-marker)
-       (calendar-today-marker, calendar-holiday-marker, diary-face):
-       Use renamed calendar faces.
-
-       * compare-w.el (compare-windows): Remove "-face" suffix from face name.
-       (compare-windows-face): New backward-compatibility alias for
-       renamed face.
-       (compare-windows-highlight): Use renamed compare-windows face.
-
-       * strokes.el (strokes-char): Remove "-face" suffix from face name.
-       (strokes-char-face): New backward-compatibility alias for renamed face.
-       (strokes-encode-buffer): Use renamed strokes-char face.
-
-       * pcvs-info.el (cvs-header, cvs-filename, cvs-unknown)
-       (cvs-handled, cvs-need-action, cvs-marked, cvs-msg):
-       Remove "-face" suffix from face names.
-       (cvs-header-face, cvs-filename-face, cvs-unknown-face)
-       (cvs-handled-face, cvs-need-action-face, cvs-marked-face)
-       (cvs-msg-face): New backward-compatibility aliases for renamed faces.
-       (cvs-fi-up-to-date-face, cvs-fi-unknown-face, cvs-fileinfo-pp):
-       Use renamed pcvs faces.
-       * pcvs.el (cvs-mode-find-file): Use renamed pcvs faces.
-       * pcvs-defs.el (cvs-mode-map): Likewise.
-       * cvs-status.el (cvs-status-font-lock-keywords): Likewise.
-
-       * info.el (info-title-1, info-title-2, info-title-3)
-       (info-title-4): Remove "-face" suffix from and downcase face names.
-       (Info-title-1-face, Info-title-2-face, Info-title-3-face)
-       (Info-title-4-face):
-       New backward-compatibility aliases for renamed faces.
-       (Info-fontify-node): Use renamed info faces.
-
-       * hilit-chg.el (highlight-changes, highlight-changes-delete):
-       Remove "-face" suffix from face names.
-       (highlight-changes-face, highlight-changes-delete-face):
-       New backward-compatibility aliases for renamed faces.
-       (hilit-chg-cust-fix-changes-face-list, hilit-chg-make-ov)
-       (hilit-chg-make-list): Use renamed highlight-changes faces.
-
-       * generic-x.el (show-tabs-tab, show-tabs-space):
-       Remove "-face" suffix from face names.
-       (show-tabs-tab-face, show-tabs-space-face):
-       New backward-compatibility aliases for renamed faces.
-       (show-tabs-generic-mode-font-lock-defaults-1)
-       (show-tabs-generic-mode-font-lock-defaults-2):
-       Use renamed show-tabs faces.
-
-       * smerge-mode.el (smerge-mine, smerge-other, smerge-base)
-       (smerge-markers): Remove "-face" suffix from face names.
-       (smerge-mine-face, smerge-other-face, smerge-base-face)
-       (smerge-markers-face):
-       New backward-compatibility aliases for renamed faces.
-       (smerge-mine-face, smerge-other-face, smerge-base-face)
-       (smerge-markers-face): Use renamed smerge faces.
-
-       * log-view.el (log-view-file, log-view-message): Remove "-face"
-       suffix from face names.
-       (log-view-file-face, log-view-message-face):
-       New backward-compatibility aliases for renamed faces.
-       (log-view-file-face, log-view-message-face): Use renamed log-view
-       faces.
-
-       * paren.el (show-paren-match, show-paren-mismatch):
-       Remove "-face" suffix from face names.
-       (show-paren-match-face, show-paren-mismatch-face):
-       New backward-compatibility aliases for renamed faces.
-       (show-paren-function): Use renamed show-paren faces.
-
-       * ruler-mode.el (ruler-mode-default, ruler-mode-pad)
-       (ruler-mode-margins, ruler-mode-fringes)
-       (ruler-mode-column-number, ruler-mode-fill-column)
-       (ruler-mode-comment-column, ruler-mode-goal-column)
-       (ruler-mode-tab-stop, ruler-mode-current-column): Remove "-face"
-       suffix from face names.
-       (ruler-mode-default-face, ruler-mode-pad-face)
-       (ruler-mode-margins-face, ruler-mode-fringes-face)
-       (ruler-mode-column-number-face, ruler-mode-fill-column-face)
-       (ruler-mode-comment-column-face, ruler-mode-goal-column-face)
-       (ruler-mode-tab-stop-face, ruler-mode-current-column-face):
-       New backward-compatibility aliases for renamed faces.
-       (ruler-mode-pad, ruler-mode-margins, ruler-mode-fringes)
-       (ruler-mode-column-number, ruler-mode-fill-column)
-       (ruler-mode-comment-column, ruler-mode-goal-column)
-       (ruler-mode-tab-stop, ruler-mode-current-column)
-       (ruler-mode-mouse-grab-any-column, ruler-mode-ruler): Use renamed
-       faces.
-
-       * whitespace.el (whitespace-highlight): Remove "-face" suffix from
-       face name.
-       (whitespace-highlight-the-space): Use renamed face.
-       (whitespace-highlight-face): New backward-compatibility alias for
-       renamed face.
-
-       * woman.el (woman-italic, woman-bold, woman-unknown)
-       (woman-addition, woman-symbol-face):
-       Remove "-face" suffix from face names.
-       (woman-italic-face, woman-bold-face, woman-unknown-face)
-       (woman-addition-face):
-       New backward-compatibility aliases for renamed faces.
-       (woman-default-faces, woman-monochrome-faces, woman-man-buffer)
-       (woman-decode-region, woman-replace-match)
-       (woman-display-extended-fonts, woman-special-characters)
-       (woman-font-alist, woman-change-fonts, woman2-TH, woman2-SH):
-       Use renamed woman faces.
-
-       * longlines.el (longlines-visible-face): Face removed.
-
-       * diff-mode.el (diff-header, diff-file-header, diff-index)
-       (diff-hunk-header, diff-removed, diff-added, diff-changed)
-       (diff-function, diff-context, diff-nonexistent): Remove "-face"
-       suffix from face names.
-       (diff-header-face, diff-file-header-face, diff-index-face)
-       (diff-hunk-header-face, diff-removed-face, diff-added-face)
-       (diff-changed-face, diff-function-face, diff-context-face)
-       (diff-nonexistent-face): New backward-compatibility aliases for
-       renamed faces.
-       (diff-header-face, diff-file-header-face)
-       (diff-index, diff-index-face, diff-hunk-header)
-       (diff-hunk-header-face, diff-removed, diff-removed-face)
-       (diff-added, diff-added-face, diff-changed-face, diff-function)
-       (diff-function-face, diff-context-face, diff-nonexistent)
-       (diff-nonexistent-face): Use renamed diff-mode faces.
-
-       * progmodes/compile.el (compilation-warning-face)
-       (compilation-info-face): Remove "-face" suffix from face names.
-       (compilation-warning-face, compilation-info-face):
-       New backward-compatibility aliases for renamed faces.
-       (compilation-warning-face, compilation-info-face):
-       Use renamed compilation faces.
-
-       * add-log.el (change-log-date, change-log-name)
-       (change-log-email, change-log-file, change-log-list)
-       (change-log-conditionals, change-log-function)
-       (change-log-acknowledgement): Remove "-face" suffix from face names.
-       (change-log-date-face, change-log-name-face)
-       (change-log-email-face, change-log-file-face)
-       (change-log-list-face, change-log-conditionals-face)
-       (change-log-function-face, change-log-acknowledgement-face):
-       New backward-compatibility aliases for renamed faces.
-       (change-log-font-lock-keywords): Use renamed change-log faces.
-
-       * cus-edit.el (custom-invalid, custom-rogue, custom-modified)
-       (custom-set, custom-changed, custom-saved, custom-button)
-       (custom-button-pressed, custom-documentation, custom-state)
-       (custom-comment, custom-comment-tag, custom-variable-tag)
-       (custom-variable-button, custom-face-tag, custom-group-tag-1)
-       (custom-group-tag): Remove "-face" suffix from face names.
-       (custom-magic-alist, custom-magic-value-create)
-       (custom-group-sample-face-get, custom-mode): Use renamed custom faces.
-       (custom-invalid-face, custom-rogue-face, custom-modified-face)
-       (custom-set-face, custom-changed-face, custom-saved-face)
-       (custom-button-face, custom-button-pressed-face)
-       (custom-documentation-face, custom-state-face)
-       (custom-comment-face, custom-comment-tag-face)
-       (custom-variable-tag-face, custom-variable-button-face)
-       (custom-face-tag-face, custom-group-tag-face-1)
-       (custom-group-tag-face):
-       New backward-compatibility aliases for renamed faces.
-
-       * wid-edit.el (widget-documentation, widget-button)
-       (widget-field, widget-single-line-field, widget-inactive)
-       (widget-button-pressed): "-face" suffix removed from face names.
-       (widget-documentation-face, widget-button-face)
-       (widget-field-face, widget-single-line-field-face)
-       (widget-inactive-face, widget-button-pressed-face):
-       New backward-compatibility aliases for renamed faces.
-       (widget-documentation-face, widget-button-face)
-       (widget-button-pressed-face, widget-specify-field)
-       (widget-specify-inactive): Use renamed widget faces.
-
-2005-06-10  Kenichi Handa  <handa@m17n.org>
-
-       * term/x-win.el (x-clipboard-yank): Remove condition-case
-       wrapping.
-
-2005-06-11  Kenichi Handa  <handa@m17n.org>
-
-       * add-log.el (change-log-font-lock-keywords): Make the regexp for
-       date lines stricter.
-
-2005-06-10  Zhang Wei  <id.brep@gmail.com>
-
-       * term/x-win.el (x-clipboard-yank): Use x-selection-value instead
-       of x-get-selection.
-
-2005-06-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * comint.el (comint-mode, comint-snapshot-last-prompt):
-       * frame.el (frame-current-scroll-bars):
-       * term.el (term-mode, term-check-proc, term-input-sender)
-       (term-simple-send, term-extract-string, term-word)
-       (term-match-partial-filename):
-       * window.el (window-current-scroll-bars):
-       * emulation/cua-base.el (cua-normal-cursor-color)
-       (cua-read-only-cursor-color, cua-overwrite-cursor-color)
-       (cua-global-mark-cursor-color):
-       * mail/undigest.el (rmail-forward-separator-regex):
-       Fix typos in docstrings.
-
-       * comint.el (comint-check-proc, make-comint-in-buffer)
-       (comint-source-default): Doc fixes.
-
-       * term.el (term-send-string): Improve argument/docstring consistency.
-
-2005-06-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * comint.el (comint-send-input): Bind `inhibit-read-only' around
-       call to `delete-region'.
-       (comint-mode-hook): Do not enable Font Lock by default.
-
-2005-06-09  Lute Kamstra  <lute@gnu.org>
-
-       * textmodes/ispell.el (ispell-menu-map-needed): flyspell-mode
-       could be void.
-
-2005-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/debug.el (debugger-will-be-back): New var.
-       (debug): Use it.
-       (debugger-step-through, debugger-continue, debugger-jump)
-       (debugger-return-value): Set it when needed.
-       (debugger-make-xrefs, debugger-frame, debugger-frame-clear):
-       Use inhibit-read-only.
-
-2005-06-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * window.el (shrink-window-if-larger-than-buffer)
-       (window-size-fixed): Fix typo in docstring.
-
-       * thumbs.el: Don't set `auto-image-file-mode'.  Do not create the
-       thumbnails directory on loading.
-       (thumbs-conversion-program): Use `eq' to check the system type,
-       not `equal'.
-       (thumbs-temp-dir): Initialize to `temporary-file-directory',
-       not "/tmp".  Fix docstring.
-       (thumbs-thumbsdir): New function to return the thumbnails
-       directory, creating it if needed.
-       (thumbs-cleanup-thumbsdir, thumbs-thumbname): Use it.
-       (thumbs-temp-file): Delete variable and make it into a function.
-       (thumbs-resize-image, thumbs-modify-image): Use it.
-       (thumbs-kill-buffer): Simplify.
-       (thumbs-gensym): Defalias or duplicate CL `gensym'.
-       (thumbs-resize-image, thumbs-resize-interactive): Fix typos in
-       docstrings.
-
-2005-06-09  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (save-match-data): Add RESEAT arg `evaporate' to
-       set-match-data to free markers in match-data.
-
-       * replace.el (replace-match-data): Pass RESEAT arg `t' to
-       match-data to unchain markers in match-data.
-
-2005-06-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/debug.el (debug): Don't iconify if we know we'll re-enter
-       the debugger immediately anyway.  Undo the 2005-06-06 change, rendered
-       unnecessary now.
-
-2005-06-08  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): If BODY is empty,
-       give the variable a doc string that doesn't say don't set it directly.
-
-       * textmodes/ispell.el (ispell-check-version):
-       Use match-string-no-properties.
-       (ispell-region, ispell-buffer-local-parsing, ispell-buffer-local-dict)
-       (ispell-buffer-local-words): Likewise.
-
-       * progmodes/make-mode.el (makefile-shell-face): Make this a no-op
-       except on terminals with enough colors to really display it.
-       (makefile-dependency-regex): Delete spurious `bb'.
-
-       * faces.el (escape-glyph): Use blue once again in last case.
-       (no-break-space): Redefine so that it isn't invisible on a tty.
-
-2005-06-08  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-read-file-name): Fallback to read-file-name on C-f
-       also when reading directory name.
-
-2005-06-08  Lute Kamstra  <lute@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-mode): Use define-minor-mode.
-       (flyspell-mode-line-string): Remove autoload cookie.
-       (flyspell-mode): Remove defvar.
-
-2005-06-07  Lute Kamstra  <lute@gnu.org>
-
-       * textmodes/org.el (org-run-mode-hooks): New function.
-       (org-agenda-mode): Use it.
-
-2005-06-07  David McCabe  <davemccabe@gmail.com>  (tiny change)
-
-       * emacs-lisp/lisp-mode.el (defstruct): Set `doc-string-elt' property.
-
-2005-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * international/iso-cvt.el (iso-sgml2iso-trans-tab): Add NBSP.
-
-2005-06-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * font-lock.el (font-lock-add-keywords): Doc fix.
-
-2005-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/tex-mode.el (tex-guess-mode): Add RequirePackage.
-       (tex-compile-default): In the absence of any history, use the order in
-       tex-compile-alist to choose the preferred command.
-       (tex-compile-commands): Reorder a bit.
-
-       * textmodes/flyspell.el (flyspell-auto-correct-binding)
-       (flyspell-incorrect-face, flyspell-duplicate-face):
-       Use (X)Emacs-agnostic code.
-       (flyspell-mode-map): Don't overwrite at each load.  Remove code
-       redundant with the subsequent add-minor-mode.  Merge Emacs and
-       XEmacs code.
-       (flyspell-word): Minor simplification.
-       (flyspell-math-tex-command-p): Quieten the byte-compiler.
-       (flyspell-external-point-words): Remove unused vars `size' and `start'.
-       (flyspell-do-correct): Rename from flyspell-xemacs-correct.
-       Merge the corresponding Emacs code.
-       (flyspell-correct-word, flyspell-xemacs-popup):
-       Use flyspell-do-correct.
-
-       * emacs-lisp/debug.el (debug): Don't bury the buffer unless it's in
-       a dedicated window.
-
-       * international/latexenc.el (latexenc-find-file-coding-system):
-       Undo part of last patch, to turn off a compiler warning.
-
-2005-06-06  Juri Linkov  <juri@jurta.org>
-
-       * tmm.el (tmm-inactive, tmm-remove-inactive-mouse-face):
-       Rename `tmm-inactive-face' to `tmm-inactive'.
-
-2005-06-06  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * iswitchb.el: Rename faces.
-
-2005-06-06  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-rectangle, cua-rectangle-noselect)
-       (cua-global-mark): Remove -face suffix from face names.
-
-       * emulation/cua-gmrk.el (cua--init-global-mark):
-       Remove cua-global-mark face setup.
-
-2005-06-06  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/make-mode.el (makefile-dependency-regex): Handle whitespace
-       just like other allowed characters.
-       (makefile-match-dependency): Exclude leading and training whitespace
-       from the range of regexp subexp 1.
-       (makefile-macroassign-regex): Don't try to match the body,
-       just the name of the macro being defined.
-
-       * info.el (Info-read-node-name-2): New function.
-       (Info-read-node-name-1): Use that.
-       Add a completion-base-size-function property.
-
-       * simple.el (completion-setup-function): Look for
-       completion-base-size-function property of minibuffer-completion-table.
-
-       * files.el (locate-file-completion): Doc fix.
-
-       * printing.el: Don't call pr-update-menus; user must do that.
-
-       * emacs-lisp/debug.el (debugger-window): New variable.
-       (debug): Use debugger-window if it is set and still alive.
-       Record debugger-window for next entry.
-
-       * mail/supercite.el (sc-mail-glom-frame): Mark as risky.
-
-2005-06-06  Matthias F\e,Av\e(Brste  <slashdevslashnull@gmx.net>
-
-       * files.el (hack-local-variables-confirm): New arg FLAG-TO-CHECK.
-       (hack-one-local-variable, hack-local-variables)
-       (hack-local-variables-prop-line): Pass that arg.
-
-2005-06-06  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-first-match, ido-only-match, ido-subdir)
-       (ido-indicator): Remove -face suffix from face names.
-
-2005-06-06  Juri Linkov  <juri@jurta.org>
-
-       * font-lock.el (font-lock-regexp-backslash)
-       (font-lock-regexp-backslash-construct): New faces.
-       (lisp-font-lock-keywords-2): Use new faces.  Match `?:' only
-       after `('.  Add `while-no-input' to control structures.
-
-       * faces.el (no-break-space, shadow): New faces.
-       (escape-glyph): Use less loud colors pink2 and red4.
-
-       * diff-mode.el (diff-context-face)
-       * dired.el (dired-ignored)
-       * rfn-eshadow.el (file-name-shadow)
-       * tmm.el (tmm-inactive-face): Inherit from `shadow' face.
-
-       * info.el (Info-title-1-face): Use green instead of yellow because
-       bold yellow is not readable on light backgrounds.
-
-       * progmodes/compile.el (compilation-start): Move `erase-buffer' up
-       before selecting the desired mode to not spend time fontifying
-       old contents.
-
-2005-06-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * thumbs.el (thumbs-thumbsdir-max-size, thumbs-image-resizing-step)
-       (thumbs-thumbsdir-auto-clean): Fix typos in docstrings.
-
-       * ps-print.el (ps-default-fg, ps-default-bg):
-       Fix typos in docstrings.
-
-       * isearchb.el (isearchb): Don't pass a spurious second argument to
-       `iswitchb-completions'.
-
-2005-06-05  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-info-locals-handler): Use window point
-       to preserve point.
-       (gdb-find-file-hook): Add doc string.
-
-       * progmodes/gud.el (gdb, gud-menu-map): Add command to evaluate
-       C dereferenced pointer expression.
-       (gud-tool-bar-map): Put it on the tool bar.  Re-order icons.
-
-       * toolbar/gud-pstar.xpm, toolbar/gud-pstar.pbm: New files.
-
-       * toolbar/gud-break.xpm, toolbar/gud-cont.xpm, toolbar/gud-down.xpm
-       * toolbar/gud-finish.xpm, toolbar/gud-ni.xpm, toolbar/gud-n.xpm
-       * toolbar/gud-print.xpm, toolbar/gud-remove.xpm, toolbar/gud-run.xpm
-       * toolbar/gud-si.xpm, toolbar/gud-s.xpm, toolbar/gud-until.xpm
-       * toolbar/gud-up.xpm, toolbar/gud-watch.xpm:
-       Make background transparent.
-
-2005-06-04  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * font-lock.el (font-lock-add-keywords): Doc fix.  Comment change.
-       (font-lock-remove-keywords): Doc fix.
-       (font-lock-mode-major-mode): Compiler defvar.
-       (font-lock-set-defaults): Use `font-lock-mode-major-mode'.
-
-       * font-core.el (font-lock-mode-major-mode): Compiler defvar.
-       (font-lock-mode): Update `font-lock-mode-major-mode'.
-       (font-lock-set-defaults): Compiler defvar.
-       (font-lock-default-function): Take `font-lock-mode-major-mode'
-       into account.
-
-       * emacs-lisp/easy-mmode.el (define-global-minor-mode): Make it
-       keep track of which major mode it enabled the minor mode for.
-       Use find-file-hook again.  Update docstring.
-
-       * simple.el (eval-expression-print-level)
-       (eval-expression-print-length, eval-expression-debug-on-error):
-       Doc fixes.
-
-2005-06-04  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * iswitchb.el (iswitchb-single-match-face)
-       (iswitchb-current-match-face, iswitchb-virtual-matches-face)
-       (iswitchb-invalid-regexp-face): New faces.
-       (iswitchb-completions): Use them.
-       (iswitchb-use-faces): Rename from iswitchb-use-fonts, which is
-       now marked as an obsolete alias.
-       (iswitchb-read-buffer): Remove check for bound font variables.
-       (iswitchb-invalid-regexp): New free variable.
-       (iswitchb-get-matched-buffers): Catch invalid-regexp errors and
-       set iswitchb-invalid-regexp.
-       (iswitchb, iswitchb-complete, iswitchb-completions): Deal with
-       invalid regexps.
-       (iswitchb-completions): Add check for complete match when entering
-       a regexp.
-       (iswitchb-completions): Remove require-match argument.
-       (iswitchb-exhibit): Fix caller.
-       (iswitchb-common-match-inserted): New variable.
-       (iswitchb-complete, iswitchb-completion-help): Use it.
-
-2005-06-04  David Reitter  <david.reitter@gmail.com>  (tiny change)
-
-       * url-http.el (url-http-chunked-encoding-after-change-function):
-       Use `url-http-debug' instead of `message'.
-
-2005-06-04  Thierry Emery  <thierry.emery@free.fr>  (tiny change)
-
-       * url-http.el (url-http-parse-headers): Pass redirected URL as a
-       callback argument.
-
-2005-06-04  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (line-move): Only call sit-for when moving backwards.
-
-       * ido.el (ido-make-merged-file-list-1): New defun split from
-       ido-make-merged-file-list.
-       (ido-make-merged-file-list): Bind throw-on-input around call to
-       ido-make-merged-file-list-1.  Return input-pending-p if
-       interrupted by more input available.
-       (ido-read-internal): Handle input-pending-p return value from
-       ido-make-merged-file-list.
-
-2005-06-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/flyspell.el (flyspell-check-word-p): Simplify silly
-       compatibility code.
-
-       * international/latexenc.el (latexenc-find-file-coding-system):
-       Don't inherit the EOL part of the coding-system from the
-       tex-main buffer.  Fit within 80 columns.
-
-2005-06-03  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * tmm.el (tmm-inactive-face): New face.
-       (tmm-remove-inactive-mouse-face): New function.
-       (tmm-prompt, tmm-add-one-shortcut)
-       (tmm-add-prompt, tmm-get-keymap): Make active menu items visible
-       but not selectable.
-
-2005-06-03  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faces.el (face-equal): Improve argument/docstring consistency.
-
-2005-06-03  Daniel Pfeiffer  <occitan@esperanto.org>
-
-       * progmodes/make-mode.el (makefile-targets-face)
-       (makefile-shell-face, makefile-makepp-perl-face): Add :version.
-       (makefile-bsdmake-dependency-regex)
-       (makefile-makepp-rule-action-regex)
-       (makefile-bsdmake-rule-action-regex): New constants.
-       (makefile-makepp-mode, makefile-bsdmake-mode): Use them.
-
-       * progmodes/compile.el (compilation-error-regexp-alist-alist):
-       Allow (...) within `...' for makepp messages.
-
-2005-06-03  Michael Kifer  <kifer@cs.stonybrook.edu>
-
-       * ediff-diff.el (ediff-same-contents): Eliminate CL-type functions.
-
-       * ediff-mult.el (ediff-intersect-directories): Make sure that ".." and
-       "." files are deleted from all file lists before comparison.
-
-       * viper-keym.el (viper-toggle-key, viper-quoted-insert-key)
-       (viper-ESC-key): Made them customizable.
-
-       * viper.el (viper-non-hook-settings): Fix the names of defadvices.
-
-2005-06-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * autorevert.el (auto-revert-buffers): Use save-match-data.
-
-2005-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * emacs-lisp/easymenu.el (easy-menu-return-item): Quick fix to find
-       menu items with a nil command binding.
-
-2005-06-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/cl-macs.el (defsetf):
-       Improve argument/docstring consistency.
-
-       * faces.el (list-faces-display): Improve the formatting by
-       computing the maximum length required for any face-name (reworked
-       patch of 1999-01-11, accidentally deleted on 1999-07-21).
-       (internal-find-face): Remove redundant info in docstring.
-
-2005-06-01  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-1)
-       (gdb-info-breakpoints-custom, gdb-delete-breakpoint)
-       (gdb-goto-breakpoint, gdb-source-info, gdb-get-location)
-       (gdb-assembler-custom): Improve regexps.
-       (def-gdb-auto-update-handler): Use window point to preserve point.
-
-2005-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * thumbs.el (thumbs-mode): Fix misuse of make-variable-buffer-local.
-
-2005-05-31  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-embed.el (calc-embedded-word): Change argument passed
-       to calc-embedded.
-       (calc-embedded-make-info): Have plain prefix argument select
-       entire line.
-
-2005-05-31  Juanma Barranquero  <lekktu@gmail.com>
-
-       * faces.el (list-faces-display): Signal error if passed a regexp
-       that matches no face name.
-
-       * simple.el (filter-buffer-substring): Fix typo in docstring.
-
-2005-05-31  Richard M. Stallman  <rms@gnu.org>
-
-       * progmodes/vhdl-mode.el (vhdl-fill-region): Test ARG, not INTERACTIVE.
-       (vhdl-emacs-21): Doc fix.
-       (vhdl-mode): Unconditionally set comment-padding.
-       (vhdl-fixup-whitespace-region): Insert spaces only where
-       there are none.
-       (vhdl-statistics-buffer): Make the Emacs 21 behavior universal.
-
-2005-05-30  John Wiegley  <johnw@newartisans.com>
-
-       * eshell/em-cmpl.el, eshell/em-dirs.el, eshell/em-glob.el
-       * eshell/em-unix.el, eshell/esh-ext.el, eshell/esh-io.el
-       * eshell/esh-util.el, eshell/esh-var.el: Change all uses of
-       `directory-sep-char' to ?/, and all uses of `string-to-int' to
-       `string-to-number'.
-
-2005-05-30  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (calc-bug-address): Fix docstring.
-       (calc-window-hook, calc-trail-window-hook): New variables.
-       (calc-trail-display): Restore use of calc-trail-window-hook.
-       (calc): Restore use of calc-window-hook.
-
-2005-05-31  Masatake YAMATO  <jet@gyve.org>
-
-       * emacs-lisp/find-func.el (find-function-noselect): Handle subroutines.
-
-       * help-fns.el (help-C-file-name): Add autoload mark for
-       `find-function-noselect'.
-
-2005-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/tex-mode.el (tex-compile-commands, tex-compile)
-       (tex-start-tex): Undo all but the last part of the 2005-05-28 change.
-
-2005-05-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * calendar/diary-lib.el (mark-included-diary-files): Only kill
-       included diary buffer if it was not already being visited.
-       Reported by Stephen Berman <Stephen.Berman@gmx.net>.
-
-       * calendar/icalendar.el (top-level): Do not require appt.
-
-       * mail/supercite.el (sc-select-attribution): Only use a list
-       element from sc-attrib-selection-list if it returns a string.
-       Reported by Davide G. M. Salvetti <salve@debian.org>.
-
-2005-05-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * thumbs.el (thumbs-thumbname): The resulting thumbname now
-       includes a hash value to improve its uniqueness, and has a ".jpg"
-       extension.  Also, it is now a valid filename on all systems.
-       (thumbs-make-thumb): Use `let', not `let*'.
-       (thumbs-show-thumbs-list): Check for JPEG availability.
-
-2005-05-30  Richard M. Stallman  <rms@gnu.org>
-
-       * filesets.el (filesets-menu-ensure-use-cached):
-       Prevent warning when emacs-version>= is undefined.
-
-       * printing.el (pr-interactive-n-up): Use string-to-number.
-
-       * emulation/tpu-mapper.el: Use eval-buffer, not eval-current-buffer.
-
-       * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
-       Warn only when name to be defined is quoted.
-
-2005-05-30  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-toggle-breakpoint):
-       Make regexp more robust.
-       (gdb-display-assembler-buffer, gdb-frame-assembler-buffer):
-       Force regeneration of disassembly.
-
-2005-05-29  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (calc-user-invocation): Check if
-       calc-invocation-macro is non-nil.
-
-2005-05-29  Juri Linkov  <juri@jurta.org>
-
-       * add-log.el (change-log-font-lock-keywords):
-       Add `+' to e-mail regexp to accept mail address with keywords.
-
-       * man.el (Man-name-regexp): Add `:' to accept qualified names.
-
-2005-05-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * progmodes/inf-lisp.el (inferior-lisp-mode): Use delay-mode-hooks.
-
-       * ielm.el (inferior-emacs-lisp-mode): Ditto.
-
-2005-05-29  Richard M. Stallman  <rms@gnu.org>
-
-       * textmodes/flyspell.el (flyspell-auto-correct-previous-word):
-       Undo the change that moves to end of the current word.
-
-2005-05-29  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-memory-set-repeat-count):
-       Throw error when count <= 0 to ensure input is a number.
-       (gdb-read-memory-custom): Pick up address from buffer.
-       (gdb-memory-mode): Allow user to increment and decrement
-       memory address from header line.
-
-2005-05-29  Richard M. Stallman  <rms@gnu.org>
-
-       * flyspell.el (flyspell-version): Function deleted.
-       (flyspell-auto-correct-previous-hook): Doc fix.
-
-       * jit-lock.el (jit-lock-function, jit-lock-after-change):
-       Do nothing if memory is full.
-
-       * font-lock.el (font-lock-fontify-syntactically-region):
-       Pass t for GREEDY to looking-back.
-
-       * saveplace.el (save-place-alist-to-file): Write the file
-       using write-region.
-
-       * subr.el (looking-back): New argument GREEDY.
-
-       * progmodes/compile.el (compilation-start): Set the mode
-       before inserting the initial text.
-
-       * progmodes/which-func.el (which-func-update-1): Turn the mode
-       off in case of error by setting which-func-mode.
-
-2005-05-29  Peter Heslin  <p.j.heslin@durham.ac.uk>  (tiny change)
-
-       * flyspell.el (flyspell-auto-correct-previous-word):
-       Narrow down to what's on the screen, and recenter overlays
-       at the end of the next word.
-
-2005-05-29  Manuel Serrano  <Manuel.Serrano@sophia.inria.fr>
-
-       * flyspell.el (flyspell-emacs, flyspell-use-local-map): Vars moved up.
-       (flyspell-default-delayed-commands): Add backward-delete-char-untabify.
-       (flyspell-abbrev-p): Default to nil.
-       (flyspell-use-global-abbrev-table-p): Doc fix.
-       (flyspell-large-region): Allow nil as value.
-       (flyspell-use-meta-tab, flyspell-auto-correct-binding): New variables.
-
-       (mail-mode-flyspell-verify): More robust handling
-       of `mail-header-separator'.  More efficient signature detection.
-       Allow for regexp metacharacters in message-header-separator.
-       Adding `To' not to be checked in mail-mode-flyspell-verify.
-
-       (flyspell-prog-mode): Run flyspell-prog-mode-hook.
-       (flyspell-mouse-map): Bind M-TAB only if flyspell-use-meta-tab.
-       Bind flyspell-auto-correct-binding.
-       Bind C-. and C-, .
-       (flyspell-mode-map): Likewise.
-       (flyspell-mode): Doc fix.
-       (flyspell-accept-buffer-local-defs): Preserve current buffer.
-       (flyspell-mode-on): Bind flyspell-mouse-map and flyspell-mode-map.
-       (flyspell-word-cache-result): New var, always local.
-       (flyspell-check-pre-word-p): Doc fix.
-       (flyspell-check-changed-word-p): Handle spc like newline.
-       (flyspell-post-command-hook): Set flyspell-word-cache-result.
-       (flyspell-word-search-backward, flyspell-word-search-forward):
-       New functions.
-       (flyspell-word): Return t if nothing to check.
-       When parsing TeX code, check for after } or \.
-       Use flyspell-word-search-backward to find previous word.
-       Return nil if duplicated word.
-       For word already checked, return same value as last time.
-       Set flyspell-word-cache-result after checking.
-       Don't clobber the return value.
-       (flyspell-get-word): Major rewrite.
-       (flyspell-external-point-words): New locals pword, pcount.
-       Fix size used in progress message.
-       Find the proper corresponding word in flyspell-large-region-buffer.
-       (flyspell-region): Check for flyspell-large-region = nil.
-       (flyspell-highlight-incorrect-region): Clean up overlays in region.
-       (flyspell-auto-correct-word): Check that WORD is a cons.
-       (flyspell-correct-word): Likewise.
-
-2005-05-29  Daniel Pfeiffer  <occitan@esperanto.org>
-
-       * progmodes/make-mode.el (makefile-rule-action-regex)
-       (makefile-macroassign-regex, makefile-makepp-mode)
-       (makefile-bsdmake-mode): Continuation lines may be empty.
-       Reported by Joshua Varner.
-       (makefile-makepp-font-lock-keywords): Add $(stem).
-
-2005-05-28  Karl Berry  <karl@gnu.org>
-
-       * textmodes/tex-mode.el: Now that tex-send-command calls
-       shell-quote-argument (2005-03-31 change), remove all calls to
-       shell-quote-argument; they all end up invoking tex-send-command.
-       The double quoting loses on filenames with non-safe characters,
-       such as "@".  Reported by Frederik Fouvry.
-
-2005-05-29  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-assembler-custom): Be more careful
-       about preserving point.
-
-2005-05-27  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-misc.el (calc-info-goto-node): Use info instead of
-       Info-goto-node.
-
-       * calc/calc-embed.el (calc-embed-arg): New variable.
-       (calc-do-embedded-activate, calc-embedded-activate-formula)
-       (calc-embedded-edit, calc-do-embedded-activate): Replace undeclared
-       variable by new variable.
-       (calc-embedded-make-info): Replace undeclared variable by new
-       variable.  When selecting region with positive prefix
-       argument, use end of previous line instead of beginning of line.
-
-       * calc/calc-aent.el (calc-arg-values): Declare it.
-
-       * calc/calc-ext.el (calc-help-map, calc-alg-map, calc-alg-esc-map):
-       Declare them.
-
-       * calc/calc-stuff.el (math-decls-cache-tag): Declare it.
-
-       * calc/calc.el (calc-alg-map): Declare it.
-
-       * calc/calcalg2.el (math-decls-cache, math-decls-all): Declare them.
-
-2005-05-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-all-registers): New variable.
-       (gdb-registers-buffer, toggle-gdb-all-registers):
-       Toggle display of floating point registers.
-       (gdb-registers-mode-map): Bind SPC to toggle-gdb-all-registers.
-
-       * progmodes/gud.el (gud-goto-info): Use info.  Don't use require.
-       (toggle-gud-tooltip-dereference):
-       Rename from gud-toggle-tooltip-dereference.
-
-2005-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * info.el (Info-goto-node): Revert autoload addition (2004-06-12).
-
-2005-05-27  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-prog.el (calc-kbd-report): Remove.
-       (calc-kbd-query): Rewrite.
-
-2005-05-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image.el (image-library-alist): Move to image.c.
-       (image-type-available-p): Doc fix.
-
-2005-05-27  Lute Kamstra  <lute@gnu.org>
-
-       * calc/calc.el (calc):
-       * outline.el (outline-1, outline-2, outline-3, outline-4)
-       (outline-5, outline-6, outline-7, outline-8):
-       * textmodes/dns-mode.el (dns-mode):
-       * textmodes/sgml-mode.el (sgml-namespace-face):
-       * textmodes/tex-mode.el (superscript, subscript, tex-math-face)
-       (tex-verbatim-face, tex-use-reftex):
-       * textmodes/texinfo.el (texinfo-heading-face):
-       Specify customization group.
-
-       * longlines.el: Don't require easy-mmode.
-       (longlines-visible-face): Specify customization group.
-
-2005-05-27  Kenichi Handa  <handa@m17n.org>
-
-       * language/cyrillic.el: Add cyrillic-iso8859-5 characters in the
-       encoding table of windows-1251.
-
-       * international/ucs-tables.el (ucs-set-table-for-input):
-       If translation-table-for-input of a coding system is a symbol, get
-       its translation-table property.
-
-       * international/code-pages.el: Don't register a coding system into
-       non-iso-charset-alist more than once.
-       (cp-make-coding-system): Likewise.
-
-2005-05-26  John Wiegley  <johnw@newartisans.com>
-
-       * eshell/esh-cmd.el (eshell-eval-command): If the return value of
-       `eshell-resume-eval' is wrapped in a list, it indicates that the
-       command was run asynchronously.  In that case, unwrap the value
-       before checking the delimiter value.
-
-       * eshell/em-cmpl.el (eshell-complete-parse-arguments): If the
-       character before a space at the end of a line is \, assume the space
-       is part of the last argument rather than a final argument separator.
-
-       * eshell/esh-io.el (eshell-get-target): If `eshell-buffer-shorthand'
-       is in use, and the target is `t' or `nil' (which are the most common
-       values), don't assume that the symbol target is a buffer.
-
-2005-05-26  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * calendar/calendar.el (calendar-mode-line-format):
-       Use mode-line-highlight as mouse-face.
-
-       * time.el (display-time-string-forms, display-time-update):
-       Use mode-line-highlight as mouse-face.
-
-2005-05-26  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (calc-language-alist): Remove extra defvar.
-
-2005-05-26  Lute Kamstra  <lute@gnu.org>
-
-       * arc-mode.el (archive-mode):
-       * bookmark.el (bookmark-read-annotation-mode)
-       (bookmark-edit-annotation-mode, bookmark-bmenu-mode):
-       * bs.el (bs-mode):
-       * calc/calc-yank.el (calc-edit-mode):
-       * calc/calc.el (calc-mode, calc-trail-mode):
-       * calculator.el (calculator-mode):
-       * chistory.el (command-history-mode):
-       * comint.el:
-       * cus-edit.el (custom-mode):
-       * descr-text.el (describe-text-mode):
-       * ebuff-menu.el (Electric-buffer-menu-mode):
-       * ediff-util.el (ediff-mode):
-       * emacs-lisp/re-builder.el (reb-mode):
-       * emulation/vi.el (vi-mode-setup):
-       * emulation/ws-mode.el (wordstar-mode):
-       * eshell/esh-mode.el (eshell-mode):
-       * forms.el (forms-mode):
-       * help-mode.el (help-mode):
-       * hexl.el (hexl-mode):
-       * ibuffer.el (ibuffer-mode):
-       * ielm.el (inferior-emacs-lisp-mode):
-       * info.el (Info-mode, Info-edit-mode):
-       * international/swedish.el:
-       * ledit.el (ledit-from-lisp-mode):
-       * locate.el (locate-mode):
-       * mail/rmail.el (rmail-mode):
-       * mail/rmailedit.el (rmail-edit-mode):
-       * mail/rmailsum.el (rmail-summary-mode):
-       * mail/supercite.el (sc-electric-mode):
-       * net/eudc.el (eudc-mode):
-       * net/quickurl.el (quickurl-list-mode):
-       * net/snmp-mode.el (snmp-mode, snmpv2-mode):
-       * obsolete/ooutline.el (outline-mode):
-       * obsolete/options.el (Edit-options-mode):
-       * obsolete/rnews.el (news-mode):
-       * obsolete/rnewspost.el (news-reply-mode):
-       * play/5x5.el (5x5-mode):
-       * play/decipher.el (decipher-mode, decipher-stats-mode):
-       * play/gomoku.el (gomoku-mode):
-       * play/snake.el (snake-mode):
-       * play/solitaire.el (solitaire-mode):
-       * play/tetris.el (tetris-mode):
-       * progmodes/ada-mode.el (ada-mode):
-       * progmodes/antlr-mode.el (antlr-mode):
-       * progmodes/autoconf.el (autoconf-mode):
-       * progmodes/dcl-mode.el (dcl-mode):
-       * progmodes/delphi.el (delphi-mode):
-       * progmodes/ebrowse.el (ebrowse-tree-mode)
-       (ebrowse-electric-list-mode, ebrowse-member-mode)
-       (ebrowse-electric-position-mode):
-       * progmodes/f90.el (f90-mode):
-       * progmodes/fortran.el (fortran-mode):
-       * progmodes/icon.el (icon-mode):
-       * progmodes/idlw-help.el (idlwave-help-mode):
-       * progmodes/idlw-shell.el (idlwave-shell-mode):
-       * progmodes/idlwave.el (idlwave-mode):
-       * progmodes/inf-lisp.el (inferior-lisp-mode):
-       * progmodes/m4-mode.el (m4-mode):
-       * progmodes/meta-mode.el (metafont-mode, metapost-mode):
-       * progmodes/modula2.el (modula-2-mode):
-       * progmodes/octave-inf.el (inferior-octave-mode):
-       * progmodes/octave-mod.el (octave-mode):
-       * progmodes/pascal.el (pascal-mode):
-       * progmodes/sh-script.el (sh-mode):
-       * progmodes/sql.el (sql-mode, sql-interactive-mode):
-       * progmodes/vhdl-mode.el (vhdl-mode):
-       * progmodes/xscheme.el (scheme-interaction-mode):
-       * replace.el (occur-mode):
-       * ses.el (ses-mode):
-       * simple.el (completion-list-mode):
-       * skeleton.el:
-       * speedbar.el (speedbar-mode):
-       * term.el (term-mode):
-       * terminal.el (terminal-edit-mode):
-       * textmodes/reftex-index.el (reftex-index-mode)
-       (reftex-index-phrases-mode):
-       * textmodes/reftex-sel.el (reftex-select-label-mode)
-       (reftex-select-bib-mode):
-       * textmodes/reftex-toc.el (reftex-toc-mode):
-       * wdired.el (wdired-change-to-wdired-mode):
-       * wid-browse.el (widget-browse-mode):
-       Use run-mode-hooks.
-
-       * array.el (array-mode):
-       * calendar/todo-mode.el (todo-mode):
-       * man.el (Man-mode):
-       * play/landmark.el (lm-mode):
-       * play/mpuz.el (mpuz-mode):
-       Use kill-all-local-variables and run-mode-hooks.
-
-       * subr.el (delay-mode-hooks): Specify indentation.
-
-2005-05-26  Mark A. Hershberger  <mah@everybody.org>
-
-       * xml.el (xml-substitute-special): Don't die for undefined xml
-       entities.
-
-2005-05-26  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-prog.el (calc-user-define-edit): Don't find substring
-       of nil.
-
-2005-05-27  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-frame-address):
-       Rename from gdb-current-address.
-       (gdb-previous-frame-address): Rename from gdb-previous-address.
-       (gdb-selected-frame): Rename from gdb-current-frame.
-       (gdb-get-selected-frame): Rename from gdb-get-current-frame.
-       (gdb-frame-number): Rename from gdb-current-stack-level.
-       (gdb-ann3): Match new mode-name for disassembly buffer.
-       Extend initialization of variables.
-       (gdb-post-prompt): Update disassembly from gdb-frame-handler.
-       (gdb-memory-mode): Use mouse-face in header line.
-       (gdb-assembler-buffer-name): Call it disassembly and give frame
-       in mode line.
-       (gdb-source-spec-regexp, gdb-assembler-custom)
-       (gdb-invalidate-assembler, gdb-frame-handler):
-       Make robust to leading zeroes in address format.
-
-2005-05-26  Carsten Dominik  <dominik@science.uva.nl>
-
-       * textmodes/org.el (org-mode): Use `define-derived-mode' to
-       define `org-mode'.
-       (org-agenda-mode): Use `run-mode-hooks' instead of `run-hooks'.
-
-2005-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * log-edit.el (log-edit-changelog-entries): Distinguish between
-       filenames like xfns.c and fns.c.
-
-2005-05-25  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buff-menu.el (Buffer-menu-revert-function): Improve handling of
-       point after reverting.
-       (Buffer-menu-make-sort-button): Handle the case where
-       `Buffer-menu-use-header-line' is nil.
-
-2005-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * vms-patch.el (vms-magic-right-square-brace, vms-magic-colon):
-       New funcs.  In minibuffer-local-completion-map bind `]', `/'
-       and `:' to them.
-
-2005-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * startup.el (normal-top-level): Allow modification of load-path while
-       we're iterating over it.
-
-2005-05-25  Juanma Barranquero  <lekktu@gmail.com>
-
-       * thumbs.el (thumbs-thumbsdir-max-size, thumbs-temp-file)
-       (thumbs-cleanup-thumbsdir, thumbs-call-convert)
-       (thumbs-resize-interactive, thumbs-insert-image)
-       (thumbs-insert-thumb, thumbs-dired-show-marked)
-       (thumbs-find-image-at-point, thumbs-delete-images)
-       (thumbs-rename-images, thumbs-next-image, thumbs-dired-setroot)
-       (thumbs-increment-image-size, thumbs-decrement-image-size):
-       Fix typos in docstrings.
-
-2005-05-24  Andre Spiegel  <spiegel@gnu.org>
-
-       * progmodes/cperl-mode.el (cperl-vc-header-alist): Obsolete.
-       (cperl-vc-rcs-header, cperl-vc-sccs-header): New user options.
-       (cperl-mode): Use them.
-
-2005-05-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * window.el (quit-window, shrink-window-if-larger-than-buffer):
-       Doc fixes.
-
-2005-05-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gdb-ui.el (gdb-inferior-io-mode-map):
-       Bind C-d to gdb-inferior-io-eof.
-
-       * dired.el (dired-dnd-popup-notice): Use message-box.
-
-2005-05-23  Masatake YAMATO  <jet@gyve.org>
-
-       * bindings.el (mode-line-major-mode-keymap):
-       Bind [mode-line down-mouse-1] to `mouse-major-mode-menu'.
-
-       * faces.el (mode-line-highlight): New face.
-
-       * ruler-mode.el (ruler-mode-ruler): Use mode-line-highlight
-       as mouse-face.
-
-       * bindings.el (top-level, help-echo, mode-line-modified)
-       (mode-line-mule-info, mode-line-eol-desc): Use mode-line-highlight
-       as mouse-face.
-
-2005-05-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * progmodes/cc-engine.el (c-guess-basic-syntax):
-       Remove spurious call to `zerop'.
-
-       * emacs-lisp/cl.el (acons, pairlis): Add docstring.
-
-2005-05-23  Martin Stjernholm  <bug-cc-mode@gnu.org>
-
-       CC Mode update to 5.30.10:
-
-       * cc-fonts.el (c-font-lock-declarators): Fix bug where the point
-       could go past the limit in decoration level 2, thereby causing
-       errors during interactive fontification.
-
-       * cc-mode.el (c-make-inherited-keymap): Fix cc-bytecomp bug when
-       the file is evaluated interactively.
-
-       * cc-engine.el (c-guess-basic-syntax): Handle operator
-       declarations somewhat better in C++.
-
-       * cc-styles.el, cc-mode.el (c-run-mode-hooks): New helper macro to
-       make use of `run-mode-hooks' which has been added in Emacs 21.1.
-       (c-mode, c++-mode, objc-mode, java-mode, idl-mode, pike-mode)
-       (awk-mode): Use it.
-       (make-local-hook): Suppress warning about obsoleteness.
-
-       * cc-engine.el, cc-align.el, cc-cmds.el
-       (c-append-backslashes-forward, c-delete-backslashes-forward)
-       (c-find-decl-spots, c-semi&comma-no-newlines-before-nonblanks):
-       Compensate for return value from `forward-line' when it has moved
-       but not to a different line due to eob.
-
-       * cc-engine.el (c-guess-basic-syntax): Fix anchoring in
-       `objc-method-intro' and `objc-method-args-cont'.
-
-2005-05-23  Alan Mackenzie  <bug-cc-mode@gnu.org>
-
-       CC Mode update to 5.30.10:
-
-       * cc-mode.el, cc-engine.el, cc-align.el: Change the FSF's address
-       in the copyright statement.  Incidentally, change "along with GNU
-       Emacs" to "along with this program" where it occurs.
-
-       * cc-mode.el: Add a fourth parameter `t' to the awk-mode autoload,
-       so that it is interactive, hence can be found by M-x awk-mode
-       whilst cc-mode is yet to be loaded.  Reported by Glenn Morris
-       <gmorris+emacs@ast.cam.ac.uk>.
-
-       * cc-awk.el: Add character classes (e.g. "[:alpha:]") into AWK
-       Mode's regexps.
-
-2005-05-23  Kevin Ryde  <user42@zip.com.au>
-
-       * cc-align.el (c-lineup-argcont): Ignore conses for {} pairs from
-       c-parse-state, to avoid a lisp error (on bad code).
-
-2005-05-23  Lute Kamstra  <lute@gnu.org>
-
-       * subr.el (font-lock-defaults): Remove defvar as it's already
-       defined in font-core.el.
-
-       * font-lock.el (font-lock-beginning-of-syntax-function): Fix docstring.
+       * vc-git.el (vc-git-state): Call git-add --refresh to update the
+       state of the file.
+       (vc-git-workfile-unchanged-p): Delegate implementation to vc-git-state.
+       (vc-git-create-repo): Fix invalid command.
 
-2005-05-23  Nick Roberts  <nickrob@snap.net.nz>
+2007-10-08  Richard Stallman  <rms@gnu.org>
 
-       * progmodes/gdb-ui.el (gdb-info-locals-handler): Make regexps
-       more general and work when GDB variable "print pretty" is on,
-       as with Emacs, for example.
+       * textmodes/flyspell.el (flyspell-mode):
+       Catch errors in flyspell-mode-on.
 
-2005-05-22  Luc Teirlinck  <teirllm@auburn.edu>
+2007-10-09  Juanma Barranquero  <lekktu@gmail.com>
 
-       * font-core.el: Update comment.
+       * term/x-win.el (x-alternatives-map): Remove spurious parenthesis.
 
-       * emacs-lisp/easy-mmode.el (define-global-minor-mode):
-       Use `after-change-major-mode-hook' instead of `find-file-hook'.
+2007-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * buff-menu.el (Buffer-menu-mode): Use `run-mode-hooks'.
+       * international/encoded-kb.el (encoded-kbd-setup-display):
+       Use input-decode-map rather than local-key-translation-map.
 
-2005-05-22  Eli Zaretskii  <eliz@gnu.org>
+       * term/rxvt.el (rxvt-alternatives-map): New map.
+       (terminal-init-rxvt): Use it.
+       Bind rxvt-function-map in input-decode-map.
 
-       * simple.el (yank, yank-pop): Mention `yank-excluded-properties'
-       and `yank-handler' in the doc strings.
+       * term/xterm.el (xterm-alternatives-map): New map.
+       (terminal-init-xterm): Use it.
+       Bind xterm-function-map in input-decode-map.
 
-2005-05-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * term/x-win.el (x-alternatives-map): New var.
+       (x-setup-function-keys): Use it.
 
-       * emacs-lisp/cl.el (eql): Remove.  It's a builtin already.
+       * help-fns.el (describe-variable): Slightly change the layout of
+       meta-info to separate it better from the docstring.
+       Standardize insertion of extra empty lines in various circumstances.
 
-2005-05-22  Richard M. Stallman  <rms@gnu.org>
+       * diff-mode.el (diff-hunk-style): New fun.
+       (diff-end-of-hunk): Use it.
+       (diff-context->unified): Use the new `apply' undo element,
+       if applicable, so as to save undo-log space.
+       (diff-fine-change): New face.
+       (diff-fine-highlight-preproc): New function.
+       (diff-fine-highlight): New command.
+       (diff-mode-map, diff-mode-menu): Add diff-fine-highlight.
 
-       * help.el (describe-key): Move print-help-return-message call
-       out of conditional.
+       * smerge-mode.el (smerge-refine-chopup-region): Add `preproc' argument.
+       (smerge-refine-highlight-change): Add `props' argument.
+       (smerge-refine-subst): New function holding most of smerge-refine.
+       (smerge-refine): Use it.
 
-       * progmodes/etags.el (list-tags): Use with-no-warnings.
+2007-10-08  Eric S. Raymond  <esr@snark.thyrsus.com>
 
-       * mail/smtpmail.el (smtpmail-open-stream): Use with-no-warnings.
-       (smtpmail-send-queued-mail): Avoid beginning-of-buffer.
-       (starttls-extra-args, starttls-extra-arguments): Add defvars.
+       * vc.el (vc-default-wash-log): Remove unused code, the
+       log washers all live in the backends now.
+       (vc-default-comment-history): Correct for the fact
+       that wash-log is argumentless in the new API.
 
-       * mail/mailalias.el (mail-get-names): Avoid beginning-of-buffer.
+2007-10-08  Michael Albinus  <michael.albinus@gmx.de>
 
-       * language/viet-util.el (viet-viscii-nonascii-translation-table):
-       Add defvar.
+       * net/tramp.el (tramp-find-foreign-file-name-handler): Check also host.
+       (tramp-maybe-send-script): Apply `member' but `memq'.
+       (tramp-advice-file-expand-wildcards): Simplify implementation.
 
-       * emulation/viper-ex.el (viper-ex-work-buf, viper-ex-print-buf):
-       Use defvar, not defconst.
+2007-10-08  Juanma Barranquero  <lekktu@gmail.com>
 
-       * hexl.el (hexl-follow-line): Use with-no-warnings.
+       * follow.el (follow-mode): Don't run hooks twice.  Use `when'.
 
-       * emulation/tpu-extras.el: Use write-file-functions instead of
-       write-file-hooks.
+       * mb-depth.el (minibuf-depth-indicator-function): New variable.
+       (minibuf-depth-setup-minibuffer): Use it.
 
-       * dired.el (dired-font-lock-keywords): Fontify files with junk
-       extensions even if marked by -F.
+2007-10-07  Glenn Morris  <rgm@gnu.org>
 
-2005-05-22  Juanma Barranquero  <lekktu@gmail.com>
+       * simple.el (bad-packages-alist): Clarify Semantic and CEDET
+       version numbers.
 
-       * emacs-lisp/cl.el (pushnew, cl-macroexpand, floatp-safe, plusp)
-       (minusp, oddp, evenp, mapcar*, list*, copy-list, adjoin, subst):
-       * emacs-lisp/cl-extra.el (coerce, map, maplist, cl-mapc, mapl)
-       (mapcan, mapcon, some, every, notany, notevery, signum, isqrt)
-       (concatenate, list-length, get*, getf, cl-remprop):
-       * emacs-lisp/cl-macs.el (function*, case, ecase, typecase)
-       (etypecase, progv, lexical-let, lexical-let*)
-       (multiple-value-bind, multiple-value-setq, shiftf):
-       Improve argument/docstring consistency.
+2007-10-06  Juri Linkov  <juri@jurta.org>
 
-       * subr.el (focus-frame, unfocus-frame): Revert deletion on 2005-05-01.
+       * textmodes/fill.el (fill-paragraph-or-region): New function.
 
-2005-05-22  Andre Spiegel  <spiegel@gnu.org>
+       * bindings.el (esc-map): Bind M-q to fill-paragraph-or-region
+       instead of fill-paragraph.
 
-       * vc-cvs.el (vc-cvs-checkout-model): Handle the case where FILE
-       doesn't exist.
+       * tutorial.el (tutorial--default-keys): Replace fill-paragraph
+       with fill-paragraph-or-region.  Suspend command is now the same
+       `suspend-frame' on window systems and on tty.
 
-       * vc.el (vc-trunk-p): Add autoload cookie.  The function is used in
-       vc-rcs.el when vc-mistrust-permissions is t, which is not the default.
+       * image.el (image-type): Check if image-types is bound to not fail
+       on tty.
 
-2005-05-22  Nick Roberts  <nickrob@snap.net.nz>
+       * delsel.el (delete-selection-pre-hook):
+       * emulation/cua-base.el (cua-paste): Check if mouse-region-match
+       is fbound to not fail on mouseless tty.
 
-       * emacs-lisp/bytecomp.el: Remove make-obsolete-variable for
-       already deleted variables: auto-fill-hook, blink-paren-hook,
-       lisp-indent-hook, inhibit-local-variables, unread-command-event,
-       suspend-hooks, comment-indent-hook, meta-flag,
-       before-change-function, after-change-function,
-       font-lock-doc-string-face.
+2007-10-06  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-05-21  Luc Teirlinck  <teirllm@auburn.edu>
+       * net/tramp.el (top): Move loading of tramp-util.el and
+       tramp-vc.el to tramp-compat.el.
+       (tramp-make-tramp-temp-file): Complete rewrite.  Create remote
+       temporary file if possible, in order to avoid a security hole.
+       (tramp-do-copy-or-rename-file-out-of-band)
+       (tramp-maybe-open-connection): Call `tramp-make-tramp-temp-file'
+       with DONT-CREATE, because the connection is not setup yet.
+       (tramp-handle-process-file): Rewrite temporary file handling.
+       (tramp-completion-mode): New defvar.
+       (tramp-completion-mode-p): Use it.
 
-       * emacs-lisp/derived.el (define-derived-mode): Doc fix.
+       * net/tramp-compat.el (top): Load tramp-util.el and tramp-vc.el.
 
-2005-05-21  Eli Zaretskii  <eliz@gnu.org>
+       * net/tramp-fish.el (tramp-fish-handle-process-file):
+       Rewrite temporary file handling.
 
-       * mail/rmail.el (rmail-reply): Filter the list in reply-to through
-       rmail-dont-reply-to.
+2007-10-06  Eric S. Raymond  <esr@snark.thyrsus.com>
 
-2005-05-21  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
+       * vc.el: Workfile version -> focus version change.  Port various
+       comments from new VC to reduce the noise in the diff.
+       Patch in the new vc-create-repo function to go with the
+       header comment about it already present.
+       There are no changes to existing logic in this patch.
+       (vc-revert-buffer1): Rename to vc-revert-buffer-internal.
 
-       * mail/sendmail.el (mail-send): Use [[:space:]] instead of a
-       literal blank when splitting new-header-values.
+2007-10-06  Aaron Hawley  <aaronh@garden.org>
 
-2005-05-21  Matt Hodges  <MPHodges@member.fsf.org>
+       * autoinsert.el (auto-insert-alist): Add a Texinfo entry.
 
-       * calendar/cal-menu.el (cal-menu-update): Add separator as a
-       string so that tmm doesn't create a completion entry for it.
+2007-10-05  Chris Moore  <dooglus@gmail.com>
 
-       * textmodes/table.el (table-disable-menu): Ditto.
+       * server.el (server-kill-new-buffers): Doc fix.
 
-2005-05-21  Richard M. Stallman  <rms@gnu.org>
+2007-10-05  John W. Eaton  <jwe@octave.org>
+
+       * progmodes/octave-mod.el (octave-abbrev-table): Add "until".
+       (octave-begin-keywords): Add "do".
+       (octave-end-keywords): Remove "end".
+       (octave-reserved-words): Add "end".  Remove "all_va_args",
+       "gplot", and 'gsplot".
+       (octave-text-functions): Remove "gset", "gshow", "set", and "show".
+       (octave-variables): Remove "IMAGEPATH", "INFO_FILE",
+       "INFO_PROGRAM", "LOADPATH", "__error_text__", "automatic_replot",
+       "default_return_value", "define_all_return_values",
+       "do_fortran_indexing", "empty_list_elements_ok",
+       "gnuplot_has_multiplot", "implicit_str_to_num_ok",
+       "ok_to_lose_imaginary_part", "prefer_column_vectors",
+       "prefer_zero_one_indexing", "propagate_empty_matrices",
+       "resize_on_range_error", "treat_neg_dim_as_zero",
+       "warn_assign_as_truth_value", "warn_comma_in_global_decl",
+       "warn_divide_by_zero", "warn_function_name_clash",
+       "warn_missing_semicolon", "whitespace_in_literal_matrix".
+       Add "DEFAULT_EXEC_PATH", "DEFAULT_LOADPATH", "IMAGE_PATH",
+       "crash_dumps_octave_core", "sighup_dumps_octave_core",
+       "sigterm_dumps_octave_core".
+       (octave-block-match-alist): Remove "end" from block-end keywords.
+       (octave-mode): Update ftp site address.
+
+2007-10-05  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * vc.el: Reorder functions, no code changes.
+
+2007-10-04  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-make-temp-file): Move to tramp-compat.el.
+       (tramp-do-copy-or-rename-file-directly): Handle tmpfile only in
+       the cond clauses where needed.
+       (tramp-handle-write-region): Rearrange code for proper handling of
+       tmpfile.
+
+       * net/tramp-compat.el (tramp-compat-make-temp-file): New defsubst.
 
-       * progmodes/idlwave.el (idlwave-doc-header): Use insert-file-contents.
+       * net/tramp.el:
+       * net/tramp-fish.el:
+       * net/tramp-ftp.el:
+       * net/tramp-smb.el: Rename `tramp-make-temp-file' to
+       `tramp-compat-make-temp-file'.
 
-       * progmodes/flymake.el (flymake-makehash): Use with-no-warnings.
+2007-10-04  Juanma Barranquero  <lekktu@gmail.com>
 
-       * net/rcompile.el (remote-compile): Use compilation-start.
+       * image-dired.el (image-dired-image-at-point-p): Fix typo in docstring.
 
-       * tmm.el (tmm-shortcut): Avoid using beginning-of-buffer.
+2007-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-05-21  Daniel Pfeiffer  <occitan@esperanto.org>
+       * emacs-lisp/copyright.el (copyright-update): Don't update if the file
+       already uses a more recent copyright version than the "current" one.
 
-       * files.el (auto-mode-alist): Check GNUmakefile before makefile.
-       Default to makefile-bsdmake-mode on BSD systems.
+2007-10-03  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-       * imenu.el (imenu-generic-expression, imenu--generic-function'):
-       REGEXP may also be a search function now.  The part of doc-string
-       for describing the structure was 95% identical to that of
-       `imenu--generic-function'.  Unify it there.
+       * doc-view.el (doc-view-dvi->pdf-sentinel, doc-view-reset-slice)
+       (doc-view-insert-image): Minor aesthetical docstring changes.
 
-       * progmodes/make-mode.el (makefile-imenu-generic-expression):
-       Use function to find dependencies, because regexp alone is so complex,
-       it easily goes into an endless loop.
-       (makefile-makepp-mode): Also add submenu for Perl functions
-       defined in the makefile.
-       (makefile-bsdmake-mode): Special imenu-generic-expression no
-       longer needed, due to function call.
-       (makefile-match-dependency): Take BOUND into account when checking
-       if we're through.
+2007-10-03  Tassilo Horn  <tassilo@member.fsf.org>
 
-2005-05-20  Jay Belanger  <belanger@truman.edu>
+       * doc-view.el (doc-view): Don't ignore pdf and dvi files when
+       completing filename.
+       (doc-view-search-internal): Docstring change.
 
-       * calc/calc-units.el (calc-invalidate-units-table):
-       Use inhibit-read-only.
-       (math-build-units-table-buffer): Use view-mode.
+2007-10-03  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-05-20  David Kastrup  <dak@gnu.org>
-
-       * emacs-lisp/easymenu.el (easy-menu-add): Correct docstring since
-       easy-menu-add is not a nop on Emacs; and clarify when to call it.
-
-2005-05-20  Lute Kamstra  <lute@gnu.org>
-
-       * diff-mode.el (diff-header-face, diff-file-header-face)
-       (diff-index-face, diff-hunk-header-face, diff-removed-face)
-       (diff-added-face, diff-changed-face, diff-function-face)
-       (diff-context-face, diff-nonexistent-face): Put them in the
-       diff-mode customization group.
-
-2005-05-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * progmodes/vhdl-mode.el (vhdl-font-lock-match-item): Simplify regexp.
-
-       * progmodes/sh-script.el (sh-mode, sh-get-word): Minor regexp fixes.
-
-       * font-lock.el (lisp-font-lock-keywords-2): Don't error.
-       Minor regexp-optimization.
-
-2005-05-20  Carsten Dominik  <dominik@science.uva.nl>
+       * net/tramp.el (top): Add tramp-compat to `tramp-unload-hook'.
+       (tramp-file-name-handler-alist):
+       Add `tramp-handle-insert-file-contents-literally'.  Needed for XEmacs.
+       (tramp-make-temp-file): Use `make-temp-name'.  `make-temp-file',
+       used before, creates the file already, which is not desired.
+       (tramp-do-copy-or-rename-file-directly): Simplify handling of
+       temporary file.
+       (tramp-handle-insert-file-contents): Assign the result in the
+       short track case.
+       (tramp-handle-insert-file-contents-literally): New defun.
+       (tramp-completion-mode-p): Revert change from 2007-09-24.
+       Checking for `return' etc as last character is not sufficient, for
+       example in dired-mode when entering <g> (revert-buffer) or
+       <s> (dired-sort).
 
-       * textmodes/org.el (org-agenda-toggle-time-grid): New command.
-       (org-agenda-use-time-grid, org-agenda-time-grid): New options.
-       (org-agenda-add-time-grid-maybe): New function.
-       (org-agenda): Call `org-agenda-add-time-grid-maybe'.
-       (org-table-create): `dotimes' instead of `mapcar'.
-       (org-xor): Simplify implementation.
-       (org-agenda): `inhibit-redisplay' turned on.
-       (org-agenda-change-all-lines): Use `org-format-agenda-item' to get
-       a consistent line after a state change.
-       (org-agenda-remove-times-when-in-prefix): New option.
-       (org-prefix-has-time): New variable.
-       (org-parse-time-string): Optional argument NODEFAULT.
-       (org-format-agenda-item): Parse items for time-of-day
-       specifications and move these into the prefix if possible.
-       (org-agenda-priority): Get current heading, not previous heading
-       during agenda remote editing.
+       * net/tramp-compat.el (top): Add also compatibility code for loading
+       appropriate timer package.
+       (tramp-compat-copy-tree): Check for `subrp' and `symbol-file' in
+       order to avoid autoloading problems.
 
-2005-05-20  Juanma Barranquero  <lekktu@gmail.com>
+       * net/tramp-fish.el:
+       * net/tramp-smb.el: Move further compatibility code to tramp-compat.el.
 
-       * emacs-lisp/cl-seq.el (reduce, fill, replace, remove*)
-       (remove-if, remove-if-not, delete*, delete-if, delete-if-not)
-       (remove-duplicates, delete-duplicates, substitute)
-       (substitute-if, substitute-if-not, nsubstitute, nsubstitute-if)
-       (nsubstitute-if-not, find, find-if, find-if-not, position)
-       (position-if, position-if-not, count, count-if, count-if-not)
-       (mismatch, search, sort*, stable-sort, merge, member*)
-       (member-if, member-if-not, assoc*, assoc-if, assoc-if-not)
-       (rassoc*, rassoc-if, rassoc-if-not, union, nunion)
-       (intersection, nintersection, set-difference, nset-difference)
-       (set-exclusive-or, nset-exclusive-or, subsetp, subst-if)
-       (subst-if-not, nsubst, nsubst-if, nsubst-if-not, sublis)
-       (nsublis, tree-equal): Improve argument/docstring consistency.
+       * net/tramp-ftp.el (tramp-ftp-file-name-handler): Handle the case
+       where the second parameter of `copy-file' or `rename-file' is a
+       remote file but not via ftp.
 
-       * subr.el (send-string, send-region): Remove obsolescence declaration.
-       (window-dot, set-window-dot, read-input, show-buffer)
-       (eval-current-buffer, string-to-int):
-       Add release number to obsolescence declarations.
+2007-10-02  Richard Stallman  <rms@gnu.org>
 
-2005-05-19  Kim F. Storm  <storm@cua.dk>
+       * frame.el (cursor-in-non-selected-windows): Doc fix.
 
-       * ido.el (ido-magic-forward-char): Enter ido-find-file at end of input.
-       (ido-magic-backward-char): Enter ido-switch-buffer at start of input.
+2007-10-01  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-05-20  Matt Hodges  <MPHodges@member.fsf.org>
-
-       * faces.el (list-faces-display): Make back button respect optional
-       regexp arg.
-
-2005-05-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * calculator.el (calculator-radix-grouping-mode)
-       (calculator-radix-grouping-digits, calculator-displayer)
-       (calculator-radix-grouping-separator, calculator-copy-displayer):
-       * dabbrev.el (dabbrev-search-these-buffers-only):
-       * diff-mode.el (diff-jump-to-old-file, diff-update-on-the-fly)
-       (diff-advance-after-apply-hunk, diff-mode-hook)
-       (diff-minor-mode-prefix):
-       * imenu.el (imenu-use-popup-menu):
-       * jit-lock.el (jit-lock-context-time):
-       * newcomment.el (comment-fill-column, comment-column)
-       (comment-style, comment-padding, comment-multi-line)
-       (comment-empty-lines, comment-auto-fill-only-comments):
-       * reveal.el (reveal-around-mark):
-       * uniquify.el (uniquify-buffer-name-style)
-       (uniquify-after-kill-buffer-p)
-       (uniquify-ask-about-buffer-names-p, uniquify-ignore-buffers-re)
-       (uniquify-min-dir-content, uniquify-separator)
-       (uniquify-trailing-separator-p, uniquify-strip-common-suffix):
-       * w32-vars.el (w32-fixed-font-alist):
-       * emacs-lisp/testcover.el (testcover-potentially-1value-functions):
-       * obsolete/rsz-mini.el (resize-minibuffer-frame-max-height):
-       * progmodes/antlr-mode.el (antlr-font-lock-maximum-decoration):
-       * progmodes/perl-mode.el (perl-indent-level)
-       (perl-continued-statement-offset, perl-continued-brace-offset)
-       (perl-brace-offset, perl-brace-imaginary-offset)
-       (perl-label-offset, perl-indent-continued-arguments)
-       (perl-tab-always-indent, perl-tab-to-comment, perl-nochange):
-       * progmodes/tcl.el (tcl-indent-level)
-       (tcl-continued-indent-level, tcl-auto-newline)
-       (tcl-tab-always-indent, tcl-electric-hash-style)
-       (tcl-help-directory-list, tcl-use-smart-word-finder)
-       (tcl-application, tcl-command-switches, tcl-prompt-regexp)
-       (inferior-tcl-source-command):
-       * textmodes/fill.el (enable-kinsoku):
-       * textmodes/reftex-vars.el (reftex-index-phrases-wrap-long-lines):
-       * textmodes/table.el (table-yank-handler):
-       Specify missing group (and type, if simple) in defcustom.
+       * play/zone.el (zone): Let-bind show-trailing-whitespace to nil.
+       Suggested by Chris Moore <christopher.ian.moore@gmail.com>.
 
-2005-05-19  Luc Teirlinck  <teirllm@auburn.edu>
+2007-10-01  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * progmodes/compile.el (compilation-finish-function): Fix defvar.
+       * calc/calc-math.el (math-largest-emacs-expt): Handle the cases
+       when `expt' doesn't give range errors.
 
-2005-05-19  Richard M. Stallman  <rms@gnu.org>
+2007-10-01  Markus Triska  <markus.triska@gmx.at>
 
-       * progmodes/make-mode.el (makefile-mode): Use run-mode-hooks.
-
-       * subr.el (event-basic-type): Don't get an error.
-       (left-fringe-p): Function deleted.
-
-       * buff-menu.el (Buffer-menu-buffer-face): In group Buffer-menu.
-       (list-buffers-noselect): Set `font-lock-face' property, not `face'.
-
-       * dired-aux.el (dired-copy-file-recursive): Handle symlinks
-       in recursive copy.
-
-       * frame.el (show-trailing-whitespace): In group `whitespace-faces'.
-
-       * emacs-lisp/byte-run.el (eval-when-compile): Doc fix.
+       * calc/calc-math.el (math-smallest-emacs-expt):
+       Make the computation more robust.
 
-       * emacs-lisp/bytecomp.el
-       (byte-compile-file-form-custom-declare-variable):
-       Call byte-compile-nogroup-warn if appropriate.
+2007-09-30  David Kastrup  <dak@gnu.org>
 
-       * progmodes/compile.el (compilation-finish-function): Mark obsolete.
-       (compilation-set-window): Don't call left-fringe-p; do it directly.
+       * startup.el (argv): Alias for `command-line-args-left' to use as
+       `(pop argv)' inside of --eval command sequences.  Allows for
+       passing shell commands into Emacs verbatim without need for Lisp
+       quoting.
 
-2005-05-19  Jay Belanger  <belanger@truman.edu>
+       * autorevert.el (auto-revert-handler): In `auto-revert-tail-mode',
+       check only for changed size.
+       (auto-revert-tail-handler): Get size from caller.  If the file has
+       shrunk, tail the whole file again (the file presumably has been
+       rewritten).
 
-       * calc/calc-graph.el (calc-graph-format-data): Make sure
-       var-PlotRejects is bound before trying to check its value.
+       * woman.el (woman-topic-all-completions, woman-mini-help):
+       Fix fallout from 2007-09-07 introduction of `dolist' when the list
+       actually was being manipulated in the loop.
+       (woman-Cyg-to-Win, woman-pre-process-region)
+       (woman-horizontal-escapes, woman-if-body, woman-unescape)
+       (woman-strings, woman-special-characters, woman1-hc)
+       (woman-change-fonts, woman-find-next-control-line):
+       Use `match-beginning' rather than `match-string' when the result is
+       just used as a flag.
 
-2005-05-19  Carsten Dominik  <dominik@science.uva.nl>
+2007-09-30  Michael Albinus  <michael.albinus@gmx.de>
 
-       * textmodes/reftex.el (reftex-isearch-minor-mode): Move the
-       definition of this variable from reftex-global.el to reftex.el,
-       because it is needed in the menu.
+       * net/tramp-compat.el: New file.
 
-2005-05-19  Lute Kamstra  <lute@gnu.org>
+       * net/tramp.el:
+       * net/tramp-fish.el:
+       * net/tramp-smb.el:
+       * net/tramp-uu.el:
+       * net/trampver.el: Move compatibility code to tramp-compat.el.
+       Apply `mapc' instead of `mapcar' when the code needs side effects
+       only.  Move utf-8 coding cookie to the second line.
 
-       * emacs-lisp/copyright.el (copyright-fix-years): Make sure all
-       years are fixed.  Don't insert a space after a dash.
+2007-09-30  Reiner Steib  <Reiner.Steib@gmx.de>
 
-2005-05-19  Kim F. Storm  <storm@cua.dk>
+       * term/x-win.el (x-gtk-stock-map): Add Gnus and MH-E icons.
+       Improve custom type.
+       (icon-map-list): Make it customizable.  Document how to disable
+       stock icons.
 
-       * emulation/crisp.el (crisp-home, crisp-end): Put CUA property.
+2007-09-30  Richard Stallman  <rms@gnu.org>
 
-2005-05-19  Daniel Pfeiffer  <occitan@esperanto.org>
+       * play/zone.el (zone-hiding-modeline): Use mode-line-format.
 
-       * font-lock.el (lisp-font-lock-keywords-2): Do \\) only in
-       strings, because (eq ... ?\\) is fairly frequent.
+2007-09-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * progmodes/make-mode.el (makefile-add-this-line-targets):
-       Simplify and integrate into `makefile-pickup-targets'.
-       (makefile-add-this-line-macro): Simplify and integrate into
-       `makefile-pickup-macros.
-       (makefile-pickup-filenames-as-targets): Simplify.
-       (makefile-previous-dependency, makefile-match-dependency):
-       Don't stumble over `::'.
+       * term/x-win.el (x-gtk-stock-map): Version is 22.2.
 
-2005-05-19  Nick Roberts  <nickrob@snap.net.nz>
+2007-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * subr.el (post-command-idle-hook, post-command-idle-delay):
-       Remove obsoletion of post-command-idle-hook and
-       post-command-idle-delay.
+       * t-mouse.el (gpm-mouse-mode): Rename from t-mouse-mode.  Rewrite.
+       (t-mouse-mode): New compatibility alias.
 
-       * faces.el (list-faces-display): Provide button when describe-face
-       is called to take user back to the list of faces.
+2007-09-28  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * help-fns.el (describe-variable): Remove hyperlinks in a
-       variable's value as these are quite frequently inappropriate.
+       * server.el (server-delete-client): Only delete the terminal if it
+       is non-nil.
 
-       * follow.el (follow-submit-feedback, follow-mode):
-       Remove references to post-command-idle-hook.
+2007-09-28  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-05-18  Daniel Pfeiffer  <occitan@esperanto.org>
+       * net/tramp.el (with-file-property, with-connection-property):
+       Highlight as keyword.
+       (tramp-rfn-eshadow-setup-minibuffer)
+       (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
+       (tramp-set-file-uid-gid, tramp-do-copy-or-rename-file-via-buffer)
+       (tramp-do-copy-or-rename-file-directly)
+       (tramp-do-copy-or-rename-file-out-of-band)
+       (tramp-handle-shell-command, tramp-get-debug-buffer)
+       (tramp-send-command-and-read, tramp-equal-remote)
+       (tramp-get-local-gid): Pacify byte-compiler.
+       (tramp-handle-file-name-directory): Result shall not be expanded.
+       (tramp-find-foreign-file-name-handler): Rewrite.
+       (tramp-dissect-file-name): Add optional parameter NODEFAULT.
 
-       * progmodes/make-mode.el (makefile-previous-dependency)
-       (makefile-match-dependency): Check for := (and in bsd mode also
-       !=) to give a better result, even when font-lock is not on.
+       * net/tramp-cache.el (tramp-cache-print): Pacify byte-compiler.
 
-2005-05-18  Jay Belanger  <belanger@truman.edu>
+       * net/tramp-fish.el (tramp-fish-handle-expand-file-name):
+       Apply `tramp-completion-mode-p'.
+       (tramp-fish-handle-set-file-times)
+       (tramp-fish-handle-executable-find)
+       (tramp-fish-handle-process-file, tramp-fish-get-file-entries)
+       (tramp-fish-retrieve-data): Pacify byte-compiler.
 
-       * calc/calc-help.el (calc-s-prefix-help):
-       Add `calc-copy-special-constant' to help string.
+       * net/tramp-gw.el (tramp-gw-basic-authentication):
+       Call `tramp-read-passwd' with first parameter `nil'.
 
-2005-05-18  Luc Teirlinck  <teirllm@auburn.edu>
+2007-09-28  Glenn Morris  <rgm@gnu.org>
 
-       * emacs-lisp/eldoc.el (eldoc-mode): Doc fix.
+       * mail/supercite.el (sc-attribs-filter-namelist): Use mapc rather
+       than mapcar.
 
-2005-05-18  Jay Belanger  <belanger@truman.edu>
+       * textmodes/tex-mode.el (tex-suscript-height-ratio)
+       (tex-suscript-height-minimum): New customizable variables.
+       (tex-suscript-height): New function.
+       (superscript, subscript): Set height using tex-suscript-height
+       rather than fixing at 0.8.
+       (tex-fontify-script, tex-font-script-display): Add :version tag.
 
-       * calc/calc-poly.el (math-factor-poly-coefs): Make sure the terms
-       in linear factors are in proper order.
+2007-09-27  Juanma Barranquero  <lekktu@gmail.com>
 
-2005-05-18  Carsten Dominik  <dominik@science.uva.nl>
+       * progmodes/python.el (python-eldoc-function): Doc fix.
 
-       * textmodes/reftex-vars.el (reftex-cite-format-builtin):
-       Support for jurabib.
+2007-09-27  Glenn Morris  <rgm@gnu.org>
 
-       * textmodes/reftex.el (featurep): Define aliases for overlay
-       commands, for XEmacs compatibility, and use these aliases in
-       overlay initializations.
-       (reftex-highlight): Use `reftex-move-overlay'.
-       (reftex-unhighlight): Use `reftex-delete-overlay'.
-       (reftex-uniq): Function removed.  Use `reftex-uniquify' instead.
-       (reftex-access-search-path): Use `reftex-uniquify' instead of
-       `reftex-uniq'.
+       * image.el (image-type-auto-detected-p): Doc fix.  Don't detect an
+       image if it is not in image-type-auto-detectable, or is there with
+       a nil value.
 
-       * textmodes/reftex-sel.el (reftex-select-unmark): Overlay
-       `before-string' property modification enables for Emacs as well.
-       (reftex-select-item): Use `reftex-delete-overlay'.
-       (reftex-select-mark): Use `reftex-make-overlay' and
-       `reftex-overlay-put'.
-       (reftex-select-unmark): Use `reftex-delete-overlay' and
-       `reftex-overlay-put'.
+2007-09-27  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-05-18  Lute Kamstra  <lute@gnu.org>
+       * net/tramp.el (tramp-maybe-open-connection): Make test for alive
+       connection more robust.
 
-       * emacs-lisp/lisp.el (check-parens): Fix docstring.
+2007-09-26  Juanma Barranquero  <lekktu@gmail.com>
 
-2005-05-18  Juanma Barranquero  <lekktu@gmail.com>
+       * emacs-lisp/eldoc.el (eldoc-function-argstring-format):
+       Deal with the case that special &keywords are at the beginning or
+       end of the argument list.  Also add some (incomplete) support for
+       non-standard arglists.
 
-       * add-log.el (add-change-log-entry):
-       * array.el (array-make-template, array-reconfigure-rows)
-       (array-init-max-row, array-init-max-column)
-       (array-init-columns-per-line, array-init-field-width):
-       * replace.el (replace-match-maybe-edit, perform-replace):
-       * textmodes/spell.el (spell-region):
-       Replace `read-input' by `read-string'.
+2007-09-26  Juanma Barranquero  <lekktu@gmail.com>
 
-       * forms.el (forms-mode):
+       * emacs-lisp/eldoc.el (eldoc-message-commands-table-size)
+       (eldoc-message-commands, eldoc-current-idle-delay)
+       (eldoc-function-argstring-format): Fix typos in docstrings.
+
+2007-09-26  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc-units.el (calc-convert-units)
+       (calc-convert-temperature): Remove unnecessary colons.
+
+2007-09-26  Bastien Guerry  <bzg@altern.org>
+
+       * org-export-latex.el (org-export-latex-tables-verbatim): New function.
+       (org-export-latex-remove-from-headlines): Name changed because of typo.
+       (org-export-latex-quotation-marks-convention): Option removed.
+       (org-export-latex-make-preamble): Handle the DATE option.
+       (org-export-latex-cleaned-string): Now the only cleaning function,
+       synched up with org.el.
+       (org-export-latex-lists, org-export-latex-parse-list)
+       (org-export-list-to-latex): New functions.
+
+2007-09-26  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.el (org-kill-is-subtree-p): Use `org-outline-regexp'.
+       (org-outline-regexp): New constant.
+       (org-remember-handler): Throw error when the target file is not in
+       org-mode.
+       (org-cleaned-string-for-export): No longer call
+       `org-export-latex-cleaned-string' with an argument.
+       (org-get-tags): Returns now a list, not a string.
+       (org-get-tags-string): New function.
+       (org-archive-subtree): No need to split return of `org-get-tags'.
+       (org-set-tags, org-entry-properties): Call `org-get-tags-string'
+       instead of `org-get-tags'.
+       (org-agenda-format-date): Rename from `org-agenda-date-format'.
+       (org-time-from-absolute, org-agenda-format-date-aligned): New funs.
+       (org-compatible-face): New argument INHERITS.  Inherit from this
+       face if possible.
+       (org-level-1, org-level-2, org-level-3, org-level-4)
+       (org-level-5, org-level-6, org-level-7, org-level-8)
+       (org-special-keyword, org-drawer, org-column, org-warning)
+       (org-archived, org-todo, org-done, org-headline-done, org-table)
+       (org-formula, org-code, org-agenda-structure)
+       (org-scheduled-today, org-scheduled-previously)
+       (org-upcoming-deadline, org-time-grid): Call `org-compatible-face'
+       in the new way.
+       (org-get-heading): New argument NO-TAGS.
+       (org-fast-tag-selection-include-todo): Made defvar instead of
+       defcustom, feature is not deprecated.
+       (org-remember-store-without-prompt): New default value t.
+       (org-todo-log-states): New variable.
+       (org-set-regexps-and-options): #+TODO is an alias for SEQ_TODO.
+       Compute the log states.
+       (org-goto-map): More commands copied from global map.  Also bind
+       `org-occur'.
+       (org-goto): Made into a general lookup command.
+       (org-get-location): Complete rewrite.
+       (org-goto-exit-command): New variable.
+       (org-goto-selected-point): New variable.
+       (org-goto-ret, org-goto-left, org-goto-right, org-goto-quit):
+       Set the new variables.
+       (org-paste-subtree): Whitespace insertion strategy revised.
+       (org-remember-apply-template): Protect v-A from the possibility
+       that v-a might be nil.
+       (org-remember-handler): Insertion rules revised.
+       (org-todo): Respect org-todo-log-states.
+       (org-up-heading-safe): New function.
+       (org-entry-get-with-inheritance): Use `org-up-heading-safe'.
+
+2007-09-26  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/cc-cmds.el (c-indent-line-or-region): Only indent the
+       region if in transient-mark-mode.
+
+2007-09-26  Juanma Barranquero  <lekktu@gmail.com>
+
+       * calc/calc-ext.el (calc-init-extensions, calc-reset):
+       * calc/calc-help.el (calc-full-help):
+       * calc/calc-misc.el (another-calc):
+       * calc/calc-store.el (calc-var-name-map):
+       * calc/calc-stuff.el (calc-flush-caches):
+       * calc/calc-units.el (math-build-units-table):
+       * calc/calc.el (calc-digit-map, calc-dispatch-map, calc-mode)
+       (calc-quit):
+       * calendar/icalendar.el (icalendar--format-ical-event)
+       (icalendar--convert-ical-to-diary):
+       * emacs-lisp/authors.el (authors):
+       * emacs-lisp/cust-print.el (custom-print-install)
+       (custom-print-uninstall):
+       * emacs-lisp/disass.el (disassemble-1):
+       * emacs-lisp/easy-mmode.el (easy-mmode-define-syntax):
+       * emacs-lisp/edebug.el (byte-compile-resolve-functions):
+       * emacs-lisp/elint.el (elint-current-buffer, elint-check-defun-form)
+       (elint-check-let-form, elint-check-condition-case-form)
+       (elint-initialize):
+       * emacs-lisp/elp.el (elp-results):
+       * emacs-lisp/generic.el (generic-mode-internal):
+       * emacs-lisp/re-builder.el (reb-delete-overlays):
+       * emacs-lisp/regi.el (regi-interpret):
+       * emacs-lisp/sregex.el (sregex--char-aux):
+       * emulation/cua-rect.el (cua--deactivate-rectangle)
+       (cua--highlight-rectangle, cua--rectangle-post-command):
+       * emulation/viper-keym.el (viper-toggle-key, viper-ESC-key):
+       * emulation/viper-macs.el (viper-describe-kbd-macros)
+       (viper-describe-one-macro):
+       * emulation/viper-util.el (viper-setup-master-buffer):
+       * emulation/viper.el (set-viper-state-in-major-mode):
+       * international/mule-diag.el (describe-current-coding-system):
+       * language/ethio-util.el (ethio-fidel-to-sera-buffer):
+       * mail/emacsbug.el (report-emacs-bug):
+       * net/ange-ftp.el (ange-ftp-call-chmod, ange-ftp-parse-bs2000-listing):
+       * obsolete/hilit19.el (hilit-unhighlight-region)
+       (hilit-set-mode-patterns):
+       * play/solitaire.el (solitaire-check, solitaire-solve):
+       * play/zone.el (zone-pgm-rotate):
+       * progmodes/ada-mode.el (ada-save-exceptions-to-file):
+       * progmodes/ada-prj.el (ada-prj-display-page):
+       * progmodes/delphi.el (delphi-search-directory, delphi-find-unit-file)
+       (delphi-debug-mode-map, delphi-mode-map, delphi-mode):
+       * progmodes/ebrowse.el (ebrowse-tree-mode, ebrowse-view-exit-fn)
+       (ebrowse-member-mode, ebrowse-save-tree-as, ebrowse-save-class):
+       * progmodes/sh-script.el (sh-make-vars-local)
+       (sh-reset-indent-vars-to-global-values):
+       * progmodes/sql.el (top):
+       * progmodes/vhdl-mode.el (vhdl-set-style, vhdl-regress-line):
+       * progmodes/xscheme.el (top):
+       * textmodes/artist.el (artist-mt-get-symbol-from-keyword-sub)
+       (artist-go-retrieve-from-symbol-sub, artist-go-get-symbol-shift-sub)
+       (artist-fc-retrieve-from-symbol-sub, artist-vaporize-line)
+       (artist-vaporize-lines, artist-ellipse-compute-fill-info)
+       (artist-submit-bug-report):
+       * textmodes/flyspell.el (flyspell-delay-commands)
+       (flyspell-deplacement-commands):
+       * textmodes/table.el (table--generate-source-epilogue, table-insert)
+       (table--generate-source-cells-in-a-row, table--make-cell-map)
+       (*table--cell-describe-bindings): Use `mapc' rather than `mapcar'.
+
+2007-09-25  Juanma Barranquero  <lekktu@gmail.com>
+
+       * allout.el (produce-allout-mode-map, allout-process-exposed):
+       * ansi-color.el (ansi-color-make-color-map):
+       * autoinsert.el (auto-insert):
+       * bookmark.el (bookmark-bmenu-list, bookmark-show-all-annotations):
+       * dired-aux.el (dired-create-files):
+       * dired.el (dired-restore-desktop-buffer):
+       * ediff-diff.el (ediff-setup-fine-diff-regions):
+       * ediff-mult.el (ediff-intersect-directories)
+       (ediff-redraw-directory-group-buffer, ediff-dir-diff-copy-file)
+       (ediff-redraw-registry-buffer):
+       * ediff-ptch.el (ediff-fixup-patch-map):
+       * ediff-util.el (ediff-toggle-multiframe, ediff-toggle-use-toolbar)
+       (ediff-really-quit, ediff-clear-diff-vector):
+       * emerge.el (emerge-really-quit):
+       * ffap.el (ffap-replace-file-component):
+       * filecache.el (file-cache-add-directory)
+       (file-cache-add-directory-recursively)
+       (file-cache-add-from-file-cache-buffer, file-cache-delete-file-regexp)
+       (file-cache-delete-directory, file-cache-files-matching-internal)
+       (file-cache-display):
+       * files.el (cd):
+       * find-lisp.el (find-lisp-insert-directory):
        * finder.el (finder-compile-keywords):
-       * shadowfile.el (shadow-read-files):
-       Replace `eval-current-buffer' by `eval-buffer'.
-
-       * terminal.el (te-pass-through):
-       * net/ange-ftp.el (ange-ftp-process-filter, ange-ftp-gwp-filter)
-       (ange-ftp-raw-send-cmd):
-       * net/telnet.el (telnet-interrupt-subjob, telnet-c-z)
-       (send-process-next-char, telnet-initial-filter, telnet):
-       Replace `send-string' by `process-send-string'.
-
-       * progmodes/prolog.el (inferior-prolog-mode): Doc fix.
-       (prolog-consult-region): Replace `send-string' by
-       `process-send-string'; replace `send-region' by `process-send-region'.
-
-       * progmodes/delphi.el (delphi-log-msg):
-       Replace `set-window-dot' by `set-window-point'.
-
-       * subr.el (window-dot, set-window-dot, read-input, send-string)
-       (send-region, show-buffer, eval-current-buffer):
-       Make really obsolete, as the comment says.
-
-2005-05-17  Kim F. Storm  <storm@cua.dk>
-
-       * emulation/cua-base.el (cua-use-hyper-key): Doc fix.
-       (cua--init-keymaps): Bind C-return instead of S-return to set
-       rectangle mark.
-
-       * emulation/cua-rect.el (cua--init-rectangles): Bind C-return
-       instead of S-return to toggle/clear rectangle mark.
-
-2005-05-17  Daniel Pfeiffer  <occitan@esperanto.org>
-
-       * progmodes/make-mode.el (makefile-dependency-skip): New variable.
-       (makefile-macroassign-regex, makefile-make-font-lock-keywords):
-       Also fontify plain strings assigned to variables, mostly so that a
-       colon has a face and is thus not taken as a dependency separator.
-       (makefile-previous-dependency): Inline the new matcher, because it
-       is too complex to work in both directions.
-       (makefile-match-dependency): Eliminate `backward' arg (see above).
-       Completely reimplemented so as to not sometimes go into an endless
-       loop.  It should also be more efficient, because first it only
-       searches for `:', instead of applying the very complex regexp.
-       (makefile-mode): Cancel `font-lock-support-mode', because blocks
-       to be fontified in one piece can be too long for JIT.
-       Makefiles are never *that* big.
-
-2005-05-17  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * dired.el (dired-mode): Simplify.
-
-2005-05-17  Lute Kamstra  <lute@gnu.org>
-
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Don't generate a
-       defcustom for the mode hook variable.
-
-       * emacs-lisp/authors.el (authors): Do parse the ChangeLogs of the
-       Emacs Lisp Reference Manual.
-
-2005-05-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/cl.el (eql, floatp-safe, plusp, minusp, oddp)
-       (evenp, list*):
-       * emacs-lisp/cl-macs.el (macrolet, symbol-macrolet):
-       * emacs-lisp/cl-seq.el (subsetp, tree-equal): Doc fixes.
-
-       * net/tramp-smb.el (tramp-smb-open-connection):
-       Pass `tramp-chunksize' as fifth (required) argument.
-
-2005-05-16  Daniel Pfeiffer  <occitan@esperanto.org>
-
-       * font-lock.el (lisp-font-lock-keywords-1):
-       Set `font-lock-negation-char-face' for [^...] char group.
-       (lisp-font-lock-keywords-2): Highlight regexp's \\( \\| \\).
-
-       * progmodes/make-mode.el (makefile-dependency-regex): Turn it into
-       a var, and refine it to mask one more level of nested vars.
-       (makefile-rule-action-regex): Turn it into a var, and refine it so
-       it recognizes backslashed continuation lines as belonging to the
-       same command.
-       (makefile-macroassign-regex): Refine it so it recognizes
-       backslashed continuation lines as belonging to the same command.
-       (makefile-var-use-regex): Don't look at the next char, because it
-       might be the same one to be skipped by the initial [^$], leading
-       to an overlooked variable use.
-       (makefile-make-font-lock-keywords): Remove two parameters, which
-       are now variables that some of the modes set locally.
-       Handle dependency and rule action matching through functions, because
-       regexps alone match too often.  Dependency matching now comes
-       last, so it can check, whether a colon already matched something else.
-       (makefile-mode): Inform that font-lock improves makefile parsing
-       capabilities.
-       (makefile-match-dependency, makefile-match-action): New functions.
-
-2005-05-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs-lisp/cl-extra.el (equalp): Doc fix.
-
-       * align.el (align-regexp):
-       * ansi-color.el (ansi-color-get-face):
-       * array.el (array-reconfigure-rows, array-init-max-row)
-       (array-init-max-column, array-init-columns-per-line)
-       (array-init-field-width):
-       * dired-aux.el (dired-trample-file-versions):
-       * dired-x.el (dired-mark-sexp):
-       * ediff-diff.el (ediff-extract-diffs, ediff-get-diff3-group):
-       * edmacro.el (edmacro-finish-edit, edmacro-parse-keys):
-       * emerge.el (emerge-extract-diffs, emerge-get-diff3-group):
-       * faces.el (face-read-integer):
-       * files.el (backup-extract-version, insert-directory):
-       * hexl.el (hexl-insert-decimal-char):
-       * server.el (server-process-filter):
-       * shell.el (shell-extract-num):
-       * startup.el (command-line-1):
-       * term.el (term-command-hook):
-       * time-stamp.el (time-stamp, time-stamp-string-preprocess)
-       (time-stamp-do-number):
-       * time.el (display-time-update):
-       * timezone.el (timezone-parse-date, timezone-zone-to-minute)
-       (timezone-fix-time):
-       * vms-patch.el (vms-suspend-resume-hook):
-       * calendar/appt.el (appt-convert-time):
-       * calendar/cal-bahai.el (mark-bahai-diary-entries):
-       * calendar/cal-hebrew.el (mark-hebrew-diary-entries):
-       * calendar/cal-islam.el (mark-islamic-diary-entries):
-       * calendar/calendar.el (calendar-cursor-to-date)
-       (calendar-star-date):
-       * calendar/diary-lib.el (diary-attrtype-convert)
-       (mark-diary-entries, diary-entry-time):
-       * calendar/solar.el (solar-get-number):
-       * emacs-lisp/lisp-mnt.el (lm-last-modified-date):
-       * emacs-lisp/re-builder.el (reb-display-subexp):
-       * emulation/edt.el (edt-set-scroll-margins):
-       * emulation/tpu-extras.el (tpu-set-scroll-margins):
-       * emulation/vip.el (vip-get-ex-token, vip-get-ex-buffer)
-       (vip-get-ex-count):
-       * emulation/viper-ex.el (viper-get-ex-token)
-       (viper-get-ex-buffer, viper-get-ex-count, ex-next):
-       * international/fontset.el (fontset-plain-name):
-       * mail/feedmail.el (feedmail-look-at-queue-directory):
-       * mail/mailalias.el (mail-get-names):
-       * mail/rmail.el (rmail-convert-to-babyl-format):
-       * mail/rmailsum.el (rmail-make-basic-summary-line)
-       (rmail-summary-next-same-subject, rmail-summary-rmail-update)
-       (rmail-summary-goto-msg):
-       * mail/smtpmail.el (smtpmail-read-response):
-       * net/ange-ftp.el (ange-ftp-guess-hash-mark-size)
-       (ange-ftp-vms-add-file-entry):
-       * play/gametree.el (gametree-looking-at-ply)
-       (gametree-current-branch-score):
-       * progmodes/ada-xref.el (ada-prj-find-prj-file)
-       (ada-xref-find-in-modified-ali, ada-find-in-src-path):
-       * progmodes/cperl-mode.el (condition-case):
-       * progmodes/ebrowse.el (ebrowse-set-tree-indentation)
-       (ebrowse-set-member-buffer-column-width)
-       (ebrowse-select-1st-to-9nth):
-       * progmodes/etags.el (etags-snarf-tag):
-       * progmodes/flymake.el (flymake-parse-line):
-       * progmodes/idlw-shell.el (idlwave-shell-parse-line)
-       (idlwave-shell-filter-bp, idlwave-shell-goto-next-error)
-       (idlwave-shell-menu-def):
-       * progmodes/ps-mode.el (ps-run-goto-error):
-       * progmodes/vhdl-mode.el (vhdl-read-offset, vhdl-load-cache)
-       (vhdl-speedbar-contract-level):
-       * term/mac-win.el (x-handle-numeric-switch):
-       * term/sun-mouse.el (sun-get-frame-data):
-       * term/w32-win.el (x-handle-numeric-switch):
-       * term/x-win.el (x-handle-numeric-switch):
-       * textmodes/ispell.el (ispell-parse-output):
-       * textmodes/nroff-mode.el (nroff-outline-level):
-       * textmodes/reftex-cite.el (reftex-bib-sort-year)
-       (reftex-bib-sort-year-reverse, reftex-format-citation):
-       * textmodes/reftex-parse.el (reftex-init-section-numbers)
-       (reftex-section-number):
-       * textmodes/texinfmt.el (texinfo-paragraphindent):
-       Replace `string-to-int' by `string-to-number'.
-
-       * international/latexenc.el: Add page marker to force the "Local
-       Variables:" string out of the last page.
-
-2005-05-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * progmodes/gud.el (gud-tooltip-mode): Add gud prefix to
-       tooltip-change-major-mode.
-       (gud-tooltip-print-command): Remove case where gud-minor-mode
-       is gdb ("--fullname").
-       (gud-tooltip-tips): Turn GUD tooltips off for this case and
-       explain to user.
-
-2005-05-16  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-store.el (calc-copy-special-constant): New function.
-
-       * calc/calc-ext.el (calc-init-extensions): Add binding for
-       `calc-copy-special-constant'.
-
-       * calc/calc-prog.el (calc-edit-format-macro-buffer): Add a case
-       for the `calc-copy-special-constant' command.
-
-2005-05-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * subr.el (left-fringe-p): New function.
-
-       * progmodes/compile.el (compilation-setup): Set local value of
-       overlay-arrow-string to "" always.
-       (compilation-set-window): Left fringe then don't scroll.
-       No left fringe then no arrow and scroll message to top.
-       (compilation-context-lines): Adjust doc string accordingly.
-
-2005-05-16  Kim F. Storm  <storm@cua.dk>
-
-       * ido.el (ido-magic-forward-char, ido-magic-backward-char)
-       (ido-magic-delete-char): New commands for C-f, C-b, C-d.
-       (ido-wide-find-dir-or-delete-dir): New command for M-d.
-       (ido-define-mode-map): Bind them.  Add C-x prefix to fallback commands.
-       (ido-read-file-name): Handle commands with ido property value
-       equal to find-file as reading a file name, to allow C-d to enter dired.
-       (ibuffer-find-file): Add ido property with value find-file.
-
-2005-05-15  Kim F. Storm  <storm@cua.dk>
-
-       * subr.el (open-network-stream-nowait): Remove.
-       (open-network-stream-server): Remove.
-
-2005-05-15  Richard M. Stallman  <rms@gnu.org>
-
-       * faces.el (describe-face): Output a definition link button.
-
-       * help-mode.el (help-face-def): New button type.
-
-       * emacs-lisp/copyright.el (copyright-fix-years):
-       Match properly if the first year is 2-digit.
-       Don't mess up the whitespace after the years by filling.
-
-       * dired-aux.el (dired-mark-confirm):
-       Pass t to dired-get-marked-files for DISTINGUISH-ONE-MARKED.
-
-       * dired.el (dired-map-over-marks): New arg DISTINGUISH-ONE-MARKED.
-       (dired-get-marked-files): New arg DISTINGUISH-ONE-MARKED.
-       (dired-mark-pop-up): Handle FILES = (t FILE) specially.
-
-       * emacs-lisp/lisp-mode.el (lisp-mode-variables):
-       Set font-lock-comment-start-skip.
-
-       * font-lock.el (font-lock-comment-start-skip): New variable.
-       (font-lock-comment-end-skip): New variable.
-       (font-lock-fontify-syntactically-region): Use them if non-nil.
-
-2005-05-15  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-store.el (calc-store-value): Return a string rather
-       than display it as a message.
-       Use calc-var-name for variable name.
-       (calc-store-into): Add the result of calc-store-value to message.
-       (calc-copy-variable): Add a message.
-       (calc-store-exchange): Improve error messages.
-       (calc-store-binary, calc-store-map): Don't reset the values of
-       special constants.
-
-2005-05-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emacs-lisp/derived.el (define-derived-mode): Add link to Elisp
-       manual to docstring.
-
-       * files.el (hack-local-variables-confirm): Add STRING argument.
-       Make the function handle non file visiting buffers correctly.
-       (hack-local-variables-prop-line, hack-local-variables)
-       (hack-one-local-variable): Use STRING arg of
-       `hack-local-variables-confirm'.
-
-2005-05-14  Michael Albinus  <michael.albinus@gmx.de>
-
-       Sync with Tramp 2.0.49.
-
-       * net/tramp.el (tramp-handle-dired-call-process)
-       (tramp-handle-insert-directory):`insert-buffer' cannot be used
-       because the contents of the Tramp buffer is changed before
-       insertion (`expand-file' and alike).
-       (tramp-handle-insert-directory): If `localname' has an empty
-       nondirectory name, it must not be quoted.
-       (tramp-pre-connection): Add parameter CHUNKSIZE.  Make local
-       variable `tramp-chunksize'.  Change callees.
-       (tramp-open-connection-setup-interactive-shell): Check remote host
-       for buggy `send-process-string' implementation.
-       Set `tramp-chunksize' if found.  Reported by Michael Kifer
-       <kifer@cs.sunysb.edu> (and a lot of other people all the years).
-       (tramp-handle-shell-command): `insert-buffer' cannot be used
-       because the contents of the Tramp buffer is changed before
-       insertion (`expand-file' and alike).  Reported by Fr\e,Ai\e(Bd\e,Ai\e(Bric Bothamy
-       <frederic.bothamy@free.fr>.
-       (tramp-set-auto-save): Actions should be done for Tramp file name
-       handler only.  Ange-FTP has its own auto-save mechanism.
-       Reported by Richard G. Bielawski <Richard.G.Bielawski@wellsfargo.com>.
-       (tramp-set-auto-save-file-modes): Set file modes of
-       `buffer-auto-save-file-name' to ?\600 as fallback solution.
-       Reported by Ferenc Wagner <wferi@tba.elte.hu>.
-       (tramp-bug): Remove obsolete variable.
-       (tramp-append-tramp-buffers): Rewrite partly.  More suitable check
-       for presence of `mml-mode'.  Make it running for older Emacsen as well.
-
-2005-05-14  John Paul Wallington  <jpw@pobox.com>
-
-       * ibuf-ext.el (define-ibuffer-filter filename):
-       If `dired-directory' is a list, use its car.
-
-2005-05-14  Daniel Brockman  <daniel@brockman.se>  (tiny change)
-
-       * ibuffer.el (define-ibuffer-column filename):
-       If `dired-directory' is a list, use its car.
-
-2005-05-14  Richard M. Stallman  <rms@gnu.org>
-
-       * subr.el (symbol-file): Doc fix.
-
-       * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn): New function.
-       (byte-compile-form): Call byte-compile-nogroup-warn.
-       (byte-compile-warning-types): Doc fix.
-
-       * eshell/esh-mode.el (eshell-find-tag): Use with-no-warnings.
-
-       * progmodes/cc-engine.el (c-literal-faces):
-       Add font-lock-comment-delimiter-face.
-
-       * net/net-utils.el (dig): Use with-no-warnings.
+       * help.el (view-emacs-news):
+       * hi-lock.el (hi-lock-write-interactive-patterns):
+       * ido.el (ido-to-end, ido-set-matches-1):
+       * image-dired.el (image-dired-display-thumbs, image-dired-remove-tag)
+       (image-dired-mark-tagged-files):
+       * jka-cmpr-hook.el (jka-compr-get-compression-info):
+       * printing.el (pr-eval-local-alist, pr-eval-setting-alist):
+       * ps-print.el (ps-background, ps-begin-file)
+       (ps-build-reference-face-lists):
+       * simple.el (clone-buffer):
+       * startup.el (command-line):
+       * tempo.el (tempo-insert-template, tempo-is-user-element)
+       (tempo-forward-mark, tempo-backward-mark):
+       * woman.el (woman-dired-define-keys): Use `mapc' rather than `mapcar'.
 
-       * mail/supercite.el (sc-cite-frame-alist, sc-uncite-frame-alist)
-       (sc-recite-frame-alist, sc-default-cite-frame)
-       (sc-default-uncite-frame, sc-default-recite-frame)
-       (sc-attrib-selection-list, sc-rewrite-header-list):
-       Mark as risky-local-variable.
+2007-09-25  Glenn Morris  <rgm@gnu.org>
 
-       * international/ogonek.el (ogonek-jak, ogonek-how):
-       Don't use beginning-of-buffer.
+       * textmodes/tex-mode.el (tex-font-script-display): Doc fix.
 
-       * emacs-lisp/eldoc.el (eldoc-documentation-function): Add autoload.
+       * view.el (view-search-no-match-lines): Add a doc string.
+       Rewrite to simplify and work better.
 
-       * calendar/solar.el (solar-data-list): Move definition up.
+2007-09-24  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * dnd.el (dnd-protocol-alist): Add autoload.
+       * progmodes/cc-mode.el (c-mode-base-map):
+       Use c-indent-line-or-region instead of c-indent-line.
 
-       * progmodes/sh-script.el: Many doc usage fixes.
-       (sh-indent-after-do): Change default to match common styles.
+       * indent.el (indent-for-tab-command): First check if the region is
+       active.
 
-2005-05-13  Luc Teirlinck  <teirllm@auburn.edu>
+2007-09-24  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-       * files.el (interpreter-mode-alist)
-       (auto-mode-interpreter-regexp): Doc fixes.
+       * whitespace.el (whitespace-tickle-timer): Don't install the timer if
+       whitespace-rescan-timer-time is 0.
 
-2005-05-13  Matt Hodges  <MPHodges@member.fsf.org>
+2007-09-24  Karl Berry  <karl@gnu.org>
 
-       * tmm.el (tmm-get-keymap): Include only active menus and menu items.
+       * international/mule.el (coding-system-base): Fix doc string grammar.
 
-       * emacs-lisp/easymenu.el (easy-menu-define): Doc fixes.
+2007-09-24  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-05-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+       * net/tramp.el (tramp-completion-mode-p): Rename from
+       `tramp-completion-mode'.  Revert logic, check `return', `newline'
+       and such alike.  Packages like Icicles tend to use other completion
+       characters but `tab' and `space' only.
 
-       * dired.el (dired-mode): make-variable-buffer-local =>
-       make-local-variable.
+2007-09-24  Adam Hupp  <adam@hupp.org>
 
-2005-05-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+       * progmodes/python.el (run-python): Import emacs module without
+       waiting; prevents lockup on error.
 
-       * term/mac-win.el (mac-select-convert-to-string): Try coding
-       systems in mac-script-code-coding-systems if specified one cannot
-       encode string for `com.apple.traditional-mac-plain-text'.
+2007-09-23  Richard Stallman  <rms@gnu.org>
 
-2005-05-13  Daniel Pfeiffer  <occitan@esperanto.org>
+       * mail/sendmail.el (mail-bury): Delete the frame
+       if this frame looks like it was made for this message.
 
-       * progmodes/make-mode.el (makefile-targets-face)
-       (makefile-shell-face, makefile-makepp-perl-face): New faces.
-       (makefile-dependency-regex): Fix it to not make the colon in
-       $(var:a=b) special.
-       (makefile-rule-action-regex): New regexp for highlighting embedded
-       Shell strings.
-       (makefile-macroassign-regex): Handle != for highlighting as
-       embedded Shell strings.
-       (makefile-var-use-regex): New const.
-       (makefile-statements, makefile-automake-statements)
-       (makefile-gmake-statements, makefile-makepp-statements)
-       (makefile-bsdmake-statements): New consts.
-       (makefile-make-font-lock-keywords): New function.
-       (makefile-automake-font-lock-keywords)
-       (makefile-gmake-font-lock-keywords)
-       (makefile-makepp-font-lock-keywords)
-       (makefile-bsdmake-font-lock-keywords): New consts.
-       (makefile-mode-map): Add switchers between the various submodes.
-       (makefile-mode): Document the availability of the variants.
-       (makefile-automake-mode, makefile-gmake-mode)
-       (makefile-makepp-mode, makefile-bsdmake-mode): New derived modes.
+       * completion.el (completion-separator-self-insert-command)
+       (completion-separator-self-insert-autofilling):
+       If `self-insert-command' has been remapped, use the substitute.
 
-       * files.el (auto-mode-alist, interpreter-mode-alist): Set up the
-       new variants of makefile-mode.
+       * simple.el (copy-region-as-kill): Doc fix.
 
-2005-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * textmodes/org.el (org-confirm-shell-link-function)
+       (org-confirm-elisp-link-function): Doc fixes.
 
-       * font-lock.el (font-lock-comment-delimiter-face): Fix up
-       the inheritance.
+2007-09-23  Glenn Morris  <rgm@gnu.org>
 
-2005-05-12  Luc Teirlinck  <teirllm@auburn.edu>
+       * ses.el (ses-calculate-cell): Don't evaluate unsafe formulae.
 
-       * progmodes/inf-lisp.el (inferior-lisp-mode-hook)
-       (inferior-lisp-load-hook): Convert defcustoms back to defvars.
+2007-09-23  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * files.el (normal-mode): Extend the scope of the
-       `enable-local-variables' binding to include the `set-auto-mode' call.
-       (magic-mode-alist): Doc fix.
+       * term/w32-win.el (w32-drag-n-drop): Use mapc instead of mapcar.
+
+       * term/tvi970.el (terminal-init-tvi970): Likewise.
+
+       * term/sun-mouse.el (print-mouse-format): Likewise.
+
+       * term/sun.el (scroll-down-in-place, scroll-up-in-place):
+       Use forward-line instead of previous-line and next-line.
+
+2007-09-22  Juri Linkov  <juri@jurta.org>
+
+       * textmodes/org.el (org-confirm-shell-link-function): Doc fix.
+
+       * tutorial.el (tutorial--default-keys): Update standard bindings:
+       rename `iconify-or-deiconify-frame' to `suspend-frame',
+       and `save-buffers-kill-emacs' to `save-buffers-kill-terminal'.
+
+2007-09-22  Juri Linkov  <juri@jurta.org>
+
+       * startup.el (fancy-startup-text, fancy-about-text, fancy-startup-tail):
+       Add help-echo to external links and to links without description.
+       (fancy-splash-insert): Use help-echo from the 3rd element of the
+       link specification list, or "Follow this link" if it's nil.  Doc fix.
+
+2007-09-22  Juri Linkov  <juri@jurta.org>
+
+       * startup.el (command-line): Rename `inhibit-startup-message' to
+       `inhibit-startup-screen'.
+       (fancy-about-text): Use shorter label for "Ordering Manuals".
+       (fancy-startup-tail): Add optional arg `concise'.  When `concise'
+       is nil, display a line with "To start..." and 3 links to useful
+       tasks.  Display the "Dismiss" button and "Don't show this message
+       again" only when concise is non-nil.
+       (fancy-startup-screen): Call `fancy-startup-tail' with optional
+       arg `concise'.  If CONCISE is non-nil, display a concise version
+       of the splash screen in another window.  Otherwise, switch to the
+       startup buffer in the same window.
+       (startup-echo-area-message): Change displayed binding from
+       C-h C-p (describe-project) to C-h C-a (about-emacs), and change
+       text "about the GNU system and GNU/Linux" to "about GNU Emacs and
+       the GNU system".
+       (display-startup-screen): Fix buffer name from "*About GNU Emacs*"
+       to "*GNU Emacs*".
+       (display-about-screen): Don't check the existence of the buffer
+       "*About GNU Emacs*".
+       (display-splash-screen): Make alias to `display-startup-screen'.
+       (command-line-1): Rename `inhibit-startup-message' to
+       `inhibit-startup-screen'.  Inhibit startup screen when Emacs is
+       started with command line options "-f", "-funcall", "-e", "-eval",
+       "-execute", "-insert", "-find-file", "-file", "-visit".
+       Inhibit startup screen when Emacs is started with a file name only
+       on tty (i.e. don't inhibit it when started with a file name like
+       "emacs FILE..." on a window system).
+       (command-line-1): Simplify logic of displaying the startup screen:
+       if file-count > 0, then display the concise version in another
+       window, otherwise display full version in the same window.
+
+       * help.el (help-map): Bind C-h C-a to about-emacs.
+       (help-for-help-internal): Add C-a description to C-h help text.
 
-2005-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-09-22  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * font-lock.el (font-lock-comment-delimiter-face): Inherit from
-       font-lock-comment-face rather than copying its setting.
+       * emacs-lisp/checkdoc.el (checkdoc-force-docstrings-flag)
+       (checkdoc-permit-comma-termination-flag): Autoload the
+       safe-local-variable setting.
 
-2005-05-12  Andreas Schwab  <schwab@suse.de>
+       * bookmark.el (bookmark-xemacsp): Remove.
+       (bookmark-make): Don't use bookmark-xemacsp,
+       use (featurep 'xemacs) instead.
 
-       * eshell/esh-mode.el (eshell-send-input): Doc fix.
+       * speedbar.el (speedbar-frame-mode)
+       (speedbar-frame-reposition-smartly)
+       (speedbar-set-mode-line-format, speedbar-reconfigure-keymaps)
+       (speedbar-check-vc): Remove use of non-existent variable
+       dframe-xemacsp, use (featurep 'xemacs) instead.
 
-2005-05-12  Lute Kamstra  <lute@gnu.org>
+       * indent.el (indent-for-tab-command): Indent the region if
+       transient-mark-mode and the region is active.
 
-       * emacs-lisp/generic.el (define-generic-mode): Don't generate a
-       defcustom for the mode hook variable.  Delete the last argument.
-       * generic-x.el: Fix callers of define-generic-mode.
-       (generic-x-modes): Delete group.
-       (show-tabs-tab-face, show-tabs-space-face): Put them in the
-       generic-x customization group.
+2007-09-21  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 
-2005-05-12  Kim F. Storm  <storm@cua.dk>
+       * progmodes/octave-inf.el (inferior-octave-mode): Use add-hook to
+       add inferior-octave-directory-tracker to the buffer-local value
+       of comint-input-filter-functions.
 
-       * font-lock.el (font-lock-negation-char-face): Default to "off".
+2007-09-21  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * progmodes/cc-fonts.el (c-basic-matchers-before): Don't apply
-       font-lock-negation-char-face to ! in !=.
+       * xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
 
-2005-05-12  Masatake YAMATO  <jet@gyve.org>
+2007-09-21  Juanma Barranquero  <lekktu@gmail.com>
 
-       * add-log.el (find-change-log): Fix typos in the docstring
-       of function.
+       * frame.el (suspend-frame): Call `iconify-or-deiconify-frame' also
+       on w32 frames.
 
-2005-05-11  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
+2007-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * international/latexenc.el (latexenc-find-file-coding-system):
-       Avoid `re-search-forward' when looking for input encoding because
-       of speed and safety.  Better regular expressions for recognizing
-       input encoding.  Limit a search for TeX-master/tex-main-file to
-       the local variable section.
+       * startup.el (normal-top-level): Remove DISPLAY from
+       process-environment to let it be computed dynamically in callproc.c.
 
-2005-05-11  Dan Nicolaescu  <dann@ics.uci.edu>
+       * frame.el (frame-initialize, make-frame):
+       * faces.el (tty-set-up-initial-frame-faces):
+       * env.el (setenv): Don't set display-environment-variable.
 
-       * progmodes/sh-script.el (sh-mode-default-syntax-table): Set the
-       syntax of $ to "'" (quote).
+       * server.el (server-getenv-from): Remove.  Use getenv-internal instead.
+       (server-create-tty-frame): Don't set unused `tty' property.
+       Set `display' instead of display-environment-variable.
+       (server-create-window-system-frame): No display-environment-variable.
 
-2005-05-11  Reiner Steib  <Reiner.Steib@gmx.de>
+2007-09-21  Michael Albinus  <michael.albinus@gmx.de>
 
-       * dnd.el (dnd-protocol-alist): Improve custom type.
+       * rfn-eshadow.el (rfn-eshadow-setup-minibuffer-hook)
+       (rfn-eshadow-update-overlay-hook): New defvars.
+       (rfn-eshadow-setup-minibuffer, rfn-eshadow-update-overlay):
+       Run the hooks.
 
-       * dired.el (dired-dnd-protocol-alist): New variable.
-       (dired-mode): Use `dired-dnd-protocol-alist'.  Move call of
-       `dired-mode-hook' to the end.
+       * net/tramp.el (tramp-rfn-eshadow-overlay): New defvar.
+       (tramp-rfn-eshadow-setup-minibuffer)
+       (tramp-rfn-eshadow-update-overlay): New defuns.  Hook into
+       rfn-eshadow.el.
 
-2005-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * net/tramp-smb.el (tramp-smb-errors): Add error message for call
+       timeout.
 
-       * font-lock.el (font-lock-fontify-syntactically-region): Don't use
-       comment-end if comment-start-skip is not set.
-       Obey the font-lock-comment-delimiter-face variables.
+2007-09-21  Glenn Morris  <rgm@gnu.org>
 
-2005-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * obsolete/sun-fns.el (emacs-quit-menu): Remove emacstool-related code.
+       * term/sun-mouse.el (suspend-emacstool): Remove.
+       * term/sun.el: Remove emacstool-related code.
 
-       * files.el (executable-find): Move from executable.el.  Use
-       locate-file.
-       * progmodes/executable.el (executable-find): Move to files.el.
+       * emacs-lisp/bytecomp.el (byte-compile-warnings)
+       (byte-compile-warnings-safe-p): Add `mapcar'.
+       (byte-compile-warning-types): Add mapcar and make-local.
+       (byte-compile-normal-call): Add option to suppress mapcar warning.
+       (top-level): Use mapc rather than mapcar in eval-when-compile.
 
-       * font-lock.el (font-lock-fontify-keywords-region): Use a marker
-       when trying to ensure forward progress.
+       * textmodes/tex-mode.el (tex-validate-region): Handle escaped parens.
+       (tex-next-unmatched-eparen, tex-last-unended-eparen): New functions.
+       (latex-forward-sexp-1, latex-backward-sexp-1): Doc fix.
+       Handle escaped parens.
+       (latex-forward-sexp): Doc fix.
 
-2005-05-11  Chong Yidong  <cyd@stupidchicken.com>
+       * eshell/esh-mode.el (eshell-output-filter-functions): Add
+       eshell-postoutput-scroll-to-bottom.
 
-       * mouse-sel.el (mouse-sel-follow-link-p): New function.
-       (mouse-select, mouse-select-internal, mouse-extend-internal):
-       Use it to implement mouse-1-click-follows-link functionality.
+       * loadup.el: Remove termdev.
 
-2005-05-11  Richard M. Stallman  <rms@gnu.org>
+       * progmodes/fortran.el (fortran-mode-abbrev-table, fortran-line-length):
+       * progmodes/f90.el (f90-mode-abbrev-table): Use mapc rather than mapcar.
 
-       * font-lock.el (font-lock-fontify-syntactically-region):
-       Use font-lock-comment-delimiter-face for comment delimiters.
+2007-09-21  Markus Triska  <markus.triska@gmx.at>
 
-2005-05-10  Jay Belanger  <belanger@truman.edu>
+       * emacs-lisp/bytecomp.el (byte-compile-normal-call): Warn when
+       `mapcar' is called for effect.
 
-       * calc/calc-help.el (calc-m-prefix-help): Add mention of
-       preserving embedded modes.
+2007-09-21  Kevin Ryde  <user42@zip.com.au>
 
-2005-05-10  Richard M. Stallman  <rms@gnu.org>
+       * international/mule.el (sgml-html-meta-auto-coding-function):
+       Bind `case-fold-search' to t.
 
-       * progmodes/sh-script.el (sh-indent-for-do): Default to 0.
+2007-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * progmodes/ada-mode.el (ada-adjust-case-skeleton):
-       Move from ada-stmt.el.
-       (ada-mode): Add ada-adjust-case-skeleton to skeleton-end-hook.
+       * termdev.el: Remove.
 
-       * progmodes/ada-stmt.el (ada-adjust-case-skeleton):
-       Move to ada-mode.el.
-       (ada-stmt-mode-hook): Delete; do the work in ada-mode.
+       * frame.el (get-device-terminal): New function.  Moved from termdev.el.
+       (frames-on-display-list): Use it.
 
-       * cus-edit.el (custom-file): Call file-chase-links.
+       * bindings.el: Bind C-z to suspend-frame instead of suspend-emacs.
 
-       * files.el (read-directory-name): Fix previous change.
-       (hack-local-variables-confirm): New function.
-       (hack-local-variables-prop-line, hack-local-variables)
-       (hack-one-local-variable): Use it.
+       * termdev.el (terminal-id): Ask terminal-live-p before giving up.
 
-2005-05-10  Lute Kamstra  <lute@gnu.org>
+2007-09-20  Richard Stallman  <rms@gnu.org>
 
-       * font-lock.el (font-lock-keywords-alist)
-       (font-lock-removed-keywords-alist): Clarify docstrings.
+       * newcomment.el (comment-add): If EXTRA, double `comment-add' value.
 
-2005-05-10  Nick Roberts  <nickrob@snap.net.nz>
+2007-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * progmodes/gdb-ui.el (gdb-macro-info): New variable.
-       (gdb-source-info): Check for preprocessor info.
-       (gdb-tooltip-print-1): New function.  Don't print tooltip if it is
-       a macro for a function.
-       (gdb-info-breakpoints-custom): Try to find file again if not already
-       found (user might have used GDB dir command).
-       (gdb-get-location): Update gdb-location-alist correctly for change
-       to gdb-info-breakpoints-custom.
+       * add-log.el (add-log-current-defun): Fix thinko w.r.t derived-mode-p.
 
-       * progmodes/gud.el (gud-tooltip-mode): Require tooltip to be safe.
-       (gud-tooltip-print-command): Add gdbmi case.
-       (gud-tooltip-tips): Call gdb-tooltip-print-1 first if there is
-       preprocessor info.
+2007-09-20  Glenn Morris  <rgm@gnu.org>
 
-2005-05-09  Reiner Steib  <Reiner.Steib@gmx.de>
+       * textmodes/tex-mode.el (tex-validate-buffer): Use paragraph
+       motion functions, rather than hard-coding "\n\n".
+       (tex-validate-region): Check for eobp, to speed up.
+       (tex-next-unmatched-end): Doc fix.
 
-       * startup.el (fancy-splash-insert): Fix typo in doc string.
+2007-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-05-09  Juanma Barranquero  <lekktu@gmail.com>
+       * files.el (auto-mode-alist): Use archive-mode for .rar files.
 
-       * obsolete/float.el (string-to-float):
-       * obsolete/hilit19.el (hilit-add-pattern):
-       * obsolete/rnews.el (news-parse-range, news-select-message)
-       (news-get-pruned-list-of-files): Replace `string-to-int' by
-       `string-to-number'.
+       * international/mule.el (auto-coding-alist): Rar archives are binary.
 
-       * obsolete/uncompress.el: Set `find-file-not-found-functions', not
-       `find-file-not-found-hooks'; use `add-hook'.
-       (uncompress-while-visiting): Set `write-file-functions', not
-       `write-file-hooks'; use `add-hook'.
+       * arc-mode.el: Add basic support for Rar.
+       (archive-find-type): Recognize Rar's signature.
+       (archive-desummarize): New fun.
+       (archive-summarize): Use it to restore the buffer's data in case
+       someone wants to switch to some other major mode.
+       (archive-resummarize): Use it as well.
+       (archive-rar-summarize, archive-rar-extract): New functions.
 
-2005-05-09  Kim F. Storm  <storm@cua.dk>
+       * filesets.el: Remove spurious * in docstrings.
+       (filesets-running-xemacs): Remove.  Use (featurep 'xemacs) instead.
+       (filesets-conditional-sort): Remove unused arg `simply-do-it'.
+       (filesets-ingroup-collect): Remove unused arg `depth'.
+       (filesets-update): Remove unused arg `version'.
 
-       * emulation/cua-base.el (cua-copy-region, cua-cut-region)
-       (cua-paste): Handle clipboard action.
-       (cua--init-keymaps): Remap clipboard-kill-region and
-       clipboard-kill-ring-save.
+       * finder.el (finder-compile-keywords): Fix up comment style.
+       (finder-mouse-face-on-line): previous-line -> forward-line.
 
-2005-05-08  Eli Zaretskii  <eliz@gnu.org>
+       * recentf.el: Remove spurious * in docstrings.
+       (recentf-save-list): Fix up comment style.
 
-       * emacs-lisp/easy-mmode.el (easy-mmode-pretty-mode-name):
-       Improve commentary.
+       * progmodes/octave-mod.el: Remove spurious * in docstrings.
+       (octave-mode-map): Move init into declaration and remove \t binding.
+       (octave-mode-startup-message): Remove unused var.
+       (octave-scan-blocks): Remove unused arg `from'.
+       (octave-forward-block, octave-down-block, octave-up-block):
+       Update callers.
 
-       * simple.el (next-error-overlay-arrow-position): Revert the change
-       made on 2005-04-30.
+       * progmodes/meta-mode.el (meta-mode-syntax-table): Move init into decl.
+       (meta-mode-map): Likewise and remove \t binding.
 
-2005-05-07  Jay Belanger  <belanger@truman.edu>
+       * net/snmp-mode.el: Remove spurious * in docstrings.
+       (snmp-rfc1155-types, snmp-rfc1213-types, snmp-rfc1902-types)
+       (snmp-rfc1903-types, snmp-rfc1155-access, snmp-rfc1902-access)
+       (snmp-rfc1212-status, snmp-rfc1902-status): Remove list wrappers now
+       that completion accepts lists of strings.
+       (snmp-mode-syntax-table): Move initialization into declaration.
+       (snmp-mode-map): Likewise and remove \t binding.
+       (snmp-common-mode): Set tab-always-indent according to snmp-t-a-i.
+       (snmp-indent-line, snmp-mode-imenu-create-index): Remove unused var.
+       (snmp-indent-command): Remove.
 
-       * calc/calcsel2.el (calc-commute-left, calc-commute-right)
-       (calc-sel-unpack, calc-sel-isolate): Rename variable `reselect' to
-       `calc-sel-reselect'.
+       * emacs-lisp/lisp-mode.el (lisp-mode-shared-map): Use the default TAB
+       binding, so tab-always-indent works right.
 
-       * calc/calc-mode.el (calc-save-modes): Reset the modes list if
-       Calc is in embedded mode.
+2007-09-19  Johannes Weiner  <hannes@saeurebad.de>
 
-2005-05-07  Eli Zaretskii  <eliz@gnu.org>
+       * net/browse-url.el (browse-url-elinks-new-window): New function.
+       (browse-url-elinks): Use browse-url-elinks-new-window.
+       Accept optional second argument `new-window'.  Fix typo in doc-string.
+       (browse-url-elinks-sentinel): Use browse-url-elinks-new-window.
+       Improve error message.
 
-       * progmodes/compile.el (compilation-setup):
-       Set overlay-arrow-string to an empty string on text terminals.
+2007-09-19  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-       * textmodes/ispell.el (ispell-program-name): Try looking for
-       "aspell" along exec-path, and if found, use it as the default
-       speller program.
+       * net/browse-url.el (browse-url-url-encode-chars): Use the right
+       parameter name in the function body.
+       Reported by Johannes Weiner.
 
-2005-05-07  Jirka Kosek  <jirka@kosek.cz>  (tiny change)
+2007-09-19  Glenn Morris  <rgm@gnu.org>
 
-       * international/mule.el (sgml-xml-auto-coding-function):
-       Recognize encoding='FOO' in single quotes as well as in double quotes.
+       * net/socks.el (socks-open-network-stream): Signal an explicit
+       error if the port associated with a service string can't be found.
 
-2005-05-07  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+       * textmodes/tex-mode.el (tex-terminate-paragraph):
+       Use backward-paragraph.
 
-       * emacs-lisp/cl-macs.el (cl-transform-lambda): Recognize `declare'
-       as well as `interactive', so that defmacro* would recognize
-       `declare' forms.
+2007-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-05-07  Eli Zaretskii  <eliz@gnu.org>
+       * server.el (server-running-p): New function.
 
-       * emacs-lisp/easy-mmode.el (easy-mmode-pretty-mode-name):
-       Explain more about the LIGHTER arg's usage in the doc string.
-       Add commentary to clarify what the code does.  Fix the regexp that
-       strips whitespace from LIGHTER.  Quote LIGHTER before using it,
-       since it could have characters special to regular expressions.
+2007-09-18  Jason Rumney  <jasonr@gnu.org>
 
-2005-05-07  Matt Hodges  <MPHodges@member.fsf.org>  (tiny change)
+       * term/w32-win.el (w32-focus-frame): Make obsolete alias for
+       x-focus-frame.
 
-       * replace.el (occur-1): Bind inhibit-read-only so that
-       erase-buffer doesn't barf on read-only text properties (likewise
-       for add-text-properties in occur-engine).  Mark buffer as unmodified.
-       (occur-engine): Don't set buffer-read-only here.
+       * frame.el (select-frame-set-input-focus, select-frame-by-name):
+       Use x-focus-frame for w32.
 
-2005-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-09-17  David Kastrup  <dak@gnu.org>
 
-       * pcvs.el (cvs-mode-commit, cvs-mode-edit-log): Don't fiddle with
-       list-buffers-directory.  This caused the *cvs-commit* buffer to be
-       sometimes mistakenly reused as a *cvs* buffer.
+       * textmodes/tex-mode.el (tex-verbatim-environments):
+       Eliminate CL dependency.
 
-2005-05-07  Nick Roberts  <nickrob@snap.net.nz>
+2007-09-17  Richard Stallman  <rms@gnu.org>
 
-       * tooltip.el: Move code for GUD tooltips into gud.el.
-       (require): CL no longer needed to compile case.
-       (tooltip-mode): Do not toggle functions for GUD tooltips.
-       (tooltip-gud-tips-p): Remove.  Replace with minor mode
-       gud-tooltip-mode in gud.el.
-       (tooltip-gud-modes, tooltip-gud-display, tooltip-gud-echo-area)
-       (tooltip-gud-toggle-dereference): Rename in gud.el by replacing
-       tooltip-gud prefix with gud-tooltip and obsolete.
-       (tooltip-change-major-mode, tooltip-activate-mouse-motions-if-enabled)
-       (tooltip-mouse-motions-active, tooltip-activate-mouse-motions)
-       (tooltip-mouse-motion): Mouse movement functions/variable.
-       Rename in gud.el by adding gud prefix.
-       (tooltip-gud-original-filter, tooltip-gud-dereference)
-       (tooltip-gud-event, tooltip-toggle-gud-tips)
-       (tooltip-gud-process-output, tooltip-gud-print-command)
-       (tooltip-gud-tips): GUD tooltip functions/variables.  Rename in
-       gud.el by replacing tooltip-gud prefix with gud-tooltip.
-       (gdb-tooltip-print): Move to gdb-ui.el.
+       * newcomment.el (comment-add): New arg EXTRA.
+       (comment-region-default): Pass EXTRA if not indenting lines.
 
-       * progmodes/gud.el: Move code for GUD tooltips from tooltip.el.
-       (require): CL needed to compile case.
-       (gud-tooltip-mode): Use to toggle GUD tooltips instead of
-       tooltip-gud-tips-p.  Make it a minor-mode.
-       (gud-find-file): Only prepare GUD tooltips if gud-tooltip-mode is t.
-       (gud-menu-map): GUD tooltips use gud-tooltip-mode now.
-       (gud-tooltip-modes, gud-tooltip-display, gud-tooltip-echo-area)
-       (gud-tooltip-change-major-mode)
-       (gud-tooltip-activate-mouse-motions-if-enabled)
-       (gud-tooltip-mouse-motions-active, gud-tooltip-activate-mouse-motions)
-       (gud-tooltip-mouse-motion, gud-tooltip-toggle-dereference)
-       (gud-tooltip-original-filter, gud-tooltip-dereference)
-       (gud-tooltip-event, tooltip-toggle-gud-tips)
-       (gud-tooltip-process-output, gud-tooltip-print-command)
-       (gud-tooltip-tips): Move from tooltip.el.
-
-       * progmodes/gdb-ui.el (gdb-tooltip-print): Move from tooltip.el.
-       (gdb-cpp-define-alist-flags): Doc fix.
-       (gdb-set-gud-minor-mode-1): Only prepare GUD tooltips if
-       gud-tooltip-mode is t.
-
-2005-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * net/goto-addr.el (goto-address-fontify): Make sure the overlays
-       evaporate if their text is deleted.
-       (goto-address-at-point): Make it work as a mouse binding as well.
-       (goto-address-at-mouse): Obsolete it.  Update users.
-
-2005-05-06  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * calendar/appt.el (top-level): No longer activate on load.
-
-2005-05-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * calendar/cal-bahai.el (mark-bahai-diary-entries):
-       * net/webjump.el (webjump):
-       * progmodes/idlw-help.el (idlwave-do-context-help1)
-       (idlwave-highlight-linked-completions):
-       * textmodes/po.el (po-find-file-coding-system-guts):
-       Replace `assoc-ignore-case' by `assoc-string'.
-
-2005-05-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * files.el (locate-file): Doc fix.
-
-       * progmodes/gdb-ui.el (gdb-cpp-define-alist-program): Doc fix.
-       Remove the redundant test for ms-dos.
-
-       * progmodes/cmacexp.el (c-macro-preprocessor): Use locate-file to
-       look for the preprocessor with exec-suffixes.  If not found in
-       standard places, look in exec-path.  Remove most of the tests that
-       used system-type.
-
-       * loadup.el: Load jka-cmpr-hook instead of jka-comp-hook.
-
-       * jka-compr.el (jka-compr-uninstall): Add autoload cookie.
-
-       * jka-cmpr-hook.el: Renamed from jka-comp-hook.el, to avoid
-       file-name clash with jka-compr.el on 8+3 filesystems.
-
-2005-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * term/mac-win.el: Don't define or bind scroll bar functions if
-       x-toolkit-scroll-bars is t.
-       (x-select-text, x-get-selection-value): Clear
-       x-last-selected-text-clipboard if x-select-enable-clipboard is
-       nil.
-       (PRIMARY): Put mac-scrap-name property.
-       (mac-select-convert-to-file-url): New function.
-       (public.file-url): New selection target type.  Add to
-       selection-converter-alist.
-       (x-get-selection, x-selection-value): Handle it.
-       (x-cut-buffer-or-selection-value): New alias.
-
-2005-05-05  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
-
-       * textmodes/bibtex.el (bibtex-summary): Use current BibTeX
-       entry to avoid calling bibtex-find-entry with arg global
-       being t.  Remove arg key.
-       (bibtex-summary-function, bibtex-complete-crossref-cleanup)
-       (bibtex-copy-summary-as-kill): Change accordingly.
-
-2005-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/org.el (org-get-entries-from-diary): Remove unused vars.
-       (org-agenda-date-later): Use with-current-buffer.
-
-2005-05-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * emacs-lisp/byte-run.el (define-obsolete-function-alias)
-       (define-obsolete-variable-alias): Doc Fixes.
-
-2005-05-06  Kim F. Storm  <storm@cua.dk>
-
-       * simple.el (line-move-1): Fix 2005-04-26 change.  Must still use
-       vertical-motion when selective-display is active.
-
-       * ido.el (ido-setup-hook): New hook.
-       (ido-define-mode-map-hook): Remove hook; use ido-setup-hook instead.
-       (ido-input-stack): New var.
-       (ido-define-mode-map): Bind M-b to ido-push-dir.  Move old
-       ido-next-work-file binding to M-O.
-       Bind M-f to ido-wide-find-file-or-pop-dir.
-       (ido-define-mode-map): Don't run ido-define-mode-map-hook.
-       (ido-read-internal): Run ido-setup-hook.
-       Catch quit in read-file-name and read-string to cancel edit.
-       Handle new push, pop, and pop-all exit codes (for M-b/M-f).
-       Automatically pop-all when completing a directory name (RET).
-       (ido-file-internal): Add with-no-warnings around ffap and dired code.
-       (ido-exit-minibuffer): Use exit-minibuffer instead of throw.
-       (ido-wide-find-file, ido-wide-find-dir): Catch quit to cancel find.
-       (ido-push-dir, ido-pop-dir, ido-wide-find-file-or-pop-dir):
-       New functions for M-b/M-f to move among the directory components.
-       (ido-make-merged-file-list): Catch quit to cancel merge.
-       (ido-make-dir-list): Delete "." when ido-input-stack is non-empty.
-       (ido-completion-help): No warnings for ido-completion-buffer-full.
-
-2005-05-05  Daniel Pfeiffer  <occitan@esperanto.org>
+2007-09-17  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-       * font-lock.el (font-lock-negation-char-face): New face and variable.
-       * progmodes/cc-fonts.el (c-cpp-matchers): Use it.
-       * progmodes/sh-script.el (sh-font-lock-keywords): Use it.
-       * progmodes/cperl-mode.el (cperl-init-faces): Use it.
-       * progmodes/make-mode.el (makefile-font-lock-keywords): Use it.
+       * net/browse-url.el (browse-url-url-encode-chars): New function.
+       URL-encode some chars in a string.
+       (browse-url-encode-url): Rewrite using the previous function.
+       (browse-url-file-url): Use `browse-url-url-encode-chars'.
+       (browse-url-elinks-sentinel): Fix typo.
+       (browse-url-new-window-flag): Doc change.
 
-2005-05-05  Juanma Barranquero  <lekktu@gmail.com>
+2007-09-17  Glenn Morris  <rgm@gnu.org>
 
-       * emacs-lisp/byte-run.el (define-obsolete-function-alias):
-       Fix typo in docstring.
+       * textmodes/tex-mode.el (tex-compilation-parse-errors): Prefer the
+       filename from `--file-line-error', if it is available.
 
-       * progmodes/ebrowse.el (ebrowse-install-1-to-9-keys)
-       (ebrowse-print-statistics-line)
-       (ebrowse-electric-position-mode-hook): Fix typo in docstring.
+2007-09-17  Joe Wells  <jbw@macs.hw.ac.uk>  (tiny change)
 
-       * term/w32-win.el (image-library-alist): Add additional name for
-       Xpm library.
+       * textmodes/tex-mode.el (tex-compilation-parse-errors): Also match
+       TeX `--file-line-error' format.
 
-2005-05-05  Nick Roberts  <nickrob@snap.net.nz>
+2007-09-17  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * progmodes/cmacexp.el (c-macro-preprocessor): Update for BSD and
-       use gcc instead of cpp.
+       * xt-mouse.el: Delete add-hook calls that were moved to
+       xterm-mouse-mode.
+       (xterm-mouse-mode): Disable resume-tty-functions, explain why it
+       does not work.
 
-       * progmodes/gdb-ui.el (gdb-cpp-define-alist-flags): New variable.
-       (gdb-create-define-alist): Use it.
-       (gdb-cpp-define-alist-program): Update for MS-DOS.
+2007-09-17  Richard Stallman  <rms@gnu.org>
 
-2005-05-04  Nick Roberts  <nickrob@snap.net.nz>
+       * cus-face.el (custom-theme-set-faces): Undo previous change.
 
-       * progmodes/cmacexp.el (c-macro-preprocessor): Update for Mac OS X.
+       * faces.el (face-spec-set): When FRAME nil, look up each frame in SPEC.
 
-2005-05-04  Richard M. Stallman  <rms@gnu.org>
+2007-09-17  Glenn Morris  <rgm@gnu.org>
 
-       * help.el (describe-key): No error when UNTRANSLATED is nil.
+       * textmodes/tex-mode.el (tex-region): Simplify previous change,
+       handling the case where the region is not in `tex-main-file'.
+       (tex-region-1): Delete.
+       (tex-region-header): New function, doing the header part of the
+       old tex-region-1.
 
-       * simple.el (line-move-1): Fix previous change to signal errors
-       appropriately.
+2007-09-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-05-03  Ulf Jasper  <ulf.jasper@web.de>
+       * simple.el (newline): Simplify use of prefix-numeric-value.
+       (line-move-partial): Remove unused var `ppos'.
+       (line-move-1): Replace 9999 with most-positive-fixnum.
+       (move-end-of-line): Use more efficient single-property search.
+       (move-beginning-of-line): Remove unused var `start'.
+       (blink-matching-open): Restructure in a more functional style.
 
-       * calendar/icalendar.el (icalendar-version): Now at 0.12.
-       (icalendar-duration-correction): Remove.
-       (icalendar--get-event-properties): Split result at commas.
-       (icalendar--decode-isoduration): New optional argument
-       DURATION-CORRECTION.
-       (icalendar--convert-ordinary-to-ical, icalendar--convert-sexp-to-ical)
-       (icalendar--convert-yearly-to-ical, icalendar--convert-weekly-to-ical)
-       (icalendar--convert-block-to-ical, icalendar--convert-float-to-ical)
-       (icalendar--convert-date-to-ical, icalendar--convert-cyclic-to-ical)
-       (icalendar--convert-anniversary-to-ical): New functions, extracted
-       from icalendar-export-region, with bug fixes.
-       (icalendar-export-region): Use the above functions.
-       (icalendar-import-buffer): Check before saving diary file.
-       (icalendar--convert-recurring-to-diary)
-       (icalendar--convert-non-recurring-all-day-to-diary)
-       (icalendar--convert-non-recurring-not-all-day-to-diary): New functions,
-       extracted from icalendar--convert-ical-to-diary, with bug fixes.
-       (icalendar--convert-ical-to-diary): Use the above functions.
+2007-09-16  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-2005-05-03  Nick Roberts  <nickrob@snap.net.nz>
+       * calendar/holidays.el (list-holidays): Remove the cyclic alias.
 
-       * progmodes/cc-mode.el (cc-define-alist, cc-create-define-alist):
-       Remove these recent additions.
-       (c-mode): Restore to before 2005-04-28.
+2007-09-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * progmodes/cc-vars.el (cc-define-list-program): Remove this
-       recent addition.
+       * server.el (server-clients): Only keep procs, no properties any more.
+       (server-client): Remove.
+       (server-client-get, server-client-set): Remove, replace all callers by
+       process-get and process-put resp.
+       (server-clients-with, server-add-client, server-delete-client)
+       (server-create-tty-frame, server-create-window-system-frame)
+       (server-process-filter, server-execute, server-visit-files)
+       (server-buffer-done, server-kill-buffer-query-function)
+       (server-kill-emacs-query-function, server-switch-buffer)
+       (server-save-buffers-kill-terminal): Update accordingly.
+
+       * server.el (server-with-environment): Simplify.
+       (server-select-display, server-unselect-display): Re-add functions that
+       seem to have been lost in the multi-tty merge.
+       (server-eval-and-print, server-create-tty-frame)
+       (server-create-window-system-frame, server-goto-toplevel)
+       (server-execute, server-return-error): New functions extracted from
+       server-process-filter.
+       (server-execute-continuation): New functions.
+       (server-process-filter): Restructure so that all arguments are analysed
+       first and then acted upon in a subsequent stage.  This way
+       server-goto-toplevel can be executed later, when we know if
+       it's necessary.
+       Remove the "-version" and "-version-good" support.
 
-       * progmodes/gdb-ui.el (gdb-cpp-define-alist-program)
-       (gdb-define-alist): New variables.
-       (gdb-create-define-alist): New function.
-       (gdb-set-gud-minor-mode-1): Handle gdb-define-alist.
-       (gdb-source, gdb-memory-set-repeat-count): Replace string-to-int
-       with string-to-number.
-       (gdb-reset): Kill gdb-define-alist.  Move assignments outside loop.
+2007-09-16  Drew Adams  <drew.adams@oracle.com>
 
-       * progmodes/gud.el: Replace string-to-int with string-to-number.
-       (gud-find-file): Handle gdb-define-alist.
+       * cus-edit (custom-face-edit-activate): Doc fix.
 
-       * tooltip.el (tooltip-gud-tips): Use gdb-define-alist.
+2007-09-16  Glenn Morris  <rgm@gnu.org>
 
-2005-05-02  Jay Belanger  <belanger@truman.edu>
+       * calendar/cal-menu.el, calendar/calendar.el, calendar/diary-lib.el:
+       Following cal-bahai renaming, update all instances of
+       list-bahai-diary-entries to diary-bahai-list-entries,
+       mark-bahai-diary-entries to diary-bahai-mark-entries,
+       calendar-goto-bahai-date to calendar-bahai-goto-date,
+       insert-bahai-diary-entry to diary-bahai-insert-entry,
+       insert-monthly-bahai-diary-entry to diary-bahai-insert-monthly-entry,
+       insert-yearly-bahai-diary-entry to diary-bahai-insert-yearly-entry, and
+       calendar-print-bahai-date to calendar-bahai-print-date.
 
-       * calc/calc-aent.el (math-read-token):
-       * calc/calc-bin.el (calc-word-size):
-       * calc/calc-ext.el (calc-read-number-fancy):
-       * calc/calc-forms.el (calc-time, calc-date-notation, math-this-year)
-       (math-parse-date, math-parse-standard-date, calcFunc-tzone):
-       * calc/calc-frac.el (calc-over-notation):
-       * calc/calc-graph.el (calc-graph-plot, calc-graph-set-styles)
-       (calc-graph-num-points, calc-graph-init):
-       * calc/calc-prog.el (calc-read-parse-table-part)
-       (calc-edit-macro-repeats):
-       * calc/calc-yank.el (calc-do-grab-rectangle):
-       * calc/calc.el (calcDigit-key, math-read-number, math-read-bignum):
-       Replace `string-to-int' by `string-to-number'.
+       * textmodes/tex-mode.el (tex-region): Handle the case where the
+       region is not in `tex-main-file'.  Move the old code that applies
+       to both cases...
+       (tex-region-1): ...to this new function.
 
-2005-05-02  Kim F. Storm  <storm@cua.dk>
+2007-09-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * kmacro.el: Use executing-kbd-macro-index variable.
+       * vc.el (vc-process-sentinel): New function.
+       (vc-exec-after): Use it instead of using ugly hackish analysis and
+       construction of Elisp code.
+       (vc-sentinel-movepoint): New dynamically scoped var.
+       (vc-print-log, vc-annotate): Set it to move the user's point.
 
-2005-05-02  Thien-Thi Nguyen  <ttn@gnu.org>
+       * vc-cvs.el (vc-cvs-annotate-time): Use inhibit-read-only and
+       inhibit-modification-hooks.
 
-       * net/rlogin.el (rlogin-parse-words): Delete func.
-       (rlogin): Use split-string, not rlogin-parse-words.
-       Also, if there are option-like elements in the parsed args,
-       take the host to be the first arg immediately following them.
-       Suggested by Michael Mauger.
+       * calendar/cal-bahai.el (mark-bahai-diary-entries): Fix up typo.
+       (calendar-bahai-print-date, calendar-bahai-goto-date)
+       (diary-bahai-list-entries, diary-bahai-insert-entry):
+       New names to clean up the namespace a bit more.
+       (calendar-goto-bahai-date, calendar-print-bahai-date): Compat aliases.
 
-2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+2007-09-15  Glenn Morris  <rgm@gnu.org>
 
-       * subr.el (executing-macro): Use `define-obsolete-variable-alias'.
+       * calendar/holidays.el (holiday-list): Rename it back to
+       `list-holidays', but leave `holiday-list' as an alias.
 
-2005-05-02  Nick Roberts  <nickrob@snap.net.nz>
+       * textmodes/bibtex-style.el (bibtex-style-indent-basic): Specify a
+       custom group.
 
-       * progmodes/cc-mode.el (cc-create-define-alist): Use a shell.
-       (cc-mode-cpp-program): Rename to cc-define-list-program and
-       move to cc-vars.el.
+       * textmodes/css-mode.el (css): New custom group.
+       (css-electrick-keys, css-selector, css-property)
+       (css-indent-offset): Specify custom group.
 
-       * progmodes/cc-vars.el (cc-define-list-program):
-       Change to "gcc -E -dM -".  Make customizable.
+2007-09-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-05-02  Kim F. Storm  <storm@cua.dk>
+       * pcvs.el (cvs-tags-list, cvs-retrieve-revision, cvs-find-modif)
+       (cvs-execute-single-file): Use process-file.
+       (cvs-run-process): Use start-file-process.
 
-       * emulation/cua-base.el: Fix check for CUA-mode if no init file.
+2007-09-15  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-05-02  Nick Roberts  <nickrob@snap.net.nz>
+       * xt-mouse.el (xterm-mouse-mode): Add hooks here not at the top
+       level.  Remove the hooks when turning off the mode.
 
-       * progmodes/cc-mode.el (cc-mode-cpp-program): Change to "gcc -E".
+       * term/xterm.el: Require xt-mouse at compile time.
+       (terminal-init-xterm): Turn on xterm mouse tracking for this
+       terminal if xterm-mouse-mode is enabled.
 
-       * international/mule-util.el (truncate-string): Remove alias and
-       obsolete declaration.
+2007-09-14  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * international/mule-cmds.el (update-iso-coding-systems):
-       Remove alias and obsolete declaration.
+       * term/xterm.el (xterm-function-map): Replace bindings that were
+       deleted by the merge.
 
-       * international/mule.el (coding-system-parent): Remove alias and
-       obsolete declaration.
+2007-09-14  Ulf Jasper  <ulf.jasper@web.de>
 
-       * subr.el (define-function, sref): Remove aliases and obsolete
-       declarations.
-       (chars-in-region): Remove obsolete declaration.
+       * play/bubbles.el (bubbles-version): Bump value to "0.5".
+       (bubbles-mode-map): Move define-key statements here.
+       (bubbles-game-theme-menu): Ditto.
+       (bubbles-graphics-theme-menu): Ditto.
+       (bubbles-menu): Ditto.
+       (bubbles-mode): Initialize buffer-undo-list, redisplay.
+       (bubbles--initialize): Reset buffer-undo-list, redisplay.
+       (bubbles-plop): Set buffer-undo-list, redisplay.
+       (bubbles-undo): Reset buffer-undo-list, redisplay.
+       (bubbles--show-images): Take care of missing text properties.
 
-2005-05-01  Richard M. Stallman  <rms@gnu.org>
+2007-09-14  Glenn Morris  <rgm@gnu.org>
 
-       * info.el (Info-mode): Set widen-automatically to nil, locally.
+       * startup.el (fancy-startup-text, fancy-about-text): Fix face
+       quoting.
 
-       * simple.el (widen-automatically): New variable.
-       (pop-global-mark): Obey widen-automatically.
+       * calendar/cal-hebrew.el, calendar/cal-menu.el
+       * calendar/calendar.el, calendar/diary-lib.el
+       * calendar/holidays.el: Rename all instances of
+       list-calendar-holidays callers to calendar-list-holidays,
+       list-holidays to holiday-list, check-calendar-holidays to
+       calendar-check-holidays, mark-calendar-holidays to
+       calendar-mark-holidays, and filter-visible-calendar-holidays to
+       holiday-filter-visible-calendar.
 
-2005-05-01  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-09-14  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * term/xterm.el (function-key-map): Call substitute-key-definition
-       before the keymap size is increased by a lot of define-key calls.
+       * term/xterm.el (xterm-function-map): Add C-M- bindings.
 
-2005-05-01  Richard M. Stallman  <rms@gnu.org>
+2007-09-13  Sascha Wilde  <wilde@sha-bang.de>  (tiny change)
 
-       * subr.el (add-to-invisibility-spec, remove-from-invisibility-spec):
-       Rename ARG to ELEMENT.  Doc fix.
+       * play/bubbles.el (bubbles--initialize-images): Fix bug:
+       Use transparent background for empty cells in graphics mode.
 
-2005-05-01  Nick Roberts  <nickrob@snap.net.nz>
+2007-09-13  Jari Aalto  <jari.aalto@cante.net>
 
-       * allout.el (allout-exposure): Remove macro and obsolete declaration.
-       Remove references to allout-exposure/change to allout-new-exposure.
+       * man.el (Man-default-man-entry): At end of line, continue looking
+       to the next line for possible end of hyphenated command.
 
-       * emacs-lisp/bytecomp.el (dot, dot-min, dot-max): Don't create
-       bytecode symbols.
+2007-09-13  Chris Moore  <dooglus@gmail.com>
 
-       * subr.el (dot, dot-marker, dot-min, dot-max, buffer-flush-undo)
-       (compiled-function-p, focus-frame, unfocus-frame):
-       Remove aliases and obsolete declarations.
-       Back out inadvertent changes from previous commit.
+       * shell.el (shell-resync-dirs): Don't move the cursor relative to
+       the command being edited.
 
-2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+2007-09-12  Jim Meyering  <jim@meyering.net>  (tiny change)
 
-       * files.el (require-final-newline): Make Custom tags consistent
-       with mode-require-final-newline.
-       (mode-require-final-newline): Doc fix.
+       * emacs-lisp/copyright.el (copyright-names-regexp): Doc fix: typo.
 
-2005-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-09-12  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * international/latexenc.el (latexenc-find-file-coding-system):
-       Fix regular expressions.
+       * term/xterm.el (xterm-function-map): Add bindings for M-S- and
+       C-M-S- keys.
 
-2005-05-01  David Kastrup  <dak@gnu.org>
+       * term/rxvt.el (rxvt-function-map): Initialize in the declaration.
 
-       * international/latexenc.el (latexenc-find-file-coding-system):
-       Fix regular expressions.
+2007-09-12  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-2005-05-01  Nick Roberts  <nickrob@snap.net.nz>
+       * net/browse-url.el (browse-url-encode-url): Fix an infinite loop.
+       New argument `filename-p' to use one set of confusing chars or another.
+       (browse-url-file-url): Use the argument.
+       Suggested by Johannes Weiner.
 
-       * subr.el (string-to-int): Make obsolete.
+2007-09-12  Romain Francoise  <romain@orebokech.com>
 
-2005-04-30  Richard M. Stallman  <rms@gnu.org>
+       * cus-start.el (all): Revert 2007-09-08 change.
 
-       * simple.el (next-error-overlay-arrow-position): Turn off, for ttys.
+2007-09-12  Aaron Hawley  <aaronh@garden.org>
 
-       * loadup.el: load jka-comp-hook.
+       * jka-cmpr-hook.el (jka-compr-compression-info-list): Use gzip to
+       extract .Z files, since it is more common than uncompress.
 
-       * jka-compr.el: Many functions and vars moved to jka-comp-hook.el.
-       (jka-compr-handler): Add autoload.  `put' calls moved
-       to jka-comp-hook.el.
-       (compression, jka-compr): defgroups moved to jka-comp-hook.el.
-       (jka-compr-inhibit): Autoload.
+2007-09-12  Glenn Morris  <rgm@gnu.org>
 
-       * jka-comp-hook.el: New file.
-       Enable the mode by default.
+       * textmodes/org-publish.el (org-publish-org-to-html): Remove
+       duplicate function definition.
 
-       * files.el (backup-buffer-copy): Use copy-file instead
-       of write-region, and put back the 'excl.
+2007-09-10  Chris Moore  <dooglus@gmail.com>
 
-2005-04-30  Chong Yidong  <cyd@stupidchicken.com>
+       * diff-mode.el (diff-sanity-check-hunk):
+       Also accept single-line hunks.
 
-       * progmodes/flymake.el (flymake-split-string)
-       (flymake-split-string, flymake-log, flymake-pid-to-names)
-       (flymake-reg-names, flymake-get-source-buffer-name)
-       (flymake-unreg-names, flymake-add-line-err-info)
-       (flymake-add-err-info): Clarify docstrings.
-       (flymake-popup-menu, flymake-make-emacs-menu)
-       (flymake-make-xemacs-menu): Add docstrings.
-       (flymake-get-buffer-*, flymake-set-buffer-*): Functions deleted.
-       Set variables directly throughout.
+2007-09-10  Chong Yidong  <cyd@stupidchicken.com>
 
-2005-04-30  Nick Roberts  <nickrob@snap.net.nz>
+       * startup.el (startup-screen-inhibit-startup-screen)
+       (pure-space-overflow-message): New vars.
+       (fancy-splash-insert): Allow functions for face and link specs.
+       (fancy-splash-head): Remove unused arg.  Move splash text...
+       (fancy-startup-text, fancy-about-text): ...here.
+       (fancy-startup-tail): Rename from fancy-splash-tail.
+       (fancy-startup-screen, fancy-about-screen): Split off from
+       fancy-splash-screens.
+       (display-startup-screen): New function.
+       (display-about-screen): Rename from display-splash-screen.
+       (command-line-1): Use concise startup screen if necessary.
 
-       * progmodes/cc-mode.el (cc-create-define-alist): Check that file
-       exists.  Initialize cc-define-alist.
-       (c-mode): Add cc-create-define-alist locally to after-save-hook.
-       If there is no file (Macroexpansion) don't create an alist.
+2007-09-10  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-04-29  Sam Steingold  <sds@gnu.org>
+       * net/browse-url.el (browse-url-encode-url): Use copy-sequence.
+       Reported by Jan Dj\e,Ad\e(Brv <jan.h.d@swipnet.se>.
 
-       * progmodes/cc-mode.el (cc-mode-cpp-program): New user variable.
-       (cc-create-define-alist): Use it instead of the hard-coded string.
+2007-09-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * progmodes/python.el: Merge changes from Dave Love's v2007-Sep-10.
+       (python-font-lock-keywords): Update to the 2.5 version of the language.
+       (python-quote-syntax): Let-bind font-lock-syntactic-keywords to nil.
+       (python-backspace): Only behave funny in code.
+       (python-compilation-regexp-alist): Add PDB stack trace regexp.
+       (inferior-python-mode): Add PDB prompt regexp.
+       (python-fill-paragraph): Refine the fenced-string regexp.
+       (python-find-imports): Handle imports spanning several lines.
+       (python-mode): Add `class' to hideshow support.
 
-       * international/mule-conf.el (file-coding-system-alist): Fix regexp
-       for latexenc.
+2007-09-10  Dave Love  <fx@gnu.org>
 
-2005-04-29  Lute Kamstra  <lute@gnu.org>
+       * outline.el (outline-4, outline-5, outline-7):
+       Move font-lock-builtin-face down from 4 to 7 to better keep the
+       progression of color brightness, and to better match Org-mode's faces.
+
+2007-09-10  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
+
+       * progmodes/meta-mode.el (meta-font-lock-keywords)
+       (font-lock-match-meta-declaration-item-and-skip-to-next)
+       (meta-comment-indent, meta-indent-previous-line)
+       (meta-indent-unfinished-line, meta-beginning-of-defun)
+       (meta-end-of-defun, meta-common-initialization): Handle \f.
+       (meta-indent-unfinished-line): Do not handle a `%' in a string as
+       a comment-start.
+
+       * files.el (file-modes-char-to-who, file-modes-char-to-right)
+       (file-modes-rights-to-number): Auxiliary functions for symbolic to
+       numeric notation of file modes.
+       (file-modes-symbolic-to-number): New.  Convert symbolic modes to its
+       numeric value.
+       (read-file-modes): New.  Read either an octal value of a file mode or a
+       symbolic value, and return its numeric value.
+
+       * dired-aux.el (dired-do-chmod): Change to use the built-in
+       `set-file-modes' and the previous symbolic mode parsing functions.
+
+2007-09-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/texinfo.el: Remove spurious * in docstrings.
+       (texinfo-mode-syntax-table, texinfo-mode-map):
+       Initialize in the declaration.
+
+       * tmm.el: Remove spurious * in docstrings.
+       (tmm-prompt): Use with-current-buffer.
+
+       * vcursor.el: Remove spurious * in docstrings.
+       (vcursor-map): Initialize in the declaration.
+       (vcursor-use-vcursor-map): Use define-minor-mode.
+       (vcursor-toggle-vcursor-map): Keep as an obsolete alias.
+
+       * wid-browse.el (widget-browse-mode-map, widget-minor-mode-map):
+       Initialize in the declaration.
+       (widget-minor-mode): Use define-minor-mode.
+
+       * woman.el (woman-mode-map, woman-syntax-table):
+       Initialize in the declaration.
+
+2007-09-09  Tassilo Horn  <tassilo@member.fsf.org>
+
+       * doc-view.el: New file.
+
+2007-09-09  Juri Linkov  <juri@jurta.org>
+
+       * Makefile.in (update-authors): Add etc/ to AUTHORS.
+
+       * makefile.w32-in (update-authors): Add etc/ to AUTHORS.
+
+       * startup.el (initial-buffer-choice): Rename choice "Splash screen"
+       to "Startup screen".  Fix docstring.
+       (inhibit-startup-screen): Rename from `inhibit-splash-screen'.
+       (inhibit-splash-screen): Make alias to `inhibit-startup-screen'.
+       (inhibit-startup-message): Change alias to `inhibit-startup-screen'.
+       (initial-scratch-message): Fix docstring.
+       (fancy-startup-text): Move link to Emacs Manual below Emacs Guided
+       Tour (which is a kind of tutorial and will be next to Emacs Tutorial).
+       Add link to "Customize Startup" and set interval between links to
+       5 spaces.
+       (fancy-about-text): Add links "Authors" and "Contributing".
+       (fancy-splash-head): Add text "Welcome to " on the startup screen,
+       and "This is " on the about screen.  Add link to
+       "http://www.gnu.org/software/emacs/" for "GNU Emacs".
+       For the about screen move emacs version to the header from
+       `fancy-splash-tail' (as it's done already for normal about screen).
+       (fancy-splash-tail): Insert emacs version only for startup screen.
+       (normal-splash-screen): Remove duplicate empty lines.
+       (normal-about-screen): Add links "Authors" and "Contributing".
 
-       * emacs-lisp/generic.el: Improve commentary section.
-       (define-generic-mode): Improve docstring.
+       * menu-bar.el (menu-bar-help-menu):
+       Move "About Emacs" and "About GNU" to the end of the Help menu.
+       Move "Emacs Psychotherapist" after "Send Bug Report...".
+       Move "External Packages" after "Find Emacs Packages".
+
+2007-09-09  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (top): Remove declarations of `tramp-gw-*' symbols,
+       they are useless with the byte compiler.
+       (tramp-make-temp-file, tramp-make-tramp-temp-file): Move up.
+       (tramp-do-copy-or-rename-file-directly): Rearrange let-bindings.
+       (tramp-compute-multi-hops): Mask `tramp-gw-*' symbols.
+       (tramp-file-name-real-host, tramp-file-name-port)
+       (tramp-find-method, tramp-find-user, tramp-find-host): Make them
+       defuns.
 
-2005-04-29  Carsten Dominik  <dominik@science.uva.nl>
+       * net/tramp-cache.el (top): Improve error message when
+       `tramp-persistency-file-name' is corrupted.
+
+2007-09-09  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-re): Also replace the :alpha: class.
+       (org-todo-tag-alist): Variable removed.
+       (org-todo-key-alist, org-todo-key-trigger) New variables.
+       (org-use-fast-todo-selection): New option.
+       (org-log-done): Docstring fixed.
+       (org-deadline-warning-days): New default value 14.
+       (org-edit-timestamp-down-means-later) New option.
+       (org-tag-alist): Docstring fixed.
+       (org-fast-tag-selection-include-todo): New option.
+       (org-export-language-setup): New languages added.
+       (org-set-regexps-and-options): Compute the new variables.
+       (org-paste-subtree): Cleaning up.
+       (org-remember-apply-template): New escape %A.
+       (org-todo): Call fast TODO selection.
+       (org-fast-todo-selection): New function.
+       (org-add-log-note): Allow prefix for abort exit.
+       (org-at-property-p, org-entry-properties)
+       (org-columns-get-autowidth-alist): Use :alpha: class.
+       (org-get-wdays): New function.
+       (org-agenda-remove-date): New variable.
+       (org-agenda-get-deadlines): Use `org-get-wdays'.
+       (org-agenda-get-deadlines): Reverse ee before returning.
+       (org-format-agenda-item): New argument REMOVE-RE.
+       (org-agenda-convert-date): Baha'i calendar added.
+       (org-infile-export-plist): Also find DATE line.
+       (org-get-min-level): New function.
+       (org-export-as-html, org-export-as-ascii): Use the date format.
+       (org-shiftup, org-shiftdown): Use.
+       `org-edit-timestamp-down-means-later'.
+       (org-assign-fast-keys): New function.
+
+2007-09-08  Fredrik Axelsson  <f.axelsson@gmail.com>
+
+       * cus-start.el (all): Add prefer-window-split-horizontally from
+       window.c.
+
+2007-09-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * net/browse-url.el (browse-url-galeon): Fix last change.
+       (top-level): Require cl when compiling.
+
+2007-09-08  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org-export-latex.el: arch-tag restored.
+
+       * textmodes/org-publish.el: arch-tag restored.
+
+2007-09-08  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/which-func.el (which-func-modes): Add diff-mode.
+
+       * progmodes/cc-langs.el: Support new keywords added to
+       objective-c frontend of gcc.
+       (c-simple-stmt-kwds): Add @throw.
+       (c-block-stmt-2-kwds): Add @synchronized.
+       (c-block-stmt-1-kwds): Add @finally and @try.
+
+2007-09-07  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-edit-timestamp-down-means-later): New option.
+       (org-agenda-after-show-hook): New variable.
+       (org-columns-compile-format)
+       (org-columns-get-autowidth-alist, org-buffer-property-keys)
+       (org-entry-properties, org-at-property-p): Allow [:alnum:] in
+       property names.
+       (org-get-wdays): New function.
 
-       * textmodes/org.el (many places): Change to quiet the byte compiler.
-       (org-prefix-format-compiled): New variable.
-       (org-compile-prefix-format): New function.
-       (org-timeline, org-agenda, org-diary): Call org-compile-prefix-format.
-       (org-agenda-prefix-format, org-timeline-prefix-format): New options.
-       (org-agenda-get-scheduled): Check if file is opened in `org-mode'.
-       (org-get-entries-from-diary): Use `org-get-time-of-day' for
-       consistency with entries from `org-mode' files.
-       (org-get-time-of-day): Fix bug with partial matches early in a line.
-       (org-non-link-chars): New constant.
-       (org-link-regexp): Respect `org-non-link-chars'.
-       (org-agenda-day-view): Remove command.
-       (org-agenda-toggle-week-view): Rename from `org-agenda-week-view'.
-       (org-follow-bbdb-link, org-store-link): Search also company field.
-       (org-highlight-overlay): New variable.
-       (org-highlight, org-unhighlight): New functions.
-       (org-agenda-mode): Add pre-command-hook to remove highlight.
-       (org-evaluate-time-range): Behavior depends upon whether time stamp
-       contains a time or not.
-       (org-show-subtree, org-show-entry): New functions.
-       (org-agenda-cleanup-fancy-diary): Remove empty lines.
+2007-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-04-28  Luc Teirlinck  <teirllm@auburn.edu>
+       * simple.el (normal-erase-is-backspace-setup-frame): Massage.
 
-       * comint.el (comint-output-filter-functions): Add autoload cookie.
+       * term/xterm.el (xterm-function-map): Initialize in the declaration.
 
-2005-04-28  Kim F. Storm  <storm@cua.dk>
+       * vc-arch.el (vc-arch-checkin): Fix typo.
 
-       * ido.el (ido-everywhere): Fix last change.
+2007-09-07  Johan Bockg\e,Ae\e(Brd  <bojohan@gnu.org>
 
-2005-04-28  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
+       * cus-face.el (custom-theme-set-faces): Set face attributes
+       locally for each frame.
 
-       * international/latexenc.el: New file.
-       * international/mule-conf.el (file-coding-system-alist): For .tex,
-       .ltx, .dtx and .drv extensions, use `latexenc-find-file-coding-system'.
+2007-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-04-28  Lute Kamstra  <lute@gnu.org>
+       * progmodes/fortran.el (fortran-mode): Set font-lock-syntactic-keywords
+       via font-lock-defaults.
 
-       * font-lock.el (font-lock-add-keywords)
-       (font-lock-remove-keywords): Clarify docstring.
-       (font-lock-keywords-alist, font-lock-removed-keywords-alist):
-       Don't start docstrings with a `*'.
-       (font-lock-update-removed-keyword-alist): Give it a docstring.
+       * emacs-lisp/bytecomp.el (byte-compile-log-file): Check major-mode via
+       derived-mode-p.
 
-       * generic-x.el: Update commentary section.
-       Only require font-lock when compiling.
-       Define all modes conditionally.
-       Place all generic modes in the generic-x-modes customization group.
-       (generic-x-modes): New customization group.
-       (generic-default-modes, generic-mswindows-modes)
-       (generic-unix-modes, generic-other-modes): New constants.
-       (generic-define-mswindows-modes, generic-define-unix-modes):
-       Update docstrings.  Make them obsolete.
-       (generic-extras-enable-list): New default value.  Update docstring.
-       Improve :type.  Change :set function.
-       (bat-generic-mode-syntax-table, rul-generic-mode-syntax-table):
-       Fix docstring.
+2007-09-07  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * emacs-lisp/generic.el (generic-mode-internal):
-       Simplify font-lock-defaults.
-       (define-generic-mode): Fix docstring.
+       * progmodes/autoconf.el (autoconf-definition-regexp):
+       Handle optional square brackets around definition name.
 
-2005-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-09-07  Johannes Weiner  <hannes@saeurebad.de>
 
-       * progmodes/grep.el (grep-mode-font-lock-keywords): Use the
-       font-lock-face property to highlight matches.
+       * net/browse-url.el (browse-url-browser-function): Add elinks.
+       (browse-url-elinks-wrapper): New option.
+       (browse-url-encode-url, browse-url-elinks)
+       (browse-url-elinks-sentinel): New functions.
+       (browse-url-file-url, browse-url-netscape, browse-url-mozilla)
+       (browse-url-firefox, browse-url-galeon, browse-url-epiphany):
+       Use new function browse-url-encode-url.
 
-2005-04-28  Nick Roberts  <nickrob@snap.net.nz>
+2007-09-07  Glenn Morris  <rgm@gnu.org>
 
-       * progmodes/cc-mode.el (cc-create-define-alist): New function.
-       (cc-define-alist): New variable.
-       (c-mode): Make it local and initialize it.
+       * version.el (emacs-version): Revert 2007-08-29 change: no need to
+       say if multi-tty is present.
 
-       * progmodes/gdb-ui.el (gdb-active-process): New variable.
-       (gdb-exited): New function.
-       (gdb-annotation-rules): Use it.
-       (gdb-starting): Set gdb-active-process to t.
-       (gdb-stopping): Amend doc string.
-       (gdb-reset): Set gdb-active-process to nil.
+2007-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * tooltip.el (tooltip-gud-tips): Show the associated #define
-       directives when a C program under GDB is not executing.
+       * cus-start.el (split-window-preferred-function): Add custom info.
 
-2005-04-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * calendar/holidays.el (holiday-list, calendar-check-holidays)
+       (calendar-mark-holidays, calendar-list-holidays)
+       (holiday-filter-visible-calendar): New names to clean up namespace.
+       (filter-visible-calendar-holidays, list-calendar-holidays)
+       (mark-calendar-holidays, check-calendar-holidays, list-holidays):
+       Add compatibility aliases.
+       (calendar-check-holidays, calendar-mark-holidays)
+       (calendar-holiday-list, holiday-filter-visible-calendar): Use dolist.
+       (holiday-sexp): Replace append with list.
+       (holiday-filter-visible-calendar): Replace append with push.
 
-       * progmodes/cperl-mode.el (cperl-mode): Don't precompile the
-       font-lock-fontify-syntactic-keywords.
+       * woman.el: Remove spurious * in docstrings.
+       (woman-mini-help, woman-non-underline-faces, woman0-rename)
+       (woman-topic-all-completions-merge, woman-file-name-all-completions)
+       (woman-select-symbol-fonts, woman-expand-directory-path): Use dolist.
+       (woman-write-directory-cache, woman-display-extended-fonts)
+       (WoMan-log-begin, WoMan-log-1): Use with-current-buffer.
+       (woman-really-find-file): Use pop-to-buffer if switch-to-buffer fails.
+       (woman-mode): Use inhibit-read-only.
+       (woman-negative-vertical-space): Use dotimes.
+       (woman2-tagged-paragraph, woman-tab-to-tab-stop): Use insert-char.
 
-       * font-lock.el (font-lock-default-fontify-region): Don't force
-       parse-sexp-lookup-properties to nil.
+2007-09-06  Romain Francoise  <romain@orebokech.com>
 
-2005-04-27  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
+       * vc-bzr.el (vc-bzr-admin-lastrev): New defconst.
+       (vc-bzr-workfile-version): Use it.
 
-       * man.el (man-mode-syntax-table): Set up `:' to have
-       word-constituent syntax.
+2007-09-06  Sean O'Rourke  <sorourke@cs.ucsd.edu>
 
-2005-04-27  Lute Kamstra  <lute@gnu.org>
+       * complete.el (PC-do-completion): Don't try to treat
+       empty string as an abbreviation.
 
-       * novice.el (disable-command): Don't add spurious newlines to the
-       init file.  Reported by Dan Jacobson <jidanni@jidanni.org>.
+2007-09-06  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
 
-2005-04-26  Jay Belanger  <belanger@truman.edu>
+       * help-fns.el (describe-variable): Keep doc's text properties.
 
-       * calc/calc-yank.el (calc-edit-finish): Make sure there is more
-       than one window before deleting window.
+2007-09-06  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-04-26  Luc Teirlinck  <teirllm@auburn.edu>
+       * vc.el (vc-default-diff-tree): Pass a list to the diff vc command
+       instead of a file.
 
-       * shell.el (shell-prompt-pattern): Doc fix.
-       (shell-mode): Set paragraph-separate buffer locally to "\\'".
+2007-09-06  Glenn Morris  <rgm@gnu.org>
 
-       * comint.el (comint-prompt-regexp, comint-get-old-input)
-       (comint-use-prompt-regexp)
-       (comint-use-prompt-regexp-instead-of-fields)
-       (comint-replace-by-expanded-history, comint-send-input)
-       (comint-output-filter, comint-get-old-input-default)
-       (comint-line-beginning-position, comint-bol, comint-show-output)
-       (comint-backward-matching-input, comint-forward-matching-input)
-       (comint-next-prompt, comint-previous-prompt):
-       Rename `comint-use-prompt-regexp-instead-of-fields' to
-       `comint-use-prompt-regexp'.  Keep old name as alias and declare
-       obsolete.
-       (comint-use-prompt-regexp): Shorten first line of doc string.
+       * emacs-lisp/checkdoc.el (checkdoc-minor-mode-string): New.
+       (checkdoc-minor-mode): Allow user to specify lighter via
+       checkdoc-minor-mode-string.
 
-       * ielm.el (inferior-emacs-lisp-mode): Adapt to above name change.
-       Set paragraph-separate buffer locally to "\\'".
+2007-09-05  Richard Stallman  <rms@gnu.org>
 
-       * hippie-exp.el (try-expand-line, try-expand-line-all-buffers):
-       Adapt to above name change.
+       * startup.el (fancy-startup-text): Rename from fancy-splash-text.
+       Several items removed, simplified, or put on one line.
+       (fancy-about-text): Add substantial contents, part of startup text.
+       (fancy-splash-head): Make "GNU" or "GNU/Linux" a link.
+       (normal-splash-screen): Call normal-mouse-startup-screen,
+       normal-no-mouse-startup-screen, or normal-about-screen.
+       (normal-mouse-startup-screen): New fn, broken out, shortened.
+       (normal-no-mouse-startup-screen): New fn, broken out.
+       (normal-about-screen): New function, contents all new.
 
-       * net/net-utils.el (nslookup-prompt-regexp, ftp-prompt-regexp)
-       (smbclient-prompt-regexp): Ditto.
+2007-09-05  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-       * progmodes/inf-lisp.el (inferior-lisp-prompt): Ditto.
+       * emacs-lisp/rx.el (rx): Fix typo in docstring.
 
-2005-04-27  Nick Roberts  <nickrob@snap.net.nz>
+2007-09-05  Glenn Morris  <rgm@gnu.org>
 
-       * progmodes/gdb-ui.el (gdb-location-alist): Rename from
-       gdb-location-list.
-       Break lines that are over 80 characters wide.
+       * cus-edit.el (custom-buffer-create-internal): Check tool-bar-mode
+       is bound.
 
-2005-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-09-05  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
 
-       * pcvs-info.el (cvs-fileinfo->full-path, cvs-display-full-path):
-       New fun and var, to preserve compatibility.
+       * emacs-lisp/advice.el (ad-make-advised-docstring): Highlight note
+       in doc string.
 
-       * pcvs.el, pcvs-info.el: Rename "full-path" -> "full-name".
+2007-09-04  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * server.el (server-start, server-unload-hook): Undo previous change.
+
+       * xt-mouse.el: Undo previous change.
+
+2007-09-04  Juri Linkov  <juri@jurta.org>
+
+       * startup.el (fancy-about-text): New variable.
+       (fancy-splash-delay, fancy-splash-max-time): Remove user options.
+       (fancy-current-text, fancy-splash-stop-time)
+       (fancy-splash-outer-buffer): Remove variables.
+       (fancy-splash-head, fancy-splash-tail): Add new optional argument
+       `startup' and use it to conditionally display different texts for
+       Startup and About screens.  Don't display Help commands on the About
+       screen.
+       (fancy-splash-screens-1): Remove function and move its content to
+       `fancy-splash-screens' to the part that dislpays the About screen.
+       (exit-splash-screen): Don't treat specially exiting from
+       alternating screens.
+       (fancy-splash-screens): Rename argument `static' to `startup'.
+       Fix docstring.  Remove code for displaying alternating screens.
+       Use arg `startup' in calls to `fancy-splash-head', `fancy-splash-tail'.
+       Remove let-bind for `fancy-splash-outer-buffer' and add let-bind
+       for `inhibit-read-only'.
+       (normal-splash-screen): Rename argument `static' to `startup'.
+       Fix docstring.  Use argument `startup' to conditionally display
+       different texts for Startup and About screens.  Don't display Help
+       commands on the About screen.  Remove `unwind-protect' `sit-for'
+       delay and `kill-buffer' after it.
+       (display-startup-echo-area-message): Remove call to
+       `use-fancy-splash-screens-p' because image.el is preloaded and
+       doesn't display "Loading image... done".
+       (display-splash-screen): Rename argument `static' to `startup'.
+       Fix docstring.
 
-2005-04-26  Dominique de Waleffe  <ddw@missioncriticalit.com>  (tiny change)
+2007-09-04  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * pcvs-info.el (cvs-fileinfo->backup-file): Don't pass the full file
-       name to file-newer-than-file-p.
+       * server.el (server-start, server-unload-hook):
+       suspend-tty-functions has been renamed to suspend-tty-hook.
 
-2005-04-26  Richard M. Stallman  <rms@gnu.org>
+       * xt-mouse.el: Likewise. resume-tty-functions has been renamed to
+       resume-tty-hook.
 
-       * simple.el (line-move-1): Avoid using vertical-motion in easy cases.
+2007-09-03  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (tiny change)
 
-       * progmodes/python.el (python-mode):
-       Use new name eldoc-documentation-function.
+       * loadup.el: Fix merge problem, only load "button" once.
 
-       * hexl.el (hexl-mode): Use new name eldoc-documentation-function.
+2007-09-03  Glenn Morris  <rgm@gnu.org>
 
-       * emacs-lisp/eldoc.el (eldoc-mode): Doc fix.
-       (eldoc-documentation-function):
-       Rename from eldoc-print-current-symbol-info-function.  Calls changed.
+       * vc-svn.el (vc-svn-print-log): If there is only one file, use
+       "Working file:" as the prefix, for the sake of
+       log-view-current-file.
 
-2005-04-26  Nick Roberts  <nickrob@snap.net.nz>
+2007-09-02  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * emacs-lisp/byte-run.el (define-obsolete-function-alias): New macro.
+       * term/xterm.el (xterm-modify-other-keys-terminal-list): New variable.
+       (xterm-turn-on-modify-other-keys): Only turn on modify-other-keys
+       if the selected frames is in
+       xterm-modify-other-keys-terminal-list.
+       (xterm-turn-off-modify-other-keys): Add an optional frame
+       parameter.  Only turn off modify-other-keys if FRAME is in
+       xterm-modify-other-keys-terminal-list.
+       (xterm-remove-modify-other-keys): New function.
+       (terminal-init-xterm): Use it.  Deal with delete-frame hook.
+       Add the selected frame to xterm-modify-other-keys-terminal-list.
 
-2005-04-25  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * term/xterm.el (function-key-map): Fix strings for
-       {C,S,A,C-S}-f[1-4].  Use substitute-key-definition to bind
-       {C,S,A,C-S}-{f1-f12}.
+       * term/x-win.el (x-gtk-stock-map): Map diropen to system-file-manager.
+       (icon-map-list): New variable.
+       (x-gtk-map-stock): Use icon-map-list.
 
-2005-04-26  Kenichi Handa  <handa@m17n.org>
+2007-09-02  Romain Francoise  <romain@orebokech.com>
 
-       * international/mule-cmds.el (select-safe-coding-system):
-       Fix previous change.
+       * log-view.el (log-view-current-file): Balance parens.
 
-2005-04-26  Lute Kamstra  <lute@gnu.org>
+2007-09-02  Glenn Morris  <rgm@gnu.org>
 
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Fix docstring.
+       * comint.el (comint-mode): Don't set scroll-conservatively.
 
-       * font-lock.el (font-lock-fontify-region-function): Fix docstring.
-       (font-lock-comment-delimiter-face): Ditto.
+       * eshell/em-unix.el (eshell/time): Stringify and flatten the
+       non-command arguments.
 
-       * calc/calc.el (calc-trail-mode): Don't set font-lock-defaults.
+       * log-view.el (log-view-current-file): Give a more explicit error
+       if log-view-file-re fails to find a match.
 
-2005-04-25  Jay Belanger  <belanger@truman.edu>
+2007-09-01  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * calc/calc-help.el (calc-view-news): Let-bind inhibit-read-only
-       to t while inserting information; use help-mode.
+       * emacs-lisp/bytecomp.el (byte-recompile-directory):
+       Fix bug: Don't expand top-level file name more than once.
+       Reported by Dmitry Antipov <dmantipov@yandex.ru>.
 
-2005-04-25  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * term.el (ansi-term-color-vector): Use the xterm colors.
-       (term-raw-map): Don't add mappings for \eO and \e[.  Map deletechar.
+       * server.el (server-process-filter): Don't display the splash screen.
+       It's annoying enough on the initial screen and becomes positively
+       obnoxious here.
 
-2005-04-25  Lute Kamstra  <lute@gnu.org>
+2007-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * font-core.el (font-lock-defaults): Fix docstring.
+       * emacs-lisp/avl-tree.el: Use defstruct rather than macros.
+       Change naming to use "avl-tree--" for internal functions.
 
-       * font-lock.el (font-lock-syntactic-face-function): Fix docstring.
+2007-08-31  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-04-25  Kenichi Handa  <handa@m17n.org>
+       * term/x-win.el (x-menu-bar-open): Delete duplicated function from
+       the merge.
+       (global-set-key): Delete f10 mapping, now done in menu-bar.el.
+       (provide): Move to the end of file.
 
-       * international/mule-cmds.el (select-safe-coding-system):
-       Don't check consistency with coding: spec, etc if raw-text or
-       no-conversion was found to be safe.
+       * vc-svn.el (vc-svn-diff-tree): Pass a list to vc-svn-diff.
 
-2005-04-24  Richard M. Stallman  <rms@gnu.org>
+2007-08-31  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-       * mail/sendmail.el (mail-font-lock-keywords): Match any number of
-       citation markers at start of each line.
+       * textmodes/flyspell.el (flyspell-mark-duplications-exceptions):
+       New variable.  List of exceptions for the duplicated word rule.
+       (flyspell-mark-duplications-flag): Mention it.
+       (flyspell-word): Treat it.
 
-       * mail/rmail.el (rmail-font-lock-keywords): Match any number of
-       citation markers at start of each line.
+       * files.el (create-file-buffer): If the filename sans directory starts
+       with spaces, remove them.
 
-       * font-lock.el (font-lock-comment-delimiter-face): Doc fix.
+2007-08-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * files.el (mode-require-final-newline): Fix previous change.
-       (require-final-newline): Fix type label.
+       * term/x-win.el (x-gtk-stock-map): Add etc/images to keys.
+       (x-gtk-map-stock): Use two directory elements when matching
+       file name.
 
-2005-04-24  Glenn Morris  <gmorris@ast.cam.ac.uk>
+2007-08-31  James Wright  <james@chumsley.org>
 
-       * progmodes/f90.el (f90-calculate-indent): Fix treatment of first
-       statement in buffer (broken by 2004-11-24 change).
+       * eshell/em-unix.el (eshell/info): New function.
 
-2005-04-24  Kim F. Storm  <storm@cua.dk>
+2007-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * ido.el (ido-everywhere): Save and restore old read-buffer-function
-       and read-file-name-function values.  Don't overwrite existing
-       non-nil values if ido-mode is enabled without ido-everywhere.
+       * frame.el (frame-initialize, make-frame):
+       * server.el (server-process-filter):
+       * faces.el (tty-set-up-initial-frame-faces): Don't set
+       term-environment-variable since it's not used any more.
+
+       * env.el (setenv): Don't treat $TERM specially.
+
+       * startup.el (normal-top-level): Set $TERM to `dumb' so that unless
+       stated otherwise, subprocesses do not send back escape sequences
+       corresponding to the terminal from which Emacs was started.
+
+2007-08-31  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       * calculator.el: Require cl for compilation.
+
+2007-08-30  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * outline.el (outline-font-lock-levels): Comment out unused var.
+       (outline-font-lock-face): Wrap around face list to handle any
+       nesting depth gracefully.
+
+2007-08-30  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/ange-ftp.el: Add ange-ftp property to `set-file-modes' and
+       `set-file-times'.
+
+2007-08-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-export-visible): Fix drawers before export.
+       (org-do-sort): Allow sorting by priority.
+       (org-agenda-files): Ignore non-existing files.
+       (org-agenda-skip-unavailable-files): New variable.
+       (org-ellipsis): All a face as value.
+       (org-mode): Interprete the face value of `org-ellipsis'.
+       (org-archive-save-context-info): New option.
+       (org-archive-subtree): Store context info in archived entry.
+       (org-fast-tag-selection-can-set-todo-state): New variable.
+       (org-fast-tag-selection): Allow setting TODO states through this
+       interface.
+       (org-cycle): Docstring updated.
+       (org-todo-keyword-faces): New option.
+       (org-get-todo-face): New function.
+       (org-set-font-lock-defaults, org-agenda-highlight-todo):
+       Use `org-get-todo-face'.
+       (org-switch-to-buffer-other-window): New function.
+       (org-table-edit-field, org-table-show-reference)
+       (org-table-edit-formulas, org-add-log-note)
+       (org-fast-tag-selection, org-agenda, org-prepare-agenda)
+       (org-timeline): Use `org-switch-to-buffer-other-window' instead of
+       `switch-to-buffer-other-window' to make sure that the temporary
+       windows show up on the current frame.
+       (org-mhe-get-message-real-folder, org-batch-store-agenda-views)
+       (org-get-entries-from-diary, org-replace-region-by-html):
+       Don't allow pop-up frames.
+       (org-agenda-get-deadlines, org-agenda-get-scheduled):
+       Fix problems with time-of-day.
+       (org-export-get-title-from-subtree): New function.
+       (org-agenda-get-scheduled, org-agenda-get-deadlines): Fix problems
+       with listing items that are DONE.
+       (org-change-tag-in-region): New command.
+       (org-agenda-skip-scheduled-if-done)
+       (org-agenda-skip-deadline-if-done): Docstring clarified.
+       (org-mode): Hide drawers on startup.
+       (org-get-todo-face): New function.
+       (org-todo-keyword-faces): New option.
+       (org-set-regexps-and-options): Use `org-remove-keyword-keys'.
+       (org-remove-keyword-keys): New function.
+
+2007-08-30  Jari Aalto  <jari.aalto@cante.net>  (tiny change)
 
-2005-04-24  Luc Teirlinck  <teirllm@auburn.edu>
+       * progmodes/grep.el (grep-find-ignored-directories):
+       Add monotone _MTN bookkeeping directory in workspaces.
+       Add RCS control directory.  List items in alphabetical order.
 
-       * files.el (mode-require-final-newline): Minor doc fix.
+       * progmodes/grep.el (grep-files-aliases): Add cc alias.
+       Sort items in alphabetical order.  Fix parens.
 
-2005-04-24  Eli Zaretskii  <eliz@gnu.org>
+2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * subr.el (syntax-after): Doc fix.
-       (syntax-class): If argument is nil, return nil.  Mask off upper 16
-       bits, not 8 bits.
+       * vc-hg.el (vc-hg-extra-menu-map): New variable.
+       (vc-hg-extra-menu, vc-hg-outgoing, vc-hg-incoming, vc-hg-push)
+       (vc-hg-pull): New functions.
+       (vc-hg-outgoing-mode, vc-hg-incoming-mode): New derived modes.
 
-       * files.el (mode-require-final-newline): Doc fix.
-       (backup-buffer-copy): Fix last change.
+       * term/mac-win.el: Don't require url, only autoloaded url
+       functions are used in this file.
 
-2005-04-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+2007-08-29  Andreas Schwab  <schwab@suse.de>
 
-       * term/mac-win.el: Require select.  Set selection-coding-system to
-       mac-system-coding-system.  Call menu-bar-enable-clipboard.
-       (x-last-selected-text-clipboard, x-last-selected-text-primary)
-       (x-select-enable-clipboard): New variables.
-       (x-select-text, x-get-selection, x-selection-value)
-       (x-get-selection-value, mac-select-convert-to-string)
-       (mac-services-open-file, mac-services-open-selection)
-       (mac-services-insert-text): New functions.
-       (CLIPBOARD, FIND): Put mac-scrap-name property.
-       (com.apple.traditional-mac-plain-text, public.utf16-plain-text)
-       (public.tiff): Put mac-ostype property.
-       (selection-converter-alist): Add entries for them.
-       (mac-application-menu-map): New keymap.
-       (interprogram-cut-function, interprogram-paste-function): Set to
-       x-select-text and x-get-selection-value, respectively.
-       (split-window-keep-point): Set to t.
+       * shell.el (shell): Return correct value from interactive spec.
 
-2005-04-23  Richard M. Stallman  <rms@gnu.org>
+2007-08-29  Glenn Morris  <rgm@gnu.org>
 
-       * files.el (read-directory-name): Always pass non-nil
-       DEFAULT-FILENAME arg to read-file-name.
-       (backup-buffer-copy, basic-save-buffer-2): Take care against
-       writing thru an unexpected existing symlink.
-       (revert-buffer): In indirect buffer, revert the base buffer.
-       (magic-mode-alist): Doc fix.
-       (buffer-stale-function): Doc fix.
-       (minibuffer-with-setup-hook): Avoid warning.
-       (mode-require-final-newline): Doc and custom fix.
+       * version.el (emacs-version): Increase to 23.0.50.
 
-       * follow.el (follow-end-of-buffer): Use with-no-warnings.
+2007-08-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * font-lock.el (font-lock-comment-face): On terminals with few colors,
-       use the default appearance.
-       (font-lock-comment-delimiter-face): New face, new variable.
+       * term/x-win.el (x-gtk-stock-map): :version changed to 23.1.
 
-       * imenu.el (imenu--generic-function): The official position of a
-       definition is the start of the line that BEG is in.
+2007-08-29  Juri Linkov  <juri@jurta.org>
 
-       * midnight.el (midnight-timer): Move defvar up.
+       * loadup.el: Add "button" loading after "faces" and move "startup"
+       to load after "button".
 
-       * mouse.el (mouse-drag-region-1): Delete some debugging code.
+2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * saveplace.el (save-place-to-alist): Use with-no-warnings.
+       * loadup.el: Load term/mac-win on a Mac using Carbon.
 
-       * startup.el (command-line): Use with-no-warnings.
+       * term/mac-win.el: Provide mac-win.
+       (mac-initialized): New variable.
+       (mac-initialize-window-system): New function.  Move global setup here.
+       (handle-args-function-alist, frame-creation-function-alist):
+       (window-system-initialization-alist): Add mac entries.
+       (x-setup-function-keys): New function containing all the
+       top level function key definitions.
 
-       * window.el (window-size-fixed): New defvar.
+       * term/x-win.el (x-menu-bar-open): Use accelerate-menu.
 
-       * emacs-lisp/easymenu.el (easy-menu-do-define): Use defalias, not fset.
+       * env.el (read-envvar-name): Don't consider the environment frame param.
 
-       * mail/rmail.el (rmail-font-lock-keywords):
-       Use font-lock-comment-delimiter-face.
+       * env.el (setenv):
+       * frame.el (frame-initialize, make-frame):
+       * faces.el (tty-set-up-initial-frame-faces):
+       * server.el (server-process-filter): Set
+       display-environment-variable and term-environment-variable.
 
-       * mail/sendmail.el (mail-font-lock-keywords):
-       Use font-lock-comment-delimiter-face.
+       * server.el (server-process-filter): Set COLORFGBG and COLORTERM.
 
-       * progmodes/compile.el (next-error-highlight-timer): New defvar.
+2007-08-29  Jason Rumney  <jasonr@gnu.org>
 
-2005-04-23  SAITO Takuya  <tabmore@rivo.mediatti.net>  (tiny change)
+       * loadup.el: Only load term/x-win when X is compiled in.
+       Load term/w32-win and dependencies on windows-nt.
 
-       * progmodes/compile.el (compilation-mode-font-lock-keywords):
-       Specify t for LAXMATCH when matching directories.
-       Save match data around compilation-compat-error-properties form.
+       * term/w32-win.el: Reorder to match x-win.el more closely.
+       Provide w32-win.  Don't throw error when global window-system not w32.
+       (internal-face-interactive): Remove obsolete function.
+       (x-setup-function-keys): Use local-function-key-map.
+       (w32-initialized): New variable.
+       (w32-initialize-window-system): Set it.
+       Move more global setup here.
+       (x-setup-function-keys): New function.
+       (w32-initialize-window-system): Move non function key global setup here.
+       (x-cut-buffer-max): Remove.
+       (w32-initialize-window-system): New function.
+       (handle-args-function-alist, frame-creation-function-alist):
+       (window-system-initialization-alist): Add w32 entries.
 
-2005-04-23  David Kastrup  <dak@gnu.org>
+2007-08-29  David Kastrup  <dak@gnu.org>
 
-       * textmodes/tex-mode.el (TeX-mode, plain-TeX-mode, LaTeX-mode):
-       Mention that the autoloaded aliases should be kept for AUCTeX.
+       * env.el (getenv): Pass frame to getenv-internal.
 
-2005-04-23  Andreas Schwab  <schwab@suse.de>
+2007-08-29  Karoly Lorentey  <lorentey@elte.hu>
 
-       * isearch.el (isearch-forward): Doc fix.
+       * version.el (emacs-version): Show if multi-tty is present.
 
-2005-04-23  Eli Zaretskii  <eliz@gnu.org>
+       * loadup.el: Delay loading env; mule-conf gets confused by cl
+       during bootstrap.  Also load termdev and term/x-win.
 
-       * jit-lock.el (jit-lock-stealth-time): Change default value to 16.
-       (jit-lock-stealth-nice): Change default value to 0.5.
+       * bindings.el (mode-line-client): New variable.
+       (help-echo): Add it to the default mode-line format.
 
-2005-04-23  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
+       * cus-start.el: Remove bogus window-system reference from GTK test.
 
-       * abbrev.el (write-abbrev-file): Write table entries in
-       alphabetical order by table name.
+       * ebrowse.el (ebrowse-electric-list-mode-map)
+       (ebrowse-electric-position-mode-map):
+       * ebuff-menu.el (electric-buffer-menu-mode-map):
+       * echistory.el (electric-history-map): Bind C-z to `suspend-frame',
+       not `suspend-emacs'.
 
-2005-04-22  Kim F. Storm  <storm@cua.dk>
+       * ediff-wind.el (ediff-setup-windows-automatic): New function.
+       (ediff-window-setup-function): Use it as default.
 
-       * ido.el (ido-read-internal): Fix `list' completion.
+       * files.el (save-buffers-kill-terminal): New function.
+       (ctl-x-map): Change binding of C-x C-c to save-buffers-kill-terminal.
 
-2005-04-22  Kenichi Handa  <handa@m17n.org>
+       * font-lock.el (lisp-font-lock-keywords-2): Add `let-environment'
+       and `with-selected-frame'.
 
-       * recentf.el (recentf-save-file-coding-system): New variable.
-       (recentf-save-list): Encode the file by
-       recentf-save-file-coding-system and add coding: tag.
+       * help-fns.el (describe-variable): Describe frame-local variables
+       correctly.
 
-2005-04-22  Nick Roberts  <nickrob@snap.net.nz>
+       * simple.el (normal-erase-is-backspace-mode): Rewrite for multiple
+       display support.
+       (normal-erase-is-backspace-setup-frame): New function.
+
+       * subr.el (with-selected-frame): New function.
+       (read-quoted-char): Use terminal-local binding of
+       local-function-key-map instead of function-key-map.
+
+       * talk.el (talk): New function.
+       (talk-handle-delete-frame): New function.
+       (talk-add-display): Open a new frame only if FRAME was not a frame.
+
+       * termdev.el: New file.
+
+       * menu-bar.el (menu-bar-open): New function.  Bind it to f10.
+       * term/x-win.el: Don't bind f10.
+       * tmm.el: Remove autoload binding for f10.
+
+       * international/encoded-kb.el (encoded-kbd-setup-display): Use
+       `set-input-meta-mode'.  Fix broken condition before set-input-mode.
+       Store the saved input method as a terminal parameter.  Add keymap
+       parameter.  Use it instead of changing key-translation-map directly.
+       (saved-key-translation-map, encoded-kbd-mode, saved-input-mode):
+       Remove.
+       (encoded-kbd-setup-display): New function.
+
+       * international/mule-cmds.el (set-locale-environment): Fix getenv
+       call.  Use save-buffers-kill-terminal.  Ignore window-system; always
+       set the keyboard coding system.  Add DISPLAY parameter.
+       (set-display-table-and-terminal-coding-system): Add DISPLAY
+       parameter.  Pass it to set-terminal-coding-system.
+
+       * international/mule.el (keyboard-coding-system): Test for
+       encoded-kbd-setup-display, not encoded-kbd-mode.
+       (set-terminal-coding-system, set-keyboard-coding-system): Add
+       DISPLAY parameter.
+       (set-keyboard-coding-system): Use encoded-kbd-setup-display.
+
+       * term/README: Update.
+
+       * term/linux.el (terminal-init-linux): Use `set-input-meta-mode'.
+
+       * term/x-win.el (x-setup-function-keys): New function.  Move
+       function-key-map tweaks here.  Protect against multiple calls on
+       the same terminal.  Use terminal-local binding of
+       local-function-key-map instead of function-key-map.
+       (x-initialize-window-system): Make a copy of pure list.  Pass a
+       frame getenv.
+
+       * term/vt200.el, term/vt201.el, term/vt220.el, term/vt240.el:
+       * term/vt300.el, term/vt320.el, term/vt400.el, term/vt420.el:
+       * term/AT386.el, term/internal.el, term/iris-ansi.el, term/lk201.el:
+       * term/mac-win.el, term/news.el, term/rxvt.el, term/sun.el:
+       * term/tvi970.el, term/wyse50.el: Use terminal-local binding of
+       local-function-key-map instead of function-key-map.
+
+       * term/rxvt.el, term/xterm.el: Speed up load time by protecting
+       `substitute-key-definition' and `define-key' calls against
+       multiple execution.  Use terminal-local binding of
+       local-function-key-map instead of function-key-map.  Pass a frame
+       to getenv.
+
+       * edmacro.el (edmacro-format-keys):
+       * emulation/cua-base.el (cua--pre-command-handler):
+       * isearch.el (isearch-other-meta-char):
+       * xt-mouse.el: Use terminal-local binding of
+       local-function-key-map instead of function-key-map.
+
+       * fringe.el (set-fringe-mode): Simplify and fix using
+       `modify-all-frames-parameters'.
+       * scroll-bar.el (set-scroll-bar-mode): Ditto.
+       * tool-bar.el (tool-bar-mode): Ditto.  Remove 'tool-bar-map length
+       check before calling `tool-bar-setup'.
+       (tool-bar-setup): New variable.
+       (tool-bar-setup): Use it to guard against multiple calls.  Add
+       optional frame parameter, and select that frame before adding items.
+       (toggle-tool-bar-mode-from-frame): New function.
+
+       * menu-bar.el (toggle-menu-bar-mode-from-frame): New function.
+       (menu-bar-showhide-menu): Use toggle-menu-bar-mode-from-frame and
+       toggle-tool-bar-mode-from-frame to change "Menu-bar" and
+       "Tool-bar" toggles to reflect the state of the current frame.
+       (menu-bar-mode): Simplify and fix using `modify-all-frames-parameters'.
+
+       * env.el: Require cl for byte compilation (for `block' and `return').
+       (environment, setenv-internal): New functions.
+       (let-environment): New macro.
+       (setenv, getenv): Add optional terminal parameter.  Update docs.
+       (setenv): Use setenv-internal.  Always set process-environment.
+       Handle `local-environment-variables'.
+       (read-envvar-name, setenv, getenv): Use frame parameters
+       to store the local environment, not terminal parameters.  Include
+       `process-environment' as well.
+
+       * faces.el (tty-run-terminal-initialization): New function.
+       (tty-create-frame-with-faces): Use it.  Set up faces and
+       background mode only after the terminal has been initialized.
+       Call terminal-init-*.  Don't load the initialization file more
+       than once.  Call set-locale-environment.
+       (frame-set-background-mode): Handle the 'background-mode terminal
+       parameter.
+       (tty-find-type): New function.
+       (x-create-frame-with-faces): Remove bogus check for
+       first frame.  Call `tool-bar-setup'.  Don't make frame visible
+       until we are done setting up all its parameters.  Call
+       x-setup-function-keys.
+
+       * frame.el (make-frame): Always inherit 'environment and 'client
+       parameters.  Set up the 'environment frame parameter, when needed.
+       Also inherit 'client parameter.  Don't override explicitly
+       specified values with inherited ones.  Add 'terminal frame
+       parameter.  Append window-system-default-frame-alist to parameters
+       before calling frame-creation-function.
+       (frame-initialize): Copy the environment from the initial frame.
+       (window-system-default-frame-alist): Enhance doc string.
+       (frame-notice-user-settings): Don't put 'tool-bar-lines in
+       `default-frame-alist' when initial frame is on a tty.
+       (modify-all-frames-parameters): Simplify using `assq-delete-all'.
+       Remove specified parameters from `window-system-default-frame-alist'.
+       (make-frame-on-tty, framep-on-display, suspend-frame):
+       Extend doc string, update parameter names.
+       (frames-on-display-list): Use terminal-id to get the display id.
+       (frame-notice-user-settings): Extend to apply
+       settings in `window-system-default-frame-alist' as well.
+       (terminal-id, terminal-parameters, terminal-parameter)
+       (set-terminal-parameter, terminal-handle-delete-frame): New functions.
+       (delete-frame-functions): Add to `delete-frame-functions' hook.
+       (blink-cursor-mode): Adapt blink-cursor-mode default
+       value from startup.el.
+       (make-frame-on-display): Protect condition on x-initialized when
+       x-win.el is not loaded.  Update doc.
+       (suspend-frame): Use display-controlling-tty-p to decide between
+       suspend-emacs and suspend-tty.
+       (frames-on-display-list): Update for display ids.
+       (framep-on-display): Ditto.
+       (suspend-frame): Use display-name, not frame-tty-name.
+       (selected-terminal): New function.
+
+       * server.el: Use `device' instead of `display' or `display-id' in
+       variable and client parameter names.
+       (server-select-display): Remove (unused).
+       (server-tty-live-p, server-handle-delete-tty): Remove.
+       (server-unquote-arg, server-quote-arg, server-buffer-clients):
+       Update docs.
+       (server-getenv-from, server-with-environment, server-send-string)
+       (server-save-buffers-kill-terminal): New functions.
+       (server-delete-client): Handle quits in kill-buffer.  Don't kill
+       modified buffers.  Add extra logging.  Delete frames after
+       deleting the tty.  Clear 'client parameter before deleting a frame.
+       Use delete-display, not delete-tty.
+       (server-visit-files): Don't set `server-existing-buffer' if the
+       buffer already has other clients.  Return list of buffers
+       created.  Update doc.  Don't set client-record when nowait.
+       (server-handle-delete-frame): Delete the client if this was its
+       last frame.  Check that the frame is alive.  Remove bogus comment.
+       Add note on possible race condition.  Delete tty clients, if needed.
+       (server-handle-suspend-tty): Use server-send-string.  Kill the
+       client in case of errors from process-send-string.  Use the display
+       parameter.
+       (server-unload-hook): Remove obsolete delete-tty hook.
+       (server-start): Ask before restarting if the old server still has
+       clients.  Add feedback messages.  Remove obsolete delete-tty hook.
+       (server-process-filter): Use server-send-string.  Accept `-dir'
+       command.  Switch to *scratch* immediately after creating the frame,
+       before evaluating any -evals.  Protect `display-splash-screen'
+       call in a condition-case.  Explain why.  Call
+       `display-startup-echo-area-message' before
+       `display-splash-screen'.  Don't display the splash screen when no
+       frame was created.  Show the Emacs splash screen and startup echo
+       area message.  Display the *scratch* buffer by default.  Store the
+       local environment in a frame (not terminal) parameter.  Do not try
+       to decode environment strings.  Fix reference to the 'display
+       frame parameter.  Change syntax of environment variables.  Put
+       environment into terminal parameters, not client parameters.  Use
+       a dummy client with --no-wait's X frames.  In `-position LINE'
+       handler, don't ruin the request string until the line number is
+       extracted.  Log opened files.  Handle -current-frame command.
+       Don't create frames when it is given.  Don't bind X frames to the
+       client when we are in -no-wait mode.  Set locale environment
+       variables from client while creating tty frames.  Disable call to
+       configure-display-for-locale.  When processing -position command,
+       don't change the request string until the parameters are
+       extracted.  Don't try to create an X frame when Emacs does not
+       support it.  Improve logging.  Temporarily set ncurses-related
+       environment variables to those of the client while creating a new
+       tty frame.  Select buffers opened by nowait clients, don't leave
+       them buried under others.  Set the display parameter, and use it
+       when appropriate.
 
-       * emacs-lisp/byte-run.el (define-obsolete-variable-alias): New macro.
+       * startup.el (display-startup-echo-area-message): Handle
+       `inhibit-startup-echo-area-message' here.
+       (command-line-1): Moved from here.
+       (fancy-splash-screens): Use `overriding-local-map' instead of
+       `overriding-terminal-local-map' for now; the latter doesn't work
+       right, it looses keypresses to another terminal.  Use
+       `overriding-terminal-local-map' to set up keymap.  Install a
+       `delete-frame-functions' hook to catch `delete-frame' events.
+       Ignore `select-window' events to cope better with
+       `focus-follows-mouse'.  Don't switch back to the original buffer
+       if the splash frame has been killed.  Restore previous buffer, even
+       if it's *scratch*.
+       (normal-splash-screen): Don't let-bind `mode-line-format'; it
+       changes the global binding - setq it instead.  Use
+       `save-buffers-kill-terminal'.
+       (display-splash-screen): Don't do anything if the splash screen is
+       already displayed elsewhere.
+       (fancy-splash-exit, fancy-splash-delete-frame): New functions.
+       (command-line): Replace duplicated code with a call to
+       tty-run-terminal-initialization.  Don't load the terminal
+       initialization file more than once.  Remove call to nonexistent
+       function `set-locale-translation-file-name'.
+
+       * xt-mouse.el (xterm-mouse-x, xterm-mouse-y): Convert to terminal
+       parameters.
+       (xterm-mouse-position-function, xterm-mouse-event): Update.
+       (xterm-mouse-mode): Don't depend on current value of window-system.
+       (turn-on-xterm-mouse-tracking, turn-off-xterm-mouse-tracking):
+       Update for multi-tty.
+       (turn-on-xterm-mouse-tracking-on-terminal)
+       (turn-off-xterm-mouse-tracking-on-terminal)
+       (xterm-mouse-handle-delete-frame): New functions.
+       (delete-frame-functions, after-make-frame-functions)
+       (suspend-tty-functions, resume-tty-functions): Install extra hooks
+       for multi-tty.
+
+2007-08-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (invisible-p): Remove: implemented in C now.
+       (line-move-invisible-p): Remove obsolete alias.
+
+2007-08-28  Juri Linkov  <juri@jurta.org>
+
+       * image-mode.el (image-type): New variable.
+       (image-mode): Set default major mode name to "Image[text]".
+       (image-minor-mode): Change LIGHTER to display image-type in the
+       mode line.
+       (image-minor-mode): Set default image-type to "text".
+       (image-toggle-display): After switching to text mode, set
+       image-type to "text" and major mode name to "Image[text]".
+       After switching to image mode, set image-type to actual image
+       type, and add image type to major mode name.  Let-bind the same
+       variable names as arguments of `image-type' and `create-image'.
+       Bind `type' to the result of `image-type' and use it as arg
+       of `create-image' to not determine the image type twice.
+
+2007-08-28  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-handle-set-file-times): Flush the file properties.
+       (tramp-set-file-uid-gid, tramp-get-local-uid)
+       (tramp-get-local-gid): New defuns.
+       (tramp-handle-copy-file): Handle new parameter PRESERVE-UID-GID.
+       (tramp-do-copy-or-rename-file): New parameter PRESERVE-UID-GID.
+       Improve fast track.
+       (tramp-do-copy-or-rename-file-directly): Sync parameter list with
+       the other tramp-do-copy-or-rename-file-* functions.  Major rewrite.
+       (tramp-handle-file-local-copy, tramp-handle-insert-file-contents)
+       (tramp-handle-write-region): Improve fast track.
+       (tramp-handle-file-remote-p): IDENTIFICATION can also be `localname'.
+       (tramp-maybe-open-connection): Let `process-adaptive-read-buffering'
+       be nil.
+
+2007-08-28  Ivan Kanis  <apple@kanis.eu>
+
+       * time.el: New feature to display several time zones in a buffer.
+       (display-time-world-mode, display-time-world-display)
+       (display-time-world, display-time-world-timer): New functions.
+       (display-time-world-list, display-time-world-time-format)
+       (display-time-world-buffer-name, display-time-world-timer-enable)
+       (display-time-world-timer-second, display-time-world-mode-map):
+       New variables.
 
-2005-04-21  Lute Kamstra  <lute@gnu.org>
+2007-08-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * loadhist.el (unload-feature): Don't remove a function from hooks
-       if it is about to be restored to an autoload .  Remove functions
-       that will become unbound from auto-mode-alist.  Simplify the code.
+       * term/x-win.el (x-gtk-stock-map): New variable.
+       (x-gtk-map-stock): New function.
 
-       * subr.el (assq-delete-all): New implementation that is linear,
-       not quadratic.  Suggested by David Kastrup <dak@gnu.org>.
-       (rassq-delete-all): New function.
+       * info.el (info-tool-bar-map): Add :rtl keyword to right/left-arrow and
+       prev/next-node.
 
-       * menu-bar.el (menu-bar-options-save, menu-bar-showhide-menu):
-       Add size-indication-mode.
+2007-08-28  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>  (tiny change)
 
-2005-04-21  Kenichi Handa  <handa@m17n.org>
+       * play/gamegrid.el (gamegrid-init): Set line-spacing to 0.
 
-       * international/mule-cmds.el: Add autoload for widget-value in
-       eval-when-compile.
+2007-08-28  Glenn Morris  <rgm@gnu.org>
 
-2005-04-21  Nick Roberts  <nickrob@snap.net.nz>
+       * progmodes/cc-langs.el (c-constant-kwds): Add java: null, true, false.
 
-       * menu-bar.el (menu-bar-options-save, menu-bar-showhide-menu):
-       Add tooltip-mode.
+2007-08-27  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * bindings.el (mode-line-mode-menu): Remove tooltip-mode.
+       * progmodes/modula2.el (m2-definition, m2-module):
+       Don't use previous-line.  Reported by T. V. Raman.
 
-2005-04-20  Luc Teirlinck  <teirllm@auburn.edu>
+2007-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * progmodes/inf-lisp.el (inferior-lisp): New defgroup.
-       (inferior-lisp-filter-regexp, inferior-lisp-program)
-       (inferior-lisp-load-command, inferior-lisp-prompt)
-       (inferior-lisp-mode-hook, lisp-source-modes)
-       (inferior-lisp-load-hook): defvar->defcustom.
-       (inferior-lisp-program, inferior-lisp-prompt)
-       (inferior-lisp-load-hook): Doc fixes.
-       (inferior-lisp-install-letter-bindings): Small change in
-       introductory comment.
+       * term/mac-win.el (mac-handle-toolbar-switch-mode): Add explicit
+       argument to tool-bar-mode call.
 
-2005-04-20  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-08-27  Glenn Morris  <rgm@gnu.org>
 
-       * vc.el (vc-annotate-color-map): Change some colors so that text
-       using them as foreground is readable on both white and black
-       backgrounds.
+       * diff-mode.el (diff-find-file-name): Only accept regular files,
+       to rule out /dev/null, directories, etc.
 
-2005-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * vc-svn.el (vc-svn-diff): If the repository version of all the
+       files is the same as the specified OLDVERS, do a local diff.
 
-       * international/mule-conf.el (translation-table-for-input):
-       Remove redundant declaration.
+2007-08-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-04-20  Nick Roberts  <nickrob@snap.net.nz>
+       * uniquify.el (uniquify-rationalize-file-buffer-names): Check liveness
+       of buffers in uniquify-managed.
 
-       * progmodes/gud.el (gud-menu-map): Add tooltip-toggle-gud-tips.
+       * simple.el (invisible-p): Rename from text-invisible-p.
+       Update callers.
 
-       * tooltip.el (tooltip-gud-tips-p): Expand documentation.
-       (tooltip-toggle-gud-tips): New function.
+2007-08-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-04-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+       * progmodes/cperl-mode.el (defcustom, x-color-defined-p, cperl-is-face)
+       (cperl-is-face, cperl-force-face, cperl-etags-snarf-tag, cperl-mode)
+       (cperl-etags-snarf-tag, cperl-etags-goto-tag-location, cperl-init-faces)
+       (cperl-etags-goto-tag-location): Use new style backquotes.
 
-       * term/mac-win.el (mac-symbol-encoder): Fix mappings of left and
-       right angle brackets.
+       * net/browse-url.el: Remove spurious * in custom docstrings.
+       (browse-url-filename-alist): Use new-style backquote.
 
-2005-04-20  Nick Roberts  <nickrob@snap.net.nz>
+       * emacs-lisp/backquote.el (backquote-unquote-symbol)
+       (backquote-splice-symbol): Clarify they're not new-style unquotes.
 
-       * tooltip.el (tooltip-use-echo-area): Replace as alias and deprecate.
+       * emacs-lisp/edebug.el (edebug-list-form, edebug-match-symbol, \,)
+       (\,@): Backslash the , and ,@ which are not new-style unquotes.
 
-2005-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * textmodes/texinfmt.el (\,): Clarify it's not a new-style unquote.
 
-       * progmodes/flymake.el (flymake-get-absolute-file-name-basedir):
-       Remove.  Update callers to use expand-file-name instead.
+       * net/socks.el (socks-username/password-auth-filter):
+       Remove unused vars `state' and `desired-len'.
+       (socks-parse-services, socks-nslookup-host): Use with-current-buffer.
+       (socks-wait-for-state-change): Use new-style backquotes.
 
-       * subr.el (syntax-class): New function.
+       * pcvs.el (cvs-mode-status): Fix long-standing typo.
 
-       * simple.el (blink-matching-open): Use it.
+       * emacs-lisp/bytecomp.el (byte-compile-from-buffer): Check old-style
+       backquotes after each `read' rather than once per buffer.
 
-       * paren.el (show-paren-function): Use it to recognize parens that are
-       also used in 2-char comment markers.
+       * dframe.el: Remove spurious * in custom docstrings.
+       (dframe-xemacsp): Remove, use (featurep 'xemacs) instead.
+       (dframe-xemacs20p): Remove, inline at the sole use point.
+       (defface): Don't defvar the face, don't use old-style backquote.
+       (defcustom): Don't use old-style backquote.
+       (dframe-frame-parameter, dframe-mouse-event-p):
+       Make it obvious that it's always defined.
+       (dframe-popup-kludge): New function to replace
+       dframe-xemacs-popup-kludge and dframe-xemacs-popup-kludge.
+       (dframe-frame-mode, dframe-set-timer-internal)
+       (dframe-mouse-set-point): Remove use of with-no-warnings from
+       XEmacs-specific code.
+       (dframe-set-timer-internal): Fix very old bug with
+       post-command-idle-hook.
 
-2005-04-19  Lute Kamstra  <lute@gnu.org>
+       * emacs-lisp/byte-opt.el (byte-optimize-featurep): Handle `sxemacs'.
 
-       * loadhist.el (unload-feature): Update for new format of
-       load-history.  Simplify the code.
+2007-08-27  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-04-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+       * emacs-lisp/avl-tree.el: New file.
 
-       * term/mac-win.el: Add coding: tag and set it to iso-2022-7bit.
-       (mac-add-charset-info): New function.  Initialize variable
-       mac-charset-info-alist using it.
-       (mac-centraleurroman, mac-cyrillic): Do not use UCS in table data
-       for translation.
-       (mac-symbol-encoder, mac-dingbats-encoder): New translation table.
-       (mac-font-encoder-list): Add entries for mac-symbol and mac-dingbats.
-       (ccl-encode-mac-symbol-font, ccl-encode-mac-dingbats-font):
-       New CCL programs.
+2007-08-26  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-2005-04-19  Kim F. Storm  <storm@cua.dk>
+       * hi-lock.el (hi-lock-unface-buffer): Show a x-menu only if the mouse
+       was used.
 
-       * simple.el (next-buffer, prev-buffer, next-error)
-       (scroll-other-window, keyboard-quit, keyboard-escape-quit)
-       (clone-indirect-buffer-other-window): Move bindings to bindings.el.
+2007-08-26  Sean O'Rourke  <seano@cs.ucsd.edu>
 
-       * bindings.el (next-buffer, prev-buffer, next-error)
-       (scroll-other-window, keyboard-quit, keyboard-escape-quit)
-       (clone-indirect-buffer-other-window): Move bindings from simple.el.
-       (next-buffer, prev-buffer): Add C-x C-right and C-x C-left bindings.
-       (next-error, previous-error): Add M-g M-n/n and M-g M-p/p bindings.
+       * complete.el (PC-do-completion): Make RET accept a non-unique but
+       complete expansion again.
 
-2005-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-08-26  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * isearch.el (isearch-edit-string): Make the search-ring available for
-       minibuffer history commands.
-       (minibuffer-local-isearch-map): Remove bindings for M-p and M-n,
-       the default history commands now work just as well.
-       (isearch-ring-retreat-edit, isearch-ring-advance-edit): Remove.
+       * eshell/esh-opt.el (eshell-eval-using-options):
+       Add debug declaration.
 
-2005-04-18  Kim F. Storm  <storm@cua.dk>
+2007-08-26  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * emulation/cua-base.el (cua--pre-command-handler): Add more
-       elaborate check for shift modifier on non-window systems.
+       * log-view.el (log-view-toggle-mark-entry): Add docstring.
+       (log-view-get-marked): Likewise.
 
-2005-04-18  Lars Hansen  <larsh@math.ku.dk>
+       * vc-hooks.el (vc-registered): Use mapc instead of mapcar.
+       (vc-delete-automatic-version-backups): Likewise.
 
-       * desktop.el: Make "--no-desktop" turn off `desktop-save-mode'.
+       * vc.el (vc-dired-buffers-for-dir): Likewise.
 
-2005-04-18  Kim F. Storm  <storm@cua.dk>
+2007-08-25  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * tooltip.el (tooltip-show): Change second arg to USE-ECHO-AREA
-       and make it optional.  Don't test tooltip-gud-echo-area here.
-       (tooltip-gud-process-output, gdb-tooltip-print):
-       Pass tooltip-gud-echo-area to tooltip-show.
-       (tooltip-help-tips): Remove second optional arg to tooltip-show.
+       * progmodes/cperl-mode.el (cperl-indent-level): Autoload the
+       safe-local-variable setting.
+       * progmodes/perl-mode.el (perl-indent-level): Likewise.
 
-2005-04-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+       * log-view.el (log-view-marked-list): Delete variable.
+       (log-view-mode): Don't use it.
+       (log-view-toggle-mark-entry): Likewise, simplify.
+       (log-view-current-tag): Don't return properties.
+       (log-view-get-marked): New function.
 
-       * tooltip.el (tooltip-mode): `emacs-quick-startup' and
-       `display-graphic-p' may not be bound yet.
+2007-08-25  Alexandre Julliard  <julliard@winehq.org>
 
-2005-04-17  Luc Teirlinck  <teirllm@auburn.edu>
+       * vc-git.el (vc-git-mode-line-string): New function.
 
-       * startup.el (command-line): No longer enable Xterm Mouse mode by
-       default in terminals compatible with xterm.
+2007-08-25  Alan Mackenzie  <acm@muc.de>
 
-       * xt-mouse.el (xterm-mouse-mode): Set init value back to nil.
+       * progmodes/cc-langs.el (c-other-decl-block-key-in-symbols-alist):
+       new language variable.
 
-2005-04-18  Nick Roberts  <nickrob@snap.net.nz>
+       * progmodes/cc-engine.el (c-brace-anchor-point): new function.
+       (c-add-stmt-syntax): Give accurate anchor points for "namespace",
+       "extern" etc., rather than BOI.  Fix addition of spurious
+       syntactic-symbol 'defun-block-intro, replacing it with
+       'innamespace, etc.
 
-       * tooltip.el (tooltip-gud-echo-area): Rename from
-       tooltip-use-echo-area.
-       (tooltip-show, tooltip-gud-process-output, gdb-tooltip-print)
-       (tooltip-help-tips): Allow GUD tooltips to be displayed in echo
-       area independently of where help tooltips are displayed.
+2007-08-25  Juri Linkov  <juri@jurta.org>
 
-2005-04-17  David Kastrup  <dak@gnu.org>
+       * files.el (auto-mode-alist): Move "\\.x[bp]m\\'" to image-mode.el.
 
-       * cus-theme.el (custom-theme-write-variables): Quote variables
-       where necessary.
+       * image-mode.el: Add autoloads to put associations in auto-mode-alist:
+       associate "\\.x[bp]m\\'" with c-mode and image-mode-maybe, and
+       "\\.svgz?\\'" with xml-mode and image-mode-maybe.
 
-2005-04-17  Richard M. Stallman  <rms@gnu.org>
+       * image.el (image-type-header-regexps): Use more complex regexp for svg.
+       (image-type-file-name-regexps): Add ("\\.svgz?\\'" . svg).
+       (image-type-auto-detectable): Add (svg . maybe).
 
-       * simple.el (yank-excluded-properties): Add follow-link to value.
+       * jka-cmpr-hook.el (jka-compr-compression-info-list): Add .svgz
+       to treat it like .tgz.
 
-       * jka-compr.el (jka-compr-compression-info-list): Fix custom type.
+       * calendar/cal-bahai.el: Add file coding cookie.
 
-       * startup.el (fancy-splash-max-time): Just 30 seconds.
-       (fancy-splash-delay): Just 7.
-       (fancy-splash-screens): No time limit other than fancy-splash-max-time.
+2007-08-25  Reiner Steib  <Reiner.Steib@gmx.de>
 
-       * loadhist.el (unload-feature): Update for new format of load-history.
-       Simplify the code.
+       * pcvs.el (cvs-query-directory): Only prompt when prefix is given.
+       Don't behave differently when executed via M-x.  Add doc string.
 
-       * mail/rmail.el (rmail-ignored-headers): Ignore more headers
-       (rmail-font-lock-keywords): Don't fontify the text of a citation.
+       * sort.el (sort-fold-case, sort-numeric-base): Mark as
+       safe-local-variable.
 
-       * mail/sendmail.el (mail-font-lock-keywords):
-       Don't fontify subject text.
-       Don't fontify the text of a citation.
+2007-08-25  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-04-17  Mark H. Weaver  <mhw@netris.org>  (tiny change)
+       * calc/calc-forms.el (var-TimeZone): Make nil explicitly
+       the default value.
+       (math-calendar-tzinfo): New variable.
+       (math-get-calendar-tzinfo): New function.
+       (calcFunc-tzone, calcFunc-dst): Use Emacs's calendar
+       to get information when zone is nil.
 
-       * comint.el (comint-output-filter): Run comint-output-filter-functions
-       with point where the user had it.
+2007-08-24  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * log-view.el (log-view-toggle-mark-entry): New function.
+       (log-view-mode-map): Bind it.
+       (log-view-marked-list): New variable.
+       (log-view-mode): Make it local.
 
-       * international/ucs-tables.el (ucs-set-table-for-input):
-       Disable when using unify-on-decoding.
+2007-08-24  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
+       * play/zone.el (zone-pgm-rat-race): New func.
+       (zone-programs): Add `zone-pgm-rat-race'.
 
-       * emulation/cua-base.el (cua-global-mark-face): Add special case
-       for displays supporting a high number of colors.
+2007-08-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-04-16  Matt Hodges  <MPHodges@member.fsf.org>  (tiny change)
+       * emacs-lisp/byte-opt.el (byte-optimize-if): Don't presume `clause' is
+       a list.
 
-       * repeat.el (repeat): Invoke pre-command-hook and post-command-hook.
+2007-08-24  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-04-16  Chong Yidong  <cyd@stupidchicken.com>
+       * progmodes/hideshow.el (hs-match-data): Delete alias.
+       (hs-hide-block-at-point, hs-find-block-beginning)
+       (hs-show-block): Use `match-data' directly.
 
-       * filesets.el (filesets-add-buffer): If user supplies a name of a
-       non-existing fileset, create a new fileset.
+2007-08-24  Martin Rudalics  <rudalics@gmx.at>
 
-2005-04-16  Carsten Dominik  <dominik@science.uva.nl>
+       * format.el (format-alist): Fix typo in doc-string.
 
-       * textmodes/org.el (org-up-heading-all): Fix bug with
-       `outline-up-heading-all'.
+2007-08-24  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-04-16  Andreas Schwab  <schwab@suse.de>
+       * net/tramp.el (tramp-local-host-p): New defun.
+       (tramp-handle-file-local-copy, tramp-handle-write-region):
+       Implement fast track when being on the local host.
+       (tramp-file-name-handler): Don't set "started" property.  It shall
+       be reserved for the "ftp" method.
+       (tramp-make-copy-program-file-name): Use `tramp-file-name-real-host'.
 
-       * files.el (auto-mode-alist): Handle /etc/sysconfig/*,
-       /etc/permissions.d/* and /etc/aliases.d/*.
+       * net/tramp-ftp.el (top): Autoload `tramp-set-connection-property'.
+       (tramp-ftp-file-name-handler): Set "started" property.
 
-2005-04-16  Kenichi Handa  <handa@m17n.org>
+2007-08-24  Ulrich Mueller  <ulm@gentoo.org>  (tiny change)
 
-       * international/code-pages.el (cp-make-coding-system):
-       Set `translation-table-for-input' property value to the symbol
-       ucs-mule-to-mule-unicode, not to that value.
-       (pt154): Escape guillemet by `\'.
+       * files.el (backup-buffer-copy): Don't wrap delete in
+       condition-case, only try to delete if file exists.
 
-2005-04-15  Luc Teirlinck  <teirllm@auburn.edu>
+2007-08-24  Glenn Morris  <rgm@gnu.org>
 
-       * loadup.el: Load tooltip if x-show-tip is fboundp.
+       * files.el (backup-buffer-copy): Revert 2007-08-22 change.
 
-       * startup.el (command-line): Add comment.
+       * startup.el (tutorial-directory): Set with eval-at-startup so it
+       gets the right value in an installed Emacs.
 
-       * tooltip.el (tooltip-mode): Specify correct standard value for
-       Custom in init-value.
+2007-08-24  Nikolaj Schumacher  <n_schumacher@web.de>  (tiny change)
 
-2005-04-15  Nick Roberts  <nickrob@snap.net.nz>
+       * emacs-lisp/eldoc.el (eldoc-highlight-function-argument): New face.
+       (eldoc-highlight-function-argument): Use it.
 
-       * progmodes/gud.el (gud-goto-info): Use existing Info buffer, if
-       possible.
+2007-08-23  Masatake YAMATO  <jet@gyve.org>
 
-2005-04-15  Carsten Dominik  <dominik@science.uva.nl>
+       * progmodes/cc-fonts.el (gtkdoc-font-lock-doc-comments): Highlight
+       name of parameters in document body.
 
-       * textmodes/org.el (org-agenda-date-prompt): Rename from
-       `org-agenda-date-today'.
-       (org-evaluate-time-range): Insert at point instead of directly
-       after time range.
-       (org-first-headline-recenter, org-subtree-end-visible-p)
-       (org-optimize-window-after-visibility-change): New functions
-       (org-agenda-post-command-hook): Don't allow point at end of line,
-       to make sure it always hits the text properties.
-       (org-agenda-next-date-line, org-agenda-previous-date-line):
-       New commands.
-       (org-set-regexps-and-options): Category may contain white space.
-       (org-agenda-get-deadlines, org-agenda-get-scheduled):
-       Improve marker positions.
-       (org-agenda-new-marker): Argument POS made optional.
-       (org-agenda-get-timestamps): Deadlines which are done are listed
-       in org-done-face now.
-       (org-agenda-get-todos, org-agenda-get-timestamps)
-       (org-agenda-get-deadlines, org-agenda-get-scheduled):
-       Set `undone-face' and `done-face' properties.
-       (org-last-todo-state-is-todo): New variable.
-       (org-todo): Set `org-last-todo-state-is-todo'.
-       (org-agenda-todo): Change face according to
-       `org-last-todo-state-is-todo'.  And change other lines referring to
-       the same entry.
-       (org-calendar-goto-agenda): New command.
-       (org-calendar-to-agenda-key): New option.
-       (org-startup-folded): New allowed value `content'.
-       (org-set-regexps-and-options): Accept new value `content' for
-       `org-startup-folded'.
-       (org-get-current-options): Handle new value `content' for
-       `org-startup-folded'.
-       (org-insert-todo-heading): New command.
-       (org-mode): Insert first line "*-* mode: org-mode -*-" when called
-       interactively in empty file and option
-       `org-insert-mode-line-in-empty-file' has been set.
-       (org-agenda-todo, org-agenda-priority): Modify to use
-       `org-agenda-change-all-lines'.
-       (org-warning-face): Change color on dark background.
-
-2005-04-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * international/mule-cmds.el (set-locale-environment): On Mac OS,
-       use preferences AppleLocale and AppleLanguages, and variable
-       mac-system-locale for default locale.  On Mac OS Classic, use
-       mac-system-coding-system for default coding systems.
-
-       * term/mac-win.el: Don't set file-name-coding-system.
-       Decode variables system-name, emacs-build-system, user-login-name, and
-       user-full-name by mac-system-coding-system on Mac OS Classic.
-       (mac-system-coding-system): New variable.
-
-2005-04-13  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * startup.el (command-line): Handle `xterm-mouse-mode' before
-       reading init file.
-
-       * xt-mouse.el (xterm-mouse-mode): Adapt to above change.
-
-2005-04-13  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * progmodes/sh-script.el (sh-here-document-word): Make it a
-       defcustom.  Doc fix.
-       (sh-add): Bash uses $(( )) for arithmetic.
-       (sh-while-getopts) <sh>: Set OPTIND back to 1 at end.
-       (sh-maybe-here-document): Remove quotes and leading whitespace
-       from heredoc word when closing.  Indent heredoc with tabs if word
-       starts with "-".
-
-2005-04-13  Richard M. Stallman  <rms@gnu.org>
-
-       * simple.el (undo): Fix previous change.
+2007-08-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * custom.el (defface): Doc fix.
+       * emacs-lisp/bytecomp.el (byte-compile-output-docform)
+       (byte-compile-output-as-comment): Use with-current-buffer rather than
+       a weird set-buffer&prog1 combination.
 
-2005-04-13  Lute Kamstra  <lute@gnu.org>
+       * emacs-lisp/byte-opt.el (byte-optimize-if): Move `progn' out of the
+       test so as to optimise cases where the `progn's result is constant.
 
-       * Makefile.in (DONTCOMPILE): Remove list.
-       (compile, compile-always): Don't use DONTCOMPILE.
-       (update-authors): Load the library in which batch-update-authors
-       is defined.
-       * makefile.w32-in (DONTCOMPILE): Remove list.
-       (compile, compile-always): Fix comments.
-       (update-authors): Load the library in which batch-update-authors
-       is defined.
+2007-08-23  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * generic-x.el (generic-mode-ini-file-find-file-hook):
-       Rename to ini-generic-mode-find-file-hook.
-       Keep generic-mode-ini-file-find-file-hook as an alias.
-       (ini-generic-mode-find-file-hook): Rename from
-       generic-mode-ini-file-find-file-hook.  Fix docstring.
-       (ini-generic-mode): Docstring change.
-       (bat-generic-mode-run-as-comint): Silence the byte compiler.
+       * locate.el (locate-get-file-positions):
+       Use line-beginning-position and line-end-position.
 
-       * help.el (describe-key-briefly): UNTRANSLATED can be nil when
-       called from lisp.
+2007-08-23  John Wiegley  <johnw@newartisans.com>
 
-       * generic.el: Move to the emacs-lisp subdir.
+       * calendar/cal-bahai.el: Added in the diacriticals that were
+       missing for many of the month names.
 
-2005-04-12  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-08-22  Jason Rumney  <jasonr@gnu.org>
 
-       * term/xterm.el (function-key-map): Add mappings for A-, C-, S-
-       and C-S- function and cursor motion keys.
+       * vc-hooks.el (vc-menu-map-filter): Reapply 2007-08-06 bugfix.
 
-2005-04-12  Luc Teirlinck  <teirllm@auburn.edu>
+2007-08-22  Chong Yidong  <cyd@stupidchicken.com>
 
-       * startup.el (command-line): Enable Xterm Mouse mode by default.
-       * xt-mouse.el (xterm-mouse-mode): Provide correct standard value
-       for Custom.  No longer show "Mouse" in mode line when enabled.
-       Doc fix.
+       * image-mode.el (image-minor-mode): Use image-mode-text-map.
 
-2005-04-12  Kim F. Storm  <storm@cua.dk>
+2007-08-22  Sean O'Rourke  <sorourke@cs.ucsd.edu>
+
+       * dabbrev.el (dabbrev--progress-reporter): New variable.
+       (dabbrev--scanning-message): Delete func.
+       (dabbrev--find-expansion): Use a progress reporter
+       instead of dabbrev--scanning-message.
+
+2007-08-22  Michael Albinus  <michael.albinus@gmx.de>
+
+       * comint.el (comint-exec-1): Raise an error if
+       `start-file-process' does not return a process object.
+
+       * shell.el (shell): Prompt for `default-directory' if it is a
+       remote file name, and if called with a prefix arg.
+
+2007-08-22  Sam Steingold  <sds@gnu.org>
+
+       * pcvs.el (cvs-vc-command-advice): Fix a typo in code (file->files).
+
+2007-08-22  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org-export-latex.el: New file.
+
+       * textmodes/org-publish.el (org-publish-org-to-latex): New function.
+
+       * textmodes/org.el (org-agenda-skip): Allow a form for
+       `org-agenda-skip-function'.
+       (org-agenda-redo): Re-use local settings.
+       (org-agenda): Store local settings.
+       (org-agenda-deadline-faces): New option.
+       (org-agenda-deadline-face): New function.
+       (org-agenda-get-deadlines, org-agenda-get-scheduled): Also handle
+       entries on their due date.
+       (org-agenda-get-timestamps): No longer handle the due dates of
+       schedules and deadline items.
+       (org-insert-link-global, org-open-at-point-global): New commands.
+       (org-export-as-ascii): Call `org-cleaned-string-for-export' with a
+       :for-ascii parameter.
+       (org-skip-comments): Function removed.
+       (org-cleaned-string-for-export): Handle special table lines.
+       (org-global-properties): New option.
+       (org-entry-get-with-inheritance): Check global properties.
+       (org-local-properties): New variable.
+       (org-set-regexps-and-options): Find the #+PROPERTY line.
+       (org-link-types): Change type into variable (was constant).
+       (org-make-link-regexps): New function.
+       (org-link-re-with-space, org-link-re-with-space2)
+       (org-angle-link-re, org-plain-link-re, org-bracket-link-regexp)
+       (org-bracket-link-analytic-regexp, org-any-link-re): Creation of
+       these regular expressions happens now in the function
+       `org-make-link-regexps'.
+       (org-store-link): Call the functions in
+       `org-store-link-functions'.
+       (org-add-link-type): New function.
+       (org-store-link-functions): New variable.
+       (org-activate-tags): Force matches to be in headlines.
+       (org-batch-store-agenda-views): Fix bug with killing agenda buffer.
+       (org-columns-display-here): Make sure this works in a narrowed
+       buffer by checking for point-min.
+       (org-columns-display-here): Make the rest of the line intangible,
+       so that point never can be there.
+       (org-cleaned-string-for-export): Use `with-current-buffer'.
+       (org-replace-region-by-html): Use `with-current-buffer'.
+       (org-unfontify-region, org-do-occur, org-columns-display-here)
+       (org-columns-remove-overlays, org-columns-quit)
+       (org-columns-edit-value, org-columns-next-allowed-value)
+       (org-eval-in-calendar, org-agenda-undo, org-no-read-only)
+       (org-finalize-agenda, org-remove-subtree-entries-from-agenda)
+       (org-agenda-todo, org-agenda-change-all-lines)
+       (org-agenda-align-tags, org-agenda-priority)
+       (org-agenda-set-tags, org-agenda-toggle-archive-tag)
+       (org-agenda-show-new-time, org-cleaned-string-for-export)
+       (org-export-grab-title-from-buffer)
+       (org-export-as-ascii, org-export-as-html): Use `inhibit-read-only'
+       instead of `buffer-read-only'.
+       (org-export-as-html): Set `coding-system-for-write'.
+       (org-remember-store-without-prompt): New option.
+       (org-archive-subtree): Fixed bug with modifying TODO keyword.
+       (org-beginning-of-line): Also treat C-a special in items.
+       (org-table-convert-refs-to-rc): Fixed problem with column
+       reference after "..".
+       (org-columns-compute): Don't mark buffer modified because of text
+       properties.
+       (org-batch-store-agenda-views): Use the variable
+       `default-directory', not the function.
+       (org-clock-out-if-current): Respect `org-clock-out-when-done'.
+       (org-clock-out-when-done): New option.
+       (org-html-entities): Added HTML entities for smileys.
 
-       * emulation/cua-base.el (cua-rectangle-face)
-       (cua-rectangle-noselect-face): Define face attributes here.
+2007-08-22  Glenn Morris  <rgm@gnu.org>
 
-       * emulation/cua-rect.el (cua--init-rectangles): Remove face setup.
+       * image.el (create-image): Doc fix.
 
-2005-04-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+       * startup.el (tutorial-directory): New constant.
+       (fancy-splash-text): Tutorials now in tutorial-directory.
+       * tutorial.el (help-with-tutorial): Tutorials now in
+       tutorial-directory.
 
-       * startup.el (command-line): Turn off blinking cursor if
-       cursorBlink in resources is off or false.
+2007-08-22  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+       * net/tramp.el (top): Require cl.el, when `copy-tree' is not available
+       otherwise.
+       (tramp-get-remote-path): New defun.  Replace occurrences of
+       `tramp-default-remote-path' by this function.
+       (tramp-set-remote-path): Move most of the code to
+       `tramp-get-remote-path'.
+       (tramp-get-ls-command, tramp-get-remote-id): Don't check for not
+       existing directories, this is done already in
+       `tramp-get-remote-path'.
 
-       * term/mac-win.el (dnd): Require dnd.
-       (mac-drag-n-drop): Call dnd-handle-one-url.
-       (kTextEncodingMacRoman, kTextEncodingISOLatin1)
-       (kTextEncodingISOLatin2): Remove constants.
-       (mac-script-code-coding-systems): New constant.
-       (mac-handle-language-change): New function.
-       (special-event-map): Bind it to `language-change' event.
-       (mac-centraleurroman, mac-cyrillic): New coding systems.
-       (mac-font-encoder-list, ccl-encode-mac-centraleurroman-font)
-       (ccl-encode-mac-cyrillic-font): Rename mac-centraleurroman-encoder
-       and mac-cyrillic-encoder to encode-mac-centraleurroman and
-       encode-mac-cyrillic, respectively.
+2007-08-22  Paul Pogonyshev  <pogonyshev@gmx.net>
 
-2005-04-12  Nick Roberts  <nickrob@snap.net.nz>
+       * image-file.el (image-file-name-extensions): Add "svg".
+       * image.el (image-type-header-regexps): Add svg entry.
 
-       * progmodes/gud.el, progmodes/gdb-ui.el (gdb-assembler-mode):
-       Don't set overlay-arrow-string to "=>" as this is done
-       globally in C now.
+2007-08-22  Glenn Morris  <rgm@gnu.org>
 
-2005-04-12  Lute Kamstra  <lute@gnu.org>
+       * files.el (backup-buffer-copy): Check backup directory is
+       writable, to avoid infloop deleting old backup.
 
-       * generic-x.el (rc-generic-mode, rul-generic-mode):
-       Fix auto-mode-alist entries.
-       (etc-fstab-generic-mode): Tweak fontification.
+       * mail/rmail.el (rmail-movemail-variant-p): Call on load to set
+       movemail related variables.
+       (rmail-insert-inbox-text): Use only rmail-movemail-program, which
+       will now be set before this is called.
 
-       * generic.el (generic-make-keywords-list): Fix docstring.
-       (generic-mode-internal): Simplify generic-font-lock-keywords.
+2007-08-21  Juri Linkov  <juri@jurta.org>
 
-2005-04-11  Rajesh Vaidheeswarran  <rv@gnu.org>
+       * delsel.el (delete-selection-pre-hook):
+       * emulation/cua-base.el (cua-paste): Use `mouse-region-match'
+       instead of checking last-command.
 
-       * whitespace.el (whitespace-buffer-leading)
-       (whitespace-buffer-trailing): Revert the incorrect test inversion.
-       However, fix the highlight area for the leading and
-       trailing whitespaces to show space.
+2007-08-21  Juri Linkov  <juri@jurta.org>
 
-2005-04-11  Rajesh Vaidheeswarran  <rv@gnu.org>
+       * loadup.el: Preload "button".
 
-       * whitespace.el (whitespace-version): Bump to 3.5.
+2007-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       (whitespace-buffer-leading, whitespace-buffer-trailing):
-       Invert sense of the test to highlight the whitespace.
+       * emacs-lisp/bytecomp.el (byte-compile-interactive-only-functions):
+       Add previous-line and next-line.
 
-2005-04-12  Nick Roberts  <nickrob@snap.net.nz>
+       * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
+       (vc-arch-find-file-not-found-hook): Remove, it's now the default.
 
-       * progmodes/gud.el (gud-display-line): GUD uses its own
-       overlay arrow now so don't set overlay-arrow-string.
-       (gud-pdb-command-name): Revert back to "pdb" (2004-04-26).
+       * vc-hooks.el (vc-menu-entry): New var.
+       (vc-mode-line-map): Use it so that this menu also uses the extra-menu.
+       (menu-bar-tools-menu): Add the VC menu here rather than in menu-bar.el.
+       (vc-menu-map): Declare and initialize in one step.
+       (vc-menu-map-filter): Move&rename from menu-bar.el:menu-bar-vc-filter.
 
-2005-04-11  Dan Nicolaescu  <dann@ics.uci.edu>
+       * menu-bar.el (vc-menu-map): Don't setup any more.
+       Instead, just create the proper spot in the menu.
 
-       * term.el (term-ansi-current-bold, term-ansi-current-underline)
-       (term-ansi-current-reverse, term-ansi-current-invisible)
-       (term-ansi-face-already-done): Change to boolean.
-       (term-reset-terminal, term-handle-colors-array): Handle the above
-       vars accordingly.
-       (term-buffer-vertical-motion): Rename from buffer-vertical-motion.
-       (term-emulate-terminal): Use the new name.
+2007-08-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * faces.el (secondary-selection): Use yellow1, not yellow.
-       (trailing-whitespace): Use red1, not red.
+       * smerge-mode.el (smerge-resolve): New arg `safe'.
+       (smerge-resolve-all, smerge-batch-resolve): New function.
+       (smerge-refine): Make sure `diff' returns the expected result.
+       (smerge-parsep-re): New const.
+       (smerge-mode): Use it to adjust paragraph-separate.
 
-2005-04-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+       * progmodes/perl-mode.el (perl-font-lock-syntactic-keywords):
+       Correctly match / regexp matchers as first char on a line when
+       fontifying only that line.
 
-       * dired.el (dired-mode): Use dnd-* instead of x-dnd-*
-       (dired-dnd-handle-local-file): Call dnd-get-local-file-name.
-       (dired-dnd-handle-file): Call dnd-get-local-file-uri.
+       * emacs-lisp/cl-macs.el (cl-transform-lambda): Preserve the match-data.
 
-       * cus-edit.el (dnd): New group.
+2007-08-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * term/w32-win.el (dnd): Require dnd
-       (w32-drag-n-drop): Call dnd-handle-one-url.
+       * vc-bzr.el: Don't fiddle with vc-handled-backend.
+       (vc-bzr-registered): Don't redundantly protect against
+       file-error.  Actually use the format-specific code.
+       (vc-bzr-buffer-nonblank-p): Remove.
+       (vc-bzr-status): Change `kindchange' -> `kindchanged'.
 
-       * x-dnd.el: Require dnd.
-       (x-dnd-handle-uri-list, x-dnd-handle-file-name):
-       Call dnd-handle-one-url.
-       (x-dnd-types-alist, x-dnd-insert-utf8-text)
-       (x-dnd-insert-utf16-text, x-dnd-insert-ctext): Change x-dnd-insert-text
-       to dnd-insert-text.
-       (x-dnd-protocol-alist, x-dnd-open-file-other-window)
-       (x-dnd-handle-one-url, x-dnd-get-local-file-uri)
-       (x-dnd-get-local-file-name, x-dnd-open-local-file)
-       (x-dnd-open-file, x-dnd-insert-text): Move to dnd.el (without x-).
+2007-08-20  Juri Linkov  <juri@jurta.org>
 
-       * dnd.el (dnd-protocol-alist): New file with generic DND functions.
+       * startup.el (fancy-splash-text): Change multiple tabs into one
+       tab.  Remove "Useful File menu items" section (with "Exit Emacs"
+       and "Recover Crashed Session").
+       (fancy-splash-screens): Set tab-width to 22.
+       (normal-splash-screen): Replace literal tabs with \t and
+       fix whitespace.  Remove "Useful File menu items" section (with
+       "Exit Emacs" and "Recover Crashed Session").
 
-2005-04-11  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+2007-08-20  Johannes Weiner  <hannes@saeurebad.de>  (tiny change)
 
-       * wdired.el: Doc fixes.
-       (wdired-confirm-overwrite): Rename from wdired-is-ok-overwrite.
-       (wdired-use-dired-vertical-movement): Rename from
-       wdired-always-move-to-filename-beginning.
-       (wdired-mode-map): Use `ignore' instead of `wdired-newline'.
-       (wdired-change-to-wdired-mode): Change mode name.
-       (wdired-newline): Delete.
+       * emacs-lisp/lisp-mode.el (preceding-sexp): New fun, the code was
+       extracted from `eval-last-sexp-1'.
+       (eval-last-sexp-1): Call `preceding-sexp'.
 
-2005-04-11  Richard M. Stallman  <rms@gnu.org>
+2007-08-20  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * whitespace.el (whitespace-highlight-the-space):
-       Don't call whitespace-unhighlight-the-space here.
+       * vc-rcs.el (vc-rcs-annotate-command):
+       Fix bug introduced 2007-07-18T16:32:40Z!esr@snark.thyrsus.com:
+       Add back :vc-annotate-prefix propertization.
 
-       * simple.el (undo): Record t in undo-equiv-table
-       for the redo record made by an undo-in-region.
+2007-08-20  Andreas Schwab  <schwab@suse.de>
 
-2005-04-12  Nick Roberts  <nickrob@snap.net.nz>
+       * mail/rmail.el (rmail-autodetect): Doc fix.
 
-       * progmodes/gdb-ui.el (gdb-display-inferior-io-buffer)
-       (gdb-frame-inferior-io-buffer): New Functions to control
-       display of separate IO buffer.
-       (menu): Add them to menu-bar.
-       (gdb-display-buffer): Check for buffer another frame.
-       Protect GUD buffer.
-       (gdb-setup-windows): Create IO buffer if not already there.
-       (gdb-memory-mode): Remove purecopy noops.
+2007-08-19  Juri Linkov  <juri@jurta.org>
 
-2005-04-11  Glenn Morris  <gmorris@ast.cam.ac.uk>
+       * startup.el (normal-splash-screen): Add more links.
 
-       * progmodes/f90.el (f90-electric-insert): Add optional prefix arg,
-       and pass to self-insert-command.
+2007-08-19  Juri Linkov  <juri@jurta.org>
 
-2005-04-11  Lute Kamstra  <lute@gnu.org>
+       * startup.el (splash-screen-keymap): Rename from `fancy-splash-keymap'
+       because it's common to both types of splash screen: fancy and normal.
+       Bind SPC to scroll-up, DEL to scroll-down and `q' to exit-splash-screen.
+       (exit-splash-screen): Rename from `fancy-splash-quit'.
+       Use `quit-window' instead of `kill-buffer'.
+       (fancy-splash-head): Use make-button to insert GNU image link.
+       (fancy-splash-screens, normal-splash-screen): Rename " About GNU
+       Emacs" to "*About GNU Emacs*", and " GNU Emacs" to "*GNU Emacs*".
+       (normal-splash-screen): Put "Browse manuals" on the same line with
+       "Emacs manual".  Remove descriptions from "Useful tasks" and put
+       all links in two columns on two lines.
 
-       * generic.el: Commentary section cleanup.
-       (generic): Delete.
-       (generic-use-find-file-hook, generic-lines-to-scan)
-       (generic-find-file-regexp, generic-ignore-files-regexp)
-       (default-generic-mode, generic-mode-find-file-hook)
-       (generic-mode-ini-file-find-file-hook): Move to generic-x.el.
-       * generic-x.el (generic-x): Docstring fix.  Put it in the data group.
-       (generic-use-find-file-hook, generic-lines-to-scan)
-       (generic-find-file-regexp, generic-ignore-files-regexp)
-       (default-generic-mode, generic-mode-find-file-hook)
-       (generic-mode-ini-file-find-file-hook): Move from generic.el.
+2007-08-19  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-2005-04-10  Karl Fogel  <kfogel@red-bean.com>
+       * viper.el (viper-remove-hooks): Remove some additional viper hooks
+       when the user calls viper-go-away.
+       (viper-go-away): Restore the default of default-major-mode.
+       Save the value of default-major-mode before vaperization.
 
-       * bookmark.el (bookmark-write-file): Catch errors writing file.
-       This is the same change as saveplace.el at 2005-04-10T23:32:00Z!rms@gnu.org.
+       * viper-cmd.el: Replace error "" with "Viper bell".
 
-2005-04-10  Richard M. Stallman  <rms@gnu.org>
+       * viper-ex.el: Replace error "" with "Viper bell".
 
-       * startup.el (fancy-splash-tail): Update copyright year.
-       (command-line): Split part of -Q into -D.
-       (emacs-basic-display): New defvar.
-       (fancy-splash-text): Correct name of menu item.
+       * ediff-util.el (ediff-make-temp-file): Use the coding system of the
+       buffer for which file is created.
 
-       * saveplace.el (save-place-alist-to-file): Catch errors writing file.
+2007-08-19  Glenn Morris  <rgm@gnu.org>
 
-       * info.el (Info-fontify-node): Handle fontification of multiple * Menu
-       lines in one node.
+       * Makefile.in (custom-deps, finder-data, autoloads, recompile)
+       (progmodes/cc-mode.elc, mh-e/mh-loaddefs.el): Use $(emacs) rather
+       than $(EMACS), so that EMACSLOADPATH is set.  Prevents any system
+       shadow files messing up the compilation.
 
-       * comint.el (comint-send-input): New arg ARTIFICIAL.
-       Callers in this file changed.
+2007-08-18  Glenn Morris  <rgm@gnu.org>
 
-       * abbrev.el (define-abbrevs): Read system abbrevs properly.
+       * emacs-lisp/eldoc.el (eldoc-get-fnsym-args-string): Add doc
+       string.  Also apply eldoc-argument-case in the help-split-fundoc
+       case.  Adapt for changed behavior of eldoc-function-argstring,
+       eldoc-function-argstring-format, and
+       eldoc-highlight-function-argument.
+       (eldoc-highlight-function-argument): Handle nil INDEX argument,
+       just call eldoc-docstring-format-sym-doc in that case.
+       (eldoc-function-argstring): Change the behavior.  Now it converts
+       an argument list to a string.
+       (eldoc-function-argstring-format): Change the behavior.  Now it
+       applies `eldoc-argument-case' to a string.
+
+       * progmodes/scheme.el (scheme-mode-variables): Set
+       font-lock-comment-start-skip.
 
-       * emacs-lisp/map-ynp.el (map-y-or-n-p): Clarify RET/q in help message.
+2007-08-18  Martin Rudalics  <rudalics@gmx.at>
 
-2005-04-10  Chong Yidong  <cyd@stupidchicken.com>
+       * progmodes/ada-mode.el (ada-create-syntax-table): Move
+       set-syntax-table from here to ...
+       (ada-mode): ... here.  Do not change global value of
+       comment-multi-line.  Call new function
+       ada-initialize-syntax-table-properties and add new function
+       ada-handle-syntax-table-properties to font-lock-mode-hook.
+       (ada-deactivate-properties, ada-initialize-properties): Replace
+       by new functions ...
+       (ada-handle-syntax-table-properties)
+       (ada-initialize-syntax-table-properties)
+       (ada-set-syntax-table-properties): ... to set up syntax-table
+       properties uniformly, independently from whether font-lock-mode
+       is enabled or not.  Handle read-only buffers and do not change
+       undo-list when setting syntax-table properties.
+       (ada-after-change-function): Use ada-set-syntax-table-properties.
 
-       * url/url-ldap.el (url-ldap): Add docstring.  Fix call to
-       `ldap-search-internal'.
+2007-08-18  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-2005-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * progmodes/meta-mode.el (meta-indent-calculate-last): Remove.
+       (meta-indent-current-nesting): Use a computation of the nesting
+       instead.
+       (meta-indent-current-indentation): Indentation is given according
+       to nesting and if the previous line was finished or not.
+       (meta-indent-unfinished-line): Tell if the current line ends with
+       a finished expression.
+       (meta-indent-looking-at-code): Like `looking-at', but checks if
+       the point is in a string before.
+       (meta-indent-level-count): Use it.  Don't count parenthesis as it's
+       done in the nesting function.
+       (meta-indent-in-string-p): Tell if the current point is in a
+       string.
+       (meta-indent-calculate): Treat b-o-b as a special case.  Use the
+       previous functions.
+
+2007-08-17  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       * emacs-lisp/copyright.el (copyright-limit): New defsubst.
+       (copyright-update-year, copyright-update)
+       (copyright-fix-years): Use it.
+
+2007-08-17  Kimit Yada  <kimitto@gmail.com>  (tiny change)
+
+       * emacs-lisp/copyright.el (copyright-update-year):
+       Fix bug: Handle nil copyright-limit.
+
+2007-08-17  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc-units.el (math-standard-units): Give exact
+       conversion for tsp.
+
+       * calc/calc.el (math-bignum-digit-length): Compute the
+       appropriate value.
+
+       * calc/calc-bin.el (math-bignum-logb-digit-size)
+       (math-bignum-digit-power-of-two):
+       * calc/calc-comb.el (math-small-factorial-table):
+       * calc/calc-ext.el (math-approx-pi, math-approx-sqrt-e)
+       (math-approx-gamma-const):
+       * calc/calc-funcs.el (math-besJ0, math-besJ1, math-besY0)
+       (math-besY1, math-bernoulli-b-cache):
+       * calc/calc-math.el (math-approx-ln-10, math-approx-ln-2):
+       Remove `eval-when-compile's.
 
-       * files.el (set-auto-mode-1): Use line-end-position.
+2007-08-17  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
 
-       * international/latin-1.el:
-       * international/latin-2.el:
-       * international/latin-3.el:
-       * international/latin-4.el:
-       * international/latin-5.el:
-       * international/latin-8.el:
-       * international/latin-9.el: Give punctuation syntax to NBSP.
+       * progmode/cperl-mode.el (cperl-look-at-leading-count)
+       (cperl-find-pods-heres): Fix an error when typing expressions like
+       `s{a}{b}'.
 
-       * textmodes/bibtex.el (bibtex-autokey-titleword-ignore)
-       (bibtex-reference-key, bibtex-autokey-demangle-name, bibtex-mode):
-       Use char-classes to accept non-ascii letters, accepted in some recent
-       bibtex implementations.
+2007-08-17  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-2005-04-10  Luc Teirlinck  <teirllm@auburn.edu>
+       * mail/emacsbug.el (report-emacs-bug): Remove the last number of
+       `emacs-version', use the topic prefix ``version; ''.  Make MS-DOS
+       a special case (there's no build number).
 
-       * custom.el (custom-set-minor-mode): Any non-nil value for the
-       variable should enable the mode when set through Custom.
+2007-08-17  T. V. Raman  <raman@users.sf.net>  (tiny change)
 
-2005-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * completion.el (symbol-under-point, symbol-before-point)
+       (symbol-before-point-for-complete): Use buffer-substring-no-properties.
 
-       * progmodes/vhdl-mode.el (vhdl-mode-map-init): Don't override default
-       TAB binding so tab-always-indent is obeyed.
-       (vhdl-minibuffer-local-map): Move initialization into declaration.
-       (vhdl-mode-abbrev-table-init): Mark the abbrevs as `system'.
-       (vhdl-run-when-idle, vhdl-create-mode-menu, vhdl-character-to-event)
-       (vhdl-hooked-abbrev): Avoid test for XEmacs.
-       (vhdl-current-line): Use line-beginning-position.
-       (vhdl-doc-variable, vhdl-doc-mode): Call help-setup-xref before
-       with-output-to-temp-buffer, so the current position can be recorded.
+2007-08-17  Glenn Morris  <rgm@gnu.org>
 
-2005-04-10  Masatake YAMATO  <jet@gyve.org>
+       * progmodes/compile.el (compilation-get-file-structure): Make use
+       of the directory part when checking for an existing entry, to
+       handle files with same basename in different directories.
 
-       * progmodes/compile.el (compilation-error-regexp-alist-alist):
-       Add regexp for gcov.
+2007-08-17  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+       * calc/calc.el (calc-language-alist): Add texinfo-mode.
 
-       * calendar/time-date.el (time-to-seconds, seconds-to-time)
-       (days-to-time, time-subtract, time-add): Don't use the #xhhhh
-       syntax which Emacs 20 doesn't support.
+2007-08-16  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-2005-04-09  Richard M. Stallman  <rms@gnu.org>
+       * ps-print.el (ps-header-font-size, ps-header-title-font-size)
+       (ps-footer-font-size, ps-line-number-font-size, ps-line-spacing)
+       (ps-paragraph-spacing): Docstring fix.
 
-       * help.el (describe-key-briefly, describe-key):
-       Replace strings as event types with "(any string)".
+2007-08-16  Glenn Morris  <rgm@gnu.org>
 
-2005-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * ps-print.el (ps-font-size): Doc fix.
 
-       * arc-mode.el (archive-mode-map): Move initialization into
-       the declaration.  Override *all* bindings of `undo'.
-       (archive-lemacs): Remove, use (featurep 'xemacs) instead.
+2007-08-16  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/copyright.el (copyright-names-regexp): Add custom group.
+
+2007-08-15  Juri Linkov  <juri@jurta.org>
+
+       * startup.el (initialization): Change parent group from `internal'
+       to `environment'.
+       (initial-buffer-choice): New variable.
+       (command-line): Revert 2007-07-02 change that sets
+       buffer-offer-save in *scratch* and enables auto-save in it.
+       (fancy-splash-text): Add links to existing items.  Add new items
+       with links for useful tasks.  Move information about Control-g to
+       fancy-splash-head.  Move "Emacs Guided Tour" to the end.
+       (fancy-splash-keymap): New variable.
+       (fancy-splash-last-input-event): Remove variable.
+       (fancy-splash-insert): Add processing of `:link' element.
+       (fancy-splash-head): Replace "Type Control-l to begin editing"
+       with "Type `q' to exit".
+       (fancy-splash-screens-1): Let-bind inhibit-read-only to t.
+       (fancy-splash-default-action, fancy-splash-special-event-action):
+       Remove functions.
+       (fancy-splash-quit): New function.
+       (fancy-splash-screens): Rename input arg from `hide-on-input' to
+       `static' and reverse the condition of its usage.  Don't preserve
+       original values of `minor-mode-map-alist',
+       `emulation-mode-map-alists', `special-event-map'.
+       Rename startup-buffer from "*About GNU Emacs*" to " GNU Emacs".
+       Rename about-buffer from " GNU Emacs" to " About GNU Emacs".
+       Remove processing of special events.  Use local key map
+       `fancy-splash-keymap'.  Set buffer to read-only.
+       (normal-splash-screen): Rename input arg from `hide-on-input' to
+       `static' and reverse the condition of its usage.
+       Rename startup-buffer from "*About GNU Emacs*" to " GNU Emacs".
+       Rename about-buffer from " GNU Emacs" to " About GNU Emacs".
+       Add links to existing items.  Add new items with links for useful
+       tasks.  Use local key map `fancy-splash-keymap'.
+       (display-splash-screen): Rename input arg from `hide-on-input' to
+       `static'.
+       (about-emacs): Add alias to display-splash-screen.
+       (command-line-1): Use `initial-buffer-choice'.
 
-2005-04-09  Jay Belanger  <belanger@truman.edu>
+       * menu-bar.el (menu-bar-help-menu):
+       * term/mac-win.el (mac-apple-event-map): Bind About Emacs menu
+       item to about-emacs instead of display-splash-screen.
 
-       * calc/calc-units.el (math-standard-units): Redefine Watt hour as W*hr.
+2007-08-15  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
+       * calc/calc-units.el (math-standard-units): Update values.
+       Put in exact, rational values when possible.
+       (math-unit-prefixes): Replace floats with powers of ten.
+       (math-standard-units-systems): Replace floats with integers.
+       (math-make-unit-string): Remove extra spaces in output.
 
-       * term/xterm.el (xterm-rgb-convert-to-16bit): Simplify.
-       (xterm-register-default-colors): Update color values computation
-       to match xterm-200.
+2007-08-15  Glenn Morris  <rgm@gnu.org>
 
-2005-04-09  Kenichi Handa  <handa@m17n.org>
+       * mail/undigest.el (rmail-digest-parse-rfc1153sloppy): Be even
+       sloppier, for the sake of GNU Mailman.
+       (rmail-digest-rfc1153): Initialize `result' correctly.
 
-       * international/code-pages.el (iso-latin-7): Fix the map.
+2007-08-15  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-2005-04-08  Luc Teirlinck  <teirllm@auburn.edu>
+       * mail/emacsbug.el (report-emacs-bug): Put `Bug: emacs-version; '
+       in the mail title.  Suggested by Reiner Steib.
 
-       * emacs-lisp/lisp.el (defun-prompt-regexp)
-       (parens-require-spaces, buffer-end, end-of-defun)
-       (insert-parentheses): Doc fixes.
+2007-08-14  Chris Hecker  <checker@d6.com>  (tiny change)
 
-2005-04-08  Kim F. Storm  <storm@cua.dk>
+       * calc/calc-aent.el (calc-do-quick-calc): Add binary
+       representation of integers to the list of outputs.
 
-       * comint.el (comint-highlight-prompt): Fix face spec.
-       * hi-lock.el (hi-green): Likewise.
+2007-08-14  Glenn Morris  <rgm@gnu.org>
 
-2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+       * simple.el (bad-packages-alist): New constant.
+       (bad-package-check): New function.  Together, these two add elements
+       to `after-load-alist' to check for problematic external packages.
+       * emulation/cua-base.el: Move CUA-mode check to `bad-packages-alist'.
 
-       * cus-edit.el (custom-modified-face):
-       * comint.el (comint-highlight-input): Fix previous changes.
-       * term.el (term-handle-ansi-escape): Add a comment.
+2007-08-14  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc-units.el (math-get-standard-units)
+       (math-get-units, math-make-unit-string)
+       (math-get-default-units, math-put-default-units): New functions.
+       (math-default-units-table): New variable.
+       (calc-convert-units, calc-convert-temperature): Add machinery
+       to supply default values.
+
+2007-08-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emulation/tpu-edt.el: Add tpu-extras's autoloads.
+       (tpu-gold-map, tpu-global-map): Comment-out the bindings to nil.
+       (tpu-gold-map): Bind F to tpu-cursor-free-mode.
+       (minibuffer-local-map): Use funkey symbols rather than esc-sequence.
+
+       * emulation/tpu-extras.el: Remove spurious * in docstrings.
+       Put its autoloads into tpu-edt.el rather than loaddefs.el.
+       (tpu-cursor-free-mode): Rename from tpu-cursor-free.
+       Make into a proper minor-mode.
+       (tpu-backward-char, tpu-next-line, tpu-previous-line)
+       (tpu-next-end-of-line, tpu-current-end-of-line): Use new name.
+       (tpu-trim-line-ends-if-needed): Rename from tpu-before-save-hook.
+       (tpu-set-cursor-free, tpu-set-cursor-bound):
+       Delegate to tpu-cursor-free-mode.
+       (tpu-next-line, tpu-previous-line, tpu-forward-line)
+       (tpu-backward-line, tpu-scroll-window-down, tpu-scroll-window-up):
+       Use line-move or forward-line instead of next-line-internal.
 
-2005-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-08-13  Nick Roberts  <nickrob@snap.net.nz>
 
-       * whitespace.el (whitespace-highlight-the-space): Put the same overlay
-       in the buffer and in whitespace-highlighted-space.
-       (whitespace-unhighlight-the-space): Simplify.
-       (whitespace-buffer): Simplify.
+       * progmodes/gdb-ui.el (gdb-send): Handle CTRL-D more carefully.
 
-2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-08-12  Richard Stallman  <rms@gnu.org>
 
-       * textmodes/table.el (table-cell-face): Add special case for
-       displays supporting a high number of colors.
-       * progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
-       (vhdl-font-lock-reserved-words-face)
-       (vhdl-speedbar-architecture-face)
-       (vhdl-speedbar-instantiation-face)
-       (vhdl-speedbar-architecture-selected-face)
-       (vhdl-speedbar-instantiation-selected-face): Likewise.
-       * progmodes/sh-script.el (sh-heredoc-face): Likewise.
-       * progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
-       * progmodes/ebrowse.el (ebrowse-tree-mark-face)
-       (ebrowse-root-class-face, ebrowse-member-attribute-face)
-       (ebrowse-progress-face): Likewise.
-       * progmodes/compile.el (compilation-info-face): Likewise.
-       * progmodes/cc-fonts.el (c-invalid-face): Likewise.
-       * emacs-lisp/re-builder.el (reb-match-3): Likewise.
-       * calendar/calendar.el (diary-face): Likewise.
-       * woman.el (woman-italic-face, woman-bold-face)
-       (woman-unknown-face): Likewise.
-       * wid-edit.el (widget-button-pressed-face): Likewise.
-       * whitespace.el (whitespace-highlight-face): Likewise.
-       * smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
-       * pcvs-info.el (cvs-marked-face): Likewise.
-       * info.el (info-xref): Likewise.
-       * ido.el (ido-subdir-face, ido-indicator-face): Likewise.
-       * hilit-chg.el (highlight-changes-face)
-       (highlight-changes-delete-face): Likewise.
-       * hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
-       (hi-red-b): Likewise.
-       * generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
-       * font-lock.el (font-lock-keyword-face)
-       (font-lock-function-name-face, font-lock-warning-face): Likewise.
-       * cus-edit.el (custom-invalid-face, custom-modified-face)
-       (custom-set-face, custom-changed-face, custom-variable-tag-face)
-       (custom-group-tag-face-1, custom-group-tag-face): Likewise.
-       * comint.el (comint-highlight-prompt): Likewise.
+       * pcvs.el (cvs-reread-cvsrc, cvs-checkout, cvs-mode-checkout)
+       (cvs-execute-single-file): Use new name split-string-and-unquote.
+       (cvs-header-msg): Use new name combine-and-quote-strings.
 
-2005-04-08  Lute Kamstra  <lute@gnu.org>
+       * emulation/vi.el (vi-next-line): Ignore return value of line-move.
 
-       * font-lock.el (font-lock-keywords): Docstring fixes.
+       * progmodes/gud.el (gud-common-init): Use new name
+       split-string-and-unquote.
 
-2005-04-08  Kenichi Handa  <handa@m17n.org>
+       * progmodes/flymake.el (flymake-err-line-patterns): Fix infloop
+       in javac regexp.
 
-       * ps-mule.el (ps-mule-show-warning): If the number of unprintable
-       chars are more than a limit, print " and more..." at the tail.
+       * pcvs-util.el (cvs-qtypedesc-strings): Use new names
+       combine-and-quote-strings and split-string-and-unquote.
 
-2005-04-08  Kim F. Storm  <storm@cua.dk>
+       * subr.el (combine-and-quote-strings): Rename from strings->string.
+       (split-string-and-unquote): Rename from string->strings.
 
-       * emacs-lisp/authors.el (authors-aliases): Update list.
-       (authors-ignored-files): New list.
-       (authors-fixed-entries): Fix typo.
-       (authors-renamed-files-alist): Update list.
-       (authors-add): Check authors-ignored-files.
+2007-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-04-08  Carsten Dominik  <dominik@science.uva.nl>
+       * log-view.el (log-view-font-lock-keywords): Use `eval' so as to adapt
+       to buffer-local settings.
 
-       * calendar/diary-lib.el (add-to-diary-list): MARKER argument made
-       optional, to ensure backward compatibility.
+       * emacs-lisp/backquote.el (backquote-delay-process): New function.
+       (backquote-process): Add internal arg `level'.  Use the two to
+       correctly handle nested backquotes.
 
-2005-04-08  Stephen Eglen  <stephen@gnu.org>
+2007-08-09  Riccardo Murri  <riccardo.murri@gmail.com>
 
-       * textmodes/flyspell.el (flyspell-large-region): Doc fix.
+       * vc-bzr.el (vc-bzr-registered): Use \0 instead of literal NULs.
+       (vc-bzr-state-words): Add "kind changed" state word.
+       (vc-bzr-status): New function.  Return Bzr idea of file status,
+       which is different from VC's.
+       (vc-bzr-state): Use vc-bzr-status.
+       (vc-workfile-unchanged-p): Use vc-bzr-status.
+       (vc-bzr-revert): Use synchronous process; expect exitcode 0.
+       (vc-dired-state): Process "kind changed" state word.
 
-2005-04-08  Kim F. Storm  <storm@cua.dk>
+2007-08-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * buff-menu.el (Buffer-menu-mode-map): Map follow-link to mouse-face.
+       * vc-hooks.el (vc-default-find-file-not-found-hook): Do nothing.
 
-       * mouse.el (mouse-on-link-p): Doc fix.
+       * vc-rcs.el (vc-rcs-find-file-not-found-hook):
+       Move from vc-default-find-file-not-found-hook.
 
-2005-04-07  Luc Teirlinck  <teirllm@auburn.edu>
+2007-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * ielm.el (ielm-prompt-read-only): Doc fix.
+       * man.el: Remove spurious * in docstrings.
+       Merge defvars and toplevel setq-defaults.
+       (Man-highlight-references0): Limit=nil rather than point-max.
+       (Man-mode-map): Move initialization into the declaration.
+       (Man-strip-page-headers, Man-unindent): Use dolist & inhibit-read-only.
+       (Man-view-header-file): Use expand-file-name rather than concat.
+       (Man-notify-when-ready, Man-bgproc-sentinel): Use with-current-buffer.
 
-       * comint.el (comint-prompt-read-only): Doc fix.
+       * man.el (Man-next-section): Make sure we do not move backward.
 
-2005-04-07  Benjamin Rutt  <brutt@bloomington.in.us>
+2007-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * ffap.el (ffap-pass-wildcards-to-dired): New user option to
-       ensure dired always handles wildcards passed to ffap.
-       (find-file-at-point): Use it.
-       (ffap-dired-wildcards): Doc fix.
+       * files.el (auto-mode-alist): Use the purecopied text (duh!).
 
-2005-04-07  Juri Linkov  <juri@jurta.org>
+2007-08-08  Glenn Morris  <rgm@gnu.org>
 
-       * simple.el (next-error-overlay-arrow-position): New defvar.
-       Put "=>" on its property `overlay-arrow-string'.  Add it to
-       `overlay-arrow-variable-list'.
+       * Replace `iff' in doc-strings and comments.
 
-       * progmodes/compile.el (compilation-setup):
-       Set `next-error-overlay-arrow-position' to nil.  Also set it to
-       nil in the local hook `kill-buffer-hook'.  Make local variable
-       `overlay-arrow-string' and set it to "=>".
-       (compilation-goto-locus): Set BOL position to
-       `next-error-overlay-arrow-position' instead of
-       `overlay-arrow-position'.
+2007-08-08  Martin Rudalics  <rudalics@gmx.at>
 
-       * info.el (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
-       locally instead of adding it to the global hook.
-       (Info-kill-buffer): Move up.
+       * dired.el (dired-pop-to-buffer):
+       * mouse-drag.el (mouse-drag-should-do-col-scrolling):
+       * calendar/calendar.el (generate-calendar-window):
+       * progmodes/compile.el (compilation-set-window-height):
+       * textmodes/two-column.el (2C-two-columns, 2C-merge):
+       Use window-full-width-p instead of comparing frame-width and
+       window-width.
 
-2005-04-06  Dan Nicolaescu  <dann@ics.uci.edu>
+       * progmodes/compile.el (compilation-find-buffer): Remove extra
+       argument in call to compilation-buffer-internal-p.
 
-       * term/xterm.el (xterm-standard-colors): Update color values from
-       xterm-200.
+2007-08-07  Tom Tromey  <tromey@redhat.com>
 
-2005-04-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * progmodes/tcl.el (tcl-indent-level, tcl-continued-indent-level):
+       Add safe-local-variable property.
 
-       * textmodes/tex-mode.el (tex-font-lock-keywords-2): Add \bfseries.
+2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
 
-       * fast-lock.el:
-       * lazy-lock.el: Move them to the obsolete subdir.
+       * image-mode.el (image-toggle-display): Use image-refresh.
 
-2005-04-06  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+2007-08-07  Riccardo Murri  <riccardo.murri@gmail.com>
 
-       * wdired.el (wdired-advise-functions, wdired-add-skip-in-replace)
-       (wdired-add-replace-advice): Remove.
-       (wdired-change-to-wdired-mode): Use query-replace-skip-read-only.
+       * vc-bzr.el: Remove comments about vc-bzr.el being a modified
+       unofficial version.
+       (vc-bzr-command): Remove redundant setting of process-connection-type.
+       (vc-bzr-admin-checkout-format-file): Add autoload.
+       (vc-bzr-root-dir): Remove in favor of vc-bzr-root.
+       (vc-bzr-root): Switch to implementation of vc-bzr-root-dir.
+       (vc-bzr-registered): Compare dirstate format tag with known good
+       value, abort parsing if match fails.  Warn user in docstring.
+       (vc-bzr-workfile-version): Case for different Bzr branch formats.
+       See bzrlib/branch.py in Bzr sources.
+       (vc-bzr-diff): First argument FILES may be a string rather than a list.
+       (vc-bzr-shell-command): Remove in favor of
+       vc-bzr-command-discarding-stderr.
+       (vc-bzr-command-discarding-stderr): New function.
 
-2005-04-06  Kim F. Storm  <storm@cua.dk>
+2007-08-06  Riccardo Murri  <riccardo.murri@gmail.com>
 
-       * startup.el (command-line): Add --bare-bones alias for -Q.
+       * vc-bzr.el (vc-bzr-registered): Gracefully handle missing "bzr"
+       program, and return nil.
+       (vc-bzr-state): Gracefully handle missing "bzr" program, and return nil.
+       (vc-bzr-state): Look for path names relative to the repository
+       root after status keyword.
+       (vc-bzr-file-name-relative): New function.
+       (vc-bzr-admin-dirname): Reinstate, as other vc-bzr-admin-... paths
+       depend on it.
+       (vc-bzr-admin-dirname, ...-checkout-format-file)
+       (...-branch-format-file, ...-revhistory): Paths to some Bzr internal
+       files that we now parse directly for speed.
+       (vc-bzr-root-dir): Use `vc-bzr-admin-checkout-format-file' as witness.
+       (vc-bzr-registered): Only parse vc-bzr-admin-dirstate file if it exists.
+       (vc-bzr-state): "bzr status" successful only if exitcode is 0.
+       (vc-bzr-root): Use `vc-bzr-shell-command'.  Stderr may contain
+       Bzr warnings, so we must discard it.
+       (vc-bzr-workfile-version): Speedup counting lines from
+       `vc-bzr-admin-revhistory' file, but fallback to spawning "bzr revno"
+       if that file doesn't exist.
+       (vc-bzr-responsible-p): Use `vc-bzr-root' instead of
+       `vc-bzr-root-dir' for speed.  Add `vc-bzr-admin-dirname' (not ".bzr"!)
+       to `vc-directory-exclusion-list'.
+       (vc-bzr-shell-command): New function.
 
-2005-04-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+2007-08-06  Tom Tromey  <tromey@redhat.com>
 
-       * term/mac-win.el: Use create-fontset-from-mac-roman-font to
-       create the startup fontset if a font specification ends with
-       `mac-roman'.
+       * diff-mode.el (diff-unified->context, diff-reverse-direction)
+       (diff-fixup-modifs): Typo in docstring.
 
-2005-04-06  Lute Kamstra  <lute@gnu.org>
+2007-08-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * add-log.el (change-log-font-lock-keywords): Complete 2005-04-03
-       change.
+       * emulation/tpu-edt.el (tpu-current-line): Use posn-at-point and
+       count-screen-lines.
+       (tpu-edt-off): Disable relevant pieces of advice.
 
-       * emacs-lisp/copyright.el (copyright-update-year): Replace the
-       right subexpression.  Suggested by Jay Bingham <jay.bingham@hp.com>.
+       * emulation/tpu-extras.el (tpu-before-save-hook): Rename from
+       tpu-write-file-hook.  Activate it with add-hook on buffer-save-hook.
+       (newline, newline-and-indent, do-auto-fill): Use advice instead of
+       redefining the function.
+       (tpu-set-scroll-margins): Activate the pieces of advice.
 
-2005-04-05  Lute Kamstra  <lute@gnu.org>
+2007-08-06  Martin Rudalics  <rudalics@gmx.at>
 
-       * generic.el (generic-mode-internal): Fix 2005-03-31 change.
-       (define-generic-mode): Ditto.  Fix debug declaration.
+       * help.el (resize-temp-buffer-window): Use window-full-width-p
+       instead of comparing frame-width and window-width.
 
-       * generic-x.el (show-tabs-tab-face, show-tabs-space-face):
-       Put them in the generic-x group.
+2007-08-13  Stephen Leake  <stephen_leake@stephe-leake.org>
 
-       * calendar/timeclock.el (timeclock): Doc fix.
+       * pcvs-parse.el (cvs-parse-table): Handle additional instance of
+       optional quotes around files in NEED-UPDATE . REMOVED case.
 
-       * generic.el (define-generic-mode): Don't use custom-current-group.
-       Document default :group value.
-       * emacs-lisp/easy-mmode.el (define-minor-mode): Ditto.
-       (define-global-minor-mode): Don't use custom-current-group.
+       * progmodes/ada-xref.el (ada-gnatls-args): Fix docstring.
+       (ada-treat-cmd-string): Improve error message.
+       (ada-do-file-completion): Call `ada-require-project-file', so
+       project variables are set properly.
+       (ada-prj-find-prj-file): Delete Emacs 20.2 support.
+       (ada-gnatfind-buffer-name): New constant.
+       (ada-find-any-references): Use new constant.  Set buffer name
+       properly in compilation-start.  Toggle read-only properly.
+       (ada-find-in-src-path): Fix spelling error in docstring.
 
-2005-04-05  Glenn Morris  <gmorris@ast.cam.ac.uk>
+       * progmodes/vhdl-mode.el (vhdl-update-progress-info): Avoid divide
+       by zero error.
 
-       * startup.el (command-line-1): Display startup-echo-area-message
-       when fancy splash screen is in use.
+2007-08-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * progmodes/sh-script.el (sh-builtins) <bash>: Add `caller'.
-       (sh-escaped-newline): New face.
-       (sh-font-lock-keywords) <shell>: Improve regexp for escaped
-       newline, and use sh-escaped-newline face.
+       * emacs-lisp/autoload.el (autoload-print-form): Use print-quoted.
 
-       * progmodes/tcl.el (tcl-escaped-newline): New face.
-       (tcl-builtin-list): New variable.
-       (tcl-set-font-lock-keywords): Add builtins, variables, and escaped
-       newlines.  Fix keywords subexpression number.
+2007-08-12  Richard Stallman  <rms@gnu.org>
 
-2005-04-05  Carsten Dominik  <dominik@science.uva.nl>
+       * progmodes/sh-script.el (sh): Delete group `unix'.
 
-       * textmodes/org.el (org-diary-default-entry): Fix call to
-       `add-to-diary-entry'.
+       * progmodes/gud.el (gud): Change to group `processes'.
 
-2005-04-05  Kim F. Storm  <storm@cua.dk>
+2007-08-11  Glenn Morris  <rgm@gnu.org>
 
-       * ediff-init.el: Use (featurep 'xemacs).
+       * progmodes/compile.el (compilation-buffer-name): Don't check
+       compilation-arguments.  It is superfluous, and the variable isn't
+       even set when this function is called.
 
-2005-04-05  David Ponce  <david@dponce.com>
+2007-08-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * cus-edit.el (face): Derive from symbol widget.  Display sample
-       of the current face on the fly.
-       (widget-face-sample-face-get, widget-face-notify): New functions.
-       (widget-face-value-create): Remove.
+       * term/mac-win.el (mac-ae-reopen-application): New function.
+       (mac-apple-event-map): Bind "reopen application" Apple event to it.
 
-       * wid-edit.el (widget-field-end): Temporarily remove field
-       narrowing before to call `get-char-property'.
+2007-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-04-04  Jay Belanger  <belanger@truman.edu>
+       * textmodes/tex-mode.el (tex-font-lock-unfontify-region): Fix to
+       take tex-font-script-display into account.
+       (tex-font-script-display, tex-font-lock-suscript): Change from a cons
+       cell to a list of 2 elements to simplify the unfontify code.
 
-       * calc/calc-aent.el (math-read-replacement-list): Add subscripts.
-       (math-read-subscripts): New variable.
-       (math-read-preprocess-string): Process subscripts.
+2007-08-08  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-2005-04-04  Luc Teirlinck  <teirllm@auburn.edu>
+       * ps-print.el (ps-default-fg, ps-default-bg): Docstring fix.
+       (ps-begin-job): Use ps-default-fg and ps-default-bg only when
+       ps-print-color-p is neither nil nor black-white.  Reported by Christian
+       Schlauer <cs-muelleimer-rubbish.bin@arcor.de>.
 
-       * comint.el (comint-prompt-read-only): Doc fix.
+2007-08-08  Andreas Schwab  <schwab@suse.de>
 
-       * dired.el (dired-copy-filename-as-kill): Make `-' arg behave like
-       `-1'.  Doc fix.
+       * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook): Check for
+       self-insert-command, not self-insert.
 
-2005-04-04  Carsten Dominik  <dominik@science.uva.nl>
+2007-08-08  Glenn Morris  <rgm@gnu.org>
 
-       * textmodes/org.el (org-insert-mode-line-in-empty-file):
-       Change default value to nil.
+       * emacs-lisp/eldoc.el (eldoc-get-fnsym-args-string): Make second
+       argument optional, for backwards compatibility, and only highlight
+       args when present.  Fix symbol name typo (doc/args).
 
-2005-04-04  Lute Kamstra  <lute@gnu.org>
+       * help-mode.el (help-make-xrefs): Search for symbol constituents,
+       rather than just `-'.
 
-       * autorevert.el (auto-revert-mode): Specify :group.
-       * battery.el (display-battery-mode): Specify :group.
-       * diff-mode.el (diff-minor-mode): Specify :group.
-       * font-core.el (font-lock-mode): Specify :group.
-       * hl-line.el (hl-line-mode): Specify :group.
-       * iimage.el (iimage): New customization group.
-       (iimage-mode): Specify :group.
-       * longlines.el (longlines-mode): Specify :group.
-       * master.el: Don't require easy-mmode.
-       (master): New customization group.
-       (master-mode): Specify :group.
-       * msb.el (msb-mode): Specify :group.
-       * reveal.el (reveal-mode): Specify :group.
-       * simple.el (next-error-follow-minor-mode): Specify :group.
-       * smerge-mode.el (smerge-mode): Specify :group.
-       * emacs-lisp/eldoc.el (eldoc-mode): Specify :group.
-       * emulation/cua-base.el (cua-mode): Specify :group.
-       * international/encoded-kb.el (encoded-kbd-mode): Specify :group.
-       * language/thai-util.el (thai-auto-composition-mode)
-       (thai-word-mode): Specify :group.
-       * mail/supercite.el (sc-minor-mode): Specify :group.
-       * progmodes/cwarn.el (cwarn-mode): Specify :group.
-       * progmodes/flymake.el (flymake-mode): Specify :group.
-       * progmodes/glasses.el (glasses-mode): Specify :group.
-       * progmodes/hideif.el (hide-ifdef-mode): Specify :group.
-       * textmodes/enriched.el (enriched-mode): Specify :group.
-       * textmodes/refill.el (refill-mode): Specify :group.
+2007-08-07  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * add-log.el (change-log-font-lock-keywords): Names in
-       parenthesized lists can contain spaces.
+       * calc/calc-units.el (calc-convert-temperature):
+       Use `/' to create fractions.
 
-2005-04-04  Thien-Thi Nguyen  <ttn@gnu.org>
+2007-08-07  Michael Albinus  <michael.albinus@gmx.de>
 
-       * startup.el (fancy-splash-text): Shorten default text of
-       "Emacs Tutorial" line.  Also, if the current language env
-       indicates an available tutorial file other than TUTORIAL,
-       extract its title and append it to the line in parentheses.
-       (fancy-splash-insert): If arg is a thunk, funcall it.
+       * net/tramp.el (tramp-wrong-passwd-regexp): Make the regexp more
+       global matching.
+       (tramp-handle-shell-command): Handle OUTPUT-BUFFER and
+       ERROR-BUFFER more robust.  Display output.
+       (tramp-file-name-handler): Add a connection property when we found
+       a foreign file name handler.  This allows backends like ftp to
+       profit also from usr/host name completion based on connection
+       cache.
+       (tramp-send-command-and-read): Search for trash after the regexp
+       until eol only.  In XEmacs, there is a problem with \n.
 
-2005-04-04  Jay Belanger  <belanger@truman.edu>
+       * net/tramp-cache.el (top): Read persistent connection history
+       when cache is empty.
 
-       * calc.el (calc-language-alist): Add tags to customization type.
+2007-08-07  Nic Ferrier  <nferrier@tapsellferrier.co.uk>  (tiny change)
 
-2005-04-03  Luc Teirlinck  <teirllm@auburn.edu>
+       * net/tramp.el (tramp-handle-process-file): Fix bug inserting
+       resulting output.
 
-       * xt-mouse.el (xterm-mouse-mode): Add explicit Custom group, mouse.
-       Doc fix.
+2007-08-07  Sam Steingold  <sds@gnu.org>
 
-2005-04-03  Marcelo Toledo  <marcelo@gnu.org>
+       * progmodes/compile.el (compilation-start): Pass nil as startfile
+       to comint-exec.
 
-       * add-log.el (change-log-font-lock-keywords): The manual
-       describing a Change Log entry, says: (...) "Aside from these
-       header lines, every line in the change log starts with a space or
-       a tab.".  The font-lock was not highlighting lines started with
-       spaces, added support for it.
+2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
 
-2005-04-03  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+       * longlines.el (longlines-decoded): New variable.
+       (longlines-mode): Avoid encoding or decoding the buffer twice.
 
-       * textmodes/bibtex.el (bibtex-url): Use format to generate the url.
-       (bibtex-generate-url-list): Update docstring accordingly.  Put the
-       complex example in the docstring.
-       (bibtex-font-lock-url): Use pop.
+2007-08-07  Martin Rudalics  <rudalics@gmx.at>
 
-2005-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * format.el (format-insert-file): Make sure that at most one undo
+       entry is recorded for the insertion.  Inhibit point-motion and
+       modification hooks around call to insert-file-contents.
 
-       * progmodes/tcl.el (tcl-set-font-lock-keywords): Use new \_< ops.
+2007-08-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * pcvs.el (cvs-checkout): Prompt for cvsroot as well.
+       * vc.el (vc-annotate): Select temp-buffer before running vc-exec-after.
+       Select the buffer's window before moving point.
 
-2005-04-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
+2007-08-07  Richard Stallman  <rms@gnu.org>
 
-       * filesets.el (filesets-set-default): Doc fix.
+       * term.el (term): Remove parent group `unix'.
 
-2005-04-03  Lute Kamstra  <lute@gnu.org>
+       * simple.el (default-indent-new-line): New function.
+       It calls comment-line-break-function if there are comments.
+       (do-auto-fill): Use that.
 
-       * generic.el (define-generic-mode): Add argument to specify
-       keywords for defcustom.
-       (default-generic-mode): Specify :group.
+2007-08-07  Sean O'Rourke  <sorourke@cs.ucsd.edu>
 
-       * generic-x.el: Specify :group for all generic modes.
+       * complete.el (PC-lisp-complete-symbol): Complete symbol around point.
+       (PC-do-completion): Add "acronym completion" for symbols and
+       filenames, so e.g. "mvbl" expands to "make-variable-buffer-local".
 
-       * desktop.el (desktop-no-desktop-file-hook)
-       (desktop-after-read-hook): Doc fix.
+2007-08-06  Sam Steingold  <sds@gnu.org>
 
-2005-04-02  Luc Teirlinck  <teirllm@auburn.edu>
+       * mouse.el (mouse-buffer-menu): Pass mode-name through
+       format-mode-line because it may be a list,
+       e.g., (sgml-xml-mode "XML" "SGML"), and not a string.
 
-       * simple.el (visible-mode): Use explicit :group keyword.
-       This changes the group of `visible-mode-hook' from paren-blinking
-       to editing-basics.
+2007-08-06  Vinicius Jose Latorre  <viniciusig@ig.com.br>
 
-2005-04-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>  (tiny change)
+       * printing.el (pr-update-menus): Docstring fix.
 
-       * mail/rmail.el (rmail-parse-url): Bugfix.  Parse traditional
-       mailbox specifications as well as URLs.
-       (rmail-insert-inbox-text): Remove unused conditional branches.
+2007-08-06  Jason Rumney  <jasonr@gnu.org>
 
-2005-04-01  Jay Belanger  <belanger@truman.edu>
+       * menu-bar.el (menu-bar-vc-filter): Use vc-call-backend.
 
-       * calc/calc-graph.el (calc-gnuplot-name, calc-gnuplot-plot-command)
-       (calc-gnuplot-print-command): Move definitions to calc.el.
+       * vc-hooks.el (vc-call): Add doc string.
 
-       * calc/calc-embed.el (calc-embedded-announce-formula)
-       (calc-embedded-open-formula, calc-embedded-close-formula)
-       (calc-embedded-open-word, calc-embedded-close-word)
-       (calc-embedded-open-plain, calc-embedded-close-plain)
-       (calc-embedded-open-new-formula, calc-embedded-close-new-formula)
-       (calc-embedded-open-mode, calc-embedded-close-mode):
-       Move definitions to calc.el.
+2007-08-06  Michael Albinus  <michael.albinus@gmx.de>
 
-       * calc/calc.el (calc-settings-file, calc-language-alist):
-       Make customizable.
-       (calc-embedded-announce-formula, calc-embedded-open-formula)
-       (calc-embedded-close-formula, calc-embedded-open-word)
-       (calc-embedded-close-word, calc-embedded-open-plain)
-       (calc-embedded-close-plain, calc-embedded-open-new-formula)
-       (calc-embedded-close-new-formula, calc-embedded-open-mode)
-       (calc-embedded-close-mode, calc-gnuplot-name)
-       (calc-gnuplot-plot-command, calc-gnuplot-print-command): Move here
-       from other files and make customizable.
+       * net/ange-ftp.el (ange-ftp-hook-function): Catch also errors in
+       process-filter.
 
-2005-04-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-08-06  Kenichi Handa  <handa@m17n.org>
 
-       * pcvs.el (cvs-temp-buffer, cvs-mode-kill-process, cvs-buffer-check):
-       Use buffer-live-p.
-       (cvs-mode-run): Don't call cvs-update-header here.
-       (cvs-run-process): Call cvs-update-header.
-       Use process properties for cvs-postprocess and cvs-buffer so that
-       the sentinel can behave better if the temp buffer is killed.
-       Use a pipe rather than a tty, to better handle unexpected prompts.
-       (cvs-sentinel): Rewrite.  Call cvs-update-header.
+       * international/quail.el: Wrap (require 'help-mode) by
+       eval-when-compile.
+       (quail-help-init): New function.
+       (quail-help): Call quail-help-init.
+       (quail-store-decode-map-key): Change it to a function.
 
-2005-04-01  Andre Spiegel  <spiegel@gnu.org>
+2007-08-05  Jason Rumney  <jasonr@gnu.org>
 
-       * vc-hooks.el (vc-workfile-unchanged-p): Disable mtime check when
-       we go via Tramp or Ange-FTP.  Suggested by Kai Grossjohann.
+       * vc.el (vc-rollback): Add norevert argument back.
+       (vc-revert-buffer): Add back as obsolete alias.
 
-2005-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-08-05  Peter Povinec  <ppovinec@yahoo.com>  (tiny change)
 
-       * generic.el (define-generic-mode): Add indentation rule.
+       * term.el: Honor term-default-fg-color and term-default-bg-color
+       settings when modifying term-current-face.
+       (term-default-fg-color, term-default-bg-color): Initialize from
+       default term-current-face.
+       (term-mode, term-reset-terminal): Set term-current-face with
+       term-default-fg-color and term-default-bg-color.
+       (term-handle-colors-array): term-current-face has term-default-fg-color
+       and term-default-bg-color after reset escape sequence.
+       (term-handle-colors-array): Set term-current-color with
+       term-default-fg/bg-color instead of ansi-term-color-vector when the
+       index (term-ansi-current-color or term-ansi-current-bg-color) is zero.
 
-2005-03-31  Luc Teirlinck  <teirllm@auburn.edu>
+2007-08-05  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * files.el (mode-require-final-newline): Make Custom correctly
-       report a nil value and allow to set it to nil via Custom.
-       Doc fix.
+       * calc/calc-nlfit.el (math-nlfit-curve): Remove unnecessary variables.
+       (math-nlfit-givens): Let bind free variables.
 
-2005-04-01  Kenichi Handa  <handa@m17n.org>
+2007-08-05  Vinicius Jose Latorre  <viniciusig@ig.com.br>
 
-       * international/characters.el: Enable the correct case setting for
-       dotless-i and dotted-I.
+       * printing.el: Require lpr and ps-print when loading printing package.
+       Reported by Glenn Morris <rgm@gnu.org>.
 
-2005-04-01  Kim F. Storm  <storm@cua.dk>
+2007-08-05  Michael Albinus  <michael.albinus@gmx.de>
 
-       * ido.el (ido-file-internal): Fall back to non-ido command if
-       initial directory is on slow ftp (or tramp) host.
+       * files.el (set-auto-mode): Handle also remote files wrt
+       `auto-mode-alist'.
 
-2005-03-31  Richard M. Stallman  <rms@gnu.org>
+2007-08-04  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * emacs-lisp/autoload.el (make-autoload):
-       Handle define-global-minor-mode.
+       * calc/calcalg3.el (calc-curve-fit): Add support for nonlinear
+       curves and plotting.
 
-       * emacs-lisp/easy-mmode.el (define-global-minor-mode):
-       Rename from easy-mmode-define-global-mode.
-       (easy-mmode-define-global-mode): Alias for define-global-minor-mode.
+       * calc/calc-nlfit.el: New file.
 
-       * progmodes/scheme.el (scheme-mode-syntax-table):
-       Update syntax of | and # for two-character comment syntax.
+2007-08-04  Glenn Morris  <rgm@gnu.org>
 
-2005-03-31  Lute Kamstra  <lute@gnu.org>
+       * autorevert.el (auto-revert-tail-mode): auto-revert-tail-pos is
+       zero, not nil, when the library is first loaded.  Check for a file
+       that has been modified on disk.
 
-       * emacs-lisp/easy-mmode.el (easy-mmode-define-global-mode)
-       (define-minor-mode): Call custom-current-group at load-time.
+       * progmodes/cperl-mode.el (cperl-compilation-error-regexp-alist):
+       Remove duplicate defvar preventing initialization.
+       (cperl-mode): Fix compilation-error-regexp-alist-alist setting.
 
-       * generic.el (define-generic-mode): Add debug declaration.
-       Add defcustom for the mode hook.
-       (generic-mode-internal): Use run-mode-hooks.
+2007-08-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-03-31  Kim F. Storm  <storm@cua.dk>
+       * diff-mode.el (diff-font-lock-keywords): Fix up false positives.
+       (diff-beginning-of-file): Adjust to the fact that diff-file-header-re
+       may match up to 4 lines.
+       (diff-beginning-of-file-and-junk): Rewrite.
 
-       * mouse.el (mouse-1-click-follows-link): Increase to 450 ms.
-       (mouse-fixup-help-message): New defun called by show_help_echo
-       to fixup mouse-2 prefix in help messages when applicable.
+2007-08-03  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-       * tooltip.el (tooltip-show-help-function): Don't fixup message here.
+       * printing.el: Evaluate require only during compilation.
+       (pr-version): New version 6.9.1.
+       (deactivate-mark): Replace (defvar VAR nil) by (defvar VAR).
+       (pr-global-menubar): Fix code.
 
-2005-03-31  Kenichi Handa  <handa@m17n.org>
+2007-08-03  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * language/thai-word.el (thai-find-word-ends): Pay attention to
-       the case that we reach the end of buffer.
+       * term.el (term-erase-in-display): Fix case when point is not at
+       the beginning of the line.
 
-       * textmodes/fill.el (fill-text-properties-at): New function.
-       (fill-newline): Use fill-text-properties-at instead of
-       text-properties-at.
+2007-08-03  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-03-31  Olive Lin  <olive.lin@versateladsl.be>  (tiny change)
+       * calc/calc-ext.el (math-get-value, math-get-sdev)
+       (math-contains-sdev): New functions.
 
-       * textmodes/tex-mode.el (tex-start-tex): Use shell-quote-argument,
-       not comint-quote-filename.
+       * calc/calc-graph.el (calc-graph-format-data)
+       (calc-graph-add-curve): Check for error forms.
+       (calc-graph-set-styles): Add option for error forms.
 
-2005-03-31  Thien-Thi Nguyen  <ttn@gnu.org>
+2007-08-03  Miles Bader  <miles@gnu.org>
 
-       * help-fns.el (help-with-tutorial): Revert last change.
+       * vc-hooks.el (vc-handled-backends): Change capitalization of VC
+       backend names for new backends to `Git', `Hg', and `Bzr'.
+       * vc-hg.el (vc-hg-dired-state-info): Use `Hg' as VC backend name,
+       not `HG'.
+       * vc-git.el (vc-git-dired-state-info): Use `Git' as VC backend
+       name, not `GIT'.
+       * vc-bzr.el (vc-bzr-dir-state, vc-bzr-dired-state-info)
+       (vc-bzr-unload-hook): Use `Bzr' as VC backend name, not `BZR'.
 
-2005-03-31  Kim F. Storm  <storm@cua.dk>
+2007-08-03  Richard Stallman  <rms@gnu.org>
 
-       * emulation/cua-base.el (cua-scroll-down): Add CUA property.
+       * mail/rmailsum.el (rmail-make-summary-line): Find end of msg number
+       to update deleted flag.
 
-2005-03-30  Paul Eggert  <eggert@cs.ucla.edu>
+       * cus-edit.el (customize-apropos, customize-apropos-options)
+       (customize-apropos-faces, customize-apropos-groups): Improve prompt.
 
-       * calendar/cal-china.el: Update reference to "Calendrical
-       Calculations" book; there's a new edition.
-       * calendar/cal-coptic.el: Likewise.
-       * calendar/cal-french.el: Likewise.
-       * calendar/cal-hebrew.el: Likewise.
-       * calendar/cal-islam.el: Likewise.
-       * calendar/cal-iso.el: Likewise.
-       * calendar/cal-julian.el: Likewise.
-       * calendar/cal-mayan.el: Likewise.
-       * calendar/cal-persia.el: Likewise.
-       * calendar/calendar.el: Likewise.
-       * calendar/holidays.el: Likewise.
-       * calendar/lunar.el: Likewise.
-       * calendar/solar.el: Likewise.
+       * menu-bar.el (menu-bar-help-menu): Add "About GNU" menu item.
 
-       * calendar/calendar.el (calendar-day-abbrev-array): Remove trailing
-       white space from doc string.
+       * startup.el (fancy-splash-head, startup-echo-area-message):
+       Change message text.
 
-2005-03-30  Jay Belanger  <belanger@truman.edu>
+       * emulation/tpu-edt.el (next-line-internal): Setting deleted.
+       All callers use line-move.
 
-       * calc/calc-help.el (calc-full-help): Remove email address.
+       * progmodes/compile.el (compilation-find-buffer): Return current
+       buffer immediately if suitable.
+       (compile, compilation-buffer-name, compilation-start): Doc fixes.
 
-2005-03-30  Thien-Thi Nguyen  <ttn@gnu.org>
+2007-08-03  Daiki Ueno  <ueno@unixuser.org>
 
-       * help-fns.el (help-with-tutorial): Delete title line.
+       * faces.el (face-normalize-spec): New function.
+       (frame-set-background-mode): Normalize face-spec before calling
+       face-spec-match-p.
 
-2005-03-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
+2007-08-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calendar/cal-x.el (calendar-one-frame-setup)
-       (calendar-only-one-frame-setup, calendar-two-frame-setup): Use t
-       rather than `symbol' for set-window-dedicated-p.
+       * server.el (server-window): Add switch-to-buffer-other-frame option.
 
-       * calendar/appt.el (appt-buffer-name): Make it a constant.
-       (appt-add): Doc fix.
+2007-08-03  Glenn Morris  <rgm@gnu.org>
 
-       * filesets.el (filesets-menu-path, filesets-menu-before)
-       (filesets-menu-in-menu): Doc fix.  Now valid in GNU Emacs.
-       (filesets-menu-cache-file): Use directory ~/.emacs.d.
-       (filesets-add-submenu): Delete and use add-submenu instead.
+       * cus-edit.el (customize-apropos): Make the error message indicate
+       what kind of thing the user was trying to customize.
 
-2005-03-30  Carsten Dominik  <dominik@science.uva.nl>
+       * net/telnet.el (telnet-mode): Set comint-use-prompt-regexp to t.
 
-       * org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
-       (org-agenda-convert-date, org-agenda-goto-calendar): New commands.
-       (org-diary-default-entry): New function.
-       (org-get-entries-from-diary): Better parsing of diary entries.
-       (org-agenda-check-no-diary): New function.
-       ("diary-lib"): Advice to function `add-to-diary-list', to allow
-       linking to diary entries.
-       (org-agenda-execute-calendar-command): New function.
-       (org-agenda): Improve visible section in window.
-       Use `org-fit-agenda-window'.
-       (org-fit-agenda-window): New option.
-       (org-move-subtree-down): Better handling of empty lines
-       at end of subtree.
-       (org-cycle): Numeric prefix is interpreted now as show-subtree N
-       levels up.
-       (org-fontify-done-headline): New option.
-       (org-headline-done-face): New face.
-       (org-set-font-lock-defaults): Use `org-headline-done-face'.
-       (org-table-copy-down): Rename from `org-table-copy-from-above'.
-       When current field is non-empty, it is copied to next row.
-       (org-table-copy-from-above): Fix bug which made it
-       impossible to copy fields containing only a single non-white character.
+       * progmodes/fortran.el (fortran-font-lock-syntactic-keywords):
+       Fix off-by-one error in previous change.
 
-2005-03-30  Kim F. Storm  <storm@cua.dk>
+2007-08-03  Drew Adams  <drew.adams@oracle.com>
 
-       * kmacro.el (kmacro-end-macro): Isearch may store this command
-       into the macro -- so ignore it when executing keyboard macro.
+       * emacs-lisp/pp.el (pp-eval-expression): Add progress message.
+       Make buffer writable.
 
-2005-03-30  Nick Roberts  <nickrob@snap.net.nz>
+2007-08-01  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * tooltip.el (tooltip-gud-display): Use gud-overlay-arrow-position.
+       * calc/calc-math.el (math-sqrt-raw, math-sin-raw-2)
+       (math-cos-raw-2, math-arctan-raw, math-ln-raw):
+       Use native Emacs functions, when appropriate.
 
-2005-03-29  Kenichi Handa  <handa@m17n.org>
+2007-08-01  Dan Nicolaescu  <dann@ics.uci.edu>
+           Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * language/thai.el ("Thai"): Set setup-function and exit-function
-       for Thai language environment.
+       * vc.el: Document new VC operation `extra-menu'.
 
-       * language/thai-util.el: Require thai-word.
-       (thai-word-mode-map): New variable.
-       (thai-word-mode): New minor mode.
-       (setup-thai-language-environment-internal): New function.
-       (exit-thai-language-environment-internal): New function.
+       * vc-hooks.el (vc-default-extra-menu): New function.
 
-       * language/thai-word.el (thai-word-table): Declare it by defvar,
-       use dolist to initialize it.
-       (thai-kill-word, thai-backward-kill-word, thai-transpose-words)
-       (thai-fill-find-break-point): New functions.
+       * menu-bar.el (menu-bar-vc-filter): New function.
+       (menu-bar-tools-menu): Use it as a filter.
 
-2005-03-29  Richard M. Stallman  <rms@gnu.org>
+2007-08-01  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
 
-       * simple.el (idle-update-delay): Move definition up.
-       (set-mark): Doc fix.
+       * ibuf-ext.el (ibuffer-mark-old-buffers): Docstring fix.
 
-2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
+2007-08-01  Glenn Morris  <rgm@gnu.org>
+
+       * progmodes/fortran.el: Remove leading `*' from all defcustom doc
+       strings.
+       (fortran-tab-mode-default): Remove needless autoload.
+       (fortran-tab-mode-string): Add help-echo and mouse properties, and
+       mark as risky.
+       (fortran-line-length): New buffer-local variable, safe if integer.
+       (fortran-if-start-re, fortran-end-prog-re1, fortran-end-prog-re):
+       Change from variables to constants.
+       (fortran-font-lock-syntactic-keywords): Delete as a variable,
+       replace with a new function definition.
+       (fortran-mode): Use fortran-line-length, and
+       fortran-font-lock-syntactic-keywords as a function.  Add a
+       hack-local-variables-hook function.
+       (fortran-line-length, fortran-hack-local-variables): New functions.
+       (fortran-window-create, fortran-strip-sequence-nos): Doc fix.
+       Use fortran-line-length rather than 72.
+       (fortran-window-create-momentarily): Doc fix.
+
+2007-07-31  Drew Adams  <drew.adams@oracle.com>  (tiny change)
 
-       * longlines.el: New file.
+       * cus-edit.el (custom-group-value-create, custom-goto-parent):
+       Fix parent groups link.
 
-       * simple.el (buffer-substring-filters): New variable.
-       (filter-buffer-substring): New function.
-       (kill-region, copy-region-as-kill): Use it.
+2007-07-31  Paul Pogonyshev  <pogonyshev@gmx.net>
 
-       * register.el (copy-to-register, append-to-register)
-       (prepend-to-register): Use filter-buffer-substring.
+       * progmodes/python.el (python-current-defun): Adjust to never fall
+       into infinite loop.
 
-2005-03-30  Nick Roberts  <nickrob@snap.net.nz>
+2007-07-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * progmodes/gud.el (gdb): (Re)-initialize gud-filter-pending-text.
-       (gud-filter-pending-text): Move in front of gdb.
-       (gud-overlay-arrow-position): New variable.
-       (gud-sentinel, gud-display-line): Use it in place of
-       overlay-arrow-position.
+       * pcvs.el (cvs-vc-command-advice): Handle the new fileset case.
 
-2005-03-29  Glenn Morris  <gmorris@ast.cam.ac.uk>
+2007-07-29  Kimit Yada  <kimitto@gmail.com>  (tiny change)
 
-       * progmodes/fortran.el (fortran-if-indent): Doc fix.
-       (fortran-font-lock-keywords-2): Add "where", "elsewhere".
-       (fortran-font-lock-keywords-4): New variable.
-       (fortran-blocks-re, fortran-end-block-re)
-       (fortran-start-block-re): New constants, for hideshow.
-       (hs-special-modes-alist): Add a Fortran entry.
-       (fortran-mode-map): Bind fortran-end-of-block,
-       fortran-beginning-of-block to \M-\C-n, \M-\C-p.
-       (fortran-mode): Doc fix.  Add fortran-font-lock-keywords-4.
-       (fortran-looking-at-if-then, fortran-end-of-block)
-       (fortran-beginning-of-block): New functions, for hideshow.
+       * emacs-lisp/copyright.el (copyright-update-year, copyright-update)
+       (copyright-fix-years, copyright): Correctly handle the case where
+       copyright-limit is nil.
 
-       * progmodes/f90.el (f90-end-block-re, f90-start-block-re):
-       Doc fix.  Tweak regexp.
-       (f90-beginning-of-block): Push mark first.
+2007-07-28  Konstantin Novitsky  <knovitsk@Bear.com>  (tiny change)
 
-2005-03-29  Jay Belanger  <belanger@truman.edu>
+       * progmodes/python.el (run-python): Fix path separator under w32.
 
-       * calc/calc.el: Update copyright date.
-       (calc-version): Increase to 2.1.
-       (calc-version-date): Remove.
+2007-07-30  Richard Stallman  <rms@gnu.org>
 
-       * calc/calc-help.el: Update copyright date.
-       (calc-full-help): Remove reference to calc-version-date.
-       Update copyright date.
+       * emacs-lisp/lisp-mode.el (emacs-lisp-mode-syntax-table):
+       Treat non-break space as whitespace in Lisp.
 
-2005-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * vc.el (vc-do-command): Use a pipe for async processes, so password
-       prompts don't show up at places where the user can't reply.
+       * vc.el (vc-dired-hook): Use inhibit-read-only.
 
-2005-03-29  Olive Lin  <olive.lin@versateladsl.be>  (tiny change)
+       * progmodes/compile.el (compilation-forget-errors):
+       Reset compilation-auto-jump-to-next.
 
-       * textmodes/tex-mode.el (tex-send-command): shell-quote-argument
-       on the file name we pass to the inferior shell.
+2007-07-30  Michael Olson  <mwolson@gnu.org>
 
-2005-03-29  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
+       * cus-edit.el (custom-group-save): Fix void function definition
+       error.  Thanks to Zhang Wei for the report.
 
-       * progmodes/which-func.el (which-function): Be robust in the face of an
-       imenu--make-index-alist failure.
+       * ps-print.el: Check in trivial changes to the autoloads section
+       caused by the build process.  These autoloads really ought to be
+       placed in a separate file, methinks.
 
-2005-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * reveal.el (reveal-mode-map): Don't override C-a and C-e.
+       * calendar/calendar.el (calendar-mode): Make sure
+       displayed-(month|year) are set.
+       (calendar-basic-setup): Display buffer before adjusting window sizes.
+       (generate-calendar-window): Use inhibit-read-only.  Simplify.
+       Generate buffer and set displayed-month and displayed-year before
+       calling update-calendar-mode-line.
 
-       * progmodes/python.el (python-preoutput-filter): Fix last change.
+2007-07-29  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-03-29  Lute Kamstra  <lute@gnu.org>
+       * net/tramp.el:
+       * net/tramp-uu.el:
+       * net/trampver.el: Use utf-8 encoding with coding cookie.
 
-       * emacs-lisp/debug.el (debug-on-entry): Handle autoloaded
-       functions and compiled macros.
-       (debug-convert-byte-code): Handle macros too.
-       (debug-on-entry-1): Don't signal an error when trying to clear a
-       function that is not set to debug on entry.
+       * net/tramp-cache.el:
+       * net/tramp-fish.el:
+       * net/tramp-ftp.el:
+       * net/tramp-gw.el:
+       * net/tramp-smb.el: Remove coding cookie.
 
-2005-03-29  Jay Belanger  <belanger@truman.edu>
+       * net/tramp.el (tramp-handle-verify-visited-file-modtime):
+       Flush buffer file-name's file property.
+       (tramp-handle-file-remote-p): The first parameter is FILENAME.
 
-       * calc/calc-lang.el: Add functions to math-function-table
-       properties of tex and math.
+       * net/trampver.el: Update release number.
 
-2005-03-29  Kenichi Handa  <handa@m17n.org>
+2007-07-29  Juri Linkov  <juri@jurta.org>
 
-       * ps-mule.el (ps-mule-plot-string): Translate characters by
-       ps-print-translation-table.
-       (ps-mule-begin-job): Call find-charset-region/string with
-       ps-print-translation-table.
-       (ps-mule-printable-p): Return t if CHARSET is ascii or latin-iso8859-1.
+       * dired.el (dired-mode-map): Bind C-x C-q to dired-toggle-read-only.
+       Filter out menu item "Edit File Names" `wdired-change-to-wdired-mode'
+       when major-mode is not dired-mode.
+       (dired-toggle-read-only): New function.
+       (dired-recursive-deletes): Remove obsolete comments about old
+       default value.
+       (dired-do-flagged-delete, dired-do-delete): Refill docstring.
 
-       * ps-print.el (ps-print-translation-table): New variable.
-       (ps-plot-region): Translate characters by ps-print-translation-table.
+       * wdired.el (wdired-exit): New function.
+       (wdired-mode-map): Bind C-x C-q to wdired-exit.
 
-2005-03-29  Juri Linkov  <juri@jurta.org>
+2007-07-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * simple.el (next-error-highlight-timer): New variable.
+       * cus-edit.el (customize-read-group): New fun.
+       (customize-group-other-window, customize-face-other-window):
+       Prompt before delegating to customize-(group|face).
+       Bind pop-up-windows rather than use the other-window argument.
+       (customize-group, customize-face): Prompt from the interactive spec.
+       Remove args `prompt-for-group' and `other-window'.
 
-       * progmodes/compile.el (compilation-goto-locus):
-       Use `next-error-highlight-timer' instead of `sit-for'.
+       * emacs-lisp/advice.el (ad-interactive-form): Re-introduce.
+       (ad-body-forms, ad-advised-interactive-form): Revert this part of
+       last change.
 
-2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-28  Masatake YAMATO  <jet@gyve.org>
 
-       * mail/supercite.el (sc-mail-field): Use assoc-string.
-       (sc-get-address): Simplify regexps.
+       * vc.el (vc-dired-mode): Add a menu for VC related operation.
+       Use backend name as the menu label.  Suggested by David Kastrup.
 
-       * files.el (minibuffer-with-setup-hook): New macro.
-       (find-file-read-args): Use it to avoid let-binding
-       minibuffer-with-setup-hook (which breaks turning on/off
-       file-name-shadow-mode while in the prompt).
+2007-07-28  Alan Mackenzie  <acm@muc.de>
 
-       * complete.el (PC-read-include-file-name-internal):
-       Use test-completion.
+       Fix problem with modes derived from CC Mode:
+       * progmodes/cc-mode.el (c-make-emacs-variables-local): Move this
+       macro to cc-langs.
+       (c-init-language-vars-for): Remove call to above macro.
+       * progmodes/cc-langs.el (c-make-emacs-variables-local): Macro has
+       been moved to here.
+       (c-make-init-lang-vars-fun): Call c-make-emacs-variables-local.
 
-2005-03-28  Luc Teirlinck  <teirllm@auburn.edu>
+2007-07-28  Eli Zaretskii  <eliz@gnu.org>
 
-       * font-lock.el: Bind `font-lock-fontify-block' to M-o M-o.
+       * net/trampver.el: Fix the `coding' cookie.
 
-2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-28  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * window.el (window-buffer-height): Use count-screen-lines.
+       * vc-git.el (vc-git-print-log): Support both the old single file
+       interface and the new one.
 
-       * progmodes/python.el (python-preoutput-leftover): New var.
-       (python-preoutput-filter): Use it.
-       (python-send-receive): Loop until all the result has been received.
+2007-07-28  Nick Roberts  <nickrob@snap.net.nz>
 
-2005-03-28  Juri Linkov  <juri@jurta.org>
+       * bindings.el (mode-line-remote): Use updated %@ construct.
 
-       * dired.el (dired-mode-map): Add ellipsis to "Compare directories".
+2007-07-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * menu-bar.el (menu-bar-file-menu): Remove ellipsis from
-       "Recover Crashed Session".
-       (menu-bar-search-menu): Add ellipsis to "Search tagged files".
-       (menu-bar-replace-menu): Add ellipsis to "Replace in tagged files".
-       (menu-bar-goto-menu): Add ellipsis to "Set Tags File Name".
-       (menu-bar-goto-menu): Add ellipsis to "Tags Apropos".
-       (menu-bar-options-menu): Add ellipsis to "Set Font/Fontset".
-       (menu-bar-manuals-menu): Add ellipsis to "Find Command in Manual".
-       (menu-bar-manuals-menu): Add ellipsis to "Find Key in Manual".
-       (menu-bar-help-menu): Remove ellipsis from "Find Emacs Packages".
+       * calendar/cal-bahai.el (calendar-bahai-month-name-array)
+       (calendar-bahai-epoch, calendar-bahai-leap-year-p)
+       (calendar-bahai-leap-base, calendar-bahai-prompt-for-date)
+       (diary-list-bahai-entries, diary-bahai-mark-entries)
+       (calendar-bahai-mark-date-pattern, diary-insert-bahai-entry)
+       (diary-bahai-insert-monthly-entry, diary-bahai-insert-yearly-entry):
+       New names to clean up namespace.
+       (list-bahai-diary-entries, mark-bahai-diary-entries)
+       (insert-bahai-diary-entry, insert-monthly-bahai-diary-entry)
+       (insert-yearly-bahai-diary-entry, mark-bahai-calendar-date-pattern):
+       Add compatibility aliases.
 
-       * ediff-hook.el (menu-bar-ediff-misc-menu, ediff-misc-menu):
-       Remove ellipsis from "Ediff Manual", "Customize Ediff", "List
-       Ediff Sessions", "Toggle use of separate control buffer frame",
-       "Use separate frame for Ediff control buffer".
+       * calendar/appt.el: Don't wrap defvar within eval-when-compile.
 
-       * bookmark.el (menu-bar-bookmark-map): Add ellipsis to "Jump to
-       Bookmark", "Set Bookmark", "Insert Contents", "Insert Location",
-       "Rename Bookmark", "Delete Bookmark".
+       * calendar/cal-move.el (calendar-scroll-left, calendar-scroll-right)
+       (calendar-scroll-left-three-months)
+       (calendar-scroll-right-three-months): Clean up namespace.
+       (scroll-calendar-left, scroll-calendar-right)
+       (scroll-calendar-left-three-months)
+       (scroll-calendar-right-three-months): Add compatibility aliases.
 
-       * info.el (Info-mode-menu): Remove ellipsis from "Index".
-       Add ellipsis to "Lookup a String", "Lookup a string in all indices".
-       Add `:active Info-index-alternatives' to "Next Matching Item".
+       * calendar/cal-move.el (calendar-scroll-left, calendar-scroll-right):
+       Behave like mouse-scroll-calendar-* when used from the mouse.
 
-       * wdired.el (wdired-change-to-wdired-mode):
-       Mention `wdired-abort-changes' key in the initial message.
+       * calendar/cal-menu.el (cal-menu-scroll-menu)
+       (cal-menu-global-mouse-menu):
+       * calendar/calendar.el (calendar-mode-map):
+       Use new calendar-scroll-* names.
+       (mouse-scroll-calendar-left, mouse-scroll-calendar-right):
+       Remove.  Use calendar-scroll-* directly instead.
+
+2007-07-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/advice.el (ad-interactive-p, ad-interactive-form): Remove.
+       (ad-body-forms, ad-advised-interactive-form, ad-make-cache-id)
+       (ad-make-advised-definition, ad-cache-id-verification-code):
+       Use commandp and interactive-form instead.
+
+2007-07-26  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * vc-git.el: Relicense to GPLv3 or later.
+       (vc-directory-exclusion-list, vc-handled-backends): Remove.
+
+       * vc-hooks.el (vc-handled-backends): Add GIT.
+
+       * vc.el (vc-directory-exclusion-list): Add .git.
+
+2007-07-26  Alexandre Julliard  <julliard@winehq.org>
+
+       * vc-git.el (vc-git-revision-table)
+       (vc-git-revision-completion-table): New functions.
+
+2007-07-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * progmodes/ebnf-abn.el (ebnf-abn-skip-comment):
+       * progmodes/ebnf-bnf.el (ebnf-bnf-skip-comment):
+       * progmodes/ebnf-dtd.el (ebnf-dtd-skip-comment):
+       * progmodes/ebnf-ebx.el (ebnf-ebx-skip-comment):
+       * progmodes/ebnf-iso.el (ebnf-iso-skip-comment):
+       * progmodes/ebnf-yac.el (ebnf-yac-skip-comment): New version.
+       New command actions for EPS header and EPS footer.
+
+       * progmodes/ebnf2ps.el: New command actions for EPS header and EPS
+       footer.  Fix some problems with one-or-more, zero-or-more and
+       alternative constructions generation.  Some log messages
+       implementation.  Doc fix.
+       (ebnf-version): New version 4.4.
+       (ebnf-eps-header-font, ebnf-eps-header, ebnf-eps-footer-font)
+       (ebnf-eps-footer, ebnf-log): New options.
+       (ebnf-find-style, ebnf-eps-header-footer, ebnf-eps-header)
+       (ebnf-eps-footer, ebnf-eps-string, ebnf-eps-header-footer-comment)
+       (ebnf-eps-header-footer-p, ebnf-eps-header-comment)
+       (ebnf-eps-footer-comment, ebnf-eps-header-footer-file)
+       (ebnf-eps-header-footer-set, ebnf-log-header, ebnf-log): New funs.
+       (ebnf-style-custom-list, ebnf-style-database): Put new values.
+       (ebnf-print-directory, ebnf-print-file, ebnf-print-buffer)
+       (ebnf-print-region, ebnf-spool-directory, ebnf-spool-file)
+       (ebnf-spool-buffer, ebnf-spool-region, ebnf-eps-directory)
+       (ebnf-eps-file, ebnf-eps-buffer, ebnf-eps-region)
+       (ebnf-syntax-directory, ebnf-syntax-file, ebnf-syntax-buffer)
+       (ebnf-syntax-region, ebnf-parse-and-sort, ebnf-begin-job)
+       (ebnf-dimensions, ebnf-production-dimension, ebnf-terminal-dimension)
+       (ebnf-non-terminal-dimension, ebnf-special-dimension)
+       (ebnf-terminal-dimension1, ebnf-repeat-dimension)
+       (ebnf-except-dimension, ebnf-alternative-dimension)
+       (ebnf-optional-dimension, ebnf-one-or-more-dimension)
+       (ebnf-zero-or-more-dimension, ebnf-sequence-dimension): Insert log
+       message fun.
+       (ebnf-setup, ebnf-generate-one-or-more, ebnf-generate-zero-or-more)
+       (ebnf-begin-job, ebnf-begin-file, ebnf-eps-finish-and-write)
+       (ebnf-insert-ebnf-prologue, ebnf-production-dimension)
+       (ebnf-terminal-dimension1, ebnf-alternative-dimension)
+       (ebnf-one-or-more-dimension, ebnf-zero-or-more-dimension)
+       (ebnf-eps-add-context, ebnf-eps-add-production): Fix code.
+       (ebnf-eps-filename, ebnf-trim-right): Replace `?\s' by `?\ ' to keep
+       compatibility with Emacs 20 & 21.
+       (ebnf-eps-header-comment, ebnf-eps-footer-comment)
+       (ebnf-eps-file-alist, ebnf-basic-width-extra)
+       (ebnf-basic-empty-height): New vars.
+       (ebnf-prologue): Fix PostScript code.
+       (ebnf-make-empty, ebnf-make-terminal1, ebnf-make-or-more1)
+       (ebnf-make-production, ebnf-make-alternative, ebnf-make-optional)
+       (ebnf-make-except, ebnf-make-repeat, ebnf-make-sequence)
+       (ebnf-make-dup-sequence, ebnf-token-alternative): Add comments.
 
-       * international/mule.el (auto-coding-alist): Associate non-ascii
-       image filename extensions with `no-conversion'.
+2007-07-25  Glenn Morris  <rgm@gnu.org>
 
-2005-03-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * Relicense all FSF files to GPLv3 or later.
 
-       * international/iso-acc.el:
-       * obsolete/iso-acc.el: Move iso-acc to the obsolete subdir.
+       * COPYING: Switch to GPLv3.
 
-2005-03-26  Luc Teirlinck  <teirllm@auburn.edu>
+2007-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * textmodes/sgml-mode.el (html-mode): Doc update.
+       * pcvs.el (cvs-temp-buffer): Undo last ill-conceived change.
+       Replace it with another one which disables undo before calling
+       erase-buffer and then turns it back on if needed.
 
-       * autorevert.el (auto-revert-check-vc-info): Minor doc fix.
+2007-07-24  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-2005-03-26  Dan Nicolaescu  <dann@ics.uci.edu>
+       * ps-print.el: Problem with foreground and background color when
+       printing a buffer with and without faces.  Reported by Christian
+       Schlauer <cs-muelleimer-rubbish.bin@arcor.de>.
+       (ps-print-version): New version 6.7.5.
+       (ps-default-fg): Change default value to nil, so black color is used
+       when a face does not specify a foreground color.
+       (ps-default-bg): Change default value to nil, so white color is used
+       for background color.
+       (ps-begin-job): Fix code.
 
-       * term.el (term-move-columns): Fix face after extending a line.
-       (term-insert-spaces): Likewise.
-       (term-reset-terminal): Fix off by one error.
+2007-07-24  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-03-26  Eli Zaretskii  <eliz@gnu.org>
+       * vc-hg.el (vc-hg-revision-completion-table): Temporarily comment out.
 
-       * international/mule.el (auto-coding-alist): Add .xpi files.
+2007-07-24  Glenn Morris  <rgm@gnu.org>
 
-       * files.el (auto-mode-alist): Add .xpi files.
+       * calendar/cal-tex.el (cal-tex-holidays, cal-tex-diary)
+       (cal-tex-rules, cal-tex-buffer, cal-tex-24)
+       (cal-tex-cursor-month-landscape, cal-tex-cursor-month)
+       (cal-tex-cursor-week, cal-tex-cursor-week2)
+       (cal-tex-cursor-week-iso, cal-tex-week-hours)
+       (cal-tex-cursor-week-monday, cal-tex-weekly4-box)
+       (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
+       (cal-tex-cursor-filofax-daily, cal-tex-daily-page): Doc fix.
 
-2005-03-26  Jure Cuhalev  <gandalf@owca.info>  (tiny change)
+2007-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * textmodes/ispell.el (ispell-dictionary-alist-6): Add slovenian.
+       * calendar/calendar.el (calendar-mode-map): Move initialization
+       into declaration.  Add menu bindings (used to be done in cal-menu).
+       (calendar-mode): Don't add an activate-menubar-hook.
+
+       * calendar/cal-menu.el: Break dependency on calendar.el (i.e. do not
+       modify calendar-mode-map), use easy-menu, and make sure that C-h k
+       can be used on the menu entries.
+       (cal-menu-holiday-window-suffix, cal-menu-set-date-title): New funs.
+       (cal-menu-moon-menu, cal-menu-diary-menu, cal-menu-holidays-menu)
+       (cal-menu-goto-menu, cal-menu-scroll-menu): New consts.
+       (cal-menu-context-mouse-menu, cal-menu-global-mouse-menu): New menus.
+       (calendar-flatten, cal-menu-update): Remove.
+       (calendar-mouse-insert-hebrew-diary-entry)
+       (calendar-mouse-insert-islamic-diary-entry)
+       (calendar-mouse-insert-bahai-diary-entry):
+       Remove (fold into cal-menu-diary-menu).
+       (calendar-mouse-2-date-menu, calendar-mouse-cal-tex-menu)
+       (cal-tex-mouse-filofax): Remove (fold into cal-menu-context-mouse-menu).
+       (calendar-mouse-3-map): Remove (turn into cal-menu-global-mouse-menu).
+       (calendar-mouse-view-diary-entries): Minor simplifications.
+       (calendar-event-to-date): Use with-current-buffer.
 
-2005-03-26  Eli Zaretskii  <eliz@gnu.org>
+2007-07-25  Nick Roberts  <nickrob@snap.net.nz>
 
-       * term/bobcat.el: Don't use keyswap.el, since it is now obsolete.
+       * add-log.el (change-log-redate): Remove (not needed anymore and
+       doesn't appear to work).
 
-2005-03-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
+2007-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calendar/cal-menu.el (top level): Delete local C-down-mouse-3
-       binding.  Suggested by Stephan Stahl <stahl@eos.franken.de>.
+       * frame.el: Use mapc and dolist instead of mapcar where possible.
+       (close-display-connection): New command.
 
-       * calendar/cal-move.el (calendar-beginning-of-year): Move the
-       cursor to Jan 1 when needed.
-       (calendar-end-of-year): Fix -/+ typo.
-       Reported by Chong Yidong <cyd@stupidchicken.com>.
+2007-07-25  Alexandre Julliard  <julliard@winehq.org>
 
-2005-03-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * vc-git.el (vc-git-log-view-mode): Port to the multi-file vc interface.
+       (vc-git-create-snapshot, vc-git-retrieve-snapshot): New functions.
 
-       * progmodes/flymake.el (flymake-mode): Add autoload cookie.
+2007-07-25  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-       * emacs-lisp/debug.el (debugger-record-expression): Add a missing
-       format to `message'.  Inspired by Deepak Goel <deego@gnufans.org>.
+       * ps-print.el (ps-multibyte-buffer): Docstring fix.
 
-2005-03-25  Richard M. Stallman  <rms@gnu.org>
+       * ps-mule.el: Doc fix.
+       (ps-multibyte-buffer, ps-mule-font-info-database-default)
+       (ps-mule-external-libraries, ps-mule-begin-job): Docstring fix.
 
-       * filesets.el (filesets-init): Add autoload.
+2007-07-25  Glenn Morris  <rgm@gnu.org>
 
-       * mail/mailalias.el (mail-directory): Doc fix.
+       * calendar/cal-tex.el (cal-tex-which-days, cal-tex-holidays)
+       (cal-tex-diary, cal-tex-daily-string, cal-tex-daily-start)
+       (cal-tex-daily-end, cal-tex-hook)
+       (cal-tex-cal-one-month, cal-tex-cal-multi-month)
+       (cal-tex-year, cal-tex-cursor-week, cal-tex-cursor-week2)
+       (cal-tex-cursor-week-iso, cal-tex-week-hours)
+       (cal-tex-cursor-week-monday, cal-tex-weekly4-box)
+       (cal-tex-cursor-day, cal-tex-insert-preamble): Doc fix.
+       (cal-tex-day-prefix, cal-tex-day-name-format)
+       (cal-tex-cal-one-month, cal-tex-cal-multi-month, cal-tex-myday)
+       (cal-tex-caldate, cal-tex-LaTeX-hourbox)
+       (cal-tex-LaTeX-subst-list): Change from variables to constants.
+       (cal-tex-preamble, cal-tex-arg, cal-tex-nl): Simplify with `format'.
+       (cal-tex-cursor-filofax-year, cal-tex-weekly4-box): Use \textbf,
+       etc, rather than \bf.
+       (cal-tex-mini-calendar): Fix typos in previous change.
+       (cal-tex-latexify-list): Remove inner let binding.
+       (cal-tex-end-document, cal-tex-banner): Use multi-line
+       cal-tex-comment.
+       (cal-tex-comment): Handle embedded newlines.
+       (cal-tex-LaTeXify-string): Use substring-no-properties.
+
+2007-07-25  Joakim Verona  <joakim@verona.se>  (tiny change)
 
-2005-03-25  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
+       * progmodes/compile.el (compilation-error-regexp-alist-alist):
+       Add support for the Maden build tool.
 
-       * mail/mailalias.el (mail-directory-process): Do nothing if
-       mail-directory-process is an atom.
-       (mail-get-names): Ignore mail-directory-names if it is an atom.
-       (mail-directory-process defvar): Doc fix.
-       (mail-names): Doc fix.
+2007-07-25  William Xu  <william.xwl@gmail.com>  (tiny change)
 
-2005-03-25  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>  (tiny change)
+       * net/webjump.el (webjump-url-encode): Fix for non-ASCII characters.
 
-       * textmodes/flyspell.el (mail-mode-flyspell-verify): Fix regexp syntax.
+2007-07-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-03-26  Kenichi Handa  <handa@m17n.org>
+       * pcvs.el (cvs-temp-buffer): Disable undo in temp buffers.
 
-       * international/mule-util.el (detect-coding-with-priority):
-       Call update-coding-systems-internal before detect-coding-region.
+2007-07-24  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-03-26  Nick Roberts  <nickrob@snap.net.nz>
+       * dired.el (dired-mode-map): Bind wdired-change-to-wdired-mode to
+       C-x C-q.
 
-       * progmodes/gdb-ui.el (gdb-breakpoints-mode-map)
-       (gdb-frames-mode-map): Add follow-link property.
+       * vc-git.el (vc-git-print-log): Fix previous change.
 
-2005-03-25  Jay Belanger  <belanger@truman.edu>
+2007-07-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calc/calcalg2.el (calc-solve-for): Use "Variable(s)" to prompt
-       for variables.
+       * window.el (save-selected-window): Minor optimization.
+       (bw-adjust-window): If operation failed, try with a smaller delta.
+       (window-fixed-size-p): New function.
+       (window-area-factor): New var.
+       (balance-windows-area): New command.
 
-2005-03-25  Juri Linkov  <juri@jurta.org>
+       * ps-mule.el (ps-multibyte-buffer): Docstring fixes.
+       (ps-mule-encode-ethiopic): Make it clear that it's always defined.
+       (ps-mule-prepare-font-for-components, ps-mule-encode-header-string)
+       (ps-mule-encode-bit, ps-mule-encode-ucs2): Use dotimes.
+       (ps-mule-begin-job): Use dolist.
 
-       * image-mode.el: Optimize image filename extension regexps in
-       autoload cookies.  Associate .x[bp]m with `image-mode-maybe'
-       in `auto-mode-alist'.
-       (image-mode): Add `image-toggle-display-text' to local hook
-       `change-major-mode-hook'.  Display the image as an image by
-       default.  Set `cursor-type' and `truncate-lines' if the image
-       is already displayed.  Take into account the current mode (image
-       or text) in message.
-       (image-minor-mode): New minor mode.
-       (image-mode-maybe, image-toggle-display-text): New functions.
-       (image-toggle-display): Use called-interactively-p.
-       Let-bind `inhibit-read-only' to t.
+2007-07-24  Michael Albinus  <michael.albinus@gmx.de>
 
-       * image-mode.el (image-minor-mode): Set `cursor-type' and
-       `truncate-lines' if the image is already displayed.  Add turning
-       image-minor-mode off to `change-major-mode-hook'.  Add message.
-       Call `image-toggle-display-text' after turning image-minor-mode off.
+       * subr.el (start-file-process-shell-command)
+       (process-file-shell-command): New defuns.
 
-2005-03-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * progmodes/compile.el (compilation-start):
+       Apply `start-file-process-shell-command'.
 
-       * international/mule-cmds.el (set-locale-environment): For Mac OS X's
-       Terminal.app, use utf-8.
-       (set-display-table-and-terminal-coding-system): Add coding-system arg.
-       (set-locale-environment): Use it.
+2007-07-24  Alexandre Julliard  <julliard@winehq.org>
 
-       * term/xterm.el: Undo last change, better done in mule-cmds.el.
+       * vc-git.el (vc-git-checkout, vc-directory-exclusion-list): Fix typos.
 
-       * emacs-lisp/rx.el (rx-constituents): Add symbol-start and symbol-end.
+2007-07-24  Alan Mackenzie  <acm@muc.de>
 
-       * progmodes/python.el (python-close-block-statement-p)
-       (python-outdent-p, python-current-defun): Use symbol-end.
+       * emacs-lisp/bytecomp.el (byte-compile-from-buffer):
+       Initialise byte-compile-unresolved-functions before rather than
+       after a compilation.
+       (byte-compile-unresolved-functions): Amplify doc string.
 
-2005-03-25  Karl Chen  <quarl@cs.berkeley.edu>
+2007-07-24  Glenn Morris  <rgm@gnu.org>
 
-       * files.el (save-some-buffers): Doc fix.
+       * startup.el (normal-splash-screen): Use `emacs-copyright'.
 
-2005-03-25  Werner Lemberg  <wl@gnu.org>
+       * calendar/cal-tex.el (cal-tex-holidays, cal-tex-diary)
+       (cal-tex-rules, cal-tex-buffer, cal-tex-24)
+       (cal-tex-cursor-month-landscape, cal-tex-cursor-month)
+       (cal-tex-cursor-week, cal-tex-cursor-week2)
+       (cal-tex-cursor-week-iso, cal-tex-week-hours)
+       (cal-tex-cursor-week-monday, cal-tex-weekly4-box)
+       (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
+       (cal-tex-cursor-filofax-daily, cal-tex-daily-page): Doc fix.
 
-       * complete.el, thumbs.el: Replace `legal' with `valid'.
-       * calendar/calendar.el: Replace `legal' with `valid'.
-       * emacs-lisp/advice.el: Replace `legal' with `valid'.
-       * mail/supercite.el: Replace `legal' with `valid'.
-       * progmodes/cperl-mode.el, progmodes/idlw-shell.el
-       * progmodes/idlwave.el, progmodes/vhdl-mode.el:
-       Replace `legal' with `valid'.
-       * textmodes/reftex-vars.el, textmodes/reftex.el:
-       Replace `legal' with `valid'.
+       * calendar/cal-tex.el: Remove leading `*' from defcustom docs.
+       (cal-tex-daily-string, cal-tex-daily-start, cal-tex-daily-end)
+       (cal-tex-day-name-format, cal-tex-cal-one-month)
+       (cal-tex-cal-multi-month, cal-tex-myday, cal-tex-preamble)
+       (cal-tex-comment, cal-tex-nl, cal-tex-cmd, cal-tex-e-parbox)
+       (cal-tex-mini-calendar, cal-tex-em): Doc fix.
+       (cal-tex-list-holidays, cal-tex-cursor-year)
+       (cal-tex-cursor-year-landscape, cal-tex-year)
+       (cal-tex-cursor-filofax-year, cal-tex-cursor-month-landscape)
+       (cal-tex-cursor-month, cal-tex-insert-days)
+       (cal-tex-insert-day-names, cal-tex-insert-blank-days)
+       (cal-tex-first-blank-p, cal-tex-cursor-week)
+       (cal-tex-cursor-week2, cal-tex-cursor-week-iso)
+       (cal-tex-week-hours, cal-tex-cursor-week-monday)
+       (cal-tex-weekly4-box, cal-tex-cursor-filofax-2week)
+       (cal-tex-cursor-filofax-week, cal-tex-cursor-filofax-daily)
+       (cal-tex-cursor-day, cal-tex-daily-page, cal-tex-mini-calendar)
+       (cal-tex-latexify-list, cal-tex-previous-month)
+       (cal-tex-next-month, cal-tex-insert-preamble): General tidy-up and
+       modernization, including using dotimes rather than
+       calendar-for-loop.
+       (cal-tex-LaTeX-subst-list): Remove `@'.
+       (cal-tex-em, cal-tex-bf, cal-tex-Huge-bf, cal-tex-large-bf):
+       Use \textit and \textbf rather than \em and \it.
+
+       * calendar/cal-bahai.el (list-bahai-diary-entries)
+       * calendar/cal-hebrew.el (list-hebrew-diary-entries)
+       * calendar/cal-islam.el (list-islamic-diary-entries)
+       * calendar/calendar.el (generate-calendar, generate-calendar-month)
+       * calendar/diary-lib.el (diary-list-entries)
+       (mark-calendar-date-pattern): Use `dotimes' rather than
+       `calendar-for-loop'.
+
+       * calendar/calendar.el (calendar-for-loop): Doc fix.
 
-2005-03-25  Werner Lemberg  <wl@gnu.org>
+2007-07-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calc/calc-forms.el, calc/calc-sel.el
-       * midnight.el, vc-cvs.el
-       * emacs-lisp/cl-macs.el
-       * emulation/vip.el
-       * eshell/esh-io.el, eshell/esh-var.el
-       * mail/supercite.el
-       * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el
-       * progmodes/ebnf-ebx.el, progmodes/ebnf-dtd.el, progmodes/ebnf-iso.el
-       * progmodes/ebnf-yac.el, progmodes/ebnf2ps.el, progmodes/idlwave.el
-       * progmodes/sh-script.el, progmodes/xscheme.el
-       * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el
-       * textmodes/reftex-index.el, textmodes/reftex-parse.el
-       * textmodes/reftex-ref.el, textmodes/reftex-vars.el
-       * textmodes/reftex.el, textmodes/org.el:
-       Replace `illegal' with `invalid'.
+       * ses.el (ses-cleanup): Prevent Emacs from spuriously checking if the
+       underlying file is uptodate.
 
-2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-23  Christopher J. Madsen  <cjm@cjmweb.net>
 
-       * progmodes/flymake.el (flymake-get-file-name-mode-and-masks)
-       (flymake-find-buildfile, flymake-find-possible-master-files)
-       (flymake-check-include, flymake-parse-line): Replace loops over the
-       length of lists, by loops over lists, to remove silly O(n\e,A2\e(B) behavior.
+       * replace.el (perform-replace): Use isearch-no-upper-case-p.
 
-       * progmodes/flymake.el (flymake-ensure-ends-with-slash): Remove.
-       Substitute file-name-as-directory in the rest of the file.
-       (flymake-get-common-file-prefix): Rewrite, using compare-strings.
-       (flymake-replace-region): Remove unused arg `buffer'.
-       (flymake-check-patch-master-file-buffer): Update calls to it.
-       (flymake-add-err-info): Remove unused var `count'.
-       (flymake-mode): Use define-minor-mode.
+2007-07-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * progmodes/flymake.el: Use with-current-buffer.
-       (flymake-float-time, flymake-get-temp-dir, flymake-line-end-position)
-       flymake-replace-regexp-in-string, flymake-line-beginning-position)
-       (flymake-popup-menu, flymake-current-row, flymake-selected-frame):
-       Avoid testing for `xemacs'.
-       (flymake-nop): Move.
-       (flymake-region-has-flymake-overlays): Return the computed value.
-       (flymake-reformat-err-line-patterns-from-compile-el): Use dolist.
-       Remove unused var `endline'.
-       (flymake-get-line-count): Remove unused function.
-       (flymake-display-err-menu-for-current-line): Unused var move-mouse-pos.
-
-       * emulation/vi.el:
-       * generic.el:
-       * hilit-chg.el (global-highlight-changes):
-       * hi-lock.el (hi-lock-mode):
-       * follow.el: find-file-hooks -> find-file-hook.
-
-       * comint.el (comint-insert-input): Obey mouse-yank-at-point.
-
-2005-03-24  Juri Linkov  <juri@jurta.org>
-
-       * dired.el (dired-mode-map): Add menu item "Compare directories"
-       for dired-compare-directories.
-
-       * dired-aux.el (dired-compare-directories): Add autoload cookie.
-       Doc fix.  Replace `read-file-name' with `read-directory-name'.
-
-2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * term/xterm.el: If running in Terminal.app set coding-system to utf-8.
+       * vc-hooks.el (vc-mode-line-map): New const.
+       (vc-mode-line): Use it.
 
-2005-03-24  Jay Belanger  <belanger@truman.edu>
+2007-07-23  Alexandre Julliard  <julliard@winehq.org>
 
-       * calc/calc-embed.el (calc-embedded-mode-change): Save all
-       relevant mode settings in calc-embedded-original-modes when modes
-       are permanently changed.
+       * vc-git.el (vc-git-delete-file, vc-git-rename-file)
+       (vc-git-unregister): New functions.
+       (vc-git-find-version): Use the result of ls-files as a parameter
+       for cat-file.
 
-2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-23  Michael Albinus  <michael.albinus@gmx.de>
 
-       * autoinsert.el: find-file-hooks -> find-file-hook.
+       * net/tramp.el (tramp-perl-file-attributes)
+       (tramp-perl-directory-files-and-attributes)
+       (tramp-handle-file-attributes-with-stat)
+       (tramp-handle-directory-files-and-attributes-with-stat)
+       (tramp-convert-file-attributes): Handle huge file sizes.
 
-2005-03-24  Lute Kamstra  <lute@gnu.org>
+2007-07-23  Juri Linkov  <juri@jurta.org>
 
-       * generic.el (generic-font-lock-defaults): Make it obsolete.
-       (generic-font-lock-keywords): New variable to replace
-       generic-font-lock-defaults.
-       (generic-mode-set-font-lock): Delete it.
-       (generic-mode-internal): Don't call generic-mode-set-font-lock.
-       (generic-bracket-support): Add docstring.
+       * isearch.el (isearch-message-function): New variable.
+       (isearch-update, isearch-search): Use it.
 
-       * generic-x.el: Rename generic-font-lock-defaults to
-       generic-font-lock-keywords throughout.
-       (mailagent-rules-setup-function): Delete it.
-       (mailagent-rules-generic-mode): Use anonymous function instead.
-       (show-tabs-generic-mode-font-lock-defaults-1)
-       (show-tabs-generic-mode-font-lock-defaults-2): Make them constants.
-       Quote faces.
-       (show-tabs-tab-face, show-tabs-space-face): Specify background,
-       not foreground.
+       * simple.el (goto-history-element): New function created from
+       next-history-element.
+       (next-history-element): Most code moved to goto-history-element.
+       Call goto-history-element with (- minibuffer-history-position n).
+       (previous-history-element): Call goto-history-element with (+
+       minibuffer-history-position n).
+       (minibuffer-setup-hook): Add minibuffer-history-isearch-setup.
+       (minibuffer-history-isearch-message-overlay): New buffer-local variable.
+       (minibuffer-history-isearch-setup, minibuffer-history-isearch-end)
+       (minibuffer-history-isearch-search, minibuffer-history-isearch-message)
+       (minibuffer-history-isearch-wrap, minibuffer-history-isearch-push-state)
+       (minibuffer-history-isearch-pop-state): New functions.
 
-       * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression):
-       Recognize define-generic-mode.
+2007-07-23  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-03-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * vc-hooks.el (vc-stay-local-p): Fix bug: Avoid remove-if-not.
+       Also, if FILE is a list, return non-nil if any of its elements
+       should stay local.  Update docstring.
 
-       * icomplete.el (icomplete-simple-completing-p): Don't turn on icomplete
-       if there's no completion table.
+2007-07-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-03-23  Miles Bader  <miles@gnu.org>
+       * emacs-lisp/copyright.el (copyright-update-year): Fix 2007-05-25
+       change by reverting a small part.
 
-       * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled):
-       Remove tty-specific variants, as they're no longer needed.
+2007-07-23  Richard Stallman  <rms@gnu.org>
 
-2005-03-23  Lute Kamstra  <lute@gnu.org>
+       * progmodes/octave-inf.el (inferior-octave-prompt): Accept .exe.
 
-       * generic-x.el: Code cleanup: make args constant whenever possible.
-       (installshield-statement-keyword-list)
-       (installshield-system-functions-list)
-       (installshield-system-variables-list, installshield-types-list)
-       (installshield-funarg-constants-list): Make them constants.
+2007-07-23  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * generic.el (generic-make-keywords-list): Add autoload cookie.
+       * vc-git.el (vc-git-checkin): Delete unused parameter and the code
+       handling it.  Use vc-git-command.
+       (vc-git-find-version, vc-git-diff-tree): New functions.
+       (vc-git-revert): Use vc-git-command.
+       (vc-git--run-command): Delete.
 
-       * calendar/time-date.el: Add comment on time value formats.
-       Don't require parse-time.
-       (with-decoded-time-value): New macro.
-       (encode-time-value): New function.
-       (time-to-seconds, time-less-p, time-subtract, time-add): Use them.
-       (days-to-time): Return a valid time value when arg is huge.
-       (time-since): Use time-subtract.
-       (time-to-number-of-days): Use time-to-seconds.
+2007-07-23  Alexandre Julliard  <julliard@winehq.org>
 
-2005-03-23  David Ponce  <david@dponce.com>
+       * vc-git.el (vc-git-workfile-unchanged-p): Update comment.
 
-       * recentf.el (recentf-keep): New option.
-       (recentf-menu-action): Default to `find-file'.
-       (recentf-keep-non-readable-files-flag)
-       (recentf-keep-non-readable-files-p)
-       (recentf-file-readable-p, recentf-find-file)
-       (recentf-cleanup-remote): Remove.
-       (recentf-include-p): More robust.
-       (recentf-keep-p): New function.
-       (recentf-remove-if-non-kept): Rename from
-       `recentf-remove-if-non-readable'.  Use `recentf-keep-p'.
-       All callers updated.
-       (recentf-menu-items-for-commands): Fix help string.
-       (recentf-track-closed-file): Update.  Doc fix.
-       (recentf-cleanup): Update.  Count removed files.  Doc fix.
+2007-07-20  Kenichi Handa  <handa@m17n.org>
 
-2005-03-23  Kim F. Storm  <storm@cua.dk>
+       * international/utf-8.el (utf-8-post-read-conversion):
+       Temporarily bind utf-8-compose-scripts to nil while running
+       *-compose-region functions.
 
-       * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled):
-       Don't inherit from fringe face (now happens automatically).
+2007-07-23  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-03-22  Kim F. Storm  <storm@cua.dk>
+       * vc-git.el: Update status.
+       (vc-directory-exclusion-list): Use eval-after-load.
 
-       * tooltip.el (tooltip-show-help-function): Ignore negative mouse
-       position values.
+2007-07-22  Nick Roberts  <nickrob@snap.net.nz>
 
-2005-03-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * bindings.el (mode-line-remote): New variable.
+       (help-echo): Add to default values of mode-line-format.
 
-       * menu-bar.el (showhide-date-time): Remove.
-       (menu-bar-showhide-menu): Use menu-bar-make-mm-toggle.
-       (menu-bar-make-mm-toggle): Simplify.
+       * files.el: Mark mode-line-remote as risky.
 
-2005-03-22  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+2007-07-22  Juri Linkov  <juri@jurta.org>
 
-       * progmodes/perl-mode.el (perl-font-lock-keywords-2):
-       Accept qualified variable and function names.
+       * isearch.el (isearch-edit-string): Save old point and
+       isearch-other-end to old-point and old-other-end before reading
+       the search string from minibuffer.  After exiting minibuffer set
+       point to old-other-end if point and the search direction is the
+       same as before reading the search string.
+       (isearch-del-char): Don't set isearch-yank-flag to t.  Put point
+       to isearch-other-end.  Instead of isearch-search-and-update call
+       three functions isearch-search, isearch-push-state and isearch-update.
 
-2005-03-22  Thien-Thi Nguyen  <ttn@gnu.org>
+2007-07-22  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * bindings.el (completion-ignored-extensions):
-       Remove ".lis" for `vax-vms'.
+       * vc-git.el (vc-git-register, vc-git-checkin): Use vc-git-command,
+       deal with multiple file arguments.
+       (vc-git-print-log): Deal with multiple file arguments.
 
-2005-03-22  Andreas Schwab  <schwab@suse.de>
+2007-07-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * generic-x.el: Revert last change.
-       * ldefs-boot.el: Update.
+       * diff-mode.el (diff-refine-ignore-spaces-hunk): Rename from
+       diff-refine-hunk.  Adjust users.
+       (diff-unified-hunk-p, diff-splittable-p): New functions.
+       (diff-mode-menu): Use it to disable Split when it doesn't work.
 
-2005-03-22  Jay Belanger  <belanger@truman.edu>
+2007-07-22  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * calc/calc-embed.el (calc-embedded-original-modes): New variable.
-       (calc-embedded-save-original-modes)
-       (calc-embedded-restore-original-modes): New functions.
-       (calc-do-embedded): Save original modes when entering embedded mode
-       and restore when leaving embedded mode.
-       (calc-embedded-modes-change): Change the value of
-       calc-embedded-original-modes to reflect permanent changes.
+       * diff-mode.el (diff-mode-menu): New entries.
 
-2005-03-22  Lute Kamstra  <lute@gnu.org>
+2007-07-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * generic-x.el: Require generic again.
+       * diff-mode.el (diff-unified->context): Use the new `apply' undo entry
+       if applicable, so as to save undo-log space.
 
-2005-03-22  Miles Bader  <miles@gnu.org>
+       * diff-mode.el (diff-find-file-name): Add arg `batch'.
 
-       * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled):
-       Tweak details to look good on both ttys and bitmap displays, light
-       or dark background, etc.
+       * diff-mode.el (diff-beginning-of-file-and-junk): New function.
+       (diff-file-kill): Use it.
+       (diff-beginning-of-hunk): Add arg `try-harder' using it.
+       (diff-restrict-view, diff-find-source-location, diff-refine-hunk):
+       Use it so they find the hunk even when we're in the file header.
 
-2005-03-21  Kim F. Storm  <storm@cua.dk>
+2007-07-22  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * tooltip.el (tooltip-show-help-function): Check car and cdr of
-       mouse position.
+       * vc-git.el (vc-git-revision-granularity, vc-git-root)
+       (vc-git-command, vc-git-dir-state, vc-git-dired-state-info)
+       (vc-git-create-repo): New functions.
+       (vc-git-registered): New autoloaded function definition.
+       (vc-git-registered): Use vc-git-root.
+       (vc-git-responsible-p): New defalias.
+       (vc-git-annotate-extract-revision-at-line): Uncomment.
+       (vc-git-print-log): Add the file name to the log.
+       (vc-git-log-view-mode): New derived mode.
+       (vc-git-diff, vc-git-annotate-command): Use vc-git-command.
 
-2005-03-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-22  Michael Albinus  <michael.albinus@gmx.de>
 
-       * icomplete.el: Don't forcibly turn on the mode upon load.
-       (icomplete-mode): Use define-minor-mode.
-       (icomplete-eoinput): Default to nil.
-       (icomplete-minibuffer-setup): Remove autoload.
-       (icomplete-tidy): Simplify.
-       (icomplete-exhibit): Use buffer-undo-list to determine if we're still
-       in the initial state or if the user has modified the field.
-       Fix handling of icomplete-max-delay-chars.
-       Remove code that handles the oddball case where
-       minibuffer-completion-table is an integer.
-       Wrap icomplete-completions in while-no-input in case building
-       completions takes more time than expected.
-       (icomplete-completions): Simplify.
+       * progmodes/grep.el (grep-compute-defaults): Keep default values.
 
-2005-03-21  Richard M. Stallman  <rms@gnu.org>
+2007-07-22  Ralf Angeli  <angeli@caeruleus.net>
 
-       * jka-compr.el (jka-compr-really-do-compress):
-       Make variable buffer-local.
+       * textmodes/reftex.el (reftex-access-parse-file): Create parse
+       file in a way that does not interfere with recentf mode.
+       (reftex-access-parse-file): Do not risk destroying an existing
+       buffer.
 
-       * image-mode.el: Handle .xpm files too.
-       (image-toggle-display): Preserve modification flag.
+2007-07-22  Alexandre Julliard  <julliard@winehq.org>
 
-       * help.el (where-is): Don't mention aliases with no key bindings.
+       * vc-git.el: New file.
 
-2005-03-21  Lute Kamstra  <lute@gnu.org>
+2007-07-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * generic.el: Fix commentary section.  Don't require cl for
-       compilation.
-       (generic-mode-list): Add autoload cookie.
-       (generic-use-find-file-hook, generic-lines-to-scan)
-       (generic-find-file-regexp, generic-ignore-files-regexp)
-       (generic-mode, generic-mode-find-file-hook)
-       (generic-mode-ini-file-find-file-hook): Fix docstrings.
-       (define-generic-mode): Make it a defmacro.  Fix docstring.
-       (generic-mode-internal): Code cleanup.  Add autoload cookie.
-       (generic-mode-set-comments): Code cleanup.
-       * generic-x.el: Don't prevent compilation.  Don't require generic.
-       Follow coding conventions.  Minor code cleanup.
-       (etc-fstab-generic-mode): Add some keywords.
-       * font-lock.el (lisp-font-lock-keywords-1): Font lock a call to
-       define-generic-mode like a function declaration.
+       * textmodes/tex-mode.el (tex-font-script-display): Change default.
 
-2005-03-21  Jay Belanger  <belanger@truman.edu>
+2007-07-22  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * calc/calc-embed.el (calc-do-embedded): Put data on stack before
-       changing modes.
+       * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
+       for branches and new files.
 
-2005-03-21  Sam Steingold  <sds@gnu.org>
+       * vc-hooks.el (vc-default-mode-line-string): Move mouse-face and
+       local-map handling ...
+       (vc-mode-line): ... here.  Improve handling of help-echo.
 
-       * add-log.el (add-log-current-defun): Support more C DEFUN forms.
+       * vc.el (mode-line-string): Document help-echo usage.
 
-2005-03-21  Thien-Thi Nguyen  <ttn@gnu.org>
+2007-07-22  Michael Albinus  <michael.albinus@gmx.de>
 
-       * progmodes/dcl-mode.el (dcl-font-lock-keywords):
-       Add underscore to "f$ lexicals" regexp.
+       Sync with Tramp 2.1.10.
 
-2005-03-20  Juri Linkov  <juri@jurta.org>
+       * net/tramp.el (tramp-get-ls-command): Fix typo.
 
-       * subr.el (progress-reporter-do-update): When `min-value' is equal
-       to `max-value', set `percentage' to 0 and prevent division by zero.
+       * net/trampver.el: Update release number.
 
-2005-03-20  Michael Albinus  <michael.albinus@gmx.de>
+2007-07-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       Sync with Tramp 2.0.48.
+       * startup.el (command-line-x-option-alist): Use x-handle-no-bitmap-icon.
 
-       * net/tramp.el (all): Change all addresses to .gnu.org.
-       (tramp-append-tramp-buffers): New defun.
-       (tramp-bug): Apply `tramp-append-tramp-buffers' as post-hook.
-       Catch `dont-send' signal.
-       (tramp-set-auto-save-file-modes): Set always permissions, because
-       there might be an old auto-saved file belonging to another
-       original file.  This could be a security threat.  Reported by
-       Kjetil Kjernsmo <kjetil@kjernsmo.net>.
-       Check for Emacs 21.3.50 removed.
+       * term/x-win.el (x-handle-no-bitmap-icon): New function.
 
-       * net/tramp-smb.el (all): Remove debug construct for
-       `with-parsed-tramp-file-name'.
-       (tramp-smb-prompt): Prompt can contain spaces inside directory names.
-       (tramp-smb-handle-delete-directory, tramp-smb-handle-delete-file):
-       No error message if DIRECTORY or FILENAME doesn't exist.
-       (tramp-smb-open-connection): Check existence of
-       `tramp-smb-program'.
+2007-07-22  Martin Rudalics  <rudalics@gmx.at>
 
-2005-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * add-log.el (change-log-fill-parenthesized-list): New function.
+       (change-log-indent): Call change-log-fill-parenthesized-list.
+       (change-log-fill-paragraph): Bind fill-indent-according-to-mode to t.
+       Have lines with leading asterisk start a paragraph.
 
-       * progmodes/perl-mode.el (perl-font-lock-syntactic-face-function):
-       Properly handle the case where the `m' or `s' command's argument is not
-       yet terminated.
-       (perl-indent-new-calculate): New function.
-       (perl-indent-line): Use it.
+2007-07-21  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-03-20  Miles Bader  <miles@gnu.org>
+       * calc/calc-math.el (math-emacs-precision)
+       (math-largest-emacs-expt, math-smallest-emacs-expt):
+       New variables.
+       (math-use-emacs-fn): New function.
+       (math-exp-raw): Evaluate with `math-use-emacs-fn', when
+       appropriate.
 
-       * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Use breakpoint faces
-       in text-mode too.  Change to new face names.
-       (breakpoint-enabled): Rename from `breakpoint-enabled-bitmap-face'.
-       Add `:weight bold' attribute.
-       (breakpoint-disabled): Rename from `breakpoint-disabled-bitmap-face'.
+2007-07-21  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-03-19  Juri Linkov  <juri@jurta.org>
+       * image-dired.el (image-dired-sane-db-file): New func.
+       (image-dired-write-tags, image-dired-remove-tag)
+       (image-dired-list-tags, image-dired-write-comments)
+       (image-dired-get-comment, image-dired-mark-tagged-files)
+       (image-dired-create-gallery-lists): Call new func.
+       Reported by Dieter Wilhelm <dieter@duenenhof-wilhelm.de>.
 
-       * files.el (auto-mode-alist): Add comment.  Optimize jar/ear/war.
+2007-07-21  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * international/mule.el (auto-coding-alist): Sync with
-       `auto-mode-alist' by adding upper case archive file extensions
-       and adding ear/war to jar extension.
+       * vc-hg.el (vc-hg-dir-state): Fix loop.
+       (vc-hg-print-log): Fix expected return value for vc-hg-command.
+       (vc-hg-next-version, vc-hg-delete-file, vc-hg-rename-file)
+       (vc-hg-register, vc-hg-create-repo, vc-hg-checkin)
+       (vc-hg-revert): Likewise.
+       (vc-hg-revision-table, vc-hg-revision-completion-table): New
+       functions.
 
-2005-03-19  David Casperson  <casper@unbc.ca>  (tiny change)
+2007-07-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * textmodes/tex-mode.el (tex-view): If tex-shell process is not
-       running, restart it.
+       * add-log.el (change-log-resolve-conflict): Don't lose data if the
+       merge fails.
 
-2005-03-19  Yoichi NAKAYAMA  <yoichi@geiin.org>  (tiny changes)
+2007-07-20  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * finder.el (finder-current-item): Throw an error on an empty line.
+       * progmodes/compile.el (compilation-auto-jump-to-first-error):
+       Add group and version.
 
-       * man.el (Man-follow-manual-reference): If current-word returns
-       nil, use "".
+2007-07-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-03-19  Matt Hodges  <MPHodges@member.fsf.org>
+       * add-log.el (add-log-file-name): Use file-relative-name.
+       (add-change-log-entry): Delay reading
+       add-log-(full-name|mailing-address) to after we've switched to the
+       ChangeLog buffer so we get the right value.
+       (add-change-log-entry, add-log-current-defun, change-log-merge):
+       Use derived-mode-p rather than checking major-mode directly.
 
-       * simple.el (goto-line): Doc fix.
+       * pcvs.el (cvs-mode-add-change-log-entry-other-window): Use a directory
+       name for buffer-file-name if it refers to a directory.
 
-2005-03-19  Aaron S. Hawley  <Aaron.Hawley@uvm.edu>
+       * vc-arch.el (vc-arch-diff): Fix last change.
 
-       * files.el (save-buffer): Doc fix.
+       * progmodes/compile.el (compilation-start): Remember the original
+       directory in a buffer-local compilation-directory.
+       (compile): Set the global value of compilation-directory.
+       (recompile): Use compilation-directory even in the compilation buffer.
 
-2005-03-19  Michael R. Mauger  <mmaug@yahoo.com>
+2007-07-20  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * recentf.el (recentf-cleanup-remote): New variable.
-       (recentf-cleanup): Use it to conditionally check availability of
-       remote files.
+       * vc-hg.el (vc-hg-diff): Use vc-hg-command.
 
-2005-03-19  Joe Edmonds  <joe-bugs-debian-org@elem.com>  (tiny change)
+2007-07-20  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-       * emacs-lisp/lisp-mode.el (lisp-mode-variables): Recognize `@' in
-       function names.
+       * ps-print.el: Problem with foreground and background color when
+       printing a buffer with and without faces.  Reported by Christian
+       Schlauer <cs-muelleimer-rubbish.bin@arcor.de>.
+       (ps-print-version): New version 6.7.5.
+       (ps-default-fg): Change default value to nil, so black color is used
+       when a face does not specify a foreground color.
+       (ps-default-bg): Change default value to nil, so white color is used
+       for background color.
+       (ps-begin-job): Fix code.
 
-2005-03-19  Eli Zaretskii  <eliz@gnu.org>
+2007-07-20  Eli Zaretskii  <eliz@gnu.org>
 
-       * language/thai-word.el: New file.
+       * makefile.w32-in (install-lisp-SH): Don't create subdirectories
+       in $(INSTALL_DIR)/lisp/ if they already exist.
 
-2005-03-19  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+2007-07-20  Dhruva Krishnamurthy  <dhruvakm@gmail.com>  (tiny change)
 
-       * files.el (backup-buffer): If the file's directory is not
-       writable, use copy instead of move to backup the file.
+       * makefile.w32-in (install-lisp-CMD): Don't create subdirectories
+       in $(INSTALL_DIR)/lisp/ if they already exist.
 
-2005-03-19  Eli Zaretskii  <eliz@gnu.org>
+2007-07-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * obsolete/keyswap.el: Moved to obsolete/ from term/.
+       * progmodes/vera-mode.el (vera-re-search-forward)
+       (vera-re-search-backward): Remove use of store-match-data.
+       (vera-mode-map): Move initialization into declaration.
 
-2005-03-19  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+       * progmodes/flymake.el (flymake-buildfile-dirs): Remove.
+       (flymake-find-buildfile): Use locate-dominating-file.
 
-       * ps-print.el (ps-generate-string-list, ps-generate-header-line):
-       Use functionp instead of symbolp and fboundp.  Reported by Drkm
-       <darkman_spam@yahoo.fr>.
-       (ps-print-version): New version 6.6.6.
+       * vc.el (vc-delistify): Use mapconcat.
+       (vc-do-command): Minor simplification.
+       (vc-expand-dirs): Use push.
 
-2005-03-18  Tak Ota  <Takaaki.Ota@am.sony.com>
+       * vc-mcvs.el (vc-mcvs-create-repo):
+       * vc-cvs.el (vc-cvs-create-repo): Remove.
 
-       * textmodes/table.el (table--line-column-position): New idiom.
-       (table--row-column-insertion-point-p): New function to test
-       validity of row and column insertion operation at a location.
-       (table-global-menu, table-cell-menu): Use above functions for
-       deterministic test operation.
-       (table--editable-cell-p): Behave in deterministic fashion.
+       * vc-hooks.el (vc-find-root): Fix case where `file' is the current
+       directory and the root as well.
 
-2005-03-18  Juri Linkov  <juri@jurta.org>
+2007-07-20  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * isearch.el (isearch-lazy-highlight-new-loop):
-       Make arguments beg and end optional.
-       (isearch-update): Remove optional arguments nil from
-       isearch-lazy-highlight-new-loop.
-       (isearch-lazy-highlight-search): Let-bind case-fold-search to
-       isearch-lazy-highlight-case-fold-search instead of
-       isearch-case-fold-search, and let-bind isearch-regexp to
-       isearch-lazy-highlight-regexp.
-       Use isearch-lazy-highlight-last-string instead of isearch-string.
+       * vc-hooks.el (vc-default-workfile-unchanged-p): Pass a list
+       instead of a file.
 
-       * replace.el (perform-replace): Remove bindings of global
-       variables isearch-string, isearch-regexp, isearch-case-fold-search.
-       Add three new arguments to `replace-highlight'.
-       (replace-highlight): Add arguments string, regexp, case-fold.
-       Let-bind isearch-string, isearch-regexp, isearch-case-fold-search
-       to allow isearch-lazy-highlight-new-loop to use these values
-       to set corresponding isearch-lazy-highlight-* internal
-       variables whose values lazy highlighting will use regardless of
-       changes to global variables isearch-string, isearch-regexp,
-       isearch-case-fold-search during lazy highlighting loop.
-       (replace-dehighlight): Rename `isearch-lazy-highlight-cleanup'
-       to `lazy-highlight-cleanup'.
+       * vc-hg.el (vc-hg-print-log): Deal with multiple file arguments.
+       (vc-hg-registered): Replace if with when.
+       (vc-hg-state): Deal with nonexistent files and handle removed files.
+       (vc-hg-dir-state, vc-hg-dired-state-info): New functions.
+       (vc-hg-checkout): Re-enable.
+       (vc-hg-create-repo): Fix typos.
+       (vc-hg-print-log): Fix for multiple files.
+       (vc-hg-workfile-unchanged-p): New function.
 
-       * textmodes/ispell.el (ispell-lazy-highlight): New defcustom.
-       (ispell-highlight-face): Set default face to `isearch' when
-       lazy highlighting is enabled.
-       (ispell-highlight-spelling-error-overlay): Set `ispell-overlay'
-       priority to 1.  Add lazy highlighting.
-       (ispell-highlight-spelling-error-xemacs): Remove obsolete arg
-       from `isearch-dehighlight'.
+       * vc.el: Fix typo.
+       (vc-print-log): Fix call to print-log.
+       (vc-default-comment-history): Likewise.
+       (vc-directory-exclusion-list): Add .hg and .bzr.
+       (vc-diff-internal): Pass a list instead of a file.
 
-2005-03-18  David Ponce  <david@dponce.com>
+       * vc-mcvs.el (vc-mcvs-create-repo): Fix typos.
 
-       * files.el (hack-local-variables): Do a case-insensitive search
-       for End.
+       * vc-bzr.el (vc-bzr-create-repo): New function.
 
-2005-03-18  Juri Linkov  <juri@jurta.org>
+2007-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * isearch.el (lazy-highlight-cleanup) <command>: Rename from
-       `isearch-lazy-highlight-cleanup', add alias to old name and
-       declare obsolete.  Add release numbers to other obsolete vars.
-       (isearch-done, isearch-lazy-highlight-new-loop):
-       Rename `isearch-lazy-highlight-cleanup' to `lazy-highlight-cleanup'.
-       (lazy-highlight-cleanup) <variable>: Doc fix.
-       (isearch-lazy-highlight-update): Rename obsolete
-       `isearch-lazy-highlight-face' to `lazy-highlight-face'.
+       * vc-hooks.el (vc-find-root): Walk up the tree to find an existing
+       `file' from which to start the search.
 
-2005-03-18  Kenichi Handa  <handa@m17n.org>
+2007-07-19  Eric S. Raymond  <esr@snark.thyrsus.com>
 
-       * language/thai-util.el: Fix categorization of Thai characters in
-       thai-category-table.
-       (thai-composition-pattern): Adjust it for the above change.
-       (thai-self-insert-command, thai-compose-syllable): New functions.
-       (thai-compose-region): Use thai-compose-syllable.
-       (thai-compose-string): Likewise.
-       (thai-composition-function): Likewise.
-       (thai-auto-composition): New function.
-       (thai-auto-composition-mode): New minor mode.
+       * vc-cvs.el (vc-cvs-checkin, vc-cvs-diff): Finish transition from
+       having a single file argument to having a list of files as the
+       first argument.
 
-       * language/thai.el: Fix patterns to be registered in
-       composition-function-table.
+2007-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * international/quail.el (quail-input-method): Locally bind
-       inhibit-modification-hooks to t.
+       * files.el (locate-dominating-file): New function.
 
-2005-03-17  Richard M. Stallman  <rms@gnu.org>
+2007-07-18  Michael Albinus  <michael.albinus@gmx.de>
 
-       * progmodes/perl-mode.el (perl-mode-hook): Defvar it.
-       (perl-mode): Use run-mode-hooks.
+       * progmodes/grep.el (grep-host-defaults-alist): New defvar.
+       (grep-compute-defaults): Use it.
 
-       * mail/rmail.el (rmail-movemail-program, rmail-pop-password)
-       (rmail-pop-password-required, rmail-remote-password): Doc fixes.
-       (rmail-preserve-inbox, rmail-probe, rmail-autodetect): Doc fix.
+2007-07-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * mail/sendmail.el (sendmail-send-it): Reenable the code
-       to compute resend-to-address and use it.
+       * uniquify.el: Docstring fixes.
 
-       * tar-mode.el (tar-mode): Turn off undo unconditionally.
+2007-07-18  Eric S. Raymond  <esr@snark.thyrsus.com>
 
-       * image-mode.el: New file.
+       * vc.el (revision-granularity, create-repo): Document new vc
+       backend properties.
+       (vc-rollback): Renamed from vc-cancel-version. Update
+       references. Pass a list instead of a file.
+       (vc-revert): Renamed from vc-revert-buffer. Update references.
+       (vc-delistify, vc-expand-dirs): New functions.
+       (vc-do-command): Rename FILE to FILE-OR-LIST and deal with a list
+       of files instead of a single file.
+       (vc-position-context, vc-resync-window, vc-diff-internal)
+       (vc-print-log): Pass a list instead of a file.
 
-       * image.el (insert-sliced-image): Add autoload cookie.
+       * vc-hooks.el (vc-stay-local-p, vc-backend)
+       (vc-backend-subdirectory-name): Work on a file list, not a single
+       file.
+       (vc-workfile-version): Update docstring.
+       (vc-menu-map): Use vc-rollback instead of vc-cancel-version and
+       vc-revert instead of vc-revert-buffer.
+       (vc-prefix-map): Likewise. Bind vc-update.
 
-       * font-lock.el (font-lock-lines-before): New user option.
-       (font-lock-after-change-function): Obey it.
-
-       * bindings.el (esc-map): Make M-g a prefix.
-       Bind M-g g and M-g M-g to goto-line.
+       * vc-svn.el (vc-svn-revision-granularity, vc-svn-create-repo)
+       (vc-svn-wash-log): New functions.
+       (vc-svn-register, vc-svn-checkin, vc-svn-print-log)
+       (vc-svn-command): Deal with a list of files, not a single file.
 
-       * faces.el (face-id): Doc fix.
-
-2005-03-17  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
-
-       * mail/rmail.el (rmail-unknown-mail-followup-to): New function.
-       (rmail-show-message): Use rmail-unknown-mail-followup-to.
-       (rmail-reply): Recognize Mail-Followup-To and Mail-Reply-To headers.
-
-       * mail/sendmail.el (mail-yank-ignored-headers)
-       (mail-font-lock-keywords, mail-mode-fill-paragraph):
-       Add Mail-Followup-To and Mail-Reply-To headers.
-       (mail-citation-hook): Add autoload cookie.
-       (mail-mode): Doc fix.
-       (mail-mode-map): Bind mail-mail-followup-to and mail-mail-reply-to.
-       (mail-send): Compute Mail-Followup-To and Mail-Reply-To headers.
-       (mail-mode-fill-paragraph): Handle those headers.
-       (mail-mailing-lists): New variable.
-       (mail-mail-reply-to, mail-mail-followup-to): New functions.
+       * vc-rcs.el (vc-rcs-revision-granularity, vc-rcs-create-repo)
+       (vc-rcs-wash-log): New functions.
+       (vc-rcs-register, vc-rcs-checkin, vc-rcs-diff, vc-rcs-print-log):
+       Deal with a list of files, not a single file.
+       (vc-rcs-rollback): Likewise. Rename from vc-rcs-cancel-version.
 
-2005-03-17  Juri Linkov  <juri@jurta.org>
+       * vc-sccs.el (vc-sccs-revision-granularity, vc-sccs-wash-log): New
+       functions.
+       (vc-sccs-register, vc-sccs-checkin, vc-sccs-diff): Deal with a
+       list of files, not a single file.
 
-       * isearch.el (isearch-fallback): Check for `(car previous)'
-       before calling `isearch-other-end-state'.
+       * vc-mcvs.el (vc-mcvs-revision-granularity, vc-mcvs-create-repo):
+       New functions.
+       (vc-mcvs-register, vc-mcvs-checkin, vc-mcvs-print-log)
+       (vc-mcvs-diff): Deal with a list of files, not a single file.
 
-2005-03-17  Kim F. Storm  <storm@cua.dk>
+       * vc-hg.el (vc-hg-revision-granularity, vc-hg-create-repo): New
+       functions.
+       (vc-hg-print-log): Deal with a list of files, not a single file.
+       (vc-hg-diff-tree): New function, replace defalias with the same
+       name.
+       (vc-hg-register, vc-hg-checkin, vc-hg-command): Rename FILE to
+       FILES to denote that it is a file list, not a single file.
 
-       * simple.el (move-beginning-of-line): Move to beginning of buffer
-       line, as well as beginning of screen line.
+       * vc-cvs.el (vc-cvs-create-repo, vc-cvs-wash-log): New functions.
+       (vc-cvs-register, vc-cvs-checkin): Deal with a list of files, not
+       a single file.
+       (vc-cvs-print-log, vc-cvs-command): Rename FILE to FILES to denote
+       that it is a file list, not a single file.
+       (vc-cvs-diff): Likewise. Simplify.
 
-2005-03-16  Glenn Morris  <gmorris@ast.cam.ac.uk>
+       * vc-arch.el (vc-arch-register, vc-arch-checkin, vc-arch-diff):
+       Deal with a list of files, not a single file.
 
-       * calendar/diary-lib.el (mark-diary-entries): Use new optional
-       argument REDRAW rather than calendar-redrawing variable.
-       * calendar/calendar.el (calendar-redrawing): Delete.
-       (redraw-calendar): Do not bind calendar-redrawing.
+       * vc-bzr.el (vc-bzr-register, vc-bzr-command, vc-bzr-checkin)
+       (vc-bzr-print-log): Update FILE parameter name to denote that it
+       is a file list, not a single file.
+       (vc-bzr-diff): Likewise. Use the car of files.
 
-2005-03-16  Matt Hodges  <MPHodges@member.fsf.org>
+2007-07-18  Juanma Barranquero  <lekktu@gmail.com>
 
-       * calendar/diary-lib.el (diary-redraw-calendar): Preserve point in
-       diary-file buffer.
+       * follow.el (follow-mode-hook, follow-mode-off-hook, follow-mode)
+       (follow-delete-other-windows-and-split, follow-recenter)
+       (follow-windows-aligned-p, follow-point-visible-all-windows-p)
+       (follow-redisplay, follow-estimate-first-window-start)
+       (follow-xemacs-scrollbar-support, follow-intercept-process-output):
+       Fix typos in docstrings.
 
-2005-03-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-18  Martin Rudalics  <rudalics@gmx.at>
 
-       * help.el (describe-mode): Allow a :minor-mode-function property to
-       specify a different minor mode toggle function than the variable.
-       * simple.el (auto-fill-function):
-       * subr.el (add-minor-mode): Use it.
+       * add-log.el (change-log-mode): Use fill-nobreak-predicate to
+       avoid that filling introduces lines with a single asterisk.
 
-2005-03-16  Kenichi Handa  <handa@m17n.org>
+       * kmacro.el (kmacro-end-macro): When ignoring empty macro
+       avoid incorrect kmacro-ring-empty-p messages.
+       Reported by Michael Schierl <schierlm@gmx.de>.
 
-       * language/ethio-util.el (sera-being-called-by-w3): New variable.
-       (ethio-sera-to-fidel-ethio): Check also sera-being-called-by-w3.
-       (ethio-fidel-to-sera-buffer): Likewise.
+2007-07-17  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-03-16  Juri Linkov  <juri@jurta.org>
+       * vc.el: Add more info about the vc-registered function.
 
-       * emacs-lisp/find-func.el (find-function-regexp):
-       Add defun-emitting macro `menu-bar-make-toggle'.
+2007-07-17  Michael Albinus  <michael.albinus@gmx.de>
 
-       * isearch.el: Put `isearch-scroll' property to
-       `split-window-horizontally'.
+       * files.el (file-remote-p): Introduce optional parameter
+       IDENTIFICATION.
 
-       * info.el: Update error messages for `debug-ignored-errors'.
-       (Info-isearch-search): Doc fix.
-       (Info-find-node): Move up code to go into info buffer before
-       recording the node to the history.
-       (Info-fontify-node): Fontify titles only if the next line
-       has two or more `*', `=', `-', `.'.
-       Display "go to this node" for empty (match-string 3).
+       * recentf.el (recentf-keep-default-predicate): Adapt call of
+       `file-remote-p'.
 
-2005-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+       * progmodes/grep.el (grep-probe): Use `process-file'.
+       (grep-compute-defaults): Handle variables host specific.
 
-       * term/mac-win.el: Add mouse pointer shape constants.
+       * net/ange-ftp.el (ange-ftp-file-remote-p): Handle optional
+       parameter IDENTIFICATION.
 
-2005-03-15  Kim F. Storm  <storm@cua.dk>
+       * net/tramp.el (tramp-handle-file-remote-p): Handle optional
+       parameter IDENTIFICATION.
+       (tramp-handle-set-file-times): New defun.  Replaces `tramp-touch'.
+       (tramp-file-name-handler-alist, tramp-file-name-for-operation):
+       Add entry for `set-file-times'.
+       (tramp-do-copy-or-rename-file-via-buffer)
+       (tramp-do-copy-or-rename-file-out-of-band): Use `set-file-times'.
+       (tramp-handle-unhandled-file-name-directory): Rewrite.
+       (tramp-convert-file-attributes): Add error handling when inode is
+       extraordinary big.
+       (tramp-get-inode): Change parameter from FILE to VEC.
+       (tramp-handle-start-file-process): Use (current-buffer) if BUFFER
+       is nil.  This is according to the specification.  Goto (point-max)
+       when ready.
+       (tramp-handle-shell-command): Rewrite completely, using
+       `process-file' and `start-file-process'.
+       (tramp-methods, tramp-find-shell)
+       (tramp-open-connection-setup-interactive-shell)
+       (tramp-maybe-open-connection): Guard against $PROMPT_COMMAND shell
+       var.  Reported by Steve Youngs <steve@sxemacs.org>.
+
+       * net/tramp-fish.el (tramp-fish-file-name-handler-alist): Add
+       entry for `set-file-times'.  Rename `start-process' into
+       `start-file-process'.  Remove `call-process' entry.
+       (tramp-fish-handle-set-file-times): New defun.
+       (tramp-fish-handle-executable-find): Use `process-file'.
+       (tramp-fish-handle-process-file): New defun.  Replaces
+       `tramp-fish-handle-call-process'.
+       (tramp-fish-do-copy-or-rename-file-directly): Use
+       `set-file-times'.
+       (tramp-fish-get-file-entries): Change `tramp-get-inode' parameter.
+
+       * net/tramp-smb.el (tramp-smb-handle-file-attributes): Change
+       `tramp-get-inode' parameter.
+
+2007-07-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-bzr.el (vc-bzr-version, vc-bzr-at-least-version)
+       (vc-bzr-post-command-function): Remove.  Version 0.8 is already old
+       nowadays, and by the time Emacs-23 comes out, nobody will even remember
+       it has ever existed.
 
-       * simple.el (move-beginning-of-line): Use vertical-motion.
+2007-07-17  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-03-15  Juri Linkov  <juri@jurta.org>
+       * vc.el: Undo previous change.
 
-       * isearch.el (isearch-error): New variable.
-       (isearch-invalid-regexp, isearch-within-brackets): Remove.
-       (isearch-error-state): Rename from `isearch-invalid-regexp-state'.
-       (isearch-within-brackets-state): Remove.
-       (isearch-case-fold-search-state, isearch-pop-fun-state):
-       Decrease frame index.
-       (isearch-mode, isearch-top-state, isearch-push-state)
-       (isearch-edit-string, isearch-abort, isearch-search-and-update)
-       (isearch-fallback, isearch-message-prefix, isearch-message-suffix)
-       (isearch-search, isearch-lazy-highlight-new-loop):
-       Replace `isearch-invalid-regexp' with `isearch-error'.
-       Remove `isearch-within-brackets'.
-       (isearch-search): Add `search-failed' handler to `condition-case'.
-       (isearch-lazy-highlight-search): Add `condition-case' to catch
-       errors and allow `isearch-lazy-highlight-update' to try
-       highlighting from the beginning of the window.
-       (isearch-repeat): Move up code to set isearch-wrapped to t
-       before calling isearch-wrap-function.
+2007-07-16  Eli Zaretskii  <eliz@gnu.org>
 
-       * info.el (Info-isearch-initial-node): New internal variable.
-       (Info-search): Signal an error in isearch mode when search leaves
-       the initial node.  Signal an error when `bound' is non-nil and
-       nothing was found in the current subfile.
-       (Info-isearch-search): Remove `condition-case'.
-       (Info-isearch-wrap): Don't wrap when search failed during leaving
-       the initial node.  If `Info-isearch-search' is nil, wrap around
-       the current node.
-       (Info-isearch-start): New fun.
-       (Info-mode): Add buffer-local hook `Info-isearch-start' to
-       `isearch-mode-hook'.
+       * makefile.w32-in (clean): Don't delete *~.
 
-2005-03-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+2007-07-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * simple.el (normal-erase-is-backspace): Set default to t if
-       running on Mac.
+       * textmodes/tex-mode.el (tex-verbatim-environments):
+       Add safe-local-variable property.
+       (tex-font-lock-syntactic-keywords): Lookup tex-verbatim-environments
+       when starting font-lock rather than when loading tex-mode.el.
 
-       * term/mac-win.el (function-key-map): Sync with x-win.el.
+       * progmodes/sh-script.el (sh-font-lock-quoted-subshell): Skip over the
+       whole $( rather than just the $.  Rename from sh-quoted-subshell.
+       (sh-font-lock-syntactic-keywords): Adjust call accordingly.
 
-2005-03-15  Kenichi Handa  <handa@m17n.org>
+2007-07-16  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * international/mule-cmds.el (locale-language-names): Modify the
-       format of elements and add more entries.
-       (locale-preferred-coding-systems): Add more entries.
-       (set-locale-environment): Adjust for the change of
-       locale-language-names.
+       * bookmark.el (bookmark-maybe-sort-alist): Don't modify
+       bookmark-alist.  Instead, if not sorting, simply return it.
+       (bookmark-bmenu-list): Call bookmark-maybe-sort-alist
+       for its return value, not for its side effect.
 
-2005-03-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * emacs-lisp/lisp-mode.el (calculate-lisp-indent): In the
+       case of alignment under a constant symbol, find and consider
+       the sexp actually at indentation to be the "last sexp".
 
-       * pcvs.el (smerge-ediff): Remove bogus autoload.
+2007-07-16  Drew Adams  <drew.adams@oracle.com>
 
-2005-03-14  Lute Kamstra  <lute@gnu.org>
+       * mouse.el (mouse-yank-secondary): Better error message if no
+       secondary selection.
 
-       * emacs-lisp/debug.el (debugger-make-xrefs): Docstring fix.
-       Ignore a `*' at the beginning of a line.
+2007-07-16  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * subr.el (macro-declaration-function): Move to emacs-lisp/byte-run.el.
-       * emacs-lisp/byte-run.el (macro-declaration-function): Move from
-       subr.el.
-       (dont-compile, eval-when-compile, eval-and-compile): Use declare
-       to specify indentation.
+       * vc-hooks.el (vc-handled-backends): Move BZR later in the list.
 
-       * generic.el (define-generic-mode): Let generic-mode-list be a
-       list of strings; test membership with equal.
+       * term/xterm.el (xterm-turn-on-modify-other-keys)
+       (xterm-turn-off-modify-other-keys): New functions.
+       (terminal-init-xterm): Enable the modifyOtherKeys feature if the
+       terminal supports it.
 
-2005-03-14  Kim F. Storm  <storm@cua.dk>
+2007-07-16  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * simple.el (next-line, previous-line): Add optional try-vscroll
-       arg to recognize interactive use.  Pass it on to line-move.
-       (line-move): Don't perform auto-window-vscroll when defining or
-       executing keyboard macro to ensure consistent behavior.
+       * bookmark.el (bookmark-show-all-annotations):
+       Make sure each inserted annotation ends with newline.
 
-2005-03-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-15  Richard Stallman  <rms@gnu.org>
 
-       * pcvs-util.el (cvs-string->strings): Strip trailing whitespace.
+       * kmacro.el (kmacro-bind-to-key): Avoid comparisons on function keys.
 
-2005-03-13  Lute Kamstra  <lute@gnu.org>
+       * tutorial.el (tutorial--find-changed-keys):
+       Handle C-x specially like ESC.
 
-       * emacs-lisp/debug.el (debug): Set debug-on-exit before calling
-       debugger-setup-buffer so that backtrace marks the frames set to
-       debug-on-exit and we don't have to do it manually.  Set an extra
-       debug-on-exit for macro's.
-       (debugger-setup-buffer): Don't mark the top frame manually.
+2007-07-15  Aaron Hawley  <aaronh@garden.org>
 
-2005-03-12  Lute Kamstra  <lute@gnu.org>
+       * tar-mode.el (tar-get-descriptor): No error for zero-length file.
 
-       * emacs-lisp/byte-run.el: Replace lisp-indent-hook with
-       lisp-indent-function throughout.
-       (with-no-warnings): Set lisp-indent-function property.
+2007-07-15  Juri Linkov  <juri@jurta.org>
 
-2005-03-12  Thien-Thi Nguyen  <ttn@gnu.org>
+       * delsel.el (delete-selection-pre-hook):
+       * emulation/cua-base.el (cua-paste): Before a yank command,
+       check also whether last-command is one of mouse-save-then-kill,
+       mouse-secondary-save-then-kill, mouse-set-region, mouse-drag-region.
 
-       * progmodes/dcl-mode.el (dcl-mode-syntax-table):
-       Add entry for backslash.
+2007-07-15  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-03-12  Juri Linkov  <juri@jurta.org>
+       * recentf.el (recentf-keep-default-predicate): New defun.
+       (recentf-keep): Use it as initial value.
 
-       * info.el (Info-search): Four fixes for backward search.
+2007-07-15  Karl Fogel  <kfogel@red-bean.com>
 
-2005-03-11  Jay Belanger  <belanger@truman.edu>
+       * bookmark.el: Revert 2007-07-13T18:16:17Z!kfogel@red-bean.com,
+       thus restoring bookmark bindings to three slots under C-x r.  See
+       http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00705.html.
 
-       * calc/calc.el (calc-language-alist): New variable.
-       * calc/calc-embed.el (calc-embedded-language-alist): Remove.
-       (calc-embedded-find-modes): Use calc-language-alist instead of
-       calc-embedded-language-alist.
+2007-07-15  Jeff Miller  <jmiller@cablespeed.com>  (tiny change)
 
-2005-03-11  Glenn Morris  <gmorris@ast.cam.ac.uk>
+       * calendar/calendar.el (calendar-goto-bahai-date): Autoload it.
 
-       * calendar/calendar.el (calendar-redrawing): New internal
-       variable.
-       (redraw-calendar): Remove bogus save-excursion from previous
-       change.  Bind calendar-redrawing to t for mark-diary-entries.
-       * calendar/diary-lib.el (mark-diary-entries): No need to redraw
-       calendar if that is why we were called.
+2007-07-15  Jason Rumney  <jasonr@gnu.org>
 
-2005-03-11  Kenichi Handa  <handa@m17n.org>
+       * w32-fns.el (set-default-process-coding-system): Use dos line ends
+       for input to cmdproxy on all versions of Windows.
+       Use dos line ends for input to plink.
 
-       * international/mule.el (make-coding-system): Set property
-       coding-system-define-form to nil.
-       (define-coding-system-alias): Likewise.
+       * comint.el (comint-simple-send): Concat newline before sending.
+       (comint-password-prompt-regexp): Recognize plink's passphrase prompt.
 
-2005-03-11  Kenichi Handa  <handa@m17n.org>
+2007-07-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       These changes are suggested by Dave Love <fx@gnu.org>.
+       * emacs-lisp/autoload.el (generated-autoload-file): Autoload the
+       safe-local-variable setting.
 
-       * textmodes/fill.el: Change encoding to iso-2022-7bit and add
-       coding: tag.
-       (adaptive-fill-regexp): Add more bullets.
-       (fill-french-nobreak-p): Add Latin-1 and Latin-9 guillemets in
-       regexps.
+2007-07-14  David Kastrup  <dak@gnu.org>
 
-2005-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * emacs-lisp/advice.el (defadvice): Doc fix.
 
-       * help.el (describe-mode): Properly handle non-trivial lighters.
-       Don't ignore minor modes that are not listed in minor-mode-list.
+2007-07-14  Juanma Barranquero  <lekktu@gmail.com>
 
-       * tooltip.el (tooltip-mode): Don't complain that you can't turn the
-       feature ON when the user requests to turn it OFF.
+       * subr.el (when, unless): Doc fix.
 
-2005-03-10  Lute Kamstra  <lute@gnu.org>
+2007-07-13  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * emacs-lisp/debug.el (debug-entry-code): Delete it.
-       (implement-debug-on-entry): New function to replace debug-entry-code.
-       (debug-on-entry-1): Use implement-debug-on-entry.  Delete the
-       second argument as the 2005-03-07 change makes it obsolete.
-       (debug-on-entry, cancel-debug-on-entry): Update call to
-       debug-on-entry-1.
-       (debug, debugger-setup-buffer): Comment update.
-       (debugger-frame-number): Update to work with implement-debug-on-entry.
+       * replace.el (match): Use yellow1 instead of yellow.
 
-2005-03-10  Jay Belanger  <belanger@truman.edu>
+       * progmodes/gdb-ui.el (breakpoint-enabled): Use red1 instead of
+       red.
 
-       * calc/calc-embed.el (math-ms-args): Declare it.
-       (calc-embedded-eval-expr, calc-embedded-eval-get-var): Use variable
-       math-ms-args.
-       (calc-embedded-subst): Use math-multi-subst-rec to substitute
-       variables.
+       * pcvs-info.el (cvs-unknown): Likewise.
 
-2005-03-10  Nick Roberts  <nickrob@snap.net.nz>
+2007-07-13  Eli Zaretskii  <eliz@gnu.org>
 
-       * progmodes/gdb-ui.el (gdb-var-create-handler, gdb-get-location):
-       Use message-box.
+       * makefile.w32-in (install-lisp-SH, install-lisp-CMD): New targets.
+       (install): Use them to copy all *.el files before *.elc.
 
-       * tooltip.el (tooltip-mode): Use define-minor-mode and simplify.
-       (tooltip-activate-mouse-motions-if-enabled): Use dolist.
-       (tooltip-gud-tips): Simplify.
-       (tooltip-gud-tips-p): Remove superfluous :set.
-       (tooltip-gud-modes): Add fortran-mode.
-       (gdb-tooltip-print): Remove newline for tooltip-use-echo-area.
+2007-07-13  Drew Adams  <drew.adams@oracle.com>
 
-       * bindings.el (mode-line-mode-menu): Add tooltip-mode to mode-line.
+       * bookmark.el (bookmark-jump-other-window): New function.
+       (bookmark-map): Bind it to "o".
 
-2005-03-09  Kim F. Storm  <storm@cua.dk>
+       http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00633.html
+       and its thread contains discussion about this change.
+       The original patch was slightly tweaked by Karl Fogel
+       <kfogel@red-bean.com> before committing.
 
-       * play/animate.el (animate-place-char): Use forward-line instead
-       of next-line to improve performance.
+2007-07-13  Karl Fogel  <kfogel@red-bean.com>
 
-2005-03-09  Simon Josefsson  <jas@extundo.com>
+       * bookmark.el: Shorten some comments to fit within 80 lines.
 
-       * net/browse-url.el (browse-url-default-browser): Doc fix.
+2007-07-13  Karl Fogel  <kfogel@red-bean.com>
 
-2005-03-09  Miles Bader  <miles@gnu.org>
+       * bookmark.el: Don't define bookmark keys under the "C-xr" map;
+       instead, make "C-xp" a prefix for bookmark-map.  Patch by Drew
+       Adams <drew.adams@oracle.com>, mildly tweaked by me.  See
+       http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00633.html.
 
-       * emacs-lisp/bytecomp.el (byte-compile-variable-ref)
-       (byte-compile-obsolete): Change " since VER" to " (as of Emacs VER)".
+2007-07-13  Carsten Dominik  <dominik@science.uva.nl>
 
-2005-03-09  Kenichi Handa  <handa@m17n.org>
+       * textmodes/org.el: Bug fixes.
+       (org-end-of-line): Move to end of line if in headline without tags.
 
-       * international/latin-1.el: Set case and syntax for 255 only if
-       set-case-syntax-set-multibyte is nil.
+2007-07-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * textmodes/ispell.el (ispell-insert-word): New function.
-       (ispell-word): Use ispell-insert-word to insert a new word.
-       (ispell-process-line): Likewise.
-       (ispell-complete-word): Likewise.
+       * vc-hooks.el: Remove spurious * in docstrings.
+       (vc-handled-backends): Add BZR.
 
-2005-03-09  Glenn Morris  <gmorris@ast.cam.ac.uk>
+       * vc-hooks.el (vc-find-file-hook): Use with-demoted-errors.
 
-       * calendar/calendar.el (redraw-calendar): Preserve point.
-       Reported by Matt Hodges <MPHodges@member.fsf.org>.
-       (calendar-week-start-day): Move after definition of
-       redraw-calendar.  Delete buffer test, since redraw-calendar has
-       that now.
+2007-07-12  Davis Herring  <herring@lanl.gov>
 
-       * calendar/diary-lib.el (mark-diary-entries): Only call
-       redraw-calendar in the first of any recursive calls.
-       Reported by Alan Shutko <ats@acm.org>.
+       * desktop.el (desktop-buffer-info, desktop-save):
+       Use `desktop-dirname' instead of `dirname'.
 
-2005-03-08  Juri Linkov  <juri@jurta.org>
+2007-07-12  Paul Pogonyshev  <pogonyshev@gmx.net>
 
-       * textmodes/sgml-mode.el (sgml-tag, html-tag-alist)
-       (html-horizontal-rule, html-line, html-image, html-checkboxes)
-       (html-radio-buttons): Add a space before the trailing `/>' where
-       sgml-xml-mode is non-nil.
-       (sgml-delete-tag): Check if the tag ends with `/>' to not delete
-       the subsequent tag of the empty XML tag.
-       (html-href-anchor): Don't set initial input to "http:".
-       (html-image): Ask for the image URL and set point inside alt="".
-       (html-name-anchor): Duplicate the name in the `id' attribute when
-       sgml-xml-mode is non-nil.
-       (html-paragraph): Remove \n before <p>.
-       (html-checkboxes, html-radio-buttons): Insert `checked="checked"'
-       instead of `checked' when sgml-xml-mode is non-nil.
+       * progmodes/which-func.el (which-func-modes): Add `python-mode'.
 
-       * facemenu.el (list-colors-print): Print #RRGGBB in default face.
-       Remove 1 space before #RRGGBB to not truncate it on terminal
-       windows w/o fringes.  Remove 1 space between bg and fg examples
-       to get more space.
-       (list-colors-duplicates): Replace `and' with `if' for `boundp' to
-       avoid byte-compile warnings.
+       * progmodes/python.el (python-which-func-length-limit): New var.
+       (python-which-func): New function.
+       (python-current-defun): Add optional `length-limit' and try to fit
+       computed function name to that length.
+       (python-mode): Hook `python-which-func' up.
 
-       * image-file.el (image-file-handler): Put `safe-magic' property to
-       `image-file-handler'.
+2007-07-12  Sean O'Rourke  <sorourke@cs.ucsd.edu>  (tiny change)
 
-       * info.el (Info-isearch-search): Emulate word search in
-       isearching through multiple Info nodes with Info-search.
-       (Info-isearch-wrap): Allow isearch-word.
+       * pcomplete.el (pcomplete-entries): Obey pcomplete-ignore-case.
 
-2005-03-08  Lute Kamstra  <lute@gnu.org>
+       * comint.el (comint-dynamic-complete-as-filename):
+       Use read-file-name-completion-ignore-case.
 
-       * emacs-lisp/debug.el (debugger-step-through): Make sure that
-       stepping into the debugger's code is not possible.
-       (debugger-jumping-flag): Docstring update.
+2007-07-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-03-08  Jay Belanger  <belanger@truman.edu>
+       * comint.el (comint-dynamic-list-filename-completions):
+       Use read-file-name-completion-ignore-case.
 
-       * calc/calc-embed.el (calc-do-embedded): Reset mode line when
-       embedded mode begins.
-       (calc-embedded-language-alist): New variable.
-       (calc-embedded-find-modes): Use calc-embedded-language-alist to
-       set default language mode.
+       * vc-cvs.el: Require CL.
+       (vc-cvs-revision-table, vc-cvs-revision-completion-table):
+       New functions to provide completion of revision names.
 
-2005-03-08  Kenichi Handa  <handa@m17n.org>
+       * vc-cvs.el (vc-functions): Clear up the cache when reloading the file.
+       (vc-cvs-annotate-first-line-re): New const.
+       (vc-cvs-annotate-process-filter): New fun.
+       (vc-cvs-annotate-command): Use them and run the command asynchronously.
 
-       * international/ccl.el (define-ccl-program): Fix docstring about
-       extra 256 bytes assured for the output buffer.
+2007-07-12  Paul Pogonyshev  <pogonyshev@gmx.net>
 
-       * international/utf-16.el (ccl-encode-mule-utf-16le-with-signature):
-       Fix BUFFER_MAGNIFICATION to 2.
-       (ccl-encode-mule-utf-16be-with-signature): Likewise.
+       * emacs-lisp/eldoc.el (eldoc-last-data): Revise documentation.
+       (eldoc-print-current-symbol-info): Adjust for changed helper
+       function signatures.
+       (eldoc-get-fnsym-args-string): Add `args' argument.  Use new
+       `eldoc-highlight-function-argument'.
+       (eldoc-highlight-function-argument): New function.
+       (eldoc-get-var-docstring): Format documentation with
+       `font-lock-variable-name-face'.
+       (eldoc-docstring-format-sym-doc): Add `face' argument and apply it
+       where suited.
+       (eldoc-fnsym-in-current-sexp): Return a list with argument index.
+       (eldoc-beginning-of-sexp): Return number of skipped sexps.
 
-2005-03-07  Karl Chen  <quarl@cs.berkeley.edu>
+2007-07-11  Michael Albinus  <michael.albinus@gmx.de>
 
-       * align.el (align-rules-list): Added an alignment rule for CSS
-       declarations (applies to css-mode and html-mode buffers).
+       * progmodes/compile.el (compilation-start): `start-process' must
+       still be redefined when calling `start-process-shell-command'.
 
-2005-03-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * progmodes/gud.el (gud-file-name): When `default-directory' is a
+       remote file name, prepend its remote part to the filename.
+       (gud-common-init): When `default-directory' is a remote file name,
+       make the filename relative to it.
+       Based on a patch by Nick Roberts <nickrob@snap.net.nz>.
 
-       * emacs-lisp/debug.el (debug-on-entry-1): Fix handling of macros.
+2007-07-11  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-03-07  Kim F. Storm  <storm@cua.dk>
+       * vc-hooks.el (vc-default-mode-line-string): Add a mouse face,
+       mouse binding and a tooltip.
 
-       * simple.el (move-beginning-of-line): New command.
+2007-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * bindings.el (global-map): Bind C-a to move-beginning-of-line.
+       * menu-bar.el (vc-menu-map): New defalias.
 
-       * reveal.el (reveal-mode-map): Bind C-a to beginning-of-line.
+2007-07-10  Richard Stallman  <rms@gnu.org>
 
-       * emulation/cua-base.el: Put CUA move property on move-end-of-line
-       and move-beginning-of-line.
+       * emacs-lisp/lisp-mode.el (eval-defun):
+       Explain special handling of `defface'.
 
-       * apropos.el (apropos-print): Omit command from M-x ... RET.
+2007-07-10  Jim Meyering  <jim@meyering.net>  (tiny change)
 
-2005-03-07  Nick Roberts  <nickrob@snap.net.nz>
+       * emacs-lisp/copyright.el (copyright-current-gpl-version): Set to 3.
 
-       * progmodes/gdb-ui.el (gdb-var-create-handler): Handle just MI case.
-       (gdb-send, gdb-send-item): Log items sent from gdb-send too.
+       * autoinsert.el (auto-insert-alist): s/2/3/ in the generated comment.
 
-2005-03-06  Richard M. Stallman  <rms@gnu.org>
+2007-07-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * bindings.el (esc-map): Bind M-g to goto-line.
+       * emacs-lisp/cl.el: Load cl-loaddefs.el quietly.
 
-       * facemenu.el (global-map): Bind M-o, not M-g.
+       * vc-arch.el (vc-arch-complete): Remove.
+       (vc-arch-revision-completion-table): Use complete-with-action.
 
-2005-03-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+       * subr.el (condition-case-no-debug, with-demoted-errors): New macros.
+       (complete-with-action): New function.
+       (dynamic-completion-table): Use it.
 
-       * menu-bar.el (menu-bar-file-menu): Add the same :enable to
-       "Open Directory" as for "Open File".
+2007-07-10  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-03-06  Chong Yidong  <cyd@stupidchicken.com>
+       * comint.el (make-comint, make-comint-in-buffer)
+       (comint-exec-1): Replace `start-process' by `start-file-process'.
 
-       * simple.el (activate-mark-hook, deactivate-mark-hook): Add defvars.
-       (push-mark-command): Run activate-mark-hook.
+       * progmodes/compile.el (compilation-start): Revert redefining
+       `start-process'.
 
-2005-03-06  Richard M. Stallman  <rms@gnu.org>
+2007-07-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * help-mode.el (help-mode-finish): Don't alter the element
-       in view-return-to-alist if there already is one.
+       * emacs-lisp/autoload.el (autoload-generate-file-autoloads): Be careful
+       with EOLs when generating MD5 checksums.
 
-       * jit-lock.el (jit-lock-stealth-fontify): When calling sit-for,
-       make sure the current buffer is the expected one.
+       * follow.el: Don't change the global map from the follow-mode-map
+       defvar, but from the toplevel.  Use easy-menu to unify the Emacs and
+       XEmacs code.
+       (turn-on-follow-mode, turn-off-follow-mode): Remove interactive spec
+       since `follow-mode' should be used instead for that.
+
+       * emacs-lisp/easymenu.el (easy-menu-binding): New function.
+       (easy-menu-do-define): Use it.
+       (easy-menu-do-add-item): Inline into easy-menu-add-item and then remove.
+
+       * progmodes/compile.el (compilation-auto-jump-to-first-error)
+       (compilation-auto-jump-to-next): New vars.
+       (compilation-auto-jump): New function.
+       (compilation-error-properties): Use them to jump to first error.
+       (compilation-start): Set the var if requested.
+
+       * emacs-lisp/autoload.el (update-directory-autoloads): Remove
+       duplicates without also removing entries from other directories.
+
+2007-07-10  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-day-view, org-agenda-week-view):
+       Remember span as default.
+       (org-columns-edit-value): Rename from `org-column-edit'.
+       (org-columns-display-here-title): Rename from
+       `org-overlay-columns-title'.
+       (org-columns-remove-overlays): Rename from org-remove-column-overlays.
+       (org-columns-get-autowidth-alist): Rename from
+       `org-get-columns-autowidth-alist'.
+       (org-columns-display-here): Rename from `org-overlay-columns'.
+       (org-columns-new-overlay): Rename from `org-new-column-overlay'.
+       (org-columns-quit): Rename from `org-column-quit'.
+       (org-columns-show-value): Rename from `org-column-show-value'.
+       (org-columns-content, org-columns-widen)
+       (org-columns-next-allowed-value)
+       (org-columns-edit-allowed, org-columns-store-format)
+       (org-columns-uncompile-format, org-columns-redo)
+       (org-columns-edit-attributes, org-delete-property)
+       (org-set-property, org-columns-update)
+       (org-columns-compute, org-columns-eval)
+       (org-columns-not-in-agenda, org-columns-compute-all)
+       (org-property-next-allowed-value)
+       (org-columns-compile-format)
+       (org-fill-paragraph-experimental)
+       (org-string-to-number, org-property-action)
+       (org-columns-move-left, org-columns-new)
+       (org-column-number-to-string)
+       (org-property-previous-allowed-value)
+       (org-at-property-p, org-columns-delete)
+       (org-columns-previous-allowed-value)
+       (org-columns-move-right, org-columns-narrow)
+       (org-property-get-allowed-values)
+       (org-verify-version, org-column-string-to-number)
+       (org-delete-property-globally): New functions.
+       (org-columns-current-fmt): Rename from `org-current-columns-fmt'.
+       (org-columns-overlays): Rename from `org-column-overlays'.
+       (org-columns-map): Rename from `org-column-map'.
+       (org-columns-current-maxwidths): Rename from
+       `org-current-columns-maxwidths'.
+       (org-columns-begin-marker, org-columns-current-fmt-compiled)
+       (org-previous-header-line-format)
+       (org-columns-inhibit-recalculation)
+       (org-columns-top-level-marker): New variables.
+       (org-columns-default-format): Rename from `org-default-columns-format'.
+       (org-property-re): New constant.
+
+2007-07-10  Guanpeng Xu  <herberteuler@hotmail.com>
+
+       * subr.el (looking-at-p, string-match-p): New functions.
+
+2007-07-09  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * textmodes/tex-mode.el (tex-fontify-script)
+       (tex-font-script-display): New variables to make display of
+       superscripts and subscripts customizable.
+       (tex-font-lock-suscript, tex-font-lock-match-suscript): Use them.
 
-       * novice.el (disabled-command-function): Output in *Disabled Command*.
-       Explicitly ignore non-keyboard events, and explicitly handle C-g.
+2007-07-09  Richard Stallman  <rms@gnu.org>
 
-       * textmodes/flyspell.el (flyspell-large-region):
-       Pass args differently for aspell.
+       * isearch.el (isearch-edit-string): Call to isearch-push-state
+       after the search.
 
-       * files.el (mode-require-final-newline): Doc fix.
+2007-07-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-2005-03-03  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
+       * window.el (fit-window-to-buffer): Remove setting of window-min-height
+       to 1 as enlarge-window uses the value to resize/shrink windows other
+       than WINDOW if needed.
 
-       * progmodes/which-func.el (which-function):
-       Specify NOERROR when calling imenu--make-index-alist.
+2007-07-08  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-2005-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * cus-start.el (file-coding-system-alist): Fix custom type.
 
-       * simple.el (normal-erase-is-backspace): Define default value.
+2007-07-08  Chong Yidong  <cyd@stupidchicken.com>
 
-       * custom.el (custom-theme-set-variables): Remove unused var
-       `immediate'.
-       (custom-reevaluate-setting): Simple function to handle variables
-       that are defined before their default value can really be
-       computed.
+       * longlines.el (longlines-wrap-region): Avoid marking buffer as
+       modified.
+       (longlines-auto-wrap, longlines-window-change-function):
+       Remove unnecessary calls to set-buffer-modified-p.
 
-       * startup.el (command-line): Use it for temporary-file-directory,
-       small-emporary-file-directory, auto-save-file-name-transforms,
-       blink-cursor-mode, and normal-erase-is-backspace.
+2007-07-08  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * font-lock.el (font-lock-fontify-keywords-region): Ensure forward
-       progress, even with buggy anchored keywords.
+       * cus-start.el (file-coding-system-alist): Fix custom type.
 
-2005-03-05  Luc Teirlinck  <teirllm@auburn.edu>
+2007-07-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * simple.el (goto-line): Remove unbalanced final parenthesis.
+       * vc-cvs.el (vc-cvs-revert): Use vc-default-revert.
+       (vc-cvs-checkout): Remove last arg now unused; simplify.
 
-2005-03-05  Richard M. Stallman  <rms@gnu.org>
+2007-07-08  Michael Albinus  <michael.albinus@gmx.de>
 
-       * simple.el (goto-line): Use a number at point as the default.
-       With C-u as arg, switch buffers.
+       * files.el (file-remote-p): Introduce optional parameter CONNECTED.
 
-2005-03-05  Juri Linkov  <juri@jurta.org>
+       * net/tramp.el:
+       * net/tramp-ftp.el:
+       * net/tramp-smb.el:
+       * net/tramp-uu.el:
+       * net/trampver.el: Migrate to Tramp 2.1.
 
-       * frame.el (blink-cursor-mode): Replace `emacs-quick-startup'
-       with `no-blinking-cursor'.
+       * net/tramp-cache.el:
+       * net/tramp-fish.el:
+       * net/tramp-gw.el: New Tramp packages.
 
-       * startup.el (no-blinking-cursor): New defvar.
-       (command-line): Add `--no-blinking-cursor' to longopts.
-       Set `no-blinking-cursor' to t for command line arguments
-       -Q, -nbc, --no-blinking-cursor.  Replace `emacs-quick-startup'
-       with `no-blinking-cursor' in the condition for calling
-       `blink-cursor-mode'.
+       * net/tramp-util.el:
+       * net/tramp-vc.el: Removed.
 
-2005-03-04  Luc Teirlinck  <teirllm@auburn.edu>
+       * net/ange-ftp.el: Add ange-ftp property to 'start-file-process.
+       (ange-ftp-file-remote-p): Handle optional parameter CONNECTED.
 
-       * menu-bar.el (menu-bar-make-mm-toggle): Doc fix.
-       (menu-bar-options-save): Add blink-cursor-mode.
-       (menu-bar-options-menu): Add blink-cursor-mode.
+       * net/rcompile.el (remote-compile): Handle Tramp 2.1 arguments.
 
-2005-03-04  Ulf Jasper  <ulf.jasper@web.de>
+       * progmodes/compile.el (compilation-start): Redefine
+       `start-process' temporarily when `default-directory' is remote.
+       Remove case of synchronous compilation, this won't happen ever.
+       (compilation-setup): Make local variable `comint-file-name-prefix'
+       for remote compilation.
 
-       * calendar/icalendar.el (icalendar-version): Increase to 0.11.
-       (icalendar-export-file, icalendar-export-region)
-       (icalendar-import-file, icalendar-import-buffer): Add autoload cookies.
-       (icalendar--convert-ical-to-diary): Fix problem with DURATION.
+2007-07-08  Martin Rudalics  <rudalics@gmx.at>
 
-2005-03-04  Lute Kamstra  <lute@gnu.org>
+       * novice.el (disabled-command-function): Fit window to buffer to
+       make last line visible.
+       Reported by Stephen Berman <Stephen.Berman at gmx.net>.
 
-       * emacs-lisp/debug.el (debugger-step-after-exit): Make it a defvar.
-       (debug-function-list): Ditto.
+       * mouse.el (mouse-drag-track): Reset transient-mark-mode to nil
+       when handling the terminating event.
 
-2005-03-04  Robert J. Chassell  <bob@rattlesnake.com>
+2007-07-07  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * textmodes/texinfmt.el (texinfo-append-refill):
-       Redefine the types of line to which @refill
-       is not appended by replacing a search for `@refill\\|@bye' with
-       `@refill\\|^[ \t]*@'.  The intent is to solve both the `@end
-       itemize@refill' bug and the unfilled long lines bug.
-       (texinfmt-version): Update number and date.
+       * calc/calc.el (math-read-number-simple): Remove leading 0s.
+       (math-bignum-digit-length): Change to optimal value.
 
-2005-03-04  Reiner Steib  <Reiner.Steib@gmx.de>
+       * calc/calc-bin.el (math-bignum-logb-digit-size)
+       (math-bignum-digit-power-of-two): Evaluate when compiled.
 
-       * international/code-pages.el (windows-1250, windows-125[2-8])
-       (iso-8859-10, -13, -16, georgian-ps): Add autoload cookies.
+       * calc/calc-comb.el (math-small-factorial-table)
+       (math-init-random-base, math-prime-test): Remove unnecessary calls
+       to `math-read-number-simple'.
 
-2005-03-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * calc/calc-ext.el (math-approx-pi, math-approx-sqrt-e)
+       (math-approx-gamma-const): Add docstrings.
 
-       * frame.el (blink-cursor-mode): `emacs-quick-startup' may not be
-       bound yet.
+       * calc/calc-forms.el (math-julian-date-beginning)
+       (math-julian-date-beginning-int): New constants.
+       (math-format-date-part, math-parse-standard-date, calcFunc-julian):
+       Use the new constants.
 
-2005-03-02  Romain Francoise  <romain@orebokech.com>
+       * calc/calc-funcs.el (math-gammap1-raw): Add docstring.
 
-       * ibuf-ext.el (ibuffer-filter-disable): Move back to the current
-       buffer after removing limits.
-       (ibuffer-pop-filter): Ditto.
-       Update copyright.
+       * calc/calc-math.el (math-approx-ln-10, math-approx-ln-2):
+       Add docstrings.
 
-2005-03-02  Miles Bader  <miles@gnu.org>
+2007-07-07  Tom Tromey  <tromey@redhat.com>
 
-       * button.el (make-text-button): If the user doesn't specify a
-       type, use the default.  Rewrite to use `add-text-properties' and
-       plist functions.
+       * vc.el (vc-annotate): Jump to line and output message only after the
+       process is really all done.
 
-2005-03-01  Lute Kamstra  <lute@gnu.org>
+2007-07-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * emacs-lisp/debug.el (inhibit-debug-on-entry): Add docstring.
-       (debugger-jumping-flag): New var.
-       (debug-entry-code): Use it.
-       (debugger-jump): Use debugger-jumping-flag and add
-       debugger-reenable to post-command-hook.
-       (debugger-reenable): Use debugger-jumping-flag and remove itself
-       from post-command-hook.
-       (debug, debug-on-entry, cancel-debug-on-entry): Remove call to
-       debugger-reenable.
+       * vc.el (vc-exec-after): Don't move point from the sentinel.
+       Forcefully read all the remaining text in the pipe upon process exit.
+       (vc-annotate-display-autoscale, vc-annotate-lines):
+       Don't stop at the first unrecognized line.
+       (vc-annotate-display-select): Run autoscale after the process is done
+       since it depends on the whole result.
 
-2005-03-01  Robert J. Chassell  <bob@rattlesnake.com>
+2007-07-07  Eli Zaretskii  <eliz@gnu.org>
 
-       * textmodes/texinfmt.el (texinfo-no-refill-regexp): Comment out
-       inclusion of "itemize\\|", which may be unnecessary, is certainly
-       inelegant, and stops refilling in itemize lists when formatting
-       Japanese Texinfo files to Info.
-       Update copyright to 2005.
+       * term/w32-win.el (menu-bar-open): New function.
+       Bind <f10> to it.
 
-2005-03-01  Nick Roberts  <nickrob@snap.net.nz>
+2007-07-07  Michael Albinus  <michael.albinus@gmx.de>
 
-       * progmodes/gdb-ui.el (gdb-get-location): Use a warning instead
-       of an error if GDB can't find the source file.
+       * simple.el (start-file-process): New defun.
 
-2005-03-01  Glenn Morris  <gmorris@ast.cam.ac.uk>
+2007-07-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calendar/calendar.el (redraw-calendar): Work from any buffer,
-       not just the calendar.
+       * files.el (find-file-confirm-nonexistent-file): Rename from
+       find-file-confirm-inexistent-file.  Update users.
 
-       * calendar/diary-lib.el (mark-diary-entries): Remove any old marks
-       first.
-       (diary-redraw-calendar): New function.
-       (make-diary-entry): Add diary-redraw-calendar to local
-       write-contents-functions.  Turn off selective display before
-       inserting in diary.
+       * emacs-lisp/autoload.el (autoload-find-destination): Understand a new
+       format of autoload block where the file's time-stamp is replaced by its
+       MD5 checksum.
+       (autoload-generate-file-autoloads): Use MD5 checksum instead of
+       time-stamp for secondary autoloads files.
+       (update-directory-autoloads): Remove duplicate entries.
+       Use time-less-p for time-stamps, as done in autoload-find-destination.
 
-2005-03-01  Kim F. Storm  <storm@cua.dk>
+2007-07-07  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * emacs-lisp/copyright.el (copyright-fix-years): New command.
+       * calc/calc.el (math-read-number): Replace number by variable.
+       (math-read-number-simple): Properly parse small integers.
 
-2005-03-01  Lute Kamstra  <lute@gnu.org>
+2007-07-07  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * emacs-lisp/debug.el (debug-on-entry-1): Reimplement to make sure
-       that debug-entry-code can be safely removed from a function while
-       this code is being evaluated.  Revert the 2005-02-27 change as the
-       new implementation no longer requires it.  Make sure that a
-       function body containing just a string is not mistaken for a docstring.
-       (debug): Skip one more frame in case of debug on entry.
-       (debugger-setup-buffer): Delete one more frame line in case of
-       debug on entry.
-       (debugger-frame-number): Update to use the new text introduced by
-       the 1999-11-03 change.  Skip one more frame in case of debug on entry.
+       * vc.el: Fix doc for the checkout function.
 
-2005-02-28  Kim F. Storm  <storm@cua.dk>
+2007-07-06  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * double.el (double-translate-key): Call force-window-update after
-       read-event to avoid crash in redisplay.
+       * vc-hg.el (vc-hg-root): New function.
+       (vc-hg-registered): Use it.
+       (vc-hg-diff-tree): New defalias.
+       (vc-hg-responsible-p): Likewise.
+       (vc-hg-checkout): Comment out, not needed.
+       (vc-hg-delete-file, vc-hg-rename-file, vc-hg-could-register)
+       (vc-hg-find-version, vc-hg-next-version): New functions.
 
-2005-02-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-06  Andreas Schwab  <schwab@suse.de>
 
-       * emacs-lisp/debug.el (inhibit-debug-on-entry): New var.
-       (debug): Use it.  Move the inhibit-trace earlier.
-       (debug-entry-code): New const.
-       (debug-on-entry-1): Use it.
+       * emacs-lisp/lisp-mode.el (eval-last-sexp): Avoid introducing any
+       dynamic bindings around the evaluation of the expression.
+       Reported by Jay Belanger <jay.p.belanger@gmail.com>.
 
-2005-02-28  Chong Yidong  <cyd@stupidchicken.com>
+2007-07-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * international/utf-16.el (ccl-encode-mule-utf-16le):
-       Fix BUFFER_MAGNIFICATION to 2.
-       (ccl-encode-mule-utf-16be): Likewise.
+       * autorevert.el (auto-revert-tail-handler): Use inhibit-read-only.
+       Run before-revert-hook.  Suggested by Denis Bueno <denbuen@sandia.gov>.
+       Use run-hooks rather than run-mode-hooks.
 
-2005-02-28  Kenichi Handa  <handa@m17n.org>
+2007-07-05  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * international/utf-16.el (ccl-encode-mule-utf-16le-with-signature):
-       Fix BUFFER_MAGNIFICATION to 4.
-       (ccl-encode-mule-utf-16be-with-signature): Likewise.
+       * calc/calc-comb.el (math-random-digit): Rename to
+       `math-random-three-digit-number'.
+       (math-random-digits): Don't depend on representation of integer.
 
-2005-02-28  Nick Roberts  <nickrob@snap.net.nz>
+       * calc/calc-bin.el (math-bignum-logb-digit-size)
+       (math-bignum-digit-power-of-two): New constants.
+       (math-and-bignum, math-or-bignum, math-xor-bignum, math-diff-bignum)
+       (math-not-bignum, math-clip-bignum): Use the constants
+       `math-bignum-digit-power-of-two' and `math-bignum-logb-digit-size'
+       instead of their values.
+       (math-clip): Use math-small-integer-size instead of its value.
 
-       * speedbar.el (speedbar-update-flag): Doc fix.
-       (speedbar-show-info-under-mouse): Give set-mouse-position the right
-       argument.
+       * calc/calc.el (math-add-bignum): Replace number by constant.
 
-2005-02-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-07-05  Chong Yidong  <cyd@stupidchicken.com>
 
-       * reveal.el (reveal-post-command): Don't try to reveal overlays which
-       have a non-nil `invisible' property but are actually visible.
+       * wid-edit.el (widget-documentation-string-value-create):
+       Insert indentation spaces.
 
-       * progmodes/perl-mode.el (perl-imenu-generic-expression): Add entries
-       for perldoc sections.
-       (perl-outline-regexp, perl-outline-level): New var and function.
-       (perl-mode): Use them.
+2007-07-05  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-02-27  Glenn Morris  <gmorris@ast.cam.ac.uk>
+       * emacs-lisp/byte-opt.el: Revert last change.
 
-       * calendar/diary-lib.el (diary-remind): Discard any mark portion
-       from diary-entry.  Reported by Andrew Kemp <ajwk@pell.uklinux.net>.
+2007-07-05  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-02-27  Luc Teirlinck  <teirllm@auburn.edu>
+       * vc-hooks.el (vc-handled-backends): Add HG.
 
-       * cus-edit.el: Comment change.
-       (custom-buffer-create-internal): Slightly reword text at top of
-       Custom buffers.  Mention there that saving an option edits the
-       init file.  Add link to Emacs manual node on `custom-file'.
-       (custom-magic-alist): Rewrite individual State messages to use
-       capitalized keywords.  Doc fix.
+       * vc-hg.el (vc-handled-backends): Remove, done in vc-hooks.el now.
 
-2005-02-27  Matt Hodges  <MPHodges@member.fsf.org>
+2007-07-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calendar/calendar.el (calendar-buffer): Move above
-       calendar-week-start-day.
-       (calendar-week-start-day): Doc fix.  Add :set function.
-       (calendar-minimum-window-height): New variable.
-       (generate-calendar-window): Only resize window if selected-window
-       is displaying the calendar buffer.  Use new variable
-       calendar-minimum-window-height.
-       (generate-calendar): Reword error message.
-       (calendar-mode-map): Bind DEL to scroll-other-window-down.
+       * complete.el (PC-do-complete-and-exit): Add support for the new
+       `confirm-only' confirmation mode.
 
-2005-02-27  Andreas Schwab  <schwab@suse.de>
+2007-07-05  Chong Yidong  <cyd@stupidchicken.com>
 
-       * vc.el (vc-do-command): Don't run command asynchronously when
-       operating in a remote directory.
+       * cus-edit.el (custom-commands): New variable.
+       (custom-tool-bar-map): New variable.  Initialize using
+       `custom-commands'.
+       (custom-mode): Use `custom-tool-bar-map'.
+       (custom-buffer-create-internal): Insert action buttons only if
+       tool bar is not used.  Use `custom-commands'.
+       (Custom-help, custom-command-apply): New function.
+       (custom-command-apply, Custom-set, Custom-save)
+       (Custom-reset-current, Custom-reset-saved, Custom-reset-standard):
+       Use `custom-command-apply' instead of duplicating code.
+       (customize-group-other-window): Call `customize-group' instead of
+       duplicating code.
+       (customize-face-other-window): Call `customize-face' instead of
+       duplicating code.
+       (customize-group, customize-face): Add optional args for opening
+       in another window.
+       (custom-variable-tag): Don't inherit `variable-pitch' face.
+       (custom-group-tag): Inherit `variable-pitch' face.
+       (custom-variable-value-create): Set documentation indentation.
+       (custom-group-value-create): Make group name a link, instead of
+       using an extra "go to group" button.
+       (custom-prompt-variable, custom-group-set, custom-group-save)
+       (custom-group-reset-current, custom-group-reset-saved)
+       (custom-group-reset-standard): Minor cleanup.
 
-       * net/tramp.el (tramp-file-name-for-operation): Fix misapplied
-       change from sync with Tramp 2.0.47.
+2007-07-05  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-02-27  Richard M. Stallman  <rms@gnu.org>
+       * Makefile.in (bootstrap-prepare): When copying from
+       ldefs-boot.el, make sure loaddefs.el is writeable.
 
-       * textmodes/ispell.el (ispell-change-dictionary): Doc fix.
+       (bootstrap-prepare): Make $(lisp)/ps-print.el
+       and $(lisp)/emacs-lisp/cl-loaddefs.el writable, as well.
 
-       * textmodes/flyspell.el (flyspell-mode-on):
-       Call ispell-change-dictionary only if necessary.
+2007-07-05  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * emacs-lisp/re-builder.el (regexp-builder): New function.
+       * vc-hg.el (vc-hg-internal-status): Inline in `vc-hg-state', the
+       only caller, and delete.
+       (vc-hg-state): Deal with exceptions and only parse the output on
+       successful return.
+       (vc-hg-internal-log): Inline in `vc-hg-workfile-version', the only
+       caller, and delete.
+       (vc-hg-workfile-version): Deal with exceptions and only parse the
+       output on successful return.
+       (vc-hg-revert): New function.
 
-       * register.el (describe-register-1): Explicitly handle
-       yank-excluded-properties = t.
+2007-07-04  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * cus-edit.el (custom-buffer-create-internal): Improve progress msgs.
-       (custom-magic-alist): Change the status descriptions again.
-       (face widget-type): Total rewrite based on `restricted-sexp'
-       to eliminate the confusing double hiding levels.
+       * calculator.el (calculator-expt): Use more cases to determine
+       the value.
 
-       * emacs-lisp/debug.el (debug-on-entry-1):
-       If function body is empty, add nil as body form.
+2007-07-03  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-02-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * progmodes/gud.el (auto-mode-alist): Match more valid gdb init
+       file names.
 
-       * emacs-lisp/trace.el (inhibit-trace): New var.
-       (trace-make-advice): Use it.
+2007-07-03  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * emacs-lisp/debug.el (debug): Put back the inhibit-trace.
+       * calculator.el (calculator-expt, calculator-integer-p):
+       New functions.
+       (calculator-fact): Check to see if the factorial will be too
+       large before computing it.
+       (calculator-initial-operators): Use `calculator-expt' to
+       compute "^".
+       (calculator-mode): Mention that results which are too large
+       will return inf.
+       * calc/calc-comb.el (math-small-factorial-table): Replace list
+       by vector.
+
+2007-07-03  David Kastrup  <dak@gnu.org>
+
+       * shell.el: On request of the authors, remove their addresses for
+       the sake of bug reports, and add the developer list address as
+       maintainer information.
+
+2007-07-03  Richard Stallman  <rms@gnu.org>
+
+       * files.el (make-directory): Doc fix.
+       (find-file-confirm-inexistent-file): Make it a defcustom.
+       Make nil the default.
+
+2007-07-02  Richard Stallman  <rms@gnu.org>
+
+       * startup.el (command-line): Set buffer-offer-save in *scratch*
+       and enable auto-save in it.
+
+2007-07-02  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (orgstruct-mode-map): New variable.
+       (orgstruct-mode): New minor mode.
+       (turn-on-orgstruct, orgstruct-error, orgstruct-setup)
+       (orgstruct-make-binding, org-context-p, org-get-local-variables)
+       (org-run-like-in-org-mode): New functions.
+       (org-cycle-list-bullet): New command.
+       (org-special-properties, org-property-start-re)
+       (org-property-end-re): New constants.
+       (org-with-point-at): New macro.
+       (org-get-property-block, org-entry-properties, org-entry-get)
+       (org-entry-delete, org-entry-get-with-inheritance)
+       (org-entry-put, org-buffer-property-keys): New functions.
+       (org-insert-property-drawer): New command.
+       (org-entry-property-inherited-from): New variable.
+       (org-column): New face.
+       (org-column-overlays, org-current-columns-fmt)
+       (org-current-columns-maxwidths, org-column-map): New variables.
+       (org-column-menu): New menu.
+       (org-new-column-overlay, org-overlay-columns)
+       (org-overlay-columns-title, org-remove-column-overlays)
+       (org-column-show-value, org-column-quit, org-column-edit): New
+       functions.
+       (org-columns, org-agenda-columns): New commands.
+       (org-get-columns-autowidth-alist): New functions.
+       (org-properties): New customize group.
+       (org-default-columns-format): New option.
+       (org-priority): Realign tags after changing priority.
+       (org-preserve-lc): New macro.
+       (org-update-checkbox-count): Catch case when there is no headline.
+       (org-agenda-quit): Remove any column overlays.
+       (org-beginning-of-item-list): Fixed bug when non-item line is
+       indented too deep.
+       (org-cached-props): New variable.
+       (org-cached-entry-get): New function.
+       (org-make-tags-matcher): Handle property matches.
+       (org-table-recalculate): Swap evaluation order: Field formula
+       first, then column formulas, but don't allow them to overwrite the
+       field formulas.
+       (org-table-eval-formula): New argument untouchable.
+       (org-table-put-field-property): New function.
 
-2005-02-26  Kim F. Storm  <storm@cua.dk>
+2007-07-02  Martin Rudalics  <rudalics@gmx.at>
 
-       * mouse.el (mouse-1-click-in-non-selected-windows): New defcustom.
-       (mouse-on-link-p, mouse-drag-region-1): Use it.
+       * help-mode.el (help-make-xrefs): Skip spaces too when
+       skipping tabs.
 
-2005-02-25  Lute Kamstra  <lute@gnu.org>
+       * ffap.el (dired-at-point-prompter): Improve prompt in
+       list-directory case.
 
-       * replace.el (query-replace-read-from): Fix 2005-02-19 change.
+2007-07-01  Richard Stallman  <rms@gnu.org>
 
-2005-02-24  Luc Teirlinck  <teirllm@auburn.edu>
+       * files.el (find-file-visit-truename): Fix safe-local-variable value.
 
-       * frame.el (blink-cursor-mode): Add :group keyword.
+2007-07-01  Richard Stallman  <rms@gnu.org>
 
-2005-02-24  Ulf Jasper  <ulf.jasper@web.de>
+       * cus-start.el (max-mini-window-height): Added.
 
-       * calendar/icalendar.el (icalendar--decode-isodatetime):
-       New optional argument DAY-SHIFT.
-       (icalendar-export-region): Fix coding-system-for-write.
-       (icalendar--convert-ical-to-diary): Shift end-day of all-day
-       events by one.
+2007-07-01  Sean O'Rourke  <sorourke@cs.ucsd.edu>  (tiny change)
 
-2005-02-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * complete.el (partial-completion-mode): Remove advice of
+       read-file-name-internal.
+       (PC-do-completion): Rebind minibuffer-completion-table.
+       (PC-read-file-name-internal): New function doing what
+       read-file-name-internal advice did.
 
-       * textmodes/tex-mode.el (tex-font-lock-keywords-3): #n is atomic.
+2007-07-01  Paul Pogonyshev  <pogonyshev@gmx.net>
 
-2005-02-24  Kim F. Storm  <storm@cua.dk>
+       * emacs-lisp/byte-opt.el: Set `binding-is-magic'
+       property on a few symbols.
+       (byte-compile-side-effect-free-dynamically-safe-ops): New defconst.
+       (byte-optimize-lapcode): Remove bindings that are not referenced
+       and certainly will not effect through dynamic scoping.
 
-       * international/iso-acc.el (iso-accents-compose): Fix crash
-       during redisplay.  Call force-window-update after read-event
-       and delete-region to signal that window is not accurate.
+2007-07-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * files.el (find-file-confirm-inexistent-file): New var.
+       (find-file, find-file-other-window, find-file-other-frame)
+       (find-file-read-only, find-file-read-only-other-window)
+       (find-file-read-only-other-frame): Use it.
 
-       * emacs-lisp/debug.el (debug): Hide the buffer if it's not killed.
-       Remove unused and inexistent var `inhibit-trace'.
-       (debugger-mode): Use run-mode-hooks.
-       (debugger-list-functions): Add buttons; setup xref stack.
+2007-06-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-23  Richard M. Stallman  <rms@gnu.org>
+       * emacs-lisp/rx.el (rx-constituents): Fix up `anything'.
 
-       * calendar/appt.el (appt-time-msg-list): 3rd elt of each
-       appointment says it was explicitly made.
-       (appt-add): Set the 3rd element.
-       (appt-make-list): Preserve explicit appointments.
+2007-06-29  Juanma Barranquero  <lekktu@gmail.com>
 
-       * subr.el (find-tag-default): Catch errors in forward-sexp.
+       * generic-x.el (generic-define-mswindows-modes)
+       (generic-define-unix-modes, apache-log-generic-mode)
+       (bat-generic-mode-keymap, java-manifest-generic-mode)
+       (show-tabs-generic-mode): Fix typos in docstrings.
 
-2005-02-23  Juri Linkov  <juri@jurta.org>
+2007-06-29  Ryan Yeske  <rcyeske@gmail.com>
 
-       * info.el (Info-isearch-search): New defcustom.
-       (Info-isearch-search): Call the default isearch function
-       when Info-isearch-search is nil.
-       (Info-isearch-wrap): Use variable Info-isearch-search.
+       * net/rcirc.el (rcirc-server-alist): Rename from rcirc-connections.
+       (rcirc-default-full-name): Rename from rcirc-default-user-full-name.
+       (rcirc-clear-activity): Make sure RCIRC-ACTIVITY isn't modified.
+       (rcirc-print): Never ignore messages from ourself.
 
-2005-02-22  Luc Teirlinck  <teirllm@auburn.edu>
+2007-06-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * cus-edit.el: Comment change.
+       * font-lock.el (lisp-font-lock-keywords-2): Recognize the new \(?1:..\)
+       syntax as well.  Reported by Juri Linkov <juri@jurta.org>.
 
-2005-02-22  Kim F. Storm  <storm@cua.dk>
+2007-06-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * progmodes/hideif.el (hide-ifdef-use-define-alist):
-       Use completing-read.  Suggested by Juan-Leon Lahoz Garcia.
+       * dnd.el (dnd-get-local-file-name): Set fixcase to t in call to
+       replace-regexp-in-string.
 
-2005-02-22  Simon Josefsson  <jas@extundo.com>
+2007-06-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * net/browse-url.el (browse-url-netscape-new-window-is-tab):
-       New variable.
-       (browse-url-netscape): Use it.  Suggested by "Johann 'Myrkraverk'
-       Oskarsson" <myrkraverk@users.sourceforget.net>.
+       * emacs-lisp/cl.el: Set edebug and indentation before loading
+       cl-loaddefs.el so that its use of dolist doesn't load cl-macs.
 
-2005-02-22  Kim F. Storm  <storm@cua.dk>
+2007-06-28  Andreas Schwab  <schwab@suse.de>
 
-       * mouse.el (mouse-on-link-p): If arg POS is a mouse event,
-       check that window of that event is the selected window.
-       (mouse-drag-region-1): Compare mouse event window to selected
-       window before setting point.
+       * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Depend on
+       $(lisp)/subdirs.el.
 
-       * tooltip.el (tooltip-show-help-function): Pass event to
-       mouse-on-link-p so it can check selected window.
+2007-06-28  Juanma Barranquero  <lekktu@gmail.com>
 
-2005-02-22  Kenichi Handa  <handa@m17n.org>
+       * speedbar.el (speedbar-handle-delete-frame): Don't try to delete
+       the speedbar frame if nil; that deletes the current frame or
+       causes an error if it is the only frame.
+       Reported by Angelo Graziosi <Angelo.Graziosi@roma1.infn.it>.
 
-       * ps-mule.el (ps-mule-header-string-charsets): Delete it.
-       (ps-mule-show-warning): New function.
-       (ps-mule-begin-job): Use ps-mule-show-warning if unprintable
-       characters are found.
+2007-06-28  Kevin Ryde  <user42@zip.com.au>
 
-       * ps-print.el (ps-header-footer-string): Return a list of header
-       and footer strings.
+       * textmodes/nroff-mode.el: Groff \# comments.
+       (nroff-mode-syntax-table): \# comment intro,
+       plain # as punct per global table.
+       (nroff-font-lock-keywords): Add # as a single char escape.
+       (nroff-mode): In comment-start-skip, match \#.
 
-2005-02-21  Wolfgang Jenkner  <wjenkner@inode.at>  (tiny change)
+2007-06-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * pcvs.el (cvs-retrieve-revision): Fix thinko.
+       * vc-bzr.el (vc-functions): Clear up the cache when reloading the file.
+       (vc-bzr-workfile-version, vc-bzr-could-register): Don't hardcode
+       point-min == 1.
 
-2005-02-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-06-28  Nick Roberts  <nickrob@snap.net.nz>
 
-       * frame.el (blink-cursor-mode): Use define-minor-mode.
+       * pcvs-util.el (cvs-strings->string, cvs-string->strings):
+       Rename and move to...
 
-       * term/mac-win.el (function-key-map): Use char-names more consistently.
-       (file-name-coding-system): Only set it for MacOS-9.  The other case is
-       already handled in mule-cmds.el (where it also works when mac-win.el
-       is not used).
+       * subr.el (strings->string, string->strings): ...here.
 
-2005-02-21  Kenichi Handa  <handa@m17n.org>
+       * pcvs.el (cvs-reread-cvsrc, cvs-header-msg, cvs-checkout)
+       (cvs-mode-checkout, cvs-execute-single-file): Use new function names.
 
-       * international/mule.el (ctext-pre-write-conversion): Always use
-       " *code-converting-work*" buffer for work.
+       * progmodes/gud.el (gud-common-init): Call string->strings instead
+       of split-string.
 
-       * textmodes/ispell.el (ispell-dictionary-alist): Fix docstring.
+2007-06-27  Michael Albinus  <michael.albinus@gmx.de>
 
-2005-02-20  Thien-Thi Nguyen  <ttn@gnu.org>
+       * dired-aux.el: Remove `dired-call-process'.
+       (dired-check-process): Call `process-file'.
 
-       * progmodes/scheme.el (scheme-font-lock-keywords-2): Handle named-let.
+       * wdired.el (wdired-do-perm-changes): Call `process-file'.
 
-2005-02-20  Jonathan Yavner  <jyavner@member.fsf.org>
+       * net/ange-ftp.el (ange-ftp-dired-call-process): Reimplement it as
+       `ange-ftp-process-file'.
 
-       * ses.el (undo-more): Restore defadvice, but only the part that
-       allows changes outside the restricted area of the buffer.
+2007-06-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-20  Kim F. Storm  <storm@cua.dk>
+       * emacs-lisp/cl.el: Use cl-loaddefs.el rather than manual autoloads.
 
-       * simple.el (line-move): Add fourth optional arg try-vscroll which
-       must be set to perform auto-window-vscroll.
-       When moving backwards and doing auto-window-vscroll, automatically
-       vscroll to the last part of lines which are taller than the window.
-       (next-line, previous-line): Set try-vscroll arg on line-move.
+       * emacs-lisp/cl-extra.el:
+       * emacs-lisp/cl-seq.el:
+       * emacs-lisp/cl-macs.el: Set generated-autoload-file to cl-loaddefs.el.
+       Add autoload cookies on all defs autoloaded manually in cl.el.
 
-2005-02-19  Dan Nicolaescu  <dann@ics.uci.edu>
+       * emacs-lisp/cl-loaddefs.el: New file.
 
-       * replace.el (query-replace, query-replace-regexp)
-       (replace-string, replace-regexp): When operating on region, make
-       the minibuffer prompt say so.
+       * textmodes/texinfmt.el (texinfo-raisesections-alist)
+       (texinfo-lowersections-alist): Merge definition and declaration.
+       (texinfo-start-of-header, texinfo-end-of-header): Remove.
+       (texinfo-format-syntax-table): Merge init into declaration.
+       (texinfo-format-parse-line-args, texinfo-format-parse-args)
+       (texinfo-format-parse-defun-args, texinfo-format-node)
+       (texinfo-push-stack, texinfo-multitable-widths)
+       (texinfo-define-info-enclosure, texinfo-alias)
+       (texinfo-format-defindex, batch-texinfo-format): Use push.
+       (texinfo-footnote-number): Remove duplicate declaration.
 
-       * isearch.el (isearch-forward): Document isearch-query-replace and
-       isearch-query-replace-regexp keybindings.
+       * ps-print.el: Update with auto-generated autoloads.
 
-2005-02-19  Jay Belanger  <belanger@truman.edu>
+       * ps-mule.el: Set generated-autoload-file to "ps-print.el".
 
-       * calc/calc-aent.el (math-read-token): Add local variable.
+2007-06-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calc/calc-prog.el (calc-user-define-edit): Add local variable.
-       (calc-edit-top): Move declaration to earlier in file.
-       (calc-edit-macro-repeats): Add local variables.
+       * emacs-lisp/autoload.el (autoload-generated-file): Interpret names
+       relative to current dir for file-local settings.
+       (autoload-generate-file-autoloads): Add `outfile' arg.
+       (update-directory-autoloads): Use it to directly call
+       autoload-generate-file-autoloads instead of going through
+       update-file-autoloads so we avoid redundant searches and so we can know
+       the set of buffers changed so we can save them all.
 
-       * calc/calcalg2.el: Add differentiation rule for calcFunc-coth.
-       Adjust differentiation rules for calcFunc-tan, calcFunc-cot,
-       calcFunc-tanh.
-       Adjust integration rule for calcFunc-tan.
+       * emacs-lisp/autoload.el (autoload-find-destination): Return nil
+       rather than throwing `up-to-date'.
+       (autoload-generate-file-autoloads): Adjust correspondingly.
+       (update-file-autoloads): Be careful to let-bind
+       autoload-modified-buffers and adjust to new calling conventions.
+       (autoload-modified-buffers): Make it a dynamically scoped var.
+       (update-directory-autoloads): Use file-relative-name instead of
+       autoload-trim-file-name.
+       (autoload-insert-section-header): Don't use autoload-trim-file-name
+       since the file is already relative now.
+       (autoload-trim-file-name): Remove.
 
-2005-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
+       * vc-arch.el (vc-arch-add-tagline): Do a slightly cleaner job.
+       (vc-arch-complete, vc-arch--version-completion-table)
+       (vc-arch-revision-completion-table): New functions to provide
+       completion of revision names.
+       (vc-arch-trim-find-least-useful-rev, vc-arch-trim-make-sentinel)
+       (vc-arch-trim-one-revlib, vc-arch-trim-revlib): New functions
+       to let the user trim the revlib.
 
-       * viper-cmd.el (viper-prefix-commands): Make into a defconst.
-       (viper-exec-buffer-search): Use regexp-quote to quote buffer string.
-       (viper-minibuffer-setup-sentinel): Make some variables buffer-local.
-       (viper-skip-separators): Bug fix.
-       (viper-set-searchstyle-toggling-macros): Allow to unset macros in a
-       particular major mode.
-       (viper-del-backward-char-in-replace): Don't put deleted char on the
-       kill ring.
+       * vc.el: Add new VC operation `revision-completion-table'.
+       (vc-default-revision-completion-table): New function.
+       (vc-version-diff, vc-version-other-window): Use it to provide
+       completion of revision names if the backend provides it.
 
-       * viper-ex.el (viper-color-display-p): New function.
-       (viper-has-face-support-p): Use viper-color-display-p.
+       * log-edit.el (log-edit-changelog-entries): Use with-current-buffer.
 
-       * viper-keym.el (viper-gnus-modifier-map): New keymap.
+       * vc-svn.el (vc-svn-repository-hostname): Adjust to non-XML format
+       of newer .svn/entries.
 
-       * viper-macs.el (viper-unrecord-kbd-macro): Bug fix.
+2007-06-25  David Kastrup  <dak@gnu.org>
 
-       * viper-util.el (viper-glob-unix-files): Fix shell status check.
-       (viper-file-remote-p): Make equivalent to file-remote-p.
+       * calc/calc-poly.el (math-padded-polynomial)
+       (math-partial-fractions): Add some function comments.
 
-       * viper.el (viper-major-mode-modifier-list):
-       Use viper-gnus-modifier-map.
+2007-06-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-19  David Kastrup  <dak@gnu.org>
+       * emacs-lisp/autoload.el (autoload-generate-file-autoloads):
+       Make `outbuf' optional.
+       (update-file-autoloads): Use it.
 
-       * subr.el (subregexp-context-p): Fix garbled doc string by adding
-       quoting.
+2007-06-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-19  Jay Belanger  <belanger@truman.edu>
+       * emacs-lisp/autoload.el (autoload-modified-buffers): New var.
+       (autoload-find-destination): Keep it uptodate.
+       (autoload-save-buffers): New fun.
+       (update-file-autoloads): Use it.  Re-add the "up to date" message.
 
-       * calc/calc-math.el (calc-arctan, calc-tanh, calc-arctanh):
-       Remove extra definitions.
-       (calc-coth): New function.
-       (calcFunc-cot): Fix `let'.
+       * emacs-lisp/autoload.el: Refactor for upcoming changes.
+       (autoload-find-destination): New function extracted from
+       update-file-autoloads.
+       (update-file-autoloads): Use it.
+       (autoload-generate-file-autoloads): New function extracted from
+       generate-file-autoloads.  Use file-relative-name.  Delay computation of
+       output-start to the first cookie.  Remove done-any, replaced by
+       output-start.
+       (generate-file-autoloads): Use it.
 
-2005-02-19  Eli Zaretskii  <eliz@gnu.org>
+2007-06-24  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * faces.el (escape-glyph, minibuffer-prompt): Add commentary for
-       the reasons we use "type pc" in these faces.
+       * calc/calc-comb.el (math-init-random-base, math-prime-test):
+       Use math-read-number-simple to insert constants.
+       (math-prime-test): Redo calculation of sum.
 
-       * button.el (button): Ditto.
+       * calc/calc-misc.el (math-div2-bignum): Use math-bignum-digit-size.
 
-2005-02-19  Michael Mauger  <mmaug@yahoo.com>
+       * calc/calc-math.el (math-scale-bignum-digit-size): Rename from
+       math-scale-bignum-3.
+       (math-isqrt-bignum): Use math-scale-bignum-digit-size and
+       math-bignum-digit-size.
+       (math-isqrt-small): Add another possible initial guess.
 
-       * replace.el (query-replace-read-from): Set the value of
-       query-replace-from-history-variable to handle the case of an empty
-       string entered to accept the suggested default.
+2007-06-23  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
 
-       * net/tramp.el (tramp-file-name-for-operation):
-       Use dired-call-process instead of dired-call-process-command.
+       * textmodes/bibtex.el (bibtex-entry-format): New options
+       `whitespace', `braces', and `string'.
+       (bibtex-field-braces-alist, bibtex-field-strings-alist)
+       (bibtex-field-braces-opt, bibtex-field-strings-opt)
+       (bibtex-cite-matcher-alist): New variables.
+       (bibtex-font-lock-keywords): Use bibtex-cite-matcher-alist.
+       (bibtex-flash-head): Use blink-matching-delay.
+       (bibtex-insert-kill, bibtex-mark-entry): Use push-mark.
+       (bibtex-format-entry, bibtex-reformat): Handle new options of
+       bibtex-entry-format.
+       (bibtex-field-re-init, bibtex-font-lock-cite, bibtex-dist):
+       New functions.
+       (bibtex-complete-internal): Do not display messages while
+       minibuffer is used.  Do not leave around a completions buffer
+       that is out of date.
+       (bibtex-copy-summary-as-kill): New optional arg.
+       (bibtex-font-lock-url): New optional arg no-button.
+       (bibtex-find-crossref): Use `bibtex-cite-matcher-alist'.
+       (bibtex-url): Allow multiple URLs per entry.
+
+2007-06-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/autoload.el (autoload-generated-file): New function.
+       (update-file-autoloads, update-directory-autoloads): Use it.
+       (autoload-file-load-name): New function.
+       (generate-file-autoloads, update-file-autoloads): Use it.
+       (autoload-find-file): Accept non-absolute argument.  Set default-dir.
+       (generate-file-autoloads): If the autoloaded form is malformed,
+       indicate the problem with a warning instead of aborting.
 
-2005-02-19  Jay Belanger  <belanger@truman.edu>
+2007-06-23  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-       * calc/calc-arith.el (math-trig-inverses, math-div-trig)
-       (math-div-non-trig): New variables.
-       (math-combine-prod-trig, math-div-new-trig, math-div-new-non-trig)
-       (math-div-isolate-trig, math-div-isolate-trig-term): New functions.
-       (math-combine-prod, math-div-symb-fancy): Add simplifications for
-       trig expressions.
+       * simple.el (next-error-recenter): Accept `(4)' as well;
+       also, specify `integer' instead of `number'.
 
-2005-02-19  Nick Roberts  <nickrob@snap.net.nz>
+2007-06-23  Eli Zaretskii  <eliz@gnu.org>
 
-       * progmodes/gdb-ui.el (gdb-var-update-handler)
-       (gdb-speedbar-timer-fn): Ensure speedbar updates with new values
-       for watch expressions,
-       (gdb-var-create-handler): Don't set speedbar-update-flag.
-       (gdb-post-prompt): Simplify test for speedbar.
+       * ls-lisp.el (insert-directory): If an invalid regexp error is
+       thrown, try using FILE as a literal file name, not a wildcard.
 
-2005-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
+2007-06-23  Juanma Barranquero  <lekktu@gmail.com>
 
-       * ediff.el (ediff-set-diff-overlays-in-one-buffer)
-       (ediff-set-fine-overlays-in-one-buffer, ediff-goto-word): Make sure
-       we use the syntax table of the correct buffer.
-       (ediff-same-file-contents, ediff-same-contents): Enhancements thanks to
-       Felix Gatzemeier.
+       * ruler-mode.el (ruler-mode): Prevent clobbering the original
+       `header-line-format' when reentering ruler mode.
 
-       * ediff-init.el (ediff-hide-face): Check for definedness of functions.
-       (ediff-file-remote-p): Make synonymous with file-remote-p.
-       In all deffaces ediff-*-face-*, use min-colors.
+2007-06-23  Eli Zaretskii  <eliz@gnu.org>
 
-       * ediff-mult.el (ediff-meta-mark-equal-files): Make use of
-       ediff-recurse-to-subdirectories.
-       (ediff-mark-if-equal): Check that the arguments are strings, use
-       ediff-same-contents (after to Felix Gatzemeier).
+       * ls-lisp.el (insert-directory): Don't treat FILE as a wildcard if
+       FILE exists as a file.
 
-       * ediff.el (ediff-merge-on-startup): Don't set buffer-modified-p to
-       nil.
+2007-06-22  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * calc/calc.el (math-bignum-digit-length)
+       (math-bignum-digit-size, math-small-integer-size):
+       New constants.
+       (math-normalize, math-bignum-big, math-make-float)
+       (math-div10-bignum, math-scale-left, math-scale-left-bignum)
+       (math-scale-right, math-scale-right-bignum, math-scale-rounding)
+       (math-add, math-add-bignum, math-sub-bignum, math-sub, math-mul)
+       (math-mul-bignum, math-mul-bignum-digit, math-idivmod)
+       (math-quotient, math-div-bignum, math-div-bignum-digit)
+       (math-div-bignum-part, math-format-bignum-decimal)
+       (math-read-bignum): Use math-bignum-digit-length,
+       math-bignum-digit-size and math-small-integer-size.
 
-       * log-view.el (log-view-message-re): Fix up Subversion regexp.
+       * calc/calc-ext.el (math-fixnum-big): Use the variable
+       math-bignum-digit-size.
 
-2005-02-18  David Kastrup  <dak@gnu.org>
+2007-06-23  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * progmodes/meta-mode.el (meta-mark-active): Fix condition to just
-       use `mark-active' when defined.
+       * log-view.el (log-view-mode-menu): New menu.
 
-2005-02-18  Kenichi Handa  <handa@m17n.org>
+2007-06-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * ps-print.el (ps-font-info-database): New entry
-       ZapfChancery-MediumItalic with correct font name.  Fix font name
-       of the entry Zapf-Chancery-MediumItalic.
+       * diff-mode.el (diff-font-lock-keywords): Fix M. Kifer's last change
+       differently.
 
-2005-02-16  Luc Teirlinck  <teirllm@auburn.edu>
+       * vc-hg.el (vc-hg-registered): Add an autoloaded version.
+       (vc-hg-log-view-mode): Use log-view-font-lock-keywords.
 
-       * autorevert.el (auto-revert-stop-on-user-input): Further doc fix.
+2007-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2005-02-16  Kim F. Storm  <storm@cua.dk>
+       * vc-hg.el (vc-hg-print-log): Insert the file name.
+       (vc-hg-log-view-mode): Fontify the file name.
 
-       * ido.el (ido-fallback-command): Pass user input to fallback command.
+2007-06-22  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-02-16  Nick Roberts  <nickrob@snap.net.nz>
+       * calc/calc-forms.el (math-format-date-part, calc-parse-standard-date)
+       (calcFunc-julian): Fix incorrect number used in calculations.
 
-       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers)
-       (gdb-find-file-hook): Add server prefix.
+2007-06-22  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-02-16  Richard M. Stallman  <rms@gnu.org>
+       * simple.el (next-error-recenter): New defcustom.
+       (next-error, next-error-internal): Recenter if specified,
+       immediately prior to running `next-error-hook'.
 
-       * replace.el (perform-replace): Pass new args to replace-highlight.
-       (replace-highlight): Take region args,
-       and pass them to isearch-lazy-highlight-new-loop.
+       * progmodes/hideshow.el (hs-show-block): Use line-end-position.
+       (hs-hide-block-at-point, hs-hide-comment-region): Likewise.
 
-       * novice.el (disabled-command-hook): Autoload the defalias
-       and the make-obsolete-variable call.
+       * progmodes/hideshow.el (hs-hide-all): Use progress reporter.
 
-       * menu-bar.el (menu-bar-select-frame): FRAME defaults to selected.
+2007-06-22  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * isearch.el (isearch-lazy-highlight-start-limit)
-       (isearch-lazy-highlight-end-limit): New variables limit
-       the region for highlighting.
-       (isearch-lazy-highlight-new-loop): New args BEG and END.
-       (isearch-lazy-highlight-search): Use the new vars.
-       (isearch-lazy-highlight-update): Likewise.
+       * calc/calc-comb.el (math-small-factorial-table): New variable.
+       (calcFunc-fact): Use `math-small-factorial-table'.
 
-       * dired.el (dired-build-subdir-alist): Bind buffer-undo-list to t.
+       * calc/calc-ext.el (math-defcache): Allow forms to evaluate
+       initial values.
+       (math-approx-pi, math-approx-sqrt-e, math-approx-gamma-const):
+       New variables to use in caches.
 
-       * cus-start.el (all): Use default-boundp.
+       * calc/calc-forms.el (math-format-date-part, math-parse-standard-date)
+       (calcFunc-julian): Use `math-read-number-simple' to insert bignums.
 
-2005-02-15  David Casperson  <casper@unbc.ca>  (tiny change)
+       * calc/calc-func.el (math-besJ0, math-besJ1, math-besY0, math-besY1)
+       (math-bernoulli-b-cache): Use math-read-number-simple to insert
+       bignums.
 
-       * menu-bar.el (menu-bar-select-frame): Handle current frame.
+       * calc/calc-math.el (math-approx-ln-10, math-approx-ln-2):
+       New variables to use in caches.
 
-2005-02-15  Luc Teirlinck  <teirllm@auburn.edu>
+2007-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * autorevert.el (auto-revert-stop-on-user-input)
-       (auto-revert-verbose): Doc fixes.
+       * vc-bzr.el (vc-bzr-log-view-mode): Add + to the email address regexp.
 
-2005-02-15  Benjamin Riefenstahl  <Benjamin.Riefenstahl@epost.de>
+       * vc-hg.el (vc-hg-log-view-mode): New mode.
 
-       * international/mule-cmds.el (set-locale-environment): Remove call
-       to set-selection-coding-system on Windows.
+2007-06-21  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-02-15  Jay Belanger  <belanger@truman.edu>
+       * calc/calc.el (math-read-number-simple): New function.
 
-       * calc/calc-alg.el: Add simplification rules for calcFunc-sec,
-       calcFunc-csc, calcFunc-cot, calcFunc-sech, calcFunc-csch, and
-       calcFunc-coth.
-       (math-simplify-sqrt): Add simplifications.
+2007-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calc/calc-arith.el (math-real-if-arg-functions): Add functions
-       to list.
+       * vera-mode.el (vera-mode): Fix `commend-end-skip' setting.
+       (vera-font-lock-match-item): Fix doc string.
+       (vera-in-comment-p): Remove unused function.
+       (vera-skip-forward-literal, vera-skip-backward-literal): Improve code,
+       use `syntax-ppss'.
+       (vera-forward-syntactic-ws): Fix argument order.
+       (vera-prepare-search): Use `with-syntax-table'.
+       (vera-indent-line): Fix doc string.
+       (vera-electric-tab): Fix doc string.
+       (vera-expand-abbrev): Define alias instead of using `fset'.
+       (vera-comment-uncomment-region): Use `comment-start-skip'.
 
-       * calc/calc-ext.el: Add functions to autoloads.
+2007-06-21  Carsten Dominik  <dominik@science.uva.nl>
 
-       * calc/calc-math.el (calc-sec, calc-csc, calc-cot, calc-sech)
-       (calc-csch, calc-coth, calcFunc-sec, calcFunc-csc, calcFunc-cot)
-       (calcFunc-sech, calcFunc-csch, calcFunc-coth, math-sec-raw)
-       (math-csc-raw, math-cot-raw): New functions.
+       * textmodes/org.el (org-export-with-footnotes): New option.
+       (org-export-as-html): Fix replacement bug for XEmacs.
+       (org-agenda-default-appointment-duration): New option.
 
-       * calc/calc-rules.el (calc-DistribRules, calc-NegateRules): Add rules.
+2007-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * calc/calc-undo.el (calc-handle-undo): Remove prefix from
-       the variable name in a message.
+       * vc-hg.el: Add to do items.
+       (vc-hg-diff): Add support for comparing different revisions.
+       (vc-hg-diff, vc-hg-annotate-command, vc-hg-annotate-time)
+       (vc-hg-annotate-extract-revision-at-line)
+       (vc-hg-previous-version, vc-hg-checkin): New functions.
+       (vc-hg-annotate-re): New constant.
 
-       * calc/calc-units.el: Add simplification rules for calcFunc-sec,
-       calcFunc-csc, calcFunc-cot.
+2007-06-20  Jay Belanger  <jay.p.belanger@gmail.com>
 
-       * calc/calcalg2.el: Add derivative and integration rules for
-       calcFunc-sec, calcFunc-csc, calcFunc-cot, calcFunc-sech,
-       calcFunc-csch, calcFunc-coth.
-       (math-do-integral-methods): Add to checks for when to use
-       substitutions.
+       * calc/calc.el (math-standard-ops): Fix precedence of multiplication.
 
-       * calc/calccomp.el (math-eqn-special-funcs): Add functions to list.
+2007-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-15  Lute Kamstra  <lute@gnu.org>
+       * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
+       buffer-local value of log-view-*-re if applicable.
+
+       * vc-bzr.el (vc-bzr-dir-state): Use setq rather than set.
+       Use vc-bzr-command rather than the ill defined vc-bzr-command*.
+       (vc-bzr-command*): Remove both (incompatible) versions.
+       (vc-bzr-do-command*): Remove.
+       (vc-bzr-with-process-environment, vc-bzr-std-process-invocation):
+       Remove by folding into its only caller vc-bzr-command.
+       (vc-bzr-command): Always set the environment, even when ineffective.
+       (vc-bzr-version): Minor fix up.
+       (vc-bzr-admin-dirname): New var.
+       (vc-bzr-bzr-dir): Remove.
+       (vc-bzr-root-dir): New fun.
+       (vc-bzr-registered): Use it.  Add an autoloaded version.
+       (vc-bzr-responsible-p): Use vc-bzr-root-dir as well.
+       (vc-bzr-view-log-function): Remove.
+       (vc-bzr-log-view-mode): New major mode to replace it.
+       (vc-bzr-print-log): Only activate the old hack if needed.
 
-       * emacs-lisp/lisp-mode.el (lisp-mode-variables):
-       Add ;;;###autoload to `outline-regexp'.  Suggested by Stefan Monnier
-       <monnier@iro.umontreal.ca>.
-       (lisp-outline-level): Improve efficiency.  Suggested by David
-       Kastrup <dak@gnu.org>.
+       * vc.el (vc-default-log-view-mode): New function.
+       (vc-print-log): Add new `log-view-mode' VC operation.
 
-2005-02-15  Nick Roberts  <nickrob@snap.net.nz>
+2007-06-20  Juanma Barranquero  <lekktu@gmail.com>
 
-       * progmodes/gdb-ui.el (gdb-find-file-unhook): New variable.
-       (gdb-set-gud-minor-mode, gdb-set-gud-minor-mode-1)
-       (gdb-set-gud-minor-mode-existing-buffers): New functions.
-       (gdb-find-file-hook): New hook.  Add it to find-file-hook.
-       (gdb-info-breakpoints-custom, gdb-source-info): Simplify.
+       * ido.el (ido-find-file-in-dir): Don't signal an error for
+       empty directories.
 
-2005-02-14  Luc Teirlinck  <teirllm@auburn.edu>
+       * add-log.el (change-log-mode): Set `show-trailing-whitespace'.
 
-       * cus-start.el (all): Comment change.
+       * desktop.el (desktop-read): Run `desktop-not-loaded-hook' in the
+       directory where the desktop file was found, as the docstring says.
+       (desktop-kill): Use `read-directory-name'.
 
-2005-02-14  Lute Kamstra  <lute@gnu.org>
+2007-06-20  Alan Mackenzie  <acm@muc.de>
 
-       * cus-start.el (all): Check if symbol is void.
+       * progmodes/cc-mode.el (c-remove-any-local-eval-or-mode-variables):
+       When removing lines, also remove the \n.  Correction of patch of
+       2007-04-21.
 
-2005-02-14  Carsten Dominik  <dominik@science.uva.nl>
+2007-06-20  Martin Rudalics  <rudalics@gmx.at>
 
-       * textmodes/reftex-cite.el (reftex-do-citation): Cleanup single
-       optional argument to \cite.
+       * mouse.el (mouse-drag-mode-line-1): Quit mouse tracking when
+       event is not a cons cell.  Do not unread drag-mouse-1 events.
+       Select right window in check whether space was stolen from
+       window above.
 
-2005-02-14  Richard M. Stallman  <rms@gnu.org>
+       * help-mode.el (help-make-xrefs): Adjust position of new forward
+       button.
 
-       * cus-edit.el (custom-buffer-create-internal): Update help message.
-       (custom-magic-alist): Update help messages.
+2007-06-20  Riccardo Murri  <riccardo.murri@gmail.com>
 
-       * cus-start.el (all): Allow a var to specify a standard value.
+       * vc-bzr.el (vc-bzr-with-process-environment)
+       (vc-bzr-std-process-invocation): New macros.
+       (vc-bzr-command, vc-bzr-command*): Use them.
+       (vc-bzr-with-c-locale): Remove.
+       (vc-bzr-dir-state): Replace its use with vc-bzr-command.
+       (vc-bzr-buffer-nonblank-p): New function.
+       (vc-bzr-state-words): New const.
+       (vc-bzr-state): Look for `bzr status` keywords in output.
+       Display everything else as a warning message to the user.
+       Fix status report with bzr >= 0.15.
 
-2005-02-12  Luc Teirlinck  <teirllm@auburn.edu>
+2007-06-20  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * custom.el (custom-theme-set-variables): Handle variable aliases.
+       * vc-hg.el (vc-hg-global-switches): Simplify.
+       (vc-hg-state): Handle more states.
+       (vc-hg-diff): Fix doc-string.
+       (vc-hg-register): New function.
+       (vc-hg-checkout): Likewise.
 
-       * frame.el (blink-cursor-timer): Doc fix.
-       (blink-cursor): Make it an alias for `blink-cursor-mode' and
-       declare obsolete.
-       (blink-cursor-mode): Define with defcustom and use correct
-       standard expression in that defcustom.
-       * startup.el (command-line): Adapt to above changes in frame.el.
+2007-06-20  Reto Zimmermann  <reto@gnu.org>
 
-2005-02-11  Lute Kamstra  <lute@gnu.org>
+       * progmodes/vera-mode.el: New file.
 
-       * apropos.el (apropos-score-doc): Prevent division by zero.
+2007-06-19  Jay Belanger  <jay.p.belanger@gmail.com>
 
-2005-02-11  Ulf Jasper  <ulf.jasper@web.de>
+       * calc/calc.el (calc-multiplication-has-precendence):
+       New variable.
+       (math-standard-ops, math-standard-ops-p, math-expr-ops):
+       New functions.
+       (math-expr-opers): Define using math-standard-ops rather than
+       math-standard-opers.
+       * calc/calc-aent.el (calc-do-calc-eval): Let math-expr-opers
+       equal the function math-standard-ops rather than the variable
+       math-standard-opers.
+       (calc-algebraic-entry): Let math-expr-opers equal
+       math-standard-ops or math-expr-ops, as appropriate.
+       (math-expr-read-level, math-read-factor): Let math-expr-opers
+       equal math-expr-ops.
+       * calc/calc-embed.el (calc-embedded-finish-edit):
+       Let math-expr-opers equal the function math-standard-ops
+       rather than the variable math-standard-opers.
+       * calc/calc-ext.el (math-read-plain-expr)
+       (math-format-flat-expr-fancy): Let math-expr-opers equal the
+       function math-standard-ops rather than the variable
+       math-standard-opers.
+       * calc/calc-lang.el (calc-set-language, math-read-big-rec):
+       Let math-expr-opers equal the function math-standard-ops rather
+       than the variable math-standard-opers.
+       * calc/calc-prog.el (calc-read-parse-table): Let math-expr-opers
+       equal the function math-standard-ops rather than the variable
+       math-standard-opers.
+       * calc/calc-yank.el (calc-finish-stack-edit): Let math-expr-opers
+       equal the function math-standard-ops rather than the variable
+       math-standard-opers.
+       * calc/calccomp.el (math-compose-expr): Let math-expr-opers equal
+       math-expr-ops.
+
+2007-06-19  Ivan Kanis  <apple@kanis.eu>
 
-       * calendar/icalendar.el (icalendar--get-event-property): Doc fix.
-       (icalendar--get-event-property-attributes)
-       (icalendar--get-event-properties)
-       (icalendar--datetime-to-diary-date): New functions.
-       (icalendar--split-value): Doc fix.
-       (icalendar--datetime-to-noneuropean-date)
-       (icalendar--datetime-to-european-date): New optional argument
-       SEPARATOR.  Return result as a string instead of a list.
-       (icalendar--get-weekday-number): Check if ABBREVWEEKDAY is nil.
-       (icalendar--convert-string-for-export): Rename arg S to STRING.
-       (icalendar-export-region): Doc fix.  Change name of error buffer.
-       Save output buffer.
-       (icalendar-import-file): Add blank at end of prompt.
-       (icalendar-import-buffer): Doc fix.  Do not switch to error
-       buffer.  Indicate status in return value.
-       (icalendar--convert-ical-to-diary): Doc fix.  Change name of error
-       buffer.  Save output buffer.  Handle exception from recurrence
-       rules (EXDATE, EXRULE).  Handle start- and end-date of recurring
-       events.  Fix problems with weekly all-day events.
+       * vc-hg.el: New file.
 
-2005-02-10  Richard M. Stallman  <rms@gnu.org>
+2007-06-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * simple.el (eval-expression-print-format):
-       Avoid warning about edebug-active.
+       * progmodes/sh-script.el (sh-font-lock-paren): Mark the relevant text
+       with font-lock-multiline.
 
-       * help.el (help-for-help-internal): Rename from help-for-help.
-       (help-for-help): Define with defalias.
+2007-06-17  Glenn Morris  <rgm@gnu.org>
 
-       * font-core.el (font-lock-default-function): Use with-no-warnings.
+       * lpr.el (lpr-page-header-switches): Move %s to separate element
+       for correct quoting.  Doc fix.
 
-       * cus-edit.el (custom-buffer-create-internal): Improve help-echo.
+2007-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * custom.el (defface): Doc fix.
+       * textmodes/sgml-mode.el (sgml-xml-guess): Return the result rather
+       than setting sgml-xml-mode.
+       (sgml-mode, html-mode): Set sgml-xml-mode.
+       (sgml-skip-tag-backward): Tell if we skipped over matched tags.
+       (sgml-skip-tag-backward, sgml-electric-tag-pair-overlays): New var.
+       (sgml-electric-tag-pair-before-change-function)
+       (sgml-electric-tag-pair-flush-overlays): New functions.
+       (sgml-electric-tag-pair-mode): New minor mode.
+       (sgml-font-lock-keywords-2, sgml-get-context, sgml-unclosed-tag-p)
+       (sgml-calculate-indent): Use assoc-string.
+
+2007-06-16  Karl Fogel  <kfogel@red-bean.com>
+
+       * thingatpt.el (thing-at-point-email-regexp): Don't require two
+       chars before the "@" in an email address.  Andreas Roehler noticed
+       this problem.
+
+2007-06-15  Karl Fogel  <kfogel@red-bean.com>
+
+       * thingatpt.el: Add support for email addresses (`email').
+       (thing-at-point, bounds-of-thing-at-point): Document `email' support.
+       (thing-at-point-email-regexp): New variable.
+       (`email'): Put `bounds-of-thing-at-point' and `thing-at-point'
+       properties on this symbol, with lambda forms for values.
+
+2007-06-15  Masatake YAMATO  <jet@gyve.org>
+
+       * vc-bzr.el (vc-bzr-root): Cache the output of shell command execution.
+
+       * vc.el (vc-dired-hook): Check the backend returned from
+       `vc-responsible-backend' can really handle `subdir'.
+
+2007-06-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * wid-edit.el (widget-add-documentation-string-button):
+       Fix handling of documentation indent.
+
+2007-06-15  Miles Bader  <miles@fencepost.gnu.org>
+
+       * mb-depth.el: New file.
+
+2007-06-15  Masatake YAMATO  <jet@gyve.org>
+
+       * vc.el (vc-dired-mode): Show backend name as part of mode name.
+
+2007-06-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * wid-edit.el (widget-default-create): Move ?h handling here...
+       (widget-default-format-handler): ...from here.
+       (widget-docstring, widget-add-documentation-string-button): New funs.
+       (documentation-string): Add :visibility-widget property.
+       (widget-documentation-string-value-create): Use it.
+
+       * cus-edit.el (custom-split-regexp-maybe): Simplify.
+       (custom-buffer-create-internal): Simplify message.
+       (custom-variable-tag): Reduce height to normal.
+       (custom-variable-value-create, custom-face-value-create)
+       (custom-visibility): New widget.
+       (custom-visibility): New face.
+       (custom-group-value-create):
+       Call widget-add-documentation-string-button, using `custom-visibility'.
+
+2007-06-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/bytecomp.el (byte-compile-current-group)
+       (byte-compile-nogroup-warn, byte-compile-file): Revert part of last
+       change.  Apparently the "warning even if the group is implicit" is
+       a feature rather than a bug.
+
+2007-06-14  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper.el (viper-describe-key-ad, viper-describe-key-briefly-ad):
+       Different advices for Emacs and XEmacs.  Compile them conditionally.
+       (viper-version): Belated version change.
+
+2007-06-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * follow.el (follow-all-followers, follow-generic-filter):
+       * pcomplete.el (pcomplete-restore-windows):
+       * x-dnd.el (x-dnd-maybe-call-test-function, x-dnd-save-state)
+       (x-dnd-drop-data):
+       * emacs-lisp/edebug.el (edebug-pop-to-buffer, edebug-display):
+       * progmodes/python.el (python-complete-symbol):
+       * term/mac-win.el (mac-dnd-drop-data): Remove redundant check.
+
+2007-06-13  Ryan Yeske  <rcyeske@gmail.com>
+
+       * rcirc.el (rcirc-format-response-string): Use rcirc-nick-syntax
+       around bright and dim regexps.  Make sure bright and dim matches
+       use word anchors.  Send text through rcirc-markup functions.
+       (rcirc-url-regexp): Add single quote character.
+       (rcirc-connect): Write logs to disk on auto-save-hook.
+       Make server a non-optional argument.
+       (rcirc-log-alist): New variable.
+       (rcirc-log-directory): Make customizable.
+       (rcirc-log-flag): New customizable variable.
+       (rcirc-log): New function.
+       (rcirc-print): Use above function.
+       (rcirc-log-write): New function.
+       (rcirc-generate-new-buffer-name): Strip text properties.
+       (rcirc-switch-to-buffer-function): Remove variable.
+       (rcirc-last-non-irc-buffer): Remove variable.
+       (rcirc-non-irc-buffer): Add function.
+       (rcirc-next-active-buffer): Use above function.
+       (rcirc-keepalive): Send KEEPALIVE ctcp instead of a PING.
+       (rcirc-handler-ctcp-KEEPALIVE): Add handler.
+       (rcirc-handler-CTCP): Don't print KEEPALIVE responses.
+       (rcirc-omit-mode): Add minor-mode.
+       (rcirc-mode-map): Change C-c C-o binding.
+       (rcirc-mode): Clear mode-line-process.  Use a custom
+       fill-paragraph-function.  Set up buffer-invisibility-spec.
+       (rcirc-response-formats): Remove timestamp code.
+       (rcirc-omit-responses): Add variable.
+       (rcirc-print): Don't put the overlay arrow on potentially omitted
+       lines.  Log line to disk.  Record activity for private messages
+       from /dim nicks.  Facify the fill-prefix with rcirc-timestamp face.
+       (rcirc-jump-to-first-unread-line): Print message if there is no
+       unread text.
+       (rcirc-clear-unread): New function.
+       (rcirc-markup-text-functions): Add variable.
+       (rcirc-markup-timestamp, rcirc-markup-fill): Add functions.
+       (rcirc-debug): Don't mess with window configuration.
+       (rcirc-send-message): Send message before printing locally.
+       Add SILENT argument, do not print message if non-nil.
+       (rcirc-visible-buffers): New function and variable.
+       (rcirc-window-configuration-change-1): Add function.
+       (rcirc-target-buffer): Make sure ACTIONs don't get sent to the
+       server buffer.
+       (rcirc-clean-up-buffer): Set rcirc-target to nil when finished.
+       (rcirc-fill-paragraph): Add function.
+       (rcirc-record-activity, rcirc-window-configuration-change-1):
+       Only update the activity string if it has actually changed.
+       (rcirc-update-activity-string): Remove padding characters from the
+       mode-line string.
+       (rcirc-disconnect-buffer): New function to be called when a
+       channel is parted or the user quits.
+       (rcirc-server-name): Warn when the server-name hasn't been set.
+       (rcirc-window-configuration-change): Postpone work until
+       post-command-hook.
+       (rcirc-window-configuration-change-1): Update mode-line and
+       overlay arrows here.
+       (rcirc-authenticate): Fixc hanserv identification.
+       (rcirc-default-server): Remove variable.
+       (rcirc): Connect according to rcirc-connections.
+       (rcirc-connections): Add variable.
+       (rcirc-startup-channels-alist): Remove variable.
+       (rcirc-startup-channels): Remove function.
+
+2007-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * diff-mode.el (diff-font-lock-keywords): Fix M. Kifer's last change.
+
+2007-06-13  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>  (tiny change)
 
-2005-02-10  Nick Roberts  <nickrob@snap.net.nz>
+       * term/xterm.el (terminal-init-xterm): Escape parens in character
+       constants.
 
-       * progmodes/gdb-ui.el (gdb-ann3): Re-instate GDB command "set
-       width 0" to prevent word wrapping problems.
+2007-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el: Remove unneeded * from docstrings.
+       Use [:alpha:] and [:alnum:] where applicable.
+       (sh-quoted-subshell): Rewrite to correctly
+       handle nested mixes of `...` and $(...).
+       (sh-apply-quoted-subshell): Remove.
+       (sh-font-lock-syntactic-keywords): Adjust call to sh-quoted-subshell.
+
+       * vc-arch.el (vc-arch-command): Remove bzr.  It's a different program.
+
+2007-06-13  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-ptch.el (ediff-context-diff-label-regexp): Partially undo
+       previous change.
+
+2007-06-12  Tom Tromey  <tromey@redhat.com>
+
+       * subr.el (user-emacs-directory): New defconst.
+       * cmuscheme.el (scheme-start-file):
+       * shell.el (shell):
+       * completion.el (save-completions-file-name):
+       * custom.el (custom-theme-directory):
+       * term/x-win.el (emacs-session-filename):
+       * filesets.el (filesets-menu-cache-file):
+       * thumbs.el (thumbs-thumbsdir):
+       * server.el (server-auth-dir):
+       * image-dired.el (image-dired-dir):
+       (image-dired-db-file):
+       (image-dired-temp-image-file):
+       (image-dired-gallery-dir):
+       (image-dired-temp-rotate-image-file):
+       * play/gamegrid.el (gamegrid-user-score-file-directory):
+       * savehist.el (savehist-file):
+       * tutorial.el (tutorial--saved-dir):
+       * startup.el (auto-save-list-file-prefix): Use user-emacs-directory.
 
-2005-02-09  Kim F. Storm  <storm@cua.dk>
+2007-06-12  Ralf Angeli  <angeli@caeruleus.net>
 
-       * ido.el (ido-file-extensions-order): New defcustom.
-       (ido-file-extension-lessp, ido-file-extension-aux)
-       (ido-file-extension-order): New advanced file ordering.
-       (ido-file-lessp): New simple file ordering.
-       (ido-sort-list): Remove.
-       (ido-make-file-list): Use ido-file-lessp or ido-file-extension-lessp.
-       (ido-make-dir-list, ido-completion-help): Use ido-file-lessp.
+       * scroll-lock.el (scroll-lock-mode): Doc fix.
 
-2005-02-08  Dan Nicolaescu  <dann@ics.uci.edu>
+2007-06-12  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-       * progmodes/grep.el (grep-regexp-alist): Match an optional ^[[K
-       that some versions of grep produce.
-       (grep-mode-font-lock-keywords): Likewise.
+       * ediff-ptch.el (ediff-context-diff-label-regexp): Spurious parenthesis.
 
-2005-02-09  Nick Roberts  <nickrob@snap.net.nz>
+       * ediff-init.el: Doc strings.
 
-       * progmodes/gdb-ui.el (gdb-location-list): New variable.
-       (gdb-cdir): Delete.
-       (gdb-info-breakpoints-custom, gdb-goto-breakpoint)
-       (gdb-source-info): Treat case when source file is in another
-       directory properly.
-       (gdb-get-location): New function.
+2007-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-07  Jay Belanger  <belanger@truman.edu>
+       * emacs-lisp/bytecomp.el (byte-compile-current-group): New var.
+       (byte-compile-file): Bind it.
+       (byte-compile-nogroup-warn): Use it to avoid spurious warnings when the
+       group argument is provided implicitly.
+       (byte-compile-format-warn, byte-compile-from-buffer)
+       (byte-compile-insert-header): Don't hardcode point-min==1.
+       (byte-compile-file-form-require): Remove unused var old-load-list.
+       (byte-compile-eval): Remove unused vars old-autoloads and hist-nil-new.
 
-       * calc/calc-prog.el (calc-write-parse-table-part)
-       (calc-fix-token-name): Fix a check for language type.
+2007-06-12  Michael Kifer  <kifer@cs.stonybrook.edu>
 
-       * calc/calccomp.el (math-compose-expr): Fix a check for language type.
+       * emulation/viper-cmd.el (viper-prefix-arg-com, viper-prefix-arg-value):
+       Display error messages.
+       (viper-prev-destructive-command, viper-insert-prev-from-insertion-ring):
+       Get rid of cl.el dependencies.
 
-2005-02-07  Andre Spiegel  <spiegel@gnu.org>
+       * emulation/viper-init.el (viper-suppress-input-method-change-message):
+       New variable.
+       (viper-activate-input-method-action)
+       (viper-inactivate-input-method-action):
+       Use viper-suppress-input-method-change-message.
 
-       * vc-hooks.el (vc-make-version-backup): Ignore file-errors such
-       as directory not writable.
+       * emulation/viper-kem.el (viper-vi-basic-map): Disable the bindings
+       for C-s, C-r.
 
-2005-02-07  Kim F. Storm  <storm@cua.dk>
+       * emulation/viper-util.el (viper-set-cursor-color-according-to-state):
+       Use viper-replace-overlay-cursor-color instead of
+       viper-replace-overlay-cursor-color.
+       (viper-sit-for-short): Use sit-for with 3 arguments.
 
-       * emulation/cua-base.el (cua-max-undo, cua-undo): Remove.
-       (cua--standard-movement-commands): Remove list.
-       Instead, set CUA property value to move for movement commands.
-       (cua-movement-commands): Remove.  Users must set CUA prop instead.
-       (cua--pre-command-handler): Check CUA property.
-       (cua--init-keymaps): Don't remap undo commands.
-       (cua-mode): Don't call cua--rectangle-on-off.
+       * emulation/viper.el (viper-insert-state-mode-list): Add gud-mode.
+       (viper-major-mode-modifier-list): Add viper-comint-mode-modifier-map
+       to gud-mode.
 
-       * emulation/cua-rect.el (cua--undo-list, cua--tidy-undo-counter)
-       (cua--rect-undo, cua--tidy-undo-lists, cua--rectangle-on-off): Remove.
-       (cua--rect-undo-set-point): New var.
-       (cua--rectangle-undo-boundary): Setup undo apply entry.
-       (cua--rect-undo-handler): New function for rectangle undo.
-       (cua--rect-start-position, cua--rect-end-position): Add.
-       (cua--rectangle-post-command): Call cua--rectangle-set-corners
-       for restored rectangle.  Set point if cua--rect-undo-set-point.
+       * ediff-mult.el (ediff-meta-buffer-brief-message)
+       (ediff-meta-buffer-verbose-message): New variables.
+       (ediff-meta-buffer-message): Variable deleted.
+       (ediff-verbose-help-enabled): New variable.
+       (ediff-toggle-verbose-help-meta-buffer): New function.
+       (ediff-redraw-directory-group-buffer): Made aware of short/verbose
+       message options.
 
-2005-02-06  Jay Belanger  <belanger@truman.edu>
+       * ediff-ptch.el (ediff-context-diff-label-regexp): Better regexp.
+       (ediff-fixup-patch-map): Improve heuristic.
 
-       * calc/calc-lang.el (calc-tex-language): Display more information
-       in messages.
+2007-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * calc/calccomp.el (math-compose-expr): Allow multiline matrices
-       in TeX mode.
+       * log-view.el (log-view-file-re, log-view-message-re): Use \(?1:...\).
+       (log-view-font-lock-keywords): Simplify.
+       (log-view-current-file, log-view-current-tag): Simplify.
 
-2005-02-06  Richard M. Stallman  <rms@gnu.org>
+2007-06-12  Sam Steingold  <sds@gnu.org>
 
-       * emacs-lisp/lisp.el (buffer-end): Doc fix.
+       * vc-arch.el (vc-arch-command): Also try "baz" and "bzr".
 
-2005-02-05  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>  (tiny change)
+2007-06-12  Juanma Barranquero  <lekktu@gmail.com>
 
-       * net/ldap.el (ldap-search-internal): Support attributes with
-       optional descriptions separated by a semi-colon, as in
-       "userCertificate;binary".
+       * desktop.el (desktop-load-locked-desktop): New option.
+       (desktop-read): Use it.
+       (desktop-truncate, desktop-outvar, desktop-restore-file-buffer):
+       Use `when'.
 
-2005-02-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+2007-06-12  Davis Herring  <herring@lanl.gov>
 
-       * x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
-       isn't a cons (i.e. the version is 0).
+       * desktop.el (desktop-save-mode-off): New function.
+       (desktop-base-lock-name, desktop-not-loaded-hook): New variables.
+       (desktop-full-lock-name, desktop-file-modtime, desktop-owner)
+       (desktop-claim-lock, desktop-release-lock): New functions.
+       (desktop-kill): Tell `desktop-save' that this is the last save.
+       Release the lock afterwards.
+       (desktop-buffer-info): New function.
+       (desktop-save): Use it.  Run `desktop-save-hook' where the doc
+       says to.  Detect conflicts, and manage the lock.
+       (desktop-read): Detect conflicts.  Manage the lock.
 
-2005-02-05  Eli Zaretskii  <eliz@gnu.org>
+2007-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * help.el (help-for-help): Doc fix.
+       * emulation/tpu-mapper.el (tpu-emacs-map-key): Use new keymap names.
 
-2005-02-05  Nick Roberts  <nickrob@snap.net.nz>
+       * emulation/tpu-edt.el (tpu-gold-map): Rename from GOLD-map.
+       (tpu-lucid-emacs-p): Remove.  Use (featurep 'xemacs) instead.
+       (CSI-map, GOLD-CSI-map, GOLD-SS3-map, SS3-map): Delete vars.
+       (tpu-gold-map, tpu-global-map): Add all the SS3 and CSI bindings, using
+       keysyms rather than byte sequences.
+       (tpu-copy-keyfile): Don't force the user to use tpu-mapper.el.
 
-       * progmodes/gdb-ui.el: Update copyright.  Put GDB-Frames before
-       GDB-Windows on the menu-bar as this works better.
+2007-06-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-04  Jay Belanger  <belanger@truman.edu>
+       * font-lock.el (font-lock-add-keywords): In case font-lock was only
+       half-activated, forcefully activate it completely.
 
-       * calc/calc-embed.el (calc-embedded-update): Don't put in
-       unnecessary newlines.  Adjust the end of formula marker.
+2007-06-11  Richard Stallman  <rms@gnu.org>
 
-       * calc/calc-lang.el (math-latex-parse-frac): Don't use arguments.
-       (math-latex-parse-two-args): New function.
+       * cus-edit.el (custom-variable-type): Doc fix.
 
-2005-02-03  Lute Kamstra  <lute@gnu.org>
+2007-06-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * help-fns.el (help-with-tutorial): Make sure that users cannot
-       remove the entire text of the tutorial by means of `undo'.
+       * progmodes/sh-script.el (sh-font-lock-backslash-quote)
+       (sh-font-lock-flush-syntax-ppss-cache): New functions.
+       (sh-font-lock-syntactic-keywords): Use them to distinguish the
+       different possible cases for \'.
 
-2005-02-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * complete.el (PC-bindings): Don't bind things already bound in the
+       parent keymap.
 
-       * textmodes/ispell.el (ispell-internal-change-dictionary): Fix problem
-       in recent changes, where the ispell process was repeatedly
-       killed & restarted.
+       * textmodes/bibtex-style.el: New file.
 
-       * international/mule-cmds.el (set-locale-environment): Set file-name
-       coding system to utf-8 on Darwin systems.
-       (set-default-coding-systems): Don't set default-file-name-coding-system
-       on Darwin systems.
+2007-06-11  Riccardo Murri  <riccardo.murri@gmail.com>
 
-2005-02-03  Richard M. Stallman  <rms@gnu.org>
+       * vc-bzr.el: New file.
 
-       * hi-lock.el (hi-lock-mode): Turning on Hi-Lock turns on Font-Lock.
+2007-06-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-02-03  Matt Hodges  <MPHodges@member.fsf.org>
+       * vc-svn.el (vc-svn-program): New var.
+       (vc-svn-command): Use it.
 
-       * faces.el (list-faces-display): Add optional argument.
+2007-06-11  Juanma Barranquero  <lekktu@gmail.com>
 
-2005-02-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * server.el (server-switch-buffer): Remove redundant check.
 
-       * font-core.el (font-lock-default-function): Handle the rare case where
-       only font-lock-keywords is set.
+2007-06-10  Martin Rudalics  <rudalics@gmx.at>
 
-2005-02-02  Kenichi Handa  <handa@m17n.org>
+       * emacs-lisp/bytecomp.el (byte-compile-find-cl-functions):
+       Match against file-name-nondirectory.
+       Fix text on user customization variables.
+       Reported by Johan Bockg\e,Ae\e(Brd <bojohan@dd.chalmers.se>.
 
-       * international/characters.el: Cancel previous change for
-       I-WITH-DOT-ABOVE and DOTLESS-i.
+2007-06-09  Alfred M. Szmidt  <ams@gnu.org>  (tiny change)
 
-       * international/latin-5.el: Cancel previous change.
+       * mail/rmail.el (rmail-movemail-variant-in-use): Fix doc typo.
 
-2005-02-02  Nick Roberts  <nickrob@snap.net.nz>
+2007-06-09  Davis Herring  <herring@lanl.gov>
 
-       * progmodes/gud.el: Correction to syntax in gud-menu-map.
+       * desktop.el (desktop-minor-mode-table): Doc fix.
 
-2005-02-02  Kenichi Handa  <handa@m17n.org>
+2007-06-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * international/latin-5.el (tbl): Setup cases of I-WITH-DOT-ABOVE,
-       DOTLESS-i.
+       * textmodes/css-mode.el (css-navigation-syntax-table):
+       Use set-char-table-range so it also works in the unicode branch.
 
-       * international/characters.el: Setup cases of GREEK-FINAL-SIGMA,
-       Y-WITH-DIAERESIS, I-WITH-DOT-ABOVE, DOTLESS-i.
+2007-06-08  Nick Roberts  <nickrob@snap.net.nz>
 
-       * case-table.el (get-upcase-table): New function.
-       (copy-case-table): Copy upcaes table too if non-nil.
-       (set-case-syntax-delims): Maintain upcase table too.
-       (set-case-syntax-pair): Likewise.
-       (set-upcase-syntax, set-downcase-syntax): New functions.
-       (set-case-syntax): Maintain upcase table too.
+       * help-mode.el (help-xref-forward-stack)
+       (help-xref-stack-forward-item, help-forward-label): New variables.
+       (help-forward): New button type.
+       (help-setup-xref): Initialise help-xref-forward-stack.
+       (help-make-xrefs): Add forward button, if appropriate.
+       (help-xref-go-back): Push item on forward stack.
+       (help-xref-go-forward, help-go-forward): New functions.
 
-2005-02-02  Nick Roberts  <nickrob@snap.net.nz>
+2007-06-07  Chong Yidong  <cyd@stupidchicken.com>
 
-       * progmodes/gdb-ui.el (gdb-goto-info): Delete.
+       * dired.el (dired-mode-map): Remove spurious separator.
 
-       * progmodes/gud.el (gud-goto-info): New function.
-       (gud-tool-bar-map): Use correct icon.
+2007-06-07  Juanma Barranquero  <lekktu@gmail.com>
 
-2005-02-01  Thien-Thi Nguyen  <ttn@gnu.org>
+       * progmodes/ebrowse.el (ebrowse-draw-file-member-info): Doc fix.
 
-       * emacs-lisp/lisp-mode.el (lisp-indent-function): Fix bug:
-       When delegating, order args in the funcall correctly.
+       * progmodes/mixal-mode.el (mixal-operation-codes-alist):
+       * progmodes/idlwave.el (idlwave-one-key-select): Fix typo in docstring.
 
-2005-02-01  Thien-Thi Nguyen  <ttn@gnu.org>
+2007-06-07  Carsten Dominik  <dominik@science.uva.nl>
 
-       * emacs-lisp/lisp-mode.el (lisp-indent-function): Doc fix.
+       * textmodes/org.el: Version number fixed.
 
-2005-02-01  Carsten Dominik  <dominik@science.uva.nl>
+2007-06-07  Glenn Morris  <rgm@gnu.org>
 
-       * textmodes/reftex.el (reftex-access-scan-info): Error out in a
-       buffer not visiting a file.
+       * version.el (emacs-copyright): New constant.
+       * startup.el (fancy-splash-tail): Use emacs-copyright.
+       * calc/calc-help.el (calc-full-help): Use emacs-copyright.
 
-2005-01-31  Jay Belanger  <belanger@truman.edu>
+       * emacs-lisp/bytecomp.el (byte-compile-warnings): Add new option
+       `make-local'.
+       (byte-compile-warnings-safe-p): Add `make-local'.
+       (byte-compile-make-variable-buffer-local):
+       Allow byte-compile-warnings to suppress this warning.
 
-       * calc/calc-embed.el (calc-embedded-find-bounds): Set the formula
-       bound on the line with the formula.
+       * tutorial.el (tutorial--describe-nonstandard-key): Adjust for new
+       format of "menu" description.
+       (tutorial--find-changed-keys): Describe the specific menu a
+       command is in.
 
-2005-01-31  Kim F. Storm  <storm@cua.dk>
+       * dframe.el (dframe-frame-parameter, dframe-mouse-event-p):
+       Rewrite compatibility functions to silence byte-compiler.
 
-       * ses.el (ses-create-cell-variable-range)
-       (ses-destroy-cell-variable-range, ses-reset-header-string)
-       (ses-set-with-undo, ses-unset-with-undo, ses-aset-with-undo)
-       (ses-insert-row): Fix format of apply undo entries.
+2007-06-07  Alfred M. Szmidt  <ams@gnu.org>  (tiny change)
 
-2005-01-31  Jay Belanger  <belanger@truman.edu>
+       * mail/rmailsum.el (rmail-summary-save-buffer): New command.
+       (rmail-summary-mode-map): Add rmail-summary-save-buffer.
 
-       * calc/calc-aent.el (math-read-token): Separate the TeX and LaTeX
-       parts.
+2007-06-07  Eric M. Ludlam  <eric@siege-engine.com>
 
-       * calc/calc-embed.el (calc-embedded-open-formula)
-       (calc-embedded-close-formula): Ignore matrix environments.
+       * emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words): Remove "iff".
 
-       * calc/calc-ext.el (math-read-big-expr): Make LaTeX the default
-       TeX mode.
+2007-06-07  Juanma Barranquero  <lekktu@gmail.com>
 
-       * calc/calc-lang.el (math-function-table, math-oper-table)
-       (math-variable-table): Adjust the LaTeX portions.
+       * progmodes/ebrowse.el (ebrowse-member-table):
+       * textmodes/org.el (org-export-ascii-bullets, org-batch-agenda)
+       (org-batch-agenda-csv): Fix typos in docstrings.
 
-       * calc/calc.el (math-tex-ignore-words): Remove LaTeX portion.
-       (math-latex-ignore-words): New constant.
+2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
 
-2005-01-31  Richard M. Stallman  <rms@gnu.org>
+       * international/mule-cmds.el (toggle-enable-multibyte-characters)
+       (sort-coding-systems, search-unencodable-char): Doc fixes.
+       (coding-system-change-eol-conversion, set-default-coding-systems)
+       (prefer-coding-system, find-multibyte-characters, princ-list)
+       (leim-list-entry-regexp, set-input-method, locale-language-names)
+       (input-method-exit-on-first-char, exit-language-environment-hook)
+       (locale-charset-language-names): Fix typos in docstrings.
 
-       * textmodes/ispell.el (ispell-local-dictionary-overridden): New var.
-       (ispell-local-dictionary): Doc fix.
-       (ispell-dictionary-alist): Don't include ispell-local-dictionary-alist.
-       Don't reinitialize at run time.  Don't defcustom.
-       All uses changed to append ispell-local-dictionary-alist,
-       or check it first.
-       (ispell-current-dictionary): New variable for dictionary in use.
-       (ispell-dictionary): Now used only for global default.
-       (ispell-start-process): Set ispell-current-dictionary,
-       not ispell-dictionary.
-       (ispell-change-dictionary): Use this only for setting
-       user preferences.
-       (ispell-internal-change-dictionary): New function
-       to change the current dictionary in use.
-       (ispell-region, ispell-process-line, ispell-buffer-local-dict):
-       Use ispell-current-dictionary.
-       Handle ispell-local-dictionary-overridden.
-       (ispell-buffer-local-dict): Call ispell-internal-change-dictionary.
+2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
 
-2005-01-31  Jay Belanger  <belanger@truman.edu>
+       * pgg.el (pgg-sign-region, pgg-sign):
+       * ses.el (ses-call-printer):
+       * calendar/icalendar.el (icalendar--diarytime-to-isotime):
+       * textmodes/org.el (org-cycle): Fix typos in docstrings.
 
-       * calc/calc-aent.el (math-read-token): Add support for LaTeX.
+2007-06-06  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el
+       (org-export-region-as-html, org-replace-region-by-html)
+       (org-number-to-letters, org-table-fedit-finish)
+       (org-normalize-color, org-table-fedit-ref-right)
+       (org-date-to-gregorian, org-table-fedit-move)
+       (org-table-convert-refs-to-rc, org-calendar-holiday)
+       (org-table-fedit-toggle-ref-type, org-write-agenda)
+       (org-colgroup-info-to-vline-list, org-agenda-todo-previousset)
+       (org-defkey, org-encode-for-stdout)
+       (org-indent-line-function, org-export-as-html-to-buffer)
+       (org-store-agenda-views, org-update-mode-line)
+       (org-find-if, org-delete-all)
+       (org-table-fedit-convert-buffer, org-emphasize)
+       (org-uniquify, org-table-fedit-lisp-indent)
+       (org-table-fedit-scroll, org-get-todo-sequence-head)
+       (org-table-fedit-scroll-down, org-table-fedit-line-down)
+       (org-table-fedit-ref-left, org-agenda-export-csv-mapper)
+       (org-table-fedit-toggle-coordinates, org-dvipng-color)
+       (org-table-fedit-line-up, org-table-fedit-ref-down)
+       (org-table-formula-from-user, org-mode-flyspell-verify)
+       (org-cycle-show-empty-lines, org-ctrl-c-ret)
+       (org-table-formula-to-user, org-diary-to-ical-string)
+       (orgtbl-export, org-table-fedit-post-command)
+       (org-closed-in-range, org-shiftcontrolright)
+       (org-table-convert-refs-to-an, org-table-hline-and-move)
+       (org-table-formula-less-p, org-format-table-ascii)
+       (org-agenda-get-sexps, org-shift-refpart)
+       (org-diary-sexp-entry, org-time-string-to-absolute)
+       (org-table-show-reference, org-letters-to-number)
+       (org-fix-agenda-info, org-table-fedit-ref-up)
+       (org-table-fedit-shift-reference, org-table-fedit-abort)
+       (org-closest-date, org-shiftcontrolleft)
+       (org-at-heading-or-item-p, org-rematch-and-replace)
+       (org-agenda-todo-nextset, org-export-grab-title-from-buffer):
+       New functions.
+       (org-table-edit-scroll-down, org-finish-edit-formulas)
+       (org-table-edit-next-field, org-abort-edit-formulas)
+       (org-font-lock-level, org-export-find-first-heading-line)
+       (org-table-edit-line-down, org-table-edit-backward-field)
+       (org-edit-formula-lisp-indent, org-table-edit-move)
+       (org-check-log-option, org-this-word)
+       (org-table-edit-line-up, org-table-edit-formulas-post-command)
+       (org-agenda-file-to-end, org-expand-file-name)
+       (org-fake-empty-table-line, org-table-edit-scroll)
+       (org-toggle-log-option, org-show-reference): Function removed.
+       (org-inhibit-invisibility, org-table-formula-make-cmp-string):
+       New defsubsts.
+       (org-unmodified, org-batch-store-agenda-views)
+       (org-batch-agenda-csv): New macro.
+       (org-agenda-export): New customization group.
+       (org-agenda-skip-deadline-if-done, org-agenda-remove-tags)
+       (org-highest-priority, org-agenda-exporter-settings)
+       (org-log-done-with-time, org-replace-disputed-keys)
+       (org-format-latex-header, org-export-table-header-tags)
+       (org-cycle-separator-lines, org-export-table-data-tags)
+       (org-icalendar-include-sexps)
+       (org-empty-line-terminates-plain-lists)
+       (org-log-repeat, org-special-ctrl-a)
+       (org-table-use-standard-references, org-disputed-keys)
+       (org-export-skip-text-before-1st-heading, org-agenda-with-colors)
+       (org-agenda-export-html-style): New option.
+       (org-allow-auto-repeat, org-agenda-remove-tags-when-in-prefix)
+       (org-CUA-compatible): Option removed.
+       (org-agenda-structure, org-sexp-date): New face.
+       (org-todo-keywords-for-agenda, org-not-done-keywords)
+       (org-planning-or-clock-line-re, org-agenda-name)
+       (org-table-colgroup-info, org-todo-sets)
+       (constants-unit-system, org-clock-mode-line-entry)
+       (org-mode-line-timer, org-table-current-begin-pos)
+       (org-todo-keywords-1, org-mode-line-string)
+       (org-table-clean-did-remove-column, org-table-fedit-map)
+       (org-clock-heading, org-table-buffer-is-an)
+       (org-agenda-info, org-done-keywords)
+       (org-done-keywords-for-agenda, org-todo-heads)
+       (org-todo-kwd-alist, org-clock-start-time): New variable.
+       (org-todo-kwd-priority-p, org-edit-formulas-map)
+       (org-repeat-re, org-todo-kwd-max-priority)
+       (org-version, org-done-string)
+       (org-table-clean-did-remove-column-1, org-disputed-keys):
+       Remove variables.
+       (org-table-translate-regexp, org-repeat-re, org-version): New consts.
+       (org-ts-lengths): Constant removed.
+       (org-follow-gnus-link): Don't ask how many articles to read.
+       (org-export-find-first-export-line): Rename from
+       `org-export-find-first-heading'.
+       Use `org-export-skip-text-before-1st-heading'.
+       (org-table-fedit-post-command): Rename from
+       `org-table-edit-formulas-post-command'.
+       (org-table-fedit-finish): Rename from `org-finish-edit-formulas'.
+       (org-table-fedit-abort): Rename from `org-abort-edit-formulas'.
+       (org-table-fedit-lisp-indent): Rename from
+       `org-edit-formula-lisp-indent'.
+       (org-table-show-reference): Rename from `org-show-reference'.
+       (org-table-store-formulas): Use `org-table-formula-less-p'.
+       (org-table-edit-formulas): Position cursor to current field equation.
+       (org-update-checkbox-count, org-hide-archived-subtrees)
+       (org-timestamp-up-day, org-timestamp-down-day)
+       (org-shiftmetaleft, org-shiftmetaright, org-shiftmetaup)
+       (org-shiftmetadown, org-metaleft, org-metaright, org-metaup)
+       (org-metadown, org-shiftup, org-shiftdown, org-shiftright)
+       (org-shiftleft, org-ctrl-c-ctrl-c, org-context):
+       Let `org-on-heading-p' also check for invisible heading.
+       (org-read-date): Match am/pm times.
+       (org-eval-in-calendar): Fix default date in prompt.
 
-       * calc/calc-ext.el: Add calc-latex-language to autoloads.
-       (calc-mode-map): Add calc-latex-language.
+2007-06-05  Chong Yidong  <cyd@stupidchicken.com>
 
-       * calc/calc-lang.el (calc-latex-language, math-latex-parse-frac)
-       (math-latex-print-frac): New functions.
-       (math-oper-table, math-function-table, math-variable-table)
-       (math-complex-format, math-input-filter): Add latex properties.
-       (calc-set-language): Set math-expr-special-function-mapping.
+       * files.el (auto-mode-alist): Separate "ChangeLog.1" and
+       "ChangeLog.a" entries, giving the latter lower priority.
 
-       * calc/calc-prog.el (calc-edit-user-syntax, calc-fix-token-name)
-       (calc-write-parse-table-part): Add LaTeX support.
+2007-06-05  Juanma Barranquero  <lekktu@gmail.com>
 
-       * calc/calc.el (calc-language): Adjust docstring.
-       (calc-set-mode-line): Add LaTeX support.
-       (math-expr-special-function-mapping): New variable.
-       (math-tex-ignore-words): Add to list.
+       * faces.el (face-id): If the argument is a face alias,
+       return the ID of the target face.
 
-       * calc/calccomp.el (math-compose-expr, math-compose-rows):
-       Add LaTeX support.
-       (math-compose-expr): Add support for special functions.
+2007-06-05  Michael Albinus  <michael.albinus@gmx.de>
 
-       * calc/calc-help.el (calc-d-prefix-help): Add LaTeX.
+       * net/socks.el (top): Remove unnecessary copyright line.
 
-2005-01-31  Nick Roberts  <nickrob@snap.net.nz>
+2007-06-04  Chong Yidong  <cyd@stupidchicken.com>
 
-       * progmodes/gdb-ui.el (gdb-memory-address)
-       (gdb-memory-repeat-count, gdb-memory-format, gdb-memory-unit)
-       (gdb-memory-mode-map, gdb-memory-format-keymap)
-       (gdb-memory-format-menu, gdb-memory-unit-keymap)
-       (gdb-memory-unit-menu): New variables for a buffer
-       that lets the user examine program memory.
-       (gdb-memory-set-address, gdb-memory-set-repeat-count)
-       (gdb-memory-format-binary, gdb-memory-format-octal)
-       (gdb-memory-format-unsigned, gdb-memory-format-signed)
-       (gdb-memory-format-hexadecimal, gdb-memory-format-menu)
-       (gdb-memory-format-menu-1, gdb-memory-unit-giant)
-       (gdb-memory-unit-word, gdb-memory-unit-halfword)
-       (gdb-memory-unit-byte, gdb-memory-unit-menu)
-       (gdb-memory-unit-menu-1, gdb-make-header-line-mouse-map)
-       (gdb-memory-mode, gdb-memory-buffer-name)
-       (gdb-display-memory-buffer, gdb-frame-memory-buffer):
-       New functions for above buffer.
+       * longlines.el (longlines-auto-wrap): Handle argument correctly.
 
-2005-01-30  Richard M. Stallman  <rms@gnu.org>
+2007-06-04  Michael Albinus  <michael.albinus@gmx.de>
 
-       * cus-edit.el (custom-bury-buffer): Function deleted.
-       (custom-buffer-done-function): Option deleted.
-       (custom-buffer-done-kill): New replacement option.
-       (Custom-buffer-done): Call quit-window.
-       (custom-buffer-create-internal): Update for above changes.
+       * net/socks.el: New file, taken from w3 repository.
+       (top): Update Copyright.  Don't load cl.el.
+       (all): Replace `case' by `cond', `string-to-int' by
+       `string-to-number', and `process-kill-without-query' by
+       `set-process-query-on-exit-flag'.
+       (socks-char-int): Remove defalias and all occurrences.
 
-2005-01-29  Luc Teirlinck  <teirllm@auburn.edu>
+2007-06-04  Juanma Barranquero  <lekktu@gmail.com>
 
-       * simple.el (undo-ask-before-discard): New var.
-       (undo-outer-limit-truncate): Implement it.
-       (undo-extra-outer-limit): Doc update.
+       * progmodes/compile.el (compilation-find-file, compilation-handle-exit):
+       Fix typos in docstrings.
+       (compilation-search-path, compilation-buffer-name-function): Doc fixes.
+       (compilation-finish-function): Fix typo in obsolescence declaration.
 
-2005-01-29  Richard M. Stallman  <rms@gnu.org>
+2007-06-03  Sam Steingold  <sds@gnu.org>
 
-       * ses.el (undo-more): Delete defadvice.
-       (ses-begin-change): Doc fix.
+       * progmodes/compile.el: Add TIMESTAMP to the LOC data structure, to
+       handle unending automatic recompilation of changed files (`omake -P').
+       (compilation-loop): VISITED is now 5th CDR.
+       (compilation-next-error-function): Set TIMESTAMP.
 
-       * dired.el (dired-mode-map): Remap `undo' and `advertised-undo'
-       instead of rebinding C-x u and C-_.
+2007-06-03  Sam Steingold  <sds@gnu.org>
 
-       * files.el (normal-backup-enable-predicate): Return nil for files
-       in /tmp, regardless of temporary-file-directory.
+       * files.el (kill-buffer-ask): New function.
+       (kill-some-buffers): Use it.
+       (kill-matching-buffers): New user command.
 
-       * man.el (Man-getpage-in-background): Disable undo in Man buffer.
+2007-06-01  David Kastrup  <dak@gnu.org>
 
-       * rect.el (delete-rectangle-line, delete-extract-rectangle-line)
-       (open-rectangle, delete-whitespace-rectangle-line)
-       (clear-rectangle-line): If FILL, pass t instead of FILL
-       for move-to-column's 2nd arg.
+       * dired.el (dired-recursive-deletes, dired-recursive-copies):
+       Change default to `top'.
 
-       * simple.el (undo): Fix the test for continuing a series of undos.
-       (undo-more): Set pending-undo-list to t when we reach end.
-       (pending-undo-list): Move up defvar.
+2007-05-31  Richard Stallman  <rms@gnu.org>
 
-       * wid-edit.el (widget-button-click):
-       Shorten the range of the track-mouse binding.
+       * dired.el (dired-do-flagged-delete, dired-do-delete): Doc fix.
 
-       * comint.el (comint-insert-input): Undo previous changes;
-       use last-input-event in interactive spec.
+2007-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-01-29  Eli Zaretskii  <eliz@gnu.org>
+       * textmodes/css-mode.el: New file.
 
-       * progmodes/compile.el (compilation-start): Bind buffer-read-only
-       to nil before invoking call-process.  Reset buffer's modified flag
-       after fontifying it in the no-async branch.
+2007-05-30  Michael Olson  <mwolson@gnu.org>
 
-       * wid-edit.el (widget-specify-button): If mouse pointer shape
-       cannot be changed, use mouse face instead.
+       * emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has
+       died and we are trying to send a signal to it.  The program using
+       tq.el should periodically check to see whether the process has
+       died and react appropriately -- this is not the responsibility of
+       tq.el, and is consistent with the rest of the tq.el source code.
 
-2005-01-29  Nick Roberts  <nickrob@snap.net.nz>
+2007-05-29  Martin Rudalics  <rudalics@gmx.at>
 
-       * progmodes/gdb-ui.el (gdb-info-breakpoints-custom)
-       (gdb-goto-breakpoint): Make breakpoint handling work on template
-       functions in C++.  Reported by Martin Reed <mjreed@essex.ac.uk>.
-       (gdb-assembler-custom): Update to recognize breakpoint information
-       added on 2005-01-19.
+       * textmodes/table.el (table--point-entered-cell-function)
+       (table--point-left-cell-function):
+       Bind `inhibit-point-motion-hooks' to t.
 
-2005-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-05-29  Nikolaj Schumacher  <n_schumacher@web.de>  (tiny change)
 
-       * progmodes/scheme.el (scheme-mode-variables): Set comment-add.
-       (dsssl-mode): Use define-derived-mode.
-       (scheme-mode-initialize): Remove.
-       (scheme-mode): Use run-mode-hooks.
+       * emacs-lisp/rx.el (rx): Doc fix.
 
-       * cus-edit.el (customize-group-other-window)
-       (custom-buffer-create-other-window): Don't override special-display-*.
-       (custom-mode-map): Make it dense.
+2007-05-28  Juanma Barranquero  <lekktu@gmail.com>
 
-       * emacs-lisp/lisp-mode.el (eval-defun-1): Make sure `defvar' always
-       sets the default value.
+       * progmodes/idlwave.el (idlwave-routines): Fix typo in docstring.
 
-2005-01-28  Eli Zaretskii  <eliz@gnu.org>
+2007-05-28  Michael Albinus  <michael.albinus@gmx.de>
 
-       * descr-text.el: Add more keywords.
+       Sync with Tramp 2.0.56.
 
-2005-01-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * net/tramp.el:
+       * net/tramp-ftp.el:
+       * net/tramp-smb.el:
+       * net/tramp-util.el:
+       * net/tramp-vc.el:
+       Don't load cl.el, because that pollutes the namespace.  Replace cl
+       macros by their implementations where necessary.  Requested by
+       Richard Stallman <rms@gnu.org>.
 
-       * speedbar.el: Avoid unnecessary use of locate-library.
+       * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it
+       doesn't exist.
+       (with-parsed-tramp-file-name): Protect debug spec during compilation.
+       (tramp-handle-insert-directory): Check (featurep 'ls-lisp).
+       (tramp-file-name-p, tramp-file-name-multi-method)
+       (tramp-file-name-method, tramp-file-name-user)
+       (tramp-file-name-host, tramp-file-name-localname): New defuns,
+       replacing defstruct `tramp-file-name'.
+       (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1)
+       (tramp-dissect-file-name, tramp-dissect-multi-file-name):
+       Apply `vector' instead of `make-tramp-file-name'.
+       (tramp-handle-make-auto-save-file-name):
+       Apply `tramp-temporary-file-directory' for compatibility reasons.
+       (tramp-completion-mode): Use `natnump' instead of `wholenump'
+       because of XEmacs.
+       (tramp-completion-mode): `last-input-event' is nil when XEmacs is
+       started.
 
-       * international/mule-cmds.el (standard-display-european-internal):
-       Don't fiddle with latin-1 non-break space any more since it's now
-       special cased in the C code.
-       Don't "do&undo" setting for 160 (especially, don't undo incorrectly).
+2007-05-28  Chong Yidong  <cyd@stupidchicken.com>
 
-2005-01-26  Luc Teirlinck  <teirllm@auburn.edu>
+       * textmodes/sgml-mode.el (sgml-point-entered): Use condition-case.
 
-       * cus-start.el (all): Add `undo-outer-limit'.
+2007-05-27  Tetsurou Okazaki  <okazaki@be.to>  (tiny change)
 
-2005-01-25  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+       * log-edit.el (log-edit-changelog-paragraph): Return point-max
+       as the end of the ChangeLog paragraph when it ends without a line
+       termination.
 
-       * textmodes/bibtex.el (bibtex-format-entry):
-       Use `bibtex-empty-field-re' only on the text of fields, not on entire
-       field lines.
-       (bibtex-autofill-entry): Use `bibtex-empty-field-re' on a string,
-       not on part of a buffer.
+2007-05-27  Ryan Yeske  <rcyeske@gmail.com>
 
-2005-01-25  Lute Kamstra  <lute@gnu.org>
+       * net/webjump.el (webjump-sample-sites):
+       Add simple Wikipedia query.
 
-       * textmodes/bibtex.el (bibtex-empty-field-re): Don't match
-       nonempty field text strings like "{letters\\macro{}more letters}".
-       Clarify docstring.
-       (bibtex-sort-entry-class, bibtex-autokey-titleword-ignore)
-       (bibtex-entry-offset, bibtex-parse-association)
-       (bibtex-parse-field-name): Fix typos in docstrings.
-       (bibtex-field-list, bibtex-find-crossref): Fix typos in error messages.
+2007-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-01-24  Carsten Dominik  <dominik@science.uva.nl>
+       * emacs-lisp/derived.el (define-derived-mode): Remove bogus
+       compatibility code.
 
-       * textmodes/reftex-global.el (reftex-isearch-push-state-function)
-       (reftex-isearch-pop-state-function, reftex-isearch-isearch-search)
-       (reftex-isearch-switch-to-next-file, reftex-isearch-turn-off)
-       (reftex-isearch-turn-on, reftex-isearch-minor-mode): New functions.
+       * emacs-lisp/copyright.el (copyright-names-regexp): New var.
+       (copyright-update-year): Use it.
 
-       * textmodes/reftex.el (reftex-mode-menu): Add entry for reftex
-       isearch minor mode.
+       * edmacro.el (edmacro-format-keys): Use current-active-maps.
 
-2005-01-24  Luc Teirlinck  <teirllm@auburn.edu>
+       * ediff-init.el (ediff-defvar-local, ediff-with-current-buffer):
+       Add indentation and debugging info.  Fix up comment convention.
 
-       * help-at-pt.el (help-at-pt-display-when-idle): Add autoload cookie.
+       * cus-dep.el (custom-make-dependencies): Simplify.
 
-2005-01-24  Lute Kamstra  <lute@gnu.org>
+       * composite.el (compose-region, decompose-region):
+       Use inhibit-read-only and restore-buffer-modified-p.
 
-       * textmodes/ispell.el (ispell-dictionary-alist-4): Rewrite the
-       CASECHARS and NOT-CASECHARS regular expressions of the
-       "nederlands" and "nederlands8" dictionaries to prevent a "Range
-       striding over charsets" error.
+       * xt-mouse.el (xterm-mouse-truncate-wrap): New function.
+       (xterm-mouse-event): Use it.
 
-2005-01-24  Jay Belanger  <belanger@truman.edu>
+2007-05-25  Juanma Barranquero  <lekktu@gmail.com>
 
-       * calc/calc-store.el (calc-declare-variable): Use calc-var-name to
-       display variable name.
+       * bs.el (bs-cycle-previous): Don't modify the cycle list until
+       `switch-to-buffer' has returned succesfully.
+       (bs-cycle-next): Ditto.  Also, don't bury the buffer when the
+       window is dedicated (it could iconify the frame).
 
-2005-01-24  Kenichi Handa  <handa@m17n.org>
+2007-05-25  Miles Bader  <miles@fencepost.gnu.org>
 
-       * international/encoded-kb.el (encoded-kbd-iso2022-single-shift):
-       Fix setting of the element of encoded-kbd-iso2022-invocations.
+       * vc-hooks.el (vc-find-root): Fix file attribute test.
 
-2005-01-24  Nick Roberts  <nickrob@snap.net.nz>
+2007-05-24  Richard Stallman  <rms@gnu.org>
 
-       * progmodes/gdb-ui.el (gdb-goto-breakpoint, gdb-frames-select)
-       (gdb-threads-select): Change to also accept mouse events.
-       (gdb-mouse-goto-breakpoint, gdb-frames-mouse-select)
-       (gdb-threads-mouse-select): Delete.
+       * textmodes/flyspell.el (flyspell-correct-word-before-point):
+       Don't let opoint be nil.
+       (flyspell-emacs-popup): Explicit error if no dialogs.
 
-2005-01-23  Luc Teirlinck  <teirllm@auburn.edu>
+2007-05-24  Chong Yidong  <cyd@stupidchicken.com>
 
-       * files.el (insert-directory): Take care of empty directory,
-       listed without -a switch.
+       * image-mode.el (image-forward-hscroll, image-backward-hscroll)
+       (image-next-line, image-previous-line, image-scroll-up)
+       (image-scroll-down, image-bol, image-eol, image-bob, image-eob):
+       New functions.
+       (image-mode-map): Remap motion commands.
+       (image-mode-text-map): New keymap for viewing images as text.
+       (image-mode): Use image-mode-map.
+       (image-toggle-display): Toggle auto-hscroll-mode and mode keymaps.
 
-2005-01-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-05-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * textmodes/refill.el (refill-post-command-function):
-       Add `indent-new-comment-line' and `reindent-then-newline-and-indent'
-       to the list of functions that we should be careful not to undo.
-       (refill-late-fill-paragraph-function): Remove.
-       (refill-saved-state): New var.
-       (refill-mode): Use it to save fill-paragraph-function.
-       Save also the value of auto-fill-function.
+       * textmodes/fill.el (canonically-space-region): Make the second arg
+       a marker if it's not already the case.
 
-       * term/w32-win.el: Simplify code.
+2007-05-23  Eli Zaretskii  <eliz@gnu.org>
 
-2005-01-23  Kim F. Storm  <storm@cua.dk>
+       * tar-mode.el (tar-header-block-summarize, tar-summarize-buffer)
+       (tar-get-descriptor): Handle type 55, an extended pax header.
 
-       * simple.el (line-move): Adapt to new return value from
-       pos-visible-in-window-p.
+2007-05-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * simple.el (line-move): Fix last change.  Check partial
-       visibility at point rather than at window-start.
+       * autoinsert.el (auto-insert-alist): Quote elisp sample code so as not
+       to confuse outline-minor-mode.
 
-2005-01-22  Jason Rumney  <jasonr@gnu.org>
+2007-05-23  Eli Zaretskii  <eliz@gnu.org>
 
-       * term/w32-win.el (xw-defined-colors): Remove debug-message.
+       * tar-mode.el (tar-file-name-handler): New function.
+       (tar-extract): Bind file-name-handler-alist to it to force
+       find-buffer-file-type-coding-system behave as if the file being
+       extracted existed.  Use last-coding-system-used to force
+       buffer-file-coding-system to what decode-coding-region actually
+       used to decode the file.
 
-2005-01-22  David Kastrup  <dak@gnu.org>
+2007-05-23  Nikolaj Schumacher  <n_schumacher@web.de>  (tiny change)
 
-       * progmodes/grep.el: Add alias `find-grep' for `grep-find'.
+       * progmodes/compile.el (compilation-handle-exit):
+       `compilation-finish-function' may change the current buffer.
 
-2005-01-22  Eli Zaretskii  <eliz@gnu.org>
+2007-05-22  Richard Stallman  <rms@gnu.org>
 
-       * type-break.el (type-break-mode): Add a test for
-       type-break-file-name being non-nil.
+       * files.el (set-auto-mode): Doc fix.
 
-2005-01-22  Toby Allsopp  <Toby.Allsopp@navman.com>  (tiny change)
+2007-05-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * net/eudc.el (top level): Call (message "") via progn, so that
-       eudc-options-file is loaded.
+       * help-fns.el (find-source-lisp-file): New function.
+       (describe-function-1): Use find-source-lisp-file to find source
+       file in compile tree.
 
-2005-01-22  Kim F. Storm  <storm@cua.dk>
+2007-05-22  Eli Zaretskii  <eliz@gnu.org>
 
-       * simple.el (line-move-1): Rename from line-move.
-       (line-move): New function that adjusts vscroll for partially
-       visible rows, and calls line-move-1 otherwise.
+       * dos-w32.el (find-buffer-file-type-coding-system): Doc fix.
 
-2005-01-21  Ren\e,Ai\e(B Kyllingstad  <listmailxemacs@kyllingstad.com>
+2007-05-22  Juanma Barranquero  <lekktu@gmail.com>
 
-       * pcomplete.el: Define pcomplete-read-event instead of read-event,
-       since it's not a complete read-event implementation.
+       * emacs-lisp/easy-mmode.el (define-minor-mode)
+       (easy-mmode-define-navigation): Fix typos in docstrings.
 
-2005-01-20  Jay Belanger  <belanger@truman.edu>
+2007-05-22  Glenn Morris  <rgm@gnu.org>
 
-       * calc/calc-ext.el (calc-fancy-prefix-other-key): Set prefix arg
-       for called function.
+       * files.el (auto-mode-alist): Open `.asd' files in lisp-mode.
 
-2005-01-20  Steven Tamm  <steventamm@mac.com>
+2007-05-22  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * term/mac-win.el (process-connection-type): Remove.
-       Controlled now by s/darwin.h:PTY_ITERATION.
+       * mail/mail-extr.el (mail-extract-address-components):
+       Recognize non-ASCII characters except for NBSP as words.
 
-2005-01-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-05-21  Trent Buck  <trentbuck@gmail.com>  (tiny change)
 
-       * window.el (handle-select-window): Don't switch window when we're
-       in the minibuffer.
+       * net/rcirc.el (rcirc-fill-column): Allow `window-width'.
+       (rcirc-print): Handle `window-width'.
+       (rcirc-buffer-maximum-lines): Doc fix.
 
-2005-01-10  Paul Pogonyshev  <pogonyshev@gmx.net>
+2007-05-21  Chong Yidong  <cyd@stupidchicken.com>
 
-       * subr.el (dotimes-with-progress-reporter): New macro.
+       * image-mode.el (image-toggle-display): Don't clear image cache.
+       Only use filename in image spec if the file is readable.
+       Call image-refresh.
 
-       * ses.el (ses-dotimes-msg): Remove macro.
-       Use `dotimes-with-progress-reporter' instead.
+       * image.el (image-type-from-file-name, image-type): Simplify.
+       (image-type-auto-detected-p): Don't scan auto-mode-alist.
 
-2005-01-19  Steven Tamm  <steventamm@mac.com>
+       * files.el (magic-mode-alist): Remove image-type-auto-detected-p.
+       (magic-fallback-mode-alist): Add image-type-auto-detected-p.
 
-       * term/mac-win.el (process-connection-type): Use new
-       operating-system-release variable to use ptys on Darwin 7 (OS X
-       10.3) when using carbon build.
+2007-05-20  Nick Roberts  <nickrob@snap.net.nz>
 
-2005-01-19  Jay Belanger  <belanger@truman.edu>
+       * t-mouse.el (t-mouse-mode): Reset t-mouse-mode to nil if there
+       is an error.
 
-       * calc/calc-ext.el (calc-fancy-prefix-other-key): Don't clear
-       flags if the last command was a tab or M-tab.
+       * term/linux.el (terminal-init-linux): Don't signal an error
+       if gpm isn't running.
 
-       * calc/calc-prog.el (calc-user-define-edit): Put original formula
-       in formula editing buffer.
+2007-05-20  Nick Roberts  <nickrob@snap.net.nz>
 
-2005-01-19  Nick Roberts  <nickrob@snap.net.nz>
+       * t-mouse.el: Reduce to a minor-mode macro call.
+       (t-mouse-mode): Remove the lighter.
 
-       * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Add help-echo for
-       breakpoint image symbol in margin.
+       * term/linux.el (terminal-init-linux): Enable t-mouse by default.
 
-2005-01-19  Jay Belanger  <belanger@truman.edu>
+2007-05-19  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * calc/calc-prog.el (calc-execute-kbd-macro):
-       Ignore calc-keep-arg-flag.
+       * files.el (auto-mode-alist): Change the regexp so that
+       ChangeLog.unicode and ChangeLog.multi-tty use change-log-mode.
 
-2005-01-19  Kenichi Handa  <handa@m17n.org>
+2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 
-       * textmodes/ispell.el (ispell-looking-at): New function.
-       (ispell-process-line): Use ispell-looking-at to compare the ispell
-       output and the buffer contents.
+       * Version 22.1 released.
 
-2005-01-18  Jay Belanger  <belanger@truman.edu>
+2007-05-19  Chong Yidong  <cyd@stupidchicken.com>
 
-       * calc/calc.el (calc-display-raw): Fix docstring.
+       * paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20
+       changes.
 
-2005-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-05-19  Kevin Ryde  <user42@zip.com.au>
 
-       * simple.el (blink-matching-open): Strip extra info from syntax.
+       * info.el (Info-fontify-node): Fontify https as well as http and ftp.
 
-       * progmodes/sh-script.el (sh-here-doc-open-re): Don't allow | or other
-       funny chars in the end-of-here-doc marker.
+2007-05-18  Thien-Thi Nguyen  <ttn@gnuvola.org>
 
-2005-01-19  Nick Roberts  <nickrob@snap.net.nz>
+       * textmodes/sgml-mode.el: Revert last change.
 
-       * progmodes/gdb-ui.el (gdb-put-string): Copy/create strings so
-       that enable/disabled state of breakpoints is shown correctly in
-       fringe and on ttys.
-       (gdb-put-breakpoint-icon, gdb-info-breakpoints-custom):
-       Add breakpoint information as text properties.
-       (gdb-mouse-toggle-breakpoint):
-       Rename to gdb-mouse-set-clear-breakpoint.
-       (gdb-mouse-toggle-breakpoint): New function.  Enable/disable
-       breakpoints in the margin.
-       (gdb-remove-strings): Simplify.
+2007-05-18  Richard Stallman  <rms@gnu.org>
 
-2005-01-17  Jay Belanger  <belanger@truman.edu>
+       * simple.el (push-mark): Doc fix.
 
-       * calc/calc-yank.el (calc-edit-mode): Inhibit read-only when
-       erasing buffer.
+2007-05-18  Rob Riepel  <riepel@Stanford.EDU>
 
-2005-01-17  Richard M. Stallman  <rms@gnu.org>
+       * emulation/tpu-edt.el (CSI-map, SS3-map): Move from global-map to
+       tpu-global-map.
+       (tpu-original-global-map): Variable deleted.
+       (tpu-control-keys-map): New keymap variable.
+       (tpu-set-control-keys): Use tpu-reset-control-keys rather than
+       setting keymapping directly.
+       (tpu-reset-control-keys): Use tpu-control-keys-map instead of
+       tpu-global-map.
+       (tpu-edt-on): Activate the tpu-global-map.
+       (tpu-edt-off): Deactivate the tpu-global-map.
 
-       * progmodes/grep.el (grep-find): Copy from `grep' the condition
-       for calling grep-compute-defaults.
+2007-05-18  Ryan Yeske  <rcyeske@gmail.com>
 
-       * play/decipher.el (decipher-mode): Don't call decipher-read-alphabet
-       if buffer is empty.
+       * textmodes/ispell.el (ispell-get-word): Return markers
+       for start and end positions.
+       (ispell-word): Assume END is a marker.
 
-       * emacs-lisp/lisp.el (backward-kill-sexp, kill-sexp): Doc fixes.
+2007-05-17  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-2005-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * printing.el: Group together all XEmacs/Emacs definitions.
+       (pr-version): New version 6.9.
+       (pr-global-menubar, pr-menu-char-height, pr-menu-char-width): New funs.
+       (pr-menu-char-height, pr-menu-char-width): Fix initialization code.
+       (pr-menu-bind): Fix code.
+       (pr-e-frame-char-height, pr-e-frame-char-width)
+       (pr-e-mouse-pixel-position, pr-x-add-submenu, pr-x-event-function)
+       (pr-x-event-object, pr-x-find-menu-item, pr-x-font-height)
+       (pr-x-font-width, pr-x-get-popup-menu-response, pr-x-make-event)
+       (pr-x-misc-user-event-p, pr-x-relabel-menu-item, pr-x-event-x-pixel)
+       (pr-x-event-y-pixel): Aliases eliminated.
+       (pr-xemacs-global-menubar): Macro moved.
+       (current-menubar, current-mouse-event, zmacs-region-stays)
+       (deactivate-mark, pr-menu-position, pr-menu-state, pr-ps-name-old)
+       (pr-txt-name-old, pr-ps-utility-old, pr-even-or-odd-old, pr-temp-menu):
+       Vars moved.
+       (pr-region-active-p, pr-menu-position, pr-menu-lookup, pr-menu-lock)
+       (pr-update-mode-line, pr-do-update-menus, pr-menu-alist)
+       (pr-relabel-menu-item, pr-menu-set-ps-title, pr-menu-set-txt-title)
+       (pr-menu-set-utility-title, pr-even-or-odd-pages)
+       (pr-f-set-keymap-parents, pr-f-set-keymap-name, pr-f-read-string)
+       (pr-keep-region-active, pr-menu-get-item, pr-menu-set-item-name): Funs
+       moved.
+
+2007-05-17  Christian Plate  <cplate@web.de>  (tiny change)
+
+       * textmodes/sgml-mode.el (sgml-tag):
+       Fix bug: Call sgml-transformation-function.
 
-       * hilit-chg.el (highlight-changes-mode): Don't autoload.
+2007-05-17  Martin Rudalics  <rudalics@gmx.at>
 
-       * bindings.el (mode-line-mode-menu): Use bound-and-true-p for all the
-       non-preloaded variables.
+       * hilit-chg.el (highlight-changes-rotate-faces): Don't set
+       modified flag of buffer.  Use `inhibit-modification-hooks'.
 
-2005-01-17  Steven Tamm  <steventamm@mac.com>
+2007-05-16  Richard Stallman  <rms@gnu.org>
 
-       * textmodes/tex-mode.el (tex-start-shell): Adding -i to the
-       tex-shell cause to force interactivity when using pipes.
+       * buff-menu.el (Buffer-menu-sort-column): Doc fix.
 
-2005-01-17  Kim F. Storm  <storm@cua.dk>
+2007-05-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * simple.el (just-one-space): Make arg optional.
+       * files.el (magic-mode-alist, magic-fallback-mode-alist):
+       Move the *ml, Postscript, and XmCD entries to the fallback part.
 
-2005-01-17  Nick Roberts  <nickrob@snap.net.nz>
+       * files.el (magic-fallback-mode-alist):
+       Rename from file-start-mode-alist.
 
-       * xt-mouse.el (xterm-mouse-event): Set new optional fourth arg in
-       posn-at-x-y to t to access left-margin.
+2007-05-16  Nikolaj Schumacher  <n_schumacher@web.de>  (tiny change)
 
-2005-01-16  Michael Albinus  <michael.albinus@gmx.de>
+       * progmodes/compile.el (compilation-handle-exit): Quote first
+       argument of `run-hook-with-args'.
 
-       Sync with Tramp 2.0.47.
+2007-05-16  Juanma Barranquero  <lekktu@gmail.com>
 
-       * net/tramp.el (tramp-operation-not-permitted-regexp): New defcustom,
-       catching keep-date problems in cp/scp operations.
-       (tramp-handle-copy-file): Don't call `set-file-modes'
-       unconditionally.  Specialized functions should know better what is
-       necessary.  This improves performance a little bit, and the
-       functions could catch errors with `cp -p' and `scp -p'.
-       (tramp-do-copy-or-rename-file-via-buffer)
-       (tramp-do-copy-or-rename-file-out-of-band): Call `set-file-modes'
-       when appropriate.
-       (tramp-do-copy-or-rename-file-directly): Mask `cp -p' error.
-       Call `set-file-modes' when appropriate.
-       (tramp-action-out-of-band): Mask `scp -p' error.  Reported by Isak
-       Johnsson <isak@hypergene.com>.
-       (tramp-get-buffer, tramp-get-debug-buffer): Discard the undo list
-       of both Tramp buffer and debug buffer.  Reported by Joakim Verona
-       <joakim@verona.se>.
-       (tramp-file-name-for-operation): Mark `shell-command' as magic for
-       Emacs only.
+       * buff-menu.el (Buffer-menu-sort-column):
+       * dabbrev.el (dabbrev-upcase-means-case-search):
+       * dired.el (dired-recursive-deletes, dired-recursive-copies):
+       * info.el (Info-current-subfile):
+       * ls-lisp.el (ls-lisp-verbosity):
+       * msb.el (msb-menu-cond):
+       * pcvs.el (cvs-dired-use-hook):
+       * simple.el (set-mark-command-repeat-pop):
+       * time.el (display-time-24hr-format, display-time-mail-file):
+       Doc fixes.
 
-       * net/tramp-util.el (tramp-minor-mode): New minor mode.  Add it to
-       `find-file-hooks' and `dired-mode-hook'.
-       (tramp-minor-mode-map): Respective map.  Add remapping for
-       `compile' and `recompile'.
-       (tramp-remap-command, tramp-recompile): New defuns.
-       (tramp-compile): Enable `tramp-minor-mode' and `compilation-mode'
-       in buffer "*Compilation*".  Call the commands asynchronously.
+       * tutorial.el (get-lang-string, tutorial--find-changed-keys):
+       * printing.el (pr-ps-fast-fire): Fix typos in docstrings.
 
-       * net/tramp-vc.el (tramp-vc-do-command, tramp-vc-do-command-new)
-       (tramp-vc-simple-command): Call `tramp-handle-shell-command' but
-       `shell-command', because it isn't magic in XEmacs.  Reported by
-       Adrian Aichner <adrian@xemacs.org>.
+       * view.el (view-inhibit-help-message): Fix typo in docstring.
+       (view-scroll-auto-exit, view-try-extend-at-buffer-end): Doc fixes.
 
-       * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry for
-       `substitute-in-file-name.
-       (tramp-smb-handle-substitute-in-file-name): New defun.
-       (tramp-smb-advice-PC-do-completion): Delete advice.
-
-2005-01-16  Kai Grossjohann  <kgrossjo@eu.uu.net>
-
-       * net/tramp.el (tramp-wait-for-output): Fix typo in echo processing.
-       Fix error in deleting region.
-
-2005-01-15  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs-lisp/lisp-mnt.el (lm-with-file): Use Lisp mode in temp buffer.
-       In non-temp buffer, switch syntax table temporarily.
-
-       * emacs-lisp/lisp-mode.el (indent-pp-sexp): Doc fix.
-
-       * replace.el (occur-accumulate-lines, occur-engine): Avoid warnings.
-
-       * tar-mode.el (tar-extract): Bind buffer-undo-list to t.
-
-       * imenu.el (imenu--split-menu): Copy menulist before sorting.
-       (imenu--generic-function): Use START, not BEG, as pos of definition.
-
-       * simple.el (just-one-space): Argument specifies number of spaces.
-
-       * simple.el (eval-expression-print-format): Avoid warning
-       about edebug-active.
-
-2005-01-15  James R. Van Zandt  <jrvz@comcast.net>  (tiny change)
-
-       * progmodes/sh-script.el: Code copied from make-mode.el
-       with small changes,
-       (sh-mode-map): Bind C-c C-\.
-       (sh-backslash-column, sh-backslash-align): New variables.
-       (sh-backslash-region, sh-append-backslash): New functions.
-
-2005-01-15  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
-
-       * mail/rmail.el: Updated to work with movemail from GNU Mailutils
-       (rmail-pop-password, rmail-pop-password-required): Move to
-       rmail-obsolete group.
-       (rmail-set-pop-password): Rename to rmail-set-remote-password.
-       All callers updated.
-       (rmail-get-pop-password): Rename to rmail-get-remote-password.
-       Take an argument specifying whether it is POP or IMAP mailbox we
-       are using.  All callers updated.
-       (rmail-pop-password-error): Rename to
-       rmail-remote-password-error.  Added mailutils-specific error message.
-       (rmail-movemail-search-path)
-       (rmail-movemail-variant-in-use): New variables.
-       (rmail-remote-password, rmail-remote-password-required):
-       New customization variables.
-       (rmail-probe, rmail-autodetect, rmail-movemail-variant-p): New funs.
-       (rmail-parse-url): New function.
-       (rmail-get-new-mail, rmail-insert-inbox-text): Update for use
-       with GNU mailutils movemail.
-
-2005-01-15  Kevin Ryde  <user42@zip.com.au>
-
-       * info-look.el (c-mode/symbol): Add ^` to prefix, and change
-       suffix to space, $ or '$, to correctly position point when going
-       to @table style constants like DBL_MAX.
-
-2005-01-15  Jorgen Schaefer  <forcer@forcix.cx>  (tiny change)
-
-       * type-break.el (type-break-mode, type-break-file-time)
-       (type-break-file-keystroke-count, type-break-choose-file):
-       Don't store data in or load data from the file if type-break-file-name
-       is nil.
-       (type-break-file-name): Doc update as per the above.
-
-2005-01-15  Stephen Eglen  <S.J.Eglen@damtp.cam.ac.uk>  (tiny change)
-
-       * woman.el (woman-dired-define-key-maybe): If KEY is undefined,
-       lookup-key might return nil; handle that.
-
-2005-01-15  Alan Mackenzie  <acm@muc.de>
-
-       * ebrowse.el (ebrowse-class-in-tree): Return the tail of the tree
-       rather than the element found, thus enabling the tree to be setcar'd.
-
-2005-01-14  Carsten Dominik  <dominik@science.uva.nl>
+2007-05-16  Martin Rudalics  <rudalics@gmx.at>
 
-       * textmodes/org.el (org-show-following-heading): New option.
-       (org-show-hierarchy-above): Use `org-show-following-heading'.
-       (org-cycle): Documentation fix.
+       * textmodes/ispell.el (ispell-start-process): Defend against bad
+       default-directory.
 
-       * textmodes/org.el (orgtbl-optimized): New option
-       (orgtbl-mode): New command, a minor mode.
-       (orgtbl-mode-map): New variable.
-       (turn-on-orgtbl, orgtbl-mode, orgtbl-make-binding)
-       (orgtbl-error, orgtbl-self-insert-command)
-       (orgtbl-delete-backward-char, orgtbl-delete-char): New functions.
+2007-05-14  Eli Zaretskii  <eliz@gnu.org>
 
-       * textmodes/org.el (org-mode): `org-table-may-need-update' is now
-       a local variable in each org-mode buffer.
+       * mail/rmail.el (rmail-convert-to-babyl-format): Check
+       content-transfer-encoding _last_, because it's its position that
+       we need as value of base64-header-field-end.
 
-       * textmodes/org.el (org-set-regexps-and-options): Rename from
-       `org-set-regexps'.  Added checking for STARTUP keyword.
-       (org-get-current-options): Add STARTUP options.
-       (org-table-insert-row): Make mode intelligent about when
-       realignment is needed.
-       (org-self-insert-command, org-delete-backward-char, org-delete-char):
-       New commands.
-       (org-enable-table-editor): New default value `optimized'.
-       (org-table-blank-field): Support blanking regions if active.
+2007-05-14  Juanma Barranquero  <lekktu@gmail.com>
 
-2005-01-14  Carsten Dominik  <dominik@science.uva.nl>
+       * files.el (mode-require-final-newline, require-final-newline)
+       (enable-local-variables, enable-local-eval): Doc fixes.
 
-       * textmodes/reftex-cite.el (reftex-bib-sort-year): Catch the case
-       if the year is not given.
+2007-05-13  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
-       * textmodes/reftex-ref.el (reftex-replace-prefix-escapes):
-       Add new escapes %m and %M, fixed bug with %F by adding
-       save-match-data.
-       (reftex-reference): Remove ?. from list of spaces.
-       (reftex-label-info): Add automatic label prefix recognition.
-
-       * textmodes/reftex-index.el (reftex-index-next-phrase):
-       Add slave parameter to call of `reftex-index-this-phrase'.
-       (reftex-index-this-phrase): New optional argument.
-       (reftex-index-region-phrases): Add slave parameter to call of
-       `reftex-index-this-phrase'.
-       (reftex-display-index): New argument redo.
-       (reftex-index-rescan): Add `redo' to arguments of
-       `reftex-display-index'.
-       (reftex-index-Rescan, reftex-index-revert)
-       (reftex-index-switch-index-tag): Add `redo' to arguments of
-       `reftex-display-index'.
-       (reftex-index-make-phrase-regexp): Fix bug with case-sensitive
-       indexing.  Fix bug with matching is there is a quote before or
-       after the word.
-
-       * textmodes/reftex-cite.el (reftex-all-used-citation-keys):
-       Fix bug when collecting citation keys in lines with comments.
-       (reftex-citation): Prefix argument no longer rescans the document,
-       but forces prompting for optional arguments of cite macros.
-       (reftex-do-citation): Prompting for optional arguments implemented.
-
-       * textmodes/reftex-vars.el (reftex-cite-format-builtin):
-       Add optional arguments to most cite commands.
-       (reftex-cite-cleanup-optional-args): New option
-       (reftex-cite-prompt-optional-args): New option.
-       (reftex-trust-label-prefix): New option.
-
-       * textmodes/reftex-toc.el (reftex-toc-find-section):
-       Add push-mark before changing the position in the buffer.
-
-       * textmodes/reftex.el (reftex-prefix-to-typekey-alist): New variable.
-       (reftex-compile-variables): Compute reftex-prefix-to-typekey-alist.
-
-2005-01-14  Nick Roberts  <nickrob@snap.net.nz>
-
-       * xt-mouse.el (xterm-mouse-event): Compute window co-ordinates
-       more carefully.
-
-2005-01-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textmodes/sgml-mode.el (sgml-fill-nobreak): New fun.
-       (sgml-mode): Use it.
-       (sgml-get-context): Better keep track of implicitly closed tags.
-
-2005-01-13  Kenichi Handa  <handa@m17n.org>
-
-       * textmodes/ispell.el: These changes are to fix misalignment error
-       caused by equivalent characters of different Emacs charsets.
-       (ispell-unified-chars-table): New variable.
-       (ispell-get-decoded-string): New function.
-       (ispell-get-casechars, ispell-get-not-casechars)
-       (ispell-get-otherchars): Call ispell-get-decoded-string.
-
-2005-01-12  Johan Bockg\e,Ae\e(Brd  <bojohan@users.sourceforge.net>
-
-       * custom.el (custom-declare-variable): Just put symbol instead
-       of (defvar . symbol) in `current-load-list'.
-
-2005-01-12  Reiner Steib  <Reiner.Steib@gmx.de>
-
-       * emacs-lisp/elint.el: Fixed typo in Commentary section.
-
-2005-01-12  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-help.el (calc-describe-key): Use temporary info buffer
-       to create a Calc summary.
-
-2005-01-12  Kim F. Storm  <storm@cua.dk>
-
-       * mouse.el (mouse-on-link-p): Change functionality and doc
-       string to comply with latest description in lisp ref.
-
-2005-01-12  Nick Roberts  <nickrob@snap.net.nz>
-
-       * xt-mouse.el (xterm-mouse-translate, xterm-mouse-event):
-       Enable mouse clicks on mode-line, header-line and margin.
-       (event-type): Give mouse event symbols an `event-kind' property
-       with value `mouse-click'.
-
-2005-01-12  Juri Linkov  <juri@jurta.org>
-
-       * facemenu.el (list-colors-display): Add new arg buffer-name.
-       Use it.  Fix docstring.  Replace code for identifying duplicate
-       colors by the name with call to `list-colors-duplicates' which
-       identifies duplicate colors by the value unless the color
-       is one of special Windows colors.  Set truncate-lines to t.
-       Print sorted duplicate color names on each line.  Indent to 22
-       \(the longest color name in rgb.txt) instead of 20.  Optimize.
-       (list-colors-duplicates): New function.
-       (facemenu-color-name-equal): Delete function.
+       * ps-print.el: Use default color when foreground or background color
+       are unspecified.  Reported by Leo <sdl.web@gmail.com>.
+       (ps-print-version): New version 6.7.4.
+       (ps-rgb-color): New argument.  Use default color when color is
+       unspecified.
+       (ps-begin-job): Fix code.
 
-       * facemenu.el (list-colors-print): New function created from code
-       in list-colors-display.  Print #RRGGBB at the window right edge.
-       (list-colors-display): When temp-buffer-show-function is not
-       defined, call list-colors-print from temp-buffer-show-hook
-       to get the right value of window-width in list-colors-print
-       after the buffer is displayed.
-
-       * simple.el (pop-mark): Move deactivate-mark out of conditional
-       part to deactivate the active mark regardless of the state of the
-       mark ring.
-
-       * desktop.el (desktop-save): Add `mode: emacs-lisp' to the local
-       variables line in desktop files.
-
-2005-01-12  Juri Linkov  <juri@jurta.org>
-
-       * isearch.el (search-highlight, isearch, isearch-lazy-highlight):
-       Bring together isearch highlight related options.
-       (lazy-highlight): Replace group `replace' by `matching'.
-       (lazy-highlight-cleanup, lazy-highlight-initial-delay)
-       (lazy-highlight-interval, lazy-highlight-max-at-a-time)
-       (lazy-highlight): Add aliases to old names isearch-lazy-highlight-...
-       and declare them obsolete.
-       (lazy-highlight-face): Rename from isearch-lazy-highlight-face.
-       (isearch-faces): Remove defgroup.
-       (isearch-overlay, isearch-highlight, isearch-dehighlight):
-       Move isearch highlighting code closer to lazy highlighting code.
-
-       * replace.el (query-replace-lazy-highlight): Add lazy-highlight group.
-       (query-replace-highlight, query-replace-lazy-highlight)
-       (query-replace): Move definitions to the beginning of the file.
-
-2005-01-11  Juri Linkov  <juri@jurta.org>
-
-       * toolbar/back_arrow.xpm, toolbar/back_arrow.pbm
-       * toolbar/lc-back_arrow.xpm, toolbar/lc-fwd_arrow.xpm
-       * toolbar/fwd_arrow.xpm, toolbar/fwd_arrow.pbm: New icons.
-
-       * info.el (Info-history-forward): New variable.
-       (Info-select-node): Reset Info-history-forward to nil.
-       (Info-last): Turn into defalias.
-       (Info-history-back): Rename from Info-last.
-       Add current node to Info-history-forward.
-       (Info-history-forward): New fun.
-       (Info-mode-map): Replace Info-last by Info-history-back.
-       Bind Info-history-forward to "r".
-       (Info-mode-menu): Replace Info-last by Info-history-back.
-       Fix menu item text.  Add menu item for Info-history-forward.
-       (info-tool-bar-map): Replace Info-last by Info-history-back.
-       Replace its icon "undo" by "back_arrow".  Add icon "fwd_arrow"
-       for Info-history-forward.
-       (Info-mode): Replace Info-last by Info-history-back in docstring.
-       Add local variable Info-history-forward.
-       (Info-goto-emacs-command-node): Replace Info-last by Info-history-back.
-
-2005-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line)
-       (mouse-drag-region, mouse-drag-region-1, mouse-drag-secondary):
-       Ignore select-window events rather than fiddle with
-       mouse-autoselect-window.
-
-2005-01-11  Matthew Mundell  <matt@mundell.ukfsn.org>
-
-       * type-break.el (type-break-mode): Fix previous change.
-
-2005-01-10  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc-ext.el (calc-reset): Reset when inside embedded
-       calculator; only reset when point is inside a calculator.
-       Don't adjust the window height if the window takes up the whole height
-       of the frame.
-
-2005-01-10  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * ebuff-menu.el (Electric-buffer-menu-mode):
-       Preserve value of buffer-local var header-line-format.
-
-2005-01-09  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (calc-mode-var-list-restore-saved-values):
-       Make sure settings file exists before accessing it.
-
-       * calc/calc-embed.el (calc-embedded-subst):
-       Replace math-multi-subst-rec, which is only supposed to be called
-       by math-multi-subst, by math-multi-subst.
-
-2005-01-09  Andre Spiegel  <spiegel@gnu.org>
-
-       * vc.el (vc-allow-async-revert): New user option.
-       (vc-disable-async-diff): New internal variable.
-       (vc-revert-buffer): Use them to disable asynchronous diff.
-
-       * vc-cvs.el, vc-arch.el, vc-svn.el, vc-mcvs.el (vc-cvs-diff)
-       (vc-arch-diff, vc-svn-diff, vc-mcvs-diff): Don't diff
-       asynchronously if vc-disable-async-diff is t.
-
-2005-01-09  Jay Belanger  <belanger@truman.edu>
-
-       * calc/calc.el (defcalcmodevar): New macro.
-       (calc-mode-var-list-restore-default-values)
-       (calc-mode-var-list-restore-saved-values): New functions.
-       (calc-mode-var-list): Use defcalcmodevar to define it.
-       (calc-always-load-extensions, calc-line-numbering)
-       (calc-line-breaking, calc-display-just, calc-display-origin)
-       (calc-number-radix, calc-leading-zeros, calc-group-digits)
-       (calc-group-char, calc-point-char, calc-frac-format)
-       (calc-prefer-frac, calc-hms-format, calc-date-format)
-       (calc-float-format, calc-full-float-format, calc-complex-format)
-       (calc-complex-mode, calc-infinite-mode, calc-display-strings)
-       (calc-matrix-just, calc-break-vectors, calc-full-vectors)
-       (calc-full-trail-vectors, calc-vector-commas, calc-vector-brackets)
-       (calc-matrix-brackets, calc-language, calc-language-option)
-       (calc-left-label, calc-right-label, calc-word-size)
-       (calc-previous-modulo, calc-simplify-mode, calc-auto-recompute)
-       (calc-display-raw, calc-internal-prec, calc-angle-mode)
-       (calc-algebraic-mode, calc-incomplete-algebraic-mode)
-       (calc-symbolic-mode, calc-matrix-mode, calc-shift-prefix)
-       (calc-window-height, calc-display-trail, calc-show-selections)
-       (calc-use-selections, calc-assoc-selections)
-       (calc-display-working-message, calc-auto-why, calc-timing)
-       (calc-mode-save-mode, calc-standard-date-formats, calc-autorange-units)
-       (calc-was-keypad-mode, calc-full-mode, calc-user-parse-tables)
-       (calc-gnuplot-default-device, calc-gnuplot-default-output)
-       (calc-gnuplot-print-device, calc-gnuplot-print-output)
-       (calc-gnuplot-geometry, calc-graph-default-resolution)
-       (calc-graph-default-resolution-3d, calc-invocation-macro)
-       (calc-show-banner): Use defcalcmodevar to declare them and set
-       their default values.
+2007-05-12  Chong Yidong  <cyd@stupidchicken.com>
 
-       * calc/calc-ext.el (calc-reset): Restore saved values of variables
-       instead of default values (but restore default values if there is
-       an argument of 0).
+       * longlines.el (longlines-mode): Make longlines-auto-wrap
+       buffer-local.  Add hooks unconditionally.
+       (longlines-auto-wrap): Toggle wrapping.
+       (longlines-after-change-function)
+       (longlines-post-command-function): Check longlines-auto-wrap.
 
-2005-01-09  David Kastrup  <dak@gnu.org>
+2007-05-12  Nick Roberts  <nickrob@snap.net.nz>
 
-       * desktop.el (desktop-restore-eager): Fix typo in type.
+       * xt-mouse.el (xterm-mouse-debug-buffer): New variable.
+       (xterm-mouse-translate): Use it.
 
-2005-01-08  Richard M. Stallman  <rms@gnu.org>
+2007-05-10  Richard Stallman  <rms@gnu.org>
 
-       * cus-edit.el (customize): Delete :link.
+       * international/iso-cvt.el (iso-cvt-read-only): Ignore arguments.
+       (iso-cvt-write-only): Likewise.
 
-2005-01-08  Jay Belanger  <belanger@truman.edu>
+       * emacs-lisp/easy-mmode.el (define-minor-mode):
+       Fix generated doc string.
 
-       * calc/calc.el (calc-mode): Remove the extension from the
-       `calc-settings-file' file name when loading it.
+       * startup.el (fancy-splash-text): Add URL of guided tour.
+       Adjust horizontal and vertical whitespace.
 
-2005-01-08  Kim F. Storm  <storm@cua.dk>
+       * progmodes/compile.el (compilation-handle-exit):
+       Use run-hook-with-args to run compilation-finish-functions.
 
-       * info.el (Info-mode-map, Info-next-link-keymap)
-       (Info-prev-link-keymap, Info-up-link-keymap):
-       Map follow-link to mouse-face.
-       (Info-fontify-node): Add "mouse-2: " prefix to tooltip.
+       * files.el (file-start-mode-alist): New variable.
+       (magic-mode-regexp-match-limit): Doc fix.
+       (set-auto-mode): Handle file-start-mode-alist.
+       A little cleanup of structure.
 
-2005-01-08  Jay Belanger  <belanger@truman.edu>
+       * dabbrev.el (dabbrev-eliminate-newlines):
+       Renamed from dabbrev--eliminate-newlines.  All uses changed.
 
-       * calc/calc.el (calc-settings-file): Change default value.
-       Suggested by cgw in a comment in calc-mode.el.
+2007-05-10  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-       * calc/calc-mode.el (calc-settings-file-name):
-       Compare calc-settings-file to user-init-file instead of ~/.emacs.
-       Replace ~/.emacs in a prompt by calc-settings-file.
+       * man.el (Man-next-section): Don't consider the last line of the page
+       as being part of any section.
 
-2005-01-07  Lars Hansen  <larsh@math.ku.dk>
+2007-05-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * desktop.el (desktop-restore-eager, desktop-lazy-verbose)
-       (desktop-lazy-idle-delay): New customizable variables.
-       (desktop-buffer-args-list): New variable.
-       (desktop-append-buffer-args): New function.
-       (desktop-save): Call desktop-append-buffer-args for some buffers.
-       (desktop-lazy-create-buffer): New function.
-       (desktop-idle-create-buffers): New function.
-       (desktop-read): Add message about buffers to restore lazily.
-       (desktop-lazy-abort): New command.
-       (desktop-clear): Call desktop-lazy-abort.
-       (desktop-lazy-complete): New command.
+       * textmodes/sgml-mode.el (sgml-value): Fix handling of attributes which
+       can take any number of values.
 
-2005-01-06  Richard M. Stallman  <rms@gnu.org>
+2007-05-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * emacs-lisp/find-func.el (find-face-definition):
-       Rename from find-face.
+       * textmodes/tex-mode.el (tex-font-lock-keywords-2): Add citet and citep
+       to the list of citation commands.
 
-2005-01-06  Kim F. Storm  <storm@cua.dk>
+2007-05-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * simple.el (completion-list-mode-map): Map follow-link to mouse-face.
+       * vc-hooks.el (vc-find-root): Stop searching when the user changes.
 
-       * man.el (Man-xref-man-page, Man-xref-header-file)
-       (Man-xref-normal-file): Add follow-link property.
+2007-05-09  Edward O'Connor  <hober0@gmail.com>  (tiny change)
 
-2005-01-06  Jay Belanger  <belanger@truman.edu>
+       * progmodes/python.el (python-font-lock-keywords)
+       (python-open-block-statement-p, python-mode): Add support for the new
+       "with" keyword.
 
-       * calc/calc-units.el: Make sure the proper macro definitions are
-       available when compiling.
+2007-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2005-01-06  Juri Linkov  <juri@jurta.org>
+       * diff-mode.el (diff-apply-hunk, diff-test-hunk): Don't do by default
+       the exact opposite of diff-goto-source.
 
-       * isearch.el (isearch-lazy-highlight-update):
-       Rename `isearch-lazy-highlight-interval' to `lazy-highlight-interval'.
+       * emacs-lisp/advice.el (ad-special-forms): Remove.
+       (ad-special-form-p): Use subr-arity.
 
-2005-01-06  Miles Bader  <miles@gnu.org>
+       * newcomment.el (comment-search-forward): Make sure we search forward.
+       (comment-enter-backward): Try and distinguish the non-matching case at
+       EOB from the non-matching case with a missing comment-end-skip for
+       a 2-char comment ender.
+       (comment-choose-indent): New function extracted from comment-indent.
+       Improve the alignment algorithm.
+       (comment-indent): Use it.
 
-       * isearch.el (lazy-highlight): Rename from `lazy-highlight-face'.
-       (isearch-lazy-highlight-face): Use new name.
+       * textmodes/sgml-mode.el (sgml-lexical-context): Add handling of
+       XML style Processing Instructions.
+       (sgml-parse-tag-backward): Handle XML-style PIs.  Also ensure progress.
+       (sgml-calculate-indent): Handle `pi' context.
 
-2005-01-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * vc.el: Ensure that update-changelog issues an error when used with
+       a backend that does not implement it.
+       (vc-update-changelog-rcs2log): Rename from vc-default-update-changelog.
+       Remove `backend' argument.  Use expand-file-name.
+       (vc-cvs-update-changelog, vc-rcs-update-changelog): New aliases.
 
-       * uniquify.el (uniquify-rationalize-file-buffer-names):
-       Re-add an interactive spec.
-       (uniquify-rationalize-file-buffer-names): Fix corner case when renaming
-       to the same name.
+       * progmodes/python.el (python-end-of-block): Revert last change.
+       (python-end-of-statement): Make sure we move *forward*.
 
-       * isearch.el (isearch-dehighlight): Remove unused arg `totally'.
-       (isearch-update, isearch-done): Adjust calls accordingly.
+2007-05-08  Richard Stallman  <rms@gnu.org>
 
-2005-01-05  Richard M. Stallman  <rms@gnu.org>
+       * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook):
+       Don't include non-self-insert commands in the exception for `-'.
 
-       * custom.el (custom-set-variables, custom-theme-set-variables):
-       Clarify documentation.
+2007-05-08  David Reitter  <david.reitter@gmail.com>
 
-       * emacs-lisp/find-func.el (find-variable)
-       (find-variable-other-window, find-variable-other-frame):
-       Fix the TYPE args to find-function-read and find-function-do-it.
-       (find-function): Doc fix.
-       (find-function-at-point): Replace function-at-point alias.
+       * progmodes/python.el (python-guess-indent): Check non-nullness
+       before comparing indent against the 2..8 interval.
 
-2005-01-04  Richard M. Stallman  <rms@gnu.org>
+2007-05-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * cus-face.el (custom-declare-face):
-       Record defface in current-load-list.
+       * term/mac-win.el (mac-ts-unicode-for-key-event): Check if text is
+       available.
 
-       * help-fns.el (variable-at-point): New arg ANY-SYMBOL.
+2007-05-06  Richard Stallman  <rms@gnu.org>
 
-       * emacs-lisp/find-func.el: Doc fixes.
-       (find-face-regexp): New variable.
-       (find-function-regexp-alist): New variable.
-       (find-function-C-source): Third arg is now TYPE.
-       (find-function-search-for-symbol): Handle general TYPE.
-       (find-function-read, find-function-do-it): Handle general TYPE.
-       (find-definition-noselect, find-face): New functions.
-       (function-at-point): Alias deleted.
+       * emacs-lisp/eldoc.el (turn-on-eldoc-mode): Doc fix.
 
-2005-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * battery.el (display-battery-mode): Rename from display-battery.
-       Handle the case where it gets turned off.
+       * diff.el (diff): Use buffer-local vars diff-old-file and diff-new-file
+       rather than storing their value in the revert-buffer function.
 
-2005-01-04  Richard M. Stallman  <rms@gnu.org>
+2007-05-04  Nick Roberts  <nickrob@snap.net.nz>
 
-       * cus-edit.el (customize): Make :link point to user doc.
+       * t-mouse.el (t-mouse-mode): Do nothing on a graphical display
+       when disabling t-mouse-mode.
 
-       * man.el (Man-fontify-manpage): Turn off undo generation.
+2007-05-01  Davis Herring  <herring@lanl.gov>
 
-       * add-log.el (change-log-font-lock-keywords): Don't match just "From".
+       * calendar/timeclock.el: Update version number.
+       (timeclock-modeline-display): Mention timeclock-use-display-time
+       in explanatory message.
+       (timeclock-in): Fix non-interactive workday specifications.
+       (timeclock-log): Don't kill the log buffer if it already existed.
+       Suppress warnings when finding the log.  Don't check for a nil
+       project twice.  Run hooks after killing the buffer (if applicable).
+       (timeclock-geometric-mean): Rename to `timeclock-mean' (it never
+       was geometric).  All uses changed.
+       (timeclock-generate-report): Support prefix argument.
 
-2005-01-04  Andreas Schwab  <schwab@suse.de>
+2007-05-03  Ryan Yeske  <rcyeske@gmail.com>
 
-       * files.el (insert-directory): Only look for error lines in
-       inserted text.  Don't move too far after processing --dired markers.
+       * net/rcirc.el (rcirc-timeout-seconds): Increase to prevent unwanted
+       disconnections.
 
-2005-01-04  Richard M. Stallman  <rms@gnu.org>
+2007-05-01  Romain Francoise  <romain@orebokech.com>
 
-       * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook):
-       Don't expand if the character is @, period, dash, etc.
-       (define-mail-abbrev): Quote names that contain problem characters.
+       * dired-x.el: Revert 2007-04-06 change.
 
-2005-01-04  Thien-Thi Nguyen  <ttn@gnu.org>
+2007-04-29  Stephen Berman  <Stephen.Berman@gmx.net>
 
-       * progmodes/hideshow.el: No longer require `cl'; `dolist' is standard.
+       * find-dired.el (find-dired-filter): Propertize all text down to eob.
 
-2005-01-03  Richard M. Stallman  <rms@gnu.org>
+2007-04-29  Richard Stallman  <rms@gnu.org>
 
-       * replace.el (replace-dehighlight): Use lazy-highlight-cleanup.
-       (query-replace-highlight, query-replace-lazy-highlight)
-       (query-replace): Definitions moved up.  Doc fix.
+       * international/mule.el (auto-coding-alist): Add pdf => no-conversion.
 
-2005-01-03  Richard M. Stallman  <rms@gnu.org>
+2007-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * isearch.el (lazy-highlight): Group renamed from isearch-lazy-...
-       (lazy-highlight-cleanup, lazy-highlight-initial-delay)
-       (lazy-highlight-interval, lazy-highlight-max-at-a-time)
-       (lazy-highlight-face): Rename from isearch-lazy-...
-       Change all references to them.
+       * progmodes/cc-mode.el (c-before-change): Use point-min rather
+       than 1.
 
-2005-01-03  Luc Teirlinck  <teirllm@auburn.edu>
+2007-04-28  Richard Stallman  <rms@gnu.org>
 
-       * cus-edit.el (custom-file): Doc fix for defcustom.
-       (custom-file): The function no longer sets the variable
-       `custom-file' to its return value.
+       * progmodes/sh-script.el (sh-mode): Recognize .profile as sh style.
 
-       * startup.el (command-line): No longer load `custom-file'.
+2007-04-28  Nick Roberts  <nickrob@snap.net.nz>
 
-2005-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * progmodes/gud.el (gud-menu-map): Pdb can't handle SIGINT so
+       don't put stop on toolbar.
 
-       * emacs-lisp/find-func.el (find-variable-regexp): Avoid defface.
+2007-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * progmodes/perl-mode.el (perl-nochange, perl-calculate-indent):
-       Don't confuse module-prefixed identifiers for labels.
-       Reported by Juan-Leon Lahoz Garcia <juanleon1@gmail.com>.
+       * vc-hooks.el (vc-ignore-dir-regexp): Add /.../ for the DFS filesystem.
 
-2005-01-02  Richard M. Stallman  <rms@gnu.org>
+2007-04-28  Eli Zaretskii  <eliz@gnu.org>
 
-       * files.el (basic-save-buffer-1): Fix previous change.
+       * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el): Use ./mh-e
+       instead of $(lisp)/mh-e.
 
-       * loadhist.el (file-loadhist-lookup): New function.
-       (file-provides, file-requires): Use it.
+2007-04-28  Glenn Morris  <rgm@gnu.org>
 
-       * electric.el (Electric-pop-up-window): Use fit-window-to-buffer
-       instead of calculating the right size.
+       * image-dired.el (image-dired-cmd-create-thumbnail-options)
+       (image-dired-cmd-create-temp-image-options): Replace option
+       +profile "*" with -strip.
 
-2005-01-02  Karl Chen  <quarl@cs.berkeley.edu>
+2007-04-27  Chong Yidong  <cyd@stupidchicken.com>
 
-       * vc-svn.el (vc-svn-diff): Stay local if possible.
+       * textmodes/flyspell.el (flyspell-auto-correct-previous-word):
+       Use window-start and window-end.
 
-2005-01-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+2007-04-27  Andreas Schwab  <schwab@suse.de>
 
-       * vc-arch.el (vc-arch-workfile-version): Handle the empty-branch case.
+       * emacs-lisp/sregex.el (sregexq): Fix doc string quoting.
 
-       * files.el (hack-local-variables): Fix last change.
+2007-04-27  Eli Zaretskii  <eliz@gnu.org>
 
-2005-01-02  Jay Belanger  <belanger@truman.edu>
+       * textmodes/fill.el (fill-paragraph): Doc fix.
 
-       * calc/calc-yank.el (calc-edit-top): New variable.
-       (calc-edit-mode): Set calc-edit-top to be the beginning of the edited
-       object.  Change header properties.
-       (calc-edit-finish, calc-edit-finish-stack-object)
-       (calc-edit-show-buffer): Use calc-edit-top to find the beginning of the
-       edited object.
-       * calc/calc-sel.el (calc-finish-selection-edit): Use calc-edit-top
-       for the beginning of the edited object.
-       * calc/calc-embed.el (calc-embedded-finish-edit): Use calc-edit-top
-       for the beginning of the edited object.
-       * calc/calc-prog.el (calc-edit-macro-finish-edit)
-       (calc-finish-formula-edit, calc-macro-repeats)
-       (calc-edit-macro-adjust-buffer, calc-edit-format-macro-buffer)
-       (calc-edit-macro-pre-finish-edit): Use calc-edit-top for the
-       beginning of the edited object.
-       (calc-user-define-edit): Change the header for editing macros.
-       Remove unnecessary variable.
+2007-04-26  Luc Teirlinck  <teirllm@dms.auburn.edu>
 
-2005-01-01  Jay Belanger  <belanger@truman.edu>
+       * locate.el (locate-in-alternate-database): Doc fix.
 
-       * calc/calc-yank.el (calc-edit-mode): Change default header.
-       (calc-edit-finish, calc-show-edit-buffer): Adjust to handle new header.
-       * calc/calc-store.el (calc-edit-variable): Change title to match new
-       header.
-       * calc/calc-prog.el (calc-edit-user-syntax): Change title in edit
-       mode to match new header.
-       (calc-user-define-edit): Change titles to include names of commands.
-       (calc-finish-formula-edit): Adjust to handle new header.
-       (calc-finish-macro-edit): Remove.
-       (calc-edit-macro-repeats, calc-edit-macro-adjust-buffer)
-       (calc-edit-macro-command, calc-edit-macro-command-type)
-       (calc-edit-macro-combine-alg-ent, calc-edit-macro-combine-ext-command)
-       (calc-edit-macro-combine-var-name, calc-edit-macro-combine-digits)
-       (calc-edit-format-macro-buffer, calc-edit-macro-pre-finish-edit)
-       (calc-edit-macro-finish-edit): New functions.
-       (calc-user-define-edit): Use new functions to edit named calc macros.
+2007-04-26  Glenn Morris  <rgm@gnu.org>
 
-2005-01-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * button.el (button): Use underline if supported, else fall back
+       to color.
 
-       * files.el (hack-local-variables): Cleanup prefix/suffix matching.
+       * version.el (emacs-version): Increase to 22.1.50.
 
-       * ses.el (copy-region-as-kill): Deactivate mark.
+2007-04-25  Richard Stallman  <rms@gnu.org>
 
-2005-01-01  Richard M. Stallman  <rms@gnu.org>
+       * hi-lock.el (hi-lock-file-patterns-policy): Default to `ask'.
 
-       * replace.el (occur-1): If the output buffer is also an input,
-       don't kill it, rename it.
+2007-04-25  J.D. Smith  <jdsmith@as.arizona.edu>
 
-       * faces.el (set-face-background, set-face-foreground): Doc fix.
+       * progmodes/idlwave.el (idlwave-beginning-of-subprogram)
+       (idlwave-end-of-subprogram): Take optional NOMARK arg to prevent
+       pushing mark.
+       (idlwave-current-routine): Don't push mark.
 
-       * cus-face.el (custom-face-attributes): Fix :help-echo strings
-       for :foreground and :background.
+2007-04-25  Mathias Dahl  <mathias.dahl@gmail.com>
 
-       * dired.el (dired-view-command-alist): Variable deleted.
-       (dired-view-file, dired-mouse-find-file-other-window):
-       Delete the code to use it.
+       * image-dired.el (image-dired-display-image): Derive image-type from
+       filename rather than assuming jpeg, in case no resizing was needed.
 
-2005-01-01  Kim F. Storm  <storm@cua.dk>
+2007-04-25  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
 
-       * image.el (insert-sliced-image): Use t for line-height property.
+       * custom.el (defface): Doc fix.
 
-See ChangeLog.11 for earlier changes.
+See ChangeLog.12 for earlier changes.
 
 ;; Local Variables:
 ;; coding: iso-2022-7bit
 ;; add-log-time-zone-rule: t
 ;; End:
 
-    Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+    Copyright (C) 2007 Free Software Foundation, Inc.
 
   This file is part of GNU Emacs.
 
@@ -35532,4 +7235,4 @@ See ChangeLog.11 for earlier changes.
   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.
 
-;;; arch-tag: e39939be-dab3-400e-86f5-0e2701a883c1
+;; arch-tag: 1e8aa93a-fc6c-4ac3-9b10-1f445e1840af
diff --git a/lisp/ChangeLog.12 b/lisp/ChangeLog.12
new file mode 100644 (file)
index 0000000..c26f79b
--- /dev/null
@@ -0,0 +1,33374 @@
+2007-04-24  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlw-shell.el (idlwave-shell-clear-all-bp):
+       Don't re-query for each cleared BP.
+       (idlwave-shell-clear-bp): Optionally skip BP query.
+       (idlwave-shell-update-bp-overlays): Use set-window-margins instead
+       of set-window-buffer, which incorrectly moves displayed region.
+
+2007-04-23  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc.el (calc-bug-address): Update maintainer's address.
+       * calc/*: Update maintainer's address.
+
+2007-04-23  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (set-mark-command-repeat-pop): Doc fix.
+       Put in `editing-basics' group.
+
+2007-04-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * info.el (Info-mouse-scroll-up, Info-mouse-scroll-down):
+       New functions.
+       (Info-mode-line-node-keymap): Bind mouse commands to
+       Info-mouse-scroll-up/down instead of Info-scroll-up/down.
+
+2007-04-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * locate.el (locate-local-prompt): New var.
+       (locate-prompt-for-command): Doc fix.
+       (locate-prompt-for-search-string): New function.
+       (locate): New optional arg.  Make locate-local-prompt
+       buffer-local.  Use locate-prompt-for-search-string.
+       (locate-with-filter): New optional arg.
+       Use locate-prompt-for-search-string.
+       (locate-update): Bind locate-prompt-for-command.
+
+2007-04-23  Glenn Morris  <rgm@gnu.org>
+
+       * files.el (magic-mode-alist): `<!DOCTYPE HTML' in html-mode.
+
+2007-04-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * button.el (button): Inherit from link face on a tty.
+
+2007-04-23  Glenn Morris  <rgm@gnu.org>
+
+       * button.el (button): Use color for this face on a tty.
+
+       * files.el (magic-mode-alist): Allow for carriage-returns in
+       html-mode and sgml-mode entries.
+
+2007-04-22  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
+       Improve doc string of generated command.
+
+       * subr.el (read-number): Catch errors.
+
+       * hi-lock.el (hi-lock-file-patterns-policy): Doc fix.
+
+2007-04-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image-dired.el: Rename from thumbnails.el.  All instances of
+       "thumbnails" replaced with "image-dired".
+
+       * dired.el (dired-mode-map): Rename "thumbnails" again, to
+       "image-dired".
+
+2007-04-22  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-kill-buffer-at-head, ido-delete-file-at-head):
+       Don't use kill-line.
+
+2007-04-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * t-mouse.el (t-mouse-make-event): Pass on mev's more informative
+       error message.
+
+2007-04-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * dired.el: Rename "tumme" to "thumbnails".
+
+       * thumbnails.el: Rename from tumme.el.  All instances of "tumme"
+       replaced with "thumbnails".
+
+2007-04-22  Glenn Morris  <rgm@gnu.org>
+
+       * hi-lock.el (hi-lock-file-patterns-policy): Make it a defcustom,
+       and give it the risky-local-variable property.
+
+       * textmodes/flyspell.el (flyspell-define-abbrev): Downcase abbrev
+       before defining it.
+
+2007-04-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * progmodes/cc-mode.el (c-remove-any-local-eval-or-mode-variables):
+       Use delete-region instead of kill-line.
+
+2007-04-21  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-cmds.el (c-electric-slash): Replace wrong use of
+       `kill-region' by `delete-region'.
+
+2007-04-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/perl-mode.el (perl-indent-command): Use delete-region
+       instead of kill-region.
+
+       * progmodes/mantemp.el (mantemp-make-mantemps-region)
+       (mantemp-insert-cxx-syntax, mantemp-sort-and-unique-lines)
+       (mantemp-remove-memfuncs): Use delete-region instead of kill-word
+       and kill-line.
+
+       * progmodes/vhdl-mode.el (vhdl-template-type)
+       (vhdl-template-record, vhdl-template-nature)
+       (vhdl-template-configuration-spec, vhdl-template-component-inst)
+       (vhdl-template-break, vhdl-regress-line, vhdl-electric-tab):
+       Use delete-region instead of kill-word and kill-line.
+
+2007-04-21  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * dired-x.el (dired-virtual-mode): Doc fix.
+
+2007-04-21  Richard Stallman  <rms@gnu.org>
+
+       * font-lock.el (font-lock-keywords-alist): Mark as risky.
+
+       * subr.el (read-number): Doc fix.
+
+       * simple.el (pop-to-mark-command): Display message "mark popped"
+       if point does not move.
+       (set-mark-command): Doc fix.
+
+2007-04-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * locate.el: Revert 2006-09-09 and 2007-04-20 changes.
+       (locate-local-filter, locate-local-search): New vars.
+       (locate): Make variables local.
+       (locate-update): Bind locate-buffer-name.  Call locate using
+       locate-local-filter and locate-local-search.
+
+2007-04-20  David Koppelman  <koppel@ece.lsu.edu>
+
+       * hi-lock.el (hi-lock-file-patterns-policy): New var.
+       (hi-lock-find-patterns): Use hi-lock-file-patterns-policy.
+       (hi-lock-mode): Update docstring.
+
+2007-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/fill.el (fill-move-to-break-point): Don't inhibit
+       fill-nobreak-predicate when the break is past fill-column.
+
+2007-04-20  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * locate.el (locate): Output from shell-command should go in the
+       current buffer rather than *Shell Command Output*.
+
+2007-04-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * paren.el (show-paren-function): Fix last fix.
+
+2007-04-19  Kevin Ryde  <user42@zip.com.au>
+
+       * arc-mode.el (archive-find-type): lzh-exe for lzh self-extracting exe.
+       (archive-lzh-summarize): Add optional start arg for where to start
+       looking at the archive.
+       (archive-lzh-exe-summarize, archive-lzh-exe-extract): New functions.
+
+       * international/mule.el (auto-coding-alist): no-conversion for .exe
+       and .EXE.
+
+2007-04-19  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-cmds.el (c-in-function-trailer-p): Fix this: when a
+       function return type contains "struct", "union", etc.
+       c-end-of-defun goes too far forward.
+
+2007-04-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * paren.el (show-paren-function): Reset window-start to avoid
+       recentering.
+
+2007-04-19  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/todo-mode.el: Fix typo: "threshhold" -> "threshold".
+
+2007-04-18  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/diary-lib.el (diary-header-line-format): Add a custom
+       :set function.
+       (diary-list-entries): Only switch to diary-mode from
+       default-major-mode (reverts 2007-03-21 change).  Otherwise, if in
+       diary-mode set header-line-format, in case of any customization.
+
+2007-04-18  Levin Du  <zslevin@gmail.com>  (tiny change)
+
+       * calendar/parse-time.el (parse-time-string-chars): Check if CHAR
+       is less than the length of parse-time-syntax.
+
+2007-04-17  David Kastrup  <dak@gnu.org>
+
+       * replace.el (query-replace-regexp-eval): Deprecate.
+
+2007-04-17  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-cmds.el (c-beginning-of-defun): With -ve arg and
+       point too close to EOB, leave point at EOB rather than last `}'.
+
+2007-04-17  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-include-OPTkey)
+       (bibtex-user-optional-fields, bibtex-entry-field-alist):
+       Fix defcustom.
+
+2007-04-17  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/cal-dst.el (calendar-dst-find-startend): If YEAR cannot
+       be encoded, fall back to current year.
+
+2007-04-14  Kevin Ryde  <user42@zip.com.au>
+
+       * arc-mode.el (archive-lzh-summarize): Only apply the "downcase if
+       all upcase" rule to OS-ID 0 "generic".  Always downcase for OS-ID
+       M "MSDOS".
+
+2007-04-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/python.el (python-end-of-block): Avoid looping forever
+       if python-next-statement fails.
+
+2007-04-16  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-entry-field-alist): Use defcustom.
+
+2007-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/perl-mode.el (perl-indent-level): Mark as safe local var.
+       * progmodes/cperl-mode.el (cperl-indent-level): Likewise.
+
+2007-04-15  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-version): New function.
+       (calc-trail-mode): Shorten the title.
+
+2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mail/footnote.el (footnote-style): Clarify docstring to state
+       that customizing this only applies to future footnotes.
+
+2007-04-15  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-field-list): Use functionp.
+       (bibtex-make-field): Check that INIT is a string. Use functionp.
+
+2007-04-14  Glenn Morris  <rgm@gnu.org>
+
+       * complete.el (PC-goto-end): New buffer-local variable.
+       (PC-do-completion-end): Make buffer-local.
+       (partial-completion-mode) <choose-completion-string-functions>:
+       Do not go to the end of the minibuffer if PC-goto-end is non-nil.
+       (PC-do-completion): New optional fourth argument GOTO-END.  Add a
+       doc string.  Set PC-goto-end for choose-completion.
+       (PC-lisp-complete-symbol): Pass non-nil GOTO-END arg to
+       PC-do-completion.
+
+       * textmodes/bibtex.el (bibtex-insert-kill): Pass non-nil NODELIM
+       arg to bibtex-make-field.
+       (bibtex-make-field): Add optional fourth arg NODELIM.
+       Insert delimiters around INIT unless this arg is non-nil.
+
+2007-04-14  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the
+       global map isn't modified.
+
+2007-04-14  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/appt.el (appt-disp-window): Do not split small windows.
+       Suggested by Jeff Miller <jmiller@cablespeed.com>.
+
+2007-04-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/compile.el (compilation-start): Revert 2007-03-25 change.
+
+       * files.el: Ditto.
+
+2007-04-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * cus-edit.el (minibuffer, auto-save): Fix typos in docstrings.
+
+       * term.el (term-buffer-maximum-size, term-exec, term-escape-char)
+       (term-set-escape-char, term-termcap-format, term-get-old-input-default)
+       (term-skip-prompt, term-send-string, term-send-region, term-pager-page)
+       (term-pager-help): Fix typos in docstrings.
+
+       * wid-edit.el (widget-documentation): Fix typo in docstring.
+
+       * progmodes/ebnf2ps.el (ebnf-insert-style, ebnf-merge-style):
+       Fix typos in error messages.
+
+2007-04-13  Martin Rudalics  <rudalics@gmx.at>
+
+       * emacs-lisp/edebug.el (edebug-pop-to-buffer): Don't select
+       window marked as dedicated.
+
+       * mail/footnote.el (footnote-latin-string): New variable.
+       (footnote-latin-regexp): Redefine as regexp alternative.
+       (Footnote-latin): Use footnote-latin-string instead of
+       footnote-latin-regexp.
+
+2007-04-13  Glenn Morris  <rgm@gnu.org>
+
+       * tmm.el (tmm-get-keybind): Use car-safe to avoid errors with
+       inherited keymaps.
+
+2007-04-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * outline.el (outline-get-next-sibling): Clarify docstring.
+       (outline-get-last-sibling): Handle case where we are at the first
+       heading.  Clarify docstring.
+
+2007-04-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-minor-mode-map): Make go button same
+       length as stop button to lessen flicker.
+       (jdb): Add gud-print.
+       (gud-find-expr): Jdb prints the expression with the value, so
+       don't insert it in the output.
+
+2007-04-11  Jason Rumney  <jasonr@gnu.org>
+
+       * dnd.el (dnd-get-local-file-name): Decode both upper and lower
+       case hex.  Do not try to decode non-hex letters.
+
+2007-04-11  Markus Triska  <markus.triska@gmx.at>
+
+       * emacs-lisp/byte-opt.el (byte-optimize-backward-char)
+       (byte-optimize-backward-word): Remove (move to bytecomp.el).
+       (byte-optimize-form-code-walker): Evaluate pure function calls if
+       possible.
+       (byte-optimize-all-constp): New function.
+
+       * emacs-lisp/bytecomp.el (byte-compile-char-before):
+       Improve numeric argument case.
+       (byte-compile-backward-char, byte-compile-backward-word):
+       New functions, performing rewriting previously done in byte-opt.el.
+       Fix their "Fixme" item (restriction to numeric arguments).
+
+2007-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * desktop.el (desktop-save, desktop-create-buffer): Replace mapcar
+       with dolist.
+       (after-init-hook): Don't quote lambda.
+       (desktop-first-buffer): Don't wrap it in eval-when-compile.
+       (desktop-internal-v2s): Remove unused var `el'.
+       (desktop-buffer-major-mode, desktop-buffer-locals): Move out of
+       desktop-restore-file-buffer.
+       (desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of
+       desktop-create-buffer.
+
+2007-04-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * woman.el (woman-decode-buffer): Postpone macro-set check...
+       (woman-decode-region): ...to here.
+
+2007-04-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * startup.el (tty-handle-args): Use %S to log ARGS.
+
+2007-04-10  Glenn Morris  <rgm@gnu.org>
+
+       * dframe.el (dframe-frame-mode): Do not set auto-show-mode, since
+       it is obsolete and has no effect.
+
+       * dos-w32.el (default-buffer-file-type): Add defvar to quieten
+       byte-compiler.
+
+       * progmodes/cperl-mode.el (cperl-mode): Remove unnecessary call to
+       obsolete function make-local-hook.
+
+       * progmodes/dcl-mode.el (top-level): Move (require 'tempo) to
+       start to quieten byte-compiler.
+
+2007-04-10  Markus Triska  <markus.triska@gmx.at>
+
+       * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move
+       to bytecomp.el as byte-compile-char-before).
+       * emacs-lisp/bytecomp.el (byte-compile-char-before):
+       New function (modified replacement for byte-optimize-char-before in
+       byte-opt.el).
+
+2007-04-09  Alan Mackenzie  <acm@muc.de>
+
+       * startup.el (inhibit-splash-screen): Emphatically state that it
+       can't be set in site-start.el.
+
+2007-04-09  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/cc-subword.el (c-capitalize-subword): More closely
+       mimic the behavior of `capitalize-word'.  Do not move point with a
+       negative argument.  Based on tiny change by Paul Curry.
+
+2007-04-09  Paul Curry  <dashteacup@gmail.com>  (tiny change)
+
+       * progmodes/cc-subword.el (c-downcase-subword, c-upcase-subword):
+       Don't move point if ARG is negative.
+
+2007-04-09  Alan Mackenzie  <acm@muc.de>
+
+       Changes to make `narrow-to-defun' and `mark-defun' work properly
+       in CC Mode:
+
+       * progmodes/cc-defs.el (c-beginning-of-defun-1):
+       * progmodes/cc-cmds.el (c-beginning-of-defun, c-end-of-defun):
+       Bind beginning/end-of-defun-function to nil around calls to
+       beginning/end-of-defun.
+
+       * progmodes/cc-langs.el (beginning-of-defun-function)
+       (end-of-defun-function): New c-lang-setvar's.
+
+       * progmodes/cc-awk.el (c-awk-beginning-of-defun): Add "(or arg
+       (setq arg 1))" to enable non-interactive call.
+
+2007-04-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * simple.el (set-mark-command): Doc fix.
+
+2007-04-09  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gdb): Restore existing session if user
+       tries to start a second one in graphical mode.
+
+2007-04-08  Martin Rudalics  <rudalics@gmx.at>
+
+       * cus-start.el <scroll-preserve-screen-position>: Add choices.
+
+2007-04-08  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * term/xterm.el (terminal-init-xterm): Fix key definitions.
+       Add binding for C-M-SPC.
+
+2007-04-08  Richard Stallman  <rms@gnu.org>
+
+       * pcomplete.el (pcomplete-read-event): One single definition,
+       and not a defsubst.
+
+2007-04-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/cc-cmds.el (c-end-of-defun): Tidy up, to eliminate
+       byte-compiler warning "value unused".
+
+2007-04-08  Andreas Schwab  <schwab@suse.de>
+
+       * term/xterm.el (terminal-init-xterm): Add bindings for keypad keys.
+
+2007-04-07  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/calendar.el (diary-font-lock-keywords, diary-live-p):
+       Autoload these functions.
+       (diary-date-forms): Add a custom :set form.
+
+       * calendar/diary-lib.el (diary-set-maybe-redraw): Move definition
+       before first use.
+       (diary-font-lock-keywords): New function with old code for
+       initialization of variable of same name.
+
+2007-04-07  David Hansen  <david.hansen@gmx.net>  (tiny change)
+
+       * progmodes/cc-cmds.el (c-electric-paren): Fix space-before-funcall
+       clean-up: only insert space when on identifier, etc.
+
+2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/grep.el (grep-find-use-xargs): Rewrite docstring.
+
+       * net/tls.el (open-tls-stream): Properly handle case where there
+       is no associated buffer.
+
+2007-04-07  Glenn Morris  <rgm@gnu.org>
+
+       * ffap.el (ffap-file-at-point): Lower the priority of the
+       ffap-ftp-sans-slash-regexp check.
+
+2007-04-06  Alan Mackenzie  <acm@muc.de>
+
+       Fix fontification of labels, and other things with ":".
+
+       * progmodes/cc-engine.el (c-forward-label): The function now
+       returns 'goto-target, 'qt-2kwds-colon, 'qt-1kwd-colon, as well as
+       the former t.
+
+       * progmodes/cc-fonts.el (c-font-lock-declarations): Interpret the
+       new return code from c-forward-label, fontifying tokens properly.
+       Add some general comments throughout the file.
+
+2007-04-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * textmodes/flyspell.el (flyspell-duplicate, flyspell-incorrect):
+       Revert 2006-01-27 change.
+
+       * diff-mode.el (diff-mode): Revert 2007-03-04 change.
+
+       * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change.
+
+       * desktop.el (desktop-create-buffer, desktop-save):
+       Revert 2004-11-12 change for lack of copyright papers.
+
+       * dired-x.el (dired-guess-shell-case-fold-search): Delete var.
+       (dired-guess-default): Respect case.
+
+       * isearch.el (isearch-forward): Revert 1998-08-26 doc change.
+
+       * emacs-lisp/byte-opt.el (byte-optimize-pure-func): Remove function;
+       was originally checked in as byte-optimize-concat on 1997-11-02.
+
+       * mail/sendmail.el (mail-text, mail-mode): Revert extant pieces of
+       1995-05-19 doc changes.
+
+2007-04-06  Kim F. Storm  <storm@cua.dk>
+
+       * loadhist.el (read-feature): Reimplement.  New optional arg LOADED-P.
+       (unload-feature): Update interactive spec accordingly.
+
+       * progmodes/grep.el (grep-program): Remove commentary about zgrep.
+
+2007-04-06  John Paul Wallington  <jpw@pobox.com>
+
+       * subr.el (with-case-table): Use `make-symbol' to avoid variable
+       capture.  Restore the table in the same buffer.
+
+       * font-lock.el (lisp-font-lock-keywords-2): Add `with-case-table'.
+
+2007-04-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
+       Print entire form.
+
+2007-04-05  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (breakpoint-disabled): Tweak face (again)
+       for low-color displays.
+
+2007-04-05  Glenn Morris  <rgm@gnu.org>
+
+       * play/5x5.el, play/animate.el, play/dissociate.el, play/doctor.el,
+       * play/gomoku.el, play/landmark.el, play/tetris.el, play/zone.el:
+       Seed random number generator on loading.
+
+       * emacs-lisp/authors.el (top-level): Provide self.
+
+       * play/animate.el (top-level): Provide self.
+
+2007-04-04  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-vars.el (c-special-indent-hook): Amend doc-string
+       to mention c-syntactic-indentation.
+
+2007-04-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * subr.el (with-case-table): New macro.
+
+       * international/mule.el (ascii-case-table): New var.
+
+       * mail/smtpmail.el (smtpmail-via-smtp): Use ascii-case-table when
+       downcasing.
+
+2007-04-03  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-minor-mode-map): Simplify.
+
+       * t-mouse.el (t-mouse-make-event-element): Don't use the left edge
+       of the window if we're outside it e.g menu-bar.
+
+       * xt-mouse.el (xterm-mouse-event): Don't use the left edge of the
+       window if we're outside it e.g menu-bar.
+
+2007-04-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmail.el (rmail-convert-to-babyl-format): Don't try to
+       decode base-64 encoded body if its content-type is something other
+       than text/* or message/*.
+
+2007-04-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * simple.el (activate-mark-hook): Fix typo in docstring.
+
+2007-04-03  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tmm.el (tmm-c-prompt): Initialize.
+       (tmm-menubar): Deal with extended menu-items at top level.
+       (tmm-get-keybind): Handle bindings redefined/undefined locally.
+       (tmm-prompt): Handle visibility of top level menu-items.
+
+       * progmodes/gud.el (gud-menu-map): Simplify.
+       (gud-minor-mode-map): Add tool-bar like bindings to the text mode
+       menubar.
+
+2007-04-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mail/smtpmail.el (smtpmail-via-smtp): Revert last change.
+
+       * comint.el (comint-send-input): Widen the buffer first.
+
+       * info.el (Info-fontify-maximum-menu-size): Revert to 100000.
+
+2007-04-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Only obey
+       emacs-lisp-docstring-fill-column in emacs-lisp-mode.
+
+       * newcomment.el (comment-search-forward): Discard comment starters
+       before point.
+
+2007-04-01  Guanpeng Xu  <herberteuler@hotmail.com>
+
+       * mouse.el (mouse-set-secondary): Update mouse-secondary-overlay.
+
+2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mail/smtpmail.el (smtpmail-via-smtp): Use standard case table
+       when downcasing.
+
+       * button.el (previous-button): Rewrite to account for adjacent buttons.
+
+2007-04-01  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlwave.el (idlwave-auto-fill):
+       Revert paragraph-separate change.
+
+       * progmodes/idlw-shell.el (idlwave-shell-break-in):
+       Simplify module calc.
+       (idlwave-shell-set-bp-in-module): Compute module.
+
+2007-03-31  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp/timer.el (run-at-time): Doc fix.
+
+       * emacs-lisp/warnings.el (display-warning): If we create the
+       buffer displaying the warning, disable undo there.
+
+2007-03-31  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-register-file-name-handler)
+       (tramp-register-completion-file-name-handler): New defsubst,
+       derived from `tramp-register-file-name-handlers'.  The split is
+       necessary because Tramp's file name handlers must be registered at
+       different startup places.
+
+2007-03-31  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/hideshow.el (turn-off-hideshow): New function.
+       (hs-minor-mode): Use it instead of a lambda expression in
+       change-major-mode-hook.
+
+2007-03-31  David Kastrup  <dak@gnu.org>
+
+       * woman.el (woman-Cyg-to-Win): Don't convert cons cells
+       corresponding to MANPATH_MAP entries.
+       (woman-man.conf-path, woman-parse-man.conf): Doc fix.
+       (woman-parse-man.conf): Use more discriminating man.conf name.
+       (woman-parse-man.conf): Parse MANPATH_MAP entries.
+       (woman-manpath): Doc fix and type fix.
+       (woman-cached-data): Check for MANPATH_MAP entries.
+       (woman-expand-directory-path): Treat MANPATH_MAP entries.
+
+2007-03-31  Stuart Herring  <herring@lanl.gov>
+
+       * emacs-lisp/sregex.el (sregexq): Doc fix.
+
+2007-03-31  Markus Triska  <markus.triska@gmx.at>
+
+       * flymake.el (flymake-err-line-patterns): Doc fix.
+
+2007-03-30  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * info.el (info-tool-bar-map): Use "exit" for Info-exit.
+       Move to the right.
+
+2007-03-30  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-cmds.el (c-forward-to-nth-EOF-}): Fix EOB bug.
+
+2007-03-30  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc--insert-new-node): Take additional arg DLL.
+       Use it, passed in explicitly, instead of from the dynamic binding.
+       (ewoc-create, ewoc-enter-before): Update to use new call sequence.
+
+2007-03-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * simple.el (blink-matching-open): When in minibuffer, don't
+       search for a match inside the prompt.
+
+2007-03-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tmm.el (tmm-menubar): Select the right menu item with the mouse.
+       (tmm-prompt): Don't make the mouse user select the first menu
+       item twice.
+
+2007-03-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * eshell/esh-proc.el (eshell/kill): Tweak regexp to recognize
+       SIGUSR1 and SIGUSR2.
+
+2007-03-29  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-read-internal): When reading file or dir, only override
+       minibuffer-local-filename-completion-map, otherwise only override
+       minibuffer-local-completion-map.
+
+2007-03-29  Glenn Morris  <rgm@gnu.org>
+
+       * complete.el (partial-completion-mode): Set PC-do-completion-end
+       to nil after use.
+       (PC-lisp-complete-symbol): Create and use a marker at `end',
+       rather than using point-marker.
+
+2007-03-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (next-error-highlight): Doc fix.
+       (compose-mail): Revert 2007-03-19 change.
+
+2007-03-28  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/edebug.el (edebug-display): Don't go to
+       edebug-outside-buffer if it is dead.
+
+2007-03-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * view.el (view-mode): Fix typos in docstring.
+
+2007-03-28  Stephen Berman  <Stephen.Berman@gmx.net>
+
+       * recentf.el (recentf-save-file): Add a custom :set function.
+
+2007-03-28  Glenn Morris  <rgm@gnu.org>
+
+       * complete.el (PC-do-completion-end): New variable.
+       (partial-completion-mode) <choose-completion-string-functions>:
+       Use PC-do-completion-end in the non-minibuffer case to replace the
+       correct amount of text.
+       (PC-do-completion): Set PC-do-completion-end for c-c-s-f.
+       (PC-lisp-complete-symbol): Give marker the after-insertion type,
+       to deal with improvements inserted after point.
+
+2007-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * button.el (make-text-button): Add explicit `button' property.
+       (default-button): Don't put a `button' property on it.
+
+       * progmodes/python.el (python-mode): Skip comments when parsing.
+
+       * vc-arch.el (vc-with-current-file-buffer): New macro.
+       (vc-arch-file-source-p): Use it to avoid infloop.
+
+2007-03-28  David Hansen  <david.hansen@gmx.net>  (tiny change)
+
+       * emacs-lisp/lisp.el (lisp-complete-symbol):
+       Fix call to get-buffer-window to find windows in other frames.
+
+2007-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * comint.el (comint-proc-query, comint-dynamic-list-completions):
+       Fix calls to get-buffer-window to find windows in other frames.
+       Reported by David Hansen <david.hansen@gmx.net>.
+
+2007-03-27   Kevin Ryde  <user42@zip.com.au>
+
+       * info.el (Info-display-images-node): On a text-only terminal,
+       show the "text" or "alt" parts of the image blobs.
+
+2007-03-27  Glenn Morris  <rgm@gnu.org>
+
+       * complete.el (PC-do-completion): Compute completion-base-size in
+       the non-filename case, rather than setting to nil.
+       (PC-lisp-complete-end): New variable.
+       (PC-lisp-complete-symbol): Use PC-lisp-complete-end to store the
+       original end in a series of consecutive invocations.
+
+       * calendar/calendar.el (calendar-mode-hook): Declare it.
+
+       * calendar/diary-lib.el (diary-live-p): Do not check for
+       diary-selective-display.
+
+2007-03-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * replace.el (occur-next-error): *Occur* might not be displayed in the
+       selected frame.  Reported by David Hansen <david.hansen@gmx.net>.
+
+2007-03-26  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-large-region):
+       Use ispell-call-process-region.
+
+2007-03-26  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble):
+       Use prin1 instead of princ.
+
+2007-03-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faces.el (face-set-after-frame-default): Revert 2007-03-10 change.
+       Merge in X resources before global face.
+
+       * progmodes/compile.el (compilation-start): Save compilation-directory
+       rather than default-directory as local var.
+       (compilation-directory): Mark as safe local var.
+
+       * files.el: Don't mark default-directory as a safe local var.
+
+2007-03-25  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-mode.el (c-before-change): Fix BOB bug.
+       * progmodes/cc-engine.el: Fix typo.
+
+2007-03-25  Juri Linkov  <juri@jurta.org>
+
+       * compare-w.el (compare-windows): Rename customization group
+       `compare-w' to `compare-windows'.
+       (compare-windows-whitespace, compare-ignore-whitespace)
+       (compare-ignore-case, compare-windows-sync)
+       (compare-windows-sync-string-size, compare-windows-recenter)
+       (compare-windows-highlight, compare-windows): Change group name in
+       the `group' tag from `compare-w' to `compare-windows'.
+       (compare-windows-sync): Add option `nil' for no sync.  Doc fix.
+
+2007-03-24  Markus Triska  <markus.triska@gmx.at>
+
+       * expand.el: Change example to always enable abbrev-mode,
+       and remove redundant `function'.
+       (expand-abbrev-hook): Add autoload cookie.
+
+2007-03-24  Ryan Yeske  <rcyeske@gmail.com>
+
+       * emacs-lisp/testcover.el (testcover-start, testcover-end)
+       (testcover-mark-all, testcover-unmark-all): Add prompts to
+       interactive specs.
+
+2007-03-24  Jason Rumney  <jasonr@gnu.org>
+
+       * autorevert.el (find-file-hook, auto-revert-tail-mode):
+       Use file size in bytes for auto-revert-tail-pos not characters.
+
+2007-03-24  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * vc-rcs.el (vc-rcs-annotate-command):
+       Set text property :vc-annotate-prefix on the annotation text.
+       (vc-rcs-annotate-time): Instead of searching for ": ",
+       search for end of text propertized with :vc-annotate-prefix.
+
+2007-03-24  Martin Rudalics  <rudalics@gmx.at>
+
+       * whitespace.el (top level): Remove calls putting
+       permanent-local nil property since these are no-ops.
+
+       * man.el (Man-support-local-filenames): Assure that
+       default-directory exists when doing call-process.
+
+2007-03-23  David Vazquez  <xeos00@gmail.com>  (tiny change)
+
+       * progmodes/m4-mode.el (m4-m4-buffer, m4-m4-region):
+       Fix omission bug: Use m4-program-options to construct shell command.
+
+2007-03-23  David Kastrup  <dak@gnu.org>
+
+       * progmodes/cc-mode.el (c-make-emacs-variables-local):
+       Use `mapcar' rather than `mapcan' to silence compiler warning.
+
+2007-03-22  Ralf Angeli  <angeli@caeruleus.net>
+
+       * textmodes/reftex.el, textmodes/reftex-vars.el,
+       * textmodes/reftex-toc.el, textmodes/reftex-sel.el,
+       * textmodes/reftex-ref.el, textmodes/reftex-parse.el,
+       * textmodes/reftex-index.el, textmodes/reftex-global.el,
+       * textmodes/reftex-dcr.el, textmodes/reftex-cite.el,
+       * textmodes/reftex-auc.el: Add maintainer address.
+
+2007-03-22  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-mode, org-table-edit-formulas):
+       Make sure that `global-font-lock-mode' does not turn on font-lock
+       in these buffers.
+
+2007-03-21  Kim F. Storm  <storm@cua.dk>
+
+       * xt-mouse.el (xt-mouse-epoch): New variable.
+       (xterm-mouse-event): Use float-time.
+
+2007-03-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xt-mouse.el (xterm-mouse-event): Compute a timestamp using
+       current-time.
+
+2007-03-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * complete.el (read-file-name-internal): Don't add the final > if the
+       completion is not finished (re-application of this patch, which was
+       accidentally undone by Eli).
+
+2007-03-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emulation/viper.el (viper-non-hook-settings): Handle mouse
+       clicks in describe-key and describe-key-briefly advice a little better.
+
+2007-03-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * server.el (server-process-filter): Cancel any pending isearch.
+
+2007-03-21  Ulf Jasper  <ulf.jasper@web.de>
+
+       * calendar/icalendar.el (icalendar-version): Increase to 0.15.
+       (icalendar--get-unfolded-buffer): Define actual arguments rather
+       than just using &rest.  Check replace-in-string is fbound.
+       (icalendar-import-buffer): Doc fix.
+       (icalendar--convert-ical-to-diary): Set diary-file.
+       Check diary-file before inserting final newline.
+       (icalendar--add-diary-entry): Return diary-file.
+
+2007-03-21  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/calendar.el (diary-set-maybe-redraw): Autoload it.
+       (diary-display-hook): Add custom :set function.
+
+       * calendar/diary-lib.el (diary-header-line-flag): Doc fix.
+       Add custom :set function.
+       (diary-header-line-format): Doc fix.
+       (diary-set-maybe-redraw): New function.
+       (number-of-diary-entries): Change :set to use diary-set-maybe-redraw.
+       (diary-list-entries): Always run diary-mode.
+
+2007-03-20  Kenichi Handa  <handa@m17n.org>
+
+       * international/quail.el (quail-setup-completion-buf): Make the
+       completion buffer read-only.
+       (quail-completion): Adjusted for the above change.  Leave the
+       modified flag nil.
+
+2007-03-20  David Kastrup  <dak@gnu.org>
+
+       * files.el (magic-mode-alist): Require literal "%!PS" string for
+       magic postscript file detection.
+
+2007-03-20  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/ispell.el (ispell-call-process): New function.
+       Defends against bad `default-directory.'
+       (ispell-check-version, ispell-find-aspell-dictionaries)
+       (ispell-get-aspell-config-value, lookup-words): Call it.
+       (ispell-call-process-region): New function.
+       (ispell-send-string): Call it.
+
+2007-03-20  Andreas Schwab  <schwab@suse.de>
+
+       * Makefile.in (custom-deps): Depend on $(lisp)/subdirs.el.
+       (finder-data): Likewise.
+       (autoloads): Likewise.
+
+2007-03-20  Martin Rudalics  <rudalics@gmx.at>
+
+       * files.el (basic-save-buffer): Do not set visited filename when
+       the corresponding directory does not exist or the specified
+       filename is that of an existing directory.
+
+2007-03-20  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/diary-lib.el (diary-live-p): New function.
+       (number-of-diary-entries): Add a :set function to redisplay diary
+       when necessary.
+
+2007-03-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * t-mouse.el (t-mouse-make-event-element): Use timestamp output
+       from client program, mev, to compute mouse event.
+
+2007-03-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faces.el (momentary): Face removed; unused due to reversion of
+       2007-01-04 changes by Kevin Rodgers.
+
+       * mouse.el (mouse-drag-track): Remove spurious input-pending-p test.
+       Suggested by Johan Bockg\e,Ae\e(Brd.
+
+2007-03-19  Martin Rudalics  <rudalics@gmx.at>
+
+       * font-lock.el (lisp-font-lock-keywords-1):
+       Highlight define-globalized-minor-mode as a keyword.
+
+2007-03-19  Kim F. Storm  <storm@cua.dk>
+
+       * calc/calc-forms.el (math-std-daylight-savings)
+       (math-std-daylight-savings-old): Doc fix.
+
+2007-03-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/python.el (python-default-template): Doc fix.
+       (python-buffer): Fix typo in docstring.
+
+       * isearchb.el (isearchb-follow-char):
+       * subr.el (def-edebug-spec): Fix typo in docstring.
+
+2007-03-19  Richard Stallman  <rms@gnu.org>
+
+       * files.el (default-directory): Mark safe.
+       (basic-save-buffer-2): Put proper dir name in error message.
+
+       * simple.el (compose-mail): Run switch-function after
+       setting up the mail buffer.
+
+       * startup.el (inhibit-splash-screen, initial-major-mode): Doc fixes.
+
+2007-03-18  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-forms.el (math-parse-date): Fix a regular expression.
+       (math-std-daylight-savings-new): Rename from
+       `math-std-daylight-savings'.
+       (math-std-daylight-savings-old): Rename from old value of
+       `math-std-daylight-savings'.
+       (math-std-daylight-savings): Use `math-std-daylight-savings-new' or
+       `math-std-daylight-savings-old' depending on the year.
+
+2007-03-18  Detlev Zundel  <dzu@gnu.org>
+
+       * emacs-lisp/re-builder.el (reb-update-overlays): Do not mark
+       zero-width regexps as invalid but rather at least count them correctly.
+
+2007-03-18  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * net/tls.el (open-tls-stream): In handshake-waiting loop,
+       don't wait more if there is output available to process.
+
+2007-03-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/compile.el (compilation-find-file): Revert change
+       from 2006-07-18 to allow completion of directory names.
+       Reported by John Carter <john.carter@tait.co.nz>.
+
+2007-03-18  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (when, unless): Doc fix.
+
+2007-03-17  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * net/tls.el (tls-program): Doc fix.
+
+2007-03-17  Denis Bueno  <dbueno@gmail.com>  (tiny change)
+
+       * autorevert.el (auto-revert-tail-handler):
+       Call after-revert-hook.
+
+2007-03-17  Ryan Yeske  <rcyeske@gmail.com>
+
+       * simple.el (switch-to-completions): No error if search for \n\n fails.
+
+2007-03-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (line-move-1):
+       Respect `inhibit-line-move-field-capture' property.
+
+2007-03-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * comint.el (comint-arguments): Mark backslash-escaped chars.
+       (comint-delim-arg): Don't treat them as delimiters.
+
+2007-03-12  Kim F. Storm  <storm@cua.dk>
+       * ido.el (ido-init-completion-maps): Remap delete-backward-char.
+
+2007-03-12  Lawrence Mitchell  <wence@gmx.li>  (tiny change)
+
+       * tempo.el (tempo-insert): Deal with 'r> if it appears
+       specified with a prompt argument.
+
+2007-03-12  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-set-font-lock-defaults):
+       Handle narrow table columns correctly.
+
+2007-03-12  Mark A. Hershberger  <mah@everybody.org>
+
+       * xml.el (xml-parse-tag, xml-parse-string, xml-parse-attlist)
+       (xml-parse-dtd, xml-parse-elem-type, xml-substitute-special):
+       Return to use of the -no-properties variants.  There was
+       consensus on emacs-devel that the speed of these variants was
+       prefered since we are usually parsing files (from the internet
+       or on disk) instead of XML created in Emacs.
+
+       * eshell/esh-mode.el (eshell-handle-ansi-color): New function.
+       Add customize option.
+
+2007-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * calc/calc-forms.el (math-std-daylight-savings): Switch to new
+       North American rule.  Replace "daylight savings" with "daylight
+       saving" in doc.
+
+       * calendar/cal-china.el, cal-dst.el, calendar.el, diary-lib.el:
+       * calendar/lunar.el, solar.el: Replace "daylight savings" with
+       "daylight saving" in text.
+
+       * woman.el (woman-change-fonts): Tweak previous change by using
+       woman-request-regexp rather than "^\\.".
+
+       * startup.el (command-line-1): Make insertion of
+       initial-scratch-message not depend on scratch being selected.
+
+2007-03-11  Juri Linkov  <juri@jurta.org>
+
+       * replace.el (match): Use yellow background on light-bg terminals.
+
+2007-03-11  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/bytecomp.el (byte-compile-warning-prefix):
+       Correctly compute line number.
+
+2007-03-11  Guanpeng Xu  <herberteuler@hotmail.com>
+
+       * type-break.el (type-break-get-previous-count):
+       Repeat previous change here.
+
+2007-03-11  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/grep.el (grep-find-ignored-directories):
+       Add .git and .bzr to list.
+
+2007-03-11  Andreas Schwab  <schwab@suse.de>
+
+       * diff-mode.el (diff-apply-hunk): Use proper format string for error.
+
+2007-03-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mail/emacsbug.el (report-emacs-bug): Don't hard code the "X" name.
+
+2007-03-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faces.el (face-set-after-frame-default): Recalculate face
+       customizations after applying X resources.
+
+2007-03-10  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-timeout-seconds): New variable.
+       (rcirc-keepalive-seconds): Remove variable.
+       (rcirc-server-name, rcirc-timeout-timer, rcirc-connecting)
+       (rcirc-process, rcirc-user-disconnect): New variables.
+       (rcirc-connect): Initalize new variables.
+       (rcirc-keepalive): Don't send keepalive pings before connection
+       is completed.
+       (rcirc-sentinel): Do mark all channels with activity when
+       connection is dropped.  Run hook with process buffer local.
+       (rcirc-reschedule-timeout, rcirc-delete-process): New functions.
+       (rcirc-buffer-process): Return value of rcirc-process if
+       rcirc-server-buffer is nil.
+       (rcirc-server-name): Return the reported server name.
+       (rcirc-update-prompt): Simplify computation of the server name.
+       (rcirc-format-response-string): Likewise.
+       (rcirc-handler-001): Mark server as connected, record the reported
+       server name, and schedule a timeout.
+       (rcirc-track-nick): Add a spec for the tty class.
+       (rcirc-user-non-nick): Remove function.
+       (rcirc-nick-prefix-chars): Add variable.
+       (rcirc-user-nick): Use above variable.
+
+2007-03-10  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * icomplete.el (icomplete-tidy, icomplete-exhibit):
+       Bind deactivate-mark to nil.
+
+2007-03-10  Martin Rudalics  <rudalics@gmx.at>
+
+       * complete.el (PC-do-completion): Bind dirlength to nil to avoid
+       that buffer contents get erased during completion.
+
+2007-03-10  Glenn Morris  <rgm@gnu.org>
+
+       * woman.el (woman-change-fonts): Add a hack to deal with
+       font-escape followed by "." at start of a line.
+       (woman2-IP): Add a hack to deal with consecutive requests.
+       (woman2-tagged-paragraph): Extend existing hack to handle "sp".
+
+2007-03-10  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-mode.el (c-before-change): Wrap in save-match-data.
+
+2007-03-09  Richard Stallman  <rms@gnu.org>
+
+       * abbrev.el (abbrev): Add `provide'.
+
+2007-03-09  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * net/ange-ftp.el (ange-ftp-try-passive-mode): Doc fix.
+
+2007-03-09  Martin Rudalics  <rudalics@gmx.at>
+
+       * complete.el (PC-try-completion): New function.
+       (PC-do-completion, read-file-name-internal): Use it instead of
+       try-completion.
+
+2007-03-08  Alan Mackenzie  <acm@muc.de>
+
+       Remove stale tokens from `c-found-types' cache.
+
+       * progmodes/cc-mode.el (c-unfind-enclosing-token)
+       (c-unfind-coalesced-tokens, c-before-change): New functions.
+       (c-maybe-stale-found-type): New variable.
+
+       * progmodes/cc-engine.el (c-partial-ws-p, c-unfind-type)
+       (c-trim-found-types): New functions.
+
+2007-03-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * smerge-mode.el (smerge-remove-props): Don't mark the buffer modified.
+       (debug-ignored-errors): Add entry from smerge-match-conflict.
+
+2007-03-08  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlw-help.el (idlwave-do-context-help1): Don't visit
+       special help topics for keywords.
+       (idlwave-help-assistant-command): Include ".exe" for ms-dos
+       etc. Assistant command.
+
+2007-03-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * replace.el (occur-engine): Move buffer-undo-list binding...
+       (occur-1): ...to here.
+
+       * complete.el (PC-bindings): Rebind M-TAB in read-expression-map.
+
+       * simple.el (minibuffer-completing-symbol): New var.
+       (eval-expression): Use it.
+       (completion-setup-function): Don't bind completion-base-size when
+       completing a symbol in the minibuffer.
+
+2007-03-08  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gdb): Pop up current GUD buffer if user
+       tries to start a second session in graphical mode.
+
+2007-03-07  Miles Bader  <miles@gnu.org>
+
+       * international/isearch-x.el
+       (isearch-process-search-multibyte-characters):
+       Strip text-properties from PROMPT to avoid an error from read-string.
+
+2007-03-07  Kim F. Storm  <storm@cua.dk>
+
+       * complete.el (PC-bindings): Remap lisp-complete-symbol to
+       PC-lisp-complete-symbol instead of binding M-TAB in global-map.
+
+2007-03-07  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
+
+       * complete.el (PC-do-completion): Delete duplicates in the list of
+       possible completions.
+
+2007-03-07  Glenn Morris  <rgm@gnu.org>
+
+       * ses.el (ses-mode): Doc fix.
+
+2007-03-06  Kim F. Storm  <storm@cua.dk>
+
+       * isearch.el (isearch-message-prefix): Undo 2007-03-01 change.
+
+2007-03-06  Kenichi Handa  <handa@m17n.org>
+
+       * term/x-win.el (x-select-utf8-or-ctext): Improve the strategy.
+
+2007-03-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (completion-setup-function): Improve last fix so it doesn't
+       set it to a relative directory name either.
+
+2007-03-05  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.el: Replace some (defvar VAR) by (defvar VAR nil).
+
+2007-03-05  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/re-builder.el (reb-re-syntax): Fix custom type.
+
+       * files.el (find-file-noselect): No error if file no longer exists.
+       Display a message and avoid other questions.
+
+2007-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcomplete.el (pcomplete-show-completions): Improve last change, so
+       as not to use an invisible window and to create a window if none exist.
+
+       * progmodes/python.el (python-send-command): Restart proc if necessary.
+       (python-proc): Simplify.
+
+2007-03-05  David Hansen  <david.hansen@gmx.net>  (tiny change)
+
+       * pcomplete.el (pcomplete-show-completions): Search all frames for
+       completions buffer.
+
+2007-03-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (customize-save-variable): Clear customized-value
+       property (saved values are now put in theme-value property).
+       (customize-set-variable): Doc fix.
+
+       * complete.el (PC-do-completion): If completion-ignore-case is
+       non-nil, replace field with completion string before exiting.
+
+2007-03-05  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-make-temp-file): New parameter FILENAME.
+       Append its extension to the resulting temporary file name.
+       (tramp-handle-file-local-copy, tramp-handle-write-region): Apply it.
+
+       * net/tramp-smb.el (tramp-smb-handle-file-local-copy)
+       (tramp-smb-handle-write-region): Apply it.
+
+2007-03-05  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
+
+       * emacs-lisp/lisp-mode.el (calculate-lisp-indent):
+       Redo previous change.
+
+2007-03-04  Kevin Rodgers  <kevin.d.rodgers@gmail.com>  (tiny change)
+
+       * diff-mode.el (diff-mode): Doc fix.
+
+2007-03-05  Kenichi Handa  <handa@m17n.org>
+
+       * international/characters.el: Set category `l' (latin)
+       for more characters.
+
+2007-03-04  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/authors.el (authors-aliases): Add alias.
+
+2007-03-04  Glenn Morris  <rgm@gnu.org>
+
+       * progmodes/hideshow.el (hs-minor-mode): Turn mode off and show
+       all when switching major mode.
+       (hs-minor-mode, hs-c-start-regexp, hs-block-start-regexp)
+       (hs-block-start-mdata-select, hs-block-end-regexp)
+       (hs-forward-sexp-func, hs-adjust-block-beginning):
+       Do not make these variables permanent-local.
+
+2007-03-04  Richard Stallman  <rms@gnu.org>
+
+       * progmodes/cperl-mode.el (cperl-mode):
+       Modify cperl-compilation-error-regexp-alist by appending.
+
+       * emacs-lisp/edebug.el (edebug-kill-buffer): New function.
+       (edebug-mode): Add the hook.
+       (edebug-recursive-edit): Remove the hook on exiting.
+
+       * type-break.el (type-break-get-previous-time):
+       Handle end-of-file errors specially
+       so they don't get reported wrong in .emacs.
+
+       * startup.el (fancy-splash-text): Clarify text.
+
+       * simple.el (beginning-of-buffer, end-of-buffer):
+       Avoid treating plain C-u like numeric arg.
+
+       * simple.el (completion-setup-function): Don't set
+       default-directory to nil.
+
+       * shell.el (shell-dirstack-query): Doc fix.
+
+       * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line):
+       Don't select the window -- pass it to primitives instead.
+
+       * faces.el (minibuffer-prompt): Use medium blue by default.
+
+2007-03-04  David Kastrup  <dak@gnu.org>
+
+       * jit-lock.el (jit-lock-stealth-time): Change default to nil.
+       Preserve 16 as default value for "seconds" when customizing.
+
+2007-03-04  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-self-insert-command)
+       (orgtbl-self-insert-command, org-delete-char)
+       (org-delete-backward-char): Set the `flyspell-delayed' property.
+
+2007-03-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * international/mule.el (find-auto-coding): Don't search for
+       line-ending characters past the end of the tail.
+
+2007-03-03  Christopher Allan Webber  <cwebber@dustycloud.org>  (tiny change)
+
+       * play/gamegrid.el (gamegrid-add-score-with-update-game-score-1):
+       Jump to the line where new score has been uploaded.
+
+       * play/tetris.el (tetris-move-bottom, tetris-move-left)
+       (tetris-move-right, tetris-rotate-prev, tetris-rotate-next):
+       Do nothing when the game is paused.
+
+2007-03-03  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-set-tags): Prevent slipping of point
+       during completion.
+
+2007-03-01  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * isearch.el (isearch-message-prefix):
+       Use minibuffer-prompt-properties.
+
+2007-03-01  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.el: Replace (defvar VAR nil) by (defvar VAR).
+       (ps-setup): Print which Emacsen is running ps-print package.
+
+2007-03-01  Stuart Herring  <herring@lanl.gov>
+
+       * files.el (set-auto-mode-0): Use `indirect-function'.
+       (hack-one-local-variable): Don't reapply current major mode.
+
+2007-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/python.el (python-quote-syntax): Don't bother with
+       syntax-ppss-context.
+       (python-fill-paragraph): Make sure that fenced-string delimiters that
+       stand on their own line stay there.
+
+2007-03-01  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * replace.el (perform-replace): Propertize message.
+
+2007-03-01  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-prepare-agenda-buffers): Also check for
+       invisible heading.
+
+2007-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * net/tramp.el (tramp-file-name-handler): Revert last change.
+
+2007-02-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-mouse-until, gdb-mouse-jump):
+       Correct doc strings.
+
+2007-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * replace.el (perform-replace): Undo forward-char immediately if
+       non-adjacent search fails.
+
+2007-02-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * version.el (emacs-major-version, emacs-minor-version):
+       string-to-int -> string-to-number.
+
+2007-02-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help.el (where-is): Fail gracefully when not passed a command.
+
+2007-02-28  Stuart Herring  <herring@lanl.gov>
+
+       * find-lisp.el (find-lisp-default-directory-predicate):
+       Fix bug: Do symlink check on expanded filename.
+
+2007-02-28  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-set-tags, org-table-get-field): Avoid case
+       changes during replacement.
+       (org-agenda-mode-map): Add default binding for `org-agenda-archive'.
+
+2007-02-28  Lars Hansen  <larsh@soem.dk>
+
+       * desktop.el: Delete header line listing me as maintainer.
+
+2007-02-28  Glenn Morris  <rgm@gnu.org>
+
+       * tutorial.el (tutorial--describe-nonstandard-key): Tweak text in
+       the menus case.
+
+2007-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * net/tramp.el (tramp-file-name-handler): Inhibit modification
+       hooks to avoid confusion when combining after-change calls.
+
+2007-02-27  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-encrypt-string): Remove inhibition of gpg-agent,
+       now that pgg-gpg-process-region correctly honors passed-in passphrase.
+       (allout-distinctive-bullets-string): Add info about bullet conventions.
+       (allout-mode): Add info about distinctive vs plain bullets.
+
+2007-02-27  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-archive-subtree): Quote variable name.
+       (org-agenda-get-todos): Make sure skip properties are checked correctly.
+
+2007-02-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-bashdb-history, gud-bashdb-marker-filter)
+       (gud-bashdb-command-name, bashdb): Remove.
+       (gud, gud-menu-map): Remove references to bash/bashdb.
+
+2007-02-26  Andrey Zhdanov  <susuman@hotmail.com>  (tiny change)
+
+       * progmodes/gud.el (gud-pdb-marker-regexp): Add optional <module>
+       keyword for Python 2.5.
+
+2007-02-26  Romain Francoise  <romain@orebokech.com>
+
+       * net/net-utils.el (whois-server-tld): Update server for .org.
+       (whois-server-list): Add whois.publicinterestregistry.net.
+       (whois-guess-server): Fix formatting in docstring.
+
+2007-02-26  Kim F. Storm  <storm@cua.dk>
+
+       * mouse.el (mouse-show-mark): Run hooks and perform command
+       remapping for mouse-region-delete-keys.
+
+2007-02-26  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * font-core.el (font-lock-mode): Doc fix.
+
+2007-02-25  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-buffer-internal): Set this-command to fallback command.
+       Add selected buffer to buffer-name-history.
+       (ido-file-internal): Set this-command to fallback command.
+       Add file names to file-name-history.
+
+       * emacs-lisp/map-ynp.el (map-y-or-n-p):
+       Apply minibuffer-prompt-properties.
+
+2007-02-25  Andreas Schwab  <schwab@suse.de>
+
+       * files.el (hack-one-local-variable-eval-safep): Correct handling
+       of edebug-form-spec property value.  Reported by Johan Bockg\e,Ae\e(Brd.
+
+2007-02-25  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-table-overlay-coordinates)
+       (org-table-toggle-coordinate-overlays): New functions.
+       (org-table-overlay-coordinates, org-table-coordinate-overlays):
+       New variables.
+       (org-startup-with-deadline-check): Remove option.
+       (org-mode): Remove deadline check on startup.
+       (org-table-limit-column-width): Remove option.
+       (org-table-formula-numbers-only): Remove option.
+       (org-link-style, org-link-format): Remove options.
+       (org-select-agenda-window, org-fit-agenda-window): Remove options.
+       (org-export-ascii-show-new-buffer)
+       (org-export-html-show-new-buffer): Remove options.
+       (org-activate-links): Remove camel option.
+       (org-file-link-context-use-camel-case): Remove option.
+       (org-camel-regexp): Remove variable.
+       (org-activate-camels): Remove function.
+       (org-store-link): Remove Camel stuff.
+       (org-make-org-heading-camel): Remove function.
+       (org-open-at-point): Remove camel stuff.
+       (org-link-search): Remove camel stuff.
+       (org-camel-to-words): Function removed.
+       (org-get-agenda-file-buffer): Make sure we prepare the base
+       buffers, not any indirect buffers.
+       (org-sort-entries): Sort top-level when not on a headline, and no
+       active region.
+       (org-in-regexp): New function.
+       (org-search-not-self): Rename from `org-search-not-link'.
+       (org-open-link-marker): New variable.
+       (org-open-at-point): Set `org-open-link-marker'.
+       (org-print-icalendar-entries): Fixe bug with excluding DONE
+       entries from the exported list.
+       (org-edit-formula-lisp-indent): New command.
+       (orgtbl-to-texinfo, orgtbl-to-html): New functions.
+       (orgtbl-to-latex, orgtbl-insert-radio-table)
+       (orgtbl-toggle-comment, orgtbl-send-table): New functions.
+       (orgtbl-radio-table-templates): New option.
+       (org-store-link-props):
+       (org-remember-templates): More possibilities to insert info
+       into templates.
+       (org-remember-apply-template): Make use of the extended
+       template capabilities.
+       (org-remember-redo-template): New command.
+       (org-upgrade-old-links)
+       (org-table-modify-formulas, org-table-replace-in-formulas)
+       (org-table-find-dataline)
+       (org-table-get-vertical-vector): Remove functions.
+       (org-table-remove-rectangle-highlight)
+       (org-time-stamp-format, org-toggle-log-option)
+       (org-table-highlight-rectangle)
+       (org-table-iterate, org-table-make-reference):
+       (org-translate-time, org-tree-to-indirect-buffer)
+       (org-table-field-info, org-table-fix-formulas)
+       (org-table-force-dataline, org-table-get-descriptor-line)
+       (org-table-get-range)
+       (org-skip-comments, org-sort)
+       (org-sort-entries, org-sublist, org-table-add-rectangle-overlay)
+       (org-table-current-dline, org-table-current-field-formula)
+       (org-table-edit-backward-field)
+       (org-table-edit-formulas-post-command)
+       (org-table-edit-line-down, org-table-edit-line-up)
+       (org-agenda-archive)
+       (org-agenda-clock-cancel)
+       (org-agenda-clock-out, org-agenda-list-stuck-projects)
+       (org-agenda-open-link, org-agenda-show-new-time)
+       (org-agenda-skip-subtree-when-regexp-matches)
+       (org-agenda-tree-to-indirect-buffer, org-agenda-undo)
+       (org-at-regexp-p, org-auto-repeat-maybe, org-check-log-option)
+       (org-do-sort, org-file-image-p, org-find-overlays)
+       (org-find-row-type, org-get-indirect-buffer, org-get-repeat)
+       (org-highlight-until-next-command, org-isearch-end)
+       (org-match-any-p, org-next-link, org-previous-link):
+       (org-remove-subtree-entries-from-agenda, org-replace-escapes)
+       (org-rewrite-old-row-references)
+       (org-isearch-post-command)
+       (org-table-edit-move, org-table-edit-next-field)
+       (org-table-edit-scroll, org-table-edit-scroll-down)
+       (org-set-frame-title, org-show-reference)
+       (org-unhighlight-once, org-verify-change-for-undo): New functions.
+       (org-show-variable): Remove command.
+       (org-add-log-maybe): New arguments STATE, FINDPOS
+       (org-table-sort-lines): Rewrite from scratch.
+       (org-link-search): New argument AVOID-POS.
+       (org-print-icalendar-entries): Remove argument CATEGORY.
+       (org-run-agenda-series): Remove argument WONDOW.
+       (org-next-link, org-previous-link): New commands.
+       (org-agenda-date-format): New option.
+       (org-table-iterate): New command.
+       (org-table-modify-formulas)
+       (org-table-replace-in-formulas): Remove functions.
+       (org-table-fix-formulas): New function.
+       (org-table-insert-column, org-table-delete-column)
+       (org-table-move-column): Use `org-table-fix-formulas'.
+       (org-follow-gnus-link): Patch from Bastien/Leo.
+       (org-table-current-field-formula): New function.
+       (org-file-image-p): New function.
+       (org-agenda-show-new-time): New function.
+       (org-agenda-date-later): Call `org-agenda-show-new-time'.
+       (org-with-remote-undo): New macro.
+       (org-agenda-undo): New command.
+       (org-verify-change-for-undo): New function.
+       (org-time-stamp-format): New function.
+       (org-agenda-get-timestamps): Skip scheduled if DONE and requested
+       by user.
+       (org-match-any-p): New function.
+       (org-make-tags-matcher): Handle regular expressions for tag and
+       todo matches.
+       (org-read-date): Accept "+N" as input for a date relative to the
+       current date.
+       (org-remove-subtree-entries-from-agenda): New function.
+       (org-agenda-archive, org-agenda-kill):
+       Use `org-remove-subtree-entries-from-agenda'.
+       (org-do-sort, org-sort-entries): New functions.
+       (org-sort): New command.
+       (org-table-sort-lines): Use `org-do-sort'.
+       (org-fix-decoded-time): New function.
+       (org-table-number-regexp): Require 0x... to identify as number
+       in tables.
+       (org-startup-options): New keywords for note taking.
+       (org-upgrade-old-links): Remove function.
+       (org-get-repeat): New function.
+       (org-show-context): Also show siblings on current level.
+       (org-show-siblings): New function.
+       (org-isearch-end, org-isearch-post-command): New functions.
+       (org-show-siblings): New option.
+       (org-show-context): Use `org-show-siblings'.
+       (org-table-maybe-recalculate-line): No longer require `calc-eval'
+       to be bound, because user may just use elisp.
+
+2007-02-24  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-paste): Handle x-clipboard-yank.
+       (cua--init-keymaps): Remap x-clipboard-yank to cua-paste.
+
+2007-02-24  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * startup.el (command-line): Also check if the abbrev file is readable.
+
+2007-02-24  John Paul Wallington  <jpw@pobox.com>
+
+       * net/tls.el (tls-certtool-program): Fix custom type.
+
+       * mail/feedmail.el (feedmail-message-id-generator)
+       (feedmail-date-generator): Fix custom types.
+
+       * mail/rmail.el (rmail-message-filter): Fix custom type.
+
+2007-02-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * startup.el (command-line): If simple.el cannot be found, proceed
+       with a warning message.
+
+2007-02-24  Kenichi Handa  <handa@m17n.org>
+
+       * international/utf-8.el (utf-8-pre-write-conversion): Handle the
+       case that BEG is a string.
+
+2007-02-24  Chris Moore  <dooglus@gmail.com>
+
+       * pgg-pgp5.el (pgg-pgp5-encrypt-region):
+       * pgg-pgp.el (pgg-pgp-encrypt-region):
+       * pgg-gpg.el (pgg-gpg-encrypt-region):
+       Check pgg-encrypt-for-me if no other recipients.
+
+2007-02-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmailedit.el (rmail-cease-edit): Restore the Rmail toolbar.
+
+       * textmodes/sgml-mode.el (sgml-validate): Quote the file name with
+       shell-quote-argument.
+
+2007-02-23  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       * comint.el (comint-read-input-ring): Use comint-input-ring-size
+       from the comint buffer instead of the temporary one.
+
+2007-02-23  David Reitter  <david.reitter@gmail.com>
+
+       * cus-edit.el (custom-save-all): Canonicalize custom-file before
+       storing it in recentf-exclude.
+
+2007-02-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * startup.el (fancy-splash-screens): Make cursor-type buffer-local
+       in splash screen.
+
+2007-02-22  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlw-shell.el (idlwave-shell-mode): Clean up pending
+       commands, for restart.
+       (idlwave-shell-current-module): Fix handling of module name by type.
+       (idlwave-shell-break-in): Update type handling.
+       (idlwave-shell-bp-get): Encode type in BP structure.
+       (idlwave-shell-set-bp): Fix setting condition/count on disabled BPs.
+       (idlwave-shell-module-source-query): Query routine info based on type.
+       Fix path parsing for non-compiled files.
+       (idlwave-shell-module-source-filter): Don't signal error in filter
+       if no source found.
+       (idlwave-shell-set-bp-in-module): Use fallback source to prevent
+       filter race.
+
+2007-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * wid-edit.el (widget-default-create): Undo 2007-02-04 change.
+       (editable-field): Document need to put some text before the %v
+       escape in :format string.
+
+2007-02-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-svn.el: Remove the code inherited from CVSREAD and `cvs edit'.
+       (vc-svn-use-edit): Remove unused config var.
+       (vc-svn-update, vc-svn-revert): Checkout is always implicit.
+
+       * outline.el (hide-sublevels): Keep empty last line, if available.
+
+       * buff-menu.el (list-buffers-noselect): Use explicit unicode code
+       rather than the corresponding unicode char, to make the code
+       more readable.
+
+2007-02-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * speedbar.el (speedbar-frame-mode, speedbar-frame-width)
+       (speedbar-show-unknown-files, speedbar-item-info-file-helper)
+       (speedbar-item-info-tag-helper): Doc fixes.
+
+2007-02-19  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (locale-language-names):
+       Map "eo" to "Esperanto".
+
+       * language/european.el ("Esperanto"): New language environment.
+
+2007-02-17  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
+
+       * simple.el (kill-line): Doc fix.
+
+2007-02-17  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/bindat.el (bindat--unpack-u*): Optimize.
+       (bindat--unpack-item, bindat--length-group, bindat--pack-item)
+       (bindat--unpack-group, bindat--pack-group):
+       Handle vectors with optional element type.
+
+2007-02-17  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-gpg.el (pgg-gpg-process-region): Make USE-AGENT nil
+       if PASSPHRASE is given.
+
+2007-02-17  Chris Moore  <dooglus@gmail.com>
+
+       * jka-cmpr-hook.el (jka-compr-compression-info-list):
+       Recognize backups of bz2 compressed files.
+
+2007-02-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * info-look.el (info-lookup): Bind Info-fontify-maximum-menu-size
+       to nil to speed up lookup of the symbol in index nodes.
+
+2007-02-17  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
+
+       * emacs-lisp/lisp-mode.el (calculate-lisp-indent):
+       Add indentation for the constants of Lisp.
+
+2007-02-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * ps-print.el: Use (defvar <foo>) where applicable.
+       (ps-print-emacs-type): Remove.
+       (ps-x-frame-property, ps-e-frame-parameter): Remove.
+       (ps-frame-parameter): Align its call-convention with frame-parameter.
+       (ps-begin-job): Adjust calls to it appropriately.
+       (ps-setup): Don't print ps-print-emacs-type.
+       (ps-e-find-composition, ps-mark-active-p, ps-color-device):
+       Define in such a way that it's obvious that it's defined.
+       (ps-prsc, ps-c-prsc, ps-s-prsc): Remove.
+       (ps-rmail-mode-hook, ps-vm-mode-hook, ps-gnus-summary-setup)
+       (ps-jts-ps-setup): Use flavor-neutral syntax instead.
+
+2007-02-15  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-cmds.el (c-indent-new-comment-line): When splitting
+       an empty one-line C-style comment, post-position point properly.
+
+2007-02-15  Chris Moore  <dooglus@gmail.com>
+
+       * isearch.el (isearch-lazy-highlight-space-regexp): New variable.
+       (isearch-lazy-highlight-new-loop): Bind it.
+       (isearch-lazy-highlight-search): Use it.
+
+       * replace.el (replace-highlight): Bind search-whitespace-regexp to nil.
+
+2007-02-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-extend-region-wholelines):
+       Only return non-nil if the region has really been changed.
+       Reported by David Hansen <david.hansen@physik.fu-berlin.de>
+
+2007-02-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * play/5x5.el (5x5-crack-xor-mutate): Doc fix.
+       (5x5-draw-grid-end, 5x5-make-xor-with-mutation, 5x5-mode, 5x5-crack)
+       (5x5-play-solution, 5x5-y-or-n-p): Fix typos in docstrings.
+
+2007-02-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * faces.el (color-values): Revert changes to docstring from
+       2007-01-31 and 2000-09-07.
+
+       * textmodes/ispell.el (ispell-keep-choices-win, ispell-word)
+       (ispell-begin-skip-region-regexp): Fix typos in docstrings.
+       (ispell-dictionary-alist, ispell-process-line): Doc fixes.
+       (ispell-help): Fix typos in docstring and output message.
+
+2007-02-14  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (grep-files-aliases): Add tex and texi aliases.
+       (lgrep): Add DIR arg to start grep in specific directory, like rgrep.
+       (grep): Fix lgrep reference.
+
+       * disp-table.el (make-glyph-code, glyph-char, glyph-face): New defuns.
+       (standard-display-underline): Use make-glyph-code.
+
+       * descr-text.el (describe-char): Use glyph-char and glyph-face.
+
+       * international/latin1-disp.el (latin1-display-char):
+       Use make-glyph-code.
+
+2007-02-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ehelp.el (with-electric-help, electric-help-exit)
+       (electric-help-retain): Doc fixes.
+
+       * emacs-lisp/bytecomp.el (byte-compile-dest-file)
+       (byte-compile-file): Doc fixes.
+
+2007-02-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Change all uses of
+       mac-set-font-panel-visibility to mac-set-font-panel-visible-p.
+       (mac-ae-number): Return integer 0 if coerced result is float 0.0.
+       (mac-ae-get-url): Call select-frame-set-input-focus.
+       (mac-dnd-handle-drag-n-drop-event): Don't call
+       select-frame-set-input-focus.
+
+2007-02-13  Kenichi Handa  <handa@m17n.org>
+
+       * international/characters.el: Fix documentation of category `a'.
+
+2007-02-11  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/grep.el (grep): Mention lgrep and rgrep in the docstring.
+
+2007-02-12  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-get-ls-command, tramp-get-file-exists-command)
+       (tramp-get-remote-ln): Handle error case.
+       Reported by Chris Moore <dooglus@gmail.com>.
+
+2007-02-11  Kim F. Storm  <storm@cua.dk>
+
+       * bindings.el (ctl-x-map): Remove register compatibility bindings
+       C-x /, C-x j, C-x x, and C-x g (deprecated since Emacs 19).
+
+2007-02-11  Richard Stallman  <rms@gnu.org>
+
+       * loadhist.el (unload-feature): Handle (t . SYMBOL) entries
+       in load history.
+
+       * emacs-lisp/lisp-mode.el (indent-sexp): Clean up termination
+       condition -- don't fail to stop at endpos.
+
+2007-02-11  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-get-todos)
+       (org-agenda-get-timestamps, org-agenda-get-closed)
+       (org-agenda-get-deadlines, org-agenda-get-scheduled)
+       (org-agenda-get-blocks, org-format-agenda-item)
+       (org-agenda-change-all-lines, org-scan-tags): Rename text property
+       from `category' to `org-category'.
+
+2007-02-11  Kenichi Handa  <handa@m17n.org>
+
+       * international/titdic-cnv.el (titdic-convert): Force files be written
+       with Unix-like eol format.  Read files under CXTERM-DIC by raw-text.
+       (miscdic-convert): Force files be written with Unix-like eol format.
+
+2007-02-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * files.el (change-major-mode-with-file-name): Fix typo in docstring.
+
+       * calculator.el (calculator-prompt): Doc fix.
+       (calculator-mode-map): Fix typo in menu entry.
+
+2007-02-10  Jay Belanger  <belanger@truman.edu>
+
+       * calculator.el (calculator): Do more extensive checking for when
+       3 lines should be used for the calculator.
+
+2007-02-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * info-look.el (info-lookup-make-completions):
+       Bind Info-fontify-maximum-menu-size to nil to speed up lookup of
+       index nodes.
+
+       * info.el (Info-fontify-maximum-menu-size): Document the effect
+       of a nil value.
+       (Info-fontify-node): Make sure Info-fontify-maximum-menu-size is
+       non-nil before using it as size.
+
+2007-02-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * subr.el (insert-for-yank-1): Prevent read-only properties from
+       interfering with text property operations.
+
+       * image-mode.el (image-mode): Revert 2007-01-30 changes.
+
+       * image.el (image-type-auto-detectable): Don't autodetect x[pb]m.
+       (image-type-auto-detected-p): Fail if another match is found in
+       auto-mode-alist.
+
+       * files.el (magic-mode-alist): Call image-mode instead of
+       image-mode-maybe for autodetected images.
+
+2007-02-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * mail/smtpmail.el (smtpmail-smtp-service, smtpmail-queue-index-file):
+       Fix typos in docstrings.
+       (smtpmail-local-domain, smtpmail-queue-mail): Doc fixes.
+
+2007-02-09  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/float-sup.el: Remove obsolete comment.
+
+2007-02-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * diff-mode.el (diff-sanity-check-hunk): Fix last fix.
+
+2007-02-08  Karl Fogel  <kfogel@red-bean.com>
+
+       * simple.el: Revert previous change, at request of RMS:
+       (fundamental-mode-hook): Remove.
+       (fundamental-mode): Run after-change-major-mode-hooks manually,
+       and don't run the now-nonexistent fundamental-mode-hook.
+
+2007-02-08  Karl Fogel  <kfogel@red-bean.com>
+
+       * simple.el (fundamental-mode-hook): Declare new hook.
+       (fundamental-mode): Run the new dedicated hook, and don't run
+       after-change-major-mode-hooks manually anymore.
+
+2007-02-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-svn.el (vc-svn-merge-news): Understand the new format with two
+       added columns of chars.  Remove support for the "no-meta-info" format.
+       Prompted by Romain Francoise <romain@orebokech.com>.
+
+2007-02-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-if-arrow): New macro.
+       (gdb-mouse-until, gdb-mouse-jump): Use it.
+
+2007-02-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-mouse-until, gdb-mouse-jump): Make them
+       work when there is just an assembler buffer (no source buffer).
+
+2007-02-07  Per Cederqvist  <ceder@lysator.liu.se>  (tiny change)
+
+       * diff-mode.el (diff-sanity-check-hunk): Don't reject the hunk
+       just because the diff was produced using "-p" (--show-c-function).
+
+2007-02-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * faces.el (frame-set-background-mode): Use `color-values' and
+       `display-color-p', not `x-color-values' and `x-display-color-p'.
+       (face-valid-attribute-values): Use `defined-colors' instead of
+       `x-defined-colors'.
+
+2007-02-07  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.ps: The ps-print commands without face printing should not
+       print background color.  Reported by Leo <sdl.web@gmail.com>.
+       (ps-print-version): New version 6.7.3.
+       (ps-begin-job): New arg.  Fix ps-default-background and
+       ps-default-foreground initialization.
+       (ps-face-attributes): Fix doc string.
+       (ps-face-background, ps-generate-postscript, ps-generate): Fix code.
+
+       * printing.el: Fix ps-print link.
+
+2007-02-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faces.el (face-set-after-frame-default): Compile attributes to
+       be set by frame parameters before merging in X resources.
+
+2007-02-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * simple.el (blink-matching-paren-dont-ignore-comments):
+       (blink-matching-paren-on-screen): Doc fixes.
+
+2007-02-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-frames-mode): Truncate lines in stack buffer.
+
+2007-02-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * loadhist.el (unload-feature): Silently ignore `load-history' entries
+       of the form `(defface . SYMBOL)', and treat `(autoload . SYMBOL)'
+       entries like `defun'.  Return nil.
+
+2007-02-05  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el: Doc fixes.
+
+2007-02-04  David Kastrup  <dak@gnu.org>
+
+       * play/mpuz.el (mpuz-random-puzzle): Fix potential lockup when
+       `mpuz-allow-double-multiplicator' is non-zero, and correct
+       calculation of `min'.
+
+2007-02-04  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * wid-edit.el (widget-default-create): Insert new text at the
+       :from marker _after_ the marker, not before it.
+
+2007-02-04  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-cmds.el (c-indent-line): Don't erase ^L when a line
+       containing it is re-indented.
+
+2007-02-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * net/newsticker.el (newsticker--insert-image): Update docstring,
+       and insert the image directly.
+       (newsticker--buffer-redraw): Update docstring.
+
+       * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
+       Rename from define-global-minor-mode.
+
+       * progmodes/cwarn.el (global-cwarn-mode):
+       * emacs-lisp/autoload.el (make-autoload):
+       * hi-lock.el (global-hi-lock-mode):
+       * font-core.el (global-font-lock-mode): All callers changed.
+
+2007-02-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * textmodes/texnfo-upd.el (texinfo-menu-copy-old-description):
+       Don't copy @ignore lines into menu descriptions.
+       (texinfo-multi-file-update): Goto the @node line before attempting
+       to pluck the node name.
+       (texinfo-multiple-files-update): Reverse the optional arguments'
+       order, as per the doc string and the `interactive' form.
+
+2007-02-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image-mode.el: Use autoload to avoid overriding disabled setting
+       applied in .emacs.
+
+2007-02-03  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-engine.el (c-in-knr-argdecl): Slight correction
+       for, e.g. "void (*hdone)();" in a k&r list.  (No WS between
+       adjacent paren groups).
+
+2007-02-02  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * progmodes/ebnf2ps.el: Doc fixes.
+       (ebnf-eps-buffer, ebnf-eps-region, ebnf-syntax-alist): Doc fixes.
+
+2007-02-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * dired-x.el (dired-do-relsymlink): Add reference to
+       dired-do-symlink.  Add an autoload cookie.
+
+       * dired-aux.el (dired-do-symlink): Add reference to
+       dired-do-relsymlink.
+
+2007-02-02  Doug Maxey  <dwm@enoyolf.org>  (tiny change)
+
+       * mouse.el <left-fringe mouse-2, right-fringe mouse-3>:
+       <left-fringe mouse-3>: New bindings.
+
+2007-02-02  Ulf Jasper  <ulf.jasper@web.de>
+
+       * newsticker.el (newsticker-version): Changed to "1.10".
+       (newsticker--set-customvar): Doc string.
+       (newsticker-new-item-face): Doc string.
+       (newsticker-mode): Initialize `invisibility-spec' with t.
+       (newsticker-mode-map): Added
+       `newsticker-mark-all-items-at-point-as-read'.
+       (newsticker-menu): Added narrow-to-item and narrow-to-feed.
+       (newsticker-w3m-show-inline-images): Do not call
+       `w3m-remove-image'.
+       (newsticker--buffer-after-w3m-insert-image): New advice for
+       w3m-insert-image to cache images.
+       (newsticker-next-item-same-feed): New.
+       (newsticker-mark-all-items-at-point-as-read-and-redraw): New.
+       (newsticker-mark-all-items-of-feed-as-read): New.
+       (newsticker-mark-all-items-at-point-as-read): Use new functions.
+       (newsticker-mark-item-at-point-as-read): Doc string.
+       (newsticker-mark-item-at-point-as-read): Use new functions.
+       (newsticker--do-mark-item-at-point-as-read): New, extracted from
+       `newsticker-mark-item-at-point-as-read'.
+       (newsticker-hide-entry): Use (t) instead of t for invisibility.
+       (newsticker--sentinel): Yet another xml-parser workaround.
+       (newsticker--decode-iso8601-date): Bugfix for datestrings without
+       days.
+       (newsticker--buffer-do-insert-text): Fix.
+       (newsticker--buffer-insert-enclosure): Fix. length might be missing.
+       (newsticker--buffer-make-item-completely-visible):
+       `switch-to-buffer' not necessary.
+
+2007-02-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * progmodes/ebnf2ps.el (ebnf-eps-buffer, ebnf-eps-region)
+       (ebnf-syntax-directory, ebnf-syntax-file, ebnf-syntax-region)
+       (ebnf-style-database, ebnf-apply-style, ebnf-reset-style)
+       (ebnf-push-style, ebnf-pop-style, ebnf-eps-production-list)
+       (ebnf-directory, ebnf-file, ebnf-syntax-alist): Doc fixes.
+
+2007-02-02  Kenichi Handa  <handa@m17n.org>
+
+       * international/quail.el (quail-show-key): Fix an error message.
+
+2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * faces.el (set-face-underline-p, modify-face): Rename arg
+       UNDERLINE-P to UNDERLINE (it is not a flag).
+
+2007-02-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-speedbar-update): Avoid duplication
+       when adding gdb-speedbar-update to gdb-input-queue.
+
+2007-02-01  Kenichi Handa  <handa@m17n.org>
+
+       * international/quail.el (quail-show-key): Signal an error if the
+       current input method is not using Quail.
+
+2007-02-01  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlwave.el (idlwave-xml-create-sysvar-alist):
+       Trim leading whitespace in sysvar names.
+
+2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * faces.el (internal-find-face, internal-get-face): Doc fixes.
+
+2007-01-31  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ido.el (ido-set-common-completion): Use `let', not `let*'.
+
+2007-01-31  Romain Francoise  <romain@orebokech.com>
+
+       * comint.el: Delete extra copy of `comint-copy-old-input' added in
+       previous change to this file.
+
+2007-01-31  Jason Rumney  <jasonr@gnu.org>
+
+       * files.el (magic-mode-alist): Use image-mode-maybe rather than
+       image-mode.
+
+       * image-mode.el (image-mode-maybe): Prevent magic-mode-alist from
+       interfering with attempt to set major mode from modified
+       auto-mode-alist.
+
+2007-01-31  Juanma Barranquero  <lekktu@gmail.com>
+
+       * faces.el (color-values): Doc fix.
+       (face-differs-from-default-p): Don't check :foreground twice.
+
+2007-01-31  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * comint.el (comint-mode): Prevent non-keyword fontification by default.
+
+2007-01-31  Kenichi Handa  <handa@m17n.org>
+
+       * international/quail.el (quail-store-decode-map-key): Store a
+       translated character too.
+       (quail-char-equal-p): New function.
+       (quail-find-key1): Check character equality by quail-char-equal-p.
+       (quail-decode-map-generated): New variable.
+       (quail-find-key): Check quail-decode-map-generated and re-generate
+       a decode map if necessary.
+
+2007-01-30  Richard Stallman  <rms@gnu.org>
+
+       * tutorial.el (tutorial--detailed-help): Make the list of
+       changed keys look nicer.
+
+2007-01-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-delete-1): New function.
+       (gdb-var-delete): Use it.
+       (gdb-var-update-handler-1): Handle value "invalid" for MI field
+       `in_scope'.
+
+2007-01-30  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.el (get-free-disk-space): Return nil for remote directories.
+
+       * net/ange-ftp.el (ange-ftp-ls): In case of wildcards, use "ls"
+       instead of "dir".
+
+2007-01-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * type-break.el (type-break-catch-up-event): New function.
+       (type-break-demo-hanoi, type-break-demo-life)
+       (type-break-demo-boring): Use it.
+
+       * image-mode.el (image-mode): Don't automatically view as image.
+       (image-toggle-display): Add `disabled' property.
+
+2007-01-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * isearchb.el (isearchb-iswitchb):
+       * ps-print.el (ps-build-face-reference):
+       * emacs-lisp/shadow.el (list-load-path-shadows):
+       * eshell/esh-cmd.el (eshell-rewrite-for-command):
+       * international/mule.el (find-auto-coding):
+       * mail/supercite.el (sc-attrib-selection-list):
+       * progmodes/cc-defs.el (c-emacs-features):
+       * progmodes/cc-vars.el (c-offsets-alist):
+       * progmodes/flymake.el
+       (flymake-init-create-temp-source-and-master-buffer-copy):
+       Fix typos in docstrings (some suggested by Chris Moore).
+
+       * progmodes/vhdl-mode.el (vhdl-components-package-name)
+       (vhdl-get-library-unit, vhdl-corresponding-begin)
+       (vhdl-skip-case-alternative, vhdl-backward-skip-label)
+       (vhdl-align-region-2, vhdl-electric-dash, vhdl-case-word)
+       (vhdl-hooked-abbrev, vhdl-hs-forward-sexp-func)
+       (vhdl-font-lock-match-item): Fix typos in docstrings.
+       (vhdl-get-library-unit, vhdl-get-block-state, vhdl-sort-alist)
+       (vhdl-set-offset, vhdl-fix-case-region-1, vhdl-scan-directory-contents)
+       (vhdl-speedbar-insert-project-hierarchy):
+       Improve argument/docstring consistency.
+
+2007-01-29  Kenichi Handa  <handa@m17n.org>
+
+       * international/titdic-cnv.el (py-converter): Fix previous change.
+
+2007-01-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * jka-compr.el (jka-compr-partial-uncompress)
+       (jka-compr-call-process): Rebind default-directory if it is
+       invalid.  Suggested by Chris Moore.
+
+       * comint.el (comint-insert-input): Handle situation where the
+       selected buffer is not the clicked buffer.
+
+2007-01-29  Kenichi Handa  <handa@m17n.org>
+
+       * international/ja-dic-cnv.el (skkdic-convert):
+       Add byte-compile-disable-print-circle:t at the head.
+
+       * international/titdic-cnv.el (tit-process-header):
+       Add byte-compile-disable-print-circle:t at the head.
+       (miscdic-convert): Likewise.
+       (py-converter): Skip the header comments.
+
+       * emacs-lisp/bytecomp.el (byte-compile-disable-print-circle):
+       New variable.
+       (byte-compile-output-file-form): Bing print-circle to nil if
+       byte-compile-output-file-form is not nil.
+       (byte-compile-output-docform): Likewise.
+
+2007-01-28  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-global-keymap, cua--region-keymap):
+       Declare earlier to avoid byte compiler warnings.
+
+2007-01-28  Markus Triska  <markus.triska@gmx.at>
+
+       * speedbar.el (speedbar-make-specialized-keymap): Doc fix.
+
+2007-01-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * play/gamegrid.el (gamegrid-kill-timer): Cancel timer directly.
+       (gamegrid-add-score-with-update-game-score-1): Allow local quits
+       when calling update-game-score program.  Remove unnecessary
+       save-excursion.
+
+       * play/tetris.el (tetris-new-shape): Stop drawing if game is over.
+
+2007-01-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-breakpoint-regexp): Declare earlier to
+       avoid compiler warning.
+       (gdb-var-update-handler-1): Consider that the MI field `in_scope'
+       might have values other than "true" or "false".
+
+2007-01-28  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/fill.el (fill-paragraph-function): Doc fix.
+       (fill-paragraph): Bind fill-paragraph-function to t to avoid recursion.
+
+       * emacs-lisp/pp.el (pp-eval-last-sexp): Don't eval here.
+
+       * image.el (image-type-header-regexps): Make GIF regex more specific.
+
+       * tutorial.el (tutorial--default-keys): Check M-DEL, not `M-backspace'.
+       Don't check `backspace'.
+       (tutorial--find-changed-keys): Look up bindings in a temp buffer
+       in Fundamental mode.
+
+       * startup.el (fancy-splash-text, normal-splash-screen):
+       Mention C-g.
+
+       * simple.el (eval-expression): Don't use eval-last-sexp-print-value
+       when inserting in buffer.
+
+       * vc-arch.el (vc-arch-file-id): Move with-current-buffer
+       inside the if.
+
+2007-01-27  Richard Stallman  <rms@gnu.org>
+
+       * obsolete/awk-mode.el (awk-font-lock-keywords): Add "do".
+
+2007-01-27  Guanpeng Xu  <herberteuler@hotmail.com>
+
+       * add-log.el (add-log-current-defun): Skip the semicolon ``;'' for
+       enum/union/struct/class definition.
+       Revert change to call `forward-sexp' multiple times.
+
+2007-01-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el (hack-local-variables-confirm): Don't keep trying to
+       read an event from an empty kbd macro.
+
+2007-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * server.el (server-start): Mention LEAVE-DEAD arg in the doc string.
+
+2007-01-27  Ben North  <ben@redfrontdoor.org>
+
+       * outline.el (outline-promote, outline-demote): Doc fix.  Rename
+       the arg CHILDREN -> WHICH.
+
+2007-01-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Set
+       default-directory to a sane value when calling start-process.
+
+2007-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * ls-lisp.el (ls-lisp-use-localized-time-format): New defcustom.
+       (ls-lisp-format-time-list): Doc fix.  Mention
+       ls-lisp-use-localized-time-format.
+       (ls-lisp-format-time): Use ls-lisp-format-time-list if
+       ls-lisp-use-localized-time-format is non-nil, even if a valid
+       locale is defined.
+
+2007-01-27  Juanma Barranquero  <lekktu@gmail.com>
+
+       * jka-compr.el (jka-compr-shell): Doc fix.
+
+       * jka-cmpr-hook.el (jka-compr-compression-info-list): Doc fix.
+
+2007-01-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.ps: Fix background height.
+       (ps-print-version): New version 6.7.2.
+
+2007-01-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (finder-data, custom-deps): Depend on
+       $(lisp)/loaddefs.el.
+
+2007-01-24  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * Makefile.in (custom-deps, finder-data): Add dependency to loaddefs.el.
+
+2007-01-24  Miles Bader  <miles@gnu.org>
+
+       * emacs-lisp/bytecomp.el (byte-compile-output-file-form)
+       (byte-compile-output-docform): Bind `print-circle' to t.
+
+2007-01-24  Kenichi Handa  <handa@m17n.org>
+
+       * international/ja-dic-cnv.el (skkdic-convert): Insert a related
+       file name of the original SKK dictionary file.
+
+2007-01-24  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-initial-position): New variable.
+       (ido-read-internal): Set it if default item is specified.
+       (ido-minibuffer-setup): Position cursor accordingly if set.
+       (ido-edit-input): C-e moves to end of input if not already there.
+       (ido-magic-backward-char): C-b does like M-b if prev char is /.
+       Don't switch to buffer mode if repeating C-b at start of input.
+       (ido-toggle-ignore): C-a only toggles ignore at start or end of
+       input; else it moves to start of input.
+       (ido-kill-buffer-at-head, ido-delete-file-at-head): If cursor is
+       not at end of input, delete rest of input, rather than normal op.
+
+2007-01-23  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-keym.el (viper-insert-basic-map): Delete binding for S-TAB.
+
+       * ediff-util.el (ediff-clone-buffer-for-region-comparison): Change text
+       of message.  Activate mark.
+       (ediff-activate-mark): Set transient-mark-mode to t.
+
+       * ediff.el (ediff-regions-wordwise, ediff-regions-linewise): Doc fix.
+
+2007-01-23  Martin Rudalics  <rudalics@gmx.at>
+
+       * help-fns.el (describe-variable): Don't suppress display of
+       buffer local value when the value is "large".
+
+2007-01-22  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-active): Add XEmacs test from ido-minibuffer-setup.
+       (ido-initiate-auto-merge, ido-exhibit, ido-minibuffer-setup)
+       (ido-tidy): Use ido-active.
+
+2007-01-22  Chris Moore  <christopher.ian.moore@gmail.com>
+
+       * hexl.el (hexl-mode-exit): Add missing quote.
+
+2007-01-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-keyboard-modifier-mask-alist): New constant.
+       (mac-ae-keyboard-modifiers): New function.
+       (mac-handle-toolbar-switch-mode): Use it.
+       (mac-dnd-handle-drag-n-drop-event): Likewise.  Set action to `copy'
+       if keyboard modifiers on drop contain option key.
+       (mac-dnd-drop-data): Add optional argument `action'.
+       (special-event-map): Remove binding for M-drag-n-drop.
+
+2007-01-21  Guanpeng Xu  <herberteuler@hotmail.com>
+
+       * add-log.el (add-log-current-defun): Use CC Mode functions to
+       find the beginning and end of a defun.
+
+2007-01-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-regexp)
+       (gdb-var-create-handler): Handle value field in GDB output of
+       -var-create.
+       (gdb-max-frames): New variable.
+       (gdb-stack-buffer, gdb-frames-select): Use it.
+       (gdb-info-stack-custom): Help user customize gdb-max-frames,
+       if necessary.
+       (gdb-get-frame-number): Simplify.
+
+2007-01-21  Glenn Morris  <rgm@gnu.org>
+
+       * net/tramp.el (tramp-perl-encode, tramp-perl-decode):
+       Update copyrights.
+
+2007-01-21  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-cmds.el (c-where-wrt-brace-construct): Correct the
+       handling of K&R stuff.
+
+2007-01-21  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-files): Fix customization type.
+
+2007-01-21  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.el: Handle frame parameters (background and/or foreground
+       colors) changing dynamically.  Reported by Leo <sdl.web@gmail.com>.
+       (ps-print-version): New version 6.7.1.
+       (ps-x-frame-property, ps-e-frame-parameter): New aliases.
+       (ps-frame-parameter): New fun.
+       (ps-default-fg, ps-default-bg): New default value ('frame-parameter).
+       Fix doc and customization.
+       (ps-begin-job): Get frame parameters (background and/or foreground
+       colors).
+       (ps-do-despool): Ensure ps-printer-name has a valid value.
+
+2007-01-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-debug-log): Rename from gdb-debug-ring.
+       (gdb-debug-log-max): Rename from gdb-debug-ring-max.
+       (gud-gdba-marker-filter): Make a value of nil for gdb-debug-ring-max
+       mean unlimited.
+
+2007-01-20  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-engine.el (c-in-knr-argdecl): Reformulate to do
+       much more rigorous analysis of putative K&R regions.
+
+2007-01-20  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-defs.el (c-go-list-forward, c-go-list-backward):
+       New functions.
+
+2007-01-20  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-align.el, progmodes/cc-cmds.el,
+       * progmodes/cc-defs.el, progmodes/cc-engine.el,
+       * progmodes/cc-langs.el, progmodes/cc-styles.el,
+       * progmodes/cc-vars.el: Add my name.
+
+2007-01-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el (find-alternate-file): Revert query message to Emacs 21
+       version.
+
+2007-01-20  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
+
+       * progmodes/cperl-mode.el (cperl-electric-keywords): Document in
+       the doc string how to use personal abbrevs without electric
+       keywords.
+
+2007-01-20  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
+
+       * lisp/emacs-lisp/lisp-mode.el (last-sexp-toggle-display):
+       Fixed cursor position when toggle abbreviated display.
+
+2007-01-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * t-mouse.el: Update copyright following assignment by
+       Alessandro Rubini.
+
+2007-01-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * type-break.el (type-break-demo-hanoi, type-break-demo-life)
+       (type-break-demo-boring): Call read-event instead of read-char.
+
+2007-01-19  Daniel Pfeiffer  <occitan@esperanto.org>  (tiny change)
+
+       * progmodes/compile.el: Add handling for makepplog.
+
+2007-01-19  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * textmodes/ispell.el (ispell-change-dictionary): Ensure that
+       aspell dictionaries are initialized when called non-interactively.
+
+2007-01-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/compile.el (compilation-loop): New arg limit.
+       Handle case where the first error is at point-min.
+       (compilation-next-error): New arg to compilation-loop call.
+
+2007-01-18  Bruno Haible  <bruno@clisp.org>  (tiny change)
+
+       * info.el (Info-default-dirs): Change default info dir to
+       share/info.
+
+       * paths.el (Info-default-directory-list): Ditto.
+
+2007-01-18  Chris Moore  <christopher.ian.moore@gmail.com>
+
+       * hexl.el (hexl-before-revert-hook): New function.
+       (hexl-mode): Use it.
+       (hexl-after-revert-hook): Just call hexl-mode.
+       (hexl-mode-exit): Remove before-revert-hook.
+
+2007-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * isearch.el (isearch-no-upper-case-p): Look for [:upper:] as well.
+
+2007-01-16  Martin Rudalics  <rudalics@gmx.at>
+
+       * textmodes/ispell.el (ispell-dictionary-alist-3): Replace "---"
+       by "-" in francais7 otherchars entry.
+       (ispell-dictionary-alist-5): Replace "." by "[.]" for polish
+       otherchars entry.
+
+2007-01-15  Karl Fogel  <kfogel@red-bean.com>
+
+       * bookmark.el (bookmark-buffer-file-name): Abbreviate the bookmark
+       path.  Rewrite function in `cond' style for readability.
+
+       Suggested by: Stephen Eglen <S.J.Eglen{_AT_}damtp.cam.ac.uk>.
+       (The path shortening, that is, not the rearrangement.)
+
+2007-01-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-ae-quit-application): New function.
+       (mac-apple-event-map): Bind "quit application" Apple event to it.
+
+2007-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-svn.el (vc-svn-parse-status): Trust the filename argument more
+       than the program's output.
+
+2007-01-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * kmacro.el (kmacro-insert-counter, kmacro-set-counter)
+       (kmacro-start-macro-or-insert-counter)
+       (kmacro-step-edit-prefix-commands): Fix typos in docstrings.
+       (kmacro-call-ring-2nd, kmacro-call-ring-2nd-repeat): Doc fixes.
+
+       * longlines.el (longlines-show-hard-newlines):
+       * ruler-mode.el (ruler-mode-ruler):
+       * emulation/keypad.el (keypad-setup):
+       * progmodes/antlr-mode.el (antlr-indent-at-bol-alist):
+       Fix typo in docstring.
+
+2007-01-13  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-cmd-rotate-original-options): Add -outfile option.
+       Remove redirect character ">".
+
+2007-01-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * replace.el (perform-replace): Remove leftover code.
+
+2007-01-12  Richard Stallman  <rms@gnu.org>
+
+       * replace.el (perform-replace): Don't clear NODENT when computing
+       the replacement string.
+
+2007-01-11  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-handle-file-local-copy):
+       Set `enable-multibyte-characters' to nil.  Reported by Chris Moore
+       <christopher.ian.moore@gmail.com>.
+
+2007-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * diff-mode.el (diff-sanity-check-context-hunk-half)
+       (diff-sanity-check-hunk): New functions.
+       (diff-find-source-location): Use'em to check the hunks are well-formed.
+
+       * hexl.el (hexlify-buffer, dehexlify-buffer): Don't complain and don't
+       activate undo when undo is not active.
+       Reported by Chris Moore <christopher.ian.moore@gmail.com>.
+
+2007-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * ffap.el (ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp)
+       (ffap-newsgroup-p, ffap-alist, ffap-string-at-point-mode-alist)
+       (ffap-url-at-point): Use char-classes rather than "a-z".
+
+2007-01-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ediff-init.el (ediff-autostore-merges):
+       * textmodes/fill.el (fill-region): Doc fix.
+
+2007-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * server.el (server-ensure-safe-dir): UIDs may be floats.
+
+2007-01-10  Richard Stallman  <rms@gnu.org>
+
+       * battery.el (battery-linux-proc-acpi): Use ignore-errors
+       around calls to directory-files.
+
+       * subr.el (momentary-string-display): Use save-excursion.
+
+       * emacs-lisp/pp.el (pp-eval-expression): Once again eval the
+       argument, but read it as `X' does.
+
+2007-01-09  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-fontify-node): Don't hide node names of index entries.
+
+       * faces.el (momentary): Change :group to basic-faces where all
+       basic faces belong to.  Add :version.
+
+2007-01-09  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * tutorial.el (tutorial--display-changes): Show M-x sequence if no
+       keybinding is found.
+       (tutorial--find-changed-keys): Never treat null keybinding as a
+       remapping.
+
+2007-01-09  Martin Rudalics  <rudalics@gmx.at>
+
+       * wdired.el (wdired-xcase-word): Skip non-word read-only characters.
+
+2007-01-09  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el
+       (select-safe-coding-system-interactively): Fix message.
+
+2007-01-09  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-process-one-action): Remove `with-timeout'.
+       (tramp-process-actions): Add optional parameter TIMEOUT.
+       (tramp-open-connection-telnet, tramp-open-connection-rsh)
+       (tramp-open-connection-su): Add timeout of 60".
+
+2007-01-09  Richard Stallman  <rms@gnu.org>
+
+       * progmodes/compile.el (compile): Doc fix.
+
+2007-01-09  Markus Triska  <markus.triska@gmx.at>
+
+       * tumme.el (tumme-display-thumb): Doc fix.
+
+2007-01-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * battery.el (battery-search-for-one-match-in-files):
+       * bindings.el (mode-line-minor-mode-help):
+       * x-dnd.el (x-dnd-types-alist):
+       * calendar/icalendar.el (icalendar-import-buffer):
+       * term/mac-win.el (mac-dnd-types-alist): Fix typo in docstring.
+
+       * progmodes/vhdl-mode.el (vhdl-save-caches): Fix typo in error message.
+
+2007-01-07  Chris Moore  <christopher.ian.moore@gmail.com>
+
+       * replace.el (replace-regexp): Fix typo in docstring.
+
+2007-01-07  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-langs.el (c-operators, c-filter-ops):
+       Amend doc-string and comments.
+
+2007-01-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.el (abbreviate-file-name): Doc fix.
+
+2007-01-06  Markus Triska  <triska@gmx.at>
+
+       * subr.el (split-string): Remove spurious ")" from doc string.
+
+2007-01-05  Takaaki Ota  <Takaaki.Ota@am.sony.com>
+
+       * textmodes/table.el (table--warn-incompatibility):
+       Use display-warning instead of momentary-string-display.
+
+2007-01-05  Richard Stallman  <rms@gnu.org>
+
+       * image.el (image-type-header-regexps): Recognize xbm more strictly.
+
+       * simple.el (backward-kill-word): Doc fix.
+
+2007-01-05  Romain Francoise  <romain@orebokech.com>
+
+       * international/mule.el (sgml-html-meta-auto-coding-function):
+       Ensure that the buffer contains a HTML document.
+
+2007-01-05  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * faces.el (momentary): Move here ...
+       * subr.el (momentary): ... from here.
+
+2007-01-05  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-max-children): New customizable variable.
+       (gdb-speedbar-expand-node): Ask user for confirmation before expanding
+       large structures/arrays.
+
+2007-01-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * files.el (find-file-noselect-1, set-visited-file-name):
+       Allow backup-enable-predicate to be nil.
+
+2007-01-04  Andreas Schwab  <schwab@suse.de>
+
+       * progmodes/ebrowse.el (ebrowse-global-prefix-key): Fix typo in
+       last change.
+
+2007-01-03  Richard Stallman  <rms@gnu.org>
+
+       * woman.el (woman-decode-buffer): Clarify error message.
+
+2007-01-03  Alan Mackenzie  <acm@muc.de>
+
+       * progmode/cc-cmds.el (c-mask-paragraph): Fix yesterday's buggy patch.
+
+2007-01-03  Chris Moore  <christopher.ian.moore@gmail.com>
+
+       * tutorial.el (tutorial--describe-nonstandard-key): Fix typo.
+
+2007-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * iswitchb.el (iswitchb-global-map): Use command-remapping if available.
+
+2007-01-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emulation/viper.el (viper-custom-file-name, viper-mode):
+       Fix typos in docstrings.
+
+       * subr.el (momentary-string-display): After moving point, set POS
+       variable to it to avoid later errors once the buffer is modified.
+       Doc fix.
+
+2007-01-02  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-cmds.el (c-mask-paragraph): In a block comment,
+       check that the "*/" is present before trying to manipulate it.
+
+2007-01-02  Richard Stallman  <rms@gnu.org>
+
+       * wid-edit.el (widget-choose): Avoid ugly error for function keys.
+
+       * progmodes/cfengine.el (cfengine-font-lock-syntactic-keywords):
+       Fix format of value.
+
+       * cus-edit.el (customize-unsaved): Rename from customize-customized.
+       Change messages accordingly.
+       (customize-customized): Now alias.
+
+2007-01-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * files.el (version-control): Doc fix.
+
+2007-01-01  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax, case 5N):
+       Check the format of c-state-cache is valid for an optimisation before
+       using it.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): New case 5Q "we
+       are at a statement within a macro".  Other changes so that only
+       the first continuation line in a macro gets the symbol
+       `cpp-define-intro', the others getting `statement', or whatever.
+
+       * progmodes/cc-cmds.el (c-context-line-break): When invoked within
+       a string, preserve whitespace.  Add a backslash only when also in
+       a macro.
+
+       * progmodes/cc-defs.el: Correct typos.
+
+       * progmodes/cc-cmds.el (c-context-line-break): Don't indent the
+       new line after an escaped EOL in a string.
+
+       * progmodes/cc-engine.el (c-forward-label): Recognise "foo:" as a
+       label when it directly follows "else", "do", ....
+
+       * progmodes/cc-engine.el (c-backward-<>-arglist): Tolerate empty
+       angle brackets (as seen in "explicit specialisations" of C++
+       templates).
+
+       * progmodes/cc-vars.el (c-indentation-style): Mention c-file-style
+       in the doc-string.
+
+       * progmodes/cc-cmds.el (c-mask-paragraph): Fix for C comments,
+       when the comment ender looks like "=========*/" and is alone on
+       its line.
+
+       * progmodes/cc-langs.el, progmodes/cc-engine.el: Correct the
+       spelling of c-opt-op-identiTier-prefix, t -> f.  Leave an alias
+       for the old name.
+
+       * progmodes/cc-mode.el: Bind C-M-a and C-M-e to
+       c-\(beginning\|end\)-of-defun by default.
+
+       * progmodes/cc-align.el (c-lineup-gnu-DEFUN-intro-cont):
+       New line-up function, for the DEFUN macro in the Emacs C sources.
+       Only used in "gnu" style.
+
+       * progmodes/cc-styles.el (c-style-alist): Use this new function in
+       the "gnu" style.
+
+       * progmodes/cc-cmds.el (c-electric-slash): Extend the handling of
+       clean-up comment-close-slash also to work when there's a comment
+       terminator on the line.
+       (c-beginning-of-defun, c-end-of-defun): Refactor and optimise
+       these for large arg - only take account of top level {..}, except
+       for initial and final adjustments.  M-- C-M-[ae] now go to the
+       right defuns when the starting point is between defuns.  They use
+       the four new functions:
+       (c-in-function-trailer-p, c-where-wrt-brace-construct)
+       (c-backward-to-nth-BOF-{, c-forward-to-nth-EOF-}): New functions to
+       support c-\(beginning\|end\)-of-defun.
+
+       * progmodes/cc-engine.el (c-forward-label): Analyze ":"
+       expressions more rigorously, to exclude bit-field specifiers from
+       being classed as labels.
+       (c-forward-label): When analyzing a ":" within a macro, be careful
+       about using c-forward-syntactic-ws at the macro beginning.
+       (c-beginning-of-decl-1): Whilst searching for "=" as evidence of a
+       stmt boundary, check for "operator=", etc.
+
+       * progmodes/cc-mode.el (c-postprocess-file-styles):
+       Bind inhibit-read-only to t, around the call to
+       c-remove-any-local-eval-or-mode-variables, so that it works on a
+       RO file.
+
+       * progmodes/cc-defs.el (c-version): Update the version number to
+       "5.31.4".
+
+2007-01-01  Richard Stallman  <rms@gnu.org>
+
+       * isearch.el (isearch-done): Use FOUND-POINT or FOUND-START
+       only if we restored isearch-window-configuration.
+
+2006-12-31  Romain Francoise  <romain@orebokech.com>
+
+       * net/tramp.el (tramp-default-method): Don't use `symbol-function'.
+
+2006-12-31  Kim F. Storm  <storm@cua.dk>
+
+       * files.el (auto-mode-case-fold): New defcustom.
+       (set-auto-mode): If non-nil, perform second case-sensitive pass
+       through auto-mode-alist if first pass failed.
+
+2006-12-30  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/easy-mmode.el (define-global-minor-mode): Doc fix.
+
+2006-12-30  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-encrypt-string): Handle symmetric-key
+       passphrase caching but leave keypair caching to pgg.
+
+2006-12-30  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.55.
+
+       * net/tramp.el (tramp-completion-mode): Use `wholenump' instead of
+       `integerp'.  `char-equal' could fail else in case of negative
+       numbers.  Reported by Toby Speight <T.M.Speight.90@cantab.net>.
+       (top): Check for `font-lock-add-keywords' before calling; it
+       doesn't exist under XEmacs.
+       (tramp-yn-prompt-regexp): Fix regexp.  Add question from plink.
+       (tramp-completion-mode): Remove clause (not
+       tramp-unified-filenames), because the function is called in other
+       context too, where this check results in wrong results in the
+       XEmacs case on Windows.
+       (tramp-touch): UTC handling is not possible for XEmacs.
+
+2006-12-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * scroll-bar.el (previous-scroll-bar-mode): New variable
+       (set-scroll-bar-mode): Set previous-scroll-bar-mode.
+       (scroll-bar-mode): Use previous-scroll-bar-mode if set.
+
+       * term/x-win.el: Set scroll bar mode to right if set by X resources.
+
+2006-12-30  Richard Stallman  <rms@gnu.org>
+
+       * files.el (make-backup-file-name-1): Precompute abs name
+       but don't lose the relative name.
+
+       * international/mule-cmds.el (select-safe-coding-system-interactively):
+       Fix message.
+
+2006-12-30  Kevin Rodgers  <kevin.d.rodgers@gmail.com>  (tiny change)
+
+       * files.el (backup-buffer): Show entire backup file name in msg.
+
+2006-12-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * image.el (image-type-header-regexps, image-type-from-data)
+       (image-type-from-buffer, image-type-from-file-header):
+       Revert changes from 2006-12-26.
+       (image-type-auto-detectable): New variable.
+       (image-type-auto-detected-p): New function.
+
+       * files.el (magic-mode-alist): Detect image files with
+       `image-type-auto-detected-p' instead of `image-type-from-buffer'.
+
+2006-12-29  Nick Roberts  <nickrob@snap.net.nz>
+
+       * dired.el (dired-sort-other): Move test for dired-mode...
+       (dired-sort-set-modeline): ...to here.
+
+2006-12-29  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * textmodes/fill.el (fill-comment-paragraph): Document 2006-12-24
+       change.  Suggested by Stefan Monnier.
+
+2006-12-29  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/bindat.el (bindat--unpack-group, bindat--length-group)
+       (bindat--pack-group): Let-bind COUNT during repeat block evaluation.
+
+2006-12-27  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/authors.el (authors-aliases): Anchor FSF alias regexp,
+       so it doesn't accidentally match an fsf.org mail address.
+       (authors-renamed-files-alist): Add tcover-*.el.
+
+2006-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-arch.el (vc-arch-find-version): New function.
+
+       * vc-hooks.el (vc-version-backup-file-name): Revision names may be
+       composed of arbitrary characters (even /) in some systems.
+
+2006-12-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/mule-cmds.el (select-safe-coding-system-interactively):
+       Improve the message in the *Warning* buffer.
+
+2006-12-27  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-set-matches-1): Fix last change.  If default item is
+       current buffer, it is ok to be first.
+
+2006-12-27  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (select-safe-coding-system-interactively):
+       Use face `link' for problematic chars.
+
+2006-12-27  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (select-safe-coding-system-interactively):
+       Improve the message in *Warning* buffer.
+
+2006-12-27  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-set-matches-1): Never put current buffer first if
+       there are other matches.
+
+2006-12-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gud-watch): Allow duplicate names for watch
+       expressions.
+       (gdb-var-delete): Handle duplicate names.  Print message for non
+       root expressions.
+       (gdb-partial-output-name): Start buffer name with a space.
+       (gdb-info-breakpoints-custom, gdb-reset): Handle space in above
+       buffer name.
+
+2006-12-26  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * mail/footnote.el (Footnote-insert-footnote): Fix the search of the
+       last footnote when `footnote-spaced-footnotes' is nil.
+
+2006-12-26  Richard Stallman  <rms@gnu.org>
+
+       * cus-edit.el (custom-browse-sort-alphabetically)
+       (custom-buffer-sort-alphabetically)
+       (custom-menu-sort-alphabetically): Doc fixes.  Add autoloads.
+
+       * image.el (image-type-header-regexps): Change element format
+       to include third item NOT-ALWAYS.
+       (image-type-from-data): Handle new format.
+       (image-type-from-buffer): Handle new format.  New arg INCLUDE-MAYBES.
+       (image-type-from-file-header): Pass t for INCLUDE-MAYBES.
+
+2006-12-26  Guanpeng Xu  <herberteuler@hotmail.com>
+
+       * add-log.el (add-log-current-defun): Call `forward-sexp'
+       multiple times to pick a member function name defined as
+       part of nested classes/namespaces.
+
+2006-12-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * emacs-lisp/easymenu.el (easy-menu-change): New arg MAP to indicate
+       which keymap should be used to change menu.  It does not affect any
+       existent code.
+
+2006-12-26  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/fill.el (fill-paragraph): Check for a minibuffer
+       rather than for being in a minibuffer window.
+
+2006-12-25  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-def.el (pgg-passphrase-coding-system): Default to nil instead of
+       locale-coding-system.
+       * pgg-gpg.el (pgg-gpg-process-region): Encode passphrase with eol-type
+       LF.
+
+2006-12-25  Michael R. Mauger  <mmaug@yahoo.com>
+
+       * progmodes/sql.el (sql-mode-abbrev-table): Correct initialization.
+       (sql-mode-syntax-table): Disable double quoted strings.
+       (sql-mode-font-lock-object-name): Add TYPE and TYPE BODY.
+
+2006-12-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * startup.el (fancy-splash-last-input-event): New variable.
+       (fancy-splash-special-event-action): New function.
+       (fancy-splash-screens): Temporarily bind special events to it.
+       Execute command for saved special event before exiting from
+       recursive editing.
+
+       * term/mac-win.el (mac-keyboard-translate-char, mac-unread-string):
+       New functions.
+       (mac-ts-update-active-input-area, mac-ts-unicode-for-key-event):
+       Use mac-unread-string.
+
+2006-12-24  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * textmodes/fill.el (fill-comment-paragraph): Prevent the use of
+       an optimized comment regexp if `comment-start-skip' uses a ^.
+       * bs.el (bs--up): Remove interactive spec.
+
+2006-12-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * woman.el (woman-decode-buffer): Signal error for alien macro sets.
+       Suggested by James Cloos.
+
+2006-12-24  Kevin Ryde  <user42@zip.com.au>
+
+       * calendar/cal-dst.el (calendar-dst-starts): Default to second Sunday
+       in March.
+       (calendar-dst-ends): Default to first Sunday in November.
+
+2006-12-24  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-encrypt-string): Inhibit use of agent within
+       body of let form where encryption happens.  Acknowledge non-use of
+       gpg-agent in docstring.
+       (allout-toggle-subtree-encryption): Acknowledge non-use of
+       gpg-agent in docstring.
+
+2006-12-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (custom-add-frequent-value): Alias for custom-add-option.
+
+2006-12-23  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-diff.el (ediff-diff-options): Clarify docstring.
+       (ediff-setup-diff-regions): Disallow -u in ediff-diff-options.
+
+       * viper-cmd.el (viper-post-command-sentinel): Protect against errors
+       in hooks.
+       (viper-add-newline-at-eob-if-necessary): Add newline only if we
+       actually modify buffer; ignore errors if occur.
+
+2006-12-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * calendar/calendar.el (calendar-mode-map): Switch < and >.
+       (calendar-mode-line-format): Use mouse-1 bindings, and tweak
+       formatting.
+
+2006-12-23  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (delete-horizontal-space): Doc fix.
+
+2006-12-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (bootstrap-clean): Run bootstrap-clean-$(SHELLTYPE)
+       explicitly in a recursive Make, not implicitly through prerequisites,
+       since the latter is wrong under parallel builds.
+
+2006-12-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32-fns.el (convert-standard-filename): Wrap in save-match-data.
+
+2006-12-22  Kevin Rodgers  <kevin.d.rodgers@gmail.com>  (tiny change)
+
+       * progmodes/sh-script.el (sh-make-vars-local): Fix a typo in
+       message string.
+
+2006-12-22  Ben North  <ben@redfrontdoor.org>  (tiny change)
+
+       * outline.el (outline-next-visible-heading): Fix the case with a
+       header at end-of-file with no final newline.
+
+2006-12-22  Robert Thorpe  <rthorpe@realworldtech.com>  (tiny change)
+
+       * indent.el (tab-always-indent): Doc fix.
+
+2006-12-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * info.el (Info-fontify-maximum-menu-size): Bump to 1000000.
+       (Info-fontify-node): Do fontify indices.
+
+       * tutorial.el (tutorial--detailed-help): Remove unnecessary link
+       to the Emacs Lisp reference manual.
+       (tutorial--tab-map): Remove.  All callers changed.
+       (tutorial--find-changed-keys): New elt QUIET, used to...
+       (tutorial--display-changes): ...ensure that warning messages are
+       only issued once per changed key.
+       (tutorial--remove-remarks): Delete unused code-path.
+       (lang-strings): Remove extraneous formatting.
+       (tutorial--save-tutorial): Prompt before saving tutorial state.
+
+2006-12-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * tutorial.el: Remove `cl' requirement.  Clean up whitespace.
+       Replace '?\ ' by '?\s' throughout.
+       (tutorial-warning-face): Inherit font-lock-warning-face.  Move to
+       `help' custom group.
+       (tutorial--key-description): New function.
+       (tutorial--display-changes): Remove redundant arg.  Scan for all
+       key sequences to avoid false matches.  Cleanup.
+       (tutorial--saved-dir): Save to a subdirectory in .emacs.d to
+       reduce homedir pollution.
+       (help-with-tutorial): Call tutorial--display-changes with no arg.
+
+2006-12-21  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-mode-map): Bind org-complete also to M-\t.
+
+2006-12-20  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-default-method): We still need to check for
+       `executable-find', because it is not bound under Emacs 20.
+       (tramp-handle-file-name-completion)
+       (tramp-completion-handle-file-name-completion): Handle optional
+       parameter PREDICATE.
+       (tramp-find-default-method): Add code for default values.
+
+2006-12-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-stopped): After attaching to a process
+       make gud-go send "continue".
+
+2006-12-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * image.el (image-type-header-regexps): Be more specific detecting `pbm'
+       and `png' files.  Use non-capturing parenthesis for `tiff' regexp.
+
+2006-12-19  Kim F. Storm  <storm@cua.dk>
+
+       * bindings.el: Bind sigusr1 and sigusr2 in special-event-map
+       instead of global-map.
+
+       * files.el (magic-mode-alist): Allow matching file type by
+       calling a function at bob.  Check for image types by calling
+       image-type-from-buffer.  Suggested by Juanma Barranquero.
+       (set-auto-mode): Do it.
+
+2006-12-19  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-methods): Introduce new method `scpc'.
+       Remove "ControlMaster" option from the other `scp*' methods.
+       (tramp-default-method): Check for ssh-agent before setting to `scp'.
+
+2006-12-18  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-mode): Show context after isearch.
+       (org-show-siblings): New function.
+       (org-show-context): Use `org-show-siblings'.
+
+2006-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/syntax.el (syntax-ppss-flush-cache, syntax-ppss):
+       Use syntax-ppss-toplevel-pos.
+
+2006-12-18  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-current-line): Make sure that lines are
+       counted from beginning of buffer.
+       (org-table-copy-region, org-table-paste-rectangle): Make sure that
+       lines are counted from beginning of buffer.
+
+2006-12-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * info.el (Info-build-node-completions): Signal error if tag-table
+       marker is not found.
+
+       * pgg-gpg.el (pgg-gpg-use-agent): Default to t.
+
+2006-12-17  Alan Mackenzie  <acm@muc.de>
+
+       * emacs-lisp/lisp.el (beginning-of-defun-raw): Optimise (for
+       speed) the case when open-paren-in-column-0-is-defun-start is nil.
+       Based on code by Martin Rudalics.
+
+       * progmodes/cc-mode.el (c-basic-common-init): Don't set
+       open-paren-in-column-0-is-defun-start to nil any more.
+
+2006-12-17  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (delete-horizontal-space): Use prefix arg.
+
+       * help-fns.el (describe-variable): Improve blank separator lines.
+
+       * files.el (magic-mode-alist): Mark as risky.
+
+       * files.el (make-backup-file-name-1):
+       Expand backup-directory explicitly.
+
+2006-12-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-default-method): Before setting to "pscp",
+       check whether package password.el is loaded, or Pageant is running.
+
+2006-12-17  Ulf Jasper  <ulf.jasper@web.de>
+
+       * calendar/icalendar.el (icalendar-version): Increase to "0.14".
+       (icalendar--rris): First try Emacs, then XEmacs.
+       (icalendar--convert-ical-to-diary): Doc fix.
+       Insert newline at end of target file.
+
+2006-12-17  Kim F. Storm  <storm@cua.dk>
+
+       * outline.el (outline-isearch-open-invisible-function): New defvar.
+       (outline-flag-region): Use it if non-nil for isearch-open-invisible
+       overlay property instead of outline-isearch-open-invisible.
+
+2006-12-16  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-completion-help): Build ido-cur-list and ido-matches
+       if ido-directory-too-big is set on entry.
+       (ido-toggle-ignore, ido-completion-help): Print message while
+       reading big directory.
+
+2006-12-15  Richard Stallman  <rms@gnu.org>
+
+       * shell.el (shell): Doc fix.
+
+2006-12-15  Kevin Gallagher  <Kevin.Gallagher@boeing.com>
+
+       * emulation/edt.el (edt-xserver):
+       * emulation/edt-mapper.el (edt-xserver): Replace `/' with a `-',
+       to fix a problem on Cygwin.
+
+       * emulation/edt.el
+       * emulation/edt-mapper.el
+       * emulation/edt-lk201.el
+       * emulation/edt-pc.el
+       * emulation/edt-vt100.el: Update maintainer's email address.
+
+2006-12-15  Simon Marshall  <simon@gnu.org>
+
+       * progmodes/cc-fonts.el (c-font-lock-declarations): Fix previous change.
+
+2006-12-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-atsu-font-table): Remove defvar.
+       (mac-handle-font-selection): Use mac-atsu-font-face-attributes
+       instead of mac-atsu-font-table.
+       (fontset-default): Specify argument MAXIMUM in x-list-fonts calls.
+
+2006-12-14  Stephen Leake  <stephen_leake@member.fsf.org>
+
+       * align.el (align-match-tex-pattern): Fix a rare bug which
+       hanged Emacs.
+
+2006-12-14  Richard Stallman  <rms@gnu.org>
+
+       * startup.el (use-fancy-splash-screens-p): Use frame-height
+       instead of window-height.  Pass frame to image-size.
+
+2006-12-13  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (set-locale-environment):
+       Set default-sendmail-coding-system too.
+
+2006-12-12  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlw-help.el: Fix copyright notice.
+
+2006-12-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/syntax.el (syntax-ppss-toplevel-pos): New fun.
+
+2006-12-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * subr.el (unread-command-char): Reformat obsolescence info.
+
+2006-12-11  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/cl-macs.el (defstruct): Suppress warnings
+       about calls to cl-struct-setf-expander.
+
+2006-12-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ediff-merg.el (ediff-show-clashes-only): Doc fix.
+       (ediff-combination-pattern): Fix typo in docstring.
+
+       * textmodes/refer.el (refer-find-entry): Doc fix.
+       (refer-bib-files-regexp, refer-bib-directory, refer-bib-files)
+       (refer-cache-bib-files, refer-find-next-entry, refer-yank-key):
+       Fix tipos in docstrings.
+
+       * progmodes/idlwave.el (idlwave-library-path): Fix typos in docstring.
+
+2006-12-10  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-init-completion-maps): Remap backward-kill-word
+       instead of binding M-backspace.
+
+2006-12-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * replace.el (replace-match-data, replace-match-maybe-edit):
+       * calc/calc-aent.el (calc-eval-error):
+       * emulation/vi.el (vi-char-argument):
+       * progmodes/cc-langs.el (c-at-vsemi-p-fn)
+       (c-vsemi-status-unknown-p-fn): Doc fixes.
+
+2006-12-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * menu-bar.el (menu-bar-showhide-menu, menu-bar-tools-menu)
+       (menu-bar-help-menu): Tooltip fixes.  Suggested by Francis Wright.
+
+2006-12-10  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/ld-script.el (ld-script-keywords): Fix a typo.
+
+2006-12-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mouse-sel.el (mouse-sel-mode): Register mouse-2 as a click type.
+
+       * man.el (Man-xref-button-action): New function.  If the
+       `Man-target-string' button property is a function, assume it
+       accepts a position argument.
+       (Man-abstract-xref-man-page): Use it.
+       (Man-default-man-entry): New optional arg POS.
+
+       * wdired.el (wdired-preprocess-symlinks): Make the spaces after
+       symlink arrows read-only and non-rear-sticky.
+
+2006-12-09  Martin Rudalics  <rudalics@gmx.at>
+
+       * wdired.el (wdired-change-to-wdired-mode, wdired-finish-edit)
+       (wdired-search-and-rename): Simplify code.
+       (wdired-preprocess-files, wdired-preprocess-perms): Make
+       read-only property of preceding character rear-nonsticky to
+       avoid that it can be modified.  Put old-name and old-link
+       properties on character preceding name and replace
+       put-text-property by add-text-properties.
+       (wdired-get-filename, wdired-get-previous-link): Get old-name
+       and old-link properties from character preceding name and
+       simplify code.
+       (wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit)
+       (wdired-perms-to-number): Make local-map property
+       rear-nonsticky to avoid that text following permissions may be
+       modified.  Use add-text-properties instead of put-text-property
+       when changing a permission bit.
+       (wdired-change-to-dired-mode): Remove stickiness properties.
+
+2006-12-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * international/mule-cmds.el (register-input-method): Doc fix.
+
+2006-12-09  Masayuki Ataka  <masayuki.ataka@gmail.com>  (tiny change)
+
+       * cmuscheme.el (scheme-start-file): Use `let*', not `let'.
+
+2006-12-09  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * textmodes/flyspell.el (flyspell-hack-local-variables-hook): New.
+       Force buffer local defs evaluation on local variables loading.
+       (flyspell-mode-on, flyspell-mode-off): Use it in
+       `hack-local-variables-hook'.
+
+2006-12-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs-lisp/find-func.el (find-variable): Doc fix.
+
+       * help-fns.el (variable-at-point): Doc fix.
+
+       * w32-fns.el (w32-append-code-lines): New function.
+
+2006-12-09  Romain Francoise  <romain@orebokech.com>
+
+       * comint.el (comint-insert-input): Delete obsolete comment.
+
+2006-12-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * net/browse-url.el (browse-url): Set DISPLAY to the one of the
+       current frame, in case we're connected to several displays.
+
+2006-12-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frame.el (other-frame): Doc fix.
+       (set-frame-parameter): Fix typo in docstring.
+
+2006-12-07  Kim F. Storm  <storm@cua.dk>
+
+       * info.el (Info-index): Strip leading colon from topic.
+
+2006-12-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-buttons): Deal with references
+       to pointers.
+
+2006-12-05  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlwave.el (idlwave-xml-create-class-method-lists):
+       Trim out spurious class inheritance "None" entries.
+
+2006-12-05  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-paste-pop-rotate-temporarily): Doc fix.
+       (cua-paste-pop): Rework last change for
+       cua-paste-pop-rotate-temporarily, so first M-y and C-y works alike,
+       pasting the head of the kill-ring, and prefix arg C-u M-y inserts the
+       text inserted by the last M-y command.
+
+2006-12-05  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * cmuscheme.el (run-scheme, scheme-start-file): Search the start
+       file in ~/.emacs.d as `init_SCHEMENAME.scm' instead.
+
+       * shell.el (shell): Search the start file in ~/.emacs.d as
+       `init_SHELLNAME.sh' instead.
+
+2006-12-05  Glenn Morris  <rgm@gnu.org>
+
+       * progmodes/cperl-mode.el (cperl-mode)
+       * progmodes/f90.el (f90-mode-abbrev-table)
+       * progmodes/fortran.el (fortran-mode-abbrev-table)
+       * progmodes/octave-mod.el (octave-abbrev-table)
+       * progmodes/sql.el (sql-mode-abbrev-table): Define abbrevs even
+       if abbrev-table is non-nil (saved user abbrevs may have been restored).
+
+       * progmodes/vhdl-mode.el (vhdl-mode-abbrev-table-init): Do not
+       clear abbrev table, else saved abbrevs will not be restored.
+
+2006-12-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * facemenu.el (facemenu-unlisted-faces): Put obsolescence info in
+       the call to `make-obsolete-variable', not in the docstring.
+
+2006-12-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * facemenu.el (facemenu-unlisted-faces): Define as obsolete variable.
+
+2006-12-04  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * progmodes/ebnf-abn.el:
+       * progmodes/ebnf-bnf.el:
+       * progmodes/ebnf-dtd.el:
+       * progmodes/ebnf-ebx.el:
+       * progmodes/ebnf-iso.el:
+       * progmodes/ebnf-otz.el:
+       * progmodes/ebnf-yac.el:
+       * progmodes/ebnf2ps.el:
+       * delim-col.el:
+       * printing.el:
+       * ps-bdf.el:
+       * ps-mule.el:
+       * ps-print.el: Remove 'Time-stamp' comment mark.
+
+       * printing.el (pr-menu-bind): Replace 'easy-menu-change' by
+       'easy-menu-add-item' when called in Emacs 21 or higher.
+
+2006-12-04  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * progmodes/ada-xref.el (ada-check-current): Doc fix.
+       (ada-make-body-gnatstub): Doc fix.  Remove redundant `progn'.
+
+2006-12-04  Kim F. Storm  <storm@cua.dk>
+
+       * bindings.el (global-map): Bind [signal t] to ignore, to have
+       user signals ignored by default.
+
+2006-12-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * descr-text.el (describe-char-unicode-data): Use a hidden buffer for
+       Unicode data file pointed to by `describe-char-unicodedata-file'.
+
+2006-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/sgml-mode.el (sgml-font-lock-keywords-1): Fix pathological
+       O(n^2) regexp-search by anchoring the search.
+
+2006-12-04  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * whitespace.el (whitespace-cleanup-internal): Use current
+       argument for recursive call.
+
+2006-12-04  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-methods): Add "ControlPath" and
+       "ControlMaster" to scp, scp1 and scp2 methods.  Suggested by
+       Andreas Schwab <schwab@suse.de>.
+       (tramp-do-copy-or-rename-file-out-of-band)
+       (tramp-open-connection-rsh): Compute format spec for ?t.
+       (tramp-process-actions): Trace command parameters.
+
+2006-12-04  Nick Roberts  <nickrob@snap.net.nz>
+
+       * simple.el (toggle-truncate-lines): Clarify doc string.
+
+       * progmodes/gdb-ui.el (gdb-var-delete-children): New function.
+       (gdb-speedbar-expand-node): Use it.
+
+2006-12-04  Richard Stallman  <rms@gnu.org>
+
+       * progmodes/python.el (python-indent): Add safe-local-variable prop.
+
+       * dired.el (dired-revert): Turn off dired-after-readin-hook
+       around call to dired-readin.
+
+       * menu-bar.el (menu-bar-make-toggle): Add "globally"
+       to echo area messages.
+       <indicate-empty-lines, case-fold-search>:
+       Add "globally" to Help string.
+       <case-fold-search>: MESSAGE arg need not say "globally".
+       (menu-bar-edit-menu <paste-from-menu>): Rename from select-and-paste.
+
+2006-12-03  Liam Healy  <lnp@healy.washington.dc.us>  (tiny change)
+
+       * outline.el (outline-end-of-subtree): Don't leave an empty
+       line hidden as we would a real next heading.
+
+2006-12-03  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-ascend): Add an optional argument to preserve
+       original position of point when unsuccessful.  Also, fix a
+       docstring error.
+       (allout-yank-processing): Fix depth shift of multiple-topic so yanks
+       work again, using allout-ascend's new option.
+       (allout-setup-mode-map): Extract from allout-mode to initialize
+       allout-mode-map.  Call it on file load, so the mode docstring
+       substitutions work even if allout mode has not yet been invoked.
+       (allout-mode): Use new allout-setup-mode-map to track any keybinding
+       customizations since the map was last processed.  Also, refine the
+       docstring so it's ship-shape for release.
+       (allout-default-layout, allout-beginning-of-line-cycles)
+       (allout-distinctive-bullets-string, allout-use-mode-specific-leader)
+       (allout-encrypt-unencrypted-on-saves, allout-inhibit-auto-fill)
+       (allout-version, allout-layout, allout-infer-body-reindent)
+       (allout-infer-header-lead-and-primary-bullet, allout-view-change-hook)
+       (allout-init, allout-mode, allout-next-heading, allout-chart-subtree)
+       (allout-previous-heading, allout-goto-prefix-doublechecked)
+       (allout-current-bullet-pos, allout-next-sibling-leap)
+       (allout-pre-command-business, allout-encrypted-type-prefix)
+       (allout-make-topic-prefix, allout-open-topic, allout-rebullet-heading)
+       (allout-rebullet-topic, allout-rebullet-topic-grunt)
+       (allout-flag-region, allout-expose-topic, allout-expose-topic)
+       (allout-old-expose-topic, allout-listify-exposed)
+       (allout-process-exposed, allout-latex-verb-quote)
+       (allout-latex-verbatim-quote-curr-line, allout-adjust-file-variable)
+       (allout-toggle-current-subtree-encryption)
+       (allout-toggle-subtree-encryption, allout-bullet-isearch):
+       Remove extraneous open-paren and close paren string escapes.
+
+2006-12-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/ada-xref.el (is-windows, ada-find-in-src-path): Doc fixes.
+       (ada-xref-pos-ring-max, ada-xref-project-files, ada-xref-initialize)
+       (ada-prj-default-comp-cmd, ada-quote-cmd, ada-compile-current):
+       Fix typos in docstrings.
+
+2006-12-03  Glenn Morris  <rgm@gnu.org>
+
+       * progmodes/cc-align.el
+       * progmodes/cc-awk.el
+       * progmodes/cc-cmds.el
+       * progmodes/cc-compat.el
+       * progmodes/cc-defs.el
+       * progmodes/cc-engine.el
+       * progmodes/cc-langs.el
+       * progmodes/cc-menus.el
+       * progmodes/cc-mode.el
+       * progmodes/cc-styles.el
+       * progmodes/cc-vars.el
+       * progmodes/vhdl-mode.el: Fix Copyright format.
+
+2006-12-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mouse.el (mouse-drag-track): Suppress automatic hscrolling for
+       initial down event.
+
+2006-12-02  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-toggle-set-mark): Doc fix.
+       (cua-repeat-replace-region): Make M-v more robust.
+       (cua-paste-pop-rotate-temporarily): New defcustom.
+       (cua-paste-pop): Use it.
+       (cua-auto-mark-last-change): New defcustom.
+       (cua-pop-to-last-change): New helper function.
+       (cua-set-mark): Use them.
+
+2006-12-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * menu-bar.el (toggle-case-fold-search): Clarify doc/help string and
+       mini-buffer message.
+
+2006-12-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * descr-text.el (describe-char-unicodedata-file): Fix typo in docstring.
+
+2006-12-01  Ben North  <ben@redfrontdoor.org>
+
+       * paren.el: Fix the highlight overlay extension when the user types a
+       sequence of char very fast just before the open parenthesis.
+
+2006-12-01  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-mule.el: Eliminate Emacs 20 compatibility.
+
+       * ps-print.el: Eliminate Emacs 20 & 21 compatibility.
+       (ps-print-version): New version 6.7.
+       (ps-print-quote): Replace '?\ ' by '?\s'.
+
+2006-11-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * hexl.el (hexl-goto-address, hexl-forward-char, hexl-forward-short)
+       (hexl-forward-word, hexl-previous-line, hexl-beginning-of-1k-page)
+       (hexl-end-of-1k-page): Doc fixes.
+       (hexl-address-region, hexl-ascii-region, hexl-highlight-line-range):
+       Fix typos in docstrings.
+
+2006-11-30  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * ido.el (ido-local-file-exists-p): New.  Tell if a file exists
+       locally, i.e. without using file name handlers.
+       (ido-read-internal): Allow mono letter host names, avoiding the
+       `c:' problem by testing if the file exists locally.
+       (ido-complete, ido-make-file-list, ido-exhibit): Ditto.
+
+2006-11-30  Masatake YAMATO  <jet@gyve.org>
+
+       * hexl.el (hl-line-range-function, hl-line-face): Declare variables
+       to avoid bytecomp warnings.
+       (hexl-mode-old-ruler-function): New variable.
+       (hexl-follow-line): Bind `hexl-mode-old-hl-line-range-function'
+       and `hl-line-range-function' after `require' hl-line.
+       Then bind `hl-line-range-function' and `hl-line-face'.
+       Don't require frame.  Don't use `with-no-warnings'.
+       (hexl-activate-ruler): Store the original value of
+       `ruler-mode-ruler-function' to `hexl-mode-old-ruler-function'.
+       (hexl-mode-exit): Restore the original value of
+       `ruler-mode-ruler-function'.
+
+2006-11-30  Alin C. Soare  <alinsoar@voila.fr>  (tiny change)
+
+       * hexl.el (hexl-mode-old-hl-line-range-function): New variable.
+       (hexl-mode-old-hl-line-face): New variable.
+       (hexl-mode, hexl-mode-exit): Fix the highlighting of the current
+       line when exit from the hexl-mode.
+
+2006-11-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/bytecomp.el (byte-optimize, byte-compile-warnings):
+       Doc fixes.
+
+       * international/fontset.el (create-fontset-from-ascii-font)
+       (create-fontset-from-fontset-spec, x-compose-font-name): Doc fixes.
+       (fontset-name-p): Fix typo in docstring.
+
+       * progmodes/cc-cmds.el (c-indent-exp): Fix typo in docstring.
+
+2006-11-30  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-bdf.el: Fix maintainer email.
+
+       * ps-mule.el: Fix maintainer email.  Define functions for Emacs 20
+       compatibility.
+
+       * ps-print.el: Fix maintainer email.  Define functions for Emacs 20 &
+       21 compatibility.
+       (ps-print-quote): Replace '?\s' by '?\ ' to keep compatibility with
+       Emacs 20 & 21.
+
+2006-11-29  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlwave.el (idlwave-auto-fill):
+       Remove paragraph-start let to prevent auto-fill giving up.
+
+2006-11-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * vt100-led.el (led-state): Fix typo in previous change.
+
+2006-11-27  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation):
+       Fix interactive spec of the functions getting defined to make them
+       work as documented.
+
+2006-11-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * startup.el (fancy-splash-screens): Hide initial splash buffer.
+
+2006-11-28  Kim F. Storm  <storm@cua.dk>
+
+       * icomplete.el (icomplete-tidy, icomplete-exhibit): Check that
+       icomplete-mode is enabled.
+
+2006-11-28  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (require): Require gnus-sum during compilation
+       to avoid problem with a macro call.
+
+2006-11-28  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp/authors.el (authors-aliases): Add new alias.
+
+       * progmodes/fortran.el (fortran-font-lock-keywords-4): Add `min'.
+       (fortran-window-create-momentarily): Do not need string-to-char.
+
+2006-11-28  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/bytecomp.el (byte-compile-get-constant):
+       Replace incorrect use of assoc-default with a loop.
+
+       * term.el (term-exec-1): Set envvar INSIDE_EMACS.
+
+       * simple.el (next-error-find-buffer): Improve messages.
+
+       * files.el (revert-buffer): Special error message if file
+       is now not readable.
+
+       * facemenu.el (facemenu-add-new-face): Improve doc strings of
+       constructed commands.
+
+       * comint.el (comint-exec-1): Provide Emacs version and `comint'
+       in INSIDE_EMACS.
+
+2006-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * diff-mode.el (diff-mode-map): Add a binding for unified->context.
+
+       * server.el: Remove spurious * in docstrings.
+       (server-process-filter): Exit from recursive editing before processing
+       a new request.
+
+2006-11-27  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/hideshow.el (hs-already-hidden-p): Move to end of
+       line so hidden blocks will be correctly identified.
+
+2006-11-27  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ledit.el (ledit-save-defun, ledit-mode):
+       * resume.el (resume-emacs-args-buffer):
+       * rot13.el (rot13-display-table, rot13-translate-table, rot13)
+       (rot13-string, rot13-region, rot13-other-window, toggle-rot13-mode):
+       * vmsproc.el (subprocess-input, start-subprocess, subprocess-command)
+       (command-send-input, command-kill-line):
+       * vt100-led.el (led-state, led-on): Fix typos in docstrings.
+
+       * autoarg.el (autoarg-kp-mode): Doc fix.
+
+       * emacs-lock.el (toggle-emacs-lock): Doc fix.  Simplify.
+       (emacs-lock-check-buffer-lock): Doc fix.  Use `when'.
+       (check-emacs-lock): Doc fix.  Simplify.
+
+       * iimage.el (iimage-mode-image-regex-alist): Doc fix.
+       (iimage-mode-buffer): Fix typos in docstring.
+
+       * misc.el (zap-up-to-char): Doc fix.
+
+       * time-stamp.el: Fix comment and obsolescence string for old
+       functions.  Use `dolist' instead of `while'.
+
+       * userlock.el (ask-user-about-lock-help): Fix typos in output message.
+
+       * disp-table.el (standard-display-8bit, standard-display-default):
+       * ebuff-menu.el (electric-buffer-list):
+       * ehelp.el (electric-help-command-loop):
+       * font-core.el (font-lock-mode):
+       * help-macro.el (make-help-screen):
+       * help.el (describe-minor-mode-completion-table-for-indicator)
+       (lookup-minor-mode-from-indicator):
+       * indent.el (tab-to-tab-stop, move-to-tab-stop):
+       * info-look.el (info-lookup-guess-custom-symbol):
+       * locate.el (locate-main-listing-line-p, locate-mode, locate-do-setup):
+       * longlines.el (longlines-wrap-line):
+       * macros.el (insert-kbd-macro):
+       * menu-bar.el (menu-bar-update-buffers):
+       * misc.el (copy-from-above-command):
+       * mouse.el (mouse-popup-menubar, mouse-buffer-menu-alist):
+       * newcomment.el (comment-indent):
+       * novice.el (disabled-command-function):
+       * sort.el (sort-fields-syntax-table):
+       * subr.el (momentary-string-display):
+       * tar-mode.el (tar-header-block-summarize)
+       (tar-clear-modification-flags):
+       * terminal.el (terminal-cease-edit, te-more-break-unwind, te-newline)
+       (te-clear-rest-of-line, te-clear-rest-of-screen, te-clear-screen)
+       (te-insert-lines, te-delete-lines, te-delete, te-insert-spaces)
+       (te-delete-char, te-down-vertically-or-scroll):
+       * time-stamp.el (time-stamp-string-preprocess):
+       * tmm.el (tmm-add-one-shortcut): "?\ " -> "?\s".
+
+2006-11-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.el (speedbar-timer-fn): Revert to old behaviour when not
+       in GUD mode.
+
+       * progmodes/gud.el (gud-install-speedbar-variables): Remove bindings:
+       speedbar-expand-line-descendants, speedbar-contract-line-descendants.
+
+2006-11-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * progmodes/cc-vars.el (c-backslash-column): Add . at end of sentence.
+
+2006-11-26  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * progmodes/ada-mode.el (ada-which-compiler): Fix typo in docstring.
+       (ada-compile-goto-error): Adapt to new argument profile of
+       compilation-goto-locus in Emacs 22.  Don't check if the various
+       compile functions are defined; we already do "(require 'compile)".
+
+2006-11-26  Kim F. Storm  <storm@cua.dk>
+
+       * kmacro.el: Fix commentary.
+
+2006-11-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gdb): Explain how to run in text command mode
+       more clearly.  Say in error message that multiple debugging
+       requires restarting GDB.
+
+2006-11-25  Juanma Barranquero  <lekktu@gmail.com>
+
+       * international/fontset.el (create-fontset-from-fontset-spec): Doc fix.
+
+2006-11-25  Pavel Kobiakov  <pk_at_work@yahoo.com>
+
+       * progmodes/flymake.el (flymake-posn-at-point-as-event): New function.
+       (flymake-popup-menu): Use it instead of posn-at-point.
+
+2006-11-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * progmodes/cc-vars.el (c-backslash-column):
+       Mention c-backslash-max-column in documentation for c-backslash-column.
+
+2006-11-24  Lars Hansen  <larsh@soem.dk>
+
+       * net/tramp.el (tramp-default-method): Under Windows, change from
+       plink to pscp.
+       (tramp-copy-failed-regexp, tramp-action-copy-failed): Add.
+       (tramp-actions-copy-out-of-band):
+       Add pair (tramp-copy-failed-regexp tramp-action-copy-failed).
+       (tramp-action-out-of-band): Move "Permission denied" handling to
+       tramp-action-copy-failed.
+       (tramp-do-copy-or-rename-file-out-of-band): unwind-protect killing of
+       process buffer.
+
+2006-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pgg-pgp.el (pgg-pgp-process-region): Change `args' from a list of
+       strings to a single string.  Quote `errors-file-name'.
+       (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region, pgg-pgp-sign-region)
+       (pgg-pgp-verify-region, pgg-pgp-insert-key, pgg-pgp-snarf-keys-region):
+       Adjust calls.  Use `shell-quote-argument'.
+
+       * international/mule.el (load-with-code-conversion)
+       (with-category-table): Use with-current-buffer.
+       (after-insert-file-set-coding): Use restore-buffer-modified-p.
+
+2006-11-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/smtpmail.el (smtpmail-send-it):
+       Copy buffer-file-coding-system from the mail buffer.  Possibly add a
+       MIME header for the message encoding.
+       Bind coding-system-for-write around the call to mail-do-fcc.
+       Use smtpmail-code-conv-from to encode queued mail messages.
+
+2006-11-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * tabify.el (tabify-regexp): Doc fix.
+
+       * net/rcirc.el (rcirc-buffer-maximum-lines):
+       * progmodes/gud.el (jdb): Fix space/tab mixup in docstrings.
+
+       * play/gomoku.el (gomoku-terminate-game, gomoku-human-takes-back)
+       (gomoku-prompt-for-move, gomoku-human-plays, gomoku-offer-a-draw):
+       Fix typos in output messages.
+       (gomoku-vector-length, gomoku-init-board): Fix typos in docstrings.
+
+2006-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * hexl.el (hexl-mode): Don't try to guess the max-address: get it from
+       the horse's mouth.
+       (hexlify-buffer): Don't re-encode an arg that's already encoded.
+
+2006-11-23  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-diff.el (ediff-exec-process, ediff-same-file-contents):
+       Remove condition-case.
+
+2006-11-23  Glenn Morris  <rgm@gnu.org>
+
+       * progmodes/f90.el (f90-comment-indent): Do not move point in
+       default case.
+
+2006-11-21  Romain Francoise  <romain@orebokech.com>
+
+       * emacs-lisp/find-func.el (find-library-name): Don't strip ".el"
+       from library name (reverts change of 2005-10-25).
+
+2006-11-21  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * tutorial.el (tutorial--default-keys): Add newline and
+       delete-backward-char bindings.
+       (tutorial--detailed-help): Save excursion when finding keys.
+       Correct warning string for M-x FOO case.
+       (tutorial--display-changes): Print special keys in tutorial style.
+       Tweak search regexp for changed keys.
+
+2006-11-21  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
+
+       * thingatpt.el (thing-at-point-url-at-point): Don't add a
+       redundant scheme.
+
+2006-11-21  Diane Murray  <disumu@x3y2z1.net>  (tiny change)
+
+       * thingatpt.el (thing-at-point-uri-schemes): Add schemes that
+       are new to the list at IANA.  Also added irc, mms, mmsh.
+
+2006-11-20  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlw-help.el (idlwave-html-help-location):
+       Fail gracefully for missing help packages.
+       (idlwave-help-assistant-open-link): Open full links.
+       (idlwave-help-assistant-help-with-topic): Direct help link.
+
+       * progmodes/idlwave.el (idlwave-mode):
+       Set add-log-current-defun-function.
+       (idlwave-current-routine-fullname): Add, to support add-log.
+       (idlwave-convert-xml-system-routine-info): Simplify XML parsing
+       to reflect improvements to xml-parse-file.
+       (idlwave-mode-menu-def): New binding for help-with-topic.
+
+       * progmodes/idlw-shell.el (idlwave-shell-filter-directory):
+       Handle extra newlines and spaces.
+       (idlwave-shell-mode-map): Add help-with-topic.
+
+2006-11-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * tutorial.el (tutorial-warning-face): New face.
+       (tutorial--detailed-help, tutorial--display-changes): Use it.
+       (tutorial--find-changed-keys): Check ESC-prefix binding specially.
+       Improve search pattern for occurrences of changed keys.
+
+2006-11-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el (x-last-cut-buffer-coding): New variable.
+       (x-select-text): Set it.
+       (x-cut-buffer-or-selection-value): Check also x-last-cut-buffer-coding
+       when checking for newness.
+
+2006-11-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * subr.el (posn-image):
+       * progmodes/ebnf2ps.el (ebnf-stop-on-error): Fix typos in docstrings.
+
+       * emacs-lisp/regexp-opt.el (regexp-opt): Doc fix.
+
+2006-11-19  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * progmodes/glasses.el (glasses-separate-parentheses-exceptions): New.
+       Exceptions to the rule "add a space between an identifier and an
+       opening parenthesis".  Defaulted to the `#define' problem of cpp.
+       (glasses-parenthesis-exception-p): New.  Check if the region is an
+       exception regarding to that.
+       (glasses-make-readable): Use it.
+       (glasses-convert-to-unreadable): Ditto.  Modify the file also if
+       `glasses-convert-on-write-p' and `glasses-separate-parentheses-p' are t.
+
+2006-11-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/bytecomp.el (byte-compile-if): Revert last change.
+
+2006-11-19  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * progmodes/ada-mode.el (ada-make-body): Fix typo.
+
+       * progmodes/ada-xref.el (ada-make-body-gnatstub): Fix typo.
+       (ada-xref-initialize): Fix typo.  Use add-hook and remove-hook.
+
+2006-11-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded): Check `and'
+       conditions for function or variable bindings.
+
+       * comint.el (comint-exec-1): Set EMACS and INSIDE_EMACS to t.
+
+       * progmodes/compile.el (compilation-start): Ditto.
+
+2006-11-18  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (top): cl and custom are always required.
+
+2006-11-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el (x-cut-buffer-or-selection-value): Decode text from
+       cut-buffers with next-selection-coding-system if not nil.
+
+2006-11-17  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-fix-decoded-time): New function.
+       (org-display-custom-time): Use `org-fix-decoded-time'.
+
+2006-11-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * menu-bar.el (menu-bar-games-menu): Remove yow.
+
+2006-11-17  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-scan-tags): Re-align code fixed.
+       (org-detach-overlay): Rename from `org-detatch-overlay'.
+       (org-table-convert-region): Insert space after column separator.
+       (org-agenda-kill): New command.
+       (org-metaleft): Call `org-outdent-item' on bullets.
+       (org-metaright): Call `org-indent-item' on bullets.
+       (org-timestamp-change): Set `org-last-changed-timestamp'.
+       (org-current-line): Make sure (bolp) returns correct result.
+       (org-agenda-change-all-lines): Make sure TODO are highlighted.
+
+2006-11-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs.el (cvs-retrieve-revision): Set buffer-file-coding-system.
+
+2006-11-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mouse.el (global-map): Change 2006-08-16 fix to call
+       mouse-yank-at-click explicitly, since mouse events are not carried
+       over into keyboard macros.
+
+2006-11-16  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-file-internal): Use current buffer's file name as default
+       choice for ido-find-alternate-file.  Suggested by Matt Hodges.
+
+2006-11-15  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-doublecheck-at-and-shallower): Clarify docstring.
+       (allout-inhibit-aberrance-doublecheck): Rename from
+       allout-during-yank-processing.  All callers changed.
+       (allout-ascend): Provide for unusual case where some topic after
+       the first in file is at lower depth than the first.
+       (allout-shift-in): Ensure the offspring of the new containing
+       topic are exposed.
+       (allout-encrypt-string): Preserve the coding-system of the text,
+       according to that of the containing buffer.
+       (allout-toggle-subtree-encryption): When the text being encrypted
+       requires a different coding system, offer to preserve the coding
+       system using a file local var.
+
+2006-11-15  Simon Marshall  <simon@gnu.org>
+
+       * progmodes/cc-fonts.el (c-font-lock-declarators): Use c-at-toplevel-p
+       to recognise "T t()" as a function declaration, rather than a
+       variable instantiation, iff at the top-level or inside a class
+       declaration.  Suggested by Feng Li <fengli@gmail.com>.
+
+2006-11-14  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * progmodes/ada-xref.el (ada-parse-prj-file):
+       Don't delete project buffer; user may want to edit it.
+       (ada-xref-set-project-field, ada-xref-current-project-file)
+       (ada-xref-current-project, ada-show-current-project)
+       (ada-set-main-compile-application): New functions.
+       (ada-xref-get-project-field, ada-require-project-file):
+       Normalize use of ada-prj-default-project-file.
+       (ada-gdb-application, ada-get-ada-file-name, ada-make-body-gnatstub):
+       Normalize use of ada-require-project-file.
+       (ada-prj-find-prj-file): Improve doc string, comments.
+
+       * progmodes/ada-mode.el (ada-mode-version): Bump version.
+       (ada-create-keymap): Add \C-c\C-m 'ada-set-main-compile-application.
+       (ada-create-menu): Add ada-set-main-compile-application,
+       ada-show-current-main, ada-show-current-project.
+
+2006-11-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/python.el (inferior-python-mode-syntax-table): New var.
+       (inferior-python-mode): Use it.
+
+2006-11-14  Andreas Schwab  <schwab@suse.de>
+
+       * term/xterm.el (terminal-init-xterm): Add more key bindings.
+
+2006-11-13  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-copy-current-word): C-o copies region if active.
+
+2006-11-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-emph-face): Fix typo in variable name.
+
+2006-11-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ediff.el (ediff-revision):
+       * files.el (set-visited-file-name):
+       * mail/rmailout.el (rmail-output-body-to-file):
+       Use `format', not `message', in `y-or-n-p' call.
+
+2006-11-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-metaleft): Call `org-outdent-item' on bullets.
+       (org-metaright): Call `org-indent-item' on bullets.
+       (org-timestamp-change): Set `org-last-changed-timestamp'.
+       (org-current-line): Make sure (bolp) returns correct result.
+       (org-agenda-change-all-lines): Make sure highlighting TODO always works.
+
+2006-11-12  Richard Stallman  <rms@gnu.org>
+
+       * language/european.el (turkish-case-conversion-enable)
+       (turkish-case-conversion-disable): New functions.
+       ("Turkish" lang env): Use them.
+
+       * international/characters.el (case table):
+       Do nothing special for i and I.
+
+       * subr.el (remove-overlays): Fix last change.
+
+       * cus-edit.el (custom-save-all): Use find-file-visit-truename
+       for visiting the custom file.
+
+2006-11-12  Markus Triska  <triska@gmx.at>
+
+       * play/handwrite.el (handwrite): Also process lines not ending
+       with newline.  Replace some position-fiddling with different
+       logic.  Improve performance.
+
+2006-11-12  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * progmodes/ada-xref.el (ada-prj-default-check-cmd): New variable,
+       replacing deleted variable `ada-check-switch'.
+       (ada-project-file-extension): Rename to `ada-prj-file-extension'.
+       (ada-xref-project-files): Improve doc string.
+       (ada-find-executable): New function.
+       (ada-initialize-runtime-library): Use `ada-find-executable'.
+       (ada-xref-set-default-prj-values): In compile commands, don't need
+       `ada-cd-command'; `compile' does that more portably.
+       Use ada-prj-default-check-cmd.
+       (ada-parse-prj-file): Don't set 'debug_post_cmd, 'debug_pre_cmd
+       properties if not specified in project file.
+       (ada-goto-declaration): Display useful message for new error
+       'error-file-not-found.
+       (ada-get-ada-file-name, ada-find-in-src-path): Signal new error
+       'error-file-not-found.
+       (ada-get-all-references): Match latest ali syntax.  Signal new
+       error 'error-file-not-found.
+       (ada-find-in-ali): Match latest ali syntax.
+       (ada-make-filename-from-adaname): Handle different semantics of
+       gnatkr in GNAT 3.15p vs later.
+
+       * progmodes/ada-stmt.el (ada-func-or-proc-name): Match changes to
+       ada-procedure-start-regexp.
+       (ada-or-accept, ada-or-delay, ada-or-terminate): Improve doc string.
+
+       * progmodes/ada-mode.el: Replace conditional (require 'ispell)
+       with defvar.
+       (ada-language-version): Rename ada05 -> ada2005.
+       (ada-align-region-separate): Add `eval-when-compile'.
+       (ada-name-regexp): Remove unneeded escapes in regexp character
+       alternative.
+       (ada-compile-goto-error-file-linenr-re): New constant.
+       (ada-matching-start-re): Handle additional cases `declare',
+       `procedure', `function'.
+       (ada-compile-goto-error): Handle "... at line nn".
+       (ada-mode): Clearer syntax, comments for ff-special-constructs.
+       Delete support for old versions of `align'.
+       (ada-search-prev-end-stmt): Handle additional keyword `private'.
+       (ada-check-defun-name): Simplify handling of `declare'.
+       (ada-goto-matching-start): Handle nested `begin ... end'.
+       Handle `declare', `protected', `procedure', `function'.
+       (ada-create-menu): Presence of arm95 is not conditional on using
+       GNAT compiler.
+
+2006-11-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/re-builder.el (reb-mode): Set `blink-matching-paren' to
+       nil in the *RE-Builder* buffer (it causes spurious error messages).
+
+       * server.el (server-visit-files): If `minibuffer-auto-raise' has
+       been set to t, respect it.
+
+2006-11-11  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * progmodes/ada-mode.el: Delete `eval-and-compile' around `require'.
+       Delete commented out code for old Emacs versions.  Autoloading of
+       "ada-xref", "ada-prj" is useful even if compiler is not GNAT.
+       (ada-mode-version): Bump version number.
+       (ada-95-string-keywords, ada-2005-string-keywords)
+       (ada-2005-keywords, ada-name-regexp): New constant.
+       (ada-language-version, ada-procedure-start-regexp, ada-mode)
+       (ada-font-lock-keywords): Add support for Ada 2005 keywords.
+       (ada-package-start-regexp): Support private packages, include package
+       name (for ada-set-point-accordingly).
+       (ada-next-procedure, ada-previous-procedure)
+       (ada-which-function-are-we-in): Match changes to
+       ada-procedure-start-regexp.
+       (ada-make-body): Make non-interactive; not a user function.
+       (ada-make-subprogram-body): Improve doc string.
+
+2006-11-11  Romain Francoise  <romain@orebokech.com>
+
+       * progmodes/cperl-mode.el (cperl-mode): Before adding to it, make
+       `compilation-error-regexp-alist' buffer-local, since we changed
+       `compilation-error-regexp-alist-alist' locally.
+
+2006-11-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * server.el (server-visit-files): Bind `minibuffer-auto-raise'
+       to the value of `server-raise-frame'.
+
+2006-11-11  Glenn Morris  <rgm@gnu.org>
+
+       * ido.el (ido-enable-prefix)
+       * ses.el (ses-call-printer-return)
+       * net/tramp.el (tramp-unified-filenames)
+       * progmodes/cc-align.el (c-lineup-string-cont)
+       * progmodes/compile.el (compilation-directory-matcher)
+       * progmodes/ebnf2ps.el (ebnf-stop-on-error)
+       * progmodes/vhdl-mode.el (vhdl-reset-active-high)
+       (vhdl-clock-rising-edge)
+       * textmodes/org.el (org-export-with-timestamps)
+       (org-export-remove-timestamps-from-toc)
+       (org-export-with-tags): Improve previous doc fixes.
+
+2006-11-11  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-mode-map):
+       Bind C-c $ instead of M-RET.
+
+2006-11-10  Simon Marshall  <simon@gnu.org>
+
+       * progmodes/cc-fonts.el (c-font-lock-declarations): Don't overwrite
+       fontification for "case" and "default" keywords.
+
+2006-11-10  Andreas Schwab  <schwab@suse.de>
+
+       * calendar/cal-dst.el (calendar-dst-check-each-year-flag):
+       Avoid starting sentence with "nil".
+
+2006-11-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * server.el (server-raise-frame): New option.
+       (server-switch-buffer): Use it.
+
+2006-11-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-many-windows): Start doc string
+       with a capital.
+
+2006-11-10  Carsten Dominik  <carsten.dominik@gmail.com>
+
+       * textmodes/org.el (org-show-hierarchy-above)
+       (org-show-following-heading): Fix typo in default value.
+       (org-scan-tags): Make the search case-sensitive.
+       (org-tags-sparse-tree): Don't overrule
+       `org-show-following-heading' and `org-show-hierarchy-above'.
+       (org-reveal): New command.
+       (org-show-context): Rename from `org-show-hierarchy-above'.
+       (org-fast-tag-selection-single-key): New option.
+       (org-fast-tag-show-exit, org-set-current-tags-overlay): New functions.
+       (org-tags-overlay): New variable.
+       (org-agenda-todo-ignore-deadlines): New option.
+       ("session"): Add circular data structure `org-mark-ring' to
+       exceptions list in session.el.
+       (org-agenda-window-setup, org-agenda-restore-windows-after-quit):
+       New options.
+       (org-agenda-quit): Use `org-agenda-restore-windows-after-quit'.
+       (org-prepare-agenda, org-agenda-quit): Use `org-agenda-window-setup'.
+       (org-pre-agenda-window-conf, org-blank-before-new-entry): New vars.
+       (org-finalize-agenda): Activate bracket links in agenda.
+       (org-at-timestamp-p, org-at-date-range-p): Additional argument
+       INACTIVE-OK.
+       (org-show-hierarchy-above, org-show-following-heading):
+       List values allowed for fine-tuned configuration.
+       (org-show-hierarchy-above): New argument CONTEXT, use the
+       fine-tuned settings in `org-show-hierarchy-above' and
+       `org-show-following-heading'.
+       (org-display-custom-time): New function.
+       (org-toggle-time-stamp-overlays, org-insert-time-stamp): New function.
+       (org-display-custom-times, org-time-stamp-custom-formats):
+       (org-maybe-intangible): New macro.
+       (org-activate-bracket-links, org-hide-wide-columns):
+       Use `org-maybe-intangible'.
+       (org-open-file): Use `shell-quote-argument'.
+       (org-display-internal-link-with-indirect-buffer): New option.
+       (org-file-remote-p): Get regexp from list.
+       (org-link-expand-abbrev): New function.
+       (org-link-abbrev-alist): New option.
+       (org-open-at-point, org-cleaned-string-for-export):
+       Call `org-link-expand-abbrev'.
+       (org-timeline, org-agenda-list, org-todo-list)
+       (org-tags-view): Remove the KEEP-MODES argument.
+       (org-finalize-agenda-hook): New hook.
+       (org-get-alist-option): New function.
+       (org-follow-timestamp-link): New function.
+       (org-open-at-point): Call `org-follow-timestamp-link'.
+       (org-log-note-marker, org-log-note-purpose)
+       (org-log-note-window-configuration): New variables.
+       (org-add-log-maybe, org-add-log-note, org-store-log-note): New funs.
+       (org-log-note-headings): New option.
+       (org-dblock-write:clocktable): Bug fix, removed infinite loop.
+       (org-store-link): Support for dired-mode.
+       (org-open-file): Substitute environment variables into filename.
+       (org-last): New defsubst.
+       (org-agenda-re-align-tags): New function.
+       (org-agenda-align-tags-to-column): New option.
+       (org-agenda-timeline): Group removed.
+       (org-prepare-agenda, org-prepare-agenda-buffers)
+       (org-run-agenda-series, org-timeline, org-agenda-list)
+       (org-todo-list, org-tags-view): Call `org-agenda-prepare' and set
+       the text property inticating the agenda type.
+       (org-agenda-post-command-hook): Get agenda type from text property
+       at point.
+       (org-agenda): Handle command sets.  Set `org-agenda-last-arguments'
+       and obey `org-agenda-overriding-arguments'.
+       (org-agenda-overriding-arguments, org-agenda-last-arguments): New vars.
+       (org-agenda-goto-today, org-agenda-later, org-agenda-earlier)
+       (org-agenda-week-view, org-agenda-day-view):
+       Use `org-agenda-overriding-arguments' to make updating work with
+       multi-block agendas.
+       (org-agenda-prefix-format): Allow different formats for the
+       different agenda entry types.
+       (org-timeline-prefix-format): Option removed, use
+       `org-agenda-prefix-format' instead.
+       (org-prepare-agenda): New function.
+       (org-select-timeline-window): Option removed, use
+       `org-select-agenda-window' instead.
+       (org-respect-restriction): Variable removed.
+       (org-cmp-tag): New function.
+       (org-agenda-sorting-strategy, org-entries-lessp):
+       Implement sorting by last tag.
+       (org-complete): Better completion in in-buffer option lines.
+       (org-in-item-p): New function.
+       (org-org-menu): Add entries for checkboxes.
+       (org-cycle): Extra brouping in outline-regexp, because it is used
+       in a search with "^" prepended.
+       (org-provide-checkbox-statistics): New option.
+       (org-set-font-lock-defaults): Highlight checkbox statistics.
+       (org-update-checkbox-count-maybe)
+       (org-get-checkbox-statistics-face): New functions.
+       (org-update-checkbox-count): New command.
+       (org-insert-item, org-toggle-checkbox):
+       Call `org-update-checkbox-count-maybe'.
+       (org-export-as-html): XEmacs compatibility for coding system.
+       (org-force-cycle-archived): New command.
+       (org-cycle-hide-archived-subtrees): Display message when ARCHIVE
+       overrules cycling.
+       (org-fix-position-after-promote): If the line contains only a todo
+       keyword, add a final space.
+       (org-promote-subtree, org-demote-subtree):
+       Call `org-fix-position-after-promote'.
+
+2006-11-10  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/cal-dst.el: Do not assume DST starts/ends on the same
+       date in every year.
+       (calendar-dst-check-each-year-flag): New customizable variable.
+       (calendar-dst-find-data): New function, extracted from
+       calendar-current-time-zone.
+       (calendar-current-time-zone): Use calendar-dst-find-data.
+       (calendar-dst-transition-cache): New variable.
+       (calendar-dst-find-startend, calendar-dst-starts)
+       (calendar-dst-ends): New functions.
+       (calendar-daylight-savings-starts)
+       (calendar-daylight-savings-ends): Change value to use
+       calendar-dst-starts, calendar-dst-ends; respectively.
+
+       * progmodes/f90.el (f90-indent-region): Bind case-fold-search to t.
+
+       * ido.el (ido-enable-prefix)
+       * ses.el (ses-call-printer-return)
+       * net/tramp.el (tramp-unified-filenames)
+       * progmodes/cc-align.el (c-lineup-string-cont)
+       * progmodes/compile.el (compilation-directory-matcher)
+       * progmodes/ebnf2ps.el (ebnf-stop-on-error)
+       * progmodes/gdb-ui.el (gdb-many-windows)
+       * progmodes/vhdl-mode.el (vhdl-reset-active-high)
+       (vhdl-clock-rising-edge)
+       * textmodes/org.el (org-export-with-timestamps)
+       (org-export-remove-timestamps-from-toc, org-export-with-tags)
+       (org-read-date): Doc fix (Nil -> nil).
+
+2006-11-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el (x-select-text, x-cut-buffer-or-selection-value):
+       Encode/decode text to/from cut buffers to/from iso-latin-1 only.
+
+2006-11-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bs.el (bs--window-for-buffer): Remove.
+       (bs--show-with-configuration): Use `get-window-with-predicate'
+       instead of `bs--window-for-buffer'.
+
+2006-11-10  Kenichi Handa  <handa@m17n.org>
+
+       * files.el (revert-buffer): Fix previous change.
+
+2006-11-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bs.el (bs--redisplay): Fix typo in docstring.
+       (bs--window-config-coming-from): Make frame-local.
+       (bs--restore-window-config): New function.
+       (bs-kill, bs-select, bs-select-other-window)
+       (bs-select-other-frame): Use it.
+       (bs--window-for-buffer): Return as soon as a matching buffer is found.
+       (bs--show-with-configuration): Save the window configuration as a
+       frame local var, and only if *buffer-selection* is not already
+       visible on this frame.
+
+2006-11-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * vc-svn.el (vc-svn-admin-directory): New var.
+       (vc-svn-registered, vc-svn-responsible-p)
+       (vc-svn-repository-hostname): Use it.
+       Suggested by arit93@yahoo.com.
+
+2006-11-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ldefs-boot.el: Regenerate.
+
+2006-11-08  Alan Mackenzie  <acm@muc.de>
+
+       * emacs-lisp/lisp.el (beginning-of-defun-raw): Code up the
+       case (eq open-paren-in-column-0-is-defun-start nil) by searching
+       for least nested open-paren.
+
+2006-11-08  Romain Francoise  <romain@orebokech.com>
+
+       * subr.el (remove-overlays): Fix typo in last change.
+
+2006-11-08  Richard Stallman  <rms@gnu.org>
+
+       * subr.el (remove-overlays): Call overlay-recenter.
+
+2006-11-08  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * printing.el (pr-alist-custom-set, pr-ps-utility-custom-set)
+       (pr-ps-name-custom-set, pr-txt-name-custom-set): Return back the old
+       behaviour.
+       (pr-menu-bind): Act on global-map instead of menu-bar-file-menu
+       directly.
+
+2006-11-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ido.el (ido-ignore-extensions, ido-show-dot-for-dired)
+       (ido-max-dir-file-cache, ido-decorations)
+       (ido-rewrite-file-prompt-functions, ido-use-mycompletion-depth)
+       (ido-magic-backward-char, ido-enter-dired)
+       (ido-enter-insert-buffer, ido-enter-insert-file, ido-dired)
+       (ido-list-directory, ido-first-match, ido-only-match)
+       (ido-subdir, ido-indicator): Fix typos in docstrings.
+       (ido-buffer-internal, ido-completion-help): Fix typos in messages.
+       (ido-read-internal): Fix typo in error message.
+
+2006-11-08  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (set-default-coding-systems):
+       Always set default-file-name-coding-system to utf-8 for Mac Darwin.
+
+2006-11-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (setwins): Remove.
+       (WINS_ALMOST): New macro.
+       (WINS): Use it.
+       (autoloads): Don't extract autoloads from files in obsolete/.
+
+2006-11-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * whitespace.el (whitespace-buffer): Call remove-overlays after
+       overlay-recenter for performance.  Suggested by Martin Rudalics.
+
+2006-11-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-default-method): scp is the default method.
+
+2006-11-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * server.el (server-start): Save also the Emacs pid in the server file.
+
+2006-11-07  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-cite.el (reftex-pop-to-bibtex-entry): Preserve
+       point when displaying a bibtex cross reference in the echo area.
+
+2006-11-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * international/mule.el (make-char): Fix typo in docstring.
+       (load-with-code-conversion, charsetp): Doc fixes.
+
+       * international/ja-dic-cnv.el (skkdic-convert):
+       * cus-edit.el (hook): Fix typo in docstring.
+
+2006-11-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (custom-mode-map): Move defvar above code using it.
+       (custom-mode-link-map): New variable.
+       (custom-group-link, custom-manual): Use follow-link.
+
+2006-11-06  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el: Fix typo in name of author of bibtex.el,
+       "Mark Shapiro" -> "Marc Shapiro".  Update his email address.
+
+2006-11-06  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-correct-word-before-point):
+       New function broken out of flyspell-correct-word.
+       (flyspell-mode-map): Bind it to M-RET.
+       (flyspell-correct-word): Call it.
+
+       * textmodes/fill.el (fill-minibuffer-function): New function.
+       (fill-paragraph): Bind fill-paragraph-function to
+       fill-minibuffer-function.
+
+       * ruler-mode.el (ruler-mode-map): Add bindings for up-events
+       so that they aren't undefined.
+
+       * dired.el (dired-readin): Locally bind file-name-coding-system.
+
+       * bindings.el: Shorten and clarify usual mode line mouse help string.
+
+       * Makefile.in (autoloads): Don't include `obsolete'.
+
+2006-11-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * printing.el (pr-alist-custom-set, pr-ps-utility-custom-set)
+       (pr-ps-name-custom-set, pr-txt-name-custom-set): Don't update the
+       Printing menu if it's not initialized.
+       (pr-menu-bind): Act on menu-bar-file-menu directly.
+
+2006-11-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help.el (view-emacs-news): Fix typo in error message.
+
+       * menu-bar.el (menu-bar-update-buffers): Fix typo in menu entry.
+
+       * shadowfile.el (shadow-define-regexp-group)
+       (shadow-literal-groups, shadow-insert-var): Doc fixes.
+       (shadow-read-files): Fix typo in message.
+       (shadow-inhibit-overload, shadow-find, shadow-suffix)
+       (shadow-site-match, shadow-write-todo-file, shadow-insert-var)
+       (shadow-suffix, shadow-site-match, shadow-expand-file-name)
+       (shadow-file-match): Fix typos in docstrings.
+
+       * terminal.el (terminal-emulator): Fix typo in message.
+
+       * emacs-lisp/authors.el (authors-fixed-entries): Fix typo.
+
+       * emacs-lisp/lselect.el (x-kill-primary-selection)
+       (x-delete-primary-selection, x-copy-primary-selection):
+       Fix typos in error messages.
+
+       * emulation/edt-mapper.el: Fix typo in interactive message.
+
+       * mail/emacsbug.el (report-emacs-bug): Fix typos in output message.
+
+       * textmodes/ispell.el (ispell, ispell-local-dictionary-alist)
+       (ispell-help): Fix typos in docstrings.
+       (ispell-help): Fix typo in output message.
+
+       * allout.el (allout-adjust-file-variable)
+       (allout-passphrase-verifier-string)
+       (allout-passphrase-hint-string)
+       (allout-toggle-current-subtree-encryption):
+       * apropos.el (apropos-synonyms):
+       * cus-edit.el (hook):
+       * emacs-lock.el (emacs-lock-from-exiting):
+       * follow.el (follow-avoid-tail-recenter-p):
+       * hexl.el (hexl-mode):
+       * mouse-copy.el (mouse-copy-work-around-drag-bug):
+       * mouse.el (mouse-set-font):
+       * resume.el (resume-emacs-args-file):
+       * rfn-eshadow.el (file-name-shadow-tty-properties):
+       * t-mouse.el (t-mouse-process, t-mouse-mode):
+       * emacs-lisp/cust-print.el (custom-print-install)
+       (custom-print-uninstall, custom-format):
+       * emacs-lisp/shadow.el (list-load-path-shadows):
+       * emulation/tpu-edt.el (tpu-help-text)
+       (tpu-save-all-buffers-kill-emacs, tpu-emacs-replace)
+       (tpu-reset-control-keys):
+       * emulation/vip.el (vip-emacs-local-map)
+       (vip-change-mode-to-emacs):
+       * emulation/viper.el (viper-mode, viper-set-hooks)
+       (viper-major-mode-modifier-list):
+       * emulation/viper-init.el (viper-emacs-state-cursor-color):
+       * emulation/viper-keym.el (viper-emacs-kbd-map)
+       (viper-toggle-key):
+       * mail/feedmail.el (feedmail-queue-reminder)
+       (feedmail-queue-reminder-alist, feedmail-confirm-outgoing)
+       (feedmail-confirm-outgoing-timeout, feedmail-nuke-bcc)
+       (feedmail-nuke-resent-bcc, feedmail-fill-to-cc-fill-column)
+       (feedmail-sender-line, feedmail-force-binary-write)
+       (feedmail-from-line, feedmail-deduce-envelope-from)
+       (feedmail-x-mailer-line, feedmail-message-id-generator)
+       (feedmail-date-generator, feedmail-fiddle-plex-user-list)
+       (feedmail-enable-spray, feedmail-spray-this-address)
+       (feedmail-spray-address-fiddle-plex-list, feedmail-enable-queue)
+       (feedmail-queue-runner-confirm-global)
+       (feedmail-ask-before-queue-prompt)
+       (feedmail-ask-before-queue-reprompt)
+       (feedmail-prompt-before-queue-standard-alist)
+       (feedmail-prompt-before-queue-user-alist)
+       (feedmail-prompt-before-queue-help-supplement)
+       (feedmail-queue-use-send-time-for-message-id)
+       (feedmail-queue-default-file-slug, feedmail-queue-fqm-suffix)
+       (feedmail-mail-send-hook-splitter, feedmail-mail-send-hook)
+       (feedmail-mail-send-hook-queued)
+       (feedmail-confirm-addresses-hook-example)
+       (feedmail-last-chance-hook, feedmail-before-fcc-hook)
+       (feedmail-queue-runner-mode-setter)
+       (feedmail-queue-alternative-mail-header-separator)
+       (feedmail-queue-runner-message-sender)
+       (feedmail-buffer-eating-function, feedmail-binmail-template)
+       (feedmail-run-the-queue-no-prompts)
+       (feedmail-run-the-queue-global-prompt)
+       (feedmail-queue-subject-slug-maker, feedmail-fiddle-header)
+       (feedmail-envelope-deducer, feedmail-fiddle-date)
+       (feedmail-default-message-id-generator)
+       (feedmail-fiddle-message-id, feedmail-fiddle-x-mailer)
+       (feedmail-fiddle-spray-address, feedmail-deduce-address-list):
+       * mail/vms-pmail.el (vms-pmail-save-and-exit, vms-pmail-abort)
+       (vms-pmail-setup):
+       * play/dunnet.el (dun-help):
+       * play/handwrite.el (handwrite):
+       * play/hanoi.el (hanoi-unix-64):
+       * progmodes/idlwave.el (idlwave-rescan-asynchronously):
+       * textmodes/enriched.el (fixed):
+       * textmodes/org.el (org-file-apps)
+       (org-emphasis-regexp-components, org-emphasis-alist):
+       * textmodes/texinfmt.el (batch-texinfo-format):
+       Fix typos in docstrings.
+
+2006-11-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * loadhist.el (read-feature): Don't complete features not loaded
+       from a file (which make `unload-feature' to fail).
+
+2006-11-05  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * add-log.el (add-log-time-zone-rule): Mark as safe-local-variable.
+
+2006-11-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * startup.el (command-line-1): Kill emacs if the last frame is
+       deleted while evaluating the command-line arguments.
+
+2006-11-05  Richard Stallman  <rms@gnu.org>
+
+       * startup.el (init-file-had-error): Add doc string.
+       (fancy-splash-text, fancy-splash-head, fancy-splash-tail):
+       Use fixed-width font for keyboard key descriptions.
+
+       * cus-edit.el (custom-save-all): Error if saving in .emacs
+       and it had an error when loaded.
+
+       * dired-aux.el (dired-copy-file-recursive): Catch errors
+       from recursive copies in the loop, around the recursive call.
+
+2006-11-05  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * battery.el (battery-linux-proc-acpi): Search an ac_adapter in
+       `/proc/acpi/ac_adapter/*'.  Ditto for the thermometers in
+       `/proc/acpi/thermal_zone/*'.
+       (battery-search-for-one-match-in-files): New.  Search a regexp in
+       the content of some files.
+
+2006-11-05  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (mouse-autoselect-window-now): Remove variable.
+       (mouse-autoselect-window-state): New variable.
+       (mouse-autoselect-window-start, mouse-autoselect-window-cancel)
+       (mouse-autoselect-window-select, handle-select-window):
+       Rewritten to make mouse-autoselect-window-timer a one-shot timer.
+       Suspend delayed autoselection during menu or popup dialog.
+
+       * info-look.el (info-lookup-guess-custom-symbol): New function
+       for retrieving symbol at point in custom buffers.
+       (top level) <info-lookup-maybe-add-help>: Add backquote and
+       comma to ignored characters in regexps of help specifications
+       for emacs-lisp-mode and lisp-interaction-mode.  This permits
+       looking up symbols in `...' and after a comma.  Add help
+       specifications for custom-mode and help-mode.
+
+2006-11-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmail.el (rmail-redecode-body): New optional argument RAW.
+       Don't encode body if RAW is non-nil, or if the old encoding is
+       identical to the new encoding, or if the body contains only
+       eight-bit-* characters.
+
+2006-11-04  Yoni Rabkin Katzenell  <yoni-r@actcom.com>  (tiny change)
+
+       * faces.el (faces-sample-overlay, describe-face): Revert last changes.
+       (faces-sample-overlay): Remove variable.
+       (describe-face): Insert sample text in the face being described.
+
+2006-11-04  Martin Rudalics  <rudalics@gmx.at>
+
+       * whitespace.el (whitespace-indent-regexp): Make this match any
+       multiples of eight spaces near the beginning of a line.
+       (whitespace-buffer): Use `remove-overlays' instead of
+       `whitespace-unhighlight-the-space' and `overlay-recenter' to
+       speed up overlay handling.
+       (whitespace-buffer-leading, whitespace-buffer-trailing):
+       Make these functions highlight the text removed by
+       `whitespace-buffer-leading-cleanup' and
+       `whitespace-buffer-trailing-cleanup' respectively.
+       (whitespace-buffer-search): Use `with-local-quit'.
+       Move `format' out of loop to speed up scanning larger buffers.
+       (whitespace-unhighlight-the-space): Remove `remove-hook' since
+       that function is never added to a hook.
+       (whitespace-spacetab-regexp, whitespace-ateol-regexp)
+       (whitespace-buffer-leading-cleanup)
+       (whitespace-refresh-rescan-list): Fix docstrings.
+
+2006-11-03  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-during-yank-processing): Cue for inhibiting
+       aberrance processing during yanks.
+       (allout-doublecheck-at-and-shallower): Reduce the limit to reduce
+       the amount of yanked topics that can be aberrant.
+       (allout-do-doublecheck): Encapsulate this multiply-used recipe in
+       a function, and supplement with inihibition of doublechecking
+       during yanks.
+       (allout-beginning-of-line, allout-next-heading)
+       (allout-previous-heading, allout-goto-prefix-doublechecked)
+       (allout-back-to-current-heading, allout-next-visible-heading)
+       (allout-next-sibling): Use new allout-do-doublecheck function.
+       (allout-next-sibling): Ensure we made progress when returning
+       other than nil.
+       (allout-rebullet-heading): Preserve text property annotations
+       indicating the text was hidden, if it was.
+       (allout-kill-line): Remove any added was-hidden annotations.
+       (allout-kill-topic): Remove any added was-hidden annotations.
+       (allout-annotate-hidden): Inhibit adding was-hidden text
+       properties to the undo list.
+       (allout-deannotate-hidden): New function to remove was-hidden
+       annotation.
+       (allout-hide-by-annotation): Use new allout-deannotate-hidden.
+       (allout-remove-exposure-annotation): Replace by
+       allout-deannotate-hidden.
+       (allout-yank-processing): Signal that yank processing is happening
+       with allout-during-yank-processing.  Also, wrap
+       allout-unprotected's closer to the text changes, for easier
+       debugging.  We need to inhibit-field-text-motion explicitly, in
+       lieu of the encompassing allout-unprotected.
+       (outlineify-sticky): Adjust criteria for triggering new outline
+       decorations to presence or absence of any topics, not just a topic
+       at the beginning of the buffer.
+
+2006-11-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bs.el (bs--show-all, bs--redisplay):
+       * cus-edit.el (custom-unlispify-menu-entries)
+       (custom-unlispify-tag-names, custom-prompt-variable):
+       * expand.el (expand-pos):
+       * speedbar.el (speedbar-generic-list-tag-p):
+       * wid-edit.el (widget-image-enable):
+       * emacs-lisp/checkdoc.el (checkdoc-rogue-space-check-engine):
+       * emacs-lisp/find-func.el (find-function-noselect)
+       (find-function, find-variable-noselect, find-variable)
+       (find-definition-noselect, find-face-definition):
+       * mail/rmail-spam-filter.el (rsf-scanning-messages-now):
+       * net/eudc-vars.el (eudc-expansion-overwrites-query):
+       * progmodes/ada-xref.el (ada-find-in-ali):
+       * textmodes/flyspell.el (flyspell-check-tex-math-command):
+       * textmodes/org.el (org-copy-subtree):
+       * textmodes/table.el (table--row-column-insertion-point-p):
+       Use "non-nil" in docstrings.
+
+2006-11-03  Mark Davies  <mark@mcs.vuw.ac.nz>
+
+       * sort.el (sort-columns): Set the field separator to tab; on
+       NetBSD, sort complains if "\n" is used as field separator.
+
+2006-11-03  NIIMI Satoshi  <sa2c@sa2c.net>
+
+       * emacs-lisp/pp.el (pp-eval-last-sexp): Evaluate target sexp.
+
+2006-11-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * server.el (server-auth-key): Remove.  Replace by a process-property.
+       (server-start): Don't remove the file of the previous process, but
+       instead clear out the place for the new file.
+       (server-start): Set the :auth-key property.
+       (server-process-filter): Use the :auth-key property.
+
+2006-11-02  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-mode-map): No longer copy
+       `outline-mode-map' explicitly - this is already done by
+       `define-derived-mode'.
+
+2006-11-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * server.el (server-visit-files): Use `when'.
+       (server-process-filter): When authentication fails, send error
+       message to client.  Wrap `process-send-region' in `ignore-errors'
+       instead of `condition-case', and remove misleading comment.
+
+2006-11-01  Juri Linkov  <juri@jurta.org>
+
+       * simple.el (yank): Doc fix.
+
+2006-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * server.el: Try and fit within 80 columns.
+       (server-start): Make the auth file unreadable by other users.
+
+2006-10-31  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+       * battery.el (battery-linux-proc-acpi): Prevent range error when
+       `full-capacity' is 0.
+
+2006-10-31  Yoni Rabkin Katzenell  <yoni-r@actcom.com>  (tiny change)
+
+       * faces.el (faces-sample-overlay): New defvar.
+       (faces-sample-overlay): New function to show face sample text.
+       (describe-face): Use it.
+
+2006-10-31  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * progmodes/ada-stmt.el: Change maintainer, apply
+       whitespace-cleanup, checkdoc.
+       (ada-func-or-proc-name): Add doc string.
+
+       * progmodes/ada-prj.el (ada-prj-new): Change maintainer, apply
+       whitespace-cleanup, checkdoc.  Minor improvements to many doc
+       strings and comments.
+       (ada-prj-display-page): Change buffer name to more accurately
+       reflect function.
+
+       * progmodes/ada-xref.el: Change maintainer, apply
+       whitespace-cleanup, checkdoc.  Minor improvements to many doc
+       strings and comments.  Don't look for `gvd' or `ddd' debuggers.
+       (ada-compile-current): Don't add newlines to commands.
+
+2006-10-31  Juanma Barranquero  <lekktu@gmail.com>
+
+       * server.el: Add support for TCP sockets.
+       (server-use-tcp, server-host, server-auth-dir): New options.
+       (server-auth-key): New variable.
+       (server-ensure-safe-dir): Create nonexistent parent dirs.
+       Ignore Unix-style file modes on Windows.
+       (server-start): Crete a TCP or Unix socket according to the value
+       of `server-use-tcp'.  For TCP sockets, create the id/auth file in
+       `server-auth-dir' directory.
+       (server-process-filter): Delete process if authentication
+       fails (which never happens for Unix sockets).
+
+2006-10-30  David Kastrup  <dak@gnu.org>
+
+       * subr.el (add-to-list): Don't continue checking if a match has
+       been found.
+
+2006-10-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * tutorial.el: Move defvars to avoid bytecomp warnings.
+       (tutorial--find-changed-keys): Check if viper-current-state is
+       bound before using it.
+       (help-with-tutorial): Check if viper-tutorial is defined before
+       using it.
+
+2006-10-30  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * help-fns.el (help-with-tutorial): Move to tutorial.el.
+
+       * tutorial.el: New file.
+       (help-with-tutorial): Move here from help-fns.el. Added help for
+       rebound keys.  Fixed resume of tutorial.
+       (tutorial--describe-nonstandard-key, tutorial--sort-keys)
+       (tutorial--find-changed-keys, tutorial--display-changes)
+       (tutorial--saved-dir, tutorial--saved-file)
+       (tutorial--save-tutorial): New functions to support the changes in
+       help-with-tutorial.
+
+2006-10-30  Kenichi Handa  <handa@m17n.org>
+
+       * files.el (revert-buffer): If a unibyte buffer is being reverted
+       with a coding system for multibyte, set buffer multibyte before
+       calling insert-file-contents.
+
+2006-10-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * server.el (server-select-display): Use a dummy buffer to detect when
+       the frame is later used.
+       (server-select-display): New function.
+       (server-process-filter): Use it to detect unused temp frames.
+
+2006-10-29  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       * progmodes/ada-mode.el: Change maintainer, apply
+       whitespace-clean, checkdoc.  Minor improvements to many doc strings.
+       (ada-mode-version): New function.
+       (ada-create-menu): Menu operations are available for all supported
+       compilers.
+
+2006-10-29  Lars Hansen  <larsh@soem.dk>
+
+       * net/tramp.el (with-parsed-tramp-file-name): Correct debug spec.
+       Highlight as keyword.
+       (tramp-do-copy-or-rename-file): Correct data for 'file-already-exists.
+       Don't call tramp-method-out-of-band-p for local files.
+       (tramp-touch): Quote file name.
+
+2006-10-28  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/calendar.el (cal-html-cursor-month)
+       (cal-html-cursor-year): Add autoloads for this new package.
+       (calendar-mode-map): Bind cal-html-cursor-month, cal-html-cursor-year.
+
+2006-10-28  Anna M. Bigatti  <bigatti@dima.unige.it>
+
+       * calendar/cal-html.el: New file.
+
+2006-10-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/authors.el (authors-aliases): Update.
+
+2006-10-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * version.el (emacs-version): Bump version number to 22.0.90.
+
+2006-10-26  John W. Eaton  <jwe@octave.org>
+
+       * progmodes/octave-inf.el (inferior-octave-has-built-in-variables):
+       New defvar.
+       (inferior-octave-resync-dirs): Check to see whether Octave has
+       built-in variables and set inferior-octave-has-built-in-variables.
+       Check inferior-octave-has-built-in-variables to decide whether to
+       send commands that set built-in variables or call functions to
+       change Octave's behavior.
+       Send "disp (pwd ())" to Octave instead of just "pwd".
+       (inferior-octave-startup): Send "more off" to Octave instead of
+       "page_screen_output = 0".
+
+2006-10-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/cl-indent.el (lisp-indent-259): Indent nil's in the
+       pattern normally.
+
+2006-10-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * bindings.el (mode-line-mode-menu): Remove bindings for global
+       minor modes (line/column number) as they are on the menubar.
+
+2006-10-25  Juanma Barranquero  <lekktu@gmail.com>
+
+       * term/w32-win.el (x-handle-name-switch): Doc fix.
+       (w32-standard-fontset-spec): Fix typo in docstring.
+
+       * midnight.el (midnight-buffer-display-time): Doc fix.
+       (clean-buffer-list-kill-never-buffer-names): Add "*server*".
+
+2006-10-23  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-cmd.el (viper-prefix-arg-com): Define gg as G0.
+
+       * viper-ex.el (ex-read): Quote file argument.
+
+       * ediff-diff.el (ediff-same-file-contents): Expand file names.
+
+       * ediff-mult.el (ediff-append-custom-diff): Quote shell file arguments.
+
+2006-10-22  Martin Rudalics  <rudalics@gmx.at>
+
+       * textmodes/flyspell.el (flyspell-check-region-doublons):
+       Fix last fix.
+
+2006-10-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * bindings.el (mode-line-mode-menu): List global minor modes
+       before local ones.
+
+2006-10-23  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (add-to-list): Optimize if compare-fn is `eq' or `eql'.
+       (sit-for): If last command was a prefix arg, add the read-ahead
+       event to unread-command-events as (t . EVENT) so it will be added
+       to this-command-keys by read-key-sequence.
+
+2006-10-22  Martin Rudalics  <rudalics@gmx.at>
+
+       * textmodes/flyspell.el (flyspell-word): Skip past all previous
+       whitespace when checking doublons.
+       (flyspell-check-region-doublons): Fix doublon regexp.
+       (flyspell-highlight-incorrect-region): Highlight doublons using
+       flyspell-duplicate face.
+
+       * progmodes/cperl-mode.el (cperl-invalid-face): Fix defcustom.
+
+2006-10-22  John Wiegley  <johnw@newartisans.com>
+
+       * progmodes/python.el (python-use-skeletons): python-mode was
+       auto-inserting templates (for those with abbrev-mode on), not only
+       by default -- *but without a configuration variable to disable
+       it*.  This rendered python-mode completely useless for me, so I
+       have added `python-use-skeletons', which is now off by default.
+
+2006-10-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/cperl-mode.el (cperl-mode): Don't assume
+       font-lock-multiline is auto-local (it's not).
+       (cperl-windowed-init): Ensure that cperl-font-lock-multiline is
+       initialized before calling cperl-init-faces.
+
+2006-10-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-info-stack-custom): Don't try to give
+       gdb-stack-position a value when there is no fringe.
+
+       * bindings.el (mode-line-mode-menu): Disable auto-revert-tail-mode
+       indicator if not visiting a file.
+
+2006-10-20  David Kastrup  <dak@gnu.org>
+
+       * window.el (kill-buffer-and-window): Fix a bug where an aborted
+       operation would still cause some window to collapse later.
+
+2006-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc.el (vc-switch-backend): Try to be more careful with unwanted
+       side-effect due to mixing various backends's file properties.
+
+       * vc-svn.el (vc-svn-parse-status): Remove unused arg `localp'.
+       Add arg `filename' instead.  Don't set vc-backend if `filename' is set.
+       Return `filename's status if applicable.  Update callers.
+
+2006-10-19  Kenichi Handa  <handa@m17n.org>
+
+       * international/kkc.el (kkc-region): When a key sequence is not
+       defined, append (this-single-command-raw-keys) to
+       unread-input-method-events.
+
+2006-10-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/ada-mode.el (ada-in-string-p): Doc fix.
+
+2006-10-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * version.el (emacs-version): Use mac-carbon-version-string.
+
+       * term/macterm.el (res-geometry): Apply 2006-10-18 change for x-win.el.
+
+2006-10-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * select.el (ccl-check-utf-8, string-utf-8-p): New functions (by
+       Kenichi Handa).
+       (xselect-convert-to-string): Decline requests for UTF8_STRING if
+       the selection is not UTF-8.
+
+2006-10-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/ada-mode.el (ada-83-string-keywords)
+       (ada-last-which-function-line ada-no-auto-case, ada-indent-region)
+       (ada-which-compiler, ada-align-modes, ada-adjust-case-buffer)
+       (ada-looking-at-semi-private, ada-get-body-name):
+       Fix typos in docstrings.
+       (ada-create-case-exception, ada-create-case-exception-substring):
+       Fix typos in error messages.
+       (ada-goto-matching-end, ada-narrow-to-defun): Doc fixes.
+
+2006-10-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el (res-geometry): Don't set geometry from Xresources
+       to default-frame-alist if default-frame-alist already contains
+       width/height.
+
+2006-10-18  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/pp.el (pp-eval-expression): Use `X' to read value.
+       Non-interactive arg is the value, not the expression.
+
+       * simple.el (read-expression-map): Just set it, no defvar.
+
+       * subr.el (insert-for-yank-1): If last inserted char has
+       properties, mark them as rear-nonsticky.
+
+       * recentf.el (recentf-mode): Doc fix.
+
+       * facemenu.el (facemenu-add-new-face): Defend against symbol
+       that isn't a face name.
+
+       * dired-aux.el (dired-do-copy): Doc fix.
+
+2006-10-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (line-move-1): Ignore fields when moving to the
+       beginning of line to avoid getting point stuck.
+
+2006-10-18  Martin Rudalics  <rudalics@gmx.at>
+
+       * textmodes/flyspell.el (flyspell-word-search-backward):
+       Set inhibit-point-motion-hooks to avoid looping due to intangibile
+       text.
+
+2006-10-16  Richard Stallman  <rms@gnu.org>
+
+       * help-fns.el (describe-function-1): Special case optimization
+       for self-insert-command.
+
+2006-10-16  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-reread-directory): Work in `dir' mode too.
+
+2006-10-15  Martin Rudalics  <rudalics@gmx.at>
+
+       * textmodes/table.el: Require 'regexp-opt.
+
+2006-10-15  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * progmodes/flymake.el (flymake-get-project-include-dirs-imp):
+       Use shell-quote-argument.
+
+       * shell.el (explicit-bash-args): Likewise.
+
+       * progmodes/ada-xref.el (ada-find-in-src-path): Likewise.
+       Use grep -E rather than egrep.
+
+2006-10-15  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * ido.el (ido-exhibit): Allow `-', `_', and trailing `$' in user id.
+
+2006-10-15  Kim F. Storm  <storm@cua.dk>
+
+       * filesets.el (filesets-run-cmd--repl-fn): Use shell-quote-argument.
+
+2006-10-14  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * filesets.el (filesets-cmd-shell-command): Quote buffer-file-name
+       to protect whitespace and metacharacters from the shell.
+
+2006-10-13  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
+
+       * apropos.el (apropos-pattern-quoted): Fix a typo in a doc string.
+
+2006-10-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * subr.el (start-process-shell-command): Doc fix.
+
+2006-10-13  Andrea Russo  <rastandy@salug.it>  (tiny change)
+
+       * info-look.el <maxima-mode, inferior-maxima-mode>: Allow [0-9] in
+       the regexp for Maxima symbols.
+
+2006-10-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-hooks.el (vc-ignore-dir-regexp): Make it into a defcustom.
+       (vc-find-root): Don't walk higher up than ~.
+
+2006-10-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * international/utf-8.el (utf-translate-cjk-load-tables):
+       Avoid clobbering last-coding-system-used during load.
+
+2006-10-12  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-global.el (reftex-create-tags-file):
+       Quote file arguments.
+
+2006-10-12  Richard Stallman  <rms@gnu.org>
+
+       * files.el (file-name-history): Add defvar.
+       (save-some-buffers-action-alist): Improve description strings.
+
+2006-10-12  Andreas Schwab  <schwab@suse.de>
+
+       * files.el (auto-mode-alist): Match change log file name also with
+       a dash before a numeric extension.
+
+2006-10-11  Ilya Zakharevich  <ilyaz@cpan.org>
+
+       * progmodes/cperl-mode.el: Merge from upstream, upto version 5.22.
+       After 5.0:
+       (cperl-add-tags-recurse-noxs-fullpath): New function (for -batch mode).
+
+       After 5.1: Major edit.  Summary of most visible changes:
+
+       - Multiple <<HERE per line allowed.
+       - Handles multiline subroutine declaration headers (with comments).
+         (The exception is `cperl-etags' - but it is not used in the rest
+         of the mode.)
+       - Fontifies multiline my/our declarations (even with comments,
+         and with legacy `font-lock').
+       - Major speedup of syntaxification, both immediate and postponed
+         (3.5x to 15x [for different CPUs and versions of Emacs] on the
+         huge real-life document I tested).
+       - New bindings, edits to imenu.
+       - "_" is made into word-char during fontification/syntaxification;
+         some attempts to recognize non-word "_" during other operations too.
+       - Detect bug in Emacs with `looking-at' inside `narrow' and bulk out.
+       - autoload some more perldoc-related stuff
+       - New convenience features: ISpell POD/HEREDOCs, narrow-to-HEREDOC.
+       - Attempt to incorporate XEmacs edits which reached me.
+
+       Fine-grained changelog:
+       (cperl-hook-after-change): New configuration variable.
+       (cperl-vc-sccs-header): Likewise.
+       (cperl-vc-sccs-header): Likewise.
+       (cperl-vc-header-alist): Default via two preceding variables.
+       (cperl-invalid-face): Remove double quoting under XEmacs
+               (still needed under 21.2).
+       (cperl-tips): Update URLs for resources.
+       (cperl-problems): Likewise.
+       (cperl-praise): Mention new features.
+       New C-c key bindings: for `cperl-find-bad-style',
+       `cperl-pod-spell', `cperl-here-doc-spell', `cperl-narrow-to-here-doc',
+       `cperl-perdoc', and `cperl-perldoc-at-point'.
+       CPerl Mode menu changes: "Fix style by spaces", "Imenu on Perl Info"
+       moved, new submenu of Tools with Ispell entries and narrowing.
+       (cperl-after-sub-regexp): New defsubst.
+       (cperl-imenu--function-name-regexp-perl): Use `cperl-after-sub-regexp'.
+               Allows heads up to head4.
+               Allow "package;".
+       (defun-prompt-regexp): Use `cperl-after-sub-regexp'.
+       (paren-backwards-message): ??? Something for XEmacs???
+       (cperl-mode): Never auto-switch abbrev-mode off.
+               Try to allow '_' be non-word char.
+               Do not use `font-lock-unfontify-region-function' on XEmacs.
+               Reset syntax cache on mode start.
+               Support multiline facification (even on legacy `font-lock').
+       (cperl-facemenu-add-face-function): ??? Some contributed code ???
+       (cperl-after-change-function): Since `font-lock' and `lazy-lock'
+               refuse to inform us whether the fontification is due to lazy
+               calling or due to edit to a buffer, install our own hook
+               (controlled by `cperl-hook-after-change').
+       (cperl-electric-pod): =cut may have been recognized as start.
+       (cperl-block-p): Move, updatedfor attributes.
+       (cperl-calculate-indent): Try to allow '_' be non-word char
+               Support subs with attributes.
+       (cperl-where-am-i): Quiet (?) a warning.
+       (cperl-cached-syntax-table): New function.
+       (cperl-forward-re): Use `cperl-cached-syntax-table'.
+       (cperl-unwind-to-safe): Recognize `syntax-type' property
+               changing in a middle of line.
+       (cperl-find-sub-attrs): New function.
+       (cperl-find-pods-heres): Allow many <<EOP per line.
+               Allow subs with attributes.
+               Major speedups (3.5x..15x on a real-life test file nph-proxy.pl).
+               Recognize "extproc " (OS/2) case-folded and only at start.
+               /x on s///x with empty replacement was not recognized.
+               Better comments.
+       (cperl-after-block-p): Remarks on diff with `cperl-block-p'.
+               Allow subs with attributes, labels.
+               Do not confuse "else::foo" with "else".
+               Minor optimizations...
+       (cperl-after-expr-p): Try to allow '_' be non-word char.
+       (cperl-fill-paragraph): Try to detect a major bug in Emacs
+               with `looking-at' inside `narrow' and bulk out if found.
+       (cperl-imenu--create-perl-index): Updates for new
+               `cperl-imenu--function-name-regexp-perl'.
+       (cperl-outline-level): Likewise.
+       (cperl-init-faces): Allow multiline subroutine headers
+               and my/our declarations, and ones with comments.
+               Allow subroutine attributes.
+       (cperl-imenu-on-info): Better docstring.
+       (cperl-etags): Rudimentary support for attributes.
+               Support for packages and "package;".
+       (cperl-add-tags-recurse-noxs): Better (?) docstring.
+       (cperl-add-tags-recurse-noxs-fullpath): Likewise.
+       (cperl-tags-hier-init): Misprint for `fboundp' fixed.
+       (cperl-not-bad-style-regexp): Try to allow '_' be non-word char.
+       (cperl-perldoc): Add autoload.
+       (cperl-perldoc-at-point): Likewise.
+       (cperl-here-doc-spell): New function.
+       (cperl-pod-spell): Likewise.
+       (cperl-map-pods-heres): Likewise.
+       (cperl-get-here-doc-region): Likewise.
+       (cperl-font-lock-fontify-region-function): Likewise (backward
+               compatibility for legacy `font-lock').
+       (cperl-font-lock-unfontify-region-function): Fix style.
+       (cperl-fontify-syntaxically): Recognize and optimize away deferred
+               calls with no-change.  Governed by `cperl-hook-after-change'.
+       (cperl-fontify-update): Recognize that syntaxification region
+               can be larger than fontification one.
+               XXXX we leave `cperl-postpone' property, so this is quadratic...
+       (cperl-fontify-update-bad): Temporary placeholder until
+               it is clear how to implement `cperl-fontify-update'.
+       (cperl-time-fontification): New function.
+       (attrib-group): New text attribute.
+       (multiline): New value: `syntax-type' text attribute.
+
+       After 5.2:
+       (cperl-emulate-lazy-lock): New function.
+       (cperl-fontify-syntaxically): Would skip large regions.
+       Add `cperl-time-fontification', `cperl-emulate-lazy-lock' to menu.
+       Some globals were declared, but uninitialized.
+
+       After 5.3, 5.4:
+       (cperl-facemenu-add-face-function): Add docs, fix U<>.
+       Copyright message updated.
+       (cperl-init-faces): Work around a bug in `font-lock'. May slow
+                       facification down a bit.
+               Misprint for my|our|local for old `font-lock'
+                       "our" was not fontified same as "my|local".
+               Highlight variables after "my" etc even in
+                       a middle of an expression.
+               Do not facify multiple variables after my etc
+                       unless parentheses are present.
+
+       After 5.5, 5.6
+       (cperl-fontify-syntaxically): after-change hook could reset.
+       (cperl-syntax-done-to) to a middle of line; unwind to BOL.
+
+       After 5.7:
+       (cperl-init-faces): Allow highlighting of local ($/).
+       (cperl-problems-old-emaxen): New variable (for the use of DOCSTRING).
+       (cperl-problems): Remove fixed problems.
+       (cperl-find-pods-heres): Recognize #-comments in m##x too.
+               Recognize charclasses (unless delimiter is \).
+       (cperl-fontify-syntaxically): Unwinding to safe was done in wrong order.
+       (cperl-regexp-scan): Update docs.
+       (cperl-beautify-regexp-piece): Use information got from regexp scan.
+
+       After 5.8:
+       Major user visible changes:
+       Recognition and fontification of character classes in RExen.
+       Variable indentation of RExen according to groups.
+
+       (cperl-find-pods-heres): Recognize POSIX classes in REx charclasses.
+               Fontify REx charclasses in variable-name face.
+               Fontify POSIX charclasses in "type" face.
+               Fontify unmatched "]" in function-name face.
+               Mark first-char of HERE-doc as `front-sticky'.
+               Reset `front-sticky' property when needed.
+       (cperl-calculate-indent): Indents //x -RExen accordning to parens level.
+       (cperl-to-comment-or-eol): Recognize ends of `syntax-type' constructs.
+       (cperl-backward-to-noncomment): Recognize stringy `syntax-type'
+               constructs.  Support `narrow'ed buffers.
+       (cperl-praise): Remove a reservation.
+       (cperl-make-indent): New function.
+       (cperl-indent-for-comment): Use `cperl-make-indent'.
+       (cperl-indent-line): Likewise.
+       (cperl-lineup): Likewise.
+       (cperl-beautify-regexp-piece): Likewise.
+       (cperl-contract-level): Likewise.
+       (cperl-toggle-set-debug-unwind): New function.
+               New menu entry for this.
+       (fill-paragraph-function): Use when `boundp'.
+       (cperl-calculate-indent): Take into account groups when indenting RExen.
+       (cperl-to-comment-or-eol): Recognize # which end a string.
+       (cperl-modify-syntax-type): Make only syntax-table property non-sticky.
+       (cperl-fill-paragraph): Return t: needed for `fill-paragraph-function'.
+       (cperl-fontify-syntaxically): More clear debugging message.
+       (cperl-pod2man-build-command): Check (XEmacs) `Man-filter-list'.
+       (cperl-init-faces): More complicated highlight even on XEmacs (new).
+       Merge cosmetic changes from XEmacs.
+
+       After 5.9:
+       (cperl-1+): Move to before the first use.
+       (cperl-1-): Likewise.
+
+       After 5.10:
+
+       This code may lock Emacs hard!!!  Use at your own risk!
+
+       (cperl-font-locking): New internal variable.
+       (cperl-beginning-of-property): New function.
+       (cperl-calculate-indent): Use `cperl-beginning-of-property'
+       instead of `previous-single-property-change'.
+       (cperl-unwind-to-safe): Likewise.
+       (cperl-after-expr-p): Likewise.
+       (cperl-get-here-doc-region): Likewise.
+       (cperl-font-lock-fontify-region-function): Likewise.
+       (cperl-to-comment-or-eol): Do not call `cperl-update-syntaxification'
+                       recursively.
+               Bound `next-single-property-change' via `point-max'.
+       (cperl-unwind-to-safe): Bound likewise
+       (cperl-font-lock-fontify-region-function): Likewise.
+       (cperl-find-pods-heres): Mark as recursive for `cperl-to-comment-or-eol'
+               Initialization of `cperl-font-lock-multiline-start' could be
+               missed if the "main" fontification did not run due to the
+               keyword being already fontified.
+       (cperl-pod-spell): Return t from do-one-chunk function.
+       (cperl-map-pods-heres): Stop when the worker returns nil.
+               Call `cperl-update-syntaxification'.
+       (cperl-get-here-doc-region): Call `cperl-update-syntaxification'.
+       (cperl-get-here-doc-delim): Remove unused function.
+
+       After 5.11:
+
+       The possible lockup of Emacs (introduced in 5.10) fixed.
+
+       (cperl-unwind-to-safe): `cperl-beginning-of-property' won't return nil.
+       (cperl-syntaxify-for-menu): New customization variable.
+       (cperl-select-this-pod-or-here-doc): New function.
+       (cperl-get-here-doc-region): Extra argument.
+               Do not adjust pos by 1.
+
+       New menu entries
+               (Perl/Tools): Selection of current POD or HERE-DOC section.
+               (Debugging CPerl:) backtrace on fontification.
+
+       After 5.12:
+       (cperl-cached-syntax-table): Use `car-safe'.
+       (cperl-forward-re): Remove spurious argument SET-ST.
+               Add documentation.
+       (cperl-forward-group-in-re): New function.
+       (cperl-find-pods-heres): Find and highlight (?{}) blocks in RExen
+       (XXXX Temporary (?) hack is to syntax-mark them as comment).
+
+       After 5.13:
+       (cperl-string-syntax-table): Make { and } not-grouping
+         (Sometimes they ARE grouping in RExen, but matching them would only
+          confuse in many situations when they are not)
+       (beginning-of-buffer): Replace two occurrences with goto-char...
+       (cperl-calculate-indent): `char-after' could be nil...
+       (cperl-find-pods-heres): REx can start after "[" too.
+               Hightlight (??{}) in RExen too.
+       (cperl-maybe-white-and-comment-rex): New constant
+       (cperl-white-and-comment-rex): Likewise.
+               XXXX Not very efficient, but hard to make
+               better while keeping 1 group.
+
+       After 5.13:
+       (cperl-find-pods-heres): $foo << identifier() is not a HERE-DOC.
+               Likewise for 1 << identifier.
+
+       After 5.14:
+       (cperl-find-pods-heres): Different logic for $foo .= <<EOF etc.
+               Error-less condition-case could fail.
+       (cperl-font-lock-fontify-region-function): Likewise.
+       (cperl-init-faces): Likewise.
+
+       After 5.15:
+       (cperl-find-pods-heres): Support property REx-part2.
+       (cperl-calculate-indent): Likewise.
+               Don't special-case REx with non-empty 1st line.
+       (cperl-find-pods-heres): In RExen, highlight non-literal backslashes.
+               Invert highlighting of charclasses:
+                       now the envelop is highlighted.
+               Highlight many others 0-length builtins.
+       (cperl-praise): Mention indenting and highlight in RExen.
+
+       After 5.15:
+       (cperl-find-pods-heres): Highlight capturing parens in REx.
+
+       After 5.16:
+       (cperl-find-pods-heres): Highlight '|' for alternation
+       Initialize `font-lock-warning-face' if not present.
+       (cperl-find-pods-heres): Use `font-lock-warning-face' instead of
+                        `font-lock-function-name-face'.
+       (cperl-look-at-leading-count): Likewise.
+       (cperl-find-pods-heres): Localize `font-lock-variable-name-face',
+                       `font-lock-keyword-face' (needed for
+                       batch processing), etc...
+               Use `font-lock-builtin-face' for builtin in REx
+                       Now `font-lock-variable-name-face'
+                       is used for interpolated variables
+               Use "talking aliases" for faces inside REx
+               Highlight parts of REx (except in charclasses)
+                       according to the syntax and/or semantic
+               Syntax-mark a {}-part of (?{}) as "comment"
+                       (it was the ()-part)
+               Better logic to distinguish what is what in REx
+       (cperl-tips-faces): Document REx highlighting
+       (cperl-praise): Mention REx syntax highlight etc.
+
+       After 5.17:
+       (cperl-find-sub-attrs): Would not always manage to print error message.
+       (cperl-find-pods-heres): Localize `font-lock-constant-face'.
+
+       After 5.18:
+       (cperl-find-pods-heres): Misprint in REx for parsing REx.
+               Very minor optimization.
+               `my-cperl-REx-modifiers-face' got quoted.
+               Recognize "print $foo <<END" as HERE-doc.
+               Put `REx-interpolated' text attribute if needed.
+       (cperl-invert-if-unless-modifiers): New function.
+       (cperl-backward-to-start-of-expr): Likewise.
+       (cperl-forward-to-end-of-expr): Likewise.
+       (cperl-invert-if-unless): Works in "the opposite way" too.
+               Cursor position on return is on the switch-word.
+               Indents comments better.
+       (REx-interpolated): New text attribute.
+       (cperl-next-interpolated-REx): New function.
+       (cperl-next-interpolated-REx-0): Likewise.
+       (cperl-next-interpolated-REx-1): Likewise.
+       "\C-c\C-x", "\C-c\C-y", "\C-c\C-v": New keybinding for these functions.
+       Perl/Regexp menu: 3 new entries for `cperl-next-interpolated-REx'.
+       (cperl-praise): Mention finded interpolated RExen.
+
+       After 5.19:
+       (cperl-init-faces): Highlight %$foo, @$foo too.
+       (cperl-short-docs): Better docs for system, exec.
+       (cperl-find-pods-heres): Better detect << after print {FH} <<EOF etc.
+               Would not find HERE-doc ended by EOF without NL.
+       (cperl-short-docs): Correct not-doubled \-escapes.
+       start block: Put some `defvar' for stuff gone from XEmacs.
+
+       After 5.20:
+       initial comment: Extend copyright, fix email address.
+       (cperl-indent-comment-at-column-0): New customization variable.
+       (cperl-comment-indent): Indentation after $#a would increasy by 1.
+       (cperl-mode): Make `defun-prompt-regexp' grok BEGIN/END etc.
+       (cperl-find-pods-heres): Mark CODE of s///e as `syntax-type' `multiline'
+       (cperl-at-end-of-expr): Would fail if @BAR=12 follows after ";".
+       (cperl-init-faces): If `cperl-highlight-variables-indiscriminately'
+                       highlight $ in $foo too (UNTESTED).
+       (cperl-set-style): Docstring missed some available styles.
+       toplevel: Menubar/Perl/Indent-Styles had FSF, now K&R.
+               Change "Current" to "Memorize Current".
+       (cperl-indent-wrt-brace): New customization variable; the default is
+               as for pre-5.2 version.
+       (cperl-styles-entries): Keep `cperl-extra-newline-before-brace-multiline'.
+       (cperl-style-alist): Likewise.
+       (cperl-fix-line-spacing): Support `cperl-merge-trailing-else' being nil,
+               and `cperl-extra-newline-before-brace' etc
+               being t
+       (cperl-indent-exp): Plans B and C to find continuation blocks even
+               if `cperl-extra-newline-before-brace' is t.
+
+       After 5.21:
+       Improve some docstrings concerning indentation.
+       (cperl-indent-rules-alist): New variable.
+       (cperl-sniff-for-indent): New function name
+               (separated from `cperl-calculate-indent').
+       (cperl-calculate-indent): Separate the sniffer and the indenter;
+               uses `cperl-sniff-for-indent' now.
+       (cperl-comment-indent): Test for `cperl-indent-comment-at-column-0'
+               was inverted;
+               Support `comment-column' = 0.
+
+2006-10-11  Martin Rudalics  <rudalics@gmx.at>
+
+       * dnd.el (dnd-handle-one-url): Fix typo in doc-string.
+       * help-at-pt.el (scan-buf-move-to-region): Likewise.
+       * longlines.el (longlines-window-change-function): Likewise.
+       * simple.el (undo-ask-before-discard): Likewise.
+       * wid-edit.el (widget-field-prompt-internal)
+       (widget-documentation-link-p): Likewise.
+
+2006-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-get-kw): | is not among the allowed chars
+       for a keyword.
+
+2006-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * newcomment.el (comment-valid-prefix-p): Make the check
+       more thorough.  From an idea by Martin Rudalics <rudalics@gmx.at>.
+       (comment-indent-new-line): Adjust call.
+
+2006-10-09  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-back-to-current-heading): Base on lower-level
+       routines to get proper disqualification of aberrant topics.
+
+2006-10-09  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/two-column.el (2C-two-columns): Doc fix.
+
+2006-10-09  Kim F. Storm  <storm@cua.dk>
+
+       * shell.el (explicit-csh-args, explicit-bash-args): Add comment
+       about implicit use.
+
+2006-10-08  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/two-column.el (2C-two-columns): Doc fix.
+
+2006-10-08  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * files.el: Mark `buffer-read-only' as safe-local-variable.
+
+2006-10-08  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-speedbar-expand-node):
+       Burp if GUD buffer has been killed.
+
+2006-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * completion.el (add-completions-from-c-buffer):
+       Don't presume an error's second element is a string.
+       Use looking-at rather than buffer-substring + member.
+
+2006-10-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmail.el (rmail-redecode-body): If the old encoding is
+       `undecided', call find-coding-systems-region to find a proper
+       non-trivial encoding.
+       (rmail-mime-charset-pattern): Allow a TAB between "Content-Type"
+       and "text/plain".
+
+2006-10-07  Kevin Ryde  <user42@zip.com.au>
+
+       * textmodes/reftex-vars.el (defgroup reftex): Update home page
+       url-link.
+
+       * strokes.el (defgroup strokes): Remove invalid url-link.
+
+2006-10-07  Magnus Henoch  <mange@freemail.hu>
+
+       * autoinsert.el (auto-insert-alist): Doc fix.
+
+2006-10-07  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * mouse-sel.el (mouse-insert-selection-internal):
+       Use insert-for-yank, so that yank handlers are run.
+
+2006-10-07  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-file-extension-aux): Fix comparison.
+
+2006-10-06  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-wide-find-dirs-or-files): Use shell-quote-argument.
+
+2006-10-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/advice.el (ad-remove-advice, ad-parse-arglist)
+       (ad-make-mapped-call): Use `let', not `let*'.
+
+2006-10-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * international/mule-cmds.el (coding-system-change-eol-conversion):
+       Ensure the coding system is initialized before calling
+       coding-system-eol-type.
+
+2006-10-04  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-rm-props, org-activate-plain-links)
+       (org-activate-angle-links, org-activate-dates)
+       (org-activate-target-links, org-activate-camels)
+       (org-activate-tags): Add `rear-nonsticky' text property to avoid
+       textproperty keymaps from being active beyond the end of a line.
+       (org-unfontify-region): Also remove `rear-nonsticky' property.
+
+2006-10-04  Kenichi Handa  <handa@m17n.org>
+
+       * international/code-pages.el (next): Table fixed.
+
+2006-10-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-prev-thing): Remove (forward-char 1) now
+       that it's been made unnecessary by removing narrowing.
+
+2006-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-prev-thing): Massage to untangle the
+       control flow a bit, simplify another bit, and add comments.
+
+2006-10-03  David Kastrup  <dak@gnu.org>
+
+       * help.el (describe-mode): For clicks on mode-line, use "@"
+       interactive argument to get the major mode of the click instead of
+       the current buffer.
+
+       * isearch.el (isearch-mouse-2): Use new semantics of `key-binding'
+       in order to better redirect mouse-2 clicks.  Also allow default
+       bindings to apply.
+
+2006-10-03  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/cl.el (pushnew-internal): Remove defvar.
+       (pushnew): Fix last change.
+
+2006-10-03  Denis St\e,A|\e(Bnkel  <dstuenkel@googlemail.com>  (tiny change)
+
+       * ibuf-ext.el (eval, view-and-eval) <define-ibuffer-op>:
+       Use the interactive spec of `eval-expression'.
+
+2006-10-02  Michael Welsh Duggan  <md5i@cs.cmu.edu>
+
+       * progmodes/sh-script.el (sh-prev-thing): Fix last change.
+
+2006-10-02  MIYOSHI Masanori  <miyoshi@meadowy.org>  (tiny change)
+
+       * mail/smtpmail.el (smtpmail-try-auth-methods): Fix typo in
+       2006-09-28 commit.
+
+2006-10-02  Kenichi Handa  <handa@m17n.org>
+
+       * international/code-pages.el (iso-8859-6): Table fixed.
+
+2006-10-01  Chris Moore  <christopher.ian.moore@gmail.com>
+
+       * dired.el (dired-build-subdir-alist): Fix previous change.
+
+2006-10-01  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * simple.el (undo-elt-crosses-region): Fix the inequalities.
+
+2006-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/find-func.el (find-function-regexp): Don't match
+       "define-button-type".
+
+       * pcvs.el (cvs-update-header): Fix handling of extra newlines so that
+       they don't keep accumulating.
+
+2006-10-01  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
+
+       * ffap.el (ffap-rfc-path): Change the address of the RFC
+       repository to ftp.rfc-editor.org, as ds.internic.net seems to be gone.
+
+2006-10-01  Stephen Berman  <Stephen.Berman@gmx.net>
+
+       * allout.el (allout-expose-topic): Rectify implementation of "+"
+       spec, so that bodies are not exposed with headlines.
+
+2006-10-01  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-current-depth): Do aberrent check only at or
+       below doublecheck depth.
+       (allout-chart-subtree): Make it explicit that LEVELS being nil
+       means unlimited depth.  Drop undocumented support for LEVELS value
+       t meaning unlimited depth.  (This is consistent with
+       allout-chart-to-reveal, but contrary to allout-show-children,
+       which needs to use nil to default to depth of 1.)
+       (allout-goto-prefix-doublechecked): Wrap long docstring line.
+       (allout-chart-to-reveal): Be explicit in docstring about meaning
+       of nil LEVELS, and drop support for LEVELS value t.
+       (allout-show-children): Translate the level spec used by this
+       routine to that used by allout-chart-subtree and
+       allout-chart-to-reveal.
+       (allout-show-to-offshoot): Retry once when stuck, after opening
+       subtree - improvements in discontinuity handling likely will
+       enable progress.
+
+2006-09-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * wid-edit.el (widget-button-click-moves-point): New variable.
+       (widget-button-click): If widget-button-click-moves-point is
+       non-nil, set point after performing the button action.
+
+       * cus-edit.el (custom-mode): Set widget-button-click-moves-point.
+
+2006-09-30  Martin Rudalics  <rudalics@gmx.at>
+
+       * files.el (find-file-existing): Modify to not allow wildcards.
+
+2006-09-30  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * simple.el (undo-more): When undo information for the region is
+       exhausted, say "No further undo information FOR REGION".
+
+2006-09-30  Michael Welsh Duggan  <md5i@cs.cmu.edu>
+
+       * progmodes/sh-script.el (sh-prev-thing):
+       Take `sh-leading-keywords' into account.
+
+2006-09-29  Glenn Morris  <rgm@gnu.org>
+
+       * custom.el (defcustom): Doc fix.
+
+       * calendar/calendar.el (european-calendar-style):
+       Call european-calendar or american-calendar as needed when set.
+       (diary-view-entries, list-calendar-holidays): Move autoloads
+       before use.
+
+2006-09-29  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/cperl-mode.el (cperl-after-expr-p): Don't move point
+       to nil if there is no previous property change.
+
+2006-09-29  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * cus-edit.el (custom-save-all): Switch to emacs-lisp mode before
+       saving anything to be sure that `forward-sexp' behaves correctly.
+
+2006-09-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (line-move-finish): Ignore field boundaries if the
+       initial and final points have the same `field' property.
+
+2006-09-29  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-file-internal): Only bind minibuffer-completing-file-name
+       to t while calling ido-read-internal.
+
+2006-09-29  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-file-remote-p): Get regexp from list.
+       (org-archive-subtree): Remove erraneous `]' from character list.
+
+2006-09-28  Jonathan Yavner  <jyavner@member.fsf.org>
+
+       * ses.el (ses-in-print-area, ses-goto-data, ses-load)
+       (ses-reconstruct-all): Make undo of "insert row" work by keeping
+       markers for data-area and parameters-area.
+
+2006-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/make-mode.el (makefile-mode): Don't disable jit-lock.
+
+       * font-lock.el (font-lock-after-change-function): Refontify next line
+       as well if end is at BOL.
+       (font-lock-extend-jit-lock-region-after-change): Be more careful to
+       only extend the region as much as needed.
+
+2006-09-28  Richard Stallman  <rms@gnu.org>
+
+       * comint.el (comint-mode): Bind font-lock-defaults non-nil.
+
+       * subr.el (insert-for-yank-1): Handle `font-lock-face' specially.
+
+       * international/mule.el (after-insert-file-set-coding):
+       If VISIT, don't let set-buffer-multibyte make undo info.
+
+2006-09-28  Osamu Yamane  <yamane@green.ocn.ne.jp>  (tiny change)
+
+       * mail/smtpmail.el (smtpmail-try-auth-methods): Do not break long
+       lines in base64-encoded authentication response.
+
+2006-09-26  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * progmode/ebnf2ps.el: Doc fix. Implement arrow spacing and scaling.
+       (ebnf-version): New version 4.3.
+       (ebnf-arrow-extra-width, ebnf-arrow-scale): New options.
+       (ebnf-prologue): Adjust PostScript programming.
+       (ebnf-begin-file, ebnf-insert-ebnf-prologue, ebnf-terminal-dimension1)
+       (ebnf-repeat-dimension, ebnf-except-dimension): Adjust code.
+
+2006-09-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * jit-lock.el (jit-lock-force-redisplay): Rename from
+       jit-lock-fontify-again, and undo the mistaken change I've just done.
+
+       * jit-lock.el (jit-lock-fontify-now): Don't fontify the empty text.
+       (jit-lock-fontify-again): Don't refontify text that's not displayed.
+
+2006-09-26  Kenichi Handa  <handa@m17n.org>
+
+       * startup.el (display-splash-screen): Allow a prefix argument.
+
+2006-09-25  Jason Rumney  <jasonr@gnu.org>
+
+       * subr.el (shell-quote-argument): Use DOS logic for Windows
+       shells with DOS semantics.
+
+2006-09-24  Richard Stallman  <rms@gnu.org>
+
+       * progmodes/compile.el (compilation-goto-locus-delete-o): New fn.
+       (compilation-goto-locus): Use compilation-goto-locus-delete-o
+       to delete the overlay.  Put it on pre-command-hook.
+
+       * emacs-lisp/timer.el (timer-max-repeats): Doc fix.
+
+       * startup.el (fancy-splash-screens, normal-splash-screen):
+       Call the splash buffer *About GNU Emacs*.
+
+       * simple.el (next-error-highlight, next-error-highlight-no-select):
+       Default to 0.5.
+       (yank-excluded-properties): Add `fontified'.
+
+       * font-lock.el (font-lock-compile-keywords): Allow value of
+       syntax-begin-function to enable paren-column-0 highlighting.
+
+2006-09-24  Chris Moore  <christopher.ian.moore@gmail.com>
+
+       * dired.el (dired-build-subdir-alist): When file ends in colon,
+       don't exit the loop, just disregard that file.
+
+2006-09-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (line-move-finish): Handle corner case for fields in
+       continued lines.
+       (line-move-1): Remove flawed test for that case.
+
+2006-09-24  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * icomplete.el (icomplete-simple-completing-p): Use the correct
+       name for the new variable, `icomplete-with-completion-tables'.
+       (file local variables): Remove superfluous setting.
+
+2006-09-23  Jeff Miller  <jmiller@cablespeed.com>  (tiny change)
+
+       * calendar/appt.el (appt-check): Fix typo for appointments just
+       after midnight.
+
+2006-09-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * help.el (describe-key-briefly, describe-key): Don't expect an
+       extra up event if a down-event is generated by a popup menu.
+
+2006-09-23  Michal Nazarewicz  <mnazarewicz@gmail.com>  (tiny change)
+
+       * textmodes/ispell.el (ispell-change-dictionary): Don't check the
+       local dictionary when changing the global dictionary.
+
+2006-09-23  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * icomplete.el (icomplete-with-completion-tables): List of
+       specialized completion tables with which icomplete should
+       operate.  Include the new `internal-complete-buffer', so icomplete
+       works with interactive buffer-selection.
+       (icomplete-simple-completing-p): Add acceptance of specialized
+       completion tables listed in icomplete-with-completion-tables.
+
+2006-09-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * frame.el (focus-follows-mouse): Set default to nil on Mac.
+
+       * startup.el (command-line): Use `custom-reevaluate-setting' for
+       `focus-follows-mouse'.
+
+2006-09-22  Richard Stallman  <rms@gnu.org>
+
+       * cus-edit.el (custom-buffer-create-internal): In `emacs -q',
+       explain why Save is not available.
+
+2006-09-22  Juanma Barranquero  <lekktu@gmail.com>
+
+       * woman.el (woman0-so): Use `let*', not `let'.
+       (woman-horizontal-line): Remove unbalanced parenthesis.
+
+2006-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * woman.el: Make sure all the end-of-region markers we use have
+       a non-nil insertion-type.
+       (woman0-so): Move things around so we can use copy-marker.
+       (woman0-roff-buffer, woman2-process-escapes-to-eol, woman2-roff-buffer):
+       Adjust marker type.
+       (woman2-process-escapes): Check marker type.
+       (woman-horizontal-line): Dispense with the use of a marker.
+
+2006-09-22  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-lang.el: Add Greek letters to math-variable-table
+       property of tex.
+
+2006-09-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el (save-some-buffers-action-alist): Display diff in view-mode.
+
+2006-09-22  Masatake YAMATO  <jet@gyve.org>
+
+       * add-log.el (add-log-current-defun): Use `forward-sexp'
+       instead of `forward-word' to pick c++::symbol.
+       Reported by Guanpeng Xu <herberteuler@hotmail.com>.
+
+2006-09-22  Kenichi Handa  <handa@m17n.org>
+
+       * bindings.el: Fix setting self-insert-command for multibyte
+       characters in global-map.
+
+2006-09-21  David Kastrup  <dak@gnu.org>
+
+       * mouse.el (mouse-posn-property): Fix typo for `event-start' in
+       doc string.
+
+2006-09-21  Kenichi Handa  <handa@m17n.org>
+
+       * language/european.el ("Latin-1"): Add windows-1252 to
+       coding-priority.
+       ("German"): Likewise.
+
+2006-09-21  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/cl-macs.el (member*): Use memql instead of complex code.
+       Suggested by Miles Bader.
+
+       * emacs-lisp/cl.el (pushnew): Rework 2006-09-10 change.  Use memql
+       instead of add-to-list in the simple case.
+
+2006-09-20  Kenichi Handa  <handa@m17n.org>
+
+       * isearch.el (isearch-process-search-char): Cancel the previous change.
+       (isearch-search-string): New function.
+       (isearch-search): Use isearch-search-string.
+       (isearch-lazy-highlight-search): Likewise.
+
+2006-09-20  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * lpr.el (lpr-page-header-switches): Insert `*' at beginning of doc
+       string to become an option.
+
+2006-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files.el (find-buffer-visiting): Don't get fooled by a nil inode.
+
+2006-09-20  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move-partial): Call pos-visible-in-window-p with
+       position t instead of trying both window-end and window-end - 1.
+
+2006-09-20  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-scan-tags): Find end of subtrees also in
+       hidden trees.
+
+2006-09-20  David Kastrup  <dak@gnu.org>
+
+       * mouse.el (mouse-posn-property): Improve doc string.
+       (mouse-on-link-p): Change buffers for function calls on links.
+
+       * menu-bar.el (clipboard-yank): Bomb out in interactive use if
+       buffer is read-only.
+
+2006-09-20  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-unprotected): Let inhibit-read-only only when
+       buffer-read-only isn't set.
+       (allout-annotate-hidden): Enable topic annotation during copies even
+       when the buffer is read-only, eg for topic copies.  Ensure that the loop
+       advances, even when the span extends beyond the deletion region.
+       (allout-toggle-subtree-encryption): Use allout-structure-added-hook
+       rather than allout-exposure-changed-hook, as a stronger assertion.
+       (allout-keybindings-list): Add bindings for
+       allout-copy-line-as-kill and allout-copy-topic-as-kill.
+       (allout-copy-line-as-kill, allout-copy-topic-as-kill):
+       Copy wrappers for allout-kill-line and allout-kill-topic.
+       (allout-listify-exposed): Position correctly to accumulate lines.
+
+2006-09-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (line-move-1): Escape field boundaries occurring
+       exactly at point.  Update goal column if constrained to a field.
+       (line-move-finish): Escape field boundaries occurring exactly at point.
+
+2006-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mouse.el (mouse-on-link-p): Tentatively fix last change.
+       (mouse-drag-vertical-line): Remove unused var `wconfig'.
+
+2006-09-19  Kim F. Storm  <storm@cua.dk>
+
+       * help.el (describe-key-briefly, describe-key): Simplify printing
+       of descriptions by using format and %S.  Fix "is undefined"
+       messages to say "at that spot" for mouse events.
+
+       * simple.el (line-move-partial): Optimize.  Try window-line-height
+       before posn-at-point to get vpos of current line.
+
+2006-09-18  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper.el: Bump up version/date of update to reflect the substantial
+       changes done in August 2006.
+
+       * viper-cmd (viper-next-line-at-bol): Make sure button-at, push-button
+       are defined.
+
+       * ediff-util.el (ediff-add-to-history): New function.
+
+       * ediff.el: Use ediff-add-to-history instead of add-to-history.
+
+2006-09-18  Wolfgang Jenkner  <wjenkner@inode.at>  (tiny change)
+
+       * textmodes/conf-mode.el (conf-space-mode): Doc fix.
+       Delete duplicate make-local-variable form.
+       (conf-space-keywords): Add autoload cookie.
+       Fix typo (`keywords', not `keyword').
+
+2006-09-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * cus-start.el (all): Rename x-gtk-show-chooser-help-text to
+       x-gtk-file-dialog-help-text.  Rename x-use-old-gtk-file-dialog
+       to x-gtk-use-old-file-dialog.
+
+2006-09-18  Richard Stallman  <rms@gnu.org>
+
+       * wid-edit.el (widget-button-click): Handle non-mouse-motion events
+       that might come in during mouse tracking.
+
+2006-09-18  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move-partial): Rework 2006-09-15 change to use
+       new window-line-height function.  Further optimize by not calling
+       pos-visible-in-window-p for window-end when window-line-height
+       returns useful information.
+
+2006-09-16  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/conf-mode.el (conf-mode-map): Use conf-space-keywords cmd.
+       (conf-space-mode): Don't handle prefix arg.
+       Delete conf-space-keywords-override code.
+       Use add-hook.
+       (conf-space-keywords): New command.
+       (conf-space-mode-internal): Be careful with imenu-generic-expression.
+       Delete conf-space-keywords-override code.
+       (conf-space-keywords-alist): Doc fix.
+       (conf-space-font-lock-keywords): Doc fix.
+       (conf-space-keywords-override): Var deleted.
+
+2006-09-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * startup.el (fancy-splash-screens): Don't switch to the scratch
+       buffer; it may not be the next buffer.
+
+2006-09-16  Romain Francoise  <romain@orebokech.com>
+
+       * saveplace.el (load-save-place-alist-from-file): Use expanded name
+       in both messages.
+
+2006-09-16  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>
+
+       * progmodes/python.el (python-preoutput-filter):
+       Fix arg order to string-match.
+
+2006-09-16  Richard Stallman  <rms@gnu.org>
+
+       * obsolete/fast-lock.el (fast-lock-cache-data): Provide 2nd arg to
+       font-lock-compile-keywords.
+
+       * font-lock.el (font-lock-compile-keywords): Rename optional arg
+       to SYNTACTIC-KEYWORDS and reverse the sense.  All callers changed.
+
+2006-09-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * cus-start.el (all): Add x-gtk-show-chooser-help-text.
+
+       * select.el (xselect-convert-to-string): If UTF8_STRING is requested
+       and the data doesn't look like UTF8, send STRING instead.
+
+2006-09-16  Agust\e,Am\e(Bn Mart\e,Am\e(Bn  <agustin.martin@hispalinux.es>
+
+       * textmodes/flyspell.el (flyspell-check-region-doublons):
+       New function to detect duplicated words.
+       (flyspell-large-region): Use it.
+
+2006-09-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (line-move-to-column): Revert 2006-08-03 change.
+
+2006-09-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * help.el (describe-prefix-bindings): Use let, not let*.
+
+2006-09-16  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-regexp, allout-line-boundary-regexp)
+       (allout-bob-regexp): Correct grouping and boundaries to fix
+       backwards traversal.
+       (allout-depth-specific-regexp, allout-depth-one-regexp):
+       New versions that exploit \\{M\\} regexp syntax, to avoid geometric or
+       worse time in allout-ascend.
+       (allout-doublecheck-at-and-shallower): Identify depth threshold
+       below which topics are checked for and disqualified by containment
+       discontinuities.
+       (allout-hotspot-key-handler): Correctly handle multiple-key
+       strokes.  Remove some unused variables.
+       (allout-mode-leaders): Clarify that mode-specific comment-start
+       will be used.
+       (set-allout-regexp): Correctly regexp-quote allout regexps to
+       properly accept alternative header-leads and primary bullets with
+       regexp-specific characters (eg, C "/*", mathematica "(*").
+       Include new regular expressions among those configured.
+       (allout-infer-header-lead-and-primary-bullet):
+       Rename allout-infer-header-lead.
+       (allout-recent-depth): Manifest as a variable as well as a function.
+       (allout-prefix-data): Simplify into an inline instead of a macro,
+       assuming current match data rather than being explicitly passed
+       it.  Establish allout-recent-depth value as well as
+       allout-recent-prefix-beginning and allout-recent-prefix-end.
+       (allout-aberrant-container-p): True when an item's immediate
+       offspring discontinuously contained.  Useful for disqualifying
+       unintended topic prefixes, likely at low depths.
+       (allout-goto-prefix-doublechecked): Elaborate version of
+       allout-goto-prefix which disqualifies aberrant pseudo-items.
+       (allout-pre-next-prefix): Layer on top of lower-level routines, to
+       get disqualification of aberrant containers.
+       (allout-end-of-prefix, allout-end-of-subtree): Disqualify aberrant
+       containers.
+       (allout-beginning-of-current-entry): Position at start of buffer
+       when in container (depth 0) entry.
+       (nullify-allout-prefix-data): Invalidate allout-recent-* prefix data.
+       (allout-current-bullet): Strip text properties.
+       (allout-get-prefix-bullet): Use right match groups.
+       (allout-beginning-of-line, allout-next-heading):
+       Disqualify aberrant containers.
+       (allout-previous-heading): Disqualify aberrant containers, and
+       change to regular (rather than inline) function, to allow
+       self-recursion.
+       (allout-get-invisibility-overlay): Increment so progress is made
+       when the first overlay is not the sought one.
+       (allout-end-of-prefix): Disqualify aberrant containers.
+       (allout-end-of-line): Cycle something like allout-beginning-of-line.
+       (allout-mode): Make allout-old-style-prefixes (ie, enabling use with
+       outline.el outlines) functional again.  Change the primary bullet
+       along with the header-lead - level 1 new-style bullets now work.
+       Engage allout-before-change-handler in mainline Emacs, not just
+       XEmacs, to do undo handling.
+       (allout-before-change-handler): Expose undo changes occurring in
+       hidden regions.  Use allout-get-invisibility-overlay instead of
+       reimplementing it inline.
+       (allout-chart-subtree): Use start rather than end of prefix in
+       charts.  Use allout-recent-depth variable.
+       (allout-chart-siblings): Disqualify aberrant topics.
+       (allout-beginning-of-current-entry): Position correctly.
+       (allout-ascend): Use new allout-depth-specific-regexp and
+       allout-depth-one-regexp for linear instead of O(N^2) or worse
+       behavior.
+       (allout-ascend-to-depth): Depend on allout-ascend, rather than
+       reimplementing an algorithm.
+       (allout-up-current-level): Depend on allout-ascend, rather than
+       reimplementing an algorithm.  Return to start-point if we fail.
+       (allout-descend-to-depth): Use allout-recent-depth variable
+       instead of function.
+       (allout-next-sibling): On traversal of numerous intervening
+       topics, resort to economical allout-next-sibling-leap.
+       (allout-next-sibling-leap): Specialized version of
+       allout-next-sibling that uses allout-ascend cleverly, to depend on
+       a regexp search to leap large numbers of contained topics, rather
+       than arbitrarily many one-by-one traversals.
+       (allout-next-visible-heading): Disqualify aberrant topics.
+       (allout-previous-visible-heading): Position consistently when
+       interactive.
+       (allout-forward-current-level): Base on allout-previous-sibling
+       rather than (differently) reimplmenting the algorithm.  Remove some
+       unused variables.
+       (allout-solicit-alternate-bullet): Present default choice stripped
+       of text properties.
+       (allout-rebullet-heading): Use bullet stripped of text properties.
+       Register changes using allout-exposure-change-hook.
+       Disregard aberrant topics.
+       (allout-shift-in): With universal-argument, make topic a peer of
+       it's former offspring.  Simplify the code by separating out
+       allout-shift-out functionality.
+       (allout-shift-out): With universal-argument, make offspring peers
+       of their former container, and its siblings.  Implement the
+       functionality here, rather than inappropriately muddling the
+       implementation of allout-shift-in.
+       (allout-rebullet-topic): Respect additional argument for new
+       parent-child separation function.
+       (allout-yank-processing): Use allout-ascend directly.
+       (allout-show-entry): Disqualify aberrant topics.
+       (allout-show-children): Handle discontinuous children gracefully,
+       extending the depth being revealed to expose them and posting a
+       message indicating the situation.
+       (allout-show-to-offshoot): Remove obsolete and incorrect comment.
+       Leave cursor in correct position.
+       (allout-hide-current-subtree): Use allout-ascend directly.
+       Disqualify aberrant topics.
+       (allout-kill-line, allout-kill-topic): Preserve exposure layout in
+       a way that the yanks can restore it, as used to happen.
+       (allout-yank-processing): Restore exposure layout as recorded by
+       allout-kill-*, as used to happen.
+       (allout-annotate-hidden, allout-hide-by-annotation): New routines
+       for preseving and restoring exposure layout across kills.
+       (allout-toggle-subtree-encryption): Run allout-exposure-change-hook.
+       (allout-encrypt-string): Strip text properties.
+       Rearranged order and outline-headings for some of the
+       miscellaneous functions.
+       (allout-resolve-xref): No need to quote the error name in the
+       condition-case handler section.
+       (allout-flatten): Classic recursive (and recursively intensive,
+       without tail-recursion) list-flattener, needed by allout-shift-out
+       when confronted with discontinuous children.
+
+2006-09-16  Jason Rumney  <jasonr@gnu.org>
+
+       * dnd.el (dnd-open-remote-file-function): Use dnd-open-local-file
+       on ms-windows.
+       (dnd-open-unc-file): Remove.
+       (dnd-open-local-file): Mention in doc string that it also handles
+       remote files if the system natively supports unc file-names.
+
+2006-09-15  Kim F. Storm  <storm@cua.dk>
+
+       * help.el (describe-key): Handle C-h k in *Help* buffer; collect
+       all necessary information about the event before erasing *Help*.
+
+       * simple.el (line-move-partial): Use window-line-visiblity to
+       quickly check whether last line is partially visible, and only do
+       the hard (and slow) part in that case.
+
+2006-09-15  Jay Belanger  <belanger@truman.edu>
+
+       * COPYING: Replace "Library Public License" by "Lesser Public
+       License" throughout.
+
+2006-09-15  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el (x-menu-bar-open): New function for F10.
+
+2006-09-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist):
+       Disallow filenames containing " -" to avoid confusion with libtool
+       compilation messages.  Suggested by Stefan Monnier.
+
+2006-09-15  David Kastrup  <dak@gnu.org>
+
+       * mouse-sel.el (mouse-sel-follow-link-p): Use event position
+       instead of buffer position for `mouse-on-link-p'.
+
+       * mouse.el (mouse-posn-property): New function looking up the
+       properties at a click position in overlays and text properties in
+       either buffer or strings.
+       (mouse-on-link-p): Use `mouse-posn-property' to streamline lookup
+       of both `follow-link' as well as `mouse-face' properties.
+       (mouse-drag-track): Check `mouse-on-link-p' on event position, not
+       buffer position.
+
+       * help.el (describe-key-briefly): When reading a down-event on
+       mode lines or scroll bar, swallow the following up event, too.
+       Use the new mouse sensitivity of `key-binding' for lookup.
+       (describe-key): The same here.
+
+2006-09-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * play/life.el (life-patterns): Add a few more interesting patterns.
+       (life-setup): Force `show-trailing-whitespace' to nil.
+
+2006-09-14  Richard Stallman  <rms@gnu.org>
+
+       * startup.el (fancy-splash-text): Change text to improve alignment.
+       (fancy-splash-screens): Don't set non-standard tab width.
+       Bind cursor-type temporarily, and make it easy to patch to
+       preserve the splash buffer.
+       (normal-splash-screen, fancy-splash-tail): Spell out "Meta-x".
+       (fancy-splash-screens): Display echo-area message explicitly.
+       Don't set fancy-splash-help-echo.
+
+       * simple.el (line-number-mode): Group mode-line instead of
+       editing-basics.
+       (column-number-mode, size-indication-mode): Likewise.
+
+       * faces.el (mode-line-faces): Group mode-line instead of modeline.
+
+       * time.el (display-time): Group mode-line instead of modeline.
+
+       * cus-edit.el (mode-line): Rename from modeline.  All uses changed.
+
+2006-09-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * startup.el (fancy-splash-text): Move editing instructions to
+       fancy-splash-head.
+       (fancy-splash-head): Issue editing instructions.
+       (fancy-splash-screens): Fixup whitespace.
+
+2006-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * bindings.el (mode-line-buffer-identification-keymap):
+       Remove duplicate line.
+
+2006-09-14  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * ido.el (ido-ignore-item-p): Allow any kind of functions in
+       ignore lists.
+
+2006-09-14  Kim F. Storm  <storm@cua.dk>
+
+       * jit-lock.el (jit-lock-fontify-again): New function.
+       (jit-lock-fontify-now): Use it instead of lambda form.
+
+2006-09-13  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/flyspell.el (flyspell-word, flyspell-correct-word)
+       (flyspell-auto-correct-word): Make ispell-filter local to these
+       functions.  Check that ispell-filter has new stuff before calling
+       ispell-parse-output.
+
+2006-09-13  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move-partial): Optimize.
+
+2006-09-13  Richard Stallman  <rms@gnu.org>
+
+       * thingatpt.el (thing-at-point-bounds-of-url-at-point):
+       Delete spurious backquote.
+
+2006-09-07  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-print): Fix last change.
+
+2006-09-12  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-dispatch): Remove unnecessary `sit-for'.
+
+2006-09-07  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-scroll-show-maximum-output): Rename from
+       rcirc-show-maximum-output.
+       (rcirc-mode): Remove window-scroll-function hook.
+       (rcirc-scroll-to-bottom): Remove function.
+       (rcirc-print): Recenter so point stays at the bottom of the window
+       if point was already there.
+
+2006-09-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * comint.el (comint-exec-1): Set EMACS to the full name of Emacs,
+       not to "t".
+       * progmodes/compile.el (compilation-start): Likewise.
+       * progmodes/idlwave.el (idlwave-rescan-asynchronously):
+       Don't use expand-file-name on invocation-directory, since this
+       might mishandle special characters in invocation-directory.
+
+2006-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs-defs.el: Remove * in defcustom's docstrings.
+
+2006-09-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/compile.el (compilation-directory-properties):
+       Doc fix for help-echo.
+
+2006-09-12  Lars Hansen  <larsh@soem.dk>
+
+       * desktop.el (desktop-read): Add comment.
+
+2006-09-12  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (next-error-highlight, next-error-highlight-no-select):
+       Fix spelling error.
+
+       * subr.el (sit-for): Rework to use input-pending-p and cond.
+       Return nil input is pending on entry also for SECONDS <= 0.
+       (while-no-input): Use input-pending-p instead of sit-for.
+
+2006-09-11  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (next-error-highlight, next-error-highlight-no-select):
+       Fix custom type and doc strings.
+
+2006-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * diff-mode.el (diff-apply-hunk-to-backup-file): New var.
+       (diff-apply-hunk): Use it to ask for confirmation.
+
+2006-09-11  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * emacs-lisp/cl.el (pushnew): Add missing `,'.
+
+2006-09-11  David Kastrup  <dak@gnu.org>
+
+       * help.el (string-key-binding, describe-key-briefly)
+       (describe-key): Remove `string-key-binding' and its callers since
+       `key-binding' already caters for the proper lookup now.
+
+2006-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/cfengine.el (cfengine-font-lock-syntactic-keywords): Newvar.
+       (cfengine-mode): Use it.  Fix \ syntax to be like /.
+
+       * bindings.el (mode-line-buffer-identification-keymap):
+       Move initialization into declaration.
+
+2006-09-10  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-edit-input, ido-complete, ido-take-first-match)
+       (ido-push-dir-first, ido-kill-buffer-at-head, ido-exhibit)
+       (ido-delete-file-at-head): Pass head of ido-matches through ido-name
+       in case of merged directories.  Reported by Micha\e,Ak\e(Bl Cadilhac.
+
+2006-09-10  Richard Stallman  <rms@gnu.org>
+
+       * dired-aux.el: Handle errors in recursive copy usefully.
+       (dired-create-files-failures): New variable.
+       (dired-copy-file): Remove condition-case.
+       (dired-copy-file-recursive): Check for errors on all file
+       operations, and add them to dired-create-files-failures.
+       Check file file-date-erorr here too.
+       (dired-create-files): Check dired-create-files-failures
+       and report those errors too.
+
+       * emacs-lisp/cl.el (pushnew): Use add-to-list when convenient.
+
+       * subr.el (add-to-list): New argument COMPARE-FN.
+
+2006-09-10  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * filecache.el (file-cache-add-directory)
+       (file-cache-add-directory-list, file-cache-add-file)
+       (file-cache-add-directory-using-find)
+       (file-cache-add-directory-using-locate)
+       (file-cache-add-directory-recursively): Add autoloads.
+
+2006-09-09  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/conf-mode.el (conf-space-mode):
+       Use hack-local-variables-hook instead of calling hack-local-variables.
+       (conf-space-keywords-override): New variable.
+       (conf-space-mode-internal): New subroutine.  Reinit Font Lock mode.
+       (conf-space-mode): Always make conf-space-keywords and
+       conf-space-keywords-override local.
+       Call conf-space-mode-internal directly as well as via hook.
+
+2006-09-09  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>  (tiny change)
+
+       * progmodes/python.el (python-font-lock-keywords): Add `self' and other
+       quasi-keywords.
+
+2006-09-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/python.el: Quieten the compiler about hippie-expand vars.
+       (python-send-string): Be slightly more careful about adding \n.
+
+       * startup.el (normal-splash-screen): Don't display the buffer if we'll
+       kill it right away anyway.
+
+2006-09-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/codepage.el (cp850-decode-table): Fix a few codes.
+       (cp858-decode-table): New variable.
+
+2006-09-09  Toby Allsopp  <Toby.Allsopp@navman.com>  (tiny change)
+
+       * net/ldap.el (ldap-search-internal): Doc fix.
+
+2006-09-09  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * play/life.el (life-display-generation): Test for input manually if
+       `sleeptime' is negative or null.
+
+       * lpr.el (lpr-page-header-switches): Page title switch is one of them.
+       (print-region-1): Substitute `%s' with the page title.
+
+2006-09-09  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * locate.el (locate-current-search): New variable.
+       (locate): Set buffer local value.  Use current buffer if it is
+       in Locate mode.
+       (locate-mode): Disable undo here.
+       (locate-do-setup): Use locate-current-filter from buffer to be killed.
+       (locate-update): Use locate-current-search and locate-current-filter.
+
+2006-09-08  David Kastrup  <dak@gnu.org>
+
+       * desktop.el (desktop-read): When loading a desktop, disable
+       saving it while the load progresses, and switch off a pending lazy
+       load by calling `desktop-lazy-abort'.
+
+2006-08-27  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (mouse-autoselect-window-timer)
+       (mouse-autoselect-window-position)
+       (mouse-autoselect-window-window)
+       (mouse-autoselect-window-now): New vars.
+       (mouse-autoselect-window-cancel)
+       (mouse-autoselect-window-select)
+       (mouse-autoselect-window-start): New functions.
+       (handle-select-window): Call `mouse-autoselect-window-start' when
+       delayed window autoselection is enabled.
+
+       * cus-start.el (mouse-autoselect-window): Handle delayed window
+       autoselection.
+
+       * emacs-lisp/eldoc.el: Add `handle-select-window' to the set of
+       commands after which it is allowed to print in the echo area.
+
+2006-09-08  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/fill.el (adaptive-fill-regexp): Don't match `(1)' or `1.'
+
+       * mail/rmail.el (rmail-get-new-mail): Say whether all msgs are spam.
+       (rmail-convert-to-babyl-format): Don't record undo, leave list empty.
+
+       * emacs-lisp/timer.el (timer-create, timer-activate): Doc fixes.
+       (cancel-timer-internal): Add doc string.
+       (cancel-function-timers): Doc fix.
+       (with-timeout-handler, timer-event-last*): Add doc strings.
+
+       * emacs-lisp/bindat.el (bindat-unpack): Doc fix.
+
+       * files.el (risky-local-variable-p): Match ...-bindat-spec.
+
+       * dired.el (dired-log-summary): Add doc string.
+
+       * cus-edit.el (custom-menu-create): Bind deactivate-mark here.
+       (custom-group-menu-create): Not here.
+
+2006-09-08  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-dblock-write:clocktable): Avoid infinite loop.
+
+2006-09-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (show-hide-font-panel): New HI command ID symbol.
+       (mac-apple-event-map): Define its handler.
+
+2006-09-07  Toby Allsopp  <Toby.Allsopp@navman.com>  (tiny change)
+
+       * net/ldap.el (ldap-search-internal): Handle `auth' key.
+
+2006-09-07  Magnus Henoch  <mange@freemail.hu>
+
+       * net/rcirc.el (rcirc-activity-string): Don't quote value in case
+       clause.
+
+2006-09-07  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * info.el (Info-index): Bind completion-ignore-case.
+
+2006-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/prolog.el (inferior-prolog-flavor): New var left out of
+       previous commit.
+       (inferior-prolog-guess-flavor): New fun left out of previous commit.
+       (prolog-consult-region-and-go): Don't hard code "*prolog*" and don't
+       burp in dedicated windows.
+       (inferior-prolog-self-insert-command): New command.
+       (inferior-prolog-mode-map): Use it.
+
+2006-09-07  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * international/latexenc.el (latex-inputenc-coding-alist): Add cp858.
+
+       * international/code-pages.el: Add cp858.
+
+2006-09-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * dnd.el: Fix bootstrapping.
+
+2006-09-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle.
+       (dnd-open-remote-url): New function.
+       (dnd-open-remote-file-function): Set to dnd-open-remote-url if
+       not windows-nt.
+
+2006-09-07  Jason Rumney  <jasonr@gnu.org>
+
+       * dnd.el (dnd-open-remote-file-function): New variable.
+       (dnd-open-unc-file): New function.
+       (dnd-open-file): Call dnd-open-remote-file-function if set.
+
+2006-09-06  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-gpg.el (pgg-gpg-process-region): Encode passphrase with
+       pgg-passphrase-coding-system rather than locale-coding-system.
+       * pgg-def.el (pgg-passphrase-coding-system): New user option.
+
+2006-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/prolog.el: Remove * in docstrings.
+       (prolog-program-name): Add SWI prolog.
+       (prolog-mode-menu): New menu.
+       (prolog-mode): Set comment-add.
+       (prolog-indent-line): Simplify.  Use indent-line-to.
+       (inferior-prolog-buffer): New var.
+       (inferior-prolog-run, inferior-prolog-process): New funs.
+       (run-prolog, switch-to-prolog): Rewrite, using them.
+       (prolog-consult-region): Use inferior-prolog-buffer.
+       (inferior-prolog-load-file): New function.
+       (prolog-mode-map): Add bindings for load-file and switch-to-prolog.
+
+       * textmodes/fill.el (fill-single-word-nobreak-p): Allow breaking before
+       last word, if it's not the end of the paragraph.
+
+       * files.el (abbreviate-file-name): Don't mistakenly match newlines in
+       file name.
+
+2006-09-06  Ralf Angeli  <angeli@caeruleus.net>
+
+       * frame.el (display-mm-dimensions-alist): New defcustom.
+       (display-mm-height, display-mm-width): Use it.
+
+2006-09-06  Simon Josefsson  <jas@extundo.com>
+
+       * mail/smtpmail.el (smtpmail-starttls-credentials): Doc fix.
+
+2006-09-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-list-children-regexp)
+       (gdb-var-list-children-regexp-1): Tweak regexps to catch full
+       string values.
+
+2006-09-06  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move-partial): New function to do vscrolling for
+       partially visible images / tall lines.  Rewrite based on code
+       previously in line-move.  Simplify backwards vscrolling.
+       (line-move): Use it.  Simplify.
+
+2006-09-05  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua--pre-command-handler-1): Rewrite.
+
+2006-09-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist):
+       Process the `gcc-include' after the `gnu' rule.
+
+2006-09-05  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-visit-buffer): Use buffer name if buffer arg is a buffer.
+
+2006-09-05  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg.el (pgg-clear-string): Alias to clear-string for backward
+       compatibility.
+
+       * pgg-gpg.el (pgg-gpg-process-region): Avoid display blinking with
+       inhibit-redisplay; encode passphrase with locale-coding-system.
+
+2006-09-04  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Add more C-M- bindings.
+
+2006-09-05  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-list-children-regexp)
+       (gdb-var-list-children-regexp): Make type field optional.
+
+       * progmodes/gud.el (gud-speedbar-buttons): Allow for no type
+       e.g public, protected in C++.
+
+2006-09-04  John Paul Wallington  <jpw@pobox.com>
+
+       * simple.el (completion-show-help): New defcustom.
+       (completion-setup-function): Heed it.
+
+2006-09-04  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Add C-M- bindings.
+
+2006-09-04  Richard Stallman  <rms@gnu.org>
+
+       * mail/rmail-spam-filter.el (rsf-scanning-messages-now): Doc fix.
+       (rsf-min-region-to-spam-list): Doc fix.
+       (rsf-add-content-type-field): Doc fix.
+
+       * simple.el (kill-region): Explicitly test there is a region.
+
+2006-09-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mail/feedmail.el (feedmail-buffer-to-sendmail): Look for
+       sendmail in several common directories.
+
+       * mail/sendmail.el (sendmail-program): Moved here from paths.el.
+
+       * paths.el (sendmail-program): Removed.
+
+2006-09-04  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-gpg.el (pgg-gpg-process-region): Revert two patches from Satyaki
+       Das.  http://article.gmane.org/gmane.emacs.gnus.general/49947
+       http://article.gmane.org/gmane.emacs.gnus.general/50457
+
+2006-09-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (custom-group-menu-create): Avoid deactivating the
+       mark after running the menu filter.
+
+2006-09-03  Juri Linkov  <juri@jurta.org>
+
+       * international/quail.el (quail-defrule-internal): Add a check
+       if a key is a vector.
+
+2006-09-02  Juri Linkov  <juri@jurta.org>
+
+       * man.el (Man-topic-history): New variable.
+       (man): Use it.
+
+       * woman.el (woman-topic-history): Change defvar to defvaralias
+       for symbol `Man-topic-history'.
+
+       * shell.el (shell-filter-ctrl-a-ctrl-b): Check if
+       `comint-last-output-start' is a marker by using `markerp' and
+       check if it has a position by using `marker-position', and use
+       this position for `goto-char'.
+
+       * international/quail.el (quail-defrule-internal): Add missing
+       `error' call for null key.
+
+2006-09-02  Ryan Yeske  <rcyeske@gmail.com>
+
+       * rcirc.el (rcirc-keywords): New variable.
+       (rcirc-bright-nicks, rcirc-dim-nicks): New variables.
+       (rcirc-bright-nick-regexp, rcirc-dim-nick-regexp): Remove
+       variables.
+       (rcirc-responses-no-activity): New function.
+       (rcirc-handler-generic): Check for responses in above.
+       (rcirc-process-command): Add ?: character to arguments of raw
+       server commands.
+       (rcirc-format-response-string): Use `rcirc-bright-nicks' and
+       `rcirc-dim-nicks'.
+       (rcirc-gray-toggle): Remove unused variable.
+       (rcirc-print): Remove some tracking logic, which is moved into
+       markup functions.
+       (rcirc-activity-types): Was `rcirc-activity-type', now a list of
+       types.
+       (rcirc-activity-string): Look for 'keyword in activity-types.
+       (rcirc-window-configuration-change): Don't erase overlay-arrow
+       unnecessarily.
+       (rcirc-add-or-remove): New function.
+       (rcirc-cmd-ignore): Use it.
+       (rcirc-message-leader): Remove unused function.
+       (rcicr-cmd-bright, rcirc-cmd-dim, rcirc-cmd-keyword): New commands.
+       (rcirc-add-face): New function.
+       (rcirc-facify): Use rcirc-add-face.
+       (rcirc-url-regexp): Add parens.
+       (rcirc-map-regexp): Remove function.
+       (rcirc-mangle-regexp): Remove function.
+       (rcirc-markup-text-functions): New variable.
+       (rcirc-markup-text): New function (replaces `rcirc-mangle-text').
+       (rcirc-markup-body-text, rcirc-markup-attributes)
+       (rcirc-markup-my-nick, rcirc-markup-urls, rcirc-markup-keywords)
+       (rcirc-markup-bright-nicks): New markup handler functions.
+       (rcirc-nick-in-message-full-line): New face.
+       (rcirc-track-nick): Rename from `rcirc-mode-line-nick'.
+       (rcirc-track-keyword, rcirc-url, rcirc-keyword): New faces.
+
+2006-09-02  Martin Rudalics  <rudalics@gmx.at>
+
+       * cus-start.el (hscroll-margin, hscroll-step)
+       (mode-line-in-non-selected-windows, mouse-autoselect-window)
+       (x-use-underline-position-properties): Change version to "22.1"
+       since they will appear there for the first time.
+
+2006-09-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * imenu.el (imenu-update-menubar): Use buffer-chars-modified-tick.
+
+2006-08-31  Richard Stallman  <rms@gnu.org>
+
+       * cus-edit.el (custom-save-variables): Slight cleanup.
+       (Custom-no-edit): Renamed from custom-no-edit.
+       (Custom-newline): Renamed from custom-newline.
+       (custom-mode-map): Use new names.
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Reference manual
+       about customization, rather than M-x customize, in the doc string
+       made for the defcustom.
+
+       * emacs-lisp/trace.el (trace-function-background): Doc fix.
+
+2006-08-31  Romain Francoise  <romain@orebokech.com>
+
+       * dired-x.el (dired-guess-shell-alist-default): Update.
+
+2006-08-31  Michael Mauger  <mmaug@yahoo.com>
+
+       * custom.el (custom-theme-set-variables): Autoload packages before
+       sorting the variables.
+
+2006-08-30  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-cmd.el (viper-special-read-and-insert-char): Convert events to
+       chars if XEmacs.
+       (viper-after-change-undo-hook): Check if undo-in-progress is bound.
+
+2006-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/python.el (python-eldoc-function): Re-enable quit while
+       waiting for process.
+
+2006-08-30  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-string-to-utxt): If adjustment for MacJapanese
+       results in ASCII-only string, encode original one directly.
+
+2006-08-29  Romain Francoise  <romain@orebokech.com>
+
+       * startup.el (normal-splash-screen, fancy-splash-screens):
+       Make buffer read-only and arrange to enter view mode if necessary.
+
+2006-08-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * hl-line.el (hl-line): New face.
+       (hl-line-face): Use it.
+
+       * image-mode.el (image-mode): Fix last fix.
+       Suggested by Kim F. Storm.
+
+2006-08-29  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.54.
+
+       * net/tramp.el (tramp-convert-file-attributes): Call `eql' instead
+       of `=', because `tramp-get-remote-gid' might not always return an
+       integer when expected.
+       (tramp-register-file-name-handlers): `partial-completion-mode' is
+       unknown to XEmacs.
+       (tramp-time-diff): Don't use `floor', it might fail for large
+       differences.
+       (tramp-handle-make-auto-save-file-name): For Emacs 21, set
+       `tramp-auto-save-directory' if unset in order to guarantee unique
+       auto-save file names.
+
+2006-08-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image-mode.el (image-mode): Display image as text on a terminal.
+
+2006-08-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/python.el (python-send-command): Simplify.
+       (run-python): Don't generate a new buffer unless `new' was specified.
+       Make sure we send `import emacs' to the proper process.
+
+       * progmodes/python.el (python-send-command): Don't wait for the command
+       to terminate.  Don't fiddle with compilation-parsing-end.
+
+2006-08-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/checkdoc.el (checkdoc-file-comments-engine):
+       Insert commentary after first line summary.
+
+       * woman.el (woman-follow): New function, based on `man-follow'.
+       (woman-mode-map): Use it.
+
+       * ibuffer.el (ibuffer-do-sort-by-recency): Perform full update
+       since ibuffer-do-sort-by-recency does not define a sorter.
+
+2006-08-28  Kim F. Storm  <storm@cua.dk>
+
+       * find-dired.el (find-dired): Use shell-quote-argument to properly
+       escape ( and ) args.  Also use it on {} and ; args in default
+       value of find-ls-option string.
+       (find-grep-dired): Use shell-quote-argument on {} and ; args.
+
+2006-08-27  Michael Olson  <mwolson@gnu.org>
+
+       * emacs-lisp/tq.el: Small grammar fix in comments.
+       (tq-enqueue): Check for existence of queue rather than the
+       head queue item's question, which was a no-op.
+       (tq-filter, tq-process-buffer): Make sure the process buffer
+       exists before making it the current buffer.
+
+2006-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-apple-event-map): Rename hicommand to hi-command.
+       (mac-dnd-drop-data): Apply 2006-08-22 change for x-dnd-drop-data.
+       (special-event-map): Apply 2006-08-16 change for x-win.el.
+
+2006-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/python.el (python-send-receive): Wait in the
+       process's buffer so as to check the right buffer-local variables.
+
+2006-08-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/checkdoc.el: Remove * in defcustoms.
+       (defgroup checkdoc): Move to beginning.
+
+       * progmodes/python.el (python-preoutput-skip-next-prompt): New var.
+       (python-preoutput-continuation): Remove.
+       (python-preoutput-filter): Simplify correspondingly.
+       Remove handling of _emacs_ok.  Make sure we skip _emacs_out's prompts.
+       Loop around to catch embedded _emacs_out output.
+       (run-python): Send the import&print command on a single line.
+       (python-send-command): Send command&print on a single line.
+       (python-send-string): Only add double \n if needed.
+       (python-send-receive): Loop until the result comes.
+       (python-mode-running): Defvar it.
+       (python-setup-brm): Remove unused var `menu'.
+       Only bind py-mode-map and `features' around brm-init.
+       (python-calculate-indentation): Remove unused var `point'.
+       (python-beginning-of-defun): Remove unused var `def-line'.
+
+2006-08-25  Richard Stallman  <rms@gnu.org>
+
+       * kmacro.el (kmacro-repeat-on-last-key): Doc fix.
+
+2006-08-25  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper.el (viper-set-hooks): Use frame bindings for
+       viper-vi-state-cursor-color.
+       (viper-non-hook-settings): Don't set default
+       mode-line-buffer-identification.
+
+       * viper-util.el (viper-set-cursor-color-according-to-state): New fun.
+       (viper-set-cursor-color-according-to-state)
+       (viper-get-saved-cursor-color-in-replace-mode)
+       (viper-get-saved-cursor-color-in-insert-mode): Make conditional on
+       viper-emacs-state-cursor-color.
+
+       * viper-cmd.el (viper-envelop-ESC-key): Bug fix.
+       (viper-undo): Use point if undo-beg-posn is nil.
+       (viper-insert-state-post-command-sentinel, viper-change-state-to-emacs)
+       (viper-after-change-undo-hook): Don't use
+       viper-emacs-state-cursor-color by default.
+       (viper-undo): More sensible positioning after undo.
+
+       * viper-ex.el (ex-splice-args-in-1-letr-cmd): Get rid of caddr.
+       (viper-emacs-state-cursor-color): Default to nil, since this feature
+       doesn't work well yet.
+
+       * ediff-mult.el (ediff-intersect-directories)
+       (ediff-get-directory-files-under-revision, ediff-dir-diff-copy-file):
+       always expand filenames.
+
+2006-08-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * tumme.el: Remove * in defcustoms's docstrings.
+
+2006-08-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/timer.el (timer-set-idle-time, run-with-idle-timer):
+       Accept internal time format for SECS arg.
+       (timer-relative-time): Doc fix.
+
+       * jit-lock.el: "Stealth fontification by requeuing timers" patch,
+       adapted from Martin Rudalics.
+       (jit-lock-stealth-repeat-timer, jit-lock-stealth-buffers): New vars.
+       (jit-lock-mode): Create jit-lock-stealth-repeat-timer.
+       (jit-lock-stealth-fontify): Reschedule as a idle timer instead of
+       using sit-for.
+
+2006-08-24  Francesc Rocher  <francesc.rocher@gmail.com>
+
+       * cus-start.el (all): Add `overline-margin' and
+       `x-underline-at-descent-line'.
+
+2006-08-24  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (grep-find-use-xargs): Use explicit value `exec'
+       to mean "use find -exec"; nil now unambiguously means auto-detect.
+       (grep-compute-defaults): Set grep-find-use-xargs to `exec' if not `gnu'.
+       Use shell-quote-argument to build grep-find-command and
+       grep-find-template.
+       (rgrep): Use shell-quote-argument to properly quote arguments to find.
+       Reported by Tom Seddon.
+
+2006-08-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * startup.el (fancy-splash-head): Give instructions for dismissing
+       the splash screen for default startup too.
+       (display-startup-echo-area-message, fancy-splash-screens)
+       (use-fancy-splash-screens-p): New arg hide-on-input.  If nil, show
+       all splash text at once and keep the splash buffer around.
+       (command-line-1): Give display-startup-echo-area-message a t arg.
+
+2006-08-23  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-follow-gnus-link): Make sure the dedicated
+       gnus frame is selected.
+
+2006-08-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-starting): Reset gdb-signalled to nil.
+
+2006-08-22  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-set-matches-1): Fix full matching for subdirs.
+       Add suffix matching for subdirs.
+
+2006-08-22  Jorgen Schaefer  <forcer@forcix.cx>  (tiny change)
+
+       * x-dnd.el (x-dnd-drop-data): Don't call goto-char if
+       mouse-yank-at-point is non-nil.
+
+2006-08-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-frame-memory-buffer): Make frame
+       a bit wider and remove fringes to fit initial output on line.
+
+2006-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.el (blink-cursor-end): Only ignore the error we care about.
+       (blink-cursor-mode): Use blink-cursor-end to simplify the code.
+
+2006-08-21  Richard Stallman  <rms@gnu.org>
+
+       * whitespace.el (whitespace-cleanup): Doc fix.
+
+2006-08-20  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-show-maximum-output): New var.
+       (rcirc-buffer-process): If no buffer argument is supplied, use
+       current-buffer.
+       (rcirc-complete-nick): Complete to the last completed nick first.
+       (rcirc-mode): Preserve the value of `rcirc-urls' across
+       connections.  Setup scroll function.
+       (rcirc-scroll-to-bottom): New function.
+       (rcirc-print): Use nick syntax around regexp work.
+       Notice dim-nicks speaking only if they say our nick.
+       (rcirc-update-activity-string): Do not show the modeline indicator
+       if there are no live rcirc processes.
+       (rcirc-cmd-ignore): Ignore case.
+       (rcirc-browse-url-at-point): Fix off-by-one error.
+
+2006-08-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/python.el: Remove * in defcustom docstrings.
+       (run-python, python-proc, python-try-complete): Use derived-mode-p.
+       (python-mode): Set tab-width and indent-tabs-mode.
+
+2006-08-20  Dave Love  <fx@gnu.org>
+
+       * progmodes/python.el: Update to Dave Love's latest version.
+       (python-font-lock-keywords, python-mode): Don't use
+       font-lock-syntax-table, but match symbol elements explicitly instead.
+       (python-mode-map): Add help, and a few more key bindings.
+       (python-skip-comments/blanks): Move out of comments as well.
+       (python-continuation-line-p): Behave better with unbalanced parens.
+       (python-blank-line-p): New fun.
+       (python-open-block-statement-p): Don't use a heuristic.
+       (python-outdent-p): Better handle blocks-in-the-same-line.
+       (python-calculate-indentation): Misc improvements.
+       (python-comment-indent): Remove.
+       (python-block-pairs): New var.
+       (python-first-word): New fun.
+       (python-indentation-levels): Handle more common cases.
+       (python-indent-line-1): Add `leave' argument.
+       (python-indent-region): New fun.
+       (python-skip-out): New fun.
+       (python-beginning-of-statement, python-end-of-statement): Use it.
+       (python-next-statement): Return correct count even at eob.
+       (python-end-of-block): Fix paren-typo.
+       (python-imenu-create-index): Add module variables.
+       (run-python): Add `new' arg.
+       Check we're at a prompt before returning.
+       (python-send-command): Move to end of buffer.
+       Wait for prompt to return.
+       (python-set-proc): New fun.
+       (python-imports): New var.
+       (python-describe-symbol): Use it.  Adjust to new interface of `ehelp'.
+       (python-eldoc-function): Try to move out of arg list.
+       (python-outline-level): Offset by 1.
+       (python-find-imports): New fun.
+       (python-symbol-completions): Use python-imports.
+       (python-module-path, ffap-alist): Add support for ffap.
+       (python-skeletons, python-mode-abbrev-table, def-python-skeleton)
+       (python-insert-*, python-default-template, python-expand-template):
+       Add templates/skeletons.
+       (python-setup-brm): Support for Bicycle Repair Man.
+       (python-abbrev-syntax-table): New var.
+       (python-abbrev-pc-hook, python-pea-hook): New funs.
+
+2006-08-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frame.el (blink-cursor-start): Set timer first.
+       (blink-cursor-end): Ignore timer cancelling errors.
+       Suggested by Ken Manheimer.
+
+2006-08-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * newcomment.el (comment-box): Call `comment-normalize-vars'.
+       Add autoload cookie.
+
+2006-08-20  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (line-number-at-pos): Doc fix.
+
+       * emacs-lisp/timer.el (run-with-idle-timer): Pass t to
+       timer-activate-when-idle, so timer can run before Emacs becomes
+       non-idle again.
+
+2006-08-18  Yoni Rabkin Katzenell  <yoni-r@actcom.com>  (tiny change)
+
+       * whitespace.el (whitespace-cleanup-internal): New optional arg
+       REGION-ONLY.  If it's non-nil, modify the message to the user
+       accordingly.
+       (whitespace-cleanup-region): Call whitespace-cleanup-internal with
+       a non-nil argument.
+
+2006-08-18  Gustav H\e,Ae\e(Bllberg  <gustav@gmail.com>  (tiny change)
+
+       * rect.el (spaces-string): Simplify and add doc string.
+
+2006-08-17  Romain Francoise  <romain@orebokech.com>
+
+       * progmodes/gdb-ui.el (gdb-edit-locals-value): Balance parens.
+
+2006-08-17  Richard Stallman  <rms@gnu.org>
+
+       * compare-w.el (compare-windows): lambda's take an arg and pass
+       it to compare-windows-skip-whitespace.
+
+2006-08-17  Martin Rudalics  <rudalics@gmx.at>
+
+       * jit-lock.el (jit-lock-fontify-now): Protect the modified status of
+       the right buffer.
+
+2006-08-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs-parse.el (cvs-parse-table): Accept the new `...' format for
+       removed files.
+
+2006-08-17  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-locals-watch-map)
+       (gdb-locals-watch-map-1): Suppress keymap first.
+       (gdb-edit-locals-map-1): New variable.
+       (gdb-edit-locals-value): New function.
+       (gdb-stack-list-locals-handler): Use them.
+
+2006-08-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mouse.el (global-map): Allow yanking with mouse-2 at a spot whose
+       cursor would normally be drawn in the fringe.
+
+       * font-lock.el (font-lock-extend-region-wholelines): Fix up typo.
+       Reported by Martin Rudalics <rudalics@gmx.at>.
+
+2006-08-16  Richard Stallman  <rms@gnu.org>
+
+       * term/x-win.el (x-clipboard-yank): Specify * in interactive spec.
+       (special-event-map): Process drag-n-drop events this way.
+
+       * simple.el (move-beginning-of-line): Test whether fields
+       would prevent motion back to line's first visible character.
+       If so, stop where the fields would stop the motion.
+
+       * newcomment.el (comment-indent): Fully update INDENT
+       before checking to see if it will change the text.
+
+       * cus-edit.el (custom-newline): New function.
+       (custom-mode-map): Bind newline to custom-newline.
+
+       * compare-w.el (compare-windows): Factor compare-ignore-whitespace
+       into ignore-whitespace.
+       Check each buffer for its skip-function.
+       Handle compare-windows-skip-whitespace special-case test
+       by returning t from default skip function.
+
+2006-08-15  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-clock-special-range)
+       (org-clock-update-time-maybe): New functions.
+       (org-stamp-time-of-day-regexp): Allow weekday to be of word chars,
+       not only a-z.
+       (org-agenda-get-blocks): Allow multiple blocks per headline.
+       (org-timestamp-change): Call `org-clock-update-time-maybe'.
+       (org-export-html-title-format)
+       (org-export-html-toplevel-hlevel): New options.
+       (org-export-language-setup): Add support for Czech.
+       (org-mode, org-insert-todo-heading, org-find-visible)
+       (org-find-invisible, org-invisible-p, org-invisible-p2)
+       (org-back-to-heading, org-on-heading-p, org-up-heading-all)
+       (org-show-subtree, org-show-entry, org-make-options-regexp):
+       Remove compatibility support for old outline-mode.
+       (org-check-occur-regexp): Funtion removed.
+       (org-on-heading-p, org-back-to-heading): Made defalias.
+       (org-set-local): New defsubst.
+       (org-set-regexps-and-options, org-mode)
+       (org-set-font-lock-defaults, org-edit-agenda-file-list)
+       (org-timeline, org-agenda-list, org-todo-list, org-tags-view)
+       (org-remember-apply-template, org-table-edit-field)
+       (org-table-edit-formulas, orgtbl-mode, org-export-as-ascii)
+       (org-set-autofill-regexps): Use `org-set-local'.
+       (org-table-eval-formula): Fix bug with parsing of display flags.
+
+2006-08-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-info-stack-custom): Indicate selected
+       frame with fringe arrow.  Suggested by Simon Marshall
+       <simon.marshall@misys.com>.
+       (gdb-stack-position): New variable.
+       (gdb-starting, gdb-exited): Reset gdb-stack-position to nil.
+       (gdb-frames-mode): Set gdb-stack-position to nil.
+       Add to overlay-arrow-variable-list
+       (gdb-reset): Delete gdb-stack-position from above list.
+
+2006-08-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el (menu-bar-edit-menu): Disable paste if buffer is
+       read only.
+
+2006-08-13  Romain Francoise  <romain@orebokech.com>
+
+       * cus-theme.el (customize-create-theme)
+       (custom-theme-visit-theme): End `y-or-n-p' prompt with a space.
+
+       * filesets.el (filesets-add-buffer): Ditto.
+
+       * pcvs.el (cvs-change-cvsroot): Ditto.
+
+2006-08-13  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-frame-separate-io-buffer)
+       (gdb-use-separate-io-buffer, menu): Avoid using `inferior' in text.
+       (gdb-memory-mode, gdb-locals-watch-map): Don't quote lambda
+       expressions.
+       (gdb-info-breakpoints-custom): Use gdb-breakpoint-regexp.
+       Only search till end of line.
+       Add face to function names in case of no filename.
+       Add face to variable names of watchpoints.
+
+2006-08-12  Robert Thorpe  <rthorpe@realworldtech.com>  (tiny change)
+
+       * cus-start.el <indent-tabs-mode>: Move to the `indent'
+       customization group.
+
+2006-08-12  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-prior-bindings, allout-added-bindings):
+       Remove, after long deprecation.
+       (allout-beginning-of-line-cycles, allout-end-of-line-cycles):
+       Add customization vars controlling allout-beginning-of-line and
+       allout-end-of-line conveniences.
+       (allout-header-prefix, allout-use-mode-specific-leader)
+       (allout-use-mode-specific-leader, allout-mode-leaders):
+       Revise docstrings.
+       (allout-infer-header-lead): Change to be an alias for
+       allout-infer-header-lead-and-primary-bullet.
+       (allout-infer-header-lead-and-primary-bullet): New version of
+       allout-infer-header-lead which assigns the primary bullet to the
+       same as the header lead, when its being changed.
+       (allout-infer-body-reindent): Apply regexp-quote instead of
+       unconditionally prepending "\\", so that all literal
+       allout-header-prefix and allout-primary-bullet strings are
+       properly handled.
+       (allout-add-resumptions): Add optional qualifier for extending or
+       appending to existing values, rather than replacing them.
+       (allout-view-change-hook): Clarify docstring.
+       (allout-exposure-change-hook): Take explicit arguments, via
+       run-hook-with-args.
+       (allout-structure-added-hook)
+       (allout-structure-deleted-hook)
+       (allout-structure-shifted-hook): New hooks analogous to
+       allout-exposure-change-hook for other kinds of structural outline
+       edits.
+       (allout-encryption-plaintext-sanitization-regexps): New encryption
+       customization variable, by which cooperating modes can provde
+       massage of the plaintext without actually being passed it.
+       (allout-encryption-ciphertext-rejection-regexps)
+       (allout-encryption-ciphertext-rejection-ceiling): New encryption
+       customization variables, by which cooperating modes can prohibit
+       rare but possible ciphertext patterns from fouling their
+       operation, with actually being passed the ciphertext.
+       (allout-mode): Run activation and deactivation hooks after the
+       minor-mode variable has been toggled, to clarify the mode
+       disposition.  The new encryption ciphertext rejection variable is
+       used to ensure that the ciphertext does not contain text that
+       would be recognized as outline structural elements by allout.
+       Substite allout-beginning-of-line and allout-end-of-line for
+       conventionall beginning-of-line and end-of-line bindings.
+       If allout-old-style-prefixes is non-nil, don't nullify it on mode
+       activation!
+       (allout-beginning-of-line): Respect `allout-beginning-of-line-cycles'.
+       (allout-end-of-line): Respect `allout-end-of-line-cycles'.
+       (allout-chart-subtree): Implement new mode, charting only the
+       visible items in the subtree, when new 'visible' parameter is non-nil.
+       (allout-end-of-subtree): Properly handle the last item in the buffer.
+       (allout-pre-command-business, allout-command-counter):
+       Increment an advertised counter so that cooperating enhancements can
+       track revisions of items.
+       (allout-open-topic): Run allout-structure-added-hook with suitable
+       arguments.
+       (allout-shift-in): Run allout-structure-shifted-hook with suitable
+       arguments.
+       (allout-shift-out): Fix doubling for negative args and ensure call
+       of allout-structure-shifted-hook by solely using allout-shift-in.
+       (allout-kill-line, allout-kill-topic):
+       Run allout-structure-deleted-hook with suitable arguments.
+       (allout-yank-processing): Run allout-structure-added-hook with
+       proper arguments.
+       (allout-yank): Enclose activity in allout-unprotected.
+       (allout-flag-region): Run allout-exposure-change-hook with
+       suitable arguments, instead of making the callee infer the arguments.
+       (allout-encrypt-string):
+       Support allout-encryption-plaintext-sanitization-regexps,
+       allout-encryption-ciphertext-rejection-regexps, and
+       allout-encryption-ciphertext-rejection-ceiling.  Indicate correct
+       en/de cryption mode in symmetric encryption failure message.
+       (allout-obtain-passphrase): Use copy-sequence to get a distinct
+       copy of the passphrase, and don't zero it or we'll corrupt the
+       stashed copy.
+       (allout-create-encryption-passphrase-verifier)
+       (allout-verify-passphrase): Respect the new signature for
+       allout-encrypt-string.
+       (allout-get-configvar-values): Convenience for getting a
+       configuration variable value and handling its absence gracefully.
+
+2006-08-11  Romain Francoise  <romain@orebokech.com>
+
+       * obsolete/zone-mode.el: Delete.
+
+2006-08-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/dns-mode.el (dns-mode): Use before-save-hook.
+
+2006-08-11  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/bindat.el (bindat-ip-to-string):
+       Use `format-network-address' if possible.
+
+2006-08-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * x-dnd.el (x-dnd-init-frame): Call x-register-dnd-atom.
+
+2006-08-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/edebug.el (edebug-recursive-edit): Don't save and
+       restore unread-command-events here.
+       (edebug-display): Do it here, to detect sit-for interruptions.
+
+2006-08-10  Romain Francoise  <romain@orebokech.com>
+
+       * textmodes/dns-mode.el: Alias `zone-mode' to `dns-mode'.
+       (dns-mode-soa-auto-increment-serial): New user option.
+       (dns-mode-soa-maybe-increment-serial): New function.
+       (dns-mode): Add the latter to `write-contents-functions'.
+
+       * obsolete/zone-mode.el: Move to obsolete/ from net/.
+       Delete autoload cookies.
+
+2006-08-10  John Wiegley  <johnw@newartisans.com>
+
+       * eshell/em-glob.el (eshell-glob-chars-list)
+       (eshell-glob-translate-alist): Add support for [^g] in character globs.
+
+2006-08-10  Richard Stallman  <rms@gnu.org>
+
+       * facemenu.el (facemenu-add-face): Pass frame to facemenu-active-faces.
+       (facemenu-set-face): Doc fix.
+       (facemenu-listed-faces): Doc fix.
+
+2006-08-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * avoid.el (mouse-avoidance-animating-pointer): New var.
+       (mouse-avoidance-nudge-mouse): Use it.
+       (mouse-avoidance-banish): Rename from mouse-avoidance-banish-hook.
+       (mouse-avoidance-exile): Rename from mouse-avoidance-exile-hook
+       (mouse-avoidance-fancy): Rename from mouse-avoidance-fancy-hook.
+       Don't activate if currently animating.  All callers changed.
+
+2006-08-09  John Wiegley  <johnw@newartisans.com>
+
+       * calendar/timeclock.el (timeclock-use-elapsed): Added a new
+       variable, which causes timeclock to report elapsed time worked,
+       instead of just work remaining.
+
+2006-08-09  Kenichi Handa  <handa@m17n.org>
+
+       * international/latexenc.el (latexenc-find-file-coding-system):
+       Fix for the case that the 2nd element of arg-list is a cons.
+
+2006-08-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * info.el (Info-fontify-node): Handle preceding `in' for note
+       reference hiding rules.
+
+2006-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-quoted-subshell): Make sure we don't
+       mistake a closing " for an opening one.
+
+2006-08-07  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Add more key bindings.
+
+2006-08-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * complete.el (PC-do-completion): Filter out completions matching
+       completion-ignored-extensions before checking whether there are
+       multiple completions.
+       Don't use `list' unnecessarily when building completion tables.
+
+2006-08-06  Richard Stallman  <rms@gnu.org>
+
+       * help.el (describe-mode): Make minor mode list more concise.
+
+2006-08-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * bindings.el: Give mode-line-format, mode-line-modes, and
+       mode-line-position `standard-value' properties.
+
+2006-08-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * buff-menu.el (list-buffers-noselect): For Info buffers, use
+       "(file)node" instead of the file name.
+
+2006-08-05  Richard Stallman  <rms@gnu.org>
+
+       * faces.el (escape-glyph): Doc fix.
+
+2006-08-04  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-diag.el (describe-font): Improve docstring
+       and error message.  Use frame-parameter (not frame-parameters).
+
+2006-08-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/gud.el (gdb-script-font-lock-syntactic-keywords):
+       Correctly mark the end-of-docstring char.
+
+2006-08-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (line-move-to-column): Constrain move-to-column to
+       current field.
+
+2006-08-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-beg, font-lock-end)
+       (font-lock-extend-region-functions): New vars.
+       (font-lock-extend-region-multiline)
+       (font-lock-extend-region-wholelines): New functions.
+       (font-lock-default-fontify-region): Use them.
+       (font-lock-extend-jit-lock-region-after-change): Only round up
+       if font-lock-default-fontify-region will do it as well.
+
+       * font-lock.el (font-lock-extend-after-change-region-function):
+       Rename from font-lock-extend-region-function.
+       (font-lock-extend-region): Remove by inlining at call sites.
+       (font-lock-after-change-function): Don't needlessly round up to a whole
+       number of lines.
+       (font-lock-extend-jit-lock-region-after-change): Be more careful about
+       the boundary conditions and the interactions between the various ways
+       to extend the region.
+
+2006-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * jit-lock.el (jit-lock-fontify-now): Preserve the buffer's
+       modification status when forcing the second redisplay.
+
+2006-08-03  Kim F. Storm  <storm@cua.dk>
+
+       * edmacro.el (edmacro-fix-menu-commands): Ignore switch-frame.
+
+2006-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs-util.el (cvs-get-buffer-create): Obey `noreuse' even if `name'
+       doesn't look like a file name.
+
+       * complete.el (PC-expand-many-files): Avoid signalling an error when
+       the current directory doesn't exist.  Reported by Micha\e,Ak\e(Bl Cadilhac.
+
+2006-08-02  Andreas Schwab  <schwab@suse.de>
+
+       * bindings.el (mode-line-format): Simplify reference to vc-mode.
+
+2006-08-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * bindings.el (map): Make mode-line-buffer-identification-keymap
+       before defining propertized-buffer-identification.
+
+2006-08-01  Richard Stallman  <rms@gnu.org>
+
+       * bindings.el (mode-line-format): Adjust spacing around vc-mode.
+
+2006-08-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-find-source-frame): Make nil the
+       default value.
+       (gdb-find-source-frame): New function.
+       (menu): Add to menu bar.
+
+2006-08-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-core.el (font-lock-extend-region-function)
+       (font-lock-extend-region): Move to font-lock.el.
+
+       * font-lock.el (font-lock-extend-region-function)
+       (font-lock-extend-region): Move from font-core.el.  Simplify.
+
+       * jit-lock.el (jit-lock-fontify-now): Cause a second redisplay
+       if needed.
+       (jit-lock-start, jit-lock-end): New dynamic scoped vars.
+       (jit-lock-after-change-extend-region-functions): New hook.
+       (jit-lock-after-change): Use it instead of hard-coding font-lock code.
+
+       * font-lock.el (font-lock-extend-jit-lock-region-after-change): New fun.
+       (font-lock-turn-on-thing-lock): Use it.
+
+       * longlines.el (longlines-show-region): Make it work on read-only
+       buffers as well.
+
+2006-08-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-set-hollow): Check for gud-last-last-frame.
+
+2006-07-31  Richard Stallman  <rms@gnu.org>
+
+       * progmodes/vhdl-mode.el (vhdl-speedbar-display-directory)
+       (vhdl-speedbar-display-projects): Update old obsolete
+       speedbar variable names.
+
+2006-07-31  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-find-source-frame): New option.
+       (gdb-stopped): Use it.
+
+       * t-mouse.el (t-mouse-mode): Use set-process-query-on-exit-flag.
+
+2006-07-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * loadhist.el (unload-feature): Handle new `(t . SYMBOL)' format
+       for load-history elements.
+
+2006-07-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.el (convert-standard-filename): For Cygwin, replace
+       characters not allowed in Windows file names.
+       (make-auto-save-file-name): Add Cygwin to the list of systems
+       where the auto-save file name needs to be run through
+       convert-standard-filename.
+
+2006-07-29  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * window.el (bw-get-tree): Don't integerp subtree if it's nil.
+
+2006-07-28  Richard Stallman  <rms@gnu.org>
+
+       * bindings.el (mode-line-frame-identification)
+       (propertized-buffer-identification): Centralize the code
+       to initialize the variable.
+
+       * progmodes/grep.el (grep-default-command): Catch errors from
+       wildcard-to-regexp.
+
+2006-07-29  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (grep-tag-default): New function.
+       (grep-default-command, grep-read-regexp): Use it.
+       (grep-read-files): Use car of grep-files-history or grep-files-aliases
+       as default if nothing else applies.
+
+2006-07-28  Bill Atkins  <atkinw@rpi.edu>  (tiny change)
+
+       * wdired.el (wdired-change-to-wdired-mode, wdired-change-to-dired-mode):
+       Throw error if buffer is not in Dired and Wdired mode, respectively.
+
+2006-07-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (custom-no-edit): Revert 2006-07-27 change, so that
+       self-insert-command keys don't activate buttons.
+       (custom-mode-map): Just don't bind "\C-m" to `custom-no-edit'.
+
+2006-07-29  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-info-breakpoints-custom): Use different
+       faces for enable character.
+
+2006-07-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * Makefile.in (recompile): Update comment to reflect change
+       on 2004-04-21.
+
+2006-07-27  Richard Stallman  <rms@gnu.org>
+
+       * cus-edit.el (customize-package-emacs-version-alist): Doc fix.
+       (customize-package-emacs-version): Change msg when pkg has no entry.
+       (custom-no-edit): On a button, do like widget-button-press.
+
+2006-07-27  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Fix bindings for C-tab,
+       S-tab and C-S-tab.
+
+2006-07-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/which-func.el (which-function): Fix documentation/
+       comment typo.
+
+2006-07-26  Richard Stallman  <rms@gnu.org>
+
+       * textmodes/ispell.el (ispell-word): If we replace the word,
+       move point to the end.  Insert before deleting.
+
+2006-07-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * subr.el (sit-for): Use new SECONDS arg of read-event instead of
+       a timer.
+
+2006-07-26  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-backward-image): Add prefix argument.  Add error
+       when at first image.
+       (tumme-forward-image): Add prefix argument.  Add error when at last
+       image.
+
+2006-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * tabify.el (tabify-regexp): Use more specific regexps.
+       (tabify): Avoid modifying the buffer unnecessarily.
+
+2006-07-25  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-track-original-file): Add `buffer-live-p' check.
+       (tumme-format-properties-string): Handle empty `buf'.
+       (tumme-get-comment): Change variable names inside `let'.
+       Add missing `let' variable that cause font-lock problems.
+       (tumme-write-comments): Change variable names inside `let'.
+       Add missing `let' variable that cause font-lock problems.
+       (tumme-forward-image): Rename from `tumme-forward-char'.
+       (tumme-backward-image): Rename from `tumme-backward-char'.
+
+2006-07-25  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/ld-script.el (ld-script-keywords)
+       (ld-script-font-lock-keywords, ld-script-builtins): Update keywords
+       and add comments.
+
+2006-07-25  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers)
+       (gdb-resync, gdb-prompt, gdb-starting, gdb-exited, gdb-stopped)
+       (gdb-set-gud-minor-mode-existing-buffers-1): Use different faces
+       for status indicator.
+
+2006-07-24  Richard Stallman  <rms@gnu.org>
+
+       * xml.el (xml-parse-file): Clean up, and use with-temp-buffer.
+
+       * subr.el (dolist, dotimes): Use interned symbols for locals.
+       (--dotimes-limit--, --dolist-tail--): New defvars.
+       (looking-back): Doc fix.
+
+       * replace.el (replace-match-string-symbols): Handle dotted lists.
+
+2006-07-24  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-write-tags): Add.
+       (tumme-write-comments): Add.
+       (tumme-tag-files): Change to use `tumme-write-tags'.
+       (tumme-tag-thumbnail): Change to use `tumme-write-tags'.
+       (tumme-dired-comment-files): Change to use `tumme-write-comments'.
+       (tumme-save-information-from-widgets): Change to use
+       `tumme-write-comments' and `tumme-write-tags'.
+       (tumme-comment-thumbnail): Change to use `tumme-write-comments'.
+       (tumme-write-tag): Remove.
+       (tumme-write-comment): Remove.
+       (tumme-display-previous-thumbnail-original): Remove empty line.
+       (tumme-widget-list): Add punctuation.
+
+2006-07-24  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-line-up): Add an extra check for end of buffer.
+
+2006-07-24  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-def.el (pgg-truncate-key-identifier): Truncate the key ID to 8
+       letters from the end.  Thanks to "David Smith" <davidsmith@acm.org>
+       and andreas@altroot.de (Andreas V\e,Av\e(Bgele).
+
+2006-07-23  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * mouse.el (mouse-on-link-p): Doc fix.
+
+2006-07-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * emacs-lisp/find-func.el (find-function-search-for-symbol):
+       Handle "C-h f `".
+
+2006-07-22  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * ibuffer.el (ibuffer-formats): Use left alignment for the mode
+       column.
+
+2006-07-22  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * textmodes/table.el: Add move-beginning-of-line and
+       move-end-of-line to Point Motion Only Group.
+
+2006-07-22  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
+
+       * progmodes/delphi.el (delphi-fill-comment): Use save-restriction.
+
+2006-07-22  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * startup.el (user-mail-address): Initialize from the `EMAIL'
+       environment variable first.  Document this.
+       (command-line): Ditto.
+
+2006-07-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * help-mode.el (help-function-def, help-variable-def)
+       (help-face-def): Print a message in the minibuffer.
+
+2006-07-21  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Fix key bindings
+       syntax.  Bind S-return, C-M-., C-TAB, S-TAB and C-S-TAB.
+
+2006-07-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * dos-w32.el (find-buffer-file-type-coding-system): Support calls
+       where `(nth 1 command)' is a cons cell.  Doc fix.
+
+       * textmodes/po.el (po-find-charset): Doc fix.
+
+2006-07-21  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-unprotected, allout-e-o-prefix-p)
+       (allout-beginning-of-current-line, allout-end-of-current-line)
+       (allout-next-visible-heading, allout-open-topic)
+       (allout-kill-topic, allout-yank-processing, allout-resolve-xref)
+       (allout-flag-current-subtree, allout-show-to-offshoot)
+       (allout-hide-current-entry, allout-show-current-branches)
+       (allout-hide-region-body, allout-old-expose-topic)
+       (allout-listify-exposed, allout-latex-verbatim-quote-curr-line)
+       (allout-mark-topic, allout-adjust-file-variable): Enclose scopes
+       containing `beginning-of-line' and `end-of-line' with
+       `inhibit-field-text-motion' t.
+
+2006-07-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * frame.el (focus-follows-mouse): Document that it doesn't have
+       any effect on MS-Windows.
+
+2006-07-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-quoted-subshell): Further fix last change.
+
+2006-07-20  Jay Belanger  <belanger@truman.edu>
+
+       * calc.el (calc-previous-alg-entry): Remove variable.
+
+       * calc-aent.el (calc-alg-entry-history, calc-quick-calc-history):
+       New variables.
+       (calc-alg-entry): Use `calc-alg-entry-history'.
+       (calc-do-quick-calc): Use `calc-quick-calc-history'.
+       Remove reference to `calc-previous-alg-entry'.
+       (calcAlg-edit, calcAlg-enter): Remove reference to
+       `calc-previous-alg-entry'.
+       (calcAlg-previous): Use `previous-history-element' instead of
+       `calc-previous-alg-entry'.
+       (calc-do-alg-entry): Use history when calling `read-from-minibuffer'.
+       Change keybinding for `calcAlg-plus-minus', add keybindings for
+       `previous-history-element' and `next-history-element'.
+
+       * calc-rewr.el (calc-match): Remove reference to
+       `calc-previous-alg-entry'.
+
+       * calc-sel.el (calc-selection-history): New variable.
+       (calc-enter-selection, calc-sel-mult-both-sides)
+       (calc-sel-add-both-sides): Use `calc-selection-history'.
+
+       * calc-map.el (calc-get-operator-history): New variable.
+       (calc-get-operator): Use `calc-get-operator-history'.
+
+       * calcalg3.el (calc-curve-fit-history): New variable.
+       (calc-curve-fit): Use `calc-curve-fit-history'.
+
+2006-07-20  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (select-safe-coding-system): Fix the
+       way of deciding eol-type of the coding system.
+
+2006-07-20  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-langs.el (c-emacs-variable-inits): New variable.
+       (c-lang-setvar): New macro.
+       (c-make-init-lang-vars-fun): Use the initialization forms in
+       c-emacs-variable-inits in addition to those in c-lang-variable-inits.
+       (comment-start, comment-end, comment-start-skip): Change these from
+       c-lang-defvar's to c-lang-setvar's.
+
+       * progmodes/cc-mode.el (c-make-emacs-variables-local): New macro,
+       which calls make-local-variable on the elements of
+       c-emacs-variable-inits.
+       (c-init-language-vars-for): Call this new macro.
+
+2006-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist) <gnu>:
+       Try to rule out false positives due to time stamps.
+       (compilation-mode-font-lock-keywords): Remove rules made redundant
+       because of the above change.  Add `segmentation fault' to the known and
+       highlighted compilation termination messages.
+
+2006-07-19  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (grep-find-ignored-directories):
+       Add .svn and _darcs to list.
+
+2006-07-19  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * dired.el (dired-mode-map): Add key binding `C-te' for
+       `tumme-dired-edit-comment-and-tags'.
+
+       * tumme.el (tumme-display-thumbnail-original-image): Make sure
+       image display buffer is displayed before call to
+       `tumme-display-image'.
+       (tumme-dired-display-image): Make sure image display buffer is
+       displayed before call to `tumme-display-image'.
+       (tumme-mouse-display-image): Make sure image display buffer is
+       displayed before call to `tumme-display-image'.
+       (tumme-widget-list): Add.
+       (tumme-dired-edit-comment-and-tags): Add.
+       (tumme-save-information-from-widgets): Add.
+
+2006-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-quoted-subshell): Fix last change.
+
+2006-07-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-font-lock-keywords-1):
+       Revert inadvertently installed patch hunk.
+
+       * progmodes/compile.el (compilation-find-file): Handle the
+       cases where the user selects a non-existent file.
+
+2006-07-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * bindings.el (minibuffer-local-map): Rebind TAB so it inserts a \t.
+
+2006-07-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * subr.el (sit-for): Just sleep-for if noninteractive.
+
+2006-07-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/autoload.el (make-autoload): Use new arg.
+
+       * custom.el (custom-autoload): Add `noset' argument.
+       (custom-push-theme): Don't autoload the variable, let callers do it.
+       (custom-theme-set-variables): Autoload the variable if necessary.
+
+       * cus-edit.el (custom-variable-state-set): If the variable was
+       originally set outside custom, but to the same value as the default,
+       consider it to be standard.
+
+       * Makefile.in (mh-loaddefs.el): Finish setting up the default empty
+       file *before* telling Emacs to add the autoloads, in case it fails.
+
+       * progmodes/sh-script.el (sh-quoted-subshell): Don't match escaped `.
+       Use `cond', push', and `dolist'.
+
+2006-07-17  Richard Stallman  <rms@gnu.org>
+
+       * image-mode.el (tar-superior-buffer, archive-superior-buffer):
+       Add defvars to silence warnings.
+
+2006-07-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/compile.el (compilation-mode-font-lock-keywords):
+       Don't highlight "Compiling file" messages as error.
+
+       * dired-aux.el (dired-compress-file): Confirm again if gzipped
+       file already exists.
+
+2006-07-16  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * find-file.el (ff-special-constructs): Doc fix.  Also, for C/C++
+       entry, don't assign to free var; simply return the extracted filename.
+       (ff-treat-as-special): Incorporate common preamble from callers.
+       (ff-other-file-name, ff-find-the-other-file):
+       Update call to ff-treat-as-special.
+
+       * progmodes/ada-mode.el (ada-mode): Rewrite ff-special-constructs init.
+
+2006-07-16  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-get-comment): Fix bug.
+
+2006-07-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files.el: Remove spurious * in docstrings.
+
+2006-07-14  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-run-unit-tests-on-load): Rectify docstring
+       grammar.
+       (allout-beginning-of-current-line): Beware beginning of buffer.
+       Also, a comment is simplified.
+       (allout-hotspot-key-handler): Only set allout-post-goto-bullet
+       when appropriate.  (This fix enables use for other than
+       bullet-hotspot operation.)
+       (allout-hide-current-subtree): While escalating to sibling-close,
+       make sure to situate on a topic.
+
+2006-07-14  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-delete-selection)
+       (cua-toggle-set-mark): New defcustoms.
+       (cua-rectangle-modifier-key): Add `alt' modifier.
+       (cua-replace-region): Don't delete if cua-delete-selection is nil.
+       (cua-set-mark): Don't clear mark if cua-toggle-set-mark is nil.
+       Suggested by Klaus Zeitler <kzeitler@lucent.com>.
+
+       * emulation/cua-rect.el (cua-help-for-rectangle): Add `alt' modifier.
+
+2006-07-14  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el: Require 'cl during byte-compilation/interactive load,
+       for the `assert' macro.
+       (allout-mode-deactivate-hook): New hook, run when allout mode
+       deactivates.
+       (allout-developer): New allout customization subgroup.
+       (allout-run-unit-tests-on-load): New allout-developer
+       customization variable, when true allout unit tests are run towards
+       end of file load/eval.
+       (allout-inhibit-auto-fill): Disable auto-fill activity even during
+       auto-fill-mode.
+       (allout-resumptions): Remove, to be replaced by...
+       (allout-add-resumptions): Register variable settings to be
+       reinstated by `allout-do-resumptions'.  The settings are made
+       buffer-local, but the locality/globality of the suspended setting
+       is restored on resumption.
+       (allout-do-resumptions): Reinstate all settings suspended using
+       `allout-add-resumptions'.
+       (allout-test-resumptions): Unit tests (and intermediate variables)
+       for resumptions.
+       (allout-tests-globally-unbound, allout-tests-globally-true)
+       (allout-tests-locally-true): Intermediate variables for
+       resumptions unit tests.
+       (allout-overlay-preparations): Replaces `allout-set-overlay-category'.
+       (allout-exposure-category): Replaces 'allout-overlay-category variable.
+       (allout-mode): Use `allout-add-resumptions' and `allout-do-resumptions'
+       instead of retired `allout-resumptions'.  For hook functions, use
+       `local' parameter so hook settings are created and removed as
+       buffer-local settings.  Revise (resumptions) setting
+       auto-fill-function so it is set only if already active.  The
+       related fill-function settings are all made in either case, so
+       that activating auto-fill-mode activity will have the custom
+       allout-mode behaviors (hanging indent on topics, if configured for it).
+       Remove all allout-exposure-category overlays on mode deactivation.
+       (allout-hotspot-key-handler): New function extracted from
+       `allout-pre-command-business', so the functionality can be used
+       for other purposes, eg as a binding in an overlay.
+       (allout-pre-command-business): Use new `allout-hotspot-key-handler'.
+       (allout-auto-fill): Respect new `allout-inhibit-auto-fill'
+       customization variable.
+       (allout-run-unit-tests): Run the (currently quite small)
+       repertoire of unit tests.  Called just before the provide iff user
+       has customized `allout-run-unit-tests-on-load' non-nil.
+
+2006-07-14  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
+
+       * emacs-lisp/authors.el (authors-aliases): Update.
+
+2006-07-14  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-display-buffer): Check for
+       gdb-source-window.  Add dedicated argument.
+       (gdb-display-separate-io-buffer, gdb-append-to-inferior-io)
+       (gdb-display-breakpoints-buffer, gdb-display-stack-buffer)
+       (gdb-display-threads-buffer, gdb-display-memory-buffer)
+       (gdb-display-locals-buffer): Use it.
+
+       * progmodes/gud.el (gud-display-line): Use gdb-display-buffer.
+       Set gdb-source-window.
+
+2006-07-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/autoload.el (make-autoload): Remove special handling of
+       minor modes, redundant with the custom-autoload line above.
+
+2006-07-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-post-command-function): Handle open-line too.
+
+2006-07-12  Richard Stallman  <rms@gnu.org>
+
+       * progmodes/grep.el (grep-last-buffer): Doc fix.
+
+       * info.el (Info-try-follow-nearest-node): Doc fix.
+
+       * emacs-lisp/edebug.el (edebug-instrument-function):
+       Err if find-function-noselect gives no position.
+
+       * emacs-lisp/find-func.el (find-function-search-for-symbol):
+       If can't find definition, return nil for position.
+       (find-function-do-it): Handle new return value
+       of find-definition-noselect.
+       (find-definition-noselect, find-variable-noselect): Doc fix.
+       (find-function-noselect): Doc fix.
+
+       * help-mode.el (help-variable-def): Handle find-variable-noselect
+       returning no position.
+       (help-function-def): Likewise for find-function-search-for-symbol.
+       (help-face-def): Likewise.
+
+       * help-fns.el (describe-variable): Handle find-variable-noselect
+       returning no position.
+
+       * files.el (locate-file-completion): Avoid duplicates in result.
+
+       * cus-edit.el (custom-no-edit): New command.
+       (custom-mode-map): Remap to custom-no-edit instead of
+       using suppress-keymap.
+
+2006-07-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tumme.el (tumme-create-thumb, tumme-thumbnail-display-external)
+       (tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original)
+       (tumme-set-exif-data, tumme-get-exif-data): Use shell-command-switch.
+
+       * thumbs.el (thumbs-call-convert): Use shell-command-switch.
+
+2006-07-11  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-copy-current-file-name): Use buffer-name if
+       buffer-file-name is nil.
+
+2006-07-11  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (undo-ask-before-discard): Set to nil.
+
+       * vc.el (vc-exec-after): Don't delete process manually.
+       (vc-print-log): Run log-view-mode in process sentinel inside
+       inhibit-read-only.  Don't shrink window due to timing issues.
+
+       * progmodes/ebrowse.el (ebrowse-display-member-buffer):
+       Avoid using with-output-to-temp-buffer, which clobbers local vars.
+
+2006-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist):
+       Fix ambiguity introduced by last change.
+       (compilation-find-file): Move save-excursion to where it may
+       make sense.  Fix a left over `find-file'.
+
+2006-07-11  Robert J. Chassell  <bob@rattlesnake.com>
+
+       * textmodes/texinfmt.el (texinfo-format-separate-node):
+       Insert a string before point, which fits documentation, not after.
+       (texinfo-multitable-item): In a multitable row, insert any
+       additional needed @tabs and spaces.
+
+2006-07-11  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tumme.el (tumme-create-thumb, tumme-thumbnail-display-external)
+       (tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original)
+       (tumme-set-exif-data, tumme-get-exif-data): Use call-process
+       instead of shell-command.
+       (tumme-create-thumbnail-buffer, tumme-create-display-image-buffer)
+       (tumme-display-thumbs, tumme-modify-mark-on-thumb-original-file)
+       (tumme-display-image, tumme-get-exif-data): Use with-current-buffer.
+       (tumme-display-properties-format, tumme-dired-insert-marked-thumbs)
+       (tumme-thumbnail-set-image-description, tumme-gallery-generate)
+       (tumme-rotate-original, tumme-get-exif-file-name): Fit to 80 columns.
+
+2006-07-11  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (sit-for): Doc fix.  Specify normal arg list using fn-form.
+       Remove special case for seconds < 0.  Use (redisplay t) instead.
+
+2006-07-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/cc-awk.el (c-awk-escaped-nls*): Use eval-and-compile to
+       avoid compilation error.
+
+       * subr.el (sit-for): New function.
+
+       * play/hanoi.el (hanoi-sit-for): Check sit-for return value.
+
+2006-07-10  Richard Stallman  <rms@gnu.org>
+
+       * ldefs-boot.el (edebug): Update page.
+
+2006-07-10  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/authors.el (authors-ignored-files): Ignore changes
+       to FOR-RELEASE and TODO.
+
+2006-07-10  Romain Francoise  <romain@orebokech.com>
+
+       * emacs-lisp/authors.el (authors-aliases): Update.
+
+2006-07-10  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el:
+       * cc-mode.el: Changes to eradicate eval-after-load.
+
+2006-07-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/helper.el (Helper-help-scroller): Don't signal error
+       on non-char events.
+
+2006-07-09  Romain Francoise  <romain@orebokech.com>
+
+       * progmodes/compile.el (compilation-mode-font-lock-keywords):
+       Don't highlight start/end markers as compilation messages.
+
+       * isearch.el (isearch-yank-line): Let-bind `inhibit-field-text-motion'
+       to t.
+
+2006-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/fill.el (fill-region-as-paragraph): Refine last change.
+
+2006-07-08  Richard Stallman  <rms@gnu.org>
+
+       * term/x-win.el (x-handle-display): Add doc string.
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix.
+
+       * subr.el (def-edebug-spec): Move here.
+       * emacs-lisp/edebug.el (def-edebug-spec): Move to subr.el.
+
+       * imenu.el (imenu-choose-buffer-index): Doc fix.
+
+2006-07-08  Romain Francoise  <romain@orebokech.com>
+
+       * term/x-win.el (x-display-name): Fix typo.
+
+2006-07-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * hexl.el (hexl-find-file): Doc fix.
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix.
+
+2006-07-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * term/x-win.el (x-display-name): Doc fix.
+
+2006-07-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/fill.el (fill-delete-prefix): Don't ignore excessively
+       long prefixes.
+       (fill-region-as-paragraph): Don't round up to a whole line.
+       (fill-comment-paragraph): Don't include the code-before-the-comment
+       when calling fill-region-as-paragraph.
+
+       * international/mule.el (make-char): Remove redundancy.
+
+       * emacs-lisp/bytecomp.el (byte-compile-form): The `byte-compile'
+       property may contain an anonymous function rather than a symbol.
+
+       * pcvs-defs.el (cvs-temp-buffer-name): Fix non-hiddenness.
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist) <gnu>:
+       Use shy regexp.  Fix incorrect backref to potentially unmatched group.
+
+       * dirtrack.el (dirtrack-default-directory-function): Remove.
+       (dirtrack-directory-function): Use file-name-as-directory.
+       (dirtrack-windows-directory-function): Simplify.
+       (dirtrack-forward-slash, dirtrack-backward-slash)
+       (dirtrack-replace-slash): Remove.
+       (dirtrack-toggle): Adjust comint-preoutput-filter-functions as well.
+       (dirtrack): Fix wrong parenthesizing; use match-string.
+
+       * progmodes/octave-inf.el: Remove spurious * in docstrings.
+       (inferior-octave-mode): Only change the buffer-local value of
+       comint-dynamic-complete-functions.
+       (inferior-octave-mode-map, inferior-octave-mode-syntax-table):
+       Move the initialization to the declaration.
+       (inferior-octave-complete): Remove unused var `filter'.
+
+       * shell.el (shell-mode): Only change the buffer-local value of
+       comint-dynamic-complete-functions.
+
+2006-07-07  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-get-todos): Skip subtree also if
+       entry is skipped because it has been scheduled.
+       (org-prepare-agenda-buffers): Don't mark buffers as modified when
+       changing `:org-archived' and `:org-comment' properties.
+
+2006-07-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * server.el (server-select-display): Don't make the temp frame
+       minibuffer-only, in case it's not a temp frame.
+       (server-process-filter): Don't delete the temp frame if it's the
+       only one we have on that display.
+
+       * files.el (find-alternate-file): Doc fix.
+
+2006-07-05  Richard Stallman  <rms@gnu.org>
+
+       * files.el (abbreviate-file-name): Add save-match-data.
+
+2006-07-03  Richard Stallman  <rms@gnu.org>
+
+       * faces.el (read-face-name): Doc fix.
+
+2006-07-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * net/goto-addr.el (goto-address): Mark as safe for local evals.
+
+2006-07-05  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc.el (vc-diff-internal): Fix prev change.
+
+2006-07-05  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/lisp-mode.el (emacs-lisp-mode-map): Use eval-buffer.
+       * play/dunnet.el (dun-load-d, dun-eval): Likewise.
+
+2006-07-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * thingatpt.el (symbol-at-point): Don't use `form-at-point' which
+       fails if the symbol contains chars like ( or '.
+       (bounds-of-thing-at-point): Remove unused vars `end' and `beg'.
+       (thing-at-point-bounds-of-url-at-point): Remove unused vars `url' and
+       `short'.
+
+2006-07-04  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (set-language-info): If LANG-ENV is
+       the current one, don't call set-language-environment, but call one
+       of set-language-environment-XXX to make INFO effective now.
+       (set-language-environment): Call set-language-environment-XXX
+       functions instead of doing the various setups directly.
+       (set-language-environment-coding-systems): Delete argument eol-type.
+       (set-language-environment-input-method)
+       (set-language-environment-nonascii-translation)
+       (set-language-environment-charset)
+       (set-language-environment-fontset)
+       (set-language-environment-unibyte): New functions.
+
+2006-07-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * locate.el (locate-update-when-revert): New option.
+       (locate-update-path): New option (suggested by Michael Albinus).
+       (locate-prompt-for-command): Whitespace change.
+       (locate-update): No longer offer to update the locate database by
+       default.  Implement the two new options.
+
+2006-07-04  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tooltip.el: Move comment about track-mouse...
+
+       * progmodes/gud.el: ...to here.
+
+2006-07-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * facemenu.el (facemenu-listed-faces): New var.
+       (facemenu-unlisted-faces): Variable deleted.
+       (facemenu-add-new-face): Use facemenu-listed-faces.
+
+       * emulation/viper-init.el, calendar/calendar.el:
+       * progmodes/make-mode.el: Delete calls to facemenu-unlisted-faces.
+
+2006-07-03  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-mode): Remove no invalid settings for
+       calc embedded mode.
+       (org-mode-p): New defsubst.
+       (org-save-all-org-buffers): New function.
+       (org-first-headline-recenter): Enclose outline-regexp in group
+       delimiters.
+       (org-set-tags): Keep single space after stars.
+
+2006-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.el (set-window-text-height): Only set window-min-height to
+       1 if that's the requested size.
+
+       * diff-mode.el (diff-find-file-name): Obey cvs-pcl-cvs-dirchange-re.
+       (diff-unified->context, diff-context->unified)
+       (diff-reverse-direction): Make sure the end marker stays at the end.
+       (diff-mode): Add the keymap table at the end of docstring.
+       Use lexical-let rather than constructing a closure manually.
+
+       * files.el (find-file-noselect-1): Remove unused var assignment.
+       (hack-local-variables-confirm): Print lists of strings as lists of
+       strings rather than lists of symbols.
+       (abbreviate-file-name, hack-local-variables-prop-line):
+       Use match-string.
+       (hack-one-local-variable): Move `make-local-variable' nearer its use.
+       (recover-session-finish): Use line-end-position.
+
+2006-07-02  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-handle-shell-command): Preserve current-buffer.
+
+2006-07-02  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * progmodes/make-mode.el (makefile-macroassign-regex):
+       Accept preceding keyword.
+       (makefile-gmake-statements): Reorganize, now that makepp has
+       "override" and also handle forgotten "override define".
+       (makefile-makepp-statements): Add new "global", "override export"
+       and "override global".
+
+2006-06-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/ada-mode.el (ada-which-compiler, ada-mode-menu)
+       (ada-compile-mouse-goto-error, ada-deactivate-properties)
+       (ada-no-auto-case): Fix typos in docstrings.
+
+2006-06-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * info.el (Info-find-node-2): Search for makeinfo version more
+       carefully.
+
+2006-06-29  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-prepare-agenda-buffers):
+       Use `invisible-OK' argument for `org-end-of-subtree'.
+       (org-export-cleanup-toc-line): Rename from `org-html-cleanup-toc-line'.
+       (org-beginning-of-item): Fix bug in regular expression for white line.
+       (org-export-as-html): Enforce space after bullet in plain list items.
+       (org-set-autofill-regexps): Require space after plain list bullet
+       for paragraph-start.
+       (org-ts-regexp3): New constant.
+       (org-at-timestamp-p): New optional argument ALSO-INACTIVE.
+       (org-timestamp-up-day, org-timestamp-down-day)
+       (org-timestamp-change): Work with inactive timestamps.
+       (org-ts-regexp1): Don't allow brackets in time stamps.
+
+2006-06-29  Nick Roberts  <nickrob@snap.net.nz>
+
+       * help-mode.el (help-xref-symbol-regexp): Add property as a keyword
+       for ignoring links.
+
+       * faces.el (read-face-name): Use it.
+
+2006-06-28  Juri Linkov  <juri@jurta.org>
+
+       * buff-menu.el (list-buffers-noselect): Compare Info file
+       with the string "dir" to detect Info directory.
+
+       * complete.el (partial-completion-mode): In lambda for
+       `choose-completion-string-functions' use full function signature
+       with 4 args, and move point to the end of the minibuffer only if arg
+       `mini-p' is non-nil.
+
+2006-06-28  John Paul Wallington  <jpw@pobox.com>
+
+       * ibuffer.el (ibuffer-mode): Doc fix.
+
+2006-06-28  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-context): New contexts :item-bullet,
+       :latex-fragment, :latex-preview.
+       (org-overlays-at, org-overlay-start, org-overlay-end):
+       New compatibility functions.
+       (org-inside-LaTeX-fragment-p): More accurate matching, using the
+       exact regexp that will be used during export.
+       (org-latex-regexps): New variable.
+       (org-cdlatex-mode): Improve advice for `texmathp'.
+       (turn-on-org-cdlatex): New function.
+
+2006-06-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-handle-font-selection): Change keys of
+       mac-atsu-font-table from strings to numbers.
+       (mac-ts-caret-position): Use also when cursor-type is nil.
+       (mac-ts-update-active-input-area): Add Mac OS Classic support.
+       Relax condition for using overlay strings.
+       Use mac-ts-caret-position face when cursor-type is nil.
+
+2006-06-26  Kim F. Storm  <storm@cua.dk>
+
+       * help.el (view-emacs-news): Declare `res' in the right let* form.
+
+2006-06-25  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/rcompile.el (remote-compile): Replace ange-ftp based
+       implementation by Tramp functions.
+       Suggested by Marc Abramowitz <msabramo@gmail.com>.
+
+       * net/tramp.el (tramp-unload-tramp): Provide a doc string.
+
+2006-06-24  Yoshinori Koseki  <kose@meadowy.org>
+
+       * international/fontset.el (setup-default-fontset): Fix a typo in
+       the "Oriya-Akruti" registry name.
+
+2006-06-23  Lars Hansen  <larsh@soem.dk>
+
+       * desktop.el (desktop-full-file-name): New function.
+       (desktop-kill, desktop-save, desktop-remove, desktop-read)
+       (desktop-revert): Use it.
+       (desktop-clear, desktop-save, desktop-remove): Add autoload cookie.
+       (desktop-after-read-hook): Add option list-buffers.
+       (desktop-locals-to-save): Add tab-width.
+       (desktop-save-mode, desktop-no-desktop-file-hook, desktop-save-hook):
+       Fix docstring.
+
+2006-06-23  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-cdlatex-mode-map)
+       (org-cdlatex-texmathp-advice-is-done): New variables.
+       (org-cdlatex-mode): New minor mode.
+       (org-inside-LaTeX-fragment-p, org-try-cdlatex-tab): New functions.
+       (org-cdlatex-underscore-caret, org-cdlatex-math-modify): New commands.
+       (org-export-with-archived-trees): New option.
+       (org-open-file): Remove the call to `convert-standard-filename'.
+       (org-archive-tag, org-agenda-skip-archived-trees)
+       (org-cycle-open-archived-trees)
+       (org-sparse-tree-open-archived-trees): New options.
+       (org-cycle-hide-archived-subtrees, org-hide-archived-subtrees)
+       (org-toggle-tag, org-prepare-agenda-buffers, org-agenda-skip):
+       New functions.
+       (org-agenda-toggle-archive-tag, org-toggle-archive-tag): New commands.
+       (org-agenda-mode-map): Add binding of `org-agenda-toggle-archive-tag'.
+       (org-mode-map): Add binding for `org-toggle-archive-tag'.
+       (org-timeline, org-agenda-list, org-todo-list, org-tags-view):
+       Call `org-prepare-agenda-buffers'.
+       (org-occur, org-scan-tags): Call `org-hide-archived-subtrees'.
+       (org-file-apps, org-file-apps-defaults-gnu)
+       (org-file-apps-defaults-macosx, org-file-apps-defaults-windowsnt):
+       Handle remote files by forcing them to be opened in Emacs.
+
+2006-06-23  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc.el (vc-diff-knows-L): New variable.
+       (vc-diff-internal): Use it to handle "diff" programs that don't
+       understand -L.  This works automatically, no user action is necessary.
+
+2006-06-23  Daniel Brockman  <daniel@brockman.se>
+
+       * net/rcirc.el (rcirc-default-user-full-name): Default to
+       `rcirc-default-user-name' instead of `rcirc-user-name' (which no
+       longer exists).
+       (rcirc-process-list): Check `buffer-live-p' before attempting to
+       switch to a buffer.
+
+2006-06-23  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-mode): Fix initialization of coding systems
+       based on rcirc-coding-system-alist.
+
+2006-06-23  Martin Rudalics  <rudalics@gmx.at>
+
+       * cus-edit.el (customize-apropos): A better error message.
+       (top level) <debug-ignored-errors>: Extend and update the list of
+       ignored error messages.
+
+2006-06-23  Michael Ernst  <mernst@alum.mit.edu>
+
+       * complete.el (PC-do-completion): Retain capitalization of user
+       input, when possible, even if completion-ignore-case is set.
+
+2006-06-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * generic-x.el (bat-generic-mode): Support .cmd files.
+
+       * dos-w32.el (top level): Use find-file-not-found-functions
+       instead of the obsolete find-file-not-found-hooks.
+
+2006-06-22  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (grep-mode-font-lock-keywords): Correct regexps
+       to recognize mode name containing submodes, such as Grep/lw.
+
+2006-06-21  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move-1): Check for move-end-of-line instead of
+       end-of-line when setting temporary-goal-column.
+
+2006-06-21  Miles Bader  <miles@gnu.org>
+
+       * play/cookie1.el (cookie): Work properly when there's only one entry.
+
+2006-06-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-exited): Ensure overlay arrow gets killed.
+       (gdb-frame-handler): Generalize frame regexp for templates.
+
+2006-06-20  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/appt.el (appt-display-format): Default value must be
+       one of the customize options.
+
+2006-06-20  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Update key availability info.
+       Bind C-return.
+
+       * term.el (term-delete-lines, term-insert-lines): Clarify comments.
+
+2006-06-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el (hack-local-variables): Run `hack-local-variables-hook'
+       whether or not a local variables list is defined.
+
+       * msb.el (msb): Move `sit-for' hack here to handle both
+       "mouse-down and drag" and "mouse-up and select" situations.
+       (mouse-select-buffer): Move `sit-for' hack to `msb'.
+
+2006-06-20  Kenichi Handa  <handa@m17n.org>
+
+       * international/characters.el (word-combining-categories):
+       Add entries for 2-byte Han characters.
+
+2006-06-19  Richard Stallman  <rms@gnu.org>
+
+       * bindings.el (mode-line-format): Save some mode line space.
+
+       * files.el (find-file-noselect): Improve the question wording.
+       (basic-save-buffer-2): Mask UMASK against 666.
+
+       * mouse.el (mouse-drag-vertical-line-rightward-window): New function.
+       (mouse-drag-vertical-line): Call it.
+
+       * cus-edit.el (customize-option, customize-option-other-window):
+       Error if SYMBOL is nil.
+
+2006-06-19  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el: Require noutline, also on XEmacs.
+       (org-end-of-subtree): Return point.
+       (org-dblock-start-re, org-dblock-end-re): New constants.
+       (org-create-dblock, org-prepare-dblock, org-map-dblocks)
+       (org-dblock-update, org-update-dblock, org-beginning-of-dblock)
+       (org-update-all-dblocks, org-find-dblock): New functions.
+       (org-collect-clock-time-entries): New function.
+       (org-html-handle-time-stamps): Never export CLOCK timeranges.
+       (org-fixup-indentation): Modify to deal correctly with lines
+       starting with TAB.  Only one argument DIFF now.
+       (org-demote, org-promote): Call `org-fixup-indentation' with just
+       one argument, DIFF.
+       (org-mode): Don't mark buffer as modified when aligning tables.
+       (org-clock-sum): Don't mark buffer modified when adding time sum
+       properties.
+       (org-export-as-html): Add support for a link validation function.
+       (org-archive-all-done): New function.
+       (org-archive-subtree): New prefix argument.  When set, archive all
+       done subtrees in this buffer.
+       (org-remove-clock-overlays)
+       (org-remove-occur-highlights): Use `org-inhibit-highlight-removal'.
+       (org-inhibit-highlight-removal): New variable, for dynamic scoping.
+       (org-put-clock-overlay): Don't swallow last headline character
+       when displaying overlay.
+       (org-store-link): Link to `image-mode' with just the file name.
+
+2006-06-18  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-cmd.el (viper-special-read-and-insert-char):
+       Use read-key-sequence.
+       (viper-after-change-undo-hook): Misc enhancements.
+       (viper-after-change-undo-hook): New hook.
+       (viper-undo): Use viper-after-change-undo-hook.
+       (viper-add-newline-at-eob-if-necessary): Widen before making changes.
+       (viper-next-line-at-bol): If point is on a widget or a button, simulate
+       clicking on that widget/button.
+
+       * viper.el (viper-mode): Allow a separate cursor color in Emacs state.
+
+       * ediff-diff (ediff-test-patch-utility): Catch errors.
+       (ediff-actual-diff-options, ediff-actual-diff3-options): New variables.
+       (ediff-set-actual-diff-options): New function.
+       (ediff-reset-diff-options, ediff-toggle-ignore-case):
+       Use ediff-set-actual-diff-options.
+       (ediff-extract-diffs): Catch errors.
+       (ediff-whitespace): Add non-breakable space.
+       (ediff-same-file-contents): Catch errors.
+
+       * ediff-mult.el (ediff-collect-custom-diffs):
+       Save coding-system-for-read.
+
+       * ediff-vers.el (ediff-keep-tmp-versions): New variable.
+       (ediff-vc-internal, ediff-vc-merge-internal):
+       Use ediff-delete-version-file.
+       (ediff-delete-version-file): New function.
+
+       * ediff-wind.el (ediff-control-frame-parameters): Set frame fringes.
+
+       * ediff.el (ediff-directories, ediff-directory-revisions)
+       (ediff-merge-directories, ediff-merge-directories-with-ancestor)
+       (ediff-directories-internal, ediff-merge-directory-revisions)
+       (ediff-merge-directory-revisions-with-ancestor)
+       (ediff-directories3): Use read-directory-name.
+
+2006-06-18  Ralf Angeli  <angeli@caeruleus.net>
+
+       * textmodes/tex-mode.el (tex-font-lock-match-suscript):
+       Remove superfluous part of regexp for brace matching which is handled
+       by `scan-lists' call.
+
+2006-06-16  Richard Stallman  <rms@gnu.org>
+
+       * obsolete/options.el (list-options): Put "obsolete" msg in buffer.
+
+       * files.el (basic-save-buffer-2): For a new precious file,
+       use the default modes in the return value.
+
+       * facemenu.el (facemenu-color-alist): Doc fix.
+
+       * cus-edit.el (custom-guess-name-alist): Recognize `-flag'.
+
+2006-06-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * cus-start.el (all): Add mac-ts-script-language-on-focus.
+
+       * term/mac-win.el (mac-text-encoding-ascii): New constant.
+       (mac-utxt-to-string): Use it.
+       (mac-ts-update-active-input-area): Use mac-ae-number.
+
+2006-06-15  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (term-handle-scroll, term-delete-lines)
+       (term-insert-lines): Fix off by one errors.
+
+2006-06-15  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * net/tramp.el (tramp-touch): Use UTC to express time.
+
+2006-06-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mail/sendmail.el (mail-send): Search explicitly for
+       mail-header-separator when checking for corrupted header lines.
+
+2006-06-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-same-frame): New option.
+       (gud-old-arrow, gdb-frame-begin, gdb-printing): New variables.
+       (gdb-init-1): Initialise them.
+       (gdb-starting): Reset gdb-printing
+       (gdb-starting): Save value of gud-overlay-arrow-position.
+       (gdb-frame-begin): Set gdb-frame-begin, gdb-printing.
+       (gdb-stopped): Don't look for source if calling procedure e.g "p a ()".
+       Use gdb-*-gdb-buffer conditionally on gdb-same-frame.
+       (gdb-frame-gdb-buffer): Keep menu bar, tool bar for GUD buffer.
+
+2006-06-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs.el (cvs-retrieve-revision): Use decode-coding-inserted-region.
+
+2006-06-13  Martin J. Reed  <mjreed@essex.ac.uk>  (tiny change)
+
+       * net/ldap.el (ldap-ldapsearch-args): Default to SASL search.
+       (ldap-search-internal): Keep error messages, and a regexp fix.
+
+2006-06-12  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * files.el (hack-local-variables-confirm):
+       Display string value using its printed representation.
+
+2006-06-11  Chong Yidong  <cyd@stupidchicken.com>
+
+       * server.el (server-edit): No-op if no server buffers exist.
+
+2006-06-11  Robert J. Chassell  <bob@rattlesnake.com>
+
+       * textmodes/page-ext.el (pages-directory-for-addresses):
+       Including `pages-directory-address-mode' in the function results
+       in the message "Buffer in which pages were found is deleted".
+
+2006-06-10  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-mode-map): Add bindings for
+       clocking functions.
+
+       (org-agenda-clock-in, org-check-running-clock)
+       (org-clock-out-if-current, org-remove-clock-overlays)
+       (org-put-clock-overlay): New functions.
+       (org-clock-marker, org-clock-file-total-minutes)
+       (org-clock-overlays): New variables.
+       (org-clock-display, org-clock-sum, org-clock-cancel)
+       (org-clock-out, org-clock-in): New commands.
+       (org-export): New function.
+       (org-emph-re): New constant.
+       (org-set-emph-re, org-do-emphasis-faces): New functions.
+       (org-emphasis-regexp-components, org-emphasis-alist): New options.
+       (org-set-font-lock-defaults): Call `org-do-emphasis-faces'.
+       (org-export-html-convert-emphasize): Use the configurable emphasis.
+       (org-cleaned-string-for-export): Make multiline emphasis visible
+       to the exporter.  New optional argument PARAMETERS.
+       (org-export-as-html): Specify :emph-multiline parameter to
+       `org-cleaned-string-for-export'.
+
+2006-06-10  Richard Stallman  <rms@gnu.org>
+
+       * help.el (help-for-help-internal): Clean up help text.
+
+2006-06-10  Andreas Schwab  <schwab@suse.de>
+
+       * language/ethio-util.el (ethio-fidel-to-java-buffer): Fix quoting
+       in doc string.
+
+       * progmodes/cperl-mode.el (cperl-short-docs): Likewise.
+
+2006-06-09  Karl Chen  <quarl@cs.berkeley.edu>
+
+       * progmodes/make-mode.el (makefile-fill-paragraph): Don't remove
+       spaces after the comment start.
+
+2006-06-09  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * play/pong.el (pong-init-buffer):
+       Fill buffer with spaces instead of ^A.
+
+       * textmodes/ispell.el (ispell-kill-ispell): If ispell has been
+       launched asynchronously, delete its process instead of being cool.
+       (ispell-async-processp): Check for `delete-process' existence
+       instead of `kill-process' one for consistency.
+
+2006-06-09  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers-1)
+       (gdb-prompt, gdb-set-gud-minor-mode-existing-buffers): Show status
+       in mode line at startup.
+
+2006-06-08  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-take-first-match, ido-push-dir-first): New commands.
+       (ido-init-completion-maps): Bind them to M-SPC and M-v.
+       (ido-copy-current-file-name): Repeating C-w inserts whole file name.
+       (ido-file-internal): Pass full file name to write-file.
+       (ido-read-internal): Only pop stack elements automatically if they
+       actually match an existing directory or file name.
+
+2006-06-07  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule.el (find-auto-coding): Don't handle the short
+       name `char-trans'.
+
+       * files.el (hack-local-variables-prop-line)
+       (hack-local-variables): Cancel the previous change.
+
+2006-06-06  Jesper Harder  <harder@phys.au.dk>
+
+       * ediff-diff.el (ediff-test-utility): Protect against file-error.
+
+2006-06-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * diff-mode.el (diff-mode): Set buffer-read-only to t when
+       diff-default-read-only is non-nil.
+       (diff-hunk-kill, diff-file-kill, diff-split-hunk)
+       (diff-refine-hunk): Set inhibit-read-only to t.
+
+       * diff.el (diff-sentinel, diff): Set inhibit-read-only to t when
+       modifying the *Diff* buffer.
+       (diff-process-filter): New filter function for diff process that
+       sets inhibit-read-only to t when modifying the *Diff* buffer.
+
+2006-06-06  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-archive-subtree): Use end-of-subtree as
+       insertion point and control the number of empty lines.
+       (org-paste-subtree): Limit the number of empty lines at the end of
+       the inserted tree.
+       (org-agenda): Use buffer name of current file for narrowing.
+       (org-export-as-xml): Command removed.
+       (org-export-xml-type): Option removed.
+       (org-mode-map): Call `org-export-as-xoxo' directly.
+       (org-get-indentation): New optional argument LINE.
+       (org-fix-indentation, org-remove-tabs): New functions.
+       (org-export-as-ascii, org-ascii-level-start): Determine and apply
+       correct indentation for headlines that are converted it items.
+       (org-skip-comments): Remove table lines that contain narrowing
+       cookies but no other non-empty fields.
+       (org-set-tags): Allow groups of mutually exclusive tags.
+       (org-cmp-time): Sort 24:21 before items without time.
+       (org-get-time-of-day): Fix the interpretation of 12pm and 12am.
+       (org-open-at-point): Require double colon also for numbers.
+
+2006-06-06  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-default-file-method, ido-default-buffer-method):
+       Make choice values consistent with corresponding command names.
+       (ido-visit-buffer): Update accordingly.  Default to selected-window.
+
+2006-06-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-running): Fix doc string.
+       (gud-menu-map): Use :visible instead fo :enable for debugger test.
+       (gud-tooltip-modes): Add python-mode.
+       (gud-tooltip-print-command): Add pdb.  Remove perldb.
+
+2006-06-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (bootstrap, $(lisp)/mh-e/mh-loaddefs.el):
+       Quote $(EMACS).
+
+2006-06-05  Richard Stallman  <rms@gnu.org>
+
+       * faces.el (defined-colors): Doc fix.
+
+2006-06-05  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * vc.el (vc-process-filter): Inhibit undo info collection around
+       call to insert.
+       (vc-setup-buffer): Likewise for call to erase-buffer.
+       (vc-do-command): Likewise for call to process-file.
+
+2006-06-05  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Use a conditional help echo
+       for gud-go.
+       (gud-common-init): Other debuggers may trigger error.
+
+2006-06-05  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule.el (find-auto-coding):
+       Handle enable-character-translation in file header.
+
+2006-06-04  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/authors.el (authors-aliases): Add mode aliases.
+       (authors-fixed-entries): Fix spelling.
+       (authors-canonical-file-name): Don't report error for wildcards.
+
+       * help.el (view-emacs-news): Rewrite to support new NEWS,
+       NEWS.major, and NEWS.1-17 file naming.  Add more intelligence,
+       e.g. version 10 matches 1.10, and don't be confused by version 1.1
+       being a prefix of 1.12 (etc).  A numeric prefix arg also works.
+
+2006-06-03  Vivek Dasmohapatra  <vivek@etla.org>
+
+       * progmodes/sh-script.el (sh-quoted-exec): New face for quoted
+       exec constructs like `foo bar`.
+       (sh-quoted-subshell): New helper function to search for a possibly
+       nested subshell (like `` or $()) within a "" quoted string.
+       (sh-font-lock-keywords-var): Add sh-quoted-exec for Bash.
+       (sh-apply-quoted-subshell): Flag quote characters inside a
+       subshell, which is itself already in a quoted region, as
+       punctuation, since this is the closest to what they actually are.
+       (sh-font-lock-syntactic-keywords): Add sh-quoted-subshell and
+       sh-apply-quoted-subshell.
+       (sh-font-lock-syntactic-face-function): Apply the new face for
+       text inside `` instead of the old font-lock-string-face.
+
+2006-06-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-ts-active-input-overlay): Add defvar.
+       (mac-ae-number, mac-ae-frame, mac-ae-script-language)
+       (mac-bytes-to-text-range, mac-ae-text-range-array)
+       (mac-ts-update-active-input-buf, mac-split-string-by-property-change)
+       (mac-replace-untranslated-utf-8-chars, mac-ts-update-active-input-area)
+       (mac-ts-unicode-for-key-event): New functions.
+       (mac-handle-toolbar-switch-mode): Use mac-ae-frame.
+       (mac-handle-font-selection): Use mac-ae-number.
+       (mac-ts-active-input-buf, mac-ts-update-active-input-area-seqno):
+       New variables.
+       (mac-ts-caret-position, mac-ts-raw-text, mac-ts-selected-raw-text)
+       (mac-ts-converted-text, mac-ts-selected-converted-text)
+       (mac-ts-block-fill-text, mac-ts-outline-text)
+       (mac-ts-selected-text, mac-ts-no-hilite): New faces.
+       (mac-ts-hilite-style-faces): New constant.
+       (mac-apple-event-map): Bind text input events.
+       (mac-dispatch-apple-event): Use command-execute instead of
+       call-interactively.
+       (global-map): Don't bind mac-apple-event.
+       (special-event-map): Bind mac-apple-event.
+
+2006-06-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (EMACS): Remove quotes from the Emacs executable
+       file name.
+       (emacs): Enclose the value of $(EMACS) in quotes.
+
+2006-06-02  Juri Linkov  <juri@jurta.org>
+
+       * international/mule.el (sgml-html-meta-auto-coding-function):
+       Remove the condition `(search-forward "<html" size t)'.
+       Replace `\"' with `[\"']?' in `re-search-forward'.
+
+2006-06-02  Kenichi Handa  <handa@m17n.org>
+
+       * files.el (hack-local-variables-prop-line): Ignore `char-trans'
+       as well as `coding'.
+       (hack-local-variables): Likewise.
+
+       * international/mule.el (enable-character-translation):
+       Put permanent-local and safe-local-variable properties.
+       (find-auto-coding): Handle char-trans: tag.
+
+2006-06-02  Juri Linkov  <juri@jurta.org>
+
+       * international/mule.el (sgml-html-meta-auto-coding-function):
+       Limit the search by the end of the HTML header (if any).
+
+2006-06-01  Richard Stallman  <rms@gnu.org>
+
+       * subr.el (with-current-buffer): Doc fix.
+
+2006-06-02  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist::gcov-*):
+       Almost rewrite.  Underlines over all lines of gcov output are too
+       uncomfortable to read.  Suggested by Dan Nicolaescu.
+
+2006-06-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * progmodes/inf-lisp.el (inferior-lisp-mode): Doc fixes.
+
+       * shell.el (shell-mode): Use shell-mode-map in docstring.
+
+       * comint.el (comint-send-input): Do not add help-echo and
+       mouse-face to input if `comint-use-prompt-regexp' is non-nil.
+
+2006-06-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el: Change x-menu-bar-start to menu-bar-open.
+
+2006-06-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-look-up-stack): New variable.
+       (gdb-stopped, gdb-info-stack-custom): If there is no source info
+       look up the stack and pop up GUD buffer if necessary.
+       (gdb-frames-select): Remove redundant call to gud-display-frame.
+       (gdb-info-threads-custom): Keep point at start of buffer.
+       (gdb-find-file-hook): Make it work for pre-GDB 6.4.
+
+2006-05-31  Juri Linkov  <juri@jurta.org>
+
+       * replace.el (query-replace-read-from, query-replace-read-to):
+       Bind `history-add-new-input' to nil.  Call `add-to-history'.
+
+2006-05-31  Takaaki Ota  <Takaaki.Ota@am.sony.com>
+
+       * textmodes/table.el: Convert all HTML tags to lower case for
+       XHTML compatibility.
+
+2006-05-31  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/compile.el:
+       (compilation-error-regexp-alist-alist::gcov-called-line):
+       Don't put face on `-' lines in gcov file.  Suggested by Dan Nicolaescu.
+
+2006-05-31  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-query-cmdline, gud-common-init):
+       Revert inadvertent changes made with last commit.
+
+2006-05-30  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * textmodes/flyspell.el (turn-on-flyspell, turn-off-flyspell):
+       New functions.
+
+       * textmodes/text-mode.el (text-mode-hook): Use turn-on-flyspell.
+
+2006-05-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-highlight-todo): Make sure regexp
+       only matches in the right place.
+       (org-upcoming-deadline): New face.
+       (org-agenda-get-deadlines): Use new face `org-upcoming-deadline'.
+       (org-export-ascii-underline): Rename constant `org-ascii-underline'
+       and make it an option.
+       (org-export-ascii-bullets): New option.
+       (org-export-as-html): Many changes to emit valid XHTML.
+       (org-par-open): New variable.
+       (org-open-par, org-close-par-maybe, org-close-li-maybe): New functions.
+       (org-html-do-expand, org-section-number): Fix case in `replace-match'.
+       (org-timeline): Pass `org-timeline-show-empty-dates' to
+       `org-get-all-dates'.  Interpret empty dates returned by
+       `org-get-all-dates'.
+       (org-get-all-dates): New argument EMPTY.  Add dates without
+       entries to the list, mark large ranges of empty dates.
+       (org-point-in-group, org-context): New functions.
+
+2006-05-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-stop-subjob): Make it work in all buffers.
+
+       * progmodes/gdb-ui.el: Move gdb-mouse-toggle-breakpoint-* to
+       C-mouse-1.  Move gdb-mouse-until to mouse-3, gdb-mouse-jump
+       to C-mouse-3 (for 2 button mice).
+       (gdb-send): Do the right thing for C-d.
+
+       * speedbar.el (speedbar-detach): Delete.
+       (speedbar-easymenu-definition-trailer): Remove speedbar-detach as
+       it breaks things.
+       (speedbar-reconfigure-keymaps): Always add extra items to pop up menu.
+
+2006-05-30  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * files.el (auto-mode-alist): Add makepp suffix and optional mk on
+       Makeppfile.
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist):
+       Add makepp diagnostic.
+
+2006-05-29  Richard Stallman  <rms@gnu.org>
+
+       * window.el (fit-window-to-buffer): Doc fix.
+
+       * help.el (temp-buffer-max-height): Doc fix.
+
+       * subr.el (with-current-buffer): Doc fix.
+
+2006-05-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el: Bind F10 to menu-bar-start if available.
+
+2006-05-28  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (term-if-xemacs, term-ifnot-xemacs): Delete, replace
+       uses with a simple test.
+       (term-set-escape-char, term-mode, term-check-kill-echo-list)
+       (term-send-raw-string, term-send-raw, term-mouse-paste)
+       (term-char-mode, term-line-mode, term-exec, term-sentinel)
+       (term-handle-exit, term-read-input-ring)
+       (term-previous-matching-input-string)
+       (term-previous-matching-input-string-position)
+       (term-previous-matching-input-from-input)
+       (term-replace-by-expanded-history, term-send-input)
+       (term-skip-prompt, term-bol, term-send-invisible)
+       (term-kill-input, term-delchar-or-maybe-eof)
+       (term-backward-matching-input, term-check-source)
+       (term-proc-query, term-emulate-terminal)
+       (term-handle-colors-array, term-process-pager, term-pager-line)
+       (term-pager-bob, term-unwrap-line, term-word)
+       (term-dynamic-complete-filename)
+       (term-dynamic-complete-as-filename)
+       (term-dynamic-simple-complete): Replace one arm ifs with whens or
+       unlesses.
+
+2006-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files.el (hack-one-local-variable-eval-safep): Don't burp if used
+       during bootstrapping.
+
+       * emacs-lisp/ewoc.el (ewoc--current-dll): Remove.
+       Basically undo the change of 2006-05-26: use extra arguments instead of
+       dynamic scoping.
+       (ewoc-locate): Remove unused var `footer'.
+
+2006-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/ewoc.el (ewoc--insert-new-node): Use ewoc--refresh-node.
+
+       * emacs-lisp/autoload.el (no-update-autoloads): Declare.
+       (generate-file-autoloads): Obey it.  Return whether autoloads were
+       added at point or not.
+       (update-file-autoloads): Use this new return value.
+       Remove redundant test for the presence of an autoload cookie.
+
+       * emacs-lisp/autoload.el (autoload-find-file): New fun.
+       This one calls hack-local-variables.
+       (generate-file-autoloads, update-file-autoloads): Use it.
+
+       * textmodes/bibtex.el (bibtex-autokey-name-case-convert-function)
+       (bibtex-sort-entry-class): Add safe-local-variable predicate.
+       (bibtex-sort-entry-class-alist): Don't set the global value.
+       (bibtex-init-sort-entry-class-alist): New fun.
+       (bibtex-sort-buffer, bibtex-prepare-new-entry): Call it to compute
+       bibtex-init-sort-entry-class-alist from the buffer-local value (if any)
+       of bibtex-init-sort-entry-class.
+
+2006-05-28  Richard Stallman  <rms@gnu.org>
+
+       * subr.el (load-history-regexp): If FILE is relative, insist
+       entire last name component must match it.
+       (load-history-filename-element, load-history-regexp): Doc fixes.
+
+2006-05-29  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/bindat.el (bindat-idx, bindat-raw): Rename dynamic vars
+       `pos' and `raw-data' for clarity, as eval forms may access these.
+
+2006-05-28  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/bindat.el (bindat--unpack-u8): Use aref also for strings.
+
+2006-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/make-mode.el (makefile-browser-map)
+       (makefile-mode-syntax-table): Move initialization inside declaration.
+       (makefile-fill-paragraph): Use the default comment-filling code.
+
+2006-05-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * replace.el (query-replace-defaults): New variable.
+       (query-replace-read-from): Use `query-replace-defaults' for
+       default value, instead of history list.
+       (query-replace-read-to): Update `query-replace-defaults'.
+
+2006-05-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * msb.el (mouse-select-buffer): Minor fix to make popup menu work
+       with no X toolkit.
+
+2006-05-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tumme.el (tumme-show-all-from-dir-max-files): Fix typo.
+       (tumme-show-all-from-dir): Add autoload.
+
+2006-05-27  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el: Change a lot of `(if .. (progn ..)' to `(when ..)'.
+       (tumme-remove-tag): Fix bug.
+
+2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc--create): No longer take HEADER and
+       FOOTER args.  Update unique caller.
+       (ewoc-delete): Compute last node once before looping.
+       (ewoc--node-branch): Merge into unique caller.
+       (ewoc--node): Don't define constructor make-ewoc--node for this
+       structure.
+       (ewoc): Add member `hf-pp' to this structure.
+       (ewoc--wrap): New func.
+       (ewoc-create): Take additional arg NOSEP.  If nil, wrap node and
+       header/footer pretty-printers.  Save header/footer pretty-printer.
+       (ewoc-set-hf): Use ewoc's header/footer pretty-printer.
+
+       * pcvs.el (cvs-make-cvs-buffer): Specify NOSEP to `ewoc-create'.
+
+2006-05-27  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * dired.el (dired-mode-map): Change `tumme-tag-remove' to
+       `tumme-delete-tag'.  Rename `Remove Image Tag' to `Delete Image
+       Tag'.  Change "Compare directories..." to "Change Directories...".
+       Move tumme commands to Operate, Regexp and Immediate menus.
+       Change "Add Comment" to "Add Image Comment".  Change "Add Image
+       Tag" to "Add Image Tags".
+
+       * tumme.el (tumme-delete-tag): Rename from `tumme-tag-remove'.
+       (tumme-setup-dired-keybindings): Change `tumme-add-remove' to
+       `tumme-delete-tag'.
+
+2006-05-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * shell.el (shell-mode): Call shell-dirtrack-mode after
+       list-buffers-directory is made a local variable, to avoid setting
+       the default value.
+
+2006-05-26  Kevin Ryde  <user42@zip.com.au>
+
+       * info.el (Info-index-next): Use where-is-internal to report
+       actual binding of Info-index-next, rather than hard-coded `,'.
+
+2006-05-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * menu-bar.el (menu-bar-apropos-menu): Move "Find Key in Manual"
+       and "Find Command in Manual" to here.
+
+       * buff-menu.el (list-buffers-noselect): For Info buffers, use
+       Info-current-file as the file name.
+
+2006-05-26  Jonathan Yavner  <jyavner@member.fsf.org>
+
+       * ses.el (defadvice undo-more): Delete this defadvice.  The undo
+       overrides will now be done a different way.
+       (ses-set-parameter): Reapply this function for undo.
+       (ses-set-header-row): Reconstruct header row during undo.
+       (ses-widen): New function.
+       (ses-goto-data, ses-reconstruct-all): Use new function.
+       (ses-command-hook): Widen buffer during undo, before unupdating
+       the cells.
+       (ses-insert-row, ses-delete-row): Widen buffer during undo.
+       (ses-load, ses-header-row): Permit empty (zero-row) spreadsheets.
+       (ses-read-cell): Avoid stupid warning for RET RET on a cell whose
+       formula hasn't been executed yet.
+
+2006-05-26  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * comint.el (comint-kill-whole-line): Rename arg to count.
+       Fix doc string.
+
+2006-05-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el (backup-buffer-copy): Remove deleted MUSTBENEW argument
+       to copy-file.
+
+2006-05-26  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * simple.el (toggle-truncate-lines): Make arg optional for
+       backward compatibility.
+
+2006-05-26  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc--current-dll): New var.
+       (ewoc--node-next, ewoc--node-prev, ewoc--node-nth): Don't take
+       DLL arg.  Instead, use ewoc--current-dll.  Update all callers.
+       (ewoc--set-buffer-bind-dll-let*): Bind ewoc--current-dll, not `dll'.
+       (ewoc--adjust): Use ewoc--current-dll.
+       (ewoc-next, ewoc-prev, ewoc-nth): Bind ewoc--current-dll.
+
+2006-05-26  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-next-item, org-previous-item): Emit more
+       compact error message.
+       (org-tags-view): Refresh category table in each file.
+       (org-table-justify-field-maybe): Remove superfluous arguments to
+       `format'.
+       (org-export-as-html): Insert "<p>" before postamble.
+       (org-paste-subtree, org-kill-is-subtree-p): Check for empty kill ring.
+
+2006-05-26  Kenichi Handa  <handa@m17n.org>
+
+       * textmodes/po.el (po-find-charset): Pay attention to the case
+       FILENAME is a cons (NAME . BUFFER).
+       (po-find-file-coding-system-guts): Likewise.
+
+       * arc-mode.el (archive-set-buffer-as-visiting-file):
+       Call find-operation-coding-system with (FILENAME . BUFFER).
+
+       * tar-mode.el (tar-extract): Call find-operation-coding-system
+       with (FILENAME . BUFFER).
+
+       * international/mule.el (decode-coding-inserted-region):
+       Call find-operation-coding-system with (FILENAME . BUFFER).
+
+2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image-mode.el (image-toggle-display): Use buffer contents to
+       generate image for a remote file.
+
+2006-05-25  Juri Linkov  <juri@jurta.org>
+
+       * replace.el (query-replace-read-from, query-replace-read-to):
+       Remove 8th arg KEEP-ALL in read-from-minibuffer.
+
+2006-05-25  Rajesh Vaidheeswarran  <rv@gnu.org>
+
+       * whitespace.el (whitespace-cleanup): Change to cleanup
+       region if one is active.
+       * whitespace.el (whitespace-cleanup-internal): New internal method.
+
+2006-05-25  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * dired.el (dired-mode-map): Add help-echo strings to tumme
+       commands.  Bind `tumme-dired-display-image' to C-t i.
+
+       * tumme.el (tumme-display-image): Change documentation string slightly.
+       (tumme-dired-display-image): Add call to `display-buffer'.
+
+2006-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/bindat.el (bindat-unpack, bindat-pack):
+       Signal error if RAW-DATA is a multibyte string.
+
+2006-05-24  Richard Stallman  <rms@gnu.org>
+
+       * subr.el (with-local-quit): When handling `quit' signal,
+       make a chance for quit-flag to cause a quit.
+
+       * emacs-lisp/advice.el (ad-enable-advice, ad-activate)
+       (ad-disable-advice): Add autoloads.
+
+       * subr.el (read-passwd): Copy PROMPT before changing its properties.
+
+2006-05-25  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * dired.el (dired-mode-map): Change menu items for tumme as per
+       suggestions in emacs-devel.
+
+2006-05-25  Nick Roberts  <nickrob@snap.net.nz>
+
+       * dired.el (dired-mode-map): Fix breakage.
+
+2006-05-25  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-display-dired-image): Rename to...
+       (tumme-dired-display-image): ...this.
+       (tumme-track-movement): Change default value to t.
+       (tumme-display-thumbs): Add new optional parameter DO-NOT-POP,
+       used from `tumme-next-line-and-display' and similar commands.
+
+       * dired.el (dired-mode-map): Add Thumbnail submenu under the
+       Immediate menu.  Add some tumme commands there.
+
+2006-05-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * loadup.el ("jka-cmpr-hook"): Load it before it is needed.
+
+2006-05-24  Chong Yidong  <cyd@mit.edu>
+
+       * menu-bar.el, international/mule-cmds.el: Remove tooltips for
+       menu entries that open submenus.
+
+2006-05-24  Alan Mackenzie  <acm@muc.de>
+
+       * startup.el (command-line): For names of preloaded files, don't
+       append ".elc" (now done in Fload), and call file-truename on the
+       lisp directory.
+
+       * subr.el (eval-after-load): Fix the doc-string.  Allow FILE to
+       match ANY loaded file with the right name, not just those in
+       load-path.  Put a regexp matching the file name into
+       after-load-alist, rather than the name itself.
+
+       * subr.el (load-history-regexp, load-history-filename-element)
+       (do-after-load-evaluation): New functions.
+
+       * international/mule.el (load-with-code-conversion): Do the
+       eval-after-load stuff by calling do-after-load-evaluation.
+
+2006-05-25  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-sentinel): Condition on GUD buffer if it
+       has not been killed.
+
+2006-05-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Set idle timer to clean up expired Apple events.
+       (mac-ae-get-url): Redispatch Apple event on unknown scheme.
+       (mac-dispatch-apple-event): Resume Apple event if it is suspended.
+       Optionally set error message in reply.
+
+2006-05-24  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-open-at-point): Use renamed variable
+       `org-confirm-shell-link-function'.
+       (org-confirm-shell-link-function): Rename from
+       `org-confirm-shell-links'.
+       (org-export-directory): New function.
+       (org-export-as-ascii, org-export-as-html, org-export-as-xoxo)
+       (org-export-icalendar): Use `org-export-directory'.
+       (org-indent-item): Keep cursor position.
+       (org-link-file-path-type): New option.
+       (org-export-as-html): Fix bug with plain lists starting in
+       column 0.
+       (org-export-as-html): Remove deadline formatting, this happens
+       now already in `org-html-handle-time-stamps'.
+       (org-export-html-style): Deadline class removed.
+       (org-insert-labeled-timestamps-at-point): New option.
+       (org-cycle, org-occur, org-scan-tags): Use `org-overview' instead
+       of `hide-sublevels 1', in case the first headline is not level 1.
+       (org-overview, org-content): New fuction.
+       (org-cycle-global-status, org-cycle-subtree-status): Make these
+       variables buffer-local.
+       (org-global-cycle): New command.
+       (org-shifttab): Use `org-global-cycle'.
+       (org-insert-heading, org-insert-item): Go to end of new
+       headline/item after creating it.
+       (org-export-visible): Rename from `org-export-copy-visible'.
+       Now creates a temporary org-file and applies an exporting command
+       to it.
+       (org-table-eval-formula): Support for lisp forms.
+       (org-agenda-todo-ignore-scheduled): New option.
+       (org-agenda-get-todos): Use new option
+       `org-agenda-todo-ignore-scheduled'.
+       (org-export-html-inline-images): New value `maybe'.
+       (org-export-as-html): Inlining of images dependent on link description.
+       (org-archive-subtree): Check for end-of-buffer before trying
+       `kill-line'.
+       (org-agenda-follow-mode): New option.
+       (org-export-with-tags, org-export-with-timestamps): New options.
+       (org-html-handle-time-stamps): New function.
+       (org-keyword-time-regexp): New variable.
+       (org-agenda-get-todos): Use `org-agenda-todo-list-sublevels'.
+       (org-agenda-todo-list-sublevels): New option.
+       (org-html-level-start): When TITLE is nil, just close all levels.
+       (org-parse-key-lines, org-parse-export-options): Remove functions,
+       replaced by `org-infile-export-plist'.
+       (org-combine-plists, org-infile-export-plist)
+       (org-default-export-plist): New functions.
+       (org-export-html-preamble, org-export-html-postamble)
+       (org-export-html-auto-preamble, org-export-html-auto-postamble):
+       New variables.
+       (org-export-publishing-directory): New option.
+       (org-export-as-html, org-export-as-ascii): Use the new property
+       lists for settings.
+       (org-export-copy-visible, org-export-as-xoxo):
+       Respect `org-export-publishing-directory'.
+       (org-link-search, org-store-link, org-file-apps): Support for
+       links to BibTeX database entries..
+       (org-get-current-options, org-set-regexps-and-options):
+       Implement logging as a startup option.
+       (org-store-link): Make sure context string is never empty
+       (org-insert-link): Use relative path when possible.
+       (org-at-item-checklet-p): New function.
+       (org-shifttab, org-shiftmetaleft, org-shiftmetaright)
+       (org-shiftmetaup, org-shiftmetadown, org-metaleft)
+       (org-metaright, org-metaup, org-metadown, org-shiftup)
+       (org-shiftdown, org-shiftright, org-shiftleft)
+       (org-ctrl-c-ctrl-c, org-cycle, org-return, org-meta-return):
+       Dispatch using `call-interactively'.
+       (org-call-with-arg): New defsubst.
+       (org-tag-alist, org-use-fast-tag-selection): New options.
+       (org-complete): Use `org-tag-alist'.
+       (org-fast-tag-insert, org-fast-tag-selection): New functions.
+       (org-next-item, org-previous-item): New commands.
+       (org-beginning-of-item, org-end-of-item): Add (interactive) to
+       make command.
+       (org-shiftup, org-shiftdown): Accommodate the item-navigation commands.
+
+2006-05-23  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc-delete): New function.
+       (ewoc-filter): Use `ewoc-delete'.
+
+       * emacs-lisp/bindat.el (bindat-pack): Doc fix.
+
+2006-05-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/bibtex.el (bibtex-format-entry, bibtex-clean-entry):
+       Signal more user-friendly error messages.
+
+       * complete.el (PC-do-completion): Undo the addition of implicit
+       wildcards if they did not lead to finding any match.
+       (read-file-name-internal): Don't add the final > if the completion is
+       not finished.
+
+2006-05-22  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * textmodes/bibtex.el (bibtex-maintain-sorted-entries):
+       Quote safe-local-variable predicate.
+
+2006-05-22  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc-set-data): New function.
+
+2006-05-21  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-maintain-sorted-entries): Mark as safe.
+
+       * progmodes/make-mode.el (makefile-special-targets-list)
+       (makefile-macro-table, makefile-target-table): Mark as risky.
+       (makefile-query-one-target-method): Make this the alias for the
+       following variable.
+       (makefile-query-one-target-method-function): Make this the real name.
+
+       * textmodes/artist.el (artist-text-renderer): Make this the alias
+       for the following variable.
+       (artist-text-renderer-function): Make this the real name.
+
+       * textmodes/flyspell.el (flyspell-generic-check-word-p): Make this
+       the alias for the following variable.
+       (flyspell-generic-check-word-predicate): Make this the real name.
+
+       * textmodes/ispell.el (ispell-format-word): Make this the alias
+       for the following variable.
+       (ispell-format-word-function): Make this the real name.
+       (ispell-message-text-end): Mark as risky.
+
+       * skeleton.el (skeleton-transformation, skeleton-filter)
+       (skeleton-pair-filter): Make these the aliases for the following
+       variables.
+       (skeleton-transformation-function, skeleton-filter-function)
+       (skeleton-pair-filter-function): Make these the real names.
+
+       * progmodes/sh-script.el (sh-mode): Use skeleton-filter-function
+       and skeleton-pair-filter-function.
+
+       * textmodes/sgml-mode.el (sgml-transformation): Make this the
+       alias for the following variable.
+       (sgml-transformation-function): Make this the real name.
+       (sgml-tag-alist): Mark as risky.
+
+2006-05-21  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (kill-region): Interactively, pass point, then mark.
+
+2006-05-22  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc-create): Add autoload cookie.
+
+2006-05-21  Romain Francoise  <romain@orebokech.com>
+
+       * dired-x.el (dired-mode-map): Don't bind M-g.
+
+2006-05-20  Richard Stallman  <rms@gnu.org>
+
+       * dired.el (dired-mode-map): Put dired-goto-file on j, not M-g.
+       (dired-goto-file): Doc fix.
+
+2006-05-21  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el: Mention customizing cua-mode as alternative
+       way to enable built-in cua-mode if user loads older CUA-mode package.
+
+       * ido.el (ido-read-file-name): Bind ido-show-dot-for-dired to nil
+       if default-filename is specified.
+
+2006-05-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * menu-bar.el (menu-bar-manuals-menu) <info-apropos>: New menu item.
+
+       * info.el (info-apropos): Make sure current-file and current-node
+       have non-nil values.  Speed up by using add-to-list instead of
+       manual consing.
+
+2006-05-20  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * progmodes/make-mode.el (makefile-mode): Doc fix.
+
+2006-05-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * dired-aux.el (dired-do-shell-command): Doc fix.
+
+2006-05-20  Kevin Ryde  <user42@zip.com.au>
+
+       * info-xref.el (info-xref-check-all-custom): Skip :tag part of
+       ``(custom-manual :tag "Foo" "(foo)Node")''.
+
+2006-05-20  Karl Chen  <quarl@cs.berkeley.edu>
+
+       * progmodes/cc-vars.el (c-backslash-column): Mark as safe if its
+       value is an integer.
+
+2006-05-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmail.el (rmail-mime-charset-pattern): Add "?:" before
+       "format".
+       (rmail-convert-to-babyl-format): Undo the change from 2006-04-19.
+
+2006-05-20  Martin Rudalics  <rudalics@gmx.at>
+
+       * progmodes/hideif.el (show-ifdef-block): Fix bug where parts of
+       a hidden block remained hidden if `hide-ifdef-lines' is non-nil.
+
+2006-05-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/gud.el (gdb-script-font-lock-keywords): Use a stricter
+       regexp for keywords.
+
+2006-05-20  Masayuki FUJII  <boochang@m4.kcn.ne.jp>  (tiny change)
+
+       * dnd.el (dnd-get-local-file-name): Specify LITERAL in
+       replace-regexp-in-string.
+
+       * term/w32-win.el (w32-drag-n-drop): Substitute '/' for '\',
+       encode, and escape file name on conversion to URL.
+
+2006-05-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dnd.el (dnd-handle-one-url): Change 3rd arg ARG to URL.
+       Don't unescape URL.
+       (dnd-get-local-file-name): Unescape URL on conversion to file name.
+
+       * x-dnd.el (x-dnd-handle-file-name): Encode and escape file names
+       on conversion to URLs.
+
+       * net/browse-url.el (browse-url-file-url): Encode file name on
+       conversion to URL.
+
+       * term/mac-win.el (mac-ae-open-documents): Escape file name on
+       conversion to URL.
+
+2006-05-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * progmodes/cc-styles.el (c-style-alist): Doc fix.
+
+2006-05-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-bytes-to-digits): Remove function.
+       (mac-handle-toolbar-switch-mode): Use coercion instead of it.
+
+2006-05-19  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/diary-lib.el (diary-bahai-date)
+       (list-bahai-diary-entries, mark-bahai-diary-entries)
+       (mark-bahai-calendar-date-pattern): Not interactive.
+       (add-to-diary-list): New optional arg LITERAL.  Doc fix.
+       (diary-entries-list): Change format of 4th element in each entry.
+       (diary-list-entries): Use add-to-diary-list.
+       (diary-goto-entry): Handle the case where the buffer visiting the
+       diary has been killed.
+       (fancy-diary-display): Add 'locator to button rather than 'marker.
+       Only generate temp-face when there are marks to apply.
+       (list-sexp-diary-entries): Pass literal to add-to-diary-list.
+       (diary-fancy-date-pattern): New variable.
+       (diary-time-regexp): Doc fix.
+       (diary-anniversary, diary-time): New faces.
+       (fancy-diary-font-lock-keywords): Use diary-fancy-date-pattern and
+       diary-time-regexp.  Add font-lock-multiline property where needed.
+       Use new faces diary-anniversary and diary-time.
+       (diary-fancy-font-lock-fontify-region-function): New function, to
+       handle multiline font-lock pattern in fancy diary.
+       (fancy-diary-display-mode): Set font-lock-fontify-region-function.
+       (diary-font-lock-keywords): Tweak time regexp.  Use new face
+       diary-time.
+
+2006-05-19  Alexander Shopov  <ash@contact.bg>  (tiny change)
+
+       * international/code-pages.el (mik): Table corrected.
+
+2006-05-18  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (grep-find): Don't check grep-find-command
+       before running command (breaks non-interactive usage).
+
+2006-05-18  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc--adjust): New func.
+       (ewoc--insert-new-node): Don't insert trailing newline.
+       Instead, adjust successor nodes's start markers.
+       (ewoc--refresh-node): Delete all text from current node's start
+       marker to the next one's; adjust successor nodes's start markers.
+       (ewoc--create): Doc fixes.
+       (ewoc--refresh): Don't insert newline.
+       (ewoc--set-hf): Use `ewoc--set-buffer-bind-dll-let*'.
+       * pcvs.el (cvs-make-cvs-buffer):
+       Specify extra newline for ewoc's header and footer.
+       (cvs-update-header): Update initial header recognition.
+       Append newline to final header and footer values.
+       * pcvs-info.el (cvs-fileinfo-pp): Insert trailing newline.
+
+2006-05-17  Richard Stallman  <rms@gnu.org>
+
+       * files.el (file-name-extension): Doc fix.
+
+2006-05-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * shell.el (shell-dirtrack-mode): Make it into a proper minor mode, so
+       we can explicitly enable/disable rather than toggle.
+       (shell-mode): Use it.
+       (shell-cd): Don't try to reproduce what `cd' does.
+
+2006-05-17  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-read-internal): Use only nondirectory part of
+       default item.
+
+2006-05-17  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc-data): Add docstring.
+       (ewoc-nth): Doc fix.
+
+       (ewoc-map, ewoc-invalidate): Compute PP before looping.
+
+2006-05-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/mule.el (auto-coding-alist): Add .lha to files
+       read with no-conversion.
+
+       * files.el (auto-mode-alist): Add .lha files to archive file
+       extensions.
+
+       * arc-mode.el (archive-arc-summarize, archive-lzh-summarize):
+       Convert csize to integer when computing offsets within the
+       compressed archive file.
+
+2006-05-16  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (add-to-history): Add KEEP-ALL arg and align functionality
+       with read-from-minibuffer.
+
+2006-05-16  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * emacs-lisp/bytecomp.el (byte-compile-warnings-safe-p): New function.
+       (byte-compile-warnings): Fix safe-local-variable property.
+
+2006-05-16  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-show-bodies, allout-old-style-prefixes)
+       (allout-stylish-prefixes, allout-numbered-bullet)
+       (allout-file-xref-bullet, allout-use-hanging-indents): Use simple
+       predicates to qualify `safe-local-variable' property, when
+       available, else use equivalent lambda.
+       (allout-current-topic-collapsed-p): Do the right thing regarding
+       trailing blank lines.
+
+2006-05-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * server.el (server-start): Only create a directory if needed.
+       (server-edit, server-unload-hook): server-start => server-mode.
+       (kill-emacs-hook): Cleanup upon exit.
+
+2006-05-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * hexl.el (hexlify-buffer): Encode process arguments manually.
+
+2006-05-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-tooltip-tips): Add missing argument to
+       call to gdb-tooltip-print.
+
+2006-05-15  Romain Francoise  <romain@orebokech.com>
+
+       * dired-x.el (dired-guess-shell-gnutar): On GNU and GNU/Linux
+       systems, default to "tar" since those systems probably have GNU tar.
+
+2006-05-14  Lars Hansen  <larsh@soem.dk>
+
+       * desktop.el (desktop-missing-file-warning): Fix docstring.
+       (desktop-restore-file-buffer): Correct question asked on missing file.
+
+2006-05-14  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/cc-subword.el (c-forward-subword, c-backward-subword):
+       Add CUA move property.
+
+2006-05-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (custom-push-theme): Load the variable before checking
+       its `standard-value'.
+
+2006-05-13  Lars Hansen  <larsh@soem.dk>
+
+       * desktop.el (desktop-save): Use with-temp-buffer.
+
+2006-05-12  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/cal-menu.el (calendar-mode-map, calendar-mouse-3-map):
+       * calendar/calendar.el (calendar-mode-map):
+       * calendar/diary-lib.el (include-other-diary-files, diary-mail-entries):
+       * calendar/appt.el (appt-check, appt-make-list): Refer to
+       diary-view-entries, diary-list-entries, diary-show-all-entries
+       rather than obsolete aliases.
+
+2006-05-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (line-move-finish): Avoid calling point motion hooks
+       while processing intangibility.
+
+2006-05-12  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Fix typo.
+
+2006-05-12  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (allout-view-change-hook): Mark as being deprecated,
+       to be replaced by `allout-exposure-change-hook'.
+       (allout-exposure-change-hook): New, replacing
+       `allout-view-change-hook'.
+       (allout-flag-region): Run new hook `allout-exposure-change-hook',
+       in addition to `allout-view-change-hook'.
+       (allout-show-bodies, allout-old-style-prefixes)
+       (allout-stylish-prefixes, allout-use-hanging-indents): Quote the
+       lambda forms to prevent their showing up in variable help
+       presentations as inscrutable byte-compiled code.
+       (allout-numbered-bullet, allout-file-xref-bullet, allout-layout):
+       Use string-or-null-p to qualify safe-local-variable values.
+       (allout-reindent-bodies): Use memq to qualify matches against
+       valid safe-local-variable values.  Also, quote the lambda as above.
+       (allout-use-mode-specific-leader): Add missing candidate-value
+       symbols, use memq, and quote the lambda.
+       (allout-overlay-interior-modification-handler): Remove unused
+       variables `msg' and 'opened'.
+       (allout-hidden-p): Constrain invisibility consideration to allout's
+       invisibility spec, disregarding invisibility for other reasons.
+
+2006-05-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * files.el (version-control): Correct safe values.
+
+2006-05-12  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc-refresh): Compute PP once before looping.
+
+       (ewoc--node-enter-before, ewoc--create-node): Delete funcs.
+       (ewoc--insert-new-node): New func.
+       Update callers of deleted funcs to use it, instead.
+
+2006-05-11  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/calendar.el (diary-show-all-entries): Do not refer to
+       obsolete alias `show-all-diary-entries'.
+       (make-diary-entry): Not interactive.
+       (cal-tex-cursor-month, cal-tex-cursor-month-landscape)
+       (cal-tex-cursor-day, cal-tex-cursor-week, cal-tex-cursor-week2)
+       (cal-tex-cursor-week-iso, cal-tex-cursor-week-monday)
+       (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
+       (cal-tex-cursor-year-landscape, cal-tex-cursor-filofax-year)
+       (cal-tex-cursor-filofax-daily, cal-tex-cursor-year): Interactive.
+
+2006-05-11  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * calendar/calendar.el (calendar-french-date-string)
+       (calendar-mayan-date-string, calendar-chinese-date-string)
+       (calendar-astro-date-string, calendar-iso-date-string)
+       (calendar-islamic-date-string, calendar-bahai-date-string)
+       (calendar-hebrew-date-string, calendar-coptic-date-string)
+       (calendar-ethiopic-date-string, calendar-persian-date-string):
+       These functions are not interactive.
+
+2006-05-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * files.el: Balance parentheses.
+
+2006-05-11  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * files.el, newcomment.el, outline.el, simple.el,
+       * emacs-lisp/bytecomp.el, progmodes/cc-compat.el,
+       * progmodes/cc-vars.el, progmodes/compile.el:
+       Move `safe-local-variable' declarations to the respective files.
+
+       * help-fns.el (describe-variable): Don't print safe-var if it is
+       byte-code.  Improve wording as suggested by Luc Teirlinck.
+
+2006-05-11  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-reset): Update speedbar if necessary.
+       (gdb-var-evaluate-expression-handler, gdb-var-update-handler):
+       Use a token for pending-triggers to ensure gdb-var-update
+       gets called once per user input again for pre-GDB 6.4.
+       (gdb-var-delete): Match on more complex expressions.
+       (gdb-var-list-children-handler, gdb-var-create-handler):
+       Use a token for consistency.
+
+2006-05-11  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-read-date, org-goto-calendar)
+       (org-agenda-goto-calendar):
+       Bind `view-calendar-holidays-initially' to nil.
+
+2006-05-11  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc--refresh-node): No longer save-excursion.
+       Update all callers to do it there, instead.
+
+2006-05-10  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/calendar.el (calendar-basic-setup): Set day to 1 in
+       prefix arg case, to avoid view-diary-entries-initially error.
+       Reported by Stephen Berman <Stephen.Berman at gmx.net>.
+       (calendar-date-is-legal-p): Handle dates with no day part.
+
+2006-05-11  Nick Roberts  <nickrob@snap.net.nz>
+
+       * comint.el (comint-insert-input): Just make it when
+       comint-use-prompt regexp is nil (default) and with the mouse.
+       (comint-copy-old-input): Reinstate from 2004-06-23.
+       (comint-mode-map): Bind C-c C-m to it.
+
+2006-05-10  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlw-shell.el (idlwave-shell-move-or-history):
+       Remove spurious move to point-max (new comint behavior fixes).
+
+       * progmodes/idlwave.el (idlwave-push-mark): Removed obsolete
+       compatibility function (Emacs 18/19).
+       (idlwave-is-continuation-line): Always return point at start of
+       previous non-blank continuation line.
+       (keyword-parameters): Fix continued comment font-lock matcher.
+       (idlwave-font-lock-fontify-region): Written, use as
+       font-lock-fontify-region-function, to fix continued keyword
+       fontification issues.
+
+2006-05-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-font-panel-mode): Doc fix.
+       (mac-service-selection, mac-service-open-file)
+       (mac-service-open-selection, mac-service-mail-selection)
+       (mac-service-mail-to, mac-service-insert-text): Rename from
+       mac-services-*.  All uses changed.
+       (mac-apple-event-map): Rename event symbol `services' to `service'.
+
+2006-05-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc--dll-create, ewoc--node-delete)
+       (ewoc--node-enter-first, ewoc--node-enter-last)
+       (ewoc--delete-node-internal): Merge funcs into unique callers.
+
+2006-05-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/crm.el (completing-read-multiple): Properly handle
+       return value of read-from-minibuffer for empty input.
+
+2006-05-09  Miles Bader  <miles@gnu.org>
+
+       * comint.el (comint-insert-input): Remove redundant calls to setq
+       and goto-char.
+
+2006-05-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * comint.el (comint-insert-input): Make it work when
+       comint-use-prompt-regexp is t.
+
+2006-05-10  Miles Bader  <miles@gnu.org>
+
+       * subr.el (field-at-pos): New function.
+
+       * comint.el (comint-insert-input): Use it.
+
+2006-05-09  Juri Linkov  <juri@jurta.org>
+
+       * battery.el (battery-linux-proc-acpi): Also try
+       `/proc/acpi/thermal_zone/THR2/temperature'.
+
+       * files.el <safe-local-variable>: Remove `eval' and `let' binding
+       for now unused lambda `string-or-null'.
+
+       * add-log.el (change-log-default-name): Put `string-or-null-p'
+       instead of lambda on `safe-local-variable' property.
+
+       * diff-mode.el (diff-context->unified): Use `region-beginning' and
+       `region-end' instead of `mark' and `point'.
+       (diff-unified->context, diff-reverse-direction, diff-fixup-modifs):
+       Operate on region in Transient Mark mode when the mark is active.
+       Use `region-beginning' and `region-end' instead of `mark' and
+       `point'.
+       (diff-hunk-text, diff-goto-source): Doc fix.
+
+       * startup.el (fancy-splash-screens, normal-splash-screen): Use
+       face `mode-line-buffer-id' for mode-line buffer face instead of
+       hard-coded `(:weight bold)'.
+
+       * arc-mode.el (archive-set-buffer-as-visiting-file): Bind
+       buffer-undo-list to t (undo-ask is reproducible by visiting
+       nested archives).
+
+2006-05-09  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (rgrep): Set default directory of *grep*
+       buffer if we start M-x rgrep in the *grep* buffer and choose
+       a different base directory.
+
+2006-05-09  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-register-file-name-handlers): Enable Tramp
+       completion also when ido is loaded.
+
+2006-05-09  Masatake YAMATO  <jet@gyve.org>
+
+       * font-lock.el (cpp-font-lock-keywords-source-directives): Added
+       "warning" and "import".
+       (cpp-font-lock-keywords): Added "warning".
+
+2006-05-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Add more key bindings.
+
+2006-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mwheel.el (mwheel-scroll): Make sure that when scrolling multiple
+       pages at a time, if we signal the end, we should indeed reach that end.
+
+2006-05-08  David Reitter  <david.reitter@gmail.com>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Only preserve messages
+       output during execution of the body.
+
+2006-05-08  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (lgrep, rgrep): Doc fixes.
+
+2006-05-08  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc--set-buffer-bind-dll-let*):
+       Use with-current-buffer.
+
+2006-05-07  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (add-to-history): Remove keep-dups arg.
+
+       * kmacro.el (kmacro-push-ring): Let-bind history-delete-duplicates
+       to nil around call to add-to-history.
+
+2006-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/syntax.el (syntax-ppss): Flush the cache before rather
+       than after a buffer modification.
+
+2006-05-08  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-handler): Move speedbar
+       call to...
+       (gud-watch): ...here so speedbar is raised for already watched
+       expressions.
+       (gdb-speedbar-refresh): Delete function.
+       (gdb-speedbar-update, gdb-speedbar-timer-fn): New functions.
+       Use speedbar-timer-fn instead of speedbar-refresh (reverting
+       earlier change).
+       (gdb-var-evaluate-expression-handler)
+       (gdb-var-list-children-handler-1, gdb-var-update-handler-1): Use it.
+
+       * speedbar.el (speedbar-timer-fn): Remove save-window-excursion.
+       Update localized contents for all buffers except ignored modes.
+
+2006-05-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-utxt-to-string): Use `eq' instead of `='.
+       (mac-atsu-font-table, mac-font-panel-mode): Add defvars.
+       (mac-bytes-to-digits, mac-handle-toolbar-switch-mode)
+       (mac-handle-font-panel-closed, mac-handle-font-selection):
+       New functions.
+       (mac-font-panel-mode): New minor mode.
+       (mac-apple-event-map): Add bindings for toolbar toggle button and
+       font panel.
+       (menu-bar-showhide-menu): Add mac-font-panel-mode.
+
+2006-05-07  John Paul Wallington  <jpw@pobox.com>
+
+       * ibuffer.el (ibuffer-compressed-file-name-regexp):
+       Avoid `regexp-opt'; simplify regexp for readability.
+
+2006-05-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * ldefs-boot.el (dired-do-redisplay, dired-maybe-insert-subdir):
+       * files.el (buffer-stale-function):
+       * dired-aux.el (dired-do-redisplay, dired-maybe-insert-subdir):
+       * autorevert.el (global-auto-revert-non-file-buffers): Point Info
+       links to the main manual, not to emacs-xtra.
+
+2006-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-utxt-to-string): Don't make adjustment for
+       MacJapanese if text is ASCII-only.
+
+2006-05-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-goto-breakpoint): Use or instead of
+       unless so nil isn't returned.
+       (gdb-setup-windows, gdb-restore-windows): Reset gdb-source-window.
+
+2006-05-06  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (add-to-history): New function.
+
+       * ediff.el (ediff-files, ediff-files3, ediff-merge-files)
+       (ediff-merge-files-with-ancestor):
+       * env.el (setenv):
+       * isearch.el (isearch-update-ring):
+       * server.el (server-visit-files):
+       * progmodes/grep.el (lgrep, rgrep):
+       * progmodes/vhdl-mode.el (vhdl-generate-makefile-1):
+       * progmodes/xscheme.el (xscheme-insert-expression):
+       Use add-to-history.
+
+       * kmacro.el (kmacro-push-ring): Use add-to-history.
+       (kmacro-ring-length): Remove unused defun.
+       (kmacro-start-macro): Use kmacro-push-ring.
+
+2006-05-06  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el (ewoc-create, ewoc-set-hf): Use `insert'
+       directly instead of a lambda expression that calls it.
+
+2006-05-06  Kim F. Storm  <storm@cua.dk>
+
+       * avoid.el (mouse-avoidance-point-position): Use posn-at-point
+       instead of compute-motion.
+
+2006-05-05  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * ibuffer.el (ibuffer-compressed-file-name-regexp): Undo previous
+       change.
+
+2006-05-05  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * startup.el (command-line-1): Refer to "Pure Storage" on
+       pure-space-overflow.
+
+2006-05-05  Martin Rudalics  <rudalics@gmx.at>
+
+       * emacs-lisp/re-builder.el (reb-update-overlays): Cycle through
+       provided faces once they all have been used up.
+
+2006-05-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * startup.el (normal-splash-screen, fancy-splash-screens-1): Add a
+       reference to the Lisp manual to the warning about pure space
+       overflow.
+
+2006-05-05  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * textmodes/ispell.el (ispell-buffer-local-dict): Add a `no-reload'
+       argument to avoid the call to `ispell-internal-change-dictionary'
+       when not needed.
+       (ispell-change-dictionary): Use this argument and call
+       `ispell-internal-change-dictionary' after the possible change
+       to `ispell-local-dictionary'.
+       (ispell-internal-change-dictionary): Check for a change in
+       personal dictionary use too.
+
+2006-05-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * startup.el (command-line): On MS-Windows, probe "~", not
+       "~USER", for warning about non-existent home directory.
+
+       * arc-mode.el (archive-l-e): New optional argument `float' means
+       generate a float value.
+       (archive-arc-summarize, archive-lzh-summarize)
+       (archive-zip-summarize, archive-zoo-summarize): Invoke archive-l-e
+       with 3rd argument non-nil when file's size is being computed.
+       Format the file sizes with %8.0f instead of %8d.
+
+2006-05-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * cus-start.el (all): Add mac-dnd-known-types.
+
+       * term/mac-win.el (mac-utxt-to-string, mac-string-to-utxt)
+       (mac-TEXT-to-string, mac-string-to-TEXT, mac-furl-to-string)
+       (mac-TIFF-to-string): New functions.
+       (x-get-selection, x-selection-value)
+       (mac-select-convert-to-string): Use them.
+       (mac-text-encoding-mac-japanese-basic-variant): New constant.
+       (mac-dnd-types-alist): New customization variable.
+       (mac-dnd-handle-furl, mac-dnd-handle-hfs, mac-dnd-insert-utxt)
+       (mac-dnd-insert-TEXT, mac-dnd-insert-TIFF, mac-dnd-drop-data)
+       (mac-dnd-handle-drag-n-drop-event): New functions.
+       (mac-drag-n-drop): Remove function.
+       (global-map): Bind drag-n-drop and M-drag-n-drop to
+       mac-dnd-handle-drag-n-drop-event.
+
+2006-05-04  Karl Chen  <quarl@NOSPAM.quarl.org>
+
+       * progmodes/perl-mode.el (perl-beginning-of-function):
+       Skip anonymous subs.
+
+2006-05-04  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * ibuffer.el (ibuffer-compressed-file-name-regexp): Avoid loading
+       regexp-opt at run time.
+
+       * term.el (term-handle-ansi-escape): Fix off by one error.
+
+2006-05-04  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-force-update): Delete variable...
+       (gdb-init-1, gdb-post-prompt): ...and references to it.
+       (gdb-frame-handler): Strip directory name from filename if present.
+
+       * progmodes/gud.el (gdb-force-update): Delete defvar
+       (gud-speedbar-buttons): ...and references to it.  Use window-start
+       to try to keep positon in watch expression.
+
+2006-05-03  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (next-history-element, previous-history-element): Doc fix.
+
+       * isearch.el (isearch-update-ring): Doc fix.
+
+2006-05-03  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * isearch.el (isearch-update-ring): Take history-delete-duplicates
+       into consideration.  Replace one arm ifs with whens.
+
+2006-05-03  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gud-watch): Let user select an expression.
+       (menu): Fix typo.
+
+2006-05-02  Miles Bader  <miles@gnu.org>
+
+       * replace.el (occur-engine): Bind `inhibit-field-text-motion' to t.
+
+2006-05-02  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (calc-override-minor-modes-map)
+       (calc-override-minor-modes): New variables.
+       (calc-do-embedded): Make sure that Calc keystrokes aren't
+       overwritten by minor modes.
+
+2006-05-02  Chong Yidong  <cyd@mit.edu>
+
+       * msb.el (msb): If EVENT is a down event, read and discard the up event.
+
+2006-05-02  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * startup.el (command-line-1): Refer to Lisp manual when
+       pure-space-overflow occurs.
+
+       * files.el (byte-compile-dynamic, byte-compile-dynamic-docstrings)
+       (byte-compile-warnings, find-file-visit-truename, indent-tabs-mode)
+       (left-margin, no-byte-compile, no-update-autoloads, truncate-lines)
+       (version-control): Don't use `t' for safe-local-variable declarations.
+
+2006-05-01  Richard Stallman  <rms@gnu.org>
+
+       * diff-mode.el (diff-mode-shared-map): Don't bind M-W, M-U, M-C,
+       M-r, M-R, M-A, M-SPC or M-DEL.
+       (diff-mode-map): diff-refine-hunk now on C-c C-w
+       (diff-mode-map): Bind C-c C-e, C-c C-n, C-c C-r, C-c C-u.
+
+       * help-mode.el (help-mode): view-exit-action calls delete-window
+       only when it is safe and possible.
+
+       * simple.el (undo-outer-limit-truncate): Put quotes around buffer name
+       in messages.
+
+       * emacs-lisp/warnings.el (display-warning, lwarn): Doc fixes.
+
+       * tool-bar.el (tool-bar-setup): Put Help and Preferences items
+       in the default tool-bar-map.
+
+2006-05-01  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-completion-file-name-handler-alist)
+       (tramp-run-real-handler, tramp-completion-run-real-handler)
+       (tramp-completion-handle-file-name-all-completions)
+       (tramp-completion-handle-file-name-completion): Autoload them.
+       (tramp-completion-handle-file-exists-p)
+       (tramp-completion-handle-file-name-directory)
+       (tramp-completion-handle-file-name-nondirectory)
+       (tramp-completion-handle-expand-file-name): Remove them.
+       (tramp-handle-file-name-directory): Return the real directory name.
+       Returning "/" only doesn't need to be necessary any longer.
+       (tramp-file-name-handler): Make special attention when in hostname
+       completion mode.
+       (tramp-completion-file-name-handler): Revert patch from 2006-04-28.
+       (tramp-register-file-name-handlers):
+       Register `tramp-completion-file-name-handler' only when
+       `partial-completion-mode' is enabled.
+       (tramp-completion-handle-file-name-all-completions):
+       Delete directory part from results.
+       (tramp-get-completion-methods, tramp-get-completion-user-host):
+       Discard deleting "/", it doesn't work after the change of
+       `tramp-handle-file-name-directory' above.
+
+2006-05-01  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (grep-expand-template): Use save-match-data
+       and symbol-value.
+
+2006-05-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-ae-open-documents, mac-drag-n-drop):
+       Use select-frame-set-input-focus instead of raise-frame.
+       (global-map): Bind M-drag-n-drop to mac-drag-n-drop.
+
+2006-05-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-def): Add %c case.
+       (gud-speedbar-buttons): Don't bind case-fold-search unnecessarily.
+       (gud-format-command): Make match case sensitive.  Match on %F.
+
+2006-04-30  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/cal-tex.el (cal-tex-preamble-extra): New variable.
+       (cal-tex-preamble): Use cal-tex-preamble-extra.
+       (cal-tex-list-diary-entries): Refer to `diary-list-entries' rather
+       than alias `list-diary-entries'.
+
+2006-04-29  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * help-fns.el (describe-variable): Add info about safe local variables.
+
+2006-04-29  Richard Stallman  <rms@gnu.org>
+
+       * bindings.el (mode-line-format): help-echo doc fixes.
+
+       * net/tramp.el (tramp-file-name-handler-alist): Delete
+       expand-file-name and other operations that can cause spurious loading.
+
+2006-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files.el (safe-local-variable-p): Remove support for the special
+       value t.
+
+       * textmodes/paragraphs.el (sentence-end-without-space):
+       Fix safety predicate.
+       (sentence-end-double-space, sentence-end-without-period)
+       (paragraph-ignore-fill-prefix):
+       * textmodes/fill.el (colon-double-space):
+       * abbrev.el (abbrev-mode): Tighten the safety predicate.
+
+       * subr.el (booleanp): New fun.
+
+       * textmodes/reftex-vars.el (reftex-guess-label-type):
+       Tighten the safety predicate.
+
+2006-04-28  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/grep.el (defgroup grep): Doc fix.
+       (grep-auto-highlight): Remove.
+       (grep-template): New defcustom.
+       (grep-find-template): Rename from grep-tree-template.
+       (grep-files-aliases): Rename from grep-tree-files-aliases.
+       Remove "all" alias, add "l" alias.
+       (grep-tree-ignore-case, grep-tree-ignore-CVS-directories): Remove.
+       (grep-find-ignored-directories): New defcustom to replace
+       grep-tree-ignore-CVS-directories, to facilitate ignoring
+       subdirectories for multiple version control systems.
+       (grep-mode-map): Add Recursive grep item to GREP menu.
+       (grep-regexp-history, grep-files-history): New defvars.
+       (grep-probe): New helper function.
+       (grep-compute-defaults): Use it to simplify code.
+       Adapt to name changes.
+       Use `.' as base in grep-find-template rather than <D>.
+       (grep): Remove superfluous highlight-regexp arg.  Fix doc.
+       Call grep-compute-defaults unconditionally.
+       (grep-expand-keywords): New defconst.
+       (grep-expand-template): Rename from grep-expand-command-macros.
+       Simplify via grep-expand-keywords.  Look at case-fold-search instead
+       of grep-tree-ignore-case to add -i option.
+       Bind case-fold-search to nil while matching keywords.
+       (grep-tree-last-regexp, grep-tree-last-files): Remove.
+       (grep-read-regexp, grep-read-files): New helper functions.
+       (rgrep): Rename from grep-tree.  Rework to use proper histories.
+       Adapt to changes in defcustoms and functions above.
+       (lgrep): New command, as grep, but using same interactive UI as rgrep.
+
+2006-04-28  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-completion-file-name-handler):
+       Disable Tramp's functionality while loading Tramp itself.
+       (tramp-register-file-name-handlers): That's a defsubst now.
+       Code from `tramp-repair-jka-compr' moved here.  Apply it via
+       `after-init-hook'.
+       (tramp-repair-jka-compr): Remove.
+
+2006-04-27  Jay Belanger  <belanger@truman.edu>
+
+       * calc-embed.el (calc-embedded-make-info): Use `math-read-expr' to
+       read expression when `math-read-big-expr' doesn't work.
+
+2006-04-27  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * startup.el (command-line-1): Display warning when
+       pure-space-overflow is non-nil.
+
+2006-04-26  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-user-optional-fields): Mark as
+       risky.
+
+2006-04-26  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-url): New optional arg no-browse.
+       Return the URL or nil if none can be generated.
+
+2006-04-27  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-comint-buffer): Move forward to stop
+       byte compiler warnings.
+       (gud-basic-call, gud-find-expr): Let user select an expression
+       for printing.  Print expression as well as value in GUD buffer.
+
+2006-04-17  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el: Remove local autoload declaration for
+       pgg-gpg-symmetric-key-p, since that's now done in pgg-gpg.el.
+       (allout-show-bodies, allout-header-prefix, allout-primary-bullet)
+       (allout-plain-bullets-string, allout-distinctive-bullets-string)
+       (allout-use-mode-specific-leader, allout-old-style-prefixes)
+       (allout-stylish-prefixes, allout-numbered-bullet)
+       (allout-file-xref-bullet, allout-presentation-padding)
+       (allout-use-hanging-indents, allout-reindent-bodies): Mark as
+       safe-local-variable with suitable value spec, and add autoload
+       cookie for loaddefs inclusion.  We now use an explicit spec everywhere.
+       (move-beginning-of-line, move-end-of-line): Repair so these compat
+       functions now actually resituate the point, when appropriate.
+
+2006-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/cc-subword.el (c-subword-mode-map): Use command remapping.
+
+       * add-log.el (add-log-iso8601-time-zone): Make parameter optional.
+       (add-log-iso8601-time-string): Fix call to format-time-string.
+
+2006-04-26  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (posn-string, posn-image, posn-object): Doc fix.
+
+2006-04-26  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/asm-mode.el (asm-mode, asm-mode-syntax-table):
+       Add support for "//" style comments.  Remove `b' flag
+       from ?* in `asm-mode-syntax-table'.
+
+2006-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * follow.el: Use (featurep 'xemacs) everywhere.
+       (follow-mode): Use define-minor-mode.
+       (follow-mode-map): Move initialization into the declaration.
+       Use command remapping.
+       (follow-emacs-version-xemacs-p): Remove.
+       (follow-submit-feedback): Remove.
+
+       * allout.el (allout-layout, allout-passphrase-verifier-string)
+       (allout-passphrase-hint-string): Tighten up a bit the safety predicate.
+
+       * textmodes/reftex-vars.el (reftex-vref-is-default)
+       (reftex-fref-is-default, reftex-guess-label-type):
+       Tighten up a bit the safety predicate.
+
+       * textmodes/paragraphs.el (sentence-end-double-space)
+       (sentence-end-without-period, sentence-end-without-space)
+       (page-delimiter, paragraph-ignore-fill-prefix):
+       Tighten up a bit the safety predicate.
+
+       * textmodes/fill.el (colon-double-space): Tighten up the safety pred.
+
+       * progmodes/python.el (python-continuation-line-p)
+       (python-beginning-of-statement): syntax-ppss may return
+       a negative depth.
+       (python-mode): Don't forcefully enable font-lock.
+
+       * time-stamp.el (time-stamp-start, time-stamp-end)
+       (time-stamp-inserts-lines): Tighten up a bit the safety predicate.
+
+       * add-log.el: Remove spurious * in docstrings.
+       (add-log-time-zone-rule): Rename from change-log-time-zone-rule.
+       (add-change-log-entry): Use it here, since it's not specific
+       to iso8601.
+       (add-log-iso8601-time-string): Don't use it here any more.
+       (change-log-indent-text, change-log-indent): Rename from add-log-*.
+
+       * abbrev.el (abbrev-mode): Tighten up a bit the safety predicate.
+
+2006-04-25  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-print): Revert last change with ignored nicks.
+       (rcirc-toggle-low-priority): Doc fix.
+       (rcirc-handler-NOTICE): Remove beginning of line anchor in
+       ChanServ regexp.
+       (rcirc-startup-channels-alist): Connect to #rcirc by default, not
+       #emacs.
+       (rcirc-bright-nick-regexp, rcirc-dim-nick-regexp): Add variables.
+       (rcirc-decode-coding-system): Use utf-8 as the default.
+       (rcirc-multiline-minor-mode): Set the fill-column.
+       (rcirc-format-response-string): Display bright and dim nicks.
+       (rcirc-browse-url): Update interactive spec to fill ARG.
+       (rcirc-bright-nick, rcirc-dim-nick): Add faces.
+       (rcirc-print): Ignore dim-nick messages wrt modeline-activity.
+
+2006-04-24  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * textmodes/bibtex.el (bibtex-find-entry): Don't demand matching
+       case for @Article, etc.
+
+2006-04-23  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-register-file-name-handlers): New defun.
+       Added with autoload cookie.
+       (tramp-unload-file-name-handlers): Rename from
+       `tramp-unload-file-name-handler-alist'.
+
+2006-04-23  Romain Francoise  <romain@orebokech.com>
+
+       * comint.el (comint-match-partial-filename): Doc fix.
+
+2006-04-21  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/cal-menu.el (calendar-mode-map): Refer to
+       `diary-view-entries' rather than alias `view-diary-entries'.
+       * calendar/diary-lib.el (view-other-diary-entries): Ditto.
+
+2006-04-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * progmodes/antlr-mode.el (antlr-default):
+       * cus-edit.el (custom-documentation):
+       * faces.el (scroll-bar, border, cursor, mouse): Avoid nil spec
+       in defface.
+
+2006-04-21  Kim F. Storm  <storm@cua.dk>
+
+       * image.el (image-type): New defun split out of create-image.
+       (create-image): Use it.
+
+2006-04-21  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-mode-map): Catch conflict with old allout.el.
+       (org-open-at-point): Remove the "...done" message to keep output
+       in the echo area visible.
+       (org-export-as-xoxo): Fix call to `indent-region'.
+
+2006-04-21  Kevin Ryde  <user42@zip.com.au>
+
+       * international/mule.el (keyboard-coding-system): defcustom
+       info-link fixes: "Specify Coding" has been split, keyboard now in
+       "Terminal Coding", and "Single-Byte Character Support" is now
+       "Unibyte Mode".
+
+2006-04-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-data-list-register-values-handler):
+       Use font-lock-warning-face for any errors e.g. no stack.
+       (gdb-stack-list-locals-handler): Display any errors e.g. no stack.
+
+2006-04-20  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/sh-script.el (sh-shell): Mark as safe.
+
+       * newcomment.el (comment-start, comment-start-skip)
+       (comment-end-skip, comment-end): Mark as safe.
+
+2006-04-20  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-deadline-announce): Face removed.
+       (org-level-faces, org-n-levels): Convert to constant.
+       (org-compatible-face): New function.
+       (org-hide, org-level-1, org-level-2, org-level-3, org-level-4)
+       (org-level-5, org-level-6, org-level-7, org-level-8)
+       (org-special-keyword, org-warning, org-headline-done, org-link)
+       (org-date, org-tag, org-todo, org-done, org-table, org-formula)
+       (org-scheduled-today, org-scheduled-previously, org-time-grid):
+       Face definition revised for better color tty support.
+       (org-bold-re, org-italic-re, org-underline-re): New constants.
+       (org-set-font-lock-defaults): Use the new constants.
+       (org-agenda-highlight-todo): New function.
+       (org-agenda-todo): Fix bug with point at end of line.
+       (org-agenda-change-all-lines, org-finalize-agenda-entries):
+       Fontify TODO keywords.
+       (org-insert-link): Preserve relative path in ../ links.
+       (org-export-as-html): Convert links pointing to .org files into
+       links that will work beteen the exported HTML files.
+       (org-todo-list): Fix bug when arg=0.
+       (org-insert-heading): More fine-tuning.
+
+2006-04-19  Romain Francoise  <romain@orebokech.com>
+
+       * mail/rmail.el (rmail-convert-to-babyl-format): Use second group
+       from `rmail-mime-charset-pattern'.
+
+2006-04-18  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/python.el (python-mode): Fix typo.
+
+2006-04-18  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * comint.el (comint-previous-input): Don't clobber input line
+       when moving off either end of the input history ring.
+       (comint-delete-input): New function, used by
+       `comint-previous-input' and others.
+       (comint-previous-matching-input):
+       Use `coming-delete-input'.  Save the partial input if leaving the
+       edit line.  Goto point-max before deleting input to avoid
+       partial input fragments hanging around.
+       (comint-restore-input): New function, used by `comint-previous-input'.
+
+2006-04-18  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * imenu.el (imenu--index-alist): Balance parentheses.
+
+2006-04-18  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/python.el (python-mode): Add support for hs-minor-mode.
+
+2006-04-19  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * abbrev.el (read-abbrev-file): Use abbrev-file-name if optional
+       file is nil.
+
+2006-04-18  Richard Stallman  <rms@gnu.org>
+
+       * tooltip.el (tooltip-mode, tooltip-use-echo-area): Doc fixes.
+
+       * imenu.el (imenu-create-index-function, imenu--index-alist)
+       (imenu--last-menubar-index-alist, imenu--make-index-alist)
+       (imenu-default-create-index-function, imenu--generic-function):
+       Doc fixes.
+
+       * image-mode.el (image-toggle-display): Handle tar and arc subfiles.
+
+       * help-mode.el (help-mode): Set view-exit-action to delete window.
+
+       * env.el (setenv): Get rid of arg UNSET.  Interactive unsetting
+       now works by passing nil as arg.
+
+       * apropos.el (apropos-print): Don't do where-is on self-insert-command.
+
+       * abbrev.el (edit-abbrevs-redefine): Temporarily widen.
+       (read-abbrev-file): Provide default when reading filename.
+
+       * files.el (enable-local-variables): Allow :all as value.
+       (hack-local-variables): Implement that value.
+       (safe-local-variable-values, safe-local-eval-forms)
+       (enable-local-variables): Mark as risky.
+       (find-file-visit-truename, kept-old-versions): Mark safe.
+
+       * time-stamp.el (time-stamp-format, time-stamp-line-limit)
+       (time-stamp-start, time-stamp-end, time-stamp-inserts-lines)
+       (time-stamp-count, time-stamp-pattern): Add safe-local-variable prop.
+
+2006-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/tcl.el (tcl-send-string, tcl-send-region):
+       Use forward-line so as to get to BOL even in the presence of fields.
+       (tcl-eval-region): Strip surrounding space to avoid multiple prompts
+       in return.
+       (inferior-tcl): Tell tclsh to work in interactive mode.
+
+       * complete.el (partial-completion-mode):
+       Use 'choose-completion-string-functions to make sure that
+       choose-completion fills the minibuffer properly.
+
+       * complete.el (PC-old-read-file-name-internal): Remove.
+       (PC-read-include-file-name-internal): Remove.  Turn it into an advice
+       of read-file-name-internal.
+       (partial-completion-mode): Enable/disable this advice.
+
+2006-04-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * net/tramp.el (tramp-completion-file-name-handler): Revert change
+       of 2006-04-17.
+
+2006-04-18  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-insert-heading): Insert heading before
+       current if at beginning of line.
+       (org-todo, org-date): New faces.
+       (org-table-align): Make sure tooltip window contains full text.
+       (org-no-properties): New defsubst.
+       (org-set-font-lock-defaults): Use new faces.
+
+2006-04-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-item-info): Display frame address
+       for root variables.
+
+       * progmodes/gdb-ui.el (gdb-pc-address): Rename from gdb-frame-address.
+       (gdb-frame-address): Re-use to identify frame for watch expression.
+       (gdb-var-list, gdb-var-create-handler): Add frame address for root
+       variables.
+       (gdb-init-1, gdb-source, gdb-post-prompt)
+       (gdb-assembler-custom, gdb-invalidate-assembler): Use gdb-pc-address.
+       (gdb-frame-handler): Get gdb-frame-address.
+
+2006-04-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.53.
+
+       * net/tramp.el (tramp-completion-mode): ?\t has event-modifier
+       'control.  Reported by Matthias F\e,Av\e(Brste <slashdevslashnull@gmx.net>.
+       (tramp-completion-file-name-handler): Add autoload cookie for
+       adding to `file-name-handler-alist'.
+
+       * net/tramp-smb.el (tramp-smb-wait-for-output): Wait always for
+       the prompt.  If it returns earlier (when detecting an error
+       message), the rest of the output will merge accidently with the
+       output of the next command.  Reported by M Jared Finder
+       <jared@hpalace.com>.
+
+       * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
+       for `process-file', in order to let it work for older Emacsen too.
+
+2006-04-17  Ralf Angeli  <angeli@iwi.uni-sb.de>
+
+       * textmodes/tex-mode.el (tex-font-lock-match-suscript): New function.
+       (tex-font-lock-keywords-3): Use it.
+
+2006-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * newcomment.el (comment-add): New function.
+       (comment-region-default, comment-dwim): Use it.
+
+2006-04-15  Michael Olson  <mwolson@gnu.org>
+
+       * emacs-lisp/tq.el: Improve comments.
+       (tq-queue-head-question): New accessor function.
+       (tq-queue-head-regexp, tq-queue-head-closure, tq-queue-head-fn):
+       Update for modified queue structure.
+       (tq-queue-add): Accept `question' argument.
+       (tq-queue-pop): If a question is pending, send it.
+       (tq-enqueue): Accept new optional argument `delay-question'.
+       If this is non-nil, and at least one other question is pending a
+       response, queue the question rather than sending it immediately.
+
+2006-04-15  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * calendar/appt.el (appt-add): Check whether an appointment is
+       already present in appt-time-msg-list.  Simplify code.
+
+2006-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/cc-langs.el (c-mode-menu):
+       Don't presume c-subword-mode is bound.
+
+2006-04-13  Bill Wohler  <wohler@newt.com>
+
+       * cus-edit.el (customize-package-emacs-version-alist): Update docstring.
+       (customize-package-emacs-version): Use cdr instead of cadr now
+       that alists use dotted pairs.
+
+       * custom.el (defcustom): Fix docstring for :package-version.
+
+2006-04-13  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-display-shell-command-buffer): New defvar.
+       (tramp-handle-shell-command): Display output buffer only when
+       `tramp-display-shell-command-buffer' is true.
+       (tramp-handle-process-file): Set `tramp-display-shell-command-buffer'.
+
+2006-04-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-set-autofill-regexps): Set only the local
+       values of `adaptive-fill-regexp' and `adaptive-fill-function'.
+
+2006-04-13  Romain Francoise  <romain@orebokech.com>
+
+       * pcvs-parse.el (cvs-parse-table): Use `with-temp-buffer' to avoid
+       leaving temporary .cvsignore buffers behind.
+
+2006-04-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-set-regexps-and-options)
+       (org-get-current-options): Better names for the startup folding
+       options.
+
+2006-04-13  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * vc.el (vc-annotate): Arrange for point to end up at the same
+       line number as in the original, but only when using a new buffer.
+
+2006-04-12  Stuart Herring  <herring@lanl.gov>  (tiny change)
+
+       * files.el (hack-one-local-variable-eval-safep):
+       Recognize `edebug-form-spec' for `put', but only if it passes
+       `edebug-basic-spec'.  Generalize `put' handling.
+
+       * emacs-lisp/edebug.el (edebug-basic-spec): New function for
+       vetting file-local form specs.
+
+       * allout.el (allout-layout): Autoload its `safe-local-variable'
+       property.
+
+2006-04-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-ctrl-c-ctrl-c): Improve documentation string.
+       (org-agenda-mouse-1-follows-link)
+       (org-mouse-1-follows-link): New options.
+       (org-format-agenda-item): Fix bug if TAGS is nil.
+       (org-agenda-get-scheduled): Quote `priority' symbol in plist.
+
+2006-04-13  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers):
+       GDB 6.1+ gives full filename for "info sources" so use
+       file-name-nondirectory.
+
+2006-04-12  Romain Francoise  <romain@orebokech.com>
+
+       * subr.el (read-passwd): Bind `message-log-max' to nil.
+
+2006-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/perl-mode.el (perl-indent-new-calculate):
+       Recompute parse-start after jumping backward by a whole sexp.
+
+2006-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc.el (vc-ensure-vc-buffer): Only change current-buffer, not the
+       window configuration.
+       (vc-annotate-display-select): Select the buffer so that current-buffer
+       (and selected-window) is the output buffer at the end of vc-annotate.
+
+2006-04-11  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * vc.el (vc-annotate-color-map): Add custom TTY color map for
+       8-color terminals, to use all of the colors in a sensible order.
+       256-color terminals work well with the standard map.
+       (vc-annotate-lines): Only strip the first color character if it
+       is "#", to allow for terminal-style named colors.
+       (vc-annotate-warp-version): Pass buf to `goto-line' to ensure
+       the correct buffer is scrolled.
+
+2006-04-11  Richard Stallman  <rms@gnu.org>
+
+       * emacs-lisp/bytecomp.el (byte-compile-file):
+       Bind enable-local-variables to :safe, and make normal-mode obey it.
+
+       * files.el (enable-local-variables): Allow value :safe.
+       (normal-mode): Doc fix.
+       (hack-local-variables): Implement enable-local-variables = :safe.
+       (hack-local-variables-confirm): Don't prevent quitting.
+
+2006-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * loadhist.el (unload-feature): A bit of sanity check of
+       load-history entries.  Cancel timer-vars before unbinding them.
+
+       * hexl.el (hexl-isearch-search-function): Fix regexp-building code to
+       quote special chars, and make the trick work on the hex part of the
+       buffer as well.
+       (hexl-mode, hexl-save-buffer, hexl-mode-exit)
+       (hexl-maybe-dehexlify-buffer): Use restore-buffer-modified-p.
+
+       * startup.el (normal-splash-screen): Fix last change so we don't wait
+       2 minutes if we don't show the splash screen.
+
+2006-04-11  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-export-plain-list-max-depth)
+       (org-table-spaces-around-separators)
+       (org-radio-targets, org-activate-camels)
+       (org-table-spaces-around-invisible-separators): Options removed.
+       (org-time-stamp-rounding-minutes, org-remember-templates)
+       (org-ellipsis, org-activate-links, org-descriptive-links):
+       New options.
+       (org-remember-apply-template, org-current-time)
+       (org-finish-edit-table-field)
+       (org-link-unescape, org-link-escape)
+       (org-string-width, org-table-clean-line, org-html-do-expand)
+       (org-edit-agenda-file-list, org-store-new-agenda-file-list)
+       (org-read-agenda-file-list): New functions.
+       (org-table-edit-field)
+       (org-table-create-or-convert-from-region): New commands
+       (org-table-toggle-vline-visibility): Command removed.
+       (org-table-convert-region): Made a command.
+       (orgtbl-deleta-backward-char, orgtbl-delete-char): Remove commands.
+       Replace with the normal org- functions.
+       (org-self-insert-command): Don't trigger realign unnecessarily
+       when blanking a field that is not full.
+       (org-mode): `Set buffer-invisibility-spec' for links.
+       (org-activate-links2): Hide link part and only show descriptive
+       part of the link.
+       (org-insert-link): Modify for new linking system.
+       (org-store-link): Store description separately, for use by
+       `org-insert-link'.
+       (org-table-align): Use `org-string-width'.
+       (defgroup): Completely new group structure for custom variables.
+       (org-agenda-files): Option: Single file name allowed.  Function:
+       Optional argument unrestrited means ignore any restricitons.
+       (org-install-agenda-files-menu): Find a buffer in Org-mode before
+       trying to modify the menu.  Use generalized access to
+       `org-agenda-files.'
+       (org-agenda-list, org-todo-list, org-cycle-agenda-files)
+       (org-agenda-file-to-front, org-remove-file, org-diary)
+       (org-tags-view, org-export-icalendar-all-agenda-files)
+       (org-export-icalendar-combine-agenda-files): Use generalized
+       access to `org-agenda-files'.
+       (org-remember-handler): Correctly preserve heading if present.
+       (org-table-insert-row, org-table-insert-hline): Deal with
+       invisible characters.
+
+2006-04-10  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * vc.el (vc-annotate-display-mode): Made default 'fullscale.
+       (vc-annotate-color-map): New 18 element constant
+       value/saturation, rotating hue colormap, from red->blue.
+       (vc-annotate-mode-menu): "Default" -> "By Color Map Range".
+       (vc-annotate-display-select): Switch to annotate-mode elsewhere.
+       (vc-annotate): To avoid killing the required local variables,
+       set them before the end of `with-output-to-temp-buffer', and
+       after first switching to annotate-mode.
+       (vc-annotate-warp-version): Add buffer argument in goto-line to
+       ensure annotation, not source, is scrolled.
+
+2006-04-10  Bill Wohler  <wohler@newt.com>
+
+       * custom.el (defcustom, custom-handle-keyword):
+       Add :package-version keyword.
+       (custom-add-package-version): New function.  Sets value of new
+       property 'custom-package-version from :package-version keyword.
+       (defcustom): Create Common Keywords section in docstring.
+       (defface, defgroup): Replace definitions of a select few keywords
+       with a reference to the Common Keywords in defcustom.
+       (defcustom, defface, defgroup): Replace reference to Customization
+       chapter in manual with hyperlink.
+
+       * cus-edit.el (customize-package-emacs-version-alist): New variable.
+       (customize-changed-options): Add check for custom-package-version.
+       (customize-package-emacs-version): New function to look up Emacs
+       version corresponding to the given package version.
+
+       * emacs-lisp/find-func.el (find-function-regexp): Allow dashes in
+       defun name, in similar fashion to find-variable-regexp.
+
+2006-04-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/mule-cmds.el (set-locale-environment): Fix last
+       change for when the locale's preferences don't specify any encoding.
+
+2006-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/find-func.el (find-function-search-for-symbol): Fix regexp
+       so the defined var/fun doesn't need to be quoted.
+
+2006-04-10  Richard Stallman  <rms@gnu.org>
+
+       * finder.el (finder-mode-map): Add n and p bindings.
+
+2006-04-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-init-1): Re-initialise gdb-main-file to nil.
+       (gdb-get-version): Make it work for pre "interpreter mi" (GDB 5.3?).
+       (gdb-setup-windows): Put something in source window if we can't find
+       the source file.
+       (gdb-frame-handler): Make it work again with just assembly.
+       (gdb-data-list-register-values-handler): Make it work when there is
+       no stack.
+
+2006-04-09  Richard Stallman  <rms@gnu.org>
+
+       * mail/rmail.el (rmail-mime-charset-pattern): Ignore format and delsp
+       specs while looking for charset.
+
+       * textmodes/picture.el (picture-mode-exit): Run picture-mode-exit-hook.
+
+       * play/landmark.el (lm-font-lock-face-O, lm-font-lock-face-X):
+       Make them faces.
+       (lm-font-lock-keywords): Update appropriately.
+
+2006-04-10  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (filter-buffer-substring): Add NOPROPS arg, so
+       it can also replace buffer-substring-no-properties.
+
+       * emulation/cua-base.el (cua-delete-region, cua-paste)
+       (cua-repeat-replace-region): Use filter-buffer-substring.
+
+       * emulation/cua-gmrk.el (cua-copy-region-to-global-mark)
+       (cua-cut-region-to-global-mark): Likewise.
+
+       * emulation/cua-rect.el (cua--extract-rectangle)
+       (cua-incr-rectangle, cua--rectangle-aux-replace): Likewise.
+
+2006-04-09  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-entry-update): New optional arg
+       entry-type.  Add field delimiters to numerical fields if they are
+       not present.
+
+2006-04-09  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-find-text-internal): Add new element
+       string-const to return value.
+       (bibtex-remove-delimiters): Use it.
+
+2006-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/bytecomp.el (byte-compile-form): Don't call
+       cl-byte-compile-compiler-macro unless it exists.
+
+2006-04-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.el (hack-local-variables-confirm) <offer-save>:
+       Clarify message text.  Suggested by Ralf Angeli.
+
+2006-04-08  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * rect.el (kill-rectangle): Don't barf if `kill-read-only-ok' is set.
+       (delete-extract-rectangle-line): Use `filter-buffer-substring'
+       instead of `buffer-substring' and `delete-region'.  (Most of the
+       code actually copied from `kill-region'.)
+
+2006-04-08  Ryan Yeske  <rcyeske@gmail.com>
+
+       * rcirc.el (rcirc-default-server): Rename from rcirc-server.
+       (rcirc-default-port): Rename from rcirc-port.
+       (rcirc-default-nick): Rename from rcirc-nick.
+       (rcirc-default-user-name): Rename from rcirc-user-name.
+       (rcirc-default-user-full-name): Rename from rcirc-user-full-name.
+       (rcirc-low-priority-flag): New variable.
+       (rcirc-decode-coding-system): New defcustom.
+       (rcirc-encode-coding-system): New defcustom.
+       (rcirc-coding-system-alist): New defcustom.
+       (rcirc-multiline-major-mode): New defcustom.
+       (rcirc-nick): New internal variable.
+       (rcirc-process): Remove variable.
+       (rcirc-server-buffer): New variable.
+       (rcirc): Update to use rcirc-default-* variables above.
+       (rcirc-connect): Do not add window-configuration-hook-here.
+       (rcirc-server): New internal variable.
+       (rcirc-connect): Do not send keepalive pings if
+       rcirc-keepalive-seconds is nil.
+       (with-rcirc-server-buffer): New macro.
+       (rcirc-send-string): Encode with rcirc-encode-coding-system.
+       (rcirc-server-name): Rename from rcirc-server.
+       (rcirc-buffer-process): New function.
+       (rcirc-buffer-nick): New function.
+       (rcirc-buffer-target): Remove function.
+       (set-rcirc-decode-coding-system, set-rcirc-encode-coding-system):
+       New commands.
+       (rcirc-mode-map): Change binding of C-c C-l to
+       rcirc-toggle-low-priority.
+       (rcirc-mode): Initialize coding system based on
+       rcirc-coding-system-alist.  New change-major-mode-hook to part the
+       channel on a mode change.  Make kill-buffer-hook buffer-local.
+       (rcirc-change-major-mode-hook): New function.
+       (rcirc-clean-up-buffer): Rename from rcirc-kill-buffer-hook-1.
+       (rcirc-last-post-time): New variable.
+       (rcirc-process-message): Store the last time user posted a message
+       to this target.
+       (rcirc-multiline-minor-mode): New mode.
+       (rcirc-multiline-minor-mode-map): New mode map.
+       (rcirc-edit-multiline): Put multiline-edit buffer in
+       rcirc-multiline-major-mode along with rcirc-multiline-minor-mode.
+       (rcirc-print): Ignore any line starting with an ignored nick.
+       (rcirc-print): Decode using rcirc-decode-coding-system.
+       (rcirc-track-minor-mode): Update global-mode-string when disabling
+       this mode.
+       (minor-mode-alist): Add LowPri indicator.
+       (rcirc-toggle-low-priority): New function.
+       (rcirc-last-non-irc-buffer): Prefix arg now no means switch to
+       next lowpriority buffer with activity.
+       (rcirc-record-activity): Sort buffers in rcirc-activity by the
+       last time the user posted a message in to the target.
+       (rcirc-update-activity-string): New formatting for low priority
+       buffers.
+       (rcirc-split-activity): New function.
+       (rcirc-handler-PART, rcirc-handler-KICK)
+       (rcirc-handler-PART-or-KICK): Kick responses are printed properly.
+       (rcirc-nick-away-alist): New variable.
+       (rcirc-handler-301): New handler.  Away messages are printed once
+       per change.
+
+2006-04-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * info.el (Info-follow-nearest-node): Doc fix.
+
+       * international/mule-cmds.el (set-locale-environment): Make sure
+       the coding-system preferred by the locale's language has the same
+       EOL conversion type as the original buffer-file-coding-system.
+       (locale-language-names): Add a few MS Windows language codes.
+
+2006-04-07  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (eval-expression): Doc fix.
+
+       * emacs-lisp/lisp-mode.el (eval-print-last-sexp, eval-last-sexp)
+       (eval-defun): Doc fixes.
+
+2006-04-07  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * pgg-gpg.el: Revert to revision 1.8 to allow the use of gpg-agent.
+
+2006-04-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-init-2): Set current filename using
+       GDB list command without argument for greater generality.
+
+2006-04-06  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * subr.el (string-or-null-p): New function.
+
+       * textmodes/paragraphs.el (sentence-end): Use string-or-null-p.
+
+       * textmodes/ispell.el (ispell-local-dictionary): Use string-or-null-p.
+
+       * files.el: Update comment about safe-local-variable declarations.
+
+2006-04-06  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * progmodes/idlwave.el: Updated to IDLWAVE version 6.0.
+       See idlwave.org.
+
+       * progmodes/idlw-shell.el: Updated to IDLWAVE version 6.0.
+       See idlwave.org.  Includes code to obsolete idlw-rinfo.el.
+
+       * progmodes/idlw-help.el: Updated to IDLWAVE version 6.0.
+       See idlwave.org.
+
+       * progmodes/idlw-complete-structtag.el: Updated to IDLWAVE
+       version 6.0 (minimal changes).  See idlwave.org.
+
+       * progmodes/idlw-toolbar.el: Updated to IDLWAVE version
+       6.0 (minimal changes).  See idlwave.org.
+
+       * progmodes/idlw-rinfo.el: File obsoleted and removed.
+
+2006-04-06  Romain Francoise  <romain@orebokech.com>
+
+       * pgg-gpg.el: Sync back with Gnus 5.10, reverting changes that add
+       symmetric encryption features and a new asynchronous interface to
+       GnuPG.  This new version is version 1.4, plus whitespace changes.
+
+2006-04-06  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * files.el: Move some `safe-local-variable' declarations to the
+       respective files.
+
+       * textmodes/ispell.el (ispell-check-comments)
+       (ispell-local-dictionary): Mark as safe.
+
+       * abbrev.el (abbrev-mode): Mark as safe.
+
+       * add-log.el (change-log-default-name): Mark as safe.
+
+       * textmodes/reftex-vars.el (reftex-vref-is-default)
+       (reftex-fref-is-default, reftex-level-indent)
+       (reftex-guess-label-type): Mark as safe.
+
+       * textmodes/fill.el (colon-double-space): Mark as safe.
+
+       * textmodes/paragraphs.el (paragraph-start, paragraph-separate)
+       (sentence-end-double-space, sentence-end-without-period)
+       (sentence-end-without-space, sentence-end, sentence-end-base)
+       (page-delimiter, paragraph-ignore-fill-prefix): Mark as safe.
+
+2006-04-06  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-mode): Remove ido-ignore-unc-host-regexps from
+       the :set-after list.
+       (ido-downcase-unc-hosts): New user option.  Default on.
+       (ido-ignore-unc-host-regexps): Don't reset ido-unc-hosts-cache
+       when it is set, as regexps are now applied on the fly.
+       (ido-unc-hosts): Keep all known hosts in ido-unc-hosts-cache.
+       Make C-a DTRT--filter hosts through ido-ignore-unc-host-regexps
+       on the fly, but only when ido-process-ignore-lists is set.
+       Do case insensitive filtering if ido-downcase-unc-hosts is set.
+       Only downcase names if ido-downcase-unc-hosts is set.
+
+2006-04-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ido.el (ido-unc-hosts-cache): Fix typo in docstring.
+
+       * woman.el (WoMan-xref-man-page): Fix call to `substring'.
+
+2006-04-05  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-mode): Set after ido-unc-hosts and
+       ido-ignore-unc-host-regexps.
+       (ido-save-history): Save ido-unc-hosts-cache.
+       (ido-load-history): Load ido-unc-hosts-cache.
+       (ido-reread-directory): Refresh unc hosts cache in // dir.
+
+       * startup.el (fancy-splash-screens): Set emulation-mode-map-alists
+       to nil while displaying slash screen.
+
+2006-04-05  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-gpg.el (pgg-gpg-encrypt-region, pgg-gpg-sign-region):
+       Wait for BEGIN_SIGNING too, new in GnuPG 1.4.3.
+
+2006-04-05  Kenichi Handa  <handa@m17n.org>
+
+       * international/characters.el: Setup cases of Latin, Greek, and
+       Cyrillic characters in CJK charsets.
+
+2006-03-29  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-gpg.el (pgg-gpg-start-process): Don't bind
+       default-enable-multibyte-characters.  This reverts the change from
+       revision 6.17 which is no longer necessary because the passphrase
+       is sent separately now.  GnuPG messages are unreadable under
+       multibyte locales with default-enable-multibyte-characters set to nil.
+
+2006-04-04  Andreas Schwab  <schwab@suse.de>
+
+       * files.el: Mark `left-margin', `byte-compile-dynamic-docstrings'
+       and `byte-compile-warnings' as `safe-local-variable'.
+
+2006-04-04  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * man.el (Man-mode-map): Restore the \r binding.
+       (Man-abstract-xref-man-page): If Man-target-string is a function,
+       call it.
+       (Man-highlight-references): Use Man-default-man-entry to get the
+       target.  Deal with xrefs too.
+       (Man-highlight-references0): Don't call the target function.
+
+       * woman.el (WoMan-xref-man-page): Strip the section number, woman
+       cannot deal with it.
+
+2006-04-04  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-gpg.el: Clean up process buffers every time gpg processes
+       complete.
+
+2006-04-04  Kenichi Handa  <handa@m17n.org>
+
+       * sort.el (sort-build-lists): Don't bind inhibit-field-text-motion
+       here.
+       (sort-lines, sort-numeric-fields, sort-fields, sort-columns):
+       Temporarily bind inhibit-field-text-motion to t.
+
+2006-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * startup.el (normal-splash-screen): Only set mode-line-format in the
+       splash buffer, so as not to interfere when debugging the code.
+       Ignore errors when switching buffer.
+
+2006-04-03  Romain Francoise  <romain@orebokech.com>
+
+       * dired.el (dired-dnd-protocol-alist): Fix typo.
+
+2006-04-03  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * savehist.el (savehist): Add :version.
+       (savehist-ignored-variables): New variable.
+       (savehist-minibuffer-hook): Don't save variables listed in
+       `savehist-ignored-variables'.
+
+       * dired.el (dired-dnd-protocol-alist): Mention that change does
+       only apply to new buffers in doc string.
+
+2006-04-03  Lennart Borgman  <lennart.borgman.073@student.lu.se>  (tiny change)
+
+       * recentf.el (recentf-open-files-item): Include newline in button
+       field, so opening a file will work, when the point is at the end
+       of the file name.  Allow, for example, to [i]search a file by
+       extension and just push RET to open it.
+
+2006-04-03  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-gpg.el (pgg-gpg-process-filter)
+       (pgg-gpg-wait-for-completion): Check if buffer is alive.
+
+       * pgg-gpg.el (pgg-gpg-process-sentinel): Don't remove GNUPG:
+       lines, temporary fix.
+
+2006-04-02  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * ibuf-macs.el (define-ibuffer-column): Document the new parameter.
+
+2006-04-02  Richard Stallman  <rms@gnu.org>
+
+       * progmodes/compile.el (compilation-message-face): Make it defcustom.
+
+2006-04-02  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * ibuf-macs.el (define-ibuffer-column): Add a new key:
+       header-mouse-map.
+
+       * ibuffer.el (ibuffer-name-header-map, ibuffer-size-header-map)
+       (ibuffer-mode-header-map): New keymaps.
+       (ibuffer-update-title-and-summary): Enable mouse face highlighting
+       and keybindings for column headers.
+       (name, size, mode) <define-ibuffer-column>: Add a header-mouse-map
+       property.
+
+2006-04-02  Drew Adams  <drew.adams@oracle.com>
+
+       * speedbar.el (speedbar-after-create-hook): Doc fix.
+
+2006-04-02  Michael Ernst  <mernst@alum.mit.edu>
+
+       * shell.el (shell-directory-tracker)
+       (shell-dynamic-complete-command): Doc fixes.
+
+2006-04-01  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * pcomplete.el (pcomplete-show-completions): Recognize TAB on text
+       terminals.
+
+2006-04-01  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-unc-hosts-cache): New defvar.
+       (ido-unc-hosts): If value of defcustom is a function, call it to
+       get list of UNC hosts.  Add function-item choices to specify
+       ido-unc-hosts-net-view or user function.
+       (ido-ignore-unc-host-regexps): New defcustom.
+       (ido-unc-hosts-net-view, ido-unc-hosts): New functions.
+       (ido-is-unc-root, ido-is-unc-host, ido-file-name-all-completions)
+       (ido-exhibit): Call ido-unc-hosts to get list of UNC hosts.
+
+2006-03-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs-util.el (cvs-insert-strings): Fix bug with strings longer than
+       wwidth.
+
+2006-03-31  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ido.el (ido-cache-unc-host-shares-time, ido-report-no-match)
+       (ido-max-work-file-list, ido-switch-buffer)
+       (ido-read-file-name-as-directory-commands):
+       Fix typos in docstrings.
+
+2006-03-30  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-system-coding-system): Define and use after
+       Mac-specific coding systems are ready.
+
+2006-03-27  Romain Francoise  <romain@orebokech.com>
+
+       * net/rcirc.el (rcirc-connect): Add autoload cookie.
+
+       * ldefs-boot.el: Update.
+
+2006-03-27  Daiki Ueno  <ueno@unixuser.org>
+
+       * pgg-gpg.el: Invoke gpg asynchronous, to avoid querying for
+       passphrases when it is not needed.
+       (pgg-gpg-use-agent): Add, to hard code that pgg shouldn't wait for
+       passphrase stuff from gpg, should only be necessary when you use
+       gpg with a smartcard.
+
+2006-03-27  Nick Roberts  <nickrob@snap.net.nz>
+
+       * comint.el (comint-dynamic-list-completions): Allow user to
+       select *Completions* buffer.
+
+2006-03-27  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-get-level-face): Fix bug with level counting.
+
+2006-03-26  Andreas Schwab  <schwab@suse.de>
+
+       * progmodes/gud.el (gdb): Only complain about multiple debugging
+       when the gdb process is still running.
+
+2006-03-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmail.el (tool-bar-map): Defvar it.
+       (rmail-tool-bar-map): Tool-bar buttons for Rmail.
+       (rmail-perm-variables): Make rmail-tool-bar-map a local variable.
+
+2006-03-25  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
+
+       * help.el (print-help-return-message): Suggest to use
+       display-buffer instead of switch-to-buffer-other-window to restore
+       the previous window without selecting it.
+
+2006-03-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * frame.el (select-frame-by-name): Call x-focus-frame also when
+       window-system is mac.
+
+       * term/mac-win.el: Adjust Courier font specifications in
+       x-fixed-font-alist.
+       (mac-select-convert-to-string): Use utf-16be-mac or utf-16le-mac
+       when directly encoding to UTF-16 in native byte order, no BOM.
+
+2006-03-25  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-rectangle-mark-key): New defcustom.
+       (cua--init-keymaps): Use it instead of fixed C-return.
+       (cua-mode): Set after it.
+
+       * emulation/cua-rect.el (cua--init-rectangles):
+       Use cua-rectangle-mark-key instead of fixed C-return.
+
+2006-03-25  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdba): Revert 2006-03-10 change for case of
+       "run" in .gdbinit.
+       (gdb-var-create-regexp): Remove "^done" prefix for gdb-mi.el.
+
+2006-03-24  Romain Francoise  <romain@orebokech.com>
+
+       * files.el (ctl-x-5-map): Really bind C-x 5 C-o to
+       `display-buffer-other-frame'.
+
+2006-03-24  Kim F. Storm  <storm@cua.dk>
+
+       * apropos.el (apropos-synonyms): Add selection => region.
+
+2006-03-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-regexp)
+       (gdb-var-list-children-regexp, gdb-var-update-regexp)
+       (gdb-var-list-children-regexp-1, gdb-var-update-regexp-1)
+       (gdb-data-list-register-values-regexp)
+       (gdb-stack-list-locals-regexp, gdb-stack-list-locals-handler):
+       Future proof against new fields being added to MI output.
+       (gdb-send): Don't treat backslashes for program input as
+       continuations.
+       (gdb-assembler-handler): Don't use window-start for this handler.
+       (gdb-frame-handler): Don't change to hollow arrow if overlay
+       arrow doesn't move to new frame.
+
+2006-03-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-continuation): Declare earlier to
+       prevent compiler warnings.
+       (gdb-stopped): Check for gud-last-last-frame (case: signal).
+       (breakpoint-disabled): Make lighter for contrast with overlay arrow.
+       (gdb-assembler-custom): Use hollow-right-triangle for assembler
+       buffer too.
+
+2006-03-23  Reiner Steib  <reinersteib+gmane@imap.cc>
+
+       * pgg-gpg.el (pgg-gpg-update-agent): Check for
+       make-network-process, so we can use the same code in Gnus v5-10
+       too and have this file fully synchronized with that release.
+
+2006-03-23  Romain Francoise  <romain@orebokech.com>
+
+       * ibuf-ext.el (ibuffer-read-filter-group-name):
+       Use `ibuffer-generate-filter-groups' to make completion list match
+       the filter groups that are really displayed in the Ibuffer buffer.
+       (ibuffer-generate-filter-groups): Add new args noempty, nodefault.
+
+2006-03-23  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (sort-coding-systems): Describe that
+       the argument is modified in docstring.
+
+2006-03-22  Sascha Wilde  <wilde@sha-bang.de>
+
+       * pgg-gpg.el (pgg-gpg-use-agent): Disable by default.
+       (pgg-gpg-update-agent): New function.
+       (pgg-gpg-use-agent-p): New function.
+       (pgg-gpg-process-region, pgg-gpg-encrypt-region)
+       (pgg-gpg-encrypt-symmetric-region, pgg-gpg-decrypt-region)
+       (pgg-gpg-sign-region): Use it.
+
+2006-03-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (custom-face-set): Call custom-push-theme before
+       face-spec set so that `changed' theme is correctly saved.
+       (custom-face-reset-standard): Reset to recalculated face rather
+       than defface spec.
+
+       * custom.el (custom-push-theme): Only save `changed' theme if the
+       current face does not match the defface specs.
+
+2006-03-21  Simon Josefsson  <jas@extundo.com>
+
+       * pgg-gpg.el: Ideas below based on patch from Sascha Wilde
+       <wilde@sha-bang.de>.
+       (pgg-gpg-use-agent): New variable.
+       (pgg-gpg-process-region): Use it.
+       (pgg-gpg-encrypt-region): Likewise.
+       (pgg-gpg-encrypt-symmetric-region): Likewise.
+       (pgg-gpg-decrypt-region): Likewise.
+       (pgg-gpg-sign-region): Likewise.
+       (pgg-gpg-possibly-cache-passphrase): Don't cache a nil password.
+
+2006-03-21  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-open-at-point): Fix bug in wiki-style
+       bracket links.
+
+2006-03-21  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/gdb-ui.el (gdb-reset): Set buffer local value of
+       fringe-indicator-alist instead of modifying global value.
+       (gdb-frame-handler): Likewise.
+
+2006-03-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * diff-mode.el (diff-function): Make it inherit from diff-header
+       instead of diff-context.
+
+       * progmodes/gdb-ui.el (hollow-right-triangle): Define as fringe
+       bitmap.
+       (gdb-info-stack-custom): Rename from gdb-info-frames-custom and
+       change names in macro above for consistency.
+       (gdb-frame-handler): Use hollow-right-triangle for all selected
+       frames which except the innermost (where execution has stopped).
+       (gdb-reset): Reset buffer-local values of overlay-arrow.
+
+2006-03-20  Richard Stallman  <rms@gnu.org>
+
+       * simple.el (set-mark-command): Doc fix.
+
+       * files.el (display-buffer-other-frame): New command.
+       (ctl-x-4-map): Bind C-x 5 C-o to it.
+
+2006-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * jit-lock.el (jit-lock-function): Check for the actual defer-timer
+       rather than just defer-time, in case defer-time has been changed but
+       the timer isn't running yet.
+       (jit-lock-deferred-fontify): Correspondingly let-bind defer-timer.
+
+2006-03-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * help-mode.el (help-follow-symbol): New function.
+       Essentially identical to the old `help-follow', but do not let
+       `push-button' do the work when on an xref.
+       (help-mode-map): Bind `help-follow-symbol' to "C-c C-c".
+
+2006-03-19  Richard Stallman  <rms@gnu.org>
+
+       * help-mode.el (help-xref-symbol-regexp): Make no xref for symbol
+       preceded by the word `program'.
+       (help-follow-mouse, help-follow): Throw error if not on xref.
+       Delete no longer used args.
+
+2006-03-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-stopped): Even when there is no source
+       annotation ensure gud-overlay-arrow-position is redisplayed.
+
+2006-03-19  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-include-OPTkey)
+       (bibtex-entry-field-alist, bibtex-generate-url-list): Mark as risky.
+       (bibtex-autokey-name-case-convert)
+       (bibtex-autokey-titleword-case-convert): Make these the aliases
+       for the following two variables.
+       (bibtex-autokey-name-case-convert-function)
+       (bibtex-autokey-titleword-case-convert-function): Make these the
+       real names.
+       (bibtex-font-lock-keywords): Make bibtex-font-lock-url and
+       bibtex-font-lock-crossref sublists.
+       (bibtex-mode): Revert 2005-12-30 change (which made
+       completion-ignore-case buffer-local).
+       (bibtex-url): Simplify.
+
+2006-03-19  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-rect.el (cua--highlight-rectangle): Set overlay
+       cursor property value to 2 (to align with C level change).
+
+2006-03-19  Bill Wohler  <wohler@newt.com>
+
+       * image.el (image-load-path-for-library): Shorten first line in
+       docstring.
+
+2006-03-18  Richard Stallman  <rms@gnu.org>
+
+       * mail/rmail.el (rmail-reply-regexp): Undo previous change.
+
+2006-03-18  Ben North  <ben@redfrontdoor.org>  (tiny change)
+
+       * isearch.el (isearch-other-meta-char): Handle user bindings for
+       shifted control characters.
+
+2006-03-18  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/ispell.el (ispell-skip-region-alist): Add "_+" to the
+       part that matches email addresses, file names, etc.
+
+2006-03-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * term/w32-win.el (mouse-set-font):
+       Mention w32-list-proportional-fonts in the doc string.
+
+2006-03-18  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-cache-ftp-work-directory-time): Doc fix.
+       (ido-unc-hosts): New user option to explicitly define list of know
+       UNC-style hosts for completion.
+       (ido-cache-unc-host-shares-time): New user option.
+       (ido-is-unc-root, ido-is-unc-host, ido-cache-unc-valid):
+       New helper functions for UNC file-name support.
+       (ido-may-cache-directory): Check for UNC host.  Simplify.
+       (ido-wash-history): Clean out old UNC hosts.
+       (ido-nonreadable-directory-p): UNC hosts are always readable.
+       (ido-directory-too-big-p): UNC hosts are never too big.
+       (ido-set-current-directory): Handle UNC root path.
+       (ido-file-name-all-completions): Complete UNC host names from
+       ido-unc-hosts list.  Cache UNC host shares.
+       (ido-make-file-list-1): Don't filter UNC root.
+       (ido-exhibit): Check for // in root directory, and switch to UNC
+       mode by setting ido-current-directory to //.
+
+2006-03-17  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (customize-changed-options): Mention explicit
+       version number as default in prompt.
+
+2006-03-17  Bill Wohler  <wohler@newt.com>
+
+       * image.el (image-load-path-for-library): Minor docstring fix.
+
+2006-03-17  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-read-date): Include subgroup 5 into
+       replacement text.
+       (org-popup-calendar-for-date-prompt): Fix customization type.
+
+2006-03-17  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gud-watch): Provide completion.
+       (gdb-continuation): New variable.
+       (gdb-send): Deal with continuation lines.
+
+       * progmodes/gud.el (gud-gdb-complete-command)
+       (gud-gdb-run-command-fetch-lines): Adapt for use with watch
+       expressions.
+       (gud-tooltip-mode): Use buffer-local value.
+
+2006-03-16  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-edit-input): Use selected match, if any.
+
+2006-03-16  Bill Wohler  <wohler@newt.com>
+
+       * image.el (image-load-path-for-library): Prefer user's images in
+       image-load-path.
+
+2006-03-16  Martin Rudalics  <rudalics@gmx.at>
+
+       * mouse.el (mouse-drag-vertical-line): Use window-inside-edges
+       when checking for attempt to drag leftmost or rightmost scrollbar.
+
+2006-03-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-inferior-status): New variable.
+       (gdb-force-mode-line-update): New function.
+       (gdb-resync, gdb-starting, gdb-signal, gdb-exited, gdb-stopped)
+       (gdb-exited): Use them.
+       (gdb-signal): New function.
+       (gdb-annotation-rules): Provide a rule for it.
+
+2006-03-16  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule.el (auto-coding-regexp-alist): Add entries
+       for Unicode BOM.
+
+       * sort.el (sort-build-lists): Temporarily bind
+       inhibit-field-text-motion to t.
+
+2006-03-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * locate.el (locate-command, locate-make-command-line)
+       (locate-fcodes-file, locate-update-command)
+       (locate-prompt-for-command, locate, locate-with-filter)
+       (locate-get-file-positions): Doc fixes.
+       (locate-buffer-name, locate-header-face): Remove leading `*' in
+       defcustom.
+       (locate-filter-output): Use `keep-lines' instead of its alias
+       `delete-non-matching-lines'.
+       (locate-get-filename, locate-get-dirname): Add introductory comment.
+       (locate-find-directory-other-window): Give appropriate error
+       message if used outside main listing.
+
+2006-03-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-lines-before): Delete variable, subsumed by
+       the new extend-region feature.
+       (font-lock-after-change-function): Update correspondingly.
+       * jit-lock.el (jit-lock-after-change): Update correspondingly.
+       * progmodes/grep.el (font-lock-lines-before): Don't disable.
+
+2006-03-15  Bill Wohler  <wohler@newt.com>
+
+       * image.el (image-load-path-for-library): Fix example by not
+       recommending that one binds image-load-path.  Just defvar it to
+       placate compiler and only use it if previously defined.
+
+2006-03-15  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-insert-centered): Use `string-width' to
+       make underlining work for wide characters.
+       (org-goto-map, org-agenda-mode-map, org-mode-map): Explicitly bind
+       TAB to `org-cycle', to make sure that no binding in
+       `outline-mode-map' can supercede it.
+
+2006-03-14  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el: Increment version to 2.2.1 in file commentary.
+
+       (allout-version): Increment to 2.2.1.
+
+       (allout-default-layout): New customization variable, used when the
+       file lacks a specific allout-layout.  Uses allout-layout-type for
+       recursively nested definition.
+
+       (allout-layout-type): Widget defining allout layouts, necessary for
+       self-recursive definition.
+
+       (allout-mode): Incorporate allout-default-layout as fallback for
+       allout-layout.
+
+       (allout-layout): Mark as 'safe-local-variable', and refer mention
+       fallback to `allout-default-layout' in absence of a specified value.
+       (allout-passphrase-verifier-string)
+       (allout-passphrase-hint-string): Mark as 'safe-local-variable'.
+
+       (allout-file-passphrase-verifier-string): Obsolete variable, removed.
+
+       (allout-get-encryption-passphrase-verifier): Use correct name of
+       passphrase verifier in docstring.
+
+2006-03-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-list): Change order of first two
+       elements.
+       (gdb-find-watch-expression): Make it work for arrays too.
+       Follow change to gdb-var-list.
+       (gud-watch): Allow the user to enter variable name with a prexix
+       arg.  Create keybindings.
+       (gdb-var-create-handler, gdb-var-evaluate-expression-handler)
+       (gdb-var-list-children-handler, gdb-var-update-handler)
+       (gdb-var-delete, gdb-edit-value, gdb-speedbar-expand-node)
+       (gdb-var-list-children-handler-1, gdb-var-update-handler-1):
+       Follow change to gdb-var-list.
+       (gdb-starting): Don't show the overlay arrows when program is running.
+
+       * progmodes/gud.el (gud-speedbar-buttons): Follow change to
+       gdb-var-list.
+
+2006-03-14  Bill Wohler  <wohler@newt.com>
+
+       * image.el (image-load-path-for-library): Pass value of path
+       rather than symbol.  Always return list of directories.
+       Guarantee that image directory comes first.
+
+2006-03-14  Alan Mackenzie  <acm@muc.de>
+
+       * font-core.el (font-lock-extend-region\(-function\)?.):
+       New function/variable.
+
+       * font-lock.el (font-lock-after-change-function):
+       Call font-lock-extend-region.  Obey font-lock-lines-before.
+       (font-lock-default-fontify-region): Remove reference to
+       font-lock-lines-before.
+
+       * jit-lock.el (jit-lock-after-change):
+       Call font-lock-extend-region.  Obey font-lock-lines-before.
+
+2006-03-14  David Ponce  <david@dponce.com>
+
+       * tree-widget.el (tree-widget-themes-load-path)
+       (tree-widget-themes-directory, tree-widget-theme): Doc fix.
+
+2006-03-13  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc) <defgroup>: Add link to manual.
+       (rcirc-print): Mark the start of text at the end of the prompt.
+       (rcirc-track-minor-mode): Add autoload cookie.
+       (rcirc-update-activity-string): Add space to front of mode-line
+       indicator.
+
+2006-03-13  Miles Bader  <miles@gnu.org>
+
+       * net/rcirc.el (rcirc-nick-abbrevs): Remove variable.
+       (rcirc-abbrev-nick): Remove function.
+       (rcirc-format-response-string): Don't call `rcirc-abbrev-nick'.
+
+2006-03-13  David Ponce  <david@dponce.com>
+
+       * tree-widget.el: Handle themes across all occurrences of the main
+       themes sub-directory found in tree-widget-themes-load-path.
+       (tree-widget-themes-directory, tree-widget-theme): Doc fix.
+       (tree-widget--locate-sub-directory): Return all occurrences.
+       (tree-widget-themes-path): New function.
+       Replace tree-widget-themes-directory, and return a list of directories.
+       (tree-widget-set-parent-theme)
+       (tree-widget-lookup-image): Use it.
+
+2006-03-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-link-search): Avoid self-matching of
+       links, allow target text to be distributed over several lines.
+       (org-search-not-link): New function.
+       (org-set-regexps-and-options, org-get-current-options):
+       New startup options.
+       (org-export-as-html): Take odd-level setting from local variable.
+       (org-fontify-emphasized-text): New option.
+       (org-set-font-lock-defaults): Include emphasized text.
+       (org-follow-mhe-link): Allow folder-only links, fix folder name.
+       (org-font-lock): Customize group renamed from `org-faces'.
+
+2006-03-13  John Paul Wallington  <jpw@pobox.com>
+
+       * ibuf-ext.el (ibuffer-never-show-predicates): Add `require'
+       keyword; require `ibuf-ext' feature.  Thanks to Zhang Wei.
+
+2006-03-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-start.el (all): Delete :version keyword for members of the
+       fringe group, since the entire group is new in 22.1.
+
+2006-03-13  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-stack-list-locals-handler): Add local
+       map if value is hexadecimal (an address).
+       (gud-watch): Only search roots for existing watch expressions.
+       (gdb-speedbar-refresh): Bind speedbar-shown-directories to nil to
+       prevent caching problems with speedbar-update-directory-contents.
+
+2006-03-12  Juri Linkov  <juri@jurta.org>
+
+       * battery.el (battery-linux-proc-acpi): Check `capacity' for non-nil
+       before comparing with `low' and `warn'.
+
+       * info.el (Info-dir-remove-duplicates): Move point to the
+       beginning of the current line after deleting the entries from
+       redundant heading.  Use marker for `limit' and compare it with
+       point before calling `re-search-forward'.
+
+2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * simple.el (yank): Fix typo in docstring.
+
+2006-03-11  Ryan Yeske  <rcyeske@gmail.com>
+
+       * mail/rmailsum.el (rmail-summary-next-msg): Skip deleted
+       messages, where "D" is the 6th character.
+
+2006-03-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * simple.el (yank): Fix last change.
+
+2006-03-11  David Ponce  <david@dponce.com>
+
+       * ispell.el (ispell-find-aspell-dictionaries): Add aliases before
+       merging elements from the standard ispell-dictionary-alist.
+       (ispell-aspell-add-aliases): Add aliases to the passed dictionary
+       alist, and return the new alist.
+
+2006-03-11  Richard Stallman  <rms@gnu.org>
+
+       * mail/rmail.el (rmail-ignored-headers): Discard DomainKey-Signature.
+
+       * eshell/eshell.el (eshell-prefer-to-shell): Variable deleted;
+       the way it is implemented is too unclean.
+
+       * simple.el (kill-region, yank): Doc fix.
+
+       * battery.el (battery-echo-area-format): Doc fix.
+       (battery-mode-line-format): Likewise.
+       (battery-linux-proc-apm, battery-linux-proc-acpi): Likewise.
+       (battery-linux-proc-acpi): Ignore batteries that say "charged".
+
+2006-03-11  Kurt Hornik  <Kurt.Hornik@wu-wien.ac.at>
+
+       * progmodes/octave-mod.el (octave-indent-for-comment):
+       Behave according to do string.
+
+2006-03-11  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/ispell.el (ispell-menu-map-needed) [ispell-message]:
+       Be visible only if major mode is Mail Mode.
+
+       * textmodes/flyspell.el (flyspell-external-point-words)
+       (flyspell-process-localwords): Fix last changes.
+
+2006-03-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * calendar/holidays.el (list-holidays): Doc fix.
+
+       * international/mule.el (auto-coding-alist): Add .odt
+       (OpenOffice's open document) files.
+
+       * files.el (auto-mode-alist): Add .odt (OpenOffice's open
+       document) files.  Mention in the doc string the need to sync with
+       auto-coding-alist.
+
+2006-03-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el (hack-local-variables-confirm): Don't prompt for ! if
+       enable-local-variables is set to always query, or there is no
+       savable variable.
+
+2006-03-10  Bill Wohler  <wohler@newt.com>
+
+       * image.el (image-load-path-for-library): Merge at least three
+       functions from Gnus and MH-E into this one function that can now
+       be shared.
+
+2006-03-11  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-remove-text-properties): Rename from
+       gdb-remove-mouse-face and remove help-echo too.
+       (gdb-enqueue-input): Correct conditional clause.
+
+2006-03-10  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/calendar.el (calendar-holidays): Doc fix.
+       * calendar/holidays.el (list-holidays): Doc fix.
+
+2006-03-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdba): Don't call gdb-init-1 explicitly as
+       it gets called in gdb-prompt anyway.
+       (gdb-use-separate-io-buffer): Only restore window arrangement for
+       gdb-many-windows.
+       (gdb-enqueue-input): Make it harder to send GDB input when program
+       is running.
+       (gdb-buffer-list): New variable.
+       (gdb-remove-mouse-face): New function.
+       (gdb-starting): Use it when GDB input won't get sent.
+
+2006-03-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help.el (view-lossage): Remove trailing whitespace before
+       inserting "\n".
+
+2006-03-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el (hack-local-variables-confirm):
+       Set coding-system-for-read to nil before writing to .emacs.
+
+       * arc-mode.el (archive-extract): Check if an existing buffer name
+       comes from a different archive.
+
+       * help.el (describe-key-briefly): If KEY is a down event, read and
+       discard the up event.
+
+2006-03-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-buttons): Allow pointers to
+       be edited and use font-lock-warning-face for any changes.
+
+       * progmodes/gdb-ui.el (gdb-edit-value-handler): New function.
+       (gdb-edit-value): Use it to report any errors.
+
+2006-03-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help.el (describe-key): Remove leftover test code.
+
+2006-03-07  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el: Move defvars out of eval-when-compile.
+       Use buffer-file-name variable.
+       (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused
+       arg `file'.
+       (org-level-faces): Remove startup dependency.
+       (org-cycle, org-map-tree, org-scan-tags)
+       (org-remember-handler): Don't call `outline-level' directly.
+       (org-mhe-search-all-folders): New option.
+       (org-mhe-get-message-folder-from-index)
+       (org-mhe-get-message-folder): Fix indexing search.
+       (org-format-agenda-item): Handle nil TAGS argument.
+       (org-cleaned-string-for-export, org-activate-target-links)
+       (org-make-target-link-regexp): Deal with empty radio target list.
+       (org-tag): New face.
+       (org-get-level-face): New function.
+       (org-set-font-lock-defaults): Simplify setup for headlines.
+       (org-complete): Pass common substring to `display-completion-list'.
+
+2006-03-06  David Ponce  <david@dponce.com>
+
+       * tree-widget.el: Update Commentary header.
+       (tree-widget-theme-name): Ignore parent themes.
+       (tree-widget-set-parent-theme): New function.
+       (tree-widget-set-theme): Use it.
+       (tree-widget-set-image-properties): Move definition.  Does nothing
+       if image properties have already been set.
+       (tree-widget-image-properties): Move definition.  Receive an image
+       name.  Set the :pointer property.
+       (tree-widget-lookup-image): Doc fix.  Search in parent themes.
+       Don't set the :pointer image property.
+       (tree-widget-convert-widget): New function.  Handle :dynargs
+       compatibility here.
+       (tree-widget): Use it to :convert-widget.  Add the :expander-p
+       predicate to control when the :expander function is entered.
+       Thanks to Ken Manheimer <ken.manheimer@gmail.com> for the idea.
+       (tree-widget-value-create): Handle :expander-p.  widget-apply
+       :expander.
+       (tree-widget-expander-p): New function.  Default value of the
+       :expander-p property.
+
+2006-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * help.el (describe-key): Properly handle the return value of
+       read-key-sequence when grabbing an up-event.  Cleanup mouse-1
+       remaps.  Handle string and vector `follow-link' values.
+
+2006-03-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * complete.el (PC-expand-many-files): Try be more careful when parsing
+       the shell's output.
+
+2006-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * outline.el (hide-sublevels): Provide better interactive default.
+
+2006-03-06  Kenichi Handa  <handa@m17n.org>
+
+       * international/fontset.el (create-fontset-from-fontset-spec):
+       Fix regexp for paring FONTSET-SPEC (allow spaces after `:').
+
+2006-03-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * progmodes/gud.el (gud-jdb-marker-filter): Quote `[' with two
+       backslashes instead of one in regexp.
+       (gud-tooltip-dereference): Add missing optional argument.
+
+2006-03-04  John Paul Wallington  <jpw@pobox.com>
+
+       * wdired.el (toplevel): Require `cl' at compile-time.
+
+2006-03-04  Andreas Schwab  <schwab@suse.de>
+
+       * server.el (server-process-filter): Handle errors during
+       evaluation of the argument.
+
+2006-03-03  John Paul Wallington  <jpw@pobox.com>
+
+       * t-mouse.el (t-mouse-drag-start, t-mouse-swap-alt-keys): Doc fix;
+       escape parentheses at beginning of line.
+       (t-mouse-tty, t-mouse-make-event): Doc fix; use imperative.
+       (t-mouse-mode): Remove period from end of error message.
+
+2006-03-03  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/flyspell.el (flyspell-process-localwords):
+       Be case-sensitive.
+
+2006-03-03  Martin Rudalics  <rudalics@gmx.at>
+
+       * cus-edit.el (custom-quote): Remove function, since it has been
+       moved to custom.el.
+
+       * font-lock.el (lisp-font-lock-keywords-2)
+       * emacs-lisp/rx.el (rx-check-any, rx-check-not)
+       * generic-x.el (reg-generic-mode): Quote "]"s in regexps when
+       they have no special meaning.
+
+       * midnight.el (clean-buffer-list): Handle case where base-buffer of
+       indirect buffer gets killed before indirect buffer.  Use dolist.
+
+2006-03-03  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * emacs-lisp/edebug.el (edebug-display): Use `edebug-sit-for-seconds'
+       value instead of a literal constant (1) on more pauses.
+
+2006-03-03  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>  (tiny change)
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       Be case-sensitive.
+
+2006-03-03  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-url-regexp): Match entire url when it starts
+       with "www".
+
+2006-03-03  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el: Restablish intermediate missing comment header to
+       preserve outline structure.
+       (allout-beginning-of-current-entry): Skip invisible text.
+       (allout-open-topic): Fix opening a topic at end-of-buffer.
+       (allout-minor-mode): Move nearer to allout-mode function.
+
+2006-03-02  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-paste-subtree): Remove (debug) form.
+
+2006-03-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * dframe.el (dframe-frame-mode): Don't burp when menu-bar-lines
+       is nil.
+
+       * progmodes/gud.el (gud-speedbar-menu-items):
+       Use buffer-local-value and add missing :visible keyword.
+
+       * progmodes/gdb-ui.el (gdb-speedbar-refresh): Quieten speedbar-refresh.
+
+2006-03-01  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-index.el (reftex-index-map): `follow-mouse'
+       must be `follow-link'.
+
+       * textmodes/reftex-toc.el (reftex-toc-map): Likewise.
+
+       * textmodes/org.el (org-export-as-html): Fix bugs in HTML
+       formatting: No nested anchors.
+       (org-all-targets): Fix bug with XEmacs compatibility.
+       (org-read-date): Add (require 'parse-time).
+       (org-set-tags): Fix bug with extra inserted space.
+       (org-export-html-style): Define a style class for targets.
+       (org-agenda-keymap, org-mouse-map): Add a binding for `follow-link'.
+       (org-hide-leading-stars): New option.
+       (org-hide): New face.
+       (org-set-font-lock-defaults): Allow to hide leading stars.
+       (org-get-legal-level, org-tr-level): New functions.
+       (org-odd-levels-only): New option.
+       (org-level-faces, org-paste-subtree, org-convert-to-odd-levels)
+       (org-demote, org-promote): Deal with double-star levels.
+       (org-convert-to-odd-levels): New command.
+
+2006-03-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.el (speedbar-update-localized-contents): Try to
+       preserve window-start.
+       (speedbar-update-directory-contents): Try to preserve window-start
+       and window-point.
+       (speedbar-update-special-contents): Don't move back to start of window.
+
+       * progmodes/gdb-ui.el (gdb-speedbar-refresh): Rename from
+       gdb-speedbar-timer-fn.  Use speedbar-refresh instead of
+       speedbar-timer-fn.
+       (gdb-var-update-handler, gdb-var-update-handler-1): Use it.
+       (gdb-speedbar-expand-node): Use speedbar-delete-subblock
+       instead of gdb-speedbar-timer-fn.
+
+2006-02-28  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calccomp.el (math-compose-tex-matrix): Add a latex option.
+       (math-compose-expr): Use latex option when calling
+       `math-compose-tex-matrix' for latex mode.
+
+2006-02-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.el: Re-instate comments about developing for speedbar
+       [this is what info and gdb-ui use even if better methods exist now].
+
+       * t-mouse.el: New file.
+       (t-mouse-tty): Use with-temp-buffer.  Add more terminal types.
+       (t-mouse-lispy-buffer-posn-from-coords): Remove.
+       (t-mouse-make-event-element): Use posn-at-x-y instead.
+       (t-mouse-make-event): Deal with Fedora Core 3.
+       (t-mouse-make-event): Don't sink the `stupid text mode menubar'.
+       (t-mouse-mouse-position-function): New function.  Use it instead
+       of advising mouse-position.
+       (t-mouse-mode): New minor mode.
+       (t-mouse-stop, t-mouse-run): Remove.  Use t-mouse-mode instead.
+
+2006-02-27  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/calendar.el (calendar-holidays): Doc fix.
+
+2006-02-27  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-source-window): New variable.
+       Re-introduce the concept of a source window.
+       (gdb-get-buffer-create): Rename from gdb-get-create-buffer for
+       consistency with get-buffer-create.
+       (def-gdb-auto-update-handler, gdb-info-locals-handler)
+       (gdb-data-list-register-values-handler)
+       (gdb-stack-list-locals-handler): Try to preserve window-start as
+       well as window-point.
+       (gdb-display-source-buffer): New function (old concept).
+       (gdb-goto-breakpoint): Use it.
+
+       * progmodes/gud.el (gud-display-line): Use gdb-display-source-buffer
+       for gdb-ui/gdb-mi (old concept).
+
+2006-02-27  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-index.el (reftex-index-map): Add `follow-mouse'
+       binding.
+
+       * textmodes/reftex-toc.el (reftex-toc-map): Add `follow-mouse' binding.
+
+       * textmodes/reftex-sel.el (reftex-select-label-map)
+       (reftex-select-bib-map): Add `follow-mouse' binding.
+
+2006-02-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * jka-cmpr-hook.el (jka-compr-compression-info-list)
+       (jka-compr-mode-alist-additions, jka-compr-load-suffixes):
+       Give :set functions to provide automatic updating.
+       Update docstring.  Give compiler defvars early in the file
+       and move the defcustoms to a later spot where all called functions
+       are defined.
+       (jka-compr-file-name-handler-entry): Doc fix.
+       (jka-compr-compression-info-list--internal)
+       (jka-compr-mode-alist-additions--internal)
+       (jka-compr-load-suffixes--internal): New variables.
+       (jka-compr-install): Set the three above variables.
+       Update `load-file-rep-suffixes' instead of `load-suffixes'.
+       (jka-compr-update, jka-compr-set): New functions.
+       (auto-compression-mode): Doc fix.
+
+       * jka-compr.el (jka-compr-uninstall): Replace `mapcar' with `mapc'.
+       Update `load-file-rep-suffixes' instead of `load-suffixes'.
+       Use jka-compr-compression-info-list--internal,
+       jka-compr-mode-alist-additions--internal and
+       jka-compr-load-suffixes--internal.
+
+       * files.el (load-library):
+       * loadhist.el (file-loadhist-lookup):
+       * startup.el (command-line):
+       * subr.el (locate-library):
+       * emacs-lisp/autoload.el (update-directory-autoloads):
+       * emacs-lisp/find-func.el (find-library-suffixes):
+       Use `get-load-suffixes' instead of `load-suffixes'.
+
+       * subr.el (locate-library):
+       * emacs-lisp/find-func.el (find-library-name):
+       Use `load-file-rep-suffixes' instead of '("").
+
+2006-02-26  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-save-history, ido-load-history): Simplify.
+       Don't use find-file-noselect to avoid interference from other modes.
+
+2006-02-25  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * progmodes/sh-script.el (sh-mode): Fix bug: Arrange
+       to use the default shell if filename is not available.
+       Reported by Giorgos Keramidas.
+
+2006-02-25  John Williams  <jrw@pobox.com>  (tiny change)
+
+       * progmodes/etags.el (tags-completion-table): Do completion from
+       all the tables in the current list, as documented in the manual.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * CC Mode Update to 5.31.3.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-mode.el (c-postprocess-file-styles):
+       Bind inhibit-read-only to t, around the call to
+       c-remove-any-local-eval-or-mode-variables, so that it works on a
+       RO file.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-awk.el: Correct a typo.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el, cc-mode.el: Rename c-hungry-backspace to
+       c-hungry-delete-backwards, at the request of RMS.  Leave the old
+       name as an alias.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-mode.el: Correct a typo.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-defs.el: Update the version number to 5.31.3.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el (c-electric-brace): Fix clean-up
+       brace-else-brace (error due to mbeg, mend being undefined).
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-mode.el: File Local variables: Solve the problem
+       where both `mode' and c-file-offsets are specified: `mode' will
+       overwrite c-f-o's settings:
+       (c-remove-any-local-eval-or-mode-variables): New function.
+       (c-postprocess-file-styles): Call the above new function, within
+       c-tentative-buffer-change, to splat `mode' and `eval' before the
+       second hack-local-variables.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-mode.el:
+       [Supersedes patch to cc-engine.el 2005-12-16T20:07:49Z!monnier@iro.umontreal.ca]
+       (c-after-change): Protect the match data with save-match-data.
+       It was getting corrupted by c-after-change-check-<>-operators.
+
+       * cc-defs.el: [Supersedes patch V1.38]:
+       (top level): Check for a buggy font-lock-compile-keywords ONLY in
+       XEmacs.  GNU Emacs 22 now has a check which would throw an error here.
+
+       * progmodes/cc-awk.el (c-awk-after-change): Protect the match data
+       with save-match-data.  It was being corrupted when Font Lock was
+       not enabled.
+
+2006-02-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-langs.el (c-mode-menu): Add menu items for Electric
+       Mode and Subword Mode.
+
+       * progmodes/cc-engine.el (c-beginning-of-statment-1): Distinguish
+       real labels ("case 1:" or "foo:") from non-labels ("public:").
+       (c-forward-objc-directive): Replace c-forward-token-2 with crude
+       coding; c-f-t-2 doesn't move over a token at EOB.
+
+       * progmodes/cc-defs.el (c-version): Update version number to 5.31.2.
+
+       * progmodes/cc-cmds.el, cc-mode.el, cc-engine.el
+       (c-update-modeline): Concatenate the minor mode indicators
+       directly onto mode-name, removing c-submode-indicators.
+       Sometimes, c-s-i got separated from the mode name on the mode line.
+
+       * progmodes/cc-cmds.el (c-electric-brace, c-electric-semi&comma)
+       (c-electric-colon): Correct doc-strings: "/ln" -> "/la".
+
+2006-02-24  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Improve the
+       error message when there's an evaluation error to show whether
+       it's loaded from source or not.
+       (c-filter-ops): Make it available at runtime too to work when
+       `c-make-init-lang-vars-fun' needs to evaluate from source.
+
+2006-02-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help.el (help): Revert last part of 2006-02-23 change (deletion
+       of the `provide' call).
+
+2006-02-23  Juri Linkov  <juri@jurta.org>
+
+       * compare-w.el (compare-windows-highlight): Add new value
+       `persistent' and change :type from `boolean' to `choice'.
+       (compare-windows-overlays1, compare-windows-overlays2):
+       New internal variables.
+       (compare-windows-highlight): If compare-windows-highlight is
+       `persistent', add current overlays to compare-windows-overlays[12]
+       instead of adding compare-windows-dehighlight to pre-command-hook.
+       (compare-windows-dehighlight): Delete all overlays from
+       compare-windows-overlays[12].
+
+       * info.el (Info-search): Don't bind search-spaces-regexp to
+       Info-search-whitespace-regexp in non-regexp isearch mode.
+
+2006-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * help.el (describe-mode): Pass `mode-name' to format-mode-line.
+
+2006-02-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * textmodes/org.el (org-xemacs-p)
+       (org-export-html-show-new-buffer, org-table-may-need-update)
+       (org-insert-item, org-mhe-get-message-real-folder)
+       (org-mhe-get-message-folder-from-index)
+       (org-mhe-get-message-folder, org-mhe-get-message-num)
+       (org-mhe-get-header, org-make-org-heading-search-string)
+       (org-make-org-heading-camel, org-table-sort-lines)
+       (org-format-org-table-html, org-format-table-table-html):
+       Fix typos in docstrings.
+
+2006-02-23  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-cleaned-string-for-export)
+       (org-solidify-link-text): New function.
+       (org-add-hook): Use `add-local-hook' instead of `make-local-hook' for
+       XEmacs, just to silence the compiler.
+       (org-export-as-ascii, org-export-as-html-and-open):
+       Use `org-cleaned-string-for-export' and create internal links.
+       (org-follow-mhe-link): Require mh-e, use folder.
+
+2006-02-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-buttons): Use shadow face properly.
+
+       * progmodes/gdb-ui.el (gdb-debug-ring-max): Rename from
+       gdb-debug-log-length.
+       (gdb-debug-ring): Rename from gdb-debug-log-ring.  Don't make
+       it a real ring but...
+       (gud-gdba-marker-filter): ...make it work like mark-ring.
+       (gdb-enable-debug): Rename from gdb-enable-debug-log.
+       (gdb-mouse-jump): New function.  Add bindings.
+
+2006-02-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-signalled): New variable and function.
+       (gdb-debug-log-ring): Rename from gdb-debug-log and make a ring.
+       (gdb-send, gdb-send-item, gud-gdba-marker-filter): Use it.
+       (gdb-debug-log-length): Customize it's length.
+       (gud-watch, gdb-var-create-handler): Display function::var format
+       but don't use to create variable object.
+       (gdb-var-create-handler): Use message-box in place of message.
+       (gdb-stopped): Call gdb-exited if signalled.
+
+2006-02-22  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex.el (reftex-locate-file): Remove duplicate function.
+
+       * textmodes/reftex-vars.el (reftex-try-all-extensions): New option.
+
+       * textmodes/reftex.el (reftex-locate-file): Search all extensions
+       if `reftex-try-all-extensions' is set.
+
+       * textmodes/reftex-dcr.el (reftex-view-crossref): New argument to
+       fail silently when there is no valid argument at point.
+       (reftex-view-crossref-when-idle): Call `reftex-view-crossref' with
+       `fail-silently' argument.  From a patch by David Reiter.
+
+       * textmodes/org.el (org-mark-ring-push, org-mark-ring-goto):
+       New commands.
+       (org-mark-ring): New variable.
+       (org-mark-ring-length): New option.
+       (org-open-at-point, org-goto, org-open-file): Push old position
+       onto the mark ring.
+       (org-add-hook): New function.
+       (org-export-table-remove-special-lines): New option.
+       (org-skip-comments, org-format-org-table-html): Respect new
+       option `org-export-table-remove-special-lines'.
+       (org-open-file): Allow special command configuration for
+       directory link.
+       (org-file-apps): Fix bugs in customize type, added setting
+       for directories.
+       (org-activate-tags, org-format-agenda-item, org-complete)
+       (org-get-tags-at, org-scan-tags, org-make-tags-matcher)
+       (org-get-tags, org-get-buffer-tags, org-open-at-point)
+       (org-link-search, org-make-org-heading-search-string)
+       (org-make-org-heading-camel): Allow @ and 0-9 as tags characters.
+       (org-radio-targets, org-file-link-context-use-camel-case)
+       (org-activate-camels): New options.
+       (org-update-radio-target-regexp, org-all-targets)
+       (org-make-target-link-regexp, org-activate-target-links):
+       New functions.
+       (org-make-org-heading-search-string): New function.
+       (org-store-link, org-insert-link): Use new option
+       `org-file-link-context-use-camel-case'.
+       (org-activate-camels): Use new option `org-activate-camels'.
+       (org-link-regexp): Add mhe prefix.
+       (org-open-at-point, org-store-link): Support for mhe links.
+       (org-mhe-get-message-real-folder, org-mhe-get-message-folder)
+       (org-mhe-get-message-folder-from-index, org-mhe-get-message-num)
+       (org-mhe-get-header, org-follow-mhe-link): New functions.
+       (org-remove-angle-brackets, org-add-angle-brackets):
+       New functions.
+       (org-bracket-link-regexp): New constant.
+       (org-read-date): Fix bug that was rejecting all typed dates.
+       (org-link-search): Make hierarchy above visible after a match.
+       (org-follow-bbdb-link): Inhibit electric mode for BBDB.
+       (org-store-link): Fix bug with link creation when cursor is in
+       an empty line.
+       (org-open-at-point): Fix bug with matching a link.
+       Fixed buggy argument sequence in call to `org-view-tags'.
+       (org-compile-prefix-format): Set `org-prefix-has-tag'.
+       (org-prefix-has-tag): New variable.
+       (org-format-agenda-item): Remove tags from headline
+       if appropriate.
+       (org-agenda-remove-tags-when-in-prefix): New option.
+
+2006-02-21  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-diff.el (ediff-setup-diff-regions, ediff-setup-diff-regions3):
+       Fix the regular expressions.
+
+2006-02-21  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/sh-script.el (sh-mode): Set shell type based on file name
+       if there's no other specific basis.
+
+       * emacs-lisp/unsafep.el (unsafep): Don't treat &rest or &optional
+       as variables at all.
+       (unsafep-variable): Rename arg; doc fix.
+
+       * abbrevlist.el (list-one-abbrev-table): Add autoload.
+
+       * calendar/appt.el (diary-selective-display): Add defvar.
+
+       * sort.el (sort-columns): Use Posix arg syntax for `sort'.
+
+       * isearch.el (search-whitespace-regexp): Fix custom type.
+
+       * help.el (describe-key-briefly): Compute interactive args
+       in same was as before previous change.
+
+       * files.el (enable-local-variables): Doc fix.
+
+2006-02-21  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.el: Cleanup as file is now pre-loaded.
+       (fringe-bitmaps): Initialize unconditionally.
+       (fringe-mode, set-fringe-style): Remove autoload cookies.
+
+2006-02-21  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
+
+       * fringe.el (fringe-bitmaps): Rename `horisontal-bar' to
+       `horizontal-bar'.
+       (fringe-cursor-alist): Use `horizontal-bar'.
+
+2006-02-20  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.el (fringe-bitmaps): Update to new bitmap names.
+       (fringe-indicator-alist, fringe-cursor-alist): Initialize.
+
+       * loadup.el: Load "fringe" on window systems.
+
+2006-02-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-buttons): Use shadow face for all
+       out of scope components.
+
+       * progmodes/gdb-ui.el (gdb-speedbar-auto-raise): Don't enable by
+       default.
+
+2006-02-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (customize-mark-to-save, customize-mark-as-set):
+       Load the symbol first.
+
+2006-02-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buff-menu.el (list-buffers-noselect): Turn also "\n" into a
+       strech spec so it doesn't display as "^J" on the header line
+       when `Buffer-menu-use-header-line' is t.
+
+2006-02-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.el (speedbar-make-button): Keep text properties
+       of string arguments if desired.
+
+       * progmodes/gud.el (gud-speedbar-buttons): Fontify watch
+       expessions.
+
+       * progmodes/gdb-ui.el (gdb-speedbar-expand-node): Force update
+       of speedbar.
+
+2006-02-19  Ryan Yeske  <rcyeske@gmail.com>
+
+       * ffap.el (ffap-read-file-or-url): Bind `completion-ignore-case'
+       to value of `read-file-name-completion-ignore-case'.
+
+2006-02-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (customize-mark-as-set): Push to `user' theme.
+
+       * cus-edit.el (custom-save-variables): Allow unthemed values.
+       (customize-set-variable): Push setting to `user' theme.
+
+2006-02-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el: Don't require font-lock as it's now
+       automatically loaded.
+       (gud-speedbar-buttons): Replace gdb-var-changed with
+       gdb-force-update.
+
+       * progmodes/gdb-ui.el (gdb-force-update): Rename from
+       gdb-var-changed.
+       (gdb-post-prompt): Use it.
+       (gdb-var-create-handler, gdb-var-evaluate-expression-handler)
+       (gdb-var-update-handler, gdb-var-delete)
+       (gdb-speedbar-expand-node, gdb-var-list-children-handler-1)
+       (gdb-var-update-handler-1): Don't set gdb-var-changed, just set
+       gdb-force-update in gdb-post-prompt.
+       (gdb-reset): Clear watch expressions from speedbar when quitting.
+
+2006-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-cmd.el (viper-insert-state-post-command-sentinel)
+       (viper-change-state-to-vi, viper-change-state-to-emacs):
+       Make aware of cursor coloring in the Emacs state.
+       (viper-special-read-and-insert-char): Use read-char-exclusive.
+       (viper-minibuffer-trim-tail): Workaround for fields in minibuffer.
+
+       * viper-init.el (viper-emacs-state-cursor-color): New variable.
+
+       * viper-util.el (viper-save-cursor-color)
+       (viper-get-saved-cursor-color-in-replace-mode)
+       (viper-get-saved-cursor-color-in-insert-mode)
+       (viper-restore-cursor-color): Make aware of the cursor color in Emacs
+       state.
+       (viper-get-saved-cursor-color-in-emacs-mode): New function.
+
+       * ediff-diff.el (ediff-ignore-case, ediff-ignore-case-option)
+       (ediff-ignore-case-option3, ediff-actual-diff-options)
+       (ediff-actual-diff3-options): New variables to control case sensitivity.
+       (ediff-make-diff2-buffer, ediff-setup-fine-diff-regions)
+       (ediff-setup-diff-regions3): Make aware of case-sensitivity.
+       (ediff-toggle-ignore-case): New function.
+       (ediff-extract-diffs, ediff-extract-diffs3): Preserve point in buffers.
+
+       * ediff-help.el (ediff-long-help-message-narrow2)
+       (ediff-long-help-message-compare2, ediff-long-help-message-compare3)
+       (ediff-long-help-message-word-mode): Add ignore-case command.
+       (ediff-help-for-quick-help): Add ignore-case command.
+
+       * ediff-merg.el: Move provide to the end.
+
+       * ediff-ptch.el: Move provide to the end.
+
+       * ediff-wind.el: Move provide to the end.
+
+       * ediff-mult.el: Move provide to the end.
+       (ediff-set-meta-overlay): Enable follow-link.
+
+       * ediff.el: Move provide to the end.
+       Break recursive load cycle in eval-when-compile.
+       (ediff-patch-buffer): Better heuristics.
+
+       * ediff-util.el: Move provide to the end.
+       Break recursive load cycle in eval-when-compile.
+       (ediff-setup-keymap): Add binding for #c.  Replace some defsubsts with
+       defuns.
+       (ediff-submit-report): Pass the values of ediff-diff3-program,
+       ediff-diff3-options.
+
+2006-02-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help-fns.el (help-do-arg-highlight): Recognize also ARG- followed by
+       the opening bracket of the following bracketing pairs: {}, [], (), <>,
+       `' (for example, in the docstring of `windmove-default-keybindings').
+
+2006-02-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-buttons): Update properly for
+       shadow face.  Don't provide binding to edit variable when it is
+       out of scope.
+
+       * progmodes/gdb-ui.el (gdb-var-evaluate-expression-handler)
+       (gdb-var-update-handler): Detect out of scope variables with pre
+       GDB 6.4 too.
+       (gdb-post-prompt): Revert change from 2006-02-17 (force update).
+       Reset status of variable objects to nil in update handlers.
+       (gdb-var-update-handler-1): Detect when a variable object comes
+       in scope.  setcar on var changes gdb-var-list directly.
+
+2006-02-17  Juri Linkov  <juri@jurta.org>
+
+       * ffap.el (ffap) <defface>: Add explicit face declaration.
+       (ffap-highlight): Use face `ffap' directly instead of checking
+       for its existence.
+
+       * icomplete.el (icomplete-get-keys): Use `t' for the second arg
+       `visible-ok' of `other-buffer' to find the right original buffer.
+
+       * info.el (Info-search): Skip `Local Variables' node.
+
+2006-02-17  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-find-file): Check for symbols `apropos', `history',
+       `toc' in the input filename, and return these symbols as is.
+       (Info-find-node-2): Set Info-current-file to symbols `apropos',
+       `history', `toc' instead of strings.
+       (Info-set-mode-line): For non-string Info-current-file use the
+       symbol's name inside **.
+       (Info-isearch-push-state): Add quote before Info-current-file and
+       Info-current-node.
+       (Info-isearch-pop-state): Use `equal' instead of `string='.
+       (Info-extract-pointer, Info-following-node-name): Use
+       `match-string-no-properties' instead of `match-string'.
+       (Info-up): Check `old-file' for `stringp'.
+       (Info-history): Use `equal' instead of `string-equal'.
+       Check `file' for `stringp'.
+       (Info-history): Use symbol `history' instead of string as first arg
+       of `Info-find-node'.
+       (Info-toc): Check `Info-current-file' for `stringp'.  Use symbol
+       `toc' instead of string.
+       (Info-extract-menu-node-name): Use `buffer-substring-no-properties'
+       instead of `buffer-substring', and `match-string-no-properties'
+       instead of `match-string'.
+       (Info-index-nodes): Check for symbols `apropos', `history', `toc'
+       instead of strings.
+       (info-apropos): Use `Info-find-node' instead of `Info-goto-node'.
+       Use symbol `apropos' instead of string.
+       (Info-copy-current-node-name): Check `Info-current-file' for
+       `stringp' and construct a command with `Info-find-node' from it.
+       (Info-fontify-node): Use `match-string-no-properties' instead of
+       `match-string' and check file names for `stringp'.
+       (Info-desktop-buffer-misc-data): Check for symbols `apropos',
+       `history', `toc' instead of strings.
+
+2006-02-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el: Rearrange functions and variables in the file local
+       variables section.
+
+2006-02-17  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * files.el: Add truncate-lines, ispell-check-comments and
+       ispell-local-dictionary as safe local variables.
+
+2006-02-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-buttons): Use shadow face for
+       out of scope variables.
+       (gud-speedbar-buttons): Use unless.
+
+       * progmodes/gdb-ui.el (gdb-var-list): Update doc string.
+       (gdb-init-1, gdb-var-changed): Set gdb-var-changed to t initially.
+       (gdb-show-changed-values): Also use for out of scope variables.
+       (gdb-var-update-handler-1): Note if variable goes out of scope.
+
+2006-02-17  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-connect): Make all arguments optional, and
+       default to global variable values for unsupplied args.
+       (rcirc-get-buffer-create): Fix bug with setting the target.
+       (rcirc-any-buffer): Rename from rcirc-get-any-buffer, and include
+       test for rcirc-always-use-server-buffer-flag here.
+       (rcirc-response-formats): Add %N, which is a facified nick.  %n
+       uses the default face.  Change the ACTION format string.  If the
+       "nick" is the server, don't print anything for that field.
+       Comment fixes.
+       (rcirc-target-buffer): Don't test
+       rcirc-always-use-server-buffer-flag here.
+       (rcirc-print): Squeeze extra spaces out of the text before message.
+       (rcirc-put-nick-channel): Strip potential "@" char from nick
+       before adding them to nick table.
+       (rcirc-url-regexp): Improve to match address like "foo.com".
+
+2006-02-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * allout.el (allout-hidden-p): Move this defsubst before
+       allout-overlay-interior-modification-handler, where it is first
+       used.
+
+2006-02-17  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el: Use allout invisible-text overlays instead of
+       selective display for concealed text.  Also, lots of general
+       cleanup, and improved compatibility code.
+
+       (allout-version): Incremented, corrected, revised, and refined
+       module commentary.
+
+       (provide 'allout): Moved to the bottom, added a require of overlay.
+
+       (allout-encrypt-unencrypted-on-saves): Defaults to t instead of
+       `except-current'.
+       (allout-write-file-hook-handler): Minimize delay.
+       (count-trailing-whitespace-region): New function so
+       auto-encryption of current topic can resituate cursor exactly.
+       PGP/GPG encryption trims trailing whitespace from lines, which
+       must be accounted for across encryption then decryption.
+
+       (allout-command-prefix): Now defaults to "\C-c<space>" rather than
+       just plain "\C-c", to avoid intruding on user's keybinding space.
+
+       (allout-toggle-current-subtree-encryption): Pass along fetch-pass
+       parameter, so user request to provide a new password is done.
+
+       (allout-outside-normal-auto-fill-function, allout-auto-fill):
+       Refined mechanism for auto-filling behavior while in allout mode.
+
+       (allout-mode): Explicitly specify the mode map in the docstring.
+       Clarify provision for various write-file hook var names.
+       Adjusted for invisible-text overlays instead of selective-display.
+
+       (allout-depth): Really return 0 if not within any topic.  This
+       rectifies `allout-beginning-of-level' and sequence numbering
+       errors that occur when cutting and pasting numbered topics.
+       Changed from a in-line subst to a regular function, as well.
+
+       (allout-pre-next-prefix): Renamed from allout-pre-next-preface.
+
+       (allout-end-of-subtree, allout-end-of-subtree)
+       (allout-end-of-entry, allout-end-of-current-heading)
+       (allout-next-visible-heading, allout-open-topic, allout-show-entry)
+       (allout-show-children, allout-show-to-offshoot)
+       (allout-hide-current-entry, allout-show-current-entry): Rectified
+       handling of trailing blank lines between items.
+
+       (allout-line-boundary-regexp, set-allout-regexp, allout-depth)
+       (allout-current-depth, allout-unprotected, allout-hidden-p)
+       (allout-on-current-heading-p, allout-listify-exposed)
+       (allout-chart-subtree, allout-goto-prefix)
+       (allout-back-to-current-heading, allout-get-body-text)
+       (allout-snug-back, allout-flag-current-subtree, allout-show-all)
+       (allout-hide-region-body, allout-toggle-subtree-encryption)
+       (allout-encrypt-string, allout-encrypted-key-info)
+       (allout-next-topic-pending-encryption, allout-encrypt-decrypted)
+       (allout-file-vars-section-data): Adjusted for use with
+       invisible-text overlays instead of selective-display.
+
+       (allout-kill-line, allout-kill-topic, allout-yank-processing):
+       Reworked for use with invisible text overlays.
+
+       (allout-current-topic-collapsed-p): New function.
+
+       (allout-hide-current-subtree): Use allout-current-topic-collapsed-p
+       to know when to close the containing topic.
+
+       (allout-pre-command-business, allout-post-command-business):
+       Simplify undo-batching and dynamic isearch exposure.
+
+       (allout-set-overlay-category): New for invisible-text overlays.
+       Sets properties of allout-overlay-category, used by
+       allout-flag-region to set invisible-text overlay properties.
+       (allout-get-invisibility-overlay): Get the first qualifying
+       invisibility overlay, so we can find the extent of it.
+       (allout-back-to-visible-text): Get to just before the beginnining
+       of the current invisibility overlay, if any.
+
+       (allout-overlay-insert-in-front-handler)
+       (allout-overlay-interior-modification-handler)
+       (allout-before-change-handler, allout-isearch-end-handler): New
+       functions to handle extraordinary actions affecting concealed
+       text.
+
+       (allout-flag-region): Use overlays instead of selective-display
+       for invisible text - by inheritence from the properties of
+       allout-overlay-category in mainline Emacs, and applied
+       property-by-property in XEmacs, some recent versions of which
+       don't inherit the properties from the category.  Provisions to
+       respond to concealed-text edits simplified drastically.
+
+       (allout-isearch-rectification, allout-isearch-was-font-lock)
+       (allout-isearch-expose, allout-enwrap-isearch)
+       (allout-isearch-abort, allout-pre-was-isearching)
+       (allout-isearch-prior-pos, allout-isearch-did-quit)
+       (allout-isearch-dynamic-expose)
+       (allout-hide-current-entry-completely): Functions deleted.
+
+       (allout-undo-aggregation): Explicit undo aggregation no longer
+       necessary due to transition away from selective-display.
+
+       (set-allout-regexp, allout-up-current-level)
+       (allout-next-visible-heading, allout-forward-current-level)
+       (allout-open-topic, allout-reindent-body, allout-rebullet-topic)
+       (allout-kill-line, allout-yank-processing, allout-show-children)
+       (allout-expose-topic, allout-old-expose-topic)
+       (allout-listify-exposed, allout-insert-latex-header)
+       (allout-toggle-subtree-encryption, allout-encrypt-string)
+       (remove-from-invisibility-spec, allout-hide-current-subtree):
+       Ditched unused variables.
+
+2006-02-17  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/ispell.el (ispell-change-dictionary): Call
+       ispell-buffer-local-dict instead of
+       ispell-accept-buffer-local-defs.
+       (ispell-local-dictionary-alist): Accept as valid any coding-system
+       supported by Emacs.
+       (ispell-dictionary-alist-3): Esperanto dictionary's coding system
+       changed to iso-8859-3.
+
+2006-02-17  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.el (speedbar-frame-width): Make an inline function
+       instead of a macro.  Use frame-width.
+       (speedbar-try-completion, speedbar-update-contents)
+       (speedbar-timer-fn): Use consp.
+       (speedbar-update-localized-contents): Try to preserve point.
+
+       * progmodes/gdb-ui.el (gdba, gdb-var-list): Improve doc strings.
+       (menu): Re-order menu items.
+       (gdb-var-update-regexp, gdb-var-update-regexp-1): Match "in_scope"
+       field.
+       (gdb-var-update-handler-1): Use it for GDB 6.4+.
+       (gdb-post-prompt): Speed things by not forcing update.
+
+2006-02-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * wid-edit.el (widget-button-click): For mouse-1, cancel button
+       press and perform default action if we get a mouse movement event.
+
+2006-02-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * calendar/icalendar.el (icalendar--get-event-property)
+       (icalendar--get-event-property-attributes): Fix typos in
+       docstrings.
+
+       * progmodes/flymake.el (flymake-fix-file-name): Fix typo in
+       docstring.
+
+2006-02-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bs.el (bs-mode): Use `buffer-disable-undo'.
+       (bs--get-file-name): Simplify.
+       (bs-show-in-buffer): Mark the buffer as not modified.
+
+2006-02-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * wid-edit.el (widget-keymap): Bind down-mouse-1 to
+       widget-button-click.
+
+       * cus-edit.el (custom-mode-map): Remove mouse-1 binding.
+       (custom-mode): Update docstring.
+
+       * cus-theme.el (custom-new-theme-mode-map): Remove mouse-1
+       binding.
+
+       * files.el (hack-local-variables-confirm): Allow scrolling if the
+       file variable list is too long.  Kill temp buffer after use.
+
+2006-02-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gdb): Improve doc string.
+       (gdb-script-font-lock-keywords): Expand allowed character set.
+
+       * progmodes/gdb-ui.el (gdb-use-separate-io-buffer)
+       (gdb-display-separate-io-buffer, gdb-frame-separate-io-buffer)
+       (gdb-separate-io-interrupt, gdb-separate-io-quit)
+       (gdb-separate-io-stop, gdb-separate-io-eof):
+       Rename from gdb-inferior-* to gdb-separate-*.
+       (gdb-set-gud-minor-mode-existing-buffers-1): Improve doc string.
+
+2006-02-14  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-arith.el (math-check-known-scalarp): Make sure
+       expression is a symbol before checking that it is bound.
+
+       * calc/calcalg2.el (math-integrate-by-parts): Do a more careful
+       test to see if equation can be solved.
+
+2006-02-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * wid-edit.el (widget-button-click): Use :pressed-face property
+       for overlay face, if it exists.
+
+       * cus-edit.el (custom-manual, custom-add-see-also)
+       (custom-add-parent-links, custom-group-link): Add :pressed-face
+       property to links.
+
+       * files.el (hack-local-variables): Remove ignored variables before
+       checking if any variables need setting.
+
+2006-02-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * cus-start.el (all): Add x-gtk-whole-detached-tool-bar.
+
+2006-02-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help.el (where-is): Fix message for remapped commands.
+
+       * mwheel.el (mouse-wheel-click-event, mouse-wheel-mode):
+       Fix typos in docstrings.
+
+2006-02-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * files.el (safe-local-variable-values): New option.
+       (hack-local-variables-prop-line): Return a list of variable-value
+       pairs if MODE-ONLY is non-nil.
+       (hack-local-variables): Construct list of variable-value pairs,
+       and apply or reject them in one go.  Ask for confirmation if
+       variables are not known safe.
+       (hack-local-variables-confirm): Complete rewrite.  Support
+       `safe-local-variable-values'.
+       (enable-local-variables): Update docstring to reflect new
+       behavior.
+       (ignored-local-variables): Ignore ignored-local-variables and
+       safe-local-variable-values.
+       (safe-local-variable-p): New function.
+       (risky-local-variable-p): `safe-local-variable' property check
+       moved to safe-local-variable-p.
+       (hack-one-local-variable): Checks moved to hack-local-variables.
+
+       (byte-compile-dynamic, c-basic-offset, c-file-style)
+       (c-indent-level, comment-column, fill-column, fill-prefix)
+       (indent-tabs-mode, kept-new-versions, no-byte-compile)
+       (no-update-autoloads, outline-regexp, page-delimiter)
+       (paragraph-start, paragraph-separate, sentence-end)
+       (sentence-end-double-space tab-width, version-control):
+       Add `safe-local-variable' property.
+
+       * find-lisp.el: Delete nonexistent `autocompile' file variable.
+
+       * icomplete.el, play/landmark.el: Change nonexistent
+       `outline-layout' file variable to `allout-layout'.
+
+2006-02-14  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gud-watch, gdb-invalidate-registers-1)
+       (gdb-get-changed-registers): Test value of gud-minor-mode relative
+       to gud-comint-buffer.
+       (gdb-speedbar-expand-node, gdb-locals-mode): Use functions in
+       gdb-ui.el for gdb-mi.el.
+       (gdb-post-prompt, gdb-get-changed-registers): Move test for
+       registers buffer to gdb-get-changed-registers.
+       (gdb-breakpoint-regexp): New regexp.  Allow toggling and
+       deletion of catchpoints (throw and catch).
+       (gdb-toggle-breakpoint, gdb-delete-breakpoint)
+       (gdb-goto-breakpoint): Use it for both gdb-ui and gdb-mi.
+       (gdb-find-file-hook, gdb-set-gud-minor-mode-existing-buffers-1)
+       (gdb-var-list-children-1, gdb-info-breakpoints-custom)
+       (gdb-var-update-1, gdb-invalidate-locals-1): Use also for gdb-mi.
+
+2006-02-13  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-arith.el (math-check-known-matrixp): Make sure
+       expression is a symbol before checking that it is bound.
+
+2006-02-13  Richard M. Stallman  <rms@gnu.org>
+
+       * mouse.el (mouse-drag-mode-line-1): Use mouse-drag-move-window-bottom
+       for the minibuffer too, but not if resize-mini-windows will interfere.
+
+       * help.el (describe-key-briefly, describe-key): Do all arg-reading
+       inside `interactive' spec.
+       (describe-key-briefly-internal, describe-key-internal):
+       Functions merged back into their callers.
+
+2006-02-13  Martin Rudalics  <rudalics@gmx.at>
+
+       * info.el (info-xref-visited): Inherit from info-xref too.
+       (Info-set-mode-line): Replace occurrences of `%' by `%%'
+       when propertizing Info-current-file and Info-current-node.
+
+2006-02-13  Juri Linkov  <juri@jurta.org>
+
+       * tumme.el (tumme-thumbnail-storage): Fix docstring.
+       (tumme-thumb-name): Fix per-directory format.
+
+2006-02-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * subr.el (substitute-key-definition): Doc fix (hide internal arg).
+
+2006-02-12  Miles Bader  <miles@gnu.org>
+
+       * net/rcirc.el (rcirc-format-response-string): Fix small bugs.
+
+2006-02-13  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el: Remove history section.  If someone needs the it, it
+       can always be found in CVS.
+
+2006-02-12  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-thumbnail-storage): Update docstring.  Add info
+       about the Thumbnail Managing Standard option.
+
+2006-02-12  Richard M. Stallman  <rms@gnu.org>
+
+       * subr.el (substitute-key-definition): Doc fix.
+
+       * simple.el (blink-matching-paren-dont-ignore-comments): Doc fix.
+
+       * files.el (magic-mode-alist): Don't use `\\s ' in regexps.
+
+       * info.el (Info-mode): Doc fix.
+
+       * progmodes/ebrowse.el (ebrowse-global-prefix-key): Change to C-c C-m.
+
+2006-02-12  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-remote-path): Add "/usr/xpg4/bin" on top,
+       because on Solaris a POSIX compatible "id" is needed.  Reported by
+       Magnus Henoch <mange@freemail.hu>.
+
+2006-02-12  Juri Linkov  <juri@jurta.org>
+
+       * tumme.el: Remove todo item about Thumbnail Managing Standard.
+       (tumme) <defgroup>: Change :group to `multimedia'.
+       (tumme-thumbnail-storage): Add choice `standard' for Thumbnail
+       Managing Standard.
+       (tumme-cmd-create-thumbnail-options): Use %w and %h instead of %s.
+       Fix dostring.
+       (tumme-cmd-create-temp-image-options): Use %w and %h instead of %x
+       and %y.  Fix docstring.
+       (tumme-cmd-pngnq-program, tumme-cmd-pngcrush-program)
+       (tumme-cmd-create-standard-thumbnail-command): New user options.
+       (tumme-thumb-size): Set default to 128 if tumme-thumbnail-storage
+       is `standard'.  Fix docstring.
+       (tumme-thumb-width, tumme-thumb-height): New user options.
+       (tumme-external-viewer): Try to find various viewers.
+       (tumme-get-thumbnail-image): Use `create-image' instead of
+       constructing the `image' structure.
+       (tumme-insert-thumbnail): Use `png' if tumme-thumbnail-storage is
+       `standard'.
+       (tumme-thumb-name): Add file name generation for standard storage.
+       Simplify code for other storages.
+       (tumme-thumb-name): Use width %w and height %h instead of size %s.
+       Add modification time %m and thumbnail-nq8 %q.
+       Use `tumme-cmd-create-standard-thumbnail-command' if
+       tumme-thumbnail-storage is `standard'.
+       (tumme-dired-insert-marked-thumbs): New autoload command.
+       (tumme-dired-after-readin-hook): New function.
+       (tumme-line-up-dynamic): Use `tumme-thumb-width' instead of
+       `tumme-thumb-size'.
+       (tumme-display-image): Replace size-x %x and size-y %y with
+       width %w and height %h.
+
+       * dired.el (dired-mode-map): Bind `\C-t\C-t' to
+       `tumme-dired-insert-marked-thumbs'.
+
+2006-02-12  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-write-tag): Fix small bug (file name did not
+       include path).
+       (tumme-mark-tagged-files): Fix bug in regexp used to find rows
+       matching tag.
+
+2006-02-12  Miles Bader  <miles@gnu.org>
+
+       * net/rcirc.el (rcirc-nick-abbrevs, rcirc-response-formats):
+       New variables.
+       (rcirc-abbrev-nick): New function.
+       (rcirc-format-response-string): Rewrite to use the formats in
+       `rcirc-response-formats' and expand escape sequences therein.
+       A text-property `rcirc-text' is added over the actual response
+       text to make easy to find inside the returned string.
+       (rcirc-print): When filling, just look for the `rcirc-text'
+       text-property to find the appropriate fill prefix, instead of
+       using hardwired patterns.
+
+2006-02-11  Mathias Dahl  <brakjoller@hotmail.com>
+
+       * tumme.el: Enhance some docstrings.  Add todo item about Thumbnail
+       Managing Standard.
+
+2006-02-11  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-buffer-internal): Set mark for ido-insert-buffer.
+       Don't use insert-buffer; do insert-buffer-substring directly.
+       (ido-file-internal): Set mark for ido-insert-file.  Use insert-file-1.
+
+2006-02-11  Martin Rudalics  <rudalics@gmx.at>
+
+       * files.el (revert-buffer, recover-file): Replace buffer-read-only
+       with inhibit-read-only.  Suggested by Stefan Monnier.
+       (revert-buffer): Let insert-file-contents discard
+       buffer-undo-list.  Simplify code.
+       (find-file, find-file-existing, revert-buffer): Doc-string fixes.
+
+2006-02-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * menu-bar.el (menu-bar-select-yank): Add a doc string.
+
+       * help.el (describe-key-briefly): Now a wrapper for
+       describe-key-briefly-internal.  Bind enable-disabled-menus-and-buttons
+       to t.  Populate yank-menu if empty.
+       (describe-key-briefly-internal): Renamed from describe-key-briefly.
+       (describe-key): Now a wrapper for describe-key-internal.  Bind
+       enable-disabled-menus-and-buttons to t.  Populate yank-menu if empty.
+       (describe-key-internal): Renamed from describe-key.
+
+2006-02-11  Milan Zamazal  <pdm@zamazal.org>
+
+       * progmodes/glasses.el (glasses-separator): Doc fix.
+       (glasses-original-separator): New defcustom.
+       (glasses-make-readable, glasses-convert-to-unreadable): Use it.
+
+2006-02-11  Martin Rudalics  <rudalics@gmx.at>
+
+       * mwheel.el (mouse-wheel-up-event): Doc fix.
+
+2006-02-11  Mathias Dahl  <brakjoller@hotmail.com>
+
+       * tumme.el (tumme-dir): Change default value to "~/.emacs.d/tumme/".
+       (tumme-dir): New function.  Copied from thumbs.el.
+
+2006-02-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * desktop.el (desktop-outvar): Fix typo.
+       (desktop-save-buffer-p): Doc fix.
+
+       * subr.el (substitute-key-definition): Fix typo.
+
+2006-02-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * frame.el (select-frame-set-input-focus): Call x-focus-frame also
+       when window-system is mac.
+
+       * term/mac-win.el (fontset-standard): Rename from "fontset-mac".
+
+2006-02-10  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (substitute-key-definition-key): Pass t for NOERROR to
+       indirect-function instead of using condition-case.
+
+2006-02-10  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el (tumme-copy-with-exif-file-name): Try to make docstring
+       less `colloquial'...
+
+2006-02-09  Mathias Dahl  <mathias.dahl@gmail.com>
+
+       * tumme.el: Add a couple of todo items.
+
+2006-02-09  Lars Hansen  <larsh@soem.dk>
+
+       * hilit-chg.el: Add highlight-changes-mode to desktop-locals-to-save.
+       (highlight-changes-mode): Don't change desktop-locals-to-save.
+
+2006-02-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image-mode.el (image-toggle-display): Clear image cache if using
+       filename.
+
+2006-02-09  Masatake YAMATO  <jet@gyve.org>
+
+       * dired-x.el (dired-guess-shell-alist-default): Add .man as
+       a `dired-man' target.
+
+       * progmodes/autoconf.el (autoconf-font-lock-keywords): Check start
+       boundary of symbols.
+
+2006-02-08  Peter Doornbosch  <peter.doornbosch@luminis.nl>  (tiny change)
+
+       * vc-svn.el (vc-svn-print-log): Show recent commits as well.
+
+2006-02-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * hilit-chg.el (hilit-chg-update-all-buffers): Use `mapc' instead of
+       `mapcar'; return nil.
+
+2006-02-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mouse.el (mouse-drag-track): Don't change window if we rebind to
+       some other event.
+
+2006-02-08  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-startup-channels-alist):
+       Add irc.freenode.net and #emacs as defaults.
+       (rcirc-ignore-all-activity-flag): Remove variable.
+       (rcirc-authinfo): New variable.
+       (rcirc-authinfo-filename): Remove variable.
+       (rcirc-always-use-server-buffer-flag): New flag.
+       (rcirc): M-x rcirc will automatically connect without prompting.
+       C-u M-x rcirc will prompt.  Use rcirc-connect to create a
+       connection in lisp.
+       (rcirc-process-server-response-1): Remove everything but the nick
+       portion of the sender so it doesn't need to be done everywhere
+       else.  Update related code.
+       (global-map): Remove global keybindings.
+       (rcirc-get-buffer-create): Make sure rcirc-topic is set.
+       (rcirc-send-input): Split into several functions.
+       (rcirc-process-input-line, rcirc-process-message)
+       (rcirc-process-command): New functions.
+       (rcirc-target-buffer): New function to determine where to route
+       messages.
+       (rcirc-user-nick): Save match data.
+       (rcirc-toggle-ignore-buffer-activity)
+       (rcirc-update-activity-string): Remove global ignore functionality,
+       which can be done now by toggling rcirc-track-minor-mode.
+       (rcirc-track-minor-mode-map): New keymap.
+       (rcirc-track-minor-mode): New minor-mode.
+       (ignore): Make the ignore output nicer.  Always print it when
+       adding or removing nicks.
+       (rcirc-url-regexp): Improve.
+       (rcirc-mangle-text): Remove properties before using text in the
+       modeline.
+       (rcirc-authenticate): Authentication data comes from
+       rcirc-authinfo, not the file pointed to by rcirc-authinfo-file.
+       (rcirc-server-prefix): Inherit from rcirc-server.
+
+2006-02-08  Mathias Megyei  <Mathias.Megyei@micronas.com>  (tiny change)
+
+       * Makefile.in (compile): Append "|| true" to the end of the `find'
+       command, like compile-always does.
+
+2006-02-08  Sam Steingold  <sds@gnu.org>
+
+       * net/tramp.el (tramp-maybe-open-connection): Do not wait for
+       output from a dead connection.
+
+2006-02-07  Mathias Dahl  <brakjoller@hotmail.com>
+
+       * dired.el (dired-mode-map): Add more bindings for tumme.
+
+2006-02-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * wdired.el (wdired-mode-map): Use remap.
+       (wdired-get-filename): Massage.
+       (wdired-perm-mode-map): Don't copy bindings from wdired-mode-map.
+       (wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit): Use the
+       `keymap' property rather than `local-map'.
+
+2006-02-07  Mathias Dahl  <brakjoller@hotmail.com>
+
+       * tumme.el (tumme-get-thumbnail-image): New utility function.
+       Suggested by from Chong Yidong.
+       (tumme-dired-with-window-configuration): Rename from
+       `tumme-dired'.  Add code to save window configuration.
+       (tumme-restore-window-configuration): New command to restore the
+       window configuration that `tumme-dired-with-window-configuration'
+       saves before it changes the window configuration.
+       (tumme-show-all-from-dir): New command to display thumbnails for
+       all files in a directory entered by the user, like M-x thumbs.
+       (tumme-display-thumbs): Call `pop-to-buffer' after all thumbnails
+       have been created.
+       (tumme-display-thumbnail-original-image): Call `display-buffer'.
+       (obsolete-tumme-display-thumbnail-original-image-and-buffer):
+       Remove obsolete test function.
+
+2006-02-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * vc.el (small-temporary-file-directory): Remove defvar; there's
+       a defcustom for it in files.el.
+
+       * tumme.el (tumme-get-thumbnail-image): Add missing arg to `error'.
+       Fix typo in message.
+       (tumme-gallery-generate): Fix typo in `error' message.
+       (tumme-display-window-height-correction)
+       (tumme-display-window-width-correction, tumme-line-up-dynamic)
+       (tumme-line-up-interactive): Dox fixes.
+       (tumme-cmd-rotate-original-options, tumme-display-properties-format)
+       (tumme-restore-window-configuration, tumme-format-properties-string)
+       (tumme-create-thumbs, tumme-display-previous-thumbnail-original):
+       Fix typos in docstrings.
+
+2006-02-07  Chris Moore  <christopher.ian.moore@gmail.com>
+
+       * wdired.el (wdired-get-filename): Fix bug: Don't re-normalize OLD.
+
+2006-02-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-tooltip-mode): Remove autoload cookie.
+       User should use hook if desired.
+
+       * progmodes/gdb-ui.el (gdb-post-prompt): Regenerate breakpoints
+       buffer if necessary.
+       (gdb-delete-frame-or-window): New function.
+       (gdb-breakpoints-mode-map): Bind "q" to it.
+
+2006-02-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/nroff-mode.el: Clean up name space.
+       (nroff-mode-syntax-table): Remove spurious `1' in the syntax of \n.
+       (nroff-mode): Obey the global setting of nroff-electric-mode.
+       (nroff-electric-mode): Use define-minor-mode and derived-mode-p.
+
+       * calendar/calendar.el (calendar-increment-month): Typo in last change.
+
+2006-02-06  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * vc-svn.el (vc-svn-previous-version, vc-svn-next-version): New funcs.
+
+2006-02-06  Lars Hansen  <larsh@soem.dk>
+
+       * generic-x.el (etc-fstab-generic-mode): Add file system types
+       cifs and usbdevfs.  Allow special chars in file names.
+
+2006-02-05  Jay Belanger  <belanger@truman.edu>
+
+       Update copyright notices of the files in lisp/calc.
+
+2006-02-05  Romain Francoise  <romain@orebokech.com>
+
+       Update copyright notices of all files in the lisp/play directory.
+
+2006-02-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * ldefs-boot.el: Regenerate.
+
+       * emacs-lisp/find-func.el (find-definition-noselect): Minor doc fix.
+
+2006-02-05  Kim F. Storm  <storm@cua.dk>
+
+       * files.el (magic-mode-regexp-match-limit): New defvar.
+       (set-auto-mode): Use it to limit magic-mode-alist matching.
+
+2006-02-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * info.el (Info-index, Info-mode): Improve the description of the
+       `i' command.
+
+       * ldefs-boot.el: Regenerate.
+
+2006-02-03  Werner Lemberg  <wl@gnu.org>
+
+       * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be
+       greedy to find the closing bracket in \*[...] and similar
+       expressions.  This is a first rough fix -- many additional
+       refinements are necessary to make nroff mode really usable with groff.
+
+2006-02-03  Jens Petersen  <petersen@redhat.com>  (tiny change)
+
+       * international/mule-cmds.el (set-locale-environment):
+       Add "/usr/share/X11/locale/locale.alias" to search list for xorg-x11
+       libX11.
+
+2006-02-03  Joe Wells  <jbw@macs.hw.ac.uk>  (tiny change)
+
+       * arc-mode.el (archive-maybe-copy): Fix the way directories in the
+       archive are created in archive-tmpdir.
+
+2006-02-02  John Paul Wallington  <jpw@pobox.com>
+
+       * ibuffer.el (ibuffer-compressed-file-name-regexp): New defcustom.
+       (ibuffer-fontification-alist): Use it.
+       (ibuffer-mode-map): Bind `ibuffer-mark-compressed-file-buffers'
+       to "* z" and the Ibuffer Mark menu.
+
+       * ibuf-ext.el (ibuffer-mark-compressed-file-buffers): New command.
+
+2006-02-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/table.el (*table--cell-describe-mode)
+       (*table--cell-describe-bindings): Undo last change since
+       print-help-return-message is not obsoleted by anything at all.
+
+2006-02-02  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emulation/cua-base.el (cua-mode): Doc fix.
+
+2006-02-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * dframe.el (dframe-handle-make-frame-visible)
+       (dframe-handle-iconify-frame, dframe-get-focus)
+       (dframe-select-attached-frame, dframe-power-click)
+       (dframe-frame-mode): Fix typos in docstrings.
+
+       * ezimage.el (ezimage-mail, ezimage-object-out-of-date)
+       (ezimage-insert-image-button-maybe, ezimage-insert-over-text):
+       Fix typos in docstrings.
+
+       * hi-lock.el (hi-lock-mode, hi-lock-line-face-buffer)
+       (hi-lock-face-buffer, hi-lock-font-lock-hook)
+       (hi-lock-archaic-interface-message-used)
+       (hi-lock-file-patterns-range): Fix typos in docstrings.
+
+       * savehist.el (savehist-loaded, savehist-load, savehist-install)
+       (savehist-autosave, savehist-trim-history): Fix typos in docstrings.
+
+       * mail/mailclient.el (mailclient-place-body-on-clipboard-flag):
+       Fix typo in docstring.
+
+       * net/newsticker.el (newsticker--decode-iso8601-date)
+       (newsticker--set-customvar, newsticker--buffer-insert-item)
+       (newsticker--do-run-auto-mark-filter)
+       (newsticker--parse-generic-feed): Doc fixes.
+       (newsticker--retrieval-timer-list, newsticker-url-list)
+       (newsticker-hide-immortal-items-in-echo-area)
+       (newsticker-hide-obsolete-items-in-echo-area)
+       (newsticker-new-item-face, newsticker--enclosure)
+       (newsticker-buffer-update, newsticker-w3m-show-inline-images)
+       (newsticker--parse-atom-0.3, newsticker--parse-rss-1.0)
+       (newsticker--parse-generic-feed, newsticker--cache-contains)
+       (newsticker--stat-num-items, newsticker-download-enclosures):
+       Fix typos in docstrings.
+
+       * net/rcirc.el (rcirc-debug): Doc fix.
+       (rcirc-fill-column, rcirc-receive-message-hooks)
+       (rcirc-browse-url-map, rcirc-read-only-flag, rcirc-prompt)
+       (rcirc-mode, rcirc-generate-new-buffer-name)
+       (rcirc-startup-channels, rcirc-ignore-update-automatic)
+       (rcirc-cmd-ignore, rcirc-browse-url, rcirc-url-regexp):
+       Fix typos in docstrings.
+       (rcirc-print): "?\ " -> "?\s".
+       (rcirc-cmd-join): Improve argument/docstring consistency.
+
+2006-02-01  Mark A. Hershberger  <mah@everybody.org>
+
+       * xml.el (xml-parse-region): Move save-excursion and set-buffer up
+       before narrow-to-region.
+
+2006-02-01  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (move-beginning-of-line): Scan properly for invis change.
+
+       * replace.el (multi-occur-in-matching-buffers): Fix prev change.
+
+2006-02-01  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-convert-file-attributes): Set file's gid
+       change bit only when id-format is 'integer.  Reported by Matt
+       Hodges <M.P.Hodges@rl.ac.uk>.
+
+2006-02-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * hilit-chg.el (highlight-changes-initial-state)
+       (highlight-changes-global-initial-state): Doc fixes.
+       (highlight-changes-global-modes, global-highlight-changes):
+       Fix typos in docstrings.
+
+2006-02-01  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-mode): Mention that CUA enables
+       transient-mark-mode in doc string.
+
+2006-01-31  Richard M. Stallman  <rms@gnu.org>
+
+       * replace.el (multi-occur): Doc fix.
+       (multi-occur-in-matching-buffers): Rename from
+       multi-occur-by-filename-regexp.  Prefix arg says match
+       buffer names instead of file names.
+
+2006-01-31  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bs.el: Allow non-default values of `bs-header-lines-length'.
+       (bs--running-in-xemacs): Remove (not needed anymore).
+       (bs--set-window-height): Simplify by using `fit-window-to-buffer'
+       instead of `shrink-window', thus avoiding having to compute the
+       height of the window.
+       (bs--up): Wrap around even when there's no header.
+       (bs--down): Use `forward-line' instead of `next-line'.
+
+2006-01-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image-mode.el (image-toggle-display): Use file name if possible,
+       instead of unnecessarily allocating a (possibly huge) lisp string.
+
+2006-01-30  John Paul Wallington  <jpw@pobox.com>
+
+       * subr.el (toplevel): Define `cl-assertion-failed' condition here
+       because the `assert' macro signals it at runtime.
+
+       * emacs-lisp/cl.el (toplevel): Remove definition of
+       `cl-assertion-failed' condition.
+
+2006-01-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * thumbs.el (thumbs-marked-list): Make buffer-local and
+       permanent-local.
+       (thumbs-insert-thumb): Make help-echo non-sticky.
+       (thumbs-file-alist): Use eolp as check for (non)-image.
+
+2006-01-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ediff-mult.el (ediff-meta-buffer-keymap-setup-hook)
+       (ediff-before-session-group-setup-hooks)
+       (ediff-default-filtering-regexp, ediff-meta-mark-equal-files):
+       Fix typos in docstrings.
+
+       * window.el (bw-dir, bw-eqdir, balance-windows)
+       (split-window-keep-point): Fix typos in docstrings.
+
+       * textmodes/org.el (org-allow-space-in-links, org-closed-string)
+       (org-quote-string, org-calendar-to-agenda-key)
+       (org-agenda-sorting-strategy, org-agenda-use-time-grid)
+       (org-show-following-heading, org-tags-column)
+       (org-use-tag-inheritance, org, org-allow-space-in-links)
+       (org-usenet-links-prefer-google, org-file-apps-defaults-gnu)
+       (org-enable-table-editor, org-calc-default-modes)
+       (org-table-allow-automatic-line-recalculation)
+       (org-export-html-style, org-export-with-fixed-width)
+       (org-export-with-sub-superscripts, org-special-keyword)
+       (org-formula, org-time-grid, org-table-may-need-update)
+       (org-mode, org-goto-ret, org-goto-left, org-goto-right)
+       (org-goto-quit, org-get-indentation, org-end-of-item)
+       (org-move-item-down, org-move-item-up)
+       (org-renumber-ordered-list, org-todo, org-log-done, org-occur)
+       (org-remove-occur-highlights, org-read-date, org-goto-calendar)
+       (org-agenda, org-agenda-day-view, org-agenda-previous-date-line)
+       (org-agenda-log-mode, org-agenda-toggle-diary)
+       (org-agenda-toggle-time-grid, org-agenda-cleanup-fancy-diary)
+       (org-agenda-file-to-end, org-agenda-no-heading-message)
+       (org-agenda-get-closed, org-format-agenda-item)
+       (org-cmp-priority, org-cmp-category, org-cmp-time)
+       (org-agenda-change-all-lines, org-agenda-diary-entry)
+       (org-scan-tags, org-after-todo-state-change-hook, org-tags-view)
+       (org-link-search, org-camel-to-words, org-open-file)
+       (org-remember-handler, org-table-convert-region)
+       (org-table-move-row-down, org-table-move-row-up)
+       (org-table-copy-region, org-table-wrap-region)
+       (org-table-toggle-vline-visibility)
+       (org-table-get-vertical-vector, org-table-modify-formulas)
+       (org-table-get-specials, org-recalc-commands)
+       (org-table-rotate-recalc-marks, org-table-eval-formula)
+       (orgtbl-make-binding, org-in-invisibility-spec-p, org-cycle)
+       (org-level-color-stars-only, org-insert-heading):
+       Fix typos in docstrings.
+       (last-arg): Add defvar.
+
+       * makefile.w32-in (WINS): Add erc.
+       (MH_E_SRC): Update (copied from lisp/Makefile.in).
+
+2006-01-29  Bill Wohler  <wohler@newt.com>
+
+       * Makefile.in (MH_E_SRC): Add mh-compat.el, mh-folder.el,
+       mh-letter.el, mh-limit.el, mh-scan.el, mh-show.el, mh-thread.el,
+       mh-tool-bar.el, mh-xface.el.  Remove mh-customize.el, mh-init.el.
+       (mh-autoloads): Don't use comments on otherwise empty lines.
+
+2006-01-29  Edward O'Connor  <ted@oconnor.cx>
+
+       * emulation/viper.el (viper-major-mode-modifier-list):
+       Add insert-state and vi-state entries for erc-mode.
+       (viper-go-away, viper-set-hooks): Add and remove
+       viper-comint-mode-hook from erc-mode-hook as appropriate.
+
+       * emulation/viper.el (viper-insert-state-mode-list): Add erc-mode.
+
+2006-01-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bs.el (bs--format-aux): Implement `middle' alignment as
+       described in the docstring for `bs-attributes-list'.
+       (bs--get-name): Simplify.  Don't pad the buffer name.
+
+2006-01-27  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/ispell.el (ispell-find-aspell-dictionaries): If no
+       English aspell dictionary is installed, use the first entry of
+       ispell-dictionary-alist-1.
+
+2006-01-27  Kevin Rodgers  <ihs_4664@yahoo.com>  (tiny change)
+
+       * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
+       Doc fix.
+
+2006-01-27  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
+       for `process-file', in order to let it work for older Emacsen too.
+
+2006-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/latexenc.el: Add a suitable `coding:' tag.
+       (latexenc-find-file-coding-system): Undo last change.
+
+2006-01-27  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
+
+       * international/latexenc.el (latexenc-find-file-coding-system):
+       Make sure latexenc-main-file is a regular file and is readable.
+
+2006-01-27  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc-rcs.el (vc-rcs-fetch-master-state, vc-rcs-consult-headers):
+       Pass FILE to vc-user-login-name.
+
+       * vc-sccs.el (vc-sccs-state): Pass FILE to vc-user-login-name.
+
+2006-01-27  Nick Roberts  <nickrob@snap.net.nz>
+
+       * thumbs.el (thumbs-do-thumbs-insertion): Suppress message when
+       there are no more images to display.
+       (thumbs-mark, thumbs-unmark): Revert change so that they move to
+       the next image.
+
+2006-01-26  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-edit.el (custom-mode): Doc: Use advertised-widget-backward.
+
+       * wid-edit.el (advertised-widget-backward): New alias.
+       (widget-keymap): Use advertised-widget-backward for S-TAB.
+
+       * tumme.el: Correct the keywords.
+       (tumme-dir-max-size): Use defvar.
+       (tumme-setup-dired-keybindings, tumme-dired): Add autoload cookie.
+
+       * simple.el (move-beginning-of-line): Take account of fields.
+       (clone-indirect-buffer-other-window): Take args like
+       clone-indirect-buffer, and work like it.
+
+       * help-fns.el (describe-function): Don't pass `nil' as default.
+
+       * files.el (risky-local-variable-p): Follow var aliases.
+
+       * subr.el (lazy-completion-table): Doc fix.
+
+       * mail/rmailsum.el (rmail-make-summary-line-1): Don't set
+       global binding of `line'.
+
+2006-01-25  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc-hooks.el (vc-user-login-name): Rewritten to handle access via
+       Tramp.
+
+       * vc.el (vc-default-dired-state-info): Pass FILE to
+       vc-user-login-name.
+       (vc-default-update-changelog): Don't use vc-user-login-name, we
+       don't need it here.
+
+       * net/tramp-vc.el (vc-user-login-name): Comment out defadvice, it is
+       no longer necessary.
+
+2006-01-25  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule.el (decode-char): Avoid the overhead of
+       calling utf-lookup-subst-table-for-decode if
+       utf-translate-cjk-mode is nil.
+       (encode-char): Avoid the overhead of calling
+       utf-lookup-subst-table-for-encode if utf-translate-cjk-mode is
+       nil.
+
+2006-01-22  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule.el (make-subsidiary-coding-system): Reset
+       `coding-system-define-form' property of subsidiaries to nil.
+       Avoid duplicated entry in coding-system-alist.
+       (make-coding-system): Avoid duplicated entry in
+       coding-system-alist.
+       (define-coding-system-alias): Likewise.
+
+2006-01-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * completion.el: Minor fixes in introductory comment.
+       (completion-def-wrapper): Fix alist.
+
+2006-01-25  Nick Roberts  <nickrob@snap.net.nz>
+
+       * thumbs.el (thumbs-new-image-size): New function.
+       (thumbs-increment-image-size-element)
+       (thumbs-decrement-image-size-element, thumbs-increment-image-size)
+       (thumbs-decrement-image-size): Delete.
+       (thumbs-resize-image-1): Rename from thumbs-resize-image.  Keep old
+       temp files and use to resize.
+       (thumbs-resize-image): Rename from thumbs-resize-image-interactive.
+       Use increment argument to enlarge/shrink.  Preserve point.
+       (thumbs-shrink-image): Rename from thumbs-resize-image-size-down.
+       (thumbs-enlarge-image): Rename from thumbs-resize-image-size-up
+       (thumbs-show-thumbs-list): Set thumbs-buffer to current-buffer.
+       (thumbs-mark, thumbs-unmark): Preserve point.
+       (thumbs-modify-image): Keep old temp files and use to modify.
+       Cleanup old temp files at load time.  Preserve point.
+       (thumbs-view-image-mode-map): Use new command names.
+
+2006-01-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * log-view.el (log-view-minor-wrap): First rev is the one at point.
+
+       * calendar/cal-menu.el: Avoid macros from calendar.el so as to break
+       the nastiest part of the cyclic dependency.
+       (cal-menu-update): Use dotimes and calendar-increment-month.
+
+       * calendar/calendar.el: Remove unnecessary leading stars in docstrings.
+       (calendar-week-start-day): Add an :initializer.
+       (calendar-mode-map): Use suppress-keymap, and command remapping.
+       (describe-calendar-mode): Setup xref-stack info for the back button.
+       (calendar-star-date): Insert before delete.
+       (calendar-set-mode-line): Add file-modified info if applicable.
+       (calendar-increment-month): New function.
+
+2006-01-24  Tobias C. Rittweiler  <tcr@freebits.de>  (tiny change)
+
+       * font-lock.el (lisp-font-lock-keywords-2):
+       Recognize "& keywords" only at word boundaries.
+
+2006-01-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * thumbs.el (thumbs-extra-images): New variable.  Make it buffer-local
+       and permanent-local.
+       (thumbs-max-image-number): New variable.
+       (thumbs-do-thumbs-insertion): Use them.
+       (thumbs-per-line): Change default to 4.
+       (thumbs-marked-list): Rename from thumbs-markedL.
+       (thumbs-cleanup-thumbsdir, thumbs-delete-images)
+       (thumbs-rename-images): Use -list instead of L for internal variables.
+       (thumbs-call-convert): Use call-process instead of shell-command.
+       (thumbs-insert-thumb): Add filename as help-echo to each image.
+       (thumbs-show-from-dir): Rename from thumbs-show-all-from-dir.
+       Give dir to thumbs-show-thumbs-list.
+       (thumbs-show-thumbs-list): Set default-directory to that of images.
+       (thumbs-dired-show): Rename from thumbs-dired-show-all.
+       (thumbs-display-thumbs-buffer, thumbs-show-more-images): New functions.
+       (thumbs-mode-map): Bind "+" to thumbs-show-more-images.
+       (thumbs-view-image-mode-map): Bind "^" to thumbs-display-thumbs-buffer.
+
+2006-01-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * ses.el (ses-read-cell): Provide a default value.
+
+2006-01-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * term/w32-win.el (image-library-alist): Add additional names for
+       GIF library.
+
+2006-01-23  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
+
+       * international/latexenc.el (latexenc-find-file-coding-system):
+       Add file-regular-p check.
+
+2006-01-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (clone-buffer): Don't show the new buffer in the same
+       window.
+
+2006-01-23  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (link, link-visited): New faces based on default values
+       of `info-xref' and `info-xref-visited'.
+
+       * info.el (info-xref): Inherit from `link'.
+       (info-xref-visited): Inherit from `link-visited'.
+
+       * cus-edit.el (custom-buffer-create-internal): Use widget type
+       `custom-manual' instead of `info-link' and don't set properties
+       `button-face' and `mouse-face' explicitly.
+       (custom-browse-group-tag, custom-browse-variable-tag)
+       (custom-browse-face-tag): Inherit from widget class
+       `custom-group-link' instead of `push-button'.
+       (custom-button-unraised): Inherit from `underline' face.
+       (custom-link): Inherit from `link' face.  Fix doc and group.
+       (custom-add-parent-links, custom-group-value-create): Don't set
+       properties `button-face' and `mouse-face' explicitly for
+       `custom-group-link' widget.
+       (custom-group-link): Add properties `button-face' and `mouse-face'
+       to widget definition.
+       (custom-field-keymap): New variable.  Put `custom-field-keymap' to
+       editable-field's :keymap property.
+       (custom-mode): Fix docstring: substitute keybindings for
+       `widget-forward' and `widget-backward' from `widget-keymap',
+       `widget-complete' from `custom-field-keymap', replace old
+       `Custom-move-and-invoke' with `widget-move-and-invoke'.  Untabify.
+
+       * desktop.el (desktop-load-file): Check for `fboundp' before
+       calling `symbol-function'.
+
+       * simple.el (clone-buffer, clone-indirect-buffer)
+       (clone-indirect-buffer-other-window): Use `read-buffer' instead of
+       `read-string'.  Fix prompts.
+
+       * play/doctor.el (doctor-mode-map): Rename from `doc-mode-map'.
+
+2006-01-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * thumbs.el (thumbs-file-alist): Avoid creating duplicate entries.
+
+2006-01-22  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * startup.el (inhibit-splash-screen, initial-scratch-message):
+       Doc fixes.
+
+2006-01-22  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.52.
+
+       * net/tramp.el, net/tramp-ftp.el, net/tramp-util.el,
+       * net/tramp-vc.el: Add code for unloading Tramp.  See comment before
+       `tramp-unload-tramp' for checklist.
+
+       * net/tramp.el: Require `timer-funcs' instead of `timer' if in
+       XEmacs.  Contributed by Steve Youngs <steve@sxemacs.org>.
+       (tramp-unload-file-name-handler-alist)
+       (tramp-unload-tramp): New defuns.
+       (tramp-advice-PC-expand-many-files): New defadvice.
+       (tramp-save-PC-expand-many-files, tramp-setup-complete): Defuns
+       removed.
+       (tramp-handle-expand-file-name): Remove double slash.
+       (tramp-handle-file-attributes-with-ls): Return t as 9th attribute.
+       It doesn't matter, because it will be converted later on.
+       (tramp-handle-file-ownership-preserved-p): Rewritten.  The old
+       implementation was just heuristic.
+       (tramp-post-connection): Set uid and gid properties.
+       (tramp-convert-file-attributes): Set file's gid change bit.
+       (tramp-get-remote-uid, tramp-get-remote-gid): New defuns.
+       (tramp-handle-expand-file-name): Use "~root" for tilde expansion
+       in case of su(do)? methods.  The home directory of the local user
+       will be taken else.
+       (tramp-open-connection-telnet)
+       (tramp-open-connection-rsh, tramp-open-connection-su)
+       (tramp-open-connection-multi): Set PS1 to "$ ".  Otherwise, a
+       local shell prompt could hurt.  Reported by Romain Francoise
+       <romain@orebokech.com>.
+       (tramp-let-maybe): Add `edebug-form-spec' property.
+       (tramp-handle-expand-file-name): Bind `default-directory' locally
+       to "/" in order to avoid problems with UNC shares or Cygwin
+       mounts.
+       (tramp-md5-function): Fix typo in error message.
+
+       * net/tramp-ftp.el (tramp-ftp-enable-ange-ftp): New defun.
+
+       * net/tramp-util.el (top): Apply `ignore' instead of `identity'
+       for byte-compiler pacification.
+
+2006-01-22  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc-rcs.el (vc-rcs-state-heuristic): Use file-attributes with
+       ID-FORMAT `string'.  This allows us to get rid of
+       `vc-user-login-name UID'.
+
+       * vc-sccs.el (vc-sccs-state-heuristic): Likewise.
+
+2006-01-22  John Paul Wallington  <jpw@pobox.com>
+
+       * hl-line.el (hl-line-highlight, hl-line-move): Doc fixes.
+
+2006-01-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * emacs-lisp/find-func.el (find-definition-noselect)
+       (find-variable-noselect): Search variables in C source code too.
+       (find-function-C-source, find-function-noselect, find-function)
+       (find-function-other-frame, find-variable-noselect, find-variable)
+       (find-variable-other-frame, find-variable-at-point):
+       Fix docstrings.
+
+2006-01-21  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * mail/rmailout.el (rmail-output): Don't use content-type if it is nil.
+
+2006-01-21  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/flyspell.el (flyspell-emacs-popup, flypell-xemacs-popup):
+       Default to disabling the "Save affix" question.
+
+2006-01-21  Marien Zwart  <marienz@gentoo.org>  (tiny change)
+
+       * progmodes/python.el (python-mode) <eldoc-mode-hook>: Pass nil as
+       the first arg to run-python.
+
+2006-01-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * startup.el (command-line-1): Handle --no-desktop if desktop.el
+       is not loaded.
+
+2006-01-20  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calcalg2.el (calc-sum-rec): Fix the sum when the lower
+       limit is 0.
+
+       * calc/calc-arith.el (math-add-symb-fancy): Check the length of
+       the correct variable.
+
+2006-01-20  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-open-at-point): Fixed bug with matching a
+       link.  Fixed buggy argument sequence in call to `org-view-tags'.
+       (org-compile-prefix-format): Set `org-prefix-has-tag'.
+       (org-prefix-has-tag): New variable.
+       (org-format-agenda-item): Remove tags from headline if
+       appropriate.
+       (org-agenda-remove-tags-when-in-prefix): New option.
+       (org-get-tags-at): New function.
+
+2006-01-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * thumbs.el (thumbs-buffer): New variable.  Make it buffer local.
+       (thumbs-find-image): Move image name and number from buffer name
+       to mode name.  Set thumbs-buffer.  Preserve point so that large
+       images remain visible.
+       (thumbs-file-alist): Construct list in thumbs-buffer and reverse
+       order.
+       (thumbs-show-image-num): Get image from thumbs-file-alist.  Set
+       mode name.
+       (thumbs-next-image, thumbs-previous-image): Make them work.
+
+2006-01-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (custom-buffer-create-internal): State in the text above
+       the whole buffer buttons that they do not operate on hidden items.
+       (custom-face-menu): Use `custom-face-save' instead of
+       `custom-face-save-command'.
+       (custom-face-save-command): Make it an alias for `custom-face-save'
+       and declare it obsolete.
+       (custom-face-save): Doc fix.
+
+       * dired.el (dired-no-confirm): Add quote.
+       (dired-subdir-alist-pre-R): Add quote in
+       `make-variable-buffer-local' form and remove unbalanced parenthesis.
+
+2006-01-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/table.el (table-mode-indicator): Typo in last change.
+
+2006-01-19  Richard M. Stallman  <rms@gnu.org>
+
+       * outline.el (hide-leaves): Don't call outline-end-of-heading.
+       Fixes bug reported in Nov 2005.
+
+       * isearch.el (isearch-forward): Doc fix.
+
+       * dired.el (dired-move-to-filename-regexp): Define as alias.
+       (dired-no-confirm): Use defcustom.
+       (dired-subdir-alist-pre-R): Put defvar at top level.
+
+       * battery.el (battery-linux-proc-acpi): Handle "last full capacity".
+
+       * textmodes/bibtex.el (bibtex-strings, bibtex-reference-keys):
+       Mark as risky.
+
+       * simple.el (set-mark-command): Doc fix.
+       (clone-indirect-buffer-other-window):
+       Read arg like clone-indirect-buffer.
+       (move-beginning-of-line): Skip invisible newlines.
+
+2006-01-19  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/cpp.el (cpp-edit-load): Make the order of
+       listed conditions in a base C code buffer and its associate
+       CPP Edit buffer the same.
+
+2006-01-19  Kenichi Handa  <handa@m17n.org>
+
+       * mail/rmail.el (rmail-enable-mime): Docstring fixed.
+       (rmail-mime-feature): Likewise.
+       (rmail-require-mime-maybe): Use display-warning to show a warning
+       message.
+
+       * international/mule.el (auto-coding-regexp-alist-lookup): New fun.
+       (find-auto-coding): Use auto-coding-regexp-alist-lookup.
+
+2006-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * array.el: Move defvars out of eval-when-compile.
+       (array-make-template): Replace undeclared global var with a local one.
+       (array-mode): Inline initialization functions.
+       (array-init-local-variables, array-init-max-row)
+       (array-init-max-column, array-init-columns-per-line)
+       (array-init-field-width, array-init-rows-numbered)
+       (array-init-line-length, array-init-lines-per-row): Remove.
+
+       * play/doctor.el: Move defvars out of eval-when-compile.  Use dolist.
+       (doc-mode-map): Define explicitly.
+       (doctor-txtype): Use mapc.
+
+       * textmodes/table.el: Move defvars out of eval-when-compile.
+       Remove harmful code meant to avoid byte-compiler warnings.
+       (table-fixed-mode-indicator): Remove.  Use a more complex mode-line
+       specification that checks table-fixed-width-mode directly.
+       (table-recognize-region, table-recognize-cell):
+       Use restore-buffer-modified-p.
+       (table-fixed-width-mode): Remove code that refreshes
+       table-fixed-mode-indicator.
+       (*table--cell-describe-bindings, *table--cell-describe-mode):
+       Avoid obsolete name print-help-return-message.
+       (table--test-cell-list): Don't use replace-regexp from elisp.
+       (table--point-entered-cell-function, table--point-left-cell-function):
+       Don't set table-fixed-mode-indicator, use force-mode-line-update.
+
+       * textmodes/org.el: Move defvars out of eval-when-compile.  Move code
+       that was after the end of file.  Use buffer-file-name variable.
+       (org-timestamp-change): Use with-current-buffer.
+       (org-todo-list): Don't unnecessarily define a new buffer-local var.
+       (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused arg
+       `file'.
+
+       * progmodes/fortran.el: Move defvars out of eval-when-compile.
+       (fortran-break-line): Remove unused var `opoint'.
+       (fortran-abbrev-start): Obey help-event-list.
+
+2006-01-18  Jesper Harder  <harder@phys.au.dk>
+
+       * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-substring.
+
+2006-01-18  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/make-mode.el (makefile-imake-mode): New mode
+       derived from makefile-mode.
+       (makefile-imake-mode-syntax-table): New syntax table
+       derived from makefile-mode-syntax-table.
+       (makefile-mode): Write about makefile-imake-mode in doc string.
+       (makefile-mode-map): Bind "\C-c\C-m\C-i" to makefile-imake-mode.
+       (makefile-imake-font-lock-keywords): New font lock keywords.
+
+       * files.el (auto-mode-alist): Add Imakefile.
+
+2006-01-17  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/flyspell.el (ispell-kill-ispell-hook): Add to the hook when
+       loading the file rather than when turning on flyspell-mode.
+
+2006-01-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (customize-rogue): Minor doc fix.
+
+2006-01-17  Juri Linkov  <juri@jurta.org>
+
+       * dired-aux.el (dired-diff): Use dired-dwim-target-directory
+       instead of the file at the mark as default if the file at the mark
+       is the same as the file at point or if dired-dwim-target-directory
+       is not the same as the current directory and the mark is not active.
+
+       * log-view.el (log-view-minor-wrap): Use the same logic to get
+       revisions as `log-view-diff'.
+
+       * info.el (Info-revert-find-node): Check for Info-current-file
+       before preserving new-history.
+
+       * man.el (Man-heading-regexp): Add `/'.
+
+       * textmodes/sgml-mode.el: Add `coding: iso-2022-7bit' cookie.
+       (html-mode): Set `sentence-end-base' instead of `sentence-end'.
+
+2006-01-16  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (mode-line-faces): New defgroup.
+       (mode-line-highlight): Move definition after new defgroup.
+       (mode-line, mode-line-inactive, mode-line-highlight):
+       Replace :group `modeline' with `mode-line-faces'.
+       (mode-line-buffer-id): New face.
+       (modeline-buffer-id): New face alias.
+       (vertical-border): Remove :group `modeline'.
+
+       * bindings.el (propertized-buffer-identification): Use face
+       `mode-line-buffer-id' instead of `Buffer-menu-buffer'.
+       (mode-line-next-buffer, mode-line-previous-buffer): New functions.
+       (mode-line-buffer-identification-keymap): For mouse-1 replace
+       `mode-line-unbury-buffer' with `mode-line-previous-buffer'.
+       Replace `mode-line-bury-buffer' with `mode-line-next-buffer' for
+       mouse-3.
+
+       * buff-menu.el (buffer-menu-buffer) <defface>: Renamed from
+       Buffer-menu-buffer.  Doc fix.
+       (Buffer-menu-buffer): Face alias to buffer-menu-buffer.
+       (list-buffers-noselect): Use `buffer-menu-buffer' face instead of
+       `Buffer-menu-buffer'.
+
+       * info.el (Info-mode-line-node-keymap): New defvar.
+       (Info-set-mode-line): Use `stringp' to check Info-current-file.
+       Propertize Info-current-node with `mode-line-buffer-id' and
+       `mode-line-highlight' faces and `Info-mode-line-node-keymap'.
+
+       * time.el (display-time-mail-face): Replace :group `faces' with
+       `mode-line-faces'.
+
+2006-01-16  Kenichi Handa  <handa@m17n.org>
+
+       * international/code-pages.el: Add autoload cookies for cp125[0345678].
+
+       * language/european.el (cp1252): New alias for windows-1252.
+
+       * international/mule.el (autoload-coding-system): Prepare for EOL
+       variants.
+
+2006-01-15  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (term-raw-map): Add mapping for insert.
+       (term-send-insert): New.
+       (term-mode): Make variables local here instead of doing it in
+       `term-emulate-terminal'.
+       (term-emulate-terminal): Delete incorrect optimization for cr+lf.
+       Scroll reverse needs to take into account the scroll region.
+       Saving and restoring the cursor should save the color attributes too.
+       (term-reset-terminal): Reset the scroll region.
+       (term-handle-ansi-escape): Cursor up and down should take into
+       account the scroll region.
+       (term-set-scroll-region): Rename from `term-scroll-region'.
+       Move to 0,0 after setting the region.
+       (term-handle-scroll): Handle scroll up.
+       (term-down): Fix off by one error.
+       (term-delete-lines): Do not delete outside the scroll region.
+       (term-insert-lines): Take into account the scroll region.
+
+2006-01-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/ispell.el (ispell-internal-change-dictionary)
+       (ispell-change-dictionary): Undo most of last change of 2006-01-13.
+       (start, end): Move declaration outside of eval-when-compile.
+
+       * textmodes/flyspell.el (flyspell-kill-ispell-hook): New fun.
+       (flyspell-mode-on): Use it.
+
+       * textmodes/ispell.el (ispell-kill-ispell): Run new hook
+       ispell-kill-ispell-hook.
+
+2006-01-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (Custom-set, Custom-save, Custom-reset-current)
+       (Custom-reset-saved): Do not ask for confirmation in single option
+       buffers.
+
+2006-01-13  Richard M. Stallman  <rms@gnu.org>
+
+       * font-lock.el (lisp-font-lock-keywords-1): Minor rearrangement.
+
+2006-01-13  Romain Francoise  <romain@orebokech.com>
+
+       * add-log.el (add-change-log-entry, change-log-merge):
+       Conditionally use `hard-newline'.
+
+2006-01-13  Martin Rudalics  <rudalics@gmx.at>
+
+       * wid-edit.el (widget-field-end): If the overlay is no longer
+       associated with a buffer, behave as if the overlay didn't exist.
+
+       * cus-edit.el (custom-add-see-also, custom-add-parent-links):
+       Make sure the links use the `custom-link' face.
+
+2006-01-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/ld-script.el (auto-mode-alist): Use \' rather than $.
+       (ld-script-mode): Don't set indent-line-function since we don't
+       have one.
+
+2006-01-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-open-file): Use mailcap for selecting an
+       application.
+       (org-file-apps-defaults-gnu): Use mailcap as the default for
+       selecting an application on a UNIX system.
+       (org-agenda-show-tags): New command.
+       (org-table-insert-hline): Keep cursor in current table line.
+       (org-table-convert): Offset effect of modifying
+       `org-table-insert-hline'.
+       (org-format-agenda-item): New optional argument TAG.
+       (org-compile-prefix-format): Handle %T format for the tag.
+       (org-expand-wide-chars): New function.
+       (org-table-insert-row, org-table-insert-hline):
+       Use `org-expand-wide-chars'.
+       (org-open-file): Fix bug in program launch.
+       (org-get-time-of-day): Fix bug with times before 1am.
+       (org-agenda-menu): Add tags commands.
+
+2006-01-13  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/ispell.el (ispell-init-process): Include the used
+       dictionary in ispell process start message.
+       (ispell-internal-change-dictionary): When flyspell-mode is active
+       and dictionary is changed, make sure ispell process is restarted
+       and flyspell word cache cleared out for the current buffer.
+       (ispell-change-dictionary): Make sure flyspell word cache is
+       cleared out in all buffers with active flyspell mode when
+       dictionary is globally changed.
+       Call ispell-internal-change-dictionary after dictionary change.
+
+2006-01-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs-lisp/bytecomp.el (batch-byte-recompile-directory): Doc fix.
+
+       * makefile.w32-in (MH_E_SRC): Synchronize with Makefile.in.
+       (pre-mh-loaddefs.el-SH, pre-mh-loaddefs.el-CMD): Update Copyright
+       years.  Fix small differences wrt Makefile.in.
+       (recompile): Use --eval '(batch-byte-recompile-directory 0)', like
+       Makefile.in does.
+
+2006-01-12  Bill Wohler  <wohler@newt.com>
+
+       * Makefile.in (MH_E_SRC): Replace mh-index.el and mh-pick.el with
+       mh-search.el.
+
+2006-01-12  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/ld-script.el: Update copyright year.
+
+2006-01-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-theme.el (custom-theme-add-variable, custom-theme-add-face):
+       Don't add widget if setting undefined.
+
+2006-01-12  John Paul Wallington  <jpw@pobox.com>
+
+       * help-fns.el (describe-variable): Remove newlines from void
+       variable output.
+
+2006-01-13  Nick Roberts  <nickrob@snap.net.nz>
+
+       * wdired.el (wdired-mode-map): Add help echo for
+       wdired-abort-changes.
+
+       * man.el (Man-file-name-regexp): Adjust for a list of files.
+
+2006-01-12  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/ld-script.el (auto-mode-alist): Support
+       suffix conventions used in netbsd and eCos.
+
+2006-01-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (custom-reset-menu, custom-buffer-create-internal)
+       (custom-variable-menu, custom-face-menu, custom-group-menu)
+       (Custom-mode-menu): Change names of menu items.  (As discussed on
+       emacs-devel.)
+       (custom-face-menu): Add "Undo Edits" item.
+
+       * startup.el (init-file-user): defcustom -> defvar.
+
+       * tooltip.el (tooltip-mode): Doc fix.
+
+2006-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * reveal.el (reveal-post-command): window-buffer signals an error on
+       dead windows rather than returning nil.
+       (reveal-open-new-overlays): An overlay might die while we open others.
+
+2006-01-11  Bill Wohler  <wohler@newt.com>
+
+       * cus-dep.el (generated-custom-dependencies-file): Fix typo and
+       phrasing in docstring.
+
+       * Makefile.in (MH_E_SRC): Rename from MH-E-SRC since the dashes
+       can give some systems gas.  Add new file mh-buffers.el.
+
+2006-01-06  Masatake YAMATO  <jet@gyve.org>
+
+       * font-lock.el (cpp-font-lock-keywords): Font lock keywords for
+       C preprocessor forward ported from GNU Emacs 21.2.
+
+       * progmodes/asm-mode.el (asm-font-lock-keywords):
+       Use `cpp-font-lock-keywords'.
+
+       * progmodes/ld-script.el (ld-script-font-lock-keywords): Ditto.
+
+       * progmodes/ld-script.el (auto-mode-alist): Use \\> instead
+       of $ for "\\.ld[s]?".
+
+2006-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/tcl.el (tcl-indent-command): Use indent-for-tab-command.
+       (tcl-indent-line): Return `noindent' if inside a string.
+
+       * progmodes/flymake.el (flymake-split-string): Remove more than one
+       empty string at beg/end of the result.
+       (flymake-find-buildfile, flymake-find-possible-master-files):
+       Use expand-file-name.
+       (flymake-fix-file-name): Don't replace \ with / and don't remove ./
+       since expand-file-name does it for us.  Use directory-file-name.
+       (flymake-ler-get-full-file, flymake-ler-get-file, flymake-ler-get-line)
+       (flymake-ler-get-type, flymake-ler-get-text)
+       (flymake-ler-make-ler): Remove.  Replace by defstruct.  Update callers.
+       (flymake-current-line-no): Remove spurious interactive spec.
+       (flymake-delete-temp-directory): Remove unused var `slash-pos'.
+       (flymake-check-include): Remove arg inc-path merged into inc-name.
+       (flymake-check-patch-master-file-buffer): Fit in 80 columns.
+       Arg regexp-list replaced by a simple regexp.
+       (flymake-master-make-header-init, flymake-master-tex-init):
+       Correspondingly replace regexp-list with a regexp.  Fix regexp.
+
+2006-01-10  Simon Josefsson  <jas@extundo.com>
+
+       * mail/smtpmail.el (smtpmail-try-auth-methods): Add comment
+       describing AUTH PLAIN fix.
+
+2006-01-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * mail/emacsbug.el (report-emacs-bug-text-prompt): Delete var.
+       (report-emacs-bug): Don't record initial prompt text.
+       Instead, add text properties to prompting text.
+       (report-emacs-bug-hook): Delete prompting text.
+
+2006-01-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/flymake.el (flymake-find-buildfile): Remove invariant arg
+       `dirs'.  Adjust callers.
+
+2006-01-09  John Paul Wallington  <jpw@gnu.org>
+
+       * cus-edit.el (custom-comment) <defface>: Add TTY definitions.
+
+2006-01-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * reveal.el (reveal-open-new-overlays): New extracted fun.
+       (reveal-close-old-overlays): Idem.  Check overlays's liveness before
+       using them.  Simplify the code.
+       (reveal-post-command): Use them.  Fix up obsolete windows in
+       reveal-open-spots.
+
+       * progmodes/flymake.el: Use `require' rather than autoload for
+       XEmacs's overlays.
+       (flymake-get-common-file-prefix, flymake-build-relative-filename):
+       Delete.  Use file-relative-name instead.
+       (flymake-get-syntax-check-program-args, flymake-perl-init):
+       Simplify the resulting code.
+
+       * log-view.el (log-view-file-re, log-view-message-re): Add support
+       for DaRCS output.
+
+2006-01-09  Alex Schroeder  <alex@gnu.org>
+
+       * mail/rmail.el (rmail-reply-regexp): Also ignore mailing list
+       identifiers sometimes added in square brackets at the beginning of
+       subject lines.
+
+2006-01-07  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-edit.el (Custom-set, Custom-save): Doc fix.
+       (Custom-reset-current, Custom-reset-saved): Change question text.
+       (Custom-reset-standard): Likewise.
+       (custom-variable-reset-saved): Doc fix.
+
+2006-01-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * startup.el (init-file-user): Doc fix.
+
+2006-01-07  Alex Schroeder  <alex@gnu.org>
+
+       * mail/rmail.el (rmail-current-subject): New function.
+       (rmail-current-subject-regexp): New function.
+       (rmail-next-same-subject): Use it.
+
+       * mail/rmailsum.el (rmail-summary-by-topic):
+       Use rmail-current-subject and rmail-current-subject-regexp.
+       (rmail-summary-next-same-subject): Ditto.
+
+       * net/rcirc.el (rcirc-send-input): No longer check whether the
+       process is open, since not all commands need an open process.
+       (rcirc-send-string): Check whether the process is open before
+       sending anything.
+       (rcirc-ignore-list): New option.
+       (rcirc-ignore-list-automatic): New variable.
+       (rcirc-print): Take rcirc-ignore-list into account.
+       (rcirc-cmd-ignore): New command.
+       (rcirc-ignore-update-automatic): New function.
+       (rcirc-handler-PART, rcirc-handler-QUIT): Use it to maintain the
+       list if ignored nicks.
+       (rcirc-handler-NICK): Ditto, and also ignore the new nick.
+
+2006-01-06  David Reitter  <david.reitter@gmail.com>
+
+       * mail/emacsbug.el (report-emacs-bug): Let explanations correctly
+       reflect the address to which the report will be sent.
+
+2006-01-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * progmodes/ld-script.el (auto-mode-alist): Recognize linker
+       scripts whose file-name extensions are "\.x[bdsru]?[cn]?$".
+
+2006-01-01  Michael Ernst  <mernst@alum.mit.edu>  (tiny changes)
+
+       * textmodes/tildify.el: Fix typos (misspellings) in the commentary.
+
+       * emacs-lisp/find-func.el (find-definition-noselect): Fix typo in
+       the doc string: "functoin" => "function".
+       * ldefs-boot.el: Likewise.
+
+       * textmodes/bibtex.el (bibtex-validate-globally): Fix typo in a
+       message text: "Duplicat" => "Duplicate".
+
+2006-01-06  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
+
+       * files.el (basic-save-buffer-2): If backing-up failed, reset
+       buffer-backed-up to nil.
+
+2006-01-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gdb-script-skip-to-head)
+       (gdb-script-calculate-indentation): Indent for breakpoint command
+       lists also.
+
+2006-01-05  Bill Wohler  <wohler@newt.com>
+
+       * Makefile.in (compile-always): Add mh-autoloads dependency.
+       (bootstrap): Remove mh-autoloads dependency, as compile dependency
+       provides it.
+       (updates): Remove mh-autoloads dependency, since it probably has
+       already run recently (via recompile).
+
+2006-01-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/flyspell.el (flyspell-accept-buffer-local-defs): Add an
+       argument `force' to disable the flyspell-last-buffer optimization.
+       (flyspell-mode-on): Use it.
+
+       * progmodes/flymake.el (flymake-get-cleanup-function): Default to
+       flymake-simple-cleanup.
+       (flymake-allowed-file-name-masks): Use this new default.
+       All the functions are now called in the right buffer rather than
+       passing the buffer as argument.
+       (flymake-process-sentinel): Switch to buffer before calling cleanup.
+       (flymake-parse-err-lines): Remove redundant buffer arg.
+       (flymake-get-program-dir): Comment out unused function.
+       (flymake-start-syntax-check, flymake-start-syntax-check-process):
+       Remove redundant buffer argument.
+       (flymake-get-real-file-name, flymake-simple-java-cleanup)
+       (flymake-simple-cleanup, flymake-master-cleanup): Remove buffer arg.
+
+2006-01-05  Richard M. Stallman  <rms@gnu.org>
+
+       * info.el (Info-find-node): Don't record previous node if have none.
+       (info): Go to directory only if history is empty.
+
+       * simple.el (mark): Doc fix.
+
+2006-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-ae-parameter): Don't coerce data if it is
+       already of desired type.
+       (mac-ae-list): Coerce parameter to "list" type.
+       (mac-dispatch-apple-event): Replace cadr part of event with a
+       dummy position so that event-start returns it.
+
+2006-01-05  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-end-of-subtree): New function.
+       (org-cycle, org-subtree-end-visible-p, org-scan-tags):
+       Use `org-end-of-subtree'.
+       (org-agenda, org-agenda-convert-date): Protect calls to
+       `fit-window-to-buffer'.
+       (org-tags-view): Force matching of sublevels when doing a
+       todo-only search.  Define the correct redo command, including the
+       arguments.
+       (org-agenda-redo): Display message.
+       (org-check-for-org-mode): New function.
+       (org-agenda-type): New variable.
+       (org-timeline, org-agenda-list, org-todo-list, org-tags-view):
+       Set `org-agenda-type'.
+       (org-agenda-check-type): New function.
+       (org-agenda-goto-today, org-agenda-later, org-agenda-earlier)
+       (org-agenda-week-view, org-agenda-day-view)
+       (org-agenda-next-date-line, org-agenda-previous-date-line)
+       (org-agenda-log-mode, org-agenda-toggle-diary)
+       (org-agenda-toggle-time-grid, org-agenda-date-later)
+       (org-agenda-date-prompt, org-agenda-diary-entry)
+       (org-agenda-execute-calendar-command, org-agenda-goto-calendar)
+       (org-agenda-convert-date, org-agenda-menu):
+       Use `org-agenda-check-type'.
+       (org-make-overlay, org-delete-overlay)
+       (org-detatch-overlay, org-move-overlay, org-overlay-put):
+       New compatibility functions.
+       (org-calendar-select-mouse): New command.
+
+2006-01-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (Custom-reset-current, Custom-reset-saved)
+       (Custom-reset-standard): Fix y-or-n-p messages.
+       (custom-link): New face for links.
+       (custom-buffer-create-internal, custom-manual): Use it.
+       (custom-face-save): Push to theme-face before setting face spec.
+
+       * wid-edit.el (widget-default-mouse-face-get): New function.
+       (widget-specify-button): Handle mouse-face like button-face.
+
+       * custom.el (load-theme): Clear old theme settings if reloading.
+
+2006-01-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (custom-buffer-create-internal): Move whole buffer
+       "Erase Customization" button back to same position it occupies in
+       the individual State menus.
+
+2006-01-04  Kim F. Storm  <storm@cua.dk>
+
+       * wid-edit.el (key-sequence): Rework widget to read key binding
+       using `kbd' syntax.  Use C-q to insert literal key, event, or code.
+       (widget-key-sequence-default-value): Default value for empty sequence.
+       (widget-key-sequence-map): New map for reading key binding.  Bind C-q.
+       (widget-key-sequence-read-event): New command for C-q.
+       (widget-key-sequence-validate, widget-key-sequence-value-to-internal)
+       (widget-key-sequence-value-to-external): New functions.
+
+2006-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/flymake.el (flymake-create-temp-with-folder-structure):
+       Use expand-file-name.
+       (flymake-delete-temp-directory): Use expand-file-name,
+       file-name-directory, and directory-file-name.
+       (flymake-strrchr): Delete.
+       (flymake-start-syntax-check): Don't pass the redundant buffer argument
+       to the init-f function.
+       (flymake-save-buffer-in-file, flymake-init-create-temp-buffer-copy)
+       (flymake-init-find-buildfile-dir)
+       (flymake-init-create-temp-source-and-master-buffer-copy)
+       (flymake-simple-make-init-impl, flymake-simple-make-init)
+       (flymake-master-make-init, flymake-master-make-header-init)
+       (flymake-simple-make-java-init, flymake-simple-ant-java-init)
+       (flymake-perl-init, flymake-simple-tex-init, flymake-master-tex-init)
+       (flymake-xml-init): Remove corresponding redundant buffer argument.
+       (flymake-allowed-file-name-masks): Remove last elems that are equal to
+       the default anyway.  Clean up regexps.
+
+       * progmodes/flymake.el (flymake-temp-source-file-name)
+       (flymake-master-file-name, flymake-temp-master-file-name)
+       (flymake-base-dir): New buffer-local vars.
+       (flymake-buffer-data, flymake-get-buffer-value)
+       (flymake-set-buffer-value): Replace those hash-tables by the new
+       buffer-local vars.  Update callers.
+
+       * progmodes/flymake.el (flymake-check-start-time)
+       (flymake-check-was-interrupted, flymake-err-info, flymake-is-running)
+       (flymake-last-change-time, flymake-new-err-info, flymake-timer):
+       Move definition, so we can remove redundant earlier declaration.
+       (flymake-replace-regexp-in-string, flymake-split-string)
+       (flymake-get-temp-dir): Use defalias.
+       (flymake-popup-menu): Remove `pos' argument.  Use posn-at-point.
+       (flymake-xemacs-window-edges): Remove unused function.
+       (flymake-get-point-pixel-pos): Move.
+       (flymake-pid-to-names, flymake-reg-names)
+       (flymake-get-source-buffer-name, flymake-unreg-names): Remove.
+       Replace by a simple list flymake-processes and by process-buffer.
+       Update callers.  Other than simplify the code, it uses buffers rather
+       than buffer-names so it doesn't get confused by uniquify.
+       (flymake-buffer-data): The global value should just be nil.
+
+       * emacs-lisp/bytecomp.el (byte-compile-file-form-defalias):
+       Optimize the body of a defalias like any other code.
+
+       * font-lock.el (font-lock-fontify-buffer, font-lock-fontify-region):
+       Make sure we've setup font-lock's vars.  It may influence which
+       function we then call.
+       (font-lock-default-fontify-buffer): Don't bother calling set-defaults
+       here since it's too late anyway.
+
+2006-01-03  Romain Francoise  <romain@orebokech.com>
+
+       * startup.el (fancy-splash-tail, normal-splash-screen):
+       Update copyright year.
+
+2006-01-02  J.D. Smith  <jdsmith@as.arizona.edu>
+
+       * mouse.el (mouse-drag-track): Rename, from
+       `mouse-drag-region-1'.  Includes optional argument required to
+       enable post-drag event processing (e.g. delete region keys).
+       Can be used without this argument to track a mouse region and operate
+       on it as soon as the drag completes.
+       (mouse-drag-region): Use `mouse-drag-track'.
+
+2006-01-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (custom-guess-name-alist, custom-guess-doc-alist):
+       Move to `custom-buffer' group.
+
+       * cus-theme.el: Rewrite the Custom New Theme Mode interface.
+       (custom-new-theme-mode-map, custom-theme-insert-variable-marker)
+       (custom-theme-insert-face-marker, custom-theme-variable-menu)
+       (custom-theme-face-menu): New variables.
+       (custom-theme-add-variable, custom-theme-variable-action)
+       (custom-variable-reset-theme, custom-theme-delete-variable)
+       (custom-face-reset-theme, custom-theme-face-action)
+       (custom-theme-delete-face, custom-theme-merge-theme)
+       (custom-theme-add-face, custom-theme-visit-theme): New functions.
+
+2006-01-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el: Move Custom Themes commentary to start of theme code.
+       (custom-known-themes): Rename `standard' theme to `changed'.
+       (custom-push-theme): Caller no longer specifies what theme to use
+       when doing `reset'---the setting is simply removed from the theme.
+       Delete MODE from `theme-value' and `theme-settings' properties.
+       (custom-declare-theme): Ignore &rest args since we don't use them.
+
+       (custom-loaded-themes): Delete variable.
+       (custom-theme-load-themes, custom-theme-loaded-p)
+       (custom-theme-value): Delete functions.
+
+       (custom-declare-theme): Signal error on invalid theme names.
+       (provide-theme): custom-loaded-themes was deleted.
+       (load-theme): Load the file unconditionally.
+       (enable-theme): Call `load-theme' if theme is undefined.
+       (custom-enabled-themes): Only update value for successful loads.
+       (disable-theme): Complete from enabled themes when interactive.
+       (custom-variable-theme-value): Calculate theme value directly.
+
+       (custom-theme-reset-variables, custom-reset-variables): Mark as
+       XEmacs compatibility functions.  We don't actually use these.
+
+       * cus-edit.el (custom-variable-state-set):
+       Use custom-variable-theme-value instead of custom-theme-value.
+       (custom-face-state-set): Rename `standard' theme to `changed'.
+       (custom-save-variables, custom-save-faces): Delete unneeded
+       references to custom-reset-variables.
+       (custom-save-resets): Delete function.
+       (custom-save-variables, custom-save-faces): MODE argument deleted.
+       (custom-save-variables, custom-save-faces): Ignore theme values.
+
+       * cus-face.el (custom-theme-reset-faces): Mark as XEmacs
+       compatibility function.
+
+2006-01-01  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-edit.el (Custom-set, Custom-save): Ask for confirmation.
+       (Custom-reset-current, Custom-reset-saved): Likewise.
+       (Custom-reset-standard): Show message if aborted.
+       (custom-mode): Doc fix, describing those commands.
+
+       * mouse.el (mouse-drag-region-1): When following link via mouse-2,
+       put on event-kind property.
+
+2005-12-31  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (provide-theme): Ban `user' theme name.
+       (custom-enabling-themes): New variable.
+       (enable-theme): Don't enable user if custom-enabling-themes is t.
+       (custom-enabled-themes): Make it a defcustom.
+       (custom-theme-recalc-face): No-op if face is undefined.
+
+       * cus-edit.el (custom-button-mouse): New variable.
+       (custom-button-mouse): New face.
+       (custom-raised-buttons, custom-mode): Use it.
+
+       * cus-theme.el (custom-new-theme-mode): Use custom-button-mouse.
+
+2005-12-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * progmodes/gud.el (gud-display-line): Support hl-line in the
+       source buffer.
+
+2005-12-31  Lennart Borgman  <lennart.borgman.073@student.lu.se>  (tiny change)
+
+       * mouse.el (mouse-drag-window-above): Verify that the found window
+       overlaps with the given window in the horizontal dimension.
+
+2005-12-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (cvs-update): New target.
+
+       * makefile.w32-in (cvs-update): Ditto.
+
+2005-12-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-theme.el (custom-new-theme-mode): Use cus-edit faces.
+       (custom-new-theme-mode-map): New variable.
+
+2005-12-30  Richard M. Stallman  <rms@gnu.org>
+
+       * custom.el (custom-load-themes): Function deleted.
+
+       * cus-edit.el (custom-save-loaded-themes): Function deleted.
+       (custom-save-variables): Don't delete or add custom-load-themes call.
+
+2005-12-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * cus-start.el: Add `visible-cursor'.
+
+       * progmodes/flymake.el (flymake-copy-buffer-to-temp-buffer): Simplify.
+       (flymake-parse-output-and-residual): Remove `source-buffer' argument.
+       (flymake-process-filter): Switch to buffer before calling it instead.
+       (flymake-post-syntax-check, flymake-highlight-err-lines)
+       (flymake-delete-own-overlays, flymake-parse-err-lines)
+       (flymake-start-syntax-check, flymake-start-syntax-check-process)
+       (flymake-count-lines, flymake-parse-residual):
+       Remove constant buffer argument.
+       (flymake-start-syntax-check-for-current-buffer): Remove.
+       Update callers to use flymake-start-syntax-check instead.
+       (flymake-display-err-menu-for-current-line):
+       Remove unused var `mouse-pos'.
+       (flymake-restore-formatting): Comment out unused function.
+       (flymake-report-status, flymake-report-fatal-status): Remove buffer
+       argument, use current-buffer instead.  Update callers.
+
+2005-12-30  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-mode): Make completion-ignore-case
+       buffer-local because choose-completion-delete-max-match requires
+       that we set completion-ignore-case (i.e., binding via let is not
+       sufficient).
+       (bibtex-complete): Always set completion-ignore-case and
+       choose-completion-string-functions.  The latter is needed because
+       choose-completion-string-functions keeps its value if we quit the
+       *Completions* buffer without requesting a completion.
+
+2005-12-30  Andreas Schwab  <schwab@suse.de>
+
+       * progmodes/cc-defs.el: Ignore errors from font-lock-compile-keywords.
+
+2005-12-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * jit-lock.el (jit-lock-chunk-size): Doc fix.
+
+2005-12-30  Juri Linkov  <juri@jurta.org>
+
+       * locate.el (locate-fcodes-file, locate-header-face)
+       * progmodes/delphi.el (delphi-other-face)
+       * progmodes/glasses.el (glasses-face): Add tag "None" to const nil.
+
+       * paren.el (show-paren-match, show-paren-mismatch): Use existing
+       group `paren-showing-faces'.
+
+       * net/goto-addr.el (goto-address-highlight-keymap): Fix docstring.
+       (goto-address): Fix docstring.
+
+       * net/webjump.el (webjump-sample-sites): Update URLs.
+
+       * textmodes/fill.el (fill-single-word-nobreak-p): Use `sentence-end'.
+
+       * subr.el (cancel-change-group): Add listp around pending-undo-list.
+
+2005-12-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-compile-keywords): Signal an error when
+       font-lock-set-defaults hasn't been called.
+
+2005-12-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * subr.el (noreturn, 1value): Doc fixes.
+
+2005-12-29  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-text-in-field-bounds): Handle case
+       that assoc-string returns nil.
+
+2005-12-29  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-entry-type-whitespace)
+       (bibtex-entry-type-str, bibtex-empty-field-re)
+       (bibtex-search-backward-string, bibtex-preamble-prefix)
+       (bibtex-search-entry, bibtex-enclosing-entry-maybe-empty-head): Remove.
+       (bibtex-any-valid-entry-type): New variable.
+       (bibtex-parse-field-name): Simplify.
+       (bibtex-parse-string, bibtex-search-forward-string): New arg empty-key.
+       (bibtex-preamble-prefix): Include left delimiter.
+       (bibtex-search-forward-field, bibtex-search-backward-field):
+       Allow unbounded search past entry boundaries (required by bibtex-pop).
+       (bibtex-text-in-field-bounds): Use push.
+       (bibtex-text-in-field): Do not use bibtex-narrow-to-entry.
+       (bibtex-parse-preamble, bibtex-valid-entry)
+       (bibtex-beginning-first-field): New functions.
+       (bibtex-skip-to-valid-entry): Use bibtex-valid-entry.  Fix regexp.
+       (bibtex-map-entries): Fix docstring.
+       (bibtex-flash-head): New arg prompt.  Simplify.
+       (bibtex-enclosing-field): Include code of bibtex-inside-field.
+       (bibtex-insert-kill): Simplify.  Always insert text past the
+       current field or entry.
+       (bibtex-format-entry): Use bibtex-parse-field.
+       (bibtex-pop): Use bibtex-beginning-of-entry and
+       bibtex-end-of-entry to initiate the search.  Insert empty field if
+       we found ourselves.
+       (bibtex-print-help-message): New args field and comma.
+       Handle entry keys.
+       (bibtex-make-field): Use bibtex-beginning-of-entry.
+       (bibtex-end-of-entry): Use bibtex-valid-entry.  Recognize any
+       invalid entry.
+       (bibtex-validate): Use bibtex-valid-entry and bibtex-parse-string.
+       Handle preambles.  Simplify code for thorough test.
+       (bibtex-next-field, bibtex-find-text, bibtex-find-text-internal):
+       New arg comma.  Handle entry heads.
+       (bibtex-remove-OPT-or-ALT, bibtex-remove-delimiters)
+       (bibtex-kill-field, bibtex-copy-field-as-kil, bibtex-empty-field):
+       New arg comma.
+       (bibtex-kill-entry): Use bibtex-any-entry-maybe-empty-head.
+       (bibtex-fill-field): Simplify.
+       (bibtex-fill-entry): Use bibtex-beginning-first-field and
+       bibtex-parse-field.
+       (bibtex-convert-alien): Do not wait before calling bibtex-validate.
+       (bibtex-complete): Use bibtex-parse-preamble.
+
+2005-12-29  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-tooltip-print, gdb-tooltip-print-1):
+       Display name of expression instead of convenience variable.
+       (gdb-post-prompt): Only call gdb-get-changed-registers if needed.
+
+       * progmodes/gud.el (gud-tooltip-dereference): Rename from
+       toggle-gud-tooltip-dereference.
+       (gud-tooltip-print-command): Move concatenation of "*" to expr to...
+       (gud-tooltip-tips): ...here when dereferencing.
+
+2005-12-28  Bill Wohler  <wohler@newt.com>
+
+       * simple.el (mh-e-user-agent): Move to mh-e/mh-comp.el and autoload.
+
+2005-12-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc.el (vc-annotate-display): Replace optional arg `color-map' with
+       compulsory arg `ratio'.  Inline body of vc-annotate-time-span.
+       (vc-annotate-display-autoscale): Adjust call.
+       (vc-annotate-display-default): Adjust call.  Make arg compulsory.
+       Fix interactive spec.
+       (vc-annotate-time-span): Remove.
+       (vc-annotate-oldest-in-map): Rename from vc-annotate-car-last-cons.
+       (vc-annotate-mode-menu, vc-annotate-display-autoscale)
+       (vc-annotate-display-select): Use new name.
+
+       * vc.el (vc-annotate-mode-map): Remove obsolete binding.
+       (vc-annotate-mode-menu): Remove left-over redundant declaration.
+       Correct the construction of span entries.  Simplify.
+       (vc-annotate-display-select): Fix the nil case.
+       (vc-annotate): Remove obsolete (and now broken) code.
+       (vc-annotate-extract-revision-at-line): Remove obsolete code.
+       (vc-annotate-time-span): Remove unused arg `quantize'.  Simplify.
+
+2005-12-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * subr.el (lazy-completion-table): Correct typo in docstring.
+
+       * startup.el (command-line): Use `custom-reevaluate-setting' for
+       `send-mail-function'.
+
+       * mail/sendmail.el (send-mail-function): Autoload the standard-value.
+
+2005-12-05  Ralf Angeli  <angeli@iwi.uni-sb.de>
+
+       * mail/smtpmail.el (smtpmail-try-auth-methods):
+       Send credentials together with "AUTH PLAIN" command.
+
+2005-12-27  Richard M. Stallman  <rms@gnu.org>
+
+       * mouse.el (mouse-drag-region-1): When remapping mouse-1 to
+       mouse-2, go back to previously selected window, so it's selected
+       when mouse-2 command runs.
+
+2005-12-27  Juri Linkov  <juri@jurta.org>
+
+       * descr-text.el (describe-text-sexp): Use square brackets for
+       button [Show] to distinguish it from the property value `show'.
+       (describe-property-list): Use `insert-text-button' with
+       `help-face' type instead of putting face in quotes, because button
+       is not created automatically for a list of faces.
+       (describe-text-properties-1): Put button-type value in quotes to
+       distinguish from plain text "button".
+       (describe-char): Display code point values in hex.  Don't use
+       `symbol-name' for `current-input-method' because it is a string.
+       Use `insert-text-button' with `help-face' type instead of putting
+       hardcoded face in quotes, because button is not created automatically.
+
+2005-12-27  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/glasses.el (glasses-face): More specific custom type.
+
+       * files.el (set-visited-file-name): Doc fix.
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       Use local var buffer-scan-pos to advance scan for next misspelling.
+       Advance it only after we find the misspelling.
+
+2005-12-27  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       New criteria for finding the misspelling in the buffer.
+
+2005-12-27  Nick Roberts  <nickrob@snap.net.nz>
+
+       * help-mode.el (help-insert-string): Set help-xref-stack-item
+       rather than call help-setup-xref.
+
+       * descr-text.el (describe-char): Revert previous changes for
+       optional buffer argument.
+
+2005-12-27  Juri Linkov  <juri@jurta.org>
+
+       * help-mode.el (help-insert-string): New function.  Save buffer
+       contents in cases where it is impossible to recompute the old contents.
+
+       * descr-text.el (describe-char): Set help-xref-stack-item
+       explicitly after buffer has been generated.
+
+2005-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * cus-start.el (all): Add x-gtk-show-hidden-files.
+
+2005-12-26  Richard M. Stallman  <rms@gnu.org>
+
+       * replace.el (perform-replace): Calculate match-again
+       before skipping read-only matches.
+
+       * paren.el (paren-showing-faces): New group.
+       (show-paren-match, show-paren-mismatch): Move to that group.
+
+       * button.el (button): Put into group `basic-faces'.
+
+       * progmodes/make-mode.el: Remove faces from group `faces'.
+
+       * apropos.el (apropos, apropos-value): Doc fix.
+       (apropos-documentation): Doc fix.
+
+2005-12-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * subr.el (lazy-completion-table): Remove argument `args'.
+
+       * textmodes/bibtex.el (bibtex-strings, bibtex-reference-keys):
+       Don't use the `args' argument of lazy-completion-table.
+
+2005-12-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * descr-text.el (describe-char): Add optional argument for buffer.
+       Set buffer appropriately.  Call help-setup-xref.
+       Suggested by Stefan Monnier.
+
+2005-12-26  Juri Linkov  <juri@jurta.org>
+
+       * descr-text.el: Require `help-fns' at runtime.  Don't require
+       `button' for byte compilation.
+       (describe-text-widget): Add `help-echo' for first button.
+       Use `help-info' for second.
+       (describe-property-list): Use `help-argument-name' instead of `italic'.
+       (describe-text-category): Add prompt to interactive spec.
+       Call `help-setup-xref'.
+       (describe-char): Use `help-character-set'.  Add `help-echo' for
+       code point.  Use `help-input-method'.  Remove superfluous insert.
+
+2005-12-25  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/cc-defs.el (c-emacs-features): Do parse-partial-sexp
+       at point, in case of narrowing.
+
+       * progmodes/delphi.el (delphi-other-face): Allow nil in type.
+
+       * locate.el (locate-header-face): Allow nil in type.
+
+       * progmodes/cpp.el (cpp-face-none-list): Use cpp-face instead of face.
+
+2005-12-25  Romain Francoise  <romain@orebokech.com>
+
+       * battery.el (battery-linux-proc-acpi): Also try
+       `/proc/acpi/thermal_zone/THM0/temperature'.
+
+2005-12-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (custom-push-theme): Fix docstring.
+
+       * cus-edit.el (custom-variable-set, custom-variable-save)
+       (custom-variable-save): Custom-quote widget values.
+       (customize-save-variable): Fix custom-push-theme call.
+
+2005-12-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32-fns.el (w32-batch-update-autoloads): New function.
+
+       * makefile.w32-in (autoloads, $(lisp)/mh-e/mh-loaddefs.el):
+       Use w32-batch-update-autoloads, and don't setq generated-autoload-file
+       from the command line.
+
+2005-12-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (custom-push-theme): Clarify docstring.  VALUE nil for
+       reset means to remove setting from theme entirely.  Don't keep
+       expanding theme-settings list; delete old entries if necessary.
+
+       * cus-edit.el (custom-buffer-create-internal): Move "Erase
+       customization" button one line up.
+       (custom-themed): New face.
+       (custom-magic-alist): New value, THEMED, for theme settings.
+       (custom-variable-state-set, custom-face-state-set):
+       Check theme-value instead of saved-value.
+       (custom-variable-reset-standard, custom-face-reset-standard):
+       Remove theme setting entirely.  Recalculate new values.
+       (custom-variable-set, custom-variable-set)
+       (custom-variable-reset-saved, custom-variable-reset-backup)
+       (custom-face-set, custom-face-reset-saved): Update `user' theme.
+       (custom-variable-save): Fix typos.
+
+2005-12-23  Juri Linkov  <juri@jurta.org>
+
+       * emacs-lisp/edebug.el (edebug-all-defs, edebug-all-forms):
+       Add autoload cookies.
+       (edebug-outside-d-c-i-n-s-w): New variable.
+       (edebug-display, edebug-outside-excursion): Use it to save the
+       original value of default-cursor-in-non-selected-windows.
+       Set default-cursor-in-non-selected-windows to t while Edebug
+       is active.
+       (edebug-mode, edebug-eval-mode): Doc fix.
+
+       * mouse.el (mouse-choose-completion): Replace `buffer-substring'
+       with `buffer-substring-no-properties' to remove common substring
+       highlighting.
+
+       * info.el (info-other-window, info): Rename function argument
+       `file' to `file-or-node'.
+       (Info-complete-menu-item): Use local variable `complete-nodes' to
+       keep the global value of `Info-complete-nodes' unchanged for
+       subsequent completions.
+       (info-tool-bar-map): Put `Info-index' icon just before `Info-search'.
+
+       * simple.el (get-next-valid-buffer, last-buffer)
+       (next-error-buffer-p, next-error-find-buffer)
+       (minibuffer-history-sexp-flag): Doc fix.
+
+       * savehist.el (savehist-mode-hook): Add `:group'.
+
+       * log-view.el: Call autoload for vc-find-version.
+       (log-view-current-file): Adjust subgroup numbers.
+       (log-view-current-tag): Add `length'.
+
+2005-12-23  Richard M. Stallman  <rms@gnu.org>
+
+       * vc.el (vc-annotate-car-last-cons): Defn moved up.
+
+2005-12-23  Juri Linkov  <juri@jurta.org>
+
+       * hi-lock.el (hi-lock-archaic-interface-message-used)
+       (hi-lock-archaic-interface-deduce, hi-lock-mode): Doc fix.
+       (hi-lock-mode): Display "Hi" in the mode line only when
+       hi-lock-interactive-patterns or hi-lock-file-patterns is non-nil.
+       (hi-lock-write-interactive-patterns):
+       Use hi-lock-file-patterns-prefix instead of hard-coded "Hi-lock".
+       (hi-lock-set-pattern, hi-lock-set-file-patterns)
+       (hi-lock-font-lock-hook): Set 3rd arg `how' of
+       font-lock-add-keywords to t.
+
+2005-12-23  David Koppelman  <koppel@ece.lsu.edu>
+
+       * hi-lock.el (hi-lock-highlight-range): New variable.
+       (hi-lock-mode, hi-lock-unface-buffer): Call font-lock-fontify-buffer
+       only if font-lock-fontified is non-nil.  Remove overlays.
+       (hi-lock-set-pattern): Call font-lock-fontify-buffer if
+       font-lock-fontified is non-nil, otherwise use overlays (instead of
+       text properties).
+       (hi-lock-string-serialize-hash, hi-lock-string-serialize-serial):
+       New variables.
+       (hi-lock-string-serialize): New function.
+
+2005-12-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * menu-bar.el (menu-find-file-existing): New function.
+       (menu-bar-file-menu): Use menu-find-file-existing for Open.
+
+       * tool-bar.el (tool-bar-setup): Open changed to menu-find-file-existing.
+
+2005-12-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc.el: Remove unnecessary leading * in docstrings.
+       (vc-annotate-mode-map): Move initialization into declaration.
+       (vc-static-header-alist): Nitpick on the regexp.
+       (vc-default-init-version): New fun.
+       (vc-register): Use it.
+       (vc-insert-headers): Use dolist.
+       (vc-annotate-get-backend): Remove unused function.
+       (vc-annotate-add-menu): Remove.  Build the menu directly at toplevel.
+       (vc-annotate-mode): Remove corresponding call.
+       (vc-annotate-car-last-cons): Simplify.
+       (vc-annotate-buffers): Remove var.
+       (vc-annotate-backend): Make it buffer-local.
+       (vc-annotate): Move the interaction to the interactive spec.
+       Add a `buf' argument.
+       (vc-annotate-warp-version): Use this new `buf' argument to avoid
+       killing&creating a vc-annotate buffer, which is very disruptive when
+       the buffers are shown in dedicated frames.
+
+2005-12-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * descr-text.el: Add FSF as maintainer.
+       (describe-text-mode, describe-text-mode-map)
+       (describe-text-mode-hook, describe-text-done): Delete.  Use normal
+       help-mode.
+       (describe-text-widget, describe-text-sexp)
+       (describe-property-list, describe-text-category)
+       (describe-text-properties, describe-text-properties-1)
+       (describe-char): Use help buttons instead of widgets.
+       (describe-char-unicodedata-file): Make URL link in doc string.
+
+2005-12-22  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-edit.el (custom-variable-prompt): Say "variable" in prompt.
+       (custom-buffer-create-internal): Reword the top-of-buffer help intro.
+       Don't include buttons that write a file when there's no file.
+       (custom-variable-menu, custom-face-menu, custom-group-menu):
+       Don't include commands that write a file when there's no file.
+       (customize-browse): Reword the top-of-buffer help intro.
+       (custom-buffer-create-internal): Fix previous change.
+       (customize-changed-options-previous-release): Prev release is 21.1.
+       (customize-changed-options): Doc fix.
+       (customize-changed): New alias.
+       (custom-reset-menu, custom-magic-alist, Custom-mode-menu):
+       Say "standard values".
+       (Custom-reset-standard): Doc fix.
+       (custom-face-reset-standard): Doc fix.
+
+2005-12-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-default-fontify-buffer): Try and set-defaults
+       even if font-lock-mode is non-nil since it may be t without having
+       turned on font-lock-mode-internal.
+       (font-lock-choose-keywords): Minor optimization.
+       (font-lock-add-keywords, font-lock-remove-keywords)
+       (font-lock-set-defaults): Don't call make-local-variable on a variable
+       that we know to already be local.
+
+2005-12-22  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * emacs-lisp/lisp.el (lisp-complete-symbol): Don't print progress
+       messages if in the minibuffer.
+
+2005-12-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/flyspell.el (flyspell-check-word-p): Don't quote - in a RE.
+       (tex-mode-flyspell-verify, flyspell-get-word)
+       (flyspell-external-point-words): Don't use point-min/max uselessly.
+
+       * emacs-lisp/lisp.el (lisp-complete-symbol): Mostly undo the change
+       by Kevin Rodgers.  Instead, just hide the completions buffer if we
+       don't need to show it.
+
+2005-12-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * wid-edit.el (file, directory): Doc fixes for the `define-widget's.
+
+2005-12-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/lisp.el (lisp-complete-symbol): Don't call
+       delete-windows-on with an inexistent buffer.
+
+2005-12-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display):
+       Delete defcustom variable :tag names.
+
+2005-12-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * log-view.el (log-view-file-re, log-view-message-re): Use shy groups.
+       (log-view-font-lock-keywords): Ajust subgroup numbers.
+       (log-view-current-tag): Don't hard code the number of subgroups.
+
+2005-12-20  Juri Linkov  <juri@jurta.org>
+
+       * tooltip.el (tooltip): Move defgroup before define-minor-mode.
+       (tooltip-x-offset, tooltip-y-offset): Doc fix.
+
+       * menu-bar.el (menu-bar-menu-frame-live-and-visible-p)
+       (menu-bar-non-minibuffer-window-p): Instead of checking
+       display-multi-frame-p, use selected-frame when menu-updating-frame
+       is nil.
+
+2005-12-20  Stuart Herring  <herring@lanl.gov>  (tiny change)
+
+       * align.el (align-rules-list): Use [ \t] instead of \s-
+       for column separators in text mode.
+
+2005-12-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * help-mode.el (help-customize-variable, help-customize-face):
+       Don't pop help-xref-stack as help-follow no longer pushes
+       anything on to it.
+
+2005-12-20  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-custom-commands): New option.
+       (org-agenda): Offer custom commands on splash screen.
+       (org-make-tags-matcher): Parser for Boolean logic added.
+       (org-agenda-set-tags): New command.
+       (org-agenda-menu, org-agenda-mode-map): Add `org-agenda-set-tags'.
+       (org-set-tags): Efficiency improvements.
+       (org-auto-align-tags): New option.
+       (org-todo, org-demote, org-promote): Realign tags.
+       (org-tags-completion-function): Use also "&" and "|" as separators.
+       (org-org-menu): Agenda commands simplified.
+
+2005-12-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (customize-apropos, customize-apropos-options):
+       Docstring changes.
+
+       * font-lock.el (font-lock): Add tags to the links in the defgroup.
+
+2005-12-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-mode): Wrap while widened.
+       (longlines-decode-region, longlines-encode-region): Compute max
+       just once.
+
+2005-12-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * cus-edit.el (mac): New group.
+
+       * cus-start.el (all): Add user options in macterm.c.  Add test for
+       Mac-related built-ins.  Fix test for GTK-related built-ins.
+
+       * term/mac-win.el (mac-handle-language-change)
+       (mac-ae-open-documents, mac-ae-get-url, mac-services-open-file)
+       (mac-services-open-selection, mac-services-mail-selection)
+       (mac-services-mail-to, mac-services-insert-text)
+       (mac-dispatch-apple-event): Add docstrings.
+       (x-get-selection, mac-select-convert-to-string): Select coding
+       system from `utf-16be' and `utf-16le' using `byteorder'.
+
+2005-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * subr.el (lazy-completion-table): Don't be fooled if the var holds
+       a "list" (lambda ...) rather than a real completion list.
+
+       * emacs-lisp/cl-extra.el (cl-macroexpand-all): Fix code-walk for
+       lexical-let when encountering ((lambda (...) ...) ...).
+
+2005-12-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/sh-script.el (sh-mode):
+       * language/ethio-util.el (ethio-fidel-to-sera-mail-or-marker):
+       * textmodes/picture.el (picture-mode): Update docstrings.
+
+2005-12-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (autoloads, custom-deps): Warn that parts of
+       commands enclosed in $(ARGQUOTE)s should not be split between two
+       lines, as that will break with GNU Make >3.80, when sh.exe is used
+       and arg quoting is with '..'.
+       (autoloads): Don't break the quoted --eval expression between
+       several lines.
+
+2005-12-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/edebug.el (edebug-safe-prin1-to-string):
+       Capture error from printing circular structures.
+
+2005-12-17  Martin Rudalics  <rudalics@gmx.at>
+
+       * wid-edit.el (widget-checkbox-action): Clear undo info.
+
+2005-12-16  Bill Wohler  <wohler@newt.com>
+
+       * menu-bar.el (kill-this-buffer): Set a good example by using menu
+       bar, not menubar in comment.
+
+2005-12-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/cc-engine.el (c-after-change-check-<>-operators):
+       After-change-functions should not clobber the match data.
+
+2005-12-16  Juri Linkov  <juri@jurta.org>
+
+       * simple.el (choose-completion): Use `buffer-substring-no-properties'
+       instead of `buffer-substring'.
+       (completion-common-substring): Doc fix.
+       (completion-setup-function): Use minibuffer-completion-contents
+       instead of minibuffer-contents.  Don't set common-string-length
+       initially.  Remove special handling of partial-completion-mode.
+       Move computation of completion-base-size into one cond.
+       Call completion-base-size-function in mainbuf.  In computation of
+       completion-base-size for file name completion don't move point to
+       the end of the minibuffer.  Move computation of common-string-length
+       into one cond.  Start putting faces only when common-string-length>=0.
+       Add condition to put completions-common-part when
+       common-string-length>0.
+
+       * complete.el (PC-do-completion): Remove `(equal (point) beg)' to
+       place point at the first different character in the minibuffer
+       even if this position is at the beginning of the minibuffer.
+
+       * info.el (Info-read-node-name-1): In completion-base-size-function's
+       lambda return 1 if common-substring or minibuffer-completion-contents
+       starts with (, and 0 otherwise.
+
+       * emacs-lisp/crm.el (crm-minibuffer-completion-help):
+       Use `crm-current-element' for second arg of `display-completion-list'.
+
+2005-12-16  Klaus Zeitler  <kzeitler@lucent.com>
+
+       * files.el (set-auto-mode): Look for an interpreter specified on
+       the first line also if search for mode specification succeeded,
+       but the mode is not known.
+
+2005-12-16  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-tags-match-list-sublevels): New option.
+       (org-open-at-point): Implement tag searches as links.
+       (org-fit-agenda-window, org-get-buffer-tags, org-get-tags)
+       (org-make-tags-matcher, org-scan-tags, org-activate-tags): New funs.
+       (org-tags-sparse-tree, org-tags-view, org-set-tags)
+       (org-agenda-dispatch): New commands.
+       (org-use-tag-inheritance, org-tags-column): New options.
+       (org-tab-follows-link, org-return-follows-link): New options.
+       (org-tags): New customize group.
+       (org-start-icalendar-file): Get local time zone.
+       (org-tags-completion-function): New function.
+       (org-set-font-lock-defaults): Make sure links will also be
+       highlighted inside headlines.
+
+2005-12-16  Mark Plaksin  <happy@usg.edu>  (tiny change)
+
+       * term.el (term-emulate-terminal):
+       Let term-handle-ansi-terminal-messages override what Bash says about
+       its current directory.
+
+2005-12-16  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
+
+       * bindings.el (last-buffer): Move to simple.el.
+       * simple.el (last-buffer): Move here.
+       (get-next-valid-buffer): New function.
+       (next-buffer): Use frame-local buffer list, maintain buried buffer list.
+       (prev-buffer): Ditto.  Rename to `previous-buffer'.
+
+       * menu-bar.el (menu-bar-update-buffers): Update uses of `prev-buffer'.
+       * bindings.el (global-map): Ditto.
+
+2005-12-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el: Introductory comment change.
+       (custom-magic-alist): Change message string for the `rogue' state.
+
+2005-12-15  Richard M. Stallman  <rms@gnu.org>
+
+       * tooltip.el: Delete defcustom variable :tag names.
+
+       * complete.el (partial-completion-mode): Doc fix.
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       Use save-excursion to ensure we don't move backward in the
+       search loop, not even one character.
+       (flyspell-delete-all-overlays): Use remove-overlays directly.
+
+       * textmodes/ispell.el (ispell-current-personal-dictionary): New var.
+       (ispell-start-process): Set that variable.
+       Clear ispell-buffer-local-name.
+       (ispell-internal-change-dictionary):
+       Set ispell-current-dictionary after killing process.
+       (ispell-buffer-local-dict):
+       Don't set spell-personal-dictionary after killing process.
+       (ispell-buffer-local-words): Don't clear out ispell-buffer-local-name.
+       (ispell-tex-skip-alists, ispell-html-skip-alists)
+       (ispell-skip-region-alist): Mark as risky.
+
+       * net/newsticker.el (newsticker--retrieval-timer-list)
+       (newsticker--display-timer, newsticker-running-p)
+       (newsticker-ticker-running-p): Definitions moved up.
+
+2005-12-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-many-windows): Echo new state in minibuffer.
+
+2005-12-15  David Ponce  <david@dponce.com>
+
+       * recentf.el (recentf-dialog-goto-first): Fix missing error condition.
+       (recentf-edit-list, recentf-open-files): Signal an error when
+       there is no recent file.
+
+2005-12-14  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * textmodes/texinfmt.el (texinfo-format-region): Set buffer to
+       read-only except for texinfo-format-region evaluation.
+
+2005-12-14  Richard M. Stallman  <rms@gnu.org>
+
+       * vc.el (vc-default-previous-version, vc-default-next-version)
+       (vc-do-command): Doc fixes.
+
+2005-12-14  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-expand-strings)
+       (bibtex-autokey-expand-string, bibtex-name-part)
+       (bibtex-entry-type-whitespace, bibtex-entry-type-str)
+       (bibtex-any-entry-maybe-empty-head, bibtex-string-type)
+       (bibtex-preamble-prefix, bibtex-string-empty-key): New variables.
+       (bibtex-entry-type, bibtex-entry-head): Match only valid entries.
+       (bibtex-entry-postfix, bibtex-known-entry-type-re)
+       (bibtex-valid-entry-re, bibtex-any-valid-entry-re)
+       (bibtex-valid-entry-whitespace-re, bibtex-empty-field-re)
+       (bibtex-field-name-for-parsing, bibtex-remove-delimiters-string)
+       (bibtex-beginning-of-last-entry): Remove.
+       (bibtex-parse-field-name): Use bibtex-field-name.  Issue error
+       message if comma is missing but buffer is read-only.
+       (bibtex-parse-field-text): Handle whitespaces at the end of field
+       text.  Return 3-element list with beginning and end of field text
+       and end of field.
+       (bibtex-end-of-text-in-field, bibtex-end-of-field): Change accordingly.
+       (bibtex-parse-field): Remove arg name.  Use bibtex-field-name.
+       (bibtex-search-forward-field, bibtex-search-backward-field):
+       Search always delimited by limits of entry.  Use more efficient
+       search algorithms.
+       (bibtex-name-in-field): Use bibtex-start-of-name-in-field and
+       bibtex-end-of-name-in-field.
+       (bibtex-text-in-field-bounds): Handle BibTeX strings when
+       extracting the content of a field.
+       (bibtex-text-in-field): Use search limits.
+       (bibtex-parse-string-prefix): Handle empty string keys based on
+       bibtex-string-empty-key.
+       (bibtex-parse-string): Fix docstring.
+       (bibtex-text-in-string): Use bibtex-text-in-field-bounds.
+       (bibtex-preamble-prefix, bibtex-strings): New functions.
+       (bibtex-skip-to-valid-entry): Include preceding whitespace in
+       BibTeX entries (consistent with other BibTeX functions).
+       (bibtex-map-entries): Use bibtex-skip-to-valid-entry.
+       (bibtex-search-entry): Fix docstring.  Simplify.
+       (bibtex-flash-head, bibtex-complete-string-cleanup)
+       (bibtex-count-entries, bibtex-sort-buffer): Simplify.
+       (bibtex-beginning-of-first-entry): Use bibtex-skip-to-valid-entry.
+       (bibtex-parse-entry): New optional arg content.
+       (bibtex-format-entry, bibtex-autofill-entry, bibtex-url): Use it.
+       Use bibtex-text-in-field-bounds.
+       (bibtex-print-help-message): Handle BibTeX strings and preambles.
+       (bibtex-end-of-entry): Use bibtex-preamble-prefix and
+       bibtex-parse-string-postfix.
+       (bibtex-find-text-internal): New function.
+       (bibtex-remove-delimiters): Use it.
+       (bibtex-find-text): Use it.  New optional arg help.
+       (bibtex-complete): Handle BibTeX string and preamble entries.
+       (bibtex-Preamble): Fix order of closing delimiters.
+
+2005-12-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc.el (vc-default-revert): New fun.
+
+       * vc-mcvs.el (vc-mcvs-revert): Fix call to vc-default-revert.
+
+2005-12-14  Romain Francoise  <romain@orebokech.com>
+
+       * font-lock.el (font-lock-keywords-alist): Rename `append' to `how'.
+       (font-lock-add-keywords, font-lock-update-removed-keyword-alist):
+       (font-lock-remove-keywords): Likewise.
+
+2005-12-14  Juri Linkov  <juri@jurta.org>
+
+       * log-view.el (log-view-diff): Doc fix.
+
+       * isearch.el (isearch-query-replace): Use (mark) instead of
+       isearch-opoint if mark is active in transient-mark-mode.
+
+2005-12-14  Aaron S. Hawley  <Aaron.Hawley@uvm.edu>
+
+       * isearch.el (isearch-query-replace): Check for isearch-other-end.
+
+2005-12-14  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * progmodes/cpp.el (cpp-face): New widget.
+       (cpp-known-face, cpp-unknown-face, cpp-edit-list): Use it.
+
+2005-12-14  Juri Linkov  <juri@jurta.org>
+
+       * help-macro.el (make-help-screen): Bind `inhibit-read-only' to t
+       around `erase-buffer' and `insert'.
+
+       * descr-text.el (describe-text-properties): Replace buffer name
+       "*Help-2*" with "*Help*<2>".
+       (describe-char): Add functions print-help-return-message,
+       toggle-read-only.  Use help-setup-xref with nil to not store
+       describe-char in help-xref-stack.  Use help-make-xrefs to
+       make [back] button.
+
+       * desktop.el (desktop-minor-mode-table): Add vc-dired-mode with nil.
+
+       * wdired.el (wdired-old-point): New internal variable.
+       (wdired-change-to-wdired-mode): Set it buffer-locally.
+       (wdired-abort-changes): Restore point after aborting changes.
+
+2005-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc.el (vc-do-command): Add a new value t for okstatus.
+
+       * vc-svn.el (vc-svn-registered): Use it to avoid popping up a spurious
+       frame in case of errors.
+
+2005-12-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * menu-bar.el (menu-bar-showhide-fringe-menu): Move "On the Right"
+       so it comes after "On the Left" in the menu.
+
+2005-12-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (customize-apropos, customize-apropos-options)
+       (customize-apropos-faces, customize-apropos-groups): Doc fixes.
+
+2005-12-12  Bill Wohler  <wohler@newt.com>
+
+       * vc-svn.el (vc-svn-registered): Fix problem of visiting
+       non-writable Subversion-controlled files by saving window
+       configuration before calling vc-do-command.  vc-do-command calls
+       pop-to-buffer on error which is unexpected during registration.
+
+2005-12-12  Jay Belanger  <belanger@truman.edu>
+
+       * calc/README: Update the summary of changes.
+
+2005-12-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * descr-text.el (describe-char): Rework last fix to solve the problem
+       is the same way it's solved for everything else in that function
+       (i.e. by extracting the info before setting up the *Help* buffer).
+
+2005-12-12  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (version-regexp-alist): Allow space as separator before
+       non-numeric part, e.g. "1.0 alpha".
+       (version-to-list): Interpret .X.Y version as 0.X.Y version.
+
+2005-12-12  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda, org-timeline, org-todo):
+       Implement Logging and the keep-modes setting.
+       (org-get-category): Make sure a string is returned.
+       (org-log-done): New function.
+       (org-log-done, org-closed-string): New options.
+
+2005-12-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * tooltip.el (tooltip-y-offset): Change default to 20.
+
+2005-12-12  Richard M. Stallman  <rms@gnu.org>
+
+       * mouse.el (mouse-drag-vertical-line): Use adjust-window-trailing-edge.
+
+       * frame.el (display-hourglass): Doc fix.
+
+       * help.el (help-for-help-internal): Simplify entry for `a'.
+
+       * info.el (Info-on-current-buffer): Doc fix.
+       (info-insert-file-contents): Don't test (featurep 'jka-compr).
+
+       * startup.el (inhibit-splash-screen): Make this the real name.
+       (inhibit-startup-message): Make this the alias.
+       (command-line): Find only simple.el, and use its directory
+       to fill in other preloaded files' names.
+       (command-line): Deactivate the mark if deactivate-mark is set.
+
+       * international/mule.el (load-with-code-conversion):
+       Bind deactivate-mark.
+
+       * progmodes/compile.el (compilation-error-regexp-alist): Doc fix.
+
+2005-12-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (customize-apropos): Avoid listing an option more
+       than once under different aliases.  No longer list user options
+       that are not defined with defcustom (unless a prefix arg is given).
+       Doc fix.
+       (customize-apropos-options): Doc fix.
+
+2005-12-11  Juri Linkov  <juri@jurta.org>
+
+       * frame.el (set-background-color, set-foreground-color)
+       (set-cursor-color, set-mouse-color, set-border-color):
+       Add explicit prompts to read colors by `facemenu-read-color'.
+       (show-trailing-whitespace, blink-cursor-delay)
+       (blink-cursor-interval, display-hourglass, hourglass-delay):
+       Remove tags.
+       (display-hourglass, hourglass-delay): Doc fix.
+       (cursor-in-non-selected-windows): Capitalize words in tag.
+
+       * faces.el (frame-background-mode): Replace `choice-item' keywords
+       with `const' to not make [default] button.  Change default value tag
+       from `default' to `automatic'.  Doc fix.
+       (trailing-whitespace) <defface>: Change group `whitespace' to
+       `whitespace-faces'.
+
+2005-12-11  Richard M. Stallman  <rms@gnu.org>
+
+       * buff-menu.el (Buffer-menu-sort-column): Not a user variable.
+
+2005-12-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Create keymap for mac-apple-event-map.
+
+2005-12-11  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tooltip.el (tooltip-mode): Move to start of file so that it
+       appears at top of customize buffer.
+
+       * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display):
+       Add the gud groupname.
+       (gud-tooltip-mode): Add the tooltip groupname.
+       (gud-tooltip-echo-area): Add the gud groupname.  Remove tag to
+       avoid conflict with tooltip-use-echo-area.
+
+2005-12-10  Romain Francoise  <romain@orebokech.com>
+
+       * help.el (help-for-help-internal): Add `r' in doc string.
+
+2005-12-10  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * align.el (align-regexp, align-highlight-rule):
+       Use region-beginning and region-end instead of point and mark, so that
+       repetition (with `repeat-complex-command') recomputes the region
+       bounds.
+
+2005-12-10  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * window.el (bw-get-tree, bw-get-tree-1, bw-find-tree-sub)
+       (bw-find-tree-sub-1, bw-l, bw-t, bw-r, bw-b, bw-dir, bw-eqdir)
+       (bw-refresh-edges, bw-adjust-window, bw-balance-sub): New functions.
+       (balance-windows): Rewrite using the above new functions.
+
+2005-12-10  David Koppelman  <koppel@ece.lsu.edu>
+
+       * hi-lock.el (hi-lock-mode): Rename from hi-lock-buffer-mode;
+       react if global-hi-lock-mode seems intended.
+       (global-hi-lock-mode): Renamed from hi-lock-mode.
+       (hi-lock-archaic-interface-message-used)
+       (hi-lock-archaic-interface-deduce): New variables.
+       (turn-on-hi-lock-if-enabled, hi-lock-line-face-buffer)
+       (hi-lock-face-buffer, hi-lock-face-phrase-buffer)
+       (hi-lock-find-patterns, hi-lock-font-lock-hook):
+       Replace hi-lock-buffer-mode with hi-lock-mode.
+
+2005-12-10  Kevin Rodgers  <ihs_4664@yahoo.com>  (tiny change)
+
+       * emacs-lisp/lisp.el (lisp-complete-symbol): Regenerate the
+       completion list, even after a partial completion has been
+       inserted in the current buffer.  If there are more than 1
+       completion, redisplay the *Completions* buffer; if the
+       completion is unique, delete the *Completions* window.
+
+2005-12-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmail.el (rmail-next-same-subject): Handle multiple "Re: "
+       strings and long subject lines that were broken into multiple
+       lines at arbitrary places.  Handle subjects that have "Re: " in
+       the middle.
+
+2005-12-10  John W. Eaton  <jwe@octave.org>
+
+       * emacs/octave-mod.el (octave-electric-space): Don't indent
+       comments or strings if octave-auto-indent is nil.
+
+2005-12-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Require url when compiling.
+       Call mac-process-deferred-apple-events after loading init files.
+       (mac-apple-event-map): New defvar.  Define event handlers in it.
+       (core-event, internet-event): New Apple event class symbols.
+       (open-application, reopen-application, open-documents)
+       (print-documents, open-contents, quit-application)
+       (application-died, show-preferences, autosave-now, get-url):
+       New Apple event ID symbols.
+       (about): New HICommand ID symbol.
+       (mac-event-spec, mac-event-ae): New macros.
+       (mac-ae-parameter, mac-ae-list, mac-bytes-to-integer)
+       (mac-ae-selection-range, mac-ae-text-for-search)
+       (mac-ae-open-documents, mac-ae-text, mac-ae-get-url): New functions.
+       (mac-application-menu-map): Remove keymap.  Handlers for HICommand
+       and Services menu events are now defined in mac-apple-event-map.
+       (mac-drag-n-drop): Remove selection range handling.
+
+2005-12-10  Kenichi Handa  <handa@m17n.org>
+
+       * simple.el (zap-to-char):
+       * isearch.el (isearch-process-search-char): Translate CHAR by
+       translation-table-for-input.
+
+2005-12-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * foldout.el (foldout-exit-fold): Properly hide subtree.
+
+2005-12-09  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * files.el (save-buffer):
+       * international/ucs-tables.el (ucs-set-table-for-input):
+       * mail/mail-extr.el (mail-extract-address-components):
+       * mail/sendmail.el (mail-mode): Reformat doc string.
+
+2005-12-09  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-highlight): Change main overlay priority
+       from 1 to 1001.  Simplify.
+       (isearch-lazy-highlight-update): Change lazy overlay priority
+       from 0 to 1000.
+
+       * replace.el (replace-highlight): Change overlay priority from
+       1 to 1001.
+
+       * textmodes/ispell.el (ispell-highlight-spelling-error-overlay):
+       Change overlay priority from 1 to 1001.  Reuse existing overlay.
+
+       * compare-w.el (compare-windows-highlight): Change overlay
+       priority from 1 to 1000.
+
+       * menu-bar.el (menu-bar-edit-menu): Add listp around
+       pending-undo-list to disable menu item "undo" when pending
+       undo list is empty.
+
+       * locate.el (locate): Disable undo in *Locate* buffer.
+
+2005-12-09  Kim F. Storm  <storm@cua.dk>
+
+       * mail/smtpmail.el (smtpmail-via-smtp): Disable undo in SMTP buffer.
+
+2005-12-09  David Ponce  <david@dponce.com>
+
+       * recentf.el: Improvement of the menu code.
+       (recentf-enabled-p): Move before first use.  Use `kill-emacs-hook'
+       instead of menu hook.
+       (recentf-show-menu, recentf-hide-menu): New functions.
+       (recentf-menu-customization-changed, recentf-mode): Use them.
+       (recentf-menu-action, recentf-max-menu-items)
+       (recentf-menu-open-all-flag, recentf-menu-append-commands-flag)
+       (recentf-arrange-by-rule-others)
+       (recentf-arrange-by-rules-min-items)
+       (recentf-arrange-by-rule-subfilter): Don't use
+       `recentf-menu-customization-changed'.
+       (recentf-arrange-rules): Likewise.  Accept functions to compute
+       sub-menu titles.
+       (recentf-menu-filter): Likewise.  Doc fix.
+       (recentf-menu-value-shortcut): Doc fix.
+       (recentf-dump-variable): Quote atom value.
+       (recentf-make-menu-items): Update to use it as a menu filter.
+       (recentf-match-rule): New function.
+       (recentf-arrange-by-rule): Use it.
+       (recentf-indirect-mode-rule): New function.
+       (recentf-build-mode-rules): Use it.
+       (recentf-dir-rule): New function.
+       (recentf-arrange-by-dir): Use it.
+       (recentf-filter-changer-current): Rename from
+       `recentf-filter-changer-state'.  All references updated.
+       (recentf-filter-changer-alist): Update filter names.
+       (recentf-filter-changer-select): New function.
+       (recentf-filter-changer): Use it.  Make a sub-menu from filters
+       available in `recentf-filter-changer-alist'.
+       (recentf-data-cache, recentf-clear-data)
+       (recentf-update-menu): Remove.  All references updated.
+       (recentf-match-rule-p, recentf-build-dir-rules)
+       (recentf-filter-changer-goto-next)
+       (recentf-filter-changer-get-current)
+       (recentf-filter-changer-get-next): Remove.
+
+2005-12-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (custom-buffer-create-internal): Relabel the whole
+       buffer "Reset" button to "Reset to Current" for consistency with
+       the State buttons.
+
+2005-12-08  John Paul Wallington  <jpw@pobox.com>
+
+       * ibuf-ext.el (define-ibuffer-filter filename):
+       If `dired-directory' is a list then really use its car.
+
+2005-12-08  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-rect.el (cua--rectangle-aux-replace):
+       Fix indention of text on right side of replaced rectangle.
+
+2005-12-09  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-buttons, gud-tooltip-tips):
+       No need to check gud-comint-buffer is bound.
+       (gdb): Prevent multiple debugging when first session uses gdba.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       CC Mode update to 5.31.
+
+       * progmodes/cc-subword.el: Add a dummy `c-subword-mode' for
+       Emacsen which lack `define-minor-mode'.  (Currently Emacs <21.
+       We might do this function properly in the future).
+
+       * progmodes/cc-cmds.el, cc-defs.el, cc-styles.el, cc-vars.el:
+       New macros c-sentence-end and c-default-value-sentence end, to cope
+       with Emacs 22's new function `sentence-end'.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el (c-show-syntactic-information): Solve the
+       compat issue using `c-put-overlay' and `c-delete-overlay'.
+
+       * progmodes/cc-defs.el (c-put-overlay, c-delete-overlay):
+       New compat macros to handle overlays/extents.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-fix.el: Add definitions of the macros push and pop
+       (for GNU Emacs 20.4).
+
+       * progmodes/cc-defs.el:
+       (i): Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4).
+
+       * progmodes/cc-cmds.el (c-show-syntactic-information): Change the
+       highlighting mechanism so it will work in XEmacs too.
+
+       * progmodes/cc-defs.el: Insert c-int-to-char.
+
+       * progmodes/cc-langs.el (c-nonsymbol-token-char-list): Insert a
+       call to the new macro c-int-to-char.  This solves XEmacs's
+       regarding characters as different from integers.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-fonts.el (c-make-syntactic-matcher):
+       New internal helper.
+
+       (c-cpp-matchers, c-basic-matchers-before): Use the `eval'
+       construct to make the indirect face lookup work in XEmacs.
+
+       (c-cpp-matchers): Append the negation char face to the existing
+       fontification, so that the cpp face doesn't disappear.
+       Use `c-make-syntactic-matcher' to avoid negation chars in comments
+       and strings.
+
+       * progmodes/cc-fonts.el (c-negation-char-face-name): New variable
+       to map to `font-lock-negation-char-face' in emacsen where it exists.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-mode.el: Bind c-subword-mode to C-c C-w.
+
+       * progmodes/cc-subword.el, cc-cmds.el, cc-mode.el:
+       Rename "c-subword-move-mode" as "c-subword-mode".
+
+       * progmodes/cc-mode.el: Added tty suitable bindings for C-c
+       <delete> and C-c C-<delete>.  (To the c-hungry- delete functions).
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-mode.el: Added autoload directive for
+       `c-subword-move-mode' for use in older emacsen.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-mode.el:
+       (i): Insert a binding for C-c C-backspace into
+       c-bind-special-erase-keys which works in TTYs.
+       (ii): Make sure that when file styles are used, any explicitly
+       given style variables take priority over those in the style.
+       Do this by calling `hack-local-variables' a second time.
+
+       * progmodes/cc-vars.el: Add language specific customization
+       widgets for AWK to c-doc-comment-style, c-require-final-newline
+       and c-default-style.  Add a defcustom for awk-mode-hook.
+       Give c-syntactic-element and c-syntactic-context doc-strings by
+       directly setting their `variable-documentation' propery.
+       This allows Emacs 22.1 to read these with C-h v.
+
+       * progmodes/cc-awk.el: Apply a tidy-up patch (from Stefan Monnier).
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-fonts.el, cc-vars.el
+       (gtkdoc-font-lock-doc-comments, gtkdoc-font-lock-doc-protection)
+       (gtkdoc-font-lock-keywords): GtkDoc patterns contributed by
+       Masatake YAMATO.
+
+       (c-doc-comment-style): Made GtkDoc default in C mode.
+
+       * progmodes/cc-mode.el: Fixed key bindings for C-c C-<backspace>
+       and C-c C-<delete>.
+
+       (c-bind-special-erase-keys): New function for use on
+       `normal-erase-is-backspace-hook' to bind C-c C-<delete> correctly.
+
+       * progmodes/cc-cmds.el (c-hungry-delete): New function to fix
+       <delete> key behavior in XEmacs according to `delete-forward-p'.
+       C.f. `c-electric-delete'.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-mode.el: Give c-hungry-backspace and
+       c-hungry-delete-forward permanent key bindings.
+
+       * progmodes/cc-cmds.el (c-electric-semi&comma):
+       Bind c-syntactic-context for calls to "criteria functions", for
+       consistency with other calls to user functions.
+
+       * progmodes/cc-cmds.el (c-indent-command): Expunge use of
+       `current-prefix-arg', since this might be the prefix arg to a
+       command which calls c-indent-command as a function.  Change the
+       interactive spec from "p" to "P".
+
+       * progmodes/cc-styles.el: Amend the doc-string of c-set-style, in
+       reponse to a report from Joseph Kiniry <kiniry@acm.org> that it
+       was difficult to understand.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-engine.el (c-on-identifier): Fix bug when at the
+       first char of an identifier.
+
+       * progmodes/cc-engine.el (c-on-identifier): Handle the "operator
+       +" syntax in C++.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el (c-mask-paragraph): Correct, so that
+       auto-fill doesn't split a c-comment's last word from a hanging
+       "*/" when a space is typed between them after fill-column.
+
+       * progmodes/cc-defs.el: New macro c-delete-and-extract-region.
+
+       * progmodes/cc-styles.el (c-set-style)
+       (c-setup-paragraph-variables): Abort the command if we're not in a
+       CC Mode buffer.
+
+       * progmodes/cc-align.el (c-lineup-C-comments): Correct indentation
+       with blank comment-prefix, and a blank line as the comment's
+       second line.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-fonts.el (c-cpp-matchers, c-basic-matchers-before):
+       Incorporate the patterns added in the Emacs development branch
+       for the new Emacs 22 face `font-lock-negation-char-face'.
+
+       * progmodes/cc-fonts.el (c-invalid-face-name): Use "red1" instead
+       of "red" since it stands out better in xterms and DOS terminals.
+
+       * progmodes/cc-engine.el (c-literal-faces):
+       Add `font-lock-comment-delimiter-face' which is new in Emacs 22.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el: Make C-c C-a (`c-toggle-auto-newline')
+       forcibly enable c-electric-flag.
+
+       * progmodes/cc-vars.el, cc-cmds.el: New clean-up
+       `comment-close-slash' on c-electric-slash: if enabled, typing `/' just
+       after the comment-prefix of a C-style comment will close that comment.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-fonts.el (c-basic-matchers-before)
+       (c-complex-decl-matchers): Fix the "not-arrow-prefix" regexp used
+       in Pike.
+
+       * progmodes/cc-langs.el (c-other-op-syntax-tokens): Only C++ has
+       digraphs.
+
+       * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el
+       (c-cpp-message-directives, c-cpp-include-directives)
+       (c-opt-cpp-macro-define, c-opt-cpp-macro-define-start)
+       (c-cpp-expr-directives): Introduce new language constants to
+       control cpp syntax in a cleaner way.
+
+       (c-cpp-expr-functions): Rename from c-cpp-defined-fns.
+
+       (c-cpp-matchers, c-forward-to-cpp-define-body): Use them.
+
+       * progmodes/cc-langs.el, cc-fonts.el (c-string-escaped-newlines)
+       (c-multiline-string-start-char): New language constants and
+       variables to specify how newlines in string literals work.
+
+       (c-font-lock-invalid-string): Use them.
+
+       * progmodes/cc-cmds.el (c-try-one-liner): Robustness fix if an
+       unbalanced close brace is entered.  Optimization by avoiding going
+       back over arbitrarily large blocks.  Removed hints that this
+       function only would be relevant/useful in AWK.
+
+       (c-electric-brace): Indent syntactically after the cleanups since
+       lineup functions might do it differently then.
+
+       * progmodes/cc-engine.el, cc-langs.el
+       (c-opt-op-identifier-prefix): New language constant and variable.
+
+       (c-just-after-func-arglist-p, c-after-special-operator-id)
+       (c-search-decl-header-end, c-inside-bracelist-p): Use it.
+
+       * progmodes/cc-align.el, cc-engine.el
+       (c-after-special-operator-id): New helper to handle C++ operator
+       identifiers.
+
+       (c-lineup-topmost-intro-cont, c-just-after-func-arglist-p)
+       (c-guess-basic-syntax): Handle C++ operator identifiers in
+       declarations.
+
+       * progmodes/cc-langs.el (c-assignment-operators): Add the
+       trigraph version of ^= too.
+
+       * progmodes/cc-langs.el (c-assignment-operators): Add the
+       trigraph version of |= in C++.
+
+       * progmodes/cc-fonts.el (c-font-lock-declarators):
+       Handle `c-decl-hangon-kwds' after the identifier name.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): When deciding
+       whether an arglist is "nonempty", ignore a comment after the open
+       paren if it isn't followed by a non-comment token on the same line.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Case 4:
+       Enable heuristics below the point to cope with classes inside special
+       brace lists in Pike.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el: Amend c-point-syntax to handle macros.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-guess.el (cc-guess-install): New function to
+       install an already guessed style in another buffer.
+
+       * progmodes/cc-defs.el (c-tentative-buffer-changes): No longer
+       sets `inhibit-read-only' - `c-save-buffer-state' should be used
+       anyway if the change always is undone.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       Implement togglable electricity:
+
+       * progmodes/cc-defs.el: Enhance c-save-buffer-state's doc-string,
+       saying when it should be used.
+
+       * progmodes/cc-engine.el: Add the new buffer-local variable,
+       c-electric-flag.
+
+       * progmodes/cc-langs.el: Change the name of c-toggle-auto-state to
+       c-toggle-auto-newline.
+
+       * progmodes/cc-mode.el: Rename c-toggle-auto-state to
+       c-toggle-auto-newline.  Remove the binding for
+       c-toggle-auto-hungry-state.  Add the binding C-c C-l for the new
+       c-toggle-electric-state.
+
+       * progmodes/cc-vars.el: Make c-syntactic-indentation buffer local.
+
+       * progmodes/cc-cmds.el: Add `c-bytecomp-defun's for
+       c-\(forward\|backward\)-subword.
+       (c-update-modeline): Add the new modeline flag `l' for
+       `c-electric-flag'.  Make the auto-newline flag `a' dependent on `l'.
+       (c-toggle-auto-state): Rename it to `c-toggle-auto-newline'.
+       Make the old name an alias of the new name.
+       (c-toggle-electric-state): New function.
+       (c-electric-\(pound\|brace\|slash\|star\|semi&comma\|colon\|lt-gt\|paren\|continued-statement\)):
+       Adapt these functions to do electric things only when
+       c-electric-flag is non-nil.
+       (c-point-syntax, c-brace-newlines, c-try-oneliner): Extract these
+       new functions from c-electric-brace.
+       (c-point-syntax): Add a check for "virtual semicolons" in AWK
+       mode, so that the tentative extra newline doesn't change the
+       syntax of the following brace.
+       (c-electric-brace): Restructure by extracting the above functions.
+       Tidy up the coding somewhat.
+       (c-electric-semi&comma, c-electric-colon, c-electric-paren):
+       restructure a bit.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el (c-show-syntactic-information): Show the
+       anchor position(s) using faces.  Thanks to Masatake YAMATO for the idea.
+
+       * progmodes/cc-mode.el, cc-cmds.el, cc-defs.el, cc-engine.el
+       (c-submode-indicators): Change name from `c-auto-hungry-string'
+       since it's now used to track another submode.
+
+       (c-update-modeline): Convert to function and extended to check
+       `c-subword-move-mode'.
+
+       (c-forward-into-nomenclature, c-backward-into-nomenclature):
+       Convert to compat aliases for `c-forward-subword' and
+       `c-backward-subword'.
+
+       * progmodes/cc-subword.el: New functions and minor mode to handle
+       SillyCapsedStyleIndentifiers, contributed by Masatake YAMATO:
+
+       (c-forward-subword, c-backward-subword, c-mark-subword)
+       (c-kill-subword, c-backward-kill-subword, c-transpose-subwords)
+       (c-capitalize-subword, c-downcase-subword, c-upcase-subword):
+       Functions corresponding to the standard word handling functions.
+
+       (c-subword-move-mode): Minor mode that replaces all the standard
+       word handling functions with their subword equivalences.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-vars.el (c-cleanup-list): Insert a customization
+       entry for one-liner-defun.
+
+       * progmodes/cc-defs.el: Give c-tentative-buffer-changes its own
+       name in its def-edebug-spec.
+
+       * progmodes/cc-cmds.el (c-electric-brace): Make the
+       one-liner-defun clean-up work with empty-defun-braces.  o-l-d now
+       compacts space before a comment, if this will make things fit on
+       one line.
+
+       Introduce an "awk" style, mainly for auto-newline and clean-ups.
+
+       * progmodes/cc-align.el: New function c-snug-1line-defun-close.
+
+       * progmodes/cc-cmds.el: In c-electric-brace, add code for new
+       clean-up one-liner-defun.
+
+       * progmodes/cc-styles.el: Add the new "awk" style.
+
+       * progmodes/cc-vars.el: Add description of one-liner-defun to
+       c-cleanup-list's doc-string.  New user options,
+       c-max-one-liner-length.  In c-default-style, set the default style
+       for AWK to "awk".
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-engine.el (c-forward-label): Fix fontification of
+       macros inside labels.
+
+       * progmodes/cc-engine.el (c-looking-at-bos): Obsolete in favor of
+       `c-at-statement-start-p' and `c-at-expression-start-p'.
+
+       * progmodes/cc-defs.el (c-tnt-chng-record-state): Don't signal an
+       error if the mark isn't set.
+
+       * progmodes/cc-engine.el (c-guess-continued-construct)
+       (c-guess-basic-syntax): Use `c-forward-decl-or-cast-1' to more
+       accurately detect functions inside functions.
+
+       * progmodes/cc-engine.el (c-at-expression-start-p): New function
+       like `c-at-statement-start-p' that additionally recognizes commas
+       and expression parentheses as delimiters.
+
+       * progmodes/cc-engine.el (c-looking-at-inexpr-block): Add flag
+       to avoid heuristics that doesn't work for unclosed blocks.
+       (c-at-statement-start-p): New function.
+
+       * progmodes/cc-engine.el, cc-fonts.el: Fixes in handling of
+       Objective-C directives, e.g. directives spanning lines should work
+       reasonably well now.
+
+       (c-put-c-type-property, c-clear-c-type-property): New helpers.
+
+       (c-forward-objc-directive): New function to move over any ObjC
+       directive.
+
+       (c-just-after-func-arglist-p, c-guess-basic-syntax)
+       (c-basic-matchers-before): Use it.
+
+       (c-font-lock-objc-iip-decl): Remove.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Some improvement
+       in the template arglist recognition.
+
+       * progmodes/cc-styles.el (c-style-alist): Fix several
+       inconsistencies in the Whitesmith style.
+
+       * progmodes/cc-align.el (c-lineup-after-whitesmith-blocks):
+       New lineup function to get lines after Whitesmith style blocks
+       correctly indented.
+
+       (c-lineup-whitesmith-in-block): Back out the compensation for
+       opening parens since it's done using `add' lists in the style
+       definition instead.  Don't use the anchor position since it varies
+       too much between the syntactic symbols. :P
+
+       * progmodes/cc-vars.el (c-valid-offset): Update.
+
+       * progmodes/cc-engine.el (c-evaluate-offset): Extend to handle
+       lists where the offsets are combined according to several
+       different methods: `first', `min', `max', and `add'.
+       Report offset evaluation errors with `c-benign-error' so that some kind
+       of reindentation still is done.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax):
+       Anchor `arglist-intro' the same way as `arglist-cont-nonempty' and
+       `arglist-close'.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Fix similar
+       situations for `arglist-cont-nonempty' and `arglist-close'.
+
+       * progmodes/cc-langs.el (c-opt-identifier-concat-key-depth): New const.
+
+       * progmodes/cc-defs.el: Use `cc-bytecomp-fboundp' and
+       cc-bytecomp-boundp' in a number of places.
+
+       * progmodes/cc-engine.el (c-beginning-of-statement-1): Fix a
+       macro related issue.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-awk.el: Change the terminology of regexps: A char
+       list is now [asdf], a char class [:alpha:].
+       Include code for char classes.
+       Set c-awk-NL-prop on lines ending in open strings.  (Bug fix.)
+       Add character classes (e.g. "[:alpha:]") into AWK Mode's regexps.
+
+       Remove (nearly all of) the cruft associated with AWK Mode's former
+       concept of "virtual semicolons":
+
+       Adapt c-beginning-of-statement, c-end-of-statement (together with
+       subfunctions) to use the new notion of "virtual semicolon" in
+       place of the old awkward special handling for AWK.  There remains
+       much cruft in cc-awk.el, cc-cmds.el and cc-engine.el to clear out.
+       * progmodes/cc-cmds.el:
+       (c-ascertain-adjacent-literal): In the backwards direction, now
+       recognises AWK regexp delimiters as string delimiters.
+       (c-after-statement-terminator-p): Adapt for virtual semicolons;
+       check more rigorously for "end of macro".
+       (c-back-over-illiterals, c-forward-over-illiterals): Adapt for
+       virtual semicolons;
+       (c-beginning-of-statement): Adapt for virtual semicolons; Separate
+       out the code for forward movement into ...
+       (c-end-of-statement): Now contains the code for forward movement,
+       adapted for virtual semicolons.
+
+       * progmodes/cc-engine.el:
+       (c-ws*-string-limit-regexp): New regexp.
+       (c-forward-single-comment, c-backward-single-comment): Comment out
+       the (now redundant) "special" AWK stuff.
+
+       * progmodes/cc-styles.el, cc-vars.el: Change the settings of
+       c-string-par-start, c-string-par-separate to be more like Text
+       Mode than Fundamental Mode.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-fonts.el (c-font-lock-declarations): Always narrow
+       to the fontified region so that fontification doesn't occur
+       outside it (could happen e.g. when fontifying a line with an
+       unfinished declaration).
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-awk.el: Move regexps for analysing AWK code to near the
+       start of the file.  ^L now separate sections of the file.
+       (c-awk-non-eol-esc-pair-re, c-awk-blank-or-comment-line-re)
+       (c-awk-one-line-possibly-open-string-re)
+       (c-awk-regexp-one-line-possibly-open-char-class-re)
+       (c-awk-one-line-possibly-open-regexp-re)
+       (c-awk-one-line-non-syn-ws*-re): New defonsts.
+       (c-awk-at-vsemi-p, c-awk-vsemi-status-unknown-p): New functions.
+
+       Amend the concept of "virtual semicolons" (in the indentation
+       engine) for languages like AWK, such that they are now
+       conceptually attached to end of the last token of a statement, not
+       the end of the line.  (In AWK Mode, however, the pertinent text
+       property is still physically set on the EOL.)  Remove the specific
+       tests for awk-mode, thus facilitating the introduction of other
+       language modes where EOLs can end statements.
+       (Note: The funtionality in cc-cmds.el, specifically
+       c-beginning/end-of-statement has yet to be amended.)
+
+       * progmodes/cc-defs.el (c-at-vsemi-p, c-vsemi-status-unknown-p):
+       New macros.
+
+       * progmodes/cc-langs.el: Added `#' into AWK Mode's value of
+       c-stmt-delim-chars.  New c-lang-defvars: c-at-vsemi-p-fn,
+       c-vsemi-status-unknown-p-fn (in a new page).
+
+       * progmodes/cc-engine.el: In c-beginning-of-statement-1,
+       c-crosses-statement-barrier-p, c-guess-basic-syntax, replace
+       numerous awkward forms like
+       (if (c-major-mode-is 'awk-mode) (c-awk-prev-line-incomplete-p))
+       with (c-at-vsemi-p).  Fix a few typos.  In c-guess-basic-syntax, new
+       variable before-ws-ip, the place just after char-before-ip appears.
+
+       * progmodes/cc-mode.el: Fix what's almost a semantic ambiguity in
+       a comment.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el (c-electric-brace): Clean up using
+       `c-tentative-buffer-changes'.
+
+       * progmodes/cc-defs.el (c-region-is-active-p): Simplify and
+       convert to macro to choose between Emacs and XEmacs at compile time.
+
+       (c-set-region-active): New set counterpart to `c-region-is-active-p'.
+
+       (c-tentative-buffer-changes): New macro to handle temporary buffer
+       changes in a convenient way.
+
+       (c-tnt-chng-record-state, c-tnt-chng-cleanup): Internal helpers
+       for `c-tentative-buffer-changes'.
+
+       * progmodes/cc-engine.el (c-looking-at-inexpr-block): Tighten up
+       the checks for paren sexps between the point and the keyword, to
+       avoid some false alarms.
+
+       * progmodes/cc-engine.el, cc-langs.el (c-looking-at-inexpr-block):
+       Fixed a situation where an error could be thrown for unbalanced
+       parens.  Changed to make use of c-keyword-member' to avoid some
+       repeated regexp matches.
+
+       (c-opt-lambda-key, c-opt-inexpr-block-key, c-opt-inexpr-class-key):
+       These language variable are no longer necessary.
+
+       (c-block-stmt-kwds): New language constant used by
+       c-looking-at-inexpr-block'.
+
+       (c-guess-basic-syntax): Remove an optional check that looked at
+       the existence of the now removed language variables.
+
+       * progmodes/cc-engine.el (c-fdoc-shift-type-backward)
+       (c-forward-decl-or-cast-1): Fix invalid recognition of C++ style
+       object instantiation expressions as declarations in some contexts.
+       This bug only affected languages where the declarator can't be
+       enclosed in parentheses.
+
+       * progmodes/cc-styles.el (c-style-alist): Fix the GNU style to
+       insert newlines before and after substatement braces.
+
+       * progmodes/cc-engine.el: Improved the heuristics for recognizing
+       function declaration headers and the handling of C++ style member
+       init lists.
+
+       (c-just-after-func-arglist-p): Rewritten to use
+       `c-forward-decl-or-cast-1'.  Now behaves a bit differently too.
+
+       (c-beginning-of-member-init-list): Remove since it isn't used anymore.
+
+       (c-guess-basic-syntax): Adapt case 5B for the new
+       `c-just-after-func-arglist-p'.  Merge cases 5B.1 and 5B.3.
+       Remove cases 5D.1 and 5D.2 since they aren't trigged anymore (case 5B.1
+       covers all cases now).
+
+       * progmodes/cc-defs.el (c-point): Add `bosws' and `eosws'.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el, cc-styles.el, cc-vars.el: New variables
+       c-string-par-start/separate c-sentence-end-with-esc-eol,
+       initialised in c-setup-paragraph-variables, used in string
+       scanning subroutines of c-beginning-of-statement.
+
+       * progmodes/cc-cmds.el (c-electric-brace): Don't delete a comment
+       which precedes the newly inserted `{'.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-engine.el, cc-langs.el: Rewrote the recognition
+       function for declaration level blocks.  It should now cope with
+       templates better and also be a lot more comprehensible.
+
+       (c-looking-at-decl-block): The new function.
+
+       (c-search-uplist-for-classkey): The old one.  It's now a wrapper
+       for compatibility.
+
+       (c-add-class-syntax, c-guess-continued-construct)
+       (c-guess-basic-syntax): Adapt for `c-looking-at-decl-block'.
+
+       (c-decl-block-key): Change to tell apart ambiguous and
+       unambiguous keywords.  Pike specials are now handled directly in
+       the code instead.
+
+       (c-block-prefix-disallowed-chars, c-block-prefix-charset):
+       New language constants and variables to make the backward skip in
+       `c-looking-at-decl-block' as tight as possible.
+
+       (c-nonsymbol-token-char-list): New language constant.
+
+       * progmodes/cc-engine.el (c-backward-<>-arglist): New function to
+       find balanced template arglists backwards.
+
+       * progmodes/cc-defs.el (c-make-bare-char-alt): New helper for
+       making char classes for `c-syntactic-skip-backward'.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Simplify case
+       16D - can't be a class-close at that point.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax)
+       (c-add-class-syntax): Don't narrow out the enclosing declaration
+       level.  This makes everything a lot easier, and it was actually
+       only four small places that needed it to work.  Some places that
+       previously did `widen' are removed now, which has the effect that
+       `c-guess-basic-syntax' never will look at things outside the
+       current narrowment now.  The anchor position for `topmost-intro'
+       is affected by this, but it was so bogus it was basically useless
+       before, and now it's equally bogus but in a slightly different way.
+
+       (c-narrow-out-enclosing-class): Gone.
+
+       (c-most-enclosing-brace, c-least-enclosing-brace): Don't filter to
+       the narrowed region.
+
+       (c-least-enclosing-brace): Remove silly optional argument.
+
+       * progmodes/cc-engine.el (c-beginning-of-decl-1): Fix bug where
+       the point could be left directly after an open paren when finding
+       the beginning of the first decl in the block.
+
+       * progmodes/cc-engine.el, cc-fonts.el (c-forward-keyword-clause):
+       Specify which submatch to use.
+
+       * progmodes/cc-langs.el (c-symbol-start): Include `@' in ObjC.
+
+       (c-decl-start-re): No longer any need for special treatment of
+       ObjC due to the above.
+
+       (c-other-block-decl-kwds): Handle "extern" in ObjC too since it
+       presumably follows C in that regard.
+
+       * progmodes/cc-langs.el (c-identifier-ops, c-after-id-concat-ops):
+       New language constants to specify operator tokens inside
+       identifiers in a more high level way.
+
+       (c-opt-identifier-prefix-key): New internal language constant.
+
+       (c-opt-identifier-concat-key, c-opt-after-id-concat-key)
+       (c-identifier-start, c-identifier-key): Now completely calculated
+       from other constants.
+
+       (c-identifier-last-sym-match): Decommission since it's no longer used.
+
+       (c-operators): Use `c-identifier-ops'.  Document `postfix-if-paren'.
+
+       * progmodes/cc-engine.el (c-forward-name): Remove the
+       optimization when c-identifier-key is equal to c-symbol-key since
+       it doesn't work in byte compiled files.  Don't record empty
+       regions as identifiers.
+
+       * progmodes/cc-langs.el (c-filter-ops): New helper function to
+       simplify access to `c-operators' and its likes.
+
+       (c-operator-list, c-all-op-syntax-tokens)
+       (c-nonsymbol-token-regexp, c-<>-multichar-token-regexp)
+       (c-<-op-cont-regexp, c->-op-cont-regexp, c-expr-kwds)
+       (c-primary-expr-regexp, c-cast-parens): Use it.
+
+       * progmodes/cc-defs.el (c-lang-const): Fixes to allow use without
+       an explicit language in functions.
+
+       * progmodes/cc-defs.el (c-make-keywords-re): Add an appendable
+       variant of adornment.
+
+       * progmodes/cc-langs.el (c-any-class-key): Remove unused language
+       variable.
+
+       (c-type-decl-prefix-key): Remove some now unnecessary cruft from
+       the Pike value.
+
+       * progmodes/cc-engine.el (c-on-identifier)
+       (c-simple-skip-symbol-backward): Small fix for handling "-"
+       correctly in `skip-chars-backward'.  Affected the operator lfun
+       syntax in Pike.
+
+       * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Disable the
+       diagnostic message about precompiled language vars not being used.
+
+       * progmodes/cc-langs.el (c-paren-nontype-kwds): The GCC keyword
+       "__attribute__" is followed by a parenthesis.
+
+       (c-type-start-kwds, c-prefix-spec-kwds, c-prefix-spec-kwds-re)
+       (c-specifier-key, c-not-decl-init-keywords): Some cleanup using new
+       language constants `c-type-start-kwds' and `c-prefix-spec-kwds'.
+
+       * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el:
+       Internal cleanups to properly detect the declared identifiers in
+       various declarations.
+
+       (c-decl-start-kwds): New language constant to recognize
+       declarations that can start anywhere.  Used for class declarations
+       in Pike.
+
+       (c-specifier-key, c-not-decl-init-keywords)
+       (c-decl-prefix-or-start-re, c-find-decl-prefix-search)
+       (c-find-decl-spots): Implement `c-decl-start-kwds'.
+
+       (c-other-decl-kwds, c-postfix-decl-spec-kwds, c-decl-hangon-kwds)
+       (c-decl-hangon-key, c-forward-decl-or-cast-1): Separate the
+       handling of the compiler specific extension keywords into a new
+       language constant `c-decl-hangon-kwds' that defines keyword
+       clauses to be ignored in declarations.
+
+       (c-forward-id-comma-list, c-forward-keyword-clause): Don't skip
+       past unrecognized tokens when handling `c-colon-type-list-kwds'.
+       Necessary to stop at the declared identifier in e.g. IDL valuetype
+       declarations.
+
+       (c-typedef-decl-kwds, c-typeless-decl-kwds, c-type-list-kwds)
+       (c-prefix-spec-kwds-re, c-postfix-spec-kwds)
+       (c-after-suffixed-type-decl-key, c-opt-postfix-decl-spec-key)
+       (c-forward-decl-or-cast-1): Recognize the declared identifier in
+       class and enum declarations as such and not as part of the type.
+
+       (c-forward-decl-or-cast-1, c-forward-label): Relax the
+       interpretation of PRECEDING-TOKEN-END when there's no preceding token.
+
+       (c-forward-decl-or-cast-1): Don't disregard sure signs of
+       declarations when there's some syntax error later on.
+
+       (c-complex-decl-matchers): Did away with a reference to
+       `c-specifier-key'.
+
+       * progmodes/cc-engine.el (c-maybe-labelp): Provide no default
+       value - this variable is always dynamically bound.
+
+       * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el
+       * cc-mode.el, cc-styles.el, cc-vars.el, cc-align.el, cc-awk.el
+       * cc-cmds.el, cc-defs.el: Change the policy for marking up
+       functions that might do hidden buffer changes: All such internal
+       functions are now marked instead of those that don't.
+
+       (c-beginning-of-macro, c-end-of-macro, c-(forward|backward)-comments)
+       (c-(forward|backward)-single-comment, c-parse-state, c-on-identifier)
+       (c-(fast-|slow-|)in-literal, c-literal-limits, c-collect-line-comments)
+       (c-literal-type): Allow these functions to make hidden buffer changes,
+       so that they are free to use text property caching later on.
+
+       (c-electric-backspace, c-electric-delete-forward, c-electric-pound)
+       (c-electric-brace, c-electric-slash, c-electric-star)
+       (c-electric-semi&comma, c-electric-colon, c-electric-lt-gt)
+       (c-electric-paren, c-electric-continued-statement, c-indent-command)
+       (c-indent-region, c-mask-paragraph, c-indent-new-comment-line)
+       (c-context-line-break): Add `c-save-buffer-state' calls to comply
+       with the changed semantics of the functions above.
+
+       * progmodes/cc-engine.el (c-beginning-of-statement-1): Fix a bug
+       when macros occur in obscure places.  Optimized the sexp movement
+       a bit.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       Enhancements for c-beginning-of-statement to work in AWK Mode:
+
+       * progmodes/cc-awk.el: Supersede c-awk-NL-prop value `;'
+       (completed statement) with `}' (statement completed by closing
+       brace or semicolon) and `$' (statement completed by EOL).
+
+       (c-awk-virtual-semicolon-ends-prev-line-p)
+       (c-awk-virtual-semicolon-ends-line-p)
+       (c-awk-skip-semantic-ws-forward, c-awk-skip-semantic-ws-backward)
+       (c-awk-at-statement-end-p): New functions.
+
+       * progmodes/cc-cmds.el: Simplify the structure of functions
+       c-forward-over-illiterals, c-back-over-illiterals.  Enhance these
+       two functions and c-beginning-of-statement to handle AWK Mode.
+
+       * progmodes/cc-engine.el: Enhance c-forward-single-comment,
+       c-backward-single-comment for AWK mode.  Attempt to clarify their
+       doc-strings.
+
+       * progmodes/cc-mode.el: Put M-a and M-e into awk-mode-map.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el: Cleaned up the
+       label handling.  Labels are now recognized in a uniform and more
+       robust way, regardless of context.  Text properties are put on all
+       labels to recognize the following declarations better.
+       Multiword labels are handled both in indentation and fontification for
+       the benefit of language extensions like Qt.  For consistency, keywords
+       in labels are now fontified with the label face instead.
+       That also applies to "case" and "default".
+
+       (c-beginning-of-statement-1): Fix some bugs in the label
+       handling.  Disregard `c-nonlabel-token-key' in labels that begin
+       with `c-label-kwds'.
+
+       (c-find-decl-spots): Support that the callback adds more
+       `c-decl-end' spots to find.
+
+       (c-forward-decl-or-cast-1): Don't treat a list of plain
+       identifiers followed by a colon as a declaration.
+
+       (c-forward-label): New function to recognize labels.
+
+       (c-guess-basic-syntax): Replace uses of `c-label-key' with
+       `c-forward-label'.  Moved the label recognition cases (14 and 15)
+       earlier since they aren't so context sensitive now.  Handle labels
+       on the top level gracefully.  Moved access label recognition to
+       the generic label case (CASE 15) - removed CASE 5E.
+
+       (c-font-lock-declarations): Add recognition of labels in the
+       same round since we need to handle labels in parallell with other
+       declarations to recognize both accurately.  It should also improve
+       speed.
+
+       (c-simple-decl-matchers, c-basic-matchers-after):
+       Move `c-font-lock-labels' so that it only is used on decoration level 2
+       since `c-font-lock-declarations' handles it otherwise.
+
+       (c-complex-decl-matchers): Remove the simplistic recognition of
+       access labels.
+
+       (c-decl-prefix-re): Remove the kludges that was necessary to cope
+       with labels earlier.
+
+       (c-decl-start-re): New language variable to make
+       `c-font-lock-declarations' stop for the special protection labels
+       in Objective-C that start with `@'.
+
+       (c-label-key): Remove since it's no longer used.
+
+       (c-recognize-colon-labels, c-label-prefix-re): New language
+       constants to support recognition of generic colon-terminated labels.
+
+       (c-type-decl-end-used): `c-decl-end' is now used whenever there
+       are colon terminated labels.
+
+       * progmodes/cc-align.el (c-lineup-arglist): Fix bug when the
+       first argument starts with a special brace list.
+
+       * progmodes/cc-engine.el, cc-fonts.el (c-forward-decl-or-cast-1)
+       (c-font-lock-declarations): Break out the declaration and cast
+       recognition from `c-font-lock-declarations' to a new function, so
+       that it can be used in the indentation engine.
+
+       * progmodes/cc-engine.el (c-find-decl-spots): Fix bug in backing
+       up to the start of the literal.  Fixed bug with the point on the
+       wrong side of the search limit that could happen when the start
+       position is inside a literal.
+
+       * progmodes/cc-engine.el (c-parse-state)
+       (c-invalidate-state-cache): Modify the use of `c-state-cache-end'
+       so that it's kept a little bit back to increase the hit rate.
+
+       (c-parse-state): Change the macro handling and fixed some
+       glitches.  Macro context is checked more often than necessary now,
+       but otoh less garbage conses are generated.
+
+       * progmodes/cc-engine.el (c-parse-state)
+       (c-invalidate-state-cache): Cache the last position where
+       `c-state-cache' applies.  This can speed up refontification quite
+       a bit in blocks where there are many non-brace parens before the point.
+
+       (c-state-cache-end): New variable for this.
+
+       (c-guess-basic-syntax, c-debug-parse-state): Adapt for the new
+       cache variable.
+
+       * progmodes/cc-engine.el (c-find-decl-spots): Take more care to
+       get close initial continue positions when the start position is
+       inside a literal or macro.  Do not call the callback for spots
+       before the start position (which can happen e.g. for `c-decl-end'
+       spots inside comments).  Optimize better in special cases when the
+       region is a single line inside a literal or macro (typically when
+       the current line is refontified).
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Simplify calls
+       to `c-add-stmt-syntax' - there's no need to explicitly whack off
+       entries from the paren state.
+
+       * progmodes/cc-engine.el (c-add-stmt-syntax): Narrow down the
+       special case for "else if" clauses.
+
+       * progmodes/cc-engine.el (c-looking-at-inexpr-block)
+       (c-add-stmt-syntax): Use `c-recognize-paren-inexpr-blocks'.
+
+       * progmodes/cc-langs.el (c-recognize-paren-inexpr-blocks):
+       New language variable to recognize the gcc extension with statement
+       blocks inside expressions.
+
+       * progmodes/cc-engine.el (c-add-stmt-syntax): Restructure to make
+       it somewhat more comprehensible.  The argument AT-BLOCK-START is
+       no longer used and hence removed.
+
+       (c-guess-continued-construct, c-guess-basic-syntax): Update calls
+       to `c-add-stmt-syntax'.
+
+       * progmodes/cc-engine.el (c-backward-to-decl-anchor):
+       Use `c-beginning-of-statement-1' instead of duplicating parts of it.
+       This fixes bogus label recognition.
+
+       * progmodes/cc-engine.el (c-add-type, c-check-type)
+       (c-forward-name, c-forward-type): Improve storage of template
+       types in `c-found-types' so that they can be recognized better.
+
+       (c-syntactic-content): Add option to skip past nested parens.
+
+       * progmodes/cc-engine.el (c-forward-name):
+       Set `c-last-identifier-range' all the time.  It's less work that way.
+       Handle that there might not be an identifier to store in
+       `c-last-identifier-range'.
+
+       (c-forward-type): Handle that `c-last-identifier-range' might be
+       nil from `c-forward-name'.
+
+       * progmodes/cc-defs.el (c-safe-scan-lists)
+       (c-(go-)?(up|down)-list-(forward|backward)): Add limit arguments.
+
+       * progmodes/cc-defs.el (c-save-buffer-state): Use `unwind-protect'
+       to work even if the form fails.
+
+       * progmodes/cc-engine.el (c-parse-state): Speedup when moving far
+       down in a large file in one go.
+
+       (c-get-fallback-start-pos): New helper function for `c-parse-state'.
+
+       * progmodes/cc-align.el (c-lineup-assignments): New lineup
+       function which is like `c-lineup-math' but returns nil instead of
+       `c-basic-offset' when it doesn't match.
+
+       (c-lineup-math): Change to use `c-lineup-assignments'.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el: Fix some bugs in subfunctions of
+       c-beginning-of-statement.  New subfunctions
+       c-in-comment-line-prefix-p, c-narrow-to-comment-innards.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-fonts.el, cc-langs.el: Use `c-simple-ws' instead of
+       hardcoded char classes whereever possible.  Changed a couple of
+       places to use skip by syntax instead of skip by char class.
+
+       * progmodes/cc-langs.el (c-unterminated-block-comment-regexp):
+       Fix a bug in the regexp that caused extreme backtracking.
+
+       * progmodes/cc-langs.el (c-block-comment-starter)
+       (c-block-comment-ender): New language constants to specify in a
+       single place how block comments look.
+
+       (c-comment-start-regexp, c-block-comment-start-regexp)
+       (comment-start, comment-end, comment-start-skip)
+       (c-syntactic-ws-start, c-syntactic-ws-end, c-nonwhite-syntactic-ws)
+       (c-syntactic-ws, c-nonempty-syntactic-ws)
+       (c-single-line-syntactic-ws, c-syntactic-eol): Now built from
+       `c-line-comment-starter', `c-block-comment-starter' and
+       `c-block-comment-ender'.
+
+       (c-block-comment-regexp, c-unterminated-block-comment-regexp):
+       New language constants to break up things a bit.
+
+       (c-simple-ws): New language constant for simple whitespace.
+
+       * progmodes/cc-defs.el (c-concat-separated): New convenience function.
+
+       * progmodes/cc-defs.el (c-make-keywords-re): Add kludge for bug
+       in `regexp-opt' in Emacs 20 and XEmacs when strings contain
+       newlines.  Allow and ignore nil elements in the list.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el: Comment out a (n almost certainly
+       superfluous) check, (eq here (point-max)) in c-beginning-of-statement.
+
+       * progmodes/cc-cmds.el: Tidy up the comments in
+       c-beginning-of-statement and subfunctions.
+
+       * progmodes/cc-awk.el: Replace calls to put-text-property to the
+       more flexible c-put-char-property and c-clear-char-properties.
+       Add the author's email address.
+
+       * progmodes/cc-langs.el (c-block-comment-start-regexp): New variable.
+
+       * progmodes/cc-cmds.el: Fix bug with M-e, when point is inside the
+       closing "*/" of a block comment.
+
+       * progmodes/cc-cmds.el: Tidy c-beginning-of-sentence (and
+       subfunctions) so that it works at BOB and EOB.
+
+       * progmodes/cc-cmds.el, cc-vars.el: More updating of
+       c-beginning-of-statement, including new variable
+       c-block-comment-start-regexp.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-langs.el (c-known-type-key): Optimize simple
+       symbols from `*-font-lock-extra-types' so that there's no need to
+       use `regexp-opt' on those lists.
+
+       * progmodes/cc-langs.el (c-type-decl-suffix-key): Fix when
+       `c-type-modifier-kwds' is empty.
+
+       * progmodes/cc-fonts.el (c-font-lock-invalid-string): Fix when
+       there are several strings on the same line.
+
+       * progmodes/cc-engine.el (c-literal-limits): Remove the
+       compatibility function for older emacsen.  `c-literal-limits-fast'
+       has now taken the place of this function.
+
+       * progmodes/cc-vars.el (c-emacs-features): Remove compatibility
+       with older emacsen: We now require `pps-extended-state'.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el: New function c-beginning-of-sentence,
+       which obviates the need to hack sentence-end.  This now handles
+       escaped newlines in strings correctly.  Correct minor bugs in
+       c-move-over-sentence and in c-beginning-of-statement.
+
+       * progmodes/cc-cmds.el (c-beginning-of-statement (and
+       subfunctions)): Adapt c-\(back\|forward\)-over-illiterals such
+       that movement over macros and code are rigorously separated from
+       eachother.  Correct a few incidental bugs.
+
+       * progmodes/cc-cmds.el: Restructure c-beginning-of-statement:
+       Improve its doc-string.  Improve the handling of certain specific cases.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el
+       (c-guess-basic-syntax): Change the way class-level labels are
+       recognized; they can now contain essentially any symbols.
+
+       (c-opt-extra-label-key): New language variable to cope with the
+       special protection label syntax in Objective-C.
+
+       (c-opt-access-key): Remove; this is now handled better by
+       `c-nonlabel-token-key' and `c-opt-extra-label-key'.
+
+       (c-complex-decl-matchers): Update to handle that
+       `c-opt-access-key' no longer exists.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Make use of the
+       improved label recognition in `c-beginning-of-statement-1'.
+
+       * progmodes/cc-engine.el (c-beginning-of-member-init-list):
+       Recognize bitfields better.
+
+       * progmodes/cc-engine.el (c-beginning-of-inheritance-list):
+       Remove some cruft and fixed a bug that could cause it to go to a
+       position further down.
+
+       * progmodes/cc-langs.el, cc-engine.el
+       (c-beginning-of-statement-1): Improve detection of labels in
+       declaration contexts.
+
+       (c-beginning-of-decl-1): Use it.
+
+       (c-nonlabel-token-key): New language constant and variable needed
+       by `c-beginning-of-statement-1'.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Fix bug that
+       manifested itself due to the correction in `c-forward-sexp'.
+
+       * progmodes/cc-defs.el (c-forward-sexp, c-backward-sexp):
+       Make these behave as documented when used at the buffer limits.
+
+       * progmodes/cc-mode.el, cc-engine.el, cc-langs.el
+       (c-type-decl-end-used): Made this a language variable.
+
+       * progmodes/cc-mode.el (c-after-change): Widen the buffer to work
+       correctly when `combine-after-change-calls' is used together with
+       temporary narrowings.
+
+       * progmodes/cc-engine.el (c-beginning-of-statement-1):
+       Report labels correctly when the start point is immediately after the
+       colon.
+
+       * progmodes/cc-defs.el (c-parse-sexp-lookup-properties):
+       Remove since it isn't used anymore.
+
+       * progmodes/cc-cmds.el (c-electric-lt-gt): Detect and mark angle
+       bracket arglists such as template parens in C++.
+
+       * progmodes/cc-engine.el (c-syntactic-skip-backward): Fix a bug
+       in the last check-in.  Some optimization.
+
+       * progmodes/cc-engine.el (c-syntactic-skip-backward): Fix bug
+       where it could stop at the same level in a preceding sexp when
+       PAREN-LEVEL is set.
+
+       * progmodes/cc-mode.el (c-basic-common-init): Turn on syntax-table
+       text property lookup only when it's needed.
+
+       * progmodes/cc-langs.el, cc-engine.el, cc-fonts.el, cc-mode.el:
+       Change the policy for paren marked angle brackets to be more
+       persistent; once marked they remain marked even when they're found
+       to be unbalanced in the searched region.  This should keep the
+       paren syntax around even when individual lines are refontified in
+       multiline template arglists.
+
+       (c-parse-and-markup-<>-arglists): New dynamically bound variable
+       to control markup so that incorrect angle bracket arglists aren't
+       marked in contexts where the correct value for
+       `c-disallow-comma-in-<>-arglists' isn't known.
+
+       (c-forward-<>-arglist, c-forward-<>-arglist-recur): The reparse
+       argument has become `c-parse-and-markup-<>-arglists'.
+
+       (c-remove-<>-arglist-properties): Remove - no longer used.
+
+       (c-after-change-check-<>-operators): New function used on
+       `after-change-functions' to avoid that "<" and ">" characters that
+       are part of longer operators have paren syntax.
+
+       (c-<>-multichar-token-regexp): New language variable used by
+       `c-after-change-check-<>-operators'.
+
+       (c-after-change): Call `c-after-change-check-<>-operators'.
+
+       (c-font-lock-<>-arglists): Use the context properties set by
+       `c-font-lock-declarations' to set `c-disallow-comma-in-<>-arglists'
+       correctly to avoid doing invalid markup.
+
+       (c-font-lock-declarations): Remove code that undoes the invalid
+       markup done by `c-font-lock-<>-arglists'.
+
+       (c-complex-decl-matchers): `c-font-lock-<>-arglists' now runs
+       after `c-font-lock-declarations'.
+
+       * progmodes/cc-engine.el (c-syntactic-skip-backward):
+       Add paren-level feature.
+
+       (c-guess-basic-syntax): Improve the anchor position for
+       `template-args-cont' in nested template arglists.  There's still
+       much to be desired in this area, though.
+
+2005-12-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-cmds.el, cc-engine.el, cc-langs.el, cc-vars.el:
+       Make the "Text Filling and Line Breaking" commands work for AWK buffers.
+
+2005-12-08  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       * progmodes/cc-defs.el, cc-engine.el (c-mode-is-new-awk-p):
+       Removed; (c-major-mode-is 'awk-mode) can be used instead now.
+
+       * progmodes/cc-mode.el: Always set up AWK mode since emacsen where
+       it doesn't work no longer are supported.
+
+       * progmodes/cc-mode.el, cc-styles.el, cc-vars.el, cc-defs.el
+       * cc-engine.el, cc-fonts.el, cc-langs.el, cc-cmds.el: CC Mode now
+       requires support for the syntax-table' text property, which rules
+       out Emacs 19 and XEmacs < 21.4.  Removed various compatibility
+       cruft associated with those versions.
+
+       * progmodes/cc-defs.el, cc-fix.el: CC Mode now requires support
+       for the `syntax-table' text property, which rules out Emacs 19 and
+       XEmacs < 21.4.  Removed various compatibility cruft associated
+       with those versions.
+
+       * progmodes/cc-vars.el (c-emacs-features): CC Mode now requires
+       support for the `syntax-table' text property.
+
+       * progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove the
+       variable and use an extra quoted face name instead.  All the
+       emacsen flavors handle that correctly.
+
+       * progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare)
+       (c-font-lock-declarators, c-font-lock-declarations)
+       (c-complex-decl-matchers, c-basic-matchers-after): Use a text
+       property to mark the items in in declarator lists to handle
+       refontification inside multiline declarations better.
+
+       * progmodes/cc-fonts.el (c-font-lock-declarations): Recognize a
+       construct like "a * b = c;" as a declaration.
+
+2005-12-08  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-use-hyper-key): Replace by ...
+       (cua-rectangle-modifier-key): ... this.  New defcustom.  Can now
+       select either meta, hyper, or super modifier for rectangle commands.
+       (cua--rectangle-modifier-key): New defvar.
+       (cua--M/H-key): Use it.  Remove special case for `space'.
+       (cua--init-keymaps): Initialize it from cua-rectangle-modifier-key
+       on X, to meta otherwise.  Always bind C-return to toggle
+       rectangle.  Pass ?\s instead of `space' to cua--M/H-key.
+
+       * emulation/cua-rect.el (cua-help-for-rectangle):
+       Use cua--rectangle-modifier-key.  Handle super modifier too.
+       (cua--init-rectangles): Always bind C-return to toggle rectangle.
+       Pass ?\s instead of `space' to cua--M/H-key and cua--rect-M/H-key.
+
+       * ido.el: Move Acknowledgements and History after Commentary.
+       Minor changes to Commentary.
+
+       * emulation/cua-base.el (cua--select-keymaps): Enable repeat
+       keymap if cua--prefix-override-timer is `shift'.
+       (cua--shift-control-prefix): New function; emulate "type prefix
+       key twice" functionality to handle shifted prefix key override.
+       (cua--shift-control-c-prefix, cua--shift-control-x-prefix):
+       New commands.
+       (cua--init-keymaps): Bind them to S-C-c and S-C-x.
+
+2005-12-08  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-insert-heading): Try to do items before
+       headings.
+       (org-agenda-mode): Quote `org-agenda-mode-hook'.
+       (org-insert-item): New function.
+       (org-renumber-ordered-list): Don't skip to higher level lists.
+
+2005-12-08  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-mode-map): Bind M-TAB to `Info-prev-reference'.
+
+       * button.el (button-buffer-map): Bind M-TAB to `backward-button'.
+
+       * wid-edit.el (widget-keymap): Bind M-TAB to `widget-backward'.
+
+       * pcvs.el (defun-cvs-mode): Put `definition-name' property on
+       the constructed function name fun-1.
+
+       * cus-edit.el (custom-add-parent-links): Filter out custom-group-link,
+       because such links don't lead to parent documentation.
+
+2005-12-08  Kenichi Handa  <handa@m17n.org>
+
+       * descr-text.el (describe-char): Use *Help-2* buffer if the
+       current buffer is *Help*.  Call describe-text-properties while
+       setting the original buffer.
+
+2005-12-07  Bill Wohler  <wohler@newt.com>
+
+       * files.el (auto-mode-alist): Remove mh-letter-mode.  Unnecessary,
+       and causes problems with non-MH users (such as Gnus users).
+
+2005-12-08  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-find-file-unhook): Delete variable.
+       (gdb-set-gud-minor-mode, gdb-set-gud-minor-mode): Delete functions.
+       (gdb-set-gud-minor-mode-existing-buffers, gdb-init-2): Use GDB
+       command "info sources".  Move calls to GDB command "list".
+       (gdb-find-file-hook): Just use gdb-source-file-list.
+       (gdb-source-file-regexp): Use regexp for pre-GDB 6.4.
+       (gdb-source-file-regexp-1): New regexp for GDB 6.4+ only.
+       (gdb-set-gud-minor-mode-existing-buffers-1): Use it.
+       (gdb-data-list-register-values-handler): Use correct trigger name.
+
+2005-12-07  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-completion-map): Rename from ido-mode-map.
+       (ido-common-completion-map, ido-file-completion-map)
+       (ido-file-dir-completion-map, ido-buffer-completion-map):
+       Rename from ido-mode-....-map.
+       (ido-init-completion-maps): Rename from ido-init-mode-maps.
+       (ido-setup-completion-map): Rename from ido-define-mode-map.
+       (ido-read-internal): Bind minibuffer-local-filename-completion-map
+       to ido-completion-map.
+
+2005-12-07  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el
+       (set-display-table-and-terminal-coding-system): If the coding
+       system specified in `unibyte-display' property is different from
+       the arg coding-system, don't setup standard-display-table.
+
+2005-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/edebug.el (edebug-skip-whitespace): read1:lread.c says
+       that comments end at \n, regardless of selective-display.
+
+2005-12-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-error-regexp, gdb-first-post-prompt)
+       (gdb-version): New variables.
+       (gdb-source-file-list, gdb-register-names)
+       (gdb-changed-registers): New variables for use with GDB 6.4+.
+       (gdb-ann3): Replace with...
+       (gdb-init-1, gdb-init-2): ...two new functions.
+       (gdba, gdb-prompt): Call gdb-init-1.
+       (gdb-get-version): New function.  Call gdb-init-2 from here.
+       (gud-watch): Make it work with mouse events too.
+       (gdb-post-prompt): Don't add to queue until GDB version is known.
+       (gdb-speedbar-expand-node, gdb-post-prompt, gdb-registers-mode)
+       (gdb-locals-mode): Use gdb-version.
+       (gdb-memory-format-map, gdb-memory-unit-map)
+       (gdb-locals-watch-map): Rename from gdb-*-*-keymap.
+       (gdb-locals-font-lock-keywords-1)
+       (gdb-locals-font-lock-keywords-2): New variables.
+       (gdb-find-file-hook): Make it work with GDB 6.4+ too.
+       (gdb-set-gud-minor-mode-existing-buffers-1)
+       (gdb-var-list-children-1, gdb-var-list-children-handler-1)
+       (gdb-var-update-1, gdb-var-update-handler-1)
+       (gdb-data-list-register-values-handler)
+       (gdb-data-list-register-values-custom)
+       (gdb-get-changed-registers, gdb-get-changed-registers-handler)
+       (gdb-stack-list-locals-handler, gdb-get-register-names):
+       New functions for use with GDB 6.4+.
+       (gdb-locals-watch-map-1): New variable for use with GDB 6.4+.
+       (gdb-source-file-regexp, gdb-var-list-children-regexp-1)
+       (gdb-var-update-regexp-1, gdb-data-list-register-values-regexp)
+       (gdb-stack-list-locals-regexp)
+       (gdb-data-list-register-names-regexp): New regexps for use with
+       GDB 6.4+.
+
+2005-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/cc-defs.el (c-emacs-features): Don't assume point-min==1.
+
+2005-12-06  Nozomu Ando  <nand@mac.com>
+
+       * mail/smtpmail.el (smtpmail-try-auth-methods): Make password
+       prompts work for AUTH PLAIN.  Also reported by Steve Allan
+       <seallan@verizon.net>.
+
+2005-12-06  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
+
+       * frame.el (set-frame-parameter): Add doc string.
+
+2005-12-06  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-occur-highlights): New variable.
+       (org-highlight-new-match, org-remove-occur-highlights): New functions.
+       (org-highlight-sparse-tree-matches): New option.
+       (org-do-occur): New function.
+       (org-get-heading): Make it work also at beginning of line.
+       (org-category-table): New variable.
+       (org-get-category-table, org-get-category)
+       (org-camel-to-words, org-link-search): New functions.
+       (org-select-this-todo-keyword): New variable.
+       (org-todo-list): New command.
+       (org-shiftright, org-shiftleft): New commands.
+       (org-agenda-todo): Add prefix argument.
+       (org-show-hierarchy-above): New option.
+       (org-show-todo-tree): Numerical prefix creates tree for specific
+       TODO keyword.
+       (org-outline-level): New function, to assign a level to plain
+       lists items.
+       (org-cycle-include-plain-lists): New option.
+       (org-mode): Use `org-outline-level' as value of `outline-level'.
+       (org-cycle): Temporarily switch `outline-regexp' if
+       `org-cycle-include-plain-lists' is non-nil.
+       (org-start-icalendar-file): Fix format bug.
+       (org-agenda-get-day-entries): Create category table.
+       (org-agenda-get-todos, org-agenda-get-timestamps)
+       (org-agenda-get-deadlines, org-agenda-get-scheduled)
+       (org-agenda-get-blocks): Use `org-get-category'.
+       (org-context-in-file-links): Rename from
+       `org-line-numbers-in-file-links'.
+
+2005-12-06  Romain Francoise  <romain@orebokech.com>
+
+       * window.el (balance-windows): Delete extraneous third arg in call
+       to `enlarge-window'.
+
+2005-12-06  Kenichi Handa  <handa@m17n.org>
+
+       * international/kinsoku.el (kinsoku-longer): Check eolp, not eobp.
+
+2005-12-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-handler)
+       (gdb-var-evaluate-expression-handler, gdb-frame-handler)
+       (gdb-var-list-children-handler, gdb-var-update-handler):
+       Current buffer is already gdb-partial-output-buffer, don't
+       make it current again.
+
+2005-12-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buff-menu.el (Buffer-menu-use-frame-buffer-list): New user option.
+       (list-buffers-noselect): Use it.
+
+2005-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mail/sendmail.el: Remove unnecessary leading-star in docstrings.
+       (mail-yank-ignored-headers): Use regexp-opt.
+       (mail-mode-map): Move initialization into declaration.
+       (mail-sent-via): Remove unused shadowed var `to-line'.
+       (mail-mailer-swallows-blank-line): Use with-temp-buffer.
+       (mail-bury, sendmail-send-it, mail-do-fcc): Use with-current-buffer.
+       (mail-do-fcc): Use dolist and push.
+       (mail-mode-fill-paragraph): Pass the arg to fill-region-as-paragraph.
+       (mail-yank-ignored-headers): Don't autoload.
+
+2005-12-05  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (set-language-info-internal): New fun.
+       (set-language-info): Call set-language-info-internal to update
+       language-info-alist.  If LANG-ENV is the current one, call
+       set-language-environment to make INFO effective now.
+       (set-language-info-alist): Likewise.
+       (locale-language-names): With locale "en", use English
+       lang. env. but set the default codings to iso-8859-1.
+
+2005-12-04  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-use-inferior-io-buffer)
+       (gdb-speedbar-auto-raise): Echo new state in minibuffer.
+       (gdb-var-create-handler, gdb-assembler-custom): Use search-forward
+       for plain strings.
+       (gdb-frames-mode): Remove redundant call to font-lock-mode.
+       (gdb-all-registers): Rename from toggle-gdb-all-registers.
+       Create registers buffer if necessary.  Echo new state in minibuffer.
+       (gdb-registers-mode-map, gdb-registers-mode): Use gdb-all-registers.
+
+2005-12-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * info.el (Info-fontify-node): Match external links using
+       non-directory part of filename.
+
+2005-12-04  Juri Linkov  <juri@jurta.org>
+
+       * font-core.el (global-font-lock-mode): Use define-global-minor-mode
+       instead of easy-mmode-define-global-mode.  Add `:group font-lock'.
+       (font-lock-mode): Replace `:group font-lock' with `nil nil nil'
+       because there is no customization option for it.
+
+       * font-lock.el (lisp-font-lock-keywords-1):
+       Add define-global-minor-mode.
+
+       * emacs-lisp/autoload.el (make-autoload): Add define-global-minor-mode.
+
+       * emacs-lisp/derived.el (define-derived-mode): Put `definition-name'
+       properties on the constructed variable names.
+
+       * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation):
+       Put `definition-name' properties on the constructed function names
+       next-sym and prev-sym.
+
+       * emacs-lisp/find-func.el (find-function-regexp):
+       Add define-global-minor-mode.  Replace `easy-mmode-define-global-mode'
+       with `easy-mmode-define-[a-z-]+'.  Add easy-menu-define.
+       (find-variable-regexp): Add easy-mmode-defmap, easy-mmode-defsyntax
+       and easy-menu-define.
+
+       * emacs-lisp/lisp-mode.el: Put `doc-string-elt' property on
+       easy-mmode-define-global-mode and define-global-minor-mode.
+       (lisp-imenu-generic-expression): Add define-global-minor-mode.
+
+       * progmodes/cwarn.el (global-cwarn-mode): Use define-global-minor-mode
+       instead of easy-mmode-define-global-mode.
+
+       * progmodes/idlw-shell.el (idlwave-shell-electric-debug-mode):
+       Use define-minor-mode instead of easy-mmode-define-minor-mode.
+
+       * cus-edit.el (customize-group, customize-group-other-window):
+       Filter out autoloaded options from the group completion list by
+       using heuristics that autoloaded groups don't have `custom-autoload'
+       property on their symbols (they have only `custom-loads').
+
+       * simple.el (completion-setup-function): Put completions-common-part
+       face on complete completion string too (i.e. completion string
+       without completions-first-difference face).
+
+       * man.el (Man-section-regexp): Add 0-9 to support "3X11" sections.
+
+2005-12-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * view.el (view-mode): Doc fix.
+
+       * disp-table.el (standard-display-european): Add to the warning
+       message a reference to the doc string.
+
+       * play/yow.el (apropos-zippy): Call print-help-return-message,
+       similar to other Help and Apropos commands.
+
+       * help.el (print-help-return-message): If pop-up-frames is
+       non-nil, set up help-return-method to delete the help window and,
+       possibly, its frame as well, and don't display message about
+       scrolling the help window.  Doc fix.
+       (help-return-method): Doc fix.
+
+2005-12-03  Martin Rudalics  <rudalics@gmx.at>
+
+       * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression): Fix bug
+       whereby names of length one or names starting with a
+       symbol-constituent character would not be returned.
+
+2005-12-03  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * subr.el (atomic-change-group): Add edebug and indentation spec.
+
+2005-12-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * completion.el (save-completions-file-name): Fix typo in last change.
+
+2005-12-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * info.el: Move back/forward history to the beginning of the tool bar.
+
+2005-12-02  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el (eval-when-compile): Remove unnecessary load of cl.
+       Add fset of allout-real-isearch-abort during compile to fix
+       byte-compilation warnings.
+       (allout-mode-p): Move definition of this macro above all uses, or
+       byte compilation in barren Emacs (eg, during Emacs build) will
+       lack the definition.
+       (allout-mode): Move this variable above any uses, or byte
+       compilation will fail.
+       (allout-resolve-xref): Remove use of personal file-reference function.
+       (allout-toggle-current-subtree-encryption): Do the current (ie,
+       visible containing) topic, rather than nearest around point.  Doc fix.
+       (allout-toggle-subtree-encryption): New function, workhorse that
+       works on nearest topic containing point.
+       (allout-encrypt-string): Signal requirement for newer version of pgg.
+       (allout-resumptions): Doc fix.
+
+2005-12-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/latexenc.el (latex-inputenc-coding-alist): Doc fix.
+
+2005-12-02  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       Consider a misspelling as found in the string search if: (a) misspelling
+       and found string lengths match, or (b) misspelling is found as
+       element in a boundary-chars separated longer string, or (c)
+       ispell-program-name is really ispell and misspelling is found as
+       part of a TeX string.  After successful match move beginning of
+       search region to end of match.  Warn about not found misspellings
+       once the process is done.
+       (flyspell-large-region): Do not set ispell-parser to tex if in TeX mode.
+
+2005-12-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Put gud-finish back on the
+       tool bar (removed inadvertently).
+
+2005-12-02  Juri Linkov  <juri@jurta.org>
+
+       * log-view.el (log-view-diff): Clarify doc string.
+
+2005-12-01  Bill Wohler  <wohler@newt.com>
+
+       * Makefile.in (mh-loaddefs.el): Reinsert Change Log as its absence
+       triggers lm-verify errors.
+
+2005-12-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * simple.el (transient-mark-mode, line-number-mode)
+       (column-number-mode, size-indication-mode): Remove `:require nil'.
+
+2005-12-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-2 to gdb-mouse-until
+       in the margin also.
+       (gdb-breakpoints-mode-map): Use D instead of d for
+       gdb-delete-breakpoint.
+       (gdb-get-frame-number): Require a number to match on.
+       (gdb-threads-mode-map): Add follow-link binding.
+
+2005-11-30  Jason Rumney  <jasonr@gnu.org>
+
+       * isearch.el (isearch-mode-map): Avoid exiting search on
+       language-change event.
+
+2005-11-30  Romain Francoise  <romain@orebokech.com>
+
+       * speedbar.el (speedbar-default-position): New defcustom.
+       (speedbar-frame-reposition-smartly): Use it.
+
+       * dframe.el (dframe-reposition-frame-emacs): Fix position
+       computation for `left' location.
+       Update copyright year.
+
+2005-11-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * help.el (help-map): Move initialization into declaration.
+
+       * emacs-lisp/autoload.el (make-autoload): Handle defgroup specially.
+
+       * help-fns.el (help-argument-name): Don't autoload.
+       It's useless and triggers a bug in cus-dep.el causing ldefs-boot
+       to be re-loaded when customizing the `help' group.
+
+2005-11-30  John Paul Wallington  <jpw@gnu.org>
+
+       * help-fns.el (describe-function-1): Fill arglist output.
+
+2005-11-30  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-rect.el (cua--rectangle-overlays): Make permanent-local.
+       (cua--rectangle-post-command): Cleanup overlays and deactivate mark
+       after revert-buffer (or anything else which kills all local variables).
+
+       * apropos.el (apropos-parse-pattern): Doc fix.
+       Set apropos-regexp directly, rather than expecting callers to do so.
+       (apropos-command, apropos, apropos-value, apropos-documentation):
+       Simplify calls to apropos-parse-pattern.
+
+2005-11-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer)
+       (hi-lock-face-phrase-buffer): Use hi-yellow face.
+       (hi-lock-write-interactive-patterns): Use comment-region.
+
+       * longlines.el (longlines-mode): Add mail-setup-hook.
+
+       * mail/mailheader.el, mail/sendmail.el: Revert 2005-11-17 changes.
+
+       * simple.el (sendmail-user-agent-compose, next-line):
+       Conditionally use hard-newline.
+
+2005-11-29  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * international/latexenc.el (latex-inputenc-coding-alist):
+       Reword doc string.
+
+2005-11-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * help.el (describe-key-briefly, describe-key): Recognize default
+       bindings.
+
+2005-11-29  Romain Francoise  <romain@orebokech.com>
+
+       * view.el (view-inhibit-help-message): New defcustom.
+       (view-mode-enter): Use it.
+
+2005-11-29  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-wind.el (ediff-setup-control-frame, ediff-make-wide-display):
+       Preserve user position.
+
+2005-11-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * font-lock.el: Throw error if facemenu is not loaded to prevent
+       accidental change of loading order in loadup.el.  (Suggested by RMS.)
+
+       * loadup.el: Add comment explaining why facemenu must be loaded
+       before font-lock.
+
+2005-11-28  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el: Change global keybinding for calc-dispatch to "\C-x*".
+       (calc-dispatch-map): Add more keys for `calc-same-interface'.
+
+       * calc/calc-misc.el (calc-dispatch-help): Update docstring.
+
+       * calc/calc-embed.el (calc-do-embedded): Update help message.
+
+       * calc/calc-prog.el (calc-user-define-invokation): Update help message.
+
+2005-11-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * log-edit.el (log-edit-insert-cvs-rcstemplate): Ignore stderr.
+
+       * emacs-lisp/elp.el (elp-not-profilable): Replace interactive-p with
+       called-interactively-p.
+       (elp-profilable-p): Rename from elp-not-profilable-p.
+       Invert result and take into account macros and autoloaded functions.
+       (elp-instrument-function): Update call.
+       (elp-instrument-package): Update call.  Add completion.
+       (elp-pack-number): Use match-string.
+       (elp-results-jump-to-definition-by-mouse): Merge into
+       elp-results-jump-to-definition and then remove.
+       (elp-output-insert-symname): Make help echo text single-line.
+
+       * replace.el (query-replace-map): Move initialization into declaration.
+       (occur-engine): Use with-current-buffer.
+       (occur-mode-goto-occurrence): Make it work for mouse-clicks as well.
+       (occur-mode-mouse-goto): Replace with an alias.
+
+2005-11-28  Juri Linkov  <juri@jurta.org>
+
+       * simple.el (quoted-insert): Let-bind input-method-function to nil.
+
+       * term/w32-win.el: Bind [S-tab] to [backtab].
+
+       * info.el (Info-fontify-node): Set 2nd arg `noerror' of
+       `Info-find-file' to t.
+
+       * replace.el (occur-mode-mouse-goto): Pop, don't switch.
+       (occur-mode-goto-occurrence): Let-bind same-window-buffer-names
+       and same-window-regexps.
+       (occur-next-error): Don't move point for arg 0.
+
+2005-11-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * replace.el (occur-mode-goto-occurrence): Pop, don't switch.
+
+2005-11-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * log-edit.el (log-edit-changelog-use-first): New var.
+       (log-edit-changelog-ours-p): Use it.
+       (log-edit-insert-changelog): Set it with new arg `use-first'.
+       (log-edit-insert-cvs-rcstemplate, log-edit-insert-filenames): New funs.
+       (log-edit-hook): Add them to the list of suggested options.
+
+       * textmodes/flyspell.el (flyspell-last-buffer): New var.
+       (flyspell-accept-buffer-local-defs): Use it to avoid doing silly
+       redundant work.
+       (flyspell-mode-on): Use add-hook for after-change-functions.
+       (flyspell-mode-off): Use remove-hook for after-change-functions.
+       (flyspell-changes): Make it buffer-local.
+       (flyspell-after-change-function): Make it non-interactive.  Use push.
+       (flyspell-post-command-hook): Check input-pending-p while processing
+       the potentially long list of buffer changes.
+
+2005-11-28  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
+
+       * buff-menu.el (list-buffers-noselect): Display the selected
+       frame's buffer list, not the global one.
+
+2005-11-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xt-mouse.el (xterm-mouse-event): Set last-input-event so
+       that (list last-input-event) works as in interactive spec.
+
+2005-11-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * loadup.el ("facemenu"): Load facemenu before font-lock, because
+       `facemenu-keymap' needs to be defined when font-lock is loaded.
+       Otherwise, `M-o M-o' is not bound to `font-lock-fontify-block'.
+
+2005-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * completion.el: Remove useless leading * in defcustom docstrings.
+       (save-completions-file-name): Use ~/.emacs.d if available.
+       (completion-standard-syntax-table): Rename from
+       cmpl-standard-syntax-table and fold initialization into declaration,
+       thus removing cmpl-make-standard-completion-syntax-table.
+       (completion-lisp-syntax-table, completion-c-syntax-table)
+       (completion-fortran-syntax-table, completion-c-def-syntax-table): Idem.
+       (cmpl-saved-syntax, cmpl-saved-point): Remove.
+       (symbol-under-point, symbol-before-point)
+       (symbol-under-or-before-point, symbol-before-point-for-complete)
+       (add-completions-from-c-buffer): Use with-syntax-table.
+       (make-completion): Don't return a list of completion entries.
+       Update callers.
+       (cmpl-prefix-entry-head, cmpl-prefix-entry-tail): Use defalias.
+       (completion-initialize): Rename from initialize-completions.
+       (completion-find-file-hook): Rename from cmpl-find-file-hook.
+       (kill-emacs-save-completions): Collect stats here.
+       (save-completions-to-file, load-completions-from-file):
+       Use with-current-buffer.
+       (completion-def-wrapper): Rename from def-completion-wrapper.  Make it
+       into a function.  Move all calls to toplevel.
+       (completion-lisp-mode-hook): New fun.
+       (completion-c-mode-hook, completion-setup-fortran-mode):
+       Set the syntax-table here.  Use local-set-key.
+       (completion-saved-bindings): New var.
+       (dynamic-completion-mode): Make it into a proper minor mode.
+       (load-completions-from-file): Remove unused var `num-uses'.
+
+       * emacs-lisp/cl-macs.el (defstruct): Don't define the default
+       constructor if it is explicitly overridden.
+
+       * complete.el (PC-completion-as-file-name-predicate):
+       Use minibuffer-completing-file-name.
+       (partial-completion-mode): Use find-file-not-found-functions.
+       (PC-lisp-complete-symbol): Use with-syntax-table.
+       (PC-look-for-include-file): Remove dead setq.
+       (PC-look-for-include-file, PC-expand-many-files, PC-do-completion)
+       (PC-complete): Use with-current-buffer.
+
+       * progmodes/sh-script.el (sh-font-lock-syntactic-keywords): \ doesn't
+       escape single quotes.
+
+2005-11-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * dabbrev.el (dabbrev-completion): Simplify code, by getting rid
+       of `if' whose condition always returned nil.  Doc fix.
+
+       * buff-menu.el (Buffer-menu-revert-function): Make the selected
+       window's buffer the current buffer around the call to
+       `list-buffers-noselect'.  This is necessary to mark that buffer
+       with a `.' in the Buffer Menu when called from Lisp, for instance
+       by Auto Revert Mode.
+
+2005-11-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-stopped): Detect child process when
+       attaching to it.
+       (gdb-pre-prompt): Make sure gdb-error is reset.
+
+       * progmodes/gud.el (gud-gdb-marker-filter): When GDB is invoked
+       with a child process, detect it.
+       (gud-speedbar-buttons): Match regexp more carefully.
+
+2005-11-27  Richard M. Stallman  <rms@gnu.org>
+
+       * mouse.el (mouse-drag-move-window-bottom):
+       Use adjust-window-trailing-edge.
+
+2005-11-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * simple.el (blink-matching-open): Ignore
+       `blink-matching-paren-on-screen' if `show-paren-mode' is enabled.
+       (blink-matching-paren-on-screen): Update docstring.
+
+       * paren.el (show-paren-mode): No longer change
+       `blink-matching-paren-on-screen'.
+
+2005-11-27  John Paul Wallington  <jpw@pobox.com>
+
+       * progmodes/gdb-ui.el (gdb-goto-breakpoint, gdb-frames-select)
+       (gdb-threads-select, gdb-edit-register-value):
+       Use `posn-set-point' instead of `mouse-set-point' because the
+       latter is not fbound when configured without X.
+
+2005-11-27  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-rect.el (cua--highlight-rectangle): Preserve
+       existing face when partially highlighting a TAB in a rectangle.
+
+2005-11-26  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-mode-map): Doc fix.
+       (ido-mode-common-map, ido-mode-file-map)
+       (ido-mode-file-dir-map, ido-mode-buffer-map): New keymaps.
+       (ido-define-mode-map): Rewrite.  Select one of the new maps as
+       parent for ido-mode-map instead of building from scratch.
+       (ido-init-mode-maps): New defun to initialize new maps.
+       (ido-mode): Call it.
+       (ido-switch-buffer): Doc fix -- use \<ido-mode-buffer-map>.
+       (ido-find-file): Doc fix -- use \<ido-mode-file-map>.
+
+2005-11-26  John Paul Wallington  <jpw@pobox.com>
+
+       * arc-mode.el (archive-extract): Use `posn-set-point' instead of
+       `mouse-set-point' because the latter is not fbound when configured
+       without X.
+
+2005-11-26  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * files.el (file-relative-name): Doc fix.
+
+2005-11-26  Kurt Hornik  <Kurt.Hornik@wu-wien.ac.at>
+
+       * progmodes/octave-inf.el (inferior-octave-startup): Force a
+       non-empty string for secondary prompt PS2.
+
+2005-11-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/compile.el (compilation-setup): Fix last change.
+
+2005-11-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-info-breakpoints-custom)
+       (gdb-mouse-toggle-breakpoint-margin)
+       (gdb-mouse-toggle-breakpoint-fringe, gdb-threads-select):
+       Add gdb-server-prefix to keep out of command history.
+       (gdb-edit-register-value): New function.
+       (gdb-registers-mode-map): Bind mouse-2 and RET to it.
+       (gdb-info-registers-custom): Use above map.
+
+2005-11-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (enable-theme): Signal error if argument is not a
+       theme.  Don't recalculate a face if it's not loaded yet.
+
+       * cus-face.el (custom-theme-set-faces): Don't change saved-face if
+       the `user' theme is in effect.
+
+       * info.el (Info-on-current-buffer): Record actual filename in
+       Info-current-file, instead of t, or a fake filename if a non-file
+       buffer.  Make autoload.
+       (Info-find-node, Info-revert-find-node): No need to check for
+       Info-current-file nil.
+       (Info-set-mode-line, Info-up, Info-copy-current-node-name):
+       Info-current-file is now never `t'.
+       (Info-fontify-node): Many simplifications due to Info-current-file
+       always being valid.  Use Info-find-file to find node filename.
+
+2005-11-25  David Kastrup  <dak@gnu.org>
+
+       * longlines.el (longlines-wrap-line): Reorder wrapping to "insert
+       new character, then delete" in order to preserve markers.
+
+2005-11-25  David Ponce  <david@dponce.com>
+
+       * recentf.el (recentf-arrange-by-rule): Handle a special
+       `auto-mode-alist'-like "strip suffix" rule.
+       (recentf-build-mode-rules): Handle second level auto-mode entries.
+
+2005-11-25  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-keym.el (viper-ESC-key): Use different values in terminal and
+       window modes.
+
+       * viper.el (viper-emacs-state-mode-list): Delete mail-mode, add
+       jde-javadoc-checker-report-mode.
+
+       * ediff-wind (ediff-make-wide-display): Slight simplification.
+
+       * ediff.el (ediff-date): Change the date of last update.
+
+2005-11-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
+       Use define-minor-mode, and make it a local mode.  Turn on font-lock.
+       (hi-lock-mode): New global minor mode.
+       (turn-on-hi-lock-if-enabled): New function.
+       (hi-lock-line-face-buffer, hi-lock-face-buffer, hi-lock-set-pattern):
+       Change arguments to regexp and face instead of a font-lock pattern.
+       Directly set face property, instead of refontifying.
+       (hi-lock-font-lock-hook): Check if font-lock is being turned on.
+       (hi-lock-find-patterns): Use line-number-at-pos.
+
+       (hi-lock-face-phrase-buffer): Call hi-lock-buffer-mode.  Use new
+       arguments for hi-lock-set-pattern.
+       (hi-lock-unface-buffer, hi-lock-set-file-patterns):
+       Call font-lock-fontify-buffer.
+       (hi-lock-find-file-hook, hi-lock-current-line)
+       (hi-lock-refontify, hi-lock-set-patterns): Delete unused functions.
+
+       (hi-lock-font-lock-hook): Turn off hi-lock when font lock is
+       turned off.
+
+       * progmodes/compile.el (compilation-setup): Don't fiddle with
+       font-lock-defaults.
+
+2005-11-25  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-handler)
+       (gdb-var-list-children-handler): Find values for all variable
+       objects.  gud-speedbar-buttons decides whether to display them.
+
+2005-11-24  Romain Francoise  <romain@orebokech.com>
+
+       * info.el (Info-speedbar-fetch-file-nodes): Prefix temporary
+       buffer name with a space.
+
+2005-11-24  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-export-plain-list-max-depth): Rename from
+       `org-export-local-list-max-depth'.  Change default value to 3.
+       (org-auto-renumber-ordered-lists)
+       (org-plain-list-ordered-item-terminator): New options.
+       (org-at-item-p, org-beginning-of-item, org-end-of-item)
+       (org-get-indentation, org-get-string-indentation)
+       (org-maybe-renumber-ordered-list, org-renumber-ordered-list):
+       New functions.
+       (org-move-item-down, org-move-item-up): New commands.
+       (org-export-as-html): New classes for CSS support.  Bug fix in
+       regular expression detecting fixed-width regions.  Respect
+       `org-local-list-ordered-item-terminator'.
+       (org-set-autofill-regexps, org-adaptive-fill-function): "1)" is
+       also a list item.
+       (org-metaup, org-metadown, org-shiftmetaup, org-shiftmetadown):
+       New item moving functions.
+
+2005-11-24  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-repeat): With empty search ring set
+       `isearch-error' to the error string instead of signaling error
+       with the function `error'.
+
+2005-11-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Make modifier `ctrl' an alias for `control'.
+
+2005-11-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-speedbar-auto-raise): New function
+       and variable.
+       (gdb-var-create-handler, gdb-var-list-children-handler):
+       Don't match on "char **...".
+       (gdb-var-update-handler): Find values for all variable objects.
+       (gdb-info-frames-custom): Identify frames by leading "#".
+
+       * progmodes/gud.el (gud-speedbar-menu-items): Add
+       gdb-speedbar-auto-raise as radio button.
+       (gud-speedbar-buttons): Raise speedbar if requested.
+       Don't match on "char **...".
+       (gud-speedbar-buttons): Add (pointer) value for non-leaves.
+       Make it editable.
+
+2005-11-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * info.el (Info-fontify-node): Handle the case where
+       Info-current-file is t.
+
+2005-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (blink-matching-open): Fix off-by-one in last change.
+
+2005-11-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Don't change default directory.
+
+2005-11-22  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (Custom-reset-standard): Make it handle Custom group
+       buffers correctly.  (It used to throw an error in such buffers.)
+       Make it ask for confirmation in group buffers and other Custom
+       buffers containing more than one customization item.
+
+2005-11-22  John Paul Wallington  <jpw@gnu.org>
+
+       * net/goto-addr.el (goto-address-fontify): Put `follow-link'
+       property on mail and url overlays.
+       (goto-address-at-point): Use `posn-set-point' instead of
+       `mouse-set-point' because the latter is not fbound when configured
+       without X.
+
+2005-11-22  Lars Hansen  <larsh@soem.dk>
+
+       * ls-lisp.el (ls-lisp-parse-symlink): Delete.
+       (ls-lisp-classify, ls-lisp-format): Delete call to
+       ls-lisp-parse-symlink.
+       (ls-lisp-handle-switches): Handle symlinks to directories as
+       directories when ls-lisp-dirs-first in non-nil.
+
+2005-11-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * startup.el (command-line): Make sure that loaddefs.el is handled
+       correctly in load-history.
+
+2005-11-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-locals-watch-keymap): New local map.
+       (gdb-struct-string, gdb-array-string): New constants.
+       (gdb-info-locals-handler): Use them.
+       (gdb-reset): Reset gdb-var-list to nil.
+
+2005-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-font-lock-paren): Handle continued lines
+       in patterns.
+
+2005-11-21  Juri Linkov  <juri@jurta.org>
+
+       * custom.el (defcustom): Update link types in docstring.
+
+2005-11-20  Martin Rudalics  <rudalics@gmx.at>
+
+       * custom.el (defgroup): Add doc-string-elt info.
+
+       * widget.el (define-widget): Don't use declare for the doc-string-elt.
+
+2005-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * newcomment.el (comment-enter-backward): Fix last fix.
+
+       * simple.el (blink-matching-open):
+       * paren.el (show-paren-function): Allow new paren-class info.
+
+2005-11-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faces.el: Revert 2005-11-17 change.  :ignore-defface is now
+       handled automagically.
+
+2005-11-20  Andreas Schwab  <schwab@suse.de>
+
+       * descr-text.el (describe-char): When copying overlays put them
+       over the full char description instead of just the first character
+       of it.
+
+2005-11-20  Juri Linkov  <juri@jurta.org>
+
+       * simple.el (what-cursor-position):
+       * descr-text.el (describe-char): Use Lisp-readable syntax
+       for octal and hex.  Reorder decimal, octal and hex values.
+       Remove excess whitespace in the output.  Use `=' in `column='
+       like in `point=' and `Hscroll='.
+
+       * international/mule-cmds.el (encoded-string-description):
+       Use Lisp-readable syntax for hex.
+
+2005-11-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * newcomment.el (comment-enter-backward): Handle the case where the
+       comment is closed by EOB.
+
+2005-11-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-before-revert-hook)
+       (longlines-after-revert-hook): New functions.
+       (longlines-mode): Turn off longlines temporarily when reverting.
+       Add a message-setup-hook.
+       (longlines-decode-buffer): New function.
+       (longlines-wrap-line): Preserve marker positions.
+
+2005-11-19  Andreas Schwab  <schwab@suse.de>
+
+       * emacs-lisp/shadow.el: Handle compressed files.
+
+2005-11-19  Romain Francoise  <romain@orebokech.com>
+
+       * net/browse-url.el (browse-url-default-browser): Signal an error
+       if no usable browser can be found, rather than try to load w3.
+
+2005-11-16  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el (rcirc-mangle-text): Add bold face property without
+       replacing existing properties.
+       (rcirc-my-nick, rcirc-other-nick, rcirc-server)
+       (rcirc-nick-in-message, rcirc-prompt): Use min-colors and remove
+       tty specs.
+       (rcirc-server-prefix, rcirc-server): New faces.
+       (rcirc-url-regexp): Generate with rx macro.
+       (rcirc-last-server-message-time): New variable.
+       (rcirc-filter): Record time of last message.
+       (rcirc-keepalive): Kill processes that did not send a message
+       since the last ping.
+       (rcirc-mode): Give rcirc-topic a local binding here.
+
+2005-11-19  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * subr.el (read-passwd): Fontify the prompt as we do with other
+       prompts.
+
+2005-11-19  Ryan Yeske  <rcyeske@gmail.com>
+
+       * ffap.el (ffap-menu-rescan): Use inhibit-read-only instead of
+       binding buffer-read-only to nil.
+
+2005-11-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * complete.el (partial-completion-mode):
+       Mention completion-auto-help in the doc string.
+
+       * man.el (Man-highlight-references): Doc fix.  Reformat code in a
+       more Lisp-ish way.
+
+2005-11-19  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>  (tiny change)
+
+       * ls-lisp.el (ls-lisp-format-file-size): Format file size with 9
+       digits, not 8, to avoid misalignment for files larger than 100MB.
+
+2005-11-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * menu-bar.el (menu-bar-describe-menu) <list-keybindings>:
+       Mention "keyboard shortcuts" in the help text.
+
+2005-11-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * startup.el (fancy-splash-default-action): Discard only
+       mouse-down and succeeding mouse-up events in the splash screen
+       window so that drag-n-drop event can be processed.
+
+2005-11-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-mode): Add hacks for mail-mode and
+       message-mode.
+
+2005-11-18  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-table-sort-lines): New command.
+       (org-tbl-menu): Add entry for `org-table-sort-lines'.
+       (org-add-file): Command removed, use `org-agenda-file-to-front'
+       instead.
+       (org-export-icalendar): Use `org-icalendar-combined-name'.
+       (org-cycle-agenda-files, org-agenda-file-to-end)
+       (org-agenda-file-to-front): New commands.
+       (org-table-tab-jumps-over-hlines, org-export-html-style):
+       New options.
+       (org-table-next-field): Use `org-table-tab-jumps-over-hlines'.
+       (org-at-table.el-p, org-set-autofill-regexps, org-html-protect):
+       New functions.
+       (org-fill-paragraph): Call `org-table-align' in tables.
+       (org-mode): Call `org-set-autofill-regexps'.
+       (org-export-as-html): Support for local handformatted lists.
+       Modified to produce valid HTML 4.0.  Use `org-export-html-style'.
+       (org-export-local-list-max-depth): New option.
+       (org-html-expand): Use `org-html-protect'.
+
+2005-11-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-install-speedbar-variables): Bind gud-pp
+       to "p".
+       (gdb): Move definition of gud-pp to...
+
+       * progmodes/gdb-ui.el (gdb-ann3): ...here.  Make it work in the
+       speedbar.
+       (gdb-find-watch-expression): New function.
+
+2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * faces.el (face-attribute, set-face-attribute): Mention existence
+       of `:ignore-defface' setting in docstring.
+
+2005-11-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (completion-setup-function): Fix last change.
+
+2005-11-17  John Paul Wallington  <jpw@pobox.com>
+
+       * ibuf-ext.el (ibuffer-interactive-filter-by-mode):
+       Use `posn-set-point' instead of `mouse-set-point' because the
+       latter is not fbound when configured without X.
+
+       * comint.el (comint-insert-input): Likewise.
+
+2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (hard-newline): New variable.
+       (sendmail-user-agent-compose, next-line): Use it.
+
+       * mail/sendmail.el (mail-setup, mail-send, mail-insert-from-field)
+       (sendmail-send-it, mail-do-fcc, mail-cc, mail-bcc, mail-fcc)
+       (mail-mail-reply-to, mail-mail-followup-to)
+       (mail-position-on-field, mail-signature, mail-yank-original)
+       (mail-attach-file): Likewise.
+
+       * mail/mailheader.el (mail-header-format)
+       (mail-header-format-function): Likewise.
+
+       * add-log.el (add-change-log-entry, change-log-merge): Likewise.
+
+2005-11-17  Juri Linkov  <juri@jurta.org>
+
+       * font-lock.el (font-lock-faces): Rename this defgroup from
+       `font-lock-highlighting-faces'.
+       (font-lock-comment-face, font-lock-comment-delimiter-face)
+       (font-lock-string-face, font-lock-doc-face)
+       (font-lock-keyword-face, font-lock-builtin-face)
+       (font-lock-function-name-face, font-lock-variable-name-face)
+       (font-lock-type-face, font-lock-constant-face)
+       (font-lock-warning-face, font-lock-negation-char-face)
+       (font-lock-preprocessor-face)
+       (font-lock-regexp-grouping-backslash)
+       (font-lock-regexp-grouping-construct): Rename :group from
+       `font-lock-highlighting-faces' to `font-lock-faces'.
+
+       * cus-edit.el (lisp, c, tex):
+       * progmodes/ada-mode.el (ada):
+       * progmodes/asm-mode.el (asm):
+       * progmodes/cperl-mode.el (cperl-faces):
+       * progmodes/cpp.el (cpp):
+       * progmodes/dcl-mode.el (dcl):
+       * progmodes/f90.el (f90):
+       * progmodes/fortran.el (fortran):
+       * progmodes/icon.el (icon):
+       * progmodes/idlwave.el (idlwave-misc):
+       * progmodes/m4-mode.el (m4):
+       * progmodes/make-mode.el (makefile):
+       * progmodes/meta-mode.el (meta-font):
+       * progmodes/modula2.el (modula2):
+       * progmodes/octave-mod.el (octave):
+       * progmodes/pascal.el (pascal):
+       * progmodes/perl-mode.el (perl):
+       * progmodes/prolog.el (prolog):
+       * progmodes/ps-mode.el (PostScript-edit):
+       * progmodes/scheme.el (scheme):
+       * progmodes/sh-script.el (sh-script):
+       * progmodes/simula.el (simula):
+       * progmodes/tcl.el (tcl):
+       * textmodes/nroff-mode.el (nroff):
+       * textmodes/reftex-vars.el (reftex-fontification-configurations):
+       * textmodes/sgml-mode.el (sgml):
+       * textmodes/texinfo.el (texinfo):
+       Add :link (custom-group-link font-lock-faces) to defgroup.
+
+       * hi-lock.el (hi-lock): Rename this defgroup from
+       `hi-lock-interactive-text-highlighting'.  Change parent group from
+       `faces' to `font-lock'.  Add link to the manual.
+       (hi-lock-mode, hi-lock-file-patterns-range)
+       (hi-lock-exclude-modes, hi-lock-faces): Rename :group from
+       `hi-lock-interactive-text-highlighting' to `hi-lock'.
+       (hi-lock-faces): Add :group `faces'.
+
+       * cus-edit.el (custom-variable-prompt): Clarify the code.
+
+       * faces.el (face-read-string): Set the default value arg of
+       completing-read.
+
+2005-11-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * rfn-eshadow.el (file-name-shadow-properties)
+       (file-name-shadow-tty-properties, file-name-shadow-mode):
+       Remove autoloads, because the file is now preloaded.
+
+2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * printing.el (easy-menu-intern): Don't define.
+       (pr-get-symbol): Use easy-menu-intern only if defined.
+
+       * simple.el (blink-matching-open): Simplify a bit.
+       (completion-setup-function): Fix the case of partial-completion-mode
+       when the minibuffer's contents start with "-".
+       Obey completion-base-size-function even when
+       minibuffer-completing-file-name is non-nil.
+
+2005-11-16  Richard M. Stallman  <rms@gnu.org>
+
+       * net/eudcb-ph.el (eudc-ph-open-session):
+       Use set-process-query-on-exit-flag.
+
+       * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-contents.
+
+       * international/ucs-tables.el (ucs-set-table-for-input):
+       Use make-local-variable, not make-variable-buffer-local.
+
+       * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
+       Improve warning message text.
+
+       * savehist.el (savehist-save-hook): Add :group.
+
+       * menu-bar.el (menu-bar-help-menu):
+       Rename Find Extra Packages to External Packages.
+
+       * cus-edit.el (Custom-reset-standard): Verify that
+       :custom-standard-value prop exists before calling it.
+
+       * apropos.el (apropos-calc-scores): Use apropos-pattern.
+
+2005-11-16  Martin Rudalics  <rudalics@gmx.at>
+
+       * wid-edit.el (color): Enclose %t in %{...%}.
+
+       * cus-edit.el (face): Enclose %t in %{...%}.
+
+2005-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * savehist.el (savehist-mode-hook): Re-add the var.
+       (savehist-mode): Use it.
+
+2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/flyspell.el: Fix commenting convention.
+       Remove unnecessary leading * in custom docstrings.
+       (flyspell-emacs): Remove unused var.
+       (flyspell-delete-region-overlays): Use remove-overlays.
+       (flyspell-accept-buffer-local-defs): Use save-current-buffer.
+       (flyspell-debug-signal-no-check, flyspell-debug-signal-changed-checked)
+       (flyspell-debug-signal-pre-word-checked, flyspell-post-command-hook)
+       (flyspell-debug-signal-word-checked): Use with-current-buffer.
+       (make-flyspell-overlay): Don't locally reuse a global name.
+       (flyspell-highlight-incorrect-region)
+       (flyspell-highlight-duplicate-region): Use flyspell-unhighlight-at.
+       (flyspell-check-previous-highlighted-word): Use flyspell-overlay-p.
+       (flyspell-notify-misspell): Remove unused args `start' and `end'.
+       (flyspell-word): Adjust call accordingly.  Use ispell-send-string.
+       Wrap calls to accept-process-output inside with-local-quit since it's
+       often called from a post-command-hook.
+       (flyspell-correct-word, flyspell-auto-correct-word):
+       Use ispell-send-string.
+       (flyspell-xemacs-popup): Remove unused arg `event'.  Update call.
+
+       * calendar/diary-lib.el (diary-list-entries): Also hide the
+       terminating newline.
+
+2005-11-16  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex.el (reftex-use-fonts): Remove the check for
+       window-system, to allow fonts on tty.
+
+2005-11-17  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-item-info): New function.
+       (gud-install-speedbar-variables): Use it to display data type
+       of watch expression as a tooltip in speedbar.
+
+2005-11-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * font-core.el (global-font-lock-mode): Add :version keyword,
+       because default was changed.
+
+       * jka-cmpr-hook.el (auto-compression-mode): Ditto.
+
+       * startup.el (command-line): Use `custom-reevaluate-setting' for
+       `file-name-shadow-mode'.
+
+       * loadup.el: Preload rfn-eshadow.
+
+       * rfn-eshadow.el (file-name-shadow-mode): Set :init-value to t.
+       Add :version keyword.
+       (file-name-shadow-properties, file-name-shadow-tty-properties)
+       (file-name-shadow): Add :version keyword.
+
+       * cus-edit.el (custom-add-parent-links): Fix bug whereby, for
+       instance, `(fringe custom-face)' shadowed `(fringe custom-group)'
+       in the custom-group property of the symbol frames and the fringe
+       group got no link to its parent group frames.
+       Doc fix.
+
+2005-11-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-stop-subjob): New function.
+       (gud-menu-map, gud-tool-bar-map): Use it.
+
+2005-11-16  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/gud.el (gud-menu-map): Let [stop] stop program rather
+       than kill it.
+       (gud-tool-bar-map): Likewise.  Move cont/until/finish buttons
+       to a more useful/logical place.
+
+2005-11-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Make visibility of stop and
+       go buttons complementary.
+
+2005-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * rfn-eshadow.el (rfn-eshadow-regexp): Remove.
+       (rfn-eshadow-sifn-equal): New function.
+       (rfn-eshadow-update-overlay): Rewrite to use substitute-in-file-name.
+
+2005-11-15  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-utils.el (viper-non-word-characters-reformed-vi):
+       Quote `-' in string.
+
+       * viper.el (viper-emacs-state-mode-list): Ensure that
+       rcirc-mode buffers come up in Emacs state.
+
+       * ediff-util.el (ediff-make-temp-file): Use proper file-name-handler
+       operation.
+
+2005-11-15  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (term-termcap-format): Fix typos.
+       (term-down): Fix the negative argument case.
+
+2005-11-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el: Remove face-alias left over from change on
+       2005-08-15.
+       (gdb-ann3): New command gud-go.
+       (menu): Accomodate gdb-mi.el.
+       (gdb-assembler-custom): Make buffer of selected window current
+       so that set-window-point works.
+
+       * progmodes/gud.el (gud-menu-map, gud-tool-bar-map): Re-define
+       buttons and include new ones.
+
+2005-11-16  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/gud.el (gud-tool-bar-item-visible-no-fringe): New function.
+       (gud-menu-map): Use it.
+
+2005-11-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * jka-cmpr-hook.el (auto-compression-mode): Enable it in a way
+       that works correctly for Custom and that does not override a user
+       who disables it.
+
+       * help-mode.el (help-make-xrefs, help-xref-on-pp)
+       (help-xref-interned, help-follow): Make hyperlinks for variables
+       that are unbound, but have a non-nil variable-documentation property.
+
+       * emacs-lisp/derived.el (define-derived-mode): Remove defvar for
+       mode hook.  (It conflicted with defcustoms for some mode hooks.)
+       Use the `variable-documentation' property to give the mode hook a
+       docstring and expand that docstring.
+
+2005-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * savehist.el (savehist-mode): Don't bother with
+       `custom-set-minor-mode'.
+       (savehist-coding-system): Check XEmacs version.
+       (history-length): Declare also at run time.
+       (savehist-mode): Don't emit a message.  Don't run the minor mode hook.
+       Don't set the customize state.
+       (savehist-minibuffer-hook): Special case for when
+       minibuffer-history-variable is equal to t.
+
+2005-11-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files.el (write-file): Refresh VC status.
+
+       * calendar/diary-lib.el (diary-list-entries, diary-show-all-entries)
+       (mark-diary-entries, make-diary-entry): Check default-major-mode rather
+       than fundamental-mode to see if the mode was set.
+
+2005-11-14  Romain Francoise  <romain@orebokech.com>
+
+       * dired-x.el: If `vm-visit-folder' doesn't exist, define it as a
+       dummy function in `eval-when-compile' to avoid compiler warning.
+       Require `man' at compile time.
+
+2005-11-14  Jay Belanger  <belanger@truman.edu>
+
+       * calc-alg.el (calcFunc-write-out-power): Rename it to
+       calcFunc-powerexpand.
+       (math-write-out-power): Rename it to math-powerexpand; have it
+       handle negative exponents.
+       (calc-writeoutpower): Rename it to calc-powerexpand.
+
+       * calc-ext.el: Change calcFunc-writeoutpower and
+       calc-writeoutpower to calcFunc-powerexpand and calc-powerexpand in
+       autoloads.
+       Add calcFunc-ldiv to autoloads.
+
+       * calc-arith.el (calcFunc-ldiv): New function.
+
+       * calc.el (calc-left-divide): New function.
+
+2005-11-14  Juri Linkov  <juri@jurta.org>
+
+       * cus-edit.el (custom-variable-prompt): Set the default value arg
+       of completing-read.
+
+       * cus-dep.el (custom-make-dependencies): Reverse the list of
+       found dependencies.
+
+2005-11-14  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * menu-bar.el (menu-bar-options-menu): Delete "Syntax
+       Highlighting" entry, it is on by default now.
+       (menu-bar-options-save): Do not save global-font-lock-mode.
+
+2005-11-13  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-large-region):
+       Call flyspell-accept-buffer-local-defs.
+
+2005-11-13  Agustin Martin  <agustin.martin@hispalinux.es>
+
+       * textmodes/flyspell.el (flyspell-notify-misspell):
+       Fix misspelling of "Misspelling".
+       (flyspell-process-localwords): New function.
+       (flyspell-large-region): Call flyspell-process-localwords and
+       flyspell-delete-region-overlays.
+       (flyspell-delete-region-overlays): New function.
+       (flyspell-delete-all-overlays): Call that.
+
+2005-11-13  Richard M. Stallman  <rms@gnu.org>
+
+       * help.el (help-for-help-internal): Improve doc of C-h a.
+       (describe-key): Improve prompt; doc fix.
+
+2005-11-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-svn.el (vc-svn-registered): Catch all errors.
+
+       * cus-dep.el (custom-make-dependencies): Typo.
+
+2005-11-13  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-util.el (top): Fix compilation warning.
+
+2005-11-13  Kim F. Storm  <storm@cua.dk>
+
+       * help.el (help-for-help-internal): Fix `a' entry.  Add `d' entry.
+
+2005-11-13  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Move parentheses (again).
+       (gud-speedbar-buttons): Match on "const char *" too.
+
+       * progmodes/gdb-ui.el (gdb-var-create-handler)
+       (gdb-var-list-children-handler): Match on "const char *" too.
+       (gdb-var-evaluate-expression-handler): Match on empty string.
+       (gdb-var-update-handler): Only call
+       gdb-var-evaluate-expression-handler when required.
+
+2005-11-13  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Revert to window-fringes for
+       selected window.  This still doesn't work for speedbar.
+       (gud-speedbar-buttons): Handle string expressions properly.
+
+       * progmodes/gdb-ui.el (gdb-var-evaluate-expression-handler)
+       (gdb-var-create-handler): Handle string expressions properly.
+       (gdb-var-list-children-regexp, gdb-var-list-children-handler):
+       Handle string expressions properly.  Move "type" field into regexp.
+
+2005-11-12  Karl Fogel  <kfogel@red-bean.com>
+
+       * bookmark.el (bookmark-maybe-message): New function to reduce
+       code duplication: invokes `message' iff baud-rate is high enough.
+       (bookmark-write-file): Use above instead of an inline conditional.
+       (bookmark-load): Same.
+
+2005-11-12  Karl Fogel  <kfogel@red-bean.com>
+
+       * bookmark.el (bookmark-write-file): Don't visit the destination
+       file, just write the data to it using write-region.  This is
+       similar to saveplace.el at 2005-05-29T08:36:26Z!rms@gnu.org, but with an additional
+       change to avoid visiting the file in the first place.
+
+2005-11-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * hi-lock.el (hi-lock-mode): Set the default value of
+       font-lock-defaults.
+
+2005-11-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * find-lisp.el (find-lisp-find-dired-insert-file): Pass `string'
+       arg to `file-attributes'.
+       (find-lisp-format): The UID and GID can now be strings.
+
+2005-11-12  Kim F. Storm  <storm@cua.dk>
+
+       * help.el (help-map): Bind C-h d to apropos-documentation.
+
+       * simple.el (what-cursor-position): Print (EOB) instead of (100%)
+       when point is at end-of-buffer.
+
+       * apropos.el (apropos-match-face): Doc fix.
+       (apropos-sort-by-scores): Add new choice `verbose'.
+       (apropos-documentation-sort-by-scores): New defcustom.
+       (apropos-pattern): Now contains the pattern entered by the user.
+       (apropos-pattern-quoted): New defvar.
+       (apropos-regexp): New defvar, containing the regexp corresponding
+       to apropos-pattern.
+       (apropos-all-words-regexp): Rename from apropos-all-regexp.
+       (apropos-read-pattern): New defun.  Use it to read pattern arg in
+       interactive calls; returns list of words for a word list, and
+       string for a regexp.
+       (apropos-parse-pattern): Rename from apropos-rewrite-regexp.  Now
+       parses a list of words or regexp as returned by apropos-read-pattern.
+       (apropos-calc-scores): Return nil if apropos-regexp doesn't match.
+       (apropos-score-doc): Return a very high score if the string
+       entered by the user matches literally.
+       (apropos-variable): Doc fix.  Use apropos-read-pattern.
+       (apropos-command): Doc fix.  Use apropos-read-pattern and
+       apropos-parse-pattern.  Call apropos-print with nosubst=t.
+       (apropos, apropos-value): Doc fix.  Use apropos-read-pattern and
+       apropos-parse-pattern.
+       (apropos-documentation): Doc fix.  Use apropos-read-pattern and
+       apropos-parse-pattern.  Locally bind apropos-sort-by-scores to
+       apropos-documentation-sort-by-scores.  Call apropos-print with
+       nosubst=t.
+       (apropos-documentation-internal): Pass doc string through
+       substitute-key-definition before adding text properties.
+       Highlight substring matching literal user input if possible.
+       (apropos-documentation-check-doc-file): Remove locals beg and end.
+       Fix calculation of score (as added twice).  Pass doc string through
+       substitute-key-definition before adding text properties.
+       (apropos-documentation-check-elc-file): Pass doc string through
+       substitute-key-definition before adding text properties.
+       Highlight substring matching literal user input if possible.
+       (apropos-print): Add new arg NOSUBST; if set, command and variable
+       doc strings have already been passed through substitute-key-definition.
+       Add code to handle apropos-accumulator items without score element
+       for backwards compatibility (e.g. with woman package).
+       Only show scores if apropos-sort-by-scores is `verbose'.
+
+2005-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * jka-cmpr-hook.el (jka-compr-install): Use push and dolist.
+       Add jka-compr-load-suffixes to load-suffixes.
+
+       * jka-compr.el: Require jka-cmpr-hook.
+       (jka-compr-info-compress-message, jka-compr-info-compress-program)
+       (jka-compr-info-compress-args, jka-compr-info-uncompress-message)
+       (jka-compr-info-uncompress-program, jka-compr-info-uncompress-args)
+       (jka-compr-info-can-append, jka-compr-info-strip-extension)
+       (jka-compr-info-file-magic-bytes, jka-compr-get-compression-info)
+       (jka-compr-info-regexp): Remove.  Provided by jka-cmpr-hook.
+       (jka-compr-uninstall): Remove entries from
+       jka-compr-added-to-file-coding-system-alist after they are used.
+       (jka-compr-error): Remove unused var `curbuf'.
+       (jka-compr-file-local-copy): Remove unused var `notfound'.
+
+2005-11-10  Romain Francoise  <romain@orebokech.com>
+
+       * apropos.el (apropos-calc-scores): Use `apropos-pattern'.
+
+2005-11-11  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Move parentheses.
+       (gdb): New command gud-pv.
+
+2005-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * tar-mode.el: Remove spurious or unnecessary leading stars
+       in docstrings.
+       (tar-header-block-tokenize): Also obey default-file-name-coding-system.
+       (tar-parse-octal-integer-safe): Use mapc.
+       (tar-header-block-summarize): Remove unused var `ck'.
+       (tar-summarize-buffer): Don't clear the modified-p bit if it wasn't
+       cleared before.  Obey default-enable-multibyte-characters.
+       Use mapconcat.  Simplify setting of tar-header-offset.
+       (tar-mode-map): Move initialization inside delcaration.
+       (tar-flag-deleted): Use `abs'.
+       (tar-expunge-internal): Remove unused var `line'.
+       (tar-expunge-internal): Don't hardcode point-min==1.
+       (tar-expunge): Widen while doing set-buffer-multibyte.
+       (tar-rename-entry): Use file-name-coding-system.
+       (tar-alter-one-field): Don't hardcode point-min==1.
+       (tar-subfile-save-buffer): string-as-unibyte works on unibyte strings.
+       (tar-pad-to-blocksize): Don't hardcode point-min==1.  Clarify the code.
+
+2005-11-10  Masatake YAMATO  <jet@gyve.org>
+
+       * add-log.el (add-log-current-defun): Handle class::method
+       notation of c++.  Fix incorrect comment.
+
+2005-11-10  Alan Mackenzie  <acm@muc.de>
+
+       * help-fns.el (describe-variable): Make C-h v work when a variable
+       has variable documentation yet is unbound.
+
+2005-11-10  Masatake YAMATO  <jet@gyve.org>
+
+       * man.el (Man-highlight-references): Set an empty
+       string to `Man-arguments' if it is nil.
+       Suggested by Reiner Steib <Reiner.Steib@gmx.de>.
+
+2005-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * Makefile.in (mh-loaddefs.el, loaddefs.el): Better follow the
+       commenting conventions.
+
+       * cus-dep.el (custom-make-dependencies): Simplify.
+       Better follow the commenting conventions.
+
+2005-11-09  Richard M. Stallman  <rms@gnu.org>
+
+       * apropos.el (apropos-pattern): Rename from apropos-regexp.
+       (apropos-orig-pattern): Rename from apropos-orig-regexp.
+       All uses changed.
+       (apropos-rewrite-regexp): Doc fix.
+       (apropos-variable, apropos-command, apropos, apropos-value):
+       Change prompt; carry through the argument renaming.
+
+2005-11-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * find-lisp.el: Require dired.
+       (find-lisp-find-dired-internal): Do not call
+       `abbreviate-file-name' on DIR.
+
+2005-11-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gdb): Make gud-pp use user-defined command pp1.
+
+2005-11-09  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Ensure tool-bar is constant
+       when using the speedbar.
+       (gdb): New command gud-pp.
+       (gud-menu-map, gud-tool-bar-map): Put it on the tool bar.
+
+2005-11-09  Juri Linkov  <juri@jurta.org>
+
+       * replace.el (occur-excluded-properties): New defcustom.
+       (occur-1, occur-engine, occur-accumulate-lines): Use it.
+
+2005-11-08  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-units.el (math-convert-units): Replace any composite
+       unit by its definition.
+
+2005-11-08  Lars Hansen  <larsh@soem.dk>
+
+       * emacs-lisp/autoload.el (update-directory-autoloads):
+       Add obsolete function alias.
+
+2005-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/lisp-mode.el (lisp-mode-variables): Don't set
+       comment-indent-function.
+       (lisp-comment-indent): Replace by an alias for comment-indent-default.
+
+       * reveal.el (reveal-post-command): Rework the handling of
+       reveal-open-spots, so as to be more reliable.  There were several
+       tricky corner cases where an open spot might be lost, or where
+       a closed spot might end up on the list of open spots.
+       Only reveal text that's ellipsised.
+
+2005-11-07  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-export-as-html): Remove bogus (debug) form.
+
+2005-11-07  John Paul Wallington  <jpw@gnu.org>
+
+       * ibuffer.el (ibuffer): Search iconified frames too when
+       getting Ibuffer buffer's window.
+
+2005-11-06  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/compile.el (compilation-internal-error-properties):
+       save-excursion around the computation of MARKER.
+
+2005-11-06  Piet van Oostrum  <piet@cs.uu.nl>
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       flyspell-get-word returns a list, not just a string.
+
+2005-11-06  John Paul Wallington  <jpw@pobox.com>
+
+       * ibuffer.el (ibuffer): Search all visible frames when getting
+       Ibuffer buffer's window.
+
+2005-11-07  Masatake YAMATO  <jet@gyve.org>
+
+       * man.el (Man-reference-regexp): Accept spaces between
+       `Man-name-regexp' and `Man-section-regexp'.
+       (Man-apropos-regexp): New variable.
+       (Man-abstract-xref-man-page): Use value for `Man-target-string'
+       if available.
+       (Man-highlight-references, Man-highlight-references0):
+       Handle the case when `Man-arguments' includes "-k".
+       (Man-highlight-references0): Rename the argument `TARGET-POS' to
+       `TARGET'. `TARGET' can be a number, function or nil.
+
+2005-11-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-handler, gdb-var-delete)
+       (gdb-edit-value, gdb-speedbar-expand-node, gdb-get-create-buffer)
+       (gdb-breakpoints-mode, gdb-toggle-breakpoint, gdb-delete-breakpoint)
+       (gdb-goto-breakpoint, gdb-frames-mode, gdb-registers-mode)
+       (gdb-locals-mode, gdb-find-file-hook): Use buffer-local-value.
+       (gdb-send-item): Use buffer-local-value and simplify.
+
+2005-11-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * startup.el (command-line): Use `custom-reevaluate-setting' for
+       `global-font-lock-mode'.
+
+       * font-core.el (global-font-lock-mode): Enable `global-font-lock-mode'
+       by default, except in batch mode or when the -D option is given.
+
+       * emacs-lisp/easy-mmode.el (define-global-minor-mode): Pass all
+       specified keyword args on to `define-minor-mode'.  Update docstring.
+
+2005-11-05  Romain Francoise  <romain@orebokech.com>
+
+       * replace.el (occur-engine): Add marker at end of line, too.
+
+2005-11-04  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
+       (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
+       (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt)
+       (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE
+       argument to all these routines, so the passphrase can be managed
+       externally and passed in to the system.
+       (pgg-pgp-decrypt-region, pgg-pgp-sign-region): Use new name for
+       pgg-add-passphrase-to-cache function.
+
+       * pgg-pgp5.el (pgg-pgp5-encrypt-region, pgg-pgp5-decrypt-region)
+       (pgg-pgp5-encrypt-symmetric-region, pgg-pgp5-encrypt-symmetric)
+       (pgg-pgp5-encrypt, pgg-pgp5-decrypt-region, pgg-pgp5-decrypt)
+       (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE
+       argument to all these routines, so the passphrase can be managed
+       externally and passed in to the system.
+       (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
+       function.
+
+2005-11-04  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * font-lock.el: Don't deal with font-lock-face-attributes here,
+       move the code ...
+
+       * startup.el (command-line): ... here.  Use face-spec-set instead
+       of custom-declare-face.
+
+       * faces.el (face-spec-set): Reset the face if spec is not nil.
+
+2005-11-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * newcomment.el (comment-region-internal): Box more tightly in the
+       common case where there's no TAB in the boxed text.
+
+2005-11-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * info.el (info-tool-bar-map): Use images prev-node, next-node and
+       up-node.
+
+2005-11-04  Ulf Jasper  <ulf.jasper@web.de>
+
+       * newsticker.el: Commentary updated.  Code formatting changed.
+       (newsticker-version): Change to "1.9".
+       (newsticker, newsticker-feed): Doc fix.
+       (newsticker-url-list): Doc fix.  Add option "Weekly".
+       (newsticker-retrieval-interval): Add option "Weekly".
+       (newsticker-headline-processing): Doc fix.
+       (newsticker-auto-mark-filter): Remove.
+       (newsticker-auto-mark-filter-list): New.
+       (newsticker-layout, newsticker-sort-method): Doc fix.
+       (newsticker-hide-old-items-in-newsticker-buffer)
+       (newsticker-heading-format, newsticker-item-format)
+       (newsticker-desc-format): Doc fix.
+       (newsticker-show-all-rss-elements): Remove.
+       (newsticker-show-all-news-elements): New.
+       (newsticker-faces, newsticker-ticker): Doc fix.
+       (remove-from-invisibility-spec): Code formatting.
+       (newsticker--process-ids): New.
+       (newsticker-mode): Doc fix.
+       (newsticker-mode): Change mode-line-format.
+       (newsticker-start): Remove debug output.
+       (newsticker-start-ticker): Doc fix.  Add autoload cookie.
+       (newsticker-w3m-show-inline-images): Code formatting.
+       (newsticker-next-item): Call `force-mode-line-update'.
+       (newsticker-previous-item): Call `force-mode-line-update'.
+       (newsticker-next-feed): Call `force-mode-line-update'.
+       (newsticker-previous-feed): Call `force-mode-line-update'.
+       (newsticker-mark-all-items-at-point-as-read): Code formatting.
+       (newsticker-show-old-items): Do not show descs.
+       (newsticker-hide-entry): Hide too much.
+       (newsticker-hide-entry, newsticker-show-entry)
+       (newsticker-toggle-auto-narrow-to-feed): Code formatting.
+       (newsticker-set-auto-narrow-to-feed): Update buffer immediately.
+       (newsticker-toggle-auto-narrow-to-item): Code formatting.
+       (newsticker-set-auto-narrow-to-item): Update buffer immediately.
+       (newsticker-running-p, newsticker-ticker-running-p): Autoload cookie.
+       (newsticker-get-news): Call `force-mode-line-update'.
+       Collect process ids.
+       (newsticker--sentinel): Change coding system handling.
+       Move image retrieval to new functions newsticker--get-logo-url-*.
+       Move feed parsing to new functions newsticker--parse-*.
+       Update list of process ids.
+       (newsticker--get-logo-url-atom-1.0, newsticker--get-logo-url-atom-0.3)
+       (newsticker--get-logo-url-rss-2.0, newsticker--get-logo-url-rss-1.0)
+       (newsticker--get-logo-url-rss-0.92, newsticker--get-logo-url-rss-0.91)
+       (newsticker--parse-atom-0.3, newsticker--parse-atom-1.0)
+       (newsticker--parse-rss-0.91, newsticker--parse-rss-0.92)
+       (newsticker--parse-rss-1.0, newsticker--parse-rss-2.0)
+       (newsticker--parse-generic-feed, newsticker--parse-generic-items): New.
+       (newsticker--decode-coding-string): Remove.
+       (newsticker--decode-numeric-entities): Check input.  Format code.
+       (newsticker--remove-whitespace): Check input.
+       (newsticker--do-forget-preformatted): Doc fix.
+       (newsticker--decode-rfc822-date): Allow for missing time.
+       (newsticker--update-process-ids): New.
+       (newsticker--image-sentinel): Change comment.
+       (newsticker--image-read): Change error message.
+       (newsticker--imenu-goto): Doc fix.  Show headline title.
+       (newsticker--buffer-set-uptodate): Call `force-mode-line-update'.
+       (newsticker--buffer-do-insert-text): Clean whitespace in
+       html-rendered headline title.  Code formatting.
+       Call `newsticker--buffer-print-extra-elements'.
+       (newsticker--buffer-print-extra-element): Remove.
+       (newsticker--buffer-print-extra-elements): New.
+       (newsticker--buffer-do-print-extra-element): New.
+       (newsticker--buffer-insert-enclosure): Doc fix.  Use MBytes for
+       large sizes.
+       (newsticker--run-auto-mark-filter)
+       (newsticker--do-run-auto-mark-filter):
+       Use `newsticker-auto-mark-filter-list'.
+
+2005-11-04  Ryan Yeske  <rcyeske@gmail.com>
+
+       * net/rcirc.el: Use split-string OMIT-NULLS argument.
+       (rcirc-print): Force redisplay before running hooks.  Do long
+       buffer truncation after making new text read-only.  Deal with nil
+       text when decoding strings.  If TARGET is nil, use either the
+       currently selected buffer, if it is an rcirc buffer and of the
+       same process or the process buffer.
+       (rcirc-mode): Remove header-line.  Recompute short buffer names.
+       Initialize rcirc-buffer-alist here instead of rcirc-get-buffer-create.
+       (rcirc-short-buffer-name): Add variable.
+       (rcirc-kill-buffer-hook): Recompute short buffer names.
+       Remove nick from private channel.
+       (rcirc-send-input): Send command text to current-buffer.
+       Don't clear overlay arrow here.
+       (rcirc-short-buffer-name): Return a short buffer name.
+       (rcirc-update-short-buffer-names, rcirc-abbreviate)
+       (rcirc-rebuild-tree, rcirc-make-trees): Add functions to generate
+       buffer-name abbreviations.
+       (rcirc-kill-buffer-hook-1): Split to make debugging easier.
+       Do not touch nick-table when killing a parted channel.
+       (rcirc-window-configuration-change): Rename from rcirc-update-activity.
+       Clear arrow from current buffer if it is now hidden.
+       (rcirc-current-buffer): Add variable.
+       (rcirc-my-nick, rcirc-other-nick, rcirc-server)
+       (rcirc-nick-in-message, rcirc-prompt, rcirc-mode-line-nick):
+       Remove -face from names.
+       (rcirc-update-activity-string): Print "DND" when globally ignoring
+       activity.
+       (rcirc-ignore-buffer-activity-flag): Rename from
+       rcirc-ignore-channel-activity.
+       (rcirc-ignore-all-activity-flag): Doc fix.
+       (rcirc-channels): Remove variable.
+       (rcirc-kill-buffer-hook):
+       (rcirc-get-buffer-create): Add nick to private channel.
+       (rcirc-multiline-edit-submit): Remove tabs.
+       (rcirc-put-nick-channel, rcirc-channel-nicks): Look up nicks case
+       folded.
+       (rcirc-remove-nick-channel): Bug fix.
+       (rcirc-toggle-ignore-buffer-activity): Rename from
+       rcirc-toggle-ignore-channel-activity.
+       (rcirc-record-activity): Add buffers to the front of the list.
+       (rcirc-update-activity): Remove killed buffers from list.
+       (rcirc-process-server-response-1): Remove last argument if it is
+       null before calling handler.
+       (rcirc): Add "rcirc" defcustom prefix.
+       (rcirc-prompt): Simplify default prompt.
+       Use custom-initialize-default.
+       (rcirc-private-chats): Remove variable.
+       (rcirc-prompt): Change initialization.
+       (rcirc-version): Remove function.
+       (rcirc-id-string): Add constant.
+       (rcirc-last-buffer): Remove variable.
+       (rcirc-buffer-alist): Add variable.
+       (rcirc-connect): Update variable setup.
+       (rcirc-sentinel, rcirc-update-prompt): Use `rcirc-buffer-alist'.
+       (rcirc-trap-errors-flag): Rename from `rcirc-trap-errors' change
+       default.
+       (rcirc-handler-generic): Trigger activity.
+       (rcirc-send-message): Create the buffor of the target.
+       (rcirc-generate-new-buffer-name): Rename from `rcirc-get-buffer-name'.
+       (rcirc-get-buffer): Just return nil if there is no matching buffer.
+       (rcirc-multiline-edit-cancel): Remove function.
+       (rcirc-set-last-buffer): Remove function.
+       (rcirc-get-any-buffer): Add function.
+       (rcirc-join-channels): Don't print /join text.
+       (rcirc-toggle-ignore-channel-activity): Add and update echo area
+       messages.
+       (rcirc-cmd-ctcp): Use rcirc-send-string to send request.
+       (rcirc-handler-NOTICE): Recognize CTCP responses.
+       (rcirc-handler-332, rcirc-handler-332): Use a temp buffer for
+       constructing TOPIC string for buffers we are not JOINed.
+       (rcirc-handler-CTCP-response): Add handler.
+       (rcirc-multiline-edit-submit): Restore the window-configuration
+       before adjusting point.
+       (rcirc): Add customization group.
+       (rcirc-server, rcirc-port, rcirc-nick, rcirc-user-name)
+       (rcirc-user-full-name, rcirc-startup-channels-alist)
+       (rcirc-fill-flag, rcirc-fill-column, rcirc-fill-prefix)
+       (rcirc-ignore-all-activity-flag, rcirc-time-format)
+       (rcirc-input-ring-size, rcirc-read-only-flag)
+       (rcirc-buffer-maximum-lines, rcirc-authinfo-file-name)
+       (rcirc-auto-authenticate-flag, rcirc-prompt, rcirc-print-hooks):
+       Change defvar to defcustom.
+       (rcirc-update-prompt): Add optional ALL arg, which will update
+       prompts in all rcirc buffers.  Regexp quote replacement text.
+       (rcirc-fill-column): Accept frame-width as a value.
+       (rcirc-set-changed): Add function.
+       (rcirc-next-active-buffer): Write more meaningful messages.
+       (rcirc-faces): Add customization group.
+       (rcirc-my-nick-face, rcirc-other-nick-face, rcirc-server-face)
+       (rcirc-nick-in-message-face, rcirc-prompt-face)
+       (rcirc-mode-line-nick-face): Move into rcirc-faces group.
+       (with-rcirc-process-buffer): Move before first usage.
+       (rcirc-debug-buffer): Rename from `rcirc-log-buffer'.
+       (rcirc-debug-flag): Rename from `rcirc-log-p'.
+       (rcirc-debug): Rename from `rcirc-log'.
+       (rcirc-format-response-string): Do not print `-' chars for a
+       NOTICE with no sender.  Simplify output of server responses.
+
+2005-11-04  Henrik Enberg  <henrik.enberg@telia.com>
+
+       (rcirc-browse-url-map, rcirc-browse-url-at-point)
+       (rcirc-browse-url-at-mouse, rcirc-mangle-text):
+       Make urls mouse and RET clickable.
+
+2005-11-04  Henrik Enberg  <henrik.enberg@telia.com>
+
+       * mail/rmailout.el (rmail-output-to-rmail-file, rmail-output): Doc fix.
+
+2005-11-04  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
+       (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
+       (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt)
+       (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE
+       argument to all these routines, so the passphrase can be managed
+       externally and passed in to the system.
+       (pgg-pgp-decrypt-region, pgg-pgp-sign-region): Use new name for
+       pgg-add-passphrase-to-cache function.
+
+       * pgg-pgp5.el (pgg-pgp5-encrypt-region, pgg-pgp5-decrypt-region)
+       (pgg-pgp5-encrypt-symmetric-region, pgg-pgp5-encrypt-symmetric)
+       (pgg-pgp5-encrypt, pgg-pgp5-decrypt-region, pgg-pgp5-decrypt)
+       (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE
+       argument to all these routines, so the passphrase can be managed
+       externally and passed in to the system.
+       (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
+       function.
+
+2005-11-04  Edward O'Connor  <hober0@gmail.com>  (tiny change)
+
+       * net/goto-addr.el (goto-address-url-regexp): Remove `data:' URLs
+       from goto-address-url-regexp.
+
+2005-11-04  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-read-date, org-goto-calendar)
+       (org-recenter-calendar, org-agenda-goto-calendar):
+       Temporarily clear `calendar-move-hook'.
+
+2005-11-04  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-merge.el (ediff-merge-region-is-non-clash): Return t, if not
+       merging.
+
+       * ediff-util.el (ediff-previous-difference): Don't skip regions that
+       have merge clashes.
+
+2005-11-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mwheel.el (mouse-wheel-down-event, mouse-wheel-up-event):
+       Undo previous change.
+
+       * startup.el (command-line): Use `custom-reevaluate-setting' for
+       mouse-wheel-down-event and mouse-wheel-up-event.  Don't call
+       tty-register-default-colors on Mac.
+
+2005-11-04  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-buffer-type): Remove duplicate declaration.
+       (gdb-buffer-type): Make it automatically buffer local...
+       (gdb-get-create-buffer): ...and set it accordingly.
+       (gdb-frame-gdb-buffer, gdb-display-gdb-buffer): Make these
+       actually work.
+
+2005-11-03  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * font-lock.el (font-lock-warning-face): Use the more vivid red1,
+       not red.
+
+2005-11-04  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gud-watch): Use save-selected-window in
+       case GUD buffer is not visible.
+       (gdb-goto-breakpoint): Try to force display in source buffer.
+       (gdb-frame-gdb-buffer): Copy other similar functions.
+       (gdb-restore-windows): Don't display source if not asked for.
+       (gdb-assembler-buffer-name): Don't capitalise.
+
+2005-11-03  Richard M. Stallman  <rms@gnu.org>
+
+       * wid-edit.el (key-sequence): New widget type.
+
+       * simple.el (set-mark-command-repeat-pop): New variable.
+       (set-mark-command): Only interpret plan C-@ after a pop as a pop
+       if set-mark-command-repeat-pop is true.
+
+       * info.el (Info-fontify-node): Don't display extra "see" if there
+       already is one here.
+
+       * mouse.el: Fix special handling of DEL after dragging a region:
+       (mouse-drag-region-1): Treat mouse-set-region like mouse-set-point.
+       (mouse-region-delete-keys): Change to defcustom.  Add [backspace].
+
+       * mail/feedmail.el: Use insert-buffer-substring, not insert-buffer.
+
+       * textmodes/ispell.el (ispell-command-loop): Change `i' description
+       not to assume it pertains to an affix.
+
+       * textmodes/flyspell.el (flyspell-post-command-hook):
+       Bind deactivate-mark to prevent deactivation.
+
+2005-11-03  Lars Hansen  <larsh@soem.dk>
+
+       * dired-x.el: Add menu bindings for dired-do-find-marked-files,
+       dired-do-relsymlink, dired-flag-extension, dired-mark-extension,
+       dired-mark-omitted, dired-do-relsymlink-regexp, dired-omit-mode.
+
+2005-11-03  Romain Francoise  <romain@orebokech.com>
+
+       * net/eudcb-mab.el: Now part of GNU Emacs.  Update FSF's address.
+       Update copyright years.
+
+2005-11-03  Sam Steingold  <sds@gnu.org>
+
+       * mwheel.el (mouse-wheel-down-event, mouse-wheel-up-event):
+       Use system-type instead of window-system because window-system is not
+       correctly defined during loadup.
+
+2005-11-02  Mark A. Hershberger  <mah@everybody.org>
+
+       * xml.el (xml-syntax-table): Allow xml.el to compile in XEmacs.
+       (xml-parse-tag): Join strings separated by a comment properly.
+
+2005-11-02  Andreas Schwab  <schwab@suse.de>
+
+       * emacs-lisp/byte-opt.el (byte-optimize-pure-func): Fix last fix.
+
+2005-11-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/byte-opt.el (string-to-syntax): Mark it as pure.
+       (byte-optimize-pure-func): Quote the eval'd value.
+
+       * progmodes/perl-mode.el (perl-font-lock-special-syntactic-constructs):
+       Rename from perl-font-lock-syntactic-face-function.
+       Change the calling convention so it can be used as a font-lock MATCHER.
+       Do the parse-partial-sexp loop outselves.
+       (perl-font-lock-syntactic-keywords): Use it.
+       (perl-mode): Don't set font-lock-syntactic-face-function any more.
+
+2005-11-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-mouse-until): Make it work in the
+       disassembly buffer too.
+       (gdb-exited): Remove overlay arrows when execution has finished.
+       (gdb-info-frames-custom, gdb-info-threads-custom)
+       (gdb-info-registers-custom): Don't add inappropriate text
+       properties if inferior is not active.
+
+2005-11-02  Glenn Morris  <rgm@gnu.org>
+
+       * progmodes/fortran.el (fortran-blink-match):
+       Use `blink-matching-delay'.
+
+2005-11-02  John Mongan  <jmongan@mccammon.ucsd.edu>  (tiny change)
+
+       * progmodes/f90.el (f90-match-end): Use `blink-matching-delay'.
+
+2005-11-02  Lars Hansen  <larsh@soem.dk>
+
+       * net/tramp.el (tramp-action-out-of-band): Handle scp message
+       "Permission denied".
+
+2005-11-01  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       Pass nil to flyspell-get-word.
+
+2005-11-02  Kim F. Storm  <storm@cua.dk>
+
+       * menu-bar.el (menu-bar-options-menu): Show "Shift Movement (CUA)"
+       item instead of "C-x/C-c/C-v (CUA)" if cua-enable-cua-keys is nil.
+
+2005-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * calendar/cal-menu.el (date, event): Don't declare as dynamic-var.
+       (calendar-mouse-holidays, calendar-mouse-view-diary-entries)
+       (calendar-mouse-print-dates): Add optional `event' argument.
+       Update interactive-spec.
+       (calendar-mouse-cal-tex-menu, cal-tex-mouse-filofax):
+       Use `calendar-event-to-date' instead of `event'.
+
+2005-11-02  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/ld-script.el (ld-script-builtins):
+       Add more words: "DATA_SEGMENT_ALIGN", "DATA_SEGMENT_END",
+       "DATA_SEGMENT_RELRO_END", "LENGTH", "ORIGIN", and "SEGMENT_START".
+       (auto-mode-alist): Accept .ld, .lds, ld.in and .lds.in.
+
+2005-11-01  Romain Francoise  <romain@orebokech.com>
+
+       * vc-sccs.el: Update copyright year.
+       * ezimage.el: Likewise.
+
+2005-11-01  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>  (tiny change)
+
+       * info.el (Info-fontify-node): Use `string-width' for fontifying
+       underlined titles.
+
+2005-11-01  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-fontify-node): Downcase node header keywords Node,
+       Prev, Next, Up before comparison.
+       (Info-history): Insert absolute directory name, and put invisible
+       property on it.
+
+2005-11-01  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-file-supports-index-cookies): New variable.
+       (Info-find-node-2): Check makeinfo version for index cookie support.
+       (Info-index-nodes): Search for nodes with index cookies only when
+       Info-file-supports-index-cookies is t.  Otherwise, search nodes
+       with "Index" in the node name.
+       (Info-index-node): Search index cookie in the current node only when
+       Info-file-supports-index-cookies is t.  Otherwise, check the word
+       "Index" in the node name.
+       (Info-find-emacs-command-nodes): Remove code that searches nodes
+       with "Index" node name in the top menu.
+
+2005-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/scheme.el (scheme-mode-variables): Use the default
+       comment-indent-function.
+
+       * faces.el (face-attribute): Handle the case where a face inherits from
+       a non-existent face.
+
+       * simple.el (eval-expression-print-format): Use lisp-readable syntax
+       for octal and hexa output, and merge the char into the paren.
+       (kill-new): Use push.
+       (copy-to-buffer): Use with-current-buffer.
+       (completion-setup-function): Move code in loop to remove redundancy.
+       (minibuffer-local-must-match-map): Don't add bindings that duplicate
+       those inherited from minibuffer-local-completion-map.
+
+       * savehist.el (savehist-mode) <defcustom>:
+       Use custom-set-minor-mode if available.
+       (savehist-mode) <defun>: Run the minor mode hook, set the custom state
+       and emit a message if applicable.
+
+2005-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * savehist.el: Sync up to version 19.
+       (savehist-mode): New minor mode.
+       (savehist-file): Use ~/.emacs.d or ~/.xemacs if available.
+       (savehist-length): Remove (use history-length instead).
+       (savehist-file-modes): Rename from savehist-modes.
+       (savehist-save-hook, savehist-loaded): New vars.
+       (savehist-load): Use savehist-mode.  Try to smooth up transition from
+       old format to new format.
+       (savehist-install): Allow savehist-autosave-interval to be nil.
+       (savehist-save): Run the new hook.  Be more careful to only trim the
+       history variables.
+       (savehist-trim-history): New fun.  Replaces savehist-process-for-saving.
+       (savehist-printable): Print into a buffer rather than char-by-char.
+
+2005-11-01  John Wiegley  <johnw@newartisans.com>
+
+       * iswitchb.el (iswitchb-define-mode-map): Re-enable the
+       toggle-ignore keybinding (C-a).  The author said it had been
+       disabled much earlier due to a possible incompatibility, but after
+       many months of usage I have encountered no problems (and it is a
+       rather useful option, especially for switching to " *temp*").
+
+       * net/eudcb-mab.el (eudc-mab-query-internal): Add backend
+       support for OS/X's AddressBook, by calling out to the open source
+       program "contacts" (installable through Fink).
+
+       * net/eudc.el (eudc-expand-inline): If the
+       `eudc-multiple-match-handling-method' is set to `all', delete the
+       query string before inserting the query result.
+
+       * eshell/em-ls.el (eshell-do-ls): Add no-op support for --dired
+       flag, to prevent Eshell from using the system ls when
+       `eshell-ls-insert-directory' is in used.
+       (eshell-ls-insert-directory): Disable font-lock in directory
+       buffer so that Eshell's own fontification is seen.  This broke
+       recently due to changes in font-lock, so this goes back to version
+       21 behavior.
+
+2005-11-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-use-inferior-io-buffer): New function.
+       (menu, toggle-gdb-use-inferior-io-buffer): Get rid of defadvice.
+       (gdb-many-windows): Doc fix.
+
+2005-10-31  Romain Francoise  <romain@orebokech.com>
+
+       * help-fns.el (describe-simplify-lib-file-name): Add autoload cookie.
+
+2005-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * loadup.el: Load emacs-lisp/syntax, font-lock and jit-lock so
+       that global-font-lock-mode can be enabled by default.
+
+       * font-lock.el (font-lock-keywords, font-lock-mode-internal)
+       (font-lock-add-keywords, font-lock-remove-keywords)
+       (font-lock-fontify-buffer): Remove autoload cookies.
+
+       * jit-lock.el (jit-lock-register): Likewise.
+
+       * emacs-lisp/syntax.el (syntax-ppss): Likewise.
+
+2005-10-31  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-many-windows): Leave window configuration
+       intact if there is no gud-comint-buffer.
+
+2005-10-31  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * progmodes/gud.el (gud-filter): Use comint-update-fence to delete
+       old prompt comint-prompt-read-only is t and GDB commands are
+       issued from tool bar etc.
+
+2005-10-31  Masatake YAMATO  <jet@gyve.org>
+
+       * vc.el (vc-directory-exclusion-list): Add "{arch}".
+
+2005-10-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * thumbs.el (thumbs-thumbsdir): Default to ~/.emacs.d/thumbs.
+       (thumbs-thumbsdir): Make .emacs.d if it does not exist.
+
+2005-10-30  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-chunksize): Escape parentheses in docstring
+       starting at beginning of line.  Fontification is messed up when
+       `open-paren-in-column-0-is-defun-start' set to t.
+       Reported by John Paul Wallington <jpw@pobox.com>.
+
+2005-10-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * comint.el (comint-send-input): Call `comint-update-fence' when
+       `comint-process-echoes' and `comint-prompt-read-only' are both
+       non-nil, to avoid leftover read-only newline.
+
+2005-10-30  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       Detect when WORD can't be checked properly because
+       flyspell-get-word finds just part of it, and move on.
+
+       * textmodes/ispell.el (ispell-dictionary-alist-5): Add . as
+       boundarychar for Polish.
+       (ispell-dictionary-alist-4): Add . as boundarychar for Italian.
+       (ispell-dictionary-alist-3): Add . and @ as boundarychars for French.
+
+2005-10-31  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-tooltip-print-1): Fix regexp.
+       (gdb-registers-font-lock-keywords): Delete.
+       (gdb-registers-mode): Don't fontify.
+       (gdb-info-registers-custom): Use text properties instead as, in
+       future, changed register values will use font-lock-warning-face.
+       (gdb-local-font-lock-keywords): Rename to...
+       (gdb-locals-font-lock-keywords): ...for consistency.
+
+2005-10-30  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc.el (vc-switch-backend): Better error message if the buffer is
+       not visiting a file under version control.
+
+       * vc-cvs.el (vc-cvs-delete-file): Commit the file after removing it.
+
+2005-10-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * startup.el (command-line): Use ~/.emacs.d/init.el instead of
+       ~/.emacs.d/.emacs.
+
+2005-10-29  Richard M. Stallman  <rms@gnu.org>
+
+       * replace.el (occur-mode-mouse-goto): Always go to other window.
+       (occur-mode-goto-occurrence): Always switch in same window.
+
+       * simple.el (undo): Display message at end, not at start.
+
+       * emacs-lisp/timer.el (timer-activate, timer-activate-when-idle):
+       New arg REUSE-CELL.
+       (cancel-timer-internal): New function.
+       (timer-event-handler): Use cancel-timer-internal,
+       and pass the cell it returns to timer-activate...
+
+       * jit-lock.el (jit-lock-function, jit-lock-stealth-fontify)
+       (jit-lock-deferred-fontify, jit-lock-context-fontify)
+       (jit-lock-after-change): Test memory-full.
+
+2005-10-29  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * pgg-gpg.el (pgg-gpg-select-matching-key): Fix: look at the right
+       part of the decoded armor to find the key-identifier.
+       (pgg-gpg-lookup-key-owner): New function to return the
+       human-readable identifier of a key owner.
+       (pgg-gpg-lookup-id-from-key-owner): Make it easy to identify the
+       key itself.
+       (pgg-gpg-decrypt-region): Prompt with the key owner (rather than
+       the key value) if we have a key and can match it against a secret
+       key.  Also, added a note pointing out fact that the prompt only
+       indicates the first matching key.
+
+       * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
+       pgg-decrypt-region.
+       (pgg-pending-timers): A new hash for tracking the passphrase cache
+       timers, so that new ones supercede old ones.
+       (pgg-add-passphrase-to-cache): Rename from
+       `pgg-add-passphrase-cache' to reduce confusion (all callers
+       changed).  Modified to cancel old timers when new ones are added.
+       (pgg-remove-passphrase-from-cache): Rename from
+       `pgg-remove-passphrase-cache' to reduce confusion (all callers
+       changed).  Modified to cancel old timers when their keys are
+       removed from the cache.
+       (pgg-cancel-timer): In Emacs, an alias for cancel-timer; in
+       XEmacs, an indirection to delete-itimer.
+       (pgg-read-passphrase-from-cache, pgg-read-passphrase):
+       Extract pgg-read-passphrase-from-cache from pgg-read-passphrase so
+       users can only check cache without risk of prompting.  Correct bug in
+       notruncate behavior.
+       (pgg-read-passphrase-from-cache, pgg-read-passphrase)
+       (pgg-add-passphrase-cache, pgg-remove-passphrase-cache):
+       Add informative docstrings.
+       (pgg-decrypt): Convey provided passphrase in subordinate call to
+       pgg-decrypt-region.
+
+       * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region)
+       (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region)
+       (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional
+       `passphrase' argument, so the passphrase can be managed externally
+       and then passed in to the system.
+
+       * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache)
+       (pgg-remove-passphrase-cache): Add optional NOTRUNCATE argument,
+       so the passphrase cache can be used reliably with identifiers
+       besides a pgp packet's key id.
+
+       * pgg-gpg.el (pgg-pgp-encrypt-region)
+       (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
+       (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt)
+       (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE
+       argument to all these routines, so the passphrase can be managed
+       externally and passed in to the system.
+
+       * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional
+       `notruncate' argument, so the passphrase cache can be used
+       reliably with identifiers besides a pgp packet's key id.
+
+2005-10-29  Sascha Wilde  <swilde@sha-bang.de>
+
+       * pgg-gpg.el (pgg-gpg-encrypt-symmetric-region): New function for
+       symmetric encryption.
+       (pgg-gpg-symmetric-key-p): New function to check for an symmetric
+       encrypted session key.
+       (pgg-gpg-decrypt-region): When decrypting a symmetric encrypted
+       message ask for the passphrase in a proper way.
+
+       * pgg.el (pgg-encrypt-symmetric, pgg-encrypt-symmetric-region):
+       New user commands for symmetric encryption.
+
+2005-10-29  Roland Winkler  <roland.winkler@physik.uni-erlangen.de>
+
+       * textmodes/conf-mode.el (conf-assignment-sign)
+       (conf-assignment-regexp): Fix docstrings.
+       (conf-mode-initialize): New function.
+       (conf-mode): Remove optional args.  Use delay-mode-hooks to
+       recognize recursive calls.
+       (conf-unix-mode, conf-windows-mode, conf-javaprop-mode)
+       (conf-space-mode, conf-colon-mode, conf-ppd-mode)
+       (conf-xdefaults-mode): Use define-derived-mode and
+       conf-mode-initialize.
+
+2005-10-29  Romain Francoise  <romain@orebokech.com>
+
+       * help-fns.el (describe-simplify-lib-file-name): Fix regexp.
+
+2005-10-29  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * pgg-gpg.el (pgg-gpg-select-matching-key): Fix: look at the right
+       part of the decoded armor to find the key-identifier.
+       (pgg-gpg-lookup-key-owner): New function to return the
+       human-readable identifier of a key owner.
+       (pgg-gpg-lookup-id-from-key-owner): Make it easy to identify the
+       key itself.
+       (pgg-gpg-decrypt-region): Prompt with the key owner (rather than
+       the key value) if we have a key and can match it against a secret
+       key.  Also, added a note pointing out fact that the prompt only
+       indicates the first matching key.
+
+       * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
+       pgg-decrypt-region.
+       (pgg-pending-timers): A new hash for tracking the passphrase cache
+       timers, so that new ones supercede old ones.
+       (pgg-add-passphrase-to-cache): Rename from
+       `pgg-add-passphrase-cache' to reduce confusion (all callers
+       changed).  Modified to cancel old timers when new ones are added.
+       (pgg-remove-passphrase-from-cache): Rename from
+       `pgg-remove-passphrase-cache' to reduce confusion (all callers
+       changed).  Modified to cancel old timers when their keys are
+       removed from the cache.
+       (pgg-cancel-timer): In Emacs, an alias for cancel-timer; in
+       XEmacs, an indirection to delete-itimer.
+       (pgg-read-passphrase-from-cache, pgg-read-passphrase):
+       Extract pgg-read-passphrase-from-cache from pgg-read-passphrase so
+       users can only check cache without risk of prompting.  Correct bug in
+       notruncate behavior.
+       (pgg-read-passphrase-from-cache, pgg-read-passphrase)
+       (pgg-add-passphrase-cache, pgg-remove-passphrase-cache):
+       Add informative docstrings.
+       (pgg-decrypt): Convey provided passphrase in subordinate call to
+       pgg-decrypt-region.
+
+2005-10-20  Ken Manheimer  <ken.manheimer+emacs@gmail.com>
+
+       * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region)
+       (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region)
+       (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional
+       `passphrase' argument, so the passphrase can be managed externally
+       and then passed in to the system.
+
+       * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache)
+       (pgg-remove-passphrase-cache): Add optional NOTRUNCATE argument,
+       so the passphrase cache can be used reliably with identifiers
+       besides a pgp packet's key id.
+
+       * pgg-gpg.el (pgg-pgp-encrypt-region)
+       (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
+       (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt)
+       (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE
+       argument to all these routines, so the passphrase can be managed
+       externally and passed in to the system.
+
+       * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional
+       `notruncate' argument, so the passphrase cache can be used
+       reliably with identifiers besides a pgp packet's key id.
+
+2005-10-29  Sascha Wilde  <swilde@sha-bang.de>
+
+       * pgg-gpg.el (pgg-gpg-encrypt-symmetric-region): New function for
+       symmetric encryption.
+       (pgg-gpg-symmetric-key-p): New function to check for an symmetric
+       encrypted session key.
+       (pgg-gpg-decrypt-region): When decrypting a symmetric encrypted
+       message ask for the passphrase in a proper way.
+
+       * pgg.el (pgg-encrypt-symmetric, pgg-encrypt-symmetric-region):
+       New user commands for symmetric encryption.
+
+2005-10-28  Bill Wohler  <wohler@newt.com>
+
+       * help-mode.el (help-url): New button type.  Calls browse-url.
+       (help-xref-url-regexp): New regexp to recognize URLs in docstring.
+       Similar to Info nodes: URL `url'.
+       (help-make-xrefs): Create help-url buttons for
+       help-xref-url-regexp matches.
+
+2005-10-29  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tool-bar.el (tool-bar-add-item-from-menu)
+       (tool-bar-local-item-from-menu): Fix doc strings.
+
+2005-10-28  Romain Francoise  <romain@orebokech.com>
+
+       * ldefs-boot.el: Update.
+
+       * subr.el (locate-library): Move from help-fns.el.
+       * help-fns.el (locate-library): Move to subr.el.
+
+2005-10-28  Richard M. Stallman  <rms@gnu.org>
+
+       * net/tramp.el (tramp-completion-mode): defvar moved up.
+
+       * emacs-lisp/easymenu.el (easy-menu-change): Doc fix.
+
+       * tool-bar.el (tool-bar-mode): Delete autoload cookie.
+
+       * files.el (find-file-noselect): Use %d to format large file size.
+
+       * bindings.el (mode-line-format): Add %e.
+
+       * loadup.el ("facemenu"): Load unconditionally.
+       ("image", "international/fontset", "dnd", "mwheel", "tool-bar"):
+       ("x-dnd"): Load, when appropriate.
+
+       * startup.el (command-line): Call before-init-hook earlier.
+       Warn about some bad characters in -u user name.
+
+       * textmodes/flyspell.el (flyspell-large-region): Pass -t if Tex file.
+       (flyspell-external-point-words): Error if misspelled word is not found.
+       Set flyspell-large-region-beg at end of word.
+
+2005-10-28  Andreas Schwab  <schwab@suse.de>
+
+       * view.el (View-revert-buffer-scroll-page-forward):
+       Use view-page-size-default.
+
+2005-10-28  Juri Linkov  <juri@jurta.org>
+
+       * international/quail.el (quail-get-current-str): Translate last
+       raw character for deterministic input methods.
+
+2005-10-27  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-ext.el: Add functions to autoloads.
+       (math-identity-matrix-p, math-ident-row-p): New functions.
+
+       * calc/calc-arith.el (calc-mul-symb-fancy): Add checks for
+       multiplication by an identity matrix; don't turn multiplication by
+       an inverse matrix into division.
+       (math-div-symbol-fancy): Replace division by matrices with
+       multiplication by inverse.
+
+       * calc/calc-misc.el (calcFunc-inv): Check for symbolic matrices.
+
+       * calc/calc-alg.el (calcFunc-writeoutpower, math-write-out-power)
+       (calc-writeoutpower): New functions.
+
+2005-10-27  Romain Francoise  <romain@orebokech.com>
+
+       * replace.el (occur-engine): Include colon in mouse-face highlight.
+
+       * dired-x.el: Change Maintainer field.
+
+2005-10-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-mode): Bind after-change-functions to
+       nil during initial decoding and final encoding.
+
+2005-10-26  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (term-emulate-terminal, term-handle-colors-array)
+       (term-handle-ansi-escape): Specify the terminfo capabilities
+       implemented.
+
+2005-10-26  Richard M. Stallman  <rms@gnu.org>
+
+       * info.el (Info-fontify-node): Fix detection of sentence-break
+       before *Note.
+
+2005-10-26  Romain Francoise  <romain@orebokech.com>
+
+       * smerge-mode.el: Add `tools' to file keywords.
+
+2005-10-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Only display gud-until icon
+       when the fringe is not available.
+
+       * progmodes/gdb-ui.el (def-gdb-auto-updated-buffer)
+       (def-gdb-auto-update-trigger): Simplify construction.
+       (gdb-locals-buffer): Use def-gdb-auto-update-trigger instead of
+       def-gdb-auto-updated-buffer as gdb-info-locals-handler is
+       defined explicitly.
+       (gdb-assembler-buffer): Use def-gdb-auto-update-handler instead of
+       def-gdb-auto-updated-buffer as gdb-invalidate-assembler is
+       defined explicitly.
+       (gdb-info-locals-custom): Remove as it's a no-op.
+
+2005-10-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-mode): Remove narrowing before
+       performing the initial decoding or final encoding.
+
+2005-10-25  Romain Francoise  <romain@orebokech.com>
+
+       * emacs-lisp/find-func.el (find-library-name): Also strip
+       extension if library name ends in .el, to take advantage of
+       `find-library-suffixes'.
+
+2005-10-25  Richard M. Stallman  <rms@gnu.org>
+
+       * menu-bar.el (menu-bar-help-menu): Say which kind of therapist.
+
+2005-10-25  Juri Linkov  <juri@jurta.org>
+
+       * textmodes/texinfo.el (texinfo-mode): Change charset of one
+       quotation mark from [mule-unicode-0100-24ff] to [japanese-jisx0208].
+
+2005-10-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * play/blackbox.el (blackbox-mode-map): Move init into declaration.
+       (blackbox-redefine-key): Add argument `map'.
+
+       * jit-lock.el (jit-lock-fontify-now): Be careful not to skip multiline
+       regions when moving the jit-lock-context-unfontify-pos boundary.
+
+2005-10-25  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * net/browse-url.el (browse-url-of-buffer): Add ".html" to filename.
+
+2005-10-25  Masatake YAMATO  <jet@gyve.org>
+
+       * dired-x.el (dired-virtual): Don't use `dired-insert-headerline'.
+
+2005-10-25  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac-@t-lrde.epita.fr>
+
+       * play/blackbox.el (blackbox-redefine-key): New function.
+       (blackbox-mode-map): Use it to remap existing bindings for cursor
+       motion instead of binding literal keys.
+
+2005-10-25  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/diary-lib.el (diary-list-entries): Prevent infloop when
+       diary does not end in a newline.  Do not assume a blank line at
+       the start of the diary file.
+
+2005-10-25  Kenichi Handa  <handa@m17n.org>
+
+       * international/quail.el (quail-translate-key): If the input
+       method is deterministic and failed to handle the last key, restart
+       the key handling loop from an appropriate key.
+
+2005-10-25  Michael Albinus  <michael.albinus@gmx.de>
+
+       * vc.el (vc-dired-mode): Extend comment for binding of
+       `directory-listing-before-filename-regexp'.
+
+2005-10-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/texinfo.el (texinfo-mode):
+       * textmodes/paragraphs.el (sentence-end-base): Use real chars, so as
+       not to unnecessarily expose emacs-mule's internal char codes.
+
+2005-10-25  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Correct help-echo.
+       Display hand pointer and help-echo on disabled icon too.
+       (gdb-mouse-until): New function.
+       (gdb-ann3): Bind it to mouse-2 and drag-mouse-1 in left fringe.
+
+2005-10-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * menu-bar.el (menu-bar-help-menu): Rename "psychiatrist", in line
+       with 2005-10-23 change to doctor.el.
+
+       * finder.el (finder-mode-map): Add follow-link binding.
+
+2005-10-25  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-3 in left fringe
+       to gdb-mouse-toggle-breakpoint-fringe.
+       (gdb-mouse-toggle-breakpoint-margin): Rename from
+       gdb-mouse-toggle-breakpoint.  Fix doc.
+       (gdb-mouse-toggle-breakpoint-fringe): New defun.
+       (gdb-put-string): Add optional SPROPS arg.  Add props to string.
+       (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled
+       string properties also for fringe breakpoint bitmaps.
+
+2005-10-24  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-start-icalendar-file): Fix format form.
+
+2005-10-25  Masatake YAMATO  <jet@gyve.org>
+
+       * simple.el (completion-common-substring):
+       Use `completion-common-substring' prior to `completion-base-size'.
+
+2005-10-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * savehist.el: Require CL while compiling.
+       (savehist-history-variables): Remove.
+       (savehist-save-minibuffer-history, savehist-additional-variables)
+       (savehist-minibuffer-history-variables): New vars.
+       (savehist-save): Use them.
+       (savehist-uninstall, savehist-minibuffer-hook): New funs.
+       (savehist-install): New fun, extracted from savehist-load.
+       (savehist-load): Use them.
+
+2005-10-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/lisp-mode.el (easy-mmode-define-global-mode): Don't add
+       a dummy doc-string-elt property.
+       (defalias, defvaralias, define-category): Add a docstring property.
+
+       * image.el (defimage):
+       * widget.el (define-widget):
+       * custom.el (defface, defcustom): Add `doc-string' declaration.
+
+       * emacs-lisp/advice.el (ad-make-advised-definition): Fix arg-order.
+       (defadvice): Add `doc-string' declaration.
+
+       * emacs-lisp/byte-run.el (macro-declaration-function):
+       Handle `doc-string' declarations.
+       (define-obsolete-function-alias, define-obsolete-variable-alias):
+       Add `doc-string' declaration.
+
+2005-10-24  Kenichi Handa  <handa@m17n.org>
+
+       * international/utf-7.el (utf-7): Add autoload cookie.
+
+       * term/x-win.el: Register more Cyrillic characters in x-keysym-table.
+
+2005-10-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (autoloads): Use "." instead of $(lisp) in the
+       list of directories passed to batch-update-autoloads.  Add "." to
+       the list of the echoed directories.
+
+       * pgg-def.el:
+       * pgg-gpg.el:
+       * pgg-parse.el:
+       * pgg-pgp.el:
+       * pgg-pgp5.el:
+       * pgg.el: Moved here from the gnus subdirectory.
+
+2005-10-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-filter): Bind inhibit-read-only to t
+       in case comint-prompt-read-only is set to t.
+
+       * progmodes/gdb-ui.el (gdb-send): Bind inhibit-read-only to t
+       in case comint-prompt-read-only is set to t.
+
+2005-10-24  Ulf Jasper  <ulf.jasper@web.de>
+
+       * calendar/icalendar.el (icalendar-version): Increase to 0.13.
+       Now a string.
+       (icalendar-import-format): Handle CLASS, STATUS, URL.
+       Rename `subject' to `summary'.
+       (icalendar-import-format-summary): Rename from
+       `icalendar-import-format-subject'.
+       (icalendar-import-format-url, icalendar-import-format-status)
+       (icalendar-import-format-class): New variables.
+       (icalendar--rris): Take variable argument list.
+       (icalendar--datestring-to-isodate): Remove unnecessary
+       calendar-style check when converting dates with explicit month names.
+       (icalendar-export-region): Change return type of conversion
+       subroutines.  Bury current buffer unless error occurred.
+       (icalendar--convert-to-ical)
+       (icalendar--parse-summary-and-rest): New functions.
+       (icalendar--convert-ordinary-to-ical)
+       (icalendar--convert-weekly-to-ical)
+       (icalendar--convert-yearly-to-ical)
+       (icalendar--convert-block-to-ical)
+       (icalendar--convert-cyclic-to-ical)
+       (icalendar--convert-anniversary-to-ical): Change return type.
+       Strip trailing blanks from subject.
+       (icalendar--convert-sexp-to-ical): Change return type.
+       Strip trailing blanks from subject.  Handle simple sexp
+       entries as generated by icalendar.el.
+       (icalendar--convert-float-to-ical)
+       (icalendar--convert-date-to-ical): Strip trailing blanks from subject.
+       (icalendar-import-file): Doc fix.
+       (icalendar--format-ical-event): Handle CLASS, STATUS, URL.
+       Correct call to icalendar--rris.
+       (icalendar--convert-ical-to-diary): Doc fix.  Rename `subject' to
+       `summary'.
+       (icalendar--add-diary-entry): Rename `subject' to `summary'.
+
+2005-10-24  Romain Francoise  <romain@orebokech.com>
+
+       * server.el (server-sentinel): Set query-on-exit flag to nil on
+       new client processes (it isn't inherited from the server process).
+
+       * replace.el (occur-engine): Rearrange text properties.
+
+2005-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/debug.el (debugger-make-xrefs): Don't assume
+       case-fold-search is nil.
+       (debug-help-follow): Use help-xref-interned directly.
+
+2005-10-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * thumbs.el (thumbs-image-type): Add .pbm.
+
+2005-10-23  Richard M. Stallman  <rms@gnu.org>
+
+       * faces.el (inhibit-face-set-after-frame-default): New variable.
+       (set-face-attribute): Bind it.
+       (face-set-after-frame-default): Test it.
+
+       * help-fns.el (describe-simplify-lib-file-name): New function.
+       (describe-function-1, describe-variable): Use it.
+
+       * faces.el (describe-face): Use describe-simplify-lib-file-name.
+
+       * tooltip.el (tooltip-x-offset, tooltip-y-offset): Change defaults.
+       Eliminate nil as possible value.
+       (tooltip-hide-delay): Reduce internal-border-width.
+
+       * menu-bar.el (menu-bar-file-menu) <dired>: Change help-echo string.
+       (menu-bar-file-menu) <new-file>: Likewise.
+
+       * simple.el (line-move-finish): Ignore fields computing LINE-END.
+
+       * international/mule.el (load-with-code-conversion):
+       Pass full file name to `eval-buffer' unless preloading.
+
+       * textmodes/flyspell.el (flyspell-large-region):
+       Call ispell-check-version.
+
+       * textmodes/ispell.el (ispell-local-dictionary-overridden):
+       Fix the make-variable-buffer-local call that was supposed
+       to be for this variable.
+       (ispell-aspell-supports-utf8): Doc fix.
+       (ispell-find-aspell-dictionaries): Preserve elements of
+       ispell-dictionary-alist for dictionaries that aspell doesn't report.
+       (ispell-aspell-find-dictionary): Return nil on error.
+
+       * play/doctor.el (doctor-doc): Don't say "psychiatrist".
+       (doctor-symptoms): Likewise.
+
+       * add-log.el (add-log-current-defun): Clean up handling of DEFUNs.
+
+2005-10-23  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (custom-button, custom-button-pressed): New vars.
+       (custom-raised-buttons): Add :set spec.
+       (custom-button-unraised, custom-button-pressed-unraised):
+       New faces, so that custom-raised-buttons actually does something.
+       (custom-mode): Use custom-button and custom-button-pressed.
+
+       * wid-edit.el (widget-specify-button): Don't ignore
+       widget-mouse-face on graphic terminals.
+       (widget-move-and-invoke): Cleanup.
+
+2005-10-23  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * whitespace.el (whitespace-cleanup): Doc fix.
+
+2005-10-23  Romain Francoise  <romain@orebokech.com>
+
+       * emulation/viper.el (viper-set-hooks): Quote forms passed to
+       `eval-after-load' to avoid evaluating their result.
+
+2005-10-23  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.el (directory-listing-before-filename-regexp):
+       New defvar.  Replaces `dired-move-to-filename-regexp' from dired.el.
+
+       * dired.el (dired-move-to-filename-regexp): Remove.
+       All occurrences replaced by `directory-listing-before-filename-regexp'.
+
+       * dired-x.el, locate.el, vc.el:
+       Replace `dired-move-to-filename-regexp' by
+       `directory-listing-before-filename-regexp'.  In vc.el it is
+       overwritten locally; maybe this can be handled in files.el too.
+
+       * net/ange-ftp.el (ange-ftp-date-regexp): Remove.  All occurrences
+       replaced by `directory-listing-before-filename-regexp'.
+
+2005-10-23  Andreas Schwab  <schwab@suse.de>
+
+       * font-lock.el (lisp-font-lock-keywords-2): Add eval-at-startup
+       and eval-next-after-load.
+
+2005-10-23  MIYOSHI Masanori  <miyoshi@meadowy.org>  (tiny change)
+
+       * mouse.el (mouse-drag-region): If the *Messages* buffer doesn't
+       exist, create it.
+
+2005-10-23  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el: Remove autoloads for mailcrypt and crypt++.
+       Require pgg, pgg-gpg during compilation.
+       (allout-version): Increment version number to 2.1, and use a literal
+       rather than RCS Id.
+       (allout-default-encryption-scheme): Remove.
+       (allout-passphrase-verifier-handling)
+       (allout-passphrase-verifier-string)
+       (allout-file-passphrase-verifier-string)
+       (allout-passphrase-hint-string): Rename -key- to -passphrase-.
+       (allout-passphrase-hint-handling): Rename and simplify.
+       (allout-init): Use `find-file-hook' if available, otherwise
+       `find-file-hooks'.
+       (allout-mode): Use `write-file-functions' if available, otherwise
+       `local-write-file-hooks' and, instead of making auto-save-hook
+       buffer local, make the write-file-hook activity contingent to
+       allout-mode.
+       (allout-mode): Use key-binding substitution in the docstring.
+       (allout-kill-line): Spell-out kill ring data structure mutation
+       instead of using byte-compiler-complaint-provoking `pop'.
+       (allout-insert-listified): Use `insert' rather than `insert-string'
+       (allout-toggle-current-subtree-encryption): Update docstring, adjust
+       to new gpp-based encryption, use new `allout-encrypted-topic-p'.
+       (allout-encrypt-string): Totally revamped vis new underlying
+       encryption facilities.
+       (allout-mc-activate-passwd): Remove.
+       (allout-obtain-passphrase): New, more or less replaces
+       allout-mc-activate-passwd.
+       (allout-encrypted-key-info): More or less replaces
+       allout-encrypted-text-type.
+       (outlineify-sticky, outlinify-sticky): Add autoload cookie.
+       (my-mark-marker): Use `(featurep 'xemacs)'.
+
+2005-10-23  Lars Hansen  <larsh@soem.dk>
+
+       * emacs-lisp/bytecomp.el (byte-compile-lambda): New arg add-lambda.
+       (byte-compile-file-form-defmumble, byte-compile-defun)
+       (byte-compile-defmacro): Use it.
+       (byte-compile-form): Don't call byte-compile-set-symbol-position
+       when a byte-compile handler is called.
+
+2005-10-22  Romain Francoise  <romain@orebokech.com>
+
+       * savehist.el (savehist-history-variables): Add `grep-find-history'.
+
+       * subr.el (eval-after-load): Convert library name to an absolute
+       file name using locate-library, since load-history no longer has
+       library names in it.
+
+2005-10-22  Richard M. Stallman  <rms@gnu.org>
+
+       * files.el (make-temp-file): Move from subr.el.
+       * subr.el (make-temp-file): Move to files.el.
+
+       * window.el (get-buffer-window-list): Move from subr.el.
+       * subr.el (get-buffer-window-list): Move to window.el.
+
+       * image.el (image-load-path): Use eval-at-startup to initialize.
+
+       * subr.el (eval-at-startup): New macro.
+
+       * subr.el: Much rearrangement of functions and division
+       into pages.  No code changes.
+
+2005-10-22  Kenichi Handa  <handa@m17n.org>
+
+       * tar-mode.el (tar-extract): Be sure to call
+       find-operation-coding-system if set-auto-coding doesn't find a
+       coding system.
+
+2005-10-22  Kim F. Storm  <storm@cua.dk>
+
+       * image.el (image-type-header-regexps): Rename from image-type-regexps.
+       Change users.
+       (image-type-file-name-regexps): New defconst.
+       (image-type-from-data): Simplify loop.
+       (image-type-from-buffer): New defun.
+       (image-type-from-file-header): Use it instead of image-type-from-data.
+       Use image-search-load-path instead of only looking in data-directory.
+       (image-type-from-file-name): New defun.
+       (image-search-load-path): Change `pathname' to `filename'.
+       Make PATH arg optional, default to image-load-path.
+
+2005-10-21  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/texinfo.el (texinfo-mode): Set sentence-end-base.
+
+       * textmodes/paragraphs.el (sentence-end-base): New variable.
+       (sentence-end): Use sentence-end-base.
+
+2005-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-default-fontify-region): Check the multiline
+       property independently from the font-lock-multiline variable.
+
+2005-10-21  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/find-func.el (find-library-name): Doc fix.
+
+       * startup.el (command-line): Convert library names
+       in `load-history' to absolute file names.
+
+       * subr.el (symbol-file): Doc fix.
+
+       * loadhist.el (file-loadhist-lookup): Call locate-library
+       instead of find-library-name.  Don't try converting
+       abs file names to library names, since load-history no longer
+       has library names in it.
+       (file-dependents, file-provides, file-requires): Doc fixes.
+
+2005-10-21  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/etags.el (tags-table-mode): New function.
+       (tags-verify-table): Replace initialize-new-tags-table with
+       tags-table-mode.
+
+       * desktop.el (desktop-buffers-not-to-save): Remove TAGS from the
+       default value.
+       (desktop-modes-not-to-save): Add tags-table-mode to the
+       default value.
+
+       * info.el (Info-index-next): Add total number of index
+       alternatives to the message.
+
+       * textmodes/fill.el (fill-nobreak-p): Fix first two rules to skip
+       backward only space (instead of space and period) before looking
+       at sentence end.
+
+       * simple.el (set-variable): Use user-variable-p instead of symbolp.
+       Add the old variable value as 4th default-value arg of read-string.
+
+2005-10-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * cus-face.el (custom-declare-face): Make face from X resources
+       also on Mac.
+
+       * disp-table.el (standard-display-g1, standard-display-graphic):
+       Refuse to use string glyphs also on Mac.
+       (standard-display-european): Don't set terminal coding system also
+       on Mac.
+
+       * frame.el (display-screens): Use x-display-screens also on Mac.
+
+2005-10-21  Romain Francoise  <romain@orebokech.com>
+
+       * net/rcirc.el: Now part of GNU Emacs.  Update FSF's address.
+
+2005-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-font-lock-syntactic-keywords): Make $@
+       and $? into sexps.
+
+       * font-lock.el (font-lock-compile-keywords): Add a help-echo to the
+       warning face on open-paren-in-column-0.
+
+       * emacs-lisp/syntax.el (syntax-ppss-flush-cache): Fix corner
+       boundary case.  Fix typo.
+       Suggested by Martin Rudalics <rudalics@gmx.at>.
+
+2005-10-21  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-combined-agenda-icalendar-file)
+       (org-icalendar-include-todo, org-icalendar-combined-name): New options.
+       (org-export-icalendar-this-file)
+       (org-export-icalendar-all-agenda-files)
+       (org-export-icalendar-combine-agenda-files): New commands.
+       (org-export-icalendar, org-print-icalendar-entries)
+       (org-start-icalendar-file, org-finish-icalendar-file)
+       (org-ical-ts-to-string): New functions.
+       (org-read-date, org-goto-calendar)
+       (org-agenda-goto-calendar): Inhibit displaying diary entries by
+       call to `calendar'.
+       (orgtbl-setup): Remove the :keys arguments from the menu description.
+       (org-after-save-iCalendar-file-hook): New variable.
+
+2005-10-21  Kenichi Handa  <handa@m17n.org>
+
+       * language/vietnamese.el (tcvn-5712): Make it an alias of
+       vietnamese-tcvn coding-system.
+
+2005-10-20  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/ange-ftp.el (ange-ftp-date-regexp): Handle also the case no
+       group id is given.
+
+2005-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-escaped-line-re): New var.
+       (sh-here-doc-open-re, sh-font-lock-close-heredoc): Use it.
+       (sh-font-lock-open-heredoc): Try to properly handle heredoc starters
+       whose line is either continued or ends with a comment.
+
+2005-10-20  Romain Francoise  <romain@orebokech.com>
+
+       * net/rcirc.el (with-rcirc-process-buffer): Move above its first user.
+
+       * replace.el (occur-engine): Add follow-link property.
+
+       * font-core.el (font-lock-mode): Doc fix.
+
+2005-10-20  Richard M. Stallman  <rms@gnu.org>
+
+       * net/rcirc.el: New file.
+
+2005-10-20  Bryan Henderson  <bryanh@giraffe-data.com>  (tiny change)
+
+       * term.el (term-term-name): Initialize to "eterm-color".
+
+2005-10-20  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * allout.el: Add autoloads of crypt++ and mailcrypt routines, all
+       for encryption functionality.
+       Move allout customization subgroup from `editing' to `outlines' group.
+       Fix commentary keywords to legitimate ones.
+       Update author info (using my current email address, obscurified).
+       (allout-encrypt-string, allout-encryption-produce-work-buffer)
+       (allout-encrypted-topic-p, allout-encrypted-text-type)
+       (allout-mc-activate-passwd, allout-create-encryption-key-verifier)
+       (allout-situate-encryption-key-verifier)
+       (allout-get-encryption-key-verifier, allout-verify-key)
+       (allout-next-topic-pending-encryption)
+       (allout-encrypt-decrypted, allout-encrypted-type-prefix): New funcs.
+       (outline-topic-encryption-bullet, outline-default-encryption-scheme)
+       (outline-key-verifier-handling, outline-key-hint-handling)
+       (outline-encrypt-unencrypted-on-saves): New defcustoms.
+       (allout-file-key-verifier-string, allout-encryption-scheme)
+       (allout-key-verifier-string, allout-key-hint-string)
+       (allout-after-save-decrypt): New variables.
+       (allout-write-file-hook-handler, allout-auto-save-hook-handler)
+       (allout-after-saves-handler): New hook functions.
+       (allout-post-command-business): Do allout-after-save-decrypt.
+       (allout-enable-file-variable-adjustment): Custom var to enable
+       mechanism for adding and adjusting settings of Emacs file variables.
+       (allout-adjust-file-variable, allout-file-vars-section-data):
+       New functions, implement the mechanism.
+       (outlineify-sticky): Use the file vars mechanism.
+       (allout-inhibit-protection, allout-during-write-cue)
+       (allout-override-protect, allout-before-change-protect): Remove.
+       (allout-flag-region, allout-open-topic): Adjust read-only text.
+       (allout-open-line-not-read-only): Add to facilitate read-only
+       text based protection.
+       (allout-kill-line): Revise to adjust read-only text, clue the
+       user about the inhibition.
+       (allout-unprotected): Use unwind-protect.
+       (allout-shift-in, allout-shift-out): Disallow manually shifting a
+       topic deeper than the offspring depth of the previous topic -
+       avoiding confusing "containment discontinuities".
+       (allout-reindent-bodies): Fix retention of body relative hanging
+       indent during promotion of collapsed bodies.
+       (allout-open-topic): Make it easy to open new topic with same
+       bullet as current topic - topic creation functions provided with
+       any universal argument provokes now prompt for bullet, defaulting
+       to the bullet of the previous topic.
+       (allout-plain-bullets-string, allout-distinctive-bullets-string):
+       Plain bullet alternates `.' period and `,' comma only.  All other
+       bullets are relegated to special status (but customizable).
+       (allout-end-of-entry): Rename from allout-end-of-current-entry
+       since it actually operates w.r.t. most immediately containing
+       entry, visible or not.
+       (allout-hide-current-entry, allout-show-current-entry): Use the
+       revised version.
+       (allout-old-expose-topic): Solidify deprecation.
+       (allout-end-of-subtree): Add so we can span concealed as well
+       as visible topics.
+       (allout-end-of-current-subtree): Use `allout-end-of-subtree'.
+       (allout-end-of-current-heading): Tweak to just respect the first line.
+       (allout-get-body-text): Add.
+       (allout-ascend-to-depth, allout-ascend): Position at end of prefix
+       when invoked interactively.
+       (allout-up-current-level): Use `interactive-p'.
+       (allout-mode, allout-init): Miscellaneous docstring and
+       operational refinements, as well as hookups of new encryption stuff.
+       (allout-beginning-of-current-entry): Now works as advertised.
+       (allout-end-of-current-entry): Remove of superfluous allout-show-entry.
+       (allout-isearch-rectification): Refine condition for isearching.
+       (allout-isearch-abort, allout-enwrap-isearch)
+       (allout-flag-region, my-region-active-p): Relocate some macros.
+       (allout-title): Fallback title is (buffer-name), not
+       non-existing (current-buffer-name).
+       (subst-char-in-string): Define if absent (for some XEmacs versions).
+
+2005-10-20  Jari Aalto  <jari.aalto@cante.net>
+
+       * mail/sendmail.el (mail-setup-hook, mail-aliases)
+       (mail-yank-prefix, mail-indentation-spaces, mail-yank-hooks)
+       (mail-citation-prefix-regexp, mail-signature-file)
+       (mail-default-headers, mail-bury-selects-summary)
+       (mail-send-nonascii): Add autoload cookies.
+
+2005-10-20  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
+
+       * frame.el (blink-cursor-mode): Add `mac' to the list of
+       window-system's that support blinking cursor.
+
+2005-10-20  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * textmodes/org.el (org-level-color-stars-only): Fix typo in docstring.
+
+2005-10-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el):
+       Bind find-file-suppress-same-file-warnings to t, to avoid warnings due
+       to different drive letter case in D:/foo/bar.el vs d:/foo/bar.el.
+
+2005-10-20  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-is-tramp-root): Simplify regexp matching tramp root.
+       (ido-set-current-directory): Don't add / after final @.
+       (ido-file-name-all-completions-1): Adapt to fixed tramp completion.
+       Explicitly handle ange-ftp completion oddities.
+       (ido-make-file-list): Don't rotate list at tramp root to avoid
+       triggering tramp file handler for expand-file-name via get-file-buffer.
+
+2005-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * savehist.el (savehist-coding-system): Revert to checking XEmacs.
+
+2005-10-19  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-units.el (math-standard-units): Add units, adjust
+       symbols and update values.
+       (math-unit-prefixes): Add more prefixes.
+
+2005-10-19  Romain Francoise  <romain@orebokech.com>
+
+       * bookmark.el (bookmark-menu-heading): New face.
+       (bookmark-bmenu-list): Use it.
+       Don't fiddle with `baud-rate' at top-level.
+
+2005-10-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image.el (create-image, find-image): Mention max-image-size in
+       docstring.
+
+2005-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * savehist.el (savehist-load): Revert to checking XEmacs.
+
+       * textmodes/conf-mode.el: Don't use font-lock-defaults-alist.
+       Various docstring and line-width fixups.
+       (conf-mode): Use cond.
+       Set font-lock-defaults.  Don't set comment-use-syntax.
+
+2005-10-18  David Ponce  <david@dponce.com>
+
+       * tree-widget.el (tree-widget-button-click): New function.
+       (tree-widget-button-keymap): Use it.
+
+2005-10-18  Romain Francoise  <romain@orebokech.com>
+
+       * bookmark.el (bookmark-insert-location, bookmark-bmenu-list)
+       (bookmark-bmenu-hide-filenames): Add follow-link property.
+       Improve help-echo text.
+
+       * ffap.el (find-file-at-point): Doc fix.
+
+2005-10-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mouse.el (mouse-set-region): Don't do sit-for on a mac frame.
+
+2005-10-18  Masatake YAMATO  <jet@gyve.org>
+
+       Install to the CVS repository what I forgot to install in my
+       2005-10-16 changes.
+
+       * progmodes/python.el (python-complete-symbol): Pass the common
+       prefix substring of completion to `display-completion-list'.
+
+       * textmodes/org.el (org-complete): Ditto.
+
+2005-10-18  Masatake YAMATO  <jet@gyve.org>
+
+       Fix a bug reported by Sven Joachim <sven_joachim@web.de>.
+
+       * woman.el (WoMan-xref-man-page): New button type derived
+       from `Man-abstract-xref-man-page'.
+       (woman-mode): Pass `WoMan-xref-man-page' to `Man-highlight-references'.
+
+       * man.el (Man-abstract-xref-man-page): New button type.
+       (Man-xref-man-page): Make it derived from `Man-abstract-xref-man-page'.
+       (Man-highlight-references): Add new optional argument `xref-man-type'.
+
+2005-10-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Correct condition for fringe.
+
+2005-10-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-edit.el (Custom-move-and-invoke): Delete.
+       (custom-mode-map): Bind mouse-1 to widget-move-and-invoke.
+
+       * wid-edit.el (widget-move-and-invoke): New function, from
+       Custom-move-and-invoke.
+
+2005-10-17  Bill Wohler  <wohler@newt.com>
+
+       Move all remaining images from lisp/toolbar to etc/images, move
+       lisp/toolbar/tool-bar to lisp and "delete" lisp/toolbar.  Place
+       the low resolution images in their own directory (low-color).
+
+       * toolbar/attach.*, toolbar/cancel.*, toolbar/close.*
+       * toolbar/copy.*, toolbar/cut.*, toolbar/diropen.*, toolbar/exit.*
+       * toolbar/help.*, toolbar/home.*, toolbar/index.*, toolbar/info.*
+       * toolbar/mail.*, toolbar/new.*, toolbar/open.*, toolbar/paste.*
+       * toolbar/preferences.*, toolbar/print.*, toolbar/save.*
+       * toolbar/saveas.*, toolbar/search.*, toolbar/search-replace.*
+       * toolbar/spell.*, toolbar/undo.*: Move to etc/images.
+
+       * toolbar/lc-copy.*: Move to etc/images/low-color/copy.*.
+       * toolbar/lc-cut.*: Move to etc/images/low-color/cut.*.
+       * toolbar/lc-help.*: Move to etc/images/low-color/help.*.
+       * toolbar/lc-home.*: Move to etc/images/low-color/home.*.
+       * toolbar/lc-index.*: Move to etc/images/low-color/index.*.
+       * toolbar/lc-new.*: Move to etc/images/low-color/new.*.
+       * toolbar/lc-open.*: Move to etc/images/low-color/open.*.
+       * toolbar/lc-paste.*: Move to etc/images/low-color/paste.*.
+       * toolbar/lc-preferences.*: Move to etc/images/low-color/preferences.*.
+       * toolbar/lc-print.*: Move to etc/images/low-color/print.*.
+       * toolbar/lc-save.*: Move to etc/images/low-color/save.*.
+       * toolbar/lc-saveas.*: Move to etc/images/low-color/saveas.*.
+       * toolbar/lc-search.*: Move to etc/images/low-color/search.*.
+       * toolbar/lc-spell.*: Move to etc/images/low-color/spell.*.
+       * toolbar/lc-undo.*: Move to etc/images/low-color/undo.*.
+
+       To conform with convention, replace the underscore (_) in the
+       following image names with dash (-) or (/) as appropriate.
+
+       * toolbar/back_arrow.*: Move to etc/images/back-arrow.*.
+       * toolbar/fld_open.*: Move to etc/images/fld-open.*.
+       * toolbar/fwd_arrow.*: Move to etc/images/fwd-arrow.*.
+       * toolbar/jump_to.*: Move to etc/images/jump-to.*.
+       * toolbar/left_arrow.*: Move to etc/images/left-arrow.*.
+       * toolbar/right_arrow.*: Move to etc/images/right-arrow.*.
+       * toolbar/up_arrow.*: Move to etc/images/up-arrow.*.
+       * toolbar/lc-back_arrow.*: Move to etc/images/low-color/back-arrow.*.
+       * toolbar/lc-fwd_arrow.*: Move to etc/images/low-color/fwd-arrow.*.
+       * toolbar/lc-jump_to.*: Move to etc/images/low-color/jump-to.*.
+       * toolbar/lc-left_arrow.*: Move to etc/images/low-color/left-arrow.*.
+       * toolbar/lc-right_arrow.*: Move to etc/images/low-color/right-arrow.*.
+       * toolbar/lc-up_arrow.*: Move to etc/images/low-color/up-arrow.*.
+       * toolbar/mail_compose.*: Move to etc/images/mail/compose.*.
+       * toolbar/mail_send.*: Move to etc/images/mail/send.*.
+
+       * info.el (info-tool-bar-map): Replace underscores in image names
+       with dashes.
+
+       * makefile.w32-in (WINS): Remove toolbar.
+
+       * menu-bar.el: Replace toolbar/tool-bar.el with tool-bar.el in comment.
+
+       * tool-bar.el: Move to lisp from toolbar.  Now that
+       toolbar is empty, it should be deleted when folks run "cvs up -P".
+
+2005-10-18  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-store.el (calc-store-into): Get the proper variable name
+       to display in message.
+
+2005-10-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-handler): Make watch
+       expressions display in speedbar for all buffers when debugging.
+       (gdb-speedbar-expand-node): Ensure node contraction is always updated.
+
+       * speedbar.el (speedbar-set-mode-line-format): Indent properly.
+       (speedbar-insert-button, speedbar-make-button):
+       Use add-text-properties.
+       (speedbar-update-localized-contents)
+       (speedbar-update-directory-contents)
+       (speedbar-update-special-contents): Use dolist.
+       (speedbar-buffer-easymenu-definition): Add a menu separator.
+
+2005-10-17  Jason Rumney  <jasonr@gnu.org>
+
+       * makefile.w32-in: Use $(lisp) consistently.
+       (pre-mh-loaddefs.el-SH, pre-mh-loaddefs.el-CMD): New targets
+       for shell specific generation of mh-autoloads.
+
+2005-10-17  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/tex-mode.el (tex-font-lock-keywords-2): Undo prev change.
+
+2005-10-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * jit-lock.el (jit-lock-fontify-now):
+       Move jit-lock-context-unfontify-pos to avoid wasted work.
+
+2005-10-17  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-completion-mode): New defvar.  Used in
+       `tramp-completion-mode' for checking if we are in completion mode.
+       (tramp-completion-handle-file-name-all-completions): Reorder code
+       in order to complete for file names only in case there are no
+       method/user/host completions.  This is necessary for cooperation
+       with ido.  Reported by Kim F. Storm <storm@cua.dk>.
+
+2005-10-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-search-forward)
+       (longlines-search-backward): Match any number of spaces.
+
+2005-10-16  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * diff-mode.el (diff-mode): Doc fix.
+
+2005-10-16  David Reitter  <david.reitter@gmail.com>
+
+       * mail/sendmail.el (send-mail-function): Use mailclient-send-it
+       as default on darwin and windows systems.
+
+2005-10-16  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
+
+       * arc-mode.el (archive-zip-extract): Doc fix.
+
+2005-10-16  Romain Francoise  <romain@orebokech.com>
+
+       * mouse.el (mouse-1-click-follows-link): Doc fix.
+
+2005-10-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * savehist.el: Don't require CL at runtime.
+       (savehist-xemacs): Remove.
+       (savehist-coding-system): Use utf-8 if present, regardless of religion.
+       (savehist-no-conversion): Use (featurep 'xemacs).
+       (savehist-load): Check existence of start-itimer rather than XEmacs.
+       Use an idle timer.
+       (savehist-process-for-saving): Replace use of CL funs `subseq' and
+       `delete-if-not'.
+
+2005-10-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * savehist.el: Newer version.
+       (savehist-autosave-interval, savehist-coding-system, savehist-timer)
+       (savehist-last-checksum, savehist-no-conversion): New vars.
+       (savehist-autosave, savehist-process-for-saving, savehist-printable):
+       New functions.
+       (savehist-load, savehist-save): Use them.
+       (savehist-delimit): Remove.
+
+2005-10-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/compile.el (compilation-goto-locus): Display the
+       compilation buffer first and the source buffer second, in case they're
+       in overlapping frames.  Don't raise the compilation frame if it was the
+       selected window upon entry.  Pass the `other-window' arg to
+       pop-to-buffer.
+
+       * info.el (Info-fontify-node): Use dolist.
+       Change add-text-properties to put-text-property.
+
+2005-10-16  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-font-lock-url): Catch when point past
+       bound of search.
+
+2005-10-16  Masatake YAMATO  <jet@gyve.org>
+
+       * dabbrev.el (dabbrev-completion): Pass the common
+       prefix substring of completion to `display-completion-list'.
+
+       * filecache.el (file-cache-minibuffer-complete)
+       (file-cache-complete): Ditto.
+
+       * tempo.el (tempo-display-completions): Ditto.
+
+       * wid-edit.el (widget-file-complete, widget-color-complete): Ditto.
+
+       * emacs-lisp/lisp.el (lisp-complete-symbol): Ditto.
+
+       * eshell/em-hist.el (eshell-list-history): Ditto.
+
+       * mail/mailabbrev.el (mail-abbrev-complete-alias): Ditto.
+
+       * mail/mailalias.el (mail-complete): Ditto.
+
+       * progmodes/etags.el (complete-tag): Ditto.
+
+       * progmodes/make-mode.el (makefile-complete): Ditto.
+
+       * progmodes/meta-mode.el (meta-complete-symbol): Ditto.
+
+       * progmodes/octave-mod.el (octave-complete-symbol): Ditto.
+
+       * progmodes/pascal.el (pascal-complete-word)
+       (pascal-show-completions): Ditto.
+
+       * textmodes/bibtex.el (bibtex-complete-internal): Ditto.
+
+       * simple.el (completion-common-substring): New variable.
+       (completion-setup-function): Use `completion-common-substring'
+       to put faces.
+
+2005-10-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Apply 2005-10-09 change for term/x-win.el.
+       (x-get-selection, mac-select-convert-to-string): Convert from/to
+       UTF-16 clipboard data as in native byte order, no BOM.
+
+2005-10-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-tool-bar-map): Rename the images
+       appropriately (gud/next, gud/nexti, gud/step, gud/stepi).
+       (gud-sentinel): Use speedbar-frame to check for speedbar.
+
+2005-10-15  Richard M. Stallman  <rms@gnu.org>
+
+       * savehist.el: New file.
+
+2005-10-14  Karl Chen  <quarl@cs.berkeley.edu>
+
+       * textmodes/tex-mode.el (tex-font-lock-keywords-2):
+       Fix bug in \bf fontification.
+
+2005-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs.el (cvs-edit-log-files): New var.
+       (cvs-mode-edit-log): New arg `file'.
+       (cvs-edit-log-minor-wrap): Don't set the ignore-marks property.
+       Instead force the use of the original file and nothing else.
+       (cvs-edit-log-filelist): Don't use the cvs-mode-* function unless
+       the cvs-minor-wrap-function is set.
+       (cvs-do-edit-log): Obey the vars set in cvs-edit-log-minor-wrap.
+
+2005-10-14  Bill Wohler  <wohler@newt.com>
+
+       * toolbar/gud-break.*: Moved to etc/images/gud/break.*.
+       * toolbar/gud-cont.*: Moved to etc/images/gud/cont.*.
+       * toolbar/gud-down.*: Moved to etc/images/gud/down.*.
+       * toolbar/gud-finish.*: Moved to etc/images/gud/finish.*.
+       * toolbar/gud-ni.*: Moved to etc/images/gud/ni.*.
+       * toolbar/gud-n.*: Moved to etc/images/gud/n.*.
+       * toolbar/gud-print.*: Moved to etc/images/gud/print.*.
+       * toolbar/gud-pstar.*: Moved to etc/images/gud/pstar.*.
+       * toolbar/gud-remove.*: Moved to etc/images/gud/remove.*.
+       * toolbar/gud-run.*: Moved to etc/images/gud/run.*.
+       * toolbar/gud-si.*: Moved to etc/images/gud/si.*.
+       * toolbar/gud-s.*: Moved to etc/images/gud/s.*.
+       * toolbar/gud-until.*: Moved to etc/images/gud/until.*.
+       * toolbar/gud-up.*: Moved to etc/images/gud/up.*.
+       * toolbar/gud-watch.*: Moved to etc/images/gud/watch.*.
+
+       * progmodes/gud.el (gud-tool-bar-map): Rename the images
+       appropriately (for example, gud-break to gud/break).
+
+2005-10-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlinges-search-function)
+       (longlines-search-forward, longlines-search-backward): New functions.
+       (longlines-mode): Set isearch-search-fun-function to
+       longlinges-search-function.
+
+       * mouse.el (mouse-drag-region-1): Handle the case where a
+       double-click event is bound to an arbitrary function.
+
+2005-10-14  David Ponce  <david@dponce.com>
+
+       * recentf.el (recentf-track-opened-file)
+       (recentf-track-closed-file, recentf-update-menu)
+       (recentf-used-hooks, recentf-enabled-p): Move before dialog stuff.
+       (recentf-dialog-mode-map): Map follow-link to RET, so dialogs obey
+       mouse-1-click-follows-link.
+
+2005-10-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from
+       Gnome file-manager.png.  Suggested by
+       Joachim Nilsson <joachim.nilsson@vmlinux.org>.
+
+       * toolbar/README: Add diropen.xpm.
+
+2005-10-13  Bill Wohler  <wohler@newt.com>
+
+       * makefile.w32-in (MH_E_SRC): Rename from MH-E-SRC per NMAKE
+       restrictions.  Suggested by David Robinow <drobinow@gmail.com>.
+
+2005-10-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/mixal-mode.el (mixal-operation-codes-alist):
+       Don't waste the byte-compiler's time on constant data.
+
+2005-10-13  Kenichi Handa  <handa@m17n.org>
+
+       * international/utf-8.el (utf-8-compose): Display an invalid UTF-8
+       byte with `escape-glyph' face.
+
+       * international/fontset.el (ccl-encode-unicode-font):
+       Lookup utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode.
+       Handle the case that ucs-mule-to-mule-unicode translates a character to
+       ASCII (usually for IPA characters).
+
+2005-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * info.el (Info-fontify-node): Don't be fooled by a lone "...".
+       Don't hide the underline of titles if font-lock-mode is disabled.
+
+2005-10-12  Bill Wohler  <wohler@newt.com>
+
+       * makefile.w32-in (MH-E-SRC): New.  Used by mh-autoloads.
+       (mh-autoloads): New.  Builds mh-e/mh-loaddefs.el.  Rebuilds if any
+       files in MH-E-SRC have been updated.
+       (updates, compile, recompile, bootstrap): Depend on mh-autoloads.
+
+2005-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/mixal-mode.el (mixal-operation-codes): Remove.
+       (mixal-mode-syntax-table): Add \n as end-comment.
+       (mixal-operation-codes-alist): Immediately initialize to full value.
+       (mixal-add-operation-code): Remove.
+       (mixal-describe-operation-code): Make the arg non-optional.
+       Use the interactive spec instead.
+       Use mixal-operation-codes-alist rather than mixal-operation-codes.
+       (mixal-font-lock-keywords): Don't highlight comments here any more.
+       (mixal-font-lock-syntactic-keywords): New var.
+       (mixal-mode): Use it.  Fix comment-start-skip.
+
+2005-10-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * startup.el (command-line-x-option-alist): -nb => -nbi.
+
+2005-10-12  Kim F. Storm  <storm@cua.dk>
+
+       * startup.el (fancy-splash-default-action): Discard mouse click in
+       the splash screen window, as it has no sensible meaning in the
+       next window to be selected.  Fixes error reported by Jan D.
+
+2005-10-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil.
+
+2005-10-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/mixal-mode.el: Sync with version in the GNU MDK project.
+       Try to fix up minor layout issues like indentation, line break, etc...
+       (mixal-mode-syntax-table): Don't try to specify comment syntax,
+       because it doesn't work.
+       (mixal-operation-codes): Add some more codes.
+       (mixal-font-lock-keywords): Process comments here.
+       (mixal-mode): mixasm no longer needs -g option.
+
+2005-10-11  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
+
+       * progmodes/sh-script.el (sh-tmp-file):
+       Use mktemp -t.  Finish support for es and rc shells.
+
+2005-10-11  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calcalg2.el (calc-integral): With an argument, compute the
+       definite integral.
+
+2005-10-11  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mouse.el (mouse-drag-region-1): Don't try to catch a
+       double-click when doing follow-link (it's overridden anyway).
+
+2005-10-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/autoload.el (update-directory-autoloads): Doc fix.
+       (autoload-print-form-outbuf): Add docstring.
+
+2005-10-11  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-mode-menu): Delete menu item "Edit".
+       (Info-mode): Delete description of Info-edit from docstring,
+       and rearrange descriptions of Info commands in the order
+       they are documented in the Info manual.
+
+2005-10-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * calendar/appt.el (appt-check): Use diary-selective-display var.
+
+2005-10-10  Richard M. Stallman  <rms@gnu.org>
+
+       * net/newsticker.el (newsticker-start, newsticker-show-news):
+       Add autoload cookies.
+
+2005-10-10  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>
+
+       * progmodes/sh-script.el (sh-tmp-file): Use mktemp.
+
+2005-10-10  Karl Chen  <quarl@cs.berkeley.edu>
+
+       * jka-cmpr-hook.el (jka-compr-handler): Fix typo in `operations' prop.
+
+2005-10-10  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-arith.el (math-check-known-scalarp)
+       (math-check-known-matrixp): Check the values of arguments that are
+       variables.
+       (math-check-known-square-matrixp): New function.
+       (math-known-square-matrixp): Use math-check-known-square-matrixp.
+       (math-super-types): Add sqmatrix type.
+
+       * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec): Change the
+       mode name `square' to `sqmatrix'.
+
+       * calc/calc.el (calc-matrix-mode, calc-set-mode-line): Change the
+       mode name `square' to `sqmatrix'.
+
+2005-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/etags.el (select-tags-table-mode): Don't use
+       selective-display.
+       (tags-select-tags-table): Pass `button' to the action function.
+       (select-tags-table): Place the side-info on button properties rather
+       than in hidden text.  Abbreviate file names.
+       (select-tags-table-mode-map): Inherit rather than copy buttom-map.
+       (select-tags-table-select): Add `button' argument.
+       Get side-info from the button property rather than from hidden text.
+
+2005-10-11  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-install-speedbar-variables): Add more bindings.
+       (gud-speedbar-buttons): Preserve point if possible.
+       (gud-sentinel): Restore previous speedbar display type.
+
+       * progmodes/gdb-ui.el (gdba): Improve diagram.
+       (def-gdb-auto-update-handler, gdb-info-locals-handler)
+       (gdb-put-breakpoint-icon, gdb-remove-breakpoint-icons):
+       Call get-buffer-window once.
+
+2005-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/pascal.el (pascal-mode-map): Move init into declaration.
+       (pascal-mode-syntax-table): Make (* *) markers same class as { ... }.
+       (pascal-indent-command): Remove unused var `ind'.
+       (pascal-indent-case): Remove unused var `oldpos'.
+       (pascal-outline-map): Don't inherit from pascal-mode-map anymore,
+       since it's now used as a proper minor mode map.
+       (pascal-outline): Rename to pascal-outline-mode.
+       (pascal-outline-mode): Use define-minor-mode.
+       (pascal-outline-mode, pascal-outline-change): Use overlays rather than
+       selective-display.
+
+2005-10-10  Andreas Schwab  <schwab@suse.de>
+
+       * textmodes/tex-mode.el (tex-font-lock-keywords-2): Adjust match
+       number.  Reported by Karl Chen <quarl@cs.berkeley.edu>.
+
+       * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Fix for building
+       outside source directory.
+
+2005-10-10  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-mode-map): Explicit definition of `C-c
+       C-x' as a prefix.
+       (orgtbl-mode-map): Full keymap instead of sparse, because all
+       `self-insert-command' keys are redefined in this map.
+       (org-export-as-html): Specify charset for HTML file, by taking it
+       from the coding system.
+
+2005-10-10  Kenichi Handa  <handa@m17n.org>
+
+       * textmodes/flyspell.el (flyspell-check-word-p):
+       If unread-command-events is non-empty, don't call sit-for.
+
+2005-10-09  Richard M. Stallman  <rms@gnu.org>
+
+       * font-lock.el (font-lock-syntactic-keywords)
+       (font-lock-keywords): Doc fixes.
+
+       * textmodes/flyspell.el (flyspell-external-point-words):
+       Simplify logic, and don't try to check for consecutive appearances
+       of one incorrect word.
+
+2005-10-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.el (speedbar-buffer-easymenu-definition): Add menu
+       separator.
+
+       * progmodes/gud.el (gud-last-speedbar-buffer): Remove.
+       (gud-install-speedbar-variables): Add GUD to speedbar "Displays" list.
+       (gud-expansion-speedbar-buttons): New function.
+       (gud-speedbar-buttons): Check for gud-comint-buffer.
+
+2005-10-09  Bill Wohler  <wohler@newt.com>
+
+       * Makefile.in (updates): Add mh-loaddefs dependency.
+
+2005-10-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * speedbar.el (speedbar-file-key-map): Fix typo.
+
+2005-10-09  Daniel Brockman  <daniel@brockman.se>
+
+       * cus-start.el (line-spacing): Add custom spec.
+
+2005-10-09  Romain Francoise  <romain@orebokech.com>
+
+       * textmodes/ispell.el (ispell-check-version): Fix last change.
+
+2005-10-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * term/x-win.el: Remove -i, --icon-type from comment.
+
+       * startup.el (command-line-x-option-alist): Remove options -i,
+       -itype, --icon-type, added -nb, --no-bitmap-icon.
+
+2005-10-09  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-speedbar-menu-items): Use :visible
+       instead of :active.
+
+2005-10-08  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
+
+       * textmodes/ispell.el (ispell-check-version):
+       Ignore hyphen, and all that follows, in aspell's version text.
+
+2005-10-08  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-arith.el (math-known-square-matrixp): New function.
+       (math-pow-fancy): Check for matrices before distributing exponent
+       across products.
+
+       * calc/calc-keypd.el (calc-do-keypad): Widen keypad window for
+       fullscreen keypad.  Suggested by Luc Teirlinck.
+       (calc-keypad-show-input): Add space for formatting.
+
+       * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec):
+       Add square matrix option.
+
+       * calc/calc-poly.el (math-expand-term): Check for matrices instead
+       of checking calc-matrix-mode when deciding how to expand.
+
+       * calc/calc.el (calc-set-mode-line): Add square matrix option.
+
+2005-10-08  Lars Hansen  <larsh@soem.dk>
+
+       * net/tramp.el (tramp-perl-directory-files-and-attributes):
+       Add error handling.
+       (tramp-handle-directory-files-and-attributes): Handle perl error msg.
+
+2005-10-08  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.51.
+
+       * net/tramp.el (tramp-handle-set-visited-file-modtime)
+       (tramp-handle-insert-file-contents, tramp-handle-write-region):
+       Insert special handling for `last-coding-system-used', again
+       it still seems to be necessary (unlike stated before).
+       Reported by Toshinori Sugita <sugita@d-pad.co.jp>.
+       (tramp-password-prompt-regexp): There might be other words before
+       trailing ":".  Reported by Kurt Steinkraus <kurt@steinkraus.us>.
+       (tramp-chunksize): Improve docstring.
+       (tramp-set-auto-save-file-modes): Octal integer code #o600 breaks
+       Emacs 20.  Use `tramp-octal-to-decimal' therefore.  Reported by
+       Christian Joergensen <bugs@razor.dk>.
+
+2005-10-07  Glenn Morris  <rgm@gnu.org>
+
+       * progmodes/f90.el (f90-keywords-re, f90-mode): Doc fix.
+       (f90-font-lock-keywords-2, f90-mode-abbrev-table): Add `double
+       precision'.
+
+2005-10-07  Romain Francoise  <romain@orebokech.com>
+
+       * ibuf-ext.el (ibuffer-do-shell-command-pipe)
+       (ibuffer-do-shell-command-pipe-replace)
+       (ibuffer-do-shell-command-file, ibuffer-do-eval)
+       (ibuffer-do-view-and-eval, ibuffer-do-rename-uniquely)
+       (ibuffer-do-revert, ibuffer-do-replace-regexp)
+       (ibuffer-do-query-replace, ibuffer-do-query-replace-regexp)
+       (ibuffer-do-print, ibuffer-filter-by-mode, ibuffer-filter-by-used-mode)
+       (ibuffer-filter-by-name, ibuffer-filter-by-filename)
+       (ibuffer-filter-by-size-gt, ibuffer-filter-by-size-lt)
+       (ibuffer-filter-by-content, ibuffer-filter-by-predicate)
+       (ibuffer-do-sort-by-major-mode, ibuffer-do-sort-by-mode-name)
+       (ibuffer-do-sort-by-alphabetic, ibuffer-do-sort-by-size):
+       Autoload file sans suffix.
+
+       * emulation/cua-base.el (cua-toggle-global-mark): Likewise.
+
+2005-10-07  David Ponce  <david@dponce.com>
+
+       * recentf.el (recentf-menu-open-all-flag): New option.
+       (recentf-digit-shortcut-command-name): New function.
+       (recentf--shortcuts-keymap): New variable.
+       (recentf-menu-shortcuts): New variable.
+       (recentf-make-menu-items): Initialize it.  Replace the "More..."
+       menu item by "All...", if `recentf-menu-open-all-flag' is non-nil.
+       (recentf-menu-value-shortcut): New function.
+       (recentf-make-menu-item): Use it.  No more in-lined.
+       (recentf-dialog-mode-map): Base on `recentf--shortcuts-keymap'.
+       (recentf-open-most-recent-file): Rename from
+       `recentf-open-file-with-key'.  Don't depend on key binding.
+       (recentf-mode-map): New variable.
+       (recentf-mode): Use it.
+
+2005-10-06  Bill Wohler  <wohler@newt.com>
+
+       * mh-e/mh-loaddefs.el: Remove.  Now generated automatically.
+
+       * Makefile.in (AUTOGENEL): Add mh-e/mh-loaddefs.el.
+       (MH-E-SRC): New.  Used by mh-autoloads.
+       (mh-autoloads): New.  Builds mh-e/mh-loaddefs.el.  Rebuilds if any
+       files in MH-E-SRC have been updated.
+       (compile, recompile, bootstrap): Depend on mh-autoloads.
+
+2005-10-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Only display un-intuitive
+       gud-break and gud-remove icons when the fringe is not available.
+
+       * progmodes/gdb-ui.el (gdb-fringe-width -> gdb-buffer-fringe-width):
+       Typo.
+
+2005-10-06  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac-@t-lrde.epita.fr>
+
+       * play/zone.el (zone): Wrap body with save-window-excursion.
+
+2005-10-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * calendar/cal-menu.el (calendar-mouse-view-diary-entries):
+       Use the new `list-only' arg to diary-list-entries.
+
+       * calendar/diary-lib.el: Use overlays rather than selective-display.
+       (diary-selective-display): New var.
+       (diary-header-line-format): Use it.
+       (diary-list-entries): Add argument `list-only'.
+       Put the buffer in diary-mode.  Don't add \^M at beg and end.
+       Replace \^M by invisible overlays.
+       (diary-unhide-everything): Replace \^M by invisible overlays.
+       (print-diary-entries): Look for overlays rather than \^M.
+       Add a space to the temp buffer name.
+       (diary-show-all-entries, mark-diary-entries, make-diary-entry):
+       Put the buffer in diary-mode.
+       (list-sexp-diary-entries): Replace \^M by invisible overlays.
+       (diary-anniversary): Make the year arg optional.
+       (diary-time-regexp): New const.
+       (diary-font-lock-keywords): Use it to accept a few more time formats.
+
+       * pcvs.el (cvs-sentinel): Make sure we do re-enable undo.
+
+2005-10-06  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * textmodes/artist.el (artist-ellipse-mirror-quadrant):
+       Fix bug introduced 2005-07-03: Use (car (last ...))
+       to faithfully reproduce replaced artist-last.
+       (artist-set-arrow-points-for-poly): Likewise.
+       Suggested by Johan Bockg\e,Ae\e(Brd.
+
+2005-10-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * dframe.el (x-pointer-hand2, x-pointer-top-left-arrow):
+       * wid-edit.el (widget):
+       * progmodes/gdb-ui.el (gdb-buffer-fringe-width):
+       * progmodes/vhdl-mode.el (speedbar-attached-frame): Add defvars.
+
+2005-10-06  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (set-language-environment):
+       Fix setting up of case-table for unibyte mode.
+
+       * simple.el (what-cursor-position): If the character is displayed
+       by some `display' text property, show that.  Don't use
+       single-key-description for eight-bit characters in multibyte mode.
+
+2005-10-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-fringe-width): New variable.
+       (gdb-ann3): Set it.
+       (gdb-put-breakpoint-icon): Don't take fringe-width from speedbar frame.
+       (gdb-info-frames-custom): Use inverse-video for first five
+       characters of selected frame only.
+       (gdb-get-frame-number): Select frame even when point is on frame
+       number.
+
+2005-10-06  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/gdb-ui.el (gdb-info-breakpoints-custom):
+       Put `font-lock-function-name-face'.
+       (gdb-info-frames-custom): Put `font-lock-function-name-face'
+       and `font-lock-variable-name-face'
+       (gdb-registers-font-lock-keywords): New font lock keywords definition.
+       (gdb-registers-mode): Use `gdb-registers-font-lock-keywords'.
+       (gdb-memory-font-lock-keywords): New font lock keywords definition.
+       (gdb-memory-mode): Use `gdb-memory-font-lock-keywords'.
+       (gdb-local-font-lock-keywords): New font lock keywords definition.
+       (gdb-locals-mode): Use `gdb-local-font-lock-keywords'
+       (gdb-threads-font-lock-keywords): New font lock keywords definition.
+       (gdb-threads-mode): Use `gdb-threads-font-lock-keywords'.
+
+2005-10-05  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-merge.el (ediff-merge-region-is-non-clash): New defsubst.
+       (ediff-merge-region-is-non-clash-to-skip): Previously called
+       ediff-merge-region-is-non-clash.
+
+       * ediff-mult.el (ediff-append-custom-diff, ediff-meta-show-patch):
+       Use insert-buffer-substring.
+
+       * ediff-ptch.el (ediff-fixup-patch-map): Use better heuristics for
+       selecting files to patch.  Also bug fixes.
+
+       * ediff-util.el (ediff-setup): Bug fix.
+       (ediff-next-difference): Never skip clashes that differ in white
+       space only.
+
+       * ediff-wind.el (ediff-setup-control-frame)
+       (ediff-destroy-control-frame): Check the menubar feature.
+
+       * viper-cmd.el (viper-normalize-minor-mode-map-alist)
+       (viper-refresh-mode-line): Use make-local-variable to localize
+       some vars instead of make-variable-buffer-local.  Suggested by
+       Stefan Monnier.
+
+       * viper-init.el (viper-make-variable-buffer-local): Delete alias.
+       (viper-restore-cursor-type, viper-set-insert-cursor-type):
+       Use make-local-variable instead of make-variable-buffer-local.
+       Suggested by Stefan Monnier.
+
+       * viper.el (viper-mode): Don't use viper-make-variable-buffer-local.
+       (viper-comint-mode-hook): Use make-local-variable on
+       require-final-newline.
+       (viper-non-hook-settings): Don't use make-variable-buffer-local.
+
+2005-10-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/scheme.el (scheme-mode-syntax-table): Mark ; as being
+       also the second char of a comment-start sequence.
+       (scheme-sexp-comment-syntax-table): New var.
+       (lambda, define): Set their scheme-doc-string-elt property.
+       (scheme-font-lock-syntactic-face-function): Handle sexp-comments.
+       Use lisp-font-lock-syntactic-face-function now that it properly
+       handles |...| symbols.
+       (scheme-mode-variables): Set lisp-doc-string-elt-property,
+       parse-sexp-lookup-properties and font-lock-extra-managed-props.
+
+       * emacs-lisp/lisp-mode.el (lisp-mode-syntax-table): Move the nesting
+       bit from # to |.
+       (lisp-font-lock-syntactic-face-function): Distinguish |...| symbols.
+
+       * emacs-lisp/lisp-mode.el (lambda): Add its doc-string-elt property.
+       (lisp-doc-string-elt-property): New var.
+       (lisp-font-lock-syntactic-face-function): Use it.
+       Rewrite to recognize docstrings even for forms not at toplevel.
+
+       * progmodes/scheme.el (scheme-mode-syntax-table): Put the nested
+       annotation on the | part of #| rather than on the # part.
+       (scheme-font-lock-syntactic-face-function): New function, to
+       distinguish strings from |...| symbols.
+       (scheme-mode-variables): Use it.  Also fix up the font-lock-time
+       syntax-table so that #|...|# is properly highlighted.
+
+       * emacs-lisp/lisp-mode.el (lisp-font-lock-syntactic-face-function):
+       Don't mark as docstring the 3rd elem of an unknown toplevel form.
+
+2005-10-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * bindings.el (global-map): Resync [home] and [end] bindings with C-a
+       and C-e.
+
+       * emacs-lisp/eldoc.el: Move comments into docstrings.
+       (eldoc-message-commands): Initialize in its declaration.
+       Add move-beginning-of-line and move-end-of-line.
+       (eldoc-add-command, eldoc-add-command-completions)
+       (eldoc-remove-command, eldoc-remove-command-completions): Simplify.
+
+       * outline.el (outline-mark-subtree): Activate the mark.
+
+       * calendar/appt.el (appt-time-regexp): New var.
+       (appt-add, appt-make-list): Use it.
+       (appt-convert-time): Clean up.
+
+       * textmodes/tex-mode.el (tex-font-lock-syntactic-face-function):
+       Don't set any syntax-table property here.
+       (tex-font-lock-verb): New function.  Do it here.
+       (tex-font-lock-syntactic-keywords): Use it.
+
+2005-10-04  Richard M. Stallman  <rms@gnu.org>
+
+       * wid-edit.el (widget-file-complete): Get the widget start point
+       the right way.  Default directory to `/' if file has none.
+
+       * x-dnd.el (x-dnd-drop-data): Check for dedicated windows.
+
+       * textmodes/flyspell.el (flyspell-mode-on):
+       Call ispell-maybe-find-aspell-dictionaries.
+
+       * textmodes/ispell.el (ispell-word, ispell-region):
+       Call ispell-maybe-find-aspell-dictionaries.
+       (ispell-accept-buffer-local-defs):
+       Don't call ispell-maybe-find-aspell-dictionaries.
+
+2005-10-04  Richard M. Stallman  <rms@gnu.org>
+
+       * iswitchb.el (iswitchb-buffer-ignore): Label it risky.
+
+2005-10-04  Emilio C. Lopes  <eclig@gmx.net>
+
+       * iswitchb.el (iswitchb-ignore-buffername-p): Use `functionp'
+       instead of `fboundp' in order to allow for anonymous functions.
+
+2005-10-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * info.el (Info-next, Info-prev, Info-up): Select info buffer, in
+       case the user clicks on the link while another window is selected.
+       (Info-speedbar-hierarchy-buttons): Use speedbar-current-frame.
+
+       * dframe.el (dframe-update-keymap): Use mouse-1-click-follows-link
+       functionality.
+       (dframe-help-echo): Save point in case mouse tracking is off.
+
+2005-10-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * net/ange-ftp.el (ange-ftp-ls): Fix typo introduced in last change.
+
+2005-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/cc-styles.el (c-setup-paragraph-variables): Make sure we do
+       not change the global value of those vars.
+
+       * progmodes/cc-mode.el (c-basic-common-init): Remove calls to
+       make-local-variable which we do not need any more.
+
+2005-10-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * speedbar.el (speedbar-ignored-path-regexp, speedbar-line-path)
+       (speedbar-ignored-path-expressions, speedbar-buffers-line-path)
+       (speedbar-add-ignored-path-regexp, speedbar-buffers-line-path)
+       (speedbar-path-line): Define obsolete aliases.
+       (speedbar-line-directory): Doc fix.
+
+       * progmodes/vhdl-mode.el (vhdl-speedbar-initialize)
+       (vhdl-speedbar-rescan-hierarchy): Call speedbar-line-directory
+       instead of speedbar-line-path.
+
+2005-10-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * x-dnd.el (x-dnd-drop-data): Don't set dnd-open-file-other-window
+       to nil if dropping on a window.  Handle dropping on a minibuffer window
+       like dropping on a non-window part of Emacs.
+
+2005-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * net/ange-ftp.el: Use with-current-buffer.
+       (ange-ftp-insert-directory): Do not follow symlinks any more.
+
+       * textmodes/ispell.el (ispell-find-aspell-dictionaries):
+       Remove interactive spec.
+
+2005-10-03  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-mode): Use custom-initialize-set.
+
+2005-10-02  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/ebnf2ps.el (ebnf-eps-production-list):
+       Use insert-buffer-substring.
+
+       * net/tramp.el: Pacify byte compiler warnings in pacification code.
+       (tramp-handle-file-local-copy): Use insert-buffer-substring.
+
+2005-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * net/ange-ftp.el (ange-ftp-insert-directory): Undo unintended part
+       in last change.
+       (ange-ftp-insert-directory): Fix up the search for the case where
+       `file' is absolute.
+
+2005-10-02  Romain Francoise  <romain@orebokech.com>
+
+       * progmodes/compile.el (compile-goto-error): Delete extra paren.
+
+2005-10-02  Andreas Schwab  <schwab@suse.de>
+
+       * ediff-ptch.el (ediff-fixup-patch-map): Handle file names without
+       directory component in the session info.
+
+2005-10-01  Richard M. Stallman  <rms@gnu.org>
+
+       * comint.el (comint-redirect-subvert-readonly): Doc fix.
+
+       * simple.el (next-error-internal): New function.
+
+       * progmodes/compile.el (compilation-buffer-name): New arg MODE-COMMAND.
+       (compilation-start): Pass new arg to compilation-buffer-name.
+       (compile-goto-error): Use next-error-internal.
+
+2005-10-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * speedbar.el: Remove RCS tag.
+       (speedbar-check-read-only): Handle non-existent files.
+
+       * dframe.el, ezimage.el, sb-image.el: Remove RCS tags.
+
+       * info.el (Info-speedbar-hierarchy-buttons)
+       (Info-speedbar-goto-node): Call speedbar-select-attached-frame.
+
+2005-10-01  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-valid-entry-whitespace-re):
+       Do not match newline.
+       (bibtex-realign): Do not use bibtex-valid-entry-whitespace-re.
+       (bibtex-summary): Remove unnecessary save-excursion.
+       (bibtex-fill-field-bounds): Use fill-region-as-paragraph.
+
+2005-10-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Add charset info for "iso10646-1".
+       Modify default fontset to use ATSUI-compatible fonts for some charsets
+       if available.
+
+2005-10-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * speedbar.el: Re-apply arch tag.
+       (speedbar-version): Rename to version 1.0.  Suggested by Eric
+       M. Ludlam.
+       Reapply two changes from Emacs CVS' version of speedbar lost
+       during the merge:
+       (speedbar-use-imenu-flag): Avoid unnecessary use of locate-library.
+       (speedbar-frame-parameters): Improve customize type.
+
+2005-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * net/ange-ftp.el (ange-ftp-gwp-start): Use with-current-buffer.
+       (ange-ftp-file-directory-p): Fix the symlink case.
+       (ange-ftp-insert-directory): When listing a single file, get a list of
+       the parent buffer and extract the relevant line.  Inspired from a patch
+       by Katsumi Yamaoka <yamaoka@jpl.org>.
+       (ange-ftp-file-name-sans-versions): Simplify.
+
+2005-09-30  Bill Wohler  <wohler@newt.com>
+
+       Move MH-E image files from toolbar and mail directories into
+       etc/images.
+
+       * mail/reply2.*: Move to etc/images/mail/reply*.
+
+       * toolbar/execute.*, toolbar/highlight.*, toolbar/mh-logo.xpm:
+       * toolbar/page-down.*, toolbar/show.*, toolbar/widen.*: Move to
+       etc/images.
+
+       * toolbar/alias.*, toolbar/refile.*, toolbar/repack.*:
+       * toolbar/reply*: Move to etc/images/mail.
+
+       * toolbar/rescan.*: Move and rename to etc/images/refresh.*.
+
+2005-09-30  Eric M. Ludlam  <zappo@gnu.org>
+
+       * speedbar.el: New version 1.0pre3.
+
+       Frame management code (including timer, and mouse click specifics)
+       moved to dframe.el:
+       (speedbar-attached-frame): Removed.  Use dframe-attached-frame.
+       (speedbar-timer): Removed.  Use dframe-timer.
+       (speedbar-close-frame): Removed.  Use dframe-close-frame.
+       (speedbar-activity-change-focus-flag): Removed.  Use
+       dframe-activity-change-focus-flag.
+       (speedbar-update-speed, speedbar-navigating-speed): Obsolete.  Use
+       dframe-update-speed.
+
+       (speedbar-current-frame): New macro.  Use this instead of the
+       variable speedbar-frame.
+
+       (speedbar-use-images, speedbar-expand-image-button-alist)
+       (speedbar-insert-image-button-maybe): Moved to sb-image.el.
+
+       (speedbar-find-image-on-load-path): Removed.  Replaced by
+       defezimage in ezimage.el.
+       (speedbar-expand-image-button-alist): Removed.  Replaced by
+       ezimage-expand-image-button-alist in ezimage.el.
+
+       (speedbar-ignored-directory-regexp)
+       (speedbar-add-ignored-directory-regexp)
+       (speedbar-ignored-directory-expressions)
+       (speedbar-line-directory, speedbar-buffers-line-directory)
+       (speedbar-directory-line, speedbar-buffers-line-directory):
+       Renamed, replacing `path' with `directory'.
+
+       (speedbar-create-directory, speedbar-expand-line-descendants)
+       (speedbar-toggle-line-expansion)
+       (speedbar-contract-line-descendants): New commands.
+
+       (speedbar-query-confirmation-method, speedbar-select-frame-method)
+       (speedbar-use-tool-tips-flag): New options.
+
+       (speedbar-check-read-only, speedbar-require-version)
+       (speedbar-insert-separator, speedbar-buffers-tail-notes)
+       (speedbar-handle-delete-frame, speedbar-try-completion)
+       (speedbar-update-localized-contents): New functions.
+
+       (speedbar-incompatible-version, speedbar-ro-to-do-point)
+       (speedbar-object-read-only-indicator): New variables.
+
+       (speedbar-visiting-tag-hook, speedbar-before-visiting-file-hook):
+       New hooks.
+
+       (speedbar-separator-face): New face.
+
+       (speedbar-supported-extension-expressions): Add `.g' and `.ma?k'.
+       (speedbar-ignored-modes): Add fundamental-mode.
+       (speedbar-directory-unshown-regexp): Add . directories.
+
+       (speedbar-key-map): Remove old SPC and DEL page up/down keys.
+       (speedbar-file-key-map): Add SPC to toggle node expansion, `[' and
+       `]' for full expand/close.
+       (speedbar-buffers-key-map): Add SPC to toggle node expansion.
+
+       (speedbar-check-vc): Support hidden files.
+       (speedbar-vc-check-dir-p): Use vc-state if available for CVS.
+       (speedbar-this-file-in-vc): Use vc-state if available.  If VC
+       state is nil, it is not checked out.
+
+       (speedbar-line-text, speedbar-line-token): Support expand buttons
+       with no text.
+       (speedbar-refresh): Universal argument acts as power-click.
+       (speedbar-fetch-dynamic-tags): If a buffer is in Emacs, switch to
+       that buffer to get variable values.
+
+       And many other bugfixes.
+
+       * dframe.el, ezimage.el, sb-image.el: New files.
+
+       * sb-*.xpm: Remove files.  New image files installed into
+       etc/images/ezimage.
+
+2005-09-30  Kenichi Handa  <handa@m17n.org>
+
+       * ps-mule.el (ps-mule-show-warning): If a character is in
+       ps-print-translation-table, don't treat it as non-printable.
+
+2005-09-30  David Ponce  <david@dponce.com>
+
+       * tree-widget.el (tree-widget-themes-load-path): New variable.
+       (tree-widget-themes-directory): Doc fix.
+       (tree-widget-image-formats) [Emacs]: Doc fix.
+       (tree-widget--locate-sub-directory): New function.
+       (tree-widget-themes-directory): Use it.
+
+       * recentf.el (recentf-filename-handlers): Rename from
+       `recentf-filename-handler'.  Allow a list of functions.
+       (recentf-menu-items-for-commands): Fix :help strings.
+       (recentf-apply-filename-handlers): New function.
+       (recentf-expand-file-name): Use it.
+       (recentf-cleanup): Remove duplicates too.
+
+2005-09-29  Juri Linkov  <juri@jurta.org>
+
+       * faces.el: Rearrange face definitions to be in the same order as
+       their face descriptions in "(emacs)Standard Faces".
+
+       * isearch.el (isearch, lazy-highlight): Add group `basic-faces'.
+
+       * tooltip.el (tooltip): Add group `basic-faces'.
+
+       * buff-menu.el (Buffer-menu-buffer): Remove group
+       `font-lock-highlighting-faces'.
+
+       * progmodes/compile.el (compilation-error, compilation-warning)
+       (compilation-info, compilation-line-number, compilation-column-number):
+       Change group from `font-lock-highlighting-faces' to `compilation'.
+
+       * progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
+       (vhdl-font-lock-attribute-face, vhdl-font-lock-enumvalue-face)
+       (vhdl-font-lock-function-face, vhdl-font-lock-directive-face)
+       (vhdl-font-lock-reserved-words-face)
+       (vhdl-font-lock-translate-off-face, syntax-alist): Remove group
+       `font-lock-highlighting-faces'.
+
+       * cus-edit.el (custom-buffer-sort-alphabetically): Default to nil.
+
+2005-09-28  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el: Set CUA move property on additional commands:
+       up-list, down-list, backward-up-list, end-of-defun beginning-of-defun,
+       forward-sexp, backward-sexp, forward-list, backward-list.
+
+2005-09-28  Romain Francoise  <romain@orebokech.com>
+
+       * comint.el (comint-show-output): Really set point at the
+       beginning of the output when not using `comint-use-prompt-regexp'.
+
+2005-09-27  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-lang.el (math-oper-table): Raise the precedence of "/"
+       in TeX mode.
+
+2005-09-26  Juanma Barranquero  <lekktu@gmail.com>
+
+       * textmodes/org.el (org-table-sum): Fix format string.
+
+       * textmodes/tex-mode.el (tex-insert-quote, latex-indent):
+       Quote face names.
+
+2005-09-26  Romain Francoise  <romain@orebokech.com>
+
+       * isearch.el (isearch-forward-regexp): Close doc string.
+
+2005-09-25  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (blink-matching-open): Don't no-op when point is BEGV+1.
+
+       * isearch.el (isearch-forward, isearch-forward-regexp): Doc fixes.
+
+       * progmodes/compile.el (compilation-error-properties):
+       When getting the file from the previous error message,
+       correctly decode the new data format.
+
+       * progmodes/cc-cmds.el (c-electric-paren):
+       Call old-blink-paren only for close-paren.
+
+2005-09-24  Andreas Schwab  <schwab@suse.de>
+
+       * term/rxvt.el (rxvt-register-default-colors): Delete redundant
+       condition.
+
+2005-09-25  Romain Francoise  <romain@orebokech.com>
+
+       * dired-aux.el (dired-copy-file-recursive):
+       * dired.el (dired-delete-file):
+       * ediff-mult.el (ediff-dir-diff-copy-file):
+       * ediff-util.el (ediff-test-save-region):
+       * forms.el (forms-mode):
+       * ido.el (ido-file-internal, ido-delete-file-at-head):
+       * log-edit.el (log-edit-done):
+       * ses.el (ses-yank-resize):
+       * play/gomoku.el (gomoku-human-plays, gomoku)
+       (gomoku-human-resigns, gomoku-prompt-for-other-game)
+       (gomoku-offer-a-draw):
+       * play/landmark.el (lm-human-resigns, lm):
+       * net/eudcb-ldap.el (eudc-ldap-check-base):
+       * play/mpuz.el (mpuz-offer-abort, mpuz-try-letter, mpuz-close-game):
+       * progmodes/ebrowse.el (ebrowse-find-pattern):
+       * progmodes/idlw-shell.el (idlwave-shell-set-bp-check):
+       * textmodes/reftex-index.el (reftex-index-initialize-phrases-buffer):
+       End `yes-or-no-p' and `y-or-n-p' prompts with question mark and space.
+
+       * vc.el (vc-delete-file):
+       * play/gomoku.el (gomoku-terminate-game, gomoku)
+       (gomoku-prompt-for-move, gomoku-human-takes-back):
+       * play/landmark.el (lm-human-takes-back, lm-prompt-for-move)
+       (lm-start-robot, lm-human-plays): Remove extraneous spaces in messages.
+
+2005-09-24  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/rxvt.el (rxvt-register-default-colors): Add support for 255
+       color rxvt terminals by using the code xterm.el used to use before
+       2005-04-09 in order to match the colors used by rxvt.
+
+2005-09-24  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
+
+       * term/rxvt.el (rxvt-register-default-colors): Add support for 88
+       colors rxvt-unicode terminals by using the same code as xterm.el.
+
+2005-09-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/tex-mode.el (tex-font-lock-append-prop)
+       (tex-font-lock-suscript, tex-insert-quote, latex-indent): Adjust to the
+       new symbol used for the tex-verbatim face.
+
+2005-09-24  Emilio C. Lopes  <eclig@gmx.net>
+
+       * woman.el (woman-file-name):
+       * wid-edit.el (widget-file-prompt-value)
+       (widget-coding-system-prompt-value):
+       * w32-fns.el (set-w32-system-coding-system):
+       * vc.el (vc-version-diff, vc-annotate):
+       * textmodes/reftex-auc.el (reftex-arg-cite)
+       (reftex-arg-index-tag):
+       * textmodes/refer.el (refer-get-bib-files):
+       * textmodes/artist.el (artist-figlet-choose-font):
+       * terminal.el (terminal-emulator):
+       * replace.el (occur-read-primary-args):
+       * rect.el (string-rectangle, string-insert-rectangle):
+       * ps-print.el (ps-print-preprint):
+       * progmodes/pascal.el (pascal-goto-defun):
+       * progmodes/etags.el (visit-tags-table, visit-tags-table-buffer):
+       * progmodes/compile.el (compilation-find-file):
+       * printing.el (pr-interactive-n-up):
+       * play/animate.el (animate-birthday-present):
+       * net/rcompile.el (remote-compile):
+       * man.el (man, Man-goto-section, Man-follow-manual-reference):
+       * mail/rmailsum.el (rmail-summary-search-backward)
+       (rmail-summary-search):
+       * mail/rmailout.el (rmail-output-read-rmail-file-name)
+       (rmail-output-read-file-name):
+       * mail/rmail.el (rmail-search, rmail-search-backwards):
+       * mail/mailabbrev.el (merge-mail-abbrevs, rebuild-mail-abbrevs):
+       * locate.el (locate):
+       * international/quail.el (quail-show-keyboard-layout):
+       * international/mule.el (set-buffer-file-coding-system)
+       (revert-buffer-with-coding-system, set-file-name-coding-system)
+       (set-terminal-coding-system, set-keyboard-coding-system)
+       (set-next-selection-coding-system):
+       * international/mule-diag.el (describe-coding-system)
+       (describe-font, describe-fontset):
+       * international/mule-cmds.el (universal-coding-system-argument)
+       (search-unencodable-char, describe-input-method)
+       (set-language-environment, describe-language-environment):
+       * international/codepage.el (codepage-setup):
+       * international/code-pages.el (codepage-setup):
+       * info.el (Info-search, Info-follow-reference)
+       (Info-search-backward):
+       * emacs-lisp/advice.el (ad-read-advised-function)
+       (ad-read-advice-class, ad-clear-cache, ad-activate)
+       (ad-deactivate, ad-update, ad-unadvise, ad-read-advice-name)
+       (ad-enable-advice, ad-disable-advice, ad-remove-advice)
+       (ad-read-regexp):
+       * ediff-util.el (ediff-toggle-regexp-match):
+       * ediff-ptch.el (ediff-prompt-for-patch-file):
+       * dired-aux.el (dired-diff):
+       * diff.el (diff):
+       * cus-edit.el (custom-variable-prompt):
+       * calendar/timeclock.el (timeclock-ask-for-project):
+       * calc/calcalg3.el (calc-get-fit-variables):
+       * calc/calc-store.el (calc-edit-variable)
+       (calc-permanent-variable):
+       * vc-mcvs.el (vc-mcvs-register):
+       * shadowfile.el (shadow-define-literal-group):
+       * woman.el (woman-file-name):
+       * vc.el (vc-version-diff, vc-merge):
+       * textmodes/reftex-index.el (reftex-index-complete-tag):
+       * format.el (format-decode-buffer, format-decode-region):
+       * emulation/viper-cmd.el (viper-read-string-with-history):
+       * emacs-lisp/debug.el (cancel-debug-on-entry):
+       * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
+       * ediff.el (ediff-merge-revisions)
+       (ediff-merge-revisions-with-ancestor, ediff-revision):
+       * completion.el (interactive-completion-string-reader):
+       * calc/calc-prog.el (calc-user-define-formula):
+       Follow convention for reading with the minibuffer.
+
+2005-09-24  Steven Huwig  <steven_h@acm.org>  (tiny change)
+
+       * progmodes/python.el (python-describe-symbol): Add globals() and
+       locals() to the arguments of emacs.ehelp.
+
+2005-09-24  Magnus Henoch  <mange@freemail.hu>
+
+       * textmodes/ispell.el (ispell-maybe-find-aspell-dictionaries):
+       New function, code extracted from ispell-valid-dictionary-list.
+       (ispell-valid-dictionary-list, ispell-accept-buffer-local-defs):
+       Call it.
+
+2005-09-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * subr.el (version-regexp-alist): Extend valid syntax for version
+       strings: allow any of the characters -,_,+ to separate the
+       alpha/beta/rc part from the version part.  Doc fix.
+       (version-to-list): Doc fix.  Bind case-fold-search to t, as advertised.
+
+2005-09-23  David Reitter  <david.reitter@gmail.com>
+
+       * mail/mailclient.el: New file.
+
+2005-09-23  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-highlight-incorrect-region)
+       (flyspell-incorrect-hook, flyspell-highlight-duplicate-region):
+       Doc fixes.
+
+       * progmodes/cc-mode.el (c-font-lock-init):
+       Specify font-lock-lines-before.
+
+2005-09-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * smerge-mode.el (smerge-remove-props): Cause re-highlighting of the
+       whole conflict.
+
+2005-09-23  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-mode-map, orgtbl-mode-map):
+       Move keybindings with `C-c C-h' prefix to `C-c C-x' prefix.  Make use
+       of `remap' feature when available.  Additional key bindings for
+       better tty support.
+       (org-mode-restart, org-force-self-insert): New commands.
+       (org-time-stamp-inactive): New command.
+       (org-remap): New function.
+       (org-table-auto-blank-field, org-level-color-stars-only): New options.
+       (org-enable-fixed-width-editor): Move to `org-structure'
+       customization group.
+       (org-self-insert-command, orgtbl-self-insert-command): Modify to
+       blank field after field motion commands.
+
+2005-09-23  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (set-language-environment):
+       Don't check utf-translate-cjk-lang-env is nil or not on deciding if we
+       have to call utf-translate-cjk-load-tables.
+
+2005-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mouse.el (mouse-move-drag-overlay): Fix last change.
+
+2005-09-22  David Ponce  <david@dponce.com>
+
+       * tree-widget.el (tree-widget-value-create): Fix previous change.
+
+2005-09-21  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Fix loading rxvt at run time.
+
+2005-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mouse.el (mouse-move-drag-overlay): New function.
+       (mouse-drag-region-1): Use it.
+       Try to simplify a bit the state handling.  Handle clicks on links
+       inside intangible areas.
+       (mouse-save-then-kill): Minor simplification.
+       (mouse-secondary-overlay): Make it always non-nil instead of
+       recreating it each time.
+       (mouse-start-secondary, mouse-set-secondary, mouse-drag-secondary)
+       (mouse-kill-secondary, mouse-secondary-save-then-kill):
+       Simplify accordingly.
+
+2005-09-21  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/rxvt.el (rxvt-standard-colors): Fix some colors.
+
+2005-09-20  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-ptch.el (ediff-prompt-for-patch-file): More intuitive prompt.
+       (ediff-file-name-sans-prefix): Treat nil as an empty string.
+       (ediff-fixup-patch-map): Better heuristic for intuiting the file names
+       to patch.
+
+       * ediff-util.el: Use insert-buffer-substring.
+
+       * ediff-vers.el (cvs-run-ediff-on-file-descriptor): Bug fix.
+
+       * emulation/viper-cmd.el (viper-change-state): Don't move over the
+       field boundaries in the minibuffer.
+       (viper-set-minibuffer-style): Add viper-minibuffer-post-command-hook.
+       (viper-minibuffer-post-command-hook): New hook.
+       (viper-line): Don't move cursor at bolp.
+
+       * emulation/viper-ex.el (ex-pwd, viper-info-on-file): Fix message.
+
+       * emulation/viper-init.el: Add alias to make-variable-buffer-local to
+       avoid compiler warnings.
+
+       * emulation/viper-macs.el (ex-map): Better messages.
+
+       * emulation/viper-utils.el (viper-beginning-of-field): New function.
+
+       * emulation/viper.el: Replace make-variable-buffer-local with
+       viper-make-variable-buffer-local everywhere, to avoid warnings.
+
+2005-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line):
+       Delete unused var `old-selected-window'.
+       (mouse-drag-region-1): Delete unused vars `start-frame', `end-of-range'.
+       (mouse-drag-secondary): Delete unused var `start-frame'.
+
+2005-09-19  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
+
+       * term/rxvt.el (terminal-init-rxvt): Add entry for [end].
+
+2005-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * calendar/calendar.el (mark-visible-calendar-date): Save excursion.
+       Re-indent within 80 columns.  Use inhibit-read-only.
+
+2005-09-19  Romain Francoise  <romain@orebokech.com>
+
+       * calendar/diary-lib.el (mark-diary-entries): Revert last change.
+
+2005-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-default-fontify-region): Don't add a line
+       unconditionally, since the after-change-function already did it.
+
+2005-09-19  Miles Bader  <miles@gnu.org>
+
+       * net/newsticker.el: Get rid of CVS keyword.
+
+2005-09-19  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * dired-aux.el (dired-handle-overwrite): Don't use `format' here.
+       The prompt is formatted later.
+
+2005-09-19  David Ponce  <david@dponce.com>
+
+       * tree-widget.el (tree-widget-value-create): Save the converted
+       tree :node widget.
+
+2005-09-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/sh-script.el (sh-blink): Fix spurious reference to
+       variable `message'.
+
+2005-09-18  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-login-prompt-regexp): Expand regexp in order
+       to cover prompts like "login as:".  Reported by Slawomir Nowaczyk
+       <slawomir.nowaczyk.847@student.lu.se>.
+
+2005-09-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image.el (image-load-path): Use symbol `data-directory' instead
+       of its value, for backward compatibility with packages that bind
+       it during `find-image'.  Suggested by Katsumi Yamaoka.
+       (image-search-load-path): Handle symbols whose values are strings.
+
+2005-09-18  Romain Francoise  <romain@orebokech.com>
+
+       * calendar/diary-lib.el (mark-diary-entries): Rearrange to wrap
+       with-current-buffer form in save-excursion.
+
+2005-09-18  Deepak Goel  <deego@gnufans.org>
+
+       * apropos.el (apropos-command): Fix `message' call: first arg
+       should be a format spec.  In this and all other cases that appear
+       below and elsewhere in the source code, I made a change only when
+       two conditions were satisfied: [1] I can think of a possibility
+       that the arguments would cause an error, for example, the code in
+       question relies on external variables such as filenames.  [2] I
+       was sure that the arg to `message' could not have been nil in the code.
+
+       * textmodes/tildify.el (tildify-region): Ditto.
+
+       * textmodes/reftex-index.el (reftex-index-change-entry)
+       (reftex-index-phrase-selection-or-word, reftex-query-index-phrase):
+       * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite):
+       * textmodes/org.el (org-complete, org-deadline, org-schedule)
+       (org-priority, org-table-sum):
+       * textmodes/ispell.el (ispell-check-version, ispell-parse-output):
+       * textmodes/flyspell.el (flyspell-mode-on, flyspell-notify-misspell)
+       (flyspell-word, flyspell-display-next-corrections):
+       * textmodes/bibtex.el (bibtex-print-help-message):
+       * textmodes/artist.el (artist-key-set-point-poly):
+       * term/mac-win.el (mac-services-insert-text):
+       * progmodes/vhdl-mode.el (vhdl-warning, vhdl-print-warnings)
+       (vhdl-hooked-abbrev, vhdl-template-insert-fun)
+       (vhdl-port-paste-testbench, vhdl-compose-new-component)
+       (vhdl-compose-configuration):
+       * progmodes/sh-script.el (sh-blink, sh-show-indent)
+       (sh-set-indent, sh-learn-line-indent):
+       * progmodes/ps-mode.el (ps-mode-target-column):
+       * progmodes/idlwave.el (idlwave-make-tags)
+       (idlwave-scan-library-catalogs):
+       * progmodes/idlw-shell.el (idlwave-shell-parse-stack-and-display):
+       * progmodes/gud.el (gud-jdb-analyze-source):
+       * progmodes/flymake.el (flymake-log):
+       * progmodes/ebnf2ps.el (ebnf-generate-region):
+       * progmodes/cmacexp.el (c-macro-expansion):
+       * progmodes/ada-xref.el (ada-treat-cmd-string):
+       * progmodes/ada-mode.el (ada-create-case-exception-substring)
+       (ada-justified-indent-current, ada-batch-reformat):
+       * play/zone.el (zone):
+       * play/landmark.el (lm-move):
+       * play/decipher.el (decipher-show-alphabet):
+       * net/newsticker.el (newsticker--display-jump)
+       (newsticker--display-scroll):
+       * mail/rmail-spam-filter.el (rsf-add-subject-to-spam-list)
+       (rsf-add-sender-to-spam-list, rsf-add-region-to-spam-list):
+       * mail/feedmail.el (feedmail-dump-message-to-queue):
+       * eshell/esh-proc.el (eshell-remove-process-entry):
+       * emulation/ws-mode.el (ws-last-error):
+       * emulation/viper-macs.el (ex-map-read-args, ex-unmap-read-args)
+       (viper-record-kbd-macro):
+       * emulation/viper-ex.el (ex-pwd, viper-info-on-file):
+       * emacs-lisp/lisp-mnt.el (lm-report-bug):
+       * emacs-lisp/find-func.el (find-function-noselect):
+       * calendar/timeclock.el (timeclock-status-string)
+       (timeclock-workday-remaining-string, timeclock-workday-elapsed-string)
+       (timeclock-when-to-leave-string):
+       * calendar/icalendar.el (icalendar--convert-ical-to-diary):
+       * calc/calc-units.el (calc-enter-units-table):
+       * calc/calc-mode.el (calc-mode-record-mode):
+       * woman.el (woman-mini-help):
+       * wdired.el (wdired-change-to-wdired-mode):
+       * vc.el (vc-retrieve-snapshot):
+       * strokes.el (strokes-read-stroke, strokes-read-complex-stroke):
+       * startup.el (display-startup-echo-area-message):
+       * simple.el (set-goal-column):
+       * ses.el (ses-command-hook, ses-recalculate-cell):
+       * server.el (server-process-filter):
+       * printing.el (pr-interface-txt-print, pr-interface-printify)
+       (pr-interface-ps):
+       * pcvs.el (cvs-help):
+       * log-edit.el (log-edit, log-edit-mode-help):
+       * iswitchb.el (iswitchb-possible-new-buffer):
+       * isearch.el (isearch-edit-string):
+       * image-mode.el (image-mode, image-minor-mode):
+       * ibuf-macs.el (define-ibuffer-filter):
+       * hi-lock.el (hi-lock-find-patterns):
+       * files.el (toggle-read-only):
+       * ediff-util.el (ediff-copy-diff)
+       (ediff-write-merge-buffer-and-maybe-kill):
+       * echistory.el (Electric-history-undefined):
+       * dnd.el (dnd-insert-text):
+       * dired-aux.el (dired-query):
+       * desktop.el (desktop-restore-file-buffer, desktop-lazy-create-buffer):
+       * bookmark.el (bookmark-bmenu-locate):
+       * obsolete/fast-lock.el (@top-level) <with-temp-message macro>:
+       Fix `message' calls to ensure first arg is a format string.
+       The change was made only when these two conditions were satisfied:
+       [1] when there is a possibility that the arguments would cause an error
+       for example, if the code in question relies on external variables
+       such as filenames, and
+       [2] if the arg to `message' could not have been nil in the code.
+
+       * pcomplete.el (pcomplete--help): Fix `message' format spec.
+       Not having a %s would be weird, though not technically wrong.
+
+2005-09-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-add-charset-info): Doc fix.
+
+2005-09-17  Romain Francoise  <romain@orebokech.com>
+
+       * shell.el (shell-resync-dirs): Handle echoing processes more
+       reliably.  Don't insert resync command if `comint-process-echoes'
+       is non-nil.
+
+2005-09-17  Magnus Henoch  <mange@freemail.hu>
+
+       * textmodes/ispell.el (ispell-aspell-supports-utf8): New variable.
+       (ispell-check-version): Set ispell-aspell-supports-utf8 to t for
+       aspell versions >= 0.60.
+       (ispell-valid-dictionary-list): Call ispell-find-aspell-dictionaries
+       only if ispell-aspell-supports-utf8 is non-nil.
+
+2005-09-17  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * progmodes/scheme.el (scheme-mode-variables): Use setq to assign
+       buffer-local value to lisp-indent-function.
+
+2005-09-17  Milan Zamazal  <pdm@zamazal.org>
+
+       * progmodes/glasses.el (glasses-make-readable): If
+       glasses-separator differs from underscore, put appropriate
+       overlays over underscore characters.
+       (glasses-convert-to-unreadable): If glasses-separator differs from
+       underscore, try to convert glasses-separator characters to
+       underscores.
+
+2005-09-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * calendar/diary-lib.el (mark-diary-entries): Don't move point.
+       Use with-syntax-table and dolist.
+
+2005-09-16  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-auc.el:
+       * textmodes/reftex-cite.el:
+       * textmodes/reftex-dcr.el:
+       * textmodes/reftex-global.el:
+       * textmodes/reftex-parse.el:
+       * textmodes/reftex-ref.el:
+       * textmodes/reftex-sel.el:
+       * textmodes/reftex-toc.el:
+       * textmodes/reftex-vars.el:
+       * textmodes/reftex.el: Small changes to remove compiler warnings.
+
+       * textmodes/reftex-index.el: Likewise.
+       (reftex-query-index-phrase): More efficient use of markers.
+
+2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image.el (image-load-path): New variable.
+       (image-search-load-path): New function.
+       (find-image): Search for images in `image-load-path'.
+
+2005-09-15  Richard M. Stallman  <rms@gnu.org>
+
+       * follow.el: Change Maintainer field.
+
+2005-09-15  David Ponce  <david@dponce.com>
+
+       * recentf.el (recentf-save-file-modes): New option.
+       (recentf-save-list): Use it.
+
+2005-09-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * bindings.el (mode-line-eol-desc, mode-line-coding-system-map)
+       (mode-line-mule-info, mode-line-modified): Move bindings from
+       mouse-3 to mouse-1.
+
+2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (sendmail-user-agent-compose): Revert last change.
+
+2005-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * net/ange-ftp.el (ange-ftp-process-filter): Revert to ^#+$.
+       Use with-current-buffer.
+       (ange-ftp-gwp-start): Remove unused var `gw-user'.
+       (ange-ftp-guess-hash-mark-size): Remove unused var `result'.
+       (ange-ftp-insert-directory): Remove unused var `short'.
+       (ange-ftp-file-name-sans-versions): Remove unused var `host-type'.
+
+       * pcvs-defs.el (cvs-version): Recognize CVSNT version string.
+       (cvs-execute-single-dir): Change default: cvs-1.9 is ancient.
+
+       * calendar/cal-menu.el: Don't require easymenu, since we don't use it.
+       (check-calendar-holidays, diary-list-entries): Autoload.
+       Otherwise `emacs -q' followed by "mouse-2 -> diary entries" burps.
+       (calendar-mouse-holidays, calendar-mouse-view-diary-entries): Simplify.
+
+       * calendar/diary-lib.el (diary-show-all-entries): Fix last change,
+       which mistakenly removed a call to display-buffer.
+
+2005-09-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * obsolete/iso-insert.el: Move to obsolete/ from international/.
+
+2005-09-14  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * progmodes/hideshow.el
+       (hs-hide-comments-when-hiding-all): Remove autoload cookie.
+       (hs-allow-nesting): New user var.
+       (hs-discard-overlays): Skip "internal" overlays if nesting allowed.
+       (hs-hide-block-at-point): When nesting allowed,
+       if there is already an overlay in place, delete it.
+       (hs-safety-is-job-n): Delete func; remove call sites.
+       (hs-hide-level-recursive): Don't pre-clean if nesting allowed.
+       (hs-overlay-at): New func.
+       (hs-already-hidden-p, hs-show-block): Use it.
+       (hs-hide-all): Don't pre-clean if nesting allowed.
+       (hs-show-all): Temporarily disallow
+       nesting around call to `hs-discard-overlays'.
+
+2005-09-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mouse.el (mouse-major-mode-menu): Make `prefix' optional.
+       Delete unused local var.
+
+2005-09-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help-fns.el (describe-categories): "?\ " -> "?\s".
+       (help-do-arg-highlight): Recognize also ARG-n, as in
+       `move-to-left-margin' (ARG+n is already recognized).  Simplify.
+
+       * international/codepage.el (dos-unsupported-char-glyph):
+       * net/newsticker.el (tool-bar-map, w3-mode-map)
+       (w3m-minor-mode-map):
+       * progmodes/vhdl-mode.el (conf-alist, conf-entry, conf-key)
+       (ent-alist):
+       * textmodes/reftex-vars.el (reftex-tables-dirty): Add defvars.
+
+2005-09-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (custom-push-theme): Handle the case where a symbol is
+       bound but face properties have not yet been assigned.
+
+       * mail/sendmail.el (mail): Use new buffer if `noerase' is `new'.
+       Fix behavior if noerase is `t' and there is no mail buffer.
+
+       * simple.el (sendmail-user-agent-compose): Use a new mail buffer
+       if `continue' is nil, rather than signal an error.
+
+2005-09-12  Richard M. Stallman  <rms@gnu.org>
+
+       * font-lock.el (font-lock-keywords): Add autoload.
+
+       * help-fns.el (describe-variable): Rearrange to put source link
+       in a predictable place.
+
+       * net/newsticker.el: New file.
+
+2005-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * calendar/calendar.el (calendar-for-loop): Add edebug info.
+       (calendar-basic-setup): Use the new nil arg.
+       (number-of-diary-entries): Move to diary-lib.el.
+
+       * calendar/diary-lib.el: Use with-current-buffer, match-string.
+       (diary-list-entries): Use with-syntax-table and dolist.
+       Rename from list-diary-entries.
+       Use number-of-diary-entries if `number' is nil.
+       (diary, diary-view-entries): Use this new name and new nil arg value.
+       (number-of-diary-entries): Move from calendar.el.
+       (diary-unhide-everything): New function.
+       (include-other-diary-files, fancy-diary-display)
+       (diary-show-all-entries, make-diary-entry): Use it.
+       (diary-mail-entries): Use buffer-string.
+       (mark-diary-entries): Fix long standing paren typo.
+       (diary-sexp-entry): Use count-lines.
+       (make-diary-entry): Avoid `previous-line'.
+       (diary-mode-map): New var.
+       (diary-mode): Redraw cal after saving.  Setup header-line.
+       (fancy-diary-display-mode): Use local-set-key.
+
+       * startup.el (command-line): Try calling various terminal-init-foo-bar
+       functions by stripping hyphenated suffixes from $TERM.
+
+       * files.el (normal-mode): Check boundness of font-lock-keywords.
+
+2005-09-12  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/compile.el: Don't decide a file's directory
+       until the user actually tries to go there.
+       (compilation-next-error-function):
+       Pass compilation-find-file the directory from the file-struct.
+       (compilation-internal-error-properties): Separate local FILE-STRUCT
+       from FILE.  Doc the args better.  Rename arg FMT to FMTS.
+       (compilation-find-file): Arg DIR renamed to DIRECTORY.
+       Expand it, and if nil, use default-directory.
+       (compilation-get-file-structure): Don't mix specified directory
+       with default directory.  Put specified directory into
+       file-struct.  Don't make the file name absolute.
+
+       * progmodes/compile.el (compilation-error-regexp-alist): Doc fix.
+       (compile-command): Add autoload.
+       (compilation-disable-input): Add autoload.
+
+2005-09-11  Stephen Gildea  <gildea@stop.mail-abuse.org>
+
+       * time-stamp.el: Mention variable `time-stamp-pattern' in doc
+       strings of the variables it can override.
+       (time-stamp): New (as yet undocumented) time-stamp-format escapes
+       %Q and %q, for fully-qualified domain name and unqualified host name.
+
+2005-09-11  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/authors.el (authors-aliases): Update list.
+       (authors-fixed-entries): Update mldrag.el entry.
+
+2005-09-10  Alan Mackenzie  <acm@muc.de>
+
+       * page.el (narrow-to-page): Exclude _entire_ multi-line delimiter
+       from the region narrowed to.
+
+2005-09-10  Magnus Henoch  <mange@freemail.hu>
+
+       * textmodes/ispell.el (ispell-check-version): Signal an error if
+       aspell version is less than 0.60.
+
+2005-09-10  Pascal Dupuis  <Pascal.Dupuis@esat.kuleuven.be>  (tiny change)
+
+       * progmodes/octave-inf.el (inferior-octave-startup):
+       Resync current dir at the end.
+
+2005-09-10  Emilio C. Lopes  <eclig@gmx.net>
+
+       * woman.el (woman-topic-at-point-default):
+       Rename to woman-use-topic-at-point-default.
+       (woman-topic-at-point): Rename to woman-use-topic-at-point.
+       (woman-file-name): Reflect renames above.  Automatically use the
+       word at point as topic if woman-use-topic-at-point is non-nil.
+       Otherwise offer it as default but don't insert it in the
+       minibuffer.  Also use `test-completion' instead of `assoc' as
+       suggested by Stefan Monnier.
+
+2005-09-10  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc.el (vc-directory, vc-update-change-log): Throw an error on
+       the attempt to do it over Tramp.  This is not yet supported.
+
+2005-09-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * menu-bar.el (menu-bar-menu-frame-live-and-visible-p)
+       (menu-bar-non-minibuffer-window-p): New functions.
+       ("Split Window", "Save As..."): Use them.
+       ("Postscript Print Buffer (B+W)", "Postscript Print Buffer")
+       ("Print Buffer", "Truncate Long Lines in this Buffer"):
+       Use menu-bar-menu-frame-live-and-visible-p.
+       ("Save Buffer", "Insert File", "Open Directory...")
+       ("Open File...", "Visit New File..."):
+       Use menu-bar-non-minibuffer-window-p.
+       (kill-this-buffer-enabled-p, dired <menu-enable>):
+       Use menu-bar-non-minibuffer-window-p.
+
+2005-09-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * cus-start.el (all): Don't complain about fringe-related
+       built-ins if fringes are not supported.  Ditto about
+       selection-related built-ins.  Fix the test for GTK-related built-ins.
+
+       * menu-bar.el ("Split Window", "Postscript Print Buffer (B+W)")
+       ("Postscript Print Buffer", "Print Region", "Save As...")
+       ("Save", "Insert File...", "Open Directory...")
+       ("Open File...", "Visit New File..."")
+       ("Truncate Long Lines in this Buffer"): Don't look at
+       menu-updating-frame if this display does not support multiple frames.
+
+2005-09-09  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
+
+       * mail/sendmail.el (default-sendmail-coding-system): Doc fix.
+
+2005-09-09  Emilio C. Lopes  <eclig@gmx.net>
+
+       * woman.el: Format- and whitespace-related changes.
+
+2005-09-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * woman.el: Fix my email address.
+
+2005-09-08  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/sh-script.el (sh-skeleton-pair-default-alist): New var.
+       (sh-mode): Locally set skeleton-pair-default-alist.
+
+       * progmodes/make-mode.el (makefile-add-log-defun): Trim the result.
+
+       * progmodes/flymake.el: Require `compile' unconditionally.
+
+       * mail/sendmail.el (send-mail-function): Add Mailclient alternative.
+
+       * woman.el (woman-file-name): Provide a default, not initial input.
+
+       * smerge-mode.el (smerge-resolve): Pass args to smerge-remove-props.
+
+       * font-lock.el (font-lock-support-mode): Doc fix.
+
+       * descr-text.el (describe-property-list): Handle non-symbol prop names.
+
+2005-09-08  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (blink-matching-open): Get rid of text props from
+       the string shown in echo area.  Don't permanently set point.
+       Some rearrangements.
+
+2005-09-08  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * recentf.el (recentf-filename-handler): Add custom choice
+       `abbreviate-file-name'.
+
+       * msb.el (msb--very-many-menus): Fix typo.
+
+       * disp-table.el (standard-display-european): Don't set
+       enable-multibyte-characters to nil.
+
+2005-09-08  David Ponce  <david@dponce.com>
+
+       * recentf.el (recentf-show-file-shortcuts-flag): New option.
+       (recentf-expand-file-name): Doc fix.
+       (recentf-dialog-mode-map): Define digit shortcuts.
+       (recentf--files-with-key): New variable.
+       (recentf-show-digit-shortcut-filter): New function.
+       (recentf-open-files-items): New function.
+       (recentf-open-files): Use it.
+       (recentf-open-file-with-key): New command.
+
+2005-09-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * buff-menu.el (Buffer-menu-sort-by-column): New function.
+       Suggested by Kim F. Storm.
+       (Buffer-menu-sort-button-map): Global keymap for sort buttons.
+       (Buffer-menu-make-sort-button): Use global keymap.
+
+2005-09-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       * woman.el (top): Remap `man' command by `woman' in `woman-mode-map'.
+       (Man-getpage-in-background-advice): Remove defadvice; it isn't
+       necessary any longer with the remapped command.
+       (Man-bgproc-sentinel-advice): Remove defadvice which counts
+       formatting time only.
+
+       * net/tramp.el (tramp-action-password)
+       (tramp-multi-action-password): Compile the password prompt from
+       `method', `user' and `host'.  Sometimes it isn't obvious which
+       password to enter, for example with remote files offered by
+       recentf.el, or with multiple steps.  Suggested by Robert Marshall
+       <robert@chezmarshall.freeserve.co.uk>.
+
+2005-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/perl-mode.el (perl-font-lock-syntactic-keywords):
+       Fix regexp for when "s///" is at the beginning of line.
+
+2005-09-07  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-poly.el (math-expand-term): Multiply out any powers
+       when in matrix mode.
+
+2005-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * buff-menu.el (Buffer-menu-make-sort-button): Add docstrings, use
+       non-anonymous functions.
+
+2005-09-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * buff-menu.el (Buffer-menu-make-sort-button): Allow mouse-1 clicks
+       when using a header line.  Otherwise, use mouse-1-click-follows-link.
+
+       * mouse.el (mouse-drag-header-line): Do nothing if the header-line
+       can't be moved; don't signal an error.
+
+2005-09-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cus-theme.el (custom-theme-write-faces): Save the current face
+       spec, not the defface spec.
+
+       * custom.el (custom-known-themes): Clarify meaning of "standard".
+       (custom-push-theme): Save old values in the standard theme.
+       (disable-theme): Correct typo.
+       (custom-face-theme-value): Deleted unused function.
+       (custom-theme-recalc-face): Rewritten to treat enable/disable properly.
+
+2005-09-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/compile.el (compilation-goto-locus): Take into account
+       iconified frames when determining whether the buffer is
+       already visible.
+       Don't reset window height if the window already existed.
+
+2005-09-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * custom.el (load-theme): Rename from require-theme.
+       Add interactive spec.
+       (enable-theme): Rename from custom-enable-theme.
+       Add interactive spec.
+       (disable-theme): Rename from custom-disable-theme.
+       Add interactive spec.
+       (custom-make-theme-feature): Doc fix.
+       (custom-theme-directory): Doc fix.
+       (provide-theme): Call enable-theme.
+
+2005-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * obsolete/lazy-lock.el (lazy-lock-mode):
+       * obsolete/fast-lock.el (fast-lock-mode): Don't try to turn on
+       font-lock-mode if it's off.  Print a warning instead.
+
+       * progmodes/compile.el (compilation-start): Ignore errors if the
+       process died before we get to send-eof.
+
+       * textmodes/tex-mode.el (tex-send-tex-command, tex-bibtex-file):
+       Undo last change.  Enclosing the result in quotes broke things on Unix
+       since tex-send-command passes it through shell-quote-argument.
+       (tex-send-command): Pass `file' through convert-standard-filename
+       when possible.
+       (tex-uptodate-p): Handle the case where TeX hasn't put additional
+       info in a transcript.
+
+2005-09-02  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (terminal-init-xterm): Add eval-when-compile to
+       fix compilation warning.  Reorder the key definitions to group
+       together keys emitted by the current version of xterm.
+
+       * progmodes/vhdl-mode.el (vhdl-highlight-faces)
+       (vhdl-speedbar-entity-face, vhdl-speedbar-entity-selected-face):
+       Reorder predicates to correct min-color usage.
+
+2005-09-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-mode): Inhibit read-only when encoding.
+       Kill local variables when longlines-mode is turned off.
+
+2005-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * international/mule-cmds.el (set-locale-environment): Soothe compiler.
+
+       * obsolete/lazy-lock.el (lazy-lock) <defgroup>: Move from font-lock.el.
+
+       * obsolete/fast-lock.el (fast-lock) <defgroup>: Move from font-lock.el.
+
+       * font-lock.el (fast-lock, lazy-lock) <defgroup>: Remove.
+       (font-lock-lines-before): Change default to being inactive.
+       (font-lock-default-fontify-region): Obey font-lock-lines-before.
+       (font-lock-after-change-function): Don't handle f-l-lines-before here.
+
+2005-08-31  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-handle-make-auto-save-file-name):
+       Deactivate temporarily advice if active (not needed for Emacs 22,
+       but for backwards compatibility).
+       (tramp-exists-file-name-handler): Rewrite.  First implementation
+       was too simple.
+       (tramp-advice-make-auto-save-file-name):
+       Call `tramp-handle-make-auto-save-file-name' (again, just for
+       backwards compatibility).
+
+2005-08-31  Reto Zimmermann  <reto@gnu.org>
+
+       * progmodes/vhdl-mode.el
+       (vhdl-update-sensitivity-list): Handle multi-dimensional array access.
+       (vhdl-end-p): Fix indentation bug "else" after "-- when".
+       (vhdl-set-default-project): New function (easier setting of default).
+       (vhdl-port-copy): Handle extended identifiers for generics.
+       (vhdl-compiler-alist): Better description for error message regexp.
+       (vhdl-make): Query for target, use previous as default.
+       (vhdl-port-copy): Fix port copy for port names starting with "signal".
+       (vhdl-font-lock-keywords-2): Fix fontification for record
+       el. assign.
+       (vhdl-speedbar-make-subpack-line): Add package body link.
+       (vhdl-generate-makefile-1): Not include itself as dependency.
+       (vhdl-font-lock-init): Highlight c-preprocessor directives.
+       (vhdl-*ward-syntactic-ws): Skip c-preprocessor directives.
+       (vhdl-get-syntactic-context): Handle c-preprocessor directives.
+       (vhdl-update-sensitivity-list): Start scan at opening parenthesis.
+       (vhdl-fixup-whitespace-region): Fix jumping point (infinite loop).
+       (vhdl-update-sensitivity-list-buffer): Add string argument for `error'.
+       (vhdl-import-project): Add string argument for `error'.
+       (vhdl-compose-configuration)
+       (vhdl-compose-configuration-architecture): Add configuration
+       declaration generation.
+       (vhdl-scan-directory-contents): Scan for block/generate hierarchy.
+       (vhdl-trailer-re): Add "record" keyword (better indentation).
+       (vhdl-fixup-whitespace-region): "[^ \t\"-]+" instead of
+       "[^ \t-\"]+".
+       (vhdl-font-lock-keywords-2): Not highlight formal parameter after `|'.
+       (vhdl-testbench-entity-file-name)
+       (vhdl-testbench-architecture-file-name): Allow separate
+       customization of testbench file names.
+       (vhdl-beginning-of-block): Handle optional subprogram parameter list.
+       (vhdl-get-visible-signals): Allow newline within alias declaration.
+       (vhdl-update-sensitivity-list): Signal read only on certain attributes.
+       (vhdl-fixup-whitespace-region): Fix bug with strings (double quotes).
+       (member-ignore-case): Alias for missing function in XEmacs.
+       (vhdl-compiler-alist): Add unit-to-file name mapping for Cadence NC.
+       (vhdl-update-sensitivity-list): Ignore case on read signals.
+       (vhdl-replace-string): Adjust case only for file names.
+       (vhdl-update-sensitivity-list): Fix search for read signals.
+       (vhdl-update-sensitivity-list): Exclude formal parameters.
+       (vhdl-get-visible-signals): Include aliases of signals.
+       (vhdl-get-visible-signals): Fix signal name searching.
+       (vhdl-port-flatten, vhdl-port-reverse-direction): Better message.
+       (vhdl-fixup-whitespace-region): Fix for character
+       literals (e.g. `:').
+
+2005-08-31  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ansi-color.el (comint-last-output-start):
+       * bs.el (font-lock-verbose):
+       * diff-mode.el (add-log-buffer-file-name-function):
+       * dired-x.el (vm-folder-directory):
+       * faces.el (help-xref-stack-item):
+       * files.el (font-lock-keywords):
+       * find-lisp.el (dired-buffers, dired-subdir-alist):
+       * ido.el (cua-inhibit-cua-keys):
+       * log-view.el (cvs-minor-wrap-function):
+       * outline.el (font-lock-warning-face):
+       * simple.el (compilation-current-error):
+       * speedbar.el (ange-ftp-path-format, efs-path-regexp)
+       (font-lock-keywords, x-pointer-hand2, x-pointer-top-left-arrow):
+       * tooltip.el (comint-prompt-regexp):
+       * w32-fns.el (explicit-shell-file-name):
+       * term/mac-win.el (mac-charset-info-alist)
+       (mac-services-selection, mac-system-script-code):
+       * term/tty-colors.el (msdos-color-values):
+       * term/w32-win.el (xlfd-regexp-registry-subnum):
+       * term/x-win.el (x-keysym-table, x-selection-timeout)
+       (x-session-id, x-session-previous-id):
+       * textmodes/ispell.el (mail-yank-prefix):
+       * textmodes/makeinfo.el (tex-end-of-header, tex-start-of-header):
+       * textmodes/org.el (calc-embedded-close-formula)
+       (calc-embedded-open-formula)
+       (font-lock-unfontify-region-function):
+       * textmodes/reftex-global.el (isearch-next-buffer-function)
+       (TeX-master):
+       * textmodes/reftex.el (font-lock-keywords):
+       * textmodes/tex-mode.el (font-lock-comment-face)
+       (font-lock-doc-face):
+       * textmodes/texinfo.el (outline-heading-alist):
+       Add defvars.
+
+       * textmodes/artist.el (x-pointer-crosshair): Add defvar.
+       (artist-spray-chars, artist-mode-init, artist-replace-string)
+       (artist-select-erase-char, artist-vap-find-endpoints-horiz)
+       (artist-vap-find-endpoints-vert, artist-vap-find-endpoints-swne)
+       (artist-vap-find-endpoints-nwse): "?\ " -> "?\s".
+
+       * textmodes/conf-mode.el (outline-heading-end-regexp): Add defvar.
+       (conf-align-assignments): "?\ " -> "?\s".
+
+       * textmodes/reftex-index.el (TeX-master): Add defvar.
+       (reftex-index-phrases-marker): Move up defvar.
+
+       * textmodes/reftex-toc.el (zmacs-regions): Add defvar.
+       (reftex-toc-include-labels-indicator)
+       (reftex-toc-include-index-indicator)
+       (reftex-toc-max-level-indicator): Move up declarations.
+
+       * net/tramp.el (tramp-handle-make-auto-save-file-name): Pass list
+       of args to `tramp-run-real-handler', even if it's empty in this case.
+
+2005-08-31  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dired.el (dired-move-to-filename-regexp): Add date format for
+       Mac OS X 10.3 in East Asian locales.
+
+2005-08-31  Michael Albinus  <michael.albinus@gmx.de>
+
+       * files.el (make-auto-save-file-name): Add file name handler call
+       if applicable.
+
+       * net/tramp.el (tramp-file-name-handler-alist)
+       (tramp-file-name-for-operation): Add `make-auto-save-file-name'.
+       (tramp-handle-make-auto-save-file-name): Rename from
+       `tramp-make-auto-save-file-name'.
+       (tramp-exists-file-name-handler): New defun.
+       (tramp-advice-make-auto-save-file-name): Make defadvice only when
+       `make-auto-save-file-name' is not a magic file name operation.
+
+2005-08-30  Richard M. Stallman  <rms@gnu.org>
+
+       * files.el (risky-local-variable-p):
+       Match `-predicates' and `-commands'.
+
+       * cus-edit.el (custom-buffer-sort-alphabetically): Default to t.
+       (custom-save-all): Visit the file if necessary;
+       kill the buffer if we created it.
+       (custom-save-delete): Don't visit file or kill buffer here.
+
+2005-08-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-special-keyword): New face.
+       (org-table-copy-down, org-table-eval-formula)
+       (org-table-recalculate, org-init-section-numbers):
+       Use `string-to-number' instead of `string-to-int'.
+       (org-get-location): Use `insert-buffer-substring' instead of
+       `insert-buffer'.
+       (org-modify-diary-entry-string): New function.
+       (org-get-entries-from-diary): Set the hook for `add-to-diary-list'.
+       (org-disable-agenda-to-diary): Rename from `org-disable-diary'.
+       (org-toggle-fixed-width-section): Use QUOTE keyword if there is no
+       active region.
+       (org-export-as-html): Handle QUOTE keyword.
+       (org-quote-string): New option.
+       (org-bookmark-jump-unhide): New function, used for
+       `bookmark-after-jump-hook'.
+       (org-diary-default-entry): Apply only when not called through
+       `org-agenda'.
+
+2005-08-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * net/eudc.el (mode-popup-menu):
+       * play/handwrite.el (ps-printer-name, ps-lpr-command):
+       * progmodes/ada-mode.el (compile-auto-highlight)
+       (skeleton-further-elements):
+       * progmodes/autoconf.el (font-lock-syntactic-keywords):
+       * progmodes/cmacexp.el (msdos-shells):
+       * progmodes/compile.el (font-lock-extra-managed-props)
+       (font-lock-keywords, font-lock-maximum-size)
+       (font-lock-support-mode):
+       * progmodes/grep.el (font-lock-lines-before):
+       * progmodes/idlw-complete-structtag.el (idlwave-completion-help-info):
+       * progmodes/mixal-mode.el (compile-command):
+       * progmodes/perl-mode.el (font-lock-comment-face)
+       (font-lock-doc-face, font-lock-string-face):
+       * progmodes/prolog.el (comint-prompt-regexp):
+       * progmodes/sh-script.el (font-lock-comment-face)
+       (font-lock-set-defaults, font-lock-string-face):
+       * progmodes/sql.el (font-lock-keyword-face)
+       (font-lock-set-defaults, font-lock-string-face):
+       * progmodes/vhdl-mode.el (compilation-file-regexp-alist)
+       (itimer-version, lazy-lock-defer-contextually)
+       (lazy-lock-defer-on-scrolling, lazy-lock-defer-on-the-fly):
+       Add defvars.
+
+       * progmodes/cperl-mode.el (cperl-electric-lbrace)
+       (cperl-electric-keyword, cperl-electric-pod)
+       (cperl-electric-backspace, cperl-forward-re)
+       (cperl-fix-line-spacing, cperl-fill-paragraph): "?\ " -> "?\s".
+       (vc-rcs-header, vc-sccs-header): Add defvars.
+
+       * progmodes/fortran.el (fortran-indent-to-column): "?\ " -> "?\s".
+       (font-lock-syntactic-keywords, gud-find-expr-function):
+       Add defvars.
+
+       * progmodes/gdb-ui.el (tool-bar-map): Add defvar.
+       (gdb-frame-parameters): Declare before use.
+
+       * progmodes/gud.el (gdb-active-process, gdb-define-alist)
+       (gdb-macro-info, gdb-server-prefix, gdb-show-changed-values)
+       (gdb-var-changed, gdb-var-list, tool-bar-map): Add defvars.
+       (gud-expr-compound-sep, gud-expr-compound): "?\ " -> "?\s".
+
+       * progmodes/idlw-help.el (browse-url-generic-args): Add defvar.
+       (idlwave-help-with-source): Use `insert-buffer-substring', not
+       `insert-buffer'.
+
+2005-08-29  Juri Linkov  <juri@jurta.org>
+
+       * outline.el (hide-entry, hide-leaves, outline-toggle-children):
+       Put outline-back-to-heading function call inside save-excursion.
+
+2005-08-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * man.el (Man-init-defvars, Man-translate-references)
+       (Man-support-local-filenames, Man-highlight-references):
+       * progmodes/sql.el (sql-interactive-mode):
+       * shell.el (shell-mode, shell-resync-dirs): Fix typos in docstrings.
+
+       * emacs-lisp/checkdoc.el (compilation-error-regexp-alist)
+       (compilation-mode-font-lock-keywords): Add defvars.
+       (checkdoc-interactive-loop): "?\ " -> "?\s".
+
+       * emacs-lisp/lisp-mode.el (font-lock-comment-face)
+       (font-lock-doc-face, font-lock-string-face)
+       (font-lock-keywords-case-fold-search): Add defvars.
+       (emacs-lisp-mode-syntax-table): "?\ " -> "?\s".
+
+       * obsolete/sun-fns.el (mouse-select-or-drag-move-point):
+       Don't pass X and Y (they are ignored anyway).
+       (mouse-set-mark, mouse-select-window, mouse-delete-other-windows)
+       (mouse-delete-window): Make arguments optional.
+
+       * obsolete/rnews.el (news-add-news-group): Don't use `end-of-line'.
+       (caesar-translate-table, minor-modes, news-buffer-save)
+       (news-group-name, news-minor-modes): Add defvars.
+
+       * emacs-lisp/lselect.el (mouse-highlight-priority)
+       (x-lost-selection-functions, zmacs-regions):
+       * emacs-lisp/pp.el (font-lock-verbose):
+       * emacs-lisp/syntax.el (font-lock-beginning-of-syntax-function):
+       * emacs-lisp/tcover-ses.el (ses-initial-global-parameters)
+       (ses-mode-map):
+       * emacs-lisp/tcover-unsafep.el (safe-functions):
+       * international/mule-cmds.el (mac-system-coding-system)
+       (mac-system-locale):
+       * language/ethio-util.el (rmail-current-message)
+       (rmail-message-vector):
+       * language/thai-util.el (thai-auto-composition-mode):
+       * mail/metamail.el (rmail-current-message, rmail-message-vector):
+       * mail/mspools.el (rmail-inbox-list, vm-crash-box)
+       (vm-folder-directory, vm-init-file, vm-init-file-loaded)
+       (vm-primary-inbox, vm-spool-files):
+       * mail/rmail.el (deleted-head, font-lock-fontified)
+       (mail-abbrev-syntax-table, mail-abbrevs, messages-head)
+       (rmail-use-spam-filter, rsf-beep, rsf-sleep-after-message)
+       (total-messages):
+       * mail/rmail-spam-filter.el (bbdb/mail_auto_create_p)
+       (rmail-summary-mode-map):
+       * mail/rmailkwd.el (rmail-buffer, rmail-current-message)
+       (rmail-last-label, rmail-last-multi-labels)
+       (rmail-summary-vector, rmail-total-messages):
+       * mail/rmailmsc.el (rmail-current-message, rmail-inbox-list):
+       * mail/rmailsum.el (msgnum):
+       * mail/uce.el (gnus-original-article-buffer, mail-reply-buffer)
+       (rmail-current-message):
+       * obsolete/fast-lock.el (font-lock-face-list):
+       * obsolete/rnewspost.el (mail-reply-buffer):
+       * obsolete/scribe.el (compile-command):
+       * obsolete/x-menu.el (x-process-mouse-hook): Add defvars.
+
+2005-08-28  John Paul Wallington  <jpw@gnu.org>
+
+       * ibuf-ext.el (ibuffer-auto-update-changed):
+       Use `frame-or-buffer-changed-p' to check whether we need to update.
+       (ibuffer-auto-mode): Don't advise `get-buffer-create' and
+       `kill-buffer'.  Initialise `ibuffer-auto-buffers-changed'
+       as a `frame-or-buffer-changed-p' state vector instead.
+
+2005-08-27  Romain Francoise  <romain@orebokech.com>
+
+       * textmodes/makeinfo.el (makeinfo-compile):
+       Use `compilation-start'.  Set `next-error-function' according to
+       `disable-errors'.
+       (makeinfo-next-error): New function.
+       (makeinfo-region): Adjust to new `makeinfo-compile' prototype.
+       (makeinfo-buffer): Likewise.
+
+       * progmodes/compile.el (compilation-start): Add autoload cookie.
+
+       * progmodes/antlr-mode.el: Don't autoload `compilation-start'.
+       * textmodes/sgml-mode.el: Likewise.
+       * progmodes/python.el: Likewise.
+
+2005-08-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * simple.el (blink-matching-paren-distance): Document the meaning
+       of nil value, and allow to customize to nil.
+
+       * eshell/esh-ext.el (eshell-windows-shell-file): Look for
+       command.com, not command.exe.
+
+2005-08-26  John Wiegley  <johnw@newartisans.com>
+
+       * eshell/esh-cmd.el (eshell-rewrite-named-command): Change the
+       code around a bit so that an extraneous nil argument is not added
+       to a command when no args are given.
+
+       * eshell/esh-arg.el (eshell-parse-double-quote): If a
+       double-quoted argument resolves to nil, return it as an empty
+       string rather than as nil.  This made it impossible to pass "" to
+       a shell script as a null string argument.
+
+2005-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * outline.el (outline-invent-heading): New fun.
+       (outline-promote, outline-demote): Use it.
+       (outline-move-subtree-down): Remove unused vars `re' and `txt'.
+       (outline-end-of-subtree): Remove unused var `opoint'.
+
+2005-08-26  David Reitter  <david.reitter@gmail.com>
+
+       * menu-bar.el (truncate-lines, write-file, print-buffer)
+       (ps-print-buffer-faces, ps-print-buffer, split-window):
+       Disable menu items when the frame they refer to is invisible, or when
+       they refer to a buffer and the minibuffer is selected.
+
+2005-08-26  Pavel Kobiakov  <pk_at_work@yahoo.com>
+
+       * progmodes/flymake.el (flymake-highlight-err-lines):
+       Use save-excursion around flymake-highlight-line to preserve point.
+
+2005-08-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * progmodes/octave-mod.el: Change Author and Maintainer address.
+       (octave-maintainer-address): Change Kurt's email address.
+       * progmodes/octave-inf.el: Change Author and Maintainer address.
+       * progmodes/octave-hlp.el: Change Author and Maintainer address.
+
+2005-08-26  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (version-list-<, version-list-<=, version-list-=):
+       Rename from integer-list-*.
+       (version-list-not-zero): Likewise.  Fix while loop.
+       (version=): Use version-list-= instead of string-equal.
+
+2005-08-26  Richard M. Stallman  <rms@gnu.org>
+
+       * outline.el (outline-promote): Try shortening the heading.
+       As last resort, read the heading to use.
+       (outline-demote): As last resort, read the heading to use.
+
+2005-08-26  Romain Francoise  <romain@orebokech.com>
+
+       * progmodes/compile.el (compilation-start): Doc fix.
+
+       * progmodes/antlr-mode.el (antlr-default): Fix defface form.
+       (antlr-font-lock-additional-keywords): Fix reference to
+       `antlr-font-lock-literal-regexp' erroneously changed during the
+       mass face rename.
+       (antlr-run-tool): Use `compilation-start'.
+
+       * textmodes/sgml-mode.el (sgml-validate): Use `compilation-start'
+       instead of the obsolete `compile-internal'.
+
+2005-08-26  Juanma Barranquero  <lekktu@gmail.com>
+
+       * calendar/cal-bahai.el (date, displayed-month, displayed-year)
+       (number, original-date):
+       * calendar/cal-china.el (date):
+       * calendar/cal-coptic.el (date):
+       * calendar/cal-french.el (date):
+       * calendar/cal-hebrew.el (date, entry, number, original-date):
+       * calendar/cal-islam.el (date, number, original-date):
+       * calendar/cal-iso.el (date):
+       * calendar/cal-julian.el (date):
+       * calendar/cal-mayan.el (date):
+       * calendar/cal-menu.el (date, event):
+       * calendar/cal-persia.el (date):
+       * calendar/lunar.el (date):
+       * calendar/solar.el (date): Add defvars.
+
+       * emerge.el:
+       * ibuffer.el:
+       * info-xref.el:
+       * obsolete/bg-mouse.el:
+       * obsolete/sun-curs.el:
+       * obsolete/swedish.el: Move the `defvar's to the top level.
+
+       * smerge-mode.el (smerge-refined-change): Add :group.
+
+2005-08-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * smerge-mode.el (smerge-remove-props): Make the args non-optional.
+       (smerge-keep-n): Remove props.
+       (smerge-keep-base, smerge-keep-other, smerge-keep-mine)
+       (smerge-keep-current, smerge-kill-current): Don't remove props anymore
+       now that it's done in smerge-keep-n.
+       (smerge-refined-change): New face.
+       (smerge-refine-chopup-region, smerge-refine-highlight-change)
+       (smerge-refine): New funs.
+       (smerge-basic-map): Bind smerge-refine.
+
+2005-08-25  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/grep.el (grep, grep-mode): Make buffer-local variables
+       compilation-process-setup-function and compilation-disable-input
+       in grep-mode instead of let-bindings in grep.
+
+       * menu-bar.el (menu-bar-options-menu, menu-bar-options-save):
+       Delete "Automatic File De/compression" (auto-compression-mode).
+
+2005-08-25  Juanma Barranquero  <lekktu@gmail.com>
+
+       * obsolete/bg-mouse.el: Move to obsolete/ from term/.
+       Silence warning about non-existent variable.
+
+2005-08-25  Richard M. Stallman  <rms@gnu.org>
+
+       * menu-bar.el (menu-bar-describe-menu): Delete "What's New".
+       Rename "Describe Key" to "Describe Key or Mouse Operation".
+
+       * mail/mailalias.el (build-mail-aliases): Delete comments
+       from the contents before processing them.
+
+       * isearch.el (isearch-edit-string): Erase the Search prompt
+       if user enters an empty string and there is no default.
+
+       * comint.el (comint-file-name-prefix): Add autoload.
+
+2005-08-25  Joe Corneli  <jcorneli@math.utexas.edu>
+
+       * subr.el (play-sound): Rearrange to avoid warning.
+
+2005-08-25  Carsten Dominik  <dominik@science.uva.nl>
+
+       * calendar/diary-lib.el (diary-modify-entry-list-string-function):
+       New hook.
+       (add-to-diary-list): Call `diary-modify-entry-list-string-function'.
+
+2005-08-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Simplify.
+
+       * custom.el (custom-theme-set-variables): Sort minor modes last.
+
+2005-08-24  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * subr.el (version-separator, version-regexp-alist): New vars used by
+       version comparison funs.
+       (integer-list-<, integer-list-=, integer-list-<=)
+       (integer-list-not-zero): New funs for integer list comparison.
+       (version-to-list, version=, version<, version<=): New funs for version
+       comparison.
+
+2005-08-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emerge.el (merge-begin, merge-end, template, A-begin, A-end)
+       (B-begin, B-end, diff, diff-vector, valid-diff): Defvar at compile
+       time to silence the byte-compiler.
+
+       * ibuffer.el (ibuffer-compile-make-eliding-form)
+       (ibuffer-check-formats): Use `with-no-warnings' to hide references
+       to `ibuffer-elide-long-columns' (which is defined on ibuffer.el,
+       so it's silly to get warnings for it).
+       (ibuffer-auto-mode, ibuffer-cached-filter-formats)
+       (ibuffer-compiled-filter-formats, ibuffer-filter-format-alist)
+       (ibuffer-filter-group-kill-ring, ibuffer-filter-groups)
+       (ibuffer-filtering-qualifiers, ibuffer-hidden-filter-groups)
+       (ibuffer-inline-columns, ibuffer-show-empty-filter-groups)
+       (ibuffer-tmp-hide-regexps, ibuffer-tmp-show-regexps):
+       Defvar at compile time.
+       (ibuffer-compiled-formats, ibuffer-cached-eliding-string)
+       (ibuffer-cached-formats, ibuffer-cached-elide-long-columns):
+       Declare them before use.
+
+       * info-xref.el (info-xref-xfile-alist, info-xref-filename-heading)
+       (info-xref-good, info-xref-bad): Defvar at compile time.
+
+       * obsolete/mlsupport.el (filter-region, execute-monitor-command):
+       Use `let*' instead of `let'.
+
+       * obsolete/sun-curs.el (icon-edit, *mouse-window*, *mouse-x*)
+       (*mouse-y*, menu, char): Defvar at compile time.
+       (sc::menu): Declare it before use.
+       (sc::pack-one-line): Use `let', not `let*'.
+
+       * obsolete/swedish.el (news-inews-hook, news-group-hook-alist)
+       (mail-send-hook): Defvar at compile time.
+
+       * term/bg-mouse.el (bg-mouse-x, bg-mouse-y, bg-cursor-window):
+       Defvar at compile time.
+
+       * term/sun-mouse.el (current-global-mousemap)
+       (current-local-mousemap): Declare them before use.
+
+2005-08-24  Carsten Dominik  <dominik@science.uva.nl>
+
+       * bookmark.el (bookmark-after-jump-hook): New hook.
+       (bookmark-jump): Run `bookmark-after-jump-hook'.
+
+2005-08-23  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (minibuffer-prompt): Doc fix.
+
+2005-08-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/xscheme.el: Trivial changes to silence warnings.
+       (xscheme-previous-mode, xscheme-previous-process-state):
+       Add defvars.
+       (xscheme-last-input-end, xscheme-process-command-line)
+       (xscheme-process-name, xscheme-buffer-name)
+       (xscheme-expressions-ring-max, xscheme-expressions-ring)
+       (xscheme-expressions-ring-yank-pointer, xscheme-running-p)
+       (xscheme-control-g-synchronization-p)
+       (xscheme-control-g-disabled-p, xscheme-string-receiver)
+       (default-xscheme-runlight, xscheme-runlight)
+       (xscheme-runlight-string, xscheme-process-filter-state)
+       (xscheme-allow-output-p, xscheme-prompt, xscheme-mode-string):
+       Move to beginning of file.
+       (scheme-interaction-mode-commands-alist)
+       (scheme-interaction-mode-map, scheme-debugger-mode-map):
+       Declare them before use.  Note: the initialization code for the
+       variables has not been moved because it uses functions that reference
+       the variables.
+       (xscheme-control-g-message-string, xscheme-process-filter-alist)
+       (xscheme-prompt-for-expression-map): Declare them before use.
+       (scheme-debugger-mode-commands): "?\ " -> "?\s".
+
+2005-08-23  Ed Swarthout  <ed.swarthout@gmail.com>  (tiny change)
+
+       * hexl.el (hexl-print-current-point-info): Fix simple spelling error.
+
+2005-08-22  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (set-face-underline): Delete this duplicate function
+       and make an obsolete alias to set-face-underline-p.
+       (set-face-underline-p): Use docstring of set-face-underline.
+       (describe-face): Create hyperlink to parent face.
+
+       * info.el (Info-insert-dir): Use save-excursion around
+       insert-buffer-substring.
+       (Info-isearch-search): Use LITERAL arg of replace-regexp-in-string.
+       (Info-escape-percent): Delete function.
+       (Info-fontify-node): Replace Info-escape-percent by
+       replace-regexp-in-string with REP arg set to lambda that
+       duplicates `%' and preserves text properties.
+
+       * progmodes/compile.el (compilation-disable-input): Doc fix.
+       (define-compilation-mode): Doc fix and refill.
+       (kill-compilation): Use `mode-name' in the error message.
+       (compilation-find-file): Use `compilation-error' in the
+       read-file-name's prompt.
+
+2005-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * smerge-mode.el (smerge-basic-map): Bind smerge-combine-with-next.
+       (smerge-auto-leave): Make undo re-enable the mode.
+       (debug-ignored-errors): Add the user-error of impossible resolution.
+       (smerge-resolve): Move things around a bit, in preparation for later.
+       (smerge-diff): Don't fail if the buffer has no associated file.
+       (ediff-ancestor-buffer, ediff-quit-hook): Quieten byte-compiler.
+       (smerge-conflict-overlay): New function.
+       (smerge-match-conflict): Don't add text properties here.
+       (smerge-find-conflict): Instead, add an overlay here.
+       Also check for the case where we're inside a conflict already, so as to
+       obviate the need for font-lock-multiline, which is unbearably slow with
+       large conflicts and ciomplex font-lock patterns.
+       (smerge-remove-props): Remove overlay rather than text-properties.
+       (smerge-mode): Don't set font-lock-multiline.
+       Remove overlays when turned off.
+
+2005-08-21  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-ignore-item-p): Use save-match-data.
+       Bind case-fold-search to ido-case-fold locally.
+
+2005-08-20  Richard M. Stallman  <rms@gnu.org>
+
+       * files.el (normal-mode): If font lock is on, turn it off and on.
+
+       * subr.el (replace-regexp-in-string): Doc fix.
+
+       * startup.el (command-line-1): Don't suppress startup screen
+       due to existing processes.
+
+       * progmodes/grep.el (grep): Bind compilation-disable-input to t.
+
+       * progmodes/compile.el (compilation-disable-input): Default to nil.
+
+2005-08-20  Kevin Rodgers  <ihs_4664@yahoo.com>  (tiny change)
+
+       * progmodes/compile.el (compilation-disable-input): New defcustom.
+       (compilation-start): If compilation-disable-input is non-nil, send
+       EOF to the compilation process.
+
+2005-08-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * textmodes/tex-mode.el (tex-bibtex-file, tex-send-tex-command):
+       Run the argument of tex-shell-cd-command through
+       convert-standard-filename, to get the correct style of slashes on
+       Windows, and enclose the result in quotes, in case the file name
+       includes whitespace or other special characters.
+
+2005-08-19  Andreas Schwab  <schwab@suse.de>
+
+       * progmodes/gud.el (gud-kill-buffer-hook): Don't kill unrelated
+       process.
+
+2005-08-18  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-start.el (minibuffer-prompt-properties): Correct typo.
+
+2005-08-18  Kim F. Storm  <storm@cua.dk>
+
+       * scroll-lock.el: Fix errors due to incorrect line wrapping.
+
+2005-08-18  Richard M. Stallman  <rms@gnu.org>
+
+       * scroll-lock.el: New file.
+
+2005-08-18  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * dired.el (dired-move-to-end-of-filename):
+       Handle fifo as rendered by "ls -lF": Don't include trailing "|".
+
+2005-08-18  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-everywhere): Fix defcustom :set function to disable
+       rather than toggle mode when custom value is nil.
+       (ido-everywhere): Fix defun doc string.
+
+2005-08-17  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-start.el (minibuffer-prompt-properties): Use "Don't Enter"
+       as tag instead of "Inviolable".
+
+2005-08-17  Kim F. Storm  <storm@cua.dk>
+
+       * windmove.el (windmove-coordinates-of-position): Remove.
+       (windmove-coordinates-of-window-position): Remove.
+       (windmove-reference-loc): Use posn-at-point instead.
+
+       * subr.el (insert-for-yank-1): Doc fix.
+
+       * ido.el (ido-enter-matching-directory): Rename from
+       ido-enter-single-matching-directory.  Change `slash' choice to
+       `only'.  Add `first' choice.
+       (ido-exhibit): Adapt to above changes.
+
+2005-08-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * Makefile.in: Expand comment about building loaddefs.el.
+
+2005-08-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (toggle-gdb-use-inferior-io-buffer):
+       Comment use of defadvice.
+
+       * progmodes/gud.el (gud-jump): Rework for gdb-ui.
+
+2005-08-15  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * buff-menu.el, compare-w.el, emacs-lisp/testcover.el,
+       * play/gomoku.el, play/mpuz.el, progmodes/flymake.el,
+       * progmodes/gdb-ui.el, progmodes/idlw-help.el,
+       * progmodes/idlw-shell.el, progmodes/ld-script.el,
+       * progmodes/which-func.el, ruler-mode.el, strokes.el,
+       * textmodes/sgml-mode.el, textmodes/table.el: Do not use face-alias
+       for backward compatibility for faces that did not appear in the
+       previous Emacs release.
+
+       * simple.el (next-error-follow-minor-mode): Fix init value and lighter.
+
+2005-08-15  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-delete-region): Return t if
+       deleted region was non-empty.
+       (cua-replace-region): Inhibit overwrite-mode for
+       self-insert-command if replaced region was non-empty.
+       (cua--explicit-region-start, cua--status-string): Make them
+       buffer-local at top-level...
+       (cua-mode): ...rather than when mode is enabled.
+
+2005-08-15  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * progmodes/vhdl-mode.el (vhdl-emacs-21):
+       Set t for Emacs 21, 22, and so on.
+
+2005-08-15  David Ponce  <david@dponce.com>
+
+       * tree-widget.el: Update Commentary header.
+       (tree-widget-theme): Doc fix.
+       (tree-widget-space-width): New option.
+       (tree-widget-image-properties): Look up in the default theme too.
+       (tree-widget--cursors): Only for images with arrow pointer shape.
+       (tree-widget-lookup-image): Pointer shape is hand by default.
+       (tree-widget-icon): Rename generic icon widget from
+       `tree-widget-control'.
+       (tree-widget-*-icon): Rename from `tree-widget-*-control' and
+       derive from `tree-widget-icon'.
+       (tree-widget-handle): Improve default look and feel of the text
+       representation.
+       (tree-widget): Rename :*-control properties to :*-icon properties.
+       Add :action and :help-echo properties.
+       (tree-widget-after-toggle-functions): Move.
+       (tree-widget-close-node, tree-widget-open-node): Remove.
+       (tree-widget-before-create-icon-functions): New hook.
+       (tree-widget-value-create): Update to allow customization of icons
+       and nodes at run-time via that new hook.
+       (tree-widget-icon-create, tree-widget-leaf-node-icon-p)
+       (tree-widget-icon-action, tree-widget-icon-help-echo)
+       (tree-widget-action, tree-widget-help-echo): New functions.
+
+2005-08-15  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-buffer-internal): Use with-no-warnings.
+       (ido-make-merged-file-list): Use while-no-input.
+
+2005-08-15  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-mark-duplications-flag): Doc fix.
+       (flyspell-large-region): Fix doc and custom type.
+
+2005-08-14  Richard M. Stallman  <rms@gnu.org>
+
+       * files.el (interpreter-mode-alist): Doc fix.
+
+       * mail/rmail.el (rmail-nonignored-headers): New variable.
+       (rmail-clear-headers): Use it.
+       (rmail-reply): Better handling of mail-followup-to header.
+
+       * progmodes/sh-script.el (sh-font-lock-keywords-var):
+       Rename variable from sh-font-lock-keywords.  In the `shell' entry,
+       don't try to refer to executable-font-lock-keywords.
+       (sh-font-lock-keywords-var-1): Rename from sh-font-lock-keywords-1.
+       (sh-font-lock-keywords-var-2): Rename from sh-font-lock-keywords-2.
+       (sh-font-lock-keywords): Append executable-font-lock-keywords here.
+       (sh-mode): Set comment-start-skip, local-abbrev-table,
+       imenu-case-fold-search.
+       (sh-set-shell): Don't set them here.
+       (sh-feature): Simplify.  Get rid of the eval-a-variable feature.
+       Don't cache the results in the original alist; don't ever modify
+       that alist.
+
+       * textmodes/flyspell.el (flyspell-mode): Autoload a defvar.
+
+       * textmodes/ispell.el (lookup-words): Cope with case where ARGS is
+       empty.
+
+2005-08-15  Andreas Schwab  <schwab@suse.de>
+
+       * desktop.el: Put autoload cookie at risky-local-variable declarations.
+
+       * dired.el, info.el, mail/rmail.el: Revert last change.
+
+2005-08-14  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * dired.el: Fix dependency bug: Wrap `desktop-buffer-mode-handlers'
+       modification in `eval-after-load' form.
+       * info.el: Likewise.
+       * mail/rmail.el: Likewise.
+
+2005-08-14  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/compile.el (compilation-mode-font-lock-keywords):
+       Remove highlighting of "Compilation started".  Highlight only
+       the word "finished" in "Compilation finished".  Add highlighting
+       of "interrupt", "killed", "terminated" and the exit code.
+       (compilation-start): Add newline after header.  Use exactly the
+       same time stamp format as the finishing message.
+       (compilation-mode-map): Add ellipsis to "Search Files (grep)".
+
+       * progmodes/grep.el (grep-mode-map): Add ellipsis to "Another grep".
+       (grep-mode-font-lock-keywords): Don't highlight "Grep started".
+       Add highlighting of "interrupt", "killed", "terminated".
+
+       * delsel.el (delete-selection-pre-hook): If overwrite-mode is
+       enabled and the current command is self-insert-command, call it
+       explicitly with overwrite-mode bound to nil, to not allow it
+       to delete the character after the selected region.
+
+2005-08-12  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * emacs-lisp/eldoc.el: Add move-beginning-of-line,
+       move-end-of-line, end-of-line, and beginning-of-line to the list
+       of commands after which the echo area is updated.
+
+2005-08-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * cus-edit.el (custom-save-all, custom-save-delete):
+       Bind recentf-exclude to exclude custom-file.
+
+2005-08-12  Ehud Karni  <ehud@unix.mvs.co.il>
+
+       * mail/rmailsum.el (rmail-summary-end-of-message): New command
+       to go to the bottom of the mail message.  Added to
+       `rmail-summary-mode-map' with key "/".
+       (rmail-summary-show-message): New (internal) function for use by
+       both `rmail-summary-beginning/end-of-message'.
+       (rmail-summary-beginning-of-message): Change to use
+       rmail-summary-show-message.
+
+       * mail/rmail.el (rmail-end-of-message): New command to go to the
+       end of the current message.  Added to `rmail-mode-map' with key "/".
+       (rmail-beginning-of-message): Fix to work as documented.
+       (rmail-mode): Change documentation.
+
+       * progmodes/compile.el (compilation-start): Add the line
+       "Compilation started" with compilation start time.
+       (compilation-mode-font-lock-keywords): Add `started' to keywords.
+
+2005-08-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * menu-bar.el (menu-bar-options-menu): Standardize capitalization
+       of menu items.
+
+2005-08-11  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (pop-global-mark): Reverse test of widen-automatically.
+
+       * battery.el (battery-status-function): Don't use ignore-errors.
+
+2005-08-11  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/generic.el (generic-font-lock-defaults): Declare with
+       define-obsolete-variable-alias.
+
+2005-08-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * net/ange-ftp.el: Use \\` and \\' instead of ^ and $ in regexps.
+       (ange-ftp-send-cmd): Revert last change, and expand
+       the comment explaining the problem.
+
+2005-08-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * ldefs-boot.el: Update.
+
+       * menu-bar.el (menu-bar-showhide-menu): Rename "Date, Time and Mail"
+       item to "Time, Load and Mail".  Change help echo text.
+
+       * time.el (display-time-use-mail-icon, display-time-format)
+       (display-time-string-forms): Shorten first line of docstrings.
+
+2005-08-10  Lars Hansen  <larsh@soem.dk>
+
+       * desktop.el (desktop-buffer-mode-handlers):
+       Make non-customizable.  Add autoload cookie.  Change initial value to
+       nil; add elements in respective modules instead.  Fix doc string.
+       (desktop-load-file): New function.
+       (desktop-minor-mode-handlers): New autoloaded variable.
+       (desktop-create-buffer): Call minor mode handlers.
+       Use desktop-load-file to load major and minor mode modules prior to
+       checking for a handler.
+       (desktop-save): Don't add nil to desktop-minor-modes for minor
+       modes with nil function in desktop-minor-mode-table.  Don't delete
+       desktop file before rewriting it.
+       (desktop-locals-to-save): Add autoload cookie.  Don't make
+       automatically buffer-local.  Add variables column-number-mode,
+       size-indication-mode, indent-tabs-mode,
+       indicate-buffer-boundaries, indicate-empty-lines and
+       show-trailing-whitespace.
+       (desktop-clear): Allow desktop-clear-preserve-buffers to contain
+       regexps.  Don't use desktop-clear-preserve-buffers-regexp.
+       (desktop-clear-preserve-buffers-regexp): Delete.
+       (desktop-clear-preserve-buffers): Update initial value and docstring.
+       (desktop-save-buffer): Fix doc string.
+
+       * hilit-chg.el: Add handler to desktop-minor-mode-handlers.
+       (hilit-chg-desktop-restore): New function.
+       (highlight-changes-mode): Add highlight-changes-mode to
+       desktop-locals-to-save.
+
+       * dired.el: Add handler to desktop-buffer-mode-handlers.
+       (dired-restore-desktop-buffer): Remove autoload cookie.
+       (dired-mode): Add autoload cookie.
+
+       * info.el: Add handler to desktop-buffer-mode-handlers.
+       (Info-restore-desktop-buffer): Remove autoload cookie.
+       (Info-mode): Add autoload cookie.
+
+       * mh-e/mh-e.el: Add handler to desktop-buffer-mode-handlers.
+       (mh-restore-desktop-buffer): Remove autoload cookie.
+       (mh-folder-mode): Add autoload cookie.
+
+       * mail/rmail.el: Add handler to desktop-buffer-mode-handlers.
+       (rmail-restore-desktop-buffer): Remove autoload cookie.
+
+2005-08-11  Masatake YAMATO  <jet@gyve.org>
+
+       * hexl.el (hexl-address-region):
+       (hexl-ascii-region, hexl-font-lock-keywords):
+       (hexl-highlight-line-range): Use the term "region"
+       instead of "area" for consistency with the other symbols
+       defined in hexl.el.
+
+2005-08-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * menu-bar.el (menu-bar-options-save): Move `display-time-mode' to
+       correct group: it is set with `menu-bar-make-mm-toggle' (pointed
+       out by Juri Linkov).  Add `display-battery-mode'.
+
+2005-08-09  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/compile.el (compilation-mode-font-lock-keywords):
+       Remove `-text' from face variable names.
+       (compilation-error-file-name, compilation-warning-file-name)
+       (compilation-info-file-name): Delete faces.
+       (compilation-line-number, compilation-column-number):
+       Remove face underlining.
+       (compilation-message-face): Set to `underline' value by default.
+       (compilation-error-face, compilation-warning-face)
+       (compilation-info-face): Remove `-file-name' from face names.
+       (compilation-error-text-face, compilation-warning-text-face)
+       (compilation-info-text-face): Delete face variables.
+       (compilation-text-face): Delete function.
+
+       * progmodes/grep.el (grep-regexp-alist): Use `.+?' instead of `[^:\n]+'.
+       (grep-mode-font-lock-keywords): Use `.+?' instead of `[^\n-]+'.
+       (grep-error-face): Set to `compilation-error' instead of
+       `compilation-error-face' (which is redefined to `grep-hit-face' in
+       grep buffers).
+       (grep-mode-font-lock-keywords): Remove `-text' from face variable
+       names.  Use `grep-error-face' instead of `compilation-error-text-face'.
+
+       * dired-aux.el (dired-do-query-replace-regexp):
+       Use `query-replace-read-args'.
+
+       * replace.el (query-replace-read-from, query-replace-read-to)
+       (query-replace-read-args): Rename arg `string' to `prompt'.
+
+       * menu-bar.el (menu-bar-showhide-menu): Add `showhide-battery'.
+
+2005-08-09  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * net/ange-ftp.el (ange-ftp-send-cmd): Make it work properly with
+       uploading files.
+       (ange-ftp-canonize-filename): Handle file names beginning with ~
+       correctly.
+
+2005-08-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * textmodes/fill.el (canonically-space-region)
+       (fill-context-prefix, fill-french-nobreak-p)
+       (fill-delete-newlines, fill-comment-paragraph)
+       (justify-current-line): "?\ " -> "?\s".
+
+2005-08-09  Ben North  <ben@redfrontdoor.org>  (tiny change)
+
+       * textmodes/fill.el (fill-nonuniform-paragraphs):
+       Improve argument/docstring consistency.
+
+2005-08-09  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/ispell.el (ispell-word): More fboundp checks.
+
+       * files.el (find-file-noselect): Don't call set-buffer-major-mode.
+       (find-file-noselect-1): Call it here, only if RAWFILE.
+       (normal-mode): Always set some major mode.
+       (save-some-buffers-action-alist): Change some explanation strings.
+       (file-name-non-special): In the `quote' method, use unwind-protect.
+
+2005-08-09  Magnus Henoch  <mange@freemail.hu>
+
+       * textmodes/ispell.el (ispell-find-aspell-dictionaries): New command.
+       (ispell-have-aspell-dictionaries): New variable.
+       (ispell-aspell-data-dir, ispell-aspell-dict-dir): New variables.
+       (ispell-get-aspell-config-value): New function.
+       (ispell-aspell-find-dictionary): New function.
+       (ispell-aspell-add-aliases): New function.
+       (ispell-valid-dictionary-list): Call ispell-find-aspell-dictionaries if
+       appropriate.  Don't look for ispell dictionaries if we use aspell.
+       (ispell-menu-map): Don't build a submenu of dictionaries.
+
+2005-08-09  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/sql.el (sql-interactive-mode-map): Use fboundp.
+       (sql-read-passwd): Use read-passwd.
+
+       * progmodes/idlw-toolbar.el (idlwave-toolbar)
+       (idlwave-toolbar-is-possible): Add defvars.
+
+       * progmodes/idlw-shell.el (idlwave-xemacs-hack-mouse-track):
+       Avoid warnings.
+
+       * progmodes/idlw-rinfo.el (idlwave-system-variables-alist)
+       (idlwave-system-class-info, idlwave-executive-commands-alist):
+       Use defvar.
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax): Add autoload.
+
+       * mail/supercite.el (sc-ask, sc-no-blank-line-or-header):
+       Avoid warnings.
+
+       * mail/rmail.el (rmail-ignored-headers): Don't hide mime-version:
+       and content-type: headers.
+
+       * eshell/eshell.el (eshell): Avoid warnings about eshell-mode.
+
+       * emacs-lisp/map-ynp.el (map-y-or-n-p): Reorder the options
+       and rename some of them to be more self-explanatory.
+
+       * calendar/calendar.el (calendar-mode-map): Bind < and > usefully.
+
+       * startup.el (command-line-1): Implement -scriptload.
+
+       * replace.el (occur-engine): Initial *Occur* output not undoable.
+
+       * menu-bar.el (menu-bar-file-menu): Rename some menu items
+       and improve help strings.
+
+       * isearch.el (isearch-repeat): When changing direction,
+       mark search successful.
+
+       * ediff-init.el: Use (featurep 'xemacs).
+
+       * comint.el (send-invisible): Identify buffer, if not selected.
+
+       * align.el: Delete autoload for c-guess-basic-syntax.
+
+2005-08-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * textmodes/refbib.el (r2b-convert-record, r2b-convert-buffer):
+       Improve argument/docstring consistency.  Doc fixes.
+       (r2b-variables, r2bv-address, r2bv-annote, r2bv-author)
+       (r2bv-booktitle, r2bv-date, r2bv-decade, r2bv-editor)
+       (r2bv-entry-kind, r2bv-institution, r2bv-journal, r2bv-keywords)
+       (r2bv-kn, r2bv-month, r2bv-note, r2bv-number, r2bv-ordering)
+       (r2bv-organization, r2bv-pages, r2bv-primary-author)
+       (r2bv-publisher, r2bv-school, r2bv-title, r2bv-title-first-word)
+       (r2bv-tr, r2bv-type, r2bv-volume, r2bv-where, r2bv-year):
+       Defvar at compile time.
+
+2005-08-09  Juri Linkov  <juri@jurta.org>
+
+       * info.el: Replace `info' with upper-case `Info' where appropriate.
+       (info-title-1, info-title-2, info-title-3, info-title-4)
+       (info-menu-header): Move up face definitions.
+       (info-menu-star): Rename from `info-menu-5'.
+       (Info-fontify-node): Replace `info-menu-5' with `info-menu-star'.
+       (Info-fontify-visited-nodes): Fix docstring.
+       (Info-hide-note-references): Fix docstring.
+       (Info-up, Info-next-reference, Info-prev-reference): Put cursor on
+       menu items in the same way as on cross-references.
+       (info-apropos): Fix sorting order and formatting to be like in the
+       stand-alone Info browser.  Display error messages for 1 sec.
+       (Info-mode-map): Move down `c' key binding.  Bind `^' to `Info-up'.
+       (Info-mode-menu): Remove item for `Info-search-case-sensitively'
+       from the menu bar.
+       (Info-insert-dir): Restore point after calling
+       `insert-buffer-substring'.
+
+2005-08-08  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/lmenu.el (lucid-menubar-map, lucid-failing-menubar)
+       (recompute-lucid-menubar): Add defvars.
+
+       * mail/sendmail.el (mail-yank-original): Use with-no-warnings.
+
+       * mail/reporter.el (reporter-dump-state): Use insert-buffer-substring.
+
+       * net/net-utils.el (run-dig): Rename from `dig'.
+
+       * play/gametree.el (gametree-mode): Use make-local-variable,
+       not make-variable-buffer-local.
+
+       * progmodes/ada-prj.el (ada-prj-display-page): Use with-no-warnings.
+
+       * ansi-color.el (ansi-color-make-extent)
+       (ansi-color-set-extent-face): Use fboundp, not functionp.
+
+       * autorevert.el (auto-revert-tail-mode): Use make-local-variable,
+       not make-variable-buffer-local.
+
+       * bookmark.el (Info-current-file): Add defvar.
+       (bookmark-jump-noselect): Use with-no-warnings.
+
+       * completion.el (c-mode-map, fortran-mode-map): Add defvars.
+
+       * ebuff-menu.el (Helper-return-blurb): Add defvar.
+
+       * ffap.el (gnus-summary-buffer, gnus-article-buffer): Add defvars.
+
+       * find-file.el (ada-procedure-start-regexp)
+       (ada-package-start-regexp): Add defvars.
+
+       * info.el (Info-insert-dir): Use insert-buffer-substring.
+
+       * xml.el (xml-att-def-re): Add defvar.
+
+       * icomplete.el (icomplete-exhibit): Adapt to new while-no-input
+       calling convention.
+
+       * subr.el (while-no-input): Return t if there is input.
+
+2005-08-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-start.el (all): Add `overflow-newline-into-fringe'.
+
+2005-08-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * cmuscheme.el (inferior-scheme-mode-hook, inferior-scheme-mode)
+       (scheme-prev-l/c-dir/file): Fix typos in docstrings.
+
+2005-08-08  Emilio C. Lopes  <eclig@gmx.net>
+
+       * cmuscheme.el (scheme-start-file): Replace reference to
+       `user-emacs-directory' by "~/.emacs.d/".
+
+2005-08-08  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * info.el (Info-dir-remove-duplicates): Avoid case folding
+       in loop; instead, keep downcased strings for comparison.
+       Suggested by Helmut Eller.
+
+2005-08-07  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.50.
+
+       * net/tramp.el: Remove defvar of `last-coding-system-used' in the
+       XEmacs case; not necessary anymore.
+       (tramp-user-regexp): Allow "@" as part of user name.
+       (tramp-handle-set-visited-file-modtime)
+       (tramp-handle-insert-file-contents)
+       (tramp-handle-write-region): No special handling for
+       `last-coding-system-used', because this is done in
+       `tramp-accept-process-output' now.
+       (tramp-accept-process-output): New defun.
+       (tramp-process-one-action, tramp-process-one-multi-action)
+       (tramp-wait-for-regexp, tramp-wait-for-output)
+       (tramp-discard-garbage-erase-buffer): Call it.  Reported by David
+       Howells <dhowells@redhat.com>.
+       (clear-visited-file-modtime): Defadvice removed.  The check for
+       unset buffer's modtime does not need to be based on
+       `tramp-buffer-file-attributes'.  Suggested by RMS.
+       (tramp-message): Insert "\n" if not being at beginning of line.
+       (tramp-find-shell): Use `tramp-barf-if-no-shell-prompt' for code
+       sequence with same logic.
+       (tramp-completion-handle-expand-file-name): Discard call of
+       `tramp-drop-volume-letter'.  It is not necessary, and there have
+       been problems with (expand-file-name "~/.netrc" "/") in ange-ftp.
+       Reported by Richard G. Bielawski <Richard.G.Bielawski@wellsfargo.com>.
+       (tramp-do-copy-or-rename-file-out-of-band): Transfer message
+       should always be visible.
+       (tramp-handle-insert-directory, tramp-setup-complete)
+       (tramp-set-process-query-on-exit-flag)
+       (tramp-append-tramp-buffers): Pacify byte-compiler.
+       (tramp-bug): Delete non-existing variables from list.
+       Apply `tramp-load-report-modules' as pre-hook.
+       Mask `tramp-password-prompt-regexp', `tramp-shell-prompt-pattern' and
+       `shell-prompt-pattern' because of non-7bit characters.
+       Reported by Sebastian Luque <sluque@mun.ca>.
+       (tramp-reporter-dump-variable, tramp-load-report-modules): New defuns.
+       (tramp-match-string-list): Remove function.
+       (tramp-wait-for-regexp): Remove call of that function.
+       Suggested by Kim F. Storm <storm@cua.dk>.
+       (tramp-set-auto-save-file-modes): Use octal integer code #o600
+       instead of octal character code ?\600.  The latter resulted in a
+       syntax error with XEmacs.
+
+       * net/tramp-smb.el: Remove defvar of `last-coding-system-used' in the
+       XEmacs case; not necessary anymore.
+       (tramp-smb-handle-write-region): No special handling for
+       `last-coding-system-used', because this is done in
+       `tramp-accept-process-output' now.
+       (tramp-smb-wait-for-output): Call `tramp-accept-process-output'.
+
+2005-08-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * wid-edit.el (widget-choice-value-create):
+       Unconditionally respect user choice.  Set :explicit-choice back to nil
+       when no longer needed.
+       (widget-choice-action): Unconditionally respect user choice.
+       Eliminate :explicit-choice-value.
+
+       * fringe.el (set-fringe-indicators-1, fringe-indicators): Delete.
+
+       * menu-bar.el (menu-bar-options-save): Replace `fringe-indicators'
+       with `indicate-empty-lines' and `indicate-buffer-boundaries'.
+       (menu-bar-showhide-fringe-menu): Add new item "Empty line indicators"
+       running new function `toggle-indicate-empty-lines'.
+       Rename "Customize" item to "Customize fringe".
+       Rename "Indicators" item to "Buffer boundaries" and change help echo.
+       (menu-bar-showhide-fringe-ind-menu): Change several help echos.
+       Add `menu-bar-showhide-fringe-ind-customize' as "Other (customize)".
+       Delete "Empty lines only" item.
+       (menu-bar-showhide-fringe-ind-customize): New function.
+       (menu-bar-showhide-fringe-ind-mixed)
+       (menu-bar-showhide-fringe-ind-box)
+       (menu-bar-showhide-fringe-ind-right)
+       (menu-bar-showhide-fringe-ind-left)
+       (menu-bar-showhide-fringe-ind-none): Use `indicate-buffer-boundaries'
+       instead of `fringe-indicators'.
+
+2005-08-06  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper.el (viper-emacs-state-mode-list): Add recentf-dialog-mode.
+       Change the date of last update.
+
+2005-08-06  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-cmd.el (viper-harness-minor-mode, viper-exec-delete)
+       (viper-exec-yank, viper-put-back): Don't display modification msg
+       if in the minibuffer.
+
+       * viper-init.el (viper-replace-overlay-cursor-color)
+       (viper-insert-state-cursor-color, viper-vi-state-cursor-color):
+       Make variables frame local.
+
+       * viper-util.el (viper-append-filter-alist): Use append instead of
+       nconc.
+
+       * viper.el (viper-vi-state-mode-list)
+       (viper-emacs-state-mode-list): Move help-mode and
+       completion-list-mode from the first list to the second.
+       (viper-mode): Docstring.
+       (viper-go-away, viper-non-hook-settings): Don't localize
+       minor-mode-alist in newer Emacsen.  Add advice to
+       set-cursor-color.  Don't bind "\C-c\\".
+
+2005-08-06  Emilio C. Lopes  <eclig@gmx.net>
+
+       * cmuscheme.el (scheme-trace-command, scheme-untrace-command)
+       (scheme-macro-expand-command): New user options.
+       (scheme-trace-procedure, scheme-expand-current-form): New commands.
+       (scheme-form-at-point, scheme-start-file)
+       (scheme-interactively-start-process): New functions.
+       (scheme-get-process): New function, extracted from `scheme-proc'.
+       (run-scheme): Call `scheme-start-file' to get start file, and pass
+       it to `make-comint'.
+       (switch-to-scheme, scheme-proc):
+       Call `scheme-interactively-start-process' if no Scheme buffer/process
+       is available.
+
+2005-08-06  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/compile.el (compilation-mode-font-lock-keywords):
+       Use `compilation-text-face', `compilation-info-text-face' and
+       `compilation-error-text-face' instead of `font-lock-keyword-face'.
+       (compilation-error): New face.
+       (compilation-error-file-name): Inherit from
+       `compilation-error' instead of `font-lock-warning-face'.
+       (compilation-warning-file-name): Inherit from
+       `compilation-warning' instead of `font-lock-warning-face'.
+       (compilation-info, compilation-error-file-name)
+       (compilation-warning-file-name, compilation-info-file-name)
+       (compilation-line-number, compilation-column-number): Doc fix.
+       (compilation-error-text-face, compilation-warning-text-face)
+       (compilation-info-text-face): New face variables.
+       (compilation-line-face, compilation-column-face)
+       (compilation-enter-directory-face)
+       (compilation-leave-directory-face): Doc fix.
+       (compilation-text-face): New function.
+
+       * progmodes/grep.el (grep-regexp-alist): Set 5th arg `TYPE' to 0
+       instead of 1 to display binary file names as info file links.
+       (grep-error-face): Use `compilation-error-face' instead of
+       `font-lock-keyword-face'.
+       (grep-mode-font-lock-keywords): Use `compilation-info-text-face'
+       and `compilation-warning-text-face' instead of
+       `font-lock-keyword-face'.  Use `compilation-error-text-face'
+       instead of `grep-error-face'.
+
+2005-08-05  Kenichi Handa  <handa@m17n.org>
+
+       * international/code-pages.el: Add autoload cookies for all coding
+       systems.
+
+2005-08-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-start.el (all): Put undo.c where it alphabetically belongs.
+
+2005-08-04  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/compile.el (compilation-mode-map):
+       * progmodes/grep.el (grep-mode-map):
+       Bind TAB to `compilation-next-error' and [backtab] to
+       `compilation-previous-error'.
+
+       * progmodes/grep.el (grep-regexp-alist): Replace complex regexp
+       matching line numbers, column numbers and their ranges with regexp
+       matching only line numbers.
+       (grep-context-face): New face variable.
+       (grep-mode-font-lock-keywords): Use it.
+
+       * faces.el (read-face-name): Delete duplicate faces.
+
+2005-08-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * thumbs.el (thumbs-find-image): Don't make variables
+       automatically buffer local.
+       (thumbs-current-tmp-filename, thumbs-current-image-filename)
+       (thumbs-image-num): Make automatically buffer local.
+       (thumbs-show-thumbs-list): Use `make-local-variable', not
+       `make-variable-buffer-local'.
+       (thumbs-insert-image): Make `thumbs-current-image-size' buffer-local.
+
+       * play/doctor.el (doctor-type-symbol): "?\ " -> "?\s".
+       (**mad**, *debug*, *print-space*, *print-upcase*, abuselst)
+       (abusewords, account, afraidof, arerelated, areyou, bak, beclst)
+       (bother, bye, canyou, chatlst, continue, deathlst, describe)
+       (drnk, drugs, eliza-flag, elizalst, famlst, feared, fears)
+       (feelings-about, foullst, found, hello, history, howareyoulst)
+       (howdyflag, huhlst, ibelieve, improve, inter, isee, isrelated)
+       (lincount, longhuhlst, lover, machlst, mathlst, maybe, moods)
+       (neglst, obj, object, owner, please, problems, qlist)
+       (random-adjective, relation, remlst, repetitive-shortness)
+       (replist, rms-flag, schoollst, sent, sexlst, shortbeclst)
+       (shortlst, something, sportslst, stallmanlst, states, subj)
+       (suicide-flag, sure, things, thlst, toklst, typos, verb, want)
+       (whatwhen, whereoutp, whysay, whywant, zippy-flag, zippylst):
+       Defvar at compile time.
+
+       * progmodes/ada-mode.el (ada-mode): Use `make-local-variable',
+       not `make-variable-buffer-local'.
+
+2005-08-02  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-rect.el (cua--highlight-rectangle): Only show
+       rectangle overlay in selected window.
+
+2005-08-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-start.el (all): Put `indicate-empty-lines' in fringe group
+       instead of display group.  Make `indicate-buffer-boundaries'
+       customizable through Custom.
+
+2005-08-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/gdb-ui.el (gdb-frame-address, gdb-var-changed)
+       (gdb-output-sink, gdba, gdb-cpp-define-alist-program)
+       (gdb-set-gud-minor-mode, gdb-exited, gdb-setup-windows)
+       (gdb-put-string): Fix typos in docstrings.
+
+2005-08-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       Update copyright notices of files in progmodes directory for
+       release of Emacs 22.1.
+
+       * progmodes/gdb-ui.el (gdb-enable-debug-log): Add autoload cookie.
+
+       * progmodes/gud.el (gud-tooltip-mode): Add autoload cookie.
+       Don't barf if the GUD buffer has been killed.
+
+2005-08-01  Kim F. Storm  <storm@cua.dk>
+
+       * textmodes/table.el (table-yank-handler): Change defcustom to defvar.
+
+2005-07-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (next-error-follow-minor-mode):
+       make-variable-buffer-local -> make-local-variable.
+
+       * emacs-lisp/cl-extra.el: Require CL also when compiling.
+
+       * emacs-lisp/bytecomp.el (byte-compile-make-variable-buffer-local)
+       (byte-compile-form-make-variable-buffer-local): New functions to warn
+       about misuses of make-variable-buffer-local where make-local-variable
+       was meant.
+
+2005-07-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bs.el (bs-attributes-list): Doc fix.
+       (bs): Update url-link.
+
+       * desktop.el (desktop-save-buffer): Fix typos in docstring.
+       (desktop-load-default): Simplify.
+
+       * ibuffer.el (ibuffer-columnize-and-insert-list)
+       (ibuffer-mouse-toggle-mark, ibuffer-count-marked-lines)
+       (ibuffer-unmark-all, ibuffer-toggle-marks)
+       (ibuffer-unmark-forward, ibuffer-unmark-backward)
+       (ibuffer-compile-make-format-form, ibuffer-format-column)
+       (ibuffer-current-buffers-with-marks)
+       (ibuffer-update-title-and-summary): "?\ " -> "?\s".
+       (ibuffer): Doc fix.
+       (ibuffer-mode): Fix typo in docstring.
+       (ibuffer-hooks, ibuffer-mode-hooks): Make obsolete and declare
+       with `define-obsolete-variable-alias'.
+       (ibuffer-elide-long-columns): Mark as obsolete.  Doc fix.
+
+2005-07-29  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (select-message-coding-system):
+       Be sure to use LF for end-of-line.  If no coding system is decided,
+       return iso-8859-1-unix.
+
+2005-07-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * net/ange-ftp.el (ange-ftp-gateway-fatal-msgs)
+       (ange-ftp-pending-error-line): New vars.
+       (ange-ftp-process-handle-line, ange-ftp-process-filter): Use them
+       to handle the non-fatal no-route-to-host messages.
+       (internal-ange-ftp-mode): Make the no-match regexp more efficient.
+
+2005-07-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * isearch.el (isearch-mode-map, isearch-other-meta-char)
+       (isearch-quote-char, isearch-printing-char)
+       (isearch-text-char-description): "?\ " -> "?\s".
+       (isearch-lazy-highlight-cleanup)
+       (isearch-lazy-highlight-initial-delay)
+       (isearch-lazy-highlight-interval)
+       (isearch-lazy-highlight-max-at-a-time)
+       (isearch-lazy-highlight-face, isearch-lazy-highlight-cleanup):
+       Declare with define-obsolete-*-alias macros.
+       (isearch-forward): Fix typo in docstring.
+       (search-invisible, search-ring-yank-pointer)
+       (regexp-search-ring-yank-pointer): Doc fixes.
+
+       * recentf.el (recentf-menu-append-commands-p): Declare with
+       `define-obsolete-variable-alias'.
+       (recentf-max-saved-items, recentf-menu-filter)
+       (recentf-arrange-by-rule-subfilter): Doc fixes.
+       (recentf-menu-append-commands-flag)
+       (recentf-initialize-file-name-history, recentf-expand-file-name)
+       (recentf-clear-data): Fix typos in docstrings.
+
+2005-07-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el: Smarten comments.
+       (gdb-info-breakpoints-custom): Use nowarn when finding file.
+
+2005-07-27  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/apollo.el (terminal-init-apollo): New function containing
+       all former top level forms in the file.
+       * term/bobcat.el (terminal-init-bobcat):
+       * term/cygwin.el (terminal-init-cygwin):
+       * term/iris-ansi.el (terminal-init-iris-ansi):
+       * term/linux.el (terminal-init-linux):
+       * term/news.el (terminal-init-news):
+       * term/rxvt.el (terminal-init-rxvt):
+       * term/sun.el (terminal-init-sun):
+       * term/tvi970.el (terminal-init-tvi970):
+       * term/vt100.el (terminal-init-vt100):
+       * term/vt102.el (terminal-init-vt102):
+       * term/vt125.el (terminal-init-vt125):
+       * term/vt200.el (terminal-init-vt200):
+       * term/vt201.el (terminal-init-vt201):
+       * term/vt220.el (terminal-init-vt220):
+       * term/vt240.el (terminal-init-vt240):
+       * term/vt300.el (terminal-init-vt300):
+       * term/vt320.el (terminal-init-vt320):
+       * term/vt400.el (terminal-init-vt400):
+       * term/vt420.el (terminal-init-vt420):
+       * term/wyse50.el (terminal-init-wyse50):
+       * term/xterm.el (terminal-init-xterm): Likewise.
+
+       * term/README: Describe the terminal-init-* functionality.
+
+       * startup.el (command-line): After loading the terminal initialization
+       file call the corresponding terminal initialization function.
+
+2005-07-27  Kenichi Handa  <handa@m17n.org>
+
+       * ps-bdf.el (bdf-read-font-info): Ignore glyphs whose ENCODING is
+       negative.
+
+       * ps-mule.el (ps-mule-bitmap-prologue): Fix arguments to setcharwidth.
+       (ps-mule-composition-prologue): Fix for the case that
+       RelativeCompose is false.
+
+2005-07-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * smerge-mode.el (smerge-ediff): Use insert-buffer-substring.
+
+       * descr-text.el (describe-char): Handle the case where the list of
+       chars is displayed in a separate frame.
+       Be a bit more discriminating when looking for the char.
+
+2005-07-26  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bookmark.el (bookmark-automatically-show-annotations)
+       (bookmark-read-annotation-text-func): Doc fixes.
+       (bookmark-save): Improve argument/docstring consistency.
+       (bookmark-get-bookmark, bookmark-get-bookmark-record)
+       (bookmark-alist-from-buffer)
+       (bookmark-upgrade-file-format-from-0)
+       (bookmark-grok-file-format-version)
+       (bookmark-maybe-upgrade-file-format, bookmark-kill-line)
+       (bookmark-read-annotation-mode)
+       (bookmark-insert-current-bookmark, bookmark-jump)
+       (bookmark-exit-hook): Fix typos in docstrings.
+       (bookmark-exit-hooks): Define as obsolete alias.
+       (bookmark-exit-hook-internal): Run `bookmark-exit-hook',
+       not `bookmark-exit-hooks'.  Fix docstring.
+       (bookmark-bmenu-select): "?\ " -> "?\s".
+
+2005-07-25  Ari Roponen  <arjuropo@cc.jyu.fi>  (tiny change)
+
+       * startup.el (command-line): Fix typo.
+
+2005-07-24  Richard M. Stallman  <rms@gnu.org>
+
+       * tooltip.el (tooltip-mode): Test emacs-basic-display,
+       not emacs-quick-startup.
+
+2005-07-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/re-builder.el (reb-with-current-window): Delete.
+       (reb-next-match, reb-show-subexp): Use `with-selected-window'
+       instead of `reb-with-current-window'.
+       (reb-prev-match): Likewise.  Also, don't move left if the search
+       was unsuccessful.
+       (reb-initialize-buffer): New function.
+       (re-builder, reb-change-syntax): Use it.
+
+       * man.el (Man-goto-page): Make second argument NOERROR optional.
+
+2005-07-23  Richard M. Stallman  <rms@gnu.org>
+
+       * man.el (Man-bgproc-sentinel): Check here for failure to find
+       any man page in the output, and report the error here.
+       (Man-arguments): Make it permanent local.
+       (Man-goto-page): New arg NOERROR.  Never kill the current buffer.
+       (Man-mode): Pass t for NOERROR.
+
+       * progmodes/grep.el (grep-error-face): Use font-lock-keyword-face.
+       (grep-mode-font-lock-keywords):
+       Don't use compilation-...-face for messages that are not file names.
+
+       * progmodes/compile.el (compilation-mode-font-lock-keywords):
+       Don't use compilation-...-face for messages that are not file names.
+
+2005-07-22  Juri Linkov  <juri@jurta.org>
+
+       * startup.el (normal-splash-screen): Update menu name.
+
+       * tempo.el (tempo-insert-template): Fix 2005-07-16 change.
+
+2005-07-22  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el: Load term/rxvt if the terminal is actually an
+       rxvt terminal.
+       (xterm-rxvt-set-background-mode): Remove, not used anymore.
+
+       * term/rxvt.el (function-key-map): Use substitute-key-definition
+       to bind {C,S,C-S}-{f1-f10}.  Add a few missing key bindings.
+
+       * term/cygwin.el: New file.
+
+2005-07-22  Kim F. Storm  <storm@cua.dk>
+
+       * image-file.el (insert-image-file, image-file-yank-handler):
+       Fix last change to maintain a (unique) yank-handler on yanked images.
+
+2005-07-22  Eduardo Mu\e,Aq\e(Boz  <emufer@terra.es>  (tiny change)
+
+       * dired.el (dired-move-to-filename-regexp): Recognize the B suffix
+       of the file size (as in "177B" for 177 bytes).  This happens with
+       "ls -lh" on FreeBSD.
+
+2005-07-22  Juanma Barranquero  <lekktu@gmail.com>
+
+       * hilit-chg.el (highlight-changes-global-initial-state)
+       (highlight-compare-buffers, hilit-chg-turn-on-maybe)
+       (hilit-chg-fixup, highlight-changes-mode):
+       Fix typos in docstrings.
+       (highlight-changes-global-modes, highlight-changes-rotate-faces):
+       Doc fixes.
+
+2005-07-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Never call the
+       mode function using `eval-after-load'.
+
+2005-07-21  Kim F. Storm  <storm@cua.dk>
+
+       * mail/emacsbug.el (report-emacs-bug): Request that backtraces are
+       included when reporting an Emacs crash, and tell about the DEBUG file.
+
+       * image-file.el (insert-image-file): Add yank-handler.
+       (image-file-yank-handler): Yank handler to make unique copies of
+       images when they are yanked into a buffer next to each other.
+
+2005-07-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * comint.el (comint-use-prompt-regexp, comint-send-input)
+       (comint-source-default, comint-extract-string)
+       (comint-get-source, comint-word, comint-completion)
+       (comint-source, comint-prompt-read-only, comint-update-fence):
+       Fix typos in docstrings.
+       (comint-use-prompt-regexp-instead-of-fields, comint-kill-output):
+       Declare with define-obsolete-*-alias macros.
+       (comint-previous-matching-input-from-input)
+       (comint-next-matching-input-from-input)
+       (comint-previous-matching-input, comint-next-matching-input)
+       (comint-forward-matching-input):
+       Improve argument/docstring consistency.
+
+       * desktop.el (desktop-clear-preserve-buffers-regexp):
+       Also preserve the *server* buffer.
+
+       * simple.el (clone-indirect-buffer): Doc fix.
+       (fixup-whitespace, just-one-space)
+       (backward-delete-char-untabify, lambda): "?\ " -> "?\s".
+       (next-error, next-error-highlight)
+       (next-error-highlight-no-select, next-error-last-buffer)
+       (next-error-buffer-p, next-error-find-buffer, next-error)
+       (previous-error, next-error-no-select, previous-error-no-select)
+       (open-line, split-line, minibuffer-prompt-width, kill-new)
+       (binary-overwrite-mode): Fix typos in docstrings.
+       (set-fill-column): Fix typo in message.
+
+       * skeleton.el (skeleton-proxy-new): Doc fix.
+
+       * strokes.el (strokes-load-hook): Doc fix.
+       (strokes-grid-resolution, strokes-get-grid-position)
+       (strokes-renormalize-to-grid, strokes-read-stroke)
+       (strokes-read-complex-stroke, strokes-file, strokes-last-stroke)
+       (strokes-global-map): Fix typos in docstrings.
+       (strokes-help): Doc fix.  Fix help message and pass it through
+       `substitute-command-keys'.
+
+       * tempo.el (tempo-insert-prompt, tempo-interactive)
+       (tempo-show-completion-buffer, tempo-tags, tempo-match-finder)
+       (tempo-insert-string-functions, tempo-local-tags)
+       (tempo-define-template, tempo-insert-template)
+       (tempo-insert-prompt-compat, tempo-is-user-element)
+       (tempo-insert-mark, tempo-find-match-string, tempo-complete-tag):
+       Fix typos in docstrings.
+
+       * vcursor.el (vcursor-other-window, vcursor-bind-keys)
+       (vcursor-key-bindings, vcursor-use-vcursor-map)
+       (vcursor-find-window, vcursor-scroll-down)
+       (vcursor-disable, vcursor-beginning-of-buffer)
+       (vcursor-end-of-buffer): Fix typos in docstrings.
+       (vcursor-relative-move, vcursor-get-char-count):
+       Improve argument/docstring consistency.
+
+       * version.el: "?\ " -> "?\s".
+
+       * wid-edit.el (widget-default-create, widget-after-change)
+       (widget-default-format-handler, widget-checklist-add-item)
+       (widget-radio-add-item, widget-choose, widget-specify-secret)
+       (widget-field-value-create, widget-field-value-get)
+       (widget-editable-list-format-handler)
+       (widget-editable-list-entry-create, widget-group-value-create)
+       (widget-documentation-link-add)
+       (widget-documentation-string-value-create): "?\ " -> "?\s".
+       (widget-convert-text): Doc fix.
+       (widget-narrow-to-field, widget-field-find)
+       (widget-url-link-action, widget-emacs-library-link-action)
+       (widget-color-notify): Fix typos in docstrings.
+
+       * w32-fns.el (w32-shell-name): Use `bound-and-true-p'.
+       (x-select-text, set-w32-system-coding-system)
+       (w32-add-charset-info): Fix typos in docstrings.
+
+       * emulation/cua-base.el (cua-mode, cua-enable-register-prefix)
+       (cua-enable-cua-keys, cua-use-hyper-key)
+       (cua-virtual-rectangle-edges): Fix typos in docstrings.
+       (cua--M/H-key, cua--init-keymaps): "?\ " -> "?\s".
+
+       * net/tramp.el (tramp-handle-load): Fix typo in error message.
+
+       * emacs-lisp/re-builder.el (regexp-builder): Declare with
+       `defalias' instead of faking it.
+
+       * eshell/em-ls.el (eshell-ls-decorated-name): Doc fix.
+       (eshell-ls-missing, eshell-ls-dired-initial-args)
+       (eshell-ls-use-in-dired): Fix typos in docstrings.
+
+2005-07-20  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-mode): Improve doc string.
+
+2005-07-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * abbrev.el (expand-region-abbrevs): Doc fix.
+       (inverse-add-mode-abbrev, inverse-add-global-abbrev):
+       Improve argument/docstring consistency.
+
+       * arc-mode.el (archive-get-descr, archive-alternate-display):
+       Doc fixes.
+       (archive-l-e): Improve argument/docstring consistency.
+       (archive-tmpdir, archive-unixdate, archive-unixtime)
+       (archive-chmod-entry): Fix typos in docstrings.
+       (archive-unflag, archive-unflag-backwards)
+       (archive-unmark-all-files): "?\ " -> "?\s".
+
+       * buff-menu.el (Buffer-menu-unmark): Doc fix.
+       (Buffer-menu-not-modified, Buffer-menu-execute)
+       (Buffer-menu-toggle-read-only, Buffer-menu-buffer+size)
+       (list-buffers-noselect, Buffer-menu-select): "?\ " -> "?\s".
+
+       * composite.el (compose-string, encode-composition-rule)
+       (compose-last-chars): Fix typos in docstrings.
+
+       * desktop.el (desktop-enable, desktop-basefilename):
+       Declare with `define-obsolete-variable-alias'.
+       (desktop-internal-v2s): Don't quote keywords.
+       (desktop-clear): "?\ " -> "?\s".
+
+       * dired.el (dired-align-file, dired-flag-backup-files)
+       (dired-change-marks, dired-unmark-all-files): "?\ " -> "?\s".
+       (dired-listing-switches, dired-ls-F-marks-symlinks)
+       (dired-dwim-target, dired-load-hook, dired-mode-hook)
+       (dired-directory, dired-faces, dired, dired-revert)
+       (dired-mode, dired-summary, dired-view-file)
+       (dired-copy-filename-as-kill, dired-delete-file)
+       (dired-no-confirm, dired-unmark-all-marks)
+       (dired-sort-by-date-regexp, dired-sort-by-name-regexp)
+       (dired-sort-inhibit, dired-sort-other): Fix typos in docstrings.
+       (dired-undo, dired-get-file-for-visit, dired-sort-toggle-or-edit):
+       Fix typos in message strings.
+
+       * dired-x.el (virtual-dired): Declare with `defalias'.
+       (dired-mark-unmarked-files, dired-local-variables-file)
+       (dired-omit-here-always): Doc fix.
+       (dired-omit-mode, dired-find-subdir)
+       (dired-enable-local-variables, dired-clean-up-buffers-too)
+       (dired-extra-startup, dired-mark-extension, dired-jump)
+       (dired-jump-other-window, dired-omit-localp, dired-virtual-mode)
+       (dired-smart-shell-command, dired-guess-shell-alist-user)
+       (dired-man, dired-initial-position, dired-x-hands-off-my-keys)
+       (dired-x-bind-find-file, dired-x-submit-report):
+       Fix typos in docstrings.
+       (dired-mark-unmarked-files): "?\ " -> "?\s".
+
+       * dirtrack.el (dirtrack-list): Fix typos in docstring.
+
+       * faces.el (describe-face): "?\ " -> "?\s".
+       (read-all-face-attributes, read-face-font, modify-face)
+       (face-attr-construct, italic): Fix typos in docstrings.
+       (frame-update-face-colors): Declare with
+       `define-obsolete-function-alias'.
+
+       * files.el (find-file-noselect, recode-file-name): Doc fixes.
+       (insert-directory, kill-some-buffers): "?\ " -> "?\s".
+       (magic-mode-alist, buffer-file-numbers-unique)
+       (write-file-functions, get-free-disk-space):
+       Fix typos in docstrings.
+       (find-file-not-found-hooks, find-file-hooks, write-file-hooks)
+       (write-contents-hooks, write-file-hooks):
+       Declare with `define-obsolete-variable-alias'.
+
+       * forms-d2.el (arch-rj): Fix typo in docstrings.
+       (arch-tocol): Likewise.  "?\ " -> "?\s".
+
+       * frame.el (set-frame-font, cursor-in-non-selected-windows):
+       Fix typo in docstring.
+       (set-screen-width, set-screen-height): Delete redundant info in
+       doctrings.
+       (new-frame, screen-height, screen-width): Declare with
+       `define-obsolete-function-alias'.
+       (delete-frame-hook, blink-cursor): Declare with
+       `define-obsolete-variable-alias'.
+
+       * paths.el (prune-directory-list): Fix typos in docstring.
+
+       * pcvs-util.el (cvs-flags-query, cvs-strings->string)
+       (cvs-prefix-get): Fix typos in docstrings.
+
+       * ps-print.el (ps-extend-face-list, ps-extend-face)
+       (ps-print-background-image): Fix typos in docstrings.
+       (ps-default-fg, ps-default-bg): Doc fixes.
+
+       * s-region.el (s-region-bind): Doc fix.
+       (s-region-move-p1, s-region-move-p2): Fix typos in docstrings.
+
+       * textmodes/org.el (org-table-formula-substitute-names)
+       (org-table-get-vertical-vector): Doc fixes.
+       (org-table-recalculate): Remove unused argument to `message'.
+
+2005-07-19  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-table-column-names)
+       (org-table-column-name-regexp)
+       (org-table-named-field-locations): New variables.
+       (org-archive-subtree): Protect `this-command' when calling
+       `org-copy-subtree' and `org-cut-subtree', to avoid appending to
+       the kill buffer.
+       (org-complete): Remove fixed-formula completion.
+       (org-edit-formulas-map): New variable.
+       (org-table-edit-formulas): New command.
+       (org-finish-edit-formulas, org-abort-edit-formulas)
+       (org-show-variable, org-table-get-vertical-vector): New functions.
+       (org-table-maybe-eval-formula): Handle `:=' fields.
+       (org-table-get-stored-formulas, org-table-store-formulas)
+       (org-table-get-formula, org-table-modify-formulas)
+       (org-table-replace-in-formulas): Handle named field formulas.
+       (org-table-get-specials): Store locations of named fields.
+
+2005-07-19  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/grep.el (grep-regexp-alist)
+       (grep-mode-font-lock-keywords, grep-process-setup):
+       Use default GNU grep match color "01;31m" instead of "01;41m".
+       (grep-regexp-alist, grep-mode-font-lock-keywords):
+       Use `\\[[0-9]*m' instead of `\\[00m'.
+       (grep-regexp-alist): Move `\\(?:\033\\[K\\)?' from sgr_end to
+       sgr_start where its handling is more important.  Use the real
+       length of sgr_start instead of constant 8.
+       (grep-mode-font-lock-keywords): Don't delete `\\(?:\033\\[K\\)?'
+       specially.  Delete all remaining escape sequences.
+       (grep-process-setup): Set "GREP_COLORS" for GNU grep 2.5.1-cvs.
+       (grep-regexp-alist): Make hyperlink only for binary file name
+       instead of the whole line.
+       (grep-mode-map): Bind `backtab' to `compilation-previous-file'.
+       (grep-mode): Add autoload.
+
+       * emacs-lisp/find-func.el (find-function-regexp):
+       Add `define-compilation-mode'.
+
+2005-07-19  Juri Linkov  <juri@jurta.org>
+
+       * compare-w.el (compare-ignore-whitespace, compare-windows-sync)
+       (compare-windows-sync-string-size, compare-windows-recenter)
+       (compare-windows-highlight, compare-windows): Add version 22.1.
+       (compare-windows) <defface>: Inherit from lazy-highlight instead
+       of duplicating its default value.
+
+       * cus-edit.el (custom-mode-map): Bind `C-c C-c' to `Custom-set'.
+       (Custom-mode-menu): Use `info' instead of `Info-goto-node'.
+
+       * descr-text.el (describe-char): Create link buttons for `charset'
+       and `code point'.  Add the current input method name with a link
+       button to `to input' field.  Print face names of display table
+       characters in `The display table entry is displayed by' section
+       instead of printing face-id in the `display' field.
+       Guess hardcoded faces and create a link button for them.
+       Skip empty fields when calculating max-width.
+       Treat `widget-create' specially while inserting strings from the
+       collected field list.
+       (describe-char-after): Made obsolete in version 22.1, not 21.5.
+
+       * diff-mode.el (diff-file-header): Change foreground color from
+       yellow to green on light backgrounds.
+       (diff-context): Inherit from `shadow' only for color/grayscale
+       with more than 88 colors.
+       (diff-indicator-removed, diff-indicator-added)
+       (diff-indicator-changed): New faces.
+       (diff-font-lock-keywords): Use new faces.  Regroup rules.
+       Add "^---$" for `normal' diff format.  Fontify `#' lines with
+       font-lock-comment-delimiter-face and font-lock-comment-face.
+       Add `#' to ^[^...] in the rule for `diff-context-face'.
+
+       * faces.el (mode-line-highlight): Replace RoyalBlue4 with
+       a button-like box.  Inherit from `highlight' on low colors.
+       (shadow): Use shades of gray only for color/grayscale with
+       more than 88 colors.  Use green for light backgrounds with
+       8 colors, and yellow for dark backgrounds with 8 colors.
+
+       * font-lock.el (font-lock-regexp-grouping-backslash):
+       Don't inherit from escape-glyph (use bold for all cases).
+
+       * info.el (info-xref-visited): Use light foreground color `violet'
+       for dark backgrounds instead of dark color `magenta3'.
+       (info-title-1): Use `yellow' color for dark backgrounds.
+
+       * isearch.el (isearch): Use not-too-dark magenta3 instead of
+       too-light magenta2.
+
+       * replace.el (match): Use slightly more light RoyalBlue3 instead
+       of dark RoyalBlue4.
+
+       * wid-edit.el (widget-inactive): Inherit from `shadow'.
+
+2005-07-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * novice.el (disabled-command-hook): Declare it with
+       `define-obsolete-variable-alias'.
+
+       * desktop.el (desktop-enable, desktop-buffer-modes-to-save)
+       (desktop-buffer-misc-functions, desktop-buffer-handlers)
+       (desktop-load-default): Add release to obsolescence info.
+       (desktop-globals-to-clear, desktop-buffer-mode-handlers)
+       (desktop-append-buffer-args, desktop-read):
+       Fix typos in docstrings.
+       (desktop-kill): Fix typo in message.
+       (desktop-save): Doc fix.
+
+2005-07-19  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-cmd.el (viper-escape-to-state): Bug fix.
+       (viper-envelop-ESC-key): Change the definition of fast
+       keysequence so it'll work with keyboard macros.
+
+       * ediff.el (ediff-patch-buffer): Change the docstring.
+
+2005-07-19  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (select-safe-coding-system): Try to
+       use an auto-coding (if any) before anything else.  If the found
+       auto-coding is invalid, show a warning message.
+
+       * international/mule.el (find-auto-coding): New function created
+       by modifying the body of set-auto-coding.
+       (set-auto-coding): Use find-auto-coding to find a coding.
+
+2005-07-18  Richard M. Stallman  <rms@gnu.org>
+
+       * allout.el (allout-isearch-expose): Use isearch-mode-end-hook-quit,
+       not isearch-mode-end-hook-error.
+       (allout-before-change-protect): Fix error message.
+
+2005-07-18  Juri Linkov  <juri@jurta.org>
+
+       * allout.el (allout-mode):
+       * calculator.el (calculator-copy):
+       * custom.el (custom-known-themes):
+       * dired.el (dired-desktop-buffer-misc-data)
+       (dired-restore-desktop-buffer):
+       * dired-x.el (dired-omit-marker-char):
+       * files.el (basic-save-buffer):
+       * font-core.el (font-lock-mode):
+       * calendar/calendar.el (calendar-goto-hebrew-date)
+       (calendar-goto-coptic-date, calendar-goto-ethiopic-date)
+       (calendar-goto-persian-date):
+       * language/ethio-util.el (ethio-sera-to-fidel-region):
+       * textmodes/picture.el (picture-mode):
+       Delete duplicate duplicate words.
+
+2005-07-18  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-mode-map): Remove key bindings for regexp
+       chars * ? } |.
+       (isearch-fallback): Don't call `isearch-process-search-char'.
+       (isearch-*-char, isearch-}-char, isearch-|-char): Remove functions.
+       (isearch-process-search-char): Call `isearch-fallback' for regexp
+       chars * ? } |.
+       (isearch-return-char): Make obsolete with `make-obsolete' instead
+       of simply documenting it as obsolete in the docstring.
+       (isearch-fallback): Refill docstring.
+
+       * international/isearch-x.el
+       (isearch-process-search-multibyte-characters): Remove unneeded
+       `concat'.  Add intermediate values to `junk-hist' instead of
+       `minibuffer-history'.  Test the length of `str'.
+
+2005-07-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * allout.el (allout-resolve-xref): Fix typos in error strings.
+       (allout-before-change-protect): Remove unneeded `concat'.
+
+       * array.el (array-mode, array-reconfigure-rows)
+       (untabify-backward): Fix typos in docstrings.
+       (array-reconfigure-rows): Use `insert-buffer-substring', not
+       `insert-buffer'.
+
+       * calendar/icalendar.el (icalendar--get-unfolded-buffer):
+       * progmodes/ada-mode.el (ada-make-body):
+       Use `insert-buffer-substring' and `goto-char', not `insert-buffer'.
+
+       * dired.el (dired-log):
+       * tar-mode.el (tar-subfile-save-buffer):
+       * play/zone.el (zone-pgm-stress-destress):
+       Use `insert-buffer-substring', not `insert-buffer'.
+
+2005-07-17  Simon Josefsson  <jas@extundo.com>
+
+       * mail/smtpmail.el (smtpmail-auth-supported): Prefer PLAIN over LOGIN.
+
+2005-07-16  Jose E. Marchesi  <jemarch@gnu.org>
+
+       * lisp/mail/smtpmail.el (smtpmail-auth-supported):
+       Add plain auth method.
+       (smtpmail-try-auth-methods): Add AUTH PLAIN dialog.
+
+2005-07-17  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (dired-other-window): Add ido property.
+
+2005-07-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded):
+       Fix typo in docstring.
+       (byte-compile-interactive-only-functions): Add `insert-buffer' and
+       `insert-file-literally'.
+
+       * emacs-lisp/edebug.el (def-edebug-form-spec): Add obsolescence
+       info and delete redundant message.  Doc fix.
+       (edebug-install-custom-print-funcs, edebug-reset-print-funcs)
+       (edebug-uninstall-custom-print-funcs): Define as obsolete aliases.
+
+2005-07-16  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/bytecomp.el (byte-compile-and-recursion): New function.
+       (byte-compile-and): Use byte-compile-and-recursion.
+       (byte-compile-or-recursion): New function.
+       (byte-compile-or): Use that.
+       (byte-compile-if): Guard the else-clause too.
+       (byte-compile-maybe-guarded): Handle (not (featurep 'emacs)).
+
+       * isearch.el (isearch-mode-end-hook-quit): New variable.
+       (isearch-done): Bind it.
+       (isearch-mode-end-hook): Doc fix.
+
+       * allout.el (allout-isearch-did-quit): Variable deleted.
+       (allout-real-isearch-abort): Function name no longer used.
+       (allout-mode): Do allout-enwrap-isearch whenever feature is wanted.
+       (allout-isearch-rectification): isearch-mode always exists.
+       Don't set allout-isearch-did-quit.
+       (allout-isearch-expose): Check isearch-mode-end-hook-error, not
+       allout-isearch-did-quit.
+       (allout-enwrap-isearch): Just add the hook.
+       (allout-isearch-abort): Function deleted.
+       (allout-pre-command-business): Avoid warning.
+
+       * progmodes/pascal.el (pascal-outline-map): Use fboundp, not boundp.
+       Correctly avoid warnings.
+       (pascal-outline): Likewise.
+
+       * progmodes/f90.el (f90-abbrev-start): Avoid warning.
+
+       * progmodes/asm-mode.el (asm-comment): Use with-no-warnings.
+
+       * play/tetris.el (tetris-mode): Avoid warning.
+
+       * play/snake.el (snake-mode): Avoid warning.
+
+       * play/gamegrid.el (gamegrid-shared-game-dir): Add defvar.
+       (gamegrid-set-display-table): Avoid warning.
+       (gamegrid-set-timer): Likewise.
+       (gamegrid-make-mono-tty-face): Use set-face-inverse-video-p.
+       (gamegrid-add-score-with-update-game-score-1): Take FILE
+       as argument.
+       (gamegrid-add-score-with-update-game-score): Pass that argument.
+       Rename have-shared-game-dir to gamegrid-shared-game-dir.
+
+       * net/eudc-hotlist.el (eudc-hotlist-mode): Avoid warnings.
+
+       * net/eudc-bob.el (eudc-jump-to-event): Avoid warning.
+       (eudc-bob-display-jpeg, eudc-bob-can-display-inline-images): Likewise.
+
+       * mail/uce.el (uce-reply-to-uce): Replace beginning-of-buffer
+       and insert-file.
+
+       * mail/supercite.el (sc-no-blank-line-or-header): Avoid warning.
+       (sc-ask): Avoid warnings.
+
+       * eshell/em-hist.el (eshell-rebind-keys-alist): Add defvar.
+       (eshell-hist-initialize): Use that var the natural way.
+
+       * emulation/viper-init.el (viper-activate-input-method): Avoid warning.
+
+       * emacs-lisp/re-builder.el (reb-cook-regexp):
+       Avoid warning calling lre-compile-string.
+       (reb-color-display-p): Avoid warning.
+
+       * calculator.el (calculator-last-input): Guard uses
+       of event-key and key-press-event-p.
+       (event-key, key-press-event-p): Delete definitions.
+
+       * emacs-lisp/find-gc.el (find-gc-unsafe-list)
+       (find-gc-source-directory, find-gc-subrs-callers)
+       (find-gc-noreturn-list, find-gc-source-files)
+       (find-gc-subrs-called): Vars renamed and defvar'd.
+
+       * emacs-lisp/checkdoc.el (checkdoc-make-overlay)
+       (checkdoc-overlay-put, checkdoc-delete-overlay)
+       (checkdoc-overlay-start, checkdoc-overlay-end)
+       (checkdoc-mode-line-update, checkdoc-char=):
+       Define such that compiler knows they are defined.
+       (checkdoc-call-eval-buffer): Delete.  Use eval-buffer directly.
+       (checkdoc-read-event): Delete.  Use read-event directly.
+
+       * whitespace.el (whitespace-make-overlay)
+       (whitespace-overlay-put, whitespace-delete-overlay)
+       (whitespace-overlay-start, whitespace-overlay-end):
+       Define such that compiler knows they are defined.
+       (whitespace): Move conditional inside.
+
+       * tempo.el (tempo-insert-template): Suppress warning.
+
+       * ediff-diff.el (longlines-mode): Add defvar.
+
+2005-07-16  Gary Howell  <g1howell-list@yahoo.com>  (tiny change)
+
+       * server.el: Bind "C-x #" in a way that works even if C-x is
+       redefined to a command key, not a prefix key.
+
+2005-07-16  Johan Bockg\e,Ae\e(Brd  <bojohan@users.sourceforge.net>  (tiny change)
+
+       * emacs-lisp/cl-macs.el (cl-make-type-test): Defer evaluation of
+       cl-make-type-test till execution time.
+
+2005-07-16  Markus Rost  <rost@math.uni-bielefeld.de>
+
+       * dired-x.el (dired-do-relsymlink-regexp): Add missing optional
+       arg ARG and use it.
+
+2005-07-16  Johan Bockg\e,Ae\e(Brd  <bojohan@users.sourceforge.net>  (tiny change)
+
+       * emacs-lisp/cl-macs.el (cl-make-type-test): Add `atom' type.
+
+2005-07-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Avoid constructing
+       a defcustom with two :set or :type keywords.
+
+2005-07-15  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/lisp-mode.el (emacs-lisp-mode-syntax-table):
+       Don't give ^M comment-end syntax.
+
+2005-07-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-update, gdb-var-update-handler):
+       Don't consider gdbmi (gdb-mi.el has its own update functions).
+       (gdb-var-delete): Make it work for gdbmi as well.
+       (gdb-speedbar-expand-node): Move var-update here for gdbmi.
+
+       * progmodes/gud.el (etags, sdb): Only require etags when needed.
+       (gud-speedbar-menu-items): Correct logic for enabling items.
+
+2005-07-15  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el: Fix commentary.
+       (ido-define-mode-map): Move ido-next-work-file to C-M-o.
+       Use with-no-warnings around ffap-guesser.
+       (ido-file-internal, ido-read-file-name, ido-read-directory-name):
+       Let bind minibuffer-completing-file-name to t.
+
+2005-07-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * startup.el (site-run-file, keyboard-type): Doc fixes.
+       (command-line): Check for "--basic-display" argument; also for
+       "--quick", not "--bare-bones" (which was renamed).
+       (fancy-splash-text): Add missing item "Getting New Versions".
+       (normal-splash-screen): Fix typos and improve consistency with
+       `fancy-splash-text'.  Update copyright year.
+
+       * hexl.el (hexl-mode-map): Recognize also `ehelp-command' as a
+       valid binding for `help-char'.
+
+       * emacs-lisp/derived.el (derived-mode-hook-name): Doc fix.
+
+2005-07-14  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (term-mode): Disable cua-mode for term buffers.
+
+2005-07-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * add-log.el (add-log-mailing-address, change-log-merge):
+       Doc fixes.
+       (change-log-get-method-definition): Fix typo in docstring.
+
+2005-07-14  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el:
+       (cua--pre-command-handler-1, cua--pre-command-handler)
+       (cua--post-command-handler-1, cua--post-command-handler):
+       Split in two.  Check (buffer local) value of cua-mode.
+       (cua-selection-mode): New command.
+
+2005-07-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * custom.el (custom-initialize-safe-set)
+       (custom-initialize-safe-default): Doc fixes.
+
+       * frame.el (blink-cursor-mode): Use `custom-initialize-safe-default'
+       and simplify :init-value again.
+
+       * tooltip.el (tooltip-mode): Use `custom-initialize-safe-default'
+       and simplify :init-value again.  Delete autoload.
+
+       * startup.el (command-line): Use `custom-reevaluate-setting' again
+       for tooltip-mode.
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Avoid constructing
+       a defcustom with two :initialize keywords.
+
+2005-07-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * allout.el (my-mark-marker, allout-isearch-prior-pos)
+       (allout-unprotected, allout-undo-aggregation, allout-snug-back)
+       (allout-post-command-business, allout-flag-region)
+       (isearch-reenable-font-lock, allout-yank)
+       (allout-insert-latex-header, allout-insert-latex-trailer)
+       (allout-latex-verbatim-quote-curr-line, allout-latexify-exposed)
+       (allout-latex-verb-quote): Fix typos in docstrings.
+       (allout-enwrap-isearch, regexp-sans-escapes): Doc fixes.
+       (allout-unprotected, allout-prefix-data):
+       Improve argument/docstring consistency.
+       (allout-chart-subtree): Fix argument spec.
+       (allout-open-topic): Rename `use_sib_bullet' argument to
+       `use-sib-bullet'.  Doc fix.
+
+       * whitespace.el (whitespace-check-buffer-leading)
+       (whitespace-check-buffer-trailing)
+       (whitespace-check-buffer-indent)
+       (whitespace-check-buffer-spacetab)
+       (whitespace-check-buffer-ateol, whitespace-highlighted-space)
+       (whitespace-check-leading-whitespace)
+       (whitespace-check-trailing-whitespace)
+       (whitespace-check-spacetab-whitespace)
+       (whitespace-check-indent-whitespace)
+       (whitespace-check-ateol-whitespace, whitespace-abort-on-error)
+       (whitespace-modes): Fix typos in docstrings.
+       (defgroup, defcustom): Doc fixes.
+
+       * winner.el (winner-mode, winner-boring-buffers)
+       (winner-pending-undo-ring): Doc fixes.
+       (winner-ring): Remove unneeded `progn'.
+       (winner-equal): `defsubst' it.
+       (winner-redo): Fix message.
+
+2005-07-13  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move-1): Always use vertical-motion to
+       do the last (or only) line move to ensure some movement.
+       Undo 2005-06-23 change--don't check for overlays.
+
+2005-07-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (ccl-encode-mac-roman-font)
+       (ccl-encode-mac-centraleurroman-font)
+       (ccl-encode-mac-cyrillic-font, ccl-encode-mac-symbol-font):
+       (ccl-encode-mac-dingbats-font): Remove check for ASCII.
+       Change charset-id boundary of dimension to ?\xef.
+       (mac-char-fontspec-list): New constant.
+       (fontset-add-mac-fonts): Use it.  Accept non-string `base-family'
+       argument.  Nil uses itself as family in font-spec.  Previous
+       behavior for nil is now provided by non-nil non-string argument.
+       All callers changed.  Add font-specs for Mac fonts to
+       "fontset-default" unless iso8859-1 fonts are installed.
+
+2005-07-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/sh-script.el (sh-get-indent-info): Only indent
+       a continuation line if the \ is preceded by SPC or TAB.
+       (sh-get-indent-info): Simplify.
+       (sh-mark-init, sh-learn-buffer-indent, sh-add-completer):
+       Use with-current-buffer.
+
+       * font-lock.el (font-lock-fontify-keywords-region): Avoid inf-loops
+       when the matched text is empty.
+
+2005-07-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * startup.el (command-line): Revert to previous handling of
+       tooltip-mode.  Explain in comment why the complexity is needed.
+
+       * tooltip.el (tooltip-mode): Revert to previous implementation of
+       its defcustom.
+
+       * frame.el (blink-cursor-mode): Revert to previous implementation
+       of its defcustom.  Update comment.
+
+2005-07-12  Lars Hansen  <larsh@soem.dk>
+
+       * desktop.el: Update e-mail address.
+
+2005-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-services-mail-selection)
+       (mac-services-mail-to): New functions.
+       (mac-application-menu-map): Bind them.
+
+2005-07-12  wulei  <milton@wulei.net>  (tiny change)
+
+       * progmodes/gdb-ui.el: Add note about buffering with Windows.
+
+2005-07-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * custom.el (custom-reevaluate-setting): Doc fix.
+
+2005-07-11  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-embedded-announce-formula-alist)
+       (calc-embedded-open-close-plain-alist)
+       (calc-embedded-open-close-mode-alist): Add checks for additional
+       major modes (due to Robert J. Chassell <bob@rattlesnake.com>).
+
+2005-07-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * custom.el (custom-enable-theme): Don't add theme to
+       `custom-enabled-themes' with `push' because there is no
+       setf-method for `delq'.
+
+2005-07-11  Richard M. Stallman  <rms@gnu.org>
+
+       * custom.el (custom-declare-variable): Doc fix.
+
+       * dired-aux.el (dired-compare-directories): Remove "." and ".."
+       from the alists.
+
+       * emacs-lisp/edebug.el (edebug-slow-after, edebug-slow-before):
+       Do nothing if edebug-active.
+
+       * emacs-lisp/edebug.el (edebug-enter): Don't with-timeout-suspend here.
+       (edebug-display): Do it here instead.
+
+2005-07-10  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-face.el (custom-theme-set-faces): Make it work.
+       (custom-reset-faces): Doc fix.
+       (custom-theme-reset-internal-face, custom-theme-face-value):
+       Functions deleted.
+
+       * custom.el (custom-push-theme): Maintain list of the settings
+       of a given theme in its theme-settings property.
+       Maintain position of old settings in the theme-value
+       or theme-face property.
+       (custom-enabled-themes): New variable.
+       (custom-theme-enabled-p): New function.
+       (provide-theme): Update custom-enabled-themes.
+       Disable and reenable the `user' theme.
+       (require-theme): Doc fix.
+       (custom-do-theme-reset, custom-remove-theme): Functions deleted.
+       (custom-theme-value, custom-theme-variable-value): Likewise.
+       (custom-theme-reset-internal): Likewise.
+       (custom-theme-load-themes): Fix bugs and use custom-disable-theme.
+       (custom-enable-theme, custom-disable-theme): New functions.
+       (custom-variable-theme-value, custom-face-theme-value): Likewise.
+       (custom-theme-recalc-variable, custom-theme-recalc-face): Likewise.
+       (custom-theme-reset-variables): Simplify.
+       (deftheme, custom-declare-theme, custom-make-theme-feature):
+       Definitions moved.
+
+2005-07-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el (longlines-show-region)
+       (longlines-unshow-hard-newlines): Recognize hard newlines by
+       non-nil hard property, instead of t.
+
+2005-07-10  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-cmd.el (viper--key-maps): New variable.
+       (viper-normalize-minor-mode-map-alist): Use viper--key-maps and
+       emulation-mode-map-alists.
+       (viper-envelop-ESC-key): Use viper-subseq.
+       (viper-search-forward/backward/next): Disable debug-on-error.
+
+       * viper-keym.el (viper-toggle-key, viper-quoted-insert-key)
+       (viper-ESC-key): New defcustoms.
+
+       * viper-macs.el (ex-map-read-args): Use viper-subseq.
+
+       * viper-util.el (viper-key-to-emacs-key): Use viper-subseq.
+       (viper-subseq): Copy of subseq from cl.el.
+
+       * viper.el (viper-go-away, viper-set-hooks): Use
+       emulation-mode-map-alists, advise self-insert-command, add-minor-mode.
+
+       * viper-mous.el (viper-current-frame-saved): Use defvar.
+
+       * viper-init.el: Get rid of -face in face names.
+
+       * ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3):
+       Make it work with longlines mode.
+
+       * ediff-mult.el (ediff-meta-mode-hook): New variable.
+
+       * ediff-ptch.el (ediff-file-name-sans-prefix): Quote regexp.
+
+       * ediff-init.el: Get rid of -face in face names.
+
+2005-07-10  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/edebug.el (edebug-enter): Call with-timeout-suspend
+       and with-timeout-unsuspend.
+
+       * emacs-lisp/debug.el (debug): Call with-timeout-suspend
+       and with-timeout-unsuspend.
+
+       * emacs-lisp/timer.el (with-timeout-timers): New variable.
+       (with-timeout): Bind that variable to record timers.
+       (with-timeout-suspend, with-timeout-unsuspend): New functions.
+
+       * emacs-lisp/debug.el (debug-help-follow): New function.
+       (debugger-mode-map): Use that instead of help-follow.
+       (debugger-setup-buffer): Use eval-buffer-list
+       to handle eval-buffer frames.
+
+2005-07-10  N. Raghavendra  <raghu@mri.ernet.in>  (tiny change)
+
+       * timezone.el (timezone-parse-date): Change first regexp
+       so it will not mistakenly match dates with no time zone.
+
+2005-07-10  Jeff Dwork  <jeff.dwork@amd.com>  (tiny change)
+
+       * facemenu.el (facemenu-read-color): Do case-insensitive matching.
+
+2005-07-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * custom.el (custom-initialize-safe-set)
+       (custom-initialize-safe-default): New functions.
+
+       * frame.el (blink-cursor-mode): Use `custom-initialize-safe-default'
+       and simplify :init-value.
+
+       * tooltip.el (tooltip-mode): Use `custom-initialize-safe-default'
+       and simplify :init-value.  Delete obsolete comment.
+
+       * startup.el (command-line): Use `custom-reevaluate-setting' to
+       handle `tooltip-mode'.  Delete obsolete comment.
+
+       * files.el (set-visited-file-name): Avoid calling
+       `file-name-nondirectory' with a nil argument.
+
+2005-07-09  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/debug.el (debugger-setup-buffer): When eval-buffer
+       was called with nil for the buffer, handle the read position right.
+       Handle read position for eval-region, too.
+
+2005-07-09  Juri Linkov  <juri@jurta.org>
+
+       * fringe.el (fringe-mode): Add period in docstring.
+       (fringe-query-style): Build prompt depending on `all-frames' arg.
+
+       * dired.el (dired-marker-char): Avoid quotations for `do' and `mark'
+       to not create links to unrelated functions in the Help buffer.
+
+       * progmodes/compile.el (compilation-mode-hook, compilation-mode):
+       Doc fix.
+
+       * simple.el (next-error-hook): New variable.
+       (next-error): Use it.  Doc fix.
+
+       * textmodes/ispell.el (ispell-command-loop): Add current
+       dictionary name and program name to mode-line-format.
+       (ispell-region, ispell-process-line): Add current dictionary name
+       and program name to messages.
+
+2005-07-08  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-embedded-announce-formula-alist)
+       (calc-embedded-open-close-formula-alist)
+       (calc-embedded-open-close-word-alist)
+       (calc-embedded-open-close-plain-alist)
+       (calc-embedded-open-close-new-formula-alist)
+       (calc-embedded-open-close-mode-alist)
+       (calc-embedded-new-buffer-hook, calc-embedded-new-formula-hook)
+       (calc-embedded-mode-hook): New variables.
+
+       * calc/calc-embed.el (calc-embedded-firsttime)
+       (calc-embedded-firsttime-buf, calc-embedded-firsttime-formula):
+       New variables.
+       (calc-do-embedded): Use calc-embedded-firsttime,
+       calc-embedded-firsttime-buf and calc-embedded-firsttime-formula to
+       determine whether or not to run hooks.
+       (calc-embedded-make-info): Set calc-embedded-firsttime-buf and
+       calc-embedded-firsttime-formula appropriately.
+       Set calc-embedded delimiter variables according to mode.
+
+2005-07-08  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/checkdoc.el (checkdoc-proper-noun-list):
+       Check for "emacs", etc., as entire symbol, not just as word.
+       (checkdoc-file-comments-engine): Use regexp-quote on FN.
+
+       * files.el (set-visited-file-name): Report the error
+       for "empty filename" earlier.
+       (kill-some-buffers): Ignore buffers already dead.
+
+       * fringe.el (fringe-mode): Doc fix.
+
+       * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded):
+       Check for (featurep 'xemacs) and turn off warnings in what it guards.
+       Use unwind-protect to ensure byte-compile-unresolved-functions
+       is updated.
+
+       * whitespace.el (whitespace-buffer-leading-cleanup):
+       Simplify w/ skip-chars-forward.
+       (whitespace-buffer-trailing-cleanup): Simplify w/ skip-chars-backward.
+
+       * mail/rmail.el (rmail-only-expunge): Fix paren error.
+       Unconditionally try to leave point at the same old place.
+
+2005-07-08  Ralf Angeli  <angeli@iwi.uni-sb.de>  (tiny change)
+
+       * comint.el (comint-postoutput-scroll-to-bottom)
+       (comint-show-maximum-output): Take scroll-margin into consideration.
+
+2005-07-08  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-use-filename-at-point): New choice `guess'.
+       (ido-file-internal): Try ffap-guesser if selected.
+
+       * ido.el (ido-before-fallback-functions): New hook.
+       (ido-buffer-internal, ido-file-internal, ido-read-buffer)
+       (ido-read-file-name): Run it.
+
+2005-07-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/hideif.el (hide-ifdef-use-define-alist): Pass a list of
+       strings rather than a list of symbols to the completion function.
+
+2005-07-07  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-units.el (math-apply-units): Change the places in
+       which units are simplified.
+
+2005-07-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (customize-option, customize-option-other-window):
+       Make them handle aliases.
+
+       * custom.el (custom-variable-p): Make it recursively follow
+       aliases.  Mention that in the docstring.
+
+2005-07-07  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-start.el (exec-path): Use `directory' instead of `file'.
+       Fix tag for nil.
+
+2005-07-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * replace.el (occur-rename-buffer): Use `generate-new-buffer' also
+       when called non-interactively.  Doc fix.
+
+2005-07-07  Lute Kamstra  <lute@gnu.org>
+
+       * elide-head.el (elide-head-headers-to-hide): Recognize the FSF's
+       new address as well.
+
+2005-07-07  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule.el (make-coding-system):
+       Describe `ascii-incompatible' property in the docstring.
+       (set-file-name-coding-system): Signal an error if coding-system is
+       ascii-incompatible.
+       (set-keyboard-coding-system): Likewise.
+
+       * international/mule-cmds.el (set-default-coding-systems):
+       Don't set default-file-name-coding-system and
+       default-keyboard-coding-system if coding-system is ASCII-incompatible.
+
+       * international/utf-16.el: Declare that all UTF-16-based coding
+       systems are ASCII-incompatible.
+
+2005-07-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el: Require font-lock for displaying errors.
+       Used by gdb-ui.el.
+
+2005-07-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * hi-lock.el (hi-lock-find-patterns): Protect also against invalid
+       values for the pattern lists which are `read'able but not
+       `append'able (like symbols).
+
+2005-07-06  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/flymake.el (flymake-float-time): Instead of
+       with-no-warnings, test for XEmacs.
+       (flymake-replace-regexp-in-string): Test fboundp of replace-in-string
+       to avoid warning.
+
+2005-07-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32-vars.el (w32-fixed-font-alist): Fix typo in `defcustom' tag.
+
+2005-07-05  Lute Kamstra  <lute@gnu.org>
+
+       * battery.el: Add support for Darwin (with much debugging help
+       from Samuel Lauber <sam124@operamail.com>).
+       (battery-status-function, battery-echo-area-format)
+       (battery-mode-line-format): Add support for pmset on Darwin.
+       (battery-load-low, battery-load-critical): New user options.
+       (battery-pmset): New function.
+
+2005-07-05  Lute Kamstra  <lute@gnu.org>
+
+       Update FSF's address in GPL notices.
+
+       * textmodes/page-ext.el: Update FSF's address.
+
+2005-07-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/lisp-mode.el (lisp-mode-variables): Prevent adaptive
+       filling from using prefix when filling a single-line docstring.
+
+       * progmodes/flymake.el: Remove useless eval-when-compile.
+
+       * arc-mode.el (archive-lzh-ogm): Reorder save excursion/restriction.
+
+2005-07-04  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/org.el (org-file-apps-defaults-gnu):
+       Rename from org-file-apps-defaults-linux.
+       (org-default-apps): Don't test system-type for `linux'.
+       (org-file-apps): Doc fix.
+
+2005-07-04  David Ponce  <david@dponce.com>
+
+       * tree-widget.el: Improve header Commentary section.
+       (tree-widget) [defgroup]
+       (tree-widget-image-enable, tree-widget-themes-directory)
+       (tree-widget-theme, tree-widget-image-properties-emacs)
+       (tree-widget-image-properties-xemacs, tree-widget-create-image)
+       (tree-widget-image-formats, tree-widget-control)
+       (tree-widget-empty-control, tree-widget-leaf-control)
+       (tree-widget-guide, tree-widget-end-guide, tree-widget-no-guide)
+       (tree-widget-handle, tree-widget-no-handle, tree-widget-p)
+       (tree-widget-keep, tree-widget-after-toggle-functions)
+       (tree-widget-open-node, tree-widget-close-node): Doc fix.
+       (tree-widget-open-control, tree-widget-close-control): Fix doc and
+       :help-echo message.
+       (tree-widget-set-theme): Doc fix.  Use `string-equal'.
+       (tree-widget-image-properties): Doc fix.  Clearer implementation.
+       (tree-widget--cursors): New constant.
+       (tree-widget-lookup-image): New function split from
+       `tree-widget-find-image'.  Clearer implementation.
+       (tree-widget-find-image): Use it.
+       (tree-widget-button-keymap): Use `set-keymap-parent'.
+       (tree-widget) [define-widget]: Use `widget-children-value-delete'.
+       Define the sub-widgets here.
+       (tree-widget-node): Check that :node is not a tree-widget.
+       (tree-widget-get-super, tree-widget-open-control)
+       (tree-widget-close-control, tree-widget-empty-control)
+       (tree-widget-leaf-control, tree-widget-guide)
+       (tree-widget-end-guide, tree-widget-no-guide, tree-widget-handle)
+       (tree-widget-no-handle, tree-widget-value-delete)
+       (tree-widget-map): Remove.
+       (tree-widget-children-value-save): Doc fix.  Simplified.
+       (tree-widget-value-create): Update according to previous changes.
+
+2005-07-04  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el: Leading space replaced by TABS.
+       (org-recalc-marks, org-table-rotate-recalc-marks)
+       (org-table-get-specials): Treat "^" and "_" marks.
+       (org-table-justify-field-maybe): Optional argument NEW.
+       (org-table-eval-formula): Parsing of the format simplified.
+       New modes C,I.  Honor the %= parameter in the current table.
+       Avoid unnecessary re-align by using the NEW argument to
+       `org-table-justify-field-maybe'.
+       (org-calc-default-modes): Default for date-format mimicks org-mode.
+       (org-agenda, org-timeline): Quote argument in org-agenda-redo-command.
+
+2005-07-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-face.el (custom-theme-set-faces): Make it handle face
+       aliases whose alias declarations are pre- or autoloaded.
+
+2005-07-04  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (read-face-name): Put the code for getting a face name
+       from the buffer before adding the faces from the `face' property.
+       Use `completing-read-multiple' instead of `completing-read'.
+       Require `crm'.  Add default value and post-process the returned
+       list of faces.
+
+       * emacs-lisp/crm.el (crm-find-current-element)
+       (crm-minibuffer-complete-and-exit): Handle minibuffer prompt.
+
+       * emacs-lisp/lisp-mode.el (eval-defun-1):
+       * emacs-lisp/edebug.el (edebug-eval-defun):
+       Remove unnecessary quotes.
+
+2005-07-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/prolog.el (prolog-eof-string): Doc fixes.
+       (prolog-indent-level): Fix typo in docstring.
+
+       * info.el (Info-history, Info-history-forward)
+       (Info-history-list, Info-speedbar-fetch-file-nodes): Doc fixes.
+
+       * add-log.el (add-change-log-entry):
+       * comint.el (comint-dynamic-list-input-ring)
+       (comint-dynamic-list-completions):
+       * dabbrev.el (dabbrev-expand):
+       * delim-col.el (delimit-columns-rectangle-line):
+       * diff-mode.el (diff-context->unified, diff-reverse-direction)
+       (diff-unified->context):
+       * ediff-init.el (ediff-abbrev-jobname):
+       * ediff-mult.el (ediff-replace-session-status-in-meta-buffer)
+       (ediff-replace-session-activity-marker-in-meta-buffer):
+       * info.el (Info-summary):
+       * lpr.el (printify-region):
+       * printing.el (pr-create-interface):
+       * ps-print.el (ps-print-quote):
+       * ses.el (ses-column-widths, ses-print-cell)
+       (ses-adjust-print-width, ses-center):
+       * shell.el (shell-file-name-quote-list):
+       * strokes.el (strokes-read-stroke, strokes-read-complex-stroke)
+       (strokes-fill-current-buffer-with-whitespace)
+       (strokes-xpm-for-stroke, strokes-list-strokes)
+       (strokes-xpm-char-bit-p, strokes-xpm-for-compressed-string):
+       * term.el (term-dynamic-list-input-ring)
+       (term-dynamic-list-completions):
+       * calc/calc.el (math-format-stack-value):
+       * emacs-lisp/edebug.el (edebug-display-freq-count):
+       * progmodes/delphi.el (delphi-indent-line, delphi-fill-comment)
+       (delphi-new-comment-line):
+       * progmodes/ebnf2ps.el (ebnf-eps-filename, ebnf-trim-right):
+       * progmodes/executable.el (executable-set-magic):
+       * progmodes/python.el (inferior-python-mode):
+       * progmodes/scheme.el (scheme-mode-syntax-table):
+       * progmodes/sh-script.el (sh-maybe-here-document):
+       * progmodes/sql.el (sql-copy-column):
+       * progmodes/tcl.el (tcl-comment-indent, tcl-quote):
+       * textmodes/bibtex.el (bibtex-mode):
+       * textmodes/sgml-mode.el (html-imenu-index, sgml-attributes)
+       (sgml-auto-attributes):
+       * textmodes/table.el (table-insert, table-shorten-cell)
+       (table--generate-source-scan-lines, table-delete-row)
+       (*table--cell-delete-char, table--spacify-frame)
+       (table--horizontally-shift-above-and-below)
+       (table--cell-insert-char, table--cell-blank-str)
+       (table--fill-region-strictly):
+       * textmodes/tex-mode.el (tex-insert-quote, latex-find-indent):
+       * textmodes/texinfo.el (texinfo-insert-quote): "?\ " -> "?\s".
+
+       * add-log.el (change-log):
+       * apropos.el (apropos):
+       * comint.el (comint-completion, comint-source):
+       * dabbrev.el (dabbrev):
+       * delim-col.el (columns):
+       * diff-mode.el (diff-mode):
+       * ediff.el (ediff):
+       * ediff-diff.el (ediff-diff):
+       * ediff-init.el (ediff-highlighting, ediff-merge, ediff-hook):
+       * ediff-mult.el (ediff-mult):
+       * ediff-ptch.el (ediff-ptch):
+       * ediff-wind.el (ediff-window):
+       * facemenu.el (facemenu):
+       * indent.el (indent):
+       * info.el (info):
+       * jka-cmpr-hook.el (compression, jka-compr):
+       * lpr.el (lpr):
+       * outline.el (outlines):
+       * pcmpl-cvs.el (pcmpl-cvs):
+       * pcmpl-rpm.el (pcmpl-rpm):
+       * printing.el (printing):
+       * ps-print.el (postscript, ps-print, ps-print-horizontal)
+       (ps-print-vertical, ps-print-headers, ps-print-font)
+       (ps-print-color, ps-print-face, ps-print-n-up, ps-print-zebra)
+       (ps-print-background, ps-print-printer, ps-print-page)
+       (ps-print-miscellany):
+       * ses.el (ses):
+       * shell.el (shell, shell-directories, shell-faces):
+       * startup.el (initialization):
+       * strokes.el (strokes):
+       * term.el (term):
+       * uniquify.el (uniquify):
+       * w32-vars.el (w32):
+       * calc/calc.el (calc):
+       * emacs-lisp/bytecomp.el (bytecomp):
+       * emacs-lisp/cl-indent.el (lisp-indent):
+       * emacs-lisp/edebug.el (edebug):
+       * emacs-lisp/elp.el (elp):
+       * emacs-lisp/testcover.el (testcover):
+       * emacs-lisp/trace.el (trace):
+       * emulation/viper-ex.el (viper-ex):
+       * emulation/viper-mous.el (viper-mouse):
+       * mail/mailalias.el (mailalias):
+       * mail/supercite.el (supercite, supercite-frames)
+       (supercite-attr, supercite-cite, supercite-hooks):
+       * net/rcompile.el (remote-compile):
+       * net/rlogin.el (rlogin):
+       * obsolete/ooutline.el (outlines):
+       * progmodes/delphi.el (delphi):
+       * progmodes/ebnf2ps.el (postscript, ebnf2ps, ebnf-special)
+       (ebnf-except, ebnf-repeat, ebnf-terminal, ebnf-non-terminal)
+       (ebnf-production, ebnf-shape, ebnf-displacement, ebnf-syntactic)
+       (ebnf-optimization):
+       * progmodes/etags.el (etags):
+       * progmodes/executable.el (executable):
+       * progmodes/idlwave.el (idlwave):
+       * progmodes/pascal.el (pascal):
+       * progmodes/prolog.el (prolog):
+       * progmodes/python.el (python):
+       * progmodes/scheme.el (scheme):
+       * progmodes/sh-script.el (sh, sh-script):
+       * progmodes/sql.el (SQL):
+       * progmodes/tcl.el (tcl):
+       * textmodes/bibtex.el (bibtex, bibtex-autokey):
+       * textmodes/enriched.el (enriched):
+       * textmodes/makeinfo.el (makeinfo):
+       * textmodes/sgml-mode.el (sgml):
+       * textmodes/table.el (table-hooks):
+       * textmodes/tex-mode.el (tex-file, tex-run, tex-view):
+       * textmodes/texinfo.el (texinfo):
+       * textmodes/two-column.el (two-column):
+       Finish `defgroup' description with period.
+
+       * emacs-lisp/cl-indent.el (lisp-indent-maximum-backtracking):
+       * eshell/esh-var.el (eshell-var):
+       * progmodes/vhdl-mode.el (vhdl-testbench):
+       * textmodes/org.el (org): Fix typos in docstrings.
+
+       * emacs-lisp/timer.el (with-timeout): Improve argument/docstring
+       consistency.
+
+       * progmodes/flymake.el (flymake-find-file): Remove.
+       (flymake-float-time): Use `with-no-warnings'.
+       (flymake-check-start-time, flymake-check-was-interrupted)
+       (flymake-err-info, flymake-is-running, flymake-last-change-time)
+       (flymake-new-err-info): `defvar' at compile time.
+
+2005-07-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * replace.el (occur-hook): Doc fix.
+       (occur-1): Don't call `occur-hook' if there are no matches.
+
+2005-07-03  Richard M. Stallman  <rms@gnu.org>
+
+       * emulation/tpu-edt.el (tpu-original-global-map): Don't copy
+       global-map, save the same map.
+       (global-map): Don't alter it at top level.
+       (tpu-edt-on): Save global map in tpu-original-global-map, then copy.
+       Then alter it here instead.
+       (tpu-edt-off): Set global-map to the saved one.
+
+       * emulation/tpu-edt.el (tpu-emacs19-p): Var deleted.
+       All references simplified.
+       (tpu-lucid-emacs-p): Rename from tpu-lucid-emacs19-p.  Uses changed.
+       (zmacs-regions): Add defvar.
+       (repeat-complex-command-map): Everything about that deleted.
+
+       * textmodes/artist.el (artist-key-is-drawing)
+       (artist-key-endpoint1, artist-key-poly-point-list)
+       (artist-key-shape, artist-key-draw-how, artist-popup-menu-table)
+       (artist-key-compl-table, artist-rb-save-data)
+       (artist-arrow-point-1, artist-arrow-point-2): Move defvars up.
+       Don't put them in eval-when-compile.
+       (artist-set-arrow-points-for-poly): Use `last', not `artist-last'.
+
+       * progmodes/ebrowse.el (ebrowse-revert-tree-buffer-from-file):
+       Use with-no-warnings.
+
+       * net/browse-url.el (dos-windows-version): Add defvar.
+
+       * mail/supercite.el (filladapt-prefix-table): Add defvar.
+
+       * mail/rmailsum.el (rmail-summary-redo): Add defvar.
+       (rmail-summary-mode-map, rmail-summary-overlay): Defvars moved up.
+       (rmail-new-summary-line-count): Rename from new-summary-line-count.
+       Add defvar.
+       (rmail-summary-beginning-of-message): Use with-no-warnings.
+       (rmail-summary-first-message, rmail-summary-last-message): Likewise.
+
+       * emulation/vip.el (vip-replace-string, ex-map, ex-read):
+       Use with-no-warnings.
+
+       * emulation/vi.el (vi-mark-region): Use c-mark-function.
+       (c-mark-function): Add point-moving-unit property.
+       (vi-goto-line): Use with-no-warnings.
+
+       * emulation/edt.el (edt-last-copied-word): Add defvar.
+       (zmacs-region-stays): Likewise.
+       (edt-mark-section-wisely): Use c-mark-function for C.
+       Use makr-defun for Fortran.
+       (time-string): defvar deleted.
+       (edt-display-the-time): Don't set time-string.
+
+       * emacs-lisp/macroexp.el (macroexp-accumulate): Rename arg to var+list.
+
+       * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
+       Don't warn when name is not constant
+       or for defining the group `emacs'.
+
+       * tooltip.el (gud-tooltip-mode): Add defvar.
+
+       * startup.el (default-frame-background-mode): Add defvar.
+
+       * smerge-mode.el (smerge-mode): Add duplicate defvar near top.
+
+       * info.el (tool-bar-map): Add defvar.
+
+       * dired.el (dnd-protocol-alist): Add defvar.
+
+       * dired-aux.el (dired-query): Display question with answer, when
+       the user answers.
+
+       * custom.el (custom-add-option): Doc fix.
+
+       * bookmark.el (Info-current-node, Info-suffix-list): Add defvars.
+
+2005-07-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * font-lock.el (font-lock-regexp-grouping-construct): Fix the
+       bogus name from the last change.
+
+2005-07-02  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * custom.el (custom-declare-variable): Fix typos in comment.
+       (custom-known-themes): Doc fix.
+       (custom-theme-directory): New defcustom.
+       (require-theme): Make it check `custom-theme-directory'.
+
+       * cus-theme.el (custom-new-theme-mode): New function.
+       (custom-theme-name, custom-theme-variables, custom-theme-faces)
+       (custom-theme-description): Add compiler defvars.
+       (customize-create-theme): Add doc to the "*New Custom Theme*"
+       buffer.  Use `custom-new-theme-mode'.
+       (custom-theme-write): Put the created buffer in emacs-lisp-mode
+       and save it to the `custom-theme-directory'.  Make this the
+       default directory of the buffer.
+
+2005-07-02  David Hunter  <hunterd_42@comcast.net>  (tiny change)
+
+       * progmodes/flymake.el (flymake-mode, flymake-mode-off):
+       Fix unbalanced parentheses.
+
+2005-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/flymake.el (flymake-mode-on, flymake-mode-off): Move body
+       into flymake-mode and delegate to flymake-mode.
+
+       * find-file.el (ff-which-function-are-we-in): Clean up.
+
+2005-07-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * replace.el (occur-rename-buffer): Fix docstring.
+
+       * emulation/edt.el (*EDT-keys*, edt-default-global-map)
+       (edt-last-copied-word, edt-learn-macro-count)
+       (edt-orig-page-delimiter, edt-orig-transient-mark-mode)
+       (edt-rect-start-point, edt-user-global-map, rect-start-point)
+       (time-string, zmacs-region-stays):
+       * emulation/edt-mapper.el (edt-save-function-key-map)
+       (EDT-key-name): `defvar' to silence the byte-compiler.
+
+2005-07-02  Martin Rudalics  <rudalics@gmx.at>
+
+       * font-lock.el (font-lock-regexp-grouping-backslash): Rename from
+       font-lock-regexp-backslash.  Doc fix.
+       (font-lock-regexp-backslash-grouping-construct): Rename from
+       font-lock-regexp-backslash-construct.  Doc fix.
+       (lisp-font-lock-keywords-2): Fix highlighting of Elisp regexp
+       grouping constructs.
+
+2005-07-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (bootstrap): Remove the $(EMACS) binary after
+       updating all the prerequisites.
+
+2005-07-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * textmodes/org.el (org-agenda-start-on-weekday)
+       (org-calendar-to-agenda-key, org-agenda-sorting-strategy)
+       (org-agenda-use-time-grid, org-archive-location)
+       (org-allow-space-in-links, org-usenet-links-prefer-google)
+       (org-enable-table-editor, org-export-default-language)
+       (org-export-html-show-new-buffer, org-fill-paragraph)
+       (org-cycle, org-goto-ret, org-goto-left, org-goto-right)
+       (org-goto-quit, org-occur, org-eval-in-calendar)
+       (org-agenda-cleanup-fancy-diary, org-agenda-no-heading-message)
+       (org-agenda-diary-entry, org-remember-help)
+       (org-table-convert-region, org-at-table-p)
+       (org-table-move-row-down, org-table-move-row-up)
+       (org-table-copy-region, org-table-toggle-vline-visibility)
+       (org-table-get-stored-formulas, org-table-get-specials)
+       (org-recalc-commands, org-table-eval-formula)
+       (org-table-formula-substitute-names, orgtbl-make-binding)
+       (org-format-org-table-html, org-format-table-table-html)
+       (org-format-table-table-html-using-table-generate-source)
+       (org-customize): Fix typos in docstrings.
+       (org-level-2, org-at-timestamp-p, org-agenda-day-view)
+       (org-agenda-toggle-diary, org-agenda-toggle-time-grid)
+       (org-back-to-heading): Doc fixes.
+       (org-agenda-toggle-time-grid, org-cmp-category, org-cmp-time)
+       (org-agenda-change-all-lines, org-get-header):
+       Improve argument/docstring consistency.
+       (orgtbl-error): Fix error message.
+
+       * progmodes/flymake.el (flymake-find-possible-master-files)
+       (flymake-master-file-compare, flymake-get-line-err-count)
+       (flymake-highlight-line, flymake-gui-warnings-enabled):
+       Fix typos in docstrings.
+       (flymake-parse-line, flymake-get-project-include-dirs-function)
+       (flymake-get-prev-err-line-no, flymake-goto-prev-error):
+       Doc fixes.
+       (flymake-get-project-include-dirs-function)
+       (flymake-make-err-menu-data):
+       Improve argument/docstring consistency.
+
+2005-07-01  Lute Kamstra  <lute@gnu.org>
+
+       * battery.el (battery-linux-proc-apm): Fix typo in docstring.
+       Catch errors with ignore-errors.  Use temporary buffer.
+       (battery-linux-proc-acpi): Fix typo in docstring.  Document `%r'.
+
+       * facemenu.el (facemenu-unlisted-faces): Delete foreground and
+       background color faces.
+       (facemenu-set-foreground, facemenu-set-background):
+       Use facemenu-set-face-from-menu.
+       (facemenu-set-face-from-menu): Treat face names that start with
+       "fg:" or "bg:" as special.
+       (facemenu-add-new-color): Don't create faces.  Simplify.
+
+2005-06-30  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/crm.el (crm-do-completion): Handle minibuffer prompt.
+       (crm-find-current-element): Likewise.
+
+2005-06-30  Johan Bockg\e,Ae\e(Brd  <bojohan@users.sourceforge.net>
+
+       * help-fns.el (help-do-arg-highlight): Regexp-quote argument names.
+
+2005-06-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * arc-mode.el (archive-extract): Make it work as a mouse binding.
+       (archive-mouse-extract): Make it an obsolete alias.
+       (archive-mode-map): Don't use archive-mouse-extract any more.
+       (archive-mode, archive-extract): write-contents-hooks ->
+       write-contents-functions.
+       (archive-arc-rename-entry, archive-lzh-rename-entry): Remove unused
+       first arg.
+       (archive-rename-entry): Update the call.
+       (archive-zip-summarize): Remove unused var `method'.
+       (archive-lzh-summarize): Remove unused var `creator'.
+
+       * emacs-lisp/debug.el (debug): Quieten Drew Adams by killing the
+       dedicated frame upon exit.
+
+       * arc-mode.el: Bind inhibit-read-only rather than buffer-read-only.
+       (archive-zip-extract, archive-zip-expunge)
+       (archive-zip-update, archive-zip-update-case): Use executable-find.
+       (archive-resummarize, archive-flag-deleted, archive-unmark-all-files):
+       Use restore-buffer-modified-p.
+       (archive-extract, archive-add-new-member, archive-write-file-member):
+       Use with-current-buffer.
+       (archive-lzh-ogm, archive-zip-chmod-entry): Use dolist.
+
+2005-06-30  Andreas Schwab  <schwab@suse.de>
+
+       * progmodes/gud.el (gud-filter): Remove unneeded progn.
+
+2005-06-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * progmodes/sh-script.el (sh-get-kw): `&' also separates words.
+
+2005-06-30  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (vertical-border): Inherit from mode-line-inactive
+       only on tty.
+
+2005-06-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help-fns.el (help-do-arg-highlight): Highlight also -ARG (for
+       example, -NLINES in the `occur' docstring).
+
+       * replace.el (occur-1): When no matches are found, do not set the
+       `buffer-read-only' and modified flags for the occur buffer,
+       because it is deleted.
+
+       * emulation/cua-base.el (cua-check-pending-input)
+       (cua-repeat-replace-region, cua-mode, cua-debug)
+       (cua-auto-tabify-rectangles, cua-inhibit-cua-keys):
+       Fix typos in docstrings.
+
+       * emulation/cua-gmrk.el (cua-toggle-global-mark)
+       (cua-cut-region-to-global-mark)
+       (cua--cut-rectangle-to-global-mark):
+       Remove period from end of messages.
+
+       * emulation/cua-rect.el (cua-do-rectangle-padding):
+       Remove period from end of messages.
+       (cua--rectangle-seq-format): Fix typo in docstring.
+       (cua-sequence-rectangle, cua-fill-char-rectangle):
+       Improve argument/docstring consistency.
+
+2005-06-29  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (default-frame-background-mode): New internal variable.
+       (frame-set-background-mode): Use it.
+
+       * startup.el (normal-top-level): Set default-frame-background-mode
+       instead of frame-background-mode.  Before setting it, test for its
+       nil value.  Remove tests for frame-background-mode and frame
+       parameter `reverse'.  Add test for "unspecified-fg".
+
+       * term/xterm.el (xterm-rxvt-set-background-mode):
+       * term/rxvt.el (rxvt-set-background-mode):
+       Set default-frame-background-mode instead of frame-background-mode.
+
+2005-06-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * simple.el (set-variable): Warn about obsolete user variables.
+
+       * imenu.el (imenu--completion-buffer):
+       * mouse.el (mouse-buffer-menu-alist):
+       * msb.el (msb-invisible-buffer-p):
+       * calendar/diary-lib.el (diary-header-line-format):
+       * emacs-lisp/pp.el (pp-buffer):
+       * progmodes/cperl-mode.el (cperl-do-auto-fill):
+       * textmodes/picture.el (picture-replace-match):
+       Change space constants followed by a sexp to "?\s ".
+
+       * play/decipher.el (decipher-loop-with-breaks):
+       * textmodes/texinfo.el (texinfo-insert-@item): Change space
+       constants "protected" from end of line by a comment to "?\s".
+
+2005-06-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (save-buffer-state): Use `declare'.
+
+       * progmodes/cperl-mode.el (cperl-find-pods-heres): Don't gratuitously
+       reset the syntax-table to cperl-mode-syntax-table.
+       (cperl-mode): Make _ into word-syntax during font-locking so "print" in
+       "foo_print_bar" is not matched as a reserved keyword.
+
+2005-06-29  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (orgtbl-setup): New function, for delayed
+       setup for the orgtbl commands.
+       (org-calc-default-modes): New option.
+       (orgtbl-make-binding): Use `defun' to get better help display.
+       (org-diary): Call `org-compile-prefix-format'.
+       (org-table-formula-substitute-names): New function.
+       (org-agenda-day-view, org-agenda-week-view): New commands.
+       (org-agenda-toggle-week-view): Command removed.
+       (org-tbl-menu): Split off from org-org-menu.
+       (org-mode): Move removal of outline-mode menus to here.
+       (org-table-formula-debug): New option.
+       (org-table-insert-row): Keep first field if just "#" or "*".
+       (org-mode): Paragraph regexps fixed.
+       (org-table-recalculate-regexp): New constant.
+       (org-table-justify-field-maybe): Avoid replace if not necessary.
+       (org-copy-special, org-cut-special): Use `call-interactively'.
+       (org-table-copy-region): Take region from `interactive' call.
+       (org-trim): Return string even if no match.
+       (org-formula): New face.
+       (org-set-font-lock-defaults): No longer highlight "FIXME".
+       But highlight formula-related fields in table.
+       (org-table-p): Use regexp, not fontification.
+       (org-table-align): Handle white space at end of line.
+       (org-table-formula-evaluate-inline): New option.
+       (org-mode): Auto-wrapping in comment lines turned off.
+       (org-table-copy-down): Evaluate only in copied field, not in
+       destination.
+       (org-table-current-formula): Variable removed.
+       (org-table-store-formulas, org-table-get-stored-formulas)
+       (org-table-modify-formulas, org-table-replace-in-formulas)
+       (org-table-maybe-eval-formula): New functions.
+       (org-table-get-formula): Modify to use stored formulas.
+       (org-table-insert-column, org-table-delete-column)
+       (org-table-move-column): Call `org-table-modify-formulas'.
+       (org-complete): Add completion for keyword formulas.
+       (orgtbl-mode): Pull orgtbl-mode-map to start of
+       minor-mode-map-alist.
+
+2005-06-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/python.el (python-check): Require `compile' before
+       modifying its variables.
+
+       * newcomment.el (comment-indent-default): Don't get fooled by an early
+       end of buffer.
+
+2005-06-28  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.el (ps-print-version): Fix version number.
+
+2005-06-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * textmodes/ispell.el (ispell-word): Remove stray parenthesis.
+
+2005-06-28  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-use-local-map): Variable deleted.
+       (flyspell-local-mouse-map): Declaration deleted.
+       (flyspell-mouse-map): Bind only mouse-2.
+       (flyspell-mode-map): Don't test flyspell-use-local-map.
+       (flyspell-overlay-keymap-property-name): Var deleted.
+       (flyspell-mode-on): Don't make local bindings for
+       flyspell-mouse-map and flyspell-mode-map.
+       (make-flyspell-overlay): Unconditionally put on `keymap' text prop.
+
+       * textmodes/ispell.el (ispell-word): Do not ignore short words.
+
+       * progmodes/compile.el (compilation-next-error-function):
+       Don't switch buffers; operate on the current buffer.
+
+       * progmodes/compile.el (compilation-error-file-name)
+       (compilation-warning-file-name, compilation-info-file-name)
+       (compilation-line-number, compilation-column-number): New faces.
+       (compilation-error-face, compilation-warning-face)
+       (compilation-info-face, compilation-line-face)
+       (compilation-column-face): Use them.
+
+       * facemenu.el (facemenu-add-face): Warn when font-lock is active.
+
+       * comint.el (comint-password-prompt-regexp): Accept ", try again".
+
+       * bindings.el (global-map): Bind insertchar and its variants.
+
+2005-06-27  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/artist.el (artist-text-overwrite)
+       (artist-figlet-get-extra-args, artist-text-see-thru): Use read-string.
+
+2005-06-27  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.el: It was not working the page selection for printing.
+       Reported by Sebastian Tennant <sebyte@smolny.plus.com>.
+       (ps-print-version): New version 6.6.7.
+       (ps-end-sheet): New fun.
+       (ps-header-sheet, ps-end-job): Call it.
+
+2005-06-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * subr.el (add-to-list, add-to-ordered-list): Doc fixes.
+
+2005-06-27  Lute Kamstra  <lute@gnu.org>
+
+       * facemenu.el (facemenu-unlisted-faces): Add foreground and
+       background color faces.
+       (facemenu-get-face): Delete function.
+       (facemenu-set-face-from-menu): Don't call facemenu-get-face.
+       (facemenu-add-new-color): Make second argument mandatory.
+       Create the appropriate face and return it.  Simplify.
+       (facemenu-set-foreground, facemenu-set-background): Don't check if
+       color is defined.  Use return value of facemenu-add-new-color.
+
+2005-06-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-filter): Add missing argument to
+       with-selected-window.
+
+2005-06-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Don't automatically add
+       a :require to the defcustom.
+
+       * emacs-lisp/autoload.el (make-autoload): Add the :setter for
+       defcustoms corresponding to minor modes.
+
+2005-06-26  David Ponce  <david@dponce.com>
+
+       * recentf.el: Require tree-widget instead of wid-edit.
+       (recentf-filename-handler): Fix widget :type.
+       (recentf-cancel-dialog, recentf-open-more-files)
+       (recentf-open-files-action): Doc fix.
+       (recentf-dialog-goto-first): New function.
+       (recentf-dialog-mode-map): Set parent keymap first.
+       (recentf-dialog-mode): Define with define-derived-mode.
+       Don't display continuation lines in dialogs.
+       (recentf-edit-list): Rename from recentf-edit-selected-items.
+       (recentf-edit-list-select): Rename from recentf-edit-list-action.
+       Simplify.
+       (recentf-edit-list-validate): New function.
+       (recentf-edit-list): Update accordingly.
+       (recentf-open-files-item-shift): Remove.
+       (recentf-open-files-item): Convert menu elements into tree and
+       link widgets.  Don't create the widgets.
+       (recentf-open-files): Update accordingly.
+       (recentf-save-list): Untabify.
+
+2005-06-25  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * replace.el (keep-lines-read-args): Add INTERACTIVE arg.
+       (keep-lines): Add INTERACTIVE arg.  Never delete lines only
+       partially contained in the active region.  Do not take active
+       region into account when called from Lisp, unless INTERACTIVE arg
+       is non-nil.  Use `forward-line' instead of `beginning-of-line' to
+       avoid trouble with fields.  Make marker point nowhere when no
+       longer used.  Always return nil.  Doc fix.
+       (flush-lines): Add INTERACTIVE arg.  Do not take active region
+       into account when called from Lisp, unless INTERACTIVE arg is
+       non-nil.  Use `forward-line' instead of `beginning-of-line' to
+       avoid trouble with fields.  Make marker point nowhere when no
+       longer used.  Always return nil.  Doc fix.
+       (how-many): Add INTERACTIVE arg.  Make RSTART and REND args
+       interchangeable.  Do not take active region into account when
+       called from Lisp, unless INTERACTIVE arg is non-nil.  Do not print
+       message in echo area when called from Lisp, unless INTERACTIVE arg
+       is non-nil.  Avoid saying "1 occurrences".  Do not use markers.
+       Return the number of matches.  Doc fix.
+       (occur): Doc fix.
+       (perform-replace): Make comment follow double space convention for
+       the sake of `outline-minor-mode'.
+
+       * faces.el (facep): Doc fix.
+
+2005-06-25  Richard M. Stallman  <rms@gnu.org>
+
+       * facemenu.el (facemenu-enable-faces-p): New function.
+       (facemenu-background-menu, facemenu-foreground-menu)
+       (facemenu-face-menu): Add menu-enable property.
+
+       * jka-compr.el (jka-compr-insert-file-contents):
+       Special handling if cannot find the uncompression program.
+
+       * cus-face.el (custom-face-attributes): Add autoload.
+
+       * emacs-lisp/lisp-mode.el (lisp-mode-variables):
+       Bind comment-indent-function locally.
+
+       * window.el (save-selected-window): Use save-current-buffer.
+
+       * subr.el (with-selected-window): Use save-current-buffer.
+
+       * progmodes/gud.el (gud-filter): Simplify using with-selected-window
+       and with-current-buffer.
+
+2005-06-24  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (line-move-1): Fix previous change.
+
+2005-06-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * replace.el (occur-1): Set `buffer-read-only' and the
+       buffer-modified flag before running `occur-hook' to protect
+       against unintentional buffer switches that can lead to data loss.
+
+2005-06-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-tooltip-print-command): Indent properly.
+       (gud-gdb-marker-filter): Use font-lock-warning-face for any
+       initial error.
+
+       * progmodes/gdb-ui.el (gdb-send): Remove warning face from errors
+       after fresh input.
+       (gdb-var-create-handler): Put name of expression in quotes.
+
+2005-06-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/ring.el (ring-elements): Make it return a list of the
+       elements of RING in order, and without bogus nil elements.
+
+2005-06-23  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (set-variable): Args renamed; doc fix.
+       (line-move-1): When there are overlays around, use vertical-motion.
+
+       * faces.el (escape-glyph): Use brown against light background.
+       (nobreak-space): Rename from no-break-space.
+       Fix previous change.
+
+       * dired-aux.el (dired-do-copy): Fix arg prompt.
+
+       * mail/sendmail.el (mail-setup-with-from): Fix custom type.
+
+2005-06-23  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * mail/emacsbug.el (report-emacs-bug): Use "X server distributor"
+       rather than "Distributor".
+
+2005-06-23  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (debugger-special-form-p): New defun.
+       (debug-on-entry): Use it.  New interactive declaration that uses
+       function-called-at-point.
+
+2005-06-23  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (save-match-data): Add comment about using evaporate arg
+       to set-match-data.
+
+2005-06-22  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * cus-edit.el (customize-face)
+       (customize-face-other-window): Handle face aliases.
+
+       * faces.el (face-documentation, set-face-attribute)
+       (face-spec-set): Handle face aliases.
+
+2005-06-22  Juanma Barranquero  <lekktu@gmail.com>
+
+       * help-mode.el (help-make-xrefs): If a symbol representing a face
+       name is not followed by the word "face", it could still be a
+       function or variable name, so don't bypass other checks.
+
+2005-06-22  Juri Linkov  <juri@jurta.org>
+
+       * ps-print.el (ps-face-foreground-name, ps-face-background-name):
+       Replace aliased functions with calls where second arg `inherit' is t.
+
+2005-06-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-error): New variable.
+       (gdb-error): New function.
+       (gdb-annotation-rules): Act on error-begin and error annotations.
+       (gdb-concat-output): Use font-lock-warning-face for errors.
+
+2005-06-22  Miles Bader  <miles@gnu.org>
+
+       * bindings.el (propertized-buffer-identification): Use renamed
+       `Buffer-menu-buffer' face.
+
+       * faces.el (vertical-border): Rename from `vertical-divider'.
+       (escape-glyph): Change dark-background color back to `cyan'.
+
+2005-06-21  Juri Linkov  <juri@jurta.org>
+
+       * faces.el (face-user-default-spec): Try getting `customized-face'
+       prior to `saved-face'.
+       (frame-background-mode): Refill docstring.
+
+       * emacs-lisp/lisp-mode.el (eval-defun-1):
+       * emacs-lisp/edebug.el (edebug-eval-defun):
+       Set `saved-face' temporarily to nil before calling form.
+       Set `customized-face' to the new spec after that.
+
+2005-06-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * subr.el (1value, lambda, key-substitution-in-progress):
+       Doc fixes.
+
+       * autoinsert.el (auto-insert-alist):
+       * ses.el (ses-call-printer):
+       * subr.el (noreturn):
+       * emacs-lisp/lisp.el (check-parens):
+       * emacs-lisp/byte-opt.el (byte-optimize-pure-func):
+       * net/browse-url.el (browse-url-mosaic):
+       * progmodes/cc-defs.el (c-safe-scan-lists):
+       * progmodes/ebnf-abn.el (ebnf-abn-lex):
+       * progmodes/ebnf-bnf.el (ebnf-bnf-lex):
+       * progmodes/ebnf-dtd.el (ebnf-dtd-lex):
+       * progmodes/ebnf-ebx.el (ebnf-ebx-lex):
+       * progmodes/ebnf-iso.el (ebnf-iso-lex):
+       * progmodes/ebnf-yac.el (ebnf-yac-lex): Fix spellings.
+
+2005-06-21  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * pcvs-defs.el (cvs-menu): Add cvs-mode-mark and cvs-mode-unmark.
+
+2005-06-21  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/appt.el (appt-make-list): Activate the package, if
+       not already active (for backwards compatibility).
+
+2005-06-20  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (add-to-ordered-list): Test membership with eq.  Simplify.
+
+2005-06-20  Miles Bader  <miles@gnu.org>
+
+       * faces.el (vertical-divider): New face.
+
+2005-06-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * simple.el (kill-whole-line): Doc fix.
+       (next-error-buffer-p, next-error-find-buffer)
+       (clone-indirect-buffer): Fix typos in docstrings.
+       (comment-line-break-function): Doc fix: don't say variable
+       is automatically buffer-local (it isn't).
+
+2005-06-19  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-ftp.el (top):
+       * net/tramp-smb.el (top):
+       * net/tramp-util.el (top):
+       * net/tramp-uu.el (top):
+       * net/tramp-vc.el (top):
+       * net/tramp.el (top): Revert copyright years back to original
+       ones.  Tramp has a life outside GNU Emacs.
+
+2005-06-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tooltip.el (tooltip-use-echo-area): Don't make it obsolete.
+
+2005-06-18  Juri Linkov  <juri@jurta.org>
+
+       * progmodes/grep.el (grep-regexp-alist): Use backreference at the
+       end of first regexp to limit the match to the position between
+       line number and source line with same separator character as used
+       between file name and line number.  In the second regexp limit
+       mouse-face area to file name and line number by adding new group
+       for them and referring it in HYPERLINK arg.
+       (grep-regexp-alist, grep-mode-font-lock-keywords): Use shy group.
+       (grep-mode): Set font-lock-lines-before to 0 to not refontify the
+       previous line where grep markers may be already removed.
+
+2005-06-18  Peter Kleiweg  <p.c.j.kleiweg@rug.nl>
+
+       * progmodes/ps-mode.el: Update version and maintainer's email address.
+
+2005-06-18  Steve Youngs  <steve@xemacs.org>
+
+       * net/browse-url.el (browse-url-browser-function)
+       (browse-url-default-browser): Add firefox.
+       (browse-url-firefox-program, browse-url-firefox-arguments)
+       (browse-url-firefox-startup-arguments)
+       (browse-url-firefox-new-window-is-tab): New defcustoms.
+       (browse-url-firefox, browse-url-firefox-sentinel): New functions.
+
+2005-06-17  Richard M. Stallman  <rms@gnu.org>
+
+       * startup.el (command-line): Warn if specified user name has
+       no home directory.
+
+       * term.el (term-get-old-input, term-input-filter, term-input-sender)
+       (term-mode-hook, term-exec-hook, term-escape-char): Doc fixes.
+
+       * longlines.el (longlines-mode, longlines-show-hard-newlines):
+       Doc fixes.
+
+       * faces.el (underline): Try bold if terminal doesn't support underline.
+
+       * mail/sendmail.el (mail-setup-with-from): New variable.
+       (mail-insert-from-field): New function.
+       (sendmail-send-it): Call it.
+       (mail-setup): Optionally call it here.
+
+       * term/linux.el: Call tty-no-underline.
+
+2005-06-17  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/edebug.el (edebug-goto-here): Doc fix.
+
+2005-06-17  Miles Bader  <miles@gnu.org>
+
+       * ediff-init.el (ediff-current-diff-A, ediff-current-diff-B)
+       (ediff-current-diff-C, ediff-current-diff-Ancestor)
+       (ediff-fine-diff-A, ediff-fine-diff-B, ediff-fine-diff-C)
+       (ediff-fine-diff-Ancestor, ediff-even-diff-A, ediff-even-diff-B)
+       (ediff-even-diff-C, ediff-even-diff-Ancestor, ediff-odd-diff-A)
+       (ediff-odd-diff-B, ediff-odd-diff-C, ediff-odd-diff-Ancestor):
+       Remove "-face" suffix from face names.
+       (ediff-current-diff-face-A, ediff-current-diff-face-B)
+       (ediff-current-diff-face-C, ediff-current-diff-face-Ancestor)
+       (ediff-fine-diff-face-A, ediff-fine-diff-face-B)
+       (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor)
+       (ediff-even-diff-face-A, ediff-even-diff-face-B)
+       (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor)
+       (ediff-odd-diff-face-A, ediff-odd-diff-face-B)
+       (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor):
+       New backward-compatibility aliases for renamed faces.
+       (ediff-current-diff-face-A, ediff-current-diff-face-B)
+       (ediff-current-diff-face-C, ediff-current-diff-face-Ancestor)
+       (ediff-fine-diff-face-A, ediff-fine-diff-face-B)
+       (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor)
+       (ediff-even-diff-face-A, ediff-even-diff-face-B)
+       (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor)
+       (ediff-odd-diff-face-A, ediff-odd-diff-face-B)
+       (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor):
+       Use renamed ediff faces.
+
+       * eshell/esh-test.el (eshell-test-ok, eshell-test-failed):
+       Remove "-face" suffix from face names.
+       (eshell-test-ok-face, eshell-test-failed-face):
+       New backward-compatibility aliases for renamed faces.
+       (eshell-run-test): Use renamed eshell-test faces.
+
+       * eshell/em-prompt.el (eshell-prompt): Remove "-face" suffix from
+       face name.
+       (eshell-prompt-face): New backward-compatibility alias for renamed
+       face.
+       (eshell-emit-prompt): Use renamed eshell-prompt face.
+
+       * eshell/em-ls.el (eshell-ls-directory, eshell-ls-symlink)
+       (eshell-ls-executable, eshell-ls-readonly, eshell-ls-unreadable)
+       (eshell-ls-special, eshell-ls-missing, eshell-ls-archive)
+       (eshell-ls-backup, eshell-ls-product, eshell-ls-clutter):
+       Remove "-face" suffix from face names.
+       (eshell-ls-directory-face, eshell-ls-symlink-face)
+       (eshell-ls-executable-face, eshell-ls-readonly-face)
+       (eshell-ls-unreadable-face, eshell-ls-special-face)
+       (eshell-ls-missing-face, eshell-ls-archive-face)
+       (eshell-ls-backup-face, eshell-ls-product-face)
+       (eshell-ls-clutter-face):
+       New backward-compatibility aliases for renamed faces.
+       (eshell-ls-decorated-name): Use renamed eshell-ls faces.
+
+       * progmodes/cc-fonts.el (c-nonbreakable-space-face):
+       Remove "-face" suffix from face name.
+       (c-cpp-matchers): Use the variable `c-nonbreakable-space-face'
+       instead of literal face.
+
+2005-06-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/warnings.el (display-warning, lwarn)
+       (warning-minimum-log-level): Doc fixes.
+       (warning-minimum-level, warning-minimum-log-level):
+       Add :debug to :type choices.
+
+       * progmodes/ada-mode.el (ada-format-paramlist)
+       (ada-get-indent-case, ada-check-matching-start)
+       (ada-check-defun-name, ada-goto-matching-decl-start)
+       (ada-goto-matching-start, ada-goto-matching-end, ada-tab)
+       (ada-untab, ada-move-to-start, ada-fill-comment-paragraph)
+       (ada-make-subprogram-body): Follow error conventions.
+       (ada-case-exception-file, ada-indent-comment-as-code)
+       (ada-indent-handle-comment-special, ada-indent-renames)
+       (ada-indent-return, ada-search-directories-internal)
+       (ada-tab-policy, ada-case-exception-substring)
+       (ada-other-file-alist, ada-matching-start-re)
+       (ada-matching-decl-start-re, ada-contextual-menu-last-point)
+       (ada-imenu-generic-expression, ada-compile-goto-error)
+       (ada-in-comment-p, ada-in-string-p, ada-in-string-or-comment-p)
+       (ada-popup-menu, ada-add-extensions, ada-mode)
+       (ada-region-selected, ada-create-case-exception)
+       (ada-create-case-exception-substring, ada-after-keyword-p)
+       (ada-activate-keys-for-case, ada-adjust-case-region)
+       (ada-adjust-case-buffer, ada-format-paramlist)
+       (ada-scan-paramlist, ada-insert-paramlist)
+       (ada-indent-newline-indent)
+       (ada-indent-newline-indent-conditional)
+       (ada-justified-indent-current, ada-goto-previous-word)
+       (ada-indent-current, ada-get-indent-open-paren)
+       (ada-get-indent-paramlist, ada-get-indent-end)
+       (ada-get-indent-case, ada-get-indent-when, ada-get-indent-if)
+       (ada-get-indent-block-start, ada-get-indent-subprog)
+       (ada-get-indent-noindent, ada-get-indent-label)
+       (ada-get-indent-loop, ada-get-indent-type, ada-goto-stmt-start)
+       (ada-search-prev-end-stmt, ada-goto-next-non-ws)
+       (ada-goto-stmt-end, ada-goto-next-word)
+       (ada-check-matching-start, ada-check-defun-name)
+       (ada-goto-matching-decl-start, ada-goto-matching-start)
+       (ada-goto-matching-end, ada-search-ignore-string-comment)
+       (ada-in-decl-p, ada-looking-at-semi-or)
+       (ada-looking-at-semi-private, ada-in-paramlist-p)
+       (ada-in-open-paren-p, ada-tab, ada-indent-current-function)
+       (ada-untab-hard, ada-move-to-start, ada-move-to-end)
+       (ada-next-procedure, ada-previous-procedure, ada-next-package)
+       (ada-previous-package, ada-create-menu)
+       (ada-fill-comment-paragraph-justify)
+       (ada-fill-comment-paragraph-postfix, ada-fill-comment-paragraph)
+       (ada-other-file-name, ada-last-which-function-line)
+       (ada-last-which-function-subprog, ada-which-function)
+       (ada-get-body-name, ada-outline-level, ada-narrow-to-defun)
+       (ada-gen-treat-proc, ada-check-emacs-version)
+       (ada-continuation-indent, ada-align-region-separate):
+       Fix typos in docstrings.
+       (ada-adjust-case, ada-adjust-case-interactive): Doc fixes.
+
+2005-06-16  Lute Kamstra  <lute@gnu.org>
+
+       * simple.el (fundamental-mode): Run after-change-major-mode-hook
+       conditionally.
+
+2005-06-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * comint.el (comint-replace-by-expanded-filename)
+       (comint-prompt-regexp, comint-delimiter-argument-list)
+       (comint-preinput-scroll-to-bottom):
+       * info.el (Info-hide-cookies-node):
+       * ls-lisp.el (ls-lisp-classify):
+       * find-file.el (ff-search-directories, ff-special-constructs)
+       (ff-find-other-file):
+       * font-lock.el (font-lock-keywords):
+       * shell.el (shell-prompt-pattern)
+       (shell-dynamic-complete-functions, shell-mode)
+       (shell-delimiter-argument-list):
+       * term.el (term-replace-by-expanded-filename)
+       (term-prompt-regexp, term-delimiter-argument-list):
+       * woman.el (woman-ignore, woman0-if):
+       * emacs-lisp/derived.el (derived-mode-init-mode-variables):
+       * emacs-lisp/elint.el (elint-init-env):
+       * emacs-lisp/regexp-opt.el (regexp-opt-depth):
+       * eshell/esh-mode.el (eshell-preinput-scroll-to-bottom):
+       * language/ethio-util.el (ethio-tilde-escape)
+       (ethio-use-three-dot-question):
+       * net/zone-mode.el (zone-mode-load-time-setup):
+       * progmodes/cc-align.el (c-lineup-argcont):
+       * progmodes/cc-awk.el (c-awk-beginning-of-defun):
+       * progmodes/cperl-mode.el (cperl-set-style-back):
+       * progmodes/inf-lisp.el (inferior-lisp-prompt):
+       * progmodes/vhdl-mode.el (vhdl-beginning-of-libunit):
+       Fix spellings in docstrings.
+
+       * textmodes/sgml-mode.el (sgml-calculate-indent, html-tag-help):
+       * progmodes/modula2.el (m2-for): Fix spellings.
+
+       * menu-bar.el (menu-bar-games-menu): Fix typo in menu help string.
+
+       * simple.el (undo-more): Don't use `format' on `error' arguments.
+       Improve argument/docstring consistency.
+       (pending-undo-list): Doc fix.
+
+       * smerge-mode.el (smerge-ensure-match):
+       * emulation/vip.el (vip-ex):
+       * net/zone-mode.el (zone-mode-update-serial):
+       * progmodes/idlwave.el (idlwave-complete):
+       * progmodes/vhdl-mode.el (vhdl-visit-file)
+       (vhdl-compose-wire-components):
+       Don't use `format' on `error' arguments.
+
+       * tooltip.el (tooltip-start-delayed-tip, tooltip-timeout)
+       (tooltip-use-echo-area, tooltip-process-prompt-regexp)
+       (tooltip-help-tips): Fix typos in docstrings.
+
+2005-06-16  David Ponce  <david@dponce.com>
+
+       * tree-widget.el (tree-widget-value-create): Simplify last change.
+
+2005-06-15  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * ido.el (ido-incomplete-regexp): New variable.
+       (ido-set-matches-1): Handle invalid-regexp error and set
+       ido-incomplete-regexp.
+       (ido-incomplete-regexp): New face.
+       (ido-completions): Use it.
+       (ido-complete, ido-exit-minibuffer, ido-completions):
+       Handle incomplete regexps.
+       (ido-completions): Add check for complete match when entering a regexp.
+
+2005-06-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * subr.el (add-to-ordered-list): Use a weak hash-table to avoid leaks.
+
+2005-06-15  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-Preamble): Enclose BibTeX preamble
+       by field delimiters.
+
+2005-06-15  David Ponce  <david@dponce.com>
+
+       * tree-widget.el: eval-and-compile inlined functions so they will
+       be available at run-time too.
+       (tree-widget-super-format-handler)
+       (tree-widget-format-handler): Remove.
+       (tree-widget-value-create): Handle the :indent property.
+
+2005-06-15  Miles Bader  <miles@gnu.org>
+
+       * progmodes/which-func.el (which-func): Only inherit
+       `font-lock-function-name-face' when that makes sense against the
+       default mode-line face, otherwise set the face color explicitly.
+
+       * progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl
+       faces instead of (non-existent) variables.
+
+2005-06-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * iswitchb.el (iswitchb-to-end): Replace mapcar with dolist.
+       (iswitchb-get-matched-buffers): Likewise.  Simplify.
+
+2005-06-14  Miles Bader  <miles@gnu.org>
+
+       * progmodes/ld-script.el (ld-script-location-counter):
+       Remove "-face" suffix from face name.
+       (ld-script-location-counter-face):
+       New backward-compatibility alias for renamed face.
+       (ld-script-location-counter-face): Use renamed face.
+
+       * progmodes/cperl-mode.el (cperl-nonoverridable, cperl-array)
+       (cperl-hash): Remove "-face" suffix from face names.
+       (cperl-nonoverridable-face, cperl-array-face, cperl-hash-face):
+       New backward-compatibility aliases for renamed faces.
+       (cperl-find-pods-heres, cperl-init-faces, cperl-ps-print-init)
+       (cperl-ps-print-face-properties): Use renamed cperl-mode faces.
+
+       * progmodes/which-func.el (which-func): Remove "-face" suffix from face
+       name.
+       (which-func-face): New backward-compatibility alias for renamed face.
+       (which-func-format): Use renamed which-func face.
+
+       * progmodes/vhdl-mode.el (vhdl-prompt, vhdl-attribute, vhdl-enumvalue)
+       (vhdl-function, vhdl-directive, vhdl-reserved-word)
+       (vhdl-translate-off): Remove "-face" suffix and "font-lock-" from face
+       names.
+       (vhdl-speedbar-entity, vhdl-speedbar-architecture)
+       (vhdl-speedbar-configuration, vhdl-speedbar-package)
+       (vhdl-speedbar-library, vhdl-speedbar-instantiation)
+       (vhdl-speedbar-subprogram, vhdl-speedbar-entity-selected)
+       (vhdl-speedbar-architecture-selected)
+       (vhdl-speedbar-configuration-selected)
+       (vhdl-speedbar-package-selected)
+       (vhdl-speedbar-instantiation-selected): Remove "-face" suffix from face
+       names.
+       (vhdl-font-lock-keywords-2, vhdl-font-lock-keywords-5):
+       Use renamed faces.
+       (vhdl-prompt-face, vhdl-attribute-face, vhdl-enumvalue-face)
+       (vhdl-function-face, vhdl-directive-face, vhdl-reserved-words-face)
+       (vhdl-translate-off-face): Variables renamed to remove "font-lock-".
+       Use renamed faces.
+       (syntax-alist): Don't use "font-lock-" or "-face" in generated face
+       names.
+       (vhdl-font-lock-init, vhdl-ps-print-settings): Use renamed faces.
+       (vhdl-speedbar-insert-hierarchy, vhdl-speedbar-expand-entity)
+       (vhdl-speedbar-expand-package, vhdl-speedbar-update-current-unit)
+       (vhdl-speedbar-make-inst-line, vhdl-speedbar-make-pack-line)
+       (vhdl-speedbar-make-subpack-line, vhdl-speedbar-make-subprogram-line)
+       (vhdl-speedbar-item-info, vhdl-speedbar-check-unit): Use renamed faces.
+
+       * progmodes/sh-script.el (sh-heredoc): Remove "-face" suffix from
+       face name.
+       (sh-heredoc-face): New backward-compatibility alias for renamed face.
+       (sh-heredoc-face): Use renamed sh-heredoc face.
+
+       * progmodes/idlw-help.el (idlwave-help-link):
+       Remove "-face" suffix from face name.
+       (idlwave-help-link-face):
+       New backward-compatibility alias for renamed face.
+       (idlwave-highlight-linked-completions): Use renamed idlwave-help faces.
+
+       * progmodes/idlw-shell.el (idlwave-shell-bp-face)
+       (idlwave-shell-disabled-bp): Remove "-face" suffix from face names.
+       (idlwave-shell-bp-face, idlwave-shell-disabled-bp):
+       New backward-compatibility aliases for renamed faces.
+       (idlwave-shell-disabled-breakpoint-face)
+       (idlwave-shell-breakpoint-face): Use renamed idlwave-shell faces.
+
+       * progmodes/flymake.el (flymake-errline, flymake-warnline):
+       Remove "-face" suffix from face names.
+       (flymake-errline-face, flymake-warnline-face):
+       New backward-compatibility aliases for renamed faces.
+       (flymake-highlight-line): Use renamed flymake faces.
+
+       * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
+       (ebrowse-file-name, ebrowse-default, ebrowse-member-attribute)
+       (ebrowse-member-class, ebrowse-progress):
+       Remove "-face" suffix from face names.
+       (ebrowse-tree-mark-face, ebrowse-root-class-face)
+       (ebrowse-file-name-face, ebrowse-default-face)
+       (ebrowse-member-attribute-face, ebrowse-member-class-face)
+       (ebrowse-progress-face):
+       New backward-compatibility aliases for renamed faces.
+       (ebrowse-show-progress, ebrowse-show-file-name-at-point)
+       (ebrowse-set-mark-props, ebrowse-draw-tree-fn)
+       (ebrowse-draw-member-buffer-class-line, ebrowse-draw-member-long-fn)
+       (ebrowse-draw-member-short-fn): Use renamed ebrowse faces.
+
+       * progmodes/antlr-mode.el (antlr-default, antlr-keyword, antlr-syntax)
+       (antlr-ruledef, antlr-tokendef, antlr-ruleref, antlr-tokenref)
+       (antlr-literal): Remove "-face" suffix and "font-lock-" from face
+       names.
+       (antlr-font-lock-default-face, antlr-font-lock-keyword-face)
+       (antlr-font-lock-syntax-face, antlr-font-lock-ruledef-face)
+       (antlr-font-lock-tokendef-face, antlr-font-lock-ruleref-face)
+       (antlr-font-lock-tokenref-face, antlr-font-lock-literal-face): New
+       backward-compatibility aliases for renamed faces.
+       (antlr-default-face, antlr-keyword-face, antlr-syntax-face)
+       (antlr-ruledef-face, antlr-tokendef-face, antlr-ruleref-face)
+       (antlr-tokenref-face, antlr-literal-face): Variables renamed to
+       remove "font-lock-".  Use renamed antlr-mode faces.
+       (antlr-font-lock-additional-keywords): Use renamed faces.  Replace
+       literal face-names with face variable references.
+
+       * buff-menu.el (Buffer-menu-buffer): Remove "-face" suffix from
+       face name.
+       (Buffer-menu-buffer-face): New backward-compatibility alias for
+       renamed face.
+       (list-buffers-noselect): Use renamed Buffer-menu-buffer face.
+
+2005-06-15  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * progmodes/make-mode.el (makefile-space, makefile-makepp-perl):
+       Eliminate "-face" suffix.
+       (makefile-targets): Inherit from font-lock-function-name-face and
+       eliminate "-face" suffix.
+       (makefile-shell): Remove attributes and eliminate "-face" suffix.
+       (makefile-*-font-lock-keywords): Append makefile-targets in rule
+       actions, instead of prepending, to make it less visible.
+       (makefile-previous-dependency, makefile-match-dependency):
+       Don't match a target on a continuation line.
+
+       * files.el (auto-mode-alist): Put Makefile in gmake mode.
+
+2005-06-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (menu): Re-order menu items.
+       (gdb-tooltip-print): Respect tooltip-use-echo-area.
+
+       * progmodes/gud.el (tooltip-use-echo-area): Remove alias.
+       Define in tooltip.el.
+       (gud-tooltip-process-output): Respect tooltip-use-echo-area.
+       (gud-tooltip-tips): Respect tooltip-use-echo-area and
+       gud-tooltip-echo-area.
+
+       * tooltip.el (tooltip-use-echo-area): Restore from gud.el for
+       backward compatibility and make obsolete.
+       (tooltip-help-tips): Use tooltip-use-echo-area.
+       (tooltip-show-help-function): Rename to...
+       (tooltip-show-help): ...this, because it is a function.
+       (tooltip-mode, tooltip-help-message): Call tooltip-show-help.
+
+2005-06-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/edebug.el (edebug-all-defs, edebug-initial-mode)
+       (edebug-print-length, edebug-print-level, edebug-print-circle)
+       (edebug-modify-breakpoint, edebug-eval-last-sexp)
+       (edebug-eval-print-last-sexp): Doc fixes.
+
+2005-06-14  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-mode): Make a new keymap every time we enable ido,
+       as the coverage buffer/file/both may change.
+
+2005-06-14  Lute Kamstra  <lute@gnu.org>
+
+       * net/ange-ftp.el (internal-ange-ftp-mode): Use delay-mode-hooks
+       and run-mode-hooks.  Simplify.
+
+       * mail/rmailedit.el (rmail-edit-mode):
+       * progmodes/octave-inf.el (inferior-octave-mode):
+       * progmodes/sql.el (sql-interactive-mode): Use delay-mode-hooks.
+
+       * recentf.el (recentf-dialog-mode): Use kill-all-local-variables
+       and run-mode-hooks.
+       (recentf-edit-list, recentf-open-files): Don't call
+       kill-all-local-variables directly.
+
+       * emacs-lisp/debug.el (debug-on-entry): Fix docstring.
+
+2005-06-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/byte-run.el (make-obsolete)
+       (define-obsolete-function-alias): Rename arguments FUNCTION and
+       NEW to OBSOLETE-NAME and CURRENT-NAME respectively.
+       (make-obsolete-variable, define-obsolete-variable-alias):
+       Rename arguments VARIABLE and NEW to OBSOLETE-NAME and CURRENT-NAME
+       respectively.
+
+       * isearchb.el (isearchb-activate):
+       * pcvs.el (cvs-mode):
+       * ses.el (ses-load):
+       * vc-arch.el (vc-arch-checkin, vc-arch-diff):
+       * net/tramp.el (tramp-find-file-exists-command)
+       (tramp-find-shell):
+       * progmodes/ada-mode.el (ada-create-case-exception)
+       (ada-create-case-exception-substring, ada-make-subprogram-body):
+       * progmodes/idlw-shell.el (idlwave-shell-move-to-bp):
+       * progmodes/idlwave.el (idlwave-complete-class-structure-tag-help):
+       * progmodes/vhdl-mode.el (vhdl-speedbar-place-component):
+       * textmodes/org.el (org-promote, org-evaluate-time-range)
+       (org-agenda-next-date-line, org-agenda-previous-date-line)
+       (org-agenda-error, org-open-at-point, org-table-move-row)
+       (org-format-table-table-html-using-table-generate-source)
+       (org-shiftcursor-error, org-ctrl-c-ctrl-c):
+       * textmodes/reftex.el (reftex-access-scan-info):
+       * textmodes/reftex-toc.el (reftex-toc-dframe-p)
+       (reftex-toc-promote-prepare): Follow error conventions.
+
+       * diff-mode.el (diff-mode): Fix typo in docstring.
+
+       * forms.el (forms--intuit-from-file): Fix reference to
+       `forms-number-of-fields' in error message.
+       (forms-print): Fix quoting in error message.
+
+       * forms.el (forms-mode):
+       * emulation/vi.el (vi-goto-insert-state):
+       * progmodes/flymake.el (flymake-new-err-info)
+       (flymake-start-syntax-check-for-current-buffer)
+       (flymake-simple-cleanup):
+       * eshell/esh-var.el (eshell/export):
+       * progmodes/gud.el (xdb):
+       * textmodes/flyspell.el (flyspell-incorrect-hook)
+       (flyspell-maybe-correct-transposition)
+       (flyspell-maybe-correct-doubling): Fix quoting in docstring.
+
+2005-06-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/debug.el (cancel-debug-on-entry): Mention default in
+       minibuffer prompt.
+
+2005-06-13  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (add-to-ordered-list): New defun.
+
+       * emulation/cua-base.el (cua-mode): Use add-to-ordered-list to
+       add cua--keymap-alist to emulation-mode-map-alists.
+
+2005-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * subr.el (complete-in-turn): New macro.
+       (dynamic-completion-table, lazy-completion-table): Add debug info.
+
+       * faces.el (read-face-name): Use complete-in-turn complete non-aliases
+       in preference to face aliases.
+
+       * textmodes/fill.el (fill-match-adaptive-prefix): New function.
+       (fill-context-prefix): Use it to avoid guessing absurdly long prefixes.
+       Remove unused vars `start' and `firstline'.
+       (fill-nobreak-p): Fix line-move-invisible -> line-move-invisible-p.
+       (justify-current-line, fill-individual-paragraphs): Remove unused vars.
+
+2005-06-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * cus-start.el (all): Don't complain about missing GTK-related
+       variables, unless either `gtk' is boundp or this isn't a
+       `windows-nt' build.
+
+2005-06-13  Lute Kamstra  <lute@gnu.org>
+
+       * abbrev.el (edit-abbrevs-mode): Use kill-all-local-variables and
+       run-mode-hooks.
+
+       * ediff-mult.el (ediff-meta-mode):
+       * ediff-util.el (ediff-mode): Use run-mode-hooks.
+
+       * ledit.el (ledit-mode): Use delay-mode-hooks.
+
+       * woman.el (woman-mode-line-format): Delete constant.
+       (woman-mode-map): Initialize it properly.
+       (woman-mode): Set mode-class property to special.
+       Use delay-mode-hooks and run-mode-hooks.  Use the right keymap.
+       Set major-mode and mode-name.  Don't set mode-line-format directly.
+       (Man-getpage-in-background): Don't reference woman-mode-line-format.
+
+       * emacs-lisp/debug.el (cancel-debug-on-entry): Make the empty
+       string argument obsolete.
+
+2005-06-13  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-CUA-compatible): New option.
+       (org-disputed-keys): New variable.
+       (org-key): New function.
+       (orgtbl-make-binding): Add docstring to the created function.
+       (org-mode): Set paragraph start/separate regexps.
+       (orgtbl-mode): Don't start `orgtbl-mode' in `org-mode' buffers.
+       (org-archive-location, org-archive-mark-done)
+       (org-archive-stamp-time): New options.
+       (org-archive-subtree): New command.
+       (org-fill-paragraph): New function.
+       (org-mode): Set `fill-paragraph-function' to `org-fill-paragraph'.
+       (org-fake-empty-table-line): Function removed.
+       (org-format-org-table-html): Do not create empty table lines at
+       separator lines.  Improved table header treatment.
+       (org-link-format): New option.
+       (org-make-link): New function.
+       (org-insert-link, org-store-link): Use org-make-link.
+       (org-open-file): Quote file name for shell command, to allow
+       spaces in file names.
+       (org-link-regexp): Fix bug with mailto link.
+       (org-link-maybe-angles-regexp, org-protected-link-regexp):
+       New constants.
+       (org-export-as-html): Deal with the optional angles around a link.
+       Better treatment of file: links.
+       (org-open-at-point): Replace @{ and @} with < and >.
+       (org-run-mode-hooks): Function removed.
+       (org-agenda-mode): No longer use `org-run-mode-hooks'.
+
+2005-06-13  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-registers-mode): Let gdbmi use
+       MI command -data-list-register-values.
+       (gdb-post-prompt): Indent properly.
+
+2005-06-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * hilit-chg.el (highlight-changes-colors): Rename from
+       `highlight-changes-colours'.
+       (highlight-changes-colours): Keep as obsolete alias.
+       (highlight-changes-face-list): Doc fix.
+       (hilit-chg-make-list): Use `highlight-changes-colors'.
+
+2005-06-12  Mark A. Hershberger  <mah@everybody.org>
+
+       * progmodes/cperl-mode.el (cperl-mode): Remove stray paren in
+       defun-prompt-regexp.
+
+2005-06-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * loadup.el: Don't say we are dumping under 2 names on windows-nt
+       and cygwin.
+
+       * makefile.w32-in (bootstrap-clean-CMD, bootstrap-clean-SH):
+       Don't use an old loaddefs.el, as in Makefile.in.
+
+2005-06-12  Lute Kamstra  <lute@gnu.org>
+
+       * Makefile.in (bootstrap-prepare): Don't use an old loaddefs.el.
+
+       * man.el (Man-mode-map): Initialize it properly.
+       (Man-mode): Set mode-class property to special.
+
+       * calendar/calendar.el (calendar-mode): Use run-mode-hooks.
+
+2005-06-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * menu-bar.el (menu-bar-make-toggle): Remove stray backslash.
+       A newline is needed in the docstring there.
+
+       * emacs-lisp/debug.el (debug-on-entry, cancel-debug-on-entry):
+       Doc fixes.
+
+2005-06-11  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * printing.el: Doc fix.  The menubar is no more changed when printing
+       is loaded, it only changes when pr-menu-bind or pr-update-menus is
+       called.  Now, the menubar changing will work in Emacs 20, 21 and 22.
+       (pr-version): New version number (6.8.4).
+       (pr-menu-bind): New command.
+       (pr-update-menus): Docstring and code fix.
+       (pr-menu-print-item): Now is a global var in Emacs and XEmacs.
+       Docstring fix.
+       (pr-txt-printer-alist, pr-ps-printer-alist, pr-gv-command)
+       (pr-gs-command, pr-gs-switches, pr-ps-utility-alist): Docstring fix.
+
+2005-06-11  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/ewoc.el: Doc fixes for public funcs:
+       "Returns" to "return", document useful return values, etc.
+
+2005-06-11  Alan Mackenzie  <acm@muc.de>
+
+       * fill.el (fill-context-prefix): Try `adaptive-fill-function'
+       BEFORE `adaptive-fill-regexp' when determining a fill prefix.
+       (adaptive-file-function): Minor amendment to doc-string.
+
+2005-06-11  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
+
+       * thumbs.el (thumbs-per-line, thumbs-thumbsdir-max-size)
+       (thumbs-relief, thumbs-margin, thumbs-image-resizing-step):
+       Fix :type--it is `integer', not `string'.
+
+       * faces.el (modeline-highlight): Rename from (the erroneous)
+       `modeline-higilight'.
+
+2005-06-11  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/edebug.el (edebug-eval-mode-map): Don't copy
+       lisp-interaction-mode-map but make it the parent.
+       (edebug-eval-mode): Use define-derived-mode.
+
+2005-06-11  Andreas Schwab  <schwab@suse.de>
+
+       * bindings.el: Add binding of `ESC functionkey' for every
+       `M-functionkey'.
+       * hexl.el (hexl-mode-map): Likewise.
+
+2005-06-10  Michael Hotchin  <michael@hotchin.net>  (tiny change)
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist)
+       [msft]: update regexp for newer msft compilers.
+
+2005-06-10  Mark A. Hershberger  <mah@everybody.org>
+
+       * xml.el (start-chars, xml-parse-dtd): Add the ability to skip
+       ATTLIST portions of included DTDs.
+       (xml-parse-dtd): Eliminate use of inefficient match-data.
+
+2005-06-10  Miles Bader  <miles@gnu.org>
+
+       * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
+       (mpuz-text): Remove "-face" suffix from face names.
+       (mpuz-unsolved-face, mpuz-solved-face, mpuz-trivial-face)
+       (mpuz-text-face): New backward-compatibility aliases for renamed faces.
+       (mpuz-create-buffer, mpuz-paint-digit): Use renamed mpuz faces.
+
+       * play/gomoku.el (gomoku-O, gomoku-X):
+       Remove "-face" suffix from face names.
+       (gomoku-font-lock-O-face, gomoku-font-lock-X-face):
+       New backward-compatibility aliases for renamed faces.
+       (gomoku-font-lock-keywords): Use renamed gomoku faces.
+
+2005-06-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * thumbs.el: Fixes for changes of 2005-06-09.
+       (thumbs-thumbsdir): Force `thumbs-thumbsdir' to be interpretable
+       as a directory.
+       (thumbs-thumbname): Remove directory separator from format string;
+       `thumbs-thumbsdir' now returns a valid directory name.
+       (thumbs-temp-dir): New defsubst.
+       (thumbs-temp-file, thumbs-resize-image, thumbs-modify-image):
+       Use it.
+
+       * cus-edit.el (minibuffer):
+       * files.el (make-backup-file-name-function):
+       * filesets.el (filesets-external-viewers):
+       * hilit-chg.el (highlight-changes-colours)
+       (highlight-changes-face-list, highlight-changes-rotate-faces):
+       * ielm.el (ielm-dynamic-return, inferior-emacs-lisp-mode):
+       * kmacro.el (kmacro-call-macro):
+       * log-edit.el (log-edit-changelog-full-paragraphs):
+       * mouse.el (mouse-1-click-follows-link):
+       * skeleton.el (skeleton-autowrap):
+       * subr.el (insert-for-yank-1):
+       * tempo.el (tempo-insert-region):
+       * terminal.el (terminal-emulator):
+       * time.el (display-time-mail-face):
+       * vc.el (vc-annotate):
+       * vcursor.el (vcursor-copy-line):
+       * woman.el (woman-bold-headings, woman-ignore)
+       (woman-default-faces, woman-monochrome-faces):
+       * calendar/todo-mode.el (todo-insert-threshold):
+       * emulation/pc-select.el (pc-select-selection-keys-only)
+       (pc-selection-mode):
+       * emulation/vip.el (vip-find-char-forward):
+       * emulation/viper-cmd.el (viper-find-char-forward):
+       * international/mule-cmds.el
+       (select-safe-coding-system-accept-default-p)
+       (input-method-exit-on-invalid-key):
+       * international/mule-diag.el (describe-coding-system):
+       * international/ucs-tables.el (unify-8859-on-encoding-mode):
+       * net/browse-url.el (browse-url-xterm-program):
+       * obsolete/lazy-lock.el (lazy-lock-mode):
+       * progmodes/cperl-mode.el (cperl-info-on-command-no-prompt)
+       (cperl-mode):
+       * progmodes/cpp.el (cpp-face-light-name-list)
+       (cpp-face-dark-name-list):
+       * progmodes/delphi.el (delphi-newline-always-indents):
+       Fix spellings in docstrings.
+
+       * ido.el (ido-mode, ido-file-extensions-order)
+       (ido-default-file-method, ido-default-buffer-method)
+       (ido-max-prospects, ido-slow-ftp-hosts, ido-setup-hook)
+       (ido-decorations, ido-read-file-name-as-directory-commands)
+       (ido-read-file-name-non-ido, ido-work-directory-list)
+       (ido-ignore-item-temp-list, ido-current-directory)
+       (ido-magic-forward-char, ido-enter-find-file)
+       (ido-enter-switch-buffer, ido-visit-buffer, ido-switch-buffer)
+       (ido-find-file, ido-read-buffer): Fix typos in docstrings.
+
+2005-06-10  Lute Kamstra  <lute@gnu.org>
+
+       * play/dunnet.el (dun-mode): Use define-derived-mode.
+       (dungeon-mode-map): Rename to dun-mode-map.  Keep old name as an
+       obsolete alias.
+
+       * play/doctor.el (doctor-mode-map): Remove defvar.
+       (doctor-mode): Use define-derived-mode.
+
+       * mail/mspools.el (mspools-mode):
+       * net/eudc-hotlist.el (eudc-hotlist-mode):
+       * play/blackbox.el (blackbox-mode): Use run-mode-hooks.
+
+2005-06-10  Miles Bader  <miles@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
+       Remove "-face" suffix from face names.
+       (flyspell-incorrect-face, flyspell-duplicate-face):
+       New backward-compatibility aliases for renamed faces.
+       (flyspell-mode-on, make-flyspell-overlay)
+       (flyspell-highlight-incorrect-region)
+       (flyspell-highlight-duplicate-region)
+       (flyspell-display-next-corrections)
+       (flyspell-auto-correct-previous-word): Use renamed flyspell faces.
+
+       * textmodes/texinfo.el (texinfo-heading): Remove "-face" suffix
+       from face name.
+       (texinfo-heading-face): New backward-compatibility alias for
+       renamed face.
+       (texinfo-heading-face): Use renamed texinfo-heading face.
+
+       * textmodes/tex-mode.el (tex-math, tex-verbatim): Remove "-face"
+       suffix from face names.
+       (tex-math-face, tex-verbatim-face):
+       New backward-compatibility aliases for renamed faces.
+       (tex-math-face, tex-verbatim-face): Use renamed tex-mode faces.
+       (tex-insert-quote): Use `tex-verbatim-face' variable instead of
+       literal face name.
+
+       * textmodes/table.el (table-cell): Remove "-face" suffix from face
+       name.
+       (table-cell-face): New backward-compatibility alias for renamed face.
+       (table--put-cell-face-property, table--update-cell-face):
+       Use renamed table-cell face.
+
+       * textmodes/sgml-mode.el (sgml-namespace): Remove "-face" suffix
+       from face name.
+       (sgml-namespace-face): New backward-compatibility alias for
+       renamed face.
+       (sgml-namespace-face): Use renamed sgml-namespace face.
+
+       * textmodes/org.el (org-level-1, org-level-2, org-level-3)
+       (org-level-4, org-level-5, org-level-6, org-level-7)
+       (org-level-8, org-warning, org-headline-done)
+       (org-deadline-announce, org-scheduled-today)
+       (org-scheduled-previously, org-link, org-done, org-table)
+       (org-time-grid): Remove "-face" suffix from face names.
+       (org-level-1-face, org-level-2-face, org-level-3-face)
+       (org-level-4-face, org-level-5-face, org-level-6-face)
+       (org-level-7-face, org-level-8-face, org-warning-face)
+       (org-headline-done-face, org-deadline-announce-face)
+       (org-scheduled-today-face, org-scheduled-previously-face)
+       (org-link-face, org-done-face, org-table-face)
+       (org-time-grid-face):
+       New backward-compatibility aliases for renamed faces.
+       (org-level-faces, org-set-font-lock-defaults, org-timeline)
+       (org-agenda, org-agenda-get-todos, org-agenda-get-deadlines)
+       (org-agenda-get-timestamps, org-agenda-get-scheduled)
+       (org-agenda-add-time-grid-maybe, org-table-p): Use renamed org faces.
+
+       * emulation/viper-init.el (viper-search, viper-replace-overlay)
+       (viper-minibuffer-emacs, viper-minibuffer-insert)
+       (viper-minibuffer-vi): Remove "-face" suffix from face names.
+       (viper-search-face, viper-replace-overlay-face)
+       (viper-minibuffer-emacs-face, viper-minibuffer-insert-face)
+       (viper-minibuffer-vi-face):
+       New backward-compatibility aliases for renamed faces.
+       (viper-search-face, viper-replace-overlay-face)
+       (viper-minibuffer-emacs-face, viper-minibuffer-insert-face)
+       (viper-minibuffer-vi-face): Use renamed viper faces.
+
+       * emacs-lisp/testcover.el (testcover-nohits, testcover-1value):
+       Remove "-face" suffix from face names.
+       (testcover-nohits-face, testcover-1value-face):
+       New backward-compatibility aliases for renamed faces.
+       (testcover-mark): Use renamed testcover faces.
+
+       * calendar/diary-lib.el (diary-button): Remove "-face" suffix from
+       face name.
+       (diary-button-face): New backward-compatibility alias for renamed face.
+       (diary-entry): Use renamed diary-button face.
+
+       * calendar/calendar.el (diary, calendar-today, holiday)
+       (mark-visible-calendar-date): Remove "-face" suffix from face names.
+       (diary-face, calendar-today-face, holiday-face):
+       New backward-compatibility aliases for renamed faces.
+       (eval-after-load "facemenu", diary-entry-marker)
+       (calendar-today-marker, calendar-holiday-marker, diary-face):
+       Use renamed calendar faces.
+
+       * compare-w.el (compare-windows): Remove "-face" suffix from face name.
+       (compare-windows-face): New backward-compatibility alias for
+       renamed face.
+       (compare-windows-highlight): Use renamed compare-windows face.
+
+       * strokes.el (strokes-char): Remove "-face" suffix from face name.
+       (strokes-char-face): New backward-compatibility alias for renamed face.
+       (strokes-encode-buffer): Use renamed strokes-char face.
+
+       * pcvs-info.el (cvs-header, cvs-filename, cvs-unknown)
+       (cvs-handled, cvs-need-action, cvs-marked, cvs-msg):
+       Remove "-face" suffix from face names.
+       (cvs-header-face, cvs-filename-face, cvs-unknown-face)
+       (cvs-handled-face, cvs-need-action-face, cvs-marked-face)
+       (cvs-msg-face): New backward-compatibility aliases for renamed faces.
+       (cvs-fi-up-to-date-face, cvs-fi-unknown-face, cvs-fileinfo-pp):
+       Use renamed pcvs faces.
+       * pcvs.el (cvs-mode-find-file): Use renamed pcvs faces.
+       * pcvs-defs.el (cvs-mode-map): Likewise.
+       * cvs-status.el (cvs-status-font-lock-keywords): Likewise.
+
+       * info.el (info-title-1, info-title-2, info-title-3)
+       (info-title-4): Remove "-face" suffix from and downcase face names.
+       (Info-title-1-face, Info-title-2-face, Info-title-3-face)
+       (Info-title-4-face):
+       New backward-compatibility aliases for renamed faces.
+       (Info-fontify-node): Use renamed info faces.
+
+       * hilit-chg.el (highlight-changes, highlight-changes-delete):
+       Remove "-face" suffix from face names.
+       (highlight-changes-face, highlight-changes-delete-face):
+       New backward-compatibility aliases for renamed faces.
+       (hilit-chg-cust-fix-changes-face-list, hilit-chg-make-ov)
+       (hilit-chg-make-list): Use renamed highlight-changes faces.
+
+       * generic-x.el (show-tabs-tab, show-tabs-space):
+       Remove "-face" suffix from face names.
+       (show-tabs-tab-face, show-tabs-space-face):
+       New backward-compatibility aliases for renamed faces.
+       (show-tabs-generic-mode-font-lock-defaults-1)
+       (show-tabs-generic-mode-font-lock-defaults-2):
+       Use renamed show-tabs faces.
+
+       * smerge-mode.el (smerge-mine, smerge-other, smerge-base)
+       (smerge-markers): Remove "-face" suffix from face names.
+       (smerge-mine-face, smerge-other-face, smerge-base-face)
+       (smerge-markers-face):
+       New backward-compatibility aliases for renamed faces.
+       (smerge-mine-face, smerge-other-face, smerge-base-face)
+       (smerge-markers-face): Use renamed smerge faces.
+
+       * log-view.el (log-view-file, log-view-message): Remove "-face"
+       suffix from face names.
+       (log-view-file-face, log-view-message-face):
+       New backward-compatibility aliases for renamed faces.
+       (log-view-file-face, log-view-message-face): Use renamed log-view
+       faces.
+
+       * paren.el (show-paren-match, show-paren-mismatch):
+       Remove "-face" suffix from face names.
+       (show-paren-match-face, show-paren-mismatch-face):
+       New backward-compatibility aliases for renamed faces.
+       (show-paren-function): Use renamed show-paren faces.
+
+       * ruler-mode.el (ruler-mode-default, ruler-mode-pad)
+       (ruler-mode-margins, ruler-mode-fringes)
+       (ruler-mode-column-number, ruler-mode-fill-column)
+       (ruler-mode-comment-column, ruler-mode-goal-column)
+       (ruler-mode-tab-stop, ruler-mode-current-column): Remove "-face"
+       suffix from face names.
+       (ruler-mode-default-face, ruler-mode-pad-face)
+       (ruler-mode-margins-face, ruler-mode-fringes-face)
+       (ruler-mode-column-number-face, ruler-mode-fill-column-face)
+       (ruler-mode-comment-column-face, ruler-mode-goal-column-face)
+       (ruler-mode-tab-stop-face, ruler-mode-current-column-face):
+       New backward-compatibility aliases for renamed faces.
+       (ruler-mode-pad, ruler-mode-margins, ruler-mode-fringes)
+       (ruler-mode-column-number, ruler-mode-fill-column)
+       (ruler-mode-comment-column, ruler-mode-goal-column)
+       (ruler-mode-tab-stop, ruler-mode-current-column)
+       (ruler-mode-mouse-grab-any-column, ruler-mode-ruler): Use renamed
+       faces.
+
+       * whitespace.el (whitespace-highlight): Remove "-face" suffix from
+       face name.
+       (whitespace-highlight-the-space): Use renamed face.
+       (whitespace-highlight-face): New backward-compatibility alias for
+       renamed face.
+
+       * woman.el (woman-italic, woman-bold, woman-unknown)
+       (woman-addition, woman-symbol-face):
+       Remove "-face" suffix from face names.
+       (woman-italic-face, woman-bold-face, woman-unknown-face)
+       (woman-addition-face):
+       New backward-compatibility aliases for renamed faces.
+       (woman-default-faces, woman-monochrome-faces, woman-man-buffer)
+       (woman-decode-region, woman-replace-match)
+       (woman-display-extended-fonts, woman-special-characters)
+       (woman-font-alist, woman-change-fonts, woman2-TH, woman2-SH):
+       Use renamed woman faces.
+
+       * longlines.el (longlines-visible-face): Face removed.
+
+       * diff-mode.el (diff-header, diff-file-header, diff-index)
+       (diff-hunk-header, diff-removed, diff-added, diff-changed)
+       (diff-function, diff-context, diff-nonexistent): Remove "-face"
+       suffix from face names.
+       (diff-header-face, diff-file-header-face, diff-index-face)
+       (diff-hunk-header-face, diff-removed-face, diff-added-face)
+       (diff-changed-face, diff-function-face, diff-context-face)
+       (diff-nonexistent-face): New backward-compatibility aliases for
+       renamed faces.
+       (diff-header-face, diff-file-header-face)
+       (diff-index, diff-index-face, diff-hunk-header)
+       (diff-hunk-header-face, diff-removed, diff-removed-face)
+       (diff-added, diff-added-face, diff-changed-face, diff-function)
+       (diff-function-face, diff-context-face, diff-nonexistent)
+       (diff-nonexistent-face): Use renamed diff-mode faces.
+
+       * progmodes/compile.el (compilation-warning-face)
+       (compilation-info-face): Remove "-face" suffix from face names.
+       (compilation-warning-face, compilation-info-face):
+       New backward-compatibility aliases for renamed faces.
+       (compilation-warning-face, compilation-info-face):
+       Use renamed compilation faces.
+
+       * add-log.el (change-log-date, change-log-name)
+       (change-log-email, change-log-file, change-log-list)
+       (change-log-conditionals, change-log-function)
+       (change-log-acknowledgement): Remove "-face" suffix from face names.
+       (change-log-date-face, change-log-name-face)
+       (change-log-email-face, change-log-file-face)
+       (change-log-list-face, change-log-conditionals-face)
+       (change-log-function-face, change-log-acknowledgement-face):
+       New backward-compatibility aliases for renamed faces.
+       (change-log-font-lock-keywords): Use renamed change-log faces.
+
+       * cus-edit.el (custom-invalid, custom-rogue, custom-modified)
+       (custom-set, custom-changed, custom-saved, custom-button)
+       (custom-button-pressed, custom-documentation, custom-state)
+       (custom-comment, custom-comment-tag, custom-variable-tag)
+       (custom-variable-button, custom-face-tag, custom-group-tag-1)
+       (custom-group-tag): Remove "-face" suffix from face names.
+       (custom-magic-alist, custom-magic-value-create)
+       (custom-group-sample-face-get, custom-mode): Use renamed custom faces.
+       (custom-invalid-face, custom-rogue-face, custom-modified-face)
+       (custom-set-face, custom-changed-face, custom-saved-face)
+       (custom-button-face, custom-button-pressed-face)
+       (custom-documentation-face, custom-state-face)
+       (custom-comment-face, custom-comment-tag-face)
+       (custom-variable-tag-face, custom-variable-button-face)
+       (custom-face-tag-face, custom-group-tag-face-1)
+       (custom-group-tag-face):
+       New backward-compatibility aliases for renamed faces.
+
+       * wid-edit.el (widget-documentation, widget-button)
+       (widget-field, widget-single-line-field, widget-inactive)
+       (widget-button-pressed): "-face" suffix removed from face names.
+       (widget-documentation-face, widget-button-face)
+       (widget-field-face, widget-single-line-field-face)
+       (widget-inactive-face, widget-button-pressed-face):
+       New backward-compatibility aliases for renamed faces.
+       (widget-documentation-face, widget-button-face)
+       (widget-button-pressed-face, widget-specify-field)
+       (widget-specify-inactive): Use renamed widget faces.
+
+2005-06-10  Kenichi Handa  <handa@m17n.org>
+
+       * term/x-win.el (x-clipboard-yank): Remove condition-case
+       wrapping.
+
+2005-06-11  Kenichi Handa  <handa@m17n.org>
+
+       * add-log.el (change-log-font-lock-keywords): Make the regexp for
+       date lines stricter.
+
+2005-06-10  Zhang Wei  <id.brep@gmail.com>
+
+       * term/x-win.el (x-clipboard-yank): Use x-selection-value instead
+       of x-get-selection.
+
+2005-06-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * comint.el (comint-mode, comint-snapshot-last-prompt):
+       * frame.el (frame-current-scroll-bars):
+       * term.el (term-mode, term-check-proc, term-input-sender)
+       (term-simple-send, term-extract-string, term-word)
+       (term-match-partial-filename):
+       * window.el (window-current-scroll-bars):
+       * emulation/cua-base.el (cua-normal-cursor-color)
+       (cua-read-only-cursor-color, cua-overwrite-cursor-color)
+       (cua-global-mark-cursor-color):
+       * mail/undigest.el (rmail-forward-separator-regex):
+       Fix typos in docstrings.
+
+       * comint.el (comint-check-proc, make-comint-in-buffer)
+       (comint-source-default): Doc fixes.
+
+       * term.el (term-send-string): Improve argument/docstring consistency.
+
+2005-06-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * comint.el (comint-send-input): Bind `inhibit-read-only' around
+       call to `delete-region'.
+       (comint-mode-hook): Do not enable Font Lock by default.
+
+2005-06-09  Lute Kamstra  <lute@gnu.org>
+
+       * textmodes/ispell.el (ispell-menu-map-needed): flyspell-mode
+       could be void.
+
+2005-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/debug.el (debugger-will-be-back): New var.
+       (debug): Use it.
+       (debugger-step-through, debugger-continue, debugger-jump)
+       (debugger-return-value): Set it when needed.
+       (debugger-make-xrefs, debugger-frame, debugger-frame-clear):
+       Use inhibit-read-only.
+
+2005-06-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * window.el (shrink-window-if-larger-than-buffer)
+       (window-size-fixed): Fix typo in docstring.
+
+       * thumbs.el: Don't set `auto-image-file-mode'.  Do not create the
+       thumbnails directory on loading.
+       (thumbs-conversion-program): Use `eq' to check the system type,
+       not `equal'.
+       (thumbs-temp-dir): Initialize to `temporary-file-directory',
+       not "/tmp".  Fix docstring.
+       (thumbs-thumbsdir): New function to return the thumbnails
+       directory, creating it if needed.
+       (thumbs-cleanup-thumbsdir, thumbs-thumbname): Use it.
+       (thumbs-temp-file): Delete variable and make it into a function.
+       (thumbs-resize-image, thumbs-modify-image): Use it.
+       (thumbs-kill-buffer): Simplify.
+       (thumbs-gensym): Defalias or duplicate CL `gensym'.
+       (thumbs-resize-image, thumbs-resize-interactive): Fix typos in
+       docstrings.
+
+2005-06-09  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (save-match-data): Add RESEAT arg `evaporate' to
+       set-match-data to free markers in match-data.
+
+       * replace.el (replace-match-data): Pass RESEAT arg `t' to
+       match-data to unchain markers in match-data.
+
+2005-06-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/debug.el (debug): Don't iconify if we know we'll re-enter
+       the debugger immediately anyway.  Undo the 2005-06-06 change, rendered
+       unnecessary now.
+
+2005-06-08  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): If BODY is empty,
+       give the variable a doc string that doesn't say don't set it directly.
+
+       * textmodes/ispell.el (ispell-check-version):
+       Use match-string-no-properties.
+       (ispell-region, ispell-buffer-local-parsing, ispell-buffer-local-dict)
+       (ispell-buffer-local-words): Likewise.
+
+       * progmodes/make-mode.el (makefile-shell-face): Make this a no-op
+       except on terminals with enough colors to really display it.
+       (makefile-dependency-regex): Delete spurious `bb'.
+
+       * faces.el (escape-glyph): Use blue once again in last case.
+       (no-break-space): Redefine so that it isn't invisible on a tty.
+
+2005-06-08  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-read-file-name): Fallback to read-file-name on C-f
+       also when reading directory name.
+
+2005-06-08  Lute Kamstra  <lute@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-mode): Use define-minor-mode.
+       (flyspell-mode-line-string): Remove autoload cookie.
+       (flyspell-mode): Remove defvar.
+
+2005-06-07  Lute Kamstra  <lute@gnu.org>
+
+       * textmodes/org.el (org-run-mode-hooks): New function.
+       (org-agenda-mode): Use it.
+
+2005-06-07  David McCabe  <davemccabe@gmail.com>  (tiny change)
+
+       * emacs-lisp/lisp-mode.el (defstruct): Set `doc-string-elt' property.
+
+2005-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * international/iso-cvt.el (iso-sgml2iso-trans-tab): Add NBSP.
+
+2005-06-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * font-lock.el (font-lock-add-keywords): Doc fix.
+
+2005-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/tex-mode.el (tex-guess-mode): Add RequirePackage.
+       (tex-compile-default): In the absence of any history, use the order in
+       tex-compile-alist to choose the preferred command.
+       (tex-compile-commands): Reorder a bit.
+
+       * textmodes/flyspell.el (flyspell-auto-correct-binding)
+       (flyspell-incorrect-face, flyspell-duplicate-face):
+       Use (X)Emacs-agnostic code.
+       (flyspell-mode-map): Don't overwrite at each load.  Remove code
+       redundant with the subsequent add-minor-mode.  Merge Emacs and
+       XEmacs code.
+       (flyspell-word): Minor simplification.
+       (flyspell-math-tex-command-p): Quieten the byte-compiler.
+       (flyspell-external-point-words): Remove unused vars `size' and `start'.
+       (flyspell-do-correct): Rename from flyspell-xemacs-correct.
+       Merge the corresponding Emacs code.
+       (flyspell-correct-word, flyspell-xemacs-popup):
+       Use flyspell-do-correct.
+
+       * emacs-lisp/debug.el (debug): Don't bury the buffer unless it's in
+       a dedicated window.
+
+       * international/latexenc.el (latexenc-find-file-coding-system):
+       Undo part of last patch, to turn off a compiler warning.
+
+2005-06-06  Juri Linkov  <juri@jurta.org>
+
+       * tmm.el (tmm-inactive, tmm-remove-inactive-mouse-face):
+       Rename `tmm-inactive-face' to `tmm-inactive'.
+
+2005-06-06  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * iswitchb.el: Rename faces.
+
+2005-06-06  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-rectangle, cua-rectangle-noselect)
+       (cua-global-mark): Remove -face suffix from face names.
+
+       * emulation/cua-gmrk.el (cua--init-global-mark):
+       Remove cua-global-mark face setup.
+
+2005-06-06  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/make-mode.el (makefile-dependency-regex): Handle whitespace
+       just like other allowed characters.
+       (makefile-match-dependency): Exclude leading and training whitespace
+       from the range of regexp subexp 1.
+       (makefile-macroassign-regex): Don't try to match the body,
+       just the name of the macro being defined.
+
+       * info.el (Info-read-node-name-2): New function.
+       (Info-read-node-name-1): Use that.
+       Add a completion-base-size-function property.
+
+       * simple.el (completion-setup-function): Look for
+       completion-base-size-function property of minibuffer-completion-table.
+
+       * files.el (locate-file-completion): Doc fix.
+
+       * printing.el: Don't call pr-update-menus; user must do that.
+
+       * emacs-lisp/debug.el (debugger-window): New variable.
+       (debug): Use debugger-window if it is set and still alive.
+       Record debugger-window for next entry.
+
+       * mail/supercite.el (sc-mail-glom-frame): Mark as risky.
+
+2005-06-06  Matthias F\e,Av\e(Brste  <slashdevslashnull@gmx.net>
+
+       * files.el (hack-local-variables-confirm): New arg FLAG-TO-CHECK.
+       (hack-one-local-variable, hack-local-variables)
+       (hack-local-variables-prop-line): Pass that arg.
+
+2005-06-06  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-first-match, ido-only-match, ido-subdir)
+       (ido-indicator): Remove -face suffix from face names.
+
+2005-06-06  Juri Linkov  <juri@jurta.org>
+
+       * font-lock.el (font-lock-regexp-backslash)
+       (font-lock-regexp-backslash-construct): New faces.
+       (lisp-font-lock-keywords-2): Use new faces.  Match `?:' only
+       after `('.  Add `while-no-input' to control structures.
+
+       * faces.el (no-break-space, shadow): New faces.
+       (escape-glyph): Use less loud colors pink2 and red4.
+
+       * diff-mode.el (diff-context-face)
+       * dired.el (dired-ignored)
+       * rfn-eshadow.el (file-name-shadow)
+       * tmm.el (tmm-inactive-face): Inherit from `shadow' face.
+
+       * info.el (Info-title-1-face): Use green instead of yellow because
+       bold yellow is not readable on light backgrounds.
+
+       * progmodes/compile.el (compilation-start): Move `erase-buffer' up
+       before selecting the desired mode to not spend time fontifying
+       old contents.
+
+2005-06-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * thumbs.el (thumbs-thumbsdir-max-size, thumbs-image-resizing-step)
+       (thumbs-thumbsdir-auto-clean): Fix typos in docstrings.
+
+       * ps-print.el (ps-default-fg, ps-default-bg):
+       Fix typos in docstrings.
+
+       * isearchb.el (isearchb): Don't pass a spurious second argument to
+       `iswitchb-completions'.
+
+2005-06-05  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-info-locals-handler): Use window point
+       to preserve point.
+       (gdb-find-file-hook): Add doc string.
+
+       * progmodes/gud.el (gdb, gud-menu-map): Add command to evaluate
+       C dereferenced pointer expression.
+       (gud-tool-bar-map): Put it on the tool bar.  Re-order icons.
+
+       * toolbar/gud-pstar.xpm, toolbar/gud-pstar.pbm: New files.
+
+       * toolbar/gud-break.xpm, toolbar/gud-cont.xpm, toolbar/gud-down.xpm
+       * toolbar/gud-finish.xpm, toolbar/gud-ni.xpm, toolbar/gud-n.xpm
+       * toolbar/gud-print.xpm, toolbar/gud-remove.xpm, toolbar/gud-run.xpm
+       * toolbar/gud-si.xpm, toolbar/gud-s.xpm, toolbar/gud-until.xpm
+       * toolbar/gud-up.xpm, toolbar/gud-watch.xpm:
+       Make background transparent.
+
+2005-06-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * font-lock.el (font-lock-add-keywords): Doc fix.  Comment change.
+       (font-lock-remove-keywords): Doc fix.
+       (font-lock-mode-major-mode): Compiler defvar.
+       (font-lock-set-defaults): Use `font-lock-mode-major-mode'.
+
+       * font-core.el (font-lock-mode-major-mode): Compiler defvar.
+       (font-lock-mode): Update `font-lock-mode-major-mode'.
+       (font-lock-set-defaults): Compiler defvar.
+       (font-lock-default-function): Take `font-lock-mode-major-mode'
+       into account.
+
+       * emacs-lisp/easy-mmode.el (define-global-minor-mode): Make it
+       keep track of which major mode it enabled the minor mode for.
+       Use find-file-hook again.  Update docstring.
+
+       * simple.el (eval-expression-print-level)
+       (eval-expression-print-length, eval-expression-debug-on-error):
+       Doc fixes.
+
+2005-06-04  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * iswitchb.el (iswitchb-single-match-face)
+       (iswitchb-current-match-face, iswitchb-virtual-matches-face)
+       (iswitchb-invalid-regexp-face): New faces.
+       (iswitchb-completions): Use them.
+       (iswitchb-use-faces): Rename from iswitchb-use-fonts, which is
+       now marked as an obsolete alias.
+       (iswitchb-read-buffer): Remove check for bound font variables.
+       (iswitchb-invalid-regexp): New free variable.
+       (iswitchb-get-matched-buffers): Catch invalid-regexp errors and
+       set iswitchb-invalid-regexp.
+       (iswitchb, iswitchb-complete, iswitchb-completions): Deal with
+       invalid regexps.
+       (iswitchb-completions): Add check for complete match when entering
+       a regexp.
+       (iswitchb-completions): Remove require-match argument.
+       (iswitchb-exhibit): Fix caller.
+       (iswitchb-common-match-inserted): New variable.
+       (iswitchb-complete, iswitchb-completion-help): Use it.
+
+2005-06-04  David Reitter  <david.reitter@gmail.com>  (tiny change)
+
+       * url-http.el (url-http-chunked-encoding-after-change-function):
+       Use `url-http-debug' instead of `message'.
+
+2005-06-04  Thierry Emery  <thierry.emery@free.fr>  (tiny change)
+
+       * url-http.el (url-http-parse-headers): Pass redirected URL as a
+       callback argument.
+
+2005-06-04  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move): Only call sit-for when moving backwards.
+
+       * ido.el (ido-make-merged-file-list-1): New defun split from
+       ido-make-merged-file-list.
+       (ido-make-merged-file-list): Bind throw-on-input around call to
+       ido-make-merged-file-list-1.  Return input-pending-p if
+       interrupted by more input available.
+       (ido-read-internal): Handle input-pending-p return value from
+       ido-make-merged-file-list.
+
+2005-06-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/flyspell.el (flyspell-check-word-p): Simplify silly
+       compatibility code.
+
+       * international/latexenc.el (latexenc-find-file-coding-system):
+       Don't inherit the EOL part of the coding-system from the
+       tex-main buffer.  Fit within 80 columns.
+
+2005-06-03  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * tmm.el (tmm-inactive-face): New face.
+       (tmm-remove-inactive-mouse-face): New function.
+       (tmm-prompt, tmm-add-one-shortcut)
+       (tmm-add-prompt, tmm-get-keymap): Make active menu items visible
+       but not selectable.
+
+2005-06-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * faces.el (face-equal): Improve argument/docstring consistency.
+
+2005-06-03  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * progmodes/make-mode.el (makefile-targets-face)
+       (makefile-shell-face, makefile-makepp-perl-face): Add :version.
+       (makefile-bsdmake-dependency-regex)
+       (makefile-makepp-rule-action-regex)
+       (makefile-bsdmake-rule-action-regex): New constants.
+       (makefile-makepp-mode, makefile-bsdmake-mode): Use them.
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist):
+       Allow (...) within `...' for makepp messages.
+
+2005-06-03  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff-diff.el (ediff-same-contents): Eliminate CL-type functions.
+
+       * ediff-mult.el (ediff-intersect-directories): Make sure that ".." and
+       "." files are deleted from all file lists before comparison.
+
+       * viper-keym.el (viper-toggle-key, viper-quoted-insert-key)
+       (viper-ESC-key): Made them customizable.
+
+       * viper.el (viper-non-hook-settings): Fix the names of defadvices.
+
+2005-06-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * autorevert.el (auto-revert-buffers): Use save-match-data.
+
+2005-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/easymenu.el (easy-menu-return-item): Quick fix to find
+       menu items with a nil command binding.
+
+2005-06-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/cl-macs.el (defsetf):
+       Improve argument/docstring consistency.
+
+       * faces.el (list-faces-display): Improve the formatting by
+       computing the maximum length required for any face-name (reworked
+       patch of 1999-01-11, accidentally deleted on 1999-07-21).
+       (internal-find-face): Remove redundant info in docstring.
+
+2005-06-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-1)
+       (gdb-info-breakpoints-custom, gdb-delete-breakpoint)
+       (gdb-goto-breakpoint, gdb-source-info, gdb-get-location)
+       (gdb-assembler-custom): Improve regexps.
+       (def-gdb-auto-update-handler): Use window point to preserve point.
+
+2005-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * thumbs.el (thumbs-mode): Fix misuse of make-variable-buffer-local.
+
+2005-05-31  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (calc-embedded-word): Change argument passed
+       to calc-embedded.
+       (calc-embedded-make-info): Have plain prefix argument select
+       entire line.
+
+2005-05-31  Juanma Barranquero  <lekktu@gmail.com>
+
+       * faces.el (list-faces-display): Signal error if passed a regexp
+       that matches no face name.
+
+       * simple.el (filter-buffer-substring): Fix typo in docstring.
+
+2005-05-31  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/vhdl-mode.el (vhdl-fill-region): Test ARG, not INTERACTIVE.
+       (vhdl-emacs-21): Doc fix.
+       (vhdl-mode): Unconditionally set comment-padding.
+       (vhdl-fixup-whitespace-region): Insert spaces only where
+       there are none.
+       (vhdl-statistics-buffer): Make the Emacs 21 behavior universal.
+
+2005-05-30  John Wiegley  <johnw@newartisans.com>
+
+       * eshell/em-cmpl.el, eshell/em-dirs.el, eshell/em-glob.el
+       * eshell/em-unix.el, eshell/esh-ext.el, eshell/esh-io.el
+       * eshell/esh-util.el, eshell/esh-var.el: Change all uses of
+       `directory-sep-char' to ?/, and all uses of `string-to-int' to
+       `string-to-number'.
+
+2005-05-30  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-bug-address): Fix docstring.
+       (calc-window-hook, calc-trail-window-hook): New variables.
+       (calc-trail-display): Restore use of calc-trail-window-hook.
+       (calc): Restore use of calc-window-hook.
+
+2005-05-31  Masatake YAMATO  <jet@gyve.org>
+
+       * emacs-lisp/find-func.el (find-function-noselect): Handle subroutines.
+
+       * help-fns.el (help-C-file-name): Add autoload mark for
+       `find-function-noselect'.
+
+2005-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/tex-mode.el (tex-compile-commands, tex-compile)
+       (tex-start-tex): Undo all but the last part of the 2005-05-28 change.
+
+2005-05-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/diary-lib.el (mark-included-diary-files): Only kill
+       included diary buffer if it was not already being visited.
+       Reported by Stephen Berman <Stephen.Berman@gmx.net>.
+
+       * calendar/icalendar.el (top-level): Do not require appt.
+
+       * mail/supercite.el (sc-select-attribution): Only use a list
+       element from sc-attrib-selection-list if it returns a string.
+       Reported by Davide G. M. Salvetti <salve@debian.org>.
+
+2005-05-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * thumbs.el (thumbs-thumbname): The resulting thumbname now
+       includes a hash value to improve its uniqueness, and has a ".jpg"
+       extension.  Also, it is now a valid filename on all systems.
+       (thumbs-make-thumb): Use `let', not `let*'.
+       (thumbs-show-thumbs-list): Check for JPEG availability.
+
+2005-05-30  Richard M. Stallman  <rms@gnu.org>
+
+       * filesets.el (filesets-menu-ensure-use-cached):
+       Prevent warning when emacs-version>= is undefined.
+
+       * printing.el (pr-interactive-n-up): Use string-to-number.
+
+       * emulation/tpu-mapper.el: Use eval-buffer, not eval-current-buffer.
+
+       * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
+       Warn only when name to be defined is quoted.
+
+2005-05-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-toggle-breakpoint):
+       Make regexp more robust.
+       (gdb-display-assembler-buffer, gdb-frame-assembler-buffer):
+       Force regeneration of disassembly.
+
+2005-05-29  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-user-invocation): Check if
+       calc-invocation-macro is non-nil.
+
+2005-05-29  Juri Linkov  <juri@jurta.org>
+
+       * add-log.el (change-log-font-lock-keywords):
+       Add `+' to e-mail regexp to accept mail address with keywords.
+
+       * man.el (Man-name-regexp): Add `:' to accept qualified names.
+
+2005-05-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * progmodes/inf-lisp.el (inferior-lisp-mode): Use delay-mode-hooks.
+
+       * ielm.el (inferior-emacs-lisp-mode): Ditto.
+
+2005-05-29  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-auto-correct-previous-word):
+       Undo the change that moves to end of the current word.
+
+2005-05-29  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-memory-set-repeat-count):
+       Throw error when count <= 0 to ensure input is a number.
+       (gdb-read-memory-custom): Pick up address from buffer.
+       (gdb-memory-mode): Allow user to increment and decrement
+       memory address from header line.
+
+2005-05-29  Richard M. Stallman  <rms@gnu.org>
+
+       * flyspell.el (flyspell-version): Function deleted.
+       (flyspell-auto-correct-previous-hook): Doc fix.
+
+       * jit-lock.el (jit-lock-function, jit-lock-after-change):
+       Do nothing if memory is full.
+
+       * font-lock.el (font-lock-fontify-syntactically-region):
+       Pass t for GREEDY to looking-back.
+
+       * saveplace.el (save-place-alist-to-file): Write the file
+       using write-region.
+
+       * subr.el (looking-back): New argument GREEDY.
+
+       * progmodes/compile.el (compilation-start): Set the mode
+       before inserting the initial text.
+
+       * progmodes/which-func.el (which-func-update-1): Turn the mode
+       off in case of error by setting which-func-mode.
+
+2005-05-29  Peter Heslin  <p.j.heslin@durham.ac.uk>  (tiny change)
+
+       * flyspell.el (flyspell-auto-correct-previous-word):
+       Narrow down to what's on the screen, and recenter overlays
+       at the end of the next word.
+
+2005-05-29  Manuel Serrano  <Manuel.Serrano@sophia.inria.fr>
+
+       * flyspell.el (flyspell-emacs, flyspell-use-local-map): Vars moved up.
+       (flyspell-default-delayed-commands): Add backward-delete-char-untabify.
+       (flyspell-abbrev-p): Default to nil.
+       (flyspell-use-global-abbrev-table-p): Doc fix.
+       (flyspell-large-region): Allow nil as value.
+       (flyspell-use-meta-tab, flyspell-auto-correct-binding): New variables.
+
+       (mail-mode-flyspell-verify): More robust handling
+       of `mail-header-separator'.  More efficient signature detection.
+       Allow for regexp metacharacters in message-header-separator.
+       Adding `To' not to be checked in mail-mode-flyspell-verify.
+
+       (flyspell-prog-mode): Run flyspell-prog-mode-hook.
+       (flyspell-mouse-map): Bind M-TAB only if flyspell-use-meta-tab.
+       Bind flyspell-auto-correct-binding.
+       Bind C-. and C-, .
+       (flyspell-mode-map): Likewise.
+       (flyspell-mode): Doc fix.
+       (flyspell-accept-buffer-local-defs): Preserve current buffer.
+       (flyspell-mode-on): Bind flyspell-mouse-map and flyspell-mode-map.
+       (flyspell-word-cache-result): New var, always local.
+       (flyspell-check-pre-word-p): Doc fix.
+       (flyspell-check-changed-word-p): Handle spc like newline.
+       (flyspell-post-command-hook): Set flyspell-word-cache-result.
+       (flyspell-word-search-backward, flyspell-word-search-forward):
+       New functions.
+       (flyspell-word): Return t if nothing to check.
+       When parsing TeX code, check for after } or \.
+       Use flyspell-word-search-backward to find previous word.
+       Return nil if duplicated word.
+       For word already checked, return same value as last time.
+       Set flyspell-word-cache-result after checking.
+       Don't clobber the return value.
+       (flyspell-get-word): Major rewrite.
+       (flyspell-external-point-words): New locals pword, pcount.
+       Fix size used in progress message.
+       Find the proper corresponding word in flyspell-large-region-buffer.
+       (flyspell-region): Check for flyspell-large-region = nil.
+       (flyspell-highlight-incorrect-region): Clean up overlays in region.
+       (flyspell-auto-correct-word): Check that WORD is a cons.
+       (flyspell-correct-word): Likewise.
+
+2005-05-29  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * progmodes/make-mode.el (makefile-rule-action-regex)
+       (makefile-macroassign-regex, makefile-makepp-mode)
+       (makefile-bsdmake-mode): Continuation lines may be empty.
+       Reported by Joshua Varner.
+       (makefile-makepp-font-lock-keywords): Add $(stem).
+
+2005-05-28  Karl Berry  <karl@gnu.org>
+
+       * textmodes/tex-mode.el: Now that tex-send-command calls
+       shell-quote-argument (2005-03-31 change), remove all calls to
+       shell-quote-argument; they all end up invoking tex-send-command.
+       The double quoting loses on filenames with non-safe characters,
+       such as "@".  Reported by Frederik Fouvry.
+
+2005-05-29  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-assembler-custom): Be more careful
+       about preserving point.
+
+2005-05-27  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-misc.el (calc-info-goto-node): Use info instead of
+       Info-goto-node.
+
+       * calc/calc-embed.el (calc-embed-arg): New variable.
+       (calc-do-embedded-activate, calc-embedded-activate-formula)
+       (calc-embedded-edit, calc-do-embedded-activate): Replace undeclared
+       variable by new variable.
+       (calc-embedded-make-info): Replace undeclared variable by new
+       variable.  When selecting region with positive prefix
+       argument, use end of previous line instead of beginning of line.
+
+       * calc/calc-aent.el (calc-arg-values): Declare it.
+
+       * calc/calc-ext.el (calc-help-map, calc-alg-map, calc-alg-esc-map):
+       Declare them.
+
+       * calc/calc-stuff.el (math-decls-cache-tag): Declare it.
+
+       * calc/calc.el (calc-alg-map): Declare it.
+
+       * calc/calcalg2.el (math-decls-cache, math-decls-all): Declare them.
+
+2005-05-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-all-registers): New variable.
+       (gdb-registers-buffer, toggle-gdb-all-registers):
+       Toggle display of floating point registers.
+       (gdb-registers-mode-map): Bind SPC to toggle-gdb-all-registers.
+
+       * progmodes/gud.el (gud-goto-info): Use info.  Don't use require.
+       (toggle-gud-tooltip-dereference):
+       Rename from gud-toggle-tooltip-dereference.
+
+2005-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * info.el (Info-goto-node): Revert autoload addition (2004-06-12).
+
+2005-05-27  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-prog.el (calc-kbd-report): Remove.
+       (calc-kbd-query): Rewrite.
+
+2005-05-27  Juanma Barranquero  <lekktu@gmail.com>
+
+       * image.el (image-library-alist): Move to image.c.
+       (image-type-available-p): Doc fix.
+
+2005-05-27  Lute Kamstra  <lute@gnu.org>
+
+       * calc/calc.el (calc):
+       * outline.el (outline-1, outline-2, outline-3, outline-4)
+       (outline-5, outline-6, outline-7, outline-8):
+       * textmodes/dns-mode.el (dns-mode):
+       * textmodes/sgml-mode.el (sgml-namespace-face):
+       * textmodes/tex-mode.el (superscript, subscript, tex-math-face)
+       (tex-verbatim-face, tex-use-reftex):
+       * textmodes/texinfo.el (texinfo-heading-face):
+       Specify customization group.
+
+       * longlines.el: Don't require easy-mmode.
+       (longlines-visible-face): Specify customization group.
+
+2005-05-27  Kenichi Handa  <handa@m17n.org>
+
+       * language/cyrillic.el: Add cyrillic-iso8859-5 characters in the
+       encoding table of windows-1251.
+
+       * international/ucs-tables.el (ucs-set-table-for-input):
+       If translation-table-for-input of a coding system is a symbol, get
+       its translation-table property.
+
+       * international/code-pages.el: Don't register a coding system into
+       non-iso-charset-alist more than once.
+       (cp-make-coding-system): Likewise.
+
+2005-05-26  John Wiegley  <johnw@newartisans.com>
+
+       * eshell/esh-cmd.el (eshell-eval-command): If the return value of
+       `eshell-resume-eval' is wrapped in a list, it indicates that the
+       command was run asynchronously.  In that case, unwrap the value
+       before checking the delimiter value.
+
+       * eshell/em-cmpl.el (eshell-complete-parse-arguments): If the
+       character before a space at the end of a line is \, assume the space
+       is part of the last argument rather than a final argument separator.
+
+       * eshell/esh-io.el (eshell-get-target): If `eshell-buffer-shorthand'
+       is in use, and the target is `t' or `nil' (which are the most common
+       values), don't assume that the symbol target is a buffer.
+
+2005-05-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * calendar/calendar.el (calendar-mode-line-format):
+       Use mode-line-highlight as mouse-face.
+
+       * time.el (display-time-string-forms, display-time-update):
+       Use mode-line-highlight as mouse-face.
+
+2005-05-26  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-language-alist): Remove extra defvar.
+
+2005-05-26  Lute Kamstra  <lute@gnu.org>
+
+       * arc-mode.el (archive-mode):
+       * bookmark.el (bookmark-read-annotation-mode)
+       (bookmark-edit-annotation-mode, bookmark-bmenu-mode):
+       * bs.el (bs-mode):
+       * calc/calc-yank.el (calc-edit-mode):
+       * calc/calc.el (calc-mode, calc-trail-mode):
+       * calculator.el (calculator-mode):
+       * chistory.el (command-history-mode):
+       * comint.el:
+       * cus-edit.el (custom-mode):
+       * descr-text.el (describe-text-mode):
+       * ebuff-menu.el (Electric-buffer-menu-mode):
+       * ediff-util.el (ediff-mode):
+       * emacs-lisp/re-builder.el (reb-mode):
+       * emulation/vi.el (vi-mode-setup):
+       * emulation/ws-mode.el (wordstar-mode):
+       * eshell/esh-mode.el (eshell-mode):
+       * forms.el (forms-mode):
+       * help-mode.el (help-mode):
+       * hexl.el (hexl-mode):
+       * ibuffer.el (ibuffer-mode):
+       * ielm.el (inferior-emacs-lisp-mode):
+       * info.el (Info-mode, Info-edit-mode):
+       * international/swedish.el:
+       * ledit.el (ledit-from-lisp-mode):
+       * locate.el (locate-mode):
+       * mail/rmail.el (rmail-mode):
+       * mail/rmailedit.el (rmail-edit-mode):
+       * mail/rmailsum.el (rmail-summary-mode):
+       * mail/supercite.el (sc-electric-mode):
+       * net/eudc.el (eudc-mode):
+       * net/quickurl.el (quickurl-list-mode):
+       * net/snmp-mode.el (snmp-mode, snmpv2-mode):
+       * obsolete/ooutline.el (outline-mode):
+       * obsolete/options.el (Edit-options-mode):
+       * obsolete/rnews.el (news-mode):
+       * obsolete/rnewspost.el (news-reply-mode):
+       * play/5x5.el (5x5-mode):
+       * play/decipher.el (decipher-mode, decipher-stats-mode):
+       * play/gomoku.el (gomoku-mode):
+       * play/snake.el (snake-mode):
+       * play/solitaire.el (solitaire-mode):
+       * play/tetris.el (tetris-mode):
+       * progmodes/ada-mode.el (ada-mode):
+       * progmodes/antlr-mode.el (antlr-mode):
+       * progmodes/autoconf.el (autoconf-mode):
+       * progmodes/dcl-mode.el (dcl-mode):
+       * progmodes/delphi.el (delphi-mode):
+       * progmodes/ebrowse.el (ebrowse-tree-mode)
+       (ebrowse-electric-list-mode, ebrowse-member-mode)
+       (ebrowse-electric-position-mode):
+       * progmodes/f90.el (f90-mode):
+       * progmodes/fortran.el (fortran-mode):
+       * progmodes/icon.el (icon-mode):
+       * progmodes/idlw-help.el (idlwave-help-mode):
+       * progmodes/idlw-shell.el (idlwave-shell-mode):
+       * progmodes/idlwave.el (idlwave-mode):
+       * progmodes/inf-lisp.el (inferior-lisp-mode):
+       * progmodes/m4-mode.el (m4-mode):
+       * progmodes/meta-mode.el (metafont-mode, metapost-mode):
+       * progmodes/modula2.el (modula-2-mode):
+       * progmodes/octave-inf.el (inferior-octave-mode):
+       * progmodes/octave-mod.el (octave-mode):
+       * progmodes/pascal.el (pascal-mode):
+       * progmodes/sh-script.el (sh-mode):
+       * progmodes/sql.el (sql-mode, sql-interactive-mode):
+       * progmodes/vhdl-mode.el (vhdl-mode):
+       * progmodes/xscheme.el (scheme-interaction-mode):
+       * replace.el (occur-mode):
+       * ses.el (ses-mode):
+       * simple.el (completion-list-mode):
+       * skeleton.el:
+       * speedbar.el (speedbar-mode):
+       * term.el (term-mode):
+       * terminal.el (terminal-edit-mode):
+       * textmodes/reftex-index.el (reftex-index-mode)
+       (reftex-index-phrases-mode):
+       * textmodes/reftex-sel.el (reftex-select-label-mode)
+       (reftex-select-bib-mode):
+       * textmodes/reftex-toc.el (reftex-toc-mode):
+       * wdired.el (wdired-change-to-wdired-mode):
+       * wid-browse.el (widget-browse-mode):
+       Use run-mode-hooks.
+
+       * array.el (array-mode):
+       * calendar/todo-mode.el (todo-mode):
+       * man.el (Man-mode):
+       * play/landmark.el (lm-mode):
+       * play/mpuz.el (mpuz-mode):
+       Use kill-all-local-variables and run-mode-hooks.
+
+       * subr.el (delay-mode-hooks): Specify indentation.
+
+2005-05-26  Mark A. Hershberger  <mah@everybody.org>
+
+       * xml.el (xml-substitute-special): Don't die for undefined xml
+       entities.
+
+2005-05-26  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-prog.el (calc-user-define-edit): Don't find substring
+       of nil.
+
+2005-05-27  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-frame-address):
+       Rename from gdb-current-address.
+       (gdb-previous-frame-address): Rename from gdb-previous-address.
+       (gdb-selected-frame): Rename from gdb-current-frame.
+       (gdb-get-selected-frame): Rename from gdb-get-current-frame.
+       (gdb-frame-number): Rename from gdb-current-stack-level.
+       (gdb-ann3): Match new mode-name for disassembly buffer.
+       Extend initialization of variables.
+       (gdb-post-prompt): Update disassembly from gdb-frame-handler.
+       (gdb-memory-mode): Use mouse-face in header line.
+       (gdb-assembler-buffer-name): Call it disassembly and give frame
+       in mode line.
+       (gdb-source-spec-regexp, gdb-assembler-custom)
+       (gdb-invalidate-assembler, gdb-frame-handler):
+       Make robust to leading zeroes in address format.
+
+2005-05-26  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-mode): Use `define-derived-mode' to
+       define `org-mode'.
+       (org-agenda-mode): Use `run-mode-hooks' instead of `run-hooks'.
+
+2005-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * log-edit.el (log-edit-changelog-entries): Distinguish between
+       filenames like xfns.c and fns.c.
+
+2005-05-25  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buff-menu.el (Buffer-menu-revert-function): Improve handling of
+       point after reverting.
+       (Buffer-menu-make-sort-button): Handle the case where
+       `Buffer-menu-use-header-line' is nil.
+
+2005-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * vms-patch.el (vms-magic-right-square-brace, vms-magic-colon):
+       New funcs.  In minibuffer-local-completion-map bind `]', `/'
+       and `:' to them.
+
+2005-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * startup.el (normal-top-level): Allow modification of load-path while
+       we're iterating over it.
+
+2005-05-25  Juanma Barranquero  <lekktu@gmail.com>
+
+       * thumbs.el (thumbs-thumbsdir-max-size, thumbs-temp-file)
+       (thumbs-cleanup-thumbsdir, thumbs-call-convert)
+       (thumbs-resize-interactive, thumbs-insert-image)
+       (thumbs-insert-thumb, thumbs-dired-show-marked)
+       (thumbs-find-image-at-point, thumbs-delete-images)
+       (thumbs-rename-images, thumbs-next-image, thumbs-dired-setroot)
+       (thumbs-increment-image-size, thumbs-decrement-image-size):
+       Fix typos in docstrings.
+
+2005-05-24  Andre Spiegel  <spiegel@gnu.org>
+
+       * progmodes/cperl-mode.el (cperl-vc-header-alist): Obsolete.
+       (cperl-vc-rcs-header, cperl-vc-sccs-header): New user options.
+       (cperl-mode): Use them.
+
+2005-05-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * window.el (quit-window, shrink-window-if-larger-than-buffer):
+       Doc fixes.
+
+2005-05-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-inferior-io-mode-map):
+       Bind C-d to gdb-inferior-io-eof.
+
+       * dired.el (dired-dnd-popup-notice): Use message-box.
+
+2005-05-23  Masatake YAMATO  <jet@gyve.org>
+
+       * bindings.el (mode-line-major-mode-keymap):
+       Bind [mode-line down-mouse-1] to `mouse-major-mode-menu'.
+
+       * faces.el (mode-line-highlight): New face.
+
+       * ruler-mode.el (ruler-mode-ruler): Use mode-line-highlight
+       as mouse-face.
+
+       * bindings.el (top-level, help-echo, mode-line-modified)
+       (mode-line-mule-info, mode-line-eol-desc): Use mode-line-highlight
+       as mouse-face.
+
+2005-05-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * progmodes/cc-engine.el (c-guess-basic-syntax):
+       Remove spurious call to `zerop'.
+
+       * emacs-lisp/cl.el (acons, pairlis): Add docstring.
+
+2005-05-23  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+       CC Mode update to 5.30.10:
+
+       * cc-fonts.el (c-font-lock-declarators): Fix bug where the point
+       could go past the limit in decoration level 2, thereby causing
+       errors during interactive fontification.
+
+       * cc-mode.el (c-make-inherited-keymap): Fix cc-bytecomp bug when
+       the file is evaluated interactively.
+
+       * cc-engine.el (c-guess-basic-syntax): Handle operator
+       declarations somewhat better in C++.
+
+       * cc-styles.el, cc-mode.el (c-run-mode-hooks): New helper macro to
+       make use of `run-mode-hooks' which has been added in Emacs 21.1.
+       (c-mode, c++-mode, objc-mode, java-mode, idl-mode, pike-mode)
+       (awk-mode): Use it.
+       (make-local-hook): Suppress warning about obsoleteness.
+
+       * cc-engine.el, cc-align.el, cc-cmds.el
+       (c-append-backslashes-forward, c-delete-backslashes-forward)
+       (c-find-decl-spots, c-semi&comma-no-newlines-before-nonblanks):
+       Compensate for return value from `forward-line' when it has moved
+       but not to a different line due to eob.
+
+       * cc-engine.el (c-guess-basic-syntax): Fix anchoring in
+       `objc-method-intro' and `objc-method-args-cont'.
+
+2005-05-23  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+       CC Mode update to 5.30.10:
+
+       * cc-mode.el, cc-engine.el, cc-align.el: Change the FSF's address
+       in the copyright statement.  Incidentally, change "along with GNU
+       Emacs" to "along with this program" where it occurs.
+
+       * cc-mode.el: Add a fourth parameter `t' to the awk-mode autoload,
+       so that it is interactive, hence can be found by M-x awk-mode
+       whilst cc-mode is yet to be loaded.  Reported by Glenn Morris
+       <gmorris+emacs@ast.cam.ac.uk>.
+
+       * cc-awk.el: Add character classes (e.g. "[:alpha:]") into AWK
+       Mode's regexps.
+
+2005-05-23  Kevin Ryde  <user42@zip.com.au>
+
+       * cc-align.el (c-lineup-argcont): Ignore conses for {} pairs from
+       c-parse-state, to avoid a lisp error (on bad code).
+
+2005-05-23  Lute Kamstra  <lute@gnu.org>
+
+       * subr.el (font-lock-defaults): Remove defvar as it's already
+       defined in font-core.el.
+
+       * font-lock.el (font-lock-beginning-of-syntax-function): Fix docstring.
+
+2005-05-23  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-info-locals-handler): Make regexps
+       more general and work when GDB variable "print pretty" is on,
+       as with Emacs, for example.
+
+2005-05-22  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * font-core.el: Update comment.
+
+       * emacs-lisp/easy-mmode.el (define-global-minor-mode):
+       Use `after-change-major-mode-hook' instead of `find-file-hook'.
+
+       * buff-menu.el (Buffer-menu-mode): Use `run-mode-hooks'.
+
+2005-05-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * simple.el (yank, yank-pop): Mention `yank-excluded-properties'
+       and `yank-handler' in the doc strings.
+
+2005-05-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/cl.el (eql): Remove.  It's a builtin already.
+
+2005-05-22  Richard M. Stallman  <rms@gnu.org>
+
+       * help.el (describe-key): Move print-help-return-message call
+       out of conditional.
+
+       * progmodes/etags.el (list-tags): Use with-no-warnings.
+
+       * mail/smtpmail.el (smtpmail-open-stream): Use with-no-warnings.
+       (smtpmail-send-queued-mail): Avoid beginning-of-buffer.
+       (starttls-extra-args, starttls-extra-arguments): Add defvars.
+
+       * mail/mailalias.el (mail-get-names): Avoid beginning-of-buffer.
+
+       * language/viet-util.el (viet-viscii-nonascii-translation-table):
+       Add defvar.
+
+       * emulation/viper-ex.el (viper-ex-work-buf, viper-ex-print-buf):
+       Use defvar, not defconst.
+
+       * hexl.el (hexl-follow-line): Use with-no-warnings.
+
+       * emulation/tpu-extras.el: Use write-file-functions instead of
+       write-file-hooks.
+
+       * dired.el (dired-font-lock-keywords): Fontify files with junk
+       extensions even if marked by -F.
+
+2005-05-22  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/cl.el (pushnew, cl-macroexpand, floatp-safe, plusp)
+       (minusp, oddp, evenp, mapcar*, list*, copy-list, adjoin, subst):
+       * emacs-lisp/cl-extra.el (coerce, map, maplist, cl-mapc, mapl)
+       (mapcan, mapcon, some, every, notany, notevery, signum, isqrt)
+       (concatenate, list-length, get*, getf, cl-remprop):
+       * emacs-lisp/cl-macs.el (function*, case, ecase, typecase)
+       (etypecase, progv, lexical-let, lexical-let*)
+       (multiple-value-bind, multiple-value-setq, shiftf):
+       Improve argument/docstring consistency.
+
+       * subr.el (focus-frame, unfocus-frame): Revert deletion on 2005-05-01.
+
+2005-05-22  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc-cvs.el (vc-cvs-checkout-model): Handle the case where FILE
+       doesn't exist.
+
+       * vc.el (vc-trunk-p): Add autoload cookie.  The function is used in
+       vc-rcs.el when vc-mistrust-permissions is t, which is not the default.
+
+2005-05-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * emacs-lisp/bytecomp.el: Remove make-obsolete-variable for
+       already deleted variables: auto-fill-hook, blink-paren-hook,
+       lisp-indent-hook, inhibit-local-variables, unread-command-event,
+       suspend-hooks, comment-indent-hook, meta-flag,
+       before-change-function, after-change-function,
+       font-lock-doc-string-face.
+
+2005-05-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/derived.el (define-derived-mode): Doc fix.
+
+2005-05-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmail.el (rmail-reply): Filter the list in reply-to through
+       rmail-dont-reply-to.
+
+2005-05-21  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
+
+       * mail/sendmail.el (mail-send): Use [[:space:]] instead of a
+       literal blank when splitting new-header-values.
+
+2005-05-21  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * calendar/cal-menu.el (cal-menu-update): Add separator as a
+       string so that tmm doesn't create a completion entry for it.
+
+       * textmodes/table.el (table-disable-menu): Ditto.
+
+2005-05-21  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/idlwave.el (idlwave-doc-header): Use insert-file-contents.
+
+       * progmodes/flymake.el (flymake-makehash): Use with-no-warnings.
+
+       * net/rcompile.el (remote-compile): Use compilation-start.
+
+       * tmm.el (tmm-shortcut): Avoid using beginning-of-buffer.
+
+2005-05-21  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * files.el (auto-mode-alist): Check GNUmakefile before makefile.
+       Default to makefile-bsdmake-mode on BSD systems.
+
+       * imenu.el (imenu-generic-expression, imenu--generic-function'):
+       REGEXP may also be a search function now.  The part of doc-string
+       for describing the structure was 95% identical to that of
+       `imenu--generic-function'.  Unify it there.
+
+       * progmodes/make-mode.el (makefile-imenu-generic-expression):
+       Use function to find dependencies, because regexp alone is so complex,
+       it easily goes into an endless loop.
+       (makefile-makepp-mode): Also add submenu for Perl functions
+       defined in the makefile.
+       (makefile-bsdmake-mode): Special imenu-generic-expression no
+       longer needed, due to function call.
+       (makefile-match-dependency): Take BOUND into account when checking
+       if we're through.
+
+2005-05-20  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-units.el (calc-invalidate-units-table):
+       Use inhibit-read-only.
+       (math-build-units-table-buffer): Use view-mode.
+
+2005-05-20  David Kastrup  <dak@gnu.org>
+
+       * emacs-lisp/easymenu.el (easy-menu-add): Correct docstring since
+       easy-menu-add is not a nop on Emacs; and clarify when to call it.
+
+2005-05-20  Lute Kamstra  <lute@gnu.org>
+
+       * diff-mode.el (diff-header-face, diff-file-header-face)
+       (diff-index-face, diff-hunk-header-face, diff-removed-face)
+       (diff-added-face, diff-changed-face, diff-function-face)
+       (diff-context-face, diff-nonexistent-face): Put them in the
+       diff-mode customization group.
+
+2005-05-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/vhdl-mode.el (vhdl-font-lock-match-item): Simplify regexp.
+
+       * progmodes/sh-script.el (sh-mode, sh-get-word): Minor regexp fixes.
+
+       * font-lock.el (lisp-font-lock-keywords-2): Don't error.
+       Minor regexp-optimization.
+
+2005-05-20  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-toggle-time-grid): New command.
+       (org-agenda-use-time-grid, org-agenda-time-grid): New options.
+       (org-agenda-add-time-grid-maybe): New function.
+       (org-agenda): Call `org-agenda-add-time-grid-maybe'.
+       (org-table-create): `dotimes' instead of `mapcar'.
+       (org-xor): Simplify implementation.
+       (org-agenda): `inhibit-redisplay' turned on.
+       (org-agenda-change-all-lines): Use `org-format-agenda-item' to get
+       a consistent line after a state change.
+       (org-agenda-remove-times-when-in-prefix): New option.
+       (org-prefix-has-time): New variable.
+       (org-parse-time-string): Optional argument NODEFAULT.
+       (org-format-agenda-item): Parse items for time-of-day
+       specifications and move these into the prefix if possible.
+       (org-agenda-priority): Get current heading, not previous heading
+       during agenda remote editing.
+
+2005-05-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/cl-seq.el (reduce, fill, replace, remove*)
+       (remove-if, remove-if-not, delete*, delete-if, delete-if-not)
+       (remove-duplicates, delete-duplicates, substitute)
+       (substitute-if, substitute-if-not, nsubstitute, nsubstitute-if)
+       (nsubstitute-if-not, find, find-if, find-if-not, position)
+       (position-if, position-if-not, count, count-if, count-if-not)
+       (mismatch, search, sort*, stable-sort, merge, member*)
+       (member-if, member-if-not, assoc*, assoc-if, assoc-if-not)
+       (rassoc*, rassoc-if, rassoc-if-not, union, nunion)
+       (intersection, nintersection, set-difference, nset-difference)
+       (set-exclusive-or, nset-exclusive-or, subsetp, subst-if)
+       (subst-if-not, nsubst, nsubst-if, nsubst-if-not, sublis)
+       (nsublis, tree-equal): Improve argument/docstring consistency.
+
+       * subr.el (send-string, send-region): Remove obsolescence declaration.
+       (window-dot, set-window-dot, read-input, show-buffer)
+       (eval-current-buffer, string-to-int):
+       Add release number to obsolescence declarations.
+
+2005-05-19  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-magic-forward-char): Enter ido-find-file at end of input.
+       (ido-magic-backward-char): Enter ido-switch-buffer at start of input.
+
+2005-05-20  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * faces.el (list-faces-display): Make back button respect optional
+       regexp arg.
+
+2005-05-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * calculator.el (calculator-radix-grouping-mode)
+       (calculator-radix-grouping-digits, calculator-displayer)
+       (calculator-radix-grouping-separator, calculator-copy-displayer):
+       * dabbrev.el (dabbrev-search-these-buffers-only):
+       * diff-mode.el (diff-jump-to-old-file, diff-update-on-the-fly)
+       (diff-advance-after-apply-hunk, diff-mode-hook)
+       (diff-minor-mode-prefix):
+       * imenu.el (imenu-use-popup-menu):
+       * jit-lock.el (jit-lock-context-time):
+       * newcomment.el (comment-fill-column, comment-column)
+       (comment-style, comment-padding, comment-multi-line)
+       (comment-empty-lines, comment-auto-fill-only-comments):
+       * reveal.el (reveal-around-mark):
+       * uniquify.el (uniquify-buffer-name-style)
+       (uniquify-after-kill-buffer-p)
+       (uniquify-ask-about-buffer-names-p, uniquify-ignore-buffers-re)
+       (uniquify-min-dir-content, uniquify-separator)
+       (uniquify-trailing-separator-p, uniquify-strip-common-suffix):
+       * w32-vars.el (w32-fixed-font-alist):
+       * emacs-lisp/testcover.el (testcover-potentially-1value-functions):
+       * obsolete/rsz-mini.el (resize-minibuffer-frame-max-height):
+       * progmodes/antlr-mode.el (antlr-font-lock-maximum-decoration):
+       * progmodes/perl-mode.el (perl-indent-level)
+       (perl-continued-statement-offset, perl-continued-brace-offset)
+       (perl-brace-offset, perl-brace-imaginary-offset)
+       (perl-label-offset, perl-indent-continued-arguments)
+       (perl-tab-always-indent, perl-tab-to-comment, perl-nochange):
+       * progmodes/tcl.el (tcl-indent-level)
+       (tcl-continued-indent-level, tcl-auto-newline)
+       (tcl-tab-always-indent, tcl-electric-hash-style)
+       (tcl-help-directory-list, tcl-use-smart-word-finder)
+       (tcl-application, tcl-command-switches, tcl-prompt-regexp)
+       (inferior-tcl-source-command):
+       * textmodes/fill.el (enable-kinsoku):
+       * textmodes/reftex-vars.el (reftex-index-phrases-wrap-long-lines):
+       * textmodes/table.el (table-yank-handler):
+       Specify missing group (and type, if simple) in defcustom.
+
+2005-05-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * progmodes/compile.el (compilation-finish-function): Fix defvar.
+
+2005-05-19  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/make-mode.el (makefile-mode): Use run-mode-hooks.
+
+       * subr.el (event-basic-type): Don't get an error.
+       (left-fringe-p): Function deleted.
+
+       * buff-menu.el (Buffer-menu-buffer-face): In group Buffer-menu.
+       (list-buffers-noselect): Set `font-lock-face' property, not `face'.
+
+       * dired-aux.el (dired-copy-file-recursive): Handle symlinks
+       in recursive copy.
+
+       * frame.el (show-trailing-whitespace): In group `whitespace-faces'.
+
+       * emacs-lisp/byte-run.el (eval-when-compile): Doc fix.
+
+       * emacs-lisp/bytecomp.el
+       (byte-compile-file-form-custom-declare-variable):
+       Call byte-compile-nogroup-warn if appropriate.
+
+       * progmodes/compile.el (compilation-finish-function): Mark obsolete.
+       (compilation-set-window): Don't call left-fringe-p; do it directly.
+
+2005-05-19  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-graph.el (calc-graph-format-data): Make sure
+       var-PlotRejects is bound before trying to check its value.
+
+2005-05-19  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex.el (reftex-isearch-minor-mode): Move the
+       definition of this variable from reftex-global.el to reftex.el,
+       because it is needed in the menu.
+
+2005-05-19  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/copyright.el (copyright-fix-years): Make sure all
+       years are fixed.  Don't insert a space after a dash.
+
+2005-05-19  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/crisp.el (crisp-home, crisp-end): Put CUA property.
+
+2005-05-19  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * font-lock.el (lisp-font-lock-keywords-2): Do \\) only in
+       strings, because (eq ... ?\\) is fairly frequent.
+
+       * progmodes/make-mode.el (makefile-add-this-line-targets):
+       Simplify and integrate into `makefile-pickup-targets'.
+       (makefile-add-this-line-macro): Simplify and integrate into
+       `makefile-pickup-macros'.
+       (makefile-pickup-filenames-as-targets): Simplify.
+       (makefile-previous-dependency, makefile-match-dependency):
+       Don't stumble over `::'.
+
+2005-05-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * subr.el (post-command-idle-hook, post-command-idle-delay):
+       Remove obsoletion of post-command-idle-hook and
+       post-command-idle-delay.
+
+       * faces.el (list-faces-display): Provide button when describe-face
+       is called to take user back to the list of faces.
+
+       * help-fns.el (describe-variable): Remove hyperlinks in a
+       variable's value as these are quite frequently inappropriate.
+
+       * follow.el (follow-submit-feedback, follow-mode):
+       Remove references to post-command-idle-hook.
+
+2005-05-18  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * progmodes/make-mode.el (makefile-previous-dependency)
+       (makefile-match-dependency): Check for := (and in bsd mode also
+       !=) to give a better result, even when font-lock is not on.
+
+2005-05-18  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-help.el (calc-s-prefix-help):
+       Add `calc-copy-special-constant' to help string.
+
+2005-05-18  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/eldoc.el (eldoc-mode): Doc fix.
+
+2005-05-18  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-poly.el (math-factor-poly-coefs): Make sure the terms
+       in linear factors are in proper order.
+
+2005-05-18  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-vars.el (reftex-cite-format-builtin):
+       Support for jurabib.
+
+       * textmodes/reftex.el (featurep): Define aliases for overlay
+       commands, for XEmacs compatibility, and use these aliases in
+       overlay initializations.
+       (reftex-highlight): Use `reftex-move-overlay'.
+       (reftex-unhighlight): Use `reftex-delete-overlay'.
+       (reftex-uniq): Function removed.  Use `reftex-uniquify' instead.
+       (reftex-access-search-path): Use `reftex-uniquify' instead of
+       `reftex-uniq'.
+
+       * textmodes/reftex-sel.el (reftex-select-unmark): Overlay
+       `before-string' property modification enables for Emacs as well.
+       (reftex-select-item): Use `reftex-delete-overlay'.
+       (reftex-select-mark): Use `reftex-make-overlay' and
+       `reftex-overlay-put'.
+       (reftex-select-unmark): Use `reftex-delete-overlay' and
+       `reftex-overlay-put'.
+
+2005-05-18  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/lisp.el (check-parens): Fix docstring.
+
+2005-05-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * add-log.el (add-change-log-entry):
+       * array.el (array-make-template, array-reconfigure-rows)
+       (array-init-max-row, array-init-max-column)
+       (array-init-columns-per-line, array-init-field-width):
+       * replace.el (replace-match-maybe-edit, perform-replace):
+       * textmodes/spell.el (spell-region):
+       Replace `read-input' by `read-string'.
+
+       * forms.el (forms-mode):
+       * finder.el (finder-compile-keywords):
+       * shadowfile.el (shadow-read-files):
+       Replace `eval-current-buffer' by `eval-buffer'.
+
+       * terminal.el (te-pass-through):
+       * net/ange-ftp.el (ange-ftp-process-filter, ange-ftp-gwp-filter)
+       (ange-ftp-raw-send-cmd):
+       * net/telnet.el (telnet-interrupt-subjob, telnet-c-z)
+       (send-process-next-char, telnet-initial-filter, telnet):
+       Replace `send-string' by `process-send-string'.
+
+       * progmodes/prolog.el (inferior-prolog-mode): Doc fix.
+       (prolog-consult-region): Replace `send-string' by
+       `process-send-string'; replace `send-region' by `process-send-region'.
+
+       * progmodes/delphi.el (delphi-log-msg):
+       Replace `set-window-dot' by `set-window-point'.
+
+       * subr.el (window-dot, set-window-dot, read-input, send-string)
+       (send-region, show-buffer, eval-current-buffer):
+       Make really obsolete, as the comment says.
+
+2005-05-17  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-use-hyper-key): Doc fix.
+       (cua--init-keymaps): Bind C-return instead of S-return to set
+       rectangle mark.
+
+       * emulation/cua-rect.el (cua--init-rectangles): Bind C-return
+       instead of S-return to toggle/clear rectangle mark.
+
+2005-05-17  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * progmodes/make-mode.el (makefile-dependency-skip): New variable.
+       (makefile-macroassign-regex, makefile-make-font-lock-keywords):
+       Also fontify plain strings assigned to variables, mostly so that a
+       colon has a face and is thus not taken as a dependency separator.
+       (makefile-previous-dependency): Inline the new matcher, because it
+       is too complex to work in both directions.
+       (makefile-match-dependency): Eliminate `backward' arg (see above).
+       Completely reimplemented so as to not sometimes go into an endless
+       loop.  It should also be more efficient, because first it only
+       searches for `:', instead of applying the very complex regexp.
+       (makefile-mode): Cancel `font-lock-support-mode', because blocks
+       to be fontified in one piece can be too long for JIT.
+       Makefiles are never *that* big.
+
+2005-05-17  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * dired.el (dired-mode): Simplify.
+
+2005-05-17  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Don't generate a
+       defcustom for the mode hook variable.
+
+       * emacs-lisp/authors.el (authors): Do parse the ChangeLogs of the
+       Emacs Lisp Reference Manual.
+
+2005-05-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/cl.el (eql, floatp-safe, plusp, minusp, oddp)
+       (evenp, list*):
+       * emacs-lisp/cl-macs.el (macrolet, symbol-macrolet):
+       * emacs-lisp/cl-seq.el (subsetp, tree-equal): Doc fixes.
+
+       * net/tramp-smb.el (tramp-smb-open-connection):
+       Pass `tramp-chunksize' as fifth (required) argument.
+
+2005-05-16  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * font-lock.el (lisp-font-lock-keywords-1):
+       Set `font-lock-negation-char-face' for [^...] char group.
+       (lisp-font-lock-keywords-2): Highlight regexp's \\( \\| \\).
+
+       * progmodes/make-mode.el (makefile-dependency-regex): Turn it into
+       a var, and refine it to mask one more level of nested vars.
+       (makefile-rule-action-regex): Turn it into a var, and refine it so
+       it recognizes backslashed continuation lines as belonging to the
+       same command.
+       (makefile-macroassign-regex): Refine it so it recognizes
+       backslashed continuation lines as belonging to the same command.
+       (makefile-var-use-regex): Don't look at the next char, because it
+       might be the same one to be skipped by the initial [^$], leading
+       to an overlooked variable use.
+       (makefile-make-font-lock-keywords): Remove two parameters, which
+       are now variables that some of the modes set locally.
+       Handle dependency and rule action matching through functions, because
+       regexps alone match too often.  Dependency matching now comes
+       last, so it can check, whether a colon already matched something else.
+       (makefile-mode): Inform that font-lock improves makefile parsing
+       capabilities.
+       (makefile-match-dependency, makefile-match-action): New functions.
+
+2005-05-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/cl-extra.el (equalp): Doc fix.
+
+       * align.el (align-regexp):
+       * ansi-color.el (ansi-color-get-face):
+       * array.el (array-reconfigure-rows, array-init-max-row)
+       (array-init-max-column, array-init-columns-per-line)
+       (array-init-field-width):
+       * dired-aux.el (dired-trample-file-versions):
+       * dired-x.el (dired-mark-sexp):
+       * ediff-diff.el (ediff-extract-diffs, ediff-get-diff3-group):
+       * edmacro.el (edmacro-finish-edit, edmacro-parse-keys):
+       * emerge.el (emerge-extract-diffs, emerge-get-diff3-group):
+       * faces.el (face-read-integer):
+       * files.el (backup-extract-version, insert-directory):
+       * hexl.el (hexl-insert-decimal-char):
+       * server.el (server-process-filter):
+       * shell.el (shell-extract-num):
+       * startup.el (command-line-1):
+       * term.el (term-command-hook):
+       * time-stamp.el (time-stamp, time-stamp-string-preprocess)
+       (time-stamp-do-number):
+       * time.el (display-time-update):
+       * timezone.el (timezone-parse-date, timezone-zone-to-minute)
+       (timezone-fix-time):
+       * vms-patch.el (vms-suspend-resume-hook):
+       * calendar/appt.el (appt-convert-time):
+       * calendar/cal-bahai.el (mark-bahai-diary-entries):
+       * calendar/cal-hebrew.el (mark-hebrew-diary-entries):
+       * calendar/cal-islam.el (mark-islamic-diary-entries):
+       * calendar/calendar.el (calendar-cursor-to-date)
+       (calendar-star-date):
+       * calendar/diary-lib.el (diary-attrtype-convert)
+       (mark-diary-entries, diary-entry-time):
+       * calendar/solar.el (solar-get-number):
+       * emacs-lisp/lisp-mnt.el (lm-last-modified-date):
+       * emacs-lisp/re-builder.el (reb-display-subexp):
+       * emulation/edt.el (edt-set-scroll-margins):
+       * emulation/tpu-extras.el (tpu-set-scroll-margins):
+       * emulation/vip.el (vip-get-ex-token, vip-get-ex-buffer)
+       (vip-get-ex-count):
+       * emulation/viper-ex.el (viper-get-ex-token)
+       (viper-get-ex-buffer, viper-get-ex-count, ex-next):
+       * international/fontset.el (fontset-plain-name):
+       * mail/feedmail.el (feedmail-look-at-queue-directory):
+       * mail/mailalias.el (mail-get-names):
+       * mail/rmail.el (rmail-convert-to-babyl-format):
+       * mail/rmailsum.el (rmail-make-basic-summary-line)
+       (rmail-summary-next-same-subject, rmail-summary-rmail-update)
+       (rmail-summary-goto-msg):
+       * mail/smtpmail.el (smtpmail-read-response):
+       * net/ange-ftp.el (ange-ftp-guess-hash-mark-size)
+       (ange-ftp-vms-add-file-entry):
+       * play/gametree.el (gametree-looking-at-ply)
+       (gametree-current-branch-score):
+       * progmodes/ada-xref.el (ada-prj-find-prj-file)
+       (ada-xref-find-in-modified-ali, ada-find-in-src-path):
+       * progmodes/cperl-mode.el (condition-case):
+       * progmodes/ebrowse.el (ebrowse-set-tree-indentation)
+       (ebrowse-set-member-buffer-column-width)
+       (ebrowse-select-1st-to-9nth):
+       * progmodes/etags.el (etags-snarf-tag):
+       * progmodes/flymake.el (flymake-parse-line):
+       * progmodes/idlw-shell.el (idlwave-shell-parse-line)
+       (idlwave-shell-filter-bp, idlwave-shell-goto-next-error)
+       (idlwave-shell-menu-def):
+       * progmodes/ps-mode.el (ps-run-goto-error):
+       * progmodes/vhdl-mode.el (vhdl-read-offset, vhdl-load-cache)
+       (vhdl-speedbar-contract-level):
+       * term/mac-win.el (x-handle-numeric-switch):
+       * term/sun-mouse.el (sun-get-frame-data):
+       * term/w32-win.el (x-handle-numeric-switch):
+       * term/x-win.el (x-handle-numeric-switch):
+       * textmodes/ispell.el (ispell-parse-output):
+       * textmodes/nroff-mode.el (nroff-outline-level):
+       * textmodes/reftex-cite.el (reftex-bib-sort-year)
+       (reftex-bib-sort-year-reverse, reftex-format-citation):
+       * textmodes/reftex-parse.el (reftex-init-section-numbers)
+       (reftex-section-number):
+       * textmodes/texinfmt.el (texinfo-paragraphindent):
+       Replace `string-to-int' by `string-to-number'.
+
+       * international/latexenc.el: Add page marker to force the "Local
+       Variables:" string out of the last page.
+
+2005-05-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-tooltip-mode): Add gud prefix to
+       tooltip-change-major-mode.
+       (gud-tooltip-print-command): Remove case where gud-minor-mode
+       is gdb ("--fullname").
+       (gud-tooltip-tips): Turn GUD tooltips off for this case and
+       explain to user.
+
+2005-05-16  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-store.el (calc-copy-special-constant): New function.
+
+       * calc/calc-ext.el (calc-init-extensions): Add binding for
+       `calc-copy-special-constant'.
+
+       * calc/calc-prog.el (calc-edit-format-macro-buffer): Add a case
+       for the `calc-copy-special-constant' command.
+
+2005-05-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * subr.el (left-fringe-p): New function.
+
+       * progmodes/compile.el (compilation-setup): Set local value of
+       overlay-arrow-string to "" always.
+       (compilation-set-window): Left fringe then don't scroll.
+       No left fringe then no arrow and scroll message to top.
+       (compilation-context-lines): Adjust doc string accordingly.
+
+2005-05-16  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-magic-forward-char, ido-magic-backward-char)
+       (ido-magic-delete-char): New commands for C-f, C-b, C-d.
+       (ido-wide-find-dir-or-delete-dir): New command for M-d.
+       (ido-define-mode-map): Bind them.  Add C-x prefix to fallback commands.
+       (ido-read-file-name): Handle commands with ido property value
+       equal to find-file as reading a file name, to allow C-d to enter dired.
+       (ibuffer-find-file): Add ido property with value find-file.
+
+2005-05-15  Kim F. Storm  <storm@cua.dk>
+
+       * subr.el (open-network-stream-nowait): Remove.
+       (open-network-stream-server): Remove.
+
+2005-05-15  Richard M. Stallman  <rms@gnu.org>
+
+       * faces.el (describe-face): Output a definition link button.
+
+       * help-mode.el (help-face-def): New button type.
+
+       * emacs-lisp/copyright.el (copyright-fix-years):
+       Match properly if the first year is 2-digit.
+       Don't mess up the whitespace after the years by filling.
+
+       * dired-aux.el (dired-mark-confirm):
+       Pass t to dired-get-marked-files for DISTINGUISH-ONE-MARKED.
+
+       * dired.el (dired-map-over-marks): New arg DISTINGUISH-ONE-MARKED.
+       (dired-get-marked-files): New arg DISTINGUISH-ONE-MARKED.
+       (dired-mark-pop-up): Handle FILES = (t FILE) specially.
+
+       * emacs-lisp/lisp-mode.el (lisp-mode-variables):
+       Set font-lock-comment-start-skip.
+
+       * font-lock.el (font-lock-comment-start-skip): New variable.
+       (font-lock-comment-end-skip): New variable.
+       (font-lock-fontify-syntactically-region): Use them if non-nil.
+
+2005-05-15  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-store.el (calc-store-value): Return a string rather
+       than display it as a message.
+       Use calc-var-name for variable name.
+       (calc-store-into): Add the result of calc-store-value to message.
+       (calc-copy-variable): Add a message.
+       (calc-store-exchange): Improve error messages.
+       (calc-store-binary, calc-store-map): Don't reset the values of
+       special constants.
+
+2005-05-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/derived.el (define-derived-mode): Add link to Elisp
+       manual to docstring.
+
+       * files.el (hack-local-variables-confirm): Add STRING argument.
+       Make the function handle non file visiting buffers correctly.
+       (hack-local-variables-prop-line, hack-local-variables)
+       (hack-one-local-variable): Use STRING arg of
+       `hack-local-variables-confirm'.
+
+2005-05-14  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.49.
+
+       * net/tramp.el (tramp-handle-dired-call-process)
+       (tramp-handle-insert-directory):`insert-buffer' cannot be used
+       because the contents of the Tramp buffer is changed before
+       insertion (`expand-file' and alike).
+       (tramp-handle-insert-directory): If `localname' has an empty
+       nondirectory name, it must not be quoted.
+       (tramp-pre-connection): Add parameter CHUNKSIZE.  Make local
+       variable `tramp-chunksize'.  Change callees.
+       (tramp-open-connection-setup-interactive-shell): Check remote host
+       for buggy `send-process-string' implementation.
+       Set `tramp-chunksize' if found.  Reported by Michael Kifer
+       <kifer@cs.sunysb.edu> (and a lot of other people all the years).
+       (tramp-handle-shell-command): `insert-buffer' cannot be used
+       because the contents of the Tramp buffer is changed before
+       insertion (`expand-file' and alike).  Reported by Fr\e,Ai\e(Bd\e,Ai\e(Bric Bothamy
+       <frederic.bothamy@free.fr>.
+       (tramp-set-auto-save): Actions should be done for Tramp file name
+       handler only.  Ange-FTP has its own auto-save mechanism.
+       Reported by Richard G. Bielawski <Richard.G.Bielawski@wellsfargo.com>.
+       (tramp-set-auto-save-file-modes): Set file modes of
+       `buffer-auto-save-file-name' to ?\600 as fallback solution.
+       Reported by Ferenc Wagner <wferi@tba.elte.hu>.
+       (tramp-bug): Remove obsolete variable.
+       (tramp-append-tramp-buffers): Rewrite partly.  More suitable check
+       for presence of `mml-mode'.  Make it running for older Emacsen as well.
+
+2005-05-14  John Paul Wallington  <jpw@pobox.com>
+
+       * ibuf-ext.el (define-ibuffer-filter filename):
+       If `dired-directory' is a list, use its car.
+
+2005-05-14  Daniel Brockman  <daniel@brockman.se>  (tiny change)
+
+       * ibuffer.el (define-ibuffer-column filename):
+       If `dired-directory' is a list, use its car.
+
+2005-05-14  Richard M. Stallman  <rms@gnu.org>
+
+       * subr.el (symbol-file): Doc fix.
+
+       * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn): New function.
+       (byte-compile-form): Call byte-compile-nogroup-warn.
+       (byte-compile-warning-types): Doc fix.
+
+       * eshell/esh-mode.el (eshell-find-tag): Use with-no-warnings.
+
+       * progmodes/cc-engine.el (c-literal-faces):
+       Add font-lock-comment-delimiter-face.
+
+       * net/net-utils.el (dig): Use with-no-warnings.
+
+       * mail/supercite.el (sc-cite-frame-alist, sc-uncite-frame-alist)
+       (sc-recite-frame-alist, sc-default-cite-frame)
+       (sc-default-uncite-frame, sc-default-recite-frame)
+       (sc-attrib-selection-list, sc-rewrite-header-list):
+       Mark as risky-local-variable.
+
+       * international/ogonek.el (ogonek-jak, ogonek-how):
+       Don't use beginning-of-buffer.
+
+       * emacs-lisp/eldoc.el (eldoc-documentation-function): Add autoload.
+
+       * calendar/solar.el (solar-data-list): Move definition up.
+
+       * dnd.el (dnd-protocol-alist): Add autoload.
+
+       * progmodes/sh-script.el: Many doc usage fixes.
+       (sh-indent-after-do): Change default to match common styles.
+
+2005-05-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * files.el (interpreter-mode-alist)
+       (auto-mode-interpreter-regexp): Doc fixes.
+
+2005-05-13  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * tmm.el (tmm-get-keymap): Include only active menus and menu items.
+
+       * emacs-lisp/easymenu.el (easy-menu-define): Doc fixes.
+
+2005-05-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * dired.el (dired-mode): make-variable-buffer-local =>
+       make-local-variable.
+
+2005-05-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-select-convert-to-string): Try coding
+       systems in mac-script-code-coding-systems if specified one cannot
+       encode string for `com.apple.traditional-mac-plain-text'.
+
+2005-05-13  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * progmodes/make-mode.el (makefile-targets-face)
+       (makefile-shell-face, makefile-makepp-perl-face): New faces.
+       (makefile-dependency-regex): Fix it to not make the colon in
+       $(var:a=b) special.
+       (makefile-rule-action-regex): New regexp for highlighting embedded
+       Shell strings.
+       (makefile-macroassign-regex): Handle != for highlighting as
+       embedded Shell strings.
+       (makefile-var-use-regex): New const.
+       (makefile-statements, makefile-automake-statements)
+       (makefile-gmake-statements, makefile-makepp-statements)
+       (makefile-bsdmake-statements): New consts.
+       (makefile-make-font-lock-keywords): New function.
+       (makefile-automake-font-lock-keywords)
+       (makefile-gmake-font-lock-keywords)
+       (makefile-makepp-font-lock-keywords)
+       (makefile-bsdmake-font-lock-keywords): New consts.
+       (makefile-mode-map): Add switchers between the various submodes.
+       (makefile-mode): Document the availability of the variants.
+       (makefile-automake-mode, makefile-gmake-mode)
+       (makefile-makepp-mode, makefile-bsdmake-mode): New derived modes.
+
+       * files.el (auto-mode-alist, interpreter-mode-alist): Set up the
+       new variants of makefile-mode.
+
+2005-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-comment-delimiter-face): Fix up
+       the inheritance.
+
+2005-05-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * progmodes/inf-lisp.el (inferior-lisp-mode-hook)
+       (inferior-lisp-load-hook): Convert defcustoms back to defvars.
+
+       * files.el (normal-mode): Extend the scope of the
+       `enable-local-variables' binding to include the `set-auto-mode' call.
+       (magic-mode-alist): Doc fix.
+
+2005-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-comment-delimiter-face): Inherit from
+       font-lock-comment-face rather than copying its setting.
+
+2005-05-12  Andreas Schwab  <schwab@suse.de>
+
+       * eshell/esh-mode.el (eshell-send-input): Doc fix.
+
+2005-05-12  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/generic.el (define-generic-mode): Don't generate a
+       defcustom for the mode hook variable.  Delete the last argument.
+       * generic-x.el: Fix callers of define-generic-mode.
+       (generic-x-modes): Delete group.
+       (show-tabs-tab-face, show-tabs-space-face): Put them in the
+       generic-x customization group.
+
+2005-05-12  Kim F. Storm  <storm@cua.dk>
+
+       * font-lock.el (font-lock-negation-char-face): Default to "off".
+
+       * progmodes/cc-fonts.el (c-basic-matchers-before): Don't apply
+       font-lock-negation-char-face to ! in !=.
+
+2005-05-12  Masatake YAMATO  <jet@gyve.org>
+
+       * add-log.el (find-change-log): Fix typos in the docstring
+       of function.
+
+2005-05-11  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
+
+       * international/latexenc.el (latexenc-find-file-coding-system):
+       Avoid `re-search-forward' when looking for input encoding because
+       of speed and safety.  Better regular expressions for recognizing
+       input encoding.  Limit a search for TeX-master/tex-main-file to
+       the local variable section.
+
+2005-05-11  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/sh-script.el (sh-mode-default-syntax-table): Set the
+       syntax of $ to "'" (quote).
+
+2005-05-11  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * dnd.el (dnd-protocol-alist): Improve custom type.
+
+       * dired.el (dired-dnd-protocol-alist): New variable.
+       (dired-mode): Use `dired-dnd-protocol-alist'.  Move call of
+       `dired-mode-hook' to the end.
+
+2005-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-lock.el (font-lock-fontify-syntactically-region): Don't use
+       comment-end if comment-start-skip is not set.
+       Obey the font-lock-comment-delimiter-face variables.
+
+2005-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files.el (executable-find): Move from executable.el.  Use
+       locate-file.
+       * progmodes/executable.el (executable-find): Move to files.el.
+
+       * font-lock.el (font-lock-fontify-keywords-region): Use a marker
+       when trying to ensure forward progress.
+
+2005-05-11  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mouse-sel.el (mouse-sel-follow-link-p): New function.
+       (mouse-select, mouse-select-internal, mouse-extend-internal):
+       Use it to implement mouse-1-click-follows-link functionality.
+
+2005-05-11  Richard M. Stallman  <rms@gnu.org>
+
+       * font-lock.el (font-lock-fontify-syntactically-region):
+       Use font-lock-comment-delimiter-face for comment delimiters.
+
+2005-05-10  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-help.el (calc-m-prefix-help): Add mention of
+       preserving embedded modes.
+
+2005-05-10  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/sh-script.el (sh-indent-for-do): Default to 0.
+
+       * progmodes/ada-mode.el (ada-adjust-case-skeleton):
+       Move from ada-stmt.el.
+       (ada-mode): Add ada-adjust-case-skeleton to skeleton-end-hook.
+
+       * progmodes/ada-stmt.el (ada-adjust-case-skeleton):
+       Move to ada-mode.el.
+       (ada-stmt-mode-hook): Delete; do the work in ada-mode.
+
+       * cus-edit.el (custom-file): Call file-chase-links.
+
+       * files.el (read-directory-name): Fix previous change.
+       (hack-local-variables-confirm): New function.
+       (hack-local-variables-prop-line, hack-local-variables)
+       (hack-one-local-variable): Use it.
+
+2005-05-10  Lute Kamstra  <lute@gnu.org>
+
+       * font-lock.el (font-lock-keywords-alist)
+       (font-lock-removed-keywords-alist): Clarify docstrings.
+
+2005-05-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-macro-info): New variable.
+       (gdb-source-info): Check for preprocessor info.
+       (gdb-tooltip-print-1): New function.  Don't print tooltip if it is
+       a macro for a function.
+       (gdb-info-breakpoints-custom): Try to find file again if not already
+       found (user might have used GDB dir command).
+       (gdb-get-location): Update gdb-location-alist correctly for change
+       to gdb-info-breakpoints-custom.
+
+       * progmodes/gud.el (gud-tooltip-mode): Require tooltip to be safe.
+       (gud-tooltip-print-command): Add gdbmi case.
+       (gud-tooltip-tips): Call gdb-tooltip-print-1 first if there is
+       preprocessor info.
+
+2005-05-09  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * startup.el (fancy-splash-insert): Fix typo in doc string.
+
+2005-05-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * obsolete/float.el (string-to-float):
+       * obsolete/hilit19.el (hilit-add-pattern):
+       * obsolete/rnews.el (news-parse-range, news-select-message)
+       (news-get-pruned-list-of-files): Replace `string-to-int' by
+       `string-to-number'.
+
+       * obsolete/uncompress.el: Set `find-file-not-found-functions', not
+       `find-file-not-found-hooks'; use `add-hook'.
+       (uncompress-while-visiting): Set `write-file-functions', not
+       `write-file-hooks'; use `add-hook'.
+
+2005-05-09  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-copy-region, cua-cut-region)
+       (cua-paste): Handle clipboard action.
+       (cua--init-keymaps): Remap clipboard-kill-region and
+       clipboard-kill-ring-save.
+
+2005-05-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs-lisp/easy-mmode.el (easy-mmode-pretty-mode-name):
+       Improve commentary.
+
+       * simple.el (next-error-overlay-arrow-position): Revert the change
+       made on 2005-04-30.
+
+2005-05-07  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calcsel2.el (calc-commute-left, calc-commute-right)
+       (calc-sel-unpack, calc-sel-isolate): Rename variable `reselect' to
+       `calc-sel-reselect'.
+
+       * calc/calc-mode.el (calc-save-modes): Reset the modes list if
+       Calc is in embedded mode.
+
+2005-05-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * progmodes/compile.el (compilation-setup):
+       Set overlay-arrow-string to an empty string on text terminals.
+
+       * textmodes/ispell.el (ispell-program-name): Try looking for
+       "aspell" along exec-path, and if found, use it as the default
+       speller program.
+
+2005-05-07  Jirka Kosek  <jirka@kosek.cz>  (tiny change)
+
+       * international/mule.el (sgml-xml-auto-coding-function):
+       Recognize encoding='FOO' in single quotes as well as in double quotes.
+
+2005-05-07  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
+
+       * emacs-lisp/cl-macs.el (cl-transform-lambda): Recognize `declare'
+       as well as `interactive', so that defmacro* would recognize
+       `declare' forms.
+
+2005-05-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs-lisp/easy-mmode.el (easy-mmode-pretty-mode-name):
+       Explain more about the LIGHTER arg's usage in the doc string.
+       Add commentary to clarify what the code does.  Fix the regexp that
+       strips whitespace from LIGHTER.  Quote LIGHTER before using it,
+       since it could have characters special to regular expressions.
+
+2005-05-07  Matt Hodges  <MPHodges@member.fsf.org>  (tiny change)
+
+       * replace.el (occur-1): Bind inhibit-read-only so that
+       erase-buffer doesn't barf on read-only text properties (likewise
+       for add-text-properties in occur-engine).  Mark buffer as unmodified.
+       (occur-engine): Don't set buffer-read-only here.
+
+2005-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs.el (cvs-mode-commit, cvs-mode-edit-log): Don't fiddle with
+       list-buffers-directory.  This caused the *cvs-commit* buffer to be
+       sometimes mistakenly reused as a *cvs* buffer.
+
+2005-05-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tooltip.el: Move code for GUD tooltips into gud.el.
+       (require): CL no longer needed to compile case.
+       (tooltip-mode): Do not toggle functions for GUD tooltips.
+       (tooltip-gud-tips-p): Remove.  Replace with minor mode
+       gud-tooltip-mode in gud.el.
+       (tooltip-gud-modes, tooltip-gud-display, tooltip-gud-echo-area)
+       (tooltip-gud-toggle-dereference): Rename in gud.el by replacing
+       tooltip-gud prefix with gud-tooltip and obsolete.
+       (tooltip-change-major-mode, tooltip-activate-mouse-motions-if-enabled)
+       (tooltip-mouse-motions-active, tooltip-activate-mouse-motions)
+       (tooltip-mouse-motion): Mouse movement functions/variable.
+       Rename in gud.el by adding gud prefix.
+       (tooltip-gud-original-filter, tooltip-gud-dereference)
+       (tooltip-gud-event, tooltip-toggle-gud-tips)
+       (tooltip-gud-process-output, tooltip-gud-print-command)
+       (tooltip-gud-tips): GUD tooltip functions/variables.  Rename in
+       gud.el by replacing tooltip-gud prefix with gud-tooltip.
+       (gdb-tooltip-print): Move to gdb-ui.el.
+
+       * progmodes/gud.el: Move code for GUD tooltips from tooltip.el.
+       (require): CL needed to compile case.
+       (gud-tooltip-mode): Use to toggle GUD tooltips instead of
+       tooltip-gud-tips-p.  Make it a minor-mode.
+       (gud-find-file): Only prepare GUD tooltips if gud-tooltip-mode is t.
+       (gud-menu-map): GUD tooltips use gud-tooltip-mode now.
+       (gud-tooltip-modes, gud-tooltip-display, gud-tooltip-echo-area)
+       (gud-tooltip-change-major-mode)
+       (gud-tooltip-activate-mouse-motions-if-enabled)
+       (gud-tooltip-mouse-motions-active, gud-tooltip-activate-mouse-motions)
+       (gud-tooltip-mouse-motion, gud-tooltip-toggle-dereference)
+       (gud-tooltip-original-filter, gud-tooltip-dereference)
+       (gud-tooltip-event, tooltip-toggle-gud-tips)
+       (gud-tooltip-process-output, gud-tooltip-print-command)
+       (gud-tooltip-tips): Move from tooltip.el.
+
+       * progmodes/gdb-ui.el (gdb-tooltip-print): Move from tooltip.el.
+       (gdb-cpp-define-alist-flags): Doc fix.
+       (gdb-set-gud-minor-mode-1): Only prepare GUD tooltips if
+       gud-tooltip-mode is t.
+
+2005-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * net/goto-addr.el (goto-address-fontify): Make sure the overlays
+       evaporate if their text is deleted.
+       (goto-address-at-point): Make it work as a mouse binding as well.
+       (goto-address-at-mouse): Obsolete it.  Update users.
+
+2005-05-06  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/appt.el (top-level): No longer activate on load.
+
+2005-05-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * calendar/cal-bahai.el (mark-bahai-diary-entries):
+       * net/webjump.el (webjump):
+       * progmodes/idlw-help.el (idlwave-do-context-help1)
+       (idlwave-highlight-linked-completions):
+       * textmodes/po.el (po-find-file-coding-system-guts):
+       Replace `assoc-ignore-case' by `assoc-string'.
+
+2005-05-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * files.el (locate-file): Doc fix.
+
+       * progmodes/gdb-ui.el (gdb-cpp-define-alist-program): Doc fix.
+       Remove the redundant test for ms-dos.
+
+       * progmodes/cmacexp.el (c-macro-preprocessor): Use locate-file to
+       look for the preprocessor with exec-suffixes.  If not found in
+       standard places, look in exec-path.  Remove most of the tests that
+       used system-type.
+
+       * loadup.el: Load jka-cmpr-hook instead of jka-comp-hook.
+
+       * jka-compr.el (jka-compr-uninstall): Add autoload cookie.
+
+       * jka-cmpr-hook.el: Renamed from jka-comp-hook.el, to avoid
+       file-name clash with jka-compr.el on 8+3 filesystems.
+
+2005-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Don't define or bind scroll bar functions if
+       x-toolkit-scroll-bars is t.
+       (x-select-text, x-get-selection-value): Clear
+       x-last-selected-text-clipboard if x-select-enable-clipboard is
+       nil.
+       (PRIMARY): Put mac-scrap-name property.
+       (mac-select-convert-to-file-url): New function.
+       (public.file-url): New selection target type.  Add to
+       selection-converter-alist.
+       (x-get-selection, x-selection-value): Handle it.
+       (x-cut-buffer-or-selection-value): New alias.
+
+2005-05-05  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-summary): Use current BibTeX
+       entry to avoid calling bibtex-find-entry with arg global
+       being t.  Remove arg key.
+       (bibtex-summary-function, bibtex-complete-crossref-cleanup)
+       (bibtex-copy-summary-as-kill): Change accordingly.
+
+2005-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/org.el (org-get-entries-from-diary): Remove unused vars.
+       (org-agenda-date-later): Use with-current-buffer.
+
+2005-05-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/byte-run.el (define-obsolete-function-alias)
+       (define-obsolete-variable-alias): Doc Fixes.
+
+2005-05-06  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move-1): Fix 2005-04-26 change.  Must still use
+       vertical-motion when selective-display is active.
+
+       * ido.el (ido-setup-hook): New hook.
+       (ido-define-mode-map-hook): Remove hook; use ido-setup-hook instead.
+       (ido-input-stack): New var.
+       (ido-define-mode-map): Bind M-b to ido-push-dir.  Move old
+       ido-next-work-file binding to M-O.
+       Bind M-f to ido-wide-find-file-or-pop-dir.
+       (ido-define-mode-map): Don't run ido-define-mode-map-hook.
+       (ido-read-internal): Run ido-setup-hook.
+       Catch quit in read-file-name and read-string to cancel edit.
+       Handle new push, pop, and pop-all exit codes (for M-b/M-f).
+       Automatically pop-all when completing a directory name (RET).
+       (ido-file-internal): Add with-no-warnings around ffap and dired code.
+       (ido-exit-minibuffer): Use exit-minibuffer instead of throw.
+       (ido-wide-find-file, ido-wide-find-dir): Catch quit to cancel find.
+       (ido-push-dir, ido-pop-dir, ido-wide-find-file-or-pop-dir):
+       New functions for M-b/M-f to move among the directory components.
+       (ido-make-merged-file-list): Catch quit to cancel merge.
+       (ido-make-dir-list): Delete "." when ido-input-stack is non-empty.
+       (ido-completion-help): No warnings for ido-completion-buffer-full.
+
+2005-05-05  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * font-lock.el (font-lock-negation-char-face): New face and variable.
+       * progmodes/cc-fonts.el (c-cpp-matchers): Use it.
+       * progmodes/sh-script.el (sh-font-lock-keywords): Use it.
+       * progmodes/cperl-mode.el (cperl-init-faces): Use it.
+       * progmodes/make-mode.el (makefile-font-lock-keywords): Use it.
+
+2005-05-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/byte-run.el (define-obsolete-function-alias):
+       Fix typo in docstring.
+
+       * progmodes/ebrowse.el (ebrowse-install-1-to-9-keys)
+       (ebrowse-print-statistics-line)
+       (ebrowse-electric-position-mode-hook): Fix typo in docstring.
+
+       * term/w32-win.el (image-library-alist): Add additional name for
+       Xpm library.
+
+2005-05-05  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/cmacexp.el (c-macro-preprocessor): Update for BSD and
+       use gcc instead of cpp.
+
+       * progmodes/gdb-ui.el (gdb-cpp-define-alist-flags): New variable.
+       (gdb-create-define-alist): Use it.
+       (gdb-cpp-define-alist-program): Update for MS-DOS.
+
+2005-05-04  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/cmacexp.el (c-macro-preprocessor): Update for Mac OS X.
+
+2005-05-04  Richard M. Stallman  <rms@gnu.org>
+
+       * help.el (describe-key): No error when UNTRANSLATED is nil.
+
+       * simple.el (line-move-1): Fix previous change to signal errors
+       appropriately.
+
+2005-05-03  Ulf Jasper  <ulf.jasper@web.de>
+
+       * calendar/icalendar.el (icalendar-version): Now at 0.12.
+       (icalendar-duration-correction): Remove.
+       (icalendar--get-event-properties): Split result at commas.
+       (icalendar--decode-isoduration): New optional argument
+       DURATION-CORRECTION.
+       (icalendar--convert-ordinary-to-ical, icalendar--convert-sexp-to-ical)
+       (icalendar--convert-yearly-to-ical, icalendar--convert-weekly-to-ical)
+       (icalendar--convert-block-to-ical, icalendar--convert-float-to-ical)
+       (icalendar--convert-date-to-ical, icalendar--convert-cyclic-to-ical)
+       (icalendar--convert-anniversary-to-ical): New functions, extracted
+       from icalendar-export-region, with bug fixes.
+       (icalendar-export-region): Use the above functions.
+       (icalendar-import-buffer): Check before saving diary file.
+       (icalendar--convert-recurring-to-diary)
+       (icalendar--convert-non-recurring-all-day-to-diary)
+       (icalendar--convert-non-recurring-not-all-day-to-diary): New functions,
+       extracted from icalendar--convert-ical-to-diary, with bug fixes.
+       (icalendar--convert-ical-to-diary): Use the above functions.
+
+2005-05-03  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/cc-mode.el (cc-define-alist, cc-create-define-alist):
+       Remove these recent additions.
+       (c-mode): Restore to before 2005-04-28.
+
+       * progmodes/cc-vars.el (cc-define-list-program): Remove this
+       recent addition.
+
+       * progmodes/gdb-ui.el (gdb-cpp-define-alist-program)
+       (gdb-define-alist): New variables.
+       (gdb-create-define-alist): New function.
+       (gdb-set-gud-minor-mode-1): Handle gdb-define-alist.
+       (gdb-source, gdb-memory-set-repeat-count): Replace string-to-int
+       with string-to-number.
+       (gdb-reset): Kill gdb-define-alist.  Move assignments outside loop.
+
+       * progmodes/gud.el: Replace string-to-int with string-to-number.
+       (gud-find-file): Handle gdb-define-alist.
+
+       * tooltip.el (tooltip-gud-tips): Use gdb-define-alist.
+
+2005-05-02  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-aent.el (math-read-token):
+       * calc/calc-bin.el (calc-word-size):
+       * calc/calc-ext.el (calc-read-number-fancy):
+       * calc/calc-forms.el (calc-time, calc-date-notation, math-this-year)
+       (math-parse-date, math-parse-standard-date, calcFunc-tzone):
+       * calc/calc-frac.el (calc-over-notation):
+       * calc/calc-graph.el (calc-graph-plot, calc-graph-set-styles)
+       (calc-graph-num-points, calc-graph-init):
+       * calc/calc-prog.el (calc-read-parse-table-part)
+       (calc-edit-macro-repeats):
+       * calc/calc-yank.el (calc-do-grab-rectangle):
+       * calc/calc.el (calcDigit-key, math-read-number, math-read-bignum):
+       Replace `string-to-int' by `string-to-number'.
+
+2005-05-02  Kim F. Storm  <storm@cua.dk>
+
+       * kmacro.el: Use executing-kbd-macro-index variable.
+
+2005-05-02  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * net/rlogin.el (rlogin-parse-words): Delete func.
+       (rlogin): Use split-string, not rlogin-parse-words.
+       Also, if there are option-like elements in the parsed args,
+       take the host to be the first arg immediately following them.
+       Suggested by Michael Mauger.
+
+2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * subr.el (executing-macro): Use `define-obsolete-variable-alias'.
+
+2005-05-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/cc-mode.el (cc-create-define-alist): Use a shell.
+       (cc-mode-cpp-program): Rename to cc-define-list-program and
+       move to cc-vars.el.
+
+       * progmodes/cc-vars.el (cc-define-list-program):
+       Change to "gcc -E -dM -".  Make customizable.
+
+2005-05-02  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el: Fix check for CUA-mode if no init file.
+
+2005-05-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/cc-mode.el (cc-mode-cpp-program): Change to "gcc -E".
+
+       * international/mule-util.el (truncate-string): Remove alias and
+       obsolete declaration.
+
+       * international/mule-cmds.el (update-iso-coding-systems):
+       Remove alias and obsolete declaration.
+
+       * international/mule.el (coding-system-parent): Remove alias and
+       obsolete declaration.
+
+       * subr.el (define-function, sref): Remove aliases and obsolete
+       declarations.
+       (chars-in-region): Remove obsolete declaration.
+
+2005-05-01  Richard M. Stallman  <rms@gnu.org>
+
+       * info.el (Info-mode): Set widen-automatically to nil, locally.
+
+       * simple.el (widen-automatically): New variable.
+       (pop-global-mark): Obey widen-automatically.
+
+2005-05-01  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (function-key-map): Call substitute-key-definition
+       before the keymap size is increased by a lot of define-key calls.
+
+2005-05-01  Richard M. Stallman  <rms@gnu.org>
+
+       * subr.el (add-to-invisibility-spec, remove-from-invisibility-spec):
+       Rename ARG to ELEMENT.  Doc fix.
+
+2005-05-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * allout.el (allout-exposure): Remove macro and obsolete declaration.
+       Remove references to allout-exposure/change to allout-new-exposure.
+
+       * emacs-lisp/bytecomp.el (dot, dot-min, dot-max): Don't create
+       bytecode symbols.
+
+       * subr.el (dot, dot-marker, dot-min, dot-max, buffer-flush-undo)
+       (compiled-function-p, focus-frame, unfocus-frame):
+       Remove aliases and obsolete declarations.
+       Back out inadvertent changes from previous commit.
+
+2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * files.el (require-final-newline): Make Custom tags consistent
+       with mode-require-final-newline.
+       (mode-require-final-newline): Doc fix.
+
+2005-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * international/latexenc.el (latexenc-find-file-coding-system):
+       Fix regular expressions.
+
+2005-05-01  David Kastrup  <dak@gnu.org>
+
+       * international/latexenc.el (latexenc-find-file-coding-system):
+       Fix regular expressions.
+
+2005-05-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * subr.el (string-to-int): Make obsolete.
+
+2005-04-30  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (next-error-overlay-arrow-position): Turn off, for ttys.
+
+       * loadup.el: load jka-comp-hook.
+
+       * jka-compr.el: Many functions and vars moved to jka-comp-hook.el.
+       (jka-compr-handler): Add autoload.  `put' calls moved
+       to jka-comp-hook.el.
+       (compression, jka-compr): defgroups moved to jka-comp-hook.el.
+       (jka-compr-inhibit): Autoload.
+
+       * jka-comp-hook.el: New file.
+       Enable the mode by default.
+
+       * files.el (backup-buffer-copy): Use copy-file instead
+       of write-region, and put back the 'excl.
+
+2005-04-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/flymake.el (flymake-split-string)
+       (flymake-split-string, flymake-log, flymake-pid-to-names)
+       (flymake-reg-names, flymake-get-source-buffer-name)
+       (flymake-unreg-names, flymake-add-line-err-info)
+       (flymake-add-err-info): Clarify docstrings.
+       (flymake-popup-menu, flymake-make-emacs-menu)
+       (flymake-make-xemacs-menu): Add docstrings.
+       (flymake-get-buffer-*, flymake-set-buffer-*): Functions deleted.
+       Set variables directly throughout.
+
+2005-04-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/cc-mode.el (cc-create-define-alist): Check that file
+       exists.  Initialize cc-define-alist.
+       (c-mode): Add cc-create-define-alist locally to after-save-hook.
+       If there is no file (Macroexpansion) don't create an alist.
+
+2005-04-29  Sam Steingold  <sds@gnu.org>
+
+       * progmodes/cc-mode.el (cc-mode-cpp-program): New user variable.
+       (cc-create-define-alist): Use it instead of the hard-coded string.
+
+2005-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * international/mule-conf.el (file-coding-system-alist): Fix regexp
+       for latexenc.
+
+2005-04-29  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/generic.el: Improve commentary section.
+       (define-generic-mode): Improve docstring.
+
+2005-04-29  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (many places): Change to quiet the byte compiler.
+       (org-prefix-format-compiled): New variable.
+       (org-compile-prefix-format): New function.
+       (org-timeline, org-agenda, org-diary): Call org-compile-prefix-format.
+       (org-agenda-prefix-format, org-timeline-prefix-format): New options.
+       (org-agenda-get-scheduled): Check if file is opened in `org-mode'.
+       (org-get-entries-from-diary): Use `org-get-time-of-day' for
+       consistency with entries from `org-mode' files.
+       (org-get-time-of-day): Fix bug with partial matches early in a line.
+       (org-non-link-chars): New constant.
+       (org-link-regexp): Respect `org-non-link-chars'.
+       (org-agenda-day-view): Remove command.
+       (org-agenda-toggle-week-view): Rename from `org-agenda-week-view'.
+       (org-follow-bbdb-link, org-store-link): Search also company field.
+       (org-highlight-overlay): New variable.
+       (org-highlight, org-unhighlight): New functions.
+       (org-agenda-mode): Add pre-command-hook to remove highlight.
+       (org-evaluate-time-range): Behavior depends upon whether time stamp
+       contains a time or not.
+       (org-show-subtree, org-show-entry): New functions.
+       (org-agenda-cleanup-fancy-diary): Remove empty lines.
+
+2005-04-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * comint.el (comint-output-filter-functions): Add autoload cookie.
+
+2005-04-28  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-everywhere): Fix last change.
+
+2005-04-28  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
+
+       * international/latexenc.el: New file.
+       * international/mule-conf.el (file-coding-system-alist): For .tex,
+       .ltx, .dtx and .drv extensions, use `latexenc-find-file-coding-system'.
+
+2005-04-28  Lute Kamstra  <lute@gnu.org>
+
+       * font-lock.el (font-lock-add-keywords)
+       (font-lock-remove-keywords): Clarify docstring.
+       (font-lock-keywords-alist, font-lock-removed-keywords-alist):
+       Don't start docstrings with a `*'.
+       (font-lock-update-removed-keyword-alist): Give it a docstring.
+
+       * generic-x.el: Update commentary section.
+       Only require font-lock when compiling.
+       Define all modes conditionally.
+       Place all generic modes in the generic-x-modes customization group.
+       (generic-x-modes): New customization group.
+       (generic-default-modes, generic-mswindows-modes)
+       (generic-unix-modes, generic-other-modes): New constants.
+       (generic-define-mswindows-modes, generic-define-unix-modes):
+       Update docstrings.  Make them obsolete.
+       (generic-extras-enable-list): New default value.  Update docstring.
+       Improve :type.  Change :set function.
+       (bat-generic-mode-syntax-table, rul-generic-mode-syntax-table):
+       Fix docstring.
+
+       * emacs-lisp/generic.el (generic-mode-internal):
+       Simplify font-lock-defaults.
+       (define-generic-mode): Fix docstring.
+
+2005-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/grep.el (grep-mode-font-lock-keywords): Use the
+       font-lock-face property to highlight matches.
+
+2005-04-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/cc-mode.el (cc-create-define-alist): New function.
+       (cc-define-alist): New variable.
+       (c-mode): Make it local and initialize it.
+
+       * progmodes/gdb-ui.el (gdb-active-process): New variable.
+       (gdb-exited): New function.
+       (gdb-annotation-rules): Use it.
+       (gdb-starting): Set gdb-active-process to t.
+       (gdb-stopping): Amend doc string.
+       (gdb-reset): Set gdb-active-process to nil.
+
+       * tooltip.el (tooltip-gud-tips): Show the associated #define
+       directives when a C program under GDB is not executing.
+
+2005-04-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/cperl-mode.el (cperl-mode): Don't precompile the
+       font-lock-fontify-syntactic-keywords.
+
+       * font-lock.el (font-lock-default-fontify-region): Don't force
+       parse-sexp-lookup-properties to nil.
+
+2005-04-27  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
+
+       * man.el (man-mode-syntax-table): Set up `:' to have
+       word-constituent syntax.
+
+2005-04-27  Lute Kamstra  <lute@gnu.org>
+
+       * novice.el (disable-command): Don't add spurious newlines to the
+       init file.  Reported by Dan Jacobson <jidanni@jidanni.org>.
+
+2005-04-26  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-yank.el (calc-edit-finish): Make sure there is more
+       than one window before deleting window.
+
+2005-04-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * shell.el (shell-prompt-pattern): Doc fix.
+       (shell-mode): Set paragraph-separate buffer locally to "\\'".
+
+       * comint.el (comint-prompt-regexp, comint-get-old-input)
+       (comint-use-prompt-regexp)
+       (comint-use-prompt-regexp-instead-of-fields)
+       (comint-replace-by-expanded-history, comint-send-input)
+       (comint-output-filter, comint-get-old-input-default)
+       (comint-line-beginning-position, comint-bol, comint-show-output)
+       (comint-backward-matching-input, comint-forward-matching-input)
+       (comint-next-prompt, comint-previous-prompt):
+       Rename `comint-use-prompt-regexp-instead-of-fields' to
+       `comint-use-prompt-regexp'.  Keep old name as alias and declare
+       obsolete.
+       (comint-use-prompt-regexp): Shorten first line of doc string.
+
+       * ielm.el (inferior-emacs-lisp-mode): Adapt to above name change.
+       Set paragraph-separate buffer locally to "\\'".
+
+       * hippie-exp.el (try-expand-line, try-expand-line-all-buffers):
+       Adapt to above name change.
+
+       * net/net-utils.el (nslookup-prompt-regexp, ftp-prompt-regexp)
+       (smbclient-prompt-regexp): Ditto.
+
+       * progmodes/inf-lisp.el (inferior-lisp-prompt): Ditto.
+
+2005-04-27  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-location-alist): Rename from
+       gdb-location-list.
+       Break lines that are over 80 characters wide.
+
+2005-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs-info.el (cvs-fileinfo->full-path, cvs-display-full-path):
+       New fun and var, to preserve compatibility.
+
+       * pcvs.el, pcvs-info.el: Rename "full-path" -> "full-name".
+
+2005-04-26  Dominique de Waleffe  <ddw@missioncriticalit.com>  (tiny change)
+
+       * pcvs-info.el (cvs-fileinfo->backup-file): Don't pass the full file
+       name to file-newer-than-file-p.
+
+2005-04-26  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (line-move-1): Avoid using vertical-motion in easy cases.
+
+       * progmodes/python.el (python-mode):
+       Use new name eldoc-documentation-function.
+
+       * hexl.el (hexl-mode): Use new name eldoc-documentation-function.
+
+       * emacs-lisp/eldoc.el (eldoc-mode): Doc fix.
+       (eldoc-documentation-function):
+       Rename from eldoc-print-current-symbol-info-function.  Calls changed.
+
+2005-04-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * emacs-lisp/byte-run.el (define-obsolete-function-alias): New macro.
+
+2005-04-25  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (function-key-map): Fix strings for
+       {C,S,A,C-S}-f[1-4].  Use substitute-key-definition to bind
+       {C,S,A,C-S}-{f1-f12}.
+
+2005-04-26  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (select-safe-coding-system):
+       Fix previous change.
+
+2005-04-26  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Fix docstring.
+
+       * font-lock.el (font-lock-fontify-region-function): Fix docstring.
+       (font-lock-comment-delimiter-face): Ditto.
+
+       * calc/calc.el (calc-trail-mode): Don't set font-lock-defaults.
+
+2005-04-25  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-help.el (calc-view-news): Let-bind inhibit-read-only
+       to t while inserting information; use help-mode.
+
+2005-04-25  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (ansi-term-color-vector): Use the xterm colors.
+       (term-raw-map): Don't add mappings for \eO and \e[.  Map deletechar.
+
+2005-04-25  Lute Kamstra  <lute@gnu.org>
+
+       * font-core.el (font-lock-defaults): Fix docstring.
+
+       * font-lock.el (font-lock-syntactic-face-function): Fix docstring.
+
+2005-04-25  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (select-safe-coding-system):
+       Don't check consistency with coding: spec, etc if raw-text or
+       no-conversion was found to be safe.
+
+2005-04-24  Richard M. Stallman  <rms@gnu.org>
+
+       * mail/sendmail.el (mail-font-lock-keywords): Match any number of
+       citation markers at start of each line.
+
+       * mail/rmail.el (rmail-font-lock-keywords): Match any number of
+       citation markers at start of each line.
+
+       * font-lock.el (font-lock-comment-delimiter-face): Doc fix.
+
+       * files.el (mode-require-final-newline): Fix previous change.
+       (require-final-newline): Fix type label.
+
+2005-04-24  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * progmodes/f90.el (f90-calculate-indent): Fix treatment of first
+       statement in buffer (broken by 2004-11-24 change).
+
+2005-04-24  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-everywhere): Save and restore old read-buffer-function
+       and read-file-name-function values.  Don't overwrite existing
+       non-nil values if ido-mode is enabled without ido-everywhere.
+
+2005-04-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * files.el (mode-require-final-newline): Minor doc fix.
+
+2005-04-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * subr.el (syntax-after): Doc fix.
+       (syntax-class): If argument is nil, return nil.  Mask off upper 16
+       bits, not 8 bits.
+
+       * files.el (mode-require-final-newline): Doc fix.
+       (backup-buffer-copy): Fix last change.
+
+2005-04-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Require select.  Set selection-coding-system to
+       mac-system-coding-system.  Call menu-bar-enable-clipboard.
+       (x-last-selected-text-clipboard, x-last-selected-text-primary)
+       (x-select-enable-clipboard): New variables.
+       (x-select-text, x-get-selection, x-selection-value)
+       (x-get-selection-value, mac-select-convert-to-string)
+       (mac-services-open-file, mac-services-open-selection)
+       (mac-services-insert-text): New functions.
+       (CLIPBOARD, FIND): Put mac-scrap-name property.
+       (com.apple.traditional-mac-plain-text, public.utf16-plain-text)
+       (public.tiff): Put mac-ostype property.
+       (selection-converter-alist): Add entries for them.
+       (mac-application-menu-map): New keymap.
+       (interprogram-cut-function, interprogram-paste-function): Set to
+       x-select-text and x-get-selection-value, respectively.
+       (split-window-keep-point): Set to t.
+
+2005-04-23  Richard M. Stallman  <rms@gnu.org>
+
+       * files.el (read-directory-name): Always pass non-nil
+       DEFAULT-FILENAME arg to read-file-name.
+       (backup-buffer-copy, basic-save-buffer-2): Take care against
+       writing thru an unexpected existing symlink.
+       (revert-buffer): In indirect buffer, revert the base buffer.
+       (magic-mode-alist): Doc fix.
+       (buffer-stale-function): Doc fix.
+       (minibuffer-with-setup-hook): Avoid warning.
+       (mode-require-final-newline): Doc and custom fix.
+
+       * follow.el (follow-end-of-buffer): Use with-no-warnings.
+
+       * font-lock.el (font-lock-comment-face): On terminals with few colors,
+       use the default appearance.
+       (font-lock-comment-delimiter-face): New face, new variable.
+
+       * imenu.el (imenu--generic-function): The official position of a
+       definition is the start of the line that BEG is in.
+
+       * midnight.el (midnight-timer): Move defvar up.
+
+       * mouse.el (mouse-drag-region-1): Delete some debugging code.
+
+       * saveplace.el (save-place-to-alist): Use with-no-warnings.
+
+       * startup.el (command-line): Use with-no-warnings.
+
+       * window.el (window-size-fixed): New defvar.
+
+       * emacs-lisp/easymenu.el (easy-menu-do-define): Use defalias, not fset.
+
+       * mail/rmail.el (rmail-font-lock-keywords):
+       Use font-lock-comment-delimiter-face.
+
+       * mail/sendmail.el (mail-font-lock-keywords):
+       Use font-lock-comment-delimiter-face.
+
+       * progmodes/compile.el (next-error-highlight-timer): New defvar.
+
+2005-04-23  SAITO Takuya  <tabmore@rivo.mediatti.net>  (tiny change)
+
+       * progmodes/compile.el (compilation-mode-font-lock-keywords):
+       Specify t for LAXMATCH when matching directories.
+       Save match data around compilation-compat-error-properties form.
+
+2005-04-23  David Kastrup  <dak@gnu.org>
+
+       * textmodes/tex-mode.el (TeX-mode, plain-TeX-mode, LaTeX-mode):
+       Mention that the autoloaded aliases should be kept for AUCTeX.
+
+2005-04-23  Andreas Schwab  <schwab@suse.de>
+
+       * isearch.el (isearch-forward): Doc fix.
+
+2005-04-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * jit-lock.el (jit-lock-stealth-time): Change default value to 16.
+       (jit-lock-stealth-nice): Change default value to 0.5.
+
+2005-04-23  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
+
+       * abbrev.el (write-abbrev-file): Write table entries in
+       alphabetical order by table name.
+
+2005-04-22  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-read-internal): Fix `list' completion.
+
+2005-04-22  Kenichi Handa  <handa@m17n.org>
+
+       * recentf.el (recentf-save-file-coding-system): New variable.
+       (recentf-save-list): Encode the file by
+       recentf-save-file-coding-system and add coding: tag.
+
+2005-04-22  Nick Roberts  <nickrob@snap.net.nz>
+
+       * emacs-lisp/byte-run.el (define-obsolete-variable-alias): New macro.
+
+2005-04-21  Lute Kamstra  <lute@gnu.org>
+
+       * loadhist.el (unload-feature): Don't remove a function from hooks
+       if it is about to be restored to an autoload .  Remove functions
+       that will become unbound from auto-mode-alist.  Simplify the code.
+
+       * subr.el (assq-delete-all): New implementation that is linear,
+       not quadratic.  Suggested by David Kastrup <dak@gnu.org>.
+       (rassq-delete-all): New function.
+
+       * menu-bar.el (menu-bar-options-save, menu-bar-showhide-menu):
+       Add size-indication-mode.
+
+2005-04-21  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el: Add autoload for widget-value in
+       eval-when-compile.
+
+2005-04-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * menu-bar.el (menu-bar-options-save, menu-bar-showhide-menu):
+       Add tooltip-mode.
+
+       * bindings.el (mode-line-mode-menu): Remove tooltip-mode.
+
+2005-04-20  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * progmodes/inf-lisp.el (inferior-lisp): New defgroup.
+       (inferior-lisp-filter-regexp, inferior-lisp-program)
+       (inferior-lisp-load-command, inferior-lisp-prompt)
+       (inferior-lisp-mode-hook, lisp-source-modes)
+       (inferior-lisp-load-hook): defvar->defcustom.
+       (inferior-lisp-program, inferior-lisp-prompt)
+       (inferior-lisp-load-hook): Doc fixes.
+       (inferior-lisp-install-letter-bindings): Small change in
+       introductory comment.
+
+2005-04-20  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * vc.el (vc-annotate-color-map): Change some colors so that text
+       using them as foreground is readable on both white and black
+       backgrounds.
+
+2005-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * international/mule-conf.el (translation-table-for-input):
+       Remove redundant declaration.
+
+2005-04-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-menu-map): Add tooltip-toggle-gud-tips.
+
+       * tooltip.el (tooltip-gud-tips-p): Expand documentation.
+       (tooltip-toggle-gud-tips): New function.
+
+2005-04-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (mac-symbol-encoder): Fix mappings of left and
+       right angle brackets.
+
+2005-04-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tooltip.el (tooltip-use-echo-area): Replace as alias and deprecate.
+
+2005-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/flymake.el (flymake-get-absolute-file-name-basedir):
+       Remove.  Update callers to use expand-file-name instead.
+
+       * subr.el (syntax-class): New function.
+
+       * simple.el (blink-matching-open): Use it.
+
+       * paren.el (show-paren-function): Use it to recognize parens that are
+       also used in 2-char comment markers.
+
+2005-04-19  Lute Kamstra  <lute@gnu.org>
+
+       * loadhist.el (unload-feature): Update for new format of
+       load-history.  Simplify the code.
+
+2005-04-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Add coding: tag and set it to iso-2022-7bit.
+       (mac-add-charset-info): New function.  Initialize variable
+       mac-charset-info-alist using it.
+       (mac-centraleurroman, mac-cyrillic): Do not use UCS in table data
+       for translation.
+       (mac-symbol-encoder, mac-dingbats-encoder): New translation table.
+       (mac-font-encoder-list): Add entries for mac-symbol and mac-dingbats.
+       (ccl-encode-mac-symbol-font, ccl-encode-mac-dingbats-font):
+       New CCL programs.
+
+2005-04-19  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (next-buffer, prev-buffer, next-error)
+       (scroll-other-window, keyboard-quit, keyboard-escape-quit)
+       (clone-indirect-buffer-other-window): Move bindings to bindings.el.
+
+       * bindings.el (next-buffer, prev-buffer, next-error)
+       (scroll-other-window, keyboard-quit, keyboard-escape-quit)
+       (clone-indirect-buffer-other-window): Move bindings from simple.el.
+       (next-buffer, prev-buffer): Add C-x C-right and C-x C-left bindings.
+       (next-error, previous-error): Add M-g M-n/n and M-g M-p/p bindings.
+
+2005-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * isearch.el (isearch-edit-string): Make the search-ring available for
+       minibuffer history commands.
+       (minibuffer-local-isearch-map): Remove bindings for M-p and M-n,
+       the default history commands now work just as well.
+       (isearch-ring-retreat-edit, isearch-ring-advance-edit): Remove.
+
+2005-04-18  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua--pre-command-handler): Add more
+       elaborate check for shift modifier on non-window systems.
+
+2005-04-18  Lars Hansen  <larsh@math.ku.dk>
+
+       * desktop.el: Make "--no-desktop" turn off `desktop-save-mode'.
+
+2005-04-18  Kim F. Storm  <storm@cua.dk>
+
+       * tooltip.el (tooltip-show): Change second arg to USE-ECHO-AREA
+       and make it optional.  Don't test tooltip-gud-echo-area here.
+       (tooltip-gud-process-output, gdb-tooltip-print):
+       Pass tooltip-gud-echo-area to tooltip-show.
+       (tooltip-help-tips): Remove second optional arg to tooltip-show.
+
+2005-04-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * tooltip.el (tooltip-mode): `emacs-quick-startup' and
+       `display-graphic-p' may not be bound yet.
+
+2005-04-17  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * startup.el (command-line): No longer enable Xterm Mouse mode by
+       default in terminals compatible with xterm.
+
+       * xt-mouse.el (xterm-mouse-mode): Set init value back to nil.
+
+2005-04-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tooltip.el (tooltip-gud-echo-area): Rename from
+       tooltip-use-echo-area.
+       (tooltip-show, tooltip-gud-process-output, gdb-tooltip-print)
+       (tooltip-help-tips): Allow GUD tooltips to be displayed in echo
+       area independently of where help tooltips are displayed.
+
+2005-04-17  David Kastrup  <dak@gnu.org>
+
+       * cus-theme.el (custom-theme-write-variables): Quote variables
+       where necessary.
+
+2005-04-17  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (yank-excluded-properties): Add follow-link to value.
+
+       * jka-compr.el (jka-compr-compression-info-list): Fix custom type.
+
+       * startup.el (fancy-splash-max-time): Just 30 seconds.
+       (fancy-splash-delay): Just 7.
+       (fancy-splash-screens): No time limit other than fancy-splash-max-time.
+
+       * loadhist.el (unload-feature): Update for new format of load-history.
+       Simplify the code.
+
+       * mail/rmail.el (rmail-ignored-headers): Ignore more headers
+       (rmail-font-lock-keywords): Don't fontify the text of a citation.
+
+       * mail/sendmail.el (mail-font-lock-keywords):
+       Don't fontify subject text.
+       Don't fontify the text of a citation.
+
+2005-04-17  Mark H. Weaver  <mhw@netris.org>  (tiny change)
+
+       * comint.el (comint-output-filter): Run comint-output-filter-functions
+       with point where the user had it.
+
+2005-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * international/ucs-tables.el (ucs-set-table-for-input):
+       Disable when using unify-on-decoding.
+
+2005-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * emulation/cua-base.el (cua-global-mark-face): Add special case
+       for displays supporting a high number of colors.
+
+2005-04-16  Matt Hodges  <MPHodges@member.fsf.org>  (tiny change)
+
+       * repeat.el (repeat): Invoke pre-command-hook and post-command-hook.
+
+2005-04-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * filesets.el (filesets-add-buffer): If user supplies a name of a
+       non-existing fileset, create a new fileset.
+
+2005-04-16  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-up-heading-all): Fix bug with
+       `outline-up-heading-all'.
+
+2005-04-16  Andreas Schwab  <schwab@suse.de>
+
+       * files.el (auto-mode-alist): Handle /etc/sysconfig/*,
+       /etc/permissions.d/* and /etc/aliases.d/*.
+
+2005-04-16  Kenichi Handa  <handa@m17n.org>
+
+       * international/code-pages.el (cp-make-coding-system):
+       Set `translation-table-for-input' property value to the symbol
+       ucs-mule-to-mule-unicode, not to that value.
+       (pt154): Escape guillemet by `\'.
+
+2005-04-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * loadup.el: Load tooltip if x-show-tip is fboundp.
+
+       * startup.el (command-line): Add comment.
+
+       * tooltip.el (tooltip-mode): Specify correct standard value for
+       Custom in init-value.
+
+2005-04-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-goto-info): Use existing Info buffer, if
+       possible.
+
+2005-04-15  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-agenda-date-prompt): Rename from
+       `org-agenda-date-today'.
+       (org-evaluate-time-range): Insert at point instead of directly
+       after time range.
+       (org-first-headline-recenter, org-subtree-end-visible-p)
+       (org-optimize-window-after-visibility-change): New functions
+       (org-agenda-post-command-hook): Don't allow point at end of line,
+       to make sure it always hits the text properties.
+       (org-agenda-next-date-line, org-agenda-previous-date-line):
+       New commands.
+       (org-set-regexps-and-options): Category may contain white space.
+       (org-agenda-get-deadlines, org-agenda-get-scheduled):
+       Improve marker positions.
+       (org-agenda-new-marker): Argument POS made optional.
+       (org-agenda-get-timestamps): Deadlines which are done are listed
+       in org-done-face now.
+       (org-agenda-get-todos, org-agenda-get-timestamps)
+       (org-agenda-get-deadlines, org-agenda-get-scheduled):
+       Set `undone-face' and `done-face' properties.
+       (org-last-todo-state-is-todo): New variable.
+       (org-todo): Set `org-last-todo-state-is-todo'.
+       (org-agenda-todo): Change face according to
+       `org-last-todo-state-is-todo'.  And change other lines referring to
+       the same entry.
+       (org-calendar-goto-agenda): New command.
+       (org-calendar-to-agenda-key): New option.
+       (org-startup-folded): New allowed value `content'.
+       (org-set-regexps-and-options): Accept new value `content' for
+       `org-startup-folded'.
+       (org-get-current-options): Handle new value `content' for
+       `org-startup-folded'.
+       (org-insert-todo-heading): New command.
+       (org-mode): Insert first line "*-* mode: org-mode -*-" when called
+       interactively in empty file and option
+       `org-insert-mode-line-in-empty-file' has been set.
+       (org-agenda-todo, org-agenda-priority): Modify to use
+       `org-agenda-change-all-lines'.
+       (org-warning-face): Change color on dark background.
+
+2005-04-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * international/mule-cmds.el (set-locale-environment): On Mac OS,
+       use preferences AppleLocale and AppleLanguages, and variable
+       mac-system-locale for default locale.  On Mac OS Classic, use
+       mac-system-coding-system for default coding systems.
+
+       * term/mac-win.el: Don't set file-name-coding-system.
+       Decode variables system-name, emacs-build-system, user-login-name, and
+       user-full-name by mac-system-coding-system on Mac OS Classic.
+       (mac-system-coding-system): New variable.
+
+2005-04-13  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * startup.el (command-line): Handle `xterm-mouse-mode' before
+       reading init file.
+
+       * xt-mouse.el (xterm-mouse-mode): Adapt to above change.
+
+2005-04-13  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * progmodes/sh-script.el (sh-here-document-word): Make it a
+       defcustom.  Doc fix.
+       (sh-add): Bash uses $(( )) for arithmetic.
+       (sh-while-getopts) <sh>: Set OPTIND back to 1 at end.
+       (sh-maybe-here-document): Remove quotes and leading whitespace
+       from heredoc word when closing.  Indent heredoc with tabs if word
+       starts with "-".
+
+2005-04-13  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (undo): Fix previous change.
+
+       * custom.el (defface): Doc fix.
+
+2005-04-13  Lute Kamstra  <lute@gnu.org>
+
+       * Makefile.in (DONTCOMPILE): Remove list.
+       (compile, compile-always): Don't use DONTCOMPILE.
+       (update-authors): Load the library in which batch-update-authors
+       is defined.
+       * makefile.w32-in (DONTCOMPILE): Remove list.
+       (compile, compile-always): Fix comments.
+       (update-authors): Load the library in which batch-update-authors
+       is defined.
+
+       * generic-x.el (generic-mode-ini-file-find-file-hook):
+       Rename to ini-generic-mode-find-file-hook.
+       Keep generic-mode-ini-file-find-file-hook as an alias.
+       (ini-generic-mode-find-file-hook): Rename from
+       generic-mode-ini-file-find-file-hook.  Fix docstring.
+       (ini-generic-mode): Docstring change.
+       (bat-generic-mode-run-as-comint): Silence the byte compiler.
+
+       * help.el (describe-key-briefly): UNTRANSLATED can be nil when
+       called from lisp.
+
+       * generic.el: Move to the emacs-lisp subdir.
+
+2005-04-12  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (function-key-map): Add mappings for A-, C-, S-
+       and C-S- function and cursor motion keys.
+
+2005-04-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * startup.el (command-line): Enable Xterm Mouse mode by default.
+       * xt-mouse.el (xterm-mouse-mode): Provide correct standard value
+       for Custom.  No longer show "Mouse" in mode line when enabled.
+       Doc fix.
+
+2005-04-12  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-rectangle-face)
+       (cua-rectangle-noselect-face): Define face attributes here.
+
+       * emulation/cua-rect.el (cua--init-rectangles): Remove face setup.
+
+2005-04-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * startup.el (command-line): Turn off blinking cursor if
+       cursorBlink in resources is off or false.
+
+2005-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el (dnd): Require dnd.
+       (mac-drag-n-drop): Call dnd-handle-one-url.
+       (kTextEncodingMacRoman, kTextEncodingISOLatin1)
+       (kTextEncodingISOLatin2): Remove constants.
+       (mac-script-code-coding-systems): New constant.
+       (mac-handle-language-change): New function.
+       (special-event-map): Bind it to `language-change' event.
+       (mac-centraleurroman, mac-cyrillic): New coding systems.
+       (mac-font-encoder-list, ccl-encode-mac-centraleurroman-font)
+       (ccl-encode-mac-cyrillic-font): Rename mac-centraleurroman-encoder
+       and mac-cyrillic-encoder to encode-mac-centraleurroman and
+       encode-mac-cyrillic, respectively.
+
+2005-04-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el, progmodes/gdb-ui.el (gdb-assembler-mode):
+       Don't set overlay-arrow-string to "=>" as this is done
+       globally in C now.
+
+2005-04-12  Lute Kamstra  <lute@gnu.org>
+
+       * generic-x.el (rc-generic-mode, rul-generic-mode):
+       Fix auto-mode-alist entries.
+       (etc-fstab-generic-mode): Tweak fontification.
+
+       * generic.el (generic-make-keywords-list): Fix docstring.
+       (generic-mode-internal): Simplify generic-font-lock-keywords.
+
+2005-04-11  Rajesh Vaidheeswarran  <rv@gnu.org>
+
+       * whitespace.el (whitespace-buffer-leading)
+       (whitespace-buffer-trailing): Revert the incorrect test inversion.
+       However, fix the highlight area for the leading and
+       trailing whitespaces to show space.
+
+2005-04-11  Rajesh Vaidheeswarran  <rv@gnu.org>
+
+       * whitespace.el (whitespace-version): Bump to 3.5.
+
+       (whitespace-buffer-leading, whitespace-buffer-trailing):
+       Invert sense of the test to highlight the whitespace.
+
+2005-04-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gud-display-line): GUD uses its own
+       overlay arrow now so don't set overlay-arrow-string.
+       (gud-pdb-command-name): Revert back to "pdb" (2004-04-26).
+
+2005-04-11  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (term-ansi-current-bold, term-ansi-current-underline)
+       (term-ansi-current-reverse, term-ansi-current-invisible)
+       (term-ansi-face-already-done): Change to boolean.
+       (term-reset-terminal, term-handle-colors-array): Handle the above
+       vars accordingly.
+       (term-buffer-vertical-motion): Rename from buffer-vertical-motion.
+       (term-emulate-terminal): Use the new name.
+
+       * faces.el (secondary-selection): Use yellow1, not yellow.
+       (trailing-whitespace): Use red1, not red.
+
+2005-04-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * dired.el (dired-mode): Use dnd-* instead of x-dnd-*
+       (dired-dnd-handle-local-file): Call dnd-get-local-file-name.
+       (dired-dnd-handle-file): Call dnd-get-local-file-uri.
+
+       * cus-edit.el (dnd): New group.
+
+       * term/w32-win.el (dnd): Require dnd
+       (w32-drag-n-drop): Call dnd-handle-one-url.
+
+       * x-dnd.el: Require dnd.
+       (x-dnd-handle-uri-list, x-dnd-handle-file-name):
+       Call dnd-handle-one-url.
+       (x-dnd-types-alist, x-dnd-insert-utf8-text)
+       (x-dnd-insert-utf16-text, x-dnd-insert-ctext): Change x-dnd-insert-text
+       to dnd-insert-text.
+       (x-dnd-protocol-alist, x-dnd-open-file-other-window)
+       (x-dnd-handle-one-url, x-dnd-get-local-file-uri)
+       (x-dnd-get-local-file-name, x-dnd-open-local-file)
+       (x-dnd-open-file, x-dnd-insert-text): Move to dnd.el (without x-).
+
+       * dnd.el (dnd-protocol-alist): New file with generic DND functions.
+
+2005-04-11  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+
+       * wdired.el: Doc fixes.
+       (wdired-confirm-overwrite): Rename from wdired-is-ok-overwrite.
+       (wdired-use-dired-vertical-movement): Rename from
+       wdired-always-move-to-filename-beginning.
+       (wdired-mode-map): Use `ignore' instead of `wdired-newline'.
+       (wdired-change-to-wdired-mode): Change mode name.
+       (wdired-newline): Delete.
+
+2005-04-11  Richard M. Stallman  <rms@gnu.org>
+
+       * whitespace.el (whitespace-highlight-the-space):
+       Don't call whitespace-unhighlight-the-space here.
+
+       * simple.el (undo): Record t in undo-equiv-table
+       for the redo record made by an undo-in-region.
+
+2005-04-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-display-inferior-io-buffer)
+       (gdb-frame-inferior-io-buffer): New Functions to control
+       display of separate IO buffer.
+       (menu): Add them to menu-bar.
+       (gdb-display-buffer): Check for buffer another frame.
+       Protect GUD buffer.
+       (gdb-setup-windows): Create IO buffer if not already there.
+       (gdb-memory-mode): Remove purecopy noops.
+
+2005-04-11  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * progmodes/f90.el (f90-electric-insert): Add optional prefix arg,
+       and pass to self-insert-command.
+
+2005-04-11  Lute Kamstra  <lute@gnu.org>
+
+       * generic.el: Commentary section cleanup.
+       (generic): Delete.
+       (generic-use-find-file-hook, generic-lines-to-scan)
+       (generic-find-file-regexp, generic-ignore-files-regexp)
+       (default-generic-mode, generic-mode-find-file-hook)
+       (generic-mode-ini-file-find-file-hook): Move to generic-x.el.
+       * generic-x.el (generic-x): Docstring fix.  Put it in the data group.
+       (generic-use-find-file-hook, generic-lines-to-scan)
+       (generic-find-file-regexp, generic-ignore-files-regexp)
+       (default-generic-mode, generic-mode-find-file-hook)
+       (generic-mode-ini-file-find-file-hook): Move from generic.el.
+
+2005-04-10  Karl Fogel  <kfogel@red-bean.com>
+
+       * bookmark.el (bookmark-write-file): Catch errors writing file.
+       This is the same change as saveplace.el at 2005-04-10T23:32:00Z!rms@gnu.org.
+
+2005-04-10  Richard M. Stallman  <rms@gnu.org>
+
+       * startup.el (fancy-splash-tail): Update copyright year.
+       (command-line): Split part of -Q into -D.
+       (emacs-basic-display): New defvar.
+       (fancy-splash-text): Correct name of menu item.
+
+       * saveplace.el (save-place-alist-to-file): Catch errors writing file.
+
+       * info.el (Info-fontify-node): Handle fontification of multiple * Menu
+       lines in one node.
+
+       * comint.el (comint-send-input): New arg ARTIFICIAL.
+       Callers in this file changed.
+
+       * abbrev.el (define-abbrevs): Read system abbrevs properly.
+
+       * emacs-lisp/map-ynp.el (map-y-or-n-p): Clarify RET/q in help message.
+
+2005-04-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * url/url-ldap.el (url-ldap): Add docstring.  Fix call to
+       `ldap-search-internal'.
+
+2005-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files.el (set-auto-mode-1): Use line-end-position.
+
+       * international/latin-1.el:
+       * international/latin-2.el:
+       * international/latin-3.el:
+       * international/latin-4.el:
+       * international/latin-5.el:
+       * international/latin-8.el:
+       * international/latin-9.el: Give punctuation syntax to NBSP.
+
+       * textmodes/bibtex.el (bibtex-autokey-titleword-ignore)
+       (bibtex-reference-key, bibtex-autokey-demangle-name, bibtex-mode):
+       Use char-classes to accept non-ascii letters, accepted in some recent
+       bibtex implementations.
+
+2005-04-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * custom.el (custom-set-minor-mode): Any non-nil value for the
+       variable should enable the mode when set through Custom.
+
+2005-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/vhdl-mode.el (vhdl-mode-map-init): Don't override default
+       TAB binding so tab-always-indent is obeyed.
+       (vhdl-minibuffer-local-map): Move initialization into declaration.
+       (vhdl-mode-abbrev-table-init): Mark the abbrevs as `system'.
+       (vhdl-run-when-idle, vhdl-create-mode-menu, vhdl-character-to-event)
+       (vhdl-hooked-abbrev): Avoid test for XEmacs.
+       (vhdl-current-line): Use line-beginning-position.
+       (vhdl-doc-variable, vhdl-doc-mode): Call help-setup-xref before
+       with-output-to-temp-buffer, so the current position can be recorded.
+
+2005-04-10  Masatake YAMATO  <jet@gyve.org>
+
+       * progmodes/compile.el (compilation-error-regexp-alist-alist):
+       Add regexp for gcov.
+
+2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * calendar/time-date.el (time-to-seconds, seconds-to-time)
+       (days-to-time, time-subtract, time-add): Don't use the #xhhhh
+       syntax which Emacs 20 doesn't support.
+
+2005-04-09  Richard M. Stallman  <rms@gnu.org>
+
+       * help.el (describe-key-briefly, describe-key):
+       Replace strings as event types with "(any string)".
+
+2005-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * arc-mode.el (archive-mode-map): Move initialization into
+       the declaration.  Override *all* bindings of `undo'.
+       (archive-lemacs): Remove, use (featurep 'xemacs) instead.
+
+2005-04-09  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-units.el (math-standard-units): Redefine Watt hour as W*hr.
+
+2005-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (xterm-rgb-convert-to-16bit): Simplify.
+       (xterm-register-default-colors): Update color values computation
+       to match xterm-200.
+
+2005-04-09  Kenichi Handa  <handa@m17n.org>
+
+       * international/code-pages.el (iso-latin-7): Fix the map.
+
+2005-04-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * emacs-lisp/lisp.el (defun-prompt-regexp)
+       (parens-require-spaces, buffer-end, end-of-defun)
+       (insert-parentheses): Doc fixes.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+       * comint.el (comint-highlight-prompt): Fix face spec.
+       * hi-lock.el (hi-green): Likewise.
+
+2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * cus-edit.el (custom-modified-face):
+       * comint.el (comint-highlight-input): Fix previous changes.
+       * term.el (term-handle-ansi-escape): Add a comment.
+
+2005-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * whitespace.el (whitespace-highlight-the-space): Put the same overlay
+       in the buffer and in whitespace-highlighted-space.
+       (whitespace-unhighlight-the-space): Simplify.
+       (whitespace-buffer): Simplify.
+
+2005-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * textmodes/table.el (table-cell-face): Add special case for
+       displays supporting a high number of colors.
+       * progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
+       (vhdl-font-lock-reserved-words-face)
+       (vhdl-speedbar-architecture-face)
+       (vhdl-speedbar-instantiation-face)
+       (vhdl-speedbar-architecture-selected-face)
+       (vhdl-speedbar-instantiation-selected-face): Likewise.
+       * progmodes/sh-script.el (sh-heredoc-face): Likewise.
+       * progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
+       * progmodes/ebrowse.el (ebrowse-tree-mark-face)
+       (ebrowse-root-class-face, ebrowse-member-attribute-face)
+       (ebrowse-progress-face): Likewise.
+       * progmodes/compile.el (compilation-info-face): Likewise.
+       * progmodes/cc-fonts.el (c-invalid-face): Likewise.
+       * emacs-lisp/re-builder.el (reb-match-3): Likewise.
+       * calendar/calendar.el (diary-face): Likewise.
+       * woman.el (woman-italic-face, woman-bold-face)
+       (woman-unknown-face): Likewise.
+       * wid-edit.el (widget-button-pressed-face): Likewise.
+       * whitespace.el (whitespace-highlight-face): Likewise.
+       * smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
+       * pcvs-info.el (cvs-marked-face): Likewise.
+       * info.el (info-xref): Likewise.
+       * ido.el (ido-subdir-face, ido-indicator-face): Likewise.
+       * hilit-chg.el (highlight-changes-face)
+       (highlight-changes-delete-face): Likewise.
+       * hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
+       (hi-red-b): Likewise.
+       * generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
+       * font-lock.el (font-lock-keyword-face)
+       (font-lock-function-name-face, font-lock-warning-face): Likewise.
+       * cus-edit.el (custom-invalid-face, custom-modified-face)
+       (custom-set-face, custom-changed-face, custom-variable-tag-face)
+       (custom-group-tag-face-1, custom-group-tag-face): Likewise.
+       * comint.el (comint-highlight-prompt): Likewise.
+
+2005-04-08  Lute Kamstra  <lute@gnu.org>
+
+       * font-lock.el (font-lock-keywords): Docstring fixes.
+
+2005-04-08  Kenichi Handa  <handa@m17n.org>
+
+       * ps-mule.el (ps-mule-show-warning): If the number of unprintable
+       chars are more than a limit, print " and more..." at the tail.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/authors.el (authors-aliases): Update list.
+       (authors-ignored-files): New list.
+       (authors-fixed-entries): Fix typo.
+       (authors-renamed-files-alist): Update list.
+       (authors-add): Check authors-ignored-files.
+
+2005-04-08  Carsten Dominik  <dominik@science.uva.nl>
+
+       * calendar/diary-lib.el (add-to-diary-list): MARKER argument made
+       optional, to ensure backward compatibility.
+
+2005-04-08  Stephen Eglen  <stephen@gnu.org>
+
+       * textmodes/flyspell.el (flyspell-large-region): Doc fix.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+       * buff-menu.el (Buffer-menu-mode-map): Map follow-link to mouse-face.
+
+       * mouse.el (mouse-on-link-p): Doc fix.
+
+2005-04-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * ielm.el (ielm-prompt-read-only): Doc fix.
+
+       * comint.el (comint-prompt-read-only): Doc fix.
+
+2005-04-07  Benjamin Rutt  <brutt@bloomington.in.us>
+
+       * ffap.el (ffap-pass-wildcards-to-dired): New user option to
+       ensure dired always handles wildcards passed to ffap.
+       (find-file-at-point): Use it.
+       (ffap-dired-wildcards): Doc fix.
+
+2005-04-07  Juri Linkov  <juri@jurta.org>
+
+       * simple.el (next-error-overlay-arrow-position): New defvar.
+       Put "=>" on its property `overlay-arrow-string'.  Add it to
+       `overlay-arrow-variable-list'.
+
+       * progmodes/compile.el (compilation-setup):
+       Set `next-error-overlay-arrow-position' to nil.  Also set it to
+       nil in the local hook `kill-buffer-hook'.  Make local variable
+       `overlay-arrow-string' and set it to "=>".
+       (compilation-goto-locus): Set BOL position to
+       `next-error-overlay-arrow-position' instead of
+       `overlay-arrow-position'.
+
+       * info.el (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook'
+       locally instead of adding it to the global hook.
+       (Info-kill-buffer): Move up.
+
+2005-04-06  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term/xterm.el (xterm-standard-colors): Update color values from
+       xterm-200.
+
+2005-04-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/tex-mode.el (tex-font-lock-keywords-2): Add \bfseries.
+
+       * fast-lock.el:
+       * lazy-lock.el: Move them to the obsolete subdir.
+
+2005-04-06  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+
+       * wdired.el (wdired-advise-functions, wdired-add-skip-in-replace)
+       (wdired-add-replace-advice): Remove.
+       (wdired-change-to-wdired-mode): Use query-replace-skip-read-only.
+
+2005-04-06  Kim F. Storm  <storm@cua.dk>
+
+       * startup.el (command-line): Add --bare-bones alias for -Q.
+
+2005-04-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Use create-fontset-from-mac-roman-font to
+       create the startup fontset if a font specification ends with
+       `mac-roman'.
+
+2005-04-06  Lute Kamstra  <lute@gnu.org>
+
+       * add-log.el (change-log-font-lock-keywords): Complete 2005-04-03
+       change.
+
+       * emacs-lisp/copyright.el (copyright-update-year): Replace the
+       right subexpression.  Suggested by Jay Bingham <jay.bingham@hp.com>.
+
+2005-04-05  Lute Kamstra  <lute@gnu.org>
+
+       * generic.el (generic-mode-internal): Fix 2005-03-31 change.
+       (define-generic-mode): Ditto.  Fix debug declaration.
+
+       * generic-x.el (show-tabs-tab-face, show-tabs-space-face):
+       Put them in the generic-x group.
+
+       * calendar/timeclock.el (timeclock): Doc fix.
+
+       * generic.el (define-generic-mode): Don't use custom-current-group.
+       Document default :group value.
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Ditto.
+       (define-global-minor-mode): Don't use custom-current-group.
+
+2005-04-05  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * startup.el (command-line-1): Display startup-echo-area-message
+       when fancy splash screen is in use.
+
+       * progmodes/sh-script.el (sh-builtins) <bash>: Add `caller'.
+       (sh-escaped-newline): New face.
+       (sh-font-lock-keywords) <shell>: Improve regexp for escaped
+       newline, and use sh-escaped-newline face.
+
+       * progmodes/tcl.el (tcl-escaped-newline): New face.
+       (tcl-builtin-list): New variable.
+       (tcl-set-font-lock-keywords): Add builtins, variables, and escaped
+       newlines.  Fix keywords subexpression number.
+
+2005-04-05  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-diary-default-entry): Fix call to
+       `add-to-diary-entry'.
+
+2005-04-05  Kim F. Storm  <storm@cua.dk>
+
+       * ediff-init.el: Use (featurep 'xemacs).
+
+2005-04-05  David Ponce  <david@dponce.com>
+
+       * cus-edit.el (face): Derive from symbol widget.  Display sample
+       of the current face on the fly.
+       (widget-face-sample-face-get, widget-face-notify): New functions.
+       (widget-face-value-create): Remove.
+
+       * wid-edit.el (widget-field-end): Temporarily remove field
+       narrowing before to call `get-char-property'.
+
+2005-04-04  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-aent.el (math-read-replacement-list): Add subscripts.
+       (math-read-subscripts): New variable.
+       (math-read-preprocess-string): Process subscripts.
+
+2005-04-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * comint.el (comint-prompt-read-only): Doc fix.
+
+       * dired.el (dired-copy-filename-as-kill): Make `-' arg behave like
+       `-1'.  Doc fix.
+
+2005-04-04  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-insert-mode-line-in-empty-file):
+       Change default value to nil.
+
+2005-04-04  Lute Kamstra  <lute@gnu.org>
+
+       * autorevert.el (auto-revert-mode): Specify :group.
+       * battery.el (display-battery-mode): Specify :group.
+       * diff-mode.el (diff-minor-mode): Specify :group.
+       * font-core.el (font-lock-mode): Specify :group.
+       * hl-line.el (hl-line-mode): Specify :group.
+       * iimage.el (iimage): New customization group.
+       (iimage-mode): Specify :group.
+       * longlines.el (longlines-mode): Specify :group.
+       * master.el: Don't require easy-mmode.
+       (master): New customization group.
+       (master-mode): Specify :group.
+       * msb.el (msb-mode): Specify :group.
+       * reveal.el (reveal-mode): Specify :group.
+       * simple.el (next-error-follow-minor-mode): Specify :group.
+       * smerge-mode.el (smerge-mode): Specify :group.
+       * emacs-lisp/eldoc.el (eldoc-mode): Specify :group.
+       * emulation/cua-base.el (cua-mode): Specify :group.
+       * international/encoded-kb.el (encoded-kbd-mode): Specify :group.
+       * language/thai-util.el (thai-auto-composition-mode)
+       (thai-word-mode): Specify :group.
+       * mail/supercite.el (sc-minor-mode): Specify :group.
+       * progmodes/cwarn.el (cwarn-mode): Specify :group.
+       * progmodes/flymake.el (flymake-mode): Specify :group.
+       * progmodes/glasses.el (glasses-mode): Specify :group.
+       * progmodes/hideif.el (hide-ifdef-mode): Specify :group.
+       * textmodes/enriched.el (enriched-mode): Specify :group.
+       * textmodes/refill.el (refill-mode): Specify :group.
+
+       * add-log.el (change-log-font-lock-keywords): Names in
+       parenthesized lists can contain spaces.
+
+2005-04-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * startup.el (fancy-splash-text): Shorten default text of
+       "Emacs Tutorial" line.  Also, if the current language env
+       indicates an available tutorial file other than TUTORIAL,
+       extract its title and append it to the line in parentheses.
+       (fancy-splash-insert): If arg is a thunk, funcall it.
+
+2005-04-04  Jay Belanger  <belanger@truman.edu>
+
+       * calc.el (calc-language-alist): Add tags to customization type.
+
+2005-04-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * xt-mouse.el (xterm-mouse-mode): Add explicit Custom group, mouse.
+       Doc fix.
+
+2005-04-03  Marcelo Toledo  <marcelo@gnu.org>
+
+       * add-log.el (change-log-font-lock-keywords): The manual
+       describing a Change Log entry, says: (...) "Aside from these
+       header lines, every line in the change log starts with a space or
+       a tab.".  The font-lock was not highlighting lines started with
+       spaces, added support for it.
+
+2005-04-03  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-url): Use format to generate the url.
+       (bibtex-generate-url-list): Update docstring accordingly.  Put the
+       complex example in the docstring.
+       (bibtex-font-lock-url): Use pop.
+
+2005-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/tcl.el (tcl-set-font-lock-keywords): Use new \_< ops.
+
+       * pcvs.el (cvs-checkout): Prompt for cvsroot as well.
+
+2005-04-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * filesets.el (filesets-set-default): Doc fix.
+
+2005-04-03  Lute Kamstra  <lute@gnu.org>
+
+       * generic.el (define-generic-mode): Add argument to specify
+       keywords for defcustom.
+       (default-generic-mode): Specify :group.
+
+       * generic-x.el: Specify :group for all generic modes.
+
+       * desktop.el (desktop-no-desktop-file-hook)
+       (desktop-after-read-hook): Doc fix.
+
+2005-04-02  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * simple.el (visible-mode): Use explicit :group keyword.
+       This changes the group of `visible-mode-hook' from paren-blinking
+       to editing-basics.
+
+2005-04-02  Sergey Poznyakoff  <gray@Mirddin.farlep.net>  (tiny change)
+
+       * mail/rmail.el (rmail-parse-url): Bugfix.  Parse traditional
+       mailbox specifications as well as URLs.
+       (rmail-insert-inbox-text): Remove unused conditional branches.
+
+2005-04-01  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-graph.el (calc-gnuplot-name, calc-gnuplot-plot-command)
+       (calc-gnuplot-print-command): Move definitions to calc.el.
+
+       * calc/calc-embed.el (calc-embedded-announce-formula)
+       (calc-embedded-open-formula, calc-embedded-close-formula)
+       (calc-embedded-open-word, calc-embedded-close-word)
+       (calc-embedded-open-plain, calc-embedded-close-plain)
+       (calc-embedded-open-new-formula, calc-embedded-close-new-formula)
+       (calc-embedded-open-mode, calc-embedded-close-mode):
+       Move definitions to calc.el.
+
+       * calc/calc.el (calc-settings-file, calc-language-alist):
+       Make customizable.
+       (calc-embedded-announce-formula, calc-embedded-open-formula)
+       (calc-embedded-close-formula, calc-embedded-open-word)
+       (calc-embedded-close-word, calc-embedded-open-plain)
+       (calc-embedded-close-plain, calc-embedded-open-new-formula)
+       (calc-embedded-close-new-formula, calc-embedded-open-mode)
+       (calc-embedded-close-mode, calc-gnuplot-name)
+       (calc-gnuplot-plot-command, calc-gnuplot-print-command): Move here
+       from other files and make customizable.
+
+2005-04-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs.el (cvs-temp-buffer, cvs-mode-kill-process, cvs-buffer-check):
+       Use buffer-live-p.
+       (cvs-mode-run): Don't call cvs-update-header here.
+       (cvs-run-process): Call cvs-update-header.
+       Use process properties for cvs-postprocess and cvs-buffer so that
+       the sentinel can behave better if the temp buffer is killed.
+       Use a pipe rather than a tty, to better handle unexpected prompts.
+       (cvs-sentinel): Rewrite.  Call cvs-update-header.
+
+2005-04-01  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc-hooks.el (vc-workfile-unchanged-p): Disable mtime check when
+       we go via Tramp or Ange-FTP.  Suggested by Kai Grossjohann.
+
+2005-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * generic.el (define-generic-mode): Add indentation rule.
+
+2005-03-31  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * files.el (mode-require-final-newline): Make Custom correctly
+       report a nil value and allow to set it to nil via Custom.
+       Doc fix.
+
+2005-04-01  Kenichi Handa  <handa@m17n.org>
+
+       * international/characters.el: Enable the correct case setting for
+       dotless-i and dotted-I.
+
+2005-04-01  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-file-internal): Fall back to non-ido command if
+       initial directory is on slow ftp (or tramp) host.
+
+2005-03-31  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/autoload.el (make-autoload):
+       Handle define-global-minor-mode.
+
+       * emacs-lisp/easy-mmode.el (define-global-minor-mode):
+       Rename from easy-mmode-define-global-mode.
+       (easy-mmode-define-global-mode): Alias for define-global-minor-mode.
+
+       * progmodes/scheme.el (scheme-mode-syntax-table):
+       Update syntax of | and # for two-character comment syntax.
+
+2005-03-31  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/easy-mmode.el (easy-mmode-define-global-mode)
+       (define-minor-mode): Call custom-current-group at load-time.
+
+       * generic.el (define-generic-mode): Add debug declaration.
+       Add defcustom for the mode hook.
+       (generic-mode-internal): Use run-mode-hooks.
+
+2005-03-31  Kim F. Storm  <storm@cua.dk>
+
+       * mouse.el (mouse-1-click-follows-link): Increase to 450 ms.
+       (mouse-fixup-help-message): New defun called by show_help_echo
+       to fixup mouse-2 prefix in help messages when applicable.
+
+       * tooltip.el (tooltip-show-help-function): Don't fixup message here.
+
+2005-03-31  Kenichi Handa  <handa@m17n.org>
+
+       * language/thai-word.el (thai-find-word-ends): Pay attention to
+       the case that we reach the end of buffer.
+
+       * textmodes/fill.el (fill-text-properties-at): New function.
+       (fill-newline): Use fill-text-properties-at instead of
+       text-properties-at.
+
+2005-03-31  Olive Lin  <olive.lin@versateladsl.be>  (tiny change)
+
+       * textmodes/tex-mode.el (tex-start-tex): Use shell-quote-argument,
+       not comint-quote-filename.
+
+2005-03-31  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * help-fns.el (help-with-tutorial): Revert last change.
+
+2005-03-31  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-scroll-down): Add CUA property.
+
+2005-03-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * calendar/cal-china.el: Update reference to "Calendrical
+       Calculations" book; there's a new edition.
+       * calendar/cal-coptic.el: Likewise.
+       * calendar/cal-french.el: Likewise.
+       * calendar/cal-hebrew.el: Likewise.
+       * calendar/cal-islam.el: Likewise.
+       * calendar/cal-iso.el: Likewise.
+       * calendar/cal-julian.el: Likewise.
+       * calendar/cal-mayan.el: Likewise.
+       * calendar/cal-persia.el: Likewise.
+       * calendar/calendar.el: Likewise.
+       * calendar/holidays.el: Likewise.
+       * calendar/lunar.el: Likewise.
+       * calendar/solar.el: Likewise.
+
+       * calendar/calendar.el (calendar-day-abbrev-array): Remove trailing
+       white space from doc string.
+
+2005-03-30  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-help.el (calc-full-help): Remove email address.
+
+2005-03-30  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * help-fns.el (help-with-tutorial): Delete title line.
+
+2005-03-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/cal-x.el (calendar-one-frame-setup)
+       (calendar-only-one-frame-setup, calendar-two-frame-setup): Use t
+       rather than `symbol' for set-window-dedicated-p.
+
+       * calendar/appt.el (appt-buffer-name): Make it a constant.
+       (appt-add): Doc fix.
+
+       * filesets.el (filesets-menu-path, filesets-menu-before)
+       (filesets-menu-in-menu): Doc fix.  Now valid in GNU Emacs.
+       (filesets-menu-cache-file): Use directory ~/.emacs.d.
+       (filesets-add-submenu): Delete and use add-submenu instead.
+
+2005-03-30  Carsten Dominik  <dominik@science.uva.nl>
+
+       * org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
+       (org-agenda-convert-date, org-agenda-goto-calendar): New commands.
+       (org-diary-default-entry): New function.
+       (org-get-entries-from-diary): Better parsing of diary entries.
+       (org-agenda-check-no-diary): New function.
+       ("diary-lib"): Advice to function `add-to-diary-list', to allow
+       linking to diary entries.
+       (org-agenda-execute-calendar-command): New function.
+       (org-agenda): Improve visible section in window.
+       Use `org-fit-agenda-window'.
+       (org-fit-agenda-window): New option.
+       (org-move-subtree-down): Better handling of empty lines
+       at end of subtree.
+       (org-cycle): Numeric prefix is interpreted now as show-subtree N
+       levels up.
+       (org-fontify-done-headline): New option.
+       (org-headline-done-face): New face.
+       (org-set-font-lock-defaults): Use `org-headline-done-face'.
+       (org-table-copy-down): Rename from `org-table-copy-from-above'.
+       When current field is non-empty, it is copied to next row.
+       (org-table-copy-from-above): Fix bug which made it
+       impossible to copy fields containing only a single non-white character.
+
+2005-03-30  Kim F. Storm  <storm@cua.dk>
+
+       * kmacro.el (kmacro-end-macro): Isearch may store this command
+       into the macro -- so ignore it when executing keyboard macro.
+
+2005-03-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * tooltip.el (tooltip-gud-display): Use gud-overlay-arrow-position.
+
+2005-03-29  Kenichi Handa  <handa@m17n.org>
+
+       * language/thai.el ("Thai"): Set setup-function and exit-function
+       for Thai language environment.
+
+       * language/thai-util.el: Require thai-word.
+       (thai-word-mode-map): New variable.
+       (thai-word-mode): New minor mode.
+       (setup-thai-language-environment-internal): New function.
+       (exit-thai-language-environment-internal): New function.
+
+       * language/thai-word.el (thai-word-table): Declare it by defvar,
+       use dolist to initialize it.
+       (thai-kill-word, thai-backward-kill-word, thai-transpose-words)
+       (thai-fill-find-break-point): New functions.
+
+2005-03-29  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (idle-update-delay): Move definition up.
+       (set-mark): Doc fix.
+
+2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * longlines.el: New file.
+
+       * simple.el (buffer-substring-filters): New variable.
+       (filter-buffer-substring): New function.
+       (kill-region, copy-region-as-kill): Use it.
+
+       * register.el (copy-to-register, append-to-register)
+       (prepend-to-register): Use filter-buffer-substring.
+
+2005-03-30  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el (gdb): (Re)-initialize gud-filter-pending-text.
+       (gud-filter-pending-text): Move in front of gdb.
+       (gud-overlay-arrow-position): New variable.
+       (gud-sentinel, gud-display-line): Use it in place of
+       overlay-arrow-position.
+
+2005-03-29  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * progmodes/fortran.el (fortran-if-indent): Doc fix.
+       (fortran-font-lock-keywords-2): Add "where", "elsewhere".
+       (fortran-font-lock-keywords-4): New variable.
+       (fortran-blocks-re, fortran-end-block-re)
+       (fortran-start-block-re): New constants, for hideshow.
+       (hs-special-modes-alist): Add a Fortran entry.
+       (fortran-mode-map): Bind fortran-end-of-block,
+       fortran-beginning-of-block to \M-\C-n, \M-\C-p.
+       (fortran-mode): Doc fix.  Add fortran-font-lock-keywords-4.
+       (fortran-looking-at-if-then, fortran-end-of-block)
+       (fortran-beginning-of-block): New functions, for hideshow.
+
+       * progmodes/f90.el (f90-end-block-re, f90-start-block-re):
+       Doc fix.  Tweak regexp.
+       (f90-beginning-of-block): Push mark first.
+
+2005-03-29  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el: Update copyright date.
+       (calc-version): Increase to 2.1.
+       (calc-version-date): Remove.
+
+       * calc/calc-help.el: Update copyright date.
+       (calc-full-help): Remove reference to calc-version-date.
+       Update copyright date.
+
+2005-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc.el (vc-do-command): Use a pipe for async processes, so password
+       prompts don't show up at places where the user can't reply.
+
+2005-03-29  Olive Lin  <olive.lin@versateladsl.be>  (tiny change)
+
+       * textmodes/tex-mode.el (tex-send-command): shell-quote-argument
+       on the file name we pass to the inferior shell.
+
+2005-03-29  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
+
+       * progmodes/which-func.el (which-function): Be robust in the face of an
+       imenu--make-index-alist failure.
+
+2005-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * reveal.el (reveal-mode-map): Don't override C-a and C-e.
+
+       * progmodes/python.el (python-preoutput-filter): Fix last change.
+
+2005-03-29  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (debug-on-entry): Handle autoloaded
+       functions and compiled macros.
+       (debug-convert-byte-code): Handle macros too.
+       (debug-on-entry-1): Don't signal an error when trying to clear a
+       function that is not set to debug on entry.
+
+2005-03-29  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-lang.el: Add functions to math-function-table
+       properties of tex and math.
+
+2005-03-29  Kenichi Handa  <handa@m17n.org>
+
+       * ps-mule.el (ps-mule-plot-string): Translate characters by
+       ps-print-translation-table.
+       (ps-mule-begin-job): Call find-charset-region/string with
+       ps-print-translation-table.
+       (ps-mule-printable-p): Return t if CHARSET is ascii or latin-iso8859-1.
+
+       * ps-print.el (ps-print-translation-table): New variable.
+       (ps-plot-region): Translate characters by ps-print-translation-table.
+
+2005-03-29  Juri Linkov  <juri@jurta.org>
+
+       * simple.el (next-error-highlight-timer): New variable.
+
+       * progmodes/compile.el (compilation-goto-locus):
+       Use `next-error-highlight-timer' instead of `sit-for'.
+
+2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mail/supercite.el (sc-mail-field): Use assoc-string.
+       (sc-get-address): Simplify regexps.
+
+       * files.el (minibuffer-with-setup-hook): New macro.
+       (find-file-read-args): Use it to avoid let-binding
+       minibuffer-with-setup-hook (which breaks turning on/off
+       file-name-shadow-mode while in the prompt).
+
+       * complete.el (PC-read-include-file-name-internal):
+       Use test-completion.
+
+2005-03-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * font-lock.el: Bind `font-lock-fontify-block' to M-o M-o.
+
+2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.el (window-buffer-height): Use count-screen-lines.
+
+       * progmodes/python.el (python-preoutput-leftover): New var.
+       (python-preoutput-filter): Use it.
+       (python-send-receive): Loop until all the result has been received.
+
+2005-03-28  Juri Linkov  <juri@jurta.org>
+
+       * dired.el (dired-mode-map): Add ellipsis to "Compare directories".
+
+       * menu-bar.el (menu-bar-file-menu): Remove ellipsis from
+       "Recover Crashed Session".
+       (menu-bar-search-menu): Add ellipsis to "Search tagged files".
+       (menu-bar-replace-menu): Add ellipsis to "Replace in tagged files".
+       (menu-bar-goto-menu): Add ellipsis to "Set Tags File Name".
+       (menu-bar-goto-menu): Add ellipsis to "Tags Apropos".
+       (menu-bar-options-menu): Add ellipsis to "Set Font/Fontset".
+       (menu-bar-manuals-menu): Add ellipsis to "Find Command in Manual".
+       (menu-bar-manuals-menu): Add ellipsis to "Find Key in Manual".
+       (menu-bar-help-menu): Remove ellipsis from "Find Emacs Packages".
+
+       * ediff-hook.el (menu-bar-ediff-misc-menu, ediff-misc-menu):
+       Remove ellipsis from "Ediff Manual", "Customize Ediff", "List
+       Ediff Sessions", "Toggle use of separate control buffer frame",
+       "Use separate frame for Ediff control buffer".
+
+       * bookmark.el (menu-bar-bookmark-map): Add ellipsis to "Jump to
+       Bookmark", "Set Bookmark", "Insert Contents", "Insert Location",
+       "Rename Bookmark", "Delete Bookmark".
+
+       * info.el (Info-mode-menu): Remove ellipsis from "Index".
+       Add ellipsis to "Lookup a String", "Lookup a string in all indices".
+       Add `:active Info-index-alternatives' to "Next Matching Item".
+
+       * wdired.el (wdired-change-to-wdired-mode):
+       Mention `wdired-abort-changes' key in the initial message.
+
+       * international/mule.el (auto-coding-alist): Associate non-ascii
+       image filename extensions with `no-conversion'.
+
+2005-03-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * international/iso-acc.el:
+       * obsolete/iso-acc.el: Move iso-acc to the obsolete subdir.
+
+2005-03-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * textmodes/sgml-mode.el (html-mode): Doc update.
+
+       * autorevert.el (auto-revert-check-vc-info): Minor doc fix.
+
+2005-03-26  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.el (term-move-columns): Fix face after extending a line.
+       (term-insert-spaces): Likewise.
+       (term-reset-terminal): Fix off by one error.
+
+2005-03-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/mule.el (auto-coding-alist): Add .xpi files.
+
+       * files.el (auto-mode-alist): Add .xpi files.
+
+2005-03-26  Jure Cuhalev  <gandalf@owca.info>  (tiny change)
+
+       * textmodes/ispell.el (ispell-dictionary-alist-6): Add slovenian.
+
+2005-03-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * term/bobcat.el: Don't use keyswap.el, since it is now obsolete.
+
+2005-03-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/cal-menu.el (top level): Delete local C-down-mouse-3
+       binding.  Suggested by Stephan Stahl <stahl@eos.franken.de>.
+
+       * calendar/cal-move.el (calendar-beginning-of-year): Move the
+       cursor to Jan 1 when needed.
+       (calendar-end-of-year): Fix -/+ typo.
+       Reported by Chong Yidong <cyd@stupidchicken.com>.
+
+2005-03-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/flymake.el (flymake-mode): Add autoload cookie.
+
+       * emacs-lisp/debug.el (debugger-record-expression): Add a missing
+       format to `message'.  Inspired by Deepak Goel <deego@gnufans.org>.
+
+2005-03-25  Richard M. Stallman  <rms@gnu.org>
+
+       * filesets.el (filesets-init): Add autoload.
+
+       * mail/mailalias.el (mail-directory): Doc fix.
+
+2005-03-25  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
+
+       * mail/mailalias.el (mail-directory-process): Do nothing if
+       mail-directory-process is an atom.
+       (mail-get-names): Ignore mail-directory-names if it is an atom.
+       (mail-directory-process defvar): Doc fix.
+       (mail-names): Doc fix.
+
+2005-03-25  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>  (tiny change)
+
+       * textmodes/flyspell.el (mail-mode-flyspell-verify): Fix regexp syntax.
+
+2005-03-26  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-util.el (detect-coding-with-priority):
+       Call update-coding-systems-internal before detect-coding-region.
+
+2005-03-26  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-breakpoints-mode-map)
+       (gdb-frames-mode-map): Add follow-link property.
+
+2005-03-25  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calcalg2.el (calc-solve-for): Use "Variable(s)" to prompt
+       for variables.
+
+2005-03-25  Juri Linkov  <juri@jurta.org>
+
+       * image-mode.el: Optimize image filename extension regexps in
+       autoload cookies.  Associate .x[bp]m with `image-mode-maybe'
+       in `auto-mode-alist'.
+       (image-mode): Add `image-toggle-display-text' to local hook
+       `change-major-mode-hook'.  Display the image as an image by
+       default.  Set `cursor-type' and `truncate-lines' if the image
+       is already displayed.  Take into account the current mode (image
+       or text) in message.
+       (image-minor-mode): New minor mode.
+       (image-mode-maybe, image-toggle-display-text): New functions.
+       (image-toggle-display): Use called-interactively-p.
+       Let-bind `inhibit-read-only' to t.
+
+       * image-mode.el (image-minor-mode): Set `cursor-type' and
+       `truncate-lines' if the image is already displayed.  Add turning
+       image-minor-mode off to `change-major-mode-hook'.  Add message.
+       Call `image-toggle-display-text' after turning image-minor-mode off.
+
+2005-03-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * international/mule-cmds.el (set-locale-environment): For Mac OS X's
+       Terminal.app, use utf-8.
+       (set-display-table-and-terminal-coding-system): Add coding-system arg.
+       (set-locale-environment): Use it.
+
+       * term/xterm.el: Undo last change, better done in mule-cmds.el.
+
+       * emacs-lisp/rx.el (rx-constituents): Add symbol-start and symbol-end.
+
+       * progmodes/python.el (python-close-block-statement-p)
+       (python-outdent-p, python-current-defun): Use symbol-end.
+
+2005-03-25  Karl Chen  <quarl@cs.berkeley.edu>
+
+       * files.el (save-some-buffers): Doc fix.
+
+2005-03-25  Werner Lemberg  <wl@gnu.org>
+
+       * complete.el, thumbs.el: Replace `legal' with `valid'.
+       * calendar/calendar.el: Replace `legal' with `valid'.
+       * emacs-lisp/advice.el: Replace `legal' with `valid'.
+       * mail/supercite.el: Replace `legal' with `valid'.
+       * progmodes/cperl-mode.el, progmodes/idlw-shell.el
+       * progmodes/idlwave.el, progmodes/vhdl-mode.el:
+       Replace `legal' with `valid'.
+       * textmodes/reftex-vars.el, textmodes/reftex.el:
+       Replace `legal' with `valid'.
+
+2005-03-25  Werner Lemberg  <wl@gnu.org>
+
+       * calc/calc-forms.el, calc/calc-sel.el
+       * midnight.el, vc-cvs.el
+       * emacs-lisp/cl-macs.el
+       * emulation/vip.el
+       * eshell/esh-io.el, eshell/esh-var.el
+       * mail/supercite.el
+       * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el
+       * progmodes/ebnf-ebx.el, progmodes/ebnf-dtd.el, progmodes/ebnf-iso.el
+       * progmodes/ebnf-yac.el, progmodes/ebnf2ps.el, progmodes/idlwave.el
+       * progmodes/sh-script.el, progmodes/xscheme.el
+       * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el
+       * textmodes/reftex-index.el, textmodes/reftex-parse.el
+       * textmodes/reftex-ref.el, textmodes/reftex-vars.el
+       * textmodes/reftex.el, textmodes/org.el:
+       Replace `illegal' with `invalid'.
+
+2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/flymake.el (flymake-get-file-name-mode-and-masks)
+       (flymake-find-buildfile, flymake-find-possible-master-files)
+       (flymake-check-include, flymake-parse-line): Replace loops over the
+       length of lists, by loops over lists, to remove silly O(n\e,A2\e(B) behavior.
+
+       * progmodes/flymake.el (flymake-ensure-ends-with-slash): Remove.
+       Substitute file-name-as-directory in the rest of the file.
+       (flymake-get-common-file-prefix): Rewrite, using compare-strings.
+       (flymake-replace-region): Remove unused arg `buffer'.
+       (flymake-check-patch-master-file-buffer): Update calls to it.
+       (flymake-add-err-info): Remove unused var `count'.
+       (flymake-mode): Use define-minor-mode.
+
+       * progmodes/flymake.el: Use with-current-buffer.
+       (flymake-float-time, flymake-get-temp-dir, flymake-line-end-position)
+       flymake-replace-regexp-in-string, flymake-line-beginning-position)
+       (flymake-popup-menu, flymake-current-row, flymake-selected-frame):
+       Avoid testing for `xemacs'.
+       (flymake-nop): Move.
+       (flymake-region-has-flymake-overlays): Return the computed value.
+       (flymake-reformat-err-line-patterns-from-compile-el): Use dolist.
+       Remove unused var `endline'.
+       (flymake-get-line-count): Remove unused function.
+       (flymake-display-err-menu-for-current-line): Unused var move-mouse-pos.
+
+       * emulation/vi.el:
+       * generic.el:
+       * hilit-chg.el (global-highlight-changes):
+       * hi-lock.el (hi-lock-mode):
+       * follow.el: find-file-hooks -> find-file-hook.
+
+       * comint.el (comint-insert-input): Obey mouse-yank-at-point.
+
+2005-03-24  Juri Linkov  <juri@jurta.org>
+
+       * dired.el (dired-mode-map): Add menu item "Compare directories"
+       for dired-compare-directories.
+
+       * dired-aux.el (dired-compare-directories): Add autoload cookie.
+       Doc fix.  Replace `read-file-name' with `read-directory-name'.
+
+2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * term/xterm.el: If running in Terminal.app set coding-system to utf-8.
+
+2005-03-24  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (calc-embedded-mode-change): Save all
+       relevant mode settings in calc-embedded-original-modes when modes
+       are permanently changed.
+
+2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * autoinsert.el: find-file-hooks -> find-file-hook.
+
+2005-03-24  Lute Kamstra  <lute@gnu.org>
+
+       * generic.el (generic-font-lock-defaults): Make it obsolete.
+       (generic-font-lock-keywords): New variable to replace
+       generic-font-lock-defaults.
+       (generic-mode-set-font-lock): Delete it.
+       (generic-mode-internal): Don't call generic-mode-set-font-lock.
+       (generic-bracket-support): Add docstring.
+
+       * generic-x.el: Rename generic-font-lock-defaults to
+       generic-font-lock-keywords throughout.
+       (mailagent-rules-setup-function): Delete it.
+       (mailagent-rules-generic-mode): Use anonymous function instead.
+       (show-tabs-generic-mode-font-lock-defaults-1)
+       (show-tabs-generic-mode-font-lock-defaults-2): Make them constants.
+       Quote faces.
+       (show-tabs-tab-face, show-tabs-space-face): Specify background,
+       not foreground.
+
+       * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression):
+       Recognize define-generic-mode.
+
+2005-03-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * icomplete.el (icomplete-simple-completing-p): Don't turn on icomplete
+       if there's no completion table.
+
+2005-03-23  Miles Bader  <miles@gnu.org>
+
+       * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled):
+       Remove tty-specific variants, as they're no longer needed.
+
+2005-03-23  Lute Kamstra  <lute@gnu.org>
+
+       * generic-x.el: Code cleanup: make args constant whenever possible.
+       (installshield-statement-keyword-list)
+       (installshield-system-functions-list)
+       (installshield-system-variables-list, installshield-types-list)
+       (installshield-funarg-constants-list): Make them constants.
+
+       * generic.el (generic-make-keywords-list): Add autoload cookie.
+
+       * calendar/time-date.el: Add comment on time value formats.
+       Don't require parse-time.
+       (with-decoded-time-value): New macro.
+       (encode-time-value): New function.
+       (time-to-seconds, time-less-p, time-subtract, time-add): Use them.
+       (days-to-time): Return a valid time value when arg is huge.
+       (time-since): Use time-subtract.
+       (time-to-number-of-days): Use time-to-seconds.
+
+2005-03-23  David Ponce  <david@dponce.com>
+
+       * recentf.el (recentf-keep): New option.
+       (recentf-menu-action): Default to `find-file'.
+       (recentf-keep-non-readable-files-flag)
+       (recentf-keep-non-readable-files-p)
+       (recentf-file-readable-p, recentf-find-file)
+       (recentf-cleanup-remote): Remove.
+       (recentf-include-p): More robust.
+       (recentf-keep-p): New function.
+       (recentf-remove-if-non-kept): Rename from
+       `recentf-remove-if-non-readable'.  Use `recentf-keep-p'.
+       All callers updated.
+       (recentf-menu-items-for-commands): Fix help string.
+       (recentf-track-closed-file): Update.  Doc fix.
+       (recentf-cleanup): Update.  Count removed files.  Doc fix.
+
+2005-03-23  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled):
+       Don't inherit from fringe face (now happens automatically).
+
+2005-03-22  Kim F. Storm  <storm@cua.dk>
+
+       * tooltip.el (tooltip-show-help-function): Ignore negative mouse
+       position values.
+
+2005-03-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * menu-bar.el (showhide-date-time): Remove.
+       (menu-bar-showhide-menu): Use menu-bar-make-mm-toggle.
+       (menu-bar-make-mm-toggle): Simplify.
+
+2005-03-22  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+
+       * progmodes/perl-mode.el (perl-font-lock-keywords-2):
+       Accept qualified variable and function names.
+
+2005-03-22  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * bindings.el (completion-ignored-extensions):
+       Remove ".lis" for `vax-vms'.
+
+2005-03-22  Andreas Schwab  <schwab@suse.de>
+
+       * generic-x.el: Revert last change.
+       * ldefs-boot.el: Update.
+
+2005-03-22  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (calc-embedded-original-modes): New variable.
+       (calc-embedded-save-original-modes)
+       (calc-embedded-restore-original-modes): New functions.
+       (calc-do-embedded): Save original modes when entering embedded mode
+       and restore when leaving embedded mode.
+       (calc-embedded-modes-change): Change the value of
+       calc-embedded-original-modes to reflect permanent changes.
+
+2005-03-22  Lute Kamstra  <lute@gnu.org>
+
+       * generic-x.el: Require generic again.
+
+2005-03-22  Miles Bader  <miles@gnu.org>
+
+       * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled):
+       Tweak details to look good on both ttys and bitmap displays, light
+       or dark background, etc.
+
+2005-03-21  Kim F. Storm  <storm@cua.dk>
+
+       * tooltip.el (tooltip-show-help-function): Check car and cdr of
+       mouse position.
+
+2005-03-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * icomplete.el: Don't forcibly turn on the mode upon load.
+       (icomplete-mode): Use define-minor-mode.
+       (icomplete-eoinput): Default to nil.
+       (icomplete-minibuffer-setup): Remove autoload.
+       (icomplete-tidy): Simplify.
+       (icomplete-exhibit): Use buffer-undo-list to determine if we're still
+       in the initial state or if the user has modified the field.
+       Fix handling of icomplete-max-delay-chars.
+       Remove code that handles the oddball case where
+       minibuffer-completion-table is an integer.
+       Wrap icomplete-completions in while-no-input in case building
+       completions takes more time than expected.
+       (icomplete-completions): Simplify.
+
+2005-03-21  Richard M. Stallman  <rms@gnu.org>
+
+       * jka-compr.el (jka-compr-really-do-compress):
+       Make variable buffer-local.
+
+       * image-mode.el: Handle .xpm files too.
+       (image-toggle-display): Preserve modification flag.
+
+       * help.el (where-is): Don't mention aliases with no key bindings.
+
+2005-03-21  Lute Kamstra  <lute@gnu.org>
+
+       * generic.el: Fix commentary section.  Don't require cl for
+       compilation.
+       (generic-mode-list): Add autoload cookie.
+       (generic-use-find-file-hook, generic-lines-to-scan)
+       (generic-find-file-regexp, generic-ignore-files-regexp)
+       (generic-mode, generic-mode-find-file-hook)
+       (generic-mode-ini-file-find-file-hook): Fix docstrings.
+       (define-generic-mode): Make it a defmacro.  Fix docstring.
+       (generic-mode-internal): Code cleanup.  Add autoload cookie.
+       (generic-mode-set-comments): Code cleanup.
+       * generic-x.el: Don't prevent compilation.  Don't require generic.
+       Follow coding conventions.  Minor code cleanup.
+       (etc-fstab-generic-mode): Add some keywords.
+       * font-lock.el (lisp-font-lock-keywords-1): Font lock a call to
+       define-generic-mode like a function declaration.
+
+2005-03-21  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (calc-do-embedded): Put data on stack before
+       changing modes.
+
+2005-03-21  Sam Steingold  <sds@gnu.org>
+
+       * add-log.el (add-log-current-defun): Support more C DEFUN forms.
+
+2005-03-21  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * progmodes/dcl-mode.el (dcl-font-lock-keywords):
+       Add underscore to "f$ lexicals" regexp.
+
+2005-03-20  Juri Linkov  <juri@jurta.org>
+
+       * subr.el (progress-reporter-do-update): When `min-value' is equal
+       to `max-value', set `percentage' to 0 and prevent division by zero.
+
+2005-03-20  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.48.
+
+       * net/tramp.el (all): Change all addresses to .gnu.org.
+       (tramp-append-tramp-buffers): New defun.
+       (tramp-bug): Apply `tramp-append-tramp-buffers' as post-hook.
+       Catch `dont-send' signal.
+       (tramp-set-auto-save-file-modes): Set always permissions, because
+       there might be an old auto-saved file belonging to another
+       original file.  This could be a security threat.  Reported by
+       Kjetil Kjernsmo <kjetil@kjernsmo.net>.
+       Check for Emacs 21.3.50 removed.
+
+       * net/tramp-smb.el (all): Remove debug construct for
+       `with-parsed-tramp-file-name'.
+       (tramp-smb-prompt): Prompt can contain spaces inside directory names.
+       (tramp-smb-handle-delete-directory, tramp-smb-handle-delete-file):
+       No error message if DIRECTORY or FILENAME doesn't exist.
+       (tramp-smb-open-connection): Check existence of
+       `tramp-smb-program'.
+
+2005-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/perl-mode.el (perl-font-lock-syntactic-face-function):
+       Properly handle the case where the `m' or `s' command's argument is not
+       yet terminated.
+       (perl-indent-new-calculate): New function.
+       (perl-indent-line): Use it.
+
+2005-03-20  Miles Bader  <miles@gnu.org>
+
+       * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Use breakpoint faces
+       in text-mode too.  Change to new face names.
+       (breakpoint-enabled): Rename from `breakpoint-enabled-bitmap-face'.
+       Add `:weight bold' attribute.
+       (breakpoint-disabled): Rename from `breakpoint-disabled-bitmap-face'.
+
+2005-03-19  Juri Linkov  <juri@jurta.org>
+
+       * files.el (auto-mode-alist): Add comment.  Optimize jar/ear/war.
+
+       * international/mule.el (auto-coding-alist): Sync with
+       `auto-mode-alist' by adding upper case archive file extensions
+       and adding ear/war to jar extension.
+
+2005-03-19  David Casperson  <casper@unbc.ca>  (tiny change)
+
+       * textmodes/tex-mode.el (tex-view): If tex-shell process is not
+       running, restart it.
+
+2005-03-19  Yoichi NAKAYAMA  <yoichi@geiin.org>  (tiny changes)
+
+       * finder.el (finder-current-item): Throw an error on an empty line.
+
+       * man.el (Man-follow-manual-reference): If current-word returns
+       nil, use "".
+
+2005-03-19  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * simple.el (goto-line): Doc fix.
+
+2005-03-19  Aaron S. Hawley  <Aaron.Hawley@uvm.edu>
+
+       * files.el (save-buffer): Doc fix.
+
+2005-03-19  Michael R. Mauger  <mmaug@yahoo.com>
+
+       * recentf.el (recentf-cleanup-remote): New variable.
+       (recentf-cleanup): Use it to conditionally check availability of
+       remote files.
+
+2005-03-19  Joe Edmonds  <joe-bugs-debian-org@elem.com>  (tiny change)
+
+       * emacs-lisp/lisp-mode.el (lisp-mode-variables): Recognize `@' in
+       function names.
+
+2005-03-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * language/thai-word.el: New file.
+
+2005-03-19  JUAN-LEON Lahoz Garcia  <juanleon1@gmail.com>
+
+       * files.el (backup-buffer): If the file's directory is not
+       writable, use copy instead of move to backup the file.
+
+2005-03-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * obsolete/keyswap.el: Moved to obsolete/ from term/.
+
+2005-03-19  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.el (ps-generate-string-list, ps-generate-header-line):
+       Use functionp instead of symbolp and fboundp.  Reported by Drkm
+       <darkman_spam@yahoo.fr>.
+       (ps-print-version): New version 6.6.6.
+
+2005-03-18  Tak Ota  <Takaaki.Ota@am.sony.com>
+
+       * textmodes/table.el (table--line-column-position): New idiom.
+       (table--row-column-insertion-point-p): New function to test
+       validity of row and column insertion operation at a location.
+       (table-global-menu, table-cell-menu): Use above functions for
+       deterministic test operation.
+       (table--editable-cell-p): Behave in deterministic fashion.
+
+2005-03-18  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-lazy-highlight-new-loop):
+       Make arguments beg and end optional.
+       (isearch-update): Remove optional arguments nil from
+       isearch-lazy-highlight-new-loop.
+       (isearch-lazy-highlight-search): Let-bind case-fold-search to
+       isearch-lazy-highlight-case-fold-search instead of
+       isearch-case-fold-search, and let-bind isearch-regexp to
+       isearch-lazy-highlight-regexp.
+       Use isearch-lazy-highlight-last-string instead of isearch-string.
+
+       * replace.el (perform-replace): Remove bindings of global
+       variables isearch-string, isearch-regexp, isearch-case-fold-search.
+       Add three new arguments to `replace-highlight'.
+       (replace-highlight): Add arguments string, regexp, case-fold.
+       Let-bind isearch-string, isearch-regexp, isearch-case-fold-search
+       to allow isearch-lazy-highlight-new-loop to use these values
+       to set corresponding isearch-lazy-highlight-* internal
+       variables whose values lazy highlighting will use regardless of
+       changes to global variables isearch-string, isearch-regexp,
+       isearch-case-fold-search during lazy highlighting loop.
+       (replace-dehighlight): Rename `isearch-lazy-highlight-cleanup'
+       to `lazy-highlight-cleanup'.
+
+       * textmodes/ispell.el (ispell-lazy-highlight): New defcustom.
+       (ispell-highlight-face): Set default face to `isearch' when
+       lazy highlighting is enabled.
+       (ispell-highlight-spelling-error-overlay): Set `ispell-overlay'
+       priority to 1.  Add lazy highlighting.
+       (ispell-highlight-spelling-error-xemacs): Remove obsolete arg
+       from `isearch-dehighlight'.
+
+2005-03-18  David Ponce  <david@dponce.com>
+
+       * files.el (hack-local-variables): Do a case-insensitive search
+       for End.
+
+2005-03-18  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (lazy-highlight-cleanup) <command>: Rename from
+       `isearch-lazy-highlight-cleanup', add alias to old name and
+       declare obsolete.  Add release numbers to other obsolete vars.
+       (isearch-done, isearch-lazy-highlight-new-loop):
+       Rename `isearch-lazy-highlight-cleanup' to `lazy-highlight-cleanup'.
+       (lazy-highlight-cleanup) <variable>: Doc fix.
+       (isearch-lazy-highlight-update): Rename obsolete
+       `isearch-lazy-highlight-face' to `lazy-highlight-face'.
+
+2005-03-18  Kenichi Handa  <handa@m17n.org>
+
+       * language/thai-util.el: Fix categorization of Thai characters in
+       thai-category-table.
+       (thai-composition-pattern): Adjust it for the above change.
+       (thai-self-insert-command, thai-compose-syllable): New functions.
+       (thai-compose-region): Use thai-compose-syllable.
+       (thai-compose-string): Likewise.
+       (thai-composition-function): Likewise.
+       (thai-auto-composition): New function.
+       (thai-auto-composition-mode): New minor mode.
+
+       * language/thai.el: Fix patterns to be registered in
+       composition-function-table.
+
+       * international/quail.el (quail-input-method): Locally bind
+       inhibit-modification-hooks to t.
+
+2005-03-17  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/perl-mode.el (perl-mode-hook): Defvar it.
+       (perl-mode): Use run-mode-hooks.
+
+       * mail/rmail.el (rmail-movemail-program, rmail-pop-password)
+       (rmail-pop-password-required, rmail-remote-password): Doc fixes.
+       (rmail-preserve-inbox, rmail-probe, rmail-autodetect): Doc fix.
+
+       * mail/sendmail.el (sendmail-send-it): Reenable the code
+       to compute resend-to-address and use it.
+
+       * tar-mode.el (tar-mode): Turn off undo unconditionally.
+
+       * image-mode.el: New file.
+
+       * image.el (insert-sliced-image): Add autoload cookie.
+
+       * font-lock.el (font-lock-lines-before): New user option.
+       (font-lock-after-change-function): Obey it.
+
+       * bindings.el (esc-map): Make M-g a prefix.
+       Bind M-g g and M-g M-g to goto-line.
+
+       * faces.el (face-id): Doc fix.
+
+2005-03-17  Frederik Fouvry  <fouvry@CoLi.Uni-SB.DE>
+
+       * mail/rmail.el (rmail-unknown-mail-followup-to): New function.
+       (rmail-show-message): Use rmail-unknown-mail-followup-to.
+       (rmail-reply): Recognize Mail-Followup-To and Mail-Reply-To headers.
+
+       * mail/sendmail.el (mail-yank-ignored-headers)
+       (mail-font-lock-keywords, mail-mode-fill-paragraph):
+       Add Mail-Followup-To and Mail-Reply-To headers.
+       (mail-citation-hook): Add autoload cookie.
+       (mail-mode): Doc fix.
+       (mail-mode-map): Bind mail-mail-followup-to and mail-mail-reply-to.
+       (mail-send): Compute Mail-Followup-To and Mail-Reply-To headers.
+       (mail-mode-fill-paragraph): Handle those headers.
+       (mail-mailing-lists): New variable.
+       (mail-mail-reply-to, mail-mail-followup-to): New functions.
+
+2005-03-17  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-fallback): Check for `(car previous)'
+       before calling `isearch-other-end-state'.
+
+2005-03-17  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (move-beginning-of-line): Move to beginning of buffer
+       line, as well as beginning of screen line.
+
+2005-03-16  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/diary-lib.el (mark-diary-entries): Use new optional
+       argument REDRAW rather than calendar-redrawing variable.
+       * calendar/calendar.el (calendar-redrawing): Delete.
+       (redraw-calendar): Do not bind calendar-redrawing.
+
+2005-03-16  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * calendar/diary-lib.el (diary-redraw-calendar): Preserve point in
+       diary-file buffer.
+
+2005-03-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * help.el (describe-mode): Allow a :minor-mode-function property to
+       specify a different minor mode toggle function than the variable.
+       * simple.el (auto-fill-function):
+       * subr.el (add-minor-mode): Use it.
+
+2005-03-16  Kenichi Handa  <handa@m17n.org>
+
+       * language/ethio-util.el (sera-being-called-by-w3): New variable.
+       (ethio-sera-to-fidel-ethio): Check also sera-being-called-by-w3.
+       (ethio-fidel-to-sera-buffer): Likewise.
+
+2005-03-16  Juri Linkov  <juri@jurta.org>
+
+       * emacs-lisp/find-func.el (find-function-regexp):
+       Add defun-emitting macro `menu-bar-make-toggle'.
+
+       * isearch.el: Put `isearch-scroll' property to
+       `split-window-horizontally'.
+
+       * info.el: Update error messages for `debug-ignored-errors'.
+       (Info-isearch-search): Doc fix.
+       (Info-find-node): Move up code to go into info buffer before
+       recording the node to the history.
+       (Info-fontify-node): Fontify titles only if the next line
+       has two or more `*', `=', `-', `.'.
+       Display "go to this node" for empty (match-string 3).
+
+2005-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * term/mac-win.el: Add mouse pointer shape constants.
+
+2005-03-15  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (move-beginning-of-line): Use vertical-motion.
+
+2005-03-15  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-error): New variable.
+       (isearch-invalid-regexp, isearch-within-brackets): Remove.
+       (isearch-error-state): Rename from `isearch-invalid-regexp-state'.
+       (isearch-within-brackets-state): Remove.
+       (isearch-case-fold-search-state, isearch-pop-fun-state):
+       Decrease frame index.
+       (isearch-mode, isearch-top-state, isearch-push-state)
+       (isearch-edit-string, isearch-abort, isearch-search-and-update)
+       (isearch-fallback, isearch-message-prefix, isearch-message-suffix)
+       (isearch-search, isearch-lazy-highlight-new-loop):
+       Replace `isearch-invalid-regexp' with `isearch-error'.
+       Remove `isearch-within-brackets'.
+       (isearch-search): Add `search-failed' handler to `condition-case'.
+       (isearch-lazy-highlight-search): Add `condition-case' to catch
+       errors and allow `isearch-lazy-highlight-update' to try
+       highlighting from the beginning of the window.
+       (isearch-repeat): Move up code to set isearch-wrapped to t
+       before calling isearch-wrap-function.
+
+       * info.el (Info-isearch-initial-node): New internal variable.
+       (Info-search): Signal an error in isearch mode when search leaves
+       the initial node.  Signal an error when `bound' is non-nil and
+       nothing was found in the current subfile.
+       (Info-isearch-search): Remove `condition-case'.
+       (Info-isearch-wrap): Don't wrap when search failed during leaving
+       the initial node.  If `Info-isearch-search' is nil, wrap around
+       the current node.
+       (Info-isearch-start): New fun.
+       (Info-mode): Add buffer-local hook `Info-isearch-start' to
+       `isearch-mode-hook'.
+
+2005-03-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * simple.el (normal-erase-is-backspace): Set default to t if
+       running on Mac.
+
+       * term/mac-win.el (function-key-map): Sync with x-win.el.
+
+2005-03-15  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule-cmds.el (locale-language-names): Modify the
+       format of elements and add more entries.
+       (locale-preferred-coding-systems): Add more entries.
+       (set-locale-environment): Adjust for the change of
+       locale-language-names.
+
+2005-03-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs.el (smerge-ediff): Remove bogus autoload.
+
+2005-03-14  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (debugger-make-xrefs): Docstring fix.
+       Ignore a `*' at the beginning of a line.
+
+       * subr.el (macro-declaration-function): Move to emacs-lisp/byte-run.el.
+       * emacs-lisp/byte-run.el (macro-declaration-function): Move from
+       subr.el.
+       (dont-compile, eval-when-compile, eval-and-compile): Use declare
+       to specify indentation.
+
+       * generic.el (define-generic-mode): Let generic-mode-list be a
+       list of strings; test membership with equal.
+
+2005-03-14  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (next-line, previous-line): Add optional try-vscroll
+       arg to recognize interactive use.  Pass it on to line-move.
+       (line-move): Don't perform auto-window-vscroll when defining or
+       executing keyboard macro to ensure consistent behavior.
+
+2005-03-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcvs-util.el (cvs-string->strings): Strip trailing whitespace.
+
+2005-03-13  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (debug): Set debug-on-exit before calling
+       debugger-setup-buffer so that backtrace marks the frames set to
+       debug-on-exit and we don't have to do it manually.  Set an extra
+       debug-on-exit for macro's.
+       (debugger-setup-buffer): Don't mark the top frame manually.
+
+2005-03-12  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/byte-run.el: Replace lisp-indent-hook with
+       lisp-indent-function throughout.
+       (with-no-warnings): Set lisp-indent-function property.
+
+2005-03-12  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * progmodes/dcl-mode.el (dcl-mode-syntax-table):
+       Add entry for backslash.
+
+2005-03-12  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-search): Four fixes for backward search.
+
+2005-03-11  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-language-alist): New variable.
+       * calc/calc-embed.el (calc-embedded-language-alist): Remove.
+       (calc-embedded-find-modes): Use calc-language-alist instead of
+       calc-embedded-language-alist.
+
+2005-03-11  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/calendar.el (calendar-redrawing): New internal
+       variable.
+       (redraw-calendar): Remove bogus save-excursion from previous
+       change.  Bind calendar-redrawing to t for mark-diary-entries.
+       * calendar/diary-lib.el (mark-diary-entries): No need to redraw
+       calendar if that is why we were called.
+
+2005-03-11  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule.el (make-coding-system): Set property
+       coding-system-define-form to nil.
+       (define-coding-system-alias): Likewise.
+
+2005-03-11  Kenichi Handa  <handa@m17n.org>
+
+       These changes are suggested by Dave Love <fx@gnu.org>.
+
+       * textmodes/fill.el: Change encoding to iso-2022-7bit and add
+       coding: tag.
+       (adaptive-fill-regexp): Add more bullets.
+       (fill-french-nobreak-p): Add Latin-1 and Latin-9 guillemets in
+       regexps.
+
+2005-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * help.el (describe-mode): Properly handle non-trivial lighters.
+       Don't ignore minor modes that are not listed in minor-mode-list.
+
+       * tooltip.el (tooltip-mode): Don't complain that you can't turn the
+       feature ON when the user requests to turn it OFF.
+
+2005-03-10  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (debug-entry-code): Delete it.
+       (implement-debug-on-entry): New function to replace debug-entry-code.
+       (debug-on-entry-1): Use implement-debug-on-entry.  Delete the
+       second argument as the 2005-03-07 change makes it obsolete.
+       (debug-on-entry, cancel-debug-on-entry): Update call to
+       debug-on-entry-1.
+       (debug, debugger-setup-buffer): Comment update.
+       (debugger-frame-number): Update to work with implement-debug-on-entry.
+
+2005-03-10  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (math-ms-args): Declare it.
+       (calc-embedded-eval-expr, calc-embedded-eval-get-var): Use variable
+       math-ms-args.
+       (calc-embedded-subst): Use math-multi-subst-rec to substitute
+       variables.
+
+2005-03-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-handler, gdb-get-location):
+       Use message-box.
+
+       * tooltip.el (tooltip-mode): Use define-minor-mode and simplify.
+       (tooltip-activate-mouse-motions-if-enabled): Use dolist.
+       (tooltip-gud-tips): Simplify.
+       (tooltip-gud-tips-p): Remove superfluous :set.
+       (tooltip-gud-modes): Add fortran-mode.
+       (gdb-tooltip-print): Remove newline for tooltip-use-echo-area.
+
+       * bindings.el (mode-line-mode-menu): Add tooltip-mode to mode-line.
+
+2005-03-09  Kim F. Storm  <storm@cua.dk>
+
+       * play/animate.el (animate-place-char): Use forward-line instead
+       of next-line to improve performance.
+
+2005-03-09  Simon Josefsson  <jas@extundo.com>
+
+       * net/browse-url.el (browse-url-default-browser): Doc fix.
+
+2005-03-09  Miles Bader  <miles@gnu.org>
+
+       * emacs-lisp/bytecomp.el (byte-compile-variable-ref)
+       (byte-compile-obsolete): Change " since VER" to " (as of Emacs VER)".
+
+2005-03-09  Kenichi Handa  <handa@m17n.org>
+
+       * international/latin-1.el: Set case and syntax for 255 only if
+       set-case-syntax-set-multibyte is nil.
+
+       * textmodes/ispell.el (ispell-insert-word): New function.
+       (ispell-word): Use ispell-insert-word to insert a new word.
+       (ispell-process-line): Likewise.
+       (ispell-complete-word): Likewise.
+
+2005-03-09  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/calendar.el (redraw-calendar): Preserve point.
+       Reported by Matt Hodges <MPHodges@member.fsf.org>.
+       (calendar-week-start-day): Move after definition of
+       redraw-calendar.  Delete buffer test, since redraw-calendar has
+       that now.
+
+       * calendar/diary-lib.el (mark-diary-entries): Only call
+       redraw-calendar in the first of any recursive calls.
+       Reported by Alan Shutko <ats@acm.org>.
+
+2005-03-08  Juri Linkov  <juri@jurta.org>
+
+       * textmodes/sgml-mode.el (sgml-tag, html-tag-alist)
+       (html-horizontal-rule, html-line, html-image, html-checkboxes)
+       (html-radio-buttons): Add a space before the trailing `/>' where
+       sgml-xml-mode is non-nil.
+       (sgml-delete-tag): Check if the tag ends with `/>' to not delete
+       the subsequent tag of the empty XML tag.
+       (html-href-anchor): Don't set initial input to "http:".
+       (html-image): Ask for the image URL and set point inside alt="".
+       (html-name-anchor): Duplicate the name in the `id' attribute when
+       sgml-xml-mode is non-nil.
+       (html-paragraph): Remove \n before <p>.
+       (html-checkboxes, html-radio-buttons): Insert `checked="checked"'
+       instead of `checked' when sgml-xml-mode is non-nil.
+
+       * facemenu.el (list-colors-print): Print #RRGGBB in default face.
+       Remove 1 space before #RRGGBB to not truncate it on terminal
+       windows w/o fringes.  Remove 1 space between bg and fg examples
+       to get more space.
+       (list-colors-duplicates): Replace `and' with `if' for `boundp' to
+       avoid byte-compile warnings.
+
+       * image-file.el (image-file-handler): Put `safe-magic' property to
+       `image-file-handler'.
+
+       * info.el (Info-isearch-search): Emulate word search in
+       isearching through multiple Info nodes with Info-search.
+       (Info-isearch-wrap): Allow isearch-word.
+
+2005-03-08  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (debugger-step-through): Make sure that
+       stepping into the debugger's code is not possible.
+       (debugger-jumping-flag): Docstring update.
+
+2005-03-08  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (calc-do-embedded): Reset mode line when
+       embedded mode begins.
+       (calc-embedded-language-alist): New variable.
+       (calc-embedded-find-modes): Use calc-embedded-language-alist to
+       set default language mode.
+
+2005-03-08  Kenichi Handa  <handa@m17n.org>
+
+       * international/ccl.el (define-ccl-program): Fix docstring about
+       extra 256 bytes assured for the output buffer.
+
+       * international/utf-16.el (ccl-encode-mule-utf-16le-with-signature):
+       Fix BUFFER_MAGNIFICATION to 2.
+       (ccl-encode-mule-utf-16be-with-signature): Likewise.
+
+2005-03-07  Karl Chen  <quarl@cs.berkeley.edu>
+
+       * align.el (align-rules-list): Added an alignment rule for CSS
+       declarations (applies to css-mode and html-mode buffers).
+
+2005-03-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/debug.el (debug-on-entry-1): Fix handling of macros.
+
+2005-03-07  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (move-beginning-of-line): New command.
+
+       * bindings.el (global-map): Bind C-a to move-beginning-of-line.
+
+       * reveal.el (reveal-mode-map): Bind C-a to beginning-of-line.
+
+       * emulation/cua-base.el: Put CUA move property on move-end-of-line
+       and move-beginning-of-line.
+
+       * apropos.el (apropos-print): Omit command from M-x ... RET.
+
+2005-03-07  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-create-handler): Handle just MI case.
+       (gdb-send, gdb-send-item): Log items sent from gdb-send too.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+       * bindings.el (esc-map): Bind M-g to goto-line.
+
+       * facemenu.el (global-map): Bind M-o, not M-g.
+
+2005-03-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * menu-bar.el (menu-bar-file-menu): Add the same :enable to
+       "Open Directory" as for "Open File".
+
+2005-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * simple.el (activate-mark-hook, deactivate-mark-hook): Add defvars.
+       (push-mark-command): Run activate-mark-hook.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+       * help-mode.el (help-mode-finish): Don't alter the element
+       in view-return-to-alist if there already is one.
+
+       * jit-lock.el (jit-lock-stealth-fontify): When calling sit-for,
+       make sure the current buffer is the expected one.
+
+       * novice.el (disabled-command-function): Output in *Disabled Command*.
+       Explicitly ignore non-keyboard events, and explicitly handle C-g.
+
+       * textmodes/flyspell.el (flyspell-large-region):
+       Pass args differently for aspell.
+
+       * files.el (mode-require-final-newline): Doc fix.
+
+2005-03-03  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
+
+       * progmodes/which-func.el (which-function):
+       Specify NOERROR when calling imenu--make-index-alist.
+
+2005-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (normal-erase-is-backspace): Define default value.
+
+       * custom.el (custom-theme-set-variables): Remove unused var
+       `immediate'.
+       (custom-reevaluate-setting): Simple function to handle variables
+       that are defined before their default value can really be
+       computed.
+
+       * startup.el (command-line): Use it for temporary-file-directory,
+       small-emporary-file-directory, auto-save-file-name-transforms,
+       blink-cursor-mode, and normal-erase-is-backspace.
+
+       * font-lock.el (font-lock-fontify-keywords-region): Ensure forward
+       progress, even with buggy anchored keywords.
+
+2005-03-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * simple.el (goto-line): Remove unbalanced final parenthesis.
+
+2005-03-05  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (goto-line): Use a number at point as the default.
+       With C-u as arg, switch buffers.
+
+2005-03-05  Juri Linkov  <juri@jurta.org>
+
+       * frame.el (blink-cursor-mode): Replace `emacs-quick-startup'
+       with `no-blinking-cursor'.
+
+       * startup.el (no-blinking-cursor): New defvar.
+       (command-line): Add `--no-blinking-cursor' to longopts.
+       Set `no-blinking-cursor' to t for command line arguments
+       -Q, -nbc, --no-blinking-cursor.  Replace `emacs-quick-startup'
+       with `no-blinking-cursor' in the condition for calling
+       `blink-cursor-mode'.
+
+2005-03-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * menu-bar.el (menu-bar-make-mm-toggle): Doc fix.
+       (menu-bar-options-save): Add blink-cursor-mode.
+       (menu-bar-options-menu): Add blink-cursor-mode.
+
+2005-03-04  Ulf Jasper  <ulf.jasper@web.de>
+
+       * calendar/icalendar.el (icalendar-version): Increase to 0.11.
+       (icalendar-export-file, icalendar-export-region)
+       (icalendar-import-file, icalendar-import-buffer): Add autoload cookies.
+       (icalendar--convert-ical-to-diary): Fix problem with DURATION.
+
+2005-03-04  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (debugger-step-after-exit): Make it a defvar.
+       (debug-function-list): Ditto.
+
+2005-03-04  Robert J. Chassell  <bob@rattlesnake.com>
+
+       * textmodes/texinfmt.el (texinfo-append-refill):
+       Redefine the types of line to which @refill
+       is not appended by replacing a search for `@refill\\|@bye' with
+       `@refill\\|^[ \t]*@'.  The intent is to solve both the `@end
+       itemize@refill' bug and the unfilled long lines bug.
+       (texinfmt-version): Update number and date.
+
+2005-03-04  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * international/code-pages.el (windows-1250, windows-125[2-8])
+       (iso-8859-10, -13, -16, georgian-ps): Add autoload cookies.
+
+2005-03-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.el (blink-cursor-mode): `emacs-quick-startup' may not be
+       bound yet.
+
+2005-03-02  Romain Francoise  <romain@orebokech.com>
+
+       * ibuf-ext.el (ibuffer-filter-disable): Move back to the current
+       buffer after removing limits.
+       (ibuffer-pop-filter): Ditto.
+       Update copyright.
+
+2005-03-02  Miles Bader  <miles@gnu.org>
+
+       * button.el (make-text-button): If the user doesn't specify a
+       type, use the default.  Rewrite to use `add-text-properties' and
+       plist functions.
+
+2005-03-01  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (inhibit-debug-on-entry): Add docstring.
+       (debugger-jumping-flag): New var.
+       (debug-entry-code): Use it.
+       (debugger-jump): Use debugger-jumping-flag and add
+       debugger-reenable to post-command-hook.
+       (debugger-reenable): Use debugger-jumping-flag and remove itself
+       from post-command-hook.
+       (debug, debug-on-entry, cancel-debug-on-entry): Remove call to
+       debugger-reenable.
+
+2005-03-01  Robert J. Chassell  <bob@rattlesnake.com>
+
+       * textmodes/texinfmt.el (texinfo-no-refill-regexp): Comment out
+       inclusion of "itemize\\|", which may be unnecessary, is certainly
+       inelegant, and stops refilling in itemize lists when formatting
+       Japanese Texinfo files to Info.
+       Update copyright to 2005.
+
+2005-03-01  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-get-location): Use a warning instead
+       of an error if GDB can't find the source file.
+
+2005-03-01  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/calendar.el (redraw-calendar): Work from any buffer,
+       not just the calendar.
+
+       * calendar/diary-lib.el (mark-diary-entries): Remove any old marks
+       first.
+       (diary-redraw-calendar): New function.
+       (make-diary-entry): Add diary-redraw-calendar to local
+       write-contents-functions.  Turn off selective display before
+       inserting in diary.
+
+2005-03-01  Kim F. Storm  <storm@cua.dk>
+
+       * emacs-lisp/copyright.el (copyright-fix-years): New command.
+
+2005-03-01  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/debug.el (debug-on-entry-1): Reimplement to make sure
+       that debug-entry-code can be safely removed from a function while
+       this code is being evaluated.  Revert the 2005-02-27 change as the
+       new implementation no longer requires it.  Make sure that a
+       function body containing just a string is not mistaken for a docstring.
+       (debug): Skip one more frame in case of debug on entry.
+       (debugger-setup-buffer): Delete one more frame line in case of
+       debug on entry.
+       (debugger-frame-number): Update to use the new text introduced by
+       the 1999-11-03 change.  Skip one more frame in case of debug on entry.
+
+2005-02-28  Kim F. Storm  <storm@cua.dk>
+
+       * double.el (double-translate-key): Call force-window-update after
+       read-event to avoid crash in redisplay.
+
+2005-02-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/debug.el (inhibit-debug-on-entry): New var.
+       (debug): Use it.  Move the inhibit-trace earlier.
+       (debug-entry-code): New const.
+       (debug-on-entry-1): Use it.
+
+2005-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * international/utf-16.el (ccl-encode-mule-utf-16le):
+       Fix BUFFER_MAGNIFICATION to 2.
+       (ccl-encode-mule-utf-16be): Likewise.
+
+2005-02-28  Kenichi Handa  <handa@m17n.org>
+
+       * international/utf-16.el (ccl-encode-mule-utf-16le-with-signature):
+       Fix BUFFER_MAGNIFICATION to 4.
+       (ccl-encode-mule-utf-16be-with-signature): Likewise.
+
+2005-02-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * speedbar.el (speedbar-update-flag): Doc fix.
+       (speedbar-show-info-under-mouse): Give set-mouse-position the right
+       argument.
+
+2005-02-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * reveal.el (reveal-post-command): Don't try to reveal overlays which
+       have a non-nil `invisible' property but are actually visible.
+
+       * progmodes/perl-mode.el (perl-imenu-generic-expression): Add entries
+       for perldoc sections.
+       (perl-outline-regexp, perl-outline-level): New var and function.
+       (perl-mode): Use them.
+
+2005-02-27  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * calendar/diary-lib.el (diary-remind): Discard any mark portion
+       from diary-entry.  Reported by Andrew Kemp <ajwk@pell.uklinux.net>.
+
+2005-02-27  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el: Comment change.
+       (custom-buffer-create-internal): Slightly reword text at top of
+       Custom buffers.  Mention there that saving an option edits the
+       init file.  Add link to Emacs manual node on `custom-file'.
+       (custom-magic-alist): Rewrite individual State messages to use
+       capitalized keywords.  Doc fix.
+
+2005-02-27  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * calendar/calendar.el (calendar-buffer): Move above
+       calendar-week-start-day.
+       (calendar-week-start-day): Doc fix.  Add :set function.
+       (calendar-minimum-window-height): New variable.
+       (generate-calendar-window): Only resize window if selected-window
+       is displaying the calendar buffer.  Use new variable
+       calendar-minimum-window-height.
+       (generate-calendar): Reword error message.
+       (calendar-mode-map): Bind DEL to scroll-other-window-down.
+
+2005-02-27  Andreas Schwab  <schwab@suse.de>
+
+       * vc.el (vc-do-command): Don't run command asynchronously when
+       operating in a remote directory.
+
+       * net/tramp.el (tramp-file-name-for-operation): Fix misapplied
+       change from sync with Tramp 2.0.47.
+
+2005-02-27  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/ispell.el (ispell-change-dictionary): Doc fix.
+
+       * textmodes/flyspell.el (flyspell-mode-on):
+       Call ispell-change-dictionary only if necessary.
+
+       * emacs-lisp/re-builder.el (regexp-builder): New function.
+
+       * register.el (describe-register-1): Explicitly handle
+       yank-excluded-properties = t.
+
+       * cus-edit.el (custom-buffer-create-internal): Improve progress msgs.
+       (custom-magic-alist): Change the status descriptions again.
+       (face widget-type): Total rewrite based on `restricted-sexp'
+       to eliminate the confusing double hiding levels.
+
+       * emacs-lisp/debug.el (debug-on-entry-1):
+       If function body is empty, add nil as body form.
+
+2005-02-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/trace.el (inhibit-trace): New var.
+       (trace-make-advice): Use it.
+
+       * emacs-lisp/debug.el (debug): Put back the inhibit-trace.
+
+2005-02-26  Kim F. Storm  <storm@cua.dk>
+
+       * mouse.el (mouse-1-click-in-non-selected-windows): New defcustom.
+       (mouse-on-link-p, mouse-drag-region-1): Use it.
+
+2005-02-25  Lute Kamstra  <lute@gnu.org>
+
+       * replace.el (query-replace-read-from): Fix 2005-02-19 change.
+
+2005-02-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * frame.el (blink-cursor-mode): Add :group keyword.
+
+2005-02-24  Ulf Jasper  <ulf.jasper@web.de>
+
+       * calendar/icalendar.el (icalendar--decode-isodatetime):
+       New optional argument DAY-SHIFT.
+       (icalendar-export-region): Fix coding-system-for-write.
+       (icalendar--convert-ical-to-diary): Shift end-day of all-day
+       events by one.
+
+2005-02-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/tex-mode.el (tex-font-lock-keywords-3): #n is atomic.
+
+2005-02-24  Kim F. Storm  <storm@cua.dk>
+
+       * international/iso-acc.el (iso-accents-compose): Fix crash
+       during redisplay.  Call force-window-update after read-event
+       and delete-region to signal that window is not accurate.
+
+2005-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/debug.el (debug): Hide the buffer if it's not killed.
+       Remove unused and inexistent var `inhibit-trace'.
+       (debugger-mode): Use run-mode-hooks.
+       (debugger-list-functions): Add buttons; setup xref stack.
+
+2005-02-23  Richard M. Stallman  <rms@gnu.org>
+
+       * calendar/appt.el (appt-time-msg-list): 3rd elt of each
+       appointment says it was explicitly made.
+       (appt-add): Set the 3rd element.
+       (appt-make-list): Preserve explicit appointments.
+
+       * subr.el (find-tag-default): Catch errors in forward-sexp.
+
+2005-02-23  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-isearch-search): New defcustom.
+       (Info-isearch-search): Call the default isearch function
+       when Info-isearch-search is nil.
+       (Info-isearch-wrap): Use variable Info-isearch-search.
+
+2005-02-22  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el: Comment change.
+
+2005-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * progmodes/hideif.el (hide-ifdef-use-define-alist):
+       Use completing-read.  Suggested by Juan-Leon Lahoz Garcia.
+
+2005-02-22  Simon Josefsson  <jas@extundo.com>
+
+       * net/browse-url.el (browse-url-netscape-new-window-is-tab):
+       New variable.
+       (browse-url-netscape): Use it.  Suggested by "Johann 'Myrkraverk'
+       Oskarsson" <myrkraverk@users.sourceforget.net>.
+
+2005-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * mouse.el (mouse-on-link-p): If arg POS is a mouse event,
+       check that window of that event is the selected window.
+       (mouse-drag-region-1): Compare mouse event window to selected
+       window before setting point.
+
+       * tooltip.el (tooltip-show-help-function): Pass event to
+       mouse-on-link-p so it can check selected window.
+
+2005-02-22  Kenichi Handa  <handa@m17n.org>
+
+       * ps-mule.el (ps-mule-header-string-charsets): Delete it.
+       (ps-mule-show-warning): New function.
+       (ps-mule-begin-job): Use ps-mule-show-warning if unprintable
+       characters are found.
+
+       * ps-print.el (ps-header-footer-string): Return a list of header
+       and footer strings.
+
+2005-02-21  Wolfgang Jenkner  <wjenkner@inode.at>  (tiny change)
+
+       * pcvs.el (cvs-retrieve-revision): Fix thinko.
+
+2005-02-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.el (blink-cursor-mode): Use define-minor-mode.
+
+       * term/mac-win.el (function-key-map): Use char-names more consistently.
+       (file-name-coding-system): Only set it for MacOS-9.  The other case is
+       already handled in mule-cmds.el (where it also works when mac-win.el
+       is not used).
+
+2005-02-21  Kenichi Handa  <handa@m17n.org>
+
+       * international/mule.el (ctext-pre-write-conversion): Always use
+       " *code-converting-work*" buffer for work.
+
+       * textmodes/ispell.el (ispell-dictionary-alist): Fix docstring.
+
+2005-02-20  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * progmodes/scheme.el (scheme-font-lock-keywords-2): Handle named-let.
+
+2005-02-20  Jonathan Yavner  <jyavner@member.fsf.org>
+
+       * ses.el (undo-more): Restore defadvice, but only the part that
+       allows changes outside the restricted area of the buffer.
+
+2005-02-20  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move): Add fourth optional arg try-vscroll which
+       must be set to perform auto-window-vscroll.
+       When moving backwards and doing auto-window-vscroll, automatically
+       vscroll to the last part of lines which are taller than the window.
+       (next-line, previous-line): Set try-vscroll arg on line-move.
+
+2005-02-19  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * replace.el (query-replace, query-replace-regexp)
+       (replace-string, replace-regexp): When operating on region, make
+       the minibuffer prompt say so.
+
+       * isearch.el (isearch-forward): Document isearch-query-replace and
+       isearch-query-replace-regexp keybindings.
+
+2005-02-19  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-aent.el (math-read-token): Add local variable.
+
+       * calc/calc-prog.el (calc-user-define-edit): Add local variable.
+       (calc-edit-top): Move declaration to earlier in file.
+       (calc-edit-macro-repeats): Add local variables.
+
+       * calc/calcalg2.el: Add differentiation rule for calcFunc-coth.
+       Adjust differentiation rules for calcFunc-tan, calcFunc-cot,
+       calcFunc-tanh.
+       Adjust integration rule for calcFunc-tan.
+
+2005-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * viper-cmd.el (viper-prefix-commands): Make into a defconst.
+       (viper-exec-buffer-search): Use regexp-quote to quote buffer string.
+       (viper-minibuffer-setup-sentinel): Make some variables buffer-local.
+       (viper-skip-separators): Bug fix.
+       (viper-set-searchstyle-toggling-macros): Allow to unset macros in a
+       particular major mode.
+       (viper-del-backward-char-in-replace): Don't put deleted char on the
+       kill ring.
+
+       * viper-ex.el (viper-color-display-p): New function.
+       (viper-has-face-support-p): Use viper-color-display-p.
+
+       * viper-keym.el (viper-gnus-modifier-map): New keymap.
+
+       * viper-macs.el (viper-unrecord-kbd-macro): Bug fix.
+
+       * viper-util.el (viper-glob-unix-files): Fix shell status check.
+       (viper-file-remote-p): Make equivalent to file-remote-p.
+
+       * viper.el (viper-major-mode-modifier-list):
+       Use viper-gnus-modifier-map.
+
+2005-02-19  David Kastrup  <dak@gnu.org>
+
+       * subr.el (subregexp-context-p): Fix garbled doc string by adding
+       quoting.
+
+2005-02-19  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-math.el (calc-arctan, calc-tanh, calc-arctanh):
+       Remove extra definitions.
+       (calc-coth): New function.
+       (calcFunc-cot): Fix `let'.
+
+2005-02-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * faces.el (escape-glyph, minibuffer-prompt): Add commentary for
+       the reasons we use "type pc" in these faces.
+
+       * button.el (button): Ditto.
+
+2005-02-19  Michael Mauger  <mmaug@yahoo.com>
+
+       * replace.el (query-replace-read-from): Set the value of
+       query-replace-from-history-variable to handle the case of an empty
+       string entered to accept the suggested default.
+
+       * net/tramp.el (tramp-file-name-for-operation):
+       Use dired-call-process instead of dired-call-process-command.
+
+2005-02-19  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-arith.el (math-trig-inverses, math-div-trig)
+       (math-div-non-trig): New variables.
+       (math-combine-prod-trig, math-div-new-trig, math-div-new-non-trig)
+       (math-div-isolate-trig, math-div-isolate-trig-term): New functions.
+       (math-combine-prod, math-div-symb-fancy): Add simplifications for
+       trig expressions.
+
+2005-02-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-var-update-handler)
+       (gdb-speedbar-timer-fn): Ensure speedbar updates with new values
+       for watch expressions,
+       (gdb-var-create-handler): Don't set speedbar-update-flag.
+       (gdb-post-prompt): Simplify test for speedbar.
+
+2005-02-19  Michael Kifer  <kifer@cs.stonybrook.edu>
+
+       * ediff.el (ediff-set-diff-overlays-in-one-buffer)
+       (ediff-set-fine-overlays-in-one-buffer, ediff-goto-word): Make sure
+       we use the syntax table of the correct buffer.
+       (ediff-same-file-contents, ediff-same-contents): Enhancements thanks to
+       Felix Gatzemeier.
+
+       * ediff-init.el (ediff-hide-face): Check for definedness of functions.
+       (ediff-file-remote-p): Make synonymous with file-remote-p.
+       In all deffaces ediff-*-face-*, use min-colors.
+
+       * ediff-mult.el (ediff-meta-mark-equal-files): Make use of
+       ediff-recurse-to-subdirectories.
+       (ediff-mark-if-equal): Check that the arguments are strings, use
+       ediff-same-contents (after to Felix Gatzemeier).
+
+       * ediff.el (ediff-merge-on-startup): Don't set buffer-modified-p to
+       nil.
+
+2005-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * log-view.el (log-view-message-re): Fix up Subversion regexp.
+
+2005-02-18  David Kastrup  <dak@gnu.org>
+
+       * progmodes/meta-mode.el (meta-mark-active): Fix condition to just
+       use `mark-active' when defined.
+
+2005-02-18  Kenichi Handa  <handa@m17n.org>
+
+       * ps-print.el (ps-font-info-database): New entry
+       ZapfChancery-MediumItalic with correct font name.  Fix font name
+       of the entry Zapf-Chancery-MediumItalic.
+
+2005-02-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * autorevert.el (auto-revert-stop-on-user-input): Further doc fix.
+
+2005-02-16  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-fallback-command): Pass user input to fallback command.
+
+2005-02-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers)
+       (gdb-find-file-hook): Add server prefix.
+
+2005-02-16  Richard M. Stallman  <rms@gnu.org>
+
+       * replace.el (perform-replace): Pass new args to replace-highlight.
+       (replace-highlight): Take region args,
+       and pass them to isearch-lazy-highlight-new-loop.
+
+       * novice.el (disabled-command-hook): Autoload the defalias
+       and the make-obsolete-variable call.
+
+       * menu-bar.el (menu-bar-select-frame): FRAME defaults to selected.
+
+       * isearch.el (isearch-lazy-highlight-start-limit)
+       (isearch-lazy-highlight-end-limit): New variables limit
+       the region for highlighting.
+       (isearch-lazy-highlight-new-loop): New args BEG and END.
+       (isearch-lazy-highlight-search): Use the new vars.
+       (isearch-lazy-highlight-update): Likewise.
+
+       * dired.el (dired-build-subdir-alist): Bind buffer-undo-list to t.
+
+       * cus-start.el (all): Use default-boundp.
+
+2005-02-15  David Casperson  <casper@unbc.ca>  (tiny change)
+
+       * menu-bar.el (menu-bar-select-frame): Handle current frame.
+
+2005-02-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * autorevert.el (auto-revert-stop-on-user-input)
+       (auto-revert-verbose): Doc fixes.
+
+2005-02-15  Benjamin Riefenstahl  <Benjamin.Riefenstahl@epost.de>
+
+       * international/mule-cmds.el (set-locale-environment): Remove call
+       to set-selection-coding-system on Windows.
+
+2005-02-15  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-alg.el: Add simplification rules for calcFunc-sec,
+       calcFunc-csc, calcFunc-cot, calcFunc-sech, calcFunc-csch, and
+       calcFunc-coth.
+       (math-simplify-sqrt): Add simplifications.
+
+       * calc/calc-arith.el (math-real-if-arg-functions): Add functions
+       to list.
+
+       * calc/calc-ext.el: Add functions to autoloads.
+
+       * calc/calc-math.el (calc-sec, calc-csc, calc-cot, calc-sech)
+       (calc-csch, calc-coth, calcFunc-sec, calcFunc-csc, calcFunc-cot)
+       (calcFunc-sech, calcFunc-csch, calcFunc-coth, math-sec-raw)
+       (math-csc-raw, math-cot-raw): New functions.
+
+       * calc/calc-rules.el (calc-DistribRules, calc-NegateRules): Add rules.
+
+       * calc/calc-undo.el (calc-handle-undo): Remove prefix from
+       the variable name in a message.
+
+       * calc/calc-units.el: Add simplification rules for calcFunc-sec,
+       calcFunc-csc, calcFunc-cot.
+
+       * calc/calcalg2.el: Add derivative and integration rules for
+       calcFunc-sec, calcFunc-csc, calcFunc-cot, calcFunc-sech,
+       calcFunc-csch, calcFunc-coth.
+       (math-do-integral-methods): Add to checks for when to use
+       substitutions.
+
+       * calc/calccomp.el (math-eqn-special-funcs): Add functions to list.
+
+2005-02-15  Lute Kamstra  <lute@gnu.org>
+
+       * emacs-lisp/lisp-mode.el (lisp-mode-variables):
+       Add ;;;###autoload to `outline-regexp'.  Suggested by Stefan Monnier
+       <monnier@iro.umontreal.ca>.
+       (lisp-outline-level): Improve efficiency.  Suggested by David
+       Kastrup <dak@gnu.org>.
+
+2005-02-15  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-find-file-unhook): New variable.
+       (gdb-set-gud-minor-mode, gdb-set-gud-minor-mode-1)
+       (gdb-set-gud-minor-mode-existing-buffers): New functions.
+       (gdb-find-file-hook): New hook.  Add it to find-file-hook.
+       (gdb-info-breakpoints-custom, gdb-source-info): Simplify.
+
+2005-02-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-start.el (all): Comment change.
+
+2005-02-14  Lute Kamstra  <lute@gnu.org>
+
+       * cus-start.el (all): Check if symbol is void.
+
+2005-02-14  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-cite.el (reftex-do-citation): Cleanup single
+       optional argument to \cite.
+
+2005-02-14  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-edit.el (custom-buffer-create-internal): Update help message.
+       (custom-magic-alist): Update help messages.
+
+       * cus-start.el (all): Allow a var to specify a standard value.
+
+2005-02-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * custom.el (custom-theme-set-variables): Handle variable aliases.
+
+       * frame.el (blink-cursor-timer): Doc fix.
+       (blink-cursor): Make it an alias for `blink-cursor-mode' and
+       declare obsolete.
+       (blink-cursor-mode): Define with defcustom and use correct
+       standard expression in that defcustom.
+       * startup.el (command-line): Adapt to above changes in frame.el.
+
+2005-02-11  Lute Kamstra  <lute@gnu.org>
+
+       * apropos.el (apropos-score-doc): Prevent division by zero.
+
+2005-02-11  Ulf Jasper  <ulf.jasper@web.de>
+
+       * calendar/icalendar.el (icalendar--get-event-property): Doc fix.
+       (icalendar--get-event-property-attributes)
+       (icalendar--get-event-properties)
+       (icalendar--datetime-to-diary-date): New functions.
+       (icalendar--split-value): Doc fix.
+       (icalendar--datetime-to-noneuropean-date)
+       (icalendar--datetime-to-european-date): New optional argument
+       SEPARATOR.  Return result as a string instead of a list.
+       (icalendar--get-weekday-number): Check if ABBREVWEEKDAY is nil.
+       (icalendar--convert-string-for-export): Rename arg S to STRING.
+       (icalendar-export-region): Doc fix.  Change name of error buffer.
+       Save output buffer.
+       (icalendar-import-file): Add blank at end of prompt.
+       (icalendar-import-buffer): Doc fix.  Do not switch to error
+       buffer.  Indicate status in return value.
+       (icalendar--convert-ical-to-diary): Doc fix.  Change name of error
+       buffer.  Save output buffer.  Handle exception from recurrence
+       rules (EXDATE, EXRULE).  Handle start- and end-date of recurring
+       events.  Fix problems with weekly all-day events.
+
+2005-02-10  Richard M. Stallman  <rms@gnu.org>
+
+       * simple.el (eval-expression-print-format):
+       Avoid warning about edebug-active.
+
+       * help.el (help-for-help-internal): Rename from help-for-help.
+       (help-for-help): Define with defalias.
+
+       * font-core.el (font-lock-default-function): Use with-no-warnings.
+
+       * cus-edit.el (custom-buffer-create-internal): Improve help-echo.
+
+       * custom.el (defface): Doc fix.
+
+2005-02-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-ann3): Re-instate GDB command "set
+       width 0" to prevent word wrapping problems.
+
+2005-02-09  Kim F. Storm  <storm@cua.dk>
+
+       * ido.el (ido-file-extensions-order): New defcustom.
+       (ido-file-extension-lessp, ido-file-extension-aux)
+       (ido-file-extension-order): New advanced file ordering.
+       (ido-file-lessp): New simple file ordering.
+       (ido-sort-list): Remove.
+       (ido-make-file-list): Use ido-file-lessp or ido-file-extension-lessp.
+       (ido-make-dir-list, ido-completion-help): Use ido-file-lessp.
+
+2005-02-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * progmodes/grep.el (grep-regexp-alist): Match an optional ^[[K
+       that some versions of grep produce.
+       (grep-mode-font-lock-keywords): Likewise.
+
+2005-02-09  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-location-list): New variable.
+       (gdb-cdir): Delete.
+       (gdb-info-breakpoints-custom, gdb-goto-breakpoint)
+       (gdb-source-info): Treat case when source file is in another
+       directory properly.
+       (gdb-get-location): New function.
+
+2005-02-07  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-prog.el (calc-write-parse-table-part)
+       (calc-fix-token-name): Fix a check for language type.
+
+       * calc/calccomp.el (math-compose-expr): Fix a check for language type.
+
+2005-02-07  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc-hooks.el (vc-make-version-backup): Ignore file-errors such
+       as directory not writable.
+
+2005-02-07  Kim F. Storm  <storm@cua.dk>
+
+       * emulation/cua-base.el (cua-max-undo, cua-undo): Remove.
+       (cua--standard-movement-commands): Remove list.
+       Instead, set CUA property value to move for movement commands.
+       (cua-movement-commands): Remove.  Users must set CUA prop instead.
+       (cua--pre-command-handler): Check CUA property.
+       (cua--init-keymaps): Don't remap undo commands.
+       (cua-mode): Don't call cua--rectangle-on-off.
+
+       * emulation/cua-rect.el (cua--undo-list, cua--tidy-undo-counter)
+       (cua--rect-undo, cua--tidy-undo-lists, cua--rectangle-on-off): Remove.
+       (cua--rect-undo-set-point): New var.
+       (cua--rectangle-undo-boundary): Setup undo apply entry.
+       (cua--rect-undo-handler): New function for rectangle undo.
+       (cua--rect-start-position, cua--rect-end-position): Add.
+       (cua--rectangle-post-command): Call cua--rectangle-set-corners
+       for restored rectangle.  Set point if cua--rect-undo-set-point.
+
+2005-02-06  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-lang.el (calc-tex-language): Display more information
+       in messages.
+
+       * calc/calccomp.el (math-compose-expr): Allow multiline matrices
+       in TeX mode.
+
+2005-02-06  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/lisp.el (buffer-end): Doc fix.
+
+2005-02-05  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>  (tiny change)
+
+       * net/ldap.el (ldap-search-internal): Support attributes with
+       optional descriptions separated by a semi-colon, as in
+       "userCertificate;binary".
+
+2005-02-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
+       isn't a cons (i.e. the version is 0).
+
+2005-02-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * help.el (help-for-help): Doc fix.
+
+2005-02-05  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el: Update copyright.  Put GDB-Frames before
+       GDB-Windows on the menu-bar as this works better.
+
+2005-02-04  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (calc-embedded-update): Don't put in
+       unnecessary newlines.  Adjust the end of formula marker.
+
+       * calc/calc-lang.el (math-latex-parse-frac): Don't use arguments.
+       (math-latex-parse-two-args): New function.
+
+2005-02-03  Lute Kamstra  <lute@gnu.org>
+
+       * help-fns.el (help-with-tutorial): Make sure that users cannot
+       remove the entire text of the tutorial by means of `undo'.
+
+2005-02-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/ispell.el (ispell-internal-change-dictionary): Fix problem
+       in recent changes, where the ispell process was repeatedly
+       killed & restarted.
+
+       * international/mule-cmds.el (set-locale-environment): Set file-name
+       coding system to utf-8 on Darwin systems.
+       (set-default-coding-systems): Don't set default-file-name-coding-system
+       on Darwin systems.
+
+2005-02-03  Richard M. Stallman  <rms@gnu.org>
+
+       * hi-lock.el (hi-lock-mode): Turning on Hi-Lock turns on Font-Lock.
+
+2005-02-03  Matt Hodges  <MPHodges@member.fsf.org>
+
+       * faces.el (list-faces-display): Add optional argument.
+
+2005-02-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font-core.el (font-lock-default-function): Handle the rare case where
+       only font-lock-keywords is set.
+
+2005-02-02  Kenichi Handa  <handa@m17n.org>
+
+       * international/characters.el: Cancel previous change for
+       I-WITH-DOT-ABOVE and DOTLESS-i.
+
+       * international/latin-5.el: Cancel previous change.
+
+2005-02-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gud.el: Correction to syntax in gud-menu-map.
+
+2005-02-02  Kenichi Handa  <handa@m17n.org>
+
+       * international/latin-5.el (tbl): Setup cases of I-WITH-DOT-ABOVE,
+       DOTLESS-i.
+
+       * international/characters.el: Setup cases of GREEK-FINAL-SIGMA,
+       Y-WITH-DIAERESIS, I-WITH-DOT-ABOVE, DOTLESS-i.
+
+       * case-table.el (get-upcase-table): New function.
+       (copy-case-table): Copy upcaes table too if non-nil.
+       (set-case-syntax-delims): Maintain upcase table too.
+       (set-case-syntax-pair): Likewise.
+       (set-upcase-syntax, set-downcase-syntax): New functions.
+       (set-case-syntax): Maintain upcase table too.
+
+2005-02-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-goto-info): Delete.
+
+       * progmodes/gud.el (gud-goto-info): New function.
+       (gud-tool-bar-map): Use correct icon.
+
+2005-02-01  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/lisp-mode.el (lisp-indent-function): Fix bug:
+       When delegating, order args in the funcall correctly.
+
+2005-02-01  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs-lisp/lisp-mode.el (lisp-indent-function): Doc fix.
+
+2005-02-01  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex.el (reftex-access-scan-info): Error out in a
+       buffer not visiting a file.
+
+2005-01-31  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-embed.el (calc-embedded-find-bounds): Set the formula
+       bound on the line with the formula.
+
+2005-01-31  Kim F. Storm  <storm@cua.dk>
+
+       * ses.el (ses-create-cell-variable-range)
+       (ses-destroy-cell-variable-range, ses-reset-header-string)
+       (ses-set-with-undo, ses-unset-with-undo, ses-aset-with-undo)
+       (ses-insert-row): Fix format of apply undo entries.
+
+2005-01-31  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-aent.el (math-read-token): Separate the TeX and LaTeX
+       parts.
+
+       * calc/calc-embed.el (calc-embedded-open-formula)
+       (calc-embedded-close-formula): Ignore matrix environments.
+
+       * calc/calc-ext.el (math-read-big-expr): Make LaTeX the default
+       TeX mode.
+
+       * calc/calc-lang.el (math-function-table, math-oper-table)
+       (math-variable-table): Adjust the LaTeX portions.
+
+       * calc/calc.el (math-tex-ignore-words): Remove LaTeX portion.
+       (math-latex-ignore-words): New constant.
+
+2005-01-31  Richard M. Stallman  <rms@gnu.org>
+
+       * textmodes/ispell.el (ispell-local-dictionary-overridden): New var.
+       (ispell-local-dictionary): Doc fix.
+       (ispell-dictionary-alist): Don't include ispell-local-dictionary-alist.
+       Don't reinitialize at run time.  Don't defcustom.
+       All uses changed to append ispell-local-dictionary-alist,
+       or check it first.
+       (ispell-current-dictionary): New variable for dictionary in use.
+       (ispell-dictionary): Now used only for global default.
+       (ispell-start-process): Set ispell-current-dictionary,
+       not ispell-dictionary.
+       (ispell-change-dictionary): Use this only for setting
+       user preferences.
+       (ispell-internal-change-dictionary): New function
+       to change the current dictionary in use.
+       (ispell-region, ispell-process-line, ispell-buffer-local-dict):
+       Use ispell-current-dictionary.
+       Handle ispell-local-dictionary-overridden.
+       (ispell-buffer-local-dict): Call ispell-internal-change-dictionary.
+
+2005-01-31  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-aent.el (math-read-token): Add support for LaTeX.
+
+       * calc/calc-ext.el: Add calc-latex-language to autoloads.
+       (calc-mode-map): Add calc-latex-language.
+
+       * calc/calc-lang.el (calc-latex-language, math-latex-parse-frac)
+       (math-latex-print-frac): New functions.
+       (math-oper-table, math-function-table, math-variable-table)
+       (math-complex-format, math-input-filter): Add latex properties.
+       (calc-set-language): Set math-expr-special-function-mapping.
+
+       * calc/calc-prog.el (calc-edit-user-syntax, calc-fix-token-name)
+       (calc-write-parse-table-part): Add LaTeX support.
+
+       * calc/calc.el (calc-language): Adjust docstring.
+       (calc-set-mode-line): Add LaTeX support.
+       (math-expr-special-function-mapping): New variable.
+       (math-tex-ignore-words): Add to list.
+
+       * calc/calccomp.el (math-compose-expr, math-compose-rows):
+       Add LaTeX support.
+       (math-compose-expr): Add support for special functions.
+
+       * calc/calc-help.el (calc-d-prefix-help): Add LaTeX.
+
+2005-01-31  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-memory-address)
+       (gdb-memory-repeat-count, gdb-memory-format, gdb-memory-unit)
+       (gdb-memory-mode-map, gdb-memory-format-keymap)
+       (gdb-memory-format-menu, gdb-memory-unit-keymap)
+       (gdb-memory-unit-menu): New variables for a buffer
+       that lets the user examine program memory.
+       (gdb-memory-set-address, gdb-memory-set-repeat-count)
+       (gdb-memory-format-binary, gdb-memory-format-octal)
+       (gdb-memory-format-unsigned, gdb-memory-format-signed)
+       (gdb-memory-format-hexadecimal, gdb-memory-format-menu)
+       (gdb-memory-format-menu-1, gdb-memory-unit-giant)
+       (gdb-memory-unit-word, gdb-memory-unit-halfword)
+       (gdb-memory-unit-byte, gdb-memory-unit-menu)
+       (gdb-memory-unit-menu-1, gdb-make-header-line-mouse-map)
+       (gdb-memory-mode, gdb-memory-buffer-name)
+       (gdb-display-memory-buffer, gdb-frame-memory-buffer):
+       New functions for above buffer.
+
+2005-01-30  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-edit.el (custom-bury-buffer): Function deleted.
+       (custom-buffer-done-function): Option deleted.
+       (custom-buffer-done-kill): New replacement option.
+       (Custom-buffer-done): Call quit-window.
+       (custom-buffer-create-internal): Update for above changes.
+
+2005-01-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * simple.el (undo-ask-before-discard): New var.
+       (undo-outer-limit-truncate): Implement it.
+       (undo-extra-outer-limit): Doc update.
+
+2005-01-29  Richard M. Stallman  <rms@gnu.org>
+
+       * ses.el (undo-more): Delete defadvice.
+       (ses-begin-change): Doc fix.
+
+       * dired.el (dired-mode-map): Remap `undo' and `advertised-undo'
+       instead of rebinding C-x u and C-_.
+
+       * files.el (normal-backup-enable-predicate): Return nil for files
+       in /tmp, regardless of temporary-file-directory.
+
+       * man.el (Man-getpage-in-background): Disable undo in Man buffer.
+
+       * rect.el (delete-rectangle-line, delete-extract-rectangle-line)
+       (open-rectangle, delete-whitespace-rectangle-line)
+       (clear-rectangle-line): If FILL, pass t instead of FILL
+       for move-to-column's 2nd arg.
+
+       * simple.el (undo): Fix the test for continuing a series of undos.
+       (undo-more): Set pending-undo-list to t when we reach end.
+       (pending-undo-list): Move up defvar.
+
+       * wid-edit.el (widget-button-click):
+       Shorten the range of the track-mouse binding.
+
+       * comint.el (comint-insert-input): Undo previous changes;
+       use last-input-event in interactive spec.
+
+2005-01-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * progmodes/compile.el (compilation-start): Bind buffer-read-only
+       to nil before invoking call-process.  Reset buffer's modified flag
+       after fontifying it in the no-async branch.
+
+       * wid-edit.el (widget-specify-button): If mouse pointer shape
+       cannot be changed, use mouse face instead.
+
+2005-01-29  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-info-breakpoints-custom)
+       (gdb-goto-breakpoint): Make breakpoint handling work on template
+       functions in C++.  Reported by Martin Reed <mjreed@essex.ac.uk>.
+       (gdb-assembler-custom): Update to recognize breakpoint information
+       added on 2005-01-19.
+
+2005-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/scheme.el (scheme-mode-variables): Set comment-add.
+       (dsssl-mode): Use define-derived-mode.
+       (scheme-mode-initialize): Remove.
+       (scheme-mode): Use run-mode-hooks.
+
+       * cus-edit.el (customize-group-other-window)
+       (custom-buffer-create-other-window): Don't override special-display-*.
+       (custom-mode-map): Make it dense.
+
+       * emacs-lisp/lisp-mode.el (eval-defun-1): Make sure `defvar' always
+       sets the default value.
+
+2005-01-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * descr-text.el: Add more keywords.
+
+2005-01-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * speedbar.el: Avoid unnecessary use of locate-library.
+
+       * international/mule-cmds.el (standard-display-european-internal):
+       Don't fiddle with latin-1 non-break space any more since it's now
+       special cased in the C code.
+       Don't "do&undo" setting for 160 (especially, don't undo incorrectly).
+
+2005-01-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-start.el (all): Add `undo-outer-limit'.
+
+2005-01-25  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+       * textmodes/bibtex.el (bibtex-format-entry):
+       Use `bibtex-empty-field-re' only on the text of fields, not on entire
+       field lines.
+       (bibtex-autofill-entry): Use `bibtex-empty-field-re' on a string,
+       not on part of a buffer.
+
+2005-01-25  Lute Kamstra  <lute@gnu.org>
+
+       * textmodes/bibtex.el (bibtex-empty-field-re): Don't match
+       nonempty field text strings like "{letters\\macro{}more letters}".
+       Clarify docstring.
+       (bibtex-sort-entry-class, bibtex-autokey-titleword-ignore)
+       (bibtex-entry-offset, bibtex-parse-association)
+       (bibtex-parse-field-name): Fix typos in docstrings.
+       (bibtex-field-list, bibtex-find-crossref): Fix typos in error messages.
+
+2005-01-24  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-global.el (reftex-isearch-push-state-function)
+       (reftex-isearch-pop-state-function, reftex-isearch-isearch-search)
+       (reftex-isearch-switch-to-next-file, reftex-isearch-turn-off)
+       (reftex-isearch-turn-on, reftex-isearch-minor-mode): New functions.
+
+       * textmodes/reftex.el (reftex-mode-menu): Add entry for reftex
+       isearch minor mode.
+
+2005-01-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * help-at-pt.el (help-at-pt-display-when-idle): Add autoload cookie.
+
+2005-01-24  Lute Kamstra  <lute@gnu.org>
+
+       * textmodes/ispell.el (ispell-dictionary-alist-4): Rewrite the
+       CASECHARS and NOT-CASECHARS regular expressions of the
+       "nederlands" and "nederlands8" dictionaries to prevent a "Range
+       striding over charsets" error.
+
+2005-01-24  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-store.el (calc-declare-variable): Use calc-var-name to
+       display variable name.
+
+2005-01-24  Kenichi Handa  <handa@m17n.org>
+
+       * international/encoded-kb.el (encoded-kbd-iso2022-single-shift):
+       Fix setting of the element of encoded-kbd-iso2022-invocations.
+
+2005-01-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-goto-breakpoint, gdb-frames-select)
+       (gdb-threads-select): Change to also accept mouse events.
+       (gdb-mouse-goto-breakpoint, gdb-frames-mouse-select)
+       (gdb-threads-mouse-select): Delete.
+
+2005-01-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * files.el (insert-directory): Take care of empty directory,
+       listed without -a switch.
+
+2005-01-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/refill.el (refill-post-command-function):
+       Add `indent-new-comment-line' and `reindent-then-newline-and-indent'
+       to the list of functions that we should be careful not to undo.
+       (refill-late-fill-paragraph-function): Remove.
+       (refill-saved-state): New var.
+       (refill-mode): Use it to save fill-paragraph-function.
+       Save also the value of auto-fill-function.
+
+       * term/w32-win.el: Simplify code.
+
+2005-01-23  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move): Adapt to new return value from
+       pos-visible-in-window-p.
+
+       * simple.el (line-move): Fix last change.  Check partial
+       visibility at point rather than at window-start.
+
+2005-01-22  Jason Rumney  <jasonr@gnu.org>
+
+       * term/w32-win.el (xw-defined-colors): Remove debug-message.
+
+2005-01-22  David Kastrup  <dak@gnu.org>
+
+       * progmodes/grep.el: Add alias `find-grep' for `grep-find'.
+
+2005-01-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * type-break.el (type-break-mode): Add a test for
+       type-break-file-name being non-nil.
+
+2005-01-22  Toby Allsopp  <Toby.Allsopp@navman.com>  (tiny change)
+
+       * net/eudc.el (top level): Call (message "") via progn, so that
+       eudc-options-file is loaded.
+
+2005-01-22  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (line-move-1): Rename from line-move.
+       (line-move): New function that adjusts vscroll for partially
+       visible rows, and calls line-move-1 otherwise.
+
+2005-01-21  Ren\e,Ai\e(B Kyllingstad  <listmailxemacs@kyllingstad.com>
+
+       * pcomplete.el: Define pcomplete-read-event instead of read-event,
+       since it's not a complete read-event implementation.
+
+2005-01-20  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-ext.el (calc-fancy-prefix-other-key): Set prefix arg
+       for called function.
+
+2005-01-20  Steven Tamm  <steventamm@mac.com>
+
+       * term/mac-win.el (process-connection-type): Remove.
+       Controlled now by s/darwin.h:PTY_ITERATION.
+
+2005-01-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.el (handle-select-window): Don't switch window when we're
+       in the minibuffer.
+
+2005-01-10  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * subr.el (dotimes-with-progress-reporter): New macro.
+
+       * ses.el (ses-dotimes-msg): Remove macro.
+       Use `dotimes-with-progress-reporter' instead.
+
+2005-01-19  Steven Tamm  <steventamm@mac.com>
+
+       * term/mac-win.el (process-connection-type): Use new
+       operating-system-release variable to use ptys on Darwin 7 (OS X
+       10.3) when using carbon build.
+
+2005-01-19  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-ext.el (calc-fancy-prefix-other-key): Don't clear
+       flags if the last command was a tab or M-tab.
+
+       * calc/calc-prog.el (calc-user-define-edit): Put original formula
+       in formula editing buffer.
+
+2005-01-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Add help-echo for
+       breakpoint image symbol in margin.
+
+2005-01-19  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-prog.el (calc-execute-kbd-macro):
+       Ignore calc-keep-arg-flag.
+
+2005-01-19  Kenichi Handa  <handa@m17n.org>
+
+       * textmodes/ispell.el (ispell-looking-at): New function.
+       (ispell-process-line): Use ispell-looking-at to compare the ispell
+       output and the buffer contents.
+
+2005-01-18  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-display-raw): Fix docstring.
+
+2005-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * simple.el (blink-matching-open): Strip extra info from syntax.
+
+       * progmodes/sh-script.el (sh-here-doc-open-re): Don't allow | or other
+       funny chars in the end-of-here-doc marker.
+
+2005-01-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * progmodes/gdb-ui.el (gdb-put-string): Copy/create strings so
+       that enable/disabled state of breakpoints is shown correctly in
+       fringe and on ttys.
+       (gdb-put-breakpoint-icon, gdb-info-breakpoints-custom):
+       Add breakpoint information as text properties.
+       (gdb-mouse-toggle-breakpoint):
+       Rename to gdb-mouse-set-clear-breakpoint.
+       (gdb-mouse-toggle-breakpoint): New function.  Enable/disable
+       breakpoints in the margin.
+       (gdb-remove-strings): Simplify.
+
+2005-01-17  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-yank.el (calc-edit-mode): Inhibit read-only when
+       erasing buffer.
+
+2005-01-17  Richard M. Stallman  <rms@gnu.org>
+
+       * progmodes/grep.el (grep-find): Copy from `grep' the condition
+       for calling grep-compute-defaults.
+
+       * play/decipher.el (decipher-mode): Don't call decipher-read-alphabet
+       if buffer is empty.
+
+       * emacs-lisp/lisp.el (backward-kill-sexp, kill-sexp): Doc fixes.
+
+2005-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * hilit-chg.el (highlight-changes-mode): Don't autoload.
+
+       * bindings.el (mode-line-mode-menu): Use bound-and-true-p for all the
+       non-preloaded variables.
+
+2005-01-17  Steven Tamm  <steventamm@mac.com>
+
+       * textmodes/tex-mode.el (tex-start-shell): Adding -i to the
+       tex-shell cause to force interactivity when using pipes.
+
+2005-01-17  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (just-one-space): Make arg optional.
+
+2005-01-17  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xt-mouse.el (xterm-mouse-event): Set new optional fourth arg in
+       posn-at-x-y to t to access left-margin.
+
+2005-01-16  Michael Albinus  <michael.albinus@gmx.de>
+
+       Sync with Tramp 2.0.47.
+
+       * net/tramp.el (tramp-operation-not-permitted-regexp): New defcustom,
+       catching keep-date problems in cp/scp operations.
+       (tramp-handle-copy-file): Don't call `set-file-modes'
+       unconditionally.  Specialized functions should know better what is
+       necessary.  This improves performance a little bit, and the
+       functions could catch errors with `cp -p' and `scp -p'.
+       (tramp-do-copy-or-rename-file-via-buffer)
+       (tramp-do-copy-or-rename-file-out-of-band): Call `set-file-modes'
+       when appropriate.
+       (tramp-do-copy-or-rename-file-directly): Mask `cp -p' error.
+       Call `set-file-modes' when appropriate.
+       (tramp-action-out-of-band): Mask `scp -p' error.  Reported by Isak
+       Johnsson <isak@hypergene.com>.
+       (tramp-get-buffer, tramp-get-debug-buffer): Discard the undo list
+       of both Tramp buffer and debug buffer.  Reported by Joakim Verona
+       <joakim@verona.se>.
+       (tramp-file-name-for-operation): Mark `shell-command' as magic for
+       Emacs only.
+
+       * net/tramp-util.el (tramp-minor-mode): New minor mode.  Add it to
+       `find-file-hooks' and `dired-mode-hook'.
+       (tramp-minor-mode-map): Respective map.  Add remapping for
+       `compile' and `recompile'.
+       (tramp-remap-command, tramp-recompile): New defuns.
+       (tramp-compile): Enable `tramp-minor-mode' and `compilation-mode'
+       in buffer "*Compilation*".  Call the commands asynchronously.
+
+       * net/tramp-vc.el (tramp-vc-do-command, tramp-vc-do-command-new)
+       (tramp-vc-simple-command): Call `tramp-handle-shell-command' but
+       `shell-command', because it isn't magic in XEmacs.  Reported by
+       Adrian Aichner <adrian@xemacs.org>.
+
+       * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry for
+       `substitute-in-file-name'.
+       (tramp-smb-handle-substitute-in-file-name): New defun.
+       (tramp-smb-advice-PC-do-completion): Delete advice.
+
+2005-01-16  Kai Grossjohann  <kgrossjo@eu.uu.net>
+
+       * net/tramp.el (tramp-wait-for-output): Fix typo in echo processing.
+       Fix error in deleting region.
+
+2005-01-15  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/lisp-mnt.el (lm-with-file): Use Lisp mode in temp buffer.
+       In non-temp buffer, switch syntax table temporarily.
+
+       * emacs-lisp/lisp-mode.el (indent-pp-sexp): Doc fix.
+
+       * replace.el (occur-accumulate-lines, occur-engine): Avoid warnings.
+
+       * tar-mode.el (tar-extract): Bind buffer-undo-list to t.
+
+       * imenu.el (imenu--split-menu): Copy menulist before sorting.
+       (imenu--generic-function): Use START, not BEG, as pos of definition.
+
+       * simple.el (just-one-space): Argument specifies number of spaces.
+
+       * simple.el (eval-expression-print-format): Avoid warning
+       about edebug-active.
+
+2005-01-15  James R. Van Zandt  <jrvz@comcast.net>  (tiny change)
+
+       * progmodes/sh-script.el: Code copied from make-mode.el
+       with small changes,
+       (sh-mode-map): Bind C-c C-\.
+       (sh-backslash-column, sh-backslash-align): New variables.
+       (sh-backslash-region, sh-append-backslash): New functions.
+
+2005-01-15  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * mail/rmail.el: Updated to work with movemail from GNU Mailutils
+       (rmail-pop-password, rmail-pop-password-required): Move to
+       rmail-obsolete group.
+       (rmail-set-pop-password): Rename to rmail-set-remote-password.
+       All callers updated.
+       (rmail-get-pop-password): Rename to rmail-get-remote-password.
+       Take an argument specifying whether it is POP or IMAP mailbox we
+       are using.  All callers updated.
+       (rmail-pop-password-error): Rename to
+       rmail-remote-password-error.  Added mailutils-specific error message.
+       (rmail-movemail-search-path)
+       (rmail-movemail-variant-in-use): New variables.
+       (rmail-remote-password, rmail-remote-password-required):
+       New customization variables.
+       (rmail-probe, rmail-autodetect, rmail-movemail-variant-p): New funs.
+       (rmail-parse-url): New function.
+       (rmail-get-new-mail, rmail-insert-inbox-text): Update for use
+       with GNU mailutils movemail.
+
+2005-01-15  Kevin Ryde  <user42@zip.com.au>
+
+       * info-look.el (c-mode/symbol): Add ^` to prefix, and change
+       suffix to space, $ or '$, to correctly position point when going
+       to @table style constants like DBL_MAX.
+
+2005-01-15  Jorgen Schaefer  <forcer@forcix.cx>  (tiny change)
+
+       * type-break.el (type-break-mode, type-break-file-time)
+       (type-break-file-keystroke-count, type-break-choose-file):
+       Don't store data in or load data from the file if type-break-file-name
+       is nil.
+       (type-break-file-name): Doc update as per the above.
+
+2005-01-15  Stephen Eglen  <S.J.Eglen@damtp.cam.ac.uk>  (tiny change)
+
+       * woman.el (woman-dired-define-key-maybe): If KEY is undefined,
+       lookup-key might return nil; handle that.
+
+2005-01-15  Alan Mackenzie  <acm@muc.de>
+
+       * ebrowse.el (ebrowse-class-in-tree): Return the tail of the tree
+       rather than the element found, thus enabling the tree to be setcar'd.
+
+2005-01-14  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/org.el (org-show-following-heading): New option.
+       (org-show-hierarchy-above): Use `org-show-following-heading'.
+       (org-cycle): Documentation fix.
+
+       * textmodes/org.el (orgtbl-optimized): New option
+       (orgtbl-mode): New command, a minor mode.
+       (orgtbl-mode-map): New variable.
+       (turn-on-orgtbl, orgtbl-mode, orgtbl-make-binding)
+       (orgtbl-error, orgtbl-self-insert-command)
+       (orgtbl-delete-backward-char, orgtbl-delete-char): New functions.
+
+       * textmodes/org.el (org-mode): `org-table-may-need-update' is now
+       a local variable in each org-mode buffer.
+
+       * textmodes/org.el (org-set-regexps-and-options): Rename from
+       `org-set-regexps'.  Added checking for STARTUP keyword.
+       (org-get-current-options): Add STARTUP options.
+       (org-table-insert-row): Make mode intelligent about when
+       realignment is needed.
+       (org-self-insert-command, org-delete-backward-char, org-delete-char):
+       New commands.
+       (org-enable-table-editor): New default value `optimized'.
+       (org-table-blank-field): Support blanking regions if active.
+
+2005-01-14  Carsten Dominik  <dominik@science.uva.nl>
+
+       * textmodes/reftex-cite.el (reftex-bib-sort-year): Catch the case
+       if the year is not given.
+
+       * textmodes/reftex-ref.el (reftex-replace-prefix-escapes):
+       Add new escapes %m and %M, fixed bug with %F by adding
+       save-match-data.
+       (reftex-reference): Remove ?. from list of spaces.
+       (reftex-label-info): Add automatic label prefix recognition.
+
+       * textmodes/reftex-index.el (reftex-index-next-phrase):
+       Add slave parameter to call of `reftex-index-this-phrase'.
+       (reftex-index-this-phrase): New optional argument.
+       (reftex-index-region-phrases): Add slave parameter to call of
+       `reftex-index-this-phrase'.
+       (reftex-display-index): New argument redo.
+       (reftex-index-rescan): Add `redo' to arguments of
+       `reftex-display-index'.
+       (reftex-index-Rescan, reftex-index-revert)
+       (reftex-index-switch-index-tag): Add `redo' to arguments of
+       `reftex-display-index'.
+       (reftex-index-make-phrase-regexp): Fix bug with case-sensitive
+       indexing.  Fix bug with matching is there is a quote before or
+       after the word.
+
+       * textmodes/reftex-cite.el (reftex-all-used-citation-keys):
+       Fix bug when collecting citation keys in lines with comments.
+       (reftex-citation): Prefix argument no longer rescans the document,
+       but forces prompting for optional arguments of cite macros.
+       (reftex-do-citation): Prompting for optional arguments implemented.
+
+       * textmodes/reftex-vars.el (reftex-cite-format-builtin):
+       Add optional arguments to most cite commands.
+       (reftex-cite-cleanup-optional-args): New option
+       (reftex-cite-prompt-optional-args): New option.
+       (reftex-trust-label-prefix): New option.
+
+       * textmodes/reftex-toc.el (reftex-toc-find-section):
+       Add push-mark before changing the position in the buffer.
+
+       * textmodes/reftex.el (reftex-prefix-to-typekey-alist): New variable.
+       (reftex-compile-variables): Compute reftex-prefix-to-typekey-alist.
+
+2005-01-14  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xt-mouse.el (xterm-mouse-event): Compute window co-ordinates
+       more carefully.
+
+2005-01-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/sgml-mode.el (sgml-fill-nobreak): New fun.
+       (sgml-mode): Use it.
+       (sgml-get-context): Better keep track of implicitly closed tags.
+
+2005-01-13  Kenichi Handa  <handa@m17n.org>
+
+       * textmodes/ispell.el: These changes are to fix misalignment error
+       caused by equivalent characters of different Emacs charsets.
+       (ispell-unified-chars-table): New variable.
+       (ispell-get-decoded-string): New function.
+       (ispell-get-casechars, ispell-get-not-casechars)
+       (ispell-get-otherchars): Call ispell-get-decoded-string.
+
+2005-01-12  Johan Bockg\e,Ae\e(Brd  <bojohan@users.sourceforge.net>
+
+       * custom.el (custom-declare-variable): Just put symbol instead
+       of (defvar . symbol) in `current-load-list'.
+
+2005-01-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * emacs-lisp/elint.el: Fixed typo in Commentary section.
+
+2005-01-12  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-help.el (calc-describe-key): Use temporary info buffer
+       to create a Calc summary.
+
+2005-01-12  Kim F. Storm  <storm@cua.dk>
+
+       * mouse.el (mouse-on-link-p): Change functionality and doc
+       string to comply with latest description in lisp ref.
+
+2005-01-12  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xt-mouse.el (xterm-mouse-translate, xterm-mouse-event):
+       Enable mouse clicks on mode-line, header-line and margin.
+       (event-type): Give mouse event symbols an `event-kind' property
+       with value `mouse-click'.
+
+2005-01-12  Juri Linkov  <juri@jurta.org>
+
+       * facemenu.el (list-colors-display): Add new arg buffer-name.
+       Use it.  Fix docstring.  Replace code for identifying duplicate
+       colors by the name with call to `list-colors-duplicates' which
+       identifies duplicate colors by the value unless the color
+       is one of special Windows colors.  Set truncate-lines to t.
+       Print sorted duplicate color names on each line.  Indent to 22
+       \(the longest color name in rgb.txt) instead of 20.  Optimize.
+       (list-colors-duplicates): New function.
+       (facemenu-color-name-equal): Delete function.
+
+       * facemenu.el (list-colors-print): New function created from code
+       in list-colors-display.  Print #RRGGBB at the window right edge.
+       (list-colors-display): When temp-buffer-show-function is not
+       defined, call list-colors-print from temp-buffer-show-hook
+       to get the right value of window-width in list-colors-print
+       after the buffer is displayed.
+
+       * simple.el (pop-mark): Move deactivate-mark out of conditional
+       part to deactivate the active mark regardless of the state of the
+       mark ring.
+
+       * desktop.el (desktop-save): Add `mode: emacs-lisp' to the local
+       variables line in desktop files.
+
+2005-01-12  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (search-highlight, isearch, isearch-lazy-highlight):
+       Bring together isearch highlight related options.
+       (lazy-highlight): Replace group `replace' by `matching'.
+       (lazy-highlight-cleanup, lazy-highlight-initial-delay)
+       (lazy-highlight-interval, lazy-highlight-max-at-a-time)
+       (lazy-highlight): Add aliases to old names isearch-lazy-highlight-...
+       and declare them obsolete.
+       (lazy-highlight-face): Rename from isearch-lazy-highlight-face.
+       (isearch-faces): Remove defgroup.
+       (isearch-overlay, isearch-highlight, isearch-dehighlight):
+       Move isearch highlighting code closer to lazy highlighting code.
+
+       * replace.el (query-replace-lazy-highlight): Add lazy-highlight group.
+       (query-replace-highlight, query-replace-lazy-highlight)
+       (query-replace): Move definitions to the beginning of the file.
+
+2005-01-11  Juri Linkov  <juri@jurta.org>
+
+       * toolbar/back_arrow.xpm, toolbar/back_arrow.pbm
+       * toolbar/lc-back_arrow.xpm, toolbar/lc-fwd_arrow.xpm
+       * toolbar/fwd_arrow.xpm, toolbar/fwd_arrow.pbm: New icons.
+
+       * info.el (Info-history-forward): New variable.
+       (Info-select-node): Reset Info-history-forward to nil.
+       (Info-last): Turn into defalias.
+       (Info-history-back): Rename from Info-last.
+       Add current node to Info-history-forward.
+       (Info-history-forward): New fun.
+       (Info-mode-map): Replace Info-last by Info-history-back.
+       Bind Info-history-forward to "r".
+       (Info-mode-menu): Replace Info-last by Info-history-back.
+       Fix menu item text.  Add menu item for Info-history-forward.
+       (info-tool-bar-map): Replace Info-last by Info-history-back.
+       Replace its icon "undo" by "back_arrow".  Add icon "fwd_arrow"
+       for Info-history-forward.
+       (Info-mode): Replace Info-last by Info-history-back in docstring.
+       Add local variable Info-history-forward.
+       (Info-goto-emacs-command-node): Replace Info-last by Info-history-back.
+
+2005-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line)
+       (mouse-drag-region, mouse-drag-region-1, mouse-drag-secondary):
+       Ignore select-window events rather than fiddle with
+       mouse-autoselect-window.
+
+2005-01-11  Matthew Mundell  <matt@mundell.ukfsn.org>
+
+       * type-break.el (type-break-mode): Fix previous change.
+
+2005-01-10  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-ext.el (calc-reset): Reset when inside embedded
+       calculator; only reset when point is inside a calculator.
+       Don't adjust the window height if the window takes up the whole height
+       of the frame.
+
+2005-01-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * ebuff-menu.el (Electric-buffer-menu-mode):
+       Preserve value of buffer-local var header-line-format.
+
+2005-01-09  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-mode-var-list-restore-saved-values):
+       Make sure settings file exists before accessing it.
+
+       * calc/calc-embed.el (calc-embedded-subst):
+       Replace math-multi-subst-rec, which is only supposed to be called
+       by math-multi-subst, by math-multi-subst.
+
+2005-01-09  Andre Spiegel  <spiegel@gnu.org>
+
+       * vc.el (vc-allow-async-revert): New user option.
+       (vc-disable-async-diff): New internal variable.
+       (vc-revert-buffer): Use them to disable asynchronous diff.
+
+       * vc-cvs.el, vc-arch.el, vc-svn.el, vc-mcvs.el (vc-cvs-diff)
+       (vc-arch-diff, vc-svn-diff, vc-mcvs-diff): Don't diff
+       asynchronously if vc-disable-async-diff is t.
+
+2005-01-09  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (defcalcmodevar): New macro.
+       (calc-mode-var-list-restore-default-values)
+       (calc-mode-var-list-restore-saved-values): New functions.
+       (calc-mode-var-list): Use defcalcmodevar to define it.
+       (calc-always-load-extensions, calc-line-numbering)
+       (calc-line-breaking, calc-display-just, calc-display-origin)
+       (calc-number-radix, calc-leading-zeros, calc-group-digits)
+       (calc-group-char, calc-point-char, calc-frac-format)
+       (calc-prefer-frac, calc-hms-format, calc-date-format)
+       (calc-float-format, calc-full-float-format, calc-complex-format)
+       (calc-complex-mode, calc-infinite-mode, calc-display-strings)
+       (calc-matrix-just, calc-break-vectors, calc-full-vectors)
+       (calc-full-trail-vectors, calc-vector-commas, calc-vector-brackets)
+       (calc-matrix-brackets, calc-language, calc-language-option)
+       (calc-left-label, calc-right-label, calc-word-size)
+       (calc-previous-modulo, calc-simplify-mode, calc-auto-recompute)
+       (calc-display-raw, calc-internal-prec, calc-angle-mode)
+       (calc-algebraic-mode, calc-incomplete-algebraic-mode)
+       (calc-symbolic-mode, calc-matrix-mode, calc-shift-prefix)
+       (calc-window-height, calc-display-trail, calc-show-selections)
+       (calc-use-selections, calc-assoc-selections)
+       (calc-display-working-message, calc-auto-why, calc-timing)
+       (calc-mode-save-mode, calc-standard-date-formats, calc-autorange-units)
+       (calc-was-keypad-mode, calc-full-mode, calc-user-parse-tables)
+       (calc-gnuplot-default-device, calc-gnuplot-default-output)
+       (calc-gnuplot-print-device, calc-gnuplot-print-output)
+       (calc-gnuplot-geometry, calc-graph-default-resolution)
+       (calc-graph-default-resolution-3d, calc-invocation-macro)
+       (calc-show-banner): Use defcalcmodevar to declare them and set
+       their default values.
+
+       * calc/calc-ext.el (calc-reset): Restore saved values of variables
+       instead of default values (but restore default values if there is
+       an argument of 0).
+
+2005-01-09  David Kastrup  <dak@gnu.org>
+
+       * desktop.el (desktop-restore-eager): Fix typo in type.
+
+2005-01-08  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-edit.el (customize): Delete :link.
+
+2005-01-08  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-mode): Remove the extension from the
+       `calc-settings-file' file name when loading it.
+
+2005-01-08  Kim F. Storm  <storm@cua.dk>
+
+       * info.el (Info-mode-map, Info-next-link-keymap)
+       (Info-prev-link-keymap, Info-up-link-keymap):
+       Map follow-link to mouse-face.
+       (Info-fontify-node): Add "mouse-2: " prefix to tooltip.
+
+2005-01-08  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc.el (calc-settings-file): Change default value.
+       Suggested by cgw in a comment in calc-mode.el.
+
+       * calc/calc-mode.el (calc-settings-file-name):
+       Compare calc-settings-file to user-init-file instead of ~/.emacs.
+       Replace ~/.emacs in a prompt by calc-settings-file.
+
+2005-01-07  Lars Hansen  <larsh@math.ku.dk>
+
+       * desktop.el (desktop-restore-eager, desktop-lazy-verbose)
+       (desktop-lazy-idle-delay): New customizable variables.
+       (desktop-buffer-args-list): New variable.
+       (desktop-append-buffer-args): New function.
+       (desktop-save): Call desktop-append-buffer-args for some buffers.
+       (desktop-lazy-create-buffer): New function.
+       (desktop-idle-create-buffers): New function.
+       (desktop-read): Add message about buffers to restore lazily.
+       (desktop-lazy-abort): New command.
+       (desktop-clear): Call desktop-lazy-abort.
+       (desktop-lazy-complete): New command.
+
+2005-01-06  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs-lisp/find-func.el (find-face-definition):
+       Rename from find-face.
+
+2005-01-06  Kim F. Storm  <storm@cua.dk>
+
+       * simple.el (completion-list-mode-map): Map follow-link to mouse-face.
+
+       * man.el (Man-xref-man-page, Man-xref-header-file)
+       (Man-xref-normal-file): Add follow-link property.
+
+2005-01-06  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-units.el: Make sure the proper macro definitions are
+       available when compiling.
+
+2005-01-06  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-lazy-highlight-update):
+       Rename `isearch-lazy-highlight-interval' to `lazy-highlight-interval'.
+
+2005-01-06  Miles Bader  <miles@gnu.org>
+
+       * isearch.el (lazy-highlight): Rename from `lazy-highlight-face'.
+       (isearch-lazy-highlight-face): Use new name.
+
+2005-01-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * uniquify.el (uniquify-rationalize-file-buffer-names):
+       Re-add an interactive spec.
+       (uniquify-rationalize-file-buffer-names): Fix corner case when renaming
+       to the same name.
+
+       * isearch.el (isearch-dehighlight): Remove unused arg `totally'.
+       (isearch-update, isearch-done): Adjust calls accordingly.
+
+2005-01-05  Richard M. Stallman  <rms@gnu.org>
+
+       * custom.el (custom-set-variables, custom-theme-set-variables):
+       Clarify documentation.
+
+       * emacs-lisp/find-func.el (find-variable)
+       (find-variable-other-window, find-variable-other-frame):
+       Fix the TYPE args to find-function-read and find-function-do-it.
+       (find-function): Doc fix.
+       (find-function-at-point): Replace function-at-point alias.
+
+2005-01-04  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-face.el (custom-declare-face):
+       Record defface in current-load-list.
+
+       * help-fns.el (variable-at-point): New arg ANY-SYMBOL.
+
+       * emacs-lisp/find-func.el: Doc fixes.
+       (find-face-regexp): New variable.
+       (find-function-regexp-alist): New variable.
+       (find-function-C-source): Third arg is now TYPE.
+       (find-function-search-for-symbol): Handle general TYPE.
+       (find-function-read, find-function-do-it): Handle general TYPE.
+       (find-definition-noselect, find-face): New functions.
+       (function-at-point): Alias deleted.
+
+2005-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * battery.el (display-battery-mode): Rename from display-battery.
+       Handle the case where it gets turned off.
+
+2005-01-04  Richard M. Stallman  <rms@gnu.org>
+
+       * cus-edit.el (customize): Make :link point to user doc.
+
+       * man.el (Man-fontify-manpage): Turn off undo generation.
+
+       * add-log.el (change-log-font-lock-keywords): Don't match just "From".
+
+2005-01-04  Andreas Schwab  <schwab@suse.de>
+
+       * files.el (insert-directory): Only look for error lines in
+       inserted text.  Don't move too far after processing --dired markers.
+
+2005-01-04  Richard M. Stallman  <rms@gnu.org>
+
+       * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook):
+       Don't expand if the character is @, period, dash, etc.
+       (define-mail-abbrev): Quote names that contain problem characters.
+
+2005-01-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * progmodes/hideshow.el: No longer require `cl'; `dolist' is standard.
+
+2005-01-03  Richard M. Stallman  <rms@gnu.org>
+
+       * replace.el (replace-dehighlight): Use lazy-highlight-cleanup.
+       (query-replace-highlight, query-replace-lazy-highlight)
+       (query-replace): Definitions moved up.  Doc fix.
+
+2005-01-03  Richard M. Stallman  <rms@gnu.org>
+
+       * isearch.el (lazy-highlight): Group renamed from isearch-lazy-...
+       (lazy-highlight-cleanup, lazy-highlight-initial-delay)
+       (lazy-highlight-interval, lazy-highlight-max-at-a-time)
+       (lazy-highlight-face): Rename from isearch-lazy-...
+       Change all references to them.
+
+2005-01-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * cus-edit.el (custom-file): Doc fix for defcustom.
+       (custom-file): The function no longer sets the variable
+       `custom-file' to its return value.
+
+       * startup.el (command-line): No longer load `custom-file'.
+
+2005-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/find-func.el (find-variable-regexp): Avoid defface.
+
+       * progmodes/perl-mode.el (perl-nochange, perl-calculate-indent):
+       Don't confuse module-prefixed identifiers for labels.
+       Reported by Juan-Leon Lahoz Garcia <juanleon1@gmail.com>.
+
+2005-01-02  Richard M. Stallman  <rms@gnu.org>
+
+       * files.el (basic-save-buffer-1): Fix previous change.
+
+       * loadhist.el (file-loadhist-lookup): New function.
+       (file-provides, file-requires): Use it.
+
+       * electric.el (Electric-pop-up-window): Use fit-window-to-buffer
+       instead of calculating the right size.
+
+2005-01-02  Karl Chen  <quarl@cs.berkeley.edu>
+
+       * vc-svn.el (vc-svn-diff): Stay local if possible.
+
+2005-01-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-arch.el (vc-arch-workfile-version): Handle the empty-branch case.
+
+       * files.el (hack-local-variables): Fix last change.
+
+2005-01-02  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-yank.el (calc-edit-top): New variable.
+       (calc-edit-mode): Set calc-edit-top to be the beginning of the edited
+       object.  Change header properties.
+       (calc-edit-finish, calc-edit-finish-stack-object)
+       (calc-edit-show-buffer): Use calc-edit-top to find the beginning of the
+       edited object.
+       * calc/calc-sel.el (calc-finish-selection-edit): Use calc-edit-top
+       for the beginning of the edited object.
+       * calc/calc-embed.el (calc-embedded-finish-edit): Use calc-edit-top
+       for the beginning of the edited object.
+       * calc/calc-prog.el (calc-edit-macro-finish-edit)
+       (calc-finish-formula-edit, calc-macro-repeats)
+       (calc-edit-macro-adjust-buffer, calc-edit-format-macro-buffer)
+       (calc-edit-macro-pre-finish-edit): Use calc-edit-top for the
+       beginning of the edited object.
+       (calc-user-define-edit): Change the header for editing macros.
+       Remove unnecessary variable.
+
+2005-01-01  Jay Belanger  <belanger@truman.edu>
+
+       * calc/calc-yank.el (calc-edit-mode): Change default header.
+       (calc-edit-finish, calc-show-edit-buffer): Adjust to handle new header.
+       * calc/calc-store.el (calc-edit-variable): Change title to match new
+       header.
+       * calc/calc-prog.el (calc-edit-user-syntax): Change title in edit
+       mode to match new header.
+       (calc-user-define-edit): Change titles to include names of commands.
+       (calc-finish-formula-edit): Adjust to handle new header.
+       (calc-finish-macro-edit): Remove.
+       (calc-edit-macro-repeats, calc-edit-macro-adjust-buffer)
+       (calc-edit-macro-command, calc-edit-macro-command-type)
+       (calc-edit-macro-combine-alg-ent, calc-edit-macro-combine-ext-command)
+       (calc-edit-macro-combine-var-name, calc-edit-macro-combine-digits)
+       (calc-edit-format-macro-buffer, calc-edit-macro-pre-finish-edit)
+       (calc-edit-macro-finish-edit): New functions.
+       (calc-user-define-edit): Use new functions to edit named calc macros.
+
+2005-01-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * files.el (hack-local-variables): Cleanup prefix/suffix matching.
+
+       * ses.el (copy-region-as-kill): Deactivate mark.
+
+2005-01-01  Richard M. Stallman  <rms@gnu.org>
+
+       * replace.el (occur-1): If the output buffer is also an input,
+       don't kill it, rename it.
+
+       * faces.el (set-face-background, set-face-foreground): Doc fix.
+
+       * cus-face.el (custom-face-attributes): Fix :help-echo strings
+       for :foreground and :background.
+
+       * dired.el (dired-view-command-alist): Variable deleted.
+       (dired-view-file, dired-mouse-find-file-other-window):
+       Delete the code to use it.
+
+2005-01-01  Kim F. Storm  <storm@cua.dk>
+
+       * image.el (insert-sliced-image): Use t for line-height property.
+
+See ChangeLog.11 for earlier changes.
+
+;; Local Variables:
+;; coding: iso-2022-7bit
+;; add-log-time-zone-rule: t
+;; End:
+
+    Copyright (C) 2005, 2006, 2007 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, 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; see the file COPYING.  If not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301, USA.
+
+;;; arch-tag: e39939be-dab3-400e-86f5-0e2701a883c1
index 5d2c4766d73e2207ba8b8357e91141ba84c3fc4f..1b6609f1727de6fdc8e824e1f95828ae5c1b75f8 100644 (file)
        * vc-hooks.el (vc-fetch-properties): Don't use
        vc-backend-dispatch, as that is in vc.el.
 
-       * vc.el (vc-register): Inhibit backups for the file's buffer
+       * vc.el (vc-register): Inhibit backups for the file's buffer.
 
        * vc.el (vc-add-triple, vc-lookup-triple, vc-record-rename):
        Use absolute file names to access the SCCS named configuration files
        pgp and forward blocks.
        (ispell-message-end-skip): New variable for block skips, set up for
        pgp and forward blocks.
-       (ispell-message): Added block message skipping.
+       (ispell-message): Added block message skipping.
        (ispell-buffer-local-parsing): Added html-mode.
 
        * mouse.el (mouse-set-region): Bind last-command with this-command.
        the new 'none-value of vc-locking-user.
 
        (vc-consult-rcs-headers): Fixed bug that prevented
-       (not vc-consult-headers) from working
+       (not vc-consult-headers) from working.
 
        (vc-file-not-found-hook): Set the default-directory of the new
        buffer before check-out.
        Use vc-file-clear-masterprops, and adjust those properties
        that are not cleared.
 
-       (vc-resynch-window):  Temporarily remove vc-find-file-hook, so
+       (vc-resynch-window): Temporarily remove vc-find-file-hook, so
        that we don't lose the file properties during check-in/out.
 
        (vc-resynch-window): Do not try to delete the current window if
 
        * winnt.el (null-device): Set to "NUL".
        (grep-regexp-alist): Match entries with drive letters.
-       (save-to-unix-hook,revert-from-unix-hook): Defined.
+       (save-to-unix-hook, revert-from-unix-hook): Defined.
        (using-unix-filesystems): Defined.
        (window-frame): Unaliased.
 
 
 1995-06-14  Johan Vromans  <jv@NL.net>
 
-       * forms.el (forms--mode-menu-edit,forms--mode-menu-ro):
+       * forms.el (forms--mode-menu-edit, forms--mode-menu-ro):
        Set `mouse-major-mode-menu'.
 
 1995-06-14  Simon Marshall  <simon@duality.gnu.ai.mit.edu>
 
 1995-06-13  Per Bothner  <bothner@kalessin.cygnus.com>
 
-       * term.el:  Various optimizations.  The main one is to optimize for
+       * term.el: Various optimizations.  The main one is to optimize for
        simple output at the end of the buffer, with no paging, and in that
        case to defer scrolling while we can.
-       (term-emulate-terminal):  Don't call term-handle-scroll in
+       (term-emulate-terminal): Don't call term-handle-scroll in
        simple cases unless we are either paging or term-scroll-with-delete.
-       (term-down):  Likewise.
-       (term-handle-scroll):  Modify accordingly.
-       (term-emulate-terminal):  Avoid deleting old text in common case.
+       (term-down): Likewise.
+       (term-handle-scroll): Modify accordingly.
+       (term-emulate-terminal): Avoid deleting old text in common case.
        Optimize the simple case of CRLF when we're at buffer end.
        Handle deferred scroll when done processing output.
-       (term-handle-deferred-scroll):  New function.
-       (term-down):  Simplify - no longer take RIGHT argument.  Tune.
-       (term-goto):  Use term-move-columns to compensate for the above.
+       (term-handle-deferred-scroll): New function.
+       (term-down): Simplify - no longer take RIGHT argument.  Tune.
+       (term-goto): Use term-move-columns to compensate for the above.
 
-       * term.el (term-escape-char, term-set-escape-char):  Add doc-string.
-       (term-mouse-paste):  Add xemacs support.
+       * term.el (term-escape-char, term-set-escape-char): Add doc-string.
+       (term-mouse-paste): Add XEmacs support.
 
-       * term.el:  Various speed enhencements:
-       (term-handle-scroll):  Don't clear term-current-row; maybe adjust it.
-       (term-down):  Don't call term-adjust-current-row-cache if we've
+       * term.el: Various speed enhencements:
+       (term-handle-scroll): Don't clear term-current-row; maybe adjust it.
+       (term-down): Don't call term-adjust-current-row-cache if we've
        done term-handle-scroll.
-       (term-emulate-terminal):  Don't call term-adjust-current-row-cache.
-       (term-emulate-terminal):  For TAB, don't nil term-start-line-column.
-       (term-goto):  Possible optimization.
+       (term-emulate-terminal): Don't call term-adjust-current-row-cache.
+       (term-emulate-terminal): For TAB, don't nil term-start-line-column.
+       (term-goto): Possible optimization.
 
 1995-06-13  Karl Heuer  <kwzh@nutrimat.gnu.ai.mit.edu>
 
        * viper.el (vip-envelop-ESC-key): If an ESC-sequence translates
        into a function key, pretend that this key was the last command event.
 
-       * viper.el (vip-put-back,vip-Put-back): Now emulate Vi's behavior
+       * viper.el (vip-put-back, vip-Put-back): Now emulate Vi's behavior
        more closely.
 
        * viper.el (vip-line): No longer not bombs out.
 
        * viper.el, viper-mous.el, viper-util.el, viper-ex.el:
        Changed vip-*-frame-* to *-frame-*, incorporated overlay strings,
-       unread-command-events, removed support for emacs versions 19.28 and
-       xemacs 19.11 and earlier.
+       unread-command-events, removed support for Emacs versions 19.28 and
+       XEmacs 19.11 and earlier.
        * viper-macs.el, viper-keym.el: Likewise.
 
 1995-06-08  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * ediff.el (ediff-documentation: New function.
 
-       * ediff-wind.el: Got rid of toolbars in control frame in xemacs
+       * ediff-wind.el: Got rid of toolbars in control frame in XEmacs.
 
-       * ediff-wind.el: Changed window-min-height from 1 to 2
+       * ediff-wind.el: Changed window-min-height from 1 to 2.
 
        * ediff-wind.el (ediff-diff-at-point, ediff-toggle-multiframe):
        Bug fixes.
        (ediff-destroy-control-frame, ediff-window-display-p): New functions.
        * ediff.el, ediff-wind.el, ediff-util.el, ediff-init.el:
-       Converted xemacs *screen* nomenclature to *frame*.
-       Incorporated overlay strings. Ediff no longer runs under emacs
+       Converted XEmacs *screen* nomenclature to *frame*.
+       Incorporated overlay strings.  Ediff no longer runs under Emacs
        19.28 and earlier and XEmacs 19.11 and earlier.
        * ediff.el (ediff-patch-buffer): Now handles buffers that don't
        visit any file.
        (ediff-windows): Renamed to ediff-windows-wordwise, added
        (ediff-windows-linewise): New function.
-       Changed ediff-small/large-regions to ediff-regions-wordwise/linewise
+       Changed ediff-small/large-regions to ediff-regions-wordwise/linewise.
 
        * ediff.el, ediff-wind.el:
        Changed window-system to ediff-window-display.
        (ada-indent-function): Handle "elsif" the same way as "if", added
        "separate" for no indent.
        (ada-get-indent-type): If "type ... is .." is followed by code on
-       the same line, it is a broken statement. Test it.
+       the same line, it is a broken statement.  Test it.
        (ada-check-defun-name): Check for "protected" records.
        (ada-goto-matching-decl-start): Use of ada-ident-re.
        (ada-goto-matching-start): Extend regexp for "protected" record.
-       (ada-in-limit-line): Rename from in-limit-line. Don't use
+       (ada-in-limit-line): Rename from in-limit-line.  Don't use
        count-lines, but test if beginning-of-line/end-of-line puts us
        to bob/eob.
        (ada-goto-previous-nonblank-line): Save a beginning-of-line
        (ada-tabsize): Remove.
        (keymap): Use C-M-a and C-M-e for proc/func movement.
        No keybinding anymore for next/prev-package.
-       (ada-font-lock-keywords-[1|2]): Add protected records. "when" removed
+       (ada-font-lock-keywords-[1|2]): Add protected records.  "when" removed
        from 'reference'-face.
        (initial comments): Update CREDITS list.
        (ada-add-ada-menu): Capitalize menu entries.  Add menu statement
 
        * ada-mode.el: Change all Ada94 to Ada95.
 
-       * ada-mode.el: (ada-xemacs): New function, detect if we are
-       running on XEmacs. Ada keymap definition and menus use it.
+       * ada-mode.el (ada-xemacs): New function, detect if we are
+       running on XEmacs.  Ada keymap definition and menus use it.
        (ada-create-syntax-table): Correct comments explaining use of 2nd
        syntax table.  Added creation of ada-mode-symbol-syntax-table
        with '_' as word constituent.
        (ada-adjust-case): Add test, if symbol is preceeded by a "'".
        If true, change case according to ada-case-attribute.
-       (ada-which-function-are-we-in): New routine. Save name of the current
+       (ada-which-function-are-we-in): New routine.  Save name of the current
        function in the old buffer; we can place cursor now at the same
        function in the new buffer using find-file.
        (ada-make-body): New function.  Generates body stubs if the body
        (ada-krunch-args): Initialized to 0 exploiting the new capability of
        'gnatk8' as of gnat-2.0.
        (ada-make-filename-from-adaname): Remove downcasing and replacement
-       of dots. This is done in external program gnatk8 (gnat-2.0).
+       of dots.  This is done in external program gnatk8 (gnat-2.0).
        (ada-in-open-paren-p): Complete rewrite for speed-up.
        (ada-search-ignore-string-comment): Ignore # as a string terminator
        in all searches.
        (ada-add-ada-menu): Use real variables instead of t for invoking
-       'easymenu'
-       (require 'easymenu).
+       'easymenu'.
        (imenu-create-ada-index): We accept forward definitions again.
        (ada-indent-region): Catch errors, simplified code.
 
 
        * easymenu.el (easy-menu-do-define): Add autoload cookie.
 
-1995-05-19  Kevin Rodgers  <kevinr@ihs.com> (tiny change)
+1995-05-19  Kevin Rodgers  <kevinr@ihs.com>  (tiny change)
 
        * mailalias.el (expand-mail-aliases): Expand aliases in
        From and Reply-to headers as well, plus the Resent- variants.
        * ps-print.el (ps-faces-list): Delete.  Added alias for
        list-faces if face-list isn't fbound.
 
-       * ps-print.el: (ps-print-ensure-fontified) added to make sure
+       * ps-print.el (ps-print-ensure-fontified): Added to make sure
        ps-print works correctly in conjunction with lazy-lock.
 
        * ps-print.el: RMS's changes for Emacs.
 
 1995-05-02  Karl Heuer  <kwzh@hal.gnu.ai.mit.edu>
 
-       * scribe.el: (scribe-chapter): Change to C-c C-c.
+       * scribe.el (scribe-chapter): Change to C-c C-c.
        (scribe-section): Change to C-c C-t.
        (scribe-subsection): Change to C-c C-s.
        (scribe-insert-environment): Change to C-c C-v.
 
 1995-04-25  Johan Vromans  <jv@squirrel.NL.net>
 
-       * forms.el: (forms--make-format-elt-using-text-properties)
-       forms--make-format): Add `intangible' text property to read-only areas.
+       * forms.el (forms--make-format-elt-using-text-properties)
+       (forms--make-format): Add `intangible' text property to read-only areas.
        (forms-next-field, forms-previous-field):
        Use `inhibit-point-motion-hooks' to allow move between two
        intangible areas.
 1995-04-16  Ethan Bradford  <ethanb@phys.washington.edu>
 
        * ispell.el (ispell-init-ispell): Don't barf if there is a
-       warning message before the version line when Ispell starts up.
+       warning message before the version line when Ispell starts up.
 
 1995-04-16  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 1995-04-08  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * etags.el (next-file): Handle empty list returned by
-       (tags-table-files).
+       `tags-table-files'.
 
 1995-04-08  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
        Added the P tag and modified the s tag accordingly
        (tempo-insert-named): Checks for valid name, insert mark otherwise.
 
-       * tempo.el (tempo-dolist): Changed (cadr ...) to (car (cdr ...))
+       * tempo.el (tempo-dolist): Changed (cadr ...) to (car (cdr ...)).
 
-       * tempo.el (tempo-expand-if-complete): New function
+       * tempo.el (tempo-expand-if-complete): New function.
 
 1995-04-03  Karl Heuer  <kwzh@hal.gnu.ai.mit.edu>
 
        * unrmail.el (unrmail): Don't make or switch to a summary buffer.
 
        * rmail.el (rmail-displayed-headers): New variable.
-       (rmail-clear-headers): Handle rmail-displayed-headers
+       (rmail-clear-headers): Handle rmail-displayed-headers.
 
 1995-03-31  Michael Ernst  <mernst@research.microsoft.com>
 
 
 1995-03-20  Karl Fogel  <kfogel@floss.cyclic.com>
 
-       * bookmark.el (bookmark-automatically-show-annotations): new var.
-       (bookmark-jump): only show annotation if above var is non-nil.
+       * bookmark.el (bookmark-automatically-show-annotations): New var.
+       (bookmark-jump): Only show annotation if above var is non-nil.
 
 1995-03-20  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1995-03-15  Per Bothner  <bothner@kalessin.cygnus.com>
 
-       * term.el (term-mouse-paste):  Make work for xemacs-19.11.
-       For GNU emacs, don't mouse-set-point, but do
-       run-hooks on mouse-leave-buffer-hook,
+       * term.el (term-mouse-paste): Make work for XEmacs-19.11.
+       For GNU Emacs, don't mouse-set-point, but do
+       run-hooks on mouse-leave-buffer-hook.
 
-       * term.el (term-char-mode):  Fix paren error that caused
-       the arrow keys to not be recognized under xemacs.
-       Also, simplify/fix [(button2)] to [button2] for paste under xemacs.
+       * term.el (term-char-mode): Fix paren error that caused
+       the arrow keys to not be recognized under XEmacs.
+       Also, simplify/fix [(button2)] to [button2] for paste under XEmacs.
 
 1995-03-15  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1995-03-15  Karl Fogel  <kfogel@spiff.gnu.ai.mit.edu>
 
-       * bookmark.el: (bookmark-bmenu-2-window): Go to correct position
+       * bookmark.el (bookmark-bmenu-2-window): Go to correct position
        as well as correct buffer.
        (bookmark-bmenu-other-window): Same.
        (bookmark-bmenu-switch-other-window): Same.
 
 1995-03-07  Per Bothner  <bothner@kalessin.cygnus.com>
 
-       * term.el (term-eol-on-send):  New variable.
-       (term-send-input):  Move point to eol before sending only if
+       * term.el (term-eol-on-send): New variable.
+       (term-send-input): Move point to eol before sending only if
        term-eol-on-send is true.
 
-       * term.el (term-send-input):  Don't move process-mark until
+       * term.el (term-send-input): Don't move process-mark until
        after possible 'history processing.
 
 1995-03-07  Francesco Potorti`  (pot@cnuce.cnr.it)
        * gnus-uu.el (gnus-uu-post-reply-mode): Likewise.
        * icon.el (icon-mode): Likewise.
        * mh-comp.el (mh-letter-mode): Likewise.
-       * mim-mode.el (mim-mode):  Likewise.
-       * modula2.el (modula-2-mode):  Likewise.
-       * nroff-mode.el (nroff-mode):  Likewise.
-       * options.el (Edit-options-mode):  Likewise.
-       * outline.el (outline-mode):  Likewise.
-       * perl-mode.el (perl-mode):  Likewise.
-       * prolog.el (prolog-mode-variables):  Likewise.
-       * rnewspost.el (news-reply-mode):  Likewise.
-       * scheme.el (scheme-mode-variables):  Likewise.
-       * scribe.el (scribe-mode):  Likewise.
-       * sendmail.el (mail-mode):  Likewise.
-       * simula.el (simula-mode):  Likewise.
-       * texinfmt.el (texinfo-format-refill):  Likewise.
-       * texinfo.el (texinfo-mode):  Likewise.
-       * tex-mode.el (tex-common-initialization,latex-mode,slitex-mode):
+       * mim-mode.el (mim-mode): Likewise.
+       * modula2.el (modula-2-mode): Likewise.
+       * nroff-mode.el (nroff-mode): Likewise.
+       * options.el (Edit-options-mode): Likewise.
+       * outline.el (outline-mode): Likewise.
+       * perl-mode.el (perl-mode): Likewise.
+       * prolog.el (prolog-mode-variables): Likewise.
+       * rnewspost.el (news-reply-mode): Likewise.
+       * scheme.el (scheme-mode-variables): Likewise.
+       * scribe.el (scribe-mode): Likewise.
+       * sendmail.el (mail-mode): Likewise.
+       * simula.el (simula-mode): Likewise.
+       * texinfmt.el (texinfo-format-refill): Likewise.
+       * texinfo.el (texinfo-mode): Likewise.
+       * tex-mode.el (tex-common-initialization, latex-mode, slitex-mode):
        Likewise.
-       * text-mode.el (indented-text-mode):  Likewise.
-       * vc.el (vc-comment-to-change-log):  Likewise.
+       * text-mode.el (indented-text-mode): Likewise.
+       * vc.el (vc-comment-to-change-log): Likewise.
 
 1995-03-02  Simon Marshall  <simon@duality.gnu.ai.mit.edu>
 
        inserted line to left-margin.
 
        * paragraphs.el (paragraph-start, paragraph-separate):
-       Default values no longer start with ^. Doc fix.
+       Default values no longer start with ^.  Doc fix.
        (use-hard-newlines): Moved here from cmds.c.  Made buffer-local.
        Doc fix.
        (looking-at-hard): Deleted, not needed.
        (delete-to-left-margin): Use move-to-left-margin.  Doc fix.
        Make arguments optional.
 
-       (set-left-margin): Make region include following spaces and tabs,
+       (set-left-margin): Make region include following spaces and tabs,
        so that later insertions there will inherit new setting.
        Always reindent text to show new setting, not only when auto-fill
        is active; auto-fill controls only whether to re-fill text.
 
 1995-02-04  Per Bothner  <bothner@kalessin.cygnus.com>
 
-       * term.el (term-version):  Increased to 0.95.
-       (term-pager-enabled):  New macro.  Use it a bunch of places.
-       (term-terminal-menu):  Clean up initialization so we don't get
+       * term.el (term-version): Increased to 0.95.
+       (term-pager-enabled): New macro.  Use it a bunch of places.
+       (term-terminal-menu): Clean up initialization so we don't get
        complaints when re-loading term.el.
-       (term-send-raw-meta):  Redo to handle meta-symbols (e.g. meta-delete).
+       (term-send-raw-meta): Redo to handle meta-symbols (e.g. meta-delete).
        More robust checking of parameter to make-string.
-       (term-update-mode-line):  New function.  Call it whenever we change
+       (term-update-mode-line): New function.  Call it whenever we change
        char/line/paging mode.  Now includes "page" in mode-line-process
        if paging is abled.
 
-       * term.el:  Remove causes for byte-compilation to complain:
-       (term-terminal-pos):  Declare x and y in let-binding.
-       (term-send-invisible):  Remove bogus second "iteractive" call.
+       * term.el: Remove causes for byte-compilation to complain:
+       (term-terminal-pos): Declare x and y in let-binding.
+       (term-send-invisible): Remove bogus second "iteractive" call.
        (term-*): Provide defvars for lots of buffer-local variables.
-       (term-mode):  Make comments and initial value setting from
+       (term-mode): Make comments and initial value setting from
        here to the corresponding defvar.
-       (term-line-start-column):  Remove unused variable.
-       (term-erase-in-line):  Fix syntax (incorrect parenthesis) error.
-       (term-erase-in-display):  Fix typo "\?n" -> "?\n".
+       (term-line-start-column): Remove unused variable.
+       (term-erase-in-line): Fix syntax (incorrect parenthesis) error.
+       (term-erase-in-display): Fix typo "\?n" -> "?\n".
 
-       * term.el:  Make Unix "resize" command work:
-       (term-handle-ansi-escape):  On "\e[row;colH", limit row
+       * term.el: Make Unix "resize" command work:
+       (term-handle-ansi-escape): On "\e[row;colH", limit row
        and col to size of window.  (Resize sends "999;999".)
-       (term-handle-ansi-escape):   Implement "\e[6n" "Report cursor
+       (term-handle-ansi-escape): Implement "\e[6n" "Report cursor
        position".  This requires that we pass proc as an extra parameter.
-       (term-scroll-region):  An empty region means extend to window bottom.
+       (term-scroll-region): An empty region means extend to window bottom.
 
 1995-02-05  Richard Stallman  <rms@pogo.gnu.ai.mit.edu>
 
 
 1995-01-25  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
-       * mouse.el (mouse-save-then-kill): Ignore mouse-selection-click-count if no active mark.
-       (mouse-drag-region): Modify previous change--don't run the ordinary binding
-       in the case of a multiple click.
+       * mouse.el (mouse-save-then-kill): Ignore mouse-selection-click-count
+       if no active mark.
+       (mouse-drag-region): Modify previous change--don't run the ordinary
+       binding in the case of a multiple click.
 
        * tex-mode.el (tex-display-shell): New function.
        (tex-file, tex-region, tex-show-print-queue, tex-bibtex-file):
        * etags.el : Changes to support filenames as tags too and provided
        a drop-in replacement for list-tags.
        (find-tag-noselect): Recognize filenames as valid tags too.
-       (find-tag-file-order): New variable added. This contains the name of
+       (find-tag-file-order): New variable added.  This contains the name of
        the function used to qualify a matched filename.
        (last-tag-file): New variable; stores the filename looked for via
        find-tag fmaily of functions.
        (find-tag-in-order): In case tag searched for is a file, don't do
-       anything fancy to locate position of tag in file. Just seek to
+       anything fancy to locate position of tag in file.  Just seek to
        beginning of file.
        (etags-recognize-tags-table): Added new var find-tag-file-order to
        tags-table-format variables and also set the priority of searching
        (tags-list-functions-in-file): New function which is a backend for
        list-tags function.
        (tags-locate-file-in-tags-table): New function which locates a
-       file in `tags-table-list'. Its used by list-tags.
+       file in `tags-table-list'.  Its used by list-tags.
 
 1995-01-24  Frederic Lepied  <fred@sugix.frmug.fr.net>
 
        Add a newsgroups-update-description menu.
        (gnus-newsgroups-regex, gnus-newsgroups-display, gnus-newsgroups-alist)
        (gnus-newsgroups-hashtb, gnus-newsgroups-showall): New variables.
-       (gnus-group-group-name):  Changed the regexp to avoid  conflict
+       (gnus-group-group-name): Changed the regexp to avoid  conflict
        with descriptions which have a ':' inside.
        (gnus-group-mode): Doc fix.
 
 
 1995-01-23  Espen Skoglund  <espensk@tklab3.cs.uit.no>
 
-       * pascal.el: (pascal-*-completion, pascal-comp-defun)
+       * pascal.el (pascal-*-completion, pascal-comp-defun)
        (pascal-complete-word, pascal-completion-response, pascal-completion)
        (pascal-get-completion-decl): Rename some internal variables
        to start with 'pascal-'.
 
        * tempo.el (tempo-region-start, tempo-region-stop): New variables
        (tempo-insert-template, tempo-insert): Don't affect the
-       mark.  Check for Transient Mark mode
+       mark.  Check for Transient Mark mode.
 
-       * tempo.el (tempo-find-match-string): Removed the stupid 1+ again
+       * tempo.el (tempo-find-match-string): Removed the stupid 1+ again.
 
        * tempo.el (tempo-use-tag-list):
-       Set tempo-match-finder to completion-function
+       Set tempo-match-finder to completion-function.
 
        * tempo.el (tempo-match-finder): Renamed variable from
        tempo-default-match-finder.  Change the value too.
 
 1995-01-21  Per Bothner  <bothner@kalessin.cygnus.com>
 
-       * term.el (term-version):  Increased to 0.94.
-       (term-if-emacs19, term-if-xemacs, term-ifnot-xemacs):  New macros
-       to conditionalize at compile-time for different emacs versions.
-       (various places):  Use them (instead of term-is-XXXX).
-       (term-is-emacs19):  Removed, no longer needed.
+       * term.el (term-version): Increased to 0.94.
+       (term-if-emacs19, term-if-xemacs, term-ifnot-xemacs): New macros
+       to conditionalize at compile-time for different Emacs versions.
+       (various places): Use them (instead of term-is-XXXX).
+       (term-is-emacs19): Removed, no longer needed.
 
-       * term.el:  Change keybindings to not use C-c LETTER, for
+       * term.el: Change keybindings to not use C-c LETTER, for
        term-char-mode, term-line-mode.  Keybindings for term-pager-enable
        and term-pager-disable replaced by one for term-pager-toggle.
-       (term-pager-toggle):  New function.
+       (term-pager-toggle): New function.
 
        * term.el (term-fake-pager-enable, term-fake-pager-disable):
        Define as aliases, so that menubar code will find proper keybindings.
-       (term-char-mode):  Make no-op if already in char mode.
-       (term-line-mode):  Make no-op if already in line mode.
-       (term-mode-map):  Add keybinding for no-op term-line-mode, so
+       (term-char-mode): Make no-op if already in char mode.
+       (term-line-mode): Make no-op if already in line mode.
+       (term-mode-map): Add keybinding for no-op term-line-mode, so
        code to display menubar keybindings doesn't lose it.  (Needed
        as long as char-mode and line-mode share term-terminal-menu.)
-       (term-raw-escape-map):  Likewise for term-char-mode.
-       (term-char-mode, term-line-mode):  Better documentation strings.
+       (term-raw-escape-map): Likewise for term-char-mode.
+       (term-char-mode, term-line-mode): Better documentation strings.
 
-       * term.el:  Added menubar for pager sub-mode.
+       * term.el: Added menubar for pager sub-mode.
 
-       * term.el (term-command-hook):  Disabled the feature that allowed
-       inferior to send a lisp command to emacs - too big a security hole.
+       * term.el (term-command-hook): Disabled the feature that allowed
+       inferior to send a lisp command to Emacs - too big a security hole.
 
 1995-01-21  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        (facemenu-unlisted-faces): Doc fix.
 
        * facemenu.el: Revise keybindings; doc fix.
-       (facemenu-new-faces-at-end): New vbl. (facemenu-add-new-face): Use it.
+       (facemenu-new-faces-at-end): New vbl.
+       (facemenu-add-new-face): Use it.
        (facemenu-set-face, facemenu-set-face-from-menu): Check read-only.
        (facemenu-set-face): Doc fix.
 
        (facemenu-add-new-face): New function.
        (facemenu-update): Don't redo top-level menu;
        nothing should change.  Move menu setup to defvars.
-       Use facemenu-add-new-face. Changed global binding to C-down-mouse-3.
+       Use facemenu-add-new-face.  Changed global binding to C-down-mouse-3.
        (facemenu-menu): "Update" item removed; should
        no longer be needed interactively.
        (facemenu-complete-face-list): Just return faces, not keybindings.
 1995-01-17  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
        * gud.el (gud-new-keymap): New function.
-       (gud-xdb-find-file, gud-dbx-find-file, gud-sdb-find-file, gud-gdb-find-file):
-       Use it for keymap inheritance.
+       (gud-xdb-find-file, gud-dbx-find-file, gud-sdb-find-file)
+       (gud-gdb-find-file): Use it for keymap inheritance.
 
 1995-01-17  Dave Love  <d.love@dl.ac.uk>
 
 
        * files.el (revert-buffer): Recompute buffer-file-truename.
 
-       * c-mode.el (indent-c-exp): Handle `{ if (x)\n  foo;\n  bar;' case.
+       * c-mode.el (indent-c-exp): Handle `{ if (x)\n  foo;\n  bar;' case.
        * cplus-md.el (indent-c++-exp): Handle `{ if (x)\n  foo;\n  bar;' case.
 
        * etags.el (etags-goto-tag-location): Add 1 to char positions in TAGS.
        default directory.  Also, mark the *vc* output buffer unmodified.
        (vc-revert-buffer1): Handle font-lock mode correctly.
        (vc-diff, vc-print-log): vc-do-command no longer sets the default
-       directory, but doing so is advantageous for these cases.
-       (file-executable-p-18): Better portability to Emacs 18.
+       directory, but doing so is advantageous for these cases.
+       (file-executable-p-18): Better portability to Emacs 18.
        (vc-directory-exclusion-list, vc-file-tree-walk-internal):
        Implement the new variable vc-directory-exclusion-list to prune
        tree walks.  Initial value tells it to ignore SCCS and RCS
 1994-12-28  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * etags.el (find-tag-in-order): Don't set buffer-local value of
-        tags-file-name.
+       tags-file-name.
 
 1994-12-27  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1994-12-22  Dave Love  <d.love@dl.ac.uk>
 
-        * gud.el (gdb): Correct tbreak doc string.
-        (gud-mode): Define a Gud menu.
-        (gdb): Set debugger-specific menu entries.
-        (sdb) (dbx) (xdb): Likewise.
+       * gud.el (gdb): Correct tbreak doc string.
+       (gud-mode): Define a Gud menu.
+       (gdb): Set debugger-specific menu entries.
+       (sdb) (dbx) (xdb): Likewise.
 
 1994-12-22  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
        * imenu.el (imenu-always-use-completion-buffer-p): A value of
        `never' now means never display a completion buffer.
-       (imenu--completion-buffer): implement 'never behaviour.
+       (imenu--completion-buffer): Implement 'never behaviour.
 
 1994-12-21  Stefan Schoef  <schoef@informatik.uni-oldenburg.de>
 
        * bibtex.el: Changed keybinding for bibtex-print-help-message
-        (from \C-ch to \C-c?). Therefore, describe-mode is not longer on
-        \C-c?. Also, changed prefix \C-cn for bibtex-narrow functions to
-        \C-c\C-r.
-        (bibtex-string-files): Changed documentation.
-        (bibtex-mode-map): Inscriptions of menu bar changed from "Entry
-        Types" to "Entry-Types" and "Bibtex Edit" to "BibTeX-Edit".
-        (bibtex-string-files): Changed documentation.
-        (bibtex-mode): If environment variable BIBINPUTS isn't defined,
-        string files are searched in the current directory.
-        (bibtex-completion-candidates): Now buffer-local to allow
-        evaluation of different bibtex-string-files in different buffers.
-        (bibtex-autokey-edit-before-use, bibtex-clean-entry): New variable
-        that determines, if the user is allowed to edit auto-generated
-        reference keys before they are used.
-        (bibtex-generate-autokey, bibtex-clean-entry): New function to
-        generate an autokey if necessary.
-        (bibtex-autokey-names, bibtex-autokey-name-change-strings,
-        bibtex-autokey-name-length, bibtex-autokey-name-separator,
-        bibtex-autokey-year-length, bibtex-autokey-titlewords,
-        bibtex-autokey-title-terminators,
-        bibtex-autokey-titlewords-stretch,
-        bibtex-autokey-titleword-first-ignore,
-        bibtex-autokey-titleword-abbrevs,
-        bibtex-autokey-titleword-change-strings,
-        bibtex-autokey-titleword-length,
-        bibtex-autokey-titleword-separator,
-        bibtex-autokey-name-year-separator,
-        bibtex-autokey-year-title-separator): New variables related to
-        bibtex-generate-autokey.
-        (bibtex-find-entry-location): Optional second parameter maybedup
-        to tell it that entering a duplicate entry isn't to report by an
-        error but by the return value of the function (necessary for
-        bibtex-clean-entry to find the correct position of an entry with
-        an autogenerated key without disturbing the user with unwanted
-        messages).
-        (bibtex-help-message): New variable to avoid printing of help
-        messages in the echo area.
-        (assoc-of-regexp): New function to match an alist of regexps.
-        (bibtex-string-files, bibtex-completion-candidates, bibtex-mode):
-        New variables to allow bibtex-complete-string to work on strings
-        initialized from a variable and from @String definitions in a list
-        of files, too.
-        (bibtex-predefined-strings, bibtex-entry-field-alist): Changed to
-        user options.
-        (bibtex-mode): Changed doc string.
-        (many functions and variables): Changed documentation strings of
-        variables and functions to hold a complete sentence in the first
-        line.
-        (bibtex-print-help-message): Now line dependent and reports if it
-        is called outside a BibTeX field.
-        (validate-bibtex-buffer): Completely rewritten to validate, if
-        buffer is syntactically correct.
-        (find-bibtex-duplicates): Moved into validate-bibtex-buffer.
-        (ispell-abstract, bibtex-ispell-abstract, ispell-bibtex-entry,
-        bibtex-ispell-entry, beginning-of-bibtex-entry,
-        bibtex-beginning-of-entry, end-of-bibtex-entry,
-        bibtex-end-of-entry, hide-bibtex-entry-bodies,
-        bibtex-hide-entry-bodies, narrow-to-bibtex-entry,
-        bibtex-narrow-to-entry, sort-bibtex-entries, bibtex-sort-entries,
-        validate-bibtex-buffer, bibtex-validate-buffer,
-        find-bibtex-entry-location, bibtex-find-entry-location): All
-        interactive functions are renamed, so that any interface function
-        begins with "bibtex-". Mapping:
-        ispell-abstract            --> bibtex-ispell-abstract
-        ispell-bibtex-entry        --> bibtex-ispell-entry
-        beginning-of-bibtex-entry  --> bibtex-beginning-of-entry
-        end-of-bibtex-entry        --> bibtex-end-of-entry
-        hide-bibtex-entry-bodies   --> bibtex-hide-entry-bodies
-        narrow-to-bibtex-entry     --> bibtex-narrow-to-entry
-        sort-bibtex-entries        --> bibtex-sort-entries
-        validate-bibtex-buffer     --> bibtex-validate-buffer
-        find-bibtex-entry-location --> bibtex-find-entry-location
-        (bibtex-maintain-sorted-entries,
-        bibtex-sort-ignore-string-entries): Default is now t.
-        (bibtex-complete-string): String list is built from additional
-        string list bibtex-predefined-string and current strings in file.
-        (string-equalp): Deleted and substituted by string-equal.
-        (assoc-string-equalp): Renamed to assoc-ignore-case.
-        (bibtex-entry): Reference key can be entered with completion. All
-        reference keys that are defined in buffer and all labels that
-        appear in crossreference entries are object to completion.
-        (Entry types): Changed order of entries in menu "entry types".
-        (bibtex-entry-field-alist): Changed order of entries slightly to
-        be more conform with standard BibTeX style layouts.
-        (bibtex-mode-map): Uniform keybindings for \C-c\C-e prefix (often
-        used types on control keys, sometimes used types on normal keys,
-        rarely used types on shift keys, almost never used types on meta
-        keys).
-        (bibtex-mode-map): Function narrow-to-bibtex-entry and counterpart
-        widen and function hide-bibtex-entry-bodies and counterpart
-        show-all bounded to appropriate local keys.
-        (bibtex-abbrev-table): Deleted
-        (bibtex-current-entry-label, put-string-on-kill-ring): Deleted
-        (AUCTeX provides all the functionality needed for citation
-        completion).
-        (bibtex-enclosing-reference, bibtex-pop-previous, bibtex-pop-next,
-        bibtex-clean-entry): Hacked for speed (bibtex-pop-previous and
-        bibtex-pop-next were to slow for larger BibTeX files).
-        (bibtex-pop-previous, bibtex-pop-next): Delimiters from previous
-        or next entry are changed to actual delimters if necessary.
-        (bibtex-entry): Fixed bug (False entry wasn't reported in error
-        message if bibtex-entry was called with undefined reference name).
-        (bibtex-entry-field-alist, bibtex-entry, bibtex-make-field,
-        bibtex-next-field, bibtex-clean-entry): Every reference entry now
-        contains a comment in addition to the name of the reference. This
-        comment appears in the echo area if you start editing that field
-        (after calling bibtex-next-field).
-        (bibtex-include-OPTcrossref, bibtex-entry): Changed
-        bibtex-include-OPTcrossref from single boolean variable to hold a
-        list of reference names which should have a crossref field.
-        (bibtex-complete-word): New function, which completes word
-        fragment before point to the longest prefix of predefined strings
-        in the buffer in the same way that ispell-complete-word operates
-        for words found in the dictionary.
-        (bibtex-reference-head): Start of bibtex-reference-head changed
-        from "^[ \t]*\\(" to "^\\( \\|\t\\)*\\(" (bibtex-pop-previous and
-        bibtex-pop-next didn't work, probably due to a bug in
-        re-search-forward).
-        (several functions): Added support for {} as field delimiters
-        (better than '"' for accented characters.
-        (bibtex-clean-entry): If optional field crossref is empty or
-        missing, former optional fields (if bibtex-include-OPTcrossref was
-        t) are necessary again. bibtex-clean-entry complains if they are
-        empty but not if they are missing, so you can intenionally omit
-        them, e. g. for a pseudo @Journal entry (needed for
-        crossreferences) made out of an @article with missing non-optional
-        fields.
-        Menu bar entries aren't centered anymore.
+       (from \C-ch to \C-c?).  Therefore, describe-mode is not longer on
+       \C-c?.  Also, changed prefix \C-cn for bibtex-narrow functions to
+       \C-c\C-r.
+       (bibtex-string-files): Changed documentation.
+       (bibtex-mode-map): Inscriptions of menu bar changed from "Entry
+       Types" to "Entry-Types" and "Bibtex Edit" to "BibTeX-Edit".
+       (bibtex-string-files): Changed documentation.
+       (bibtex-mode): If environment variable BIBINPUTS isn't defined,
+       string files are searched in the current directory.
+       (bibtex-completion-candidates): Now buffer-local to allow
+       evaluation of different bibtex-string-files in different buffers.
+       (bibtex-autokey-edit-before-use, bibtex-clean-entry): New variable
+       that determines, if the user is allowed to edit auto-generated
+       reference keys before they are used.
+       (bibtex-generate-autokey, bibtex-clean-entry): New function to
+       generate an autokey if necessary.
+       (bibtex-autokey-names, bibtex-autokey-name-change-strings,
+       bibtex-autokey-name-length, bibtex-autokey-name-separator,
+       bibtex-autokey-year-length, bibtex-autokey-titlewords,
+       bibtex-autokey-title-terminators,
+       bibtex-autokey-titlewords-stretch,
+       bibtex-autokey-titleword-first-ignore,
+       bibtex-autokey-titleword-abbrevs,
+       bibtex-autokey-titleword-change-strings,
+       bibtex-autokey-titleword-length,
+       bibtex-autokey-titleword-separator,
+       bibtex-autokey-name-year-separator,
+       bibtex-autokey-year-title-separator): New variables related to
+       bibtex-generate-autokey.
+       (bibtex-find-entry-location): Optional second parameter maybedup
+       to tell it that entering a duplicate entry isn't to report by an
+       error but by the return value of the function (necessary for
+       bibtex-clean-entry to find the correct position of an entry with
+       an autogenerated key without disturbing the user with unwanted
+       messages).
+       (bibtex-help-message): New variable to avoid printing of help
+       messages in the echo area.
+       (assoc-of-regexp): New function to match an alist of regexps.
+       (bibtex-string-files, bibtex-completion-candidates, bibtex-mode):
+       New variables to allow bibtex-complete-string to work on strings
+       initialized from a variable and from @String definitions in a list
+       of files, too.
+       (bibtex-predefined-strings, bibtex-entry-field-alist): Changed to
+       user options.
+       (bibtex-mode): Changed doc string.
+       (many functions and variables): Changed documentation strings of
+       variables and functions to hold a complete sentence in the first
+       line.
+       (bibtex-print-help-message): Now line dependent and reports if it
+       is called outside a BibTeX field.
+       (validate-bibtex-buffer): Completely rewritten to validate, if
+       buffer is syntactically correct.
+       (find-bibtex-duplicates): Moved into validate-bibtex-buffer.
+       (ispell-abstract, bibtex-ispell-abstract, ispell-bibtex-entry,
+       bibtex-ispell-entry, beginning-of-bibtex-entry,
+       bibtex-beginning-of-entry, end-of-bibtex-entry,
+       bibtex-end-of-entry, hide-bibtex-entry-bodies,
+       bibtex-hide-entry-bodies, narrow-to-bibtex-entry,
+       bibtex-narrow-to-entry, sort-bibtex-entries, bibtex-sort-entries,
+       validate-bibtex-buffer, bibtex-validate-buffer,
+       find-bibtex-entry-location, bibtex-find-entry-location): All
+       interactive functions are renamed, so that any interface function
+       begins with "bibtex-".  Mapping:
+       ispell-abstract            --> bibtex-ispell-abstract
+       ispell-bibtex-entry        --> bibtex-ispell-entry
+       beginning-of-bibtex-entry  --> bibtex-beginning-of-entry
+       end-of-bibtex-entry        --> bibtex-end-of-entry
+       hide-bibtex-entry-bodies   --> bibtex-hide-entry-bodies
+       narrow-to-bibtex-entry     --> bibtex-narrow-to-entry
+       sort-bibtex-entries        --> bibtex-sort-entries
+       validate-bibtex-buffer     --> bibtex-validate-buffer
+       find-bibtex-entry-location --> bibtex-find-entry-location
+       (bibtex-maintain-sorted-entries,
+       bibtex-sort-ignore-string-entries): Default is now t.
+       (bibtex-complete-string): String list is built from additional
+       string list bibtex-predefined-string and current strings in file.
+       (string-equalp): Deleted and substituted by string-equal.
+       (assoc-string-equalp): Renamed to assoc-ignore-case.
+       (bibtex-entry): Reference key can be entered with completion.  All
+       reference keys that are defined in buffer and all labels that
+       appear in crossreference entries are object to completion.
+       (Entry types): Changed order of entries in menu "entry types".
+       (bibtex-entry-field-alist): Changed order of entries slightly to
+       be more conform with standard BibTeX style layouts.
+       (bibtex-mode-map): Uniform keybindings for \C-c\C-e prefix (often
+       used types on control keys, sometimes used types on normal keys,
+       rarely used types on shift keys, almost never used types on meta
+       keys).
+       (bibtex-mode-map): Function narrow-to-bibtex-entry and counterpart
+       widen and function hide-bibtex-entry-bodies and counterpart
+       show-all bounded to appropriate local keys.
+       (bibtex-abbrev-table): Deleted
+       (bibtex-current-entry-label, put-string-on-kill-ring): Deleted
+       (AUCTeX provides all the functionality needed for citation
+       completion).
+       (bibtex-enclosing-reference, bibtex-pop-previous, bibtex-pop-next,
+       bibtex-clean-entry): Hacked for speed (bibtex-pop-previous and
+       bibtex-pop-next were to slow for larger BibTeX files).
+       (bibtex-pop-previous, bibtex-pop-next): Delimiters from previous
+       or next entry are changed to actual delimters if necessary.
+       (bibtex-entry): Fixed bug (False entry wasn't reported in error
+       message if bibtex-entry was called with undefined reference name).
+       (bibtex-entry-field-alist, bibtex-entry, bibtex-make-field,
+       bibtex-next-field, bibtex-clean-entry): Every reference entry now
+       contains a comment in addition to the name of the reference.  This
+       comment appears in the echo area if you start editing that field
+       (after calling bibtex-next-field).
+       (bibtex-include-OPTcrossref, bibtex-entry): Changed
+       bibtex-include-OPTcrossref from single boolean variable to hold a
+       list of reference names which should have a crossref field.
+       (bibtex-complete-word): New function, which completes word
+       fragment before point to the longest prefix of predefined strings
+       in the buffer in the same way that ispell-complete-word operates
+       for words found in the dictionary.
+       (bibtex-reference-head): Start of bibtex-reference-head changed
+       from "^[ \t]*\\(" to "^\\( \\|\t\\)*\\(" (bibtex-pop-previous and
+       bibtex-pop-next didn't work, probably due to a bug in
+       re-search-forward).
+       (several functions): Added support for {} as field delimiters
+       (better than '"' for accented characters.
+       (bibtex-clean-entry): If optional field crossref is empty or
+       missing, former optional fields (if bibtex-include-OPTcrossref was
+       t) are necessary again.  bibtex-clean-entry complains if they are
+       empty but not if they are missing, so you can intenionally omit
+       them, e. g. for a pseudo @Journal entry (needed for
+       crossreferences) made out of an @article with missing non-optional
+       fields.
+       Menu bar entries aren't centered anymore.
 
 1994-12-21  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1994-12-21  Dave Love  <d.love@dl.ac.uk>
 
-        * gud.el (gud-irixdbx-marker-filter): Changes for Irix dbx.
-        (dbx): gud-up, gud-down are now special cases for Irix.
+       * gud.el (gud-irixdbx-marker-filter): Changes for Irix dbx.
+       (dbx): gud-up, gud-down are now special cases for Irix.
 
 1994-12-21  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1994-12-21  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
 
-        * tex-mode.el (tex-shell-map,tex-start-shell): Start with
-        shell-mode-map.
+       * tex-mode.el (tex-shell-map, tex-start-shell): Start with
+       shell-mode-map.
 
 1994-12-21  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1994-12-19  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
 
-        * tex-mode.el (tex-start-shell): Use comint prompt and mode-map.
+       * tex-mode.el (tex-start-shell): Use comint prompt and mode-map.
 
 1994-12-18  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
        and pass it along to vc-next-action.
 
        * font-lock.el (font-lock-hack-keywords): Turn off undo generation.
-       (font-lock-unfontify-region. font-lock-fontify-region): Likewise.
+       (font-lock-unfontify-region, font-lock-fontify-region): Likewise.
 
        * c-mode.el (indent-c-exp): Don't be fooled by else_ or while_.
        (c-indent-line): Likewise.
        * replace.el (perform-replace):
        Report number of replacements when done.
        (query-replace, query-replace-regexp, replace-string)
-       (map-query-replace-regexp. replace-regexp): No message here.
+       (map-query-replace-regexp, replace-regexp): No message here.
 
 1994-12-13  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 1994-12-09  Ken Stevens  <stevensk@afit.af.mil>
 
        * ispell.el: Added ispell-offset for version consistency.
-       (ispell-dictionary-alist): updated dictionaries & better match defaults
-       (ispell-alternate-dictionary): added /usr/shar path
-       (ispell-menu-map-needed): redo changes that made this incompatible
-        with earlier versions of emacs19.
-       (ispell-required-version): changed to assure version 3.1.12 accessed.
+       (ispell-dictionary-alist): Updated dictionaries & better match defaults
+       (ispell-alternate-dictionary): Added /usr/shar path
+       (ispell-menu-map-needed): Redo changes that made this incompatible
+       with earlier versions of Emacs19.
+       (ispell-required-version): Changed to assure version 3.1.12 accessed.
        (ispell-word): Correctly accept buffer-local information.
-        Does not try to modify read-only buffer on 'm' command.
-       (ispell-command-loop): fixed bug that corrupted buffers.
-        removed scrolling when *Choices* buffer shrinks.
+       Does not try to modify read-only buffer on 'm' command.
+       (ispell-command-loop): Fixed bug that corrupted buffers.
+       removed scrolling when *Choices* buffer shrinks.
        (check-ispell-version): Correctly identifies new version requirements.
        (ispell-region): Interaction updated for version 3.1.12+
        Buffer read-only modification improvement.  Dictionary messages added.
-       (ispell-message-text-end): skips additional shell files.
-       (ispell-buffer-local-parsing): extended-char mode now matches text mode
+       (ispell-message-text-end): Skips additional shell files.
+       (ispell-buffer-local-parsing): extended-char mode now matches text mode.
 
 1994-12-09  Karl Heuer  <kwzh@nutrimat.gnu.ai.mit.edu>
 
 
 1994-12-08  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
 
-        * cal-mayan.el (calendar-mayan-days-before-absolute-zero): Mention
-        Hochleitner's correlation.
+       * cal-mayan.el (calendar-mayan-days-before-absolute-zero): Mention
+       Hochleitner's correlation.
 
 1994-12-07  Richard Stallman  <rms@green-hill>
 
 1994-11-30  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * compile.el (compilation-next-error-locus): Parsed column numbers
-        are 1-origin.
+       are 1-origin.
 
 1994-11-29  Richard Stallman  <rms@bethel>
 
 
 1994-11-29  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
 
-        * cal-x.el: New file.
+       * cal-x.el: New file.
 
-        * calendar.el: Mention cal-x.el in comments.
+       * calendar.el: Mention cal-x.el in comments.
 
 1994-11-28  Richard Stallman  <rms@bethel>
 
 
 1994-11-21  Per Bothner  <bothner@kalessin.cygnus.com>
 
-       * term.el (term-termcap-format):  Add cd capability.  Fix ei.
+       * term.el (term-termcap-format): Add cd capability.  Fix ei.
        (term-exec-1): Pass $TERMINFO instead of $TERMCAP if appropriate.
        Pass emacs-version and term-version in $TERM.
        Rewrite to set process-environment.
 1994-11-15  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * etags.el (tags-query-replace): Use query-replace-read-args in
-        interactive spec.
+       interactive spec.
 
 1994-11-15  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 1994-11-10  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * compile.el (compile): With prefix arg, prompt even if (not
-        compilation-read-command).
+       compilation-read-command).
        (compilation-error-regexp-alist): Make first regexp match column
        numbers too.  Remove regexp for "prog:file:line: error".  Replace
        GNAT 1.82 regexp with "prog: file:line\(:col\)?: error".
 
 1994-11-07  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
 
-        * solar.el (solar-sunrise-sunset): Check for nil time before
+       * solar.el (solar-sunrise-sunset): Check for nil time before
        trying to adjust it for dst.
 
 1994-11-07  Francesco Potorti`  (pot@cnuce.cnr.it)
 
 1994-10-30  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
 
-        * calendar.el (calendar-mode): Delete to window configuration var.
+       * calendar.el (calendar-mode): Delete to window configuration var.
 
 1994-10-30  Richard Stallman  <rms@pogo.gnu.ai.mit.edu>
 
 1994-10-29  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
 
        * calendar.el (calendar, calendar-other-month): Fix use of
-        calendar-read-date.
+       calendar-read-date.
        (calendar-read-date): Fix noday option.
 
        * lunar.el (phases-of-moon): Fix use of calendar-read-date.
        (calendar-latitude, calendar-longitude, calendar-location): Include
        vector form; suggest setting values in site-local.el.
        (solar-sin-degrees, solar-cosine-degrees): Change to macros.
-       (solar-degrees-to-hours, solar-hours-to-days):  Change to defsubst.
+       (solar-degrees-to-hours, solar-hours-to-days): Change to defsubst.
        (solar-sunrise, solar-sunset): Allow use of vector forms of
        latitude/longitude.
        (calendar-latitude, calendar-longitude): New macros to allow use
 
 1994-10-24  Francesco Potorti`  (pot@cnuce.cnr.it)
 
-       * man.el (Man-cleanup-manpage): do all the work if called
+       * man.el (Man-cleanup-manpage): Do all the work if called
        interactively.
 
 1994-10-23  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * dired.el (dired-mode-map): Add query-replace and search items to
-        operate menu.
+       operate menu.
 
 1994-10-23  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 1994-10-22  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * dired-aux.el (dired-do-tags-search,
-        dired-do-tags-query-replace): New functions.
+       dired-do-tags-query-replace): New functions.
        * dired.el (dired-mode-map): Bind A to dired-do-tags-search, Q to
        dired-do-tags-query-replace.
 
 
 1994-10-20  Noah Friedman  <friedman@splode.com>
 
-        * timer.el (timer-error, timer-abnormal-termination,
-        timer-filter-error): New error conditions.
-        (timer-process-filter, timer-process-sentinel): Signal an error,
-        don't just print a message.
+       * timer.el (timer-error, timer-abnormal-termination,
+       timer-filter-error): New error conditions.
+       (timer-process-filter, timer-process-sentinel): Signal an error,
+       don't just print a message.
 
 1994-10-20  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1994-10-19  Noah Friedman  <friedman@splode.com>
 
-        * timer.el (timer-program): Make defvar, not defconst.
-        Expand name of timer program in exec-directory here.
-        (run-at-time): Not here.
+       * timer.el (timer-program): Make defvar, not defconst.
+       Expand name of timer program in exec-directory here.
+       (run-at-time): Not here.
 
 1994-10-19  Boris Goldowsky  <boris@cs.rochester.edu>
 
        * facemenu.el (facemenu-add-new-face): New function.
        * facemenu.el (facemenu-update): Don't redo top-level menu;
        nothing should change.  Move menu setup to defvars.  Use
-       facemenu-add-new-face. Changed global binding to C-down-mouse-3.
+       facemenu-add-new-face.  Changed global binding to C-down-mouse-3.
        * facemenu.el (facemenu-menu): "Update" item removed; should
        no longer be needed interactively.
        * facemenu.el (facemenu-complete-face-list): Just return faces,
 
 1994-10-17  Fred Pierresteguy  <F.Pierresteguy@frcl.bull.fr>
 
-        * paths.el (rmail-spool-directory): Add a condition to test
+       * paths.el (rmail-spool-directory): Add a condition to test
        the Bull DPX/2.
 
 1994-10-17  Morten Welinder  <terra@mole.gnu.ai.mit.edu>
 
        * facemenu.el (facemenu-read-color, facemenu-colors): New fn, var.
        (facemenu-set-face, facemenu-set-face-from-menu,
-       facemenu-after-change): Face property can take a list value; add
+       facemenu-after-change): Face property can take a list value; add
        to it rather than completely replacing the property.
        (facemenu-add-face, facemenu-discard-redundant-faces): New functions.
 
 
 1994-10-06  Noah Friedman  <friedman@splode.com>
 
-        * type-break.el: Do not call type-break-mode upon loading.
-        (type-break-time-sum): New function.
-        (type-break-schedule): Use it.  Make function interactive.
-        (type-break-guestimate-keystroke-threshold): Use `N' interactive
-        spec, not `n'.
-        (type-break-demo-boring): Show elapsed time of break, or number of
-        minutes left for good break.
+       * type-break.el: Do not call type-break-mode upon loading.
+       (type-break-time-sum): New function.
+       (type-break-schedule): Use it.  Make function interactive.
+       (type-break-guestimate-keystroke-threshold): Use `N' interactive
+       spec, not `n'.
+       (type-break-demo-boring): Show elapsed time of break, or number of
+       minutes left for good break.
 
 1994-10-06  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
        * perl-mode.el (perl-font-lock-keywords): New variable.
 
-       * pascal.el (pascal-font-lock-keywords):  New variable.
+       * pascal.el (pascal-font-lock-keywords): New variable.
        (pascal-mode): Set comment-start-skip and comment-end.
 
-       * font-lock.el: (font-lock-mode): Doc fix; use add/remove-hook, not
+       * font-lock.el (font-lock-mode): Doc fix; use add/remove-hook, not
        setq; removed make-local-variable of font-lock-no-comments.
        (font-lock-set-defaults): Do it there, and use:
        (font-lock-defaults-alist): Use it to set font-lock-keywords,
        (turn-on-font-lock): New function.
        (font-lock-fontify-buffer): Made interruptible; deleted messages.
 
-       * font-lock.el: (font-lock-fontify-region): Made syntax state reliable
+       * font-lock.el (font-lock-fontify-region): Made syntax state reliable
        by widening within new restriction; let cstart and cend for speed;
        outputs message.
        (font-lock-after-change-function): Remove spurious goto-char and use
        forward-line, not 1+ end-of-line, for end of fontification region.
        (font-lock-any-properties-p): Removed, use text-property-not-all.
 
-       * font-lock.el (font-lock-*-face): facename values are themselves.
+       * font-lock.el (font-lock-*-face): Facename values are themselves.
        (font-lock-variable-name-face, font-lock-reference-face): New vars.
        (font-lock-doc-string-face): Removed.
        (font-lock-keywords): Extended value syntax.
 
 1994-09-30  Francesco Potorti`  (pot@cnuce.cnr.it)
 
-       * man.el (Man-init-defvars, Man-cleanup-manpage,
-       Man-fontify-manpage): fix previous fix.
+       * man.el (Man-init-defvars, Man-cleanup-manpage)
+       (Man-fontify-manpage): Fix previous fix.
 
 1994-09-30  Michael Ernst  <mernst@research.microsoft.com>
 
 
 1994-09-27  Christopher J. Madsen  <ac608@yfn.ysu.edu>
 
-        * files.el (hack-one-local-variable):
+       * files.el (hack-one-local-variable):
        Support safe-local-variable property.
        (compile-command): Add safe-local-variable property.
 
 1994-09-27  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * etags.el (etags-tags-completion-table): Allow ? and : in guessed
-        tag names.
+       tag names.
 
 1994-09-26  Joe Ramey  <ramey@csc.ti.com>
 
-        * rmailsum.el (rmail-summary-delete-forward): Regexp for
+       * rmailsum.el (rmail-summary-delete-forward): Regexp for
        recognizing deleted message should not require a space at the
        beginning of the line.
 
 
        * cc-mode.el (c-just-after-func-arglist-p)
        (c-guess-basic-syntax, c-lineup-objc-method-args-2):
-       More objc patches from Lele
+       More objc patches from Lele.
 
        * cc-mode.el (c-indent-command):
        With optional arg, shift-amt had wrong sign.
        recognize empty arglists with close paren on separate line.
 
        * cc-mode.el (c-mode-menu, c-emacs-features, c-mode-map)
-
        (c-common-init): Remove dependency on string "Lucid" in
        emacs-version.  Use features to distinguish.
 
 
        * cc-mode.el (c-offsets-alist-default, c-offsets-alist)
        (c-guess-basic-syntax):
-       Changed syntactic symbol c++-funcdecl-cont to ansi-funcdecl-cont
+       Changed syntactic symbol c++-funcdecl-cont to ansi-funcdecl-cont.
 
        * cc-mode.el (c-offsets-alist, c-read-offset, c-set-offset):
        Accept variable symbols as offsets.
 
 1994-09-23  Jonathan I. Kamens  (jik@gza-client1)
 
-        * files.el (find-alternate-file): Confirm killing buffer
+       * files.el (find-alternate-file): Confirm killing buffer
        only if it is visiting a file.
 
 1994-09-23  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * rmail.el (rmail-ignored-headers): Add resent-message-id.
 
-        * simple.el (insert-buffer): Default to first other buffer,
-        not first non-visible buffer.
+       * simple.el (insert-buffer): Default to first other buffer,
+       not first non-visible buffer.
 
 1994-09-21  Erik Naggum  <erik@naggum.no>
 
 
 1994-09-19  Francesco Potorti`  <pot@cnuce.cnr.it>
 
-       * man.el (Man-notify-flag): replaces the old Man-notify
+       * man.el (Man-notify-flag): Replaces the old Man-notify
        variable, use the old one if it is bound as initial value.
-       (Man-reuse-okay-flag): replaces Man-reuse-okay.
-       (Man-downcase-section-letters-flag): replaces
+       (Man-reuse-okay-flag): Replaces Man-reuse-okay.
+       (Man-downcase-section-letters-flag): Replaces
        Man-downcase-section-letters.
-       (Man-circular-pages-flag): replaces Man-circular-pages.
-       (Man-auto-section-alist): variable deleted.
-       (Man-section-translations-alist): removed the "3x" translation.
-       (Man-untabify-command, Man-untabify-command-args): new vars.
-       (Man-sed-command, Man-awk-command): new variables.
-       (Man-sysv-sed-script, Man-berkeley-sed-script): new constants.
-       (Man-name-regexp, Man-page-header-regexp): new variable.
-       (Man-heading-regexp): changed default value.
-       (Man-reference-regexp): now refers to previous regexps.
-       (Man-arguments): new buffer-local variable.
-       (Man-page-mode-string): changed default value.
-       (Man-mode-map): changed the meanings of ",", ".", "q".  Added new
+       (Man-circular-pages-flag): Replaces Man-circular-pages.
+       (Man-auto-section-alist): Variable deleted.
+       (Man-section-translations-alist): Removed the "3x" translation.
+       (Man-untabify-command, Man-untabify-command-args): New vars.
+       (Man-sed-command, Man-awk-command): New variables.
+       (Man-sysv-sed-script, Man-berkeley-sed-script): New constants.
+       (Man-name-regexp, Man-page-header-regexp): New variable.
+       (Man-heading-regexp): Changed default value.
+       (Man-reference-regexp): Now refers to previous regexps.
+       (Man-arguments): New buffer-local variable.
+       (Man-page-mode-string): Changed default value.
+       (Man-mode-map): Changed the meanings of ",", ".", "q".  Added new
        keys ">", "<", "k".
-       (Man-page-mode-string): function deleted.
+       (Man-page-mode-string): Function deleted.
        (Man-init-defvars): New function used for initialising the system
        and environment dependent variables Man-fontify-manpage-flag,
        Man-uses-untabify, Man-sed-script, Man-filter-list.
-       (Man-delete-trailing-newlines): function deleted.
-       (Man-make-page-mode-string): new subst.
-       (Man-build-man-command): now subst instead of function.  Modified
+       (Man-delete-trailing-newlines): Function deleted.
+       (Man-make-page-mode-string): New subst.
+       (Man-build-man-command): Now subst instead of function.  Modified
        to comply with the new format of Man-filter-list.
-       (Man-downcase): function deleted.
-       (Man-translate-references): complete rewrite.
-       (Man-linepos): function deleted.
-       (Man-match-substring): new function.
-       (Man-default-man-args): function deleted.
-       (Man-default-man-entry): complete rewrite.
-       (man, manual-entry): function-alias relationship reversed.
-       (man): prompt changed, prompt using interactive, call
+       (Man-downcase): Function deleted.
+       (Man-translate-references): Complete rewrite.
+       (Man-linepos): Function deleted.
+       (Man-match-substring): New function.
+       (Man-default-man-args): Function deleted.
+       (Man-default-man-entry): Complete rewrite.
+       (man, manual-entry): Function-alias relationship reversed.
+       (man): Prompt changed, prompt using interactive, call
        Man-init-defvars, set Man-arguments.
-       (Man-notify-when-ready): manage the 'pushy value.
-       (Man-fontify-manpage): substitute Man-set-fonts.
-       (Man-cleanup-manpage): new function.
-       (Man-bgproc-sentinel): cleanup, call Man-fontify-manpage and
+       (Man-notify-when-ready): Manage the 'pushy value.
+       (Man-fontify-manpage): Substitute Man-set-fonts.
+       (Man-cleanup-manpage): New function.
+       (Man-bgproc-sentinel): Cleanup, call Man-fontify-manpage and
        Man-cleanup-page when necessary.
-       (Man-mode): call Man-strip-page-headers and Man-unindent.
+       (Man-mode): Call Man-strip-page-headers and Man-unindent.
        (Man-build-section-alist, Man-build-references-alist,
        Man-build-page-list): substs instead of functions.
-       (Man-build-references-alist): cleanup.
-       (Man-build-page-list): new algorithm.
-       (Man-strip-page-headers, Man-unindent): new substs.
-       (Man-find-section): assume section names start in column 1.
-       (Man-quit): bury the buffer instead of killing it, delete the
+       (Man-build-references-alist): Cleanup.
+       (Man-build-page-list): New algorithm.
+       (Man-strip-page-headers, Man-unindent): New substs.
+       (Man-find-section): Assume section names start in column 1.
+       (Man-quit): Bury the buffer instead of killing it, delete the
        frame when necessary.
-       (Man-kill): new function.
-       (Man-goto-page): do the right thing when the manpage is not found,
+       (Man-kill): New function.
+       (Man-goto-page): Do the right thing when the manpage is not found,
        do not assume that Man-build-references-alist is broken.
 
 1994-09-21  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
        (describe-display-table): Describe the window border glyph.
        (display-table-len): New constant.
        (make-display-table, standard-display-8bit,
-        standard-display-default, standard-display-ascii,
-        standard-display-g1, standard-display-graphic,
-        standard-display-underline): Use display-table-len, instead of
-        hard-coding the display table length.
+       standard-display-default, standard-display-ascii,
+       standard-display-g1, standard-display-graphic,
+       standard-display-underline): Use display-table-len, instead of
+       hard-coding the display table length.
 
 1994-09-19  Francesco Potorti`  <pot@cnuce.cnr.it>
 
-       * rlogin.el (rlogin): recognise the `-l user' option to rlogin and
+       * rlogin.el (rlogin): Recognise the `-l user' option to rlogin and
        let comint and ange-ftp know about the correct home directory.
 
 1994-09-19  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
        (rmail-find-all-files, rmail-list-to-menu): New functions.
        (rmail-construct-io-menu): New functions.
        (rmail-input-menu): Function deleted.
-       (rmail). Call rmail-construct-io-menu.
+       (rmail): Call rmail-construct-io-menu.
        (rmail-mode-map): 'Input Rmail file (menu)' renamed to
-       'Input Rmail file'. 'Output (Rmail menu)' renamed to
+       'Input Rmail file'.  'Output (Rmail menu)' renamed to
        'Output Rmail file'.
        * rmailout.el (rmail-output-menu): Function deleted.
        * rmailsum.el (rmail-summary-construct-io-menu): New function.
        (rmail-new-summary): Call rmail-summary-construct-io-menu.
        (rmail-summary-mode-map): New menu items 'Input Rmail File' and
        'Output Rmail File'.
-       (rmail-summary-output-to-rmail-file): New arg 'file-name'. If it
+       (rmail-summary-output-to-rmail-file): New arg 'file-name'.  If it
        non-nil, call rmail-output-to-rmail-file.
 
 1994-09-18  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 1994-09-16  Karl Heuer  <kwzh@churchy.gnu.ai.mit.edu>
 
-       * emacsbug.el: (report-emacs-bug): Insert configuration options.
+       * emacsbug.el (report-emacs-bug): Insert configuration options.
 
        * ispell.el (ispell-menu-map): Order menu items by size:
        buffer > region > word.
        (Info-edit-mode): Put them here.  Also enable undo, and call
        Info-edit-mode-hook.
 
-       * time.el: (display-time-24hr-format): Doc fix.
+       * time.el (display-time-24hr-format): Doc fix.
        (display-time-filter): Reenable code that got deleted during a
        mispatch.
 
        expressions to include backup files with version numbers.
 
        * jka-compr.el (jka-compr-insert-file-contents): Run the
-        functions in after-insert-file-functions after the
-        buffer-file-name has been set, not before.
+       functions in after-insert-file-functions after the
+       buffer-file-name has been set, not before.
 
        * jka-compr.el (jka-compr-insert-file-contents): Properly
-        handle the 'replace' argument for compressed files.
+       handle the 'replace' argument for compressed files.
 
 1994-09-15  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 
 1994-09-05  Lawrence R. Dodd  <dodd@roebling.poly.edu>
 
-       * dired-x.el: (dired-omit-expunge): Avoid setting buffer modified
+       * dired-x.el (dired-omit-expunge): Avoid setting buffer modified
        unless it was modified before and some mark is set so `%*' won't
        appear in mode-line of omitted buffers.
 
 
 1994-09-01  Francesco Potorti`  (pot@cnuce.cnr.it)
 
-       * cmacexp.el (c-macro-prompt-flag): set default to t.
+       * cmacexp.el (c-macro-prompt-flag): Set default to t.
        (c-macro-expand): buffer-flush-undo is outdated.
-       (c-macro-expansion): make exit-status a local variable.
+       (c-macro-expansion): Make exit-status a local variable.
 
 1994-09-01  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
        * lpr.el (lpr-headers-switches): Don't use -p on dgux, irix.
 
        * edebug.el (edebug-read-and-maybe-wrap-form): Increment
-        max-specpdl-size by 2000.
+       max-specpdl-size by 2000.
 
        * jka-compr.el (jka-compr-insert-file-contents): Run the
        after-insert-file-functions.
 1994-08-13  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
        * cmacexp.el (c-macro-expansion): If the CPP output is empty, just
-        show error messages.
+       show error messages.
 
        * mouse.el (mouse-set-mark): Select the window before saving point.
 
        * compile.el (compilation-set-window-height): Add save-excursion.
 
        * rmail.el (rmail-maybe-display-summary): Don't set summary window
-        height if its frame isn't split.
+       height if its frame isn't split.
 
        * subr.el (one-window-p): Doc fix.
 
 
        * imenu.el (imenu, imenu--flatten-index-alist): Add marker support.
        (imenu--cleanup): New function.
-        (imenu-example--name-and-position): Now uses markers.
+       (imenu-example--name-and-position): Now uses markers.
 
-        * imenu.el (imenu-add-to-menubar): New function to add an entry
+       * imenu.el (imenu-add-to-menubar): New function to add an entry
        to the menubar for the buffer's current local keymap.
 
 1994-07-29  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 
 1994-07-25  Johan Vromans  (jv@squirrel.NL.net)
 
-       * forms.el (forms-read-file-filter): new hook function to
+       * forms.el (forms-read-file-filter): New hook function to
        preprocess file contents before being passed to forms mode.
-       (forms-write-file-filter): new hook function to preprocess file
-       contents before it is being saved to disk. Can be used to undo the
+       (forms-write-file-filter): New hook function to preprocess file
+       contents before it is being saved to disk.  Can be used to undo the
        effects of `forms-read-file-filter'.
        (forms-mode): Supply a default format if no `forms-format-list' was
        specified.
 
 1994-07-24  Erik Naggum  <erik@naggum.no>
 
-       * dired.el (dired-internal-noselect): a zero modtime means
+       * dired.el (dired-internal-noselect): A zero modtime means
        directory is unchanged.
 
 1994-07-23  David Robinson  (drtr@mail.ast.cam.ac.uk)
 
 1994-07-22  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
 
-        * cal-menu.el (calendar-mode-map): Change reference from renamed
-        calendar-current-month to calendar-goto-today.
+       * cal-menu.el (calendar-mode-map): Change reference from renamed
+       calendar-current-month to calendar-goto-today.
 
 1994-07-20  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 
 1994-07-19  Michael Kifer  (kifer@cs.sunysb.edu)
 
-       * ediff.el (ediff-find-file, ediff-files-internal, ediff-patch-file):
+       * ediff.el (ediff-find-file, ediff-files-internal, ediff-patch-file):
        Modified to work with remote and compressed files.
 
        * ediff.el (ediff-read-file-name, ediff-buffers): Better defaults.
        New or modified functions and variables attempting to prohibit
        submission of empty bug reporters.
 
-       * reporter.el: (reporter-prompt-for-summary-p): Default value now nil.
+       * reporter.el (reporter-prompt-for-summary-p): Default value now nil.
 
        * reporter.el (reporter-dump-state): Make sure there's a final
        newline after the setq sexp.
 
 1994-07-13  Noah Friedman  (friedman@splode.com)
 
-        * rsz-mini.el: (resize-minibuffer-setup): Copy post-command-hook
-        when handling minibuffer windows in other frames, not just
-        minibuffer-exclusive frames.
-        Resize the minibuffer window/frame now, in case it has already
-        been initialized with text.
+       * rsz-mini.el (resize-minibuffer-setup): Copy post-command-hook
+       when handling minibuffer windows in other frames, not just
+       minibuffer-exclusive frames.
+       Resize the minibuffer window/frame now, in case it has already
+       been initialized with text.
 
 1994-07-13  Ed Reingold  (reingold@albert.gnu.ai.mit.edu)
 
-        * diary-lib.el: Correct file name on last line of file.
+       * diary-lib.el: Correct file name on last line of file.
 
 1994-07-13  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 
        * indent.el (move-to-tab-stop): Delete spurious multiple definition.
 
-1994-07-11  Kevin Rodgers  <kevinr@ihs.com> (tiny change)
+1994-07-11  Kevin Rodgers  <kevinr@ihs.com>  (tiny change)
 
        * mailabbrev.el (define-mail-abbrev): Don't try to parse empty aliases.
 
        * lisp.el (lisp-complete-symbol): Bind completion-fixup-function.
 
        * mouse.el (mouse-choose-completion): Use mouse-face properties to
-        find string to use.
+       find string to use.
 
        * simple.el (completion-setup-function): Put on mouse-face prop
        even if no window-system.  Call completion-fixup-function if not nil.
 
        * gud.el (gud-mips-p): Check for OSF system on Alpha also.
 
-       * files.el (process-environment, exec-path, load-path,exec-directory):
+       * files.el (process-environment, exec-path, load-path, exec-directory):
        Mark these as risky.
        (hack-one-local-variable): Treat vars ending in -program and -command
        as risky.
 
 1994-07-06  Ed Reingold  (reingold@albert.gnu.ai.mit.edu)
 
-        * diary-lib.el (fancy-diary-display): Consistently turn off selective
+       * diary-lib.el (fancy-diary-display): Consistently turn off selective
        display in diary buffer before doing anything.
 
 1994-07-06  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 1994-07-05  Ed Reingold  (reingold@albert.gnu.ai.mit.edu)
 
-        * calendar.el (generate-calendar-month): Make highlighted text for
-        mouse-2 a one character wide for single-digit dates (this undoes
-        the incorrect fix of May 30, 1994).
+       * calendar.el (generate-calendar-month): Make highlighted text for
+       mouse-2 a one character wide for single-digit dates (this undoes
+       the incorrect fix of May 30, 1994).
 
 1994-07-04  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 1994-07-04  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
 
        * add-log.el (add-change-log-entry): Apply expand-file-name to
-        FILE-NAME.
+       FILE-NAME.
 
 1994-07-03  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 1994-07-02  Morten Welinder  (terra@diku.dk)
 
        * meese.el: Use add-hook, (provide 'meese).
-       (protect-innocence-hook): compare expanded file names for the sake
+       (protect-innocence-hook): Compare expanded file names for the sake
        of non-unix file systems.  Use expand-file-name instead of concat
        to create "celibacy.1" file name.  Check that the "sex.6" exists.
 
 
        * bytecomp.el (byte-compile-defalias): Fix typo in prev change.
 
-       * bytecomp.el (byte-compile-callargs-warn): Handle function defnition
+       * bytecomp.el (byte-compile-callargs-warn): Handle function definition
        that is not a lambda expression or byte code function.
        (byte-compile-arglist-warn): Likewise.
        (byte-compile-defalias): New function, used to compile defalias.
 
 1994-06-29  Noah Friedman  (friedman@splode.com)
 
-        * comint.el (comint-password-prompt-regexp): New variable.
-        (comint-watch-for-password-prompt): Use it.
+       * comint.el (comint-password-prompt-regexp): New variable.
+       (comint-watch-for-password-prompt): Use it.
 
 1994-06-29  Richard Stallman  (rms@gnu.ai.mit.edu)
 
 
 1994-06-28  Lawrence R. Dodd  (dodd@roebling.poly.edu)
 
-        * dired-x.el (dired-x-hands-off-my-keys): New user-defined variable.
-        (dired-x-bind-find-file): Use it.
-        (dired-x-find-file): New function to substitute find-file.
-        (dired-x-find-file-other-window): New function to substitute
-        find-file-other-window.
+       * dired-x.el (dired-x-hands-off-my-keys): New user-defined variable.
+       (dired-x-bind-find-file): Use it.
+       (dired-x-find-file): New function to substitute find-file.
+       (dired-x-find-file-other-window): New function to substitute
+       find-file-other-window.
 
 1994-06-28  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
 
 1994-06-22  Noah Friedman  (friedman@splode.com)
 
-        * rsz-mini.el (resize-minibuffer-window-exactly,
-        resize-minibuffer-frame, resize-minibuffer-frame-exactly): Doc
-        fixes.
-        (resize-minibuffer-frame-exactly): make default t.
-        (resize-minibuffer-frame-original-height): New variable.
-        (resize-minibuffer-setup): Set it locally in the minibuffer.
-        (resize-minibuffer-frame): Use it instead of minibuffer-frame-alist's
-        height.
-        (resize-minibuffer-setup): Append resize-minibuffer-window and
-        resize-minibuffer-frame to the end of post-command-hook, don't
-        insert on the front.
-        (resize-minibuffer-window-restore): New function.
-        (resize-minibuffer-setup): Put it on minibuffer-exit-hook.
+       * rsz-mini.el (resize-minibuffer-window-exactly,
+       resize-minibuffer-frame, resize-minibuffer-frame-exactly): Doc
+       fixes.
+       (resize-minibuffer-frame-exactly): Make default t.
+       (resize-minibuffer-frame-original-height): New variable.
+       (resize-minibuffer-setup): Set it locally in the minibuffer.
+       (resize-minibuffer-frame): Use it instead of minibuffer-frame-alist's
+       height.
+       (resize-minibuffer-setup): Append resize-minibuffer-window and
+       resize-minibuffer-frame to the end of post-command-hook, don't
+       insert on the front.
+       (resize-minibuffer-window-restore): New function.
+       (resize-minibuffer-setup): Put it on minibuffer-exit-hook.
 
 1994-06-22  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
        * tpu-extras.el: Require tpu-edt.
        (tpu-extras-revision): Variable deleted.
 
-        * tpu-mapper.el: Change size of selected screen.  Reposition after
+       * tpu-mapper.el: Change size of selected screen.  Reposition after
        printing help.  Null default directory for save.  Produce minibuffer
        key bindings for kp4 and kp5.
        (tpu-kp4, tpu-kp5): New variables.
 
        * faces.el (x-create-frame-with-faces): Set the cursor color last.
 
-1994-06-17  Kevin Rodgers  (kevinr@ihs.com) (tiny change)
+1994-06-17  Kevin Rodgers  (kevinr@ihs.com)  (tiny change)
 
        * mailabbrev.el (build-mail-abbrevs): Pass a recursivep argument in
        recursive call.
 1994-06-17  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
 
        * etags.el (tags-table-computed-list,
-        tags-table-computed-list-for): New variables.
+       tags-table-computed-list-for): New variables.
        (tags-table-list-pointer, tags-table-list-started-at): Doc fixes.
        (tags-table-parent-pointer-list): Variable removed.
        (tags-table-check-computed-list, tags-table-extend-computed-list): New
 
 1994-06-16  Noah Friedman  (friedman@splode.com)
 
-        * rlogin.el (rlogin-password-paranoia): Variable deleted.
-        (rlogin-password): Function deleted.
-        This functionality is handled by comint-watch-for-password-prompt.
+       * rlogin.el (rlogin-password-paranoia): Variable deleted.
+       (rlogin-password): Function deleted.
+       This functionality is handled by comint-watch-for-password-prompt.
 
-        * rlogin.el (rlogin-filter): Function deleted.
-        (rlogin): Do not set the process filter to rlogin-filter.
+       * rlogin.el (rlogin-filter): Function deleted.
+       (rlogin): Do not set the process filter to rlogin-filter.
 
 1994-06-15  Morten Welinder  (terra@diku.dk)
 
 1994-06-14  Ed Reingold  (reingold@albert.gnu.ai.mit.edu)
 
        * cal-menu.el (calendar-mode-map): Change moon menu bar to pop up
-        a menu instead doing it directly.
-        (calendar-mouse-2-date-menu): Remove moon phase.
+       a menu instead doing it directly.
+       (calendar-mouse-2-date-menu): Remove moon phase.
 
 1994-06-14  Richard Stallman  (rms@albert.gnu.ai.mit.edu)
 
        (forms--local-write-file-function): New function to be used as
        `local-write-file-hooks'.
        (forms-mode): Use it.
-       (forms-find-file,forms-find-file-other-window): Locally set
+       (forms-find-file, forms-find-file-other-window): Locally set
        `enable-local-eval' and `enable-local-variables' to t.
        (forms-find-file-other-window): Remove extraneous call to
        `eval-current-buffer'.
 
 1994-06-12  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
-       * iso-cvt.el (iso-iso2tex-trans-tab): Add a few characters.
-       (iso-iso2gtex-trans-tab): Likewise.
-       (iso-tex2iso-trans-tab): Recognize TeX accent sequences without braces.
-       (iso-gtex2iso-trans-tab): Likewise.
+       * iso-cvt.el (iso-iso2tex-trans-tab): Add a few characters.
+       (iso-iso2gtex-trans-tab): Likewise.
+       (iso-tex2iso-trans-tab): Recognize TeX accent sequences without braces.
+       (iso-gtex2iso-trans-tab): Likewise.
 
        * info.el (Info-fontify-node): Require some whitespace after *Note.
 
 
 1994-06-07  Morten Welinder  (terra@diku.dk)
 
-       * dos-fns.el (Info-default-directory-list):  Setting this no
+       * dos-fns.el (Info-default-directory-list): Setting this no
        longer needed.
 
 1994-06-07  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
         solar-equinoxes-solstices): Revised to use the rewritten and new fcns.
 
        * calendar.el (solar-holidays): Revised to use the rewritten and
-         new fcns.
+        new fcns.
 
        * lunar.el (lunar-phase): Revised to use the rewritten and new fcns.
 
index 59a81d7799d961cbd92e6408d959b5fc3ee41f46..78a251b3f7c1af5e38983a9ea9cdc2d64fecb93f 100644 (file)
@@ -128,7 +128,7 @@ cvs-update: recompile autoloads finder-data custom-deps
 # Update the AUTHORS file.
 
 update-authors:
-       $(emacs) -l authors -f batch-update-authors $(srcdir)/AUTHORS $(srcdir)
+       $(emacs) -l authors -f batch-update-authors $(srcdir)/etc/AUTHORS $(srcdir)
 
 TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
        els=`echo $(lisptagsfiles1) $(lisptagsfiles2) | sed -e "s,$(lisp)/loaddefs[^ ]*,," -e "s,$(lisp)/ldefs-boot[^ ]*,,"`; \
@@ -275,6 +275,9 @@ $(lisp)/mh-e/mh-loaddefs.el: $(lisp)/subdirs.el $(MH_E_SRC)
 # an up-to-date copy of loaddefs.el that is uncorrupted by
 # local changes.  (Because loaddefs.el is an automatically generated
 # file, we don't want to store it in the source repository).
+#
+# The chmod +w is to handle env var CVSREAD=1.  Files named
+# are identified by being the value of `generated-autoload-file'.
 
 bootstrap-prepare:
        if test -x $(EMACS); then                               \
@@ -282,6 +285,9 @@ bootstrap-prepare:
        else                                                    \
          cp $(lisp)/ldefs-boot.el $(lisp)/loaddefs.el;         \
        fi
+       chmod +w $(lisp)/loaddefs.el            \
+         $(lisp)/ps-print.el                   \
+         $(lisp)/emacs-lisp/cl-loaddefs.el
 
 maintainer-clean: distclean
        cd $(lisp); rm -f *.elc */*.elc $(AUTOGENEL)
index d60580a1c0d886b48eb72f7ed3b1a0072dc1d014..a58d6318670887a8cf745ba2015a4b80d6106491 100644 (file)
 
 ;; This facility is documented in the Emacs Manual.
 
+;; Todo:
+
+;; - Find/use/create _MTN/log if there's a _MTN directory.
+;; - Find/use/create ++log.* if there's an {arch} directory.
+;; - Use an open *VC-Log* or *cvs-commit* buffer if it's related to the
+;;   source file.
+;; - Don't add TAB indents (and username?) if inserting entries in those
+;;   special places.
+
 ;;; Code:
 
 (eval-when-compile
@@ -41,7 +50,7 @@
 
 
 (defcustom change-log-default-name nil
-  "*Name of a change log file for \\[add-change-log-entry]."
+  "Name of a change log file for \\[add-change-log-entry]."
   :type '(choice (const :tag "default" nil)
                 string)
   :group 'change-log)
@@ -55,7 +64,7 @@
 ;; Many modes set this variable, so avoid warnings.
 ;;;###autoload
 (defcustom add-log-current-defun-function nil
-  "*If non-nil, function to guess name of surrounding function.
+  "If non-nil, function to guess name of surrounding function.
 It is used by `add-log-current-defun' in preference to built-in rules.
 Returns function's name as a string, or nil if outside a function."
   :type '(choice (const nil) function)
@@ -63,7 +72,7 @@ Returns function's name as a string, or nil if outside a function."
 
 ;;;###autoload
 (defcustom add-log-full-name nil
-  "*Full name of user, for inclusion in ChangeLog daily headers.
+  "Full name of user, for inclusion in ChangeLog daily headers.
 This defaults to the value returned by the function `user-full-name'."
   :type '(choice (const :tag "Default" nil)
                 string)
@@ -148,7 +157,7 @@ use the file's name relative to the directory of the change log file."
 
 
 (defcustom change-log-version-info-enabled nil
-  "*If non-nil, enable recording version numbers with the changes."
+  "If non-nil, enable recording version numbers with the changes."
   :version "21.1"
   :type 'boolean
   :group 'change-log)
@@ -160,7 +169,7 @@ use the file's name relative to the directory of the change log file."
      (concat "^(def[^ \t\n]+[ \t]+[^ \t\n][ \t]\"" re)
      ;; Revision: pcl-cvs.el,v 1.72 1999/09/05 20:21:54 monnier Exp
      (concat "^;+ *Revision: +[^ \t\n]+[ \t]+" re)))
-  "*List of regexps to search for version number.
+  "List of regexps to search for version number.
 The version number must be in group 1.
 Note: The search is conducted only within 10%, at the beginning of the file."
   :version "21.1"
@@ -370,7 +379,7 @@ With a numeric prefix ARG, go back ARG comments."
 
 (defun change-log-version-number-search ()
   "Return version number of current buffer's file.
-This is the value returned by `vc-workfile-version' or, if that is
+This is the value returned by `vc-working-revision' or, if that is
 nil, by matching `change-log-version-number-regexp-list'."
   (let* ((size (buffer-size))
         (limit
@@ -381,7 +390,7 @@ nil, by matching `change-log-version-number-regexp-list'."
          ;; Apply percentage only if buffer size is bigger than
          ;; approx 100 lines.
          (if (> size (* 100 80)) (+ (point) (/ size 10)))))
-    (or (and buffer-file-name (vc-workfile-version buffer-file-name))
+    (or (and buffer-file-name (vc-working-revision buffer-file-name))
        (save-restriction
          (widen)
          (let ((regexps change-log-version-number-regexp-list)
@@ -460,11 +469,7 @@ Optional arg BUFFER-FILE overrides `buffer-file-name'."
     (if add-log-file-name-function
        (funcall add-log-file-name-function buffer-file)
       (setq buffer-file
-           (if (string-match
-                (concat "^" (regexp-quote (file-name-directory log-file)))
-                buffer-file)
-               (substring buffer-file (match-end 0))
-             (file-name-nondirectory buffer-file)))
+            (file-relative-name buffer-file (file-name-directory log-file)))
       ;; If we have a backup file, it's presumably because we're
       ;; comparing old and new versions (e.g. for deleted
       ;; functions) and we'll want to use the original name.
@@ -508,117 +513,111 @@ non-nil, otherwise in local time."
         (buffer-file (if buf-file-name (expand-file-name buf-file-name)))
         (file-name (expand-file-name (find-change-log file-name buffer-file)))
         ;; Set ITEM to the file name to use in the new item.
-        (item (add-log-file-name buffer-file file-name))
-        bound full-name mailing-address)
-
-    (if whoami
-       (progn
-         (setq full-name (read-string "Full name: "
-                                      (or add-log-full-name (user-full-name))))
-         ;; Note that some sites have room and phone number fields in
-         ;; full name which look silly when inserted.  Rather than do
-         ;; anything about that here, let user give prefix argument so that
-         ;; s/he can edit the full name field in prompter if s/he wants.
-         (setq mailing-address
-               (read-string "Mailing address: "
-                            (or add-log-mailing-address user-mail-address)))))
+        (item (add-log-file-name buffer-file file-name)))
 
     (unless (equal file-name buffer-file-name)
       (if (or other-window (window-dedicated-p (selected-window)))
          (find-file-other-window file-name)
        (find-file file-name)))
-    (or (eq major-mode 'change-log-mode)
+    (or (derived-mode-p 'change-log-mode)
        (change-log-mode))
     (undo-boundary)
     (goto-char (point-min))
 
-    (or full-name
-       (setq full-name (or add-log-full-name (user-full-name))))
-    (or mailing-address
-        (setq mailing-address (or add-log-mailing-address user-mail-address)))
-
-    ;; If file starts with a copyright and permission notice, skip them.
-    ;; Assume they end at first blank line.
-    (when (looking-at "Copyright")
-      (search-forward "\n\n")
-      (skip-chars-forward "\n"))
-
-    ;; Advance into first entry if it is usable; else make new one.
-    (let ((new-entries
-           (mapcar (lambda (addr)
-                     (concat
-                      (if (stringp add-log-time-zone-rule)
-                          (let ((tz (getenv "TZ")))
-                            (unwind-protect
-                                (progn
-                                  (set-time-zone-rule add-log-time-zone-rule)
-                                  (funcall add-log-time-format))
-                              (set-time-zone-rule tz)))
-                        (funcall add-log-time-format))
-                      "  " full-name
-                      "  <" addr ">"))
-                   (if (consp mailing-address)
-                       mailing-address
-                     (list mailing-address)))))
-      (if (and (not add-log-always-start-new-record)
-               (let ((hit nil))
-                (dolist (entry new-entries hit)
-                  (when (looking-at (regexp-quote entry))
-                    (setq hit t)))))
-         (forward-line 1)
-       (insert (nth (random (length new-entries))
-                    new-entries)
-               (if use-hard-newlines hard-newline "\n")
-               (if use-hard-newlines hard-newline "\n"))
-       (forward-line -1)))
+    (let ((full-name (or add-log-full-name (user-full-name)))
+          (mailing-address (or add-log-mailing-address user-mail-address)))
+
+      (when whoami
+        (setq full-name (read-string "Full name: " full-name))
+        ;; Note that some sites have room and phone number fields in
+        ;; full name which look silly when inserted.  Rather than do
+        ;; anything about that here, let user give prefix argument so that
+        ;; s/he can edit the full name field in prompter if s/he wants.
+        (setq mailing-address
+             (read-string "Mailing address: " mailing-address)))
+
+      ;; If file starts with a copyright and permission notice, skip them.
+      ;; Assume they end at first blank line.
+      (when (looking-at "Copyright")
+        (search-forward "\n\n")
+        (skip-chars-forward "\n"))
+
+      ;; Advance into first entry if it is usable; else make new one.
+      (let ((new-entries
+             (mapcar (lambda (addr)
+                       (concat
+                        (if (stringp add-log-time-zone-rule)
+                            (let ((tz (getenv "TZ")))
+                              (unwind-protect
+                                  (progn
+                                    (set-time-zone-rule add-log-time-zone-rule)
+                                    (funcall add-log-time-format))
+                                (set-time-zone-rule tz)))
+                          (funcall add-log-time-format))
+                        "  " full-name
+                        "  <" addr ">"))
+                     (if (consp mailing-address)
+                         mailing-address
+                       (list mailing-address)))))
+        (if (and (not add-log-always-start-new-record)
+                 (let ((hit nil))
+                   (dolist (entry new-entries hit)
+                     (when (looking-at (regexp-quote entry))
+                       (setq hit t)))))
+            (forward-line 1)
+          (insert (nth (random (length new-entries))
+                       new-entries)
+                  (if use-hard-newlines hard-newline "\n")
+                  (if use-hard-newlines hard-newline "\n"))
+          (forward-line -1))))
 
     ;; Determine where we should stop searching for a usable
     ;; item to add to, within this entry.
-    (setq bound
-         (save-excursion
-            (if (looking-at "\n*[^\n* \t]")
-                (skip-chars-forward "\n")
-             (if add-log-keep-changes-together
-                 (forward-page)        ; page delimits entries for date
-               (forward-paragraph)))   ; paragraph delimits entries for file
-           (point)))
-
-    ;; Now insert the new line for this item.
-    (cond ((re-search-forward "^\\s *\\*\\s *$" bound t)
-          ;; Put this file name into the existing empty item.
-          (if item
-              (insert item)))
-         ((and (not new-entry)
-               (let (case-fold-search)
-                 (re-search-forward
-                  (concat (regexp-quote (concat "* " item))
-                          ;; Don't accept `foo.bar' when
-                          ;; looking for `foo':
-                          "\\(\\s \\|[(),:]\\)")
-                  bound t)))
-          ;; Add to the existing item for the same file.
-          (re-search-forward "^\\s *$\\|^\\s \\*")
-          (goto-char (match-beginning 0))
-          ;; Delete excess empty lines; make just 2.
-          (while (and (not (eobp)) (looking-at "^\\s *$"))
-            (delete-region (point) (line-beginning-position 2)))
-          (insert (if use-hard-newlines hard-newline "\n")
-                  (if use-hard-newlines hard-newline "\n"))
-          (forward-line -2)
-          (indent-relative-maybe))
-         (t
-          ;; Make a new item.
-          (while (looking-at "\\sW")
-            (forward-line 1))
-          (while (and (not (eobp)) (looking-at "^\\s *$"))
-            (delete-region (point) (line-beginning-position 2)))
-          (insert (if use-hard-newlines hard-newline "\n")
-                  (if use-hard-newlines hard-newline "\n")
-                  (if use-hard-newlines hard-newline "\n"))
-          (forward-line -2)
-          (indent-to left-margin)
-          (insert "* ")
-          (if item (insert item))))
+    (let ((bound
+           (save-excursion
+             (if (looking-at "\n*[^\n* \t]")
+                 (skip-chars-forward "\n")
+               (if add-log-keep-changes-together
+                   (forward-page)      ; page delimits entries for date
+                 (forward-paragraph))) ; paragraph delimits entries for file
+             (point))))
+
+      ;; Now insert the new line for this item.
+      (cond ((re-search-forward "^\\s *\\*\\s *$" bound t)
+             ;; Put this file name into the existing empty item.
+             (if item
+                 (insert item)))
+            ((and (not new-entry)
+                  (let (case-fold-search)
+                    (re-search-forward
+                     (concat (regexp-quote (concat "* " item))
+                             ;; Don't accept `foo.bar' when
+                             ;; looking for `foo':
+                             "\\(\\s \\|[(),:]\\)")
+                     bound t)))
+             ;; Add to the existing item for the same file.
+             (re-search-forward "^\\s *$\\|^\\s \\*")
+             (goto-char (match-beginning 0))
+             ;; Delete excess empty lines; make just 2.
+             (while (and (not (eobp)) (looking-at "^\\s *$"))
+               (delete-region (point) (line-beginning-position 2)))
+             (insert (if use-hard-newlines hard-newline "\n")
+                     (if use-hard-newlines hard-newline "\n"))
+             (forward-line -2)
+             (indent-relative-maybe))
+            (t
+             ;; Make a new item.
+             (while (looking-at "\\sW")
+               (forward-line 1))
+             (while (and (not (eobp)) (looking-at "^\\s *$"))
+               (delete-region (point) (line-beginning-position 2)))
+             (insert (if use-hard-newlines hard-newline "\n")
+                     (if use-hard-newlines hard-newline "\n")
+                     (if use-hard-newlines hard-newline "\n"))
+             (forward-line -2)
+             (indent-to left-margin)
+             (insert "* ")
+             (if item (insert item)))))
     ;; Now insert the function name, if we have one.
     ;; Point is at the item for this file,
     ;; either at the end of the line or at the first blank line.
@@ -667,9 +666,45 @@ the change log file in another window."
   (add-change-log-entry whoami file-name t))
 ;;;###autoload (define-key ctl-x-4-map "a" 'add-change-log-entry-other-window)
 
+
 (defvar change-log-indent-text 0)
 
+(defun change-log-fill-parenthesized-list ()
+  ;; Fill parenthesized lists of names according to GNU standards.
+  ;; * file-name.ext (very-long-foo, very-long-bar, very-long-foobar):
+  ;; should be filled as
+  ;; * file-name.ext (very-long-foo, very-long-bar)
+  ;; (very-long-foobar):
+  (save-excursion
+    (end-of-line 0)
+    (skip-chars-backward " \t")
+    (when (and (equal (char-before) ?\,)
+              (> (point) (1+ (point-min))))
+      (condition-case nil
+         (when (save-excursion
+                 (and (prog2
+                          (up-list -1)
+                          (equal (char-after) ?\()
+                        (skip-chars-backward " \t"))
+                      (or (bolp)
+                          ;; Skip everything but a whitespace or asterisk.
+                          (and (not (zerop (skip-chars-backward "^ \t\n*")))
+                               (skip-chars-backward " \t")
+                               ;; We want one asterisk here.
+                               (= (skip-chars-backward "*") -1)
+                               (skip-chars-backward " \t")
+                               (bolp)))))
+           ;; Delete the comma.
+           (delete-char -1)
+           ;; Close list on previous line.
+           (insert ")")
+           (skip-chars-forward " \t\n")
+           ;; Start list on new line.
+           (insert-before-markers "("))
+       (error nil)))))
+
 (defun change-log-indent ()
+  (change-log-fill-parenthesized-list)
   (let* ((indent
          (save-excursion
            (beginning-of-line)
@@ -700,9 +735,15 @@ Runs `change-log-mode-hook'.
   (setq left-margin 8
        fill-column 74
        indent-tabs-mode t
-       tab-width 8)
+       tab-width 8
+       show-trailing-whitespace t)
   (set (make-local-variable 'fill-paragraph-function)
        'change-log-fill-paragraph)
+  ;; Avoid that filling leaves behind a single "*" on a line.
+  (add-hook 'fill-nobreak-predicate
+           '(lambda ()
+              (looking-back "^\\s *\\*\\s *" (line-beginning-position))) 
+           nil t)
   (set (make-local-variable 'indent-line-function) 'change-log-indent)
   (set (make-local-variable 'tab-always-indent) nil)
   ;; We really do want "^" in paragraph-start below: it is only the
@@ -731,7 +772,11 @@ Prefix arg means justify as well."
   (interactive "P")
   (let ((end (progn (forward-paragraph) (point)))
        (beg (progn (backward-paragraph) (point)))
-       (paragraph-start (concat paragraph-start "\\|\\s *\\s(")))
+       ;; Add lines starting with whitespace followed by a left paren or an
+       ;; asterisk.
+       (paragraph-start (concat paragraph-start "\\|\\s *\\(?:\\s(\\|\\*\\)"))
+       ;; Make sure we call `change-log-indent'.
+       (fill-indent-according-to-mode t))
     (fill-region beg end justify)
     t))
 \f
@@ -753,7 +798,7 @@ Prefix arg means justify as well."
 
 ;;;###autoload
 (defvar add-log-tex-like-modes
-  '(TeX-mode plain-TeX-mode LaTeX-mode plain-tex-mode latex-mode)
+  '(TeX-mode plain-TeX-mode LaTeX-mode tex-mode)
   "*Modes that look like TeX to `add-log-current-defun'.")
 
 ;;;###autoload
@@ -775,7 +820,7 @@ Has a preference of looking backwards."
        (let ((location (point)))
          (cond (add-log-current-defun-function
                 (funcall add-log-current-defun-function))
-               ((memq major-mode add-log-lisp-like-modes)
+               ((apply 'derived-mode-p add-log-lisp-like-modes)
                 ;; If we are now precisely at the beginning of a defun,
                 ;; make sure beginning-of-defun finds that one
                 ;; rather than the previous one.
@@ -799,7 +844,7 @@ Has a preference of looking backwards."
                   (buffer-substring-no-properties (point)
                                                   (progn (forward-sexp 1)
                                                          (point)))))
-               ((and (memq major-mode add-log-c-like-modes)
+               ((and (apply 'derived-mode-p add-log-c-like-modes)
                      (save-excursion
                        (beginning-of-line)
                        ;; Use eq instead of = here to avoid
@@ -817,7 +862,7 @@ Has a preference of looking backwards."
                 (buffer-substring-no-properties (point)
                                                 (progn (forward-sexp 1)
                                                        (point))))
-               ((memq major-mode add-log-c-like-modes)
+               ((apply 'derived-mode-p add-log-c-like-modes)
                 ;; See whether the point is inside a defun.
                 (let (having-previous-defun
                       having-next-defun
@@ -959,7 +1004,7 @@ Has a preference of looking backwards."
                                   (setq end (point)))
                                 (buffer-substring-no-properties
                                  middle end)))))))))
-               ((memq major-mode add-log-tex-like-modes)
+               ((apply 'derived-mode-p add-log-tex-like-modes)
                 (if (re-search-backward
                      "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
                      nil t)
@@ -968,17 +1013,17 @@ Has a preference of looking backwards."
                       (buffer-substring-no-properties
                        (1+ (point))    ; without initial backslash
                        (line-end-position)))))
-               ((eq major-mode 'texinfo-mode)
+               ((derived-mode-p 'texinfo-mode)
                 (if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
                     (match-string-no-properties 1)))
-               ((memq major-mode '(perl-mode cperl-mode))
+               ((derived-mode-p 'perl-mode 'cperl-mode)
                 (if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
                     (match-string-no-properties 1)))
                ;; Emacs's autoconf-mode installs its own
                ;; `add-log-current-defun-function'.  This applies to
                ;; a different mode apparently for editing .m4
                ;; autoconf source.
-                ((eq major-mode 'autoconf-mode)
+                ((derived-mode-p 'autoconf-mode)
                  (if (re-search-backward
                      "^\\(\\(m4_\\)?define\\|A._DEFUN\\)(\\[?\\([A-Za-z0-9_]+\\)" nil t)
                      (match-string-no-properties 3)))
@@ -1045,17 +1090,32 @@ Point is assumed to be at the start of the entry."
 
 (defun change-log-resolve-conflict ()
   "Function to be used in `smerge-resolve-function'."
-  (let ((buf (current-buffer)))
-    (with-temp-buffer
-      (insert-buffer-substring buf (match-beginning 1) (match-end 1))
-      (save-match-data (change-log-mode))
-      (let ((other-buf (current-buffer)))
-       (with-current-buffer buf
-         (save-excursion
-           (save-restriction
-             (narrow-to-region (match-beginning 0) (match-end 0))
-             (replace-match (match-string 3) t t)
-             (change-log-merge other-buf))))))))
+  (save-excursion
+    (save-restriction
+      (narrow-to-region (match-beginning 0) (match-end 0))
+      (let ((mb1 (match-beginning 1))
+            (me1 (match-end 1))
+            (mb3 (match-beginning 3))
+            (me3 (match-end 3))
+            (tmp1 (generate-new-buffer " *changelog-resolve-1*"))
+           (tmp2 (generate-new-buffer " *changelog-resolve-2*")))
+       (unwind-protect
+           (let ((buf (current-buffer)))
+             (with-current-buffer tmp1
+                (change-log-mode)
+               (insert-buffer-substring buf mb1 me1))
+             (with-current-buffer tmp2
+                (change-log-mode)
+               (insert-buffer-substring buf mb3 me3)
+                ;; Do the merge here instead of inside `buf' so as to be
+                ;; more robust in case change-log-merge fails.
+               (change-log-merge tmp1))
+             (goto-char (point-max))
+             (delete-region (point-min)
+                            (prog1 (point)
+                              (insert-buffer-substring tmp2))))
+         (kill-buffer tmp1)
+         (kill-buffer tmp2))))))
 
 ;;;###autoload
 (defun change-log-merge (other-log)
@@ -1067,7 +1127,7 @@ or a buffer.
 Entries are inserted in chronological order.  Both the current and
 old-style time formats for entries are supported."
   (interactive "*fLog file name to merge: ")
-  (if (not (eq major-mode 'change-log-mode))
+  (if (not (derived-mode-p 'change-log-mode))
       (error "Not in Change Log mode"))
   (let ((other-buf (if (bufferp other-log) other-log
                     (find-file-noselect other-log)))
@@ -1077,7 +1137,7 @@ old-style time formats for entries are supported."
       (goto-char (point-min))
       (set-buffer other-buf)
       (goto-char (point-min))
-      (if (not (eq major-mode 'change-log-mode))
+      (if (not (derived-mode-p 'change-log-mode))
          (error "%s not found in Change Log mode" other-log))
       ;; Loop through all the entries in OTHER-LOG.
       (while (not (eobp))
index 1f748fb0026e3ca44888c6f1fc0befea84b07f6f..49dfef2154774462f9b99783df42899714044d0d 100644 (file)
@@ -1130,17 +1130,17 @@ 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)))
-    (mapcar (function
-            (lambda (cell)
-              (let ((add-pref (null (cdr (cdr cell))))
-                    (key-suff (list (car cell))))
-                (apply 'define-key
-                       (list map
-                             (apply 'concat (if add-pref
-                                                (append pref key-suff)
-                                              key-suff))
-                             (car (cdr cell)))))))
-           keymap-list)
+    (mapc (function
+          (lambda (cell)
+           (let ((add-pref (null (cdr (cdr cell))))
+                 (key-suff (list (car cell))))
+             (apply 'define-key
+                    (list map
+                          (apply 'concat (if add-pref
+                                             (append pref key-suff)
+                                           key-suff))
+                          (car (cdr cell)))))))
+         keymap-list)
     map))
 ;;;_  : Menu bar
 (defvar allout-mode-exposure-menu)
@@ -5463,7 +5463,7 @@ Defaults:
          (progn (set-buffer frombuf)
                 (allout-listify-exposed from to format))))
     (set-buffer tobuf)
-    (mapcar func listified)
+    (mapc func listified)
     (pop-to-buffer tobuf)))
 
 ;;;_  - Copy exposed
index 769b21a38f385a104301971a655801b6ab0bd41b..9b022876ca2e5e831103eeebae43d2aa33cfcbf4 100644 (file)
@@ -557,14 +557,14 @@ The face definitions are based upon the variables
   (let ((ansi-color-map (make-vector 50 nil))
         (index 0))
     ;; miscellaneous attributes
-    (mapcar
+    (mapc
      (function (lambda (e)
                  (aset ansi-color-map index e)
                  (setq index (1+ index)) ))
      ansi-color-faces-vector)
     ;; foreground attributes
     (setq index 30)
-    (mapcar
+    (mapc
      (function (lambda (e)
                  (aset ansi-color-map index
                       (ansi-color-make-face 'foreground e))
@@ -572,7 +572,7 @@ The face definitions are based upon the variables
      ansi-color-names-vector)
     ;; background attributes
     (setq index 40)
-    (mapcar
+    (mapc
      (function (lambda (e)
                  (aset ansi-color-map index
                       (ansi-color-make-face 'background e))
index 39fd10c6b6fa0e8e806ca414586e7e3cc1e586c8..404e4543e0b454e65e8ce823197b2807eb94164e 100644 (file)
 ;; ARCHIVE TYPES: Currently only the archives below are handled, but the
 ;; structure for handling just about anything is in place.
 ;;
-;;                        Arc     Lzh     Zip     Zoo
-;;                        --------------------------------
-;; View listing           Intern  Intern  Intern  Intern
-;; Extract member         Y       Y       Y       Y
-;; Save changed member    Y       Y       Y       Y
-;; Add new member         N       N       N       N
-;; Delete member          Y       Y       Y       Y
-;; Rename member          Y       Y       N       N
-;; Chmod                  -       Y       Y       -
-;; Chown                  -       Y       -       -
-;; Chgrp                  -       Y       -       -
+;;                     Arc     Lzh     Zip     Zoo      Rar
+;;                     ----------------------------------------
+;; View listing                Intern  Intern  Intern  Intern   Y
+;; Extract member      Y       Y       Y       Y        Y
+;; Save changed member Y       Y       Y       Y        N
+;; Add new member      N       N       N       N        N
+;; Delete member       Y       Y       Y       Y        N
+;; Rename member       Y       Y       N       N        N
+;; Chmod               -       Y       Y       -        N
+;; Chown               -       Y       -       -        N
+;; Chgrp               -       Y       -       -        N
 ;;
 ;; Special thanks to Bill Brodie <wbrodie@panix.com> for very useful tips
 ;; on the first released version of this package.
 ;;; Code:
 
 ;; -------------------------------------------------------------------------
-;; Section: Configuration.
+;;; Section: Configuration.
 
 (defgroup archive nil
   "Simple editing of archives."
@@ -318,7 +318,7 @@ Archive and member name will be added."
                        (string :format "%v")))
   :group 'archive-zoo)
 ;; -------------------------------------------------------------------------
-;; Section: Variables
+;;; Section: Variables
 
 (defvar archive-subtype nil "Symbol describing archive type.")
 (defvar archive-file-list-start nil "Position of first contents line.")
@@ -459,7 +459,7 @@ Each descriptor is a vector of the form
 (make-variable-buffer-local 'archive-files)
 
 ;; -------------------------------------------------------------------------
-;; Section: Support functions.
+;;; Section: Support functions.
 
 (defsubst archive-name (suffix)
   (intern (concat "archive-" (symbol-name archive-subtype) "-" suffix)))
@@ -602,7 +602,7 @@ Does not signal an error if optional argument NOERROR is non-nil."
       (if (not noerror)
           (error "Line does not describe a member of the archive")))))
 ;; -------------------------------------------------------------------------
-;; Section: the mode definition
+;;; Section: the mode definition
 
 ;;;###autoload
 (defun archive-mode (&optional force)
@@ -704,8 +704,18 @@ archive.
           ;; Have seen capital "LHA's", and file has lower case "LHa's" too.
           ;; Note this regexp is also in archive-exe-p.
           ((looking-at "MZ\\(.\\|\n\\)\\{34\\}LH[aA]'s SFX ") 'lzh-exe)
+          ((looking-at "Rar!") 'rar)
          (t (error "Buffer format not recognized")))))
 ;; -------------------------------------------------------------------------
+
+(defun archive-desummarize ()
+  (let ((inhibit-read-only t)
+        (modified (buffer-modified-p)))
+    (widen)
+    (delete-region (point-min) archive-proper-file-start)
+    (restore-buffer-modified-p modified)))
+
+
 (defun archive-summarize (&optional shut-up)
   "Parse the contents of the archive file in the current buffer.
 Place a dired-like listing on the front;
@@ -716,6 +726,8 @@ when parsing the archive."
   (widen)
   (set-buffer-multibyte nil)
   (let ((inhibit-read-only t))
+    (setq archive-proper-file-start (copy-marker (point-min) t))
+    (set (make-local-variable 'change-major-mode-hook) 'archive-desummarize)
     (or shut-up
        (message "Parsing archive file..."))
     (buffer-disable-undo (current-buffer))
@@ -731,13 +743,9 @@ when parsing the archive."
 
 (defun archive-resummarize ()
   "Recreate the contents listing of an archive."
-  (let ((modified (buffer-modified-p))
-       (no (archive-get-lineno))
-       (inhibit-read-only t))
-    (widen)
-    (delete-region (point-min) archive-proper-file-start)
+  (let ((no (archive-get-lineno)))
+    (archive-desummarize)
     (archive-summarize t)
-    (restore-buffer-modified-p modified)
     (goto-char archive-file-list-start)
     (archive-next-line no)))
 
@@ -774,7 +782,7 @@ This function changes the set of information shown for each files."
   (setq archive-alternate-display (not archive-alternate-display))
   (archive-resummarize))
 ;; -------------------------------------------------------------------------
-;; Section: Local archive copy handling
+;;; Section: Local archive copy handling
 
 (defun archive-unique-fname (fname dir)
   "Make sure a file FNAME can be created uniquely in directory DIR.
@@ -856,7 +864,7 @@ using `make-temp-file', and the generated name is returned."
        (error nil))
       (if (string= name top) (setq again nil)))))
 ;; -------------------------------------------------------------------------
-;; Section: Member extraction
+;;; Section: Member extraction
 
 (defun archive-file-name-handler (op &rest args)
   (or (eq op 'file-exists-p)
@@ -1076,7 +1084,7 @@ using `make-temp-file', and the generated name is returned."
          (funcall func buffer-file-name membuf name))
       (error "Adding a new member is not supported for this archive type"))))
 ;; -------------------------------------------------------------------------
-;; Section: IO stuff
+;;; Section: IO stuff
 
 (defun archive-write-file-member ()
   (save-excursion
@@ -1145,7 +1153,7 @@ using `make-temp-file', and the generated name is returned."
       (set-buffer-modified-p nil))
     t))
 ;; -------------------------------------------------------------------------
-;; Section: Marking and unmarking.
+;;; Section: Marking and unmarking.
 
 (defun archive-flag-deleted (p &optional type)
   "In archive mode, mark this member to be deleted from the archive.
@@ -1210,7 +1218,7 @@ Use \\[archive-unmark-all-files] to remove all marks."
        (and default
             (list (archive-get-descr))))))
 ;; -------------------------------------------------------------------------
-;; Section: Operate
+;;; Section: Operate
 
 (defun archive-next-line (p)
   (interactive "p")
@@ -1330,7 +1338,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
   (let ((inhibit-read-only t))
     (undo)))
 ;; -------------------------------------------------------------------------
-;; Section: Arc Archives
+;;; Section: Arc Archives
 
 (defun archive-arc-summarize ()
   (let ((p 1)
@@ -1400,7 +1408,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
        (delete-char 13)
        (insert name)))))
 ;; -------------------------------------------------------------------------
-;; Section: Lzh Archives
+;;; Section: Lzh Archives
 
 (defun archive-lzh-summarize (&optional start)
   (let ((p (or start 1)) ;; 1 for .lzh, something further on for .exe
@@ -1627,7 +1635,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
    files "a unix-style mode" 8))
 
 ;; -------------------------------------------------------------------------
-;; Section: Lzh Self-Extracting .exe Archives
+;;; Section: Lzh Self-Extracting .exe Archives
 ;;
 ;; No support for modifying these files.  It looks like the lha for unix
 ;; program (as of version 1.14i) can't create or retain the DOS exe part.
@@ -1654,7 +1662,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
   "Extract a member from an LZH self-extracting exe, for `archive-mode'.")
 
 ;; -------------------------------------------------------------------------
-;; Section: Zip Archives
+;;; Section: Zip Archives
 
 (defun archive-zip-summarize ()
   (goto-char (- (point-max) (- 22 18)))
@@ -1763,7 +1771,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
                (t (message "Don't know how to change mode for this member"))))
         ))))
 ;; -------------------------------------------------------------------------
-;; Section: Zoo Archives
+;;; Section: Zoo Archives
 
 (defun archive-zoo-summarize ()
   (let ((p (1+ (archive-l-e 25 4)))
@@ -1832,6 +1840,87 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
 
 (defun archive-zoo-extract (archive name)
   (archive-extract-by-stdout archive name archive-zoo-extract))
+
+;; -------------------------------------------------------------------------
+;;; Section: Rar Archives
+
+(defun archive-rar-summarize ()
+  (let* ((file buffer-file-name)
+         (copy (file-local-copy file))
+         header footer
+         (maxname 10)
+         (maxsize 5)
+         (files ()))
+    (with-temp-buffer
+      (call-process "unrar-free" nil t nil "--list" (or file copy))
+      (if copy (delete-file copy))
+      (goto-char (point-min))
+      (re-search-forward "^-+\n")
+      (setq header
+            (buffer-substring (save-excursion (re-search-backward "^[^ ]"))
+                              (point)))
+      (while (looking-at (concat " \\(.*\\)\n" ;Name.
+                                 ;; Size ; Packed.
+                                 " +\\([0-9]+\\) +[0-9]+"
+                                 ;; Ratio ; Date'
+                                 " +\\([0-9%]+\\) +\\([-0-9]+\\)"
+                                 ;; Time ; Attr.
+                                 " +\\([0-9:]+\\) +......"
+                                 ;; CRC; Meth ; Var.
+                                 " +[0-9A-F]+ +[^ \n]+ +[0-9.]+\n"))
+        (goto-char (match-end 0))
+        (let ((name (match-string 1))
+              (size (match-string 2)))
+          (if (> (length name) maxname) (setq maxname (length name)))
+          (if (> (length size) maxsize) (setq maxsize (length size)))
+          (push (vector name name nil nil
+                        ;; Size, Ratio.
+                        size (match-string 3)
+                        ;; Date, Time.
+                        (match-string 4) (match-string 5))
+                files)))
+      (setq footer (buffer-substring (point) (point-max))))
+    (setq files (nreverse files))
+    (goto-char (point-min))
+    (let* ((format (format " %%s %%s  %%%ds %%5s  %%s" maxsize))
+           (sep (format format "--------" "-----" (make-string maxsize ?-)
+                        "-----" ""))
+           (column (length sep)))
+      (insert (format format "  Date  " "Time " "Size " "Ratio" " Filename") "\n")
+      (insert sep (make-string maxname ?-) "\n")
+      (archive-summarize-files (mapcar (lambda (desc)
+                                         (let ((text
+                                                (format format
+                                                         (aref desc 6)
+                                                         (aref desc 7)
+                                                         (aref desc 4)
+                                                         (aref desc 5)
+                                                         (aref desc 1))))
+                                           (vector text
+                                                   column
+                                                   (length text))))
+                                       files))
+      (insert sep (make-string maxname ?-) "\n")
+      (apply 'vector files))))
+
+(defun archive-rar-extract (archive name)
+  ;; unrar-free seems to have no way to extract to stdout or even to a file.
+  (if (file-name-absolute-p name)
+      ;; The code below assumes the name is relative and may do undesirable
+      ;; things otherwise.
+      (error "Can't extract files with non-relative names")
+    (let ((dest (make-temp-file "arc-rar" 'dir)))
+      (unwind-protect
+          (progn
+            (call-process "unrar-free" nil nil nil
+                          "--extract" archive name dest)
+            (insert-file-contents-literally (expand-file-name name dest)))
+        (delete-file (expand-file-name name dest))
+        (while (file-name-directory name)
+          (setq name (directory-file-name (file-name-directory name)))
+          (delete-directory (expand-file-name name dest)))
+        (delete-directory dest)))))
+
 ;; -------------------------------------------------------------------------
 ;; This line was a mistake; it is kept now for compatibility.
 ;; rms  15 Oct 98
index 805065ba009f4b389a2ad257952aa198109bf44b..5887529ba43597064714bca9e34bdc9d68763fea 100644 (file)
@@ -186,33 +186,114 @@ If this contains a %s, that will be replaced by the matching rule."
     (completing-read "Keyword, C-h: " v1 nil t))
     str ", ") & -2 "
 
-;; 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
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+\;; 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
+\;; the Free Software Foundation; either version 3, or (at your option)
+\;; any later version.
 
-;; This file 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.
+\;; This file 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; see the file COPYING.  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 GNU Emacs; see the file COPYING.  If not, write to
+\;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+\;; Boston, MA 02110-1301, USA.
 
-;;; Commentary:
+\;;; Commentary:
 
-;; " _ "
+\;; " _ "
 
-;;; Code:
+\;;; Code:
 
 
 
 \(provide '"
        (file-name-sans-extension (file-name-nondirectory (buffer-file-name)))
        ")
-;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n"))
+\;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n")
+    (("\\.texi\\(nfo\\)?\\'" . "Texinfo file skeleton")
+     "Title: "
+     "\\input texinfo   @c -*-texinfo-*-
+@c %**start of header
+@setfilename "
+     (file-name-sans-extension
+      (file-name-nondirectory (buffer-file-name))) ".info\n"
+      "@settitle " str "
+@c %**end of header
+@copying\n"
+      (setq short-description (read-string "Short description: "))
+      ".\n\n"
+      "Copyright @copyright{} " (substring (current-time-string) -4) "  "
+      (getenv "ORGANIZATION") | (progn user-full-name) "
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, and no Cover Texts.  A copy of the license is
+included in the section entitled ``GNU Free Documentation License.''
+
+A copy of the license is also available from the Free Software
+Foundation Web site at @url{http://www.gnu.org/licenses/fdl.html}.
+
+@end quotation
+
+The document was typeset with
+@uref{http://www.texinfo.org/, GNU Texinfo}.
+
+@end copying
+
+@titlepage
+@title " str "
+@subtitle " short-description "
+@author " (getenv "ORGANIZATION") | (progn user-full-name)
+     " <" (progn user-mail-address) ">
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@c Output the table of the contents at the beginning.
+@contents
+
+@ifnottex
+@node Top
+@top " str "
+
+@insertcopying
+@end ifnottex
+
+@c Generate the nodes for this menu with `C-c C-u C-m'.
+@menu
+@end menu
+
+@c Update all node entries with `C-c C-u C-n'.
+@c Insert new nodes with `C-c C-c n'.
+@node Chapter One
+@chapter Chapter One
+
+" _ "
+
+@node Copying This Manual
+@appendix Copying This Manual
+
+@menu
+* GNU Free Documentation License::  License for copying this manual.
+@end menu
+
+@c Get fdl.texi from http://www.gnu.org/licenses/fdl.html
+@include fdl.texi
+
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@bye
+
+@c " (file-name-nondirectory (buffer-file-name)) " ends here\n"))
   "A list specifying text to insert by default into a new file.
 Elements look like (CONDITION . ACTION) or ((CONDITION . DESCRIPTION) . ACTION).
 CONDITION may be a regexp that must match the new file's name, or it may be
@@ -272,7 +353,7 @@ Matches the visited file name against the elements of `auto-insert-alist'."
                          (eq this-command 'auto-insert))
                      (y-or-n-p (format auto-insert-prompt desc)))
                t)
-             (mapcar
+             (mapc
               (lambda (action)
                 (if (stringp action)
                     (if (file-readable-p
index 5220f3f6deac05a9cd0f9373c266e42fbd787161..49e83c514a9ce2071443fdbdb1f36442d7a39696 100644 (file)
@@ -276,9 +276,9 @@ the list of old buffers.")
   "Position of last known end of file.")
 
 (add-hook 'find-file-hook
-         (lambda ()
-           (set (make-local-variable 'auto-revert-tail-pos)
-                (nth 7 (file-attributes buffer-file-name)))))
+         (lambda ()
+           (set (make-local-variable 'auto-revert-tail-pos)
+                (nth 7 (file-attributes buffer-file-name)))))
 
 ;; Functions:
 
@@ -334,7 +334,7 @@ Use `auto-revert-mode' for changes other than appends!"
       (auto-revert-tail-mode 0)
       (error "This buffer is not visiting a file"))
     (if (and (buffer-modified-p)
-            (not auto-revert-tail-pos) ; library was loaded only after finding file
+            (zerop auto-revert-tail-pos) ; library was loaded only after finding file
             (not (y-or-n-p "Buffer is modified, so tail offset may be wrong.  Proceed? ")))
        (auto-revert-tail-mode 0)
       ;; a-r-tail-pos stores the size of the file at the time of the
@@ -348,11 +348,11 @@ Use `auto-revert-mode' for changes other than appends!"
       ;; revert, then you might miss some output then happened
       ;; between visiting the file and activating a-r-t-mode.
       (and (zerop auto-revert-tail-pos)
-          (not (verify-visited-file-modtime (current-buffer)))
-          (y-or-n-p "File changed on disk, content may be missing.  \
+           (not (verify-visited-file-modtime (current-buffer)))
+           (y-or-n-p "File changed on disk, content may be missing.  \
 Perform a full revert? ")
-          ;; Use this (not just revert-buffer) for point-preservation.
-          (auto-revert-handler))
+           ;; Use this (not just revert-buffer) for point-preservation.
+           (auto-revert-handler))
       ;; else we might reappend our own end when we save
       (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t)
       (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position
@@ -416,12 +416,16 @@ will use an up-to-date value of `auto-revert-interval'"
   "Revert current buffer, if appropriate.
 This is an internal function used by Auto-Revert Mode."
   (when (or auto-revert-tail-mode (not (buffer-modified-p)))
-    (let* ((buffer (current-buffer))
+    (let* ((buffer (current-buffer)) size
           (revert
            (or (and buffer-file-name
                     (not (file-remote-p buffer-file-name))
                     (file-readable-p buffer-file-name)
-                    (not (verify-visited-file-modtime buffer)))
+                    (if auto-revert-tail-mode
+                        (/= auto-revert-tail-pos
+                           (setq size
+                                 (nth 7 (file-attributes buffer-file-name))))
+                      (not (verify-visited-file-modtime buffer))))
                (and (or auto-revert-mode
                         global-auto-revert-non-file-buffers)
                     revert-buffer-function
@@ -445,7 +449,7 @@ This is an internal function used by Auto-Revert Mode."
                    (push window eoblist)))
           'no-mini t))
        (if auto-revert-tail-mode
-           (auto-revert-tail-handler)
+           (auto-revert-tail-handler size)
          ;; Bind buffer-read-only in case user has done C-x C-q,
          ;; so as not to forget that.  This gives undesirable results
          ;; when the file's mode changes, but that is less common.
@@ -460,23 +464,26 @@ This is an internal function used by Auto-Revert Mode."
       (when (or revert auto-revert-check-vc-info)
        (vc-find-file-hook)))))
 
-(defun auto-revert-tail-handler ()
-  (let ((size (nth 7 (file-attributes buffer-file-name)))
-       (modified (buffer-modified-p))
-       buffer-read-only                ; ignore
+(defun auto-revert-tail-handler (size)  
+  (let ((modified (buffer-modified-p))
+       (inhibit-read-only t)           ; Ignore.
        (file buffer-file-name)
-       buffer-file-name)               ; ignore that file has changed
-    (when (> size auto-revert-tail-pos)
+       (buffer-file-name nil))         ; Ignore that file has changed.
+    (when (/= auto-revert-tail-pos size)
+      (run-hooks 'before-revert-hook)
       (undo-boundary)
       (save-restriction
        (widen)
        (save-excursion
          (goto-char (point-max))
-         (insert-file-contents file nil auto-revert-tail-pos size)))
-      (run-mode-hooks 'after-revert-hook)
+         (insert-file-contents file nil
+                               (and (< auto-revert-tail-pos size)
+                                    auto-revert-tail-pos)
+                               size)))
+      (run-hooks 'after-revert-hook)
       (undo-boundary)
       (setq auto-revert-tail-pos size)
-      (set-buffer-modified-p modified)))
+      (restore-buffer-modified-p modified)))
   (set-visited-file-modtime))
 
 (defun auto-revert-buffers ()
@@ -550,5 +557,5 @@ the timer when no buffers need to be checked."
 
 (run-hooks 'auto-revert-load-hook)
 
-;;; arch-tag: f6bcb07b-4841-477e-9e44-b18678e58876
+;; arch-tag: f6bcb07b-4841-477e-9e44-b18678e58876
 ;;; autorevert.el ends here
index 3c7237a52fa0e0658674c74d6022956b9b233530..bab319fa029e37caae384dcfc84686cc5a4a57b2 100644 (file)
@@ -170,6 +170,12 @@ corresponding to the mode line clicked."
       (push (cons eol (cons mnemonic desc)) mode-line-eol-desc-cache)
       desc)))
 
+(defvar mode-line-client
+  `(""
+    (:propertize ("" (:eval (if (frame-parameter nil 'client) "@" "")))
+                help-echo "Emacsclient frame"))
+  "Mode-line control for identifying Emacsclient frames.")
+
 (defvar mode-line-mule-info
   `(""
     (current-input-method
@@ -209,7 +215,7 @@ mnemonics of the following coding systems:
 
 (make-variable-buffer-local 'mode-line-mule-info)
 
-(defvar mode-line-frame-identification '("-%F  ")
+(defvar mode-line-frame-identification '(window-system "  " "-%F  ")
   "Mode-line control to describe the current frame.")
 
 (defvar mode-line-process nil "\
@@ -248,6 +254,22 @@ Normally nil in most modes, since there is no process to display.")
 
 (make-variable-buffer-local 'mode-line-modified)
 
+(defvar mode-line-remote
+  (list (propertize
+        "%1@"
+        'help-echo (purecopy (lambda (window object point)
+                               (format "%s"
+                                       (save-selected-window
+                                         (select-window window)
+                                         (concat 
+                                         (if (file-remote-p default-directory)
+                                             "Remote: "
+                                           "Local: ")
+                                         default-directory)))))))
+  "Mode-line flag to show if default-directory for current buffer is remote.")
+
+(make-variable-buffer-local 'mode-line-remote)
+
 ;; Actual initialization is below.
 (defvar mode-line-position nil
   "Mode-line control for displaying the position in the buffer.
@@ -286,7 +308,9 @@ Keymap to display on minor modes.")
         "%e"
         (propertize "-" 'help-echo help-echo)
         'mode-line-mule-info
+        'mode-line-client
         'mode-line-modified
+        'mode-line-remote
         'mode-line-frame-identification
         'mode-line-buffer-identification
         (propertize "   " 'help-echo help-echo)
@@ -314,6 +338,7 @@ Keymap to display on minor modes.")
                     'local-map (make-mode-line-mouse-map
                                 'mouse-2 #'mode-line-widen))
         (propertize ")%]--" 'help-echo help-echo)))
+
        (standard-mode-line-position
        `((-3 ,(propertize "%p" 'help-echo help-echo))
          (size-indication-mode
@@ -632,6 +657,10 @@ language you are using."
 (define-key global-map "\e\e\e" 'keyboard-escape-quit)
 (define-key global-map "\C-g" 'keyboard-quit)
 
+;; Used to be in termdev.el: when using several terminals, make C-z
+;; suspend only the relevant terminal.
+(substitute-key-definition 'suspend-emacs 'suspend-frame global-map)
+
 (define-key global-map "\C-j" 'newline-and-indent)
 (define-key global-map "\C-m" 'newline)
 (define-key global-map "\C-o" 'open-line)
@@ -1012,8 +1041,7 @@ language you are using."
 (define-key ctl-x-map "rw" 'window-configuration-to-register)
 (define-key ctl-x-map "rf" 'frame-configuration-to-register)
 
-(define-key esc-map "q" 'fill-paragraph)
-;; (define-key esc-map "g" 'fill-region)
+(define-key esc-map "q" 'fill-paragraph-or-region)
 (define-key ctl-x-map "." 'set-fill-prefix)
 \f
 (define-key esc-map "{" 'backward-paragraph)
index 5a173e6ba1a5677164064b7e77913da1772053ed..184f9de518cc4597bdc7fe224a707bb8eabbb610 100644 (file)
@@ -207,11 +207,6 @@ following in your `.emacs' file:
 
 ;;; No user-serviceable parts beyond this point.
 
-;; Is it XEmacs?
-(defconst bookmark-xemacsp
-  (string-match "\\(Lucid\\|Xemacs\\)" emacs-version))
-
-
 ;; Added  for lucid emacs  compatibility, db
 (or (fboundp 'defalias)  (fset 'defalias 'fset))
 
@@ -240,12 +235,13 @@ functions have a binding in this keymap.")
 
 ;; Read the help on all of these functions for details...
 ;;;###autoload (define-key bookmark-map "x" 'bookmark-set)
-;;;###autoload (define-key bookmark-map "m" 'bookmark-set) ; "m" for "mark"
+;;;###autoload (define-key bookmark-map "m" 'bookmark-set) ;"m"ark
 ;;;###autoload (define-key bookmark-map "j" 'bookmark-jump)
-;;;###autoload (define-key bookmark-map "g" 'bookmark-jump) ; "g" for "go"
+;;;###autoload (define-key bookmark-map "g" 'bookmark-jump) ;"g"o
+;;;###autoload (define-key bookmark-map "o" 'bookmark-jump-other-window)
 ;;;###autoload (define-key bookmark-map "i" 'bookmark-insert)
 ;;;###autoload (define-key bookmark-map "e" 'edit-bookmarks)
-;;;###autoload (define-key bookmark-map "f" 'bookmark-insert-location) ; "f" for "find"
+;;;###autoload (define-key bookmark-map "f" 'bookmark-insert-location) ;"f"ind
 ;;;###autoload (define-key bookmark-map "r" 'bookmark-rename)
 ;;;###autoload (define-key bookmark-map "d" 'bookmark-delete)
 ;;;###autoload (define-key bookmark-map "l" 'bookmark-load)
@@ -494,7 +490,7 @@ Optional fourth arg INFO-NODE means this bookmark is at info node
 INFO-NODE, so record this fact in the bookmark's entry."
   (bookmark-maybe-load-default-file)
   (let ((stripped-name (copy-sequence name)))
-    (or bookmark-xemacsp
+    (or (featurep 'xemacs)
         ;; XEmacs's `set-text-properties' doesn't work on
         ;; free-standing strings, apparently.
         (set-text-properties 0 (length stripped-name) nil stripped-name))
@@ -1083,6 +1079,27 @@ of the old one in the permanent bookmark record."
              (bookmark-show-annotation bookmark)))))
 
 
+;;;###autoload
+(defun bookmark-jump-other-window (bookmark)
+  "Jump to BOOKMARK (a point in some file) in another window.
+See `bookmark-jump'."
+  (interactive
+   (let ((bkm (bookmark-completing-read "Jump to bookmark (in another window)"
+                                        bookmark-current-bookmark)))
+     (if (> emacs-major-version 21)
+         (list bkm) bkm)))
+  (when bookmark
+    (bookmark-maybe-historicize-string bookmark)
+    (let ((cell (bookmark-jump-noselect bookmark)))
+      (and cell
+           (switch-to-buffer-other-window (car cell))
+           (goto-char (cdr cell))
+           (if bookmark-automatically-show-annotations
+               ;; if there is an annotation for this bookmark,
+               ;; show it in a buffer.
+               (bookmark-show-annotation bookmark))))))
+
+
 (defun bookmark-file-or-variation-thereof (file)
   "Return FILE (a string) if it exists, or return a reasonable
 variation of FILE if that exists.  Reasonable variations are checked
@@ -1568,7 +1585,7 @@ deletion, or > if it is flagged for displaying."
     (insert "% Bookmark\n- --------\n")
     (add-text-properties (point-min) (point)
                         '(font-lock-face bookmark-menu-heading))
-    (mapcar
+    (mapc
      (lambda (full-record)
        ;; if a bookmark has an annotation, prepend a "*"
        ;; in the list of bookmarks.
@@ -1785,7 +1802,7 @@ if an annotation exists."
   (let ((old-buf (current-buffer)))
     (pop-to-buffer (get-buffer-create "*Bookmark Annotation*") t)
     (delete-region (point-min) (point-max))
-    (mapcar
+    (mapc
      (lambda (full-record)
        (let* ((name (bookmark-name-from-full-record full-record))
               (ann  (bookmark-get-annotation name)))
index 4d13c97c2fd64547702e9766435b8e3bc8307d92..6390bd2dd81271a49189c6a61e450c499d0cbeda 100644 (file)
@@ -864,35 +864,32 @@ the status of buffer on current line."
   (bs--set-window-height)
   (bs--show-config-message what))
 
+(defun bs--mark-unmark (count fun)
+  "Call FUN on COUNT consecutive buffers of *buffer-selection*."
+  (let ((dir (if (> count 0) 1 -1)))
+    (dotimes (i (abs count))
+      (let ((buffer (bs--current-buffer)))
+       (when buffer (funcall fun buffer))
+       (bs--update-current-line)
+       (bs-down dir)))))
+
 (defun bs-mark-current (count)
   "Mark buffers.
 COUNT is the number of buffers to mark.
 Move cursor vertically down COUNT lines."
   (interactive "p")
-  (let ((dir (if (> count 0) 1 -1))
-       (count (abs count)))
-    (while (> count 0)
-      (let ((buffer (bs--current-buffer)))
-       (if buffer
-           (setq bs--marked-buffers (cons buffer bs--marked-buffers)))
-       (bs--update-current-line)
-       (bs-down dir))
-      (setq count (1- count)))))
+  (bs--mark-unmark count
+                  (lambda (buf)
+                    (add-to-list 'bs--marked-buffers buf))))
 
 (defun bs-unmark-current (count)
   "Unmark buffers.
 COUNT is the number of buffers to unmark.
 Move cursor vertically down COUNT lines."
   (interactive "p")
-  (let ((dir (if (> count 0) 1 -1))
-       (count (abs count)))
-    (while (> count 0)
-      (let ((buffer (bs--current-buffer)))
-       (if buffer
-           (setq bs--marked-buffers (delq buffer bs--marked-buffers)))
-       (bs--update-current-line)
-       (bs-down dir))
-      (setq count (1- count)))))
+  (bs--mark-unmark count
+                  (lambda (buf)
+                    (setq bs--marked-buffers (delq buf bs--marked-buffers)))))
 
 (defun bs--show-config-message (what)
   "Show message indicating the new showing status WHAT.
index 3afe930204225a6cb5c7b3f11808f3abe7b3e630..85180a923563ba5ec30647b195441c6104e07361 100644 (file)
@@ -470,5 +470,5 @@ Returns the button found."
 
 (provide 'button)
 
-;;; arch-tag: 5f2c7627-413b-4097-b282-630f89d9c5e9
+;; arch-tag: 5f2c7627-413b-4097-b282-630f89d9c5e9
 ;;; button.el ends here
index 5b32bdbbc81aa66c6d4903659b6bc4f465a1a494..ffd07bd8f2efc96546003f62b4efd426e44a60b9 100644 (file)
@@ -74,6 +74,9 @@
                                ", "
                                (let ((calc-number-radix 8))
                                  (math-format-value (car alg-exp) 1000))
+                                ", "
+                                (let ((calc-number-radix 2))
+                                  (math-format-value (car alg-exp) 1000))
                                (if (and (integerp (car alg-exp))
                                         (> (car alg-exp) 0)
                                         (< (car alg-exp) 127))
       (cond
        ((and (consp str) (not (symbolp (car str))))
        (let ((calc-language nil)
-             (math-expr-opers math-standard-opers)
+             (math-expr-opers (math-standard-ops))
              (calc-internal-prec 12)
              (calc-word-size 32)
              (calc-symbolic-mode nil)
@@ -254,7 +257,7 @@ The value t means abort and give an error message.")
   (interactive "P")
   (calc-wrapper
    (let ((calc-language (if prefix nil calc-language))
-        (math-expr-opers (if prefix math-standard-opers math-expr-opers)))
+        (math-expr-opers (if prefix (math-standard-ops) (math-expr-ops))))
      (calc-alg-entry (and auto (char-to-string last-command-char))))))
 
 (defvar calc-alg-entry-history nil
@@ -876,7 +879,10 @@ in Calc algebraic input.")
                calcFunc-eq calcFunc-neq))
 
 (defun math-read-expr-level (exp-prec &optional exp-term)
-  (let* ((x (math-read-factor)) (first t) op op2)
+  (let* ((math-expr-opers (math-expr-ops))
+         (x (math-read-factor)) 
+         (first t) 
+         op op2)
     (while (and (or (and calc-user-parse-table
                         (setq op (calc-check-user-syntax x exp-prec))
                         (setq x op
@@ -1121,7 +1127,8 @@ in Calc algebraic input.")
        (assoc math-expr-data '(("(") ("[") ("{"))))))
 
 (defun math-read-factor ()
-  (let (op)
+  (let ((math-expr-opers (math-expr-ops))
+        op)
     (cond ((eq math-exp-token 'number)
           (let ((num (math-read-number math-expr-data)))
             (if (not num)
index 49d54999b154209fc93e3f569ef0ee1055fd1bef..0f219272a5fd455d62d3ce525d82ebd11410d7f6 100644 (file)
 (require 'calc-ext)
 (require 'calc-macs)
 
+;;; Some useful numbers
+(defconst math-bignum-logb-digit-size
+  (logb math-bignum-digit-size)
+  "The logb of the size of a bignum digit.
+This is the largest value of B such that 2^B is less than 
+the size of a Calc bignum digit.")
+
+(defconst math-bignum-digit-power-of-two
+  (expt 2 (logb math-bignum-digit-size))
+  "The largest power of 2 less than the size of a Calc bignum digit.")
+
 ;;; b-prefix binary commands.
 
 (defun calc-and (n)
 
 (defun math-and-bignum (a b)   ; [l l l]
   (and a b
-       (let ((qa (math-div-bignum-digit a 512))
-            (qb (math-div-bignum-digit b 512)))
+       (let ((qa (math-div-bignum-digit a math-bignum-digit-power-of-two))
+            (qb (math-div-bignum-digit b math-bignum-digit-power-of-two)))
         (math-mul-bignum-digit (math-and-bignum (math-norm-bignum (car qa))
                                                  (math-norm-bignum (car qb)))
-                                512
+                                math-bignum-digit-power-of-two
                                 (logand (cdr qa) (cdr qb))))))
 
 (defun calcFunc-or (a b &optional w)   ; [I I I] [Public]
 
 (defun math-or-bignum (a b)   ; [l l l]
   (and (or a b)
-       (let ((qa (math-div-bignum-digit a 512))
-            (qb (math-div-bignum-digit b 512)))
+       (let ((qa (math-div-bignum-digit a math-bignum-digit-power-of-two))
+            (qb (math-div-bignum-digit b math-bignum-digit-power-of-two)))
         (math-mul-bignum-digit (math-or-bignum (math-norm-bignum (car qa))
                                                 (math-norm-bignum (car qb)))
-                                512
+                                math-bignum-digit-power-of-two
                                 (logior (cdr qa) (cdr qb))))))
 
 (defun calcFunc-xor (a b &optional w)   ; [I I I] [Public]
 
 (defun math-xor-bignum (a b)   ; [l l l]
   (and (or a b)
-       (let ((qa (math-div-bignum-digit a 512))
-            (qb (math-div-bignum-digit b 512)))
+       (let ((qa (math-div-bignum-digit a math-bignum-digit-power-of-two))
+            (qb (math-div-bignum-digit b math-bignum-digit-power-of-two)))
         (math-mul-bignum-digit (math-xor-bignum (math-norm-bignum (car qa))
                                                  (math-norm-bignum (car qb)))
-                                512
+                                math-bignum-digit-power-of-two
                                 (logxor (cdr qa) (cdr qb))))))
 
 (defun calcFunc-diff (a b &optional w)   ; [I I I] [Public]
 
 (defun math-diff-bignum (a b)   ; [l l l]
   (and a
-       (let ((qa (math-div-bignum-digit a 512))
-            (qb (math-div-bignum-digit b 512)))
+       (let ((qa (math-div-bignum-digit a math-bignum-digit-power-of-two))
+            (qb (math-div-bignum-digit b math-bignum-digit-power-of-two)))
         (math-mul-bignum-digit (math-diff-bignum (math-norm-bignum (car qa))
                                                   (math-norm-bignum (car qb)))
-                                512
+                                math-bignum-digit-power-of-two
                                 (logand (cdr qa) (lognot (cdr qb)))))))
 
 (defun calcFunc-not (a &optional w)   ; [I I] [Public]
                                   w))))))
 
 (defun math-not-bignum (a w)   ; [l l]
-  (let ((q (math-div-bignum-digit a 512)))
-    (if (<= w 9)
+  (let ((q (math-div-bignum-digit a math-bignum-digit-power-of-two)))
+    (if (<= w math-bignum-logb-digit-size)
        (list (logand (lognot (cdr q))
                      (1- (lsh 1 w))))
       (math-mul-bignum-digit (math-not-bignum (math-norm-bignum (car q))
-                                              (- w 9))
-                             512
-                             (logxor (cdr q) 511)))))
+                                              (- w math-bignum-logb-digit-size))
+                             math-bignum-digit-power-of-two
+                             (logxor (cdr q) 
+                                      (1- math-bignum-digit-power-of-two))))))
 
 (defun calcFunc-lsh (a &optional n w)   ; [I I] [Public]
   (setq a (math-trunc a)
           (math-sub a (math-power-of-2 (- w)))))
        ((Math-negp a)
         (math-normalize (cons 'bigpos (math-binary-arg a w))))
-       ((and (integerp a) (< a 1000000))
-        (if (>= w 20)
+       ((and (integerp a) (< a math-small-integer-size))
+        (if (> w (logb math-small-integer-size))
             a
           (logand a (1- (lsh 1 w)))))
        (t
 (defalias 'calcFunc-clip 'math-clip)
 
 (defun math-clip-bignum (a w)   ; [l l]
-  (let ((q (math-div-bignum-digit a 512)))
-    (if (<= w 9)
+  (let ((q (math-div-bignum-digit a math-bignum-digit-power-of-two)))
+    (if (<= w math-bignum-logb-digit-size)
        (list (logand (cdr q)
                      (1- (lsh 1 w))))
       (math-mul-bignum-digit (math-clip-bignum (math-norm-bignum (car q))
-                                               (- w 9))
-                             512
+                                               (- w math-bignum-logb-digit-size))
+                             math-bignum-digit-power-of-two
                              (cdr q)))))
 
 (defvar math-max-digits-cache nil)
index cbc81ce8b6cfdc54978560f82469c01c64b747bc..b6182cd710eb4d47cd2853fea1557c2e1d96df32 100644 (file)
 
 ;;; Factorial and related functions.
 
+(defconst math-small-factorial-table
+  (vector 1 1 2 6 24 120 720 5040 40320 362880 3628800 39916800
+          (math-read-number-simple "479001600")
+          (math-read-number-simple "6227020800")
+          (math-read-number-simple "87178291200")
+          (math-read-number-simple "1307674368000")
+          (math-read-number-simple "20922789888000")
+          (math-read-number-simple "355687428096000")
+          (math-read-number-simple "6402373705728000")
+          (math-read-number-simple "121645100408832000")
+          (math-read-number-simple "2432902008176640000")))
+
 (defun calcFunc-fact (n)   ; [I I] [F F] [Public]
   (let (temp)
     (cond ((Math-integer-negp n)
             (math-reject-arg n 'range)))
          ((integerp n)
           (if (<= n 20)
-              (aref '[1 1 2 6 24 120 720 5040 40320 362880
-                        (bigpos 800 628 3) (bigpos 800 916 39)
-                        (bigpos 600 1 479) (bigpos 800 20 227 6)
-                        (bigpos 200 291 178 87) (bigpos 0 368 674 307 1)
-                        (bigpos 0 888 789 922 20) (bigpos 0 96 428 687 355)
-                        (bigpos 0 728 705 373 402 6)
-                        (bigpos 0 832 408 100 645 121)
-                        (bigpos 0 640 176 8 902 432 2)] n)
+              (aref math-small-factorial-table n)
             (math-factorial-iter (1- n) 2 1)))
          ((and (math-messy-integerp n)
                (Math-lessp n 100))
          nil
        (if (Math-integerp var-RandSeed)
            (let* ((seed (math-sub 161803 var-RandSeed))
-                  (mj (1+ (math-mod seed '(bigpos 0 0 1))))
-                  (mk (1+ (math-mod (math-quotient seed '(bigpos 0 0 1))
-                                    '(bigpos 0 0 1))))
+                  (mj (1+ (math-mod seed 1000000)))
+                  (mk (1+ (math-mod (math-quotient seed 1000000)
+                                     1000000)))
                   (i 0))
              (setq math-random-table (cons 'vec (make-list 55 mj)))
              (while (<= (setq i (1+ i)) 54)
 ;;; Avoid various pitfalls that may lurk in the built-in (random) function!
 ;;; Shuffling algorithm from Numerical Recipes, section 7.1.
 (defvar math-random-last)
-(defun math-random-digit ()
+(defun math-random-three-digit-number ()
+  "Return a random three digit number."
   (let (i)
     (or (and (boundp 'var-RandSeed) (eq var-RandSeed math-last-RandSeed))
        (math-init-random-base))
 
 ;;; Produce an N-digit random integer.
 (defun math-random-digits (n)
-  (cond ((<= n 6)
-        (math-scale-right (+ (* (math-random-digit) 1000) (math-random-digit))
-                          (- 6 n)))
-       (t (let* ((slop (% (- 900003 n) 3))
-                 (i (/ (+ n slop) 3))
-                 (digs nil))
-            (while (> i 0)
-              (setq digs (cons (math-random-digit) digs)
-                    i (1- i)))
-            (math-normalize (math-scale-right (cons 'bigpos digs)
-                                              slop))))))
+  "Produce a random N digit integer."
+  (let* ((slop (% (- 3 (% n 3)) 3))
+         (i (/ (+ n slop) 3))
+         (rnum 0))
+    (while (> i 0)
+      (setq rnum 
+            (math-add
+             (math-random-three-digit-number)
+             (math-mul rnum 1000)))
+      (setq i (1- i)))
+    (math-normalize (math-scale-right rnum slop))))
 
 ;;; Produce a uniformly-distributed random float 0 <= N < 1.
 (defun math-random-float ()
                   (error "Argument must be an integer"))
                  ((Math-integer-negp n)
                   '(nil))
-                 ((Math-natnum-lessp n '(bigpos 0 0 8))
+                 ((Math-natnum-lessp n 8000000)
                   (setq n (math-fixnum n))
                   (let ((i -1) v)
                     (while (and (> (% n (setq v (aref math-primes-table
                  ((not (equal n (car math-prime-test-cache)))
                   (cond ((= (% (nth 1 n) 2) 0) '(nil 2))
                         ((= (% (nth 1 n) 5) 0) '(nil 5))
-                        (t (let ((dig (cdr n)) (sum 0))
-                             (while dig
-                               (if (cdr dig)
-                                   (setq sum (% (+ (+ sum (car dig))
-                                                   (* (nth 1 dig) 1000))
-                                                111111)
-                                         dig (cdr (cdr dig)))
-                                 (setq sum (% (+ sum (car dig)) 111111)
-                                       dig nil)))
+                        (t (let ((q n) (sum 0))
+                              (while (not (eq q 0))
+                                (setq sum (%
+                                           (+
+                                            sum
+                                            (calcFunc-mod 
+                                             q 1000000))
+                                           111111))
+                                (setq q 
+                                      (math-quotient 
+                                       q 1000000)))
                              (cond ((= (% sum 3) 0) '(nil 3))
                                    ((= (% sum 7) 0) '(nil 7))
                                    ((= (% sum 11) 0) '(nil 11))
index 4c1e8522dce2e805472b8abebe086b5237fccf68..ff2dc3e5d29be1e4287881261bcc174eb1c249c4 100644 (file)
     (let ((val (save-excursion
                 (set-buffer (aref info 1))
                 (let ((calc-language nil)
-                      (math-expr-opers math-standard-opers))
+                      (math-expr-opers (math-standard-ops)))
                   (math-read-expr str)))))
       (if (eq (car-safe val) 'error)
          (progn
index f4888f6a8904f8bed8ac93868cef4124d15cd69a..0aa053702b8db25935369164a9d0c77c55e3d85e 100644 (file)
 
   (calc-init-prefixes)
 
-  (mapcar (function
-          (lambda (x)
-            (define-key calc-mode-map (format "c%c" x) 'calc-clean-num)
-            (define-key calc-mode-map (format "j%c" x) 'calc-select-part)
-            (define-key calc-mode-map (format "r%c" x) 'calc-recall-quick)
-            (define-key calc-mode-map (format "s%c" x) 'calc-store-quick)
-            (define-key calc-mode-map (format "t%c" x) 'calc-store-into-quick)
-            (define-key calc-mode-map (format "u%c" x) 'calc-quick-units)))
-         "0123456789")
+  (mapc (function
+        (lambda (x)
+         (define-key calc-mode-map (format "c%c" x) 'calc-clean-num)
+         (define-key calc-mode-map (format "j%c" x) 'calc-select-part)
+         (define-key calc-mode-map (format "r%c" x) 'calc-recall-quick)
+         (define-key calc-mode-map (format "s%c" x) 'calc-store-quick)
+         (define-key calc-mode-map (format "t%c" x) 'calc-store-into-quick)
+         (define-key calc-mode-map (format "u%c" x) 'calc-quick-units)))
+       "0123456789")
 
   (let ((i ?A))
     (while (<= i ?z)
                (cons 'keymap (cons (cons ?\e (aref (nth 1 calc-mode-map) i))
                                    (cdr (aref (nth 1 calc-mode-map) i))))))
       (setq i (1+ i))))
-  
+
   (setq calc-alg-map (copy-keymap calc-mode-map)
        calc-alg-esc-map (copy-keymap esc-map))
   (let ((i 32))
   (define-key calc-alg-map "\e\177" 'calc-pop-above)
 
 ;;;; (Autoloads here)
-  (mapcar (function (lambda (x)
+  (mapc (function (lambda (x)
     (mapcar (function (lambda (func)
       (autoload func (car x)))) (cdr x))))
     '(
@@ -1021,7 +1021,7 @@ calc-arctan calc-arctan2 calc-arctanh calc-conj calc-cos calc-cosh
 calc-cot calc-coth calc-csc calc-csch
 calc-degrees-mode calc-exp calc-expm1 calc-hypot calc-ilog
 calc-imaginary calc-isqrt calc-ln calc-lnp1 calc-log calc-log10
-calc-pi calc-radians-mode calc-sec calc-sech 
+calc-pi calc-radians-mode calc-sec calc-sech
 calc-sin calc-sincos calc-sinh calc-sqrt
 calc-tan calc-tanh calc-to-degrees calc-to-radians)
 
@@ -1277,7 +1277,7 @@ calc-kill calc-kill-region calc-yank))))
             calc-redo-list nil)
       (let (calc-stack calc-user-parse-tables calc-standard-date-formats
                        calc-invocation-macro)
-        (mapcar (function (lambda (v) (set v nil))) calc-local-var-list)
+        (mapc (function (lambda (v) (set v nil))) calc-local-var-list)
         (if (and arg (<= arg 0))
             (calc-mode-var-list-restore-default-values)
           (calc-mode-var-list-restore-saved-values)))
@@ -1357,7 +1357,7 @@ calc-kill calc-kill-region calc-yank))))
                        (with-current-buffer calc-main-buffer
                          calc-hyperbolic-flag)
                      calc-hyperbolic-flag))
-         (msg (if hyp-flag 
+         (msg (if hyp-flag
                  "Inverse Hyperbolic..."
                "Inverse...")))
     (calc-fancy-prefix 'calc-inverse-flag msg n)))
@@ -1438,7 +1438,7 @@ calc-kill calc-kill-region calc-yank))))
                        (with-current-buffer calc-main-buffer
                          calc-inverse-flag)
                      calc-inverse-flag))
-         (msg (if inv-flag 
+         (msg (if inv-flag
                   "Inverse Hyperbolic..."
                 "Hyperbolic...")))
     (calc-fancy-prefix 'calc-hyperbolic-flag msg n)))
@@ -1849,7 +1849,7 @@ calc-kill calc-kill-region calc-yank))))
                 (setq calc-z-prefix-buf (concat (if (= flags 1) "SHIFT + " "")
                                   desc))
               (if (> (+ (length calc-z-prefix-buf) (length desc)) 58)
-                  (setq calc-z-prefix-msgs 
+                  (setq calc-z-prefix-msgs
                          (cons calc-z-prefix-buf calc-z-prefix-msgs)
                         calc-z-prefix-buf (concat (if (= flags 1) "SHIFT + " "")
                                     desc))
@@ -1878,8 +1878,19 @@ calc-kill calc-kill-region calc-yank))))
        (last-prec (intern (concat (symbol-name name) "-last-prec")))
        (last-val (intern (concat (symbol-name name) "-last"))))
     (list 'progn
-         (list 'defvar cache-prec (if init (math-numdigs (nth 1 init)) -100))
-         (list 'defvar cache-val (list 'quote init))
+;        (list 'defvar cache-prec (if init (math-numdigs (nth 1 init)) -100))
+         (list 'defvar cache-prec
+                `(cond
+                  ((consp ,init) (math-numdigs (nth 1 ,init)))
+                  (,init
+                   (nth 1 (math-numdigs (eval ,init))))
+                  (t
+                   -100)))
+         (list 'defvar cache-val
+                `(cond
+                  ((consp ,init) ,init)
+                  (,init (eval ,init))
+                  (t ,init)))
          (list 'defvar last-prec -100)
          (list 'defvar last-val nil)
          (list 'setq 'math-cache-list
@@ -1914,7 +1925,11 @@ calc-kill calc-kill-region calc-yank))))
 (put 'math-defcache 'lisp-indent-hook 2)
 
 ;;; Betcha didn't know that pi = 16 atan(1/5) - 4 atan(1/239).   [F] [Public]
-(math-defcache math-pi (float (bigpos 463 238 793 589 653 592 141 3) -21)
+(defconst math-approx-pi
+  (math-read-number-simple "3.141592653589793238463")
+  "An approximation for pi.")
+
+(math-defcache math-pi math-approx-pi
   (math-add-float (math-mul-float '(float 16 0)
                                  (math-arctan-raw '(float 2 -1)))
                  (math-mul-float '(float -4 0)
@@ -1945,7 +1960,11 @@ calc-kill calc-kill-region calc-yank))))
 (math-defcache math-sqrt-two-pi nil
   (math-sqrt-float (math-two-pi)))
 
-(math-defcache math-sqrt-e (float (bigpos 849 146 128 700 270 721 648 1) -21)
+(defconst math-approx-sqrt-e
+  (math-read-number-simple "1.648721270700128146849")
+  "An approximation for sqrt(3).")
+
+(math-defcache math-sqrt-e math-approx-sqrt-e
   (math-add-float '(float 1 0) (math-exp-minus-1-raw '(float 5 -1))))
 
 (math-defcache math-e nil
@@ -1955,10 +1974,13 @@ calc-kill calc-kill-region calc-yank))))
   (math-mul-float (math-add-float (math-sqrt-raw '(float 5 0)) '(float 1 0))
                  '(float 5 -1)))
 
+(defconst math-approx-gamma-const
+  (math-read-number-simple
+   "0.5772156649015328606065120900824024310421593359399235988057672348848677267776646709369470632917467495")
+  "An approximation for gamma.")
+
 (math-defcache math-gamma-const nil
-  '(float (bigpos 495 467 917 632 470 369 709 646 776 267 677 848 348 672
-                 057 988 235 399 359 593 421 310 024 824 900 120 065 606
-                 328 015 649 156 772 5) -100))
+  math-approx-gamma-const)
 
 (defun math-half-circle (symb)
   (if (eq calc-angle-mode 'rad)
@@ -2126,12 +2148,12 @@ calc-kill calc-kill-region calc-yank))))
   (unless a
     (setq a 1))
   (and
-   (not (memq nil (mapcar 
+   (not (memq nil (mapcar
                    (lambda (x) (eq x 0))
                    (nthcdr (1+ n) row))))
-   (not (memq nil (mapcar 
+   (not (memq nil (mapcar
                    (lambda (x) (eq x 0))
-                   (butlast 
+                   (butlast
                     (cdr row)
                     (- (length row) n)))))
    (eq (elt row n) a)))
@@ -2189,6 +2211,25 @@ calc-kill calc-kill-region calc-yank))))
       a
     (math-reject-arg a 'constp)))
 
+;;; Some functions for working with error forms.
+(defun math-get-value (x)
+  "Get the mean value of the error form X.
+If X is not an error form, return X."
+  (if (eq (car-safe x) 'sdev)
+      (nth 1 x)
+    x))
+
+(defun math-get-sdev (x &optional one)
+  "Get the standard deviation of the error form X.
+If X is not an error form, return 1."
+  (if (eq (car-safe x) 'sdev)
+      (nth 2 x)
+    (if one 1 0)))
+
+(defun math-contains-sdev-p (ls)
+  "Non-nil if the list LS contains an error form."
+  (let ((ls (if (eq (car-safe ls) 'vec) (cdr ls) ls)))
+    (memq t (mapcar (lambda (x) (eq (car-safe x) 'sdev)) ls))))
 
 ;;; Coerce integer A to be a small integer.  [S I]
 (defun math-fixnum (a)
@@ -2202,7 +2243,7 @@ calc-kill calc-kill-region calc-yank))))
 
 (defun math-fixnum-big (a)
   (if (cdr a)
-      (+ (car a) (* (math-fixnum-big (cdr a)) 1000))
+      (+ (car a) (* (math-fixnum-big (cdr a)) math-bignum-digit-size))
     (car a)))
 
 (defvar math-simplify-only nil)
@@ -2290,15 +2331,15 @@ calc-kill calc-kill-region calc-yank))))
     (and (symbolp (car math-normalize-a))
         (or (eq calc-simplify-mode 'none)
             (and (eq calc-simplify-mode 'num)
-                 (let ((aptr (setq math-normalize-a 
+                 (let ((aptr (setq math-normalize-a
                                     (cons
                                      (car math-normalize-a)
-                                     (mapcar 'math-normalize 
+                                     (mapcar 'math-normalize
                                              (cdr math-normalize-a))))))
                    (while (and aptr (math-constp (car aptr)))
                      (setq aptr (cdr aptr)))
                    aptr)))
-        (cons (car math-normalize-a) 
+        (cons (car math-normalize-a)
                (mapcar 'math-normalize (cdr math-normalize-a))))))
 
 
@@ -2679,8 +2720,8 @@ calc-kill calc-kill-region calc-yank))))
                      (setq mmt-nextval (funcall math-mt-func mmt-expr))
                      (not (equal mmt-expr mmt-nextval)))
            (setq mmt-expr mmt-nextval
-                 math-mt-many (if (> math-mt-many 0) 
-                                   (1- math-mt-many) 
+                 math-mt-many (if (> math-mt-many 0)
+                                   (1- math-mt-many)
                                  (1+ math-mt-many))))
          (if (or (Math-primp mmt-expr)
                  (<= math-mt-many 0))
@@ -2960,7 +3001,7 @@ calc-kill calc-kill-region calc-yank))))
 
 (defun math-read-plain-expr (exp-str &optional error-check)
   (let* ((calc-language nil)
-        (math-expr-opers math-standard-opers)
+        (math-expr-opers (math-standard-ops))
         (val (math-read-expr exp-str)))
     (and error-check
         (eq (car-safe val) 'error)
@@ -3005,10 +3046,10 @@ calc-kill calc-kill-region calc-yank))))
          math-read-big-baseline math-read-big-h2
          new-pos p)
       (while (setq new-pos (string-match "\n" str pos))
-       (setq math-read-big-lines 
+       (setq math-read-big-lines
               (cons (substring str pos new-pos) math-read-big-lines)
              pos (1+ new-pos)))
-      (setq math-read-big-lines 
+      (setq math-read-big-lines
             (nreverse (cons (substring str pos) math-read-big-lines))
            p math-read-big-lines)
       (while p
@@ -3116,7 +3157,7 @@ calc-kill calc-kill-region calc-yank))))
     (concat (substring (symbol-name (car a)) 9)
            "(" (math-vector-to-string (nth 1 a) t) ")"))
    (t
-    (let ((op (math-assq2 (car a) math-standard-opers)))
+    (let ((op (math-assq2 (car a) (math-standard-ops))))
       (cond ((and op (= (length a) 3))
             (if (> prec (min (nth 2 op) (nth 3 op)))
                 (concat "(" (math-format-flat-expr a 0) ")")
index b8692e01bb41c76eee3440bb6b482f7ac38cc15b..3839fc93666c44589a37e3c6fb4df9627b46d6b7 100644 (file)
               (setcdr math-fd-dt nil))
          fmt))))
 
+(defconst math-julian-date-beginning '(float 17214235 -1)
+  "The beginning of the Julian calendar,
+as measured in the number of days before January 1 of the year 1AD.")
+
+(defconst math-julian-date-beginning-int 1721424
+  "The beginning of the Julian calendar,
+as measured in the integer number of days before January 1 of the year 1AD.")
+
 (defun math-format-date-part (x)
   (cond ((stringp x)
         x)
        ((eq x 'n)
         (math-format-number (math-floor math-fd-date)))
        ((eq x 'J)
-        (math-format-number (math-add math-fd-date '(float (bigpos 235 214 17) -1))))
+        (math-format-number 
+          (math-add math-fd-date math-julian-date-beginning)))
        ((eq x 'j)
-        (math-format-number (math-add (math-floor math-fd-date) '(bigpos 424 721 1))))
+        (math-format-number (math-add 
+                              (math-floor math-fd-date) 
+                              math-julian-date-beginning-int)))
        ((eq x 'U)
         (math-format-number (nth 1 (math-date-parts math-fd-date 719164))))
        ((progn
                                              0
                                            (if (or (eq this 'j)
                                                    (math-integerp num))
-                                               '(bigpos 424 721 1)
-                                             '(float (bigpos 235 214 17)
-                                                     -1))))
+                                                math-julian-date-beginning-int
+                                              math-julian-date-beginning)))
                            hour (or (nth 3 num) hour)
                            minute (or (nth 4 num) minute)
                            second (or (nth 5 num) second)
 (defun calcFunc-julian (date &optional zone)
   (if (math-realp date)
       (list 'date (if (math-integerp date)
-                     (math-sub date '(bigpos 424 721 1))
-                   (setq date (math-sub date '(float (bigpos 235 214 17) -1)))
+                     (math-sub date math-julian-date-beginning-int)
+                   (setq date (math-sub date math-julian-date-beginning))
                    (math-sub date (math-div (calcFunc-tzone zone date)
                                             '(float 864 2)))))
     (if (eq (car date) 'date)
        (math-add (nth 1 date) (if (math-integerp (nth 1 date))
-                                  '(bigpos 424 721 1)
-                                (math-add '(float (bigpos 235 214 17) -1)
+                                   math-julian-date-beginning-int
+                                (math-add math-julian-date-beginning
                                           (math-div (calcFunc-tzone zone date)
                                                     '(float 864 2)))))
       (math-reject-arg date 'datep))))
     )
   "No doc yet.  See calc manual for now. ")
 
-(defvar var-TimeZone)
+(defvar var-TimeZone nil)
+
+;; From cal-dst
+(defvar calendar-current-time-zone-cache)
+
+(defvar math-calendar-tzinfo 
+  nil
+  "Information about the timezone, retrieved from the calendar.")
+
+(defun math-get-calendar-tzinfo ()
+  "Get information about the timezone from the calendar.
+The result should be a list of two items about the current time zone:
+first, the number of seconds difference from GMT
+second, the number of seconds offset for daylight savings."
+  (if math-calendar-tzinfo
+      math-calendar-tzinfo
+    (require 'cal-dst)
+    (let ((tzinfo (progn
+                    (calendar-current-time-zone)
+                    calendar-current-time-zone-cache)))
+      (setq math-calendar-tzinfo
+            (list (* 60 (abs (nth 0 tzinfo)))
+                  (* 60 (nth 1 tzinfo)))))))
 
 (defun calcFunc-tzone (&optional zone date)
   (if zone
            (t (math-reject-arg zone "*Expected a time zone")))
     (if (calc-var-value 'var-TimeZone)
        (calcFunc-tzone (calc-var-value 'var-TimeZone) date)
-      (let ((p math-tzone-names)
-           (offset 0)
-           (tz '(var error var-error)))
-       (save-excursion
-         (set-buffer (get-buffer-create " *Calc Temporary*"))
-         (erase-buffer)
-         (call-process "date" nil t)
-         (goto-char 1)
-         (let ((case-fold-search t))
-           (while (and p (not (search-forward (car (car p)) nil t)))
-             (setq p (cdr p))))
-         (if (looking-at "\\([-+][0-9]?[0-9]\\)\\([0-9][0-9]\\)?\\(\\'\\|[^0-9]\\)")
-             (setq offset (math-add
-                           (string-to-number (buffer-substring
-                                           (match-beginning 1)
-                                           (match-end 1)))
-                           (if (match-beginning 2)
-                               (math-div (string-to-number (buffer-substring
-                                                             (match-beginning 2)
-                                                             (match-end 2)))
-                                         60)
-                             0)))))
-       (if p
-           (progn
-             (setq p (car p))
-             ;; Try to convert to a generalized time zone.
-             (if (integerp (nth 2 p))
-                 (let ((gen math-tzone-names))
-                   (while (and gen
-                               (not (equal (nth 2 (car gen)) (car p)))
-                               (not (equal (nth 3 (car gen)) (car p)))
-                               (not (equal (nth 4 (car gen)) (car p)))
-                               (not (equal (nth 5 (car gen)) (car p))))
-                     (setq gen (cdr gen)))
-                   (and gen
-                        (setq gen (car gen))
-                        (equal (math-daylight-savings-adjust nil (car gen))
-                               (nth 2 p))
-                        (setq p gen))))
-             (setq tz (math-add (list 'var
-                                      (intern (car p))
-                                      (intern (concat "var-" (car p))))
-                                offset))))
-       (kill-buffer " *Calc Temporary*")
-       (setq var-TimeZone tz)
-       (calc-refresh-evaltos 'var-TimeZone)
-       (calcFunc-tzone tz date)))))
+      (let ((tzinfo (math-get-calendar-tzinfo)))
+        (+ (nth 0 tzinfo) 
+           (* (math-cal-daylight-savings-adjust date) (nth 1 tzinfo)))))))
 
 (defvar math-daylight-savings-hook 'math-std-daylight-savings)
 
     (and math-daylight-savings-hook
         (funcall math-daylight-savings-hook date dt zone bump))))
 
+;;; Based on part of dst-adjust-time in cal-dst.el
+;;; For calcFunc-dst, when zone=nil
+(defun math-cal-daylight-savings-adjust (date)
+  "Return -1 if DATE is using daylight saving, 0 otherwise."
+  (require 'cal-dst)
+  (unless date (setq date (calcFunc-now)))
+  (let* ((dt (math-date-to-dt date))
+         (time (cond
+                ((nth 3 dt)
+                 (nth 3 dt))
+                ((nth 4 dt)
+                 (+ (nth 3 dt) (/ (nth 4 dt) 60.0)))
+                (t
+                 0)))
+         (rounded-abs-date 
+          (+ 
+           (calendar-absolute-from-gregorian 
+            (list (nth 1 dt) (nth 2 dt) (nth 0 dt)))
+           (/ (round (* 60 time)) 60.0 24.0))))
+    (if (dst-in-effect rounded-abs-date)
+        -1
+      0)))
+
 (defun calcFunc-dsadj (date &optional zone)
   (if zone
       (or (eq (car-safe zone) 'var)
          (math-reject-arg zone "*Time zone variable expected"))
-    (setq zone (or (calc-var-value 'var-TimeZone)
-                  (progn
-                    (calcFunc-tzone)
-                    (calc-var-value 'var-TimeZone)))))
-  (setq zone (and (eq (car-safe zone) 'var)
-                 (upcase (symbol-name (nth 1 zone)))))
-  (let ((zadj (assoc zone math-tzone-names)))
-    (or zadj (math-reject-arg zone "*Unrecognized time zone name"))
-    (if (integerp (nth 2 zadj))
-       (nth 2 zadj)
-      (math-daylight-savings-adjust date zone))))
+    (setq zone (calc-var-value 'var-TimeZone)))
+  (if zone
+      (progn
+        (setq zone (and (eq (car-safe zone) 'var)
+                        (upcase (symbol-name (nth 1 zone)))))
+        (let ((zadj (assoc zone math-tzone-names)))
+          (or zadj (math-reject-arg zone "*Unrecognized time zone name"))
+          (if (integerp (nth 2 zadj))
+              (nth 2 zadj)
+            (math-daylight-savings-adjust date zone))))
+    (math-cal-daylight-savings-adjust date)))
+
+;; (defun calcFunc-dsadj (date &optional zone)
+;;   (if zone
+;;       (or (eq (car-safe zone) 'var)
+;;       (math-reject-arg zone "*Time zone variable expected"))
+;;     (setq zone (or (calc-var-value 'var-TimeZone)
+;;                (progn
+;;                  (calcFunc-tzone)
+;;                  (calc-var-value 'var-TimeZone)))))
+;;   (setq zone (and (eq (car-safe zone) 'var)
+;;               (upcase (symbol-name (nth 1 zone)))))
+;;   (let ((zadj (assoc zone math-tzone-names)))
+;;     (or zadj (math-reject-arg zone "*Unrecognized time zone name"))
+;;     (if (integerp (nth 2 zadj))
+;;     (nth 2 zadj)
+;;       (math-daylight-savings-adjust date zone))))
 
 (defun calcFunc-tzconv (date z1 z2)
   (if (math-realp date)
index 9f7a6ee79e2e0c7e1012d31a73276f25e5c57eef..d73d676bdef89542fcfd0f1ec230a21f07d0219c 100644 (file)
   (or (math-numberp x) (math-reject-arg x 'numberp))
   (calcFunc-fact (math-add x -1)))
 
-(defun math-gammap1-raw (x &optional fprec nfprec)   ; compute gamma(1 + x)
+(defun math-gammap1-raw (x &optional fprec nfprec)
+  "Compute gamma(1+X) to the appropriate precision."
   (or fprec
       (setq fprec (math-float calc-internal-prec)
            nfprec (math-float (- calc-internal-prec))))
        ((Math-lessp '(float 8 0) (math-abs-approx x))
         (let* ((z (math-div '(float 8 0) x))
                (y (math-sqr z))
-               (xx (math-add x '(float (bigneg 164 398 785) -9)))
+               (xx (math-add x 
+                              (math-read-number-simple "-0.785398164")))
                (a1 (math-poly-eval y
-                                   '((float (bigpos 211 887 093 2) -16)
-                                     (float (bigneg 639 370 073 2) -15)
-                                     (float (bigpos 407 510 734 2) -14)
-                                     (float (bigneg 627 628 098 1) -12)
-                                     (float 1 0))))
+                          (list
+                           (math-read-number-simple "0.0000002093887211")
+                           (math-read-number-simple "-0.000002073370639")
+                           (math-read-number-simple "0.00002734510407")
+                           (math-read-number-simple "-0.001098628627")
+                           '(float 1 0))))
                (a2 (math-poly-eval y
-                                   '((float (bigneg 152 935 934) -16)
-                                     (float (bigpos 161 095 621 7) -16)
-                                     (float (bigneg 651 147 911 6) -15)
-                                     (float (bigpos 765 488 430 1) -13)
-                                     (float (bigneg 995 499 562 1) -11))))
+                          (list
+                           (math-read-number-simple "-0.0000000934935152")
+                           (math-read-number-simple "0.0000007621095161")
+                           (math-read-number-simple "-0.000006911147651")
+                           (math-read-number-simple "0.0001430488765")
+                           (math-read-number-simple "-0.01562499995"))))
                (sc (math-sin-cos-raw xx)))
               (if yflag
                   (setq sc (cons (math-neg (cdr sc)) (car sc))))
               (math-mul (math-sqrt
-                         (math-div '(float (bigpos 722 619 636) -9) x))
+                         (math-div (math-read-number-simple "0.636619722")
+                                    x))
                         (math-sub (math-mul (cdr sc) a1)
                                   (math-mul (car sc) (math-mul z a2))))))
         (t
          (let ((y (math-sqr x)))
            (math-div (math-poly-eval y
-                                     '((float (bigneg 456 052 849 1) -7)
-                                       (float (bigpos 017 233 739 7) -5)
-                                       (float (bigneg 418 442 121 1) -2)
-                                       (float (bigpos 407 196 516 6) -1)
-                                       (float (bigneg 354 590 362 13) 0)
-                                       (float (bigpos 574 490 568 57) 0)))
+                            (list
+                             (math-read-number-simple "-184.9052456")
+                             (math-read-number-simple "77392.33017")
+                             (math-read-number-simple "-11214424.18")
+                             (math-read-number-simple "651619640.7")
+                             (math-read-number-simple "-13362590354.0")
+                             (math-read-number-simple "57568490574.0")))
                      (math-poly-eval y
-                                     '((float 1 0)
-                                       (float (bigpos 712 532 678 2) -7)
-                                       (float (bigpos 853 264 927 5) -5)
-                                       (float (bigpos 718 680 494 9) -3)
-                                       (float (bigpos 985 532 029 1) 0)
-                                       (float (bigpos 411 490 568 57) 0))))))))
+                            (list
+                             '(float 1 0)
+                             (math-read-number-simple "267.8532712")
+                             (math-read-number-simple "59272.64853")
+                             (math-read-number-simple "9494680.718")
+                             (math-read-number-simple "1029532985.0")
+                             (math-read-number-simple "57568490411.0"))))))))
 
 (defun math-besJ1 (x &optional yflag)
   (cond ((and (math-negp (calcFunc-re x)) (not yflag))
        ((Math-lessp '(float 8 0) (math-abs-approx x))
         (let* ((z (math-div '(float 8 0) x))
                (y (math-sqr z))
-               (xx (math-add x '(float (bigneg 491 194 356 2) -9)))
+               (xx (math-add x (math-read-number-simple "-2.356194491")))
                (a1 (math-poly-eval y
-                                   '((float (bigneg 019 337 240) -15)
-                                     (float (bigpos 174 520 457 2) -15)
-                                     (float (bigneg 496 396 516 3) -14)
-                                     (float 183105 -8)
-                                     (float 1 0))))
+                          (list
+                           (math-read-number-simple "-0.000000240337019")
+                           (math-read-number-simple "0.000002457520174")
+                           (math-read-number-simple "-0.00003516396496")
+                           '(float 183105 -8)
+                           '(float 1 0))))
                (a2 (math-poly-eval y
-                                   '((float (bigpos 412 787 105) -15)
-                                     (float (bigneg 987 228 88) -14)
-                                     (float (bigpos 096 199 449 8) -15)
-                                     (float (bigneg 873 690 002 2) -13)
-                                     (float (bigpos 995 499 687 4) -11))))
+                          (list
+                           (math-read-number-simple "0.000000105787412")
+                           (math-read-number-simple "-0.00000088228987")
+                           (math-read-number-simple "0.000008449199096")
+                           (math-read-number-simple "-0.0002002690873")
+                           (math-read-number-simple "0.04687499995"))))
                (sc (math-sin-cos-raw xx)))
           (if yflag
               (setq sc (cons (math-neg (cdr sc)) (car sc)))
             (if (math-negp x)
                 (setq sc (cons (math-neg (car sc)) (math-neg (cdr sc))))))
-          (math-mul (math-sqrt (math-div '(float (bigpos 722 619 636) -9) x))
+          (math-mul (math-sqrt (math-div 
+                                 (math-read-number-simple "0.636619722")
+                                 x))
                     (math-sub (math-mul (cdr sc) a1)
                               (math-mul (car sc) (math-mul z a2))))))
        (t
           (math-mul
            x
            (math-div (math-poly-eval y
-                                     '((float (bigneg 606 036 016 3) -8)
-                                       (float (bigpos 826 044 157) -4)
-                                       (float (bigneg 439 611 972 2) -3)
-                                       (float (bigpos 531 968 423 2) -1)
-                                       (float (bigneg 235 059 895 7) 0)
-                                       (float (bigpos 232 614 362 72) 0)))
+                            (list
+                             (math-read-number-simple "-30.16036606")
+                             (math-read-number-simple "15704.4826")
+                             (math-read-number-simple "-2972611.439")
+                             (math-read-number-simple "242396853.1")
+                             (math-read-number-simple "-7895059235.0")
+                             (math-read-number-simple "72362614232.0")))
                      (math-poly-eval y
-                                     '((float 1 0)
-                                       (float (bigpos 397 991 769 3) -7)
-                                       (float (bigpos 394 743 944 9) -5)
-                                       (float (bigpos 474 330 858 1) -2)
-                                       (float (bigpos 178 535 300 2) 0)
-                                       (float (bigpos 442 228 725 144)
-                                              0)))))))))
+                            (list
+                             '(float 1 0)
+                             (math-read-number-simple "376.9991397")
+                             (math-read-number-simple "99447.43394")
+                             (math-read-number-simple "18583304.74")
+                             (math-read-number-simple "2300535178.0")
+                             (math-read-number-simple "144725228442.0")))))))))
 
 (defun calcFunc-besY (v x)
   (math-inexact-result)
 (defun math-besY0 (x)
   (cond ((Math-lessp (math-abs-approx x) '(float 8 0))
         (let ((y (math-sqr x)))
-          (math-add
+          (math-add
            (math-div (math-poly-eval y
-                                     '((float (bigpos 733 622 284 2) -7)
-                                       (float (bigneg 757 792 632 8) -5)
-                                       (float (bigpos 129 988 087 1) -2)
-                                       (float (bigneg 036 598 123 5) -1)
-                                       (float (bigpos 065 834 062 7) 0)
-                                       (float (bigneg 389 821 957 2) 0)))
+                            (list
+                             (math-read-number-simple "228.4622733")
+                             (math-read-number-simple "-86327.92757")
+                             (math-read-number-simple "10879881.29")
+                             (math-read-number-simple "-512359803.6")
+                             (math-read-number-simple "7062834065.0")
+                             (math-read-number-simple "-2957821389.0")))
                      (math-poly-eval y
-                                     '((float 1 0)
-                                       (float (bigpos 244 030 261 2) -7)
-                                       (float (bigpos 647 472 474) -4)
-                                       (float (bigpos 438 466 189 7) -3)
-                                       (float (bigpos 648 499 452 7) -1)
-                                       (float (bigpos 269 544 076 40) 0))))
-           (math-mul '(float (bigpos 772 619 636) -9)
+                            (list
+                             '(float 1 0)
+                             (math-read-number-simple "226.1030244")
+                             (math-read-number-simple "47447.2647")
+                             (math-read-number-simple "7189466.438")
+                             (math-read-number-simple "745249964.8")
+                             (math-read-number-simple "40076544269.0"))))
+           (math-mul (math-read-number-simple "0.636619772")
                      (math-mul (math-besJ0 x) (math-ln-raw x))))))
        ((math-negp (calcFunc-re x))
         (math-add (math-besJ0 (math-neg x) t)
            (math-mul
             x
             (math-div (math-poly-eval y
-                                      '((float (bigpos 935 937 511 8) -6)
-                                        (float (bigneg 726 922 237 4) -3)
-                                        (float (bigpos 551 264 349 7) -1)
-                                        (float (bigneg 139 438 153 5) 1)
-                                        (float (bigpos 439 527 127) 4)
-                                        (float (bigneg 943 604 900 4) 3)))
+                             (list
+                              (math-read-number-simple "8511.937935")
+                              (math-read-number-simple "-4237922.726")
+                              (math-read-number-simple "734926455.1")
+                              (math-read-number-simple "-51534381390.0")
+                              (math-read-number-simple "1275274390000.0")
+                              (math-read-number-simple "-4900604943000.0")))
                       (math-poly-eval y
-                                      '((float 1 0)
-                                        (float (bigpos 885 632 549 3) -7)
-                                        (float (bigpos 605 042 102) -3)
-                                        (float (bigpos 002 904 245 2) -2)
-                                        (float (bigpos 367 650 733 3) 0)
-                                        (float (bigpos 664 419 244 4) 2)
-                                        (float (bigpos 057 958 249) 5)))))
-           (math-mul '(float (bigpos 772 619 636) -9)
-                     (math-sub (math-mul (math-besJ1 x) (math-ln-raw x))
+                             (list
+                              '(float 1 0)
+                              (math-read-number-simple "354.9632885")
+                              (math-read-number-simple "102042.605")
+                              (math-read-number-simple "22459040.02")
+                              (math-read-number-simple "3733650367.0")
+                              (math-read-number-simple "424441966400.0")
+                              (math-read-number-simple "24995805700000.0")))))
+           (math-mul (math-read-number-simple "0.636619772")
+                      (math-sub (math-mul (math-besJ1 x) (math-ln-raw x))
                                (math-div 1 x))))))
        ((math-negp (calcFunc-re x))
         (math-neg
                    (calcFunc-euler n '(float 5 -1)))
                (calcFunc-euler n '(frac 1 2))))))
 
-(defvar math-bernoulli-b-cache '((frac -174611
-                                      (bigpos 0 200 291 698 662 857 802))
-                                (frac 43867 (bigpos 0 944 170 217 94 109 5))
-                                (frac -3617 (bigpos 0 880 842 622 670 10))
-                                (frac 1 (bigpos 600 249 724 74))
-                                (frac -691 (bigpos 0 368 674 307 1))
-                                (frac 1 (bigpos 160 900 47))
-                                (frac -1 (bigpos 600 209 1))
-                                (frac 1 30240) (frac -1 720)
-                                (frac 1 12) 1 ))
-
-(defvar math-bernoulli-B-cache '((frac -174611 330) (frac 43867 798)
-                                (frac -3617 510) (frac 7 6) (frac -691 2730)
-                                (frac 5 66) (frac -1 30) (frac 1 42)
-                                (frac -1 30) (frac 1 6) 1 ))
+(defvar math-bernoulli-b-cache
+  (list
+   (list 'frac 
+         -174611
+         (math-read-number-simple "802857662698291200000"))
+   (list 'frac 
+         43867 
+         (math-read-number-simple "5109094217170944000"))
+   (list 'frac 
+         -3617 
+         (math-read-number-simple "10670622842880000"))
+   (list 'frac 
+         1 
+         (math-read-number-simple "74724249600"))
+   (list 'frac 
+         -691 
+         (math-read-number-simple "1307674368000"))
+   (list 'frac 
+         1 
+         (math-read-number-simple "47900160"))
+   (list 'frac 
+         -1 
+         (math-read-number-simple "1209600"))
+   (list 'frac 
+         1 
+         30240) 
+   (list 'frac 
+         -1 
+         720)
+   (list 'frac 
+         1 
+         12) 
+   1 ))
+
+(defvar math-bernoulli-B-cache 
+  '((frac -174611 330) (frac 43867 798)
+    (frac -3617 510) (frac 7 6) (frac -691 2730)
+    (frac 5 66) (frac -1 30) (frac 1 42)
+    (frac -1 30) (frac 1 6) 1 ))
 
 (defvar math-bernoulli-cache-size 11)
 (defun math-bernoulli-coefs (n)
index 48bdecf59a6ce86cdf2313a414682f292e7837d5..a7e85d9fa859d9d7201436989057d95c651e9baa 100644 (file)
          0)
      (or (and (Math-num-integerp pstyle) (math-trunc pstyle))
          (if (eq (car-safe (calc-var-value (nth 2 ydata))) 'vec)
-             0 -1)))))
+             0 -1))
+     (math-contains-sdev-p (eval (nth 2 ydata))))))
 
 (defun calc-graph-lookup (thing)
   (if (and (eq (car-safe thing) 'var)
          calc-graph-numsteps (1- (* calc-graph-numsteps (1+ calc-graph-numsteps3))))))
 
 (defun calc-graph-format-data ()
+  (if (math-contains-sdev-p calc-graph-yp)
+      (let ((yp calc-graph-yp))
+        (setq calc-graph-yp (cons 'vec (mapcar 'math-get-value (cdr yp))))
+        (setq calc-graph-zp (cons 'vec (mapcar 'math-get-sdev (cdr yp))))))
   (while (<= (setq calc-graph-stepcount (1+ calc-graph-stepcount)) calc-graph-numsteps)
     (if calc-graph-xvec
        (setq calc-graph-xp (cdr calc-graph-xp)
@@ -1059,7 +1064,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
   (interactive "P")
   (calc-graph-set-styles t (and style (prefix-numeric-value style))))
 
-(defun calc-graph-set-styles (lines points)
+(defun calc-graph-set-styles (lines points &optional yerr)
   (calc-graph-init)
   (save-excursion
     (set-buffer calc-gnuplot-input)
@@ -1067,7 +1072,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
        (error "No data points have been set!"))
     (let ((base (point))
          (mode nil) (lstyle nil) (pstyle nil)
-         start end lenbl penbl)
+         start end lenbl penbl errform)
       (re-search-forward "[,\n]")
       (forward-char -1)
       (setq end (point) start end)
@@ -1087,29 +1092,48 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
                (setq pstyle (string-to-number
                              (buffer-substring (match-beginning 1)
                                                (match-end 1)))))))
-      (setq lenbl (or (equal mode "lines") (equal mode "linespoints"))
-           penbl (or (equal mode "points") (equal mode "linespoints")))
-      (if lines
-         (or (eq lines t)
-             (setq lstyle lines
-                   lenbl (>= lines 0)))
-       (setq lenbl (not lenbl)))
-      (if points
-         (or (eq points t)
-             (setq pstyle points
-                   penbl (>= points 0)))
-       (setq penbl (not penbl)))
-      (delete-region start end)
+      (unless yerr
+        (setq lenbl (or (equal mode "lines") 
+                        (equal mode "linespoints"))
+              penbl (or (equal mode "points") 
+                        (equal mode "linespoints")))
+        (if lines
+            (or (eq lines t)
+                (setq lstyle lines
+                      lenbl (>= lines 0)))
+          (setq lenbl (not lenbl)))
+        (if points
+            (or (eq points t)
+                (setq pstyle points
+                      penbl (>= points 0)))
+          (setq penbl (not penbl))))
+        (delete-region start end)
       (goto-char start)
-      (insert " with "
-             (if lenbl
-                 (if penbl "linespoints" "lines")
-               (if penbl "points" "dots")))
-      (if (and pstyle (> pstyle 0))
-         (insert " " (if (and lstyle (> lstyle 0)) (int-to-string lstyle) "1")
-                 " " (int-to-string pstyle))
-       (if (and lstyle (> lstyle 0))
-           (insert " " (int-to-string lstyle))))))
+      (setq errform
+            (condition-case nil
+                (math-contains-sdev-p
+                 (eval (intern 
+                        (concat "var-"
+                                (save-excursion
+                                  (re-search-backward ":\\(.*\\)\\}")
+                                  (match-string 1))))))
+              (error nil)))
+      (if yerr
+          (insert " with yerrorbars")
+        (insert " with "
+                (if (and errform
+                         (equal mode "dots")
+                         (eq lines t))
+                    "yerrorbars"
+                  (if lenbl
+                      (if penbl "linespoints" "lines")
+                    (if penbl "points" "dots"))))
+        (if (and pstyle (> pstyle 0))
+            (insert " " 
+                    (if (and lstyle (> lstyle 0)) (int-to-string lstyle) "1")
+                    " " (int-to-string pstyle))
+          (if (and lstyle (> lstyle 0))
+              (insert " " (int-to-string lstyle)))))))
   (calc-graph-view-commands))
 
 (defun calc-graph-zero-x (flag)
index c2d3369627c0844e82404d40c6fa2f7cc6622ced..ed1c93e869425807b8923e7adb5b34f5ef8b627a 100644 (file)
@@ -321,11 +321,11 @@ C-w  Describe how there is no warranty for Calc."
 (defun calc-describe-function (&optional func)
   (interactive)
   (unless calc-help-function-list
-    (setq calc-help-function-list 
+    (setq calc-help-function-list
           (calc-help-index-entries "Function" "Command")))
   (or func
       (setq func (completing-read "Describe function: "
-                                  calc-help-function-list 
+                                  calc-help-function-list
                                   nil t)))
   (if (string-match "\\`calc-." func)
       (calc-describe-thing func "Command Index")
@@ -334,7 +334,7 @@ C-w  Describe how there is no warranty for Calc."
 (defun calc-describe-variable (&optional var)
   (interactive)
   (unless calc-help-variable-list
-    (setq calc-help-variable-list 
+    (setq calc-help-variable-list
           (calc-help-index-entries "Variable")))
   (or var
       (setq var (completing-read "Describe variable: "
@@ -414,54 +414,54 @@ C-w  Describe how there is no warranty for Calc."
     (princ (format "GNU Emacs Calculator version %s.\n"
                   calc-version))
     (princ "  By Dave Gillespie.\n")
-    (princ "  Copyright (C) 2007 Free Software Foundation, Inc.\n\n")
+    (princ (format "  %s\n\n" emacs-copyright))
     (princ "Type `h s' for a more detailed summary.\n")
     (princ "Or type `h i' to read the full Calc manual on-line.\n\n")
     (princ "Basic keys:\n")
     (let* ((calc-full-help-flag t))
-      (mapcar (function (lambda (x) (princ (format "  %s\n" x))))
-             (nreverse (cdr (reverse (cdr (calc-help))))))
-      (mapcar (function (lambda (prefix)
-                         (let ((msgs (condition-case err
-                                         (funcall prefix)
-                                       (error nil))))
-                           (if (car msgs)
-                               (princ
-                                (if (eq (nth 2 msgs) ?v)
-                                    "\n`v' or `V' prefix (vector/matrix) keys: \n"
-                                  (if (nth 2 msgs)
-                                      (format
-                                       "\n`%c' prefix (%s) keys:\n"
-                                       (nth 2 msgs)
-                                       (or (cdr (assq (nth 2 msgs)
-                                                      calc-help-long-names))
-                                           (nth 1 msgs)))
-                                    (format "\n%s-modified keys:\n"
-                                            (capitalize (nth 1 msgs)))))))
-                           (mapcar (function (lambda (x)
-                                               (princ (format "  %s\n" x))))
-                                   (car msgs)))))
-             '(calc-inverse-prefix-help
-               calc-hyperbolic-prefix-help
-               calc-inv-hyp-prefix-help
-               calc-a-prefix-help
-               calc-b-prefix-help
-               calc-c-prefix-help
-               calc-d-prefix-help
-               calc-f-prefix-help
-               calc-g-prefix-help
-               calc-h-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-shift-Y-prefix-help
-               calc-shift-Z-prefix-help
-               calc-z-prefix-help)))
+      (mapc (function (lambda (x) (princ (format "  %s\n" x))))
+           (nreverse (cdr (reverse (cdr (calc-help))))))
+      (mapc (function (lambda (prefix)
+                       (let ((msgs (condition-case err
+                                       (funcall prefix)
+                                     (error nil))))
+                         (if (car msgs)
+                             (princ
+                              (if (eq (nth 2 msgs) ?v)
+                                  "\n`v' or `V' prefix (vector/matrix) keys: \n"
+                                (if (nth 2 msgs)
+                                    (format
+                                     "\n`%c' prefix (%s) keys:\n"
+                                     (nth 2 msgs)
+                                     (or (cdr (assq (nth 2 msgs)
+                                                    calc-help-long-names))
+                                         (nth 1 msgs)))
+                                  (format "\n%s-modified keys:\n"
+                                          (capitalize (nth 1 msgs)))))))
+                         (mapcar (function (lambda (x)
+                                   (princ (format "  %s\n" x))))
+                                 (car msgs)))))
+           '(calc-inverse-prefix-help
+             calc-hyperbolic-prefix-help
+             calc-inv-hyp-prefix-help
+             calc-a-prefix-help
+             calc-b-prefix-help
+             calc-c-prefix-help
+             calc-d-prefix-help
+             calc-f-prefix-help
+             calc-g-prefix-help
+             calc-h-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-shift-Y-prefix-help
+             calc-shift-Z-prefix-help
+             calc-z-prefix-help)))
     (print-help-return-message)))
 
 (defun calc-h-prefix-help ()
index 3bb1e41233e683991b21de0fc9dbdc0681251d0c..efaf17ecae89ee2446f6e4b04efa4d615f7e70c4 100644 (file)
@@ -35,7 +35,7 @@
 ;;; Alternate entry/display languages.
 
 (defun calc-set-language (lang &optional option no-refresh)
-  (setq math-expr-opers (or (get lang 'math-oper-table) math-standard-opers)
+  (setq math-expr-opers (or (get lang 'math-oper-table) (math-standard-ops))
        math-expr-function-mapping (get lang 'math-function-table)
        math-expr-special-function-mapping (get lang 'math-special-function-table)
        math-expr-variable-mapping (get lang 'math-variable-table)
                                         h (1+ v) (1+ h) math-rb-v2)
                                        (string-match "<=\\|>=\\|\\+/-\\|!=\\|&&\\|||\\|:=\\|=>\\|." line h)
                                        (assoc (math-match-substring line 0)
-                                              math-standard-opers)))
+                                              (math-standard-ops))))
                      (and (>= (nth 2 widest) prec)
                           (setq h (match-end 0)))
                    (and (not (eq (string-match ",\\|;\\|\\.\\.\\|)\\|\\]\\|:" line h)
index 249dff569799765b7c6ecc48ca305610d73eab4b..3a2319e9a2cd8271e173babcf2016c8dd4f98540 100644 (file)
 (require 'calc-ext)
 (require 'calc-macs)
 
+
+;;; Find out how many 9s in 9.9999... will give distinct Emacs floats,
+;;; then back off by one.
+
+(defvar math-emacs-precision
+  (let* ((n 1)
+         (x 9)
+         (xx (+ x (* 9 (expt 10 (- n))))))
+    (while (/= x xx)
+      (progn
+        (setq n (1+ n))
+        (setq x xx)
+        (setq xx (+ x (* 9 (expt 10 (- n)))))))
+    (1- n))
+  "The number of digits in an Emacs float.")
+
+;;; Find the largest power of 10 which is an Emacs float, 
+;;; then back off by one so that any float d.dddd...eN 
+;;; is an Emacs float, for acceptable d.dddd....
+
+(defvar math-largest-emacs-expt
+  (let ((x 1)
+        (pow 1e2))
+    ;; The following loop is for efficiency; it should stop when 
+    ;; 10^(2x) is too large.  This could be indicated by a range 
+    ;; error when computing 10^(2x) or an infinite value for 10^(2x).
+    (while (and
+            pow
+            (< pow 1.0e+INF))
+      (setq x (* 2 x))
+      (setq pow (condition-case nil
+                    (expt 10.0 (* 2 x))
+                  (error nil))))
+    ;; The following loop should stop when 10^(x+1) is too large.
+    (setq pow (condition-case nil
+                    (expt 10.0 (1+ x))
+                  (error nil)))
+    (while (and
+            pow
+            (< pow 1.0e+INF))
+      (setq x (1+ x))
+      (setq pow (condition-case nil
+                    (expt 10.0 (1+ x))
+                  (error nil))))
+    (1- x))
+  "The largest exponent which Calc will convert to an Emacs float.")
+
+(defvar math-smallest-emacs-expt
+  (let ((x -1))
+    (while (condition-case nil
+               (> (expt 10.0 x) 0.0)
+             (error nil))
+      (setq x (* 2 x)))
+    (setq x (/ x 2))
+    (while (condition-case nil
+               (> (expt 10.0 x) 0.0)
+             (error nil))
+      (setq x (1- x)))
+    (+ x 2))
+    "The smallest exponent which Calc will convert to an Emacs float.")
+
+(defun math-use-emacs-fn (fn x)
+  "Use the native Emacs function FN to evaluate the Calc number X.
+If this can't be done, return NIL."
+  (and
+   (<= calc-internal-prec math-emacs-precision)
+   (math-realp x)
+   (let* ((fx (math-float x))
+          (xpon (+ (nth 2 x) (1- (math-numdigs (nth 1 x))))))
+     (and (<= math-smallest-emacs-expt xpon)
+          (<= xpon math-largest-emacs-expt)
+          (condition-case nil
+              (math-read-number
+               (number-to-string
+                (funcall fn 
+                         (string-to-number (math-format-number (math-float x))))))
+            (error nil))))))
+
 (defun calc-sqrt (arg)
   (interactive "P")
   (calc-slow-wrapper
        (let* ((top (nthcdr (- len 2) a)))
          (math-isqrt-bignum-iter
           a
-          (math-scale-bignum-3
+          (math-scale-bignum-digit-size
            (math-bignum-big
             (1+ (math-isqrt-small
-                 (+ (* (nth 1 top) 1000) (car top)))))
+                 (+ (* (nth 1 top) math-bignum-digit-size) (car top)))))
            (1- (/ len 2)))))
       (let* ((top (nth (1- len) a)))
        (math-isqrt-bignum-iter
         a
-        (math-scale-bignum-3
+        (math-scale-bignum-digit-size
          (list (1+ (math-isqrt-small top)))
          (/ len 2)))))))
 
         (while (eq (car (setq a (cdr a))) 0))
         (null a))))
 
-(defun math-scale-bignum-3 (a n)   ; [L L S]
+(defun math-scale-bignum-digit-size (a n)   ; [L L S]
   (while (> n 0)
     (setq a (cons 0 a)
          n (1- n)))
   a)
 
 (defun math-isqrt-small (a)   ; A > 0.  [S S]
-  (let ((g (cond ((>= a 10000) 1000)
+  (let ((g (cond ((>= a 1000000) 10000)
+                 ((>= a 10000) 1000)
                 ((>= a 100) 100)
                 (t 10)))
        g2)
 (defun math-sqrt-raw (a &optional guess)   ; [F F F]
   (if (not (Math-posp a))
       (math-sqrt a)
-    (if (null guess)
-       (let ((ldiff (- (math-numdigs (nth 1 a)) 6)))
-         (or (= (% (+ (nth 2 a) ldiff) 2) 0) (setq ldiff (1+ ldiff)))
-         (setq guess (math-make-float (math-isqrt-small
-                                       (math-scale-int (nth 1 a) (- ldiff)))
-                                      (/ (+ (nth 2 a) ldiff) 2)))))
-    (math-sqrt-float-iter a guess)))
+    (cond
+     ((math-use-emacs-fn 'sqrt a))
+     (t
+      (if (null guess)
+          (let ((ldiff (- (math-numdigs (nth 1 a)) 6)))
+            (or (= (% (+ (nth 2 a) ldiff) 2) 0) (setq ldiff (1+ ldiff)))
+            (setq guess (math-make-float (math-isqrt-small
+                                          (math-scale-int (nth 1 a) (- ldiff)))
+                                         (/ (+ (nth 2 a) ldiff) 2)))))
+      (math-sqrt-float-iter a guess)))))
 
 (defun math-sqrt-float-iter (a guess)   ; [F F F]
   (math-working "sqrt" guess)
          ((math-lessp-float x (math-neg (math-pi-over-4)))
           (math-neg (math-cos-raw-2 (math-add (math-pi-over-2) x) orgx)))
          ((math-nearly-zerop-float x orgx) '(float 0 0))
+          ((math-use-emacs-fn 'sin x))
          (calc-symbolic-mode (signal 'inexact-result nil))
          (t (math-sin-series x 6 4 x (math-neg-float (math-sqr-float x)))))))
 
 (defun math-cos-raw-2 (x orgx)   ; [F F]
   (cond ((math-nearly-zerop-float x orgx) '(float 1 0))
+        ((math-use-emacs-fn 'cos x))
        (calc-symbolic-mode (signal 'inexact-result nil))
        (t (let ((xnegsqr (math-neg-float (math-sqr-float x))))
             (math-sin-series
        ((Math-integer-negp (nth 1 x))
         (math-neg-float (math-arctan-raw (math-neg-float x))))
        ((math-zerop x) x)
+        ((math-use-emacs-fn 'atan x))
        (calc-symbolic-mode (signal 'inexact-result nil))
        ((math-equal-int x 1) (math-pi-over-4))
        ((math-equal-int x -1) (math-neg (math-pi-over-4)))
           (list 'polar
                 (math-exp-raw (nth 1 xc))
                 (math-from-radians (nth 2 xc)))))
+        ((math-use-emacs-fn 'exp x))
        ((or (math-lessp-float '(float 5 -1) x)
             (math-lessp-float x '(float -5 -1)))
         (if (math-lessp-float '(float 921035 1) x)
         '(float 0 0))
        (calc-symbolic-mode (signal 'inexact-result nil))
        ((math-posp (nth 1 x))    ; positive and real
-        (let ((xdigs (1- (math-numdigs (nth 1 x)))))
-          (math-add-float (math-ln-raw-2 (list 'float (nth 1 x) (- xdigs)))
-                          (math-mul-float (math-float (+ (nth 2 x) xdigs))
-                                          (math-ln-10)))))
+         (cond 
+          ((math-use-emacs-fn 'log x))
+          (t
+           (let ((xdigs (1- (math-numdigs (nth 1 x)))))
+             (math-add-float (math-ln-raw-2 (list 'float (nth 1 x) (- xdigs)))
+                             (math-mul-float (math-float (+ (nth 2 x) xdigs))
+                                             (math-ln-10)))))))
        ((math-zerop x)
         (math-reject-arg x "*Logarithm of zero"))
        ((eq calc-complex-mode 'polar)    ; negative and real
        sum
       (math-lnp1-series nextsum (1+ n) nextx x))))
 
-(math-defcache math-ln-10 (float (bigpos 018 684 045 994 092 585 302 2) -21)
+(defconst math-approx-ln-10
+  (math-read-number-simple "2.302585092994045684018")
+  "An approximation for ln(10).")
+     
+(math-defcache math-ln-10 math-approx-ln-10
   (math-ln-raw-2 '(float 1 1)))
 
-(math-defcache math-ln-2 (float (bigpos 417 309 945 559 180 147 693) -21)
+(defconst math-approx-ln-2
+  (math-read-number-simple "0.693147180559945309417")
+  "An approximation for ln(2).")
+
+(math-defcache math-ln-2 math-approx-ln-2
   (math-ln-raw-3 (math-float '(frac 1 3))))
 
 
index 1fdb64a26fecf220a2a623b4eb995eaa3ce6bbdf..b660e046a21578c9690fa65eca588f549eae0bb8 100644 (file)
@@ -145,9 +145,9 @@ Calc user interface as before (either C-x * C or C-x * K; initially C-x * C).
   "Create another, independent Calculator buffer."
   (interactive)
   (if (eq major-mode 'calc-mode)
-      (mapcar (function
-              (lambda (v)
-                (set-default v (symbol-value v)))) calc-local-var-list))
+      (mapc (function
+            (lambda (v)
+             (set-default v (symbol-value v)))) calc-local-var-list))
   (set-buffer (generate-new-buffer "*Calculator*"))
   (pop-to-buffer (current-buffer))
   (calc-mode))
@@ -579,7 +579,7 @@ loaded and the keystroke automatically re-typed."
 
 (defun math-div2-bignum (a)   ; [l l]
   (if (cdr a)
-      (cons (+ (/ (car a) 2) (* (% (nth 1 a) 2) 500))
+      (cons (+ (/ (car a) 2) (* (% (nth 1 a) 2) (/ math-bignum-digit-size 2)))
            (math-div2-bignum (cdr a)))
     (list (/ (car a) 2))))
 
diff --git a/lisp/calc/calc-nlfit.el b/lisp/calc/calc-nlfit.el
new file mode 100644 (file)
index 0000000..4895997
--- /dev/null
@@ -0,0 +1,817 @@
+;;; calc-nlfit.el --- nonlinear curve fitting for Calc
+
+;; Copyright (C) 2007 Free Software Foundation, Inc.
+
+;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
+
+;; 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, 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; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This code uses the Levenberg-Marquardt method, as described in
+;; _Numerical Analysis_ by H. R. Schwarz, to fit data to 
+;; nonlinear curves.  Currently, the only the following curves are
+;; supported:
+;; The logistic S curve, y=a/(1+exp(b*(t-c)))
+;;   Here, y is usually interpreted as the population of some
+;;   quantity at time t.  So we will think of the data as consisting
+;;   of quantities q0, q1, ..., qn and their respective times
+;;   t0, t1, ..., tn.
+
+;; The logistic bell curve, y=A*exp(B*(t-C))/(1+exp(B*(t-C)))^2
+;;   Note that this is the derivative of the formula for the S curve.
+;;   We get A=-a*b, B=b and C=c.  Here, y is interpreted as the rate 
+;;   of growth of a population at time t.  So we will think of the 
+;;   data as consisting of rates p0, p1, ..., pn and their 
+;;   respective times t0, t1, ..., tn.
+
+;; The Hubbert Linearization, y/x=A*(1-x/B)
+;;   Here, y is thought of as the rate of growth of a population
+;;   and x represents the actual population.  This is essentially 
+;;   the differential equation describing the actual population.
+
+;; The Levenberg-Marquardt method is an iterative process: it takes
+;; an initial guess for the parameters and refines them.  To get an
+;; initial guess for the parameters, we'll use a method described by
+;; Luis de Sousa in "Hubbert's Peak Mathematics".  The idea is that
+;; given quantities Q and the corresponding rates P, they should
+;; satisfy P/Q= mQ+a.  We can use the parameter a for an
+;; approximation for the parameter a in the S curve, and
+;; approximations for b and c are found using least squares on the
+;; linearization log((a/y)-1) = log(bb) + cc*t of
+;; y=a/(1+bb*exp(cc*t)), which is equivalent to the above s curve
+;; formula, and then tranlating it to b and c.  From this, we can
+;; also get approximations for the bell curve parameters.
+
+;;; Code:
+
+(require 'calc-arith)
+
+(defun math-nlfit-least-squares (xdata ydata &optional sdata sigmas)
+  "Return the parameters A and B for the best least squares fit y=a+bx."
+  (let* ((n (length xdata))
+         (s2data (if sdata 
+                     (mapcar 'calcFunc-sqr sdata)
+                  (make-list n 1)))
+         (S (if sdata 0 n))
+         (Sx 0)
+         (Sy 0)
+         (Sxx 0)
+         (Sxy 0)
+         D)
+    (while xdata
+      (let ((x (car xdata))
+            (y (car ydata))
+            (s (car s2data)))
+        (setq Sx  (math-add Sx (if s (math-div x s) x)))
+        (setq Sy  (math-add Sy (if s (math-div y s) y)))
+        (setq Sxx (math-add Sxx (if s (math-div (math-mul x x) s)
+                                  (math-mul x x))))
+        (setq Sxy (math-add Sxy (if s (math-div (math-mul x y) s)
+                                  (math-mul x y))))
+        (if sdata
+            (setq S (math-add S (math-div 1 s)))))
+      (setq xdata (cdr xdata))
+      (setq ydata (cdr ydata))
+      (setq s2data (cdr s2data)))
+    (setq D (math-sub (math-mul S Sxx) (math-mul Sx Sx)))
+    (let ((A (math-div (math-sub (math-mul Sxx Sy) (math-mul Sx Sxy)) D))
+          (B (math-div (math-sub (math-mul S Sxy) (math-mul Sx Sy)) D)))
+      (if sigmas
+          (let ((C11 (math-div Sxx D))
+                (C12 (math-neg (math-div Sx D)))
+                (C22 (math-div S D)))
+            (list (list 'sdev A (calcFunc-sqrt C11))
+                  (list 'sdev B (calcFunc-sqrt C22))
+                  (list 'vec
+                        (list 'vec C11 C12)
+                        (list 'vec C12 C22))))
+        (list A B)))))
+
+;;; The methods described by de Sousa require the cumulative data qdata
+;;; and the rates pdata.  We will assume that we are given either
+;;; qdata and the corresponding times tdata, or pdata and the corresponding
+;;; tdata.  The following two functions will find pdata or qdata, 
+;;; given the other..
+
+;;; First, given two lists; one of values q0, q1, ..., qn and one of 
+;;; corresponding times t0, t1, ..., tn; return a list 
+;;; p0, p1, ..., pn of the rates of  change of the qi with respect to t.
+;;; p0 is the right hand derivative (q1 - q0)/(t1 - t0).
+;;; pn is the left hand derivative (qn - q(n-1))/(tn - t(n-1)).
+;;; The other pis are the averages of the two:
+;;;      (1/2)((qi - q(i-1))/(ti - t(i-1)) + (q(i+1) - qi)/(t(i+1) - ti)).
+
+(defun math-nlfit-get-rates-from-cumul (tdata qdata)
+  (let ((pdata (list
+                (math-div 
+                 (math-sub (nth 1 qdata)
+                           (nth 0 qdata))
+                 (math-sub (nth 1 tdata)
+                           (nth 0 tdata))))))
+    (while (> (length qdata) 2)
+      (setq pdata
+            (cons
+             (math-mul
+              '(float 5 -1)
+              (math-add
+               (math-div
+                (math-sub (nth 2 qdata)
+                          (nth 1 qdata))
+                (math-sub (nth 2 tdata)
+                          (nth 1 tdata)))
+               (math-div
+                (math-sub (nth 1 qdata)
+                          (nth 0 qdata))
+                (math-sub (nth 1 tdata)
+                          (nth 0 tdata)))))
+             pdata))
+      (setq qdata (cdr qdata)))
+    (setq pdata
+          (cons
+           (math-div
+            (math-sub (nth 1 qdata)
+                      (nth 0 qdata))
+            (math-sub (nth 1 tdata)
+                      (nth 0 tdata)))
+           pdata))
+    (reverse pdata)))
+
+;;; Next, given two lists -- one of rates p0, p1, ..., pn and one of 
+;;; corresponding times t0, t1, ..., tn -- and an initial values q0,
+;;;  return a list q0, q1, ..., qn of the cumulative values.
+;;; q0 is the initial value given.
+;;; For i>0, qi is computed using the trapezoid rule:
+;;;     qi = q(i-1) + (1/2)(pi + p(i-1))(ti - t(i-1))
+
+(defun math-nlfit-get-cumul-from-rates (tdata pdata q0)
+  (let* ((qdata (list q0)))
+    (while (cdr pdata)
+      (setq qdata
+            (cons
+             (math-add (car qdata)
+                       (math-mul
+                        (math-mul 
+                         '(float 5 -1)
+                         (math-add (nth 1 pdata) (nth 0 pdata)))
+                        (math-sub (nth 1 tdata)
+                                  (nth 0 tdata))))
+             qdata))
+      (setq pdata (cdr pdata))
+      (setq tdata (cdr tdata)))
+    (reverse qdata)))
+
+;;; Given the qdata, pdata and tdata, find the parameters
+;;; a, b and c that fit q = a/(1+b*exp(c*t)).
+;;; a is found using the method described by de Sousa.  
+;;; b and c are found using least squares on the linearization
+;;; log((a/q)-1) = log(b) + c*t
+;;; In some cases (where the logistic curve may well be the wrong
+;;; model), the computed a will be less than or equal to the maximum
+;;; value of q in qdata; in which case the above linearization won't work.
+;;; In this case, a will be replaced by a number slightly above 
+;;; the maximum value of q.
+
+(defun math-nlfit-find-qmax (qdata pdata tdata)
+  (let* ((ratios (mapcar* 'math-div pdata qdata))
+         (lsdata (math-nlfit-least-squares ratios tdata))
+         (qmax (math-max-list (car qdata) (cdr qdata)))
+         (a (math-neg (math-div (nth 1 lsdata) (nth 0 lsdata)))))
+    (if (math-lessp a qmax)
+        (math-add '(float 5 -1) qmax)
+      a)))
+
+(defun math-nlfit-find-logistic-parameters (qdata pdata tdata)
+  (let* ((a (math-nlfit-find-qmax qdata pdata tdata))
+         (newqdata
+          (mapcar (lambda (q) (calcFunc-ln (math-sub (math-div a q) 1)))
+                  qdata))
+         (bandc (math-nlfit-least-squares tdata newqdata)))
+    (list
+     a
+     (calcFunc-exp (nth 0 bandc))
+     (nth 1 bandc))))
+
+;;; Next, given the pdata and tdata, we can find the qdata if we know q0.
+;;; We first try to find q0, using the fact that when p takes on its largest
+;;; value, q is half of its maximum value.  So we'll find the maximum value
+;;; of q given various q0, and use bisection to approximate the correct q0.
+
+;;; First, given pdata and tdata, find what half of qmax would be if q0=0.
+
+(defun math-nlfit-find-qmaxhalf (pdata tdata)
+  (let ((pmax (math-max-list (car pdata) (cdr pdata)))
+        (qmh 0))
+    (while (math-lessp (car pdata) pmax)
+      (setq qmh
+            (math-add qmh
+                      (math-mul
+                       (math-mul 
+                        '(float 5 -1)
+                        (math-add (nth 1 pdata) (nth 0 pdata)))
+                       (math-sub (nth 1 tdata)
+                                 (nth 0 tdata)))))
+      (setq pdata (cdr pdata))
+      (setq tdata (cdr tdata)))
+    qmh))
+
+;;; Next, given pdata and tdata, approximate q0.
+
+(defun math-nlfit-find-q0 (pdata tdata)
+  (let* ((qhalf (math-nlfit-find-qmaxhalf pdata tdata))
+         (q0 (math-mul 2 qhalf))
+         (qdata (math-nlfit-get-cumul-from-rates tdata pdata q0)))
+    (while (math-lessp (math-nlfit-find-qmax 
+                        (mapcar
+                         (lambda (q) (math-add q0 q))
+                         qdata)
+                        pdata tdata)
+                       (math-mul
+                        '(float 5 -1)
+                        (math-add
+                         q0
+                         qhalf)))
+      (setq q0 (math-add q0 qhalf)))
+    (let* ((qmin (math-sub q0 qhalf))
+           (qmax q0)
+           (qt (math-nlfit-find-qmax
+                (mapcar
+                 (lambda (q) (math-add q0 q))
+                 qdata)
+                pdata tdata))
+           (i 0))
+      (while (< i 10)
+        (setq q0 (math-mul '(float 5 -1) (math-add qmin qmax)))
+        (if (math-lessp 
+             (math-nlfit-find-qmax
+              (mapcar
+               (lambda (q) (math-add q0 q))
+               qdata)
+              pdata tdata)
+             (math-mul '(float 5 -1) (math-add qhalf q0)))
+            (setq qmin q0)
+          (setq qmax q0))
+        (setq i (1+ i)))
+      (math-mul '(float 5 -1) (math-add qmin qmax)))))
+
+;;; To improve the approximations to the parameters, we can use 
+;;; Marquardt method as described in Schwarz's book.
+
+;;; Small numbers used in the Givens algorithm
+(defvar math-nlfit-delta '(float 1 -8))
+
+(defvar math-nlfit-epsilon '(float 1 -5))
+
+;;; Maximum number of iterations
+(defvar math-nlfit-max-its 100)
+
+;;; Next, we need some functions for dealing with vectors and
+;;; matrices.  For convenience, we'll work with Emacs lists
+;;; as vectors, rather than Calc's vectors.
+
+(defun math-nlfit-set-elt (vec i x)
+  (setcar (nthcdr (1- i) vec) x))
+
+(defun math-nlfit-get-elt (vec i)
+  (nth (1- i) vec))
+
+(defun math-nlfit-make-matrix (i j)
+  (let ((row (make-list j 0))
+        (mat nil)
+        (k 0))
+    (while (< k i)
+      (setq mat (cons (copy-list row) mat))
+      (setq k (1+ k)))
+    mat))
+
+(defun math-nlfit-set-matx-elt (mat i j x)
+  (setcar (nthcdr (1- j) (nth (1- i) mat)) x))
+
+(defun math-nlfit-get-matx-elt (mat i j)
+  (nth (1- j) (nth (1- i) mat)))
+
+;;; For solving the linearized system.
+;;; (The Givens method, from Schwarz.)
+
+(defun math-nlfit-givens (C d)
+  (let* ((C (copy-tree C))
+         (d (copy-tree d))
+         (n (length (car C)))
+         (N (length C))
+         (j 1)
+         (r (make-list N 0))
+         (x (make-list N 0))
+         w
+         gamma
+         sigma
+         rho)
+    (while (<= j n)
+      (let ((i (1+ j)))
+        (while (<= i N)
+          (let ((cij (math-nlfit-get-matx-elt C i j))
+                (cjj (math-nlfit-get-matx-elt C j j)))
+            (when (not (math-equal 0 cij))
+                (if (math-lessp (calcFunc-abs cjj) 
+                                (math-mul math-nlfit-delta (calcFunc-abs cij)))
+                    (setq w (math-neg cij)
+                          gamma 0
+                          sigma 1
+                          rho 1)
+                  (setq w (math-mul
+                           (calcFunc-sign cjj)
+                           (calcFunc-sqrt 
+                            (math-add
+                             (math-mul cjj cjj)
+                             (math-mul cij cij))))
+                        gamma (math-div cjj w)
+                        sigma (math-neg (math-div cij w)))
+                  (if (math-lessp (calcFunc-abs sigma) gamma)
+                      (setq rho sigma)
+                    (setq rho (math-div (calcFunc-sign sigma) gamma))))
+              (setq cjj w
+                    cij rho)
+              (math-nlfit-set-matx-elt C j j w)
+              (math-nlfit-set-matx-elt C i j rho)
+              (let ((k (1+ j)))
+                (while (<= k n)       
+                  (let* ((cjk (math-nlfit-get-matx-elt C j k))
+                         (cik (math-nlfit-get-matx-elt C i k))
+                         (h (math-sub 
+                             (math-mul gamma cjk) (math-mul sigma cik))))
+                    (setq cik (math-add
+                               (math-mul sigma cjk)
+                               (math-mul gamma cik)))
+                    (setq cjk h)
+                    (math-nlfit-set-matx-elt C i k cik)
+                    (math-nlfit-set-matx-elt C j k cjk)
+                    (setq k (1+ k)))))
+              (let* ((di (math-nlfit-get-elt d i))
+                     (dj (math-nlfit-get-elt d j))
+                     (h (math-sub
+                         (math-mul gamma dj)
+                         (math-mul sigma di))))
+                (setq di (math-add
+                          (math-mul sigma dj)
+                          (math-mul gamma di)))
+                (setq dj h)
+                (math-nlfit-set-elt d i di)
+                (math-nlfit-set-elt d j dj))))
+          (setq i (1+ i))))
+      (setq j (1+ j)))
+    (let ((i n)
+          s)
+      (while (>= i 1)
+        (math-nlfit-set-elt r i 0)
+        (setq s (math-nlfit-get-elt d i))
+        (let ((k (1+ i)))
+          (while (<= k n)
+            (setq s (math-add s (math-mul (math-nlfit-get-matx-elt C i k)
+                            (math-nlfit-get-elt x k))))
+            (setq k (1+ k))))
+        (math-nlfit-set-elt x i 
+                            (math-neg 
+                             (math-div s 
+                                       (math-nlfit-get-matx-elt C i i))))
+        (setq i (1- i))))
+    (let ((i (1+ n)))
+      (while (<= i N)
+        (math-nlfit-set-elt r i (math-nlfit-get-elt d i))
+        (setq i (1+ i))))
+    (let ((j n))
+      (while (>= j 1)
+        (let ((i N))
+          (while (>= i (1+ j))
+            (setq rho (math-nlfit-get-matx-elt C i j))
+            (if (math-equal rho 1)
+                (setq gamma 0
+                      sigma 1)
+              (if (math-lessp (calcFunc-abs rho) 1)
+                  (setq sigma rho
+                        gamma (calcFunc-sqrt 
+                               (math-sub 1 (math-mul sigma sigma))))
+                (setq gamma (math-div 1 (calcFunc-abs rho))
+                      sigma (math-mul (calcFunc-sign rho)
+                                       (calcFunc-sqrt
+                                        (math-sub 1 (math-mul gamma gamma)))))))
+            (let ((ri (math-nlfit-get-elt r i))
+                  (rj (math-nlfit-get-elt r j))
+                  h)
+              (setq h (math-add (math-mul gamma rj)
+                         (math-mul sigma ri)))
+              (setq ri (math-sub
+                        (math-mul gamma ri)
+                        (math-mul sigma rj)))
+              (setq rj h)
+              (math-nlfit-set-elt r i ri)
+              (math-nlfit-set-elt r j rj))
+            (setq i (1- i))))
+        (setq j (1- j))))
+
+    x))
+
+(defun math-nlfit-jacobian (grad xlist parms &optional slist)
+  (let ((j nil))
+    (while xlist 
+      (let ((row (apply grad (car xlist) parms)))
+        (setq j
+              (cons
+               (if slist
+                   (mapcar (lambda (x) (math-div x (car slist))) row)
+                 row)
+               j)))
+      (setq slist (cdr slist))
+      (setq xlist (cdr xlist)))
+    (reverse j)))
+
+(defun math-nlfit-make-ident (l n)
+  (let ((m (math-nlfit-make-matrix n n))
+        (i 1))
+    (while (<= i n)
+      (math-nlfit-set-matx-elt m i i l)
+      (setq i (1+ i)))
+    m))
+
+(defun math-nlfit-chi-sq (xlist ylist parms fn &optional slist)
+  (let ((cs 0))
+    (while xlist
+      (let ((c
+             (math-sub
+              (apply fn (car xlist) parms)
+              (car ylist))))
+        (if slist
+            (setq c (math-div c (car slist))))
+        (setq cs
+              (math-add cs
+                 (math-mul c c))))
+      (setq xlist (cdr xlist))
+      (setq ylist (cdr ylist))
+      (setq slist (cdr slist)))
+    cs))
+
+(defun math-nlfit-init-lambda (C)
+  (let ((l 0)
+        (n (length (car C)))
+        (N (length C)))
+    (while C
+      (let ((row (car C)))
+        (while row
+          (setq l (math-add l (math-mul (car row) (car row))))
+          (setq row (cdr row))))
+      (setq C (cdr C)))
+    (calcFunc-sqrt (math-div l (math-mul n N)))))
+
+(defun math-nlfit-make-Ctilda (C l)
+  (let* ((n (length (car C)))
+         (bot (math-nlfit-make-ident l n)))
+    (append C bot)))
+
+(defun math-nlfit-make-d (fn xdata ydata parms &optional sdata)
+  (let ((d nil))
+    (while xdata
+      (setq d (cons
+               (let ((dd (math-sub (apply fn (car xdata) parms)
+                                   (car ydata))))
+                 (if sdata (math-div dd (car sdata)) dd))
+               d))
+      (setq xdata (cdr xdata))
+      (setq ydata (cdr ydata))
+      (setq sdata (cdr sdata)))
+    (reverse d)))
+    
+(defun math-nlfit-make-dtilda (d n)
+  (append d (make-list n 0)))
+
+(defun math-nlfit-fit (xlist ylist parms fn grad &optional slist)
+  (let*
+      ((C (math-nlfit-jacobian grad xlist parms slist))
+       (d (math-nlfit-make-d fn xlist ylist parms slist))
+       (chisq (math-nlfit-chi-sq xlist ylist parms fn slist))
+       (lambda (math-nlfit-init-lambda C))
+       (really-done nil)
+       (iters 0))
+    (while (and
+            (not really-done)
+            (< iters math-nlfit-max-its))
+      (setq iters (1+ iters))
+      (let ((done nil))
+        (while (not done)
+          (let* ((Ctilda (math-nlfit-make-Ctilda C lambda))
+                 (dtilda (math-nlfit-make-dtilda d (length (car C))))
+                 (zeta (math-nlfit-givens Ctilda dtilda))
+                 (newparms (mapcar* 'math-add (copy-tree parms) zeta))
+                 (newchisq (math-nlfit-chi-sq xlist ylist newparms fn slist)))
+            (if (math-lessp newchisq chisq)
+                (progn
+                  (if (math-lessp 
+                       (math-div 
+                        (math-sub chisq newchisq) newchisq) math-nlfit-epsilon)
+                      (setq really-done t))
+                  (setq lambda (math-div lambda 10))
+                  (setq chisq newchisq)
+                  (setq parms newparms)
+                  (setq done t))
+              (setq lambda (math-mul lambda 10)))))
+        (setq C (math-nlfit-jacobian grad xlist parms slist))
+        (setq d (math-nlfit-make-d fn xlist ylist parms slist))))
+    (list chisq parms)))
+
+;;; The functions that describe our models, and their gradients.
+
+(defun math-nlfit-s-logistic-fn (x a b c)
+  (math-div a (math-add 1 (math-mul b (calcFunc-exp (math-mul c x))))))
+
+(defun math-nlfit-s-logistic-grad (x a b c)
+  (let* ((ep (calcFunc-exp (math-mul c x)))
+         (d (math-add 1 (math-mul b ep)))
+         (d2 (math-mul d d)))
+    (list
+     (math-div 1 d)
+     (math-neg (math-div (math-mul a ep) d2))
+     (math-neg (math-div (math-mul a (math-mul b (math-mul x ep))) d2)))))
+
+(defun math-nlfit-b-logistic-fn (x a c d)
+  (let ((ex (calcFunc-exp (math-mul c (math-sub x d)))))
+    (math-div
+     (math-mul a ex)
+     (math-sqr 
+      (math-add
+       1 ex)))))
+
+(defun math-nlfit-b-logistic-grad (x a c d)
+  (let* ((ex (calcFunc-exp (math-mul c (math-sub x d))))
+        (ex1 (math-add 1 ex))
+        (xd (math-sub x d)))
+    (list
+     (math-div
+      ex
+      (math-sqr ex1))
+     (math-sub
+      (math-div
+       (math-mul a (math-mul xd ex))
+       (math-sqr ex1))
+      (math-div
+       (math-mul 2 (math-mul a (math-mul xd (math-sqr ex))))
+       (math-pow ex1 3)))
+     (math-sub
+      (math-div
+       (math-mul 2 (math-mul a (math-mul c (math-sqr ex))))
+       (math-pow ex1 3))
+      (math-div
+       (math-mul a (math-mul c ex))
+       (math-sqr ex1))))))
+
+;;; Functions to get the final covariance matrix and the sdevs
+
+(defun math-nlfit-find-covar (grad xlist pparms)
+  (let ((j nil))
+    (while xlist 
+      (setq j (cons (cons 'vec (apply grad (car xlist) pparms)) j))
+      (setq xlist (cdr xlist)))
+    (setq j (cons 'vec (reverse j)))
+    (setq j
+          (math-mul
+           (calcFunc-trn j) j))
+    (calcFunc-inv j)))
+
+(defun math-nlfit-get-sigmas (grad xlist pparms chisq)
+  (let* ((sgs nil)
+         (covar (math-nlfit-find-covar grad xlist pparms))
+         (n (1- (length covar)))
+         (N (length xlist))
+         (i 1))
+    (when (> N n)
+      (while (<= i n)
+        (setq sgs (cons (calcFunc-sqrt (nth i (nth i covar))) sgs))
+        (setq i (1+ i)))
+      (setq sgs (reverse sgs)))
+    (list sgs covar)))
+   
+;;; Now the Calc functions
+
+(defun math-nlfit-s-logistic-params (xdata ydata)
+  (let ((pdata (math-nlfit-get-rates-from-cumul xdata ydata)))
+    (math-nlfit-find-logistic-parameters ydata pdata xdata)))
+
+(defun math-nlfit-b-logistic-params (xdata ydata)
+  (let* ((q0 (math-nlfit-find-q0 ydata xdata))
+         (qdata (math-nlfit-get-cumul-from-rates xdata ydata q0))
+         (abc (math-nlfit-find-logistic-parameters qdata ydata xdata))
+         (B (nth 1 abc))
+         (C (nth 2 abc))
+         (A (math-neg
+             (math-mul
+              (nth 0 abc)
+              (math-mul B C))))
+         (D (math-neg (math-div (calcFunc-ln B) C)))
+         (A (math-div A B)))
+    (list A C D)))
+
+;;; Some functions to turn the parameter lists and variables
+;;; into the appropriate functions.
+
+(defun math-nlfit-s-logistic-solnexpr (pms var)
+  (let ((a (nth 0 pms))
+        (b (nth 1 pms))
+        (c (nth 2 pms)))
+    (list '/ a
+            (list '+
+                  1
+             (list '*
+                   b
+                   (calcFunc-exp
+                    (list '*
+                          c
+                          var)))))))
+
+(defun math-nlfit-b-logistic-solnexpr (pms var)
+  (let ((a (nth 0 pms))
+        (c (nth 1 pms))
+        (d (nth 2 pms)))
+    (list '/
+          (list '*
+                a
+                (calcFunc-exp
+                 (list '*
+                       c
+                       (list '- var d))))
+          (list '^
+                (list '+
+                      1
+                      (calcFunc-exp
+                       (list '*
+                             c
+                             (list '- var d))))
+                2))))
+
+(defun math-nlfit-enter-result (n prefix vals)
+  (setq calc-aborted-prefix prefix)
+  (calc-pop-push-record-list n prefix vals)
+  (calc-handle-whys))
+
+(defun math-nlfit-fit-curve (fn grad solnexpr initparms &optional sdv)
+  (calc-slow-wrapper
+   (let* ((sdevv (or (eq sdv 'calcFunc-efit) (eq sdv 'calcFunc-xfit)))
+          (calc-display-working-message nil)
+          (data (calc-top 1))
+          (xdata (cdr (car (cdr data))))
+          (ydata (cdr (car (cdr (cdr data)))))
+          (sdata (if (math-contains-sdev-p ydata)
+                     (mapcar (lambda (x) (math-get-sdev x t)) ydata)
+                   nil))
+          (ydata (mapcar (lambda (x) (math-get-value x)) ydata))
+          (calc-curve-varnames nil)
+          (calc-curve-coefnames nil)
+          (calc-curve-nvars 1)
+          (fitvars (calc-get-fit-variables 1 3))
+          (var (nth 1 calc-curve-varnames))
+          (parms (cdr calc-curve-coefnames))
+          (parmguess
+           (funcall initparms xdata ydata))
+          (fit (math-nlfit-fit xdata ydata parmguess fn grad sdata))
+          (finalparms (nth 1 fit))
+          (sigmacovar 
+           (if sdevv
+               (math-nlfit-get-sigmas grad xdata finalparms (nth 0 fit))))
+          (sigmas 
+           (if sdevv
+               (nth 0 sigmacovar)))
+          (finalparms 
+           (if sigmas
+               (mapcar* (lambda (x y) (list 'sdev x y)) finalparms sigmas)
+             finalparms))
+          (soln (funcall solnexpr finalparms var)))
+     (let ((calc-fit-to-trail t)
+           (traillist nil))
+       (while parms
+         (setq traillist (cons (list 'calcFunc-eq (car parms) (car finalparms))
+                               traillist))
+         (setq finalparms (cdr finalparms))
+         (setq parms (cdr parms)))
+       (setq traillist (calc-normalize (cons 'vec (nreverse traillist))))
+       (cond ((eq sdv 'calcFunc-efit)
+              (math-nlfit-enter-result 1 "efit" soln))
+             ((eq sdv 'calcFunc-xfit)
+              (let (sln)
+                (setq sln
+                      (list 'vec 
+                            soln 
+                            traillist
+                            (nth 1 sigmacovar)
+                            '(vec)
+                            (nth 0 fit)
+                            (let ((n (length xdata))
+                                  (m (length finalparms)))
+                              (if (and sdata (> n m))
+                                  (calcFunc-utpc (nth 0 fit) 
+                                                 (- n m))
+                                '(var nan var-nan)))))
+                (math-nlfit-enter-result 1 "xfit" sln)))
+             (t
+              (math-nlfit-enter-result 1 "fit" soln)))
+       (calc-record traillist "parm")))))
+
+(defun calc-fit-s-shaped-logistic-curve (arg)
+  (interactive "P")
+  (math-nlfit-fit-curve 'math-nlfit-s-logistic-fn
+                        'math-nlfit-s-logistic-grad
+                        'math-nlfit-s-logistic-solnexpr
+                        'math-nlfit-s-logistic-params
+                        arg))
+
+(defun calc-fit-bell-shaped-logistic-curve (arg)
+  (interactive "P")
+  (math-nlfit-fit-curve 'math-nlfit-b-logistic-fn
+                        'math-nlfit-b-logistic-grad
+                        'math-nlfit-b-logistic-solnexpr
+                        'math-nlfit-b-logistic-params
+                        arg))
+
+(defun calc-fit-hubbert-linear-curve (&optional sdv)
+  (calc-slow-wrapper
+   (let* ((sdevv (or (eq sdv 'calcFunc-efit) (eq sdv 'calcFunc-xfit)))
+          (calc-display-working-message nil)
+          (data (calc-top 1))
+          (qdata (cdr (car (cdr data))))
+          (pdata (cdr (car (cdr (cdr data)))))
+          (sdata (if (math-contains-sdev-p pdata)
+                     (mapcar (lambda (x) (math-get-sdev x t)) pdata)
+                   nil))
+          (pdata (mapcar (lambda (x) (math-get-value x)) pdata))
+          (poverqdata (mapcar* 'math-div pdata qdata))
+          (parmvals (math-nlfit-least-squares qdata poverqdata sdata sdevv))
+          (finalparms (list (nth 0 parmvals)
+                            (math-neg
+                             (math-div (nth 0 parmvals)
+                                       (nth 1 parmvals)))))
+          (calc-curve-varnames nil)
+          (calc-curve-coefnames nil)
+          (calc-curve-nvars 1)
+          (fitvars (calc-get-fit-variables 1 2))
+          (var (nth 1 calc-curve-varnames))
+          (parms (cdr calc-curve-coefnames))
+          (soln (list '* (nth 0 finalparms)
+                      (list '- 1
+                            (list '/ var (nth 1 finalparms))))))
+     (let ((calc-fit-to-trail t)
+           (traillist nil))
+       (setq traillist
+             (list 'vec
+                   (list 'calcFunc-eq (nth 0 parms) (nth 0 finalparms))
+                   (list 'calcFunc-eq (nth 1 parms) (nth 1 finalparms))))
+       (cond ((eq sdv 'calcFunc-efit)
+              (math-nlfit-enter-result 1 "efit" soln))
+             ((eq sdv 'calcFunc-xfit)
+              (let (sln
+                    (chisq
+                     (math-nlfit-chi-sq
+                      qdata poverqdata
+                      (list (nth 1 (nth 0 finalparms))
+                            (nth 1 (nth 1 finalparms)))
+                      (lambda (x a b)
+                        (math-mul a 
+                                  (math-sub
+                                   1
+                                   (math-div x b))))
+                      sdata)))
+                (setq sln
+                      (list 'vec 
+                            soln 
+                            traillist
+                            (nth 2 parmvals)
+                            (list
+                             'vec
+                             '(calcFunc-fitdummy 1)
+                             (list 'calcFunc-neg
+                                   (list '/
+                                         '(calcFunc-fitdummy 1)
+                                         '(calcFunc-fitdummy 2))))
+                            chisq
+                            (let ((n (length qdata)))
+                              (if (and sdata (> n 2))
+                                  (calcFunc-utpc 
+                                   chisq
+                                   (- n 2))
+                                '(var nan var-nan)))))
+                (math-nlfit-enter-result 1 "xfit" sln)))
+             (t
+              (math-nlfit-enter-result 1 "fit" soln)))
+       (calc-record traillist "parm")))))
+
+(provide 'calc-nlfit)
+
+;; arch-tag: 6eba3cd6-f48b-4a84-8174-10c15a024928
index e94a8e0c07a8b8a84cd937bc70507dbe1e570338..de2cf2e01660bfbfb2796778a4a7e2ac102a602a 100644 (file)
 
 
 (defun math-padded-polynomial (expr var deg)
+  "Return a polynomial as list of coefficients.
+If EXPR is of the form \"a + bx + cx^2 + ...\" in the variable VAR, return
+the list (a b c ...) with at least DEG elements, else return NIL."
   (let ((p (math-is-polynomial expr var deg)))
     (append p (make-list (- deg (length p)) 0))))
 
 (defun math-partial-fractions (r den var)
+  "Return R divided by DEN expressed in partial fractions of VAR.
+All whole factors of DEN have already been split off from R.
+If no partial fraction representation can be found, return nil."
   (let* ((fden (calcFunc-factors den var))
         (tdeg (math-polynomial-p den var))
         (fp fden)
index 4e048a9340e6bcba24f0a6e8245076c2bf3e40aa..4ceeeba3b4271e3b78def74468eb77b80e1936d3 100644 (file)
                          (set-buffer calc-buf)
                          (let ((calc-user-parse-tables nil)
                                (calc-language nil)
-                               (math-expr-opers math-standard-opers)
+                               (math-expr-opers (math-standard-ops))
                                (calc-hashes-used 0))
                            (math-read-expr
                             (if (string-match ",[ \t]*\\'" str)
index 75a1766174632b52e4d6e0836a5a250fb8f0eaa7..e439150814afba029913e56b96b1ba5bddbbe72c 100644 (file)
           (cond
            ((and (memq var '(var-e var-i var-pi var-phi var-gamma))
                  (eq (car-safe old) 'special-const))
-            (setq msg (format " (Note: Built-in definition of %s has been lost)" 
+            (setq msg (format " (Note: Built-in definition of %s has been lost)"
                               (calc-var-name var))))
            ((and (memq var '(var-inf var-uinf var-nan))
                  (null old))
     ()
   (setq calc-var-name-map (copy-keymap minibuffer-local-completion-map))
   (define-key calc-var-name-map " " 'self-insert-command)
-  (mapcar (function
-          (lambda (x)
-            (define-key calc-var-name-map (char-to-string x)
-              'calcVar-digit)))
-         "0123456789")
-  (mapcar (function
-          (lambda (x)
-            (define-key calc-var-name-map (char-to-string x)
-              'calcVar-oper)))
-         "+-*/^|"))
+  (mapc (function
+        (lambda (x)
+         (define-key calc-var-name-map (char-to-string x)
+           'calcVar-digit)))
+       "0123456789")
+  (mapc (function
+        (lambda (x)
+         (define-key calc-var-name-map (char-to-string x)
+           'calcVar-oper)))
+       "+-*/^|"))
 
 (defvar calc-store-opers)
 
 (defun calc-read-var-name (prompt &optional calc-store-opers)
   (setq calc-given-value nil
        calc-aborted-prefix nil)
-  (let ((var (concat 
+  (let ((var (concat
               "var-"
               (let ((minibuffer-completion-table
-                     (mapcar (lambda (x) (substring x 4)) 
+                     (mapcar (lambda (x) (substring x 4))
                              (all-completions "var-" obarray)))
-                    (minibuffer-completion-predicate 
+                    (minibuffer-completion-predicate
                      (lambda (x) (boundp (intern (concat "var-" x)))))
                     (minibuffer-completion-confirm t))
                 (read-from-minibuffer prompt nil calc-var-name-map nil)))))
    (unless (string= sconst "")
      (let ((value (cdr (assoc sconst sc))))
        (or var (setq var (calc-read-var-name
-                            (format "Copy special constant %s, to: " 
+                            (format "Copy special constant %s, to: "
                                     sconst))))
        (if var
            (let ((msg (calc-store-value var value "")))
         (or value
             (error "No such variable: \"%s\"" (calc-var-name var1)))
         (or var2 (setq var2 (calc-read-var-name
-                             (format "Copy variable: %s, to: " 
+                             (format "Copy variable: %s, to: "
                                       (calc-var-name var1)))))
         (if var2
             (let ((msg (calc-store-value var2 value "")))
index a1f50816519bf82da3f22c10870b0832ea09261a..5dcc5365d10af95f1908e31495171bf26659d4f3 100644 (file)
@@ -191,7 +191,7 @@ With a prefix, push that prefix as a number onto the stack."
         math-eval-rules-cache-tag t
         math-format-date-cache nil
         math-holidays-cache-tag t)
-   (mapcar (function (lambda (x) (set x -100))) math-cache-list)
+   (mapc (function (lambda (x) (set x -100))) math-cache-list)
    (unless inhibit-msg
      (message "All internal calculator caches have been reset"))))
 
index 82769a66b13e83a4012916716b39173a28841d2e..839bac77581db2d0d807ea36928da85843b86e6e 100644 (file)
 ;;; with some additions by Przemek Klosowski (przemek@rrdstrad.nist.gov)
 ;;; Updated April 2002 by Jochen Küpper
 
-;;; for CODATA 1998 see one of
-;;; - Journal of Physical and Chemical Reference Data, 28(6), 1713-1852, 1999.
-;;; - Reviews of Modern Physics, 72(2), 351-495, 2000.
-;;; for CODATA 2005 see
-;;; - http://physics.nist.gov/cuu/Constants/index.html
+;;; Updated August 2007, using
+;;;     CODATA (http://physics.nist.gov/cuu/Constants/index.html)
+;;;     NIST   (http://physics.nist.gov/Pubs/SP811/appenB9.html)
+;;;     ESUWM  (Encyclopaedia of Scientific Units, Weights and
+;;;             Measures, by François Cardarelli)
+;;; All conversions are exact unless otherwise noted.
 
 (defvar math-standard-units
   '( ;; Length
     ( m       nil                    "*Meter" )
-    ( in      "2.54 cm"           "Inch" )
+    ( in      "254*10^(-2) cm"       "Inch" )
     ( ft      "12 in"                "Foot" )
     ( yd      "3 ft"                 "Yard" )
     ( mi      "5280 ft"              "Mile" )
-    ( au      "149597870691 m"       "Astronomical Unit" ) ;; NASA JPL (http://neo.jpl.nasa.gov/glossary/au.html)
-    ( lyr     "9460536207068016 m"   "Light Year" )
-    ( pc      "206264.80625 au"      "Parsec" )
+    ( au      "149597870691. m"      "Astronomical Unit" )
+              ;; (approx) NASA JPL (http://neo.jpl.nasa.gov/glossary/au.html)
+    ( lyr     "c yr"                 "Light Year" )
+    ( pc      "3.0856775854e16 m"    "Parsec" ) ;; (approx) ESUWM
     ( nmi     "1852 m"               "Nautical Mile" )
     ( fath    "6 ft"                 "Fathom" )
     ( mu      "1 um"                 "Micron" )
     ( mil     "in/1000"              "Mil" )
     ( point   "in/72"                "Point (1/72 inch)" )
-    ( Ang     "1e-10 m"              "Angstrom" )
+    ( Ang     "10^(-10) m"           "Angstrom" )
     ( mfi     "mi+ft+in"             "Miles + feet + inches" )
     ;; TeX lengths
-    ( texpt   "in/72.27"             "Point (TeX conventions)" )
+    ( texpt   "(100/7227) in"        "Point (TeX conventions)" )
     ( texpc   "12 texpt"             "Pica" )
     ( texbp   "point"                "Big point (TeX conventions)" )
-    ( texdd   "1238/1157 texpt"      "Didot point" )
+    ( texdd   "(1238/1157) texpt"    "Didot point" )
     ( texcc   "12 texdd"             "Cicero" )
-    ( texsp   "1/66536 texpt"        "Scaled TeX point" )
+    ( texsp   "(1/65536) texpt"      "Scaled TeX point" )
 
     ;; Area
     ( hect    "10000 m^2"            "*Hectare" )
     ( a       "100 m^2"              "Are")
     ( acre    "mi^2 / 640"           "Acre" )
-    ( b       "1e-28 m^2"            "Barn" )
+    ( b       "10^(-28) m^2"         "Barn" )
 
     ;; Volume
-    ( L       "1e-3 m^3"             "*Liter" )
+    ( L       "10^(-3) m^3"          "*Liter" )
     ( l       "L"                    "Liter" )
     ( gal     "4 qt"                 "US Gallon" )
     ( qt      "2 pt"                 "Quart" )
     ( ozfl    "2 tbsp"               "Fluid Ounce" )
     ( floz    "2 tbsp"               "Fluid Ounce" )
     ( tbsp    "3 tsp"                "Tablespoon" )
-    ( tsp     "4.92892159375 ml"     "Teaspoon" )
+    ;; ESUWM defines a US gallon as 231 in^3.
+    ;; That gives the following exact value for tsp.
+    ( tsp     "492892159375*10^(-11) ml" "Teaspoon" )
     ( vol     "tsp+tbsp+ozfl+cup+pt+qt+gal" "Gallons + ... + teaspoons" )
-    ( galC    "4.54609 L"            "Canadian Gallon" )
-    ( galUK   "4.546092 L"           "UK Gallon" )
+    ( galC    "galUK"                "Canadian Gallon" )
+    ( galUK   "454609*10^(-5) L"     "UK Gallon" ) ;; NIST
 
     ;; Time
     ( s       nil                    "*Second" )
     ( day     "24 hr"                "Day" )
     ( wk      "7 day"                "Week" )
     ( hms     "wk+day+hr+min+s"      "Hours, minutes, seconds" )
-    ( yr      "365.25 day"           "Year" )
+    ( yr      "365.25 day"           "Year" ) ;; (approx, but keep)
     ( Hz      "1/s"                  "Hertz" )
 
     ;; Speed
     ( mph     "mi/hr"                "*Miles per hour" )
     ( kph     "km/hr"                "Kilometers per hour" )
     ( knot    "nmi/hr"               "Knot" )
-    ( c       "299792458 m/s"        "Speed of light" ) ;;; CODATA 2005
+    ( c       "299792458 m/s"        "Speed of light" ) ;;; CODATA
 
     ;; Acceleration
-    ( ga      "9.80665 m/s^2"        "*\"g\" acceleration" ) ;; CODATA 2005
+    ( ga      "980665*10^(-5) m/s^2" "*\"g\" acceleration" ) ;; CODATA
 
     ;; Mass
     ( g       nil                    "*Gram" )
     ( lb      "16 oz"                "Pound (mass)" )
-    ( oz      "28.349523125 g"       "Ounce (mass)" )
+    ( oz      "28349523125*10^(-9) g" "Ounce (mass)" ) ;; ESUWM
     ( ton     "2000 lb"              "Ton" )
     ( tpo     "ton+lb+oz"            "Tons + pounds + ounces (mass)" )
     ( t       "1000 kg"              "Metric ton" )
-    ( tonUK   "1016.0469088 kg"      "UK ton" )
+    ( tonUK   "10160469088*10^(-7) kg" "UK ton" ) ;; ESUWM
     ( lbt     "12 ozt"               "Troy pound" )
-    ( ozt     "31.103475 g"          "Troy ounce" )
-    ( ct      ".2 g"                 "Carat" )
-    ( u       "1.66053886e-27 kg"    "Unified atomic mass" ) ;; CODATA 2005
+    ( ozt     "31.10347680 g"        "Troy ounce" ) ;; (approx) ESUWM
+    ( ct      "(2/10) g"             "Carat" ) ;; ESUWM
+    ( u       "1.660538782e-27 kg"    "Unified atomic mass" );;(approx) CODATA
 
     ;; Force
     ( N       "m kg/s^2"             "*Newton" )
-    ( dyn     "1e-5 N"               "Dyne" )
+    ( dyn     "10^(-5) N"            "Dyne" )
     ( gf      "ga g"                 "Gram (force)" )
-    ( lbf     "4.44822161526 N"      "Pound (force)" )
+    ( lbf     "ga lb"                "Pound (force)" )
     ( kip     "1000 lbf"             "Kilopound (force)" )
-    ( pdl     "0.138255 N"           "Poundal" )
+    ( pdl     "138254954376*10^(-12) N" "Poundal" ) ;; ESUWM
 
     ;; Energy
     ( J       "N m"                  "*Joule" )
-    ( erg     "1e-7 J"               "Erg" )
-    ( cal     "4.1868 J"             "International Table Calorie" )
-    ( Btu     "1055.05585262 J"      "International Table Btu" )
+    ( erg     "10^(-7) J"            "Erg" )
+    ( cal     "4.18674 J"            "International Table Calorie" );;(approx) ESUWM
+    ( Btu     "105505585262*10^(-8) J" "International Table Btu" ) ;; ESUWM
     ( eV      "ech V"                "Electron volt" )
     ( ev      "eV"                   "Electron volt" )
     ( therm   "105506000 J"          "EEC therm" )
 
     ;; Power
     ( W       "J/s"                  "*Watt" )
-    ( hp      "745.7 W"              "Horsepower" )
+    ( hp      "745.699871581 W"      "Horsepower" ) ;;(approx) ESUWM
 
     ;; Temperature
     ( K       nil                    "*Degree Kelvin"     K )
 
     ;; Pressure
     ( Pa      "N/m^2"                "*Pascal" )
-    ( bar     "1e5 Pa"               "Bar" )
-    ( atm     "101325 Pa"            "Standard atmosphere" ) ;; CODATA 2005
-    ( Torr    " 1.333224e2 Pa"       "Torr" ) ;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
+    ( bar     "10^5 Pa"              "Bar" )
+    ( atm     "101325 Pa"            "Standard atmosphere" ) ;; CODATA
+    ( Torr    "1.333224e2 Pa"        "Torr" ) ;;(approx) NIST
     ( mHg     "1000 Torr"            "Meter of mercury" )
-    ( inHg    "25.4 mmHg"            "Inch of mercury" )
-    ( inH2O   "2.490889e2 Pa"        "Inch of water" ) ;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
-    ( psi     "6894.75729317 Pa"     "Pound per square inch" )
+    ( inHg    "254*10^(-1) mmHg"     "Inch of mercury" )
+    ( inH2O   "2.490889e2 Pa"        "Inch of water" ) ;;(approx) NIST
+    ( psi     "lbf/in^2"             "Pounds per square inch" )
 
     ;; Viscosity
-    ( P       "0.1 Pa s"              "*Poise" )
-    ( St      "1e-4 m^2/s"            "Stokes" )
+    ( P       "(1/10) Pa s"           "*Poise" )
+    ( St      "10^(-4) m^2/s"         "Stokes" )
 
     ;; Electromagnetism
     ( A       nil                     "*Ampere" )
     ( C       "A s"                   "Coulomb" )
     ( Fdy     "ech Nav"               "Faraday" )
-    ( e       "1.60217653e-19 C"      "Elementary charge" ) ;; CODATA 2005
-    ( ech     "1.60217653e-19 C"      "Elementary charge" ) ;; CODATA 2005
+    ( e       "ech"                   "Elementary charge" )
+    ( ech     "1.602176487e-19 C"     "Elementary charge" ) ;;(approx) CODATA
     ( V       "W/A"                   "Volt" )
     ( ohm     "V/A"                   "Ohm" )
     ( mho     "A/V"                   "Mho" )
     ( F       "C/V"                   "Farad" )
     ( H       "Wb/A"                  "Henry" )
     ( T       "Wb/m^2"                "Tesla" )
-    ( Gs      "1e-4 T"                "Gauss" )
+    ( Gs      "10^(-4) T"             "Gauss" )
     ( Wb      "V s"                   "Weber" )
 
     ;; Luminous intensity
     ( cd      nil                     "*Candela" )
-    ( sb      "1e4 cd/m^2"            "Stilb" )
+    ( sb      "10000 cd/m^2"          "Stilb" )
     ( lm      "cd sr"                 "Lumen" )
     ( lx      "lm/m^2"                "Lux" )
-    ( ph      "1e4 lx"                "Phot" )
-    ( fc      "10.76391 lx"           "Footcandle" ) ;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
-    ( lam     "1e4 lm/m^2"            "Lambert" )
-    ( flam    "3.426259 cd/m^2"       "Footlambert" ) ;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
+    ( ph      "10000 lx"              "Phot" )
+    ( fc      "10.76391 lx"           "Footcandle" ) ;;(approx) NIST
+    ( lam     "10000 lm/m^2"          "Lambert" )
+    ( flam    "3.426259 cd/m^2"       "Footlambert" ) ;;(approx) NIST
 
     ;; Radioactivity
     ( Bq      "1/s"                    "*Becquerel" )
-    ( Ci      "3.7e10 Bq"              "Curie" )
+    ( Ci      "37*10^9 Bq"             "Curie" ) ;; ESUWM
     ( Gy      "J/kg"                   "Gray" )
     ( Sv      "Gy"                     "Sievert" )
-    ( R       "2.58e-4 C/kg"           "Roentgen" )
-    ( rd      ".01 Gy"                 "Rad" )
+    ( R       "258*10^(-6) C/kg"       "Roentgen" ) ;; NIST
+    ( rd      "(1/100) Gy"             "Rad" )
     ( rem     "rd"                     "Rem" )
 
     ;; Amount of substance
     ( sr      nil                      "*Steradian" )
 
     ;; Other physical quantities
-    ( h       "6.6260693e-34 J s"     "*Planck's constant" ) ;; CODATA 2005
-    ( hbar    "h / 2 pi"               "Planck's constant" )
-    ( mu0     "4 pi 1e-7 H/m"          "Permeability of vacuum" )
-    ( G       "6.6742e-11 m^3/kg^1/s^2" "Gravitational constant" ) ;; CODATA 2005
-    ( Nav     "6.02214115e23 / mol"    "Avagadro's constant" ) ;; CODATA 2005
-    ( me      "9.1093826e-31 kg"       "Electron rest mass" ) ;; CODATA 2005
-    ( mp      "1.67262171e-27 kg"      "Proton rest mass" ) ;; CODATA 2005
-    ( mn      "1.67492728e-27 kg"      "Neutron rest mass" ) ;; CODATA 2005
-    ( mmu     "1.88353140e-28 kg"      "Muon rest mass" ) ;; CODATA 2005
-    ( Ryd     "10973731.568525 /m"     "Rydberg's constant" ) ;; CODATA 2005
-    ( k       "1.3806505e-23 J/K"      "Boltzmann's constant" ) ;; CODATA 2005
-    ( alpha   "7.297352568e-3"         "Fine structure constant" ) ;; CODATA 2005
-    ( muB     "927.400949e-26 J/T"     "Bohr magneton" ) ;; CODATA 2005
-    ( muN     "5.05078343e-27 J/T"     "Nuclear magneton" ) ;; CODATA 2005
-    ( mue     "-928.476412e-26 J/T"    "Electron magnetic moment" ) ;; CODATA 2005
-    ( mup     "1.41060671e-26 J/T"     "Proton magnetic moment" ) ;; CODATA 2005
-    ( R0      "8.314472 J/mol/K"       "Molar gas constant" ) ;; CODATA 2005
+    ;; The values are from CODATA, and are approximate.
+    ( h       "6.62606896e-34 J s"     "*Planck's constant" )
+    ( hbar    "h / (2 pi)"             "Planck's constant" )
+    ( mu0     "4 pi 10^(-7) H/m"       "Permeability of vacuum" )
+    ( G       "6.67428e-11 m^3/(kg s^2)" "Gravitational constant" )
+    ( Nav     "6.02214179e23 / mol"    "Avagadro's constant" )
+    ( me      "9.10938215e-31 kg"      "Electron rest mass" )
+    ( mp      "1.672621637e-27 kg"     "Proton rest mass" )
+    ( mn      "1.674927211e-27 kg"     "Neutron rest mass" )
+    ( mmu     "1.88353130e-28 kg"      "Muon rest mass" )
+    ( Ryd     "10973731.568527 /m"     "Rydberg's constant" )
+    ( k       "1.3806504e-23 J/K"      "Boltzmann's constant" )
+    ( alpha   "7.2973525376e-3"         "Fine structure constant" )
+    ( muB     "927.400915e-26 J/T"     "Bohr magneton" )
+    ( muN     "5.05078324e-27 J/T"     "Nuclear magneton" )
+    ( mue     "-928.476377e-26 J/T"    "Electron magnetic moment" )
+    ( mup     "1.410606662e-26 J/T"    "Proton magnetic moment" )
+    ( R0      "8.314472 J/(mol K)"     "Molar gas constant" )
     ( V0      "22.710981e-3 m^3/mol"   "Standard volume of ideal gas" )))
 
 
@@ -255,35 +260,35 @@ If this is changed, be sure to set math-units-table to nil to ensure
 that the combined units table will be rebuilt.")
 
 (defvar math-unit-prefixes
-  '( ( ?Y  (float 1 24)  "Yotta"  )
-     ( ?Z  (float 1 21)  "Zetta"  )
-     ( ?E  (float 1 18)  "Exa"    )
-     ( ?P  (float 1 15)  "Peta"   )
-     ( ?T  (float 1 12)  "Tera"          )
-     ( ?G  (float 1 9)   "Giga"          )
-     ( ?M  (float 1 6)   "Mega"          )
-     ( ?k  (float 1 3)   "Kilo"          )
-     ( ?K  (float 1 3)   "Kilo"          )
-     ( ?h  (float 1 2)   "Hecto"  )
-     ( ?H  (float 1 2)   "Hecto"  )
-     ( ?D  (float 1 1)   "Deka"          )
-     ( 0   (float 1 0)   nil      )
-     ( ?d  (float 1 -1)  "Deci"          )
-     ( ?c  (float 1 -2)  "Centi"  )
-     ( ?m  (float 1 -3)  "Milli"  )
-     ( ?u  (float 1 -6)  "Micro"  )
-     ( ?n  (float 1 -9)  "Nano"          )
-     ( ?p  (float 1 -12) "Pico"          )
-     ( ?f  (float 1 -15) "Femto"  )
-     ( ?a  (float 1 -18) "Atto"   )
-     ( ?z  (float 1 -21) "zepto"  )
-     ( ?y  (float 1 -24) "yocto"  )))
+  '( ( ?Y  (^ 10 24)  "Yotta"  )
+     ( ?Z  (^ 10 21)  "Zetta"  )
+     ( ?E  (^ 10 18)  "Exa"    )
+     ( ?P  (^ 10 15)  "Peta"   )
+     ( ?T  (^ 10 12)  "Tera"   )
+     ( ?G  (^ 10 9)   "Giga"   )
+     ( ?M  (^ 10 6)   "Mega"   )
+     ( ?k  (^ 10 3)   "Kilo"   )
+     ( ?K  (^ 10 3)   "Kilo"   )
+     ( ?h  (^ 10 2)   "Hecto"  )
+     ( ?H  (^ 10 2)   "Hecto"  )
+     ( ?D  (^ 10 1)   "Deka"   )
+     ( 0   (^ 10 0)    nil     )
+     ( ?d  (^ 10 -1)  "Deci"   )
+     ( ?c  (^ 10 -2)  "Centi"  )
+     ( ?m  (^ 10 -3)  "Milli"  )
+     ( ?u  (^ 10 -6)  "Micro"  )
+     ( ?n  (^ 10 -9)  "Nano"   )
+     ( ?p  (^ 10 -12) "Pico"   )
+     ( ?f  (^ 10 -15) "Femto"  )
+     ( ?a  (^ 10 -18) "Atto"   )
+     ( ?z  (^ 10 -21) "zepto"  )
+     ( ?y  (^ 10 -24) "yocto"  )))
 
 (defvar math-standard-units-systems
   '( ( base  nil )
-     ( si    ( ( g   '(* (var kg var-kg) (float 1 -3)) ) ) )
-     ( mks   ( ( g   '(* (var kg var-kg) (float 1 -3)) ) ) )
-     ( cgs   ( ( m   '(* (var cm var-cm) 100         ) ) ) )))
+     ( si    ( ( g   '(/ (var kg var-kg) 1000) ) ) )
+     ( mks   ( ( g   '(/ (var kg var-kg) 1000) ) ) )
+     ( cgs   ( ( m   '(* (var cm var-cm) 100 ) ) ) )))
 
 (defvar math-units-table nil
   "Internal units table derived from math-defined-units.
@@ -321,13 +326,67 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
                          (math-simplify-units
                           (math-mul expr (nth pos units))))))))
 
+(defun math-get-standard-units (expr)
+  "Return the standard units in EXPR."
+  (math-simplify-units
+   (math-extract-units
+    (math-to-standard-units expr nil))))
+
+(defun math-get-units (expr)
+  "Return the units in EXPR."
+  (math-simplify-units
+   (math-extract-units expr)))
+
+(defun math-make-unit-string (expr)
+  "Return EXPR in string form.
+If EXPR is nil, return nil."
+  (if expr
+      (let ((cexpr (math-compose-expr expr 0)))
+        (replace-regexp-in-string
+         " / " "/"
+         (if (stringp cexpr)
+             cexpr
+           (math-composition-to-string cexpr))))))
+
+(defvar math-default-units-table
+  (make-hash-table :test 'equal)
+  "A table storing previously converted units.")
+
+(defun math-get-default-units (expr)
+  "Get default units to use when converting the units in EXPR."
+  (let* ((units (math-get-units expr))
+         (standard-units (math-get-standard-units expr))
+         (default-units (gethash
+                         standard-units
+                         math-default-units-table)))
+    (if (equal units (car default-units))
+        (math-make-unit-string (cadr default-units))
+      (math-make-unit-string (car default-units)))))
+
+(defun math-put-default-units (expr)
+  "Put the units in EXPR in the default units table."
+  (let* ((units (math-get-units expr))
+         (standard-units (math-get-standard-units expr))
+         (default-units (gethash
+                         standard-units
+                         math-default-units-table)))
+    (cond
+     ((not default-units)
+      (puthash standard-units (list units) math-default-units-table))
+     ((not (equal units (car default-units)))
+      (puthash standard-units
+               (list units (car default-units))
+               math-default-units-table)))))
+
+
 (defun calc-convert-units (&optional old-units new-units)
   (interactive)
   (calc-slow-wrapper
    (let ((expr (calc-top-n 1))
         (uoldname nil)
         unew
-         units)
+         units
+         defunits)
      (unless (math-units-in-expr-p expr t)
        (let ((uold (or old-units
                       (progn
@@ -343,16 +402,31 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
           (error "Bad format in units expression: %s" (nth 1 uold)))
         (setq expr (math-mul expr uold))))
      (unless new-units
-       (setq new-units (read-string (if uoldname
-                                       (concat "Old units: "
-                                               uoldname
-                                               ", new units: ")
-                                     "New units: "))))
+       (setq defunits (math-get-default-units expr))
+       (setq new-units
+             (read-string (concat
+                           (if uoldname
+                               (concat "Old units: "
+                                       uoldname
+                                       ", new units")
+                            "New units")
+                           (if defunits
+                               (concat
+                                " (default "
+                                defunits
+                                "): ")
+                             ": "))))
+
+       (if (and
+            (string= new-units "")
+            defunits)
+           (setq new-units defunits)))
      (when (string-match "\\` */" new-units)
        (setq new-units (concat "1" new-units)))
      (setq units (math-read-expr new-units))
      (when (eq (car-safe units) 'error)
        (error "Bad format in units expression: %s" (nth 2 units)))
+     (math-put-default-units units)
      (let ((unew (math-units-in-expr-p units t))
           (std (and (eq (car-safe units) 'var)
                     (assq (nth 1 units) math-standard-units-systems))))
@@ -381,7 +455,8 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
    (let ((expr (calc-top-n 1))
         (uold nil)
         (uoldname nil)
-        unew)
+        unew
+         defunits)
      (setq uold (or old-units
                    (let ((units (math-single-units-in-expr-p expr)))
                      (if units
@@ -398,15 +473,24 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
        (error "Bad format in units expression: %s" (nth 2 uold)))
      (or (math-units-in-expr-p expr nil)
         (setq expr (math-mul expr uold)))
+     (setq defunits (math-get-default-units expr))
      (setq unew (or new-units
                    (math-read-expr
-                    (read-string (if uoldname
-                                     (concat "Old temperature units: "
-                                             uoldname
-                                             ", new units: ")
-                                   "New temperature units: ")))))
+                    (read-string
+                      (concat
+                       (if uoldname
+                           (concat "Old temperature units: "
+                                   uoldname
+                                   ", new units")
+                         "New temperature units")
+                       (if defunits
+                           (concat " (default "
+                                   defunits
+                                   "): ")
+                         ": "))))))
      (when (eq (car-safe unew) 'error)
        (error "Bad format in units expression: %s" (nth 2 unew)))
+     (math-put-default-units unew)
      (calc-enter-result 1 "cvtm" (math-simplify-units
                                  (math-convert-temperature expr uold unew
                                                            uoldname))))))
@@ -423,7 +507,7 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
    (calc-enter-result 1 "rmun" (math-simplify-units
                                (math-extract-units (calc-top-n 1))))))
 
-;; The variables calc-num-units and calc-den-units are local to 
+;; The variables calc-num-units and calc-den-units are local to
 ;; calc-explain-units, but are used by calc-explain-units-rec,
 ;; which is called by calc-explain-units.
 (defvar calc-num-units)
@@ -668,7 +752,7 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
                                        (list (cons (car x) 1))))))
                          combined-units))
        (let ((math-units-table tab))
-         (mapcar 'math-find-base-units tab))
+         (mapc 'math-find-base-units tab))
        (message "Building units table...done")
        (setq math-units-table tab))))
 
@@ -710,7 +794,7 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
                     (old (assq (car (car ulist)) math-fbu-base)))
                 (if old
                     (setcdr old (+ (cdr old) p))
-                  (setq math-fbu-base 
+                  (setq math-fbu-base
                          (cons (cons (car (car ulist)) p) math-fbu-base))))
               (setq ulist (cdr ulist)))))
          ((math-scalarp expr))
@@ -904,8 +988,8 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
           (if (equal (nth 4 math-fcu-u) (nth 4 u2))
               (cons expr pow))))))
 
-;; The variables math-cu-new-units and math-cu-pure are local to 
-;; math-convert-units, but are used by math-convert-units-rec, 
+;; The variables math-cu-new-units and math-cu-pure are local to
+;; math-convert-units, but are used by math-convert-units-rec,
 ;; which is called by math-convert-units.
 (defvar math-cu-new-units)
 (defvar math-cu-pure)
@@ -917,7 +1001,7 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
         (if (eq (car-safe (nth 1 unew)) '+)
             (setq math-cu-new-units (nth 1 unew)))))
   (math-with-extra-prec 2
-    (let ((compat (and (not math-cu-pure) 
+    (let ((compat (and (not math-cu-pure)
                        (math-find-compatible-unit expr math-cu-new-units)))
          (math-cu-unit-list nil)
          (math-combining-units nil))
@@ -944,7 +1028,7 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
 
 (defun math-convert-units-rec (expr)
   (if (math-units-in-expr-p expr nil)
-      (math-apply-units (math-to-standard-units 
+      (math-apply-units (math-to-standard-units
                          (list '/ expr math-cu-new-units) nil)
                        math-cu-new-units math-cu-unit-list math-cu-pure)
     (if (Math-primp expr)
@@ -971,17 +1055,17 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
                                                     (symbol-name v)))))))
     (or (eq (nth 3 uold) (nth 3 unew))
        (cond ((eq (nth 3 uold) 'K)
-              (setq expr (list '- expr '(float 27315 -2)))
+              (setq expr (list '- expr '(/ 27315 100)))
               (if (eq (nth 3 unew) 'F)
-                  (setq expr (list '+ (list '* expr '(frac 9 5)) 32))))
+                  (setq expr (list '+ (list '* expr '(/ 9 5)) 32))))
              ((eq (nth 3 uold) 'C)
               (if (eq (nth 3 unew) 'F)
-                  (setq expr (list '+ (list '* expr '(frac 9 5)) 32))
-                (setq expr (list '+ expr '(float 27315 -2)))))
+                  (setq expr (list '+ (list '* expr '(/ 9 5)) 32))
+                (setq expr (list '+ expr '(/ 27315 100)))))
              (t
-              (setq expr (list '* (list '- expr 32) '(frac 5 9)))
+              (setq expr (list '* (list '- expr 32) '(/ 5 9)))
               (if (eq (nth 3 unew) 'K)
-                  (setq expr (list '+ expr '(float 27315 -2)))))))
+                  (setq expr (list '+ expr '(/ 27315 100)))))))
     (if pure
        expr
       (list '* expr new))))
@@ -1009,7 +1093,7 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
               (calc-record-why "*Inconsistent units" math-simplify-expr)
               math-simplify-expr)
           (list '* (math-add (math-remove-units (nth 1 math-simplify-expr))
-                             (if (eq (car math-simplify-expr) '-) 
+                             (if (eq (car math-simplify-expr) '-)
                                   (math-neg ratio) ratio))
                 units)))))
 
@@ -1103,7 +1187,7 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
         (math-simplify-units-divisor np (cdr (cdr math-simplify-expr)))
         (if (eq math-try-cancel-units 0)
             (let* ((math-simplifying-units nil)
-                   (base (math-simplify 
+                   (base (math-simplify
                            (math-to-standard-units math-simplify-expr nil))))
               (if (Math-numberp base)
                   (setq math-simplify-expr base))))
@@ -1159,11 +1243,11 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
        (math-realp (nth 2 math-simplify-expr))
        (if (memq (car-safe (nth 1 math-simplify-expr)) '(* /))
           (list (car (nth 1 math-simplify-expr))
-                (list '^ (nth 1 (nth 1 math-simplify-expr)) 
+                (list '^ (nth 1 (nth 1 math-simplify-expr))
                        (nth 2 math-simplify-expr))
-                (list '^ (nth 2 (nth 1 math-simplify-expr)) 
+                (list '^ (nth 2 (nth 1 math-simplify-expr))
                        (nth 2 math-simplify-expr)))
-        (math-simplify-units-pow (nth 1 math-simplify-expr) 
+        (math-simplify-units-pow (nth 1 math-simplify-expr)
                                   (nth 2 math-simplify-expr)))))
 
 (math-defsimplify calcFunc-sqrt
index c6ea1378e964f5dda58a92ae631303e715adc93e..d83321eb8a10ec9a8b21b813188facf9c18f7df0 100644 (file)
@@ -559,7 +559,7 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
          (aset str pos ?\,)))
     (switch-to-buffer calc-original-buffer)
     (let ((vals (let ((calc-language nil)
-                     (math-expr-opers math-standard-opers))
+                     (math-expr-opers (math-standard-ops)))
                  (and (string-match "[^\n\t ]" str)
                       (math-read-exprs str)))))
       (when (eq (car-safe vals) 'error)
index 5f95deb3c6423bf1d09a3832415a2af9bde85129..913b02e003fb92212c0e099e540df6196fc09263 100644 (file)
   :group  'applications)
 
 ;;;###autoload
-(defcustom calc-settings-file 
+(defcustom calc-settings-file
   (convert-standard-filename "~/.calc.el")
   "*File in which to record permanent settings."
   :group 'calc
     (c-mode . c)
     (c++-mode . c)
     (fortran-mode . fortran)
-    (f90-mode . fortran))
+    (f90-mode . fortran)
+    (texinfo-mode . calc-normal-language))
   "*Alist of major modes with appropriate Calc languages."
   :group 'calc
-  :type '(alist :key-type (symbol :tag "Major mode") 
+  :type '(alist :key-type (symbol :tag "Major mode")
                 :value-type (symbol :tag "Calc language")))
 
-(defcustom calc-embedded-announce-formula 
+(defcustom calc-embedded-announce-formula
   "%Embed\n\\(% .*\n\\)*"
   "*A regular expression which is sure to be followed by a calc-embedded formula."
   :group 'calc
   :type '(alist :key-type (symbol :tag "Major mode")
                 :value-type (regexp :tag "Regexp to announce formula")))
 
-(defcustom calc-embedded-open-formula 
+(defcustom calc-embedded-open-formula
   "\\`\\|^\n\\|\\$\\$?\\|\\\\\\[\\|^\\\\begin[^{].*\n\\|^\\\\begin{.*[^x]}.*\n\\|^@.*\n\\|^\\.EQ.*\n\\|\\\\(\\|^%\n\\|^\\.\\\\\"\n"
   "*A regular expression for the opening delimiter of a formula used by calc-embedded."
   :group 'calc
   :type '(regexp))
 
-(defcustom calc-embedded-close-formula 
+(defcustom calc-embedded-close-formula
   "\\'\\|\n$\\|\\$\\$?\\|\\\\]\\|^\\\\end[^{].*\n\\|^\\\\end{.*[^x]}.*\n\\|^@.*\n\\|^\\.EN.*\n\\|\\\\)\\|\n%\n\\|^\\.\\\\\"\n"
   "*A regular expression for the closing delimiter of a formula used by calc-embedded."
   :group 'calc
                 :value-type (list (regexp :tag "Opening formula delimiter")
                                   (regexp :tag "Closing formula delimiter"))))
 
-(defcustom calc-embedded-open-word 
+(defcustom calc-embedded-open-word
   "^\\|[^-+0-9.eE]"
   "*A regular expression for the opening delimiter of a formula used by calc-embedded-word."
   :group 'calc
   :type '(regexp))
 
-(defcustom calc-embedded-close-word 
+(defcustom calc-embedded-close-word
   "$\\|[^-+0-9.eE]"
   "*A regular expression for the closing delimiter of a formula used by calc-embedded-word."
   :group 'calc
                 :value-type (list (regexp :tag "Opening word delimiter")
                                   (regexp :tag "Closing word delimiter"))))
 
-(defcustom calc-embedded-open-plain 
+(defcustom calc-embedded-open-plain
   "%%% "
   "*A string which is the opening delimiter for a \"plain\" formula.
 If calc-show-plain mode is enabled, this is inserted at the front of
@@ -306,7 +307,7 @@ each formula."
   :group 'calc
   :type '(string))
 
-(defcustom calc-embedded-close-plain 
+(defcustom calc-embedded-close-plain
   " %%%\n"
   "*A string which is the closing delimiter for a \"plain\" formula.
 See calc-embedded-open-plain."
@@ -331,13 +332,13 @@ See calc-embedded-open-plain."
                 :value-type (list (string :tag "Opening \"plain\" delimiter")
                                   (string :tag "Closing \"plain\" delimiter"))))
 
-(defcustom calc-embedded-open-new-formula 
+(defcustom calc-embedded-open-new-formula
   "\n\n"
   "*A string which is inserted at front of formula by calc-embedded-new-formula."
   :group 'calc
   :type '(string))
 
-(defcustom calc-embedded-close-new-formula 
+(defcustom calc-embedded-close-new-formula
   "\n\n"
   "*A string which is inserted at end of formula by calc-embedded-new-formula."
   :group 'calc
@@ -351,14 +352,14 @@ See calc-embedded-open-plain."
                 :value-type (list (string :tag "Opening new formula delimiter")
                                   (string :tag "Closing new formula delimiter"))))
 
-(defcustom calc-embedded-open-mode 
+(defcustom calc-embedded-open-mode
   "% "
   "*A string which should precede calc-embedded mode annotations.
 This is not required to be present for user-written mode annotations."
   :group 'calc
   :type '(string))
 
-(defcustom calc-embedded-close-mode 
+(defcustom calc-embedded-close-mode
   "\n"
   "*A string which should follow calc-embedded mode annotations.
 This is not required to be present for user-written mode annotations."
@@ -383,24 +384,31 @@ This is not required to be present for user-written mode annotations."
                 :value-type (list (string :tag "Opening annotation delimiter")
                                   (string :tag "Closing annotation delimiter"))))
 
-(defcustom calc-gnuplot-name 
+(defcustom calc-gnuplot-name
   "gnuplot"
   "*Name of GNUPLOT program, for calc-graph features."
   :group 'calc
   :type '(string))
 
-(defcustom calc-gnuplot-plot-command 
+(defcustom calc-gnuplot-plot-command
   nil
   "*Name of command for displaying GNUPLOT output; %s = file name to print."
   :group 'calc
   :type '(choice (string) (sexp)))
 
-(defcustom calc-gnuplot-print-command 
+(defcustom calc-gnuplot-print-command
   "lp %s"
   "*Name of command for printing GNUPLOT output; %s = file name to print."
   :group 'calc
   :type '(choice (string) (sexp)))
 
+(defcustom calc-multiplication-has-precedence
+  t
+  "*If non-nil, multiplication has precedence over division
+in normal mode."
+  :group 'calc
+  :type 'boolean)
+
 (defvar calc-bug-address "jay.p.belanger@gmail.com"
   "Address of the maintainer of Calc, for use by `report-calc-bug'.")
 
@@ -512,7 +520,7 @@ This is used only when calc-group-digits mode is on.")
 
 (defcalcmodevar calc-point-char "."
   "The character (in the form of a string) to be used as a decimal point.")
-  
+
 (defcalcmodevar calc-frac-format '(":" nil)
   "Format of displayed fractions; a string of one or two of \":\" or \"/\".")
 
@@ -702,9 +710,9 @@ If nil, selections displayed but ignored.")
     "YYddd< hh:mm:ss>"))
 
 (defcalcmodevar calc-autorange-units nil)
-  
+
 (defcalcmodevar calc-was-keypad-mode nil)
-  
+
 (defcalcmodevar calc-full-mode nil)
 
 (defcalcmodevar calc-user-parse-tables nil)
@@ -714,7 +722,7 @@ If nil, selections displayed but ignored.")
 (defcalcmodevar calc-gnuplot-default-output "STDOUT")
 
 (defcalcmodevar calc-gnuplot-print-device "postscript")
-  
+
 (defcalcmodevar calc-gnuplot-print-output "auto")
 
 (defcalcmodevar calc-gnuplot-geometry nil)
@@ -722,7 +730,7 @@ If nil, selections displayed but ignored.")
 (defcalcmodevar calc-graph-default-resolution 15)
 
 (defcalcmodevar calc-graph-default-resolution-3d 5)
-  
+
 (defcalcmodevar calc-invocation-macro nil)
 
 (defcalcmodevar calc-show-banner t
@@ -918,8 +926,8 @@ If nil, selections displayed but ignored.")
 (defvar var-gamma '(special-const (math-gamma-const)))
 (defvar var-Modes '(special-const (math-get-modes-vec)))
 
-(mapcar (lambda (v) (or (boundp v) (set v nil)))
-         calc-local-var-list)
+(mapc (lambda (v) (or (boundp v) (set v nil)))
+      calc-local-var-list)
 
 (defvar calc-mode-map
   (let ((map (make-keymap)))
@@ -975,89 +983,89 @@ If nil, selections displayed but ignored.")
                (if (eq (aref cmap i) 'undefined)
                    'undefined 'calcDigit-nondigit))
          (setq i (1+ i)))))
-    (mapcar (lambda (x) (define-key map (char-to-string x) 'calcDigit-key))
-           "_0123456789.e+-:n#@oh'\"mspM")
-    (mapcar (lambda (x) (define-key map (char-to-string x) 'calcDigit-letter))
+    (mapc (lambda (x) (define-key map (char-to-string x) 'calcDigit-key))
+         "_0123456789.e+-:n#@oh'\"mspM")
+    (mapc (lambda (x) (define-key map (char-to-string x) 'calcDigit-letter))
            "abcdfgijklqrtuvwxyzABCDEFGHIJKLNOPQRSTUVWXYZ")
     (define-key map "'" 'calcDigit-algebraic)
     (define-key map "`" 'calcDigit-edit)
     (define-key map "\C-g" 'abort-recursive-edit)
     map))
 
-(mapcar (lambda (x)
-              (condition-case err
-                  (progn
-                    (define-key calc-digit-map x 'calcDigit-backspace)
-                    (define-key calc-mode-map x 'calc-pop)
-                    (define-key calc-mode-map
-                      (if (vectorp x)
-                          (if calc-emacs-type-lucid
-                              (if (= (length x) 1)
-                                  (vector (if (consp (aref x 0))
-                                              (cons 'meta (aref x 0))
-                                            (list 'meta (aref x 0))))
-                                "\e\C-d")
-                            (vconcat "\e" x))
-                        (concat "\e" x))
-                      'calc-pop-above))
-           (error nil)))
-           (if calc-scan-for-dels
-               (append (where-is-internal 'delete-backward-char global-map)
-                       (where-is-internal 'backward-delete-char global-map)
-                       '("\C-d"))
-             '("\177" "\C-d")))
+(mapc (lambda (x)
+       (condition-case err
+           (progn
+             (define-key calc-digit-map x 'calcDigit-backspace)
+             (define-key calc-mode-map x 'calc-pop)
+             (define-key calc-mode-map
+                 (if (vectorp x)
+                     (if calc-emacs-type-lucid
+                         (if (= (length x) 1)
+                             (vector (if (consp (aref x 0))
+                                         (cons 'meta (aref x 0))
+                                       (list 'meta (aref x 0))))
+                           "\e\C-d")
+                       (vconcat "\e" x))
+                   (concat "\e" x))
+               'calc-pop-above))
+         (error nil)))
+      (if calc-scan-for-dels
+         (append (where-is-internal 'delete-backward-char global-map)
+                 (where-is-internal 'backward-delete-char global-map)
+                 '("\C-d"))
+       '("\177" "\C-d")))
 
 (defvar calc-dispatch-map
   (let ((map (make-keymap)))
-    (mapcar (lambda (x)
-             (define-key map (char-to-string (car x)) (cdr x))
-              (when (string-match "abcdefhijklnopqrstuwxyz"
-                                  (char-to-string (car x)))
-               (define-key map (char-to-string (- (car x) ?a -1)) (cdr x)))
-             (define-key map (format "\e%c" (car x)) (cdr x)))
-           '( ( ?a . calc-embedded-activate )
-              ( ?b . calc-big-or-small )
-              ( ?c . calc )
-              ( ?d . calc-embedded-duplicate )
-              ( ?e . calc-embedded )
-              ( ?f . calc-embedded-new-formula )
-              ( ?g . calc-grab-region )
-              ( ?h . calc-dispatch-help )
-              ( ?i . calc-info )
-              ( ?j . calc-embedded-select )
-              ( ?k . calc-keypad )
-              ( ?l . calc-load-everything )
-              ( ?m . read-kbd-macro )
-              ( ?n . calc-embedded-next )
-              ( ?o . calc-other-window )
-              ( ?p . calc-embedded-previous )
-              ( ?q . quick-calc )
-              ( ?r . calc-grab-rectangle )
-              ( ?s . calc-info-summary )
-              ( ?t . calc-tutorial )
-              ( ?u . calc-embedded-update-formula )
-              ( ?w . calc-embedded-word )
-              ( ?x . calc-quit )
-              ( ?y . calc-copy-to-buffer )
-              ( ?z . calc-user-invocation )
-              ( ?\' . calc-embedded-new-formula )
-              ( ?\` . calc-embedded-edit )
-              ( ?: . calc-grab-sum-down )
-              ( ?_ . calc-grab-sum-across )
-              ( ?0 . calc-reset )
-              ( ?? . calc-dispatch-help )
-              ( ?# . calc-same-interface )
-              ( ?& . calc-same-interface )
-              ( ?\\ . calc-same-interface )
-              ( ?= . calc-same-interface )
-              ( ?* . calc-same-interface )
-              ( ?/ . calc-same-interface )
-              ( ?+ . calc-same-interface )
-              ( ?- . calc-same-interface ) ))
+    (mapc (lambda (x)
+           (define-key map (char-to-string (car x)) (cdr x))
+           (when (string-match "abcdefhijklnopqrstuwxyz"
+                               (char-to-string (car x)))
+             (define-key map (char-to-string (- (car x) ?a -1)) (cdr x)))
+           (define-key map (format "\e%c" (car x)) (cdr x)))
+         '( ( ?a . calc-embedded-activate )
+           ( ?b . calc-big-or-small )
+           ( ?c . calc )
+           ( ?d . calc-embedded-duplicate )
+           ( ?e . calc-embedded )
+           ( ?f . calc-embedded-new-formula )
+           ( ?g . calc-grab-region )
+           ( ?h . calc-dispatch-help )
+           ( ?i . calc-info )
+           ( ?j . calc-embedded-select )
+           ( ?k . calc-keypad )
+           ( ?l . calc-load-everything )
+           ( ?m . read-kbd-macro )
+           ( ?n . calc-embedded-next )
+           ( ?o . calc-other-window )
+           ( ?p . calc-embedded-previous )
+           ( ?q . quick-calc )
+           ( ?r . calc-grab-rectangle )
+           ( ?s . calc-info-summary )
+           ( ?t . calc-tutorial )
+           ( ?u . calc-embedded-update-formula )
+           ( ?w . calc-embedded-word )
+           ( ?x . calc-quit )
+           ( ?y . calc-copy-to-buffer )
+           ( ?z . calc-user-invocation )
+           ( ?\' . calc-embedded-new-formula )
+           ( ?\` . calc-embedded-edit )
+           ( ?: . calc-grab-sum-down )
+           ( ?_ . calc-grab-sum-across )
+           ( ?0 . calc-reset )
+           ( ?? . calc-dispatch-help )
+           ( ?# . calc-same-interface )
+           ( ?& . calc-same-interface )
+           ( ?\\ . calc-same-interface )
+           ( ?= . calc-same-interface )
+           ( ?* . calc-same-interface )
+           ( ?/ . calc-same-interface )
+           ( ?+ . calc-same-interface )
+           ( ?- . calc-same-interface ) ))
     map))
 
 ;;;; (Autoloads here)
-(mapcar
+(mapc
  (lambda (x) (dolist (func (cdr x)) (autoload func (car x))))
     '(
 
@@ -1069,7 +1077,7 @@ If nil, selections displayed but ignored.")
 
  ("calc-embed" calc-do-embedded-activate)
 
- ("calc-misc" 
+ ("calc-misc"
     calc-do-handle-whys calc-do-refresh calc-num-prefix-name
     calc-record-list calc-record-why calc-report-bug calc-roll-down-stack
     calc-roll-up-stack calc-temp-minibuffer-message calcFunc-floor
@@ -1079,7 +1087,7 @@ If nil, selections displayed but ignored.")
     math-negp math-posp math-pow math-read-radix-digit math-reject-arg
     math-trunc math-zerop)))
 
-(mapcar
+(mapc
  (lambda (x) (dolist (cmd (cdr x)) (autoload cmd (car x) nil t)))
     '(
 
@@ -1087,7 +1095,7 @@ If nil, selections displayed but ignored.")
     calcDigit-algebraic calcDigit-edit)
 
  ("calc-misc" another-calc calc-big-or-small calc-dispatch-help
-    calc-help calc-info calc-info-goto-node calc-info-summary calc-inv 
+    calc-help calc-info calc-info-goto-node calc-info-summary calc-inv
     calc-last-args-stub
     calc-missing-key calc-mod calc-other-window calc-over calc-percent
     calc-pop-above calc-power calc-roll-down calc-roll-up
@@ -1185,12 +1193,12 @@ Notations:  3.14e6     3.14 * 10^6
 \\{calc-mode-map}
 "
   (interactive)
-  (mapcar (function
-          (lambda (v) (set-default v (symbol-value v)))) calc-local-var-list)
+  (mapc (function
+        (lambda (v) (set-default v (symbol-value v)))) calc-local-var-list)
   (kill-all-local-variables)
   (use-local-map (if (eq calc-algebraic-mode 'total)
                     (progn (require 'calc-ext) calc-alg-map) calc-mode-map))
-  (mapcar (function (lambda (v) (make-local-variable v))) calc-local-var-list)
+  (mapc (function (lambda (v) (make-local-variable v))) calc-local-var-list)
   (make-local-variable 'overlay-arrow-position)
   (make-local-variable 'overlay-arrow-string)
   (add-hook 'change-major-mode-hook 'font-lock-defontify nil t)
@@ -1367,8 +1375,8 @@ commands given here will actually operate on the *Calculator* stack."
         (calc-create-buffer))
       (run-hooks 'calc-end-hook)
       (setq calc-undo-list nil calc-redo-list nil)
-      (mapcar (function (lambda (v) (set-default v (symbol-value v))))
-              calc-local-var-list)
+      (mapc (function (lambda (v) (set-default v (symbol-value v))))
+           calc-local-var-list)
       (let ((buf (current-buffer))
             (win (get-buffer-window (current-buffer)))
             (kbuf (get-buffer "*Calc Keypad*")))
@@ -2276,7 +2284,21 @@ See calc-keypad for details."
 
 
 
+(defconst math-bignum-digit-length
+  (truncate (/ (log10 (/ most-positive-fixnum 2)) 2))
+  "The length of a \"digit\" in Calc bignums.
+If a big integer is of the form (bigpos N0 N1 ...), this is the
+length of the allowable Emacs integers N0, N1,...
+The value of 2*10^(2*MATH-BIGNUM-DIGIT-LENGTH) must be less than the
+largest Emacs integer.")
 
+(defconst math-bignum-digit-size
+  (expt 10 math-bignum-digit-length)
+  "An upper bound for the size of the \"digit\"s in Calc bignums.")
+
+(defconst math-small-integer-size
+  (expt math-bignum-digit-size 2)
+  "An upper bound for the size of \"small integer\"s in Calc.")
 
 
 ;;;; Arithmetic routines.
@@ -2285,11 +2307,17 @@ See calc-keypad for details."
 ;;; following forms:
 ;;;
 ;;; integer                 An integer.  For normalized numbers, this format
-;;;                        is used only for -999999 ... 999999.
+;;;                        is used only for
+;;;                         negative math-small-integer-size + 1 to
+;;;                         math-small-integer-size - 1
 ;;;
-;;; (bigpos N0 N1 N2 ...)   A big positive integer, N0 + N1*1000 + N2*10^6 ...
-;;; (bigneg N0 N1 N2 ...)   A big negative integer, - N0 - N1*1000 ...
-;;;                        Each digit N is in the range 0 ... 999.
+;;; (bigpos N0 N1 N2 ...)   A big positive integer,
+;;;                           N0 + N1*math-bignum-digit-size
+;;;                              + N2*(math-bignum-digit-size)^2 ...
+;;; (bigneg N0 N1 N2 ...)   A big negative integer,
+;;;                           - N0 - N1*math-bignum-digit-size ...
+;;;                        Each digit N is in the range
+;;;                             0 ... math-bignum-digit-size -1.
 ;;;                        Normalized, always at least three N present,
 ;;;                        and the most significant N is nonzero.
 ;;;
@@ -2379,13 +2407,14 @@ See calc-keypad for details."
   (cond
    ((not (consp math-normalize-a))
     (if (integerp math-normalize-a)
-       (if (or (>= math-normalize-a 1000000) (<= math-normalize-a -1000000))
+       (if (or (>= math-normalize-a math-small-integer-size)
+                (<= math-normalize-a (- math-small-integer-size)))
            (math-bignum math-normalize-a)
          math-normalize-a)
       math-normalize-a))
    ((eq (car math-normalize-a) 'bigpos)
     (if (eq (nth (1- (length math-normalize-a)) math-normalize-a) 0)
-       (let* ((last (setq math-normalize-a 
+       (let* ((last (setq math-normalize-a
                            (copy-sequence math-normalize-a))) (digs math-normalize-a))
          (while (setq digs (cdr digs))
            (or (eq (car digs) 0) (setq last digs)))
@@ -2393,13 +2422,14 @@ See calc-keypad for details."
     (if (cdr (cdr (cdr math-normalize-a)))
        math-normalize-a
       (cond
-       ((cdr (cdr math-normalize-a)) (+ (nth 1 math-normalize-a) 
-                                        (* (nth 2 math-normalize-a) 1000)))
+       ((cdr (cdr math-normalize-a)) (+ (nth 1 math-normalize-a)
+                                        (* (nth 2 math-normalize-a)
+                                           math-bignum-digit-size)))
        ((cdr math-normalize-a) (nth 1 math-normalize-a))
        (t 0))))
    ((eq (car math-normalize-a) 'bigneg)
     (if (eq (nth (1- (length math-normalize-a)) math-normalize-a) 0)
-       (let* ((last (setq math-normalize-a (copy-sequence math-normalize-a))) 
+       (let* ((last (setq math-normalize-a (copy-sequence math-normalize-a)))
                (digs math-normalize-a))
          (while (setq digs (cdr digs))
            (or (eq (car digs) 0) (setq last digs)))
@@ -2407,20 +2437,21 @@ See calc-keypad for details."
     (if (cdr (cdr (cdr math-normalize-a)))
        math-normalize-a
       (cond
-       ((cdr (cdr math-normalize-a)) (- (+ (nth 1 math-normalize-a) 
-                                           (* (nth 2 math-normalize-a) 1000))))
+       ((cdr (cdr math-normalize-a)) (- (+ (nth 1 math-normalize-a)
+                                           (* (nth 2 math-normalize-a)
+                                              math-bignum-digit-size))))
        ((cdr math-normalize-a) (- (nth 1 math-normalize-a)))
        (t 0))))
    ((eq (car math-normalize-a) 'float)
-    (math-make-float (math-normalize (nth 1 math-normalize-a)) 
+    (math-make-float (math-normalize (nth 1 math-normalize-a))
                      (nth 2 math-normalize-a)))
-   ((or (memq (car math-normalize-a) 
+   ((or (memq (car math-normalize-a)
               '(frac cplx polar hms date mod sdev intv vec var quote
                      special-const calcFunc-if calcFunc-lambda
                      calcFunc-quote calcFunc-condition
                      calcFunc-evalto))
        (integerp (car math-normalize-a))
-       (and (consp (car math-normalize-a)) 
+       (and (consp (car math-normalize-a))
              (not (eq (car (car math-normalize-a)) 'lambda))))
     (require 'calc-ext)
     (math-normalize-fancy math-normalize-a))
@@ -2430,7 +2461,7 @@ See calc-keypad for details."
             (math-normalize-nonstandard))
        (let ((args (mapcar 'math-normalize (cdr math-normalize-a))))
          (or (condition-case err
-                 (let ((func 
+                 (let ((func
                          (assq (car math-normalize-a) '( ( + . math-add )
                                                          ( - . math-sub )
                                                          ( * . math-mul )
@@ -2446,7 +2477,7 @@ See calc-keypad for details."
                                     (require 'calc-ext)
                                     (math-recompile-eval-rules)))
                               (and (or math-eval-rules-cache-other
-                                       (assq (car math-normalize-a) 
+                                       (assq (car math-normalize-a)
                                               math-eval-rules-cache))
                                    (math-apply-rewrites
                                     (cons (car math-normalize-a) args)
@@ -2465,12 +2496,12 @@ See calc-keypad for details."
                                  (cons (car math-normalize-a) args))
                 nil)
                (wrong-type-argument
-                (or calc-next-why 
+                (or calc-next-why
                      (calc-record-why "Wrong type of argument"
                                       (cons (car math-normalize-a) args)))
                 nil)
                (args-out-of-range
-                (calc-record-why "*Argument out of range" 
+                (calc-record-why "*Argument out of range"
                                   (cons (car math-normalize-a) args))
                 nil)
                (inexact-result
@@ -2528,7 +2559,8 @@ See calc-keypad for details."
 (defun math-bignum-big (a)   ; [L s]
   (if (= a 0)
       nil
-    (cons (% a 1000) (math-bignum-big (/ a 1000)))))
+    (cons (% a math-bignum-digit-size)
+          (math-bignum-big (/ a math-bignum-digit-size)))))
 
 
 ;;; Build a normalized floating-point number.  [F I S]
@@ -2545,7 +2577,7 @@ See calc-keypad for details."
              (progn
                (while (= (car digs) 0)
                  (setq digs (cdr digs)
-                       exp (+ exp 3)))
+                       exp (+ exp math-bignum-digit-length)))
                (while (= (% (car digs) 10) 0)
                  (setq digs (math-div10-bignum digs)
                        exp (1+ exp)))
@@ -2563,7 +2595,8 @@ See calc-keypad for details."
 
 (defun math-div10-bignum (a)   ; [l l]
   (if (cdr a)
-      (cons (+ (/ (car a) 10) (* (% (nth 1 a) 10) 100))
+      (cons (+ (/ (car a) 10) (* (% (nth 1 a) 10)
+                                 (expt 10 (1- math-bignum-digit-length))))
            (math-div10-bignum (cdr a)))
     (list (/ (car a) 10))))
 
@@ -2594,7 +2627,7 @@ See calc-keypad for details."
       (if (cdr a)
          (let* ((len (1- (length a)))
                 (top (nth len a)))
-           (+ (* len 3) (cond ((>= top 100) 0) ((>= top 10) -1) (t -2))))
+            (+ (* (1- len) math-bignum-digit-length) (math-numdigs top)))
        0)
     (cond ((>= a 100) (+ (math-numdigs (/ a 1000)) 3))
          ((>= a 10) 2)
@@ -2615,24 +2648,24 @@ See calc-keypad for details."
       a
     (if (consp a)
        (cons (car a) (math-scale-left-bignum (cdr a) n))
-      (if (>= n 3)
-         (if (or (>= a 1000) (<= a -1000))
+      (if (>= n math-bignum-digit-length)
+         (if (or (>= a math-bignum-digit-size)
+                  (<= a (- math-bignum-digit-size)))
              (math-scale-left (math-bignum a) n)
-           (math-scale-left (* a 1000) (- n 3)))
-       (if (= n 2)
-           (if (or (>= a 10000) (<= a -10000))
-               (math-scale-left (math-bignum a) 2)
-             (* a 100))
-         (if (or (>= a 100000) (<= a -100000))
-             (math-scale-left (math-bignum a) 1)
-           (* a 10)))))))
+           (math-scale-left (* a math-bignum-digit-size)
+                             (- n math-bignum-digit-length)))
+        (let ((sz (expt 10 (- (* 2 math-bignum-digit-length) n))))
+          (if (or (>= a sz) (<= a (- sz)))
+              (math-scale-left (math-bignum a) n)
+            (* a (expt 10 n))))))))
 
 (defun math-scale-left-bignum (a n)
-  (if (>= n 3)
+  (if (>= n math-bignum-digit-length)
       (while (>= (setq a (cons 0 a)
-                      n (- n 3)) 3)))
+                      n (- n math-bignum-digit-length))
+                 math-bignum-digit-length)))
   (if (> n 0)
-      (math-mul-bignum-digit a (if (= n 2) 100 10) 0)
+      (math-mul-bignum-digit a (expt 10 n) 0)
     a))
 
 (defun math-scale-right (a n)   ; [i i S]
@@ -2644,21 +2677,20 @@ See calc-keypad for details."
          (if (= a 0)
              0
            (- (math-scale-right (- a) n)))
-       (if (>= n 3)
-           (while (and (> (setq a (/ a 1000)) 0)
-                       (>= (setq n (- n 3)) 3))))
-       (if (= n 2)
-           (/ a 100)
-         (if (= n 1)
-             (/ a 10)
-           a))))))
+       (if (>= n math-bignum-digit-length)
+           (while (and (> (setq a (/ a math-bignum-digit-size)) 0)
+                       (>= (setq n (- n math-bignum-digit-length))
+                            math-bignum-digit-length))))
+       (if (> n 0)
+            (/ a (expt 10 n))
+          a)))))
 
 (defun math-scale-right-bignum (a n)   ; [L L S; l l S]
-  (if (>= n 3)
-      (setq a (nthcdr (/ n 3) a)
-           n (% n 3)))
+  (if (>= n math-bignum-digit-length)
+      (setq a (nthcdr (/ n math-bignum-digit-length) a)
+           n (% n math-bignum-digit-length)))
   (if (> n 0)
-      (cdr (math-mul-bignum-digit a (if (= n 2) 10 100) 0))
+      (cdr (math-mul-bignum-digit a (expt 10 (- math-bignum-digit-length n)) 0))
     a))
 
 ;;; Multiply (with rounding) the integer A by 10^N.   [I i S]
@@ -2668,16 +2700,18 @@ See calc-keypad for details."
        ((consp a)
         (math-normalize
          (cons (car a)
-               (let ((val (if (< n -3)
-                              (math-scale-right-bignum (cdr a) (- -3 n))
-                            (if (= n -2)
-                                (math-mul-bignum-digit (cdr a) 10 0)
-                              (if (= n -1)
-                                  (math-mul-bignum-digit (cdr a) 100 0)
-                                (cdr a))))))  ; n = -3
-                 (if (and val (>= (car val) 500))
+               (let ((val (if (< n (- math-bignum-digit-length))
+                              (math-scale-right-bignum
+                                (cdr a)
+                                (- (- math-bignum-digit-length) n))
+                            (if (< n 0)
+                                (math-mul-bignum-digit
+                                  (cdr a)
+                                  (expt 10 (+ math-bignum-digit-length n)) 0)
+                               (cdr a)))))  ; n = -math-bignum-digit-length
+                 (if (and val (>= (car val) (/ math-bignum-digit-size 2)))
                      (if (cdr val)
-                         (if (eq (car (cdr val)) 999)
+                         (if (eq (car (cdr val)) (1- math-bignum-digit-size))
                              (math-add-bignum (cdr val) '(1))
                            (cons (1+ (car (cdr val))) (cdr (cdr val))))
                        '(1))
@@ -2696,7 +2730,7 @@ See calc-keypad for details."
    (and (not (or (consp a) (consp b)))
        (progn
          (setq a (+ a b))
-         (if (or (<= a -1000000) (>= a 1000000))
+         (if (or (<= a (- math-small-integer-size)) (>= a math-small-integer-size))
              (math-bignum a)
            a)))
    (and (Math-zerop a) (not (eq (car-safe a) 'mod))
@@ -2745,21 +2779,22 @@ See calc-keypad for details."
          (let* ((a (copy-sequence a)) (aa a) (carry nil) sum)
            (while (and aa b)
              (if carry
-                 (if (< (setq sum (+ (car aa) (car b))) 999)
+                 (if (< (setq sum (+ (car aa) (car b)))
+                         (1- math-bignum-digit-size))
                      (progn
                        (setcar aa (1+ sum))
                        (setq carry nil))
-                   (setcar aa (+ sum -999)))
-               (if (< (setq sum (+ (car aa) (car b))) 1000)
+                   (setcar aa (- sum (1- math-bignum-digit-size))))
+               (if (< (setq sum (+ (car aa) (car b))) math-bignum-digit-size)
                    (setcar aa sum)
-                 (setcar aa (+ sum -1000))
+                 (setcar aa (- sum math-bignum-digit-size))
                  (setq carry t)))
              (setq aa (cdr aa)
                    b (cdr b)))
            (if carry
                (if b
                    (nconc a (math-add-bignum b '(1)))
-                 (while (eq (car aa) 999)
+                 (while (eq (car aa) (1- math-bignum-digit-size))
                    (setcar aa 0)
                    (setq aa (cdr aa)))
                  (if aa
@@ -2783,17 +2818,17 @@ See calc-keypad for details."
                      (progn
                        (setcar aa (1- diff))
                        (setq borrow nil))
-                   (setcar aa (+ diff 999)))
+                   (setcar aa (+ diff (1- math-bignum-digit-size))))
                (if (>= (setq diff (- (car aa) (car b))) 0)
                    (setcar aa diff)
-                 (setcar aa (+ diff 1000))
+                 (setcar aa (+ diff math-bignum-digit-size))
                  (setq borrow t)))
              (setq aa (cdr aa)
                    b (cdr b)))
            (if borrow
                (progn
                  (while (eq (car aa) 0)
-                   (setcar aa 999)
+                   (setcar aa (1- math-bignum-digit-size))
                    (setq aa (cdr aa)))
                  (if aa
                      (progn
@@ -2833,7 +2868,7 @@ See calc-keypad for details."
   (if (or (consp a) (consp b))
       (math-add a (math-neg b))
     (setq a (- a b))
-    (if (or (<= a -1000000) (>= a 1000000))
+    (if (or (<= a (- math-small-integer-size)) (>= a math-small-integer-size))
        (math-bignum a)
       a)))
 
@@ -2860,7 +2895,8 @@ See calc-keypad for details."
 (defun math-mul (a b)
   (or
    (and (not (consp a)) (not (consp b))
-       (< a 1000) (> a -1000) (< b 1000) (> b -1000)
+       (< a math-bignum-digit-size) (> a (- math-bignum-digit-size))
+        (< b math-bignum-digit-size) (> b (- math-bignum-digit-size))
        (* a b))
    (and (Math-zerop a) (not (eq (car-safe b) 'mod))
        (if (Math-scalarp b)
@@ -2929,14 +2965,14 @@ See calc-keypad for details."
                 aa a)
           (while (progn
                    (setcar ss (% (setq prod (+ (+ (car ss) (* (car aa) d))
-                                               c)) 1000))
+                                               c)) math-bignum-digit-size))
                    (setq aa (cdr aa)))
-            (setq c (/ prod 1000)
+            (setq c (/ prod math-bignum-digit-size)
                   ss (or (cdr ss) (setcdr ss (list 0)))))
-          (if (>= prod 1000)
+          (if (>= prod math-bignum-digit-size)
               (if (cdr ss)
-                  (setcar (cdr ss) (+ (/ prod 1000) (car (cdr ss))))
-                (setcdr ss (list (/ prod 1000))))))
+                  (setcar (cdr ss) (+ (/ prod math-bignum-digit-size) (car (cdr ss))))
+                (setcdr ss (list (/ prod math-bignum-digit-size))))))
         sum)))
 
 ;;; Multiply digit list A by digit D.  [L L D D; l l D D]
@@ -2946,12 +2982,14 @@ See calc-keypad for details."
          (and (= d 1) a)
        (let* ((a (copy-sequence a)) (aa a) prod)
          (while (progn
-                  (setcar aa (% (setq prod (+ (* (car aa) d) c)) 1000))
+                  (setcar aa
+                           (% (setq prod (+ (* (car aa) d) c))
+                              math-bignum-digit-size))
                   (cdr aa))
            (setq aa (cdr aa)
-                 c (/ prod 1000)))
-         (if (>= prod 1000)
-             (setcdr aa (list (/ prod 1000))))
+                 c (/ prod math-bignum-digit-size)))
+         (if (>= prod math-bignum-digit-size)
+             (setcdr aa (list (/ prod math-bignum-digit-size))))
          a))
     (and (> c 0)
         (list c))))
@@ -2964,7 +3002,7 @@ See calc-keypad for details."
   (if (eq b 0)
       (math-reject-arg a "*Division by zero"))
   (if (or (consp a) (consp b))
-      (if (and (natnump b) (< b 1000))
+      (if (and (natnump b) (< b math-bignum-digit-size))
          (let ((res (math-div-bignum-digit (cdr a) b)))
            (cons
             (math-normalize (cons (car a) (car res)))
@@ -2983,7 +3021,7 @@ See calc-keypad for details."
       (if (= b 0)
          (math-reject-arg a "*Division by zero")
        (/ a b))
-    (if (and (natnump b) (< b 1000))
+    (if (and (natnump b) (< b math-bignum-digit-size))
        (if (= b 0)
            (math-reject-arg a "*Division by zero")
          (math-normalize (cons (car a)
@@ -2992,7 +3030,7 @@ See calc-keypad for details."
       (or (consp b) (setq b (math-bignum b)))
       (let* ((alen (1- (length a)))
             (blen (1- (length b)))
-            (d (/ 1000 (1+ (nth (1- blen) (cdr b)))))
+            (d (/ math-bignum-digit-size (1+ (nth (1- blen) (cdr b)))))
             (res (math-div-bignum-big (math-mul-bignum-digit (cdr a) d 0)
                                       (math-mul-bignum-digit (cdr b) d 0)
                                       alen blen)))
@@ -3006,7 +3044,7 @@ See calc-keypad for details."
   (if (cdr b)
       (let* ((alen (length a))
             (blen (length b))
-            (d (/ 1000 (1+ (nth (1- blen) b))))
+            (d (/ math-bignum-digit-size (1+ (nth (1- blen) b))))
             (res (math-div-bignum-big (math-mul-bignum-digit a d 0)
                                       (math-mul-bignum-digit b d 0)
                                       alen blen)))
@@ -3021,7 +3059,7 @@ See calc-keypad for details."
 (defun math-div-bignum-digit (a b)
   (if a
       (let* ((res (math-div-bignum-digit (cdr a) b))
-            (num (+ (* (cdr res) 1000) (car a))))
+            (num (+ (* (cdr res) math-bignum-digit-size) (car a))))
        (cons
         (cons (/ num b) (car res))
         (% num b)))
@@ -3037,10 +3075,11 @@ See calc-keypad for details."
        (cons (car res2) (car res))
        (cdr res2)))))
 
-(defun math-div-bignum-part (a b blen)   ; a < b*1000  [D.l l L]
-  (let* ((num (+ (* (or (nth blen a) 0) 1000) (or (nth (1- blen) a) 0)))
+(defun math-div-bignum-part (a b blen)   ; a < b*math-bignum-digit-size  [D.l l L]
+  (let* ((num (+ (* (or (nth blen a) 0) math-bignum-digit-size)
+                 (or (nth (1- blen) a) 0)))
         (den (nth (1- blen) b))
-        (guess (min (/ num den) 999)))
+        (guess (min (/ num den) (1- math-bignum-digit-size))))
     (math-div-bignum-try a b (math-mul-bignum-digit b guess 0) guess)))
 
 (defun math-div-bignum-try (a b c guess)   ; [D.l l l D]
@@ -3351,15 +3390,22 @@ See calc-keypad for details."
   (if a
       (let ((s ""))
        (while (cdr (cdr a))
-         (setq s (concat (format "%06d" (+ (* (nth 1 a) 1000) (car a))) s)
+         (setq s (concat
+                   (format
+                    (concat "%0"
+                            (number-to-string (* 2 math-bignum-digit-length))
+                            "d")
+                    (+ (* (nth 1 a) math-bignum-digit-size) (car a))) s)
                a (cdr (cdr a))))
-       (concat (int-to-string (+ (* (or (nth 1 a) 0) 1000) (car a))) s))
+       (concat (int-to-string
+                 (+ (* (or (nth 1 a) 0) math-bignum-digit-size) (car a))) s))
     "0"))
 
 
 
 ;;; Parse a simple number in string form.   [N X] [Public]
 (defun math-read-number (s)
+  "Convert the string S into a Calc number."
   (math-normalize
    (cond
 
@@ -3370,7 +3416,7 @@ See calc-keypad for details."
                (> (length digs) 1)
                (eq (aref digs 0) ?0))
           (math-read-number (concat "8#" digs))
-        (if (<= (length digs) 6)
+        (if (<= (length digs) (* 2 math-bignum-digit-length))
             (string-to-number digs)
           (cons 'bigpos (math-read-bignum digs))))))
 
@@ -3416,15 +3462,42 @@ See calc-keypad for details."
     ;; Syntax error!
     (t nil))))
 
+;;; Parse a very simple number, keeping all digits.
+(defun math-read-number-simple (s)
+  "Convert the string S into a Calc number.
+S is assumed to be a simple number (integer or float without an exponent)
+and all digits are kept, regardless of Calc's current precision."
+   (cond
+    ;; Integer
+    ((string-match "^[0-9]+$" s)
+     (if (string-match "^\\(0+\\)" s)
+         (setq s (substring s (match-end 0))))
+     (if (<= (length s) (* 2 math-bignum-digit-length))
+         (string-to-number s)
+       (cons 'bigpos (math-read-bignum s))))
+    ;; Minus sign
+    ((string-match "^-[0-9]+$" s)
+     (if (<= (length s) (1+ (* 2 math-bignum-digit-length)))
+         (string-to-number s)
+       (cons 'bigneg (math-read-bignum (substring s 1)))))
+    ;; Decimal point
+    ((string-match "^\\(-?[0-9]*\\)\\.\\([0-9]*\\)$" s)
+     (let ((int (math-match-substring s 1))
+          (frac (math-match-substring s 2)))
+       (list 'float (math-read-number-simple (concat int frac))
+             (- (length frac)))))
+    ;; Syntax error!
+    (t nil)))
+
 (defun math-match-substring (s n)
   (if (match-beginning n)
       (substring s (match-beginning n) (match-end n))
     ""))
 
 (defun math-read-bignum (s)   ; [l X]
-  (if (> (length s) 3)
-      (cons (string-to-number (substring s -3))
-           (math-read-bignum (substring s 0 -3)))
+  (if (> (length s) math-bignum-digit-length)
+      (cons (string-to-number (substring s (- math-bignum-digit-length)))
+           (math-read-bignum (substring s 0 (- math-bignum-digit-length))))
     (list (string-to-number s))))
 
 
@@ -3467,8 +3540,6 @@ See calc-keypad for details."
      ( "!"     calcFunc-fact 210  -1 )
      ( "^"     ^             201 200 )
      ( "**"    ^             201 200 )
-     ( "*"     *             196 195 )
-     ( "2x"    *             196 195 )
      ( "/"     /             190 191 )
      ( "%"     %             190 191 )
      ( "\\"    calcFunc-idiv 190 191 )
@@ -3492,7 +3563,31 @@ See calc-keypad for details."
      ( "::"    calcFunc-condition 45 46 )
      ( "=>"    calcFunc-evalto 40 41 )
      ( "=>"    calcFunc-evalto 40 -1 )))
-(defvar math-expr-opers math-standard-opers)
+
+(defun math-standard-ops ()
+  (if calc-multiplication-has-precedence
+      (cons
+       '( "*"     *             196 195 )
+       (cons
+        '( "2x"    *             196 195 )
+        math-standard-opers))
+    (cons
+     '( "*"     *             190 191 )
+     (cons
+      '( "2x"    *             190 191 )
+      math-standard-opers))))
+
+(defvar math-expr-opers (math-standard-ops))
+
+(defun math-standard-ops-p ()
+  (let ((meo (caar math-expr-opers)))
+    (and (stringp meo)
+         (string= meo "*"))))
+
+(defun math-expr-ops ()
+  (if (math-standard-ops-p)
+      (math-standard-ops)
+    math-expr-opers))
 
 ;;;###autoload
 (defun calc-grab-region (top bot arg)
index 9f263a2281abde5438dae59eef690a1795564708..5aa410be19e675cd0595f50bbc346072c3ead80a 100644 (file)
                 (if (calc-is-hyperbolic) 'calcFunc-efit
                   'calcFunc-fit)))
         key (which 0)
+         (nonlinear nil)
+         (plot nil)
         n calc-curve-nvars temp data
         (homog nil)
         (msgs '( "(Press ? for help)"
                  "E = a 10^(b x), X = 10^(a + b x), L = a + b log10(x)"
                  "q = a + b (x-c)^2"
                  "g = (a/b sqrt(2 pi)) exp(-0.5*((x-c)/b)^2)"
+                  "s = a/(1 + exp(b (x - c)))"
+                  "b = a exp(b (x - c))/(1 + exp(b (x - c)))^2"
+                  "o = (y/x) = a (1 - x/b)"
                  "h prefix = homogeneous model (no constant term)"
+                  "P prefix = plot result"
                  "' = alg entry, $ = stack, u = Model1, U = Model2")))
      (while (not calc-curve-model)
-       (message "Fit to model: %s:%s"
-               (nth which msgs)
-               (if homog " h" ""))
+       (message 
+        "Fit to model: %s:%s%s"
+        (nth which msgs)
+        (if plot "P" " ")
+        (if homog "h" ""))
        (setq key (read-char))
        (cond ((= key ?\C-g)
              (keyboard-quit))
              (setq which (% (1+ which) (length msgs))))
             ((memq key '(?h ?H))
              (setq homog (not homog)))
+             ((= key ?P)
+              (if plot
+                  (setq plot nil)
+                (let ((data (calc-top 1)))
+                  (if (or
+                       (calc-is-hyperbolic)
+                       (calc-is-inverse)
+                       (not (= (length data) 3)))
+                      (setq plot "Can't plot")
+                    (setq plot data)))))
             ((progn
                (if (eq key ?\$)
                    (setq n 1)
             ((= key ?1)  ; linear or multilinear
              (calc-get-fit-variables calc-curve-nvars 
                                       (1+ calc-curve-nvars) (and homog 0))
-             (setq calc-curve-model (math-mul calc-curve-coefnames
-                                   (cons 'vec (cons 1 (cdr calc-curve-varnames))))))
+             (setq calc-curve-model 
+                    (math-mul calc-curve-coefnames
+                              (cons 'vec (cons 1 (cdr calc-curve-varnames))))))
             ((and (>= key ?2) (<= key ?9))   ; polynomial
              (calc-get-fit-variables 1 (- key ?0 -1) (and homog 0))
              (setq calc-curve-model 
             ((= key ?p)  ; power law
              (calc-get-fit-variables calc-curve-nvars 
                                       (1+ calc-curve-nvars) (and homog 1))
-             (setq calc-curve-model (math-mul (nth 1 calc-curve-coefnames)
-                                   (calcFunc-reduce
-                                    '(var mul var-mul)
-                                    (calcFunc-map
-                                     '(var pow var-pow)
-                                     calc-curve-varnames
-                                     (cons 'vec (cdr (cdr calc-curve-coefnames))))))))
+             (setq calc-curve-model 
+                    (math-mul 
+                     (nth 1 calc-curve-coefnames)
+                     (calcFunc-reduce
+                      '(var mul var-mul)
+                      (calcFunc-map
+                       '(var pow var-pow)
+                       calc-curve-varnames
+                       (cons 'vec (cdr (cdr calc-curve-coefnames))))))))
             ((= key ?^)  ; exponential law
              (calc-get-fit-variables calc-curve-nvars 
                                       (1+ calc-curve-nvars) (and homog 1))
-             (setq calc-curve-model (math-mul (nth 1 calc-curve-coefnames)
-                                   (calcFunc-reduce
-                                    '(var mul var-mul)
-                                    (calcFunc-map
-                                     '(var pow var-pow)
-                                     (cons 'vec (cdr (cdr calc-curve-coefnames)))
-                                     calc-curve-varnames)))))
+             (setq calc-curve-model 
+                    (math-mul (nth 1 calc-curve-coefnames)
+                              (calcFunc-reduce
+                               '(var mul var-mul)
+                               (calcFunc-map
+                                '(var pow var-pow)
+                                (cons 'vec (cdr (cdr calc-curve-coefnames)))
+                                calc-curve-varnames)))))
+             ((= key ?s)
+              (setq nonlinear t)
+              (setq calc-curve-model t)
+              (require 'calc-nlfit)
+              (calc-fit-s-shaped-logistic-curve func))
+             ((= key ?b)
+              (setq nonlinear t)
+              (setq calc-curve-model t)
+              (require 'calc-nlfit)
+              (calc-fit-bell-shaped-logistic-curve func))
+             ((= key ?o)
+              (setq nonlinear t)
+              (setq calc-curve-model t)
+              (require 'calc-nlfit)
+              (if (and plot (not (stringp plot)))
+                  (setq plot
+                        (list 'vec
+                              (nth 1 plot)
+                              (cons
+                               'vec
+                               (mapcar* 'calcFunc-div
+                                        (cdr (nth 2 plot))
+                                        (cdr (nth 1 plot)))))))
+              (calc-fit-hubbert-linear-curve func))
             ((memq key '(?e ?E))
              (calc-get-fit-variables calc-curve-nvars 
                                       (1+ calc-curve-nvars) (and homog 1))
-             (setq calc-curve-model (math-mul (nth 1 calc-curve-coefnames)
-                                   (calcFunc-reduce
-                                    '(var mul var-mul)
-                                    (calcFunc-map
-                                     (if (eq key ?e)
-                                         '(var exp var-exp)
-                                       '(calcFunc-lambda
-                                         (var a var-a)
-                                         (^ 10 (var a var-a))))
-                                     (calcFunc-map
-                                      '(var mul var-mul)
-                                      (cons 'vec (cdr (cdr calc-curve-coefnames)))
-                                      calc-curve-varnames))))))
+             (setq calc-curve-model 
+                    (math-mul (nth 1 calc-curve-coefnames)
+                              (calcFunc-reduce
+                               '(var mul var-mul)
+                               (calcFunc-map
+                                (if (eq key ?e)
+                                    '(var exp var-exp)
+                                  '(calcFunc-lambda
+                                    (var a var-a)
+                                    (^ 10 (var a var-a))))
+                                (calcFunc-map
+                                 '(var mul var-mul)
+                                 (cons 'vec (cdr (cdr calc-curve-coefnames)))
+                                 calc-curve-varnames))))))
             ((memq key '(?x ?X))
              (calc-get-fit-variables calc-curve-nvars 
                                       (1+ calc-curve-nvars) (and homog 0))
-             (setq calc-curve-model (math-mul calc-curve-coefnames
-                                   (cons 'vec (cons 1 (cdr calc-curve-varnames)))))
+             (setq calc-curve-model 
+                    (math-mul calc-curve-coefnames
+                              (cons 'vec (cons 1 (cdr calc-curve-varnames)))))
              (setq calc-curve-model (if (eq key ?x)
                              (list 'calcFunc-exp calc-curve-model)
                            (list '^ 10 calc-curve-model))))
             ((memq key '(?l ?L))
              (calc-get-fit-variables calc-curve-nvars 
                                       (1+ calc-curve-nvars) (and homog 0))
-             (setq calc-curve-model (math-mul calc-curve-coefnames
-                                   (cons 'vec
-                                         (cons 1 (cdr (calcFunc-map
-                                                       (if (eq key ?l)
-                                                           '(var ln var-ln)
-                                                         '(var log10
-                                                               var-log10))
-                                                       calc-curve-varnames)))))))
+             (setq calc-curve-model 
+                    (math-mul calc-curve-coefnames
+                              (cons 'vec
+                                    (cons 1 (cdr (calcFunc-map
+                                                  (if (eq key ?l)
+                                                      '(var ln var-ln)
+                                                    '(var log10
+                                                          var-log10))
+                                                  calc-curve-varnames)))))))
             ((= key ?q)
              (calc-get-fit-variables calc-curve-nvars 
                                       (1+ (* 2 calc-curve-nvars)) (and homog 0))
                                           (list '- (car v) (nth 1 c))
                                           2)))))))
             ((= key ?g)
-             (setq calc-curve-model 
-                    (math-read-expr "(AFit / BFit sqrt(2 pi)) exp(-0.5 * ((XFit - CFit) / BFit)^2)")
-                   calc-curve-varnames '(vec (var XFit var-XFit))
-                   calc-curve-coefnames '(vec (var AFit var-AFit)
-                                   (var BFit var-BFit)
-                                   (var CFit var-CFit)))
+             (setq 
+               calc-curve-model 
+               (math-read-expr 
+                "(AFit / BFit sqrt(2 pi)) exp(-0.5 * ((XFit - CFit) / BFit)^2)")
+               calc-curve-varnames '(vec (var XFit var-XFit))
+               calc-curve-coefnames '(vec (var AFit var-AFit)
+                                          (var BFit var-BFit)
+                                          (var CFit var-CFit)))
              (calc-get-fit-variables 1 (1- (length calc-curve-coefnames)) 
                                       (and homog 1)))
             ((memq key '(?\$ ?\' ?u ?U))
                    (let* ((calc-dollar-values calc-arg-values)
                           (calc-dollar-used 0)
                           (calc-hashes-used 0))
-                     (setq calc-curve-model (calc-do-alg-entry "" "Model formula: "
-                                                        nil 'calc-curve-fit-history))
+                     (setq calc-curve-model 
+                            (calc-do-alg-entry "" "Model formula: "
+                                               nil 'calc-curve-fit-history))
                      (if (/= (length calc-curve-model) 1)
                          (error "Bad format"))
                      (setq calc-curve-model (car calc-curve-model)
                                   (or (nth 3 calc-curve-model)
                                       (cons 'vec
                                             (math-all-vars-but
-                                             calc-curve-model calc-curve-varnames)))
+                                             calc-curve-model 
+                                             calc-curve-varnames)))
                                  calc-curve-model (nth 1 calc-curve-model))
                          (error "Incorrect model specifier")))))
                (or calc-curve-varnames
-                   (let ((with-y (eq (car-safe calc-curve-model) 'calcFunc-eq)))
+                   (let ((with-y 
+                           (eq (car-safe calc-curve-model) 'calcFunc-eq)))
                      (if calc-curve-coefnames
                          (calc-get-fit-variables 
                            (if with-y (1+ calc-curve-nvars) calc-curve-nvars)
                            nil with-y)
                        (let* ((coefs (math-all-vars-but calc-curve-model nil))
                               (vars nil)
-                              (n (- (length coefs) calc-curve-nvars (if with-y 2 1)))
+                              (n (- 
+                                   (length coefs) 
+                                   calc-curve-nvars 
+                                   (if with-y 2 1)))
                               p)
                          (if (< n 0)
                              (error "Not enough variables in model"))
                                        calc-curve-varnames calc-curve-coefnames)
                                 "modl"))))
             (t (beep))))
-     (let ((calc-fit-to-trail t))
-       (calc-enter-result n (substring (symbol-name func) 9)
-                         (list func calc-curve-model
-                               (if (= (length calc-curve-varnames) 2)
-                                   (nth 1 calc-curve-varnames)
-                                 calc-curve-varnames)
-                               (if (= (length calc-curve-coefnames) 2)
-                                   (nth 1 calc-curve-coefnames)
-                                 calc-curve-coefnames)
-                               data))
-       (if (consp calc-fit-to-trail)
-          (calc-record (calc-normalize calc-fit-to-trail) "parm"))))))
+     (unless nonlinear
+       (let ((calc-fit-to-trail t))
+         (calc-enter-result n (substring (symbol-name func) 9)
+                            (list func calc-curve-model
+                                  (if (= (length calc-curve-varnames) 2)
+                                      (nth 1 calc-curve-varnames)
+                                    calc-curve-varnames)
+                                  (if (= (length calc-curve-coefnames) 2)
+                                      (nth 1 calc-curve-coefnames)
+                                    calc-curve-coefnames)
+                                  data))
+         (if (consp calc-fit-to-trail)
+             (calc-record (calc-normalize calc-fit-to-trail) "parm"))))
+  (when plot
+    (if (stringp plot)
+        (message plot)
+      (let ((calc-graph-no-auto-view t))
+        (calc-graph-delete t)
+        (calc-graph-add-curve
+         (calc-graph-lookup (nth 1 plot))
+         (calc-graph-lookup (nth 2 plot)))
+        (unless (math-contains-sdev-p (nth 2 data))
+          (calc-graph-set-styles nil nil)
+          (calc-graph-point-style nil))
+        (setq plot (cdr (nth 1 plot)))
+        (setq plot 
+              (list 'intv
+                    3
+                    (math-sub
+                     (math-min-list (car plot) (cdr plot))
+                     '(float 5 -1))
+                    (math-add
+                     '(float 5 -1)
+                     (math-max-list (car plot) (cdr plot)))))
+        (calc-graph-add-curve (calc-graph-lookup plot)
+                              (calc-graph-lookup (calc-top-n 1)))
+        (calc-graph-plot nil)))))))
 
 (defun calc-invent-independent-variables (n &optional but)
   (calc-invent-variables n but '(x y z t) "x"))
index 507ad53ce49f2342720596b06712b6a05fa79153..6bd663cef5b8e1ae2d8e4f2862eea1e94bc6db8c 100644 (file)
@@ -83,6 +83,7 @@
 
 (defun math-compose-expr (a prec)
   (let ((math-compose-level (1+ math-compose-level))
+        (math-expr-opers (math-expr-ops))
         spfn)
     (cond
      ((or (and (eq a math-comp-selected) a)
index 80d68306c28fa34e3cb04657740e43ed15481ff3..2676bedadba5403bd99b0a098f69f0c90c50a46a 100644 (file)
@@ -5,7 +5,7 @@
 
 ;; Author: Eli Barzilay <eli@barzilay.org>
 ;; Keywords: tools, convenience
-;; Time-stamp: <2006-02-06 13:36:00 ttn>
+;; Time-stamp: <2007-08-31 03:00:11 ttn>
 
 ;; This file is part of GNU Emacs.
 
@@ -47,6 +47,7 @@
 ;;; History:
 ;; I hate history.
 
+(eval-when-compile (require 'cl))
 (eval-and-compile
   (if (fboundp 'defgroup) nil
     (defmacro defgroup (&rest forms) nil)
@@ -278,7 +279,7 @@ Examples:
     ("IC" acos (D (acos X))    x  6)
     ("IT" atan (D (atan X))    x  6)
     ("Q"  sqrt sqrt            x  7)
-    ("^"  ^    expt            2  7)
+    ("^"  ^    calculator-expt 2  7)
     ("!"  !    calculator-fact x  7)
     (";"  1/   (/ 1 X)         1  7)
     ("_"  -    -               1  8)
@@ -596,7 +597,8 @@ specified, then it is fixed, otherwise it depends on this variable).
 `+' and `-' can be used as either binary operators or prefix unary
 operators.  Numbers can be entered with exponential notation using `e',
 except when using a non-decimal radix mode for input (in this case `e'
-will be the hexadecimal digit).
+will be the hexadecimal digit).  If the result of a calculation is too
+large (out of range for Emacs), the value of \"inf\" is returned.
 
 Here are the editing keys:
 * `RET' `='      evaluate the current expression
@@ -1779,13 +1781,57 @@ To use this, apply a binary operator (evaluate it), then call this."
        (car calculator-last-opXY) (nth 1 calculator-last-opXY) x))
     x))
 
+(defun calculator-integer-p (x)
+  "Non-nil if X is equal to an integer."
+  (condition-case nil
+      (= x (ftruncate x))
+    (error nil)))
+
+(defun calculator-expt (x y)
+  "Compute X^Y, dealing with errors appropriately."
+  (condition-case
+      nil
+      (expt x y)
+    (domain-error 0.0e+NaN)
+    (range-error
+     (cond
+      ((and (< x 1.0) (> x -1.0))
+       ;; For small x, the range error comes from large y.
+       0.0)
+      ((and (> x 0.0) (< y 0.0))
+       ;; For large positive x and negative y, the range error 
+       ;; comes from large negative y.
+       0.0)
+      ((and (> x 0.0) (> y 0.0))
+       ;; For large positive x and positive y, the range error 
+       ;; comes from large y.
+       1.0e+INF)
+      ;; For the rest, x must be large and negative.
+      ;; The range errors come from large integer y.
+      ((< y 0.0)
+       0.0)
+      ((oddp (truncate y))
+       ;; If y is odd
+       -1.0e+INF)
+      (t
+       ;; 
+       1.0e+INF)))
+    (error 0.0e+NaN)))
+
 (defun calculator-fact (x)
   "Simple factorial of X."
-  (let ((r (if (<= x 10) 1 1.0)))
-    (while (> x 0)
-      (setq r (* r (truncate x)))
-      (setq x (1- x)))
-    (+ 0.0 r)))
+  (if (and (>= x 0)
+           (calculator-integer-p x))
+      (if (= (calculator-expt (/ x 3.0) x) 1.0e+INF)
+          1.0e+INF
+        (let ((r (if (<= x 10) 1 1.0)))
+          (while (> x 0)
+            (setq r (* r (truncate x)))
+            (setq x (1- x)))
+          (+ 0.0 r)))
+    (if (= x 1.0e+INF)
+        x
+      0.0e+NaN)))
 
 (defun calculator-truncate (n)
   "Truncate N, return 0 in case of overflow."
index 7f343f300dcde5d4572cae5e57db875bfce3334f..94df068b012ddb1108b0080ef57a558e3356ac74 100644 (file)
@@ -531,9 +531,9 @@ The time should be in either 24 hour format or am/pm format."
     (message "")))
 
 
-(eval-when-compile (defvar number)
-                  (defvar original-date)
-                  (defvar diary-entries-list))
+(defvar number)
+(defvar original-date)
+(defvar diary-entries-list)
 ;;;###autoload
 (defun appt-make-list ()
   "Update the appointments list from today's diary buffer.
@@ -634,7 +634,7 @@ appointment package (if it is not already active)."
 (defun appt-sort-list (appt-list)
   "Sort an appointment list, putting earlier items at the front.
 APPT-LIST is a list of the same format as `appt-time-msg-list'."
-(sort appt-list (lambda (e1 e2) (< (caar e1) (caar e2)))))
+  (sort appt-list (lambda (e1 e2) (< (caar e1) (caar e2)))))
 
 
 (defun appt-convert-time (time2conv)
index adb9e20a3d6a986a6c3dcf1198e687ddc5c1355e..dae539b34361ffcb211ffe954268ff1f28cd9e40 100644 (file)
@@ -1,11 +1,11 @@
-;;; cal-bahai.el --- calendar functions for the Baha'i calendar.
+;;; cal-bahai.el --- calendar functions for the Bahá'í calendar. -*- coding: utf-8 -*-
 
 ;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
 ;;   Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
 ;; Keywords: calendar
-;; Human-Keywords: Baha'i calendar, Baha'i, Bahai, calendar, diary
+;; Human-Keywords: Bahá'í calendar, Bahá'í, Baha'i, Bahai, calendar, diary
 
 ;; This file is part of GNU Emacs.
 
 ;;; Commentary:
 
 ;; This collection of functions implements the features of calendar.el
-;; and diary.el that deal with the Baha'i calendar.
+;; and diary.el that deal with the Bahá'í calendar.
 
-;; The Baha'i (http://www.bahai.org) calendar system is based on a
+;; The Bahá'í (http://www.bahai.org) calendar system is based on a
 ;; solar cycle of 19 months with 19 days each.  The four remaining
-;; "intercalary" days are called the Ayyam-i-Ha (days of Ha), and are
+;; "intercalary" days are called the Ayyám-i-Há (days of Há), and are
 ;; placed between the 18th and 19th months.  They are meant as a time
 ;; of festivals preceding the 19th month, which is the month of
-;; fasting.  In Gregorian leap years, there are 5 of these days (Ha
+;; fasting.  In Gregorian leap years, there are 5 of these days (Há
 ;; has the numerical value of 5 in the arabic abjad, or
 ;; letter-to-number, reckoning).
 
 ;; Each month is named after an attribute of God, as are the 19 days
 ;; -- which have the same names as the months.  There is also a name
 ;; for each year in every 19 year cycle.  These cycles are called
-;; Vahids.  A cycle of 19 Vahids (361 years) is called a Kullu-Shay,
+;; Váhids.  A cycle of 19 Váhids (361 years) is called a Kullu-Shay,
 ;; which means "all things".
 
-;; The calendar was named the "Badi calendar" by its author, the Bab.
+;; The calendar was named the "Badí` calendar" by its author, the Báb.
 ;; It uses a week of seven days, corresponding to the Gregorian week,
 ;; each of which has its own name, again patterned after the
 ;; attributes of God.
 
-;; Note: The days of Ayyam-i-Ha are encoded as zero and negative
+;; Note: The days of Ayyám-i-Há are encoded as zero and negative
 ;; offsets from the first day of the final month.  So, (19 -3 157) is
-;; the first day of Ayyam-i-Ha, in the year 157 BE.
+;; the first day of Ayyám-i-Há, in the year 157 BE.
 
 ;;; Code:
 
 
 (require 'cal-julian)
 
-(defvar bahai-calendar-month-name-array
-  ["Baha" "Jalal" "Jamal" "`Azamat" "Nur" "Rahmat" "Kalimat" "Kamal"
-   "Asma" "`Izzat" "Mashiyyat" "`Ilm" "Qudrat" "Qawl" "Masa'il"
-   "Sharaf" "Sultan" "Mulk" "`Ala"])
+(defconst calendar-bahai-month-name-array
+  ["Bahá" "Jalál" "Jamál" "`Azamat" "Núr" "Rahmat" "Kalimát" "Kamál"
+   "Asmá" "`Izzat" "Mashiyyat" "`Ilm" "Qudrat" "Qawl" "Masá'il"
+   "Sharaf" "Sultán" "Mulk" "`Alá"])
 
-(defvar calendar-bahai-epoch (calendar-absolute-from-gregorian '(3 21 1844))
-  "Absolute date of start of Baha'i calendar = March 19, 622 A.D. (Julian).")
+(defconst calendar-bahai-epoch (calendar-absolute-from-gregorian '(3 21 1844))
+  "Absolute date of start of Bahá'í calendar = March 19, 622 A.D. (Julian).")
 
-(defun bahai-calendar-leap-year-p (year)
-  "True if YEAR is a leap year on the Baha'i calendar."
+(defun calendar-bahai-leap-year-p (year)
+  "True if YEAR is a leap year on the Bahá'í calendar."
   (calendar-leap-year-p (+ year 1844)))
 
-(defvar bahai-calendar-leap-base
+(defconst calendar-bahai-leap-base
   (+ (/ 1844 4) (- (/ 1844 100)) (/ 1844 400)))
 
 (defun calendar-absolute-from-bahai (date)
-  "Compute absolute date from Baha'i date DATE.
+  "Compute absolute date from Bahá'í date DATE.
 The absolute date is the number of days elapsed since the (imaginary)
 Gregorian date Sunday, December 31, 1 BC."
   (let* ((month (extract-calendar-month date))
@@ -89,7 +89,7 @@ Gregorian date Sunday, December 31, 1 BC."
         (leap-days (- (+ (/ prior-years 4) ; Leap days in prior years.
                          (- (/ prior-years 100))
                          (/ prior-years 400))
-                      bahai-calendar-leap-base)))
+                      calendar-bahai-leap-base)))
     (+ (1- calendar-bahai-epoch)       ; Days before epoch
        (* 365 (1- year))               ; Days in prior years.
        leap-days
@@ -98,9 +98,9 @@ Gregorian date Sunday, December 31, 1 BC."
        day)))                          ; Days so far this month.
 
 (defun calendar-bahai-from-absolute (date)
-  "Baha'i year corresponding to the absolute DATE."
+  "Bahá'í year corresponding to the absolute DATE."
   (if (< date calendar-bahai-epoch)
-      (list 0 0 0) ;; pre-Baha'i date
+      (list 0 0 0) ;; pre-Bahá'í date
     (let* ((greg (calendar-gregorian-from-absolute date))
           (year (+ (- (extract-calendar-year greg) 1844)
                    (if (or (> (extract-calendar-month greg) 3)
@@ -119,7 +119,7 @@ Gregorian date Sunday, December 31, 1 BC."
       (list month day year))))
 
 (defun calendar-bahai-date-string (&optional date)
-  "String of Baha'i date of Gregorian DATE.
+  "String of Bahá'í date of Gregorian DATE.
 Defaults to today's date if DATE is not given."
   (let* ((bahai-date (calendar-bahai-from-absolute
                        (calendar-absolute-from-gregorian
@@ -130,11 +130,11 @@ Defaults to today's date if DATE is not given."
     (let ((monthname
           (if (and (= m 19)
                    (<= d 0))
-              "Ayyam-i-Ha"
-            (aref bahai-calendar-month-name-array (1- m))))
+              "Ayyám-i-Há"
+            (aref calendar-bahai-month-name-array (1- m))))
          (day (int-to-string
                (if (<= d 0)
-                   (if (bahai-calendar-leap-year-p y)
+                   (if (calendar-bahai-leap-year-p y)
                        (+ d 5)
                      (+ d 4))
                  d)))
@@ -143,25 +143,25 @@ Defaults to today's date if DATE is not given."
          (year (int-to-string y)))
       (mapconcat 'eval calendar-date-display-form ""))))
 
-(defun calendar-print-bahai-date ()
-  "Show the Baha'i calendar equivalent of the selected date."
+(defun calendar-bahai-print-date ()
+  "Show the Bahá'í calendar equivalent of the selected date."
   (interactive)
-  (message "Baha'i date: %s"
+  (message "Bahá'í date: %s"
            (calendar-bahai-date-string (calendar-cursor-to-date t))))
 
-(defun calendar-goto-bahai-date (date &optional noecho)
-  "Move cursor to Baha'i date DATE.
-Echo Baha'i date unless NOECHO is t."
-  (interactive (bahai-prompt-for-date))
+(defun calendar-bahai-goto-date (date &optional noecho)
+  "Move cursor to Bahá'í date DATE.
+Echo Bahá'í date unless NOECHO is t."
+  (interactive (calendar-bahai-prompt-for-date))
   (calendar-goto-date (calendar-gregorian-from-absolute
                        (calendar-absolute-from-bahai date)))
-  (or noecho (calendar-print-bahai-date)))
+  (or noecho (calendar-bahai-print-date)))
 
-(defun bahai-prompt-for-date ()
-  "Ask for a Baha'i date."
+(defun calendar-bahai-prompt-for-date ()
+  "Ask for a Bahá'í date."
   (let* ((today (calendar-current-date))
          (year (calendar-read
-                "Baha'i calendar year (not 0): "
+                "Bahá'í calendar year (not 0): "
                 '(lambda (x) (/= x 0))
                 (int-to-string
                  (extract-calendar-year
@@ -170,23 +170,23 @@ Echo Baha'i date unless NOECHO is t."
          (completion-ignore-case t)
          (month (cdr (assoc
                        (completing-read
-                        "Baha'i calendar month name: "
+                        "Bahá'í calendar month name: "
                         (mapcar 'list
-                                (append bahai-calendar-month-name-array nil))
+                                (append calendar-bahai-month-name-array nil))
                         nil t)
-                      (calendar-make-alist bahai-calendar-month-name-array
+                      (calendar-make-alist calendar-bahai-month-name-array
                                            1))))
-         (day (calendar-read "Baha'i calendar day (1-19): "
+         (day (calendar-read "Bahá'í calendar day (1-19): "
                             '(lambda (x) (and (< 0 x) (<= x 19))))))
     (list (list month day year))))
 
 (defun diary-bahai-date ()
-  "Baha'i calendar equivalent of date diary entry."
-  (format "Baha'i date: %s" (calendar-bahai-date-string date)))
+  "Bahá'í calendar equivalent of date diary entry."
+  (format "Bahá'í date: %s" (calendar-bahai-date-string date)))
 
 (defun holiday-bahai (month day string)
-  "Holiday on MONTH, DAY (Baha'i) called STRING.
-If MONTH, DAY (Baha'i) is visible, the value returned is corresponding
+  "Holiday on MONTH, DAY (Bahá'í) called STRING.
+If MONTH, DAY (Bahá'í) is visible, the value returned is corresponding
 Gregorian date in the form of the list (((month day year) STRING)).  Returns
 nil if it is not visible in the current calendar window."
   (let* ((bahai-date (calendar-bahai-from-absolute
@@ -196,22 +196,22 @@ nil if it is not visible in the current calendar window."
          (y (extract-calendar-year bahai-date))
         (date))
     (if (< m 1)
-        nil ;;   Baha'i calendar doesn't apply.
+        nil ;;   Bahá'í calendar doesn't apply.
       (increment-calendar-month m y (- 10 month))
-      (if (> m 7) ;;  Baha'i date might be visible
+      (if (> m 7) ;;  Bahá'í date might be visible
           (let ((date (calendar-gregorian-from-absolute
                        (calendar-absolute-from-bahai (list month day y)))))
             (if (calendar-date-is-visible-p date)
                 (list (list date string))))))))
 
-(defun list-bahai-diary-entries ()
-  "Add any Baha'i date entries from the diary file to `diary-entries-list'.
-Baha'i date diary entries must be prefaced by an
+(defun diary-bahai-list-entries ()
+  "Add any Bahá'í date entries from the diary file to `diary-entries-list'.
+Bahá'í date diary entries must be prefaced by an
 `bahai-diary-entry-symbol' (normally a `B').  The same diary date
-forms govern the style of the Baha'i calendar entries, except that the
-Baha'i month names must be given numerically.  The Baha'i months are
-numbered from 1 to 19 with Baha being 1 and 19 being `Ala.  If a
-Baha'i date diary entry begins with a `diary-nonmarking-symbol', the
+forms govern the style of the Bahá'í calendar entries, except that the
+Bahá'í month names must be given numerically.  The Bahá'í months are
+numbered from 1 to 19 with Bahá being 1 and 19 being `Alá.  If a
+Bahá'í date diary entry begins with a `diary-nonmarking-symbol', the
 entry will appear in the diary listing, but will not be marked in the
 calendar.  This function is provided for use with the
 `nongregorian-diary-listing-hook'."
@@ -220,85 +220,85 @@ calendar.  This function is provided for use with the
             (diary-modified (buffer-modified-p))
             (gdate original-date)
             (mark (regexp-quote diary-nonmarking-symbol)))
-        (calendar-for-loop i from 1 to number do
-           (let* ((d diary-date-forms)
-                  (bdate (calendar-bahai-from-absolute
-                          (calendar-absolute-from-gregorian gdate)))
-                  (month (extract-calendar-month bdate))
-                  (day (extract-calendar-day bdate))
-                  (year (extract-calendar-year bdate)))
-             (while d
-               (let*
-                   ((date-form (if (equal (car (car d)) 'backup)
-                                   (cdr (car d))
-                                 (car d)))
-                    (backup (equal (car (car d)) 'backup))
-                    (dayname
-                     (concat
-                      (calendar-day-name gdate) "\\|"
-                      (substring (calendar-day-name gdate) 0 3) ".?"))
-                    (calendar-month-name-array
-                     bahai-calendar-month-name-array)
-                    (monthname
-                     (concat
-                      "\\*\\|"
-                      (calendar-month-name month)))
-                    (month (concat "\\*\\|0*" (int-to-string month)))
-                    (day (concat "\\*\\|0*" (int-to-string day)))
-                    (year
-                     (concat
-                      "\\*\\|0*" (int-to-string year)
-                      (if abbreviated-calendar-year
-                          (concat "\\|" (int-to-string (% year 100)))
-                        "")))
-                    (regexp
-                     (concat
-                      "\\(\\`\\|\^M\\|\n\\)" mark "?"
-                      (regexp-quote bahai-diary-entry-symbol)
-                      "\\("
-                      (mapconcat 'eval date-form "\\)\\(")
-                      "\\)"))
-                    (case-fold-search t))
-                 (goto-char (point-min))
-                 (while (re-search-forward regexp nil t)
-                   (if backup (re-search-backward "\\<" nil t))
-                   (if (and (or (char-equal (preceding-char) ?\^M)
-                                (char-equal (preceding-char) ?\n))
-                            (not (looking-at " \\|\^I")))
-                       ;;  Diary entry that consists only of date.
-                       (backward-char 1)
-                     ;;  Found a nonempty diary entry--make it visible and
-                     ;;  add it to the list.
-                     (let ((entry-start (point))
-                           (date-start))
-                       (re-search-backward "\^M\\|\n\\|\\`")
-                       (setq date-start (point))
-                       (re-search-forward "\^M\\|\n" nil t 2)
-                       (while (looking-at " \\|\^I")
-                         (re-search-forward "\^M\\|\n" nil t))
-                       (backward-char 1)
-                       (subst-char-in-region date-start (point) ?\^M ?\n t)
-                       (add-to-diary-list
-                        gdate
-                        (buffer-substring-no-properties entry-start (point))
-                        (buffer-substring-no-properties
-                         (1+ date-start) (1- entry-start)))))))
-               (setq d (cdr d))))
-           (setq gdate
-                 (calendar-gregorian-from-absolute
-                  (1+ (calendar-absolute-from-gregorian gdate)))))
-           (set-buffer-modified-p diary-modified))
-        (goto-char (point-min))))
-
-(defun mark-bahai-diary-entries ()
-  "Mark days in the calendar window that have Baha'i date diary entries.
+        (dotimes (idummy number)
+          (let* ((d diary-date-forms)
+                 (bdate (calendar-bahai-from-absolute
+                         (calendar-absolute-from-gregorian gdate)))
+                 (month (extract-calendar-month bdate))
+                 (day (extract-calendar-day bdate))
+                 (year (extract-calendar-year bdate)))
+            (while d
+              (let*
+                  ((date-form (if (equal (car (car d)) 'backup)
+                                  (cdr (car d))
+                                (car d)))
+                   (backup (equal (car (car d)) 'backup))
+                   (dayname
+                    (concat
+                     (calendar-day-name gdate) "\\|"
+                     (substring (calendar-day-name gdate) 0 3) ".?"))
+                   (calendar-month-name-array
+                    calendar-bahai-month-name-array)
+                   (monthname
+                    (concat
+                     "\\*\\|"
+                     (calendar-month-name month)))
+                   (month (concat "\\*\\|0*" (int-to-string month)))
+                   (day (concat "\\*\\|0*" (int-to-string day)))
+                   (year
+                    (concat
+                     "\\*\\|0*" (int-to-string year)
+                     (if abbreviated-calendar-year
+                         (concat "\\|" (int-to-string (% year 100)))
+                       "")))
+                   (regexp
+                    (concat
+                     "\\(\\`\\|\^M\\|\n\\)" mark "?"
+                     (regexp-quote bahai-diary-entry-symbol)
+                     "\\("
+                     (mapconcat 'eval date-form "\\)\\(")
+                     "\\)"))
+                   (case-fold-search t))
+                (goto-char (point-min))
+                (while (re-search-forward regexp nil t)
+                  (if backup (re-search-backward "\\<" nil t))
+                  (if (and (or (char-equal (preceding-char) ?\^M)
+                               (char-equal (preceding-char) ?\n))
+                           (not (looking-at " \\|\^I")))
+                      ;;  Diary entry that consists only of date.
+                      (backward-char 1)
+                    ;;  Found a nonempty diary entry--make it visible and
+                    ;;  add it to the list.
+                    (let ((entry-start (point))
+                          (date-start))
+                      (re-search-backward "\^M\\|\n\\|\\`")
+                      (setq date-start (point))
+                      (re-search-forward "\^M\\|\n" nil t 2)
+                      (while (looking-at " \\|\^I")
+                        (re-search-forward "\^M\\|\n" nil t))
+                      (backward-char 1)
+                      (subst-char-in-region date-start (point) ?\^M ?\n t)
+                      (add-to-diary-list
+                       gdate
+                       (buffer-substring-no-properties entry-start (point))
+                       (buffer-substring-no-properties
+                        (1+ date-start) (1- entry-start)))))))
+              (setq d (cdr d))))
+          (setq gdate
+                (calendar-gregorian-from-absolute
+                 (1+ (calendar-absolute-from-gregorian gdate)))))
+        (set-buffer-modified-p diary-modified))
+    (goto-char (point-min))))
+
+(defun diary-bahai-mark-entries ()
+  "Mark days in the calendar window that have Bahá'í date diary entries.
 Each entry in diary-file (or included files) visible in the calendar
-window is marked.  Baha'i date entries are prefaced by a
+window is marked.  Bahá'í date entries are prefaced by a
 bahai-diary-entry-symbol \(normally a B`I').  The same
-diary-date-forms govern the style of the Baha'i calendar entries,
-except that the Baha'i month names must be spelled in full.  The
-Baha'i months are numbered from 1 to 12 with Baha being 1 and 12 being
-`Ala.  Baha'i date diary entries that begin with a
+diary-date-forms govern the style of the Bahá'í calendar entries,
+except that the Bahá'í month names must be spelled in full.  The
+Bahá'í months are numbered from 1 to 12 with Bahá being 1 and 12 being
+`Alá.  Bahá'í date diary entries that begin with a
 diary-nonmarking-symbol will not be marked in the calendar.  This
 function is provided for use as part of the
 nongregorian-diary-marking-hook."
@@ -311,7 +311,7 @@ nongregorian-diary-marking-hook."
            (dayname (diary-name-pattern calendar-day-name-array))
            (monthname
             (concat
-             (diary-name-pattern bahai-calendar-month-name-array t)
+             (diary-name-pattern calendar-bahai-month-name-array t)
              "\\|\\*"))
            (month "[0-9]+\\|\\*")
            (day "[0-9]+\\|\\*")
@@ -395,19 +395,19 @@ nongregorian-diary-marking-hook."
                           (cdr (assoc-string
                                 mm-name
                                 (calendar-make-alist
-                                  bahai-calendar-month-name-array)
+                                  calendar-bahai-month-name-array)
                                 t)))))
-              (mark-bahai-calendar-date-pattern mm dd yy)))))
+              (calendar-bahai-mark-date-pattern mm dd yy)))))
       (setq d (cdr d)))))
 
-(defun mark-bahai-calendar-date-pattern (month day year)
-  "Mark dates in calendar window that conform to Baha'i date MONTH/DAY/YEAR.
+(defun calendar-bahai-mark-date-pattern (month day year)
+  "Mark dates in calendar window that conform to Bahá'í date MONTH/DAY/YEAR.
 A value of 0 in any position is a wildcard."
   (save-excursion
     (set-buffer calendar-buffer)
     (if (and (/= 0 month) (/= 0 day))
         (if (/= 0 year)
-            ;; Fully specified Baha'i date.
+            ;; Fully specified Bahá'í date.
             (let ((date (calendar-gregorian-from-absolute
                          (calendar-absolute-from-bahai
                           (list month day year)))))
@@ -421,9 +421,9 @@ A value of 0 in any position is a wildcard."
                  (y (extract-calendar-year bahai-date))
                  (date))
             (if (< m 1)
-                nil;;   Baha'i calendar doesn't apply.
+                nil;;   Bahá'í calendar doesn't apply.
               (increment-calendar-month m y (- 10 month))
-              (if (> m 7);;  Baha'i date might be visible
+              (if (> m 7);;  Bahá'í date might be visible
                   (let ((date (calendar-gregorian-from-absolute
                                (calendar-absolute-from-bahai
                                 (list month day y)))))
@@ -458,12 +458,12 @@ A value of 0 in any position is a wildcard."
                  (mark-visible-calendar-date
                   (calendar-gregorian-from-absolute date)))))))))
 
-(defun insert-bahai-diary-entry (arg)
+(defun diary-bahai-insert-entry (arg)
   "Insert a diary entry.
-For the Baha'i date corresponding to the date indicated by point.
+For the Bahá'í date corresponding to the date indicated by point.
 Prefix arg will make the entry nonmarking."
   (interactive "P")
-  (let* ((calendar-month-name-array bahai-calendar-month-name-array))
+  (let* ((calendar-month-name-array calendar-bahai-month-name-array))
     (make-diary-entry
      (concat
       bahai-diary-entry-symbol
@@ -474,14 +474,14 @@ Prefix arg will make the entry nonmarking."
        nil t))
      arg)))
 
-(defun insert-monthly-bahai-diary-entry (arg)
+(defun diary-bahai-insert-monthly-entry (arg)
   "Insert a monthly diary entry.
-For the day of the Baha'i month corresponding to the date indicated by point.
+For the day of the Bahá'í month corresponding to the date indicated by point.
 Prefix arg will make the entry nonmarking."
   (interactive "P")
   (let* ((calendar-date-display-form
           (if european-calendar-style '(day " * ") '("* " day )))
-         (calendar-month-name-array bahai-calendar-month-name-array))
+         (calendar-month-name-array calendar-bahai-month-name-array))
     (make-diary-entry
      (concat
       bahai-diary-entry-symbol
@@ -491,16 +491,16 @@ Prefix arg will make the entry nonmarking."
          (calendar-cursor-to-date t)))))
      arg)))
 
-(defun insert-yearly-bahai-diary-entry (arg)
+(defun diary-bahai-insert-yearly-entry (arg)
   "Insert an annual diary entry.
-For the day of the Baha'i year corresponding to the date indicated by point.
+For the day of the Bahá'í year corresponding to the date indicated by point.
 Prefix arg will make the entry nonmarking."
   (interactive "P")
   (let* ((calendar-date-display-form
           (if european-calendar-style
               '(day " " monthname)
             '(monthname " " day)))
-         (calendar-month-name-array bahai-calendar-month-name-array))
+         (calendar-month-name-array calendar-bahai-month-name-array))
     (make-diary-entry
      (concat
       bahai-diary-entry-symbol
@@ -510,7 +510,25 @@ Prefix arg will make the entry nonmarking."
          (calendar-cursor-to-date t)))))
      arg)))
 
+;; Backward compatibility.
+(define-obsolete-function-alias
+  'list-bahai-diary-entries 'diary-bahai-list-entries "23.1")
+(define-obsolete-function-alias
+  'mark-bahai-diary-entries 'diary-bahai-mark-entries "23.1")
+(define-obsolete-function-alias
+  'insert-bahai-diary-entry 'diary-bahai-insert-entry "23.1")
+(define-obsolete-function-alias
+  'insert-monthly-bahai-diary-entry 'diary-bahai-insert-monthly-entry "23.1")
+(define-obsolete-function-alias
+  'insert-yearly-bahai-diary-entry 'diary-bahai-insert-yearly-entry "23.1")
+(define-obsolete-function-alias
+  'mark-bahai-calendar-date-pattern 'calendar-bahai-mark-date-pattern "23.1")
+(define-obsolete-function-alias
+  'calendar-goto-bahai-date 'calendar-bahai-goto-date "23.1")
+(define-obsolete-function-alias
+  'calendar-print-bahai-date 'calendar-bahai-print-date "23.1")
+
 (provide 'cal-bahai)
 
-;;; arch-tag: c1cb1d67-862a-4264-a01c-41cb4df01f14
+;; arch-tag: c1cb1d67-862a-4264-a01c-41cb4df01f14
 ;;; cal-bahai.el ends here
index 052c9bf7055d385e1c73650efa8bd81cbe2629ca..02cc9bfabb27a20f5c79d53ffb453485c07e35dc 100644 (file)
@@ -352,11 +352,11 @@ nil if it is not visible in the current calendar window."
              (list (calendar-gregorian-from-absolute (+ abs-r-h 20))
                    "Hoshanah Rabbah")))
             (output-list
-             (filter-visible-calendar-holidays mandatory)))
+             (holiday-filter-visible-calendar mandatory)))
       (if all-hebrew-calendar-holidays
           (setq output-list
                 (append
-                 (filter-visible-calendar-holidays optional)
+                 (holiday-filter-visible-calendar optional)
                  output-list)))
       output-list)))
 
@@ -372,7 +372,7 @@ nil if it is not visible in the current calendar window."
                           (calendar-absolute-from-gregorian
                            (list m (calendar-last-day-of-month m y) y)))))
                  (abs-h (calendar-absolute-from-hebrew (list 9 25 h-y))))
-            (filter-visible-calendar-holidays
+            (holiday-filter-visible-calendar
              (list
               (list (calendar-gregorian-from-absolute (1- abs-h))
                     "Erev Hanukkah")
@@ -469,11 +469,11 @@ nil if it is not visible in the current calendar window."
              (list (calendar-gregorian-from-absolute (+ abs-p 51))
                    "Shavuot (second day)")))
            (output-list
-             (filter-visible-calendar-holidays mandatory)))
+             (holiday-filter-visible-calendar mandatory)))
       (if all-hebrew-calendar-holidays
           (setq output-list
                 (append
-                 (filter-visible-calendar-holidays optional)
+                 (holiday-filter-visible-calendar optional)
                  output-list)))
       output-list)))
 
@@ -485,7 +485,7 @@ nil if it is not visible in the current calendar window."
     (let* ((abs-t-a (calendar-absolute-from-hebrew
                       (list 5 9 (+ displayed-year 3760)))))
 
-      (filter-visible-calendar-holidays
+      (holiday-filter-visible-calendar
        (list
         (list (calendar-gregorian-from-absolute
                (if (= (% abs-t-a 7) 6) (- abs-t-a 20) (- abs-t-a 21)))
@@ -516,76 +516,76 @@ not be marked in the calendar.  This function is provided for use with the
             (diary-modified (buffer-modified-p))
             (gdate original-date)
             (mark (regexp-quote diary-nonmarking-symbol)))
-        (calendar-for-loop i from 1 to number do
-           (let* ((d diary-date-forms)
-                  (hdate (calendar-hebrew-from-absolute
-                          (calendar-absolute-from-gregorian gdate)))
-                  (month (extract-calendar-month hdate))
-                  (day (extract-calendar-day hdate))
-                  (year (extract-calendar-year hdate)))
-             (while d
-               (let*
-                   ((date-form (if (equal (car (car d)) 'backup)
-                                   (cdr (car d))
-                                 (car d)))
-                    (backup (equal (car (car d)) 'backup))
-                    (dayname
-                     (format "%s\\|%s\\.?"
-                             (calendar-day-name gdate)
-                             (calendar-day-name gdate 'abbrev)))
-                    (calendar-month-name-array
-                     calendar-hebrew-month-name-array-leap-year)
-                    (monthname
-                     (concat
-                      "\\*\\|"
-                      (calendar-month-name month)))
-                    (month (concat "\\*\\|0*" (int-to-string month)))
-                    (day (concat "\\*\\|0*" (int-to-string day)))
-                    (year
-                     (concat
-                      "\\*\\|0*" (int-to-string year)
-                      (if abbreviated-calendar-year
-                          (concat "\\|" (int-to-string (% year 100)))
-                        "")))
-                    (regexp
-                     (concat
-                      "\\(\\`\\|\^M\\|\n\\)" mark "?"
-                      (regexp-quote hebrew-diary-entry-symbol)
-                      "\\("
-                      (mapconcat 'eval date-form "\\)\\(")
-                      "\\)"))
-                    (case-fold-search t))
-                 (goto-char (point-min))
-                 (while (re-search-forward regexp nil t)
-                   (if backup (re-search-backward "\\<" nil t))
-                   (if (and (or (char-equal (preceding-char) ?\^M)
-                                (char-equal (preceding-char) ?\n))
-                            (not (looking-at " \\|\^I")))
-                       ;;  Diary entry that consists only of date.
-                       (backward-char 1)
-                     ;;  Found a nonempty diary entry--make it visible and
-                     ;;  add it to the list.
-                     (let ((entry-start (point))
-                           (date-start))
-                       (re-search-backward "\^M\\|\n\\|\\`")
-                       (setq date-start (point))
-                       (re-search-forward "\^M\\|\n" nil t 2)
-                       (while (looking-at " \\|\^I")
-                         (re-search-forward "\^M\\|\n" nil t))
-                       (backward-char 1)
-                       (subst-char-in-region date-start (point) ?\^M ?\n t)
-                       (add-to-diary-list
-                        gdate
-                        (buffer-substring-no-properties entry-start (point))
-                        (buffer-substring-no-properties
-                         (1+ date-start) (1- entry-start))
-                        (copy-marker entry-start))))))
-               (setq d (cdr d))))
-           (setq gdate
-                 (calendar-gregorian-from-absolute
-                  (1+ (calendar-absolute-from-gregorian gdate)))))
-           (set-buffer-modified-p diary-modified))
-        (goto-char (point-min))))
+        (dotimes (idummy number)
+          (let* ((d diary-date-forms)
+                 (hdate (calendar-hebrew-from-absolute
+                         (calendar-absolute-from-gregorian gdate)))
+                 (month (extract-calendar-month hdate))
+                 (day (extract-calendar-day hdate))
+                 (year (extract-calendar-year hdate)))
+            (while d
+              (let*
+                  ((date-form (if (equal (car (car d)) 'backup)
+                                  (cdr (car d))
+                                (car d)))
+                   (backup (equal (car (car d)) 'backup))
+                   (dayname
+                    (format "%s\\|%s\\.?"
+                            (calendar-day-name gdate)
+                            (calendar-day-name gdate 'abbrev)))
+                   (calendar-month-name-array
+                    calendar-hebrew-month-name-array-leap-year)
+                   (monthname
+                    (concat
+                     "\\*\\|"
+                     (calendar-month-name month)))
+                   (month (concat "\\*\\|0*" (int-to-string month)))
+                   (day (concat "\\*\\|0*" (int-to-string day)))
+                   (year
+                    (concat
+                     "\\*\\|0*" (int-to-string year)
+                     (if abbreviated-calendar-year
+                         (concat "\\|" (int-to-string (% year 100)))
+                       "")))
+                   (regexp
+                    (concat
+                     "\\(\\`\\|\^M\\|\n\\)" mark "?"
+                     (regexp-quote hebrew-diary-entry-symbol)
+                     "\\("
+                     (mapconcat 'eval date-form "\\)\\(")
+                     "\\)"))
+                   (case-fold-search t))
+                (goto-char (point-min))
+                (while (re-search-forward regexp nil t)
+                  (if backup (re-search-backward "\\<" nil t))
+                  (if (and (or (char-equal (preceding-char) ?\^M)
+                               (char-equal (preceding-char) ?\n))
+                           (not (looking-at " \\|\^I")))
+                      ;;  Diary entry that consists only of date.
+                      (backward-char 1)
+                    ;;  Found a nonempty diary entry--make it visible and
+                    ;;  add it to the list.
+                    (let ((entry-start (point))
+                          (date-start))
+                      (re-search-backward "\^M\\|\n\\|\\`")
+                      (setq date-start (point))
+                      (re-search-forward "\^M\\|\n" nil t 2)
+                      (while (looking-at " \\|\^I")
+                        (re-search-forward "\^M\\|\n" nil t))
+                      (backward-char 1)
+                      (subst-char-in-region date-start (point) ?\^M ?\n t)
+                      (add-to-diary-list
+                       gdate
+                       (buffer-substring-no-properties entry-start (point))
+                       (buffer-substring-no-properties
+                        (1+ date-start) (1- entry-start))
+                       (copy-marker entry-start))))))
+              (setq d (cdr d))))
+          (setq gdate
+                (calendar-gregorian-from-absolute
+                 (1+ (calendar-absolute-from-gregorian gdate)))))
+        (set-buffer-modified-p diary-modified))
+    (goto-char (point-min))))
 
 (defun mark-hebrew-calendar-date-pattern (month day year)
   "Mark dates in calendar window that conform to Hebrew date MONTH/DAY/YEAR.
index 850a3e2a326d0548e538edaf30efce31dc25b35f..c562437fc14c8cd0fca74402b7bcbd98e9277fba 100644 (file)
@@ -210,76 +210,76 @@ not be marked in the calendar.  This function is provided for use with the
             (diary-modified (buffer-modified-p))
             (gdate original-date)
             (mark (regexp-quote diary-nonmarking-symbol)))
-        (calendar-for-loop i from 1 to number do
-           (let* ((d diary-date-forms)
-                  (idate (calendar-islamic-from-absolute
-                          (calendar-absolute-from-gregorian gdate)))
-                  (month (extract-calendar-month idate))
-                  (day (extract-calendar-day idate))
-                  (year (extract-calendar-year idate)))
-             (while d
-               (let*
-                   ((date-form (if (equal (car (car d)) 'backup)
-                                   (cdr (car d))
-                                 (car d)))
-                    (backup (equal (car (car d)) 'backup))
-                    (dayname
-                     (format "%s\\|%s\\.?"
-                      (calendar-day-name gdate)
-                      (calendar-day-name gdate 'abbrev)))
-                    (calendar-month-name-array
-                     calendar-islamic-month-name-array)
-                    (monthname
-                     (concat
-                      "\\*\\|"
-                      (calendar-month-name month)))
-                    (month (concat "\\*\\|0*" (int-to-string month)))
-                    (day (concat "\\*\\|0*" (int-to-string day)))
-                    (year
-                     (concat
-                      "\\*\\|0*" (int-to-string year)
-                      (if abbreviated-calendar-year
-                          (concat "\\|" (int-to-string (% year 100)))
-                        "")))
-                    (regexp
-                     (concat
-                      "\\(\\`\\|\^M\\|\n\\)" mark "?"
-                      (regexp-quote islamic-diary-entry-symbol)
-                      "\\("
-                      (mapconcat 'eval date-form "\\)\\(")
-                      "\\)"))
-                    (case-fold-search t))
-                 (goto-char (point-min))
-                 (while (re-search-forward regexp nil t)
-                   (if backup (re-search-backward "\\<" nil t))
-                   (if (and (or (char-equal (preceding-char) ?\^M)
-                                (char-equal (preceding-char) ?\n))
-                            (not (looking-at " \\|\^I")))
-                       ;;  Diary entry that consists only of date.
-                       (backward-char 1)
-                     ;;  Found a nonempty diary entry--make it visible and
-                     ;;  add it to the list.
-                     (let ((entry-start (point))
-                           (date-start))
-                       (re-search-backward "\^M\\|\n\\|\\`")
-                       (setq date-start (point))
-                       (re-search-forward "\^M\\|\n" nil t 2)
-                       (while (looking-at " \\|\^I")
-                         (re-search-forward "\^M\\|\n" nil t))
-                       (backward-char 1)
-                       (subst-char-in-region date-start (point) ?\^M ?\n t)
-                       (add-to-diary-list
-                        gdate
-                        (buffer-substring-no-properties entry-start (point))
-                        (buffer-substring-no-properties
-                         (1+ date-start) (1- entry-start))
-                        (copy-marker entry-start))))))
-               (setq d (cdr d))))
-           (setq gdate
-                 (calendar-gregorian-from-absolute
-                  (1+ (calendar-absolute-from-gregorian gdate)))))
-           (set-buffer-modified-p diary-modified))
-        (goto-char (point-min))))
+        (dotimes (idummy number)
+          (let* ((d diary-date-forms)
+                 (idate (calendar-islamic-from-absolute
+                         (calendar-absolute-from-gregorian gdate)))
+                 (month (extract-calendar-month idate))
+                 (day (extract-calendar-day idate))
+                 (year (extract-calendar-year idate)))
+            (while d
+              (let*
+                  ((date-form (if (equal (car (car d)) 'backup)
+                                  (cdr (car d))
+                                (car d)))
+                   (backup (equal (car (car d)) 'backup))
+                   (dayname
+                    (format "%s\\|%s\\.?"
+                            (calendar-day-name gdate)
+                            (calendar-day-name gdate 'abbrev)))
+                   (calendar-month-name-array
+                    calendar-islamic-month-name-array)
+                   (monthname
+                    (concat
+                     "\\*\\|"
+                     (calendar-month-name month)))
+                   (month (concat "\\*\\|0*" (int-to-string month)))
+                   (day (concat "\\*\\|0*" (int-to-string day)))
+                   (year
+                    (concat
+                     "\\*\\|0*" (int-to-string year)
+                     (if abbreviated-calendar-year
+                         (concat "\\|" (int-to-string (% year 100)))
+                       "")))
+                   (regexp
+                    (concat
+                     "\\(\\`\\|\^M\\|\n\\)" mark "?"
+                     (regexp-quote islamic-diary-entry-symbol)
+                     "\\("
+                     (mapconcat 'eval date-form "\\)\\(")
+                     "\\)"))
+                   (case-fold-search t))
+                (goto-char (point-min))
+                (while (re-search-forward regexp nil t)
+                  (if backup (re-search-backward "\\<" nil t))
+                  (if (and (or (char-equal (preceding-char) ?\^M)
+                               (char-equal (preceding-char) ?\n))
+                           (not (looking-at " \\|\^I")))
+                      ;;  Diary entry that consists only of date.
+                      (backward-char 1)
+                    ;;  Found a nonempty diary entry--make it visible and
+                    ;;  add it to the list.
+                    (let ((entry-start (point))
+                          (date-start))
+                      (re-search-backward "\^M\\|\n\\|\\`")
+                      (setq date-start (point))
+                      (re-search-forward "\^M\\|\n" nil t 2)
+                      (while (looking-at " \\|\^I")
+                        (re-search-forward "\^M\\|\n" nil t))
+                      (backward-char 1)
+                      (subst-char-in-region date-start (point) ?\^M ?\n t)
+                      (add-to-diary-list
+                       gdate
+                       (buffer-substring-no-properties entry-start (point))
+                       (buffer-substring-no-properties
+                        (1+ date-start) (1- entry-start))
+                       (copy-marker entry-start))))))
+              (setq d (cdr d))))
+          (setq gdate
+                (calendar-gregorian-from-absolute
+                 (1+ (calendar-absolute-from-gregorian gdate)))))
+        (set-buffer-modified-p diary-modified))
+    (goto-char (point-min))))
 
 (defun mark-islamic-diary-entries ()
   "Mark days in the calendar window that have Islamic date diary entries.
index 7f9451d1b9abaa29098d59d3173f13e566efad58..47fd4fc4c2adf3f68488b5fc7542023e0f64b1fb 100644 (file)
 
 ;;; Code:
 
-(defvar displayed-month)
 (defvar displayed-year)
 
-;; Don't require calendar because calendar requires us.
-;; (eval-when-compile (require 'calendar))
-(defvar calendar-mode-map)
-
-(define-key calendar-mode-map [menu-bar edit] 'undefined)
-(define-key calendar-mode-map [menu-bar search] 'undefined)
-
-(define-key calendar-mode-map [down-mouse-2] 'calendar-mouse-2-date-menu)
-(define-key calendar-mode-map [mouse-2] 'ignore)
-
-(defvar calendar-mouse-3-map (make-sparse-keymap "Calendar"))
-(define-key calendar-mode-map [down-mouse-3] calendar-mouse-3-map)
-
-(define-key calendar-mode-map [menu-bar moon]
-  (cons "Moon" (make-sparse-keymap "Moon")))
-
-(define-key calendar-mode-map [menu-bar moon moon]
-  '("Lunar Phases" . calendar-phases-of-moon))
-
-(define-key calendar-mode-map [menu-bar diary]
-  (cons "Diary" (make-sparse-keymap "Diary")))
-
-(define-key calendar-mode-map [menu-bar diary heb]
-  '("Insert Hebrew" . calendar-mouse-insert-hebrew-diary-entry))
-(define-key calendar-mode-map [menu-bar diary isl]
-  '("Insert Islamic" . calendar-mouse-insert-islamic-diary-entry))
-(define-key calendar-mode-map [menu-bar diary baha]
-  '("Insert Baha'i" . calendar-mouse-insert-bahai-diary-entry))
-(define-key calendar-mode-map [menu-bar diary cyc]
-  '("Insert Cyclic" . insert-cyclic-diary-entry))
-(define-key calendar-mode-map [menu-bar diary blk]
-  '("Insert Block" . insert-block-diary-entry))
-(define-key calendar-mode-map [menu-bar diary ann]
-  '("Insert Anniversary" . insert-anniversary-diary-entry))
-(define-key calendar-mode-map [menu-bar diary yr]
-  '("Insert Yearly" . insert-yearly-diary-entry))
-(define-key calendar-mode-map [menu-bar diary mon]
-  '("Insert Monthly" . insert-monthly-diary-entry))
-(define-key calendar-mode-map [menu-bar diary wk]
-  '("Insert Weekly" . insert-weekly-diary-entry))
-(define-key calendar-mode-map [menu-bar diary ent]
-  '("Insert Diary Entry" . insert-diary-entry))
-(define-key calendar-mode-map [menu-bar diary all]
-  '("Show All" . diary-show-all-entries))
-(define-key calendar-mode-map [menu-bar diary mark]
- '("Mark All" . mark-diary-entries))
-(define-key calendar-mode-map [menu-bar diary view]
-  '("Cursor Date" . diary-view-entries))
-(define-key calendar-mode-map [menu-bar diary view]
-  '("Other File" . view-other-diary-entries))
-
-(define-key calendar-mode-map [menu-bar Holidays]
-  (cons "Holidays" (make-sparse-keymap "Holidays")))
-
-(define-key calendar-mode-map [menu-bar goto]
-  (cons "Goto" (make-sparse-keymap "Goto")))
-
-(define-key calendar-mode-map [menu-bar goto french]
-  '("French Date" . calendar-goto-french-date))
-(define-key calendar-mode-map [menu-bar goto mayan]
-  (cons "Mayan Date" (make-sparse-keymap "Mayan")))
-(define-key calendar-mode-map [menu-bar goto ethiopic]
-  '("Ethiopic Date" . calendar-goto-ethiopic-date))
-(define-key calendar-mode-map [menu-bar goto coptic]
-  '("Coptic Date" . calendar-goto-coptic-date))
-(define-key calendar-mode-map [menu-bar goto chinese]
-  '("Chinese Date" . calendar-goto-chinese-date))
-(define-key calendar-mode-map [menu-bar goto julian]
-  '("Julian Date" . calendar-goto-julian-date))
-(define-key calendar-mode-map [menu-bar goto islamic]
-  '("Islamic Date" . calendar-goto-islamic-date))
-(define-key calendar-mode-map [menu-bar goto persian]
-  '("Baha'i Date" . calendar-goto-bahai-date))
-(define-key calendar-mode-map [menu-bar goto persian]
-  '("Persian Date" . calendar-goto-persian-date))
-(define-key calendar-mode-map [menu-bar goto hebrew]
-  '("Hebrew Date" . calendar-goto-hebrew-date))
-(define-key calendar-mode-map [menu-bar goto astro]
-  '("Astronomical Date" . calendar-goto-astro-day-number))
-(define-key calendar-mode-map [menu-bar goto iso]
-  '("ISO Date" . calendar-goto-iso-date))
-(define-key calendar-mode-map [menu-bar goto iso-week]
-  '("ISO Week" . calendar-goto-iso-week))
-(define-key calendar-mode-map [menu-bar goto day-of-year]
-  '("Day of Year" . calendar-goto-day-of-year))
-(define-key calendar-mode-map [menu-bar goto gregorian]
-  '("Other Date" . calendar-goto-date))
-(define-key calendar-mode-map [menu-bar goto end-of-year]
-  '("End of Year" . calendar-end-of-year))
-(define-key calendar-mode-map [menu-bar goto beginning-of-year]
-  '("Beginning of Year" . calendar-beginning-of-year))
-(define-key calendar-mode-map [menu-bar goto end-of-month]
-  '("End of Month" . calendar-end-of-month))
-(define-key calendar-mode-map [menu-bar goto beginning-of-month]
-  '("Beginning of Month" . calendar-beginning-of-month))
-(define-key calendar-mode-map [menu-bar goto end-of-week]
-  '("End of Week" . calendar-end-of-week))
-(define-key calendar-mode-map [menu-bar goto beginning-of-week]
-  '("Beginning of Week" . calendar-beginning-of-week))
-(define-key calendar-mode-map [menu-bar goto today]
-  '("Today" . calendar-goto-today))
-
-
-(define-key calendar-mode-map [menu-bar goto mayan prev-rnd]
-  '("Previous Round" . calendar-previous-calendar-round-date))
-(define-key calendar-mode-map [menu-bar goto mayan nxt-rnd]
-  '("Next Round" . calendar-next-calendar-round-date))
-(define-key calendar-mode-map [menu-bar goto mayan prev-haab]
-  '("Previous Haab" . calendar-previous-haab-date))
-(define-key calendar-mode-map [menu-bar goto mayan next-haab]
-  '("Next Haab" . calendar-next-haab-date))
-(define-key calendar-mode-map [menu-bar goto mayan prev-tzol]
-  '("Previous Tzolkin" . calendar-previous-tzolkin-date))
-(define-key calendar-mode-map [menu-bar goto mayan next-tzol]
-  '("Next Tzolkin" . calendar-next-tzolkin-date))
-
-(define-key calendar-mode-map [menu-bar scroll]
-  (cons "Scroll" (make-sparse-keymap "Scroll")))
-
-(define-key calendar-mode-map [menu-bar scroll bk-12]
-  '("Backward 1 Year" . "4\ev"))
-(define-key calendar-mode-map [menu-bar scroll bk-3]
-  '("Backward 3 Months" . scroll-calendar-right-three-months))
-(define-key calendar-mode-map [menu-bar scroll bk-1]
-  '("Backward 1 Month" . scroll-calendar-right))
-(define-key calendar-mode-map [menu-bar scroll fwd-12]
-  '("Forward 1 Year" . "4\C-v"))
-(define-key calendar-mode-map [menu-bar scroll fwd-3]
-  '("Forward 3 Months" . scroll-calendar-left-three-months))
-(define-key calendar-mode-map [menu-bar scroll fwd-1]
-  '("Forward 1 Month" . scroll-calendar-left))
-
-(defun calendar-flatten (list)
-  "Flatten LIST eliminating sublists structure; result is a list of atoms.
-This is the same as the preorder list of leaves in a rooted forest."
-  (if (atom list)
-      (list list)
-    (if (cdr list)
-        (append (calendar-flatten (car list)) (calendar-flatten (cdr list)))
-      (calendar-flatten (car list)))))
+(defconst cal-menu-moon-menu
+  '("Moon"
+    ["Lunar Phases" calendar-phases-of-moon]))
+
+(defconst cal-menu-diary-menu
+  '("Diary"
+    ["Other File" view-other-diary-entries]
+    ["Cursor Date" diary-view-entries]
+    ["Mark All" mark-diary-entries]
+    ["Show All" diary-show-all-entries]
+    ["Insert Diary Entry" insert-diary-entry]
+    ["Insert Weekly" insert-weekly-diary-entry]
+    ["Insert Monthly" insert-monthly-diary-entry]
+    ["Insert Yearly" insert-yearly-diary-entry]
+    ["Insert Anniversary" insert-anniversary-diary-entry]
+    ["Insert Block" insert-block-diary-entry]
+    ["Insert Cyclic" insert-cyclic-diary-entry]
+    ("Insert Baha'i"
+     [" " nil :suffix (calendar-bahai-date-string (calendar-cursor-to-date))]
+     ["One time" diary-bahai-insert-entry]
+     ["Monthly" diary-bahai-insert-monthly-entry]
+     ["Yearly" diary-bahai-insert-yearly-entry])
+    ("Insert Islamic"
+     [" " nil :suffix (calendar-islamic-date-string (calendar-cursor-to-date))]
+     ["One time" insert-islamic-diary-entry]
+     ["Monthly" insert-monthly-islamic-diary-entry]
+     ["Yearly" insert-yearly-islamic-diary-entry])
+    ("Insert Hebrew"
+     [" " nil :suffix (calendar-hebrew-date-string (calendar-cursor-to-date))]
+     ["One time" insert-hebrew-diary-entry]
+     ["Monthly" insert-monthly-hebrew-diary-entry]
+     ["Yearly" insert-yearly-hebrew-diary-entry])))
+
+(defun cal-menu-holiday-window-suffix ()
+  (let ((my1 (calendar-increment-month -1))
+        (my2 (calendar-increment-month 1)))
+    (if (= (cdr my1) (cdr my2))
+        (format "%s-%s, %d"
+                (calendar-month-name (car my1) 'abbrev)
+                (calendar-month-name (car my2) 'abbrev)
+                (cdr my2))
+      (format "%s, %d-%s, %d"
+              (calendar-month-name (car my1) 'abbrev)
+              (cdr my1)
+              (calendar-month-name (car my2) 'abbrev)
+              (cdr my2)))))
+
+(defconst cal-menu-holidays-menu
+  `("Holidays"
+    ["For Cursor Date -" calendar-cursor-holidays
+     :suffix (calendar-date-string (calendar-cursor-to-date) t t)
+     :visible (calendar-cursor-to-date)]
+    ["For Window -" calendar-list-holidays
+     :suffix (cal-menu-holiday-window-suffix)]
+    ["For Today -" cal-menu-today-holidays
+     :suffix (calendar-date-string (calendar-current-date) t t)]
+    "--"
+    ,@(let ((l ()))
+        ;; Show 11 years--5 before, 5 after year of middle month.
+        (dotimes (i 11)
+          (push (vector "For Year"
+                        `(lambda ()
+                           (interactive)
+                           (holiday-list (+ displayed-year ,(- i 5))))
+                        :suffix `(number-to-string (+ displayed-year ,(- i 5))))
+                l))
+        (nreverse l))
+    "--"
+    ["Unmark Calendar" calendar-unmark]
+    ["Mark Holidays" mark-calendar-holidays]))
+
+(defconst cal-menu-goto-menu
+  '("Goto"
+    ["Today" calendar-goto-today]
+    ["Beginning of Week" calendar-beginning-of-week]
+    ["End of Week" calendar-end-of-week]
+    ["Beginning of Month" calendar-beginning-of-month]
+    ["End of Month" calendar-end-of-month]
+    ["Beginning of Year" calendar-beginning-of-year]
+    ["End of Year" calendar-end-of-year]
+    ["Other Date" calendar-goto-date]
+    ["Day of Year" calendar-goto-day-of-year]
+    ["ISO Week" calendar-goto-iso-week]
+    ["ISO Date" calendar-goto-iso-date]
+    ["Astronomical Date" calendar-goto-astro-day-number]
+    ["Hebrew Date" calendar-goto-hebrew-date]
+    ["Persian Date" calendar-goto-persian-date]
+    ["Baha'i Date" calendar-bahai-goto-date]
+    ["Islamic Date" calendar-goto-islamic-date]
+    ["Julian Date" calendar-goto-julian-date]
+    ["Chinese Date" calendar-goto-chinese-date]
+    ["Coptic Date" calendar-goto-coptic-date]
+    ["Ethiopic Date" calendar-goto-ethiopic-date]
+    ("Mayan Date"
+     ["Next Tzolkin" calendar-next-tzolkin-date]
+     ["Previous Tzolkin" calendar-previous-tzolkin-date]
+     ["Next Haab" calendar-next-haab-date]
+     ["Previous Haab" calendar-previous-haab-date]
+     ["Next Round" calendar-next-calendar-round-date]
+     ["Previous Round" calendar-previous-calendar-round-date])
+    ["French Date" calendar-goto-french-date]))
+
+(defconst cal-menu-scroll-menu
+  '("Scroll"
+    ["Forward 1 Month" calendar-scroll-left]
+    ["Forward 3 Months" calendar-scroll-left-three-months]
+    ["Forward 1 Year" "4\C-v"]
+    ["Backward 1 Month" calendar-scroll-right]
+    ["Backward 3 Months" calendar-scroll-right-three-months]
+    ["Backward 1 Year" "4\ev"]))
 
 (defun cal-menu-x-popup-menu (position menu)
   "Like `x-popup-menu', but prints an error message if popup menus are
@@ -188,117 +157,29 @@ not available."
   "Display a list of the holidays of the selected date's year."
   (interactive)
   (let ((year (extract-calendar-year (calendar-cursor-to-date))))
-    (list-holidays year year)))
+    (holiday-list year year)))
 
 (defun cal-menu-list-holidays-following-year ()
   "Display a list of the holidays of the following year."
   (interactive)
   (let ((year (1+ (extract-calendar-year (calendar-cursor-to-date)))))
-    (list-holidays year year)))
+    (holiday-list year year)))
 
 (defun cal-menu-list-holidays-previous-year ()
   "Display a list of the holidays of the previous year."
   (interactive)
   (let ((year (1- (extract-calendar-year (calendar-cursor-to-date)))))
-    (list-holidays year year)))
-
-(defun cal-menu-update ()
-  ;; Update the holiday part of calendar menu bar for the current display.
-  (condition-case nil
-      (if (eq major-mode 'calendar-mode)
-          (let ((l))
-            ;; Show 11 years--5 before, 5 after year of middle month
-            (dotimes (i 11)
-              (let ((y (+ displayed-year -5 i)))
-                (push (vector (format "For Year %s" y)
-                              (list (list 'lambda 'nil '(interactive)
-                                          (list 'list-holidays y y)))
-                              t)
-                      l)))
-            (setq l (cons ["Mark Holidays" mark-calendar-holidays t]
-                          (cons ["Unmark Calendar" calendar-unmark t]
-                                (cons "--" l))))
-            (define-key calendar-mode-map [menu-bar Holidays]
-             (cons "Holidays" (easy-menu-create-menu "Holidays" (nreverse l))))
-            (define-key calendar-mode-map [menu-bar Holidays separator]
-              '("--"))
-            (define-key calendar-mode-map [menu-bar Holidays today]
-                `(,(format "For Today (%s)"
-                           (calendar-date-string (calendar-current-date) t t))
-                  . cal-menu-today-holidays))
-            (let ((title
-                   (let ((my1 (calendar-increment-month -1))
-                         (my2 (calendar-increment-month 1)))
-                     (if (= (cdr my1) (cdr my2))
-                         (format "%s-%s, %d"
-                                 (calendar-month-name (car my1) 'abbrev)
-                                 (calendar-month-name (car my2) 'abbrev)
-                                 (cdr my2))
-                       (format "%s, %d-%s, %d"
-                               (calendar-month-name (car my1) 'abbrev)
-                               (cdr my1)
-                               (calendar-month-name (car my2) 'abbrev)
-                               (cdr my2))))))
-              (define-key  calendar-mode-map [menu-bar Holidays 3-month]
-                `(,(format "For Window (%s)" title)
-                  . list-calendar-holidays)))
-            (let ((date (calendar-cursor-to-date)))
-              (if date
-                  (define-key calendar-mode-map [menu-bar Holidays 1-day]
-                    `(,(format "For Cursor Date (%s)"
-                               (calendar-date-string date t t))
-                      . calendar-cursor-holidays))))))
-    ;; Try to avoid entering infinite beep mode in case of errors.
-    (error (ding))))
+    (holiday-list year year)))
 
 (defun calendar-event-to-date (&optional error)
   "Date of last event.
 If event is not on a specific date, signals an error if optional parameter
 ERROR is t, otherwise just returns nil."
-  (save-excursion
-    (set-buffer (window-buffer (posn-window (event-start last-input-event))))
+  (with-current-buffer
+      (window-buffer (posn-window (event-start last-input-event)))
     (goto-char (posn-point (event-start last-input-event)))
     (calendar-cursor-to-date error)))
 
-(defun calendar-mouse-insert-hebrew-diary-entry (event)
-  "Pop up menu to insert a Hebrew-date diary entry."
-  (interactive "e")
-  (let ((hebrew-selection
-         (cal-menu-x-popup-menu
-          event
-          (list "Hebrew insert menu"
-                (list (calendar-hebrew-date-string (calendar-cursor-to-date))
-                      '("One time" . insert-hebrew-diary-entry)
-                      '("Monthly" . insert-monthly-hebrew-diary-entry)
-                      '("Yearly" . insert-yearly-hebrew-diary-entry))))))
-    (and hebrew-selection (call-interactively hebrew-selection))))
-
-(defun calendar-mouse-insert-islamic-diary-entry (event)
-  "Pop up menu to insert an Islamic-date diary entry."
-  (interactive "e")
-  (let ((islamic-selection
-         (cal-menu-x-popup-menu
-          event
-          (list "Islamic insert menu"
-                (list (calendar-islamic-date-string (calendar-cursor-to-date))
-                      '("One time" . insert-islamic-diary-entry)
-                      '("Monthly" . insert-monthly-islamic-diary-entry)
-                      '("Yearly" . insert-yearly-islamic-diary-entry))))))
-    (and islamic-selection (call-interactively islamic-selection))))
-
-(defun calendar-mouse-insert-bahai-diary-entry (event)
-  "Pop up menu to insert an Baha'i-date diary entry."
-  (interactive "e")
-  (let ((bahai-selection
-         (x-popup-menu
-          event
-          (list "Baha'i insert menu"
-                (list (calendar-bahai-date-string (calendar-cursor-to-date))
-                      '("One time" . insert-bahai-diary-entry)
-                      '("Monthly" . insert-monthly-bahai-diary-entry)
-                      '("Yearly" . insert-yearly-bahai-diary-entry))))))
-    (and bahai-selection (call-interactively bahai-selection))))
-
 (defun calendar-mouse-sunrise/sunset ()
   "Show sunrise/sunset times for mouse-selected date."
   (interactive)
@@ -313,14 +194,14 @@ ERROR is t, otherwise just returns nil."
     (calendar-cursor-to-date (calendar-current-date))
     (calendar-cursor-holidays)))
 
-(autoload 'check-calendar-holidays "holidays")
+(autoload 'calendar-check-holidays "holidays")
 (autoload 'diary-list-entries "diary-lib")
 
 (defun calendar-mouse-holidays (&optional event)
   "Pop up menu of holidays for mouse selected date."
   (interactive "e")
   (let* ((date (calendar-event-to-date))
-         (l (mapcar 'list (check-calendar-holidays date)))
+         (l (mapcar 'list (calendar-check-holidays date)))
          (selection
           (cal-menu-x-popup-menu
            event
@@ -337,15 +218,15 @@ Use optional DATE and alternative file DIARY.
 
 Any holidays are shown if `holidays-in-diary-buffer' is t."
   (interactive "i\ni\ne")
-  (let* ((date (if date date (calendar-event-to-date)))
+  (let* ((date (or date (calendar-event-to-date)))
          (diary-file (if diary diary diary-file))
          (diary-list-include-blanks nil)
          (diary-display-hook 'ignore)
          (diary-entries
-          (mapcar (lambda (x) (split-string (car (cdr x)) "\^M\\|\n"))
+          (mapcar (lambda (x) (split-string (cadr x) "\n"))
                   (diary-list-entries date 1 'list-only)))
          (holidays (if holidays-in-diary-buffer
-                       (check-calendar-holidays date)))
+                       (calendar-check-holidays date)))
          (title (concat "Diary entries "
                         (if diary (format "from %s " diary) "")
                         "for "
@@ -360,7 +241,7 @@ Any holidays are shown if `holidays-in-diary-buffer' is t."
                   (if holidays
                       (list "--shadow-etched-in" "--shadow-etched-in"))
                   (if diary-entries
-                      (mapcar 'list (calendar-flatten diary-entries))
+                      (mapcar 'list (apply 'append diary-entries))
                     '("None")))))))
     (and selection (call-interactively selection))))
 
@@ -543,88 +424,49 @@ The output is in landscape format, one month to a page."
   (set-buffer (window-buffer (posn-window (event-start last-input-event))))
   (calendar-goto-date date))
 
-(defun calendar-mouse-2-date-menu (event)
+(easy-menu-define cal-menu-context-mouse-menu nil
   "Pop up menu for Mouse-2 for selected date in the calendar window."
-  (interactive "e")
-  (let* ((date (calendar-event-to-date t))
-         (selection
-          (cal-menu-x-popup-menu
-           event
-           (list (calendar-date-string date t nil)
-                 (list
-                  ""
-                  '("Holidays" . calendar-mouse-holidays)
-                  '("Mark date" . calendar-mouse-set-mark)
-                  '("Sunrise/sunset" . calendar-mouse-sunrise/sunset)
-                  '("Other calendars" . calendar-mouse-print-dates)
-                  '("Prepare LaTeX buffer" . calendar-mouse-cal-tex-menu)
-                  '("Diary entries" . calendar-mouse-view-diary-entries)
-                  '("Insert diary entry" . calendar-mouse-insert-diary-entry)
-                  '("Other diary file entries"
-                    . calendar-mouse-view-other-diary-entries)
-                  )))))
-    (and selection (call-interactively selection))))
-
-(defun calendar-mouse-cal-tex-menu (event)
-  "Pop up submenu for Mouse-2 for cal-tex commands for selected date in the calendar window."
-  (interactive "e")
-  (let* ((selection
-          (cal-menu-x-popup-menu
-           event
-           (list (calendar-date-string (calendar-event-to-date t) t nil)
-                 (list
-                  ""
-                  '("Daily (1 page)" . cal-tex-mouse-day)
-                  '("Weekly (1 page)" . cal-tex-mouse-week)
-                  '("Weekly (2 pages)" . cal-tex-mouse-week2)
-                  '("Weekly (other style; 1 page)" . cal-tex-mouse-week-iso)
-                  '("Weekly (yet another style; 1 page)" .
-                    cal-tex-mouse-week-monday)
-                  '("Monthly" . cal-tex-mouse-month)
-                  '("Monthly (landscape)" . cal-tex-mouse-month-landscape)
-                  '("Yearly" . cal-tex-mouse-year)
-                  '("Yearly (landscape)" . cal-tex-mouse-year-landscape)
-                  '("Filofax styles" . cal-tex-mouse-filofax)
-                  )))))
-    (and selection (call-interactively selection))))
-
-(defun cal-tex-mouse-filofax (event)
-  "Pop up sub-submenu for Mouse-2 for Filofax cal-tex commands for selected date."
-  (interactive "e")
-  (let* ((selection
-          (cal-menu-x-popup-menu
-           event
-           (list (calendar-date-string (calendar-event-to-date t) t nil)
-                 (list
-                  ""
-                  '("Filofax Daily (one-day-per-page)" .
-                    cal-tex-mouse-filofax-daily)
-                  '("Filofax Weekly (2-weeks-at-a-glance)" .
-                    cal-tex-mouse-filofax-2week)
-                  '("Filofax Weekly (week-at-a-glance)" .
-                    cal-tex-mouse-filofax-week)
-                  '("Filofax Yearly" . cal-tex-mouse-filofax-year)
-                  )))))
-    (and selection (call-interactively selection))))
-
-(define-key calendar-mouse-3-map [exit-calendar]
-  '("Exit calendar" . exit-calendar))
-(define-key calendar-mouse-3-map [show-diary]
-  '("Show diary" . diary-show-all-entries))
-(define-key calendar-mouse-3-map [lunar-phases]
-  '("Lunar phases" . calendar-phases-of-moon))
-(define-key calendar-mouse-3-map [unmark]
-  '("Unmark" . calendar-unmark))
-(define-key calendar-mouse-3-map [mark-holidays]
-  '("Mark holidays" . mark-calendar-holidays))
-(define-key calendar-mouse-3-map [list-holidays]
-  '("List holidays" . list-calendar-holidays))
-(define-key calendar-mouse-3-map [mark-diary-entries]
-  '("Mark diary entries" . mark-diary-entries))
-(define-key calendar-mouse-3-map [scroll-backward]
-  '("Scroll backward" . scroll-calendar-right-three-months))
-(define-key calendar-mouse-3-map [scroll-forward]
-  '("Scroll forward" . scroll-calendar-left-three-months))
+  '("foo" :filter cal-menu-set-date-title
+    "--"
+    ["Holidays" calendar-mouse-holidays]
+    ["Mark date" calendar-mouse-set-mark]
+    ["Sunrise/sunset" calendar-mouse-sunrise/sunset]
+    ["Other calendars" calendar-mouse-print-dates]
+    ("Prepare LaTeX buffer"
+     ["Daily (1 page)" cal-tex-mouse-day]
+     ["Weekly (1 page)" cal-tex-mouse-week]
+     ["Weekly (2 pages)" cal-tex-mouse-week2]
+     ["Weekly (other style; 1 page)" cal-tex-mouse-week-iso]
+     ["Weekly (yet another style; 1 page)" cal-tex-mouse-week-monday]
+     ["Monthly" cal-tex-mouse-month]
+     ["Monthly (landscape)" cal-tex-mouse-month-landscape]
+     ["Yearly" cal-tex-mouse-year]
+     ["Yearly (landscape)" cal-tex-mouse-year-landscape]
+     ("Filofax styles"
+      ["Filofax Daily (one-day-per-page)" cal-tex-mouse-filofax-daily]
+      ["Filofax Weekly (2-weeks-at-a-glance)" cal-tex-mouse-filofax-2week]
+      ["Filofax Weekly (week-at-a-glance)" cal-tex-mouse-filofax-week]
+      ["Filofax Yearly" cal-tex-mouse-filofax-year]))
+    ["Diary entries" calendar-mouse-view-diary-entries]
+    ["Insert diary entry" calendar-mouse-insert-diary-entry]
+    ["Other diary file entries" calendar-mouse-view-other-diary-entries]))
+
+(defun cal-menu-set-date-title (menu)
+  (easy-menu-filter-return
+   menu (calendar-date-string (calendar-event-to-date t) t nil)))
+
+(easy-menu-define cal-menu-global-mouse-menu nil
+  "Menu bound to a mouse event, not specific to the mouse-click location."
+  '("Calendar"
+    ["Scroll forward" calendar-scroll-left-three-months]
+    ["Scroll backward" calendar-scroll-right-three-months]
+    ["Mark diary entries" mark-diary-entries]
+    ["List holidays" calendar-list-holidays]
+    ["Mark holidays" calendar-mark-holidays]
+    ["Unmark" calendar-unmark]
+    ["Lunar phases" calendar-phases-of-moon]
+    ["Show diary" diary-show-all-entries]
+    ["Exit calendar" exit-calendar]))
 
 (run-hooks 'cal-menu-load-hook)
 
index 02760b34e93e874565ce9dc6c70a9d129753d048..81f75114a3f7ccc517fee53838a1a40dc9b863db 100644 (file)
@@ -85,47 +85,51 @@ Movement is forward is ARG is negative."
   (interactive "p")
   (calendar-forward-month (* -12 arg)))
 
-(defun scroll-calendar-left (&optional arg)
+(defun calendar-scroll-left (&optional arg event)
   "Scroll the displayed calendar left by ARG months.
 If ARG is negative the calendar is scrolled right.  Maintains the relative
 position of the cursor with respect to the calendar as well as possible."
-  (interactive "p")
+  (interactive (list (prefix-numeric-value current-prefix-arg)
+                     last-nonmenu-event))
   (unless arg (setq arg 1))
-  (calendar-cursor-to-nearest-date)
-  (let ((old-date (calendar-cursor-to-date))
-        (today (calendar-current-date)))
-    (if (/= arg 0)
-        (let ((month displayed-month)
-             (year displayed-year))
-          (increment-calendar-month month year arg)
-         (generate-calendar-window month year)
-          (calendar-cursor-to-visible-date
-           (cond
-            ((calendar-date-is-visible-p old-date) old-date)
-            ((calendar-date-is-visible-p today) today)
-            (t (list month 1 year)))))))
-  (run-hooks 'calendar-move-hook))
-
-(defun scroll-calendar-right (&optional arg)
+  (save-selected-window
+    (select-window (posn-window (event-start event)))
+    (calendar-cursor-to-nearest-date)
+    (let ((old-date (calendar-cursor-to-date))
+          (today (calendar-current-date)))
+      (if (/= arg 0)
+          (let ((month displayed-month)
+                (year displayed-year))
+            (increment-calendar-month month year arg)
+            (generate-calendar-window month year)
+            (calendar-cursor-to-visible-date
+             (cond
+              ((calendar-date-is-visible-p old-date) old-date)
+              ((calendar-date-is-visible-p today) today)
+              (t (list month 1 year)))))))
+    (run-hooks 'calendar-move-hook)))
+
+(defun calendar-scroll-right (&optional arg event)
   "Scroll the displayed calendar window right by ARG months.
 If ARG is negative the calendar is scrolled left.  Maintains the relative
 position of the cursor with respect to the calendar as well as possible."
-  (interactive "p")
-  (scroll-calendar-left (- (or arg 1))))
+  (interactive (list (prefix-numeric-value current-prefix-arg)
+                     last-nonmenu-event))
+  (calendar-scroll-left (- (or arg 1)) event))
 
-(defun scroll-calendar-left-three-months (arg)
+(defun calendar-scroll-left-three-months (arg)
   "Scroll the displayed calendar window left by 3*ARG months.
 If ARG is negative the calendar is scrolled right.  Maintains the relative
 position of the cursor with respect to the calendar as well as possible."
   (interactive "p")
-  (scroll-calendar-left (* 3 arg)))
+  (calendar-scroll-left (* 3 arg)))
 
-(defun scroll-calendar-right-three-months (arg)
+(defun calendar-scroll-right-three-months (arg)
   "Scroll the displayed calendar window right by 3*ARG months.
 If ARG is negative the calendar is scrolled left.  Maintains the relative
 position of the cursor with respect to the calendar as well as possible."
   (interactive "p")
-  (scroll-calendar-left (* -3 arg)))
+  (calendar-scroll-left (* -3 arg)))
 
 (defun calendar-cursor-to-nearest-date ()
   "Move the cursor to the closest date.
@@ -345,7 +349,17 @@ Negative DAY counts backward from end of year."
       (+ 1 day (calendar-absolute-from-gregorian (list 12 31 year))))))
   (or noecho (calendar-print-day-of-year)))
 
+;; Backward compatibility.
+(define-obsolete-function-alias
+  'scroll-calendar-left 'calendar-scroll-left "23.1")
+(define-obsolete-function-alias
+  'scroll-calendar-right 'calendar-scroll-right "23.1")
+(define-obsolete-function-alias
+  'scroll-calendar-left-three-months 'calendar-scroll-left-three-months "23.1")
+(define-obsolete-function-alias
+  'scroll-calendar-right-three-months 'calendar-scroll-right-three-months "23.1")
+
 (provide 'cal-move)
 
-;;; arch-tag: d0883c46-7e16-4914-8ff8-8f67e699b781
+;; arch-tag: d0883c46-7e16-4914-8ff8-8f67e699b781
 ;;; cal-move.el ends here
index bd9db74d19fb6f3547d2ae2097947f79566d5464..1faa71efec93b946dff0b6111c3a752068b9416f 100644 (file)
 ;; This collection of functions implements the creation of LaTeX calendars
 ;; based on the user's holiday choices and diary file.
 
+;; The user commands are:
+;; cal-tex-cursor-year
+;; cal-tex-cursor-year-landscape
+;; cal-tex-cursor-filofax-year
+;; cal-tex-cursor-month-landscape
+;; cal-tex-cursor-month
+;; cal-tex-cursor-week
+;; cal-tex-cursor-week2
+;; cal-tex-cursor-week-iso
+;; cal-tex-cursor-week-monday
+;; cal-tex-cursor-filofax-2week
+;; cal-tex-cursor-filofax-week
+;; cal-tex-cursor-filofax-daily
+;; cal-tex-cursor-day
+
 ;; TO DO
 ;;
 ;;     (*)  Add holidays and diary entries to daily calendar.
 ;;;
 
 (defcustom cal-tex-which-days '(0 1 2 3 4 5 6)
-  "*The days of the week that are displayed on the portrait monthly calendar.
+  "The days of the week that are displayed on the portrait monthly calendar.
 Sunday is 0, Monday is 1, and so on.  The default is to print from Sunday to
-Saturday.  For example, use
-
-                    (setq cal-tex-which-days '(1 3 5))
-
-to only print Monday, Wednesday, Friday."
+Saturday.  For example, use '(1 3 5) to only print Monday, Wednesday, Friday."
   :type '(repeat integer)
   :group 'calendar-tex)
 
 (defcustom cal-tex-holidays t
   "Non-nil means holidays are printed in the LaTeX calendars that support it.
-If finding the holidays is too slow, set this to nil."
+Setting this to nil may speed up calendar generation."
   :type 'boolean
   :group 'calendar-tex)
 
 (defcustom cal-tex-diary nil
   "Non-nil means diary entries are printed in LaTeX calendars that support it.
 At present, this only affects the monthly, filofax, and iso-week
-calendars (i.e. not the yearly, plain weekly, or daily calendars)."
+calendars (i.e. not the yearly, plain weekly, or daily calendars).
+Setting this to nil may speed up calendar generation."
   :type 'boolean
   :group 'calendar-tex)
 
@@ -85,20 +97,21 @@ At present, this only affects the daily filofax calendar."
 
 (defcustom cal-tex-daily-string
   '(let* ((year (extract-calendar-year date))
-          (day  (calendar-day-number date))
+          (day (calendar-day-number date))
           (days-remaining (- (calendar-day-number (list 12 31 year)) day)))
-     (format "%d/%d" day  days-remaining))
-  "*An expression in the variable `date' whose value is placed on date.
-The string resulting from evaluating this expression is placed at the bottom
-center of `date' on the monthly calendar, next to the date in the weekly
-calendars, and in the top center of daily calendars.
+     (format "%d/%d" day days-remaining))
+  "Lisp expression giving the date format to use in the LaTeX calendars.
+This should be an expression involving the variable `date'.  When
+this expression is called, `date' is a list of the form '(MONTH DAY YEAR)'.
 
-Default is ordinal day number of the year and the number of days remaining.
-As an example of what you do, setting this to
+The string resulting from evaluating this expression is placed at
+the bottom center of each date in monthly calendars, next to the
+date in the weekly calendars, and in the top center of daily calendars.
 
-    '(progn
-       (require 'cal-hebrew)
-       (calendar-hebrew-date-string date))
+The default is ordinal day number of the year and the number of
+days remaining.  As an example, setting this to
+
+    '(calendar-hebrew-date-string date)
 
 will put the Hebrew date at the bottom of each day."
   :type 'sexp
@@ -115,12 +128,14 @@ will put the Hebrew date at the bottom of each day."
   :group 'calendar-tex)
 
 (defcustom cal-tex-daily-start 8
-  "*The first hour of the daily calendar page."
+  "The first hour of the daily LaTeX calendar page.
+At present, this only affects `cal-tex-cursor-day'."
   :type 'integer
   :group 'calendar-tex)
 
 (defcustom cal-tex-daily-end 20
-  "*The last hour of the daily calendar page."
+  "The last hour of the daily LaTeX calendar page.
+At present, this only affects `cal-tex-cursor-day'"
   :type 'integer
   :group 'calendar-tex)
 
@@ -133,31 +148,31 @@ For example, to include extra packages:
   :version "22.1")
 
 (defcustom cal-tex-hook nil
-  "*List of functions called after any LaTeX calendar buffer is generated.
+  "List of functions called after any LaTeX calendar buffer is generated.
 You can use this to do postprocessing on the buffer.  For example, to change
 characters with diacritical marks to their LaTeX equivalents, use
-     (add-hook 'cal-tex-hook
-               '(lambda () (iso-iso2tex (point-min) (point-max))))"
+    (add-hook 'cal-tex-hook
+              (lambda () (iso-iso2tex (point-min) (point-max))))"
   :type 'hook
   :group 'calendar-tex)
 
 (defcustom cal-tex-year-hook nil
-  "*List of functions called after a LaTeX year calendar buffer is generated."
+  "List of functions called after a LaTeX year calendar buffer is generated."
   :type 'hook
   :group 'calendar-tex)
 
 (defcustom cal-tex-month-hook nil
-  "*List of functions called after a LaTeX month calendar buffer is generated."
+  "List of functions called after a LaTeX month calendar buffer is generated."
   :type 'hook
   :group 'calendar-tex)
 
 (defcustom cal-tex-week-hook nil
-  "*List of functions called after a LaTeX week calendar buffer is generated."
+  "List of functions called after a LaTeX week calendar buffer is generated."
   :type 'hook
   :group 'calendar-tex)
 
 (defcustom cal-tex-daily-hook nil
-  "*List of functions called after a LaTeX daily calendar buffer is generated."
+  "List of functions called after a LaTeX daily calendar buffer is generated."
   :type 'hook
   :group 'calendar-tex)
 
@@ -165,42 +180,42 @@ characters with diacritical marks to their LaTeX equivalents, use
 ;;; Definitions for LaTeX code
 ;;;
 
-(defvar cal-tex-day-prefix "\\caldate{%s}{%s}"
+(defconst cal-tex-day-prefix "\\caldate{%s}{%s}"
   "The initial LaTeX code for a day.
 The holidays, diary entries, bottom string, and the text follow.")
 
-(defvar cal-tex-day-name-format "\\myday{%s}%%"
-  "The format for LaTeX code for a day name.  The names are taken from
-`calendar-day-name-array'.")
+(defconst cal-tex-day-name-format "\\myday{%s}%%"
+  "The format for LaTeX code for a day name.
+The names are taken from `calendar-day-name-array'.")
 
-(defvar cal-tex-cal-one-month
-"\\def\\calmonth#1#2%
+(defconst cal-tex-cal-one-month
+  "\\def\\calmonth#1#2%
 {\\begin{center}%
 \\Huge\\bf\\uppercase{#1} #2 \\\\[1cm]%
 \\end{center}}%
 \\vspace*{-1.5cm}%
 %
 "
-  "LaTeX code for the month header")
+  "LaTeX code for the month header, for a single month calendar.")
 
-(defvar cal-tex-cal-multi-month
-"\\def\\calmonth#1#2#3#4%
+(defconst cal-tex-cal-multi-month
+  "\\def\\calmonth#1#2#3#4%
 {\\begin{center}%
 \\Huge\\bf #1 #2---#3 #4\\\\[1cm]%
 \\end{center}}%
 \\vspace*{-1.5cm}%
 %
 "
-  "LaTeX code for the month header")
+  "LaTeX code for the month header, for a multi-month calendar.")
 
-(defvar cal-tex-myday
-"\\renewcommand{\\myday}[1]%
+(defconst cal-tex-myday
+  "\\renewcommand{\\myday}[1]%
 {\\makebox[\\cellwidth]{\\hfill\\large\\bf#1\\hfill}}
 %
 "
-  "LaTeX code for a day heading")
+  "LaTeX code for a day heading.")
 
-(defvar cal-tex-caldate
+(defconst cal-tex-caldate
 "\\fboxsep=0pt
 \\long\\def\\caldate#1#2#3#4#5#6{%
     \\fbox{\\hbox to\\cellwidth{%
@@ -233,18 +248,16 @@ This definition is the heart of the calendar!")
           (1+ (/ (calendar-interval displayed-month displayed-year
                                     end-month end-year)
                  3)))
-         (holidays nil)
-         (in-range))
+         holidays in-range a)
     (increment-calendar-month displayed-month displayed-year 1)
-    (calendar-for-loop i from 1 to number-of-intervals do
+    (dotimes (idummy number-of-intervals)
       (setq holidays (append holidays (calendar-holiday-list)))
       (increment-calendar-month displayed-month displayed-year 3))
-    (while holidays
-      (and (car (car holidays))
-           (let ((a (calendar-absolute-from-gregorian (car (car holidays)))))
-             (and (<= d1 a) (<= a d2)))
-           (setq in-range (append (list (car holidays)) in-range)))
-      (setq holidays (cdr holidays)))
+    (dolist (hol holidays)
+      (and (car hol)
+           (setq a (calendar-absolute-from-gregorian (car hol)))
+           (and (<= d1 a) (<= a d2))
+           (setq in-range (append (list hol) in-range))))
     in-range))
 
 (defun cal-tex-list-diary-entries (d1 d2)
@@ -256,15 +269,15 @@ This definition is the heart of the calendar!")
      (1+ (- d2 d1)))))
 
 (defun cal-tex-preamble (&optional args)
-  "Insert the LaTeX preamble.
-Preamble Includes initial definitions for various LaTeX commands.
-Optional ARGS are included."
+  "Insert the LaTeX calendar preamble into `cal-tex-buffer'.
+Preamble includes initial definitions for various LaTeX commands.
+Optional string ARGS are included as options for the article document class."
+  ;; FIXME use generate-new-buffer, and adjust cal-tex-end-document.
   (set-buffer (get-buffer-create cal-tex-buffer))
-  (erase-buffer)
-  (insert "\\documentclass")
-  (if args
-      (insert "[" args "]"))
-  (insert "{article}\n")
+  (insert (format "\\documentclass%s{article}\n"
+                  (if (stringp args)
+                      (format "[%s]" args)
+                    "")))
   (if (stringp cal-tex-preamble-extra)
       (insert cal-tex-preamble-extra "\n"))
   (insert "\\hbadness 20000
@@ -296,29 +309,28 @@ Optional ARGS are included."
 
 (defun cal-tex-cursor-year (&optional arg)
   "Make a buffer with LaTeX commands for the year cursor is on.
-Optional prefix argument specifies number of years."
+Optional prefix argument ARG specifies number of years."
   (interactive "p")
   (cal-tex-year (extract-calendar-year (calendar-cursor-to-date t))
-                (if arg arg 1)))
+                (or arg 1)))
 
 (defun cal-tex-cursor-year-landscape (&optional arg)
   "Make a buffer with LaTeX commands for the year cursor is on.
-Optional prefix argument specifies number of years."
+Optional prefix argument ARG specifies number of years."
   (interactive "p")
   (cal-tex-year (extract-calendar-year (calendar-cursor-to-date t))
-                (if arg arg 1)
-                t))
+                (or arg 1) t))
 
 (defun cal-tex-year (year n &optional landscape)
   "Make a one page yearly calendar of YEAR; do this for N years.
-There are four rows of three months each, unless optional LANDSCAPE is t,
-in which case the calendar isprinted in landscape mode with three rows of
-four months each."
+There are four rows of three months each, unless optional
+LANDSCAPE is non-nil, in which case the calendar is printed in
+landscape mode with three rows of four months each."
   (cal-tex-insert-preamble 1 landscape "12pt")
   (if landscape
       (cal-tex-vspace "-.6cm")
     (cal-tex-vspace "-3.1cm"))
-  (calendar-for-loop j from 1 to n do
+  (dotimes (j n)
     (insert "\\vfill%\n")
     (cal-tex-b-center)
     (cal-tex-Huge (number-to-string year))
@@ -329,28 +341,28 @@ four months each."
     (insert "\n")
     (cal-tex-noindent)
     (cal-tex-nl)
-    (calendar-for-loop i from 1 to 12 do
-        (insert (cal-tex-mini-calendar i year "month" "1.1in" "1in"))
-        (insert "\\month")
-        (cal-tex-hspace "0.5in")
-        (if (zerop (mod i (if landscape 4 3)))
-            (cal-tex-nl "0.5in")))
+    (dotimes (i 12)
+      (insert (cal-tex-mini-calendar (1+ i) year "month" "1.1in" "1in"))
+      (insert "\\month")
+      (cal-tex-hspace "0.5in")
+      (if (zerop (mod (1+ i) (if landscape 4 3)))
+          (cal-tex-nl "0.5in")))
     (cal-tex-e-parbox)
     (cal-tex-e-center)
     (insert "\\vfill%\n")
     (setq year (1+ year))
-    (if (/= j n)
-        (cal-tex-newpage)
-      (cal-tex-end-document))
+    (if (= j (1- n))
+        (cal-tex-end-document)
+      (cal-tex-newpage))
     (run-hooks 'cal-tex-year-hook))
   (run-hooks 'cal-tex-hook))
 
 (defun cal-tex-cursor-filofax-year (&optional arg)
   "Make a Filofax one page yearly calendar of year indicated by cursor.
-Optional parameter specifies number of years."
+Optional prefix argument ARG specifies number of years."
   (interactive "p")
-  (let* ((n (if arg arg 1))
-         (year (extract-calendar-year (calendar-cursor-to-date t))))
+  (let ((n (or arg 1))
+        (year (extract-calendar-year (calendar-cursor-to-date t))))
     (cal-tex-preamble "twoside")
     (cal-tex-cmd "\\textwidth 3.25in")
     (cal-tex-cmd "\\textheight 6.5in")
@@ -362,8 +374,8 @@ Optional parameter specifies number of years."
     (cal-tex-cmd "\\pagestyle{empty}")
     (cal-tex-b-document)
     (cal-tex-cmd "\\vspace*{0.25in}")
-    (calendar-for-loop j from 1 to n do
-      (insert (format "\\hfil {\\Large \\bf %s} \\hfil\\\\\n" year))
+    (dotimes (j n)
+      (insert (format "\\hfil \\textbf{\\Large %s} \\hfil\\\\\n" year))
       (cal-tex-b-center)
       (cal-tex-b-parbox "l" "\\textwidth")
       (insert "\n")
@@ -374,9 +386,8 @@ Optional parameter specifies number of years."
              ;; the names of the months they insert.
              ["January" "February" "March" "April" "May" "June"
               "July" "August" "September" "October" "November" "December"]))
-        (calendar-for-loop i from 1 to 12 do
-          (insert (cal-tex-mini-calendar i year
-                                         (aref month-names (1- i))
+        (dotimes (i 12)
+          (insert (cal-tex-mini-calendar (1+ i) year (aref month-names i)
                                          "1in" ".9in" "tiny" "0.6mm"))))
       (insert
        "\\noindent\\fbox{\\January}\\fbox{\\February}\\fbox{\\March}\\\\
@@ -387,7 +398,7 @@ Optional parameter specifies number of years."
       (cal-tex-e-parbox)
       (cal-tex-e-center)
       (setq year (1+ year))
-      (if (= j n)
+      (if (= j (1- n))
           (cal-tex-end-document)
         (cal-tex-newpage)
         (cal-tex-cmd "\\vspace*{0.25in}"))
@@ -400,45 +411,34 @@ Optional parameter specifies number of years."
 
 (defun cal-tex-cursor-month-landscape (&optional arg)
   "Make a LaTeX calendar buffer for the month the cursor is on.
-Optional prefix argument specifies number of months to be
+Optional prefix argument ARG specifies number of months to be
 produced (default 1).  The output is in landscape format, one
 month to a page.  It shows holiday and diary entries if
-`cal-tex-holidays' and `cal-tex-diary', respectively, are
-non-nil."
+`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
   (interactive "p")
-  (let* ((n (if arg arg 1))
+  (let* ((n (or arg 1))
          (date (calendar-cursor-to-date t))
          (month (extract-calendar-month date))
          (year (extract-calendar-year date))
          (end-month month)
          (end-year year)
-         (cal-tex-which-days '(0 1 2 3 4 5 6)))
+         (cal-tex-which-days '(0 1 2 3 4 5 6))
+         (d1 (calendar-absolute-from-gregorian (list month 1 year)))
+         (d2 (calendar-absolute-from-gregorian
+              (list end-month
+                    (calendar-last-day-of-month end-month end-year)
+                    end-year))))
     (increment-calendar-month end-month end-year (1- n))
     (let ((diary-list (if cal-tex-diary
-                          (cal-tex-list-diary-entries
-                           (calendar-absolute-from-gregorian
-                            (list month 1 year))
-                           (calendar-absolute-from-gregorian
-                            (list end-month
-                                  (calendar-last-day-of-month
-                                   end-month end-year)
-                                  end-year)))))
+                          (cal-tex-list-diary-entries d1 d2)))
           (holidays (if cal-tex-holidays
-                        (cal-tex-list-holidays
-                         (calendar-absolute-from-gregorian
-                          (list month 1 year))
-                         (calendar-absolute-from-gregorian
-                          (list end-month
-                                (calendar-last-day-of-month end-month end-year)
-                                end-year)))))
-          (other-month)
-          (other-year)
-          (small-months-at-start))
+                        (cal-tex-list-holidays d1 d2)))
+          other-month other-year small-months-at-start)
       (cal-tex-insert-preamble (cal-tex-number-weeks month year 1) t "12pt")
       (cal-tex-cmd cal-tex-cal-one-month)
-      (calendar-for-loop i from 1 to n do
-        (setq other-month month)
-        (setq other-year year)
+      (dotimes (i n)
+        (setq other-month month
+              other-year year)
         (increment-calendar-month other-month other-year -1)
         (insert (cal-tex-mini-calendar other-month other-year "lastmonth"
                                        "\\cellwidth" "\\cellheight"))
@@ -448,11 +448,10 @@ non-nil."
         (cal-tex-insert-month-header 1 month year month year)
         (cal-tex-insert-day-names)
         (cal-tex-nl ".2cm")
-        (setq small-months-at-start
+        (if (setq small-months-at-start
                   (< 1 (mod (- (calendar-day-of-week (list month 1 year))
                                calendar-week-start-day)
                             7)))
-        (if small-months-at-start
             (insert "\\lastmonth\\nextmonth\\hspace*{-2\\cellwidth}"))
         (cal-tex-insert-blank-days month year cal-tex-day-prefix)
         (cal-tex-insert-days month year diary-list holidays
@@ -468,20 +467,19 @@ non-nil."
             (insert "\\vspace*{-\\cellwidth}\\hspace*{-2\\cellwidth}"
                     "\\lastmonth\\nextmonth%
 "))
-        (if (/= i n)
-            (progn
-              (run-hooks 'cal-tex-month-hook)
-              (cal-tex-newpage)
-              (increment-calendar-month month year 1)
-              (cal-tex-vspace "-2cm")
-              (cal-tex-insert-preamble
-               (cal-tex-number-weeks month year 1) t "12pt" t))))
+        (unless (= i (1- n))
+          (run-hooks 'cal-tex-month-hook)
+          (cal-tex-newpage)
+          (increment-calendar-month month year 1)
+          (cal-tex-vspace "-2cm")
+          (cal-tex-insert-preamble
+           (cal-tex-number-weeks month year 1) t "12pt" t)))
       (cal-tex-end-document)
       (run-hooks 'cal-tex-hook))))
 
 (defun cal-tex-cursor-month (arg)
   "Make a LaTeX calendar buffer for the month the cursor is on.
-Optional prefix argument specifies number of months to be
+Optional prefix argument ARG specifies number of months to be
 produced (default 1).  The calendar is condensed onto one page.
 It shows holiday and diary entries if `cal-tex-holidays' and
 `cal-tex-diary', respectively, are non-nil."
@@ -491,27 +489,18 @@ It shows holiday and diary entries if `cal-tex-holidays' and
          (year (extract-calendar-year date))
          (end-month month)
          (end-year year)
-         (n (if arg arg 1)))
+         (n (or arg 1))
+         (d1 (calendar-absolute-from-gregorian (list month 1 year)))
+         (d2 (calendar-absolute-from-gregorian
+              (list end-month
+                    (calendar-last-day-of-month end-month end-year)
+                    end-year))))
     (increment-calendar-month end-month end-year (1- n))
     (let ((diary-list (if cal-tex-diary
-                          (cal-tex-list-diary-entries
-                           (calendar-absolute-from-gregorian
-                            (list month 1 year))
-                           (calendar-absolute-from-gregorian
-                            (list end-month
-                                  (calendar-last-day-of-month
-                                   end-month end-year)
-                                  end-year)))))
+                          (cal-tex-list-diary-entries d1 d2)))
           (holidays (if cal-tex-holidays
-                        (cal-tex-list-holidays
-                         (calendar-absolute-from-gregorian
-                          (list month 1 year))
-                         (calendar-absolute-from-gregorian
-                          (list end-month
-                                (calendar-last-day-of-month end-month end-year)
-                                end-year)))))
-          (other-month)
-          (other-year))
+                        (cal-tex-list-holidays d1 d2)))
+          other-month other-year)
       (cal-tex-insert-preamble (cal-tex-number-weeks month year n) nil"12pt")
       (if (> n 1)
           (cal-tex-cmd cal-tex-cal-multi-month)
@@ -520,20 +509,18 @@ It shows holiday and diary entries if `cal-tex-holidays' and
       (cal-tex-insert-day-names)
       (cal-tex-nl ".2cm")
       (cal-tex-insert-blank-days month year cal-tex-day-prefix)
-      (calendar-for-loop i from 1 to n do
-        (setq other-month month)
-        (setq other-year year)
-        (cal-tex-insert-days month year diary-list holidays
-                             cal-tex-day-prefix)
-        (if (= (mod (calendar-absolute-from-gregorian
+      (dotimes (idummy n)
+        (setq other-month month
+              other-year year)
+        (cal-tex-insert-days month year diary-list holidays cal-tex-day-prefix)
+        (when (= (mod (calendar-absolute-from-gregorian
                        (list month
                              (calendar-last-day-of-month month year)
                              year))
                       7)
-                 6); last day of month was Saturday
-            (progn
-              (cal-tex-hfill)
-              (cal-tex-nl)))
+                 6)                   ; last day of month was Saturday
+          (cal-tex-hfill)
+          (cal-tex-nl))
         (increment-calendar-month month year 1))
       (cal-tex-insert-blank-days-at-end end-month end-year cal-tex-day-prefix)
       (cal-tex-end-document)))
@@ -544,32 +531,31 @@ It shows holiday and diary entries if `cal-tex-holidays' and
 LaTeX commands are inserted for the days of the MONTH in YEAR.
 Diary entries on DIARY-LIST are included.  Holidays on HOLIDAYS
 are included.  Each day is formatted using format DAY-FORMAT."
-  (let* ((blank-days;; at start of month
-          (mod
-           (- (calendar-day-of-week (list month 1 year))
-              calendar-week-start-day)
-           7))
-         (date)
-         (last (calendar-last-day-of-month month year)))
-    (calendar-for-loop i from 1 to last do
-       (setq date (list month i year))
-       (if (memq (calendar-day-of-week date) cal-tex-which-days)
-           (progn
-             (insert (format day-format (cal-tex-month-name month) i))
-             (cal-tex-arg (cal-tex-latexify-list diary-list date))
-             (cal-tex-arg (cal-tex-latexify-list holidays date))
-             (cal-tex-arg (eval cal-tex-daily-string))
-             (cal-tex-arg)
-             (cal-tex-comment)))
-       (if (and (zerop (mod (+ i blank-days) 7))
-                (/= i last))
-           (progn
-             (cal-tex-hfill)
-             (cal-tex-nl))))))
+  (let ((blank-days                     ; at start of month
+         (mod
+          (- (calendar-day-of-week (list month 1 year))
+             calendar-week-start-day)
+          7))
+        (last (calendar-last-day-of-month month year))
+        date j)
+    (dotimes (i last)
+      (setq j (1+ i)                    ; 1-last, incl
+            date (list month j year))
+      (when (memq (calendar-day-of-week date) cal-tex-which-days)
+        (insert (format day-format (cal-tex-month-name month) j))
+        (cal-tex-arg (cal-tex-latexify-list diary-list date))
+        (cal-tex-arg (cal-tex-latexify-list holidays date))
+        (cal-tex-arg (eval cal-tex-daily-string))
+        (cal-tex-arg)
+        (cal-tex-comment))
+      (when (and (zerop (mod (+ j blank-days) 7))
+                 (/= j last))
+        (cal-tex-hfill)
+        (cal-tex-nl)))))
 
 (defun cal-tex-insert-day-names ()
   "Insert the names of the days at top of a monthly calendar."
-  (calendar-for-loop i from 0 to 6 do
+  (dotimes (i 7)
     (if (memq i cal-tex-which-days)
         (insert (format cal-tex-day-name-format
                         (cal-tex-LaTeXify-string
@@ -581,13 +567,13 @@ are included.  Each day is formatted using format DAY-FORMAT."
   "Create a title for a calendar.
 A title is inserted for a calendar with N months starting with
 MONTH YEAR and ending with END-MONTH END-YEAR."
-  (let ((month-name (cal-tex-month-name  month))
-         (end-month-name (cal-tex-month-name  end-month)))
+  (let ((month-name (cal-tex-month-name month))
+        (end-month-name (cal-tex-month-name end-month)))
     (if (= 1 n)
         (insert (format "\\calmonth{%s}{%s}\n\\vspace*{-0.5cm}"
-                month-name year) )
-        (insert (format "\\calmonth{%s}{%s}{%s}{%s}\n\\vspace*{-0.5cm}"
-                month-name year end-month-name end-year))))
+                        month-name year) )
+      (insert (format "\\calmonth{%s}{%s}{%s}{%s}\n\\vspace*{-0.5cm}"
+                      month-name year end-month-name end-year))))
   (cal-tex-comment))
 
 (defun cal-tex-insert-blank-days (month year day-format)
@@ -596,12 +582,12 @@ Insert LaTeX code for the blank days at the beginning of the MONTH in
 YEAR.  The entry is formatted using DAY-FORMAT.  If the entire week is
 blank, no days are inserted."
   (if (cal-tex-first-blank-p month year)
-      (let* ((blank-days;; at start of month
-              (mod
-               (- (calendar-day-of-week (list month 1 year))
-                  calendar-week-start-day)
-               7)))
-        (calendar-for-loop i from 0 to (1- blank-days) do
+      (let ((blank-days                ; at start of month
+             (mod
+              (- (calendar-day-of-week (list month 1 year))
+                 calendar-week-start-day)
+              7)))
+        (dotimes (i blank-days)
           (if (memq i cal-tex-which-days)
               (insert (format day-format " " " ") "{}{}{}{}%\n"))))))
 
@@ -611,7 +597,7 @@ Insert LaTeX code for the blank days at the end of the MONTH in YEAR.
 The entry is formatted using DAY-FORMAT."
   (if (cal-tex-last-blank-p month year)
       (let* ((last-day (calendar-last-day-of-month month year))
-             (blank-days;; at end of month
+             (blank-days                ; at end of month
               (mod
                (- (calendar-day-of-week (list month last-day year))
                   calendar-week-start-day)
@@ -624,24 +610,22 @@ The entry is formatted using DAY-FORMAT."
   "Determine if any days of the first week will be printed.
 Return t if there will there be any days of the first week printed
 in the calendar starting in MONTH YEAR."
-  (let ((any-days nil)
-        (the-saturday))                 ;the day of week of 1st Saturday
-    (calendar-for-loop i from 1 to 7 do
-       (if (= 6 (calendar-day-of-week (list month i year)))
-           (setq the-saturday i)))
-    (calendar-for-loop i from 1 to the-saturday do
-       (if (memq (calendar-day-of-week (list month i year))
-                 cal-tex-which-days)
-           (setq any-days t)))
+  (let (any-days the-saturday)        ; the day of week of 1st Saturday
+    (dotimes (i 7)
+      (if (= 6 (calendar-day-of-week (list month (1+ i) year)))
+          (setq the-saturday (1+ i))))
+    (dotimes (i the-saturday)
+      (if (memq (calendar-day-of-week (list month (1+ i) year))
+                cal-tex-which-days)
+          (setq any-days t)))
     any-days))
 
 (defun cal-tex-last-blank-p (month year)
   "Determine if any days of the last week will be printed.
 Return t if there will there be any days of the last week printed
 in the calendar starting in MONTH YEAR."
-  (let ((any-days nil)
-        (last-day (calendar-last-day-of-month month year))
-        (the-sunday))                   ;the day of week of last Sunday
+  (let ((last-day (calendar-last-day-of-month month year))
+        any-days the-sunday)          ; the day of week of last Sunday
     (calendar-for-loop i from (- last-day 6) to last-day do
        (if (= 0 (calendar-day-of-week (list month i year)))
            (setq the-sunday i)))
@@ -654,7 +638,7 @@ in the calendar starting in MONTH YEAR."
 (defun cal-tex-number-weeks (month year n)
   "Determine the number of weeks in a range of dates.
 Compute the number of  weeks in the calendar starting with MONTH and YEAR,
-and lasting N months, including only the days in WHICH-DAYS. As it stands,
+and lasting N months, including only the days in WHICH-DAYS.  As it stands,
 this is only an upper bound."
   (let ((d (list month 1 year)))
     (increment-calendar-month month year (1- n))
@@ -671,20 +655,21 @@ this is only an upper bound."
 ;;; Weekly calendars
 ;;;
 
-(defvar cal-tex-LaTeX-hourbox
+(defconst cal-tex-LaTeX-hourbox
   "\\newcommand{\\hourbox}[2]%
 {\\makebox[2em]{\\rule{0cm}{#2ex}#1}\\rule{3in}{.15mm}}\n"
   "One hour and a line on the right.")
 
 ;; TODO cal-tex-diary-support.
+;; TODO respect cal-tex-daily-start,end (see cal-tex-week-hours).
 (defun cal-tex-cursor-week (&optional arg)
   "Make a LaTeX calendar buffer for a two-page one-week calendar.
 It applies to the week that point is in.  The optional prefix
-argument specifies the number of weeks (default 1).  The calendar
-shows holidays if `cal-tex-holidays' is t (note that diary
-entries are not shown)."
+argument ARG specifies the number of weeks (default 1).  The calendar
+shows holidays if `cal-tex-holidays' is non-nil (note that diary
+entries are not shown).  The calendar shows the hours 8-12am, 1-5pm."
   (interactive "p")
-  (let* ((n (if arg arg 1))
+  (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
                 (calendar-dayname-on-or-before
                  calendar-week-start-day
@@ -692,11 +677,10 @@ entries are not shown)."
                   (calendar-cursor-to-date t)))))
          (month (extract-calendar-month date))
          (year (extract-calendar-year date))
+         (d1 (calendar-absolute-from-gregorian date))
+         (d2 (+ (* 7 n) d1))
          (holidays (if cal-tex-holidays
-                       (cal-tex-list-holidays
-                        (calendar-absolute-from-gregorian date)
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date))))))
+                       (cal-tex-list-holidays d1 d2))))
     (cal-tex-preamble "11pt")
     (cal-tex-cmd "\\textwidth   6.5in")
     (cal-tex-cmd "\\textheight 10.5in")
@@ -705,7 +689,7 @@ entries are not shown)."
     (insert cal-tex-LaTeX-hourbox)
     (cal-tex-b-document)
     (cal-tex-cmd "\\pagestyle{empty}")
-    (calendar-for-loop i from 1 to n do
+    (dotimes (i n)
       (cal-tex-vspace "-1.5in")
       (cal-tex-b-center)
       (cal-tex-Huge-bf (format "\\uppercase{%s}"
@@ -716,28 +700,28 @@ entries are not shown)."
       (cal-tex-e-center)
       (cal-tex-hspace "-.2in")
       (cal-tex-b-parbox "l" "7in")
-      (calendar-for-loop j from 1 to 7 do
+      (dotimes (jdummy 7)
         (cal-tex-week-hours date holidays "3.1")
         (setq date (cal-tex-incr-date date)))
       (cal-tex-e-parbox)
-      (setq month (extract-calendar-month date))
-      (setq year (extract-calendar-year date))
-      (if (/= i n)
-          (progn
-            (run-hooks 'cal-tex-week-hook)
-            (cal-tex-newpage))))
+      (setq month (extract-calendar-month date)
+            year (extract-calendar-year date))
+      (unless (= i (1- n))
+        (run-hooks 'cal-tex-week-hook)
+        (cal-tex-newpage)))
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
 ;; TODO cal-tex-diary support.
+;; TODO respect cal-tex-daily-start,end (see cal-tex-week-hours).
 (defun cal-tex-cursor-week2 (&optional arg)
   "Make a LaTeX calendar buffer for a two-page one-week calendar.
 It applies to the week that point is in.  Optional prefix
-argument specifies number of weeks (default 1).  The calendar
+argument ARG specifies number of weeks (default 1).  The calendar
 shows holidays if `cal-tex-holidays' is non-nil (note that diary
-entries are not shown)."
+entries are not shown).  The calendar shows the hours 8-12am, 1-5pm"
   (interactive "p")
-  (let* ((n (if arg arg 1))
+  (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
                 (calendar-dayname-on-or-before
                  calendar-week-start-day
@@ -746,11 +730,10 @@ entries are not shown)."
          (month (extract-calendar-month date))
          (year (extract-calendar-year date))
          (d date)
+         (d1 (calendar-absolute-from-gregorian date))
+         (d2 (+ (* 7 n) d1))
          (holidays (if cal-tex-holidays
-                       (cal-tex-list-holidays
-                        (calendar-absolute-from-gregorian date)
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date))))))
+                       (cal-tex-list-holidays d1 d2))))
     (cal-tex-preamble "12pt")
     (cal-tex-cmd "\\textwidth   6.5in")
     (cal-tex-cmd "\\textheight 10.5in")
@@ -759,7 +742,7 @@ entries are not shown)."
     (insert cal-tex-LaTeX-hourbox)
     (cal-tex-b-document)
     (cal-tex-cmd "\\pagestyle{empty}")
-    (calendar-for-loop i from 1 to n do
+    (dotimes (i n)
       (cal-tex-vspace "-1.5in")
       (cal-tex-b-center)
       (cal-tex-Huge-bf (format "\\uppercase{%s}"
@@ -770,7 +753,7 @@ entries are not shown)."
       (cal-tex-e-center)
       (cal-tex-hspace "-.2in")
       (cal-tex-b-parbox "l" "\\textwidth")
-      (calendar-for-loop j from 1 to 3 do
+      (dotimes (jdummy 3)
         (cal-tex-week-hours date holidays "5")
         (setq date (cal-tex-incr-date date)))
       (cal-tex-e-parbox)
@@ -798,26 +781,26 @@ entries are not shown)."
       (insert "}")
       (cal-tex-nl)
       (cal-tex-b-parbox "l" "\\textwidth")
-      (calendar-for-loop j from 4 to 7 do
+      (dotimes (jdummy 4)
         (cal-tex-week-hours date holidays "5")
         (setq date (cal-tex-incr-date date)))
       (cal-tex-e-parbox)
-      (setq month (extract-calendar-month date))
-      (setq year (extract-calendar-year date))
-      (if (/= i n)
-          (progn
-            (run-hooks 'cal-tex-week-hook)
-            (cal-tex-newpage))))
+      (setq month (extract-calendar-month date)
+            year (extract-calendar-year date))
+      (unless (= i (1- n))
+        (run-hooks 'cal-tex-week-hook)
+        (cal-tex-newpage)))
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
 (defun cal-tex-cursor-week-iso (&optional arg)
   "Make a LaTeX calendar buffer for a one page ISO-style weekly calendar.
-Optional prefix argument specifies number of weeks (default 1).
+Optional prefix argument ARG specifies number of weeks (default 1).
 The calendar shows holiday and diary entries if
-`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
+`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
+It does not show hours of the day."
   (interactive "p")
-  (let* ((n (if arg arg 1))
+  (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
                 (calendar-dayname-on-or-before
                  1
@@ -826,17 +809,16 @@ The calendar shows holiday and diary entries if
          (month (extract-calendar-month date))
          (year (extract-calendar-year date))
          (day (extract-calendar-day date))
+         (d1 (calendar-absolute-from-gregorian date))
+         (d2 (+ (* 7 n) d1))
          (holidays (if cal-tex-holidays
-                       (cal-tex-list-holidays
-                        (calendar-absolute-from-gregorian date)
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date)))))
+                       (cal-tex-list-holidays d1 d2)))
          (diary-list (if cal-tex-diary
                          (cal-tex-list-diary-entries
-                          (calendar-absolute-from-gregorian
-                           (list month 1 year))
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date))))))
+                          ;; FIXME d1?
+                          (calendar-absolute-from-gregorian (list month 1 year))
+                          d2)))
+         s)
     (cal-tex-preamble "11pt")
     (cal-tex-cmd "\\textwidth 6.5in")
     (cal-tex-cmd "\\textheight 10.5in")
@@ -844,19 +826,19 @@ The calendar shows holiday and diary entries if
     (cal-tex-cmd "\\evensidemargin 0in")
     (cal-tex-b-document)
     (cal-tex-cmd "\\pagestyle{empty}")
-    (calendar-for-loop i from 1 to n do
+    (dotimes (i n)
       (cal-tex-vspace "-1.5in")
       (cal-tex-b-center)
       (cal-tex-Huge-bf
-       (let* ((d (calendar-iso-from-absolute
-                  (calendar-absolute-from-gregorian date))))
+       (let ((d (calendar-iso-from-absolute
+                 (calendar-absolute-from-gregorian date))))
          (format "Week %d of %d"
                  (extract-calendar-month d)
                  (extract-calendar-year d))))
       (cal-tex-nl ".5cm")
       (cal-tex-e-center)
       (cal-tex-b-parbox "l" "\\textwidth")
-      (calendar-for-loop j from 1 to 7 do
+      (dotimes (j 7)
         (cal-tex-b-parbox "t" "\\textwidth")
         (cal-tex-b-parbox "t" "\\textwidth")
         (cal-tex-rule "0pt" "\\textwidth" ".2mm")
@@ -867,47 +849,48 @@ The calendar shows holiday and diary entries if
         (cal-tex-large-bf (cal-tex-month-name month))
         (insert " ")
         (cal-tex-large-bf (number-to-string day))
-        (if (not (string= "" (cal-tex-latexify-list holidays date)))
-            (progn
-              (insert ": ")
-              (cal-tex-large-bf (cal-tex-latexify-list holidays date "; "))))
+        (unless (string-equal "" (setq s (cal-tex-latexify-list
+                                          holidays date "; ")))
+          (insert ": ")
+          (cal-tex-large-bf s))
         (cal-tex-hfill)
         (insert " " (eval cal-tex-daily-string))
         (cal-tex-e-parbox)
         (cal-tex-nl)
         (cal-tex-noindent)
         (cal-tex-b-parbox "t" "\\textwidth")
-        (if (not (string= "" (cal-tex-latexify-list diary-list date)))
-            (progn
-              (insert "\\vbox to 0pt{")
-              (cal-tex-large-bf
-               (cal-tex-latexify-list diary-list date))
-              (insert "}")))
+        (unless (string-equal "" (setq s (cal-tex-latexify-list
+                                          diary-list date)))
+          (insert "\\vbox to 0pt{")
+          (cal-tex-large-bf s)
+          (insert "}"))
         (cal-tex-e-parbox)
         (cal-tex-nl)
-        (setq date (cal-tex-incr-date date))
-        (setq month (extract-calendar-month date))
-        (setq day (extract-calendar-day date))
+        (setq date (cal-tex-incr-date date)
+              month (extract-calendar-month date)
+              day (extract-calendar-day date))
         (cal-tex-e-parbox)
         (cal-tex-e-parbox "2cm")
         (cal-tex-nl)
-        (setq month (extract-calendar-month date))
-        (setq year (extract-calendar-year date)))
+        (setq month (extract-calendar-month date)
+              year (extract-calendar-year date)))
       (cal-tex-e-parbox)
-      (if (/= i n)
-          (progn
-            (run-hooks 'cal-tex-week-hook)
-            (cal-tex-newpage))))
+      (unless (= i (1- n))
+        (run-hooks 'cal-tex-week-hook)
+        (cal-tex-newpage)))
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
+;; TODO respect cal-tex-daily-start,end?
+;; Using different numbers of hours will probably break some layouts.
 (defun cal-tex-week-hours (date holidays height)
   "Insert hourly entries for DATE with HOLIDAYS, with line height HEIGHT.
-Uses the 24-hour clock if `cal-tex-24' is non-nil."
+Uses the 24-hour clock if `cal-tex-24' is non-nil.  Note that the hours
+shown are hard-coded to 8-12, 13-17."
   (let ((month (extract-calendar-month date))
-        (day   (extract-calendar-day date))
-        (year  (extract-calendar-year date))
-        (afternoon))
+        (day (extract-calendar-day date))
+        (year (extract-calendar-year date))
+        morning afternoon s)
   (cal-tex-comment "begin cal-tex-week-hours")
   (cal-tex-cmd  "\\ \\\\[-.2cm]")
   (cal-tex-cmd "\\noindent")
@@ -917,48 +900,51 @@ Uses the 24-hour clock if `cal-tex-24' is non-nil."
   (cal-tex-large-bf (cal-tex-month-name month))
   (insert " ")
   (cal-tex-large-bf (number-to-string day))
-  (if (not (string= "" (cal-tex-latexify-list holidays date)))
-      (progn
-        (insert ": ")
-        (cal-tex-large-bf (cal-tex-latexify-list holidays date "; "))))
+  (unless (string-equal "" (setq s (cal-tex-latexify-list
+                                    holidays date "; ")))
+    (insert ": ")
+    (cal-tex-large-bf s))
   (cal-tex-hfill)
   (insert " " (eval cal-tex-daily-string))
   (cal-tex-e-parbox)
   (cal-tex-nl "-.3cm")
   (cal-tex-rule "0pt" "6.8in" ".2mm")
   (cal-tex-nl "-.1cm")
-  (calendar-for-loop i from 8 to 12 do
-     (if cal-tex-24
-         (setq afternoon (+ i 5))
-       (setq afternoon (- i 7)))
-     (cal-tex-cmd "\\hourbox"  (number-to-string i))
-     (cal-tex-arg height)
-     (cal-tex-hspace ".4cm")
-     (cal-tex-cmd "\\hourbox"  (number-to-string afternoon))
-     (cal-tex-arg height)
-     (cal-tex-nl))))
+  (dotimes (i 5)
+    (setq morning (+ i 8)               ; 8-12 incl
+          afternoon (if cal-tex-24
+                        (+ i 13)        ; 13-17 incl
+                      (1+ i)))          ; 1-5 incl
+    (cal-tex-cmd "\\hourbox" (number-to-string morning))
+    (cal-tex-arg height)
+    (cal-tex-hspace ".4cm")
+    (cal-tex-cmd "\\hourbox" (number-to-string afternoon))
+    (cal-tex-arg height)
+    (cal-tex-nl))))
 
 ;; TODO cal-tex-diary support.
+;; TODO respect cal-tex-daily-start,end (see cal-tex-weekly4-box).
 (defun cal-tex-cursor-week-monday (&optional arg)
   "Make a LaTeX calendar buffer for a two-page one-week calendar.
 It applies to the week that point is in, and starts on Monday.
-Optional prefix argument specifies number of weeks (default 1).
+Optional prefix argument ARG specifies number of weeks (default 1).
 The calendar shows holidays if `cal-tex-holidays' is
-non-nil (note that diary entries are not shown)."
+non-nil (note that diary entries are not shown).   The calendar shows
+the hours 8-12am, 1-5pm."
   (interactive "p")
-  (let* ((n (if arg arg 1))
-         (date (calendar-gregorian-from-absolute
-                (calendar-dayname-on-or-before
-                 0
-                 (calendar-absolute-from-gregorian
-                  (calendar-cursor-to-date t))))))
+  (let ((n (or arg 1))
+        (date (calendar-gregorian-from-absolute
+               (calendar-dayname-on-or-before
+                0
+                (calendar-absolute-from-gregorian
+                 (calendar-cursor-to-date t))))))
     (cal-tex-preamble "11pt")
     (cal-tex-cmd "\\textwidth   6.5in")
     (cal-tex-cmd "\\textheight 10.5in")
     (cal-tex-cmd "\\oddsidemargin 0in")
     (cal-tex-cmd "\\evensidemargin 0in")
     (cal-tex-b-document)
-    (calendar-for-loop i from 1 to n do
+    (dotimes (i n)
       (cal-tex-vspace "-1cm")
       (insert "\\noindent ")
       (cal-tex-weekly4-box (cal-tex-incr-date date) nil)
@@ -969,61 +955,62 @@ non-nil (note that diary entries are not shown)."
       (cal-tex-nl ".2cm")
       (cal-tex-weekly4-box (cal-tex-incr-date date 3) nil)
       (cal-tex-weekly4-box (cal-tex-incr-date date 6) t)
-      (if (/= i n)
-          (progn
-            (run-hooks 'cal-tex-week-hook)
-            (setq date (cal-tex-incr-date date 7))
-            (cal-tex-newpage))))
+      (unless (= i (1- n))
+        (run-hooks 'cal-tex-week-hook)
+        (setq date (cal-tex-incr-date date 7))
+        (cal-tex-newpage)))
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
+;; TODO respect cal-tex-daily-start,end?
+;; Using different numbers of hours will probably break some layouts.
 (defun cal-tex-weekly4-box (date weekend)
   "Make one box for DATE, different if WEEKEND.
-Uses the 24-hour clock if `cal-tex-24' is non-nil."
-  (let* (
-       (day (extract-calendar-day date))
-       (month (extract-calendar-month date))
-       (year (extract-calendar-year date))
-       (dayname (cal-tex-LaTeXify-string (calendar-day-name date)))
-       (date1 (cal-tex-incr-date date))
-       (day1 (extract-calendar-day date1))
-       (month1 (extract-calendar-month date1))
-       (year1 (extract-calendar-year date1))
-       (dayname1 (cal-tex-LaTeXify-string (calendar-day-name date1)))
-       )
+Uses the 24-hour clock if `cal-tex-24' is non-nil.  Note that the hours
+shown are hard-coded to 8-12, 13-17."
+  (let* ((day (extract-calendar-day date))
+         (month (extract-calendar-month date))
+         (year (extract-calendar-year date))
+         (dayname (cal-tex-LaTeXify-string (calendar-day-name date)))
+         (date1 (cal-tex-incr-date date))
+         (day1 (extract-calendar-day date1))
+         (month1 (extract-calendar-month date1))
+         (year1 (extract-calendar-year date1))
+         (dayname1 (cal-tex-LaTeXify-string (calendar-day-name date1))))
     (cal-tex-b-framebox "8cm" "l")
     (cal-tex-b-parbox "b" "7.5cm")
-    (insert (format "{\\Large\\bf %s,} %s/%s/%s\\\\\n" dayname month day year))
+    (insert (format "\\textbf{\\Large %s,} %s/%s/%s\\\\\n"
+                    dayname month day year))
     (cal-tex-rule "0pt" "7.5cm" ".5mm")
     (cal-tex-nl)
-    (if (not weekend)
-       (progn
-         (calendar-for-loop i from 8 to 12 do
-            (insert (format "{\\large\\sf %d}\\\\\n" i)))
-         (calendar-for-loop i from 1 to 5 do
-            (insert (format "{\\large\\sf %d}\\\\\n"
-                            (if cal-tex-24 (+ i 12) i))))))
+    (unless weekend
+      (dotimes (i 5)
+        (insert (format "\\textsf{\\large %d}\\\\\n" (+ i 8))))
+      (dotimes (i 5)
+        (insert (format "\\textsf{\\large %d}\\\\\n"
+                        (if cal-tex-24
+                            (+ i 13)    ; 13-17 incl
+                          (1+ i))))))   ; 1-5 incl
     (cal-tex-nl ".5cm")
-    (if weekend
-       (progn
-         (cal-tex-vspace "1cm")
-         (insert "\\ \\vfill")
-         (insert (format "{\\Large\\bf %s,} %s/%s/%s\\\\\n"
-                         dayname1 month1 day1 year1))
-         (cal-tex-rule "0pt" "7.5cm" ".5mm")
-         (cal-tex-nl "1.5cm")
-         (cal-tex-vspace "1cm")))
+    (when weekend
+      (cal-tex-vspace "1cm")
+      (insert "\\ \\vfill")
+      (insert (format "\\textbf{\\Large %s,} %s/%s/%s\\\\\n"
+                      dayname1 month1 day1 year1))
+      (cal-tex-rule "0pt" "7.5cm" ".5mm")
+      (cal-tex-nl "1.5cm")
+      (cal-tex-vspace "1cm"))
      (cal-tex-e-parbox)
      (cal-tex-e-framebox)
      (cal-tex-hspace "1cm")))
 
 (defun cal-tex-cursor-filofax-2week (&optional arg)
   "Two-weeks-at-a-glance Filofax style calendar for week cursor is in.
-Optional prefix argument specifies number of weeks (default 1).
+Optional prefix argument ARG specifies number of weeks (default 1).
 The calendar shows holiday and diary entries if
 `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
   (interactive "p")
-  (let* ((n (if arg arg 1))
+  (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
                 (calendar-dayname-on-or-before
                  calendar-week-start-day
@@ -1032,17 +1019,15 @@ The calendar shows holiday and diary entries if
          (month (extract-calendar-month date))
          (year (extract-calendar-year date))
          (day (extract-calendar-day date))
+         (d1 (calendar-absolute-from-gregorian date))
+         (d2 (+ (* 7 n) d1))
          (holidays (if cal-tex-holidays
-                       (cal-tex-list-holidays
-                        (calendar-absolute-from-gregorian date)
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date)))))
+                       (cal-tex-list-holidays d1 d2)))
          (diary-list (if cal-tex-diary
                          (cal-tex-list-diary-entries
-                          (calendar-absolute-from-gregorian
-                           (list month 1 year))
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date))))))
+                          ;; FIXME d1?
+                          (calendar-absolute-from-gregorian (list month 1 year))
+                          d2))))
     (cal-tex-preamble "twoside")
     (cal-tex-cmd "\\textwidth 3.25in")
     (cal-tex-cmd "\\textheight 6.5in")
@@ -1073,58 +1058,53 @@ The calendar shows holiday and diary entries if
 ")
     (cal-tex-b-document)
     (cal-tex-cmd "\\pagestyle{empty}")
-    (calendar-for-loop i from 1 to n do
-       (if (= (mod i 2) 1)
-           (insert "\\righthead")
-         (insert "\\lefthead"))
-       (cal-tex-arg
-        (let ((d (cal-tex-incr-date date 6)))
-          (if (= (extract-calendar-month date)
-                 (extract-calendar-month d))
-              (format "%s %s"
-                      (cal-tex-month-name
-                       (extract-calendar-month date))
-                      (extract-calendar-year date))
-            (if (=  (extract-calendar-year date)
-                    (extract-calendar-year d))
-                (format "%s---%s %s"
-                        (cal-tex-month-name
-                         (extract-calendar-month date))
-                        (cal-tex-month-name
-                         (extract-calendar-month d))
-                        (extract-calendar-year date))
+    (dotimes (i n)
+      (if (zerop (mod i 2))
+          (insert "\\righthead")
+        (insert "\\lefthead"))
+      (cal-tex-arg
+       (let ((d (cal-tex-incr-date date 6)))
+         (if (= (extract-calendar-month date)
+                (extract-calendar-month d))
+             (format "%s %s"
+                     (cal-tex-month-name (extract-calendar-month date))
+                     (extract-calendar-year date))
+           (if (= (extract-calendar-year date)
+                  (extract-calendar-year d))
+               (format "%s---%s %s"
+                       (cal-tex-month-name (extract-calendar-month date))
+                       (cal-tex-month-name (extract-calendar-month d))
+                       (extract-calendar-year date))
               (format "%s %s---%s %s"
-                      (cal-tex-month-name
-                       (extract-calendar-month date))
+                      (cal-tex-month-name (extract-calendar-month date))
                       (extract-calendar-year date)
                       (cal-tex-month-name (extract-calendar-month d))
                       (extract-calendar-year d))))))
-       (insert "%\n")
-       (calendar-for-loop j from 1 to 7 do
-          (if (= (mod i 2) 1)
-              (insert "\\rightday")
-            (insert "\\leftday"))
-          (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
-          (cal-tex-arg (int-to-string (extract-calendar-day date)))
-          (cal-tex-arg (cal-tex-latexify-list diary-list date))
-          (cal-tex-arg (cal-tex-latexify-list holidays date))
-          (cal-tex-arg (eval cal-tex-daily-string))
-          (insert "%\n")
-          (setq date (cal-tex-incr-date date)))
-       (if (/= i n)
-           (progn
-             (run-hooks 'cal-tex-week-hook)
-             (cal-tex-newpage))))
+      (insert "%\n")
+      (dotimes (jdummy 7)
+        (if (zerop (mod i 2))
+            (insert "\\rightday")
+          (insert "\\leftday"))
+        (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
+        (cal-tex-arg (int-to-string (extract-calendar-day date)))
+        (cal-tex-arg (cal-tex-latexify-list diary-list date))
+        (cal-tex-arg (cal-tex-latexify-list holidays date))
+        (cal-tex-arg (eval cal-tex-daily-string))
+        (insert "%\n")
+        (setq date (cal-tex-incr-date date)))
+      (unless (= i (1- n))
+        (run-hooks 'cal-tex-week-hook)
+        (cal-tex-newpage)))
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
 (defun cal-tex-cursor-filofax-week (&optional arg)
   "One-week-at-a-glance Filofax style calendar for week indicated by cursor.
-Optional prefix argument specifies number of weeks (default 1),
+Optional prefix argument ARG specifies number of weeks (default 1),
 starting on Mondays.  The calendar shows holiday and diary entries
 if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
   (interactive "p")
-  (let* ((n (if arg arg 1))
+  (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
                 (calendar-dayname-on-or-before
                  1
@@ -1133,17 +1113,15 @@ if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
          (month (extract-calendar-month date))
          (year (extract-calendar-year date))
          (day (extract-calendar-day date))
+         (d1 (calendar-absolute-from-gregorian date))
+         (d2 (+ (* 7 n) d1))
          (holidays (if cal-tex-holidays
-                       (cal-tex-list-holidays
-                        (calendar-absolute-from-gregorian date)
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date)))))
+                       (cal-tex-list-holidays d1 d2)))
          (diary-list (if cal-tex-diary
                          (cal-tex-list-diary-entries
-                          (calendar-absolute-from-gregorian
-                           (list month 1 year))
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date))))))
+                          ;; FIXME d1?
+                          (calendar-absolute-from-gregorian (list month 1 year))
+                          d2))))
     (cal-tex-preamble "twoside")
     (cal-tex-cmd "\\textwidth 3.25in")
     (cal-tex-cmd "\\textheight 6.5in")
@@ -1183,32 +1161,28 @@ if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
     (cal-tex-b-document)
     (cal-tex-cmd "\\pagestyle{empty}\\ ")
     (cal-tex-newpage)
-    (calendar-for-loop i from 1 to n do
+    (dotimes (i n)
       (insert "\\lefthead")
       (cal-tex-arg
        (let ((d (cal-tex-incr-date date 2)))
          (if (= (extract-calendar-month date)
                 (extract-calendar-month d))
              (format "%s %s"
-                     (cal-tex-month-name
-                      (extract-calendar-month date))
+                     (cal-tex-month-name (extract-calendar-month date))
                      (extract-calendar-year date))
            (if (= (extract-calendar-year date)
                   (extract-calendar-year d))
                (format "%s---%s %s"
-                       (cal-tex-month-name
-                        (extract-calendar-month date))
-                       (cal-tex-month-name
-                        (extract-calendar-month d))
+                       (cal-tex-month-name (extract-calendar-month date))
+                       (cal-tex-month-name (extract-calendar-month d))
                        (extract-calendar-year date))
              (format "%s %s---%s %s"
-                     (cal-tex-month-name
-                      (extract-calendar-month date))
+                     (cal-tex-month-name (extract-calendar-month date))
                      (extract-calendar-year date)
                      (cal-tex-month-name (extract-calendar-month d))
                      (extract-calendar-year d))))))
       (insert "%\n")
-      (calendar-for-loop j from 1 to 3 do
+      (dotimes (jdummy 3)
         (insert "\\leftday")
         (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
         (cal-tex-arg (int-to-string (extract-calendar-day date)))
@@ -1225,25 +1199,21 @@ if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
          (if (= (extract-calendar-month date)
                  (extract-calendar-month d))
              (format "%s %s"
-                     (cal-tex-month-name
-                      (extract-calendar-month date))
+                     (cal-tex-month-name (extract-calendar-month date))
                      (extract-calendar-year date))
            (if (= (extract-calendar-year date)
                   (extract-calendar-year d))
                (format "%s---%s %s"
-                       (cal-tex-month-name
-                        (extract-calendar-month date))
-                       (cal-tex-month-name
-                        (extract-calendar-month d))
+                       (cal-tex-month-name (extract-calendar-month date))
+                       (cal-tex-month-name (extract-calendar-month d))
                        (extract-calendar-year date))
              (format "%s %s---%s %s"
-                     (cal-tex-month-name
-                      (extract-calendar-month date))
+                     (cal-tex-month-name (extract-calendar-month date))
                      (extract-calendar-year date)
                      (cal-tex-month-name (extract-calendar-month d))
                      (extract-calendar-year d))))))
       (insert "%\n")
-      (calendar-for-loop j from 1 to 2 do
+      (dotimes (jdummy 2)
         (insert "\\rightday")
         (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
         (cal-tex-arg (int-to-string (extract-calendar-day date)))
@@ -1252,7 +1222,7 @@ if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
         (cal-tex-arg (eval cal-tex-daily-string))
         (insert "%\n")
         (setq date (cal-tex-incr-date date)))
-      (calendar-for-loop j from 1 to 2 do
+      (dotimes (jdummy 2)
         (insert "\\weekend")
         (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
         (cal-tex-arg (int-to-string (extract-calendar-day date)))
@@ -1261,21 +1231,20 @@ if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
         (cal-tex-arg (eval cal-tex-daily-string))
         (insert "%\n")
         (setq date (cal-tex-incr-date date)))
-      (if (/= i n)
-          (progn
-            (run-hooks 'cal-tex-week-hook)
-            (cal-tex-newpage))))
+      (unless (= i (1- n))
+        (run-hooks 'cal-tex-week-hook)
+        (cal-tex-newpage)))
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
 (defun cal-tex-cursor-filofax-daily (&optional arg)
   "Day-per-page Filofax style calendar for week indicated by cursor.
-Optional prefix argument specifies number of weeks (default 1),
+Optional prefix argument ARG specifies number of weeks (default 1),
 starting on Mondays.  The calendar shows holiday and diary
 entries if `cal-tex-holidays' and `cal-tex-diary', respectively,
 are non-nil.  Pages are ruled if `cal-tex-rules' is non-nil."
   (interactive "p")
-  (let* ((n (if arg arg 1))
+  (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
                 (calendar-dayname-on-or-before
                  1
@@ -1284,17 +1253,15 @@ are non-nil.  Pages are ruled if `cal-tex-rules' is non-nil."
          (month (extract-calendar-month date))
          (year (extract-calendar-year date))
          (day (extract-calendar-day date))
+         (d1 (calendar-absolute-from-gregorian date))
+         (d2 (+ (* 7 n) d1))
          (holidays (if cal-tex-holidays
-                       (cal-tex-list-holidays
-                        (calendar-absolute-from-gregorian date)
-                        (+ (* 7 n)
-                           (calendar-absolute-from-gregorian date)))))
+                       (cal-tex-list-holidays d1 d2)))
          (diary-list (if cal-tex-diary
                          (cal-tex-list-diary-entries
-                          (calendar-absolute-from-gregorian
-                           (list month 1 year))
-                         (+ (* 7 n)
-                            (calendar-absolute-from-gregorian date))))))
+                          ;; FIXME d1?
+                          (calendar-absolute-from-gregorian (list month 1 year))
+                         d2))))
     (cal-tex-preamble "twoside")
     (cal-tex-cmd "\\textwidth 3.25in")
     (cal-tex-cmd "\\textheight 6.5in")
@@ -1337,24 +1304,28 @@ are non-nil.  Pages are ruled if `cal-tex-rules' is non-nil."
 ")
     (cal-tex-b-document)
     (cal-tex-cmd "\\pagestyle{empty}")
-    (calendar-for-loop i from 1 to n do
-      (calendar-for-loop j from 1 to 5 do
-                         (let ((odd (/= 0 (% j 2))))
-                           (insert (if odd "\\righthead" "\\lefthead"))
-                           (cal-tex-arg (calendar-date-string date))
-                           (insert "%\n")
-                           (insert (if odd "\\rightday"  "\\leftday")))
-                         (cal-tex-arg (cal-tex-latexify-list diary-list date))
-                         (cal-tex-arg (cal-tex-latexify-list holidays date "\\\\" t))
-                         (cal-tex-arg (eval cal-tex-daily-string))
-                         (insert "%\n")
-                         (if cal-tex-rules
-                             (insert "\\linesfill\n")
-                           (insert "\\vfill\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n"))
-                         (cal-tex-newpage)
-                         (setq date (cal-tex-incr-date date)))
+    (dotimes (i n)
+      (dotimes (j 4)
+        (let ((even (zerop (% j 2))))
+          (insert (if even
+                      "\\righthead"
+                    "\\lefthead"))
+          (cal-tex-arg (calendar-date-string date))
+          (insert "%\n")
+          (insert (if even
+                      "\\rightday"
+                    "\\leftday")))
+        (cal-tex-arg (cal-tex-latexify-list diary-list date))
+        (cal-tex-arg (cal-tex-latexify-list holidays date "\\\\" t))
+        (cal-tex-arg (eval cal-tex-daily-string))
+        (insert "%\n")
+        (if cal-tex-rules
+            (insert "\\linesfill\n")
+          (insert "\\vfill\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n"))
+        (cal-tex-newpage)
+        (setq date (cal-tex-incr-date date)))
       (insert "%\n")
-      (calendar-for-loop j from 1 to 2 do
+      (dotimes (jdummy 2)
         (insert "\\lefthead")
         (cal-tex-arg (calendar-date-string date))
         (insert "\\weekend")
@@ -1366,12 +1337,11 @@ are non-nil.  Pages are ruled if `cal-tex-rules' is non-nil."
             (insert "\\linesfill\n")
           (insert "\\vfill"))
         (setq date (cal-tex-incr-date date)))
-      (if (not cal-tex-rules)
+      (or cal-tex-rules
           (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n"))
-      (if (/= i n)
-          (progn
-            (run-hooks 'cal-tex-week-hook)
-            (cal-tex-newpage))))
+      (unless (= i (1- n))
+        (run-hooks 'cal-tex-week-hook)
+        (cal-tex-newpage)))
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
@@ -1382,23 +1352,24 @@ are non-nil.  Pages are ruled if `cal-tex-rules' is non-nil."
 
 (defun cal-tex-cursor-day (&optional arg)
   "Make a buffer with LaTeX commands for the day cursor is on.
-Optional prefix argument specifies number of days."
+Optional prefix argument ARG specifies number of days.  The calendar shows
+the hours between `cal-tex-daily-start' and `cal-tex-daily-end', using
+the 24-hour clock if `cal-tex-24' is non-nil."
   (interactive "p")
-  (let ((n (if arg arg 1))
+  (let ((n (or arg 1))
         (date (calendar-absolute-from-gregorian (calendar-cursor-to-date t))))
     (cal-tex-preamble "12pt")
-    (cal-tex-cmd "\\textwidth       6.5in")
+    (cal-tex-cmd "\\textwidth 6.5in")
     (cal-tex-cmd "\\textheight 10.5in")
     (cal-tex-b-document)
     (cal-tex-cmd "\\pagestyle{empty}")
-    (calendar-for-loop i from 1 to n do
+    (dotimes (i n)
       (cal-tex-vspace "-1.7in")
       (cal-tex-daily-page (calendar-gregorian-from-absolute date))
       (setq date (1+ date))
-      (if (/= i n)
-          (progn
-            (cal-tex-newpage)
-            (run-hooks 'cal-tex-daily-hook))))
+      (unless (= i (1- n))
+        (cal-tex-newpage)
+        (run-hooks 'cal-tex-daily-hook)))
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
@@ -1407,8 +1378,8 @@ Optional prefix argument specifies number of days."
 Uses the 24-hour clock if `cal-tex-24' is non-nil.  Produces
 hourly sections for the period specified by `cal-tex-daily-start'
 and `cal-tex-daily-end'."
-  (let* ((hour)
-         (month-name (cal-tex-month-name (extract-calendar-month date))))
+  (let ((month-name (cal-tex-month-name (extract-calendar-month date)))
+        hour)
     (cal-tex-banner "cal-tex-daily-page")
     (cal-tex-b-makebox "4cm" "l")
     (cal-tex-b-parbox "b" "3.8cm")
@@ -1434,7 +1405,7 @@ and `cal-tex-daily-end'."
        (setq hour (if cal-tex-24
                       i
                     (mod i 12)))
-       (if (= 0 hour) (setq hour 12))
+       (if (zerop hour) (setq hour 12))
        (cal-tex-b-makebox "1cm" "c")
        (cal-tex-arg (number-to-string hour))
        (cal-tex-e-makebox)
@@ -1475,47 +1446,50 @@ and `cal-tex-daily-end'."
 
 (defun cal-tex-mini-calendar (month year name width height &optional ptsize colsep)
   "Produce mini-calendar for MONTH, YEAR in macro NAME with WIDTH and HEIGHT.
-Optional PTSIZE gives the point ptsize; scriptsize is the default.  Optional
-COLSEP gives the column separation; 1mm is the default."
-  (let* ((blank-days;; at start of month
-          (mod
-           (- (calendar-day-of-week (list month 1 year))
-              calendar-week-start-day)
-           7))
-          (last (calendar-last-day-of-month month year))
-         (colsep (if colsep colsep "1mm"))
-         (str (concat "\\def\\" name "{\\hbox to" width "{%\n"
-                      "\\vbox to" height "{%\n"
-                      "\\vfil  \\hbox to" width "{%\n"
-                      "\\hfil\\"
-                      (if ptsize ptsize "scriptsize")
-                      "\\begin{tabular}"
-                      "{@{\\hspace{0mm}}r@{\\hspace{" colsep
-                      "}}r@{\\hspace{" colsep "}}r@{\\hspace{" colsep
-                      "}}r@{\\hspace{" colsep "}}r@{\\hspace{" colsep
-                      "}}r@{\\hspace{" colsep "}}r@{\\hspace{0mm}}}%\n"
-                      "\\multicolumn{7}{c}{"
-                      (cal-tex-month-name month)
-                      " "
-                      (int-to-string year)
-                      "}\\\\[1mm]\n")))
-    (calendar-for-loop i from 0 to 6 do
+Optional string PTSIZE gives the point size (default \"scriptsize\").
+Optional string COLSEP gives the column separation (default \"1mm\")."
+  (or colsep (setq colsep "1mm"))
+  (or ptsize (setq ptsize "scriptsize"))
+  (let ((blank-days                     ; at start of month
+         (mod
+          (- (calendar-day-of-week (list month 1 year))
+             calendar-week-start-day)
+          7))
+        (last (calendar-last-day-of-month month year))
+        (str (concat "\\def\\" name "{\\hbox to" width "{%\n"
+                     "\\vbox to" height "{%\n"
+                     "\\vfil  \\hbox to" width "{%\n"
+                     "\\hfil\\" ptsize
+                     "\\begin{tabular}"
+                     "{@{\\hspace{0mm}}r@{\\hspace{" colsep
+                     "}}r@{\\hspace{" colsep "}}r@{\\hspace{" colsep
+                     "}}r@{\\hspace{" colsep "}}r@{\\hspace{" colsep
+                     "}}r@{\\hspace{" colsep "}}r@{\\hspace{0mm}}}%\n"
+                     "\\multicolumn{7}{c}{"
+                     (cal-tex-month-name month)
+                     " "
+                     (int-to-string year)
+                     "}\\\\[1mm]\n")))
+    (dotimes (i 7)
       (setq str
             (concat str
                     (cal-tex-LaTeXify-string
                      (substring (aref calendar-day-name-array
                                       (mod (+ calendar-week-start-day i) 7))
+
                                 0 2))
-                    (if (/= i 6)
-                        " & "
-                      "\\\\[0.7mm]\n"))))
-    (calendar-for-loop i from 1 to blank-days do
+                    (if (= i 6)
+                        "\\\\[0.7mm]\n"
+                      " & "))))
+    (dotimes (idummy blank-days)
       (setq str (concat str " & ")))
-    (calendar-for-loop i from 1 to last do
-                       (setq str (concat str (int-to-string i)))
-                       (setq str (concat str (if (zerop (mod (+ i blank-days) 7))
-                                                 (if (/= i last) "\\\\[0.5mm]\n" "")
-                                               " & "))))
+    (dotimes (i last)
+      (setq str (concat str (int-to-string (1+ i)))
+            str (concat str (if (zerop (mod (+ i 1 blank-days) 7))
+                                (if (= i (1- last))
+                                    ""
+                                  "\\\\[0.5mm]\n")
+                              " & "))))
     (setq str (concat str "\n\\end{tabular}\\hfil}\\vfil}}}%\n"))
     str))
 
@@ -1527,40 +1501,38 @@ COLSEP gives the column separation; 1mm is the default."
   "The date of the day following DATE.
 If optional N is given, the date of N days after DATE."
   (calendar-gregorian-from-absolute
-   (+ (if n n 1) (calendar-absolute-from-gregorian date))))
+   (+ (or n 1) (calendar-absolute-from-gregorian date))))
 
 (defun cal-tex-latexify-list (date-list date &optional separator final-separator)
-  "Return string with concatenated, LaTeXified entries in DATE-LIST for DATE.
+  "Return string with concatenated, LaTeX-ified entries in DATE-LIST for DATE.
 Use double backslash as a separator unless optional SEPARATOR is given.
 If resulting string is not empty, put separator at end if optional
-FINAL-SEPARATOR is t."
-  (let* ((sep (if separator separator "\\\\"))
-         (result
-          (mapconcat '(lambda (x) (cal-tex-LaTeXify-string  x))
-                     (let ((result)
-                           (p date-list))
-                       (while p
-                         (and (car (car p))
-                              (calendar-date-equal date (car (car p)))
-                              (setq result (cons (car (cdr (car p))) result)))
-                         (setq p (cdr p)))
-                       (reverse result))
-                     sep)))
-    (if (and final-separator (not (string-equal result "")))
-          (concat result sep)
-        result)))
+FINAL-SEPARATOR is non-nil."
+  (or separator (setq separator "\\\\"))
+  (let (result)
+    (setq result
+          (mapconcat (lambda (x) (cal-tex-LaTeXify-string x))
+                     (dolist (d date-list (reverse result))
+                       (and (car d)
+                            (calendar-date-equal date (car d))
+                            (setq result (cons (cadr d) result))))
+                     separator))
+    (if (and final-separator
+             (not (string-equal result "")))
+        (concat result separator)
+      result)))
 
 (defun cal-tex-previous-month (date)
   "Return the date of the first day in the month previous to DATE."
-  (let* ((month (extract-calendar-month date))
-         (year (extract-calendar-year date)))
+  (let ((month (extract-calendar-month date))
+        (year (extract-calendar-year date)))
     (increment-calendar-month month year -1)
     (list month 1 year)))
 
 (defun cal-tex-next-month (date)
-  "Return the date of the first day in the  month following DATE."
-  (let* ((month (extract-calendar-month date))
-         (year (extract-calendar-year date)))
+  "Return the date of the first day in the month following DATE."
+  (let ((month (extract-calendar-month date))
+        (year (extract-calendar-year date)))
     (increment-calendar-month month year 1)
     (list month 1 year)))
 
@@ -1576,40 +1548,39 @@ informative header, and run HOOK."
   (latex-mode)
   (pop-to-buffer cal-tex-buffer)
   (goto-char (point-min))
-  (cal-tex-comment "       This buffer was produced by cal-tex.el.")
-  (cal-tex-comment "       To print a calendar, type")
-  (cal-tex-comment "          M-x tex-buffer RET")
-  (cal-tex-comment "          M-x tex-print  RET")
-  (goto-char (point-min)))
+  ;; FIXME auctex equivalents?
+  (cal-tex-comment
+   (format "\tThis buffer was produced by cal-tex.el.
+\tTo print a calendar, type
+\t\tM-x tex-buffer RET
+\t\tM-x tex-print  RET")))
 
 (defun cal-tex-insert-preamble (weeks landscape size &optional append)
-  "Initialize the output buffer.
-Select the output buffer, and insert the preamble for a calendar of
-WEEKS weeks.  Insert code for landscape mode if LANDSCAPE is true.
-Use pointsize SIZE.  Optional argument APPEND, if t, means add to end of
-without erasing current contents."
+  "Initialize the output LaTeX calendar buffer, `cal-tex-buffer'.
+Select the output buffer, and insert the preamble for a calendar
+of WEEKS weeks.  Insert code for landscape mode if LANDSCAPE is
+non-nil.  Use pointsize SIZE.  Optional argument APPEND, if
+non-nil, means add to end of buffer without erasing current contents."
   (let ((width "18cm")
         (height "24cm"))
-    (if landscape
-        (progn
-          (setq width "24cm")
-          (setq height "18cm")))
-    (if (not append)
-        (progn
-          (cal-tex-preamble size)
-          (if (not landscape)
-            (progn
-              (cal-tex-cmd "\\oddsidemargin -1.75cm")
-              (cal-tex-cmd "\\def\\holidaymult{.06}"))
-            (cal-tex-cmd "\\special{landscape}")
-            (cal-tex-cmd "\\textwidth  9.5in")
-            (cal-tex-cmd "\\textheight 7in")
-            (cal-tex-comment)
-            (cal-tex-cmd "\\def\\holidaymult{.08}"))
-          (cal-tex-cmd  cal-tex-caldate)
-          (cal-tex-cmd  cal-tex-myday)
-          (cal-tex-b-document)
-          (cal-tex-cmd "\\pagestyle{empty}")))
+    (when landscape
+      (setq width "24cm"
+            height "18cm"))
+    (unless append
+      (cal-tex-preamble size)
+      (if (not landscape)
+          (progn
+            (cal-tex-cmd "\\oddsidemargin -1.75cm")
+            (cal-tex-cmd "\\def\\holidaymult{.06}"))
+        (cal-tex-cmd "\\special{landscape}")
+        (cal-tex-cmd "\\textwidth 9.5in")
+        (cal-tex-cmd "\\textheight 7in")
+        (cal-tex-comment)
+        (cal-tex-cmd "\\def\\holidaymult{.08}"))
+      (cal-tex-cmd cal-tex-caldate)
+      (cal-tex-cmd cal-tex-myday)
+      (cal-tex-b-document)
+      (cal-tex-cmd "\\pagestyle{empty}"))
     (cal-tex-cmd "\\setlength{\\cellwidth}" width)
     (insert (format "\\setlength{\\cellwidth}{%f\\cellwidth}\n"
                     (/ 1.1 (length cal-tex-which-days))))
@@ -1619,10 +1590,12 @@ without erasing current contents."
     (cal-tex-cmd "\\ \\par")
     (cal-tex-vspace "-3cm")))
 
-(defvar cal-tex-LaTeX-subst-list
+(defconst cal-tex-LaTeX-subst-list
   '(("\"". "``")
-    ("\"". "''");; Quote changes meaning when list is reversed.
-    ("@" . "\\verb|@|")
+    ("\"". "''")        ; quote changes meaning when list is reversed
+    ;; Don't think this is necessary, and in any case, does not work:
+    ;; "LaTeX Error: \verb illegal in command argument".
+;;;    ("@" . "\\verb|@|")
     ("&" . "\\&")
     ("%" . "\\%")
     ("$" . "\\$")
@@ -1632,8 +1605,8 @@ without erasing current contents."
     ("}" . "\\}")
     ("<" . "$<$")
     (">" . "$>$")
-    ("\n" . "\\ \\\\"))  ;\\ needed for e.g \begin{center}\n AA\end{center}
-  "List of symbols and their replacements.")
+    ("\n" . "\\ \\\\")) \\ needed for e.g \begin{center}\n AA\end{center}
+  "Alist of symbols and their LaTeX replacements.")
 
 (defun cal-tex-LaTeXify-string (string)
   "Protect special characters in STRING from LaTeX."
@@ -1643,23 +1616,29 @@ without erasing current contents."
           (tail string)
           (list cal-tex-LaTeX-subst-list))
       (while (not (string-equal tail ""))
-        (let* ((ch (substring tail 0 1))
+        (let* ((ch (substring-no-properties tail 0 1))
                (pair (assoc ch list)))
           (if (and pair (string-equal ch "\""))
-              (setq list (reverse list)));; Quote changes meaning each time.
-          (setq tail (substring tail 1))
-          (setq head (concat head (if pair (cdr pair) ch)))))
+              (setq list (reverse list))) ; quote changes meaning each time
+          (setq tail (substring-no-properties tail 1)
+                head (concat head (if pair (cdr pair) ch)))))
       head)))
 
 (defun cal-tex-month-name (month)
   "The name of MONTH, LaTeXified."
   (cal-tex-LaTeXify-string (calendar-month-name month)))
 
-(defun cal-tex-hfill () "Insert hfill." (insert "\\hfill"))
+(defun cal-tex-hfill ()
+  "Insert hfill."
+  (insert "\\hfill"))
 
-(defun cal-tex-newpage () "Insert newpage." (insert "\\newpage%\n"))
+(defun cal-tex-newpage ()
+  "Insert newpage."
+  (insert "\\newpage%\n"))
 
-(defun cal-tex-noindent () "Insert noindent." (insert "\\noindent"))
+(defun cal-tex-noindent ()
+  "Insert noindent."
+  (insert "\\noindent"))
 
 (defun cal-tex-vspace (space)
   "Insert vspace command to move SPACE vertically."
@@ -1672,37 +1651,32 @@ without erasing current contents."
   (cal-tex-comment))
 
 (defun cal-tex-comment (&optional comment)
-  "Insert % at end of line, include COMMENT if present, and move
-   to next line."
-  (insert "% ")
-  (if comment
-      (insert comment))
-  (insert "\n"))
+  "Insert `% ', followed by optional string COMMENT, followed by newline.
+COMMENT may contain newlines, which are prefixed by `% ' in the output."
+  (insert (format "%% %s\n"
+                  (if comment
+                      (replace-regexp-in-string "\n" "\n% " comment)
+                    ""))))
 
 (defun cal-tex-banner (comment)
-  "Insert the COMMENT separated by blank lines."
-  (cal-tex-comment)
-  (cal-tex-comment)
-  (cal-tex-comment (concat "\t\t\t" comment))
-  (cal-tex-comment))
-
+  "Insert string COMMENT, separated by blank lines."
+  (cal-tex-comment (format "\n\n\n\t\t\t%s\n" comment)))
 
 (defun cal-tex-nl (&optional skip comment)
   "End a line with \\.  If SKIP, then add that much spacing.
-   Add COMMENT if present"
-  (insert "\\\\")
-  (if skip
-      (insert "[" skip "]"))
+Add trailing COMMENT if present."
+  (insert (format "\\\\%s"
+                  (if skip
+                      (format "[%s]" skip)
+                    "")))
   (cal-tex-comment comment))
 
 (defun cal-tex-arg (&optional text)
-  "Insert optional TEXT surrounded by braces."
-  (insert "{")
-  (if text (insert text))
-  (insert "}"))
+  "Insert a brace {} pair containing the optional string TEXT."
+  (insert (format "{%s}" (or text ""))))
 
 (defun cal-tex-cmd (cmd &optional arg)
-  "Insert LaTeX CMD, with optional ARG, and end with %"
+  "Insert LaTeX CMD, with optional argument ARG, and end with %."
   (insert cmd)
   (cal-tex-arg arg)
   (cal-tex-comment))
@@ -1740,15 +1714,15 @@ without erasing current contents."
   (cal-tex-comment))
 
 (defun cal-tex-e-parbox (&optional height)
-  "Insert end of parbox. Force it to be a given HEIGHT."
+  "Insert end of parbox.  Optionally, force it to be a given HEIGHT."
   (cal-tex-comment)
   (if height
       (cal-tex-rule "0mm" "0mm" height))
   (insert "}")
   (cal-tex-comment "end parbox"))
 
-(defun cal-tex-b-framebox ( width position )
-  "Insert  framebox with parameters WIDTH and POSITION (clr)."
+(defun cal-tex-b-framebox (width position)
+  "Insert framebox with parameters WIDTH and POSITION (clr)."
   (insert "\\framebox[" width "][" position "]{" )
   (cal-tex-comment))
 
@@ -1760,7 +1734,7 @@ without erasing current contents."
 
 
 (defun cal-tex-b-makebox ( width position )
-  "Insert  makebox with parameters WIDTH and POSITION (clr)."
+  "Insert makebox with parameters WIDTH and POSITION (clr)."
   (insert "\\makebox[" width "][" position "]{" )
   (cal-tex-comment))
 
@@ -1780,36 +1754,37 @@ without erasing current contents."
 ;;;
 
 (defun cal-tex-em (string)
-  "Insert STRING in bf font."
-  (insert "{\\em " string "}"))
+  "Insert STRING in italic font."
+  (insert "\\textit{" string "}"))
 
 (defun cal-tex-bf (string)
   "Insert STRING in bf font."
-  (insert "{\\bf " string "}"))
+  (insert "\\textbf{ " string "}"))
 
 (defun cal-tex-scriptsize (string)
   "Insert STRING in scriptsize font."
   (insert "{\\scriptsize " string "}"))
 
 (defun cal-tex-huge (string)
-  "Insert STRING in huge size."
+  "Insert STRING in huge font."
   (insert "{\\huge " string "}"))
 
 (defun cal-tex-Huge (string)
-  "Insert STRING in Huge size."
+  "Insert STRING in Huge font."
   (insert "{\\Huge " string "}"))
 
 (defun cal-tex-Huge-bf (string)
-  "Insert STRING in Huge bf size."
-  (insert "{\\Huge\\bf " string "}"))
+  "Insert STRING in Huge bf font."
+  (insert "\\textbf{\\Huge " string "}"))
 
 (defun cal-tex-large (string)
-  "Insert STRING in large size."
+  "Insert STRING in large font."
   (insert "{\\large " string "}"))
 
 (defun cal-tex-large-bf (string)
-  "Insert STRING in large bf size."
-  (insert "{\\large\\bf  " string "}"))
+  "Insert STRING in large bf font."
+  (insert "\\textbf{\\large " string "}"))
+
 
 (provide 'cal-tex)
 
index b6a77bb517446ddc2bfb48a8104ac501c0a81de7..24b1f896179daacfdbda6a2006e6486ec33bd754 100644 (file)
@@ -164,5 +164,5 @@ This function requires a display capable of multiple frames, else
 
 (provide 'cal-x)
 
-;;; arch-tag: c6dbddca-ae84-442d-87fc-244b76e38e17
+;; arch-tag: c6dbddca-ae84-442d-87fc-244b76e38e17
 ;;; cal-x.el ends here
index 330cf8521f3d63638cada0759fc331131e474179..c252341526a7463835712eeae2920070a84d3d9e 100644 (file)
@@ -823,7 +823,7 @@ describes the style of such diary entries."
   :type 'hook
   :options '(list-hebrew-diary-entries
             list-islamic-diary-entries
-            list-bahai-diary-entries)
+            diary-bahai-list-entries)
   :group 'diary)
 
 ;;;###autoload
@@ -855,7 +855,7 @@ describes the style of such diary entries."
   :type 'hook
   :options '(mark-hebrew-diary-entries
             mark-islamic-diary-entries
-            mark-bahai-diary-entries)
+            diary-bahai-mark-entries)
   :group 'diary)
 
 ;;;###autoload
@@ -1212,11 +1212,11 @@ of `general-holidays', `local-holidays' `christian-holidays',
 you can eliminate unwanted categories of holidays.
 
 The aforementioned variables control the holiday choices offered
-by the function `list-holidays' when it is called interactively.
+by the function `holiday-list' when it is called interactively.
 
 They also initialize the default value of `calendar-holidays',
 which is the default list of holidays used by the function
-`list-holidays' in the non-interactive case.  Note that these
+`holiday-list' in the non-interactive case.  Note that these
 variables have no effect on `calendar-holidays' after it has been
 set (e.g. after the calendar is loaded).  In that case, customize
 `calendar-holidays' directly.
@@ -1343,7 +1343,9 @@ MON defaults to `displayed-month'.  YR defaults to `displayed-year'."
   (cons mon yr))
 
 (defmacro calendar-for-loop (var from init to final do &rest body)
-  "Execute a for loop."
+  "Execute a for loop.
+Evaluate BODY with VAR bound to successive integers from INIT to FINAL,
+inclusive."
   (declare (debug (symbolp "from" form "to" form "do" body)))
   `(let ((,var (1- ,init)))
     (while (>= ,final (setq ,var (1+ ,var)))
@@ -1491,19 +1493,19 @@ return negative results."
   "Move the cursor backward ARG years."
   t)
 
-(autoload 'scroll-calendar-left "cal-move"
+(autoload 'calendar-scroll-left "cal-move"
   "Scroll the displayed calendar left by ARG months."
   t)
 
-(autoload 'scroll-calendar-right "cal-move"
+(autoload 'calendar-scroll-right "cal-move"
   "Scroll the displayed calendar window right by ARG months."
   t)
 
-(autoload 'scroll-calendar-left-three-months "cal-move"
+(autoload 'calendar-scroll-left-three-months "cal-move"
   "Scroll the displayed calendar window left by 3*ARG months."
   t)
 
-(autoload 'scroll-calendar-right-three-months "cal-move"
+(autoload 'calendar-scroll-right-three-months "cal-move"
   "Scroll the displayed calendar window right by 3*ARG months."
   t)
 
@@ -1614,7 +1616,7 @@ the date indicated by the cursor position in the displayed three-month
 calendar."
   t)
 
-(autoload 'list-calendar-holidays "holidays"
+(autoload 'calendar-list-holidays "holidays"
   "Create a buffer containing the holidays for the current calendar window.
 The holidays are those in the list `calendar-notable-days'.  Returns t if any
 holidays are found, nil if not."
@@ -1675,8 +1677,10 @@ to be replaced by asterisks to highlight it whenever it is in the window."
     ;; (calendar-read-date t) returns a date with day = nil, which is
     ;; not a legal date for the visible test in the diary section.
     (if arg (setcar (cdr date) 1))
-    (pop-to-buffer calendar-buffer)
     (increment-calendar-month month year (- calendar-offset))
+    ;; Display the buffer before calling generate-calendar-window so that it
+    ;; can get a chance to adjust the window sizes to the frame size.
+    (pop-to-buffer calendar-buffer)
     (generate-calendar-window month year)
     (if (and view-diary-entries-initially (calendar-date-is-visible-p date))
         (diary-view-entries)))
@@ -1684,7 +1688,7 @@ to be replaced by asterisks to highlight it whenever it is in the window."
          (diary-window (if diary-buffer (get-buffer-window diary-buffer)))
          (split-height-threshold (if diary-window 2 1000)))
     (if view-calendar-holidays-initially
-        (list-calendar-holidays)))
+        (calendar-list-holidays)))
   (run-hooks 'initial-calendar-window-hook))
 
 (autoload 'view-other-diary-entries "diary-lib"
@@ -1821,7 +1825,7 @@ Driven by the variable `calendar-date-display-form'.")
 (autoload 'calendar-islamic-date-string "cal-islam"
   "String of Islamic date of Gregorian date.")
 
-(autoload 'calendar-goto-bahai-date "cal-bahai"
+(autoload 'calendar-bahai-goto-date "cal-bahai"
   "Move cursor to Baha'i date DATE.
 Echo Baha'i date unless NOECHO is t."
   t)
@@ -1951,17 +1955,17 @@ to the date indicated by point."
 to the date indicated by point."
   t)
 
-(autoload 'insert-bahai-diary-entry "cal-bahai"
+(autoload 'diary-bahai-insert-entry "cal-bahai"
   "Insert a diary entry for the Baha'i date corresponding to the date
 indicated by point."
   t)
 
-(autoload 'insert-monthly-bahai-diary-entry "cal-bahai"
+(autoload 'diary-bahai-insert-monthly-entry "cal-bahai"
   "Insert a monthly diary entry for the day of the Baha'i month corresponding
 to the date indicated by point."
   t)
 
-(autoload 'insert-yearly-bahai-diary-entry "cal-bahai"
+(autoload 'diary-bahai-insert-yearly-entry "cal-bahai"
   "Insert an annual diary entry for the day of the Baha'i year corresponding
 to the date indicated by point."
   t)
@@ -2056,7 +2060,7 @@ existing output files are overwritten." t)
 (defun generate-calendar-window (&optional mon yr)
   "Generate the calendar window for the current date.
 Or, for optional MON, YR."
-  (let* ((buffer-read-only nil)
+  (let* ((inhibit-read-only t)
          (today (calendar-current-date))
          (month (extract-calendar-month today))
          (day (extract-calendar-day today))
@@ -2068,10 +2072,8 @@ Or, for optional MON, YR."
          (day-in-week (calendar-day-of-week today))
          (in-calendar-window (eq (window-buffer (selected-window))
                                  (get-buffer calendar-buffer))))
+    (generate-calendar (or mon month) (or yr year))
     (update-calendar-mode-line)
-    (if mon
-        (generate-calendar mon yr)
-      (generate-calendar month year))
     (calendar-cursor-to-visible-date
      (if today-visible today (list displayed-month 1 displayed-year)))
     (set-buffer-modified-p nil)
@@ -2100,19 +2102,19 @@ Or, for optional MON, YR."
 
 (defun generate-calendar (month year)
   "Generate a three-month Gregorian calendar centered around MONTH, YEAR."
-;;; A negative YEAR is interpreted as BC; -1 being 1 BC, and so on.
-;;; Note that while calendars for years BC could be displayed as it
-;;; stands, almost all other calendar functions (eg holidays) would
-;;; at best have unpredictable results for such dates.
+  ;; A negative YEAR is interpreted as BC; -1 being 1 BC, and so on.
+  ;; Note that while calendars for years BC could be displayed as it
+  ;; stands, almost all other calendar functions (eg holidays) would
+  ;; at best have unpredictable results for such dates.
   (if (< (+ month (* 12 (1- year))) 2)
       (error "Months before January, 1 AD cannot be displayed"))
   (setq displayed-month month
         displayed-year year)
   (erase-buffer)
   (increment-calendar-month month year -1)
-  (calendar-for-loop i from 0 to 2 do
-       (generate-calendar-month month year (+ 5 (* 25 i)))
-       (increment-calendar-month month year 1)))
+  (dotimes (i 3)
+    (generate-calendar-month month year (+ 5 (* 25 i)))
+    (increment-calendar-month month year 1)))
 
 (defun generate-calendar-month (month year indent)
   "Produce a calendar for MONTH, YEAR on the Gregorian calendar.
@@ -2133,18 +2135,18 @@ line."
     indent t)
    (calendar-insert-indented "" indent);; Go to proper spot
    ;; Use the first two characters of each day to head the columns.
-   (calendar-for-loop i from 0 to 6 do
-      (insert
-       (let ((string
-              (calendar-day-name (mod (+ calendar-week-start-day i) 7) nil t)))
-         (if enable-multibyte-characters
-             (truncate-string-to-width string 2)
-           (substring string 0 2)))
-       " "))
+   (dotimes (i 7)
+     (insert
+      (let ((string
+             (calendar-day-name (mod (+ calendar-week-start-day i) 7) nil t)))
+        (if enable-multibyte-characters
+            (truncate-string-to-width string 2)
+          (substring string 0 2)))
+      " "))
    (calendar-insert-indented "" 0 t);; Force onto following line
    (calendar-insert-indented "" indent);; Go to proper spot
    ;; Add blank days before the first of the month
-   (calendar-for-loop i from 1 to blank-days do (insert "   "))
+   (dotimes (idummy blank-days) (insert "   "))
    ;; Put in the days of the month
    (calendar-for-loop i from 1 to last do
       (insert (format "%2d " i))
@@ -2210,9 +2212,9 @@ movement commands will not work correctly."
   :type 'boolean
   :group 'calendar)
 
-(defvar calendar-mode-map nil)
-(if calendar-mode-map
-    nil
+(require 'cal-menu)
+
+(defvar calendar-mode-map
   (let ((map (make-keymap)))
     (suppress-keymap map)
     (dolist (c '(narrow-to-region mark-word mark-sexp mark-paragraph
@@ -2220,14 +2222,14 @@ movement commands will not work correctly."
                  downcase-region upcase-region kill-region
                  copy-region-as-kill capitalize-region write-region))
       (define-key map (vector 'remap c) 'calendar-not-implemented))
-    (define-key map "<"     'scroll-calendar-right)
-    (define-key map "\C-x<" 'scroll-calendar-right)
-    (define-key map [prior] 'scroll-calendar-right-three-months)
-    (define-key map "\ev"   'scroll-calendar-right-three-months)
-    (define-key map ">"     'scroll-calendar-left)
-    (define-key map "\C-x>" 'scroll-calendar-left)
-    (define-key map [next]  'scroll-calendar-left-three-months)
-    (define-key map "\C-v"  'scroll-calendar-left-three-months)
+    (define-key map "<"     'calendar-scroll-right)
+    (define-key map "\C-x<" 'calendar-scroll-right)
+    (define-key map [prior] 'calendar-scroll-right-three-months)
+    (define-key map "\ev"   'calendar-scroll-right-three-months)
+    (define-key map ">"     'calendar-scroll-left)
+    (define-key map "\C-x>" 'calendar-scroll-left)
+    (define-key map [next]  'calendar-scroll-left-three-months)
+    (define-key map "\C-v"  'calendar-scroll-left-three-months)
     (define-key map "\C-b"  'calendar-backward-day)
     (define-key map "\C-p"  'calendar-backward-week)
     (define-key map "\e{"   'calendar-backward-month)
@@ -2248,7 +2250,7 @@ movement commands will not work correctly."
     (define-key map "\e>"   'calendar-end-of-year)
     (define-key map "\C-@"  'calendar-set-mark)
     ;; Many people are used to typing C-SPC and getting C-@.
-    (define-key map [?\C- ] 'calendar-set-mark)
+    (define-key map [?\C-\s] 'calendar-set-mark)
     (define-key map "\C-x\C-x" 'calendar-exchange-point-and-mark)
     (define-key map "\e=" 'calendar-count-days-region)
     (define-key map "gd"  'calendar-goto-date)
@@ -2257,7 +2259,7 @@ movement commands will not work correctly."
     (define-key map "ga"  'calendar-goto-astro-day-number)
     (define-key map "gh"  'calendar-goto-hebrew-date)
     (define-key map "gi"  'calendar-goto-islamic-date)
-    (define-key map "gb"  'calendar-goto-bahai-date)
+    (define-key map "gb"  'calendar-bahai-goto-date)
     (define-key map "gC"  'calendar-goto-chinese-date)
     (define-key map "gk"  'calendar-goto-coptic-date)
     (define-key map "ge"  'calendar-goto-ethiopic-date)
@@ -2282,7 +2284,7 @@ movement commands will not work correctly."
     (define-key map "."   'calendar-goto-today)
     (define-key map "o"   'calendar-other-month)
     (define-key map "q"   'exit-calendar)
-    (define-key map "a"   'list-calendar-holidays)
+    (define-key map "a"   'calendar-list-holidays)
     (define-key map "h"   'calendar-cursor-holidays)
     (define-key map "x"   'mark-calendar-holidays)
     (define-key map "u"   'calendar-unmark)
@@ -2300,7 +2302,7 @@ movement commands will not work correctly."
     (define-key map "pa"  'calendar-print-astro-day-number)
     (define-key map "ph"  'calendar-print-hebrew-date)
     (define-key map "pi"  'calendar-print-islamic-date)
-    (define-key map "pb"  'calendar-print-bahai-date)
+    (define-key map "pb"  'calendar-bahai-print-date)
     (define-key map "pf"  'calendar-print-french-date)
     (define-key map "pm"  'calendar-print-mayan-date)
     (define-key map "po"  'calendar-print-other-dates)
@@ -2317,9 +2319,9 @@ movement commands will not work correctly."
     (define-key map "iid" 'insert-islamic-diary-entry)
     (define-key map "iim" 'insert-monthly-islamic-diary-entry)
     (define-key map "iiy" 'insert-yearly-islamic-diary-entry)
-    (define-key map "iBd" 'insert-bahai-diary-entry)
-    (define-key map "iBm" 'insert-monthly-bahai-diary-entry)
-    (define-key map "iBy" 'insert-yearly-bahai-diary-entry)
+    (define-key map "iBd" 'diary-bahai-insert-entry)
+    (define-key map "iBm" 'diary-bahai-insert-monthly-entry)
+    (define-key map "iBy" 'diary-bahai-insert-yearly-entry)
     (define-key map "?"   'calendar-goto-info-node)
     (define-key map "Hm" 'cal-html-cursor-month)
     (define-key map "Hy" 'cal-html-cursor-year)
@@ -2336,9 +2338,26 @@ movement commands will not work correctly."
     (define-key map "tfy" 'cal-tex-cursor-filofax-year)
     (define-key map "ty" 'cal-tex-cursor-year)
     (define-key map "tY" 'cal-tex-cursor-year-landscape)
-    (setq calendar-mode-map map)
-    ;; Require cal-menu after initializing calendar-mode-map because it uses it.
-    (require 'cal-menu)))
+
+    (define-key map [menu-bar edit] 'undefined)
+    (define-key map [menu-bar search] 'undefined)
+    ;; This ignores the mouse-up event after the mouse-down that pops up the
+    ;; context menu.  It should not be necessary because the mouse-up event
+    ;; should be eaten up by the menu-handling toolkit.
+    ;; (define-key map [mouse-2] 'ignore)
+
+    (easy-menu-define nil map nil cal-menu-moon-menu)
+    (easy-menu-define nil map nil cal-menu-diary-menu)
+    (easy-menu-define nil map nil cal-menu-holidays-menu)
+    (easy-menu-define nil map nil cal-menu-goto-menu)
+    (easy-menu-define nil map nil cal-menu-scroll-menu)
+  
+    (define-key map [down-mouse-3]
+      (easy-menu-binding cal-menu-context-mouse-menu))
+    (define-key map [down-mouse-2]
+      (easy-menu-binding cal-menu-global-mouse-menu))
+
+    map))
 
 (defun describe-calendar-mode ()
   "Create a help buffer with a brief description of the `calendar-mode'."
@@ -2362,7 +2381,7 @@ movement commands will not work correctly."
               'help-echo "mouse-1: previous month"
               'mouse-face 'mode-line-highlight
               'keymap (make-mode-line-mouse-map 'mouse-1
-                                                'mouse-scroll-calendar-right))
+                                                'calendar-scroll-right))
    "Calendar"
    (concat
     (propertize
@@ -2391,7 +2410,7 @@ movement commands will not work correctly."
               'help-echo "mouse-1: next month"
               'mouse-face 'mode-line-highlight
               'keymap (make-mode-line-mouse-map
-                       'mouse-1 'mouse-scroll-calendar-left)))
+                       'mouse-1 'calendar-scroll-left)))
   "The mode line of the calendar buffer.
 
 This must be a list of items that evaluate to strings--those strings are
@@ -2399,8 +2418,8 @@ evaluated and concatenated together, evenly separated by blanks.  The variable
 `date' is available for use as the date under (or near) the cursor; `date'
 defaults to the current date if it is otherwise undefined.  Here is an example
 value that has the Hebrew date, the day number/days remaining in the year,
-and the ISO week/year numbers in the mode.  When calendar-move-hook is set to
-'update-calendar-mode-line, these mode line shows these values for the date
+and the ISO week/year numbers in the mode.  When `calendar-move-hook' is set
+to `update-calendar-mode-line', these mode line shows these values for the date
 under the cursor:
 
       (list
@@ -2416,26 +2435,7 @@ under the cursor:
           (format \"ISO week %d of %d\"
             (extract-calendar-month iso-date)
             (extract-calendar-year iso-date)))
-       \"\"))
-")
-
-(defun mouse-scroll-calendar-left (event)
-  "Scroll the displayed calendar left by one month.
-Maintains the relative position of the cursor
-with respect to the calendar as well as possible."
-  (interactive "e")
-  (save-selected-window
-    (select-window (posn-window (event-start event)))
-    (scroll-calendar-left 1)))
-
-(defun mouse-scroll-calendar-right (event)
-  "Scroll the displayed calendar right by one month.
-Maintains the relative position of the cursor
-with respect to the calendar as well as possible."
-  (interactive "e")
-  (save-selected-window
-    (select-window (posn-window (event-start event)))
-    (scroll-calendar-right 1)))
+       \"\"))")
 
 (defun mouse-calendar-other-month (event)
   "Display a three-month calendar centered around a specified month and year."
@@ -2472,10 +2472,14 @@ For a complete description, type \
   (setq buffer-read-only t)
   (setq indent-tabs-mode nil)
   (update-calendar-mode-line)
-  (add-hook 'activate-menubar-hook 'cal-menu-update nil t)
   (make-local-variable 'calendar-mark-ring)
-  (make-local-variable 'displayed-month);;  Month in middle of window.
-  (make-local-variable 'displayed-year)        ;;  Year in middle of window.
+  (make-local-variable 'displayed-month) ;; Month in middle of window.
+  (make-local-variable 'displayed-year)  ;; Year in middle of window.
+  ;; Most functions only work if displayed-month and displayed-year are set,
+  ;; so let's make sure they're always set.  Most likely, this will be reset
+  ;; soon in generate-calendar, but better safe than sorry.
+  (unless (boundp 'displayed-month) (setq displayed-month 1))
+  (unless (boundp 'displayed-year)  (setq displayed-year  2001))
   (set (make-local-variable 'font-lock-defaults)
        '(calendar-font-lock-keywords t))
   (run-mode-hooks 'calendar-mode-hook))
@@ -2596,7 +2600,7 @@ ERROR is t, otherwise just returns nil."
              (< 2 (count-lines (point-min) (point))))
         (save-excursion
           (if (not (looking-at " "))
-                   (re-search-backward "[^0-9]"))
+              (re-search-backward "[^0-9]"))
           (list month
                 (string-to-number (buffer-substring (1+ (point)) (+ 4 (point))))
                 year))
index 88589c7e248e13001987275f935130ed4de278ca..df16595f3c57a238171fbd4c35cd9e36e3759fc7 100644 (file)
@@ -75,7 +75,7 @@ D-FILE specifies the file to use as the diary file."
   (let ((diary-file d-file))
     (diary-view-entries arg)))
 
-(autoload 'check-calendar-holidays "holidays"
+(autoload 'calendar-check-holidays "holidays"
   "Check the list of holidays for any that occur on DATE.
 The value returned is a list of strings of relevant holiday descriptions.
 The holidays are those in the list `calendar-holidays'.")
@@ -117,13 +117,13 @@ The holidays are those in the list `calendar-holidays'.")
 (autoload 'diary-bahai-date "cal-bahai"
   "Baha'i calendar equivalent of date diary entry.")
 
-(autoload 'list-bahai-diary-entries "cal-bahai"
+(autoload 'diary-bahai-list-entries "cal-bahai"
   "Add any Baha'i date entries from the diary file to `diary-entries-list'.")
 
-(autoload 'mark-bahai-diary-entries "cal-bahai"
+(autoload 'diary-bahai-mark-entries "cal-bahai"
   "Mark days in the calendar window that have Baha'i date diary entries.")
 
-(autoload 'mark-bahai-calendar-date-pattern "cal-bahai"
+(autoload 'calendar-bahai-mark-date-pattern "cal-bahai"
    "Mark dates in calendar window that conform to Baha'i date MONTH/DAY/YEAR.")
 
 (autoload 'diary-hebrew-date "cal-hebrew"
@@ -461,95 +461,94 @@ If LIST-ONLY is non-nil don't modify or display the buffer, only return a list."
                     (set (make-local-variable 'diary-selective-display) t)
                     (overlay-put ol 'invisible 'diary)
                     (overlay-put ol 'evaporate t)))
-                (calendar-for-loop
-                 i from 1 to number do
-                 (let ((month (extract-calendar-month date))
-                       (day (extract-calendar-day date))
-                       (year (extract-calendar-year date))
-                       (entry-found (list-sexp-diary-entries date)))
-                   (dolist (date-form diary-date-forms)
-                     (let*
-                         ((backup (when (eq (car date-form) 'backup)
-                                    (setq date-form (cdr date-form))
-                                    t))
-                          (dayname
-                           (format "%s\\|%s\\.?"
-                                   (calendar-day-name date)
-                                   (calendar-day-name date 'abbrev)))
-                          (monthname
-                           (format "\\*\\|%s\\|%s\\.?"
-                                   (calendar-month-name month)
-                                   (calendar-month-name month 'abbrev)))
-                          (month (concat "\\*\\|0*" (int-to-string month)))
-                          (day (concat "\\*\\|0*" (int-to-string day)))
-                          (year
-                           (concat
-                            "\\*\\|0*" (int-to-string year)
-                            (if abbreviated-calendar-year
-                                (concat "\\|" (format "%02d" (% year 100)))
-                              "")))
-                          (regexp
-                           (concat
-                            "\\(\\`\\|\^M\\|\n\\)" mark "?\\("
-                            (mapconcat 'eval date-form "\\)\\(?:")
-                            "\\)"))
-                          (case-fold-search t))
-                       (goto-char (point-min))
-                       (while (re-search-forward regexp nil t)
-                         (if backup (re-search-backward "\\<" nil t))
-                         (if (and (or (char-equal (preceding-char) ?\^M)
-                                      (char-equal (preceding-char) ?\n))
-                                  (not (looking-at " \\|\^I")))
-                             ;;  Diary entry that consists only of date.
-                             (backward-char 1)
-                           ;; Found a nonempty diary entry--make it
-                           ;; visible and add it to the list.
-                           (setq entry-found t)
-                           (let ((entry-start (point))
-                                 date-start temp)
-                             (re-search-backward "\^M\\|\n\\|\\`")
-                             (setq date-start (point))
-                             ;; When selective display (rather than
-                             ;; overlays) was used, diary file used to
-                             ;; start in a blank line and end in a
-                             ;; newline. Now that neither of these
-                             ;; need be true, 'move handles the latter
-                             ;; and 1/2 kludge the former.
-                             (re-search-forward
-                              "\^M\\|\n" nil 'move
-                              (if (and (bobp) (not (looking-at "\^M\\|\n")))
-                                  1
-                                2))
-                             (while (looking-at " \\|\^I")
-                               (re-search-forward "\^M\\|\n" nil 'move))
-                             (unless (and (eobp) (not (bolp)))
-                               (backward-char 1))
-                             (unless list-only
-                               (remove-overlays date-start (point)
-                                                'invisible 'diary))
-                             (setq entry (buffer-substring entry-start (point))
-                                   temp (diary-pull-attrs entry file-glob-attrs)
-                                   entry (nth 0 temp))
-                             (add-to-diary-list
-                              date
-                              entry
-                              (buffer-substring
-                               (1+ date-start) (1- entry-start))
-                              (copy-marker entry-start) (nth 1 temp)))))))
-                   (or entry-found
-                       (not diary-list-include-blanks)
-                       (add-to-diary-list date "" "" "" ""))
-                   (setq date
-                         (calendar-gregorian-from-absolute
-                          (1+ (calendar-absolute-from-gregorian date))))
-                   (setq entry-found nil)))))
+                (dotimes (idummy number)
+                  (let ((month (extract-calendar-month date))
+                        (day (extract-calendar-day date))
+                        (year (extract-calendar-year date))
+                        (entry-found (list-sexp-diary-entries date)))
+                    (dolist (date-form diary-date-forms)
+                      (let*
+                          ((backup (when (eq (car date-form) 'backup)
+                                     (setq date-form (cdr date-form))
+                                     t))
+                           (dayname
+                            (format "%s\\|%s\\.?"
+                                    (calendar-day-name date)
+                                    (calendar-day-name date 'abbrev)))
+                           (monthname
+                            (format "\\*\\|%s\\|%s\\.?"
+                                    (calendar-month-name month)
+                                    (calendar-month-name month 'abbrev)))
+                           (month (concat "\\*\\|0*" (int-to-string month)))
+                           (day (concat "\\*\\|0*" (int-to-string day)))
+                           (year
+                            (concat
+                             "\\*\\|0*" (int-to-string year)
+                             (if abbreviated-calendar-year
+                                 (concat "\\|" (format "%02d" (% year 100)))
+                               "")))
+                           (regexp
+                            (concat
+                             "\\(\\`\\|\^M\\|\n\\)" mark "?\\("
+                             (mapconcat 'eval date-form "\\)\\(?:")
+                             "\\)"))
+                           (case-fold-search t))
+                        (goto-char (point-min))
+                        (while (re-search-forward regexp nil t)
+                          (if backup (re-search-backward "\\<" nil t))
+                          (if (and (or (char-equal (preceding-char) ?\^M)
+                                       (char-equal (preceding-char) ?\n))
+                                   (not (looking-at " \\|\^I")))
+                              ;;  Diary entry that consists only of date.
+                              (backward-char 1)
+                            ;; Found a nonempty diary entry--make it
+                            ;; visible and add it to the list.
+                            (setq entry-found t)
+                            (let ((entry-start (point))
+                                  date-start temp)
+                              (re-search-backward "\^M\\|\n\\|\\`")
+                              (setq date-start (point))
+                              ;; When selective display (rather than
+                              ;; overlays) was used, diary file used to
+                              ;; start in a blank line and end in a
+                              ;; newline. Now that neither of these
+                              ;; need be true, 'move handles the latter
+                              ;; and 1/2 kludge the former.
+                              (re-search-forward
+                               "\^M\\|\n" nil 'move
+                               (if (and (bobp) (not (looking-at "\^M\\|\n")))
+                                   1
+                                 2))
+                              (while (looking-at " \\|\^I")
+                                (re-search-forward "\^M\\|\n" nil 'move))
+                              (unless (and (eobp) (not (bolp)))
+                                (backward-char 1))
+                              (unless list-only
+                                (remove-overlays date-start (point)
+                                                 'invisible 'diary))
+                              (setq entry (buffer-substring entry-start (point))
+                                    temp (diary-pull-attrs entry file-glob-attrs)
+                                    entry (nth 0 temp))
+                              (add-to-diary-list
+                               date
+                               entry
+                               (buffer-substring
+                                (1+ date-start) (1- entry-start))
+                               (copy-marker entry-start) (nth 1 temp)))))))
+                    (or entry-found
+                        (not diary-list-include-blanks)
+                        (add-to-diary-list date "" "" "" ""))
+                    (setq date
+                          (calendar-gregorian-from-absolute
+                           (1+ (calendar-absolute-from-gregorian date))))
+                    (setq entry-found nil)))))
             (goto-char (point-min))
             (run-hooks 'nongregorian-diary-listing-hook
                        'list-diary-entries-hook)
             (unless list-only
               (if diary-display-hook
-                  (run-hooks 'diary-display-hook)
-                (simple-diary-display)))
+              (run-hooks 'diary-display-hook)
+              (simple-diary-display)))
             (run-hooks 'diary-hook)
             diary-entries-list))))))
 
@@ -599,7 +598,7 @@ changing the variable `diary-include-string'."
 (defun simple-diary-display ()
   "Display the diary buffer if there are any relevant entries or holidays."
   (let* ((holiday-list (if holidays-in-diary-buffer
-                           (check-calendar-holidays original-date)))
+                           (calendar-check-holidays original-date)))
          (hol-string (format "%s%s%s"
                              date-string
                              (if holiday-list ": " "")
@@ -677,7 +676,7 @@ This function is provided for optional use as the `diary-display-hook'."
           (and (not (cdr diary-entries-list))
                (string-equal (car (cdr (car diary-entries-list))) "")))
       (let* ((holiday-list (if holidays-in-diary-buffer
-                               (check-calendar-holidays original-date)))
+                               (calendar-check-holidays original-date)))
              (msg (format "No diary entries for %s %s"
                           (concat date-string (if holiday-list ":" ""))
                           (mapconcat 'identity holiday-list "; "))))
@@ -1190,9 +1189,9 @@ A value of 0 in any position is a wildcard."
     (let ((m displayed-month)
           (y displayed-year))
       (increment-calendar-month m y -1)
-      (calendar-for-loop i from 0 to 2 do
-          (mark-calendar-month m y month day year color)
-          (increment-calendar-month m y 1)))))
+      (dotimes (idummy 3)
+        (mark-calendar-month m y month day year color)
+        (increment-calendar-month m y 1)))))
 
 (defun mark-calendar-month (month year p-month p-day p-year &optional color)
   "Mark dates in the MONTH/YEAR that conform to pattern P-MONTH/P_DAY/P-YEAR.
index a3a12aab2e38d199843e72d3ea4e25d107d16656..f61349401694c8f10588b35e36c3866fb7060ce4 100644 (file)
@@ -107,8 +107,10 @@ This function is suitable for execution in a .emacs file."
                    (calendar-current-date)))
            (displayed-month (extract-calendar-month date))
            (displayed-year (extract-calendar-year date)))
-      (list-calendar-holidays))))
+      (calendar-list-holidays))))
 
+;; rms: "Emacs commands to display a list of something generally start
+;; with `list-'.  Please make `list-holidays' the principal name."
 ;;;###autoload
 (defun list-holidays (y1 y2 &optional l label)
   "Display holidays for years Y1 to Y2 (inclusive).
@@ -206,19 +208,18 @@ The optional LABEL is used to label the buffer created."
       (display-buffer holiday-buffer)
       (message "Computing holidays...done"))))
 
+(defalias 'holiday-list 'list-holidays)
 
-(defun check-calendar-holidays (date)
+(defun calendar-check-holidays (date)
   "Check the list of holidays for any that occur on DATE.
 The value returned is a list of strings of relevant holiday descriptions.
-The holidays are those in the list calendar-holidays."
-  (let* ((displayed-month (extract-calendar-month date))
-         (displayed-year (extract-calendar-year date))
-         (h (calendar-holiday-list))
-         (holiday-list))
-    (while h
-      (if (calendar-date-equal date (car (car h)))
-          (setq holiday-list (append holiday-list (cdr (car h)))))
-      (setq h (cdr h)))
+The holidays are those in the list `calendar-holidays'."
+  (let ((displayed-month (extract-calendar-month date))
+        (displayed-year (extract-calendar-year date))
+        (holiday-list))
+    (dolist (h (calendar-holiday-list))
+      (if (calendar-date-equal date (car h))
+          (setq holiday-list (append holiday-list (cdr h)))))
     holiday-list))
 
 (defun calendar-cursor-holidays ()
@@ -227,7 +228,7 @@ The holidays are those in the list calendar-holidays."
   (message "Checking holidays...")
   (let* ((date (calendar-cursor-to-date t))
          (date-string (calendar-date-string date))
-         (holiday-list (check-calendar-holidays date))
+         (holiday-list (calendar-check-holidays date))
          (holiday-string (mapconcat 'identity holiday-list ";  "))
          (msg (format "%s:  %s" date-string holiday-string)))
     (if (not holiday-list)
@@ -245,21 +246,19 @@ The holidays are those in the list calendar-holidays."
         (display-buffer holiday-buffer)
         (message "Checking holidays...done")))))
 
-(defun mark-calendar-holidays ()
+(defun calendar-mark-holidays ()
   "Mark notable days in the calendar window."
   (interactive)
   (setq mark-holidays-in-calendar t)
   (message "Marking holidays...")
-  (let ((holiday-list (calendar-holiday-list)))
-    (while holiday-list
-      (mark-visible-calendar-date
-       (car (car holiday-list)) calendar-holiday-marker)
-      (setq holiday-list (cdr holiday-list))))
+  (dolist (holiday (calendar-holiday-list))
+    (mark-visible-calendar-date
+     (car holiday) calendar-holiday-marker))
   (message "Marking holidays...done"))
 
-(defun list-calendar-holidays ()
+(defun calendar-list-holidays ()
   "Create a buffer containing the holidays for the current calendar window.
-The holidays are those in the list calendar-notable-days.  Returns t if any
+The holidays are those in the list `calendar-notable-days'.  Returns t if any
 holidays are found, nil if not."
   (interactive)
   (message "Looking up holidays...")
@@ -297,22 +296,20 @@ holidays are found, nil if not."
 
 (defun calendar-holiday-list ()
   "Form the list of holidays that occur on dates in the calendar window.
-The holidays are those in the list calendar-holidays."
-  (let ((p calendar-holidays)
-        (holiday-list))
-    (while p
+The holidays are those in the list `calendar-holidays'."
+  (let ((holiday-list ()))
+    (dolist (p calendar-holidays)
       (let* ((holidays
               (if calendar-debug-sexp
                   (let ((stack-trace-on-error t))
-                    (eval (car p)))
+                    (eval p))
                 (condition-case nil
-                    (eval (car p))
+                    (eval p)
                   (error (beep)
-                         (message "Bad holiday list item: %s" (car p))
+                         (message "Bad holiday list item: %s" p)
                          (sleep-for 2))))))
         (if holidays
-            (setq holiday-list (append holidays holiday-list))))
-      (setq p (cdr p)))
+            (setq holiday-list (append holidays holiday-list)))))
     (setq holiday-list (sort holiday-list 'calendar-date-compare))))
 
 ;; Below are the functions that calculate the dates of holidays; these
@@ -396,16 +393,16 @@ date.  If date is nil, or if the date is not visible, there is no holiday."
   (let ((m displayed-month)
         (y displayed-year))
     (increment-calendar-month m y -1)
-    (filter-visible-calendar-holidays
-     (append
+    (holiday-filter-visible-calendar
+     (list
       (let* ((year y)
              (date (eval sexp))
              (string (if date (eval string))))
-        (list (list date string)))
+        (list date string))
       (let* ((year (1+ y))
              (date (eval sexp))
              (string (if date (eval string))))
-        (list (list date string)))))))
+        (list date string))))))
 
 (defun holiday-advent (&optional n string)
   "Date of Nth day after advent (named STRING), if visible in calendar window.
@@ -486,7 +483,7 @@ is non-nil)."
             (- (calendar-absolute-from-gregorian (list 4 19 displayed-year))
                adjusted-epact))
            (abs-easter (calendar-dayname-on-or-before 0 (+ paschal-moon 7))))
-      (filter-visible-calendar-holidays
+      (holiday-filter-visible-calendar
        (list (list (calendar-gregorian-from-absolute (+ abs-easter n))
                    string))))))
 
@@ -513,18 +510,26 @@ is non-nil)."
       (if (calendar-date-is-visible-p nicaean-easter)
           (list (list nicaean-easter "Pascha (Greek Orthodox Easter)"))))))
 
-(defun filter-visible-calendar-holidays (l)
+(defun holiday-filter-visible-calendar (l)
   "Return a list of all visible holidays of those on L."
-  (let ((visible)
-        (p l))
-    (while p
-      (and (car (car p))
-           (calendar-date-is-visible-p (car (car p)))
-           (setq visible (append (list (car p)) visible)))
-      (setq p (cdr p)))
+  (let ((visible ()))
+    (dolist (p l)
+      (and (car p)
+           (calendar-date-is-visible-p (car p))
+           (push p visible)))
     visible))
 
+;; Backward compatibility.
+(define-obsolete-function-alias
+  'filter-visible-calendar-holidays 'holiday-filter-visible-calendar "23.1")
+(define-obsolete-function-alias
+  'list-calendar-holidays 'calendar-list-holidays "23.1")
+(define-obsolete-function-alias
+  'mark-calendar-holidays 'calendar-mark-holidays "23.1")
+(define-obsolete-function-alias
+  'check-calendar-holidays 'calendar-check-holidays "23.1")
+
 (provide 'holidays)
 
-;;; arch-tag: 48eb3117-75a7-4dbe-8fd9-873c3cbb0d37
+;; arch-tag: 48eb3117-75a7-4dbe-8fd9-873c3cbb0d37
 ;;; holidays.el ends here
index 101aaf96e432bc333fa99bae7afb1d623ac2d300..881e7490665480f7a218e6579f2374f187bcd352 100644 (file)
@@ -1531,24 +1531,24 @@ buffer `*icalendar-errors*'."
            ("%t" STATUS      icalendar-import-format-status)
            ("%u" URL         icalendar-import-format-url))))
     ;; convert the specifiers in the format string
-    (mapcar (lambda (i)
-              (let* ((spec (car i))
-                     (prop (cadr i))
-                     (format (car (cddr i)))
-                     (contents (icalendar--get-event-property event prop))
-                     (formatted-contents ""))
-                (when (and contents (> (length contents) 0))
-                  (setq formatted-contents
-                        (icalendar--rris "%s"
-                                         (icalendar--convert-string-for-import
-                                          contents)
-                                         (symbol-value format)
-                                         t t)))
-                (setq string (icalendar--rris spec
-                                              formatted-contents
-                                              string
-                                              t t))))
-            conversion-list)
+    (mapc (lambda (i)
+           (let* ((spec (car i))
+                  (prop (cadr i))
+                  (format (car (cddr i)))
+                  (contents (icalendar--get-event-property event prop))
+                  (formatted-contents ""))
+             (when (and contents (> (length contents) 0))
+               (setq formatted-contents
+                     (icalendar--rris "%s"
+                                      (icalendar--convert-string-for-import
+                                       contents)
+                                      (symbol-value format)
+                                      t t)))
+             (setq string (icalendar--rris spec
+                                           formatted-contents
+                                           string
+                                           t t))))
+         conversion-list)
     string))
 
 (defun icalendar--convert-ical-to-diary (ical-list diary-file
@@ -1637,11 +1637,11 @@ written into the buffer `*icalendar-errors*'."
              (rdate
               (icalendar--dmsg "rdate event")
               (setq diary-string "")
-              (mapcar (lambda (datestring)
-                        (setq diary-string
-                              (concat diary-string
-                                      (format "......"))))
-                      (icalendar--split-value rdate)))
+              (mapc (lambda (datestring)
+                     (setq diary-string
+                           (concat diary-string
+                                   (format "......"))))
+                   (icalendar--split-value rdate)))
              ;; non-recurring event
              ;; all-day event
              ((not (string= start-d end-d))
index dc8e6e8e81b47084344d9b555c7f5a9613a7bcae..0f64e8514d45136462503a6675445cf40cd58b5c 100644 (file)
@@ -271,7 +271,7 @@ Search in the directories \"~\" and \"~/.emacs.d\", in this
 order.  Return nil if no start file found."
   (let* ((progname (file-name-nondirectory prog))
         (start-file (concat "~/.emacs_" progname))
-        (alt-start-file (concat "~/.emacs.d/init_" progname ".scm")))
+        (alt-start-file (concat user-emacs-directory "init_" progname ".scm")))
     (if (file-exists-p start-file)
         start-file
       (and (file-exists-p alt-start-file) alt-start-file))))
index 80a42dbdbfa5fd7332e9759f7f8980ff6c2f1218..623eef17327457fce652543e74663fa6afa4493f 100644 (file)
@@ -677,13 +677,13 @@ BUFFER can be either a buffer or the name of one."
   "Make a Comint process NAME in BUFFER, running PROGRAM.
 If BUFFER is nil, it defaults to NAME surrounded by `*'s.
 PROGRAM should be either a string denoting an executable program to create
-via `start-process', or a cons pair of the form (HOST . SERVICE) denoting a TCP
-connection to be opened via `open-network-stream'.  If there is already a
-running process in that buffer, it is not restarted.  Optional fourth arg
+via `start-file-process', or a cons pair of the form (HOST . SERVICE) denoting
+a TCP connection to be opened via `open-network-stream'.  If there is already
+running process in that buffer, it is not restarted.  Optional fourth arg
 STARTFILE is the name of a file to send the contents of to the process.
 
 If PROGRAM is a string, any more args are arguments to PROGRAM."
-  (or (fboundp 'start-process)
+  (or (fboundp 'start-file-process)
       (error "Multi-processing is not supported for this system"))
   (setq buffer (get-buffer-create (or buffer (concat "*" name "*"))))
   ;; If no process, or nuked process, crank up a new one and put buffer in
@@ -700,9 +700,9 @@ If PROGRAM is a string, any more args are arguments to PROGRAM."
   "Make a Comint process NAME in a buffer, running PROGRAM.
 The name of the buffer is made by surrounding NAME with `*'s.
 PROGRAM should be either a string denoting an executable program to create
-via `start-process', or a cons pair of the form (HOST . SERVICE) denoting a TCP
-connection to be opened via `open-network-stream'.  If there is already a
-running process in that buffer, it is not restarted.  Optional third arg
+via `start-file-process', or a cons pair of the form (HOST . SERVICE) denoting
+a TCP connection to be opened via `open-network-stream'.  If there is already
+running process in that buffer, it is not restarted.  Optional third arg
 STARTFILE is the name of a file to send the contents of the process to.
 
 If PROGRAM is a string, any more args are arguments to PROGRAM."
@@ -788,17 +788,19 @@ buffer.  The hook `comint-exec-hook' is run after each exec."
                         ;; If the command has slashes, make sure we
                         ;; first look relative to the current directory.
                         (cons default-directory exec-path) exec-path)))
-      (setq proc (apply 'start-process name buffer command switches)))
+      (setq proc (apply 'start-file-process name buffer command switches)))
+    ;; Some file name handler cannot start a process, fe ange-ftp.
+    (unless (processp proc) (error "No process started"))
     (let ((coding-systems (process-coding-system proc)))
       (setq decoding (car coding-systems)
            encoding (cdr coding-systems)))
-    ;; If start-process decided to use some coding system for decoding
+    ;; If start-file-process decided to use some coding system for decoding
     ;; data sent from the process and the coding system doesn't
     ;; specify EOL conversion, we had better convert CRLF to LF.
     (if (vectorp (coding-system-eol-type decoding))
        (setq decoding (coding-system-change-eol-conversion decoding 'dos)
              changed t))
-    ;; Even if start-process left the coding system for encoding data
+    ;; Even if start-file-process left the coding system for encoding data
     ;; sent from the process undecided, we had better use the same one
     ;; as what we use for decoding.  But, we should suppress EOL
     ;; conversion.
@@ -2817,7 +2819,7 @@ Returns t if successful."
 (defun comint-dynamic-complete-as-filename ()
   "Dynamically complete at point as a filename.
 See `comint-dynamic-complete-filename'.  Returns t if successful."
-  (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt cygwin)))
+  (let* ((completion-ignore-case read-file-name-completion-ignore-case)
         (completion-ignored-extensions comint-completion-fignore)
         ;; If we bind this, it breaks remote directory tracking in rlogin.el.
         ;; I think it was originally bound to solve file completion problems,
@@ -2946,7 +2948,7 @@ See also `comint-dynamic-complete-filename'."
 (defun comint-dynamic-list-filename-completions ()
   "List in help buffer possible completions of the filename at point."
   (interactive)
-  (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt cygwin)))
+  (let* ((completion-ignore-case read-file-name-completion-ignore-case)
         ;; If we bind this, it breaks remote directory tracking in rlogin.el.
         ;; I think it was originally bound to solve file completion problems,
         ;; but subsequent changes may have made this unnecessary.  sm.
index 4b4e4784b3f33bf7a8ae57ff1cde358ab5388905..bc581052508e196c0b9c1699f5412e5e5f2f7398 100644 (file)
@@ -153,11 +153,8 @@ If nil, means use the colon-separated path in the variable $INCPATH instead."
           (define-key completion-map " "       'minibuffer-complete-word)
           (define-key completion-map "?"       'minibuffer-completion-help)
 
-          (define-key must-match-map "\t"      'minibuffer-complete)
-          (define-key must-match-map " "       'minibuffer-complete-word)
           (define-key must-match-map "\r"      'minibuffer-complete-and-exit)
           (define-key must-match-map "\n"      'minibuffer-complete-and-exit)
-          (define-key must-match-map "?"       'minibuffer-completion-help)
 
           (define-key global-map [remap lisp-complete-symbol]  nil))
          (PC-default-bindings
@@ -173,17 +170,11 @@ If nil, means use the colon-separated path in the variable $INCPATH instead."
           (define-key completion-map "\e\n"    'PC-force-complete-and-exit)
           (define-key completion-map "\e?"     'PC-completion-help)
 
-          (define-key must-match-map "\t"      'PC-complete)
-          (define-key must-match-map " "       'PC-complete-word)
           (define-key must-match-map "\r"      'PC-complete-and-exit)
           (define-key must-match-map "\n"      'PC-complete-and-exit)
-          (define-key must-match-map "?"       'PC-completion-help)
 
-          (define-key must-match-map "\e\t"    'PC-complete)
-          (define-key must-match-map "\e "     'PC-complete-word)
           (define-key must-match-map "\e\r"    'PC-complete-and-exit)
           (define-key must-match-map "\e\n"    'PC-complete-and-exit)
-          (define-key must-match-map "\e?"     'PC-completion-help)
 
           (define-key global-map [remap lisp-complete-symbol]  'PC-lisp-complete-symbol)))))
 
@@ -231,13 +222,6 @@ second TAB brings up the `*Completions*' buffer."
         (remove-hook 'find-file-not-found-functions 'PC-look-for-include-file))
        ((not PC-disable-includes)
         (add-hook 'find-file-not-found-functions 'PC-look-for-include-file)))
-  ;; ... with some underhand redefining.
-  (cond ((not partial-completion-mode)
-         (ad-disable-advice 'read-file-name-internal 'around 'PC-include-file)
-         (ad-activate 'read-file-name-internal))
-       ((not PC-disable-includes)
-         (ad-enable-advice 'read-file-name-internal 'around 'PC-include-file)
-         (ad-activate 'read-file-name-internal)))
   ;; Adjust the completion selection in *Completion* buffers to the way
   ;; we work.  The default minibuffer completion code only completes the
   ;; text before point and leaves the text after point alone (new in
@@ -344,14 +328,24 @@ See `PC-complete' for details."
     (PC-do-complete-and-exit)))
 
 (defun PC-do-complete-and-exit ()
-  (if (= (point-max) (minibuffer-prompt-end))  ; Duplicate the "bug" that Info-menu relies on...
-      (exit-minibuffer)
+  (cond
+   ((= (point-max) (minibuffer-prompt-end))
+    ;; Duplicate the "bug" that Info-menu relies on...
+    (exit-minibuffer))
+   ((eq minibuffer-completion-confirm 'confirm-only)
+    (if (or (eq last-command this-command)
+            (test-completion (field-string)
+                             minibuffer-completion-table
+                             minibuffer-completion-predicate))
+        (exit-minibuffer)
+      (PC-temp-minibuffer-message " [Confirm]")))
+   (t
     (let ((flag (PC-do-completion 'exit)))
       (and flag
           (if (or (eq flag 'complete)
                   (not minibuffer-completion-confirm))
               (exit-minibuffer)
-            (PC-temp-minibuffer-message " [Confirm]"))))))
+            (PC-temp-minibuffer-message " [Confirm]")))))))
 
 
 (defun PC-completion-help ()
@@ -439,7 +433,9 @@ point-max (as is appropriate for completing a file name).  If
 GOTO-END is non-nil, however, it instead replaces up to END."
   (or beg (setq beg (minibuffer-prompt-end)))
   (or end (setq end (point-max)))
-  (let* ((table minibuffer-completion-table)
+  (let* ((table (if (eq minibuffer-completion-table 'read-file-name-internal)
+                    'PC-read-file-name-internal
+                    minibuffer-completion-table))
         (pred minibuffer-completion-predicate)
         (filename (funcall PC-completion-as-file-name-predicate))
         (dirname nil) ; non-nil only if a filename is being completed
@@ -454,6 +450,7 @@ GOTO-END is non-nil, however, it instead replaces up to END."
         env-on
         regex
         p offset
+         abbreviated
         (poss nil)
         helpposs
         (case-fold-search completion-ignore-case))
@@ -532,11 +529,11 @@ GOTO-END is non-nil, however, it instead replaces up to END."
                     (insert str)
                     (setq end (+ beg (length str)))))
               (if origstr
-                   ;; If the wildcards were introduced by us, it's possible
-                   ;; that read-file-name-internal (especially our
-                   ;; PC-include-file advice) can still find matches for the
-                   ;; original string even if we couldn't, so remove the
-                   ;; added wildcards.
+                       ;; If the wildcards were introduced by us, it's
+                       ;; possible that PC-read-file-name-internal can
+                       ;; still find matches for the original string
+                       ;; even if we couldn't, so remove the added
+                       ;; wildcards.
                    (setq str origstr)
                 (setq filename nil table nil pred nil)))))
 
@@ -590,17 +587,43 @@ GOTO-END is non-nil, however, it instead replaces up to END."
                  pred nil))
 
       ;; Find an initial list of possible completions
-      (if (not (setq p (string-match (concat PC-delim-regex
+        (unless (setq p (string-match (concat PC-delim-regex
                                             (if filename "\\|\\*" ""))
                                     str
-                                    (+ (length dirname) offset))))
+                                      (+ (length dirname) offset)))
 
          ;; Minibuffer contains no hyphens -- simple case!
-         (setq poss (all-completions (if env-on
-                                         basestr str)
+          (setq poss (all-completions (if env-on basestr str)
                                      table
                                      pred))
-
+          (unless (or poss (string-equal str ""))
+            ;; Try completion as an abbreviation, e.g. "mvb" ->
+            ;; "m-v-b" -> "multiple-value-bind", but only for
+            ;; non-empty strings.
+            (setq origstr str
+                  abbreviated t)
+            (if filename
+                (cond
+                  ;; "alpha" or "/alpha" -> expand whole path.
+                  ((string-match "^/?\\([A-Za-z0-9]+\\)$" str)
+                   (setq
+                    basestr ""
+                    p nil
+                    poss (PC-expand-many-files
+                          (concat "/"
+                                  (mapconcat #'list (match-string 1 str) "*/")
+                                  "*"))
+                    beg (1- beg)))
+                  ;; Alphanumeric trailer -> expand trailing file
+                  ((string-match "^\\(.+/\\)\\([A-Za-z0-9]+\\)$" str)
+                   (setq regex (concat "\\`"
+                                        (mapconcat #'list
+                                                   (match-string 2 str)
+                                                   "[A-Za-z0-9]*[^A-Za-z0-9]"))
+                          p (1+ (length (match-string 1 str))))))
+                (setq regex (concat "\\`" (mapconcat #'list str "[^-]*-"))
+                      p 1))))
+        (when p
        ;; Use all-completions to do an initial cull.  This is a big win,
        ;; since all-completions is written in C!
        (let ((compl (all-completions (if env-on
@@ -609,12 +632,24 @@ GOTO-END is non-nil, however, it instead replaces up to END."
                                       table
                                       pred)))
          (setq p compl)
+            (when (and compl abbreviated)
+              (if filename
+                  (progn
+                    (setq p nil)
+                    (dolist (x compl)
+                      (when (string-match regex x)
+                        (push x p)))
+                    (setq basestr (try-completion "" p)))
+                  (setq basestr (mapconcat 'list str "-"))
+                  (delete-region beg end)
+                  (setq end (+ beg (length basestr)))
+                  (insert basestr))))
          (while p
            (and (string-match regex (car p))
                 (progn
                   (set-text-properties 0 (length (car p)) '() (car p))
                   (setq poss (cons (car p) poss))))
-           (setq p (cdr p)))))
+            (setq p (cdr p))))
 
       ;; If table had duplicates, they can be here.
       (delete-dups poss)
@@ -648,6 +683,7 @@ GOTO-END is non-nil, however, it instead replaces up to END."
              (and p (setq poss p))))
 
       ;; Now we have a list of possible completions
+
       (cond
 
        ;; No valid completions found
@@ -657,6 +693,9 @@ GOTO-END is non-nil, however, it instead replaces up to END."
            (let ((PC-word-failed-flag t))
              (delete-backward-char 1)
              (PC-do-completion 'word))
+               (when abbreviated
+                 (delete-region beg end)
+                 (insert origstr))
          (beep)
          (PC-temp-minibuffer-message (if ambig
                                          " [Ambiguous dir name]"
@@ -793,13 +832,18 @@ GOTO-END is non-nil, however, it instead replaces up to END."
                           (setq completion-base-size (if dirname
                                                          dirlength
                                                        (- beg prompt-end))))))
-                 (PC-temp-minibuffer-message " [Next char not unique]"))
-               nil)))))
+                             (PC-temp-minibuffer-message " [Next char not unique]"))
+                         ;; Expansion of filenames is not reversible,
+                         ;; so just keep the prefix.
+           (when (and abbreviated filename)
+             (delete-region (point) end))
+                         nil)))))
 
        ;; Only one possible completion
        (t
        (if (and (equal basestr (car poss))
-                (not (and env-on filename)))
+                 (not (and env-on filename))
+                 (not abbreviated))
            (if (null mode)
                (PC-temp-minibuffer-message " [Sole completion]"))
          (delete-region beg end)
@@ -857,13 +901,11 @@ only symbols with function definitions are considered.
 Otherwise, all symbols with function definitions, values
 or properties are considered."
   (interactive)
-  (let* ((end (point))
-         ;; To complete the word under point, rather than just the portion
-         ;; before point, use this:
-;;;           (save-excursion
-;;;             (with-syntax-table lisp-mode-syntax-table
-;;;               (forward-sexp 1)
-;;;               (point))))
+  (let* ((end
+          (save-excursion
+            (with-syntax-table lisp-mode-syntax-table
+              (skip-syntax-forward "_w")
+              (point))))
         (beg (save-excursion
                 (with-syntax-table lisp-mode-syntax-table
                   (backward-sexp 1)
@@ -921,7 +963,7 @@ or properties are considered."
                                       (point-min) t)
                    (+ (point) 2)
                    (point-min)))
-          (minibuffer-completion-table 'read-file-name-internal)
+          (minibuffer-completion-table 'PC-read-file-name-internal)
           (minibuffer-completion-predicate "")
           (PC-not-minibuffer t))
      (goto-char end)
@@ -1107,24 +1149,23 @@ absolute rather than relative to some directory on the SEARCH-PATH."
          (setq sorted (cdr sorted)))
        compressed))))
 
-(defadvice read-file-name-internal (around PC-include-file disable)
-  (if (string-match "<\\([^\"<>]*\\)>?\\'" (ad-get-arg 0))
-      (let* ((string (ad-get-arg 0))
-             (action (ad-get-arg 2))
-             (name (match-string 1 string))
+(defun PC-read-file-name-internal (string dir action)
+  "Extend `read-file-name-internal' to handle include files.
+This is only used by "
+  (if (string-match "<\\([^\"<>]*\\)>?\\'" string)
+      (let* ((name (match-string 1 string))
             (str2 (substring string (match-beginning 0)))
             (completion-table
              (mapcar (lambda (x)
                         (format (if (string-match "/\\'" x) "<%s" "<%s>") x))
                      (PC-include-file-all-completions
                       name (PC-include-file-path)))))
-        (setq ad-return-value
               (cond
                ((not completion-table) nil)
                ((eq action 'lambda) (test-completion str2 completion-table nil))
                ((eq action nil) (PC-try-completion str2 completion-table nil))
-               ((eq action t) (all-completions str2 completion-table nil)))))
-    ad-do-it))
+          ((eq action t) (all-completions str2 completion-table nil))))
+    (read-file-name-internal string dir action)))
 \f
 
 (provide 'complete)
index 2180e2dace8ae897dddfce681d692d25008c2817..c2e9ac9493f74bde012d483949d4e700ca0e9700 100644 (file)
@@ -301,9 +301,9 @@ See also `save-completions-retention-time'."
   (let ((olddef (convert-standard-filename "~/.completions")))
     (cond
      ((file-readable-p olddef) olddef)
-     ((file-directory-p (convert-standard-filename "~/.emacs.d/"))
+     ((file-directory-p user-emacs-directory)
       (convert-standard-filename
-       (expand-file-name "completions" "~/.emacs.d/")))
+       (expand-file-name "completions" user-emacs-directory)))
      (t olddef)))
   "The filename to save completions to."
   :type 'file
@@ -568,7 +568,8 @@ But only if it is longer than `completion-min-length'."
                      (- cmpl-symbol-end cmpl-symbol-start))
                  (<= (- cmpl-symbol-end cmpl-symbol-start)
                      completion-max-length))
-            (buffer-substring cmpl-symbol-start cmpl-symbol-end))))))
+            (buffer-substring-no-properties
+             cmpl-symbol-start cmpl-symbol-end))))))
 
 ;; tests for symbol-under-point
 ;;  `^' indicates cursor pos. where value is returned
@@ -601,7 +602,8 @@ Returns nil if there isn't one longer than `completion-min-length'."
            ;; Return value if long enough.
            (if (>= cmpl-symbol-end
                    (+ cmpl-symbol-start completion-min-length))
-               (buffer-substring cmpl-symbol-start cmpl-symbol-end)))
+               (buffer-substring-no-properties
+                cmpl-symbol-start cmpl-symbol-end)))
           ((= cmpl-preceding-syntax ?w)
            ;; chars to ignore at end
            (let ((saved-point (point)))
@@ -621,7 +623,8 @@ Returns nil if there isn't one longer than `completion-min-length'."
                           (- cmpl-symbol-end cmpl-symbol-start))
                       (<= (- cmpl-symbol-end cmpl-symbol-start)
                           completion-max-length))
-                 (buffer-substring cmpl-symbol-start cmpl-symbol-end)))))))
+                 (buffer-substring-no-properties
+                  cmpl-symbol-start cmpl-symbol-end)))))))
 
 ;; tests for symbol-before-point
 ;;  `^' indicates cursor pos. where value is returned
@@ -670,7 +673,8 @@ Returns nil if there isn't one longer than `completion-min-length'."
                         (- cmpl-symbol-end cmpl-symbol-start))
                     (<= (- cmpl-symbol-end cmpl-symbol-start)
                         completion-max-length))
-               (buffer-substring cmpl-symbol-start cmpl-symbol-end))))))
+               (buffer-substring-no-properties
+                cmpl-symbol-start cmpl-symbol-end))))))
 
 ;; tests for symbol-before-point-for-complete
 ;;  `^' indicates cursor pos. where value is returned
@@ -2227,15 +2231,19 @@ Patched to remove the most recent completion."
 
 (defun completion-separator-self-insert-command (arg)
   (interactive "p")
-  (use-completion-before-separator)
-  (self-insert-command arg))
+  (if (command-remapping 'self-insert-command)
+      (funcall (command-remapping 'self-insert-command) arg)
+    (use-completion-before-separator)
+    (self-insert-command arg)))
 
 (defun completion-separator-self-insert-autofilling (arg)
   (interactive "p")
-  (use-completion-before-separator)
-  (self-insert-command arg)
-  (and auto-fill-function
-       (funcall auto-fill-function)))
+  (if (command-remapping 'self-insert-command)
+      (funcall (command-remapping 'self-insert-command) arg)
+    (use-completion-before-separator)
+    (self-insert-command arg)
+    (and auto-fill-function
+        (funcall auto-fill-function))))
 
 ;;-----------------------------------------------
 ;; Wrapping Macro
index e2fc4ec8a653197c0da00db3713f60a2626e6b03..a2457ab75143936e39456c0f093ecc5ce9ac0bbd 100644 (file)
@@ -194,7 +194,7 @@ adjust the composition when it gets invalid because of a change of
 text in the composition."
   (interactive "r")
   (let ((modified-p (buffer-modified-p))
-       (buffer-read-only nil))
+       (inhibit-read-only t))
     (if (or (vectorp components) (listp components))
        (setq components (encode-composition-components components)))
     (compose-region-internal start end components modification-func)
@@ -208,9 +208,9 @@ When called from a program, expects two arguments,
 positions (integers or markers) specifying the region."
   (interactive "r")
   (let ((modified-p (buffer-modified-p))
-       (buffer-read-only nil))
+       (inhibit-read-only t))
     (remove-text-properties start end '(composition nil))
-    (set-buffer-modified-p modified-p)))
+    (restore-buffer-modified-p modified-p)))
 
 ;;;###autoload
 (defun compose-string (string &optional start end components modification-func)
@@ -372,8 +372,8 @@ after a sequence of character events."
 ;;;###autoload(global-set-key [compose-last-chars] 'compose-last-chars)
 
 \f
-;;; The following codes are only for backward compatibility with Emacs
-;;; 20.4 and earlier.
+;; The following codes are only for backward compatibility with Emacs
+;; 20.4 and earlier.
 
 ;;;###autoload
 (defun decompose-composite-char (char &optional type with-composition-rule)
@@ -392,5 +392,5 @@ Optional 3rd arg WITH-COMPOSITION-RULE is ignored."
 
 \f
 
-;;; arch-tag: ee703d77-1723-45d4-a31f-e9f0f867aa33
+;; arch-tag: ee703d77-1723-45d4-a31f-e9f0f867aa33
 ;;; composite.el ends here
index ed248ac8bdacf79c31131d6b5c98c41d8cab5986..815e2d454ba7856b15e42db2a7e3bf6f4f79ab7d 100644 (file)
@@ -141,7 +141,7 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
                                    (member where
                                            (cdr (assoc version version-alist)))
                                  (push where (cdr (assoc version version-alist))))
-                             (push (cons version (list where)) version-alist)))
+                             (push (list version where) version-alist)))
                        ;; This is a group
                        (insert "(custom-put-if-not '" (symbol-name symbol)
                                " 'custom-version ")
index 5b5a269a0c6b471525adadbe0e8208dc93de8a75..3bc83604227b3338881ca04e0abf1b81c585cfbc 100644 (file)
 
 (require 'cus-face)
 (require 'wid-edit)
-(eval-when-compile
-  (defvar custom-versions-load-alist)  ; from cus-load
-  (defvar recentf-exclude))            ; from recentf.el
+
+(defvar custom-versions-load-alist)    ; from cus-load
+(defvar recentf-exclude)               ; from recentf.el
 
 (condition-case nil
     (require 'cus-load)
 
 (defun custom-split-regexp-maybe (regexp)
   "If REGEXP is a string, split it to a list at `\\|'.
-You can get the original back with from the result with:
+You can get the original back from the result with:
   (mapconcat 'identity result \"\\|\")
 
 IF REGEXP is not a string, return it unchanged."
   (if (stringp regexp)
-      (let ((start 0)
-           all)
-       (while (string-match "\\\\|" regexp start)
-         (setq all (cons (substring regexp start (match-beginning 0)) all)
-               start (match-end 0)))
-       (nreverse (cons (substring regexp start) all)))
+      (split-string regexp "\\\\|")
     regexp))
 
 (defun custom-variable-prompt ()
@@ -760,52 +755,86 @@ groups after non-groups, if nil do not order groups at all."
 
 ;;; Custom Mode Commands.
 
-(defvar custom-options nil
-  "Customization widgets in the current buffer.")
-
-(defun Custom-set ()
-  "Set the current value of all edited settings in the buffer."
+;; This variable is used by `custom-tool-bar-map', or directly by
+;; `custom-buffer-create-internal' if the toolbar is not present and
+;; `custom-buffer-verbose-help' is non-nil.
+
+(defvar custom-commands
+  '(("Set for current session" Custom-set t
+     "Apply all settings in this buffer to the current session"
+     "index")
+    ("Save for future sessions" Custom-save
+     (or custom-file user-init-file)
+     "Apply all settings in this buffer and save them for future Emacs sessions."
+     "save")
+    ("Undo edits" Custom-reset-current t
+     "Restore all settings in this buffer to reflect their current values."
+     "refresh")
+    ("Reset to saved" Custom-reset-saved t
+     "Restore all settings in this buffer to their saved values (if any)."
+     "undo")
+    ("Erase customizations" Custom-reset-standard
+     (or custom-file user-init-file)
+     "Un-customize all settings in this buffer and save them with standard values."
+     "delete")
+    ("Help for Customize" Custom-help t
+     "Get help for using Customize."
+     "help")
+    ("Exit" Custom-buffer-done t "Exit Customize." "exit")))
+
+(defun Custom-help ()
+  "Read the node on Easy Customization in the Emacs manual."
   (interactive)
-  (let ((children custom-options))
-    (if (or (and (= 1 (length children))
-                (memq (widget-type (car children))
-                      '(custom-variable custom-face)))
-           (y-or-n-p "Set all values according to this buffer? "))
-       (mapc (lambda (child)
-               (when (eq (widget-get child :custom-state) 'modified)
-                 (widget-apply child :custom-set)))
-             children)
-      (message "Aborted"))))
-
-(defun Custom-save ()
-  "Set all edited settings, then save all settings that have been set.
-If a setting was edited and set before, this saves it.
-If a setting was merely edited before, this sets it then saves it."
-  (interactive)
-  (let ((children custom-options))
-    (if (or (and (= 1 (length children))
-                (memq (widget-type (car children))
-                      '(custom-variable custom-face)))
-           (yes-or-no-p "Save all settings in this buffer? "))
-       (progn
-         (mapc (lambda (child)
-                 (when (memq (widget-get child :custom-state)
-                             '(modified set changed rogue))
-                   (widget-apply child :custom-save)))
-               children)
-         (custom-save-all))
-      (message "Aborted"))))
+  (info "(emacs)Easy Customization"))
 
 (defvar custom-reset-menu
   '(("Undo Edits" . Custom-reset-current)
     ("Reset to Saved" . Custom-reset-saved)
-    ("Erase Customization (use standard values)" . Custom-reset-standard))
+    ("Erase Customizations (use standard values)" . Custom-reset-standard))
   "Alist of actions for the `Reset' button.
 The key is a string containing the name of the action, the value is a
 Lisp function taking the widget as an element which will be called
 when the action is chosen.")
 
-(defun custom-reset (event)
+(defvar custom-options nil
+  "Customization widgets in the current buffer.")
+
+(defun custom-command-apply (fun query &optional strong-query)
+  "Call function FUN on all widgets in `custom-options'.
+If there is more than one widget, ask user for confirmation using
+the query string QUERY, using `y-or-n-p' if STRONG-QUERY is nil,
+and `yes-or-no-p' otherwise."
+  (if (or (and (= 1 (length custom-options))
+              (memq (widget-type (car custom-options))
+                    '(custom-variable custom-face)))
+         (funcall (if strong-query 'yes-or-no-p 'y-or-n-p) query))
+      (progn (mapc fun custom-options) t)
+    (message "Aborted")
+    nil))
+
+(defun Custom-set (&rest ignore)
+  "Set the current value of all edited settings in the buffer."
+  (interactive)
+  (custom-command-apply
+   (lambda (child)
+     (when (eq (widget-get child :custom-state) 'modified)
+       (widget-apply child :custom-set)))
+   "Set all values according to this buffer? "))
+
+(defun Custom-save (&rest ignore)
+  "Set all edited settings, then save all settings that have been set.
+If a setting was edited and set before, this saves it.
+If a setting was merely edited before, this sets it then saves it."
+  (interactive)
+  (if (custom-command-apply
+       (lambda (child)
+        (when (memq (widget-get child :custom-state)
+                    '(modified set changed rogue))
+          (widget-apply child :custom-save)))
+       "Save all settings in this buffer? " t)
+      (custom-save-all)))
+
+(defun custom-reset (widget &optional event)
   "Select item from reset menu."
   (let* ((completion-ignore-case t)
         (answer (widget-choose "Reset settings"
@@ -817,33 +846,21 @@ when the action is chosen.")
 (defun Custom-reset-current (&rest ignore)
   "Reset all edited settings in the buffer to show their current values."
   (interactive)
-  (let ((children custom-options))
-    (if (or (and (= 1 (length children))
-                (memq (widget-type (car children))
-                      '(custom-variable custom-face)))
-           (y-or-n-p "Reset all settings' buffer text to show current values? "))
-       (mapc (lambda (widget)
-               (if (memq (widget-get widget :custom-state)
-                         '(modified changed))
-                   (widget-apply widget :custom-reset-current)))
-             children)
-      (message "Aborted"))))
+  (custom-command-apply
+   (lambda (widget)
+     (if (memq (widget-get widget :custom-state) '(modified changed))
+        (widget-apply widget :custom-reset-current)))
+   "Reset all settings' buffer text to show current values? "))
 
 (defun Custom-reset-saved (&rest ignore)
   "Reset all edited or set settings in the buffer to their saved value.
 This also shows the saved values in the buffer."
   (interactive)
-  (let ((children custom-options))
-    (if (or (and (= 1 (length children))
-                (memq (widget-type (car children))
-                      '(custom-variable custom-face)))
-           (y-or-n-p "Reset all settings (current values and buffer text) to saved values? "))
-       (mapc (lambda (widget)
-               (if (memq (widget-get widget :custom-state)
-                         '(modified set changed rogue))
-                   (widget-apply widget :custom-reset-saved)))
-             children)
-      (message "Aborted"))))
+  (custom-command-apply
+   (lambda (widget)
+     (if (memq (widget-get widget :custom-state) '(modified set changed rogue))
+        (widget-apply widget :custom-reset-saved)))
+   "Reset all settings (current values and buffer text) to saved values? "))
 
 (defun Custom-reset-standard (&rest ignore)
   "Erase all customization (either current or saved) for the group members.
@@ -851,20 +868,14 @@ The immediate result is to restore them to their standard values.
 This operation eliminates any saved values for the group members,
 making them as if they had never been customized at all."
   (interactive)
-  (let ((children custom-options))
-    (if (or (and (= 1 (length children))
-                (memq (widget-type (car children))
-                      '(custom-variable custom-face)))
-           (yes-or-no-p "Erase all customizations for settings in this buffer? "))
-       (mapc (lambda (widget)
-               (and (if (widget-get widget :custom-standard-value)
-                        (widget-apply widget :custom-standard-value)
-                      t)
-                    (memq (widget-get widget :custom-state)
-                          '(modified set changed saved rogue))
-                    (widget-apply widget :custom-reset-standard)))
-             children)
-      (message "Aborted"))))
+  (custom-command-apply
+   (lambda (widget)
+     (and (or (null (widget-get widget :custom-standard-value))
+             (widget-apply widget :custom-standard-value))
+         (memq (widget-get widget :custom-state)
+               '(modified set changed saved rogue))
+         (widget-apply widget :custom-reset-standard)))
+   "Erase all customizations for settings in this buffer? " t))
 
 ;;; The Customize Commands
 
@@ -893,9 +904,9 @@ it as the third element in the list."
            (cond (prop
                   ;; Use VAR's `variable-interactive' property
                   ;; as an interactive spec for prompting.
-                  (call-interactively (list 'lambda '(arg)
-                                            (list 'interactive prop)
-                                            'arg)))
+                  (call-interactively `(lambda (arg)
+                                         (interactive ,prop)
+                                         arg)))
                  (type
                   (widget-prompt-value type
                                        prompt
@@ -1021,44 +1032,20 @@ then prompt for the MODE to customize."
                          t nil nil (if group (symbol-name major-mode))))))))
   (customize-group (custom-group-of-mode mode)))
 
+(defun customize-read-group ()
+  (let ((completion-ignore-case t))
+    (completing-read "Customize group (default emacs): "
+                     obarray
+                     (lambda (symbol)
+                       (or (and (get symbol 'custom-loads)
+                                (not (get symbol 'custom-autoload)))
+                           (get symbol 'custom-group)))
+                     t)))
 
 ;;;###autoload
-(defun customize-group (group)
-  "Customize GROUP, which must be a customization group."
-  (interactive
-   (list (let ((completion-ignore-case t))
-          (completing-read "Customize group (default emacs): "
-                           obarray
-                           (lambda (symbol)
-                             (or (and (get symbol 'custom-loads)
-                                      (not (get symbol 'custom-autoload)))
-                                 (get symbol 'custom-group)))
-                           t))))
-  (when (stringp group)
-    (if (string-equal "" group)
-       (setq group 'emacs)
-      (setq group (intern group))))
-  (let ((name (format "*Customize Group: %s*"
-                     (custom-unlispify-tag-name group))))
-    (if (get-buffer name)
-       (pop-to-buffer name)
-      (custom-buffer-create (list (list group 'custom-group))
-                           name
-                           (concat " for group "
-                                   (custom-unlispify-tag-name group))))))
-
-;;;###autoload
-(defun customize-group-other-window (group)
+(defun customize-group (&optional group)
   "Customize GROUP, which must be a customization group."
-  (interactive
-   (list (let ((completion-ignore-case t))
-          (completing-read "Customize group (default emacs): "
-                           obarray
-                           (lambda (symbol)
-                             (or (and (get symbol 'custom-loads)
-                                      (not (get symbol 'custom-autoload)))
-                                 (get symbol 'custom-group)))
-                           t))))
+  (interactive (list (customize-read-group)))
   (when (stringp group)
     (if (string-equal "" group)
        (setq group 'emacs)
@@ -1066,17 +1053,21 @@ then prompt for the MODE to customize."
   (let ((name (format "*Customize Group: %s*"
                      (custom-unlispify-tag-name group))))
     (if (get-buffer name)
-       (let (
-             ;; Copied from `custom-buffer-create-other-window'.
-             (pop-up-windows t)
-             (same-window-buffer-names nil)
-             (same-window-regexps nil))
-         (pop-to-buffer name))
-      (custom-buffer-create-other-window
+        (pop-to-buffer name)
+      (custom-buffer-create
        (list (list group 'custom-group))
        name
        (concat " for group "
-              (custom-unlispify-tag-name group))))))
+               (custom-unlispify-tag-name group))))))
+
+;;;###autoload
+(defun customize-group-other-window (&optional group)
+  "Customize GROUP, which must be a customization group, in another window."
+  (interactive (list (customize-read-group)))
+  (let ((pop-up-windows t)
+        (same-window-buffer-names nil)
+        (same-window-regexps nil))
+    (customize-group group)))
 
 ;;;###autoload
 (defalias 'customize-variable 'customize-option)
@@ -1264,27 +1255,26 @@ face-alias, customize the face it is aliased to.
 
 Interactively, when point is on text which has a face specified,
 suggest to customize that face, if it's customizable."
-  (interactive
-   (list (read-face-name "Customize face" "all faces" t)))
+  (interactive (list (read-face-name "Customize face" "all faces" t)))
   (if (member face '(nil ""))
       (setq face (face-list)))
   (if (and (listp face) (null (cdr face)))
       (setq face (car face)))
   (if (listp face)
-      (custom-buffer-create (custom-sort-items
-                            (mapcar (lambda (s)
-                                      (list s 'custom-face))
-                                    face)
-                            t nil)
-                           "*Customize Faces*")
+      (custom-buffer-create
+       (custom-sort-items
+        (mapcar (lambda (s) (list s 'custom-face)) face)
+        t nil)
+       "*Customize Faces*")
     ;; If FACE is actually an alias, customize the face it is aliased to.
     (if (get face 'face-alias)
         (setq face (get face 'face-alias)))
     (unless (facep face)
       (error "Invalid face %S" face))
-    (custom-buffer-create (list (list face 'custom-face))
-                         (format "*Customize Face: %s*"
-                                 (custom-unlispify-tag-name face)))))
+    (custom-buffer-create
+     (list (list face 'custom-face))
+     (format "*Customize Face: %s*"
+             (custom-unlispify-tag-name face)))))
 
 ;;;###autoload
 (defun customize-face-other-window (&optional face)
@@ -1293,28 +1283,11 @@ If FACE is actually a face-alias, customize the face it is aliased to.
 
 Interactively, when point is on text which has a face specified,
 suggest to customize that face, if it's customizable."
-  (interactive
-   (list (read-face-name "Customize face" "all faces" t)))
-  (if (member face '(nil ""))
-      (setq face (face-list)))
-  (if (and (listp face) (null (cdr face)))
-      (setq face (car face)))
-  (if (listp face)
-      (custom-buffer-create-other-window
-       (custom-sort-items
-       (mapcar (lambda (s)
-                 (list s 'custom-face))
-               face)
-       t nil)
-       "*Customize Faces*")
-    (if (get face 'face-alias)
-        (setq face (get face 'face-alias)))
-    (unless (facep face)
-      (error "Invalid face %S" face))
-    (custom-buffer-create-other-window
-     (list (list face 'custom-face))
-     (format "*Customize Face: %s*"
-            (custom-unlispify-tag-name face)))))
+  (interactive (list (read-face-name "Customize face" "all faces" t)))
+  (let ((pop-up-windows t)
+        (same-window-buffer-names nil)
+        (same-window-regexps nil))
+    (customize-face face)))
 
 (defalias 'customize-customized 'customize-unsaved)
 
@@ -1403,7 +1376,14 @@ that are not customizable options, as well as faces and groups
                                      (get symbol 'variable-documentation))))
                    (push (list symbol 'custom-variable) found)))))
     (if (not found)
-       (error "No customizable items matching %s" regexp)
+       (error "No %s matching %s"
+               (if (eq all t)
+                   "items"
+                 (format "customizable %s"
+                         (if (memq all '(options faces groups))
+                             (symbol-name all)
+                           "items")))
+               regexp)
       (custom-buffer-create
        (custom-sort-items found t custom-buffer-order-groups)
        "*Customize Apropos*"))))
@@ -1546,99 +1526,61 @@ Otherwise use brackets."
 
 (defun custom-buffer-create-internal (options &optional description)
   (custom-mode)
-  (if custom-buffer-verbose-help
-      (progn
-       (widget-insert "This is a customization buffer")
-       (if description
-           (widget-insert description))
-       (widget-insert (format ".
-%s buttons; type RET or click mouse-1 to actuate one.
-Editing a setting changes only the text in the buffer."
-                              (if custom-raised-buttons
-                                  "`Raised' text indicates"
-                                "Square brackets indicate")))
-       (if init-file-user
-           (widget-insert "
-Use the setting's State button to set it or save changes in it.
-Saving a change normally works by editing your Emacs init file.")
-           (widget-insert "
-\nSince you started Emacs with `-q', which inhibits use of the
-Emacs init file, you cannot save settings into the Emacs init file."))
-       (widget-insert "\nSee ")
-       (widget-create 'custom-manual
-                      :tag "Custom file"
-                      "(emacs)Saving Customizations")
-       (widget-insert
-        " for information on how to save in a different file.\n
-See ")
-       (widget-create 'custom-manual
-                      :tag "Help"
-                      :help-echo "Read the online help."
-                      "(emacs)Easy Customization")
-       (widget-insert " for more information.\n\n")
-       (widget-insert "Operate on all settings in this buffer that \
-are not marked HIDDEN:\n "))
-    (widget-insert " "))
-  (widget-create 'push-button
-                :tag "Set for Current Session"
-                :help-echo "\
-Make your editing in this buffer take effect for this session."
-                :action (lambda (widget &optional event)
-                          (Custom-set)))
-  (if (not custom-buffer-verbose-help)
-      (progn
-       (widget-insert " ")
-       (widget-create 'custom-manual
-                      :tag "Help"
-                      :help-echo "Read the online help."
-                      "(emacs)Easy Customization")))
-  (when (or custom-file user-init-file)
-    (widget-insert " ")
-    (widget-create 'push-button
-                  :tag "Save for Future Sessions"
-                  :help-echo "\
-Make your editing in this buffer take effect for future Emacs sessions.
-This updates your Emacs initialization file or creates a new one."
-                  :action (lambda (widget &optional event)
-                            (Custom-save))))
-  (if custom-reset-button-menu
-      (progn
-       (widget-insert " ")
-       (widget-create 'push-button
-                      :tag "Reset buffer"
-                      :help-echo "Show a menu with reset operations."
-                      :mouse-down-action (lambda (&rest junk) t)
-                      :action (lambda (widget &optional event)
-                                (custom-reset event))))
-    (widget-insert "\n ")
-    (widget-create 'push-button
-                  :tag "Undo Edits"
-                  :help-echo "\
-Reset all edited text in this buffer to reflect current values."
-                  :action 'Custom-reset-current)
-    (widget-insert " ")
-    (widget-create 'push-button
-                  :tag "Reset to Saved"
-                  :help-echo "\
-Reset all settings in this buffer to their saved values."
-                  :action 'Custom-reset-saved)
-    (widget-insert " ")
-    (when (or custom-file user-init-file)
-      (widget-create 'push-button
-                    :tag "Erase Customization"
-                    :help-echo "\
-Un-customize all settings in this buffer and save them with standard values."
-                    :action 'Custom-reset-standard)))
-  (widget-insert "   ")
-  (widget-create 'push-button
-                :tag "Finish"
-                :help-echo
-                (lambda (&rest ignore)
-                  (if custom-buffer-done-kill
-                      "Kill this buffer"
-                    "Bury this buffer"))
-                :action #'Custom-buffer-done)
-  (widget-insert "\n\n")
+  (let ((init-file (or custom-file user-init-file)))
+    ;; Insert verbose help at the top of the custom buffer.
+    (when custom-buffer-verbose-help
+      (widget-insert "Editing a setting changes only the text in this buffer."
+                    (if init-file
+                        "
+To set apply your changes, use the Save or Set buttons.
+Saving a change normally works by editing your init file."
+                      "
+Currently, these settings cannot be saved for future Emacs sessions,
+possibly because you started Emacs with `-q'.")
+                    "\nFor details, see ")
+      (widget-create 'custom-manual
+                    :tag "Saving Customizations"
+                    "(emacs)Saving Customizations")
+      (widget-insert " in the ")
+      (widget-create 'custom-manual
+                    :tag "Emacs manual"
+                    :help-echo "Read the Emacs manual."
+                    "(emacs)Top")
+      (widget-insert "."))
+    ;; Insert custom command buttons if the toolbar is not in use.
+
+    (widget-insert "\n")
+    ;; tool-bar is not dumped in builds without x.
+    (when (not (and (bound-and-true-p tool-bar-mode) (display-graphic-p)))
+      (if custom-buffer-verbose-help
+         (widget-insert "\n
+ Operate on all settings in this buffer that are not marked HIDDEN:\n"))
+      (let ((button (lambda (tag action active help icon)
+                     (widget-insert " ")
+                     (if (eval active)
+                         (widget-create 'push-button :tag tag
+                                        :help-echo help :action action))))
+           (commands custom-commands))
+       (apply button (pop commands)) ; Set for current session
+       (apply button (pop commands)) ; Save for future sessions
+       (if custom-reset-button-menu
+           (progn
+             (widget-insert " ")
+             (widget-create 'push-button
+                            :tag "Reset buffer"
+                            :help-echo "Show a menu with reset operations."
+                            :mouse-down-action 'ignore
+                            :action 'custom-reset))
+         (widget-insert "\n")
+         (apply button (pop commands)) ; Undo edits
+         (apply button (pop commands)) ; Reset to saved
+         (apply button (pop commands)) ; Erase customization
+         (widget-insert "  ")
+         (pop commands) ; Help (omitted)
+         (apply button (pop commands))))) ; Exit
+    (widget-insert "\n\n"))
+
+  ;; Now populate the custom buffer.
   (message "Creating customization items...")
   (buffer-disable-undo)
   (setq custom-options
@@ -2439,13 +2381,13 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
 (defface custom-variable-tag
   `((((class color)
       (background dark))
-     (:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch))
+     (:foreground "light blue" :weight bold))
     (((min-colors 88) (class color)
       (background light))
-     (:foreground "blue1" :weight bold :height 1.2 :inherit variable-pitch))
+     (:foreground "blue1" :weight bold))
     (((class color)
       (background light))
-     (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))
+     (:foreground "blue" :weight bold))
     (t (:weight bold)))
   "Face used for unpushable variable tags."
   :group 'custom-faces)
@@ -2636,15 +2578,11 @@ try matching its doc string against `custom-guess-doc-alist'."
                    widget 'custom-magic nil)))
        (widget-put widget :custom-magic magic)
        (push magic buttons))
-      ;; ### NOTE: this is ugly!!!! I need to update the :buttons property
-      ;; before the call to `widget-default-format-handler'. Otherwise, I
-      ;; loose my current `buttons'. This function shouldn't be called like
-      ;; this anyway. The doc string widget should be added like the others.
-      ;; --dv
       (widget-put widget :buttons buttons)
-      (insert "\n")
       ;; Insert documentation.
-      (widget-default-format-handler widget ?h)
+      (widget-put widget :documentation-indent 3)
+      (widget-add-documentation-string-button
+       widget :visibility-widget 'custom-visibility)
 
       ;; The comment field
       (unless (eq state 'hidden)
@@ -2989,6 +2927,21 @@ to switch between two values."
     ;; This call will possibly make the comment invisible
     (custom-redraw widget)))
 
+;;; The `custom-visibility' Widget
+
+(define-widget 'custom-visibility 'visibility
+  "Show or hide a documentation string."
+  :button-face 'custom-visibility
+  :pressed-face 'custom-visibility
+  :mouse-face 'highlight
+  :pressed-face 'highlight)
+
+(defface custom-visibility
+  '((t :height 0.8 :inherit link))
+  "Face for the `custom-visibility' widget."
+  :version "23.1"
+  :group 'custom-faces)
+
 ;;; The `custom-face-edit' Widget.
 
 (define-widget 'custom-face-edit 'checklist
@@ -3360,7 +3313,9 @@ SPEC must be a full face spec."
           ;; Update buttons.
           (widget-put widget :buttons buttons)
           ;; Insert documentation.
-          (widget-default-format-handler widget ?h)
+          (widget-add-documentation-string-button
+           widget :visibility-widget 'custom-visibility)
+
           ;; The comment field
           (unless (eq state 'hidden)
             (let* ((comment (get symbol 'face-comment))
@@ -3750,13 +3705,13 @@ and so forth.  The remaining group tags are shown with `custom-group-tag'."
 (defface custom-group-tag
   `((((class color)
       (background dark))
-     (:foreground "light blue" :weight bold :height 1.2))
+     (:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch))
     (((min-colors 88) (class color)
       (background light))
-     (:foreground "blue1" :weight bold :height 1.2))
+     (:foreground "blue1" :weight bold :height 1.2 :inherit variable-pitch))
     (((class color)
       (background light))
-     (:foreground "blue" :weight bold :height 1.2))
+     (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))
     (t (:weight bold)))
   "Face used for low level group tags."
   :group 'custom-faces)
@@ -3900,28 +3855,22 @@ If GROUPS-ONLY non-nil, return only those members that are groups."
          ;; Nested style.
          ((eq state 'hidden)
           ;; Create level indicator.
-          (unless (eq custom-buffer-style 'links)
-            (insert-char ?\  (* custom-buffer-indent (1- level)))
-            (insert "-- "))
           ;; Create tag.
-          (let ((begin (point)))
-            (insert tag)
-            (widget-specify-sample widget begin (point)))
-          (insert " group: ")
-          ;; Create link/visibility indicator.
           (if (eq custom-buffer-style 'links)
               (push (widget-create-child-and-convert
                      widget 'custom-group-link
-                     :tag "Go to Group"
+                     :tag tag
                      symbol)
                     buttons)
+            (insert-char ?\  (* custom-buffer-indent (1- level)))
+            (insert "-- ")
             (push (widget-create-child-and-convert
                    widget 'custom-group-visibility
                    :help-echo "Show members of this group."
                    :action 'custom-toggle-parent
                    (not (eq state 'hidden)))
                   buttons))
-          (insert " \n")
+          (insert " ")
           ;; Create magic button.
           (let ((magic (widget-create-child-and-convert
                         widget 'custom-magic nil)))
@@ -3932,7 +3881,9 @@ If GROUPS-ONLY non-nil, return only those members that are groups."
           ;; Insert documentation.
           (if (and (eq custom-buffer-style 'links) (> level 1))
               (widget-put widget :documentation-indent 0))
-          (widget-default-format-handler widget ?h))
+          (widget-add-documentation-string-button
+           widget :visibility-widget 'custom-visibility))
+
          ;; Nested style.
          (t                            ;Visible.
           ;; Add parent groups references above the group.
@@ -3947,9 +3898,9 @@ If GROUPS-ONLY non-nil, return only those members that are groups."
           (insert "/- ")
           ;; Create tag.
           (let ((start (point)))
-            (insert tag)
+            (insert tag " group: ")
             (widget-specify-sample widget start (point)))
-          (insert " group: ")
+          (insert (widget-docstring widget))
           ;; Create visibility indicator.
           (unless (eq custom-buffer-style 'links)
             (insert "--------")
@@ -3976,7 +3927,9 @@ If GROUPS-ONLY non-nil, return only those members that are groups."
           ;; Update buttons.
           (widget-put widget :buttons buttons)
           ;; Insert documentation.
-          (widget-default-format-handler widget ?h)
+          (widget-add-documentation-string-button
+           widget :visibility-widget 'custom-visibility)
+
           ;; Parent groups.
           (if nil  ;;; This should test that the buffer
                    ;;; was not made to display a group.
@@ -4068,44 +4021,34 @@ Optional EVENT is the location for the menu."
 
 (defun custom-group-set (widget)
   "Set changes in all modified group members."
-  (let ((children (widget-get widget :children)))
-    (mapc (lambda (child)
-           (when (eq (widget-get child :custom-state) 'modified)
-             (widget-apply child :custom-set)))
-           children )))
+  (dolist (child (widget-get widget :children))
+    (when (eq (widget-get child :custom-state) 'modified)
+      (widget-apply child :custom-set))))
 
 (defun custom-group-save (widget)
   "Save all modified group members."
-  (let ((children (widget-get widget :children)))
-    (mapc (lambda (child)
-           (when (memq (widget-get child :custom-state) '(modified set))
-             (widget-apply child :custom-save)))
-           children )))
+  (dolist (child (widget-get widget :children))
+    (when (memq (widget-get child :custom-state) '(modified set))
+      (widget-apply child :custom-save))))
 
 (defun custom-group-reset-current (widget)
   "Reset all modified group members."
-  (let ((children (widget-get widget :children)))
-    (mapc (lambda (child)
-           (when (eq (widget-get child :custom-state) 'modified)
-             (widget-apply child :custom-reset-current)))
-           children )))
+  (dolist (child (widget-get widget :children))
+    (when (eq (widget-get child :custom-state) 'modified)
+      (widget-apply child :custom-reset-current))))
 
 (defun custom-group-reset-saved (widget)
   "Reset all modified or set group members."
-  (let ((children (widget-get widget :children)))
-    (mapc (lambda (child)
-           (when (memq (widget-get child :custom-state) '(modified set))
-             (widget-apply child :custom-reset-saved)))
-           children )))
+  (dolist (child (widget-get widget :children))
+    (when (memq (widget-get child :custom-state) '(modified set))
+      (widget-apply child :custom-reset-saved))))
 
 (defun custom-group-reset-standard (widget)
   "Reset all modified, set, or saved group members."
-  (let ((children (widget-get widget :children)))
-    (mapc (lambda (child)
-           (when (memq (widget-get child :custom-state)
-                       '(modified set saved))
-             (widget-apply child :custom-reset-standard)))
-           children )))
+  (dolist (child (widget-get widget :children))
+    (when (memq (widget-get child :custom-state)
+               '(modified set saved))
+      (widget-apply child :custom-reset-standard))))
 
 (defun custom-group-state-update (widget)
   "Update magic."
@@ -4494,6 +4437,32 @@ The format is suitable for use with `easy-menu-define'."
              (let ((menu (custom-menu-create ',symbol)))
                (if (consp menu) (cdr menu) menu)))))
 
+;;; Toolbar and menubar support
+
+(easy-menu-define
+  Custom-mode-menu custom-mode-map
+  "Menu used in customization buffers."
+  (nconc (list "Custom"
+              (customize-menu-create 'customize))
+        (mapcar (lambda (arg)
+                  (let ((tag     (nth 0 arg))
+                        (command (nth 1 arg))
+                        (active  (nth 2 arg))
+                        (help    (nth 3 arg)))
+                    (vector tag command :active (eval active) :help help)))
+                custom-commands)))
+
+(defvar tool-bar-map)
+(defvar custom-tool-bar-map
+  (if (display-graphic-p)
+      (let ((map (make-sparse-keymap)))
+       (mapc
+        (lambda (arg)
+          (tool-bar-local-item-from-menu
+           (nth 1 arg) (nth 4 arg) map custom-mode-map))
+        custom-commands)
+       map)))
+
 ;;; The Custom Mode.
 
 (defun Custom-no-edit (pos &optional event)
@@ -4509,18 +4478,6 @@ The format is suitable for use with `easy-menu-define'."
        (widget-apply-action button event)
       (error "You can't edit this part of the Custom buffer"))))
 
-(easy-menu-define Custom-mode-menu
-    custom-mode-map
-  "Menu used in customization buffers."
-  `("Custom"
-    ,(customize-menu-create 'customize)
-    ["Set" Custom-set t]
-    ["Save" Custom-save t]
-    ["Undo Edits" Custom-reset-current t]
-    ["Reset to Saved" Custom-reset-saved t]
-    ["Erase Customization" Custom-reset-standard t]
-    ["Info" (info "(emacs)Easy Customization") t]))
-
 (defvar custom-field-keymap
   (let ((map (copy-keymap widget-field-keymap)))
     (define-key map "\C-c\C-c" 'Custom-set)
@@ -4577,6 +4534,7 @@ if that value is non-nil."
        mode-name "Custom")
   (use-local-map custom-mode-map)
   (easy-menu-add Custom-mode-menu)
+  (set (make-local-variable 'tool-bar-map) custom-tool-bar-map)
   (make-local-variable 'custom-options)
   (make-local-variable 'custom-local-buffer)
   (make-local-variable 'widget-documentation-face)
index be88b499fef4e300135c51ff0a9529d7966e9fd1..92274dcbe2128b25acd1d78bf7a2e5b417fda894 100644 (file)
     (when (fboundp 'facep)
       (unless (facep face)
        ;; If the user has already created the face, respect that.
-       (let ((value (or (get face 'saved-face) spec)))
+       (let ((value (or (get face 'saved-face) spec))
+             (have-window-system (memq initial-window-system '(x w32))))
          ;; Create global face.
          (make-empty-face face)
          ;; Create frame-local faces
          (dolist (frame (frame-list))
-           (face-spec-set face value frame)))
-       ;; When making a face after frames already exist
-       (if (memq window-system '(x w32 mac))
-           (make-face-x-resource-internal face))))
+           (face-spec-set face value frame)
+           (when (memq (window-system frame) '(x w32 mac))
+             (setq have-window-system t)))
+         ;; When making a face after frames already exist
+         (if have-window-system
+             (make-face-x-resource-internal face)))))
     ;; Don't record SPEC until we see it causes no errors.
     (put face 'face-defface-spec spec)
     (push (cons 'defface face) current-load-list)
@@ -339,16 +342,16 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
                (unless (facep face)
                  (make-empty-face face))
                (put face 'face-comment comment)
-               (face-spec-set face spec))
-           (setq args (cdr args)))
-       ;; Old format, a plist of FACE SPEC pairs.
-       (let ((face (nth 0 args))
-             (spec (nth 1 args)))
-         (if (get face 'face-alias)
-                 (setq face (get face 'face-alias)))
-         (put face 'saved-face spec)
-         (custom-push-theme 'theme-face face theme 'set spec))
-       (setq args (cdr (cdr args))))))))
+               (face-spec-set face spec nil))
+             (setq args (cdr args)))
+         ;; Old format, a plist of FACE SPEC pairs.
+         (let ((face (nth 0 args))
+               (spec (nth 1 args)))
+           (if (get face 'face-alias)
+               (setq face (get face 'face-alias)))
+           (put face 'saved-face spec)
+           (custom-push-theme 'theme-face face theme 'set spec))
+         (setq args (cdr (cdr args))))))))
 
 ;; XEmacs compability function.  In XEmacs, when you reset a Custom
 ;; Theme, you have to specify the theme to reset it to.  We just apply
index 1e2dd6c57af4ebef92b0ae8601e7eef9a8cb6bfc..6a66d8caa75f0e23788ce97a93ab4d90b01d48f1 100644 (file)
@@ -142,6 +142,9 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
             ;; eval.c
             (max-specpdl-size limits integer)
             (max-lisp-eval-depth limits integer)
+            (max-mini-window-height limits
+                                    (choice (const :tag "quarter screen" nil)
+                                            number))
             (stack-trace-on-error debug
                                   (choice (const :tag "off")
                                           (repeat :menu-tag "When"
@@ -340,6 +343,15 @@ since it could result in memory overflow and make Emacs crash."
             (even-window-heights windows boolean)
             (next-screen-context-lines windows integer)
             (split-height-threshold windows integer)
+             (split-window-preferred-function
+              windows
+              (choice (const :tag "vertically" split-window)
+                      ;; FIXME: Add `sensibly' which chooses between
+                      ;; vertical or horizontal splits depending on the size
+                      ;; and shape of the window.
+                      (const :tag "horizontally"
+                             (lambda (window)
+                               (split-window window nil 'horiz)))))
             (window-min-height windows integer)
             (window-min-width windows integer)
             (scroll-preserve-screen-position
@@ -420,14 +432,10 @@ since it could result in memory overflow and make Emacs crash."
                       (eq system-type 'ms-dos))
                      ((string-match "\\`w32-" (symbol-name symbol))
                       (eq system-type 'windows-nt))
-                     ((string-match "\\`mac-" (symbol-name symbol))
-                      (eq window-system 'mac))
+                     ((string-match "\\`mac-" (symbol-name symbol))
+                      (featurep 'mac-carbon))
                      ((string-match "\\`x-.*gtk" (symbol-name symbol))
-                      (or (boundp 'gtk)
-                          (and window-system
-                               (not (eq window-system 'pc))
-                               (not (eq window-system 'mac))
-                               (not (eq system-type 'windows-nt)))))
+                      (featurep 'gtk))
                      ((string-match "\\`x-" (symbol-name symbol))
                       (fboundp 'x-create-frame))
                      ((string-match "selection" (symbol-name symbol))
@@ -466,5 +474,5 @@ since it could result in memory overflow and make Emacs crash."
 (unless purify-flag
   (provide 'cus-start))
 
-;;; arch-tag: 4502730d-bcb3-4f5e-99a3-a86f2d54af60
+;; arch-tag: 4502730d-bcb3-4f5e-99a3-a86f2d54af60
 ;;; cus-start.el ends here
index e5925dd18d0d238eaee59ba4807514f9c53abe6d..5138f800972e7a5ec68c033fb00f1eb431ab7eb9 100644 (file)
@@ -1009,10 +1009,7 @@ Every theme X has a property `provide-theme' whose value is \"X-theme\".
 ;;; Loading themes.
 
 (defcustom custom-theme-directory
-  (if (eq system-type 'ms-dos)
-        ;; MS-DOS cannot have initial dot.
-        "~/_emacs.d/"
-      "~/.emacs.d/")
+  user-emacs-directory
   "Directory in which Custom theme files should be written.
 `load-theme' searches this directory in addition to load-path.
 The command `customize-create-theme' writes the files it produces
index 0fa23db84d4fa0330316ad04acd54f034e0909b7..20f6fea23db9afac717964e9243afe051b911492 100644 (file)
@@ -128,7 +128,7 @@ Set this to nil if no characters should be skipped."
                 (const :tag "off" nil))
   :group 'dabbrev)
 
-(defcustom dabbrev--eliminate-newlines t
+(defcustom dabbrev-eliminate-newlines t
   "*Non-nil means dabbrev should not insert newlines.
 Instead it converts them to spaces."
   :type 'boolean
@@ -332,6 +332,9 @@ this list."
 ;; The regexp for recognizing a character in an abbreviation.
 (defvar dabbrev--abbrev-char-regexp nil)
 
+;; The progress reporter for buffer-scanning progress.
+(defvar dabbrev--progress-reporter nil)
+
 ;;----------------------------------------------------------------
 ;; Macros
 ;;----------------------------------------------------------------
@@ -711,10 +714,6 @@ If IGNORE-CASE is non-nil, accept matches which differ in case."
        (setq all-expansions (cons expansion all-expansions))))
     all-expansions))
 
-(defun dabbrev--scanning-message ()
-  (unless (window-minibuffer-p (selected-window))
-    (message "Scanning `%s'" (buffer-name (current-buffer)))))
-
 (defun dabbrev--ignore-buffer-p (buffer)
   "Return non-nil if BUFFER should be ignored by dabbrev."
   (let ((bn (buffer-name buffer)))
@@ -740,8 +739,7 @@ of the start of the occurrence."
     ;; If we were scanning something other than the current buffer,
     ;; continue scanning there.
     (when dabbrev--last-buffer
-      (set-buffer dabbrev--last-buffer)
-      (dabbrev--scanning-message))
+      (set-buffer dabbrev--last-buffer))
     (or
      ;; ------------------------------------------
      ;; Look backward in current buffer.
@@ -773,15 +771,20 @@ of the start of the occurrence."
         ;; If we have just now begun to search other buffers,
         ;; determine which other buffers we should check.
         ;; Put that list in dabbrev--friend-buffer-list.
-        (or dabbrev--friend-buffer-list
-            (setq dabbrev--friend-buffer-list
-                  (dabbrev--make-friend-buffer-list))))
+        (unless dabbrev--friend-buffer-list
+           (setq dabbrev--friend-buffer-list
+                 (dabbrev--make-friend-buffer-list))
+           (setq dabbrev--progress-reporter
+                 (make-progress-reporter
+                  "Scanning for dabbrevs..."
+                  (- (length dabbrev--friend-buffer-list)) 0 0 1 1.5))))
        ;; Walk through the buffers till we find a match.
        (let (expansion)
         (while (and (not expansion) dabbrev--friend-buffer-list)
           (setq dabbrev--last-buffer (pop dabbrev--friend-buffer-list))
           (set-buffer dabbrev--last-buffer)
-          (dabbrev--scanning-message)
+           (progress-reporter-update dabbrev--progress-reporter
+                                     (- (length dabbrev--friend-buffer-list)))
           (setq dabbrev--last-expansion-location (point-min))
           (setq expansion (dabbrev--try-find abbrev nil 1 ignore-case)))
         expansion)))))
@@ -913,10 +916,12 @@ to record whether we upcased the expansion, downcased it, or did neither."
                          ((equal abbrev (downcase abbrev)) 'downcase)))))
 
     ;; Convert whitespace to single spaces.
-    (if dabbrev--eliminate-newlines
-       ;; Start searching at end of ABBREV so that any whitespace
-       ;; carried over from the existing text is not changed.
-       (let ((pos (length abbrev)))
+    (if dabbrev-eliminate-newlines
+       (let ((pos
+              (if (equal abbrev " ") 0 (length abbrev))))
+         ;; If ABBREV is real, search after the end of it.
+         ;; If ABBREV is space and we are copying successive words,
+         ;; search starting at the front.
          (while (string-match "[\n \t]+" expansion pos)
            (setq pos (1+ (match-beginning 0)))
            (setq expansion (replace-match " " nil nil expansion)))))
index e33dac6c2f9e363e7c5233ec0fb2b74f064a40d0..82593985650735403041846c399f4561211fcf0f 100644 (file)
@@ -87,12 +87,14 @@ any selection."
          (cond ((eq type 'kill)
                 (delete-active-region t))
                ((eq type 'yank)
-                ;; Before a yank command,
-                ;; make sure we don't yank the same region
-                ;; that we are going to delete.
+                ;; Before a yank command, make sure we don't yank the
+                ;; head of the kill-ring that really comes from the
+                ;; currently active region we are going to delete.
                 ;; That would make yank a no-op.
-                (when (string= (buffer-substring-no-properties (point) (mark))
-                               (car kill-ring))
+                (when (and (string= (buffer-substring-no-properties (point) (mark))
+                                    (car kill-ring))
+                           (fboundp 'mouse-region-match)
+                           (mouse-region-match))
                   (current-kill 1))
                 (delete-active-region))
                ((eq type 'supersede)
index 0fa38ed3c91ccb294f990949975b2415917ecb5a..bddba82a9655548e39d26c63310f94b003e902e8 100644 (file)
@@ -204,7 +204,7 @@ the normal hook `desktop-not-loaded-hook' is run."
     (const :tag "Don't load" nil)
     (const :tag "Ask the user" ask))
   :group 'desktop
-  :version "22.2")
+  :version "23.1")
 
 (defcustom desktop-base-file-name
   (convert-standard-filename ".emacs.desktop")
@@ -219,7 +219,7 @@ the normal hook `desktop-not-loaded-hook' is run."
   "Name of lock file for Emacs desktop, excluding the directory part."
   :type 'file
   :group 'desktop
-  :version "22.2")
+  :version "23.1")
 
 (defcustom desktop-path '("." "~")
   "List of directories to search for the desktop file.
@@ -253,7 +253,7 @@ May be used to deal with accidental multiple Emacs jobs."
   :type 'hook
   :group 'desktop
   :options '(desktop-save-mode-off save-buffers-kill-emacs)
-  :version "22.2")
+  :version "23.1")
 
 (defcustom desktop-after-read-hook nil
   "Normal hook run after a successful `desktop-read'.
index a79fb5774532ac478633a669a8c642a8d9f1a098..894a12b11937b5fd05ee13fd102f5d85a5678f8e 100644 (file)
@@ -48,8 +48,6 @@
 ;;   Or maybe just make it into a ".rej to diff3-markers converter".
 ;;   Maybe just use `wiggle' (by Neil Brown) to do it for us.
 ;;
-;; - Refine hunk on a word-by-word basis.
-;; 
 ;; - in diff-apply-hunk, strip context in replace-match to better
 ;;   preserve markers and spacing.
 ;; - Handle `diff -b' output in context->unified.
@@ -72,7 +70,7 @@
   :group 'diff-mode)
 
 (defcustom diff-jump-to-old-file nil
-  "*Non-nil means `diff-goto-source' jumps to the old file.
+  "Non-nil means `diff-goto-source' jumps to the old file.
 Else, it jumps to the new file."
   :type 'boolean
   :group 'diff-mode)
@@ -157,7 +155,8 @@ when editing big diffs)."
     ("\C-c\C-u" . diff-context->unified)
     ;; `d' because it duplicates the context :-(  --Stef
     ("\C-c\C-d" . diff-unified->context)
-    ("\C-c\C-w" . diff-refine-hunk)
+    ("\C-c\C-w" . diff-refine-ignore-spaces-hunk)
+    ("\C-c\C-b" . diff-fine-highlight)  ;No reason for `b' :-(
     ("\C-c\C-f" . next-error-follow-minor-mode))
   "Keymap for `diff-mode'.  See also `diff-mode-shared-map'.")
 
@@ -174,8 +173,9 @@ when editing big diffs)."
     ["Unified -> Context"      diff-unified->context   t]
     ;;["Fixup Headers"         diff-fixup-modifs       (not buffer-read-only)]
     "-----"
-    ["Split hunk"              diff-split-hunk         t]
-    ["Refine hunk"             diff-refine-hunk        t]
+    ["Split hunk"              diff-split-hunk         (diff-splittable-p)]
+    ["Ignore whitespace changes" diff-refine-ignore-spaces-hunk t]
+    ["Highlight fine changes"  diff-fine-highlight     t]
     ["Kill current hunk"       diff-hunk-kill          t]
     ["Kill current file's hunks" diff-file-kill        t]
     "-----"
@@ -351,8 +351,11 @@ when editing big diffs)."
     ("^--- .+ ----$"             . diff-hunk-header-face) ;context
     ("^[0-9,]+[acd][0-9,]+$"     . diff-hunk-header-face) ;normal
     ("^---$"                     . diff-hunk-header-face) ;normal
-    ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\(\\S-+\\)\\(.*[^*-]\\)?\n"
-     (0 diff-header-face) (2 diff-file-header-face prepend))
+    ;; For file headers, accept files with spaces, but be careful to rule
+    ;; out false-positives when matching hunk headers.
+    ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\([^\t\n]+?\\)\\(?:\t.*\\| \\(\\*\\*\\*\\*\\|----\\)\\)?\n"
+     (0 diff-header-face)
+     (2 (if (not (match-end 3)) diff-file-header-face) prepend))
     ("^\\([-<]\\)\\(.*\n\\)"
      (1 diff-indicator-removed-face) (2 diff-removed-face))
     ("^\\([+>]\\)\\(.*\n\\)"
@@ -385,12 +388,15 @@ when editing big diffs)."
 (defconst diff-file-header-re (concat "^\\(--- .+\n\\+\\+\\+ \\|\\*\\*\\* .+\n--- \\|[^-+!<>0-9@* ]\\).+\n" (substring diff-hunk-header-re 1)))
 (defvar diff-narrowed-to nil)
 
-(defun diff-end-of-hunk (&optional style)
+(defun diff-hunk-style (&optional style)
   (when (looking-at diff-hunk-header-re)
-    (unless style
-      ;; Especially important for unified (because headers are ambiguous).
-      (setq style (cdr (assq (char-after) '((?@ . unified) (?* . context))))))
+    (setq style (cdr (assq (char-after) '((?@ . unified) (?* . context)))))
     (goto-char (match-end 0)))
+  style)
+
+(defun diff-end-of-hunk (&optional style)
+  ;; Especially important for unified (because headers are ambiguous).
+  (setq style (diff-hunk-style style))
   (let ((end (and (re-search-forward (case style
                                       ;; A `unified' header is ambiguous.
                                       (unified (concat "^[^-+# \\]\\|"
@@ -418,13 +424,29 @@ but in the file header instead, in which case move forward to the first hunk."
          (diff-beginning-of-file-and-junk)
          (diff-hunk-next))))))
 
+(defun diff-unified-hunk-p ()
+  (save-excursion
+    (ignore-errors
+      (diff-beginning-of-hunk)
+      (looking-at "^@@"))))
+
 (defun diff-beginning-of-file ()
   (beginning-of-line)
   (unless (looking-at diff-file-header-re)
-    (forward-line 2)
-    (condition-case ()
-       (re-search-backward diff-file-header-re)
-      (error (error "Can't find the beginning of the file")))))
+    (let ((start (point))
+          res)
+      ;; diff-file-header-re may need to match up to 4 lines, so in case
+      ;; we're inside the header, we need to move up to 3 lines forward.
+      (forward-line 3)
+      (if (and (setq res (re-search-backward diff-file-header-re nil t))
+               ;; Maybe the 3 lines forward were too much and we matched
+               ;; a file header after our starting point :-(
+               (or (<= (point) start)
+                   (setq res (re-search-backward diff-file-header-re nil t))))
+          res
+        (goto-char start)
+        (error "Can't find the beginning of the file")))))
+        
 
 (defun diff-end-of-file ()
   (re-search-forward "^[-+#!<>0-9@* \\]" nil t)
@@ -477,26 +499,34 @@ If the prefix ARG is given, restrict the view to the current file instead."
   "Go to the beginning of file-related diff-info.
 This is like `diff-beginning-of-file' except it tries to skip back over leading
 data such as \"Index: ...\" and such."
-  (let ((start (point))
-        (file (condition-case err (progn (diff-beginning-of-file) (point))
-                (error err)))
-        ;; prevhunk is one of the limits.
-        (prevhunk (save-excursion (ignore-errors (diff-hunk-prev) (point))))
-        err)
-    (when (consp file)
-      ;; Presumably, we started before the file header, in the leading junk.
-      (setq err file)
-      (diff-file-next)
-      (setq file (point)))
-    (let ((index (save-excursion
-                   (re-search-backward "^Index: " prevhunk t))))
-      (when index (setq file index))
-      (if (<= file start)
-          (goto-char file)
-        ;; File starts *after* the starting point: we really weren't in
-        ;; a file diff but elsewhere.
-        (goto-char start)
-        (signal (car err) (cdr err))))))
+  (let* ((start (point))
+         (prevfile (condition-case err
+                       (save-excursion (diff-beginning-of-file) (point))
+                     (error err)))
+         (err (if (consp prevfile) prevfile))
+         (nextfile (ignore-errors
+                     (save-excursion
+                       (goto-char start) (diff-file-next) (point))))
+         ;; prevhunk is one of the limits.
+         (prevhunk (save-excursion
+                     (ignore-errors
+                       (if (numberp prevfile) (goto-char prevfile))
+                       (diff-hunk-prev) (point))))
+         (previndex (save-excursion
+                      (re-search-backward "^Index: " prevhunk t))))
+    ;; If we're in the junk, we should use nextfile instead of prevfile.
+    (if (and (numberp nextfile)
+             (or (not (numberp prevfile))
+                 (and previndex (> previndex prevfile))))
+        (setq prevfile nextfile))
+    (if (and previndex (numberp prevfile) (< previndex prevfile))
+        (setq prevfile previndex))
+    (if (and (numberp prevfile) (<= prevfile start))
+        (goto-char prevfile)
+      ;; File starts *after* the starting point: we really weren't in
+      ;; a file diff but elsewhere.
+      (goto-char start)
+      (signal (car err) (cdr err)))))
           
 (defun diff-file-kill ()
   "Kill current file's hunks."
@@ -530,6 +560,13 @@ data such as \"Index: ...\" and such."
       (while (re-search-forward re end t) (incf n))
       n)))
 
+(defun diff-splittable-p ()
+  (save-excursion
+    (beginning-of-line)
+    (and (looking-at "^[-+ ]")
+         (progn (forward-line -1) (looking-at "^[-+ ]"))
+         (diff-unified-hunk-p))))
+
 (defun diff-split-hunk ()
   "Split the current (unified diff) hunk at point into two hunks."
   (interactive)
@@ -624,9 +661,11 @@ If the OLD prefix arg is passed, tell the file NAME of the old file."
               (list (if old (match-string 2) (match-string 4))
                     (if old (match-string 4) (match-string 2)))))))))
 
-(defun diff-find-file-name (&optional old prefix)
+(defun diff-find-file-name (&optional old batch prefix)
   "Return the file corresponding to the current patch.
 Non-nil OLD means that we want the old file.
+Non-nil BATCH means to prefer returning an incorrect answer than to prompt
+the user.
 PREFIX is only used internally: don't use it."
   (save-excursion
     (unless (looking-at diff-file-header-re)
@@ -663,7 +702,10 @@ PREFIX is only used internally: don't use it."
            (boundp 'cvs-pcl-cvs-dirchange-re)
            (save-excursion
              (re-search-backward cvs-pcl-cvs-dirchange-re nil t))
-           (diff-find-file-name old (match-string 1)))
+           (diff-find-file-name old batch (match-string 1)))
+       ;; Invent something, if necessary.
+       (when batch
+         (or (car fs) default-directory))
        ;; if all else fails, ask the user
        (let ((file (read-file-name (format "Use file %s: " (or (first fs) ""))
                                   nil (first fs) t (first fs))))
@@ -711,7 +753,12 @@ else cover the whole buffer."
            (let ((line1 (match-string 4))
                  (lines1 (match-string 5))
                  (line2 (match-string 6))
-                 (lines2 (match-string 7)))
+                 (lines2 (match-string 7))
+                 ;; Variables to use the special undo function.
+                 (old-undo buffer-undo-list)
+                 (old-end (marker-position end))
+                 (start (match-beginning 0))
+                 (reversible t))
              (replace-match
               (concat "***************\n*** " line1 ","
                       (number-to-string (+ (string-to-number line1)
@@ -753,6 +800,14 @@ else cover the whole buffer."
                  (if (not (save-excursion (re-search-forward "^+" nil t)))
                      (delete-region (point) (point-max))
                    (let ((modif nil) (delete nil))
+                     (if (save-excursion (re-search-forward "^\\+.*\n-" nil t))
+                          ;; Normally, lines in a substitution come with
+                          ;; first the removals and then the additions, and
+                          ;; the context->unified function follows this
+                          ;; convention, of course.  Yet, other alternatives
+                          ;; are valid as well, but they preclude the use of
+                          ;; context->unified as an undo command.
+                         (setq reversible nil))
                      (while (not (eobp))
                        (case (char-after)
                          (?\s (insert " ") (setq modif nil) (backward-char 1))
@@ -771,7 +826,15 @@ else cover the whole buffer."
                          (forward-line 1)
                          (when delete
                            (delete-region last-pt (point))
-                           (setq delete nil)))))))))))))))
+                           (setq delete nil)))))))
+               (unless (or (not reversible) (eq buffer-undo-list t))
+                  ;; Drop the many undo entries and replace them with
+                  ;; a single entry that uses diff-context->unified to do
+                  ;; the work.
+                 (setq buffer-undo-list
+                       (cons (list 'apply (- old-end end) start (point-max)
+                                   'diff-context->unified start (point-max))
+                             old-undo)))))))))))
 
 (defun diff-context->unified (start end &optional to-context)
   "Convert context diffs to unified diffs.
@@ -785,68 +848,89 @@ With a prefix argument, convert unified format to context format."
       (diff-unified->context start end)
     (unless (markerp end) (setq end (copy-marker end t)))
     (let ( ;;(diff-inhibit-after-change t)
-         (inhibit-read-only t))
+          (inhibit-read-only t))
       (save-excursion
-       (goto-char start)
-       (while (and (re-search-forward "^\\(\\(\\*\\*\\*\\) .+\n\\(---\\) .+\\|\\*\\{15\\}.*\n\\*\\*\\* \\([0-9]+\\),\\(-?[0-9]+\\) \\*\\*\\*\\*\\)$" nil t)
-                   (< (point) end))
-         (combine-after-change-calls
-           (if (match-beginning 2)
-               ;; we matched a file header
-               (progn
-                 ;; use reverse order to make sure the indices are kept valid
-                 (replace-match "+++" t t nil 3)
-                 (replace-match "---" t t nil 2))
-             ;; we matched a hunk header
-             (let ((line1s (match-string 4))
-                   (line1e (match-string 5))
-                   (pt1 (match-beginning 0)))
-               (replace-match "")
-               (unless (re-search-forward
-                        "^--- \\([0-9]+\\),\\(-?[0-9]+\\) ----$" nil t)
-                 (error "Can't find matching `--- n1,n2 ----' line"))
-               (let ((line2s (match-string 1))
-                     (line2e (match-string 2))
-                     (pt2 (progn
-                            (delete-region (progn (beginning-of-line) (point))
-                                           (progn (forward-line 1) (point)))
-                            (point-marker))))
-                 (goto-char pt1)
-                 (forward-line 1)
-                 (while (< (point) pt2)
-                   (case (char-after)
-                     ((?! ?-) (delete-char 2) (insert "-") (forward-line 1))
-                     (?\s     ;merge with the other half of the chunk
-                      (let* ((endline2
-                              (save-excursion
-                                (goto-char pt2) (forward-line 1) (point)))
-                             (c (char-after pt2)))
-                        (case c
-                          ((?! ?+)
-                           (insert "+"
-                                   (prog1 (buffer-substring (+ pt2 2) endline2)
-                                     (delete-region pt2 endline2))))
-                          (?\s         ;FIXME: check consistency
-                           (delete-region pt2 endline2)
-                           (delete-char 1)
-                           (forward-line 1))
-                          (?\\ (forward-line 1))
-                          (t (delete-char 1) (forward-line 1)))))
-                     (t (forward-line 1))))
-                 (while (looking-at "[+! ] ")
-                   (if (/= (char-after) ?!) (forward-char 1)
-                     (delete-char 1) (insert "+"))
-                   (delete-char 1) (forward-line 1))
-                 (save-excursion
-                   (goto-char pt1)
-                   (insert "@@ -" line1s ","
-                           (number-to-string (- (string-to-number line1e)
-                                                (string-to-number line1s)
-                                                -1))
-                           " +" line2s ","
-                           (number-to-string (- (string-to-number line2e)
-                                                (string-to-number line2s)
-                                                -1)) " @@")))))))))))
+        (goto-char start)
+        (while (and (re-search-forward "^\\(\\(\\*\\*\\*\\) .+\n\\(---\\) .+\\|\\*\\{15\\}.*\n\\*\\*\\* \\([0-9]+\\),\\(-?[0-9]+\\) \\*\\*\\*\\*\\)$" nil t)
+                    (< (point) end))
+          (combine-after-change-calls
+            (if (match-beginning 2)
+                ;; we matched a file header
+                (progn
+                  ;; use reverse order to make sure the indices are kept valid
+                  (replace-match "+++" t t nil 3)
+                  (replace-match "---" t t nil 2))
+              ;; we matched a hunk header
+              (let ((line1s (match-string 4))
+                    (line1e (match-string 5))
+                    (pt1 (match-beginning 0))
+                    ;; Variables to use the special undo function.
+                    (old-undo buffer-undo-list)
+                    (old-end (marker-position end))
+                    (reversible t))
+                (replace-match "")
+                (unless (re-search-forward
+                         "^--- \\([0-9]+\\),\\(-?[0-9]+\\) ----$" nil t)
+                  (error "Can't find matching `--- n1,n2 ----' line"))
+                (let ((line2s (match-string 1))
+                      (line2e (match-string 2))
+                      (pt2 (progn
+                             (delete-region (progn (beginning-of-line) (point))
+                                            (progn (forward-line 1) (point)))
+                             (point-marker))))
+                  (goto-char pt1)
+                  (forward-line 1)
+                  (while (< (point) pt2)
+                    (case (char-after)
+                      (?! (delete-char 2) (insert "-") (forward-line 1))
+                      (?- (forward-char 1) (delete-char 1) (forward-line 1))
+                      (?\s           ;merge with the other half of the chunk
+                       (let* ((endline2
+                               (save-excursion
+                                 (goto-char pt2) (forward-line 1) (point))))
+                         (case (char-after pt2)
+                           ((?! ?+)
+                            (insert "+"
+                                    (prog1 (buffer-substring (+ pt2 2) endline2)
+                                      (delete-region pt2 endline2))))
+                           (?\s
+                            (unless (= (- endline2 pt2)
+                                       (- (line-beginning-position 2) (point)))
+                              ;; If the two lines we're merging don't have the
+                              ;; same length (can happen with "diff -b"), then
+                              ;; diff-unified->context will not properly undo
+                              ;; this operation.
+                              (setq reversible nil))
+                            (delete-region pt2 endline2)
+                            (delete-char 1)
+                            (forward-line 1))
+                           (?\\ (forward-line 1))
+                           (t (setq reversible nil)
+                              (delete-char 1) (forward-line 1)))))
+                      (t (setq reversible nil) (forward-line 1))))
+                  (while (looking-at "[+! ] ")
+                    (if (/= (char-after) ?!) (forward-char 1)
+                      (delete-char 1) (insert "+"))
+                    (delete-char 1) (forward-line 1))
+                  (save-excursion
+                    (goto-char pt1)
+                    (insert "@@ -" line1s ","
+                            (number-to-string (- (string-to-number line1e)
+                                                 (string-to-number line1s)
+                                                 -1))
+                            " +" line2s ","
+                            (number-to-string (- (string-to-number line2e)
+                                                 (string-to-number line2s)
+                                                 -1)) " @@"))
+                  (set-marker pt2 nil)
+                  ;; The whole procedure succeeded, let's replace the myriad
+                  ;; of undo elements with just a single special one.
+                  (unless (or (not reversible) (eq buffer-undo-list t))
+                    (setq buffer-undo-list
+                          (cons (list 'apply (- old-end end) pt1 (point)
+                                      'diff-unified->context pt1 (point))
+                                old-undo)))
+                  )))))))))
 
 (defun diff-reverse-direction (start end)
   "Reverse the direction of the diffs.
@@ -1159,26 +1243,30 @@ Only works for unified diffs."
 
        ;; A context diff.
        ((eq (char-after) ?*)
-        (if (not (looking-at "\\*\\{15\\}\\(?: .*\\)?\n\\*\\*\\* \\([0-9]+\\),\\([0-9]+\\) \\*\\*\\*\\*"))
+        (if (not (looking-at "\\*\\{15\\}\\(?: .*\\)?\n\\*\\*\\* \\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? \\*\\*\\*\\*"))
             (error "Unrecognized context diff first hunk header format")
           (forward-line 2)
           (diff-sanity-check-context-hunk-half
-           (1+ (- (string-to-number (match-string 2))
-                  (string-to-number (match-string 1)))))
-          (if (not (looking-at "--- \\([0-9]+\\),\\([0-9]+\\) ----$"))
+          (if (match-string 2)
+              (1+ (- (string-to-number (match-string 2))
+                     (string-to-number (match-string 1))))
+            1))
+          (if (not (looking-at "--- \\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? ----$"))
               (error "Unrecognized context diff second hunk header format")
             (forward-line)
             (diff-sanity-check-context-hunk-half
-             (1+ (- (string-to-number (match-string 2))
-                    (string-to-number (match-string 1))))))))
+            (if (match-string 2)
+                (1+ (- (string-to-number (match-string 2))
+                       (string-to-number (match-string 1))))
+              1)))))
 
        ;; A unified diff.
        ((eq (char-after) ?@)
         (if (not (looking-at
-                  "@@ -[0-9]+,\\([0-9]+\\) \\+[0-9]+,\\([0-9]+\\) @@"))
+                  "@@ -[0-9]+\\(?:,\\([0-9]+\\)\\)? \\+[0-9]+\\(?:,\\([0-9]+\\)\\)? @@"))
             (error "Unrecognized unified diff hunk header format")
-          (let ((before (string-to-number (match-string 1)))
-                (after (string-to-number (match-string 2))))
+          (let ((before (if (match-string 1) (string-to-number (match-string 1)) 1))
+                (after (if (match-string 2) (string-to-number (match-string 2)) 1)))
             (forward-line)
             (while
                 (case (char-after)
@@ -1326,7 +1414,7 @@ Whitespace differences are ignored."
        (if (> (- (car forw) orig) (- orig (car back))) back forw)
       (or back forw))))
 
-(defsubst diff-xor (a b) (if a (not b) b))
+(defsubst diff-xor (a b) (if a (if (not b) a) b))
 
 (defun diff-find-source-location (&optional other-file reverse)
   "Find out (BUF LINE-OFFSET POS SRC DST SWITCHED).
@@ -1409,8 +1497,15 @@ the value of this variable when given an appropriate prefix argument).
 With a prefix argument, REVERSE the hunk."
   (interactive "P")
   (destructuring-bind (buf line-offset pos old new &optional switched)
-      ;; If REVERSE go to the new file, otherwise go to the old.
-      (diff-find-source-location (not reverse) reverse)
+      ;; Sometimes we'd like to have the following behavior: if REVERSE go
+      ;; to the new file, otherwise go to the old.  But that means that by
+      ;; default we use the old file, which is the opposite of the default
+      ;; for diff-goto-source, and is thus confusing.  Also when you don't
+      ;; know about it it's pretty surprising.
+      ;; TODO: make it possible to ask explicitly for this behavior.
+      ;; 
+      ;; This is duplicated in diff-test-hunk.
+      (diff-find-source-location nil reverse)
     (cond
      ((null line-offset)
       (error "Can't find the text to patch"))
@@ -1454,8 +1549,7 @@ With a prefix argument, REVERSE the hunk."
 With a prefix argument, try to REVERSE the hunk."
   (interactive "P")
   (destructuring-bind (buf line-offset pos src dst &optional switched)
-      ;; If REVERSE go to the new file, otherwise go to the old.
-      (diff-find-source-location (not reverse) reverse)
+      (diff-find-source-location nil reverse)
     (set-window-point (display-buffer buf) (+ (car pos) (cdr src)))
     (diff-hunk-status-msg line-offset (diff-xor reverse switched) t)))
 
@@ -1484,6 +1578,10 @@ then `diff-jump-to-old-file' is also set, for the next invocations."
 (defun diff-current-defun ()
   "Find the name of function at point.
 For use in `add-log-current-defun-function'."
+  ;; Kill change-log-default-name so it gets recomputed each time, since
+  ;; each hunk may belong to another file which may belong to another
+  ;; directory and hence have a different ChangeLog file.
+  (kill-local-variable 'change-log-default-name)
   (save-excursion
     (when (looking-at diff-hunk-header-re)
       (forward-line 1)
@@ -1506,7 +1604,7 @@ For use in `add-log-current-defun-function'."
            (goto-char (+ (car pos) (cdr src)))
            (add-log-current-defun))))))
 
-(defun diff-refine-hunk ()
+(defun diff-refine-ignore-spaces-hunk ()
   "Refine the current hunk by ignoring space differences."
   (interactive)
   (let* ((char-offset (- (point) (progn (diff-beginning-of-hunk 'try-harder)
@@ -1551,6 +1649,64 @@ For use in `add-log-current-defun-function'."
       (delete-file file1)
       (delete-file file2))))
 
+;;; Fine change highlighting.
+
+(defface diff-fine-change
+  '((t :background "yellow"))
+  "Face used for char-based changes shown by `diff-fine-highlight'."
+  :group 'diff-mode)
+
+(defun diff-fine-highlight-preproc ()
+  (while (re-search-forward "^." nil t)
+    ;; Replace the hunk's leading prefix (+, -, !, <, or >) on each line
+    ;; with something  constant, otherwise it'll be flagged as changes
+    ;; (since it's typically "-" on one side and "+" on the other).
+    ;; Note that we keep the same number of chars: we treat the prefix
+    ;; as part of the texts-to-diff, so that finding the right char
+    ;; afterwards will be easier.  This only makes sense because we make
+    ;; diffs at char-granularity.
+    (replace-match " ")))
+
+(defun diff-fine-highlight ()
+  "Highlight changes of hunk at point at a finer granularity."
+  (interactive)
+  (require 'smerge-mode)
+  (diff-beginning-of-hunk 'try-harder)
+  (let* ((style (diff-hunk-style))      ;Skips the hunk header as well.
+         (beg (point))
+         (props '((diff-mode . fine) (face diff-fine-change)))
+         (end (progn (diff-end-of-hunk) (point))))
+
+    (remove-overlays beg end 'diff-mode 'fine)
+
+    (goto-char beg)
+    (case style
+     (unified
+      (while (re-search-forward "^\\(?:-.*\n\\)+\\(\\)\\(?:\\+.*\n\\)+" end t)
+        (smerge-refine-subst (match-beginning 0) (match-end 1)
+                             (match-end 1) (match-end 0)
+                             props 'diff-fine-highlight-preproc)))
+     (context
+      (let* ((middle (save-excursion (re-search-forward "^---")))
+             (other middle))
+        (while (re-search-forward "^\\(?:!.*\n\\)+" middle t)
+          (smerge-refine-subst (match-beginning 0) (match-end 0)
+                               (save-excursion
+                                 (goto-char other)
+                                 (re-search-forward "^\\(?:!.*\n\\)+" end)
+                                 (setq other (match-end 0))
+                                 (match-beginning 0))
+                               other
+                               props 'diff-fine-highlight-preproc))))
+     (t ;; Normal diffs.
+      (let ((beg1 (1+ (point))))
+        (when (re-search-forward "^---.*\n" end t)
+          ;; It's a combined add&remove, so there's something to do.
+          (smerge-refine-subst beg1 (match-beginning 0)
+                               (match-end 0) end
+                               props 'diff-fine-highlight-preproc)))))))
+
+
 ;; provide the package
 (provide 'diff-mode)
 
index 75ae34d5f2adedf107eb18910a557d525b298016..b063c07b40f43161275e215d275f939b81ac2e56 100644 (file)
@@ -125,9 +125,13 @@ With prefix arg, prompt for diff switches."
        (erase-buffer))
       (buffer-enable-undo (current-buffer))
       (diff-mode)
+      ;; Use below 2 vars for backward-compatibility.
+      (set (make-local-variable 'diff-old-file) old)
+      (set (make-local-variable 'diff-new-file) new)
+      (set (make-local-variable 'diff-extra-args) (list switches no-async))
       (set (make-local-variable 'revert-buffer-function)
-          `(lambda (ignore-auto noconfirm)
-             (diff ',old ',new ',switches ',no-async)))
+          (lambda (ignore-auto noconfirm)
+             (apply 'diff diff-old-file diff-new-file diff-extra-args)))
       (set (make-local-variable 'diff-old-temp-file) old-alt)
       (set (make-local-variable 'diff-new-temp-file) new-alt)
       (setq default-directory thisdir)
@@ -187,5 +191,5 @@ With prefix arg, prompt for diff switches."
 
 (provide 'diff)
 
-;;; arch-tag: 7de2c29b-7ea5-4b85-9b9d-72dd860de2bd
+;; arch-tag: 7de2c29b-7ea5-4b85-9b9d-72dd860de2bd
 ;;; diff.el ends here
index 4d9849cd534bd3000049b4160d9cfdafaed7ff67..e0749f375aea382862ee80e8b3f7b536bb99cc65 100644 (file)
@@ -253,9 +253,20 @@ List has a form of (file-name full-file-name (attribute-list))"
 ;;;###autoload
 (defun dired-do-chmod (&optional arg)
   "Change the mode of the marked (or next ARG) files.
-This calls chmod, thus symbolic modes like `g+w' are allowed."
+Symbolic modes like `g+w' are allowed."
   (interactive "P")
-  (dired-do-chxxx "Mode" dired-chmod-program 'chmod arg))
+  (let* ((files (dired-get-marked-files t arg))
+        (modes (dired-mark-read-string
+                "Change mode of %s to: " nil
+                'chmod arg files))
+        (num-modes (if (string-match "^[0-7]+" modes)
+                       (string-to-number modes 8))))
+    (dolist (file files)
+      (set-file-modes
+       file
+       (if num-modes num-modes
+        (file-modes-symbolic-to-number modes (file-modes file)))))
+    (dired-do-redisplay arg)))
 
 ;;;###autoload
 (defun dired-do-chgrp (&optional arg)
@@ -582,18 +593,6 @@ can be produced by `dired-get-marked-files', for example."
   ;; Return nil for sake of nconc in dired-bunch-files.
   nil)
 \f
-;; In Emacs 19 this will return program's exit status.
-;; This is a separate function so that ange-ftp can redefine it.
-(defun dired-call-process (program discard &rest arguments)
-;  "Run PROGRAM with output to current buffer unless DISCARD is t.
-;Remaining arguments are strings passed as command arguments to PROGRAM."
-  ;; Look for a handler for default-directory in case it is a remote file name.
-  (let ((handler
-        (find-file-name-handler (directory-file-name default-directory)
-                                'dired-call-process)))
-    (if handler (apply handler 'dired-call-process
-                      program discard arguments)
-      (apply 'call-process program nil (not discard) nil arguments))))
 
 (defun dired-check-process (msg program &rest arguments)
 ;  "Display MSG while running PROGRAM, and check for output.
@@ -610,8 +609,7 @@ can be produced by `dired-get-marked-files', for example."
       (set-buffer err-buffer)
       (erase-buffer)
       (setq default-directory dir      ; caller's default-directory
-           err (not (eq 0
-                (apply (function dired-call-process) program nil arguments))))
+           err (not (eq 0 (apply 'process-file program nil t nil arguments))))
       (if err
          (progn
            (dired-log (concat program " " (prin1-to-string arguments) "\n"))
@@ -1203,7 +1201,7 @@ Special value `always' suppresses confirmation."
              ;; It is a symlink
              (make-symbolic-link (car attrs) to ok-flag)
            (copy-file from to ok-flag dired-copy-preserve-time))
-       (file-date-error 
+       (file-date-error
         (push (dired-make-relative from)
               dired-create-files-failures)
         (dired-log "Can't set date on %s:\n%s\n" from err))))))
@@ -1332,7 +1330,7 @@ Special value `always' suppresses confirmation."
        skipped (success-count 0) (total (length fn-list)))
     (let (to overwrite-query
             overwrite-backup-query)    ; for dired-handle-overwrite
-      (mapcar
+      (mapc
        (function
        (lambda (from)
          (setq to (funcall name-constructor from))
index af700ac80a0782d94ba29d8268de9277a716726c..7bdb195543aa858de92824312b6a9be34ed92f17 100644 (file)
@@ -1258,6 +1258,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
     (define-key map "$" 'dired-hide-subdir)
     (define-key map "\M-$" 'dired-hide-all)
     ;; misc
+    (define-key map "\C-x\C-q" 'dired-toggle-read-only)
     (define-key map "?" 'dired-summary)
     (define-key map "\177" 'dired-unmark-backward)
     (define-key map [remap undo] 'dired-undo)
@@ -1363,7 +1364,8 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
     (define-key map [menu-bar immediate create-directory]
       '(menu-item "Create Directory..." dired-create-directory))
     (define-key map [menu-bar immediate wdired-mode]
-      '(menu-item "Edit File Names" wdired-change-to-wdired-mode))
+      '(menu-item "Edit File Names" wdired-change-to-wdired-mode
+                 :filter (lambda (x) (if (eq major-mode 'dired-mode) x))))
 
     (define-key map [menu-bar regexp]
       (cons "Regexp" (make-sparse-keymap "Regexp")))
@@ -1462,6 +1464,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
 
     (define-key map [menu-bar operate]
       (cons "Operate" (make-sparse-keymap "Operate")))
+
     (define-key map
       [menu-bar operate image-dired-delete-tag]
       '(menu-item "Delete Image Tag..." image-dired-delete-tag
@@ -1665,6 +1668,16 @@ You can use it to recover marks, killed lines or subdirs."
   (message "Change in dired buffer undone.
 Actual changes in files cannot be undone by Emacs."))
 
+(defun dired-toggle-read-only ()
+  "Edit dired buffer with Wdired, or set it read-only.
+Call `wdired-change-to-wdired-mode' in dired buffers whose editing is
+supported by Wdired (the major mode of the dired buffer is `dired-mode').
+Otherwise, for buffers inheriting from dired-mode, call `toggle-read-only'."
+  (interactive)
+  (if (eq major-mode 'dired-mode)
+      (wdired-change-to-wdired-mode)
+    (toggle-read-only)))
+
 (defun dired-next-line (arg)
   "Move down lines then position at filename.
 Optional prefix ARG says how many lines to move; default is one line."
@@ -2418,8 +2431,8 @@ Anything else, ask for each sub-directory."
   "In Dired, delete the files flagged for deletion.
 If NOMESSAGE is non-nil, we don't display any message
 if there are no flagged files.
-`dired-recursive-deletes' controls whether 
-deletion of non-empty directories is allowed."
+`dired-recursive-deletes' controls whether deletion of
+non-empty directories is allowed."
   (interactive)
   (let* ((dired-marker-char dired-del-marker)
         (regexp (dired-marker-regexp))
@@ -2436,8 +2449,8 @@ deletion of non-empty directories is allowed."
 
 (defun dired-do-delete (&optional arg)
   "Delete all marked (or next ARG) files.
-`dired-recursive-deletes' controls whether 
-deletion of non-empty directories is allowed."
+`dired-recursive-deletes' controls whether deletion of
+non-empty directories is allowed."
   ;; This is more consistent with the file marking feature than
   ;; dired-do-flagged-delete.
   (interactive "P")
@@ -3334,7 +3347,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
           (dired dired-dir)
           ;; The following elements of `desktop-buffer-misc' are the keys
           ;; from `dired-subdir-alist'.
-          (mapcar 'dired-maybe-insert-subdir (cdr desktop-buffer-misc))
+          (mapc 'dired-maybe-insert-subdir (cdr desktop-buffer-misc))
           (current-buffer))
       (message "Desktop: Directory %s no longer exists." dir)
       (when desktop-missing-file-warning (sit-for 1))
index 5a9a69680bff16d9f3a41ee03124e0f88a4720bb..4bf52896cf0e63ac3f93c1d9b405903f59997134 100644 (file)
@@ -220,7 +220,7 @@ with either the `--unibyte' option or the EMACS_UNIBYTE environment
 variable, or else customize `enable-multibyte-characters'.
 
 With prefix argument, this command enables European character display
-if arg is positive, disables it otherwise.  Otherwise, it toggles
+if ARG is positive, disables it otherwise.  Otherwise, it toggles
 European character display.
 
 When this mode is enabled, characters in the range of 160 to 255
@@ -264,5 +264,5 @@ for users who call this function in `.emacs'."
 
 (provide 'disp-table)
 
-;;; arch-tag: ffe4c28c-960c-47aa-b8a8-ae89d371ffc7
+;; arch-tag: ffe4c28c-960c-47aa-b8a8-ae89d371ffc7
 ;;; disp-table.el ends here
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
new file mode 100644 (file)
index 0000000..d7d2bb4
--- /dev/null
@@ -0,0 +1,766 @@
+;;; doc-view.el --- View PDF/PostScript/DVI files in Emacs
+
+;; Copyright (C) 2007 Free Software Foundation, Inc.
+;;
+;; Author: Tassilo Horn <tassilo@member.fsf.org>
+;; Maintainer: Tassilo Horn <tassilo@member.fsf.org>
+;; Keywords: files, pdf, ps, dvi
+;; Version: <2007-10-02 Tue 18:21>
+
+;; 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, 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; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Requirements:
+
+;; doc-view.el requires GNU Emacs 22.1 or newer.  You also need GhostScript,
+;; `dvipdfm' which comes with TeTeX and `pdftotext', which comes with poppler
+;; (http://poppler.freedesktop.org/).
+
+;;; Commentary:
+
+;; DocView is a document viewer for Emacs.  It converts PDF, PS and DVI files
+;; to a set of PNG files, one PNG for each page, and displays the PNG images
+;; inside an Emacs buffer.  This buffer uses `doc-view-mode' which provides
+;; convenient key bindings for browsing the document.
+;;
+;; To use it simply do
+;;
+;;     M-x doc-view RET
+;;
+;; and you'll be queried for a document to open.
+;;
+;; Since conversion may take some time all the PNG images are cached in a
+;; subdirectory of `doc-view-cache-directory' and reused when you want to view
+;; that file again.  This reusing can be omitted if you provide a prefx
+;; argument to `doc-view'.  To delete all cached files use
+;; `doc-view-clear-cache'.  To open the cache with dired, so that you can tidy
+;; it out use `doc-view-dired-cache'.
+;;
+;; When conversion in underway the first page will be displayed as soon as it
+;; is available and the available pages are refreshed every
+;; `doc-view-conversion-refresh-interval' seconds.  If that variable is nil the
+;; pages won't be displayed before conversion of the document finished
+;; completely.
+;;
+;; DocView lets you select a slice of the displayed pages.  This slice will be
+;; remembered and applied to all pages of the current document.  This enables
+;; you to cut away the margins of a document to save some space.  To select a
+;; slice you can use `doc-view-set-slice' (bound to `s s') which will query you
+;; for the coordinates of the slice's top-left corner and its width and height.
+;; A much more convenient way to do the same is offered by the command
+;; `doc-view-set-slice-using-mouse' (bound to `s m').  After invokation you
+;; only have to press mouse-1 at the top-left corner and drag it to the
+;; bottom-right corner of the desired slice.  To reset the slice use
+;; `doc-view-reset-slice' (bound to `s r').
+;;
+;; Dired users should have a look at `doc-view-dired'.
+;;
+;; You can also search within the document.  The command `doc-view-search'
+;; (bound to `C-s') queries for a search regexp and initializes a list of all
+;; matching pages and messages how many match-pages were found.  After that you
+;; can jump to the next page containing a match with
+;; `doc-view-search-next-match' (bound to `C-S-n') or to the previous matching
+;; page with `doc-view-search-previous-match' (bound to `C-S-p').  This works
+;; by searching a plain text representation of the document.  If that doesn't
+;; already exist the first invokation of `doc-view-search' starts the
+;; conversion.  When that finishes and you're still viewing the document
+;; (i.e. you didn't switch to another buffer) you're queried for the regexp
+;; then.
+
+;;; Configuration:
+
+;; Basically doc-view should be quite usable with its standard settings, so
+;; putting
+;;
+;;     (require 'doc-view)
+;;
+;; into your `user-init-file' should be enough.  If the images are too small or
+;; too big you should set the "-rXXX" option in `doc-view-ghostscript-options'
+;; to another value.  (The bigger your screen, the higher the value.)
+;;
+;; This and all other options can be set with the customization interface.
+;; Simply do
+;;
+;;     M-x customize-group RET doc-view RET
+;;
+;; and modify them to your needs.
+
+;;; Code:
+
+(require 'dired)
+(eval-when-compile (require 'cl))
+
+;;;; Customization Options
+
+(defgroup doc-view nil
+  "In-buffer viewer for PDF, PostScript and DVI files."
+  :link '(function-link doc-view)
+  :version "22.2"
+  :group 'applications
+  :group 'multimedia
+  :prefix "doc-view-")
+
+(defcustom doc-view-ghostscript-program "gs"
+  "Program to convert PS and PDF files to PNG."
+  :type '(file)
+  :group 'doc-view)
+
+(defcustom doc-view-ghostscript-options
+  '("-dNOPAUSE" "-sDEVICE=png16m" "-dTextAlphaBits=4"
+    "-dBATCH" "-dGraphicsAlphaBits=4" "-dQUIET"
+    "-r100")
+  "A list of options to give to ghostview."
+  :type '(sexp)
+  :group 'doc-view)
+
+(defcustom doc-view-dvipdfm-program "dvipdfm"
+  "Program to convert DVI files to PDF.
+
+DVI file will be converted to PDF before the resulting PDF is
+converted to PNG."
+  :type '(file)
+  :group 'doc-view)
+
+(defcustom doc-view-ps2pdf-program "ps2pdf"
+  "Program to convert PS files to PDF.
+
+PS files will be converted to PDF before searching is possible."
+  :type '(file)
+  :group 'doc-view)
+
+(defcustom doc-view-pdftotext-program "pdftotext"
+  "Program to convert PDF files to plain text.
+
+Needed for searching."
+  :type '(file)
+  :group 'doc-view)
+
+(defcustom doc-view-cache-directory (concat temporary-file-directory
+                                           "doc-view")
+  "The base directory, where the PNG images will be saved."
+  :type '(directory)
+  :group 'doc-view)
+
+(defcustom doc-view-conversion-buffer "*doc-view conversion output*"
+  "The buffer where messages from the converter programs go to."
+  :type '(string)
+  :group 'doc-view)
+
+(defcustom doc-view-conversion-refresh-interval 3
+  "Every how much seconds the DocView buffer gets refreshed while conversion.
+After such an refresh newly converted pages will be available for
+viewing.  If set to nil there won't be any refreshes and the
+pages won't be displayed before conversion of the whole document
+has finished."
+  :type '(string)
+  :group 'doc-view)
+
+;;;; Internal Variables
+
+(defvar doc-view-current-files nil
+  "Only used internally.")
+
+(defvar doc-view-current-page nil
+  "Only used internally.")
+
+(defvar doc-view-current-doc nil
+  "Only used internally.")
+
+(defvar doc-view-current-converter-process nil
+  "Only used internally.")
+
+(defvar doc-view-current-timer nil
+  "Only used internally.")
+
+(defvar doc-view-current-slice nil
+  "Only used internally.")
+
+(defvar doc-view-current-cache-dir nil
+  "Only used internally.")
+
+(defvar doc-view-current-search-matches nil
+  "Only used internally.")
+
+(defvar doc-view-current-image nil
+  "Only used internally.")
+
+(defvar doc-view-current-info nil
+  "Only used internally.")
+
+;;;; DocView Keymap
+
+(defvar doc-view-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; Navigation in the document
+    (define-key map (kbd "n")         'doc-view-next-page)
+    (define-key map (kbd "p")         'doc-view-previous-page)
+    (define-key map (kbd "<next>")    'doc-view-next-page)
+    (define-key map (kbd "<prior>")   'doc-view-previous-page)
+    (define-key map (kbd "SPC")       'doc-view-scroll-up-or-next-page)
+    (define-key map (kbd "DEL")       'doc-view-scroll-down-or-previous-page)
+    (define-key map (kbd "M-<")       'doc-view-first-page)
+    (define-key map (kbd "M->")       'doc-view-last-page)
+    (define-key map (kbd "g")         'doc-view-goto-page)
+    ;; Killing/burying the buffer (and the process)
+    (define-key map (kbd "q")         'bury-buffer)
+    (define-key map (kbd "k")         'doc-view-kill-proc-and-buffer)
+    (define-key map (kbd "C-x k")     'doc-view-kill-proc-and-buffer)
+    ;; Slicing the image
+    (define-key map (kbd "s s")       'doc-view-set-slice)
+    (define-key map (kbd "s m")       'doc-view-set-slice-using-mouse)
+    (define-key map (kbd "s r")       'doc-view-reset-slice)
+    ;; Searching
+    (define-key map (kbd "C-s")       'doc-view-search)
+    (define-key map (kbd "<find>")    'doc-view-search)
+    (define-key map (kbd "C-S-n")     'doc-view-search-next-match)
+    (define-key map (kbd "C-S-p")     'doc-view-search-previous-match)
+    ;; Scrolling
+    (define-key map (kbd "C-v")       'scroll-up)
+    (define-key map (kbd "<mouse-4>") 'mwheel-scroll)
+    (define-key map (kbd "<mouse-5>") 'mwheel-scroll)
+    (define-key map (kbd "M-v")       'scroll-down)
+    ;; Show the tooltip
+    (define-key map (kbd "C-t")       'doc-view-show-tooltip)
+    (suppress-keymap map)
+    map)
+  "Keymap used by `doc-view-mode'.")
+
+;;;; Navigation Commands
+
+(defun doc-view-goto-page (page)
+  "View the page given by PAGE."
+  (interactive "nPage: ")
+  (let ((len (length doc-view-current-files)))
+    (if (< page 1)
+       (setq page 1)
+      (when (> page len)
+       (setq page len)))
+    (setq doc-view-current-page page
+         doc-view-current-info
+         (concat
+          (propertize
+           (format "Page %d of %d."
+                   doc-view-current-page
+                   len) 'face 'bold)
+          ;; Tell user if converting isn't finished yet
+          (if doc-view-current-converter-process
+              " (still converting...)\n"
+            "\n")
+          ;; Display context infos if this page matches the last search
+          (when (and doc-view-current-search-matches
+                     (assq doc-view-current-page
+                           doc-view-current-search-matches))
+            (concat (propertize "Search matches:\n" 'face 'bold)
+                    (let ((contexts ""))
+                      (dolist (m (cdr (assq doc-view-current-page
+                                            doc-view-current-search-matches)))
+                        (setq contexts (concat contexts "  - \"" m "\"\n")))
+                      contexts)))))
+    ;; Update the buffer
+    (setq inhibit-read-only t)
+    (erase-buffer)
+    (let ((beg (point)))
+      (doc-view-insert-image (nth (1- page) doc-view-current-files)
+                            :pointer 'arrow)
+      (put-text-property beg (point) 'help-echo doc-view-current-info))
+    (insert "\n" doc-view-current-info)
+    (goto-char (point-min))
+    (forward-char)
+    (setq inhibit-read-only nil)))
+
+(defun doc-view-next-page (&optional arg)
+  "Browse ARG pages forward."
+  (interactive "p")
+  (doc-view-goto-page (+ doc-view-current-page (or arg 1))))
+
+(defun doc-view-previous-page (&optional arg)
+  "Browse ARG pages backward."
+  (interactive "p")
+  (doc-view-goto-page (- doc-view-current-page (or arg 1))))
+
+(defun doc-view-first-page ()
+  "View the first page."
+  (interactive)
+  (doc-view-goto-page 1))
+
+(defun doc-view-last-page ()
+  "View the last page."
+  (interactive)
+  (doc-view-goto-page (length doc-view-current-files)))
+
+(defun doc-view-scroll-up-or-next-page ()
+  "Scroll page up if possible, else goto next page."
+  (interactive)
+  (condition-case nil
+      (scroll-up)
+    (error (doc-view-next-page))))
+
+(defun doc-view-scroll-down-or-previous-page ()
+  "Scroll page down if possible, else goto previous page."
+  (interactive)
+  (condition-case nil
+      (scroll-down)
+    (error (doc-view-previous-page)
+          (goto-char (point-max)))))
+
+(defun doc-view-kill-proc-and-buffer ()
+  "Kill the current converter process and buffer."
+  (interactive)
+  (when (eq major-mode 'doc-view-mode)
+    (when doc-view-current-converter-process
+      (kill-process doc-view-current-converter-process))
+    (when doc-view-current-timer
+      (cancel-timer doc-view-current-timer)
+      (setq doc-view-current-timer nil))
+    (kill-buffer (current-buffer))))
+
+;;;; Conversion Functions
+
+(defun doc-view-file-name-to-directory-name (file)
+  "Return the directory where the png files of FILE should be saved.
+
+It'a a subdirectory of `doc-view-cache-directory'."
+  (if doc-view-current-cache-dir
+      doc-view-current-cache-dir
+    (file-name-as-directory
+     (concat (file-name-as-directory doc-view-cache-directory)
+            (with-temp-buffer
+              (insert-file-contents-literally file)
+              (md5 (current-buffer)))))))
+
+(defun doc-view-dvi->pdf-sentinel (proc event)
+  "If DVI->PDF conversion was successful, convert the PDF to PNG now."
+  (if (not (string-match "finished" event))
+      (message "DocView: dvi->pdf process changed status to %s." event)
+    (set-buffer (process-get proc 'buffer))
+    (setq doc-view-current-converter-process nil)
+    (message "DocView: finished conversion from DVI to PDF!")
+    ;; Now go on converting this PDF to a set of PNG files.
+    (let* ((pdf (process-get proc 'pdf-file))
+          (png (concat (doc-view-file-name-to-directory-name
+                        doc-view-current-doc)
+                       "page-%d.png")))
+      (doc-view-pdf/ps->png pdf png))))
+
+(defun doc-view-dvi->pdf (dvi pdf)
+  "Convert DVI to PDF asynchrounously."
+  (message "DocView: converting DVI to PDF now!")
+  (setq doc-view-current-converter-process
+       (start-process "doc-view-dvi->pdf" doc-view-conversion-buffer
+                      doc-view-dvipdfm-program
+                      "-o" pdf dvi))
+  (set-process-sentinel doc-view-current-converter-process
+                       'doc-view-dvi->pdf-sentinel)
+  (process-put doc-view-current-converter-process 'buffer   (current-buffer))
+  (process-put doc-view-current-converter-process 'pdf-file pdf))
+
+(defun doc-view-pdf/ps->png-sentinel (proc event)
+  "If PDF/PS->PNG conversion was successful, update the display."
+  (if (not (string-match "finished" event))
+      (message "DocView: converter process changed status to %s." event)
+    (set-buffer (process-get proc 'buffer))
+    (setq doc-view-current-converter-process nil)
+    (when doc-view-current-timer
+      (cancel-timer doc-view-current-timer)
+      (setq doc-view-current-timer nil))
+    (message "DocView: finished conversion from PDF/PS to PNG!")
+    ;; Yippie, finished.  Update the display!
+    (doc-view-display doc-view-current-doc)))
+
+(defun doc-view-pdf/ps->png (pdf-ps png)
+  "Convert PDF-PS to PNG asynchrounously."
+  (message "DocView: converting PDF or PS to PNG now!")
+  (setq doc-view-current-converter-process
+       (apply 'start-process
+              (append (list "doc-view-pdf/ps->png" doc-view-conversion-buffer
+                            doc-view-ghostscript-program)
+                      doc-view-ghostscript-options
+                      (list (concat "-sOutputFile=" png))
+                      (list pdf-ps))))
+  (process-put doc-view-current-converter-process
+              'buffer (current-buffer))
+  (set-process-sentinel doc-view-current-converter-process
+                       'doc-view-pdf/ps->png-sentinel)
+  (when doc-view-conversion-refresh-interval
+    (setq doc-view-current-timer
+         (run-at-time "1 secs" doc-view-conversion-refresh-interval
+                      'doc-view-display
+                      doc-view-current-doc))))
+
+(defun doc-view-pdf->txt-sentinel (proc event)
+  (if (not (string-match "finished" event))
+      (message "DocView: converter process changed status to %s." event)
+    (let ((current-buffer (current-buffer))
+         (proc-buffer    (process-get proc 'buffer)))
+      (set-buffer proc-buffer)
+      (setq doc-view-current-converter-process nil)
+      (message "DocView: finished conversion from PDF to TXT!")
+      ;; If the user looks at the DocView buffer where the conversion was
+      ;; performed, search anew.  This time it will be queried for a regexp.
+      (when (eq current-buffer proc-buffer)
+       (doc-view-search)))))
+
+(defun doc-view-pdf->txt (pdf txt)
+  "Convert PDF to TXT asynchrounously."
+  (message "DocView: converting PDF to TXT now!")
+  (setq doc-view-current-converter-process
+       (start-process "doc-view-pdf->txt" doc-view-conversion-buffer
+                      doc-view-pdftotext-program "-raw"
+                      pdf txt))
+  (set-process-sentinel doc-view-current-converter-process
+                       'doc-view-pdf->txt-sentinel)
+  (process-put doc-view-current-converter-process 'buffer (current-buffer)))
+
+(defun doc-view-ps->pdf-sentinel (proc event)
+  (if (not (string-match "finished" event))
+      (message "DocView: converter process changed status to %s." event)
+    (set-buffer (process-get proc 'buffer))
+    (setq doc-view-current-converter-process nil)
+    (message "DocView: finished conversion from PS to PDF!")
+    ;; Now we can transform to plain text.
+    (doc-view-pdf->txt (process-get proc 'pdf-file)
+                      (concat (doc-view-file-name-to-directory-name
+                               doc-view-current-doc)
+                              "doc.txt"))))
+
+(defun doc-view-ps->pdf (ps pdf)
+  "Convert PS to PDF asynchronously."
+  (message "DocView: converting PS to PDF now!")
+  (setq doc-view-current-converter-process
+       (start-process "doc-view-ps->pdf" doc-view-conversion-buffer
+                      doc-view-ps2pdf-program
+                      ps pdf))
+  (set-process-sentinel doc-view-current-converter-process
+                       'doc-view-ps->pdf-sentinel)
+  (process-put doc-view-current-converter-process 'buffer   (current-buffer))
+  (process-put doc-view-current-converter-process 'pdf-file pdf))
+
+(defun doc-view-convert-doc (doc)
+  "Convert DOC to a set of png files, one file per page.
+
+Those files are saved in the directory given by
+`doc-view-file-name-to-directory-name'."
+  (clear-image-cache)
+  (let* ((dir (doc-view-file-name-to-directory-name doc))
+        (png-file (concat (file-name-as-directory dir) "page-%d.png")))
+    (when (file-exists-p dir)
+      (dired-delete-file dir 'always))
+    (make-directory dir t)
+    (if (not (string= (file-name-extension doc) "dvi"))
+       ;; Convert to PNG images.
+       (doc-view-pdf/ps->png doc png-file)
+      ;; DVI files have to be converted to PDF before GhostScript can process
+      ;; it.
+      (doc-view-dvi->pdf doc
+                        (concat (file-name-as-directory dir)
+                                "doc.pdf")))))
+
+;;;; DocView Mode
+
+(define-derived-mode doc-view-mode nil "DocView"
+  "Major mode in DocView buffers.
+
+\\{doc-view-mode-map}"
+  :group 'doc-view
+  (setq buffer-read-only t)
+  (make-local-variable 'doc-view-current-files)
+  (make-local-variable 'doc-view-current-doc)
+  (make-local-variable 'doc-view-current-image)
+  (make-local-variable 'doc-view-current-page)
+  (make-local-variable 'doc-view-current-converter-process)
+  (make-local-variable 'doc-view-current-timer)
+  (make-local-variable 'doc-view-current-slice)
+  (make-local-variable 'doc-view-current-cache-dir)
+  (make-local-variable 'doc-view-current-info)
+  (make-local-variable 'doc-view-current-search-matches))
+
+;;;; Slicing
+
+(defun doc-view-set-slice (x y width height)
+  "Set the slice of the images that should be displayed.
+You can use this function to tell doc-view not to display the
+margins of the document.  It prompts for the top-left corner (X
+and Y) of the slice to display and its WIDTH and HEIGHT.
+
+See `doc-view-set-slice-using-mouse' for a more convenient way to
+do that.  To reset the slice use `doc-view-reset-slice'."
+  (interactive
+   (let* ((size (image-size doc-view-current-image t))
+         (a (read-number (format "Top-left X (0..%d): " (car size))))
+         (b (read-number (format "Top-left Y (0..%d): " (cdr size))))
+         (c (read-number (format "Width (0..%d): " (- (car size) a))))
+         (d (read-number (format "Height (0..%d): " (- (cdr size) b)))))
+     (list a b c d)))
+  (setq doc-view-current-slice (list x y width height))
+  ;; Redisplay
+  (doc-view-goto-page doc-view-current-page))
+
+(defun doc-view-set-slice-using-mouse ()
+  "Set the slice of the images that should be displayed.
+You set the slice by pressing mouse-1 at its top-left corner and
+dragging it to its bottom-right corner.  See also
+`doc-view-set-slice' and `doc-view-reset-slice'."
+  (interactive)
+  (let (x y w h done)
+    (while (not done)
+      (let ((e (read-event
+               (concat "Press mouse-1 at the top-left corner and "
+                       "drag it to the bottom-right corner!"))))
+       (when (eq (car e) 'drag-mouse-1)
+         (setq x (car (posn-object-x-y (event-start e))))
+         (setq y (cdr (posn-object-x-y (event-start e))))
+         (setq w (- (car (posn-object-x-y (event-end e))) x))
+         (setq h (- (cdr (posn-object-x-y (event-end e))) y))
+         (setq done t))))
+    (doc-view-set-slice x y w h)))
+
+(defun doc-view-reset-slice ()
+  "Reset the current slice.
+After calling this function the whole pages will be visible
+again."
+  (interactive)
+  (setq doc-view-current-slice nil)
+  ;; Redisplay
+  (doc-view-goto-page doc-view-current-page))
+
+;;;; Display
+
+(defun doc-view-insert-image (file &rest args)
+  "Insert the given png FILE.
+ARGS is a list of image descriptors."
+  (let ((image (apply 'create-image file 'png nil args)))
+    (setq doc-view-current-image image)
+    (insert-image image (concat "[" file "]") nil doc-view-current-slice)))
+
+(defun doc-view-sort (a b)
+  "Return non-nil if A should be sorted before B.
+Predicate for sorting `doc-view-current-files'."
+  (if (< (length a) (length b))
+      t
+    (if (> (length a) (length b))
+       nil
+      (string< a b))))
+
+(defun doc-view-display (doc)
+  "Start viewing the document DOC."
+  (let ((dir (doc-view-file-name-to-directory-name doc)))
+    (set-buffer (format "*DocView: %s*" doc))
+    (setq doc-view-current-files
+         (sort (directory-files dir t "page-[0-9]+\\.png" t)
+               'doc-view-sort))
+    (when (> (length doc-view-current-files) 0)
+      (doc-view-goto-page doc-view-current-page))))
+
+(defun doc-view-buffer-message ()
+  (setq inhibit-read-only t)
+  (erase-buffer)
+  (insert (propertize "Welcome to DocView!" 'face 'bold)
+         "\n"
+         "
+If you  see this buffer  it means that  the document you  want to
+view gets  converted to PNG now  and the conversion  of the first
+page           hasn't          finished           yet          or
+`doc-view-conversion-refresh-interval' is set to nil.
+
+For now these keys are useful:
+
+`q' : Bury this buffer.  Conversion will go on in background.
+`k' : Kill the conversion process and this buffer.\n")
+  (setq inhibit-read-only nil))
+
+(defun doc-view-show-tooltip ()
+  (interactive)
+  (tooltip-show doc-view-current-info))
+
+;;;; Searching
+
+(defun doc-view-search-internal (regexp file)
+  "Return a list of FILE's pages that contain text matching REGEXP.
+The value is an alist of the form (PAGE CONTEXTS) where PAGE is
+the pagenumber and CONTEXTS are all lines of text containing a match."
+  (with-temp-buffer
+    (insert-file-contents file)
+    (let ((page 1)
+         (lastpage 1)
+         matches)
+      (while (re-search-forward (concat "\\(?:\\([\f]\\)\\|\\("
+                                       regexp "\\)\\)") nil t)
+       (when (match-string 1) (incf page))
+       (when (match-string 2)
+         (if (/= page lastpage)
+             (setq matches (push (cons page
+                                       (list (buffer-substring
+                                              (line-beginning-position)
+                                              (line-end-position))))
+                                 matches))
+           (setq matches (cons
+                          (append
+                           (or
+                            ;; This page already is a match.
+                            (car matches)
+                            ;; This is the first match on page.
+                            (list page))
+                           (list (buffer-substring
+                                  (line-beginning-position)
+                                  (line-end-position))))
+                          (cdr matches))))
+         (setq lastpage page)))
+      (nreverse matches))))
+
+(defun doc-view-search-no-of-matches (list)
+  "Extract the number of matches from the search result LIST."
+  (let ((no 0))
+    (dolist (p list)
+      (setq no (+ no (1- (length p)))))
+    no))
+
+(defun doc-view-search ()
+  "Query for a regexp and search the current document.
+If the current document hasn't been transformed to plain text
+till now do that first.  You should try searching anew when the
+conversion finished."
+  (interactive)
+  ;; New search, so forget the old results.
+  (setq doc-view-current-search-matches nil)
+  (let ((txt (concat (doc-view-file-name-to-directory-name
+                     doc-view-current-doc)
+                    "doc.txt")))
+    (if (file-readable-p txt)
+       (progn
+         (setq doc-view-current-search-matches
+               (doc-view-search-internal
+                (read-from-minibuffer "Regexp: ")
+                txt))
+         (message "DocView: search yielded %d matches."
+                  (doc-view-search-no-of-matches
+                   doc-view-current-search-matches)))
+      ;; We must convert to TXT first!
+      (if doc-view-current-converter-process
+         (message "DocView: please wait till conversion finished.")
+       (let ((ext (file-name-extension doc-view-current-doc)))
+         (cond
+          ((string= ext "pdf")
+           ;; Doc is a PDF, so convert it to TXT
+           (doc-view-pdf->txt doc-view-current-doc txt))
+          ((string= ext "ps")
+           ;; Doc is a PS, so convert it to PDF (which will be converted to
+           ;; TXT thereafter).
+           (doc-view-ps->pdf doc-view-current-doc
+                             (concat (doc-view-file-name-to-directory-name
+                                      doc-view-current-doc)
+                                     "doc.pdf")))
+          ((string= ext "dvi")
+           ;; Doc is a DVI.  This means that a doc.pdf already exists in its
+           ;; cache subdirectory.
+           (doc-view-pdf->txt (concat (doc-view-file-name-to-directory-name
+                                       doc-view-current-doc)
+                                      "doc.pdf")
+                              txt))
+          (t (error "DocView doesn't know what to do"))))))))
+
+(defun doc-view-search-next-match (arg)
+  "Go to the ARGth next matching page."
+  (interactive "p")
+  (let* ((next-pages (remove-if (lambda (i) (<= (car i) doc-view-current-page))
+                               doc-view-current-search-matches))
+        (page (car (nth (1- arg) next-pages))))
+    (if page
+       (doc-view-goto-page page)
+      (when (and
+            doc-view-current-search-matches
+            (y-or-n-p "No more matches after current page.  Wrap to first match? "))
+       (doc-view-goto-page (caar doc-view-current-search-matches))))))
+
+(defun doc-view-search-previous-match (arg)
+  "Go to the ARGth previous matching page."
+  (interactive "p")
+  (let* ((prev-pages (remove-if (lambda (i) (>= (car i) doc-view-current-page))
+                               doc-view-current-search-matches))
+        (page (car (nth (1- arg) (nreverse prev-pages)))))
+    (if page
+       (doc-view-goto-page page)
+      (when (and
+            doc-view-current-search-matches
+            (y-or-n-p "No more matches before current page.  Wrap to last match? "))
+       (doc-view-goto-page (caar (last doc-view-current-search-matches)))))))
+
+;;;; User Interface Commands
+
+;;;###autoload
+(defun doc-view (no-cache &optional file)
+  "Convert FILE to png and start viewing it.
+If no FILE is given, query for on.
+If this FILE is still in the cache, don't convert and use the
+existing page files.  With prefix arg NO-CACHE, don't use the
+cached files and convert anew."
+  (interactive "P")
+  (if (not (and (image-type-available-p 'png)
+               (display-images-p)))
+      (message "DocView: your emacs or display doesn't support png images.")
+    (let* ((doc (or file
+                   (expand-file-name
+                    (let ((completion-ignored-extensions
+                           ;; Don't hide files doc-view can display
+                           (remove-if (lambda (str)
+                                        (string-match "\\.\\(ps\\|pdf\\|dvi\\)$"
+                                                      str))
+                                      completion-ignored-extensions)))
+                      (read-file-name "File: " nil nil t)))))
+          (buffer (get-buffer-create (format "*DocView: %s*" doc)))
+          (dir (doc-view-file-name-to-directory-name doc)))
+      (switch-to-buffer buffer)
+      (doc-view-buffer-message)
+      (doc-view-mode)
+      (setq doc-view-current-doc doc)
+      (setq doc-view-current-page 1)
+      (if (not (and (file-exists-p dir)
+                   (not no-cache)))
+         (progn
+           (setq doc-view-current-cache-dir nil)
+           (doc-view-convert-doc doc-view-current-doc))
+       (message "DocView: using cached files!")
+       (doc-view-display doc-view-current-doc)))))
+
+(defun doc-view-dired (no-cache)
+  "View the current dired file with doc-view.
+NO-CACHE is the same as in `doc-view'.
+
+You might want to bind this command to a dired key, e.g.
+
+    (define-key dired-mode-map (kbd \"C-c d\") 'doc-view-dired)"
+  (interactive "P")
+  (doc-view no-cache (dired-get-file-for-visit)))
+
+(defun doc-view-clear-cache ()
+  "Delete the whole cache (`doc-view-cache-directory')."
+  (interactive)
+  (dired-delete-file doc-view-cache-directory 'always)
+  (make-directory doc-view-cache-directory))
+
+(defun doc-view-dired-cache ()
+  "Open `dired' in `doc-view-cache-directory'."
+  (interactive)
+  (dired doc-view-cache-directory))
+
+(provide 'doc-view)
+
+;; Local Variables:
+;; mode: outline-minor
+;; End:
+
+;; arch-tag: 5d6e5c5e-095f-489e-b4e4-1ca90a7d79be
+;;; doc-view.el ends here
index 0b5cf110fbd64f17b1ead07b7737cdbb607e72a9..39a55744a055ccba0a8fcd7cab1dea8687365183 100644 (file)
@@ -145,11 +145,12 @@ but not `C-u X' or `ESC X' since the X is not the prefix key."
   (if enable-flag
       (progn
        ;; Set up key-translation-map as indicated by `double-map'.
+       ;; XXX I don't think key-translation-map should be made local here. -- Lorentey
        (kill-local-variable 'key-translation-map)
        (make-local-variable 'key-translation-map)
        (setq key-translation-map (if (keymapp key-translation-map)
-                                     (copy-keymap key-translation-map)
-                                   (make-sparse-keymap)))
+                                            (copy-keymap key-translation-map)
+                                          (make-sparse-keymap)))
        (mapcar (function (lambda (entry)
                            (define-key key-translation-map
                              (vector (nth 0 entry))
index 744a7ba461709aa5a754a34b65403f51e95c2d90..3b2b17fe188fd642c557d38b490af72bdcc0df7f 100644 (file)
@@ -175,7 +175,7 @@ Entry to this mode via command `electric-buffer-list' calls the value of
   (let ((map (make-keymap)))
     (fillarray (car (cdr map)) 'Electric-buffer-menu-undefined)
     (define-key map "\e" nil)
-    (define-key map "\C-z" 'suspend-emacs)
+    (define-key map "\C-z" 'suspend-frame)
     (define-key map "v" 'Electric-buffer-menu-mode-view-buffer)
     (define-key map (char-to-string help-char) 'Helper-help)
     (define-key map "?" 'Helper-describe-bindings)
index 8d5b5e2beea90bea4db322d5597743d5c9828008..7468dd0b7fdb8044190e7ed3ff28d9b665d79c83 100644 (file)
@@ -66,7 +66,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing."
   (define-key electric-history-map "\C-c" nil)
   (define-key electric-history-map "\C-c\C-c" 'Electric-history-quit)
   (define-key electric-history-map "\C-]" 'Electric-history-quit)
-  (define-key electric-history-map "\C-z" 'suspend-emacs)
+  (define-key electric-history-map "\C-z" 'suspend-frame)
   (define-key electric-history-map (char-to-string help-char) 'Helper-help)
   (define-key electric-history-map "?" 'Helper-describe-bindings)
   (define-key electric-history-map "\e>" 'end-of-buffer)
index ec153fde625f7383a5571a8087a1496e0151ad70..451f87e142de3dbaf0beb99810c32aaa6b551394 100644 (file)
@@ -138,7 +138,7 @@ Options `-c', `-u', and `-i' are not allowed. Case sensitivity can be
 toggled interactively using \\[ediff-toggle-ignore-case].
 
 This variable is not for customizing the look of the differences produced by
-the command \\[ediff-show-diff-output]. Use the variable 
+the command \\[ediff-show-diff-output]. Use the variable
 `ediff-custom-diff-options' for that."
   :set 'ediff-reset-diff-options
   :type 'string
@@ -348,20 +348,20 @@ one optional arguments, diff-number to refine.")
     ;; fixup diff-list
     (if diff3-job
        (cond ((not file-A)
-              (mapcar (lambda (elt)
-                        (aset elt 0 nil)
-                        (aset elt 1 nil))
-                      (cdr diff-list)))
+              (mapc (lambda (elt)
+                      (aset elt 0 nil)
+                      (aset elt 1 nil))
+                    (cdr diff-list)))
              ((not file-B)
-              (mapcar (lambda (elt)
-                        (aset elt 2 nil)
-                        (aset elt 3 nil))
-                      (cdr diff-list)))
+              (mapc (lambda (elt)
+                      (aset elt 2 nil)
+                      (aset elt 3 nil))
+                    (cdr diff-list)))
              ((not file-C)
-              (mapcar (lambda (elt)
-                        (aset elt 4 nil)
-                        (aset elt 5 nil))
-                      (cdr diff-list)))
+              (mapc (lambda (elt)
+                      (aset elt 4 nil)
+                      (aset elt 5 nil))
+                    (cdr diff-list)))
          ))
 
     (ediff-convert-fine-diffs-to-overlays diff-list reg-num)
@@ -1533,7 +1533,7 @@ affects only files whose names match the expression."
 
 (defun ediff-set-actual-diff-options ()
   (if ediff-ignore-case
-      (setq ediff-actual-diff-options 
+      (setq ediff-actual-diff-options
            (concat ediff-diff-options " " ediff-ignore-case-option)
            ediff-actual-diff3-options
            (concat ediff-diff3-options " " ediff-ignore-case-option3))
index ea9d1b214be1f1d34a28ea8ab539f647147fff92..21e6bf660ee11718dec344c8d8f806a58ef5b7cc 100644 (file)
@@ -102,7 +102,7 @@ that Ediff doesn't know about.")
        (boundp 'ediff-use-toolbar-p)
        ediff-use-toolbar-p))           ;Does the user want it ?
 
-;; Defines SYMBOL as an advertised local variable.
+;; Defines VAR as an advertised local variable.
 ;; Performs a defvar, then executes `make-variable-buffer-local' on
 ;; the variable.  Also sets the `permanent-local' property,
 ;; so that `kill-all-local-variables' (called by major-mode setting
@@ -110,6 +110,8 @@ that Ediff doesn't know about.")
 ;;
 ;; Plagiarised from `emerge-defvar-local' for XEmacs.
 (defmacro ediff-defvar-local (var value doc)
+  "Defines VAR as a local variable."
+  (declare (indent defun))
   `(progn
      (defvar ,var ,value ,doc)
      (make-variable-buffer-local ',var)
@@ -258,6 +260,8 @@ It needs to be killed when we quit the session.")
 ;; Doesn't save the point and mark.
 ;; This is `with-current-buffer' with the added test for live buffers."
 (defmacro ediff-with-current-buffer (buffer &rest body)
+  "Evaluates BODY in BUFFER."
+  (declare (indent 1) (debug (form body)))
   `(if (ediff-buffer-live-p ,buffer)
        (save-current-buffer
         (set-buffer ,buffer)
@@ -1873,11 +1877,11 @@ Unless optional argument INPLACE is non-nil, return a new string."
 
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
-;;; arch-tag: fa31d384-1e70-4d4b-82a7-3e96307c46f5
+;; arch-tag: fa31d384-1e70-4d4b-82a7-3e96307c46f5
 ;;; ediff-init.el ends here
index 5b8b8d8ec44ac09bcef76678b49a17a48b043a79..3696d8ae7760a7246fb90ba10c04834f7a314921 100644 (file)
 ;; the registry buffer
 (defvar ediff-registry-buffer nil)
 
-(defconst ediff-meta-buffer-message "This is an Ediff Session Group Panel: %s
+(defconst ediff-meta-buffer-brief-message "Ediff Session Group Panel: %s
 
-Useful commands:
+     Type ? to show useful commands in this buffer
+
+")
+
+(defconst ediff-meta-buffer-verbose-message "Ediff Session Group Panel: %s
+
+Useful commands (type ? to hide them and free up screen):
      button2, v, or RET over session record:   start that Ediff session
      M:\tin sessions invoked from here, brings back this group panel
      R:\tdisplay the registry of active Ediff sessions
@@ -360,10 +366,24 @@ buffers."
        (if (stringp (ediff-get-session-objC-name session-info))
           (file-directory-p (ediff-get-session-objC-name session-info)) t)))
 
+
+(ediff-defvar-local ediff-verbose-help-enabled nil
+  "If t, display redundant help in ediff-directories and other meta buffers.
+Toggled by ediff-toggle-verbose-help-meta-buffer" )
+
+;; Toggle verbose help in meta-buffers
+;; TODO: Someone who understands all this can make it better.
+(defun ediff-toggle-verbose-help-meta-buffer ()
+  "Toggle showing tediously verbose help in meta buffers."
+  (interactive)
+  (setq ediff-verbose-help-enabled (not ediff-verbose-help-enabled))
+  (ediff-update-meta-buffer (current-buffer) 'must-redraw))
+
 ;; set up the keymap in the meta buffer
 (defun ediff-setup-meta-map ()
   (setq ediff-meta-buffer-map (make-sparse-keymap))
   (suppress-keymap ediff-meta-buffer-map)
+  (define-key ediff-meta-buffer-map "?" 'ediff-toggle-verbose-help-meta-buffer)
   (define-key ediff-meta-buffer-map "q" 'ediff-quit-meta-buffer)
   (define-key ediff-meta-buffer-map "T" 'ediff-toggle-filename-truncation)
   (define-key ediff-meta-buffer-map "R" 'ediff-show-registry)
@@ -621,15 +641,15 @@ behavior."
     ;; If file belongs to dir 1 only, the membership code is 2.
     ;; If it is in dir1 and dir3, then the membership code is 2*5=10;
     ;; if it is in dir1 and dir2, then the membership code is 2*3=6, etc.
-    (mapcar (lambda (elt)
-             (if (member (car elt) lis1)
-                 (setcdr elt (* (cdr elt) ediff-membership-code1)))
-             (if (member (car elt) lis2)
-                 (setcdr elt (* (cdr elt) ediff-membership-code2)))
-             (if (member (car elt) lis3)
-                 (setcdr elt (* (cdr elt) ediff-membership-code3)))
-             )
-           difflist)
+    (mapc (lambda (elt)
+           (if (member (car elt) lis1)
+               (setcdr elt (* (cdr elt) ediff-membership-code1)))
+           (if (member (car elt) lis2)
+               (setcdr elt (* (cdr elt) ediff-membership-code2)))
+           (if (member (car elt) lis3)
+               (setcdr elt (* (cdr elt) ediff-membership-code3)))
+           )
+         difflist)
     (setq difflist (cons
                    ;; diff metalist header
                    (ediff-make-new-meta-list-header regexp
@@ -921,30 +941,34 @@ behavior."
       ;; was redrawn
       (ediff-cond-compile-for-xemacs-or-emacs
        (map-extents 'delete-extent)   ; xemacs
-       (mapcar 'delete-overlay (overlays-in 1 1))  ; emacs
+       (mapc 'delete-overlay (overlays-in 1 1))  ; emacs
        )
 
-      (insert (format ediff-meta-buffer-message
-                     (ediff-abbrev-jobname ediff-metajob-name)))
-
       (setq regexp (ediff-get-group-regexp meta-list)
            merge-autostore-dir
            (ediff-get-group-merge-autostore-dir meta-list))
 
-      (cond ((ediff-collect-diffs-metajob)
-            (insert
-             "     P:\tcollect custom diffs of all marked sessions\n"))
-           ((ediff-patch-metajob)
-            (insert
-             "     P:\tshow patch appropriately for the context (session or group)\n")))
-      (insert
-       "     ^:\tshow parent session group\n")
-      (or (ediff-one-filegroup-metajob)
-         (insert
-          "     D:\tshow differences among directories\n"
-          "    ==:\tfor each session, show which files are identical\n"
-          "    =h:\tlike ==, but also marks those sessions for hiding\n"
-          "    =m:\tlike ==, but also marks those sessions for operation\n\n"))
+      (if ediff-verbose-help-enabled
+         (progn
+           (insert (format ediff-meta-buffer-verbose-message
+                           (ediff-abbrev-jobname ediff-metajob-name)))
+
+           (cond ((ediff-collect-diffs-metajob)
+                  (insert
+                   "     P:\tcollect custom diffs of all marked sessions\n"))
+                 ((ediff-patch-metajob)
+                  (insert
+                   "     P:\tshow patch appropriately for the context (session or group)\n")))
+           (insert
+            "     ^:\tshow parent session group\n")
+           (or (ediff-one-filegroup-metajob)
+               (insert
+                "     D:\tshow differences among directories\n"
+                "    ==:\tfor each session, show which files are identical\n"
+                "    =h:\tlike ==, but also marks sessions for hiding\n"
+                "    =m:\tlike ==, but also marks sessions for operation\n\n")))
+       (insert (format ediff-meta-buffer-brief-message
+                       (ediff-abbrev-jobname ediff-metajob-name))))
 
       (insert "\n")
       (if (and (stringp regexp) (> (length regexp) 0))
@@ -1305,7 +1329,7 @@ Useful commands:
 
     ;; copy file to directories where it doesn't exist, update
     ;; ediff-dir-difference-list and redisplay
-    (mapcar
+    (mapc
      (lambda (otherfile-struct)
        (let ((otherfile (car otherfile-struct))
             (file-mem-code (cdr otherfile-struct)))
@@ -1366,7 +1390,7 @@ Useful commands:
       ;; was redrawn
       (ediff-cond-compile-for-xemacs-or-emacs
        (map-extents 'delete-extent) ; xemacs
-       (mapcar 'delete-overlay (overlays-in 1 1)) ; emacs
+       (mapc 'delete-overlay (overlays-in 1 1)) ; emacs
        )
 
       (insert "This is a registry of all active Ediff sessions.
@@ -1386,11 +1410,11 @@ Useful commands:
 
 ")
       ;; purge registry list from dead buffers
-      (mapcar (lambda (elt)
-               (if (not (ediff-buffer-live-p elt))
-                   (setq ediff-session-registry
-                         (delq elt ediff-session-registry))))
-             ediff-session-registry)
+      (mapc (lambda (elt)
+             (if (not (ediff-buffer-live-p elt))
+                 (setq ediff-session-registry
+                       (delq elt ediff-session-registry))))
+           ediff-session-registry)
 
       (if (null ediff-session-registry)
          (insert "       ******* No active Ediff sessions *******\n"))
index 89d08932b58b4f874699960caa1f43bca19038b2..2efa2ac3012f05dbc5c12ea07bf9b560a136c3fc 100644 (file)
@@ -134,11 +134,13 @@ patch.  So, don't change these variables, unless the default doesn't work."
   :type '(choice (const nil) string)
   :group 'ediff-ptch)
 
+;; This context diff does not recognize spaces inside files, but removing ' '
+;; from [^ \t] breaks normal patches for some reason
 (defcustom ediff-context-diff-label-regexp
   (concat "\\("        ; context diff 2-liner
-         "^\\*\\*\\* \\([^ \t]+\\)[^*]+[\t ]*\n--- \\([^ \t]+\\)"
+         "^\\*\\*\\* +\\([^ \t]+\\)[^*]+[\t ]*\n--- +\\([^ \t]+\\)"
          "\\|"         ; GNU unified format diff 2-liner
-         "^--- \\([^ \t]+\\)[\t ]+.*\n\\+\\+\\+ \\([^ \t]+\\)"
+         "^--- +\\([^ \t]+\\)[\t ]+.*\n\\+\\+\\+ +\\([^ \t]+\\)"
          "\\)")
   "*Regexp matching filename 2-liners at the start of each context diff.
 You probably don't want to change that, unless you are using an obscure patch
@@ -231,7 +233,7 @@ program."
            ;; possible-file-names is holding the new file names until we
            ;; insert the old file name in the patch map
            ;; It is a pair
-           ;;     (filename-from-1st-header-line . fn from 2nd line)
+           ;;     (filename-from-1st-header-line . filename-from-2nd-line)
            (setq possible-file-names
                  (cons (if (and beg1 end1)
                            (buffer-substring beg1 end1)
@@ -290,42 +292,43 @@ program."
        )
 
     ;; chop off base-dirs
-    (mapcar (lambda (session-info)
-             (let* ((proposed-file-names
-                     ;; Filename-spec is objA; it is represented as
-                     ;; (file1 . file2). Get it using ediff-get-session-objA.
-                     (ediff-get-session-objA-name session-info))
-                    ;; base-dir1 is  the dir part of the 1st file in the patch
-                    (base-dir1
-                     (or (file-name-directory (car proposed-file-names))
-                         ""))
-                    ;; directory part of the 2nd file in the patch
-                    (base-dir2
-                     (or (file-name-directory (cdr proposed-file-names))
-                         ""))
-                    )
-               ;; If both base-dir1 and base-dir2 are relative and exist,
-               ;; assume that
-               ;; these dirs lead to the actual files starting at the present
-               ;; directory. So, we don't strip these relative dirs from the
-               ;; file names. This is a heuristic intended to improve guessing
+    (mapc (lambda (session-info)
+           (let* ((proposed-file-names
+                   ;; Filename-spec is objA; it is represented as
+                   ;; (file1 . file2). Get it using ediff-get-session-objA.
+                   (ediff-get-session-objA-name session-info))
+                  ;; base-dir1 is  the dir part of the 1st file in the patch
+                  (base-dir1
+                   (or (file-name-directory (car proposed-file-names))
+                       ""))
+                  ;; directory part of the 2nd file in the patch
+                  (base-dir2
+                   (or (file-name-directory (cdr proposed-file-names))
+                       ""))
+                  )
+             ;; If both base-dir1 and base-dir2 are relative and exist,
+             ;; assume that
+             ;; these dirs lead to the actual files starting at the present
+             ;; directory. So, we don't strip these relative dirs from the
+             ;; file names. This is a heuristic intended to improve guessing
+             (let ((default-directory (file-name-directory filename)))
                (unless (or (file-name-absolute-p base-dir1)
                            (file-name-absolute-p base-dir2)
                            (not (file-exists-p base-dir1))
                            (not (file-exists-p base-dir2)))
                  (setq base-dir1 ""
-                       base-dir2 ""))
-               (or (string= (car proposed-file-names) "/dev/null")
-                   (setcar proposed-file-names
-                           (ediff-file-name-sans-prefix
-                            (car proposed-file-names) base-dir1)))
-               (or (string=
-                    (cdr proposed-file-names) "/dev/null")
-                   (setcdr proposed-file-names
-                           (ediff-file-name-sans-prefix
-                            (cdr proposed-file-names) base-dir2)))
-               ))
-           ediff-patch-map)
+                       base-dir2 "")))
+             (or (string= (car proposed-file-names) "/dev/null")
+                 (setcar proposed-file-names
+                         (ediff-file-name-sans-prefix
+                          (car proposed-file-names) base-dir1)))
+             (or (string=
+                  (cdr proposed-file-names) "/dev/null")
+                 (setcdr proposed-file-names
+                         (ediff-file-name-sans-prefix
+                          (cdr proposed-file-names) base-dir2)))
+             ))
+         ediff-patch-map)
 
     ;; take the given file name into account
     (or (file-directory-p filename)
@@ -335,19 +338,19 @@ program."
                      (file-name-nondirectory filename))))
 
     ;; prepend actual-dir
-    (mapcar (lambda (session-info)
-             (let ((proposed-file-names
-                    (ediff-get-session-objA-name session-info)))
-               (if (and (string-match "^/null/" (car proposed-file-names))
-                        (string-match "^/null/" (cdr proposed-file-names)))
-                   ;; couldn't intuit the file name to patch, so
-                   ;; something is amiss
-                   (progn
-                     (with-output-to-temp-buffer ediff-msg-buffer
-                       (ediff-with-current-buffer standard-output
-                         (fundamental-mode))
-                       (princ
-                        (format "
+    (mapc (lambda (session-info)
+           (let ((proposed-file-names
+                  (ediff-get-session-objA-name session-info)))
+             (if (and (string-match "^/null/" (car proposed-file-names))
+                      (string-match "^/null/" (cdr proposed-file-names)))
+                 ;; couldn't intuit the file name to patch, so
+                 ;; something is amiss
+                 (progn
+                   (with-output-to-temp-buffer ediff-msg-buffer
+                     (ediff-with-current-buffer standard-output
+                       (fundamental-mode))
+                     (princ
+                      (format "
 The patch file contains a context diff for
        %s
        %s
@@ -358,31 +361,31 @@ please enter it now.
 If you don't know and still would like to apply patches to
 other files, enter /dev/null
 "
-                                (substring (car proposed-file-names) 6)
-                                (substring (cdr proposed-file-names) 6))))
-                     (let ((directory t)
-                           user-file)
-                       (while directory
-                         (setq user-file
-                               (read-file-name
-                                "Please enter file name: "
-                                actual-dir actual-dir t))
-                         (if (not (file-directory-p user-file))
-                             (setq directory nil)
-                           (setq directory t)
-                           (beep)
-                           (message "%s is a directory" user-file)
-                           (sit-for 2)))
-                       (setcar (ediff-get-session-objA session-info)
-                               (cons user-file user-file))))
-                 (setcar proposed-file-names
-                         (expand-file-name
-                          (concat actual-dir (car proposed-file-names))))
-                 (setcdr proposed-file-names
-                         (expand-file-name
-                          (concat actual-dir (cdr proposed-file-names)))))
-               ))
-           ediff-patch-map)
+                              (substring (car proposed-file-names) 6)
+                              (substring (cdr proposed-file-names) 6))))
+                   (let ((directory t)
+                         user-file)
+                     (while directory
+                       (setq user-file
+                             (read-file-name
+                              "Please enter file name: "
+                              actual-dir actual-dir t))
+                       (if (not (file-directory-p user-file))
+                           (setq directory nil)
+                         (setq directory t)
+                         (beep)
+                         (message "%s is a directory" user-file)
+                         (sit-for 2)))
+                     (setcar (ediff-get-session-objA session-info)
+                             (cons user-file user-file))))
+               (setcar proposed-file-names
+                       (expand-file-name
+                        (concat actual-dir (car proposed-file-names))))
+               (setcdr proposed-file-names
+                       (expand-file-name
+                        (concat actual-dir (cdr proposed-file-names)))))
+             ))
+         ediff-patch-map)
     ;; Check for the existing files in each pair and discard the nonexisting
     ;; ones. If both exist, ask the user.
     (mapcar (lambda (session-info)
index 1b1db4a60cf2f7bd8bb28b0de8d1685b310cd8fa..14b1be963d72722392c3de48910e4b0b792bdfc4 100644 (file)
@@ -122,7 +122,7 @@ Commands:
   ;; modified by minor modes and such. So, run-mode-hooks doesn't do anything
   ;; useful here on top of what run-hooks does.
   ;; Second, changing run-hooks to run-mode-hooks would require an
-  ;; if-statement, since XEmacs doesn't have this. 
+  ;; if-statement, since XEmacs doesn't have this.
   (run-hooks 'ediff-mode-hook))
 
 
@@ -1317,10 +1317,10 @@ which see."
   ;; change default
   (setq-default ediff-window-setup-function window-setup-func)
   ;; change in all active ediff sessions
-  (mapcar (lambda(buf) (ediff-with-current-buffer buf
-                        (setq ediff-window-setup-function window-setup-func
-                              ediff-window-B nil)))
-         ediff-session-registry)
+  (mapc (lambda(buf) (ediff-with-current-buffer buf
+                      (setq ediff-window-setup-function window-setup-func
+                            ediff-window-B nil)))
+       ediff-session-registry)
   (if (ediff-in-control-buffer-p)
       (ediff-recenter 'no-rehighlight))))
 
@@ -1341,12 +1341,12 @@ To change the default, set the variable `ediff-use-toolbar-p', which see."
        ;; do this only after killing the toolbar
        (setq ediff-use-toolbar-p (not ediff-use-toolbar-p))
 
-       (mapcar (lambda(buf)
-                 (ediff-with-current-buffer buf
-                   ;; force redisplay
-                   (setq ediff-window-config-saved "")
-                   ))
-               ediff-session-registry)
+       (mapc (lambda(buf)
+               (ediff-with-current-buffer buf
+                 ;; force redisplay
+                 (setq ediff-window-config-saved "")
+                 ))
+             ediff-session-registry)
        (if (ediff-in-control-buffer-p)
            (ediff-recenter 'no-rehighlight)))))
 
@@ -2439,14 +2439,14 @@ temporarily reverses the meaning of this variable."
 
   ;; Apply selective display to narrow or widen
   (ediff-visible-region)
-  (mapcar (lambda (overl)
-           (if (ediff-overlayp overl)
-               (ediff-delete-overlay overl)))
-         ediff-wide-bounds)
-  (mapcar (lambda (overl)
-           (if (ediff-overlayp overl)
-               (ediff-delete-overlay overl)))
-         ediff-narrow-bounds)
+  (mapc (lambda (overl)
+         (if (ediff-overlayp overl)
+             (ediff-delete-overlay overl)))
+       ediff-wide-bounds)
+  (mapc (lambda (overl)
+         (if (ediff-overlayp overl)
+             (ediff-delete-overlay overl)))
+       ediff-narrow-bounds)
 
   ;; restore buffer mode line id's in buffer-A/B/C
   (let ((control-buffer ediff-control-buffer)
@@ -3164,7 +3164,11 @@ Hit \\[ediff-recenter] to reset the windows afterward."
 (defun ediff-make-temp-file (buff &optional prefix given-file start end)
   (let* ((p (ediff-convert-standard-filename (or prefix "ediff")))
         (short-p p)
-        (coding-system-for-write ediff-coding-system-for-write)
+        (coding-system-for-write
+         (ediff-with-current-buffer buff
+           (if (boundp 'buffer-file-coding-system)
+               buffer-file-coding-system
+             ediff-coding-system-for-write)))
         f short-f)
     (if (and (fboundp 'msdos-long-file-names)
             (not (msdos-long-file-names))
@@ -3743,13 +3747,13 @@ Ediff Control Panel to restore highlighting."
 ;; VEC is either a difference vector or a fine-diff vector
 (defun ediff-clear-diff-vector (vec-var &optional fine-diffs-also)
   (if (vectorp (symbol-value vec-var))
-      (mapcar (lambda (elt)
-               (ediff-delete-overlay
-                (ediff-get-diff-overlay-from-diff-record elt))
-               (if fine-diffs-also
-                   (ediff-clear-fine-diff-vector elt))
-               )
-             (symbol-value vec-var)))
+      (mapc (lambda (elt)
+             (ediff-delete-overlay
+              (ediff-get-diff-overlay-from-diff-record elt))
+             (if fine-diffs-also
+                 (ediff-clear-fine-diff-vector elt))
+             )
+           (symbol-value vec-var)))
   ;; allow them to be garbage collected
   (set vec-var nil))
 
@@ -4315,11 +4319,11 @@ Mail anyway? (y or n) ")
 (provide 'ediff-util)
 
 
-;;; Local Variables:
-;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
-;;; End:
+;; Local Variables:
+;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
+;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
+;; End:
 
-;;; arch-tag: f51099b6-ef4b-470f-88a1-3a0e0b03a879
+;; arch-tag: f51099b6-ef4b-470f-88a1-3a0e0b03a879
 ;;; ediff-util.el ends here
index d0a323980c228cd95f68bba5eb0a26c25182f72e..8480984b95cd17c27fb2e190b978ded280177430 100644 (file)
@@ -84,12 +84,12 @@ comparison or merge operations are being performed."
        (setq rev1 (ediff-vc-latest-version (buffer-file-name))))
     (save-window-excursion
       (save-excursion
-       (vc-version-other-window rev1)
+       (vc-revision-other-window rev1)
        (setq rev1buf (current-buffer)
              file1 (buffer-file-name)))
       (save-excursion
        (or (string= rev2 "")           ; use current buffer
-           (vc-version-other-window rev2))
+           (vc-revision-other-window rev2))
        (setq rev2buf (current-buffer)
              file2 (buffer-file-name)))
       (setq startup-hooks
@@ -191,17 +191,17 @@ comparison or merge operations are being performed."
   (let (buf1 buf2 ancestor-buf)
     (save-window-excursion
       (save-excursion
-       (vc-version-other-window rev1)
+       (vc-revision-other-window rev1)
        (setq buf1 (current-buffer)))
       (save-excursion
        (or (string= rev2 "")
-           (vc-version-other-window rev2))
+           (vc-revision-other-window rev2))
        (setq buf2 (current-buffer)))
       (if ancestor-rev
          (save-excursion
            (if (string= ancestor-rev "")
-               (setq ancestor-rev (vc-workfile-version buffer-file-name)))
-           (vc-version-other-window ancestor-rev)
+               (setq ancestor-rev (vc-working-revision buffer-file-name)))
+           (vc-revision-other-window ancestor-rev)
            (setq ancestor-buf (current-buffer))))
       (setq startup-hooks
            (cons
index 897845c182aa44c65dc9fd6b81abf64ecae3ef60..c2c130ac6bbe1f3e6c6c24454b9b164e6629b33f 100644 (file)
   :group 'frames)
 
 
-(defcustom ediff-window-setup-function (if (ediff-window-display-p)
-                                       'ediff-setup-windows-multiframe
-                                     'ediff-setup-windows-plain)
+(defcustom ediff-window-setup-function 'ediff-setup-windows-automatic
   "*Function called to set up windows.
-Ediff provides a choice of two functions: `ediff-setup-windows-plain', for
-doing everything in one frame, and `ediff-setup-windows-multiframe',
-which sets the control panel in a separate frame.  Also, if the latter
-function detects that one of the buffers A/B is seen in some other frame,
-it will try to keep that buffer in that frame.
+Ediff provides a choice of three functions: `ediff-setup-windows-plain', for
+doing everything in one frame, `ediff-setup-windows-multiframe', which sets
+the control panel in a separate frame, and
+`ediff-setup-windows-automatic' (the default), which chooses an appropriate
+behaviour based on the current window system.  If the multiframe function
+detects that one of the buffers A/B is seen in some other frame, it will try
+to keep that buffer in that frame.
 
 If you don't like the two functions provided---write your own one.
 The basic guidelines:
@@ -94,7 +94,8 @@ The basic guidelines:
        Buffer C may not be used in jobs that compare only two buffers.
 If you plan to do something fancy, take a close look at how the two
 provided functions are written."
-  :type '(choice (const :tag "Multi Frame" ediff-setup-windows-multiframe)
+  :type '(choice (const :tag "Automatic" ediff-setup-windows-automatic)
+                (const :tag "Multi Frame" ediff-setup-windows-multiframe)
                 (const :tag "Single Frame" ediff-setup-windows-plain)
                 (function :tag "Other function"))
   :group 'ediff-window)
@@ -335,6 +336,12 @@ into icons, regardless of the window manager."
        buffer-A buffer-B buffer-C control-buffer))
   (run-hooks 'ediff-after-setup-windows-hook))
 
+;; Set up windows using the correct method based on the current window system.
+(defun ediff-setup-windows-automatic (buffer-A buffer-B buffer-C control-buffer)
+  (if (ediff-window-display-p)
+      (ediff-setup-windows-multiframe buffer-A buffer-B buffer-C control-buffer)
+    (ediff-setup-windows-plain buffer-A buffer-B buffer-C control-buffer)))
+
 ;; Just set up 3 windows.
 ;; Usually used without windowing systems
 ;; With windowing, we want to use dedicated frames.
index 82a70e64b49234f3f8457074c90de8551d83c658..7475834fba657194a1df7473169136096b4cdb98 100644 (file)
@@ -7,8 +7,8 @@
 ;; Created: February 2, 1994
 ;; Keywords: comparing, merging, patching, tools, unix
 
-(defconst ediff-version "2.81.1" "The current version of Ediff")
-(defconst ediff-date "October 23, 2006" "Date of last update")
+(defconst ediff-version "2.81.2" "The current version of Ediff")
+(defconst ediff-date "August 18, 2007" "Date of last update")
 
 
 ;; This file is part of GNU Emacs.
index d914d409d055fdb2531bdefbc2882e60f1a735fc..abd08f4b0b9d8fa937ee4b9177c92a51b9949829 100644 (file)
@@ -430,10 +430,7 @@ doubt, use whitespace."
 
 (defun edmacro-format-keys (macro &optional verbose)
   (setq macro (edmacro-fix-menu-commands macro))
-  (let* ((maps (append (current-minor-mode-maps)
-                      (if (current-local-map)
-                          (list (current-local-map)))
-                      (list (current-global-map))))
+  (let* ((maps (current-active-maps))
         (pkeys '(end-macro ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?- ?\C-u
                  ?\M-- ?\M-0 ?\M-1 ?\M-2 ?\M-3 ?\M-4 ?\M-5 ?\M-6
                  ?\M-7 ?\M-8 ?\M-9))
@@ -489,9 +486,9 @@ doubt, use whitespace."
             (fkey nil) tlen tkey
             (bind (or (loop for map in maps for b = (lookup-key map key)
                             thereis (and (not (integerp b)) b))
-                      (and (setq fkey (lookup-key function-key-map rest-mac))
+                      (and (setq fkey (lookup-key local-function-key-map rest-mac))
                            (setq tlen fkey tkey (edmacro-subseq rest-mac 0 tlen)
-                                 fkey (lookup-key function-key-map tkey))
+                                 fkey (lookup-key local-function-key-map tkey))
                            (loop for map in maps
                                  for b = (lookup-key map fkey)
                                  when (and (not (integerp b)) b)
index ed97c8786d48064610a2bf58a0366a2f2891456f..cabd0dd391ea9b61330ea3816ef6bc81962d2c3e 100644 (file)
@@ -2467,27 +2467,11 @@ will clear the cache."
   "Take a macro function DEFINITION and make a lambda out of it."
   `(cdr ,definition))
 
-;; There is no way to determine whether some subr is a special form or not,
-;; hence we need this list (which is probably out of date):
-(defvar ad-special-forms
-  (let ((tem '(and catch cond condition-case defconst defmacro
-                  defun defvar function if interactive let let*
-                  or prog1 prog2 progn quote save-current-buffer
-                  save-excursion save-restriction save-window-excursion
-                  setq setq-default unwind-protect while
-                  with-output-to-temp-buffer)))
-    ;; track-mouse could be void in some configurations.
-    (if (fboundp 'track-mouse)
-       (push 'track-mouse tem))
-    (mapcar 'symbol-function tem)))
-
-(defmacro ad-special-form-p (definition)
-  ;;"non-nil if DEFINITION is a special form."
-  (list 'memq definition 'ad-special-forms))
-
-(defmacro ad-interactive-p (definition)
-  ;;"non-nil if DEFINITION can be called interactively."
-  (list 'commandp definition))
+(defun ad-special-form-p (definition)
+  "Non-nil iff DEFINITION is a special form."
+  (if (and (symbolp definition) (fboundp definition))
+      (setq definition (indirect-function definition)))
+  (and (subrp definition) (eq (cdr (subr-arity definition)) 'unevalled)))
 
 (defmacro ad-subr-p (definition)
   ;;"non-nil if DEFINITION is a subr."
@@ -2603,13 +2587,12 @@ that property, or otherwise use `(&rest ad-subr-args)'."
        docstring)))
 
 (defun ad-interactive-form (definition)
-  "Return the interactive form of DEFINITION."
-  (cond ((ad-compiled-p definition)
-        (and (commandp definition)
-             (list 'interactive (aref (ad-compiled-code definition) 5))))
-       ((or (ad-advice-p definition)
-            (ad-lambda-p definition))
-        (commandp (ad-lambda-expression definition)))))
+  "Return the interactive form of DEFINITION.
+Like `interactive-form', but also works on pieces of advice."
+  (interactive-form
+   (if (ad-advice-p definition)
+       (ad-lambda-expression definition)
+     definition)))
 
 (defun ad-body-forms (definition)
   "Return the list of body forms of DEFINITION."
@@ -2620,17 +2603,13 @@ that property, or otherwise use `(&rest ad-subr-args)'."
                    (if (ad-interactive-form definition) 1 0))
                 (cdr (cdr (ad-lambda-expression definition)))))))
 
-;; Matches the docstring of an advised definition.
-;; The first group of the regexp matches the function name:
-(defvar ad-advised-definition-docstring-regexp "^\\$ad-doc: \\(.+\\)\\$$")
-
 (defun ad-make-advised-definition-docstring (function)
   "Make an identifying docstring for the advised definition of FUNCTION.
 Put function name into the documentation string so we can infer
 the name of the advised function from the docstring.  This is needed
 to generate a proper advised docstring even if we are just given a
-definition (also see the defadvice for `documentation')."
-  (format "$ad-doc: %s$" (prin1-to-string function)))
+definition (see the code for `documentation')."
+  (propertize "Advice doc string" 'ad-advice-info function))
 
 (defun ad-advised-definition-p (definition)
   "Return non-nil if DEFINITION was generated from advice information."
@@ -2639,8 +2618,7 @@ definition (also see the defadvice for `documentation')."
          (ad-compiled-p definition))
       (let ((docstring (ad-docstring definition)))
        (and (stringp docstring)
-            (string-match
-             ad-advised-definition-docstring-regexp docstring)))))
+            (get-text-property 0 'ad-advice-info docstring)))))
 
 (defun ad-definition-type (definition)
   "Return symbol that describes the type of DEFINITION."
@@ -3013,7 +2991,9 @@ 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 (concat "This " origtype " is advised.") paragraphs))
+      (push (propertize (concat "This " origtype " is advised.")
+                       'face 'font-lock-warning-face)
+           paragraphs))
     (ad-dolist (class ad-advice-classes)
       (ad-dolist (advice (ad-get-enabled-advices function class))
        (setq advice-docstring
@@ -3063,7 +3043,7 @@ in any of these classes."
           (ad-has-redefining-advice function))
       (let* ((origdef (ad-real-orig-definition function))
             (origname (ad-get-advice-info-field function 'origname))
-            (orig-interactive-p (ad-interactive-p origdef))
+            (orig-interactive-p (commandp origdef))
             (orig-subr-p (ad-subr-p origdef))
             (orig-special-form-p (ad-special-form-p origdef))
             (orig-macro-p (ad-macro-p origdef))
@@ -3075,15 +3055,11 @@ in any of these classes."
             (interactive-form
              (cond (orig-macro-p nil)
                    (advised-interactive-form)
-                   ((ad-interactive-form origdef)
-                    (if (and (symbolp function) (get function 'elp-info))
-                        (interactive-form (aref (get function 'elp-info) 2))
-                      (ad-interactive-form origdef)))
-                   ;; Otherwise we must have a subr: make it interactive if
-                   ;; we have to and initialize required arguments in case
-                   ;; it is called interactively:
-                   (orig-interactive-p
-                    (interactive-form origdef))))
+                   ((interactive-form origdef)
+                    (interactive-form
+                      (if (and (symbolp function) (get function 'elp-info))
+                          (aref (get function 'elp-info) 2)
+                        origdef)))))
             (orig-form
              (cond ((or orig-special-form-p orig-macro-p)
                     ;; Special forms and macros will be advised into macros.
@@ -3306,8 +3282,8 @@ advised definition from scratch."
              t
            (ad-arglist original-definition function))
          (if (eq (ad-definition-type original-definition) 'function)
-             (equal (ad-interactive-form original-definition)
-                    (ad-interactive-form cached-definition))))))
+             (equal (interactive-form original-definition)
+                    (interactive-form cached-definition))))))
 
 (defun ad-get-cache-class-id (function class)
   "Return the part of FUNCTION's cache id that identifies CLASS."
@@ -3354,8 +3330,8 @@ advised definition from scratch."
                       (ad-arglist cached-definition))
                (setq code 'interactive-form-mismatch)
                (or (null (nth 5 cache-id))
-                   (equal (ad-interactive-form original-definition)
-                          (ad-interactive-form cached-definition)))
+                   (equal (interactive-form original-definition)
+                          (interactive-form cached-definition)))
                (setq code 'verified))))
     code))
 
@@ -3936,24 +3912,6 @@ undone on exit of this macro."
 ;; during bootstrapping.
 (ad-define-subr-args 'documentation '(function &optional raw))
 
-(defadvice documentation (after ad-advised-docstring first disable preact)
-  "Builds an advised docstring if FUNCTION is advised."
-  ;; Because we get the function name from the advised docstring
-  ;; this will work for function names as well as for definitions:
-  (if (and (stringp ad-return-value)
-          (string-match
-           ad-advised-definition-docstring-regexp ad-return-value))
-      (let ((function
-            (car (read-from-string
-                  ad-return-value (match-beginning 1) (match-end 1)))))
-       (cond ((ad-is-advised function)
-              (setq ad-return-value (ad-make-advised-docstring function))
-              ;; Handle optional `raw' argument:
-              (if (not (ad-get-arg 1))
-                  (setq ad-return-value
-                        (substitute-command-keys ad-return-value))))))))
-
-
 ;; @@ Starting, stopping and recovering from the advice package magic:
 ;; ===================================================================
 
@@ -3962,9 +3920,7 @@ undone on exit of this macro."
   (interactive)
   ;; Advising `ad-activate-internal' means death!!
   (ad-set-advice-info 'ad-activate-internal nil)
-  (ad-safe-fset 'ad-activate-internal 'ad-activate)
-  (ad-enable-advice 'documentation 'after 'ad-advised-docstring)
-  (ad-activate 'documentation 'compile))
+  (ad-safe-fset 'ad-activate-internal 'ad-activate))
 
 (defun ad-stop-advice ()
   "Stop the automatic advice handling magic.
@@ -3972,8 +3928,6 @@ You should only need this in case of Advice-related emergencies."
   (interactive)
   ;; Advising `ad-activate-internal' means death!!
   (ad-set-advice-info 'ad-activate-internal nil)
-  (ad-disable-advice 'documentation 'after 'ad-advised-docstring)
-  (ad-update 'documentation)
   (ad-safe-fset 'ad-activate-internal 'ad-activate-internal-off))
 
 (defun ad-recover-normality ()
index 0c08e74d70b437a95854b97e41093fb97ed21d8f..4b490621f51dee526e6134b85673496ce6a394cf 100644 (file)
@@ -72,7 +72,7 @@ files.")
     ("Geoff Voelker" "voelker")
     ("Gerd M\e,Av\e(Bllmann" "Gerd Moellmann")
     ("Hallvard B. Furuseth" "Hallvard B Furuseth")
-    ("Hrvoje Nik\e,B9\e(Bi\e,Bf\e(B" "Hrvoje Niksic")
+    ("Hrvoje Nik\e$,1!!\e(Bi\e$,1 '\e(B" "Hrvoje Niksic")
     (nil "(afs@hplb.hpl.hp.com)")
     (nil "<Use-Author-Address-Header@\\[127.1\\]>")
     (nil "Code Extracted")
@@ -81,7 +81,7 @@ files.")
     ("Jaeyoun Chung" "Jae-youn Chung" "Jae-you Chung" "Chung Jae-youn")
     ("Jan Dj\e,Ad\e(Brv" "Jan D." "Jan Djarv")
     ("Jay K. Adams" "jka@ece.cmu.edu" "Jay Adams")
-    ("J\e,Ai\e(Br\e,At\e(Bme Marant" "J\e,bi\e(Br\e,bt\e(Bme Marant" "Jerome Marant")
+    ("J\e,Ai\e(Br\e,At\e(Bme Marant" "J\e,Ai\e(Br\e,At\e(Bme Marant" "Jerome Marant")
     ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
     ("Jeremy Bertram Maitin-Shepard" "Jeremy Maitin-Shepard")
     ("Johan Bockg\e,Ae\e(Brd" "Johan Bockgard")
@@ -90,11 +90,11 @@ files.")
     ("Joseph Arceneaux" "Joe Arceneaux")
     ("Juan Le\e,As\e(Bn Lahoz Garc\e,Am\e(Ba" "Juan-Leon Lahoz Garcia")
     ("K. Shane Hartman" "Shane Hartman")
-    ("Kai Gro\e,A_\e(Bjohann" "Kai Grossjohann" "Kai Gro\e,b_\e(Bjohann"
+    ("Kai Gro\e,A_\e(Bjohann" "Kai Grossjohann" "Kai Gro\e,A_\e(Bjohann"
      "Kai.Grossjohann@Cs.Uni-Dortmund.De"
      "Kai.Grossjohann@Gmx.Net")
     ("Karl Berry" "K. Berry")
-    ("K\e,Aa\e(Broly L\e$,1 q\e(Brentey" "K\e,Aa\e(Broly L\e,Bu\e(Brentey" "L\e$,1 q\e(Brentey K\e,Aa\e(Broly")
+    ("K\e,Aa\e(Broly L\e$,1 q\e(Brentey" "K\e,Aa\e(Broly L\e$,1 q\e(Brentey" "L\e$,1 q\e(Brentey K\e,Aa\e(Broly")
     ("Kazushi Marukawa" "Kazushi")
     ("Ken Manheimer" "Kenneth Manheimer")
     ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA")
@@ -113,7 +113,7 @@ files.")
     ("Mikio Nakajima" "Nakajima Mikio")
     ("Paul Eggert" "eggert")
     ("Paul Reilly" "(pmr@legacy.pajato.com)")
-    ("Pavel Jan\e,Bm\e(Bk" "Pavel Jan\e,Am\e(Bk Ml." "Pavel Jan\e,Am\e(Bk" "Pavel@Janik.Cz")
+    ("Pavel Jan\e,Am\e(Bk" "Pavel Jan\e,Am\e(Bk Ml." "Pavel Jan\e,Am\e(Bk" "Pavel@Janik.Cz")
     ("Per Abrahamsen" "Per Abhiddenware")
     ("Peter S. Galbraith" "Peter Galbraith")
     ("Peter Runestig" "Peter 'luna' Runestig")
@@ -666,8 +666,8 @@ list of their contributions.\n")
          (erase-buffer)
          (set-buffer-file-coding-system authors-coding-system)
          (insert "Unrecognized file entries found:\n\n")
-         (mapcar (lambda (f) (if (not (string-match "^[A-Za-z]+$" f)) (insert f "\n")))
-                 (sort authors-invalid-file-names 'string-lessp))
+         (mapc (lambda (f) (if (not (string-match "^[A-Za-z]+$" f)) (insert f "\n")))
+               (sort authors-invalid-file-names 'string-lessp))
          (goto-char (point-min))
          (compilation-mode)
          (message "Errors were found.  See buffer %s" (buffer-name))))
index ee6c229b74fd38e51fef325dd676f59575668e92..14877e1b18f487d6b47e0cea825404aabce074d5 100644 (file)
 A `.el' file can set this in its local variables section to make its
 autoloads go somewhere else.  The autoload file is assumed to contain a
 trailer starting with a FormFeed character.")
+;;;###autoload
+(put 'generated-autoload-file 'safe-local-variable 'stringp)
 
-(defconst generate-autoload-cookie ";;;###autoload"
+;; This feels like it should be a defconst, but MH-E sets it to
+;; ";;;###mh-autoload" for the autoloads that are to go into mh-loaddefs.el.
+(defvar generate-autoload-cookie ";;;###autoload"
   "Magic comment indicating the following form should be autoloaded.
 Used by \\[update-file-autoloads].  This string should be
 meaningless to Lisp (e.g., a comment).
 
 This string is used:
 
-;;;###autoload
+\;;;###autoload
 \(defun function-to-be-autoloaded () ...)
 
 If this string appears alone on a line, the following form will be
@@ -65,6 +69,8 @@ that text will be copied verbatim to `generated-autoload-file'.")
 (defconst generate-autoload-section-continuation ";;;;;; "
   "String to add on each continuation of the section header form.")
 
+(defvar autoload-modified-buffers)      ;Dynamically scoped var.
+
 (defun make-autoload (form file)
   "Turn FORM into an autoload or defvar for source file FILE.
 Returns nil if FORM is not a special autoload form (i.e. a function definition
@@ -149,16 +155,14 @@ or macro definition or a defcustom)."
 ;; the doc-string in FORM.
 ;; Those properties are now set in lisp-mode.el.
 
+(defun autoload-generated-file ()
+  (expand-file-name generated-autoload-file
+                    ;; File-local settings of generated-autoload-file should
+                    ;; be interpreted relative to the file's location,
+                    ;; of course.
+                    (if (not (local-variable-p 'generated-autoload-file))
+                        (expand-file-name "lisp" source-directory))))
 
-(defun autoload-trim-file-name (file)
-  ;; Returns a relative file path for FILE
-  ;; starting from the directory that loaddefs.el is in.
-  ;; That is normally a directory in load-path,
-  ;; which means Emacs will be able to find FILE when it looks.
-  ;; Any extra directory names here would prevent finding the file.
-  (setq file (expand-file-name file))
-  (file-relative-name file
-                     (file-name-directory generated-autoload-file)))
 
 (defun autoload-read-section-header ()
   "Read a section header form.
@@ -205,6 +209,7 @@ put the output in."
            (setcdr p nil)
            (princ "\n(" outbuf)
            (let ((print-escape-newlines t)
+                  (print-quoted t)
                  (print-escape-nonascii t))
              (dolist (elt form)
                (prin1 elt outbuf)
@@ -228,6 +233,7 @@ put the output in."
                       outbuf))
              (terpri outbuf)))
        (let ((print-escape-newlines t)
+              (print-quoted t)
              (print-escape-nonascii t))
          (print form outbuf)))))))
 
@@ -253,9 +259,7 @@ put the output in."
   "Insert the section-header line,
 which lists the file name and which functions are in it, etc."
   (insert generate-autoload-section-header)
-  (prin1 (list 'autoloads autoloads load-name
-              (if (stringp file) (autoload-trim-file-name file) file)
-              time)
+  (prin1 (list 'autoloads autoloads load-name file time)
         outbuf)
   (terpri outbuf)
   ;; Break that line at spaces, to avoid very long lines.
@@ -272,12 +276,14 @@ which lists the file name and which functions are in it, etc."
 (defun autoload-find-file (file)
   "Fetch file and put it in a temp buffer.  Return the buffer."
   ;; It is faster to avoid visiting the file.
+  (setq file (expand-file-name file))
   (with-current-buffer (get-buffer-create " *autoload-file*")
     (kill-all-local-variables)
     (erase-buffer)
     (setq buffer-undo-list t
           buffer-read-only nil)
     (emacs-lisp-mode)
+    (setq default-directory (file-name-directory file))
     (insert-file-contents file nil)
     (let ((enable-local-variables :safe))
       (hack-local-variables))
@@ -286,6 +292,12 @@ which lists the file name and which functions are in it, etc."
 (defvar no-update-autoloads nil
   "File local variable to prevent scanning this file for autoload cookies.")
 
+(defun autoload-file-load-name (file)
+  (let ((name (file-name-nondirectory file)))
+    (if (string-match "\\.elc?\\(\\.\\|\\'\\)" name)
+        (substring name 0 (match-beginning 0))
+      name)))
+
 (defun generate-file-autoloads (file)
   "Insert at point a loaddefs autoload section for FILE.
 Autoloads are generated for defuns and defmacros in FILE
@@ -294,100 +306,155 @@ If FILE is being visited in a buffer, the contents of the buffer
 are used.
 Return non-nil in the case where no autoloads were added at point."
   (interactive "fGenerate autoloads for file: ")
-  (let ((outbuf (current-buffer))
-       (autoloads-done '())
-       (load-name (let ((name (file-name-nondirectory file)))
-                    (if (string-match "\\.elc?\\(\\.\\|$\\)" name)
-                        (substring name 0 (match-beginning 0))
-                      name)))
-       (print-length nil)
-       (print-readably t)              ; This does something in Lucid Emacs.
-       (float-output-format nil)
-       (done-any nil)
-       (visited (get-file-buffer file))
-        output-start)
-
-    ;; If the autoload section we create here uses an absolute
-    ;; file name for FILE in its header, and then Emacs is installed
-    ;; under a different path on another system,
-    ;; `update-autoloads-here' won't be able to find the files to be
-    ;; autoloaded.  So, if FILE is in the same directory or a
-    ;; subdirectory of the current buffer's directory, we'll make it
-    ;; relative to the current buffer's directory.
-    (setq file (expand-file-name file))
-    (let* ((source-truename (file-truename file))
-          (dir-truename (file-name-as-directory
-                         (file-truename default-directory)))
-          (len (length dir-truename)))
-      (if (and (< len (length source-truename))
-              (string= dir-truename (substring source-truename 0 len)))
-         (setq file (substring source-truename len))))
-
-    (with-current-buffer (or visited
-                             ;; It is faster to avoid visiting the file.
-                             (autoload-find-file file))
-      ;; Obey the no-update-autoloads file local variable.
-      (unless no-update-autoloads
-        (message "Generating autoloads for %s..." file)
-        (setq output-start (with-current-buffer outbuf (point)))
-        (save-excursion
-          (save-restriction
-            (widen)
-            (goto-char (point-min))
-            (while (not (eobp))
-              (skip-chars-forward " \t\n\f")
-              (cond
-               ((looking-at (regexp-quote generate-autoload-cookie))
-                (search-forward generate-autoload-cookie)
-                (skip-chars-forward " \t")
-                (setq done-any t)
-                (if (eolp)
-                    ;; Read the next form and make an autoload.
-                    (let* ((form (prog1 (read (current-buffer))
-                                   (or (bolp) (forward-line 1))))
-                           (autoload (make-autoload form load-name)))
-                      (if autoload
-                          (push (nth 1 form) autoloads-done)
-                        (setq autoload form))
-                      (let ((autoload-print-form-outbuf outbuf))
-                        (autoload-print-form autoload)))
-
-                  ;; Copy the rest of the line to the output.
-                  (princ (buffer-substring
-                          (progn
-                            ;; Back up over whitespace, to preserve it.
-                            (skip-chars-backward " \f\t")
-                            (if (= (char-after (1+ (point))) ? )
-                                ;; Eat one space.
-                                (forward-char 1))
-                            (point))
-                          (progn (forward-line 1) (point)))
-                         outbuf)))
-               ((looking-at ";")
-                ;; Don't read the comment.
-                (forward-line 1))
-               (t
-                (forward-sexp 1)
-                (forward-line 1))))))
-
-        (when done-any
-          (with-current-buffer outbuf
-            (save-excursion
-              ;; Insert the section-header line which lists the file name
-              ;; and which functions are in it, etc.
-              (goto-char output-start)
-              (autoload-insert-section-header
-               outbuf autoloads-done load-name file
-               (nth 5 (file-attributes file)))
-              (insert ";;; Generated autoloads from "
-                      (autoload-trim-file-name file) "\n"))
-            (insert generate-autoload-section-trailer)))
-        (message "Generating autoloads for %s...done" file))
-      (or visited
-          ;; We created this buffer, so we should kill it.
-          (kill-buffer (current-buffer))))
-    (not done-any)))
+  (autoload-generate-file-autoloads file (current-buffer)))
+
+;; When called from `generate-file-autoloads' we should ignore
+;; `generated-autoload-file' altogether.  When called from
+;; `update-file-autoloads' we don't know `outbuf'.  And when called from
+;; `update-directory-autoloads' it's in between: we know the default
+;; `outbuf' but we should obey any file-local setting of
+;; `generated-autoload-file'.
+(defun autoload-generate-file-autoloads (file &optional outbuf outfile)
+  "Insert an autoload section for FILE in the appropriate buffer.
+Autoloads are generated for defuns and defmacros in FILE
+marked by `generate-autoload-cookie' (which see).
+If FILE is being visited in a buffer, the contents of the buffer are used.
+OUTBUF is the buffer in which the autoload statements should be inserted.
+If OUTBUF is nil, it will be determined by `autoload-generated-file'.
+
+If provided, OUTFILE is expected to be the file name of OUTBUF.
+If OUTFILE is non-nil and FILE specifies a `generated-autoload-file'
+different from OUTFILE, then OUTBUF is ignored.
+
+Return non-nil iff FILE adds no autoloads to OUTFILE
+\(or OUTBUF if OUTFILE is nil)."
+  (catch 'done
+    (let ((autoloads-done '())
+          (load-name (autoload-file-load-name file))
+          (print-length nil)
+          (print-readably t)           ; This does something in Lucid Emacs.
+          (float-output-format nil)
+          (visited (get-file-buffer file))
+          (otherbuf nil)
+          (absfile (expand-file-name file))
+          relfile
+          ;; nil until we found a cookie.
+          output-start)
+
+      (with-current-buffer (or visited
+                               ;; It is faster to avoid visiting the file.
+                               (autoload-find-file file))
+        ;; Obey the no-update-autoloads file local variable.
+        (unless no-update-autoloads
+          (message "Generating autoloads for %s..." file)
+          (save-excursion
+            (save-restriction
+              (widen)
+              (goto-char (point-min))
+              (while (not (eobp))
+                (skip-chars-forward " \t\n\f")
+                (cond
+                 ((looking-at (regexp-quote generate-autoload-cookie))
+                  ;; If not done yet, figure out where to insert this text.
+                  (unless output-start
+                    (when (and outfile
+                               (not (equal outfile (autoload-generated-file))))
+                      ;; A file-local setting of autoload-generated-file says
+                      ;; we should ignore OUTBUF.
+                      (setq outbuf nil)
+                      (setq otherbuf t))
+                    (unless outbuf
+                      (setq outbuf (autoload-find-destination absfile))
+                      (unless outbuf
+                        ;; The file has autoload cookies, but they're
+                        ;; already up-to-date.  If OUTFILE is nil, the
+                        ;; entries are in the expected OUTBUF, otherwise
+                        ;; they're elsewhere.
+                        (throw 'done outfile)))
+                    (with-current-buffer outbuf
+                      (setq relfile (file-relative-name absfile))
+                      (setq output-start (point)))
+                    ;; (message "file=%S, relfile=%S, dest=%S"
+                    ;;          file relfile (autoload-generated-file))
+                    )
+                  (search-forward generate-autoload-cookie)
+                  (skip-chars-forward " \t")
+                  (if (eolp)
+                      (condition-case err
+                          ;; Read the next form and make an autoload.
+                          (let* ((form (prog1 (read (current-buffer))
+                                         (or (bolp) (forward-line 1))))
+                                 (autoload (make-autoload form load-name)))
+                            (if autoload
+                                (push (nth 1 form) autoloads-done)
+                              (setq autoload form))
+                            (let ((autoload-print-form-outbuf outbuf))
+                              (autoload-print-form autoload)))
+                        (error
+                         (message "Error in %s: %S" file err)))
+
+                    ;; Copy the rest of the line to the output.
+                    (princ (buffer-substring
+                            (progn
+                              ;; Back up over whitespace, to preserve it.
+                              (skip-chars-backward " \f\t")
+                              (if (= (char-after (1+ (point))) ? )
+                                  ;; Eat one space.
+                                  (forward-char 1))
+                              (point))
+                            (progn (forward-line 1) (point)))
+                           outbuf)))
+                 ((looking-at ";")
+                  ;; Don't read the comment.
+                  (forward-line 1))
+                 (t
+                  (forward-sexp 1)
+                  (forward-line 1))))))
+
+          (when output-start
+            (let ((secondary-autoloads-file-buf
+                   (if (local-variable-p 'generated-autoload-file)
+                       (current-buffer))))
+              (with-current-buffer outbuf
+                (save-excursion
+                  ;; Insert the section-header line which lists the file name
+                  ;; and which functions are in it, etc.
+                  (goto-char output-start)
+                  (autoload-insert-section-header
+                   outbuf autoloads-done load-name relfile
+                   (if secondary-autoloads-file-buf
+                       ;; MD5 checksums are much better because they do not
+                       ;; change unless the file changes (so they'll be
+                       ;; equal on two different systems and will change
+                       ;; less often than time-stamps, thus leading to fewer
+                       ;; unneeded changes causing spurious conflicts), but
+                       ;; using time-stamps is a very useful optimization,
+                       ;; so we use time-stamps for the main autoloads file
+                       ;; (loaddefs.el) where we have special ways to
+                       ;; circumvent the "random change problem", and MD5
+                       ;; checksum in secondary autoload files where we do
+                       ;; not need the time-stamp optimization because it is
+                       ;; already provided by the primary autoloads file.
+                       (md5 secondary-autoloads-file-buf
+                            ;; We'd really want to just use
+                            ;; `emacs-internal' instead.
+                            nil nil 'emacs-mule-unix)
+                     (nth 5 (file-attributes relfile))))
+                  (insert ";;; Generated autoloads from " relfile "\n"))
+                (insert generate-autoload-section-trailer))))
+          (message "Generating autoloads for %s...done" file))
+        (or visited
+            ;; We created this buffer, so we should kill it.
+            (kill-buffer (current-buffer))))
+      ;; If the entries were added to some other buffer, then the file
+      ;; doesn't add entries to OUTFILE.
+      (or (not output-start) otherbuf))))
 \f
+(defun autoload-save-buffers ()
+  (while autoload-modified-buffers
+    (with-current-buffer (pop autoload-modified-buffers)
+      (save-buffer))))
+
 ;;;###autoload
 (defun update-file-autoloads (file &optional save-after)
   "Update the autoloads for FILE in `generated-autoload-file'
@@ -397,80 +464,80 @@ save the buffer too.
 
 Return FILE if there was no autoload cookie in it, else nil."
   (interactive "fUpdate autoloads for file: \np")
-  (let ((load-name (let ((name (file-name-nondirectory file)))
-                    (if (string-match "\\.elc?\\(\\.\\|$\\)" name)
-                        (substring name 0 (match-beginning 0))
-                      name)))
-       (found nil)
-       (existing-buffer (get-file-buffer file))
-       (no-autoloads nil))
-    (save-excursion
-      ;; We want to get a value for generated-autoload-file from
-      ;; the local variables section if it's there.
-      (if existing-buffer
-         (set-buffer existing-buffer))
-      ;; We must read/write the file without any code conversion,
-      ;; but still decode EOLs.
-      (let ((coding-system-for-read 'raw-text))
-       (set-buffer (find-file-noselect
-                    (autoload-ensure-default-file
-                     (expand-file-name generated-autoload-file
-                                       (expand-file-name "lisp"
-                                                         source-directory)))))
-       ;; This is to make generated-autoload-file have Unix EOLs, so
-       ;; that it is portable to all platforms.
-       (setq buffer-file-coding-system 'raw-text-unix))
-      (or (> (buffer-size) 0)
-         (error "Autoloads file %s does not exist" buffer-file-name))
-      (or (file-writable-p buffer-file-name)
-         (error "Autoloads file %s is not writable" buffer-file-name))
-      (save-excursion
-       (save-restriction
-         (widen)
-         (goto-char (point-min))
-         ;; Look for the section for LOAD-NAME.
-         (while (and (not found)
-                     (search-forward generate-autoload-section-header nil t))
-           (let ((form (autoload-read-section-header)))
-             (cond ((string= (nth 2 form) load-name)
-                    ;; We found the section for this file.
-                    ;; Check if it is up to date.
-                    (let ((begin (match-beginning 0))
-                          (last-time (nth 4 form))
-                          (file-time (nth 5 (file-attributes file))))
-                      (if (and (or (null existing-buffer)
-                                   (not (buffer-modified-p existing-buffer)))
-                               (listp last-time) (= (length last-time) 2)
-                               (not (time-less-p last-time file-time)))
-                          (progn
-                            (if (interactive-p)
-                                (message "\
-Autoload section for %s is up to date."
-                                         file))
-                            (setq found 'up-to-date))
-                        (search-forward generate-autoload-section-trailer)
-                        (delete-region begin (point))
-                        (setq found t))))
-                   ((string< load-name (nth 2 form))
-                    ;; We've come to a section alphabetically later than
-                    ;; LOAD-NAME.  We assume the file is in order and so
-                    ;; there must be no section for LOAD-NAME.  We will
-                    ;; insert one before the section here.
-                    (goto-char (match-beginning 0))
-                    (setq found 'new)))))
-         (or found
-             (progn
-               (setq found 'new)
-               ;; No later sections in the file.  Put before the last page.
-               (goto-char (point-max))
-               (search-backward "\f" nil t)))
-         (or (eq found 'up-to-date)
-             (setq no-autoloads (generate-file-autoloads file)))))
-      (and save-after
-          (buffer-modified-p)
-          (save-buffer))
-
-      (if no-autoloads file))))
+  (let* ((autoload-modified-buffers nil)
+         (no-autoloads (autoload-generate-file-autoloads file)))
+    (if autoload-modified-buffers
+        (if save-after (autoload-save-buffers))
+      (if (interactive-p)
+          (message "Autoload section for %s is up to date." file)))
+    (if no-autoloads file)))
+
+(defun autoload-find-destination (file)
+  "Find the destination point of the current buffer's autoloads.
+FILE is the file name of the current buffer.
+Returns a buffer whose point is placed at the requested location.
+Returns nil if the file's autoloads are uptodate, otherwise
+removes any prior now out-of-date autoload entries."
+  (catch 'up-to-date
+    (let* ((load-name (autoload-file-load-name file))
+           (buf (current-buffer))
+           (existing-buffer (if buffer-file-name buf))
+           (found nil))
+      (with-current-buffer
+          ;; We must read/write the file without any code conversion,
+          ;; but still decode EOLs.
+          (let ((coding-system-for-read 'raw-text))
+            (find-file-noselect
+             (autoload-ensure-default-file (autoload-generated-file))))
+        ;; This is to make generated-autoload-file have Unix EOLs, so
+        ;; that it is portable to all platforms.
+        (setq buffer-file-coding-system 'raw-text-unix)
+        (or (> (buffer-size) 0)
+            (error "Autoloads file %s does not exist" buffer-file-name))
+        (or (file-writable-p buffer-file-name)
+            (error "Autoloads file %s is not writable" buffer-file-name))
+        (widen)
+        (goto-char (point-min))
+        ;; Look for the section for LOAD-NAME.
+        (while (and (not found)
+                    (search-forward generate-autoload-section-header nil t))
+          (let ((form (autoload-read-section-header)))
+            (cond ((string= (nth 2 form) load-name)
+                   ;; We found the section for this file.
+                   ;; Check if it is up to date.
+                   (let ((begin (match-beginning 0))
+                         (last-time (nth 4 form))
+                         (file-time (nth 5 (file-attributes file))))
+                     (if (and (or (null existing-buffer)
+                                  (not (buffer-modified-p existing-buffer)))
+                              (or
+                               ;; last-time is the time-stamp (specifying
+                               ;; the last time we looked at the file) and
+                               ;; the file hasn't been changed since.
+                               (and (listp last-time) (= (length last-time) 2)
+                                    (not (time-less-p last-time file-time)))
+                               ;; last-time is an MD5 checksum instead.
+                               (and (stringp last-time)
+                                    (equal last-time
+                                           (md5 buf nil nil 'emacs-mule)))))
+                         (throw 'up-to-date nil)
+                       (autoload-remove-section begin)
+                       (setq found t))))
+                  ((string< load-name (nth 2 form))
+                   ;; We've come to a section alphabetically later than
+                   ;; LOAD-NAME.  We assume the file is in order and so
+                   ;; there must be no section for LOAD-NAME.  We will
+                   ;; insert one before the section here.
+                   (goto-char (match-beginning 0))
+                   (setq found t)))))
+        (or found
+            (progn
+              ;; No later sections in the file.  Put before the last page.
+              (goto-char (point-max))
+              (search-backward "\f" nil t)))
+        (unless (memq (current-buffer) autoload-modified-buffers)
+          (push (current-buffer) autoload-modified-buffers))
+        (current-buffer)))))
 
 (defun autoload-remove-section (begin)
   (goto-char begin)
@@ -498,20 +565,21 @@ directory or directories specified."
                                 (directory-files (expand-file-name dir)
                                                  t files-re))
                               dirs)))
+         (done ())
         (this-time (current-time))
-        (no-autoloads nil)             ;files with no autoload cookies.
-        (autoloads-file
-         (expand-file-name generated-autoload-file
-                           (expand-file-name "lisp" source-directory)))
-        (top-dir (file-name-directory autoloads-file)))
+         ;; Files with no autoload cookies or whose autoloads go to other
+         ;; files because of file-local autoload-generated-file settings.
+        (no-autoloads nil)
+         (autoload-modified-buffers nil))
 
     (with-current-buffer
-       (find-file-noselect (autoload-ensure-default-file autoloads-file))
+       (find-file-noselect
+         (autoload-ensure-default-file (autoload-generated-file)))
       (save-excursion
 
        ;; Canonicalize file names and remove the autoload file itself.
-       (setq files (delete (autoload-trim-file-name buffer-file-name)
-                           (mapcar 'autoload-trim-file-name files)))
+       (setq files (delete (file-relative-name buffer-file-name)
+                           (mapcar 'file-relative-name files)))
 
        (goto-char (point-min))
        (while (search-forward generate-autoload-section-header nil t)
@@ -531,19 +599,27 @@ directory or directories specified."
                           (push file no-autoloads)
                           (setq files (delete file files)))))))
                  ((not (stringp file)))
-                 ((not (file-exists-p (expand-file-name file top-dir)))
-                  ;; Remove the obsolete section.
+                 ((or (not (file-exists-p file))
+                       ;; Remove duplicates as well, just in case.
+                       (member file done))
+                   ;; Remove the obsolete section.
                   (autoload-remove-section (match-beginning 0)))
-                 ((equal (nth 4 form) (nth 5 (file-attributes file)))
+                 ((not (time-less-p (nth 4 form)
+                                     (nth 5 (file-attributes file))))
                   ;; File hasn't changed.
                   nil)
                  (t
-                  (update-file-autoloads file)))
+                   (autoload-remove-section (match-beginning 0))
+                   (if (autoload-generate-file-autoloads
+                        file (current-buffer) buffer-file-name)
+                       (push file no-autoloads))))
+            (push file done)
            (setq files (delete file files)))))
       ;; Elements remaining in FILES have no existing autoload sections yet.
-      (setq no-autoloads
-           (append no-autoloads
-                   (delq nil (mapcar 'update-file-autoloads files))))
+      (dolist (file files)
+        (if (autoload-generate-file-autoloads file nil buffer-file-name)
+            (push file no-autoloads)))
+
       (when no-autoloads
        ;; Sort them for better readability.
        (setq no-autoloads (sort no-autoloads 'string<))
@@ -554,7 +630,10 @@ directory or directories specified."
         (current-buffer) nil nil no-autoloads this-time)
        (insert generate-autoload-section-trailer))
 
-      (save-buffer))))
+      (save-buffer)
+      ;; In case autoload entries were added to other files because of
+      ;; file-local autoload-generated-file settings.
+      (autoload-save-buffers))))
 
 (define-obsolete-function-alias 'update-autoloads-from-directories
     'update-directory-autoloads "22.1")
diff --git a/lisp/emacs-lisp/avl-tree.el b/lisp/emacs-lisp/avl-tree.el
new file mode 100644 (file)
index 0000000..b8cf836
--- /dev/null
@@ -0,0 +1,472 @@
+;;; avl-tree.el --- balanced binary trees, AVL-trees
+
+;; Copyright (C) 1995, 2007 Free Software Foundation, Inc.
+
+;; Author: Per Cederqvist <ceder@lysator.liu.se>
+;;     Inge Wallin <inge@lysator.liu.se>
+;;     Thomas Bellman <bellman@lysator.liu.se>
+;; Maintainer: FSF
+;; Created: 10 May 1991
+;; Keywords: extensions, data structures
+
+;; 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, 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; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; An AVL tree is a nearly-perfect balanced binary tree.  A tree consists of
+;; two elements, the root node and the compare function.  The actual tree
+;; has a dummy node as its root with the real root in the left pointer.
+;;
+;; Each node of the tree consists of one data element, one left
+;; sub-tree and one right sub-tree.  Each node also has a balance
+;; count, which is the difference in depth of the left and right
+;; sub-trees.
+;;
+;; The functions with names of the form "avl-tree--" are intended for
+;; internal use only.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+
+;; ================================================================
+;;; Functions and macros handling an AVL tree node.
+
+(defstruct (avl-tree--node
+            ;; We force a representation without tag so it matches the
+            ;; pre-defstruct representation.  Also we use the underlying
+            ;; representation in the implementation of avl-tree--node-branch.
+            (:type vector)
+            (:constructor nil)
+            (:constructor avl-tree--node-create (left right data balance))
+            (:copier nil))
+  left right data balance)
+
+(defalias 'avl-tree--node-branch 'aref
+  ;; This implementation is efficient but breaks the defstruct abstraction.
+  ;; An alternative could be
+  ;; (funcall (aref [avl-tree-left avl-tree-right avl-tree-data] branch) node)
+  "Get value of a branch of a node.
+
+NODE is the node, and BRANCH is the branch.
+0 for left pointer, 1 for right pointer and 2 for the data.\"
+\(fn node branch)")
+;; The funcall/aref trick doesn't work for the setf method, unless we try
+;; and access the underlying setter function, but this wouldn't be
+;; portable either.
+(defsetf avl-tree--node-branch aset)
+
+\f
+;; ================================================================
+;;; Internal functions for use in the AVL tree package
+
+(defstruct (avl-tree-
+            ;; A tagged list is the pre-defstruct representation.
+            ;; (:type list)
+            :named
+            (:constructor nil)
+            (:constructor avl-tree-create (cmpfun))
+            (:predicate avl-tree-p)
+            (:copier nil))
+  (dummyroot (avl-tree--node-create nil nil nil 0))
+  cmpfun)
+
+(defmacro avl-tree--root (tree)
+  ;; Return the root node for an avl-tree.  INTERNAL USE ONLY.
+  `(avl-tree--node-left (avl-tree--dummyroot tree)))
+(defsetf avl-tree--root (tree) (node)
+  `(setf (avl-tree--node-left (avl-tree--dummyroot ,tree)) ,node))
+
+;; ----------------------------------------------------------------
+;;                          Deleting data
+
+(defun avl-tree--del-balance1 (node branch)
+  ;; Rebalance a tree and return t if the height of the tree has shrunk.
+  (let ((br (avl-tree--node-branch node branch))
+        p1 b1 p2 b2 result)
+    (cond
+     ((< (avl-tree--node-balance br) 0)
+      (setf (avl-tree--node-balance br) 0)
+      t)
+
+     ((= (avl-tree--node-balance br) 0)
+      (setf (avl-tree--node-balance br) +1)
+      nil)
+
+     (t
+      ;; Rebalance.
+      (setq p1 (avl-tree--node-right br)
+            b1 (avl-tree--node-balance p1))
+      (if (>= b1 0)
+          ;; Single RR rotation.
+          (progn
+            (setf (avl-tree--node-right br) (avl-tree--node-left p1))
+            (setf (avl-tree--node-left p1) br)
+            (if (= 0 b1)
+                (progn
+                  (setf (avl-tree--node-balance br) +1)
+                  (setf (avl-tree--node-balance p1) -1)
+                  (setq result nil))
+              (setf (avl-tree--node-balance br) 0)
+              (setf (avl-tree--node-balance p1) 0)
+              (setq result t))
+            (setf (avl-tree--node-branch node branch) p1)
+            result)
+
+        ;; Double RL rotation.
+        (setq p2 (avl-tree--node-left p1)
+              b2 (avl-tree--node-balance p2))
+        (setf (avl-tree--node-left p1) (avl-tree--node-right p2))
+        (setf (avl-tree--node-right p2) p1)
+        (setf (avl-tree--node-right br) (avl-tree--node-left p2))
+        (setf (avl-tree--node-left p2) br)
+        (setf (avl-tree--node-balance br) (if (> b2 0) -1 0))
+        (setf (avl-tree--node-balance p1) (if (< b2 0) +1 0))
+        (setf (avl-tree--node-branch node branch) p2)
+        (setf (avl-tree--node-balance p2) 0)
+        t)))))
+
+(defun avl-tree--del-balance2 (node branch)
+  (let ((br (avl-tree--node-branch node branch))
+        p1 b1 p2 b2 result)
+    (cond
+     ((> (avl-tree--node-balance br) 0)
+      (setf (avl-tree--node-balance br) 0)
+      t)
+
+     ((= (avl-tree--node-balance br) 0)
+      (setf (avl-tree--node-balance br) -1)
+      nil)
+
+     (t
+      ;; Rebalance.
+      (setq p1 (avl-tree--node-left br)
+            b1 (avl-tree--node-balance p1))
+      (if (<= b1 0)
+          ;; Single LL rotation.
+          (progn
+            (setf (avl-tree--node-left br) (avl-tree--node-right p1))
+            (setf (avl-tree--node-right p1) br)
+            (if (= 0 b1)
+                (progn
+                  (setf (avl-tree--node-balance br) -1)
+                  (setf (avl-tree--node-balance p1) +1)
+                  (setq result nil))
+              (setf (avl-tree--node-balance br) 0)
+              (setf (avl-tree--node-balance p1) 0)
+              (setq result t))
+            (setf (avl-tree--node-branch node branch) p1)
+            result)
+
+        ;; Double LR rotation.
+        (setq p2 (avl-tree--node-right p1)
+              b2 (avl-tree--node-balance p2))
+        (setf (avl-tree--node-right p1) (avl-tree--node-left p2))
+        (setf (avl-tree--node-left p2) p1)
+        (setf (avl-tree--node-left br) (avl-tree--node-right p2))
+        (setf (avl-tree--node-right p2) br)
+        (setf (avl-tree--node-balance br) (if (< b2 0) +1 0))
+        (setf (avl-tree--node-balance p1) (if (> b2 0) -1 0))
+        (setf (avl-tree--node-branch node branch) p2)
+        (setf (avl-tree--node-balance p2) 0)
+        t)))))
+
+(defun avl-tree--do-del-internal (node branch q)
+  (let ((br (avl-tree--node-branch node branch)))
+    (if (avl-tree--node-right br)
+        (if (avl-tree--do-del-internal br +1 q)
+            (avl-tree--del-balance2 node branch))
+      (setf (avl-tree--node-data q) (avl-tree--node-data br))
+      (setf (avl-tree--node-branch node branch)
+            (avl-tree--node-left br))
+      t)))
+
+(defun avl-tree--do-delete (cmpfun root branch data)
+  ;; Return t if the height of the tree has shrunk.
+  (let ((br (avl-tree--node-branch root branch)))
+    (cond
+     ((null br)
+      nil)
+
+     ((funcall cmpfun data (avl-tree--node-data br))
+      (if (avl-tree--do-delete cmpfun br 0 data)
+          (avl-tree--del-balance1 root branch)))
+
+     ((funcall cmpfun (avl-tree--node-data br) data)
+      (if (avl-tree--do-delete cmpfun br 1 data)
+          (avl-tree--del-balance2 root branch)))
+
+     (t
+      ;; Found it.  Let's delete it.
+      (cond
+       ((null (avl-tree--node-right br))
+        (setf (avl-tree--node-branch root branch) (avl-tree--node-left br))
+        t)
+
+       ((null (avl-tree--node-left br))
+        (setf (avl-tree--node-branch root branch) (avl-tree--node-right br))
+        t)
+
+       (t
+        (if (avl-tree--do-del-internal br 0 br)
+            (avl-tree--del-balance1 root branch))))))))
+
+;; ----------------------------------------------------------------
+;;                           Entering data
+
+(defun avl-tree--enter-balance1 (node branch)
+  ;; Rebalance a tree and return t if the height of the tree has grown.
+  (let ((br (avl-tree--node-branch node branch))
+        p1 p2 b2 result)
+    (cond
+     ((< (avl-tree--node-balance br) 0)
+      (setf (avl-tree--node-balance br) 0)
+      nil)
+
+     ((= (avl-tree--node-balance br) 0)
+      (setf (avl-tree--node-balance br) +1)
+      t)
+
+     (t
+      ;; Tree has grown => Rebalance.
+      (setq p1 (avl-tree--node-right br))
+      (if (> (avl-tree--node-balance p1) 0)
+          ;; Single RR rotation.
+          (progn
+            (setf (avl-tree--node-right br) (avl-tree--node-left p1))
+            (setf (avl-tree--node-left p1) br)
+            (setf (avl-tree--node-balance br) 0)
+            (setf (avl-tree--node-branch node branch) p1))
+
+        ;; Double RL rotation.
+        (setq p2 (avl-tree--node-left p1)
+              b2 (avl-tree--node-balance p2))
+        (setf (avl-tree--node-left p1) (avl-tree--node-right p2))
+        (setf (avl-tree--node-right p2) p1)
+        (setf (avl-tree--node-right br) (avl-tree--node-left p2))
+        (setf (avl-tree--node-left p2) br)
+        (setf (avl-tree--node-balance br) (if (> b2 0) -1 0))
+        (setf (avl-tree--node-balance p1) (if (< b2 0) +1 0))
+        (setf (avl-tree--node-branch node branch) p2))
+      (setf (avl-tree--node-balance (avl-tree--node-branch node branch)) 0)
+      nil))))
+
+(defun avl-tree--enter-balance2 (node branch)
+  ;; Return t if the tree has grown.
+  (let ((br (avl-tree--node-branch node branch))
+        p1 p2 b2)
+    (cond
+     ((> (avl-tree--node-balance br) 0)
+      (setf (avl-tree--node-balance br) 0)
+      nil)
+
+     ((= (avl-tree--node-balance br) 0)
+      (setf (avl-tree--node-balance br) -1)
+      t)
+
+     (t
+      ;; Balance was -1 => Rebalance.
+      (setq p1 (avl-tree--node-left br))
+      (if (< (avl-tree--node-balance p1) 0)
+          ;; Single LL rotation.
+          (progn
+            (setf (avl-tree--node-left br) (avl-tree--node-right p1))
+            (setf (avl-tree--node-right p1) br)
+            (setf (avl-tree--node-balance br) 0)
+            (setf (avl-tree--node-branch node branch) p1))
+
+        ;; Double LR rotation.
+        (setq p2 (avl-tree--node-right p1)
+              b2 (avl-tree--node-balance p2))
+        (setf (avl-tree--node-right p1) (avl-tree--node-left p2))
+        (setf (avl-tree--node-left p2) p1)
+        (setf (avl-tree--node-left br) (avl-tree--node-right p2))
+        (setf (avl-tree--node-right p2) br)
+        (setf (avl-tree--node-balance br) (if (< b2 0) +1 0))
+        (setf (avl-tree--node-balance p1) (if (> b2 0) -1 0))
+        (setf (avl-tree--node-branch node branch) p2))
+      (setf (avl-tree--node-balance (avl-tree--node-branch node branch)) 0)
+      nil))))
+
+(defun avl-tree--do-enter (cmpfun root branch data)
+  ;; Return t if height of tree ROOT has grown.  INTERNAL USE ONLY.
+  (let ((br (avl-tree--node-branch root branch)))
+    (cond
+     ((null br)
+      ;; Data not in tree, insert it.
+      (setf (avl-tree--node-branch root branch)
+            (avl-tree--node-create nil nil data 0))
+      t)
+
+     ((funcall cmpfun data (avl-tree--node-data br))
+      (and (avl-tree--do-enter cmpfun br 0 data)
+           (avl-tree--enter-balance2 root branch)))
+
+     ((funcall cmpfun (avl-tree--node-data br) data)
+      (and (avl-tree--do-enter cmpfun br 1 data)
+           (avl-tree--enter-balance1 root branch)))
+
+     (t
+      (setf (avl-tree--node-data br) data)
+      nil))))
+
+;; ----------------------------------------------------------------
+
+(defun avl-tree--mapc (map-function root)
+  ;; Apply MAP-FUNCTION to all nodes in the tree starting with ROOT.
+  ;; The function is applied in-order.
+  ;;
+  ;; Note: MAP-FUNCTION is applied to the node and not to the data itself.
+  ;; INTERNAL USE ONLY.
+  (let ((node root)
+        (stack nil)
+        (go-left t))
+    (push nil stack)
+    (while node
+      (if (and go-left
+               (avl-tree--node-left node))
+          ;; Do the left subtree first.
+          (progn
+            (push node stack)
+            (setq node (avl-tree--node-left node)))
+        ;; Apply the function...
+        (funcall map-function node)
+        ;; and do the right subtree.
+        (setq node (if (setq go-left (avl-tree--node-right node))
+                       (avl-tree--node-right node)
+                     (pop stack)))))))
+
+(defun avl-tree--do-copy (root)
+  ;; Copy the avl tree with ROOT as root.
+  ;; Highly recursive. INTERNAL USE ONLY.
+  (if (null root)
+      nil
+    (avl-tree--node-create
+     (avl-tree--do-copy (avl-tree--node-left root))
+     (avl-tree--do-copy (avl-tree--node-right root))
+     (avl-tree--node-data root)
+     (avl-tree--node-balance root))))
+
+\f
+;; ================================================================
+;;; The public functions which operate on AVL trees.
+
+(defalias 'avl-tree-compare-function 'avl-tree--cmpfun
+  "Return the comparison function for the avl tree TREE.
+
+\(fn TREE)")
+
+(defun avl-tree-empty (tree)
+  "Return t if avl tree TREE is emtpy, otherwise return nil."
+  (null (avl-tree--root tree)))
+
+(defun avl-tree-enter (tree data)
+  "In the avl tree TREE insert DATA.
+Return DATA."
+  (avl-tree--do-enter (avl-tree--cmpfun tree)
+                      (avl-tree--dummyroot tree)
+                      0
+                      data)
+  data)
+
+(defun avl-tree-delete (tree data)
+  "From the avl tree TREE, delete DATA.
+Return the element in TREE which matched DATA,
+nil if no element matched."
+  (avl-tree--do-delete (avl-tree--cmpfun tree)
+                       (avl-tree--dummyroot tree)
+                       0
+                       data))
+
+(defun avl-tree-member (tree data)
+  "Return the element in the avl tree TREE which matches DATA.
+Matching uses the compare function previously specified in
+`avl-tree-create' when TREE was created.
+
+If there is no such element in the tree, the value is nil."
+  (let ((node (avl-tree--root tree))
+        (compare-function (avl-tree--cmpfun tree))
+        found)
+    (while (and node
+                (not found))
+      (cond
+       ((funcall compare-function data (avl-tree--node-data node))
+        (setq node (avl-tree--node-left node)))
+       ((funcall compare-function (avl-tree--node-data node) data)
+        (setq node (avl-tree--node-right node)))
+       (t
+        (setq found t))))
+    (if node
+        (avl-tree--node-data node)
+      nil)))
+
+(defun avl-tree-map (__map-function__ tree)
+  "Apply __MAP-FUNCTION__ to all elements in the avl tree TREE."
+  (avl-tree--mapc
+   (lambda (node)
+     (setf (avl-tree--node-data node)
+           (funcall __map-function__ (avl-tree--node-data node))))
+   (avl-tree--root tree)))
+
+(defun avl-tree-first (tree)
+  "Return the first element in TREE, or nil if TREE is empty."
+  (let ((node (avl-tree--root tree)))
+    (when node
+      (while (avl-tree--node-left node)
+        (setq node (avl-tree--node-left node)))
+      (avl-tree--node-data node))))
+
+(defun avl-tree-last (tree)
+  "Return the last element in TREE, or nil if TREE is empty."
+  (let ((node (avl-tree--root tree)))
+    (when node
+      (while (avl-tree--node-right node)
+        (setq node (avl-tree--node-right node)))
+      (avl-tree--node-data node))))
+
+(defun avl-tree-copy (tree)
+  "Return a copy of the avl tree TREE."
+  (let ((new-tree (avl-tree-create (avl-tree--cmpfun tree))))
+    (setf (avl-tree--root new-tree) (avl-tree--do-copy (avl-tree--root tree)))
+    new-tree))
+
+(defun avl-tree-flatten (tree)
+  "Return a sorted list containing all elements of TREE."
+  (nreverse
+   (let ((treelist nil))
+     (avl-tree--mapc
+      (lambda (node) (push (avl-tree--node-data node) treelist))
+      (avl-tree--root tree))
+     treelist)))
+
+(defun avl-tree-size (tree)
+  "Return the number of elements in TREE."
+  (let ((treesize 0))
+    (avl-tree--mapc
+     (lambda (data) (setq treesize (1+ treesize)))
+     (avl-tree--root tree))
+    treesize))
+
+(defun avl-tree-clear (tree)
+  "Clear the avl tree TREE."
+  (setf (avl-tree--root tree) nil))
+
+(provide 'avl-tree)
+
+;; arch-tag: 47e26701-43c9-4222-bd79-739eac6357a9
+;;; avl-tree.el ends here
index 6f653c8fc6ec5ebab8205679ca9afec449cefdf3..94b4a957cefc22e753b79cb3bd4955aca3acb344 100644 (file)
@@ -31,7 +31,7 @@
 ;; "No matter how hard you try, you can't make a racehorse out of a pig.
 ;; You can, however, make a faster pig."
 ;;
-;; Or, to put it another way, the emacs byte compiler is a VW Bug.  This code
+;; Or, to put it another way, the Emacs byte compiler is a VW Bug.  This code
 ;; makes it be a VW Bug with fuel injection and a turbocharger...  You're
 ;; still not going to make it go faster than 70 mph, but it might be easier
 ;; to get it there.
     form))
 
 (defun byte-optimize-if (form)
+  ;; (if (progn <insts> <test>) <rest>) ==> (progn <insts> (if <test> <rest>))
   ;; (if <true-constant> <then> <else...>) ==> <then>
   ;; (if <false-constant> <then> <else...>) ==> (progn <else...>)
   ;; (if <test> nil <else...>) ==> (if (not <test>) (progn <else...>))
   ;; (if <test> <then> nil) ==> (if <test> <then>)
   (let ((clause (nth 1 form)))
-    (cond ((byte-compile-trueconstp clause)
+    (cond ((and (eq (car-safe clause) 'progn)
+                ;; `clause' is a proper list.
+                (null (cdr (last clause))))
+           (if (null (cddr clause))
+               ;; A trivial `progn'.
+               (byte-optimize-if `(if ,(cadr clause) ,@(nthcdr 2 form)))
+             (nconc (butlast clause)
+                    (list
+                     (byte-optimize-if
+                      `(if ,(car (last clause)) ,@(nthcdr 2 form)))))))
+          ((byte-compile-trueconstp clause)
           (nth 2 form))
          ((null clause)
           (if (nthcdr 4 form)
 ;; This list contains numbers, which are pc values,
 ;; before each instruction.
 (defun byte-decompile-bytecode (bytes constvec)
-  "Turns BYTECODE into lapcode, referring to CONSTVEC."
+  "Turn BYTECODE into lapcode, referring to CONSTVEC."
   (let ((byte-compile-constants nil)
        (byte-compile-variables nil)
        (byte-compile-tag-number 0))
@@ -1996,17 +2007,17 @@ If FOR-EFFECT is non-nil, the return value is assumed to be of no importance."
      (assq 'byte-code (symbol-function 'byte-optimize-form))
      (let ((byte-optimize nil)
           (byte-compile-warnings nil))
-       (mapcar (lambda (x)
-                (or noninteractive (message "compiling %s..." x))
-                (byte-compile x)
-                (or noninteractive (message "compiling %s...done" x)))
-              '(byte-optimize-form
-                byte-optimize-body
-                byte-optimize-predicate
-                byte-optimize-binary-predicate
-                ;; Inserted some more than necessary, to speed it up.
-                byte-optimize-form-code-walker
-                byte-optimize-lapcode))))
+       (mapc (lambda (x)
+              (or noninteractive (message "compiling %s..." x))
+              (byte-compile x)
+              (or noninteractive (message "compiling %s...done" x)))
+            '(byte-optimize-form
+              byte-optimize-body
+              byte-optimize-predicate
+              byte-optimize-binary-predicate
+              ;; Inserted some more than necessary, to speed it up.
+              byte-optimize-form-code-walker
+              byte-optimize-lapcode))))
  nil)
 
 ;; arch-tag: 0f14076b-737e-4bef-aae6-908826ec1ff1
index 6cc61426f3b6b8d8c6f90f2868d1760e6d1df03c..5a5c639f0a653fc02a3723f7ba7c4de5dfbf4390 100644 (file)
 ;;                             `obsolete'  (obsolete variables and functions)
 ;;                             `noruntime' (calls to functions only defined
 ;;                                          within `eval-when-compile')
-;;                             `cl-warnings' (calls to CL functions)
+;;                             `cl-functions' (calls to CL functions)
 ;;                             `interactive-only' (calls to commands that are
 ;;                                                not good to call from Lisp)
+;;                             `make-local' (dubious calls to
+;;                                           `make-variable-buffer-local')
+;;                              `mapcar'     (mapcar called for effect)
 ;; byte-compile-compatibility  Whether the compiler should
 ;;                             generate .elc files which can be loaded into
 ;;                             generic emacs 18.
@@ -338,7 +341,8 @@ If it is 'byte, then only byte-level optimizations will be logged."
 
 (defconst byte-compile-warning-types
   '(redefine callargs free-vars unresolved
-            obsolete noruntime cl-functions interactive-only)
+            obsolete noruntime cl-functions interactive-only
+            make-local mapcar)
   "The list of warning types used when `byte-compile-warnings' is t.")
 (defcustom byte-compile-warnings t
   "*List of warnings that the byte-compiler should issue (t for all).
@@ -356,14 +360,17 @@ Elements of the list may be:
   cl-functions    calls to runtime functions from the CL package (as
                  distinguished from macros and aliases).
   interactive-only
-             commands that normally shouldn't be called from Lisp code."
+             commands that normally shouldn't be called from Lisp code.
+  make-local  calls to make-variable-buffer-local that may be incorrect.
+  mapcar      mapcar called for effect."
   :group 'bytecomp
   :type `(choice (const :tag "All" t)
                 (set :menu-tag "Some"
                      (const free-vars) (const unresolved)
                      (const callargs) (const redefine)
                      (const obsolete) (const noruntime)
-                     (const cl-functions) (const interactive-only))))
+                     (const cl-functions) (const interactive-only)
+                     (const make-local) (const mapcar))))
 (put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
 ;;;###autoload
 (defun byte-compile-warnings-safe-p (x)
@@ -374,14 +381,15 @@ Elements of the list may be:
                     (when (memq e '(free-vars unresolved
                                     callargs redefine
                                     obsolete noruntime
-                                    cl-functions interactive-only))
+                                    cl-functions interactive-only
+                                    make-local mapcar))
                       e))
                   x)
                  x))))
 
 (defvar byte-compile-interactive-only-functions
   '(beginning-of-buffer end-of-buffer replace-string replace-regexp
-    insert-file insert-buffer insert-file-literally)
+    insert-file insert-buffer insert-file-literally previous-line next-line)
   "List of commands that are not meant to be called from Lisp.")
 
 (defvar byte-compile-not-obsolete-var nil
@@ -850,13 +858,11 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
                (when (and (consp s) (eq t (car s)))
                  (push (cdr s) old-autoloads)))))))
       (when (memq 'cl-functions byte-compile-warnings)
-       (let ((hist-new load-history)
-             (hist-nil-new current-load-list))
+       (let ((hist-new load-history))
          ;; Go through load-history, look for newly loaded files
          ;; and mark all the functions defined therein.
          (while (and hist-new (not (eq hist-new hist-orig)))
-           (let ((xs (pop hist-new))
-                 old-autoloads)
+           (let ((xs (pop hist-new)))
              ;; Make sure the file was not already loaded before.
              (when (and (equal (car xs) "cl") (not (assoc (car xs) hist-orig)))
                (byte-compile-find-cl-functions)))))))))
@@ -973,7 +979,7 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
         (pos (if (and byte-compile-current-file
                       (integerp byte-compile-read-position))
                  (with-current-buffer byte-compile-current-buffer
-                   (format "%d:%d:" 
+                   (format "%d:%d:"
                            (save-excursion
                              (goto-char byte-compile-last-position)
                              (1+ (count-lines (point-min) (point-at-bol))))
@@ -1035,8 +1041,7 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
           (setq byte-compile-last-logged-file byte-compile-current-file
                 byte-compile-last-warned-form nil)
           ;; Do this after setting default-directory.
-          (unless (eq major-mode 'compilation-mode)
-            (compilation-mode))
+          (unless (derived-mode-p 'compilation-mode) (compilation-mode))
           (compilation-forget-errors)
           pt))))
 
@@ -1261,7 +1266,7 @@ extra args."
             (get (car form) 'byte-compile-format-like))
     (let ((nfields (with-temp-buffer
                     (insert (nth 1 form))
-                    (goto-char 1)
+                    (goto-char (point-min))
                     (let ((n 0))
                       (while (re-search-forward "%." nil t)
                         (unless (eq ?% (char-after (1+ (match-beginning 0))))
@@ -1279,19 +1284,19 @@ extra args."
 ;; Warn if a custom definition fails to specify :group.
 (defun byte-compile-nogroup-warn (form)
   (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
-       (name (cadr form)))
+        (name (cadr form)))
     (or (not (eq (car-safe name) 'quote))
-       (and (eq (car form) 'custom-declare-group)
-            (equal name ''emacs))
-       (plist-get keyword-args :group)
-       (not (and (consp name) (eq (car name) 'quote)))
-       (byte-compile-warn
-        "%s for `%s' fails to specify containing group"
-        (cdr (assq (car form)
-                   '((custom-declare-group . defgroup)
-                     (custom-declare-face . defface)
-                     (custom-declare-variable . defcustom))))
-        (cadr name)))))
+        (and (eq (car form) 'custom-declare-group)
+             (equal name ''emacs))
+        (plist-get keyword-args :group)
+        (not (and (consp name) (eq (car name) 'quote)))
+        (byte-compile-warn
+         "%s for `%s' fails to specify containing group"
+         (cdr (assq (car form)
+                    '((custom-declare-group . defgroup)
+                      (custom-declare-face . defface)
+                      (custom-declare-variable . defcustom))))
+         (cadr name)))))
 
 ;; Warn if the function or macro is being redefined with a different
 ;; number of arguments.
@@ -1344,7 +1349,8 @@ extra args."
   (unless byte-compile-cl-functions
     (dolist (elt load-history)
       (when (and (stringp (car elt))
-                (string-match "^cl\\>" (car elt)))
+                (string-match
+                 "^cl\\>" (file-name-nondirectory (car elt))))
        (setq byte-compile-cl-functions
              (append byte-compile-cl-functions
                      (cdr elt)))))
@@ -1656,7 +1662,7 @@ The value is non-nil if there were no errors, nil if errors."
        byte-compile-dest-file)
     (setq target-file (byte-compile-dest-file filename))
     (setq byte-compile-dest-file target-file)
-    (with-current-buffer 
+    (with-current-buffer
         (setq input-buffer (get-buffer-create " *Compiler Input*"))
       (erase-buffer)
       (setq buffer-file-coding-system nil)
@@ -1843,7 +1849,7 @@ With argument, insert value in current buffer after the form."
      (displaying-byte-compile-warnings
       (and filename (byte-compile-insert-header filename inbuffer outbuffer))
       (with-current-buffer inbuffer
-       (goto-char 1)
+       (goto-char (point-min))
        ;; Should we always do this?  When calling multiple files, it
        ;; would be useful to delay this warning until all have been
        ;; compiled.  A: Yes!  b-c-u-f might contain dross from a
@@ -1918,7 +1924,7 @@ and will be removed soon.  See (elisp)Backquote in the manual."))
   (let ((dynamic-docstrings byte-compile-dynamic-docstrings)
        (dynamic byte-compile-dynamic))
     (set-buffer outbuffer)
-    (goto-char 1)
+    (goto-char (point-min))
     ;; The magic number of .elc files is ";ELC", or 0x3B454C43.  After
     ;; that is the file-format version number (18, 19 or 20) as a
     ;; byte, followed by some nulls.  The primary motivation for doing
@@ -2037,86 +2043,83 @@ list that represents a doc string reference.
   ;; We need to examine byte-compile-dynamic-docstrings
   ;; in the input buffer (now current), not in the output buffer.
   (let ((dynamic-docstrings byte-compile-dynamic-docstrings))
-    ;; FIXME: What's up with those set-buffers&prog1 thingy?  --Stef
-    (set-buffer
-     (prog1 (current-buffer)
-       (set-buffer outbuffer)
-       (let (position)
-
-        ;; Insert the doc string, and make it a comment with #@LENGTH.
-        (and (>= (nth 1 info) 0)
-             dynamic-docstrings
-             (not byte-compile-compatibility)
-             (progn
-               ;; Make the doc string start at beginning of line
-               ;; for make-docfile's sake.
-               (insert "\n")
-               (setq position
-                     (byte-compile-output-as-comment
-                      (nth (nth 1 info) form) nil))
-               (setq position (- (position-bytes position) (point-min) -1))
-               ;; If the doc string starts with * (a user variable),
-               ;; negate POSITION.
-               (if (and (stringp (nth (nth 1 info) form))
-                        (> (length (nth (nth 1 info) form)) 0)
-                        (eq (aref (nth (nth 1 info) form) 0) ?*))
-                   (setq position (- position)))))
-
-        (if preface
-            (progn
-              (insert preface)
-              (prin1 name outbuffer)))
-        (insert (car info))
-        (let ((print-escape-newlines t)
-              (print-quoted t)
-              ;; For compatibility with code before print-circle,
-              ;; use a cons cell to say that we want
-              ;; print-gensym-alist not to be cleared
-              ;; between calls to print functions.
-              (print-gensym '(t))
-              (print-circle           ; handle circular data structures
-               (not byte-compile-disable-print-circle))
-              print-gensym-alist    ; was used before print-circle existed.
-              (print-continuous-numbering t)
-              print-number-table
-              (index 0))
-          (prin1 (car form) outbuffer)
-          (while (setq form (cdr form))
-            (setq index (1+ index))
-            (insert " ")
-            (cond ((and (numberp specindex) (= index specindex)
-                        ;; Don't handle the definition dynamically
-                        ;; if it refers (or might refer)
-                        ;; 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)))
-                          (not non-nil)))
-                   ;; Output the byte code and constants specially
-                   ;; for lazy dynamic loading.
-                   (let ((position
-                          (byte-compile-output-as-comment
-                           (cons (car form) (nth 1 form))
-                           t)))
-                     (setq position (- (position-bytes position) (point-min) -1))
-                     (princ (format "(#$ . %d) nil" position) outbuffer)
-                     (setq form (cdr form))
-                     (setq index (1+ index))))
-                  ((= index (nth 1 info))
-                   (if position
-                       (princ (format (if quoted "'(#$ . %d)"  "(#$ . %d)")
-                                      position)
-                              outbuffer)
-                     (let ((print-escape-newlines nil))
-                       (goto-char (prog1 (1+ (point))
-                                    (prin1 (car form) outbuffer)))
-                       (insert "\\\n")
-                       (goto-char (point-max)))))
-                  (t
-                   (prin1 (car form) outbuffer)))))
-        (insert (nth 2 info))))))
+    (with-current-buffer outbuffer
+      (let (position)
+
+        ;; Insert the doc string, and make it a comment with #@LENGTH.
+        (and (>= (nth 1 info) 0)
+             dynamic-docstrings
+             (not byte-compile-compatibility)
+             (progn
+               ;; Make the doc string start at beginning of line
+               ;; for make-docfile's sake.
+               (insert "\n")
+               (setq position
+                     (byte-compile-output-as-comment
+                      (nth (nth 1 info) form) nil))
+               (setq position (- (position-bytes position) (point-min) -1))
+               ;; If the doc string starts with * (a user variable),
+               ;; negate POSITION.
+               (if (and (stringp (nth (nth 1 info) form))
+                        (> (length (nth (nth 1 info) form)) 0)
+                        (eq (aref (nth (nth 1 info) form) 0) ?*))
+                   (setq position (- position)))))
+
+        (if preface
+            (progn
+              (insert preface)
+              (prin1 name outbuffer)))
+        (insert (car info))
+        (let ((print-escape-newlines t)
+              (print-quoted t)
+              ;; For compatibility with code before print-circle,
+              ;; use a cons cell to say that we want
+              ;; print-gensym-alist not to be cleared
+              ;; between calls to print functions.
+              (print-gensym '(t))
+              (print-circle             ; handle circular data structures
+               (not byte-compile-disable-print-circle))
+              print-gensym-alist     ; was used before print-circle existed.
+              (print-continuous-numbering t)
+              print-number-table
+              (index 0))
+          (prin1 (car form) outbuffer)
+          (while (setq form (cdr form))
+            (setq index (1+ index))
+            (insert " ")
+            (cond ((and (numberp specindex) (= index specindex)
+                        ;; Don't handle the definition dynamically
+                        ;; if it refers (or might refer)
+                        ;; 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)))
+                          (not non-nil)))
+                   ;; Output the byte code and constants specially
+                   ;; for lazy dynamic loading.
+                   (let ((position
+                          (byte-compile-output-as-comment
+                           (cons (car form) (nth 1 form))
+                           t)))
+                     (setq position (- (position-bytes position) (point-min) -1))
+                     (princ (format "(#$ . %d) nil" position) outbuffer)
+                     (setq form (cdr form))
+                     (setq index (1+ index))))
+                  ((= index (nth 1 info))
+                   (if position
+                       (princ (format (if quoted "'(#$ . %d)"  "(#$ . %d)")
+                                      position)
+                              outbuffer)
+                     (let ((print-escape-newlines nil))
+                       (goto-char (prog1 (1+ (point))
+                                    (prin1 (car form) outbuffer)))
+                       (insert "\\\n")
+                       (goto-char (point-max)))))
+                  (t
+                   (prin1 (car form) outbuffer)))))
+        (insert (nth 2 info)))))
   nil)
 
 (defun byte-compile-keep-pending (form &optional handler)
@@ -2240,8 +2243,7 @@ list that represents a doc string reference.
 
 (put 'require 'byte-hunk-handler 'byte-compile-file-form-require)
 (defun byte-compile-file-form-require (form)
-  (let ((old-load-list current-load-list)
-       (args (mapcar 'eval (cdr form))))
+  (let ((args (mapcar 'eval (cdr form))))
     (apply 'require args)
     ;; Detect (require 'cl) in a way that works even if cl is already loaded.
     (if (member (car args) '("cl" cl))
@@ -2403,39 +2405,37 @@ list that represents a doc string reference.
 ;; If QUOTED is non-nil, print with quoting; otherwise, print without quoting.
 (defun byte-compile-output-as-comment (exp quoted)
   (let ((position (point)))
-    (set-buffer
-     (prog1 (current-buffer)
-       (set-buffer outbuffer)
-
-       ;; Insert EXP, and make it a comment with #@LENGTH.
-       (insert " ")
-       (if quoted
-          (prin1 exp outbuffer)
-        (princ exp outbuffer))
-       (goto-char position)
-       ;; Quote certain special characters as needed.
-       ;; get_doc_string in doc.c does the unquoting.
-       (while (search-forward "\^A" nil t)
-        (replace-match "\^A\^A" t t))
-       (goto-char position)
-       (while (search-forward "\000" nil t)
-        (replace-match "\^A0" t t))
-       (goto-char position)
-       (while (search-forward "\037" nil t)
-        (replace-match "\^A_" t t))
-       (goto-char (point-max))
-       (insert "\037")
-       (goto-char position)
-       (insert "#@" (format "%d" (- (position-bytes (point-max))
-                                   (position-bytes position))))
-
-       ;; Save the file position of the object.
-       ;; Note we should add 1 to skip the space
-       ;; that we inserted before the actual doc string,
-       ;; and subtract 1 to convert from an 1-origin Emacs position
-       ;; to a file position; they cancel.
-       (setq position (point))
-       (goto-char (point-max))))
+    (with-current-buffer outbuffer
+
+      ;; Insert EXP, and make it a comment with #@LENGTH.
+      (insert " ")
+      (if quoted
+          (prin1 exp outbuffer)
+        (princ exp outbuffer))
+      (goto-char position)
+      ;; Quote certain special characters as needed.
+      ;; get_doc_string in doc.c does the unquoting.
+      (while (search-forward "\^A" nil t)
+        (replace-match "\^A\^A" t t))
+      (goto-char position)
+      (while (search-forward "\000" nil t)
+        (replace-match "\^A0" t t))
+      (goto-char position)
+      (while (search-forward "\037" nil t)
+        (replace-match "\^A_" t t))
+      (goto-char (point-max))
+      (insert "\037")
+      (goto-char position)
+      (insert "#@" (format "%d" (- (position-bytes (point-max))
+                                   (position-bytes position))))
+
+      ;; Save the file position of the object.
+      ;; Note we should add 1 to skip the space
+      ;; that we inserted before the actual doc string,
+      ;; and subtract 1 to convert from an 1-origin Emacs position
+      ;; to a file position; they cancel.
+      (setq position (point))
+      (goto-char (point-max)))
     position))
 
 
@@ -2835,6 +2835,11 @@ That command is designed for interactive use only" fn))
 (defun byte-compile-normal-call (form)
   (if byte-compile-generate-call-tree
       (byte-compile-annotate-call-tree form))
+  (when (and for-effect (eq (car form) 'mapcar)
+            (memq 'mapcar byte-compile-warnings))
+    (byte-compile-set-symbol-position 'mapcar)
+    (byte-compile-warn
+     "`mapcar' called for effect; use `mapc' or `dolist' instead"))
   (byte-compile-push-constant (car form))
   (mapc 'byte-compile-form (cdr form)) ; wasteful, but faster.
   (byte-compile-out 'byte-call (length (cdr form))))
@@ -3892,7 +3897,8 @@ that suppresses all warnings during execution of BODY."
 ;; Warn about misuses of make-variable-buffer-local.
 (byte-defop-compiler-1 make-variable-buffer-local byte-compile-make-variable-buffer-local)
 (defun byte-compile-make-variable-buffer-local (form)
-  (if (eq (car-safe (car-safe (cdr-safe form))) 'quote)
+  (if (and (eq (car-safe (car-safe (cdr-safe form))) 'quote)
+           (memq 'make-local byte-compile-warnings))
       (byte-compile-warn
        "`make-variable-buffer-local' should be called at toplevel"))
   (byte-compile-normal-call form))
@@ -4237,18 +4243,18 @@ and corresponding effects."
       (assq 'byte-code (symbol-function 'byte-compile-form))
       (let ((byte-optimize nil)                ; do it fast
            (byte-compile-warnings nil))
-       (mapcar (lambda (x)
-                 (or noninteractive (message "compiling %s..." x))
-                 (byte-compile x)
-                 (or noninteractive (message "compiling %s...done" x)))
-               '(byte-compile-normal-call
-                 byte-compile-form
-                 byte-compile-body
-                 ;; Inserted some more than necessary, to speed it up.
-                 byte-compile-top-level
-                 byte-compile-out-toplevel
-                 byte-compile-constant
-                 byte-compile-variable-ref))))
+       (mapc (lambda (x)
+               (or noninteractive (message "compiling %s..." x))
+               (byte-compile x)
+               (or noninteractive (message "compiling %s...done" x)))
+             '(byte-compile-normal-call
+               byte-compile-form
+               byte-compile-body
+               ;; Inserted some more than necessary, to speed it up.
+               byte-compile-top-level
+               byte-compile-out-toplevel
+               byte-compile-constant
+               byte-compile-variable-ref))))
   nil)
 
 (run-hooks 'bytecomp-load-hook)
index e1835d75fcb364fb3539cd3496e9a867839fac14..edbf382f39e154abe939f34f427728230903ad27 100644 (file)
   :group 'lisp
   :version "20.3")
 
+(defcustom checkdoc-minor-mode-string " CDoc"
+  "*String to display in mode line when Checkdoc mode is enabled; nil for none."
+  :type '(choice string (const :tag "None" nil))
+  :group 'checkdoc
+  :version "23.1")
+
 (defcustom checkdoc-autofix-flag 'semiautomatic
   "Non-nil means attempt auto-fixing of doc strings.
 If this value is the symbol `query', then the user is queried before
@@ -227,7 +233,7 @@ and that it's good but not required practice to make non user visible items
 have doc strings."
   :group 'checkdoc
   :type 'boolean)
-(put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp)
+;;;###autoload(put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp)
 
 (defcustom checkdoc-force-history-flag t
   "Non-nil means that files should have a History section or ChangeLog file.
@@ -243,7 +249,7 @@ should be used when the first part could stand alone as a sentence, but
 it indicates that a modifying clause follows."
   :group 'checkdoc
   :type 'boolean)
-(put 'checkdoc-permit-comma-termination-flag 'safe-local-variable 'booleanp)
+;;;###autoload(put 'checkdoc-permit-comma-termination-flag 'safe-local-variable 'booleanp)
 
 (defcustom checkdoc-spellcheck-documentation-flag nil
   "Non-nil means run Ispell on text based on value.
@@ -1251,7 +1257,7 @@ bound to \\<checkdoc-minor-mode-map>\\[checkdoc-eval-defun] and `checkdoc-eval-c
 checking of documentation strings.
 
 \\{checkdoc-minor-mode-map}"
-  nil " CDoc" nil
+  nil checkdoc-minor-mode-string nil
   :group 'checkdoc)
 
 ;;; Subst utils
index 3036bb7ea7fb08bbd4254b0893cbb03465d44e47..375a07f9f7dc9fa779fb6b76b2bcd93176da1f0d 100644 (file)
@@ -43,6 +43,7 @@
 
 ;;; Type coercion.
 
+;;;###autoload
 (defun coerce (x type)
   "Coerce OBJECT to type TYPE.
 TYPE is a Common Lisp type specifier.
@@ -60,6 +61,7 @@ TYPE is a Common Lisp type specifier.
 
 ;;; Predicates.
 
+;;;###autoload
 (defun equalp (x y)
   "Return t if two Lisp objects have similar structures and contents.
 This is like `equal', except that it accepts numerically equal
@@ -87,6 +89,7 @@ strings case-insensitively."
 
 ;;; Control structures.
 
+;;;###autoload
 (defun cl-mapcar-many (cl-func cl-seqs)
   (if (cdr (cdr cl-seqs))
       (let* ((cl-res nil)
@@ -119,6 +122,7 @@ strings case-insensitively."
                   cl-res)))
       (nreverse cl-res))))
 
+;;;###autoload
 (defun map (cl-type cl-func cl-seq &rest cl-rest)
   "Map a FUNCTION across one or more SEQUENCEs, returning a sequence.
 TYPE is the sequence type to return.
@@ -126,6 +130,7 @@ TYPE is the sequence type to return.
   (let ((cl-res (apply 'mapcar* cl-func cl-seq cl-rest)))
     (and cl-type (coerce cl-res cl-type))))
 
+;;;###autoload
 (defun maplist (cl-func cl-list &rest cl-rest)
   "Map FUNCTION to each sublist of LIST or LISTs.
 Like `mapcar', except applies to lists and their cdr's rather than to
@@ -154,6 +159,7 @@ the elements themselves.
             cl-seq)
     (mapc cl-func cl-seq)))
 
+;;;###autoload
 (defun mapl (cl-func cl-list &rest cl-rest)
   "Like `maplist', but does not accumulate values returned by the function.
 \n(fn FUNCTION LIST...)"
@@ -163,16 +169,19 @@ the elements themselves.
       (while cl-p (funcall cl-func cl-p) (setq cl-p (cdr cl-p)))))
   cl-list)
 
+;;;###autoload
 (defun mapcan (cl-func cl-seq &rest cl-rest)
   "Like `mapcar', but nconc's together the values returned by the function.
 \n(fn FUNCTION SEQUENCE...)"
   (apply 'nconc (apply 'mapcar* cl-func cl-seq cl-rest)))
 
+;;;###autoload
 (defun mapcon (cl-func cl-list &rest cl-rest)
   "Like `maplist', but nconc's together the values returned by the function.
 \n(fn FUNCTION LIST...)"
   (apply 'nconc (apply 'maplist cl-func cl-list cl-rest)))
 
+;;;###autoload
 (defun some (cl-pred cl-seq &rest cl-rest)
   "Return true if PREDICATE is true of any element of SEQ or SEQs.
 If so, return the true (non-nil) value returned by PREDICATE.
@@ -188,6 +197,7 @@ If so, return the true (non-nil) value returned by PREDICATE.
       (while (and cl-seq (not (setq cl-x (funcall cl-pred (pop cl-seq))))))
       cl-x)))
 
+;;;###autoload
 (defun every (cl-pred cl-seq &rest cl-rest)
   "Return true if PREDICATE is true of every element of SEQ or SEQs.
 \n(fn PREDICATE SEQ...)"
@@ -201,19 +211,23 @@ If so, return the true (non-nil) value returned by PREDICATE.
       (setq cl-seq (cdr cl-seq)))
     (null cl-seq)))
 
+;;;###autoload
 (defun notany (cl-pred cl-seq &rest cl-rest)
   "Return true if PREDICATE is false of every element of SEQ or SEQs.
 \n(fn PREDICATE SEQ...)"
   (not (apply 'some cl-pred cl-seq cl-rest)))
 
+;;;###autoload
 (defun notevery (cl-pred cl-seq &rest cl-rest)
   "Return true if PREDICATE is false of some element of SEQ or SEQs.
 \n(fn PREDICATE SEQ...)"
   (not (apply 'every cl-pred cl-seq cl-rest)))
 
 ;;; Support for `loop'.
+;;;###autoload
 (defalias 'cl-map-keymap 'map-keymap)
 
+;;;###autoload
 (defun cl-map-keymap-recursively (cl-func-rec cl-map &optional cl-base)
   (or cl-base
       (setq cl-base (copy-sequence [0])))
@@ -228,6 +242,7 @@ If so, return the true (non-nil) value returned by PREDICATE.
        (funcall cl-func-rec cl-base cl-bind))))
    cl-map))
 
+;;;###autoload
 (defun cl-map-intervals (cl-func &optional cl-what cl-prop cl-start cl-end)
   (or cl-what (setq cl-what (current-buffer)))
   (if (bufferp cl-what)
@@ -255,6 +270,7 @@ If so, return the true (non-nil) value returned by PREDICATE.
        (funcall cl-func cl-start (min cl-next cl-end))
        (setq cl-start cl-next)))))
 
+;;;###autoload
 (defun cl-map-overlays (cl-func &optional cl-buffer cl-start cl-end cl-arg)
   (or cl-buffer (setq cl-buffer (current-buffer)))
   (if (fboundp 'overlay-lists)
@@ -296,6 +312,7 @@ If so, return the true (non-nil) value returned by PREDICATE.
       (set-marker cl-mark nil) (if cl-mark2 (set-marker cl-mark2 nil)))))
 
 ;;; Support for `setf'.
+;;;###autoload
 (defun cl-set-frame-visible-p (frame val)
   (cond ((null val) (make-frame-invisible frame))
        ((eq val 'icon) (iconify-frame frame))
@@ -304,6 +321,7 @@ If so, return the true (non-nil) value returned by PREDICATE.
 
 ;;; Support for `progv'.
 (defvar cl-progv-save)
+;;;###autoload
 (defun cl-progv-before (syms values)
   (while syms
     (push (if (boundp (car syms))
@@ -323,6 +341,7 @@ If so, return the true (non-nil) value returned by PREDICATE.
 
 ;;; Numbers.
 
+;;;###autoload
 (defun gcd (&rest args)
   "Return the greatest common divisor of the arguments."
   (let ((a (abs (or (pop args) 0))))
@@ -331,6 +350,7 @@ If so, return the true (non-nil) value returned by PREDICATE.
        (while (> b 0) (setq b (% a (setq a b))))))
     a))
 
+;;;###autoload
 (defun lcm (&rest args)
   "Return the least common multiple of the arguments."
   (if (memq 0 args)
@@ -341,6 +361,7 @@ If so, return the true (non-nil) value returned by PREDICATE.
          (setq a (* (/ a (gcd a b)) b))))
       a)))
 
+;;;###autoload
 (defun isqrt (x)
   "Return the integer square root of the argument."
   (if (and (integerp x) (> x 0))
@@ -352,12 +373,14 @@ If so, return the true (non-nil) value returned by PREDICATE.
        g)
     (if (eq x 0) 0 (signal 'arith-error nil))))
 
+;;;###autoload
 (defun floor* (x &optional y)
   "Return a list of the floor of X and the fractional part of X.
 With two arguments, return floor and remainder of their quotient."
   (let ((q (floor x y)))
     (list q (- x (if y (* y q) q)))))
 
+;;;###autoload
 (defun ceiling* (x &optional y)
   "Return a list of the ceiling of X and the fractional part of X.
 With two arguments, return ceiling and remainder of their quotient."
@@ -365,12 +388,14 @@ With two arguments, return ceiling and remainder of their quotient."
     (if (= (car (cdr res)) 0) res
       (list (1+ (car res)) (- (car (cdr res)) (or y 1))))))
 
+;;;###autoload
 (defun truncate* (x &optional y)
   "Return a list of the integer part of X and the fractional part of X.
 With two arguments, return truncation and remainder of their quotient."
   (if (eq (>= x 0) (or (null y) (>= y 0)))
       (floor* x y) (ceiling* x y)))
 
+;;;###autoload
 (defun round* (x &optional y)
   "Return a list of X rounded to the nearest integer and the remainder.
 With two arguments, return rounding and remainder of their quotient."
@@ -389,14 +414,17 @@ With two arguments, return rounding and remainder of their quotient."
       (let ((q (round x)))
        (list q (- x q))))))
 
+;;;###autoload
 (defun mod* (x y)
   "The remainder of X divided by Y, with the same sign as Y."
   (nth 1 (floor* x y)))
 
+;;;###autoload
 (defun rem* (x y)
   "The remainder of X divided by Y, with the same sign as X."
   (nth 1 (truncate* x y)))
 
+;;;###autoload
 (defun signum (x)
   "Return 1 if X is positive, -1 if negative, 0 if zero."
   (cond ((> x 0) 1) ((< x 0) -1) (t 0)))
@@ -405,6 +433,7 @@ With two arguments, return rounding and remainder of their quotient."
 ;; Random numbers.
 
 (defvar *random-state*)
+;;;###autoload
 (defun random* (lim &optional state)
   "Return a random nonnegative number less than LIM, an integer or float.
 Optional second arg STATE is a random-state object."
@@ -412,7 +441,7 @@ Optional second arg STATE is a random-state object."
   ;; Inspired by "ran3" from Numerical Recipes.  Additive congruential method.
   (let ((vec (aref state 3)))
     (if (integerp vec)
-       (let ((i 0) (j (- 1357335 (% (abs vec) 1357333))) (k 1) ii)
+       (let ((i 0) (j (- 1357335 (% (abs vec) 1357333))) (k 1))
          (aset state 3 (setq vec (make-vector 55 nil)))
          (aset vec 0 j)
          (while (> (setq i (% (+ i 21) 55)) 0)
@@ -429,6 +458,7 @@ Optional second arg STATE is a random-state object."
              (if (< (setq n (logand n mask)) lim) n (random* lim state))))
        (* (/ n '8388608e0) lim)))))
 
+;;;###autoload
 (defun make-random-state (&optional state)
   "Return a copy of random-state STATE, or of `*random-state*' if omitted.
 If STATE is t, return a new state object seeded from the time of day."
@@ -437,6 +467,7 @@ If STATE is t, return a new state object seeded from the time of day."
        ((integerp state) (vector 'cl-random-state-tag -1 30 state))
        (t (make-random-state (cl-random-time)))))
 
+;;;###autoload
 (defun random-state-p (object)
   "Return t if OBJECT is a random-state object."
   (and (vectorp object) (= (length object) 4)
@@ -460,6 +491,7 @@ If STATE is t, return a new state object seeded from the time of day."
 (defvar float-epsilon)
 (defvar float-negative-epsilon)
 
+;;;###autoload
 (defun cl-float-limits ()
   (or most-positive-float (not (numberp '2e1))
       (let ((x '2e0) y z)
@@ -497,6 +529,7 @@ If STATE is t, return a new state object seeded from the time of day."
 
 ;;; Sequence functions.
 
+;;;###autoload
 (defun subseq (seq start &optional end)
   "Return the subsequence of SEQ from START to END.
 If END is omitted, it defaults to the length of the sequence.
@@ -522,6 +555,7 @@ If START or END is negative, it counts from the end."
                 (setq i (1+ i) start (1+ start)))
               res))))))
 
+;;;###autoload
 (defun concatenate (type &rest seqs)
   "Concatenate, into a sequence of type TYPE, the argument SEQUENCEs.
 \n(fn TYPE SEQUENCE...)"
@@ -533,14 +567,17 @@ If START or END is negative, it counts from the end."
 
 ;;; List functions.
 
+;;;###autoload
 (defun revappend (x y)
   "Equivalent to (append (reverse X) Y)."
   (nconc (reverse x) y))
 
+;;;###autoload
 (defun nreconc (x y)
   "Equivalent to (nconc (nreverse X) Y)."
   (nconc (nreverse x) y))
 
+;;;###autoload
 (defun list-length (x)
   "Return the length of list X.  Return nil if list is circular."
   (let ((n 0) (fast x) (slow x))
@@ -548,6 +585,7 @@ If START or END is negative, it counts from the end."
       (setq n (+ n 2) fast (cdr (cdr fast)) slow (cdr slow)))
     (if fast (if (cdr fast) nil (1+ n)) n)))
 
+;;;###autoload
 (defun tailp (sublist list)
   "Return true if SUBLIST is a tail of LIST."
   (while (and (consp list) (not (eq sublist list)))
@@ -559,6 +597,7 @@ If START or END is negative, it counts from the end."
 
 ;;; Property lists.
 
+;;;###autoload
 (defun get* (sym tag &optional def)    ; See compiler macro in cl-macs.el
   "Return the value of SYMBOL's PROPNAME property, or DEFAULT if none.
 \n(fn SYMBOL PROPNAME &optional DEFAULT)"
@@ -569,6 +608,7 @@ If START or END is negative, it counts from the end."
               (setq plist (cdr (cdr plist))))
             (if plist (car (cdr plist)) def)))))
 
+;;;###autoload
 (defun getf (plist tag &optional def)
   "Search PROPLIST for property PROPNAME; return its value or DEFAULT.
 PROPLIST is a list of the sort returned by `symbol-plist'.
@@ -583,16 +623,19 @@ PROPLIST is a list of the sort returned by `symbol-plist'.
          (setq plist (cdr (cdr plist))))
        (if plist (car (cdr plist)) def))))
 
+;;;###autoload
 (defun cl-set-getf (plist tag val)
   (let ((p plist))
     (while (and p (not (eq (car p) tag))) (setq p (cdr (cdr p))))
     (if p (progn (setcar (cdr p) val) plist) (list* tag val plist))))
 
+;;;###autoload
 (defun cl-do-remf (plist 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))))
 
+;;;###autoload
 (defun cl-remprop (sym tag)
   "Remove from SYMBOL's plist the property PROPNAME and its value.
 \n(fn SYMBOL PROPNAME)"
@@ -600,6 +643,7 @@ PROPLIST is a list of the sort returned by `symbol-plist'.
     (if (and plist (eq tag (car plist)))
        (progn (setplist sym (cdr (cdr plist))) t)
       (cl-do-remf plist tag))))
+;;;###autoload
 (defalias 'remprop 'cl-remprop)
 
 
@@ -616,14 +660,22 @@ PROPLIST is a list of the sort returned by `symbol-plist'.
 (defvar cl-builtin-clrhash (symbol-function 'clrhash))
 (defvar cl-builtin-maphash (symbol-function 'maphash))
 
+;;;###autoload
 (defalias 'cl-gethash 'gethash)
+;;;###autoload
 (defalias 'cl-puthash 'puthash)
+;;;###autoload
 (defalias 'cl-remhash 'remhash)
+;;;###autoload
 (defalias 'cl-clrhash 'clrhash)
+;;;###autoload
 (defalias 'cl-maphash 'maphash)
 ;; These three actually didn't exist in Emacs-20.
+;;;###autoload
 (defalias 'cl-make-hash-table 'make-hash-table)
+;;;###autoload
 (defalias 'cl-hash-table-p 'hash-table-p)
+;;;###autoload
 (defalias 'cl-hash-table-count 'hash-table-count)
 
 ;;; Some debugging aids.
@@ -672,6 +724,7 @@ PROPLIST is a list of the sort returned by `symbol-plist'.
 (defvar cl-macroexpand-cmacs nil)
 (defvar cl-closure-vars nil)
 
+;;;###autoload
 (defun cl-macroexpand-all (form &optional env)
   "Expand all macro calls through a Lisp FORM.
 This also does some trivial optimizations to make the form prettier."
@@ -753,6 +806,7 @@ This also does some trivial optimizations to make the form prettier."
 (defun cl-macroexpand-body (body &optional env)
   (mapcar (function (lambda (x) (cl-macroexpand-all x env))) body))
 
+;;;###autoload
 (defun cl-prettyexpand (form &optional full)
   (message "Expanding...")
   (let ((cl-macroexpand-cmacs full) (cl-compiling-file full)
@@ -767,5 +821,9 @@ This also does some trivial optimizations to make the form prettier."
 
 (run-hooks 'cl-extra-load-hook)
 
+;; Local variables:
+;; generated-autoload-file: "cl-loaddefs.el"
+;; End:
+
 ;; arch-tag: bcd03437-0871-43fb-a8f1-ad0e0b5427ed
 ;;; cl-extra.el ends here
index 1589e19cbb2d3e6fbe5bb4146f60fbfb87be0dad..a46fead6eb5d6a591ed7c3314653f3d7d839f057 100644 (file)
@@ -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" "47c92504dda976a632c2c10bedd4b6a4")
+;;;;;;  cl-mapcar-many equalp coerce) "cl-extra" "cl-extra.el" "53c2b3ede19dac62cff13a37f58cdf9c")
 ;;; Generated autoloads from cl-extra.el
 
 (autoload (quote coerce) "cl-extra" "\
@@ -283,53 +283,53 @@ Not documented
 ;;;;;;  do* do loop return-from return block etypecase typecase ecase
 ;;;;;;  case load-time-value eval-when destructuring-bind function*
 ;;;;;;  defmacro* defun* gentemp gensym cl-compile-time-init) "cl-macs"
-;;;;;;  "cl-macs.el" "7ccc827d272482ca276937ca18a7895a")
+;;;;;;  "cl-macs.el" "d1c9f68f599fbec644a06dd5cf520fb5")
 ;;; Generated autoloads from cl-macs.el
 
-(autoload (quote cl-compile-time-init) "cl-macs" "\
+(autoload 'cl-compile-time-init "cl-macs" "\
 Not documented
 
 \(fn)" nil nil)
 
-(autoload (quote gensym) "cl-macs" "\
+(autoload 'gensym "cl-macs" "\
 Generate a new uninterned symbol.
 The name is made by appending a number to PREFIX, default \"G\".
 
 \(fn &optional PREFIX)" nil nil)
 
-(autoload (quote gentemp) "cl-macs" "\
+(autoload 'gentemp "cl-macs" "\
 Generate a new interned symbol with a unique name.
 The name is made by appending a number to PREFIX, default \"G\".
 
 \(fn &optional PREFIX)" nil nil)
 
-(autoload (quote defun*) "cl-macs" "\
+(autoload 'defun* "cl-macs" "\
 Define NAME as a function.
 Like normal `defun', except ARGLIST allows full Common Lisp conventions,
 and BODY is implicitly surrounded by (block NAME ...).
 
 \(fn NAME ARGLIST [DOCSTRING] BODY...)" nil (quote macro))
 
-(autoload (quote defmacro*) "cl-macs" "\
+(autoload 'defmacro* "cl-macs" "\
 Define NAME as a macro.
 Like normal `defmacro', except ARGLIST allows full Common Lisp conventions,
 and BODY is implicitly surrounded by (block NAME ...).
 
 \(fn NAME ARGLIST [DOCSTRING] BODY...)" nil (quote macro))
 
-(autoload (quote function*) "cl-macs" "\
+(autoload 'function* "cl-macs" "\
 Introduce a function.
 Like normal `function', except that if argument is a lambda form,
 its argument list allows full Common Lisp conventions.
 
 \(fn FUNC)" nil (quote macro))
 
-(autoload (quote destructuring-bind) "cl-macs" "\
+(autoload 'destructuring-bind "cl-macs" "\
 Not documented
 
 \(fn ARGS EXPR &rest BODY)" nil (quote macro))
 
-(autoload (quote eval-when) "cl-macs" "\
+(autoload 'eval-when "cl-macs" "\
 Control when BODY is evaluated.
 If `compile' is in WHEN, BODY is evaluated when compiled at top-level.
 If `load' is in WHEN, BODY is evaluated when loaded after top-level compile.
@@ -337,13 +337,13 @@ If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level.
 
 \(fn (WHEN...) BODY...)" nil (quote macro))
 
-(autoload (quote load-time-value) "cl-macs" "\
+(autoload 'load-time-value "cl-macs" "\
 Like `progn', but evaluates the body at load time.
 The result of the body appears to the compiler as a quoted constant.
 
 \(fn FORM &optional READ-ONLY)" nil (quote macro))
 
-(autoload (quote case) "cl-macs" "\
+(autoload 'case "cl-macs" "\
 Eval EXPR and choose among clauses on that value.
 Each clause looks like (KEYLIST BODY...).  EXPR is evaluated and compared
 against each key in each KEYLIST; the corresponding BODY is evaluated.
@@ -354,13 +354,13 @@ Key values are compared by `eql'.
 
 \(fn EXPR (KEYLIST BODY...)...)" nil (quote macro))
 
-(autoload (quote ecase) "cl-macs" "\
+(autoload 'ecase "cl-macs" "\
 Like `case', but error if no case fits.
 `otherwise'-clauses are not allowed.
 
 \(fn EXPR (KEYLIST BODY...)...)" nil (quote macro))
 
-(autoload (quote typecase) "cl-macs" "\
+(autoload 'typecase "cl-macs" "\
 Evals EXPR, chooses among clauses on that value.
 Each clause looks like (TYPE BODY...).  EXPR is evaluated and, if it
 satisfies TYPE, the corresponding BODY is evaluated.  If no clause succeeds,
@@ -369,13 +369,13 @@ final clause, and matches if no other keys match.
 
 \(fn EXPR (TYPE BODY...)...)" nil (quote macro))
 
-(autoload (quote etypecase) "cl-macs" "\
+(autoload 'etypecase "cl-macs" "\
 Like `typecase', but error if no case fits.
 `otherwise'-clauses are not allowed.
 
 \(fn EXPR (TYPE BODY...)...)" nil (quote macro))
 
-(autoload (quote block) "cl-macs" "\
+(autoload 'block "cl-macs" "\
 Define a lexically-scoped block named NAME.
 NAME may be any symbol.  Code inside the BODY forms can call `return-from'
 to jump prematurely out of the block.  This differs from `catch' and `throw'
@@ -387,13 +387,13 @@ called from BODY.
 
 \(fn NAME &rest BODY)" nil (quote macro))
 
-(autoload (quote return) "cl-macs" "\
+(autoload 'return "cl-macs" "\
 Return from the block named nil.
 This is equivalent to `(return-from nil RESULT)'.
 
 \(fn &optional RESULT)" nil (quote macro))
 
-(autoload (quote return-from) "cl-macs" "\
+(autoload 'return-from "cl-macs" "\
 Return from the block named NAME.
 This jump out to the innermost enclosing `(block NAME ...)' form,
 returning RESULT from that form (or nil if RESULT is omitted).
@@ -402,7 +402,7 @@ This is compatible with Common Lisp, but note that `defun' and
 
 \(fn NAME &optional RESULT)" nil (quote macro))
 
-(autoload (quote loop) "cl-macs" "\
+(autoload 'loop "cl-macs" "\
 The Common Lisp `loop' macro.
 Valid clauses are:
   for VAR from/upfrom/downfrom NUM to/upto/downto/above/below NUM by NUM,
@@ -418,24 +418,24 @@ Valid clauses are:
 
 \(fn CLAUSE...)" nil (quote macro))
 
-(autoload (quote do) "cl-macs" "\
+(autoload 'do "cl-macs" "\
 The Common Lisp `do' loop.
 
 \(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil (quote macro))
 
-(autoload (quote do*) "cl-macs" "\
+(autoload 'do* "cl-macs" "\
 The Common Lisp `do*' loop.
 
 \(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil (quote macro))
 
-(autoload (quote dolist) "cl-macs" "\
+(autoload 'dolist "cl-macs" "\
 Loop over a list.
 Evaluate BODY with VAR bound to each `car' from LIST, in turn.
 Then evaluate RESULT to get return value, default nil.
 
 \(fn (VAR LIST [RESULT]) BODY...)" nil (quote macro))
 
-(autoload (quote dotimes) "cl-macs" "\
+(autoload 'dotimes "cl-macs" "\
 Loop a certain number of times.
 Evaluate BODY with VAR bound to successive integers from 0, inclusive,
 to COUNT, exclusive.  Then evaluate RESULT to get return value, default
@@ -443,26 +443,26 @@ nil.
 
 \(fn (VAR COUNT [RESULT]) BODY...)" nil (quote macro))
 
-(autoload (quote do-symbols) "cl-macs" "\
+(autoload 'do-symbols "cl-macs" "\
 Loop over all symbols.
 Evaluate BODY with VAR bound to each interned symbol, or to each symbol
 from OBARRAY.
 
 \(fn (VAR [OBARRAY [RESULT]]) BODY...)" nil (quote macro))
 
-(autoload (quote do-all-symbols) "cl-macs" "\
+(autoload 'do-all-symbols "cl-macs" "\
 Not documented
 
 \(fn SPEC &rest BODY)" nil (quote macro))
 
-(autoload (quote psetq) "cl-macs" "\
+(autoload 'psetq "cl-macs" "\
 Set SYMs to the values VALs in parallel.
 This is like `setq', except that all VAL forms are evaluated (in order)
 before assigning any symbols SYM to the corresponding values.
 
 \(fn SYM VAL SYM VAL ...)" nil (quote macro))
 
-(autoload (quote progv) "cl-macs" "\
+(autoload 'progv "cl-macs" "\
 Bind SYMBOLS to VALUES dynamically in BODY.
 The forms SYMBOLS and VALUES are evaluated, and must evaluate to lists.
 Each symbol in the first list is bound to the corresponding value in the
@@ -472,7 +472,7 @@ a `let' form, except that the list of symbols can be computed at run-time.
 
 \(fn SYMBOLS VALUES &rest BODY)" nil (quote macro))
 
-(autoload (quote flet) "cl-macs" "\
+(autoload 'flet "cl-macs" "\
 Make temporary function definitions.
 This is an analogue of `let' that operates on the function cell of FUNC
 rather than its value cell.  The FORMs are evaluated with the specified
@@ -481,41 +481,41 @@ go back to their previous definitions, or lack thereof).
 
 \(fn ((FUNC ARGLIST BODY...) ...) FORM...)" nil (quote macro))
 
-(autoload (quote labels) "cl-macs" "\
+(autoload 'labels "cl-macs" "\
 Make temporary function bindings.
 This is like `flet', except the bindings are lexical instead of dynamic.
 Unlike `flet', this macro is fully compliant with the Common Lisp standard.
 
 \(fn ((FUNC ARGLIST BODY...) ...) FORM...)" nil (quote macro))
 
-(autoload (quote macrolet) "cl-macs" "\
+(autoload 'macrolet "cl-macs" "\
 Make temporary macro definitions.
 This is like `flet', but for macros instead of functions.
 
 \(fn ((NAME ARGLIST BODY...) ...) FORM...)" nil (quote macro))
 
-(autoload (quote symbol-macrolet) "cl-macs" "\
+(autoload 'symbol-macrolet "cl-macs" "\
 Make symbol macro definitions.
 Within the body FORMs, references to the variable NAME will be replaced
 by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...).
 
 \(fn ((NAME EXPANSION) ...) FORM...)" nil (quote macro))
 
-(autoload (quote lexical-let) "cl-macs" "\
+(autoload 'lexical-let "cl-macs" "\
 Like `let', but lexically scoped.
 The main visible difference is that lambdas inside BODY will create
 lexical closures as in Common Lisp.
 
 \(fn VARLIST BODY)" nil (quote macro))
 
-(autoload (quote lexical-let*) "cl-macs" "\
+(autoload 'lexical-let* "cl-macs" "\
 Like `let*', but lexically scoped.
 The main visible difference is that lambdas inside BODY will create
 lexical closures as in Common Lisp.
 
 \(fn VARLIST BODY)" nil (quote macro))
 
-(autoload (quote multiple-value-bind) "cl-macs" "\
+(autoload 'multiple-value-bind "cl-macs" "\
 Collect multiple return values.
 FORM must return a list; the BODY is then executed with the first N elements
 of this list bound (`let'-style) to each of the symbols SYM in turn.  This
@@ -525,7 +525,7 @@ a synonym for (list A B C).
 
 \(fn (SYM...) FORM BODY)" nil (quote macro))
 
-(autoload (quote multiple-value-setq) "cl-macs" "\
+(autoload 'multiple-value-setq "cl-macs" "\
 Collect multiple return values.
 FORM must return a list; the first N elements of this list are stored in
 each of the symbols SYM in turn.  This is analogous to the Common Lisp
@@ -534,22 +534,22 @@ values.  For compatibility, (values A B C) is a synonym for (list A B C).
 
 \(fn (SYM...) FORM)" nil (quote macro))
 
-(autoload (quote locally) "cl-macs" "\
+(autoload 'locally "cl-macs" "\
 Not documented
 
 \(fn &rest BODY)" nil (quote macro))
 
-(autoload (quote the) "cl-macs" "\
+(autoload 'the "cl-macs" "\
 Not documented
 
 \(fn TYPE FORM)" nil (quote macro))
 
-(autoload (quote declare) "cl-macs" "\
+(autoload 'declare "cl-macs" "\
 Not documented
 
 \(fn &rest SPECS)" nil (quote macro))
 
-(autoload (quote define-setf-method) "cl-macs" "\
+(autoload 'define-setf-method "cl-macs" "\
 Define a `setf' method.
 This method shows how to handle `setf's to places of the form (NAME ARGS...).
 The argument forms ARGS are bound according to ARGLIST, as if NAME were
@@ -560,7 +560,7 @@ form.  See `defsetf' for a simpler way to define most setf-methods.
 
 \(fn NAME ARGLIST BODY...)" nil (quote macro))
 
-(autoload (quote defsetf) "cl-macs" "\
+(autoload 'defsetf "cl-macs" "\
 Define a `setf' method.
 This macro is an easy-to-use substitute for `define-setf-method' that works
 well for simple place forms.  In the simple `defsetf' form, `setf's of
@@ -581,14 +581,14 @@ Example:
 
 \(fn NAME [FUNC | ARGLIST (STORE) BODY...])" nil (quote macro))
 
-(autoload (quote get-setf-method) "cl-macs" "\
+(autoload 'get-setf-method "cl-macs" "\
 Return a list of five values describing the setf-method for PLACE.
 PLACE may be any Lisp form which can appear as the PLACE argument to
 a macro like `setf' or `incf'.
 
 \(fn PLACE &optional ENV)" nil nil)
 
-(autoload (quote setf) "cl-macs" "\
+(autoload 'setf "cl-macs" "\
 Set each PLACE to the value of its VAL.
 This is a generalized version of `setq'; the PLACEs may be symbolic
 references such as (car x) or (aref x i), as well as plain symbols.
@@ -597,40 +597,40 @@ The return value is the last VAL in the list.
 
 \(fn PLACE VAL PLACE VAL ...)" nil (quote macro))
 
-(autoload (quote psetf) "cl-macs" "\
+(autoload 'psetf "cl-macs" "\
 Set PLACEs to the values VALs in parallel.
 This is like `setf', except that all VAL forms are evaluated (in order)
 before assigning any PLACEs to the corresponding values.
 
 \(fn PLACE VAL PLACE VAL ...)" nil (quote macro))
 
-(autoload (quote cl-do-pop) "cl-macs" "\
+(autoload 'cl-do-pop "cl-macs" "\
 Not documented
 
 \(fn PLACE)" nil nil)
 
-(autoload (quote remf) "cl-macs" "\
+(autoload 'remf "cl-macs" "\
 Remove TAG from property list PLACE.
 PLACE may be a symbol, or any generalized variable allowed by `setf'.
 The form returns true if TAG was found and removed, nil otherwise.
 
 \(fn PLACE TAG)" nil (quote macro))
 
-(autoload (quote shiftf) "cl-macs" "\
+(autoload 'shiftf "cl-macs" "\
 Shift left among PLACEs.
 Example: (shiftf A B C) sets A to B, B to C, and returns the old A.
 Each PLACE may be a symbol, or any generalized variable allowed by `setf'.
 
 \(fn PLACE... VAL)" nil (quote macro))
 
-(autoload (quote rotatef) "cl-macs" "\
+(autoload 'rotatef "cl-macs" "\
 Rotate left among PLACEs.
 Example: (rotatef A B C) sets A to B, B to C, and C to A.  It returns nil.
 Each PLACE may be a symbol, or any generalized variable allowed by `setf'.
 
 \(fn PLACE...)" nil (quote macro))
 
-(autoload (quote letf) "cl-macs" "\
+(autoload 'letf "cl-macs" "\
 Temporarily bind to PLACEs.
 This is the analogue of `let', but with generalized variables (in the
 sense of `setf') for the PLACEs.  Each PLACE is set to the corresponding
@@ -642,7 +642,7 @@ the PLACE is not modified before executing BODY.
 
 \(fn ((PLACE VALUE) ...) BODY...)" nil (quote macro))
 
-(autoload (quote letf*) "cl-macs" "\
+(autoload 'letf* "cl-macs" "\
 Temporarily bind to PLACEs.
 This is the analogue of `let*', but with generalized variables (in the
 sense of `setf') for the PLACEs.  Each PLACE is set to the corresponding
@@ -654,27 +654,27 @@ the PLACE is not modified before executing BODY.
 
 \(fn ((PLACE VALUE) ...) BODY...)" nil (quote macro))
 
-(autoload (quote callf) "cl-macs" "\
+(autoload 'callf "cl-macs" "\
 Set PLACE to (FUNC PLACE ARGS...).
 FUNC should be an unquoted function name.  PLACE may be a symbol,
 or any generalized variable allowed by `setf'.
 
 \(fn FUNC PLACE ARGS...)" nil (quote macro))
 
-(autoload (quote callf2) "cl-macs" "\
+(autoload 'callf2 "cl-macs" "\
 Set PLACE to (FUNC ARG1 PLACE ARGS...).
 Like `callf', but PLACE is the second argument of FUNC, not the first.
 
 \(fn FUNC ARG1 PLACE ARGS...)" nil (quote macro))
 
-(autoload (quote define-modify-macro) "cl-macs" "\
+(autoload 'define-modify-macro "cl-macs" "\
 Define a `setf'-like modify macro.
 If NAME is called, it combines its PLACE argument with the other arguments
 from ARGLIST using FUNC: (define-modify-macro incf (&optional (n 1)) +)
 
 \(fn NAME ARGLIST FUNC &optional DOC)" nil (quote macro))
 
-(autoload (quote defstruct) "cl-macs" "\
+(autoload 'defstruct "cl-macs" "\
 Define a struct type.
 This macro defines a new Lisp data type called NAME, which contains data
 stored in SLOTs.  This defines a `make-NAME' constructor, a `copy-NAME'
@@ -682,24 +682,24 @@ copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors.
 
 \(fn (NAME OPTIONS...) (SLOT SLOT-OPTS...)...)" nil (quote macro))
 
-(autoload (quote cl-struct-setf-expander) "cl-macs" "\
+(autoload 'cl-struct-setf-expander "cl-macs" "\
 Not documented
 
 \(fn X NAME ACCESSOR PRED-FORM POS)" nil nil)
 
-(autoload (quote typep) "cl-macs" "\
+(autoload 'typep "cl-macs" "\
 Check that OBJECT is of type TYPE.
 TYPE is a Common Lisp-style type specifier.
 
 \(fn OBJECT TYPE)" nil nil)
 
-(autoload (quote check-type) "cl-macs" "\
+(autoload 'check-type "cl-macs" "\
 Verify that FORM is of type TYPE; signal an error if not.
 STRING is an optional description of the desired type.
 
 \(fn FORM TYPE &optional STRING)" nil (quote macro))
 
-(autoload (quote assert) "cl-macs" "\
+(autoload 'assert "cl-macs" "\
 Verify that FORM returns non-nil; signal an error if not.
 Second arg SHOW-ARGS means to include arguments of FORM in message.
 Other args STRING and ARGS... are arguments to be passed to `error'.
@@ -708,13 +708,13 @@ omitted, a default message listing FORM itself is used.
 
 \(fn FORM &optional SHOW-ARGS STRING &rest ARGS)" nil (quote macro))
 
-(autoload (quote ignore-errors) "cl-macs" "\
+(autoload 'ignore-errors "cl-macs" "\
 Execute BODY; if an error occurs, return nil.
 Otherwise, return result of last form in BODY.
 
 \(fn &rest BODY)" nil (quote macro))
 
-(autoload (quote define-compiler-macro) "cl-macs" "\
+(autoload 'define-compiler-macro "cl-macs" "\
 Define a compiler-only macro.
 This is like `defmacro', but macro expansion occurs only if the call to
 FUNC is compiled (i.e., not interpreted).  Compiler macros should be used
@@ -728,7 +728,7 @@ and then returning foo.
 
 \(fn FUNC ARGS &rest BODY)" nil (quote macro))
 
-(autoload (quote compiler-macroexpand) "cl-macs" "\
+(autoload 'compiler-macroexpand "cl-macs" "\
 Not documented
 
 \(fn FORM)" nil nil)
@@ -745,7 +745,7 @@ Not documented
 ;;;;;;  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" "8805f76626399794931f5db36ddf855f")
+;;;;;;  replace fill reduce) "cl-seq" "cl-seq.el" "c972a97c053d4e001ac1d1012c315b28")
 ;;; Generated autoloads from cl-seq.el
 
 (autoload (quote reduce) "cl-seq" "\
index e4a84e44e64fc5fb9bff637c6f1a45e4fef41e90..2a4b69d2afcd072b2f61c4f3414e416a0f93b597 100644 (file)
@@ -58,8 +58,8 @@
 (defvar cl-optimize-speed)
 
 
-;;; This kludge allows macros which use cl-transform-function-property
-;;; to be called at compile-time.
+;; This kludge allows macros which use cl-transform-function-property
+;; to be called at compile-time.
 
 (require
  (progn
@@ -75,6 +75,7 @@
 
 (defvar cl-old-bc-file-form nil)
 
+;;;###autoload
 (defun cl-compile-time-init ()
   (run-hooks 'cl-hack-bytecomp-hook))
 
 ;;; Symbols.
 
 (defvar *gensym-counter*)
+;;;###autoload
 (defun gensym (&optional prefix)
   "Generate a new uninterned symbol.
 The name is made by appending a number to PREFIX, default \"G\"."
@@ -174,6 +176,7 @@ The name is made by appending a number to PREFIX, default \"G\"."
                 (setq *gensym-counter* (1+ *gensym-counter*))))))
     (make-symbol (format "%s%d" pfix num))))
 
+;;;###autoload
 (defun gentemp (&optional prefix)
   "Generate a new interned symbol with a unique name.
 The name is made by appending a number to PREFIX, default \"G\"."
@@ -186,6 +189,7 @@ The name is made by appending a number to PREFIX, default \"G\"."
 
 ;;; Program structure.
 
+;;;###autoload
 (defmacro defun* (name args &rest body)
   "Define NAME as a function.
 Like normal `defun', except ARGLIST allows full Common Lisp conventions,
@@ -196,6 +200,7 @@ and BODY is implicitly surrounded by (block NAME ...).
         (form (list* 'defun name (cdr res))))
     (if (car res) (list 'progn (car res) form) form)))
 
+;;;###autoload
 (defmacro defmacro* (name args &rest body)
   "Define NAME as a macro.
 Like normal `defmacro', except ARGLIST allows full Common Lisp conventions,
@@ -206,6 +211,7 @@ and BODY is implicitly surrounded by (block NAME ...).
         (form (list* 'defmacro name (cdr res))))
     (if (car res) (list 'progn (car res) form) form)))
 
+;;;###autoload
 (defmacro function* (func)
   "Introduce a function.
 Like normal `function', except that if argument is a lambda form,
@@ -426,6 +432,7 @@ its argument list allows full Common Lisp conventions."
            (setq res (nconc res (cl-arglist-args arg))))))
       (nconc res (and args (list args))))))
 
+;;;###autoload
 (defmacro destructuring-bind (args expr &rest body)
   (let* ((bind-lets nil) (bind-forms nil) (bind-inits nil)
         (bind-defs nil) (bind-block 'cl-none))
@@ -439,6 +446,7 @@ its argument list allows full Common Lisp conventions."
 
 (defvar cl-not-toplevel nil)
 
+;;;###autoload
 (defmacro eval-when (when &rest body)
   "Control when BODY is evaluated.
 If `compile' is in WHEN, BODY is evaluated when compiled at top-level.
@@ -470,6 +478,7 @@ If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level.
             form)))
        (t (eval form) form)))
 
+;;;###autoload
 (defmacro load-time-value (form &optional read-only)
   "Like `progn', but evaluates the body at load time.
 The result of the body appears to the compiler as a quoted constant."
@@ -492,6 +501,7 @@ The result of the body appears to the compiler as a quoted constant."
 
 ;;; Conditional control structures.
 
+;;;###autoload
 (defmacro case (expr &rest clauses)
   "Eval EXPR and choose among clauses on that value.
 Each clause looks like (KEYLIST BODY...).  EXPR is evaluated and compared
@@ -526,12 +536,14 @@ Key values are compared by `eql'.
     (if (eq temp expr) body
       (list 'let (list (list temp expr)) body))))
 
+;;;###autoload
 (defmacro ecase (expr &rest clauses)
   "Like `case', but error if no case fits.
 `otherwise'-clauses are not allowed.
 \n(fn EXPR (KEYLIST BODY...)...)"
   (list* 'case expr (append clauses '((ecase-error-flag)))))
 
+;;;###autoload
 (defmacro typecase (expr &rest clauses)
   "Evals EXPR, chooses among clauses on that value.
 Each clause looks like (TYPE BODY...).  EXPR is evaluated and, if it
@@ -558,6 +570,7 @@ final clause, and matches if no other keys match.
     (if (eq temp expr) body
       (list 'let (list (list temp expr)) body))))
 
+;;;###autoload
 (defmacro etypecase (expr &rest clauses)
   "Like `typecase', but error if no case fits.
 `otherwise'-clauses are not allowed.
@@ -567,6 +580,7 @@ final clause, and matches if no other keys match.
 
 ;;; Blocks and exits.
 
+;;;###autoload
 (defmacro block (name &rest body)
   "Define a lexically-scoped block named NAME.
 NAME may be any symbol.  Code inside the BODY forms can call `return-from'
@@ -602,11 +616,13 @@ called from BODY."
     (if cl-found (setcdr cl-found t)))
   (byte-compile-normal-call (cons 'throw (cdr cl-form))))
 
+;;;###autoload
 (defmacro return (&optional result)
   "Return from the block named nil.
 This is equivalent to `(return-from nil RESULT)'."
   (list 'return-from nil result))
 
+;;;###autoload
 (defmacro return-from (name &optional result)
   "Return from the block named NAME.
 This jump out to the innermost enclosing `(block NAME ...)' form,
@@ -626,6 +642,7 @@ This is compatible with Common Lisp, but note that `defun' and
 (defvar loop-result) (defvar loop-result-explicit)
 (defvar loop-result-var) (defvar loop-steps) (defvar loop-symbol-macs)
 
+;;;###autoload
 (defmacro loop (&rest args)
   "The Common Lisp `loop' macro.
 Valid clauses are:
@@ -1185,12 +1202,14 @@ Valid clauses are:
 
 ;;; Other iteration control structures.
 
+;;;###autoload
 (defmacro do (steps endtest &rest body)
   "The Common Lisp `do' loop.
 
 \(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
   (cl-expand-do-loop steps endtest body nil))
 
+;;;###autoload
 (defmacro do* (steps endtest &rest body)
   "The Common Lisp `do*' loop.
 
@@ -1218,6 +1237,7 @@ Valid clauses are:
                                                 (apply 'append sets)))))))
               (or (cdr endtest) '(nil)))))
 
+;;;###autoload
 (defmacro dolist (spec &rest body)
   "Loop over a list.
 Evaluate BODY with VAR bound to each `car' from LIST, in turn.
@@ -1234,6 +1254,7 @@ Then evaluate RESULT to get return value, default nil.
                     (cons (list 'setq (car spec) nil) (cdr (cdr spec)))
                   '(nil))))))
 
+;;;###autoload
 (defmacro dotimes (spec &rest body)
   "Loop a certain number of times.
 Evaluate BODY with VAR bound to successive integers from 0, inclusive,
@@ -1248,6 +1269,7 @@ nil.
                        (append body (list (list 'incf (car spec)))))
                 (or (cdr (cdr spec)) '(nil))))))
 
+;;;###autoload
 (defmacro do-symbols (spec &rest body)
   "Loop over all symbols.
 Evaluate BODY with VAR bound to each interned symbol, or to each symbol
@@ -1262,12 +1284,14 @@ from OBARRAY.
                     (and (cadr spec) (list (cadr spec))))
              (caddr spec))))
 
+;;;###autoload
 (defmacro do-all-symbols (spec &rest body)
   (list* 'do-symbols (list (car spec) nil (cadr spec)) body))
 
 
 ;;; Assignments.
 
+;;;###autoload
 (defmacro psetq (&rest args)
   "Set SYMs to the values VALs in parallel.
 This is like `setq', except that all VAL forms are evaluated (in order)
@@ -1279,6 +1303,7 @@ before assigning any symbols SYM to the corresponding values.
 
 ;;; Binding control structures.
 
+;;;###autoload
 (defmacro progv (symbols values &rest body)
   "Bind SYMBOLS to VALUES dynamically in BODY.
 The forms SYMBOLS and VALUES are evaluated, and must evaluate to lists.
@@ -1292,6 +1317,7 @@ a `let' form, except that the list of symbols can be computed at run-time."
              '(cl-progv-after))))
 
 ;;; This should really have some way to shadow 'byte-compile properties, etc.
+;;;###autoload
 (defmacro flet (bindings &rest body)
   "Make temporary function definitions.
 This is an analogue of `let' that operates on the function cell of FUNC
@@ -1319,6 +1345,7 @@ go back to their previous definitions, or lack thereof).
          bindings)
         body))
 
+;;;###autoload
 (defmacro labels (bindings &rest body)
   "Make temporary function bindings.
 This is like `flet', except the bindings are lexical instead of dynamic.
@@ -1343,6 +1370,7 @@ Unlike `flet', this macro is fully compliant with the Common Lisp standard.
 
 ;; The following ought to have a better definition for use with newer
 ;; byte compilers.
+;;;###autoload
 (defmacro macrolet (bindings &rest body)
   "Make temporary macro definitions.
 This is like `flet', but for macros instead of functions.
@@ -1359,6 +1387,7 @@ This is like `flet', but for macros instead of functions.
                            (cons (list* name 'lambda (cdr res))
                                  cl-macro-environment))))))
 
+;;;###autoload
 (defmacro symbol-macrolet (bindings &rest body)
   "Make symbol macro definitions.
 Within the body FORMs, references to the variable NAME will be replaced
@@ -1375,6 +1404,7 @@ by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...).
                                cl-macro-environment)))))
 
 (defvar cl-closure-vars nil)
+;;;###autoload
 (defmacro lexical-let (bindings &rest body)
   "Like `let', but lexically scoped.
 The main visible difference is that lambdas inside BODY will create
@@ -1418,6 +1448,7 @@ lexical closures as in Common Lisp.
                           vars))
            ebody))))
 
+;;;###autoload
 (defmacro lexical-let* (bindings &rest body)
   "Like `let*', but lexically scoped.
 The main visible difference is that lambdas inside BODY will create
@@ -1438,6 +1469,7 @@ lexical closures as in Common Lisp.
 
 ;;; Multiple values.
 
+;;;###autoload
 (defmacro multiple-value-bind (vars form &rest body)
   "Collect multiple return values.
 FORM must return a list; the BODY is then executed with the first N elements
@@ -1455,6 +1487,7 @@ a synonym for (list A B C).
                               vars))
           body)))
 
+;;;###autoload
 (defmacro multiple-value-setq (vars form)
   "Collect multiple return values.
 FORM must return a list; the first N elements of this list are stored in
@@ -1481,7 +1514,9 @@ values.  For compatibility, (values A B C) is a synonym for (list A B C).
 
 ;;; Declarations.
 
+;;;###autoload
 (defmacro locally (&rest body) (cons 'progn body))
+;;;###autoload
 (defmacro the (type form) form)
 
 (defvar cl-proclaim-history t)    ; for future compilers
@@ -1536,6 +1571,7 @@ values.  For compatibility, (values A B C) is a synonym for (list A B C).
   (while p (cl-do-proclaim (pop p) t))
   (setq cl-proclaims-deferred nil))
 
+;;;###autoload
 (defmacro declare (&rest specs)
   (if (cl-compiling-file)
       (while specs
@@ -1547,6 +1583,7 @@ values.  For compatibility, (values A B C) is a synonym for (list A B C).
 
 ;;; Generalized variables.
 
+;;;###autoload
 (defmacro define-setf-method (func args &rest body)
   "Define a `setf' method.
 This method shows how to handle `setf's to places of the form (NAME ARGS...).
@@ -1565,8 +1602,9 @@ form.  See `defsetf' for a simpler way to define most setf-methods.
                 func 'setf-method (cons args body)))))
 (defalias 'define-setf-expander 'define-setf-method)
 
+;;;###autoload
 (defmacro defsetf (func arg1 &rest args)
-  "(defsetf NAME FUNC): define a `setf' method.
+  "Define a `setf' method.
 This macro is an easy-to-use substitute for `define-setf-method' that works
 well for simple place forms.  In the simple `defsetf' form, `setf's of
 the form (setf (NAME ARGS...) VAL) are transformed to function or macro
@@ -1840,6 +1878,7 @@ Example:
          (list 'substring (nth 4 method) from-temp to-temp))))
 
 ;;; Getting and optimizing setf-methods.
+;;;###autoload
 (defun get-setf-method (place &optional env)
   "Return a list of five values describing the setf-method for PLACE.
 PLACE may be any Lisp form which can appear as the PLACE argument to
@@ -1907,6 +1946,7 @@ a macro like `setf' or `incf'."
        (not (eq (car-safe (symbol-function (car form))) 'macro))))
 
 ;;; The standard modify macros.
+;;;###autoload
 (defmacro setf (&rest args)
   "Set each PLACE to the value of its VAL.
 This is a generalized version of `setq'; the PLACEs may be symbolic
@@ -1925,6 +1965,7 @@ The return value is the last VAL in the list.
             (store (cl-setf-do-store (nth 1 method) (nth 1 args))))
        (if (car method) (list 'let* (car method) store) store)))))
 
+;;;###autoload
 (defmacro psetf (&rest args)
   "Set PLACEs to the values VALs in parallel.
 This is like `setf', except that all VAL forms are evaluated (in order)
@@ -1948,6 +1989,7 @@ before assigning any PLACEs to the corresponding values.
          (setq expr (list 'setf (cadr args) (list 'prog1 (car args) expr))))
        (list 'progn expr nil)))))
 
+;;;###autoload
 (defun cl-do-pop (place)
   (if (cl-simple-expr-p place)
       (list 'prog1 (list 'car place) (list 'setf place (list 'cdr place)))
@@ -1960,6 +2002,7 @@ before assigning any PLACEs to the corresponding values.
                  (list 'car temp)
                  (cl-setf-do-store (nth 1 method) (list 'cdr temp)))))))
 
+;;;###autoload
 (defmacro remf (place tag)
   "Remove TAG from property list PLACE.
 PLACE may be a symbol, or any generalized variable allowed by `setf'.
@@ -1980,6 +2023,7 @@ The form returns true if TAG was found and removed, nil otherwise."
                      t)
                (list 'cl-do-remf tval ttag)))))
 
+;;;###autoload
 (defmacro shiftf (place &rest args)
   "Shift left among PLACEs.
 Example: (shiftf A B C) sets A to B, B to C, and returns the old A.
@@ -1995,6 +2039,7 @@ Each PLACE may be a symbol, or any generalized variable allowed by `setf'.
         (prog1 ,(nth 2 method)
           ,(cl-setf-do-store (nth 1 method) `(shiftf ,@args))))))))
 
+;;;###autoload
 (defmacro rotatef (&rest args)
   "Rotate left among PLACEs.
 Example: (rotatef A B C) sets A to B, B to C, and C to A.  It returns nil.
@@ -2020,6 +2065,7 @@ Each PLACE may be a symbol, or any generalized variable allowed by `setf'.
        (list 'let* (append (car method) (list (list temp (nth 2 method))))
              (cl-setf-do-store (nth 1 method) form) nil)))))
 
+;;;###autoload
 (defmacro letf (bindings &rest body)
   "Temporarily bind to PLACEs.
 This is the analogue of `let', but with generalized variables (in the
@@ -2076,6 +2122,7 @@ the PLACE is not modified before executing BODY.
                rev (cdr rev))))
       (list* 'let* lets body))))
 
+;;;###autoload
 (defmacro letf* (bindings &rest body)
   "Temporarily bind to PLACEs.
 This is the analogue of `let*', but with generalized variables (in the
@@ -2094,6 +2141,7 @@ the PLACE is not modified before executing BODY.
       (setq body (list (list* 'letf (list (pop bindings)) body))))
     (car body)))
 
+;;;###autoload
 (defmacro callf (func place &rest args)
   "Set PLACE to (FUNC PLACE ARGS...).
 FUNC should be an unquoted function name.  PLACE may be a symbol,
@@ -2108,6 +2156,7 @@ or any generalized variable allowed by `setf'.
                              (list* 'funcall (list 'function func)
                                     rargs))))))
 
+;;;###autoload
 (defmacro callf2 (func arg1 place &rest args)
   "Set PLACE to (FUNC ARG1 PLACE ARGS...).
 Like `callf', but PLACE is the second argument of FUNC, not the first.
@@ -2124,6 +2173,7 @@ Like `callf', but PLACE is the second argument of FUNC, not the first.
                                (list* 'funcall (list 'function func)
                                       rargs)))))))
 
+;;;###autoload
 (defmacro define-modify-macro (name arglist func &optional doc)
   "Define a `setf'-like modify macro.
 If NAME is called, it combines its PLACE argument with the other arguments
@@ -2138,6 +2188,7 @@ from ARGLIST using FUNC: (define-modify-macro incf (&optional (n 1)) +)"
 
 ;;; Structures.
 
+;;;###autoload
 (defmacro defstruct (struct &rest descs)
   "Define a struct type.
 This macro defines a new Lisp data type called NAME, which contains data
@@ -2362,6 +2413,7 @@ copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors.
             forms)
     (cons 'progn (nreverse (cons (list 'quote name) forms)))))
 
+;;;###autoload
 (defun cl-struct-setf-expander (x name accessor pred-form pos)
   (let* ((temp (make-symbol "--cl-x--")) (store (make-symbol "--cl-store--")))
     (list (list temp) (list x) (list store)
@@ -2430,11 +2482,13 @@ The type name can then be used in `typecase', `check-type', etc."
          ((eq (car type) 'satisfies) (list (cadr type) val))
          (t (error "Bad type spec: %s" type)))))
 
+;;;###autoload
 (defun typep (object type)   ; See compiler macro below.
   "Check that OBJECT is of type TYPE.
 TYPE is a Common Lisp-style type specifier."
   (eval (cl-make-type-test 'object type)))
 
+;;;###autoload
 (defmacro check-type (form type &optional string)
   "Verify that FORM is of type TYPE; signal an error if not.
 STRING is an optional description of the desired type."
@@ -2449,6 +2503,7 @@ STRING is an optional description of the desired type."
         (if (eq temp form) (list 'progn body nil)
           (list 'let (list (list temp form)) body nil)))))
 
+;;;###autoload
 (defmacro assert (form &optional show-args string &rest args)
   "Verify that FORM returns non-nil; signal an error if not.
 Second arg SHOW-ARGS means to include arguments of FORM in message.
@@ -2470,6 +2525,7 @@ omitted, a default message listing FORM itself is used."
                             (list* 'list (list 'quote form) sargs))))
               nil))))
 
+;;;###autoload
 (defmacro ignore-errors (&rest body)
   "Execute BODY; if an error occurs, return nil.
 Otherwise, return result of last form in BODY."
@@ -2478,6 +2534,7 @@ Otherwise, return result of last form in BODY."
 
 ;;; Compiler macros.
 
+;;;###autoload
 (defmacro define-compiler-macro (func args &rest body)
   "Define a compiler-only macro.
 This is like `defmacro', but macro expansion occurs only if the call to
@@ -2501,6 +2558,7 @@ and then returning foo."
              (list 'put (list 'quote func) '(quote byte-compile)
                    '(quote cl-byte-compile-compiler-macro)))))
 
+;;;###autoload
 (defun compiler-macroexpand (form)
   (while
       (let ((func (car-safe form)) (handler nil))
@@ -2556,9 +2614,9 @@ surrounded by (block NAME ...).
       (if lets (list 'let lets body) body))))
 
 
-;;; Compile-time optimizations for some functions defined in this package.
-;;; Note that cl.el arranges to force cl-macs to be loaded at compile-time,
-;;; mainly to make sure these macros will be present.
+;; Compile-time optimizations for some functions defined in this package.
+;; Note that cl.el arranges to force cl-macs to be loaded at compile-time,
+;; mainly to make sure these macros will be present.
 
 (put 'eql 'byte-compile nil)
 (define-compiler-macro eql (&whole form a b)
@@ -2669,9 +2727,10 @@ surrounded by (block NAME ...).
 
 (run-hooks 'cl-macs-load-hook)
 
-;;; Local variables:
-;;; byte-compile-warnings: (redefine callargs free-vars unresolved obsolete noruntime)
-;;; End:
+;; Local variables:
+;; byte-compile-warnings: (redefine callargs free-vars unresolved obsolete noruntime)
+;; generated-autoload-file: "cl-loaddefs.el"
+;; End:
 
 ;; arch-tag: afd947a6-b553-4df1-bba5-000be6388f46
 ;;; cl-macs.el ends here
index b4185681479914ce5391ca1a50495072c2fd6dfe..8016b75aad9c47c26c25660fc913d6301c22e130 100644 (file)
 (defvar cl-key)
 
 
+;;;###autoload
 (defun reduce (cl-func cl-seq &rest cl-keys)
   "Reduce two-argument FUNCTION across SEQ.
 \nKeywords supported:  :start :end :from-end :initial-value :key
                                  (cl-check-key (pop cl-seq))))))
       cl-accum)))
 
+;;;###autoload
 (defun fill (seq item &rest cl-keys)
   "Fill the elements of SEQ with ITEM.
 \nKeywords supported:  :start :end
          (setq cl-start (1+ cl-start)))))
     seq))
 
+;;;###autoload
 (defun replace (cl-seq1 cl-seq2 &rest cl-keys)
   "Replace the elements of SEQ1 with the elements of SEQ2.
 SEQ1 is destructively modified, then returned.
@@ -206,6 +209,7 @@ SEQ1 is destructively modified, then returned.
            (setq cl-start2 (1+ cl-start2) cl-start1 (1+ cl-start1))))))
     cl-seq1))
 
+;;;###autoload
 (defun remove* (cl-item cl-seq &rest cl-keys)
   "Remove all occurrences of ITEM in SEQ.
 This is a non-destructive function; it makes a copy of SEQ if necessary
@@ -251,6 +255,7 @@ to avoid corrupting the original SEQ.
                cl-seq))
          cl-seq)))))
 
+;;;###autoload
 (defun remove-if (cl-pred cl-list &rest cl-keys)
   "Remove all items satisfying PREDICATE in SEQ.
 This is a non-destructive function; it makes a copy of SEQ if necessary
@@ -259,6 +264,7 @@ to avoid corrupting the original SEQ.
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'remove* nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun remove-if-not (cl-pred cl-list &rest cl-keys)
   "Remove all items not satisfying PREDICATE in SEQ.
 This is a non-destructive function; it makes a copy of SEQ if necessary
@@ -267,6 +273,7 @@ to avoid corrupting the original SEQ.
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'remove* nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun delete* (cl-item cl-seq &rest cl-keys)
   "Remove all occurrences of ITEM in SEQ.
 This is a destructive function; it reuses the storage of SEQ whenever possible.
@@ -310,6 +317,7 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
            cl-seq)
        (apply 'remove* cl-item cl-seq cl-keys)))))
 
+;;;###autoload
 (defun delete-if (cl-pred cl-list &rest cl-keys)
   "Remove all items satisfying PREDICATE in SEQ.
 This is a destructive function; it reuses the storage of SEQ whenever possible.
@@ -317,6 +325,7 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'delete* nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun delete-if-not (cl-pred cl-list &rest cl-keys)
   "Remove all items not satisfying PREDICATE in SEQ.
 This is a destructive function; it reuses the storage of SEQ whenever possible.
@@ -324,12 +333,14 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'delete* nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun remove-duplicates (cl-seq &rest cl-keys)
   "Return a copy of SEQ with all duplicate elements removed.
 \nKeywords supported:  :test :test-not :key :start :end :from-end
 \n(fn SEQ [KEYWORD VALUE]...)"
   (cl-delete-duplicates cl-seq cl-keys t))
 
+;;;###autoload
 (defun delete-duplicates (cl-seq &rest cl-keys)
   "Remove all duplicate elements from SEQ (destructively).
 \nKeywords supported:  :test :test-not :key :start :end :from-end
@@ -376,6 +387,7 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
     (let ((cl-res (cl-delete-duplicates (append cl-seq nil) cl-keys nil)))
       (if (stringp cl-seq) (concat cl-res) (vconcat cl-res)))))
 
+;;;###autoload
 (defun substitute (cl-new cl-old cl-seq &rest cl-keys)
   "Substitute NEW for OLD in SEQ.
 This is a non-destructive function; it makes a copy of SEQ if necessary
@@ -397,6 +409,7 @@ to avoid corrupting the original SEQ.
          (apply 'nsubstitute cl-new cl-old cl-seq :count cl-count
                 :start cl-i cl-keys))))))
 
+;;;###autoload
 (defun substitute-if (cl-new cl-pred cl-list &rest cl-keys)
   "Substitute NEW for all items satisfying PREDICATE in SEQ.
 This is a non-destructive function; it makes a copy of SEQ if necessary
@@ -405,6 +418,7 @@ to avoid corrupting the original SEQ.
 \n(fn NEW PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'substitute cl-new nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun substitute-if-not (cl-new cl-pred cl-list &rest cl-keys)
   "Substitute NEW for all items not satisfying PREDICATE in SEQ.
 This is a non-destructive function; it makes a copy of SEQ if necessary
@@ -413,6 +427,7 @@ to avoid corrupting the original SEQ.
 \n(fn NEW PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'substitute cl-new nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun nsubstitute (cl-new cl-old cl-seq &rest cl-keys)
   "Substitute NEW for OLD in SEQ.
 This is a destructive function; it reuses the storage of SEQ whenever possible.
@@ -446,6 +461,7 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
              (setq cl-start (1+ cl-start))))))
     cl-seq))
 
+;;;###autoload
 (defun nsubstitute-if (cl-new cl-pred cl-list &rest cl-keys)
   "Substitute NEW for all items satisfying PREDICATE in SEQ.
 This is a destructive function; it reuses the storage of SEQ whenever possible.
@@ -453,6 +469,7 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
 \n(fn NEW PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'nsubstitute cl-new nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun nsubstitute-if-not (cl-new cl-pred cl-list &rest cl-keys)
   "Substitute NEW for all items not satisfying PREDICATE in SEQ.
 This is a destructive function; it reuses the storage of SEQ whenever possible.
@@ -460,6 +477,7 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
 \n(fn NEW PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'nsubstitute cl-new nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun find (cl-item cl-seq &rest cl-keys)
   "Find the first occurrence of ITEM in SEQ.
 Return the matching ITEM, or nil if not found.
@@ -468,6 +486,7 @@ Return the matching ITEM, or nil if not found.
   (let ((cl-pos (apply 'position cl-item cl-seq cl-keys)))
     (and cl-pos (elt cl-seq cl-pos))))
 
+;;;###autoload
 (defun find-if (cl-pred cl-list &rest cl-keys)
   "Find the first item satisfying PREDICATE in SEQ.
 Return the matching item, or nil if not found.
@@ -475,6 +494,7 @@ Return the matching item, or nil if not found.
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'find nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun find-if-not (cl-pred cl-list &rest cl-keys)
   "Find the first item not satisfying PREDICATE in SEQ.
 Return the matching item, or nil if not found.
@@ -482,6 +502,7 @@ Return the matching item, or nil if not found.
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'find nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun position (cl-item cl-seq &rest cl-keys)
   "Find the first occurrence of ITEM in SEQ.
 Return the index of the matching item, or nil if not found.
@@ -512,6 +533,7 @@ Return the index of the matching item, or nil if not found.
        (setq cl-start (1+ cl-start)))
       (and (< cl-start cl-end) cl-start))))
 
+;;;###autoload
 (defun position-if (cl-pred cl-list &rest cl-keys)
   "Find the first item satisfying PREDICATE in SEQ.
 Return the index of the matching item, or nil if not found.
@@ -519,6 +541,7 @@ Return the index of the matching item, or nil if not found.
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'position nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun position-if-not (cl-pred cl-list &rest cl-keys)
   "Find the first item not satisfying PREDICATE in SEQ.
 Return the index of the matching item, or nil if not found.
@@ -526,6 +549,7 @@ Return the index of the matching item, or nil if not found.
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'position nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun count (cl-item cl-seq &rest cl-keys)
   "Count the number of occurrences of ITEM in SEQ.
 \nKeywords supported:  :test :test-not :key :start :end
@@ -540,18 +564,21 @@ Return the index of the matching item, or nil if not found.
        (setq cl-start (1+ cl-start)))
       cl-count)))
 
+;;;###autoload
 (defun count-if (cl-pred cl-list &rest cl-keys)
   "Count the number of items satisfying PREDICATE in SEQ.
 \nKeywords supported:  :key :start :end
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'count nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun count-if-not (cl-pred cl-list &rest cl-keys)
   "Count the number of items not satisfying PREDICATE in SEQ.
 \nKeywords supported:  :key :start :end
 \n(fn PREDICATE SEQ [KEYWORD VALUE]...)"
   (apply 'count nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun mismatch (cl-seq1 cl-seq2 &rest cl-keys)
   "Compare SEQ1 with SEQ2, return index of first mismatching element.
 Return nil if the sequences match.  If one sequence is a prefix of the
@@ -582,6 +609,7 @@ other, the return value indicates the end of the shorter sequence.
        (and (or (< cl-start1 cl-end1) (< cl-start2 cl-end2))
             cl-start1)))))
 
+;;;###autoload
 (defun search (cl-seq1 cl-seq2 &rest cl-keys)
   "Search for SEQ1 as a subsequence of SEQ2.
 Return the index of the leftmost element of the first match found;
@@ -608,6 +636,7 @@ return nil if there are no matches.
          (if cl-from-end (setq cl-end2 cl-pos) (setq cl-start2 (1+ cl-pos))))
        (and (< cl-start2 cl-end2) cl-pos)))))
 
+;;;###autoload
 (defun sort* (cl-seq cl-pred &rest cl-keys)
   "Sort the argument SEQ according to PREDICATE.
 This is a destructive function; it reuses the storage of SEQ if possible.
@@ -622,6 +651,7 @@ This is a destructive function; it reuses the storage of SEQ if possible.
                                 (funcall cl-pred (funcall cl-key cl-x)
                                          (funcall cl-key cl-y)))))))))
 
+;;;###autoload
 (defun stable-sort (cl-seq cl-pred &rest cl-keys)
   "Sort the argument SEQ stably according to PREDICATE.
 This is a destructive function; it reuses the storage of SEQ if possible.
@@ -629,6 +659,7 @@ This is a destructive function; it reuses the storage of SEQ if possible.
 \n(fn SEQ PREDICATE [KEYWORD VALUE]...)"
   (apply 'sort* cl-seq cl-pred cl-keys))
 
+;;;###autoload
 (defun merge (cl-type cl-seq1 cl-seq2 cl-pred &rest cl-keys)
   "Destructively merge the two sequences to produce a new sequence.
 TYPE is the sequence type to return, SEQ1 and SEQ2 are the two argument
@@ -647,6 +678,7 @@ sequences, and PREDICATE is a `less-than' predicate on the elements.
       (coerce (nconc (nreverse cl-res) cl-seq1 cl-seq2) cl-type))))
 
 ;;; See compiler macro in cl-macs.el
+;;;###autoload
 (defun member* (cl-item cl-list &rest cl-keys)
   "Find the first occurrence of ITEM in LIST.
 Return the sublist of LIST whose car is ITEM.
@@ -661,6 +693,7 @@ Return the sublist of LIST whose car is ITEM.
        (member cl-item cl-list)
       (memq cl-item cl-list))))
 
+;;;###autoload
 (defun member-if (cl-pred cl-list &rest cl-keys)
   "Find the first item satisfying PREDICATE in LIST.
 Return the sublist of LIST whose car matches.
@@ -668,6 +701,7 @@ Return the sublist of LIST whose car matches.
 \n(fn PREDICATE LIST [KEYWORD VALUE]...)"
   (apply 'member* nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun member-if-not (cl-pred cl-list &rest cl-keys)
   "Find the first item not satisfying PREDICATE in LIST.
 Return the sublist of LIST whose car matches.
@@ -675,6 +709,7 @@ Return the sublist of LIST whose car matches.
 \n(fn PREDICATE LIST [KEYWORD VALUE]...)"
   (apply 'member* nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun cl-adjoin (cl-item cl-list &rest cl-keys)
   (if (cl-parsing-keywords (:key) t
        (apply 'member* (cl-check-key cl-item) cl-list cl-keys))
@@ -682,6 +717,7 @@ Return the sublist of LIST whose car matches.
     (cons cl-item cl-list)))
 
 ;;; See compiler macro in cl-macs.el
+;;;###autoload
 (defun assoc* (cl-item cl-alist &rest cl-keys)
   "Find the first item whose car matches ITEM in LIST.
 \nKeywords supported:  :test :test-not :key
@@ -697,18 +733,21 @@ Return the sublist of LIST whose car matches.
        (assoc cl-item cl-alist)
       (assq cl-item cl-alist))))
 
+;;;###autoload
 (defun assoc-if (cl-pred cl-list &rest cl-keys)
   "Find the first item whose car satisfies PREDICATE in LIST.
 \nKeywords supported:  :key
 \n(fn PREDICATE LIST [KEYWORD VALUE]...)"
   (apply 'assoc* nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun assoc-if-not (cl-pred cl-list &rest cl-keys)
   "Find the first item whose car does not satisfy PREDICATE in LIST.
 \nKeywords supported:  :key
 \n(fn PREDICATE LIST [KEYWORD VALUE]...)"
   (apply 'assoc* nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun rassoc* (cl-item cl-alist &rest cl-keys)
   "Find the first item whose cdr matches ITEM in LIST.
 \nKeywords supported:  :test :test-not :key
@@ -722,18 +761,21 @@ Return the sublist of LIST whose car matches.
        (and cl-alist (car cl-alist)))
     (rassq cl-item cl-alist)))
 
+;;;###autoload
 (defun rassoc-if (cl-pred cl-list &rest cl-keys)
   "Find the first item whose cdr satisfies PREDICATE in LIST.
 \nKeywords supported:  :key
 \n(fn PREDICATE LIST [KEYWORD VALUE]...)"
   (apply 'rassoc* nil cl-list :if cl-pred cl-keys))
 
+;;;###autoload
 (defun rassoc-if-not (cl-pred cl-list &rest cl-keys)
   "Find the first item whose cdr does not satisfy PREDICATE in LIST.
 \nKeywords supported:  :key
 \n(fn PREDICATE LIST [KEYWORD VALUE]...)"
   (apply 'rassoc* nil cl-list :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun union (cl-list1 cl-list2 &rest cl-keys)
   "Combine LIST1 and LIST2 using a set-union operation.
 The result list contains all items that appear in either LIST1 or LIST2.
@@ -754,6 +796,7 @@ to avoid corrupting the original LIST1 and LIST2.
           (pop cl-list2))
         cl-list1)))
 
+;;;###autoload
 (defun nunion (cl-list1 cl-list2 &rest cl-keys)
   "Combine LIST1 and LIST2 using a set-union operation.
 The result list contains all items that appear in either LIST1 or LIST2.
@@ -764,6 +807,7 @@ whenever possible.
   (cond ((null cl-list1) cl-list2) ((null cl-list2) cl-list1)
        (t (apply 'union cl-list1 cl-list2 cl-keys))))
 
+;;;###autoload
 (defun intersection (cl-list1 cl-list2 &rest cl-keys)
   "Combine LIST1 and LIST2 using a set-intersection operation.
 The result list contains all items that appear in both LIST1 and LIST2.
@@ -786,6 +830,7 @@ to avoid corrupting the original LIST1 and LIST2.
               (pop cl-list2))
             cl-res)))))
 
+;;;###autoload
 (defun nintersection (cl-list1 cl-list2 &rest cl-keys)
   "Combine LIST1 and LIST2 using a set-intersection operation.
 The result list contains all items that appear in both LIST1 and LIST2.
@@ -795,6 +840,7 @@ whenever possible.
 \n(fn LIST1 LIST2 [KEYWORD VALUE]...)"
   (and cl-list1 cl-list2 (apply 'intersection cl-list1 cl-list2 cl-keys)))
 
+;;;###autoload
 (defun set-difference (cl-list1 cl-list2 &rest cl-keys)
   "Combine LIST1 and LIST2 using a set-difference operation.
 The result list contains all items that appear in LIST1 but not LIST2.
@@ -814,6 +860,7 @@ to avoid corrupting the original LIST1 and LIST2.
          (pop cl-list1))
        cl-res))))
 
+;;;###autoload
 (defun nset-difference (cl-list1 cl-list2 &rest cl-keys)
   "Combine LIST1 and LIST2 using a set-difference operation.
 The result list contains all items that appear in LIST1 but not LIST2.
@@ -824,6 +871,7 @@ whenever possible.
   (if (or (null cl-list1) (null cl-list2)) cl-list1
     (apply 'set-difference cl-list1 cl-list2 cl-keys)))
 
+;;;###autoload
 (defun set-exclusive-or (cl-list1 cl-list2 &rest cl-keys)
   "Combine LIST1 and LIST2 using a set-exclusive-or operation.
 The result list contains all items that appear in exactly one of LIST1, LIST2.
@@ -836,6 +884,7 @@ to avoid corrupting the original LIST1 and LIST2.
        (t (append (apply 'set-difference cl-list1 cl-list2 cl-keys)
                   (apply 'set-difference cl-list2 cl-list1 cl-keys)))))
 
+;;;###autoload
 (defun nset-exclusive-or (cl-list1 cl-list2 &rest cl-keys)
   "Combine LIST1 and LIST2 using a set-exclusive-or operation.
 The result list contains all items that appear in exactly one of LIST1, LIST2.
@@ -848,6 +897,7 @@ whenever possible.
        (t (nconc (apply 'nset-difference cl-list1 cl-list2 cl-keys)
                  (apply 'nset-difference cl-list2 cl-list1 cl-keys)))))
 
+;;;###autoload
 (defun subsetp (cl-list1 cl-list2 &rest cl-keys)
   "Return true if LIST1 is a subset of LIST2.
 I.e., if every element of LIST1 also appears in LIST2.
@@ -862,6 +912,7 @@ I.e., if every element of LIST1 also appears in LIST2.
               (pop cl-list1))
             (null cl-list1)))))
 
+;;;###autoload
 (defun subst-if (cl-new cl-pred cl-tree &rest cl-keys)
   "Substitute NEW for elements matching PREDICATE in TREE (non-destructively).
 Return a copy of TREE with all matching elements replaced by NEW.
@@ -869,6 +920,7 @@ Return a copy of TREE with all matching elements replaced by NEW.
 \n(fn NEW PREDICATE TREE [KEYWORD VALUE]...)"
   (apply 'sublis (list (cons nil cl-new)) cl-tree :if cl-pred cl-keys))
 
+;;;###autoload
 (defun subst-if-not (cl-new cl-pred cl-tree &rest cl-keys)
   "Substitute NEW for elts not matching PREDICATE in TREE (non-destructively).
 Return a copy of TREE with all non-matching elements replaced by NEW.
@@ -876,6 +928,7 @@ Return a copy of TREE with all non-matching elements replaced by NEW.
 \n(fn NEW PREDICATE TREE [KEYWORD VALUE]...)"
   (apply 'sublis (list (cons nil cl-new)) cl-tree :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun nsubst (cl-new cl-old cl-tree &rest cl-keys)
   "Substitute NEW for OLD everywhere in TREE (destructively).
 Any element of TREE which is `eql' to OLD is changed to NEW (via a call
@@ -884,6 +937,7 @@ to `setcar').
 \n(fn NEW OLD TREE [KEYWORD VALUE]...)"
   (apply 'nsublis (list (cons cl-old cl-new)) cl-tree cl-keys))
 
+;;;###autoload
 (defun nsubst-if (cl-new cl-pred cl-tree &rest cl-keys)
   "Substitute NEW for elements matching PREDICATE in TREE (destructively).
 Any element of TREE which matches is changed to NEW (via a call to `setcar').
@@ -891,6 +945,7 @@ Any element of TREE which matches is changed to NEW (via a call to `setcar').
 \n(fn NEW PREDICATE TREE [KEYWORD VALUE]...)"
   (apply 'nsublis (list (cons nil cl-new)) cl-tree :if cl-pred cl-keys))
 
+;;;###autoload
 (defun nsubst-if-not (cl-new cl-pred cl-tree &rest cl-keys)
   "Substitute NEW for elements not matching PREDICATE in TREE (destructively).
 Any element of TREE which matches is changed to NEW (via a call to `setcar').
@@ -898,6 +953,7 @@ Any element of TREE which matches is changed to NEW (via a call to `setcar').
 \n(fn NEW PREDICATE TREE [KEYWORD VALUE]...)"
   (apply 'nsublis (list (cons nil cl-new)) cl-tree :if-not cl-pred cl-keys))
 
+;;;###autoload
 (defun sublis (cl-alist cl-tree &rest cl-keys)
   "Perform substitutions indicated by ALIST in TREE (non-destructively).
 Return a copy of TREE with all matching elements replaced.
@@ -920,6 +976,7 @@ Return a copy of TREE with all matching elements replaced.
              (cons cl-a cl-d)))
        cl-tree))))
 
+;;;###autoload
 (defun nsublis (cl-alist cl-tree &rest cl-keys)
   "Perform substitutions indicated by ALIST in TREE (destructively).
 Any matching element of TREE is changed via a call to `setcar'.
@@ -944,6 +1001,7 @@ Any matching element of TREE is changed via a call to `setcar'.
          (progn (setcdr cl-tree (cdr (car cl-p))) (setq cl-tree nil))
        (setq cl-tree (cdr cl-tree))))))
 
+;;;###autoload
 (defun tree-equal (cl-x cl-y &rest cl-keys)
   "Return t if trees TREE1 and TREE2 have `eql' leaves.
 Atoms are compared by `eql'; cons cells are compared recursively.
@@ -961,5 +1019,9 @@ Atoms are compared by `eql'; cons cells are compared recursively.
 
 (run-hooks 'cl-seq-load-hook)
 
-;;; arch-tag: ec1cc072-9006-4225-b6ba-d6b07ed1710c
+;; Local variables:
+;; generated-autoload-file: "cl-loaddefs.el"
+;; End:
+
+;; arch-tag: ec1cc072-9006-4225-b6ba-d6b07ed1710c
 ;;; cl-seq.el ends here
index 89c0721adb5da73065baec62ec649cd460ec54ec..8d609509f105f91c04b07f1c6af01f1f16e74d8c 100644 (file)
@@ -113,8 +113,9 @@ a future Emacs interpreter will be able to use it.")
 (defun cl-cannot-unload ()
   (error "Cannot unload the feature `cl'"))
 
-;;; Generalized variables.  These macros are defined here so that they
-;;; can safely be used in .emacs files.
+;;; Generalized variables.
+;; These macros are defined here so that they
+;; can safely be used in .emacs files.
 
 (defmacro incf (place &optional x)
   "Increment PLACE by X (1 by default).
@@ -185,8 +186,8 @@ an element already on the list.
 
 ;;; Control structures.
 
-;;; These macros are so simple and so often-used that it's better to have
-;;; them all the time than to load them from cl-macs.el.
+;; These macros are so simple and so often-used that it's better to have
+;; them all the time than to load them from cl-macs.el.
 
 (defun cl-map-extents (&rest cl-args)
   (apply 'cl-map-overlays cl-args))
@@ -198,9 +199,10 @@ an element already on the list.
 (defalias 'cl-block-throw 'throw)
 
 
-;;; Multiple values.  True multiple values are not supported, or even
-;;; simulated.  Instead, multiple-value-bind and friends simply expect
-;;; the target form to return the values as a list.
+;;; Multiple values.
+;; True multiple values are not supported, or even
+;; simulated.  Instead, multiple-value-bind and friends simply expect
+;; the target form to return the values as a list.
 
 (defsubst values (&rest values)
   "Return multiple values, Common Lisp style.
@@ -321,7 +323,7 @@ always returns nil."
 
 (defvar *random-state* (vector 'cl-random-state-tag -1 30 (cl-random-time)))
 
-;;; The following are actually set by cl-float-limits.
+;; The following are actually set by cl-float-limits.
 (defconst most-positive-float nil)
 (defconst most-negative-float nil)
 (defconst least-positive-float nil)
@@ -585,105 +587,55 @@ If ALIST is non-nil, the new pairs are prepended to it."
 
 ;;; Miscellaneous.
 
-(defvar cl-fake-autoloads nil
-  "Non-nil means don't make CL functions autoload.")
-
-;;; Autoload the other portions of the package.
+;; Define data for indentation and edebug.
+(dolist (entry
+         '(((defun* defmacro*) 2)
+           ((function*) nil
+            (&or symbolp ([&optional 'macro] 'lambda (&rest sexp) &rest form)))
+           ((eval-when) 1 (sexp &rest form))
+           ((declare) nil (&rest sexp))
+           ((the) 1 (sexp &rest form))
+           ((case ecase typecase etypecase) 1 (form &rest (sexp &rest form)))
+           ((block return-from) 1 (sexp &rest form))
+           ((return) nil (&optional form))
+           ((do do*) 2 ((&rest &or symbolp (symbolp &optional form form))
+                        (form &rest form)
+                        &rest form))
+           ((do-symbols) 1 ((symbolp form &optional form form) &rest form))
+           ((do-all-symbols) 1 ((symbolp form &optional form) &rest form))
+           ((psetq setf psetf) nil edebug-setq-form)
+           ((progv) 2 (&rest form))
+           ((flet labels macrolet) 1
+            ((&rest (sexp sexp &rest form)) &rest form))
+           ((symbol-macrolet lexical-let lexical-let*) 1
+            ((&rest &or symbolp (symbolp form)) &rest form))
+           ((multiple-value-bind) 2 ((&rest symbolp) &rest form))
+           ((multiple-value-setq) 1 ((&rest symbolp) &rest form))
+           ((incf decf remf pushnew shiftf rotatef) nil (&rest form))
+           ((letf letf*) 1 ((&rest (&rest form)) &rest form))
+           ((callf destructuring-bind) 2 (sexp form &rest form))
+           ((callf2) 3 (sexp form form &rest form))
+           ((loop) nil (&rest &or symbolp form))
+           ((ignore-errors) 0 (&rest form))))
+  (dolist (func (car entry))
+    (put func 'lisp-indent-function (nth 1 entry))
+    (put func 'lisp-indent-hook (nth 1 entry))
+    (or (get func 'edebug-form-spec)
+        (put func 'edebug-form-spec (nth 2 entry)))))
+
+;; Autoload the other portions of the package.
 ;; We want to replace the basic versions of dolist, dotimes, declare below.
 (fmakunbound 'dolist)
 (fmakunbound 'dotimes)
 (fmakunbound 'declare)
-(mapcar (function
-        (lambda (set)
-          (let ((file (if cl-fake-autoloads "<none>" (car set))))
-            (mapcar (function
-                     (lambda (func)
-                       (autoload func (car set) nil nil (nth 1 set))))
-                    (cddr set)))))
-       '(("cl-extra" nil
-          coerce equalp cl-map-keymap maplist mapc mapl mapcan mapcon
-          cl-map-keymap cl-map-keymap-recursively cl-map-intervals
-          cl-map-overlays cl-set-frame-visible-p cl-float-limits
-          gcd lcm isqrt floor* ceiling* truncate* round*
-          mod* rem* signum random* make-random-state random-state-p
-          subseq concatenate cl-mapcar-many map some every notany
-          notevery revappend nreconc list-length tailp copy-tree get* getf
-          cl-set-getf cl-do-remf remprop cl-make-hash-table cl-hash-lookup
-          cl-gethash cl-puthash cl-remhash cl-clrhash cl-maphash cl-hash-table-p
-          cl-hash-table-count cl-progv-before cl-prettyexpand
-          cl-macroexpand-all)
-         ("cl-seq" nil
-          reduce fill replace remove* remove-if remove-if-not
-          delete* delete-if delete-if-not remove-duplicates
-          delete-duplicates substitute substitute-if substitute-if-not
-          nsubstitute nsubstitute-if nsubstitute-if-not find find-if
-          find-if-not position position-if position-if-not count count-if
-          count-if-not mismatch search sort* stable-sort merge member*
-          member-if member-if-not cl-adjoin assoc* assoc-if assoc-if-not
-          rassoc* rassoc-if rassoc-if-not union nunion intersection
-          nintersection set-difference nset-difference set-exclusive-or
-          nset-exclusive-or subsetp subst-if subst-if-not nsubst nsubst-if
-          nsubst-if-not sublis nsublis tree-equal)
-         ("cl-macs" nil
-          gensym gentemp typep cl-do-pop get-setf-method
-          cl-struct-setf-expander compiler-macroexpand cl-compile-time-init)
-         ("cl-macs" t
-          defun* defmacro* function* destructuring-bind eval-when
-          load-time-value case ecase typecase etypecase
-          block return return-from loop do do* dolist dotimes do-symbols
-          do-all-symbols psetq progv flet labels macrolet symbol-macrolet
-          lexical-let lexical-let* multiple-value-bind multiple-value-setq
-          locally the declare define-setf-method defsetf define-modify-macro
-          setf psetf remf shiftf rotatef letf letf* callf callf2 defstruct
-          check-type assert ignore-errors define-compiler-macro)))
-
-;;; Define data for indentation and edebug.
-(mapcar (function
-        (lambda (entry)
-          (mapcar (function
-                   (lambda (func)
-                     (put func 'lisp-indent-function (nth 1 entry))
-                     (put func 'lisp-indent-hook (nth 1 entry))
-                     (or (get func 'edebug-form-spec)
-                         (put func 'edebug-form-spec (nth 2 entry)))))
-                  (car entry))))
-       '(((defun* defmacro*) 2)
-         ((function*) nil
-          (&or symbolp ([&optional 'macro] 'lambda (&rest sexp) &rest form)))
-         ((eval-when) 1 (sexp &rest form))
-         ((declare) nil (&rest sexp))
-         ((the) 1 (sexp &rest form))
-         ((case ecase typecase etypecase) 1 (form &rest (sexp &rest form)))
-         ((block return-from) 1 (sexp &rest form))
-         ((return) nil (&optional form))
-         ((do do*) 2 ((&rest &or symbolp (symbolp &optional form form))
-                      (form &rest form)
-                      &rest form))
-         ((do-symbols) 1 ((symbolp form &optional form form) &rest form))
-         ((do-all-symbols) 1 ((symbolp form &optional form) &rest form))
-         ((psetq setf psetf) nil edebug-setq-form)
-         ((progv) 2 (&rest form))
-         ((flet labels macrolet) 1
-          ((&rest (sexp sexp &rest form)) &rest form))
-         ((symbol-macrolet lexical-let lexical-let*) 1
-          ((&rest &or symbolp (symbolp form)) &rest form))
-         ((multiple-value-bind) 2 ((&rest symbolp) &rest form))
-         ((multiple-value-setq) 1 ((&rest symbolp) &rest form))
-         ((incf decf remf pushnew shiftf rotatef) nil (&rest form))
-         ((letf letf*) 1 ((&rest (&rest form)) &rest form))
-         ((callf destructuring-bind) 2 (sexp form &rest form))
-         ((callf2) 3 (sexp form form &rest form))
-         ((loop) nil (&rest &or symbolp form))
-         ((ignore-errors) 0 (&rest form))))
-
-
-;;; This goes here so that cl-macs can find it if it loads right now.
-(provide 'cl-19)     ; usage: (require 'cl-19 "cl")
+(load "cl-loaddefs" nil 'quiet)
 
+;; This goes here so that cl-macs can find it if it loads right now.
+(provide 'cl-19)     ; usage: (require 'cl-19 "cl")
 
-;;; Things to do after byte-compiler is loaded.
-;;; As a side effect, we cause cl-macs to be loaded when compiling, so
-;;; that the compiler-macros defined there will be present.
+;; Things to do after byte-compiler is loaded.
+;; As a side effect, we cause cl-macs to be loaded when compiling, so
+;; that the compiler-macros defined there will be present.
 
 (defvar cl-hacked-flag nil)
 (defun cl-hack-byte-compiler ()
@@ -692,15 +644,15 @@ If ALIST is non-nil, the new pairs are prepended to it."
        (setq cl-hacked-flag t)         ; Do it first, to prevent recursion.
        (cl-compile-time-init))))       ; In cl-macs.el.
 
-;;; Try it now in case the compiler has already been loaded.
+;; Try it now in case the compiler has already been loaded.
 (cl-hack-byte-compiler)
 
-;;; Also make a hook in case compiler is loaded after this file.
+;; Also make a hook in case compiler is loaded after this file.
 (add-hook 'bytecomp-load-hook 'cl-hack-byte-compiler)
 
 
-;;; The following ensures that packages which expect the old-style cl.el
-;;; will be happy with this one.
+;; The following ensures that packages which expect the old-style cl.el
+;; will be happy with this one.
 
 (provide 'cl)
 
index ed1d01023fb9706132ed9c8b3a0b56280b181106..b53ec9c217b18eea35b57d1180f27213e8f7f422 100644 (file)
@@ -46,14 +46,22 @@ A value of nil means to search whole buffer."
 ;; The character classes have the Latin-1 version and the Latin-9
 ;; version, which is probably enough.
 (defcustom copyright-regexp
- "\\([\81©\8e©]\\|@copyright{}\\|[Cc]opyright\\s *:?\\s *\\(?:(C)\\)?\
-\\|[Cc]opyright\\s *:?\\s *[\81©\8e©]\\)\
+ "\\([\81©\81©]\\|@copyright{}\\|[Cc]opyright\\s *:?\\s *\\(?:(C)\\)?\
+\\|[Cc]opyright\\s *:?\\s *[\81©\81©]\\)\
 \\s *\\([1-9]\\([-0-9, ';/*%#\n\t]\\|\\s<\\|\\s>\\)*[0-9]+\\)"
   "What your copyright notice looks like.
 The second \\( \\) construct must match the years."
   :group 'copyright
   :type 'regexp)
 
+(defcustom copyright-names-regexp ""
+  "Regexp matching the names which correspond to the user.
+Only copyright lines where the name matches this regexp will be updated.
+This allows you to avoid adding years to a copyright notice belonging to
+someone else or to a group for which you do not work."
+  :group 'copyright
+  :type 'regexp)
+
 (defcustom copyright-years-regexp
  "\\(\\s *\\)\\([1-9]\\([-0-9, ';/*%#\n\t]\\|\\s<\\|\\s>\\)*[0-9]+\\)"
   "Match additional copyright notice years.
@@ -82,9 +90,22 @@ When this is `function', only ask when called non-interactively."
 (defvar copyright-current-year (substring (current-time-string) -4)
   "String representing the current year.")
 
+(defsubst copyright-limit ()            ; re-search-forward BOUND
+  (and copyright-limit (+ (point) copyright-limit)))
+
 (defun copyright-update-year (replace noquery)
-  (when (re-search-forward copyright-regexp
-                           (if copyright-limit (+ (point) copyright-limit)) t)
+  (when
+      (condition-case err
+         (re-search-forward (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 lined
     ;; that are marked as comments, skip to the end of the years anyway.
     (while (save-excursion
@@ -104,7 +125,7 @@ When this is `function', only ask when called non-interactively."
 
     ;; Note that `current-time-string' isn't locale-sensitive.
     (setq copyright-current-year (substring (current-time-string) -4))
-    (unless (string= (buffer-substring (- (match-end 2) 2) (match-end 2))
+    (unless (string= (buffer-substring (- (match-end 3) 2) (match-end 3))
                     (substring copyright-current-year -2))
       (if (or noquery
              (y-or-n-p (if replace
@@ -164,11 +185,14 @@ interactively."
                 "\\(the Free Software Foundation;\
  either \\|; a\\^u eldono \\([0-9]+\\)a, ? a\\^u (la\\^u via    \\)\
 version \\([0-9]+\\), or (at"
-                (if copyright-limit (+ (point) copyright-limit)) t)
-              (not (string= (match-string 3) copyright-current-gpl-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 3))
+                  (string-to-number copyright-current-gpl-version))
               (or noquery
-                  (y-or-n-p (concat "Replace GPL version by "
-                                    copyright-current-gpl-version "? ")))
+                  (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
@@ -186,8 +210,7 @@ Uses heuristic: year >= 50 means 19xx, < 50 means 20xx."
   (interactive)
   (widen)
   (goto-char (point-min))
-  (if (re-search-forward copyright-regexp
-                         (if copyright-limit (+ (point) copyright-limit)) t)
+  (if (re-search-forward copyright-regexp (copyright-limit) t)
       (let ((s (match-beginning 2))
            (e (copy-marker (1+ (match-end 2))))
            (p (make-marker))
index 54ead36e725207a6f40ae7144b56c72adc443e17..fdfb4f111139e645f6bfddebfa65c1fdffcf1994 100644 (file)
@@ -244,14 +244,14 @@ Any pair that has the same PREDICATE is first removed."
 
 ;; Save emacs routines.
 (if (not (fboundp 'cust-print-original-prin1))
-    (mapcar 'cust-print-set-function-cell
-           '((cust-print-original-prin1 prin1)
-             (cust-print-original-princ princ)
-             (cust-print-original-print print)
-             (cust-print-original-prin1-to-string prin1-to-string)
-             (cust-print-original-format format)
-             (cust-print-original-message message)
-             (cust-print-original-error error))))
+    (mapc 'cust-print-set-function-cell
+         '((cust-print-original-prin1 prin1)
+           (cust-print-original-princ princ)
+           (cust-print-original-print print)
+           (cust-print-original-prin1-to-string prin1-to-string)
+           (cust-print-original-format format)
+           (cust-print-original-message message)
+           (cust-print-original-error error))))
 
 
 (defun custom-print-install ()
@@ -259,29 +259,29 @@ Any pair that has the same PREDICATE is first removed."
 The Emacs subroutines are saved away, and you can reinstall them
 by running `custom-print-uninstall'."
   (interactive)
-  (mapcar 'cust-print-set-function-cell
-         '((prin1 custom-prin1)
-           (princ custom-princ)
-           (print custom-print)
-           (prin1-to-string custom-prin1-to-string)
-           (format custom-format)
-           (message custom-message)
-           (error custom-error)
-           ))
+  (mapc 'cust-print-set-function-cell
+       '((prin1 custom-prin1)
+         (princ custom-princ)
+         (print custom-print)
+         (prin1-to-string custom-prin1-to-string)
+         (format custom-format)
+         (message custom-message)
+         (error custom-error)
+         ))
   t)
 
 (defun custom-print-uninstall ()
   "Reset print functions to their Emacs subroutines."
   (interactive)
-  (mapcar 'cust-print-set-function-cell
-         '((prin1 cust-print-original-prin1)
-           (princ cust-print-original-princ)
-           (print cust-print-original-print)
-           (prin1-to-string cust-print-original-prin1-to-string)
-           (format cust-print-original-format)
-           (message cust-print-original-message)
-           (error cust-print-original-error)
-           ))
+  (mapc 'cust-print-set-function-cell
+       '((prin1 cust-print-original-prin1)
+         (princ cust-print-original-princ)
+         (print cust-print-original-print)
+         (prin1-to-string cust-print-original-prin1-to-string)
+         (format cust-print-original-format)
+         (message cust-print-original-message)
+         (error cust-print-original-error)
+         ))
   t)
 
 (defalias 'custom-print-funcs-installed-p 'custom-print-installed-p)
index 68b82d54224f7ad8bea475f9c75d03fd2b837529..acf73d94b3cb4ceef51ac5249272297ded6e756b 100644 (file)
@@ -254,11 +254,7 @@ No problems result if this variable is not bound.
          ,@body
          )
         ;; Run the hooks, if any.
-        ;; Make the generated code work in older Emacs versions
-        ;; that do not yet have run-mode-hooks.
-        (if (fboundp 'run-mode-hooks)
-            (run-mode-hooks ',hook)
-          (run-hooks ',hook))))))
+         (run-mode-hooks ',hook)))))
 
 ;; PUBLIC: find the ultimate class of a derived mode.
 
index 01378a7f8d662f9ae09081bee4815592b1144e0a..60b29bdb94971349c815535953b42d02773e8d67 100644 (file)
@@ -250,7 +250,7 @@ OBJ should be a call to BYTE-CODE generated by the byte compiler."
                         (+ indent disassemble-recursive-indent)))
                       ((eq (car-safe (car-safe arg)) 'byte-code)
                        (insert "(<byte code>...)\n")
-                       (mapcar ;recurse on list of byte-code objects
+                       (mapc ;recurse on list of byte-code objects
                         '(lambda (obj)
                            (disassemble-1
                             obj
index d9497355fefcc15d811f1c4da8288e818f8582cd..da0b76808d541f19c225bf6895865c06927fee28 100644 (file)
@@ -458,7 +458,7 @@ ARGS is a list of additional keyword arguments."
       (let ((char (car cs))
            (syntax (cdr cs)))
        (if (sequencep char)
-           (mapcar (lambda (c) (modify-syntax-entry c syntax st)) char)
+           (mapc (lambda (c) (modify-syntax-entry c syntax st)) char)
          (modify-syntax-entry char syntax st))))
     (if parent (set-char-table-parent
                st (if (symbolp parent) (symbol-value parent) parent)))
index 030e1bccbd40c8556c09764d0218768ea427356f..b802d8acd43c19d5ae1bfd229b61a73e5816dcd0 100644 (file)
@@ -152,6 +152,21 @@ A menu item can be a list with the same format as MENU.  This is a submenu."
      ,(if symbol `(defvar ,symbol nil ,doc))
      (easy-menu-do-define (quote ,symbol) ,maps ,doc ,menu)))
 
+(defun easy-menu-binding (menu &optional item-name)
+  "Return a binding suitable to pass to `define-key'.
+This is expected to be bound to a mouse event."
+  ;; Under Emacs this is almost trivial, whereas under XEmacs this may
+  ;; involve defining a function that calls popup-menu.
+  (let ((props (if (symbolp menu)
+                   (prog1 (get menu 'menu-prop)
+                     (setq menu (symbol-function menu))))))
+    (cons 'menu-item
+          (cons (or item-name
+                    (if (keymapp menu)
+                        (keymap-prompt menu))
+                    "")
+                (cons menu props)))))
+
 ;;;###autoload
 (defun easy-menu-do-define (symbol maps doc menu)
   ;; We can't do anything that might differ between Emacs dialects in
@@ -173,15 +188,10 @@ A menu item can be a list with the same format as MENU.  This is a submenu."
                                       'identity)
                                   (symbol-function ,symbol)))
                             ,symbol)))))
-    (mapcar (lambda (map)
-             (define-key map (vector 'menu-bar (easy-menu-intern (car menu)))
-               (cons 'menu-item
-                     (cons (car menu)
-                           (if (not (symbolp keymap))
-                               (list keymap)
-                             (cons (symbol-function keymap)
-                                   (get keymap 'menu-prop)))))))
-           (if (keymapp maps) (list maps) maps))))
+    (dolist (map (if (keymapp maps) (list maps) maps))
+      (define-key map
+        (vector 'menu-bar (easy-menu-intern (car menu)))
+        (easy-menu-binding keymap (car menu))))))
 
 (defun easy-menu-filter-return (menu &optional name)
  "Convert MENU to the right thing to return from a menu filter.
@@ -249,10 +259,6 @@ possibly preceded by keyword pairs as described in `easy-menu-define'."
 (defvar easy-menu-button-prefix
   '((radio . :radio) (toggle . :toggle)))
 
-(defun easy-menu-do-add-item (menu item &optional before)
-  (setq item (easy-menu-convert-item item))
-  (easy-menu-define-key menu (easy-menu-intern (car item)) (cdr item) before))
-
 (defvar easy-menu-converted-items-table (make-hash-table :test 'equal))
 
 (defun easy-menu-convert-item (item)
@@ -269,7 +275,7 @@ would always fail because the key is `equal' but not `eq'."
 (defun easy-menu-convert-item-1 (item)
   "Parse an item description and convert it to a menu keymap element.
 ITEM defines an item as in `easy-menu-define'."
-  (let (name command label prop remove help)
+  (let (name command label prop remove)
     (cond
      ((stringp item)                   ; An item or separator.
       (setq label item))
@@ -536,7 +542,8 @@ earlier by `easy-menu-define' or `easy-menu-create-menu'."
                 (setq item (symbol-value item))))
        ;; Item is a keymap, find the prompt string and use as item name.
        (setq item (cons (keymap-prompt item) item)))
-    (easy-menu-do-add-item map item before)))
+    (setq item (easy-menu-convert-item item))
+    (easy-menu-define-key map (easy-menu-intern (car item)) (cdr item) before)))
 
 (defun easy-menu-item-present-p (map path name)
   "In submenu of MAP with path PATH, return non-nil if item NAME is present.
@@ -615,7 +622,8 @@ In some cases we use that to select between the local and global maps."
        (catch 'found
          (if (and map (symbolp map) (not (keymapp map)))
              (setq map (symbol-value map)))
-         (let ((maps (if map (list map) (current-active-maps))))
+         (let ((maps (if map (if (keymapp map) (list map) map)
+                       (current-active-maps))))
            ;; Look for PATH in each map.
            (unless map (push 'menu-bar path))
            (dolist (name path)
index 63b2db96fc69df0f6eaad2e5b5f6f747faa0333c..e3ade01a4a067de7f2cd321bf41e602a2fae0508 100644 (file)
@@ -369,7 +369,7 @@ Return the result of the last expression in BODY."
   ;; Otherwise, find a new window, possibly splitting one.
   (setq window
        (cond
-        ((and (windowp window) (edebug-window-live-p window)
+        ((and (edebug-window-live-p window)
               (eq (window-buffer window) buffer))
          window)
         ((eq (window-buffer (selected-window)) buffer)
@@ -2739,7 +2739,7 @@ MSG is printed after `::::} '."
 
                  ;; Unrestore edebug-buffer's window-start, if displayed.
                  (let ((window (car edebug-window-data)))
-                   (if (and window (edebug-window-live-p window)
+                   (if (and (edebug-window-live-p window)
                             (eq (window-buffer) edebug-buffer))
                        (progn
                          (set-window-start window (cdr edebug-window-data)
@@ -4389,7 +4389,7 @@ With prefix argument, make it a temporary breakpoint."
 
   (defun byte-compile-resolve-functions (funcs)
     "Say it is OK for the named functions to be unresolved."
-    (mapcar
+    (mapc
      (function
       (lambda (func)
        (setq byte-compile-unresolved-functions
index f0ae9ddafbda4c314d370c0293bfd8c47cbf794f..7807fc763a408f7a50d97f0f986c5ba6c16fe34e 100644 (file)
@@ -101,6 +101,11 @@ truncated to make more of the arglist or documentation string visible."
  enable argument list to fit on one line" truncate-sym-name-if-fit))
   :group 'eldoc)
 
+(defface eldoc-highlight-function-argument
+  '((t (:inherit bold)))
+  "Face used for the argument at point in a function's argument list."
+  :group 'eldoc)
+
 ;;; No user options below here.
 
 (defvar eldoc-message-commands-table-size 31
@@ -124,8 +129,8 @@ directly.  Instead, use `eldoc-add-command' and `eldoc-remove-command'.")
 (defconst eldoc-last-data (make-vector 3 nil)
   "Bookkeeping; elements are as follows:
   0 - contains the last symbol read from the buffer.
-  1 - contains the string last displayed in the echo area for that
-      symbol, so it can be printed again if necessary without reconsing.
+  1 - contains the string last displayed in the echo area for variables,
+      or argument string for functions.
   2 - 'function if function args, 'variable if variable documentation.")
 (defvar eldoc-last-message nil)
 
@@ -249,37 +254,93 @@ Emacs Lisp mode) that support Eldoc.")
             (let* ((current-symbol (eldoc-current-symbol))
                    (current-fnsym  (eldoc-fnsym-in-current-sexp))
                    (doc (cond
-                         ((eq current-symbol current-fnsym)
-                          (or (eldoc-get-fnsym-args-string current-fnsym)
+                         ((null current-fnsym)
+                          nil)
+                         ((eq current-symbol (car current-fnsym))
+                          (or (apply 'eldoc-get-fnsym-args-string
+                                     current-fnsym)
                               (eldoc-get-var-docstring current-symbol)))
                          (t
                           (or (eldoc-get-var-docstring current-symbol)
-                              (eldoc-get-fnsym-args-string current-fnsym))))))
+                              (apply 'eldoc-get-fnsym-args-string
+                                     current-fnsym))))))
               (eldoc-message doc))))
     ;; This is run from post-command-hook or some idle timer thing,
     ;; so we need to be careful that errors aren't ignored.
     (error (message "eldoc error: %s" err))))
 
-;; Return a string containing the function parameter list, or 1-line
-;; docstring if function is a subr and no arglist is obtainable from the
-;; docstring or elsewhere.
-(defun eldoc-get-fnsym-args-string (sym)
-  (let ((args nil)
-        (doc nil))
+(defun eldoc-get-fnsym-args-string (sym &optional index)
+  "Return a string containing the parameter list of the function SYM.
+If SYM is a subr and no arglist is obtainable from the docstring
+or elsewhere, return a 1-line docstring.  Calls the functions
+`eldoc-function-argstring-format' and
+`eldoc-highlight-function-argument' to format the result.  The
+former calls `eldoc-argument-case'; the latter gives the
+function name `font-lock-function-name-face', and optionally
+highlights argument number INDEX. "
+  (let (args doc)
     (cond ((not (and sym (symbolp sym) (fboundp sym))))
-          ((and (eq sym (aref eldoc-last-data 0))
-                (eq 'function (aref eldoc-last-data 2)))
-           (setq doc (aref eldoc-last-data 1)))
+         ((and (eq sym (aref eldoc-last-data 0))
+               (eq 'function (aref eldoc-last-data 2)))
+          (setq doc (aref eldoc-last-data 1)))
          ((setq doc (help-split-fundoc (documentation sym t) sym))
           (setq args (car doc))
+          ;; Remove any enclosing (), since e-function-argstring adds them.
           (string-match "\\`[^ )]* ?" args)
-          (setq args (concat "(" (substring args (match-end 0)))))
-          (t
-           (setq args (eldoc-function-argstring sym))))
-    (cond (args
-           (setq doc (eldoc-docstring-format-sym-doc sym args))
-           (eldoc-last-data-store sym doc 'function)))
-    doc))
+          (setq args (substring args (match-end 0)))
+          (if (string-match ")\\'" args)
+              (setq args (substring args 0 -1))))
+         (t
+          (setq args (help-function-arglist sym))))
+    (if args
+       ;; Stringify, and store before highlighting, downcasing, etc.
+       ;; FIXME should truncate before storing.
+       (eldoc-last-data-store sym (setq args (eldoc-function-argstring args))
+                              'function)
+      (setq args doc))           ; use stored value
+    ;; Change case, highlight, truncate.
+    (if args
+       (eldoc-highlight-function-argument
+        sym (eldoc-function-argstring-format args) index))))
+
+(defun eldoc-highlight-function-argument (sym args index)
+  "Highlight argument INDEX in ARGS list for function SYM.
+In the absence of INDEX, just call `eldoc-docstring-format-sym-doc'."
+  (let ((start          nil)
+       (end            0)
+       (argument-face  'eldoc-highlight-function-argument))
+    ;; Find the current argument in the argument string.  We need to
+    ;; handle `&rest' and informal `...' properly.
+    ;;
+    ;; FIXME: What to do with optional arguments, like in
+    ;;        (defun NAME ARGLIST [DOCSTRING] BODY...) case?
+    ;;        The problem is there is no robust way to determine if
+    ;;        the current argument is indeed a docstring.
+    (while (and index (>= index 1))
+      (if (string-match "[^ ()]+" args end)
+         (progn
+           (setq start (match-beginning 0)
+                 end   (match-end 0))
+           (let ((argument (match-string 0 args)))
+             (cond ((string= argument "&rest")
+                    ;; All the rest arguments are the same.
+                    (setq index 1))
+                   ((string= argument "&optional"))
+                   ((string-match "\\.\\.\\.$" argument)
+                    (setq index 0))
+                   (t
+                    (setq index (1- index))))))
+       (setq end           (length args)
+             start         (1- end)
+             argument-face 'font-lock-warning-face
+             index         0)))
+    (let ((doc args))
+      (when start
+       (setq doc (copy-sequence args))
+       (add-text-properties start end (list 'face argument-face) doc))
+      (setq doc (eldoc-docstring-format-sym-doc
+                sym doc 'font-lock-function-name-face))
+      doc)))
 
 ;; Return a string containing a brief (one-line) documentation string for
 ;; the variable.
@@ -292,7 +353,8 @@ Emacs Lisp mode) that support Eldoc.")
           (let ((doc (documentation-property sym 'variable-documentation t)))
             (cond (doc
                    (setq doc (eldoc-docstring-format-sym-doc
-                              sym (eldoc-docstring-first-line doc)))
+                              sym (eldoc-docstring-first-line doc)
+                              'font-lock-variable-name-face))
                    (eldoc-last-data-store sym doc 'variable)))
             doc)))))
 
@@ -316,7 +378,7 @@ Emacs Lisp mode) that support Eldoc.")
 ;; If the entire line cannot fit in the echo area, the symbol name may be
 ;; truncated or eliminated entirely from the output to make room for the
 ;; description.
-(defun eldoc-docstring-format-sym-doc (sym doc)
+(defun eldoc-docstring-format-sym-doc (sym doc face)
   (save-match-data
     (let* ((name (symbol-name sym))
            (ea-multi eldoc-echo-area-use-multiline-p)
@@ -328,7 +390,7 @@ Emacs Lisp mode) that support Eldoc.")
       (cond ((or (<= strip 0)
                  (eq ea-multi t)
                  (and ea-multi (> (length doc) ea-width)))
-             (format "%s: %s" sym doc))
+             (format "%s: %s" (propertize name 'face face) doc))
             ((> (length doc) ea-width)
              (substring (format "%s" doc) 0 ea-width))
             ((>= strip (length name))
@@ -338,27 +400,44 @@ Emacs Lisp mode) that support Eldoc.")
              ;; than the beginning, since the former is more likely
              ;; to be unique given package namespace conventions.
              (setq name (substring name strip))
-             (format "%s: %s" name doc))))))
+             (format "%s: %s" (propertize name 'face face) doc))))))
 
 \f
+;; Return a list of current function name and argument index.
 (defun eldoc-fnsym-in-current-sexp ()
-  (let ((p (point)))
-    (eldoc-beginning-of-sexp)
-    (prog1
-        ;; Don't do anything if current word is inside a string.
-        (if (= (or (char-after (1- (point))) 0) ?\")
-            nil
-          (eldoc-current-symbol))
-      (goto-char p))))
-
+  (save-excursion
+    (let ((argument-index (1- (eldoc-beginning-of-sexp))))
+      ;; If we are at the beginning of function name, this will be -1.
+      (when (< argument-index 0)
+       (setq argument-index 0))
+      ;; Don't do anything if current word is inside a string.
+      (if (= (or (char-after (1- (point))) 0) ?\")
+         nil
+       (list (eldoc-current-symbol) argument-index)))))
+
+;; Move to the beginnig of current sexp.  Return the number of nested
+;; sexp the point was over or after.
 (defun eldoc-beginning-of-sexp ()
-  (let ((parse-sexp-ignore-comments t))
+  (let ((parse-sexp-ignore-comments t)
+       (num-skipped-sexps 0))
     (condition-case err
-        (while (progn
-                 (forward-sexp -1)
-                 (or (= (char-before) ?\")
-                     (> (point) (point-min)))))
-      (error nil))))
+       (progn
+         ;; First account for the case the point is directly over a
+         ;; beginning of a nested sexp.
+         (condition-case err
+             (let ((p (point)))
+               (forward-sexp -1)
+               (forward-sexp 1)
+               (when (< (point) p)
+                 (setq num-skipped-sexps 1)))
+           (error))
+         (while
+             (let ((p (point)))
+               (forward-sexp -1)
+               (when (< (point) p)
+                 (setq num-skipped-sexps (1+ num-skipped-sexps))))))
+      (error))
+    num-skipped-sexps))
 
 ;; returns nil unless current word is an interned symbol.
 (defun eldoc-current-symbol ()
@@ -377,28 +456,31 @@ Emacs Lisp mode) that support Eldoc.")
            (error (setq defn nil))))
     defn))
 
-(defun eldoc-function-argstring (fn)
-  (eldoc-function-argstring-format (help-function-arglist fn)))
-
-(defun eldoc-function-argstring-format (arglist)
-  (cond ((not (listp arglist))
-         (setq arglist nil))
-        ((symbolp (car arglist))
-         (setq arglist
-               (mapcar (function (lambda (s)
-                                   (if (memq s '(&optional &rest))
-                                       (symbol-name s)
-                                     (funcall eldoc-argument-case
-                                              (symbol-name s)))))
-                       arglist)))
-        ((stringp (car arglist))
-         (setq arglist
-               (mapcar (function (lambda (s)
-                                   (if (member s '("&optional" "&rest"))
-                                       s
-                                     (funcall eldoc-argument-case s))))
-                       arglist))))
-  (concat "(" (mapconcat 'identity arglist " ") ")"))
+(defun eldoc-function-argstring (arglist)
+  "Return ARGLIST as a string enclosed by ().
+ARGLIST is either a string, or a list of strings or symbols."
+  (cond ((stringp arglist))
+       ((not (listp arglist))
+        (setq arglist nil))
+       ((symbolp (car arglist))
+        (setq arglist
+              (mapconcat (lambda (s) (symbol-name s))
+                         arglist " ")))
+       ((stringp (car arglist))
+        (setq arglist
+              (mapconcat (lambda (s) s)
+                         arglist " "))))
+  (if arglist
+      (format "(%s)" arglist)))
+
+(defun eldoc-function-argstring-format (argstring)
+  "Apply `eldoc-argument-case' to each word in ARGSTRING.
+The words \"&rest\", \"&optional\" are returned unchanged."
+  (mapconcat (lambda (s)
+              (if (member s '("&optional" "&rest"))
+                  s
+                (funcall eldoc-argument-case s)))
+            (split-string argstring "[][ ()]+" t) " "))
 
 \f
 ;; When point is in a sexp, the function args are not reprinted in the echo
index f9bff3002937efdab75dd140890e89955ac2bd22..0501fbf171e34888623aa1ea9a3e5c3ee14c8e8e 100644 (file)
@@ -218,7 +218,7 @@ This environment can be passed to `macroexpand'."
                                            (buffer-file-name)
                                          (buffer-name))))
   (elint-display-log)
-  (mapcar 'elint-top-form (elint-update-env))
+  (mapc 'elint-top-form (elint-update-env))
 
   ;; Tell the user we're finished. This is terribly klugy: we set
   ;; elint-top-form-logged so elint-log-message doesn't print the
@@ -542,11 +542,11 @@ CODE can be a lambda expression, a macro, or byte-compiled code."
 (defun elint-check-defun-form (form env)
   "Lint a defun/defmacro/lambda FORM in ENV."
   (setq form (if (eq (car form) 'lambda) (cdr form) (cdr (cdr form))))
-  (mapcar (function (lambda (p)
-                     (or (memq p '(&optional &rest))
-                         (setq env (elint-env-add-var env p)))
-                     ))
-         (car form))
+  (mapc (function (lambda (p)
+                   (or (memq p '(&optional &rest))
+                       (setq env (elint-env-add-var env p)))
+                   ))
+       (car form))
   (elint-forms (cdr form) env))
 
 (defun elint-check-let-form (form env)
@@ -566,21 +566,21 @@ CODE can be a lambda expression, a macro, or byte-compiled code."
 
       ;; Add variables to environment, and check the init values
       (let ((newenv env))
-       (mapcar (function (lambda (s)
-                           (cond
-                            ((symbolp s)
-                             (setq newenv (elint-env-add-var newenv s)))
-                            ((and (consp s) (<= (length s) 2))
-                             (elint-form (car (cdr s))
-                                         (if (eq (car form) 'let)
-                                             env
-                                           newenv))
-                             (setq newenv
-                                   (elint-env-add-var newenv (car s))))
-                            (t (elint-error
-                                "Malformed `let' declaration: %s" s))
-                            )))
-               varlist)
+       (mapc (function (lambda (s)
+                         (cond
+                          ((symbolp s)
+                           (setq newenv (elint-env-add-var newenv s)))
+                          ((and (consp s) (<= (length s) 2))
+                           (elint-form (car (cdr s))
+                                       (if (eq (car form) 'let)
+                                           env
+                                         newenv))
+                           (setq newenv
+                                 (elint-env-add-var newenv (car s))))
+                          (t (elint-error
+                              "Malformed `let' declaration: %s" s))
+                          )))
+             varlist)
 
        ;; Lint the body forms
        (elint-forms (cdr (cdr form)) newenv)
@@ -665,18 +665,18 @@ CODE can be a lambda expression, a macro, or byte-compiled code."
            errlist)
        (while errforms
          (setq errlist (car (car errforms)))
-         (mapcar (function (lambda (s)
-                             (or (get s 'error-conditions)
-                                 (get s 'error-message)
-                                 (elint-warning
-                                  "Not an error symbol in error handler: %s" s))))
-                 (cond
-                  ((symbolp errlist) (list errlist))
-                  ((listp errlist) errlist)
-                  (t (elint-error "Bad error list in error handler: %s"
-                                  errlist)
-                     nil))
-                 )
+         (mapc (function (lambda (s)
+                           (or (get s 'error-conditions)
+                               (get s 'error-message)
+                               (elint-warning
+                                "Not an error symbol in error handler: %s" s))))
+               (cond
+                 ((symbolp errlist) (list errlist))
+                 ((listp errlist) errlist)
+                 (t (elint-error "Bad error list in error handler: %s"
+                                 errlist)
+                    nil))
+               )
          (elint-forms (cdr (car errforms)) newenv)
          (setq errforms (cdr errforms))
          )))
@@ -767,11 +767,11 @@ Insert HEADER followed by a blank line if non-nil."
 (defun elint-initialize ()
   "Initialize elint."
   (interactive)
-  (mapcar (function (lambda (x)
-                     (or (not (symbolp (car x)))
-                         (eq (cdr x) 'unknown)
-                         (put (car x) 'elint-args (cdr x)))))
-         (elint-find-builtin-args))
+  (mapc (function (lambda (x)
+                   (or (not (symbolp (car x)))
+                       (eq (cdr x) 'unknown)
+                       (put (car x) 'elint-args (cdr x)))))
+       (elint-find-builtin-args))
   (mapcar (function (lambda (x)
                      (put (car x) 'elint-args (cdr x))))
          elint-unknown-builtin-args))
index ed09599f4dd39e15b65fbec79ca01f091f05ea0c..ade2a23608d3761348af050b8e9a034e900c2d3b 100644 (file)
@@ -615,7 +615,7 @@ displayed."
       ;; buffer
       (if elp-sort-by-function
          (setq resvec (sort resvec elp-sort-by-function)))
-      (mapcar 'elp-output-result resvec))
+      (mapc 'elp-output-result resvec))
     ;; now pop up results buffer
     (set-buffer curbuf)
     (pop-to-buffer resultsbuf)
index d57e7ca7657b143b7ddb42ed73111d07725b5043..805507adb49ef1616560668624ff3b263e7d1aa7 100644 (file)
@@ -205,7 +205,7 @@ See the file generic-x.el for some examples of `define-generic-mode'."
     (setq font-lock-defaults '(generic-font-lock-keywords))
 
     ;; Call a list of functions
-    (mapcar 'funcall function-list)
+    (mapc 'funcall function-list)
 
     (run-mode-hooks mode-hook)))
 
index 846e3fce55a99fcc76ccaa2cbfd3d15163b55462..7eeefd349a97a1f120504952b92dbf845fde7f23 100644 (file)
@@ -56,6 +56,8 @@
        (modify-syntax-entry i "_   " table)
        (setq i (1+ i)))
       (modify-syntax-entry ?\s "    " table)
+      ;; Non-break space acts as whitespace.
+      (modify-syntax-entry ?\x8a0 "    " table)
       (modify-syntax-entry ?\t "    " table)
       (modify-syntax-entry ?\f "    " table)
       (modify-syntax-entry ?\n ">   " table)
 
 (defvar lisp-mode-shared-map
   (let ((map (make-sparse-keymap)))
-    (define-key map "\t" 'lisp-indent-line)
     (define-key map "\e\C-q" 'indent-sexp)
     (define-key map "\177" 'backward-delete-char-untabify)
     ;; This gets in the way when viewing a Lisp file in view-mode.  As
index 21175a03b4d8cc318eba7e216b9f50aafaa6a18f..a5cefff399f0138522f835ed87c59a5eab85c0fb 100644 (file)
@@ -103,6 +103,7 @@ Also add the value to the front of the list in the variable `values'."
   (interactive
    (list (read-from-minibuffer "Eval: " nil read-expression-map t
                               'read-expression-history)))
+  (message "Evaluating...")
   (setq values (cons (eval expression) values))
   (let* ((old-show-function temp-buffer-show-function)
         ;; Use this function to display the buffer.
@@ -126,13 +127,16 @@ Also add the value to the front of the list in the variable `values'."
                         (progn
                           (select-window window)
                           (run-hooks 'temp-buffer-show-hook))
-                      (select-window old-selected)))
+                      (select-window old-selected)
+                      (message "Evaluating...done.  \
+See buffer *Pp Eval Output*.")))
                 (message "%s" (buffer-substring (point-min) (point)))
                 ))))))
     (with-output-to-temp-buffer "*Pp Eval Output*"
       (pp (car values))
       (with-current-buffer standard-output
        (emacs-lisp-mode)
+       (setq buffer-read-only nil)
        (set (make-local-variable 'font-lock-verbose) nil)))))
 
 ;;;###autoload
index d859066c452f3f564be6991468065442e8685288..a0004be2394f8361d4204cddc3ab016e73d2e4ba 100644 (file)
@@ -515,7 +515,7 @@ optional fourth argument FORCE is non-nil."
   "Delete all RE Builder overlays in the `reb-target-buffer' buffer."
   (if (buffer-live-p reb-target-buffer)
     (with-current-buffer reb-target-buffer
-      (mapcar 'delete-overlay reb-overlays)
+      (mapc 'delete-overlay reb-overlays)
       (setq reb-overlays nil))))
 
 (defun reb-assert-buffer-in-window ()
index ed3f846bf0ea100542bb81cf4c121d2da1119d09..267d7731435eaac640a6fc857bb80b76706f3e76 100644 (file)
@@ -166,7 +166,7 @@ useful information:
 
        ;; lets find the special tags and remove them from the working
        ;; frame. note that only the last special tag is used.
-       (mapcar
+       (mapc
         (function
          (lambda (entry)
            (let ((pred (car entry))
index 2c8e0a29faf5e8d6794329dbf9ce537f382087de..93cf434292a31983e97969450a0f680514055f65 100644 (file)
@@ -164,6 +164,78 @@ will be performed."
     (dotimes (var (cadr ring) lst)
       (push (aref vect (mod (+ start var) size)) lst))))
 
+(defun ring-member (ring item)
+  "Return index of ITEM if on RING, else nil.  Comparison via `equal'.
+The index is 0-based."
+  (let ((ind 0)
+        (len (1- (ring-length ring)))
+        (memberp nil))
+    (while (and (<= ind len)
+                (not (setq memberp (equal item (ring-ref ring ind)))))
+      (setq ind (1+ ind)))
+    (and memberp ind)))
+
+(defun ring-next (ring item)
+  "Return the next item in the RING, after ITEM.
+Raise error if ITEM is not in the RING."
+  (let ((curr-index (ring-member ring item)))
+    (unless curr-index (error "Item is not in the ring: `%s'" item))
+    (ring-ref ring (ring-plus1 curr-index (ring-length ring)))))
+
+(defun ring-previous (ring item)
+  "Return the previous item in the RING, before ITEM.
+Raise error if ITEM is not in the RING."
+  (let ((curr-index (ring-member ring item)))
+    (unless curr-index (error "Item is not in the ring: `%s'" item))
+    (ring-ref ring (ring-minus1 curr-index (ring-length ring)))))
+
+(defun ring-insert+extend (ring item &optional grow-p)
+  "Like ring-insert, but if GROW-P is non-nil, then enlarge ring.
+Insert onto ring RING the item ITEM, as the newest (last) item.
+If the ring is full, behavior depends on GROW-P:
+  If GROW-P is non-nil, enlarge the ring to accommodate the new item.
+  If GROW-P is nil, dump the oldest item to make room for the new."
+  (let* ((vec (cdr (cdr ring)))
+        (veclen (length vec))
+        (hd (car ring))
+        (ringlen (ring-length ring)))
+    (prog1
+        (cond ((and grow-p (= ringlen veclen)) ; Full ring.  Enlarge it.
+               (setq veclen (1+ veclen))
+               (setcdr ring (cons (setq ringlen (1+ ringlen))
+                                  (setq vec (vconcat vec (vector item)))))
+               (setcar ring hd))
+              (t (aset vec (mod (+ hd ringlen) veclen) item)))
+      (if (= ringlen veclen)
+          (setcar ring (ring-plus1 hd veclen))
+        (setcar (cdr ring) (1+ ringlen))))))
+
+(defun ring-remove+insert+extend (ring item &optional grow-p)
+  "`ring-remove' ITEM from RING, then `ring-insert+extend' it.
+This ensures that there is only one ITEM on RING.
+
+If the RING is full, behavior depends on GROW-P:
+  If GROW-P is non-nil, enlarge the ring to accommodate the new ITEM.
+  If GROW-P is nil, dump the oldest item to make room for the new."
+  (let (ind)
+    (while (setq ind (ring-member ring item)) (ring-remove ring ind)))
+  (ring-insert+extend ring item grow-p))
+
+(defun ring-convert-sequence-to-ring (seq)
+  "Convert sequence SEQ to a ring.  Return the ring.
+If SEQ is already a ring, return it."
+  (if (ring-p seq)
+      seq
+    (let* ((size (length seq))
+           (ring (make-ring size))
+           (count 0))
+      (while (< count size)
+        (if (or (ring-empty-p ring)
+                (not (equal (ring-ref ring 0) (elt seq count))))
+            (ring-insert-at-beginning ring (elt seq count)))
+        (setq count (1+ count)))
+      ring)))
+
 ;;; provide ourself:
 
 (provide 'ring)
index 45a1e9c8d1082469e8d5658d9b37a2bd6c8997de..f46aea8540a7ccdd06b90a0f4f919663c1f477a5 100644 (file)
     (|                 . or)           ; SRE
     (not-newline       . ".")
     (nonl              . not-newline)  ; SRE
-    (anything          . ".\\|\n")
+    (anything          . "\\(?:.\\|\n\\)")
     (any               . (rx-any 1 nil rx-check-any)) ; inconsistent with SRE
     (in                        . any)
     (char              . any)          ; sregex
@@ -679,7 +679,7 @@ CHAR
 
 `not-newline', `nonl'
      matches any character except a newline.
-                       .
+
 `anything'
      matches any character
 
index 901156cefc3336109d64c98f65f0fc644ab439c4..d4deb0f910192b5552329e408489c7b497cbceed 100644 (file)
@@ -565,7 +565,7 @@ has one of the following forms:
   (let ((chars (make-bool-vector 256 nil))) ; Yeah, right!
     (dolist (arg args)
       (cond ((integerp arg) (aset chars arg t))
-           ((stringp arg) (mapcar (lambda (c) (aset chars c t)) arg))
+           ((stringp arg) (mapc (lambda (c) (aset chars c t)) arg))
            ((consp arg)
             (let ((start (car arg))
                   (end (cdr arg)))
index 447e45f14f3eb72e647134fb18b8b13f4f0a97ca..0c1b3b170cdf57e3f94188e845309a5a0daa24fd 100644 (file)
@@ -1886,13 +1886,13 @@ buffer after this will cause serious problems."
   (emerge-restore-buffer-characteristics)
   ;; null out the difference markers so they don't slow down future editing
   ;; operations
-  (mapcar (function (lambda (d)
-                     (set-marker (aref d 0) nil)
-                     (set-marker (aref d 1) nil)
-                     (set-marker (aref d 2) nil)
-                     (set-marker (aref d 3) nil)
-                     (set-marker (aref d 4) nil)
-                     (set-marker (aref d 5) nil)))
+  (mapc (function (lambda (d)
+                   (set-marker (aref d 0) nil)
+                   (set-marker (aref d 1) nil)
+                   (set-marker (aref d 2) nil)
+                   (set-marker (aref d 3) nil)
+                   (set-marker (aref d 4) nil)
+                   (set-marker (aref d 5) nil)))
          emerge-difference-list)
   ;; allow them to be garbage collected
   (setq emerge-difference-list nil)
index e5410c272ff3728a0bf57f006ec6947d8b08940d..fbb39ee66d33cfea1817508a2d0255967210282f 100644 (file)
@@ -898,9 +898,6 @@ If global mark is active, copy from register or one character."
      (t
       ;; Must save register here, since delete may override reg 0.
       (if mark-active
-         ;; Before a yank command, make sure we don't yank
-         ;; the same region that we are going to delete.
-         ;; That would make yank a no-op.
          (if cua--rectangle
              (progn
                (goto-char (min (mark) (point)))
@@ -908,8 +905,14 @@ If global mark is active, copy from register or one character."
                (setq paste-lines (cua--delete-rectangle))
                (if (= paste-lines 1)
                    (setq paste-lines nil))) ;; paste all
-           (if (string= (filter-buffer-substring (point) (mark))
-                        (car kill-ring))
+           ;; Before a yank command, make sure we don't yank the
+           ;; head of the kill-ring that really comes from the
+           ;; currently active region we are going to delete.
+           ;; That would make yank a no-op.
+           (if (and (string= (filter-buffer-substring (point) (mark))
+                             (car kill-ring))
+                    (fboundp 'mouse-region-match)
+                    (mouse-region-match))
                (current-kill 1))
            (cua-delete-region)))
       (cond
@@ -1231,9 +1234,9 @@ If ARG is the atom `-', scroll upward by nearly full screen."
        (memq 'shift (event-modifiers
                     (aref (this-single-command-keys) 0)))
        ;; See if raw escape sequence maps to a shifted event, e.g. S-up or C-S-home.
-       (and (boundp 'function-key-map)
-           function-key-map
-           (let ((ev (lookup-key function-key-map
+       (and (boundp 'local-function-key-map)
+           local-function-key-map
+           (let ((ev (lookup-key local-function-key-map
                                  (this-single-command-raw-keys))))
              (and (vector ev)
                   (symbolp (setq ev (aref ev 0)))
@@ -1596,6 +1599,7 @@ shifted movement key, set `cua-highlight-region-shift-only'."
   (interactive)
   (setq cua--debug (not cua--debug)))
 
+
 (provide 'cua)
 
 ;;; arch-tag: 21fb6289-ba25-4fee-bfdc-f9fb351acf05
index 226f696dad270dcfebabcb1c79176d610066ab68..5c4bc011464d3004ed106de6d05051df1f78075d 100644 (file)
@@ -731,7 +731,7 @@ If command is repeated at same position, delete the rectangle."
 
 (defun cua--deactivate-rectangle ()
   ;; This is used to clean up after `cua--activate-rectangle'.
-  (mapcar (function delete-overlay) cua--rectangle-overlays)
+  (mapc (function delete-overlay) cua--rectangle-overlays)
   (setq cua--last-rectangle (cons (current-buffer)
                                   (cons (point) ;; cua-save-point
                                         cua--rectangle))
@@ -837,7 +837,7 @@ If command is repeated at same position, delete the rectangle."
             (overlay-put overlay 'window (selected-window))
             (setq new (cons overlay new))))))
     ;; Trim old trailing overlays.
-    (mapcar (function delete-overlay) old)
+    (mapc (function delete-overlay) old)
     (setq cua--rectangle-overlays (nreverse new))))
 
 (defun cua--indent-rectangle (&optional ch to-col clear)
@@ -1401,7 +1401,7 @@ With prefix arg, indent to that column."
         (cua--deactivate-rectangle))
     (when cua--rectangle-overlays
       ;; clean-up after revert-buffer
-      (mapcar (function delete-overlay) cua--rectangle-overlays)
+      (mapc (function delete-overlay) cua--rectangle-overlays)
       (setq cua--rectangle-overlays nil)
       (setq deactivate-mark t)))
   (when cua--rect-undo-set-point
index 9220090df253a4fac4a7a98b5100add5c7936851..12e64940b066c0dc15d417a6bb276a559a17a1dc 100644 (file)
 
 ;;    ; The emacs universal-argument function is very useful.
 ;;    ; This line maps universal-argument to Gold-PF1.
-;;    (define-key GOLD-SS3-map "P" 'universal-argument)          ; Gold-PF1
+;;    (define-key tpu-gold-map [kp_f1] 'universal-argument)      ; Gold-PF1
 
 ;;    ; Make KP7 move by paragraphs, instead of pages.
-;;    (define-key SS3-map "w" 'tpu-paragraph)                    ; KP7
+;;    (define-key tpu-global-map [kf_7] 'tpu-paragraph)          ; KP7
 
 ;;    ; Repeat the preceding mappings for X-windows.
 ;;    (cond
 ;;     (window-system
-;;      (global-set-key [kp_7] 'tpu-paragraph)                   ; KP7
-;;      (define-key GOLD-map [kp_f1] 'universal-argument)))      ; GOLD-PF1
+;;      (define-key tpu-global-map [kp_7] 'tpu-paragraph)        ; KP7
+;;      (define-key tpu-gold-map [kp_f1] 'universal-argument)))  ; GOLD-PF1
 
 ;;    ; Display the TPU-edt version.
 ;;    (tpu-version)
 ;;;  User Configurable Variables
 ;;;
 (defcustom tpu-have-ispell t
-  "*If non-nil (default), TPU-edt uses ispell for spell checking."
+  "If non-nil (default), TPU-edt uses ispell for spell checking."
   :type 'boolean
   :group 'tpu)
 
 (defcustom tpu-kill-buffers-silently nil
-  "*If non-nil, TPU-edt kills modified buffers without asking."
+  "If non-nil, TPU-edt kills modified buffers without asking."
   :type 'boolean
   :group 'tpu)
 
 (defcustom tpu-percent-scroll 75
-  "*Percentage of the screen to scroll for next/previous screen commands."
+  "Percentage of the screen to scroll for next/previous screen commands."
   :type 'integer
   :group 'tpu)
 
 (defcustom tpu-pan-columns 16
-  "*Number of columns the tpu-pan functions scroll left or right."
+  "Number of columns the tpu-pan functions scroll left or right."
   :type 'integer
   :group 'tpu)
 
 
-;;;
-;;;  Emacs version identifiers - currently referenced by
-;;;
-;;;     o tpu-mark              o tpu-set-mark
-;;;     o mode line section     o tpu-load-xkeys
-;;;
-(defconst tpu-lucid-emacs-p
-  (string-match "Lucid" emacs-version)
-  "Non-nil if we are running Lucid Emacs.")
-
 ;;;
 ;;;  Global Keymaps
 ;;;
-(defvar CSI-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map "A" 'tpu-previous-line)               ; up
-    (define-key map "B" 'tpu-next-line)                   ; down
-    (define-key map "D" 'tpu-backward-char)               ; left
-    (define-key map "C" 'tpu-forward-char)                ; right
-
-    (define-key map "1~" 'tpu-search)                     ; Find
-    (define-key map "2~" 'tpu-paste)                      ; Insert Here
-    (define-key map "3~" 'tpu-cut)                        ; Remove
-    (define-key map "4~" 'tpu-select)                     ; Select
-    (define-key map "5~" 'tpu-scroll-window-down)         ; Prev Screen
-    (define-key map "6~" 'tpu-scroll-window-up)           ; Next Screen
-
-    (define-key map "11~" 'nil)                           ; F1
-    (define-key map "12~" 'nil)                           ; F2
-    (define-key map "13~" 'nil)                           ; F3
-    (define-key map "14~" 'nil)                           ; F4
-    (define-key map "15~" 'nil)                           ; F5
-    (define-key map "17~" 'nil)                           ; F6
-    (define-key map "18~" 'nil)                           ; F7
-    (define-key map "19~" 'nil)                           ; F8
-    (define-key map "20~" 'nil)                           ; F9
-    (define-key map "21~" 'tpu-exit)                      ; F10
-    (define-key map "23~" 'tpu-insert-escape)             ; F11 (ESC)
-    (define-key map "24~" 'tpu-next-beginning-of-line)    ; F12 (BS)
-    (define-key map "25~" 'tpu-delete-previous-word)      ; F13 (LF)
-    (define-key map "26~" 'tpu-toggle-overwrite-mode)     ; F14
-    (define-key map "28~" 'tpu-help)                      ; HELP
-    (define-key map "29~" 'execute-extended-command)      ; DO
-    (define-key map "31~" 'tpu-goto-breadcrumb)           ; F17
-    (define-key map "32~" 'nil)                           ; F18
-    (define-key map "33~" 'nil)                           ; F19
-    (define-key map "34~" 'nil)                           ; F20
-    map)
-  "Maps the CSI function keys on the VT100 keyboard.
-CSI is DEC's name for the sequence <ESC>[.")
-
-(defvar GOLD-CSI-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map "A" 'tpu-move-to-beginning)      ; up-arrow
-    (define-key map "B" 'tpu-move-to-end)            ; down-arrow
-    (define-key map "C" 'end-of-line)                ; right-arrow
-    (define-key map "D" 'beginning-of-line)          ; left-arrow
-
-    (define-key map "1~" 'nil)                       ; Find
-    (define-key map "2~" 'nil)                       ; Insert Here
-    (define-key map "3~" 'tpu-store-text)            ; Remove
-    (define-key map "4~" 'tpu-unselect)              ; Select
-    (define-key map "5~" 'tpu-previous-window)       ; Prev Screen
-    (define-key map "6~" 'tpu-next-window)           ; Next Screen
-
-    (define-key map "11~" 'nil)                      ; F1
-    (define-key map "12~" 'nil)                      ; F2
-    (define-key map "13~" 'nil)                      ; F3
-    (define-key map "14~" 'nil)                      ; F4
-    (define-key map "16~" 'nil)                      ; F5
-    (define-key map "17~" 'nil)                      ; F6
-    (define-key map "18~" 'nil)                      ; F7
-    (define-key map "19~" 'nil)                      ; F8
-    (define-key map "20~" 'nil)                      ; F9
-    (define-key map "21~" 'nil)                      ; F10
-    (define-key map "23~" 'nil)                      ; F11
-    (define-key map "24~" 'nil)                      ; F12
-    (define-key map "25~" 'nil)                      ; F13
-    (define-key map "26~" 'nil)                      ; F14
-    (define-key map "28~" 'describe-bindings)        ; HELP
-    (define-key map "29~" 'nil)                      ; DO
-    (define-key map "31~" 'tpu-drop-breadcrumb)      ; F17
-    (define-key map "32~" 'nil)                      ; F18
-    (define-key map "33~" 'nil)                      ; F19
-    (define-key map "34~" 'nil)                      ; F20
-    map)
-  "Maps the function keys on the VT100 keyboard preceded by GOLD-CSI.")
 
-(defvar GOLD-SS3-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map "A" 'tpu-move-to-beginning)      ; up-arrow
-    (define-key map "B" 'tpu-move-to-end)            ; down-arrow
-    (define-key map "C" 'end-of-line)                ; right-arrow
-    (define-key map "D" 'beginning-of-line)          ; left-arrow
-
-    (define-key map "P" 'keyboard-quit)              ; PF1
-    (define-key map "Q" 'help-for-help)              ; PF2
-    (define-key map "R" 'tpu-search)                 ; PF3
-    (define-key map "S" 'tpu-undelete-lines)         ; PF4
-    (define-key map "p" 'open-line)                  ; KP0
-    (define-key map "q" 'tpu-change-case)            ; KP1
-    (define-key map "r" 'tpu-delete-to-eol)          ; KP2
-    (define-key map "s" 'tpu-special-insert)         ; KP3
-    (define-key map "t" 'tpu-move-to-end)            ; KP4
-    (define-key map "u" 'tpu-move-to-beginning)      ; KP5
-    (define-key map "v" 'tpu-paste)                  ; KP6
-    (define-key map "w" 'execute-extended-command)   ; KP7
-    (define-key map "x" 'tpu-fill)                   ; KP8
-    (define-key map "y" 'tpu-replace)                ; KP9
-    (define-key map "m" 'tpu-undelete-words)         ; KP-
-    (define-key map "l" 'tpu-undelete-char)          ; KP,
-    (define-key map "n" 'tpu-unselect)               ; KP.
-    (define-key map "M" 'tpu-substitute)             ; KPenter
-    map)
-  "Maps the function keys on the VT100 keyboard preceded by GOLD-SS3.")
-
-(defvar GOLD-map
+(defvar tpu-gold-map
   (let ((map (make-keymap)))
-    (define-key map "\e[" GOLD-CSI-map)                  ; GOLD-CSI map
-    (define-key map "\eO" GOLD-SS3-map)                  ; GOLD-SS3 map
+    ;; Previously we used escape sequences here.  We now instead presume
+    ;; that term/*.el does its job to map the escape sequence to the right
+    ;; key-symbol.
+
+    (define-key map [up]    'tpu-move-to-beginning)    ; up-arrow
+    (define-key map [down]  'tpu-move-to-end)          ; down-arrow
+    (define-key map [right] 'end-of-line)              ; right-arrow
+    (define-key map [left]  'beginning-of-line)                ; left-arrow
+
+    ;; (define-key map [find]   nil)                   ; Find
+    ;; (define-key map [insert] nil)                   ; Insert Here
+    (define-key map [delete] 'tpu-store-text)          ; Remove
+    (define-key map [select] 'tpu-unselect)            ; Select
+    (define-key map [prior]  'tpu-previous-window)     ; Prev Screen
+    (define-key map [next]   'tpu-next-window)         ; Next Screen
+
+    ;; (define-key map [f1] nil)                       ; F1
+    ;; (define-key map [f2] nil)                       ; F2
+    ;; (define-key map [f3] nil)                       ; F3
+    ;; (define-key map [f4] nil)                       ; F4
+    ;; (define-key map [f5] nil)                       ; F5
+    ;; (define-key map [f6] nil)                       ; F6
+    ;; (define-key map [f7] nil)                       ; F7
+    ;; (define-key map [f8] nil)                       ; F8
+    ;; (define-key map [f9] nil)                       ; F9
+    ;; (define-key map [f10] nil)                      ; F10
+    ;; (define-key map [f11] nil)                      ; F11
+    ;; (define-key map [f12] nil)                      ; F12
+    ;; (define-key map [f13] nil)                      ; F13
+    ;; (define-key map [f14] nil)                      ; F14
+    (define-key map [help] 'describe-bindings)         ; HELP
+    ;; (define-key map [menu] nil)                     ; DO
+    (define-key map [f17] 'tpu-drop-breadcrumb)                ; F17
+    ;; (define-key map [f18] nil)                      ; F18
+    ;; (define-key map [f19] nil)                      ; F19
+    ;; (define-key map [f20] nil)                      ; F20
+
+    (define-key map [kp-f1] 'keyboard-quit)            ; PF1
+    (define-key map [kp-f2] 'help-for-help)            ; PF2
+    (define-key map [kp-f3] 'tpu-search)               ; PF3
+    (define-key map [kp-f4] 'tpu-undelete-lines)       ; PF4
+    (define-key map [kp-0] 'open-line)                 ; KP0
+    (define-key map [kp-1] 'tpu-change-case)           ; KP1
+    (define-key map [kp-2] 'tpu-delete-to-eol)         ; KP2
+    (define-key map [kp-3] 'tpu-special-insert)                ; KP3
+    (define-key map [kp-4] 'tpu-move-to-end)           ; KP4
+    (define-key map [kp-5] 'tpu-move-to-beginning)     ; KP5
+    (define-key map [kp-6] 'tpu-paste)                 ; KP6
+    (define-key map [kp-7] 'execute-extended-command)  ; KP7
+    (define-key map [kp-8] 'tpu-fill)                  ; KP8
+    (define-key map [kp-9] 'tpu-replace)               ; KP9
+    (define-key map [kp-subtract] 'tpu-undelete-words) ; KP-
+    (define-key map [kp-separator] 'tpu-undelete-char) ; KP,
+    (define-key map [kp-decimal] 'tpu-unselect)                ; KP.
+    (define-key map [kp-enter] 'tpu-substitute)                ; KPenter
+
     ;;
-    (define-key map "\C-A" 'tpu-toggle-overwrite-mode)   ; ^A
-    (define-key map "\C-B" 'nil)                         ; ^B
-    (define-key map "\C-C" 'nil)                         ; ^C
-    (define-key map "\C-D" 'nil)                         ; ^D
-    (define-key map "\C-E" 'nil)                         ; ^E
-    (define-key map "\C-F" 'set-visited-file-name)       ; ^F
-    (define-key map "\C-g" 'keyboard-quit)               ; safety first
-    (define-key map "\C-h" 'delete-other-windows)        ; BS
-    (define-key map "\C-i" 'other-window)                ; TAB
-    (define-key map "\C-J" 'nil)                         ; ^J
-    (define-key map "\C-K" 'tpu-define-macro-key)        ; ^K
-    (define-key map "\C-l" 'downcase-region)             ; ^L
-    (define-key map "\C-M" 'nil)                         ; ^M
-    (define-key map "\C-N" 'nil)                         ; ^N
-    (define-key map "\C-O" 'nil)                         ; ^O
-    (define-key map "\C-P" 'nil)                         ; ^P
-    (define-key map "\C-Q" 'nil)                         ; ^Q
-    (define-key map "\C-R" 'nil)                         ; ^R
-    (define-key map "\C-S" 'nil)                         ; ^S
-    (define-key map "\C-T" 'tpu-toggle-control-keys)     ; ^T
-    (define-key map "\C-u" 'upcase-region)               ; ^U
-    (define-key map "\C-V" 'nil)                         ; ^V
-    (define-key map "\C-w" 'tpu-write-current-buffers)   ; ^W
-    (define-key map "\C-X" 'nil)                         ; ^X
-    (define-key map "\C-Y" 'nil)                         ; ^Y
-    (define-key map "\C-Z" 'nil)                         ; ^Z
-    (define-key map " " 'undo)                           ; SPC
-    (define-key map "!" 'nil)                            ; !
-    (define-key map "#" 'nil)                            ; #
-    (define-key map "$" 'tpu-add-at-eol)                 ; $
-    (define-key map "%" 'tpu-goto-percent)               ; %
-    (define-key map "&" 'nil)                            ; &
-    (define-key map "(" 'nil)                            ; (
-    (define-key map ")" 'nil)                            ; )
-    (define-key map "*" 'tpu-toggle-regexp)              ; *
-    (define-key map "+" 'nil)                            ; +
-    (define-key map "," 'tpu-goto-breadcrumb)            ; ,
-    (define-key map "-" 'negative-argument)              ; -
-    (define-key map "." 'tpu-drop-breadcrumb)            ; .
-    (define-key map "/" 'tpu-emacs-replace)              ; /
-    (define-key map "0" 'digit-argument)                 ; 0
-    (define-key map "1" 'digit-argument)                 ; 1
-    (define-key map "2" 'digit-argument)                 ; 2
-    (define-key map "3" 'digit-argument)                 ; 3
-    (define-key map "4" 'digit-argument)                 ; 4
-    (define-key map "5" 'digit-argument)                 ; 5
-    (define-key map "6" 'digit-argument)                 ; 6
-    (define-key map "7" 'digit-argument)                 ; 7
-    (define-key map "8" 'digit-argument)                 ; 8
-    (define-key map "9" 'digit-argument)                 ; 9
-    (define-key map ":" 'nil)                            ; :
-    (define-key map ";" 'tpu-trim-line-ends)             ; ;
-    (define-key map "<" 'nil)                            ; <
-    (define-key map "=" 'nil)                            ; =
-    (define-key map ">" 'nil)                            ; >
-    (define-key map "?" 'tpu-spell-check)                ; ?
-    (define-key map "A" 'tpu-toggle-newline-and-indent)  ; A
-    (define-key map "B" 'tpu-next-buffer)                ; B
-    (define-key map "C" 'repeat-complex-command)         ; C
-    (define-key map "D" 'shell-command)                  ; D
-    (define-key map "E" 'tpu-exit)                       ; E
-    (define-key map "F" 'tpu-set-cursor-free)            ; F
-    (define-key map "G" 'tpu-get)                        ; G
-    (define-key map "H" 'nil)                            ; H
-    (define-key map "I" 'tpu-include)                    ; I
-    (define-key map "K" 'tpu-kill-buffer)                ; K
-    (define-key map "L" 'tpu-what-line)                  ; L
-    (define-key map "M" 'buffer-menu)                    ; M
-    (define-key map "N" 'tpu-next-file-buffer)           ; N
-    (define-key map "O" 'occur)                          ; O
-    (define-key map "P" 'lpr-buffer)                     ; P
-    (define-key map "Q" 'tpu-quit)                       ; Q
-    (define-key map "R" 'tpu-toggle-rectangle)           ; R
-    (define-key map "S" 'replace)                        ; S
-    (define-key map "T" 'tpu-line-to-top-of-window)      ; T
-    (define-key map "U" 'undo)                           ; U
-    (define-key map "V" 'tpu-version)                    ; V
-    (define-key map "W" 'save-buffer)                    ; W
-    (define-key map "X" 'tpu-save-all-buffers-kill-emacs) ; X
-    (define-key map "Y" 'copy-region-as-kill)             ; Y
-    (define-key map "Z" 'suspend-emacs)                   ; Z
-    (define-key map "[" 'blink-matching-open)             ; [
-    (define-key map "\\" 'nil)                            ; \
-    (define-key map "]" 'blink-matching-open)             ; ]
-    (define-key map "^" 'tpu-add-at-bol)                  ; ^
-    (define-key map "_" 'split-window-vertically)         ; -
-    (define-key map "`" 'what-line)                       ; `
-    (define-key map "a" 'tpu-toggle-newline-and-indent)   ; a
-    (define-key map "b" 'tpu-next-buffer)                 ; b
-    (define-key map "c" 'repeat-complex-command)          ; c
-    (define-key map "d" 'shell-command)                   ; d
-    (define-key map "e" 'tpu-exit)                        ; e
-    (define-key map "f" 'tpu-set-cursor-free)             ; f
-    (define-key map "g" 'tpu-get)                         ; g
-    (define-key map "h" 'nil)                             ; h
-    (define-key map "i" 'tpu-include)                     ; i
-    (define-key map "k" 'tpu-kill-buffer)                 ; k
-    (define-key map "l" 'goto-line)                       ; l
-    (define-key map "m" 'buffer-menu)                     ; m
-    (define-key map "n" 'tpu-next-file-buffer)            ; n
-    (define-key map "o" 'occur)                           ; o
-    (define-key map "p" 'lpr-region)                      ; p
-    (define-key map "q" 'tpu-quit)                        ; q
-    (define-key map "r" 'tpu-toggle-rectangle)            ; r
-    (define-key map "s" 'replace)                         ; s
-    (define-key map "t" 'tpu-line-to-top-of-window)       ; t
-    (define-key map "u" 'undo)                            ; u
-    (define-key map "v" 'tpu-version)                     ; v
-    (define-key map "w" 'save-buffer)                     ; w
+    (define-key map "\C-A" 'tpu-toggle-overwrite-mode) ; ^A
+    ;; (define-key map "\C-B" nil)                     ; ^B
+    ;; (define-key map "\C-C" nil)                     ; ^C
+    ;; (define-key map "\C-D" nil)                     ; ^D
+    ;; (define-key map "\C-E" nil)                     ; ^E
+    (define-key map "\C-F" 'set-visited-file-name)     ; ^F
+    (define-key map "\C-g" 'keyboard-quit)             ; safety first
+    (define-key map "\C-h" 'delete-other-windows)      ; BS
+    (define-key map "\C-i" 'other-window)              ; TAB
+    ;; (define-key map "\C-J" nil)                     ; ^J
+    (define-key map "\C-K" 'tpu-define-macro-key)      ; ^K
+    (define-key map "\C-l" 'downcase-region)           ; ^L
+    ;; (define-key map "\C-M" nil)                     ; ^M
+    ;; (define-key map "\C-N" nil)                     ; ^N
+    ;; (define-key map "\C-O" nil)                     ; ^O
+    ;; (define-key map "\C-P" nil)                     ; ^P
+    ;; (define-key map "\C-Q" nil)                     ; ^Q
+    ;; (define-key map "\C-R" nil)                     ; ^R
+    ;; (define-key map "\C-S" nil)                     ; ^S
+    (define-key map "\C-T" 'tpu-toggle-control-keys)   ; ^T
+    (define-key map "\C-u" 'upcase-region)             ; ^U
+    ;; (define-key map "\C-V" nil)                     ; ^V
+    (define-key map "\C-w" 'tpu-write-current-buffers) ; ^W
+    ;; (define-key map "\C-X" nil)                     ; ^X
+    ;; (define-key map "\C-Y" nil)                     ; ^Y
+    ;; (define-key map "\C-Z" nil)                     ; ^Z
+    (define-key map " " 'undo)                         ; SPC
+    ;; (define-key map "!" nil)                                ; !
+    ;; (define-key map "#" nil)                                ; #
+    (define-key map "$" 'tpu-add-at-eol)               ; $
+    (define-key map "%" 'tpu-goto-percent)             ; %
+    ;; (define-key map "&" nil)                                ; &
+    ;; (define-key map "(" nil)                                ; (
+    ;; (define-key map ")" nil)                                ; )
+    (define-key map "*" 'tpu-toggle-regexp)            ; *
+    ;; (define-key map "+" nil)                                ; +
+    (define-key map "," 'tpu-goto-breadcrumb)          ; ,
+    (define-key map "-" 'negative-argument)            ; -
+    (define-key map "." 'tpu-drop-breadcrumb)          ; .
+    (define-key map "/" 'tpu-emacs-replace)            ; /
+    (define-key map "0" 'digit-argument)               ; 0
+    (define-key map "1" 'digit-argument)               ; 1
+    (define-key map "2" 'digit-argument)               ; 2
+    (define-key map "3" 'digit-argument)               ; 3
+    (define-key map "4" 'digit-argument)               ; 4
+    (define-key map "5" 'digit-argument)               ; 5
+    (define-key map "6" 'digit-argument)               ; 6
+    (define-key map "7" 'digit-argument)               ; 7
+    (define-key map "8" 'digit-argument)               ; 8
+    (define-key map "9" 'digit-argument)               ; 9
+    ;; (define-key map ":" nil)                                ; :
+    (define-key map ";" 'tpu-trim-line-ends)           ; ;
+    ;; (define-key map "<" nil)                                ; <
+    ;; (define-key map "=" nil)                                ; =
+    ;; (define-key map ">" nil)                                ; >
+    (define-key map "?" 'tpu-spell-check)              ; ?
+    ;; (define-key map "A" 'tpu-toggle-newline-and-indent) ; A
+    ;; (define-key map "B" 'tpu-next-buffer)           ; B
+    ;; (define-key map "C" 'repeat-complex-command)    ; C
+    ;; (define-key map "D" 'shell-command)             ; D
+    ;; (define-key map "E" 'tpu-exit)                  ; E
+    ;; (define-key map "F" 'tpu-cursor-free-mode)      ; F
+    ;; (define-key map "G" 'tpu-get)                   ; G
+    ;; (define-key map "H" nil)                                ; H
+    ;; (define-key map "I" 'tpu-include)               ; I
+    ;; (define-key map "K" 'tpu-kill-buffer)           ; K
+    (define-key map "L" 'tpu-what-line)                        ; L
+    ;; (define-key map "M" 'buffer-menu)               ; M
+    ;; (define-key map "N" 'tpu-next-file-buffer)      ; N
+    ;; (define-key map "O" 'occur)                     ; O
+    (define-key map "P" 'lpr-buffer)                   ; P
+    ;; (define-key map "Q" 'tpu-quit)                  ; Q
+    ;; (define-key map "R" 'tpu-toggle-rectangle)      ; R
+    ;; (define-key map "S" 'replace)                   ; S
+    ;; (define-key map "T" 'tpu-line-to-top-of-window) ; T
+    ;; (define-key map "U" 'undo)                      ; U
+    ;; (define-key map "V" 'tpu-version)               ; V
+    ;; (define-key map "W" 'save-buffer)               ; W
+    ;; (define-key map "X" 'tpu-save-all-buffers-kill-emacs) ; X
+    ;; (define-key map "Y" 'copy-region-as-kill)       ; Y
+    ;; (define-key map "Z" 'suspend-emacs)             ; Z
+    (define-key map "[" 'blink-matching-open)          ; [
+    ;; (define-key map "\\" nil)                       ; \
+    (define-key map "]" 'blink-matching-open)          ; ]
+    (define-key map "^" 'tpu-add-at-bol)               ; ^
+    (define-key map "_" 'split-window-vertically)      ; -
+    (define-key map "`" 'what-line)                    ; `
+    (define-key map "a" 'tpu-toggle-newline-and-indent)        ; a
+    (define-key map "b" 'tpu-next-buffer)              ; b
+    (define-key map "c" 'repeat-complex-command)       ; c
+    (define-key map "d" 'shell-command)                        ; d
+    (define-key map "e" 'tpu-exit)                     ; e
+    (define-key map "f" 'tpu-cursor-free-mode)         ; f
+    (define-key map "g" 'tpu-get)                      ; g
+    ;; (define-key map "h" nil)                                ; h
+    (define-key map "i" 'tpu-include)                  ; i
+    (define-key map "k" 'tpu-kill-buffer)              ; k
+    (define-key map "l" 'goto-line)                    ; l
+    (define-key map "m" 'buffer-menu)                  ; m
+    (define-key map "n" 'tpu-next-file-buffer)         ; n
+    (define-key map "o" 'occur)                                ; o
+    (define-key map "p" 'lpr-region)                   ; p
+    (define-key map "q" 'tpu-quit)                     ; q
+    (define-key map "r" 'tpu-toggle-rectangle)         ; r
+    (define-key map "s" 'replace)                      ; s
+    (define-key map "t" 'tpu-line-to-top-of-window)    ; t
+    (define-key map "u" 'undo)                         ; u
+    (define-key map "v" 'tpu-version)                  ; v
+    (define-key map "w" 'save-buffer)                  ; w
     (define-key map "x" 'tpu-save-all-buffers-kill-emacs) ; x
-    (define-key map "y" 'copy-region-as-kill)             ; y
-    (define-key map "z" 'suspend-emacs)                   ; z
-    (define-key map "{" 'nil)                             ; {
-    (define-key map "|" 'split-window-horizontally)       ; |
-    (define-key map "}" 'nil)                             ; }
-    (define-key map "~" 'exchange-point-and-mark)         ; ~
-    (define-key map "\177" 'delete-window)                ; <X]
+    (define-key map "y" 'copy-region-as-kill)          ; y
+    (define-key map "z" 'suspend-emacs)                        ; z
+    ;; (define-key map "{" nil)                                ; {
+    (define-key map "|" 'split-window-horizontally)    ; |
+    ;; (define-key map "}" nil)                                ; }
+    (define-key map "~" 'exchange-point-and-mark)      ; ~
+    (define-key map "\177" 'delete-window)             ; <X]
     map)
   "Maps the function keys on the VT100 keyboard preceded by PF1.
 GOLD is the ASCII 7-bit escape sequence <ESC>OP.")
+(define-obsolete-variable-alias 'GOLD-map 'tpu-gold-map "23.1")
 
-(defvar SS3-map
+(defvar tpu-global-map
   (let ((map (make-sparse-keymap)))
-    (define-key map "P" GOLD-map)                         ; GOLD map
+
+    ;; Previously defined in CSI-map.  We now presume that term/*.el does
+    ;; its job to map the escape sequence to the right key-symbol.
+    (define-key map [find]   'tpu-search)              ; Find
+    (define-key map [insert] 'tpu-paste)               ; Insert Here
+    (define-key map [delete] 'tpu-cut)                 ; Remove
+    (define-key map [select] 'tpu-select)              ; Select
+    (define-key map [prior]  'tpu-scroll-window-down)  ; Prev Screen
+    (define-key map [next]   'tpu-scroll-window-up)    ; Next Screen
+
+    ;; (define-key map [f1] nil)                       ; F1
+    ;; (define-key map [f2] nil)                       ; F2
+    ;; (define-key map [f3] nil)                       ; F3
+    ;; (define-key map [f4] nil)                       ; F4
+    ;; (define-key map [f5] nil)                       ; F5
+    ;; (define-key map [f6] nil)                       ; F6
+    ;; (define-key map [f7] nil)                       ; F7
+    ;; (define-key map [f8] nil)                       ; F8
+    ;; (define-key map [f9] nil)                       ; F9
+    (define-key map [f10] 'tpu-exit)                   ; F10
+    (define-key map [f11] 'tpu-insert-escape)          ; F11 (ESC)
+    (define-key map [f12] 'tpu-next-beginning-of-line) ; F12 (BS)
+    (define-key map [f13] 'tpu-delete-previous-word)   ; F13 (LF)
+    (define-key map [f14] 'tpu-toggle-overwrite-mode)  ; F14
+    (define-key map [help] 'tpu-help)                  ; HELP
+    (define-key map [menu] 'execute-extended-command)  ; DO
+    (define-key map [f17] 'tpu-goto-breadcrumb)                ; F17
+    ;; (define-key map [f18] nil)                      ; F18
+    ;; (define-key map [f19] nil)                      ; F19
+    ;; (define-key map [f20] nil)                      ; F20
+
+
+    ;; Previously defined in SS3-map.  We now presume that term/*.el does
+    ;; its job to map the escape sequence to the right key-symbol.
+    (define-key map [kp-f1] tpu-gold-map)              ; GOLD map
     ;;
-    (define-key map "A" 'tpu-previous-line)               ; up
-    (define-key map "B" 'tpu-next-line)                   ; down
-    (define-key map "C" 'tpu-forward-char)                ; right
-    (define-key map "D" 'tpu-backward-char)               ; left
-
-    (define-key map "Q" 'tpu-help)                        ; PF2
-    (define-key map "R" 'tpu-search-again)                ; PF3
-    (define-key map "S" 'tpu-delete-current-line)         ; PF4
-    (define-key map "p" 'tpu-line)                        ; KP0
-    (define-key map "q" 'tpu-word)                        ; KP1
-    (define-key map "r" 'tpu-end-of-line)                 ; KP2
-    (define-key map "s" 'tpu-char)                        ; KP3
-    (define-key map "t" 'tpu-advance-direction)           ; KP4
-    (define-key map "u" 'tpu-backup-direction)            ; KP5
-    (define-key map "v" 'tpu-cut)                         ; KP6
-    (define-key map "w" 'tpu-page)                        ; KP7
-    (define-key map "x" 'tpu-scroll-window)               ; KP8
-    (define-key map "y" 'tpu-append-region)               ; KP9
-    (define-key map "m" 'tpu-delete-current-word)         ; KP-
-    (define-key map "l" 'tpu-delete-current-char)         ; KP,
-    (define-key map "n" 'tpu-select)                      ; KP.
-    (define-key map "M" 'newline)                         ; KPenter
-    map)
-  "Maps the SS3 function keys on the VT100 keyboard.
-SS3 is DEC's name for the sequence <ESC>O.")
+    (define-key map [up]    'tpu-previous-line)                ; up
+    (define-key map [down]  'tpu-next-line)            ; down
+    (define-key map [right] 'tpu-forward-char)         ; right
+    (define-key map [left]  'tpu-backward-char)                ; left
+
+    (define-key map [kp-f2] 'tpu-help)                 ; PF2
+    (define-key map [kp-f3] 'tpu-search-again)         ; PF3
+    (define-key map [kp-f4] 'tpu-delete-current-line)  ; PF4
+    (define-key map [kp-0] 'tpu-line)                  ; KP0
+    (define-key map [kp-1] 'tpu-word)                  ; KP1
+    (define-key map [kp-2] 'tpu-end-of-line)           ; KP2
+    (define-key map [kp-3] 'tpu-char)                  ; KP3
+    (define-key map [kp-4] 'tpu-advance-direction)     ; KP4
+    (define-key map [kp-5] 'tpu-backup-direction)      ; KP5
+    (define-key map [kp-6] 'tpu-cut)                   ; KP6
+    (define-key map [kp-7] 'tpu-page)                  ; KP7
+    (define-key map [kp-8] 'tpu-scroll-window)         ; KP8
+    (define-key map [kp-9] 'tpu-append-region)         ; KP9
+    (define-key map [kp-subtract] 'tpu-delete-current-word) ; KP-
+    (define-key map [kp-separator] 'tpu-delete-current-char) ; KP,
+    (define-key map [kp-decimal] 'tpu-select)          ; KP.
+    (define-key map [kp-enter] 'newline)               ; KPenter
 
-(defvar tpu-global-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map "\e[" CSI-map)
-    (define-key map "\eO" SS3-map)
     map)
   "TPU-edt global keymap.")
 
-(and (not (boundp 'minibuffer-local-ns-map))
-     (defvar minibuffer-local-ns-map (make-sparse-keymap)
-       "Hack to give Lucid Emacs the same maps as ordinary Emacs."))
-
 
 ;;;
 ;;;  Global Variables
@@ -697,7 +663,7 @@ SS3 is DEC's name for the sequence <ESC>O.")
   (setq tpu-mark-flag (if transient-mark-mode "" (if (tpu-mark) " @" "  ")))
   (force-mode-line-update))
 
-(cond (tpu-lucid-emacs-p
+(cond ((featurep 'xemacs)
        (add-hook 'zmacs-deactivate-region-hook 'tpu-update-mode-line)
        (add-hook 'zmacs-activate-region-hook 'tpu-update-mode-line))
       (t
@@ -778,7 +744,7 @@ Otherwise sets the tpu-match markers to nil and returns nil."
   "TPU-edt version of the mark function.
 Return the appropriate value of the mark for the current
 version of Emacs."
-  (cond (tpu-lucid-emacs-p (mark (not zmacs-regions)))
+  (cond ((featurep 'xemacs) (mark (not zmacs-regions)))
        (t (and mark-active (mark (not transient-mark-mode))))))
 
 (defun tpu-set-mark (pos)
@@ -2259,8 +2225,8 @@ Accepts a prefix argument for the number of tpu-pan-columns to scroll."
 ;;;
 ;;;  Minibuffer map additions to set search direction
 ;;;
-(define-key minibuffer-local-map "\eOt" 'tpu-search-forward-exit)  ;KP4
-(define-key minibuffer-local-map "\eOu" 'tpu-search-backward-exit) ;KP5
+(define-key minibuffer-local-map [kp-4] 'tpu-search-forward-exit)  ;KP4
+(define-key minibuffer-local-map [kp-5] 'tpu-search-backward-exit) ;KP5
 
 
 ;;;
@@ -2362,7 +2328,7 @@ If FILE is nil, try to load a default file.  The default file names are
         (setq file (expand-file-name file)))
        (tpu-xkeys-file
         (setq file (expand-file-name tpu-xkeys-file)))
-       (tpu-lucid-emacs-p
+       ((featurep 'xemacs)
         (setq file (convert-standard-filename
                     (expand-file-name "~/.tpu-lucid-keys"))))
        (t
@@ -2378,34 +2344,11 @@ If FILE is nil, try to load a default file.  The default file names are
   (cond ((file-readable-p file)
         (load-file file))
        (t
-        (switch-to-buffer "*scratch*")
-        (erase-buffer)
-        (insert "
-
-     Ack!!  You're running TPU-edt under X-windows without loading an
-     X  key definition file.   To create a  TPU-edt X  key definition
-     file, run the tpu-mapper.el program.  It  came with TPU-edt.  It
-     even includes directions on how to  use it!   Perhaps it's lying
-     around here someplace.  ")
-        (let ((file "tpu-mapper.el")
-              (found nil)
-              (path nil)
-              (search-list (append (list (expand-file-name ".")) load-path)))
-          (while (and (not found) search-list)
-            (setq path (concat (car search-list)
-                               (if (string-match "/$" (car search-list)) "" "/")
-                               file))
-            (if (and (file-exists-p path) (not (file-directory-p path)))
-                (setq found t))
-            (setq search-list (cdr search-list)))
-          (cond (found
-                 (insert (format
-                          "Ah yes, there it is, in \n\n       %s \n\n" path))
-                 (if (tpu-y-or-n-p "Do you want to run it now? ")
-                     (load-file path)))
-                (t
-                 (insert "Nope, I can't seem to find it.  :-(\n\n")
-                 (sit-for 120)))))))
+         ;; FIXME: This used to force the user to build `file'.  With the
+         ;; new code, such a file is not even necessary, but we'll keep
+         ;; a warning message.
+         (message "%s not found: use tpu-mapper.el to create it"
+                  (abbreviate-file-name file)))))
 
 (defun tpu-copy-keyfile (oldname newname)
   "Copy the TPU-edt X key definitions file to the new default name."
@@ -2485,6 +2428,33 @@ If FILE is nil, try to load a default file.  The default file names are
   (ad-disable-regexp "\\`tpu-")
   (setq tpu-edt-mode nil))
 
+\f
+;;;### (autoloads (tpu-set-cursor-bound tpu-set-cursor-free tpu-set-scroll-margins
+;;;;;;  tpu-cursor-free-mode) "tpu-extras" "tpu-extras.el" "e0629234f1abe076917a303456b48329")
+;;; Generated autoloads from tpu-extras.el
+
+(autoload 'tpu-cursor-free-mode "tpu-extras" "\
+Minor mode to allow the cursor to move freely about the screen.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'tpu-set-scroll-margins "tpu-extras" "\
+Set scroll margins.
+
+\(fn TOP BOTTOM)" t nil)
+
+(autoload 'tpu-set-cursor-free "tpu-extras" "\
+Allow the cursor to move freely about the screen.
+
+\(fn)" t nil)
+
+(autoload 'tpu-set-cursor-bound "tpu-extras" "\
+Constrain the cursor to the flow of the text.
+
+\(fn)" t nil)
+
+;;;***
+\f
 (provide 'tpu-edt)
 
 ;; arch-tag: f3dfe61c-2cbd-4f73-b9cc-eb215020b857
index 609ce2e203baa3c242b7256a000ff5720ef3914e..062082a295af829f88049fe36f496ba0e2fb499f 100644 (file)
 ;;;  Customization variables
 
 (defcustom tpu-top-scroll-margin 0
-  "*Scroll margin at the top of the screen.
+  "Scroll margin at the top of the screen.
 Interpreted as a percent of the current window size."
   :type 'integer
   :group 'tpu)
 (defcustom tpu-bottom-scroll-margin 0
-  "*Scroll margin at the bottom of the screen.
+  "Scroll margin at the bottom of the screen.
 Interpreted as a percent of the current window size."
   :type 'integer
   :group 'tpu)
 
 (defcustom tpu-backward-char-like-tpu t
-  "*If non-nil, in free cursor mode backward-char (left-arrow) works
+  "If non-nil, in free cursor mode backward-char (left-arrow) works
 just like TPU/edt.  Otherwise, backward-char will move to the end of
 the previous line when starting from a line beginning."
   :type 'boolean
@@ -132,8 +132,12 @@ the previous line when starting from a line beginning."
 
 ;;;  Global variables
 
-(defvar tpu-cursor-free nil
-  "If non-nil, let the cursor roam free.")
+;;;###autoload
+(define-minor-mode tpu-cursor-free-mode
+  "Minor mode to allow the cursor to move freely about the screen."
+  :init-value nil
+  (if (not tpu-cursor-free-mode)
+      (tpu-trim-line-ends)))
 
 
 ;;;  Hooks  --  Set cursor free in picture mode.
@@ -141,11 +145,10 @@ the previous line when starting from a line beginning."
 
 (add-hook 'picture-mode-hook 'tpu-set-cursor-free)
 
-(defun tpu-before-save-hook ()
+(defun tpu-trim-line-ends-if-needed ()
   "Eliminate whitespace at ends of lines, if the cursor is free."
-  (if (and (buffer-modified-p) tpu-cursor-free) (tpu-trim-line-ends)))
-
-(add-hook 'before-save-hook 'tpu-before-save-hook)
+  (if (and (buffer-modified-p) tpu-cursor-free-mode) (tpu-trim-line-ends)))
+(add-hook 'before-save-hook 'tpu-trim-line-ends-if-needed)
 
 
 ;;;  Utility routines for implementing scroll margins
@@ -171,12 +174,12 @@ the previous line when starting from a line beginning."
 (defun tpu-forward-char (num)
   "Move right ARG characters (left if ARG is negative)."
   (interactive "p")
-  (if tpu-cursor-free (picture-forward-column num) (forward-char num)))
+  (if tpu-cursor-free-mode (picture-forward-column num) (forward-char num)))
 
 (defun tpu-backward-char (num)
   "Move left ARG characters (right if ARG is negative)."
   (interactive "p")
-  (cond ((not tpu-cursor-free)
+  (cond ((not tpu-cursor-free-mode)
         (backward-char num))
        (tpu-backward-char-like-tpu
         (picture-backward-column num))
@@ -195,8 +198,8 @@ the previous line when starting from a line beginning."
 Prefix argument serves as a repeat count."
   (interactive "p")
   (let ((beg (tpu-current-line)))
-    (if tpu-cursor-free (or (eobp) (picture-move-down num))
-      (next-line-internal num))
+    (if tpu-cursor-free-mode (or (eobp) (picture-move-down num))
+      (line-move num))
     (tpu-bottom-check beg num)
     (setq this-command 'next-line)))
 
@@ -205,7 +208,7 @@ Prefix argument serves as a repeat count."
 Prefix argument serves as a repeat count."
   (interactive "p")
   (let ((beg (tpu-current-line)))
-    (if tpu-cursor-free (picture-move-up num) (next-line-internal (- num)))
+    (if tpu-cursor-free-mode (picture-move-up num) (line-move (- num)))
     (tpu-top-check beg num)
     (setq this-command 'previous-line)))
 
@@ -223,7 +226,7 @@ Accepts a prefix argument for the number of lines to move."
 Accepts a prefix argument for the number of lines to move."
   (interactive "p")
   (let ((beg (tpu-current-line)))
-    (cond (tpu-cursor-free
+    (cond (tpu-cursor-free-mode
           (let ((beg (point)))
             (if (< 1 num) (forward-line num))
             (picture-end-of-line)
@@ -238,7 +241,7 @@ Accepts a prefix argument for the number of lines to move."
 Accepts a prefix argument for the number of lines to move."
   (interactive "p")
   (let ((beg (tpu-current-line)))
-    (cond (tpu-cursor-free
+    (cond (tpu-cursor-free-mode
           (picture-end-of-line (- 1 num)))
          (t
           (end-of-line (- 1 num))))
@@ -248,7 +251,7 @@ Accepts a prefix argument for the number of lines to move."
   "Move point to end of current line."
   (interactive)
   (let ((beg (point)))
-    (if tpu-cursor-free (picture-end-of-line) (end-of-line))
+    (if tpu-cursor-free-mode (picture-end-of-line) (end-of-line))
     (if (= beg (point)) (message "You are already at the end of a line."))))
 
 (defun tpu-forward-line (num)
@@ -256,9 +259,8 @@ Accepts a prefix argument for the number of lines to move."
 Prefix argument serves as a repeat count."
   (interactive "p")
   (let ((beg (tpu-current-line)))
-    (next-line-internal num)
-    (tpu-bottom-check beg num)
-    (beginning-of-line)))
+    (forward-line num)
+    (tpu-bottom-check beg num)))
 
 (defun tpu-backward-line (num)
   "Move to beginning of previous line.
@@ -266,9 +268,8 @@ Prefix argument serves as repeat count."
   (interactive "p")
   (let ((beg (tpu-current-line)))
     (or (bolp) (>= 0 num) (setq num (- num 1)))
-    (next-line-internal (- num))
-    (tpu-top-check beg num)
-    (beginning-of-line)))
+    (forward-line (- num))
+    (tpu-top-check beg num)))
 
 
 ;;;  Movement by paragraph
@@ -346,7 +347,7 @@ A repeat count means scroll that many sections."
   (let* ((beg (tpu-current-line))
         (height (1- (window-height)))
         (lines (* num (/ (* height tpu-percent-scroll) 100))))
-    (next-line-internal (- lines))
+    (line-move (- lines))
     (tpu-top-check beg lines)))
 
 (defun tpu-scroll-window-up (num)
@@ -356,7 +357,7 @@ A repeat count means scroll that many sections."
   (let* ((beg (tpu-current-line))
         (height (1- (window-height)))
         (lines (* num (/ (* height tpu-percent-scroll) 100))))
-    (next-line-internal lines)
+    (line-move lines)
     (tpu-bottom-check beg lines)))
 
 
@@ -448,22 +449,19 @@ A repeat count means scroll that many sections."
 (defun tpu-set-cursor-free ()
   "Allow the cursor to move freely about the screen."
   (interactive)
-  (setq tpu-cursor-free t)
-  (substitute-key-definition 'tpu-set-cursor-free
-                            'tpu-set-cursor-bound
-                            GOLD-map)
+  (tpu-cursor-free-mode 1)
   (message "The cursor will now move freely about the screen."))
 
 ;;;###autoload
 (defun tpu-set-cursor-bound ()
   "Constrain the cursor to the flow of the text."
   (interactive)
-  (tpu-trim-line-ends)
-  (setq tpu-cursor-free nil)
-  (substitute-key-definition 'tpu-set-cursor-bound
-                            'tpu-set-cursor-free
-                            GOLD-map)
+  (tpu-cursor-free-mode -1)
   (message "The cursor is now bound to the flow of your text."))
 
+;; Local Variables:
+;; generated-autoload-file: "tpu-edt.el"
+;; End:
+
 ;; arch-tag: 89676fa4-33ec-48cb-9135-6f3bf230ab1a
 ;;; tpu-extras.el ends here
index 7f8439648702547f0005ad8f530dc9a83b63bfdc..3e5af7a38bdee8ce3fc49b17ffc87e867f04fcda 100644 (file)
   (setq tpu-key (concat "[" (format "%s" tpu-key-seq) "]"))
   (cond ((not (equal tpu-key tpu-return))
         (set-buffer "Keys")
-        (insert (format"(global-set-key %s %s)\n" tpu-key func))
+        (insert (format"(define-key tpu-global-map %s %s)\n" tpu-key func))
         (set-buffer "Gold-Keys")
-        (insert (format "(define-key GOLD-map %s %s)\n" tpu-key gold-func))
+        (insert (format "(define-key tpu-gold-map %s %s)\n" tpu-key gold-func))
         (set-buffer "Directions"))
        ;; bogosity to get next prompt to come up, if the user hits <CR>!
        ;; check periodically to see if this is still needed...
 ")
 (goto-char (point-min))
 
-;;; arch-tag: bab5872f-cd3a-4c1c-aedb-047b67646f6c
+;; arch-tag: bab5872f-cd3a-4c1c-aedb-047b67646f6c
 ;;; tpu-mapper.el ends here
index 9c1ccf37e61d797c28685ecd73c0834e4cfa2786..82dc312cf286f30ceac1299476d031fb0e0c8ec8 100644 (file)
 ;; define viper-charpair-command-p
 (viper-test-com-defun viper-charpair-command)
 
-(defconst viper-movement-commands '(?b ?B ?e ?E ?f ?F ?G ?h ?H ?j ?k ?l
+(defconst viper-movement-commands '(?b ?B ?e ?E ?f ?F ?G ?h ?j ?k ?l
                                     ?H ?M ?L ?n ?t ?T ?w ?W ?$ ?%
                                     ?^ ?( ?) ?- ?+ ?| ?{ ?} ?[ ?] ?' ?`
                                     ?\; ?, ?0 ?? ?/ ?\  ?\C-m
@@ -1116,7 +1116,7 @@ as a Meta key and any number of multiple escapes is allowed."
   "Function that implements ESC key in Viper emulation of Vi."
   (interactive)
   (let ((cmd (or (key-binding (viper-envelop-ESC-key))
-                '(lambda () (interactive) (error "")))))
+                '(lambda () (interactive) (error "Viper bell")))))
 
     ;; call the actual function to execute ESC (if no other symbols followed)
     ;; or the key bound to the ESC sequence (if the sequence was issued
@@ -1238,7 +1238,7 @@ as a Meta key and any number of multiple escapes is allowed."
          ;; it is an error.
          (progn
            ;; new com is (CHAR . OLDCOM)
-           (if (viper-memq-char char '(?# ?\")) (error ""))
+           (if (viper-memq-char char '(?# ?\")) (error "Viper bell"))
            (setq com (cons char com))
            (setq cont nil))
        ;; If com is nil we set com as char, and read more.  Again, if char is
@@ -1257,7 +1257,7 @@ as a Meta key and any number of multiple escapes is allowed."
               (let ((reg (read-char)))
                 (if (viper-valid-register reg)
                     (setq viper-use-register reg)
-                  (error ""))
+                  (error "Viper bell"))
                 (setq char (read-char))))
              (t
               (setq com char)
@@ -1279,7 +1279,7 @@ as a Meta key and any number of multiple escapes is allowed."
              (viper-regsuffix-command-p char)
              (viper= char ?!) ; bang command
              (viper= char ?g) ; the gg command (like G0)
-             (error ""))
+             (error "Viper bell"))
          (setq cmd-to-exec-at-end
                (viper-exec-form-in-vi
                 `(key-binding (char-to-string ,char)))))
@@ -1313,7 +1313,7 @@ as a Meta key and any number of multiple escapes is allowed."
         ((equal com '(?= . ?=)) (viper-line (cons value ?=)))
         ;; gg  acts as G0
         ((equal (car com) ?g)   (viper-goto-line 0))
-        (t (error "")))))
+        (t (error "Viper bell")))))
     
     (if cmd-to-exec-at-end
        (progn
@@ -1321,10 +1321,10 @@ as a Meta key and any number of multiple escapes is allowed."
          (setq last-command-event
                (viper-copy-event
                 (if viper-xemacs-p (character-to-event char) char)))
-         (condition-case nil
+         (condition-case err
              (funcall cmd-to-exec-at-end cmd-info)
            (error
-            (error "")))))
+            (error "%s" (error-message-string err))))))
     ))
 
 (defun viper-describe-arg (arg)
@@ -1902,7 +1902,7 @@ With prefix argument, find next destructive command."
        (setq viper-intermediate-command
              'repeating-display-destructive-command)
       ;; first search through command history--set temp ring
-      (setq viper-temp-command-ring (copy-list viper-command-ring)))
+      (setq viper-temp-command-ring (copy-sequence viper-command-ring)))
     (setq cmd (if next
                  (viper-special-ring-rotate1 viper-temp-command-ring 1)
                (viper-special-ring-rotate1 viper-temp-command-ring -1)))
@@ -1936,7 +1936,7 @@ to in the global map, instead of cycling through the insertion ring."
                 (length viper-last-inserted-string-from-insertion-ring))))
          )
       ;;first search through insertion history
-      (setq viper-temp-insertion-ring (copy-list viper-insertion-ring)))
+      (setq viper-temp-insertion-ring (copy-sequence viper-insertion-ring)))
     (setq this-command 'viper-insert-from-insertion-ring)
     ;; so that things will be undone properly
     (setq buffer-undo-list (cons nil buffer-undo-list))
@@ -2738,9 +2738,9 @@ On reaching end of line, stop and signal error."
          ;; the forward motion before the 'viper-execute-com', but, of
          ;; course, 'dl' doesn't work on an empty line, so we have to
          ;; catch that condition before 'viper-execute-com'
-         (if (and (eolp) (bolp)) (error "") (forward-char val))
+         (if (and (eolp) (bolp)) (error "Viper bell") (forward-char val))
          (if com (viper-execute-com 'viper-forward-char val com))
-         (if (eolp) (progn (backward-char 1) (error ""))))
+         (if (eolp) (progn (backward-char 1) (error "Viper bell"))))
       (forward-char val)
       (if com (viper-execute-com 'viper-forward-char val com)))))
 
@@ -2755,7 +2755,7 @@ On reaching beginning of line, stop and signal error."
     (if com (viper-move-marker-locally 'viper-com-point (point)))
     (if viper-ex-style-motion
        (progn
-         (if (bolp) (error "") (backward-char val))
+         (if (bolp) (error "Viper bell") (backward-char val))
          (if com (viper-execute-com 'viper-backward-char val com)))
       (backward-char val)
       (if com (viper-execute-com 'viper-backward-char val com)))))
@@ -3078,7 +3078,7 @@ On reaching beginning of line, stop and signal error."
     (if com (viper-execute-com 'viper-goto-col val com))
     (save-excursion
       (end-of-line)
-      (if (> val (current-column)) (error "")))
+      (if (> val (current-column)) (error "Viper bell")))
     ))
 
 
@@ -3198,7 +3198,7 @@ If point is on a widget or a button, simulate clicking on that widget/button."
 ;; If FORWARD then search is forward, otherwise backward.  OFFSET is used to
 ;; adjust point after search.
 (defun viper-find-char (arg char forward offset)
-  (or (char-or-string-p char) (error ""))
+  (or (char-or-string-p char) (error "Viper bell"))
   (let ((arg (if forward arg (- arg)))
        (cmd (if (eq viper-intermediate-command 'viper-repeat)
                 (nth 5 viper-d-com)
@@ -3544,7 +3544,7 @@ controlled by the sign of prefix numeric value."
             (if com (viper-move-marker-locally 'viper-com-point (point)))
             (backward-sexp 1)
             (if com (viper-execute-com 'viper-paren-match nil com)))
-           (t (error ""))))))
+           (t (error "Viper bell"))))))
 
 (defun viper-toggle-parse-sexp-ignore-comments ()
   (interactive)
@@ -4107,7 +4107,7 @@ Null string will repeat previous search."
            (let ((reg viper-use-register))
              (setq viper-use-register nil)
              (error viper-EmptyRegister reg))
-         (error "")))
+         (error "Viper bell")))
     (setq viper-use-register nil)
     (if (viper-end-with-a-newline-p text)
        (progn
@@ -4157,7 +4157,7 @@ Null string will repeat previous search."
            (let ((reg viper-use-register))
              (setq viper-use-register nil)
              (error viper-EmptyRegister reg))
-         (error "")))
+         (error "Viper bell")))
     (setq viper-use-register nil)
     (if (viper-end-with-a-newline-p text) (beginning-of-line))
     (viper-set-destructive-command
@@ -4202,7 +4202,7 @@ Null string will repeat previous search."
             (> val (viper-chars-in-region (point) (viper-line-pos 'end))))
        (setq val (viper-chars-in-region (point) (viper-line-pos 'end))))
     (if (and viper-ex-style-motion (eolp))
-       (if (bolp) (error "") (setq val 0))) ; not bol---simply back 1 ch
+       (if (bolp) (error "Viper bell") (setq val 0))) ; not bol---simply back 1 ch
     (save-excursion
       (viper-forward-char-carefully val)
       (setq end-del-pos (point)))
@@ -4467,7 +4467,7 @@ and regexp replace."
          ((viper= char ?,) (viper-cycle-through-mark-ring))
          ((viper= char ?^) (push-mark viper-saved-mark t t))
          ((viper= char ?D) (mark-defun))
-         (t (error ""))
+         (t (error "Viper bell"))
          )))
 
 ;; Algorithm: If first invocation of this command save mark on ring, goto
@@ -4566,7 +4566,7 @@ One can use `` and '' to temporarily jump 1 step back."
                 (switch-to-buffer buff)
                 (goto-char viper-com-point)
                 (viper-change-state-to-vi)
-                (error "")))))
+                (error "Viper bell")))))
        ((and (not skip-white) (viper= char ?`))
         (if com (viper-move-marker-locally 'viper-com-point (point)))
         (if (and (viper-same-line (point) viper-last-jump)
index fda882ae6a235d8cad5599ef479f66e255a035f6..627d2ff181475ed40be416137f9167d7b0531da4 100644 (file)
@@ -1236,7 +1236,7 @@ reversed."
                (read-string "[Hit return to confirm] ")
              (quit
               (save-excursion (kill-buffer " *delete text*"))
-              (error "")))
+              (error "Viper bell")))
            (save-excursion (kill-buffer " *delete text*")))
        (if ex-buffer
            (cond ((viper-valid-register ex-buffer '(Letter))
index dc681772c1828bfb165af7274818a26327c3ff09..2b0e886b9cbf11a2299902414a1f89bd558f4a42 100644 (file)
   :tag "Is it VMS?"
   :group 'viper-misc)
 
+(defcustom viper-suppress-input-method-change-message nil
+  "If t, the message notifying about changes in the input method is not displayed.
+Normally, a message is displayed each time on enters the vi, insert or replace
+state."
+  :type 'boolean
+  :group 'viper-misc)
+
 (defcustom viper-force-faces nil
   "If t, Viper will think that it is running on a display that supports faces.
 This is provided as a temporary relief for users of graphics-capable terminals
@@ -326,7 +333,8 @@ Use `M-x viper-set-expert-level' to change this.")
     ;; turn off special input methods in vi-state
     (if (eq viper-current-state 'vi-state)
        (viper-set-input-method nil))
-    (if (memq viper-current-state '(vi-state insert-state replace-state))
+    (if (and (memq viper-current-state '(vi-state insert-state replace-state))
+            (not viper-suppress-input-method-change-message))
        (message "Viper special input method%s: on"
                 (if (or current-input-method default-input-method)
                     (format " %S"
@@ -339,7 +347,8 @@ Use `M-x viper-set-expert-level' to change this.")
   (if (null viper-mule-hook-flag)
       ()
     (setq viper-special-input-method nil)
-    (if (memq viper-current-state '(vi-state insert-state replace-state))
+    (if (and (memq viper-current-state '(vi-state insert-state replace-state))
+            (not viper-suppress-input-method-change-message))
        (message "Viper special input method%s: off"
                 (if (or current-input-method default-input-method)
                     (format " %S"
@@ -369,7 +378,7 @@ Use `M-x viper-set-expert-level' to change this.")
 ;; Set quail-mode to ARG
 (defun viper-set-input-method (arg)
   (setq viper-mule-hook-flag t) ; just a precaution
-  (let (viper-mule-hook-flag) ; temporarily inactivate viper mule hooks
+  (let (viper-mule-hook-flag) ; temporarily deactivate viper mule hooks
     (cond ((and arg (> (prefix-numeric-value arg) 0) default-input-method)
           ;; activate input method
           (viper-activate-input-method))
index 086605df79a26c86f88aabb7c2f10e0f04224ead..0e502720f5e7b3726c70d7d728630d8b0772ff05 100644 (file)
@@ -170,7 +170,7 @@ Enter as a sexp.  Examples: \"\\C-z\", [(control ?z)]."
         (let ((old-value (if (boundp 'viper-toggle-key)
                              viper-toggle-key
                            [(control ?z)])))
-          (mapcar
+          (mapc
            (lambda (buf)
              (save-excursion
                (set-buffer buf)
@@ -210,7 +210,7 @@ If running in a terminal, [(escape)] is not understood, so must use \"\\e\"."
         (let ((old-value (if (boundp 'viper-ESC-key)
                              viper-ESC-key
                            [(escape)])))
-          (mapcar
+          (mapc
            (lambda (buf)
              (save-excursion
                (set-buffer buf)
@@ -339,8 +339,8 @@ If running in a terminal, [(escape)] is not understood, so must use \"\\e\"."
 (define-key viper-vi-basic-map "\C-m" 'viper-next-line-at-bol)
 (define-key viper-vi-basic-map "\C-u" 'viper-scroll-down)
 (define-key viper-vi-basic-map "\C-y" 'viper-scroll-down-one)
-(define-key viper-vi-basic-map "\C-s" 'viper-isearch-forward)
-(define-key viper-vi-basic-map "\C-r" 'viper-isearch-backward)
+;;(define-key viper-vi-basic-map "\C-s" 'viper-isearch-forward)
+;;(define-key viper-vi-basic-map "\C-r" 'viper-isearch-backward)
 (define-key viper-vi-basic-map "\C-c/" 'viper-toggle-search-style)
 (define-key viper-vi-basic-map "\C-c\C-g" 'viper-info-on-file)
 
index ff046601a1b1abcbaffd27578f2cea4462da2a34..bf3f0eefb39b025753ec6735f6e6a83430ebaa13 100644 (file)
@@ -466,7 +466,7 @@ If SCOPE is nil, the user is asked to specify the scope."
                                   (viper-array-to-string macro-name)))
            (setq lis2 (cons (car lis) lis2))
            (setq lis (cdr lis)))
-         
+
          (setq lis2 (reverse lis2))
          (set macro-alist-var (append lis2 (cons new-elt lis)))
          (setq old-elt new-elt)))
@@ -658,9 +658,9 @@ name from there."
   (interactive)
   (with-output-to-temp-buffer " *viper-info*"
     (princ "Macros in Vi state:\n===================\n")
-    (mapcar 'viper-describe-one-macro viper-vi-kbd-macro-alist)
+    (mapc 'viper-describe-one-macro viper-vi-kbd-macro-alist)
     (princ "\n\nMacros in Insert and Replace states:\n====================================\n")
-    (mapcar 'viper-describe-one-macro viper-insert-kbd-macro-alist)
+    (mapc 'viper-describe-one-macro viper-insert-kbd-macro-alist)
     (princ "\n\nMacros in Emacs state:\n======================\n")
     (mapcar 'viper-describe-one-macro viper-emacs-kbd-macro-alist)
     ))
@@ -670,11 +670,11 @@ name from there."
                 (viper-display-macro (car macro))))
   (princ "   ** Buffer-specific:")
   (if (viper-kbd-buf-alist macro)
-      (mapcar 'viper-describe-one-macro-elt (viper-kbd-buf-alist macro))
+      (mapc 'viper-describe-one-macro-elt (viper-kbd-buf-alist macro))
     (princ "  none\n"))
   (princ "\n   ** Mode-specific:")
   (if (viper-kbd-mode-alist macro)
-      (mapcar 'viper-describe-one-macro-elt (viper-kbd-mode-alist macro))
+      (mapc 'viper-describe-one-macro-elt (viper-kbd-mode-alist macro))
     (princ "  none\n"))
   (princ "\n   ** Global:")
   (if (viper-kbd-global-definition macro)
index 82e9025e75bd3306f0a14b53b1b356048715ece0..7073cd019dda6158b04a71079e602a1ee1de860f 100644 (file)
 
 (defun viper-set-cursor-color-according-to-state (&optional frame)
   (cond ((eq viper-current-state 'replace-state)
-        (viper-change-cursor-color viper-replace-state-cursor-color frame))
+        (viper-change-cursor-color viper-replace-overlay-cursor-color frame))
        ((and (eq viper-current-state 'emacs-state)
              viper-emacs-state-cursor-color)
         (viper-change-cursor-color viper-emacs-state-cursor-color frame))
 ;; Sit for VAL milliseconds.  XEmacs doesn't support the millisecond arg
 ;; in sit-for, so this function smoothes out the differences.
 (defsubst viper-sit-for-short (val &optional nodisp)
-  (if viper-xemacs-p
-      (sit-for (/ val 1000.0) nodisp)
-    (sit-for 0 val nodisp)))
+  (sit-for (/ val 1000.0) nodisp))
 
 ;; EVENT may be a single event of a sequence of events
 (defsubst viper-ESC-event-p (event)
@@ -1262,9 +1260,9 @@ Arguments become related buffers.  This function should normally be used in
 the `Local variables' section of a file."
   (setq viper-related-files-and-buffers-ring
        (make-ring (1+ (length other-files-or-buffers))))
-  (mapcar '(lambda (elt)
-            (viper-ring-insert viper-related-files-and-buffers-ring elt))
-         other-files-or-buffers)
+  (mapc '(lambda (elt)
+         (viper-ring-insert viper-related-files-and-buffers-ring elt))
+       other-files-or-buffers)
   (viper-ring-insert viper-related-files-and-buffers-ring (buffer-name))
   )
 
index d03e85d298cd56a24105a5b9e171af88c7cb50ce..c01182501675c638b9d177e1ee510d0c782bf80a 100644 (file)
@@ -9,7 +9,7 @@
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 ;; Keywords: emulations
 
-(defconst viper-version "3.13.1 of October 23, 2006"
+(defconst viper-version "3.14 of August 18, 2007"
   "The current version of Viper")
 
 ;; This file is part of GNU Emacs.
 ;;; Code:
 
 (require 'advice)
-(require 'cl)
 (require 'ring)
 
 ;; compiler pacifier
@@ -457,6 +456,7 @@ unless it is coming up in a wrong Viper state."
 (defcustom viper-insert-state-mode-list
   '(internal-ange-ftp-mode
     comint-mode
+    gud-mode
     inferior-emacs-lisp-mode
     erc-mode
     eshell-mode
@@ -481,6 +481,7 @@ unless it is coming up in a wrong Viper state."
   '((help-mode emacs-state viper-slash-and-colon-map)
     (comint-mode insert-state viper-comint-mode-modifier-map)
     (comint-mode vi-state viper-comint-mode-modifier-map)
+    (gud-mode insert-state viper-comint-mode-modifier-map)
     (shell-mode insert-state viper-comint-mode-modifier-map)
     (inferior-emacs-lisp-mode insert-state viper-comint-mode-modifier-map)
     (shell-mode vi-state viper-comint-mode-modifier-map)
@@ -645,6 +646,11 @@ This startup message appears whenever you load Viper, unless you type `y' now."
         (remove-hook symbol 'viper-change-state-to-emacs)
         (remove-hook symbol 'viper-change-state-to-insert)
         (remove-hook symbol 'viper-change-state-to-vi)
+        (remove-hook symbol 'viper-minibuffer-post-command-hook)
+        (remove-hook symbol 'viper-minibuffer-setup-sentinel)
+        (remove-hook symbol 'viper-major-mode-change-sentinel)
+        (remove-hook symbol 'set-viper-state-in-major-mode)
+        (remove-hook symbol 'viper-post-command-sentinel)
         )))
 
 ;; Remove local value in all existing buffers
@@ -681,6 +687,9 @@ It also can't undo some Viper settings."
    global-mode-string
    (delq 'viper-mode-string global-mode-string))
 
+  (setq default-major-mode
+       (viper-standard-value 'default-major-mode viper-saved-non-viper-variables))
+
   (if viper-emacs-p
       (setq-default
        mark-even-if-inactive
@@ -771,9 +780,7 @@ It also can't undo some Viper settings."
   (mapatoms 'viper-remove-hooks)
   (remove-hook 'comint-mode-hook 'viper-comint-mode-hook)
   (remove-hook 'erc-mode-hook 'viper-comint-mode-hook)
-  (remove-hook 'minibuffer-setup-hook 'viper-minibuffer-setup-sentinel)
   (remove-hook 'change-major-mode-hook 'viper-major-mode-change-sentinel)
-  (remove-hook 'post-command-hook 'viper-minibuffer-post-command-hook)
 
   ;; unbind Viper mouse bindings
   (viper-unbind-mouse-search-key)
@@ -792,7 +799,7 @@ It also can't undo some Viper settings."
 
 ;; set appropriate Viper state in buffers that changed major mode
 (defun set-viper-state-in-major-mode ()
-  (mapcar
+  (mapc
    (lambda (buf)
      (if (viper-buffer-live-p buf)
         (with-current-buffer buf
@@ -1025,48 +1032,63 @@ It also can't undo some Viper settings."
       (setq global-mode-string
            (append '("" viper-mode-string) (cdr global-mode-string))))
 
-  (defadvice describe-key (before viper-describe-key-ad protect activate)
-    "Force to read key via `viper-read-key-sequence'."
-    (interactive (let (key)
-                  (setq key (viper-read-key-sequence
-                             "Describe key (or click or menu item): "))
-                  (list key
-                        (prefix-numeric-value current-prefix-arg)
-                        ;; If KEY is a down-event, read also the
-                        ;; corresponding up-event.
-                        (and (vectorp key)
-                             (let ((last-idx (1- (length key))))
-                               (and (eventp (aref key last-idx))
-                                    (memq 'down (event-modifiers
-                                                 (aref key last-idx)))))
-                             (or (and (eventp (aref key 0))
-                                      (memq 'down (event-modifiers
-                                                   (aref key 0)))
-                                      ;; For the C-down-mouse-2 popup
-                                      ;; menu, there is no subsequent up-event.
-                                      (= (length key) 1))
-                                 (and (> (length key) 1)
-                                      (eventp (aref key 1))
-                                      (memq 'down (event-modifiers (aref key 1)))))
-                             (read-event))))))
-
-  (defadvice describe-key-briefly
-    (before viper-describe-key-briefly-ad protect activate)
-    "Force to read key via `viper-read-key-sequence'."
-    (interactive (let (key)
-                  (setq key (viper-read-key-sequence
-                             "Describe key (or click or menu item): "))
-                  ;; If KEY is a down-event, read and discard the
-                  ;; corresponding up-event.
-                  (and (vectorp key)
-                       (let ((last-idx (1- (length key))))
-                         (and (eventp (aref key last-idx))
-                              (memq 'down (event-modifiers (aref key last-idx)))))
-                       (read-event))
-                  (list key
-                        (if current-prefix-arg
-                            (prefix-numeric-value current-prefix-arg))
-                        1))))
+  (viper-cond-compile-for-xemacs-or-emacs
+   ;; XEmacs
+   (defadvice describe-key (before viper-describe-key-ad protect activate)
+     "Force to read key via `viper-read-key-sequence'."
+     (interactive (list (viper-read-key-sequence "Describe key: "))))
+   ;; Emacs
+   (defadvice describe-key (before viper-describe-key-ad protect activate)
+     "Force to read key via `viper-read-key-sequence'."
+     (interactive (let (key)
+                   (setq key (viper-read-key-sequence
+                              "Describe key (or click or menu item): "))
+                   (list key
+                         (prefix-numeric-value current-prefix-arg)
+                         ;; If KEY is a down-event, read also the
+                         ;; corresponding up-event.
+                         (and (vectorp key)
+                              (let ((last-idx (1- (length key))))
+                                (and (eventp (aref key last-idx))
+                                     (memq 'down (event-modifiers
+                                                  (aref key last-idx)))))
+                              (or (and (eventp (aref key 0))
+                                       (memq 'down (event-modifiers
+                                                    (aref key 0)))
+                                       ;; For the C-down-mouse-2 popup menu,
+                                       ;; there is no subsequent up-event
+                                       (= (length key) 1))
+                                  (and (> (length key) 1)
+                                       (eventp (aref key 1))
+                                       (memq 'down (event-modifiers (aref key 1)))))
+                              (read-event))))))
+   ) ; viper-cond-compile-for-xemacs-or-emacs
+
+  (viper-cond-compile-for-xemacs-or-emacs
+   ;; XEmacs
+   (defadvice describe-key-briefly
+     (before viper-describe-key-briefly-ad protect activate)
+     "Force to read key via `viper-read-key-sequence'."
+     (interactive (list (viper-read-key-sequence "Describe key briefly: "))))
+   ;; Emacs
+   (defadvice describe-key-briefly
+     (before viper-describe-key-briefly-ad protect activate)
+     "Force to read key via `viper-read-key-sequence'."
+     (interactive (let (key)
+                   (setq key (viper-read-key-sequence
+                              "Describe key (or click or menu item): "))
+                   ;; If KEY is a down-event, read and discard the
+                   ;; corresponding up-event.
+                   (and (vectorp key)
+                        (let ((last-idx (1- (length key))))
+                          (and (eventp (aref key last-idx))
+                               (memq 'down (event-modifiers (aref key last-idx)))))
+                        (read-event))
+                   (list key
+                         (if current-prefix-arg
+                             (prefix-numeric-value current-prefix-arg))
+                         1))))
+   ) ;; viper-cond-compile-for-xemacs-or-emacs
 
   (defadvice find-file (before viper-add-suffix-advice activate)
     "Use `read-file-name' for reading arguments."
@@ -1198,6 +1220,7 @@ These two lines must come in the order given.
 (if (null viper-saved-non-viper-variables)
     (setq viper-saved-non-viper-variables
          (list
+          (cons 'default-major-mode (list default-major-mode))
           (cons 'next-line-add-newlines (list next-line-add-newlines))
           (cons 'require-final-newline (list require-final-newline))
           (cons 'scroll-step (list scroll-step))
index d04df5e48b67e9d3ce7739897907173b49238537..90d576dc71d2740080dceb013a58fff62f3f96dc 100644 (file)
@@ -36,6 +36,8 @@
 
 ;;; Code:
 
+(eval-when-compile (require 'cl))
+
 ;; History list for environment variable names.
 (defvar read-envvar-name-history nil)
 
@@ -45,14 +47,15 @@ Optional second arg MUSTMATCH, if non-nil, means require existing envvar name.
 If it is also not t, RET does not exit if it does non-null completion."
   (completing-read prompt
                   (mapcar (lambda (enventry)
-                            (list (if enable-multibyte-characters
-                                      (decode-coding-string
-                                       (substring enventry 0
-                                                  (string-match "=" enventry))
-                                       locale-coding-system t)
-                                    (substring enventry 0
-                                               (string-match "=" enventry)))))
-                          process-environment)
+                             (let ((str (substring enventry 0
+                                             (string-match "=" enventry))))
+                               (if (multibyte-string-p str)
+                                   (decode-coding-string
+                                    str locale-coding-system t)
+                                 str)))
+                          (append process-environment
+                                  ;;(frame-environment)
+                                  ))
                   nil mustmatch nil 'read-envvar-name-history))
 
 ;; History list for VALUE argument to setenv.
@@ -88,17 +91,52 @@ Use `$$' to insert a single dollar sign."
                   start (+ (match-beginning 0) 1)))))
     string))
 
-;; Fixme: Should `process-environment' be recoded if LC_CTYPE &c is set?
+
+(defun setenv-internal (env variable value keep-empty)
+  "Set VARIABLE to VALUE in ENV, adding empty entries if KEEP-EMPTY.
+Changes ENV by side-effect, and returns its new value."
+  (let ((pattern (concat "\\`" (regexp-quote variable) "\\(=\\|\\'\\)"))
+       (case-fold-search nil)
+       (scan env)
+       prev found)
+    ;; Handle deletions from the beginning of the list specially.
+    (if (and (null value)
+            (not keep-empty)
+            env
+            (stringp (car env))
+            (string-match pattern (car env)))
+       (cdr env)
+      ;; Try to find existing entry for VARIABLE in ENV.
+      (while (and scan (stringp (car scan)))
+       (when (string-match pattern (car scan))
+         (if value
+             (setcar scan (concat variable "=" value))
+           (if keep-empty
+               (setcar scan variable)
+             (setcdr prev (cdr scan))))
+         (setq found t
+               scan nil))
+       (setq prev scan
+             scan (cdr scan)))
+      (if (and (not found) (or value keep-empty))
+         (cons (if value
+                   (concat variable "=" value)
+                 variable)
+               env)
+       env))))
+
+;; Fixme: Should the environment be recoded if LC_CTYPE &c is set?
 
 (defun setenv (variable &optional value substitute-env-vars)
   "Set the value of the environment variable named VARIABLE to VALUE.
 VARIABLE should be a string.  VALUE is optional; if not provided or
 nil, the environment variable VARIABLE will be removed.
 
-Interactively, a prefix argument means to unset the variable.
-Interactively, the current value (if any) of the variable
-appears at the front of the history list when you type in the new value.
-Interactively, always replace environment variables in the new value.
+Interactively, a prefix argument means to unset the variable, and
+otherwise the current value (if any) of the variable appears at
+the front of the history list when you type in the new value.
+This function always replaces environment variables in the new
+value when called interactively.
 
 SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
 variables in VALUE with `substitute-env-vars', which see.
@@ -138,48 +176,86 @@ a side-effect."
   (if (and value (multibyte-string-p value))
       (setq value (encode-coding-string value locale-coding-system)))
   (if (string-match "=" variable)
-      (error "Environment variable name `%s' contains `='" variable)
-    (let ((pattern (concat "\\`" (regexp-quote (concat variable "="))))
-         (case-fold-search nil)
-         (scan process-environment)
-         found)
-      (if (string-equal "TZ" variable)
-         (set-time-zone-rule value))
-      (while scan
-       (cond ((string-match pattern (car scan))
-              (setq found t)
-              (if (eq nil value)
-                  (setq process-environment (delq (car scan)
-                                                  process-environment))
-                (setcar scan (concat variable "=" value)))
-              (setq scan nil)))
-       (setq scan (cdr scan)))
-      (or found
-         (if value
-             (setq process-environment
-                   (cons (concat variable "=" value)
-                         process-environment))))))
+      (error "Environment variable name `%s' contains `='" variable))
+  (if (string-equal "TZ" variable)
+      (set-time-zone-rule value))
+  (setq process-environment (setenv-internal process-environment
+                                             variable value t))
   value)
 
-(defun getenv (variable)
+(defun getenv (variable &optional frame)
   "Get the value of environment variable VARIABLE.
 VARIABLE should be a string.  Value is nil if VARIABLE is undefined in
 the environment.  Otherwise, value is a string.
 
-This function consults the variable `process-environment'
-for its value."
+If optional parameter FRAME is non-nil, then it should be a
+frame.  This function will look up VARIABLE in its 'environment
+parameter.
+
+Otherwise, this function searches `process-environment' for
+VARIABLE.  If it is not found there, then it continues the search
+in the environment list of the selected frame."
   (interactive (list (read-envvar-name "Get environment variable: " t)))
   (let ((value (getenv-internal (if (multibyte-string-p variable)
                                    (encode-coding-string
                                     variable locale-coding-system)
-                                 variable))))
+                                 variable)
+                               frame)))
     (if (and enable-multibyte-characters value)
        (setq value (decode-coding-string value locale-coding-system)))
     (when (interactive-p)
       (message "%s" (if value value "Not set")))
     value))
 
+(defun environment (&optional frame)
+  "Return a list of environment variables with their values.
+Each entry in the list is a string of the form NAME=VALUE.
+
+The returned list can not be used to change environment
+variables, only read them.  See `setenv' to do that.
+
+If optional parameter FRAME is non-nil, then it should be a
+frame.  The function returns the environment of that frame.
+
+The list is constructed by concatenating the elements of
+`process-environment' and the 'environment parameter of the
+selected frame, and removing duplicated and empty values.
+
+Non-ASCII characters are encoded according to the initial value of
+`locale-coding-system', i.e. the elements must normally be decoded for use.
+See `setenv' and `getenv'."
+  (let* ((env (append process-environment
+                      ;; (frame-environment frame)
+                     nil))
+        (scan env)
+        prev seen)
+    ;; Remove unset variables from the beginning of the list.
+    (while (and env
+               (or (not (stringp (car env)))
+                   (not (string-match "=" (car env)))))
+      (or (member (car env) seen)
+         (setq seen (cons (car env) seen)))
+      (setq env (cdr env)
+           scan env))
+    (let (name)
+      (while scan
+       (cond ((or (not (stringp (car scan)))
+                  (not (string-match "=" (car scan))))
+              ;; Unset variable.
+              (or (member (car scan) seen)
+                  (setq seen (cons (car scan) seen)))
+              (setcdr prev (cdr scan)))
+             ((member (setq name (substring (car scan) 0 (string-match "=" (car scan)))) seen)
+              ;; Duplicated variable.
+              (setcdr prev (cdr scan)))
+             (t
+              ;; New variable.
+              (setq seen (cons name seen))))
+       (setq prev scan
+             scan (cdr scan))))
+    env))
+
 (provide 'env)
 
-;;; arch-tag: b7d6a8f7-bc81-46db-8e39-8d721d4ed0b8
+;; arch-tag: b7d6a8f7-bc81-46db-8e39-8d721d4ed0b8
 ;;; env.el ends here
index d72d472d69fe7724b028813304077503728ddbff..fb824f0899607cc32928694e2325f399b2081c1c 100644 (file)
+2007-10-13  Glenn Morris  <rgm@gnu.org>
+
+       * erc-track.el (erc-modified-channels-update): Use mapc rather
+       than mapcar.
+
+2007-09-18  Exal de Jesus Garcia Carrillo  <exal@gmx.de>  (tiny change)
+
+       * erc.texi (Special-Features): Fix small typo.
+
+2007-09-16  Michael Olson  <mwolson@gnu.org>
+
+       * erc-track.el (erc-track-switch-direction): Mention
+       erc-track-faces-priority-list.  Thanks to Leo for the suggestion.
+
+2007-09-11  Exal de Jesus Garcia Carrillo  <exal@gnu.org>  (tiny change)
+
+       * erc-sound.el: Fix typo in setting up instructions.
+
+2007-09-10  Michael Olson  <mwolson@gnu.org>
+
+       * Makefile (elpa): Copy dir template rather than echoing a few
+       lines.  The reason for this is that the ELPA package for ERC was
+       getting a corrupt dir entry.
+
+       * dir-template: Template for the ELPA dir file.
+
+2007-09-08  Michael Olson  <mwolson@gnu.org>
+
+       * erc-log.el (erc-log-filter-function): New option that specifies
+       the function to call for filtering text before writing it to a log
+       file.  Thanks to David O'Toole for the suggestion.
+       (erc-save-buffer-in-logs): Use erc-log-filter-function.  Make sure
+       we carry along the value of coding-system-for-write, because this
+       could potentially be shadowed by the temporary buffer.
+
+       * erc.el (erc-version-string): Update to 5.3, development version.
+
+2007-09-07  Glenn Morris  <rgm@gnu.org>
+
+       * erc.el (erc-toggle-debug-irc-protocol): Fix call to
+       erc-view-mode-enter.
+
 2007-08-08  Glenn Morris  <rgm@gnu.org>
 
        * erc-log.el, erc.el: Replace `iff' in doc-strings and comments.
 
+2007-09-03  Michael Olson  <mwolson@gnu.org>
+
+       * erc.el (erc-default-port): Make this an integer value rather
+       than a string.  Thanks to Luca Capello for the report.
+
+2007-08-27  Michael Olson  <mwolson@gnu.org>
+
+       * erc.el (erc-cmd-GQUIT): If erc-kill-queries-on-quit is non-nil,
+       kill all query buffers after 4 seconds.
+
+2007-08-16  Michael Olson  <mwolson@gnu.org>
+
+       * NEWS: Add ERC 5.3 changes section, and mention jbms' erc-track
+       compatibility note.
+
+       * erc-track.el (erc-track-list-changed-hook): Turn this into a
+       customizable option.
+       (erc-track-switch-direction): Add 'importance option.
+       (erc-modified-channels-display): If erc-track-switch-direction is
+       'importance, call erc-track-sort-by-importance.
+       (erc-track-face-priority): New function that returns a number
+       indicating the position of a face in
+       erc-track-faces-priority-list.
+       (erc-track-sort-by-importance): New function that sorts
+       erc-modified-channels-list according to erc-track-face-priority.
+       (erc-track-get-active-buffer): Make 'oldest a rough opposite of
+       'importance.
+
+2007-08-14  Jeremy Maitin-Shepard  <jbms@cmu.edu>
+
+       * erc-track.el (erc-track-remove-disconnected-buffers): New
+       variable which controls whether buffers associated with a server
+       that is disconnected should be removed from
+       `erc-modified-channels-alist'.  Existing behavior is to
+       unconditionally remove such buffers, which is achieved by setting
+       `erc-track-removed-disconnected-buffers' to t.  When set to t,
+       which is the new default value, such buffers remain in the list,
+       which I think is often the desired behavior, since the user may
+       likely wish to find out about activity that occurred in a channel
+       prior to it being disconnected.
+       (erc-track-list-changed-hook): New hook that is run whenever the
+       contents of `erc-modified-channels-alist' changes; it is useful
+       for users such as myself that don't use the default mode-line
+       notification but instead use a separate mechanism (which is tied
+       to my window manager) to provide notification of channel activity.
+       (erc-track-get-buffer-window): New function that acts as a wrapper
+       around `get-buffer-window' that handles the `selected-visible'
+       option of `erc-track-visibility'; previously, the value of
+       `erc-track-visibility' was passed directly to `get-buffer-window',
+       which does not support `selected-visible'; consequently,
+       `selected-visible' was not properly supported.
+       (erc-track-modified-channels): Fix a bug in the logic for removing
+       buffers from the list in certain cases.
+       (erc-track-position-in-mode-line): Add a supported value that
+       specifies that the tracking information should not be added to the
+       mode line at all.  The value of nil is used to indicate that the
+       information should not be added at all to the mode line.
+       (erc-track-add-to-mode-line): Check for position eq to t, rather
+       than non-nil.
+       (erc-buffer-visible): Use erc-track-get-buffer-window.
+       (erc-modified-channels-update): Take
+       erc-track-remove-disconnected-buffers into account.
+       (erc-modified-channels-display): Run
+       `erc-track-list-changed-hook'.
+
+       * erc.el (erc-reuse-frames): New option that determines whether
+       new frames are always created.  Defaults to t.  This only has an
+       effect when erc-join-buffer is set to 'frame.
+       (erc-setup-buffer): Use it.
+
+2007-08-14  Michael Olson  <mwolson@gnu.org>
+
+       * erc-backend.el (erc-server-reconnect): If the server buffer has
+       been killed, use the current buffer instead.  If the current
+       buffer is not an ERC buffer, give an error.  This fixes a bug when
+       /reconnect is run from a channel buffer whose server buffer has
+       been deleted.  Thanks to jbms for the report.
+       (erc-process-sentinel-1): Take server buffer as an argument, so
+       that we can make sure that it is current.
+       (erc-process-sentinel): Pass buffer to erc-process-sentinel-1.
+       (erc-process-sentinel-2): New function split from
+       erc-process-sentinel-1.  If server buffer is deleted during a
+       reconnect attempt, stop trying to reconnect.  Fix bug where
+       reconnect was not happening when erc-server-reconnect-attempts was
+       t.  Call erc-server-reconnect-p only once each time.  If we are
+       instructed to try connecting indefinitely, tell the user that they
+       can stop this by killing the server buffer.  Call the process
+       sentinel by means of run-at-time, so that there is time to kill
+       the buffer if need be; this also removes the need for a while
+       loop.  Refuse to reconnect again if erc-server-reconnect-timeout
+       is not an number.
+
+       * erc.el (erc-command-no-process-p): Fix bug: the return value of
+       erc-extract-command-from-line is a list rather than a single
+       symbol.  Thanks to jbms for the report.
+       (erc-cmd-RECONNECT): Use simpler logic, and use buffer-live-p
+       rather than bufferp.
+       (erc-send-current-line, erc-display-command, erc-display-msg):
+       Handle case where erc-server-process is nil, so that /reconnect
+       works.
+
+2007-08-12  Michael Olson  <mwolson@gnu.org>
+
+       * erc-identd.el (erc-identd-filter): Instead of sending an EOF
+       character, which now confuses freenode, stop the server process,
+       so that no new connections are accepted, and kill the current
+       client process.
+
 2007-07-30  Michael Olson  <mwolson@gnu.org>
 
        * erc-nicklist.el: Remove from the Emacs source tree.  This file
        is not release quality, and relies heavily on a module which
        cannot be distributed with ERC due to licensing reasons.
 
+2007-07-29  Michael Olson  <mwolson@gnu.org>
+
+       * erc-list.el: Relicense to GPLv3.  Since the file was already
+       licensed under version 2 or later, it turns out that we do not
+       need the permission of all of the authors in order to proceed.
+
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
        * Relicense all FSF files to GPLv3 or later.
 
-2007-06-07  Juanma Barranquero  <lekktu@gmail.com>
+2007-07-13  Michael Olson  <mwolson@gnu.org>
+
+       * erc-goodies.el (erc-get-bg-color-face, erc-get-fg-color-face):
+       Use erc-error rather than message and beep.
+
+       * erc-sound.el: Indentation fix.
+
+       * erc.el (erc-command-no-process-p): New function that determines
+       if its argument is an ERC command that can be run when the server
+       process is not alive.
+       (erc-cmd-SET, erc-cmd-CLEAR, erc-cmd-COUNTRY, erc-cmd-HELP)
+       (erc-cmd-LASTLOG, erc-cmd-QUIT, erc-cmd-GQUIT)
+       (erc-cmd-RECONNECT, erc-cmd-SERVER): Denote that these commands
+       can be run even when the server process is not alive.
+       (erc-send-current-line): Call erc-command-no-process-p if the
+       server process is not alive, to determine if we have a command
+       that can be run anyway.  Thanks to Tom Tromey for the bug report.
+       (erc-error): New function that either displays a message or throws
+       an error, depending on whether debug-on-error is non-nil.
+       (erc-cmd-SERVER, erc-send-current-line): Use it.
+
+2007-07-10  Michael Olson  <mwolson@gnu.org>
+
+       * Relicense all FSF-assigned code to GPLv3.
+
+2007-06-25  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi (Options): Fix typo.
+       (Getting Help and Reporting Bugs): Update webpage URL.  Make Gmane
+       part more readable.
+
+2007-06-20  Michael Olson  <mwolson@gnu.org>
+
+       * erc-stamp.el (erc-timestamp-format-left): New option that
+       specifies the left timestamp to use for
+       erc-insert-timestamp-left-and-right.
+       (erc-timestamp-format-right): New option that specifies the right
+       timestamp to use for erc-insert-timestamp-left-and-right.
+       (erc-insert-timestamp-function): Change default to
+       erc-insert-timestamp-left-and-right.
+       (erc-insert-away-timestamp-function): Ditto.
+       (erc-timestamp-last-inserted-left)
+       (erc-timestamp-last-inserted-right): New variables to keep track
+       of data for erc-insert-timestamp-left-and-right.
+       (erc-insert-timestamp-left-and-right): New function that places
+       timestamps on both the left and right sides of the screen, but
+       only if each timestamp has changed since it was last computed.
+       Thanks to offby1 for urging me to merge this.
+
+       * erc.el (erc-open-ssl-stream): Display informative error when
+       ssl.el not found.
+       (erc-tls): New function to connect using tls.el.
+       (erc-open-tls-stream): New function to initiate tls connection.
+       Display informative error when tls.el not found.
+
+2007-06-19  Michael Olson  <mwolson@gnu.org>
+
+       * erc-log.el: Update header with accurate instructions.
 
-       * erc.el (erc-startup-file-list): Fix typo in docstring.
+2007-06-17  Michael Olson  <mwolson@gnu.org>
+
+       * erc-pkg.el: Update description to match what is currently in
+       ELPA.
+
+2007-06-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * erc-goodies.el (erc-scroll-to-bottom): Remove redundant check.
+
+2007-06-13  Michael Olson  <mwolson@gnu.org>
+
+       * erc-compat.el (erc-with-selected-window): New compatibility
+       macro that implements `with-selected-window'.
+
+       * erc-goodies.el (erc-scroll-to-bottom): Use it.  This fixes a bug
+       with buffer ordering where ERC buffers would move to the top.
+       Thanks to Ivan Kanis for the patch.
+
+2007-06-10  Michael Olson  <mwolson@gnu.org>
+
+       * erc-log.el (erc-logging-enabled): Fix a bug that occurred when
+       `erc-log-channels-directory' had the name of a function.
 
 2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
 
-       * erc.el (erc-show-channel-key-p): Fix typo in docstring.
+       * erc.el (erc-show-channel-key-p, erc-startup-file-list):
+       Fix typo in docstring.
+
+2007-06-03  Michael Olson  <mwolson@gnu.org>
+
+       * erc-compat.el (erc-view-mode-enter): Make this its own function,
+       in order to document what we do, and provide sane fallback
+       behavior.
+
+       * erc.el (erc-toggle-debug-irc-protocol): Don't pass any arguments
+       to erc-view-mode-enter, since we don't do anything special with
+       the exit function.  This fixes a bug with Emacs 21 and Emacs 22.
+       Thanks to Leo for noticing.
+
+2007-05-30  Michael Olson  <mwolson@gnu.org>
+
+       * erc-compat.el (erc-user-emacs-directory): New variable that
+       determines where to find user-specific Emacs settings.  For Emacs,
+       this is usually ~/.emacs.d, and for XEmacs this is usually
+       ~/.xemacs.
+
+       * erc.el (erc-startup-file-list): Use erc-user-emacs-directory.
+
+2007-05-28  Michael Olson  <mwolson@gnu.org>
+
+       * erc-button.el (erc-button-url-regexp): Recognize parentheses as
+       part of URLs.  Thanks to Lawrence Mitchell for the fix.
+
+2007-05-26  Michael Olson  <mwolson@gnu.org>
+
+       * erc.texi (Modules): Fix references to completion modules.
+
+2007-05-21  Michael Olson  <mwolson@gnu.org>
+
+       * Makefile (SOURCE): Remove erc-pkg.el.
+       (debclean): New rule to clean old Debian packages of ERC.
+       (debprepare): Don't modify the released tarball, but copy it as
+       the .orig.tar.gz file.
+       (debrelease. debrevision): Remove.
+       (debinstall): New target that copies the generated Debian file to
+       a distro-specific location.
+       (deb): New rule that chains together the stages in building a
+       Debian package.
+       (EXTRAS): Add erc-nicklist.el, since it is not release-quality.
+       (extras): Copy images directory.
+
+       * erc-nicklist.el (erc-nicklist-icons-directory): Use
+       locate-library to find the "images" directory.  This should be
+       more failsafe.  Thanks to Tom Tromey for the idea.
+
+2007-05-19  Michael Olson  <mwolson@gnu.org>
+
+       * Makefile (ELPA): New variable that contains the location of my
+       local ELPA repository.
+       (elpa): New rule that makes an ELPA package for ERC.
+
+2007-04-19  Michael Olson  <mwolson@gnu.org>
+
+       * erc.el (erc-parse-prefix): New function that retrieves the
+       PREFIX server parameter from the current server and returns an
+       alist of prefix type to prefix character.
+       (erc-channel-receive-names): Use `erc-parse-prefix' to determine
+       whether the first character of a nick is a prefix character or
+       not.  This should fix a bug reported by bromine about needing to
+       type "%" first to complete nicks of people who are "hops" on
+       Slashnet.  This should also support for very exotic IRC server
+       setups, if any exist.
+       (erc-update-current-channel-member): Indentation.
+
+2007-04-15  Michael Olson  <mwolson@gnu.org>
+
+       * erc-log.el (erc-generate-log-file-name-function): Docfix.
+       Mention how to deal with the case for putting log files in
+       different directories.  Change a customization type from `symbol'
+       to `function'.
+       (erc-log-channels-directory): Allow this to contain a function
+       name, which is called with the same args as in
+       `erc-generate-log-file-name-function'.  Thanks to andrewy for the
+       report and use case.
+       (erc-current-logfile): Detect if `erc-log-channels-directory' is a
+       function and call it with arguments if so.
+
+2007-04-12  Michael Olson  <mwolson@gnu.org>
+
+       * erc-backend.el (define-erc-response-handler): Mention that hook
+       processing stops when the function returns non-nil.  This should
+       help avoid a nasty "gotcha" when making custom functions.  Thanks
+       to John Sullivan for the report.
+
+2007-04-08  Diane Murray  <disumu@x3y2z1.net>
+
+       * erc-nicklist.el (erc-nicklist-voiced-position): Fixed
+       customization mismatch.
 
 2007-04-01  Michael Olson  <mwolson@gnu.org>
 
        tarball.
        (upload-extras): New rule to upload the extras tarball.  It's
        yucky to replicate upload, but oh well.
+       (DISTRIBUTOR): New variable used to differentiate between building
+       packages for Ubuntu and Debian.
+       (debrelease, debrevision): Use it.
+       (debbuild): Run linda in addition to lintian.
 
        * NEWS: Mention extras tarball.  Note which files have been
        renamed.  Note that erc-list is enabled by default, except in
index 349f913706661634a4736bf9c6ce5ac2a4bb24d1..4e250490e9c13094491ce84b801e1506301e6f98 100644 (file)
@@ -550,11 +550,12 @@ We will store server variables in the buffer given by BUFFER."
 (defun erc-server-reconnect ()
 "Reestablish the current IRC connection.
 Make sure you are in an ERC buffer when running this."
-  (let ((server (erc-server-buffer)))
-    (unless (and server
-                 (buffer-live-p server))
-      (error "Couldn't switch to server buffer"))
-    (with-current-buffer server
+  (let ((buffer (erc-server-buffer)))
+    (unless (buffer-live-p buffer)
+      (if (eq major-mode 'erc-mode)
+          (setq buffer (current-buffer))
+        (error "Reconnect must be run from an ERC buffer")))
+    (with-current-buffer buffer
       (erc-update-mode-line)
       (erc-set-active-buffer (current-buffer))
       (setq erc-server-last-sent-time 0)
@@ -609,39 +610,61 @@ EVENT is the message received from the closed connection process."
            ;; open-network-stream-nowait error for connection refused
            (not (string-match "^failed with code 111" event)))))
 
-(defun erc-process-sentinel-1 (event)
+(defun erc-process-sentinel-2 (event buffer)
+  "Called when `erc-process-sentinel-1' has detected an unexpected disconnect."
+  (if (not (buffer-live-p buffer))
+      (erc-update-mode-line)
+    (with-current-buffer buffer
+      (let ((reconnect-p (erc-server-reconnect-p event)))
+        (erc-display-message nil 'error (current-buffer)
+                             (if reconnect-p 'disconnected
+                               'disconnected-noreconnect))
+        (if (not reconnect-p)
+            ;; terminate, do not reconnect
+            (progn
+              (erc-display-message nil 'error (current-buffer)
+                                   'terminated ?e event)
+              ;; Update mode line indicators
+              (erc-update-mode-line)
+              (set-buffer-modified-p nil))
+          ;; reconnect
+          (condition-case err
+              (progn
+                (setq erc-server-reconnecting nil)
+                (erc-server-reconnect)
+                (setq erc-server-reconnect-count 0))
+            (error (when (buffer-live-p buffer)
+                     (set-buffer buffer)
+                     (if (integerp erc-server-reconnect-attempts)
+                         (setq erc-server-reconnect-count
+                               (1+ erc-server-reconnect-count))
+                       (message "%s ... %s"
+                                "Reconnecting until we succeed"
+                                "kill the ERC server buffer to stop"))
+                     (if (numberp erc-server-reconnect-timeout)
+                         (run-at-time erc-server-reconnect-timeout nil
+                                      #'erc-process-sentinel-2
+                                      event buffer)
+                       (error (concat "`erc-server-reconnect-timeout`"
+                                      " must be a number")))))))))))
+
+(defun erc-process-sentinel-1 (event buffer)
   "Called when `erc-process-sentinel' has decided that we're disconnecting.
 Determine whether user has quit or whether erc has been terminated.
 Conditionally try to reconnect and take appropriate action."
-  (if erc-server-quitting
-      ;; normal quit
-      (progn
-        (erc-display-message nil 'error (current-buffer) 'finished)
-        (when erc-kill-server-buffer-on-quit
+  (with-current-buffer buffer
+    (if erc-server-quitting
+        ;; normal quit
+        (progn
+          (erc-display-message nil 'error (current-buffer) 'finished)
+          ;; Update mode line indicators
+          (erc-update-mode-line)
+          ;; Kill server buffer if user wants it
           (set-buffer-modified-p nil)
-          (kill-buffer (current-buffer))))
-    ;; unexpected disconnect
-    (let ((again t))
-      (while again
-        (setq again nil)
-        (erc-display-message nil 'error (current-buffer)
-                             (if (erc-server-reconnect-p event)
-                                 'disconnected
-                               'disconnected-noreconnect))
-        (if (erc-server-reconnect-p event)
-            (condition-case err
-                (progn
-                  (setq erc-server-reconnecting nil)
-                  (erc-server-reconnect)
-                  (setq erc-server-reconnect-count 0))
-              (error (when (integerp erc-server-reconnect-attempts)
-                       (setq erc-server-reconnect-count
-                             (1+ erc-server-reconnect-count))
-                       (sit-for erc-server-reconnect-timeout)
-                       (setq again t))))
-          ;; terminate, do not reconnect
-          (erc-display-message nil 'error (current-buffer)
-                               'terminated ?e event))))))
+          (when erc-kill-server-buffer-on-quit
+            (kill-buffer (current-buffer))))
+      ;; unexpected disconnect
+      (erc-process-sentinel-2 event buffer))))
 
 (defun erc-process-sentinel (cproc event)
   "Sentinel function for ERC process."
@@ -668,12 +691,7 @@ Conditionally try to reconnect and take appropriate action."
         (delete-region (point) (point-max))
         ;; Decide what to do with the buffer
         ;; Restart if disconnected
-        (erc-process-sentinel-1 event)
-        ;; Make sure we don't write to the buffer if it has been
-        ;; killed
-        (when (buffer-live-p buf)
-          (erc-update-mode-line)
-          (set-buffer-modified-p nil))))))
+        (erc-process-sentinel-1 event buf)))))
 
 ;;;; Sending messages
 
@@ -1054,8 +1072,11 @@ Would expand to:
       \"Some non-generic variable documentation.
 
   Hook called upon receiving a WHOIS server response.
+
   Each function is called with two arguments, the process associated
-  with the response and the parsed response.
+  with the response and the parsed response.  If the function returns
+  non-nil, stop processing the hook.  Otherwise, continue.
+
   See also `erc-server-311'.\")
 
     (defalias 'erc-server-WI 'erc-server-311)
@@ -1064,7 +1085,9 @@ Would expand to:
 
   Hook called upon receiving a WI server response.
   Each function is called with two arguments, the process associated
-  with the response and the parsed response.
+  with the response and the parsed response.  If the function returns
+  non-nil, stop processing the hook.  Otherwise, continue.
+
   See also `erc-server-311'.\"))
 
 \(fn (NAME &rest ALIASES) &optional EXTRA-FN-DOC EXTRA-VAR-DOC &rest FN-BODY)"
@@ -1078,7 +1101,9 @@ Would expand to:
          (fn-name (intern (format "erc-server-%s" name)))
          (hook-doc (format "%sHook called upon receiving a %%s server response.
 Each function is called with two arguments, the process associated
-with the response and the parsed response.
+with the response and the parsed response.  If the function returns
+non-nil, stop processing the hook.  Otherwise, continue.
+
 See also `%s'."
                            (if extra-var-doc
                                (concat extra-var-doc "\n\n")
index 35a20d5279f3e60eab4d3ea05dbb6927a30e4e56..81c604d0538d079dbb1d3a42304af7c6181abaad 100644 (file)
@@ -99,7 +99,7 @@ above them."
   (concat "\\(www\\.\\|\\(s?https?\\|"
           "ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\)"
           "\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?"
-          "[-a-zA-Z0-9_=!?#$@~`%&*+\\/:;.,]+[-a-zA-Z0-9_=#$@~`%&*+\\/]")
+          "[-a-zA-Z0-9_=!?#$@~`%&*+\\/:;.,()]+[-a-zA-Z0-9_=#$@~`%&*+\\/()]")
   "Regular expression that matches URLs."
   :group 'erc-button
   :type 'regexp)
index 8be3bed1a78136493494b02a911b25f13d162d3e..47bdd94ade2ae387f70abc67768ded6caf82393b 100644 (file)
@@ -56,6 +56,18 @@ See `erc-encoding-coding-alist'."
     (format-time-string "%Y-%m-%d" emacs-build-time))
   "Time at which Emacs was dumped out.")
 
+;; Emacs 21 and XEmacs do not have user-emacs-directory, but XEmacs
+;; has user-init-directory.
+(defvar erc-user-emacs-directory
+  (cond ((boundp 'user-emacs-directory)
+        user-emacs-directory)
+       ((boundp 'user-init-directory)
+        user-init-directory)
+       (t "~/.emacs.d/"))
+  "Directory beneath which additional per-user Emacs-specific files
+are placed.
+Note that this should end with a directory separator.")
+
 ;; XEmacs' `replace-match' does not replace matching subexpressions in strings.
 (defun erc-replace-match-subexpression-in-string
   (newtext string match subexp start &optional fixedcase literal)
@@ -68,6 +80,7 @@ See `replace-match' for explanations of FIXEDCASE and LITERAL."
         (replace-match newtext fixedcase literal string))
        (t (replace-match newtext fixedcase literal string subexp))))
 
+(defalias 'erc-with-selected-window 'with-selected-window)
 (defalias 'erc-cancel-timer 'cancel-timer)
 (defalias 'erc-make-obsolete 'make-obsolete)
 (defalias 'erc-make-obsolete-variable 'make-obsolete-variable)
index 7d995ebb7bb43680f851341463cc373b9afeb4a7..9131ce6828247406660230ca4396c8ab1d5cdd02 100644 (file)
@@ -77,15 +77,14 @@ You can control which line is recentered to by customizing the
 variable `erc-input-line-position'.
 
 DISPLAY-START is ignored."
-  (if (and window (window-live-p window))
+  (if (window-live-p window)
       ;; Temporarily bind resize-mini-windows to nil so that users who have it
       ;; set to a non-nil value will not suffer from premature minibuffer
       ;; shrinkage due to the below recenter call.  I have no idea why this
       ;; works, but it solves the problem, and has no negative side effects.
       ;; (Fran Litterio, 2003/01/07)
       (let ((resize-mini-windows nil))
-        (save-selected-window
-          (select-window window)
+        (erc-with-selected-window window
           (save-restriction
             (widen)
             (when (and erc-insert-marker
@@ -282,10 +281,8 @@ The value `erc-interpret-controls-p' must also be t for this to work."
   "Fetches the right face for background color N (0-15)."
   (if (stringp n) (setq n (string-to-number n)))
   (if (not (numberp n))
-      (progn
-        (message "erc-get-bg-color-face: n is NaN: %S" n)
-        (beep)
-        'default)
+      (prog1 'default
+        (erc-error "erc-get-bg-color-face: n is NaN: %S" n))
     (when (> n 16)
       (erc-log (format "   Wrong color: %s" n))
       (setq n (mod n 16)))
@@ -298,10 +295,8 @@ The value `erc-interpret-controls-p' must also be t for this to work."
   "Fetches the right face for foreground color N (0-15)."
   (if (stringp n) (setq n (string-to-number n)))
   (if (not (numberp n))
-      (progn
-        (message "erc-get-fg-color-face: n is NaN: %S" n)
-        (beep)
-        'default)
+      (prog1 'default
+        (erc-error "erc-get-fg-color-face: n is NaN: %S" n))
     (when (> n 16)
       (erc-log (format "   Wrong color: %s" n))
       (setq n (mod n 16)))
index 4b72ee171b307113c3db75f654948bf87364b6df..db933094e1987bc8105c81fd124fe118c592fb68 100644 (file)
@@ -74,7 +74,8 @@ This can be either a string or a number."
                     (format "%s, %s : USERID : %s : %s\n"
                             port-on-server port-on-client
                             system-type (user-login-name)))
-       (process-send-eof erc-identd-process)))))
+       (stop-process erc-identd-process)
+       (delete-process proc)))))
 
 ;;;###autoload
 (defun erc-identd-start (&optional port)
index 88132afae0c46bd0f8133d86479e7fd3cbda3518..1733b3d1b00b97f2300e58222376ed45c7ab581f 100644 (file)
 
 ;; Quick start:
 ;;
-;; (setq erc-enable-logging t)
+;; (require 'erc-log)
 ;; (setq erc-log-channels-directory "/path/to/logfiles") ; must be writable
+;; (erc-log-enable)
 ;;
-;; There are two ways to setup logging. The first will write to the log files
-;; on each incoming or outgoing line - this may not be optimal on a laptop
-;; HDD. To do this, M-x customize-variable erc-modules, and add "log".
+;; Or:
 ;;
-;; The second method will save buffers on /part, /quit, or killing the
-;; channel buffer. To do this, add the following to your .emacs:
+;; M-x customize-variable erc-modules, and add "log".
 ;;
-;; (require 'erc-log)
+;; There are two ways to setup logging.  The first (default) method
+;; will save buffers on /part, /quit, or killing the channel
+;; buffer.
+;;
+;; The second will write to the log files on each incoming or outgoing
+;; line - this may not be optimal on a laptop HDD.  To use this
+;; method, add the following to the above instructions.
+;;
+;; (setq erc-save-buffer-on-part nil
+;;       erc-save-queries-on-quit nil
+;;       erc-log-write-after-send t
+;;       erc-log-write-after-insert t)
 ;;
 ;; If you only want to save logs for some buffers, customise the
 ;; variable `erc-enable-logging'.
@@ -99,15 +108,19 @@ The function must take five arguments: BUFFER, TARGET, NICK, SERVER and PORT.
 BUFFER is the buffer to be saved,
 TARGET is the name of the channel, or the target of the query,
 NICK is the current nick,
-SERVER and PORT are the parameters used to connect BUFFERs
-`erc-server-process'."
+SERVER and PORT are the parameters that were used to connect to BUFFERs
+`erc-server-process'.
+
+If you want to write logs into different directories, make a
+custom function which returns the directory part and set
+`erc-log-channels-directory' to its name."
   :group 'erc-log
   :type '(choice (const :tag "Long style" erc-generate-log-file-name-long)
                 (const :tag "Long, but with network name rather than server"
                        erc-generate-log-file-name-network)
                 (const :tag "Short" erc-generate-log-file-name-short)
                 (const :tag "With date" erc-generate-log-file-name-with-date)
-                (symbol :tag "Other function")))
+                (function :tag "Other function")))
 
 (defcustom erc-truncate-buffer-on-save nil
   "Truncate any ERC (channel, query, server) buffer when it is saved."
@@ -134,10 +147,16 @@ Log files are stored in `erc-log-channels-directory'."
   "The directory to place log files for channels.
 Leave blank to disable logging.  If not nil, all the channel
 buffers are logged in separate files in that directory.  The
-directory should not end with a trailing slash."
+directory should not end with a trailing slash.
+
+If this is the name of a function, the function will be called
+with the buffer, target, nick, server, and port arguments.  See
+`erc-generate-log-file-name-function' for a description of these
+arguments."
   :group 'erc-log
   :type '(choice directory
-                (const nil)))
+                (function "Function")
+                (const :tag "Disable logging" nil)))
 
 (defcustom erc-log-insert-log-on-open nil
   "*Insert log file contents into the buffer if a log file exists."
@@ -186,6 +205,16 @@ This should ideally, be a \"catch-all\" coding system, like
 `emacs-mule', or `iso-2022-7bit'."
   :group 'erc-log)
 
+(defcustom erc-log-filter-function nil
+  "*If non-nil, pass text through the given function before writing it to
+a log file.
+
+The function should take one argument, which is the text to filter."
+  :group 'erc-log
+  :type '(choice (function "Function")
+                (const :tag "No filtering" nil)))
+
+
 ;;;###autoload (autoload 'erc-log-mode "erc-log" nil t)
 (define-erc-module log nil
   "Automatically logs things you receive on IRC into files.
@@ -297,7 +326,8 @@ Logging is enabled if `erc-log-channels-directory' is non-nil, the directory
 is writeable (it will be created as necessary) and
 `erc-enable-logging' returns a non-nil value."
   (and erc-log-channels-directory
-       (erc-directory-writable-p erc-log-channels-directory)
+       (or (functionp erc-log-channels-directory)
+          (erc-directory-writable-p erc-log-channels-directory))
        (if (functionp erc-enable-logging)
           (funcall erc-enable-logging (or buffer (current-buffer)))
         erc-enable-logging)))
@@ -316,14 +346,19 @@ filename is downcased."
 If BUFFER is nil, the value of `current-buffer' is used.
 This is determined by `erc-generate-log-file-name-function'.
 The result is converted to lowercase, as IRC is case-insensitive"
-  (expand-file-name
-   (erc-log-standardize-name
-    (funcall erc-generate-log-file-name-function
-            (or buffer (current-buffer))
-            (or (buffer-name buffer) (erc-default-target))
-            (erc-current-nick)
-            erc-session-server erc-session-port))
-   erc-log-channels-directory))
+  (unless buffer (setq buffer (current-buffer)))
+  (let ((target (or (buffer-name buffer) (erc-default-target)))
+       (nick (erc-current-nick))
+       (server erc-session-server)
+       (port erc-session-port))
+    (expand-file-name
+     (erc-log-standardize-name
+      (funcall erc-generate-log-file-name-function
+              buffer target nick server port))
+     (if (functionp erc-log-channels-directory)
+        (funcall erc-log-channels-directory
+                 buffer target nick server port)
+       erc-log-channels-directory))))
 
 (defun erc-generate-log-file-name-with-date (buffer &rest ignore)
   "This function computes a short log file name.
@@ -380,17 +415,25 @@ You can save every individual message by putting this function on
   (or buffer (setq buffer (current-buffer)))
   (when (erc-logging-enabled buffer)
     (let ((file (erc-current-logfile buffer))
-         (coding-system-for-write erc-log-file-coding-system))
+         (coding-system erc-log-file-coding-system))
       (save-excursion
        (with-current-buffer buffer
          (save-restriction
            (widen)
-           ;; early on in the initalisation, don't try and write the log out
+           ;; early on in the initialization, don't try and write the log out
            (when (and (markerp erc-last-saved-position)
                       (> erc-insert-marker (1+ erc-last-saved-position)))
-             (write-region (1+ (marker-position erc-last-saved-position))
-                           (marker-position erc-insert-marker)
-                           file t 'nomessage)
+             (let ((start (1+ (marker-position erc-last-saved-position)))
+                   (end (marker-position erc-insert-marker)))
+               (if (functionp erc-log-filter-function)
+                   (let ((text (buffer-substring start end)))
+                     (with-temp-buffer
+                       (insert (funcall erc-log-filter-function text))
+                       (let ((coding-system-for-write coding-system))
+                         (write-region (point-min) (point-max)
+                                       file t 'nomessage))))
+                 (let ((coding-system-for-write coding-system))
+                   (write-region start end file t 'nomessage))))
              (if (and erc-truncate-buffer-on-save (interactive-p))
                  (progn
                    (let ((inhibit-read-only t)) (erase-buffer))
index 4d3d792b1b8c988412a32e595f1cece4eec8890b..7a1a28198bfc81082a650bb3d8f3a9e1aadf4f26 100644 (file)
@@ -30,7 +30,7 @@
 
 ;; Add the following to your .emacs if you want to play sounds.
 ;;
-;; (require 'erc-soud)
+;; (require 'erc-sound)
 ;; (erc-sound-enable)
 ;;
 ;; To send requests to other users from within query buffers, type the
@@ -125,7 +125,7 @@ See also `play-sound-file'."
     (if (and (not filepath) erc-default-sound)
        (setq filepath erc-default-sound))
     (cond ((and filepath (file-exists-p filepath))
-           (play-sound-file filepath))
+          (play-sound-file filepath))
          (t (beep)))
     (erc-log (format "Playing sound file %S" filepath))))
 
@@ -142,5 +142,11 @@ See also `play-sound-file'."
 
 (provide 'erc-sound)
 
-;; arch-tag: 53657d1d-007f-4a20-91c1-588e71cf0cee
 ;;; erc-sound.el ends here
+;;
+;; Local Variables:
+;; indent-tabs-mode: t
+;; tab-width: 8
+;; End:
+
+;; arch-tag: 53657d1d-007f-4a20-91c1-588e71cf0cee
index d67dffeaede3217d604b41a79587a95103ec76d9..3b7f5ba18f24c0631c721772c50ee3d3fdec4530 100644 (file)
@@ -58,16 +58,48 @@ If nil, timestamping is turned off."
   :type '(choice (const nil)
                 (string)))
 
-(defcustom erc-insert-timestamp-function 'erc-insert-timestamp-right
+(defcustom erc-timestamp-format-left "\n[%a %b %e %Y]\n"
+  "*If set to a string, messages will be timestamped.
+This string is processed using `format-time-string'.
+Good examples are \"%T\" and \"%H:%M\".
+
+This timestamp is used for timestamps on the left side of the
+screen when `erc-insert-timestamp-function' is set to
+`erc-insert-timestamp-left-and-right'.
+
+If nil, timestamping is turned off."
+  :group 'erc-stamp
+  :type '(choice (const nil)
+                (string)))
+
+(defcustom erc-timestamp-format-right " [%H:%M]"
+  "*If set to a string, messages will be timestamped.
+This string is processed using `format-time-string'.
+Good examples are \"%T\" and \"%H:%M\".
+
+This timestamp is used for timestamps on the right side of the
+screen when `erc-insert-timestamp-function' is set to
+`erc-insert-timestamp-left-and-right'.
+
+If nil, timestamping is turned off."
+  :group 'erc-stamp
+  :type '(choice (const nil)
+                (string)))
+
+(defcustom erc-insert-timestamp-function 'erc-insert-timestamp-left-and-right
   "*Function to use to insert timestamps.
 
 It takes a single argument STRING which is the final string
 which all text-properties already appended.  This function only cares about
 inserting this string at the right position.  Narrowing is in effect
 while it is called, so (point-min) and (point-max) determine the region to
-operate on."
+operate on.
+
+You will probably want to set
+`erc-insert-away-timestamp-function' to the same value."
   :group 'erc-stamp
-  :type '(choice (const :tag "Right" erc-insert-timestamp-right)
+  :type '(choice (const :tag "Both sides" erc-insert-timestamp-left-and-right)
+                (const :tag "Right" erc-insert-timestamp-right)
                 (const :tag "Left" erc-insert-timestamp-left)
                 function))
 
@@ -82,12 +114,14 @@ If `erc-timestamp-format' is set, this will not be used."
   :type '(choice (const nil)
                 (string)))
 
-(defcustom erc-insert-away-timestamp-function 'erc-insert-timestamp-right
+(defcustom erc-insert-away-timestamp-function
+  'erc-insert-timestamp-left-and-right
   "*Function to use to insert the away timestamp.
 
 See `erc-insert-timestamp-function' for details."
   :group 'erc-stamp
-  :type '(choice (const :tag "Right" erc-insert-timestamp-right)
+  :type '(choice (const :tag "Both sides" erc-insert-timestamp-left-and-right)
+                (const :tag "Right" erc-insert-timestamp-right)
                 (const :tag "Left" erc-insert-timestamp-left)
                 function))
 
@@ -160,6 +194,18 @@ or `erc-send-modify-hook'."
   "Last timestamp inserted into the buffer.")
 (make-variable-buffer-local 'erc-timestamp-last-inserted)
 
+(defvar erc-timestamp-last-inserted-left nil
+  "Last timestamp inserted into the left side of the buffer.
+This is used when `erc-insert-timestamp-function' is set to
+`erc-timestamp-left-and-right'")
+(make-variable-buffer-local 'erc-timestamp-last-inserted-left)
+
+(defvar erc-timestamp-last-inserted-right nil
+  "Last timestamp inserted into the right side of the buffer.
+This is used when `erc-insert-timestamp-function' is set to
+`erc-timestamp-left-and-right'")
+(make-variable-buffer-local 'erc-timestamp-last-inserted-right)
+
 (defcustom erc-timestamp-only-if-changed-flag t
   "*Insert timestamp only if its value changed since last insertion.
 If `erc-insert-timestamp-function' is `erc-insert-timestamp-left', a
@@ -272,6 +318,26 @@ be printed just before the window-width."
       (when erc-timestamp-intangible
        (erc-put-text-property from (1+ (point)) 'intangible t)))))
 
+(defun erc-insert-timestamp-left-and-right (string)
+  "This is another function that can be assigned to
+`erc-insert-timestamp-function'.  If the date is changed, it will
+print a blank line, the date, and another blank line.  If the time is
+changed, it will then print it off to the right."
+  (let* ((ct (current-time))
+        (ts-left (erc-format-timestamp ct erc-timestamp-format-left))
+        (ts-right (erc-format-timestamp ct erc-timestamp-format-right)))
+    ;; insert left timestamp
+    (unless (string-equal ts-left erc-timestamp-last-inserted-left)
+      (goto-char (point-min))
+      (erc-put-text-property 0 (length ts-left) 'field 'erc-timestamp ts-left)
+      (insert ts-left)
+      (setq erc-timestamp-last-inserted-left ts-left))
+    ;; insert right timestamp
+    (let ((erc-timestamp-only-if-changed-flag t)
+         (erc-timestamp-last-inserted erc-timestamp-last-inserted-right))
+      (erc-insert-timestamp-right ts-right)
+      (setq erc-timestamp-last-inserted-right ts-right))))
+
 ;; for testing: (setq erc-timestamp-only-if-changed-flag nil)
 
 (defun erc-format-timestamp (time format)
index f72a5be1de1f49abc7351589e5d999631c099b26..ad3eaf73a4b1d253f2c6b8162663ebc9d4fb2bb3 100644 (file)
@@ -95,6 +95,12 @@ Activity means that there was no user input in the last 10 seconds."
   :group 'erc-track
   :type '(repeat string))
 
+(defcustom erc-track-remove-disconnected-buffers nil
+  "*If true, remove buffers associated with a server that is
+disconnected from `erc-modified-channels-alist'."
+  :group 'erc-track
+  :type 'boolean)
+
 (defcustom erc-track-exclude-types '("NICK")
   "*List of message types to be ignored.
 This list could look like '(\"JOIN\" \"PART\")."
@@ -151,6 +157,16 @@ If nil instead of a function, shortening is disabled."
   :type '(choice (const :tag "Disabled")
                 function))
 
+(defcustom erc-track-list-changed-hook nil
+  "Hook that is run whenever the contents of
+`erc-modified-channels-alist' changes.
+
+This is useful for people that don't use the default mode-line
+notification but instead use a separate mechanism to provide
+notification of channel activity."
+  :group 'erc-track
+  :type 'hook)
+
 (defcustom erc-track-use-faces t
   "*Use faces in the mode-line.
 The faces used are the same as used for text in the buffers.
@@ -192,12 +208,14 @@ Setting this variable only has effects in GNU Emacs versions above 21.3.
 Choices are:
 'before-modes - add to the beginning of `mode-line-modes'
 'after-modes  - add to the end of `mode-line-modes'
-
-Any other value means add to the end of `global-mode-string'."
+t             - add to the end of `global-mode-string'.
+nil           - don't add to mode line
+"
   :group 'erc-track
   :type '(choice (const :tag "Just before mode information" before-modes)
                 (const :tag "Just after mode information" after-modes)
-                (const :tag "After all other information" nil))
+                (const :tag "After all other information" t)
+                (const :tag "Don't display in mode line" nil))
   :set (lambda (sym val)
         (set sym val)
         (when (and (boundp 'erc-track-mode)
@@ -263,12 +281,18 @@ when there are no more active channels."
 (defcustom erc-track-switch-direction 'oldest
   "Direction `erc-track-switch-buffer' should switch.
 
+  importance  -  find buffer with the most important message
   oldest      -  find oldest active buffer
   newest      -  find newest active buffer
   leastactive -  find buffer with least unseen messages
-  mostactive  -  find buffer with most unseen messages."
+  mostactive  -  find buffer with most unseen messages.
+
+If set to 'importance, the importance is determined by position
+in `erc-track-faces-priority-list', where first is most
+important."
   :group 'erc-track
-  :type '(choice (const oldest)
+  :type '(choice (const importance)
+                (const oldest)
                 (const newest)
                 (const leastactive)
                 (const mostactive)))
@@ -296,7 +320,7 @@ See `erc-track-position-in-mode-line' for possible values."
              (boundp 'mode-line-modes))
         (add-to-list 'mode-line-modes
                      '(t erc-modified-channels-object) t))
-       (t
+       ((eq position t)
         (when (not global-mode-string)
           (setq global-mode-string '(""))) ; Padding for mode-line wart
         (add-to-list 'global-mode-string
@@ -644,14 +668,21 @@ only consider active buffers visible.")
   (setq erc-buffer-activity (erc-current-time))
   (erc-track-modified-channels))
 
+(defun erc-track-get-buffer-window (buffer frame-param)
+  (if (eq frame-param 'selected-visible)
+      (if (eq (frame-visible-p (selected-frame)) t)
+         (get-buffer-window buffer nil)
+       nil)
+    (get-buffer-window buffer frame-param)))
+
 (defun erc-buffer-visible (buffer)
   "Return non-nil when the buffer is visible."
   (if erc-track-when-inactive
       (when erc-buffer-activity; could be nil
-       (and (get-buffer-window buffer erc-track-visibility)
+       (and (erc-track-get-buffer-window buffer erc-track-visibility)
             (<= (erc-time-diff erc-buffer-activity (erc-current-time))
                 erc-buffer-activity-timeout)))
-    (get-buffer-window buffer erc-track-visibility)))
+    (erc-track-get-buffer-window buffer erc-track-visibility)))
 
 ;;; Tracking the channel modifications
 
@@ -668,18 +699,22 @@ called via `window-configuration-change-hook'.
 ARGS are ignored."
   (interactive)
   (unless erc-modified-channels-update-inside
-    (let ((erc-modified-channels-update-inside t))
-      (mapcar (lambda (elt)
-               (let ((buffer (car elt)))
-                 (when (or (not (bufferp buffer))
-                           (not (buffer-live-p buffer))
-                           (erc-buffer-visible buffer)
-                           (not (with-current-buffer buffer
-                                  erc-server-connected)))
-                   (erc-modified-channels-remove-buffer buffer))))
-             erc-modified-channels-alist)
+    (let ((erc-modified-channels-update-inside t)
+         (removed-channel nil))
+      (mapc (lambda (elt)
+             (let ((buffer (car elt)))
+               (when (or (not (bufferp buffer))
+                         (not (buffer-live-p buffer))
+                         (erc-buffer-visible buffer)
+                         (and erc-track-remove-disconnected-buffers
+                              (not (with-current-buffer buffer
+                                     erc-server-connected))))
+                 (setq removed-channel t)
+                 (erc-modified-channels-remove-buffer buffer))))
+           erc-modified-channels-alist)
+      (when removed-channel
       (erc-modified-channels-display)
-      (force-mode-line-update t))))
+       (force-mode-line-update t)))))
 
 (defvar erc-track-mouse-face (if (featurep 'xemacs)
                                 'modeline-mousable
@@ -729,10 +764,13 @@ If FACES are provided, color STRING with them."
   "Set `erc-modified-channels-object'
 according to `erc-modified-channels-alist'.
 Use `erc-make-mode-line-buffer-name' to create buttons."
-  (if (or
-       (eq 'mostactive erc-track-switch-direction)
-       (eq 'leastactive erc-track-switch-direction))
-      (erc-track-sort-by-activest))
+  (cond ((or (eq 'mostactive erc-track-switch-direction)
+            (eq 'leastactive erc-track-switch-direction))
+        (erc-track-sort-by-activest))
+       ((eq 'importance erc-track-switch-direction)
+        (erc-track-sort-by-importance)))
+  (run-hooks 'erc-track-list-changed-hook)
+  (unless (eq erc-track-position-in-mode-line nil)
   (if (null erc-modified-channels-alist)
       (setq erc-modified-channels-object (erc-modified-channels-object nil))
     ;; erc-modified-channels-alist contains all the data we need.  To
@@ -768,7 +806,7 @@ Use `erc-make-mode-line-buffer-name' to create buttons."
       (when (featurep 'xemacs)
        (erc-modified-channels-object nil))
       (setq erc-modified-channels-object
-           (erc-modified-channels-object strings)))))
+             (erc-modified-channels-object strings))))))
 
 (defun erc-modified-channels-remove-buffer (buffer)
   "Remove BUFFER from `erc-modified-channels-alist'."
@@ -802,8 +840,7 @@ is in `erc-mode'."
     (if (and (not (erc-buffer-visible (current-buffer)))
             (not (member this-channel erc-track-exclude))
             (not (and erc-track-exclude-server-buffer
-                      (string= this-channel
-                               (buffer-name (erc-server-buffer)))))
+                      (erc-server-buffer-p)))
             (not (erc-message-type-member
                   (or (erc-find-parsed-property)
                       (point-min))
@@ -847,10 +884,10 @@ is in `erc-mode'."
            (erc-modified-channels-display)))
       ;; Else if the active buffer is the current buffer, remove it
       ;; from our list.
-      (when (or (erc-buffer-visible (current-buffer))
+      (when (and (or (erc-buffer-visible (current-buffer))
                (and this-channel
-                    (assq (current-buffer) erc-modified-channels-alist)
                     (member this-channel erc-track-exclude)))
+                (assq (current-buffer) erc-modified-channels-alist))
        ;; Remove it from mode-line if buffer is visible or
        ;; channel was added to erc-track-exclude recently.
        (erc-modified-channels-remove-buffer (current-buffer))
@@ -887,6 +924,29 @@ That means the number of unseen messages in a channel."
        (sort erc-modified-channels-alist
              (lambda (a b) (> (nth 1 a) (nth 1 b))))))
 
+(defun erc-track-face-priority (face)
+  "Return a number indicating the priority of FACE in
+`erc-track-faces-priority-list'.  Lower number means higher
+priority.
+
+If face is not in `erc-track-faces-priority-list', it will have a
+higher number than any other face in that list."
+  (let ((count 0))
+    (catch 'done
+      (dolist (item erc-track-faces-priority-list)
+       (if (eq item face)
+           (throw 'done t)
+         (setq count (1+ count)))))
+    count))
+
+(defun erc-track-sort-by-importance ()
+  "Sort erc-modified-channels-alist by importance.
+That means the position of the face in `erc-track-faces-priority-list'."
+  (setq erc-modified-channels-alist
+       (sort erc-modified-channels-alist
+             (lambda (a b) (< (erc-track-face-priority (cddr a))
+                              (erc-track-face-priority (cddr b)))))))
+
 (defun erc-track-get-active-buffer (arg)
   "Return the buffer name of ARG in `erc-modified-channels-alist'.
 Negative arguments index in the opposite direction.  This direction is
@@ -898,7 +958,8 @@ relative to `erc-track-switch-direction'"
                  (oldest      'newest)
                  (newest      'oldest)
                  (mostactive  'leastactive)
-                 (leastactive 'mostactive)))
+                 (leastactive 'mostactive)
+                 (importance  'oldest)))
       (setq arg (- arg)))
     (setq offset (case dir
                   ((oldest leastactive)
index c26bdf2a19f8fd7ab7fd978b65cde28677eded76..2c5786adff3cfc890cba034cb9cba11814dd1e24 100644 (file)
@@ -66,7 +66,7 @@
 
 ;;; Code:
 
-(defconst erc-version-string "Version 5.2"
+(defconst erc-version-string "Version 5.3 (devel)"
   "ERC version.  This is used by function `erc-version'.")
 
 (eval-when-compile (require 'cl))
@@ -836,8 +836,9 @@ See `erc-server-flood-margin' for other flood-related parameters.")
 ;; Script parameters
 
 (defcustom erc-startup-file-list
-  '("~/.emacs.d/.ercrc.el" "~/.emacs.d/.ercrc"
-    "~/.ercrc.el" "~/.ercrc" ".ercrc.el" ".ercrc")
+  (list (concat erc-user-emacs-directory ".ercrc.el")
+       (concat erc-user-emacs-directory ".ercrc")
+       "~/.ercrc.el" "~/.ercrc" ".ercrc.el" ".ercrc")
   "List of files to try for a startup script.
 The first existent and readable one will get executed.
 
@@ -1460,7 +1461,7 @@ Turning on `erc-mode' runs the hook `erc-mode-hook'."
 (defconst erc-default-server "irc.freenode.net"
   "IRC server to use if it cannot be detected otherwise.")
 
-(defconst erc-default-port "6667"
+(defconst erc-default-port 6667
   "IRC port to use if it cannot be detected otherwise.")
 
 (defcustom erc-join-buffer 'buffer
@@ -1491,6 +1492,14 @@ This only has effect when `erc-join-buffer' is set to `frame'."
   :group 'erc-buffers
   :type 'boolean)
 
+(defcustom erc-reuse-frames t
+  "*Determines whether new frames are always created.
+Non-nil means that a new frame is not created to display an ERC
+buffer if there is already a window displaying it.  This only has
+effect when `erc-join-buffer' is set to `frame'."
+  :group 'erc-buffers
+  :type 'boolean)
+
 (defun erc-channel-p (channel)
   "Return non-nil if CHANNEL seems to be an IRC channel name."
   (cond ((stringp channel)
@@ -1888,14 +1897,16 @@ removed from the list will be disabled."
        ((eq erc-join-buffer 'bury)
         nil)
        ((eq erc-join-buffer 'frame)
-        (funcall '(lambda (frame)
+        (when (or (not erc-reuse-frames)
+                  (not (get-buffer-window buffer t)))
+          ((lambda (frame)
                     (raise-frame frame)
                     (select-frame frame))
                  (make-frame (or erc-frame-alist
                                  default-frame-alist)))
         (switch-to-buffer buffer)
         (when erc-frame-dedicated-flag
-          (set-window-dedicated-p (selected-window) t)))
+          (set-window-dedicated-p (selected-window) t))))
        (t
         (if (active-minibuffer-window)
             (display-buffer buffer)
@@ -2155,16 +2166,48 @@ Arguments are the same as for `erc'."
   "Open an SSL stream to an IRC server.
 The process will be given the name NAME, its target buffer will be
 BUFFER.  HOST and PORT specify the connection target."
-  (when (require 'tls)
-    (let ((proc (open-tls-stream name buffer host port)))
+  (when (condition-case nil
+           (require 'ssl)
+         (error (message "You don't have ssl.el.  %s"
+                         "Try using `erc-tls' instead.")
+                nil))
+    (let ((proc (open-ssl-stream name buffer host port)))
       ;; Ugly hack, but it works for now. Problem is it is
       ;; very hard to detect when ssl is established, because s_client
       ;; doesn't give any CONNECTIONESTABLISHED kind of message, and
       ;; most IRC servers send nothing and wait for you to identify.
-      ;; Disabled when switching to tls.el -- jas
-      ;(sit-for 5)
+      (sit-for 5)
       proc)))
 
+(defun erc-tls (&rest r)
+  "Interactively select TLS connection parameters and run ERC.
+Arguments are the same as for `erc'."
+  (interactive (erc-select-read-args))
+  (let ((erc-server-connect-function 'erc-open-tls-stream))
+    (apply 'erc r)))
+
+(defun erc-open-tls-stream (name buffer host port)
+  "Open an TLS stream to an IRC server.
+The process will be given the name NAME, its target buffer will be
+BUFFER.  HOST and PORT specify the connection target."
+  (when (condition-case nil
+           (require 'tls)
+         (error (message "You don't have tls.el.  %s"
+                         "Try using `erc-ssl' instead.")
+                nil))
+    (open-tls-stream name buffer host port)))
+
+;;; Displaying error messages
+
+(defun erc-error (&rest args)
+  "Pass ARGS to `format', and display the result as an error message.
+If `debug-on-error' is set to non-nil, then throw a real error with this
+message instead, to make debugging easier."
+  (if debug-on-error
+      (apply #'error args)
+    (apply #'message args)
+    (beep)))
+
 ;;; Debugging the protocol
 
 (defvar erc-debug-irc-protocol nil
@@ -2228,7 +2271,7 @@ If ARG is non-nil, show the *erc-protocol* buffer."
   (interactive "P")
   (let* ((buf (get-buffer-create "*erc-protocol*")))
     (with-current-buffer buf
-      (erc-view-mode-enter 1)
+      (erc-view-mode-enter)
       (when (null (current-local-map))
        (let ((inhibit-read-only t))
          (insert (erc-make-notice "This buffer displays all IRC protocol traffic exchanged with each server.\n"))
@@ -2456,6 +2499,14 @@ See also `erc-server-send'."
        (match-string 1 arglist)
       arglist)))
 
+(defun erc-command-no-process-p (str)
+  "Return non-nil if STR is an ERC command that can be run when the process
+is not alive, nil otherwise."
+  (let ((fun (erc-extract-command-from-line str)))
+    (and fun
+        (symbolp (car fun))
+        (get (car fun) 'process-not-needed))))
+
 (defun erc-command-name (cmd)
   "For CMD being the function name of a ERC command, something like
 erc-cmd-FOO, this returns a string /FOO."
@@ -2565,6 +2616,7 @@ VALUE is computed by evaluating the rest of LINE in Lisp."
 (defalias 'erc-cmd-VAR 'erc-cmd-SET)
 (defalias 'erc-cmd-VARIABLE 'erc-cmd-SET)
 (put 'erc-cmd-SET 'do-not-parse-args t)
+(put 'erc-cmd-SET 'process-not-needed t)
 
 (defun erc-cmd-default (line)
   "Fallback command.
@@ -2623,6 +2675,7 @@ If no USER argument is specified, list the contents of `erc-ignore-list'."
   "Clear the window content."
   (recenter 0)
   t)
+(put 'erc-cmd-CLEAR 'process-not-needed t)
 
 (defun erc-cmd-OPS ()
   "Show the ops in the current channel."
@@ -2656,6 +2709,7 @@ If no USER argument is specified, list the contents of `erc-ignore-list'."
       (erc-display-message
        nil 'notice 'active 'country-unknown ?d tld))
   t))
+(put 'erc-cmd-COUNTRY 'process-not-needed t)
 
 (defun erc-cmd-AWAY (line)
   "Mark the user as being away, the reason being indicated by LINE.
@@ -2736,6 +2790,7 @@ For a list of user commands (/join /part, ...):
     t))
 
 (defalias 'erc-cmd-H 'erc-cmd-HELP)
+(put 'erc-cmd-HELP 'process-not-needed t)
 
 (defun erc-cmd-JOIN (channel &optional key)
   "Join the channel given in CHANNEL, optionally with KEY.
@@ -2973,6 +3028,7 @@ the matching is case-sensitive."
   (occur line)
   t)
 (put 'erc-cmd-LASTLOG 'do-not-parse-args t)
+(put 'erc-cmd-LASTLOG 'process-not-needed t)
 
 (defun erc-send-message (line &optional force)
   "Send LINE to the current channel or user and display it.
@@ -3195,20 +3251,34 @@ the message given by REASON."
 (defalias 'erc-cmd-EXIT 'erc-cmd-QUIT)
 (defalias 'erc-cmd-SIGNOFF 'erc-cmd-QUIT)
 (put 'erc-cmd-QUIT 'do-not-parse-args t)
+(put 'erc-cmd-QUIT 'process-not-needed t)
 
 (defun erc-cmd-GQUIT (reason)
   "Disconnect from all servers at once with the same quit REASON."
   (erc-with-all-buffers-of-server nil #'erc-open-server-buffer-p
-                                 (erc-cmd-QUIT reason)))
+                                 (erc-cmd-QUIT reason))
+  (when erc-kill-queries-on-quit
+    ;; if the query buffers have not been killed within 4 seconds,
+    ;; kill them
+    (run-at-time
+     4 nil
+     (lambda ()
+       (dolist (buffer (erc-buffer-list (lambda (buf)
+                                         (not (erc-server-buffer-p buf)))))
+        (kill-buffer buffer)))))
+  t)
 
 (defalias 'erc-cmd-GQ 'erc-cmd-GQUIT)
 (put 'erc-cmd-GQUIT 'do-not-parse-args t)
+(put 'erc-cmd-GQUIT 'process-not-needed t)
 
 (defun erc-cmd-RECONNECT ()
   "Try to reconnect to the current IRC server."
-  (let ((buffer (or (erc-server-buffer) (current-buffer)))
+  (let ((buffer (erc-server-buffer))
        (process nil))
-    (with-current-buffer (if (bufferp buffer) buffer (current-buffer))
+    (unless (buffer-live-p buffer)
+      (setq buffer (current-buffer)))
+    (with-current-buffer buffer
       (setq erc-server-quitting nil)
       (setq erc-server-reconnecting t)
       (setq erc-server-reconnect-count 0)
@@ -3218,6 +3288,7 @@ the message given by REASON."
        (erc-server-reconnect))
       (setq erc-server-reconnecting nil)))
   t)
+(put 'erc-cmd-RECONNECT 'process-not-needed t)
 
 (defun erc-cmd-SERVER (server)
   "Connect to SERVER, leaving existing connection intact."
@@ -3225,9 +3296,9 @@ the message given by REASON."
   (condition-case nil
       (erc :server server :nick (erc-current-nick))
     (error
-     (message "Cannot find host %s." server)
-     (beep)))
+     (erc-error "Cannot find host %s." server)))
   t)
+(put 'erc-cmd-SERVER 'process-not-needed t)
 
 (eval-when-compile
   (defvar motif-version-string)
@@ -4411,33 +4482,65 @@ See also `erc-channel-begin-receiving-names'."
           erc-channel-users)
   (setq erc-channel-new-member-names nil))
 
+(defun erc-parse-prefix ()
+  "Return an alist of valid prefix character types and their representations.
+Example: (operator) o => @, (voiced) v => +."
+  (let ((str (or (cdr (assoc "PREFIX" (erc-with-server-buffer
+                                       erc-server-parameters)))
+                ;; provide a sane default
+                "(ov)@+"))
+       types chars)
+    (when (string-match "^(\\([^)]+\\))\\(.+\\)$" str)
+      (setq types (match-string 1 str)
+           chars (match-string 2 str))
+      (let ((len (min (length types) (length chars)))
+           (i 0)
+           (alist nil))
+       (while (< i len)
+         (setq alist (cons (cons (elt types i) (elt chars i))
+                           alist))
+         (setq i (1+ i)))
+       alist))))
+
 (defun erc-channel-receive-names (names-string)
   "This function is for internal use only.
 
 Update `erc-channel-users' according to NAMES-STRING.
 NAMES-STRING is a string listing some of the names on the
 channel."
-  (let (names name op voice)
-      ;; We need to delete "" because in XEmacs, (split-string "a ")
-      ;; returns ("a" "").
-      (setq names (delete "" (split-string names-string)))
-      (let ((erc-channel-members-changed-hook nil))
-       (dolist (item names)
-         (cond ((string-match "^@\\(.*\\)$" item)
-                (setq name (match-string 1 item)
-                      op 'on
-                      voice 'off))
-               ((string-match "^+\\(.*\\)$" item)
-                (setq name (match-string 1 item)
-                      op 'off
-                      voice 'on))
-               (t (setq name item
-                        op 'off
-                        voice 'off)))
-       (puthash (erc-downcase name) t
-                erc-channel-new-member-names)
-       (erc-update-current-channel-member
-        name name t op voice)))
+  (let (prefix op-ch voice-ch names name op voice)
+    (setq prefix (erc-parse-prefix))
+    (setq op-ch (cdr (assq ?o prefix))
+         voice-ch (cdr (assq ?v prefix)))
+    ;; We need to delete "" because in XEmacs, (split-string "a ")
+    ;; returns ("a" "").
+    (setq names (delete "" (split-string names-string)))
+    (let ((erc-channel-members-changed-hook nil))
+      (dolist (item names)
+       (let ((updatep t)
+             ch)
+         (if (rassq (elt item 0) prefix)
+             (cond ((= (length item) 1)
+                    (setq updatep nil))
+                   ((eq (elt item 0) op-ch)
+                    (setq name (substring item 1)
+                          op 'on
+                          voice 'off))
+                   ((eq (elt item 0) voice-ch)
+                    (setq name (substring item 1)
+                          op 'off
+                          voice 'on))
+                   (t (setq name (substring item 1)
+                            op 'off
+                            voice 'off)))
+           (setq name item
+                 op 'off
+                 voice 'off))
+         (when updatep
+           (puthash (erc-downcase name) t
+                    erc-channel-new-member-names)
+           (erc-update-current-channel-member
+            name name t op voice)))))
     (run-hooks 'erc-channel-members-changed-hook)))
 
 (defcustom erc-channel-members-changed-hook nil
@@ -4529,15 +4632,15 @@ See also: `erc-update-user' and `erc-update-channel-member'."
              (setq changed t)
            (setf (erc-channel-user-op cuser)
                  (cond ((eq op 'on) t)
-                                  ((eq op 'off) nil)
-                                  (t op))))
+                       ((eq op 'off) nil)
+                       (t op))))
          (when (and voice
                     (not (eq (erc-channel-user-voice cuser) voice)))
              (setq changed t)
            (setf (erc-channel-user-voice cuser)
                  (cond ((eq voice 'on) t)
-                                     ((eq voice 'off) nil)
-                                     (t voice))))
+                       ((eq voice 'off) nil)
+                       (t voice))))
          (when update-message-time
            (setf (erc-channel-user-last-message-time cuser) (current-time)))
          (setq user-changed
@@ -4559,11 +4662,11 @@ See also: `erc-update-user' and `erc-update-channel-member'."
                      (erc-server-user-buffers user))))
        (setq cuser (make-erc-channel-user
                     :op (cond ((eq op 'on) t)
-                                      ((eq op 'off) nil)
-                                      (t op))
+                              ((eq op 'off) nil)
+                              (t op))
                     :voice (cond ((eq voice 'on) t)
-                                      ((eq voice 'off) nil)
-                                      (t voice))
+                                 ((eq voice 'off) nil)
+                                 (t voice))
                     :last-message-time
                     (if update-message-time (current-time))))
        (puthash (erc-downcase nick) (cons user cuser)
@@ -4892,39 +4995,37 @@ Specifically, return the position of `erc-insert-marker'."
   (interactive)
   (save-restriction
     (widen)
-    (cond
-     ((< (point) (erc-beg-of-input-line))
-      (message "Point is not in the input area")
-      (beep))
-     ((not (erc-server-buffer-live-p))
-      (message "ERC: No process running")
-      (beep))
-     (t
-      (erc-set-active-buffer (current-buffer))
+    (if (< (point) (erc-beg-of-input-line))
+       (erc-error "Point is not in the input area")
       (let ((inhibit-read-only t)
            (str (erc-user-input))
            (old-buf (current-buffer)))
-
-       ;; Kill the input and the prompt
-       (delete-region (erc-beg-of-input-line)
-                      (erc-end-of-input-line))
-
-       (unwind-protect
-           (erc-send-input str)
-         ;; Fix the buffer if the command didn't kill it
-         (when (buffer-live-p old-buf)
-           (with-current-buffer old-buf
-             (save-restriction
-               (widen)
-               (goto-char (point-max))
-               (set-marker (process-mark erc-server-process) (point))
-               (set-marker erc-insert-marker (point))
-               (let ((buffer-modified (buffer-modified-p)))
-                 (erc-display-prompt)
-                 (set-buffer-modified-p buffer-modified))))))
-
-       ;; Only when last hook has been run...
-       (run-hook-with-args 'erc-send-completed-hook str))))))
+       (if (and (not (erc-server-buffer-live-p))
+                (not (erc-command-no-process-p str)))
+           (erc-error "ERC: No process running")
+         (erc-set-active-buffer (current-buffer))
+
+         ;; Kill the input and the prompt
+         (delete-region (erc-beg-of-input-line)
+                        (erc-end-of-input-line))
+
+         (unwind-protect
+             (erc-send-input str)
+           ;; Fix the buffer if the command didn't kill it
+           (when (buffer-live-p old-buf)
+             (with-current-buffer old-buf
+               (save-restriction
+                 (widen)
+                 (goto-char (point-max))
+                 (when (processp erc-server-process)
+                   (set-marker (process-mark erc-server-process) (point)))
+                 (set-marker erc-insert-marker (point))
+                 (let ((buffer-modified (buffer-modified-p)))
+                   (erc-display-prompt)
+                   (set-buffer-modified-p buffer-modified))))))
+
+         ;; Only when last hook has been run...
+         (run-hook-with-args 'erc-send-completed-hook str))))))
 
 (defun erc-user-input ()
   "Return the input of the user in the current buffer."
@@ -4985,7 +5086,8 @@ This returns non-nil only if we actually send anything."
        (erc-put-text-property beg (point)
                               'face 'erc-command-indicator-face)
        (insert "\n"))
-      (set-marker (process-mark erc-server-process) (point))
+      (when (processp erc-server-process)
+       (set-marker (process-mark erc-server-process) (point)))
       (set-marker erc-insert-marker (point))
       (save-excursion
        (save-restriction
@@ -5004,7 +5106,8 @@ current position."
        (erc-put-text-property beg (point)
                               'face 'erc-input-face))
       (insert "\n")
-      (set-marker (process-mark erc-server-process) (point))
+      (when (processp erc-server-process)
+       (set-marker (process-mark erc-server-process) (point)))
       (set-marker erc-insert-marker (point))
       (save-excursion
        (save-restriction
index 4c258f1dae5d6f3ffaa65d92a8aa31e3c1164fd3..aaad664918fcf891d71817868ec7d4eb063696e8 100644 (file)
@@ -168,6 +168,35 @@ Otherwise, Emacs will attempt to use rsh to invoke du on the remote machine."
 
 (put 'eshell/man 'eshell-no-numeric-conversions t)
 
+(defun eshell/info (&rest args)
+  "Runs the info command in-frame with the same behaviour as command-line `info', ie:
+  'info'           => goes to top info window
+  'info arg1'      => IF arg1 is a file, then visits arg1
+  'info arg1'      => OTHERWISE goes to top info window and then menu item arg1
+  'info arg1 arg2' => does action for arg1 (either visit-file or menu-item) and then menu item arg2
+  etc."
+  (require 'info)
+  (let ((file (cond
+                ((not (stringp (car args)))
+                 nil)
+                ((file-exists-p (expand-file-name (car args)))
+                 (expand-file-name (car args)))
+                ((file-exists-p (concat (expand-file-name (car args)) ".info"))
+                 (concat (expand-file-name (car args)) ".info")))))
+
+    ;; If the first arg is a file, then go to that file's Top node
+    ;; Otherwise, go to the global directory
+    (if file
+      (progn
+        (setq args (cdr args))
+        (Info-find-node file "Top"))
+      (Info-directory))
+
+    ;; Treat all remaining args as menu references
+    (while args
+      (Info-menu (car args))
+      (setq args (cdr args)))))
+
 (defun eshell-remove-entries (path files &optional top-level)
   "From PATH, remove all of the given FILES, perhaps interactively."
   (while files
index 41e12e70b43ccef537d6a5d39bca9ae72e5f3174..121f568a9c42e538fe4cdeeb5ffdfe69eb0d9535 100644 (file)
@@ -58,6 +58,7 @@ BODY-FORMS.  If instead an external command is run, the tag
 
 Lastly, any remaining arguments will be available in a locally
 interned variable `args' (created using a `let' form)."
+  (declare (debug (form form sexp body)))
   `(let ((temp-args
          ,(if (memq ':preserve-args (cadr options))
               macro-args
@@ -101,7 +102,7 @@ This code doesn't really need to be macro expanded everywhere."
                  nil))
           (error "%s" usage-msg))))
       (throw 'eshell-external
-            (eshell-external-command ext-command args))
+             (eshell-external-command ext-command args))
     last-value))
 
 (defun eshell-show-usage (name options)
index f22b79e8fc3f589e56f711d0789852ef76aeb075..e31622d9ba0eeb634829f073f5f8a0cf7e7146bd 100644 (file)
@@ -222,11 +222,12 @@ Value is FACE."
 
 (defun face-id (face &optional frame)
   "Return the internal ID of face with name FACE.
+If FACE is a face-alias, return the ID of the target face.
 The optional argument FRAME is ignored, since the internal face ID
 of a face name is the same for all frames."
   (check-face face)
-  (get face 'face))
-
+  (or (get face 'face)
+      (face-id (get face 'face-alias))))
 
 (defun face-equal (face1 face2 &optional frame)
   "Non-nil if faces FACE1 and FACE2 are equal.
@@ -931,7 +932,7 @@ an integer value."
   (let ((valid
          (case attribute
            (:family
-            (if window-system
+            (if (window-system frame)
                 (mapcar #'(lambda (x) (cons (car x) (car x)))
                         (x-font-family-list))
              ;; Only one font on TTYs.
@@ -940,7 +941,7 @@ an integer value."
             (mapcar #'(lambda (x) (cons (symbol-name x) x))
                     (internal-lisp-face-attribute-values attribute)))
            ((:underline :overline :strike-through :box)
-            (if window-system
+            (if (window-system frame)
                 (nconc (mapcar #'(lambda (x) (cons (symbol-name x) x))
                                (internal-lisp-face-attribute-values attribute))
                        (mapcar #'(lambda (c) (cons c c))
@@ -953,7 +954,7 @@ an integer value."
            ((:height)
             'integerp)
            (:stipple
-            (and (memq window-system '(x w32 mac))
+            (and (memq (window-system frame) '(x w32 mac))
                  (mapcar #'list
                          (apply #'nconc
                                 (mapcar (lambda (dir)
@@ -1071,7 +1072,7 @@ of a global face.  Value is the new attribute value."
               ;; explicitly in VALID, using color approximation code
               ;; in tty-colors.el.
               (when (and (memq attribute '(:foreground :background))
-                         (not (memq window-system '(x w32 mac)))
+                         (not (memq (window-system frame) '(x w32 mac)))
                          (not (member new-value
                                       '("unspecified"
                                         "unspecified-fg" "unspecified-bg"))))
@@ -1284,6 +1285,7 @@ If FRAME is omitted or nil, use the selected frame."
       (save-excursion
        (set-buffer standard-output)
        (dolist (f face)
+         (if (stringp f) (setq f (intern f)))
          (insert "Face: " (symbol-name f))
          (if (not (facep f))
              (insert "   undefined face.\n")
@@ -1367,14 +1369,14 @@ If FRAME is nil, the current FRAME is used."
            req (car conjunct)
            options (cdr conjunct)
            match (cond ((eq req 'type)
-                        (or (memq window-system options)
+                        (or (memq (window-system frame) options)
                             ;; FIXME: This should be revisited to use
                             ;; display-graphic-p, provided that the
                             ;; color selection depends on the number
                             ;; of supported colors, and all defface's
                             ;; are changed to look at number of colors
                             ;; instead of (type graphic) etc.
-                            (and (null window-system)
+                            (and (null (window-system frame))
                                  (memq 'tty options))
                             (and (memq 'motif options)
                                  (featurep 'motif))
@@ -1443,31 +1445,36 @@ If SPEC is nil, return nil."
 (defun face-spec-set (face spec &optional frame)
   "Set FACE's attributes according to the first matching entry in SPEC.
 FRAME is the frame whose frame-local face is set.  FRAME nil means
-do it on all frames.  See `defface' for information about SPEC.
-If SPEC is nil, do nothing."
+do it on all frames (and change the default for new frames).
+See `defface' for information about SPEC.  If SPEC is nil, do nothing."
   (let ((attrs (face-spec-choose spec frame)))
     (when spec
-      (face-spec-reset-face face frame))
+      (face-spec-reset-face face (or frame t)))
     (while attrs
       (let ((attribute (car attrs))
            (value (car (cdr attrs))))
        ;; Support some old-style attribute names and values.
        (case attribute
-         (:bold (setq attribute :weight value (if value 'bold 'normal)))
-         (:italic (setq attribute :slant value (if value 'italic 'normal)))
-         ((:foreground :background)
-          ;; Compatibility with 20.x.  Some bogus face specs seem to
-          ;; exist containing things like `:foreground nil'.
-          (if (null value) (setq value 'unspecified)))
-         (t (unless (assq attribute face-x-resources)
-              (setq attribute nil))))
+             (:bold (setq attribute :weight value (if value 'bold 'normal)))
+             (:italic (setq attribute :slant value (if value 'italic 'normal)))
+             ((:foreground :background)
+              ;; Compatibility with 20.x.  Some bogus face specs seem to
+              ;; exist containing things like `:foreground nil'.
+              (if (null value) (setq value 'unspecified)))
+             (t (unless (assq attribute face-x-resources)
+                  (setq attribute nil))))
        (when attribute
-         (set-face-attribute face frame attribute value)))
+         ;; If frame is nil, set the default for new frames.
+         ;; Existing frames are handled below.
+         (set-face-attribute face (or frame t) attribute value)))
       (setq attrs (cdr (cdr attrs)))))
-  ;; When we reset the face based on its spec, then it is unmodified
-  ;; as far as Custom is concerned.
-  (if (null frame)
-      (put (or (get face 'face-alias) face) 'face-modified nil)))
+  (unless frame
+    ;; When we reset the face based on its spec, then it is unmodified
+    ;; as far as Custom is concerned.
+    (put (or (get face 'face-alias) face) 'face-modified nil)
+    ;; Set each frame according to the rules implied by SPEC.
+    (dolist (frame (frame-list))
+      (face-spec-set face spec frame))))
 
 
 (defun face-attr-match-p (face attrs &optional frame)
@@ -1611,35 +1618,40 @@ variable with `setq'; this won't have the expected effect."
                 (const light)
                 (const :tag "automatic" nil)))
 
-(defvar default-frame-background-mode nil
-  "Internal variable for the default brightness of the background.
-Emacs sets it automatically depending on the terminal type.
-The value `nil' means `dark'.  If Emacs runs in non-windowed
-mode from `xterm' or a similar terminal emulator, the value is
-`light'.  On rxvt terminals, the value depends on the environment
-variable COLORFGBG.")
 
 (defun frame-set-background-mode (frame)
   "Set up display-dependent faces on FRAME.
 Display-dependent faces are those which have different definitions
 according to the `background-mode' and `display-type' frame parameters."
   (let* ((bg-resource
-         (and window-system
+         (and (window-system frame)
               (x-get-resource "backgroundMode" "BackgroundMode")))
         (bg-color (frame-parameter frame 'background-color))
+        (terminal-bg-mode (terminal-parameter frame 'background-mode))
+        (tty-type (tty-type frame))
         (bg-mode
          (cond (frame-background-mode)
                (bg-resource
                 (intern (downcase bg-resource)))
-               ((and (null window-system) (null bg-color))
-                ;; No way to determine this automatically (?).
-                (or default-frame-background-mode 'dark))
-               ;; Unspecified frame background color can only happen
-               ;; on tty's.
-               ((member bg-color '(unspecified "unspecified-bg"))
-                (or default-frame-background-mode 'dark))
+               (terminal-bg-mode)
+               ((and (null (window-system frame))
+                     ;; Unspecified frame background color can only
+                     ;; happen on tty's.
+                     (member bg-color '(nil unspecified "unspecified-bg")))
+                ;; There is no way to determine the background mode
+                ;; automatically, so we make a guess based on the
+                ;; terminal type.
+                (if (and tty-type
+                         (string-match "^\\(xterm\\|rxvt\\|dtterm\\|eterm\\)"
+                                       tty-type))
+                    'light
+                  'dark))
                ((equal bg-color "unspecified-fg") ; inverted colors
-                (if (eq default-frame-background-mode 'light) 'dark 'light))
+                (if (and tty-type
+                         (string-match "^\\(xterm\\|rxvt\\|dtterm\\|eterm\\)"
+                                       tty-type))
+                    'dark
+                  'light))
                ((>= (apply '+ (color-values bg-color frame))
                    ;; Just looking at the screen, colors whose
                    ;; values add up to .6 of the white total
@@ -1648,7 +1660,7 @@ according to the `background-mode' and `display-type' frame parameters."
                 'light)
                (t 'dark)))
         (display-type
-         (cond ((null window-system)
+         (cond ((null (window-system frame))
                 (if (tty-display-color-p frame) 'color 'mono))
                ((display-color-p frame)
                 'color)
@@ -1745,15 +1757,24 @@ the X resource ``reverseVideo'' is present, handle that.
 Value is the new frame created."
   (setq parameters (x-handle-named-frame-geometry parameters))
   (let ((visibility-spec (assq 'visibility parameters))
-       (frame-list (frame-list))
-       (frame (x-create-frame (cons '(visibility . nil) parameters)))
+       (frame (x-create-frame `((visibility . nil) . ,parameters)))
        success)
     (unwind-protect
        (progn
+         (x-setup-function-keys frame)
          (x-handle-reverse-video frame parameters)
          (frame-set-background-mode frame)
          (face-set-after-frame-default frame)
-         (if (or (null frame-list) (null visibility-spec))
+         ;; Arrange for the kill and yank functions to set and check the clipboard.
+         (modify-frame-parameters
+          frame '((interprogram-cut-function . x-select-text)))
+         (modify-frame-parameters
+          frame '((interprogram-paste-function . x-cut-buffer-or-selection-value)))
+         ;; Make sure the tool-bar is ready to be enabled.  The
+         ;; `tool-bar-lines' frame parameter will not take effect
+         ;; without this call.
+         (tool-bar-setup frame)
+         (if (null visibility-spec)
              (make-frame-visible frame)
            (modify-frame-parameters frame (list visibility-spec)))
          (setq success t))
@@ -1812,7 +1833,7 @@ Initialize colors of certain faces from frame parameters."
       (condition-case ()
          (progn
            (face-spec-set face (face-user-default-spec face) frame)
-           (if (memq window-system '(x w32 mac))
+           (if (memq (window-system frame) '(x w32 mac))
                (make-face-x-resource-internal face frame))
            (internal-merge-in-global-face face frame))
        (error nil)))
@@ -1848,8 +1869,15 @@ created."
   (let ((frame (make-terminal-frame parameters))
        success)
     (unwind-protect
-       (progn
+       (with-selected-frame frame
          (tty-handle-reverse-video frame (frame-parameters frame))
+
+         ;; Make sure the kill and yank functions do not touch the X clipboard.
+         (modify-frame-parameters frame '((interprogram-cut-function . nil)))
+         (modify-frame-parameters frame '((interprogram-paste-function . nil)))
+
+         (set-locale-environment nil frame)
+         (tty-run-terminal-initialization frame)
          (frame-set-background-mode frame)
          (face-set-after-frame-default frame)
          (setq success t))
@@ -1857,6 +1885,52 @@ created."
        (delete-frame frame)))
     frame))
 
+(defun tty-find-type (pred type)
+  "Return the longest prefix of TYPE to which PRED returns non-nil.
+TYPE should be a tty type name such as \"xterm-16color\".
+
+The function tries only those prefixes that are followed by a
+dash or underscore in the original type name, like \"xterm\" in
+the above example."
+  (let (hyphend)
+    (while (and type
+               (not (funcall pred type)))
+      ;; Strip off last hyphen and what follows, then try again
+      (setq type
+           (if (setq hyphend (string-match "[-_][^-_]+$" type))
+               (substring type 0 hyphend)
+             nil))))
+  type)
+
+(defun tty-run-terminal-initialization (frame &optional type)
+  "Run the special initialization code for the terminal type of FRAME.
+The optional TYPE parameter may be used to override the autodetected
+terminal type to a different value."
+  (setq type (or type (tty-type frame)))
+  ;; Load library for our terminal type.
+  ;; User init file can set term-file-prefix to nil to prevent this.
+  (with-selected-frame frame
+    (unless (or (null term-file-prefix)
+               ;; Don't reinitialize the terminal each time a new
+               ;; frame is opened on it.
+               (terminal-parameter frame 'terminal-initted))
+      (let* (term-init-func)
+       ;; First, load the terminal initialization file, if it is
+       ;; available and it hasn't been loaded already.
+       (tty-find-type #'(lambda (type)
+                          (let ((file (locate-library (concat term-file-prefix type))))
+                            (and file
+                                 (or (assoc file load-history)
+                                     (load file t t)))))
+                      type)
+       ;; Next, try to find a matching initialization function, and call it.
+       (tty-find-type #'(lambda (type)
+                          (fboundp (setq term-init-func
+                                         (intern (concat "terminal-init-" type)))))
+                      type)
+       (when (fboundp term-init-func)
+         (funcall term-init-func))
+       (set-terminal-parameter frame 'terminal-initted term-init-func)))))
 
 ;; Called from C function init_display to initialize faces of the
 ;; dumped terminal frame on startup.
index e9ef3e10237d2601936bfbf781d4051bf89b8591..8c338bd947ab755fbf79b9241112b9f674d20bd5 100644 (file)
@@ -482,7 +482,7 @@ Returned values:
   "In remote FULLNAME, replace path with NAME.  May return nil."
   ;; Use ange-ftp or efs if loaded, but do not load them otherwise.
   (let (found)
-    (mapcar
+    (mapc
      (function (lambda (sym) (and (fboundp sym) (setq found sym))))
      '(
        efs-replace-path-component
@@ -1793,7 +1793,11 @@ ffap most of the time."
   ;; Extra complication for the temporary highlighting.
   (unwind-protect
       (ffap-read-file-or-url
-       (if ffap-url-regexp "Dired file or URL: " "Dired file: ")
+       (cond
+       ((eq ffap-directory-finder 'list-directory)
+        "List directory (brief): ")
+       (ffap-url-regexp "Dired file or URL: ")
+       (t "Dired file: "))
        (prog1
           (setq guess (or guess
                            (let ((guess (ffap-guesser)))
index baa171d535a1eb98873f2fc0e811650212524b4d..18c537fed7c45a04cde7e3f9e02d079719504570 100644 (file)
@@ -280,11 +280,11 @@ be added to the cache."
           (dir-files (directory-files dir t regexp))
           )
       ;; Filter out files we don't want to see
-      (mapcar
+      (mapc
        '(lambda (file)
           (if (file-directory-p file)
               (setq dir-files (delq file dir-files))
-           (mapcar
+           (mapc
             '(lambda (regexp)
                (if (string-match regexp file)
                    (setq dir-files (delq file dir-files))))
@@ -386,7 +386,7 @@ in each directory, not to the directory list itself."
     (lambda(file)
       (or (file-directory-p file)
          (let (filtered)
-           (mapcar
+           (mapc
             (function
              (lambda(regexp)
                (and (string-match regexp file)
@@ -402,7 +402,7 @@ in each directory, not to the directory list itself."
 Each entry matches the regular expression `file-cache-buffer-default-regexp'
 or the optional REGEXP argument."
   (set-buffer file-cache-buffer)
-  (mapcar
+  (mapc
    (function (lambda (elt)
               (goto-char (point-min))
               (delete-matching-lines elt)))
@@ -443,10 +443,10 @@ or the optional REGEXP argument."
   "Delete files matching REGEXP from the file cache."
   (interactive "sRegexp: ")
   (let ((delete-list))
-    (mapcar '(lambda (elt)
-              (and (string-match regexp (car elt))
-                   (setq delete-list (cons (car elt) delete-list))))
-           file-cache-alist)
+    (mapc '(lambda (elt)
+            (and (string-match regexp (car elt))
+                 (setq delete-list (cons (car elt) delete-list))))
+         file-cache-alist)
     (file-cache-delete-file-list delete-list)
     (message "Filecache: deleted %d files from file cache"
              (length delete-list))))
@@ -456,7 +456,7 @@ or the optional REGEXP argument."
   (interactive "DDelete directory from file cache: ")
   (let ((dir (expand-file-name directory))
        (result 0))
-    (mapcar
+    (mapc
      '(lambda (entry)
        (if (file-cache-do-delete-directory dir entry)
            (setq result (1+ result))))
@@ -719,7 +719,7 @@ the name is considered already unique; only the second substitution
   "Output a list of files whose names (not including directories)
 match REGEXP."
   (let ((results))
-    (mapcar
+    (mapc
      (function
       (lambda(cache-element)
        (and (string-match regexp
@@ -768,11 +768,11 @@ match REGEXP."
     (with-current-buffer
        (get-buffer-create buf)
       (erase-buffer)
-      (mapcar
+      (mapc
        (function
-      (lambda(item)
-       (insert (nth 1 item) (nth 0 item) "\n")))
-    file-cache-alist)
+       (lambda(item)
+        (insert (nth 1 item) (nth 0 item) "\n")))
+       file-cache-alist)
       (pop-to-buffer buf)
     )))
 
index 9ae4396946b02f588fa88c3ed7c4da9b30ed07c0..be28dec4c409b8d42784b2f3e0685f9e15a1612d 100644 (file)
@@ -644,7 +644,7 @@ The path separator is colon in GNU and GNU-like systems."
        (let ((trypath (parse-colon-path (getenv "CDPATH"))))
          (setq cd-path (or trypath (list "./")))))
     (if (not (catch 'found
-              (mapcar
+              (mapc
                (function (lambda (x)
                            (let ((f (expand-file-name (concat x dir))))
                              (if (file-directory-p f)
@@ -712,6 +712,28 @@ PATH-AND-SUFFIXES is a pair of lists, (DIRECTORIES . SUFFIXES)."
        ((null action) (try-completion string names))
        (t (test-completion string names))))))
 
+(defun locate-dominating-file (file regexp)
+  "Look up the directory hierarchy from FILE for a file matching REGEXP."
+  (while (and file (not (file-directory-p file)))
+    (setq file (file-name-directory (directory-file-name file))))
+  (catch 'found
+    (let ((user (nth 2 (file-attributes file)))
+          ;; Abbreviate, so as to stop when we cross ~/.
+          (dir (abbreviate-file-name (file-name-as-directory file)))
+          files)
+      ;; As a heuristic, we stop looking up the hierarchy of directories as
+      ;; soon as we find a directory belonging to another user.  This should
+      ;; save us from looking in things like /net and /afs.  This assumes
+      ;; that all the files inside a project belong to the same user.
+      (while (and dir (equal user (nth 2 (file-attributes dir))))
+        (if (setq files (directory-files dir 'full regexp))
+            (throw 'found (car files))
+          (if (equal dir
+                     (setq dir (file-name-directory
+                                (directory-file-name dir))))
+              (setq dir nil))))
+      nil)))
+
 (defun executable-find (command)
   "Search for COMMAND in `exec-path' and return the absolute file name.
 Return nil if COMMAND is not found anywhere in `exec-path'."
@@ -728,17 +750,28 @@ This is an interface to the function `load'."
                          (cons load-path (get-load-suffixes)))))
   (load library))
 
-(defun file-remote-p (file)
+(defun file-remote-p (file &optional identification connected)
   "Test whether FILE specifies a location on a remote system.
 Return an identification of the system if the location is indeed
 remote.  The identification of the system may comprise a method
 to access the system and its hostname, amongst other things.
 
 For example, the filename \"/user@host:/foo\" specifies a location
-on the system \"/user@host:\"."
+on the system \"/user@host:\".
+
+IDENTIFICATION specifies which part of the identification shall
+be returned as string.  IDENTIFICATION can be the symbol
+`method', `user' or `host'; any other value is handled like nil
+and means to return the complete identification string.
+
+If CONNECTED is non-nil, the function returns an identification only
+if FILE is located on a remote system, and a connection is established
+to that remote system.
+
+`file-remote-p' will never open a connection on its own."
   (let ((handler (find-file-name-handler file 'file-remote-p)))
     (if handler
-       (funcall handler 'file-remote-p file)
+       (funcall handler 'file-remote-p file identification connected)
       nil)))
 
 (defun file-local-copy (file)
@@ -1052,6 +1085,12 @@ Recursive uses of the minibuffer will not be affected."
             ,@body)
         (remove-hook 'minibuffer-setup-hook ,hook)))))
 
+(defcustom find-file-confirm-nonexistent-file nil
+  "If non-nil, `find-file' requires confirmation before visiting a new file."
+  :group 'find-file
+  :version "23.1"
+  :type 'boolean)
+
 (defun find-file-read-args (prompt mustmatch)
   (list (let ((find-file-default
               (and buffer-file-name
@@ -1082,7 +1121,9 @@ suppress wildcard expansion by setting `find-file-wildcards' to nil.
 
 To visit a file without any kind of conversion and without
 automatically choosing a major mode, use \\[find-file-literally]."
-  (interactive (find-file-read-args "Find file: " nil))
+  (interactive
+   (find-file-read-args "Find file: "
+                        (if find-file-confirm-nonexistent-file 'confirm-only)))
   (let ((value (find-file-noselect filename nil nil wildcards)))
     (if (listp value)
        (mapcar 'switch-to-buffer (nreverse value))
@@ -1100,7 +1141,9 @@ type M-n to pull it into the minibuffer.
 
 Interactively, or if WILDCARDS is non-nil in a call from Lisp,
 expand wildcards (if any) and visit multiple files."
-  (interactive (find-file-read-args "Find file in other window: " nil))
+  (interactive
+   (find-file-read-args "Find file in other window: "
+                        (if find-file-confirm-nonexistent-file 'confirm-only)))
   (let ((value (find-file-noselect filename nil nil wildcards)))
     (if (listp value)
        (progn
@@ -1121,7 +1164,9 @@ type M-n to pull it into the minibuffer.
 
 Interactively, or if WILDCARDS is non-nil in a call from Lisp,
 expand wildcards (if any) and visit multiple files."
-  (interactive (find-file-read-args "Find file in other frame: " nil))
+  (interactive
+   (find-file-read-args "Find file in other frame: "
+                        (if find-file-confirm-nonexistent-file 'confirm-only)))
   (let ((value (find-file-noselect filename nil nil wildcards)))
     (if (listp value)
        (progn
@@ -1144,7 +1189,9 @@ file names with wildcards."
   "Edit file FILENAME but don't allow changes.
 Like \\[find-file], but marks buffer as read-only.
 Use \\[toggle-read-only] to permit editing."
-  (interactive (find-file-read-args "Find file read-only: " nil))
+  (interactive
+   (find-file-read-args "Find file read-only: "
+                        (if find-file-confirm-nonexistent-file 'confirm-only)))
   (unless (or (and wildcards find-file-wildcards
                   (not (string-match "\\`/:" filename))
                   (string-match "[[*?]" filename))
@@ -1159,7 +1206,9 @@ Use \\[toggle-read-only] to permit editing."
   "Edit file FILENAME in another window but don't allow changes.
 Like \\[find-file-other-window], but marks buffer as read-only.
 Use \\[toggle-read-only] to permit editing."
-  (interactive (find-file-read-args "Find file read-only other window: " nil))
+  (interactive
+   (find-file-read-args "Find file read-only other window: "
+                        (if find-file-confirm-nonexistent-file 'confirm-only)))
   (unless (or (and wildcards find-file-wildcards
                   (not (string-match "\\`/:" filename))
                   (string-match "[[*?]" filename))
@@ -1174,7 +1223,9 @@ Use \\[toggle-read-only] to permit editing."
   "Edit file FILENAME in another frame but don't allow changes.
 Like \\[find-file-other-frame], but marks buffer as read-only.
 Use \\[toggle-read-only] to permit editing."
-  (interactive (find-file-read-args "Find file read-only other frame: " nil))
+  (interactive
+   (find-file-read-args "Find file read-only other frame: "
+                        (if find-file-confirm-nonexistent-file 'confirm-only)))
   (unless (or (and wildcards find-file-wildcards
                   (not (string-match "\\`/:" filename))
                   (string-match "[[*?]" filename))
@@ -1282,11 +1333,14 @@ killed."
 (defun create-file-buffer (filename)
   "Create a suitably named buffer for visiting FILENAME, and return it.
 FILENAME (sans directory) is used unchanged if that name is free;
-otherwise a string <2> or <3> or ... is appended to get an unused name."
+otherwise a string <2> or <3> or ... is appended to get an unused name.
+Spaces at the start of FILENAME (sans directory) are removed."
   (let ((lastname (file-name-nondirectory filename)))
     (if (string= lastname "")
        (setq lastname filename))
-    (generate-new-buffer lastname)))
+    (save-match-data
+      (string-match "^ *\\(.*\\)" lastname)
+      (generate-new-buffer (match-string 1 lastname)))))
 
 (defun generate-new-buffer (name)
   "Create and return a buffer with a name based on NAME.
@@ -1973,8 +2027,9 @@ since only a single case-insensitive search through the alist is made."
      ("\\.tar\\'" . tar-mode)
      ;; The list of archive file extensions should be in sync with
      ;; `auto-coding-alist' with `no-conversion' coding system.
-     ("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . archive-mode)
-     ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . archive-mode)
+     ("\\.\\(\
+arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|\
+ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\)\\'" . archive-mode)
      ("\\.\\(sx[dmicw]\\|odt\\)\\'" . archive-mode)    ; OpenOffice.org
      ;; Mailer puts message to be edited in
      ;; /tmp/Re.... or Message
@@ -1989,7 +2044,6 @@ since only a single case-insensitive search through the alist is made."
      ("\\.dtd\\'" . sgml-mode)
      ("\\.ds\\(ss\\)?l\\'" . dsssl-mode)
      ("\\.js\\'" . java-mode)          ; javascript-mode would be better
-     ("\\.x[bp]m\\'" . c-mode)
      ;; .emacs or .gnus or .viper following a directory delimiter in
      ;; Unix, MSDOG or VMS syntax.
      ("[]>:/\\]\\..*\\(emacs\\|gnus\\|viper\\)\\'" . emacs-lisp-mode)
@@ -2449,11 +2503,13 @@ asking you for confirmation."
        minor-mode-overriding-map-alist
        mode-line-buffer-identification
        mode-line-format
+       mode-line-client
        mode-line-modes
        mode-line-modified
        mode-line-mule-info
        mode-line-position
        mode-line-process
+       mode-line-remote
        mode-name
        outline-level
        overriding-local-map
@@ -4050,6 +4106,8 @@ or multiple mail buffers, etc."
 
 (defun make-directory (dir &optional parents)
   "Create the directory DIR and any nonexistent parent dirs.
+If DIR already exists as a directory, do nothing.
+
 Interactively, the default choice of directory to create
 is the current default directory for file names.
 That is useful when you have visited a file in a nonexistent directory.
@@ -4421,6 +4479,14 @@ This command is used in the special Dired buffer created by
            (message "No files can be recovered from this session now")))
       (kill-buffer buffer))))
 
+(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")))
+    (kill-buffer buffer)))
+
 (defun kill-some-buffers (&optional list)
   "Kill some buffers.  Asks the user whether to kill each one of them.
 Non-interactively, if optional argument LIST is non-nil, it
@@ -4435,13 +4501,20 @@ specifies the list of buffers to kill, asking for approval for each one."
                                        ; if we killed the base buffer.
           (not (string-equal name ""))
           (/= (aref name 0) ?\s)
-          (yes-or-no-p
-           (format "Buffer %s %s.  Kill? "
-                   name
-                   (if (buffer-modified-p buffer)
-                       "HAS BEEN EDITED" "is unmodified")))
-          (kill-buffer buffer)))
+          (kill-buffer-ask buffer)))
     (setq list (cdr list))))
+
+(defun kill-matching-buffers (regexp &optional internal-too)
+  "Kill buffers whose name matches the specified regexp.
+The optional second argument indicates whether to kill internal buffers too."
+  (interactive "sKill buffers matching this regular expression: \nP")
+  (dolist (buffer (buffer-list))
+    (let ((name (buffer-name buffer)))
+      (when (and name (not (string-equal name ""))
+                 (or internal-too (/= (aref name 0) ?\s))
+                 (string-match regexp name))
+        (kill-buffer-ask buffer)))))
+
 \f
 (defun auto-save-mode (arg)
   "Toggle auto-saving of contents of current buffer.
@@ -5253,6 +5326,22 @@ With prefix arg, silently save all file-visiting buffers, then kill."
        (or (null confirm-kill-emacs)
           (funcall confirm-kill-emacs "Really exit Emacs? "))
        (kill-emacs)))
+
+(defun save-buffers-kill-terminal (&optional arg)
+  "Offer to save each buffer, then kill the current connection.
+If the current frame has no client, kill Emacs itself.
+
+With prefix arg, silently save all file-visiting buffers, then kill.
+
+If emacsclient was started with a list of filenames to edit, then
+only these files will be asked to be saved."
+  (interactive "P")
+  (let ((proc (frame-parameter (selected-frame) 'client))
+       (frame (selected-frame)))
+    (if (null proc)
+       (save-buffers-kill-emacs)
+      (server-save-buffers-kill-terminal proc arg))))
+
 \f
 ;; We use /: as a prefix to "quote" a file name
 ;; so that magic file name handlers will not apply to it.
@@ -5341,6 +5430,98 @@ With prefix arg, silently save all file-visiting buffers, then kill."
          (t
           (apply operation arguments)))))
 \f
+;; Symbolic modes and read-file-modes.
+
+(defun file-modes-char-to-who (char)
+  "Convert CHAR to a who-mask from a symbolic mode notation.
+CHAR is in [ugoa] and represents the users on which rights are applied."
+  (cond ((= char ?u) #o4700)
+       ((= char ?g) #o2070)
+       ((= char ?o) #o1007)
+       ((= char ?a) #o7777)
+       (t (error "%c: bad `who' character" char))))
+
+(defun file-modes-char-to-right (char &optional from)
+  "Convert CHAR to a right-mask from a symbolic mode notation.
+CHAR is in [rwxXstugo] and represents a right.
+If CHAR is in [Xugo], the value is extracted from FROM (or 0 if nil)."
+  (or from (setq from 0))
+  (cond ((= char ?r) #o0444)
+       ((= char ?w) #o0222)
+       ((= char ?x) #o0111)
+       ((= char ?s) #o1000)
+       ((= char ?t) #o6000)
+       ;; Rights relative to the previous file modes.
+       ((= char ?X) (if (= (logand from #o111) 0) 0 #o0111))
+       ((= char ?u) (let ((uright (logand #o4700 from)))
+                      (+ uright (/ uright #o10) (/ uright #o100))))
+       ((= char ?g) (let ((gright (logand #o2070 from)))
+                      (+ gright (/ gright #o10) (* gright #o10))))
+       ((= char ?o) (let ((oright (logand #o1007 from)))
+                      (+ oright (* oright #o10) (* oright #o100))))
+       (t (error "%c: bad right character" char))))
+
+(defun file-modes-rights-to-number (rights who-mask &optional from)
+  "Convert a right string to a right-mask from a symbolic modes notation.
+RIGHTS is the right string, it should match \"([+=-][rwxXstugo]+)+\".
+WHO-MASK is the mask number of the users on which the rights are to be applied.
+FROM (or 0 if nil) is the orginal modes of the file to be chmod'ed."
+  (let* ((num-rights (or from 0))
+        (list-rights (string-to-list rights))
+        (op (pop list-rights)))
+    (while (memq op '(?+ ?- ?=))
+      (let ((num-right 0)
+           char-right)
+       (while (memq (setq char-right (pop list-rights))
+                    '(?r ?w ?x ?X ?s ?t ?u ?g ?o))
+         (setq num-right
+               (logior num-right
+                       (file-modes-char-to-right char-right num-rights))))
+       (setq num-right (logand who-mask num-right)
+             num-rights
+             (cond ((= op ?+) (logior num-rights num-right))
+                   ((= op ?-) (logand num-rights (lognot num-right)))
+                   (t (logior (logand num-rights (lognot who-mask)) num-right)))
+             op char-right)))
+    num-rights))
+
+(defun file-modes-symbolic-to-number (modes &optional from)
+  "Convert symbolic file modes to numeric file modes.
+MODES is the string to convert, it should match
+\"[ugoa]*([+-=][rwxXstugo]+)+,...\".
+See (info \"(coreutils)File permissions\") for more information on this
+notation.
+FROM (or 0 if nil) is the orginal modes of the file to be chmod'ed."
+  (save-match-data
+    (let ((case-fold-search nil)
+         (num-modes (or from 0)))
+      (while (/= (string-to-char modes) 0)
+       (if (string-match "^\\([ugoa]*\\)\\([+=-][rwxXstugo]+\\)+\\(,\\|\\)" modes)
+           (let ((num-who (apply 'logior 0
+                                 (mapcar 'file-modes-char-to-who
+                                         (match-string 1 modes)))))
+             (when (= num-who 0)
+               (setq num-who (default-file-modes)))
+             (setq num-modes
+                   (file-modes-rights-to-number (substring modes (match-end 1))
+                                                num-who num-modes)
+                   modes (substring modes (match-end 3))))
+         (error "Parse error in modes near `%s'" (substring modes 0))))
+      num-modes)))
+
+(defun read-file-modes (&optional prompt orig-file)
+  "Read file modes in octal or symbolic notation.
+PROMPT is used as the prompt, default to `File modes (octal or symbolic): '.
+ORIG-FILE is the original file of which modes will be change."
+  (let* ((modes (or (if orig-file (file-modes orig-file) 0)
+                   (error "File not found")))
+        (value (read-string (or prompt "File modes (octal or symbolic): "))))
+    (save-match-data
+      (if (string-match "^[0-7]+" value)
+         (string-to-number value 8)
+       (file-modes-symbolic-to-number value modes)))))
+
+\f
 (define-key ctl-x-map "\C-f" 'find-file)
 (define-key ctl-x-map "\C-r" 'find-file-read-only)
 (define-key ctl-x-map "\C-v" 'find-alternate-file)
@@ -5350,7 +5531,7 @@ With prefix arg, silently save all file-visiting buffers, then kill."
 (define-key ctl-x-map "i" 'insert-file)
 (define-key esc-map "~" 'not-modified)
 (define-key ctl-x-map "\C-d" 'list-directory)
-(define-key ctl-x-map "\C-c" 'save-buffers-kill-emacs)
+(define-key ctl-x-map "\C-c" 'save-buffers-kill-terminal)
 (define-key ctl-x-map "\C-q" 'toggle-read-only)
 
 (define-key ctl-x-4-map "f" 'find-file-other-window)
index 5554e26bc0680cab58ed6de5c2be05d93d9d0e04..e5dde84785371833bb5856c38e14ecbc70e80290 100644 (file)
@@ -92,9 +92,6 @@
 
 
 ;;; Some variables
-(eval-and-compile
-  (defvar filesets-running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)
-    "Non-nil means we are running XEmacs."))
 
 (defvar filesets-menu-cache nil
   "The whole filesets menu.")
 (defvar filesets-updated-buffers nil
   "A list of buffers with updated menu bars.")
 (defvar filesets-menu-use-cached-flag nil
-  "Use cached data. See `filesets-menu-ensure-use-cached' for details.")
+  "Use cached data.  See `filesets-menu-ensure-use-cached' for details.")
 (defvar filesets-update-cache-file-flag nil
   "Non-nil means the cache needs updating.")
 (defvar filesets-ignore-next-set-default nil
-  "A list of custom variables for which the next `set-default' will be
-ignored.")
+  "List of custom variables for which the next `set-default' will be ignored.")
 
 (defvar filesets-output-buffer-flag nil
   "Non-nil means the current buffer is an output buffer created by filesets.
@@ -131,7 +127,7 @@ Is buffer local variable.")
 0 means no messages at all.")
 
 (defvar filesets-menu-ensure-use-cached
-  (and filesets-running-xemacs
+  (and (featurep 'xemacs)
        (if (fboundp 'emacs-version>=)
           (not (emacs-version>= 21 5))))
   "Make sure (X)Emacs uses filesets' cache.
@@ -184,7 +180,7 @@ Like `some', return the first value of FSS-PRED that is non-nil."
 
 (defun filesets-member (fsm-item fsm-lst &rest fsm-keys)
   "Find the first occurrence of FSM-ITEM in FSM-LST.
-It is supposed to work like cl's `member*'. At the moment only the :test
+It is supposed to work like cl's `member*'.  At the moment only the :test
 key is supported."
   (let ((fsm-test (or (plist-get fsm-keys ':test)
                      (function equal))))
@@ -214,11 +210,11 @@ key is supported."
       (file-name-nondirectory (substring this 0 (- (length this) 1))))))
 
 (defun filesets-which-command (cmd)
-  "Calls \"which CMD\"."
+  "Call \"which CMD\"."
   (shell-command-to-string (format "which %s" cmd)))
 
 (defun filesets-which-command-p (cmd)
-  "Calls \"which CMD\" and returns non-nil if the command was found."
+  "Call \"which CMD\" and return non-nil if the command was found."
   (when (string-match (format "\\(/[^/]+\\)?/%s" cmd)
                      (filesets-which-command cmd))
     cmd))
@@ -252,7 +248,7 @@ key is supported."
 ;  (filesets-build-menu))
 
 ;; It seems this is a workaround for the XEmacs issue described in the
-;; doc-string of filesets-menu-ensure-use-cached. Under Emacs this is
+;; doc-string of filesets-menu-ensure-use-cached.  Under Emacs this is
 ;; essentially just `set-default'.
 (defun filesets-set-default (sym val &optional init-flag)
   "Set-default wrapper function used in conjunction with `defcustom'.
@@ -307,55 +303,55 @@ SYM to VAL and return t.  If INIT-FLAG is non-nil, set with
   :version "22.1")
 
 (defcustom filesets-menu-name "Filesets"
-  "*Filesets' menu name."
+  "Filesets' menu name."
   :set (function filesets-set-default)
   :type 'sexp
   :group 'filesets)
 
 (defcustom filesets-menu-path nil
-  "*The menu under which the filesets menu should be inserted.
+  "The menu under which the filesets menu should be inserted.
 See `add-submenu' for documentation."
   :set (function filesets-set-default)
   :type 'sexp
   :group 'filesets)
 
 (defcustom filesets-menu-before "File"
-  "*The name of a menu before which this menu should be added.
+  "The name of a menu before which this menu should be added.
 See `add-submenu' for documentation."
   :set (function filesets-set-default)
   :type 'sexp
   :group 'filesets)
 
 (defcustom filesets-menu-in-menu nil
-  "*Use that instead of `current-menubar' as the menu to change.
+  "Use that instead of `current-menubar' as the menu to change.
 See `add-submenu' for documentation."
   :set (function filesets-set-default)
   :type 'sexp
   :group 'filesets)
 
 (defcustom filesets-menu-shortcuts-flag t
-  "*Non-nil means to prepend menus with hopefully unique shortcuts."
+  "Non-nil means to prepend menus with hopefully unique shortcuts."
   :set (function filesets-set-default!)
   :type 'boolean
   :group 'filesets)
 
 (defcustom filesets-menu-shortcuts-marker "%_"
-  "*String for marking menu shortcuts."
+  "String for marking menu shortcuts."
   :set (function filesets-set-default!)
   :type 'string
   :group 'filesets)
 
-;(defcustom filesets-menu-cnvfp-flag nil
-;  "*Non-nil means show \"Convert :pattern to :files\" entry for :pattern menus."
-;  :set (function filesets-set-default!)
-;  :type 'boolean
-;  :group 'filesets)
+;;(defcustom filesets-menu-cnvfp-flag nil
+;;  "*Non-nil means show \"Convert :pattern to :files\" entry for :pattern menus."
+;;  :set (function filesets-set-default!)
+;;  :type 'boolean
+;;  :group 'filesets)
 
 (defcustom filesets-menu-cache-file
-  (if filesets-running-xemacs
+  (if (featurep 'xemacs)
       "~/.xemacs/filesets-cache.el"
-      "~/.emacs.d/filesets-cache.el")
-  "*File to be used for saving the filesets menu between sessions.
+    (concat user-emacs-directory "filesets-cache.el"))
+  "File to be used for saving the filesets menu between sessions.
 Set this to \"\", to disable caching of menus.
 Don't forget to check out `filesets-menu-ensure-use-cached'."
   :set (function filesets-set-default)
@@ -368,16 +364,16 @@ Don't forget to check out `filesets-menu-ensure-use-cached'."
     filesets-submenus
     filesets-menu-cache
     filesets-ingroup-cache)
-  "*Stuff we want to save in `filesets-menu-cache-file'.
+  "Stuff we want to save in `filesets-menu-cache-file'.
 
 Possible uses: don't save configuration data in the main startup files
 but in filesets's own cache.  In this case add `filesets-data' to this
 list.
 
-There is a second reason for putting `filesets-data' on this list. If
+There is a second reason for putting `filesets-data' on this list.  If
 you frequently add and remove buffers on the fly to :files filesets, you
 don't need to save your customizations if `filesets-data' is being
-mirrored in the cache file. In this case the version in the cache file
+mirrored in the cache file.  In this case the version in the cache file
 is the current one, and the version in your startup file will be
 silently updated later on.
 
@@ -407,7 +403,7 @@ Don't forget to check out `filesets-menu-ensure-use-cached'."
   :group 'filesets)
 
 (defcustom filesets-cache-fill-content-hooks nil
-  "*Hooks to run when writing the contents of filesets' cache file.
+  "Hooks to run when writing the contents of filesets' cache file.
 
 The hook is called with the cache file as current buffer and the cursor
 at the last position.  I.e. each hook has to make sure that the cursor is
@@ -429,7 +425,7 @@ Don't forget to check out `filesets-menu-ensure-use-cached'."
   :group 'filesets)
 
 (defcustom filesets-cache-hostname-flag nil
-  "*Non-nil means cache the hostname.
+  "Non-nil means cache the hostname.
 If the current name differs from the cached one,
 rebuild the menu and create a new cache file."
   :set (function filesets-set-default)
@@ -437,16 +433,16 @@ rebuild the menu and create a new cache file."
   :group 'filesets)
 
 (defcustom filesets-cache-save-often-flag nil
-  "*Non-nil means save buffer on every change of the filesets menu.
+  "Non-nil means save buffer on every change of the filesets menu.
 If this variable is set to nil and if Emacs crashes, the cache and
-filesets-data could get out of sync. Set this to t if this happens from
+filesets-data could get out of sync.  Set this to t if this happens from
 time to time or if the fileset cache causes troubles."
   :set (function filesets-set-default)
   :type 'boolean
   :group 'filesets)
 
 (defcustom filesets-max-submenu-length 25
-  "*Maximum length of submenus.
+  "Maximum length of submenus.
 Set this value to 0 to turn menu splitting off.  BTW, parts of submenus
 will not be rewrapped if their length exceeds this value."
   :set (function filesets-set-default)
@@ -454,13 +450,13 @@ will not be rewrapped if their length exceeds this value."
   :group 'filesets)
 
 (defcustom filesets-max-entry-length 50
-  "*Truncate names of splitted submenus to this length."
+  "Truncate names of splitted submenus to this length."
   :set (function filesets-set-default)
   :type 'integer
   :group 'filesets)
 
 (defcustom filesets-browse-dir-function 'dired
-  "*A function or command used for browsing directories.
+  "A function or command used for browsing directories.
 When using an external command, \"%s\" will be replaced with the
 directory's name.
 
@@ -478,7 +474,7 @@ Note: You have to manually rebuild the menu if you change this value."
   :group 'filesets)
 
 (defcustom filesets-open-file-function 'filesets-find-or-display-file
-  "*The function used for opening files.
+  "The function used for opening files.
 
 `filesets-find-or-display-file' ... Filesets' default function for
 visiting files.  This function checks if an external viewer is defined
@@ -486,7 +482,7 @@ for a specific file type.  Either this viewer, if defined, or
 `find-file' will be used to visit a file.
 
 `filesets-find-file' ... An alternative function that always uses
-`find-file'. If `filesets-be-docile-flag' is true, a file, which isn't
+`find-file'.  If `filesets-be-docile-flag' is true, a file, which isn't
 readable, will not be opened.
 
 Caveat: Changes will take effect only after rebuilding the menu."
@@ -501,7 +497,7 @@ Caveat: Changes will take effect only after rebuilding the menu."
   :group 'filesets)
 
 (defcustom filesets-save-buffer-function 'save-buffer
-  "*The function used to save a buffer.
+  "The function used to save a buffer.
 Caveat: Changes will take effect after rebuilding the menu."
   :set (function filesets-set-default)
   :type '(choice :tag "Function:"
@@ -512,10 +508,10 @@ Caveat: Changes will take effect after rebuilding the menu."
   :group 'filesets)
 
 (defcustom filesets-find-file-delay
-  (if (and filesets-running-xemacs gutter-buffers-tab-visible-p)
+  (if (and (featurep 'xemacs) gutter-buffers-tab-visible-p)
       0.5
     0)
-  "*Delay before calling find-file.
+  "Delay before calling `find-file'.
 This is for calls via `filesets-find-or-display-file'
 or `filesets-find-file'.
 
@@ -525,7 +521,7 @@ Set this to 0, if you don't use XEmacs' buffer tabs."
   :group 'filesets)
 
 (defcustom filesets-be-docile-flag nil
-  "*Non-nil means don't complain if a file or a directory doesn't exist.
+  "Non-nil means don't complain if a file or a directory doesn't exist.
 This is useful if you want to use the same startup files in different
 computer environments."
   :set (function filesets-set-default)
@@ -533,19 +529,19 @@ computer environments."
   :group 'filesets)
 
 (defcustom filesets-sort-menu-flag t
-  "*Non-nil means sort the filesets menu alphabetically."
+  "Non-nil means sort the filesets menu alphabetically."
   :set (function filesets-set-default)
   :type 'boolean
   :group 'filesets)
 
 (defcustom filesets-sort-case-sensitive-flag t
-  "*Non-nil means sorting of the filesete menu is case sensitive."
+  "Non-nil means sorting of the filesete menu is case sensitive."
   :set (function filesets-set-default)
   :type 'boolean
   :group 'filesets)
 
 (defcustom filesets-tree-max-level 3
-  "*Maximum scan depth for directory trees.
+  "Maximum scan depth for directory trees.
 A :tree fileset is defined by a base directory the contents of which
 will be recursively added to the menu.  `filesets-tree-max-level' tells up
 to which level the directory structure should be scanned/listed,
@@ -579,7 +575,7 @@ including directory trees to the menu can take a lot of memory."
     ("Run Shell Command"
      filesets-cmd-shell-command
      (filesets-cmd-shell-command-getargs)))
-  "*Commands to run on filesets.
+  "Commands to run on filesets.
 An association list of names, functions, and an argument list (or a
 function that returns one) to be run on a filesets' files.
 
@@ -607,16 +603,16 @@ the filename."
 
 (defcustom filesets-external-viewers
   (let
-;      ((ps-cmd  (or (and (boundp 'my-ps-viewer) my-ps-viewer)
-;                  (filesets-select-command "ggv gv")))
-;       (pdf-cmd (or (and (boundp 'my-ps-viewer) my-pdf-viewer)
-;                  (filesets-select-command "xpdf acroread")))
-;       (dvi-cmd (or (and (boundp 'my-ps-viewer) my-dvi-viewer)
-;                  (filesets-select-command "xdvi tkdvi")))
-;       (doc-cmd (or (and (boundp 'my-ps-viewer) my-doc-viewer)
-;                  (filesets-select-command "antiword")))
-;       (pic-cmd (or (and (boundp 'my-ps-viewer) my-pic-viewer)
-;                  (filesets-select-command "gqview ee display"))))
+      ;; ((ps-cmd  (or (and (boundp 'my-ps-viewer) my-ps-viewer)
+      ;;           (filesets-select-command "ggv gv")))
+      ;;  (pdf-cmd (or (and (boundp 'my-ps-viewer) my-pdf-viewer)
+      ;;           (filesets-select-command "xpdf acroread")))
+      ;;  (dvi-cmd (or (and (boundp 'my-ps-viewer) my-dvi-viewer)
+      ;;           (filesets-select-command "xdvi tkdvi")))
+      ;;  (doc-cmd (or (and (boundp 'my-ps-viewer) my-doc-viewer)
+      ;;           (filesets-select-command "antiword")))
+      ;;  (pic-cmd (or (and (boundp 'my-ps-viewer) my-pic-viewer)
+      ;;           (filesets-select-command "gqview ee display"))))
       ((ps-cmd  "ggv")
        (pdf-cmd "xpdf")
        (dvi-cmd "xdvi")
@@ -644,7 +640,7 @@ the filename."
        ((:ignore-on-open-all t)
        (:ignore-on-read-text t)
        (:constraint-flag ,pic-cmd)))))
-  "*Association list of file patterns and external viewers for use with
+  "Association list of file patterns and external viewers for use with
 `filesets-find-or-display-file'.
 
 Has the form ((FILE-PATTERN VIEWER PROPERTIES) ...), VIEWER being either a
@@ -674,21 +670,20 @@ variables my-ps-viewer, my-pdf-viewer, my-dvi-viewer, my-pic-viewer.
 In order to view pdf or rtf files in an Emacs buffer, you could use these:
 
 
-      \(\"^.+\\.pdf$\" \"pdftotext\"
+      \(\"^.+\\\\.pdf\\\\'\" \"pdftotext\"
        \((:capture-output t)
        \(:args (\"%S - | fmt -w \" window-width))
        \(:ignore-on-read-text t)
        \(:constraintp (lambda ()
                        \(and \(filesets-which-command-p \"pdftotext\")
                             \(filesets-which-command-p \"fmt\"))))))
-      \(\"^.+\\.rtf$\" \"rtf2htm\"
+      \(\"^.+\\\\.rtf\\\\'\" \"rtf2htm\"
        \((:capture-output t)
        \(:args (\"%S 2> /dev/null | w3m -dump -T text/html\"))
        \(:ignore-on-read-text t)
        \(:constraintp (lambda ()
                        \(and (filesets-which-command-p \"rtf2htm\")
-                            \(filesets-which-command-p \"w3m\"))))))
-"
+                            \(filesets-which-command-p \"w3m\"))))))"
   :set (function filesets-set-default)
   :type '(repeat :tag "Viewer"
                 (list :tag "Definition"
@@ -814,7 +809,7 @@ In order to view pdf or rtf files in an Emacs buffer, you could use these:
                              emacs-wiki-directories
                            nil))))))))
 
-  "*Inclusion group definitions.
+  "Inclusion group definitions.
 
 Define how to find included file according to a file's mode (being
 defined by a file pattern).
@@ -865,8 +860,8 @@ Stubs:
 
 First, a stub is a file that shows up in the menu but will not be
 included in an ingroup's file listing -- i.e. filesets will never
-operate on this file automatically. Secondly, in opposition to normal
-files stubs are not scanned for new inclusion groups. This is useful if
+operate on this file automatically.  Secondly, in opposition to normal
+files stubs are not scanned for new inclusion groups.  This is useful if
 you want to have quick access to library headers.
 
 In the menu, an asterisk is appended to the stub's name.
@@ -937,9 +932,8 @@ With duplicates removed, it would be:
   :group 'filesets)
 (put 'filesets-ingroup-patterns 'risky-local-variable t)
 
-(defcustom filesets-data
-  nil
-  "*Fileset definitions.
+(defcustom filesets-data nil
+  "Fileset definitions.
 
 A fileset is either a list of files, a file pattern, a base directory
 and a search pattern (for files), or a base file.  Changes to this
@@ -1065,27 +1059,27 @@ defined in `filesets-ingroup-patterns'."
 
 
 (defcustom filesets-query-user-limit 15
-  "*Query the user before opening a fileset with that many files."
+  "Query the user before opening a fileset with that many files."
   :set (function filesets-set-default)
   :type 'integer
   :group 'filesets)
 \f
 ;;; Emacs compatibility
 (eval-and-compile
-  (if filesets-running-xemacs
+  (if (featurep 'xemacs)
       (fset 'filesets-error 'error)
 
     (require 'easymenu)
 
     (defun filesets-error (class &rest args)
       "`error' wrapper."
-      (error (mapconcat 'identity args " ")))
+      (error "%s" (mapconcat 'identity args " ")))
 
     ))
 
 (defun filesets-filter-dir-names (lst &optional negative)
-  "Remove non-directory names from a list of strings. If NEGATIVE is
-non-nil, remove all directory names."
+  "Remove non-directory names from a list of strings.
+If NEGATIVE is non-nil, remove all directory names."
   (filesets-filter-list lst
                        (lambda (x)
                          (and (not (string-match "^\\.+/$" x))
@@ -1093,7 +1087,7 @@ non-nil, remove all directory names."
                                   (not (string-match "[:/\\]$" x))
                                 (string-match "[:/\\]$" x))))))
 
-(defun filesets-conditional-sort (lst &optional access-fn simply-do-it)
+(defun filesets-conditional-sort (lst &optional access-fn)
   "Return a sorted copy of LST, LST being a list of strings.
 If `filesets-sort-menu-flag' is nil, return LST itself.
 
@@ -1116,10 +1110,11 @@ If SIMPLY-DO-IT is non-nil, the list is sorted regardless of
 
 (defun filesets-directory-files (dir &optional
                                     pattern what full-flag match-dirs-flag)
-  "Get WHAT (:files or :dirs) in DIR. If PATTERN is provided return only
-those entries matching this regular expression. If MATCH-DIRS-FLAG is
-non-nil, also match directory entries. Return full path if FULL-FLAG is
-non-nil."
+  "Get WHAT (:files or :dirs) in DIR.
+If PATTERN is provided return only those entries matching this
+regular expression.
+If MATCH-DIRS-FLAG is non-nil, also match directory entries.
+Return full path if FULL-FLAG is non-nil."
   (filesets-message 2 "Filesets: scanning %S" dir)
   (cond
    ((file-exists-p dir)
@@ -1262,7 +1257,7 @@ non-nil."
      filesets-external-viewers)))
 
 (defun filesets-filetype-property (filename event &optional entry)
-  "Returns non-nil if a file of a specific type has special flags/tags.
+  "Return non-nil if a file of a specific type has special flags/tags.
 
 Events (corresponding tag):
 
@@ -1291,7 +1286,7 @@ on-close-all ... not used"
                        nil t)))
 
 (defun filesets-filetype-get-prop (property filename &optional entry)
-  "Returns PROPERTY for filename -- use ENTRY if provided."
+  "Return PROPERTY for filename -- use ENTRY if provided."
   (let ((def (filesets-eviewer-get-props
              (or entry
                  (filesets-get-external-viewer filename)))))
@@ -1411,7 +1406,7 @@ not be opened."
                       name args)))))
 
 (defun filesets-get-fileset-name (something)
-  "Get SOMETHING's name. (Don't ask.)"
+  "Get SOMETHING's name (Don't ask)."
   (cond
    ((listp something)
     (car something))
@@ -1419,11 +1414,11 @@ not be opened."
     something)))
 
 (defun filesets-data-get-name (entry)
-  "Access to `filesets-data'.  Get the entry's name"
+  "Access to `filesets-data'.  Get the entry's name."
   (car entry))
 
 (defun filesets-data-get-data (entry)
-  "Access to `filesets-data'.  Get the entry's data section"
+  "Access to `filesets-data'.  Get the entry's data section."
   (cdr entry))
 
 (defun filesets-alist-get (alist key &optional default carp)
@@ -1534,8 +1529,8 @@ Use FILESET-ENTRY for finding the save function, if provided."
   (filesets-data-get entry ':ingroup nil t))
 
 (defun filesets-file-open (open-function file-name &optional fileset-name)
-  "Open FILE-NAME using OPEN-FUNCTION. If OPEN-FUNCTION is nil, its
-value will be deduced from FILESET-NAME."
+  "Open FILE-NAME using OPEN-FUNCTION.
+If OPEN-FUNCTION is nil, its value will be deduced from FILESET-NAME."
   (let ((open-function (or open-function
                           (filesets-entry-get-open-fn fileset-name))))
     (if (file-readable-p file-name)
@@ -1597,7 +1592,7 @@ SAVE-FUNCTION takes no argument, but works on the current buffer."
   (newline))
 
 (defun filesets-run-cmd--repl-fn (arg &optional format-fn)
-  "Helper function for `filesets-run-cmd'. Apply FORMAT-FN to arg.
+  "Helper function for `filesets-run-cmd'.  Apply FORMAT-FN to arg.
 Replace <file-name> or <<file-name>> with filename."
   (funcall format-fn (cond
                      ((equal arg "<file-name>")
@@ -1787,7 +1782,7 @@ Use LOOKUP-NAME for deducing the save-function, if provided."
       (filesets-error 'error "Filesets: Unknown fileset: " name))))
 
 (defun filesets-add-buffer (&optional name buffer)
-  "Add BUFFER (or current-buffer) to the fileset called NAME.
+  "Add BUFFER (or current buffer) to the fileset called NAME.
 User will be queried, if no fileset name is provided."
   (interactive)
   (let* ((buffer (or buffer
@@ -1822,7 +1817,7 @@ User will be queried, if no fileset name is provided."
            (message "Filesets: Can't add '%s' to fileset '%s'" this name)))))))
 
 (defun filesets-remove-buffer (&optional name buffer)
-  "Remove BUFFER (or current-buffer) to fileset NAME.
+  "Remove BUFFER (or current buffer) to fileset NAME.
 User will be queried, if no fileset name is provided."
   (interactive)
   (let* ((buffer (or buffer
@@ -2014,11 +2009,11 @@ LOOKUP-NAME is used as lookup name for retrieving fileset specific settings."
   "Access to `filesets-ingroup-patterns'.  Extract remove-duplicates-flag."
   (filesets-ingroup-get-data master 1))
 
-(defun filesets-ingroup-collect-finder (patt case-sencitivep)
+(defun filesets-ingroup-collect-finder (patt case-sensitivep)
   "Helper function for `filesets-ingroup-collect'.  Find pattern PATT."
   (let ((cfs case-fold-search)
        (rv  (progn
-              (setq case-fold-search (not case-sencitivep))
+              (setq case-fold-search (not case-sensitivep))
               (re-search-forward patt nil t))))
     (setq case-fold-search cfs)
     rv))
@@ -2107,8 +2102,8 @@ LOOKUP-NAME is used as lookup name for retrieving fileset specific settings."
        (filesets-message 2 "Filesets: no patterns defined for %S" master)))))
 
 (defun filesets-ingroup-collect-build-menu (fs flist &optional other-count)
-  "Helper function for `filesets-ingroup-collect'. Build the menu.
-FS is a fileset's name. FLIST is a list returned by
+  "Helper function for `filesets-ingroup-collect'.  Build the menu.
+FS is a fileset's name.  FLIST is a list returned by
 `filesets-ingroup-collect-files'."
   (if (null flist)
       nil
@@ -2150,7 +2145,7 @@ FS is a fileset's name. FLIST is a list returned by
                               ,@(filesets-get-menu-epilog master ':ingroup fsn)))
                          `([,nm (filesets-file-open nil ',master ',fsn)])))))))))
 
-(defun filesets-ingroup-collect (fs remdupl-flag master &optional depth)
+(defun filesets-ingroup-collect (fs remdupl-flag master)
   "Collect names of included files & build submenu."
   (filesets-ingroup-cache-put master nil)
   (filesets-message 2 "Filesets: parsing %S" master)
@@ -2306,7 +2301,7 @@ Construct a shortcut from COUNT."
                                                lookup-name t)))))))))))
 
 (defun filesets-remove-from-ubl (&optional buffer)
-  "BUFFER or current-buffer require update of the filesets menu."
+  "BUFFER or current buffer require update of the filesets menu."
   (let ((b (or buffer
               (current-buffer))))
     (if (member b filesets-updated-buffers)
@@ -2470,7 +2465,7 @@ We apologize for the inconvenience."))
        (find-file-other-window cf))
       (filesets-error 'error msg))))
 
-(defun filesets-update (version cached-version)
+(defun filesets-update (cached-version)
   "Do some cleanup after updating filesets.el."
   (cond
    ((or (not cached-version)
@@ -2492,7 +2487,7 @@ We apologize for the inconvenience."))
        (progn
          (setq filesets-update-cache-file-flag nil)
          t)
-      (filesets-update filesets-version filesets-cache-version)))
+      (filesets-update filesets-cache-version)))
    (t
     (setq filesets-update-cache-file-flag t)
     nil)))
@@ -2504,7 +2499,7 @@ We apologize for the inconvenience."))
 (defun filesets-init ()
   "Filesets initialization.
 Set up hooks, load the cache file -- if existing -- and build the menu."
-  (add-hook (if filesets-running-xemacs 'activate-menubar-hook 'menu-bar-update-hook)
+  (add-hook (if (featurep 'xemacs) 'activate-menubar-hook 'menu-bar-update-hook)
            (function filesets-build-menu-maybe))
   (add-hook 'kill-buffer-hook (function filesets-remove-from-ubl))
   (add-hook 'first-change-hook (function filesets-reset-filename-on-change))
@@ -2522,9 +2517,9 @@ Set up hooks, load the cache file -- if existing -- and build the menu."
 
 (provide 'filesets)
 
-;;; Local Variables:
-;;; sentence-end-double-space:t
-;;; End:
+;; Local Variables:
+;; sentence-end-double-space:t
+;; End:
 
-;;; arch-tag: 2c03f85f-c3df-4cec-b0a3-b46fd5592d70
+;; arch-tag: 2c03f85f-c3df-4cec-b0a3-b46fd5592d70
 ;;; filesets.el ends here
index 9b1f3275dfc97386392b49e26b5c2bab0e5673a8..4c8d8bea215631cfebde2bc3bb9189f0c617dba3 100644 (file)
@@ -270,7 +270,7 @@ It is a function which takes two arguments, the directory and its parent."
     ;; No analog for find-lisp?
     (insert find-lisp-line-indent "\n")
     ;; Run the find function
-    (mapcar
+    (mapc
      (function
       (lambda(file)
        (find-lisp-find-dired-insert-file
index 26830ae1c3ab4f06dd37f243d28d57f4c1b790cc..d1438dbf17e071fcc2f05e9a886f59bdc5c8da93 100644 (file)
@@ -134,7 +134,7 @@ no arguments compiles from `load-path'."
       (insert ";; Don't edit this file.  It's generated by finder.el\n\n")
       (insert ";;; Code:\n")
       (insert "\n(setq finder-package-info '(\n")
-      (mapcar
+      (mapc
        (lambda (d)
         (when (file-exists-p (directory-file-name d))
           (message "Directory %s" d)
@@ -179,12 +179,12 @@ no arguments compiles from `load-path'."
 \(provide '" (file-name-sans-extension
              (file-name-nondirectory generated-finder-keywords-file)) ")
 
-;;; Local Variables:
-;;; version-control: never
-;;; no-byte-compile: t
-;;; no-update-autoloads: t
-;;; End:
-;;; " (file-name-nondirectory generated-finder-keywords-file) " ends here\n")
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+\;;; " (file-name-nondirectory generated-finder-keywords-file) " ends here\n")
       (kill-buffer "*finder-scratch*")
       (eval-buffer) ;; So we get the new keyword list immediately
       (basic-save-buffer))))
@@ -207,7 +207,7 @@ no arguments compiles from `load-path'."
 (defun finder-mouse-face-on-line ()
   "Put `mouse-face' and `help-echo' properties on the previous line."
   (save-excursion
-    (previous-line 1)
+    (forward-line -1)
     (unless finder-help-echo
       (setq finder-help-echo
            (let* ((keys1 (where-is-internal 'finder-select
@@ -372,5 +372,5 @@ finder directory, \\[finder-exit] = quit, \\[finder-summary] = help")))
 \f
 (provide 'finder)
 
-;;; arch-tag: ec85ff49-8cb8-41f5-a63f-9131d53ce2c5
+;; arch-tag: ec85ff49-8cb8-41f5-a63f-9131d53ce2c5
 ;;; finder.el ends here
index 6400c7997945d67a8b608e770146a13fcd3f73cc..55a331a22d31ee28ca8ffa673580963bb4e921ad 100644 (file)
 ;; Should someone come up with a better solution, please let me
 ;; know.
 
+(require 'easymenu)
+
 (eval-when-compile
   (if (or (featurep 'bytecomp)
          (featurep 'byte-compile))
@@ -335,123 +337,45 @@ After that, changing the prefix key requires manipulating keymaps."
     ;; the look and feel of Follow mode.)
     (define-key mainmap [remap end-of-buffer] 'follow-end-of-buffer)
 
-    ;;
-    ;; The menu.
-    ;;
-
-    (if (not (featurep 'xemacs))
-
-       ;;
-       ;; Emacs
-       ;;
-       (let ((menumap (funcall (symbol-function 'make-sparse-keymap)
-                                "Follow"))
-             (count 0)
-             id)
-         (mapcar
-          (function
-           (lambda (item)
-             (setq id
-                   (or (cdr item)
-                       (progn
-                         (setq count (+ count 1))
-                         (intern (format "separator-%d" count)))))
-             (define-key menumap (vector id) item)
-             (or (eq id 'follow-mode)
-                 (put id 'menu-enable 'follow-mode))))
-          ;; In reverse order:
-          '(("Toggle Follow mode" . follow-mode)
-            ("--")
-            ("Recenter"           . follow-recenter)
-            ("--")
-            ("Previous Window"    . follow-previous-window)
-            ("Next Windows"       . follow-next-window)
-            ("Last Window"        . follow-last-window)
-            ("First Window"       . follow-first-window)
-            ("--")
-            ("Switch To Buffer (all windows)"
-              . follow-switch-to-buffer-all)
-            ("Switch To Buffer"   . follow-switch-to-buffer)
-            ("--")
-            ("Delete Other Windows and Split"
-              . follow-delete-other-windows-and-split)
-            ("--")
-            ("Scroll Down"        . follow-scroll-down)
-            ("Scroll Up"          . follow-scroll-up)))
-
-         ;; If there is a `tools' menu, we use it.  However, we can't add a
-         ;; minor-mode specific item to it (it's broken), so we make the
-         ;; contents ghosted when not in use, and add ourselves to the
-         ;; global map.  If no `tools' menu is present, just make a
-         ;; top-level menu visible when the mode is activated.
-
-         (let ((tools-map (lookup-key (current-global-map) [menu-bar tools]))
-               (last nil))
-           (if (sequencep tools-map)
-               (progn
-                 ;; Find the last entry in the menu and store it in `last'.
-                 (mapcar (function
-                          (lambda (x)
-                            (setq last (or (cdr-safe
-                                            (cdr-safe
-                                             (cdr-safe x)))
-                                           last))))
-                         tools-map)
-                 (if last
-                     (progn
-                       (funcall (symbol-function 'define-key-after)
-                                 tools-map [separator-follow] '("--") last)
-                       (funcall (symbol-function 'define-key-after)
-                                tools-map [follow] (cons "Follow" menumap)
-                                'separator-follow))
-                   ;; Didn't find the last item, Adding to the top of
-                   ;; tools.  (This will probably never happend...)
-                   (define-key (current-global-map) [menu-bar tools follow]
-                     (cons "Follow" menumap))))
-             ;; No tools menu, add "Follow" to the menubar.
-             (define-key mainmap [menu-bar follow]
-               (cons "Follow" menumap)))))
-
-      ;;
-      ;; XEmacs.
-      ;;
-
-      ;; place the menu in the `Tools' menu.
-      (let ((menu '("Follow"
-                   :filter follow-menu-filter
-                   ["Scroll Up" follow-scroll-up t]
-                   ["Scroll Down" follow-scroll-down t]
-                   ["Delete Other Windows and Split"
-                    follow-delete-other-windows-and-split t]
-                   ["Switch To Buffer" follow-switch-to-buffer t]
-                   ["Switch To Buffer (all windows)"
-                    follow-switch-to-buffer-all t]
-                   ["First Window" follow-first-window t]
-                   ["Last Window" follow-last-window t]
-                   ["Next Windows" follow-next-window t]
-                   ["Previous Window" follow-previous-window t]
-                   ["Recenter" follow-recenter t]
-                   ["Deactivate" follow-mode t])))
-
-       ;; Why not just `(set-buffer-menubar current-menubar)'?  The
-       ;; question is a very good question.  The reason is that under
-       ;; Emacs, neither `set-buffer-menubar' nor
-       ;; `current-menubar' is defined, hence the byte-compiler will
-       ;; warn.
-       (funcall (symbol-function 'set-buffer-menubar)
-                (symbol-value 'current-menubar))
-       (funcall (symbol-function 'add-submenu) '("Tools") menu))
-
-      ;; When the mode is not activated, only one item is visible:
-      ;; "Activate".
-      (defun follow-menu-filter (menu)
-       (if follow-mode
-           menu
-         '(["Activate          " follow-mode t]))))
-
     mainmap)
   "Minor mode keymap for Follow mode.")
 
+;; When the mode is not activated, only one item is visible to activate
+;; the mode.
+(defun follow-menu-filter (menu)
+  (if (bound-and-true-p follow-mode)
+      menu
+    '(["Follow mode"   follow-mode
+       :style toggle :selected follow-mode])))
+
+;; If there is a `tools' menu, we use it.  However, we can't add a
+;; minor-mode specific item to it (it's broken), so we make the
+;; contents ghosted when not in use, and add ourselves to the
+;; global map.
+(easy-menu-add-item nil '("Tools")
+  '("Follow"
+    ;; The Emacs code used to just grey out operations when follow-mode was
+    ;; not enabled, whereas the XEmacs code used to remove it altogether.
+    ;; Not sure which is preferable, but clearly the preference should not
+    ;; depend on the flavor.
+    :filter follow-menu-filter
+    ["Scroll Up"       follow-scroll-up        follow-mode]
+    ["Scroll Down"     follow-scroll-down      follow-mode]
+    "--"
+    ["Delete Other Windows and Split" follow-delete-other-windows-and-split follow-mode]
+    "--"
+    ["Switch To Buffer"        follow-switch-to-buffer follow-mode]
+    ["Switch To Buffer (all windows)" follow-switch-to-buffer-all follow-mode]
+    "--"
+    ["First Window"    follow-first-window     follow-mode]
+    ["Last Window"     follow-last-window      follow-mode]
+    ["Next Window"     follow-next-window      follow-mode]
+    ["Previous Window" follow-previous-window  follow-mode]
+    "--"
+    ["Recenter"                follow-recenter         follow-mode]
+    "--"
+    ["Follow mode"     follow-mode :style toggle :selected follow-mode]))
+
 ;;}}}
 
 (defcustom follow-mode-line-text " Follow"
@@ -552,14 +476,12 @@ Used by `follow-window-size-change'.")
 ;;;###autoload
 (defun turn-on-follow-mode ()
   "Turn on Follow mode.  Please see the function `follow-mode'."
-  (interactive)
   (follow-mode 1))
 
 
 ;;;###autoload
 (defun turn-off-follow-mode ()
   "Turn off Follow mode.  Please see the function `follow-mode'."
-  (interactive)
   (follow-mode -1))
 
 (put 'follow-mode 'permanent-local t)
@@ -908,7 +830,7 @@ of the way from the true end."
   "Return all windows displaying the same buffer as the TESTWIN.
 The list contains only windows displayed in the same frame as TESTWIN.
 If TESTWIN is nil the selected window is used."
-  (or (and testwin (window-live-p testwin))
+  (or (window-live-p testwin)
       (setq testwin (selected-window)))
   (let* ((top (frame-first-window (window-frame testwin)))
         (win top)
@@ -1898,17 +1820,14 @@ would interfere with some other package.  If this happens, please
 report this using the `report-emacs-bug' function."
   (interactive)
   (follow-tidy-process-filter-alist)
-  (let ((list (process-list)))
-    (while list
-      (if (eq (follow-call-process-filter (car list)) 'follow-generic-filter)
-         (progn
-           (follow-call-set-process-filter
-            (car list)
-            (cdr-safe (assq (car list) follow-process-filter-alist)))
-           (setq follow-process-filter-alist
-                 (delq (assq (car list) follow-process-filter-alist)
-                       follow-process-filter-alist))))
-      (setq list (cdr list))))
+  (dolist (process (process-list))
+    (when (eq (follow-call-process-filter process) 'follow-generic-filter)
+      (follow-call-set-process-filter
+       process
+       (cdr-safe (assq process follow-process-filter-alist)))
+      (setq follow-process-filter-alist
+           (delq (assq process follow-process-filter-alist)
+                 follow-process-filter-alist))))
   (setq follow-intercept-processes nil))
 
 ;;}}}
@@ -1964,7 +1883,7 @@ report this using the `report-emacs-bug' function."
     ;; If we're in follow mode, do our stuff.  Select a new window and
     ;; redisplay.  (Actually, it is redundant to check `buf', but I
     ;; feel it's more correct.)
-    (if (and buf win (window-live-p win))
+    (if (and buf (window-live-p win))
        (progn
          (set-buffer buf)
          (if (and (boundp 'follow-mode) follow-mode)
@@ -2105,12 +2024,12 @@ report this using the `report-emacs-bug' function."
                      (setq windows (follow-all-followers win))
                      (if (memq orig-window windows)
                          (progn
-                           ;; Make sure we're redrawing around the
-                           ;; selected window.
-                           ;;
-                           ;; We must be really careful not to do this
-                           ;; when we are (indirectly) called by
-                           ;; `post-command-hook'.
+                            ;; Make sure we're redrawing around the
+                            ;; selected window.
+                            ;;
+                            ;; We must be really careful not to do this
+                            ;; when we are (indirectly) called by
+                            ;; `post-command-hook'.
                            (select-window orig-window)
                            (follow-post-command-hook)
                            (setq orig-window (selected-window)))
index 6bc5fd8716f0352f29471da6a539ca59bb793f5f..16f9730b1d1438db77cd629ca1854daad7d84973 100644 (file)
@@ -2239,7 +2239,7 @@ other modes in which C preprocessor directives are used. e.g. `asm-mode' and
                 "with-current-buffer" "with-electric-help"
                 "with-local-quit" "with-no-warnings"
                 "with-output-to-string" "with-output-to-temp-buffer"
-                "with-selected-window" "with-syntax-table"
+                "with-selected-window" "with-selected-frame" "with-syntax-table"
                 "with-temp-buffer" "with-temp-file" "with-temp-message"
                 "with-timeout" "with-timeout-handler") t)
          "\\>")
@@ -2287,7 +2287,7 @@ other modes in which C preprocessor directives are used. e.g. `asm-mode' and
             ;; that do not occur in strings.  The associated regexp matches one
             ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'.  `\\\\' has been included to
             ;; avoid highlighting, for example, `\\(' in `\\\\('.
-            (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?:\\)?\\|[|)]\\)\\)" bound t)
+            (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t)
               (unless (match-beginning 2)
                 (let ((face (get-text-property (1- (point)) 'face)))
                   (when (or (and (listp face)
index d029e3d4683ab141033b77c6a2b0180dbc7c93d5..6e0abd7724e9af417684390ac023bc19367bc906 100644 (file)
@@ -145,7 +145,7 @@ MODE-FN, if specified, is called when visiting a file with that format.
          that this would turn on some minor mode.
 
 PRESERVE, if non-nil, means that `format-write-file' should not remove
-          this format from `buffer-file-formats'.")
+          this format from `buffer-file-format'.")
 
 ;;; Basic Functions (called from Lisp)
 
@@ -429,13 +429,34 @@ a list (ABSOLUTE-FILE-NAME SIZE)."
          (fmt (format-read (format "Read file `%s' in format: "
                                    (file-name-nondirectory file)))))
      (list file fmt)))
-  (let (value size)
-    (let ((format-alist nil))
-      (setq value (insert-file-contents filename nil beg end))
-      (setq size (nth 1 value)))
-    (if format
-       (setq size (format-decode format size)
-             value (list (car value) size)))
+  (let (value size old-undo)
+    ;; Record only one undo entry for the insertion.  Inhibit point-motion and
+    ;; modification hooks as with `insert-file-contents'.
+    (let ((inhibit-point-motion-hooks t)
+         (inhibit-modification-hooks t))
+      ;; Don't bind `buffer-undo-list' to t here to assert that
+      ;; `insert-file-contents' may record whether the buffer was unmodified
+      ;; before.
+      (let ((format-alist nil))
+       (setq value (insert-file-contents filename nil beg end))
+       (setq size (nth 1 value)))
+      (when (consp buffer-undo-list)
+       (let ((head (car buffer-undo-list)))
+         (when (and (consp head)
+                    (equal (car head) (point))
+                    (equal (cdr head) (+ (point) size)))
+           ;; Remove first entry from `buffer-undo-list', we shall insert
+           ;; another one below.
+           (setq old-undo (cdr buffer-undo-list)))))
+      (when format
+       (let ((buffer-undo-list t))
+         (setq size (format-decode format size)
+               value (list (car value) size)))
+       (unless (eq buffer-undo-list t)
+         (setq buffer-undo-list
+               (cons (cons (point) (+ (point) size)) old-undo)))))
+    (unless inhibit-modification-hooks
+      (run-hook-with-args 'after-change-functions (point) (+ (point) size) 0))
     value))
 
 (defun format-read (&optional prompt)
index cbdfa45d4f7775f5baff6c82c282403d187ac778..1c11829475bd81e08920dcc74b76c675bbb0f412 100644 (file)
 
 ;;; Code:
 
-(defvar frame-creation-function nil
-  "Window-system dependent function to call to create a new frame.
-The window system startup file should set this to its frame creation
-function, which should take an alist of parameters as its argument.")
+(defvar frame-creation-function-alist
+  (list (cons nil
+             (if (fboundp 'tty-create-frame-with-faces)
+                 'tty-create-frame-with-faces
+                (lambda (parameters)
+                  (error "Can't create multiple frames without a window system")))))
+  "Alist of window-system dependent functions to call to create a new frame.
+The window system startup file should add its frame creation
+function to this list, which should take an alist of parameters
+as its argument.")
+
+(defvar window-system-default-frame-alist nil
+  "Alist of window-system dependent default frame parameters.
+You can set this in your `.emacs' file; for example,
+
+    ;; Disable menubar and toolbar on the console, but enable them under X.
+    (setq window-system-default-frame-alist
+          '((x (menu-bar-lines . 1) (tool-bar-lines . 1))
+            (nil (menu-bar-lines . 0) (tool-bar-lines . 0))))
+
+Parameters specified here supersede the values given in `default-frame-alist'.")
 
 ;; The initial value given here used to ask for a minibuffer.
 ;; But that's not necessary, because the default is to have one.
@@ -189,7 +206,9 @@ Pass it BUFFER as first arg, and (cdr ARGS) gives the rest of the args."
 (defun frame-initialize ()
   "Create an initial frame if necessary."
   ;; Are we actually running under a window system at all?
-  (if (and window-system (not noninteractive) (not (eq window-system 'pc)))
+  (if (and initial-window-system
+          (not noninteractive)
+          (not (eq initial-window-system 'pc)))
       (progn
        ;; Turn on special-display processing only if there's a window system.
        (setq special-display-function 'special-display-popup-frame)
@@ -206,6 +225,9 @@ Pass it BUFFER as first arg, and (cdr ARGS) gives the rest of the args."
                  (setq frame-initial-frame-alist
                        (cons '(horizontal-scroll-bars . t)
                              frame-initial-frame-alist)))
+             (setq frame-initial-frame-alist
+                   (cons (cons 'window-system initial-window-system)
+                         frame-initial-frame-alist))
              (setq default-minibuffer-frame
                    (setq frame-initial-frame
                          (make-frame frame-initial-frame-alist)))
@@ -215,21 +237,13 @@ Pass it BUFFER as first arg, and (cdr ARGS) gives the rest of the args."
              ;; because that would override explicit user resizing.
              (setq initial-frame-alist
                    (frame-remove-geometry-params initial-frame-alist))))
+       ;; Copy the environment of the Emacs process into the new frame.
+       (set-frame-parameter frame-initial-frame 'environment
+                            (frame-parameter terminal-frame 'environment))
        ;; At this point, we know that we have a frame open, so we
        ;; can delete the terminal frame.
        (delete-frame terminal-frame)
-       (setq terminal-frame nil))
-
-    ;; No, we're not running a window system.  Use make-terminal-frame if
-    ;; we support that feature, otherwise arrange to cause errors.
-    (or (eq window-system 'pc)
-       (setq frame-creation-function
-             (if (fboundp 'tty-create-frame-with-faces)
-                 'tty-create-frame-with-faces
-               (function
-                (lambda (parameters)
-                  (error
-                   "Can't create multiple frames without a window system"))))))))
+       (setq terminal-frame nil))))
 
 (defvar frame-notice-user-settings t
   "Non-nil means function `frame-notice-user-settings' wasn't run yet.")
@@ -239,7 +253,9 @@ Pass it BUFFER as first arg, and (cdr ARGS) gives the rest of the args."
 ;; information to which we must react; do what needs to be done.
 (defun frame-notice-user-settings ()
   "Act on user's init file settings of frame parameters.
-React to settings of `default-frame-alist', `initial-frame-alist' there."
+React to settings of `initial-frame-alist',
+`window-system-default-frame-alist' and `default-frame-alist'
+there (in decreasing order of priority)."
   ;; Make menu-bar-mode and default-frame-alist consistent.
   (when (boundp 'menu-bar-mode)
     (let ((default (assq 'menu-bar-lines default-frame-alist)))
@@ -254,20 +270,30 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
   ;; parameter in default-frame-alist in a dumped Emacs, which is not
   ;; what we want.
   (when (and (boundp 'tool-bar-mode)
-            (not noninteractive))
+            (not noninteractive))
     (let ((default (assq 'tool-bar-lines default-frame-alist)))
       (if default
-         (setq tool-bar-mode (not (eq (cdr default) 0)))
-       (setq default-frame-alist
-             (cons (cons 'tool-bar-lines (if tool-bar-mode 1 0))
-                   default-frame-alist)))))
+         (setq tool-bar-mode (not (eq (cdr default) 0)))
+       ;; If Emacs was started on a tty, changing default-frame-alist
+       ;; would disable the toolbar on X frames created later.  We
+       ;; want to keep the default of showing a toolbar under X even
+       ;; in this case.
+       ;;
+       ;; If the user explicitly called `tool-bar-mode' in .emacs,
+       ;; then default-frame-alist is already changed anyway.
+       (when initial-window-system
+         (setq default-frame-alist
+               (cons (cons 'tool-bar-lines (if tool-bar-mode 1 0))
+                     default-frame-alist))))))
 
   ;; Creating and deleting frames may shift the selected frame around,
   ;; and thus the current buffer.  Protect against that.  We don't
   ;; want to use save-excursion here, because that may also try to set
   ;; the buffer of the selected window, which fails when the selected
   ;; window is the minibuffer.
-  (let ((old-buffer (current-buffer)))
+  (let ((old-buffer (current-buffer))
+       (window-system-frame-alist (cdr (assq initial-window-system
+                                             window-system-default-frame-alist))))
 
     (when (and frame-notice-user-settings
               (null frame-initial-frame))
@@ -279,8 +305,9 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
        ;; Can't modify the minibuffer parameter, so don't try.
        (setq parms (delq (assq 'minibuffer parms) parms))
        (modify-frame-parameters nil
-                                (if (null window-system)
+                                (if (null initial-window-system)
                                     (append initial-frame-alist
+                                            window-system-frame-alist
                                             default-frame-alist
                                             parms
                                             nil)
@@ -288,7 +315,7 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
                                   ;; default-frame-alist were already
                                   ;; applied in pc-win.el.
                                   parms))
-       (if (null window-system) ;; MS-DOS does this differently in pc-win.el
+       (if (null initial-window-system) ;; MS-DOS does this differently in pc-win.el
            (let ((newparms (frame-parameters))
                  (frame (selected-frame)))
              (tty-handle-reverse-video frame newparms)
@@ -310,6 +337,7 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
       ;; switch `tool-bar-mode' off.
       (when (display-graphic-p)
        (let ((tool-bar-lines (or (assq 'tool-bar-lines initial-frame-alist)
+                                 (assq 'tool-bar-lines window-system-frame-alist)
                                  (assq 'tool-bar-lines default-frame-alist))))
          (when (and tool-bar-originally-present
                      (or (null tool-bar-lines)
@@ -370,6 +398,7 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
       ;; create here, so that its new value, gleaned from the user's
       ;; .emacs file, will be applied to the existing screen.
       (if (not (eq (cdr (or (assq 'minibuffer initial-frame-alist)
+                           (assq 'minibuffer window-system-frame-alist)
                            (assq 'minibuffer default-frame-alist)
                            '(minibuffer . t)))
                   t))
@@ -389,6 +418,7 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
                (setq parms (delq (assq 'name parms) parms)))
 
            (setq parms (append initial-frame-alist
+                               window-system-frame-alist
                                default-frame-alist
                                parms
                                nil))
@@ -424,12 +454,12 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
            ;; variable must be handled similarly.
            (let ((users-of-initial
                   (filtered-frame-list
-                   (function (lambda (frame)
-                               (and (not (eq frame frame-initial-frame))
-                                    (eq (window-frame
-                                         (minibuffer-window frame))
-                                        frame-initial-frame)))))))
-             (if (or users-of-initial
+                    (lambda (frame)
+                      (and (not (eq frame frame-initial-frame))
+                           (eq (window-frame
+                                (minibuffer-window frame))
+                               frame-initial-frame))))))
+              (if (or users-of-initial
                      (eq default-minibuffer-frame frame-initial-frame))
 
                  ;; Choose an appropriate frame.  Prefer frames which
@@ -437,11 +467,10 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
                  (let* ((new-surrogate
                          (car
                           (or (filtered-frame-list
-                               (function
-                                (lambda (frame)
-                                  (eq (cdr (assq 'minibuffer
-                                                 (frame-parameters frame)))
-                                      'only))))
+                                (lambda (frame)
+                                  (eq (cdr (assq 'minibuffer
+                                                 (frame-parameters frame)))
+                                      'only)))
                               (minibuffer-frame-list))))
                         (new-minibuffer (minibuffer-window new-surrogate)))
 
@@ -450,14 +479,11 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
 
                    ;; Wean the frames using frame-initial-frame as
                    ;; their minibuffer frame.
-                   (mapcar
-                    (function
-                     (lambda (frame)
-                       (modify-frame-parameters
-                        frame (list (cons 'minibuffer new-minibuffer)))))
-                    users-of-initial))))
-
-          ;; Redirect events enqueued at this frame to the new frame.
+                   (dolist (frame users-of-initial)
+                      (modify-frame-parameters
+                       frame (list (cons 'minibuffer new-minibuffer)))))))
+
+            ;; Redirect events enqueued at this frame to the new frame.
            ;; Is this a good idea?
            (redirect-frame-focus frame-initial-frame new)
 
@@ -468,6 +494,7 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
        ;; the new parameters.
        (let (newparms allparms tail)
          (setq allparms (append initial-frame-alist
+                                window-system-frame-alist
                                 default-frame-alist nil))
          (if (assq 'height frame-initial-geometry-arguments)
              (setq allparms (assq-delete-all 'height allparms)))
@@ -524,19 +551,25 @@ React to settings of `default-frame-alist', `initial-frame-alist' there."
 (defun modify-all-frames-parameters (alist)
   "Modify all current and future frames' parameters according to ALIST.
 This changes `default-frame-alist' and possibly `initial-frame-alist'.
+Furthermore, this function removes all parameters in ALIST from
+`window-system-default-frame-alist'.
 See help of `modify-frame-parameters' for more information."
-  (let (element)                       ;; temp
-    (dolist (frame (frame-list))
-      (modify-frame-parameters frame alist))
-
-    (dolist (pair alist)               ;; conses to add/replace
-      ;; initial-frame-alist needs setting only when
-      ;; frame-notice-user-settings is true
-      (and frame-notice-user-settings
-          (setq element (assoc (car pair) initial-frame-alist))
-          (setq initial-frame-alist (delq element initial-frame-alist)))
-      (and (setq element (assoc (car pair) default-frame-alist))
-          (setq default-frame-alist (delq element default-frame-alist)))))
+  (dolist (frame (frame-list))
+    (modify-frame-parameters frame alist))
+
+  (dolist (pair alist) ;; conses to add/replace
+    ;; initial-frame-alist needs setting only when
+    ;; frame-notice-user-settings is true.
+    (and frame-notice-user-settings
+        (setq initial-frame-alist
+              (assq-delete-all (car pair) initial-frame-alist)))
+    (setq default-frame-alist
+         (assq-delete-all (car pair) default-frame-alist))
+    ;; Remove any similar settings from the window-system specific
+    ;; parameters---they would override default-frame-alist.
+    (dolist (w window-system-default-frame-alist)
+      (setcdr w (assq-delete-all (car pair) (cdr w)))))
+
   (and frame-notice-user-settings
        (setq initial-frame-alist (append initial-frame-alist alist)))
   (setq default-frame-alist (append default-frame-alist alist)))
@@ -567,12 +600,58 @@ is not considered (see `next-frame')."
   (select-frame-set-input-focus (selected-frame)))
 
 (defun make-frame-on-display (display &optional parameters)
-  "Make a frame on display DISPLAY.
+  "Make a frame on display DISPLAY.
 The optional second argument PARAMETERS specifies additional frame parameters."
   (interactive "sMake frame on display: ")
   (or (string-match "\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" display)
       (error "Invalid display, not HOST:SERVER or HOST:SERVER.SCREEN"))
-  (make-frame (cons (cons 'display display) parameters)))
+  (when (and (boundp 'x-initialized) (not x-initialized))
+    (setq x-display-name display)
+    (x-initialize-window-system))
+  (make-frame `((window-system . x) (display . ,display) . ,parameters)))
+
+(defun make-frame-on-tty (tty type &optional parameters)
+  "Make a frame on terminal device TTY.
+TTY should be the file name of the tty device to use.  TYPE
+should be the terminal type string of TTY, for example \"xterm\"
+or \"vt100\".  The optional third argument PARAMETERS specifies
+additional frame parameters."
+  (interactive "fOpen frame on tty device: \nsTerminal type of %s: ")
+  (unless tty
+    (error "Invalid terminal device"))
+  (unless type
+    (error "Invalid terminal type"))
+  (make-frame `((window-system . nil) (tty . ,tty) (tty-type . ,type) . ,parameters)))
+
+(defun close-display-connection (display)
+  "Close the connection to a display, deleting all its associated frames.
+For DISPLAY, specify either a frame or a display name (a string).
+If DISPLAY is nil, that stands for the selected frame's display."
+  (interactive
+   (list
+    (let* ((default (frame-parameter nil 'display))
+           (display (completing-read
+                     (format "Close display (default %s): " default)
+                     (delete-dups
+                      (mapcar (lambda (frame)
+                                (frame-parameter frame 'display))
+                              (frame-list)))
+                     nil t nil nil
+                     default)))
+      (if (zerop (length display)) default display))))
+  (let ((frames (delq nil
+                      (mapcar (lambda (frame)
+                                (if (equal display
+                                           (frame-parameter frame 'display))
+                                    frame))
+                              (frame-list)))))
+    (if (and (consp frames)
+             (not (y-or-n-p (if (cdr frames)
+                                (format "Delete %s frames? " (length frames))
+                              (format "Delete %s ? " (car frames))))))
+        (error "Abort!")
+      (mapc 'delete-frame frames)
+      (x-close-connection display))))
 
 (defun make-frame-command ()
   "Make a new frame, and select it if the terminal displays only one frame."
@@ -594,6 +673,10 @@ The functions are run with one arg, the newly created frame.")
 ;; Alias, kept temporarily.
 (define-obsolete-function-alias 'new-frame 'make-frame "22.1")
 
+(defvar frame-inherited-parameters '()
+  ;; FIXME: Shouldn't we add `font' here as well?
+  "Parameters `make-frame' copies from the `selected-frame' to the new frame.")
+
 (defun make-frame (&optional parameters)
   "Return a newly created frame displaying the current buffer.
 Optional argument PARAMETERS is an alist of parameters for the new frame.
@@ -611,7 +694,12 @@ You cannot specify either `width' or `height', you must use neither or both.
  (minibuffer . only)   The frame should contain only a minibuffer.
  (minibuffer . WINDOW) The frame should use WINDOW as its minibuffer window.
 
-Before the frame is created (via `frame-creation-function'), functions on the
+ (window-system . nil) The frame should be displayed on a terminal device.
+ (window-system . x)   The frame should be displayed in an X window.
+
+ (terminal . ID)          The frame should use the terminal identified by ID.
+
+Before the frame is created (via `frame-creation-function-alist'), functions on the
 hook `before-make-frame-hook' are run.  After the frame is created, functions
 on `after-make-frame-functions' are run with one arg, the newly created frame.
 
@@ -621,8 +709,29 @@ window system may select the new frame for its own reasons, for
 instance if the frame appears under the mouse pointer and your
 setup is for focus to follow the pointer."
   (interactive)
-  (run-hooks 'before-make-frame-hook)
-  (let ((frame (funcall frame-creation-function parameters)))
+  (let* ((w (cond
+            ((assq 'terminal parameters)
+             (let ((type (terminal-live-p (cdr (assq 'terminal parameters)))))
+               (cond
+                ((eq type t) nil)
+                ((eq type nil) (error "Terminal %s does not exist" (cdr (assq 'terminal parameters))))
+                (t type))))
+            ((assq 'window-system parameters)
+             (cdr (assq 'window-system parameters)))
+            (t window-system)))
+        (frame-creation-function (cdr (assq w frame-creation-function-alist)))
+        (oldframe (selected-frame))
+        frame)
+    (unless frame-creation-function
+      (error "Don't know how to create a frame on window system %s" w))
+    (run-hooks 'before-make-frame-hook)
+    (setq frame (funcall frame-creation-function (append parameters (cdr (assq w window-system-default-frame-alist)))))
+    (normal-erase-is-backspace-setup-frame frame)
+    ;; Inherit the original frame's parameters.
+    (dolist (param frame-inherited-parameters)
+      (unless (assq param parameters)   ;Overridden by explicit parameters.
+        (let ((val (frame-parameter oldframe param)))
+          (when val (set-frame-parameter frame param val)))))
     (run-hook-with-args 'after-make-frame-functions frame)
     frame))
 
@@ -639,26 +748,51 @@ setup is for focus to follow the pointer."
 (defun minibuffer-frame-list ()
   "Return a list of all frames with their own minibuffers."
   (filtered-frame-list
-   (function (lambda (frame)
-              (eq frame (window-frame (minibuffer-window frame)))))))
-
-(defun frames-on-display-list (&optional display)
-  "Return a list of all frames on DISPLAY.
-DISPLAY is a name of a display, a string of the form HOST:SERVER.SCREEN.
-If DISPLAY is omitted or nil, it defaults to the selected frame's display."
-  (let* ((display (or display (frame-parameter nil 'display)))
+   (lambda (frame)
+     (eq frame (window-frame (minibuffer-window frame))))))
+
+;; Used to be called `terminal-id' in termdev.el.
+(defun get-device-terminal (device)
+  "Return the terminal corresponding to DEVICE.
+DEVICE can be a terminal, a frame, nil (meaning the selected frame's terminal),
+the name of an X display device (HOST.SERVER.SCREEN) or a tty device file."
+  (cond
+   ((or (null device) (framep device))
+    (frame-terminal device))
+   ((stringp device)
+    (let ((f (car (filtered-frame-list
+                   (lambda (frame)
+                     (or (equal (frame-parameter frame 'display) device)
+                         (equal (frame-parameter frame 'tty) device)))))))
+      (or f (error "Display %s does not exist" device))
+      (frame-terminal f)))
+   ((terminal-live-p device) device)
+   (t
+    (error "Invalid argument %s in `get-device-terminal'" device))))
+
+(defun frames-on-display-list (&optional device)
+  "Return a list of all frames on DEVICE.
+
+DEVICE should be a terminal, a frame,
+or a name of an X display or tty (a string of the form
+HOST:SERVER.SCREEN).
+
+If DEVICE is omitted or nil, it defaults to the selected
+frame's terminal device."
+  (let* ((terminal (get-device-terminal device))
         (func #'(lambda (frame)
-                  (equal (frame-parameter frame 'display) display))))
+                  (eq (frame-terminal frame) terminal))))
     (filtered-frame-list func)))
 
-(defun framep-on-display (&optional display)
-  "Return the type of frames on DISPLAY.
-DISPLAY may be a display name or a frame.  If it is a frame, its type is
-returned.
-If DISPLAY is omitted or nil, it defaults to the selected frame's display.
-All frames on a given display are of the same type."
-  (or (framep display)
-      (framep (car (frames-on-display-list display)))))
+(defun framep-on-display (&optional terminal)
+  "Return the type of frames on TERMINAL.
+TERMINAL may be a terminal id, a display name or a frame.  If it
+is a frame, its type is returned.  If TERMINAL is omitted or nil,
+it defaults to the selected frame's terminal device.  All frames
+on a given display are of the same type."
+  (or (terminal-live-p terminal)
+      (framep terminal)
+      (framep (car (frames-on-display-list terminal)))))
 
 (defun frame-remove-geometry-params (param-list)
   "Return the parameter list PARAM-LIST, but with geometry specs removed.
@@ -686,12 +820,10 @@ the user during startup."
     (select-frame frame)
     (raise-frame frame)
     ;; Ensure, if possible, that frame gets input focus.
-    (cond ((memq window-system '(x mac))
-          (x-focus-frame frame))
-         ((eq window-system 'w32)
-          (w32-focus-frame frame)))
-    (cond (focus-follows-mouse
-          (set-mouse-position (selected-frame) (1- (frame-width)) 0))))
+    (when (memq (window-system frame) '(x mac w32))
+      (x-focus-frame frame))
+    (when focus-follows-mouse
+      (set-mouse-position (selected-frame) (1- (frame-width)) 0)))
 
 (defun other-frame (arg)
   "Select the ARGth different visible frame on current display, and raise it.
@@ -725,6 +857,21 @@ Otherwise, that variable should be nil."
       (iconify-frame)
     (make-frame-visible)))
 
+(defun suspend-frame ()
+  "Do whatever is right to suspend the current frame.
+Calls `suspend-emacs' if invoked from the controlling tty device,
+`suspend-tty' from a secondary tty device, and
+`iconify-or-deiconify-frame' from an X frame."
+  (interactive)
+  (let ((type (framep (selected-frame))))
+    (cond
+     ((memq type '(x w32)) (iconify-or-deiconify-frame))
+     ((eq type t)
+      (if (controlling-tty-p)
+         (suspend-emacs)
+       (suspend-tty)))
+     (t (suspend-emacs)))))
+
 (defun make-frame-names-alist ()
   (let* ((current-frame (selected-frame))
         (falist
@@ -758,10 +905,8 @@ If there is no frame by that name, signal an error."
     (raise-frame frame)
     (select-frame frame)
     ;; Ensure, if possible, that frame gets input focus.
-    (cond ((memq window-system '(x mac))
-          (x-focus-frame frame))
-         ((eq window-system 'w32)
-          (w32-focus-frame frame)))
+    (cond ((memq (window-system frame) '(x w32))
+          (x-focus-frame frame)))
     (when focus-follows-mouse
       (set-mouse-position frame (1- (frame-width frame)) 0))))
 \f
@@ -776,11 +921,10 @@ where
   ALIST is an association list specifying some of FRAME's parameters, and
   WINDOW-CONFIG is a window configuration object for FRAME."
   (cons 'frame-configuration
-       (mapcar (function
-                (lambda (frame)
-                  (list frame
-                        (frame-parameters frame)
-                        (current-window-configuration frame))))
+       (mapcar (lambda (frame)
+                  (list frame
+                        (frame-parameters frame)
+                        (current-window-configuration frame)))
                (frame-list))))
 
 (defun set-frame-configuration (configuration &optional nodelete)
@@ -797,36 +941,35 @@ is given and non-nil, the unwanted frames are iconified instead."
              (list 'frame-configuration-p configuration)))
   (let ((config-alist (cdr configuration))
        frames-to-delete)
-    (mapcar (function
-            (lambda (frame)
-              (let ((parameters (assq frame config-alist)))
-                (if parameters
-                    (progn
-                      (modify-frame-parameters
-                       frame
-                       ;; Since we can't set a frame's minibuffer status,
-                       ;; we might as well omit the parameter altogether.
-                       (let* ((parms (nth 1 parameters))
-                              (mini (assq 'minibuffer parms))
-                              (name (assq 'name parms))
-                              (explicit-name (cdr (assq 'explicit-name parms))))
-                         (when mini (setq parms (delq mini parms)))
-                         ;; Leave name in iff it was set explicitly.
-                         ;; This should fix the behavior reported in
-                         ;; http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01632.html
-                         (when (and name (not explicit-name))
-                           (setq parms (delq name parms)))
-                         parms))
-                      (set-window-configuration (nth 2 parameters)))
-                  (setq frames-to-delete (cons frame frames-to-delete))))))
-           (frame-list))
-    (if nodelete
-       ;; Note: making frames invisible here was tried
-       ;; but led to some strange behavior--each time the frame
-       ;; was made visible again, the window manager asked afresh
-       ;; for where to put it.
-       (mapcar 'iconify-frame frames-to-delete)
-      (mapcar 'delete-frame frames-to-delete))))
+    (dolist (frame (frame-list))
+      (let ((parameters (assq frame config-alist)))
+        (if parameters
+            (progn
+              (modify-frame-parameters
+               frame
+               ;; Since we can't set a frame's minibuffer status,
+               ;; we might as well omit the parameter altogether.
+               (let* ((parms (nth 1 parameters))
+                     (mini (assq 'minibuffer parms))
+                     (name (assq 'name parms))
+                     (explicit-name (cdr (assq 'explicit-name parms))))
+                (when mini (setq parms (delq mini parms)))
+                ;; Leave name in iff it was set explicitly.
+                ;; This should fix the behavior reported in
+                ;; http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01632.html
+                (when (and name (not explicit-name))
+                  (setq parms (delq name parms)))
+                 parms))
+              (set-window-configuration (nth 2 parameters)))
+          (setq frames-to-delete (cons frame frames-to-delete)))))
+    (mapc (if nodelete
+              ;; Note: making frames invisible here was tried
+              ;; but led to some strange behavior--each time the frame
+              ;; was made visible again, the window manager asked afresh
+              ;; for where to put it.
+              'iconify-frame
+            'delete-frame)
+          frames-to-delete)))
 \f
 ;;;; Convenience functions for accessing and interactively changing
 ;;;; frame parameters.
@@ -854,12 +997,11 @@ pixels) is kept by adjusting the numbers of the lines and columns."
   (interactive
    (let* ((completion-ignore-case t)
          (font (completing-read "Font name: "
-                        (mapcar #'list
                                 ;; x-list-fonts will fail with an error
                                 ;; if this frame doesn't support fonts.
-                                (x-list-fonts "*" nil (selected-frame)))
-                        nil nil nil nil
-                        (frame-parameter nil 'font))))
+                                (x-list-fonts "*" nil (selected-frame))
+                                 nil nil nil nil
+                                 (frame-parameter nil 'font))))
      (list font current-prefix-arg)))
   (let (fht fwd)
     (if keep-size
@@ -980,6 +1122,10 @@ bars (top, bottom, or nil)."
     (cons vert hor)))
 \f
 ;;;; Frame/display capabilities.
+(defun selected-terminal ()
+  "Return the terminal that is now selected."
+  (frame-terminal (selected-frame)))
+
 (defun display-mouse-p (&optional display)
   "Return non-nil if DISPLAY has a mouse available.
 DISPLAY can be a display name, a frame, or nil (meaning the selected
@@ -1157,7 +1303,7 @@ the question is inapplicable to a certain kind of display."
      ((eq frame-type 'pc)
       16)
      (t
-      (tty-display-color-cells)))))
+      (tty-display-color-cells display)))))
 
 (defun display-visual-class (&optional display)
   "Returns the visual class of DISPLAY.
index 3160d960ffdd5d65c24789ae18db193fc41198fd..7ea3e8a2b5d1a8027bc9b5f733153ed427ba3b29 100644 (file)
@@ -104,40 +104,13 @@ This is usually invoked when setting `fringe-mode' via customize."
 See `fringe-mode' for possible values and their effect."
   (setq fringe-mode value)
 
-  ;; Apply it to default-frame-alist.
-  (let ((parameter (assq 'left-fringe default-frame-alist)))
-    (if (consp parameter)
-       (setcdr parameter (if (consp fringe-mode)
-                             (car fringe-mode)
-                           fringe-mode))
-      (setq default-frame-alist
-           (cons (cons 'left-fringe (if (consp fringe-mode)
-                                        (car fringe-mode)
-                                      fringe-mode))
-                 default-frame-alist))))
-  (let ((parameter (assq 'right-fringe default-frame-alist)))
-    (if (consp parameter)
-       (setcdr parameter (if (consp fringe-mode)
-                             (cdr fringe-mode)
-                           fringe-mode))
-      (setq default-frame-alist
-           (cons (cons 'right-fringe (if (consp fringe-mode)
-                                         (cdr fringe-mode)
-                                       fringe-mode))
-                 default-frame-alist))))
-
-  ;; Apply it to existing frames.
-  (let ((frames (frame-list)))
-    (while frames
-      (modify-frame-parameters
-       (car frames)
-       (list (cons 'left-fringe (if (consp fringe-mode)
-                                   (car fringe-mode)
-                                 fringe-mode))
-            (cons 'right-fringe (if (consp fringe-mode)
-                                    (cdr fringe-mode)
-                                  fringe-mode))))
-      (setq frames (cdr frames)))))
+  (modify-all-frames-parameters
+   (list (cons 'left-fringe (if (consp fringe-mode)
+                               (car fringe-mode)
+                             fringe-mode))
+        (cons 'right-fringe (if (consp fringe-mode)
+                                (cdr fringe-mode)
+                              fringe-mode)))))
 
 ;; For initialization of fringe-mode, take account of changes
 ;; made explicitly to default-frame-alist.
index 1def50da1e37bf04efe21d4f46746f96205661e5..89d9d75c60ec1f872908b292052e87511968a550 100644 (file)
@@ -1,3 +1,19 @@
+2007-10-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * sieve-manage.el (sieve-manage-interactive-login): Doc fix.
+       (sieve-manage-open): Use `mapc' instead of `mapcar'.
+
+2007-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * gnus-uu.el (gnus-uu-reginize-string, gnus-uu-expand-numbers):
+       Don't hardcode point-min==1.
+
+2007-09-30  David Kastrup  <dak@gnu.org>
+
+       * gnus-art.el (gnus-article-reply-with-original)
+       (gnus-article-followup-with-original): When `transient-mark-mode' is
+       off, refrain from active-region behavior for followups.
+
 2007-10-08  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * mm-util.el (mm-charset-synonym-alist): Alias gbk to cp936.
index 696222e0043bf9461127c6fa0ac4fa3a7362d240..a02a7d153bb478e4f75885a79300c0eb10eb0659 100644 (file)
@@ -5749,7 +5749,7 @@ the entire article will be yanked."
   (interactive "P")
   (let ((article (cdr gnus-article-current))
        contents)
-    (if (not (gnus-mark-active-p))
+    (if (not (gnus-region-active-p))
        (with-current-buffer gnus-summary-buffer
          (gnus-summary-reply (list (list article)) wide))
       (setq contents (buffer-substring (point) (mark t)))
@@ -5768,7 +5768,7 @@ the entire article will be yanked."
   (interactive)
   (let ((article (cdr gnus-article-current))
        contents)
-      (if (not (gnus-mark-active-p))
+      (if (not (gnus-region-active-p))
          (with-current-buffer gnus-summary-buffer
            (gnus-summary-followup (list (list article))))
        (setq contents (buffer-substring (point) (mark t)))
index 94fb854c96009a77eca8f24b3050751a8d54a6dd..86253f0deefd9b77650d48e88a97b4be52d7826f 100644 (file)
@@ -1089,7 +1089,7 @@ When called interactively, prompt for REGEXP."
                                nil t)
            (replace-match "\\1[0-9]+\\2[0-9]+" t nil nil nil))))
 
-    (goto-char 1)
+    (goto-char (point-min))
     (while (re-search-forward "[ \t]+" nil t)
       (replace-match "[ \t]+" t t))
 
@@ -1190,7 +1190,7 @@ When called interactively, prompt for REGEXP."
             (format "%06d"
                     (string-to-number (buffer-substring
                                     (match-beginning 0) (match-end 0)))))))
-       (setq string (buffer-substring 1 (point-max)))
+       (setq string (buffer-substring (point-min) (point-max)))
        (setcar (car string-list) string)
        (setq string-list (cdr string-list))))
     out-list))
index e33e5d87ca6290a4d4f25ef33dbb27f3693794a6..2f0e54a234b634255b947f8e7648525eb40b883a 100644 (file)
@@ -183,7 +183,7 @@ Valid states are `closed', `initial', `nonauth', and `auth'.")
 (defun sieve-manage-interactive-login (buffer loginfunc)
   "Login to server in BUFFER.
 LOGINFUNC is passed a username and a password, it should return t if
-it where sucessful authenticating itself to the server, nil otherwise.
+it was successful authenticating itself to the server, nil otherwise.
 Returns t if login was successful, nil otherwise."
   (with-current-buffer buffer
     (make-local-variable 'sieve-manage-username)
@@ -372,7 +372,7 @@ Optional variable BUFFER is buffer (buffer, or string naming buffer)
 to work in."
   (setq buffer (or buffer (format " *sieve* %s:%d" server (or port 2000))))
   (with-current-buffer (get-buffer-create buffer)
-    (mapcar 'make-local-variable sieve-manage-local-variables)
+    (mapc 'make-local-variable sieve-manage-local-variables)
     (sieve-manage-disable-multibyte)
     (buffer-disable-undo)
     (setq sieve-manage-server (or server sieve-manage-server))
index d84a861a0191f368642e2639c6bc118244dfc504..bf8d5f9a209a6869dd27016a55fc4a809054420c 100644 (file)
@@ -232,10 +232,34 @@ face (according to `face-differs-from-default-p')."
              libname)
          file))))
 
+(defun find-source-lisp-file (file-name)
+  (let* ((elc-file (locate-file (concat file-name
+                                (if (string-match "\\.el" file-name)
+                                    "c"
+                                  ".elc"))
+                                load-path))
+        (str (if (and elc-file (file-readable-p elc-file))
+                 (with-temp-buffer 
+                   (insert-file-contents-literally elc-file nil 0 256)
+                   (buffer-string))))
+        (src-file (and str
+                       (string-match ";;; from file \\(.*\\.el\\)" str)
+                       (match-string 1 str))))
+    (if (and src-file (file-readable-p src-file))
+       src-file
+      file-name)))
+
 ;;;###autoload
 (defun describe-function-1 (function)
-  (let* ((def (if (symbolp function)
-                 (symbol-function function)
+  (let* ((advised (and (featurep 'advice) (ad-get-advice-info function)))
+        ;; If the function is advised, get the symbol that has the
+        ;; real definition.
+        (real-function
+         (if advised (cdr (assq 'origname advised))
+           function))
+        ;; Get the real definition.
+        (def (if (symbolp real-function)
+                 (symbol-function real-function)
                function))
         file-name string
         (beg (if (commandp def) "an interactive " "a ")))
@@ -309,11 +333,15 @@ face (according to `face-differs-from-default-p')."
       ;; but that's completely wrong when the user used load-file.
       (princ (if (eq file-name 'C-source) "C source code" file-name))
       (princ "'")
+      ;; See if lisp files are present where they where installed from.
+      (if (not (eq file-name 'C-source))
+         (setq file-name (find-source-lisp-file file-name)))
+
       ;; Make a hyperlink to the library.
       (with-current-buffer standard-output
         (save-excursion
          (re-search-backward "`\\([^`']+\\)'" nil t)
-         (help-xref-button 1 'help-function-def function file-name))))
+         (help-xref-button 1 'help-function-def real-function file-name))))
     (princ ".")
     (terpri)
     (when (commandp function)
@@ -362,8 +390,9 @@ face (according to `face-differs-from-default-p')."
                         ((listp arglist)
                          (format "%S" (help-make-usage function arglist)))
                         ((stringp arglist) arglist)
-                        ;; Maybe the arglist is in the docstring of the alias.
-                        ((let ((fun function))
+                        ;; Maybe the arglist is in the docstring of a symbol
+                       ;; this one is aliased to.
+                        ((let ((fun real-function))
                            (while (and (symbolp fun)
                                        (setq fun (symbol-function fun))
                                        (not (setq usage (help-split-fundoc
@@ -425,10 +454,11 @@ If ANY-SYMBOL is non-nil, don't insist the symbol be bound."
       0))
 
 ;;;###autoload
-(defun describe-variable (variable &optional buffer)
+(defun describe-variable (variable &optional buffer frame)
   "Display the full documentation of VARIABLE (a symbol).
 Returns the documentation as a string, also.
-If VARIABLE has a buffer-local value in BUFFER (default to the current buffer),
+If VARIABLE has a buffer-local value in BUFFER or FRAME
+\(default to the current buffer and current frame),
 it is displayed along with the global value."
   (interactive
    (let ((v (variable-at-point))
@@ -447,14 +477,19 @@ it is displayed along with the global value."
      (list (if (equal val "")
               v (intern val)))))
   (unless (buffer-live-p buffer) (setq buffer (current-buffer)))
+  (unless (frame-live-p frame) (setq frame (selected-frame)))
   (if (not (symbolp variable))
       (message "You did not specify a variable")
     (save-excursion
-      (let* ((valvoid (not (with-current-buffer buffer (boundp variable))))
-            ;; Extract the value before setting up the output buffer,
-            ;; in case `buffer' *is* the output buffer.
-            (val (unless valvoid (buffer-local-value variable buffer)))
-            val-start-pos)
+      (let ((valvoid (not (with-current-buffer buffer (boundp variable))))
+           val val-start-pos locus)
+       ;; Extract the value before setting up the output buffer,
+       ;; in case `buffer' *is* the output buffer.
+       (unless valvoid
+         (with-selected-frame frame
+           (with-current-buffer buffer
+             (setq val (symbol-value variable)
+                   locus (variable-binding-locus variable)))))
        (help-setup-xref (list #'describe-variable variable buffer)
                         (interactive-p))
        (with-output-to-temp-buffer (help-buffer)
@@ -516,11 +551,13 @@ it is displayed along with the global value."
                      (delete-region (1- from) from)))))
            (terpri)
 
-           (when (local-variable-p variable)
-             (princ (format "%socal in buffer %s; "
-                            (if (get variable 'permanent-local)
-                                "Permanently l" "L")
-                            (buffer-name)))
+           (when locus
+             (if (bufferp locus)
+                 (princ (format "%socal in buffer %s; "
+                                (if (get variable 'permanent-local)
+                                    "Permanently l" "L")
+                                (buffer-name)))
+               (princ (format "It is a frame-local variable; ")))
              (if (not (default-boundp variable))
                  (princ "globally void")
                (let ((val (default-value variable)))
@@ -536,14 +573,8 @@ it is displayed along with the global value."
                      ;; See previous comment for this function.
                      ;; (help-xref-on-pp from (point))
                      (if (< (point) (+ from 20))
-                         (delete-region (1- from) from)))))))
-           ;; Add a note for variables that have been make-var-buffer-local.
-           (when (and (local-variable-if-set-p variable)
-                      (or (not (local-variable-p variable))
-                          (with-temp-buffer
-                            (local-variable-if-set-p variable))))
-             (princ "\nAutomatically becomes buffer-local when set in any fashion.\n"))
-           (terpri)
+                         (delete-region (1- from) from))))))
+              (terpri))
 
            ;; If the value is large, move it to the end.
            (with-current-buffer standard-output
@@ -568,35 +599,49 @@ it is displayed along with the global value."
                               'follow-link t
                               'help-echo "mouse-2, RET: show value")
                (insert ".\n")))
+            (terpri)
 
-           ;; Mention if it's an alias
             (let* ((alias (condition-case nil
                              (indirect-variable variable)
                            (error variable)))
                    (obsolete (get variable 'byte-obsolete-variable))
                   (safe-var (get variable 'safe-local-variable))
                    (doc (or (documentation-property variable 'variable-documentation)
-                            (documentation-property alias 'variable-documentation))))
+                            (documentation-property alias 'variable-documentation)))
+                   (extra-line nil))
+              ;; Add a note for variables that have been make-var-buffer-local.
+              (when (and (local-variable-if-set-p variable)
+                         (or (not (local-variable-p variable))
+                             (with-temp-buffer
+                               (local-variable-if-set-p variable))))
+                (setq extra-line t)
+                (princ "  Automatically becomes buffer-local when set in any fashion.\n"))
+
+              ;; Mention if it's an alias
               (unless (eq alias variable)
-                (princ (format "\nThis variable is an alias for `%s'.\n" alias)))
-             (if (or obsolete safe-var)
-                 (terpri))
+                (setq extra-line t)
+                (princ (format "  This variable is an alias for `%s'.\n" alias)))
 
               (when obsolete
-                (princ "This variable is obsolete")
+                (setq extra-line t)
+                (princ "  This variable is obsolete")
                 (if (cdr obsolete) (princ (format " since %s" (cdr obsolete))))
-                (princ ";") (terpri)
+                (princ ";\n  ")
                 (princ (if (stringp (car obsolete)) (car obsolete)
                          (format "use `%s' instead." (car obsolete))))
                 (terpri))
              (when safe-var
-               (princ "This variable is safe as a file local variable ")
-               (princ "if its value\nsatisfies the predicate ")
+                (setq extra-line t)
+               (princ "  This variable is safe as a file local variable ")
+               (princ "if its value\n  satisfies the predicate ")
                (princ (if (byte-code-function-p safe-var)
                           "which is byte-compiled expression.\n"
                         (format "`%s'.\n" safe-var))))
-             (princ "\nDocumentation:\n")
-              (princ (or doc "Not documented as a variable.")))
+
+              (if extra-line (terpri))
+             (princ "Documentation:\n")
+             (with-current-buffer standard-output
+               (insert (or doc "Not documented as a variable."))))
            ;; Make a link to customize if this variable can be customized.
            (if (custom-variable-p variable)
                (let ((customize-label "customize"))
index 74daa9b8afb20521b888de09ad3f6b9e09794f16..1435eb019ec6d393c0e2dc20d460300de1839e4e 100644 (file)
@@ -40,6 +40,7 @@
 
 (define-key help-mode-map [mouse-2] 'help-follow-mouse)
 (define-key help-mode-map "\C-c\C-b" 'help-go-back)
+(define-key help-mode-map "\C-c\C-f" 'help-go-forward)
 (define-key help-mode-map "\C-c\C-c" 'help-follow-symbol)
 ;; Documentation only, since we use minor-mode-overriding-map-alist.
 (define-key help-mode-map "\r" 'help-follow)
@@ -52,13 +53,28 @@ To use the element, do (apply FUNCTION ARGS) then goto the point.")
 (put 'help-xref-stack 'permanent-local t)
 (make-variable-buffer-local 'help-xref-stack)
 
+(defvar help-xref-forward-stack nil
+  "The stack of used to navigate help forwards  after using the back button.
+Used by `help-follow' and `help-xref-go-forward'.
+An element looks like (POSITION FUNCTION ARGS...).
+To use the element, do (apply FUNCTION ARGS) then goto the point.")
+(put 'help-xref-forward-stack 'permanent-local t)
+(make-variable-buffer-local 'help-xref-forward-stack)
+
 (defvar help-xref-stack-item nil
   "An item for `help-follow' in this buffer to push onto `help-xref-stack'.
 The format is (FUNCTION ARGS...).")
 (put 'help-xref-stack-item 'permanent-local t)
 (make-variable-buffer-local 'help-xref-stack-item)
 
+(defvar help-xref-stack-forward-item nil
+  "An item for `help-go-back' to push onto `help-xref-forward-stack'.
+The format is (FUNCTION ARGS...).")
+(put 'help-xref-stack-forward-item 'permanent-local t)
+(make-variable-buffer-local 'help-xref-stack-forward-item)
+
 (setq-default help-xref-stack nil help-xref-stack-item nil)
+(setq-default help-xref-forward-stack nil help-xref-forward-stack-item nil)
 
 (defcustom help-mode-hook nil
   "Hook run by `help-mode'."
@@ -123,6 +139,11 @@ The format is (FUNCTION ARGS...).")
   'help-function #'help-xref-go-back
   'help-echo (purecopy "mouse-2, RET: go back to previous help buffer"))
 
+(define-button-type 'help-forward
+  :supertype 'help-xref
+  'help-function #'help-xref-go-forward
+  'help-echo (purecopy "mouse-2, RET: move forward to next help buffer"))
+
 (define-button-type 'help-info
   :supertype 'help-xref
   'help-function #'info
@@ -242,6 +263,9 @@ Commands:
 (defvar help-back-label (purecopy "[back]")
   "Label to use by `help-make-xrefs' for the go-back reference.")
 
+(defvar help-forward-label (purecopy "[forward]")
+  "Label to use by `help-make-xrefs' for the go-forward reference.")
+
 (defconst help-xref-symbol-regexp
   (purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|"  ; Link to var
                    "\\(function\\|command\\)\\|"          ; Link to function
@@ -286,7 +310,8 @@ because we want to record the \"previous\" position of point so we can
 restore it properly when going back."
   (with-current-buffer (help-buffer)
     (when help-xref-stack-item
-      (push (cons (point) help-xref-stack-item) help-xref-stack))
+      (push (cons (point) help-xref-stack-item) help-xref-stack)
+      (setq help-xref-forward-stack nil))
     (when interactive-p
       (let ((tail (nthcdr 10 help-xref-stack)))
        ;; Truncate the stack.
@@ -477,11 +502,19 @@ that."
        (while (and (not (bobp)) (bolp))
          (delete-char -1))
         (insert "\n")
+       (when (or help-xref-stack help-xref-forward-stack)
+          (insert "\n"))
         ;; Make a back-reference in this buffer if appropriate.
         (when help-xref-stack
-         (insert "\n")
          (help-insert-xref-button help-back-label 'help-back
-                                  (current-buffer))
+                                  (current-buffer)))
+        ;; Make a forward-reference in this buffer if appropriate.
+        (when help-xref-forward-stack
+         (when help-xref-stack
+           (insert "\t"))
+         (help-insert-xref-button help-forward-label 'help-forward
+                                  (current-buffer)))
+       (when (or help-xref-stack help-xref-forward-stack)
           (insert "\n")))
       ;; View mode steals RET from us.
       (set (make-local-variable 'minor-mode-overriding-map-alist)
@@ -600,6 +633,7 @@ help buffer."
   "From BUFFER, go back to previous help buffer text using `help-xref-stack'."
   (let (item position method args)
     (with-current-buffer buffer
+      (push (cons (point) help-xref-stack-item) help-xref-forward-stack)
       (when help-xref-stack
        (setq item (pop help-xref-stack)
              ;; Clear the current item so that it won't get pushed
@@ -615,12 +649,39 @@ help buffer."
          (set-window-point (get-buffer-window buffer) position)
        (goto-char position)))))
 
+(defun help-xref-go-forward (buffer)
+  "From BUFFER, go forward to next help buffer."
+  (let (item position method args)
+    (with-current-buffer buffer
+      (push (cons (point) help-xref-stack-item) help-xref-stack)
+      (when help-xref-forward-stack
+       (setq item (pop help-xref-forward-stack)
+             ;; Clear the current item so that it won't get pushed
+             ;; by the function we're about to call.  TODO: We could also
+             ;; push it onto a "forward" stack and add a `forw' button.
+             help-xref-stack-item nil
+             position (car item)
+             method (cadr item)
+             args (cddr item))))
+    (apply method args)
+    (with-current-buffer buffer
+      (if (get-buffer-window buffer)
+         (set-window-point (get-buffer-window buffer) position)
+       (goto-char position)))))
 (defun help-go-back ()
   "Go back to previous topic in this help buffer."
   (interactive)
   (if help-xref-stack
       (help-xref-go-back (current-buffer))
     (error "No previous help buffer")))
+(defun help-go-forward ()
+  "Go back to next topic in this help buffer."
+  (interactive)
+  (if help-xref-forward-stack
+      (help-xref-go-forward (current-buffer))
+    (error "No next help buffer")))
 
 (defun help-do-xref (pos function args)
   "Call the help cross-reference function FUNCTION with args ARGS.
index 4a94fd35bc7b870c79feb5386dd831cdafc4ace8..b957f88a7e45a8e6df1476c85f83999536bf4134 100644 (file)
@@ -46,6 +46,7 @@
     (define-key map "." 'display-local-help)
     (define-key map "?" 'help-for-help)
 
+    (define-key map "\C-a" 'about-emacs)
     (define-key map "\C-c" 'describe-copying)
     (define-key map "\C-d" 'describe-distribution)
     (define-key map "\C-e" 'view-emacs-problems)
@@ -225,6 +226,7 @@ w  where-is.  Type a command name; it displays which keystrokes
 .  display-local-help.  Display any available local help at point
         in the echo area.
 
+C-a Display information about Emacs.
 C-c Display Emacs copying permission (GNU General Public License).
 C-d Display Emacs ordering information.
 C-e Display info about Emacs problems.
@@ -332,7 +334,7 @@ With argument, display info only for the selected version."
   (when (consp version)
     (let* ((all-versions
            (let (res)
-             (mapcar
+             (mapc
               (lambda (file)
                 (with-temp-buffer
                   (insert-file-contents
index 522a50b9a7fce4b5db3f6da5df7d8f5e559ea25d..d65dd01ee1c784bd73a56fe25ca75ffe49b0316b 100644 (file)
@@ -309,7 +309,7 @@ called interactively, are:
   Write active REGEXPs into buffer as comments (if possible).  They may
   be read the next time file is loaded or when the \\[hi-lock-find-patterns] command
   is issued.  The inserted regexps are in the form of font lock keywords.
-  (See `font-lock-keywords'.)  They may be edited and re-loaded with \\[hi-lock-find-patterns], 
+  (See `font-lock-keywords'.)  They may be edited and re-loaded with \\[hi-lock-find-patterns],
   any valid `font-lock-keywords' form is acceptable. When a file is
   loaded the patterns are read if `hi-lock-file-patterns-policy is
   'ask and the user responds y to the prompt, or if
@@ -462,7 +462,7 @@ interactive functions.  \(See `hi-lock-interactive-patterns'.\)
 \\<minibuffer-local-must-match-map>Use \\[minibuffer-complete] to complete a partially typed regexp.
 \(See info node `Minibuffer History'.\)"
   (interactive
-   (if (and (display-popup-menus-p) (vectorp (this-command-keys)))
+   (if (and (display-popup-menus-p) (not last-nonmenu-event))
        (catch 'snafu
         (or
          (x-popup-menu
@@ -515,7 +515,7 @@ be found in variable `hi-lock-interactive-patterns'."
   (if (null hi-lock-interactive-patterns)
       (error "There are no interactive patterns"))
   (let ((beg (point)))
-    (mapcar
+    (mapc
      (lambda (pattern)
        (insert (format "%s: (%s)\n"
                       hi-lock-file-patterns-prefix
index ca44e99b594a2e60c75056df7b751faf319ff778..27e9d66e25caa39048f669f57174709ea5649dfa 100644 (file)
@@ -3354,7 +3354,7 @@ for first matching file."
 
 (defun ido-to-end (items)
   ;; Move the elements from ITEMS to the end of `ido-temp-list'
-  (mapcar
+  (mapc
    (lambda (elem)
      (setq ido-temp-list (delq elem ido-temp-list)))
    items)
@@ -3603,7 +3603,7 @@ for first matching file."
         full-matches suffix-matches prefix-matches matches)
     (setq ido-incomplete-regexp nil)
     (condition-case error
-        (mapcar
+        (mapc
          (lambda (item)
            (let ((name (ido-name item)))
             (if (and (or non-prefix-dot
@@ -3648,7 +3648,7 @@ for first matching file."
       (setq re (mapconcat #'regexp-quote (split-string ido-text "") ".*"))
       (if ido-enable-prefix
          (setq re (concat "\\`" re)))
-      (mapcar
+      (mapc
        (lambda (item)
         (let ((name (ido-name item)))
           (if (string-match re name)
index 266096858e72f04d1e9913c2a7cfa3b15bd8ebcd..0353f6eb8813d745aef01f654fd922e314ae5eca 100644 (file)
   :prefix "image-dired-"
   :group 'multimedia)
 
-(defcustom image-dired-dir "~/.emacs.d/image-dired/"
+(defcustom image-dired-dir (concat user-emacs-directory "image-dired/")
   "Directory where thumbnail images are stored."
   :type 'string
   :group 'image-dired)
@@ -187,17 +187,20 @@ that allows sharing of thumbnails across different programs."
                  (const :tag "Per-directory" per-directory))
   :group 'image-dired)
 
-(defcustom image-dired-db-file "~/.emacs.d/image-dired/.image-dired_db"
+(defcustom image-dired-db-file
+  (concat user-emacs-directory "image-dired/.image-dired_db")
   "Database file where file names and their associated tags are stored."
   :type 'string
   :group 'image-dired)
 
-(defcustom image-dired-temp-image-file "~/.emacs.d/image-dired/.image-dired_temp"
+(defcustom image-dired-temp-image-file
+  (concat user-emacs-directory "image-dired/.image-dired_temp")
   "Name of temporary image file used by various commands."
   :type 'string
   :group 'image-dired)
 
-(defcustom image-dired-gallery-dir "~/.emacs.d/image-dired/.image-dired_gallery"
+(defcustom image-dired-gallery-dir
+  (concat user-emacs-directory "image-dired/.image-dired_gallery")
   "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."
@@ -342,7 +345,7 @@ original image file name and %t which is replaced by
   :group 'image-dired)
 
 (defcustom image-dired-temp-rotate-image-file
-  "~/.emacs.d/image-dired/.image-dired_rotate_temp"
+  (concat user-emacs-directory "image-dired/.image-dired_rotate_temp")
   "Temporary file for rotate operations."
   :type 'string
   :group 'image-dired)
@@ -817,7 +820,7 @@ thumbnail buffer to be selected."
         (if (not append)
             (erase-buffer)
           (goto-char (point-max)))
-        (mapcar
+        (mapc
          (lambda (curr-file)
            (setq thumb-name (image-dired-thumb-name curr-file))
            (if (and (not (file-exists-p thumb-name))
@@ -915,7 +918,7 @@ is an alist in the following form:
           (if (stringp files)
               (setq files (list files))
             (error "Files must be a string or a list of strings!")))
-      (mapcar
+      (mapc
        (lambda (file)
          (goto-char (point-min))
          (when (search-forward-regexp
@@ -2167,7 +2170,7 @@ matching tags will be marked in the dired buffer."
         (setq files (append (list (match-string 1)) files)))
       (kill-buffer buf)
       ;; Mark files
-      (mapcar
+      (mapc
        ;; I tried using `dired-mark-files-regexp' but it was
        ;; waaaay to slow.
        (lambda (curr-file)
index db6c925520a862ad12441289fd1324ff9b875342..fd33033b80dda78dbea1ebae104e36a75abfbeba 100644 (file)
@@ -39,7 +39,7 @@
 
 ;;;###autoload
 (defcustom image-file-name-extensions
-  '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm")
+  '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")
   "*A list of image-file filename extensions.
 Filenames having one of these extensions are considered image files,
 in addition to those matching `image-file-name-regexps'.
index fdfbc145ace643b70dcdc24bbef69bd67aabffcb..3cf57ca7c4de47d8d8ef41c7f842a1f4976cee2a 100644 (file)
 ;;;###autoload (push '("\\.gif\\'"      . image-mode) auto-mode-alist)
 ;;;###autoload (push '("\\.tiff?\\'"    . image-mode) auto-mode-alist)
 ;;;###autoload (push '("\\.p[bpgn]m\\'" . image-mode) auto-mode-alist)
+
+;;;###autoload (push '("\\.x[bp]m\\'"   . c-mode)     auto-mode-alist)
 ;;;###autoload (push '("\\.x[bp]m\\'"   . image-mode-maybe) auto-mode-alist)
 
+;;;###autoload (push '("\\.svgz?\\'"    . xml-mode)   auto-mode-alist)
+;;;###autoload (push '("\\.svgz?\\'"    . image-mode-maybe) auto-mode-alist)
+
 ;;; Image scrolling functions
 
 (defun image-forward-hscroll (&optional n)
@@ -51,13 +56,14 @@ Stop if the right edge of the image is reached."
   (interactive "p")
   (cond ((= n 0) nil)
        ((< n 0)
-        (set-window-hscroll nil (max 0 (+ (window-hscroll) n))))
+        (set-window-hscroll (selected-window)
+                            (max 0 (+ (window-hscroll) n))))
        (t
         (let* ((image (get-text-property 1 'display))
-               (img-width (ceiling (car (image-size image))))
                (edges (window-inside-edges))
-               (win-width (- (nth 2 edges) (nth 0 edges))))
-          (set-window-hscroll nil
+               (win-width (- (nth 2 edges) (nth 0 edges)))
+               (img-width (ceiling (car (image-size image)))))
+          (set-window-hscroll (selected-window)
                               (min (max 0 (- img-width win-width))
                                    (+ n (window-hscroll))))))))
 
@@ -73,13 +79,14 @@ Stop if the bottom edge of the image is reached."
   (interactive "p")
   (cond ((= n 0) nil)
        ((< n 0)
-        (set-window-vscroll nil (max 0 (+ (window-vscroll) n))))
+        (set-window-vscroll (selected-window)
+                            (max 0 (+ (window-vscroll) n))))
        (t
         (let* ((image (get-text-property 1 'display))
-               (img-height (ceiling (cdr (image-size image))))
                (edges (window-inside-edges))
-               (win-height (- (nth 3 edges) (nth 1 edges))))
-          (set-window-vscroll nil
+               (win-height (- (nth 3 edges) (nth 1 edges)))
+               (img-height (ceiling (cdr (image-size image)))))
+          (set-window-vscroll (selected-window)
                               (min (max 0 (- img-height win-height))
                                    (+ n (window-vscroll))))))))
 
@@ -176,6 +183,11 @@ stopping if the top or bottom edge of the image is reached."
 
 ;;; Image Mode setup
 
+(defvar image-type nil
+  "Current image type.
+This variable is used to display the current image type in the mode line.")
+(make-variable-buffer-local 'image-type)
+
 (defvar image-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map "\C-c\C-c" 'image-toggle-display)
@@ -205,7 +217,7 @@ You can use \\<image-mode-map>\\[image-toggle-display]
 to toggle between display as an image and display as text."
   (interactive)
   (kill-all-local-variables)
-  (setq mode-name "Image")
+  (setq mode-name "Image[text]")
   (setq major-mode 'image-mode)
   (add-hook 'change-major-mode-hook 'image-toggle-display-text nil t)
   (if (and (display-images-p)
@@ -228,13 +240,14 @@ to toggle between display as an image and display as text."
   "Toggle Image minor mode.
 With arg, turn Image minor mode on if arg is positive, off otherwise.
 See the command `image-mode' for more information on this mode."
-  nil " Image" image-mode-text-map
+  nil (:eval (format " Image[%s]" image-type)) image-mode-text-map
   :group 'image
   :version "22.1"
   (if (not image-minor-mode)
       (image-toggle-display-text)
     (if (get-text-property (point-min) 'display)
-       (setq cursor-type nil truncate-lines t))
+       (setq cursor-type nil truncate-lines t)
+      (setq image-type "text"))
     (add-hook 'change-major-mode-hook (lambda () (image-minor-mode -1)) nil t)
     (message "%s" (concat (substitute-command-keys
                      "Type \\[image-toggle-display] to view the image as ")
@@ -291,30 +304,33 @@ and showing the image as an image."
        (kill-local-variable 'truncate-lines)
        (kill-local-variable 'auto-hscroll-mode)
        (use-local-map image-mode-text-map)
+       (setq image-type "text")
+       (if (eq major-mode 'image-mode)
+           (setq mode-name "Image[text]"))
        (if (called-interactively-p)
            (message "Repeat this command to go back to displaying the image")))
     ;; Turn the image data into a real image, but only if the whole file
     ;; was inserted
     (let* ((filename (buffer-file-name))
-          (image
-           (if (and filename
-                    (file-readable-p filename)
-                    (not (file-remote-p filename))
-                    (not (buffer-modified-p))
-                    (not (and (boundp 'archive-superior-buffer)
-                              archive-superior-buffer))
-                    (not (and (boundp 'tar-superior-buffer)
-                              tar-superior-buffer)))
-               (create-image filename)
-             (create-image
-              (string-make-unibyte
-               (buffer-substring-no-properties (point-min) (point-max)))
-              nil t)))
+          (data-p (not (and filename
+                            (file-readable-p filename)
+                            (not (file-remote-p filename))
+                            (not (buffer-modified-p))
+                            (not (and (boundp 'archive-superior-buffer)
+                                      archive-superior-buffer))
+                            (not (and (boundp 'tar-superior-buffer)
+                                      tar-superior-buffer)))))
+          (file-or-data (if data-p
+                            (string-make-unibyte
+                             (buffer-substring-no-properties (point-min) (point-max)))
+                          filename))
+          (type (image-type file-or-data nil data-p))
+          (image (create-image file-or-data type data-p))
           (props
            `(display ,image
-                     intangible ,image
-                     rear-nonsticky (display intangible)
-                     read-only t front-sticky (read-only)))
+             intangible ,image
+             rear-nonsticky (display intangible)
+             read-only t front-sticky (read-only)))
           (inhibit-read-only t)
           (buffer-undo-list t)
           (modified (buffer-modified-p)))
@@ -330,6 +346,9 @@ and showing the image as an image."
       ;; Allow navigation of large images
       (set (make-local-variable 'auto-hscroll-mode) nil)
       (use-local-map image-mode-map)
+      (setq image-type type)
+      (if (eq major-mode 'image-mode)
+         (setq mode-name (format "Image[%s]" type)))
       (if (called-interactively-p)
          (message "Repeat this command to go back to displaying the file as text")))))
 
index 480b561031145a3096f7c845881ea7951eeba67e..99632b84307934ba08f5b5bbe3f56d07570e9e4d 100644 (file)
@@ -34,7 +34,7 @@
 
 
 (defconst image-type-header-regexps
-  '(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
+  `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
     ("\\`P[1-6][[:space:]]+\\(?:#.*[[:space:]]+\\)*[0-9]+[[:space:]]+[0-9]+" . pbm)
     ("\\`GIF8[79]a" . gif)
     ("\\`\x89PNG\r\n\x1a\n" . png)
 static char \\1_bits" . xbm)
     ("\\`\\(?:MM\0\\*\\|II\\*\0\\)" . tiff)
     ("\\`[\t\n\r ]*%!PS" . postscript)
-    ("\\`\xff\xd8" . (image-jpeg-p . jpeg)))
+    ("\\`\xff\xd8" . (image-jpeg-p . jpeg))
+    (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
+            (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\r\n]*<\\)")))
+       (concat "\\(?:<\\?xml[ \t\r\n]+[^>]*>\\)?[ \t\r\n]*<"
+               comment-re "*"
+               "\\(?:!DOCTYPE[ \t\r\n]+[^>]*>[ \t\r\n]*<[ \t\r\n]*" comment-re "*\\)?"
+               "[Ss][Vv][Gg]"))
+     . svg)
+    )
   "Alist of (REGEXP . IMAGE-TYPE) pairs used to auto-detect image types.
 When the first bytes of an image file match REGEXP, it is assumed to
 be of image type IMAGE-TYPE if IMAGE-TYPE is a symbol.  If not a symbol,
@@ -60,7 +68,9 @@ a non-nil value, TYPE is the image's type.")
     ("\\.pbm\\'" . pbm)
     ("\\.xbm\\'" . xbm)
     ("\\.ps\\'" . postscript)
-    ("\\.tiff?\\'" . tiff))
+    ("\\.tiff?\\'" . tiff)
+    ("\\.svgz?\\'" . svg)
+    )
   "Alist of (REGEXP . IMAGE-TYPE) pairs used to identify image files.
 When the name of an image file match REGEXP, it is assumed to
 be of image type IMAGE-TYPE.")
@@ -77,6 +87,7 @@ be of image type IMAGE-TYPE.")
     (xpm . nil)
     (jpeg . maybe)
     (tiff . maybe)
+    (svg . maybe)
     (postscript . nil))
   "Alist of (IMAGE-TYPE . AUTODETECT) pairs used to auto-detect image files.
 \(See `image-type-auto-detected-p').
@@ -292,43 +303,28 @@ be determined."
   "Determine the type of image file FILE from its name.
 Value is a symbol specifying the image type, or nil if type cannot
 be determined."
-  (let ((types image-type-file-name-regexps)
-       type)
-    (while types
-      (if (string-match (car (car types)) file)
-         (setq type (cdr (car types))
-               types nil)
-       (setq types (cdr types))))
-    type))
+  (assoc-default file image-type-file-name-regexps 'string-match))
 
 
 ;;;###autoload
-(defun image-type (file-or-data &optional type data-p)
+(defun image-type (source &optional type data-p)
   "Determine and return image type.
-FILE-OR-DATA is an image file name or image data.
+SOURCE is an image file name or image data.
 Optional TYPE is a symbol describing the image type.  If TYPE is omitted
 or nil, try to determine the image type from its first few bytes
-of image data.  If that doesn't work, and FILE-OR-DATA is a file name,
+of image data.  If that doesn't work, and SOURCE is a file name,
 use its file extension as image type.
-Optional DATA-P non-nil means FILE-OR-DATA is a string containing image data."
-  (when (and (not data-p) (not (stringp file-or-data)))
-    (error "Invalid image file name `%s'" file-or-data))
-  (cond ((null data-p)
-        ;; FILE-OR-DATA is a file name.
-        (unless (or type
-                    (setq type (image-type-from-file-header file-or-data)))
-          (let ((extension (file-name-extension file-or-data)))
-            (unless extension
-              (error "Cannot determine image type"))
-            (setq type (intern extension)))))
-       (t
-        ;; FILE-OR-DATA contains image data.
-        (unless type
-          (setq type (image-type-from-data file-or-data)))))
+Optional DATA-P non-nil means SOURCE is a string containing image data."
+  (when (and (not data-p) (not (stringp source)))
+    (error "Invalid image file name `%s'" source))
   (unless type
-    (error "Cannot determine image type"))
-  (unless (symbolp type)
-    (error "Invalid image type `%s'" type))
+    (setq type (if data-p
+                  (image-type-from-data source)
+                (or (image-type-from-file-header source)
+                    (image-type-from-file-name source))))
+    (or type (error "Cannot determine image type")))
+  (or (memq type (and (boundp 'image-types) image-types))
+      (error "Invalid image type `%s'" type))
   type)
 
 
@@ -347,7 +343,9 @@ This function is intended to be used from `magic-fallback-mode-alist'.
 
 The buffer is considered to contain an auto-detectable image if
 its beginning matches an image type in `image-type-header-regexps',
-and that image type is present in `image-type-auto-detectable'."
+and that image type is present in `image-type-auto-detectable' with a
+non-nil value.  If that value is non-nil, but not t, then the image type
+must be available."
   (let* ((type (image-type-from-buffer))
         (auto (and type (cdr (assq type image-type-auto-detectable)))))
     (and auto
@@ -367,7 +365,12 @@ Optional PROPS are additional image attributes to assign to the image,
 like, e.g. `:mask MASK'.
 Value is the image created, or nil if images of type TYPE are not supported.
 
-Images should not be larger than specified by `max-image-size'."
+Images should not be larger than specified by `max-image-size'.
+
+Image file names that are not absolute are searched for in the
+\"images\" sub-directory of `data-directory' and
+`x-bitmap-file-path' (in that order)."
+  ;; It is x_find_image_file in image.c that sets the search path.
   (setq type (image-type file-or-data type data-p))
   (when (image-type-available-p type)
     (append (list 'image :type type (if data-p :data :file) file-or-data)
index a005abebee55e5de13b6a14984cc28d048743619..db8958bd1ca5faae9fabe82aa87679360f127540 100644 (file)
@@ -50,8 +50,8 @@ Don't rebind TAB unless you really need to.")
   "*Controls the operation of the TAB key.
 If t, hitting TAB always just indents the current line.
 If nil, hitting TAB indents the current line if point is at the left margin
-or in the line's indentation, otherwise it insert a \"real\" TAB character.
-Most programming language modes have their own variable to control this,
+or in the line's indentation, otherwise it inserts a \"real\" TAB character.
+Some programming language modes have their own variable to control this,
 e.g., `c-tab-always-indent', and do not respect this variable."
   :group 'indent
   :type '(choice (const nil) (const t) (const always)))
@@ -78,14 +78,20 @@ special; we don't actually use them here."
     (funcall indent-line-function)))
 
 (defun indent-for-tab-command (&optional arg)
-  "Indent line in proper way for current major mode or insert a tab.
+  "Indent line or region in proper way for current major mode or insert a tab.
 Depending on `tab-always-indent', either insert a tab or indent.
 If initial point was within line's indentation, position after
 the indentation.  Else stay at same point in text.
-The function actually called to indent is determined by the value of
+If `transient-mark-mode' is turned on the region is active,
+indent the region.
+The function actually called to indent the line is determined by the value of
 `indent-line-function'."
   (interactive "P")
   (cond
+   ;; The region is active, indent it.
+   ((and transient-mark-mode mark-active
+        (not (eq (region-beginning) (region-end))))
+    (indent-region (region-beginning) (region-end)))
    ((or ;; indent-to-left-margin is only meant for indenting,
        ;; so we force it to always insert a tab here.
        (eq indent-line-function 'indent-to-left-margin)
@@ -97,7 +103,8 @@ The function actually called to indent is determined by the value of
    ;; indenting, so we can't pass them to indent-according-to-mode.
    ((memq indent-line-function '(indent-relative indent-relative-maybe))
     (funcall indent-line-function))
-   (t ;; The normal case.
+   ;; Indent the line.
+   (t
     (indent-according-to-mode))))
 
 (defun insert-tab (&optional arg)
index 07bce5bd48751549b03fcfb50280656d25255186..fb6260585bc48c49f7a188d909503699f084b2aa 100644 (file)
@@ -4078,7 +4078,8 @@ the variable `Info-file-list-for-emacs'."
       ;; Fontify http and ftp references
       (goto-char (point-min))
       (when not-fontified-p
-        (while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`({<>})']+" nil t)
+        (while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`({<>})']+"
+                                  nil t)
           (add-text-properties (match-beginning 0) (match-end 0)
                                '(font-lock-face info-xref
                                                 mouse-face highlight
index 30c8a267e2599bdd13452b7ac8fe6082f8605400..8d86043646c049e2369b2648c2af24cfe71dd131 100644 (file)
 (setq utf-translate-cjk-mode saved-utf-translate-cjk-mode)
 (makunbound 'saved-utf-translate-cjk-mode)
 
-;;; Local Variables:
-;;; coding: iso-2022-7bit
-;;; End:
+;; Local Variables:
+;; coding: iso-2022-7bit
+;; End:
 
-;;; arch-tag: 85889c35-9f4d-4912-9bf5-82de31b0d42d
+;; arch-tag: 85889c35-9f4d-4912-9bf5-82de31b0d42d
 ;;; characters.el ends here
index 7b3e6746b4a3e563c7ab86de9f68ea134d133c76..14c61560a4164a468df14cf7c847d76054c1a337 100644 (file)
@@ -31,7 +31,7 @@
 ;; Usually this map is empty (even if Encoded-kbd mode is on), but if
 ;; the keyboard coding system is iso-2022-based, it defines dummy key
 ;; bindings for ESC $ ..., etc. so that those bindings in
-;; key-translation-map take effect.
+;; input-decode-map take effect.
 (defconst encoded-kbd-mode-map (make-sparse-keymap)
   "Keymap for Encoded-kbd minor mode.")
 
@@ -175,7 +175,7 @@ The following key sequence may cause multilingual text insertion."
       (setq str (format "%s%c" str (read-char-exclusive))))
     (vector (aref result 0))))
 
-(defun encoded-kbd-setup-keymap (coding)
+(defun encoded-kbd-setup-keymap (keymap coding)
   ;; At first, reset the keymap.
   (define-key encoded-kbd-mode-map "\e" nil)
   ;; Then setup the keymap according to the keyboard coding system.
@@ -183,7 +183,7 @@ The following key sequence may cause multilingual text insertion."
    ((eq (coding-system-type coding) 1) ; SJIS
     (let ((i 128))
       (while (< i 256)
-       (define-key key-translation-map
+       (define-key keymap
          (vector i) 'encoded-kbd-self-insert-sjis)
        (setq i (1+ i))))
     8)
@@ -191,7 +191,7 @@ The following key sequence may cause multilingual text insertion."
    ((eq (coding-system-type coding) 3) ; Big5
     (let ((i 161))
       (while (< i 255)
-       (define-key key-translation-map
+       (define-key keymap
          (vector i) 'encoded-kbd-self-insert-big5)
        (setq i (1+ i))))
     8)
@@ -217,20 +217,20 @@ The following key sequence may cause multilingual text insertion."
            (aset encoded-kbd-iso2022-invocations 1 1))
        (when use-designation
          (define-key encoded-kbd-mode-map "\e" 'encoded-kbd-iso2022-esc-prefix)
-         (define-key key-translation-map "\e" 'encoded-kbd-iso2022-esc-prefix))
+         (define-key keymap "\e" 'encoded-kbd-iso2022-esc-prefix))
        (when (or (aref flags 2) (aref flags 3))
-         (define-key key-translation-map
+         (define-key keymap
            [?\216] 'encoded-kbd-iso2022-single-shift)
-         (define-key key-translation-map
+         (define-key keymap
            [?\217] 'encoded-kbd-iso2022-single-shift))
        (or (eq (aref flags 0) 'ascii)
            (dotimes (i 96)
-             (define-key key-translation-map
+             (define-key keymap
                (vector (+ 32 i)) 'encoded-kbd-self-insert-iso2022-7bit)))
        (if (aref flags 7)
            t
          (dotimes (i 96)
-           (define-key key-translation-map
+           (define-key keymap
              (vector (+ 160 i)) 'encoded-kbd-self-insert-iso2022-8bit))
          8))))
 
@@ -245,7 +245,7 @@ The following key sequence may cause multilingual text insertion."
          (setq from (setq to elt)))
        (while (<= from to)
          (if (>= from 128)
-             (define-key key-translation-map
+             (define-key keymap
                (vector from) 'encoded-kbd-self-insert-ccl))
          (setq from (1+ from))))
       8))
@@ -253,61 +253,49 @@ The following key sequence may cause multilingual text insertion."
    (t
     nil)))
 
-;; key-translation-map at the time Encoded-kbd mode is turned on is
-;; saved here.
-(defvar saved-key-translation-map nil)
-
-;; Input mode at the time Encoded-kbd mode is turned on is saved here.
-(defvar saved-input-mode nil)
-
-(put 'encoded-kbd-mode 'permanent-local t)
 ;;;###autoload
-(define-minor-mode encoded-kbd-mode
-  "Toggle Encoded-kbd minor mode.
-With arg, turn Encoded-kbd mode on if and only if arg is positive.
-
-You should not turn this mode on manually, instead use the command
-\\[set-keyboard-coding-system] which turns on or off this mode
-automatically.
-
-In Encoded-kbd mode, a text sent from keyboard is accepted
-as a multilingual text encoded in a coding system set by
-\\[set-keyboard-coding-system]."
-  :global t :group 'keyboard :group 'mule
-
-  (if encoded-kbd-mode
-      ;; We are turning on Encoded-kbd mode.
-      (let ((coding (keyboard-coding-system))
-           result)
-       (or saved-key-translation-map
-           (if (keymapp key-translation-map)
-               (setq saved-key-translation-map
-                     (copy-keymap key-translation-map))
-             (setq key-translation-map (make-sparse-keymap))))
-       (or saved-input-mode
-           (setq saved-input-mode
-                 (current-input-mode)))
-       (setq result (and coding (encoded-kbd-setup-keymap coding)))
-       (if result
-           (if (eq result 8)
-               (set-input-mode
-                (nth 0 saved-input-mode) 
-                (nth 1 saved-input-mode)
-                'use-8th-bit
-                (nth 3 saved-input-mode)))
-         (setq encoded-kbd-mode nil
-               saved-key-translation-map nil
-               saved-input-mode nil)
-         (error "Unsupported coding system in Encoded-kbd mode: %S"
-                coding)))
-
-    ;; We are turning off Encoded-kbd mode.
-    (setq key-translation-map saved-key-translation-map
-         saved-key-translation-map nil)
-    (apply 'set-input-mode saved-input-mode)
-    (setq saved-input-mode nil)))
+(defun encoded-kbd-setup-display (display)
+  "Set up a `input-decode-map' for `keyboard-coding-system' on DISPLAY.
+
+DISPLAY may be a display id, a frame, or nil for the selected frame's display."
+  (let ((frame (if (framep display) display (car (frames-on-display-list display)))))
+    (when frame
+      (with-selected-frame frame
+       ;; Remove any previous encoded-kb keymap from input-decode-map.
+       (let ((m input-decode-map))
+         (if (equal (keymap-prompt m) "encoded-kb")
+             (setq input-decode-map (keymap-parent m))
+           (while (keymap-parent m)
+             (if (equal (keymap-prompt (keymap-parent m)) "encoded-kb")
+                 (set-keymap-parent m (keymap-parent (keymap-parent m))))
+             (setq m (keymap-parent m)))))
+
+       (if (keyboard-coding-system)
+           ;; We are turning on Encoded-kbd mode.
+           (let ((coding (keyboard-coding-system))
+                 (keymap (make-sparse-keymap "encoded-kb"))
+                 (cim (current-input-mode))
+                 result)
+             (set-keymap-parent keymap input-decode-map)
+             (setq input-decode-map keymap)
+             (unless (terminal-parameter nil 'encoded-kbd-saved-input-meta-mode)
+               (set-terminal-parameter nil 'encoded-kbd-saved-input-mode (nth 2 cim)))
+             (setq result (and coding (encoded-kbd-setup-keymap keymap coding)))
+             (if result
+                 (when (and (eq result 8)
+                            (memq (nth 2 cim) '(t nil)))
+                   (set-input-meta-mode 'use-8th-bit))
+               (set-terminal-parameter nil 'encoded-kbd-saved-input-meta-mode nil)
+               (error "Unsupported coding system in Encoded-kbd mode: %S"
+                      coding)))
+         ;; We are turning off Encoded-kbd mode.
+         (when (and (terminal-parameter nil 'encoded-kbd-saved-input-meta-mode)
+                    (not (equal (nth 2 (current-input-mode))
+                                (terminal-parameter nil 'encoded-kbd-saved-input-meta-mode))))
+           (set-input-meta-mode (terminal-parameter nil 'encoded-kbd-saved-input-meta-mode)))
+         (set-terminal-parameter nil 'saved-input-meta-mode nil))))))
 
 (provide 'encoded-kb)
 
-;;; arch-tag: 76f0f9b3-65e7-45c3-b692-59509a87ad44
+;; arch-tag: 76f0f9b3-65e7-45c3-b692-59509a87ad44
 ;;; encoded-kb.el ends here
index a858066f47cea9ae311c1e9fce77ed969225334e..d61e1f31d8f486a7964628654b14e2f14f73ab93 100644 (file)
   t)
 (define-key-after set-coding-system-map [set-terminal-coding-system]
   '(menu-item "For Terminal" set-terminal-coding-system
-             :enable (null (memq window-system '(x w32 mac)))
+             :enable (null (memq initial-window-system '(x w32 mac)))
              :help "How to encode terminal output")
   t)
 (define-key-after set-coding-system-map [separator-3]
@@ -1830,7 +1830,7 @@ The default status is as follows:
 
 (reset-language-environment)
 
-(defun set-display-table-and-terminal-coding-system (language-name &optional coding-system)
+(defun set-display-table-and-terminal-coding-system (language-name &optional coding-system display)
   "Set up the display table and terminal coding system for LANGUAGE-NAME."
   (let ((coding (get-language-info language-name 'unibyte-display)))
     (if (and coding
@@ -1846,7 +1846,7 @@ The default status is as follows:
        (dotimes (i 128)
          (aset standard-display-table (+ i 128) nil))))
     (or (eq window-system 'pc)
-       (set-terminal-coding-system (or coding-system coding)))))
+       (set-terminal-coding-system (or coding-system coding) display))))
 
 (defun set-language-environment (language-name)
   "Set up multi-lingual environment for using LANGUAGE-NAME.
@@ -2454,7 +2454,7 @@ is returned.  Thus, for instance, if charset \"ISO8859-2\",
 ;; too, for setting things such as calendar holidays, ps-print paper
 ;; size, spelling dictionary.
 
-(defun set-locale-environment (&optional locale-name)
+(defun set-locale-environment (&optional locale-name frame)
   "Set up multi-lingual environment for using LOCALE-NAME.
 This sets the language environment, the coding system priority,
 the default input method and sometimes other things.
@@ -2475,6 +2475,10 @@ directory named `/usr/share/locale' or `/usr/lib/locale'.  LOCALE-NAME
 will be translated according to the table specified by
 `locale-translation-file-name'.
 
+If FRAME is non-nil, only set the keyboard coding system and the
+terminal coding system for the terminal of that frame, and don't
+touch session-global parameters like the language environment.
+
 See also `locale-charset-language-names', `locale-language-names',
 `locale-preferred-coding-systems' and `locale-coding-system'."
   (interactive "sSet environment for locale: ")
@@ -2504,7 +2508,7 @@ See also `locale-charset-language-names', `locale-language-names',
       (let ((vars '("LC_ALL" "LC_CTYPE" "LANG")))
        (while (and vars
                    (= 0 (length locale))) ; nil or empty string
-         (setq locale (getenv (pop vars))))))
+         (setq locale (getenv (pop vars) frame)))))
 
     (unless locale
       ;; The two tests are kept separate so the byte-compiler sees
@@ -2578,28 +2582,34 @@ See also `locale-charset-language-names', `locale-language-names',
 
          ;; Set up for this character set.  This is now the right way
          ;; to do it for both unibyte and multibyte modes.
-         (set-language-environment language-name)
+         (unless frame
+           (set-language-environment language-name))
 
          ;; If default-enable-multibyte-characters is nil,
          ;; we are using single-byte characters,
          ;; so the display table and terminal coding system are irrelevant.
          (when default-enable-multibyte-characters
            (set-display-table-and-terminal-coding-system
-            language-name coding-system))
+            language-name coding-system frame))
 
          ;; Set the `keyboard-coding-system' if appropriate (tty
          ;; only).  At least X and MS Windows can generate
          ;; multilingual input.
-         (unless window-system
-           (let ((kcs (or coding-system
-                          (car (get-language-info language-name
-                                                  'coding-system)))))
-             (if kcs (set-keyboard-coding-system kcs))))
-
-         (setq locale-coding-system
-               (car (get-language-info language-name 'coding-priority))))
-
-       (when (and coding-system
+         ;; XXX This was disabled unless `window-system', but that
+         ;; leads to buggy behaviour when a tty frame is opened
+         ;; later.  Setting the keyboard coding system has no adverse
+         ;; effect on X, so let's do it anyway. -- Lorentey
+         (let ((kcs (or coding-system
+                        (car (get-language-info language-name
+                                                'coding-system)))))
+           (if kcs (set-keyboard-coding-system kcs frame)))
+
+         (unless frame
+           (setq locale-coding-system
+                 (car (get-language-info language-name 'coding-priority)))))
+
+       (when (and (not frame)
+                  coding-system
                   (not (coding-system-equal coding-system
                                             locale-coding-system)))
          (prefer-coding-system coding-system)
@@ -2614,9 +2624,9 @@ See also `locale-charset-language-names', `locale-language-names',
     (when (boundp 'w32-ansi-code-page)
       (let ((code-page-coding (intern (format "cp%d" w32-ansi-code-page))))
        (when (coding-system-p code-page-coding)
-         (setq locale-coding-system code-page-coding)
-         (set-keyboard-coding-system code-page-coding)
-         (set-terminal-coding-system code-page-coding))))
+         (unless frame (setq locale-coding-system code-page-coding))
+         (set-keyboard-coding-system code-page-coding frame)
+         (set-terminal-coding-system code-page-coding frame))))
 
     (when (eq system-type 'darwin)
       ;; On Darwin, file names are always encoded in utf-8, no matter
@@ -2625,38 +2635,39 @@ See also `locale-charset-language-names', `locale-language-names',
       ;; Mac OS X's Terminal.app by default uses utf-8 regardless of
       ;; the locale.
       (when (and (null window-system)
-                (equal (getenv "TERM_PROGRAM") "Apple_Terminal"))
+                (equal (getenv "TERM_PROGRAM" frame) "Apple_Terminal"))
        (set-terminal-coding-system 'utf-8)
        (set-keyboard-coding-system 'utf-8)))
 
     ;; Default to A4 paper if we're not in a C, POSIX or US locale.
     ;; (See comments in Flocale_info.)
-    (let ((locale locale)
-         (paper (locale-info 'paper)))
-      (if paper
-         ;; This will always be null at the time of writing.
-         (cond
-          ((equal paper '(216 279))
-           (setq ps-paper-type 'letter))
-          ((equal paper '(210 297))
-           (setq ps-paper-type 'a4)))
-       (let ((vars '("LC_ALL" "LC_PAPER" "LANG")))
-         (while (and vars (= 0 (length locale)))
-           (setq locale (getenv (pop vars)))))
-       (when locale
-         ;; As of glibc 2.2.5, these are the only US Letter locales,
-         ;; and the rest are A4.
-         (setq ps-paper-type
-               (or (locale-name-match locale '(("c$" . letter)
-                                               ("posix$" . letter)
-                                               (".._us" . letter)
-                                               (".._pr" . letter)
-                                               (".._ca" . letter)
-                                               ("enu$" . letter) ; Windows
-                                               ("esu$" . letter)
-                                               ("enc$" . letter)
-                                               ("frc$" . letter)))
-                   'a4))))))
+    (unless frame
+      (let ((locale locale)
+           (paper (locale-info 'paper)))
+       (if paper
+           ;; This will always be null at the time of writing.
+           (cond
+            ((equal paper '(216 279))
+             (setq ps-paper-type 'letter))
+            ((equal paper '(210 297))
+             (setq ps-paper-type 'a4)))
+         (let ((vars '("LC_ALL" "LC_PAPER" "LANG")))
+           (while (and vars (= 0 (length locale)))
+             (setq locale (getenv (pop vars) frame))))
+         (when locale
+           ;; As of glibc 2.2.5, these are the only US Letter locales,
+           ;; and the rest are A4.
+           (setq ps-paper-type
+                 (or (locale-name-match locale '(("c$" . letter)
+                                                 ("posix$" . letter)
+                                                 (".._us" . letter)
+                                                 (".._pr" . letter)
+                                                 (".._ca" . letter)
+                                                 ("enu$" . letter) ; Windows
+                                                 ("esu$" . letter)
+                                                 ("enc$" . letter)
+                                                 ("frc$" . letter)))
+                     'a4)))))))
   nil)
 \f
 ;;; Charset property
index 21b0b3485f15e1af2b4cb33e4e2e4f23f34f916a..df01247cd013a8f97be38740512f12e888bb122e 100644 (file)
@@ -839,7 +839,7 @@ Priority order for recognizing coding systems when reading files:\n")
            coding-system codings)
        (while categories
          (setq coding-system (symbol-value (car categories)))
-         (mapcar
+         (mapc
           (lambda (x)
             (if (and (not (eq x coding-system))
                      (coding-system-get x 'no-initial-designation)
index 2d6a0ce5e88961501a0f28b41f69759444355e74..b19797f267e770e335a73e980d96c008c2a42d8a 100644 (file)
@@ -505,7 +505,7 @@ See also `coding-category-list'."
 (defun coding-system-base (coding-system)
   "Return the base coding system of CODING-SYSTEM.
 A base coding system is what made by `make-coding-system'.
-Any alias nor subsidiary coding systems are not base coding system."
+Neither aliases nor subsidiary coding systems are base coding systems."
   (car (coding-system-get coding-system 'alias-coding-systems)))
 
 ;; Coding system also has a property `eol-type'.
@@ -1233,13 +1233,17 @@ see) to CODING-SYSTEM."
 This is normally set according to the selected language environment.
 See also the command `set-terminal-coding-system'.")
 
-(defun set-terminal-coding-system (coding-system)
-  "Set coding system of your terminal to CODING-SYSTEM.
-All text output to the terminal will be encoded
+(defun set-terminal-coding-system (coding-system &optional display)
+  "Set coding system of terminal output to CODING-SYSTEM.
+All text output to DISPLAY will be encoded
 with the specified coding system.
+
 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems].
 The default is determined by the selected language environment
-or by the previous use of this command."
+or by the previous use of this command.
+
+DISPLAY may be a display id, a frame, or nil for the selected frame's display.
+The setting has no effect on graphical displays."
   (interactive
    (list (let ((default (if (and (not (terminal-coding-system))
                                 default-terminal-coding-system)
@@ -1253,7 +1257,7 @@ or by the previous use of this command."
       (setq coding-system default-terminal-coding-system))
   (if coding-system
       (setq default-terminal-coding-system coding-system))
-  (set-terminal-coding-system-internal coding-system)
+  (set-terminal-coding-system-internal coding-system display)
   (redraw-frame (selected-frame)))
 
 (defvar default-keyboard-coding-system nil
@@ -1261,14 +1265,17 @@ or by the previous use of this command."
 This is normally set according to the selected language environment.
 See also the command `set-keyboard-coding-system'.")
 
-(defun set-keyboard-coding-system (coding-system)
-  "Set coding system for keyboard input to CODING-SYSTEM.
-In addition, this command enables Encoded-kbd minor mode.
-\(If CODING-SYSTEM is nil, Encoded-kbd mode is turned off -- see
-`encoded-kbd-mode'.)
+(defun set-keyboard-coding-system (coding-system &optional display)
+  "Set coding system for keyboard input on DISPLAY to CODING-SYSTEM.
+In addition, this command calls `encoded-kbd-setup-display' to set up the
+translation of keyboard input events to the specified coding system.
+
 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems].
 The default is determined by the selected language environment
-or by the previous use of this command."
+or by the previous use of this command.
+
+DISPLAY may be a display id, a frame, or nil for the selected frame's display.
+The setting has no effect on graphical displays."
   (interactive
    (list (let ((default (if (and (not (keyboard-coding-system))
                                 default-keyboard-coding-system)
@@ -1285,9 +1292,9 @@ or by the previous use of this command."
   (if (and coding-system
           (coding-system-get coding-system 'ascii-incompatible))
       (error "%s is not ASCII-compatible" coding-system))
-  (set-keyboard-coding-system-internal coding-system)
+  (set-keyboard-coding-system-internal coding-system display)
   (setq keyboard-coding-system coding-system)
-  (encoded-kbd-mode (if coding-system 1 0)))
+  (encoded-kbd-setup-display display))
 
 (defcustom keyboard-coding-system nil
   "Specify coding system for keyboard input.
@@ -1303,8 +1310,8 @@ use either \\[customize] or \\[set-keyboard-coding-system]."
   :link '(info-link "(emacs)Terminal Coding")
   :link '(info-link "(emacs)Unibyte Mode")
   :set (lambda (symbol value)
-        ;; Don't load encoded-kbd-mode unnecessarily.
-        (if (or value (boundp 'encoded-kbd-mode))
+        ;; Don't load encoded-kb unnecessarily.
+        (if (or value (boundp 'encoded-kbd-setup-display))
             (set-keyboard-coding-system value)
           (set-default 'keyboard-coding-system nil))) ; must initialize
   :version "22.1"
@@ -1581,8 +1588,9 @@ text, and convert it in the temporary buffer.  Otherwise, convert in-place."
 (defcustom auto-coding-alist
   ;; .exe and .EXE are added to support archive-mode looking at DOS
   ;; self-extracting exe archives.
-  '(("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|exe\\)\\'" . no-conversion)
-    ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|EXE\\)\\'" . no-conversion)
+  '(("\\.\\(\
+arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|exe\\|rar\\|\
+ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|EXE\\|RAR\\)\\'" . no-conversion)
     ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion)
     ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
     ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
index f9f497699a0d28ba2b77f49274c30d4e0ed110e9..cddcf9867c2c7a8c7833562c0d55f3ebfffe8833 100644 (file)
@@ -55,7 +55,7 @@
 
 ;;; Code:
 
-(require 'help-mode)
+(eval-when-compile (require 'help-mode))
 
 (defgroup quail nil
   "Quail: multilingual input method."
@@ -2431,22 +2431,27 @@ should be made by `quail-build-decode-map' (which see)."
        (insert ?\n))
       (insert ?\n))))
 
-(define-button-type 'quail-keyboard-layout-button
-  :supertype 'help-xref
-  'help-function '(lambda (layout)
-                   (help-setup-xref `(quail-keyboard-layout-button ,layout) nil)
-                   (quail-show-keyboard-layout layout))
-  'help-echo (purecopy "mouse-2, RET: show keyboard layout"))
-
-(define-button-type 'quail-keyboard-customize-button
-  :supertype 'help-customize-variable
-  'help-echo (purecopy "mouse-2, RET: customize keyboard layout"))
+(defun quail-help-init ()
+  (unless (featurep 'help-mode)
+    (require 'help-mode)
+    (define-button-type 'quail-keyboard-layout-button
+      :supertype 'help-xref
+      'help-function '(lambda (layout)
+                       (help-setup-xref `(quail-keyboard-layout-button ,layout)
+                                        nil)
+                       (quail-show-keyboard-layout layout))
+      'help-echo (purecopy "mouse-2, RET: show keyboard layout"))
+
+    (define-button-type 'quail-keyboard-customize-button
+      :supertype 'help-customize-variable
+      'help-echo (purecopy "mouse-2, RET: customize keyboard layout"))))
 
 (defun quail-help (&optional package)
   "Show brief description of the current Quail package.
 Optional arg PACKAGE specifies the name of alternative Quail
 package to describe."
   (interactive)
+  (quail-help-init)
   (let ((help-xref-mule-regexp help-xref-mule-regexp-template)
        (default-enable-multibyte-characters enable-multibyte-characters)
        (package-def
@@ -2629,7 +2634,7 @@ KEY BINDINGS FOR CONVERSION
 ;; it is not yet stored.  As a result, the element is a string or a
 ;; list of strings.
 
-(defsubst quail-store-decode-map-key (table char key)
+(defun quail-store-decode-map-key (table char key)
   (let ((elt (aref table char)))
     (if elt
        (if (consp elt)
index 681d2454dc1e91a8a6863e6afa75e574e7fe85ae..39dd3239bf741174b6bddf16c2da6433d9231358 100644 (file)
@@ -991,16 +991,20 @@ Also compose particular scripts if `utf-8-compose-scripts' is non-nil."
            (set-buffer-multibyte nil)))
 
       (when (and utf-8-compose-scripts (> length 1))
-       ;; These currently have definitions which cover the relevant
-       ;; unicodes.  We could avoid loading thai-util &c by checking
-       ;; whether the region contains any characters with the appropriate
-       ;; categories.  There aren't yet Unicode-based rules for Tibetan.
-       (diacritic-compose-region (point-max) (point-min))
-       (thai-compose-region (point-max) (point-min))
-       (lao-compose-region (point-max) (point-min))
-       (devanagari-compose-region (point-max) (point-min))
-       (malayalam-compose-region (point-max) (point-min))
-       (tamil-compose-region (point-max) (point-min)))
+       ;; This let-binding avoids recursive auto-loading.  And, we
+       ;; anyway don't have to run the following code while
+       ;; auto-loading.
+       (let ((utf-8-compose-scripts nil))
+         ;; These currently have definitions which cover the relevant
+         ;; unicodes.  We could avoid loading thai-util &c by checking
+         ;; whether the region contains any characters with the appropriate
+         ;; categories.  There aren't yet Unicode-based rules for Tibetan.
+         (diacritic-compose-region (point-max) (point-min))
+         (thai-compose-region (point-max) (point-min))
+         (lao-compose-region (point-max) (point-min))
+         (devanagari-compose-region (point-max) (point-min))
+         (malayalam-compose-region (point-max) (point-min))
+         (tamil-compose-region (point-max) (point-min))))
       (- (point-max) (point-min)))))
 
 (defun utf-8-pre-write-conversion (beg end)
index cc68ee297bdafed401b92188cbc313bfce6a8953..e0cba48eed996771eb0792d48b30303ced91d8b2 100644 (file)
@@ -164,6 +164,10 @@ is non-nil if the user quit the search.")
 (defvar isearch-mode-end-hook-quit nil
   "Non-nil while running `isearch-mode-end-hook' if user quit the search.")
 
+(defvar isearch-message-function nil
+  "Function to call to display the search prompt.
+If nil, use `isearch-message'.")
+
 (defvar isearch-wrap-function nil
   "Function to call to wrap the search when search is failed.
 If nil, move point to the beginning of the buffer for a forward search,
@@ -715,7 +719,9 @@ is treated as a regexp.  See \\[isearch-forward] for more info."
           (null executing-kbd-macro))
       (progn
         (if (not (input-pending-p))
-            (isearch-message))
+           (if isearch-message-function
+               (funcall isearch-message-function)
+             (isearch-message)))
         (if (and isearch-slow-terminal-mode
                  (not (or isearch-small-window
                           (pos-visible-in-window-p))))
@@ -1661,7 +1667,7 @@ Isearch mode."
         (keylist (listify-key-sequence key))
          scroll-command isearch-point)
     (cond ((and (= (length key) 1)
-               (let ((lookup (lookup-key function-key-map key)))
+               (let ((lookup (lookup-key local-function-key-map key)))
                  (not (or (null lookup) (integerp lookup)
                           (keymapp lookup)))))
           ;; Handle a function key that translates into something else.
@@ -1675,7 +1681,7 @@ Isearch mode."
                 (isearch-done)
                 (apply 'isearch-unread keylist))
             (setq keylist
-                  (listify-key-sequence (lookup-key function-key-map key)))
+                  (listify-key-sequence (lookup-key local-function-key-map key)))
             (while keylist
               (setq key (car keylist))
               ;; If KEY is a printing char, we handle it here
@@ -2035,7 +2041,9 @@ Can be changed via `isearch-search-fun-function' for special needs."
 
 (defun isearch-search ()
   ;; Do the search with the current search string.
-  (isearch-message nil t)
+  (if isearch-message-function
+      (funcall isearch-message-function nil t)
+    (isearch-message nil t))
   (if (and (eq isearch-case-fold-search t) search-upper-case)
       (setq isearch-case-fold-search
            (isearch-no-upper-case-p isearch-string isearch-regexp)))
index 7e15af0d75f4b0b79aef12d8e810ba25f0fc20a0..8c388d0cb34ffb7630375f7f237a6d3e73e1f754 100644 (file)
@@ -97,7 +97,7 @@ The determination as to which compression scheme, if any, to use is
 based on the filename itself and `jka-compr-compression-info-list'."
   (catch 'compression-info
     (let ((case-fold-search nil))
-      (mapcar
+      (mapc
        (function (lambda (x)
                   (and (string-match (jka-compr-info-regexp x) filename)
                        (throw 'compression-info x))))
@@ -183,10 +183,11 @@ options through Custom does this automatically."
   ;;[regexp
   ;; compr-message  compr-prog  compr-args
   ;; uncomp-message uncomp-prog uncomp-args
-  ;; can-append auto-mode-flag strip-extension-flag file-magic-bytes]
+  ;; can-append strip-extension-flag file-magic-bytes]
   '(["\\.Z\\(~\\|\\.~[0-9]+~\\)?\\'"
      "compressing"    "compress"     ("-c")
-     "uncompressing"  "uncompress"   ("-c")
+     ;; gzip is more common than uncompress. It can only read, not write.
+     "uncompressing"  "gzip"   ("-c" "-q" "-d")
      nil t "\037\235"]
      ;; Formerly, these had an additional arg "-c", but that fails with
      ;; "Version 0.1pl2, 29-Aug-97." (RedHat 5.1 GNU/Linux) and
@@ -199,7 +200,7 @@ options through Custom does this automatically."
      "bzip2ing"        "bzip2"         nil
      "bunzip2ing"      "bzip2"         ("-d")
      nil nil "BZh"]
-    ["\\.tgz\\'"
+    ["\\.\\(?:tgz\\|svgz\\)\\'"
      "compressing"        "gzip"         ("-c" "-q")
      "uncompressing"      "gzip"         ("-c" "-q" "-d")
      t nil "\037\213"]
index c9c5066f88c348da66a47a6353235de1d0c6dee6..096d35bebbd96f531ad50212aa566447c57752b9 100644 (file)
@@ -606,8 +606,11 @@ An argument of zero means repeat until error."
   (unless executing-kbd-macro
     (end-kbd-macro arg #'kmacro-loop-setup-function)
     (when (and last-kbd-macro (= (length last-kbd-macro) 0))
+      (setq last-kbd-macro nil)
       (message "Ignore empty macro")
-      (kmacro-pop-ring))))
+      ;; Don't call `kmacro-ring-empty-p' to avoid its messages.
+      (while (and (null last-kbd-macro) kmacro-ring)
+       (kmacro-pop-ring1)))))
 
 
 ;;;###autoload
index 16b0b2152e1bb19cd2fa14ed480a93366945be9e..195a18a10fd66b08931ee02f36a1b5a4e21dfec1 100644 (file)
@@ -1061,7 +1061,7 @@ See also the descriptions of the variables
       (aset ethio-fidel-to-sera-map 359 "`?")
       (aset ethio-fidel-to-sera-map 463 "?"))
 
-    (mapcar
+    (mapc
      '(lambda (x)
        (aset (aref ethio-fidel-to-sera-map x)
              2
index 25df6135e3e554f07a17d873465d4f534b1520d6..4a443629d380596d70061ec5934e541c2e0a42c0 100644 (file)
@@ -4,7 +4,7 @@
 \f
 ;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best
 ;;;;;;  5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5"
-;;;;;;  "play/5x5.el" (17941 38806))
+;;;;;;  "play/5x5.el" (18104 24760))
 ;;; Generated autoloads from play/5x5.el
 
 (autoload (quote 5x5) "5x5" "\
@@ -63,14 +63,14 @@ should return a grid vector array that is the new solution.
 
 ;;;***
 \f
-;;;### (autoloads nil "abbrev" "abbrev.el" (17905 55681))
+;;;### (autoloads nil "abbrev" "abbrev.el" (18104 24730))
 ;;; Generated autoloads from abbrev.el
 (put 'abbrev-mode 'safe-local-variable 'booleanp)
 
 ;;;***
 \f
 ;;;### (autoloads (list-one-abbrev-table) "abbrevlist" "abbrevlist.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24730))
 ;;; Generated autoloads from abbrevlist.el
 
 (autoload (quote list-one-abbrev-table) "abbrevlist" "\
@@ -81,7 +81,7 @@ Display alphabetical listing of ABBREV-TABLE in buffer OUTPUT-BUFFER.
 ;;;***
 \f
 ;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24762))
 ;;; Generated autoloads from progmodes/ada-mode.el
 
 (autoload (quote ada-add-extensions) "ada-mode" "\
@@ -142,7 +142,7 @@ If you use ada-xref.el:
 ;;;***
 \f
 ;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24762))
 ;;; Generated autoloads from progmodes/ada-stmt.el
 
 (autoload (quote ada-header) "ada-stmt" "\
@@ -153,7 +153,7 @@ Insert a descriptive header at the top of the file.
 ;;;***
 \f
 ;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24762))
 ;;; Generated autoloads from progmodes/ada-xref.el
 
 (autoload (quote ada-find-file) "ada-xref" "\
@@ -164,22 +164,22 @@ Completion is available.
 
 ;;;***
 \f
-;;;### (autoloads (change-log-redate change-log-merge add-log-current-defun
-;;;;;;  change-log-mode add-change-log-entry-other-window add-change-log-entry
-;;;;;;  find-change-log prompt-for-change-log-name add-log-mailing-address
-;;;;;;  add-log-full-name add-log-current-defun-function) "add-log"
-;;;;;;  "add-log.el" (17851 44469))
+;;;### (autoloads (change-log-merge add-log-current-defun change-log-mode
+;;;;;;  add-change-log-entry-other-window add-change-log-entry find-change-log
+;;;;;;  prompt-for-change-log-name add-log-mailing-address add-log-full-name
+;;;;;;  add-log-current-defun-function) "add-log" "add-log.el" (18104
+;;;;;;  24730))
 ;;; Generated autoloads from add-log.el
 
 (defvar add-log-current-defun-function nil "\
-*If non-nil, function to guess name of surrounding function.
+If non-nil, function to guess name of surrounding function.
 It is used by `add-log-current-defun' in preference to built-in rules.
 Returns function's name as a string, or nil if outside a function.")
 
 (custom-autoload (quote add-log-current-defun-function) "add-log" t)
 
 (defvar add-log-full-name nil "\
-*Full name of user, for inclusion in ChangeLog daily headers.
+Full name of user, for inclusion in ChangeLog daily headers.
 This defaults to the value returned by the function `user-full-name'.")
 
 (custom-autoload (quote add-log-full-name) "add-log" t)
@@ -267,7 +267,7 @@ Runs `change-log-mode-hook'.
 (defvar add-log-c-like-modes (quote (c-mode c++-mode c++-c-mode objc-mode)) "\
 *Modes that look like C to `add-log-current-defun'.")
 
-(defvar add-log-tex-like-modes (quote (TeX-mode plain-TeX-mode LaTeX-mode plain-tex-mode latex-mode)) "\
+(defvar add-log-tex-like-modes (quote (TeX-mode plain-TeX-mode LaTeX-mode tex-mode)) "\
 *Modes that look like TeX to `add-log-current-defun'.")
 
 (autoload (quote add-log-current-defun) "add-log" "\
@@ -297,16 +297,11 @@ old-style time formats for entries are supported.
 
 \(fn OTHER-LOG)" t nil)
 
-(autoload (quote change-log-redate) "add-log" "\
-Fix any old-style date entries in the current log file to default format.
-
-\(fn)" t nil)
-
 ;;;***
 \f
 ;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice
 ;;;;;;  ad-enable-advice ad-default-compilation-action ad-redefinition-action)
-;;;;;;  "advice" "emacs-lisp/advice.el" (17992 30878))
+;;;;;;  "advice" "emacs-lisp/advice.el" (18104 24745))
 ;;; Generated autoloads from emacs-lisp/advice.el
 
 (defvar ad-redefinition-action (quote warn) "\
@@ -383,7 +378,7 @@ The syntax of `defadvice' is as follows:
 
   (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
     [DOCSTRING] [INTERACTIVE-FORM]
-    BODY... )
+    BODY...)
 
 FUNCTION ::= Name of the function to be advised.
 CLASS ::= `before' | `around' | `after' | `activation' | `deactivation'.
@@ -434,7 +429,7 @@ See Info node `(elisp)Advising Functions' for comprehensive documentation.
 \f
 ;;;### (autoloads (align-newline-and-indent align-unhighlight-rule
 ;;;;;;  align-highlight-rule align-current align-entire align-regexp
-;;;;;;  align) "align" "align.el" (17842 58280))
+;;;;;;  align) "align" "align.el" (18104 24730))
 ;;; Generated autoloads from align.el
 
 (autoload (quote align) "align" "\
@@ -524,7 +519,7 @@ A replacement function for `newline-and-indent', aligning as it goes.
 ;;;***
 \f
 ;;;### (autoloads (outlineify-sticky allout-mode) "allout" "allout.el"
-;;;;;;  (17892 52945))
+;;;;;;  (18104 24730))
 ;;; Generated autoloads from allout.el
 
 (put (quote allout-show-bodies) (quote safe-local-variable) (if (fboundp (quote booleanp)) (quote booleanp) (quote (lambda (x) (member x (quote (t nil)))))))
@@ -830,7 +825,7 @@ setup for auto-startup.
 ;;;***
 \f
 ;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp"
-;;;;;;  "net/ange-ftp.el" (17905 9579))
+;;;;;;  "net/ange-ftp.el" (18104 24759))
 ;;; Generated autoloads from net/ange-ftp.el
 
 (defalias (quote ange-ftp-re-read-dir) (quote ange-ftp-reread-dir))
@@ -852,7 +847,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
-;;;;;;  "animate" "play/animate.el" (17941 38806))
+;;;;;;  "animate" "play/animate.el" (18104 24760))
 ;;; Generated autoloads from play/animate.el
 
 (autoload (quote animate-string) "animate" "\
@@ -880,7 +875,7 @@ You can specify the one's name by NAME; the default value is \"Sarah\".
 ;;;***
 \f
 ;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on)
-;;;;;;  "ansi-color" "ansi-color.el" (17842 58280))
+;;;;;;  "ansi-color" "ansi-color.el" (18104 24730))
 ;;; Generated autoloads from ansi-color.el
 
 (autoload (quote ansi-color-for-comint-mode-on) "ansi-color" "\
@@ -906,7 +901,7 @@ This is a good function to put in `comint-output-filter-functions'.
 ;;;***
 \f
 ;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules)
-;;;;;;  "antlr-mode" "progmodes/antlr-mode.el" (17833 42928))
+;;;;;;  "antlr-mode" "progmodes/antlr-mode.el" (18104 24763))
 ;;; Generated autoloads from progmodes/antlr-mode.el
 
 (autoload (quote antlr-show-makefile-rules) "antlr-mode" "\
@@ -945,7 +940,7 @@ Used in `antlr-mode'.  Also a useful function in `java-mode-hook'.
 ;;;### (autoloads (appt-activate appt-make-list appt-delete appt-add
 ;;;;;;  appt-display-diary appt-display-duration appt-display-mode-line
 ;;;;;;  appt-msg-window appt-visible appt-audible appt-message-warning-time
-;;;;;;  appt-issue-message) "appt" "calendar/appt.el" (17952 17513))
+;;;;;;  appt-issue-message) "appt" "calendar/appt.el" (18104 24745))
 ;;; Generated autoloads from calendar/appt.el
 
 (defvar appt-issue-message t "\
@@ -1033,7 +1028,7 @@ ARG is positive, otherwise off.
 \f
 ;;;### (autoloads (apropos-documentation apropos-value apropos apropos-documentation-property
 ;;;;;;  apropos-command apropos-variable apropos-read-pattern) "apropos"
-;;;;;;  "apropos.el" (17842 58280))
+;;;;;;  "apropos.el" (18104 24730))
 ;;; Generated autoloads from apropos.el
 
 (autoload (quote apropos-read-pattern) "apropos" "\
@@ -1129,8 +1124,8 @@ Returns list of symbols and documentation found.
 
 ;;;***
 \f
-;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (17960
-;;;;;;  49045))
+;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (18104
+;;;;;;  24730))
 ;;; Generated autoloads from arc-mode.el
 
 (autoload (quote archive-mode) "arc-mode" "\
@@ -1150,7 +1145,7 @@ archive.
 
 ;;;***
 \f
-;;;### (autoloads (array-mode) "array" "array.el" (17842 58280))
+;;;### (autoloads (array-mode) "array" "array.el" (18104 24730))
 ;;; Generated autoloads from array.el
 
 (autoload (quote array-mode) "array" "\
@@ -1221,8 +1216,8 @@ Entering array mode calls the function `array-mode-hook'.
 
 ;;;***
 \f
-;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (17842
-;;;;;;  58277))
+;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (18104
+;;;;;;  24770))
 ;;; Generated autoloads from textmodes/artist.el
 
 (autoload (quote artist-mode) "artist" "\
@@ -1427,8 +1422,8 @@ Keymap summary
 
 ;;;***
 \f
-;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (17842
-;;;;;;  56333))
+;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (18104
+;;;;;;  24763))
 ;;; Generated autoloads from progmodes/asm-mode.el
 
 (autoload (quote asm-mode) "asm-mode" "\
@@ -1453,10 +1448,26 @@ Special commands:
 
 \(fn)" t nil)
 
+;;;***
+\f
+;;;### (autoloads (auto-show-mode auto-show-mode) "auto-show" "obsolete/auto-show.el"
+;;;;;;  (17994 6715))
+;;; Generated autoloads from obsolete/auto-show.el
+
+(defvar auto-show-mode nil "\
+Obsolete.")
+
+(custom-autoload (quote auto-show-mode) "auto-show" t)
+
+(autoload (quote auto-show-mode) "auto-show" "\
+This command is obsolete.
+
+\(fn ARG)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24730))
 ;;; Generated autoloads from autoarg.el
 
 (defvar autoarg-mode nil "\
@@ -1510,7 +1521,7 @@ etc. to supply digit arguments.
 ;;;***
 \f
 ;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24763))
 ;;; Generated autoloads from progmodes/autoconf.el
 
 (autoload (quote autoconf-mode) "autoconf" "\
@@ -1521,7 +1532,7 @@ Major mode for editing Autoconf configure.in files.
 ;;;***
 \f
 ;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert)
-;;;;;;  "autoinsert" "autoinsert.el" (17842 58280))
+;;;;;;  "autoinsert" "autoinsert.el" (18104 24730))
 ;;; Generated autoloads from autoinsert.el
 
 (autoload (quote auto-insert) "autoinsert" "\
@@ -1560,9 +1571,11 @@ insert a template for the file depending on the mode of the buffer.
 \f
 ;;;### (autoloads (batch-update-autoloads update-directory-autoloads
 ;;;;;;  update-file-autoloads) "autoload" "emacs-lisp/autoload.el"
-;;;;;;  (17860 50557))
+;;;;;;  (18104 24745))
 ;;; Generated autoloads from emacs-lisp/autoload.el
 
+(put (quote generated-autoload-file) (quote safe-local-variable) (quote stringp))
+
 (autoload (quote update-file-autoloads) "autoload" "\
 Update the autoloads for FILE in `generated-autoload-file'
 \(which FILE might bind in its local variables).
@@ -1595,7 +1608,7 @@ Calls `update-directory-autoloads' on the command line arguments.
 \f
 ;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode
 ;;;;;;  auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode)
-;;;;;;  "autorevert" "autorevert.el" (17925 15265))
+;;;;;;  "autorevert" "autorevert.el" (18104 24730))
 ;;; Generated autoloads from autorevert.el
 
 (autoload (quote auto-revert-mode) "autorevert" "\
@@ -1664,7 +1677,7 @@ Use `auto-revert-mode' to revert a particular buffer.
 ;;;***
 \f
 ;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid"
-;;;;;;  "avoid.el" (17842 58280))
+;;;;;;  "avoid.el" (18104 24730))
 ;;; Generated autoloads from avoid.el
 
 (defvar mouse-avoidance-mode nil "\
@@ -1705,7 +1718,7 @@ definition of \"random distance\".)
 ;;;***
 \f
 ;;;### (autoloads (backquote) "backquote" "emacs-lisp/backquote.el"
-;;;;;;  (17842 54152))
+;;;;;;  (18104 24745))
 ;;; Generated autoloads from emacs-lisp/backquote.el
 
 (autoload (quote backquote) "backquote" "\
@@ -1730,7 +1743,7 @@ Vectors work just like lists.  Nested backquotes are permitted.
 ;;;***
 \f
 ;;;### (autoloads (display-battery-mode battery) "battery" "battery.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24730))
 ;;; Generated autoloads from battery.el
  (put 'battery-mode-line-string 'risky-local-variable t)
 
@@ -1762,7 +1775,7 @@ seconds.
 ;;;***
 \f
 ;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run)
-;;;;;;  "benchmark" "emacs-lisp/benchmark.el" (17842 54152))
+;;;;;;  "benchmark" "emacs-lisp/benchmark.el" (18104 24745))
 ;;; Generated autoloads from emacs-lisp/benchmark.el
 
 (autoload (quote benchmark-run) "benchmark" "\
@@ -1794,8 +1807,8 @@ non-interactive use see also `benchmark-run' and
 
 ;;;***
 \f
-;;;### (autoloads (bibtex-mode) "bibtex" "textmodes/bibtex.el" (17956
-;;;;;;  21270))
+;;;### (autoloads (bibtex-mode) "bibtex" "textmodes/bibtex.el" (18104
+;;;;;;  24770))
 ;;; Generated autoloads from textmodes/bibtex.el
 
 (autoload (quote bibtex-mode) "bibtex" "\
@@ -1853,11 +1866,23 @@ if that value is non-nil.
 
 \(fn)" t nil)
 
+;;;***
+\f
+;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el"
+;;;;;;  (18104 24770))
+;;; Generated autoloads from textmodes/bibtex-style.el
+ (add-to-list 'auto-mode-alist '("\\.bst\\'" . bibtex-style-mode))
+
+(autoload (quote bibtex-style-mode) "bibtex-style" "\
+Major mode for editing BibTeX style files.
+
+\(fn)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (binhex-decode-region binhex-decode-region-external
 ;;;;;;  binhex-decode-region-internal) "binhex" "gnus/binhex.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/binhex.el
 
 (defconst binhex-begin-line "^:...............................................................$")
@@ -1880,8 +1905,8 @@ Binhex decode region between START and END.
 
 ;;;***
 \f
-;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (17842
-;;;;;;  55395))
+;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (18104
+;;;;;;  24760))
 ;;; Generated autoloads from play/blackbox.el
 
 (autoload (quote blackbox) "blackbox" "\
@@ -2002,8 +2027,9 @@ a reflection.
 \f
 ;;;### (autoloads (bookmark-bmenu-list bookmark-load bookmark-save
 ;;;;;;  bookmark-write bookmark-delete bookmark-insert bookmark-rename
-;;;;;;  bookmark-insert-location bookmark-relocate bookmark-jump
-;;;;;;  bookmark-set) "bookmark" "bookmark.el" (17842 58280))
+;;;;;;  bookmark-insert-location bookmark-relocate bookmark-jump-other-window
+;;;;;;  bookmark-jump bookmark-set) "bookmark" "bookmark.el" (18104
+;;;;;;  24730))
 ;;; Generated autoloads from bookmark.el
  (define-key ctl-x-map "rb" 'bookmark-jump)
  (define-key ctl-x-map "rm" 'bookmark-set)
@@ -2017,12 +2043,13 @@ key of your choice to `bookmark-map'.  All interactive bookmark
 functions have a binding in this keymap.")
  (define-prefix-command 'bookmark-map)
  (define-key bookmark-map "x" 'bookmark-set)
- (define-key bookmark-map "m" 'bookmark-set) ; "m" for "mark"
+ (define-key bookmark-map "m" 'bookmark-set) ;"m"ark
  (define-key bookmark-map "j" 'bookmark-jump)
- (define-key bookmark-map "g" 'bookmark-jump) ; "g" for "go"
+ (define-key bookmark-map "g" 'bookmark-jump) ;"g"o
+ (define-key bookmark-map "o" 'bookmark-jump-other-window)
  (define-key bookmark-map "i" 'bookmark-insert)
  (define-key bookmark-map "e" 'edit-bookmarks)
- (define-key bookmark-map "f" 'bookmark-insert-location) ; "f" for "find"
+ (define-key bookmark-map "f" 'bookmark-insert-location) ;"f"ind
  (define-key bookmark-map "r" 'bookmark-rename)
  (define-key bookmark-map "d" 'bookmark-delete)
  (define-key bookmark-map "l" 'bookmark-load)
@@ -2068,6 +2095,12 @@ of the old one in the permanent bookmark record.
 
 \(fn BOOKMARK)" t nil)
 
+(autoload (quote bookmark-jump-other-window) "bookmark" "\
+Jump to BOOKMARK (a point in some file) in another window.
+See `bookmark-jump'.
+
+\(fn BOOKMARK)" t nil)
+
 (autoload (quote bookmark-relocate) "bookmark" "\
 Relocate BOOKMARK to another file (reading file name with minibuffer).
 This makes an already existing bookmark point to that file, instead of
@@ -2193,7 +2226,7 @@ deletion, or > if it is flagged for displaying.
 ;;;;;;  browse-url browse-url-of-region browse-url-of-dired-file
 ;;;;;;  browse-url-of-buffer browse-url-of-file browse-url-url-at-point
 ;;;;;;  browse-url-galeon-program browse-url-firefox-program browse-url-browser-function)
-;;;;;;  "browse-url" "net/browse-url.el" (17842 55218))
+;;;;;;  "browse-url" "net/browse-url.el" (18104 24759))
 ;;; Generated autoloads from net/browse-url.el
 
 (defvar browse-url-browser-function (cond ((memq system-type (quote (windows-nt ms-dos cygwin))) (quote browse-url-default-windows-browser)) ((memq system-type (quote (darwin))) (quote browse-url-default-macosx-browser)) (t (quote browse-url-default-browser))) "\
@@ -2524,8 +2557,8 @@ Default to the URL around or before point.
 
 ;;;***
 \f
-;;;### (autoloads (snarf-bruces bruce) "bruce" "play/bruce.el" (17842
-;;;;;;  55395))
+;;;### (autoloads (snarf-bruces bruce) "bruce" "play/bruce.el" (18104
+;;;;;;  24760))
 ;;; Generated autoloads from play/bruce.el
 
 (autoload (quote bruce) "bruce" "\
@@ -2541,7 +2574,7 @@ Return a vector containing the lines from `bruce-phrases-file'.
 ;;;***
 \f
 ;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next)
-;;;;;;  "bs" "bs.el" (17842 58280))
+;;;;;;  "bs" "bs.el" (18104 24730))
 ;;; Generated autoloads from bs.el
 
 (autoload (quote bs-cycle-next) "bs" "\
@@ -2582,8 +2615,8 @@ name of buffer configuration.
 ;;;***
 \f
 ;;;### (autoloads (insert-text-button make-text-button insert-button
-;;;;;;  make-button define-button-type) "button" "button.el" (17992
-;;;;;;  30877))
+;;;;;;  make-button define-button-type) "button" "button.el" (18104
+;;;;;;  24730))
 ;;; Generated autoloads from button.el
 
 (defvar button-map (let ((map (make-sparse-keymap))) (define-key map "\r" (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\
@@ -2671,7 +2704,7 @@ Also see `make-text-button'.
 ;;;;;;  batch-byte-compile-if-not-done display-call-tree byte-compile
 ;;;;;;  compile-defun byte-compile-file byte-recompile-directory
 ;;;;;;  byte-force-recompile byte-compile-warnings-safe-p) "bytecomp"
-;;;;;;  "emacs-lisp/bytecomp.el" (17949 41467))
+;;;;;;  "emacs-lisp/bytecomp.el" (18104 24746))
 ;;; 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)
@@ -2777,7 +2810,7 @@ and corresponding effects.
 
 ;;;***
 \f
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (17956 13479))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (18104 24745))
 ;;; Generated autoloads from calendar/cal-dst.el
 
 (put (quote calendar-daylight-savings-starts) (quote risky-local-variable) t)
@@ -2787,7 +2820,7 @@ and corresponding effects.
 ;;;***
 \f
 ;;;### (autoloads (list-yahrzeit-dates) "cal-hebrew" "calendar/cal-hebrew.el"
-;;;;;;  (17956 13479))
+;;;;;;  (18104 24745))
 ;;; Generated autoloads from calendar/cal-hebrew.el
 
 (autoload (quote list-yahrzeit-dates) "cal-hebrew" "\
@@ -2802,7 +2835,7 @@ from the cursor position.
 ;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle
 ;;;;;;  calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc
 ;;;;;;  full-calc calc calc-dispatch calc-settings-file) "calc" "calc/calc.el"
-;;;;;;  (17965 11665))
+;;;;;;  (18104 24745))
 ;;; Generated autoloads from calc/calc.el
 
 (defvar calc-settings-file (convert-standard-filename "~/.calc.el") "\
@@ -2880,8 +2913,8 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads (calculator) "calculator" "calculator.el" (17870
-;;;;;;  28179))
+;;;### (autoloads (calculator) "calculator" "calculator.el" (18104
+;;;;;;  24730))
 ;;; Generated autoloads from calculator.el
 
 (autoload (quote calculator) "calculator" "\
@@ -2909,7 +2942,7 @@ See the documentation for `calculator-mode' for more information.
 ;;;;;;  mark-holidays-in-calendar view-calendar-holidays-initially
 ;;;;;;  calendar-remove-frame-by-deleting mark-diary-entries-in-calendar
 ;;;;;;  view-diary-entries-initially calendar-offset) "calendar"
-;;;;;;  "calendar/calendar.el" (17956 13479))
+;;;;;;  "calendar/calendar.el" (18104 24745))
 ;;; Generated autoloads from calendar/calendar.el
 
 (defvar calendar-offset 0 "\
@@ -3482,7 +3515,7 @@ movement commands will not work correctly.")
 ;;;***
 \f
 ;;;### (autoloads (canlock-verify canlock-insert-header) "canlock"
-;;;;;;  "gnus/canlock.el" (17842 54741))
+;;;;;;  "gnus/canlock.el" (18104 24750))
 ;;; Generated autoloads from gnus/canlock.el
 
 (autoload (quote canlock-insert-header) "canlock" "\
@@ -3499,15 +3532,15 @@ it fails.
 
 ;;;***
 \f
-;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (17842
-;;;;;;  56333))
+;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (18104
+;;;;;;  24763))
 ;;; Generated autoloads from progmodes/cc-compat.el
 (put 'c-indent-level 'safe-local-variable 'integerp)
 
 ;;;***
 \f
 ;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
-;;;;;;  (17942 63381))
+;;;;;;  (18104 24763))
 ;;; Generated autoloads from progmodes/cc-engine.el
 
 (autoload (quote c-guess-basic-syntax) "cc-engine" "\
@@ -3519,7 +3552,7 @@ Return the syntactic context of the current line.
 \f
 ;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode
 ;;;;;;  c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
-;;;;;;  (17992 30878))
+;;;;;;  (18104 24763))
 ;;; Generated autoloads from progmodes/cc-mode.el
 
 (autoload (quote c-initialize-cc-mode) "cc-mode" "\
@@ -3677,7 +3710,7 @@ Key bindings:
 ;;;***
 \f
 ;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles"
-;;;;;;  "progmodes/cc-styles.el" (17842 56333))
+;;;;;;  "progmodes/cc-styles.el" (18104 24764))
 ;;; Generated autoloads from progmodes/cc-styles.el
 
 (autoload (quote c-set-style) "cc-styles" "\
@@ -3728,14 +3761,14 @@ and exists only for compatibility reasons.
 
 ;;;***
 \f
-;;;### (autoloads nil "cc-subword" "progmodes/cc-subword.el" (17949
-;;;;;;  41467))
+;;;### (autoloads nil "cc-subword" "progmodes/cc-subword.el" (18104
+;;;;;;  24764))
 ;;; Generated autoloads from progmodes/cc-subword.el
  (autoload 'c-subword-mode "cc-subword" "Mode enabling subword movement and editing keys." t)
 
 ;;;***
 \f
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17941 38806))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (18104 24764))
 ;;; Generated autoloads from progmodes/cc-vars.el
 (put 'c-basic-offset 'safe-local-variable 'integerp)
 (put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3745,7 +3778,7 @@ and exists only for compatibility reasons.
 \f
 ;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program
 ;;;;;;  declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el"
-;;;;;;  (17842 54888))
+;;;;;;  (18104 24756))
 ;;; Generated autoloads from international/ccl.el
 
 (autoload (quote ccl-compile) "ccl" "\
@@ -4004,7 +4037,7 @@ See the documentation of `define-ccl-program' for the detail of CCL program.
 ;;;***
 \f
 ;;;### (autoloads (cfengine-mode) "cfengine" "progmodes/cfengine.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24764))
 ;;; Generated autoloads from progmodes/cfengine.el
 
 (autoload (quote cfengine-mode) "cfengine" "\
@@ -4026,7 +4059,7 @@ to the action header.
 ;;;;;;  checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer
 ;;;;;;  checkdoc-eval-current-buffer checkdoc-message-interactive
 ;;;;;;  checkdoc-interactive checkdoc) "checkdoc" "emacs-lisp/checkdoc.el"
-;;;;;;  (17842 54152))
+;;;;;;  (18104 24746))
 ;;; Generated autoloads from emacs-lisp/checkdoc.el
 
 (autoload (quote checkdoc) "checkdoc" "\
@@ -4209,8 +4242,8 @@ checking of documentation strings.
 ;;;***
 \f
 ;;;### (autoloads (encode-hz-buffer encode-hz-region decode-hz-buffer
-;;;;;;  decode-hz-region) "china-util" "language/china-util.el" (17842
-;;;;;;  58278))
+;;;;;;  decode-hz-region) "china-util" "language/china-util.el" (18104
+;;;;;;  24757))
 ;;; Generated autoloads from language/china-util.el
 
 (autoload (quote decode-hz-region) "china-util" "\
@@ -4238,7 +4271,7 @@ Encode the text in the current buffer to HZ.
 ;;;***
 \f
 ;;;### (autoloads (command-history list-command-history repeat-matching-complex-command)
-;;;;;;  "chistory" "chistory.el" (17842 58280))
+;;;;;;  "chistory" "chistory.el" (18104 24730))
 ;;; Generated autoloads from chistory.el
 
 (autoload (quote repeat-matching-complex-command) "chistory" "\
@@ -4277,7 +4310,7 @@ and runs the normal hook `command-history-hook'.
 
 ;;;***
 \f
-;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (17842 54152))
+;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (18104 24747))
 ;;; Generated autoloads from emacs-lisp/cl.el
 
 (defvar custom-print-functions nil "\
@@ -4293,7 +4326,7 @@ a future Emacs interpreter will be able to use it.")
 ;;;***
 \f
 ;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el"
-;;;;;;  (17842 54152))
+;;;;;;  (18104 24746))
 ;;; Generated autoloads from emacs-lisp/cl-indent.el
 
 (autoload (quote common-lisp-indent-function) "cl-indent" "\
@@ -4304,7 +4337,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24764))
 ;;; Generated autoloads from progmodes/cmacexp.el
 
 (autoload (quote c-macro-expand) "cmacexp" "\
@@ -4324,8 +4357,8 @@ For use inside Lisp programs, see also `c-macro-expansion'.
 
 ;;;***
 \f
-;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (17842
-;;;;;;  58280))
+;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (18104
+;;;;;;  24730))
 ;;; Generated autoloads from cmuscheme.el
 
 (autoload (quote run-scheme) "cmuscheme" "\
@@ -4347,7 +4380,7 @@ is run).
 ;;;***
 \f
 ;;;### (autoloads (cp-make-coding-system) "code-pages" "international/code-pages.el"
-;;;;;;  (17842 54888))
+;;;;;;  (18104 24756))
 ;;; Generated autoloads from international/code-pages.el
 
 (autoload (quote cp-make-coding-system) "code-pages" "\
@@ -4408,7 +4441,7 @@ Return an updated `non-iso-charset-alist'.
 \f
 ;;;### (autoloads (codepage-setup cp-supported-codepages cp-offset-for-codepage
 ;;;;;;  cp-language-for-codepage cp-charset-for-codepage cp-make-coding-systems-for-codepage)
-;;;;;;  "codepage" "international/codepage.el" (17842 54888))
+;;;;;;  "codepage" "international/codepage.el" (18104 24756))
 ;;; Generated autoloads from international/codepage.el
 
 (autoload (quote cp-make-coding-systems-for-codepage) "codepage" "\
@@ -4467,7 +4500,7 @@ read/written by MS-DOS software, or for display on the MS-DOS terminal.
 ;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list
 ;;;;;;  comint-redirect-send-command-to-process comint-redirect-send-command
 ;;;;;;  comint-run make-comint make-comint-in-buffer) "comint" "comint.el"
-;;;;;;  (17937 3189))
+;;;;;;  (18104 24730))
 ;;; Generated autoloads from comint.el
 
 (defvar comint-output-filter-functions (quote (comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) "\
@@ -4489,9 +4522,9 @@ either globally or locally.")
 Make a Comint process NAME in BUFFER, running PROGRAM.
 If BUFFER is nil, it defaults to NAME surrounded by `*'s.
 PROGRAM should be either a string denoting an executable program to create
-via `start-process', or a cons pair of the form (HOST . SERVICE) denoting a TCP
-connection to be opened via `open-network-stream'.  If there is already a
-running process in that buffer, it is not restarted.  Optional fourth arg
+via `start-file-process', or a cons pair of the form (HOST . SERVICE) denoting
+a TCP connection to be opened via `open-network-stream'.  If there is already
+running process in that buffer, it is not restarted.  Optional fourth arg
 STARTFILE is the name of a file to send the contents of to the process.
 
 If PROGRAM is a string, any more args are arguments to PROGRAM.
@@ -4502,9 +4535,9 @@ If PROGRAM is a string, any more args are arguments to PROGRAM.
 Make a Comint process NAME in a buffer, running PROGRAM.
 The name of the buffer is made by surrounding NAME with `*'s.
 PROGRAM should be either a string denoting an executable program to create
-via `start-process', or a cons pair of the form (HOST . SERVICE) denoting a TCP
-connection to be opened via `open-network-stream'.  If there is already a
-running process in that buffer, it is not restarted.  Optional third arg
+via `start-file-process', or a cons pair of the form (HOST . SERVICE) denoting
+a TCP connection to be opened via `open-network-stream'.  If there is already
+running process in that buffer, it is not restarted.  Optional third arg
 STARTFILE is the name of a file to send the contents of the process to.
 
 If PROGRAM is a string, any more args are arguments to PROGRAM.
@@ -4557,8 +4590,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
 
 ;;;***
 \f
-;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17926
-;;;;;;  45410))
+;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (18104
+;;;;;;  24730))
 ;;; Generated autoloads from compare-w.el
 
 (autoload (quote compare-windows) "compare-w" "\
@@ -4595,16 +4628,16 @@ on third call it again advances points to the next difference and so on.
 ;;;;;;  compilation-shell-minor-mode compilation-mode compilation-start
 ;;;;;;  compile compilation-disable-input compile-command compilation-search-path
 ;;;;;;  compilation-ask-about-save compilation-window-height compilation-mode-hook)
-;;;;;;  "compile" "progmodes/compile.el" (18006 55797))
+;;;;;;  "compile" "progmodes/compile.el" (18104 24764))
 ;;; Generated autoloads from progmodes/compile.el
 
 (defvar compilation-mode-hook nil "\
-*List of hook functions run by `compilation-mode' (see `run-mode-hooks').")
+List of hook functions run by `compilation-mode' (see `run-mode-hooks').")
 
 (custom-autoload (quote compilation-mode-hook) "compile" t)
 
 (defvar compilation-window-height nil "\
-*Number of lines in a compilation window.  If nil, use Emacs default.")
+Number of lines in a compilation window.  If nil, use Emacs default.")
 
 (custom-autoload (quote compilation-window-height) "compile" t)
 
@@ -4620,7 +4653,7 @@ bound to the compilation buffer and window, respectively.")
 Function to compute the name of a compilation buffer.
 The function receives one argument, the name of the major mode of the
 compilation buffer.  It should return a string.
-nil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.")
+If nil, compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.")
 
 (defvar compilation-finish-function nil "\
 Function to call when a compilation process finishes.
@@ -4634,20 +4667,20 @@ and a string describing how the process finished.")
 (put 'compilation-directory 'safe-local-variable 'stringp)
 
 (defvar compilation-ask-about-save t "\
-*Non-nil means \\[compile] asks which buffers to save before compiling.
+Non-nil means \\[compile] asks which buffers to save before compiling.
 Otherwise, it saves all modified buffers without asking.")
 
 (custom-autoload (quote compilation-ask-about-save) "compile" t)
 
 (defvar compilation-search-path (quote (nil)) "\
-*List of directories to search for source files named in error messages.
+List of directories to search for source files named in error messages.
 Elements should be directory names, not file names of directories.
-nil as an element means to try the default directory.")
+The value nil as an element means to try the default directory.")
 
 (custom-autoload (quote compilation-search-path) "compile" t)
 
 (defvar compile-command "make -k " "\
-*Last shell command used to do a compilation; default for next compilation.
+Last shell command used to do a compilation; default for next compilation.
 
 Sometimes it is useful for files to supply local values for this variable.
 You might also use mode hooks to specify it in certain modes, like this:
@@ -4664,7 +4697,7 @@ You might also use mode hooks to specify it in certain modes, like this:
 (put 'compile-command 'safe-local-variable 'stringp)
 
 (defvar compilation-disable-input nil "\
-*If non-nil, send end-of-file as compilation process input.
+If non-nil, send end-of-file as compilation process input.
 This only affects platforms that support asynchronous processes (see
 `start-process'); synchronous compilation processes never accept input.")
 
@@ -4686,11 +4719,13 @@ non-nil; otherwise uses `compile-command'.  With prefix arg, always prompts.
 Additionally, with universal prefix arg, compilation buffer will be in
 comint mode, i.e. interactive.
 
-To run more than one compilation at once, start one and rename
+To run more than one compilation at once, start one then rename
 the `*compilation*' buffer to some other name with
-\\[rename-buffer].  Then start the next one.  On most systems,
-termination of the main compilation process kills its
-subprocesses.
+\\[rename-buffer].  Then _switch buffers_ and start the new compilation.
+It will create a new `*compilation*' buffer.
+
+On most systems, termination of the main compilation process
+kills its subprocesses.
 
 The name used for the buffer is actually whatever is returned by
 the function in `compilation-buffer-name-function', so you can set that
@@ -4705,8 +4740,11 @@ The rest of the arguments are optional; for them, nil means use the default.
 
 MODE is the major mode to set in the compilation buffer.  Mode
 may also be t meaning use `compilation-shell-minor-mode' under `comint-mode'.
+
 If NAME-FUNCTION is non-nil, call it with one argument (the mode name)
-to determine the buffer name.
+to determine the buffer name.  Otherwise, the default is to
+reuses the current buffer if it has the proper major mode,
+else use or create a buffer with name based on the major mode.
 
 If HIGHLIGHT-REGEXP is non-nil, `next-error' will temporarily highlight
 the matching section of the visited source line; the default is to use the
@@ -4758,7 +4796,7 @@ This is the value of `next-error-function' in Compilation buffers.
 ;;;***
 \f
 ;;;### (autoloads (partial-completion-mode) "complete" "complete.el"
-;;;;;;  (17954 15344))
+;;;;;;  (18104 24730))
 ;;; Generated autoloads from complete.el
 
 (defvar partial-completion-mode nil "\
@@ -4800,7 +4838,7 @@ second TAB brings up the `*Completions*' buffer.
 ;;;***
 \f
 ;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24731))
 ;;; Generated autoloads from completion.el
 
 (defvar dynamic-completion-mode nil "\
@@ -4822,7 +4860,7 @@ Enable dynamic word-completion.
 ;;;### (autoloads (decompose-composite-char compose-last-chars compose-chars-after
 ;;;;;;  find-composition compose-chars decompose-string compose-string
 ;;;;;;  decompose-region compose-region encode-composition-rule)
-;;;;;;  "composite" "composite.el" (17842 58280))
+;;;;;;  "composite" "composite.el" (18104 24731))
 ;;; Generated autoloads from composite.el
 
 (defconst reference-point-alist (quote ((tl . 0) (tc . 1) (tr . 2) (Bl . 3) (Bc . 4) (Br . 5) (bl . 6) (bc . 7) (br . 8) (cl . 9) (cc . 10) (cr . 11) (top-left . 0) (top-center . 1) (top-right . 2) (base-left . 3) (base-center . 4) (base-right . 5) (bottom-left . 6) (bottom-center . 7) (bottom-right . 8) (center-left . 9) (center-center . 10) (center-right . 11) (ml . 3) (mc . 10) (mr . 5) (mid-left . 3) (mid-center . 10) (mid-right . 5))) "\
@@ -5044,7 +5082,7 @@ Optional 3rd arg WITH-COMPOSITION-RULE is ignored.
 ;;;### (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"
-;;;;;;  (17842 58277))
+;;;;;;  (18104 24770))
 ;;; Generated autoloads from textmodes/conf-mode.el
 
 (autoload (quote conf-mode) "conf-mode" "\
@@ -5200,7 +5238,7 @@ For details see `conf-mode'.  Example:
 ;;;***
 \f
 ;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie)
-;;;;;;  "cookie1" "play/cookie1.el" (17842 55395))
+;;;;;;  "cookie1" "play/cookie1.el" (18104 24760))
 ;;; Generated autoloads from play/cookie1.el
 
 (autoload (quote cookie) "cookie1" "\
@@ -5232,7 +5270,7 @@ Randomly permute the elements of VECTOR (all permutations equally likely).
 ;;;***
 \f
 ;;;### (autoloads (copyright copyright-fix-years copyright-update)
-;;;;;;  "copyright" "emacs-lisp/copyright.el" (17842 54152))
+;;;;;;  "copyright" "emacs-lisp/copyright.el" (18104 24747))
 ;;; Generated autoloads from emacs-lisp/copyright.el
 
 (autoload (quote copyright-update) "copyright" "\
@@ -5260,7 +5298,7 @@ Insert a copyright by $ORGANIZATION notice at cursor.
 ;;;***
 \f
 ;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode)
-;;;;;;  "cperl-mode" "progmodes/cperl-mode.el" (17955 36604))
+;;;;;;  "cperl-mode" "progmodes/cperl-mode.el" (18104 24764))
 ;;; Generated autoloads from progmodes/cperl-mode.el
 
 (autoload (quote cperl-mode) "cperl-mode" "\
@@ -5451,7 +5489,7 @@ Run a `perldoc' on the word around point.
 ;;;***
 \f
 ;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24764))
 ;;; Generated autoloads from progmodes/cpp.el
 
 (autoload (quote cpp-highlight-buffer) "cpp" "\
@@ -5470,7 +5508,7 @@ Edit display information for cpp conditionals.
 ;;;***
 \f
 ;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el"
-;;;;;;  (17842 54264))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emulation/crisp.el
 
 (defvar crisp-mode nil "\
@@ -5494,7 +5532,7 @@ With ARG, turn CRiSP mode on if ARG is positive, off otherwise.
 ;;;***
 \f
 ;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el"
-;;;;;;  (17842 54152))
+;;;;;;  (18104 24747))
 ;;; Generated autoloads from emacs-lisp/crm.el
 
 (autoload (quote completing-read-multiple) "crm" "\
@@ -5527,10 +5565,22 @@ INHERIT-INPUT-METHOD.
 
 \(fn PROMPT TABLE &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)" nil nil)
 
+;;;***
+\f
+;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (18104
+;;;;;;  24771))
+;;; Generated autoloads from textmodes/css-mode.el
+ (add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode))
+
+(autoload (quote css-mode) "css-mode" "\
+Major mode to edit Cascading Style Sheets.
+
+\(fn)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el"
-;;;;;;  (17888 45995))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emulation/cua-base.el
 
 (defvar cua-mode nil "\
@@ -5598,7 +5648,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
 ;;;;;;  customize-mode customize customize-save-variable customize-set-variable
 ;;;;;;  customize-set-value custom-menu-sort-alphabetically custom-buffer-sort-alphabetically
 ;;;;;;  custom-browse-sort-alphabetically) "cus-edit" "cus-edit.el"
-;;;;;;  (17952 11093))
+;;;;;;  (18104 24731))
 ;;; Generated autoloads from cus-edit.el
 
 (defvar custom-browse-sort-alphabetically nil "\
@@ -5682,12 +5732,12 @@ then prompt for the MODE to customize.
 (autoload (quote customize-group) "cus-edit" "\
 Customize GROUP, which must be a customization group.
 
-\(fn GROUP)" t nil)
+\(fn &optional GROUP)" t nil)
 
 (autoload (quote customize-group-other-window) "cus-edit" "\
-Customize GROUP, which must be a customization group.
+Customize GROUP, which must be a customization group, in another window.
 
-\(fn GROUP)" t nil)
+\(fn &optional GROUP)" t nil)
 
 (defalias (quote customize-variable) (quote customize-option))
 
@@ -5896,7 +5946,7 @@ The format is suitable for use with `easy-menu-define'.
 ;;;***
 \f
 ;;;### (autoloads (custom-reset-faces custom-theme-reset-faces custom-set-faces
-;;;;;;  custom-declare-face) "cus-face" "cus-face.el" (17842 58280))
+;;;;;;  custom-declare-face) "cus-face" "cus-face.el" (18104 24732))
 ;;; Generated autoloads from cus-face.el
 
 (autoload (quote custom-declare-face) "cus-face" "\
@@ -5966,7 +6016,7 @@ This means reset FACE to its value in FROM-THEME.
 ;;;***
 \f
 ;;;### (autoloads (customize-create-theme) "cus-theme" "cus-theme.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24732))
 ;;; Generated autoloads from cus-theme.el
 
 (autoload (quote customize-create-theme) "cus-theme" "\
@@ -5977,7 +6027,7 @@ Create a custom theme.
 ;;;***
 \f
 ;;;### (autoloads (cvs-status-mode) "cvs-status" "cvs-status.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24732))
 ;;; Generated autoloads from cvs-status.el
 
 (autoload (quote cvs-status-mode) "cvs-status" "\
@@ -5988,7 +6038,7 @@ Mode used for cvs status output.
 ;;;***
 \f
 ;;;### (autoloads (global-cwarn-mode turn-on-cwarn-mode cwarn-mode)
-;;;;;;  "cwarn" "progmodes/cwarn.el" (17860 50532))
+;;;;;;  "cwarn" "progmodes/cwarn.el" (18104 24764))
 ;;; Generated autoloads from progmodes/cwarn.el
 
 (autoload (quote cwarn-mode) "cwarn" "\
@@ -6031,7 +6081,7 @@ See `cwarn-mode' for more information on Cwarn mode.
 \f
 ;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char
 ;;;;;;  cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24757))
 ;;; Generated autoloads from language/cyril-util.el
 
 (autoload (quote cyrillic-encode-koi8-r-char) "cyril-util" "\
@@ -6060,7 +6110,7 @@ If the argument is nil, we return the display table to its standard state.
 ;;;***
 \f
 ;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el"
-;;;;;;  (18006 55794))
+;;;;;;  (18104 24732))
 ;;; Generated autoloads from dabbrev.el
  (define-key esc-map "/" 'dabbrev-expand)
  (define-key esc-map [?\C-/] 'dabbrev-completion)
@@ -6104,8 +6154,8 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion].
 
 ;;;***
 \f
-;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (17949
-;;;;;;  41468))
+;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (18104
+;;;;;;  24764))
 ;;; Generated autoloads from progmodes/dcl-mode.el
 
 (autoload (quote dcl-mode) "dcl-mode" "\
@@ -6232,7 +6282,7 @@ There is some minimal font-lock support (see vars
 ;;;***
 \f
 ;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug"
-;;;;;;  "emacs-lisp/debug.el" (17842 54152))
+;;;;;;  "emacs-lisp/debug.el" (18104 24747))
 ;;; Generated autoloads from emacs-lisp/debug.el
 
 (setq debugger (quote debug))
@@ -6276,7 +6326,7 @@ To specify a nil argument interactively, exit with an empty minibuffer.
 ;;;***
 \f
 ;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el"
-;;;;;;  (17842 55395))
+;;;;;;  (18104 24760))
 ;;; Generated autoloads from play/decipher.el
 
 (autoload (quote decipher) "decipher" "\
@@ -6305,8 +6355,8 @@ The most useful commands are:
 ;;;***
 \f
 ;;;### (autoloads (delimit-columns-rectangle delimit-columns-region
-;;;;;;  delimit-columns-customize) "delim-col" "delim-col.el" (17842
-;;;;;;  58280))
+;;;;;;  delimit-columns-customize) "delim-col" "delim-col.el" (18104
+;;;;;;  24732))
 ;;; Generated autoloads from delim-col.el
 
 (autoload (quote delimit-columns-customize) "delim-col" "\
@@ -6330,8 +6380,8 @@ START and END delimits the corners of text rectangle.
 
 ;;;***
 \f
-;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (17842
-;;;;;;  56333))
+;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (18104
+;;;;;;  24765))
 ;;; Generated autoloads from progmodes/delphi.el
 
 (autoload (quote delphi-mode) "delphi" "\
@@ -6381,8 +6431,8 @@ no args, if that value is non-nil.
 
 ;;;***
 \f
-;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (17842
-;;;;;;  58280))
+;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (18104
+;;;;;;  24732))
 ;;; Generated autoloads from delsel.el
 
 (defalias (quote pending-delete-mode) (quote delete-selection-mode))
@@ -6411,7 +6461,7 @@ any selection.
 ;;;***
 \f
 ;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode)
-;;;;;;  "derived" "emacs-lisp/derived.el" (17842 54152))
+;;;;;;  "derived" "emacs-lisp/derived.el" (18104 24747))
 ;;; Generated autoloads from emacs-lisp/derived.el
 
 (autoload (quote define-derived-mode) "derived" "\
@@ -6476,7 +6526,7 @@ the first time the mode is used.
 ;;;***
 \f
 ;;;### (autoloads (describe-char describe-text-properties) "descr-text"
-;;;;;;  "descr-text.el" (17874 62047))
+;;;;;;  "descr-text.el" (18104 24732))
 ;;; Generated autoloads from descr-text.el
 
 (autoload (quote describe-text-properties) "descr-text" "\
@@ -6502,7 +6552,7 @@ as well as widgets, buttons, overlays, and text properties.
 ;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir
 ;;;;;;  desktop-load-default desktop-read desktop-remove desktop-save
 ;;;;;;  desktop-clear desktop-locals-to-save desktop-save-mode) "desktop"
-;;;;;;  "desktop.el" (17949 41467))
+;;;;;;  "desktop.el" (18104 24732))
 ;;; Generated autoloads from desktop.el
 
 (defvar desktop-save-mode nil "\
@@ -6636,9 +6686,10 @@ Furthermore, it clears the variables listed in `desktop-globals-to-clear'.
 (autoload (quote desktop-save) "desktop" "\
 Save the desktop in a desktop file.
 Parameter DIRNAME specifies where to save the desktop file.
+Optional parameter RELEASE says whether we're done with this desktop.
 See also `desktop-base-file-name'.
 
-\(fn DIRNAME)" t nil)
+\(fn DIRNAME &optional RELEASE)" t nil)
 
 (autoload (quote desktop-remove) "desktop" "\
 Delete desktop file in `desktop-dirname'.
@@ -6685,7 +6736,7 @@ Revert to the last loaded desktop.
 \f
 ;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article
 ;;;;;;  gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines)
-;;;;;;  "deuglify" "gnus/deuglify.el" (17842 54741))
+;;;;;;  "deuglify" "gnus/deuglify.el" (18104 24750))
 ;;; Generated autoloads from gnus/deuglify.el
 
 (autoload (quote gnus-article-outlook-unwrap-lines) "deuglify" "\
@@ -6718,7 +6769,7 @@ Deuglify broken Outlook (Express) articles and redisplay.
 ;;;***
 \f
 ;;;### (autoloads (devanagari-post-read-conversion devanagari-compose-region)
-;;;;;;  "devan-util" "language/devan-util.el" (17842 58278))
+;;;;;;  "devan-util" "language/devan-util.el" (18104 24757))
 ;;; Generated autoloads from language/devan-util.el
 
 (defconst devanagari-consonant "[\x51ad5-\x51af9\x51b38-\x51b3f]")
@@ -6736,7 +6787,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
-;;;;;;  "calendar/diary-lib.el" (17958 11887))
+;;;;;;  "calendar/diary-lib.el" (18104 24745))
 ;;; Generated autoloads from calendar/diary-lib.el
 
 (autoload (quote diary) "diary-lib" "\
@@ -6782,7 +6833,7 @@ Major mode for editing the diary file.
 ;;;***
 \f
 ;;;### (autoloads (diff-backup diff diff-command diff-switches) "diff"
-;;;;;;  "diff.el" (17992 30877))
+;;;;;;  "diff.el" (18104 24733))
 ;;; Generated autoloads from diff.el
 
 (defvar diff-switches "-c" "\
@@ -6816,7 +6867,7 @@ With prefix arg, prompt for diff switches.
 ;;;***
 \f
 ;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el"
-;;;;;;  (17992 30877))
+;;;;;;  (18104 24733))
 ;;; Generated autoloads from diff-mode.el
 
 (autoload (quote diff-mode) "diff-mode" "\
@@ -6848,7 +6899,7 @@ Minor mode for viewing/editing context diffs.
 ;;;;;;  dired dired-copy-preserve-time dired-dwim-target dired-keep-marker-symlink
 ;;;;;;  dired-keep-marker-hardlink dired-keep-marker-copy dired-keep-marker-rename
 ;;;;;;  dired-trivial-filenames dired-ls-F-marks-symlinks dired-listing-switches)
-;;;;;;  "dired" "dired.el" (18015 32019))
+;;;;;;  "dired" "dired.el" (18104 24733))
 ;;; Generated autoloads from dired.el
 
 (defvar dired-listing-switches "-al" "\
@@ -7053,7 +7104,7 @@ Keybindings:
 ;;;;;;  dired-run-shell-command dired-do-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" (17859 20444))
+;;;;;;  dired-diff) "dired-aux" "dired-aux.el" (18104 24733))
 ;;; Generated autoloads from dired-aux.el
 
 (autoload (quote dired-diff) "dired-aux" "\
@@ -7468,7 +7519,7 @@ true then the type of the file linked to by FILE is printed instead.
 ;;;***
 \f
 ;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
-;;;;;;  (17992 30877))
+;;;;;;  (18104 24733))
 ;;; Generated autoloads from dired-x.el
 
 (autoload (quote dired-jump) "dired-x" "\
@@ -7497,7 +7548,7 @@ For absolute symlinks, use \\[dired-do-symlink].
 
 ;;;***
 \f
-;;;### (autoloads (dirtrack) "dirtrack" "dirtrack.el" (17842 58280))
+;;;### (autoloads (dirtrack) "dirtrack" "dirtrack.el" (18104 24733))
 ;;; Generated autoloads from dirtrack.el
 
 (autoload (quote dirtrack) "dirtrack" "\
@@ -7516,8 +7567,8 @@ You can enable directory tracking by adding this function to
 
 ;;;***
 \f
-;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (17842
-;;;;;;  54152))
+;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (18104
+;;;;;;  24747))
 ;;; Generated autoloads from emacs-lisp/disass.el
 
 (autoload (quote disassemble) "disass" "\
@@ -7536,7 +7587,7 @@ redefine OBJECT if it is a symbol.
 ;;;;;;  standard-display-g1 standard-display-ascii standard-display-default
 ;;;;;;  standard-display-8bit describe-current-display-table describe-display-table
 ;;;;;;  set-display-table-slot display-table-slot make-display-table)
-;;;;;;  "disp-table" "disp-table.el" (17874 62056))
+;;;;;;  "disp-table" "disp-table.el" (18104 24734))
 ;;; Generated autoloads from disp-table.el
 
 (autoload (quote make-display-table) "disp-table" "\
@@ -7633,7 +7684,7 @@ with either the `--unibyte' option or the EMACS_UNIBYTE environment
 variable, or else customize `enable-multibyte-characters'.
 
 With prefix argument, this command enables European character display
-if arg is positive, disables it otherwise.  Otherwise, it toggles
+if ARG is positive, disables it otherwise.  Otherwise, it toggles
 European character display.
 
 When this mode is enabled, characters in the range of 160 to 255
@@ -7652,7 +7703,7 @@ for users who call this function in `.emacs'.
 ;;;***
 \f
 ;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
-;;;;;;  (17941 38806))
+;;;;;;  (18104 24760))
 ;;; Generated autoloads from play/dissociate.el
 
 (autoload (quote dissociated-press) "dissociate" "\
@@ -7668,7 +7719,7 @@ Default is 2.
 
 ;;;***
 \f
-;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (17949 41467))
+;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (18104 24734))
 ;;; Generated autoloads from dnd.el
 
 (defvar dnd-protocol-alist (quote (("^file:///" . dnd-open-local-file) ("^file://" . dnd-open-file) ("^file:" . dnd-open-local-file) ("^\\(https?\\|ftp\\|file\\|nfs\\)://" . dnd-open-file))) "\
@@ -7689,7 +7740,7 @@ if some action was made, or nil if the URL is ignored.")
 ;;;***
 \f
 ;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode"
-;;;;;;  "textmodes/dns-mode.el" (17842 58277))
+;;;;;;  "textmodes/dns-mode.el" (18104 24771))
 ;;; Generated autoloads from textmodes/dns-mode.el
 
 (autoload (quote dns-mode) "dns-mode" "\
@@ -7713,7 +7764,7 @@ Locate SOA record and increment the serial field.
 
 ;;;***
 \f
-;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17941 38806))
+;;;### (autoloads (doctor) "doctor" "play/doctor.el" (18104 24760))
 ;;; Generated autoloads from play/doctor.el
 
 (autoload (quote doctor) "doctor" "\
@@ -7724,7 +7775,7 @@ Switch to *doctor* buffer and start giving psychotherapy.
 ;;;***
 \f
 ;;;### (autoloads (double-mode double-mode) "double" "double.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24734))
 ;;; Generated autoloads from double.el
 
 (defvar double-mode nil "\
@@ -7745,7 +7796,7 @@ when pressed twice.  See variable `double-map' for details.
 
 ;;;***
 \f
-;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (17842 55395))
+;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (18104 24761))
 ;;; Generated autoloads from play/dunnet.el
 
 (autoload (quote dunnet) "dunnet" "\
@@ -7756,7 +7807,7 @@ Switch to *dungeon* buffer and start game.
 ;;;***
 \f
 ;;;### (autoloads (gnus-earcon-display) "earcon" "gnus/earcon.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/earcon.el
 
 (autoload (quote gnus-earcon-display) "earcon" "\
@@ -7768,7 +7819,7 @@ Play sounds in message buffers.
 \f
 ;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap
 ;;;;;;  define-globalized-minor-mode define-minor-mode) "easy-mmode"
-;;;;;;  "emacs-lisp/easy-mmode.el" (17992 30878))
+;;;;;;  "emacs-lisp/easy-mmode.el" (18104 24747))
 ;;; Generated autoloads from emacs-lisp/easy-mmode.el
 
 (defalias (quote easy-mmode-define-minor-mode) (quote define-minor-mode))
@@ -7790,7 +7841,7 @@ used (see below).
 
 BODY contains code to execute each time the mode is activated or deactivated.
   It is executed after toggling the mode,
-  and before running the hook variable `mode-HOOK'.
+  and before running the hook variable `MODE-hook'.
   Before the actual body code, you can write keyword arguments (alternating
   keywords and values).  These following keyword arguments are supported (other
   keywords will be passed to `defcustom' if the minor mode is global):
@@ -7862,8 +7913,8 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX).
 ;;;***
 \f
 ;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define
-;;;;;;  easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (17842
-;;;;;;  54152))
+;;;;;;  easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (18104
+;;;;;;  24747))
 ;;; Generated autoloads from emacs-lisp/easymenu.el
 
 (put (quote easy-menu-define) (quote lisp-indent-function) (quote defun))
@@ -8007,12 +8058,12 @@ To implement dynamic menus, either call this from
 \f
 ;;;### (autoloads (ebnf-pop-style ebnf-push-style ebnf-reset-style
 ;;;;;;  ebnf-apply-style ebnf-merge-style ebnf-delete-style ebnf-insert-style
-;;;;;;  ebnf-setup ebnf-syntax-region ebnf-syntax-buffer ebnf-syntax-file
-;;;;;;  ebnf-syntax-directory ebnf-eps-region ebnf-eps-buffer ebnf-eps-file
-;;;;;;  ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ebnf-spool-file
-;;;;;;  ebnf-spool-directory ebnf-print-region ebnf-print-buffer
+;;;;;;  ebnf-find-style ebnf-setup ebnf-syntax-region ebnf-syntax-buffer
+;;;;;;  ebnf-syntax-file ebnf-syntax-directory ebnf-eps-region ebnf-eps-buffer
+;;;;;;  ebnf-eps-file ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer
+;;;;;;  ebnf-spool-file ebnf-spool-directory ebnf-print-region ebnf-print-buffer
 ;;;;;;  ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps"
-;;;;;;  "progmodes/ebnf2ps.el" (17952 11093))
+;;;;;;  "progmodes/ebnf2ps.el" (18104 24765))
 ;;; Generated autoloads from progmodes/ebnf2ps.el
 
 (autoload (quote ebnf-customize) "ebnf2ps" "\
@@ -8141,7 +8192,7 @@ The EPS file name has the following form:
             file name used in this case will be \"ebnf--A_B_+_C.eps\".
 
 WARNING: This function does *NOT* ask any confirmation to override existing
-         files.
+        files.
 
 \(fn)" t nil)
 
@@ -8163,7 +8214,7 @@ The EPS file name has the following form:
             file name used in this case will be \"ebnf--A_B_+_C.eps\".
 
 WARNING: This function does *NOT* ask any confirmation to override existing
-         files.
+        files.
 
 \(fn FROM TO)" t nil)
 
@@ -8197,7 +8248,7 @@ Do a syntactic analysis of the current buffer.
 \(fn)" t nil)
 
 (autoload (quote ebnf-syntax-region) "ebnf2ps" "\
-Do a syntactic analysis of region.
+Do a syntactic analysis of region.
 
 \(fn FROM TO)" t nil)
 
@@ -8206,6 +8257,13 @@ Return the current ebnf2ps setup.
 
 \(fn)" nil nil)
 
+(autoload (quote ebnf-find-style) "ebnf2ps" "\
+Return style definition if NAME is already defined; otherwise, return nil.
+
+See `ebnf-style-database' documentation.
+
+\(fn NAME)" t nil)
+
 (autoload (quote ebnf-insert-style) "ebnf2ps" "\
 Insert a new style NAME with inheritance INHERITS and values VALUES.
 
@@ -8279,8 +8337,8 @@ See `ebnf-style-database' documentation.
 ;;;;;;  ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition
 ;;;;;;  ebrowse-tags-view-definition ebrowse-tags-find-declaration
 ;;;;;;  ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree
-;;;;;;  ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (17821
-;;;;;;  5918))
+;;;;;;  ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (18104
+;;;;;;  24765))
 ;;; Generated autoloads from progmodes/ebrowse.el
 
 (autoload (quote ebrowse-tree-mode) "ebrowse" "\
@@ -8431,7 +8489,7 @@ Display statistics for a class tree.
 ;;;***
 \f
 ;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24735))
 ;;; Generated autoloads from ebuff-menu.el
 
 (autoload (quote electric-buffer-list) "ebuff-menu" "\
@@ -8456,7 +8514,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
 ;;;***
 \f
 ;;;### (autoloads (Electric-command-history-redo-expression) "echistory"
-;;;;;;  "echistory.el" (17842 58280))
+;;;;;;  "echistory.el" (18104 24735))
 ;;; Generated autoloads from echistory.el
 
 (autoload (quote Electric-command-history-redo-expression) "echistory" "\
@@ -8469,7 +8527,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
 \f
 ;;;### (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" (17952 11093))
+;;;;;;  "emacs-lisp/edebug.el" (18104 24747))
 ;;; Generated autoloads from emacs-lisp/edebug.el
 
 (defvar edebug-all-defs nil "\
@@ -8542,7 +8600,7 @@ Toggle edebugging of all forms.
 ;;;;;;  ediff-merge-directory-revisions ediff-merge-directories-with-ancestor
 ;;;;;;  ediff-merge-directories ediff-directories3 ediff-directory-revisions
 ;;;;;;  ediff-directories ediff-buffers3 ediff-buffers ediff-backup
-;;;;;;  ediff-files3 ediff-files) "ediff" "ediff.el" (17846 30361))
+;;;;;;  ediff-files3 ediff-files) "ediff" "ediff.el" (18104 24735))
 ;;; Generated autoloads from ediff.el
 
 (autoload (quote ediff-files) "ediff" "\
@@ -8774,7 +8832,7 @@ With optional NODE, goes to that node.
 ;;;***
 \f
 ;;;### (autoloads (ediff-customize) "ediff-help" "ediff-help.el"
-;;;;;;  (17842 58280))
+;;;;;;  (18104 24735))
 ;;; Generated autoloads from ediff-help.el
 
 (autoload (quote ediff-customize) "ediff-help" "\
@@ -8784,7 +8842,7 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads nil "ediff-hook" "ediff-hook.el" (17842 58280))
+;;;### (autoloads nil "ediff-hook" "ediff-hook.el" (18104 24735))
 ;;; Generated autoloads from ediff-hook.el
 
 (defvar ediff-window-setup-function)
@@ -8797,7 +8855,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (ediff-show-registry) "ediff-mult" "ediff-mult.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24735))
 ;;; Generated autoloads from ediff-mult.el
 
 (autoload (quote ediff-show-registry) "ediff-mult" "\
@@ -8810,7 +8868,7 @@ Display Ediff's registry.
 ;;;***
 \f
 ;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe)
-;;;;;;  "ediff-util" "ediff-util.el" (17846 30361))
+;;;;;;  "ediff-util" "ediff-util.el" (18104 24735))
 ;;; Generated autoloads from ediff-util.el
 
 (autoload (quote ediff-toggle-multiframe) "ediff-util" "\
@@ -8831,7 +8889,7 @@ To change the default, set the variable `ediff-use-toolbar-p', which see.
 \f
 ;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro
 ;;;;;;  edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24735))
 ;;; Generated autoloads from edmacro.el
 
 (defvar edmacro-eight-bits nil "\
@@ -8884,7 +8942,7 @@ or nil, use a compact 80-column format.
 ;;;***
 \f
 ;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt"
-;;;;;;  "emulation/edt.el" (17842 54264))
+;;;;;;  "emulation/edt.el" (18104 24748))
 ;;; Generated autoloads from emulation/edt.el
 
 (autoload (quote edt-set-scroll-margins) "edt" "\
@@ -8902,7 +8960,7 @@ Turn on EDT Emulation.
 ;;;***
 \f
 ;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el"
-;;;;;;  (17873 45892))
+;;;;;;  (18104 24735))
 ;;; Generated autoloads from ehelp.el
 
 (autoload (quote with-electric-help) "ehelp" "\
@@ -8939,7 +8997,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string)
-;;;;;;  "eldoc" "emacs-lisp/eldoc.el" (17992 30878))
+;;;;;;  "eldoc" "emacs-lisp/eldoc.el" (18104 24748))
 ;;; Generated autoloads from emacs-lisp/eldoc.el
 
 (defvar eldoc-minor-mode-string " ElDoc" "\
@@ -8977,8 +9035,8 @@ Emacs Lisp mode) that support Eldoc.")
 
 ;;;***
 \f
-;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (17842
-;;;;;;  58279))
+;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (18104
+;;;;;;  24735))
 ;;; Generated autoloads from elide-head.el
 
 (autoload (quote elide-head) "elide-head" "\
@@ -8994,7 +9052,7 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks.
 ;;;***
 \f
 ;;;### (autoloads (elint-initialize) "elint" "emacs-lisp/elint.el"
-;;;;;;  (17842 54152))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emacs-lisp/elint.el
 
 (autoload (quote elint-initialize) "elint" "\
@@ -9005,8 +9063,8 @@ Initialize elint.
 ;;;***
 \f
 ;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list
-;;;;;;  elp-instrument-function) "elp" "emacs-lisp/elp.el" (17842
-;;;;;;  54152))
+;;;;;;  elp-instrument-function) "elp" "emacs-lisp/elp.el" (18104
+;;;;;;  24748))
 ;;; Generated autoloads from emacs-lisp/elp.el
 
 (autoload (quote elp-instrument-function) "elp" "\
@@ -9040,7 +9098,7 @@ displayed.
 ;;;***
 \f
 ;;;### (autoloads (report-emacs-bug) "emacsbug" "mail/emacsbug.el"
-;;;;;;  (17907 23437))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/emacsbug.el
 
 (autoload (quote report-emacs-bug) "emacsbug" "\
@@ -9055,7 +9113,7 @@ Prompts for bug subject.  Leaves you in a mail buffer.
 ;;;;;;  emerge-revisions emerge-files-with-ancestor-remote emerge-files-remote
 ;;;;;;  emerge-files-with-ancestor-command emerge-files-command emerge-buffers-with-ancestor
 ;;;;;;  emerge-buffers emerge-files-with-ancestor emerge-files) "emerge"
-;;;;;;  "emerge.el" (17166 62192))
+;;;;;;  "emerge.el" (17994 6715))
 ;;; Generated autoloads from emerge.el
 
 (defvar menu-bar-emerge-menu (make-sparse-keymap "Emerge"))
@@ -9132,37 +9190,21 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads (encoded-kbd-mode) "encoded-kb" "international/encoded-kb.el"
-;;;;;;  (17842 54888))
+;;;### (autoloads (encoded-kbd-setup-display) "encoded-kb" "international/encoded-kb.el"
+;;;;;;  (18104 24756))
 ;;; Generated autoloads from international/encoded-kb.el
 
-(defvar encoded-kbd-mode nil "\
-Non-nil if Encoded-Kbd mode is enabled.
-See the command `encoded-kbd-mode' for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `encoded-kbd-mode'.")
+(autoload (quote encoded-kbd-setup-display) "encoded-kb" "\
+Set up a `key-translation-map' for `keyboard-coding-system' on DISPLAY.
 
-(custom-autoload (quote encoded-kbd-mode) "encoded-kb" nil)
+DISPLAY may be a display id, a frame, or nil for the selected frame's display.
 
-(autoload (quote encoded-kbd-mode) "encoded-kb" "\
-Toggle Encoded-kbd minor mode.
-With arg, turn Encoded-kbd mode on if and only if arg is positive.
-
-You should not turn this mode on manually, instead use the command
-\\[set-keyboard-coding-system] which turns on or off this mode
-automatically.
-
-In Encoded-kbd mode, a text sent from keyboard is accepted
-as a multilingual text encoded in a coding system set by
-\\[set-keyboard-coding-system].
-
-\(fn &optional ARG)" t nil)
+\(fn DISPLAY)" nil nil)
 
 ;;;***
 \f
 ;;;### (autoloads (enriched-decode enriched-encode enriched-mode)
-;;;;;;  "enriched" "textmodes/enriched.el" (17842 58277))
+;;;;;;  "enriched" "textmodes/enriched.el" (18104 24771))
 ;;; Generated autoloads from textmodes/enriched.el
 
 (autoload (quote enriched-mode) "enriched" "\
@@ -9193,7 +9235,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (erc-handle-irc-url erc erc-select-read-args) "erc"
-;;;;;;  "erc/erc.el" (17935 53318))
+;;;;;;  "erc/erc.el" (18104 24749))
 ;;; Generated autoloads from erc/erc.el
 
 (autoload (quote erc-select-read-args) "erc" "\
@@ -9235,33 +9277,33 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17935
-;;;;;;  53318))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (18104
+;;;;;;  24749))
 ;;; Generated autoloads from erc/erc-autoaway.el
  (autoload 'erc-autoaway-mode "erc-autoaway")
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17935 53318))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-button.el
  (autoload 'erc-button-mode "erc-button" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17935 53318))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-capab.el
  (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17935 53318))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-compat.el
  (autoload 'erc-define-minor-mode "erc-compat")
 
 ;;;***
 \f
 ;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC)
-;;;;;;  "erc-dcc" "erc/erc-dcc.el" (17842 54344))
+;;;;;;  "erc-dcc" "erc/erc-dcc.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-dcc.el
 
 (autoload (quote erc-cmd-DCC) "erc-dcc" "\
@@ -9293,7 +9335,7 @@ that subcommand.
 ;;;;;;  erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list
 ;;;;;;  erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action
 ;;;;;;  erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el"
-;;;;;;  (17842 54344))
+;;;;;;  (18104 24749))
 ;;; Generated autoloads from erc/erc-ezbounce.el
 
 (autoload (quote erc-cmd-ezb) "erc-ezbounce" "\
@@ -9355,8 +9397,8 @@ Add EZBouncer convenience functions to ERC.
 
 ;;;***
 \f
-;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17935
-;;;;;;  53318))
+;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (18104
+;;;;;;  24749))
 ;;; Generated autoloads from erc/erc-fill.el
  (autoload 'erc-fill-mode "erc-fill" nil t)
 
@@ -9368,15 +9410,15 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-hecomplete" "erc/erc-hecomplete.el" (17842
-;;;;;;  54344))
+;;;### (autoloads nil "erc-hecomplete" "erc/erc-hecomplete.el" (18104
+;;;;;;  24749))
 ;;; Generated autoloads from erc/erc-hecomplete.el
  (autoload 'erc-hecomplete-mode "erc-hecomplete" nil t)
 
 ;;;***
 \f
 ;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd"
-;;;;;;  "erc/erc-identd.el" (17935 53318))
+;;;;;;  "erc/erc-identd.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-identd.el
  (autoload 'erc-identd-mode "erc-identd")
 
@@ -9398,7 +9440,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el"
-;;;;;;  (17842 54344))
+;;;;;;  (18104 24749))
 ;;; Generated autoloads from erc/erc-imenu.el
 
 (autoload (quote erc-create-imenu-index) "erc-imenu" "\
@@ -9408,14 +9450,14 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (17842 54344))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-join.el
  (autoload 'erc-autojoin-mode "erc-join" nil t)
 
 ;;;***
 \f
 ;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log"
-;;;;;;  "erc/erc-log.el" (17935 53318))
+;;;;;;  "erc/erc-log.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-log.el
  (autoload 'erc-log-mode "erc-log" nil t)
 
@@ -9447,7 +9489,7 @@ You can save every individual message by putting this function on
 ;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
 ;;;;;;  erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
 ;;;;;;  erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
-;;;;;;  (17935 53318))
+;;;;;;  (18104 24749))
 ;;; Generated autoloads from erc/erc-match.el
  (autoload 'erc-match-mode "erc-match")
 
@@ -9493,14 +9535,14 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17935 53318))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-menu.el
  (autoload 'erc-menu-mode "erc-menu" nil t)
 
 ;;;***
 \f
 ;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el"
-;;;;;;  (17935 53318))
+;;;;;;  (18104 24749))
 ;;; Generated autoloads from erc/erc-netsplit.el
  (autoload 'erc-netsplit-mode "erc-netsplit")
 
@@ -9512,7 +9554,7 @@ Show who's gone.
 ;;;***
 \f
 ;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks"
-;;;;;;  "erc/erc-networks.el" (17935 53318))
+;;;;;;  "erc/erc-networks.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-networks.el
 
 (autoload (quote erc-determine-network) "erc-networks" "\
@@ -9530,7 +9572,7 @@ Interactively select a server to connect to using `erc-server-alist'.
 ;;;***
 \f
 ;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify"
-;;;;;;  "erc/erc-notify.el" (17935 53318))
+;;;;;;  "erc/erc-notify.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-notify.el
  (autoload 'erc-notify-mode "erc-notify" nil t)
 
@@ -9548,33 +9590,33 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (17842 54344))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-page.el
  (autoload 'erc-page-mode "erc-page")
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17935
-;;;;;;  53318))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (18104
+;;;;;;  24749))
 ;;; Generated autoloads from erc/erc-pcomplete.el
  (autoload 'erc-completion-mode "erc-pcomplete" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (17842 54344))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-replace.el
  (autoload 'erc-replace-mode "erc-replace")
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17935 53318))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-ring.el
  (autoload 'erc-ring-mode "erc-ring" nil t)
 
 ;;;***
 \f
 ;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode)
-;;;;;;  "erc-services" "erc/erc-services.el" (17935 53318))
+;;;;;;  "erc-services" "erc/erc-services.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-services.el
  (autoload 'erc-services-mode "erc-services" nil t)
 
@@ -9591,14 +9633,14 @@ When called interactively, read the password using `read-passwd'.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (17842 54344))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-sound.el
  (autoload 'erc-sound-mode "erc-sound")
 
 ;;;***
 \f
 ;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el"
-;;;;;;  (17935 53318))
+;;;;;;  (18104 24749))
 ;;; Generated autoloads from erc/erc-speedbar.el
 
 (autoload (quote erc-speedbar-browser) "erc-speedbar" "\
@@ -9609,21 +9651,21 @@ This will add a speedbar major display mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17935
-;;;;;;  53318))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (18104
+;;;;;;  24749))
 ;;; Generated autoloads from erc/erc-spelling.el
  (autoload 'erc-spelling-mode "erc-spelling" nil t)
 
 ;;;***
 \f
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17935 53318))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-stamp.el
  (autoload 'erc-timestamp-mode "erc-stamp" nil t)
 
 ;;;***
 \f
 ;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el"
-;;;;;;  (17935 53318))
+;;;;;;  (18104 24749))
 ;;; Generated autoloads from erc/erc-track.el
 
 (defvar erc-track-minor-mode nil "\
@@ -9646,7 +9688,7 @@ module, otherwise the keybindings will not do anything useful.
 ;;;***
 \f
 ;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size)
-;;;;;;  "erc-truncate" "erc/erc-truncate.el" (17842 54344))
+;;;;;;  "erc-truncate" "erc/erc-truncate.el" (18104 24749))
 ;;; Generated autoloads from erc/erc-truncate.el
  (autoload 'erc-truncate-mode "erc-truncate" nil t)
 
@@ -9666,7 +9708,7 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
 ;;;***
 \f
 ;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el"
-;;;;;;  (17842 54344))
+;;;;;;  (18104 24749))
 ;;; Generated autoloads from erc/erc-xdcc.el
 
 (autoload (quote erc-xdcc-add-file) "erc-xdcc" "\
@@ -9676,8 +9718,8 @@ Add a file to `erc-xdcc-files'.
 
 ;;;***
 \f
-;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (17914
-;;;;;;  52082))
+;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (18104
+;;;;;;  24749))
 ;;; Generated autoloads from eshell/esh-mode.el
 
 (autoload (quote eshell-mode) "esh-mode" "\
@@ -9689,8 +9731,8 @@ Emacs shell interactive mode.
 
 ;;;***
 \f
-;;;### (autoloads (eshell-test) "esh-test" "eshell/esh-test.el" (17842
-;;;;;;  54411))
+;;;### (autoloads (eshell-test) "esh-test" "eshell/esh-test.el" (18104
+;;;;;;  24749))
 ;;; Generated autoloads from eshell/esh-test.el
 
 (autoload (quote eshell-test) "esh-test" "\
@@ -9701,7 +9743,7 @@ Test Eshell to verify that it works as expected.
 ;;;***
 \f
 ;;;### (autoloads (eshell-report-bug eshell-command-result eshell-command
-;;;;;;  eshell) "eshell" "eshell/eshell.el" (17842 54411))
+;;;;;;  eshell) "eshell" "eshell/eshell.el" (18104 24749))
 ;;; Generated autoloads from eshell/eshell.el
 
 (autoload (quote eshell) "eshell" "\
@@ -9747,7 +9789,7 @@ Please include any configuration details that might be involved.
 ;;;;;;  visit-tags-table tags-table-mode find-tag-default-function
 ;;;;;;  find-tag-hook tags-add-tables tags-compression-info-list
 ;;;;;;  tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24765))
 ;;; Generated autoloads from progmodes/etags.el
 
 (defvar tags-file-name nil "\
@@ -10049,7 +10091,7 @@ for \\[find-tag] (which see).
 ;;;;;;  ethio-fidel-to-sera-buffer ethio-fidel-to-sera-region ethio-sera-to-fidel-marker
 ;;;;;;  ethio-sera-to-fidel-mail ethio-sera-to-fidel-mail-or-marker
 ;;;;;;  ethio-sera-to-fidel-buffer ethio-sera-to-fidel-region setup-ethiopic-environment-internal)
-;;;;;;  "ethio-util" "language/ethio-util.el" (17842 58278))
+;;;;;;  "ethio-util" "language/ethio-util.el" (18104 24757))
 ;;; Generated autoloads from language/ethio-util.el
 
 (autoload (quote setup-ethiopic-environment-internal) "ethio-util" "\
@@ -10244,7 +10286,7 @@ Transcribe Ethiopic characters in ASCII depending on the file extension.
 \f
 ;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline
 ;;;;;;  eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el"
-;;;;;;  (17842 55218))
+;;;;;;  (18104 24759))
 ;;; Generated autoloads from net/eudc.el
 
 (autoload (quote eudc-set-server) "eudc" "\
@@ -10300,7 +10342,7 @@ This does nothing except loading eudc by autoload side-effect.
 \f
 ;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline
 ;;;;;;  eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary)
-;;;;;;  "eudc-bob" "net/eudc-bob.el" (17842 55218))
+;;;;;;  "eudc-bob" "net/eudc-bob.el" (18104 24759))
 ;;; Generated autoloads from net/eudc-bob.el
 
 (autoload (quote eudc-display-generic-binary) "eudc-bob" "\
@@ -10336,7 +10378,7 @@ Display a button for the JPEG DATA.
 ;;;***
 \f
 ;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb)
-;;;;;;  "eudc-export" "net/eudc-export.el" (17842 55218))
+;;;;;;  "eudc-export" "net/eudc-export.el" (18104 24759))
 ;;; Generated autoloads from net/eudc-export.el
 
 (autoload (quote eudc-insert-record-at-point-into-bbdb) "eudc-export" "\
@@ -10353,7 +10395,7 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record.
 ;;;***
 \f
 ;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el"
-;;;;;;  (17842 55218))
+;;;;;;  (18104 24759))
 ;;; Generated autoloads from net/eudc-hotlist.el
 
 (autoload (quote eudc-edit-hotlist) "eudc-hotlist" "\
@@ -10363,8 +10405,8 @@ Edit the hotlist of directory servers in a specialized buffer.
 
 ;;;***
 \f
-;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17933
-;;;;;;  14283))
+;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (18104
+;;;;;;  24748))
 ;;; Generated autoloads from emacs-lisp/ewoc.el
 
 (autoload (quote ewoc-create) "ewoc" "\
@@ -10393,7 +10435,7 @@ fourth arg NOSEP non-nil inhibits this.
 ;;;### (autoloads (executable-make-buffer-file-executable-if-script-p
 ;;;;;;  executable-self-display executable-set-magic executable-interpret
 ;;;;;;  executable-command-find-posix-p) "executable" "progmodes/executable.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24765))
 ;;; Generated autoloads from progmodes/executable.el
 
 (autoload (quote executable-command-find-posix-p) "executable" "\
@@ -10436,7 +10478,7 @@ file modes.
 \f
 ;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot
 ;;;;;;  expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el"
-;;;;;;  (17925 52793))
+;;;;;;  (18104 24735))
 ;;; Generated autoloads from expand.el
 
 (autoload (quote expand-add-abbrevs) "expand" "\
@@ -10485,7 +10527,7 @@ This is used only in conjunction with `expand-add-abbrevs'.
 
 ;;;***
 \f
-;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (17842 56333))
+;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (18104 24765))
 ;;; Generated autoloads from progmodes/f90.el
 
 (autoload (quote f90-mode) "f90" "\
@@ -10552,7 +10594,7 @@ with no args, if that value is non-nil.
 ;;;;;;  facemenu-remove-all facemenu-remove-face-props facemenu-set-read-only
 ;;;;;;  facemenu-set-intangible facemenu-set-invisible facemenu-set-face-from-menu
 ;;;;;;  facemenu-set-background facemenu-set-foreground facemenu-set-face)
-;;;;;;  "facemenu" "facemenu.el" (17842 58279))
+;;;;;;  "facemenu" "facemenu.el" (18104 24735))
 ;;; Generated autoloads from facemenu.el
  (define-key global-map "\M-o" 'facemenu-keymap)
  (autoload 'facemenu-keymap "facemenu" "Keymap for face-changing commands." t 'keymap)
@@ -10717,11 +10759,51 @@ argument BUFFER-NAME is nil, it defaults to *Colors*.
 
 \(fn &optional LIST BUFFER-NAME)" t nil)
 
+;;;***
+\f
+;;;### (autoloads (turn-on-fast-lock fast-lock-mode) "fast-lock"
+;;;;;;  "obsolete/fast-lock.el" (18104 24760))
+;;; Generated autoloads from obsolete/fast-lock.el
+
+(autoload (quote fast-lock-mode) "fast-lock" "\
+Toggle Fast Lock mode.
+With arg, turn Fast Lock mode on if and only if arg is positive and the buffer
+is associated with a file.  Enable it automatically in your `~/.emacs' by:
+
+ (setq font-lock-support-mode 'fast-lock-mode)
+
+If Fast Lock mode is enabled, and the current buffer does not contain any text
+properties, any associated Font Lock cache is used if its timestamp matches the
+buffer's file, and its `font-lock-keywords' match those that you are using.
+
+Font Lock caches may be saved:
+- When you save the file's buffer.
+- When you kill an unmodified file's buffer.
+- When you exit Emacs, for all unmodified or saved buffers.
+Depending on the value of `fast-lock-save-events'.
+See also the commands `fast-lock-read-cache' and `fast-lock-save-cache'.
+
+Use \\[font-lock-fontify-buffer] to fontify the buffer if the cache is bad.
+
+Various methods of control are provided for the Font Lock cache.  In general,
+see variable `fast-lock-cache-directories' and function `fast-lock-cache-name'.
+For saving, see variables `fast-lock-minimum-size', `fast-lock-save-events',
+`fast-lock-save-others' and `fast-lock-save-faces'.
+
+\(fn &optional ARG)" t nil)
+
+(autoload (quote turn-on-fast-lock) "fast-lock" "\
+Unconditionally turn on Fast Lock mode.
+
+\(fn)" nil nil)
+
+(when (fboundp (quote add-minor-mode)) (defvar fast-lock-mode nil) (add-minor-mode (quote fast-lock-mode) nil))
+
 ;;;***
 \f
 ;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue
 ;;;;;;  feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts
-;;;;;;  feedmail-send-it) "feedmail" "mail/feedmail.el" (17888 29839))
+;;;;;;  feedmail-send-it) "feedmail" "mail/feedmail.el" (17900 45314))
 ;;; Generated autoloads from mail/feedmail.el
 
 (autoload (quote feedmail-send-it) "feedmail" "\
@@ -10775,7 +10857,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
 ;;;***
 \f
 ;;;### (autoloads (ffap-bindings dired-at-point ffap-at-mouse ffap-menu
-;;;;;;  find-file-at-point ffap-next) "ffap" "ffap.el" (17943 4602))
+;;;;;;  find-file-at-point ffap-next) "ffap" "ffap.el" (18104 24735))
 ;;; Generated autoloads from ffap.el
 
 (autoload (quote ffap-next) "ffap" "\
@@ -10834,7 +10916,7 @@ Evaluate the forms in variable `ffap-bindings'.
 ;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively
 ;;;;;;  file-cache-add-directory-using-locate file-cache-add-directory-using-find
 ;;;;;;  file-cache-add-file file-cache-add-directory-list file-cache-add-directory)
-;;;;;;  "filecache" "filecache.el" (17842 58279))
+;;;;;;  "filecache" "filecache.el" (18104 24735))
 ;;; Generated autoloads from filecache.el
 
 (autoload (quote file-cache-add-directory) "filecache" "\
@@ -10893,8 +10975,8 @@ the name is considered already unique; only the second substitution
 
 ;;;***
 \f
-;;;### (autoloads (filesets-init) "filesets" "filesets.el" (17842
-;;;;;;  58279))
+;;;### (autoloads (filesets-init) "filesets" "filesets.el" (18104
+;;;;;;  24735))
 ;;; Generated autoloads from filesets.el
 
 (autoload (quote filesets-init) "filesets" "\
@@ -10905,7 +10987,7 @@ Set up hooks, load the cache file -- if existing -- and build the menu.
 
 ;;;***
 \f
-;;;### (autoloads nil "fill" "textmodes/fill.el" (18007 39658))
+;;;### (autoloads nil "fill" "textmodes/fill.el" (18104 24771))
 ;;; Generated autoloads from textmodes/fill.el
 (put 'colon-double-space 'safe-local-variable 'booleanp)
 
@@ -10913,7 +10995,7 @@ Set up hooks, load the cache file -- if existing -- and build the menu.
 \f
 ;;;### (autoloads (find-grep-dired find-name-dired find-dired find-grep-options
 ;;;;;;  find-ls-subdir-switches find-ls-option) "find-dired" "find-dired.el"
-;;;;;;  (17992 30877))
+;;;;;;  (18104 24736))
 ;;; Generated autoloads from find-dired.el
 
 (defvar find-ls-option (if (eq system-type (quote berkeley-unix)) (quote ("-ls" . "-gilsb")) (quote ("-exec ls -ld {} \\;" . "-ld"))) "\
@@ -10974,7 +11056,7 @@ Thus ARG can also contain additional grep options.
 \f
 ;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file
 ;;;;;;  ff-find-other-file ff-get-other-file) "find-file" "find-file.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24736))
 ;;; Generated autoloads from find-file.el
 
 (defvar ff-special-constructs (quote (("^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]" lambda nil (buffer-substring (match-beginning 2) (match-end 2))))) "\
@@ -11068,7 +11150,7 @@ Visit the file you click on in another window.
 ;;;;;;  find-variable find-variable-noselect find-function-other-frame
 ;;;;;;  find-function-other-window find-function find-function-noselect
 ;;;;;;  find-function-search-for-symbol find-library) "find-func"
-;;;;;;  "emacs-lisp/find-func.el" (17842 54152))
+;;;;;;  "emacs-lisp/find-func.el" (18104 24748))
 ;;; Generated autoloads from emacs-lisp/find-func.el
 
 (autoload (quote find-library) "find-func" "\
@@ -11222,7 +11304,7 @@ Define some key bindings for the find-function family of functions.
 ;;;***
 \f
 ;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories
-;;;;;;  find-lisp-find-dired) "find-lisp" "find-lisp.el" (17893 23802))
+;;;;;;  find-lisp-find-dired) "find-lisp" "find-lisp.el" (18104 24736))
 ;;; Generated autoloads from find-lisp.el
 
 (autoload (quote find-lisp-find-dired) "find-lisp" "\
@@ -11243,7 +11325,7 @@ Change the filter on a find-lisp-find-dired buffer to REGEXP.
 ;;;***
 \f
 ;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords)
-;;;;;;  "finder" "finder.el" (17842 58279))
+;;;;;;  "finder" "finder.el" (18104 24736))
 ;;; Generated autoloads from finder.el
 
 (autoload (quote finder-list-keywords) "finder" "\
@@ -11265,7 +11347,7 @@ Find packages matching a given keyword.
 ;;;***
 \f
 ;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl"
-;;;;;;  "flow-ctrl.el" (17842 58279))
+;;;;;;  "flow-ctrl.el" (18104 24736))
 ;;; Generated autoloads from flow-ctrl.el
 
 (autoload (quote enable-flow-control) "flow-ctrl" "\
@@ -11287,7 +11369,7 @@ to get the effect of a C-q.
 ;;;***
 \f
 ;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/flow-fill.el
 
 (autoload (quote fill-flowed-encode) "flow-fill" "\
@@ -11303,7 +11385,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode)
-;;;;;;  "flymake" "progmodes/flymake.el" (17934 27588))
+;;;;;;  "flymake" "progmodes/flymake.el" (18104 24765))
 ;;; Generated autoloads from progmodes/flymake.el
 
 (autoload (quote flymake-mode) "flymake" "\
@@ -11327,7 +11409,7 @@ Turn flymake mode off.
 \f
 ;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
 ;;;;;;  turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
-;;;;;;  "flyspell" "textmodes/flyspell.el" (18006 55797))
+;;;;;;  "flyspell" "textmodes/flyspell.el" (18104 24771))
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload (quote flyspell-prog-mode) "flyspell" "\
@@ -11396,18 +11478,18 @@ Flyspell whole buffer.
 \f
 ;;;### (autoloads (follow-delete-other-windows-and-split follow-mode
 ;;;;;;  turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24736))
 ;;; Generated autoloads from follow.el
 
 (autoload (quote turn-on-follow-mode) "follow" "\
 Turn on Follow mode.  Please see the function `follow-mode'.
 
-\(fn)" t nil)
+\(fn)" nil nil)
 
 (autoload (quote turn-off-follow-mode) "follow" "\
 Turn off Follow mode.  Please see the function `follow-mode'.
 
-\(fn)" t nil)
+\(fn)" nil nil)
 
 (autoload (quote follow-mode) "follow" "\
 Minor mode that combines windows into one tall virtual window.
@@ -11425,16 +11507,16 @@ of two major techniques:
   movement commands.
 
 Follow mode comes to its prime when used on a large screen and two
-side-by-side window are used. The user can, with the help of Follow
+side-by-side windows are used.  The user can, with the help of Follow
 mode, use two full-height windows as though they would have been
-one. Imagine yourself editing a large function, or section of text,
+one.  Imagine yourself editing a large function, or section of text,
 and being able to use 144 lines instead of the normal 72... (your
 mileage may vary).
 
 To split one large window into two side-by-side windows, the commands
 `\\[split-window-horizontally]' or `M-x follow-delete-other-windows-and-split' can be used.
 
-Only windows displayed in the same frame follow each-other.
+Only windows displayed in the same frame follow each other.
 
 If the variable `follow-intercept-processes' is non-nil, Follow mode
 will listen to the output of processes and redisplay accordingly.
@@ -11454,11 +11536,11 @@ Create two side by side windows and enter Follow Mode.
 Execute this command to display as much as possible of the text
 in the selected window.  All other windows, in the current
 frame, are deleted and the selected window is split in two
-side-by-side windows. Follow Mode is activated, hence the
+side-by-side windows.  Follow Mode is activated, hence the
 two windows always will display two successive pages.
 \(If one window is moved, the other one will follow.)
 
-If ARG is positive, the leftmost window is selected.  If it negative,
+If ARG is positive, the leftmost window is selected.  If negative,
 the rightmost is selected.  If ARG is nil, the leftmost window is
 selected if the original window is the first one in the frame.
 
@@ -11470,8 +11552,8 @@ in your `~/.emacs' file, replacing [f7] by your favourite key:
 
 ;;;***
 \f
-;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (17954
-;;;;;;  24686))
+;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (18104
+;;;;;;  24758))
 ;;; Generated autoloads from mail/footnote.el
 
 (autoload (quote footnote-mode) "footnote" "\
@@ -11492,7 +11574,7 @@ key             binding
 ;;;***
 \f
 ;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode)
-;;;;;;  "forms" "forms.el" (17842 58279))
+;;;;;;  "forms" "forms.el" (18104 24736))
 ;;; Generated autoloads from forms.el
 
 (autoload (quote forms-mode) "forms" "\
@@ -11528,18 +11610,10 @@ Visit a file in Forms mode in other window.
 
 ;;;***
 \f
-;;;### (autoloads (fortran-mode fortran-tab-mode-default) "fortran"
-;;;;;;  "progmodes/fortran.el" (17842 56333))
+;;;### (autoloads (fortran-mode) "fortran" "progmodes/fortran.el"
+;;;;;;  (18104 24766))
 ;;; Generated autoloads from progmodes/fortran.el
 
-(defvar fortran-tab-mode-default nil "\
-*Default tabbing/carriage control style for empty files in Fortran mode.
-A non-nil value specifies tab-digit style of continuation control.
-A value of nil specifies that continuation lines are marked
-with a character in column 6.")
-
-(custom-autoload (quote fortran-tab-mode-default) "fortran" t)
-
 (autoload (quote fortran-mode) "fortran" "\
 Major mode for editing Fortran code in fixed format.
 For free format code, use `f90-mode'.
@@ -11615,7 +11689,7 @@ with no args, if that value is non-nil.
 ;;;***
 \f
 ;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region
-;;;;;;  fortune-add-fortune) "fortune" "play/fortune.el" (17842 55395))
+;;;;;;  fortune-add-fortune) "fortune" "play/fortune.el" (18104 24761))
 ;;; Generated autoloads from play/fortune.el
 
 (autoload (quote fortune-add-fortune) "fortune" "\
@@ -11665,7 +11739,7 @@ and choose the directory as the fortune-file.
 ;;;***
 \f
 ;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el"
-;;;;;;  (17941 38806))
+;;;;;;  (18104 24766))
 ;;; Generated autoloads from progmodes/gdb-ui.el
 
 (autoload (quote gdba) "gdb-ui" "\
@@ -11728,8 +11802,8 @@ Non-nil means record the process input and output in `gdb-debug-log'.")
 ;;;***
 \f
 ;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal
-;;;;;;  define-generic-mode) "generic" "emacs-lisp/generic.el" (17842
-;;;;;;  54152))
+;;;;;;  define-generic-mode) "generic" "emacs-lisp/generic.el" (18104
+;;;;;;  24748))
 ;;; Generated autoloads from emacs-lisp/generic.el
 
 (defvar generic-mode-list nil "\
@@ -11804,7 +11878,7 @@ regular expression that can be used as an element of
 ;;;***
 \f
 ;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el"
-;;;;;;  (17842 56333))
+;;;;;;  (18104 24766))
 ;;; Generated autoloads from progmodes/glasses.el
 
 (autoload (quote glasses-mode) "glasses" "\
@@ -11817,7 +11891,7 @@ at places they belong to.
 ;;;***
 \f
 ;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error
-;;;;;;  gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17934 27588))
+;;;;;;  gmm-message) "gmm-utils" "gnus/gmm-utils.el" (18104 24750))
 ;;; Generated autoloads from gnus/gmm-utils.el
 
 (autoload (quote gmm-message) "gmm-utils" "\
@@ -11864,7 +11938,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
 ;;;***
 \f
 ;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server
-;;;;;;  gnus-slave-no-server) "gnus" "gnus/gnus.el" (17842 54741))
+;;;;;;  gnus-slave-no-server) "gnus" "gnus/gnus.el" (18104 24751))
 ;;; Generated autoloads from gnus/gnus.el
 (when (fboundp 'custom-autoload)
  (custom-autoload 'gnus-select-method "gnus"))
@@ -11917,7 +11991,7 @@ prompt the user for the name of an NNTP server to use.
 ;;;;;;  gnus-agent-get-undownloaded-list gnus-agent-delete-group
 ;;;;;;  gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize
 ;;;;;;  gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent"
-;;;;;;  "gnus/gnus-agent.el" (17842 54741))
+;;;;;;  "gnus/gnus-agent.el" (18104 24750))
 ;;; Generated autoloads from gnus/gnus-agent.el
 
 (autoload (quote gnus-unplugged) "gnus-agent" "\
@@ -12008,7 +12082,7 @@ If CLEAN, obsolete (ignore).
 ;;;***
 \f
 ;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
-;;;;;;  (17960 49045))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-art.el
 
 (autoload (quote gnus-article-prepare-display) "gnus-art" "\
@@ -12019,7 +12093,7 @@ Make the current buffer look like a nice article.
 ;;;***
 \f
 ;;;### (autoloads (gnus-audio-play) "gnus-audio" "gnus/gnus-audio.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-audio.el
 
 (autoload (quote gnus-audio-play) "gnus-audio" "\
@@ -12031,8 +12105,8 @@ Play a sound FILE through the speaker.
 \f
 ;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group
 ;;;;;;  gnus-cache-generate-nov-databases gnus-cache-generate-active
-;;;;;;  gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (17842
-;;;;;;  54741))
+;;;;;;  gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (18104
+;;;;;;  24750))
 ;;; Generated autoloads from gnus/gnus-cache.el
 
 (autoload (quote gnus-jog-cache) "gnus-cache" "\
@@ -12074,7 +12148,7 @@ supported.
 ;;;***
 \f
 ;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article)
-;;;;;;  "gnus-delay" "gnus/gnus-delay.el" (17842 54741))
+;;;;;;  "gnus-delay" "gnus/gnus-delay.el" (18104 24750))
 ;;; Generated autoloads from gnus/gnus-delay.el
 
 (autoload (quote gnus-delay-article) "gnus-delay" "\
@@ -12110,7 +12184,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
 ;;;***
 \f
 ;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d)
-;;;;;;  "gnus-diary" "gnus/gnus-diary.el" (17992 30878))
+;;;;;;  "gnus-diary" "gnus/gnus-diary.el" (18104 24750))
 ;;; Generated autoloads from gnus/gnus-diary.el
 
 (autoload (quote gnus-user-format-function-d) "gnus-diary" "\
@@ -12126,7 +12200,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-dired.el
 
 (autoload (quote turn-on-gnus-dired-mode) "gnus-dired" "\
@@ -12137,7 +12211,7 @@ Convenience method to turn on gnus-dired-mode.
 ;;;***
 \f
 ;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-draft.el
 
 (autoload (quote gnus-draft-reminder) "gnus-draft" "\
@@ -12149,8 +12223,8 @@ Reminder user if there are unsent drafts.
 \f
 ;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png
 ;;;;;;  gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header
-;;;;;;  gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (17842
-;;;;;;  54741))
+;;;;;;  gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (18104
+;;;;;;  24750))
 ;;; Generated autoloads from gnus/gnus-fun.el
 
 (autoload (quote gnus-random-x-face) "gnus-fun" "\
@@ -12189,7 +12263,7 @@ FILE should be a PNG file that's 48x48 and smaller than or equal to
 ;;;***
 \f
 ;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group)
-;;;;;;  "gnus-group" "gnus/gnus-group.el" (17842 54741))
+;;;;;;  "gnus-group" "gnus/gnus-group.el" (18104 24750))
 ;;; Generated autoloads from gnus/gnus-group.el
 
 (autoload (quote gnus-fetch-group) "gnus-group" "\
@@ -12206,7 +12280,7 @@ Pop up a frame and enter GROUP.
 ;;;***
 \f
 ;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-kill.el
 
 (defalias (quote gnus-batch-kill) (quote gnus-batch-score))
@@ -12221,7 +12295,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score
 \f
 ;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate
 ;;;;;;  turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-ml.el
 
 (autoload (quote turn-on-gnus-mailing-list-mode) "gnus-ml" "\
@@ -12246,7 +12320,7 @@ Minor mode for providing mailing-list commands.
 \f
 ;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update
 ;;;;;;  gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-mlspl.el
 
 (autoload (quote gnus-group-split-setup) "gnus-mlspl" "\
@@ -12347,7 +12421,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
 ;;;***
 \f
 ;;;### (autoloads (gnus-change-server) "gnus-move" "gnus/gnus-move.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-move.el
 
 (autoload (quote gnus-change-server) "gnus-move" "\
@@ -12359,7 +12433,7 @@ Update the .newsrc.eld file to reflect the change of nntp server.
 ;;;***
 \f
 ;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
-;;;;;;  "gnus-msg" "gnus/gnus-msg.el" (17949 41467))
+;;;;;;  "gnus-msg" "gnus/gnus-msg.el" (18104 24750))
 ;;; Generated autoloads from gnus/gnus-msg.el
 
 (autoload (quote gnus-msg-mail) "gnus-msg" "\
@@ -12384,7 +12458,7 @@ Like `message-reply'.
 ;;;***
 \f
 ;;;### (autoloads (gnus-nocem-load-cache gnus-nocem-scan-groups)
-;;;;;;  "gnus-nocem" "gnus/gnus-nocem.el" (17842 54741))
+;;;;;;  "gnus-nocem" "gnus/gnus-nocem.el" (18104 24750))
 ;;; Generated autoloads from gnus/gnus-nocem.el
 
 (autoload (quote gnus-nocem-scan-groups) "gnus-nocem" "\
@@ -12401,7 +12475,7 @@ Load the NoCeM cache.
 \f
 ;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon
 ;;;;;;  gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-picon.el
 
 (autoload (quote gnus-treat-from-picon) "gnus-picon" "\
@@ -12428,7 +12502,7 @@ If picons are already displayed, remove them.
 ;;;;;;  gnus-sorted-nintersection gnus-sorted-range-intersection
 ;;;;;;  gnus-sorted-intersection gnus-intersection gnus-sorted-complement
 ;;;;;;  gnus-sorted-ndifference gnus-sorted-difference) "gnus-range"
-;;;;;;  "gnus/gnus-range.el" (17842 54741))
+;;;;;;  "gnus/gnus-range.el" (18104 24750))
 ;;; Generated autoloads from gnus/gnus-range.el
 
 (autoload (quote gnus-sorted-difference) "gnus-range" "\
@@ -12496,7 +12570,7 @@ Add NUM into sorted LIST by side effect.
 ;;;***
 \f
 ;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
-;;;;;;  "gnus-registry" "gnus/gnus-registry.el" (17934 27588))
+;;;;;;  "gnus-registry" "gnus/gnus-registry.el" (18104 24750))
 ;;; Generated autoloads from gnus/gnus-registry.el
 
 (autoload (quote gnus-registry-initialize) "gnus-registry" "\
@@ -12512,8 +12586,8 @@ Install the registry hooks.
 ;;;***
 \f
 ;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate
-;;;;;;  gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (17842
-;;;;;;  54741))
+;;;;;;  gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (18104
+;;;;;;  24750))
 ;;; Generated autoloads from gnus/gnus-sieve.el
 
 (autoload (quote gnus-sieve-update) "gnus-sieve" "\
@@ -12541,7 +12615,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (gnus-batch-brew-soup) "gnus-soup" "gnus/gnus-soup.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-soup.el
 
 (autoload (quote gnus-batch-brew-soup) "gnus-soup" "\
@@ -12561,7 +12635,7 @@ Note -- this function hasn't been implemented yet.
 ;;;***
 \f
 ;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24750))
 ;;; Generated autoloads from gnus/gnus-spec.el
 
 (autoload (quote gnus-update-format) "gnus-spec" "\
@@ -12572,8 +12646,8 @@ Update the format specification near point.
 ;;;***
 \f
 ;;;### (autoloads (gnus-fixup-nnimap-unread-after-getting-new-news
-;;;;;;  gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" (17842
-;;;;;;  54741))
+;;;;;;  gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" (18104
+;;;;;;  24750))
 ;;; Generated autoloads from gnus/gnus-start.el
 
 (autoload (quote gnus-declare-backend) "gnus-start" "\
@@ -12589,7 +12663,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24751))
 ;;; Generated autoloads from gnus/gnus-win.el
 
 (autoload (quote gnus-add-configuration) "gnus-win" "\
@@ -12599,7 +12673,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
 
 ;;;***
 \f
-;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17941 38806))
+;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (18104 24761))
 ;;; Generated autoloads from play/gomoku.el
 
 (autoload (quote gomoku) "gomoku" "\
@@ -12626,7 +12700,7 @@ Use \\[describe-mode] for more info.
 ;;;***
 \f
 ;;;### (autoloads (goto-address goto-address-at-point) "goto-addr"
-;;;;;;  "net/goto-addr.el" (17842 55218))
+;;;;;;  "net/goto-addr.el" (18104 24759))
 ;;; Generated autoloads from net/goto-addr.el
 
 (define-obsolete-function-alias (quote goto-address-at-mouse) (quote goto-address-at-point) "22.1")
@@ -12656,7 +12730,7 @@ Also fontifies the buffer appropriately (see `goto-address-fontify-p' and
 \f
 ;;;### (autoloads (rgrep lgrep grep-find grep grep-mode grep-compute-defaults
 ;;;;;;  grep-process-setup grep-setup-hook grep-find-command grep-command
-;;;;;;  grep-window-height) "grep" "progmodes/grep.el" (17944 20144))
+;;;;;;  grep-window-height) "grep" "progmodes/grep.el" (18104 24766))
 ;;; Generated autoloads from progmodes/grep.el
 
 (defvar grep-window-height nil "\
@@ -12796,7 +12870,7 @@ This command shares argument histories with \\[lgrep] and \\[grep-find].
 
 ;;;***
 \f
-;;;### (autoloads (gs-load-image) "gs" "gs.el" (17842 58279))
+;;;### (autoloads (gs-load-image) "gs" "gs.el" (18104 24737))
 ;;; Generated autoloads from gs.el
 
 (autoload (quote gs-load-image) "gs" "\
@@ -12810,7 +12884,7 @@ the form \"WINDOW-ID PIXMAP-ID\".  Value is non-nil if successful.
 ;;;***
 \f
 ;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb)
-;;;;;;  "gud" "progmodes/gud.el" (17992 30878))
+;;;;;;  "gud" "progmodes/gud.el" (18104 24766))
 ;;; Generated autoloads from progmodes/gud.el
 
 (autoload (quote gdb) "gud" "\
@@ -12884,7 +12958,7 @@ gud, see `gud-mode'.
 \(fn COMMAND-LINE)" t nil)
  (add-hook 'same-window-regexps "\\*gud-.*\\*\\(\\|<[0-9]+>\\)")
 
-(add-to-list (quote auto-mode-alist) (quote ("/\\.gdbinit" . gdb-script-mode)))
+(add-to-list (quote auto-mode-alist) (quote ("/\\.[a-z0-9-]*gdbinit" . gdb-script-mode)))
 
 (autoload (quote gdb-script-mode) "gud" "\
 Major mode for editing GDB scripts
@@ -12893,8 +12967,8 @@ Major mode for editing GDB scripts
 
 ;;;***
 \f
-;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (17842
-;;;;;;  55395))
+;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (18104
+;;;;;;  24761))
 ;;; Generated autoloads from play/handwrite.el
 
 (autoload (quote handwrite) "handwrite" "\
@@ -12912,7 +12986,7 @@ Variables: handwrite-linespace     (default 12)
 ;;;***
 \f
 ;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el"
-;;;;;;  (17742 40275))
+;;;;;;  (17754 24255))
 ;;; Generated autoloads from play/hanoi.el
 
 (autoload (quote hanoi) "hanoi" "\
@@ -12942,7 +13016,7 @@ to be updated.
 ;;;### (autoloads (scan-buf-previous-region scan-buf-next-region
 ;;;;;;  scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer
 ;;;;;;  help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string
-;;;;;;  help-at-pt-string) "help-at-pt" "help-at-pt.el" (17842 58279))
+;;;;;;  help-at-pt-string) "help-at-pt" "help-at-pt.el" (18104 24737))
 ;;; Generated autoloads from help-at-pt.el
 
 (autoload (quote help-at-pt-string) "help-at-pt" "\
@@ -13072,7 +13146,7 @@ different regions.  With numeric argument ARG, behaves like
 ;;;### (autoloads (describe-categories describe-syntax describe-variable
 ;;;;;;  variable-at-point describe-function-1 describe-simplify-lib-file-name
 ;;;;;;  help-C-file-name describe-function) "help-fns" "help-fns.el"
-;;;;;;  (17845 46651))
+;;;;;;  (18104 24737))
 ;;; Generated autoloads from help-fns.el
 
 (autoload (quote describe-function) "help-fns" "\
@@ -13106,10 +13180,11 @@ If ANY-SYMBOL is non-nil, don't insist the symbol be bound.
 (autoload (quote describe-variable) "help-fns" "\
 Display the full documentation of VARIABLE (a symbol).
 Returns the documentation as a string, also.
-If VARIABLE has a buffer-local value in BUFFER (default to the current buffer),
+If VARIABLE has a buffer-local value in BUFFER or FRAME
+\(default to the current buffer and current frame),
 it is displayed along with the global value.
 
-\(fn VARIABLE &optional BUFFER)" t nil)
+\(fn VARIABLE &optional BUFFER FRAME)" t nil)
 
 (autoload (quote describe-syntax) "help-fns" "\
 Describe the syntax specifications in the syntax table of BUFFER.
@@ -13129,7 +13204,7 @@ BUFFER should be a buffer or a buffer name.
 ;;;***
 \f
 ;;;### (autoloads (three-step-help) "help-macro" "help-macro.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24737))
 ;;; Generated autoloads from help-macro.el
 
 (defvar three-step-help nil "\
@@ -13145,7 +13220,7 @@ A value of nil means skip the middle step, so that
 \f
 ;;;### (autoloads (help-xref-on-pp help-insert-xref-button help-xref-button
 ;;;;;;  help-make-xrefs help-setup-xref help-mode-finish help-mode-setup
-;;;;;;  help-mode) "help-mode" "help-mode.el" (17842 58279))
+;;;;;;  help-mode) "help-mode" "help-mode.el" (18104 24737))
 ;;; Generated autoloads from help-mode.el
 
 (autoload (quote help-mode) "help-mode" "\
@@ -13228,7 +13303,7 @@ Add xrefs for symbols in `pp's output between FROM and TO.
 ;;;***
 \f
 ;;;### (autoloads (Helper-help Helper-describe-bindings) "helper"
-;;;;;;  "emacs-lisp/helper.el" (17842 54152))
+;;;;;;  "emacs-lisp/helper.el" (18104 24748))
 ;;; Generated autoloads from emacs-lisp/helper.el
 
 (autoload (quote Helper-describe-bindings) "helper" "\
@@ -13244,7 +13319,7 @@ Provide help for current mode.
 ;;;***
 \f
 ;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl"
-;;;;;;  "hexl.el" (17844 53657))
+;;;;;;  "hexl.el" (18104 24737))
 ;;; Generated autoloads from hexl.el
 
 (autoload (quote hexl-mode) "hexl" "\
@@ -13341,7 +13416,7 @@ This discards the buffer's undo information.
 ;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer
 ;;;;;;  hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer
 ;;;;;;  global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el"
-;;;;;;  (17992 30877))
+;;;;;;  (18104 24737))
 ;;; Generated autoloads from hi-lock.el
 
 (autoload (quote hi-lock-mode) "hi-lock" "\
@@ -13471,7 +13546,7 @@ be found in variable `hi-lock-interactive-patterns'.
 ;;;***
 \f
 ;;;### (autoloads (hide-ifdef-lines hide-ifdef-read-only hide-ifdef-initially
-;;;;;;  hide-ifdef-mode) "hideif" "progmodes/hideif.el" (17842 56333))
+;;;;;;  hide-ifdef-mode) "hideif" "progmodes/hideif.el" (18104 24766))
 ;;; Generated autoloads from progmodes/hideif.el
 
 (autoload (quote hide-ifdef-mode) "hideif" "\
@@ -13526,7 +13601,7 @@ how the hiding is done:
 ;;;***
 \f
 ;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
-;;;;;;  (17934 43341))
+;;;;;;  (18104 24766))
 ;;; Generated autoloads from progmodes/hideshow.el
 
 (defvar hs-special-modes-alist (quote ((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))) "\
@@ -13589,7 +13664,7 @@ Unconditionally turn off `hs-minor-mode'.
 ;;;;;;  highlight-compare-buffers highlight-changes-rotate-faces
 ;;;;;;  highlight-changes-previous-change highlight-changes-next-change
 ;;;;;;  highlight-changes-mode highlight-changes-remove-highlight)
-;;;;;;  "hilit-chg" "hilit-chg.el" (17842 58279))
+;;;;;;  "hilit-chg" "hilit-chg.el" (18104 24737))
 ;;; Generated autoloads from hilit-chg.el
 
 (autoload (quote highlight-changes-remove-highlight) "hilit-chg" "\
@@ -13719,7 +13794,7 @@ variable `highlight-changes-global-changes-existing-buffers' is non-nil).
 ;;;;;;  hippie-expand-ignore-buffers hippie-expand-max-buffers hippie-expand-no-restriction
 ;;;;;;  hippie-expand-dabbrev-as-symbol hippie-expand-dabbrev-skip-space
 ;;;;;;  hippie-expand-verbose hippie-expand-try-functions-list) "hippie-exp"
-;;;;;;  "hippie-exp.el" (17842 58279))
+;;;;;;  "hippie-exp.el" (18104 24737))
 ;;; Generated autoloads from hippie-exp.el
 
 (defvar hippie-expand-try-functions-list (quote (try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol)) "\
@@ -13792,7 +13867,7 @@ argument VERBOSE non-nil makes the function verbose.
 ;;;***
 \f
 ;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24737))
 ;;; Generated autoloads from hl-line.el
 
 (autoload (quote hl-line-mode) "hl-line" "\
@@ -13833,7 +13908,7 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
 ;;;***
 \f
 ;;;### (autoloads (list-holidays holidays) "holidays" "calendar/holidays.el"
-;;;;;;  (17956 13479))
+;;;;;;  (18104 24745))
 ;;; Generated autoloads from calendar/holidays.el
 
 (autoload (quote holidays) "holidays" "\
@@ -13869,8 +13944,8 @@ The optional LABEL is used to label the buffer created.
 
 ;;;***
 \f
-;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (17842
-;;;;;;  54741))
+;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (18104
+;;;;;;  24751))
 ;;; Generated autoloads from gnus/html2text.el
 
 (autoload (quote html2text) "html2text" "\
@@ -13902,7 +13977,7 @@ Convert HTML to plain text in the current buffer.
 ;;;;;;  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" (17842 58279))
+;;;;;;  ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" (18104 24737))
 ;;; Generated autoloads from ibuf-ext.el
 
 (autoload (quote ibuffer-auto-mode) "ibuf-ext" "\
@@ -14239,7 +14314,7 @@ Mark buffers whose associated file is compressed.
 \(fn)" t nil)
 
 (autoload (quote ibuffer-mark-old-buffers) "ibuf-ext" "\
-Mark buffers which have not been viewed in `ibuffer-old-time' days.
+Mark buffers which have not been viewed in `ibuffer-old-time' hours.
 
 \(fn)" t nil)
 
@@ -14268,8 +14343,8 @@ defaults to one.
 ;;;***
 \f
 ;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter
-;;;;;;  define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (17842
-;;;;;;  58279))
+;;;;;;  define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (18104
+;;;;;;  24737))
 ;;; Generated autoloads from ibuf-macs.el
 
 (autoload (quote define-ibuffer-column) "ibuf-macs" "\
@@ -14358,7 +14433,7 @@ bound to the current value of the filter.
 ;;;***
 \f
 ;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers)
-;;;;;;  "ibuffer" "ibuffer.el" (17842 58279))
+;;;;;;  "ibuffer" "ibuffer.el" (18104 24737))
 ;;; Generated autoloads from ibuffer.el
 
 (autoload (quote ibuffer-list-buffers) "ibuffer" "\
@@ -14399,7 +14474,7 @@ FORMATS is the value to use for `ibuffer-formats'.
 \f
 ;;;### (autoloads (icalendar-import-buffer icalendar-import-file
 ;;;;;;  icalendar-export-region icalendar-export-file) "icalendar"
-;;;;;;  "calendar/icalendar.el" (17921 16827))
+;;;;;;  "calendar/icalendar.el" (18104 24745))
 ;;; Generated autoloads from calendar/icalendar.el
 
 (autoload (quote icalendar-export-file) "icalendar" "\
@@ -14451,8 +14526,8 @@ buffer `*icalendar-errors*'.
 
 ;;;***
 \f
-;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (17907
-;;;;;;  1407))
+;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (18104
+;;;;;;  24737))
 ;;; Generated autoloads from icomplete.el
 
 (defvar icomplete-mode nil "\
@@ -14472,7 +14547,7 @@ With a numeric argument, turn Icomplete mode on iff ARG is positive.
 
 ;;;***
 \f
-;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (17842 56333))
+;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (18104 24766))
 ;;; Generated autoloads from progmodes/icon.el
 
 (autoload (quote icon-mode) "icon" "\
@@ -14513,7 +14588,7 @@ with no args, if that value is non-nil.
 ;;;***
 \f
 ;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el"
-;;;;;;  (17965 23638))
+;;;;;;  (18104 24767))
 ;;; Generated autoloads from progmodes/idlw-shell.el
 
 (autoload (quote idlwave-shell) "idlw-shell" "\
@@ -14539,7 +14614,7 @@ See also the variable `idlwave-shell-prompt-pattern'.
 ;;;***
 \f
 ;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
-;;;;;;  (17992 30878))
+;;;;;;  (18104 24767))
 ;;; Generated autoloads from progmodes/idlwave.el
 
 (autoload (quote idlwave-mode) "idlwave" "\
@@ -14674,8 +14749,8 @@ The main features of this mode are
 ;;;;;;  ido-find-alternate-file ido-find-file-other-window ido-find-file
 ;;;;;;  ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer
 ;;;;;;  ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window
-;;;;;;  ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17963
-;;;;;;  25911))
+;;;;;;  ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (18104
+;;;;;;  24737))
 ;;; Generated autoloads from ido.el
 
 (defvar ido-mode nil "\
@@ -14936,7 +15011,7 @@ DEF, if non-nil, is the default value.
 
 ;;;***
 \f
-;;;### (autoloads (ielm) "ielm" "ielm.el" (17842 58279))
+;;;### (autoloads (ielm) "ielm" "ielm.el" (18104 24737))
 ;;; Generated autoloads from ielm.el
  (add-hook 'same-window-buffer-names "*ielm*")
 
@@ -14949,7 +15024,7 @@ Switches to the buffer `*ielm*', or creates it if it does not exist.
 ;;;***
 \f
 ;;;### (autoloads (iimage-mode turn-on-iimage-mode) "iimage" "iimage.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24737))
 ;;; Generated autoloads from iimage.el
 
 (autoload (quote turn-on-iimage-mode) "iimage" "\
@@ -14968,7 +15043,7 @@ Toggle inline image minor mode.
 ;;;;;;  insert-image put-image create-image image-type-auto-detected-p
 ;;;;;;  image-type-available-p image-type image-type-from-file-name
 ;;;;;;  image-type-from-file-header image-type-from-buffer image-type-from-data)
-;;;;;;  "image" "image.el" (17868 42568))
+;;;;;;  "image" "image.el" (18104 24737))
 ;;; Generated autoloads from image.el
 
 (autoload (quote image-type-from-data) "image" "\
@@ -15001,14 +15076,14 @@ be determined.
 
 (autoload (quote image-type) "image" "\
 Determine and return image type.
-FILE-OR-DATA is an image file name or image data.
+SOURCE is an image file name or image data.
 Optional TYPE is a symbol describing the image type.  If TYPE is omitted
 or nil, try to determine the image type from its first few bytes
-of image data.  If that doesn't work, and FILE-OR-DATA is a file name,
+of image data.  If that doesn't work, and SOURCE is a file name,
 use its file extension as image type.
-Optional DATA-P non-nil means FILE-OR-DATA is a string containing image data.
+Optional DATA-P non-nil means SOURCE is a string containing image data.
 
-\(fn FILE-OR-DATA &optional TYPE DATA-P)" nil nil)
+\(fn SOURCE &optional TYPE DATA-P)" nil nil)
 
 (autoload (quote image-type-available-p) "image" "\
 Return non-nil if image type TYPE is available.
@@ -15018,15 +15093,11 @@ Image types are symbols like `xbm' or `jpeg'.
 
 (autoload (quote image-type-auto-detected-p) "image" "\
 Return t iff the current buffer contains an auto-detectable image.
-This function is intended to be used from `magic-mode-alist' (which see).
+This function is intended to be used from `magic-fallback-mode-alist'.
 
-First, compare the beginning of the buffer with `image-type-header-regexps'.
-If an appropriate image type is found, check if that image type can be
-autodetected using the variable `image-type-auto-detectable'.  Finally,
-if `buffer-file-name' is non-nil, check if it matches another major mode
-in `auto-mode-alist' apart from `image-mode'; if there is another match,
-the autodetection is considered to have failed.  Return t if all the above
-steps succeed.
+The buffer is considered to contain an auto-detectable image if
+its beginning matches an image type in `image-type-header-regexps',
+and that image type is present in `image-type-auto-detectable'.
 
 \(fn)" nil nil)
 
@@ -15149,7 +15220,7 @@ Example:
 ;;;;;;  image-dired-jump-thumbnail-buffer image-dired-delete-tag
 ;;;;;;  image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs
 ;;;;;;  image-dired-dired-with-window-configuration image-dired-dired-insert-marked-thumbs)
-;;;;;;  "image-dired" "image-dired.el" (17992 30877))
+;;;;;;  "image-dired" "image-dired.el" (18104 24737))
 ;;; Generated autoloads from image-dired.el
 
 (autoload (quote image-dired-dired-insert-marked-thumbs) "image-dired" "\
@@ -15283,7 +15354,7 @@ easy-to-use form.
 \f
 ;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp
 ;;;;;;  image-file-name-regexps image-file-name-extensions) "image-file"
-;;;;;;  "image-file.el" (17842 58279))
+;;;;;;  "image-file.el" (18104 24737))
 ;;; Generated autoloads from image-file.el
 
 (defvar image-file-name-extensions (quote ("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm")) "\
@@ -15345,7 +15416,7 @@ Image files are those whose name has an extension in
 ;;;***
 \f
 ;;;### (autoloads (image-mode-maybe image-minor-mode image-mode)
-;;;;;;  "image-mode" "image-mode.el" (17868 42581))
+;;;;;;  "image-mode" "image-mode.el" (18104 24737))
 ;;; Generated autoloads from image-mode.el
  (push '("\\.jpe?g\\'"    . image-mode) auto-mode-alist)
  (push '("\\.png\\'"      . image-mode) auto-mode-alist)
@@ -15383,7 +15454,7 @@ information on these modes.
 ;;;***
 \f
 ;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar
-;;;;;;  imenu-sort-function) "imenu" "imenu.el" (17842 58279))
+;;;;;;  imenu-sort-function) "imenu" "imenu.el" (18104 24737))
 ;;; Generated autoloads from imenu.el
 
 (defvar imenu-sort-function nil "\
@@ -15498,7 +15569,7 @@ for more information.
 \f
 ;;;### (autoloads (indian-char-glyph indian-glyph-char in-is13194-pre-write-conversion
 ;;;;;;  in-is13194-post-read-conversion indian-compose-string indian-compose-region)
-;;;;;;  "ind-util" "language/ind-util.el" (17842 58278))
+;;;;;;  "ind-util" "language/ind-util.el" (18104 24757))
 ;;; Generated autoloads from language/ind-util.el
 
 (autoload (quote indian-compose-region) "ind-util" "\
@@ -15541,7 +15612,7 @@ See also the function `indian-glyph-char'.
 \f
 ;;;### (autoloads (inferior-lisp inferior-lisp-prompt inferior-lisp-load-command
 ;;;;;;  inferior-lisp-program inferior-lisp-filter-regexp) "inf-lisp"
-;;;;;;  "progmodes/inf-lisp.el" (17842 56332))
+;;;;;;  "progmodes/inf-lisp.el" (18104 24767))
 ;;; Generated autoloads from progmodes/inf-lisp.el
 
 (defvar inferior-lisp-filter-regexp "\\`\\s *\\(:\\(\\w\\|\\s_\\)\\)?\\s *\\'" "\
@@ -15608,7 +15679,7 @@ of `inferior-lisp-program').  Runs the hooks from
 ;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node
 ;;;;;;  Info-goto-emacs-command-node Info-mode info-apropos Info-index
 ;;;;;;  Info-directory Info-on-current-buffer info-standalone info-emacs-manual
-;;;;;;  info info-other-window) "info" "info.el" (18006 55795))
+;;;;;;  info info-other-window) "info" "info.el" (18104 24737))
 ;;; Generated autoloads from info.el
 
 (autoload (quote info-other-window) "info" "\
@@ -15774,7 +15845,7 @@ This will add a speedbar major display mode.
 \f
 ;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file
 ;;;;;;  info-lookup-symbol info-lookup-reset) "info-look" "info-look.el"
-;;;;;;  (17878 61008))
+;;;;;;  (18104 24737))
 ;;; Generated autoloads from info-look.el
 
 (autoload (quote info-lookup-reset) "info-look" "\
@@ -15822,7 +15893,7 @@ Perform completion on file preceding point.
 ;;;***
 \f
 ;;;### (autoloads (info-xref-check-all-custom info-xref-check-all
-;;;;;;  info-xref-check) "info-xref" "info-xref.el" (17842 58279))
+;;;;;;  info-xref-check) "info-xref" "info-xref.el" (18104 24737))
 ;;; Generated autoloads from info-xref.el
 
 (autoload (quote info-xref-check) "info-xref" "\
@@ -15849,7 +15920,7 @@ quite a while.
 ;;;***
 \f
 ;;;### (autoloads (batch-info-validate Info-validate Info-split Info-tagify)
-;;;;;;  "informat" "informat.el" (17842 58279))
+;;;;;;  "informat" "informat.el" (18104 24737))
 ;;; Generated autoloads from informat.el
 
 (autoload (quote Info-tagify) "informat" "\
@@ -15890,7 +15961,7 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"
 \f
 ;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method
 ;;;;;;  isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el"
-;;;;;;  (17903 2305))
+;;;;;;  (18104 24756))
 ;;; Generated autoloads from international/isearch-x.el
 
 (autoload (quote isearch-toggle-specified-input-method) "isearch-x" "\
@@ -15910,8 +15981,8 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (17918
-;;;;;;  44913))
+;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (18104
+;;;;;;  24737))
 ;;; Generated autoloads from isearchb.el
 
 (autoload (quote isearchb-activate) "isearchb" "\
@@ -15922,12 +15993,43 @@ accessed via isearchb.
 
 \(fn)" t nil)
 
+;;;***
+\f
+;;;### (autoloads (iso-accents-mode) "iso-acc" "obsolete/iso-acc.el"
+;;;;;;  (18104 24760))
+;;; Generated autoloads from obsolete/iso-acc.el
+
+(autoload (quote iso-accents-mode) "iso-acc" "\
+Toggle ISO Accents mode, in which accents modify the following letter.
+This permits easy insertion of accented characters according to ISO-8859-1.
+When Iso-accents mode is enabled, accent character keys
+\(`, ', \", ^, / and ~) do not self-insert; instead, they modify the following
+letter key so that it inserts an ISO accented letter.
+
+You can customize ISO Accents mode to a particular language
+with the command `iso-accents-customize'.
+
+Special combinations: ~c gives a c with cedilla,
+~d gives an Icelandic eth (d with dash).
+~t gives an Icelandic thorn.
+\"s gives German sharp s.
+/a gives a with ring.
+/e gives an a-e ligature.
+~< and ~> give guillemots.
+~! gives an inverted exclamation mark.
+~? gives an inverted question mark.
+
+With an argument, a positive argument enables ISO Accents mode,
+and a negative argument disables it.
+
+\(fn &optional ARG)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only
 ;;;;;;  iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso
 ;;;;;;  iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt"
-;;;;;;  "international/iso-cvt.el" (17992 30878))
+;;;;;;  "international/iso-cvt.el" (18104 24756))
 ;;; Generated autoloads from international/iso-cvt.el
 
 (autoload (quote iso-spanish) "iso-cvt" "\
@@ -16011,7 +16113,7 @@ Add submenus to the File menu, to convert to and from various formats.
 ;;;***
 \f
 ;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;;  (17842 54888))
+;;;;;;  (18104 24756))
 ;;; Generated autoloads from international/iso-transl.el
  (or key-translation-map (setq key-translation-map (make-sparse-keymap)))
  (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
@@ -16024,7 +16126,7 @@ Add submenus to the File menu, to convert to and from various formats.
 ;;;;;;  ispell-region ispell-change-dictionary ispell-kill-ispell
 ;;;;;;  ispell-help ispell-pdict-save ispell-word ispell-local-dictionary-alist
 ;;;;;;  ispell-personal-dictionary) "ispell" "textmodes/ispell.el"
-;;;;;;  (18006 55797))
+;;;;;;  (18104 24771))
 ;;; Generated autoloads from textmodes/ispell.el
 (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
 
@@ -16311,8 +16413,8 @@ You can bind this to the key C-c i in GNUS or mail by adding to
 
 ;;;***
 \f
-;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (17819
-;;;;;;  9451))
+;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (18104
+;;;;;;  24737))
 ;;; Generated autoloads from iswitchb.el
 
 (defvar iswitchb-mode nil "\
@@ -16337,7 +16439,7 @@ This mode enables switching between buffers using substrings.  See
 ;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region
 ;;;;;;  japanese-hiragana-region japanese-katakana-region japanese-zenkaku
 ;;;;;;  japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal)
-;;;;;;  "japan-util" "language/japan-util.el" (17842 58278))
+;;;;;;  "japan-util" "language/japan-util.el" (18104 24757))
 ;;; Generated autoloads from language/japan-util.el
 
 (autoload (quote setup-japanese-environment-internal) "japan-util" "\
@@ -16415,7 +16517,7 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
 ;;;***
 \f
 ;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr"
-;;;;;;  "jka-compr.el" (17853 24893))
+;;;;;;  "jka-compr.el" (18104 24737))
 ;;; Generated autoloads from jka-compr.el
 
 (defvar jka-compr-inhibit nil "\
@@ -16440,7 +16542,7 @@ by `jka-compr-installed'.
 \f
 ;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup
 ;;;;;;  keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el"
-;;;;;;  (17833 41203))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emulation/keypad.el
 
 (defvar keypad-setup nil "\
@@ -16496,7 +16598,7 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.'
 ;;;***
 \f
 ;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el"
-;;;;;;  (17842 54888))
+;;;;;;  (18104 24756))
 ;;; Generated autoloads from international/kinsoku.el
 
 (autoload (quote kinsoku) "kinsoku" "\
@@ -16517,8 +16619,8 @@ the context of text formatting.
 
 ;;;***
 \f
-;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (17842
-;;;;;;  54888))
+;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (18104
+;;;;;;  24757))
 ;;; Generated autoloads from international/kkc.el
 
 (defvar kkc-after-update-conversion-functions nil "\
@@ -16543,7 +16645,7 @@ and the return value is the length of the conversion.
 ;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro
 ;;;;;;  kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter
 ;;;;;;  kmacro-call-macro kmacro-end-macro kmacro-start-macro) "kmacro"
-;;;;;;  "kmacro.el" (17833 41350))
+;;;;;;  "kmacro.el" (18104 24737))
 ;;; Generated autoloads from kmacro.el
  (global-set-key "\C-x(" 'kmacro-start-macro)
  (global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16650,7 +16752,7 @@ If kbd macro currently being defined end it before activating it.
 \f
 ;;;### (autoloads (kannada-post-read-conversion kannada-compose-string
 ;;;;;;  kannada-compose-region) "knd-util" "language/knd-util.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24757))
 ;;; Generated autoloads from language/knd-util.el
 
 (defconst kannada-consonant "[\x51f75-\x51fb9]")
@@ -16673,7 +16775,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (setup-korean-environment-internal) "korea-util"
-;;;;;;  "language/korea-util.el" (17842 58278))
+;;;;;;  "language/korea-util.el" (18104 24757))
 ;;; Generated autoloads from language/korea-util.el
 
 (defvar default-korean-keyboard (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "") "\
@@ -16688,7 +16790,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el"
-;;;;;;  (17941 38806))
+;;;;;;  (18104 24762))
 ;;; Generated autoloads from play/landmark.el
 
 (defalias (quote landmark-repeat) (quote lm-test-run))
@@ -16722,8 +16824,8 @@ Use \\[describe-mode] for more info.
 \f
 ;;;### (autoloads (lao-compose-region lao-composition-function lao-post-read-conversion
 ;;;;;;  lao-transcribe-roman-to-lao-string lao-transcribe-single-roman-syllable-to-lao
-;;;;;;  lao-compose-string) "lao-util" "language/lao-util.el" (17842
-;;;;;;  58278))
+;;;;;;  lao-compose-string) "lao-util" "language/lao-util.el" (18104
+;;;;;;  24757))
 ;;; Generated autoloads from language/lao-util.el
 
 (autoload (quote lao-compose-string) "lao-util" "\
@@ -16772,7 +16874,7 @@ Not documented
 \f
 ;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc
 ;;;;;;  latexenc-inputenc-to-coding-system latex-inputenc-coding-alist)
-;;;;;;  "latexenc" "international/latexenc.el" (17842 54888))
+;;;;;;  "latexenc" "international/latexenc.el" (18104 24757))
 ;;; Generated autoloads from international/latexenc.el
 
 (defvar latex-inputenc-coding-alist (quote (("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\
@@ -16804,7 +16906,7 @@ coding system names is determined from `latex-inputenc-coding-alist'.
 ;;;***
 \f
 ;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display)
-;;;;;;  "latin1-disp" "international/latin1-disp.el" (17874 62081))
+;;;;;;  "latin1-disp" "international/latin1-disp.el" (18104 24757))
 ;;; Generated autoloads from international/latin1-disp.el
 
 (defvar latin1-display nil "\
@@ -16845,10 +16947,78 @@ use either \\[customize] or the function `latin1-display'.")
 
 (custom-autoload (quote latin1-display-ucs-per-lynx) "latin1-disp" nil)
 
+;;;***
+\f
+;;;### (autoloads (turn-on-lazy-lock lazy-lock-mode) "lazy-lock"
+;;;;;;  "obsolete/lazy-lock.el" (18104 24760))
+;;; Generated autoloads from obsolete/lazy-lock.el
+
+(autoload (quote lazy-lock-mode) "lazy-lock" "\
+Toggle Lazy Lock mode.
+With arg, turn Lazy Lock mode on if and only if arg is positive.  Enable it
+automatically in your `~/.emacs' by:
+
+ (setq font-lock-support-mode 'lazy-lock-mode)
+
+For a newer font-lock support mode with similar functionality, see
+`jit-lock-mode'.  Eventually, Lazy Lock mode will be deprecated in
+JIT Lock's favor.
+
+When Lazy Lock mode is enabled, fontification can be lazy in a number of ways:
+
+- Demand-driven buffer fontification if `lazy-lock-minimum-size' is non-nil.
+  This means initial fontification does not occur if the buffer is greater than
+  `lazy-lock-minimum-size' characters in length.  Instead, fontification occurs
+  when necessary, such as when scrolling through the buffer would otherwise
+  reveal unfontified areas.  This is useful if buffer fontification is too slow
+  for large buffers.
+
+- Deferred scroll fontification if `lazy-lock-defer-on-scrolling' is non-nil.
+  This means demand-driven fontification does not occur as you scroll.
+  Instead, fontification is deferred until after `lazy-lock-defer-time' seconds
+  of Emacs idle time, while Emacs remains idle.  This is useful if
+  fontification is too slow to keep up with scrolling.
+
+- Deferred on-the-fly fontification if `lazy-lock-defer-on-the-fly' is non-nil.
+  This means on-the-fly fontification does not occur as you type.  Instead,
+  fontification is deferred until after `lazy-lock-defer-time' seconds of Emacs
+  idle time, while Emacs remains idle.  This is useful if fontification is too
+  slow to keep up with your typing.
+
+- Deferred context fontification if `lazy-lock-defer-contextually' is non-nil.
+  This means fontification updates the buffer corresponding to true syntactic
+  context, after `lazy-lock-defer-time' seconds of Emacs idle time, while Emacs
+  remains idle.  Otherwise, fontification occurs on modified lines only, and
+  subsequent lines can remain fontified corresponding to previous syntactic
+  contexts.  This is useful where strings or comments span lines.
+
+- Stealthy buffer fontification if `lazy-lock-stealth-time' is non-nil.
+  This means remaining unfontified areas of buffers are fontified if Emacs has
+  been idle for `lazy-lock-stealth-time' seconds, while Emacs remains idle.
+  This is useful if any buffer has any deferred fontification.
+
+Basic Font Lock mode on-the-fly fontification behavior fontifies modified
+lines only.  Thus, if `lazy-lock-defer-contextually' is non-nil, Lazy Lock mode
+on-the-fly fontification may fontify differently, albeit correctly.  In any
+event, to refontify some lines you can use \\[font-lock-fontify-block].
+
+Stealth fontification only occurs while the system remains unloaded.
+If the system load rises above `lazy-lock-stealth-load' percent, stealth
+fontification is suspended.  Stealth fontification intensity is controlled via
+the variable `lazy-lock-stealth-nice' and `lazy-lock-stealth-lines', and
+verbosity is controlled via the variable `lazy-lock-stealth-verbose'.
+
+\(fn &optional ARG)" t nil)
+
+(autoload (quote turn-on-lazy-lock) "lazy-lock" "\
+Unconditionally turn on Lazy Lock mode.
+
+\(fn)" nil nil)
+
 ;;;***
 \f
 ;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24767))
 ;;; Generated autoloads from progmodes/ld-script.el
 
 (add-to-list (quote auto-mode-alist) (quote ("\\.ld[si]?\\>" . ld-script-mode)))
@@ -16863,7 +17033,7 @@ A major mode to edit GNU ld script files
 ;;;***
 \f
 ;;;### (autoloads (ledit-from-lisp-mode ledit-mode) "ledit" "ledit.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24737))
 ;;; Generated autoloads from ledit.el
 
 (defconst ledit-save-files t "\
@@ -16898,7 +17068,7 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads (life) "life" "play/life.el" (17842 55395))
+;;;### (autoloads (life) "life" "play/life.el" (18104 24762))
 ;;; Generated autoloads from play/life.el
 
 (autoload (quote life) "life" "\
@@ -16911,8 +17081,8 @@ generations (this defaults to 1).
 
 ;;;***
 \f
-;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (17942
-;;;;;;  63381))
+;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (18104
+;;;;;;  24737))
 ;;; Generated autoloads from loadhist.el
 
 (autoload (quote unload-feature) "loadhist" "\
@@ -16935,7 +17105,7 @@ such as redefining an Emacs function.
 ;;;***
 \f
 ;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches)
-;;;;;;  "locate" "locate.el" (17992 30877))
+;;;;;;  "locate" "locate.el" (18104 24737))
 ;;; Generated autoloads from locate.el
 
 (defvar locate-ls-subdir-switches "-al" "\
@@ -16986,7 +17156,7 @@ except that FILTER is not optional.
 
 ;;;***
 \f
-;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (18010 5298))
+;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (18104 24738))
 ;;; Generated autoloads from log-edit.el
 
 (autoload (quote log-edit) "log-edit" "\
@@ -17007,8 +17177,8 @@ If BUFFER is non-nil `log-edit' will jump to that buffer, use it to edit the
 
 ;;;***
 \f
-;;;### (autoloads (log-view-mode) "log-view" "log-view.el" (17842
-;;;;;;  58279))
+;;;### (autoloads (log-view-mode) "log-view" "log-view.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from log-view.el
 
 (autoload (quote log-view-mode) "log-view" "\
@@ -17018,8 +17188,8 @@ Major mode for browsing CVS log output.
 
 ;;;***
 \f
-;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (17992
-;;;;;;  30877))
+;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from longlines.el
 
 (autoload (quote longlines-mode) "longlines" "\
@@ -17040,8 +17210,8 @@ are indicated with a symbol.
 ;;;***
 \f
 ;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer
-;;;;;;  lpr-command lpr-switches printer-name) "lpr" "lpr.el" (17842
-;;;;;;  58279))
+;;;;;;  lpr-command lpr-switches printer-name) "lpr" "lpr.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from lpr.el
 
 (defvar lpr-windows-system (memq system-type (quote (emx win32 w32 mswindows ms-dos windows-nt))))
@@ -17135,7 +17305,7 @@ for further customization of the printer command.
 ;;;***
 \f
 ;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el"
-;;;;;;  (18006 55796))
+;;;;;;  (18104 24738))
 ;;; Generated autoloads from ls-lisp.el
 
 (defvar ls-lisp-support-shell-wildcards t "\
@@ -17146,8 +17316,8 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).")
 
 ;;;***
 \f
-;;;### (autoloads (phases-of-moon) "lunar" "calendar/lunar.el" (17956
-;;;;;;  13479))
+;;;### (autoloads (phases-of-moon) "lunar" "calendar/lunar.el" (18104
+;;;;;;  24745))
 ;;; Generated autoloads from calendar/lunar.el
 
 (autoload (quote phases-of-moon) "lunar" "\
@@ -17160,8 +17330,8 @@ This function is suitable for execution in a .emacs file.
 
 ;;;***
 \f
-;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17923
-;;;;;;  63540))
+;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (18104
+;;;;;;  24767))
 ;;; Generated autoloads from progmodes/m4-mode.el
 
 (autoload (quote m4-mode) "m4-mode" "\
@@ -17173,7 +17343,7 @@ A major mode to edit m4 macro files.
 ;;;***
 \f
 ;;;### (autoloads (macroexpand-all) "macroexp" "emacs-lisp/macroexp.el"
-;;;;;;  (17842 54152))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emacs-lisp/macroexp.el
 
 (autoload (quote macroexpand-all) "macroexp" "\
@@ -17187,7 +17357,7 @@ definitions to shadow the loaded ones for use in file byte-compilation.
 ;;;***
 \f
 ;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro
-;;;;;;  name-last-kbd-macro) "macros" "macros.el" (17842 58279))
+;;;;;;  name-last-kbd-macro) "macros" "macros.el" (18104 24738))
 ;;; Generated autoloads from macros.el
 
 (autoload (quote name-last-kbd-macro) "macros" "\
@@ -17276,7 +17446,7 @@ and then select the region of un-tablified names and use
 ;;;***
 \f
 ;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr"
-;;;;;;  "mail/mail-extr.el" (17842 55035))
+;;;;;;  "mail/mail-extr.el" (18104 24758))
 ;;; Generated autoloads from mail/mail-extr.el
 
 (autoload (quote mail-extract-address-components) "mail-extr" "\
@@ -17308,7 +17478,7 @@ Convert mail domain DOMAIN to the country it corresponds to.
 \f
 ;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history
 ;;;;;;  mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el"
-;;;;;;  (17842 55035))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/mail-hist.el
 
 (autoload (quote mail-hist-define-keys) "mail-hist" "\
@@ -17339,8 +17509,8 @@ This function normally would be called when the message is sent.
 \f
 ;;;### (autoloads (mail-fetch-field mail-unquote-printable-region
 ;;;;;;  mail-unquote-printable mail-quote-printable mail-file-babyl-p
-;;;;;;  mail-use-rfc822) "mail-utils" "mail/mail-utils.el" (17842
-;;;;;;  55035))
+;;;;;;  mail-use-rfc822) "mail-utils" "mail/mail-utils.el" (18104
+;;;;;;  24758))
 ;;; Generated autoloads from mail/mail-utils.el
 
 (defvar mail-use-rfc822 nil "\
@@ -17392,7 +17562,7 @@ If 4th arg LIST is non-nil, return a list of all such fields.
 ;;;***
 \f
 ;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup)
-;;;;;;  "mailabbrev" "mail/mailabbrev.el" (17992 30878))
+;;;;;;  "mailabbrev" "mail/mailabbrev.el" (18104 24758))
 ;;; Generated autoloads from mail/mailabbrev.el
 
 (autoload (quote mail-abbrevs-setup) "mailabbrev" "\
@@ -17415,8 +17585,8 @@ If DEFINITION contains multiple addresses, separate them with commas.
 ;;;***
 \f
 ;;;### (autoloads (mail-complete define-mail-alias expand-mail-aliases
-;;;;;;  mail-complete-style) "mailalias" "mail/mailalias.el" (17842
-;;;;;;  55035))
+;;;;;;  mail-complete-style) "mailalias" "mail/mailalias.el" (18104
+;;;;;;  24758))
 ;;; Generated autoloads from mail/mailalias.el
 
 (defvar mail-complete-style (quote angles) "\
@@ -17462,7 +17632,7 @@ current header, calls `mail-complete-function' and passes prefix arg if any.
 ;;;***
 \f
 ;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el"
-;;;;;;  (17842 55035))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/mailclient.el
 
 (autoload (quote mailclient-send-it) "mailclient" "\
@@ -17476,7 +17646,7 @@ The mail client is taken to be the handler of mailto URLs.
 \f
 ;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode
 ;;;;;;  makefile-gmake-mode makefile-automake-mode makefile-mode)
-;;;;;;  "make-mode" "progmodes/make-mode.el" (17842 56332))
+;;;;;;  "make-mode" "progmodes/make-mode.el" (18104 24767))
 ;;; Generated autoloads from progmodes/make-mode.el
 
 (autoload (quote makefile-mode) "make-mode" "\
@@ -17593,8 +17763,8 @@ An adapted `makefile-mode' that knows about imake.
 
 ;;;***
 \f
-;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (17842
-;;;;;;  58279))
+;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from makesum.el
 
 (autoload (quote make-command-summary) "makesum" "\
@@ -17605,7 +17775,7 @@ Previous contents of that buffer are killed first.
 
 ;;;***
 \f
-;;;### (autoloads (man-follow man) "man" "man.el" (17992 30877))
+;;;### (autoloads (man-follow man) "man" "man.el" (18104 24738))
 ;;; Generated autoloads from man.el
 
 (defalias (quote manual-entry) (quote man))
@@ -17632,7 +17802,7 @@ Get a Un*x manual page of the item under point and put it in a buffer.
 
 ;;;***
 \f
-;;;### (autoloads (master-mode) "master" "master.el" (17842 58279))
+;;;### (autoloads (master-mode) "master" "master.el" (18104 24738))
 ;;; Generated autoloads from master.el
 
 (autoload (quote master-mode) "master" "\
@@ -17654,8 +17824,34 @@ yourself the value of `master-of' by calling `master-show-slave'.
 
 ;;;***
 \f
-;;;### (autoloads (menu-bar-mode) "menu-bar" "menu-bar.el" (17942
-;;;;;;  63381))
+;;;### (autoloads (minibuffer-indicate-depth-mode) "mb-depth" "mb-depth.el"
+;;;;;;  (18104 24738))
+;;; Generated autoloads from mb-depth.el
+
+(defvar minibuffer-indicate-depth-mode nil "\
+Non-nil if Minibuffer-Indicate-Depth mode is enabled.
+See the command `minibuffer-indicate-depth-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `minibuffer-indicate-depth-mode'.")
+
+(custom-autoload (quote minibuffer-indicate-depth-mode) "mb-depth" nil)
+
+(autoload (quote minibuffer-indicate-depth-mode) "mb-depth" "\
+Toggle Minibuffer Indicate Depth mode.
+When active, any recursive use of the minibuffer will show
+the recursion depth in the minibuffer prompt.  This is only
+useful if `enable-recursive-minibuffers' is non-nil.
+
+With prefix argument ARG, turn on if positive, otherwise off.
+Returns non-nil if the new state is enabled.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+\f
+;;;### (autoloads (menu-bar-mode) "menu-bar" "menu-bar.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from menu-bar.el
 
 (put (quote menu-bar-mode) (quote standard-value) (quote (t)))
@@ -17690,7 +17886,7 @@ turn on menu bars; otherwise, turn off menu bars.
 ;;;;;;  message-cite-function message-yank-prefix message-citation-line-function
 ;;;;;;  message-send-mail-function message-user-organization-file
 ;;;;;;  message-signature-separator message-from-style) "message"
-;;;;;;  "gnus/message.el" (18010 19867))
+;;;;;;  "gnus/message.el" (18104 24751))
 ;;; Generated autoloads from gnus/message.el
 
 (defvar message-from-style (quote default) "\
@@ -17946,7 +18142,7 @@ which specify the range to operate on.
 ;;;***
 \f
 ;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24767))
 ;;; Generated autoloads from progmodes/meta-mode.el
 
 (autoload (quote metafont-mode) "meta-mode" "\
@@ -17973,7 +18169,7 @@ Turning on MetaPost mode calls the value of the variable
 \f
 ;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body
 ;;;;;;  metamail-interpret-header) "metamail" "mail/metamail.el"
-;;;;;;  (17842 55035))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/metamail.el
 
 (autoload (quote metamail-interpret-header) "metamail" "\
@@ -18018,7 +18214,7 @@ redisplayed as output is inserted.
 \f
 ;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose
 ;;;;;;  mh-smail-batch mh-smail-other-window mh-smail) "mh-comp"
-;;;;;;  "mh-e/mh-comp.el" (17842 55144))
+;;;;;;  "mh-e/mh-comp.el" (18104 24759))
 ;;; Generated autoloads from mh-e/mh-comp.el
 
 (autoload (quote mh-smail) "mh-comp" "\
@@ -18105,7 +18301,7 @@ delete the draft message.
 
 ;;;***
 \f
-;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (17842 55144))
+;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (18104 24759))
 ;;; Generated autoloads from mh-e/mh-e.el
 
 (put (quote mh-progs) (quote risky-local-variable) t)
@@ -18122,7 +18318,7 @@ Display version information about MH-E and the MH mail handling system.
 ;;;***
 \f
 ;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder"
-;;;;;;  "mh-e/mh-folder.el" (17842 55144))
+;;;;;;  "mh-e/mh-folder.el" (18104 24759))
 ;;; Generated autoloads from mh-e/mh-folder.el
 
 (autoload (quote mh-rmail) "mh-folder" "\
@@ -18204,7 +18400,7 @@ perform the operation on all messages in that region.
 ;;;***
 \f
 ;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight"
-;;;;;;  "midnight.el" (17842 58279))
+;;;;;;  "midnight.el" (18104 24738))
 ;;; Generated autoloads from midnight.el
 
 (autoload (quote clean-buffer-list) "midnight" "\
@@ -18231,7 +18427,7 @@ to its second argument TM.
 ;;;***
 \f
 ;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef"
-;;;;;;  "minibuf-eldef.el" (17842 58279))
+;;;;;;  "minibuf-eldef.el" (18104 24738))
 ;;; Generated autoloads from minibuf-eldef.el
 
 (defvar minibuffer-electric-default-mode nil "\
@@ -18259,7 +18455,7 @@ Returns non-nil if the new state is enabled.
 ;;;***
 \f
 ;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/mixal-mode.el
 
 (autoload (quote mixal-mode) "mixal-mode" "\
@@ -18274,7 +18470,7 @@ Major mode for the mixal asm language.
 \f
 ;;;### (autoloads (malayalam-composition-function malayalam-post-read-conversion
 ;;;;;;  malayalam-compose-region) "mlm-util" "language/mlm-util.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from language/mlm-util.el
 
 (autoload (quote malayalam-compose-region) "mlm-util" "\
@@ -18297,7 +18493,7 @@ PATTERN regexp.
 ;;;***
 \f
 ;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents)
-;;;;;;  "mm-extern" "gnus/mm-extern.el" (17842 54741))
+;;;;;;  "mm-extern" "gnus/mm-extern.el" (18104 24752))
 ;;; Generated autoloads from gnus/mm-extern.el
 
 (autoload (quote mm-extern-cache-contents) "mm-extern" "\
@@ -18316,7 +18512,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
 ;;;***
 \f
 ;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24752))
 ;;; Generated autoloads from gnus/mm-partial.el
 
 (autoload (quote mm-inline-partial) "mm-partial" "\
@@ -18330,7 +18526,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
 ;;;***
 \f
 ;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents)
-;;;;;;  "mm-url" "gnus/mm-url.el" (17842 54741))
+;;;;;;  "mm-url" "gnus/mm-url.el" (18104 24752))
 ;;; Generated autoloads from gnus/mm-url.el
 
 (autoload (quote mm-url-insert-file-contents) "mm-url" "\
@@ -18347,7 +18543,7 @@ Insert file contents of URL using `mm-url-program'.
 ;;;***
 \f
 ;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu"
-;;;;;;  "gnus/mm-uu.el" (17842 54741))
+;;;;;;  "gnus/mm-uu.el" (18104 24752))
 ;;; Generated autoloads from gnus/mm-uu.el
 
 (autoload (quote mm-uu-dissect) "mm-uu" "\
@@ -18367,7 +18563,7 @@ Assume text has been decoded if DECODED is non-nil.
 ;;;***
 \f
 ;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24752))
 ;;; Generated autoloads from gnus/mml1991.el
 
 (autoload (quote mml1991-encrypt) "mml1991" "\
@@ -18384,7 +18580,7 @@ Not documented
 \f
 ;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt
 ;;;;;;  mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt)
-;;;;;;  "mml2015" "gnus/mml2015.el" (17842 54741))
+;;;;;;  "mml2015" "gnus/mml2015.el" (18104 24752))
 ;;; Generated autoloads from gnus/mml2015.el
 
 (autoload (quote mml2015-decrypt) "mml2015" "\
@@ -18425,7 +18621,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (modula-2-mode) "modula2" "progmodes/modula2.el"
-;;;;;;  (17276 13069))
+;;;;;;  (17279 21317))
 ;;; Generated autoloads from progmodes/modula2.el
 
 (autoload (quote modula-2-mode) "modula2" "\
@@ -18457,7 +18653,7 @@ followed by the first character of the construct.
 ;;;***
 \f
 ;;;### (autoloads (unmorse-region morse-region) "morse" "play/morse.el"
-;;;;;;  (17842 55395))
+;;;;;;  (18104 24762))
 ;;; Generated autoloads from play/morse.el
 
 (autoload (quote morse-region) "morse" "\
@@ -18472,8 +18668,8 @@ Convert morse coded text in region to ordinary ASCII text.
 
 ;;;***
 \f
-;;;### (autoloads (mouse-sel-mode) "mouse-sel" "mouse-sel.el" (17842
-;;;;;;  58279))
+;;;### (autoloads (mouse-sel-mode) "mouse-sel" "mouse-sel.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from mouse-sel.el
 
 (defvar mouse-sel-mode nil "\
@@ -18525,7 +18721,7 @@ primary selection and region.
 
 ;;;***
 \f
-;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (17862 6157))
+;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (18104 24762))
 ;;; Generated autoloads from play/mpuz.el
 
 (autoload (quote mpuz) "mpuz" "\
@@ -18535,7 +18731,7 @@ Multiplication puzzle with GNU Emacs.
 
 ;;;***
 \f
-;;;### (autoloads (msb-mode) "msb" "msb.el" (18006 55796))
+;;;### (autoloads (msb-mode) "msb" "msb.el" (18104 24738))
 ;;; Generated autoloads from msb.el
 
 (defvar msb-mode nil "\
@@ -18562,7 +18758,7 @@ different buffer menu using the function `msb'.
 ;;;;;;  describe-current-coding-system describe-current-coding-system-briefly
 ;;;;;;  describe-coding-system describe-character-set list-charset-chars
 ;;;;;;  read-charset list-character-sets) "mule-diag" "international/mule-diag.el"
-;;;;;;  (17842 54888))
+;;;;;;  (18104 24757))
 ;;; Generated autoloads from international/mule-diag.el
 
 (defvar non-iso-charset-alist (\` ((mac-roman (ascii latin-iso8859-1 mule-unicode-2500-33ff mule-unicode-0100-24ff mule-unicode-e000-ffff) mac-roman-decoder ((0 255))) (viscii (ascii vietnamese-viscii-lower vietnamese-viscii-upper) viet-viscii-nonascii-translation-table ((0 255))) (vietnamese-tcvn (ascii vietnamese-viscii-lower vietnamese-viscii-upper) viet-tcvn-nonascii-translation-table ((0 255))) (koi8-r (ascii cyrillic-iso8859-5) cyrillic-koi8-r-nonascii-translation-table ((32 255))) (alternativnyj (ascii cyrillic-iso8859-5) cyrillic-alternativnyj-nonascii-translation-table ((32 255))) (koi8-u (ascii cyrillic-iso8859-5 mule-unicode-0100-24ff) cyrillic-koi8-u-nonascii-translation-table ((32 255))) (big5 (ascii chinese-big5-1 chinese-big5-2) decode-big5-char ((32 127) ((161 254) 64 126 161 254))) (sjis (ascii katakana-jisx0201 japanese-jisx0208) decode-sjis-char ((32 127 161 223) ((129 159 224 239) 64 126 128 252))))) "\
@@ -18736,7 +18932,7 @@ system which uses fontsets).
 ;;;;;;  coding-system-translation-table-for-decode coding-system-pre-write-conversion
 ;;;;;;  coding-system-post-read-conversion lookup-nested-alist set-nested-alist
 ;;;;;;  truncate-string-to-width store-substring string-to-sequence)
-;;;;;;  "mule-util" "international/mule-util.el" (17842 54888))
+;;;;;;  "mule-util" "international/mule-util.el" (18104 24757))
 ;;; Generated autoloads from international/mule-util.el
 
 (autoload (quote string-to-sequence) "mule-util" "\
@@ -18865,7 +19061,7 @@ basis, this may not be accurate.
 ;;;***
 \f
 ;;;### (autoloads (mwheel-install mouse-wheel-mode) "mwheel" "mwheel.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24738))
 ;;; Generated autoloads from mwheel.el
 
 (defvar mouse-wheel-mode nil "\
@@ -18894,7 +19090,7 @@ Enable mouse wheel support.
 ;;;### (autoloads (network-connection network-connection-to-service
 ;;;;;;  whois-reverse-lookup whois finger ftp run-dig dns-lookup-host
 ;;;;;;  nslookup nslookup-host route arp netstat ipconfig ping traceroute)
-;;;;;;  "net-utils" "net/net-utils.el" (17891 7215))
+;;;;;;  "net-utils" "net/net-utils.el" (18104 24760))
 ;;; Generated autoloads from net/net-utils.el
 
 (autoload (quote traceroute) "net-utils" "\
@@ -18990,7 +19186,7 @@ Open a network connection to HOST on PORT.
 ;;;;;;  uncomment-region comment-kill comment-set-column comment-indent
 ;;;;;;  comment-indent-default comment-normalize-vars comment-multi-line
 ;;;;;;  comment-padding comment-style comment-column) "newcomment"
-;;;;;;  "newcomment.el" (17992 30877))
+;;;;;;  "newcomment.el" (18104 24738))
 ;;; Generated autoloads from newcomment.el
 
 (defalias (quote indent-for-comment) (quote comment-indent))
@@ -19010,10 +19206,10 @@ Major modes should set this variable.")
 
 (defvar comment-column 32 "\
 Column to indent right-margin comments to.
-Each mode establishes a different default value for this variable; you
+Each mode may establish a different default value for this variable; you
 can set the value for a particular mode using that mode's hook.
-Comments might be indented to a value smaller than this in order
-not to go beyond `comment-fill-column'.")
+Comments might be indented to a different value in order not to go beyond
+`comment-fill-column' or in order to align them with surrounding comments.")
 
 (custom-autoload (quote comment-column) "newcomment" t)
 (put 'comment-column 'safe-local-variable 'integerp)
@@ -19186,7 +19382,7 @@ unless optional argument SOFT is non-nil.
 \f
 ;;;### (autoloads (newsticker-show-news newsticker-start-ticker newsticker-start
 ;;;;;;  newsticker-ticker-running-p newsticker-running-p) "newsticker"
-;;;;;;  "net/newsticker.el" (17873 44590))
+;;;;;;  "net/newsticker.el" (18104 24760))
 ;;; Generated autoloads from net/newsticker.el
 
 (autoload (quote newsticker-running-p) "newsticker" "\
@@ -19228,7 +19424,7 @@ Switch to newsticker buffer.  You may want to bind this to a key.
 ;;;***
 \f
 ;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el"
-;;;;;;  (17992 30878))
+;;;;;;  (18104 24753))
 ;;; Generated autoloads from gnus/nndiary.el
 
 (autoload (quote nndiary-generate-nov-databases) "nndiary" "\
@@ -19238,8 +19434,8 @@ Generate NOV databases in all nndiary directories.
 
 ;;;***
 \f
-;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (17842
-;;;;;;  54741))
+;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (18104
+;;;;;;  24753))
 ;;; Generated autoloads from gnus/nndoc.el
 
 (autoload (quote nndoc-add-type) "nndoc" "\
@@ -19254,7 +19450,7 @@ symbol in the alist.
 ;;;***
 \f
 ;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24753))
 ;;; Generated autoloads from gnus/nnfolder.el
 
 (autoload (quote nnfolder-generate-active-file) "nnfolder" "\
@@ -19266,7 +19462,7 @@ This command does not work if you use short group names.
 ;;;***
 \f
 ;;;### (autoloads (nnkiboze-generate-groups) "nnkiboze" "gnus/nnkiboze.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24753))
 ;;; Generated autoloads from gnus/nnkiboze.el
 
 (autoload (quote nnkiboze-generate-groups) "nnkiboze" "\
@@ -19278,7 +19474,7 @@ Finds out what articles are to be part of the nnkiboze groups.
 ;;;***
 \f
 ;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24754))
 ;;; Generated autoloads from gnus/nnml.el
 
 (autoload (quote nnml-generate-nov-databases) "nnml" "\
@@ -19289,7 +19485,7 @@ Generate NOV databases in all nnml directories.
 ;;;***
 \f
 ;;;### (autoloads (nnsoup-revert-variables nnsoup-set-variables nnsoup-pack-replies)
-;;;;;;  "nnsoup" "gnus/nnsoup.el" (17842 54741))
+;;;;;;  "nnsoup" "gnus/nnsoup.el" (18104 24754))
 ;;; Generated autoloads from gnus/nnsoup.el
 
 (autoload (quote nnsoup-pack-replies) "nnsoup" "\
@@ -19310,7 +19506,7 @@ Revert posting and mailing methods to the standard Emacs methods.
 ;;;***
 \f
 ;;;### (autoloads (disable-command enable-command disabled-command-function)
-;;;;;;  "novice" "novice.el" (17842 58279))
+;;;;;;  "novice" "novice.el" (18104 24738))
 ;;; Generated autoloads from novice.el
 
 (defvar disabled-command-function (quote disabled-command-function) "\
@@ -19343,7 +19539,7 @@ to future sessions.
 ;;;***
 \f
 ;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el"
-;;;;;;  (17842 58277))
+;;;;;;  (18104 24771))
 ;;; Generated autoloads from textmodes/nroff-mode.el
 
 (autoload (quote nroff-mode) "nroff-mode" "\
@@ -19358,7 +19554,7 @@ closing requests for requests that are used in matched pairs.
 ;;;***
 \f
 ;;;### (autoloads (octave-help) "octave-hlp" "progmodes/octave-hlp.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/octave-hlp.el
 
 (autoload (quote octave-help) "octave-hlp" "\
@@ -19372,7 +19568,7 @@ If KEY is not a string, prompt for it with completion.
 ;;;***
 \f
 ;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/octave-inf.el
 
 (autoload (quote inferior-octave) "octave-inf" "\
@@ -19395,7 +19591,7 @@ startup file, `~/.emacs-octave'.
 ;;;***
 \f
 ;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/octave-mod.el
 
 (autoload (quote octave-mode) "octave-mod" "\
@@ -19491,15 +19687,38 @@ including a reproducible test case and send the message.
 
 \(fn)" t nil)
 
+;;;***
+\f
+;;;### (autoloads (edit-options list-options) "options" "obsolete/options.el"
+;;;;;;  (18104 24760))
+;;; Generated autoloads from obsolete/options.el
+
+(autoload (quote list-options) "options" "\
+Display a list of Emacs user options, with values and documentation.
+It is now better to use Customize instead.
+
+\(fn)" t nil)
+
+(autoload (quote edit-options) "options" "\
+Edit a list of Emacs user option values.
+Selects a buffer containing such a list,
+in which there are commands to set the option values.
+Type \\[describe-mode] in that buffer for a list of commands.
+
+The Custom feature is intended to make this obsolete.
+
+\(fn)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (org-export-icalendar-combine-agenda-files org-export-icalendar-all-agenda-files
 ;;;;;;  org-export-icalendar-this-file org-diary org-tags-view org-todo-list
-;;;;;;  org-agenda-list org-cycle-agenda-files org-batch-agenda org-agenda
-;;;;;;  org-remember-handler org-remember org-remember-apply-template
+;;;;;;  org-agenda-list org-cycle-agenda-files org-batch-store-agenda-views
+;;;;;;  org-store-agenda-views org-batch-agenda-csv org-batch-agenda
+;;;;;;  org-agenda org-remember-handler org-remember org-remember-apply-template
 ;;;;;;  org-remember-annotation org-store-link orgtbl-mode turn-on-orgtbl
-;;;;;;  org-global-cycle org-cycle org-mode) "org" "textmodes/org.el"
-;;;;;;  (17922 37459))
+;;;;;;  turn-on-orgstruct orgstruct-mode org-global-cycle org-cycle
+;;;;;;  org-mode) "org" "textmodes/org.el" (18104 24771))
 ;;; Generated autoloads from textmodes/org.el
 
 (autoload (quote org-mode) "org" "\
@@ -19548,7 +19767,7 @@ Visibility cycling for Org-mode.
   `indent-relative', like TAB normally does.  See the option
   `org-cycle-emulate-tab' for details.
 
-- Special case: if point is the the beginning of the buffer and there is
+- Special case: if point is at the beginning of the buffer and there is
   no headline in line 1, this function will act as if called with prefix arg.
 
 \(fn &optional ARG)" t nil)
@@ -19558,6 +19777,36 @@ Cycle the global visibility.  For details see `org-cycle'.
 
 \(fn &optional ARG)" t nil)
 
+(autoload (quote orgstruct-mode) "org" "\
+Toggle the minor more `orgstruct-mode'.
+This mode is for using Org-mode structure commands in other modes.
+The following key behave as if Org-mode was active, if the cursor
+is on a headline, or on a plain list item (both in the definition
+of Org-mode).
+
+M-up        Move entry/item up
+M-down     Move entry/item down
+M-left     Promote
+M-right            Demote
+M-S-up     Move entry/item up
+M-S-down    Move entry/item down
+M-S-left    Promote subtree
+M-S-right   Demote subtree
+M-q        Fill paragraph and items like in Org-mode
+C-c ^      Sort entries
+C-c -      Cycle list bullet
+TAB         Cycle item visibility
+M-RET       Insert new heading/item
+S-M-RET     Insert new TODO heading / Chekbox item
+C-c C-c     Set tags / toggle checkbox
+
+\(fn &optional ARG)" t nil)
+
+(autoload (quote turn-on-orgstruct) "org" "\
+Unconditionally turn on `orgstruct-mode'.
+
+\(fn)" nil nil)
+
 (autoload (quote turn-on-orgtbl) "org" "\
 Unconditionally turn on `orgtbl-mode'.
 
@@ -19648,7 +19897,8 @@ T     Call `org-todo-list' to display the global todo list, select only
 m     Call `org-tags-view' to display headlines with tags matching
       a condition  (the user is prompted for the condition).
 M     Like `m', but select only TODO entries, no ordinary headlines.
-l     Create a timeeline for the current buffer.
+l     Create a timeline for the current buffer.
+e     Export views to associated files.
 
 More commands can be added by configuring the variable
 `org-agenda-custom-commands'.  In particular, specific tags and TODO keyword
@@ -19661,13 +19911,62 @@ next use of \\[org-agenda]) restricted to the current file.
 \(fn ARG)" t nil)
 
 (autoload (quote org-batch-agenda) "org" "\
-Run an agenda command in batch mode, send result to STDOUT.
-CMD-KEY is a string that is also a key in `org-agenda-custom-commands'.
+Run an agenda command in batch mode and send the result to STDOUT.
+If CMD-KEY is a string of length 1, it is used as a key in
+`org-agenda-custom-commands' and triggers this command.  If it is a
+longer string is is used as a tags/todo match string.
 Paramters are alternating variable names and values that will be bound
 before running the agenda command.
 
 \(fn CMD-KEY &rest PARAMETERS)" nil (quote macro))
 
+(autoload (quote org-batch-agenda-csv) "org" "\
+Run an agenda command in batch mode and send the result to STDOUT.
+If CMD-KEY is a string of length 1, it is used as a key in
+`org-agenda-custom-commands' and triggers this command.  If it is a
+longer string is is used as a tags/todo match string.
+Paramters are alternating variable names and values that will be bound
+before running the agenda command.
+
+The output gives a line for each selected agenda item.  Each
+item is a list of comma-separated values, like this:
+
+category,head,type,todo,tags,date,time,extra,priority-l,priority-n
+
+category     The category of the item
+head         The headline, without TODO kwd, TAGS and PRIORITY
+type         The type of the agenda entry, can be
+                todo               selected in TODO match
+                tagsmatch          selected in tags match
+                diary              imported from diary
+                deadline           a deadline on given date
+                scheduled          scheduled on given date
+                timestamp          entry has timestamp on given date
+                closed             entry was closed on given date
+                upcoming-deadline  warning about deadline
+                past-scheduled     forwarded scheduled item
+                block              entry has date block including g. date
+todo         The todo keyword, if any
+tags         All tags including inherited ones, separated by colons
+date         The relevant date, like 2007-2-14
+time         The time, like 15:00-16:50
+extra        Sting with extra planning info
+priority-l   The priority letter if any was given
+priority-n   The computed numerical priority
+agenda-day   The day in the agenda where this is listed
+
+\(fn CMD-KEY &rest PARAMETERS)" nil (quote macro))
+
+(autoload (quote org-store-agenda-views) "org" "\
+Not documented
+
+\(fn &rest PARAMETERS)" t nil)
+
+(autoload (quote org-batch-store-agenda-views) "org" "\
+Run all custom agenda commands that have a file argument.
+
+\(fn &rest PARAMETERS)" nil (quote macro))
+
 (autoload (quote org-cycle-agenda-files) "org" "\
 Cycle through the files in `org-agenda-files'.
 If the current buffer visits an agenda file, find the next one in the list.
@@ -19695,7 +19994,7 @@ Show all TODO entries from all agenda file in a single list.
 The prefix arg can be used to select a specific TODO keyword and limit
 the list to these.  When using \\[universal-argument], you will be prompted
 for a keyword.  A numeric prefix directly selects the Nth keyword in
-`org-todo-keywords'.
+`org-todo-keywords-1'.
 
 \(fn ARG)" t nil)
 
@@ -19716,6 +20015,8 @@ items should be listed.  The following arguments are allowed:
                 date range matching the selected date.  Deadlines will
                 also be listed, on the expiration day.
 
+   :sexp         FIXME
+
    :deadline     List any deadlines past due, or due within
                 `org-deadline-warning-days'.  The listing occurs only
                 in the diary for *today*, not at any other date.  If
@@ -19740,10 +20041,10 @@ all files listed in `org-agenda-files' will be checked automatically:
    &%%(org-diary)
 
 If you don't give any arguments (as in the example above), the default
-arguments (:deadline :scheduled :timestamp) are used.  So the example above may
-also be written as
+arguments (:deadline :scheduled :timestamp :sexp) are used.
+So the example above may also be written as
 
-   &%%(org-diary :deadline :timestamp :scheduled)
+   &%%(org-diary :deadline :timestamp :sexp :scheduled)
 
 The function expects the lisp variables `entry' and `date' to be provided
 by the caller, because this is how the calendar works.  Don't use this
@@ -19771,10 +20072,40 @@ The file is stored under the name `org-combined-agenda-icalendar-file'.
 
 \(fn)" t nil)
 
+;;;***
+\f
+;;;### (autoloads (org-publish-all org-publish-current-file org-publish-current-project
+;;;;;;  org-publish) "org-publish" "textmodes/org-publish.el" (18104
+;;;;;;  24771))
+;;; Generated autoloads from textmodes/org-publish.el
+
+(autoload (quote org-publish) "org-publish" "\
+Publish the project PROJECT-NAME.
+
+\(fn PROJECT-NAME &optional FORCE)" t nil)
+
+(autoload (quote org-publish-current-project) "org-publish" "\
+Publish the project associated with the current file.
+With prefix argument, force publishing all files in project.
+
+\(fn &optional FORCE)" t nil)
+
+(autoload (quote org-publish-current-file) "org-publish" "\
+Publish the current file.
+With prefix argument, force publish the file.
+
+\(fn &optional FORCE)" t nil)
+
+(autoload (quote org-publish-all) "org-publish" "\
+Publish all projects.
+With prefix argument, force publish all files.
+
+\(fn &optional FORCE)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el"
-;;;;;;  (17952 11093))
+;;;;;;  (18104 24738))
 ;;; Generated autoloads from outline.el
 (put 'outline-regexp 'safe-local-variable 'string-or-null-p)
 
@@ -19830,8 +20161,8 @@ See the command `outline-mode' for more information on this mode.
 
 ;;;***
 \f
-;;;### (autoloads nil "paragraphs" "textmodes/paragraphs.el" (17842
-;;;;;;  58277))
+;;;### (autoloads nil "paragraphs" "textmodes/paragraphs.el" (18104
+;;;;;;  24772))
 ;;; Generated autoloads from textmodes/paragraphs.el
 (put 'paragraph-start 'safe-local-variable 'stringp)
 (put 'paragraph-separate 'safe-local-variable 'stringp)
@@ -19845,7 +20176,7 @@ See the command `outline-mode' for more information on this mode.
 
 ;;;***
 \f
-;;;### (autoloads (show-paren-mode) "paren" "paren.el" (18016 8765))
+;;;### (autoloads (show-paren-mode) "paren" "paren.el" (18104 24738))
 ;;; Generated autoloads from paren.el
 
 (defvar show-paren-mode nil "\
@@ -19870,7 +20201,7 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time.
 ;;;***
 \f
 ;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el"
-;;;;;;  (17957 43164))
+;;;;;;  (18104 24745))
 ;;; Generated autoloads from calendar/parse-time.el
 
 (autoload (quote parse-time-string) "parse-time" "\
@@ -19882,8 +20213,8 @@ unknown are returned as nil.
 
 ;;;***
 \f
-;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (17842
-;;;;;;  56332))
+;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (18104
+;;;;;;  24768))
 ;;; Generated autoloads from progmodes/pascal.el
 
 (autoload (quote pascal-mode) "pascal" "\
@@ -19936,7 +20267,7 @@ no args, if that value is non-nil.
 ;;;***
 \f
 ;;;### (autoloads (pc-bindings-mode) "pc-mode" "emulation/pc-mode.el"
-;;;;;;  (17842 54264))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emulation/pc-mode.el
 
 (autoload (quote pc-bindings-mode) "pc-mode" "\
@@ -19954,7 +20285,7 @@ C-Escape does list-buffers.
 ;;;***
 \f
 ;;;### (autoloads (pc-selection-mode pc-selection-mode) "pc-select"
-;;;;;;  "emulation/pc-select.el" (17842 54264))
+;;;;;;  "emulation/pc-select.el" (18104 24748))
 ;;; Generated autoloads from emulation/pc-select.el
 
 (defvar pc-selection-mode nil "\
@@ -20030,8 +20361,8 @@ you must modify it using \\[customize] or \\[pc-selection-mode].")
 
 ;;;***
 \f
-;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (17842
-;;;;;;  58279))
+;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from pcmpl-cvs.el
 
 (autoload (quote pcomplete/cvs) "pcmpl-cvs" "\
@@ -20042,7 +20373,7 @@ Completion rules for the `cvs' command.
 ;;;***
 \f
 ;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip)
-;;;;;;  "pcmpl-gnu" "pcmpl-gnu.el" (17842 58279))
+;;;;;;  "pcmpl-gnu" "pcmpl-gnu.el" (18104 24738))
 ;;; Generated autoloads from pcmpl-gnu.el
 
 (autoload (quote pcomplete/gzip) "pcmpl-gnu" "\
@@ -20070,7 +20401,7 @@ Completion for the GNU tar utility.
 ;;;***
 \f
 ;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill)
-;;;;;;  "pcmpl-linux" "pcmpl-linux.el" (17842 58279))
+;;;;;;  "pcmpl-linux" "pcmpl-linux.el" (18104 24738))
 ;;; Generated autoloads from pcmpl-linux.el
 
 (autoload (quote pcomplete/kill) "pcmpl-linux" "\
@@ -20090,8 +20421,8 @@ Completion for GNU/Linux `mount'.
 
 ;;;***
 \f
-;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (17842
-;;;;;;  58279))
+;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from pcmpl-rpm.el
 
 (autoload (quote pcomplete/rpm) "pcmpl-rpm" "\
@@ -20107,7 +20438,7 @@ You can use \\[eshell-report-bug] to do so.
 \f
 ;;;### (autoloads (pcomplete/chgrp pcomplete/chown pcomplete/which
 ;;;;;;  pcomplete/xargs pcomplete/rm pcomplete/rmdir pcomplete/cd)
-;;;;;;  "pcmpl-unix" "pcmpl-unix.el" (17842 58279))
+;;;;;;  "pcmpl-unix" "pcmpl-unix.el" (18104 24738))
 ;;; Generated autoloads from pcmpl-unix.el
 
 (autoload (quote pcomplete/cd) "pcmpl-unix" "\
@@ -20153,8 +20484,8 @@ Completion for the `chgrp' command.
 \f
 ;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list
 ;;;;;;  pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete
-;;;;;;  pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (17944
-;;;;;;  62194))
+;;;;;;  pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (18104
+;;;;;;  24738))
 ;;; Generated autoloads from pcomplete.el
 
 (autoload (quote pcomplete) "pcomplete" "\
@@ -20213,7 +20544,7 @@ Setup shell-mode to use pcomplete.
 \f
 ;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status
 ;;;;;;  cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs"
-;;;;;;  "pcvs.el" (18006 55796))
+;;;;;;  "pcvs.el" (18104 24738))
 ;;; Generated autoloads from pcvs.el
 
 (autoload (quote cvs-checkout) "pcvs" "\
@@ -20290,7 +20621,7 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d
 
 ;;;***
 \f
-;;;### (autoloads nil "pcvs-defs" "pcvs-defs.el" (17842 58279))
+;;;### (autoloads nil "pcvs-defs" "pcvs-defs.el" (18104 24738))
 ;;; Generated autoloads from pcvs-defs.el
 
 (defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] (quote (menu-item "Directory Status" cvs-status :help "A more verbose status of a workarea"))) (define-key m [checkout] (quote (menu-item "Checkout Module" cvs-checkout :help "Check out a module from the repository"))) (define-key m [update] (quote (menu-item "Update Directory" cvs-update :help "Fetch updates from the repository"))) (define-key m [examine] (quote (menu-item "Examine Directory" cvs-examine :help "Examine the current state of a workarea"))) (fset (quote cvs-global-menu) m)))
@@ -20298,7 +20629,7 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d
 ;;;***
 \f
 ;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el"
-;;;;;;  (17962 28280))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/perl-mode.el
 
 (autoload (quote perl-mode) "perl-mode" "\
@@ -20356,7 +20687,7 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'.
 ;;;### (autoloads (pgg-snarf-keys pgg-snarf-keys-region pgg-insert-key
 ;;;;;;  pgg-verify pgg-verify-region pgg-sign pgg-sign-region pgg-decrypt
 ;;;;;;  pgg-decrypt-region pgg-encrypt pgg-encrypt-symmetric pgg-encrypt-symmetric-region
-;;;;;;  pgg-encrypt-region) "pgg" "pgg.el" (17842 58279))
+;;;;;;  pgg-encrypt-region) "pgg" "pgg.el" (18104 24738))
 ;;; Generated autoloads from pgg.el
 
 (autoload (quote pgg-encrypt-region) "pgg" "\
@@ -20427,7 +20758,7 @@ If the optional 3rd argument CLEARTEXT is non-nil, it does not create
 a detached signature.
 
 If this function is called interactively, CLEARTEXT is enabled
-and the the output is displayed.
+and the output is displayed.
 
 If optional PASSPHRASE is not specified, it will be obtained from the
 passphrase cache or user.
@@ -20444,7 +20775,7 @@ If optional arguments START and END are specified, only sign data
 within the region.
 
 If this function is called interactively, CLEARTEXT is enabled
-and the the output is displayed.
+and the output is displayed.
 
 If optional PASSPHRASE is not specified, it will be obtained from the
 passphrase cache or user.
@@ -20490,7 +20821,7 @@ Import public keys in the current buffer.
 ;;;***
 \f
 ;;;### (autoloads (pgg-gpg-symmetric-key-p) "pgg-gpg" "pgg-gpg.el"
-;;;;;;  (17887 33207))
+;;;;;;  (18104 24738))
 ;;; Generated autoloads from pgg-gpg.el
 
 (autoload (quote pgg-gpg-symmetric-key-p) "pgg-gpg" "\
@@ -20501,7 +20832,7 @@ True if decoded armor MESSAGE-KEYS has symmetric encryption indicator.
 ;;;***
 \f
 ;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el"
-;;;;;;  (17842 58277))
+;;;;;;  (18104 24772))
 ;;; Generated autoloads from textmodes/picture.el
 
 (autoload (quote picture-mode) "picture" "\
@@ -20582,7 +20913,7 @@ they are not defaultly assigned to keys.
 ;;;***
 \f
 ;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el"
-;;;;;;  (17842 58277))
+;;;;;;  (18104 24772))
 ;;; Generated autoloads from textmodes/po.el
 
 (autoload (quote po-find-file-coding-system) "po" "\
@@ -20593,7 +20924,7 @@ Called through `file-coding-system-alist', before the file is visited for real.
 
 ;;;***
 \f
-;;;### (autoloads (pong) "pong" "play/pong.el" (17842 55395))
+;;;### (autoloads (pong) "pong" "play/pong.el" (18104 24762))
 ;;; Generated autoloads from play/pong.el
 
 (autoload (quote pong) "pong" "\
@@ -20610,7 +20941,7 @@ pong-mode keybindings:\\<pong-mode-map>
 ;;;***
 \f
 ;;;### (autoloads (pp-eval-last-sexp pp-eval-expression pp pp-buffer
-;;;;;;  pp-to-string) "pp" "emacs-lisp/pp.el" (17852 19612))
+;;;;;;  pp-to-string) "pp" "emacs-lisp/pp.el" (18104 24748))
 ;;; Generated autoloads from emacs-lisp/pp.el
 
 (autoload (quote pp-to-string) "pp" "\
@@ -20666,7 +20997,7 @@ Ignores leading comment characters.
 ;;;;;;  pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview
 ;;;;;;  pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript
 ;;;;;;  pr-ps-directory-preview pr-interface) "printing" "printing.el"
-;;;;;;  (18006 55796))
+;;;;;;  (18104 24738))
 ;;; Generated autoloads from printing.el
 
 (autoload (quote pr-interface) "printing" "\
@@ -21254,7 +21585,7 @@ are both set to t.
 ;;;***
 \f
 ;;;### (autoloads (switch-to-prolog prolog-mode) "prolog" "progmodes/prolog.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/prolog.el
 
 (autoload (quote prolog-mode) "prolog" "\
@@ -21277,7 +21608,7 @@ With prefix argument \\[universal-prefix], prompt for the program to use.
 
 ;;;***
 \f
-;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (17842 58279))
+;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (18104 24739))
 ;;; Generated autoloads from ps-bdf.el
 
 (defvar bdf-directory-list (if (memq system-type (quote (ms-dos windows-nt))) (list (expand-file-name "fonts/bdf" installation-directory)) (quote ("/usr/local/share/emacs/fonts/bdf"))) "\
@@ -21286,8 +21617,8 @@ The default value is '(\"/usr/local/share/emacs/fonts/bdf\").")
 
 ;;;***
 \f
-;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (17842
-;;;;;;  56332))
+;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (18104
+;;;;;;  24768))
 ;;; Generated autoloads from progmodes/ps-mode.el
 
 (autoload (quote ps-mode) "ps-mode" "\
@@ -21331,125 +21662,6 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number
 
 \(fn)" t nil)
 
-;;;***
-\f
-;;;### (autoloads (ps-mule-begin-page ps-mule-begin-job ps-mule-encode-header-string
-;;;;;;  ps-mule-initialize ps-mule-plot-composition ps-mule-plot-string
-;;;;;;  ps-mule-set-ascii-font ps-mule-prepare-ascii-font ps-multibyte-buffer)
-;;;;;;  "ps-mule" "ps-mule.el" (17842 58279))
-;;; Generated autoloads from ps-mule.el
-
-(defvar ps-multibyte-buffer nil "\
-*Specifies the multi-byte buffer handling.
-
-Valid values are:
-
-  nil                     This is the value to use the default settings which
-                         is by default for printing buffer with only ASCII
-                         and Latin characters.   The default setting can be
-                         changed by setting the variable
-                         `ps-mule-font-info-database-default' differently.
-                         The initial value of this variable is
-                         `ps-mule-font-info-database-latin' (see
-                         documentation).
-
-  `non-latin-printer'     This is the value to use when you have a Japanese
-                         or Korean PostScript printer and want to print
-                         buffer with ASCII, Latin-1, Japanese (JISX0208 and
-                         JISX0201-Kana) and Korean characters.  At present,
-                         it was not tested the Korean characters printing.
-                         If you have a korean PostScript printer, please,
-                         test it.
-
-  `bdf-font'              This is the value to use when you want to print
-                         buffer with BDF fonts.  BDF fonts include both latin
-                         and non-latin fonts.  BDF (Bitmap Distribution
-                         Format) is a format used for distributing X's font
-                         source file.  BDF fonts are included in
-                         `intlfonts-1.2' which is a collection of X11 fonts
-                         for all characters supported by Emacs.  In order to
-                         use this value, be sure to have installed
-                         `intlfonts-1.2' and set the variable
-                         `bdf-directory-list' appropriately (see ps-bdf.el for
-                         documentation of this variable).
-
-  `bdf-font-except-latin' This is like `bdf-font' except that it is used
-                         PostScript default fonts to print ASCII and Latin-1
-                         characters.  This is convenient when you want or
-                         need to use both latin and non-latin characters on
-                         the same buffer.  See `ps-font-family',
-                         `ps-header-font-family' and `ps-font-info-database'.
-
-Any other value is treated as nil.")
-
-(custom-autoload (quote ps-multibyte-buffer) "ps-mule" t)
-
-(autoload (quote ps-mule-prepare-ascii-font) "ps-mule" "\
-Setup special ASCII font for STRING.
-STRING should contain only ASCII characters.
-
-\(fn STRING)" nil nil)
-
-(autoload (quote ps-mule-set-ascii-font) "ps-mule" "\
-Not documented
-
-\(fn)" nil nil)
-
-(autoload (quote ps-mule-plot-string) "ps-mule" "\
-Generate PostScript code for plotting characters in the region FROM and TO.
-
-It is assumed that all characters in this region belong to the same charset.
-
-Optional argument BG-COLOR specifies background color.
-
-Returns the value:
-
-       (ENDPOS . RUN-WIDTH)
-
-Where ENDPOS is the end position of the sequence and RUN-WIDTH is the width of
-the sequence.
-
-\(fn FROM TO &optional BG-COLOR)" nil nil)
-
-(autoload (quote ps-mule-plot-composition) "ps-mule" "\
-Generate PostScript code for plotting composition in the region FROM and TO.
-
-It is assumed that all characters in this region belong to the same
-composition.
-
-Optional argument BG-COLOR specifies background color.
-
-Returns the value:
-
-       (ENDPOS . RUN-WIDTH)
-
-Where ENDPOS is the end position of the sequence and RUN-WIDTH is the width of
-the sequence.
-
-\(fn FROM TO &optional BG-COLOR)" nil nil)
-
-(autoload (quote ps-mule-initialize) "ps-mule" "\
-Initialize global data for printing multi-byte characters.
-
-\(fn)" nil nil)
-
-(autoload (quote ps-mule-encode-header-string) "ps-mule" "\
-Generate PostScript code for ploting STRING by font FONTTAG.
-FONTTAG should be a string \"/h0\" or \"/h1\".
-
-\(fn STRING FONTTAG)" nil nil)
-
-(autoload (quote ps-mule-begin-job) "ps-mule" "\
-Start printing job for multi-byte chars between FROM and TO.
-This checks if all multi-byte characters in the region are printable or not.
-
-\(fn FROM TO)" nil nil)
-
-(autoload (quote ps-mule-begin-page) "ps-mule" "\
-Not documented
-
-\(fn)" nil nil)
-
 ;;;***
 \f
 ;;;### (autoloads (ps-extend-face ps-extend-face-list ps-setup ps-nb-pages-region
@@ -21457,8 +21669,8 @@ Not documented
 ;;;;;;  ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer
 ;;;;;;  ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces
 ;;;;;;  ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type
-;;;;;;  ps-page-dimensions-database) "ps-print" "ps-print.el" (18006
-;;;;;;  55796))
+;;;;;;  ps-page-dimensions-database) "ps-print" "ps-print.el" (18104
+;;;;;;  24739))
 ;;; Generated autoloads from ps-print.el
 
 (defvar ps-page-dimensions-database (list (list (quote a4) (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list (quote a3) (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list (quote letter) (* 72 8.5) (* 72 11.0) "Letter") (list (quote legal) (* 72 8.5) (* 72 14.0) "Legal") (list (quote letter-small) (* 72 7.68) (* 72 10.16) "LetterSmall") (list (quote tabloid) (* 72 11.0) (* 72 17.0) "Tabloid") (list (quote ledger) (* 72 17.0) (* 72 11.0) "Ledger") (list (quote statement) (* 72 5.5) (* 72 8.5) "Statement") (list (quote executive) (* 72 7.5) (* 72 10.0) "Executive") (list (quote a4small) (* 72 7.47) (* 72 10.85) "A4Small") (list (quote b4) (* 72 10.125) (* 72 14.33) "B4") (list (quote b5) (* 72 7.16) (* 72 10.125) "B5")) "\
@@ -21655,7 +21867,7 @@ If EXTENSION is any other symbol, it is ignored.
 ;;;***
 \f
 ;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el"
-;;;;;;  (17992 30878))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/python.el
 
 (add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode)))
@@ -21730,7 +21942,7 @@ Runs `jython-mode-hook' after `python-mode-hook'.
 ;;;***
 \f
 ;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24754))
 ;;; Generated autoloads from gnus/qp.el
 
 (autoload (quote quoted-printable-decode-region) "qp" "\
@@ -21753,7 +21965,7 @@ them into characters should be done separately.
 ;;;;;;  quail-defrule quail-install-decode-map quail-install-map
 ;;;;;;  quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout
 ;;;;;;  quail-define-package quail-use-package quail-title) "quail"
-;;;;;;  "international/quail.el" (17921 16827))
+;;;;;;  "international/quail.el" (18104 24757))
 ;;; Generated autoloads from international/quail.el
 
 (autoload (quote quail-title) "quail" "\
@@ -21984,8 +22196,8 @@ of each directory.
 \f
 ;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls
 ;;;;;;  quickurl-browse-url-ask quickurl-browse-url quickurl-add-url
-;;;;;;  quickurl-ask quickurl) "quickurl" "net/quickurl.el" (17842
-;;;;;;  55218))
+;;;;;;  quickurl-ask quickurl) "quickurl" "net/quickurl.el" (18104
+;;;;;;  24760))
 ;;; Generated autoloads from net/quickurl.el
 
 (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\
@@ -22057,12 +22269,15 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'.
 ;;;***
 \f
 ;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc"
-;;;;;;  "net/rcirc.el" (18006 55797))
+;;;;;;  "net/rcirc.el" (18104 24760))
 ;;; Generated autoloads from net/rcirc.el
 
 (autoload (quote rcirc) "rcirc" "\
-Connect to IRC.
-If ARG is non-nil, prompt for a server to connect to.
+Connect to all servers in `rcirc-server-alist'.
+
+Do not connect to a server if it is already connected.
+
+If ARG is non-nil, instead prompt for connection parameters.
 
 \(fn ARG)" t nil)
 
@@ -22071,7 +22286,7 @@ If ARG is non-nil, prompt for a server to connect to.
 (autoload (quote rcirc-connect) "rcirc" "\
 Not documented
 
-\(fn &optional SERVER PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS)" nil nil)
+\(fn SERVER &optional PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS)" nil nil)
 
 (defvar rcirc-track-minor-mode nil "\
 Non-nil if Rcirc-Track minor mode is enabled.
@@ -22089,8 +22304,8 @@ Global minor mode for tracking activity in rcirc buffers.
 
 ;;;***
 \f
-;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (17842
-;;;;;;  55218))
+;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (18104
+;;;;;;  24760))
 ;;; Generated autoloads from net/rcompile.el
 
 (autoload (quote remote-compile) "rcompile" "\
@@ -22102,7 +22317,7 @@ See \\[compile].
 ;;;***
 \f
 ;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el"
-;;;;;;  (17917 37732))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emacs-lisp/re-builder.el
 
 (defalias (quote regexp-builder) (quote re-builder))
@@ -22114,7 +22329,7 @@ Construct a regexp interactively.
 
 ;;;***
 \f
-;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17930 34071))
+;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (18104 24739))
 ;;; Generated autoloads from recentf.el
 
 (defvar recentf-mode nil "\
@@ -22141,8 +22356,8 @@ that were operated on recently.
 ;;;### (autoloads (clear-rectangle string-insert-rectangle string-rectangle
 ;;;;;;  delete-whitespace-rectangle open-rectangle insert-rectangle
 ;;;;;;  yank-rectangle kill-rectangle extract-rectangle delete-extract-rectangle
-;;;;;;  delete-rectangle move-to-column-force) "rect" "rect.el" (17842
-;;;;;;  58279))
+;;;;;;  delete-rectangle move-to-column-force) "rect" "rect.el" (18104
+;;;;;;  24739))
 ;;; Generated autoloads from rect.el
 
 (autoload (quote move-to-column-force) "rect" "\
@@ -22270,8 +22485,8 @@ rectangle which were empty.
 
 ;;;***
 \f
-;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (17842
-;;;;;;  58277))
+;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (18104
+;;;;;;  24772))
 ;;; Generated autoloads from textmodes/refill.el
 
 (autoload (quote refill-mode) "refill" "\
@@ -22287,7 +22502,7 @@ refilling if they would cause auto-filling.
 ;;;***
 \f
 ;;;### (autoloads (reftex-reset-scanning-information reftex-mode
-;;;;;;  turn-on-reftex) "reftex" "textmodes/reftex.el" (17923 8784))
+;;;;;;  turn-on-reftex) "reftex" "textmodes/reftex.el" (18104 24772))
 ;;; Generated autoloads from textmodes/reftex.el
 
 (autoload (quote turn-on-reftex) "reftex" "\
@@ -22337,7 +22552,7 @@ This enforces rescanning the buffer on next use.
 ;;;***
 \f
 ;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el"
-;;;;;;  (17923 8784))
+;;;;;;  (18104 24772))
 ;;; Generated autoloads from textmodes/reftex-cite.el
 
 (autoload (quote reftex-citation) "reftex-cite" "\
@@ -22367,7 +22582,7 @@ While entering the regexp, completion on knows citation keys is possible.
 ;;;***
 \f
 ;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el"
-;;;;;;  (17923 8784))
+;;;;;;  (18104 24772))
 ;;; Generated autoloads from textmodes/reftex-global.el
 
 (autoload (quote reftex-isearch-minor-mode) "reftex-global" "\
@@ -22384,7 +22599,7 @@ With no argument, this command toggles
 ;;;***
 \f
 ;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el"
-;;;;;;  (17923 8784))
+;;;;;;  (18104 24772))
 ;;; Generated autoloads from textmodes/reftex-index.el
 
 (autoload (quote reftex-index-phrases-mode) "reftex-index" "\
@@ -22417,7 +22632,7 @@ Here are all local bindings.
 ;;;***
 \f
 ;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el"
-;;;;;;  (17923 8784))
+;;;;;;  (18104 24772))
 ;;; Generated autoloads from textmodes/reftex-parse.el
 
 (autoload (quote reftex-all-document-files) "reftex-parse" "\
@@ -22429,8 +22644,8 @@ of master file.
 
 ;;;***
 \f
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17923
-;;;;;;  8784))
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (18104
+;;;;;;  24772))
 ;;; Generated autoloads from textmodes/reftex-vars.el
 (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
 (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22440,7 +22655,7 @@ of master file.
 ;;;***
 \f
 ;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el"
-;;;;;;  (17842 54152))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emacs-lisp/regexp-opt.el
 
 (autoload (quote regexp-opt) "regexp-opt" "\
@@ -22467,7 +22682,7 @@ This means the number of non-shy regexp grouping constructs
 
 ;;;***
 \f
-;;;### (autoloads (repeat) "repeat" "repeat.el" (17842 58279))
+;;;### (autoloads (repeat) "repeat" "repeat.el" (18104 24739))
 ;;; Generated autoloads from repeat.el
 
 (autoload (quote repeat) "repeat" "\
@@ -22485,7 +22700,7 @@ can be modified by the global variable `repeat-on-final-keystroke'.
 ;;;***
 \f
 ;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el"
-;;;;;;  (17842 55035))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/reporter.el
 
 (autoload (quote reporter-submit-bug-report) "reporter" "\
@@ -22517,7 +22732,7 @@ mail-sending package is used for editing and sending the message.
 ;;;***
 \f
 ;;;### (autoloads (reposition-window) "reposition" "reposition.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24739))
 ;;; Generated autoloads from reposition.el
 
 (autoload (quote reposition-window) "reposition" "\
@@ -22544,8 +22759,8 @@ first comment line visible (if point is in a comment).
 
 ;;;***
 \f
-;;;### (autoloads (resume-suspend-hook) "resume" "resume.el" (17842
-;;;;;;  58279))
+;;;### (autoloads (resume-suspend-hook) "resume" "resume.el" (18104
+;;;;;;  24739))
 ;;; Generated autoloads from resume.el
 
 (autoload (quote resume-suspend-hook) "resume" "\
@@ -22556,7 +22771,7 @@ Clear out the file used for transmitting args when Emacs resumes.
 ;;;***
 \f
 ;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24739))
 ;;; Generated autoloads from reveal.el
 
 (autoload (quote reveal-mode) "reveal" "\
@@ -22591,7 +22806,7 @@ With zero or negative ARG turn mode off.
 ;;;***
 \f
 ;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el"
-;;;;;;  (17842 54152))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emacs-lisp/ring.el
 
 (autoload (quote ring-p) "ring" "\
@@ -22606,7 +22821,7 @@ Make a ring that can contain SIZE elements.
 
 ;;;***
 \f
-;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (17842 55218))
+;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (18104 24760))
 ;;; Generated autoloads from net/rlogin.el
  (add-hook 'same-window-regexps "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)")
 
@@ -22657,8 +22872,8 @@ variable.
 ;;;;;;  rmail-mail-new-frame rmail-primary-inbox-list rmail-delete-after-output
 ;;;;;;  rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers
 ;;;;;;  rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names
-;;;;;;  rmail-movemail-variant-p) "rmail" "mail/rmail.el" (18006
-;;;;;;  55797))
+;;;;;;  rmail-movemail-variant-p) "rmail" "mail/rmail.el" (18104
+;;;;;;  24758))
 ;;; Generated autoloads from mail/rmail.el
 
 (autoload (quote rmail-movemail-variant-p) "rmail" "\
@@ -22923,7 +23138,7 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
 ;;;***
 \f
 ;;;### (autoloads (rmail-edit-current-message) "rmailedit" "mail/rmailedit.el"
-;;;;;;  (17887 18399))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/rmailedit.el
 
 (autoload (quote rmail-edit-current-message) "rmailedit" "\
@@ -22935,7 +23150,7 @@ Edit the contents of this message.
 \f
 ;;;### (autoloads (rmail-next-labeled-message rmail-previous-labeled-message
 ;;;;;;  rmail-read-label rmail-kill-label rmail-add-label) "rmailkwd"
-;;;;;;  "mail/rmailkwd.el" (17842 55035))
+;;;;;;  "mail/rmailkwd.el" (18104 24758))
 ;;; Generated autoloads from mail/rmailkwd.el
 
 (autoload (quote rmail-add-label) "rmailkwd" "\
@@ -22974,7 +23189,7 @@ With prefix argument N moves forward N messages with these labels.
 ;;;***
 \f
 ;;;### (autoloads (set-rmail-inbox-list) "rmailmsc" "mail/rmailmsc.el"
-;;;;;;  (17842 55035))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/rmailmsc.el
 
 (autoload (quote set-rmail-inbox-list) "rmailmsc" "\
@@ -22988,7 +23203,7 @@ If FILE-NAME is empty, remove any existing inbox list.
 \f
 ;;;### (autoloads (rmail-output-body-to-file rmail-output rmail-fields-not-to-output
 ;;;;;;  rmail-output-to-rmail-file rmail-output-file-alist) "rmailout"
-;;;;;;  "mail/rmailout.el" (17842 55035))
+;;;;;;  "mail/rmailout.el" (18104 24758))
 ;;; Generated autoloads from mail/rmailout.el
 
 (defvar rmail-output-file-alist nil "\
@@ -23055,8 +23270,8 @@ FILE-NAME defaults, interactively, from the Subject field of the message.
 \f
 ;;;### (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" "mail/rmailsort.el" (17842
-;;;;;;  55035))
+;;;;;;  rmail-sort-by-date) "rmailsort" "mail/rmailsort.el" (18104
+;;;;;;  24758))
 ;;; Generated autoloads from mail/rmailsort.el
 
 (autoload (quote rmail-sort-by-date) "rmailsort" "\
@@ -23108,7 +23323,7 @@ KEYWORDS is a comma-separated list of labels.
 ;;;;;;  rmail-summary-by-senders rmail-summary-by-topic rmail-summary-by-regexp
 ;;;;;;  rmail-summary-by-recipients rmail-summary-by-labels rmail-summary
 ;;;;;;  rmail-summary-line-count-flag rmail-summary-scroll-between-messages)
-;;;;;;  "rmailsum" "mail/rmailsum.el" (17842 55035))
+;;;;;;  "rmailsum" "mail/rmailsum.el" (18104 24758))
 ;;; Generated autoloads from mail/rmailsum.el
 
 (defvar rmail-summary-scroll-between-messages t "\
@@ -23187,10 +23402,23 @@ Setting this variable has an effect only before reading a mail.")
 
 (custom-autoload (quote rmail-user-mail-address-regexp) "rmailsum" t)
 
+;;;***
+\f
+;;;### (autoloads (news-post-news) "rnewspost" "obsolete/rnewspost.el"
+;;;;;;  (18104 24760))
+;;; Generated autoloads from obsolete/rnewspost.el
+
+(autoload (quote news-post-news) "rnewspost" "\
+Begin editing a new USENET news article to be posted.
+Type \\[describe-mode] once editing the article to get a list of commands.
+If NOQUERY is non-nil, we do not query before doing the work.
+
+\(fn &optional NOQUERY)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region
-;;;;;;  rot13-string rot13) "rot13" "rot13.el" (17842 58279))
+;;;;;;  rot13-string rot13) "rot13" "rot13.el" (18104 24739))
 ;;; Generated autoloads from rot13.el
 
 (autoload (quote rot13) "rot13" "\
@@ -23227,8 +23455,8 @@ Toggle the use of ROT13 encoding for the current window.
 
 ;;;***
 \f
-;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (17833
-;;;;;;  43069))
+;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (18104
+;;;;;;  24739))
 ;;; Generated autoloads from ruler-mode.el
 
 (autoload (quote ruler-mode) "ruler-mode" "\
@@ -23238,8 +23466,8 @@ Display a ruler in the header line if ARG > 0.
 
 ;;;***
 \f
-;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (18011
-;;;;;;  44080))
+;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (18104
+;;;;;;  24748))
 ;;; Generated autoloads from emacs-lisp/rx.el
 
 (autoload (quote rx-to-string) "rx" "\
@@ -23552,7 +23780,7 @@ enclosed in `(and ...)'.
 ;;;***
 \f
 ;;;### (autoloads (savehist-mode savehist-mode) "savehist" "savehist.el"
-;;;;;;  (17842 58279))
+;;;;;;  (18104 24739))
 ;;; Generated autoloads from savehist.el
 
 (defvar savehist-mode nil "\
@@ -23578,7 +23806,7 @@ which is probably undesirable.
 ;;;***
 \f
 ;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/scheme.el
 
 (autoload (quote scheme-mode) "scheme" "\
@@ -23620,7 +23848,7 @@ that variable's value is a string.
 ;;;***
 \f
 ;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24755))
 ;;; Generated autoloads from gnus/score-mode.el
 
 (autoload (quote gnus-score-mode) "score-mode" "\
@@ -23631,10 +23859,35 @@ This mode is an extended emacs-lisp mode.
 
 \(fn)" t nil)
 
+;;;***
+\f
+;;;### (autoloads (scribe-mode) "scribe" "obsolete/scribe.el" (18104
+;;;;;;  24760))
+;;; Generated autoloads from obsolete/scribe.el
+
+(autoload (quote scribe-mode) "scribe" "\
+Major mode for editing files of Scribe (a text formatter) source.
+Scribe-mode is similar to text-mode, with a few extra commands added.
+\\{scribe-mode-map}
+
+Interesting variables:
+
+`scribe-fancy-paragraphs'
+  Non-nil makes Scribe mode use a different style of paragraph separation.
+
+`scribe-electric-quote'
+  Non-nil makes insert of double quote use `` or '' depending on context.
+
+`scribe-electric-parenthesis'
+  Non-nil makes an open-parenthesis char (one of `([<{')
+  automatically insert its close if typed after an @Command form.
+
+\(fn)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24739))
 ;;; Generated autoloads from scroll-all.el
 
 (defvar scroll-all-mode nil "\
@@ -23657,11 +23910,11 @@ apply to all visible windows in the same frame.
 ;;;***
 \f
 ;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24739))
 ;;; Generated autoloads from scroll-lock.el
 
 (autoload (quote scroll-lock-mode) "scroll-lock" "\
-Minor mode for pager-like scrolling.
+Buffer-local minor mode for pager-like scrolling.
 Keys which normally move point by line or paragraph will scroll
 the buffer by the respective amount of lines instead and point
 will be kept vertically fixed relative to window boundaries
@@ -23679,7 +23932,7 @@ during scrolling.
 ;;;;;;  mail-alias-file mail-default-reply-to mail-archive-file-name
 ;;;;;;  mail-header-separator send-mail-function mail-interactive
 ;;;;;;  mail-self-blind mail-specify-envelope-from mail-from-style)
-;;;;;;  "sendmail" "mail/sendmail.el" (17942 63381))
+;;;;;;  "sendmail" "mail/sendmail.el" (18104 24758))
 ;;; Generated autoloads from mail/sendmail.el
 
 (defvar mail-from-style (quote angles) "\
@@ -23979,15 +24232,15 @@ Like `mail' command, but display mail buffer in another frame.
 
 ;;;***
 \f
-;;;### (autoloads (server-mode server-start) "server" "server.el"
-;;;;;;  (17921 16827))
+;;;### (autoloads (server-save-buffers-kill-terminal server-mode
+;;;;;;  server-start) "server" "server.el" (18104 24739))
 ;;; Generated autoloads from server.el
 
 (autoload (quote server-start) "server" "\
 Allow this Emacs process to be a server for client processes.
 This starts a server communications subprocess through which
-client \"editors\" can send your editing commands to this Emacs job.
-To use the server, set up the program `emacsclient' in the
+client \"editors\" can send your editing commands to this Emacs
+job.  To use the server, set up the program `emacsclient' in the
 Emacs distribution as your standard \"editor\".
 
 Optional argument LEAVE-DEAD (interactively, a prefix arg) means just
@@ -24012,9 +24265,19 @@ Server mode runs a process that accepts commands from the
 
 \(fn &optional ARG)" t nil)
 
+(autoload (quote server-save-buffers-kill-terminal) "server" "\
+Offer to save each buffer, then kill PROC.
+
+With prefix arg, silently save all file-visiting buffers, then kill.
+
+If emacsclient was started with a list of filenames to edit, then
+only these files will be asked to be saved.
+
+\(fn PROC &optional ARG)" nil nil)
+
 ;;;***
 \f
-;;;### (autoloads (ses-mode) "ses" "ses.el" (17902 31690))
+;;;### (autoloads (ses-mode) "ses" "ses.el" (18104 24739))
 ;;; Generated autoloads from ses.el
 
 (autoload (quote ses-mode) "ses" "\
@@ -24033,7 +24296,7 @@ These are active only in the minibuffer, when entering or editing a formula:
 ;;;***
 \f
 ;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el"
-;;;;;;  (18010 58080))
+;;;;;;  (18104 24772))
 ;;; Generated autoloads from textmodes/sgml-mode.el
 
 (autoload (quote sgml-mode) "sgml-mode" "\
@@ -24101,7 +24364,7 @@ To work around that, do:
 ;;;***
 \f
 ;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el"
-;;;;;;  (17992 30878))
+;;;;;;  (18104 24768))
 ;;; Generated autoloads from progmodes/sh-script.el
 (put 'sh-shell 'safe-local-variable 'symbolp)
 
@@ -24165,7 +24428,7 @@ with your script for an edit-interpret-debug cycle.
 
 ;;;***
 \f
-;;;### (autoloads (sha1) "sha1" "gnus/sha1.el" (17842 54741))
+;;;### (autoloads (sha1) "sha1" "gnus/sha1.el" (18104 24755))
 ;;; Generated autoloads from gnus/sha1.el
 
 (autoload (quote sha1) "sha1" "\
@@ -24180,7 +24443,7 @@ If BINARY is non-nil, return a string in binary form.
 ;;;***
 \f
 ;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el"
-;;;;;;  (17853 57352))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emacs-lisp/shadow.el
 
 (autoload (quote list-load-path-shadows) "shadow" "\
@@ -24227,8 +24490,8 @@ buffer called `*Shadows*'.  Shadowings are located by calling the
 ;;;***
 \f
 ;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group
-;;;;;;  shadow-define-cluster) "shadowfile" "shadowfile.el" (17842
-;;;;;;  58278))
+;;;;;;  shadow-define-cluster) "shadowfile" "shadowfile.el" (18104
+;;;;;;  24739))
 ;;; Generated autoloads from shadowfile.el
 
 (autoload (quote shadow-define-cluster) "shadowfile" "\
@@ -24267,7 +24530,7 @@ Set up file shadowing.
 ;;;***
 \f
 ;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el"
-;;;;;;  (17899 1575))
+;;;;;;  (18104 24739))
 ;;; Generated autoloads from shell.el
 
 (defvar shell-dumb-shell-regexp "cmd\\(proxy\\)?\\.exe" "\
@@ -24314,7 +24577,7 @@ Otherwise, one argument `-i' is passed to the shell.
 ;;;***
 \f
 ;;;### (autoloads (sieve-upload-and-bury sieve-upload sieve-manage)
-;;;;;;  "sieve" "gnus/sieve.el" (17842 54741))
+;;;;;;  "sieve" "gnus/sieve.el" (18104 24755))
 ;;; Generated autoloads from gnus/sieve.el
 
 (autoload (quote sieve-manage) "sieve" "\
@@ -24335,7 +24598,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el"
-;;;;;;  (17842 54741))
+;;;;;;  (18104 24755))
 ;;; Generated autoloads from gnus/sieve-mode.el
 
 (autoload (quote sieve-mode) "sieve-mode" "\
@@ -24350,14 +24613,14 @@ Turning on Sieve mode runs `sieve-mode-hook'.
 
 ;;;***
 \f
-;;;### (autoloads nil "simple" "simple.el" (18009 38727))
+;;;### (autoloads nil "simple" "simple.el" (18104 24740))
 ;;; Generated autoloads from simple.el
 (put 'fill-prefix 'safe-local-variable 'string-or-null-p)
 
 ;;;***
 \f
-;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (17842
-;;;;;;  56332))
+;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (18104
+;;;;;;  24769))
 ;;; Generated autoloads from progmodes/simula.el
 
 (autoload (quote simula-mode) "simula" "\
@@ -24406,7 +24669,7 @@ with no arguments, if that value is non-nil.
 ;;;***
 \f
 ;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new
-;;;;;;  define-skeleton) "skeleton" "skeleton.el" (17842 58278))
+;;;;;;  define-skeleton) "skeleton" "skeleton.el" (18104 24740))
 ;;; Generated autoloads from skeleton.el
 
 (defvar skeleton-filter-function (quote identity) "\
@@ -24516,7 +24779,7 @@ symmetrical ones, and the same character twice for the others.
 ;;;***
 \f
 ;;;### (autoloads (smerge-mode smerge-ediff) "smerge-mode" "smerge-mode.el"
-;;;;;;  (17904 28230))
+;;;;;;  (18104 24740))
 ;;; Generated autoloads from smerge-mode.el
 
 (autoload (quote smerge-ediff) "smerge-mode" "\
@@ -24535,7 +24798,7 @@ Minor mode to simplify editing output from the diff3 program.
 ;;;***
 \f
 ;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el"
-;;;;;;  (17875 18370))
+;;;;;;  (18104 24755))
 ;;; Generated autoloads from gnus/smiley.el
 
 (autoload (quote smiley-region) "smiley" "\
@@ -24553,7 +24816,7 @@ interactively. If there's no argument, do it at the current buffer
 ;;;***
 \f
 ;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
-;;;;;;  "mail/smtpmail.el" (17939 50716))
+;;;;;;  "mail/smtpmail.el" (18104 24758))
 ;;; Generated autoloads from mail/smtpmail.el
 
 (autoload (quote smtpmail-send-it) "smtpmail" "\
@@ -24568,7 +24831,7 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'.
 
 ;;;***
 \f
-;;;### (autoloads (snake) "snake" "play/snake.el" (17842 55395))
+;;;### (autoloads (snake) "snake" "play/snake.el" (18104 24762))
 ;;; Generated autoloads from play/snake.el
 
 (autoload (quote snake) "snake" "\
@@ -24592,7 +24855,7 @@ Snake mode keybindings:
 ;;;***
 \f
 ;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el"
-;;;;;;  (17842 55218))
+;;;;;;  (18104 24760))
 ;;; Generated autoloads from net/snmp-mode.el
 
 (autoload (quote snmp-mode) "snmp-mode" "\
@@ -24623,7 +24886,7 @@ then `snmpv2-mode-hook'.
 \f
 ;;;### (autoloads (solar-equinoxes-solstices sunrise-sunset calendar-location-name
 ;;;;;;  calendar-longitude calendar-latitude calendar-time-display-form)
-;;;;;;  "solar" "calendar/solar.el" (17956 13479))
+;;;;;;  "solar" "calendar/solar.el" (18104 24745))
 ;;; Generated autoloads from calendar/solar.el
 
 (defvar calendar-time-display-form (quote (12-hours ":" minutes am-pm (if time-zone " (") time-zone (if time-zone ")"))) "\
@@ -24694,8 +24957,8 @@ Requires floating point.
 
 ;;;***
 \f
-;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (17842
-;;;;;;  55395))
+;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (18104
+;;;;;;  24762))
 ;;; Generated autoloads from play/solitaire.el
 
 (autoload (quote solitaire) "solitaire" "\
@@ -24772,7 +25035,7 @@ Pick your favourite shortcuts:
 \f
 ;;;### (autoloads (reverse-region sort-columns sort-regexp-fields
 ;;;;;;  sort-fields sort-numeric-fields sort-pages sort-paragraphs
-;;;;;;  sort-lines sort-subr) "sort" "sort.el" (17842 58278))
+;;;;;;  sort-lines sort-subr) "sort" "sort.el" (18104 24740))
 ;;; Generated autoloads from sort.el
 
 (autoload (quote sort-subr) "sort" "\
@@ -24914,8 +25177,8 @@ From a program takes two point or marker arguments, BEG and END.
 
 ;;;***
 \f
-;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (17842
-;;;;;;  54741))
+;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (18104
+;;;;;;  24755))
 ;;; Generated autoloads from gnus/spam.el
 
 (autoload (quote spam-initialize) "spam" "\
@@ -24927,7 +25190,7 @@ Install the spam.el hooks and do other initialization
 \f
 ;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file
 ;;;;;;  spam-report-url-ping-mm-url spam-report-process-queue) "spam-report"
-;;;;;;  "gnus/spam-report.el" (17842 54741))
+;;;;;;  "gnus/spam-report.el" (18104 24755))
 ;;; Generated autoloads from gnus/spam-report.el
 
 (autoload (quote spam-report-process-queue) "spam-report" "\
@@ -24970,7 +25233,7 @@ Spam reports will be queued with the method used when
 ;;;***
 \f
 ;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar"
-;;;;;;  "speedbar.el" (17881 43027))
+;;;;;;  "speedbar.el" (18104 24740))
 ;;; Generated autoloads from speedbar.el
 
 (defalias (quote speedbar) (quote speedbar-frame-mode))
@@ -24995,7 +25258,7 @@ selected.  If the speedbar frame is active, then select the attached frame.
 ;;;***
 \f
 ;;;### (autoloads (spell-string spell-region spell-word spell-buffer)
-;;;;;;  "spell" "textmodes/spell.el" (17842 58276))
+;;;;;;  "spell" "textmodes/spell.el" (18104 24772))
 ;;; Generated autoloads from textmodes/spell.el
 
 (put (quote spell-filter) (quote risky-local-variable) t)
@@ -25031,8 +25294,8 @@ Check spelling of string supplied as argument.
 
 ;;;***
 \f
-;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (17842
-;;;;;;  55395))
+;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (18104
+;;;;;;  24762))
 ;;; Generated autoloads from play/spook.el
 
 (autoload (quote spook) "spook" "\
@@ -25050,8 +25313,8 @@ Return a vector containing the lines from `spook-phrases-file'.
 ;;;### (autoloads (sql-linter sql-db2 sql-interbase sql-postgres
 ;;;;;;  sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix
 ;;;;;;  sql-sybase sql-oracle sql-product-interactive sql-mode sql-help
-;;;;;;  sql-add-product-keywords) "sql" "progmodes/sql.el" (17842
-;;;;;;  56332))
+;;;;;;  sql-add-product-keywords) "sql" "progmodes/sql.el" (18104
+;;;;;;  24769))
 ;;; Generated autoloads from progmodes/sql.el
 
 (autoload (quote sql-add-product-keywords) "sql" "\
@@ -25482,8 +25745,8 @@ input.  See `sql-interactive-mode'.
 ;;;;;;  strokes-mode strokes-list-strokes strokes-load-user-strokes
 ;;;;;;  strokes-help strokes-describe-stroke strokes-do-complex-stroke
 ;;;;;;  strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke
-;;;;;;  strokes-global-set-stroke) "strokes" "strokes.el" (17842
-;;;;;;  58278))
+;;;;;;  strokes-global-set-stroke) "strokes" "strokes.el" (18104
+;;;;;;  24740))
 ;;; Generated autoloads from strokes.el
 
 (autoload (quote strokes-global-set-stroke) "strokes" "\
@@ -25593,7 +25856,7 @@ Read a complex stroke and insert its glyph into the current buffer.
 ;;;***
 \f
 ;;;### (autoloads (studlify-buffer studlify-word studlify-region)
-;;;;;;  "studly" "play/studly.el" (16211 27038))
+;;;;;;  "studly" "play/studly.el" (17994 6715))
 ;;; Generated autoloads from play/studly.el
 
 (autoload (quote studlify-region) "studly" "\
@@ -25613,7 +25876,7 @@ Studlify-case the current buffer.
 
 ;;;***
 \f
-;;;### (autoloads (locate-library) "subr" "subr.el" (17964 48351))
+;;;### (autoloads (locate-library) "subr" "subr.el" (18104 24740))
 ;;; Generated autoloads from subr.el
 
 (autoload (quote locate-library) "subr" "\
@@ -25635,7 +25898,7 @@ and the file name is displayed in the echo area.
 ;;;***
 \f
 ;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el"
-;;;;;;  (17854 7564))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/supercite.el
 
 (autoload (quote sc-cite-original) "supercite" "\
@@ -25667,7 +25930,7 @@ before, and `sc-post-hook' is run after the guts of this function.
 
 ;;;***
 \f
-;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (18006 55796))
+;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (18104 24740))
 ;;; Generated autoloads from t-mouse.el
 
 (defvar t-mouse-mode nil "\
@@ -25691,7 +25954,7 @@ It requires the `mev' program, part of the `gpm' utilities.
 
 ;;;***
 \f
-;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (17842 58278))
+;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (18104 24740))
 ;;; Generated autoloads from tabify.el
 
 (autoload (quote untabify) "tabify" "\
@@ -25726,7 +25989,7 @@ The variable `tab-width' controls the spacing of tab stops.
 ;;;;;;  table-recognize table-insert-row-column table-insert-column
 ;;;;;;  table-insert-row table-insert table-point-left-cell-hook
 ;;;;;;  table-point-entered-cell-hook table-load-hook table-cell-map-hook)
-;;;;;;  "table" "textmodes/table.el" (18012 17784))
+;;;;;;  "table" "textmodes/table.el" (18104 24772))
 ;;; Generated autoloads from textmodes/table.el
 
 (defvar table-cell-map-hook nil "\
@@ -26314,7 +26577,7 @@ converts a table into plain text without frames.  It is a companion to
 
 ;;;***
 \f
-;;;### (autoloads (talk-connect) "talk" "talk.el" (17842 58278))
+;;;### (autoloads (talk talk-connect) "talk" "talk.el" (18104 24740))
 ;;; Generated autoloads from talk.el
 
 (autoload (quote talk-connect) "talk" "\
@@ -26322,9 +26585,14 @@ Connect to display DISPLAY for the Emacs talk group.
 
 \(fn DISPLAY)" t nil)
 
+(autoload (quote talk) "talk" "\
+Connect to the Emacs talk group from the current X display or tty frame.
+
+\(fn)" t nil)
+
 ;;;***
 \f
-;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (18010 5426))
+;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (18104 24740))
 ;;; Generated autoloads from tar-mode.el
 
 (autoload (quote tar-mode) "tar-mode" "\
@@ -26348,7 +26616,7 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
 ;;;***
 \f
 ;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl"
-;;;;;;  "progmodes/tcl.el" (17842 56332))
+;;;;;;  "progmodes/tcl.el" (18104 24769))
 ;;; Generated autoloads from progmodes/tcl.el
 
 (autoload (quote tcl-mode) "tcl" "\
@@ -26399,7 +26667,7 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'.
 
 ;;;***
 \f
-;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (17842 55218))
+;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (18104 24760))
 ;;; Generated autoloads from net/telnet.el
  (add-hook 'same-window-regexps "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)")
 
@@ -26426,8 +26694,8 @@ Normally input is edited in Emacs and sent a line at a time.
 
 ;;;***
 \f
-;;;### (autoloads (ansi-term term make-term) "term" "term.el" (17952
-;;;;;;  11093))
+;;;### (autoloads (ansi-term term make-term) "term" "term.el" (18104
+;;;;;;  24740))
 ;;; Generated autoloads from term.el
 
 (autoload (quote make-term) "term" "\
@@ -26455,8 +26723,8 @@ Start a terminal-emulator in a new buffer.
 
 ;;;***
 \f
-;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (17842
-;;;;;;  58278))
+;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (18104
+;;;;;;  24740))
 ;;; Generated autoloads from terminal.el
 
 (autoload (quote terminal-emulator) "terminal" "\
@@ -26493,7 +26761,7 @@ subprocess started.
 ;;;***
 \f
 ;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el"
-;;;;;;  (17925 52793))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emacs-lisp/testcover.el
 
 (autoload (quote testcover-this-defun) "testcover" "\
@@ -26503,7 +26771,7 @@ Start coverage on function under point.
 
 ;;;***
 \f
-;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17941 38806))
+;;;### (autoloads (tetris) "tetris" "play/tetris.el" (18104 24762))
 ;;; Generated autoloads from play/tetris.el
 
 (autoload (quote tetris) "tetris" "\
@@ -26534,7 +26802,7 @@ tetris-mode keybindings:
 ;;;;;;  tex-start-commands tex-start-options slitex-run-command latex-run-command
 ;;;;;;  tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp
 ;;;;;;  tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el"
-;;;;;;  (17992 30878))
+;;;;;;  (18104 24772))
 ;;; Generated autoloads from textmodes/tex-mode.el
 
 (defvar tex-shell-file-name nil "\
@@ -26836,7 +27104,7 @@ Major mode to edit DocTeX files.
 ;;;***
 \f
 ;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer)
-;;;;;;  "texinfmt" "textmodes/texinfmt.el" (17842 58276))
+;;;;;;  "texinfmt" "textmodes/texinfmt.el" (18104 24773))
 ;;; Generated autoloads from textmodes/texinfmt.el
 
 (autoload (quote texinfo-format-buffer) "texinfmt" "\
@@ -26845,8 +27113,8 @@ The Info file output is generated in a buffer visiting the Info file
 name specified in the @setfilename command.
 
 Non-nil argument (prefix, if interactive) means don't make tag table
-and don't split the file if large.  You can use Info-tagify and
-Info-split to do these manually.
+and don't split the file if large.  You can use `Info-tagify' and
+`Info-split' to do these manually.
 
 \(fn &optional NOSPLIT)" t nil)
 
@@ -26869,14 +27137,14 @@ is automatically removed when the Info file is created.  The original
 Texinfo source buffer is not changed.
 
 Non-nil argument (prefix, if interactive) means don't split the file
-if large.  You can use Info-split to do this manually.
+if large.  You can use `Info-split' to do this manually.
 
 \(fn &optional NOSPLIT)" t nil)
 
 ;;;***
 \f
 ;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote)
-;;;;;;  "texinfo" "textmodes/texinfo.el" (17842 58276))
+;;;;;;  "texinfo" "textmodes/texinfo.el" (18104 24773))
 ;;; Generated autoloads from textmodes/texinfo.el
 
 (defvar texinfo-open-quote "``" "\
@@ -26963,7 +27231,7 @@ value of `texinfo-mode-hook'.
 ;;;### (autoloads (thai-auto-composition-mode thai-composition-function
 ;;;;;;  thai-post-read-conversion thai-compose-buffer thai-compose-string
 ;;;;;;  thai-compose-region) "thai-util" "language/thai-util.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from language/thai-util.el
 
 (autoload (quote thai-compose-region) "thai-util" "\
@@ -27007,7 +27275,7 @@ Minor mode for automatically correct Thai character composition.
 \f
 ;;;### (autoloads (list-at-point number-at-point symbol-at-point
 ;;;;;;  sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing)
-;;;;;;  "thingatpt" "thingatpt.el" (17842 58278))
+;;;;;;  "thingatpt" "thingatpt.el" (18104 24740))
 ;;; Generated autoloads from thingatpt.el
 
 (autoload (quote forward-thing) "thingatpt" "\
@@ -27019,7 +27287,7 @@ Move forward to the end of the Nth next THING.
 Determine the start and end buffer locations for the THING at point.
 THING is a symbol which specifies the kind of syntactic entity you want.
 Possibilities include `symbol', `list', `sexp', `defun', `filename', `url',
-`word', `sentence', `whitespace', `line', `page' and others.
+`email', `word', `sentence', `whitespace', `line', `page' and others.
 
 See the file `thingatpt.el' for documentation on how to define
 a symbol as a valid THING.
@@ -27033,7 +27301,7 @@ of the textual entity that was found.
 Return the THING at point.
 THING is a symbol which specifies the kind of syntactic entity you want.
 Possibilities include `symbol', `list', `sexp', `defun', `filename', `url',
-`word', `sentence', `whitespace', `line', `page' and others.
+`email', `word', `sentence', `whitespace', `line', `page' and others.
 
 See the file `thingatpt.el' for documentation on how to define
 a symbol as a valid THING.
@@ -27064,7 +27332,7 @@ Not documented
 \f
 ;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked
 ;;;;;;  thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el"
-;;;;;;  (17963 26308))
+;;;;;;  (18104 24740))
 ;;; Generated autoloads from thumbs.el
 
 (autoload (quote thumbs-find-thumb) "thumbs" "\
@@ -27103,7 +27371,7 @@ In dired, call the setroot program on the image at point.
 ;;;;;;  tibetan-composition-function tibetan-decompose-string tibetan-decompose-region
 ;;;;;;  tibetan-compose-region tibetan-compose-string tibetan-transcription-to-tibetan
 ;;;;;;  tibetan-tibetan-to-transcription tibetan-char-p) "tibet-util"
-;;;;;;  "language/tibet-util.el" (17842 58278))
+;;;;;;  "language/tibet-util.el" (18104 24758))
 ;;; Generated autoloads from language/tibet-util.el
 
 (autoload (quote tibetan-char-p) "tibet-util" "\
@@ -27182,7 +27450,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el"
-;;;;;;  (17842 58276))
+;;;;;;  (18104 24773))
 ;;; Generated autoloads from textmodes/tildify.el
 
 (autoload (quote tildify-region) "tildify" "\
@@ -27206,7 +27474,7 @@ This function performs no refilling of the changed text.
 ;;;***
 \f
 ;;;### (autoloads (display-time-mode display-time display-time-day-and-date)
-;;;;;;  "time" "time.el" (18006 55796))
+;;;;;;  "time" "time.el" (18104 24740))
 ;;; Generated autoloads from time.el
 
 (defvar display-time-day-and-date nil "\
@@ -27248,8 +27516,8 @@ This runs the normal hook `display-time-hook' after each update.
 ;;;### (autoloads (safe-date-to-time time-to-days time-to-day-in-year
 ;;;;;;  date-leap-year-p days-between date-to-day time-add time-subtract
 ;;;;;;  time-since days-to-time time-less-p seconds-to-time time-to-seconds
-;;;;;;  date-to-time) "time-date" "calendar/time-date.el" (17842
-;;;;;;  53792))
+;;;;;;  date-to-time) "time-date" "calendar/time-date.el" (18104
+;;;;;;  24745))
 ;;; Generated autoloads from calendar/time-date.el
 
 (autoload (quote date-to-time) "time-date" "\
@@ -27335,7 +27603,7 @@ If DATE is malformed, return a time value of zeros.
 ;;;***
 \f
 ;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp"
-;;;;;;  "time-stamp.el" (17842 58278))
+;;;;;;  "time-stamp.el" (18104 24740))
 ;;; Generated autoloads from time-stamp.el
 (put 'time-stamp-format 'safe-local-variable 'stringp)
 (put 'time-stamp-line-limit 'safe-local-variable 'integerp)
@@ -27378,7 +27646,7 @@ With ARG, turn time stamping on if and only if arg is positive.
 ;;;;;;  timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out
 ;;;;;;  timeclock-change timeclock-status-string timeclock-out timeclock-in
 ;;;;;;  timeclock-modeline-display) "timeclock" "calendar/timeclock.el"
-;;;;;;  (17992 30878))
+;;;;;;  (18104 24745))
 ;;; Generated autoloads from calendar/timeclock.el
 
 (autoload (quote timeclock-modeline-display) "timeclock" "\
@@ -27479,7 +27747,7 @@ relative only to the time worked today, and not to past time.
 \f
 ;;;### (autoloads (with-timeout run-with-idle-timer add-timeout run-with-timer
 ;;;;;;  run-at-time cancel-function-timers cancel-timer) "timer"
-;;;;;;  "emacs-lisp/timer.el" (17935 13348))
+;;;;;;  "emacs-lisp/timer.el" (18104 24748))
 ;;; Generated autoloads from emacs-lisp/timer.el
 
 (defalias (quote disable-timeout) (quote cancel-timer))
@@ -27560,7 +27828,7 @@ be detected.
 ;;;***
 \f
 ;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv"
-;;;;;;  "international/titdic-cnv.el" (17870 32853))
+;;;;;;  "international/titdic-cnv.el" (18104 24757))
 ;;; Generated autoloads from international/titdic-cnv.el
 
 (autoload (quote titdic-convert) "titdic-cnv" "\
@@ -27583,8 +27851,8 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\".
 ;;;***
 \f
 ;;;### (autoloads (tamil-composition-function tamil-post-read-conversion
-;;;;;;  tamil-compose-region) "tml-util" "language/tml-util.el" (17842
-;;;;;;  58278))
+;;;;;;  tamil-compose-region) "tml-util" "language/tml-util.el" (18104
+;;;;;;  24758))
 ;;; Generated autoloads from language/tml-util.el
 
 (autoload (quote tamil-compose-region) "tml-util" "\
@@ -27607,10 +27875,9 @@ PATTERN regexp.
 ;;;***
 \f
 ;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
-;;;;;;  "tmm.el" (17952 58711))
+;;;;;;  "tmm.el" (18104 24740))
 ;;; Generated autoloads from tmm.el
  (define-key global-map "\M-`" 'tmm-menubar)
- (define-key global-map [f10] 'tmm-menubar)
  (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
 
 (autoload (quote tmm-menubar) "tmm" "\
@@ -27648,7 +27915,7 @@ Its value should be an event that has a binding in MENU.
 \f
 ;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities
 ;;;;;;  todo-insert-item todo-add-item-non-interactively todo-add-category)
-;;;;;;  "todo-mode" "calendar/todo-mode.el" (17962 52848))
+;;;;;;  "todo-mode" "calendar/todo-mode.el" (18104 24745))
 ;;; Generated autoloads from calendar/todo-mode.el
 
 (autoload (quote todo-add-category) "todo-mode" "\
@@ -27708,10 +27975,16 @@ Show TODO list.
 ;;;***
 \f
 ;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu
-;;;;;;  tool-bar-local-item tool-bar-add-item) "tool-bar" "tool-bar.el"
-;;;;;;  (17842 58278))
+;;;;;;  tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame)
+;;;;;;  "tool-bar" "tool-bar.el" (18104 24740))
 ;;; Generated autoloads from tool-bar.el
 
+(autoload (quote toggle-tool-bar-mode-from-frame) "tool-bar" "\
+Toggle tool bar on or off, based on the status of the current frame.
+See `tool-bar-mode' for more information.
+
+\(fn &optional ARG)" t nil)
+
 (put (quote tool-bar-mode) (quote standard-value) (quote (t)))
 
 (autoload (quote tool-bar-add-item) "tool-bar" "\
@@ -27776,7 +28049,7 @@ holds a keymap.
 ;;;***
 \f
 ;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el"
-;;;;;;  (18006 55796))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emulation/tpu-edt.el
 
 (defvar tpu-edt-mode nil "\
@@ -27803,7 +28076,7 @@ Turn on TPU/edt emulation.
 ;;;***
 \f
 ;;;### (autoloads (tpu-set-cursor-bound tpu-set-cursor-free tpu-set-scroll-margins)
-;;;;;;  "tpu-extras" "emulation/tpu-extras.el" (17842 54264))
+;;;;;;  "tpu-extras" "emulation/tpu-extras.el" (18104 24748))
 ;;; Generated autoloads from emulation/tpu-extras.el
 
 (autoload (quote tpu-set-scroll-margins) "tpu-extras" "\
@@ -27823,7 +28096,7 @@ Constrain the cursor to the flow of the text.
 
 ;;;***
 \f
-;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (17842 54152))
+;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (18104 24748))
 ;;; Generated autoloads from emacs-lisp/tq.el
 
 (autoload (quote tq-create) "tq" "\
@@ -27837,7 +28110,7 @@ to a tcp server on another machine.
 ;;;***
 \f
 ;;;### (autoloads (trace-function-background trace-function trace-buffer)
-;;;;;;  "trace" "emacs-lisp/trace.el" (17842 54152))
+;;;;;;  "trace" "emacs-lisp/trace.el" (18104 24748))
 ;;; Generated autoloads from emacs-lisp/trace.el
 
 (defvar trace-buffer "*trace-output*" "\
@@ -27873,32 +28146,43 @@ BUFFER defaults to `trace-buffer'.
 \f
 ;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
 ;;;;;;  tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
-;;;;;;  tramp-file-name-handler tramp-completion-file-name-regexp
-;;;;;;  tramp-file-name-regexp) "tramp" "net/tramp.el" (17934 45069))
+;;;;;;  tramp-file-name-handler tramp-syntax) "tramp" "net/tramp.el"
+;;;;;;  (18104 24760))
 ;;; Generated autoloads from net/tramp.el
 
-(defvar tramp-unified-filenames (not (featurep (quote xemacs))) "\
-Non-nil means to use unified Ange-FTP/Tramp filename syntax.
-Otherwise, use a separate filename syntax for Tramp.")
+(defvar tramp-syntax (if (featurep (quote xemacs)) (quote sep) (quote ftp)) "\
+Tramp filename syntax to be used.
+
+It can have the following values:
+
+  'ftp -- Ange-FTP respective EFS like syntax (GNU Emacs default)
+  'sep -- Syntax as defined for XEmacs (not available yet for GNU Emacs)
+  'url -- URL-like syntax.")
+
+(custom-autoload (quote tramp-syntax) "tramp" t)
 
 (defconst tramp-file-name-regexp-unified "\\`/[^/:]+:" "\
 Value for `tramp-file-name-regexp' for unified remoting.
 Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and
-Tramp.  See `tramp-file-name-structure-unified' for more explanations.")
+Tramp.  See `tramp-file-name-structure' for more explanations.")
 
 (defconst tramp-file-name-regexp-separate "\\`/\\[.*\\]" "\
 Value for `tramp-file-name-regexp' for separate remoting.
 XEmacs uses a separate filename syntax for Tramp and EFS.
-See `tramp-file-name-structure-separate' for more explanations.")
+See `tramp-file-name-structure' for more explanations.")
+
+(defconst tramp-file-name-regexp-url "\\`/[^/:]+://" "\
+Value for `tramp-file-name-regexp' for URL-like remoting.
+See `tramp-file-name-structure' for more explanations.")
 
-(defvar tramp-file-name-regexp (if tramp-unified-filenames tramp-file-name-regexp-unified tramp-file-name-regexp-separate) "\
+(defconst tramp-file-name-regexp (cond ((equal tramp-syntax (quote ftp)) tramp-file-name-regexp-unified) ((equal tramp-syntax (quote sep)) tramp-file-name-regexp-separate) ((equal tramp-syntax (quote url)) tramp-file-name-regexp-url) (t (error "Wrong `tramp-syntax' defined"))) "\
 *Regular expression matching file names handled by tramp.
 This regexp should match tramp file names but no other file names.
 \(When tramp.el is loaded, this regular expression is prepended to
 `file-name-handler-alist', and that is searched sequentially.  Thus,
 if the tramp entry appears rather early in the `file-name-handler-alist'
 and is a bit too general, then some files might be considered tramp
-files which are not really tramp files.
+files which are not really Tramp files.
 
 Please note that the entry in `file-name-handler-alist' is made when
 this file (tramp.el) is loaded.  This means that this variable must be set
@@ -27907,19 +28191,21 @@ updated after changing this variable.
 
 Also see `tramp-file-name-structure'.")
 
-(custom-autoload (quote tramp-file-name-regexp) "tramp" t)
-
-(defconst tramp-completion-file-name-regexp-unified "^/$\\|^/[^/:][^/]*$" "\
+(defconst tramp-completion-file-name-regexp-unified (if (memq system-type (quote (cygwin windows-nt))) "^\\([a-zA-Z]:\\)?/$\\|^\\([a-zA-Z]:\\)?/[^/:][^/]*$" "^/$\\|^/[^/:][^/]*$") "\
 Value for `tramp-completion-file-name-regexp' for unified remoting.
 Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and
-Tramp.  See `tramp-file-name-structure-unified' for more explanations.")
+Tramp.  See `tramp-file-name-structure' for more explanations.")
 
-(defconst tramp-completion-file-name-regexp-separate "^/\\([[][^]]*\\)?$" "\
+(defconst tramp-completion-file-name-regexp-separate (if (memq system-type (quote (cygwin windows-nt))) "^\\([a-zA-Z]:\\)?/\\([[][^]]*\\)?$" "^/\\([[][^]]*\\)?$") "\
 Value for `tramp-completion-file-name-regexp' for separate remoting.
 XEmacs uses a separate filename syntax for Tramp and EFS.
-See `tramp-file-name-structure-separate' for more explanations.")
+See `tramp-file-name-structure' for more explanations.")
+
+(defconst tramp-completion-file-name-regexp-url (if (memq system-type (quote (cygwin windows-nt))) "^\\([a-zA-Z]:\\)?/$\\|^\\([a-zA-Z]:\\)?/[^/:]+\\(:\\(/\\(/[^/]*\\)?\\)?\\)?$" "^/$\\|^/[^/:]+\\(:\\(/\\(/[^/]*\\)?\\)?\\)?$") "\
+Value for `tramp-completion-file-name-regexp' for URL-like remoting.
+See `tramp-file-name-structure' for more explanations.")
 
-(defvar tramp-completion-file-name-regexp (if tramp-unified-filenames tramp-completion-file-name-regexp-unified tramp-completion-file-name-regexp-separate) "\
+(defconst tramp-completion-file-name-regexp (cond ((equal tramp-syntax (quote ftp)) tramp-completion-file-name-regexp-unified) ((equal tramp-syntax (quote sep)) tramp-completion-file-name-regexp-separate) ((equal tramp-syntax (quote url)) tramp-completion-file-name-regexp-url) (t (error "Wrong `tramp-syntax' defined"))) "\
 *Regular expression matching file names handled by tramp completion.
 This regexp should match partial tramp file names only.
 
@@ -27930,8 +28216,6 @@ updated after changing this variable.
 
 Also see `tramp-file-name-structure'.")
 
-(custom-autoload (quote tramp-completion-file-name-regexp) "tramp" t)
-
 (defconst tramp-completion-file-name-handler-alist (quote ((file-name-all-completions . tramp-completion-handle-file-name-all-completions) (file-name-completion . tramp-completion-handle-file-name-completion))) "\
 Alist of completion handler functions.
 Used for file names matching `tramp-file-name-regexp'. Operations not
@@ -27959,11 +28243,11 @@ Invoke tramp file name completion handler.
 Falls back to normal file name handler if no tramp file name handler exists." (let ((fn (assoc operation tramp-completion-file-name-handler-alist))) (if fn (save-match-data (apply (cdr fn) args)) (tramp-completion-run-real-handler operation args))))
 
 (defsubst tramp-register-file-name-handler nil "\
-Add tramp file name handler to `file-name-handler-alist'." (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
+Add tramp file name handler to `file-name-handler-alist'." (let ((a1 (rassq (quote tramp-file-name-handler) file-name-handler-alist))) (setq file-name-handler-alist (delete a1 file-name-handler-alist))) (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
+(tramp-register-file-name-handler)
 
 (defsubst tramp-register-completion-file-name-handler nil "\
-Add tramp completion file name handler to `file-name-handler-alist'." (when (or (not (boundp (quote partial-completion-mode))) (symbol-value (quote partial-completion-mode)) (featurep (quote ido))) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t)) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
-(tramp-register-file-name-handler)
+Add tramp completion file name handler to `file-name-handler-alist'." (let ((a1 (rassq (quote tramp-completion-file-name-handler) file-name-handler-alist))) (setq file-name-handler-alist (delete a1 file-name-handler-alist))) (when (or (not (boundp (quote partial-completion-mode))) (symbol-value (quote partial-completion-mode)) (featurep (quote ido))) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t)) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
 (add-hook
  'after-init-hook
  '(lambda () (tramp-register-completion-file-name-handler)))
@@ -27974,12 +28258,12 @@ Not documented
 \(fn)" nil nil)
 
 (autoload (quote tramp-completion-handle-file-name-all-completions) "tramp" "\
-Like `file-name-all-completions' for partial tramp files.
+Like `file-name-all-completions' for partial Tramp files.
 
 \(fn FILENAME DIRECTORY)" nil nil)
 
 (autoload (quote tramp-completion-handle-file-name-completion) "tramp" "\
-Like `file-name-completion' for tramp files.
+Like `file-name-completion' for Tramp files.
 
 \(fn FILENAME DIRECTORY &optional PREDICATE)" nil nil)
 
@@ -27991,7 +28275,7 @@ Discard Tramp from loading remote files.
 ;;;***
 \f
 ;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el"
-;;;;;;  (17842 55218))
+;;;;;;  (18104 24760))
 ;;; Generated autoloads from net/tramp-ftp.el
 
 (autoload (quote tramp-ftp-enable-ange-ftp) "tramp-ftp" "\
@@ -28001,8 +28285,8 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (18006
-;;;;;;  55796))
+;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (18104
+;;;;;;  24740))
 ;;; Generated autoloads from tutorial.el
 
 (autoload (quote help-with-tutorial) "tutorial" "\
@@ -28027,7 +28311,7 @@ resumed later.
 ;;;***
 \f
 ;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column"
-;;;;;;  "textmodes/two-column.el" (17842 58276))
+;;;;;;  "textmodes/two-column.el" (18104 24773))
 ;;; Generated autoloads from textmodes/two-column.el
  (autoload '2C-command "two-column" () t 'keymap)
  (global-set-key "\C-x6" '2C-command)
@@ -28078,7 +28362,7 @@ First column's text    sSs  Second column's text
 ;;;;;;  type-break type-break-mode type-break-keystroke-threshold
 ;;;;;;  type-break-good-break-interval type-break-good-rest-interval
 ;;;;;;  type-break-interval type-break-mode) "type-break" "type-break.el"
-;;;;;;  (17908 29123))
+;;;;;;  (18104 24740))
 ;;; Generated autoloads from type-break.el
 
 (defvar type-break-mode nil "\
@@ -28261,7 +28545,7 @@ FRAC should be the inverse of the fractional value; for example, a value of
 ;;;***
 \f
 ;;;### (autoloads (ununderline-region underline-region) "underline"
-;;;;;;  "textmodes/underline.el" (17842 58276))
+;;;;;;  "textmodes/underline.el" (18104 24773))
 ;;; Generated autoloads from textmodes/underline.el
 
 (autoload (quote underline-region) "underline" "\
@@ -28282,7 +28566,7 @@ which specify the range to operate on.
 ;;;***
 \f
 ;;;### (autoloads (unforward-rmail-message undigestify-rmail-message)
-;;;;;;  "undigest" "mail/undigest.el" (17842 55035))
+;;;;;;  "undigest" "mail/undigest.el" (18104 24758))
 ;;; Generated autoloads from mail/undigest.el
 
 (autoload (quote undigestify-rmail-message) "undigest" "\
@@ -28301,7 +28585,7 @@ following the containing message.
 ;;;***
 \f
 ;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el"
-;;;;;;  (17842 55035))
+;;;;;;  (18104 24758))
 ;;; Generated autoloads from mail/unrmail.el
 
 (autoload (quote batch-unrmail) "unrmail" "\
@@ -28320,8 +28604,8 @@ Convert Rmail file FILE to system inbox format file TO-FILE.
 
 ;;;***
 \f
-;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (17842
-;;;;;;  54152))
+;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (18104
+;;;;;;  24748))
 ;;; Generated autoloads from emacs-lisp/unsafep.el
 
 (autoload (quote unsafep) "unsafep" "\
@@ -28334,7 +28618,7 @@ of symbols with local bindings.
 ;;;***
 \f
 ;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url"
-;;;;;;  "url/url.el" (17842 56569))
+;;;;;;  "url/url.el" (18104 24773))
 ;;; Generated autoloads from url/url.el
 
 (autoload (quote url-retrieve) "url" "\
@@ -28374,7 +28658,7 @@ no further processing).  URL is either a string or a parsed URL.
 ;;;***
 \f
 ;;;### (autoloads (url-register-auth-scheme url-get-authentication)
-;;;;;;  "url-auth" "url/url-auth.el" (17854 10173))
+;;;;;;  "url-auth" "url/url-auth.el" (18104 24773))
 ;;; Generated autoloads from url/url-auth.el
 
 (autoload (quote url-get-authentication) "url-auth" "\
@@ -28416,8 +28700,8 @@ RATING   a rating between 1 and 10 of the strength of the authentication.
 ;;;***
 \f
 ;;;### (autoloads (url-cache-expired url-cache-extract url-is-cached
-;;;;;;  url-store-in-cache) "url-cache" "url/url-cache.el" (17842
-;;;;;;  56569))
+;;;;;;  url-store-in-cache) "url-cache" "url/url-cache.el" (18104
+;;;;;;  24773))
 ;;; Generated autoloads from url/url-cache.el
 
 (autoload (quote url-store-in-cache) "url-cache" "\
@@ -28442,7 +28726,7 @@ Return t iff a cached file has expired.
 
 ;;;***
 \f
-;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (17842 56569))
+;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (18104 24773))
 ;;; Generated autoloads from url/url-cid.el
 
 (autoload (quote url-cid) "url-cid" "\
@@ -28453,7 +28737,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (url-dav-vc-registered url-dav-supported-p) "url-dav"
-;;;;;;  "url/url-dav.el" (17842 56569))
+;;;;;;  "url/url-dav.el" (18104 24773))
 ;;; Generated autoloads from url/url-dav.el
 
 (autoload (quote url-dav-supported-p) "url-dav" "\
@@ -28468,8 +28752,8 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads (url-file) "url-file" "url/url-file.el" (17842
-;;;;;;  56569))
+;;;### (autoloads (url-file) "url-file" "url/url-file.el" (18104
+;;;;;;  24773))
 ;;; Generated autoloads from url/url-file.el
 
 (autoload (quote url-file) "url-file" "\
@@ -28480,7 +28764,7 @@ Handle file: and ftp: URLs.
 ;;;***
 \f
 ;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw"
-;;;;;;  "url/url-gw.el" (17842 56569))
+;;;;;;  "url/url-gw.el" (18104 24773))
 ;;; Generated autoloads from url/url-gw.el
 
 (autoload (quote url-gateway-nslookup-host) "url-gw" "\
@@ -28499,8 +28783,8 @@ Might do a non-blocking connection; use `process-status' to check.
 ;;;***
 \f
 ;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file
-;;;;;;  url-handler-mode) "url-handlers" "url/url-handlers.el" (17842
-;;;;;;  56569))
+;;;;;;  url-handler-mode) "url-handlers" "url/url-handlers.el" (18104
+;;;;;;  24773))
 ;;; Generated autoloads from url/url-handlers.el
 
 (defvar url-handler-mode nil "\
@@ -28544,7 +28828,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p
-;;;;;;  url-http) "url-http" "url/url-http.el" (17952 11683))
+;;;;;;  url-http) "url-http" "url/url-http.el" (18104 24773))
 ;;; Generated autoloads from url/url-http.el
 
 (autoload (quote url-http) "url-http" "\
@@ -28609,7 +28893,7 @@ HTTPS retrievals are asynchronous.")
 
 ;;;***
 \f
-;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (17842 56569))
+;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (18104 24773))
 ;;; Generated autoloads from url/url-irc.el
 
 (autoload (quote url-irc) "url-irc" "\
@@ -28619,8 +28903,8 @@ Not documented
 
 ;;;***
 \f
-;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (17842
-;;;;;;  56569))
+;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (18104
+;;;;;;  24773))
 ;;; Generated autoloads from url/url-ldap.el
 
 (autoload (quote url-ldap) "url-ldap" "\
@@ -28634,7 +28918,7 @@ URL can be a URL string, or a URL vector of the type returned by
 ;;;***
 \f
 ;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el"
-;;;;;;  (18012 18089))
+;;;;;;  (18104 24773))
 ;;; Generated autoloads from url/url-mailto.el
 
 (autoload (quote url-mail) "url-mailto" "\
@@ -28650,7 +28934,7 @@ Handle the mailto: URL syntax.
 ;;;***
 \f
 ;;;### (autoloads (url-data url-generic-emulator-loader url-info
-;;;;;;  url-man) "url-misc" "url/url-misc.el" (17842 56569))
+;;;;;;  url-man) "url-misc" "url/url-misc.el" (18104 24773))
 ;;; Generated autoloads from url/url-misc.el
 
 (autoload (quote url-man) "url-misc" "\
@@ -28682,7 +28966,7 @@ Fetch a data URL (RFC 2397).
 ;;;***
 \f
 ;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el"
-;;;;;;  (17842 56569))
+;;;;;;  (18104 24773))
 ;;; Generated autoloads from url/url-news.el
 
 (autoload (quote url-news) "url-news" "\
@@ -28699,7 +28983,7 @@ Not documented
 \f
 ;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable
 ;;;;;;  dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el"
-;;;;;;  (17842 56569))
+;;;;;;  (18104 24773))
 ;;; Generated autoloads from url/url-ns.el
 
 (autoload (quote isPlainHostName) "url-ns" "\
@@ -28740,7 +29024,7 @@ Not documented
 ;;;***
 \f
 ;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse"
-;;;;;;  "url/url-parse.el" (17954 22157))
+;;;;;;  "url/url-parse.el" (18104 24773))
 ;;; Generated autoloads from url/url-parse.el
 
 (autoload (quote url-recreate-url) "url-parse" "\
@@ -28758,7 +29042,7 @@ Format is:
 ;;;***
 \f
 ;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el"
-;;;;;;  (17842 56569))
+;;;;;;  (18104 24773))
 ;;; Generated autoloads from url/url-privacy.el
 
 (autoload (quote url-setup-privacy-info) "url-privacy" "\
@@ -28774,7 +29058,7 @@ Setup variables that expose info about you and your system.
 ;;;;;;  url-strip-leading-spaces url-eat-trailing-space url-get-normalized-date
 ;;;;;;  url-lazy-message url-normalize-url url-insert-entities-in-string
 ;;;;;;  url-parse-args url-debug url-debug) "url-util" "url/url-util.el"
-;;;;;;  (17842 56569))
+;;;;;;  (18104 24773))
 ;;; Generated autoloads from url/url-util.el
 
 (defvar url-debug nil "\
@@ -28903,7 +29187,7 @@ This uses `url-current-object', set locally to the buffer.
 ;;;***
 \f
 ;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock)
-;;;;;;  "userlock" "userlock.el" (17842 58278))
+;;;;;;  "userlock" "userlock.el" (18104 24740))
 ;;; Generated autoloads from userlock.el
 
 (autoload (quote ask-user-about-lock) "userlock" "\
@@ -28931,7 +29215,7 @@ The buffer in question is current when this function is called.
 
 ;;;***
 \f
-;;;### (autoloads nil "utf-7" "international/utf-7.el" (17842 54888))
+;;;### (autoloads nil "utf-7" "international/utf-7.el" (18104 24757))
 ;;; Generated autoloads from international/utf-7.el
 (autoload-coding-system 'utf-7 '(require 'utf-7))
 
@@ -28939,7 +29223,7 @@ The buffer in question is current when this function is called.
 \f
 ;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal
 ;;;;;;  uudecode-decode-region-external) "uudecode" "gnus/uudecode.el"
-;;;;;;  (17855 50203))
+;;;;;;  (18104 24755))
 ;;; Generated autoloads from gnus/uudecode.el
 
 (autoload (quote uudecode-decode-region-external) "uudecode" "\
@@ -28964,12 +29248,12 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
 ;;;***
 \f
 ;;;### (autoloads (vc-annotate vc-update-change-log vc-rename-file
-;;;;;;  vc-transfer-file vc-switch-backend vc-cancel-version vc-update
-;;;;;;  vc-revert-buffer vc-print-log vc-retrieve-snapshot vc-create-snapshot
-;;;;;;  vc-directory vc-merge vc-insert-headers vc-version-other-window
+;;;;;;  vc-transfer-file vc-switch-backend vc-rollback vc-update
+;;;;;;  vc-revert vc-print-log vc-retrieve-snapshot vc-create-snapshot
+;;;;;;  vc-directory vc-merge vc-insert-headers vc-revision-other-window
 ;;;;;;  vc-diff vc-register vc-next-action vc-do-command edit-vc-file
 ;;;;;;  with-vc-file vc-branch-part vc-trunk-p vc-before-checkin-hook
-;;;;;;  vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17992 30877))
+;;;;;;  vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (18104 24741))
 ;;; Generated autoloads from vc.el
 
 (defvar vc-checkout-hook nil "\
@@ -29025,12 +29309,12 @@ already current, set it up properly and erase it.  The command is
 considered successful if its exit status does not exceed OKSTATUS (if
 OKSTATUS is nil, that means to ignore error status, if it is `async', that
 means not to wait for termination of the subprocess; if it is t it means to
-ignore all execution errors).  FILE is the
-name of the working file (may also be nil, to execute commands that
-don't expect a file name).  If an optional list of FLAGS is present,
+ignore all execution errors).  FILE-OR-LIST is the name of a working file;
+it may be a list of files or be nil (to execute commands that don't expect 
+a file name or set of files).  If an optional list of FLAGS is present,
 that is inserted into the command line before the filename.
 
-\(fn BUFFER OKSTATUS COMMAND FILE &rest FLAGS)" nil nil)
+\(fn BUFFER OKSTATUS COMMAND FILE-OR-LIST &rest FLAGS)" nil nil)
 
 (autoload (quote vc-next-action) "vc" "\
 Do the next logical version control operation on the current file.
@@ -29100,7 +29384,7 @@ saving the buffer.
 
 \(fn HISTORIC &optional NOT-URGENT)" t nil)
 
-(autoload (quote vc-version-other-window) "vc" "\
+(autoload (quote vc-revision-other-window) "vc" "\
 Visit version REV of the current file in another window.
 If the current file is named `F', the version is named `F.~REV~'.
 If `F.~REV~' already exists, use it instead of checking it out again.
@@ -29161,7 +29445,7 @@ If FOCUS-REV is non-nil, leave the point at that revision.
 
 \(fn &optional FOCUS-REV)" t nil)
 
-(autoload (quote vc-revert-buffer) "vc" "\
+(autoload (quote vc-revert) "vc" "\
 Revert the current buffer's file to the version it was based on.
 This asks for confirmation if the buffer contents are not identical
 to that version.  This function does not automatically pick up newer
@@ -29178,11 +29462,10 @@ the current branch are merged into the working file.
 
 \(fn)" t nil)
 
-(autoload (quote vc-cancel-version) "vc" "\
+(autoload (quote vc-rollback) "vc" "\
 Get rid of most recently checked in version of this file.
-A prefix argument NOREVERT means do not revert the buffer afterwards.
 
-\(fn NOREVERT)" t nil)
+\(fn)" t nil)
 
 (autoload (quote vc-switch-backend) "vc" "\
 Make BACKEND the current version control system for FILE.
@@ -29257,7 +29540,7 @@ colors. `vc-annotate-background' specifies the background color.
 
 ;;;***
 \f
-;;;### (autoloads nil "vc-arch" "vc-arch.el" (17930 34221))
+;;;### (autoloads nil "vc-arch" "vc-arch.el" (18104 24740))
 ;;; Generated autoloads from vc-arch.el
  (defun vc-arch-registered (file)
   (if (vc-find-root file "{arch}/=tagging-method")
@@ -29267,7 +29550,19 @@ colors. `vc-annotate-background' specifies the background color.
 
 ;;;***
 \f
-;;;### (autoloads nil "vc-cvs" "vc-cvs.el" (17842 58278))
+;;;### (autoloads nil "vc-bzr" "vc-bzr.el" (18104 24740))
+;;; Generated autoloads from vc-bzr.el
+
+(defconst vc-bzr-admin-dirname ".bzr")
+ (defun vc-bzr-registered (file)
+  (if (vc-find-root file vc-bzr-admin-dirname)
+      (progn
+        (load "vc-bzr")
+        (vc-bzr-registered file))))
+
+;;;***
+\f
+;;;### (autoloads nil "vc-cvs" "vc-cvs.el" (18104 24740))
 ;;; Generated autoloads from vc-cvs.el
  (defun vc-cvs-registered (f)
   (when (file-readable-p (expand-file-name
@@ -29277,7 +29572,29 @@ colors. `vc-annotate-background' specifies the background color.
 
 ;;;***
 \f
-;;;### (autoloads nil "vc-mcvs" "vc-mcvs.el" (17842 58278))
+;;;### (autoloads nil "vc-git" "vc-git.el" (18104 24740))
+;;; Generated autoloads from vc-git.el
+ (defun vc-git-registered (file)
+  "Return non-nil if FILE is registered with git."
+  (if (vc-find-root file ".git")       ; short cut
+      (progn
+        (load "vc-git")
+        (vc-git-registered file))))
+
+;;;***
+\f
+;;;### (autoloads nil "vc-hg" "vc-hg.el" (18104 24740))
+;;; Generated autoloads from vc-hg.el
+ (defun vc-hg-registered (file)
+  "Return non-nil if FILE is registered with hg."
+  (if (vc-find-root file ".hg")       ; short cut
+      (progn
+        (load "vc-hg")
+        (vc-hg-registered file))))
+
+;;;***
+\f
+;;;### (autoloads nil "vc-mcvs" "vc-mcvs.el" (18104 24741))
 ;;; Generated autoloads from vc-mcvs.el
  (defun vc-mcvs-registered (file)
   (if (vc-find-root file "MCVS/CVS")
@@ -29288,7 +29605,7 @@ colors. `vc-annotate-background' specifies the background color.
 ;;;***
 \f
 ;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el"
-;;;;;;  (17925 15266))
+;;;;;;  (18104 24741))
 ;;; Generated autoloads from vc-rcs.el
 
 (defvar vc-rcs-master-templates (quote ("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
@@ -29301,7 +29618,7 @@ For a description of possible values, see `vc-check-master-templates'.")
 ;;;***
 \f
 ;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc-sccs.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24741))
 ;;; Generated autoloads from vc-sccs.el
 
 (defvar vc-sccs-master-templates (quote ("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\
@@ -29318,7 +29635,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
 
 ;;;***
 \f
-;;;### (autoloads nil "vc-svn" "vc-svn.el" (17881 64914))
+;;;### (autoloads nil "vc-svn" "vc-svn.el" (18104 24741))
 ;;; Generated autoloads from vc-svn.el
  (defun vc-svn-registered (f)
   (let ((admin-dir (cond ((and (eq system-type 'windows-nt)
@@ -29333,10 +29650,68 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
 
 (add-to-list (quote completion-ignored-extensions) ".svn/")
 
+;;;***
+\f
+;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el"
+;;;;;;  (18104 24769))
+;;; Generated autoloads from progmodes/vera-mode.el
+ (add-to-list 'auto-mode-alist '("\\.vr[hi]?\\'" . vera-mode))
+
+(autoload (quote vera-mode) "vera-mode" "\
+Major mode for editing Vera code.
+
+Usage:
+------
+
+  INDENTATION:  Typing `TAB' at the beginning of a line indents the line.
+    The amount of indentation is specified by option `vera-basic-offset'.
+    Indentation can be done for an entire region (`M-C-\\') or buffer (menu).
+    `TAB' always indents the line if option `vera-intelligent-tab' is nil.
+
+  WORD/COMMAND COMPLETION:  Typing `TAB' after a (not completed) word looks
+    for a word in the buffer or a Vera keyword that starts alike, inserts it
+    and adjusts case.  Re-typing `TAB' toggles through alternative word
+    completions.
+
+    Typing `TAB' after a non-word character inserts a tabulator stop (if not
+    at the beginning of a line).  `M-TAB' always inserts a tabulator stop.
+
+  COMMENTS:  `C-c C-c' comments out a region if not commented out, and
+    uncomments a region if already commented out.
+
+  HIGHLIGHTING (fontification):  Vera keywords, predefined types and
+    constants, function names, declaration names, directives, as well as
+    comments and strings are highlighted using different colors.
+
+  VERA VERSION:  OpenVera 1.4 and Vera version 6.2.8.
+
+
+Maintenance:
+------------
+
+To submit a bug report, use the corresponding menu entry within Vera Mode.
+Add a description of the problem and include a reproducible test case.
+
+Feel free to send questions and enhancement requests to <reto@gnu.org>.
+
+Official distribution is at
+<http://www.iis.ee.ethz.ch/~zimmi/emacs/vera-mode.html>.
+
+
+                                                  The Vera Mode Maintainer
+                                               Reto Zimmermann <reto@gnu.org>
+
+Key bindings:
+-------------
+
+\\{vera-mode-map}
+
+\(fn)" t nil)
+
 ;;;***
 \f
 ;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el"
-;;;;;;  (17962 27361))
+;;;;;;  (18104 24769))
 ;;; Generated autoloads from progmodes/vhdl-mode.el
 
 (autoload (quote vhdl-mode) "vhdl-mode" "\
@@ -29877,7 +30252,7 @@ Key bindings:
 
 ;;;***
 \f
-;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (17788 40208))
+;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (17821 5856))
 ;;; Generated autoloads from emulation/vi.el
 
 (autoload (quote vi-mode) "vi" "\
@@ -29932,7 +30307,7 @@ Syntax table and abbrevs while in vi mode remain as they were in Emacs.
 ;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion
 ;;;;;;  viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer
 ;;;;;;  viet-decode-viqr-region viet-encode-viscii-char) "viet-util"
-;;;;;;  "language/viet-util.el" (17842 58278))
+;;;;;;  "language/viet-util.el" (18104 24758))
 ;;; Generated autoloads from language/viet-util.el
 
 (autoload (quote viet-encode-viscii-char) "viet-util" "\
@@ -29978,8 +30353,8 @@ Not documented
 \f
 ;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame
 ;;;;;;  view-buffer-other-window view-buffer view-file-other-frame
-;;;;;;  view-file-other-window view-file) "view" "view.el" (18006
-;;;;;;  55796))
+;;;;;;  view-file-other-window view-file) "view" "view.el" (18104
+;;;;;;  24741))
 ;;; Generated autoloads from view.el
 
 (defvar view-mode nil "\
@@ -30188,8 +30563,8 @@ Exit View mode and make the current buffer editable.
 
 ;;;***
 \f
-;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (17842
-;;;;;;  54264))
+;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (18104
+;;;;;;  24748))
 ;;; Generated autoloads from emulation/vip.el
 
 (autoload (quote vip-setup) "vip" "\
@@ -30205,7 +30580,7 @@ Turn on VIP emulation of VI.
 ;;;***
 \f
 ;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el"
-;;;;;;  (17921 23052))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emulation/viper.el
 
 (autoload (quote toggle-viper-mode) "viper" "\
@@ -30222,7 +30597,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
 ;;;***
 \f
 ;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el"
-;;;;;;  (17935 13348))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emacs-lisp/warnings.el
 
 (defvar warning-prefix-function nil "\
@@ -30312,7 +30687,7 @@ this is equivalent to `display-warning', using
 ;;;***
 \f
 ;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24742))
 ;;; Generated autoloads from wdired.el
 
 (autoload (quote wdired-change-to-wdired-mode) "wdired" "\
@@ -30328,7 +30703,7 @@ See `wdired-mode'.
 
 ;;;***
 \f
-;;;### (autoloads (webjump) "webjump" "net/webjump.el" (17842 55218))
+;;;### (autoloads (webjump) "webjump" "net/webjump.el" (18104 24760))
 ;;; Generated autoloads from net/webjump.el
 
 (autoload (quote webjump) "webjump" "\
@@ -30345,7 +30720,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
 ;;;***
 \f
 ;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el"
-;;;;;;  (17842 56332))
+;;;;;;  (18104 24769))
 ;;; Generated autoloads from progmodes/which-func.el
  (put 'which-func-format 'risky-local-variable t)
  (put 'which-func-current 'risky-local-variable t)
@@ -30378,7 +30753,7 @@ and off otherwise.
 ;;;;;;  whitespace-buffer whitespace-toggle-ateol-check whitespace-toggle-spacetab-check
 ;;;;;;  whitespace-toggle-indent-check whitespace-toggle-trailing-check
 ;;;;;;  whitespace-toggle-leading-check) "whitespace" "whitespace.el"
-;;;;;;  (17925 15266))
+;;;;;;  (18104 24742))
 ;;; Generated autoloads from whitespace.el
 
 (autoload (quote whitespace-toggle-leading-check) "whitespace" "\
@@ -30469,7 +30844,7 @@ This is meant to be added buffer-locally to `write-file-functions'.
 ;;;***
 \f
 ;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse
-;;;;;;  widget-browse-at) "wid-browse" "wid-browse.el" (17842 58278))
+;;;;;;  widget-browse-at) "wid-browse" "wid-browse.el" (18104 24742))
 ;;; Generated autoloads from wid-browse.el
 
 (autoload (quote widget-browse-at) "wid-browse" "\
@@ -30496,8 +30871,8 @@ With arg, turn widget mode on if and only if arg is positive.
 ;;;***
 \f
 ;;;### (autoloads (widget-setup widget-insert widget-delete widget-create
-;;;;;;  widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (17952
-;;;;;;  11093))
+;;;;;;  widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (18104
+;;;;;;  24742))
 ;;; Generated autoloads from wid-edit.el
 
 (autoload (quote widgetp) "wid-edit" "\
@@ -30541,8 +30916,8 @@ Setup current buffer so editing string widgets works.
 ;;;***
 \f
 ;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right
-;;;;;;  windmove-up windmove-left) "windmove" "windmove.el" (17842
-;;;;;;  58278))
+;;;;;;  windmove-up windmove-left) "windmove" "windmove.el" (18104
+;;;;;;  24742))
 ;;; Generated autoloads from windmove.el
 
 (autoload (quote windmove-left) "windmove" "\
@@ -30595,7 +30970,7 @@ Default MODIFIER is 'shift.
 ;;;***
 \f
 ;;;### (autoloads (winner-mode winner-mode) "winner" "winner.el"
-;;;;;;  (17842 58278))
+;;;;;;  (18104 24743))
 ;;; Generated autoloads from winner.el
 
 (defvar winner-mode nil "\
@@ -30614,7 +30989,7 @@ With arg, turn Winner mode on if and only if arg is positive.
 ;;;***
 \f
 ;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman"
-;;;;;;  "woman.el" (17949 41467))
+;;;;;;  "woman.el" (18104 24743))
 ;;; Generated autoloads from woman.el
 
 (autoload (quote woman) "woman" "\
@@ -30650,7 +31025,7 @@ decompress the file if appropriate.  See the documentation for the
 ;;;***
 \f
 ;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el"
-;;;;;;  (17842 54264))
+;;;;;;  (18104 24748))
 ;;; Generated autoloads from emulation/ws-mode.el
 
 (autoload (quote wordstar-mode) "ws-mode" "\
@@ -30763,7 +31138,7 @@ The key bindings are:
 ;;;***
 \f
 ;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el"
-;;;;;;  (17916 14776))
+;;;;;;  (18104 24743))
 ;;; Generated autoloads from xml.el
 
 (autoload (quote xml-parse-file) "xml" "\
@@ -30788,8 +31163,8 @@ If PARSE-NS is non-nil, then QNAMES are expanded.
 
 ;;;***
 \f
-;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (18007
-;;;;;;  39657))
+;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (18104
+;;;;;;  24743))
 ;;; Generated autoloads from xt-mouse.el
 
 (defvar xterm-mouse-mode nil "\
@@ -30817,7 +31192,7 @@ down the SHIFT key while pressing the mouse button.
 ;;;***
 \f
 ;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc"
-;;;;;;  "gnus/yenc.el" (17842 54741))
+;;;;;;  "gnus/yenc.el" (18104 24756))
 ;;; Generated autoloads from gnus/yenc.el
 
 (autoload (quote yenc-decode-region) "yenc" "\
@@ -30833,7 +31208,7 @@ Extract file name from an yenc header.
 ;;;***
 \f
 ;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism
-;;;;;;  yow) "yow" "play/yow.el" (17842 55395))
+;;;;;;  yow) "yow" "play/yow.el" (18104 24762))
 ;;; Generated autoloads from play/yow.el
 
 (autoload (quote yow) "yow" "\
@@ -30859,7 +31234,7 @@ Zippy goes to the analyst.
 
 ;;;***
 \f
-;;;### (autoloads (zone) "zone" "play/zone.el" (17941 38806))
+;;;### (autoloads (zone) "zone" "play/zone.el" (18104 24762))
 ;;; Generated autoloads from play/zone.el
 
 (autoload (quote zone) "zone" "\
@@ -30893,32 +31268,32 @@ Zone out, completely.
 ;;;;;;  "ediff-init.el" "ediff-merg.el" "ediff-ptch.el" "ediff-vers.el"
 ;;;;;;  "ediff-wind.el" "electric.el" "emacs-lisp/assoc.el" "emacs-lisp/authors.el"
 ;;;;;;  "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" "emacs-lisp/byte-run.el"
-;;;;;;  "emacs-lisp/cl-compat.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-macs.el"
-;;;;;;  "emacs-lisp/cl-seq.el" "emacs-lisp/cl-specs.el" "emacs-lisp/cust-print.el"
-;;;;;;  "emacs-lisp/find-gc.el" "emacs-lisp/float-sup.el" "emacs-lisp/gulp.el"
-;;;;;;  "emacs-lisp/levents.el" "emacs-lisp/lisp-mnt.el" "emacs-lisp/lisp-mode.el"
-;;;;;;  "emacs-lisp/lisp.el" "emacs-lisp/lmenu.el" "emacs-lisp/lselect.el"
-;;;;;;  "emacs-lisp/lucid.el" "emacs-lisp/map-ynp.el" "emacs-lisp/regi.el"
-;;;;;;  "emacs-lisp/sregex.el" "emacs-lisp/syntax.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-mapper.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" "erc/erc-backend.el" "erc/erc-goodies.el"
-;;;;;;  "erc/erc-ibuffer.el" "erc/erc-lang.el" "erc/erc-nicklist.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-maint.el" "eshell/esh-module.el" "eshell/esh-opt.el"
-;;;;;;  "eshell/esh-proc.el" "eshell/esh-util.el" "eshell/esh-var.el"
-;;;;;;  "ezimage.el" "faces.el" "files.el" "finder-inf.el" "foldout.el"
-;;;;;;  "font-core.el" "font-lock.el" "format.el" "forms-d2.el" "forms-pass.el"
-;;;;;;  "frame.el" "fringe.el" "generic-x.el" "gnus/compface.el"
+;;;;;;  "emacs-lisp/cl-compat.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/find-gc.el" "emacs-lisp/float-sup.el"
+;;;;;;  "emacs-lisp/gulp.el" "emacs-lisp/levents.el" "emacs-lisp/lisp-mnt.el"
+;;;;;;  "emacs-lisp/lisp-mode.el" "emacs-lisp/lisp.el" "emacs-lisp/lmenu.el"
+;;;;;;  "emacs-lisp/lselect.el" "emacs-lisp/lucid.el" "emacs-lisp/map-ynp.el"
+;;;;;;  "emacs-lisp/regi.el" "emacs-lisp/sregex.el" "emacs-lisp/syntax.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-mapper.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" "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-maint.el" "eshell/esh-module.el"
+;;;;;;  "eshell/esh-opt.el" "eshell/esh-proc.el" "eshell/esh-util.el"
+;;;;;;  "eshell/esh-var.el" "ezimage.el" "faces.el" "files.el" "finder-inf.el"
+;;;;;;  "foldout.el" "font-core.el" "font-lock.el" "format.el" "forms-d2.el"
+;;;;;;  "forms-pass.el" "frame.el" "fringe.el" "generic-x.el" "gnus/compface.el"
 ;;;;;;  "gnus/dig.el" "gnus/dns.el" "gnus/format-spec.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"
@@ -30966,17 +31341,17 @@ Zone out, completely.
 ;;;;;;  "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-letter.el" "mh-e/mh-limit.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"
 ;;;;;;  "misc.el" "mouse-copy.el" "mouse-drag.el" "mouse.el" "net/eudc-vars.el"
 ;;;;;;  "net/eudcb-bbdb.el" "net/eudcb-ldap.el" "net/eudcb-mab.el"
-;;;;;;  "net/eudcb-ph.el" "net/ldap.el" "net/netrc.el" "net/tls.el"
-;;;;;;  "net/tramp-smb.el" "net/tramp-util.el" "net/tramp-uu.el"
-;;;;;;  "net/tramp-vc.el" "net/trampver.el" "patcomp.el" "paths.el"
-;;;;;;  "pcvs-info.el" "pcvs-parse.el" "pcvs-util.el" "pgg-def.el"
-;;;;;;  "pgg-parse.el" "pgg-pgp.el" "pgg-pgp5.el" "play/gamegrid.el"
+;;;;;;  "net/eudcb-ph.el" "net/ldap.el" "net/netrc.el" "net/socks.el"
+;;;;;;  "net/tls.el" "net/tramp-cache.el" "net/tramp-fish.el" "net/tramp-gw.el"
+;;;;;;  "net/tramp-smb.el" "net/tramp-uu.el" "net/trampver.el" "patcomp.el"
+;;;;;;  "paths.el" "pcvs-info.el" "pcvs-parse.el" "pcvs-util.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" "progmodes/cc-defs.el" "progmodes/cc-fonts.el"
@@ -30985,21 +31360,21 @@ Zone out, completely.
 ;;;;;;  "progmodes/ebnf-iso.el" "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"
-;;;;;;  "register.el" "replace.el" "rfn-eshadow.el" "s-region.el"
-;;;;;;  "saveplace.el" "sb-image.el" "scroll-bar.el" "select.el"
-;;;;;;  "soundex.el" "startup.el" "subdirs.el" "tempo.el" "textmodes/bib-mode.el"
-;;;;;;  "textmodes/makeinfo.el" "textmodes/page-ext.el" "textmodes/page.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" "url/vc-dav.el" "vc-hooks.el" "vcursor.el"
-;;;;;;  "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el"
-;;;;;;  "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el"
-;;;;;;  "x-dnd.el") (18016 62249 573562))
+;;;;;;  "ps-mule.el" "register.el" "replace.el" "rfn-eshadow.el"
+;;;;;;  "s-region.el" "saveplace.el" "sb-image.el" "scroll-bar.el"
+;;;;;;  "select.el" "soundex.el" "startup.el" "subdirs.el" "tempo.el"
+;;;;;;  "termdev.el" "textmodes/bib-mode.el" "textmodes/makeinfo.el"
+;;;;;;  "textmodes/page-ext.el" "textmodes/page.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" "url/vc-dav.el"
+;;;;;;  "vc-hooks.el" "vcursor.el" "version.el" "vms-patch.el" "vmsproc.el"
+;;;;;;  "vt-control.el" "vt100-led.el" "w32-fns.el" "w32-vars.el"
+;;;;;;  "widget.el" "window.el" "x-dnd.el") (18104 28510 272741))
 
 ;;;***
 \f
index 7c144bf83158bdf524313c429b986f81094786f0..d015f6a1c6dff5f7411f3cbcc013fc2cb4f45028 100644 (file)
 (load "widget")
 (load "custom")
 (load "emacs-lisp/map-ynp")
-(load "env")
 (load "cus-start")
 (load "international/mule")
 (load "international/mule-conf.el") ;Don't get confused if someone compiled this by mistake.
+(load "env")
 (load "format")
 (load "bindings")
 (setq load-source-file-function 'load-with-code-conversion)
@@ -72,6 +72,9 @@
 (load "cus-face")
 (load "faces")  ; after here, `defface' may be used.
 
+(load "button")
+(load "startup")
+
 (message "Lists of integers (garbage collection statistics) are normal output")
 (message "while building Emacs; they do not indicate a problem.")
 (message "%s" (garbage-collect))
 (message "%s" (garbage-collect))
 (load "menu-bar")
 (load "paths.el")  ;Don't get confused if someone compiled paths by mistake.
-(load "startup")
 (load "emacs-lisp/lisp")
 (load "textmodes/page")
 (load "register")
       (load "mwheel")
       (load "tool-bar")))
 (if (featurep 'x)
-    (load "x-dnd"))
+    (progn
+      (load "x-dnd")
+      (load "term/x-win")))
+      
 (message "%s" (garbage-collect))
 
 (if (eq system-type 'vax-vms)
       (load "vms-patch")))
 (if (eq system-type 'windows-nt)
     (progn
+      (load "international/ccl")
+      (load "international/code-pages")
+      (load "term/w32-win")
       (load "ls-lisp")
       (load "disp-table") ; needed to setup ibm-pc char set, see internal.el
       (load "dos-w32")
 (if (eq system-type 'macos)
     (progn
       (load "ls-lisp")))
+(if (featurep 'mac-carbon)
+    (progn
+      (load "term/mac-win")))
 (if (fboundp 'atan)    ; preload some constants and
     (progn             ; floating pt. functions if we have float support.
       (load "emacs-lisp/float-sup")))
index 95060d36197abe77fc3bc4c1f94da1b35a079ded..bc2dce954dabe471a37b9ad33be39814215afd6f 100644 (file)
@@ -406,14 +406,10 @@ there is no file name on the current line, the return value is
 meaningless.  You can check whether the current line contains a file
 listed by the locate program, using the function
 `locate-main-listing-line-p'."
-  (save-excursion
-    (end-of-line)
-    (let ((eol (point)))
-      (beginning-of-line)
-
-      ;; Assumes names end at the end of the line
-      (forward-char locate-filename-indentation)
-      (list (point) eol))))
+  (list (+ locate-filename-indentation
+           (line-beginning-position))
+        ;; Assume names end at the end of the line.
+        (line-end-position)))
 
 ;; From SQL-mode
 (defun locate-current-line-number ()
index c8ee5db812b0def7e70bb98609ccfe002b035390..5c2cf989f625b3cd0485f6c3760eec15f992f7d5 100644 (file)
@@ -590,25 +590,23 @@ The return value looks like this:
   (LOGBUFFER (ENTRYSTART . ENTRYEND) ...)
 where LOGBUFFER is the name of the ChangeLog buffer, and each
 \(ENTRYSTART . ENTRYEND\) pair is a buffer region."
-  (save-excursion
-    (let ((changelog-file-name
-          (let ((default-directory
-                  (file-name-directory (expand-file-name file)))
-                (visiting-buffer (find-buffer-visiting file)))
-            ;; If there is a buffer visiting FILE, and it has a local
-            ;; value for `change-log-default-name', use that.
-            (if (and visiting-buffer
-                     (local-variable-p 'change-log-default-name
-                                       visiting-buffer))
-                (save-excursion
-                  (set-buffer visiting-buffer)
-                  change-log-default-name)
-              ;; `find-change-log' uses `change-log-default-name' if set
-              ;; and sets it before exiting, so we need to work around
-              ;; that memoizing which is undesired here
-              (setq change-log-default-name nil)
-              (find-change-log)))))
-      (set-buffer (find-file-noselect changelog-file-name))
+  (let ((changelog-file-name
+         (let ((default-directory
+                 (file-name-directory (expand-file-name file)))
+               (visiting-buffer (find-buffer-visiting file)))
+           ;; If there is a buffer visiting FILE, and it has a local
+           ;; value for `change-log-default-name', use that.
+           (if (and visiting-buffer
+                    (local-variable-p 'change-log-default-name
+                                      visiting-buffer))
+               (with-current-buffer visiting-buffer
+                 change-log-default-name)
+             ;; `find-change-log' uses `change-log-default-name' if set
+             ;; and sets it before exiting, so we need to work around
+             ;; that memoizing which is undesired here
+             (setq change-log-default-name nil)
+             (find-change-log)))))
+    (with-current-buffer (find-file-noselect changelog-file-name)
       (unless (eq major-mode 'change-log-mode) (change-log-mode))
       (goto-char (point-min))
       (if (looking-at "\\s-*\n") (goto-char (match-end 0)))
index 99f7ad7e764f9ecae17092545b01c519749be85c..194afb8d5de2855a466ac8590d3bff2ac54db8cb 100644 (file)
@@ -76,7 +76,7 @@
 
 (eval-when-compile (require 'cl))
 (require 'pcvs-util)
-(autoload 'vc-find-version "vc")
+(autoload 'vc-find-revision "vc")
 (autoload 'vc-version-diff "vc")
 
 (defvar cvs-minor-wrap-function)
 (easy-mmode-defmap log-view-mode-map
   '(("q" . quit-window)
     ("z" . kill-this-buffer)
-    ("m" . set-mark-command)
+    ("m" . log-view-toggle-mark-entry)
     ;; ("e" . cvs-mode-edit-log)
     ("d" . log-view-diff)
     ("a" . log-view-annotate-version)
-    ("f" . log-view-find-version)
+    ("f" . log-view-find-revision)
     ("n" . log-view-msg-next)
     ("p" . log-view-msg-prev)
     ("\t" . log-view-msg-next)
     ;; ["Kill This Buffer"  kill-this-buffer]
     ["Mark Log Entry for Diff"  set-mark-command]
     ["Diff Revisions"  log-view-diff]
-    ["Visit Version"  log-view-find-version]
+    ["Visit Version"  log-view-find-revision]
     ["Annotate Version"  log-view-annotate-version]
     ["Next Log Entry"  log-view-msg-next]
     ["Previous Log Entry"  log-view-msg-prev]
 (put 'log-view-message-face 'face-alias 'log-view-message)
 (defvar log-view-message-face 'log-view-message)
 
-(defconst log-view-file-re
-  (concat "^\\(?:Working file: \\(.+\\)"                ;RCS and CVS.
-          "\\|\\(?:SCCS/s\\.\\|Changes to \\)\\(.+\\):" ;SCCS and Darcs.
-         "\\)\n"))                   ;Include the \n for font-lock reasons.
-
-(defconst log-view-message-re
-  (concat "^\\(?:revision \\([.0-9]+\\)\\(?:\t.*\\)?" ; RCS and CVS.
-          "\\|r\\([0-9]+\\) | .* | .*"                ; Subversion.
-          "\\|D \\([.0-9]+\\) .*"                     ; SCCS.
+(defvar log-view-file-re
+  (concat "^\\(?:Working file: \\(?1:.+\\)"                ;RCS and CVS.
+          ;; Subversion has no such thing??
+          "\\|\\(?:SCCS/s\\.\\|Changes to \\)\\(?1:.+\\):" ;SCCS and Darcs.
+         "\\)\n")                    ;Include the \n for font-lock reasons.
+  "Regexp matching the text identifying the file.
+The match group number 1 should match the file name itself.")
+
+(defvar log-view-message-re
+  (concat "^\\(?:revision \\(?1:[.0-9]+\\)\\(?:\t.*\\)?" ; RCS and CVS.
+          "\\|r\\(?1:[0-9]+\\) | .* | .*"                ; Subversion.
+          "\\|D \\(?1:[.0-9]+\\) .*"                     ; SCCS.
           ;; Darcs doesn't have revision names.  VC-darcs uses patch names
           ;; instead.  Darcs patch names are hashcodes, which do not appear
           ;; in the log output :-(, but darcs accepts any prefix of the log
           ;; First loosely match the date format.
           (concat "\\|[^ \n].*[^0-9\n][0-9][0-9]:[0-9][0-9][^0-9\n].*[^ \n]"
                   ;;Email of user and finally Msg, used as revision name.
-                  "  .*@.*\n\\(?:  \\* \\(.*\\)\\)?")
+                  "  .*@.*\n\\(?:  \\* \\(?1:.*\\)\\)?")
           "\\)$")
-  "Regexp matching the text identifying a revision.")
+  "Regexp matching the text identifying a revision.
+The match group number 1 should match the revision number itself.")
 
 (defvar log-view-font-lock-keywords
   ;; We use `eval' so as to use the buffer-local value of log-view-file-re
   ;; and log-view-message-re, if applicable.
   '((eval . `(,log-view-file-re
-              (1 (if (boundp 'cvs-filename-face) cvs-filename-face) nil t)
-              (2 (if (boundp 'cvs-filename-face) cvs-filename-face) nil t)
+              (1 (if (boundp 'cvs-filename-face) cvs-filename-face))
               (0 log-view-file-face append)))
     (eval . `(,log-view-message-re . log-view-message-face))))
 
   (save-excursion
     (forward-line 1)
     (or (re-search-backward log-view-file-re nil t)
-       (re-search-forward log-view-file-re))
-    (let* ((file (or (match-string 1) (match-string 2)))
+       (re-search-forward log-view-file-re nil t)
+       (error "Unable to determine the current file"))
+    (let* ((file (match-string 1))
           (cvsdir (and (re-search-backward log-view-dir-re nil t)
                        (match-string 1)))
           (pcldir (and (boundp 'cvs-pcl-cvs-dirchange-re)
     (forward-line 1)
     (let ((pt (point)))
       (when (re-search-backward log-view-message-re nil t)
-        (let (rev)
-          ;; Find the subgroup that matched.
-          (dotimes (i (/ (length (match-data 'integers)) 2))
-            (setq rev (or rev (match-string (1+ i)))))
+       (let ((rev (match-string-no-properties 1)))
          (unless (re-search-forward log-view-file-re pt t)
            rev))))))
 
+(defun log-view-toggle-mark-entry ()
+  "Toggle the marked state for the log entry at point.
+Individual log entries can be marked and unmarked. The marked
+entries are denoted by changing their background color.
+`log-view-get-marked' returns the list of tags for the marked
+log entries."
+  (interactive)
+  (save-excursion
+    (forward-line 1)
+    (let ((pt (point)))
+      (when (re-search-backward log-view-message-re nil t)
+       (let ((beg (match-beginning 0))
+             end ov ovlist found tag)
+         (unless (re-search-forward log-view-file-re pt t)
+           ;; Look to see if the current entry is marked.
+           (setq found (get-char-property (point) 'log-view-self))
+           (if found
+               (delete-overlay found)
+             ;; Create an overlay that covers this entry and change
+             ;; it's color.
+             (setq tag (log-view-current-tag (point)))
+             (forward-line 1)
+             (setq end
+                   (if (re-search-forward log-view-message-re nil t)
+                       (match-beginning 0)
+                     (point-max)))
+             (setq ov (make-overlay beg end))
+             (overlay-put ov 'face 'log-view-file)
+             ;; This is used to check if the overlay is present.
+             (overlay-put ov 'log-view-self ov)
+             (overlay-put ov 'log-view-marked tag))))))))
+
+(defun log-view-get-marked ()
+  "Return the list of tags for the marked log entries."
+  (save-excursion
+    (let ((pos (point-min))
+         marked-list ov)
+      (while (setq pos (next-single-property-change pos 'face))
+       (when (setq ov (get-char-property pos 'log-view-self))
+         (push (overlay-get ov 'log-view-marked) marked-list)
+         (setq pos (overlay-end ov))))
+      marked-list)))
+
 (defun log-view-beginning-of-defun ()
   ;; This assumes that a log entry starts with a line matching
   ;; `log-view-message-re'.  Modes that derive from `log-view-mode'
          (cvs-force-command "/F"))
       (funcall f))))
 
-(defun log-view-find-version (pos)
+(defun log-view-find-revision (pos)
   "Visit the version at point."
   (interactive "d")
   (save-excursion
     (goto-char pos)
-    (switch-to-buffer (vc-find-version (log-view-current-file)
+    (switch-to-buffer (vc-find-revision (log-view-current-file)
                                        (log-view-current-tag)))))
 
 (defun log-view-annotate-version (pos)
index df5445da4124d811547e0ed8ec32fbbaf276ddc6..e725a8affb0c6b761c9982b2bb6fc2193f934463 100644 (file)
@@ -73,18 +73,27 @@ Prompts for bug subject.  Leaves you in a mail buffer."
   ;; This strange form ensures that (recent-keys) is the value before
   ;; the bug subject string is read.
   (interactive (reverse (list (recent-keys) (read-string "Bug Subject: "))))
-  ;; If there are four numbers in emacs-version, this is a pretest
-  ;; version.
-  (let* ((pretest-p (string-match "\\..*\\..*\\." emacs-version))
-       (from-buffer (current-buffer))
-       (reporting-address (if pretest-p
-                              report-emacs-bug-pretest-address
-                            report-emacs-bug-address))
-        ;; Put these properties on semantically-void text.
-        (prompt-properties '(field emacsbug-prompt
-                                   intangible but-helpful
-                                   rear-nonsticky t))
-       user-point message-end-point)
+  ;; The syntax `version;' is preferred to `[version]' because the
+  ;; latter could be mistakenly stripped by mailing software.
+  (if (eq system-type 'ms-dos)
+      (setq topic (concat emacs-version "; " topic))
+    (when (string-match "^\\(\\([.0-9]+\\)*\\)\\.[0-9]+$" emacs-version)
+      (setq topic (concat (match-string 1 emacs-version) "; " topic))))
+  ;; If there are four numbers in emacs-version (three for MS-DOS),
+  ;; this is a pretest version.
+  (let* ((pretest-p (string-match (if (eq system-type 'ms-dos)
+                                     "\\..*\\."
+                                   "\\..*\\..*\\.")
+                                 emacs-version))
+        (from-buffer (current-buffer))
+        (reporting-address (if pretest-p
+                               report-emacs-bug-pretest-address
+                             report-emacs-bug-address))
+        ;; Put these properties on semantically-void text.
+        (prompt-properties '(field emacsbug-prompt
+                                   intangible but-helpful
+                                   rear-nonsticky t))
+        user-point message-end-point)
     (setq message-end-point
          (with-current-buffer (get-buffer-create "*Messages*")
            (point-max-marker)))
@@ -106,7 +115,7 @@ Prompts for bug subject.  Leaves you in a mail buffer."
        (let ((pos (point)))
          (insert "not to your local site managers!")
          (put-text-property pos (point) 'face 'highlight)))
-       (insert "\nPlease write in ")
+      (insert "\nPlease write in ")
       (let ((pos (point)))
        (insert "English")
        (put-text-property pos (point) 'face 'highlight))
@@ -132,8 +141,8 @@ usually do not have translators to read other languages for them.\n\n")
 
     (let ((debug-file (expand-file-name "DEBUG" data-directory)))
       (if (file-readable-p debug-file)
-       (insert "If you would like to further debug the crash, please read the file\n"
-               debug-file " for instructions.\n")))
+         (insert "If you would like to further debug the crash, please read the file\n"
+                 debug-file " for instructions.\n")))
     (add-text-properties (1+ user-point) (point) prompt-properties)
 
     (insert "\n\nIn " (emacs-version) "\n")
@@ -149,7 +158,7 @@ usually do not have translators to read other languages for them.\n\n")
        (insert "configured using `configure "
                system-configuration-options "'\n\n"))
     (insert "Important settings:\n")
-    (mapcar
+    (mapc
      '(lambda (var)
        (insert (format "  value of $%s: %s\n" var (getenv var))))
      '("LC_ALL" "LC_COLLATE" "LC_CTYPE" "LC_MESSAGES"
index b8d42debe6f12a19811ed5d910bacc35be8cd4bd..e75387f48ac0534541fa4b993a1e5de00bcc8c00 100644 (file)
@@ -1588,7 +1588,7 @@ backup file names and the like)."
        (setq list-of-possible-fqms (directory-files feedmail-queue-directory t))
        (if feedmail-queue-run-orderer
            (setq list-of-possible-fqms (funcall feedmail-queue-run-orderer list-of-possible-fqms)))
-       (mapcar
+       (mapc
         '(lambda (blobby)
            (setq maybe-file (expand-file-name blobby feedmail-queue-directory))
            (cond
@@ -1835,7 +1835,7 @@ the counts."
   (let ((q-cnt 0) (q-oth 0) (high-water 0) (blobbet))
     ;; iterate, counting things we find along the way in the directory
     (if (file-directory-p queue-directory)
-       (mapcar
+       (mapc
         '(lambda (blobby)
            (cond
             ((file-directory-p blobby) nil) ; don't care about subdirs
index 94a95cd54e5b280b5df9365451e7c15d051162fa..209b1deacf89322e365a250736787845f346f4e2 100644 (file)
@@ -876,14 +876,14 @@ consing a string.)"
              ;; Do `(forward-word 1)', recognizing non-ASCII characters
              ;; except Latin-1 nbsp as words.
              (while (progn
-                      (skip-chars-forward "^\000-\177 ")
+                      (skip-chars-forward "^\000-\177 ")
                       (and (not (eobp))
                            (eq ?w (char-syntax (char-after)))
                            (progn
                              (forward-word 1)
                              (and (not (eobp))
                                   (> (char-after) ?\177)
-                                  (not (eq (char-after) ? )))))))))
+                                  (not (eq (char-after) ? )))))))))
            (or (eq char ?\()
                ;; At the end of first address of a multiple address header.
                (and (eq char ?,)
index 5c6bcb83efd7e2d46be7241ee9cacc167d736806..596c7ee9627785dd77aa840f90dad6585148280a 100644 (file)
@@ -252,7 +252,7 @@ dumped."
              (erase-buffer)
              (insert "(setq\n")
              (lisp-indent-line)
-             (mapcar
+             (mapc
               (function
                (lambda (varsym-or-cons-cell)
                  (let ((varsym (or (car-safe varsym-or-cons-cell)
index 30731c2bea9f2dfab1749b2aa355ad3fdfa67dd5..c999f687fbc1a1cf8d15f659ccc83bb83702f83e 100644 (file)
@@ -1,7 +1,8 @@
 ;;; 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 Free Software Foundation, Inc.
+;;   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: mail
@@ -204,7 +205,7 @@ We do this by executing it with `--version' and analyzing its output."
          'emacs))))))
 
 (defun rmail-autodetect ()
-  "Determine and return the file name of the `movemail' program.
+  "Determine the file name of the `movemail' program and return its flavor.
 If `rmail-movemail-program' is non-nil, use it.
 Otherwise, look for `movemail' in the directories in
 `rmail-movemail-search-path', those in `exec-path', and `exec-directory'."
@@ -1460,7 +1461,7 @@ original copy."
 
 (defun rmail-list-to-menu (menu-name l action &optional full-name)
   (let ((menu (make-sparse-keymap menu-name)))
-    (mapcar
+    (mapc
      (function (lambda (item)
                 (let (command)
                   (if (consp item)
index 5803661bc6e23a4cc4c0e1063c5fa0aba2dd17ff..2a986a33f72319e8db2e5dd45ca71c87bb73a5aa 100644 (file)
@@ -767,7 +767,13 @@ 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 (window-dedicated-p (frame-selected-window))
+    (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
index cf9c9369497fd269ad829ea526222ddadd30256b..61e7d0a00ebb274c24f6d914dec9835443f2198e 100644 (file)
@@ -1038,12 +1038,12 @@ supplied, is used instead of the line point is on in the current buffer."
   (let ((elements (length namelist))
        (position -1)
        keepers filtered-list)
-    (mapcar
+    (mapc
      (function
       (lambda (name)
        (setq position (1+ position))
        (let ((keep-p t))
-         (mapcar
+         (mapc
           (function
            (lambda (filter)
              (let ((regexp (car filter))
@@ -1061,7 +1061,7 @@ supplied, is used instead of the line point is on in the current buffer."
              (setq keepers (cons position keepers)))
          )))
      namelist)
-    (mapcar
+    (mapc
      (function
       (lambda (position)
        (setq filtered-list (cons (nth position namelist) filtered-list))
index 1da46b7684e2b783698360073e677acab7232f10..71f5ce96b2a4362bb4d4d6c3d3debf4c55ba6d44 100644 (file)
@@ -186,7 +186,7 @@ cvs-update: recompile autoloads finder-data custom-deps
 # Update the AUTHORS file.
 
 update-authors:
-       $(emacs) -l authors -f batch-update-authors $(srcdir)/AUTHORS $(srcdir)
+       $(emacs) -l authors -f batch-update-authors $(srcdir)/etc/AUTHORS $(srcdir)
 
 TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
        $(ETAGS) $(lisptagsfiles1) $(lisptagsfiles2)
diff --git a/lisp/mb-depth.el b/lisp/mb-depth.el
new file mode 100644 (file)
index 0000000..c1fd078
--- /dev/null
@@ -0,0 +1,78 @@
+;;; mb-depth.el --- Indicate minibuffer-depth in prompt
+;;
+;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+;;
+;; Author: Miles Bader <miles@gnu.org>
+;; Keywords: convenience
+
+;; 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, 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; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+;;
+;; Defines the minor mode `minibuffer-indicate-depth-mode'.
+;;
+;; When active, any recursive use of the minibuffer will show
+;; the recursion depth in the minibuffer prompt.  This is only
+;; useful if `enable-recursive-minibuffers' is non-nil.
+
+;;; Code:
+
+(defvar minibuf-depth-indicator-function nil
+  "If non-nil, function to set up the minibuffer depth indicator.
+It is called with one argument, the minibuffer depth,
+and must return a string.")
+
+;; An overlay covering the prompt.  This is a buffer-local variable in
+;; each affected minibuffer.
+;;
+(defvar minibuf-depth-overlay)
+(make-variable-buffer-local 'minibuf-depth-overlay)
+
+;; This function goes on minibuffer-setup-hook
+(defun minibuf-depth-setup-minibuffer ()
+  "Set up a minibuffer for `minibuffer-indicate-depth-mode'.
+The prompt should already have been inserted."
+  (when (> (minibuffer-depth) 1)
+    (setq minibuf-depth-overlay (make-overlay (point-min) (1+ (point-min))))
+    (overlay-put minibuf-depth-overlay 'before-string
+                (if minibuf-depth-indicator-function
+                    (funcall minibuf-depth-indicator-function (minibuffer-depth))
+                  (propertize (format "[%d]" (minibuffer-depth)) 'face 'highlight)))
+    (overlay-put minibuf-depth-overlay 'evaporate t)))
+
+;;;###autoload
+(define-minor-mode minibuffer-indicate-depth-mode
+  "Toggle Minibuffer Indicate Depth mode.
+When active, any recursive use of the minibuffer will show
+the recursion depth in the minibuffer prompt.  This is only
+useful if `enable-recursive-minibuffers' is non-nil.
+
+With prefix argument ARG, turn on if positive, otherwise off.
+Returns non-nil if the new state is enabled."
+  :global t
+  :group 'minibuffer
+  (if minibuffer-indicate-depth-mode
+      ;; Enable the mode
+      (add-hook 'minibuffer-setup-hook 'minibuf-depth-setup-minibuffer)
+    ;; Disable the mode
+    (remove-hook 'minibuffer-setup-hook 'minibuf-depth-setup-minibuffer)))
+
+(provide 'mb-depth)
+
+;; arch-tag: 50224089-5bf5-46f8-803d-18f018c5eacf
+;;; mb-depth.el ends here
index 51855d4db8ed534b72e233237c9e9cd46b1f1220..d0da787b8a90b5204b99b2543281de9f7c5b7948 100644 (file)
@@ -929,15 +929,15 @@ mail status in mode line"))
        :button `(:toggle . tooltip-mode)))
 
 (define-key menu-bar-showhide-menu [menu-bar-mode]
-  '(menu-item "Menu-bar" menu-bar-mode
+  '(menu-item "Menu-bar" toggle-menu-bar-mode-from-frame
              :help "Turn menu-bar on/off"
-             :button (:toggle . menu-bar-mode)))
+             :button (:toggle . (> (frame-parameter nil 'menu-bar-lines) 0))))
 
 (define-key menu-bar-showhide-menu [showhide-tool-bar]
-  (list 'menu-item "Tool-bar" 'tool-bar-mode
-       :help "Turn tool-bar on/off"
+  (list 'menu-item "Tool-bar" 'toggle-tool-bar-mode-from-frame
+       :help "Toggle tool-bar on/off"
        :visible `(display-graphic-p)
-       :button `(:toggle . tool-bar-mode)))
+       :button `(:toggle . (> (frame-parameter nil 'tool-bar-lines) 0))))
 
 (define-key menu-bar-options-menu [showhide]
   (list 'menu-item "Show/Hide" menu-bar-showhide-menu))
@@ -1339,9 +1339,12 @@ key, a click, or a menu-item"))
   '(menu-item "Introduction to Emacs Lisp" menu-bar-read-lispintro
              :help "Read the Introduction to Emacs Lisp Programming"))
 
-(define-key menu-bar-help-menu [emacs-psychotherapist]
-  '(menu-item "Emacs Psychotherapist" doctor
-             :help "Our doctor will help you feel better"))
+(define-key menu-bar-help-menu [describe-project]
+  '(menu-item "About GNU" describe-project
+             :help "About the GNU System, GNU Project, and GNU/Linux"))
+(define-key menu-bar-help-menu [about]
+  '(menu-item "About Emacs" about-emacs
+             :help "Display version number, copyright info, and basic help"))
 (define-key menu-bar-help-menu [sep4]
   '("--"))
 (define-key menu-bar-help-menu [describe-no-warranty]
@@ -1350,15 +1353,9 @@ key, a click, or a menu-item"))
 (define-key menu-bar-help-menu [describe-copying]
   '(menu-item "Copying Conditions" describe-copying
              :help "Show the Emacs license (GPL)"))
-(define-key menu-bar-help-menu [about-gnu-project]
-  '(menu-item "About GNU" describe-project
-             :help "About the GNU System, GNU Project, and GNU/Linux"))
-(define-key menu-bar-help-menu [getting-new-versions]
+(define-key menu-bar-help-menu [describe-distribution]
   '(menu-item "Getting New Versions" describe-distribution
              :help "How to get latest versions of Emacs"))
-(define-key menu-bar-help-menu [external-packages]
-  '(menu-item "External Packages" menu-bar-help-extra-packages
-             :help "Lisp packages distributed separately for use in Emacs"))
 (defun menu-bar-help-extra-packages ()
   "Display help about some additional packages available for Emacs."
   (interactive)
@@ -1366,12 +1363,12 @@ key, a click, or a menu-item"))
     (view-file (expand-file-name "MORE.STUFF"
                                 data-directory))
     (goto-address)))
-(define-key menu-bar-help-menu [about-emacs]
-  '(menu-item "About Emacs" display-splash-screen
-             :help "Display version number, copyright info, and basic help"))
 (define-key menu-bar-help-menu [sep2]
   '("--"))
-(define-key menu-bar-help-menu [find-emacs-packages]
+(define-key menu-bar-help-menu [more]
+  '(menu-item "External Packages" menu-bar-help-extra-packages
+             :help "Lisp packages distributed separately for use in Emacs"))
+(define-key menu-bar-help-menu [finder-by-keyword]
   '(menu-item "Find Emacs Packages" finder-by-keyword
              :help "Find packages and features by keyword"))
 (define-key menu-bar-help-menu [more-manuals]
@@ -1385,7 +1382,10 @@ key, a click, or a menu-item"))
   (list 'menu-item "Search Documentation" menu-bar-search-documentation-menu))
 (define-key menu-bar-help-menu [sep1]
   '("--"))
-(define-key menu-bar-help-menu [send-emacs-bug-report]
+(define-key menu-bar-help-menu [eliza]
+  '(menu-item "Emacs Psychotherapist" doctor
+             :help "Our doctor will help you feel better"))
+(define-key menu-bar-help-menu [report-emacs-bug]
   '(menu-item "Send Bug Report..." report-emacs-bug
              :help "Send e-mail to Emacs maintainers"))
 (define-key menu-bar-help-menu [emacs-known-problems]
@@ -1750,18 +1750,10 @@ turn on menu bars; otherwise, turn off menu bars."
   :init-value nil
   :global t
   :group 'frames
+
   ;; Make menu-bar-mode and default-frame-alist consistent.
-  (let ((lines (if menu-bar-mode 1 0)))
-    ;; Alter existing frames...
-    (mapc (lambda (frame)
-           (modify-frame-parameters frame
-                                    (list (cons 'menu-bar-lines lines))))
-         (frame-list))
-    ;; ...and future ones.
-    (let ((elt (assq 'menu-bar-lines default-frame-alist)))
-      (if elt
-         (setcdr elt lines)
-       (add-to-list 'default-frame-alist (cons 'menu-bar-lines lines)))))
+  (modify-all-frames-parameters (list (cons 'menu-bar-lines
+                                           (if menu-bar-mode 1 0))))
 
   ;; Make the message appear when Emacs is idle.  We can not call message
   ;; directly.  The minor-mode message "Menu-bar mode disabled" comes
@@ -1771,6 +1763,30 @@ turn on menu bars; otherwise, turn off menu bars."
                         "Menu-bar mode disabled.  Use M-x menu-bar-mode to make the menu bar appear."))
   menu-bar-mode)
 
+(defun toggle-menu-bar-mode-from-frame (&optional arg)
+  "Toggle menu bar on or off, based on the status of the current frame.
+See `menu-bar-mode' for more information."
+  (interactive (list (or current-prefix-arg 'toggle)))
+  (if (eq arg 'toggle)
+      (menu-bar-mode (if (> (frame-parameter nil 'menu-bar-lines) 0) 0 1))
+    (menu-bar-mode arg)))
+
+(defun menu-bar-open (&optional frame)
+  "Start key navigation of the menu bar in FRAME.
+
+This function decides which method to use to access the menu
+depending on FRAME's terminal device.  On X displays, it calls
+`x-menu-bar-open'; otherwise it calls `tmm-menubar'.
+
+If FRAME is nil or not given, use the selected frame."
+  (interactive)
+  (if (eq window-system 'x)
+      (x-menu-bar-open frame)
+    (with-selected-frame (or frame (selected-frame))
+      (tmm-menubar))))
+
+(global-set-key [f10] 'menu-bar-open)
+
 (provide 'menu-bar)
 
 ;;; arch-tag: 6e6a3c22-4ec4-4d3d-8190-583f8ef94ced
index f8134b0911e9bea84d244c720647cf1180c4f706..2619e20e6f74e46248a6e943d8fa8d3c39ba93a1 100644 (file)
@@ -1,3 +1,64 @@
+2007-09-11  Bill Wohler  <wohler@newt.com>
+
+       * mh-e.el (Version, mh-version): Add +cvs to version.
+
+2007-08-25  Stephen Gildea  <gildea@stop.mail-abuse.org>
+
+       * mh-e.el (mh-annotate-msg-hook): New variable.
+
+       * mh-comp.el (mh-annotate-msg): Call new mh-annotate-msg-hook.
+       (mh-annotate-list): New variable, for mh-annotate-msg-hook.
+
+2007-08-21  Jeffrey C Honig  <jch@honig.net>
+
+       * mh-folder.el (mh-folder-message-menu, mh-folder-mode-map): Add
+       folder mode support for mh-show-preferred-alternative (closes SF
+       #1777321).
+
+       * mh-show.el (mh-show-preferred-alternative)
+       (mh-show-write-message-to-file, mh-show-message-menu)
+       (mh-show-mode-map): Add mh-show-preferred-alternative (bound to
+       ":") which will show the message's preferred alternative
+       overriding the users configured preference. Useful for showing
+       HTML when text content is lacking (closes SF #1777321).
+
+       * mh-e.el:
+       (mh-invisible-header-fields-internal): Exclude Fax and Phone. Put
+       known exclusions as comments before the list and move parens to
+       separate lines to aid in sorting (closes SF #1701231).
+
+       * mh-mime.el (mm-decode-body): Remove explicit autoload of
+       mh-alias-expand.
+
+       * mh-alias.el (mh-alias-expand): Set up automatic autoload of
+       mh-alias-expand.
+
+2007-08-20  Jeffrey C Honig  <jch@honig.net>
+
+       * mh-mime.el (message-options-set): Add missing autoloads from my
+       last change.
+
+       * mh-comp.el (mh-forward): When forwarding with mml, messages are
+       no longer included in reverse order (closes SF #1730393).
+
+       * mh-mime.el (mh-mml-forward-message): Forward messages as inline
+       attatchments (closes SF #1378993).
+
+2007-08-19  Jeffrey C Honig  <jch@honig.net>
+
+       * mh-e.el (mh-invisible-header-fields-internal): We want to show
+       Comments: and hide Comment:, not the other way around.
+
+       * mh-mime.el (mh-mml-to-mime): GPG requires e-mail addresses, not
+       aliases.  So resolve aliases before passing addresses to GPG/PGP
+       (closes SF #649226).
+
+       * mh-e.el (mh-invisible-header-fields-internal): Update with all
+       the entries from
+       http://people.dsv.su.se/~jpalme/ietf/mail-headers, plus some of my
+       own. I added attributions to entries we already had that did not
+       list an RFC.
+
 2007-08-08  Glenn Morris  <rgm@gnu.org>
 
        * mh-folder.el, mh-letter.el, mh-show.el: Replace `iff' in
@@ -7,6 +68,11 @@
 
        * Relicense all FSF files to GPLv3 or later.
 
+2007-07-11  Bill Wohler  <wohler@newt.com>
+
+       * mh-compat.el (mh-display-color-cells): Fix on XEmacs 21.5b28.
+       Thanks to Henrique Martins for the help (closes SF #1749774).
+
 2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
 
        * mh-mime.el (mh-mh-directive-present-p):
index 88ba26f127ec6199849f78a3d4a97b0435240205..333cfb3a4b06a80e3d8ed80c5e436490090cbfed 100644 (file)
@@ -244,6 +244,7 @@ returns the string unchanged if not defined. The same is done here."
              (message "%s" (error-message-string err))
              alias))))
 
+;;;###mh-autoload
 (defun mh-alias-expand (alias)
   "Return expansion for ALIAS.
 Blind aliases or users from /etc/passwd are not expanded."
index b74c445238e234fbca8e9f49abca090e9c5b7bd9..bb2d1506adf4bb71934941a8c8e3afa211467cce 100644 (file)
@@ -136,6 +136,10 @@ Used by the \\[mh-edit-again] and \\[mh-extract-rejected-mail] commands.")
 (defvar mh-annotate-field nil
   "Field name for message annotation.")
 
+(defvar mh-annotate-list nil
+  "Messages annotated, either a sequence name or a list of message numbers.
+This variable can be used by `mh-annotate-msg-hook'.")
+
 (defvar mh-insert-auto-fields-done-local nil
   "Buffer-local variable set when `mh-insert-auto-fields' called successfully.")
 (make-variable-buffer-local 'mh-insert-auto-fields-done-local)
@@ -497,7 +501,9 @@ See also `mh-compose-forward-as-mime-flag',
                   (dolist (msg msgs)
                     (setq i (1+ i))
                     (mh-mml-forward-message (format description i)
-                                            folder msg))))))
+                                            folder msg)
+                    ;; Was inserted before us, move to end of file to preserve order
+                    (goto-char (point-max)))))))
         ;; Postition just before forwarded message
         (if (re-search-forward "^------- Forwarded Message" nil t)
             (forward-line -1)
@@ -973,18 +979,23 @@ This should be the last function called when composing the draft."
     (goto-char (point-max))
     (mh-letter-next-header-field)))
 
-(defun mh-annotate-msg (msg buffer note &rest args)
-  "Mark MSG in BUFFER with character NOTE and annotate message with ARGS.
-MSG can be a message number, a list of message numbers, or a
-sequence."
-  (apply 'mh-exec-cmd "anno" buffer
+(defun mh-annotate-msg (msg folder note &rest args)
+  "Mark MSG in FOLDER with character NOTE and annotate message with ARGS.
+MSG can be a message number, a list of message numbers, or a sequence.  
+The hook `mh-annotate-msg-hook' is run after annotating; see its
+documentation for variables it can use."
+  (apply 'mh-exec-cmd "anno" folder
          (if (listp msg) (append msg args) (cons msg args)))
   (save-excursion
-    (cond ((get-buffer buffer)          ; Buffer may be deleted
-           (set-buffer buffer)
+    (cond ((get-buffer folder)          ; Buffer may be deleted
+           (set-buffer folder)
            (mh-iterate-on-range nil msg
              (mh-notate nil note
-                        (+ mh-cmd-note mh-scan-field-destination-offset)))))))
+                        (+ mh-cmd-note mh-scan-field-destination-offset))))))
+  (let ((mh-current-folder folder)
+        ;; mh-annotate-list is a sequence name or a list of message numbers
+        (mh-annotate-list (if (numberp msg) (list msg) msg)))
+    (run-hooks 'mh-annotate-msg-hook)))
 
 (defun mh-insert-header-separator ()
   "Insert `mh-mail-header-separator', if absent."
index 988ebc4ee109d9546f9469673c5183b1bf467d1a..58c52a51a0cd98220982c280baa8a5e79e664827 100644 (file)
@@ -77,13 +77,17 @@ introduced in Emacs 22."
       'cancel-timer
     'delete-itimer))
 
-(defun-mh mh-display-color-cells display-color-cells (&optional display)
+(defun mh-display-color-cells (&optional display)
   "Return the number of color cells supported by DISPLAY.
-This function is used by XEmacs to return 2 when
-`device-color-cells' returns nil. This happens when compiling or
+This function is used by XEmacs to return 2 when `device-color-cells'
+or `display-color-cells' returns nil. This happens when compiling or
 running on a tty and causes errors since `display-color-cells' is
 expected to return an integer."
-  (or (device-color-cells display) 2))
+  (cond ((fboundp 'display-color-cells) ; GNU Emacs, XEmacs 21.5b28
+         (or (display-color-cells display) 2))
+        ((fboundp 'device-color-cells)  ; XEmacs 21.4
+         (or (device-color-cells display) 2))
+        (t 2)))
 
 (defmacro mh-display-completion-list (completions &optional common-substring)
   "Display the list of COMPLETIONS.
index 200998da4ca89a325f15bc9d40f3b37f46b88ad2..faec4db35b7796acf7290169074ab0d996b05e0d 100644 (file)
@@ -6,7 +6,7 @@
 
 ;; Author: Bill Wohler <wohler@newt.com>
 ;; Maintainer: Bill Wohler <wohler@newt.com>
-;; Version: 8.0.3
+;; Version: 8.0.3+cvs
 ;; Keywords: mail
 
 ;; This file is part of GNU Emacs.
 ;; Try to keep variables local to a single file. Provide accessors if
 ;; variables are shared. Use this section as a last resort.
 
-(defconst mh-version "8.0.3" "Version number of MH-E.")
+(defconst mh-version "8.0.3+cvs" "Version number of MH-E.")
 
 ;; Variants
 
@@ -2381,132 +2381,208 @@ of citations entirely, choose \"None\"."
   :group 'mh-show
   :package-version '(MH-E . "8.0"))
 
+;; Theese entries have been intentionally excluded by the developers.
+;;  "X-Operator:"                       ; Similar to X-Mailer, so display it
+;;  "Comments:"                         ; RFC 2822 - show this one
+;;  "Fax:"                              ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+;;  "Mail-System-Version:"              ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+;;  "Mailer:"                           ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+;;  "Phone:"                            ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+;;  "Reply-By:"                         ; RFC 2156
+;;  "Reply-To:"                         ; RFC 2822
+;;  "User-Agent:"                       ; Similar to X-Mailer, so display it.
+;;
 ;; Keep fields alphabetized. Mention source, if known.
 (defvar mh-invisible-header-fields-internal
-  '("Approved:"
-    "Autoforwarded:"
+  '(
+    "Abuse-Reports-To:"                 ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Also-Control:"                     ; H. Spencer: News Article Format and Transmission, June 1994
+    "Alternate-recipient:"              ; RFC 2156
+    "Approved-By:"                      ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Approved:"                         ; RFC 1036
+    "Article-Names:"                    ; H. Spencer: News Article Format and Transmission, June 1994
+    "Article-Updates:"                  ; H. Spencer: News Article Format and Transmission, June 1994
+    "Authentication-Results:"
+    "Auto-forwarded:"                   ; RFC 2156
+    "Autoforwarded:"                    ; RFC 2156
     "Bestservhost:"
+    "Cancel-Key:"                       ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Cancel-Lock:"                      ; NNTP posts
-    "Content-"                          ; RFC 2045
-    "Delivered-To:"              ; Egroups/yahoogroups mailing list manager
-    "Delivery-Date:"                    ; MH
+    "Comment:"                          ; Shows up with DomainKeys
+    "Content-"                          ; RFC 2045, 1123, 1766, 1864, 2045, 2110, 2156, 2183, 2912
+    "Control:"                          ; RFC 1036
+    "Conversion-With-Loss:"             ; RFC 2156
+    "Conversion:"                       ; RFC 2156
+    "DKIM-"                             ; http://antispam.yahoo.com/domainkeys
+    "DL-Expansion-History:"             ; RFC 2156
+    "Delivered-To:"                     ; Egroups/yahoogroups mailing list manager
+    "Delivery-Date:"                    ; RFC 2156
     "Delivery:"
-    "DomainKey-Signature:"              ;http://antispam.yahoo.com/domainkeys
-    "Encoding:"
+    "Discarded-X400-"                   ; RFC 2156
+    "Disclose-Recipients:"              ; RFC 2156
+    "Disposition-Notification-Options:" ; RFC 2298
+    "Disposition-Notification-To:"      ; RFC 2298
+    "Distribution:"                     ; RFC 1036
+    "DomainKey-"                        ; http://antispam.yahoo.com/domainkeys
+    "Encoding:"                         ; RFC 1505
     "Envelope-to:"
-    "Errors-To:"
+    "Errors-To:"                        ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Expires:"                          ; RFC 1036
+    "Expiry-Date:"                      ; RFC 2156
     "Face:"                             ; Gnus Face header
+    "Followup-To:"                      ; RFC 1036
+    "For-Approval:"                     ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "For-Comment:"                      ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "For-Handdling:"                    ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Forwarded:"                        ; MH
     "From "                             ; sendmail
-    "Importance:"                       ; MS Outlook
-    "In-Reply-To:"                      ; MH
-    "Lines:"
-    "List-"                             ; Mailman mailing list manager
-    "List-"                             ; Unknown mailing list managers
-    "List-Subscribe:"                   ; Unknown mailing list managers
-    "List-Unsubscribe:"                 ; Unknown mailing list managers
+    "Generate-Delivery-Report:"         ; RFC 2156
+    "Importance:"                       ; RFC 2156, 2421
+    "In-Reply-To:"                      ; RFC 2822
+    "Incomplete-Copy:"                  ; RFC 2156
+    "Keywords:"                         ; RFC 2822
+    "Language:"                         ; RFC 2156
+    "Lines:"                            ; RFC 1036
+    "List-"                             ; RFC 2369, 2919
+    "Mail-Copies-To:"                   ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Mail-Followup-To:"                 ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Mail-Reply-To:"                    ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Mail-from:"                        ; MH
-    "Mailing-List:"              ; Egroups/yahoogroups mailing list manager
+    "Mailing-List:"                     ; Egroups/yahoogroups mailing list manager
+    "Message-Content:"                  ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Message-Id:"                       ; RFC 822
+    "Message-Type:"                     ; RFC 2156
     "Mime-Version"                      ; RFC 2045
     "NNTP-"                             ; News
+    "Newsgroups:"                       ; RFC 1036
+    "Obsoletes:"                        ; RFC 2156
     "Old-Return-Path:"
-    "Original-Encoded-Information-Types:"  ; X400
+    "OpenPGP:"
+    "Original-Encoded-Information-Types:"  ; RFC 2156
     "Original-Lines:"                   ; mail to news
     "Original-NNTP-"                    ; mail to news
     "Original-Newsgroups:"              ; mail to news
     "Original-Path:"                    ; mail to news
     "Original-Received:"                ; mail to news
+    "Original-Recipt:"                  ; RFC 2298
     "Original-To:"                      ; mail to news
     "Original-X-"                       ; mail to news
-    "Originator:"
+    "Origination-Client:"               ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Originator:"                       ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "P1-Content-Type:"                  ; X400
     "P1-Message-Id:"                    ; X400
     "P1-Recipient:"                     ; X400
-    "Path:"
-    "Precedence:"
+    "Path:"                             ; RFC 1036
+    "Pics-Label:"                       ; W3C
+    "Posted-To:"                        ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Precedence:"                       ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Prev-Resent"                       ; MH
-    "Priority:"
-    "Received:"                         ; RFC 822
+    "Prevent-NonDelivery-Report:"       ; RFC 2156
+    "Priority:"                         ; RFC 2156
+    "Read-Receipt-To:"                  ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Received-SPF:"                     ; Gmail
-    "References:"
+    "Received:"                         ; RFC 822
+    "References:"                       ; RFC 2822
+    "Registered-Mail-Reply-Requested-By:"       ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Remailed-"                         ; MH
+    "Replaces:"                         ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Replied:"                          ; MH
-    "Resent"                            ; MH
+    "Resent-"                           ; RFC 2822
     "Return-Path:"                      ; RFC 822
-    "Sensitivity:"                      ; MS Outlook
+    "Return-Receipt-Requested:"         ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Return-Receipt-To:"                ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "See-Also:"                         ; H. Spencer: News Article Format and Transmission, June 1994
+    "Sensitivity:"                      ; RFC 2156, 2421
+    "Speach-Act:"                       ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Status:"                           ; sendmail
+    "Supersedes:"                       ; H. Spencer: News Article Format and Transmission, June 1994
+    "Telefax:"                          ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Thread-"
+    "Translated-By:"                    ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Translation-Of:"                   ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Ua-Content-Id:"                    ; X400
-;;  "User-Agent:"                       ; Similar to X-Mailer, so display it.
     "Via:"                              ; MH
+    "X-AMAZON"                          ; Amazon.com
     "X-AOL-IP:"                         ; AOL WebMail
     "X-Abuse-Info:"
     "X-Abuse-and-DMCA-"
     "X-Accept-Language:"
     "X-Accept-Language:"                ; Netscape/Mozilla
     "X-Ack:"
+    "X-Admin:"                          ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Administrivia-To:"
     "X-AntiAbuse:"                      ; cPanel
+    "X-Antivirus-Scanner:"
     "X-Apparently-From:"                ; MS Outlook
     "X-Apparently-To:"           ; Egroups/yahoogroups mailing list manager
+    "X-Attribution:"
+    "X-AuditID:"
+    "X-Authenticated-Info:"             ; Verizon.net?
     "X-Authenticated-Sender:"           ; AT&T Message Center (webmail)
     "X-Authentication-Warning:"         ; sendmail
     "X-Barracuda-"                      ; Barracuda spam scores
     "X-Beenthere:"                      ; Mailman mailing list manager
+    "X-Bigfish:"
     "X-Bogosity:"                       ; bogofilter
-    "X-BrightmailFiltered:"             ; Brightmail
     "X-Brightmail-Tracker:"             ; Brightmail
+    "X-BrightmailFiltered:"             ; Brightmail
     "X-Bugzilla-"                       ; Bugzilla
-    "X-Complaints-To:"
+    "X-Comment:"                        ; AT&T Mailennium
+    "X-Complaints-To:"                  ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Confirm-Reading-To:"             ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-ContentStamp:"                   ; NetZero
+    "X-Cr-Hashedpuzzle:"
+    "X-Cr-Puzzleid:"
     "X-Cron-Env:"
     "X-DMCA"
     "X-Delivered"
     "X-EFL-Spamscore:"                  ; MIT alumni spam filtering
     "X-ELNK-Trace:"                     ; Earthlink mailer
+    "X-Enigmail-Version:"
     "X-Envelope-Date:"                  ; GNU mailutils
-    "X-Envelope-From:"
+    "X-Envelope-From:"                  ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Envelope-Sender:"
-    "X-Envelope-To:"
+    "X-Envelope-To:"                    ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-EviteMessageId:"                 ; evite.com
     "X-Evolution:"                      ; Evolution mail client
-    "X-Face:"
+    "X-ExtLoop"
+    "X-Face:"                           ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Folder:"                         ; Spam
     "X-From-Line"
     "X-Gmail-"                          ; Gmail
     "X-Gnus-Mail-Source:"               ; gnus
+    "X-Google-"                         ; Google mail
     "X-Greylist:"                       ; milter-greylist-1.2.1
-    "X-Habeas-SWE-1:"                   ; Spam
-    "X-Habeas-SWE-2:"                   ; Spam
-    "X-Habeas-SWE-3:"                   ; Spam
-    "X-Habeas-SWE-4:"                   ; Spam
-    "X-Habeas-SWE-5:"                   ; Spam
-    "X-Habeas-SWE-6:"                   ; Spam
-    "X-Habeas-SWE-7:"                   ; Spam
-    "X-Habeas-SWE-8:"                   ; Spam
-    "X-Habeas-SWE-9:"                   ; Spam
+    "X-HTTP-UserAgent:"
+    "X-Habeas-SWE-"                     ; Spam
     "X-Hashcash:"                       ; hashcash
+    "X-IMAP:"                           ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Image-URL:"
     "X-Info:"                           ; NTMail
-    "X-IronPort-AV:"                    ; IronPort AV
+    "X-IronPort-"                       ; IronPort AV
     "X-Juno-"                           ; Juno
-    "X-List-Host:"                      ; Unknown mailing list managers
+    "X-List-Host:"                      ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-List-Subscribe:"                 ; Unknown mailing list managers
     "X-List-Unsubscribe:"               ; Unknown mailing list managers
     "X-Listprocessor-"                  ; ListProc(tm) by CREN
-    "X-Listserver:"                     ; Unknown mailing list managers
-    "X-Loop:"                           ; Unknown mailing list managers
+    "X-Listserver:"                     ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Loop:"                           ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Lrde-Mailscanner:"
     "X-Lumos-SenderID:"                 ; Roving ConstantContact
     "X-MAIL-INFO:"                      ; NetZero
     "X-MB-Message-"                     ; AOL WebMail
     "X-MHE-Checksum:"                   ; Checksum added during index search
     "X-MIME-Autoconverted:"             ; sendmail
+    "X-MIMEOLE:"                        ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/sendmail
     "X-MIMETrack:"
     "X-MS-"                             ; MS Outlook
+    "X-MSMail-Priority"                 ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Mail-from:"                      ; fastmail.fm
     "X-MailScanner"                     ; ListProc(tm) by CREN
     "X-Mailing-List:"                   ; Unknown mailing list managers
     "X-Mailman-Approved-At:"            ; Mailman mailing list manager
     "X-Mailman-Version:"                ; Mailman mailing list manager
+    "X-Mailutils-Message-Id"            ; GNU Mailutils
     "X-Majordomo:"                      ; Majordomo mailing list manager
     "X-Message-Id"
     "X-MessageWall-Score:"              ; Unknown mailing list manager, AUC TeX
@@ -2516,27 +2592,33 @@ of citations entirely, choose \"None\"."
     "X-Msmail-"                         ; MS Outlook
     "X-NAI-Spam-"                       ; Network Associates Inc. SpamKiller
     "X-News:"                           ; News
-    "X-No-Archive:"
+    "X-Newsreader:"                     ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-No-Archive:"                     ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Notes-Item:"                     ; Lotus Notes Domino structured header
     "X-OperatingSystem:"
-    ;;"X-Operator:"                     ; Similar to X-Mailer, so display it
     "X-Orcl-Content-Type:"
+    "X-Original-Arrival-Type:"          ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Original-Complaints-To:"
     "X-Original-Date:"                  ; SourceForge mailing list manager
     "X-Original-To:"
     "X-Original-Trace:"
     "X-OriginalArrivalTime:"            ; Hotmail
+    "X-Originating-Email:"              ; Hotmail
     "X-Originating-IP:"                 ; Hotmail
+    "X-PMG-"
     "X-Postfilter:"
     "X-Priority:"                       ; MS Outlook
     "X-Provags-ID:"
     "X-Qotd-"                           ; User added
+    "X-RCPT-TO:"                        ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-RM"
     "X-Received-Date:"
     "X-Received:"
+    "X-Report-Abuse-To:"                ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Request-"
     "X-Resolved-to:"                    ; fastmail.fm
     "X-Return-Path-Hint:"               ; Roving ConstantContact
+    "X-RocketYMMF:"                     ; Yahoo
     "X-Roving-"                         ; Roving ConstantContact
     "X-SA-Exim-"                        ; Exim SpamAssassin
     "X-SBClass:"                        ; Spam
@@ -2546,7 +2628,7 @@ of citations entirely, choose \"None\"."
     "X-SMTP-"
     "X-Sasl-enc:"                       ; Apple Mail
     "X-Scanned-By:"
-    "X-Sender:"
+    "X-Sender:"                         ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Server-Date:"
     "X-Server-Uuid:"
     "X-Sieve:"                          ; Sieve filtering
@@ -2558,21 +2640,27 @@ of citations entirely, choose \"None\"."
     "X-Telecom-Digest"
     "X-Trace:"
     "X-UID"
-    "X-UIDL:"
+    "X-UIDL:"                           ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-UNTD-"                           ; NetZero
+    "X-URI:"                            ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-URL:"                            ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-USANET-"                         ; usa.net
+    "X-Unity"
     "X-UserInfo1:"
     "X-VSMLoop:"                        ; NTMail
-    "X-Virus-Scanned"                   ; amavisd-new
+    "X-Virus-"                          ; 
     "X-Vms-To:"
     "X-WebTV-Signature:"
     "X-Wss-Id:"                         ; Worldtalk gateways
+    "X-X-Sender:"                       ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-YMail-"
     "X-Yahoo"
-    "X-eGroups-"                 ; Egroups/yahoogroups mailing list manager
+    "X-eGroups-"                        ; Egroups/yahoogroups mailing list manager
     "X-pgp:"
     "X-submission-address:"
     "X400-"                             ; X400
-    "Xref:")
+    "Xref:"                             ; RFC 1036
+    )
   "List of default header fields that are not to be shown.
 
 Do not alter this variable directly. Instead, add entries from
@@ -2944,6 +3032,15 @@ folder, which is also available in `mh-current-folder'."
   :group 'mh-alias
   :package-version '(MH-E . "8.0"))
 
+(defcustom-mh mh-annotate-msg-hook nil
+  "Hook run by `mh-annotate-msg' after annotation.
+Variables that are useful in this hook include `mh-current-folder',
+the current folder, and `mh-annotate-list', the messages annotated."
+  :type 'hook
+  :group 'mh-hooks
+  :group 'mh-sending-mail
+  :package-version '(MH-E . "8.1"))
+
 (defcustom-mh mh-before-commands-processed-hook nil
   "Hook run by \\<mh-folder-mode-map>\\[mh-execute-commands] before performing outstanding refile and delete requests.
 
index 42abad4536afc549ee3c116b1837b3a43390d6c7..75cebfe519db35b0869e72f0b901a62166aa96cb 100644 (file)
@@ -156,6 +156,8 @@ annotation.")
   '("Message"
     ["Show Message"                     mh-show (mh-get-msg-num nil)]
     ["Show Message with Header"         mh-header-display (mh-get-msg-num nil)]
+    ["Show Message with Preferred Alternative"
+                                        mh-show-preferred-alternative (mh-get-msg-num nil)]
     ["Next Message"                     mh-next-undeleted-msg t]
     ["Previous Message"                 mh-previous-undeleted-msg t]
     ["Go to First Message"              mh-first-msg t]
@@ -225,6 +227,7 @@ annotation.")
   "'"           mh-toggle-tick
   ","           mh-header-display
   "."           mh-alt-show
+  ":"           mh-show-preferred-alternative
   ";"           mh-toggle-mh-decode-mime-flag
   ">"           mh-write-msg-to-file
   "?"           mh-help
index 4b10ad1859233b5a46fdd152719af67b7f08182e..659ab47d0dbdf47266254a0ce0da1187df8ba0b1 100644 (file)
@@ -60,6 +60,8 @@
 (autoload 'mail-decode-encoded-word-string "mail-parse")
 (autoload 'mail-header-parse-content-type "mail-parse")
 (autoload 'mail-header-strip "mail-parse")
+(autoload 'message-options-get "message")
+(autoload 'message-options-set "message")
 (autoload 'message-options-set-recipient "message")
 (autoload 'mm-decode-body "mm-bodies")
 (autoload 'mm-uu-dissect "mm-uu")
@@ -1220,16 +1222,11 @@ MESSAGE number."
                  mh-sent-from-msg
                (string-to-number message))))
     (cond ((integerp msg)
-           (if (string= "" description)
-               ;; Rationale: mml-attach-file constructs a malformed composition
-               ;; if the description string is empty.  This fixes SF #625168.
-               (mml-attach-file (format "%s%s/%d"
-                                        mh-user-path (substring folder 1) msg)
-                                "message/rfc822")
-             (mml-attach-file (format "%s%s/%d"
-                                      mh-user-path (substring folder 1) msg)
-                              "message/rfc822"
-                              description)))
+           (mml-attach-file (format "%s%s/%d"
+                                    mh-user-path (substring folder 1) msg)
+                            "message/rfc822"
+                            (if (string= "" description) nil description)
+                            "inline"))
           (t (error "The message number, %s, is not a integer" msg)))))
 
 (defun mh-mh-forward-message (&optional description folder messages)
@@ -1621,8 +1618,22 @@ encoding if you wish by running this command.
 This action can be undone by running \\[undo]."
   (interactive)
   (require 'message)
-  (when mh-pgp-support-flag ;; This is only needed for PGP
-    (message-options-set-recipient))
+  (when mh-pgp-support-flag
+    ;; PGP requires actual e-mail addresses, not aliases.
+    ;; Parse the recipients and sender from the message
+    (message-options-set-recipient)
+    ;; Do an alias lookup on sender
+    (message-options-set 'message-sender
+                     (mail-strip-quoted-names
+                      (mh-alias-expand
+                       (message-options-get 'message-sender))))
+    ;; Do an alias lookup on recipients
+    (message-options-set 'message-recipients
+                         (mapconcat
+                          '(lambda (ali)
+                             (mail-strip-quoted-names (mh-alias-expand ali)))
+                          (split-string (message-options-get 'message-recipients) "[, ]+")
+                          ", ")))
   (let ((saved-text (buffer-string))
         (buffer (current-buffer))
         (modified-flag (buffer-modified-p)))
index 4e1a19c3a0643491dc2e814f1c43b743655bdd6e..fd171107ac3133f7e2b64dfbf63847891f3718eb 100644 (file)
@@ -103,6 +103,17 @@ Use the command \\[mh-show] to show the message normally again."
       (mh-recenter 0))
     (setq mh-showing-with-headers t)))
 
+;;;###mh-autoload
+(defun  mh-show-preferred-alternative ()
+  "Display message with the default preferred alternative.
+I.e. we set \\mm-discouraged-alternatives to nil.
+
+Use the command \\[mh-show] to show the message normally again."
+  (interactive)
+  (let
+      ((mm-discouraged-alternatives))
+    (mh-show nil t)))
+
 \f
 
 ;;; Support Routines for MH-Folder Commands
@@ -401,6 +412,7 @@ still visible.\n")
 (mh-defun-show-buffer mh-show-refile-or-write-again
                       mh-refile-or-write-again)
 (mh-defun-show-buffer mh-show-show mh-show)
+(mh-defun-show-buffer mh-show-show-preferred-alternative mh-show-preferred-alternative)
 (mh-defun-show-buffer mh-show-write-message-to-file
                       mh-write-msg-to-file)
 (mh-defun-show-buffer mh-show-extract-rejected-mail
@@ -513,6 +525,8 @@ still visible.\n")
   '("Message"
     ["Show Message"                     mh-show-show t]
     ["Show Message with Header"         mh-show-header-display t]
+    ["Show Message with Preferred Alternative"
+                                        mh-show-show-preferred-alternative t]
     ["Next Message"                     mh-show-next-undeleted-msg t]
     ["Previous Message"                 mh-show-previous-undeleted-msg t]
     ["Go to First Message"              mh-show-first-msg t]
@@ -568,6 +582,7 @@ still visible.\n")
   "'"    mh-show-toggle-tick
   ","    mh-show-header-display
   "."    mh-show-show
+  ":"    mh-show-show-preferred-alternative
   ">"    mh-show-write-message-to-file
   "?"    mh-help
   "E"    mh-show-extract-rejected-mail
index e35bea8174816dfa35ad522141e74ac87535ef72..27c5dd901f795903d6b77ae78bd7e4f2ae640253 100644 (file)
@@ -1631,7 +1631,10 @@ regardless of where you click."
   ;; Give temporary modes such as isearch a chance to turn off.
   (run-hooks 'mouse-leave-buffer-hook)
   (or mouse-yank-at-point (mouse-set-point click))
-  (insert (x-get-selection 'SECONDARY)))
+  (let ((secondary (x-get-selection 'SECONDARY)))
+    (if secondary
+        (insert (x-get-selection 'SECONDARY))
+      (error "No secondary selection"))))
 
 (defun mouse-kill-secondary ()
   "Kill the text in the secondary selection.
@@ -1811,27 +1814,23 @@ and selects that window."
   (mouse-minibuffer-check event)
   (let ((buffers (buffer-list))  alist menu split-by-major-mode sum-of-squares)
     ;; Make an alist of elements that look like (MENU-ITEM . BUFFER).
-    (let ((tail buffers))
-      (while tail
-       ;; Divide all buffers into buckets for various major modes.
-       ;; Each bucket looks like (MODE NAMESTRING BUFFERS...).
-       (with-current-buffer (car tail)
-         (let* ((adjusted-major-mode major-mode) elt)
-           (let ((tail mouse-buffer-menu-mode-groups))
-             (while tail
-               (if (string-match (car (car tail)) mode-name)
-                   (setq adjusted-major-mode (cdr (car tail))))
-               (setq tail (cdr tail))))
-           (setq elt (assoc adjusted-major-mode split-by-major-mode))
-           (if (null elt)
-               (setq elt (list adjusted-major-mode
-                               (if (stringp adjusted-major-mode)
-                                   adjusted-major-mode
-                                 mode-name))
-                     split-by-major-mode (cons elt split-by-major-mode)))
-           (or (memq (car tail) (cdr (cdr elt)))
-               (setcdr (cdr elt) (cons (car tail) (cdr (cdr elt)))))))
-       (setq tail (cdr tail))))
+    (dolist (buf buffers)
+      ;; Divide all buffers into buckets for various major modes.
+      ;; Each bucket looks like (MODE NAMESTRING BUFFERS...).
+      (with-current-buffer buf
+        (let* ((adjusted-major-mode major-mode) elt)
+          (dolist (group mouse-buffer-menu-mode-groups)
+            (when (string-match (car group) (format-mode-line mode-name))
+              (setq adjusted-major-mode (cdr group))))
+          (setq elt (assoc adjusted-major-mode split-by-major-mode))
+          (unless elt
+            (setq elt (list adjusted-major-mode
+                            (if (stringp adjusted-major-mode)
+                                adjusted-major-mode
+                                mode-name))
+                  split-by-major-mode (cons elt split-by-major-mode)))
+          (or (memq buf (cdr (cdr elt)))
+              (setcdr (cdr elt) (cons buf (cdr (cdr elt))))))))
     ;; Compute the sum of squares of sizes of the major-mode buckets.
     (let ((tail split-by-major-mode))
       (setq sum-of-squares 0)
index 67835c294fd9316a86a74c44fecb184cb67e25c0..9962fd14613b77b144771b4abcce74deb6a1a054 100644 (file)
@@ -4132,8 +4132,19 @@ directory, so that Emacs will know its current contents."
                                       (format "Getting %s" fn1))
          tmp1))))
 
-(defun ange-ftp-file-remote-p (file)
-  (ange-ftp-replace-name-component file ""))
+(defun ange-ftp-file-remote-p (file &optional identification connected)
+  (let* ((parsed (ange-ftp-ftp-name file))
+        (host (nth 0 parsed))
+        (user (nth 1 parsed)))
+    (and (or (not connected)
+            (let ((proc (get-process (ange-ftp-ftp-process-buffer host user))))
+              (and proc (processp proc)
+                   (memq (process-status proc) '(run open)))))
+        (cond
+         ((eq identification 'method) (and parsed "ftp"))
+         ((eq identification 'user) user)
+         ((eq identification 'host) host)
+         (t (ange-ftp-replace-name-component file ""))))))
 
 (defun ange-ftp-load (file &optional noerror nomessage nosuffix)
   (if (ange-ftp-ftp-name file)
@@ -4361,11 +4372,20 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
 ;; Treat each name as its own truename.
 (put 'file-truename 'ange-ftp 'identity)
 
+;; We must return non-nil in order to mask our inability to do the job.
+;; Otherwise there are errors when applied to the target file during
+;; copying from a (localhost) Tramp file.
+(put 'set-file-modes 'ange-ftp 'ignore)
+(put 'set-file-times 'ange-ftp 'ignore)
+
 ;; Turn off RCS/SCCS processing to save time.
 ;; This returns nil for any file name as argument.
 (put 'vc-registered 'ange-ftp 'null)
 
-(put 'dired-call-process 'ange-ftp 'ange-ftp-dired-call-process)
+;; We can handle process-file in a restricted way (just for chown).
+;; Nothing possible for `start-file-process'.
+(put 'process-file 'ange-ftp 'ange-ftp-process-file)
+(put 'start-file-process 'ange-ftp 'ignore)
 (put 'shell-command 'ange-ftp 'ange-ftp-shell-command)
 \f
 ;;; Define ways of getting at unmodified Emacs primitives,
@@ -4528,8 +4548,8 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
       ;; default-directory is in ange-ftp syntax for remote file names.
       (ange-ftp-real-shell-command command output-buffer error-buffer))))
 
-;;; This is the handler for call-process.
-(defun ange-ftp-dired-call-process (program discard &rest arguments)
+;;; This is the handler for process-file.
+(defun ange-ftp-process-file (program infile buffer display &rest arguments)
   ;; PROGRAM is always one of those below in the cond in dired.el.
   ;; The ARGUMENTS are (nearly) always files.
   (if (ange-ftp-ftp-name default-directory)
@@ -4549,7 +4569,7 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
                   1)
        (error (insert (format "%s\n" (nth 1 oops)))
               1))
-    (apply 'call-process program nil (not discard) nil arguments)))
+    (apply 'call-process program infile buffer display arguments)))
 
 ;; Handle an attempt to run chmod on a remote file
 ;; by using the ftp chmod command.
@@ -4560,7 +4580,7 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
        (rest (cdr args)))
     (if (equal "--" (car rest))
        (setq rest (cdr rest)))
-    (mapcar
+    (mapc
      (lambda (file)
        (setq file (expand-file-name file))
        (let ((parsed (ange-ftp-ftp-name file)))
@@ -6035,8 +6055,8 @@ Other orders of $ and _ seem to all work just fine.")
     (puthash ".." t tbl)
     ;; add all additional pubsets, if not listing one of them
     (if (not (member pubset ange-ftp-bs2000-additional-pubsets))
-       (mapcar (lambda (pubset) (puthash pubset t tbl))
-               ange-ftp-bs2000-additional-pubsets))
+       (mapc (lambda (pubset) (puthash pubset t tbl))
+             ange-ftp-bs2000-additional-pubsets))
     tbl))
 
 (add-to-list 'ange-ftp-parse-list-func-alist
index 04f83ed465a59c30f731fe140efbdca9c46e3b9b..cfb3f2742e9e1edee8e0fb6700eb135efacf8cf1 100644 (file)
@@ -55,6 +55,7 @@
 ;; browse-url-default-macosx-browser  Mac OS X browser
 ;; browse-url-gnome-moz               GNOME interface to Mozilla
 ;; browse-url-kde                     KDE konqueror (kfm)
+;; browse-url-elinks                  Elinks      Don't know (tried with 0.12.GIT)
 
 ;; [A version of the Netscape browser is now free software
 ;; <URL:http://www.mozilla.org/>, albeit not GPLed, so it is
@@ -71,7 +72,7 @@
 ;; control but which window DO you want to control and how do you
 ;; discover its id?
 
-;; William M. Perry's excellent "w3" WWW browser for
+;; William M.  Perry's excellent "w3" WWW browser for
 ;; Emacs <URL:ftp://cs.indiana.edu/pub/elisp/w3/>
 ;; has a function w3-follow-url-at-point, but that
 ;; doesn't let you edit the URL like browse-url.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Variables
 
-(eval-when-compile (require 'thingatpt)
+(eval-when-compile (require 'cl)
+                  (require 'thingatpt)
                    (require 'term)
                   (require 'dired)
                    (require 'executable)
@@ -263,6 +265,7 @@ regexp should probably be \".\" to specify a default browser."
          (function-item :tag "Grail" :value  browse-url-grail)
          (function-item :tag "MMM" :value  browse-url-mmm)
          (function-item :tag "KDE" :value browse-url-kde)
+         (function-item :tag "Elinks" :value browse-url-elinks)
          (function-item :tag "Specified by `Browse Url Generic Program'"
                         :value browse-url-generic)
          (function-item :tag "Default Windows browser"
@@ -427,7 +430,7 @@ window."
   :group 'browse-url)
 
 (defcustom browse-url-new-window-flag nil
-  "If non-nil, always open a new browser window with appropriate browsers.
+  "Non-nil means always open a new browser window with appropriate browsers.
 Passing an interactive argument to \\[browse-url], or specific browser
 commands reverses the effect of this variable.  Requires Netscape version
 1.1N or later or XMosaic version 2.5 or later if using those browsers."
@@ -608,6 +611,34 @@ down (this *won't* always work)."
   :type '(repeat (string :tag "Argument"))
   :group 'browse-url)
 
+(defcustom browse-url-elinks-wrapper '("xterm" "-e")
+  "*Wrapper command prepended to the Elinks command-line."
+  :type '(repeat (string :tag "Wrapper"))
+  :group 'browse-url)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; URL encoding
+
+(defun browse-url-url-encode-chars (text chars)
+  "URL-encode the chars in TEXT that match CHARS.
+CHARS is a regexp-like character alternative (e.g., \"[,)$]\")."
+  (let ((encoded-text (copy-sequence text))
+       (s 0))
+    (while (setq s (string-match chars encoded-text s))
+      (setq encoded-text
+           (replace-match (format "%%%x"
+                                  (string-to-char (match-string 0 encoded-text)))
+                          t t encoded-text)
+           s (1+ s)))
+    encoded-text))
+
+(defun browse-url-encode-url (url)
+  "Escape annoying characters in URL.
+The annoying characters are those that can mislead a webbrowser
+regarding its parameter treatment.  For instance, `,' can
+be misleading because it could be used to separate URLs."
+  (browse-url-url-encode-chars url "[,)$]"))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; URL input
 
@@ -680,14 +711,7 @@ Use variable `browse-url-filename-alist' to map filenames to URLs."
                     (or file-name-coding-system
                         default-file-name-coding-system))))
     (if coding (setq file (encode-coding-string file coding))))
-  ;; URL-encode special chars, do % first
-  (let ((s 0))
-    (while (setq s (string-match "%" file s))
-      (setq file (replace-match "%25" t t file)
-           s (1+ s))))
-  (while (string-match "[*\"()',=;? ]" file)
-    (let ((enc (format "%%%x" (aref file (match-beginning 0)))))
-      (setq file (replace-match enc t t file))))
+  (setq file (browse-url-url-encode-chars file "[*\"()',=;?% ]"))
   (dolist (map browse-url-filename-alist)
     (when (and map (string-match (car map) file))
       (setq file (replace-match (cdr map) t nil file))))
@@ -859,21 +883,21 @@ The order attempted is gnome-moz-remote, Mozilla, Firefox,
 Galeon, Konqueror, Netscape, Mosaic, IXI Mosaic, Lynx in an
 xterm, MMM, and then W3."
   (apply
-    (cond
-     ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
-     ((executable-find browse-url-mozilla-program) 'browse-url-mozilla)
-     ((executable-find browse-url-firefox-program) 'browse-url-firefox)
-     ((executable-find browse-url-galeon-program) 'browse-url-galeon)
-     ((executable-find browse-url-kde-program) 'browse-url-kde)
-     ((executable-find browse-url-netscape-program) 'browse-url-netscape)
-     ((executable-find browse-url-mosaic-program) 'browse-url-mosaic)
-     ((executable-find "tellw3b") 'browse-url-iximosaic)
-     ((executable-find browse-url-xterm-program) 'browse-url-lynx-xterm)
-     ((executable-find "mmm") 'browse-url-mmm)
-     ((locate-library "w3") 'browse-url-w3)
-     (t
-      (lambda (&ignore args) (error "No usable browser found"))))
-     url args))
+   (cond
+    ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
+    ((executable-find browse-url-mozilla-program) 'browse-url-mozilla)
+    ((executable-find browse-url-firefox-program) 'browse-url-firefox)
+    ((executable-find browse-url-galeon-program) 'browse-url-galeon)
+    ((executable-find browse-url-kde-program) 'browse-url-kde)
+    ((executable-find browse-url-netscape-program) 'browse-url-netscape)
+    ((executable-find browse-url-mosaic-program) 'browse-url-mosaic)
+    ((executable-find "tellw3b") 'browse-url-iximosaic)
+    ((executable-find browse-url-xterm-program) 'browse-url-lynx-xterm)
+    ((executable-find "mmm") 'browse-url-mmm)
+    ((locate-library "w3") 'browse-url-w3)
+    (t
+     (lambda (&ignore args) (error "No usable browser found"))))
+   url args))
 
 ;;;###autoload
 (defun browse-url-netscape (url &optional new-window)
@@ -893,11 +917,7 @@ is loaded in a new tab in an existing window instead.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
-  ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens and dollars.
-  (while (string-match "[,)$]" url)
-    (setq url (replace-match
-              (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
+  (setq url (browse-url-encode-url url))
   (let* ((process-environment (browse-url-process-environment))
         (process
          (apply 'start-process
@@ -939,7 +959,7 @@ How depends on `browse-url-netscape-version'."
   ;; <peter.kruse@psychologie.uni-regensburg.de>.
   (browse-url-netscape-send (if (>= browse-url-netscape-version 4)
                                "xfeDoCommand(reload)"
-                               "reload")))
+                             "reload")))
 
 (defun browse-url-netscape-send (command)
   "Send a remote control command to Netscape."
@@ -967,11 +987,7 @@ new tab in an existing window instead.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
-  ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens and dollars.
-  (while (string-match "[,)$]" url)
-    (setq url (replace-match
-              (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
+  (setq url (browse-url-encode-url url))
   (let* ((process-environment (browse-url-process-environment))
          (process
          (apply 'start-process
@@ -1029,11 +1045,7 @@ command line parameter.  Therefore, the
 are ignored as well.  Firefox on Windows will always open the requested
 URL in a new window."
   (interactive (browse-url-interactive-arg "URL: "))
-  ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens.
-  (while (string-match "[,)]" url)
-    (setq url (replace-match
-              (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
+  (setq url (browse-url-encode-url url))
   (let* ((process-environment (browse-url-process-environment))
         (process
          (apply 'start-process
@@ -1085,11 +1097,7 @@ new tab in an existing window instead.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
-  ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens and dollars.
-  (while (string-match "[,)$]" url)
-    (setq url (replace-match
-              (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
+  (setq url (browse-url-encode-url url))
   (let* ((process-environment (browse-url-process-environment))
          (process (apply 'start-process
                         (concat "galeon " url)
@@ -1134,11 +1142,7 @@ new tab in an existing window instead.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
-  ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens and dollars.
-  (while (string-match "[,)$]" url)
-    (setq url (replace-match
-              (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
+  (setq url (browse-url-encode-url url))
   (let* ((process-environment (browse-url-process-environment))
          (process (apply 'start-process
                         (concat "epiphany " url)
@@ -1200,7 +1204,7 @@ used instead of `browse-url-new-window-flag'."
         (append
          browse-url-gnome-moz-arguments
          (if (browse-url-maybe-new-window new-window)
-           '("--newwin"))
+             '("--newwin"))
          (list "--raise" url))))
 
 ;; --- Mosaic ---
@@ -1331,7 +1335,7 @@ prefix argument reverses the effect of `browse-url-new-window-flag'.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "W3 URL: "))
-  (require 'w3)                                ; w3-fetch-other-window not autoloaded
+  (require 'w3)                        ; w3-fetch-other-window not autoloaded
   (if (browse-url-maybe-new-window new-window)
       (w3-fetch-other-window url)
     (w3-fetch url)))
@@ -1343,11 +1347,11 @@ used instead of `browse-url-new-window-flag'."
 The `browse-url-gnudoit-program' program is used with options given by
 `browse-url-gnudoit-args'.  Default to the URL around or before point."
   (interactive (browse-url-interactive-arg "W3 URL: "))
-    (apply 'start-process (concat "gnudoit:" url) nil
-          browse-url-gnudoit-program
-          (append browse-url-gnudoit-args
-                  (list (concat "(w3-fetch \"" url "\")")
-                        "(raise-frame)"))))
+  (apply 'start-process (concat "gnudoit:" url) nil
+        browse-url-gnudoit-program
+        (append browse-url-gnudoit-args
+                (list (concat "(w3-fetch \"" url "\")")
+                      "(raise-frame)"))))
 
 ;; --- Lynx in an xterm ---
 
@@ -1360,8 +1364,8 @@ in an Xterm window using the Xterm program named by `browse-url-xterm-program'
 with possible additional arguments `browse-url-xterm-args'."
   (interactive (browse-url-interactive-arg "Lynx URL: "))
   (apply #'start-process `(,(concat "lynx" url) nil ,browse-url-xterm-program
-             ,@browse-url-xterm-args "-e" "lynx"
-            ,url)))
+                          ,@browse-url-xterm-args "-e" "lynx"
+                          ,url)))
 
 ;; --- Lynx in an Emacs "term" window ---
 
@@ -1379,7 +1383,7 @@ reverses the effect of `browse-url-new-window-flag'.
 When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "Lynx URL: "))
-  (let* ((system-uses-terminfo t)       ; Lynx uses terminfo
+  (let* ((system-uses-terminfo t)     ; Lynx uses terminfo
         ;; (term-term-name "vt100") ; ??
         (buf (get-buffer "*lynx*"))
         (proc (and buf (get-buffer-process buf)))
@@ -1420,11 +1424,11 @@ used instead of `browse-url-new-window-flag'."
                 (error "Please move out of the input field first"))
                ((eq browse-url-lynx-input-field 'avoid)
                 (while (and (eq (following-char) ?_) (> n 0))
-                  (term-send-down) ; down arrow
+                  (term-send-down)     ; down arrow
                   (sit-for browse-url-lynx-input-delay))
                 (if (eq (following-char) ?_)
                     (error "Cannot move out of the input field, sorry")))))
-      (term-send-string proc (concat "g" ; goto
+      (term-send-string proc (concat "g"    ; goto
                                     "\C-u" ; kill default url
                                     url
                                     "\r")))))
@@ -1499,7 +1503,7 @@ browser is started up in a new process with possible additional arguments
 don't offer a form of remote control."
   (interactive (browse-url-interactive-arg "URL: "))
   (if (not browse-url-generic-program)
-    (error "No browser defined (`browse-url-generic-program')"))
+      (error "No browser defined (`browse-url-generic-program')"))
   (apply 'call-process browse-url-generic-program nil
         0 nil
         (append browse-url-generic-args (list url))))
@@ -1511,7 +1515,56 @@ Default to the URL around or before point."
   (interactive (browse-url-interactive-arg "KDE URL: "))
   (message "Sending URL to KDE...")
   (apply #'start-process (concat "KDE " url) nil browse-url-kde-program
-                        (append browse-url-kde-args (list url))))
+        (append browse-url-kde-args (list url))))
+
+(defun browse-url-elinks-new-window (url)
+  "Ask the Elinks WWW browser to load URL in a new window."
+  (let ((process-environment (browse-url-process-environment)))     
+    (apply #'start-process
+          (append (list (concat "elinks:" url)
+                        nil)
+                  browse-url-elinks-wrapper
+                  (list "elinks" url)))))
+
+;;;###autoload
+(defun browse-url-elinks (url &optional new-window)
+  "Ask the Elinks WWW browser to load URL.
+Default to the URL around the point.
+
+The document is loaded in a new tab of a running Elinks or, if
+none yet running, a newly started instance.
+
+The Elinks command will be prepended by the program+arguments
+from `browse-url-elinks-wrapper'."
+  (interactive (browse-url-interactive-arg "URL: "))
+  (setq url (browse-url-encode-url url))
+  (if new-window
+      (browse-url-elinks-new-window url)
+    (let ((process-environment (browse-url-process-environment))
+         (elinks-ping-process (start-process "elinks-ping" nil
+                                             "elinks" "-remote" "ping()")))
+      (set-process-sentinel elinks-ping-process
+                           `(lambda (process change)
+                              (browse-url-elinks-sentinel process ,url))))))
+
+(defun browse-url-elinks-sentinel (process url)
+  "Determines if Elinks is running or a new one has to be started."
+  (let ((exit-status (process-exit-status process)))
+    ;; Try to determine if an instance is running or if we have to
+    ;; create a new one.
+    (case exit-status
+         (5
+          ;; No instance, start a new one.
+          (browse-url-elinks-new-window url))
+         (0
+          ;; Found an instance, open URL in new tab.
+          (let ((process-environment (browse-url-process-environment)))
+            (start-process (concat "elinks:" url) nil
+                           "elinks" "-remote"
+                           (concat "openURL(\"" url "\",new-tab)"))))
+         (otherwise
+          (error "Unrecognized exit-code %d of process `elinks'"
+                 exit-status)))))
 
 (provide 'browse-url)
 
index 0509ac9ab7912053b2aadba75c806b97bfb30879..2914ebdc1b0bd9a622354a9c678d1f5e818f1f4e 100644 (file)
@@ -69,10 +69,10 @@ These are the special commands of this mode:
     (switch-to-buffer (get-buffer-create "*EUDC Servers*"))
     (setq buffer-read-only nil)
     (erase-buffer)
-    (mapcar (function
-            (lambda (entry)
-              (setq proto-col (max (length (car entry)) proto-col))))
-           eudc-server-hotlist)
+    (mapc (function
+          (lambda (entry)
+            (setq proto-col (max (length (car entry)) proto-col))))
+         eudc-server-hotlist)
     (setq proto-col (+ 3 proto-col))
     (setq gap (make-string (- proto-col 6) ?\ ))
     (insert "              EUDC Servers\n"
@@ -82,7 +82,7 @@ These are the special commands of this mode:
            "------" gap "--------\n"
            "\n")
     (setq eudc-hotlist-list-beginning (point))
-    (mapcar '(lambda (entry)
+    (mapc '(lambda (entry)
             (insert (car entry))
             (indent-to proto-col)
             (insert (symbol-name (cdr entry)) "\n"))
index 4ee09a26951bf8589ec26f5f843420e4cccac7f8..0f300c20736ad914fc1a1bc901881e95d29b87f6 100644 (file)
@@ -502,15 +502,15 @@ otherwise they are formatted according to `eudc-user-attribute-names-alist'."
                 records))
          ;; Display the records
          (setq first-record (point))
-         (mapcar
+         (mapc
           (function
            (lambda (record)
              (setq beg (point))
              ;; Map over the record fields to print the attribute/value pairs
-             (mapcar (function
-                      (lambda (field)
-                        (eudc-print-record-field field width)))
-                     record)
+             (mapc (function
+                    (lambda (field)
+                      (eudc-print-record-field field width)))
+                   record)
              ;; Store the record internal format in some convenient place
              (overlay-put (make-overlay beg (point))
                           'eudc-record
@@ -540,13 +540,13 @@ otherwise they are formatted according to `eudc-user-attribute-names-alist'."
     (if (not (and (boundp 'eudc-form-widget-list)
                  eudc-form-widget-list))
        (error "Not in a directory query form buffer")
-      (mapcar (function
-              (lambda (wid-field)
-                (setq value (widget-value (cdr wid-field)))
-                (if (not (string= value ""))
-                    (setq query-alist (cons (cons (car wid-field) value)
-                                            query-alist)))))
-             eudc-form-widget-list)
+      (mapc (function
+            (lambda (wid-field)
+              (setq value (widget-value (cdr wid-field)))
+              (if (not (string= value ""))
+                  (setq query-alist (cons (cons (car wid-field) value)
+                                          query-alist)))))
+           eudc-form-widget-list)
       (kill-buffer (current-buffer))
       (eudc-display-records (eudc-query query-alist) eudc-use-raw-directory-names))))
 
@@ -565,15 +565,15 @@ otherwise they are formatted according to `eudc-user-attribute-names-alist'."
 
     (if (null (eudc-cdar rec))
        (list record)                   ; No duplicate attrs in this record
-      (mapcar (function
-              (lambda (field)
-                (if (listp (cdr field))
-                    (setq duplicates (cons field duplicates))
-                  (setq unique (cons field unique)))))
-             record)
+      (mapc (function
+            (lambda (field)
+              (if (listp (cdr field))
+                  (setq duplicates (cons field duplicates))
+                (setq unique (cons field unique)))))
+           record)
       (setq result (list unique))
       ;; Map over the record fields that have multiple values
-      (mapcar
+      (mapc
        (function
        (lambda (field)
          (let ((method (if (consp eudc-duplicate-attribute-handling-method)
@@ -641,7 +641,7 @@ Each copy is added a new field containing one of the values of FIELD."
     (while values
       (setcdr values (delete (car values) (cdr values)))
       (setq values (cdr values)))
-    (mapcar
+    (mapc
      (function
       (lambda (value)
        (let ((result-list (copy-sequence records)))
@@ -974,11 +974,11 @@ queries the server for the existing fields and displays a corresponding form."
                                   (capitalize (symbol-name field)))))
                            fields)))
     ;; Loop over prompt strings to find the longest one
-    (mapcar (function
-            (lambda (prompt)
-                    (if (> (length prompt) width)
-                        (setq width (length prompt)))))
-           prompts)
+    (mapc (function
+          (lambda (prompt)
+            (if (> (length prompt) width)
+                (setq width (length prompt)))))
+         prompts)
     ;; Insert the first widget out of the mapcar to leave the cursor
     ;; in the first field
     (widget-insert "\n\n" (format (concat "%" (int-to-string width) "s: ") (car prompts)))
@@ -988,15 +988,15 @@ queries the server for the existing fields and displays a corresponding form."
                                      eudc-form-widget-list))
     (setq fields (cdr fields))
     (setq prompts (cdr prompts))
-    (mapcar (function
-            (lambda (field)
-              (widget-insert "\n\n" (format (concat "%" (int-to-string width) "s: ") (car prompts)))
-              (setq widget (widget-create 'editable-field
-                                          :size 15))
-              (setq eudc-form-widget-list (cons (cons field widget)
-                                                eudc-form-widget-list))
-              (setq prompts (cdr prompts))))
-           fields)
+    (mapc (function
+          (lambda (field)
+            (widget-insert "\n\n" (format (concat "%" (int-to-string width) "s: ") (car prompts)))
+            (setq widget (widget-create 'editable-field
+                                        :size 15))
+            (setq eudc-form-widget-list (cons (cons field widget)
+                                              eudc-form-widget-list))
+            (setq prompts (cdr prompts))))
+         fields)
     (widget-insert "\n\n")
     (widget-create 'push-button
                   :notify (lambda (&rest ignore)
index f84d98aaed877088649b12267b6c839d8b7c22a4..7e37d9d41230266be98c2313ceda248f38eac703 100644 (file)
@@ -75,7 +75,7 @@
   "Return RECORD if it matches `eudc-bbdb-current-query', nil otherwise."
   (catch 'unmatch
     (progn
-      (mapcar
+      (mapc
        (function
        (lambda (condition)
          (let ((attr (car condition))
@@ -197,22 +197,22 @@ RETURN-ATTRS is a list of attributes to return, defaulting to
       (if (car query-attrs)
          (setq records (eval `(bbdb-search ,(quote records) ,@bbdb-attrs))))
       (setq query-attrs (cdr query-attrs)))
-    (mapcar (function
-            (lambda (record)
-              (setq filtered (eudc-filter-duplicate-attributes record))
-              ;; If there were duplicate attributes reverse the order of the
-              ;; record so the unique attributes appear first
-              (if (> (length filtered) 1)
-                  (setq filtered (mapcar (function
-                                          (lambda (rec)
-                                            (reverse rec)))
-                                         filtered)))
-              (setq result (append result filtered))))
-           (delq nil
-                 (mapcar 'eudc-bbdb-format-record-as-result
-                         (delq nil
-                               (mapcar 'eudc-bbdb-filter-non-matching-record
-                                       records)))))
+    (mapc (function
+          (lambda (record)
+            (setq filtered (eudc-filter-duplicate-attributes record))
+            ;; If there were duplicate attributes reverse the order of the
+            ;; record so the unique attributes appear first
+            (if (> (length filtered) 1)
+                (setq filtered (mapcar (function
+                                        (lambda (rec)
+                                          (reverse rec)))
+                                       filtered)))
+            (setq result (append result filtered))))
+         (delq nil
+               (mapcar 'eudc-bbdb-format-record-as-result
+                       (delq nil
+                             (mapcar 'eudc-bbdb-filter-non-matching-record
+                                     records)))))
     result))
 
 ;;}}}
index c484c590abff639704bd268aad70b8cbb47598e3..f286fe761c95a1144d4945594a37632019bcd8d9 100644 (file)
@@ -130,7 +130,7 @@ RETURN-ATTRS is a list of attributes to return, defaulting to
        (setq result (eudc-filter-partial-records result return-attrs)))
     ;; Apply eudc-duplicate-attribute-handling-method
     (if (not (eq 'list eudc-duplicate-attribute-handling-method))
-       (mapcar
+       (mapc
         (function (lambda (record)
                     (setq final-result
                           (append (eudc-filter-duplicate-attributes record)
index 66786a4e25ae98bc4432942ab0d8fdc72444e2ff..14fda445e45cfea6369b396981120769828afa08 100644 (file)
   :link '(custom-manual "(rcirc)")
   :group 'applications)
 
-(defcustom rcirc-default-server "irc.freenode.net"
-  "The default server to connect to."
-  :type 'string
+(defcustom rcirc-server-alist
+  '(("irc.freenode.net" :channels ("#rcirc")))
+  "An alist of IRC connections to establish when running `rcirc'.
+Each element looks like (SERVER-NAME PARAMETERS).
+
+SERVER-NAME is a string describing the server to connect
+to.
+
+The optional PARAMETERS come in pairs PARAMETER VALUE.
+
+The following parameters are recognized:
+
+`:nick'
+
+VALUE must be a string.  If absent, `rcirc-default-nick' is used
+for this connection.
+
+`:port'
+
+VALUE must be a number or string.  If absent,
+`rcirc-default-port' is used.
+
+`:user-name'
+
+VALUE must be a string.  If absent, `rcirc-default-user-name' is
+used.
+
+`:full-name'
+
+VALUE must be a string.  If absent, `rcirc-default-full-name' is
+used.
+
+`:channels'
+
+VALUE must be a list of strings describing which channels to join
+when connecting to this server.  If absent, no channels will be
+connected to automatically."
+  :type '(alist :key-type string
+               :value-type (plist :options ((nick string)
+                                            (port integer)
+                                            (user-name string)
+                                            (full-name string)
+                                            (channels (repeat string)))))
   :group 'rcirc)
 
 (defcustom rcirc-default-port 6667
   :type 'string
   :group 'rcirc)
 
-(defcustom rcirc-default-user-full-name (if (string= (user-full-name) "")
-                                           rcirc-default-user-name
-                                         (user-full-name))
+(defcustom rcirc-default-full-name (if (string= (user-full-name) "")
+                                      rcirc-default-user-name
+                                    (user-full-name))
   "The full name sent to the server when connecting."
   :type 'string
   :group 'rcirc)
 
-(defcustom rcirc-startup-channels-alist '(("^irc.freenode.net$" "#rcirc"))
-  "Alist of channels to join at startup.
-Each element looks like (SERVER-REGEXP . CHANNEL-LIST)."
-  :type '(alist :key-type string :value-type (repeat string))
-  :group 'rcirc)
-
 (defcustom rcirc-fill-flag t
   "*Non-nil means line-wrap messages printed in channel buffers."
   :type 'boolean
@@ -95,11 +129,9 @@ Each element looks like (SERVER-REGEXP . CHANNEL-LIST)."
 
 (defcustom rcirc-fill-column nil
   "*Column beyond which automatic line-wrapping should happen.
-If nil, use value of `fill-column'.
-If `window-width', use the window's width as maximum.
-If `frame-width', use the frame's width as maximum."
+If nil, use value of `fill-column'.  If 'frame-width, use the
+maximum frame width."
   :type '(choice (const :tag "Value of `fill-column'")
-                (const :tag "Full window width" window-width)
                 (const :tag "Full frame width" frame-width)
                 (integer :tag "Number of columns"))
   :group 'rcirc)
@@ -120,6 +152,11 @@ underneath each nick."
   "If non-nil, activity in this buffer is considered low priority.")
 (make-variable-buffer-local 'rcirc-low-priority-flag)
 
+(defvar rcirc-omit-mode nil
+  "Non-nil if Rcirc-Omit mode is enabled.
+Use the command `rcirc-omit-mode' to change this variable.")
+(make-variable-buffer-local 'rcirc-omit-mode)
+
 (defcustom rcirc-time-format "%H:%M "
   "*Describes how timestamps are printed.
 Used as the first arg to `format-time-string'."
@@ -145,7 +182,8 @@ number.  If zero or nil, no truncating is done."
   :group 'rcirc)
 
 (defcustom rcirc-scroll-show-maximum-output t
-  "*If non-nil, scroll buffer to keep the point at the bottom of the window."
+  "*If non-nil, scroll buffer to keep the point at the bottom of
+the window."
   :type 'boolean
   :group 'rcirc)
 
@@ -319,36 +357,69 @@ and the cdr part is used for encoding."
 (defconst rcirc-id-string (concat "rcirc on GNU Emacs " emacs-version))
 \f
 (defvar rcirc-startup-channels nil)
+
 ;;;###autoload
 (defun rcirc (arg)
-  "Connect to IRC.
-If ARG is non-nil, prompt for a server to connect to."
+  "Connect to all servers in `rcirc-server-alist'.
+
+Do not connect to a server if it is already connected.
+
+If ARG is non-nil, instead prompt for connection parameters."
   (interactive "P")
   (if arg
-      (let* ((server (read-string "IRC Server: " rcirc-default-server))
-            (port (read-string "IRC Port: " (number-to-string rcirc-default-port)))
-            (nick (read-string "IRC Nick: " rcirc-default-nick))
+      (let* ((server (completing-read "IRC Server: "
+                                     rcirc-server-alist
+                                     nil nil
+                                     (caar rcirc-server-alist)))
+            (server-plist (cdr (assoc-string server rcirc-server-alist)))
+            (port (read-string "IRC Port: "
+                               (number-to-string
+                                (or (plist-get server-plist 'port)
+                                    rcirc-default-port))))
+            (nick (read-string "IRC Nick: "
+                               (or (plist-get server-plist 'nick)
+                                   rcirc-default-nick)))
             (channels (split-string
                        (read-string "IRC Channels: "
-                                    (mapconcat 'identity (rcirc-startup-channels server) " "))
+                                    (mapconcat 'identity
+                                               (plist-get server-plist
+                                                          'channels)
+                                               " "))
                        "[, ]+" t)))
-       (rcirc-connect server port nick rcirc-default-user-name rcirc-default-user-full-name
+       (rcirc-connect server port nick rcirc-default-user-name
+                      rcirc-default-full-name
                       channels))
-    ;; make new connection using defaults unless already connected to
-    ;; the default rcirc-server
-    (let (connected)
-      (dolist (p (rcirc-process-list))
-       (when (string= rcirc-default-server (process-name p))
-         (setq connected p)))
-      (if (not connected)
-         (rcirc-connect rcirc-default-server rcirc-default-port
-                        rcirc-default-nick rcirc-default-user-name
-                        rcirc-default-user-full-name
-                        (rcirc-startup-channels rcirc-default-server))
-       (switch-to-buffer (process-buffer connected))
-       (message "Connected to %s"
-                (process-contact (get-buffer-process (current-buffer))
-                                 :host))))))
+    ;; connect to servers in `rcirc-server-alist'
+    (let (connected-servers)
+      (dolist (c rcirc-server-alist)
+       (let ((server (car c))
+             (nick (or (plist-get (cdr c) :nick) rcirc-default-nick))
+             (port (or (plist-get (cdr c) :port) rcirc-default-port))
+             (user-name (or (plist-get (cdr c) :user-name)
+                            rcirc-default-user-name))
+             (full-name (or (plist-get (cdr c) :full-name)
+                            rcirc-default-full-name))
+             (channels (plist-get (cdr c) :channels)))
+         (when server
+           (let (connected)
+             (dolist (p (rcirc-process-list))
+               (when (string= server (process-name p))
+                 (setq connected p)))
+             (if (not connected)
+                 (condition-case e
+                     (rcirc-connect server port nick user-name
+                                    full-name channels)
+                   (quit (message "Quit connecting to %s" server)))
+               (with-current-buffer (process-buffer connected)
+                 (setq connected-servers
+                       (cons (process-contact (get-buffer-process
+                                               (current-buffer)) :host)
+                             connected-servers))))))))
+      (when connected-servers
+       (message "Already connected to %s"
+                (concat (mapconcat 'identity (butlast connected-servers) ", ")
+                        ", and " (car (last connected-servers))))))))
+
 ;;;###autoload
 (defalias 'irc 'rcirc)
 
@@ -365,7 +436,8 @@ If ARG is non-nil, prompt for a server to connect to."
 (defvar rcirc-process nil)
 
 ;;;###autoload
-(defun rcirc-connect (&optional server port nick user-name full-name startup-channels)
+(defun rcirc-connect (server &optional port nick user-name full-name
+                            startup-channels)
   (save-excursion
     (message "Connecting to %s..." server)
     (let* ((inhibit-eol-conversion)
@@ -374,10 +446,9 @@ If ARG is non-nil, prompt for a server to connect to."
                                (string-to-number port)
                              port)
                          rcirc-default-port))
-          (server (or server rcirc-default-server))
           (nick (or nick rcirc-default-nick))
           (user-name (or user-name rcirc-default-user-name))
-          (full-name (or full-name rcirc-default-user-full-name))
+          (full-name (or full-name rcirc-default-full-name))
           (startup-channels startup-channels)
            (process (make-network-process :name server :host server :service port-number)))
       ;; set up process
@@ -412,6 +483,8 @@ If ARG is non-nil, prompt for a server to connect to."
       (make-local-variable 'rcirc-connecting)
       (setq rcirc-connecting t)
 
+      (add-hook 'auto-save-hook 'rcirc-log-write)
+
       ;; identify
       (rcirc-send-string process (concat "NICK " nick))
       (rcirc-send-string process (concat "USER " user-name
@@ -446,12 +519,21 @@ last ping."
       (mapc (lambda (process)
              (with-rcirc-process-buffer process
                (when (not rcirc-connecting)
-                 (rcirc-send-string process (concat "PING " (rcirc-server-name process))))))
+                 (rcirc-send-string process
+                                    (format "PRIVMSG %s :\C-aKEEPALIVE %f\C-a"
+                                            rcirc-nick
+                                            (time-to-seconds
+                                             (current-time)))))))
             (rcirc-process-list))
     ;; no processes, clean up timer
     (cancel-timer rcirc-keepalive-timer)
     (setq rcirc-keepalive-timer nil)))
 
+(defun rcirc-handler-ctcp-KEEPALIVE (process target sender message)
+  (with-rcirc-process-buffer process
+    (setq header-line-format (format "%f" (- (time-to-seconds (current-time))
+                                            (string-to-number message))))))
+
 (defvar rcirc-debug-buffer " *rcirc debug*")
 (defvar rcirc-debug-flag nil
   "If non-nil, write information to `rcirc-debug-buffer'.")
@@ -461,14 +543,13 @@ Debug text is written to `rcirc-debug-buffer' if `rcirc-debug-flag'
 is non-nil."
   (when rcirc-debug-flag
     (save-excursion
-      (save-window-excursion
-        (set-buffer (get-buffer-create rcirc-debug-buffer))
-        (goto-char (point-max))
-        (insert (concat
-                 "["
-                 (format-time-string "%Y-%m-%dT%T ") (process-name process)
-                 "] "
-                 text))))))
+      (set-buffer (get-buffer-create rcirc-debug-buffer))
+      (goto-char (point-max))
+      (insert (concat
+              "["
+              (format-time-string "%Y-%m-%dT%T ") (process-name process)
+              "] "
+              text)))))
 
 (defvar rcirc-sentinel-hooks nil
   "Hook functions called when the process sentinel is called.
@@ -486,12 +567,16 @@ Functions are called with PROCESS and SENTINEL arguments.")
                               (process-name process)
                               sentinel
                               (process-status process)) (not rcirc-target))
-         ;; remove the prompt from buffers
-         (let ((inhibit-read-only t))
-           (delete-region rcirc-prompt-start-marker
-                          rcirc-prompt-end-marker))))
+         (rcirc-disconnect-buffer)))
       (run-hook-with-args 'rcirc-sentinel-hooks process sentinel))))
 
+(defun rcirc-disconnect-buffer (&optional buffer)
+  (with-current-buffer (or buffer (current-buffer))
+    ;; set rcirc-target to nil for each channel so cleanup
+    ;; doesnt happen when we reconnect
+    (setq rcirc-target nil)
+    (setq mode-line-process ":disconnected")))
+
 (defun rcirc-process-list ()
   "Return a list of rcirc processes."
   (let (ps)
@@ -530,7 +615,6 @@ Function is called with PROCESS, COMMAND, SENDER, ARGS and LINE.")
                                               process))))))
 
 (defun rcirc-delete-process (process)
-  (message "delete process %S" process)
   (delete-process process))
 
 (defvar rcirc-trap-errors-flag t)
@@ -593,7 +677,8 @@ With no argument or nil as argument, use the current buffer."
 (defun rcirc-server-name (process)
   "Return PROCESS server name, given by the 001 response."
   (with-rcirc-process-buffer process
-    (or rcirc-server-name rcirc-default-server)))
+    (or rcirc-server-name
+       (warn "server name for process %S unknown" process))))
 
 (defun rcirc-nick (process)
   "Return PROCESS nick."
@@ -610,9 +695,10 @@ With no argument or nil as argument, use the current buffer."
 (defvar rcirc-max-message-length 420
   "Messages longer than this value will be split.")
 
-(defun rcirc-send-message (process target message &optional noticep)
+(defun rcirc-send-message (process target message &optional noticep silent)
   "Send TARGET associated with PROCESS a privmsg with text MESSAGE.
-If NOTICEP is non-nil, send a notice instead of privmsg."
+If NOTICEP is non-nil, send a notice instead of privmsg.
+If SILENT is non-nil, do not print the message in any irc buffer."
   ;; max message length is 512 including CRLF
   (let* ((response (if noticep "NOTICE" "PRIVMSG"))
          (oversize (> (length message) rcirc-max-message-length))
@@ -625,8 +711,9 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
          (more (if oversize
                    (substring message rcirc-max-message-length))))
     (rcirc-get-buffer-create process target)
-    (rcirc-print process (rcirc-nick process) response target text)
     (rcirc-send-string process (concat response " " target " :" text))
+    (unless silent
+      (rcirc-print process (rcirc-nick process) response target text))
     (when more (rcirc-send-message process target more noticep))))
 
 (defvar rcirc-input-ring nil)
@@ -711,7 +798,7 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
 (define-key rcirc-mode-map (kbd "C-c C-d") 'rcirc-cmd-mode)
 (define-key rcirc-mode-map (kbd "C-c C-m") 'rcirc-cmd-msg)
 (define-key rcirc-mode-map (kbd "C-c C-r") 'rcirc-cmd-nick) ; rename
-(define-key rcirc-mode-map (kbd "C-c C-o") 'rcirc-cmd-oper)
+(define-key rcirc-mode-map (kbd "C-c C-o") 'rcirc-omit-mode)
 (define-key rcirc-mode-map (kbd "C-c C-p") 'rcirc-cmd-part)
 (define-key rcirc-mode-map (kbd "C-c C-q") 'rcirc-cmd-query)
 (define-key rcirc-mode-map (kbd "C-c C-t") 'rcirc-cmd-topic)
@@ -737,6 +824,10 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
 
 (defvar rcirc-last-post-time nil)
 
+(defvar rcirc-log-alist nil
+  "Alist of lines to log to disk when `rcirc-log-flag' is non-nil.
+Each element looks like (FILENAME . TEXT).")
+
 (defun rcirc-mode (process target)
   "Major mode for IRC channel buffers.
 
@@ -745,6 +836,7 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
   (use-local-map rcirc-mode-map)
   (setq mode-name "rcirc")
   (setq major-mode 'rcirc-mode)
+  (setq mode-line-process nil)
 
   (make-local-variable 'rcirc-input-ring)
   (setq rcirc-input-ring (make-ring rcirc-input-ring-size))
@@ -756,6 +848,8 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
   (setq rcirc-topic nil)
   (make-local-variable 'rcirc-last-post-time)
   (setq rcirc-last-post-time (current-time))
+  (make-local-variable 'fill-paragraph-function)
+  (setq fill-paragraph-function 'rcirc-fill-paragraph)
 
   (make-local-variable 'rcirc-short-buffer-name)
   (setq rcirc-short-buffer-name nil)
@@ -785,6 +879,8 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
   (setq overlay-arrow-position (make-marker))
   (set-marker overlay-arrow-position nil)
 
+  (setq buffer-invisibility-spec '(rcirc-ignored-user))
+
   ;; if the user changes the major mode or kills the buffer, there is
   ;; cleanup work to do
   (add-hook 'change-major-mode-hook 'rcirc-change-major-mode-hook nil t)
@@ -873,14 +969,16 @@ If ALL is non-nil, update prompts in all IRC buffers."
        (when rcirc-target
          (rcirc-remove-nick-channel (rcirc-buffer-process)
                                     (rcirc-buffer-nick)
-                                    rcirc-target))))))
+                                    rcirc-target))))
+    (setq rcirc-target nil)))
 
 (defun rcirc-generate-new-buffer-name (process target)
   "Return a buffer name based on PROCESS and TARGET.
 This is used for the initial name given to IRC buffers."
-  (if target
-      (concat target "@" (process-name process))
-    (concat "*" (process-name process) "*")))
+  (substring-no-properties
+   (if target
+       (concat target "@" (process-name process))
+     (concat "*" (process-name process) "*"))))
 
 (defun rcirc-get-buffer (process target &optional server)
   "Return the buffer associated with the PROCESS and TARGET.
@@ -902,14 +1000,14 @@ Create the buffer if it doesn't exist."
          (when (not rcirc-target)
            (setq rcirc-target target))
          buffer)
-       ;; create the buffer
-       (with-rcirc-process-buffer process
-         (let ((new-buffer (get-buffer-create
-                            (rcirc-generate-new-buffer-name process target))))
-           (with-current-buffer new-buffer
-             (rcirc-mode process target))
-           (rcirc-put-nick-channel process (rcirc-nick process) target)
-           new-buffer)))))
+      ;; create the buffer
+      (with-rcirc-process-buffer process
+       (let ((new-buffer (get-buffer-create
+                          (rcirc-generate-new-buffer-name process target))))
+         (with-current-buffer new-buffer
+           (rcirc-mode process target))
+         (rcirc-put-nick-channel process (rcirc-nick process) target)
+         new-buffer)))))
 
 (defun rcirc-send-input ()
   "Send input to target associated with the current buffer."
@@ -943,6 +1041,14 @@ Create the buffer if it doesn't exist."
          (ring-insert rcirc-input-ring input)
          (setq rcirc-input-ring-index 0))))))
 
+(defun rcirc-fill-paragraph (&optional arg)
+  (interactive "p")
+  (when (> (point) rcirc-prompt-end-marker)
+    (save-restriction
+      (narrow-to-region rcirc-prompt-end-marker (point-max))
+      (let ((fill-column rcirc-max-message-length))
+       (fill-region (point-min) (point-max))))))
+
 (defun rcirc-process-input-line (line)
   (if (string-match "^/\\([^ ]+\\) ?\\(.*\\)$" line)
       (rcirc-process-command (match-string 1 line)
@@ -1021,7 +1127,6 @@ Create the buffer if it doesn't exist."
 (defun rcirc-multiline-minor-submit ()
   "Send the text in buffer back to parent buffer."
   (interactive)
-  (assert rcirc-parent-buffer)
   (untabify (point-min) (point-max))
   (let ((text (buffer-substring (point-min) (point-max)))
         (buffer (current-buffer))
@@ -1052,12 +1157,12 @@ Create the buffer if it doesn't exist."
        (process-buffer process)))))
 
 (defcustom rcirc-response-formats
-  '(("PRIVMSG" . "%T<%N> %m")
-    ("NOTICE"  . "%T-%N- %m")
-    ("ACTION"  . "%T[%N %m]")
-    ("COMMAND" . "%T%m")
-    ("ERROR"   . "%T%fw!!! %m")
-    (t         . "%T%fp*** %fs%n %r %m"))
+  '(("PRIVMSG" . "<%N> %m")
+    ("NOTICE"  . "-%N- %m")
+    ("ACTION"  . "[%N %m]")
+    ("COMMAND" . "%m")
+    ("ERROR"   . "%fw!!! %m")
+    (t         . "%fp*** %fs%n %r %m"))
   "An alist of formats used for printing responses.
 The format is looked up using the response-type as a key;
 if no match is found, the default entry (with a key of `t') is used.
@@ -1069,7 +1174,6 @@ the of the following escape sequences replaced by the described values:
   %n        The sender's nick
   %N        The sender's nick (with face `rcirc-my-nick' or `rcirc-other-nick')
   %r        The response-type
-  %T        The timestamp (with face `rcirc-timestamp')
   %t        The target
   %fw       Following text uses the face `font-lock-warning-face'
   %fp       Following text uses the face `rcirc-server-prefix'
@@ -1082,92 +1186,67 @@ the of the following escape sequences replaced by the described values:
                :value-type string)
   :group 'rcirc)
 
+(defcustom rcirc-omit-responses
+  '("JOIN" "PART" "QUIT")
+  "Responses which will be hidden when `rcirc-omit-mode' is enabled."
+  :type '(repeat string)
+  :group 'rcirc)
+
 (defun rcirc-format-response-string (process sender response target text)
   "Return a nicely-formatted response string, incorporating TEXT
 \(and perhaps other arguments).  The specific formatting used
 is found by looking up RESPONSE in `rcirc-response-formats'."
-  (let ((chunks
-        (split-string (or (cdr (assoc response rcirc-response-formats))
-                          (cdr (assq t rcirc-response-formats)))
-                      "%"))
-       (sender (or sender ""))
-       (result "")
-       (face nil)
-       key face-key repl)
-    (when (equal (car chunks) "")
-      (pop chunks))
-    (dolist (chunk chunks)
-      (if (equal chunk "")
-         (setq key ?%)
-       (setq key (aref chunk 0))
-       (setq chunk (substring chunk 1)))
-      (setq repl
-           (cond ((eq key ?%)
-                  ;; %% -- literal % character
-                  "%")
-                 ((or (eq key ?n) (eq key ?N))
-                  ;; %n/%N -- nick
-                  (let ((nick (concat (if (string= (rcirc-server-name process)
-                                                   sender)
-                                          ""
-                                        sender)
-                                      (and target (concat "," target)))))
-                    (rcirc-facify nick
-                                  (if (eq key ?n)
-                                      face
-                                    (cond ((string= sender (rcirc-nick process))
-                                           'rcirc-my-nick)
-                                          ((and rcirc-bright-nicks
-                                                (string-match
-                                                 (regexp-opt rcirc-bright-nicks)
-                                                 sender))
-                                           'rcirc-bright-nick)
-                                          ((and rcirc-dim-nicks
-                                                (string-match
-                                                 (regexp-opt rcirc-dim-nicks)
-                                                 sender))
-                                           'rcirc-dim-nick)
-                                          (t
-                                           'rcirc-other-nick))))))
-                  ((eq key ?T)
-                  ;; %T -- timestamp
-                  (rcirc-facify
-                   (format-time-string rcirc-time-format (current-time))
-                   'rcirc-timestamp))
-                 ((eq key ?m)
-                  ;; %m -- message text
-                  (rcirc-markup-text process sender response (rcirc-facify text face)))
-                 ((eq key ?t)
-                  ;; %t -- target
-                  (rcirc-facify (or rcirc-target "") face))
-                 ((eq key ?r)
-                  ;; %r -- response
-                  (rcirc-facify response face))
-                 ((eq key ?f)
-                  ;; %f -- change face
-                  (setq face-key (aref chunk 0))
-                  (setq chunk (substring chunk 1))
-                  (cond ((eq face-key ?w)
-                         ;; %fw -- warning face
-                         (setq face 'font-lock-warning-face))
-                        ((eq face-key ?p)
-                         ;; %fp -- server-prefix face
-                         (setq face 'rcirc-server-prefix))
-                        ((eq face-key ?s)
-                         ;; %fs -- warning face
-                         (setq face 'rcirc-server))
-                        ((eq face-key ?-)
-                         ;; %fs -- warning face
-                         (setq face nil))
-                        ((and (eq face-key ?\[)
-                              (string-match "^\\([^]]*\\)[]]" chunk)
-                              (facep (match-string 1 chunk)))
-                         ;; %f[...] -- named face
-                         (setq face (intern (match-string 1 chunk)))
-                         (setq chunk (substring chunk (match-end 0)))))
-                  "")))
-      (setq result (concat result repl (rcirc-facify chunk face))))
-    result))
+  (with-temp-buffer
+    (insert (or (cdr (assoc response rcirc-response-formats))
+               (cdr (assq t rcirc-response-formats))))
+    (goto-char (point-min))
+    (let ((start (point-min))
+         (sender (if (or (not sender)
+                         (string= (rcirc-server-name process) sender))
+                     ""
+                   sender))
+         face)
+      (while (re-search-forward "%\\(\\(f\\(.\\)\\)\\|\\(.\\)\\)" nil t)
+       (rcirc-add-face start (match-beginning 0) face)
+       (setq start (match-beginning 0))
+       (replace-match
+        (case (aref (match-string 1) 0)
+           (?f (setq face
+                     (case (string-to-char (match-string 3))
+                       (?w 'font-lock-warning-face)
+                       (?p 'rcirc-server-prefix)
+                       (?s 'rcirc-server)
+                       (t nil)))
+               "")
+           (?n sender)
+           (?N (let ((my-nick (rcirc-nick process)))
+                 (save-match-data
+                   (with-syntax-table rcirc-nick-syntax-table
+                     (rcirc-facify sender
+                                   (cond ((string= sender my-nick)
+                                          'rcirc-my-nick)
+                                         ((and rcirc-bright-nicks
+                                               (string-match
+                                                (regexp-opt rcirc-bright-nicks
+                                                            'words)
+                                                sender))
+                                          'rcirc-bright-nick)
+                                         ((and rcirc-dim-nicks
+                                               (string-match
+                                                (regexp-opt rcirc-dim-nicks
+                                                            'words)
+                                                sender))
+                                          'rcirc-dim-nick)
+                                         (t
+                                          'rcirc-other-nick)))))))
+           (?m (propertize text 'rcirc-text text))
+           (?r response)
+           (?t (or target ""))
+           (t (concat "UNKNOWN CODE:" (match-string 0))))
+        t t nil 0)
+       (rcirc-add-face (match-beginning 0) (match-end 0) face))
+      (rcirc-add-face start (match-beginning 0) face))
+      (buffer-substring (point-min) (point-max))))
 
 (defun rcirc-target-buffer (process sender response target text)
   "Return a buffer to print the server response."
@@ -1177,7 +1256,8 @@ is found by looking up RESPONSE in `rcirc-response-formats'."
           (rcirc-any-buffer process))
          ((not (rcirc-channel-p target))
           ;; message from another user
-          (if (string= response "PRIVMSG")
+          (if (or (string= response "PRIVMSG")
+                  (string= response "ACTION"))
               (rcirc-get-buffer-create process (if (string= sender rcirc-nick)
                                                    target
                                                  sender))
@@ -1190,16 +1270,28 @@ is found by looking up RESPONSE in `rcirc-response-formats'."
 (defvar rcirc-last-sender nil)
 (make-variable-buffer-local 'rcirc-last-sender)
 
+(defcustom rcirc-log-directory "~/.emacs.d/rcirc-log"
+  "Directory to keep IRC logfiles."
+  :type 'directory
+  :group 'rcirc)
+
+(defcustom rcirc-log-flag nil
+  "Non-nil means log IRC activity to disk.
+Logfiles are kept in `rcirc-log-directory'."
+  :type 'boolean
+  :group 'rcirc)
+
 (defun rcirc-print (process sender response target text &optional activity)
   "Print TEXT in the buffer associated with TARGET.
 Format based on SENDER and RESPONSE.  If ACTIVITY is non-nil,
 record activity."
   (or text (setq text ""))
-  (unless (or (member sender rcirc-ignore-list)
-             (member (with-syntax-table rcirc-nick-syntax-table
-                       (when (string-match "^\\([^/]\\w*\\)[:,]" text)
-                         (match-string 1 text)))
-                     rcirc-ignore-list))
+  (unless (and (or (member sender rcirc-ignore-list)
+                  (member (with-syntax-table rcirc-nick-syntax-table
+                            (when (string-match "^\\([^/]\\w*\\)[:,]" text)
+                              (match-string 1 text)))
+                          rcirc-ignore-list))
+              (not (string= sender (rcirc-nick process))))
     (let* ((buffer (rcirc-target-buffer process sender response target text))
           (inhibit-read-only t))
       (with-current-buffer buffer
@@ -1212,7 +1304,8 @@ record activity."
            (setq text (decode-coding-string text rcirc-decode-coding-system))
            ;; mark the line with overlay arrow
            (unless (or (marker-position overlay-arrow-position)
-                       (get-buffer-window (current-buffer)))
+                       (get-buffer-window (current-buffer))
+                       (member response rcirc-omit-responses))
              (set-marker overlay-arrow-position
                          (marker-position rcirc-prompt-start-marker))))
 
@@ -1222,44 +1315,40 @@ record activity."
          (set-marker-insertion-type rcirc-prompt-start-marker t)
          (set-marker-insertion-type rcirc-prompt-end-marker t)
 
-         (let ((fmted-text
-                (rcirc-format-response-string process sender response nil
-                                              text)))
-
-           (insert fmted-text (propertize "\n" 'hard t))
-           (set-marker-insertion-type rcirc-prompt-start-marker nil)
-           (set-marker-insertion-type rcirc-prompt-end-marker nil)
-
-           (let ((text-start (make-marker)))
-             (set-marker text-start
-                         (or (next-single-property-change fill-start
-                                                          'rcirc-text)
-                             rcirc-prompt-end-marker))
-             ;; squeeze spaces out of text before rcirc-text
-             (fill-region fill-start (1- text-start))
-
-             ;; fill the text we just inserted, maybe
-             (when (and rcirc-fill-flag
-                        (not (string= response "372"))) ;/motd
-               (let ((fill-prefix
-                      (or rcirc-fill-prefix
-                          (make-string (- text-start fill-start) ?\s)))
-                     (fill-column (cond ((eq rcirc-fill-column 'frame-width)
-                                         (1- (frame-width)))
-                                        ((eq rcirc-fill-column 'window-width)
-                                         (1- (window-width)))
-                                        (rcirc-fill-column
-                                         rcirc-fill-column)
-                                        (t fill-column))))
-                 (fill-region fill-start rcirc-prompt-start-marker 'left t)))))
-
-         ;; set inserted text to be read-only
-         (when rcirc-read-only-flag
-           (put-text-property rcirc-prompt-start-marker fill-start 'read-only t)
-           (let ((inhibit-read-only t))
-             (put-text-property rcirc-prompt-start-marker fill-start
-                                'front-sticky t)
-             (put-text-property (1- (point)) (point) 'rear-nonsticky t)))
+         (let ((start (point)))
+           (insert (rcirc-format-response-string process sender response nil
+                                                 text)
+                   (propertize "\n" 'hard t))
+
+           ;; squeeze spaces out of text before rcirc-text
+           (fill-region fill-start
+                        (1- (or (next-single-property-change fill-start
+                                                             'rcirc-text)
+                                rcirc-prompt-end-marker)))
+
+           ;; run markup functions
+           (save-excursion
+             (save-restriction
+               (narrow-to-region start rcirc-prompt-start-marker)
+               (goto-char (or (next-single-property-change start 'rcirc-text)
+                              (point)))
+               (when (rcirc-buffer-process)
+                 (save-excursion (rcirc-markup-timestamp sender response))
+                 (dolist (fn rcirc-markup-text-functions)
+                   (save-excursion (funcall fn sender response)))
+                 (save-excursion (rcirc-markup-fill sender response)))
+
+               (when rcirc-read-only-flag
+                 (add-text-properties (point-min) (point-max)
+                                      '(read-only t front-sticky t))))
+             ;; make text omittable
+             (when (and (member response rcirc-omit-responses)
+                        (> start (point-min)))
+               (put-text-property (1- start) (1- rcirc-prompt-start-marker)
+                                  'invisible 'rcirc-omit))))
+
+         (set-marker-insertion-type rcirc-prompt-start-marker nil)
+         (set-marker-insertion-type rcirc-prompt-end-marker nil)
 
          ;; truncate buffer if it is very long
          (save-excursion
@@ -1275,27 +1364,26 @@ record activity."
                                         (window-buffer w))
                                     (>= (window-point w)
                                         rcirc-prompt-end-marker))
-                           (set-window-point w (point-max))))
+                             (set-window-point w (point-max))))
                        nil t)
 
          ;; restore the point
          (goto-char (if moving rcirc-prompt-end-marker old-point))
 
-        ;; keep window on bottom line if it was already there
+         ;; keep window on bottom line if it was already there
          (when rcirc-scroll-show-maximum-output
            (walk-windows (lambda (w)
                            (when (eq (window-buffer w) (current-buffer))
                              (with-current-buffer (window-buffer w)
                                (when (eq major-mode 'rcirc-mode)
                                  (with-selected-window w
-                                   (when (<= (- (window-height)
-                                                (count-screen-lines
-                                                 (window-point)
-                                                 (window-start))
+                                   (when (<= (- (window-height)
+                                                (count-screen-lines (window-point)
+                                                                    (window-start))
                                                 1)
                                              0)
                                      (recenter -1)))))))
-                         nil t))
+                                 nil t))
 
          ;; flush undo (can we do something smarter here?)
          (buffer-disable-undo)
@@ -1305,22 +1393,45 @@ record activity."
        (when (and activity
                   (not rcirc-ignore-buffer-activity-flag)
                   (not (and rcirc-dim-nicks sender
-                            (string-match (regexp-opt rcirc-dim-nicks) sender))))
+                            (string-match (regexp-opt rcirc-dim-nicks) sender)
+                            (rcirc-channel-p target))))
              (rcirc-record-activity (current-buffer)
                                     (when (not (rcirc-channel-p rcirc-target))
                                       'nick)))
 
+       (when rcirc-log-flag
+         (rcirc-log process sender response target text))
+
        (sit-for 0)                     ; displayed text before hook
        (run-hook-with-args 'rcirc-print-hooks
                            process sender response target text)))))
 
-(defun rcirc-startup-channels (server)
-  "Return the list of startup channels for SERVER."
-  (let (channels)
-    (dolist (i rcirc-startup-channels-alist)
-      (if (string-match (car i) server)
-          (setq channels (append channels (cdr i)))))
-    channels))
+(defun rcirc-log (process sender response target text)
+  "Record line in `rcirc-log', to be later written to disk."
+  (let* ((filename (rcirc-generate-new-buffer-name process target))
+        (cell (assoc-string filename rcirc-log-alist))
+        (line (concat (format-time-string rcirc-time-format)
+                      (substring-no-properties
+                       (rcirc-format-response-string process sender
+                                                     response target text))
+                      "\n")))
+    (if cell
+       (setcdr cell (concat (cdr cell) line))
+      (setq rcirc-log-alist
+           (cons (cons filename line) rcirc-log-alist)))))
+
+(defun rcirc-log-write ()
+  "Flush `rcirc-log-alist' data to disk.
+
+Log data is written to `rcirc-log-directory'."
+  (make-directory rcirc-log-directory t)
+  (dolist (cell rcirc-log-alist)
+    (with-temp-buffer
+      (insert (cdr cell))
+      (write-region (point-min) (point-max)
+                   (concat rcirc-log-directory "/" (car cell))
+                   t 'quiet)))
+  (setq rcirc-log-alist nil))
 
 (defun rcirc-join-channels (process channels)
   "Join CHANNELS."
@@ -1437,6 +1548,9 @@ if NICK is also on `rcirc-ignore-list-automatic'."
 (or (assq 'rcirc-low-priority-flag minor-mode-alist)
     (setq minor-mode-alist
           (cons '(rcirc-low-priority-flag " LowPri") minor-mode-alist)))
+(or (assq 'rcirc-omit-mode minor-mode-alist)
+    (setq minor-mode-alist
+          (cons '(rcirc-omit-mode " Omit") minor-mode-alist)))
 
 (defun rcirc-toggle-ignore-buffer-activity ()
   "Toggle the value of `rcirc-ignore-buffer-activity-flag'."
@@ -1458,48 +1572,59 @@ if NICK is also on `rcirc-ignore-list-automatic'."
             "Activity in this buffer is normal priority"))
   (force-mode-line-update))
 
-(defvar rcirc-switch-to-buffer-function 'switch-to-buffer
-  "Function to use when switching buffers.
-Possible values are `switch-to-buffer', `pop-to-buffer', and
-`display-buffer'.")
+(defun rcirc-omit-mode ()
+  "Toggle the Rcirc-Omit mode.
+If enabled, \"uninteresting\" lines are not shown.
+Uninteresting lines are those whose responses are listed in
+`rcirc-omit-responses'."
+  (interactive)
+  (setq rcirc-omit-mode (not rcirc-omit-mode))
+  (let ((line (1- (count-screen-lines (point) (window-start)))))
+    (if rcirc-omit-mode
+       (progn
+         (add-to-invisibility-spec 'rcirc-omit)
+         (message "Rcirc-Omit mode enabled"))
+      (remove-from-invisibility-spec 'rcirc-omit)
+      (message "Rcirc-Omit mode disabled"))
+    (recenter line))
+  (force-mode-line-update))
 
 (defun rcirc-switch-to-server-buffer ()
   "Switch to the server buffer associated with current channel buffer."
   (interactive)
-  (funcall rcirc-switch-to-buffer-function rcirc-server-buffer))
+  (switch-to-buffer rcirc-server-buffer))
 
 (defun rcirc-jump-to-first-unread-line ()
   "Move the point to the first unread line in this buffer."
   (interactive)
-  (when (marker-position overlay-arrow-position)
-    (goto-char overlay-arrow-position)))
-
-(defvar rcirc-last-non-irc-buffer nil
-  "The buffer to switch to when there is no more activity.")
+  (if (marker-position overlay-arrow-position)
+      (goto-char overlay-arrow-position)
+    (message "No unread messages")))
+
+(defun rcirc-non-irc-buffer ()
+  (let ((buflist (buffer-list))
+       buffer)
+    (while (and buflist (not buffer))
+      (with-current-buffer (car buflist)
+       (unless (or (eq major-mode 'rcirc-mode)
+                   (= ?\s (aref (buffer-name) 0)) ; internal buffers
+                   (get-buffer-window (current-buffer)))
+         (setq buffer (current-buffer))))
+      (setq buflist (cdr buflist)))
+    buffer))
 
 (defun rcirc-next-active-buffer (arg)
-  "Go to the next rcirc buffer with activity.
-With prefix ARG, go to the next low priority buffer with activity.
-The function given by `rcirc-switch-to-buffer-function' is used to
-show the buffer."
+  "Switch to the next rcirc buffer with activity.
+With prefix ARG, go to the next low priority buffer with activity."
   (interactive "P")
   (let* ((pair (rcirc-split-activity rcirc-activity))
         (lopri (car pair))
         (hipri (cdr pair)))
     (if (or (and (not arg) hipri)
            (and arg lopri))
-       (progn
-         (unless (eq major-mode 'rcirc-mode)
-           (setq rcirc-last-non-irc-buffer (current-buffer)))
-         (funcall rcirc-switch-to-buffer-function
-                  (car (if arg lopri hipri))))
+       (switch-to-buffer (car (if arg lopri hipri)) t)
       (if (eq major-mode 'rcirc-mode)
-         (if (not (and rcirc-last-non-irc-buffer
-                       (buffer-live-p rcirc-last-non-irc-buffer)))
-             (message "No IRC activity.  Start something.")
-           (message "No more IRC activity.  Go back to work.")
-           (funcall rcirc-switch-to-buffer-function rcirc-last-non-irc-buffer)
-           (setq rcirc-last-non-irc-buffer nil))
+         (switch-to-buffer (rcirc-non-irc-buffer))
        (message (concat
                  "No IRC activity."
                  (when lopri
@@ -1518,23 +1643,33 @@ activity.  Only run if the buffer is not visible and
 (defun rcirc-record-activity (buffer &optional type)
   "Record BUFFER activity with TYPE."
   (with-current-buffer buffer
-    (when (not (get-buffer-window (current-buffer) t))
-      (setq rcirc-activity
-           (sort (add-to-list 'rcirc-activity (current-buffer))
-                 (lambda (b1 b2)
-                   (let ((t1 (with-current-buffer b1 rcirc-last-post-time))
-                         (t2 (with-current-buffer b2 rcirc-last-post-time)))
-                     (time-less-p t2 t1)))))
-      (pushnew type rcirc-activity-types)
-      (rcirc-update-activity-string)))
+    (let ((old-activity rcirc-activity)
+         (old-types rcirc-activity-types))
+      (when (not (get-buffer-window (current-buffer) t))
+       (setq rcirc-activity
+             (sort (add-to-list 'rcirc-activity (current-buffer))
+                   (lambda (b1 b2)
+                     (let ((t1 (with-current-buffer b1 rcirc-last-post-time))
+                           (t2 (with-current-buffer b2 rcirc-last-post-time)))
+                       (time-less-p t2 t1)))))
+       (pushnew type rcirc-activity-types)
+       (unless (and (equal rcirc-activity old-activity)
+                    (member type old-types))
+         (rcirc-update-activity-string)))))
   (run-hook-with-args 'rcirc-activity-hooks buffer))
 
 (defun rcirc-clear-activity (buffer)
   "Clear the BUFFER activity."
-  (setq rcirc-activity (delete buffer rcirc-activity))
+  (setq rcirc-activity (remove buffer rcirc-activity))
   (with-current-buffer buffer
     (setq rcirc-activity-types nil)))
 
+(defun rcirc-clear-unread (buffer)
+  "Erase the last read message arrow from BUFFER."
+  (when (buffer-live-p buffer)
+    (with-current-buffer buffer
+      (set-marker overlay-arrow-position nil))))
+
 (defun rcirc-split-activity (activity)
   "Return a cons cell with ACTIVITY split into (lopri . hipri)."
   (let (lopri hipri)
@@ -1546,6 +1681,9 @@ activity.  Only run if the buffer is not visible and
          (add-to-list 'hipri buf t))))
     (cons lopri hipri)))
 
+(defvar rcirc-update-activity-string-hook nil
+  "Hook run whenever the activity string is updated.")
+
 ;; TODO: add mouse properties
 (defun rcirc-update-activity-string ()
   "Update mode-line string."
@@ -1554,19 +1692,18 @@ activity.  Only run if the buffer is not visible and
         (hipri (cdr pair)))
     (setq rcirc-activity-string
          (cond ((or hipri lopri)
-                (concat "-"
-                        (and hipri "[")
+                (concat (and hipri "[")
                         (rcirc-activity-string hipri)
                         (and hipri lopri ",")
                         (and lopri
                              (concat "("
                                      (rcirc-activity-string lopri)
                                      ")"))
-                        (and hipri "]")
-                        "-"))
+                        (and hipri "]")))
                ((not (null (rcirc-process-list)))
-                "-[]-")
-               (t "")))))
+                "[]")
+               (t "[]")))
+    (run-hooks 'rcirc-update-activity-string-hook)))
 
 (defun rcirc-activity-string (buffers)
   (mapconcat (lambda (b)
@@ -1586,33 +1723,47 @@ activity.  Only run if the buffer is not visible and
   (with-current-buffer buffer
     (or rcirc-short-buffer-name (buffer-name))))
 
-(defvar rcirc-current-buffer nil)
-(defun rcirc-window-configuration-change ()
-  "Go through visible windows and remove buffers from activity list.
-Also, clear the overlay arrow if the current buffer is now hidden."
-  (let ((current-now-hidden t))
+(defun rcirc-visible-buffers ()
+  "Return a list of the visible buffers that are in rcirc-mode."
+  (let (acc)
     (walk-windows (lambda (w)
-                   (let ((buf (window-buffer w)))
-                     (with-current-buffer buf
-                       (when (eq major-mode 'rcirc-mode)
-                         (rcirc-clear-activity buf)))
-                       (when (eq buf rcirc-current-buffer)
-                         (setq current-now-hidden nil)))))
-    ;; add overlay arrow if the buffer isn't displayed
-    (when (and current-now-hidden
-              rcirc-current-buffer
-              (buffer-live-p rcirc-current-buffer))
-      (with-current-buffer rcirc-current-buffer
-       (when (and (eq major-mode 'rcirc-mode)
-                  (marker-position overlay-arrow-position))
-         (set-marker overlay-arrow-position nil)))))
-
-  ;; remove any killed buffers from list
-  (setq rcirc-activity
-       (delq nil (mapcar (lambda (buf) (when (buffer-live-p buf) buf))
-                         rcirc-activity)))
-  (rcirc-update-activity-string)
-  (setq rcirc-current-buffer (current-buffer)))
+                   (with-current-buffer (window-buffer w)
+                     (when (eq major-mode 'rcirc-mode)
+                       (push (current-buffer) acc)))))
+    acc))
+
+(defvar rcirc-visible-buffers nil)
+(defun rcirc-window-configuration-change ()
+  (unless (minibuffer-window-active-p (minibuffer-window))
+    ;; delay this until command has finished to make sure window is
+    ;; actually visible before clearing activity
+    (add-hook 'post-command-hook 'rcirc-window-configuration-change-1)))
+
+(defun rcirc-window-configuration-change-1 ()
+  ;; clear activity and overlay arrows
+  (let* ((old-activity rcirc-activity)
+        (hidden-buffers rcirc-visible-buffers))
+
+    (setq rcirc-visible-buffers (rcirc-visible-buffers))
+
+    (dolist (vbuf rcirc-visible-buffers)
+      (setq hidden-buffers (delq vbuf hidden-buffers))
+      ;; clear activity for all visible buffers
+      (rcirc-clear-activity vbuf))
+
+    ;; clear unread arrow from recently hidden buffers
+    (dolist (hbuf hidden-buffers)
+      (rcirc-clear-unread hbuf))
+
+    ;; remove any killed buffers from list
+    (setq rcirc-activity
+         (delq nil (mapcar (lambda (buf) (when (buffer-live-p buf) buf))
+                           rcirc-activity)))
+    ;; update the mode-line string
+    (unless (equal old-activity rcirc-activity)
+      (rcirc-update-activity-string)))
+
+  (remove-hook 'post-command-hook 'rcirc-window-configuration-change-1))
 
 \f
 ;;; buffer name abbreviation
@@ -1722,8 +1873,9 @@ Also, clear the overlay arrow if the current buffer is now hidden."
                                          (car (split-string channel)))))
     (rcirc-send-string process (concat "JOIN " channel))
     (when (not (eq (selected-window) (minibuffer-window)))
-      (funcall rcirc-switch-to-buffer-function buffer))))
+      (switch-to-buffer buffer))))
 
+;; TODO: /part #channel reason, or consider removing #channel altogether
 (defun-rcirc-command part (channel)
   "Part CHANNEL."
   (interactive "sPart channel: ")
@@ -1902,7 +2054,7 @@ keywords when no KEYWORD is given."
                  word-boundary))
         (optional
          (and "/"
-              (1+ (char "-a-zA-Z0-9_=!?#$\@~`%&*+|\\/:;.,{}[]()"))
+              (1+ (char "-a-zA-Z0-9_='!?#$\@~`%&*+|\\/:;.,{}[]()"))
               (char "-a-zA-Z0-9_=#$\@~`%&*+|\\/:;{}[]()")))))
   "Regexp matching URLs.  Set to nil to disable URL features in rcirc.")
 
@@ -1932,38 +2084,25 @@ keywords when no KEYWORD is given."
 
 \f
 (defvar rcirc-markup-text-functions
-  '(rcirc-markup-body-text
-    rcirc-markup-attributes
+  '(rcirc-markup-attributes
     rcirc-markup-my-nick
     rcirc-markup-urls
     rcirc-markup-keywords
-    rcirc-markup-bright-nicks)
-  "List of functions used to manipulate text before it is printed.
+    rcirc-markup-bright-nicks
+    rcirc-markup-fill)
 
-Each function takes three arguments, PROCESS, SENDER, RESPONSE
-and CHANNEL-BUFFER.  The current buffer is temporary buffer that
-contains the text to manipulate.  Each function works on the text
-in this buffer.")
+  "List of functions used to manipulate text before it is printed.
 
-(defun rcirc-markup-text (process sender response text)
-  "Return TEXT with properties added based on various patterns."
-  (let ((channel-buffer (current-buffer)))
-    (with-temp-buffer
-      (insert text)
-      (goto-char (point-min))
-      (dolist (fn rcirc-markup-text-functions)
-       (save-excursion
-         (funcall fn process sender response channel-buffer)))
-      (buffer-substring (point-min) (point-max)))))
+Each function takes two arguments, SENDER, RESPONSE.  The buffer
+is narrowed with the text to be printed and the point is at the
+beginning of the `rcirc-text' propertized text.")
 
-(defun rcirc-markup-body-text (process sender response channel-buffer)
-  ;; We add the text property `rcirc-text' to identify this as the
-  ;; body text.
-  (add-text-properties (point-min) (point-max)
-                      (list 'rcirc-text (buffer-substring-no-properties
-                                         (point-min) (point-max)))))
+(defun rcirc-markup-timestamp (sender response)
+  (goto-char (point-min))
+  (insert (rcirc-facify (format-time-string rcirc-time-format)
+                       'rcirc-timestamp)))
 
-(defun rcirc-markup-attributes (process sender response channel-buffer)
+(defun rcirc-markup-attributes (sender response)
   (while (re-search-forward "\\([\C-b\C-_\C-v]\\).*?\\(\\1\\|\C-o\\)" nil t)
     (rcirc-add-face (match-beginning 0) (match-end 0)
                    (case (char-after (match-beginning 1))
@@ -1979,19 +2118,21 @@ in this buffer.")
   (while (re-search-forward "\C-o+" nil t)
     (delete-region (match-beginning 0) (match-end 0))))
 
-(defun rcirc-markup-my-nick (process sender response channel-buffer)
+(defun rcirc-markup-my-nick (sender response)
   (with-syntax-table rcirc-nick-syntax-table
     (while (re-search-forward (concat "\\b"
-                                     (regexp-quote (rcirc-nick process))
+                                     (regexp-quote (rcirc-nick
+                                                    (rcirc-buffer-process)))
                                      "\\b")
                              nil t)
       (rcirc-add-face (match-beginning 0) (match-end 0)
                      'rcirc-nick-in-message)
       (when (string= response "PRIVMSG")
-       (rcirc-add-face (point-min) (point-max) 'rcirc-nick-in-message-full-line)
-       (rcirc-record-activity channel-buffer 'nick)))))
+       (rcirc-add-face (point-min) (point-max)
+                       'rcirc-nick-in-message-full-line)
+       (rcirc-record-activity (current-buffer) 'nick)))))
 
-(defun rcirc-markup-urls (process sender response channel-buffer)
+(defun rcirc-markup-urls (sender response)
   (while (re-search-forward rcirc-url-regexp nil t)
     (let ((start (match-beginning 0))
          (end (match-end 0)))
@@ -1999,30 +2140,41 @@ in this buffer.")
       (add-text-properties start end (list 'mouse-face 'highlight
                                           'keymap rcirc-browse-url-map))
       ;; record the url
-      (let ((url (buffer-substring-no-properties start end)))
-       (with-current-buffer channel-buffer
-         (push url rcirc-urls))))))
-
-(defun rcirc-markup-keywords (process sender response channel-buffer)
-  (let* ((target (with-current-buffer channel-buffer (or rcirc-target "")))
-        (keywords (delq nil (mapcar (lambda (keyword)
-                                     (when (not (string-match keyword target))
-                                       keyword))
-                                   rcirc-keywords))))
-    (when keywords
-      (while (re-search-forward (regexp-opt keywords 'words) nil t)
-       (rcirc-add-face (match-beginning 0) (match-end 0) 'rcirc-keyword)
-       (when (and (string= response "PRIVMSG")
-                  (not (string= sender (rcirc-nick process))))
-         (rcirc-record-activity channel-buffer 'keyword))))))
-
-(defun rcirc-markup-bright-nicks (process sender response channel-buffer)
+      (push (buffer-substring-no-properties start end) rcirc-urls))))
+
+(defun rcirc-markup-keywords (sender response)
+  (when (and (string= response "PRIVMSG")
+            (not (string= sender (rcirc-nick (rcirc-buffer-process)))))
+    (let* ((target (or rcirc-target ""))
+          (keywords (delq nil (mapcar (lambda (keyword)
+                                        (when (not (string-match keyword
+                                                                 target))
+                                          keyword))
+                                      rcirc-keywords))))
+      (when keywords
+       (while (re-search-forward (regexp-opt keywords 'words) nil t)
+         (rcirc-add-face (match-beginning 0) (match-end 0) 'rcirc-keyword)
+         (rcirc-record-activity (current-buffer) 'keyword))))))
+
+(defun rcirc-markup-bright-nicks (sender response)
   (when (and rcirc-bright-nicks
             (string= response "NAMES"))
     (with-syntax-table rcirc-nick-syntax-table
       (while (re-search-forward (regexp-opt rcirc-bright-nicks 'words) nil t)
        (rcirc-add-face (match-beginning 0) (match-end 0)
                        'rcirc-bright-nick)))))
+
+(defun rcirc-markup-fill (sender response)
+  (when (not (string= response "372"))         ; /motd
+    (let ((fill-prefix
+          (or rcirc-fill-prefix
+              (make-string (- (point) (line-beginning-position)) ?\s)))
+         (fill-column (cond ((eq rcirc-fill-column 'frame-width)
+                             (1- (frame-width)))
+                            (rcirc-fill-column
+                             rcirc-fill-column)
+                            (t fill-column))))
+      (fill-region (point) (point-max) nil t))))
 \f
 ;;; handlers
 ;; these are called with the server PROCESS, the SENDER, which is a
@@ -2099,8 +2251,7 @@ in this buffer.")
     ;; if the buffer is still around, make it inactive
     (let ((buffer (rcirc-get-buffer process channel)))
       (when buffer
-       (with-current-buffer buffer
-         (setq rcirc-target nil))))))
+       (rcirc-disconnect-buffer buffer)))))
 
 (defun rcirc-handler-PART (process sender args text)
   (let* ((channel (car args))
@@ -2169,7 +2320,7 @@ in this buffer.")
         (when rcirc-auto-authenticate-flag (rcirc-authenticate))))))
 
 (defun rcirc-handler-PING (process sender args text)
-  (rcirc-send-string process (concat "PONG " (car args))))
+  (rcirc-send-string process (concat "PONG :" (car args))))
 
 (defun rcirc-handler-PONG (process sender args text)
   ;; do nothing
@@ -2289,7 +2440,7 @@ Passwords are stored in `rcirc-authinfo' (which see)."
                  process
                  (concat
                   "PRIVMSG chanserv :identify "
-                  (cadr args) " " (car args))))
+                  (car args) " " (cadr args))))
                ((equal method 'bitlbee)
                 (rcirc-send-string
                  process
@@ -2314,7 +2465,8 @@ Passwords are stored in `rcirc-authinfo' (which see)."
                          (format "%s sent unsupported ctcp: %s" sender text)
                         t)
           (funcall handler process target sender args)
-          (if (not (string= request "ACTION"))
+          (unless (or (string= request "ACTION")
+                     (string= request "KEEPALIVE"))
               (rcirc-print process sender "CTCP" target
                           (format "%s" text) t))))))
 
index 0a5b2c82ab8b92b82d4493c2b9bc3f68996c5014..52c2a20f5c26dad255af817f3b8a4705847406fa 100644 (file)
@@ -188,8 +188,7 @@ See \\[compile]."
       (when (featurep 'tramp)
        (set (make-local-variable 'comint-file-name-prefix)
             (funcall (symbol-function 'tramp-make-tramp-file-name)
-             nil ;; multi-method.  To be removed with Tramp 2.1.
-             nil
+             nil ;; method.
              remote-compile-user
              remote-compile-host
              ""))))))
index bf438638794d16bb2eca0715064dfaa755aea983..0ce0b91c037ac61f8359825f621dad20c074473e 100644 (file)
@@ -88,6 +88,8 @@
 ;;; Code:
 
 (eval-when-compile
+  (require 'cl)
+  (require 'imenu)   ; Need this stuff when compiling for imenu macros, etc.
   (require 'tempo))
 
 ;;;----------------------------------------------------------------------------
   :version "20.4")
 
 (defcustom snmp-special-indent t
-  "*If non-nil, use a simple heuristic to try to guess the right indentation.
+  "If non-nil, use a simple heuristic to try to guess the right indentation.
 If nil, then no special indentation is attempted."
   :type 'boolean
   :group 'snmp)
 
 (defcustom snmp-indent-level 4
-  "*Indentation level for SNMP MIBs."
+  "Indentation level for SNMP MIBs."
   :type 'integer
   :group 'snmp)
 
 (defcustom snmp-tab-always-indent nil
-  "*Non-nil means TAB should always reindent the current line.
+  "Non-nil means TAB should always reindent the current line.
 A value of nil means reindent if point is within the initial line indentation;
 otherwise insert a TAB."
   :type 'boolean
   :group 'snmp)
 
 (defcustom snmp-completion-ignore-case t
-  "*Non-nil means that case differences are ignored during completion.
+  "Non-nil means that case differences are ignored during completion.
 A value of nil means that case is significant.
 This is used during Tempo template completion."
   :type 'boolean
   :group 'snmp)
 
 (defcustom snmp-common-mode-hook nil
-  "*Hook(s) evaluated when a buffer enters either SNMP or SNMPv2 mode."
+  "Hook(s) evaluated when a buffer enters either SNMP or SNMPv2 mode."
   :type 'hook
   :group 'snmp)
 
 (defcustom snmp-mode-hook nil
-  "*Hook(s) evaluated when a buffer enters SNMP mode."
+  "Hook(s) evaluated when a buffer enters SNMP mode."
   :type 'hook
   :group 'snmp)
 
 (defcustom snmpv2-mode-hook nil
-  "*Hook(s) evaluated when a buffer enters SNMPv2 mode."
+  "Hook(s) evaluated when a buffer enters SNMPv2 mode."
   :type 'hook
   :group 'snmp)
 
@@ -195,26 +197,26 @@ This is used during Tempo template completion."
   "Predefined types for SYNTAX clauses.")
 
 (defvar snmp-rfc1155-types
-  '(("INTEGER") ("OCTET STRING") ("OBJECT IDENTIFIER") ("NULL") ("IpAddress")
-    ("NetworkAddress") ("Counter") ("Gauge") ("TimeTicks") ("Opaque"))
+  '("INTEGER" "OCTET STRING" "OBJECT IDENTIFIER" "NULL" "IpAddress"
+    "NetworkAddress" "Counter" "Gauge" "TimeTicks" "Opaque")
   "Types from RFC 1155 v1 SMI.")
 
 (defvar snmp-rfc1213-types
-  '(("DisplayString"))
+  '("DisplayString")
   "Types from RFC 1213 MIB-II.")
 
 (defvar snmp-rfc1902-types
-  '(("INTEGER") ("OCTET STRING") ("OBJECT IDENTIFIER") ("Integer32")
-    ("IpAddress") ("Counter32") ("Gauge32") ("Unsigned32") ("TimeTicks")
-    ("Opaque") ("Counter64"))
+  '("INTEGER" "OCTET STRING" "OBJECT IDENTIFIER" "Integer32"
+    "IpAddress" "Counter32" "Gauge32" "Unsigned32" "TimeTicks"
+    "Opaque" "Counter64")
   "Types from RFC 1902 v2 SMI.")
 
 (defvar snmp-rfc1903-types
-  '(("DisplayString") ("PhysAddress") ("MacAddress") ("TruthValue")
-    ("TestAndIncr") ("AutonomousType") ("InstancePointer")
-    ("VariablePointer") ("RowPointer") ("RowStatus") ("TimeStamp")
-    ("TimeInterval") ("DateAndTime") ("StorageType") ("TDomain")
-    ("TAddress"))
+  '("DisplayString" "PhysAddress" "MacAddress" "TruthValue"
+    "TestAndIncr" "AutonomousType" "InstancePointer"
+    "VariablePointer" "RowPointer" "RowStatus" "TimeStamp"
+    "TimeInterval" "DateAndTime" "StorageType" "TDomain"
+    "TAddress")
   "Types from RFC 1903 Textual Conventions.")
 
 
@@ -222,12 +224,12 @@ This is used during Tempo template completion."
   "Predefined values for ACCESS clauses.")
 
 (defvar snmp-rfc1155-access
-  '(("read-only") ("read-write") ("write-only") ("not-accessible"))
+  '("read-only" "read-write" "write-only" "not-accessible")
   "ACCESS values from RFC 1155 v1 SMI.")
 
 (defvar snmp-rfc1902-access
-  '(("read-only") ("read-write") ("read-create") ("not-accessible")
-    ("accessible-for-notify"))
+  '("read-only" "read-write" "read-create" "not-accessible"
+    "accessible-for-notify")
   "ACCESS values from RFC 1155 v1 SMI.")
 
 
@@ -235,11 +237,11 @@ This is used during Tempo template completion."
   "Predefined values for STATUS clauses.")
 
 (defvar snmp-rfc1212-status
-  '(("mandatory") ("obsolete") ("deprecated"))
+  '("mandatory" "obsolete" "deprecated")
   "STATUS values from RFC 1212 v1 SMI.")
 
 (defvar snmp-rfc1902-status
-  '(("current") ("obsolete") ("deprecated"))
+  '("current" "obsolete" "deprecated")
   "STATUS values from RFC 1902 v2 SMI.")
 
 
@@ -252,13 +254,6 @@ This is used during Tempo template completion."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
-;; Need this stuff when compiling for imenu macros, etc.
-;;
-(eval-when-compile
-  (require 'cl)
-  (require 'imenu))
-
-
 ;; Create abbrev table for SNMP MIB mode
 ;;
 (defvar snmp-mode-abbrev-table nil
@@ -275,33 +270,30 @@ This is used during Tempo template completion."
 
 ;; Set up our keymap
 ;;
-(defvar snmp-mode-map (make-sparse-keymap)
+(defvar snmp-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "\177"         'backward-delete-char-untabify)
+    (define-key map "\C-c\C-i"     'tempo-complete-tag)
+    (define-key map "\C-c\C-f"     'tempo-forward-mark)
+    (define-key map "\C-c\C-b"     'tempo-backward-mark)
+    map)
   "Keymap used in SNMP mode.")
 
-(define-key snmp-mode-map "\t"           'snmp-indent-command)
-(define-key snmp-mode-map "\177"         'backward-delete-char-untabify)
-
-(define-key snmp-mode-map "\C-c\C-i"     'tempo-complete-tag)
-(define-key snmp-mode-map "\C-c\C-f"     'tempo-forward-mark)
-(define-key snmp-mode-map "\C-c\C-b"     'tempo-backward-mark)
-
 
 ;; Set up our syntax table
 ;;
-(defvar snmp-mode-syntax-table nil
+(defvar snmp-mode-syntax-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\\  "\\"     st)
+    (modify-syntax-entry ?-   "_ 1234" st)
+    (modify-syntax-entry ?\n  ">"      st)
+    (modify-syntax-entry ?\^m ">"      st)
+    (modify-syntax-entry ?_   "."      st)
+    (modify-syntax-entry ?:   "."      st)
+    (modify-syntax-entry ?=   "."      st)
+    st)
   "Syntax table used for buffers in SNMP mode.")
 
-(if snmp-mode-syntax-table
-    ()
-  (setq snmp-mode-syntax-table (make-syntax-table))
-  (modify-syntax-entry ?\\  "\\"     snmp-mode-syntax-table)
-  (modify-syntax-entry ?-   "_ 1234" snmp-mode-syntax-table)
-  (modify-syntax-entry ?\n  ">"      snmp-mode-syntax-table)
-  (modify-syntax-entry ?\^m ">"      snmp-mode-syntax-table)
-  (modify-syntax-entry ?_   "."      snmp-mode-syntax-table)
-  (modify-syntax-entry ?:   "."      snmp-mode-syntax-table)
-  (modify-syntax-entry ?=   "."      snmp-mode-syntax-table))
-
 ;; Set up the stuff that's common between snmp-mode and snmpv2-mode
 ;;
 (defun snmp-common-mode (name mode abbrev font-keywords imenu-index tempo-tags)
@@ -335,10 +327,9 @@ This is used during Tempo template completion."
   (setq parse-sexp-ignore-comments t)
 
   ;; Set up indentation
-  (make-local-variable 'indent-line-function)
-  (setq indent-line-function (if snmp-special-indent
-                                 'snmp-indent-line
-                               'indent-to-left-margin))
+  (if snmp-special-indent
+      (set (make-local-variable 'indent-line-function) 'snmp-indent-line))
+  (set (make-local-variable 'tab-always-indent) snmp-tab-always-indent)
 
   ;; Font Lock
   (make-local-variable 'font-lock-defaults)
@@ -474,7 +465,7 @@ lines for the purposes of this function."
   "Indent current line as SNMP MIB code."
   (let ((indent (snmp-calculate-indent))
         (pos (- (point-max) (point)))
-        shift-amt beg end)
+        shift-amt beg)
     (beginning-of-line)
     (setq beg (point))
     (skip-chars-forward " \t")
@@ -488,20 +479,6 @@ lines for the purposes of this function."
     (if (> (- (point-max) pos) (point))
         (goto-char (- (point-max) pos)))))
 
-(defun snmp-indent-command ()
-  "Indent current line as SNMP MIB code, or sometimes insert a TAB.
-If `snmp-tab-always-indent' is t, always reindent the current line when
-this command is run.
-If `snmp-tab-always-indent' is nil, reindent the current line if point is
-in the initial indentation.  Otherwise, insert a TAB."
-  (interactive)
-  (if (and (not snmp-tab-always-indent)
-           (save-excursion
-             (skip-chars-backward " \t")
-             (not (bolp))))
-      (insert-tab)
-    (snmp-indent-line)))
-
 
 ;;;----------------------------------------------------------------------------
 ;;
@@ -520,7 +497,7 @@ in the initial indentation.  Otherwise, insert a TAB."
        (index-table-alist '())
        (index-trap-alist '())
         (case-fold-search nil) ; keywords must be uppercase
-       prev-pos token marker end)
+       prev-pos token end)
     (goto-char (point-min))
     (imenu-progress-message prev-pos 0)
     ;; Search for a useful MIB item (that's not in a comment)
@@ -529,7 +506,7 @@ in the initial indentation.  Otherwise, insert a TAB."
         (imenu-progress-message prev-pos)
         (setq
          end (match-end 0)
-         token (cons (buffer-substring (match-beginning 1) (match-end 1))
+         token (cons (match-string 1)
                      (set-marker (make-marker) (match-beginning 1))))
         (goto-char (match-beginning 2))
         (cond ((looking-at "OBJECT-TYPE[ \t\n]+SYNTAX")
@@ -719,5 +696,5 @@ controls whether case is significant."
 
 (provide 'snmp-mode)
 
-;;; arch-tag: eb6cc0f9-1e47-4023-8625-bc9aae6c3527
+;; arch-tag: eb6cc0f9-1e47-4023-8625-bc9aae6c3527
 ;;; snmp-mode.el ends here
index 5a2364c652c4b848a5f322cee105668b0b9828fd..fd8e7ec59f27ca0f368842d27e609abdc7c5988e 100644 (file)
@@ -247,7 +247,7 @@ If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
 (defun socks-build-auth-list ()
   (let ((num 0)
        (retval ""))
-    (mapcar
+    (mapc
      (function
       (lambda (x)
        (if (fboundp (cdr (cdr x)))
@@ -546,7 +546,9 @@ version.")
                          atype
                          host
                          (if (stringp service)
-                             (socks-find-services-entry service)
+                             (or
+                              (socks-find-services-entry service)
+                              (error "Unknown service: %s" service))
                            service))
       (puthash 'buffer buffer info)
       (puthash 'host host info)
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
new file mode 100644 (file)
index 0000000..35147e7
--- /dev/null
@@ -0,0 +1,317 @@
+;;; tramp-cache.el --- file information caching for Tramp
+
+;; Copyright (C) 2000, 2005, 2006, 2007 by Free Software Foundation, Inc.
+
+;; Author: Daniel Pittman <daniel@inanna.danann.net>
+;;         Michael Albinus <michael.albinus@gmx.de>
+;; Keywords: comm, processes
+
+;; 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, 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; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; An implementation of information caching for remote files.
+
+;; Each connection, identified by a vector [method user host
+;; localname] or by a process, has a unique cache. We distinguish 3
+;; kind of caches, depending on the key:
+;;
+;; - localname is NIL.  This are reusable properties.  Examples:
+;;   "remote-shell" identifies the POSIX shell to be called on the
+;;   remote host, or "perl" is the command to be called on the remote
+;;   host, when starting a Perl script.  These properties are saved in
+;;   the file `tramp-persistency-file-name'.
+;;
+;; - localname is a string.  This are temporary properties, which are
+;;   related to the file localname is referring to.  Examples:
+;;   "file-exists-p" is t or nile, depending on the file existence, or
+;;   "file-attributes" caches the result of the function
+;;  `file-attributes'.
+;;
+;; - The key is a process.  This are temporary properties related to
+;;   an open connection.  Examples: "scripts" keeps shell script
+;;   definitions already sent to the remote shell, "last-cmd-time" is
+;;   the time stamp a command has been sent to the remote process.
+
+;;; Code:
+
+;; Pacify byte-compiler.
+(eval-when-compile
+  (require 'cl)
+  (autoload 'tramp-message "tramp")
+  (autoload 'tramp-tramp-file-p "tramp")
+  ;; We cannot autoload macro `with-parsed-tramp-file-name', it
+  ;; results in problems of byte-compiled code.
+  (autoload 'tramp-dissect-file-name "tramp")
+  (autoload 'tramp-file-name-method "tramp")
+  (autoload 'tramp-file-name-user "tramp")
+  (autoload 'tramp-file-name-host "tramp")
+  (autoload 'tramp-file-name-localname "tramp")
+  (autoload 'time-stamp-string "time-stamp"))
+
+;;; -- Cache --
+
+(defvar tramp-cache-data (make-hash-table :test 'equal)
+  "Hash table for remote files properties.")
+
+(defcustom tramp-persistency-file-name
+  (cond
+   ;; GNU Emacs.
+   ((and (boundp 'user-emacs-directory)
+        (stringp (symbol-value 'user-emacs-directory))
+        (file-directory-p (symbol-value 'user-emacs-directory)))
+    (expand-file-name "tramp" (symbol-value 'user-emacs-directory)))
+   ((and (not (featurep 'xemacs)) (file-directory-p "~/.emacs.d/"))
+    "~/.emacs.d/tramp")
+   ;; XEmacs.
+   ((and (boundp 'user-init-directory)
+        (stringp (symbol-value 'user-init-directory))
+        (file-directory-p (symbol-value 'user-init-directory)))
+    (expand-file-name "tramp" (symbol-value 'user-init-directory)))
+   ((and (featurep 'xemacs) (file-directory-p "~/.xemacs/"))
+    "~/.xemacs/tramp")
+   ;; For users without `~/.emacs.d/' or `~/.xemacs/'.
+   (t "~/.tramp"))
+  "File which keeps connection history for Tramp connections."
+  :group 'tramp
+  :type 'file)
+
+(defun tramp-get-file-property (vec file property default)
+  "Get the PROPERTY of FILE from the cache context of VEC.
+Returns DEFAULT if not set."
+  ;; Unify localname.
+  (setq vec (copy-sequence vec))
+  (aset vec 3 (directory-file-name file))
+  (let* ((hash (or (gethash vec tramp-cache-data)
+                  (puthash vec (make-hash-table :test 'equal)
+                           tramp-cache-data)))
+        (value (if (hash-table-p hash)
+                   (gethash property hash default)
+                 default)))
+    (tramp-message vec 8 "%s %s %s" file property value)
+    value))
+
+(defun tramp-set-file-property (vec file property value)
+  "Set the PROPERTY of FILE to VALUE, in the cache context of VEC.
+Returns VALUE."
+  ;; Unify localname.
+  (setq vec (copy-sequence vec))
+  (aset vec 3 (directory-file-name file))
+  (let ((hash (or (gethash vec tramp-cache-data)
+                 (puthash vec (make-hash-table :test 'equal)
+                          tramp-cache-data))))
+    (puthash property value hash)
+    (tramp-message vec 8 "%s %s %s" file property value)
+    value))
+
+(defun tramp-flush-file-property (vec file)
+  "Remove all properties of FILE in the cache context of VEC."
+  ;; Unify localname.
+  (setq vec (copy-sequence vec))
+  (aset vec 3 (directory-file-name file))
+  (tramp-message vec 8 "%s" file)
+  (remhash vec tramp-cache-data))
+
+(defun tramp-flush-directory-property (vec directory)
+  "Remove all properties of DIRECTORY in the cache context of VEC.
+Remove also properties of all files in subdirectories."
+  (let ((directory (directory-file-name directory)))
+  (tramp-message vec 8 "%s" directory)
+    (maphash
+     '(lambda (key value)
+       (when (and (stringp key)
+                  (string-match directory (tramp-file-name-localname key)))
+         (remhash key tramp-cache-data)))
+     tramp-cache-data)))
+
+(defun tramp-cache-print (table)
+  "Prints hash table TABLE."
+  (when (hash-table-p table)
+    (let (result)
+      (maphash
+       '(lambda (key value)
+         (let ((tmp (format
+                     "(%s %s)"
+                     (if (processp key)
+                         (prin1-to-string (prin1-to-string key))
+                       (prin1-to-string key))
+                     (if (hash-table-p value)
+                         (tramp-cache-print value)
+                       (if (bufferp value)
+                           (prin1-to-string (prin1-to-string value))
+                         (prin1-to-string value))))))
+           (setq result (if result (concat result " " tmp) tmp))))
+       table)
+      result)))
+
+;; Reverting or killing a buffer should also flush file properties.
+;; They could have been changed outside Tramp.
+(defun tramp-flush-file-function ()
+  "Flush all Tramp cache properties from buffer-file-name."
+  (let ((bfn (buffer-file-name)))
+    (when (and (stringp bfn) (tramp-tramp-file-p bfn))
+      (let* ((v (tramp-dissect-file-name bfn))
+            (localname (tramp-file-name-localname v)))
+       (tramp-flush-file-property v localname)))))
+
+(add-hook 'before-revert-hook 'tramp-flush-file-function)
+(add-hook 'kill-buffer-hook 'tramp-flush-file-function)
+(add-hook 'tramp-cache-unload-hook
+         '(lambda ()
+            (remove-hook 'before-revert-hook
+                         'tramp-flush-file-function)
+            (remove-hook 'kill-buffer-hook
+                         'tramp-flush-file-function)))
+
+;;; -- Properties --
+
+(defun tramp-get-connection-property (key property default)
+  "Get the named PROPERTY for the connection.
+KEY identifies the connection, it is either a process or a vector.
+If the value is not set for the connection, returns DEFAULT."
+  ;; Unify key by removing localname from vector.  Work with a copy in
+  ;; order to avoid side effects.
+  (when (vectorp key)
+    (setq key (copy-sequence key))
+    (aset key 3 nil))
+  (let* ((hash (gethash key tramp-cache-data))
+        (value (if (hash-table-p hash)
+                  (gethash property hash default)
+                default)))
+    (tramp-message key 7 "%s %s" property value)
+    value))
+
+(defun tramp-set-connection-property (key property value)
+  "Set the named PROPERTY of a connection to VALUE.
+KEY identifies the connection, it is either a process or a vector.
+PROPERTY is set persistent when KEY is a vector."
+  ;; Unify key by removing localname from vector.  Work with a copy in
+  ;; order to avoid side effects.
+  (when (vectorp key)
+    (setq key (copy-sequence key))
+    (aset key 3 nil))
+  (let ((hash (or (gethash key tramp-cache-data)
+                 (puthash key (make-hash-table :test 'equal)
+                           tramp-cache-data))))
+    (puthash property value hash)
+    ;; This function is called also during initialization of
+    ;; tramp-cache.el.  `tramp-message´ is not defined yet at this
+    ;; time, so we ignore the corresponding error.
+    (condition-case nil
+       (tramp-message key 7 "%s %s" property value)
+      (error nil))
+    value))
+
+(defun tramp-flush-connection-property (key event)
+  "Remove all properties identified by KEY.
+KEY identifies the connection, it is either a process or a
+vector.  EVENT is not used, it is just applied because this
+function is intended to run also as process sentinel."
+  ;; Unify key by removing localname from vector.  Work with a copy in
+  ;; order to avoid side effects.
+  (when (vectorp key)
+    (setq key (copy-sequence key))
+    (aset key 3 nil))
+;  (tramp-message key 7 "%s" event)
+  (remhash key tramp-cache-data))
+
+(defun tramp-dump-connection-properties ()
+"Writes persistent connection properties into file
+`tramp-persistency-file-name'."
+  ;; We shouldn't fail, otherwise (X)Emacs might not be able to be closed.
+  (condition-case nil
+      (when (and (hash-table-p tramp-cache-data)
+                (not (zerop (hash-table-count tramp-cache-data)))
+                (stringp tramp-persistency-file-name))
+       (let ((cache (copy-hash-table tramp-cache-data)))
+         ;; Remove temporary data.
+         (maphash
+          '(lambda (key value)
+             (if (and (vectorp key) (not (tramp-file-name-localname key)))
+                 (progn
+                   (remhash "process-name" value)
+                   (remhash "process-buffer" value))
+               (remhash key cache)))
+          cache)
+         ;; Dump it.
+         (with-temp-buffer
+           (insert
+            ";; -*- emacs-lisp -*-"
+            ;; `time-stamp-string' might not exist in all (X)Emacs flavors.
+            (condition-case nil
+                (progn
+                  (format
+                   " <%s %s>\n"
+                   (time-stamp-string "%02y/%02m/%02d %02H:%02M:%02S")
+                   tramp-persistency-file-name))
+              (error "\n"))
+            ";; Tramp connection history.  Don't change this file.\n"
+            ";; You can delete it, forcing Tramp to reapply the checks.\n\n"
+            (with-output-to-string
+              (pp (read (format "(%s)" (tramp-cache-print cache))))))
+           (write-region
+            (point-min) (point-max) tramp-persistency-file-name))))
+    (error nil)))
+
+(add-hook 'kill-emacs-hook 'tramp-dump-connection-properties)
+(add-hook 'tramp-cache-unload-hook
+         '(lambda ()
+            (remove-hook 'kill-emacs-hook
+                         'tramp-dump-connection-properties)))
+
+(defun tramp-parse-connection-properties (method)
+  "Return a list of (user host) tuples allowed to access for METHOD.
+This function is added always in `tramp-get-completion-function'
+for all methods.  Resulting data are derived from connection
+history."
+  (let (res)
+    (maphash
+     '(lambda (key value)
+       (if (and (vectorp key)
+                (string-equal method (tramp-file-name-method key))
+                (not (tramp-file-name-localname key)))
+           (push (list (tramp-file-name-user key)
+                       (tramp-file-name-host key))
+                 res)))
+     tramp-cache-data)
+    res))
+
+;; Read persistent connection history.
+(when (and (stringp tramp-persistency-file-name)
+          (zerop (hash-table-count tramp-cache-data)))
+  (condition-case err
+      (with-temp-buffer
+       (insert-file-contents tramp-persistency-file-name)
+       (let ((list (read (current-buffer)))
+             element key item)
+         (while (setq element (pop list))
+           (setq key (pop element))
+           (while (setq item (pop element))
+             (tramp-set-connection-property key (pop item) (car item))))))
+    (file-error
+     ;; Most likely because the file doesn't exist yet.  No message.
+     (clrhash tramp-cache-data))
+    (error
+     ;; File is corrupted.
+     (message "Tramp persistency file '%s' is corrupted: %s"
+             tramp-persistency-file-name (error-message-string err))
+     (clrhash tramp-cache-data))))
+
+(provide 'tramp-cache)
+
+;; arch-tag: ee1739b7-7628-408c-9b96-d11a74b05d26
+;;; tramp-cache.el ends here
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
new file mode 100644 (file)
index 0000000..19d25f4
--- /dev/null
@@ -0,0 +1,237 @@
+;;; tramp-compat.el --- Tramp compatibility functions
+
+;; Copyright (C) 2007 Free Software Foundation, Inc.
+
+;; Author: Michael Albinus <michael.albinus@gmx.de>
+;; Keywords: comm, processes
+
+;; 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, 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; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Tramp's main Emacs version for development is GNU Emacs 23.  This
+;; package provides compatibility functions for GNU Emacs 21, GNU
+;; Emacs 22 and XEmacs 21.4+.
+
+;;; Code:
+
+(eval-and-compile
+
+  ;; Pacify byte-compiler.
+  (require 'cl)
+  (require 'custom)
+
+  ;; Load the appropriate timer package.
+  (if (featurep 'xemacs)
+      (require 'timer-funcs)
+    (require 'timer))
+
+  ;; tramp-util offers integration into other (X)Emacs packages like
+  ;; compile.el, gud.el etc.  Not necessary in Emacs 23.
+  (eval-after-load "tramp"
+    ;; We check whether `start-file-process' is an alias.
+    '(when (or (not (fboundp 'start-file-process))
+              (symbolp (symbol-function 'start-file-process)))
+       (require 'tramp-util)
+       (add-hook 'tramp-unload-hook
+                '(lambda ()
+                   (when (featurep 'tramp-util)
+                     (unload-feature 'tramp-util 'force))))))
+
+  ;; Make sure that we get integration with the VC package.  When it
+  ;; is loaded, we need to pull in the integration module.  Not
+  ;; necessary in Emacs 23.
+  (eval-after-load "vc"
+    (eval-after-load "tramp"
+      ;; We check whether `start-file-process' is an alias.
+      '(when (or (not (fboundp 'start-file-process))
+                (symbolp (symbol-function 'start-file-process)))
+        (require 'tramp-vc)
+        (add-hook 'tramp-unload-hook
+                  '(lambda ()
+                     (when (featurep 'tramp-vc)
+                       (unload-feature 'tramp-vc 'force)))))))
+
+  ;; Avoid byte-compiler warnings if the byte-compiler supports this.
+  ;; Currently, XEmacs supports this.
+  (when (featurep 'xemacs)
+    (unless (boundp 'byte-compile-default-warnings)
+      (defvar byte-compile-default-warnings nil))
+    (delq 'unused-vars byte-compile-default-warnings))
+
+  ;; `last-coding-system-used' is unknown in XEmacs.
+  (unless (boundp 'last-coding-system-used)
+    (defvar last-coding-system-used nil))
+
+  ;; `directory-sep-char' is an obsolete variable in Emacs.  But it is
+  ;; used in XEmacs, so we set it here and there.  The following is
+  ;; needed to pacify Emacs byte-compiler.
+  (unless (boundp 'byte-compile-not-obsolete-var)
+    (defvar byte-compile-not-obsolete-var nil))
+  (setq byte-compile-not-obsolete-var 'directory-sep-char)
+
+  ;; `with-temp-message' does not exists in XEmacs.
+  (condition-case nil
+      (with-temp-message (current-message) nil)
+    (error (defmacro with-temp-message (message &rest body) `(progn ,@body))))
+
+  ;; `set-buffer-multibyte' comes from Emacs Leim.
+  (unless (fboundp 'set-buffer-multibyte)
+    (defalias 'set-buffer-multibyte 'ignore))
+
+  ;; `font-lock-add-keywords' does not exist in XEmacs.
+  (unless (fboundp 'font-lock-add-keywords)
+    (defalias 'font-lock-add-keywords 'ignore))
+
+  ;; `file-remote-p' has been introduced with Emacs 22.  The version
+  ;; of XEmacs is not a magic file name function (yet); this is
+  ;; corrected in tramp-util.el.  Here it is sufficient if the
+  ;; function exists.
+  (unless (fboundp 'file-remote-p)
+    (defalias 'file-remote-p 'tramp-handle-file-remote-p))
+
+  ;; `process-file' exists since Emacs 22.
+  (unless (fboundp 'process-file)
+    (defalias 'process-file 'tramp-handle-process-file))
+
+  ;; `start-file-process' is new in Emacs 23.
+  (unless (fboundp 'start-file-process)
+    (defalias 'start-file-process 'tramp-handle-start-file-process))
+
+  ;; `set-file-times' is also new in Emacs 23.
+  (unless (fboundp 'set-file-times)
+    (defalias 'set-file-times 'tramp-handle-set-file-times)))
+
+(defsubst tramp-compat-line-end-position ()
+  "Return point at end of line (compat function).
+Calls `line-end-position' or `point-at-eol' if defined, else
+own implementation."
+  (cond
+   ((fboundp 'line-end-position) (funcall (symbol-function 'line-end-position)))
+   ((fboundp 'point-at-eol)     (funcall (symbol-function 'point-at-eol)))
+   (t (save-excursion (end-of-line) (point)))))
+
+(defsubst tramp-compat-temporary-file-directory ()
+  "Return name of directory for temporary files (compat function).
+For Emacs, this is the variable `temporary-file-directory', for XEmacs
+this is the function `temp-directory'."
+  (cond
+   ((boundp 'temporary-file-directory) (symbol-value 'temporary-file-directory))
+   ((fboundp 'temp-directory) (funcall (symbol-function 'temp-directory)))
+   ((let ((d (getenv "TEMP"))) (and d (file-directory-p d)))
+    (file-name-as-directory (getenv "TEMP")))
+   ((let ((d (getenv "TMP"))) (and d (file-directory-p d)))
+    (file-name-as-directory (getenv "TMP")))
+   ((let ((d (getenv "TMPDIR"))) (and d (file-directory-p d)))
+    (file-name-as-directory (getenv "TMPDIR")))
+   ((file-exists-p "c:/temp") (file-name-as-directory "c:/temp"))
+   (t (message (concat "Neither `temporary-file-directory' nor "
+                      "`temp-directory' is defined -- using /tmp."))
+      (file-name-as-directory "/tmp"))))
+
+;; `make-temp-file' exists in Emacs only.  The third parameter SUFFIX
+;; has been introduced with Emacs 22.  We try it, if it fails, we fall
+;; back to `make-temp-name', creating the temporary file immediately
+;; in order to avoid a security hole.
+(defsubst tramp-compat-make-temp-file (filename)
+  "Create a temporary file (compat function).
+Add the extension of FILENAME, if existing."
+  (let ((prefix (expand-file-name
+                (symbol-value 'tramp-temp-name-prefix)
+                (tramp-compat-temporary-file-directory)))
+       (extension (file-name-extension filename t))
+       result)
+    (condition-case nil
+       (setq result
+             (funcall (symbol-function 'make-temp-file) prefix nil extension))
+      (error
+       ;; We use our own implementation, taken from files.el.
+       (while
+          (condition-case ()
+              (progn
+                (setq result (concat (make-temp-name prefix) extension))
+                (write-region
+                 "" nil result nil 'silent nil
+                 ;; 7th parameter is MUSTBENEW in Emacs, and
+                 ;; CODING-SYSTEM in XEmacs.  It is not a security
+                 ;; hole in XEmacs if we cannot use this parameter,
+                 ;; because XEmacs uses a user-specific subdirectory
+                 ;; with 0700 permissions.
+                 (when (not (featurep 'xemacs)) 'excl))
+                nil)
+            (file-already-exists t))
+        ;; The file was somehow created by someone else between
+        ;; `make-temp-name' and `write-region', let's try again.
+        nil)))
+    result))
+
+;; `most-positive-fixnum' arrived in Emacs 22.  Before, and in XEmacs,
+;; it is a fixed value.
+(defsubst tramp-compat-most-positive-fixnum ()
+  "Return largest positive integer value (compat function)."
+  (cond
+   ((boundp 'most-positive-fixnum) (symbol-value 'most-positive-fixnum))
+   ;; Default value in XEmacs and Emacs 21.
+   (t 134217727)))
+
+;; ID-FORMAT exists since Emacs 22.
+(defun tramp-compat-file-attributes (filename &optional id-format)
+  "Like `file-attributes' for Tramp files (compat function)."
+  (cond
+   ((or (null id-format) (eq id-format 'integer))
+    (file-attributes filename))
+   ((file-remote-p filename)
+    (funcall (symbol-function 'tramp-handle-file-attributes)
+            filename id-format))
+   (t (condition-case nil
+         (funcall (symbol-function 'file-attributes) filename id-format)
+       (error (file-attributes filename))))))
+
+;; PRESERVE-UID-GID has been introduced with Emacs 23.  It does not
+;; hurt to ignore it for other (X)Emacs versions.
+(defun tramp-compat-copy-file
+  (filename newname &optional ok-if-already-exists keep-date preserve-uid-gid)
+  "Like `copy-file' for Tramp files (compat function)."
+  (if preserve-uid-gid
+      (funcall
+       (symbol-function 'copy-file)
+       filename newname ok-if-already-exists keep-date preserve-uid-gid)
+    (copy-file filename newname ok-if-already-exists keep-date)))
+
+;; `copy-tree' is a built-in function in XEmacs.  In Emacs 21, it is
+;; an auoloaded function in cl-extra.el.  Since Emacs 22, it is part
+;; of subr.el.  There are problems when autoloading, therefore we test
+;; for for `subrp' and `symbol-file'.  Implementation is taken from Emacs23.
+(defun tramp-compat-copy-tree (tree)
+  "Make a copy of TREE (compat function)."
+  (if (or (subrp 'copy-tree) (symbol-file 'copy-tree))
+      (funcall (symbol-function 'copy-tree) tree)
+    (let (result)
+      (while (consp tree)
+       (let ((newcar (car tree)))
+         (if (consp (car tree))
+             (setq newcar (tramp-compat-copy-tree (car tree))))
+         (push newcar result))
+       (setq tree (cdr tree)))
+      (nconc (nreverse result) tree))))
+
+(provide 'tramp-compat)
+
+;;; TODO:
+
+;; arch-tag: 0e724b18-6699-4f87-ad96-640b272e5c85
+;;; tramp-compat.el ends here
diff --git a/lisp/net/tramp-fish.el b/lisp/net/tramp-fish.el
new file mode 100644 (file)
index 0000000..7116d14
--- /dev/null
@@ -0,0 +1,1165 @@
+;;; tramp-fish.el --- Tramp access functions for FISH protocol
+
+;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+;; Author: Michael Albinus <michael.albinus@gmx.de>
+;; Keywords: comm, processes
+
+;; 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, 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; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Access functions for FIles transferred over SHell protocol from Tramp.
+
+;; FISH is a protocol developped for the GNU Midnight Commander
+;; <https://savannah.gnu.org/projects/mc>.  A client connects to a
+;; remote host via ssh (or rsh, shall be configurable), and starts
+;; there a fish server via the command "start_fish_server".  All
+;; commands from the client have the form "#FISH_COMMAND\n" (always
+;; one line), followed by equivalent shell commands in case there is
+;; no fish server running.
+
+;; The fish server (or the equivalent shell commands) must return the
+;; response, which is finished by a line "### xxx  <optional text>\n".
+;; "xxx" stands for 3 digits, representing a return code.  Return
+;; codes "# 000" and "# 001" are reserved for fallback implementation
+;; with native shell commands; they are not used inside the server.  See
+;; <http://cvs.savannah.gnu.org/viewcvs/mc/vfs/README.fish?root=mc&view=markup>
+;; for details of original specification.
+
+;; The GNU Midnight Commander implements the original fish protocol
+;; version 0.0.2.  The KDE Konqueror has its own implementation, which
+;; can be found at
+;; <http://websvn.kde.org/branches/KDE/3.5/kdebase/kioslave/fish>.  It
+;; implements an extended protocol version 0.0.3.  Additionally, it
+;; provides a fish server implementation in Perl (which is the only
+;; implementation I've heard of).  The following command reference is
+;; based on that implementation.
+
+;; All commands return either "### 2xx\n" (OK) or "### 5xx <optional text>\n"
+;; (NOK).  Return codes are mentioned only if they are different from this.
+;; Spaces in any parameter must be escaped by "\ ".
+
+;; Command/Return Code                 Comment
+;;
+;; #FISH                               initial connection, not used
+;;                                     in .fishsrv.pl
+;; ### 100 transfer fish server                missing server, or wrong checksum
+;;                                     version 0.0.3 only
+
+;; #VER a.b.c <commands requested>
+;; VER x.y.z <commands offered>                .fishsrv.pl response is not uptodate
+
+;; #PWD
+;; /path/to/file
+
+;; #CWD /some/path
+
+;; #COPY /path/a /path/b               version 0.0.3 only
+
+;; #RENAME /path/a /path/b
+
+;; #SYMLINK /path/a /path/b
+
+;; #LINK /path/a /path/b
+
+;; #DELE /some/path
+
+;; #MKD /some/path
+
+;; #RMD /some/path
+
+;; #CHOWN user /file/name
+
+;; #CHGRP group /file/name
+
+;; #CHMOD 1234 file
+
+;; #READ <offset> <size> /path/and/filename
+;; ### 291                             successful exit when reading
+;;                                     ended at eof
+;; ### 292                             successful exit when reading
+;;                                     did not end at eof
+
+;; #WRITE <offset> <size> /path/and/filename
+
+;; #APPEND <size> /path/and/filename   version 0.0.3 only
+
+;; #LIST /directory
+;; <number of entries>                 version 0.0.3 only
+;; ### 100                             version 0.0.3 only
+;; P<unix permissions> <owner>.<group>
+;; S<size>
+;; d<3-letters month name> <day> <year or HH:MM>
+;; D<year> <month> <day> <hour> <minute> <second>[.1234]
+;; E<major-of-device>,<minor>
+;; :<filename>
+;; L<filename symlink points to>
+;; M<mimetype>                         version 0.0.3 only
+;; <blank line to separate items>
+
+;; #STAT /file                         version 0.0.3 only
+;;                                     like #LIST except for directories
+;; <number of entries>
+;; ### 100
+;; P<unix permissions> <owner>.<group>
+;; S<size>
+;; d<3-letters month name> <day> <year or HH:MM>
+;; D<year> <month> <day> <hour> <minute> <second>[.1234]
+;; E<major-of-device>,<minor>
+;; :<filename>
+;; L<filename symlink points to>
+;; <blank line to separate items>
+
+;; #RETR /some/name
+;; <filesize>
+;; ### 100
+;; <binary data>                       exactly filesize bytes
+;; ### 200                             with no preceding newline
+
+;; #STOR <size> /file/name
+;; ### 100
+;; <data>                              exactly size bytes
+;; ### 001                             partial success
+
+;; #EXEC <command> <tmpfile>           version 0.0.3 only
+;; <tmpfile> must not exists.  It contains the output of <command>.
+;; It can be retrieved afterwards.  Last line is
+;; ###RESULT: <returncode>
+
+;; This implementation is meant as proof of the concept, whether there
+;; is a better performance compared with the native ssh method.  It
+;; looks like the file information retrieval is slower, especially the
+;; #LIST command.  On the other hand, the file contents transmission
+;; seems to perform better than other inline methods, because there is
+;; no need for data encoding/decoding, and it supports the APPEND
+;; parameter of `write-region'.  Transfer of binary data fails due to
+;; Emacs' process input/output handling.
+
+
+;;; Code:
+
+(require 'tramp)
+(require 'tramp-cache)
+(require 'tramp-compat)
+
+;; Define FISH method ...
+(defcustom tramp-fish-method "fish"
+  "*Method to connect via FISH protocol."
+  :group 'tramp
+  :type 'string)
+
+;; ... and add it to the method list.
+(add-to-list 'tramp-methods (cons tramp-fish-method nil))
+
+;; Add a default for `tramp-default-user-alist'. Default is the local user.
+(add-to-list 'tramp-default-user-alist
+            `(,tramp-fish-method nil ,(user-login-name)))
+
+;; Add completion function for FISH method.
+(tramp-set-completion-function
+ tramp-fish-method tramp-completion-function-alist-ssh)
+
+(defconst tramp-fish-continue-prompt-regexp "^### 100.*\n"
+  "FISH return code OK.")
+
+;; It cannot be a defconst, occasionally we bind it locally.
+(defvar tramp-fish-ok-prompt-regexp "^### 200\n"
+  "FISH return code OK.")
+
+(defconst tramp-fish-error-prompt-regexp "^### \\(4\\|5\\)[0-9]+.*\n"
+  "Regexp for possible error strings of FISH servers.
+Used instead of analyzing error codes of commands.")
+
+(defcustom tramp-fish-start-fish-server-command
+  (concat "stty intr \"\" quit \"\" erase \"\" kill \"\" eof \"\" eol \"\" eol2 \"\" swtch \"\" start \"\" stop \"\" susp \"\" rprnt \"\" werase \"\" lnext \"\" flush \"\"; "
+         "perl .fishsrv.pl "
+           "`grep 'ARGV\\[0\\]' .fishsrv.pl | "
+           "sed -e 's/^[^\"]*\"//' -e 's/\"[^\"]*$//'`; "
+         "exit")
+  "*Command to connect via FISH protocol."
+  :group 'tramp
+  :type 'string)
+
+;; New handlers should be added here.
+(defconst tramp-fish-file-name-handler-alist
+  '(
+    ;; `access-file' performed by default handler
+    (add-name-to-file . tramp-fish-handle-add-name-to-file)
+    ;; `byte-compiler-base-file-name' performed by default handler
+    (copy-file . tramp-fish-handle-copy-file)
+    (delete-directory . tramp-fish-handle-delete-directory)
+    (delete-file . tramp-fish-handle-delete-file)
+    ;; `diff-latest-backup-file' performed by default handler
+    (directory-file-name . tramp-handle-directory-file-name)
+    (directory-files . tramp-handle-directory-files)
+    (directory-files-and-attributes . tramp-fish-handle-directory-files-and-attributes)
+    ;; `dired-call-process' performed by default handler
+    ;; `dired-compress-file' performed by default handler
+    ;; `dired-uncache' performed by default handler
+    (expand-file-name . tramp-fish-handle-expand-file-name)
+    ;; `file-accessible-directory-p' performed by default handler
+    (file-attributes . tramp-fish-handle-file-attributes)
+    (file-directory-p .  tramp-fish-handle-file-directory-p)
+    (file-executable-p . tramp-fish-handle-file-executable-p)
+    (file-exists-p . tramp-fish-handle-file-exists-p)
+    (file-local-copy . tramp-fish-handle-file-local-copy)
+    (file-remote-p . tramp-handle-file-remote-p)
+    (file-modes . tramp-handle-file-modes)
+    (file-name-all-completions . tramp-fish-handle-file-name-all-completions)
+    ;; `file-name-as-directory' performed by default handler
+    (file-name-completion . tramp-handle-file-name-completion)
+    (file-name-directory . tramp-handle-file-name-directory)
+    (file-name-nondirectory . tramp-handle-file-name-nondirectory)
+    ;; `file-name-sans-versions' performed by default handler
+    (file-newer-than-file-p . tramp-fish-handle-file-newer-than-file-p)
+    (file-ownership-preserved-p . ignore)
+    (file-readable-p . tramp-fish-handle-file-readable-p)
+    (file-regular-p . tramp-handle-file-regular-p)
+    (file-symlink-p . tramp-handle-file-symlink-p)
+    ;; `file-truename' performed by default handler
+    (file-writable-p . tramp-fish-handle-file-writable-p)
+    (find-backup-file-name . tramp-handle-find-backup-file-name)
+    ;; `find-file-noselect' performed by default handler
+    ;; `get-file-buffer' performed by default handler
+    (insert-directory . tramp-fish-handle-insert-directory)
+    (insert-file-contents . tramp-fish-handle-insert-file-contents)
+    (load . tramp-handle-load)
+    (make-directory . tramp-fish-handle-make-directory)
+    (make-directory-internal . tramp-fish-handle-make-directory-internal)
+    (make-symbolic-link . tramp-fish-handle-make-symbolic-link)
+    (rename-file . tramp-fish-handle-rename-file)
+    (set-file-modes . tramp-fish-handle-set-file-modes)
+    (set-file-times . tramp-fish-handle-set-file-times)
+    (set-visited-file-modtime . ignore)
+    (shell-command . tramp-handle-shell-command)
+    (substitute-in-file-name . tramp-handle-substitute-in-file-name)
+    (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
+    (vc-registered . ignore)
+    (verify-visited-file-modtime . ignore)
+    (write-region . tramp-fish-handle-write-region)
+    (executable-find . tramp-fish-handle-executable-find)
+    (start-file-process . ignore)
+    (process-file . tramp-fish-handle-process-file)
+)
+  "Alist of handler functions for Tramp FISH method.
+Operations not mentioned here will be handled by the default Emacs primitives.")
+
+(defun tramp-fish-file-name-p (filename)
+  "Check if it's a filename for FISH protocol."
+  (let ((v (tramp-dissect-file-name filename)))
+    (string= (tramp-file-name-method v) tramp-fish-method)))
+
+(defun tramp-fish-file-name-handler (operation &rest args)
+  "Invoke the FISH related OPERATION.
+First arg specifies the OPERATION, second arg is a list of arguments to
+pass to the OPERATION."
+  (let ((fn (assoc operation tramp-fish-file-name-handler-alist)))
+    (if fn
+       (save-match-data (apply (cdr fn) args))
+      (tramp-run-real-handler operation args))))
+
+(add-to-list 'tramp-foreign-file-name-handler-alist
+            (cons 'tramp-fish-file-name-p 'tramp-fish-file-name-handler))
+
+
+;; File name primitives
+
+(defun tramp-fish-handle-add-name-to-file
+  (filename newname &optional ok-if-already-exists)
+  "Like `add-name-to-file' for Tramp files."
+  (unless (tramp-equal-remote filename newname)
+    (with-parsed-tramp-file-name
+       (if (tramp-tramp-file-p filename) filename newname) nil
+      (tramp-error
+       v 'file-error
+       "add-name-to-file: %s"
+       "only implemented for same method, same user, same host")))
+  (with-parsed-tramp-file-name filename v1
+    (with-parsed-tramp-file-name newname v2
+      (when (and (not ok-if-already-exists)
+                (file-exists-p newname)
+                (not (numberp ok-if-already-exists))
+                (y-or-n-p
+                 (format
+                  "File %s already exists; make it a new name anyway? "
+                  newname)))
+       (tramp-error
+        v2 'file-error
+        "add-name-to-file: file %s already exists" newname))
+      (tramp-flush-file-property v2 v2-localname)
+      (unless (tramp-fish-send-command-and-check
+              v1 (format "#LINK %s %s" v1-localname v2-localname))
+       (tramp-error
+        v1 'file-error "Error with add-name-to-file %s" newname)))))
+
+(defun tramp-fish-handle-copy-file
+  (filename newname &optional ok-if-already-exists keep-date)
+  "Like `copy-file' for Tramp files."
+  (tramp-fish-do-copy-or-rename-file
+   'copy filename newname ok-if-already-exists keep-date))
+
+(defun tramp-fish-handle-delete-directory (directory)
+  "Like `delete-directory' for Tramp files."
+  (when (file-exists-p directory)
+    (with-parsed-tramp-file-name
+       (directory-file-name (expand-file-name directory)) nil
+      (tramp-flush-directory-property v localname)
+      (tramp-fish-send-command-and-check v (format "#RMD %s" localname)))))
+
+(defun tramp-fish-handle-delete-file (filename)
+  "Like `delete-file' for Tramp files."
+  (when (file-exists-p filename)
+    (with-parsed-tramp-file-name (expand-file-name filename) nil
+      (tramp-flush-file-property v localname)
+      (tramp-fish-send-command-and-check v (format "#DELE %s" localname)))))
+
+(defun tramp-fish-handle-directory-files-and-attributes
+  (directory &optional full match nosort id-format)
+  "Like `directory-files-and-attributes' for Tramp files."
+  (mapcar
+   (lambda (x)
+     ;; We cannot call `file-attributes' for backward compatibility reasons.
+     ;; Its optional parameter ID-FORMAT is introduced with Emacs 22.
+     (cons x (tramp-fish-handle-file-attributes
+       (if full x (expand-file-name x directory)) id-format)))
+   (directory-files directory full match nosort)))
+
+(defun tramp-fish-handle-expand-file-name (name &optional dir)
+  "Like `expand-file-name' for Tramp files."
+  ;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
+  (setq dir (or dir default-directory "/"))
+  ;; Unless NAME is absolute, concat DIR and NAME.
+  (unless (file-name-absolute-p name)
+    (setq name (concat (file-name-as-directory dir) name)))
+  ;; If NAME is not a tramp file, run the real handler
+  (if (or (tramp-completion-mode-p) (not (tramp-tramp-file-p name)))
+      (tramp-drop-volume-letter
+       (tramp-run-real-handler 'expand-file-name (list name nil)))
+    ;; Dissect NAME.
+    (with-parsed-tramp-file-name name nil
+      (unless (file-name-absolute-p localname)
+       (setq localname (concat "~/" localname)))
+      ;; Tilde expansion if necessary.
+      (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
+       (let ((uname (match-string 1 localname))
+             (fname (match-string 2 localname)))
+         ;; We cannot apply "~user/", because this is not supported
+         ;; by the FISH protocol.
+         (unless (string-equal uname "~")
+           (tramp-error
+            v 'file-error "Tilde expansion not supported for %s" name))
+         (setq uname
+           (with-connection-property v uname
+             (tramp-fish-send-command-and-check v "#PWD")
+             (with-current-buffer (tramp-get-buffer v)
+               (goto-char (point-min))
+               (buffer-substring (point) (tramp-compat-line-end-position)))))
+         (setq localname (concat uname fname))))
+      ;; There might be a double slash, for example when "~/"
+      ;; expands to "/". Remove this.
+      (while (string-match "//" localname)
+       (setq localname (replace-match "/" t t localname)))
+      ;; No tilde characters in file name, do normal
+      ;; expand-file-name (this does "/./" and "/../").  We bind
+      ;; `directory-sep-char' here for XEmacs on Windows, which
+      ;; would otherwise use backslash.  `default-directory' is
+      ;; bound, because on Windows there would be problems with UNC
+      ;; shares or Cygwin mounts.
+      (tramp-let-maybe directory-sep-char ?/
+       (let ((default-directory (tramp-compat-temporary-file-directory)))
+         (tramp-make-tramp-file-name
+          method user host
+          (tramp-drop-volume-letter
+           (tramp-run-real-handler 'expand-file-name
+                                   (list localname)))))))))
+
+(defun tramp-fish-handle-file-attributes (filename &optional id-format)
+  "Like `file-attributes' for Tramp files."
+  (with-parsed-tramp-file-name (expand-file-name filename) nil
+    (with-file-property v localname (format "file-attributes-%s" id-format)
+      (cdr (car (tramp-fish-get-file-entries v localname nil))))))
+
+(defun tramp-fish-handle-file-directory-p (filename)
+  "Like `file-directory-p' for Tramp files."
+  (let ((attributes (file-attributes filename)))
+    (and attributes
+        (or (string-match "d" (nth 8 attributes))
+            (and (file-symlink-p filename)
+                 (with-parsed-tramp-file-name filename nil
+                   (file-directory-p
+                    (tramp-make-tramp-file-name
+                     method user host (nth 0 attributes))))))
+        t)))
+
+(defun tramp-fish-handle-file-exists-p (filename)
+  "Like `file-exists-p' for Tramp files."
+  (and (file-attributes filename) t))
+
+(defun tramp-fish-handle-file-executable-p (filename)
+  "Like `file-executable-p' for Tramp files."
+  (with-parsed-tramp-file-name (expand-file-name filename) nil
+    (with-file-property v localname "file-executable-p"
+      (when (file-exists-p filename)
+       (let ((mode-chars (string-to-vector (nth 8 (file-attributes filename))))
+             (home-directory
+              (tramp-make-tramp-file-name
+               method user host
+               (tramp-get-connection-property v "home-directory" nil))))
+         (or (and (char-equal (aref mode-chars 3) ?x)
+                  (equal (nth 2 (file-attributes filename))
+                         (nth 2 (file-attributes home-directory))))
+             (and (char-equal (aref mode-chars 6) ?x)
+                  (equal (nth 3 (file-attributes filename))
+                         (nth 3 (file-attributes home-directory))))
+             (char-equal (aref mode-chars 9) ?x)))))))
+
+(defun tramp-fish-handle-file-readable-p (filename)
+  "Like `file-readable-p' for Tramp files."
+  (with-parsed-tramp-file-name (expand-file-name filename) nil
+    (with-file-property v localname "file-readable-p"
+      (when (file-exists-p filename)
+       (let ((mode-chars (string-to-vector (nth 8 (file-attributes filename))))
+             (home-directory
+              (tramp-make-tramp-file-name
+               method user host
+               (tramp-get-connection-property v "home-directory" nil))))
+         (or (and (char-equal (aref mode-chars 1) ?r)
+                  (equal (nth 2 (file-attributes filename))
+                         (nth 2 (file-attributes home-directory))))
+             (and (char-equal (aref mode-chars 4) ?r)
+                  (equal (nth 3 (file-attributes filename))
+                         (nth 3 (file-attributes home-directory))))
+             (char-equal (aref mode-chars 7) ?r)))))))
+
+(defun tramp-fish-handle-file-writable-p (filename)
+  "Like `file-writable-p' for Tramp files."
+  (with-parsed-tramp-file-name (expand-file-name filename) nil
+    (with-file-property v localname "file-writable-p"
+      (if (not (file-exists-p filename))
+         ;; If file doesn't exist, check if directory is writable.
+         (and (file-directory-p (file-name-directory filename))
+              (file-writable-p (file-name-directory filename)))
+       ;; Existing files must be writable.
+       (let ((mode-chars (string-to-vector (nth 8 (file-attributes filename))))
+             (home-directory
+              (tramp-make-tramp-file-name
+               method user host
+               (tramp-get-connection-property v "home-directory" nil))))
+         (or (and (char-equal (aref mode-chars 2) ?w)
+                  (equal (nth 2 (file-attributes filename))
+                         (nth 2 (file-attributes home-directory))))
+             (and (char-equal (aref mode-chars 5) ?w)
+                  (equal (nth 3 (file-attributes filename))
+                         (nth 3 (file-attributes home-directory))))
+             (char-equal (aref mode-chars 8) ?w)))))))
+
+(defun tramp-fish-handle-file-local-copy (filename)
+  "Like `file-local-copy' for Tramp files."
+  (with-parsed-tramp-file-name (expand-file-name filename) nil
+    (unless (file-exists-p filename)
+      (tramp-error
+       v 'file-error
+       "Cannot make local copy of non-existing file `%s'" filename))
+    (let ((tmpfile (tramp-compat-make-temp-file filename)))
+      (tramp-message v 4 "Fetching %s to tmp file %s..." filename tmpfile)
+      (when (tramp-fish-retrieve-data v)
+       ;; Save file
+       (with-current-buffer (tramp-get-buffer v)
+         (write-region (point-min) (point-max) tmpfile))
+       (tramp-message v 4 "Fetching %s to tmp file %s...done" filename tmpfile)
+       tmpfile))))
+
+;; This function should return "foo/" for directories and "bar" for
+;; files.
+(defun tramp-fish-handle-file-name-all-completions (filename directory)
+  "Like `file-name-all-completions' for Tramp files."
+  (all-completions
+   filename
+   (with-parsed-tramp-file-name (expand-file-name directory) nil
+     (with-file-property v localname "file-name-all-completions"
+       (save-match-data
+        (let ((entries
+               (with-file-property v localname "file-entries"
+                 (tramp-fish-get-file-entries v localname t))))
+          (mapcar
+           (lambda (x)
+             (list
+              (if (string-match "d" (nth 9 x))
+                  (file-name-as-directory (nth 0 x))
+                (nth 0 x))))
+           entries)))))))
+
+(defun tramp-fish-handle-file-newer-than-file-p (file1 file2)
+  "Like `file-newer-than-file-p' for Tramp files."
+  (cond
+   ((not (file-exists-p file1)) nil)
+   ((not (file-exists-p file2)) t)
+   (t (tramp-time-less-p (nth 5 (file-attributes file2))
+                        (nth 5 (file-attributes file1))))))
+
+(defun tramp-fish-handle-insert-directory
+  (filename switches &optional wildcard full-directory-p)
+  "Like `insert-directory' for Tramp files.
+WILDCARD and FULL-DIRECTORY-P are not handled."
+  (setq filename (expand-file-name filename))
+  (when (file-directory-p filename)
+    ;; This check is a little bit strange, but in `dired-add-entry'
+    ;; this function is called with a non-directory ...
+    (setq filename (file-name-as-directory filename)))
+
+  (with-parsed-tramp-file-name filename nil
+    (tramp-flush-file-property v localname)
+    (save-match-data
+      (let ((entries
+            (with-file-property v localname "file-entries"
+              (tramp-fish-get-file-entries v localname t))))
+
+       ;; Sort entries
+       (setq entries
+             (sort
+              entries
+              (lambda (x y)
+                (if (string-match "t" switches)
+                    ;; Sort by date.
+                    (tramp-time-less-p (nth 6 y) (nth 6 x))
+                  ;; Sort by name.
+                  (string-lessp (nth 0 x) (nth 0 y))))))
+
+       ;; Print entries.
+       (mapcar
+        (lambda (x)
+          (insert
+           (format
+            "%10s %3d %-8s %-8s %8s %s %s%s\n"
+            (nth 9 x) ; mode
+            1         ; hardlinks
+            (nth 3 x) ; uid
+            (nth 4 x) ; gid
+            (nth 8 x) ; size
+            (format-time-string
+             (if (tramp-time-less-p
+                  (tramp-time-subtract (current-time) (nth 6 x))
+                  tramp-half-a-year)
+                 "%b %e %R"
+               "%b %e  %Y")
+             (nth 6 x)) ; date
+            (nth 0 x) ; file name
+            (if (stringp (nth 1 x)) (format " -> %s" (nth 1 x)) "")))
+          (forward-line)
+          (beginning-of-line))
+        entries)))))
+
+(defun tramp-fish-handle-insert-file-contents
+  (filename &optional visit beg end replace)
+  "Like `insert-file-contents' for Tramp files."
+  (barf-if-buffer-read-only)
+  (when visit
+    (setq buffer-file-name (expand-file-name filename))
+    (set-visited-file-modtime)
+    (set-buffer-modified-p nil))
+
+  (with-parsed-tramp-file-name filename nil
+    (if (not (file-exists-p filename))
+       (tramp-error
+        v 'file-error "File %s not found on remote host" filename)
+
+      (let ((point (point))
+           size)
+       (tramp-message v 4 "Fetching file %s..." filename)
+       (when (tramp-fish-retrieve-data v)
+         ;; Insert file
+         (insert
+          (with-current-buffer (tramp-get-buffer v)
+            (let ((beg (or beg (point-min)))
+                  (end (min (or end (point-max)) (point-max))))
+              (setq size (- end beg))
+              (buffer-substring beg end))))
+         (goto-char point))
+       (tramp-message v 4 "Fetching file %s...done" filename)
+
+       (list (expand-file-name filename) size)))))
+
+(defun tramp-fish-handle-make-directory (dir &optional parents)
+  "Like `make-directory' for Tramp files."
+  (setq dir (directory-file-name (expand-file-name dir)))
+  (unless (file-name-absolute-p dir)
+    (setq dir (expand-file-name dir default-directory)))
+  (with-parsed-tramp-file-name dir nil
+    (save-match-data
+      (let ((ldir (file-name-directory dir)))
+       ;; Make missing directory parts
+       (when (and parents (not (file-directory-p ldir)))
+         (make-directory ldir parents))
+       ;; Just do it
+       (when (file-directory-p ldir)
+         (make-directory-internal dir))
+       (unless (file-directory-p dir)
+         (tramp-error v 'file-error "Couldn't make directory %s" dir))))))
+
+(defun tramp-fish-handle-make-directory-internal (directory)
+  "Like `make-directory-internal' for Tramp files."
+  (setq directory (directory-file-name (expand-file-name directory)))
+  (unless (file-name-absolute-p directory)
+    (setq directory (expand-file-name directory default-directory)))
+  (when (file-directory-p (file-name-directory directory))
+    (with-parsed-tramp-file-name directory nil
+      (save-match-data
+       (unless
+           (tramp-fish-send-command-and-check v (format "#MKD %s" localname))
+         (tramp-error
+          v 'file-error "Couldn't make directory %s" directory))))))
+
+(defun tramp-fish-handle-make-symbolic-link
+  (filename linkname &optional ok-if-already-exists)
+  "Like `make-symbolic-link' for Tramp files.
+If LINKNAME is a non-Tramp file, it is used verbatim as the target of
+the symlink.  If LINKNAME is a Tramp file, only the localname component is
+used as the target of the symlink.
+
+If LINKNAME is a Tramp file and the localname component is relative, then
+it is expanded first, before the localname component is taken.  Note that
+this can give surprising results if the user/host for the source and
+target of the symlink differ."
+  (with-parsed-tramp-file-name linkname nil
+    ;; Do the 'confirm if exists' thing.
+    (when (file-exists-p linkname)
+      ;; What to do?
+      (if (or (null ok-if-already-exists) ; not allowed to exist
+             (and (numberp ok-if-already-exists)
+                  (not (yes-or-no-p
+                        (format
+                         "File %s already exists; make it a link anyway? "
+                         localname)))))
+         (tramp-error
+          v 'file-already-exists "File %s already exists" localname)
+       (delete-file linkname)))
+
+    ;; If FILENAME is a Tramp name, use just the localname component.
+    (when (tramp-tramp-file-p filename)
+      (setq filename (tramp-file-name-localname
+                     (tramp-dissect-file-name (expand-file-name filename)))))
+
+    ;; Right, they are on the same host, regardless of user, method, etc.
+    ;; We now make the link on the remote machine. This will occur as the user
+    ;; that FILENAME belongs to.
+    (unless
+       (tramp-fish-send-command-and-check
+        v (format "#SYMLINK %s %s" filename localname))
+      (tramp-error v 'file-error "Error creating symbolic link %s" linkname))))
+
+(defun tramp-fish-handle-rename-file
+  (filename newname &optional ok-if-already-exists)
+  "Like `rename-file' for Tramp files."
+  (tramp-fish-do-copy-or-rename-file
+   'rename filename newname ok-if-already-exists t))
+
+(defun tramp-fish-handle-set-file-modes (filename mode)
+  "Like `set-file-modes' for Tramp files."
+  (with-parsed-tramp-file-name filename nil
+    (tramp-flush-file-property v localname)
+    (unless (tramp-fish-send-command-and-check
+            v (format "#CHMOD %s %s"
+                      (tramp-decimal-to-octal mode)
+                      (tramp-shell-quote-argument localname)))
+      (tramp-error
+       v 'file-error "Error while changing file's mode %s" filename))))
+
+(defun tramp-fish-handle-set-file-times (filename &optional time)
+  "Like `set-file-times' for Tramp files."
+  (with-parsed-tramp-file-name filename nil
+    (let ((time (if (or (null time) (equal time '(0 0))) (current-time) time)))
+      (zerop (process-file
+             "touch" nil nil nil "-t"
+             (format-time-string "%Y%m%d%H%M.%S" time)
+             (tramp-shell-quote-argument localname))))))
+
+(defun tramp-fish-handle-write-region
+  (start end filename &optional append visit lockname confirm)
+  "Like `write-region' for Tramp files."
+  (setq filename (expand-file-name filename))
+  (with-parsed-tramp-file-name filename nil
+    ;; XEmacs takes a coding system as the seventh argument, not `confirm'
+    (when (and (not (featurep 'xemacs))
+              confirm (file-exists-p filename))
+      (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
+                               filename))
+       (tramp-error v 'file-error "File not overwritten")))
+
+    (tramp-flush-file-property v localname)
+
+    ;; Send command
+    (let ((tramp-fish-ok-prompt-regexp
+          (concat
+           tramp-fish-ok-prompt-regexp "\\|"
+           tramp-fish-continue-prompt-regexp)))
+      (tramp-fish-send-command
+       v (format "%s %d %s\n### 100"
+                (if append "#APPEND" "#STOR") (- end start) localname)))
+
+    ;; Send data, if there are any.
+    (when (> end start)
+      (tramp-fish-send-command v (buffer-substring-no-properties start end)))
+
+    (when (eq visit t)
+      (set-visited-file-modtime))))
+
+(defun tramp-fish-handle-executable-find (command)
+  "Like `executable-find' for Tramp files."
+  (with-temp-buffer
+    (if (zerop (process-file "which" nil t nil command))
+       (progn
+         (goto-char (point-min))
+         (buffer-substring (point-min) (tramp-compat-line-end-position))))))
+
+(defun tramp-fish-handle-process-file
+  (program &optional infile destination display &rest args)
+  "Like `process-file' for Tramp files."
+  ;; The implementation is not complete yet.
+  (when (and (numberp destination) (zerop destination))
+    (error "Implementation does not handle immediate return"))
+
+  (with-parsed-tramp-file-name default-directory nil
+    (let (command input tmpinput output tmpoutput stderr tmpstderr
+                 outbuf tmpfile ret)
+      ;; Compute command.
+      (setq command (mapconcat 'tramp-shell-quote-argument
+                              (cons program args) " "))
+      ;; Determine input.
+      (if (null infile)
+         (setq input "/dev/null")
+       (setq infile (expand-file-name infile))
+       (if (tramp-equal-remote default-directory infile)
+           ;; INFILE is on the same remote host.
+           (setq input (with-parsed-tramp-file-name infile nil localname))
+         ;; INFILE must be copied to remote host.
+         (setq input (tramp-make-tramp-temp-file v)
+               tmpinput (tramp-make-tramp-file-name method user host input))
+         (copy-file infile tmpinput t)))
+      (when input (setq command (format "%s <%s" command input)))
+
+      ;; Determine output.
+      (setq output (tramp-make-tramp-temp-file v)
+           tmpoutput (tramp-make-tramp-file-name method user host output))
+      (cond
+       ;; Just a buffer
+       ((bufferp destination)
+       (setq outbuf destination))
+       ;; A buffer name
+       ((stringp destination)
+       (setq outbuf (get-buffer-create destination)))
+       ;; (REAL-DESTINATION ERROR-DESTINATION)
+       ((consp destination)
+       ;; output
+       (cond
+        ((bufferp (car destination))
+         (setq outbuf (car destination)))
+        ((stringp (car destination))
+         (setq outbuf (get-buffer-create (car destination)))))
+       ;; stderr
+       (cond
+        ((stringp (cadr destination))
+         (setcar (cdr destination) (expand-file-name (cadr destination)))
+         (if (tramp-equal-remote default-directory (cadr destination))
+             ;; stderr is on the same remote host.
+             (setq stderr (with-parsed-tramp-file-name
+                              (cadr destination) nil localname))
+           ;; stderr must be copied to remote host.  The temporary
+           ;; file must be deleted after execution.
+           (setq stderr (tramp-make-tramp-temp-file v)
+                 tmpstderr (tramp-make-tramp-file-name
+                            method user host stderr))))
+        ;; stderr to be discarded
+        ((null (cadr destination))
+         (setq stderr "/dev/null"))))
+       ;; 't
+       (destination
+       (setq outbuf (current-buffer))))
+      (when stderr (setq command (format "%s 2>%s" command stderr)))
+
+      ;; Goto working directory.
+      (unless
+         (tramp-fish-send-command-and-check
+          v (format "#CWD %s" (tramp-shell-quote-argument localname)))
+       (tramp-error v 'file-error "No such directory: %s" default-directory))
+      ;; Send the command.  It might not return in time, so we protect it.
+      (condition-case nil
+         (unwind-protect
+             (unless (tramp-fish-send-command-and-check
+                      v (format
+                         "#EXEC %s %s"
+                         (tramp-shell-quote-argument command) output))
+               (error nil))
+           ;; Check return code.
+           (setq tmpfile
+                 (file-local-copy
+                  (tramp-make-tramp-file-name method user host output)))
+           (with-temp-buffer
+             (insert-file-contents tmpfile)
+             (goto-char (point-max))
+             (forward-line -1)
+             (looking-at "^###RESULT: \\([0-9]+\\)")
+             (setq ret (string-to-number (match-string 1)))
+             (delete-region (point) (point-max))
+             (write-region (point-min) (point-max) tmpfile))
+           ;; We should show the output anyway.
+           (when outbuf
+             (with-current-buffer outbuf (insert-file-contents tmpfile))
+             (when display (display-buffer outbuf))))
+       ;; When the user did interrupt, we should do it also.
+       (error (setq ret 1)))
+
+      ;; Provide error file.
+      (when tmpstderr (rename-file tmpstderr (cadr destination) t))
+      ;; Cleanup.
+      (when tmpinput (delete-file tmpinput))
+      (when tmpoutput (delete-file tmpoutput))
+      ;; Return exit status.
+      ret)))
+
+
+;; Internal file name functions
+
+(defun tramp-fish-do-copy-or-rename-file
+  (op filename newname &optional ok-if-already-exists keep-date)
+  "Copy or rename a remote file.
+OP must be `copy' or `rename' and indicates the operation to
+perform.  FILENAME specifies the file to copy or rename, NEWNAME
+is the name of the new file (for copy) or the new name of the
+file (for rename).  OK-IF-ALREADY-EXISTS means don't barf if
+NEWNAME exists already.  KEEP-DATE means to make sure that
+NEWNAME has the same timestamp as FILENAME.
+
+This function is invoked by `tramp-fish-handle-copy-file' and
+`tramp-fish-handle-rename-file'.  It is an error if OP is neither
+of `copy' and `rename'.  FILENAME and NEWNAME must be absolute
+file names."
+  (unless (memq op '(copy rename))
+    (error "Unknown operation `%s', must be `copy' or `rename'" op))
+  (let ((t1 (tramp-tramp-file-p filename))
+       (t2 (tramp-tramp-file-p newname)))
+
+    (unless ok-if-already-exists
+      (when (and t2 (file-exists-p newname))
+       (with-parsed-tramp-file-name newname nil
+         (tramp-error
+          v 'file-already-exists "File %s already exists" newname))))
+
+    (prog1
+       (cond
+        ;; Both are Tramp files.
+        ((and t1 t2)
+         (cond
+          ;; Shortcut: if method, host, user are the same for both
+          ;; files, we invoke `cp' or `mv' on the remote host
+          ;; directly.
+          ((tramp-equal-remote filename newname)
+           (tramp-fish-do-copy-or-rename-file-directly
+            op filename newname keep-date))
+          ;; No shortcut was possible.  So we copy the
+          ;; file first.  If the operation was `rename', we go
+          ;; back and delete the original file (if the copy was
+          ;; successful).  The approach is simple-minded: we
+          ;; create a new buffer, insert the contents of the
+          ;; source file into it, then write out the buffer to
+          ;; the target file.  The advantage is that it doesn't
+          ;; matter which filename handlers are used for the
+          ;; source and target file.
+          (t
+           (tramp-do-copy-or-rename-file-via-buffer
+            op filename newname keep-date))))
+
+        ;; One file is a Tramp file, the other one is local.
+        ((or t1 t2)
+         ;; Use the generic method via a Tramp buffer.
+         (tramp-do-copy-or-rename-file-via-buffer
+          op filename newname keep-date))
+
+        (t
+         ;; One of them must be a Tramp file.
+         (error "Tramp implementation says this cannot happen")))
+      ;; When newname did exist, we have wrong cached values.
+      (when t2
+       (with-parsed-tramp-file-name newname nil
+         (tramp-flush-file-property v localname)
+         (tramp-flush-file-property v (file-name-directory localname)))))))
+
+(defun tramp-fish-do-copy-or-rename-file-directly
+  (op filename newname keep-date)
+  "Invokes `COPY' or `RENAME' on the remote system.
+OP must be one of `copy' or `rename', indicating `cp' or `mv',
+respectively.  VEC specifies the connection.  LOCALNAME1 and
+LOCALNAME2 specify the two arguments of `cp' or `mv'.  If
+KEEP-DATE is non-nil, preserve the time stamp when copying."
+  (with-parsed-tramp-file-name filename v1
+    (with-parsed-tramp-file-name newname v2
+      (tramp-fish-send-command
+       v1
+       (format "%s %s %s"
+              (if (eq op 'copy) "#COPY" "#RENAME")
+              (tramp-shell-quote-argument v1-localname)
+              (tramp-shell-quote-argument v2-localname)))))
+  ;; KEEP-DATE handling.
+  (when (and keep-date (functionp 'set-file-times))
+    (set-file-times newname (nth 5 (file-attributes filename))))
+  ;; Set the mode.
+  (set-file-modes newname (file-modes filename)))
+
+(defun tramp-fish-get-file-entries (vec localname list)
+  "Read entries returned by FISH server.
+When LIST is true, a #LIST command will be sent, including all entries
+of a directory.  Otherwise, #STAT is sent for just one entry.
+Result is a list of (LOCALNAME LINK COUNT UID GID ATIME MTIME CTIME
+SIZE MODE WEIRD INODE DEVICE)."
+  (block nil
+    (with-current-buffer (tramp-get-buffer vec)
+      ;; #LIST does not work properly with trailing "/", at least in
+      ;; .fishsrv.pl.
+      (when (string-match "/$" localname)
+       (setq localname (concat localname ".")))
+
+      (let ((command (format "%s %s" (if list "#LIST" "#STAT") localname))
+           buffer-read-only num res)
+
+       ;; Send command
+       (tramp-fish-send-command vec command)
+
+       ;; Read number of entries
+       (goto-char (point-min))
+       (condition-case nil
+           (unless (integerp (setq num (read (current-buffer)))) (error nil))
+         (error (return nil)))
+       (forward-line)
+       (delete-region (point-min) (point))
+
+       ;; Read return code
+       (goto-char (point-min))
+       (condition-case nil
+           (unless (looking-at tramp-fish-continue-prompt-regexp) (error nil))
+         (error (return nil)))
+       (forward-line)
+       (delete-region (point-min) (point))
+
+       ;; Loop the listing
+       (dotimes (i num)
+         (let ((item (tramp-fish-read-file-entry)))
+           ;; Add inode and device.
+           (add-to-list
+            'res (append item
+                         (list (tramp-get-inode vec)
+                               (tramp-get-device vec))))))
+
+       ;; Read return code
+       (goto-char (point-min))
+       (condition-case nil
+           (unless (looking-at tramp-fish-ok-prompt-regexp) (error nil))
+         (error (tramp-error
+                 vec 'file-error
+                 "`%s' does not return a valid Lisp expression: `%s'"
+                 command (buffer-string))))
+       (forward-line)
+       (delete-region (point-min) (point))
+
+       res))))
+
+(defun tramp-fish-read-file-entry ()
+  "Parse entry in output buffer.
+Result is the list (LOCALNAME LINK COUNT UID GID ATIME MTIME CTIME
+SIZE MODE WEIRD)."
+  ;; We are called from `tramp-fish-get-file-entries', which sets the
+  ;; current buffer.
+  (let (buffer-read-only localname link uid gid mtime size mode)
+    (block nil
+      (while t
+       (cond
+        ;; P<unix permissions> <owner>.<group>
+        ((looking-at "^P\\(.+\\)\\s-\\(.+\\)\\.\\(.+\\)$")
+         (setq mode (match-string 1))
+         (setq uid (match-string 2))
+         (setq gid (match-string 3))
+         (when (string-match "^d" mode) (setq link t)))
+        ;; S<size>
+        ((looking-at "^S\\([0-9]+\\)$")
+         (setq size (string-to-number (match-string 1))))
+        ;; D<year> <month> <day> <hour> <minute> <second>[.1234]
+        ((looking-at
+          "^D\\([0-9]+\\)\\s-\\([0-9]+\\)\\s-\\([0-9]+\\)\\s-\\([0-9]+\\)\\s-\\([0-9]+\\)\\s-\\(\\S-+\\)$")
+         (setq mtime
+               (encode-time
+                (string-to-number (match-string 6))
+                (string-to-number (match-string 5))
+                (string-to-number (match-string 4))
+                (string-to-number (match-string 3))
+                (string-to-number (match-string 2))
+                (string-to-number (match-string 1)))))
+        ;; d<3-letters month name> <day> <year or HH:MM>
+        ((looking-at "^d") nil)
+        ;; E<major-of-device>,<minor>
+        ((looking-at "^E") nil)
+        ;; :<filename>
+        ((looking-at "^:\\(.+\\)$")
+         (setq localname (match-string 1)))
+        ;; L<filename symlink points to>
+        ((looking-at "^L\\(.+\\)$")
+         (setq link (match-string 1)))
+        ;; M<mimetype>
+        ((looking-at "^M\\(.+\\)$") nil)
+        ;; last line
+        ((looking-at "^$")
+         (return)))
+       ;; delete line
+       (forward-line)
+       (delete-region (point-min) (point))))
+
+    ;; delete trailing empty line
+    (forward-line)
+    (delete-region (point-min) (point))
+
+    ;; Return entry in file-attributes format
+    (list localname link -1 uid gid '(0 0) mtime '(0 0) size mode nil)))
+
+(defun tramp-fish-retrieve-data (vec)
+  "Reads remote data for FISH protocol.
+The data are left in the connection buffer of VEC for further processing.
+Returns the size of the data."
+  (block nil
+    (with-current-buffer (tramp-get-buffer vec)
+      ;; The retrieved data might be in binary format, without
+      ;; trailing newline.  Therefore, the OK prompt might not start
+      ;; at the beginning of a line.
+      (let ((tramp-fish-ok-prompt-regexp "### 200\n")
+           size)
+
+       ;; Send command
+       (tramp-fish-send-command
+        vec (format "#RETR %s" (tramp-file-name-localname vec)))
+
+       ;; Read filesize
+       (goto-char (point-min))
+       (condition-case nil
+           (unless (integerp (setq size (read (current-buffer)))) (error nil))
+         (error (return nil)))
+       (forward-line)
+       (delete-region (point-min) (point))
+
+       ;; Read return code
+       (goto-char (point-min))
+       (condition-case nil
+           (unless (looking-at tramp-fish-continue-prompt-regexp) (error nil))
+         (error (return nil)))
+       (forward-line)
+       (delete-region (point-min) (point))
+
+       ;; The received data might contain the OK prompt already, so
+       ;; there might be outstanding data.
+       (while (/= (+ size (length tramp-fish-ok-prompt-regexp))
+                  (- (point-max) (point-min)))
+         (tramp-wait-for-regexp
+          (tramp-get-connection-process vec) nil
+          (concat tramp-fish-ok-prompt-regexp "$")))
+
+       ;; Read return code
+       (goto-char (+ (point-min) size))
+       (condition-case nil
+           (unless (looking-at tramp-fish-ok-prompt-regexp) (error nil))
+         (error (return nil)))
+       (delete-region (+ (point-min) size) (point-max))
+       size))))
+
+
+;; Connection functions
+
+(defun tramp-fish-maybe-open-connection (vec)
+  "Maybe open a connection VEC.
+Does not do anything if a connection is already open, but re-opens the
+connection if a previous connection has died for some reason."
+  (let ((process-connection-type tramp-process-connection-type)
+       (p (get-buffer-process (tramp-get-buffer vec))))
+
+    ;; New connection must be opened.
+    (unless (and p (processp p) (memq (process-status p) '(run open)))
+
+      ;; Set variables for computing the prompt for reading password.
+      (setq tramp-current-method (tramp-file-name-method vec)
+           tramp-current-user (tramp-file-name-user vec)
+           tramp-current-host (tramp-file-name-host vec))
+
+      ;; Start new process.
+      (when (and p (processp p))
+       (delete-process p))
+      (setenv "TERM" tramp-terminal-type)
+      (setenv "PS1" "$ ")
+      (tramp-message
+       vec 3 "Opening connection for %s@%s using %s..."
+       tramp-current-user tramp-current-host tramp-current-method)
+
+      (let* ((process-connection-type tramp-process-connection-type)
+            (inhibit-eol-conversion nil)
+            (coding-system-for-read 'binary)
+            (coding-system-for-write 'binary)
+            ;; This must be done in order to avoid our file name handler.
+            (p (let ((default-directory
+                       (tramp-compat-temporary-file-directory)))
+                 (start-process
+                  (or (tramp-get-connection-property vec "process-name" nil)
+                      (tramp-buffer-name vec))
+                  (tramp-get-connection-buffer vec)
+                  "ssh" "-l"
+                  (tramp-file-name-user vec)
+                  (tramp-file-name-host vec)))))
+       (tramp-message vec 6 "%s" (mapconcat 'identity (process-command p) " "))
+
+       ;; Check whether process is alive.
+       (set-process-sentinel p 'tramp-flush-connection-property)
+       (tramp-set-process-query-on-exit-flag p nil)
+
+       (tramp-process-actions p vec tramp-actions-before-shell 60)
+       (tramp-fish-send-command vec tramp-fish-start-fish-server-command)
+       (tramp-message
+        vec 3
+        "Found remote shell prompt on `%s'" (tramp-file-name-host vec))))))
+
+(defun tramp-fish-send-command (vec command)
+  "Send the COMMAND to connection VEC."
+  (tramp-fish-maybe-open-connection vec)
+  (tramp-message vec 6 "%s" command)
+  (tramp-send-string vec command)
+  (tramp-wait-for-regexp
+   (tramp-get-connection-process vec) nil
+   (concat tramp-fish-ok-prompt-regexp "\\|" tramp-fish-error-prompt-regexp)))
+
+(defun tramp-fish-send-command-and-check (vec command)
+  "Send the COMMAND to connection VEC.
+Returns nil if there has been an error message."
+
+  ;; Send command.
+  (tramp-fish-send-command vec command)
+
+  ;; Read return code.
+  (with-current-buffer (tramp-get-buffer vec)
+    (goto-char (point-min))
+    (looking-at tramp-fish-ok-prompt-regexp)))
+
+(provide 'tramp-fish)
+;
+;;;; TODO:
+;
+;; * Evaluate the MIME information with #LIST or #STAT.
+;
+
+;; arch-tag: a66df7df-5f29-42a7-a921-643ceb29db49
+;;;; tramp-fish.el ends here
index 0ccae3366360a048b8ee8827e5c5b4d5c906faca..85416d308d3bf38661d5007884412656a34254cc 100644 (file)
@@ -1,4 +1,4 @@
-;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*-
+;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP
 
 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
 ;;   2007 Free Software Foundation, Inc.
@@ -19,9 +19,8 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -31,6 +30,7 @@
 ;;; Code:
 
 (require 'tramp)
+(autoload 'tramp-set-connection-property "tramp-cache")
 
 (eval-when-compile (require 'custom))
 
@@ -110,10 +110,13 @@ present for backward compatibility."
             (list "" "\\`\\(anonymous\\|ftp\\)\\'" tramp-ftp-method))
 
 ;; Add completion function for FTP method.
-(unless (memq system-type '(windows-nt))
-  (tramp-set-completion-function
-   tramp-ftp-method
-   '((tramp-parse-netrc "~/.netrc"))))
+(tramp-set-completion-function
+ tramp-ftp-method
+ '((tramp-parse-netrc "~/.netrc")))
+
+;; If there is URL syntax, `substitute-in-file-name' needs special
+;; handling.
+(put 'substitute-in-file-name 'ange-ftp 'tramp-handle-substitute-in-file-name)
 
 (defun tramp-ftp-file-name-handler (operation &rest args)
   "Invoke the Ange-FTP handler for OPERATION.
@@ -135,30 +138,43 @@ pass to the OPERATION."
          (ange-ftp-ftp-name-arg "")
          (ange-ftp-ftp-name-res nil))
       (cond
-       ;; If argument is a symlink, `file-directory-p' and `file-exists-p'
-       ;; call the traversed file recursively. So we cannot disable the
-       ;; file-name-handler this case.
+       ;; If argument is a symlink, `file-directory-p' and
+       ;; `file-exists-p' call the traversed file recursively. So we
+       ;; cannot disable the file-name-handler this case.  We set the
+       ;; connection property "started" in order to put the remote
+       ;; location into the cache, which is helpful for further
+       ;; completion.
        ((memq operation '(file-directory-p file-exists-p))
-       (apply 'ange-ftp-hook-function operation args))
-       ;; Normally, the handlers must be discarded
-       (t (let* ((inhibit-file-name-handlers
-                  (list 'tramp-file-name-handler
-                        'tramp-completion-file-name-handler
-                        (and (eq inhibit-file-name-operation operation)
-                             inhibit-file-name-handlers)))
-                 (inhibit-file-name-operation operation))
-            (apply 'ange-ftp-hook-function operation args)))))))
+       (if (apply 'ange-ftp-hook-function operation args)
+           (with-parsed-tramp-file-name (car args) nil
+             (tramp-set-connection-property v "started" t))
+         nil))
+       ;; If the second argument of `copy-file' or `rename-file' is a
+       ;; remote file name but via FTP, ange-ftp doesn't check this.
+       ;; We must copy it locally first, because there is no place in
+       ;; ange-ftp for correct handling.
+       ((and (memq operation '(copy-file rename-file))
+            (file-remote-p (cadr args))
+            (not (tramp-ftp-file-name-p (cadr args))))
+       (let* ((filename (car args))
+              (newname (cadr args))
+              (tmpfile (tramp-compat-make-temp-file filename))
+              (args (cddr args)))
+         (apply operation filename tmpfile args)
+         (rename-file tmpfile newname (car args))))
+       ;; Normally, the handlers must be discarded.
+       (t (let* ((inhibit-file-name-handlers
+                 (list 'tramp-file-name-handler
+                       'tramp-completion-file-name-handler
+                       (and (eq inhibit-file-name-operation operation)
+                            inhibit-file-name-handlers)))
+                (inhibit-file-name-operation operation))
+           (apply 'ange-ftp-hook-function operation args)))))))
 
 (defun tramp-ftp-file-name-p (filename)
   "Check if it's a filename that should be forwarded to Ange-FTP."
   (let ((v (tramp-dissect-file-name filename)))
-    (string=
-     (tramp-find-method
-      (tramp-file-name-multi-method v)
-      (tramp-file-name-method v)
-      (tramp-file-name-user v)
-      (tramp-file-name-host v))
-     tramp-ftp-method)))
+    (string= (tramp-file-name-method v) tramp-ftp-method)))
 
 (add-to-list 'tramp-foreign-file-name-handler-alist
             (cons 'tramp-ftp-file-name-p 'tramp-ftp-file-name-handler))
@@ -172,8 +188,6 @@ pass to the OPERATION."
 ;;   pretended in `tramp-file-name-handler' otherwise.
 ;;   Furthermore, there are no backup files on FTP hosts.
 ;;   Worth further investigations.
-;; * Map /multi:ssh:out@gate:ftp:kai@real.host:/path/to.file
-;;   on Ange-FTP gateways.
 
 ;;; arch-tag: 759fb338-5c63-4b99-bd36-b4d59db91cff
 ;;; tramp-ftp.el ends here
diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el
new file mode 100644 (file)
index 0000000..70a37f3
--- /dev/null
@@ -0,0 +1,323 @@
+;;; tramp-gw.el --- Tramp utility functions for HTTP tunnels and SOCKS gateways
+
+;; Copyright (C) 2007 Free Software Foundation, Inc.
+
+;; Author: Michael Albinus <michael.albinus@gmx.de>
+;; Keywords: comm, processes
+
+;; 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, 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; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Access functions for HTTP tunnels and SOCKS gateways from Tramp.
+;; SOCKS functionality is implemented by socks.el from the w3 package.
+;; HTTP tunnels are partly implemented in socks.el and url-http.el;
+;; both implementations are not complete.  Therefore, it is
+;; implemented in this package.
+
+;;; Code:
+
+(require 'tramp)
+
+;; Pacify byte-compiler
+(eval-when-compile
+  (require 'cl)
+  (require 'custom))
+
+;; Autoload the socks library.  It is used only when we access a SOCKS server.
+(autoload 'socks-open-network-stream "socks")
+(defvar socks-username (user-login-name))
+(defvar socks-server (list "Default server" "socks" 1080 5))
+
+;; Avoid byte-compiler warnings if the byte-compiler supports this.
+;; Currently, XEmacs supports this.
+(eval-when-compile
+  (when (featurep 'xemacs)
+      (byte-compiler-options (warnings (- unused-vars)))))
+
+;; Define HTTP tunnel method ...
+(defvar tramp-gw-tunnel-method "tunnel"
+  "*Method to connect HTTP gateways.")
+
+;; ... and port.
+(defvar tramp-gw-default-tunnel-port 8080
+  "*Default port for HTTP gateways.")
+
+;; Define SOCKS method ...
+(defvar tramp-gw-socks-method "socks"
+  "*Method to connect SOCKS servers.")
+
+;; ... and port.
+(defvar tramp-gw-default-socks-port 1080
+  "*Default port for SOCKS servers.")
+
+;; Add a default for `tramp-default-user-alist'.  Default is the local user.
+(add-to-list 'tramp-default-user-alist
+            `(,tramp-gw-tunnel-method nil ,(user-login-name)))
+(add-to-list 'tramp-default-user-alist
+            `(,tramp-gw-socks-method nil ,(user-login-name)))
+
+;; Internal file name functions and variables.
+
+(defvar tramp-gw-vector nil
+  "Keeps the remote host identification.  Needed for Tramp messages.")
+
+(defvar tramp-gw-gw-vector nil
+  "Current gateway identification vector.")
+
+(defvar tramp-gw-gw-proc nil
+  "Current gateway process.")
+
+;; This variable keeps the listening process, in order to reuse it for
+;; new processes.
+(defvar tramp-gw-aux-proc nil
+  "Process listening on local port, as mediation between SSH and the gateway.")
+
+(defun tramp-gw-gw-proc-sentinel (proc event)
+  "Delete auxiliary process when we are deleted."
+  (unless (memq (process-status proc) '(run open))
+    (tramp-message
+     tramp-gw-vector 4 "Deleting auxiliary process `%s'" tramp-gw-gw-proc)
+    (let* (tramp-verbose
+          (p (tramp-get-connection-property proc "process" nil)))
+      (when (processp p) (delete-process p)))))
+
+(defun tramp-gw-aux-proc-sentinel (proc event)
+  "Activate the different filters for involved gateway and auxiliary processes."
+  (when (memq (process-status proc) '(run open))
+    ;; A new process has been spawned from `tramp-gw-aux-proc'.
+    (tramp-message
+     tramp-gw-vector 4
+     "Opening auxiliary process `%s', speaking with process `%s'"
+     proc tramp-gw-gw-proc)
+    (tramp-set-process-query-on-exit-flag proc nil)
+    ;; We don't want debug messages, because the corresponding debug
+    ;; buffer might be undecided.
+    (let (tramp-verbose)
+      (tramp-set-connection-property tramp-gw-gw-proc "process" proc)
+      (tramp-set-connection-property proc "process" tramp-gw-gw-proc))
+    ;; Set the process-filter functions for both processes.
+    (set-process-filter proc 'tramp-gw-process-filter)
+    (set-process-filter tramp-gw-gw-proc 'tramp-gw-process-filter)
+    ;; There might be already some output from the gateway process.
+    (with-current-buffer (process-buffer tramp-gw-gw-proc)
+      (unless (= (point-min) (point-max))
+       (let ((s (buffer-string)))
+         (delete-region (point) (point-max))
+         (tramp-gw-process-filter tramp-gw-gw-proc s))))))
+
+(defun tramp-gw-process-filter (proc string)
+  (let (tramp-verbose)
+    (process-send-string
+     (tramp-get-connection-property proc "process" nil) string)))
+
+(defun tramp-gw-open-connection (vec gw-vec target-vec)
+  "Open a remote connection to VEC (see `tramp-file-name' structure).
+Take GW-VEC as SOCKS or HTTP gateway, i.e. its method must be a
+gateway method.  TARGET-VEC identifies where to connect to via
+the gateway, it can be different from VEC when there are more
+hops to be applied.
+
+It returns a string like \"localhost#port\", which must be used
+instead of the host name declared in TARGET-VEC."
+
+  ;; Remember vectors for property retrieval.
+  (setq tramp-gw-vector vec
+       tramp-gw-gw-vector gw-vec)
+
+  ;; Start listening auxiliary process.
+  (unless (and (processp tramp-gw-aux-proc)
+              (memq (process-status tramp-gw-aux-proc) '(listen)))
+    (let ((aux-vec
+          (vector "aux" (tramp-file-name-user gw-vec)
+                  (tramp-file-name-host gw-vec) nil)))
+      (setq tramp-gw-aux-proc
+           (make-network-process
+            :name (tramp-buffer-name aux-vec) :buffer nil :host 'local
+            :server t :noquery t :service t :coding 'binary))
+      (set-process-sentinel tramp-gw-aux-proc 'tramp-gw-aux-proc-sentinel)
+      (tramp-set-process-query-on-exit-flag tramp-gw-aux-proc nil)
+      (tramp-message
+       vec 4 "Opening auxiliary process `%s', listening on port %d"
+       tramp-gw-aux-proc (process-contact tramp-gw-aux-proc :service))))
+
+  (let* ((gw-method
+         (intern
+          (tramp-find-method
+           (tramp-file-name-method gw-vec)
+           (tramp-file-name-user gw-vec)
+           (tramp-file-name-host gw-vec))))
+        (socks-username
+         (tramp-find-user
+          (tramp-file-name-method gw-vec)
+          (tramp-file-name-user gw-vec)
+          (tramp-file-name-host gw-vec)))
+        ;; Declare the SOCKS server to be used.
+        (socks-server
+         (list "Tramp tempory socks server list"
+               ;; Host name.
+               (tramp-file-name-real-host gw-vec)
+               ;; Port number.
+               (or (tramp-file-name-port gw-vec)
+                   (case gw-method
+                     (tunnel tramp-gw-default-tunnel-port)
+                     (socks tramp-gw-default-socks-port)))
+               ;; Type.  We support only http and socks5, NO socks4.
+               ;; 'http could be used when HTTP tunnel works in socks.el.
+               5))
+        ;; The function to be called.
+        (socks-function
+         (case gw-method
+           (tunnel 'tramp-gw-open-network-stream)
+           (socks 'socks-open-network-stream)))
+        socks-noproxy)
+
+    ;; Open SOCKS process.
+    (setq tramp-gw-gw-proc
+         (funcall
+          socks-function
+          (tramp-buffer-name gw-vec)
+          (tramp-get-buffer gw-vec)
+          (tramp-file-name-real-host target-vec)
+          (tramp-file-name-port target-vec)))
+    (set-process-sentinel tramp-gw-gw-proc 'tramp-gw-gw-proc-sentinel)
+    (tramp-set-process-query-on-exit-flag tramp-gw-gw-proc nil)
+    (tramp-message
+     vec 4 "Opened %s process `%s'"
+     (case gw-method ('tunnel "HTTP tunnel") ('socks "SOCKS"))
+     tramp-gw-gw-proc)
+
+    ;; Return the new host for gateway access.
+    (format "localhost#%d" (process-contact tramp-gw-aux-proc :service))))
+
+(defun tramp-gw-open-network-stream (name buffer host service)
+  "Open stream to proxy server HOST:SERVICE.
+Resulting process has name NAME and buffer BUFFER.  If
+authentication is requested from proxy server, provide it."
+  (let ((command (format (concat
+                         "CONNECT %s:%d HTTP/1.1\r\n"
+                         "Host: %s:%d\r\n"
+                         "Connection: keep-alive\r\n"
+                         "User-Agent: Tramp/%s\r\n")
+                        host service host service tramp-version))
+       (authentication "")
+       (first t)
+       found proc)
+
+    (while (not found)
+      ;; Clean up.
+      (when (processp proc) (delete-process proc))
+      (with-current-buffer buffer (erase-buffer))
+      ;; Open network stream.
+      (setq proc (open-network-stream
+                 name buffer (nth 1 socks-server) (nth 2 socks-server)))
+      (set-process-coding-system proc 'binary 'binary)
+      (tramp-set-process-query-on-exit-flag proc nil)
+      ;; Send CONNECT command.
+      (process-send-string proc (format "%s%s\r\n" command authentication))
+      (tramp-message
+       tramp-gw-vector 6 "\n%s"
+       (format
+       "%s%s\r\n" command
+       (replace-regexp-in-string ;; no password in trace!
+        "Basic [^\r\n]+" "Basic xxxxx" authentication t)))
+      (with-current-buffer buffer
+       ;; Trap errors to be traced in the right trace buffer.  Often,
+       ;; proxies have a timeout of 60".  We wait 65" in order to
+       ;; receive an answer this case.
+       (condition-case nil
+           (let (tramp-verbose)
+             (tramp-wait-for-regexp proc 65 "\r?\n\r?\n"))
+         (error nil))
+       ;; Check return code.
+       (goto-char (point-min))
+       (narrow-to-region
+        (point-min)
+        (or (search-forward-regexp "\r?\n\r?\n" nil t) (point-max)))
+       (tramp-message tramp-gw-vector 6 "\n%s" (buffer-string))
+       (goto-char (point-min))
+       (search-forward-regexp "^HTTP/[1-9]\\.[0-9]" nil t)
+       (case (condition-case nil (read (current-buffer)) (error))
+         ;; Connected.
+         (200 (setq found t))
+         ;; We need basic authentication.
+         (401 (setq authentication (tramp-gw-basic-authentication nil first)))
+         ;; Target host not found.
+         (404 (tramp-error-with-buffer
+               (current-buffer) tramp-gw-vector 'file-error
+               "Host %s not found." host))
+         ;; We need basic proxy authentication.
+         (407 (setq authentication (tramp-gw-basic-authentication t first)))
+         ;; Connection failed.
+         (503 (tramp-error-with-buffer
+               (current-buffer) tramp-gw-vector 'file-error
+               "Connection to %s:%d failed." host service))
+         ;; That doesn't work at all.
+         (t (tramp-error-with-buffer
+             (current-buffer) tramp-gw-vector 'file-error
+             "Access to HTTP server %s:%d failed."
+             (nth 1 socks-server) (nth 2 socks-server))))
+       ;; Remove HTTP headers.
+       (delete-region (point-min) (point-max))
+       (widen)
+       (setq first nil)))
+    ;; Return the process.
+    proc))
+
+(defun tramp-gw-basic-authentication (proxy pw-cache)
+  "Return authentication header for CONNECT, based on server request.
+PROXY is an indication whether we need a Proxy-Authorization header
+or an Authorization header.  If PW-CACHE is non-nil, check for
+password in password cache.  This is done for the first try only."
+
+  ;; `tramp-current-*' must be set for `tramp-read-passwd' and
+  ;; `tramp-clear-passwd'.
+  (let ((tramp-current-method (tramp-file-name-method tramp-gw-gw-vector))
+       (tramp-current-user (tramp-file-name-user tramp-gw-gw-vector))
+       (tramp-current-host (tramp-file-name-host tramp-gw-gw-vector)))
+    (unless pw-cache (tramp-clear-passwd))
+    ;; We are already in the right buffer.
+    (tramp-message
+     tramp-gw-vector 5 "%s required"
+     (if proxy "Proxy authentication" "Authentication"))
+    ;; Search for request header.  We accept only basic authentication.
+    (goto-char (point-min))
+    (search-forward-regexp
+     "^\\(Proxy\\|WWW\\)-Authenticate:\\s-*Basic\\s-+realm=")
+    ;; Return authentication string.
+    (format
+     "%s: Basic %s\r\n"
+     (if proxy "Proxy-Authorization" "Authorization")
+     (base64-encode-string
+      (format
+       "%s:%s"
+       socks-username
+       (tramp-read-passwd
+       nil
+       (format
+        "Password for %s@[%s]: " socks-username (read (current-buffer)))))))))
+
+
+(provide 'tramp-gw)
+
+;;; TODO:
+
+;; * Provide descriptive Commentary.
+;; * Enable it for several gateway processes in parallel.
+
+;; arch-tag: 277e3a81-fdee-40cf-9e6b-59626292a5e0
+;;; tramp-gw.el ends here
index a3cf5220cda8b042c889e509b3b6b92add979145..b4e68c77624e97f00713145c1ed506447ae3761f 100644 (file)
@@ -1,6 +1,7 @@
-;;; tramp-smb.el --- Tramp access functions for SMB servers -*- coding: iso-8859-1; -*-
+;;; tramp-smb.el --- Tramp access functions for SMB servers
 
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
+;;   2007 Free Software Foundation, Inc.
 
 ;; Author: Michael Albinus <michael.albinus@gmx.de>
 ;; Keywords: comm, processes
@@ -18,9 +19,8 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 ;;; Code:
 
 (require 'tramp)
-
-;; Pacify byte-compiler
-(eval-when-compile (require 'custom))
-
-;; Avoid byte-compiler warnings if the byte-compiler supports this.
-;; Currently, XEmacs supports this.
-(eval-when-compile
-  (when (fboundp 'byte-compiler-options)
-    (let (unused-vars) ; Pacify Emacs byte-compiler
-      (defalias 'warnings 'identity) ; Pacify Emacs byte-compiler
-      (byte-compiler-options (warnings (- unused-vars))))))
+(require 'tramp-cache)
+(require 'tramp-compat)
 
 ;; Define SMB method ...
 (defcustom tramp-smb-method "smb"
 ;; Add a default for `tramp-default-method-alist'. Rule: If there is
 ;; a domain in USER, it must be the SMB method.
 (add-to-list 'tramp-default-method-alist
-            (list "" "%" tramp-smb-method))
+            `(nil "%" ,tramp-smb-method))
+
+;; Add a default for `tramp-default-user-alist'. Rule: For the SMB method,
+;; the anonymous user is chosen.
+(add-to-list 'tramp-default-user-alist
+            `(,tramp-smb-method nil ""))
 
 ;; Add completion function for SMB method.
 (tramp-set-completion-function
   "Regexp used as prompt in smbclient.")
 
 (defconst tramp-smb-errors
+  ;; `regexp-opt' not possible because of first string.
   (mapconcat
    'identity
-   '(; Connection error
+   '(;; Connection error / timeout
      "Connection to \\S-+ failed"
-     ; Samba
+     "Read from server failed, maybe it closed the connection"
+     "Call timed out: server did not respond"
+     ;; Samba
      "ERRDOS"
      "ERRSRV"
      "ERRbadfile"
      "ERRnoaccess"
      "ERRnomem"
      "ERRnosuchshare"
-     ; Windows NT 4.0, Windows 5.0 (Windows 2000), Windows 5.1 (Windows XP)
+     ;; Windows 4.0 (Windows NT), Windows 5.0 (Windows 2000),
+     ;; Windows 5.1 (Windows XP), Windows 5.2 (Windows Server 2003)
      "NT_STATUS_ACCESS_DENIED"
      "NT_STATUS_ACCOUNT_LOCKED_OUT"
      "NT_STATUS_BAD_NETWORK_NAME"
      "NT_STATUS_CANNOT_DELETE"
+     "NT_STATUS_DIRECTORY_NOT_EMPTY"
+     "NT_STATUS_DUPLICATE_NAME"
+     "NT_STATUS_FILE_IS_A_DIRECTORY"
      "NT_STATUS_LOGON_FAILURE"
      "NT_STATUS_NETWORK_ACCESS_DENIED"
      "NT_STATUS_NO_SUCH_FILE"
+     "NT_STATUS_OBJECT_NAME_COLLISION"
      "NT_STATUS_OBJECT_NAME_INVALID"
      "NT_STATUS_OBJECT_NAME_NOT_FOUND"
      "NT_STATUS_SHARING_VIOLATION"
+     "NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE"
      "NT_STATUS_WRONG_PASSWORD")
    "\\|")
   "Regexp for possible error strings of SMB servers.
 Used instead of analyzing error codes of commands.")
 
-(defvar tramp-smb-share nil
-  "Holds the share name for the current buffer.
-This variable is local to each buffer.")
-(make-variable-buffer-local 'tramp-smb-share)
+(defconst tramp-smb-actions-with-share
+  '((tramp-smb-prompt tramp-action-succeed)
+    (tramp-password-prompt-regexp tramp-action-password)
+    (tramp-wrong-passwd-regexp tramp-action-permission-denied)
+    (tramp-smb-errors tramp-action-permission-denied)
+    (tramp-process-alive-regexp tramp-action-process-alive))
+  "List of pattern/action pairs.
+This list is used for login to SMB servers.
+
+See `tramp-actions-before-shell' for more info.")
 
-(defvar tramp-smb-share-cache nil
-  "Caches the share names accessible to host related to the current buffer.
-This variable is local to each buffer.")
-(make-variable-buffer-local 'tramp-smb-share-cache)
+(defconst tramp-smb-actions-without-share
+  '((tramp-password-prompt-regexp tramp-action-password)
+    (tramp-wrong-passwd-regexp tramp-action-permission-denied)
+    (tramp-smb-errors tramp-action-permission-denied)
+    (tramp-process-alive-regexp tramp-action-out-of-band))
+  "List of pattern/action pairs.
+This list is used for login to SMB servers.
 
-(defvar tramp-smb-inodes nil
-  "Keeps virtual inodes numbers for SMB files.")
+See `tramp-actions-before-shell' for more info.")
 
 ;; New handlers should be added here.
 (defconst tramp-smb-file-name-handler-alist
@@ -124,8 +137,8 @@ This variable is local to each buffer.")
     (directory-file-name . tramp-handle-directory-file-name)
     (directory-files . tramp-smb-handle-directory-files)
     (directory-files-and-attributes . tramp-smb-handle-directory-files-and-attributes)
-    (dired-call-process . tramp-smb-not-handled)
-    (dired-compress-file . tramp-smb-not-handled)
+    (dired-call-process . ignore)
+    (dired-compress-file . ignore)
     ;; `dired-uncache' performed by default handler
     ;; `expand-file-name' not necessary because we cannot expand "~/"
     (file-accessible-directory-p . tramp-smb-handle-file-directory-p)
@@ -143,10 +156,10 @@ This variable is local to each buffer.")
     (file-name-nondirectory . tramp-handle-file-name-nondirectory)
     ;; `file-name-sans-versions' performed by default handler
     (file-newer-than-file-p . tramp-smb-handle-file-newer-than-file-p)
-    (file-ownership-preserved-p . tramp-smb-not-handled)
+    (file-ownership-preserved-p . ignore)
     (file-readable-p . tramp-smb-handle-file-exists-p)
     (file-regular-p . tramp-handle-file-regular-p)
-    (file-symlink-p . tramp-smb-not-handled)
+    (file-symlink-p . tramp-handle-file-symlink-p)
     ;; `file-truename' performed by default handler
     (file-writable-p . tramp-smb-handle-file-writable-p)
     (find-backup-file-name . tramp-handle-find-backup-file-name)
@@ -157,15 +170,15 @@ This variable is local to each buffer.")
     (load . tramp-handle-load)
     (make-directory . tramp-smb-handle-make-directory)
     (make-directory-internal . tramp-smb-handle-make-directory-internal)
-    (make-symbolic-link . tramp-smb-not-handled)
+    (make-symbolic-link . ignore)
     (rename-file . tramp-smb-handle-rename-file)
-    (set-file-modes . tramp-smb-not-handled)
-    (set-visited-file-modtime . tramp-smb-not-handled)
-    (shell-command . tramp-smb-not-handled)
+    (set-file-modes . ignore)
+    (set-visited-file-modtime . ignore)
+    (shell-command . ignore)
     (substitute-in-file-name . tramp-smb-handle-substitute-in-file-name)
     (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
-    (vc-registered . tramp-smb-not-handled)
-    (verify-visited-file-modtime . tramp-smb-not-handled)
+    (vc-registered . ignore)
+    (verify-visited-file-modtime . ignore)
     (write-region . tramp-smb-handle-write-region)
 )
   "Alist of handler functions for Tramp SMB method.
@@ -174,13 +187,7 @@ Operations not mentioned here will be handled by the default Emacs primitives.")
 (defun tramp-smb-file-name-p (filename)
   "Check if it's a filename for SMB servers."
   (let ((v (tramp-dissect-file-name filename)))
-    (string=
-     (tramp-find-method
-      (tramp-file-name-multi-method v)
-      (tramp-file-name-method v)
-      (tramp-file-name-user v)
-      (tramp-file-name-host v))
-     tramp-smb-method)))
+    (string= (tramp-file-name-method v) tramp-smb-method)))
 
 (defun tramp-smb-file-name-handler (operation &rest args)
   "Invoke the SMB related OPERATION.
@@ -188,9 +195,7 @@ First arg specifies the OPERATION, second arg is a list of arguments to
 pass to the OPERATION."
   (let ((fn (assoc operation tramp-smb-file-name-handler-alist)))
     (if fn
-       (if (eq (cdr fn) 'tramp-smb-not-handled)
-           (apply (cdr fn) operation args)
-         (save-match-data (apply (cdr fn) args)))
+       (save-match-data (apply (cdr fn) args))
       (tramp-run-real-handler operation args))))
 
 (add-to-list 'tramp-foreign-file-name-handler-alist
@@ -199,14 +204,9 @@ pass to the OPERATION."
 
 ;; File name primitives
 
-(defun tramp-smb-not-handled (operation &rest args)
-  "Default handler for all functions which are disrecarded."
-  (tramp-message 10 "Won't be handled: %s %s" operation args)
-  nil)
-
 (defun tramp-smb-handle-copy-file
   (filename newname &optional ok-if-already-exists keep-date)
-  "Like `copy-file' for tramp files.
+  "Like `copy-file' for Tramp files.
 KEEP-DATE is not handled in case NEWNAME resides on an SMB server."
   (setq filename (expand-file-name filename)
        newname (expand-file-name newname))
@@ -214,199 +214,187 @@ KEEP-DATE is not handled in case NEWNAME resides on an SMB server."
   (let ((tmpfile (file-local-copy filename)))
 
     (if tmpfile
-       ;; remote filename
+       ;; Remote filename.
        (rename-file tmpfile newname ok-if-already-exists)
 
-      ;; remote newname
+      ;; Remote newname.
       (when (file-directory-p newname)
        (setq newname (expand-file-name
                       (file-name-nondirectory filename) newname)))
-      (when (and (not ok-if-already-exists)
-                (file-exists-p newname))
-       (error "copy-file: file %s already exists" newname))
 
       (with-parsed-tramp-file-name newname nil
-       (save-excursion
-         (let ((share (tramp-smb-get-share localname))
-               (file (tramp-smb-get-localname localname t)))
-           (unless share
-             (error "Target `%s' must contain a share name" filename))
-           (tramp-smb-maybe-open-connection user host share)
-           (tramp-message-for-buffer
-            nil tramp-smb-method user host
-            5 "Copying file %s to file %s..." filename newname)
-           (if (tramp-smb-send-command
-                user host (format "put %s \"%s\"" filename file))
-               (tramp-message-for-buffer
-                nil tramp-smb-method user host
-                5 "Copying file %s to file %s...done" filename newname)
-             (error "Cannot copy `%s'" filename))))))))
+       (when (and (not ok-if-already-exists)
+                  (file-exists-p newname))
+         (tramp-error v 'file-already-exists newname))
+
+       ;; We must also flush the cache of the directory, because
+       ;; file-attributes reads the values from there.
+       (tramp-flush-file-property v (file-name-directory localname))
+       (tramp-flush-file-property v localname)
+       (let ((share (tramp-smb-get-share localname))
+             (file (tramp-smb-get-localname localname t)))
+         (unless share
+           (tramp-error
+            v 'file-error "Target `%s' must contain a share name" newname))
+         (tramp-message v 0 "Copying file %s to file %s..." filename newname)
+         (if (tramp-smb-send-command
+              v (format "put %s \"%s\"" filename file))
+             (tramp-message
+              v 0 "Copying file %s to file %s...done" filename newname)
+           (tramp-error v 'file-error "Cannot copy `%s'" filename)))))))
 
 (defun tramp-smb-handle-delete-directory (directory)
-  "Like `delete-directory' for tramp files."
+  "Like `delete-directory' for Tramp files."
   (setq directory (directory-file-name (expand-file-name directory)))
   (when (file-exists-p directory)
     (with-parsed-tramp-file-name directory nil
-      (save-excursion
-       (let ((share (tramp-smb-get-share localname))
-             (dir (tramp-smb-get-localname (file-name-directory localname) t))
-             (file (file-name-nondirectory localname)))
-         (tramp-smb-maybe-open-connection user host share)
-         (if (and
-              (tramp-smb-send-command user host (format "cd \"%s\"" dir))
-              (tramp-smb-send-command user host (format "rmdir \"%s\"" file)))
-             ;; Go Home
-             (tramp-smb-send-command user host (format "cd \\"))
-           ;; Error
-           (tramp-smb-send-command user host (format "cd \\"))
-           (error "Cannot delete directory `%s'" directory)))))))
+      ;; We must also flush the cache of the directory, because
+      ;; file-attributes reads the values from there.
+      (tramp-flush-file-property v (file-name-directory localname))
+      (tramp-flush-directory-property v localname)
+      (let ((dir (tramp-smb-get-localname (file-name-directory localname) t))
+           (file (file-name-nondirectory localname)))
+       (unwind-protect
+           (unless (and
+                    (tramp-smb-send-command v (format "cd \"%s\"" dir))
+                    (tramp-smb-send-command v (format "rmdir \"%s\"" file)))
+             ;; Error
+             (with-current-buffer (tramp-get-connection-buffer v)
+               (goto-char (point-min))
+               (search-forward-regexp tramp-smb-errors nil t)
+               (tramp-error
+                v 'file-error "%s `%s'" (match-string 0) directory)))
+         ;; Always go home
+         (tramp-smb-send-command v (format "cd \\")))))))
 
 (defun tramp-smb-handle-delete-file (filename)
-  "Like `delete-file' for tramp files."
+  "Like `delete-file' for Tramp files."
   (setq filename (expand-file-name filename))
   (when (file-exists-p filename)
     (with-parsed-tramp-file-name filename nil
-      (save-excursion
-       (let ((share (tramp-smb-get-share localname))
-             (dir (tramp-smb-get-localname (file-name-directory localname) t))
-             (file (file-name-nondirectory localname)))
-         (tramp-smb-maybe-open-connection user host share)
-         (if (and
-              (tramp-smb-send-command user host (format "cd \"%s\"" dir))
-              (tramp-smb-send-command user host (format "rm \"%s\"" file)))
-             ;; Go Home
-             (tramp-smb-send-command user host (format "cd \\"))
-           ;; Error
-           (tramp-smb-send-command user host (format "cd \\"))
-           (error "Cannot delete file `%s'" filename)))))))
+      ;; We must also flush the cache of the directory, because
+      ;; file-attributes reads the values from there.
+      (tramp-flush-file-property v (file-name-directory localname))
+      (tramp-flush-file-property v localname)
+      (let ((dir (tramp-smb-get-localname (file-name-directory localname) t))
+           (file (file-name-nondirectory localname)))
+       (unwind-protect
+           (unless (and
+                    (tramp-smb-send-command v (format "cd \"%s\"" dir))
+                    (tramp-smb-send-command v (format "rm \"%s\"" file)))
+             ;; Error
+             (with-current-buffer (tramp-get-connection-buffer v)
+               (goto-char (point-min))
+               (search-forward-regexp tramp-smb-errors nil t)
+               (tramp-error
+                v 'file-error "%s `%s'" (match-string 0) filename)))
+         ;; Always go home
+         (tramp-smb-send-command v (format "cd \\")))))))
 
 (defun tramp-smb-handle-directory-files
   (directory &optional full match nosort)
-  "Like `directory-files' for tramp files."
-  (setq directory (directory-file-name (expand-file-name directory)))
-  (with-parsed-tramp-file-name directory nil
-    (save-excursion
-      (let* ((share (tramp-smb-get-share localname))
-            (file (tramp-smb-get-localname localname nil))
-            (entries (tramp-smb-get-file-entries user host share file)))
-       ;; Just the file names are needed
-       (setq entries (mapcar 'car entries))
-       ;; Discriminate with regexp
-       (when match
-         (setq entries
-               (delete nil
-                       (mapcar (lambda (x) (when (string-match match x) x))
-                               entries))))
-       ;; Make absolute localnames if necessary
-       (when full
-         (setq entries
-               (mapcar (lambda (x)
-                         (concat (file-name-as-directory directory) x))
-                       entries)))
-       ;; Sort them if necessary
-       (unless nosort (setq entries (sort entries 'string-lessp)))
-       ;; That's it
-       entries))))
+  "Like `directory-files' for Tramp files."
+  (let ((result (mapcar 'directory-file-name
+                       (file-name-all-completions "" directory))))
+    ;; Discriminate with regexp
+    (when match
+      (setq result
+           (delete nil
+                   (mapcar (lambda (x) (when (string-match match x) x))
+                           result))))
+    ;; Append directory
+    (when full
+      (setq result
+           (mapcar
+            (lambda (x) (expand-file-name x directory))
+            result)))
+    ;; Sort them if necessary
+    (unless nosort (setq result (sort result 'string-lessp)))
+    ;; That's it
+    result))
 
 (defun tramp-smb-handle-directory-files-and-attributes
   (directory &optional full match nosort id-format)
-  "Like `directory-files-and-attributes' for tramp files."
+  "Like `directory-files-and-attributes' for Tramp files."
   (mapcar
    (lambda (x)
      ;; We cannot call `file-attributes' for backward compatibility reasons.
      ;; Its optional parameter ID-FORMAT is introduced with Emacs 22.
      (cons x (tramp-smb-handle-file-attributes
-       (if full x (concat (file-name-as-directory directory) x)) id-format)))
+       (if full x (expand-file-name x directory)) id-format)))
    (directory-files directory full match nosort)))
 
 (defun tramp-smb-handle-file-attributes (filename &optional id-format)
-  "Like `file-attributes' for tramp files."
+  "Like `file-attributes' for Tramp files."
+  ;; Reading just the filename entry via "dir localname" is not
+  ;; possible, because when filename is a directory, some smbclient
+  ;; versions return the content of the directory, and other versions
+  ;; don't.  Therefore, the whole content of the upper directory is
+  ;; retrieved, and the entry of the filename is extracted from.
   (with-parsed-tramp-file-name filename nil
-    (save-excursion
-      (let* ((share (tramp-smb-get-share localname))
-            (file (tramp-smb-get-localname localname nil))
-            (entries (tramp-smb-get-file-entries user host share file))
+    (with-file-property v localname (format "file-attributes-%s" id-format)
+      (let* ((entries (tramp-smb-get-file-entries
+                      (file-name-directory filename)))
             (entry (and entries
-                        (assoc (file-name-nondirectory file) entries)))
+                        (assoc (file-name-nondirectory filename) entries)))
             (uid (if (and id-format (equal id-format 'string)) "nobody" -1))
             (gid (if (and id-format (equal id-format 'string)) "nogroup" -1))
-            (inode (tramp-smb-get-inode share file))
-            (device (tramp-get-device nil tramp-smb-method user host)))
+            (inode (tramp-get-inode v))
+            (device (tramp-get-device v)))
 
-       ; check result
+        ;; Check result.
        (when entry
          (list (and (string-match "d" (nth 1 entry))
-                    t)         ;0 file type
-               -1              ;1 link count
-               uid             ;2 uid
-               gid             ;3 gid
-               '(0 0)          ;4 atime
-               (nth 3 entry)   ;5 mtime
-               '(0 0)          ;6 ctime
-               (nth 2 entry)   ;7 size
-               (nth 1 entry)   ;8 mode
-               nil             ;9 gid weird
-               inode           ;10 inode number
-               device))))))    ;11 file system number
+                    t)       ;0 file type
+               -1            ;1 link count
+               uid           ;2 uid
+               gid           ;3 gid
+               '(0 0)        ;4 atime
+               (nth 3 entry) ;5 mtime
+               '(0 0)        ;6 ctime
+               (nth 2 entry) ;7 size
+               (nth 1 entry) ;8 mode
+               nil           ;9 gid weird
+               inode         ;10 inode number
+               device))))))  ;11 file system number
 
 (defun tramp-smb-handle-file-directory-p (filename)
-  "Like `file-directory-p' for tramp files."
-  (with-parsed-tramp-file-name filename nil
-    (save-excursion
-      (let* ((share (tramp-smb-get-share localname))
-            (file (tramp-smb-get-localname localname nil))
-            (entries (tramp-smb-get-file-entries user host share file))
-            (entry (and entries
-                        (assoc (file-name-nondirectory file) entries))))
-       (and entry
-            (string-match "d" (nth 1 entry))
-            t)))))
+  "Like `file-directory-p' for Tramp files."
+  (and (file-exists-p filename)
+       (eq ?d (aref (nth 8 (file-attributes filename)) 0))))
 
 (defun tramp-smb-handle-file-exists-p (filename)
-  "Like `file-exists-p' for tramp files."
-  (with-parsed-tramp-file-name filename nil
-    (save-excursion
-      (let* ((share (tramp-smb-get-share localname))
-            (file (tramp-smb-get-localname localname nil))
-            (entries (tramp-smb-get-file-entries user host share file)))
-       (and entries
-            (member (file-name-nondirectory file) (mapcar 'car entries))
-            t)))))
+  "Like `file-exists-p' for Tramp files."
+  (not (null (file-attributes filename))))
 
 (defun tramp-smb-handle-file-local-copy (filename)
-  "Like `file-local-copy' for tramp files."
+  "Like `file-local-copy' for Tramp files."
   (with-parsed-tramp-file-name filename nil
-    (save-excursion
-      (let ((share (tramp-smb-get-share localname))
-           (file (tramp-smb-get-localname localname t))
-           (tmpfil (tramp-make-temp-file filename)))
-       (unless (file-exists-p filename)
-         (error "Cannot make local copy of non-existing file `%s'" filename))
-       (tramp-message-for-buffer
-        nil tramp-smb-method user host
-        5 "Fetching %s to tmp file %s..." filename tmpfil)
-       (tramp-smb-maybe-open-connection user host share)
-       (if (tramp-smb-send-command
-            user host (format "get \"%s\" %s" file tmpfil))
-           (tramp-message-for-buffer
-            nil tramp-smb-method user host
-            5 "Fetching %s to tmp file %s...done" filename tmpfil)
-         (error "Cannot make local copy of file `%s'" filename))
-       tmpfil))))
+    (let ((file (tramp-smb-get-localname localname t))
+         (tmpfile (tramp-compat-make-temp-file filename)))
+      (unless (file-exists-p filename)
+       (tramp-error
+        v 'file-error
+        "Cannot make local copy of non-existing file `%s'" filename))
+      (tramp-message v 4 "Fetching %s to tmp file %s..." filename tmpfile)
+      (if (tramp-smb-send-command v (format "get \"%s\" %s" file tmpfile))
+         (tramp-message
+          v 4 "Fetching %s to tmp file %s...done" filename tmpfile)
+       (tramp-error
+        v 'file-error
+        "Cannot make local copy of file `%s'" filename))
+      tmpfile)))
 
 ;; This function should return "foo/" for directories and "bar" for
 ;; files.
 (defun tramp-smb-handle-file-name-all-completions (filename directory)
-  "Like `file-name-all-completions' for tramp files."
-  (with-parsed-tramp-file-name directory nil
-    (save-match-data
-      (save-excursion
-       (let* ((share (tramp-smb-get-share localname))
-              (file (tramp-smb-get-localname localname nil))
-              (entries (tramp-smb-get-file-entries user host share file)))
-
-         (all-completions
-          filename
+  "Like `file-name-all-completions' for Tramp files."
+  (all-completions
+   filename
+   (with-parsed-tramp-file-name directory nil
+     (with-file-property v localname "file-name-all-completions"
+       (save-match-data
+        (let ((entries (tramp-smb-get-file-entries directory)))
           (mapcar
            (lambda (x)
              (list
@@ -416,51 +404,59 @@ KEEP-DATE is not handled in case NEWNAME resides on an SMB server."
            entries)))))))
 
 (defun tramp-smb-handle-file-newer-than-file-p (file1 file2)
-  "Like `file-newer-than-file-p' for tramp files."
+  "Like `file-newer-than-file-p' for Tramp files."
   (cond
    ((not (file-exists-p file1)) nil)
    ((not (file-exists-p file2)) t)
-   (t (tramp-smb-time-less-p (file-attributes file2)
-                            (file-attributes file1)))))
+   (t (tramp-time-less-p (nth 5 (file-attributes file2))
+                        (nth 5 (file-attributes file1))))))
 
 (defun tramp-smb-handle-file-writable-p (filename)
-  "Like `file-writable-p' for tramp files."
-  (if (not (file-exists-p filename))
-      (let ((dir (file-name-directory filename)))
-       (and (file-exists-p dir)
-            (file-writable-p dir)))
-    (with-parsed-tramp-file-name filename nil
-      (save-excursion
-       (let* ((share (tramp-smb-get-share localname))
-              (file (tramp-smb-get-localname localname nil))
-              (entries (tramp-smb-get-file-entries user host share file))
-              (entry (and entries
-                          (assoc (file-name-nondirectory file) entries))))
-         (and share entry
-              (string-match "w" (nth 1 entry))
-              t))))))
+  "Like `file-writable-p' for Tramp files."
+  (if (file-exists-p filename)
+      (string-match "w" (or (nth 8 (file-attributes filename)) ""))
+    (let ((dir (file-name-directory filename)))
+      (and (file-exists-p dir)
+          (file-writable-p dir)))))
 
 (defun tramp-smb-handle-insert-directory
   (filename switches &optional wildcard full-directory-p)
-  "Like `insert-directory' for tramp files.
-WILDCARD and FULL-DIRECTORY-P are not handled."
+  "Like `insert-directory' for Tramp files."
   (setq filename (expand-file-name filename))
-  (when (file-directory-p filename)
-    ;; This check is a little bit strange, but in `dired-add-entry'
-    ;; this function is called with a non-directory ...
+  (when full-directory-p
+    ;; Called from `dired-add-entry'.
     (setq filename (file-name-as-directory filename)))
   (with-parsed-tramp-file-name filename nil
+    (tramp-flush-file-property v (file-name-directory localname))
     (save-match-data
-      (let* ((share (tramp-smb-get-share localname))
-            (file (tramp-smb-get-localname localname nil))
-            (entries (tramp-smb-get-file-entries user host share file)))
-
-       ;; Delete dummy "" entry, useless entries
+      (let ((base (file-name-nondirectory filename))
+           ;; We should not destroy the cache entry.
+           (entries (copy-sequence
+                     (tramp-smb-get-file-entries
+                      (file-name-directory filename)))))
+
+       (when wildcard
+         (string-match "\\." base)
+         (setq base (replace-match "\\\\." nil nil base))
+         (string-match "\\*" base)
+         (setq base (replace-match ".*" nil nil base))
+         (string-match "\\?" base)
+         (setq base (replace-match ".?" nil nil base)))
+
+       ;; Filter entries.
        (setq entries
-             (if (file-directory-p filename)
-                 (delq (assoc "" entries) entries)
-               ;; We just need the only and only entry FILENAME.
-               (list (assoc (file-name-nondirectory filename) entries))))
+             (delq
+              nil
+              (if (or wildcard (zerop (length base)))
+                  ;; Check for matching entries.
+                  (mapcar
+                   (lambda (x)
+                     (when (string-match
+                            (format "^%s" base) (nth 0 x))
+                       x))
+                   entries)
+                ;; We just need the only and only entry FILENAME.
+                (list (assoc base entries)))))
 
        ;; Sort entries
        (setq entries
@@ -468,37 +464,38 @@ WILDCARD and FULL-DIRECTORY-P are not handled."
               entries
               (lambda (x y)
                 (if (string-match "t" switches)
-                    ; sort by date
-                    (tramp-smb-time-less-p (nth 3 y) (nth 3 x))
-                  ; sort by name
+                    ;; Sort by date.
+                    (tramp-time-less-p (nth 3 y) (nth 3 x))
+                  ;; Sort by name.
                   (string-lessp (nth 0 x) (nth 0 y))))))
 
-       ;; Print entries
+       ;; Print entries.
        (mapcar
         (lambda (x)
-          (insert
-           (format
-            "%10s %3d %-8s %-8s %8s %s %s\n"
-            (nth 1 x) ; mode
-            1 "nobody" "nogroup"
-            (nth 2 x) ; size
-            (format-time-string
-             (if (tramp-smb-time-less-p
-                  (tramp-smb-time-subtract (current-time) (nth 3 x))
-                  tramp-smb-half-a-year)
-                 "%b %e %R"
-               "%b %e  %Y")
-             (nth 3 x)) ; date
-            (nth 0 x))) ; file name
-          (forward-line)
-          (beginning-of-line))
-        entries)))))
+          (when (not (zerop (length (nth 0 x))))
+            (insert
+             (format
+              "%10s %3d %-8s %-8s %8s %s %s\n"
+              (nth 1 x) ; mode
+              1 "nobody" "nogroup"
+              (nth 2 x) ; size
+              (format-time-string
+               (if (tramp-time-less-p
+                    (tramp-time-subtract (current-time) (nth 3 x))
+                    tramp-half-a-year)
+                   "%b %e %R"
+                 "%b %e  %Y")
+               (nth 3 x)) ; date
+              (nth 0 x))) ; file name
+            (forward-line)
+            (beginning-of-line)))
+          entries)))))
 
 (defun tramp-smb-handle-make-directory (dir &optional parents)
-  "Like `make-directory' for tramp files."
+  "Like `make-directory' for Tramp files."
   (setq dir (directory-file-name (expand-file-name dir)))
   (unless (file-name-absolute-p dir)
-    (setq dir (concat default-directory dir)))
+    (setq dir (expand-file-name dir default-directory)))
   (with-parsed-tramp-file-name dir nil
     (save-match-data
       (let* ((share (tramp-smb-get-share localname))
@@ -510,26 +507,28 @@ WILDCARD and FULL-DIRECTORY-P are not handled."
        (when (file-directory-p ldir)
          (make-directory-internal dir))
        (unless (file-directory-p dir)
-         (error "Couldn't make directory %s" dir))))))
+         (tramp-error v 'file-error "Couldn't make directory %s" dir))))))
 
 (defun tramp-smb-handle-make-directory-internal (directory)
-  "Like `make-directory-internal' for tramp files."
+  "Like `make-directory-internal' for Tramp files."
   (setq directory (directory-file-name (expand-file-name directory)))
   (unless (file-name-absolute-p directory)
-    (setq directory (concat default-directory directory)))
+    (setq directory (expand-file-name directory default-directory)))
   (with-parsed-tramp-file-name directory nil
     (save-match-data
-      (let* ((share (tramp-smb-get-share localname))
-            (file (tramp-smb-get-localname localname nil)))
+      (let* ((file (tramp-smb-get-localname localname t)))
        (when (file-directory-p (file-name-directory directory))
-         (tramp-smb-maybe-open-connection user host share)
-         (tramp-smb-send-command user host (format "mkdir \"%s\"" file)))
+         (tramp-smb-send-command v (format "mkdir \"%s\"" file))
+         ;; We must also flush the cache of the directory, because
+         ;; file-attributes reads the values from there.
+         (tramp-flush-file-property v (file-name-directory localname)))
        (unless (file-directory-p directory)
-         (error "Couldn't make directory %s" directory))))))
+         (tramp-error
+          v 'file-error "Couldn't make directory %s" directory))))))
 
 (defun tramp-smb-handle-rename-file
   (filename newname &optional ok-if-already-exists)
-  "Like `rename-file' for tramp files."
+  "Like `rename-file' for Tramp files."
   (setq filename (expand-file-name filename)
        newname (expand-file-name newname))
 
@@ -543,29 +542,26 @@ WILDCARD and FULL-DIRECTORY-P are not handled."
       (when (file-directory-p newname)
        (setq newname (expand-file-name
                      (file-name-nondirectory filename) newname)))
-      (when (and (not ok-if-already-exists)
-                (file-exists-p newname))
-         (error "rename-file: file %s already exists" newname))
 
       (with-parsed-tramp-file-name newname nil
-       (save-excursion
-         (let ((share (tramp-smb-get-share localname))
-               (file (tramp-smb-get-localname localname t)))
-           (tramp-smb-maybe-open-connection user host share)
-           (tramp-message-for-buffer
-            nil tramp-smb-method user host
-            5 "Copying file %s to file %s..." filename newname)
-           (if (tramp-smb-send-command
-                user host (format "put %s \"%s\"" filename file))
-               (tramp-message-for-buffer
-                nil tramp-smb-method user host
-                5 "Copying file %s to file %s...done" filename newname)
-             (error "Cannot rename `%s'" filename)))))))
+       (when (and (not ok-if-already-exists)
+                  (file-exists-p newname))
+         (tramp-error v 'file-already-exists newname))
+       ;; We must also flush the cache of the directory, because
+       ;; file-attributes reads the values from there.
+       (tramp-flush-file-property v (file-name-directory localname))
+       (tramp-flush-file-property v localname)
+       (let ((file (tramp-smb-get-localname localname t)))
+         (tramp-message v 0 "Copying file %s to file %s..." filename newname)
+         (if (tramp-smb-send-command v (format "put %s \"%s\"" filename file))
+             (tramp-message
+              v 0 "Copying file %s to file %s...done" filename newname)
+           (tramp-error v 'file-error "Cannot rename `%s'" filename))))))
 
   (delete-file filename))
 
 (defun tramp-smb-handle-substitute-in-file-name (filename)
-  "Like `handle-substitute-in-file-name' for tramp files.
+  "Like `handle-substitute-in-file-name' for Tramp files.
 Catches errors for shares like \"C$/\", which are common in Microsoft Windows."
   (condition-case nil
       (tramp-run-real-handler 'substitute-in-file-name (list filename))
@@ -573,50 +569,47 @@ Catches errors for shares like \"C$/\", which are common in Microsoft Windows."
 
 (defun tramp-smb-handle-write-region
   (start end filename &optional append visit lockname confirm)
-  "Like `write-region' for tramp files."
-  (unless (eq append nil)
-    (error "Cannot append to file using tramp (`%s')" filename))
+  "Like `write-region' for Tramp files."
   (setq filename (expand-file-name filename))
-  ;; XEmacs takes a coding system as the seventh argument, not `confirm'
-  (when (and (not (featurep 'xemacs))
-            confirm (file-exists-p filename))
-    (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
-                              filename))
-      (error "File not overwritten")))
   (with-parsed-tramp-file-name filename nil
-    (save-excursion
-      (let ((share (tramp-smb-get-share localname))
-           (file (tramp-smb-get-localname localname t))
-           (curbuf (current-buffer))
-           tmpfil)
-       ;; Write region into a tmp file.
-       (setq tmpfil (tramp-make-temp-file filename))
-       ;; We say `no-message' here because we don't want the visited file
-       ;; modtime data to be clobbered from the temp file.  We call
-       ;; `set-visited-file-modtime' ourselves later on.
-       (tramp-run-real-handler
-        'write-region
-        (if confirm ; don't pass this arg unless defined for backward compat.
-            (list start end tmpfil append 'no-message lockname confirm)
-          (list start end tmpfil append 'no-message lockname)))
-
-       (tramp-smb-maybe-open-connection user host share)
-       (tramp-message-for-buffer
-        nil tramp-smb-method user host
-        5 "Writing tmp file %s to file %s..." tmpfil filename)
-       (if (tramp-smb-send-command
-            user host (format "put %s \"%s\"" tmpfil file))
-           (tramp-message-for-buffer
-            nil tramp-smb-method user host
-            5 "Writing tmp file %s to file %s...done" tmpfil filename)
-         (error "Cannot write `%s'" filename))
-
-       (delete-file tmpfil)
-       (unless (equal curbuf (current-buffer))
-         (error "Buffer has changed from `%s' to `%s'"
-                curbuf (current-buffer)))
-       (when (eq visit t)
-         (set-visited-file-modtime))))))
+    (unless (eq append nil)
+      (tramp-error
+        v 'file-error "Cannot append to file using tramp (`%s')" filename))
+    ;; XEmacs takes a coding system as the seventh argument, not `confirm'.
+    (when (and (not (featurep 'xemacs))
+              confirm (file-exists-p filename))
+      (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
+                               filename))
+       (tramp-error v 'file-error "File not overwritten")))
+    ;; We must also flush the cache of the directory, because
+    ;; file-attributes reads the values from there.
+    (tramp-flush-file-property v (file-name-directory localname))
+    (tramp-flush-file-property v localname)
+    (let ((file (tramp-smb-get-localname localname t))
+         (curbuf (current-buffer))
+         (tmpfile (tramp-compat-make-temp-file filename)))
+      ;; We say `no-message' here because we don't want the visited file
+      ;; modtime data to be clobbered from the temp file.  We call
+      ;; `set-visited-file-modtime' ourselves later on.
+      (tramp-run-real-handler
+       'write-region
+       (if confirm ; don't pass this arg unless defined for backward compat.
+          (list start end tmpfile append 'no-message lockname confirm)
+        (list start end tmpfile append 'no-message lockname)))
+
+      (tramp-message v 5 "Writing tmp file %s to file %s..." tmpfile filename)
+      (if (tramp-smb-send-command v (format "put %s \"%s\"" tmpfile file))
+         (tramp-message
+          v 5 "Writing tmp file %s to file %s...done" tmpfile filename)
+       (tramp-error v 'file-error "Cannot write `%s'" filename))
+
+      (delete-file tmpfile)
+      (unless (equal curbuf (current-buffer))
+       (tramp-error
+        v 'file-error
+        "Buffer has changed from `%s' to `%s'" curbuf (current-buffer)))
+      (when (eq visit t)
+       (set-visited-file-modtime)))))
 
 
 ;; Internal file name functions
@@ -652,51 +645,53 @@ If CONVERT is non-nil exchange \"/\" by \"\\\\\"."
 
 ;; Share names of a host are cached. It is very unlikely that the
 ;; shares do change during connection.
-(defun tramp-smb-get-file-entries (user host share localname)
-  "Read entries which match LOCALNAME.
+(defun tramp-smb-get-file-entries (directory)
+  "Read entries which match DIRECTORY.
 Either the shares are listed, or the `dir' command is executed.
-Only entries matching the localname are returned.
 Result is a list of (LOCALNAME MODE SIZE MONTH DAY TIME YEAR)."
-  (save-excursion
-    (save-match-data
-      (let ((base (or (and (> (length localname) 0)
-                          (string-match "\\([^/]+\\)$" localname)
-                          (regexp-quote (match-string 1 localname)))
-                     ""))
-           res entry)
-       (set-buffer (tramp-get-buffer nil tramp-smb-method user host))
-       (if (and (not share) tramp-smb-share-cache)
-           ;; Return cached shares
-           (setq res tramp-smb-share-cache)
-         ;; Read entries
-         (tramp-smb-maybe-open-connection user host share)
-         (when share
-           (tramp-smb-send-command
-            user host
-            (format "dir %s"
-                    (if (zerop (length localname)) "" (concat "\"" localname "*\"")))))
-         (goto-char (point-min))
-         ;; Loop the listing
-         (unless (re-search-forward tramp-smb-errors nil t)
-           (while (not (eobp))
-             (setq entry (tramp-smb-read-file-entry share))
-             (forward-line)
-             (when entry (add-to-list 'res entry))))
-         (unless share
+  (with-parsed-tramp-file-name directory nil
+    (setq localname (or localname "/"))
+    (with-file-property v localname "file-entries"
+      (with-current-buffer (tramp-get-buffer v)
+       (let* ((share (tramp-smb-get-share localname))
+              (file (tramp-smb-get-localname localname nil))
+              (cache (tramp-get-connection-property v "share-cache" nil))
+              res entry)
+
+         (if (and (not share) cache)
+             ;; Return cached shares
+             (setq res cache)
+
+           ;; Read entries
+           (setq file (file-name-as-directory file))
+           (when (string-match "^\\./" file)
+             (setq file (substring file 1)))
+           (if share
+               (tramp-smb-send-command v (format "dir \"%s*\"" file))
+             ;; `tramp-smb-maybe-open-connection' lists also the share names
+             (tramp-smb-maybe-open-connection v))
+
+           ;; Loop the listing
+           (goto-char (point-min))
+           (unless (re-search-forward tramp-smb-errors nil t)
+             (while (not (eobp))
+               (setq entry (tramp-smb-read-file-entry share))
+               (forward-line)
+               (when entry (add-to-list 'res entry))))
+
            ;; Cache share entries
-           (setq tramp-smb-share-cache res)))
+           (unless share
+             (tramp-set-connection-property v "share-cache" res)))
 
-       ;; Add directory itself
-       (add-to-list 'res '("" "drwxrwxrwx" 0 (0 0)))
+         ;; Add directory itself
+         (add-to-list 'res '("" "drwxrwxrwx" 0 (0 0)))
 
-       ;; There's a very strange error (debugged with XEmacs 21.4.14)
-       ;; If there's no short delay, it returns nil.  No idea about
-       (when (featurep 'xemacs) (sleep-for 0.01))
+         ;; There's a very strange error (debugged with XEmacs 21.4.14)
+         ;; If there's no short delay, it returns nil.  No idea about.
+         (when (featurep 'xemacs) (sleep-for 0.01))
 
-       ;; Check for matching entries
-       (delq nil (mapcar
-                  (lambda (x) (and (string-match base (nth 0 x)) x))
-                  res))))))
+         ;; Return entries
+         (delq nil res))))))
 
 ;; Return either a share name (if SHARE is nil), or a file name
 ;;
@@ -721,7 +716,7 @@ Result is a list of (LOCALNAME MODE SIZE MONTH DAY TIME YEAR)."
 ;; \s-                                    - space delimeter
 ;; \w\{3,3\}                              - month
 ;; \s-                                    - space delimeter
-;; [ 19][0-9]                             - day
+;; [ 12][0-9]                             - day
 ;; \s-                                    - space delimeter
 ;; [0-9]\{2,2\}:[0-9]\{2,2\}:[0-9]\{2,2\} - time
 ;; \s-                                    - space delimeter
@@ -756,18 +751,20 @@ Result is a list of (LOCALNAME MODE SIZE MONTH DAY TIME YEAR)."
   "Parse entry in SMB output buffer.
 If SHARE is result, entries are of type dir. Otherwise, shares are listed.
 Result is the list (LOCALNAME MODE SIZE MTIME)."
-  (let ((line (buffer-substring (point) (tramp-point-at-eol)))
+;; We are called from `tramp-smb-get-file-entries', which sets the
+;; current buffer.
+  (let ((line (buffer-substring (point) (tramp-compat-line-end-position)))
        localname mode size month day hour min sec year mtime)
 
     (if (not share)
 
-       ; Read share entries
-       (when (string-match "^\\s-+\\(\\S-+\\)\\s-+Disk" line)
+       ;; Read share entries.
+       (when (string-match "^\\s-+\\(\\S-\\(.*\\S-\\)?\\)\\s-+Disk" line)
          (setq localname (match-string 1 line)
                mode "dr-xr-xr-x"
                size 0))
 
-      ; Real listing
+      ;; Real listing.
       (block nil
 
        ;; year
@@ -833,219 +830,187 @@ Result is the list (LOCALNAME MODE SIZE MTIME)."
            (if (and sec min hour day month year)
                (encode-time
                 sec min hour day
-                (cdr (assoc (downcase month) tramp-smb-parse-time-months))
+                (cdr (assoc (downcase month) tramp-parse-time-months))
                 year)
              '(0 0)))
       (list localname mode size mtime))))
 
-;; Inodes don't exist for SMB files.  Therefore we must generate virtual ones.
-;; Used in `find-buffer-visiting'.
-;; The method applied might be not so efficient (Ange-FTP uses hashes). But
-;; performance isn't the major issue given that file transfer will take time.
-
-(defun tramp-smb-get-inode (share file)
-  "Returns the virtual inode number.
-If it doesn't exist, generate a new one."
-  (let ((string (concat share "/" (directory-file-name file))))
-    (unless (assoc string tramp-smb-inodes)
-      (add-to-list 'tramp-smb-inodes
-                  (list string (length tramp-smb-inodes))))
-    (nth 1 (assoc string tramp-smb-inodes))))
-
 
 ;; Connection functions
 
-(defun tramp-smb-send-command (user host command)
-  "Send the COMMAND to USER at HOST (logged into an SMB session).
-Erases temporary buffer before sending the command.  Returns nil if
-there has been an error message from smbclient."
-  (save-excursion
-    (set-buffer (tramp-get-buffer nil tramp-smb-method user host))
-    (erase-buffer)
-    (tramp-send-command nil tramp-smb-method user host command nil t)
-    (tramp-smb-wait-for-output user host)))
-
-(defun tramp-smb-maybe-open-connection (user host share)
-  "Maybe open a connection to HOST, logging in as USER, using `tramp-smb-program'.
+(defun tramp-smb-send-command (vec command)
+  "Send the COMMAND to connection VEC.
+Returns nil if there has been an error message from smbclient."
+  (tramp-smb-maybe-open-connection vec)
+  (tramp-message vec 6 "%s" command)
+  (tramp-send-string vec command)
+  (tramp-smb-wait-for-output vec))
+
+(defun tramp-smb-maybe-open-connection (vec)
+  "Maybe open a connection to HOST, log in as USER, using `tramp-smb-program'.
 Does not do anything if a connection is already open, but re-opens the
 connection if a previous connection has died for some reason."
-  (let ((process-connection-type tramp-process-connection-type)
-       (p (get-buffer-process
-           (tramp-get-buffer nil tramp-smb-method user host))))
-    (save-excursion
-      (set-buffer (tramp-get-buffer nil tramp-smb-method user host))
-      ;; Check whether it is still the same share
-      (unless (and p (processp p) (string-equal tramp-smb-share share))
-       (when (and p (processp p))
-         (delete-process p)
-         (setq p nil)))
-      ;; If too much time has passed since last command was sent, look
-      ;; whether process is still alive.  If it isn't, kill it.
-      (when (and tramp-last-cmd-time
-                (> (tramp-time-diff (current-time) tramp-last-cmd-time) 60)
-                p (processp p) (memq (process-status p) '(run open)))
-       (unless (and p (processp p) (memq (process-status p) '(run open)))
-         (delete-process p)
-         (setq p nil))))
-    (unless (and p (processp p) (memq (process-status p) '(run open)))
-      (when (and p (processp p))
-        (delete-process p))
-      (tramp-smb-open-connection user host share))))
-
-(defun tramp-smb-open-connection (user host share)
-  "Open a connection using `tramp-smb-program'.
-This starts the command `smbclient //HOST/SHARE -U USER', then waits
-for a remote password prompt.  It queries the user for the password,
-then sends the password to the remote host.
-
-Domain names in USER and port numbers in HOST are acknowledged."
-
-  (when (and (fboundp 'executable-find)
-            (not (funcall 'executable-find tramp-smb-program)))
-    (error "Cannot find command %s in %s" tramp-smb-program exec-path))
+  (let* ((share (tramp-smb-get-share (tramp-file-name-localname vec)))
+        (buf (tramp-get-buffer vec))
+        (p (get-buffer-process buf)))
 
-  (save-match-data
-    (let* ((buffer (tramp-get-buffer nil tramp-smb-method user host))
-          (real-user user)
-          (real-host host)
-          domain port args)
-
-      ; Check for domain ("user%domain") and port ("host#port")
-      (when (and user (string-match "\\(.+\\)%\\(.+\\)" user))
-       (setq real-user (or (match-string 1 user) user)
-             domain (match-string 2 user)))
-
-      (when (and host (string-match "\\(.+\\)#\\(.+\\)" host))
-       (setq real-host (or (match-string 1 host) host)
-             port (match-string 2 host)))
-
-      (if share
-         (setq args (list (concat "//" real-host "/" share)))
-       (setq args (list "-L" real-host )))
-
-      (if real-user
-         (setq args (append args (list "-U" real-user)))
-       (setq args (append args (list "-N"))))
-
-      (when domain (setq args (append args (list "-W" domain))))
-      (when port   (setq args (append args (list "-p" port))))
-
-      ; OK, let's go
-      (tramp-pre-connection nil tramp-smb-method user host tramp-chunksize)
-      (tramp-message 7 "Opening connection for //%s@%s/%s..."
-                    user host (or share ""))
-
-      (let* ((default-directory (tramp-temporary-file-directory))
-            ;; If we omit the conditional here, then we would use
-            ;; `undecided-dos' in some cases.  With the conditional,
-            ;; we use nil in these cases.  Which one is right?
-            (coding-system-for-read (unless (and (not (featurep 'xemacs))
-                                                 (> emacs-major-version 20))
-                                      tramp-dos-coding-system))
-            (p (apply #'start-process (buffer-name buffer) buffer
-                      tramp-smb-program args)))
-
-       (tramp-message 9 "Started process %s" (process-command p))
-       (tramp-set-process-query-on-exit-flag p nil)
-       (set-buffer buffer)
-       (setq tramp-smb-share share)
-
-        ; send password
-       (when real-user
-         (let ((pw-prompt "Password:"))
-           (tramp-message 9 "Sending password")
-           (tramp-enter-password p pw-prompt user host)))
-
-       (unless (tramp-smb-wait-for-output user host)
-         (tramp-clear-passwd user host)
-         (error "Cannot open connection //%s@%s/%s"
-                user host (or share "")))))))
+    ;; If too much time has passed since last command was sent, look
+    ;; whether has been an error message; maybe due to connection timeout.
+    (with-current-buffer buf
+      (goto-char (point-min))
+      (when (and (> (tramp-time-diff
+                    (current-time)
+                    (tramp-get-connection-property
+                     p "last-cmd-time" '(0 0 0)))
+                   60)
+                p (processp p) (memq (process-status p) '(run open))
+                (re-search-forward tramp-smb-errors nil t))
+       (delete-process p)
+       (setq p nil)))
+
+    ;; Check whether it is still the same share.
+    (unless
+       (and p (processp p) (memq (process-status p) '(run open))
+            (string-equal
+             share
+             (tramp-get-connection-property p "smb-share" "")))
+
+      (save-match-data
+       ;; There might be unread output from checking for share names.
+       (when buf (with-current-buffer buf (erase-buffer)))
+       (when (and p (processp p)) (delete-process p))
+
+       (unless (let ((default-directory
+                       (tramp-compat-temporary-file-directory)))
+                 (executable-find tramp-smb-program))
+         (error "Cannot find command %s in %s" tramp-smb-program exec-path))
+
+       (let* ((user (tramp-file-name-user vec))
+              (host (tramp-file-name-host vec))
+              (real-user user)
+              (real-host host)
+              domain port args)
+
+         ;; Check for domain ("user%domain") and port ("host#port").
+         (when (and user (string-match "\\(.+\\)%\\(.+\\)" user))
+           (setq real-user (or (match-string 1 user) user)
+                 domain (match-string 2 user)))
+
+         (when (and host (string-match "\\(.+\\)#\\(.+\\)" host))
+           (setq real-host (or (match-string 1 host) host)
+                 port (match-string 2 host)))
+
+         (if share
+             (setq args (list (concat "//" real-host "/" share)))
+           (setq args (list "-L" real-host )))
+
+         (if (not (zerop (length real-user)))
+             (setq args (append args (list "-U" real-user)))
+           (setq args (append args (list "-N"))))
+
+         (when domain (setq args (append args (list "-W" domain))))
+         (when port   (setq args (append args (list "-p" port))))
+         (setq args (append args (list "-s" "/dev/null")))
+
+         ;; OK, let's go.
+         (tramp-message
+          vec 3 "Opening connection for //%s%s/%s..."
+          (if (not (zerop (length user))) (concat user "@") "")
+          host (or share ""))
+
+         (let* ((coding-system-for-read nil)
+                (process-connection-type tramp-process-connection-type)
+                (p (let ((default-directory
+                           (tramp-compat-temporary-file-directory)))
+                     (apply #'start-process
+                            (tramp-buffer-name vec) (tramp-get-buffer vec)
+                            tramp-smb-program args))))
+
+           (tramp-message
+            vec 6 "%s" (mapconcat 'identity (process-command p) " "))
+           (set-process-sentinel p 'tramp-flush-connection-property)
+           (tramp-set-process-query-on-exit-flag p nil)
+           (tramp-set-connection-property p "smb-share" share)
+
+           ;; Set variables for computing the prompt for reading password.
+           (setq tramp-current-method tramp-smb-method
+                 tramp-current-user user
+                 tramp-current-host host)
+
+           ;; Set chunksize.  Otherwise, `tramp-send-string' might
+           ;; try it itself.
+           (tramp-set-connection-property p "chunksize" tramp-chunksize)
+
+           ;; Play login scenario.
+           (tramp-process-actions
+            p vec
+            (if share
+                tramp-smb-actions-with-share
+              tramp-smb-actions-without-share))
+
+           (tramp-message
+            vec 3 "Opening connection for //%s%s/%s...done"
+            (if (not (zerop (length user))) (concat user "@") "")
+            host (or share ""))))))))
 
 ;; We don't use timeouts.  If needed, the caller shall wrap around.
-(defun tramp-smb-wait-for-output (user host)
+(defun tramp-smb-wait-for-output (vec)
   "Wait for output from smbclient command.
 Returns nil if an error message has appeared."
-  (let ((proc (get-buffer-process (current-buffer)))
-       (found (progn (goto-char (point-min))
-                     (re-search-forward tramp-smb-prompt nil t)))
-       (err   (progn (goto-char (point-min))
-                     (re-search-forward tramp-smb-errors nil t))))
-
-    ;; Algorithm: get waiting output.  See if last line contains
-    ;; tramp-smb-prompt sentinel or tramp-smb-errors strings.
-    ;; If not, wait a bit and again get waiting output.
-    (while (not found)
-
-      ;; Accept pending output.
-      (tramp-accept-process-output proc)
-
-      ;; Search for prompt.
-      (goto-char (point-min))
-      (setq found (re-search-forward tramp-smb-prompt nil t))
-
-      ;; Search for errors.
-      (goto-char (point-min))
-      (setq err (re-search-forward tramp-smb-errors nil t)))
+  (with-current-buffer (tramp-get-buffer vec)
+    (let ((p (get-buffer-process (current-buffer)))
+         (found (progn (goto-char (point-min))
+                       (re-search-forward tramp-smb-prompt nil t)))
+         (err   (progn (goto-char (point-min))
+                       (re-search-forward tramp-smb-errors nil t))))
 
-    ;; Add output to debug buffer if appropriate.
-    (when tramp-debug-buffer
-      (append-to-buffer
-       (tramp-get-debug-buffer nil tramp-smb-method user host)
-       (point-min) (point-max)))
+      ;; Algorithm: get waiting output.  See if last line contains
+      ;; tramp-smb-prompt sentinel or tramp-smb-errors strings.
+      ;; If not, wait a bit and again get waiting output.
+      (while (and (not found) (not err))
 
-    ;; Return value is whether no error message has appeared.
-    (not err)))
+       ;; Accept pending output.
+       (tramp-accept-process-output p)
 
+       ;; Search for prompt.
+       (goto-char (point-min))
+       (setq found (re-search-forward tramp-smb-prompt nil t))
 
-;; Snarfed code from time-date.el and parse-time.el
+       ;; Search for errors.
+       (goto-char (point-min))
+       (setq err (re-search-forward tramp-smb-errors nil t)))
 
-(defconst tramp-smb-half-a-year '(241 17024)
-"Evaluated by \"(days-to-time 183)\".")
+      ;; When the process is still alive, read pending output.
+      (while (and (not found) (memq (process-status p) '(run open)))
 
-(defconst tramp-smb-parse-time-months '(("jan" . 1) ("feb" . 2) ("mar" . 3)
-                           ("apr" . 4) ("may" . 5) ("jun" . 6)
-                           ("jul" . 7) ("aug" . 8) ("sep" . 9)
-                           ("oct" . 10) ("nov" . 11) ("dec" . 12))
-"Alist mapping month names to integers.")
+       ;; Accept pending output.
+       (tramp-accept-process-output p)
 
-(defun tramp-smb-time-less-p (t1 t2)
-  "Say whether time value T1 is less than time value T2."
-  (unless t1 (setq t1 '(0 0)))
-  (unless t2 (setq t2 '(0 0)))
-  (or (< (car t1) (car t2))
-      (and (= (car t1) (car t2))
-          (< (nth 1 t1) (nth 1 t2)))))
+       ;; Search for prompt.
+       (goto-char (point-min))
+       (setq found (re-search-forward tramp-smb-prompt nil t)))
 
-(defun tramp-smb-time-subtract (t1 t2)
-  "Subtract two time values.
-Return the difference in the format of a time value."
-  (unless t1 (setq t1 '(0 0)))
-  (unless t2 (setq t2 '(0 0)))
-  (let ((borrow (< (cadr t1) (cadr t2))))
-    (list (- (car t1) (car t2) (if borrow 1 0))
-         (- (+ (if borrow 65536 0) (cadr t1)) (cadr t2)))))
+      ;; Return value is whether no error message has appeared.
+      (tramp-message vec 6 "\n%s" (buffer-string))
+      (not err))))
 
 
 (provide 'tramp-smb)
 
 ;;; TODO:
 
-;; * Provide a local smb.conf. The default one might not be readable.
 ;; * Error handling in case password is wrong.
 ;; * Read password from "~/.netrc".
 ;; * Return more comprehensive file permission string.  Think whether it is
 ;;   possible to implement `set-file-modes'.
-;; * Handle WILDCARD and FULL-DIRECTORY-P in
-;;   `tramp-smb-handle-insert-directory'.
 ;; * Handle links (FILENAME.LNK).
 ;; * Maybe local tmp files should have the same extension like the original
 ;;   files.  Strange behaviour with jka-compr otherwise?
-;; * Copy files in dired from SMB to another method doesn't work.
 ;; * Try to remove the inclusion of dummy "" directory.  Seems to be at
 ;;   several places, especially in `tramp-smb-handle-insert-directory'.
-;; * Provide variables for debug.
 ;; * (RMS) Use unwind-protect to clean up the state so as to make the state
 ;;   regular again.
+;; * Make it multi-hop capable.
 
 ;;; arch-tag: fcc9dbec-7503-4d73-b638-3c8aa59575f5
 ;;; tramp-smb.el ends here
diff --git a/lisp/net/tramp-util.el b/lisp/net/tramp-util.el
deleted file mode 100644 (file)
index f4b23fe..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-;;; -*- coding: iso-2022-7bit; -*-
-;;; tramp-util.el --- Misc utility functions to use with Tramp
-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
-;;   2006, 2007 Free Software Foundation, Inc.
-
-;; Author: kai.grossjohann@gmx.net
-;; Keywords: comm, extensions, processes
-
-;; 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
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; This file 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; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; Some misc. utility functions that might go nicely with Tramp.
-;; Mostly, these are kluges awaiting real solutions later on.
-
-;;; Code:
-
-(require 'compile)
-(require 'tramp)
-(add-hook 'tramp-util-unload-hook
-         '(lambda ()
-            (when (featurep 'tramp)
-              (unload-feature 'tramp 'force))))
-
-;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp
-;; specific functions, like compilation.
-;; The key remapping works since Emacs 22 only. Unknown for XEmacs.
-
-;; Pacify byte-compiler
-(eval-when-compile
-  (unless (fboundp 'define-minor-mode)
-      (defalias 'define-minor-mode 'identity)
-      (defvar tramp-minor-mode))
-  (unless (featurep 'xemacs)
-    (defalias 'add-menu-button 'ignore)))
-
-(defvar tramp-minor-mode-map (make-sparse-keymap)
-  "Keymap for Tramp minor mode.")
-
-(define-minor-mode tramp-minor-mode "Tramp minor mode for utility functions."
-  :group 'tramp
-  :global nil
-  :init-value nil
-  :lighter " Tramp"
-  :keymap tramp-minor-mode-map
-  (setq tramp-minor-mode
-       (and tramp-minor-mode (tramp-tramp-file-p default-directory))))
-
-(add-hook 'find-file-hooks 'tramp-minor-mode t)
-(add-hook 'tramp-util-unload-hook
-         '(lambda ()
-            (remove-hook 'find-file-hooks 'tramp-minor-mode)))
-
-(add-hook 'dired-mode-hook 'tramp-minor-mode t)
-(add-hook 'tramp-util-unload-hook
-         '(lambda ()
-            (remove-hook 'dired-mode-hook 'tramp-minor-mode)))
-
-(defun tramp-remap-command (old-command new-command)
-  "Replaces bindings of OLD-COMMAND by NEW-COMMAND.
-If remapping functionality for keymaps is defined, this happens for all
-bindings.  Otherwise, only bindings active during invocation are taken
-into account.  XEmacs menubar bindings are not changed by this."
-  (if (functionp 'command-remapping)
-      ;; Emacs 22
-      (eval
-       `(define-key tramp-minor-mode-map [remap ,old-command] new-command))
-    ;; previous Emacs versions.
-    (mapcar
-     '(lambda (x)
-       (define-key tramp-minor-mode-map x new-command))
-     (where-is-internal old-command))))
-
-(tramp-remap-command 'compile 'tramp-compile)
-(tramp-remap-command 'recompile 'tramp-recompile)
-
-;; XEmacs has an own mimic for menu entries
-(when (fboundp 'add-menu-button)
-  (funcall 'add-menu-button
-   '("Tools" "Compile")
-   ["Compile..."
-    (command-execute (if tramp-minor-mode 'tramp-compile 'compile))
-    :active (fboundp 'compile)])
-  (funcall 'add-menu-button
-   '("Tools" "Compile")
-   ["Repeat Compilation"
-    (command-execute (if tramp-minor-mode 'tramp-recompile 'recompile))
-    :active (fboundp 'compile)]))
-
-;; Utility functions.
-
-(defun tramp-compile (command)
-  "Compile on remote host."
-  (interactive
-   (if (or compilation-read-command current-prefix-arg)
-       (list (read-from-minibuffer "Compile command: "
-                                   compile-command nil nil
-                                   '(compile-history . 1)))
-     (list compile-command)))
-  (setq compile-command command)
-  (save-some-buffers (not compilation-ask-about-save) nil)
-  (let ((d default-directory))
-    (save-excursion
-      (pop-to-buffer (get-buffer-create "*Compilation*") t)
-      (erase-buffer)
-      (setq default-directory d)))
-  (tramp-handle-shell-command command (get-buffer "*Compilation*"))
-  (pop-to-buffer (get-buffer "*Compilation*"))
-  (tramp-minor-mode 1)
-  (compilation-minor-mode 1))
-
-(defun tramp-recompile ()
-  "Re-compile on remote host."
-  (interactive)
-  (save-some-buffers (not compilation-ask-about-save) nil)
-  (tramp-handle-shell-command compile-command (get-buffer "*Compilation*"))
-  (pop-to-buffer (get-buffer "*Compilation*"))
-  (tramp-minor-mode 1)
-  (compilation-minor-mode 1))
-
-(provide 'tramp-util)
-
-;;; arch-tag: 500f9992-a44e-46d0-83a7-980799251808
-;;; tramp-util.el ends here
index a12c9adbba847edd79ad75fb2f06880c8c6f5459..d9994e9dc83a4efc9cfabcd017e34b8bc21fecbe 100644 (file)
@@ -1,10 +1,10 @@
-;;; -*- coding: iso-2022-7bit; -*-
 ;;; tramp-uu.el --- uuencode in Lisp
+;;; -*- coding: utf-8; -*-
 
 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
 ;;   2007 Free Software Foundation, Inc.
 
-;; Author: Kai Gro\e,A_\e(Bjohann <kai.grossjohann@gmx.net>
+;; Author: Kai Großjohann <kai.grossjohann@gmx.net>
 ;; Keywords: comm, terminals
 
 ;; This file is free software; you can redistribute it and/or modify
@@ -18,9 +18,8 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
diff --git a/lisp/net/tramp-vc.el b/lisp/net/tramp-vc.el
deleted file mode 100644 (file)
index eb411cb..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-;;; tramp-vc.el --- Version control integration for TRAMP.el
-
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007 Free Software Foundation, Inc.
-
-;; Author: Daniel Pittman <daniel@danann.net>
-;; Keywords: comm, processes
-
-;; 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, 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; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; See the main module, 'tramp.el' for discussion of the purpose of TRAMP.
-;; This module provides integration between remote files accessed by TRAMP and
-;; the Emacs version control system.
-
-;;; Code:
-
-(require 'vc)
-;; Old VC defines vc-rcs-release in vc.el, new VC requires extra module.
-(unless (boundp 'vc-rcs-release)
-  (require 'vc-rcs))
-(require 'tramp)
-
-;; Avoid byte-compiler warnings if the byte-compiler supports this.
-;; Currently, XEmacs supports this.
-(eval-when-compile
-  (when (fboundp 'byte-compiler-options)
-    (let (unused-vars) ; Pacify Emacs byte-compiler
-      (defalias 'warnings 'identity) ; Pacify Emacs byte-compiler
-      (byte-compiler-options (warnings (- unused-vars))))))
-
-;; -- vc --
-
-;; This used to blow away the file-name-handler-alist and reinstall
-;; TRAMP into it. This was intended to let VC work remotely. It didn't,
-;; at least not in my XEmacs 21.2 install.
-;;
-;; In any case, tramp-run-real-handler now deals correctly with disabling
-;; the things that should be, making this a no-op.
-;;
-;; I have removed it from the tramp-file-name-handler-alist because the
-;; shortened version does nothing. This is for reference only now.
-;;
-;; Daniel Pittman <daniel@danann.net>
-;;
-;; (defun tramp-handle-vc-registered (file)
-;;   "Like `vc-registered' for tramp files."
-;;   (tramp-run-real-handler 'vc-registered (list file)))
-
-;; `vc-do-command'
-;; This function does not deal well with remote files, so we define
-;; our own version and make a backup of the original function and
-;; call our version for tramp files and the original version for
-;; normal files.
-
-;; The following function is pretty much copied from vc.el, but
-;; the part that actually executes a command is changed.
-;; CCC: this probably works for Emacs 21, too.
-(defun tramp-vc-do-command (buffer okstatus command file last &rest flags)
-  "Like `vc-do-command' but invoked for tramp files.
-See `vc-do-command' for more information."
-  (save-match-data
-    (and file (setq file (expand-file-name file)))
-    (if (not buffer) (setq buffer "*vc*"))
-    (if vc-command-messages
-       (message "Running `%s' on `%s'..." command file))
-    (let ((obuf (current-buffer)) (camefrom (current-buffer))
-         (squeezed nil)
-         (olddir default-directory)
-         vc-file status)
-      (let* ((v (tramp-dissect-file-name (expand-file-name file)))
-            (multi-method (tramp-file-name-multi-method v))
-            (method (tramp-file-name-method v))
-            (user (tramp-file-name-user v))
-            (host (tramp-file-name-host v))
-            (localname (tramp-file-name-localname v)))
-       (set-buffer (get-buffer-create buffer))
-       (set (make-local-variable 'vc-parent-buffer) camefrom)
-       (set (make-local-variable 'vc-parent-buffer-name)
-            (concat " from " (buffer-name camefrom)))
-       (setq default-directory olddir)
-
-       (erase-buffer)
-
-       (mapcar
-        (function
-         (lambda (s) (and s (setq squeezed (append squeezed (list s))))))
-        flags)
-       (if (and (eq last 'MASTER) file
-                (setq vc-file (vc-name file)))
-           (setq squeezed
-                 (append squeezed
-                         (list (tramp-file-name-localname
-                                (tramp-dissect-file-name vc-file))))))
-       (if (and file (eq last 'WORKFILE))
-           (progn
-             (let* ((pwd (expand-file-name default-directory))
-                    (preflen (length pwd)))
-               (if (string= (substring file 0 preflen) pwd)
-                   (setq file (substring file preflen))))
-             (setq squeezed (append squeezed (list file)))))
-       ;; Unless we (save-window-excursion) the layout of windows in
-       ;; the current frame changes. This is painful, at best.
-       ;;
-       ;; As a point of note, (save-excursion) is still here only because
-       ;; it preserves (point) in the current buffer. (save-window-excursion)
-       ;; does not, at least under XEmacs 21.2.
-       ;;
-       ;; I trust that the FSF support this as well. I can't find useful
-       ;; documentation to check :(
-       ;;
-       ;; Daniel Pittman <daniel@danann.net>
-       (save-excursion
-         (save-window-excursion
-           ;; Actually execute remote command
-           ;; `shell-command' cannot be used; it isn't magic in XEmacs.
-           (tramp-handle-shell-command
-            (mapconcat 'tramp-shell-quote-argument
-                       (cons command squeezed) " ") t)
-           ;;(tramp-wait-for-output)
-           ;; Get status from command
-           (tramp-send-command multi-method method user host "echo $?")
-           (tramp-wait-for-output)
-           ;; Make sure to get status from last line of output.
-           (goto-char (point-max)) (forward-line -1)
-           (setq status (read (current-buffer)))
-           (message "Command %s returned status %d." command status)))
-       (goto-char (point-max))
-       (set-buffer-modified-p nil)
-       (forward-line -1)
-       (if (or (not (integerp status))
-               (and (integerp okstatus) (< okstatus status)))
-           (progn
-             (pop-to-buffer buffer)
-             (goto-char (point-min))
-             (shrink-window-if-larger-than-buffer)
-             (error "Running `%s'...FAILED (%s)" command
-                    (if (integerp status)
-                        (format "status %d" status)
-                      status))
-             )
-         (if vc-command-messages
-             (message "Running %s...OK" command))
-         )
-       (set-buffer obuf)
-       status))
-    ))
-
-;; Following code snarfed from Emacs 21 vc.el and slightly tweaked.
-(defun tramp-vc-do-command-new (buffer okstatus command file &rest flags)
-  "Like `vc-do-command' but for TRAMP files.
-This function is for the new VC which comes with Emacs 21.
-Since TRAMP doesn't do async commands yet, this function doesn't, either."
-  (and file (setq file (expand-file-name file)))
-  (if vc-command-messages
-      (message "Running %s on %s..." command file))
-  (save-current-buffer
-    (unless (eq buffer t)
-      ; Pacify byte-compiler
-      (funcall (symbol-function 'vc-setup-buffer) buffer))
-    (let ((squeezed nil)
-         (inhibit-read-only t)
-         (status 0))
-      (let* ((v (when file (tramp-dissect-file-name file)))
-             (multi-method (when file (tramp-file-name-multi-method v)))
-             (method (when file (tramp-file-name-method v)))
-             (user (when file (tramp-file-name-user v)))
-             (host (when file (tramp-file-name-host v)))
-             (localname (when file (tramp-file-name-localname v))))
-      (setq squeezed (delq nil (copy-sequence flags)))
-      (when file
-       (setq squeezed (append squeezed (list (file-relative-name
-                                              file default-directory)))))
-      (let ((w32-quote-process-args t))
-        (when (eq okstatus 'async)
-          (message "Tramp doesn't do async commands, running synchronously."))
-       ;; `shell-command' cannot be used; it isn't magic in XEmacs.
-        (setq status (tramp-handle-shell-command
-                      (mapconcat 'tramp-shell-quote-argument
-                                 (cons command squeezed) " ") t))
-        (when (or (not (integerp status))
-                 (and (integerp okstatus) (< okstatus status)))
-          (pop-to-buffer (current-buffer))
-          (goto-char (point-min))
-          (shrink-window-if-larger-than-buffer)
-          (error "Running %s...FAILED (%s)" command
-                 (if (integerp status) (format "status %d" status) status))))
-      (if vc-command-messages
-          (message "Running %s...OK" command))
-      ; Pacify byte-compiler
-      (funcall (symbol-function 'vc-exec-after)
-              `(run-hook-with-args
-                'vc-post-command-functions ',command ',localname ',flags))
-      status))))
-
-
-;; The context for a VC command is the current buffer.
-;; That makes a test on the buffers file more reliable than a test on the
-;; arguments.
-;; This is needed to handle remote VC correctly - else we test against the
-;; local VC system and get things wrong...
-;; Daniel Pittman <daniel@danann.net>
-;;-(if (fboundp 'vc-call-backend)
-;;-    () ;; This is the new VC for which we don't have an appropriate advice yet
-;;-)
-(unless (fboundp 'process-file)
-  (if (fboundp 'vc-call-backend)
-      (defadvice vc-do-command
-       (around tramp-advice-vc-do-command
-               (buffer okstatus command file &rest flags)
-               activate)
-       "Invoke tramp-vc-do-command for tramp files."
-       (let ((file (symbol-value 'file)))    ;pacify byte-compiler
-         (if (or (and (stringp file)     (tramp-tramp-file-p file))
-                 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
-             (setq ad-return-value
-                   (apply 'tramp-vc-do-command-new buffer okstatus command
-                          file ;(or file (buffer-file-name))
-                          flags))
-           ad-do-it)))
-    (defadvice vc-do-command
-      (around tramp-advice-vc-do-command
-             (buffer okstatus command file last &rest flags)
-             activate)
-      "Invoke tramp-vc-do-command for tramp files."
-      (let ((file (symbol-value 'file)))  ;pacify byte-compiler
-       (if (or (and (stringp file)     (tramp-tramp-file-p file))
-               (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
-           (setq ad-return-value
-                 (apply 'tramp-vc-do-command buffer okstatus command
-                        (or file (buffer-file-name)) last flags))
-         ad-do-it))))
-
-  (add-hook 'tramp-unload-hook
-           '(lambda () (ad-unadvise 'vc-do-command))))
-
-
-;; XEmacs uses this to do some of its work. Like vc-do-command, we
-;; need to enhance it to make VC work via TRAMP-mode.
-;;
-;; Like the previous function, this is a cut-and-paste job from the VC
-;; file. It's based on the vc-do-command code.
-;; CCC: this isn't used in Emacs 21, so do as before.
-(defun tramp-vc-simple-command (okstatus command file &rest args)
-  ;; Simple version of vc-do-command, for use in vc-hooks only.
-  ;; Don't switch to the *vc-info* buffer before running the
-  ;; command, because that would change its default directory
-  (save-match-data
-    (let* ((v (tramp-dissect-file-name (expand-file-name file)))
-          (multi-method (tramp-file-name-multi-method v))
-          (method (tramp-file-name-method v))
-          (user (tramp-file-name-user v))
-          (host (tramp-file-name-host v))
-          (localname (tramp-file-name-localname v)))
-      (save-excursion (set-buffer (get-buffer-create "*vc-info*"))
-                     (erase-buffer))
-      (let ((exec-path (append vc-path exec-path)) exec-status
-           ;; Add vc-path to PATH for the execution of this command.
-           (process-environment
-            (cons (concat "PATH=" (getenv "PATH")
-                          path-separator
-                          (mapconcat 'identity vc-path path-separator))
-                  process-environment)))
-       ;; Call the actual process. See tramp-vc-do-command for discussion of
-       ;; why this does both (save-window-excursion) and (save-excursion).
-       ;;
-       ;; As a note, I don't think that the process-environment stuff above
-       ;; has any effect on the remote system. This is a hard one though as
-       ;; there is no real reason to expect local and remote paths to be
-       ;; identical...
-       ;;
-       ;; Daniel Pittman <daniel@danann.net>
-       (save-excursion
-         (save-window-excursion
-           ;; Actually execute remote command
-           ;; `shell-command' cannot be used; it isn't magic in XEmacs.
-           (tramp-handle-shell-command
-            (mapconcat 'tramp-shell-quote-argument
-                       (append (list command) args (list localname)) " ")
-            (get-buffer-create"*vc-info*"))
-                                       ;(tramp-wait-for-output)
-           ;; Get status from command
-           (tramp-send-command multi-method method user host "echo $?")
-           (tramp-wait-for-output)
-           (setq exec-status (read (current-buffer)))
-           (message "Command %s returned status %d." command exec-status)))
-
-       ;; Maybe okstatus can be `async' here.  But then, maybe the
-       ;; async thing is new in Emacs 21, but this function is only
-       ;; used in Emacs 20.
-       (cond ((> exec-status okstatus)
-              (switch-to-buffer (get-file-buffer file))
-              (shrink-window-if-larger-than-buffer
-               (display-buffer "*vc-info*"))
-              (error "Couldn't find version control information")))
-       exec-status))))
-
-;; This function does not exist any more in Emacs-21's VC
-(defadvice vc-simple-command
-  (around tramp-advice-vc-simple-command
-         (okstatus command file &rest args)
-         activate)
-  "Invoke tramp-vc-simple-command for tramp files."
-  (let ((file (symbol-value 'file)))    ;pacify byte-compiler
-    (if (or (and (stringp file)     (tramp-tramp-file-p file))
-            (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
-        (setq ad-return-value
-              (apply 'tramp-vc-simple-command okstatus command
-                     (or file (buffer-file-name)) args))
-      ad-do-it)))
-
-(add-hook 'tramp-unload-hook
-         '(lambda () (ad-unadvise 'vc-simple-command)))
-
-
-;; `vc-workfile-unchanged-p'
-;; This function does not deal well with remote files, so we do the
-;; same as for `vc-do-command'.
-
-;; `vc-workfile-unchanged-p' checks the modification time, we cannot
-;; do that for remote files, so here's a version which relies on diff.
-;; CCC: this one probably works for Emacs 21, too.
-(defun tramp-vc-workfile-unchanged-p
-  (filename &optional want-differences-if-changed)
-  (if (fboundp 'vc-backend-diff)
-      ;; Old VC.  Call `vc-backend-diff'.
-      (let ((status (funcall (symbol-function 'vc-backend-diff)
-                             filename nil nil
-                             (not want-differences-if-changed))))
-        (zerop status))
-    ;; New VC.  Call `vc-default-workfile-unchanged-p'.
-      (funcall (symbol-function 'vc-default-workfile-unchanged-p)
-              (vc-backend filename) filename)))
-
-(defadvice vc-workfile-unchanged-p
-  (around tramp-advice-vc-workfile-unchanged-p
-          (filename &optional want-differences-if-changed)
-          activate)
-  "Invoke tramp-vc-workfile-unchanged-p for tramp files."
-  (if (and (stringp filename)
-          (tramp-tramp-file-p filename)
-          (not
-           (let ((v    (tramp-dissect-file-name filename)))
-             ;; The following check is probably to test whether
-             ;; file-attributes returns correct last modification
-             ;; times.  This check needs to be changed.
-             (tramp-get-remote-perl (tramp-file-name-multi-method v)
-                                  (tramp-file-name-method v)
-                                  (tramp-file-name-user v)
-                                  (tramp-file-name-host v)))))
-      (setq ad-return-value
-            (tramp-vc-workfile-unchanged-p filename want-differences-if-changed))
-    ad-do-it))
-
-(add-hook 'tramp-unload-hook
-         '(lambda () (ad-unadvise 'vc-workfile-unchanged-p)))
-
-
-;; Redefine a function from vc.el -- allow tramp files.
-;; `save-match-data' seems not to be required -- it isn't in
-;; the original version, either.
-;; CCC: this might need some work -- how does the Emacs 21 version
-;; work, anyway?  Does it work over ange-ftp?  Hm.
-(if (not (fboundp 'vc-backend-checkout))
-    () ;; our replacement won't work and is unnecessary anyway
-(defun vc-checkout (filename &optional writable rev)
-  "Retrieve a copy of the latest version of the given file."
-  ;; If ftp is on this system and the name matches the ange-ftp format
-  ;; for a remote file, the user is trying something that won't work.
-  (funcall (symbol-function 'vc-backend-checkout) filename writable rev)
-  (vc-resynch-buffer filename t t))
-)
-
-
-;; Do we need to advise the vc-user-login-name function anyway?
-;; This will return the correct login name for the owner of a
-;; file. It does not deal with the default remote user name...
-;;
-;; That is, when vc calls (vc-user-login-name), we return the
-;; local login name, something that may be different to the remote
-;; default.
-;;
-;; The remote VC operations will occur as the user that we logged
-;; in with however - not always the same as the local user.
-;;
-;; In the end, I did advise the function. This is because, well,
-;; the thing didn't work right otherwise ;)
-;;
-;; Daniel Pittman <daniel@danann.net>
-
-(defun tramp-handle-vc-user-login-name (&optional uid)
-  "Return the default user name on the remote machine.
-Whenever VC calls this function, `file' is bound to the file name
-in question.  If no uid is provided or the uid is equal to the uid
-owning the file, then we return the user name given in the file name.
-
-This should only be called when `file' is bound to the
-filename we are thinking about..."
-  ;; Pacify byte-compiler; this symbol is bound in the calling
-  ;; function.  CCC: Maybe it would be better to move the
-  ;; boundness-checking into this function?
-  (let* ((file (symbol-value 'file))
-        (remote-uid
-         ;; With Emacs 22, `file-attributes' has got an optional parameter
-         ;; ID-FORMAT. Handle this case backwards compatible.
-         (if (and (functionp 'subr-arity)
-                  (= 2 (cdr (funcall (symbol-function 'subr-arity)
-                                     (symbol-function 'file-attributes)))))
-             (nth 2 (file-attributes file 'integer))
-           (nth 2 (file-attributes file)))))
-    (if (and uid (/= uid remote-uid))
-       (error "tramp-handle-vc-user-login-name cannot map a uid to a name")
-      (let* ((v (tramp-dissect-file-name (expand-file-name file)))
-            (u (tramp-file-name-user v)))
-       (cond ((stringp u) u)
-             ((vectorp u) (elt u (1- (length u))))
-             ((null    u) (user-login-name))
-             (t           (error "tramp-handle-vc-user-login-name cannot cope!")))))))
-
-
-;; The following defadvice is no longer necessary after changes in VC
-;; on 2006-01-25, Andre.
-
-;; That means either GNU Emacs >= 22 or the "new vc" package from XEmacs
-;; packages collection; as of 2007-09-06, test for availability of
-;; `vc-find-version' works for both of those cases.
-(unless (fboundp 'vc-find-version)
-  (defadvice vc-user-login-name
-    (around tramp-vc-user-login-name activate)
-    "Support for files on remote machines accessed by TRAMP."
-    ;; We rely on the fact that `file' is bound when this is called.
-    ;; This appears to be the case everywhere in vc.el and vc-hooks.el
-    ;; as of Emacs 20.5.
-    ;;
-    ;; With Emacs 22, the definition of `vc-user-login-name' has been
-    ;; changed.  It doesn't need to be adviced any longer.
-    (let ((file (when (boundp 'file)
-                 (symbol-value 'file))))    ;pacify byte-compiler
-      (or (and (stringp file)
-              (tramp-tramp-file-p file)        ; tramp file
-              (setq ad-return-value
-                    (save-match-data
-                      (tramp-handle-vc-user-login-name (ad-get-arg 0))))) ; get the owner name
-         ad-do-it)))                     ; else call the original
-
-  (add-hook 'tramp-unload-hook
-           '(lambda () (ad-unadvise 'vc-user-login-name))))
-
-
-;; Determine the name of the user owning a file.
-(defun tramp-file-owner (filename)
-  "Return who owns FILE (user name, as a string)."
-  (let ((v (tramp-dissect-file-name
-           (expand-file-name filename))))
-    (if (not (file-exists-p filename))
-        nil                             ; file cannot be opened
-      ;; file exists, find out stuff
-      (save-excursion
-        (tramp-send-command
-         (tramp-file-name-multi-method v) (tramp-file-name-method v)
-         (tramp-file-name-user v) (tramp-file-name-host v)
-         (format "%s -Lld %s"
-                 (tramp-get-ls-command (tramp-file-name-multi-method v)
-                                     (tramp-file-name-method v)
-                                     (tramp-file-name-user v)
-                                     (tramp-file-name-host v))
-                 (tramp-shell-quote-argument (tramp-file-name-localname v))))
-        (tramp-wait-for-output)
-        ;; parse `ls -l' output ...
-        ;; ... file mode flags
-        (read (current-buffer))
-        ;; ... number links
-        (read (current-buffer))
-        ;; ... uid (as a string)
-        (symbol-name (read (current-buffer)))))))
-
-;; Wire ourselves into the VC infrastructure...
-;; This function does not exist any more in Emacs-21's VC
-;; CCC: it appears that no substitute is needed for Emacs 21.
-(defadvice vc-file-owner
-  (around tramp-vc-file-owner activate)
-  "Support for files on remote machines accessed by TRAMP."
-  (let ((filename (ad-get-arg 0)))
-    (or (and (tramp-file-name-p filename) ; tramp file
-             (setq ad-return-value
-                  (save-match-data
-                    (tramp-file-owner filename)))) ; get the owner name
-        ad-do-it)))                     ; else call the original
-
-(add-hook 'tramp-unload-hook
-         '(lambda () (ad-unadvise 'vc-file-owner)))
-
-
-;; We need to make the version control software backend version
-;; information local to the current buffer. This is because each TRAMP
-;; buffer can (theoretically) have a different VC version and I am
-;; *way* too lazy to try and push the correct value into each new
-;; buffer.
-;;
-;; Remote VC costs will just have to be paid, at least for the moment.
-;; Well, at least, they will right until I feel guilty about doing a
-;; botch job here and fix it. :/
-;;
-;; Daniel Pittman <daniel@danann.net>
-;; CCC: this is probably still needed for Emacs 21.
-(defun tramp-vc-setup-for-remote ()
-  "Make the backend release variables buffer local.
-This makes remote VC work correctly at the cost of some processing time."
-  (when (and (buffer-file-name)
-             (tramp-tramp-file-p (buffer-file-name)))
-    (make-local-variable 'vc-rcs-release)
-    (setq vc-rcs-release nil)))
-
-(add-hook 'find-file-hooks 'tramp-vc-setup-for-remote t)
-(add-hook 'tramp-unload-hook
-         '(lambda ()
-            (remove-hook 'find-file-hooks 'tramp-vc-setup-for-remote)))
-
-;; No need to load this again if anyone asks.
-(provide 'tramp-vc)
-
-;;; arch-tag: 27cc42ce-da19-468d-ad5c-a2690558db60
-;;; tramp-vc.el ends here
index 4bff0f8ee3fa57de2aa532a8678596ce6711c986..c8b2a72aad0fb847e2597ca0b77500d088d1b68e 100644 (file)
@@ -1,12 +1,12 @@
-;;; -*- mode: Emacs-Lisp; coding: iso-2022-7bit; -*-
 ;;; tramp.el --- Transparent Remote Access, Multiple Protocol
+;;; -*- mode: Emacs-Lisp; coding: utf-8; -*-
 
 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 ;;   2005, 2006, 2007 Free Software Foundation, Inc.
 
 ;; (copyright statements below in code to be updated with the above notice)
 
-;; Author: Kai Gro\e,A_\e(Bjohann <kai.grossjohann@gmx.net>
+;; Author: Kai Großjohann <kai.grossjohann@gmx.net>
 ;;         Michael Albinus <michael.albinus@gmx.de>
 ;; Keywords: comm, processes
 
@@ -23,9 +23,8 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 ;; Notes:
 ;; -----
 ;;
-;; This package only works for Emacs 20 and higher, and for XEmacs 21
-;; and higher.  (XEmacs 20 is missing the `with-timeout' macro.  Emacs
-;; 19 is reported to have other problems.  For XEmacs 21, you need the
-;; package `fsf-compat' for the `with-timeout' macro.)
+;; This package only works for Emacs 21.1 and higher, and for XEmacs 21.4
+;; and higher.  For XEmacs 21, you need the package `fsf-compat' for
+;; the `with-timeout' macro.)
 ;;
 ;; This version might not work with pre-Emacs 21 VC unless VC is
 ;; loaded before tramp.el.  Could you please test this and tell me about
             (when (featurep 'trampver)
               (unload-feature 'trampver 'force))))
 
-(if (featurep 'xemacs)
-    (require 'timer-funcs)
-  (require 'timer))
+(require 'tramp-compat)
+(add-hook 'tramp-unload-hook
+         '(lambda ()
+            (when (featurep 'tramp-compat)
+              (unload-feature 'tramp-compat 'force))))
 
 (require 'format-spec)                  ;from Gnus 5.8, also in tar ball
 ;; As long as password.el is not part of (X)Emacs, it shouldn't
     (load "password" 'noerror)
   (require 'password nil 'noerror))     ;from No Gnus, also in tar ball
 
-;; The explicit check is not necessary in Emacs, which provides the
-;; feature even if implemented in C, but it appears to be necessary
-;; in XEmacs.
-(unless (and (fboundp 'base64-encode-region)
-            (fboundp 'base64-decode-region))
-  (require 'base64))                       ;for the mimencode methods
 (require 'shell)
 (require 'advice)
 
-;; `copy-tree' is part of subr.el since Emacs 22.
-(eval-when-compile
-  (unless (functionp 'copy-tree)
-    (require 'cl)))
+;; Requiring 'tramp-cache results in an endless loop.
+(autoload 'tramp-get-file-property "tramp-cache")
+(autoload 'tramp-set-file-property "tramp-cache")
+(autoload 'tramp-flush-file-property "tramp-cache")
+(autoload 'tramp-flush-directory-property "tramp-cache")
+(autoload 'tramp-cache-print "tramp-cache")
+(autoload 'tramp-get-connection-property "tramp-cache")
+(autoload 'tramp-set-connection-property "tramp-cache")
+(autoload 'tramp-flush-connection-property "tramp-cache")
+(autoload 'tramp-parse-connection-properties "tramp-cache")
+(add-hook 'tramp-unload-hook
+         '(lambda ()
+            (when (featurep 'tramp-cache)
+              (unload-feature 'tramp-cache 'force))))
 
 (autoload 'tramp-uuencode-region "tramp-uu"
   "Implementation of `uuencode' in Lisp.")
             (when (featurep 'tramp-uu)
               (unload-feature 'tramp-uu 'force))))
 
-(unless (fboundp 'uudecode-decode-region)
-  (autoload 'uudecode-decode-region "uudecode"))
+(autoload 'uudecode-decode-region "uudecode")
 
-;; XEmacs is distributed with few Lisp packages.  Further packages are
-;; installed using EFS.  If we use a unified filename format, then
-;; Tramp is required in addition to EFS.  (But why can't Tramp just
-;; disable EFS when Tramp is loaded?  Then XEmacs can ship with EFS
-;; just like before.)  Another reason for using a separate filename
-;; syntax on XEmacs is that EFS hooks into XEmacs in many places, but
-;; Tramp only knows how to deal with `file-name-handler-alist', not
-;; the other places.
-;;;###autoload
-(defvar tramp-unified-filenames (not (featurep 'xemacs))
-  "Non-nil means to use unified Ange-FTP/Tramp filename syntax.
-Otherwise, use a separate filename syntax for Tramp.")
-
-;; Load foreign methods.  Because they do require Tramp internally, this
-;; must be done with the `eval-after-load' trick.
-
-;; tramp-ftp supports Ange-FTP only.  Not suited for XEmacs therefore.
-(unless (featurep 'xemacs)
-  (eval-after-load "tramp"
-    '(progn
-       (require 'tramp-ftp)
-       (add-hook 'tramp-unload-hook
-                '(lambda ()
-                   (when (featurep 'tramp-ftp)
-                     (unload-feature 'tramp-ftp 'force)))))))
-(when (and tramp-unified-filenames (featurep 'xemacs))
-  (eval-after-load "tramp"
-    '(progn
-       (require 'tramp-efs)
+;; The following Tramp packages must be loaded after Tramp, because
+;; they require Tramp as well.
+(eval-after-load "tramp"
+  '(progn
+
+     ;; Load foreign FTP method.
+     (let ((feature (if (featurep 'xemacs) 'tramp-efs 'tramp-ftp)))
+       (require feature)
        (add-hook 'tramp-unload-hook
-                '(lambda ()
-                   (when (featurep 'tramp-efs)
-                     (unload-feature 'tramp-efs 'force)))))))
-
-;; tramp-smb uses "smbclient" from Samba.
-;; Not available under Cygwin and Windows, because they don't offer
-;; "smbclient".  And even not necessary there, because Emacs supports
-;; UNC file names like "//host/share/localname".
-(unless (memq system-type '(cygwin windows-nt))
-  (eval-after-load "tramp"
-    '(progn
+                `(lambda ()
+                   (when (featurep ,feature)
+                     (unload-feature ,feature 'force)))))
+
+     ;; tramp-smb uses "smbclient" from Samba.  Not available under
+     ;; Cygwin and Windows, because they don't offer "smbclient".  And
+     ;; even not necessary there, because Emacs supports UNC file names
+     ;; like "//host/share/localname".
+     (unless (memq system-type '(cygwin windows-nt))
        (require 'tramp-smb)
        (add-hook 'tramp-unload-hook
                 '(lambda ()
                    (when (featurep 'tramp-smb)
-                     (unload-feature 'tramp-smb 'force)))))))
+                     (unload-feature 'tramp-smb 'force)))))
 
-(require 'custom)
-
-(unless (boundp 'custom-print-functions)
-  (defvar custom-print-functions nil)) ; not autoloaded before Emacs 20.4
+     ;; Load foreign FISH method.
+     (require 'tramp-fish)
+     (add-hook 'tramp-unload-hook
+              '(lambda ()
+                 (when (featurep 'tramp-fish)
+                   (unload-feature 'tramp-fish 'force))))
 
-;; Avoid byte-compiler warnings if the byte-compiler supports this.
-;; Currently, XEmacs supports this.
-(eval-when-compile
-  (when (featurep 'xemacs)
-    (let (unused-vars) ; Pacify Emacs byte-compiler
-      (defalias 'warnings 'identity) ; Pacify Emacs byte-compiler
-      (byte-compiler-options (warnings (- unused-vars))))))
-
-;; `directory-sep-char' is an obsolete variable in Emacs.  But it is
-;; used in XEmacs, so we set it here and there.  The following is needed
-;; to pacify Emacs byte-compiler.
-(eval-when-compile
-  (when (boundp 'byte-compile-not-obsolete-var)
-    (setq byte-compile-not-obsolete-var 'directory-sep-char)))
-
-;; `set-buffer-multibyte' comes from Emacs Leim.
-(eval-and-compile
-  (unless (fboundp 'set-buffer-multibyte)
-    (defalias 'set-buffer-multibyte 'ignore)))
+     ;; Load gateways.  It needs `make-network-process' from Emacs 22.
+     (when (functionp 'make-network-process)
+       (require 'tramp-gw)
+       (add-hook 'tramp-unload-hook
+                '(lambda ()
+                   (when (featurep 'tramp-gw)
+                     (unload-feature 'tramp-gw 'force)))))))
 
 ;;; User Customizable Internal Variables:
 
@@ -188,16 +158,23 @@ Otherwise, use a separate filename syntax for Tramp.")
   :group 'files
   :version "22.1")
 
-(defcustom tramp-verbose 9
-  "*Verbosity level for tramp.el.  0 means be silent, 10 is most verbose."
+(defcustom tramp-verbose 3
+  "*Verbosity level for Tramp.
+Any level x includes messages for all levels 1 .. x-1.  The levels are
+
+ 0  silent (no tramp messages at all)
+ 1  errors
+ 2  warnings
+ 3  connection to remote hosts (default level)
+ 4  activities
+ 5  internal
+ 6  sent and received strings
+ 7  file caching
+ 8  connection properties
+10  traces (huge)."
   :group 'tramp
   :type 'integer)
 
-(defcustom tramp-debug-buffer nil
-  "*Whether to send all commands and responses to a debug buffer."
-  :group 'tramp
-  :type 'boolean)
-
 ;; Emacs case
 (eval-and-compile
   (when (boundp 'backup-directory-alist)
@@ -206,7 +183,7 @@ Otherwise, use a separate filename syntax for Tramp.")
 Each element looks like (REGEXP . DIRECTORY), with the same meaning like
 in `backup-directory-alist'.  If a Tramp file is backed up, and DIRECTORY
 is a local file name, the backup directory is prepended with Tramp file
-name prefix \(multi-method, method, user, host\) of file.
+name prefix \(method, user, host\) of file.
 
 \(setq tramp-backup-directory-alist backup-directory-alist\)
 
@@ -225,7 +202,7 @@ policy for local files."
 It has the same meaning like `bkup-backup-directory-info' from package
 `backup-dir'.  If a Tramp file is backed up, and BACKUP-DIR is a local
 file name, the backup directory is prepended with Tramp file name prefix
-\(multi-method, method, user, host\) of file.
+\(method, user, host\) of file.
 
 \(setq tramp-bkup-backup-directory-info bkup-backup-directory-info\)
 
@@ -245,8 +222,7 @@ policy for local files."
   "*Put auto-save files in this directory, if set.
 The idea is to use a local directory so that auto-saving is faster."
   :group 'tramp
-  :type '(choice (const nil)
-                 string))
+  :type '(choice (const nil) string))
 
 (defcustom tramp-encoding-shell
   (if (memq system-type '(windows-nt))
@@ -263,9 +239,7 @@ For encoding and deocding, commands like the following are executed:
     /bin/sh -c COMMAND < INPUT > OUTPUT
 
 This variable can be used to change the \"/bin/sh\" part.  See the
-variable `tramp-encoding-command-switch' for the \"-c\" part.  Also, see the
-variable `tramp-encoding-reads-stdin' to specify whether the commands read
-standard input or a file.
+variable `tramp-encoding-command-switch' for the \"-c\" part.
 
 Note that this variable is not used for remote commands.  There are
 mechanisms in tramp.el which automatically determine the right shell to
@@ -282,286 +256,314 @@ See the variable `tramp-encoding-shell' for more information."
   :group 'tramp
   :type 'string)
 
-(defcustom tramp-encoding-reads-stdin t
-  "*If non-nil, encoding commands read from standard input.
-If nil, the filename is the last argument.
-
-Note that the commands always must write to standard output."
+(defcustom tramp-copy-size-limit 10240
+  "*The maximum file size where inline copying is preferred over an out-of-the-band copy."
   :group 'tramp
-  :type 'boolean)
-
-(defcustom tramp-multi-sh-program
-  tramp-encoding-shell
-  "*Use this program for bootstrapping multi-hop connections.
-This variable is similar to `tramp-encoding-shell', but it is only used
-when initializing a multi-hop connection.  Therefore, the set of
-commands sent to this shell is quite restricted, and if you are
-careful it works to use CMD.EXE under Windows (instead of a Bourne-ish
-shell which does not normally exist on Windows anyway).
-
-To use multi-hop methods from Windows, you also need suitable entries
-in `tramp-multi-connection-function-alist' for the first hop.
+  :type 'integer)
 
-This variable defaults to the value of `tramp-encoding-shell'."
+(defcustom tramp-terminal-type "dumb"
+  "*Value of TERM environment variable for logging in to remote host.
+Because Tramp wants to parse the output of the remote shell, it is easily
+confused by ANSI color escape sequences and suchlike.  Often, shell init
+files conditionalize this setup based on the TERM environment variable."
   :group 'tramp
-  :type '(file :must-match t))
+  :type 'string)
 
-;; CCC I have changed all occurrences of comint-quote-filename with
-;; tramp-shell-quote-argument, except in tramp-handle-expand-many-files.
-;; There, comint-quote-filename was removed altogether.  If it turns
-;; out to be necessary there, something will need to be done.
-;;-(defcustom tramp-file-name-quote-list
-;;-  '(?] ?[ ?\| ?& ?< ?> ?\( ?\) ?\; ?\  ?\* ?\? ?\! ?\" ?\' ?\` ?# ?\@ ?\+ )
-;;-  "*Protect these characters from the remote shell.
-;;-Any character in this list is quoted (preceded with a backslash)
-;;-because it means something special to the shell.  This takes effect
-;;-when sending file and directory names to the remote shell.
-;;-
-;;-See `comint-file-name-quote-list' for details."
-;;-  :group 'tramp
-;;-  :type '(repeat character))
-
-(defcustom tramp-methods
-  '( ("rcp"   (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "rsh")
-              (tramp-copy-program         "rcp")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           nil)
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("scp"   (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         "scp")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("scp1"  (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         "scp")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-1" "-e" "none"))
-              (tramp-copy-args            ("-1"))
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("scp2"  (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         "scp")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-2" "-e" "none"))
-              (tramp-copy-args            ("-2"))
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("scp1_old"
-              (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh1")
-              (tramp-copy-program         "scp1")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("scp2_old"
-              (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh2")
-              (tramp-copy-program         "scp2")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("rsync" (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         "rsync")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none"))
-              (tramp-copy-args            ("-e" "ssh"))
-              (tramp-copy-keep-date-arg   "-t")
-             (tramp-password-end-of-line nil))
-     ("remcp" (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "remsh")
-              (tramp-copy-program         "rcp")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           nil)
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("rsh"   (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "rsh")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           nil)
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("ssh"   (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("ssh1"  (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-1" "-e" "none"))
-              (tramp-copy-args            ("-1"))
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("ssh2"  (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-2" "-e" "none"))
-              (tramp-copy-args            ("-2"))
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("ssh1_old"
-              (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh1")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("ssh2_old"
-              (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh2")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("remsh" (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "remsh")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           nil)
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("telnet"
-              (tramp-connection-function  tramp-open-connection-telnet)
-              (tramp-login-program        "telnet")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           nil)
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("su"    (tramp-connection-function  tramp-open-connection-su)
-              (tramp-login-program        "su")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-" "%u"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("sudo"  (tramp-connection-function  tramp-open-connection-su)
-              (tramp-login-program        "sudo")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-u" "%u" "-s"
-                                          "-p" "Password:"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("multi" (tramp-connection-function  tramp-open-connection-multi)
-              (tramp-login-program        nil)
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           nil)
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("scpc"  (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         "scp")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-o" "ControlPath=%t.%%r@%%h:%%p"
-                                          "-o" "ControlMaster=yes"
-                                          "-e" "none"))
-              (tramp-copy-args            ("-o" "ControlPath=%t.%%r@%%h:%%p"
-                                          "-o" "ControlMaster=auto"))
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("scpx"  (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         "scp")
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none" "-t" "-t" "/bin/sh"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     ("sshx"  (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "ssh")
-              (tramp-copy-program         nil)
-              (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-e" "none" "-t" "-t" "/bin/sh"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("krlogin"
-              (tramp-connection-function  tramp-open-connection-rsh)
-             (tramp-login-program        "krlogin")
-             (tramp-copy-program         nil)
-             (tramp-remote-sh            "/bin/sh")
-             (tramp-login-args           ("-x"))
-             (tramp-copy-args            nil)
-             (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line nil))
-     ("plink"
-              (tramp-connection-function  tramp-open-connection-rsh)
-             (tramp-login-program        "plink")
-             (tramp-copy-program         nil)
-             (tramp-remote-sh            "/bin/sh")
-             (tramp-login-args           ("-ssh")) ;optionally add "-v"
-             (tramp-copy-args            nil)
-             (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line "xy")) ;see docstring for "xy"
-     ("plink1"
-              (tramp-connection-function  tramp-open-connection-rsh)
-             (tramp-login-program        "plink")
-             (tramp-copy-program         nil)
-             (tramp-remote-sh            "/bin/sh")
-             (tramp-login-args           ("-1" "-ssh")) ;optionally add "-v"
-             (tramp-copy-args            nil)
-             (tramp-copy-keep-date-arg   nil)
-             (tramp-password-end-of-line "xy")) ;see docstring for "xy"
-     ("pscp"
-              (tramp-connection-function  tramp-open-connection-rsh)
-             (tramp-login-program        "plink")
-             (tramp-copy-program         "pscp")
-             (tramp-remote-sh            "/bin/sh")
-             (tramp-login-args           ("-ssh"))
-             (tramp-copy-args            nil)
-             (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line "xy")) ;see docstring for "xy"
-     ("fcp"
-             (tramp-connection-function  tramp-open-connection-rsh)
-              (tramp-login-program        "fsh")
-              (tramp-copy-program         "fcp")
-              (tramp-remote-sh            "/bin/sh -i")
-              (tramp-login-args           ("sh" "-i"))
-              (tramp-copy-args            nil)
-              (tramp-copy-keep-date-arg   "-p")
-             (tramp-password-end-of-line nil))
-     )
+(defvar tramp-methods
+  `(("rcp"   (tramp-login-program        "rsh")
+             (tramp-login-args           (("%h") ("-l" "%u")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "rcp")
+            (tramp-copy-args            (("-p" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil))
+    ("scp"   (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "scp")
+            (tramp-copy-args            (("-P" "%p") ("-p" "%k") ("-q")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("scp1"  (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-1" "-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "scp")
+            (tramp-copy-args            (("-1") ("-P" "%p") ("-p" "%k")
+                                         ("-q")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("scp2"  (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-2" "-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "scp")
+            (tramp-copy-args            (("-2") ("-P" "%p") ("-p" "%k")
+                                         ("-q")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("scp1_old"
+             (tramp-login-program        "ssh1")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "scp1")
+            (tramp-copy-args            (("-p" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil))
+    ("scp2_old"
+             (tramp-login-program        "ssh2")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "scp2")
+            (tramp-copy-args            (("-p" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil))
+    ("sftp"  (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "sftp")
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("rsync" (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "rsync")
+            (tramp-copy-args            (("-e" "ssh") ("-t" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil))
+    ("remcp" (tramp-login-program        "remsh")
+             (tramp-login-args           (("%h") ("-l" "%u")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "rcp")
+            (tramp-copy-args            (("-p" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil))
+    ("rsh"   (tramp-login-program        "rsh")
+             (tramp-login-args           (("%h") ("-l" "%u")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("ssh"   (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("ssh1"  (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-1" "-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("ssh2"  (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-2" "-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("ssh1_old"
+             (tramp-login-program        "ssh1")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("ssh2_old"
+             (tramp-login-program        "ssh2")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("remsh" (tramp-login-program        "remsh")
+             (tramp-login-args           (("%h") ("-l" "%u")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("telnet"
+             (tramp-login-program        "telnet")
+            (tramp-login-args           (("%h") ("%p")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil)
+            (tramp-default-port         23))
+    ("su"    (tramp-login-program        "su")
+             (tramp-login-args           (("-") ("%u")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("sudo"  (tramp-login-program        "sudo")
+             (tramp-login-args           (("-u" "%u")
+                                         ("-s" "-p" "Password:")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("scpc"  (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-o" "ControlPath=%t.%%r@%%h:%%p")
+                                         ("-o" "ControlMaster=yes")
+                                         ("-e" "none")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "scp")
+            (tramp-copy-args            (("-P" "%p") ("-p" "%k") ("-q")
+                                         ("-o" "ControlPath=%t.%%r@%%h:%%p")
+                                         ("-o" "ControlMaster=auto")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("scpx"  (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none" "-t" "-t" "/bin/sh")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "scp")
+            (tramp-copy-args            (("-p" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("sshx"  (tramp-login-program        "ssh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p")
+                                         ("-e" "none" "-t" "-t" "/bin/sh")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil)
+            (tramp-gw-args              (("-o"
+                                          "GlobalKnownHostsFile=/dev/null")
+                                         ("-o" "UserKnownHostsFile=/dev/null")
+                                         ("-o" "StrictHostKeyChecking=no")))
+            (tramp-default-port         22))
+    ("krlogin"
+            (tramp-login-program        "krlogin")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-x")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("plink" (tramp-login-program        "plink")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-P" "%p")
+                                         ("-ssh")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line "xy") ;see docstring for "xy"
+            (tramp-default-port         22))
+    ("plink1"
+            (tramp-login-program        "plink")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-P" "%p")
+                                         ("-1" "-ssh")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line "xy") ;see docstring for "xy"
+            (tramp-default-port         22))
+    ("plinkx"
+             (tramp-login-program        "plink")
+            (tramp-login-args           (("-load" "%h") ("-t")
+                                         (,(format
+                                            "env 'TERM=%s' 'PROMPT_COMMAND=' 'PS1=$ '"
+                                            tramp-terminal-type))
+                                         ("/bin/sh")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         nil)
+            (tramp-copy-args            nil)
+            (tramp-copy-keep-date       nil)
+            (tramp-password-end-of-line nil))
+    ("pscp"  (tramp-login-program        "plink")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-P" "%p")
+                                         ("-ssh")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "pscp")
+            (tramp-copy-args            (("-scp") ("-p" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line "xy") ;see docstring for "xy"
+            (tramp-default-port         22))
+    ("psftp" (tramp-login-program        "plink")
+            (tramp-login-args           (("%h") ("-l" "%u") ("-P" "%p")
+                                         ("-ssh")))
+            (tramp-remote-sh            "/bin/sh")
+            (tramp-copy-program         "pscp")
+            (tramp-copy-args            (("-psftp") ("-p" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line "xy")) ;see docstring for "xy"
+    ("fcp"   (tramp-login-program        "fsh")
+             (tramp-login-args           (("%h") ("-l" "%u") ("sh" "-i")))
+            (tramp-remote-sh            "/bin/sh -i")
+            (tramp-copy-program         "fcp")
+            (tramp-copy-args            (("-p" "%k")))
+            (tramp-copy-keep-date       t)
+            (tramp-password-end-of-line nil)))
   "*Alist of methods for remote files.
 This is a list of entries of the form (NAME PARAM1 PARAM2 ...).
 Each NAME stands for a remote access method.  Each PARAM is a
 pair of the form (KEY VALUE).  The following KEYs are defined:
- * `tramp-connection-function'
-    This specifies the function to use to connect to the remote host.
-    Currently, `tramp-open-connection-rsh', `tramp-open-connection-telnet'
-    and `tramp-open-connection-su' are defined.  See the documentation
-    of these functions for more details.
   * `tramp-remote-sh'
     This specifies the Bourne shell to use on the remote host.  This
     MUST be a Bourne-like shell.  It is normally not necessary to set
@@ -571,21 +573,22 @@ pair of the form (KEY VALUE).  The following KEYs are defined:
     the value that you decide to use.  You Have Been Warned.
   * `tramp-login-program'
     This specifies the name of the program to use for logging in to the
-    remote host.  Depending on `tramp-connection-function', this may be
-    the name of rsh or a workalike program (when
-    `tramp-connection-function' is `tramp-open-connection-rsh'), or the
-    name of telnet or a workalike (for `tramp-open-connection-telnet'),
-    or the name of su or a workalike (for `tramp-open-connection-su').
+    remote host.  This may be the name of rsh or a workalike program,
+    or the name of telnet or a workalike, or the name of su or a workalike.
   * `tramp-login-args'
     This specifies the list of arguments to pass to the above
-    mentioned program.  Please note that this is a list of arguments,
+    mentioned program.  Please note that this is a list of list of arguments,
     that is, normally you don't want to put \"-a -b\" or \"-f foo\"
-    here.  Instead, you want two list elements, one for \"-a\" and one
-    for \"-b\", or one for \"-f\" and one for \"foo\".
-    If `tramp-connection-function' is `tramp-open-connection-su', then
-    \"%u\" in this list is replaced by the user name, and \"%%\" can
-    be used to obtain a literal percent character.
-    \"%t\" is replaced by the temporary file name for `scp'-like methods.
+    here.  Instead, you want a list (\"-a\" \"-b\"), or (\"-f\" \"foo\").
+    There are some patterns: \"%h\" in this list is replaced by the host
+    name, \"%u\" is replaced by the user name, \"%p\" is replaced by the
+    port number, and \"%%\" can be used to obtain a literal percent character.
+    If a list containing \"%h\", \"%u\" or \"%p\" is unchanged during
+    expansion (i.e. no host or no user specified), this list is not used as
+    argument.  By this, arguments like (\"-l\" \"%u\") are optional.
+    \"%t\" is replaced by the temporary file name produced with
+    `tramp-make-tramp-temp-file'.  \"%k\" indicates the keep-date
+    parameter of a program, if exists.
   * `tramp-copy-program'
     This specifies the name of the program to use for remotely copying
     the file; this might be the absolute filename of rcp or the name of
@@ -593,10 +596,16 @@ pair of the form (KEY VALUE).  The following KEYs are defined:
   * `tramp-copy-args'
     This specifies the list of parameters to pass to the above mentioned
     program, the hints for `tramp-login-args' also apply here.
-  * `tramp-copy-keep-date-arg'
-    This specifies the parameter to use for the copying program when the
-    timestamp of the original file should be kept.  For `rcp', use `-p', for
-    `rsync', use `-t'.
+  * `tramp-copy-keep-date'
+    This specifies whether the copying program when the preserves the
+    timestamp of the original file.
+  * `tramp-default-port'
+    The default port of a method is needed in case of gateway connections.
+    Additionally, it is used as indication which method is prepared for
+    passing gateways.
+  * `tramp-gw-args'
+    As the attribute name says, additional arguments are specified here
+    when a method is applied via a gateway.
   * `tramp-password-end-of-line'
     This specifies the string to use for terminating the line after
     submitting the password.  If this method parameter is nil, then the
@@ -618,78 +627,22 @@ file is passed through the same buffer used by `tramp-login-program'.  In
 this case, the file contents need to be protected since the
 `tramp-login-program' might use escape codes or the connection might not
 be eight-bit clean.  Therefore, file contents are encoded for transit.
-See the variable `tramp-coding-commands' for details.
+See the variables `tramp-local-coding-commands' and
+`tramp-remote-coding-commands' for details.
 
 So, to summarize: if the method is an out-of-band method, then you
 must specify `tramp-copy-program' and `tramp-copy-args'.  If it is an
-inline method, then these two parameters should be nil.  Every method,
-inline or out of band, must specify `tramp-connection-function' plus
-the associated arguments (for example, the login program if you chose
-`tramp-open-connection-telnet').
+inline method, then these two parameters should be nil.  Methods which
+are fit for gateways must have `tramp-default-port' at least.
 
 Notes:
 
-When using `tramp-open-connection-su' the phrase `open connection to a
-remote host' sounds strange, but it is used nevertheless, for
-consistency.  No connection is opened to a remote host, but `su' is
-started on the local host.  You are not allowed to specify a remote
-host other than `localhost' or the name of the local host."
-  :group 'tramp
-  :type '(repeat
-          (cons string
-                (set (list (const tramp-connection-function) function)
-                     (list (const tramp-login-program)
-                          (choice (const nil) string))
-                     (list (const tramp-copy-program)
-                          (choice (const nil) string))
-                     (list (const tramp-remote-sh)
-                          (choice (const nil) string))
-                     (list (const tramp-login-args) (repeat string))
-                     (list (const tramp-copy-args) (repeat string))
-                     (list (const tramp-copy-keep-date-arg)
-                          (choice (const nil) string))
-                     (list (const tramp-encoding-command)
-                          (choice (const nil) string))
-                     (list (const tramp-decoding-command)
-                          (choice (const nil) string))
-                     (list (const tramp-encoding-function)
-                          (choice (const nil) function))
-                     (list (const tramp-decoding-function)
-                          (choice (const nil) function))
-                    (list (const tramp-password-end-of-line)
-                          (choice (const nil) string))))))
-
-(defcustom tramp-multi-methods '("multi" "multiu")
-  "*List of multi-hop methods.
-Each entry in this list should be a method name as mentioned in the
-variable `tramp-methods'."
-  :group 'tramp
-  :type '(repeat string))
-
-(defcustom tramp-multi-connection-function-alist
-  '(("telnet" tramp-multi-connect-telnet "telnet %h%n")
-    ("rsh"    tramp-multi-connect-rlogin "rsh %h -l %u%n")
-    ("remsh"  tramp-multi-connect-rlogin "remsh %h -l %u%n")
-    ("ssh"    tramp-multi-connect-rlogin "ssh %h -l %u%n")
-    ("ssht"   tramp-multi-connect-rlogin "ssh %h -e none -t -t -l %u%n")
-    ("su"     tramp-multi-connect-su     "su - %u%n")
-    ("sudo"   tramp-multi-connect-su     "sudo -u %u -s -p Password:%n"))
-  "*List of connection functions for multi-hop methods.
-Each list item is a list of three items (METHOD FUNCTION COMMAND),
-where METHOD is the name as used in the file name, FUNCTION is the
-function to be executed, and COMMAND is the shell command used for
-connecting.
-
-COMMAND may contain percent escapes.  `%u' will be replaced with the
-user name, `%h' will be replaced with the host name, and `%n' will be
-replaced with an end-of-line character, as specified in the variable
-`tramp-rsh-end-of-line'.  Use `%%' for a literal percent character.
-Note that the interpretation of the percent escapes also depends on
-the FUNCTION.  For example, the `%u' escape is forbidden with the
-function `tramp-multi-connect-telnet'.  See the documentation of the
-various functions for details."
-  :group 'tramp
-  :type '(repeat (list string function string)))
+When using `su' or `sudo' the phrase `open connection to a remote
+host' sounds strange, but it is used nevertheless, for consistency.
+No connection is opened to a remote host, but `su' or `sudo' is
+started on the local host.  You should specify a remote host
+`localhost' or the name of the local host.  Another host name is
+useful only in combination with `tramp-default-proxies-alist'.")
 
 (defcustom tramp-default-method
   ;; An external copy method seems to be preferred, because it is much
@@ -701,30 +654,26 @@ various functions for details."
   ;; another good choice because of the "ControlMaster" option, but
   ;; this is a more modern alternative in OpenSSH 4, which cannot be
   ;; taken as default.
-  (let ((e-f (fboundp 'executable-find)))
-    (cond
-     ;; PuTTY is installed.
-     ((and e-f (funcall 'executable-find "pscp"))
-      (if (or (fboundp 'password-read)
-             ;; Pageant is running.
-             (and (fboundp 'w32-window-exists-p)
-                  (funcall 'w32-window-exists-p "Pageant" "Pageant")))
-         "pscp"
-       "plink"))
-     ;; There is an ssh installation.
-     ((and e-f (funcall 'executable-find "scp"))
-      (if (or (fboundp 'password-read)
-             ;; ssh-agent is running.
-             (getenv "SSH_AUTH_SOCK")
-             (getenv "SSH_AGENT_PID"))
-         "scp"
-       "ssh"))
-     ;; Under Emacs 20, `executable-find' does not exists.  So we
-     ;; couldn't check whether there is an ssh implementation.  Let's
-     ;; hope the best.
-     ((not e-f) "ssh")
-     ;; Fallback.
-     (t "ftp")))
+  (cond
+   ;; PuTTY is installed.
+   ((executable-find "pscp")
+    (if        (or (fboundp 'password-read)
+           ;; Pageant is running.
+           (and (fboundp 'w32-window-exists-p)
+                (funcall (symbol-function 'w32-window-exists-p)
+                         "Pageant" "Pageant")))
+       "pscp"
+      "plink"))
+   ;; There is an ssh installation.
+   ((executable-find "scp")
+    (if        (or (fboundp 'password-read)
+           ;; ssh-agent is running.
+           (getenv "SSH_AUTH_SOCK")
+           (getenv "SSH_AGENT_PID"))
+       "scp"
+      "ssh"))
+   ;; Fallback.
+   (t "ftp"))
   "*Default method to use for transferring files.
 See `tramp-methods' for possibilities.
 Also see `tramp-default-method-alist'."
@@ -733,7 +682,7 @@ Also see `tramp-default-method-alist'."
 
 (defcustom tramp-default-method-alist
   '(("\\`localhost\\'" "\\`root\\'" "su"))
-  "*Default method to use for specific user/host pairs.
+  "*Default method to use for specific host/user pairs.
 This is an alist of items (HOST USER METHOD).  The first matching item
 specifies the method to use for a file name which does not specify a
 method.  HOST and USER are regular expressions or nil, which is
@@ -749,42 +698,90 @@ See `tramp-methods' for a list of possibilities for METHOD."
                       (regexp :tag "User regexp")
                       (string :tag "Method"))))
 
-;; Default values for non-Unices seeked
+(defcustom tramp-default-user
+  nil
+  "*Default user to use for transferring files.
+It is nil by default; otherwise settings in configuration files like
+\"~/.ssh/config\" would be overwritten.  Also see `tramp-default-user-alist'.
+
+This variable is regarded as obsolete, and will be removed soon."
+  :group 'tramp
+  :type '(choice (const nil) string))
+
+(defcustom tramp-default-user-alist
+  `(("\\`su\\(do\\)?\\'" nil "root")
+    ("\\`r\\(em\\)?\\(cp\\|sh\\)\\|telnet\\|plink1?\\'"
+     nil ,(user-login-name)))
+  "*Default user to use for specific method/host pairs.
+This is an alist of items (METHOD HOST USER).  The first matching item
+specifies the user to use for a file name which does not specify a
+user.  METHOD and USER are regular expressions or nil, which is
+interpreted as a regular expression which always matches.  If no entry
+matches, the variable `tramp-default-user' takes effect.
+
+If the file name does not specify the method, lookup is done using the
+empty string for the method name."
+  :group 'tramp
+  :type '(repeat (list (regexp :tag "Method regexp")
+                      (regexp :tag "Host regexp")
+                      (string :tag "User"))))
+
+(defcustom tramp-default-host
+  (system-name)
+  "*Default host to use for transferring files.
+Useful for su and sudo methods mostly."
+  :group 'tramp
+  :type 'string)
+
+(defcustom tramp-default-proxies-alist nil
+  "*Route to be followed for specific host/user pairs.
+This is an alist of items (HOST USER PROXY).  The first matching
+item specifies the proxy to be passed for a file name located on
+a remote target matching USER@HOST.  HOST and USER are regular
+expressions or nil, which is interpreted as a regular expression
+which always matches.  PROXY must be a Tramp filename without a
+localname part.  Method and user name on PROXY are optional,
+which is interpreted with the default values.  PROXY can contain
+the patterns %h and %u, which are replaced by the strings
+matching HOST or USER, respectively."
+  :group 'tramp
+  :type '(repeat (list (regexp :tag "Host regexp")
+                      (regexp :tag "User regexp")
+                      (string :tag "Proxy remote name"))))
+
 (defconst tramp-completion-function-alist-rsh
-  (unless (memq system-type '(windows-nt))
-    '((tramp-parse-rhosts "/etc/hosts.equiv")
-      (tramp-parse-rhosts "~/.rhosts")))
+  '((tramp-parse-rhosts "/etc/hosts.equiv")
+    (tramp-parse-rhosts "~/.rhosts"))
   "Default list of (FUNCTION FILE) pairs to be examined for rsh methods.")
 
-;; Default values for non-Unices seeked
 (defconst tramp-completion-function-alist-ssh
-  (unless (memq system-type '(windows-nt))
-    '((tramp-parse-rhosts      "/etc/hosts.equiv")
-      (tramp-parse-rhosts      "/etc/shosts.equiv")
-      (tramp-parse-shosts      "/etc/ssh_known_hosts")
-      (tramp-parse-sconfig     "/etc/ssh_config")
-      (tramp-parse-shostkeys   "/etc/ssh2/hostkeys")
-      (tramp-parse-sknownhosts "/etc/ssh2/knownhosts")
-      (tramp-parse-rhosts      "~/.rhosts")
-      (tramp-parse-rhosts      "~/.shosts")
-      (tramp-parse-shosts      "~/.ssh/known_hosts")
-      (tramp-parse-sconfig     "~/.ssh/config")
-      (tramp-parse-shostkeys   "~/.ssh2/hostkeys")
-      (tramp-parse-sknownhosts "~/.ssh2/knownhosts")))
+  '((tramp-parse-rhosts      "/etc/hosts.equiv")
+    (tramp-parse-rhosts      "/etc/shosts.equiv")
+    (tramp-parse-shosts      "/etc/ssh_known_hosts")
+    (tramp-parse-sconfig     "/etc/ssh_config")
+    (tramp-parse-shostkeys   "/etc/ssh2/hostkeys")
+    (tramp-parse-sknownhosts "/etc/ssh2/knownhosts")
+    (tramp-parse-rhosts      "~/.rhosts")
+    (tramp-parse-rhosts      "~/.shosts")
+    (tramp-parse-shosts      "~/.ssh/known_hosts")
+    (tramp-parse-sconfig     "~/.ssh/config")
+    (tramp-parse-shostkeys   "~/.ssh2/hostkeys")
+    (tramp-parse-sknownhosts "~/.ssh2/knownhosts"))
   "Default list of (FUNCTION FILE) pairs to be examined for ssh methods.")
 
-;; Default values for non-Unices seeked
 (defconst tramp-completion-function-alist-telnet
-  (unless (memq system-type '(windows-nt))
-    '((tramp-parse-hosts "/etc/hosts")))
+  '((tramp-parse-hosts "/etc/hosts"))
   "Default list of (FUNCTION FILE) pairs to be examined for telnet methods.")
 
-;; Default values for non-Unices seeked
 (defconst tramp-completion-function-alist-su
-  (unless (memq system-type '(windows-nt))
-    '((tramp-parse-passwd "/etc/passwd")))
+  '((tramp-parse-passwd "/etc/passwd"))
   "Default list of (FUNCTION FILE) pairs to be examined for su methods.")
 
+(defconst tramp-completion-function-alist-putty
+  '((tramp-parse-putty
+     "HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions"))
+  "Default list of (FUNCTION REGISTRY) pairs to be examined for putty methods.")
+
 (defvar tramp-completion-function-alist nil
   "*Alist of methods for remote files.
 This is a list of entries of the form (NAME PAIR1 PAIR2 ...).
@@ -800,6 +797,7 @@ names from FILE for completion.  The following predefined FUNCTIONs exists:
  * `tramp-parse-hosts'       for \"/etc/hosts\" like files,
  * `tramp-parse-passwd'      for \"/etc/passwd\" like files.
  * `tramp-parse-netrc'       for \"~/.netrc\" like files.
+ * `tramp-parse-putty'       for PuTTY registry keys.
 
 FUNCTION can also be a customer defined function.  For more details see
 the info pages.")
@@ -842,8 +840,6 @@ the info pages.")
       "su" tramp-completion-function-alist-su)
      (tramp-set-completion-function
       "sudo" tramp-completion-function-alist-su)
-     (tramp-set-completion-function
-      "multi" nil)
      (tramp-set-completion-function
       "scpx" tramp-completion-function-alist-ssh)
      (tramp-set-completion-function
@@ -854,11 +850,27 @@ the info pages.")
       "plink" tramp-completion-function-alist-ssh)
      (tramp-set-completion-function
       "plink1" tramp-completion-function-alist-ssh)
+     (tramp-set-completion-function
+      "plinkx" tramp-completion-function-alist-putty)
      (tramp-set-completion-function
       "pscp" tramp-completion-function-alist-ssh)
      (tramp-set-completion-function
       "fcp" tramp-completion-function-alist-ssh)))
 
+(defconst tramp-echo-mark "_echo\b\b\b\b\b"
+  "String mark to be transmitted around shell commands.
+Used to separate their echo from the output they produce.  This
+will only be used if we cannot disable remote echo via stty.
+This string must have no effect on the remote shell except for
+producing some echo which can later be detected by
+`tramp-echoed-echo-mark-regexp'.  Using some characters followed
+by an equal number of backspaces to erase them will usually
+suffice.")
+
+(defconst tramp-echoed-echo-mark-regexp "_echo\\(\b\\( \b\\)?\\)\\{5\\}"
+  "Regexp which matches `tramp-echo-mark' as it gets echoed by
+the remote shell.")
+
 (defcustom tramp-rsh-end-of-line "\n"
   "*String used for end of line in rsh connections.
 I don't think this ever needs to be changed, so please tell me about it
@@ -883,17 +895,53 @@ The default value is to use the same value as `tramp-rsh-end-of-line'."
   :group 'tramp
   :type 'string)
 
+;; "getconf PATH" yields:
+;; HP-UX: /usr/bin:/usr/ccs/bin:/opt/ansic/bin:/opt/langtools/bin:/opt/fortran/bin
+;; Solaris: /usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin
+;; Linux (Debian, Suse): /bin:/usr/bin
+;; FreeBSD: /usr/bin:/bin:/usr/sbin:/sbin: - beware trailing ":"!
 (defcustom tramp-remote-path
-  ;; "/usr/xpg4/bin" has been placed first, because on Solaris a POSIX
-  ;; compatible "id" is needed.
-  '("/usr/xpg4/bin" "/bin" "/usr/bin" "/usr/sbin" "/usr/local/bin"
-    "/usr/ccs/bin" "/local/bin" "/local/freeware/bin" "/local/gnu/bin"
+  '(tramp-default-remote-path "/usr/sbin" "/usr/local/bin"
+    "/local/bin" "/local/freeware/bin" "/local/gnu/bin"
     "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin")
   "*List of directories to search for executables on remote host.
-Please notify me about other semi-standard directories to include here.
+For every remote host, this variable will be set buffer local,
+keeping the list of existing directories on that host.
 
 You can use `~' in this list, but when searching for a shell which groks
-tilde expansion, all directory names starting with `~' will be ignored."
+tilde expansion, all directory names starting with `~' will be ignored.
+
+`Default Directories' represent the list of directories given by
+the command \"getconf PATH\".  It is recommended to use this
+entry on top of this list, because these are the default
+directories for POSIX compatible commands."
+  :group 'tramp
+  :type '(repeat (choice
+                 (const :tag "Default Directories" tramp-default-remote-path)
+                 (string :tag "Directory"))))
+
+(defcustom tramp-terminal-type "dumb"
+  "*Value of TERM environment variable for logging in to remote host.
+Because Tramp wants to parse the output of the remote shell, it is easily
+confused by ANSI color escape sequences and suchlike.  Often, shell init
+files conditionalize this setup based on the TERM environment variable."
+  :group 'tramp
+  :type 'string)
+
+(defcustom tramp-remote-process-environment
+  `("HISTFILE=$HOME/.tramp_history" "HISTSIZE=1" "LC_TIME=C"
+    ,(concat "TERM=" tramp-terminal-type)
+    "CDPATH=" "HISTORY=" "MAIL=" "MAILCHECK=" "MAILPATH="
+    "autocorrect=" "correct=")
+
+  "*List of environment variables to be set on the remote host.
+
+Each element should be a string of the form ENVVARNAME=VALUE.  An
+entry ENVVARNAME= diables the corresponding environment variable,
+which might have been set in the init files like ~/.profile.
+
+Special handling is applied to the PATH environment, which should
+not be set here. Instead of, it should be set via `tramp-remote-path'."
   :group 'tramp
   :type '(repeat string))
 
@@ -920,7 +968,7 @@ which should work well in many cases."
   :type 'regexp)
 
 (defcustom tramp-password-prompt-regexp
-  "^.*\\([pP]assword\\|passphrase\\).*:\^@? *"
+  "^.*\\([pP]assword\\|[pP]assphrase\\).*:\^@? *"
   "*Regexp matching password-like prompts.
 The regexp should match at end of buffer.
 
@@ -938,7 +986,9 @@ The `sudo' program appears to insert a `^@' character into the prompt."
                        "Connection closed"
                        "Sorry, try again."
                        "Name or service not known"
-                       "Host key verification failed.") t)
+                       "Host key verification failed."
+                       "No supported authentication methods left to try!"
+                       "Tramp connection closed") t)
          ".*"
          "\\|"
          "^.*\\("
@@ -1011,7 +1061,7 @@ be ignored safely."
 In fact this expression is empty by intention, it will be used only to
 check regularly the status of the associated process.
 The answer will be provided by `tramp-action-process-alive',
-`tramp-multi-action-process-alive' and`tramp-action-out-of-band', which see."
+`tramp-action-out-of-band', which see."
   :group 'tramp
   :type 'regexp)
 
@@ -1019,18 +1069,12 @@ The answer will be provided by `tramp-action-process-alive',
   "*Prefix to use for temporary files.
 If this is a relative file name (such as \"tramp.\"), it is considered
 relative to the directory name returned by the function
-`tramp-temporary-file-directory' (which see).  It may also be an
+`tramp-compat-temporary-file-directory' (which see).  It may also be an
 absolute file name; don't forget to include a prefix for the filename
 part, though."
   :group 'tramp
   :type 'string)
 
-(defcustom tramp-discard-garbage nil
-  "*If non-nil, try to discard garbage sent by remote shell.
-Some shells send such garbage upon connection setup."
-  :group 'tramp
-  :type 'boolean)
-
 (defcustom tramp-sh-extra-args '(("/bash\\'" . "-norc -noprofile"))
   "*Alist specifying extra arguments to pass to the remote shell.
 Entries are (REGEXP . ARGS) where REGEXP is a regular expression
@@ -1047,139 +1091,134 @@ shell from reading its init file."
            '(alist :key-type string :value-type string)
          '(repeat (cons string string))))
 
-(defcustom tramp-prefix-format
-  (if tramp-unified-filenames "/" "/[")
-  "*String matching the very beginning of tramp file names.
-Used in `tramp-make-tramp-file-name' and `tramp-make-tramp-multi-file-name'."
+;; XEmacs is distributed with few Lisp packages.  Further packages are
+;; installed using EFS.  If we use a unified filename format, then
+;; Tramp is required in addition to EFS.  (But why can't Tramp just
+;; disable EFS when Tramp is loaded?  Then XEmacs can ship with EFS
+;; just like before.)  Another reason for using a separate filename
+;; syntax on XEmacs is that EFS hooks into XEmacs in many places, but
+;; Tramp only knows how to deal with `file-name-handler-alist', not
+;; the other places.
+
+;; Currently, we have the choice between 'ftp, 'sep, and 'url.
+;;;###autoload
+(defcustom tramp-syntax
+  (if (featurep 'xemacs) 'sep 'ftp)
+  "Tramp filename syntax to be used.
+
+It can have the following values:
+
+  'ftp -- Ange-FTP respective EFS like syntax (GNU Emacs default)
+  'sep -- Syntax as defined for XEmacs (not available yet for GNU Emacs)
+  'url -- URL-like syntax."
   :group 'tramp
-  :type 'string)
+  :type (if (featurep 'xemacs)
+           '(choice (const :tag "EFS"    ftp)
+                    (const :tag "XEmacs" sep)
+                    (const :tag "URL"    url))
+         '(choice (const :tag "Ange-FTP" ftp)
+                  (const :tag "URL"      url))))
+
+(defconst tramp-prefix-format
+  (cond ((equal tramp-syntax 'ftp) "/")
+       ((equal tramp-syntax 'sep) "/[")
+       ((equal tramp-syntax 'url) "/")
+       (t (error "Wrong `tramp-syntax' defined")))
+  "*String matching the very beginning of tramp file names.
+Used in `tramp-make-tramp-file-name'.")
 
-(defcustom tramp-prefix-regexp
+(defconst tramp-prefix-regexp
   (concat "^" (regexp-quote tramp-prefix-format))
   "*Regexp matching the very beginning of tramp file names.
-Should always start with \"^\". Derived from `tramp-prefix-format'."
-  :group 'tramp
-  :type 'regexp)
+Should always start with \"^\". Derived from `tramp-prefix-format'.")
 
-(defcustom tramp-method-regexp
+(defconst tramp-method-regexp
   "[a-zA-Z_0-9-]+"
-  "*Regexp matching methods identifiers."
-  :group 'tramp
-  :type 'regexp)
-
-;; It is a little bit annoying that in XEmacs case this delimeter is different
-;; for single-hop and multi-hop cases.
-(defcustom tramp-postfix-single-method-format
-  (if tramp-unified-filenames ":" "/")
-  "*String matching delimeter between method and user or host names.
-Applicable for single-hop methods.
-Used in `tramp-make-tramp-file-name'."
-  :group 'tramp
-  :type 'string)
-
-(defcustom tramp-postfix-single-method-regexp
-  (regexp-quote tramp-postfix-single-method-format)
-  "*Regexp matching delimeter between method and user or host names.
-Applicable for single-hop methods.
-Derived from `tramp-postfix-single-method-format'."
-  :group 'tramp
-  :type 'regexp)
+  "*Regexp matching methods identifiers.")
 
-(defcustom tramp-postfix-multi-method-format
-  ":"
+(defconst tramp-postfix-method-format
+  (cond ((equal tramp-syntax 'ftp) ":")
+       ((equal tramp-syntax 'sep) "/")
+       ((equal tramp-syntax 'url) "://")
+       (t (error "Wrong `tramp-syntax' defined")))
   "*String matching delimeter between method and user or host names.
-Applicable for multi-hop methods.
-Used in `tramp-make-tramp-multi-file-name'."
-  :group 'tramp
-  :type 'string)
+Used in `tramp-make-tramp-file-name'.")
 
-(defcustom tramp-postfix-multi-method-regexp
-  (regexp-quote tramp-postfix-multi-method-format)
+(defconst tramp-postfix-method-regexp
+  (regexp-quote tramp-postfix-method-format)
   "*Regexp matching delimeter between method and user or host names.
-Applicable for multi-hop methods.
-Derived from `tramp-postfix-multi-method-format'."
-  :group 'tramp
-  :type 'regexp)
-
-(defcustom tramp-postfix-multi-hop-format
-  (if tramp-unified-filenames ":" "/")
-  "*String matching delimeter between host and next method.
-Applicable for multi-hop methods.
-Used in `tramp-make-tramp-multi-file-name'."
-  :group 'tramp
-  :type 'string)
-
-(defcustom tramp-postfix-multi-hop-regexp
-  (regexp-quote tramp-postfix-multi-hop-format)
-  "*Regexp matching delimeter between host and next method.
-Applicable for multi-hop methods.
-Derived from `tramp-postfix-multi-hop-format'."
-  :group 'tramp
-  :type 'regexp)
+Derived from `tramp-postfix-method-format'.")
 
-(defcustom tramp-user-regexp
-  "[^:/ \t]*"
-  "*Regexp matching user names."
-  :group 'tramp
-  :type 'regexp)
+(defconst tramp-user-regexp
+  "[^:/ \t]+"
+  "*Regexp matching user names.")
 
-(defcustom tramp-postfix-user-format
+(defconst tramp-postfix-user-format
   "@"
   "*String matching delimeter between user and host names.
-Used in `tramp-make-tramp-file-name' and `tramp-make-tramp-multi-file-name'."
-  :group 'tramp
-  :type 'string)
+Used in `tramp-make-tramp-file-name'.")
 
-(defcustom tramp-postfix-user-regexp
+(defconst tramp-postfix-user-regexp
   (regexp-quote tramp-postfix-user-format)
   "*Regexp matching delimeter between user and host names.
-Derived from `tramp-postfix-user-format'."
-  :group 'tramp
-  :type 'regexp)
-
-(defcustom tramp-host-regexp
-  "[a-zA-Z0-9_.-]*"
-  "*Regexp matching host names."
-  :group 'tramp
-  :type 'regexp)
-
-(defcustom tramp-host-with-port-regexp
-  "[a-zA-Z0-9_.#-]*"
-  "*Regexp matching host names."
-  :group 'tramp
-  :type 'regexp)
-
-(defcustom tramp-postfix-host-format
-  (if tramp-unified-filenames ":" "]")
+Derived from `tramp-postfix-user-format'.")
+
+(defconst tramp-host-regexp
+  "[a-zA-Z0-9_.-]+"
+  "*Regexp matching host names.")
+
+(defconst tramp-prefix-port-format
+  (cond ((equal tramp-syntax 'ftp) "#")
+       ((equal tramp-syntax 'sep) "#")
+       ((equal tramp-syntax 'url) ":")
+       (t (error "Wrong `tramp-syntax' defined")))
+  "*String matching delimeter between host names and port numbers.")
+
+(defconst tramp-prefix-port-regexp
+  (regexp-quote tramp-prefix-port-format)
+  "*Regexp matching delimeter between host names and port numbers.
+Derived from `tramp-prefix-port-format'.")
+
+(defconst tramp-port-regexp
+  "[0-9]+"
+  "*Regexp matching port numbers.")
+
+(defconst tramp-host-with-port-regexp
+  (concat "\\(" tramp-host-regexp "\\)"
+               tramp-prefix-port-regexp
+         "\\(" tramp-port-regexp "\\)")
+  "*Regexp matching host names with port numbers.")
+
+(defconst tramp-postfix-host-format
+  (cond ((equal tramp-syntax 'ftp) ":")
+       ((equal tramp-syntax 'sep) "]")
+       ((equal tramp-syntax 'url) "")
+       (t (error "Wrong `tramp-syntax' defined")))
   "*String matching delimeter between host names and localnames.
-Used in `tramp-make-tramp-file-name' and `tramp-make-tramp-multi-file-name'."
-  :group 'tramp
-  :type 'string)
+Used in `tramp-make-tramp-file-name'.")
 
-(defcustom tramp-postfix-host-regexp
+(defconst tramp-postfix-host-regexp
   (regexp-quote tramp-postfix-host-format)
   "*Regexp matching delimeter between host names and localnames.
-Derived from `tramp-postfix-host-format'."
-  :group 'tramp
-  :type 'regexp)
+Derived from `tramp-postfix-host-format'.")
 
-(defcustom tramp-localname-regexp
+(defconst tramp-localname-regexp
   ".*$"
-  "*Regexp matching localnames."
-  :group 'tramp
-  :type 'regexp)
+  "*Regexp matching localnames.")
 
 ;; File name format.
 
-(defcustom tramp-file-name-structure
+(defconst tramp-file-name-structure
   (list
    (concat
     tramp-prefix-regexp
-    "\\(" "\\(" tramp-method-regexp "\\)" tramp-postfix-single-method-regexp "\\)?"
-    "\\(" "\\(" tramp-user-regexp "\\)" tramp-postfix-user-regexp   "\\)?"
-          "\\(" tramp-host-with-port-regexp "\\)" tramp-postfix-host-regexp
-         "\\(" tramp-localname-regexp "\\)")
-   2 4 5 6)
+    "\\(" "\\(" tramp-method-regexp "\\)" tramp-postfix-method-regexp "\\)?"
+    "\\(" "\\(" tramp-user-regexp "\\)"   tramp-postfix-user-regexp   "\\)?"
+    "\\(" tramp-host-regexp
+          "\\(" tramp-prefix-port-regexp  tramp-port-regexp "\\)?" "\\)?"
+    tramp-postfix-host-regexp
+    "\\(" tramp-localname-regexp "\\)")
+   2 4 5 7)
 
   "*List of five elements (REGEXP METHOD USER HOST FILE), detailing \
 the tramp file name structure.
@@ -1195,69 +1234,81 @@ but for the host name.  The fifth element FILE is for the file name.
 These numbers are passed directly to `match-string', which see.  That
 means the opening parentheses are counted to identify the pair.
 
-See also `tramp-file-name-regexp'."
-  :group 'tramp
-  :type '(list (regexp :tag "File name regexp")
-               (integer :tag "Paren pair for method name")
-               (integer :tag "Paren pair for user name  ")
-               (integer :tag "Paren pair for host name  ")
-               (integer :tag "Paren pair for file name  ")))
+See also `tramp-file-name-regexp'.")
 
 ;;;###autoload
 (defconst tramp-file-name-regexp-unified
   "\\`/[^/:]+:"
   "Value for `tramp-file-name-regexp' for unified remoting.
 Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and
-Tramp.  See `tramp-file-name-structure-unified' for more explanations.")
+Tramp.  See `tramp-file-name-structure' for more explanations.")
 
 ;;;###autoload
 (defconst tramp-file-name-regexp-separate
   "\\`/\\[.*\\]"
   "Value for `tramp-file-name-regexp' for separate remoting.
 XEmacs uses a separate filename syntax for Tramp and EFS.
-See `tramp-file-name-structure-separate' for more explanations.")
+See `tramp-file-name-structure' for more explanations.")
+
+;;;###autoload
+(defconst tramp-file-name-regexp-url
+  "\\`/[^/:]+://"
+  "Value for `tramp-file-name-regexp' for URL-like remoting.
+See `tramp-file-name-structure' for more explanations.")
 
 ;;;###autoload
-(defcustom tramp-file-name-regexp
-  (if tramp-unified-filenames
-      tramp-file-name-regexp-unified
-    tramp-file-name-regexp-separate)
-  "*Regular expression matching file names handled by tramp.
+(defconst tramp-file-name-regexp
+  (cond ((equal tramp-syntax 'ftp) tramp-file-name-regexp-unified)
+       ((equal tramp-syntax 'sep) tramp-file-name-regexp-separate)
+       ((equal tramp-syntax 'url) tramp-file-name-regexp-url)
+       (t (error "Wrong `tramp-syntax' defined")))
+  "*Regular expression matching file names handled by Tramp.
 This regexp should match tramp file names but no other file names.
 \(When tramp.el is loaded, this regular expression is prepended to
 `file-name-handler-alist', and that is searched sequentially.  Thus,
 if the tramp entry appears rather early in the `file-name-handler-alist'
 and is a bit too general, then some files might be considered tramp
-files which are not really tramp files.
+files which are not really Tramp files.
 
 Please note that the entry in `file-name-handler-alist' is made when
 this file (tramp.el) is loaded.  This means that this variable must be set
 before loading tramp.el.  Alternatively, `file-name-handler-alist' can be
 updated after changing this variable.
 
-Also see `tramp-file-name-structure'."
-  :group 'tramp
-  :type 'regexp)
+Also see `tramp-file-name-structure'.")
 
 ;;;###autoload
 (defconst tramp-completion-file-name-regexp-unified
-  "^/$\\|^/[^/:][^/]*$"
+  (if (memq system-type '(cygwin windows-nt))
+      "^\\([a-zA-Z]:\\)?/$\\|^\\([a-zA-Z]:\\)?/[^/:][^/]*$"
+    "^/$\\|^/[^/:][^/]*$")
   "Value for `tramp-completion-file-name-regexp' for unified remoting.
 Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and
-Tramp.  See `tramp-file-name-structure-unified' for more explanations.")
+Tramp.  See `tramp-file-name-structure' for more explanations.")
 
 ;;;###autoload
 (defconst tramp-completion-file-name-regexp-separate
-  "^/\\([[][^]]*\\)?$"
+  (if (memq system-type '(cygwin windows-nt))
+      "^\\([a-zA-Z]:\\)?/\\([[][^]]*\\)?$"
+    "^/\\([[][^]]*\\)?$")
   "Value for `tramp-completion-file-name-regexp' for separate remoting.
 XEmacs uses a separate filename syntax for Tramp and EFS.
-See `tramp-file-name-structure-separate' for more explanations.")
+See `tramp-file-name-structure' for more explanations.")
+
+;;;###autoload
+(defconst tramp-completion-file-name-regexp-url
+  (if (memq system-type '(cygwin windows-nt))
+      "^\\([a-zA-Z]:\\)?/$\\|^\\([a-zA-Z]:\\)?/[^/:]+\\(:\\(/\\(/[^/]*\\)?\\)?\\)?$"
+    "^/$\\|^/[^/:]+\\(:\\(/\\(/[^/]*\\)?\\)?\\)?$")
+  "Value for `tramp-completion-file-name-regexp' for URL-like remoting.
+See `tramp-file-name-structure' for more explanations.")
 
 ;;;###autoload
-(defcustom tramp-completion-file-name-regexp
-  (if tramp-unified-filenames
-      tramp-completion-file-name-regexp-unified
-    tramp-completion-file-name-regexp-separate)
+(defconst tramp-completion-file-name-regexp
+  (cond ((equal tramp-syntax 'ftp) tramp-completion-file-name-regexp-unified)
+       ((equal tramp-syntax 'sep) tramp-completion-file-name-regexp-separate)
+       ((equal tramp-syntax 'url) tramp-completion-file-name-regexp-url)
+       (t (error "Wrong `tramp-syntax' defined")))
   "*Regular expression matching file names handled by tramp completion.
 This regexp should match partial tramp file names only.
 
@@ -1266,121 +1317,14 @@ this file (tramp.el) is loaded.  This means that this variable must be set
 before loading tramp.el.  Alternatively, `file-name-handler-alist' can be
 updated after changing this variable.
 
-Also see `tramp-file-name-structure'."
-  :group 'tramp
-  :type 'regexp)
-
-(defcustom tramp-multi-file-name-structure
-  (list
-   (concat
-    tramp-prefix-regexp
-    "\\(" "\\(" tramp-method-regexp "\\)" "\\)?"
-    "\\(" "\\(" tramp-postfix-multi-hop-regexp "%s" "\\)+" "\\)?"
-    tramp-postfix-host-regexp "\\(" tramp-localname-regexp "\\)")
-   2 3 -1)
-  "*Describes the file name structure of `multi' files.
-Multi files allow you to contact a remote host in several hops.
-This is a list of four elements (REGEXP METHOD HOP LOCALNAME).
-
-The first element, REGEXP, gives a regular expression to match against
-the file name.  In this regular expression, `%s' is replaced with the
-value of `tramp-multi-file-name-hop-structure'.  (Note: in order to
-allow multiple hops, you normally want to use something like
-\"\\\\(\\\\(%s\\\\)+\\\\)\" in the regular expression.  The outer pair
-of parentheses is used for the HOP element, see below.)
-
-All remaining elements are numbers.  METHOD gives the number of the
-paren pair which matches the method name.  HOP gives the number of the
-paren pair which matches the hop sequence.  LOCALNAME gives the number of
-the paren pair which matches the localname (pathname) on the remote host.
-
-LOCALNAME can also be negative, which means to count from the end.  Ie, a
-value of -1 means the last paren pair.
-
-I think it would be good if the regexp matches the whole of the
-string, but I haven't actually tried what happens if it doesn't..."
-  :group 'tramp
-  :type '(list (regexp :tag "File name regexp")
-               (integer :tag "Paren pair for method name")
-               (integer :tag "Paren pair for hops")
-               (integer :tag "Paren pair to match localname")))
-
-(defcustom tramp-multi-file-name-hop-structure
-  (list
-   (concat
-    "\\(" tramp-method-regexp "\\)" tramp-postfix-multi-method-regexp
-    "\\(" tramp-user-regexp "\\)" tramp-postfix-user-regexp
-    "\\(" tramp-host-with-port-regexp "\\)")
-   1 2 3)
-  "*Describes the structure of a hop in multi files.
-This is a list of four elements (REGEXP METHOD USER HOST).  First
-element REGEXP is used to match against the hop.  Pair number METHOD
-matches the method of one hop, pair number USER matches the user of
-one hop, pair number HOST matches the host of one hop.
-
-This regular expression should match exactly all of one hop."
-  :group 'tramp
-  :type '(list (regexp :tag "Hop regexp")
-               (integer :tag "Paren pair for method name")
-               (integer :tag "Paren pair for user name")
-               (integer :tag "Paren pair for host name")))
-
-(defcustom tramp-make-multi-tramp-file-format
-  (list
-   (concat tramp-prefix-format "%m")
-   (concat tramp-postfix-multi-hop-format
-    "%m" tramp-postfix-multi-method-format
-    "%u" tramp-postfix-user-format
-    "%h")
-   (concat tramp-postfix-host-format "%p"))
-  "*Describes how to construct a `multi' file name.
-This is a list of three elements PREFIX, HOP and LOCALNAME.
-
-The first element PREFIX says how to construct the prefix, the second
-element HOP specifies what each hop looks like, and the final element
-LOCALNAME says how to construct the localname (pathname).
-
-In PREFIX, `%%' means `%' and `%m' means the method name.
-
-In HOP, `%%' means `%' and `%m', `%u', `%h' mean the hop method, hop
-user and hop host, respectively.
-
-In LOCALNAME, `%%' means `%' and `%p' means the localname.
+Also see `tramp-file-name-structure'.")
 
-The resulting file name always contains one copy of PREFIX and one
-copy of LOCALNAME, but there is one copy of HOP for each hop in the file
-name.
-
-Note: the current implementation requires the prefix to contain the
-method name, followed by all the hops, and the localname must come
-last."
-  :group 'tramp
-  :type '(list string string string))
-
-(defcustom tramp-terminal-type "dumb"
-  "*Value of TERM environment variable for logging in to remote host.
-Because Tramp wants to parse the output of the remote shell, it is easily
-confused by ANSI color escape sequences and suchlike.  Often, shell init
-files conditionalize this setup based on the TERM environment variable."
-  :group 'tramp
-  :type 'string)
-
-(defcustom tramp-completion-without-shell-p nil
-  "*If nil, use shell wildcards for completion, else rely on Lisp only.
-Using shell wildcards for completions has the advantage that it can be
-fast even in large directories, but completion is always
-case-sensitive.  Relying on Lisp only means that case-insensitive
-completion is possible (subject to the variable `completion-ignore-case'),
-but it might be slow on large directories."
-  :group 'tramp
-  :type 'boolean)
-
-(defcustom tramp-actions-before-shell
-  '((tramp-password-prompt-regexp tramp-action-password)
-    (tramp-login-prompt-regexp tramp-action-login)
+(defconst tramp-actions-before-shell
+  '((tramp-login-prompt-regexp tramp-action-login)
+    (tramp-password-prompt-regexp tramp-action-password)
+    (tramp-wrong-passwd-regexp tramp-action-permission-denied)
     (shell-prompt-pattern tramp-action-succeed)
     (tramp-shell-prompt-pattern tramp-action-succeed)
-    (tramp-wrong-passwd-regexp tramp-action-permission-denied)
     (tramp-yesno-prompt-regexp tramp-action-yesno)
     (tramp-yn-prompt-regexp tramp-action-yn)
     (tramp-terminal-prompt-regexp tramp-action-terminal)
@@ -1395,51 +1339,19 @@ regexp must match at the end of the buffer, \"\\'\" is implicitly
 appended to it.
 
 The ACTION should also be a symbol, but a function.  When the
-corresponding PATTERN matches, the ACTION function is called."
-  :group 'tramp
-  :type '(repeat (list variable function)))
+corresponding PATTERN matches, the ACTION function is called.")
 
-(defcustom tramp-actions-copy-out-of-band
+(defconst tramp-actions-copy-out-of-band
   '((tramp-password-prompt-regexp tramp-action-password)
     (tramp-wrong-passwd-regexp tramp-action-permission-denied)
-    (tramp-copy-failed-regexp tramp-action-copy-failed)
+    (tramp-copy-failed-regexp tramp-action-permission-denied)
     (tramp-process-alive-regexp tramp-action-out-of-band))
   "List of pattern/action pairs.
 This list is used for copying/renaming with out-of-band methods.
-See `tramp-actions-before-shell' for more info."
-  :group 'tramp
-  :type '(repeat (list variable function)))
-
-(defcustom tramp-multi-actions
-  '((tramp-password-prompt-regexp tramp-multi-action-password)
-    (tramp-login-prompt-regexp tramp-multi-action-login)
-    (shell-prompt-pattern tramp-multi-action-succeed)
-    (tramp-shell-prompt-pattern tramp-multi-action-succeed)
-    (tramp-wrong-passwd-regexp tramp-multi-action-permission-denied)
-    (tramp-process-alive-regexp tramp-multi-action-process-alive))
-  "List of pattern/action pairs.
-This list is used for each hop in multi-hop connections.
-See `tramp-actions-before-shell' for more info."
-  :group 'tramp
-  :type '(repeat (list variable function)))
-
-(defcustom tramp-initial-commands
-  '("unset HISTORY"
-    "unset correct"
-    "unset autocorrect")
-  "List of commands to send to the first remote shell that we see.
-These commands will be sent to any shell, and thus they should be
-designed to work in such circumstances.  Also, restrict the commands
-to the bare necessity for getting the remote shell into a state
-where it is possible to execute the Bourne-ish shell.
-
-At the moment, the command to execute the Bourne-ish shell uses strange
-quoting which `tcsh' tries to correct, so we send the command \"unset
-autocorrect\" to the remote host."
-  :group 'tramp
-  :type '(repeat string))
 
-;; Chunked sending kluge.  We set this to 500 for black-listed constellations
+See `tramp-actions-before-shell' for more info.")
+
+;; Chunked sending kludge.  We set this to 500 for black-listed constellations
 ;; known to have a bug in `process-send-string'; some ssh connections appear
 ;; to drop bytes when data is sent too quickly.  There is also a connection
 ;; buffer local variable, which is computed depending on remote host properties
@@ -1495,16 +1407,16 @@ You will see the number of bytes sent successfully to the remote host.
 If that number exceeds 1000, you can stop the execution by hitting
 C-g, because your Emacs is likely clean.
 
-If your Emacs is buggy, the code stops and gives you an indication
-about the value `tramp-chunksize' should be set.  Maybe you could just
-experiment a bit, e.g. changing the values of `init' and `step'
-in the third line of the code.
-
 When it is necessary to set `tramp-chunksize', you might consider to
 use an out-of-the-band method (like \"scp\") instead of an internal one
 \(like \"ssh\"), because setting `tramp-chunksize' to non-nil decreases
 performance.
 
+If your Emacs is buggy, the code stops and gives you an indication
+about the value `tramp-chunksize' should be set.  Maybe you could just
+experiment a bit, e.g. changing the values of `init' and `step'
+in the third line of the code.
+
 Please raise a bug report via \"M-x tramp-bug\" if your system needs
 this variable to be set as well."
   :group 'tramp
@@ -1523,144 +1435,25 @@ opening a connection to a remote host."
 
 ;;; Internal Variables:
 
-(defvar tramp-buffer-file-attributes nil
-  "Holds the `ls -ild' output for the current buffer.
-This variable is local to each buffer.  It is not used if the remote
-machine groks Perl.  If it is used, it's used as an emulation for
-the visited file modtime.")
-(make-variable-buffer-local 'tramp-buffer-file-attributes)
-
-(defvar tramp-md5-function
-  (cond ((and (require 'md5) (fboundp 'md5)) 'md5)
-       ((fboundp 'md5-encode)
-        (lambda (x) (base64-encode-string
-                     (funcall (symbol-function 'md5-encode) x))))
-       (t (error "Couldn't find an `md5' function")))
-  "Function to call for running the MD5 algorithm.")
-
 (defvar tramp-end-of-output
-  (concat "///"
-         (funcall tramp-md5-function
-                  (concat
-                   (prin1-to-string process-environment)
-                   (current-time-string)
-;;                 (prin1-to-string
-;;                  (if (fboundp 'directory-files-and-attributes)
-;;                      (funcall 'directory-files-and-attributes
-;;                               (or (getenv "HOME")
-;;                                   (tramp-temporary-file-directory)))
-;;                    (mapcar
-;;                     (lambda (x)
-;;                       (cons x (file-attributes x)))
-;;                     (directory-files (or (getenv "HOME")
-;;                                          (tramp-temporary-file-directory))
-;;                                      t))))
-                   )))
+  (concat
+   "///" (md5 (concat
+              (prin1-to-string process-environment) (current-time-string))))
   "String used to recognize end of output.")
 
-(defvar tramp-connection-function nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-remote-sh nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-login-program nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-login-args nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-copy-program nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-copy-args nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-copy-keep-date-arg nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-encoding-command nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-decoding-command nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-encoding-function nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-decoding-function nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-(defvar tramp-password-end-of-line nil
-  "This internal variable holds a parameter for `tramp-methods'.
-In the connection buffer, this variable has the value of the like-named
-method parameter, as specified in `tramp-methods' (which see).")
-
-;; CCC `local in each buffer'?
-(defvar tramp-ls-command nil
-  "This command is used to get a long listing with numeric user and group ids.
-This variable is automatically made buffer-local to each rsh process buffer
-upon opening the connection.")
-
-(defvar tramp-current-multi-method nil
-  "Name of `multi' connection method for this *tramp* buffer, or nil if not multi.
-This variable is automatically made buffer-local to each rsh process buffer
-upon opening the connection.")
-
 (defvar tramp-current-method nil
-  "Connection method for this *tramp* buffer.
-This variable is automatically made buffer-local to each rsh process buffer
-upon opening the connection.")
+  "Connection method for this *tramp* buffer.")
 
 (defvar tramp-current-user nil
-  "Remote login name for this *tramp* buffer.
-This variable is automatically made buffer-local to each rsh process buffer
-upon opening the connection.")
+  "Remote login name for this *tramp* buffer.")
 
 (defvar tramp-current-host nil
-  "Remote host for this *tramp* buffer.
-This variable is automatically made buffer-local to each rsh process buffer
-upon opening the connection.")
-
-(defvar tramp-test-groks-nt nil
-  "Whether the `test' command groks the `-nt' switch.
-\(`test A -nt B' tests if file A is newer than file B.)
-This variable is automatically made buffer-local to each rsh process buffer
-upon opening the connection.")
-
-(defvar tramp-file-exists-command nil
-  "Command to use for checking if a file exists.
-This variable is automatically made buffer-local to each rsh process buffer
-upon opening the connection.")
-
-(defconst tramp-uudecode "\
-tramp_uudecode () {
-\(echo begin 600 /tmp/tramp.$$; tail +2) | uudecode
+  "Remote host for this *tramp* buffer.")
+
+(defconst tramp-uudecode
+  "(echo begin 600 /tmp/tramp.$$; tail +2) | uudecode
 cat /tmp/tramp.$$
-rm -f /tmp/tramp.$$
-}"
+rm -f /tmp/tramp.$$"
   "Shell function to implement `uudecode' to standard output.
 Many systems support `uudecode -o /dev/stdout' or `uudecode -o -'
 for this or `uudecode -p', but some systems don't, and for them
@@ -1672,7 +1465,8 @@ we have this shell function.")
 ;; end.
 ;; The device number is returned as "-1", because there will be a virtual
 ;; device number set in `tramp-handle-file-attributes'
-(defconst tramp-perl-file-attributes "\
+(defconst tramp-perl-file-attributes
+  "%s -e '
 @stat = lstat($ARGV[0]);
 if (($stat[2] & 0170000) == 0120000)
 {
@@ -1690,7 +1484,7 @@ else
 $uid = ($ARGV[1] eq \"integer\") ? $stat[4] : \"\\\"\" . getpwuid($stat[4]) . \"\\\"\";
 $gid = ($ARGV[1] eq \"integer\") ? $stat[5] : \"\\\"\" . getgrgid($stat[5]) . \"\\\"\";
 printf(
-    \"(%s %u %s %s (%u %u) (%u %u) (%u %u) %u %u t (%u . %u) -1)\\n\",
+    \"(%%s %%u %%s %%s (%%u %%u) (%%u %%u) (%%u %%u) %%u.0 %%u t (%%u . %%u) -1)\\n\",
     $type,
     $stat[3],
     $uid,
@@ -1705,11 +1499,14 @@ printf(
     $stat[2],
     $stat[1] >> 16 & 0xffff,
     $stat[1] & 0xffff
-);"
+);' \"$1\" \"$2\" \"$3\" 2>/dev/null"
   "Perl script to produce output suitable for use with `file-attributes'
-on the remote file system.")
+on the remote file system.
+Escape sequence %s is replaced with name of Perl binary.
+This string is passed to `format', so percent characters need to be doubled.")
 
-(defconst tramp-perl-directory-files-and-attributes "\
+(defconst tramp-perl-directory-files-and-attributes
+  "%s -e '
 chdir($ARGV[0]) or printf(\"\\\"Cannot change to $ARGV[0]: $''!''\\\"\\n\"), exit();
 opendir(DIR,\".\") or printf(\"\\\"Cannot open directory $ARGV[0]: $''!''\\\"\\n\"), exit();
 @list = readdir(DIR);
@@ -1736,7 +1533,7 @@ for($i = 0; $i < $n; $i++)
     $uid = ($ARGV[1] eq \"integer\") ? $stat[4] : \"\\\"\" . getpwuid($stat[4]) . \"\\\"\";
     $gid = ($ARGV[1] eq \"integer\") ? $stat[5] : \"\\\"\" . getgrgid($stat[5]) . \"\\\"\";
     printf(
-        \"(\\\"%s\\\" %s %u %s %s (%u %u) (%u %u) (%u %u) %u %u t (%u . %u) (%u %u))\\n\",
+        \"(\\\"%%s\\\" %%s %%u %%s %%s (%%u %%u) (%%u %%u) (%%u %%u) %%u.0 %%u t (%%u . %%u) (%%u %%u))\\n\",
         $filename,
         $type,
         $stat[3],
@@ -1755,9 +1552,11 @@ for($i = 0; $i < $n; $i++)
         $stat[0] >> 16 & 0xffff,
         $stat[0] & 0xffff);
 }
-printf(\")\\n\");"
+printf(\")\\n\");' \"$1\" \"$2\" \"$3\" 2>/dev/null"
   "Perl script implementing `directory-files-attributes' as Lisp `read'able
-output.")
+output.
+Escape sequence %s is replaced with name of Perl binary.
+This string is passed to `format', so percent characters need to be doubled.")
 
 ;; ;; These two use uu encoding.
 ;; (defvar tramp-perl-encode "%s -e'\
@@ -1780,25 +1579,25 @@ output.")
 ;; Escape sequence %s is replaced with name of Perl binary.")
 
 ;; These two use base64 encoding.
-(defvar tramp-perl-encode-with-module
-  "perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)'"
+(defconst tramp-perl-encode-with-module
+  "%s -MMIME::Base64 -0777 -ne 'print encode_base64($_)' 2>/dev/null"
   "Perl program to use for encoding a file.
 Escape sequence %s is replaced with name of Perl binary.
 This string is passed to `format', so percent characters need to be doubled.
 This implementation requires the MIME::Base64 Perl module to be installed
 on the remote host.")
 
-(defvar tramp-perl-decode-with-module
-  "perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)'"
+(defconst tramp-perl-decode-with-module
+  "%s -MMIME::Base64 -0777 -ne 'print decode_base64($_)' 2>/dev/null"
   "Perl program to use for decoding a file.
 Escape sequence %s is replaced with name of Perl binary.
 This string is passed to `format', so percent characters need to be doubled.
 This implementation requires the MIME::Base64 Perl module to be installed
 on the remote host.")
 
-(defvar tramp-perl-encode
+(defconst tramp-perl-encode
   "%s -e '
-# This script contributed by Juanma Barranquero <lektu@terra.es>.
+# This script is contributed by Juanma Barranquero <lektu@terra.es>.
 # Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
 #   Free Software Foundation, Inc.
 use strict;
@@ -1833,15 +1632,14 @@ while (my $data = <STDIN>) {
             (substr(unpack(q(B*), $data) . q(00000), 0, 432) =~ /....../g)),
               $pad,
                 qq(\\n);
-}
-'"
+}' 2>/dev/null"
   "Perl program to use for encoding a file.
 Escape sequence %s is replaced with name of Perl binary.
 This string is passed to `format', so percent characters need to be doubled.")
 
-(defvar tramp-perl-decode
+(defconst tramp-perl-decode
   "%s -e '
-# This script contributed by Juanma Barranquero <lektu@terra.es>.
+# This script is contributed by Juanma Barranquero <lektu@terra.es>.
 # Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
 #   Free Software Foundation, Inc.
 use strict;
@@ -1879,68 +1677,35 @@ while (my $data = <STDIN>) {
         ((join q(), map {$trans{$_} || q()} split //, $chunk) =~ /......../g);
 
     last if $finished;
-}
-'"
+}' 2>/dev/null"
   "Perl program to use for decoding a file.
 Escape sequence %s is replaced with name of Perl binary.
 This string is passed to `format', so percent characters need to be doubled.")
 
-(defconst tramp-file-mode-type-map '((0  . "-")  ; Normal file (SVID-v2 and XPG2)
-                                    (1  . "p")  ; fifo
-                                    (2  . "c")  ; character device
-                                    (3  . "m")  ; multiplexed character device (v7)
-                                    (4  . "d")  ; directory
-                                    (5  . "?")  ; Named special file (XENIX)
-                                    (6  . "b")  ; block device
-                                    (7  . "?")  ; multiplexed block device (v7)
-                                    (8  . "-")  ; regular file
-                                    (9  . "n")  ; network special file (HP-UX)
-                                    (10 . "l")  ; symlink
-                                    (11 . "?")  ; ACL shadow inode (Solaris, not userspace)
-                                    (12 . "s")  ; socket
-                                    (13 . "D")  ; door special (Solaris)
-                                    (14 . "w")) ; whiteout (BSD)
+(defconst tramp-file-mode-type-map
+  '((0  . "-")  ; Normal file (SVID-v2 and XPG2)
+    (1  . "p")  ; fifo
+    (2  . "c")  ; character device
+    (3  . "m")  ; multiplexed character device (v7)
+    (4  . "d")  ; directory
+    (5  . "?")  ; Named special file (XENIX)
+    (6  . "b")  ; block device
+    (7  . "?")  ; multiplexed block device (v7)
+    (8  . "-")  ; regular file
+    (9  . "n")  ; network special file (HP-UX)
+    (10 . "l")  ; symlink
+    (11 . "?")  ; ACL shadow inode (Solaris, not userspace)
+    (12 . "s")  ; socket
+    (13 . "D")  ; door special (Solaris)
+    (14 . "w")) ; whiteout (BSD)
   "A list of file types returned from the `stat' system call.
 This is used to map a mode number to a permission string.")
 
-(defvar tramp-dos-coding-system
-  (if (and (fboundp 'coding-system-p)
-           (funcall 'coding-system-p '(dos)))
-      'dos
-    'undecided-dos)
-  "Some Emacsen know the `dos' coding system, others need `undecided-dos'.")
-
-(defvar tramp-last-cmd nil
-  "Internal Tramp variable recording the last command sent.
-This variable is buffer-local in every buffer.")
-(make-variable-buffer-local 'tramp-last-cmd)
-
-(defvar tramp-process-echoes nil
-  "Whether to process echoes from the remote shell.")
-
-(defvar tramp-last-cmd-time nil
-  "Internal Tramp variable recording the time when the last cmd was sent.
-This variable is buffer-local in every buffer.")
-(make-variable-buffer-local 'tramp-last-cmd-time)
-
-;; This variable does not have the right value in XEmacs.  What should
-;; I use instead of find-operation-coding-system in XEmacs?
-(defvar tramp-feature-write-region-fix
-  (when (fboundp 'find-operation-coding-system)
-    (let ((file-coding-system-alist '(("test" emacs-mule))))
-      (funcall (symbol-function 'find-operation-coding-system)
-              'write-region 0 0 "" nil "test")))
-    "Internal variable to say if `write-region' chooses the right coding.
-Older versions of Emacs chose the coding system for `write-region' based
-on the FILENAME argument, even if VISIT was a string.")
-
 ;; New handlers should be added here.  The following operations can be
 ;; handled using the normal primitives: file-name-as-directory,
-;; file-name-directory, file-name-nondirectory,
 ;; file-name-sans-versions, get-file-buffer.
 (defconst tramp-file-name-handler-alist
-  '(
-    (load . tramp-handle-load)
+  '((load . tramp-handle-load)
     (make-symbolic-link . tramp-handle-make-symbolic-link)
     (file-name-directory . tramp-handle-file-name-directory)
     (file-name-nondirectory . tramp-handle-file-name-nondirectory)
@@ -1948,7 +1713,6 @@ on the FILENAME argument, even if VISIT was a string.")
     (file-exists-p . tramp-handle-file-exists-p)
     (file-directory-p . tramp-handle-file-directory-p)
     (file-executable-p . tramp-handle-file-executable-p)
-    (file-accessible-directory-p . tramp-handle-file-accessible-directory-p)
     (file-readable-p . tramp-handle-file-readable-p)
     (file-regular-p . tramp-handle-file-regular-p)
     (file-symlink-p . tramp-handle-file-symlink-p)
@@ -1965,23 +1729,29 @@ on the FILENAME argument, even if VISIT was a string.")
     (copy-file . tramp-handle-copy-file)
     (rename-file . tramp-handle-rename-file)
     (set-file-modes . tramp-handle-set-file-modes)
+    (set-file-times . tramp-handle-set-file-times)
     (make-directory . tramp-handle-make-directory)
     (delete-directory . tramp-handle-delete-directory)
     (delete-file . tramp-handle-delete-file)
     (directory-file-name . tramp-handle-directory-file-name)
-    (shell-command . tramp-handle-shell-command)
+    ;; `executable-find' is not official yet.
+    (executable-find . tramp-handle-executable-find)
+    (start-file-process . tramp-handle-start-file-process)
     (process-file . tramp-handle-process-file)
+    (shell-command . tramp-handle-shell-command)
     (insert-directory . tramp-handle-insert-directory)
     (expand-file-name . tramp-handle-expand-file-name)
+    (substitute-in-file-name . tramp-handle-substitute-in-file-name)
     (file-local-copy . tramp-handle-file-local-copy)
     (file-remote-p . tramp-handle-file-remote-p)
     (insert-file-contents . tramp-handle-insert-file-contents)
+    (insert-file-contents-literally
+     . tramp-handle-insert-file-contents-literally)
     (write-region . tramp-handle-write-region)
     (find-backup-file-name . tramp-handle-find-backup-file-name)
     (make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
     (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
     (dired-compress-file . tramp-handle-dired-compress-file)
-    (dired-call-process . tramp-handle-dired-call-process)
     (dired-recursive-delete-directory
      . tramp-handle-dired-recursive-delete-directory)
     (set-visited-file-modtime . tramp-handle-set-visited-file-modtime)
@@ -2011,46 +1781,115 @@ calling HANDLER.")
 
 ;;; Internal functions which must come first.
 
-(defsubst tramp-message (level fmt-string &rest args)
+(defsubst tramp-debug-message (vec fmt-string &rest args)
+  "Append message to debug buffer.
+Message is formatted with FMT-STRING as control string and the remaining
+ARGS to actually emit the message (if applicable)."
+  (when (get-buffer (tramp-buffer-name vec))
+    (with-current-buffer (tramp-get-debug-buffer vec)
+      (goto-char (point-max))
+      (unless (bolp)
+       (insert "\n"))
+      ;; Timestamp
+      (insert (format-time-string "%T "))
+      ;; Calling function
+      (let ((btn 1) btf fn)
+       (while (not fn)
+         (setq btf (nth 1 (backtrace-frame btn)))
+         (if (not btf)
+             (setq fn "")
+           (when (symbolp btf)
+             (setq fn (symbol-name btf))
+             (unless (and (string-match "^tramp" fn)
+                          (not (string-match
+                                "^tramp\\(-debug\\)?\\(-message\\|-error\\)$"
+                                fn)))
+               (setq fn nil)))
+           (setq btn (1+ btn))))
+       ;; The following code inserts filename and line number.
+       ;; Should be deactivated by default, because it is time
+       ;; consuming.
+;      (let ((ffn (find-function-noselect (intern fn))))
+;        (insert
+;         (format
+;          "%s:%d: "
+;          (file-name-nondirectory (buffer-file-name (car ffn)))
+;          (with-current-buffer (car ffn)
+;            (1+ (count-lines (point-min) (cdr ffn)))))))
+       (insert (format "%s " fn)))
+      ;; The message
+      (insert (apply 'format fmt-string args)))))
+
+(defsubst tramp-message (vec-or-proc level fmt-string &rest args)
   "Emit a message depending on verbosity level.
-First arg LEVEL says to be quiet if `tramp-verbose' is less than LEVEL.  The
-message is emitted only if `tramp-verbose' is greater than or equal to LEVEL.
-Calls function `message' with FMT-STRING as control string and the remaining
-ARGS to actually emit the message (if applicable).
-
-This function expects to be called from the tramp buffer only!"
-  (when (<= level tramp-verbose)
-    (apply #'message (concat "tramp: " fmt-string) args)
-    (when tramp-debug-buffer
-      (save-excursion
-        (set-buffer
-         (tramp-get-debug-buffer
-         tramp-current-multi-method tramp-current-method
-         tramp-current-user tramp-current-host))
-        (goto-char (point-max))
-       (unless (bolp)
-         (insert "\n"))
-       (tramp-insert-with-face
-         'italic
-         (concat "# " (apply #'format fmt-string args) "\n"))))))
-
-(defun tramp-message-for-buffer
-  (multi-method method user host level fmt-string &rest args)
-  "Like `tramp-message' but temporarily switches to the tramp buffer.
-First three args METHOD, USER, and HOST identify the tramp buffer to use,
-remaining args passed to `tramp-message'."
-  (save-excursion
-    (set-buffer (tramp-get-buffer multi-method method user host))
-    (apply 'tramp-message level fmt-string args)))
+VEC-OR-PROC identifies the tramp buffer to use.  It can be either a
+vector or a process.  LEVEL says to be quiet if `tramp-verbose' is
+less than LEVEL.  The message is emitted only if `tramp-verbose' is
+greater than or equal to LEVEL.
+
+The message is also logged into the debug buffer when `tramp-verbose'
+is greater than or equal 4.
+
+Calls functions `message' and `tramp-debug-message' with FMT-STRING as
+control string and the remaining ARGS to actually emit the message (if
+applicable)."
+  (condition-case nil
+      (when (<= level tramp-verbose)
+       ;; Match data must be preserved!
+       (save-match-data
+         ;; Display only when there is a minimum level.
+         (when (<= level 3)
+           (apply 'message
+                  (concat
+                   (cond
+                    ((= level 0) "")
+                    ((= level 1) "")
+                    ((= level 2) "Warning: ")
+                    (t           "Tramp: "))
+                   fmt-string)
+                  args))
+         ;; Log only when there is a minimum level.
+         (when (>= tramp-verbose 4)
+           (when (and vec-or-proc
+                      (processp vec-or-proc)
+                      (buffer-name (process-buffer vec-or-proc)))
+             (with-current-buffer (process-buffer vec-or-proc)
+               ;; Translate proc to vec.
+               (setq vec-or-proc (tramp-dissect-file-name default-directory))))
+           (when (and vec-or-proc (vectorp vec-or-proc))
+             (apply 'tramp-debug-message
+                    vec-or-proc
+                    (concat (format "(%d) # " level) fmt-string)
+                    args)))))
+    ;; Suppress all errors.
+    (error nil)))
 
-(defsubst tramp-line-end-position nil
-  "Return point at end of line.
-Calls `line-end-position' or `point-at-eol' if defined, else
-own implementation."
-  (cond
-   ((fboundp 'line-end-position) (funcall (symbol-function 'line-end-position)))
-   ((fboundp 'point-at-eol)     (funcall (symbol-function 'point-at-eol)))
-   (t (save-excursion (end-of-line) (point)))))
+(defsubst tramp-error (vec-or-proc signal fmt-string &rest args)
+  "Emit an error.
+VEC-OR-PROC identifies the connection to use, SIGNAL is the
+signal identifier to be raised, remaining args passed to
+`tramp-message'.  Finally, signal SIGNAL is raised."
+  (tramp-message
+   vec-or-proc 1 "%s"
+   (error-message-string
+    (list signal (get signal 'error-message) (apply 'format fmt-string args))))
+  (signal signal (list (apply 'format fmt-string args))))
+
+(defsubst tramp-error-with-buffer
+  (buffer vec-or-proc signal fmt-string &rest args)
+  "Emit an error, and show BUFFER.
+If BUFFER is nil, show the connection buffer.  Wait for 30\", or until
+an input event arrives.  The other arguments are passed to `tramp-error'."
+  (save-window-excursion
+    (unwind-protect
+       (apply 'tramp-error vec-or-proc signal fmt-string args)
+      (when (and vec-or-proc (not (zerop tramp-verbose)))
+       (let ((enable-recursive-minibuffers t))
+         (pop-to-buffer
+          (or (and (bufferp buffer) buffer)
+              (and (processp vec-or-proc) (process-buffer vec-or-proc))
+              (tramp-get-buffer vec-or-proc)))
+         (sit-for 30))))))
 
 (defmacro with-parsed-tramp-file-name (filename var &rest body)
   "Parse a Tramp filename and make components available in the body.
@@ -2059,18 +1898,15 @@ First arg FILENAME is evaluated and dissected into its components.
 Second arg VAR is a symbol.  It is used as a variable name to hold
 the filename structure.  It is also used as a prefix for the variables
 holding the components.  For example, if VAR is the symbol `foo', then
-`foo' will be bound to the whole structure, `foo-multi-method' will
-be bound to the multi-method component, and so on for `foo-method',
-`foo-user', `foo-host', `foo-localname'.
+`foo' will be bound to the whole structure, `foo-method' will be bound to
+the method component, and so on for `foo-user', `foo-host', `foo-localname'.
 
 Remaining args are Lisp expressions to be evaluated (inside an implicit
 `progn').
 
-If VAR is nil, then we bind `v' to the structure and `multi-method',
-`method', `user', `host', `localname' to the components."
+If VAR is nil, then we bind `v' to the structure and `method', `user',
+`host', `localname' to the components."
   `(let* ((,(or var 'v) (tramp-dissect-file-name ,filename))
-         (,(if var (intern (concat (symbol-name var) "-multi-method")) 'multi-method)
-          (tramp-file-name-multi-method ,(or var 'v)))
          (,(if var (intern (concat (symbol-name var) "-method")) 'method)
           (tramp-file-name-method ,(or var 'v)))
          (,(if var (intern (concat (symbol-name var) "-user")) 'user)
@@ -2082,14 +1918,41 @@ If VAR is nil, then we bind `v' to the structure and `multi-method',
      ,@body))
 
 (put 'with-parsed-tramp-file-name 'lisp-indent-function 2)
-;; Enable debugging.
-(eval-and-compile
-  (when (featurep 'edebug)
-    (def-edebug-spec with-parsed-tramp-file-name (form symbolp body))))
-;; Highlight as keyword.
-(when (functionp 'font-lock-add-keywords)
-  (funcall 'font-lock-add-keywords
-          'emacs-lisp-mode '("\\<with-parsed-tramp-file-name\\>")))
+(put 'with-parsed-tramp-file-name 'edebug-form-spec '(form symbolp body))
+(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-parsed-tramp-file-name\\>"))
+
+(defmacro with-file-property (vec file property &rest body)
+  "Check in Tramp cache for PROPERTY, otherwise execute BODY and set cache.
+FILE must be a local file name on a connection identified via VEC."
+  `(if (file-name-absolute-p ,file)
+      (let ((value (tramp-get-file-property ,vec ,file ,property 'undef)))
+       (when (eq value 'undef)
+         ;; We cannot pass @body as parameter to
+         ;; `tramp-set-file-property' because it mangles our
+         ;; debug messages.
+         (setq value (progn ,@body))
+         (tramp-set-file-property ,vec ,file ,property value))
+       value)
+     ,@body))
+
+(put 'with-file-property 'lisp-indent-function 3)
+(put 'with-file-property 'edebug-form-spec t)
+(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-file-property\\>"))
+
+(defmacro with-connection-property (key property &rest body)
+  "Checks in Tramp for property PROPERTY, otherwise executes BODY and set."
+  `(let ((value (tramp-get-connection-property ,key ,property 'undef)))
+    (when (eq value 'undef)
+      ;; We cannot pass ,@body as parameter to
+      ;; `tramp-set-connection-property' because it mangles our debug
+      ;; messages.
+      (setq value (progn ,@body))
+      (tramp-set-connection-property ,key ,property value))
+    value))
+
+(put 'with-connection-property 'lisp-indent-function 2)
+(put 'with-connection-property 'edebug-form-spec t)
+(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-connection-property\\>"))
 
 (defmacro tramp-let-maybe (variable value &rest body)
   "Let-bind VARIABLE to VALUE in BODY, but only if VARIABLE is not obsolete.
@@ -2102,6 +1965,44 @@ The intent is to protect against `obsolete variable' warnings."
 (put 'tramp-let-maybe 'lisp-indent-function 2)
 (put 'tramp-let-maybe 'edebug-form-spec t)
 
+(defsubst tramp-make-tramp-temp-file (vec &optional dont-create)
+  "Create a temporary file on the remote host identified by VEC.
+Return the local name of the temporary file.
+If DONT-CREATE is non-nil, just the file name is returned without
+creation of the temporary file.  This is not the preferred way to run,
+but it is necessary during connection setup, because we cannot create
+a remote file at this time.  This parameter shall NOT be set to
+non-nil else."
+  (if dont-create
+      ;; It sounds a little bit stupid to create a LOCAL file name.
+      ;; But we intend to use the remote directory "/tmp", and we have
+      ;; no chance to check whether a temporary file exists already
+      ;; remotely, because we have no working connection yet.
+      (make-temp-name (expand-file-name tramp-temp-name-prefix "/tmp"))
+
+    (let ((prefix
+          (tramp-make-tramp-file-name
+           (tramp-file-name-method vec)
+           (tramp-file-name-user vec)
+           (tramp-file-name-host vec)
+           (expand-file-name tramp-temp-name-prefix "/tmp")))
+         result)
+      (while (not result)
+       ;; `make-temp-file' would be the first choice for
+       ;; implementation.  But it calls `write-region' internally,
+       ;; which also needs a temporary file - we would end in an
+       ;; infinite loop.
+       (setq result (make-temp-name prefix))
+       (if (file-exists-p result)
+           (setq result nil)
+         ;; This creates the file by side effect.
+         (set-file-times result)
+         (set-file-modes result (tramp-octal-to-decimal "0700"))))
+
+      ;; Return the local part.
+      (with-parsed-tramp-file-name result nil localname))))
+
+
 ;;; Config Manipulation Functions:
 
 (defun tramp-set-completion-function (method function-list)
@@ -2127,12 +2028,17 @@ Example:
                  tramp-completion-function-alist))
 
     (while v
-      ;; Remove double entries
+      ;; Remove double entries.
       (when (member (car v) (cdr v))
        (setcdr v (delete (car v) (cdr v))))
-      ;; Check for function and file
+      ;; Check for function and file or registry key.
       (unless (and (functionp (nth 0 (car v)))
-                  (file-exists-p (nth 1 (car v))))
+                  (if (string-match "^HKEY_CURRENT_USER" (nth 1 (car v)))
+                      ;; Windows registry.
+                      (and (memq system-type '(cygwin windows-nt))
+                           (zerop (call-process "reg" nil nil nil "query" (nth 1 (car v)))))
+                    ;; Configuration file.
+                    (file-exists-p (nth 1 (car v)))))
        (setq r (delete (car v) r)))
       (setq v (cdr v)))
 
@@ -2141,15 +2047,68 @@ Example:
                   (cons method r)))))
 
 (defun tramp-get-completion-function (method)
-  "Returns list of completion functions for METHOD.
+  "Returns list of completion functions for METHOD.
 For definition of that list see `tramp-set-completion-function'."
-  (cdr (assoc method tramp-completion-function-alist)))
+  (cons
+   ;; Hosts visited once shall be remembered.
+   `(tramp-parse-connection-properties ,method)
+   ;; The method related defaults.
+   (cdr (assoc method tramp-completion-function-alist))))
+
+
+;;; Fontification of `read-file-name'.
+
+;; rfn-eshadow.el is part of Emacs 22.  Its is autoloaded.
+(defvar tramp-rfn-eshadow-overlay)
+(make-variable-buffer-local 'tramp-rfn-eshadow-overlay)
+
+(defun tramp-rfn-eshadow-setup-minibuffer ()
+  "Set up a minibuffer for `file-name-shadow-mode'.
+Adds another overlay hiding filename parts according to Tramp's
+special handling of `substitute-in-file-name'."
+  (when (symbol-value 'minibuffer-completing-file-name)
+    (setq tramp-rfn-eshadow-overlay
+         (funcall (symbol-function 'make-overlay)
+                  (funcall (symbol-function 'minibuffer-prompt-end))
+                  (funcall (symbol-function 'minibuffer-prompt-end))))
+    ;; Copy rfn-eshadow-overlay properties.
+    (let ((props (funcall (symbol-function 'overlay-properties)
+                         (symbol-value 'rfn-eshadow-overlay))))
+      (while props
+       (funcall (symbol-function 'overlay-put)
+                tramp-rfn-eshadow-overlay (pop props) (pop props))))))
+
+(when (boundp 'rfn-eshadow-setup-minibuffer-hook)
+  (add-hook 'rfn-eshadow-setup-minibuffer-hook
+           'tramp-rfn-eshadow-setup-minibuffer))
+
+(defun tramp-rfn-eshadow-update-overlay ()
+  "Update `rfn-eshadow-overlay' to cover shadowed part of minibuffer input.
+This is intended to be used as a minibuffer `post-command-hook' for
+`file-name-shadow-mode'; the minibuffer should have already
+been set up by `rfn-eshadow-setup-minibuffer'."
+  ;; In remote files name, there is a shadowing just for the local part.
+  (let ((end (or (funcall (symbol-function 'overlay-end)
+                         (symbol-value 'rfn-eshadow-overlay))
+                (funcall (symbol-function 'minibuffer-prompt-end)))))
+    (when (file-remote-p (buffer-substring-no-properties end (point-max)))
+      (narrow-to-region
+       (1+ (or (string-match "/" (buffer-string) end) end)) (point-max))
+      (let ((rfn-eshadow-overlay tramp-rfn-eshadow-overlay)
+           (rfn-eshadow-update-overlay-hook nil))
+       (funcall (symbol-function 'rfn-eshadow-update-overlay)))
+      (widen))))
+
+(when (boundp 'rfn-eshadow-update-overlay-hook)
+  (add-hook 'rfn-eshadow-update-overlay-hook
+           'tramp-rfn-eshadow-update-overlay))
+
 
 ;;; File Name Handler Functions:
 
 (defun tramp-handle-make-symbolic-link
   (filename linkname &optional ok-if-already-exists)
-  "Like `make-symbolic-link' for tramp files.
+  "Like `make-symbolic-link' for Tramp files.
 If LINKNAME is a non-Tramp file, it is used verbatim as the target of
 the symlink.  If LINKNAME is a Tramp file, only the localname component is
 used as the target of the symlink.
@@ -2159,12 +2118,12 @@ it is expanded first, before the localname component is taken.  Note that
 this can give surprising results if the user/host for the source and
 target of the symlink differ."
   (with-parsed-tramp-file-name linkname l
-    (let ((ln (tramp-get-remote-ln l-multi-method l-method l-user l-host))
+    (let ((ln (tramp-get-remote-ln l))
          (cwd (file-name-directory l-localname)))
       (unless ln
-       (signal 'file-error
-               (list "Making a symbolic link."
-                     "ln(1) does not exist on the remote host.")))
+       (tramp-error
+        l 'file-error
+        "Making a symbolic link. ln(1) does not exist on the remote host."))
 
       ;; Do the 'confirm if exists' thing.
       (when (file-exists-p linkname)
@@ -2175,33 +2134,27 @@ target of the symlink differ."
                           (format
                            "File %s already exists; make it a link anyway? "
                            l-localname)))))
-           (signal 'file-already-exists (list "File already exists" l-localname))
+           (tramp-error
+            l 'file-already-exists "File %s already exists" l-localname)
          (delete-file linkname)))
 
       ;; If FILENAME is a Tramp name, use just the localname component.
       (when (tramp-tramp-file-p filename)
-       (setq filename (tramp-file-name-localname
-                       (tramp-dissect-file-name
-                        (expand-file-name filename)))))
+       (setq filename
+             (tramp-file-name-localname
+              (tramp-dissect-file-name (expand-file-name filename)))))
 
       ;; Right, they are on the same host, regardless of user, method, etc.
       ;; We now make the link on the remote machine. This will occur as the user
       ;; that FILENAME belongs to.
       (zerop
        (tramp-send-command-and-check
-       l-multi-method l-method l-user l-host
-       (format "cd %s && %s -sf %s %s"
-               cwd ln
-               filename
-               l-localname)
-       t)))))
+       l (format "cd %s && %s -sf %s %s" cwd ln filename l-localname) t)))))
 
 
 (defun tramp-handle-load (file &optional noerror nomessage nosuffix must-suffix)
-  "Like `load' for tramp files.  Not implemented!"
-  (unless (file-name-absolute-p file)
-    (error "Tramp cannot `load' files without absolute file name"))
-  (with-parsed-tramp-file-name file nil
+  "Like `load' for Tramp files."
+  (with-parsed-tramp-file-name (expand-file-name file) nil
     (unless nosuffix
       (cond ((file-exists-p (concat file ".elc"))
             (setq file (concat file ".elc")))
@@ -2212,138 +2165,144 @@ target of the symlink differ."
       ;; Included for safety's sake.
       (unless (or (file-name-directory file)
                  (string-match "\\.elc?\\'" file))
-       (error "File `%s' does not include a `.el' or `.elc' suffix"
-              file)))
+       (tramp-error
+        v 'file-error
+        "File `%s' does not include a `.el' or `.elc' suffix" file)))
     (unless noerror
       (when (not (file-exists-p file))
-       (error "Cannot load nonexistent file `%s'" file)))
+       (tramp-error v 'file-error "Cannot load nonexistent file `%s'" file)))
     (if (not (file-exists-p file))
        nil
-      (unless nomessage
-       (message "Loading %s..." file))
+      (unless nomessage (tramp-message v 0 "Loading %s..." file))
       (let ((local-copy (file-local-copy file)))
        ;; MUST-SUFFIX doesn't exist on XEmacs, so let it default to nil.
        (load local-copy noerror t t)
        (delete-file local-copy))
-      (unless nomessage
-       (message "Loading %s...done" file))
+      (unless nomessage (tramp-message v 0 "Loading %s...done" file))
       t)))
 
 ;; Localname manipulation functions that grok TRAMP localnames...
 (defun tramp-handle-file-name-directory (file)
-  "Like `file-name-directory' but aware of TRAMP files."
-  ;; Everything except the last filename thing is the directory.
-  (with-parsed-tramp-file-name file nil
+  "Like `file-name-directory' but aware of Tramp files."
+  ;; Everything except the last filename thing is the directory.  We
+  ;; cannot apply `with-parsed-tramp-file-name', because this expands
+  ;; the remote file name parts.  This is a problem when we are in
+  ;; file name completion.
+  (let ((v (tramp-dissect-file-name file t)))
     ;; Run the command on the localname portion only.
     (tramp-make-tramp-file-name
-     multi-method method user host (file-name-directory (or localname "")))))
+     (tramp-file-name-method v)
+     (tramp-file-name-user v)
+     (tramp-file-name-host v)
+     (file-name-directory (or (tramp-file-name-localname v) "")))))
 
 (defun tramp-handle-file-name-nondirectory (file)
-  "Like `file-name-nondirectory' but aware of TRAMP files."
+  "Like `file-name-nondirectory' but aware of Tramp files."
   (with-parsed-tramp-file-name file nil
     (file-name-nondirectory localname)))
 
 (defun tramp-handle-file-truename (filename &optional counter prev-dirs)
-  "Like `file-truename' for tramp files."
+  "Like `file-truename' for Tramp files."
   (with-parsed-tramp-file-name (expand-file-name filename) nil
-    (let* ((steps        (tramp-split-string localname "/"))
-          (localnamedir (tramp-let-maybe directory-sep-char ?/ ;for XEmacs
-                          (file-name-as-directory localname)))
-          (is-dir (string= localname localnamedir))
-          (thisstep nil)
-          (numchase 0)
-          ;; Don't make the following value larger than necessary.
-          ;; People expect an error message in a timely fashion when
-          ;; something is wrong; otherwise they might think that Emacs
-          ;; is hung.  Of course, correctness has to come first.
-          (numchase-limit 20)
-          (result nil)                 ;result steps in reverse order
-          symlink-target)
-      (tramp-message-for-buffer
-       multi-method method user host
-       10 "Finding true name for `%s'" filename)
-      (while (and steps (< numchase numchase-limit))
-       (setq thisstep (pop steps))
-       (tramp-message-for-buffer
-        multi-method method user host
-        10 "Check %s"
-        (mapconcat 'identity
-                   (append '("") (reverse result) (list thisstep))
-                   "/"))
-       (setq symlink-target
-             (nth 0 (file-attributes
-                     (tramp-make-tramp-file-name
-                      multi-method method user host
-                      (mapconcat 'identity
-                                 (append '("")
-                                         (reverse result)
-                                         (list thisstep))
-                                 "/")))))
-       (cond ((string= "." thisstep)
-              (tramp-message-for-buffer multi-method method user host
-                                        10 "Ignoring step `.'"))
-             ((string= ".." thisstep)
-              (tramp-message-for-buffer multi-method method user host
-                                        10 "Processing step `..'")
-              (pop result))
-             ((stringp symlink-target)
-              ;; It's a symlink, follow it.
-              (tramp-message-for-buffer
-               multi-method method user host
-               10 "Follow symlink to %s" symlink-target)
-              (setq numchase (1+ numchase))
-              (when (file-name-absolute-p symlink-target)
-                (setq result nil))
-              ;; If the symlink was absolute, we'll get a string like
-              ;; "/user@host:/some/target"; extract the
-              ;; "/some/target" part from it.
-              (when (tramp-tramp-file-p symlink-target)
-                (with-parsed-tramp-file-name symlink-target sym
-                  (unless (equal (list multi-method method user host)
-                                 (list sym-multi-method sym-method
-                                       sym-user sym-host))
-                    (error "Symlink target `%s' on wrong host"
-                           symlink-target))
-                  (setq symlink-target localname)))
-              (setq steps
-                    (append (tramp-split-string symlink-target "/") steps)))
-             (t
-              ;; It's a file.
-              (setq result (cons thisstep result)))))
-      (when (>= numchase numchase-limit)
-       (error "Maximum number (%d) of symlinks exceeded" numchase-limit))
-      (setq result (reverse result))
-      ;; Combine list to form string.
-      (setq result
-           (if result
-               (mapconcat 'identity (cons "" result) "/")
-             "/"))
-      (when (and is-dir (or (string= "" result)
-                           (not (string= (substring result -1) "/"))))
-       (setq result (concat result "/")))
-      (tramp-message-for-buffer
-       multi-method method user host
-       10 "True name of `%s' is `%s'" filename result)
-      (tramp-make-tramp-file-name
-       multi-method method user host result))))
+    (with-file-property v localname "file-truename"
+      (let* ((steps        (tramp-split-string localname "/"))
+            (localnamedir (tramp-let-maybe directory-sep-char ?/ ;for XEmacs
+                            (file-name-as-directory localname)))
+            (is-dir (string= localname localnamedir))
+            (thisstep nil)
+            (numchase 0)
+            ;; Don't make the following value larger than necessary.
+            ;; People expect an error message in a timely fashion when
+            ;; something is wrong; otherwise they might think that Emacs
+            ;; is hung.  Of course, correctness has to come first.
+            (numchase-limit 20)
+            (result nil)                       ;result steps in reverse order
+            symlink-target)
+       (tramp-message v 4 "Finding true name for `%s'" filename)
+       (while (and steps (< numchase numchase-limit))
+         (setq thisstep (pop steps))
+         (tramp-message
+          v 5 "Check %s"
+          (mapconcat 'identity
+                     (append '("") (reverse result) (list thisstep))
+                     "/"))
+         (setq symlink-target
+               (nth 0 (file-attributes
+                       (tramp-make-tramp-file-name
+                        method user host
+                        (mapconcat 'identity
+                                   (append '("")
+                                           (reverse result)
+                                           (list thisstep))
+                                   "/")))))
+         (cond ((string= "." thisstep)
+                (tramp-message v 5 "Ignoring step `.'"))
+               ((string= ".." thisstep)
+                (tramp-message v 5 "Processing step `..'")
+                (pop result))
+               ((stringp symlink-target)
+                ;; It's a symlink, follow it.
+                (tramp-message v 5 "Follow symlink to %s" symlink-target)
+                (setq numchase (1+ numchase))
+                (when (file-name-absolute-p symlink-target)
+                  (setq result nil))
+                ;; If the symlink was absolute, we'll get a string like
+                ;; "/user@host:/some/target"; extract the
+                ;; "/some/target" part from it.
+                (when (tramp-tramp-file-p symlink-target)
+                  (unless (tramp-equal-remote filename symlink-target)
+                    (tramp-error
+                     v 'file-error
+                     "Symlink target `%s' on wrong host" symlink-target))
+                  (setq symlink-target localname))
+                (setq steps
+                      (append (tramp-split-string symlink-target "/")
+                              steps)))
+               (t
+                ;; It's a file.
+                (setq result (cons thisstep result)))))
+       (when (>= numchase numchase-limit)
+         (tramp-error
+          v 'file-error
+          "Maximum number (%d) of symlinks exceeded" numchase-limit))
+       (setq result (reverse result))
+       ;; Combine list to form string.
+       (setq result
+             (if result
+                 (mapconcat 'identity (cons "" result) "/")
+               "/"))
+       (when (and is-dir (or (string= "" result)
+                             (not (string= (substring result -1) "/"))))
+         (setq result (concat result "/")))
+       (tramp-message v 4 "True name of `%s' is `%s'" filename result)
+       (tramp-make-tramp-file-name method user host result)))))
 
 ;; Basic functions.
 
 (defun tramp-handle-file-exists-p (filename)
-  "Like `file-exists-p' for tramp files."
+  "Like `file-exists-p' for Tramp files."
   (with-parsed-tramp-file-name filename nil
-    (save-excursion
+    (with-file-property v localname "file-exists-p"
       (zerop (tramp-send-command-and-check
-             multi-method method user host
+             v
              (format
-              (tramp-get-file-exists-command multi-method method user host)
+              "%s %s"
+              (tramp-get-file-exists-command v)
               (tramp-shell-quote-argument localname)))))))
 
+;; Inodes don't exist for some file systems.  Therefore we must
+;; generate virtual ones.  Used in `find-buffer-visiting'.  The method
+;; applied might be not so efficient (Ange-FTP uses hashes). But
+;; performance isn't the major issue given that file transfer will
+;; take time.
+(defvar tramp-inodes nil
+  "Keeps virtual inodes numbers.")
+
 ;; Devices must distinguish physical file systems.  The device numbers
 ;; provided by "lstat" aren't unique, because we operate on different hosts.
 ;; So we use virtual device numbers, generated by Tramp.  Both Ange-FTP and
 ;; EFS use device number "-1".  In order to be different, we use device number
-;; (-1 x), whereby "x" is unique for a given (multi-method method user host).
+;; (-1 x), whereby "x" is unique for a given (method user host).
 (defvar tramp-devices nil
   "Keeps virtual device numbers.")
 
@@ -2351,123 +2310,133 @@ target of the symlink differ."
 ;;      when something goes wrong.
 ;; Daniel Pittman <daniel@danann.net>
 (defun tramp-handle-file-attributes (filename &optional id-format)
-  "Like `file-attributes' for tramp files."
-  (when (file-exists-p filename)
-    ;; file exists, find out stuff
-    (unless id-format (setq id-format 'integer))
-    (with-parsed-tramp-file-name filename nil
-      (save-excursion
-        (tramp-convert-file-attributes
-         multi-method method user host
-         (if (tramp-get-remote-perl multi-method method user host)
-             (tramp-handle-file-attributes-with-perl multi-method method user host
-                                                     localname id-format)
-           (tramp-handle-file-attributes-with-ls multi-method method user host
-                                                 localname id-format)))))))
-
-(defun tramp-handle-file-attributes-with-ls
-  (multi-method method user host localname &optional id-format)
-  "Implement `file-attributes' for tramp files using the ls(1) command."
+  "Like `file-attributes' for Tramp files."
+  (unless id-format (setq id-format 'integer))
+  (with-parsed-tramp-file-name (expand-file-name filename) nil
+    (with-file-property v localname (format "file-attributes-%s" id-format)
+      (when (file-exists-p filename)
+       ;; file exists, find out stuff
+       (save-excursion
+         (tramp-convert-file-attributes
+          v
+          (if (tramp-get-remote-stat v)
+              (tramp-handle-file-attributes-with-stat v localname id-format)
+            (if (tramp-get-remote-perl v)
+                (tramp-handle-file-attributes-with-perl v localname id-format)
+              (tramp-handle-file-attributes-with-ls
+               v localname id-format)))))))))
+
+(defun tramp-handle-file-attributes-with-ls (vec localname &optional id-format)
+  "Implement `file-attributes' for Tramp files using the ls(1) command."
   (let (symlinkp dirp
                 res-inode res-filemodes res-numlinks
                 res-uid res-gid res-size res-symlink-target)
-    (tramp-message-for-buffer multi-method method user host 10
-                             "file attributes with ls: %s"
-                             (tramp-make-tramp-file-name
-                              multi-method method user host localname))
+    (tramp-message vec 5 "file attributes with ls: %s" localname)
     (tramp-send-command
-     multi-method method user host
+     vec
      (format "%s %s %s"
-            (tramp-get-ls-command multi-method method user host)
+            (tramp-get-ls-command vec)
             (if (eq id-format 'integer) "-ildn" "-ild")
             (tramp-shell-quote-argument localname)))
-    (tramp-wait-for-output)
     ;; parse `ls -l' output ...
-    ;; ... inode
-    (setq res-inode
-         (condition-case err
-             (read (current-buffer))
-           (invalid-read-syntax
-            (when (and (equal (cadr err)
-                              "Integer constant overflow in reader")
-                       (string-match
-                        "^[0-9]+\\([0-9][0-9][0-9][0-9][0-9]\\)\\'"
-                        (car (cddr err))))
-              (let* ((big (read (substring (car (cddr err)) 0
-                                           (match-beginning 1))))
-                     (small (read (match-string 1 (car (cddr err)))))
-                     (twiddle (/ small 65536)))
-                (cons (+ big twiddle)
-                      (- small (* twiddle 65536))))))))
-    ;; ... file mode flags
-    (setq res-filemodes (symbol-name (read (current-buffer))))
-    ;; ... number links
-    (setq res-numlinks (read (current-buffer)))
-    ;; ... uid and gid
-    (setq res-uid (read (current-buffer)))
-    (setq res-gid (read (current-buffer)))
-    (when (eq id-format 'integer)
-      (unless (numberp res-uid) (setq res-uid -1))
-      (unless (numberp res-gid) (setq res-gid -1)))
-    ;; ... size
-    (setq res-size (read (current-buffer)))
-    ;; From the file modes, figure out other stuff.
-    (setq symlinkp (eq ?l (aref res-filemodes 0)))
-    (setq dirp (eq ?d (aref res-filemodes 0)))
-    ;; if symlink, find out file name pointed to
-    (when symlinkp
-      (search-forward "-> ")
-      (setq res-symlink-target
-           (buffer-substring (point)
-                             (tramp-line-end-position))))
-    ;; return data gathered
-    (list
-     ;; 0. t for directory, string (name linked to) for symbolic
-     ;; link, or nil.
-     (or dirp res-symlink-target nil)
-     ;; 1. Number of links to file.
-     res-numlinks
-     ;; 2. File uid.
-     res-uid
-     ;; 3. File gid.
-     res-gid
-     ;; 4. Last access time, as a list of two integers. First
-     ;; integer has high-order 16 bits of time, second has low 16
-     ;; bits.
-     ;; 5. Last modification time, likewise.
-     ;; 6. Last status change time, likewise.
-     '(0 0) '(0 0) '(0 0)              ;CCC how to find out?
-     ;; 7. Size in bytes (-1, if number is out of range).
-     res-size
-     ;; 8. File modes, as a string of ten letters or dashes as in ls -l.
-     res-filemodes
-     ;; 9. t if file's gid would change if file were deleted and
-     ;; recreated.  Will be set in `tramp-convert-file-attributes'
-     t
-     ;; 10. inode number.
-     res-inode
-     ;; 11. Device number.  Will be replaced by a virtual device number.
-     -1
-     )))
+    (with-current-buffer (tramp-get-buffer vec)
+      (goto-char (point-min))
+      ;; ... inode
+      (setq res-inode
+           (condition-case err
+               (read (current-buffer))
+             (invalid-read-syntax
+              (when (and (equal (cadr err)
+                                "Integer constant overflow in reader")
+                         (string-match
+                          "^[0-9]+\\([0-9][0-9][0-9][0-9][0-9]\\)\\'"
+                          (car (cddr err))))
+                (let* ((big (read (substring (car (cddr err)) 0
+                                             (match-beginning 1))))
+                       (small (read (match-string 1 (car (cddr err)))))
+                       (twiddle (/ small 65536)))
+                  (cons (+ big twiddle)
+                        (- small (* twiddle 65536))))))))
+      ;; ... file mode flags
+      (setq res-filemodes (symbol-name (read (current-buffer))))
+      ;; ... number links
+      (setq res-numlinks (read (current-buffer)))
+      ;; ... uid and gid
+      (setq res-uid (read (current-buffer)))
+      (setq res-gid (read (current-buffer)))
+      (if (eq id-format 'integer)
+         (progn
+           (unless (numberp res-uid) (setq res-uid -1))
+           (unless (numberp res-gid) (setq res-gid -1)))
+       (progn
+         (unless (stringp res-uid) (setq res-uid (symbol-name res-uid)))
+         (unless (stringp res-gid) (setq res-gid (symbol-name res-gid)))))
+      ;; ... size
+      (setq res-size (read (current-buffer)))
+      ;; From the file modes, figure out other stuff.
+      (setq symlinkp (eq ?l (aref res-filemodes 0)))
+      (setq dirp (eq ?d (aref res-filemodes 0)))
+      ;; if symlink, find out file name pointed to
+      (when symlinkp
+       (search-forward "-> ")
+       (setq res-symlink-target
+             (buffer-substring (point) (tramp-compat-line-end-position))))
+      ;; return data gathered
+      (list
+       ;; 0. t for directory, string (name linked to) for symbolic
+       ;; link, or nil.
+       (or dirp res-symlink-target)
+       ;; 1. Number of links to file.
+       res-numlinks
+       ;; 2. File uid.
+       res-uid
+       ;; 3. File gid.
+       res-gid
+       ;; 4. Last access time, as a list of two integers. First
+       ;; integer has high-order 16 bits of time, second has low 16
+       ;; bits.
+       ;; 5. Last modification time, likewise.
+       ;; 6. Last status change time, likewise.
+       '(0 0) '(0 0) '(0 0)            ;CCC how to find out?
+       ;; 7. Size in bytes (-1, if number is out of range).
+       res-size
+       ;; 8. File modes, as a string of ten letters or dashes as in ls -l.
+       res-filemodes
+       ;; 9. t if file's gid would change if file were deleted and
+       ;; recreated.  Will be set in `tramp-convert-file-attributes'
+       t
+       ;; 10. inode number.
+       res-inode
+       ;; 11. Device number.  Will be replaced by a virtual device number.
+       -1
+       ))))
 
 (defun tramp-handle-file-attributes-with-perl
-  (multi-method method user host localname &optional id-format)
-  "Implement `file-attributes' for tramp files using a Perl script."
-  (tramp-message-for-buffer multi-method method user host 10
-                           "file attributes with perl: %s"
-                           (tramp-make-tramp-file-name
-                            multi-method method user host localname))
-  (tramp-maybe-send-perl-script multi-method method user host
-                               tramp-perl-file-attributes
-                                "tramp_file_attributes")
-  (tramp-send-command multi-method method user host
-                      (format "tramp_file_attributes %s %s"
-                              (tramp-shell-quote-argument localname) id-format))
-  (tramp-wait-for-output)
-  (read (current-buffer)))
+  (vec localname &optional id-format)
+  "Implement `file-attributes' for Tramp files using a Perl script."
+  (tramp-message vec 5 "file attributes with perl: %s" localname)
+  (tramp-maybe-send-script
+   vec tramp-perl-file-attributes "tramp_perl_file_attributes")
+  (tramp-send-command-and-read
+   vec
+   (format "tramp_perl_file_attributes %s %s"
+          (tramp-shell-quote-argument localname) id-format)))
+
+(defun tramp-handle-file-attributes-with-stat
+  (vec localname &optional id-format)
+  "Implement `file-attributes' for Tramp files using stat(1) command."
+  (tramp-message vec 5 "file attributes with stat: %s" localname)
+  (tramp-send-command-and-read
+   vec
+   (format
+    "%s -c '((\"%%N\") %%h %s %s %%X.0 %%Y.0 %%Z.0 %%s.0 \"%%A\" t %%i.0 -1)' %s"
+    (tramp-get-remote-stat vec)
+    (if (eq id-format 'integer) "%u" "\"%U\"")
+    (if (eq id-format 'integer) "%g" "\"%G\"")
+    (tramp-shell-quote-argument localname))))
 
 (defun tramp-handle-set-visited-file-modtime (&optional time-list)
-  "Like `set-visited-file-modtime' for tramp files."
+  "Like `set-visited-file-modtime' for Tramp files."
   (unless (buffer-file-name)
     (error "Can't set-visited-file-modtime: buffer `%s' not visiting a file"
           (buffer-name)))
@@ -2485,16 +2454,16 @@ target of the symlink differ."
          ;; `tramp-handle-file-attributes-with-ls'.
          (if (not (equal modtime '(0 0)))
              (tramp-run-real-handler 'set-visited-file-modtime (list modtime))
-           (save-excursion
+           (progn
              (tramp-send-command
-              multi-method method user host
+              v
               (format "%s -ild %s"
-                      (tramp-get-ls-command multi-method method user host)
+                      (tramp-get-ls-command v)
                       (tramp-shell-quote-argument localname)))
-             (tramp-wait-for-output)
              (setq attr (buffer-substring (point)
                                           (progn (end-of-line) (point)))))
-           (setq tramp-buffer-file-attributes attr))
+           (tramp-set-file-property
+            v localname "visited-file-modtime-ild" attr))
          (when (boundp 'last-coding-system-used)
            (set 'last-coding-system-used coding-system-used))
          nil)))))
@@ -2504,7 +2473,7 @@ target of the symlink differ."
 ;; This function makes the same assumption as
 ;; `tramp-handle-set-visited-file-modtime'.
 (defun tramp-handle-verify-visited-file-modtime (buf)
-  "Like `verify-visited-file-modtime' for tramp files.
+  "Like `verify-visited-file-modtime' for Tramp files.
 At the time `verify-visited-file-modtime' calls this function, we
 already know that the buffer is visiting a file and that
 `visited-file-modtime' does not return 0.  Do not call this
@@ -2518,6 +2487,7 @@ of."
        t
       (let ((f (buffer-file-name)))
        (with-parsed-tramp-file-name f nil
+         (tramp-flush-file-property v localname)
          (let* ((attr (file-attributes f))
                 (modtime (nth 5 attr))
                 (mt (visited-file-modtime)))
@@ -2536,53 +2506,112 @@ of."
                 2))
             ;; modtime has the don't know value.
             (attr
-             (save-excursion
-               (tramp-send-command
-                multi-method method user host
-                (format "%s -ild %s"
-                        (tramp-get-ls-command multi-method method user host)
-                        (tramp-shell-quote-argument localname)))
-               (tramp-wait-for-output)
+             (tramp-send-command
+              v
+              (format "%s -ild %s"
+                      (tramp-get-ls-command v)
+                      (tramp-shell-quote-argument localname)))
+             (with-current-buffer (tramp-get-buffer v)
                (setq attr (buffer-substring
                            (point) (progn (end-of-line) (point)))))
-             (equal tramp-buffer-file-attributes attr))
+             (equal
+              attr
+              (tramp-get-file-property
+               v localname "visited-file-modtime-ild" "")))
             ;; If file does not exist, say it is not modified
             ;; if and only if that agrees with the buffer's record.
             (t (equal mt '(-1 65535))))))))))
 
 (defun tramp-handle-set-file-modes (filename mode)
-  "Like `set-file-modes' for tramp files."
+  "Like `set-file-modes' for Tramp files."
   (with-parsed-tramp-file-name filename nil
-    (save-excursion
-      (unless (zerop (tramp-send-command-and-check
-                     multi-method method user host
-                     (format "chmod %s %s"
-                             (tramp-decimal-to-octal mode)
-                             (tramp-shell-quote-argument localname))))
-       (signal 'file-error
-               (list "Doing chmod"
-                     ;; FIXME: extract the proper text from chmod's stderr.
-                     "error while changing file's mode"
-                     filename))))))
+    (tramp-flush-file-property v localname)
+    (unless (zerop (tramp-send-command-and-check
+                   v
+                   (format "chmod %s %s"
+                           (tramp-decimal-to-octal mode)
+                           (tramp-shell-quote-argument localname))))
+      ;; FIXME: extract the proper text from chmod's stderr.
+      (tramp-error
+       v 'file-error "Error while changing file's mode %s" filename))))
+
+(defun tramp-handle-set-file-times (filename &optional time)
+  "Like `set-file-times' for Tramp files."
+  (zerop
+   (if (file-remote-p filename)
+       (with-parsed-tramp-file-name filename nil
+        (tramp-flush-file-property v localname)
+        (let ((time (if (or (null time) (equal time '(0 0)))
+                        (current-time)
+                      time))
+              (utc
+               ;; With GNU Emacs, `format-time-string' has an
+               ;; optional parameter UNIVERSAL.  This is preferred,
+               ;; because we could handle the case when the remote
+               ;; host is located in a different time zone as the
+               ;; local host.
+               (and (functionp 'subr-arity)
+                    (subrp (symbol-function 'format-time-string))
+                    (= 3 (cdr (funcall (symbol-function 'subr-arity)
+                                       (symbol-function
+                                        'format-time-string)))))))
+          (tramp-send-command-and-check
+           v (format "%s touch -t %s %s"
+                     (if utc "TZ=UTC; export TZ;" "")
+                     (if utc
+                         (format-time-string "%Y%m%d%H%M.%S" time t)
+                       (format-time-string "%Y%m%d%H%M.%S" time))
+                     (tramp-shell-quote-argument localname)))))
+
+     ;; We handle also the local part, because in older Emacsen,
+     ;; without `set-file-times', this function is an alias for this.
+     ;; We are local, so we don't need the UTC settings.
+     (call-process
+      "touch" nil nil nil "-t"
+      (format-time-string "%Y%m%d%H%M.%S" time)
+      (tramp-shell-quote-argument filename)))))
+
+(defun tramp-set-file-uid-gid (filename &optional uid gid)
+  "Set the ownership for FILENAME.
+If UID and GID are provided, these values are used; otherwise uid
+and gid of the corresponding user is taken.  Both parameters must be integers."
+  ;; CCC: Modern Unices allow chown only for root.  So we might need
+  ;;      another implementation, see `dired-do-chown'.  OTOH, it is
+  ;;      mostly working with su(do)? when it is needed, so it shall
+  ;;      succeed in the majority of cases.
+  (if (file-remote-p filename)
+      (with-parsed-tramp-file-name filename nil
+       (let ((uid (or (and (integerp uid) uid)
+                      (tramp-get-remote-uid v 'integer)))
+             (gid (or (and (integerp gid) gid)
+                      (tramp-get-remote-gid v 'integer))))
+         (tramp-send-command
+          v (format
+             "chown %d:%d %s" uid gid
+             (tramp-shell-quote-argument localname)))))
+
+    ;; We handle also the local part, because there doesn't exist
+    ;; `set-file-uid-gid'.
+    (let ((uid (or (and (integerp uid) uid) (tramp-get-local-uid 'integer)))
+         (gid (or (and (integerp gid) gid) (tramp-get-local-uid 'integer)))
+         (default-directory (tramp-compat-temporary-file-directory)))
+      (call-process
+       "chown" nil nil nil
+       (format "%d:%d" uid gid) (tramp-shell-quote-argument filename)))))
 
 ;; Simple functions using the `test' command.
 
 (defun tramp-handle-file-executable-p (filename)
-  "Like `file-executable-p' for tramp files."
+  "Like `file-executable-p' for Tramp files."
   (with-parsed-tramp-file-name filename nil
-    (zerop (tramp-run-test "-x" filename))))
+    (with-file-property v localname "file-executable-p"
+      (zerop (tramp-run-test "-x" filename)))))
 
 (defun tramp-handle-file-readable-p (filename)
-  "Like `file-readable-p' for tramp files."
-  (with-parsed-tramp-file-name filename nil
-    (zerop (tramp-run-test "-r" filename))))
-
-(defun tramp-handle-file-accessible-directory-p (filename)
-  "Like `file-accessible-directory-p' for tramp files."
+  "Like `file-readable-p' for Tramp files."
   (with-parsed-tramp-file-name filename nil
-    (and (zerop (tramp-run-test "-d" filename))
-        (zerop (tramp-run-test "-r" filename))
-        (zerop (tramp-run-test "-x" filename)))))
+    (with-file-property v localname "file-readable-p"
+      (zerop (tramp-run-test "-r" filename)))))
 
 ;; When the remote shell is started, it looks for a shell which groks
 ;; tilde expansion.  Here, we assume that all shells which grok tilde
@@ -2590,7 +2619,7 @@ of."
 ;; newer than).  If this breaks, tell me about it and I'll try to do
 ;; something smarter about it.
 (defun tramp-handle-file-newer-than-file-p (file1 file2)
-  "Like `file-newer-than-file-p' for tramp files."
+  "Like `file-newer-than-file-p' for Tramp files."
   (cond ((not (file-exists-p file1))
          nil)
         ((not (file-exists-p file2))
@@ -2611,44 +2640,27 @@ of."
               ;; However, this only works if both files are Tramp
               ;; files and both have the same method, same user, same
               ;; host.
-              (unless (and (tramp-tramp-file-p file1)
-                           (tramp-tramp-file-p file2))
-                (signal
-                 'file-error
-                 (list
-                  "Cannot check if Tramp file is newer than non-Tramp file"
-                  file1 file2)))
-              (with-parsed-tramp-file-name file1 v1
-                (with-parsed-tramp-file-name file2 v2
-                  (unless (and (equal v1-multi-method v2-multi-method)
-                               (equal v1-method v2-method)
-                               (equal v1-user v2-user)
-                               (equal v1-host v2-host))
-                    (signal 'file-error
-                            (list "Files must have same method, user, host"
-                                  file1 file2)))
-                  (unless (and (tramp-tramp-file-p file1)
-                               (tramp-tramp-file-p file2))
-                    (signal 'file-error
-                            (list "Files must be tramp files on same host"
-                                  file1 file2)))
-                  (if (tramp-get-test-groks-nt
-                       v1-multi-method v1-method v1-user v1-host)
-                      (zerop (tramp-run-test2 "test" file1 file2 "-nt"))
-                    (zerop (tramp-run-test2
-                            "tramp_test_nt" file1 file2)))))))))))
+              (unless (tramp-equal-remote file1 file2)
+                (with-parsed-tramp-file-name
+                    (if (tramp-tramp-file-p file1) file1 file2) nil
+                  (tramp-error
+                   v 'file-error
+                   "Files %s and %s must have same method, user, host"
+                   file1 file2)))
+              (with-parsed-tramp-file-name file1 nil
+                (zerop (tramp-run-test2
+                        (tramp-get-test-nt-command v) file1 file2)))))))))
 
 ;; Functions implemented using the basic functions above.
 
 (defun tramp-handle-file-modes (filename)
-  "Like `file-modes' for tramp files."
-  (with-parsed-tramp-file-name filename nil
-    (when (file-exists-p filename)
-      (tramp-mode-string-to-int
-       (nth 8 (file-attributes filename))))))
+  "Like `file-modes' for Tramp files."
+  (when (file-exists-p filename)
+    (tramp-mode-string-to-int
+     (nth 8 (file-attributes filename)))))
 
 (defun tramp-handle-file-directory-p (filename)
-  "Like `file-directory-p' for tramp files."
+  "Like `file-directory-p' for Tramp files."
   ;; Care must be taken that this function returns `t' for symlinks
   ;; pointing to directories.  Surely the most obvious implementation
   ;; would be `test -d', but that returns false for such symlinks.
@@ -2658,78 +2670,52 @@ of."
   ;;
   ;; Alternatives: `cd %s', `test -d %s'
   (with-parsed-tramp-file-name filename nil
-    (save-excursion
-      (zerop
-       (tramp-send-command-and-check
-       multi-method method user host
-       (format "test -d %s"
-               (tramp-shell-quote-argument localname))
-       t)))))                          ;run command in subshell
+    (with-file-property v localname "file-directory-p"
+      (zerop (tramp-run-test "-d" filename)))))
 
 (defun tramp-handle-file-regular-p (filename)
-  "Like `file-regular-p' for tramp files."
-  (with-parsed-tramp-file-name filename nil
-    (and (file-exists-p filename)
-        (eq ?- (aref (nth 8 (file-attributes filename)) 0)))))
+  "Like `file-regular-p' for Tramp files."
+  (and (file-exists-p filename)
+       (eq ?- (aref (nth 8 (file-attributes filename)) 0))))
 
 (defun tramp-handle-file-symlink-p (filename)
-  "Like `file-symlink-p' for tramp files."
+  "Like `file-symlink-p' for Tramp files."
   (with-parsed-tramp-file-name filename nil
     (let ((x (car (file-attributes filename))))
       (when (stringp x)
        ;; When Tramp is running on VMS, then `file-name-absolute-p'
        ;; might do weird things.
        (if (file-name-absolute-p x)
-           (tramp-make-tramp-file-name
-            multi-method method user host x)
+           (tramp-make-tramp-file-name method user host x)
          x)))))
 
 (defun tramp-handle-file-writable-p (filename)
-  "Like `file-writable-p' for tramp files."
+  "Like `file-writable-p' for Tramp files."
   (with-parsed-tramp-file-name filename nil
-    (if (file-exists-p filename)
-       ;; Existing files must be writable.
-       (zerop (tramp-run-test "-w" filename))
-      ;; If file doesn't exist, check if directory is writable.
-      (and (zerop (tramp-run-test
-                  "-d" (file-name-directory filename)))
-          (zerop (tramp-run-test
-                  "-w" (file-name-directory filename)))))))
+    (with-file-property v localname "file-writable-p"
+      (if (file-exists-p filename)
+         ;; Existing files must be writable.
+         (zerop (tramp-run-test "-w" filename))
+       ;; If file doesn't exist, check if directory is writable.
+       (and (zerop (tramp-run-test
+                    "-d" (file-name-directory filename)))
+            (zerop (tramp-run-test
+                    "-w" (file-name-directory filename))))))))
 
 (defun tramp-handle-file-ownership-preserved-p (filename)
-  "Like `file-ownership-preserved-p' for tramp files."
+  "Like `file-ownership-preserved-p' for Tramp files."
   (with-parsed-tramp-file-name filename nil
-    (let ((attributes (file-attributes filename)))
-      ;; Return t if the file doesn't exist, since it's true that no
-      ;; information would be lost by an (attempted) delete and create.
-      (or (null attributes)
-         (= (nth 2 attributes)
-            (tramp-get-remote-uid multi-method method user host))))))
+    (with-file-property v localname "file-ownership-preserved-p"
+      (let ((attributes (file-attributes filename)))
+       ;; Return t if the file doesn't exist, since it's true that no
+       ;; information would be lost by an (attempted) delete and create.
+       (or (null attributes)
+           (= (nth 2 attributes) (tramp-get-remote-uid v 'integer)))))))
 
 ;; Other file name ops.
 
-;; ;; Matthias K\e,Av\e(Bppe <mkoeppe@mail.math.uni-magdeburg.de>
-;; (defun tramp-handle-directory-file-name (directory)
-;;   "Like `directory-file-name' for tramp files."
-;;   (if (and (eq (aref directory (- (length directory) 1)) ?/)
-;;        (not (eq (aref directory (- (length directory) 2)) ?:)))
-;;       (substring directory 0 (- (length directory) 1))
-;;     directory))
-
-;; ;; Philippe Troin <phil@fifi.org>
-;; (defun tramp-handle-directory-file-name (directory)
-;;   "Like `directory-file-name' for tramp files."
-;;   (with-parsed-tramp-file-name directory nil
-;;     (let ((directory-length-1 (1- (length directory))))
-;;       (save-match-data
-;;     (if (and (eq (aref directory directory-length-1) ?/)
-;;              (eq (string-match tramp-file-name-regexp directory) 0)
-;;              (/= (match-end 0) directory-length-1))
-;;         (substring directory 0 directory-length-1)
-;;       directory)))))
-
 (defun tramp-handle-directory-file-name (directory)
-  "Like `directory-file-name' for tramp files."
+  "Like `directory-file-name' for Tramp files."
   ;; If localname component of filename is "/", leave it unchanged.
   ;; Otherwise, remove any trailing slash from localname component.
   ;; Method, host, etc, are unchanged.  Does it make sense to try
@@ -2743,145 +2729,138 @@ of."
 
 ;; Directory listings.
 
-(defun tramp-handle-directory-files (directory
-                                    &optional full match nosort files-only)
-  "Like `directory-files' for tramp files."
-  (with-parsed-tramp-file-name directory nil
-    (let (result x)
-      (save-excursion
-       (tramp-barf-unless-okay
-        multi-method method user host
-        (concat "cd " (tramp-shell-quote-argument localname))
-        nil
-        'file-error
-        "tramp-handle-directory-files: couldn't `cd %s'"
-        (tramp-shell-quote-argument localname))
-       (tramp-send-command
-        multi-method method user host
-        (concat (tramp-get-ls-command multi-method method user host)
-                " -a | cat"))
-       (tramp-wait-for-output)
-       (goto-char (point-max))
-       (while (zerop (forward-line -1))
-         (setq x (buffer-substring (point)
-                                   (tramp-line-end-position)))
-         (when (or (not match) (string-match match x))
-           (if full
-               (push (concat (file-name-as-directory directory)
-                             x)
-                     result)
-             (push x result))))
-       (tramp-send-command multi-method method user host "cd")
-       (tramp-wait-for-output)
-       ;; Remove non-files or non-directories if necessary.  Using
-       ;; the remote shell for this would probably be way faster.
-       ;; Maybe something could be adapted from
-       ;; tramp-handle-file-name-all-completions.
-       (when files-only
-         (let ((temp (nreverse result))
-               item)
-           (setq result nil)
-           (if (equal files-only t)
-               ;; files only
-               (while temp
-                 (setq item (pop temp))
-                 (when (file-regular-p item)
-                   (push item result)))
-             ;; directories only
-             (while temp
-               (setq item (pop temp))
-               (when (file-directory-p item)
-                 (push item result)))))))
+(defun tramp-handle-directory-files
+  (directory &optional full match nosort files-only)
+  "Like `directory-files' for Tramp files."
+  ;; FILES-ONLY is valid for XEmacs only.
+  (when (file-directory-p directory)
+    (setq directory (expand-file-name directory))
+    (let ((temp (nreverse (file-name-all-completions "" directory)))
+         result item)
+
+      (while temp
+       (setq item (directory-file-name (pop temp)))
+       (when (and (or (null match) (string-match match item))
+                  (or (null files-only)
+                      ;; files only
+                      (and (equal files-only t) (file-regular-p item))
+                      ;; directories only
+                      (file-directory-p item)))
+         (push (if full (expand-file-name item directory) item)
+               result)))
       result)))
 
 (defun tramp-handle-directory-files-and-attributes
   (directory &optional full match nosort id-format)
-  "Like `directory-files-and-attributes' for tramp files."
-  (when (tramp-handle-file-exists-p directory)
-    (save-excursion
-      (setq directory (tramp-handle-expand-file-name directory))
-      (with-parsed-tramp-file-name directory nil
-        (tramp-maybe-send-perl-script multi-method method user host
-                                     tramp-perl-directory-files-and-attributes
-                                      "tramp_directory_files_and_attributes")
-        (tramp-send-command multi-method method user host
-                            (format "tramp_directory_files_and_attributes %s %s"
-                                    (tramp-shell-quote-argument localname)
-                                    (or id-format 'integer)))
-        (tramp-wait-for-output)
-        (let* ((root (cons nil (let ((object (read (current-buffer))))
-                                 (when (stringp object)
-                                   (error object))
-                                 object)))
-               (cell root))
-          (while (cdr cell)
-            (if (and match (not (string-match match (car (cadr cell)))))
-                ;; Remove from list
-                (setcdr cell (cddr cell))
-              ;; Include in list
-              (setq cell (cdr cell))
-              (let ((l (car cell)))
-                (tramp-convert-file-attributes multi-method method user host
-                                               (cdr l))
-                ;; If FULL, make file name absolute
-                (when full (setcar l (concat directory "/" (car l)))))))
-          (if nosort
-              (cdr root)
-            (sort (cdr root) (lambda (x y) (string< (car x) (car y))))))))))
+  "Like `directory-files-and-attributes' for Tramp files."
+  (unless id-format (setq id-format 'integer))
+  (when (file-directory-p directory)
+    (setq directory (expand-file-name directory))
+    (let* ((temp
+           (tramp-compat-copy-tree
+            (with-parsed-tramp-file-name directory nil
+              (with-file-property
+                  v localname
+                  (format "directory-files-and-attributes-%s" id-format)
+                (save-excursion
+                  (mapcar
+                   '(lambda (x)
+                      (cons (car x)
+                            (tramp-convert-file-attributes v (cdr x))))
+                   (if (tramp-get-remote-stat v)
+                       (tramp-handle-directory-files-and-attributes-with-stat
+                        v localname id-format)
+                     (if (tramp-get-remote-perl v)
+                         (tramp-handle-directory-files-and-attributes-with-perl
+                          v localname id-format)))))))))
+          result item)
+
+      (while temp
+       (setq item (pop temp))
+       (when (or (null match) (string-match match (car item)))
+         (when full
+           (setcar item (expand-file-name (car item) directory)))
+         (push item result)))
+
+      (if nosort
+         result
+       (sort result (lambda (x y) (string< (car x) (car y))))))))
+
+(defun tramp-handle-directory-files-and-attributes-with-perl
+  (vec localname &optional id-format)
+  "Implement `directory-files-and-attributes' for Tramp files using a Perl script."
+  (tramp-message vec 5 "directory-files-and-attributes with perl: %s" localname)
+  (tramp-maybe-send-script
+   vec tramp-perl-directory-files-and-attributes
+   "tramp_perl_directory_files_and_attributes")
+  (let ((object
+        (tramp-send-command-and-read
+         vec
+         (format "tramp_perl_directory_files_and_attributes %s %s"
+                 (tramp-shell-quote-argument localname) id-format))))
+    (when (stringp object) (tramp-error vec 'file-error object))
+    object))
+
+(defun tramp-handle-directory-files-and-attributes-with-stat
+  (vec localname &optional id-format)
+  "Implement `directory-files-and-attributes' for Tramp files using stat(1) command."
+  (tramp-message vec 5 "directory-files-and-attributes with stat: %s" localname)
+  (tramp-send-command-and-read
+   vec
+   (format
+    (concat
+     "cd %s; echo \"(\"; (%s -ab | xargs "
+     "%s -c '(\"%%n\" (\"%%N\") %%h %s %s %%X.0 %%Y.0 %%Z.0 %%s.0 \"%%A\" t %%i.0 -1)'); "
+     "echo \")\"")
+    (tramp-shell-quote-argument localname)
+    (tramp-get-ls-command vec)
+    (tramp-get-remote-stat vec)
+    (if (eq id-format 'integer) "%u" "\"%U\"")
+    (if (eq id-format 'integer) "%g" "\"%G\""))))
 
 ;; This function should return "foo/" for directories and "bar" for
-;; files.  We use `ls -ad' to get a list of files (including
-;; directories), and `find . -type d \! -name . -prune' to get a list
-;; of directories.
+;; files.
 (defun tramp-handle-file-name-all-completions (filename directory)
-  "Like `file-name-all-completions' for tramp files."
-  (with-parsed-tramp-file-name directory nil
-    (unless (save-match-data (string-match "/" filename))
-      (let* ((nowild tramp-completion-without-shell-p)
-            result)
-       (save-excursion
-         (tramp-barf-unless-okay
-          multi-method method user host
-          (format "cd %s" (tramp-shell-quote-argument localname))
-          nil 'file-error
-          "tramp-handle-file-name-all-completions: Couldn't `cd %s'"
-          (tramp-shell-quote-argument localname))
-
-         ;; Get a list of directories and files, including reliably
-         ;; tagging the directories with a trailing '/'.  Because I
-         ;; rock.  --daniel@danann.net
-         (tramp-send-command
-          multi-method method user host
-          (format (concat "%s -a %s 2>/dev/null | while read f; do "
-                          "if test -d \"$f\" 2>/dev/null; "
-                          "then echo \"$f/\"; else echo \"$f\"; fi; done")
-                  (tramp-get-ls-command multi-method method user host)
-                  (if (or nowild (zerop (length filename)))
-                      ""
-                    (format "-d %s*"
-                            (tramp-shell-quote-argument filename)))))
-
-         ;; Now grab the output.
-         (tramp-wait-for-output)
-         (goto-char (point-max))
-         (while (zerop (forward-line -1))
-           (push (buffer-substring (point)
-                                   (tramp-line-end-position))
-                 result))
-
-         (tramp-send-command multi-method method user host "cd")
-         (tramp-wait-for-output)
-
-         ;; Return the list.
-         (if nowild
-             (all-completions filename (mapcar 'list result))
-           result))))))
-
+  "Like `file-name-all-completions' for Tramp files."
+  (unless (save-match-data (string-match "/" filename))
+    (with-parsed-tramp-file-name directory nil
+      (all-completions
+       filename
+       (mapcar
+       'list
+       (with-file-property v localname "file-name-all-completions"
+         (let (result)
+          (tramp-barf-unless-okay
+           v
+           (format "cd %s" (tramp-shell-quote-argument localname))
+           "tramp-handle-file-name-all-completions: Couldn't `cd %s'"
+           (tramp-shell-quote-argument localname))
+
+          ;; Get a list of directories and files, including reliably
+          ;; tagging the directories with a trailing '/'.  Because I
+          ;; rock.  --daniel@danann.net
+          (tramp-send-command
+           v
+           (format (concat "%s -ab 2>/dev/null | while read f; do "
+                           "if %s -d \"$f\" 2>/dev/null; "
+                           "then echo \"$f/\"; else echo \"$f\"; fi; done")
+                   (tramp-get-ls-command v)
+                   (tramp-get-test-command v)))
+
+          ;; Now grab the output.
+          (with-current-buffer (tramp-get-buffer v)
+            (goto-char (point-max))
+            (while (zerop (forward-line -1))
+              (push (buffer-substring
+                     (point) (tramp-compat-line-end-position))
+                    result)))
+
+          result)))))))
 
 ;; The following isn't needed for Emacs 20 but for 19.34?
 (defun tramp-handle-file-name-completion
   (filename directory &optional predicate)
-  "Like `file-name-completion' for tramp files."
+  "Like `file-name-completion' for Tramp files."
   (unless (tramp-tramp-file-p directory)
     (error
      "tramp-handle-file-name-completion invoked on non-tramp directory `%s'"
@@ -2896,18 +2875,17 @@ of."
 
 (defun tramp-handle-add-name-to-file
   (filename newname &optional ok-if-already-exists)
-  "Like `add-name-to-file' for tramp files."
+  "Like `add-name-to-file' for Tramp files."
+  (unless (tramp-equal-remote filename newname)
+    (with-parsed-tramp-file-name
+       (if (tramp-tramp-file-p filename) filename newname) nil
+      (tramp-error
+       v 'file-error
+       "add-name-to-file: %s"
+       "only implemented for same method, same user, same host")))
   (with-parsed-tramp-file-name filename v1
     (with-parsed-tramp-file-name newname v2
-      (let ((ln (when v1 (tramp-get-remote-ln
-                         v1-multi-method v1-method v1-user v1-host))))
-       (unless (and v1-method v2-method v1-user v2-user v1-host v2-host
-                    (equal v1-multi-method v2-multi-method)
-                    (equal v1-method v2-method)
-                    (equal v1-user v2-user)
-                    (equal v1-host v2-host))
-         (error "add-name-to-file: %s"
-                "only implemented for same method, same user, same host"))
+      (let ((ln (when v1 (tramp-get-remote-ln v1))))
        (when (and (not ok-if-already-exists)
                   (file-exists-p newname)
                   (not (numberp ok-if-already-exists))
@@ -2915,34 +2893,42 @@ of."
                    (format
                     "File %s already exists; make it a new name anyway? "
                     newname)))
-         (error "add-name-to-file: file %s already exists" newname))
+         (tramp-error
+          v2 'file-error
+          "add-name-to-file: file %s already exists" newname))
+       (tramp-flush-file-property v2 v2-localname)
        (tramp-barf-unless-okay
-        v1-multi-method v1-method v1-user v1-host
+        v1
         (format "%s %s %s" ln (tramp-shell-quote-argument v1-localname)
                 (tramp-shell-quote-argument v2-localname))
-        nil 'file-error
         "error with add-name-to-file, see buffer `%s' for details"
         (buffer-name))))))
 
 (defun tramp-handle-copy-file
-  (filename newname &optional ok-if-already-exists keep-date)
-  "Like `copy-file' for tramp files."
+  (filename newname &optional ok-if-already-exists keep-date preserve-uid-gid)
+  "Like `copy-file' for Tramp files."
   ;; Check if both files are local -- invoke normal copy-file.
-  ;; Otherwise, use tramp from local system.
+  ;; Otherwise, use Tramp from local system.
   (setq filename (expand-file-name filename))
   (setq newname (expand-file-name newname))
-  ;; At least one file a tramp file?
-  (if (or (tramp-tramp-file-p filename)
-          (tramp-tramp-file-p newname))
-      (tramp-do-copy-or-rename-file
-       'copy filename newname ok-if-already-exists keep-date)
+  (cond
+   ;; At least one file a tramp file?
+   ((or (tramp-tramp-file-p filename)
+       (tramp-tramp-file-p newname))
+    (tramp-do-copy-or-rename-file
+     'copy filename newname ok-if-already-exists keep-date preserve-uid-gid))
+   ;; Compat section.
+   (preserve-uid-gid
     (tramp-run-real-handler
      'copy-file
-     (list filename newname ok-if-already-exists keep-date))))
+     (list filename newname ok-if-already-exists keep-date preserve-uid-gid)))
+   (t
+    (tramp-run-real-handler
+     'copy-file (list filename newname ok-if-already-exists keep-date)))))
 
 (defun tramp-handle-rename-file
   (filename newname &optional ok-if-already-exists)
-  "Like `rename-file' for tramp files."
+  "Like `rename-file' for Tramp files."
   ;; Check if both files are local -- invoke normal rename-file.
   ;; Otherwise, use tramp from local system.
   (setq filename (expand-file-name filename))
@@ -2951,188 +2937,249 @@ of."
   (if (or (tramp-tramp-file-p filename)
           (tramp-tramp-file-p newname))
       (tramp-do-copy-or-rename-file
-       'rename filename newname ok-if-already-exists)
-    (tramp-run-real-handler 'rename-file
-                          (list filename newname ok-if-already-exists))))
+       'rename filename newname ok-if-already-exists t t)
+    (tramp-run-real-handler
+     'rename-file (list filename newname ok-if-already-exists))))
 
 (defun tramp-do-copy-or-rename-file
-  (op filename newname &optional ok-if-already-exists keep-date)
+  (op filename newname &optional ok-if-already-exists keep-date preserve-uid-gid)
   "Copy or rename a remote file.
 OP must be `copy' or `rename' and indicates the operation to perform.
 FILENAME specifies the file to copy or rename, NEWNAME is the name of
 the new file (for copy) or the new name of the file (for rename).
 OK-IF-ALREADY-EXISTS means don't barf if NEWNAME exists already.
 KEEP-DATE means to make sure that NEWNAME has the same timestamp
-as FILENAME.
+as FILENAME.  PRESERVE-UID-GID, when non-nil, instructs to keep
+the uid and gid if both files are on the same host.
 
 This function is invoked by `tramp-handle-copy-file' and
 `tramp-handle-rename-file'.  It is an error if OP is neither of `copy'
 and `rename'.  FILENAME and NEWNAME must be absolute file names."
   (unless (memq op '(copy rename))
     (error "Unknown operation `%s', must be `copy' or `rename'" op))
-  (unless ok-if-already-exists
-    (when (file-exists-p newname)
-      (signal 'file-already-exists
-              (list "File already exists" newname))))
   (let ((t1 (tramp-tramp-file-p filename))
-       (t2 (tramp-tramp-file-p newname))
-       v1-multi-method v1-method v1-user v1-host v1-localname
-       v2-multi-method v2-method v2-user v2-host v2-localname)
-
-    ;; Check which ones of source and target are Tramp files.
-    ;; We cannot invoke `with-parsed-tramp-file-name';
-    ;; it fails if the file isn't a Tramp file name.
-    (if t1
-       (with-parsed-tramp-file-name filename l
-         (setq v1-multi-method l-multi-method
-               v1-method l-method
-               v1-user l-user
-               v1-host l-host
-               v1-localname l-localname))
-      (setq v1-localname filename))
-    (if t2
-       (with-parsed-tramp-file-name newname l
-         (setq v2-multi-method l-multi-method
-               v2-method l-method
-               v2-user l-user
-               v2-host l-host
-               v2-localname l-localname))
-      (setq v2-localname newname))
+       (t2 (tramp-tramp-file-p newname)))
 
-    (cond
-     ;; Both are Tramp files.
-     ((and t1 t2)
-      (cond
-       ;; Shortcut: if method, host, user are the same for both
-       ;; files, we invoke `cp' or `mv' on the remote host
-       ;; directly.
-       ((and (equal v1-multi-method v2-multi-method)
-            (equal v1-method v2-method)
-            (equal v1-user v2-user)
-            (equal v1-host v2-host))
-       (tramp-do-copy-or-rename-file-directly
-        op v1-multi-method v1-method v1-user v1-host
-        v1-localname v2-localname keep-date))
-       ;; If both source and target are Tramp files,
-       ;; both are using the same copy-program, then we
-       ;; can invoke rcp directly.  Note that
-       ;; default-directory should point to a local
-       ;; directory if we want to invoke rcp.
-       ((and (not v1-multi-method)
-            (not v2-multi-method)
-            (equal v1-method v2-method)
-            (tramp-method-out-of-band-p
-             v1-multi-method v1-method v1-user v1-host)
-            (not (string-match "\\([^#]*\\)#\\(.*\\)" v1-host))
-            (not (string-match "\\([^#]*\\)#\\(.*\\)" v2-host)))
-       (tramp-do-copy-or-rename-file-out-of-band
-        op filename newname keep-date))
-       ;; No shortcut was possible.  So we copy the
-       ;; file first.  If the operation was `rename', we go
-       ;; back and delete the original file (if the copy was
-       ;; successful).  The approach is simple-minded: we
-       ;; create a new buffer, insert the contents of the
-       ;; source file into it, then write out the buffer to
-       ;; the target file.  The advantage is that it doesn't
-       ;; matter which filename handlers are used for the
-       ;; source and target file.
-       (t
-       (tramp-do-copy-or-rename-file-via-buffer
-        op filename newname keep-date))))
-
-     ;; One file is a Tramp file, the other one is local.
-     ((or t1 t2)
-      ;; If the Tramp file has an out-of-band method, the corresponding
-      ;; copy-program can be invoked.
-      (if (and (not v1-multi-method)
-              (not v2-multi-method)
-              (or (and t1 (tramp-method-out-of-band-p
-                            v1-multi-method v1-method v1-user v1-host))
-                  (and t2 (tramp-method-out-of-band-p
-                            v2-multi-method v2-method v2-user v2-host))))
-         (tramp-do-copy-or-rename-file-out-of-band
-          op filename newname keep-date)
-       ;; Use the generic method via a Tramp buffer.
-       (tramp-do-copy-or-rename-file-via-buffer
-        op filename newname keep-date)))
+    (unless ok-if-already-exists
+      (when (and t2 (file-exists-p newname))
+       (with-parsed-tramp-file-name newname nil
+         (tramp-error
+          v 'file-already-exists "File %s already exists" newname))))
 
-     (t
-      ;; One of them must be a Tramp file.
-      (error "Tramp implementation says this cannot happen")))))
+    (prog1
+       (cond
+        ;; Both are Tramp files.
+        ((and t1 t2)
+         (with-parsed-tramp-file-name filename v1
+           (with-parsed-tramp-file-name newname v2
+             (cond
+              ;; Shortcut: if method, host, user are the same for both
+              ;; files, we invoke `cp' or `mv' on the remote host
+              ;; directly.
+              ((tramp-equal-remote filename newname)
+               (tramp-do-copy-or-rename-file-directly
+                op filename newname
+                ok-if-already-exists keep-date preserve-uid-gid))
+
+              ;; If both source and target are Tramp files,
+              ;; both are using the same copy-program, then we
+              ;; can invoke rcp directly.  Note that
+              ;; default-directory should point to a local
+              ;; directory if we want to invoke rcp.
+              ((and (equal v1-method v2-method)
+                    (tramp-method-out-of-band-p v1)
+                    (> (nth 7 (file-attributes filename))
+                       tramp-copy-size-limit))
+               (tramp-do-copy-or-rename-file-out-of-band
+                op filename newname keep-date))
+
+              ;; No shortcut was possible.  So we copy the
+              ;; file first.  If the operation was `rename', we go
+              ;; back and delete the original file (if the copy was
+              ;; successful).  The approach is simple-minded: we
+              ;; create a new buffer, insert the contents of the
+              ;; source file into it, then write out the buffer to
+              ;; the target file.  The advantage is that it doesn't
+              ;; matter which filename handlers are used for the
+              ;; source and target file.
+              (t
+               (tramp-do-copy-or-rename-file-via-buffer
+                op filename newname keep-date))))))
+
+        ;; One file is a Tramp file, the other one is local.
+        ((or t1 t2)
+         (with-parsed-tramp-file-name (if t1 filename newname) nil
+           (cond
+            ;; Fast track on local machine.
+            ((tramp-local-host-p v)
+             (tramp-do-copy-or-rename-file-directly
+              op filename newname
+              ok-if-already-exists keep-date preserve-uid-gid))
+
+            ;; If the Tramp file has an out-of-band method, the corresponding
+            ;; copy-program can be invoked.
+            ((and (tramp-method-out-of-band-p v)
+                  (> (nth 7 (file-attributes filename))
+                     tramp-copy-size-limit))
+             (tramp-do-copy-or-rename-file-out-of-band
+              op filename newname keep-date))
+
+            ;; Use the inline method via a Tramp buffer.
+            (t (tramp-do-copy-or-rename-file-via-buffer
+                op filename newname keep-date)))))
+
+        (t
+         ;; One of them must be a Tramp file.
+         (error "Tramp implementation says this cannot happen")))
+
+      ;; When newname did exist, we have wrong cached values.
+      (when t2
+       (with-parsed-tramp-file-name newname nil
+         (tramp-flush-file-property v localname))))))
 
 (defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date)
   "Use an Emacs buffer to copy or rename a file.
 First arg OP is either `copy' or `rename' and indicates the operation.
 FILENAME is the source file, NEWNAME the target file.
 KEEP-DATE is non-nil if NEWNAME should have the same timestamp as FILENAME."
-  (let ((trampbuf (get-buffer-create "*tramp output*"))
-       (modtime (nth 5 (file-attributes filename))))
-    (when (and keep-date (or (null modtime) (equal modtime '(0 0))))
-      (tramp-message
-       1 (concat "Warning: cannot preserve file time stamp"
-                " with inline copying across machines")))
-    (save-excursion
-      (set-buffer trampbuf) (erase-buffer)
-      (insert-file-contents-literally filename)
-      ;; We don't want the target file to be compressed, so we let-bind
-      ;; `jka-compr-inhibit' to t.
-      (let ((coding-system-for-write 'binary)
-           (jka-compr-inhibit t))
-       (write-region (point-min) (point-max) newname))
-      ;; KEEP-DATE handling.
-      (when keep-date
-       (when (and (not (null modtime))
-                  (not (equal modtime '(0 0))))
-         (tramp-touch newname modtime)))
-      ;; Set the mode.
-      (set-file-modes newname (file-modes filename)))
+  (let ((modtime (nth 5 (file-attributes filename))))
+    (unwind-protect
+       (with-temp-buffer
+         (let ((coding-system-for-read 'binary))
+           (insert-file-contents-literally filename))
+         ;; We don't want the target file to be compressed, so we
+         ;; let-bind `jka-compr-inhibit' to t.
+         (let ((coding-system-for-write 'binary)
+               (jka-compr-inhibit t))
+           (write-region (point-min) (point-max) newname))))
+    ;; KEEP-DATE handling.
+    (when keep-date (set-file-times newname modtime))
+    ;; Set the mode.
+    (set-file-modes newname (file-modes filename))
     ;; If the operation was `rename', delete the original file.
     (unless (eq op 'copy)
       (delete-file filename))))
 
 (defun tramp-do-copy-or-rename-file-directly
 (op multi-method method user host localname1 localname2 keep-date)
(op filename newname ok-if-already-exists keep-date preserve-uid-gid)
   "Invokes `cp' or `mv' on the remote system.
 OP must be one of `copy' or `rename', indicating `cp' or `mv',
-respectively.  METHOD, USER, and HOST specify the connection.
-LOCALNAME1 and LOCALNAME2 specify the two arguments of `cp' or `mv'.
-If KEEP-DATE is non-nil, preserve the time stamp when copying."
-  ;; CCC: What happens to the timestamp when renaming?
-  (let ((cmd (cond ((and (eq op 'copy) keep-date) "cp -f -p")
-                   ((eq op 'copy) "cp -f")
-                   ((eq op 'rename) "mv -f")
-                   (t (error
-                       "Unknown operation `%s', must be `copy' or `rename'"
-                       op)))))
-    (save-excursion
-      (tramp-send-command
-       multi-method method user host
-       (format "%s %s %s"
-               cmd
-               (tramp-shell-quote-argument localname1)
-               (tramp-shell-quote-argument localname2)))
-      (tramp-wait-for-output)
-      (goto-char (point-min))
-      (unless
-         (or
-          (and (eq op 'copy) keep-date
-               ;; Mask cp -f error.
-               (re-search-forward tramp-operation-not-permitted-regexp nil t))
-          (zerop (tramp-send-command-and-check
-                  multi-method method user host nil nil)))
-       (pop-to-buffer (current-buffer))
-       (signal 'file-error
-               (format "Copying directly failed, see buffer `%s' for details."
-                       (buffer-name)))))
-    ;; Set the mode.
-    ;; CCC: Maybe `chmod --reference=localname1 localname2' could be used
-    ;;      where available?
-    (unless (or (eq op 'rename) keep-date)
-      (set-file-modes
-       (tramp-make-tramp-file-name multi-method method user host localname2)
-       (file-modes
-       (tramp-make-tramp-file-name
-        multi-method method user host localname1))))))
+respectively.  FILENAME specifies the file to copy or rename,
+NEWNAME is the name of the new file (for copy) or the new name of
+the file (for rename).  Both files must reside on the same host.
+KEEP-DATE means to make sure that NEWNAME has the same timestamp
+as FILENAME.  PRESERVE-UID-GID, when non-nil, instructs to keep
+the uid and gid from FILENAME."
+  (let ((t1 (tramp-tramp-file-p filename))
+       (t2 (tramp-tramp-file-p newname)))
+    (with-parsed-tramp-file-name (if t1 filename newname) nil
+      (let* ((cmd (cond ((and (eq op 'copy) preserve-uid-gid) "cp -f -p")
+                       ((eq op 'copy) "cp -f")
+                       ((eq op 'rename) "mv -f")
+                       (t (tramp-error
+                           v 'file-error
+                           "Unknown operation `%s', must be `copy' or `rename'"
+                           op))))
+            (localname1
+             (if t1 (tramp-handle-file-remote-p filename 'localname) filename))
+            (localname2
+             (if t2 (tramp-handle-file-remote-p newname 'localname) newname))
+            (prefix (file-remote-p (if t1 filename newname))))
+
+       (cond
+        ;; Both files are on a remote host, with same user.
+        ((and t1 t2)
+         (tramp-send-command
+          v
+          (format "%s %s %s" cmd
+                  (tramp-shell-quote-argument localname1)
+                  (tramp-shell-quote-argument localname2)))
+         (with-current-buffer (tramp-get-buffer v)
+           (goto-char (point-min))
+           (unless
+               (or
+                (and keep-date
+                     ;; Mask cp -f error.
+                     (re-search-forward
+                      tramp-operation-not-permitted-regexp nil t))
+                (zerop (tramp-send-command-and-check v nil)))
+             (tramp-error-with-buffer
+              nil v 'file-error
+              "Copying directly failed, see buffer `%s' for details."
+              (buffer-name)))))
+
+        ;; We are on the local host.
+        ((or t1 t2)
+         (cond
+          ;; We can do it directly.
+          ((and (file-readable-p localname1)
+                (file-writable-p (file-name-directory localname2)))
+           (if (eq op 'copy)
+               (tramp-compat-copy-file
+                localname1 localname2 ok-if-already-exists
+                keep-date preserve-uid-gid)
+             (rename-file localname1 localname2 ok-if-already-exists)))
+
+          ;; We can do it directly with `tramp-send-command'
+          ((and (file-readable-p (concat prefix localname1))
+                (file-writable-p
+                 (file-name-directory (concat prefix localname2))))
+           (tramp-do-copy-or-rename-file-directly
+            op (concat prefix localname1) (concat prefix localname2)
+            ok-if-already-exists keep-date t)
+           ;; We must change the ownership to the local user.
+           (tramp-set-file-uid-gid
+            (concat prefix localname2)
+            (tramp-get-local-uid 'integer)
+            (tramp-get-local-gid 'integer)))
+
+          ;; We need a temporary file in between.
+          (t
+           ;; Create the temporary file.
+           (let ((tmpfile (tramp-compat-make-temp-file localname1)))
+             (cond
+              (t1
+               (tramp-send-command
+                v (format
+                   "%s %s %s" cmd
+                   (tramp-shell-quote-argument localname1)
+                   (tramp-shell-quote-argument tmpfile)))
+               ;; We must change the ownership as remote user.
+               (tramp-set-file-uid-gid
+                (concat prefix tmpfile)
+                (tramp-get-local-uid 'integer)
+                (tramp-get-local-gid 'integer)))
+              (t2
+               (if (eq op 'copy)
+                   (tramp-compat-copy-file
+                    localname1 tmpfile ok-if-already-exists
+                    keep-date preserve-uid-gid)
+                 (rename-file localname1 tmpfile ok-if-already-exists))
+               ;; We must change the ownership as local user.
+               (tramp-set-file-uid-gid
+                tmpfile
+                (tramp-get-remote-uid v 'integer)
+                (tramp-get-remote-gid v 'integer))))
+
+             ;; Move the temporary file to its destination.
+             (cond
+              (t2
+               (tramp-send-command
+                v (format
+                   "mv -f %s %s"
+                   (tramp-shell-quote-argument tmpfile)
+                   (tramp-shell-quote-argument localname2))))
+              (t1
+               (rename-file tmpfile localname2 ok-if-already-exists)))))))))
+
+      ;; Set the time and mode. Mask possible errors.
+      ;; Won't be applied for 'rename.
+      (condition-case nil
+         (when (and keep-date (not preserve-uid-gid))
+           (set-file-times newname (nth 5 (file-attributes filename)))
+           (set-file-modes newname (file-modes filename)))
+       (error)))))
+
 
 (defun tramp-do-copy-or-rename-file-out-of-band (op filename newname keep-date)
   "Invoke rcp program to copy.
@@ -3140,176 +3187,137 @@ One of FILENAME and NEWNAME must be a Tramp name, the other must
 be a local filename.  The method used must be an out-of-band method."
   (let ((t1 (tramp-tramp-file-p filename))
        (t2 (tramp-tramp-file-p newname))
-       v1-multi-method v1-method v1-user v1-host v1-localname
-       v2-multi-method v2-method v2-user v2-host v2-localname
-       multi-method method user host copy-program copy-args
-       source target trampbuf)
-
-    ;; Check which ones of source and target are Tramp files.
-    ;; We cannot invoke `with-parsed-tramp-file-name';
-    ;; it fails if the file isn't a Tramp file name.
-    (if t1
-       (with-parsed-tramp-file-name filename l
-         (setq v1-multi-method l-multi-method
-               v1-method l-method
-               v1-user l-user
-               v1-host l-host
-               v1-localname l-localname
-               multi-method l-multi-method
-               method (tramp-find-method
-                       v1-multi-method v1-method v1-user v1-host)
-               user l-user
-               host l-host
-               copy-program (tramp-get-method-parameter
-                             v1-multi-method method
-                             v1-user v1-host 'tramp-copy-program)
-               copy-args (tramp-get-method-parameter
-                                v1-multi-method method
-                                v1-user v1-host 'tramp-copy-args)))
-      (setq v1-localname filename))
-
-    (if t2
-       (with-parsed-tramp-file-name newname l
-         (setq v2-multi-method l-multi-method
-               v2-method l-method
-               v2-user l-user
-               v2-host l-host
-               v2-localname l-localname
-               multi-method l-multi-method
-               method (tramp-find-method
-                       v2-multi-method v2-method v2-user v2-host)
-               user l-user
-               host l-host
-               copy-program (tramp-get-method-parameter
-                             v2-multi-method method
-                             v2-user v2-host 'tramp-copy-program)
-               copy-args (tramp-get-method-parameter
-                                v2-multi-method method
-                                v2-user v2-host 'tramp-copy-args)))
-      (setq v2-localname newname))
-
-    ;; The following should be changed.  We need a more general
-    ;; mechanism to parse extra host args.
-    (if (not t1)
-       (setq source v1-localname)
-      (when (string-match "\\([^#]*\\)#\\(.*\\)" v1-host)
-       (setq copy-args (cons "-P" (cons (match-string 2 v1-host) copy-args)))
-       (setq v1-host (match-string 1 v1-host)))
-      (setq source
-            (tramp-make-copy-program-file-name
-             v1-user v1-host
-             (tramp-shell-quote-argument v1-localname))))
-
-    (if (not t2)
-       (setq target v2-localname)
-      (when (string-match "\\([^#]*\\)#\\(.*\\)" v2-host)
-       (setq copy-args (cons "-P" (cons (match-string 2 v2-host) copy-args)))
-       (setq v2-host (match-string 1 v2-host)))
-      (setq target
-            (tramp-make-copy-program-file-name
-             v2-user v2-host
-             (tramp-shell-quote-argument v2-localname))))
-
-    ;; Handle ControlMaster/ControlPath
-    (setq copy-args
-         (mapcar
-          (lambda (x)
-            (format-spec
-             x `((?t . ,(format "/tmp/%s" tramp-temp-name-prefix)))))
-          copy-args))
-
-    ;; Handle keep-date argument
-    (when keep-date
-      (if t1
-         (setq copy-args
-               (cons (tramp-get-method-parameter
-                      v1-multi-method method
-                      v1-user v1-host 'tramp-copy-keep-date-arg)
-                     copy-args))
-       (setq copy-args
-             (cons (tramp-get-method-parameter
-                    v2-multi-method method
-                    v2-user v2-host 'tramp-copy-keep-date-arg)
-                   copy-args))))
-
-    (setq copy-args (append copy-args (list source target))
-         trampbuf (generate-new-buffer
-                   (tramp-buffer-name multi-method method user host)))
-
-    ;; Use an asynchronous process.  By this, password can be handled.
-    (save-excursion
+       copy-program copy-args copy-keep-date port spec
+       source target)
+
+    (with-parsed-tramp-file-name (if t1 filename newname) nil
+
+      ;; Expand hops.  Might be necessary for gateway methods.
+      (setq v (car (tramp-compute-multi-hops v)))
+      (aset v 3 localname)
+
+      ;; Check which ones of source and target are Tramp files.
+      (setq source (if t1 (tramp-make-copy-program-file-name v) filename)
+           target (if t2 (tramp-make-copy-program-file-name v) newname))
+
+      ;; Check for port number.  Until now, there's no need for handling
+      ;; like method, user, host.
+      (setq host (tramp-file-name-real-host v)
+           port (tramp-file-name-port v)
+           port (or (and port (number-to-string port)) ""))
+
+      ;; Compose copy command.
+      (setq spec `((?h . ,host) (?u . ,user) (?p . ,port)
+                  (?t . ,(tramp-make-tramp-temp-file v 'dont-create))
+                  (?k . ,(if keep-date " " "")))
+           copy-program (tramp-get-method-parameter
+                         method 'tramp-copy-program)
+           copy-keep-date (tramp-get-method-parameter
+                           method 'tramp-copy-keep-date)
+           copy-args
+           (delq
+            nil
+            (mapcar
+             '(lambda (x)
+                (setq
+                 ;; " " is indication for keep-date argument.
+                 x (delete " " (mapcar '(lambda (y) (format-spec y spec)) x)))
+                (unless (member "" x) (mapconcat 'identity x " ")))
+             (tramp-get-method-parameter
+              method 'tramp-copy-args))))
 
       ;; Check for program.
       (when (and (fboundp 'executable-find)
-                (not (executable-find copy-program)))
-       (error "Cannot find copy program: %s" copy-program))
+                (not (let ((default-directory
+                             (tramp-compat-temporary-file-directory)))
+                       (executable-find copy-program))))
+       (tramp-error
+        v 'file-error "Cannot find copy program: %s" copy-program))
 
-      (set-buffer trampbuf)
-      (setq tramp-current-multi-method multi-method
-           tramp-current-method method
-           tramp-current-user user
-           tramp-current-host host)
-      (message "Transferring %s to %s..." filename newname)
+      (tramp-message v 0 "Transferring %s to %s..." filename newname)
 
-      ;; Use rcp-like program for file transfer.
       (unwind-protect
-          (let* ((default-directory
-                  (if (and (stringp default-directory)
-                           (file-accessible-directory-p default-directory))
-                      default-directory
-                    (tramp-temporary-file-directory)))
-                (p (apply 'start-process (buffer-name trampbuf) trampbuf
-                          copy-program copy-args)))
-            (tramp-set-process-query-on-exit-flag p nil)
-            (tramp-process-actions p multi-method method user host
-                                   tramp-actions-copy-out-of-band))
-        (kill-buffer trampbuf))
-      (message "Transferring %s to %s...done" filename newname)
+         (with-temp-buffer
+           ;; The default directory must be remote.
+           (let ((default-directory
+                   (file-name-directory (if t1 filename newname))))
+             ;; Set the transfer process properties.
+             (tramp-set-connection-property
+              v "process-name" (buffer-name (current-buffer)))
+             (tramp-set-connection-property
+              v "process-buffer" (current-buffer))
+
+             ;; Use an asynchronous process.  By this, password can
+             ;; be handled.  The default directory must be local, in
+             ;; order to apply the correct `copy-program'.  We don't
+             ;; set a timeout, because the copying of large files can
+             ;; last longer than 60 secs.
+             (let ((p (let ((default-directory
+                              (tramp-compat-temporary-file-directory)))
+                        (apply 'start-process
+                               (tramp-get-connection-property
+                                v "process-name" nil)
+                               (tramp-get-connection-property
+                                v "process-buffer" nil)
+                               copy-program
+                               (append copy-args (list source target))))))
+               (tramp-message
+                v 6 "%s" (mapconcat 'identity (process-command p) " "))
+               (set-process-sentinel p 'tramp-flush-connection-property)
+               (tramp-set-process-query-on-exit-flag p nil)
+               (tramp-process-actions p v tramp-actions-copy-out-of-band))))
+
+       ;; Reset the transfer process properties.
+       (tramp-set-connection-property v "process-name" nil)
+       (tramp-set-connection-property v "process-buffer" nil))
+
+      (tramp-message v 0 "Transferring %s to %s...done" filename newname)
+
+      ;; Handle KEEP-DATE argument.
+      (when (and keep-date (not copy-keep-date))
+       (set-file-times newname (nth 5 (file-attributes filename))))
 
       ;; Set the mode.
-      (unless keep-date
+      (unless (and keep-date copy-keep-date)
        (set-file-modes newname (file-modes filename))))
 
     ;; If the operation was `rename', delete the original file.
     (unless (eq op 'copy)
       (delete-file filename))))
 
-;; mkdir
 (defun tramp-handle-make-directory (dir &optional parents)
-  "Like `make-directory' for tramp files."
+  "Like `make-directory' for Tramp files."
   (setq dir (expand-file-name dir))
   (with-parsed-tramp-file-name dir nil
     (save-excursion
       (tramp-barf-unless-okay
-       multi-method method user host
+       v
        (format " %s %s"
               (if parents "mkdir -p" "mkdir")
               (tramp-shell-quote-argument localname))
-       nil 'file-error
        "Couldn't make directory %s" dir))))
 
-;; CCC error checking?
 (defun tramp-handle-delete-directory (directory)
-  "Like `delete-directory' for tramp files."
+  "Like `delete-directory' for Tramp files."
   (setq directory (expand-file-name directory))
   (with-parsed-tramp-file-name directory nil
-    (save-excursion
-      (tramp-send-command
-       multi-method method user host
-       (format "rmdir %s ; echo ok"
-              (tramp-shell-quote-argument localname)))
-      (tramp-wait-for-output))))
+    (tramp-flush-directory-property v localname)
+    (unless (zerop (tramp-send-command-and-check
+                   v
+                   (format "rmdir %s"
+                           (tramp-shell-quote-argument localname))))
+      (tramp-error v 'file-error "Couldn't delete %s" directory))))
 
 (defun tramp-handle-delete-file (filename)
-  "Like `delete-file' for tramp files."
+  "Like `delete-file' for Tramp files."
   (setq filename (expand-file-name filename))
   (with-parsed-tramp-file-name filename nil
-    (save-excursion
-      (unless (zerop (tramp-send-command-and-check
-                     multi-method method user host
-                     (format "rm -f %s"
-                             (tramp-shell-quote-argument localname))))
-       (signal 'file-error "Couldn't delete Tramp file")))))
+    (tramp-flush-file-property v localname)
+    (unless (zerop (tramp-send-command-and-check
+                   v
+                   (format "rm -f %s"
+                           (tramp-shell-quote-argument localname))))
+      (tramp-error v 'file-error "Couldn't delete %s" filename))))
 
 ;; Dired.
 
@@ -3317,57 +3325,33 @@ be a local filename.  The method used must be an out-of-band method."
 ;;      we try and delete two directories under TRAMP :/
 (defun tramp-handle-dired-recursive-delete-directory (filename)
   "Recursively delete the directory given.
-This is like `dired-recursive-delete-directory' for tramp files."
+This is like `dired-recursive-delete-directory' for Tramp files."
   (with-parsed-tramp-file-name filename nil
-    ;; run a shell command 'rm -r <localname>'
+    (tramp-flush-directory-property v filename)
+    ;; Run a shell command 'rm -r <localname>'
     ;; Code shamelessly stolen for the dired implementation and, um, hacked :)
-    (or (file-exists-p filename)
-       (signal
-        'file-error
-        (list "Removing old file name" "no such directory" filename)))
+    (unless (file-exists-p filename)
+      (tramp-error v 'file-error "No such directory: %s" filename))
     ;; Which is better, -r or -R? (-r works for me <daniel@danann.net>)
-    (tramp-send-command multi-method method user host
-                       (format "rm -r %s" (tramp-shell-quote-argument localname)))
+    (tramp-send-command
+     v
+     (format "rm -r %s" (tramp-shell-quote-argument localname))
+     ;; Don't read the output, do it explicitely.
+     nil t)
     ;; Wait for the remote system to return to us...
     ;; This might take a while, allow it plenty of time.
-    (tramp-wait-for-output 120)
+    (tramp-wait-for-output (tramp-get-connection-process v) 120)
     ;; Make sure that it worked...
     (and (file-exists-p filename)
-        (error "Failed to recursively delete %s" filename))))
-
-(defun tramp-handle-dired-call-process (program discard &rest arguments)
-  "Like `dired-call-process' for tramp files."
-  (with-parsed-tramp-file-name default-directory nil
-    (save-excursion
-      (tramp-barf-unless-okay
-       multi-method method user host
-       (format "cd %s" (tramp-shell-quote-argument localname))
-       nil 'file-error
-       "tramp-handle-dired-call-process: Couldn't `cd %s'"
-       (tramp-shell-quote-argument localname))
-      (tramp-send-command
-       multi-method method user host
-       (mapconcat #'tramp-shell-quote-argument (cons program arguments) " "))
-      (tramp-wait-for-output))
-    (unless discard
-      ;; We cannot use `insert-buffer' because the tramp buffer
-      ;; changes its contents before insertion due to calling
-      ;; `expand-file' and alike.
-      (insert
-       (with-current-buffer
-          (tramp-get-buffer multi-method method user host)
-        (buffer-string))))
-    (save-excursion
-      (prog1
-         (tramp-send-command-and-check multi-method method user host nil)
-       (tramp-send-command multi-method method user host "cd")
-       (tramp-wait-for-output)))))
+        (tramp-error
+         v 'file-error "Failed to recursively delete %s" filename))))
 
 (defun tramp-handle-dired-compress-file (file &rest ok-flag)
-  "Like `dired-compress-file' for tramp files."
+  "Like `dired-compress-file' for Tramp files."
   ;; OK-FLAG is valid for XEmacs only, but not implemented.
   ;; Code stolen mainly from dired-aux.el.
   (with-parsed-tramp-file-name file nil
+    (tramp-flush-file-property v localname)
     (save-excursion
       (let ((suffixes
             (if (not (featurep 'xemacs))
@@ -3393,11 +3377,10 @@ This is like `dired-recursive-delete-directory' for tramp files."
               nil)
              ((and suffix (nth 2 suffix))
               ;; We found an uncompression rule.
-              (message "Uncompressing %s..." file)
+              (tramp-message v 0 "Uncompressing %s..." file)
               (when (zerop (tramp-send-command-and-check
-                            multi-method method user host
-                            (concat (nth 2 suffix) " " localname)))
-                (message "Uncompressing %s...done" file)
+                            v (concat (nth 2 suffix) " " localname)))
+                (tramp-message v 0 "Uncompressing %s...done" file)
                 ;; `dired-remove-file' is not defined in XEmacs
                 (funcall (symbol-function 'dired-remove-file) file)
                 (string-match (car suffix) file)
@@ -3405,11 +3388,10 @@ This is like `dired-recursive-delete-directory' for tramp files."
              (t
               ;; We don't recognize the file as compressed, so compress it.
               ;; Try gzip.
-              (message "Compressing %s..." file)
+              (tramp-message v 0 "Compressing %s..." file)
               (when (zerop (tramp-send-command-and-check
-                            multi-method method user host
-                            (concat "gzip -f " localname)))
-                (message "Compressing %s...done" file)
+                            v (concat "gzip -f " localname)))
+                (tramp-message v 0 "Compressing %s...done" file)
                 ;; `dired-remove-file' is not defined in XEmacs
                 (funcall (symbol-function 'dired-remove-file) file)
                 (cond ((file-exists-p (concat file ".gz"))
@@ -3433,21 +3415,21 @@ This is like `dired-recursive-delete-directory' for tramp files."
 
 (defun tramp-handle-insert-directory
   (filename switches &optional wildcard full-directory-p)
-  "Like `insert-directory' for tramp files."
-  (if (and (featurep 'ls-lisp)
-           (not (symbol-value 'ls-lisp-use-insert-directory-program)))
-      (tramp-run-real-handler
-       'insert-directory (list filename switches wildcard full-directory-p))
-    ;; For the moment, we assume that the remote "ls" program does not
-    ;; grok "--dired".  In the future, we should detect this on
-    ;; connection setup.
-    (when (string-match "^--dired\\s-+" switches)
-      (setq switches (replace-match "" nil t switches)))
-    (setq filename (expand-file-name filename))
-    (with-parsed-tramp-file-name filename nil
-      (tramp-message-for-buffer
-       multi-method method user host 10
-       "Inserting directory `ls %s %s', wildcard %s, fulldir %s"
+  "Like `insert-directory' for Tramp files."
+  (setq filename (expand-file-name filename))
+  (with-parsed-tramp-file-name filename nil
+    (tramp-flush-file-property v localname)
+    (if (and (featurep 'ls-lisp)
+            (not (symbol-value 'ls-lisp-use-insert-directory-program)))
+       (tramp-run-real-handler
+        'insert-directory (list filename switches wildcard full-directory-p))
+      ;; For the moment, we assume that the remote "ls" program does not
+      ;; grok "--dired".  In the future, we should detect this on
+      ;; connection setup.
+      (when (string-match "^--dired\\s-+" switches)
+       (setq switches (replace-match "" nil t switches)))
+      (tramp-message
+       v 4 "Inserting directory `ls %s %s', wildcard %s, fulldir %s"
        switches filename (if wildcard "yes" "no")
        (if full-directory-p "yes" "no"))
       (when wildcard
@@ -3459,80 +3441,44 @@ This is like `dired-recursive-delete-directory' for tramp files."
         (setq switches (concat "-d " switches)))
       (when wildcard
         (setq switches (concat switches " " wildcard)))
-      (save-excursion
-        ;; If `full-directory-p', we just say `ls -l FILENAME'.
-        ;; Else we chdir to the parent directory, then say `ls -ld BASENAME'.
-        (if full-directory-p
-            (tramp-send-command
-             multi-method method user host
-             (format "%s %s %s"
-                     (tramp-get-ls-command multi-method method user host)
-                     switches
-                     (if wildcard
-                         localname
-                       (tramp-shell-quote-argument (concat localname ".")))))
-          (tramp-barf-unless-okay
-           multi-method method user host
-           (format "cd %s" (tramp-shell-quote-argument
-                            (file-name-directory localname)))
-           nil 'file-error
-           "Couldn't `cd %s'"
-           (tramp-shell-quote-argument (file-name-directory localname)))
-          (tramp-send-command
-           multi-method method user host
-           (format "%s %s %s"
-                   (tramp-get-ls-command multi-method method user host)
-                   switches
-                   (if wildcard
-                       localname
-                    (if (zerop (length (file-name-nondirectory localname)))
-                        ""
-                      (tramp-shell-quote-argument
-                       (file-name-nondirectory localname)))))))
-        (sit-for 1)                    ;needed for rsh but not ssh?
-        (tramp-wait-for-output))
-      ;; The following let-binding is used by code that's commented
-      ;; out.  Let's leave the let-binding in for a while to see
-      ;; that the commented-out code is really not needed.  Commenting-out
-      ;; happened on 2003-03-13.
-      (let ((old-pos (point)))
-       ;; We cannot use `insert-buffer' because the tramp buffer
-       ;; changes its contents before insertion due to calling
-       ;; `expand-file' and alike.
-       (insert
-        (with-current-buffer
-            (tramp-get-buffer multi-method method user host)
-          (buffer-string)))
-        ;; On XEmacs, we want to call (exchange-point-and-mark t), but
-        ;; that doesn't exist on Emacs, so we use this workaround instead.
-        ;; Since zmacs-region-stays doesn't exist in Emacs, this ought to
-        ;; be safe.  Thanks to Daniel Pittman <daniel@danann.net>.
-        ;;     (let ((zmacs-region-stays t))
-        ;;       (exchange-point-and-mark))
-        (save-excursion
-          (tramp-send-command multi-method method user host "cd")
-          (tramp-wait-for-output))
-        ;; For the time being, the XEmacs kludge is commented out.
-        ;; Please test it on various XEmacs versions to see if it works.
-        ;;       ;; Another XEmacs specialty follows.  What's the right way to do
-        ;;       ;; it?
-        ;;       (when (and (featurep 'xemacs)
-        ;;              (eq major-mode 'dired-mode))
-        ;;     (save-excursion
-        ;;       (require 'dired)
-        ;;       (dired-insert-set-properties old-pos (point))))
-        ))))
-
-;; Continuation of kluge to pacify byte-compiler.
-;;(eval-when-compile
-;;  (when (eq (symbol-function 'dired-insert-set-properties) 'ignore)
-;;    (fmakunbound 'dired-insert-set-properties)))
+      ;; If `full-directory-p', we just say `ls -l FILENAME'.
+      ;; Else we chdir to the parent directory, then say `ls -ld BASENAME'.
+      (if full-directory-p
+         (tramp-send-command
+          v
+          (format "%s %s %s"
+                  (tramp-get-ls-command v)
+                  switches
+                  (if wildcard
+                      localname
+                    (tramp-shell-quote-argument (concat localname ".")))))
+       (tramp-barf-unless-okay
+        v
+        (format "cd %s" (tramp-shell-quote-argument
+                         (file-name-directory localname)))
+        "Couldn't `cd %s'"
+        (tramp-shell-quote-argument (file-name-directory localname)))
+       (tramp-send-command
+        v
+        (format "%s %s %s"
+                (tramp-get-ls-command v)
+                switches
+                (if (or wildcard
+                        (zerop (length (file-name-nondirectory localname))))
+                    ""
+                  (tramp-shell-quote-argument
+                   (file-name-nondirectory localname))))))
+      ;; We cannot use `insert-buffer-substring' because the tramp buffer
+      ;; changes its contents before insertion due to calling
+      ;; `expand-file' and alike.
+      (insert
+       (with-current-buffer (tramp-get-buffer v)
+        (buffer-string))))))
 
 ;; CCC is this the right thing to do?
 (defun tramp-handle-unhandled-file-name-directory (filename)
-  "Like `unhandled-file-name-directory' for tramp files."
-  (with-parsed-tramp-file-name filename nil
-    (expand-file-name "~/")))
+  "Like `unhandled-file-name-directory' for Tramp files."
+  (expand-file-name "~/"))
 
 ;; Canonicalization of file names.
 
@@ -3553,7 +3499,7 @@ Doesn't do anything if the NAME does not start with a drive letter."
     name))
 
 (defun tramp-handle-expand-file-name (name &optional dir)
-  "Like `expand-file-name' for tramp files.
+  "Like `expand-file-name' for Tramp files.
 If the localname part of the given filename starts with \"/../\" then
 the result will be a local, non-Tramp, filename."
   ;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
@@ -3561,381 +3507,454 @@ the result will be a local, non-Tramp, filename."
   ;; Unless NAME is absolute, concat DIR and NAME.
   (unless (file-name-absolute-p name)
     (setq name (concat (file-name-as-directory dir) name)))
-  ;; If NAME is not a tramp file, run the real handler
+  ;; If NAME is not a Tramp file, run the real handler.
   (if (not (tramp-tramp-file-p name))
-      (tramp-run-real-handler 'expand-file-name
-                              (list name nil))
+      (tramp-run-real-handler 'expand-file-name (list name nil))
     ;; Dissect NAME.
     (with-parsed-tramp-file-name name nil
       (unless (file-name-absolute-p localname)
        (setq localname (concat "~/" localname)))
-      (save-excursion
-       ;; Tilde expansion if necessary.  This needs a shell which
-       ;; groks tilde expansion!  The function `tramp-find-shell' is
-       ;; supposed to find such a shell on the remote host.  Please
-       ;; tell me about it when this doesn't work on your system.
-       (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
-         (let ((uname (match-string 1 localname))
-               (fname (match-string 2 localname)))
-           ;; We cannot simply apply "~/", because under sudo "~/" is
-           ;; expanded to the local user home directory but to the
-           ;; root home directory.  On the other hand, using always
-           ;; the default user name for tilde expansion is not
-           ;; appropriate either, because ssh and companions might
-           ;; use a user name from the config file.
-           (when (and (string-equal uname "~")
-                      (string-match
-                       "\\`su\\(do\\)?\\'"
-                       (tramp-find-method multi-method method user host)))
-             (setq uname (concat uname (or user "root"))))
-           ;; CCC fanatic error checking?
-           (set-buffer (tramp-get-buffer multi-method method user host))
-           (erase-buffer)
-           (tramp-send-command
-            multi-method method user host
-            (format "cd %s; pwd" uname)
-            t)
-           (tramp-wait-for-output)
-           (goto-char (point-min))
-           (setq uname (buffer-substring (point) (tramp-line-end-position)))
-           (setq localname (concat uname fname))
-           (erase-buffer)))
-       ;; There might be a double slash, for example when "~/"
-       ;; expands to "/". Remove this.
-       (while (string-match "//" localname)
-         (setq localname (replace-match "/" t t localname)))
-       ;; No tilde characters in file name, do normal
-       ;; expand-file-name (this does "/./" and "/../").  We bind
-       ;; directory-sep-char here for XEmacs on Windows, which would
-       ;; otherwise use backslash.  `default-directory' is bound to
-       ;; "/", because on Windows there would be problems with UNC
-       ;; shares or Cygwin mounts.
-       (tramp-let-maybe directory-sep-char ?/
-         (let ((default-directory "/"))
-           (tramp-make-tramp-file-name
-            multi-method (or method (tramp-find-default-method user host))
-            user host
-            (tramp-drop-volume-letter
-             (tramp-run-real-handler 'expand-file-name
-                                     (list localname))))))))))
-
-;; old version follows.  it uses ".." to cross file handler
-;; boundaries.
-;;     ;; Look if localname starts with "/../" construct.  If this is
-;;     ;; the case, then we return a local name instead of a remote name.
-;;     (if (string-match "^/\\.\\./" localname)
-;;         (expand-file-name (substring localname 3))
-;;       ;; No tilde characters in file name, do normal
-;;       ;; expand-file-name (this does "/./" and "/../").  We bind
-;;       ;; directory-sep-char here for XEmacs on Windows, which
-;;       ;; would otherwise use backslash.
-;;       (let ((directory-sep-char ?/))
-;;         (tramp-make-tramp-file-name
-;;          multi-method method user host
-;;          (tramp-drop-volume-letter
-;;           (tramp-run-real-handler 'expand-file-name
-;;                                   (list localname))))))))))
-
-;; Remote commands.
-
-(defvar tramp-async-proc nil
-  "Global variable keeping asynchronous process object.
-Used in `tramp-handle-shell-command'")
-
-(defvar tramp-display-shell-command-buffer t
-  "Whether to display output buffer of `shell-command'.
-This is necessary for handling DISPLAY of `process-file'.")
-
-(defun tramp-handle-shell-command (command &optional output-buffer error-buffer)
-  "Like `shell-command' for tramp files.
-This will break if COMMAND prints a newline, followed by the value of
-`tramp-end-of-output', followed by another newline."
-  ;; Asynchronous processes are far from being perfect.  But it works at least
-  ;; for `find-grep-dired' and `find-name-dired' in Emacs 22.
-  (if (tramp-tramp-file-p default-directory)
-      (with-parsed-tramp-file-name default-directory nil
-       (let ((curbuf (current-buffer))
-             (asynchronous (string-match "[ \t]*&[ \t]*\\'" command))
-             status)
-         (unless output-buffer
-           (setq output-buffer
-                 (get-buffer-create
-                  (if asynchronous
-                      "*Async Shell Command*"
-                    "*Shell Command Output*")))
-           (set-buffer output-buffer)
-           (erase-buffer))
-         (unless (bufferp output-buffer)
-           (setq output-buffer (current-buffer)))
-         (set-buffer output-buffer)
-         ;; Tramp doesn't handle the asynchronous case by an asynchronous
-         ;; process.  Instead of, another asynchronous process is opened
-         ;; which gets the output of the (synchronous) Tramp process
-         ;; via process-filter.  ERROR-BUFFER is disabled.
-         (when asynchronous
-           (setq command (substring command 0 (match-beginning 0))
-                 error-buffer nil
-                 tramp-async-proc (start-process (buffer-name output-buffer)
-                                                 output-buffer "cat")))
-         (save-excursion
-           (tramp-barf-unless-okay
-            multi-method method user host
-            (format "cd %s" (tramp-shell-quote-argument localname))
-            nil 'file-error
-            "tramp-handle-shell-command: Couldn't `cd %s'"
-            (tramp-shell-quote-argument localname))
-           ;; Define the process filter
-           (when asynchronous
-             (set-process-filter
-              (get-buffer-process
-               (tramp-get-buffer multi-method method user host))
-              '(lambda (process string)
-                 ;; Write the output into the Tramp Process
-                 (save-current-buffer
-                   (set-buffer (process-buffer process))
-                   (goto-char (point-max))
-                   (insert string))
-                 ;; Hand-over output to asynchronous process.
-                 (let ((end
-                        (string-match
-                         (regexp-quote tramp-end-of-output) string)))
-                   (when end
-                     (setq string
-                           (substring string 0 (1- (match-beginning 0)))))
-                   (process-send-string tramp-async-proc string)
-                   (when end
-                     (set-process-filter process nil)
-                     (process-send-eof tramp-async-proc))))))
-           ;; Send the command
-           (tramp-send-command
-            multi-method method user host
-            (if error-buffer
-                (format "( %s ) 2>/tmp/tramp.$$.err; tramp_old_status=$?"
-                        command)
-              (format "%s; tramp_old_status=$?" command)))
-           (unless asynchronous
-             (tramp-wait-for-output)))
-         (unless asynchronous
-           ;; We cannot use `insert-buffer' because the tramp buffer
-           ;; changes its contents before insertion due to calling
-           ;; `expand-file' and alike.
-           (insert
-            (with-current-buffer
-                (tramp-get-buffer multi-method method user host)
-              (buffer-string))))
-         (when error-buffer
-           (save-excursion
-             (unless (bufferp error-buffer)
-               (setq error-buffer (get-buffer-create error-buffer)))
-             (tramp-send-command
-              multi-method method user host
-              "cat /tmp/tramp.$$.err")
-             (tramp-wait-for-output)
-             (set-buffer error-buffer)
-             ;; Same comment as above
-             (insert
-              (with-current-buffer
-                  (tramp-get-buffer multi-method method user host)
-                (buffer-string)))
-             (tramp-send-command-and-check
-              multi-method method user host "rm -f /tmp/tramp.$$.err")))
-         (save-excursion
-           (tramp-send-command multi-method method user host "cd")
-           (unless asynchronous
-             (tramp-wait-for-output))
-           (tramp-send-command
-            multi-method method user host
-            (concat "tramp_set_exit_status $tramp_old_status;"
-                    " echo tramp_exit_status $?"))
-           (unless asynchronous
-             (tramp-wait-for-output)
-             (goto-char (point-max))
-             (unless (search-backward "tramp_exit_status " nil t)
-               (error "Couldn't find exit status of `%s'" command))
-             (skip-chars-forward "^ ")
-             (setq status (read (current-buffer)))))
-         (unless (zerop (buffer-size))
-           (when tramp-display-shell-command-buffer
-             (display-buffer output-buffer)))
-         (set-buffer curbuf)
-         status))
-    ;; The following is only executed if something strange was
-    ;; happening.  Emit a helpful message and do it anyway.
-    (message "tramp-handle-shell-command called with non-tramp directory: `%s'"
-            default-directory)
-    (tramp-run-real-handler 'shell-command
-                           (list command output-buffer error-buffer))))
-
-(defun tramp-handle-process-file (program &optional infile buffer display &rest args)
+      ;; Tilde expansion if necessary.  This needs a shell which
+      ;; groks tilde expansion!  The function `tramp-find-shell' is
+      ;; supposed to find such a shell on the remote host.  Please
+      ;; tell me about it when this doesn't work on your system.
+      (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
+       (let ((uname (match-string 1 localname))
+             (fname (match-string 2 localname)))
+         ;; We cannot simply apply "~/", because under sudo "~/" is
+         ;; expanded to the local user home directory but to the
+         ;; root home directory.  On the other hand, using always
+         ;; the default user name for tilde expansion is not
+         ;; appropriate either, because ssh and companions might
+         ;; use a user name from the config file.
+         (when (and (string-equal uname "~")
+                    (string-match "\\`su\\(do\\)?\\'" method))
+           (setq uname (concat uname user)))
+         (setq uname
+           (with-connection-property v uname
+             (tramp-send-command v (format "cd %s; pwd" uname))
+             (with-current-buffer (tramp-get-buffer v)
+               (goto-char (point-min))
+               (buffer-substring (point) (tramp-compat-line-end-position)))))
+         (setq localname (concat uname fname))))
+      ;; There might be a double slash, for example when "~/"
+      ;; expands to "/". Remove this.
+      (while (string-match "//" localname)
+       (setq localname (replace-match "/" t t localname)))
+      ;; No tilde characters in file name, do normal
+      ;; expand-file-name (this does "/./" and "/../").  We bind
+      ;; `directory-sep-char' here for XEmacs on Windows, which
+      ;; would otherwise use backslash.  `default-directory' is
+      ;; bound, because on Windows there would be problems with UNC
+      ;; shares or Cygwin mounts.
+      (tramp-let-maybe directory-sep-char ?/
+       (let ((default-directory (tramp-compat-temporary-file-directory)))
+         (tramp-make-tramp-file-name
+          method user host
+          (tramp-drop-volume-letter
+           (tramp-run-real-handler 'expand-file-name
+                                   (list localname)))))))))
+
+(defun tramp-handle-substitute-in-file-name (filename)
+  "Like `substitute-in-file-name' for Tramp files.
+\"//\" and \"/~\" substitute only in the local filename part.
+If the URL Tramp syntax is chosen, \"//\" as method delimeter and \"/~\" at
+beginning of local filename are not substituted."
+  (with-parsed-tramp-file-name filename nil
+    (if (equal tramp-syntax 'url)
+       ;; We need to check localname only.  The other parts cannot contain
+       ;; "//" or "/~".
+       (if (and (> (length localname) 1)
+                (or (string-match "//" localname)
+                    (string-match "/~" localname 1)))
+           (tramp-run-real-handler 'substitute-in-file-name (list filename))
+         (tramp-make-tramp-file-name
+          (when method (substitute-in-file-name method))
+          (when user (substitute-in-file-name user))
+          (when host (substitute-in-file-name host))
+          (when localname (substitute-in-file-name localname))))
+      ;; Ignore in LOCALNAME everything before "//" or "/~".
+      (when (and (stringp localname) (string-match ".+?/\\(/\\|~\\)" localname))
+       (setq filename
+             (tramp-make-tramp-file-name
+              method user host (replace-match "\\1" nil nil localname)))
+       ;; "/m:h:~" does not work for completion.  We use "/m:h:~/".
+       (when (string-match "~$" filename)
+         (setq filename (concat filename "/"))))
+      (tramp-run-real-handler 'substitute-in-file-name (list filename)))))
+
+;; In XEmacs, electricity is implemented via a key map for ?/ and ?~,
+;; which calls corresponding functions (see minibuf.el).
+(when (fboundp 'minibuffer-electric-separator)
+  (mapc
+   '(lambda (x)
+      (eval
+       `(defadvice ,x
+         (around ,(intern (format "tramp-advice-%s" x)) activate)
+         "Invoke `substitute-in-file-name' for Tramp files."
+         (if (and (symbol-value 'minibuffer-electric-file-name-behavior)
+                  (tramp-tramp-file-p (buffer-substring)))
+             ;; We don't need to handle `last-input-event', because
+             ;; due to the key map we know it must be ?/ or ?~.
+             (let ((s (concat (buffer-substring (point-min) (point))
+                              (string last-command-char))))
+               (delete-region (point-min) (point))
+               (insert (substitute-in-file-name s))
+               (setq ad-return-value last-command-char))
+           ad-do-it))))
+
+   '(minibuffer-electric-separator
+     minibuffer-electric-tilde)))
+
+
+;;; Remote commands.
+
+(defun tramp-handle-executable-find (command)
+  "Like `executable-find' for Tramp files."
+  (with-parsed-tramp-file-name default-directory nil
+    (tramp-find-executable v command (tramp-get-remote-path v) t)))
+
+;; We use BUFFER also as connection buffer during setup. Because of
+;; this, its original contents must be saved, and restored once
+;; connection has been setup.
+(defun tramp-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
+       (progn
+         ;; Set the new process properties.
+         (tramp-set-connection-property v "process-name" name)
+         (tramp-set-connection-property
+          v "process-buffer"
+          ;; BUFFER can be nil.
+          (get-buffer-create (or buffer (current-buffer))))
+         ;; Activate narrowing in order to save BUFFER contents.
+         (with-current-buffer (tramp-get-connection-buffer v)
+           (narrow-to-region (point-max) (point-max)))
+         ;; Goto working directory.  `tramp-send-command' opens a new
+         ;; connection.
+         (tramp-send-command
+          v (format "cd %s" (tramp-shell-quote-argument localname)))
+         ;; Send the command.
+         (tramp-send-command
+          v
+          (format "%s; exit"
+                  (mapconcat 'tramp-shell-quote-argument
+                             (cons program args) " "))
+          nil t) ; nooutput
+         ;; Return process.
+         (tramp-get-connection-process v))
+      ;; Save exit.
+      (with-current-buffer (tramp-get-connection-buffer v)
+       (widen)
+       (goto-char (point-max)))
+      (tramp-set-connection-property v "process-name" nil)
+      (tramp-set-connection-property v "process-buffer" nil))))
+
+(defun tramp-handle-process-file
+  (program &optional infile destination display &rest args)
   "Like `process-file' for Tramp files."
-  (when infile (error "Implementation does not handle input from file"))
-  (when (and (numberp buffer) (zerop buffer))
+  ;; The implementation is not complete yet.
+  (when (and (numberp destination) (zerop destination))
     (error "Implementation does not handle immediate return"))
-  (when (consp buffer) (error "Implementation does not handle error files"))
-  (let ((tramp-display-shell-command-buffer display))
-    (shell-command
-     (mapconcat 'tramp-shell-quote-argument (cons program args) " ")
-     buffer)))
+
+  (with-parsed-tramp-file-name default-directory nil
+    (let (command input tmpinput stderr tmpstderr outbuf ret)
+      ;; Compute command.
+      (setq command (mapconcat 'tramp-shell-quote-argument
+                              (cons program args) " "))
+      ;; Determine input.
+      (if (null infile)
+         (setq input "/dev/null")
+       (setq infile (expand-file-name infile))
+       (if (tramp-equal-remote default-directory infile)
+           ;; INFILE is on the same remote host.
+           (setq input (with-parsed-tramp-file-name infile nil localname))
+         ;; INFILE must be copied to remote host.
+         (setq input (tramp-make-tramp-temp-file v)
+               tmpinput (tramp-make-tramp-file-name method user host input))
+         (copy-file infile tmpinput t)))
+      (when input (setq command (format "%s <%s" command input)))
+
+      ;; Determine output.
+      (cond
+       ;; Just a buffer
+       ((bufferp destination)
+       (setq outbuf destination))
+       ;; A buffer name
+       ((stringp destination)
+       (setq outbuf (get-buffer-create destination)))
+       ;; (REAL-DESTINATION ERROR-DESTINATION)
+       ((consp destination)
+       ;; output
+       (cond
+        ((bufferp (car destination))
+         (setq outbuf (car destination)))
+        ((stringp (car destination))
+         (setq outbuf (get-buffer-create (car destination)))))
+       ;; stderr
+       (cond
+        ((stringp (cadr destination))
+         (setcar (cdr destination) (expand-file-name (cadr destination)))
+         (if (tramp-equal-remote default-directory (cadr destination))
+             ;; stderr is on the same remote host.
+             (setq stderr (with-parsed-tramp-file-name
+                              (cadr destination) nil localname))
+           ;; stderr must be copied to remote host.  The temporary
+           ;; file must be deleted after execution.
+           (setq stderr (tramp-make-tramp-temp-file v)
+                 tmpstderr (tramp-make-tramp-file-name
+                            method user host stderr))))
+        ;; stderr to be discarded
+        ((null (cadr destination))
+         (setq stderr "/dev/null"))))
+       ;; 't
+       (destination
+       (setq outbuf (current-buffer))))
+      (when stderr (setq command (format "%s 2>%s" command stderr)))
+
+      ;; Goto working directory.
+      (tramp-send-command
+       v (format "cd %s" (tramp-shell-quote-argument localname)))
+      ;; Send the command.  It might not return in time, so we protect it.
+      (condition-case nil
+         (unwind-protect
+             (tramp-send-command v command)
+           ;; We should show the output anyway.
+           (when outbuf
+             (let ((output-string
+                    (with-current-buffer (tramp-get-connection-buffer v)
+                      (buffer-substring (point-min) (point-max)))))
+               (with-current-buffer outbuf
+                 (insert output-string)))
+             (when display (display-buffer outbuf))))
+       ;; When the user did interrupt, we should do it also.
+       (error
+        (kill-buffer (tramp-get-connection-buffer v))
+        (setq ret 1)))
+
+      ;; Check return code.
+      (unless ret (setq ret (tramp-send-command-and-check v nil)))
+      ;; Provide error file.
+      (when tmpstderr (rename-file tmpstderr (cadr destination) t))
+      ;; Cleanup.
+      (when tmpinput (delete-file tmpinput))
+      ;; Return exit status.
+      ret)))
+
+(defun tramp-handle-call-process-region
+  (start end program &optional delete buffer display &rest args)
+  "Like `call-process-region' for Tramp files."
+  (let ((tmpfile (tramp-compat-make-temp-file "")))
+    (write-region start end tmpfile)
+    (when delete (delete-region start end))
+    (unwind-protect
+       (apply 'call-process program tmpfile buffer display args)
+      (delete-file tmpfile))))
+
+(defun tramp-handle-shell-command
+  (command &optional output-buffer error-buffer)
+  "Like `shell-command' for Tramp files."
+  (let* ((asynchronous (string-match "[ \t]*&[ \t]*\\'" command))
+        (args (split-string (substring command 0 asynchronous) " "))
+        (output-buffer
+         (cond
+          ((bufferp output-buffer) output-buffer)
+          ((stringp output-buffer) (get-buffer-create output-buffer))
+          (output-buffer (current-buffer))
+          (t (generate-new-buffer
+              (if asynchronous
+                  "*Async Shell Command*"
+                "*Shell Command Output*")))))
+        (error-buffer
+         (cond
+          ((bufferp error-buffer) error-buffer)
+          ((stringp error-buffer) (get-buffer-create error-buffer))))
+        (buffer
+         (if (and (not asynchronous) error-buffer)
+             (with-parsed-tramp-file-name default-directory nil
+               (list output-buffer (tramp-make-tramp-temp-file v)))
+           output-buffer)))
+
+    (prog1
+       ;; Run the process.  We cannot use `process-file' and
+       ;; `start-file-process', because these functions might not
+       ;; exist in older Emacsen.
+       (if (integerp asynchronous)
+           (apply 'tramp-handle-start-file-process
+                  "*Async Shell*" buffer args)
+         (apply 'process-file
+                (car args) nil buffer nil (cdr args)))
+      ;; Insert error messages if they were separated.
+      (when (listp buffer)
+       (with-current-buffer error-buffer
+         (insert-file-contents (cadr buffer)))
+       (delete-file (buffer-file-name (cadr buffer))))
+      ;; There's some output, display it.
+      (when (with-current-buffer output-buffer (> (point-max) (point-min)))
+       (if (functionp 'display-message-or-buffer)
+           (funcall (symbol-function 'display-message-or-buffer) output-buffer)
+         (pop-to-buffer output-buffer))))))
 
 ;; File Editing.
 
-(defsubst tramp-make-temp-file (filename)
-  (concat
-   (funcall (if (fboundp 'make-temp-file) 'make-temp-file 'make-temp-name)
-           (expand-file-name tramp-temp-name-prefix
-                             (tramp-temporary-file-directory)))
-   (file-name-extension filename t)))
+(defvar tramp-handle-file-local-copy-hook nil
+  "Normal hook to be run at the end of `tramp-handle-file-local-copy'.")
 
 (defun tramp-handle-file-local-copy (filename)
-  "Like `file-local-copy' for tramp files."
+  "Like `file-local-copy' for Tramp files."
+
   (with-parsed-tramp-file-name filename nil
-    (let ((tramp-buf (tramp-get-buffer multi-method method user host))
-         ;; We used to bind the following as late as possible.
-         ;; loc-enc and loc-dec were bound directly before the if
-         ;; statement that checks them.  But the functions
-         ;; tramp-get-* might invoke the "are you awake" check in
-         ;; tramp-maybe-open-connection, which is an unfortunate time
-         ;; since we rely on the buffer contents at that spot.
-         (rem-enc (tramp-get-remote-encoding multi-method method user host))
-         (rem-dec (tramp-get-remote-decoding multi-method method user host))
-         (loc-enc (tramp-get-local-encoding multi-method method user host))
-         (loc-dec (tramp-get-local-decoding multi-method method user host))
-         tmpfil)
+    (let ((rem-enc (tramp-get-remote-coding v "remote-encoding"))
+         (loc-dec (tramp-get-local-coding v "local-decoding"))
+         (tmpfile (tramp-compat-make-temp-file filename)))
       (unless (file-exists-p filename)
-       (error "Cannot make local copy of non-existing file `%s'"
-              filename))
-      (setq tmpfil (tramp-make-temp-file filename))
-
-      (cond ((tramp-method-out-of-band-p multi-method method user host)
-            ;; `copy-file' handles out-of-band methods
-            (copy-file filename tmpfil t t))
-
-           ((and rem-enc rem-dec)
-            ;; Use inline encoding for file transfer.
-            (save-excursion
-              ;; Following line for setting tramp-current-method,
-              ;; tramp-current-user, tramp-current-host.
-              (set-buffer tramp-buf)
-              (tramp-message 5 "Encoding remote file %s..." filename)
-              (tramp-barf-unless-okay
-               multi-method method user host
-               (concat rem-enc " < " (tramp-shell-quote-argument localname))
-               nil 'file-error
-               "Encoding remote file failed, see buffer `%s' for details"
-               tramp-buf)
-              ;; Remove trailing status code
-              (goto-char (point-max))
-              (delete-region (point) (progn (forward-line -1) (point)))
-
-              (tramp-message 5 "Decoding remote file %s..." filename)
-
-              ;; Here is where loc-enc and loc-dec used to be let-bound.
-              (if (and (symbolp loc-dec) (fboundp loc-dec))
-                  ;; If local decoding is a function, we call it.  We
-                  ;; must disable multibyte, because
-                  ;; `uudecode-decode-region' doesn't handle it
-                  ;; correctly.
-                  (let ((tmpbuf (get-buffer-create " *tramp tmp*")))
-                    (set-buffer tmpbuf)
-                    (erase-buffer)
-                    (set-buffer-multibyte nil)
-                    (insert-buffer-substring tramp-buf)
-                    (tramp-message-for-buffer
-                     multi-method method user host
-                     6 "Decoding remote file %s with function %s..."
-                     filename loc-dec)
-                    (set-buffer tmpbuf)
-                    ;; Douglas Gray Stephens <DGrayStephens@slb.com>
-                    ;; says that we need to strip tramp_exit_status
-                    ;; line from the output here.  Go to point-max,
-                    ;; search backward for tramp_exit_status, delete
-                    ;; between point and point-max if found.
-                    (let ((coding-system-for-write 'binary))
-                      (funcall loc-dec (point-min) (point-max))
-                      (write-region (point-min) (point-max) tmpfil))
-                    (kill-buffer tmpbuf))
-                ;; If tramp-decoding-function is not defined for this
-                ;; method, we invoke tramp-decoding-command instead.
-                (let ((tmpfil2 (tramp-make-temp-file filename)))
-                  (write-region (point-min) (point-max) tmpfil2)
-                  (tramp-message
-                   6 "Decoding remote file %s with command %s..."
-                   filename loc-dec)
-                  (tramp-call-local-coding-command
-                   loc-dec tmpfil2 tmpfil)
-                  (delete-file tmpfil2)))
-              (tramp-message-for-buffer
-               multi-method method user host
-               5 "Decoding remote file %s...done" filename)
-              ;; Set proper permissions.
-              (set-file-modes tmpfil (file-modes filename))))
-
-           (t (error "Wrong method specification for `%s'" method)))
-      tmpfil)))
+       (tramp-error
+        v 'file-error
+        "Cannot make local copy of non-existing file `%s'" filename))
+
+      (cond
+       ;; `copy-file' handles direct copy and out-of-band methods.
+       ((or (tramp-local-host-p v)
+           (and (tramp-method-out-of-band-p v)
+                (> (nth 7 (file-attributes filename)) tramp-copy-size-limit)))
+       (copy-file filename tmpfile t t))
+
+       ;; Use inline encoding for file transfer.
+       (rem-enc
+       (save-excursion
+         (tramp-message v 5 "Encoding remote file %s..." filename)
+         (tramp-barf-unless-okay
+          v (format "%s < %s" rem-enc (tramp-shell-quote-argument localname))
+          "Encoding remote file failed")
+         (tramp-message v 5 "Encoding remote file %s...done" filename)
+
+         (tramp-message v 5 "Decoding remote file %s..." filename)
+         (if (and (symbolp loc-dec) (fboundp loc-dec))
+             ;; If local decoding is a function, we call it.  We must
+             ;; disable multibyte, because `uudecode-decode-region'
+             ;; doesn't handle it correctly.
+             (unwind-protect
+                 (with-temp-buffer
+                   (set-buffer-multibyte nil)
+                   (insert-buffer-substring (tramp-get-buffer v))
+                   (tramp-message
+                    v 5 "Decoding remote file %s with function %s..."
+                    filename loc-dec)
+                   (funcall loc-dec (point-min) (point-max))
+                   (let ((coding-system-for-write 'binary))
+                     (write-region (point-min) (point-max) tmpfile))))
+           ;; If tramp-decoding-function is not defined for this
+           ;; method, we invoke tramp-decoding-command instead.
+           (let ((tmpfile2 (tramp-compat-make-temp-file filename)))
+             (let ((coding-system-for-write 'binary))
+               (write-region (point-min) (point-max) tmpfile2))
+             (tramp-message
+              v 5 "Decoding remote file %s with command %s..."
+              filename loc-dec)
+             (tramp-call-local-coding-command loc-dec tmpfile2 tmpfile)
+             (delete-file tmpfile2)))
+         (tramp-message v 5 "Decoding remote file %s...done" filename)
+         ;; Set proper permissions.
+         (set-file-modes tmpfile (file-modes filename))
+         ;; Set local user ownership.
+         (tramp-set-file-uid-gid tmpfile)))
+
+       ;; Oops, I don't know what to do.
+       (t (tramp-error
+          v 'file-error "Wrong method specification for `%s'" method)))
+
+      (run-hooks 'tramp-handle-file-local-copy-hook)
+      tmpfile)))
 
 (defun tramp-handle-file-remote-p (filename &optional identification connected)
   "Like `file-remote-p' for Tramp files."
   (when (tramp-tramp-file-p filename)
     (with-parsed-tramp-file-name filename nil
       (and (or (not connected)
-              (let ((p (get-buffer-process
-                        (tramp-get-buffer multi-method method user host))))
+              (let ((p (tramp-get-connection-process v)))
                 (and p (processp p) (memq (process-status p) '(run open)))))
           (cond
            ((eq identification 'method) method)
            ((eq identification 'user) user)
            ((eq identification 'host) host)
-           (t (tramp-make-tramp-file-name
-               multi-method method user host "")))))))
+           ((eq identification 'localname) localname)
+           (t (tramp-make-tramp-file-name method user host "")))))))
 
 (defun tramp-handle-insert-file-contents
   (filename &optional visit beg end replace)
-  "Like `insert-file-contents' for tramp files."
+  "Like `insert-file-contents' for Tramp files."
   (barf-if-buffer-read-only)
   (setq filename (expand-file-name filename))
-  (with-parsed-tramp-file-name filename nil
-    (if (not (file-exists-p filename))
-       (progn
-         (when visit
-           (setq buffer-file-name filename)
-           (set-visited-file-modtime)
-           (set-buffer-modified-p nil))
-         (signal 'file-error
-                 (format "File `%s' not found on remote host" filename))
-         (list (expand-file-name filename) 0))
-      ;; `insert-file-contents-literally' takes care to avoid calling
-      ;; jka-compr.  By let-binding inhibit-file-name-operation, we
-      ;; propagate that care to the file-local-copy operation.
-      (let ((local-copy
-            (let ((inhibit-file-name-operation
-                   (when (eq inhibit-file-name-operation
-                             'insert-file-contents)
-                     'file-local-copy)))
-              (file-local-copy filename)))
-           coding-system-used result)
-       (tramp-message-for-buffer
-        multi-method method user host
-        9 "Inserting local temp file `%s'..." local-copy)
-       (setq result (insert-file-contents local-copy nil beg end replace))
+  (let (coding-system-used result)
+    (with-parsed-tramp-file-name filename nil
+
+      (if (not (file-exists-p filename))
+         (progn
+           (when visit
+             (setq buffer-file-name filename)
+             (set-visited-file-modtime)
+             (set-buffer-modified-p nil))
+           (tramp-error
+            v 'file-error "File %s not found on remote host" filename)
+           (list (expand-file-name filename) 0))
+
+       (if (and (tramp-local-host-p v)
+                (file-readable-p localname))
+           ;; Short track: if we are on the local host, we can run directly.
+           (setq result (insert-file-contents localname visit beg end replace))
+
+         ;; `insert-file-contents-literally' takes care to avoid calling
+         ;; jka-compr.  By let-binding inhibit-file-name-operation, we
+         ;; propagate that care to the file-local-copy operation.
+         (let ((local-copy
+                (let ((inhibit-file-name-operation
+                       (when (eq inhibit-file-name-operation
+                                 'insert-file-contents)
+                         'file-local-copy)))
+                  (file-local-copy filename))))
+           (tramp-message v 4 "Inserting local temp file `%s'..." local-copy)
+           (setq result (insert-file-contents local-copy nil beg end replace))
+           ;; Now `last-coding-system-used' has right value.  Remember it.
+           (when (boundp 'last-coding-system-used)
+             (setq coding-system-used (symbol-value 'last-coding-system-used)))
+           (tramp-message v 4 "Inserting local temp file `%s'...done" local-copy)
+           (delete-file local-copy)
+           (when (boundp 'last-coding-system-used)
+             (set 'last-coding-system-used coding-system-used))))
+
        (when visit
+         (setq buffer-read-only (file-writable-p filename))
          (setq buffer-file-name filename)
          (set-visited-file-modtime)
          (set-buffer-modified-p nil))
-       ;; Now `last-coding-system-used' has right value.  Remember it.
-       (when (boundp 'last-coding-system-used)
-         (setq coding-system-used (symbol-value 'last-coding-system-used)))
-       (tramp-message-for-buffer
-        multi-method method user host
-        9 "Inserting local temp file `%s'...done" local-copy)
-       (delete-file local-copy)
-       (when (boundp 'last-coding-system-used)
-         (set 'last-coding-system-used coding-system-used))
        (list (expand-file-name filename)
              (cadr result))))))
 
+;; This is needed for XEmacs only.  Code stolen from files.el.
+(defun tramp-handle-insert-file-contents-literally
+  (filename &optional visit beg end replace)
+  "Like `insert-file-contents-literally' for Tramp files."
+  (let ((format-alist nil)
+       (after-insert-file-functions nil)
+       (coding-system-for-read 'no-conversion)
+       (coding-system-for-write 'no-conversion)
+       (find-buffer-file-type-function
+        (if (fboundp 'find-buffer-file-type)
+            (symbol-function 'find-buffer-file-type)
+          nil))
+       (inhibit-file-name-handlers '(jka-compr-handler image-file-handler))
+       (inhibit-file-name-operation 'insert-file-contents))
+    (unwind-protect
+       (progn
+         (fset 'find-buffer-file-type (lambda (filename) t))
+         (insert-file-contents filename visit beg end replace))
+      (if find-buffer-file-type-function
+         (fset 'find-buffer-file-type find-buffer-file-type-function)
+       (fmakunbound 'find-buffer-file-type)))))
 
 (defun tramp-handle-find-backup-file-name (filename)
-  "Like `find-backup-file-name' for tramp files."
+  "Like `find-backup-file-name' for Tramp files."
   (with-parsed-tramp-file-name filename nil
     ;; We set both variables. It doesn't matter whether it is
     ;; Emacs or XEmacs
@@ -3950,8 +3969,7 @@ This will break if COMMAND prints a newline, followed by the value of
                      (if (and (stringp (cdr x))
                               (file-name-absolute-p (cdr x))
                               (not (tramp-file-name-p (cdr x))))
-                         (tramp-make-tramp-file-name
-                          multi-method method user host (cdr x))
+                         (tramp-make-tramp-file-name method user host (cdr x))
                        (cdr x))))
                  (symbol-value 'tramp-backup-directory-alist))
               (symbol-value 'backup-directory-alist))))
@@ -3969,7 +3987,7 @@ This will break if COMMAND prints a newline, followed by the value of
                                (file-name-absolute-p (car (cdr x)))
                                (not (tramp-file-name-p (car (cdr x)))))
                           (tramp-make-tramp-file-name
-                           multi-method method user host (car (cdr x)))
+                           method user host (car (cdr x)))
                         (car (cdr x))))
                      (cdr (cdr x))))
                  (symbol-value 'tramp-bkup-backup-directory-info))
@@ -3978,255 +3996,237 @@ This will break if COMMAND prints a newline, followed by the value of
       (tramp-run-real-handler 'find-backup-file-name (list filename)))))
 
 (defun tramp-handle-make-auto-save-file-name ()
-  "Like `make-auto-save-file-name' for tramp files.
+  "Like `make-auto-save-file-name' for Tramp files.
 Returns a file name in `tramp-auto-save-directory' for autosaving this file."
-  (let ((tramp-auto-save-directory tramp-auto-save-directory))
+  (let ((tramp-auto-save-directory tramp-auto-save-directory)
+       (buffer-file-name
+        (tramp-subst-strs-in-string
+         '(("_" . "|")
+           ("/" . "_a")
+           (":" . "_b")
+           ("|" . "__")
+           ("[" . "_l")
+           ("]" . "_r"))
+         (buffer-file-name))))
     ;; File name must be unique.  This is ensured with Emacs 22 (see
     ;; UNIQUIFY element of `auto-save-file-name-transforms'); but for
     ;; all other cases we must do it ourselves.
     (when (boundp 'auto-save-file-name-transforms)
-      (mapcar
+      (mapc
        '(lambda (x)
          (when (and (string-match (car x) buffer-file-name)
                     (not (car (cddr x))))
            (setq tramp-auto-save-directory
                  (or tramp-auto-save-directory
-                     (tramp-temporary-file-directory)))))
+                     (tramp-compat-temporary-file-directory)))))
        (symbol-value 'auto-save-file-name-transforms)))
     ;; Create directory.
     (when tramp-auto-save-directory
+      (setq buffer-file-name
+           (expand-file-name buffer-file-name tramp-auto-save-directory))
       (unless (file-exists-p tramp-auto-save-directory)
        (make-directory tramp-auto-save-directory t)))
-    ;; jka-compr doesn't like auto-saving, so by appending "~" to the
-    ;; file name we make sure that jka-compr isn't used for the
-    ;; auto-save file.
-    (let ((buffer-file-name
-          (if tramp-auto-save-directory
-              (expand-file-name
-               (tramp-subst-strs-in-string
-                '(("_" . "|")
-                  ("/" . "_a")
-                  (":" . "_b")
-                  ("|" . "__")
-                  ("[" . "_l")
-                  ("]" . "_r"))
-                (buffer-file-name))
-               tramp-auto-save-directory)
-            (buffer-file-name))))
-      ;; Run plain `make-auto-save-file-name'.  There might be an advice when
-      ;; it is not a magic file name operation (since Emacs 22).
-      ;; We must deactivate it temporarily.
-      (if (not (ad-is-active 'make-auto-save-file-name))
-         (tramp-run-real-handler
-          'make-auto-save-file-name nil)
-       ;; else
-       (ad-deactivate 'make-auto-save-file-name)
-       (prog1
-           (tramp-run-real-handler
-            'make-auto-save-file-name nil)
-         (ad-activate 'make-auto-save-file-name))))))
-
-
-;; CCC grok APPEND, LOCKNAME, CONFIRM
+    ;; Run plain `make-auto-save-file-name'.  There might be an advice when
+    ;; it is not a magic file name operation (since Emacs 22).
+    ;; We must deactivate it temporarily.
+    (if (not (ad-is-active 'make-auto-save-file-name))
+       (tramp-run-real-handler 'make-auto-save-file-name nil)
+      ;; else
+      (ad-deactivate 'make-auto-save-file-name)
+      (prog1
+       (tramp-run-real-handler 'make-auto-save-file-name nil)
+       (ad-activate 'make-auto-save-file-name)))))
+
+(defvar tramp-handle-write-region-hook nil
+  "Normal hook to be run at the end of `tramp-handle-write-region'.")
+
+;; CCC grok APPEND, LOCKNAME
 (defun tramp-handle-write-region
   (start end filename &optional append visit lockname confirm)
-  "Like `write-region' for tramp files."
-  (unless (eq append nil)
-    (error "Cannot append to file using tramp (`%s')" filename))
+  "Like `write-region' for Tramp files."
   (setq filename (expand-file-name filename))
-  ;; Following part commented out because we don't know what to do about
-  ;; file locking, and it does not appear to be a problem to ignore it.
-  ;; Ange-ftp ignores it, too.
-  ;;  (when (and lockname (stringp lockname))
-  ;;    (setq lockname (expand-file-name lockname)))
-  ;;  (unless (or (eq lockname nil)
-  ;;              (string= lockname filename))
-  ;;    (error
-  ;;     "tramp-handle-write-region: LOCKNAME must be nil or equal FILENAME"))
-  ;; XEmacs takes a coding system as the seventh argument, not `confirm'
-  (when (and (not (featurep 'xemacs))
-            confirm (file-exists-p filename))
-    (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
-                              filename))
-      (error "File not overwritten")))
   (with-parsed-tramp-file-name filename nil
-    (let ((curbuf (current-buffer))
-         (rem-enc (tramp-get-remote-encoding multi-method method user host))
-         (rem-dec (tramp-get-remote-decoding multi-method method user host))
-         (loc-enc (tramp-get-local-encoding multi-method method user host))
-         (loc-dec (tramp-get-local-decoding multi-method method user host))
-         (trampbuf (get-buffer-create "*tramp output*"))
-         (modes (file-modes filename))
-         ;; We use this to save the value of `last-coding-system-used'
-         ;; after writing the tmp file.  At the end of the function,
-         ;; we set `last-coding-system-used' to this saved value.
-         ;; This way, any intermediary coding systems used while
-         ;; talking to the remote shell or suchlike won't hose this
-         ;; variable.  This approach was snarfed from ange-ftp.el.
-         coding-system-used
-         tmpfil)
-      ;; Write region into a tmp file.  This isn't really needed if we
-      ;; use an encoding function, but currently we use it always
-      ;; because this makes the logic simpler.
-      (setq tmpfil (tramp-make-temp-file filename))
-      ;; Set current buffer.  If connection wasn't open, `file-modes' has
-      ;; changed it accidently.
-      (set-buffer curbuf)
-      ;; We say `no-message' here because we don't want the visited file
-      ;; modtime data to be clobbered from the temp file.  We call
-      ;; `set-visited-file-modtime' ourselves later on.
-      (tramp-run-real-handler
-       'write-region
-       (if confirm ; don't pass this arg unless defined for backward compat.
-          (list start end tmpfil append 'no-message lockname confirm)
-        (list start end tmpfil append 'no-message lockname)))
-      ;; Now, `last-coding-system-used' has the right value.  Remember it.
-      (when (boundp 'last-coding-system-used)
-       (setq coding-system-used (symbol-value 'last-coding-system-used)))
-      ;; The permissions of the temporary file should be set.  If
-      ;; filename does not exist (eq modes nil) it has been renamed to
-      ;; the backup file.  This case `save-buffer' handles
-      ;; permissions.
-      (when modes (set-file-modes tmpfil modes))
-      ;; This is a bit lengthy due to the different methods possible for
-      ;; file transfer.  First, we check whether the method uses an rcp
-      ;; program.  If so, we call it.  Otherwise, both encoding and
-      ;; decoding command must be specified.  However, if the method
-      ;; _also_ specifies an encoding function, then that is used for
-      ;; encoding the contents of the tmp file.
-      (cond ((tramp-method-out-of-band-p multi-method method user host)
-            ;; `copy-file' handles out-of-band methods
-            (copy-file tmpfil filename t t))
-
-           ((and rem-enc rem-dec)
-            ;; Use inline file transfer
-            (let ((tmpbuf (get-buffer-create " *tramp file transfer*")))
-              (save-excursion
-                ;; Encode tmpfil into tmpbuf
-                (tramp-message-for-buffer multi-method method user host
-                                          5 "Encoding region...")
-                (set-buffer tmpbuf)
-                (erase-buffer)
-                ;; Use encoding function or command.
-                (if (and (symbolp loc-enc) (fboundp loc-enc))
-                    (progn
-                      (tramp-message-for-buffer
-                       multi-method method user host
-                       6 "Encoding region using function `%s'..."
-                       (symbol-name loc-enc))
-                      (insert-file-contents-literally tmpfil)
-                      ;; CCC.  The following `let' is a workaround for
-                      ;; the base64.el that comes with pgnus-0.84.  If
-                      ;; both of the following conditions are
-                      ;; satisfied, it tries to write to a local file
-                      ;; in default-directory, but at this point,
-                      ;; default-directory is remote.
-                      ;; (CALL-PROCESS-REGION can't write to remote
-                      ;; files, it seems.)  The file in question is a
-                      ;; tmp file anyway.
-                      (let ((default-directory
-                              (tramp-temporary-file-directory)))
-                        (funcall loc-enc (point-min) (point-max)))
-                      (goto-char (point-max))
-                      (unless (bolp)
-                        (newline)))
-                  (tramp-message-for-buffer
-                   multi-method method user host
-                   6 "Encoding region using command `%s'..." loc-enc)
-                  (unless (equal 0 (tramp-call-local-coding-command
-                                    loc-enc tmpfil t))
-                    (pop-to-buffer trampbuf)
-                    (error (concat "Cannot write to `%s', local encoding"
-                                   " command `%s' failed")
-                           filename loc-enc)))
-                ;; Send tmpbuf into remote decoding command which
-                ;; writes to remote file.  Because this happens on the
-                ;; remote host, we cannot use the function.
-                (tramp-message-for-buffer
-                 multi-method method user host
-                 5 "Decoding region into remote file %s..." filename)
-                (tramp-send-command
-                 multi-method method user host
-                 (format "%s >%s <<'EOF'"
-                         rem-dec
-                         (tramp-shell-quote-argument localname)))
-                (set-buffer tmpbuf)
-                (tramp-message-for-buffer
-                 multi-method method user host
-                 6 "Sending data to remote host...")
-                (tramp-send-string multi-method method user host
-                                   (buffer-string))
-                ;; wait for remote decoding to complete
-                (tramp-message-for-buffer
-                 multi-method method user host
-                 6 "Sending end of data token...")
-                (tramp-send-command
-                 multi-method method user host "EOF" nil t)
-                (tramp-message-for-buffer
-                 multi-method method user host 6
-                 "Waiting for remote host to process data...")
-                (set-buffer (tramp-get-buffer multi-method method user host))
-                (tramp-wait-for-output)
-                (tramp-barf-unless-okay
-                 multi-method method user host nil nil 'file-error
-                 (concat "Couldn't write region to `%s',"
-                         " decode using `%s' failed")
-                 filename rem-dec)
-                (tramp-message 5 "Decoding region into remote file %s...done"
-                               filename)
-                (kill-buffer tmpbuf))))
-           (t
-            (error
-             (concat "Method `%s' should specify both encoding and "
-                     "decoding command or an rcp program")
-             method)))
-      (delete-file tmpfil)
-      (unless (equal curbuf (current-buffer))
-       (error "Buffer has changed from `%s' to `%s'"
-              curbuf (current-buffer)))
+    (unless (null append)
+      (tramp-error
+       v 'file-error "Cannot append to file using Tramp (`%s')" filename))
+    ;; Following part commented out because we don't know what to do about
+    ;; file locking, and it does not appear to be a problem to ignore it.
+    ;; Ange-ftp ignores it, too.
+    ;;  (when (and lockname (stringp lockname))
+    ;;    (setq lockname (expand-file-name lockname)))
+    ;;  (unless (or (eq lockname nil)
+    ;;              (string= lockname filename))
+    ;;    (error
+    ;;     "tramp-handle-write-region: LOCKNAME must be nil or equal FILENAME"))
+
+    ;; XEmacs takes a coding system as the seventh argument, not `confirm'.
+    (when (and (not (featurep 'xemacs)) confirm (file-exists-p filename))
+      (unless (y-or-n-p (format "File %s exists; overwrite anyway? " filename))
+       (tramp-error v 'file-error "File not overwritten")))
+
+    (if (and (tramp-local-host-p v)
+            (file-writable-p (file-name-directory localname)))
+       ;; Short track: if we are on the local host, we can run directly.
+       (if confirm
+           (write-region
+            start end localname append 'no-message lockname confirm)
+         (write-region start end localname append 'no-message lockname))
+
+      (let ((rem-dec (tramp-get-remote-coding v "remote-decoding"))
+           (loc-enc (tramp-get-local-coding v "local-encoding"))
+           (modes (save-excursion (file-modes filename)))
+           ;; We use this to save the value of `last-coding-system-used'
+           ;; after writing the tmp file.  At the end of the function,
+           ;; we set `last-coding-system-used' to this saved value.
+           ;; This way, any intermediary coding systems used while
+           ;; talking to the remote shell or suchlike won't hose this
+           ;; variable.  This approach was snarfed from ange-ftp.el.
+           coding-system-used
+           ;; Write region into a tmp file.  This isn't really needed if we
+           ;; use an encoding function, but currently we use it always
+           ;; because this makes the logic simpler.
+           (tmpfile (tramp-compat-make-temp-file filename)))
+
+       ;; We say `no-message' here because we don't want the visited file
+       ;; modtime data to be clobbered from the temp file.  We call
+       ;; `set-visited-file-modtime' ourselves later on.
+       (tramp-run-real-handler
+        'write-region
+        (if confirm ; don't pass this arg unless defined for backward compat.
+            (list start end tmpfile append 'no-message lockname confirm)
+          (list start end tmpfile append 'no-message lockname)))
+       ;; Now, `last-coding-system-used' has the right value.  Remember it.
+       (when (boundp 'last-coding-system-used)
+         (setq coding-system-used (symbol-value 'last-coding-system-used)))
+       ;; The permissions of the temporary file should be set.  If
+       ;; filename does not exist (eq modes nil) it has been renamed to
+       ;; the backup file.  This case `save-buffer' handles
+       ;; permissions.
+       (when modes (set-file-modes tmpfile modes))
+
+       ;; This is a bit lengthy due to the different methods possible for
+       ;; file transfer.  First, we check whether the method uses an rcp
+       ;; program.  If so, we call it.  Otherwise, both encoding and
+       ;; decoding command must be specified.  However, if the method
+       ;; _also_ specifies an encoding function, then that is used for
+       ;; encoding the contents of the tmp file.
+       (cond
+        ;; `rename-file' handles direct copy and out-of-band methods.
+        ((or (tramp-local-host-p v)
+             (and (tramp-method-out-of-band-p v)
+                  (integerp start)
+                  (> (- end start) tramp-copy-size-limit)))
+         (rename-file tmpfile filename t))
+
+        ;; Use inline file transfer
+        (rem-dec
+         ;; Encode tmpfile
+         (tramp-message v 5 "Encoding region...")
+         (unwind-protect
+             (with-temp-buffer
+               ;; Use encoding function or command.
+               (if (and (symbolp loc-enc) (fboundp loc-enc))
+                   (progn
+                     (tramp-message
+                      v 5 "Encoding region using function `%s'..."
+                      (symbol-name loc-enc))
+                     (let ((coding-system-for-read 'binary))
+                       (insert-file-contents-literally tmpfile))
+                     ;; CCC.  The following `let' is a workaround for
+                     ;; the base64.el that comes with pgnus-0.84.  If
+                     ;; both of the following conditions are
+                     ;; satisfied, it tries to write to a local file
+                     ;; in default-directory, but at this point,
+                     ;; default-directory is remote.
+                     ;; (CALL-PROCESS-REGION can't write to remote
+                     ;; files, it seems.)  The file in question is a
+                     ;; tmp file anyway.
+                     (let ((default-directory
+                             (tramp-compat-temporary-file-directory)))
+                       (funcall loc-enc (point-min) (point-max))))
+
+                 (tramp-message
+                  v 5 "Encoding region using command `%s'..." loc-enc)
+                 (unless (equal 0 (tramp-call-local-coding-command
+                                   loc-enc tmpfile t))
+                   (tramp-error
+                    v 'file-error
+                    "Cannot write to `%s', local encoding command `%s' failed"
+                    filename loc-enc)))
+
+               ;; Send buffer into remote decoding command which
+               ;; writes to remote file.  Because this happens on the
+               ;; remote host, we cannot use the function.
+               (goto-char (point-max))
+               (unless (bolp) (newline))
+               (tramp-message
+                v 5 "Decoding region into remote file %s..." filename)
+               (tramp-send-command
+                v
+                (format
+                 "%s >%s <<'EOF'\n%sEOF"
+                 rem-dec
+                 (tramp-shell-quote-argument localname)
+                 (buffer-string)))
+               (tramp-barf-unless-okay
+                v nil
+                "Couldn't write region to `%s', decode using `%s' failed"
+                filename rem-dec)
+               ;; When `file-precious-flag' is set, the region is
+               ;; written to a temporary file.  Check that the
+               ;; checksum is equal to that from the local tmpfile.
+               (when file-precious-flag
+                 (erase-buffer)
+                 (and
+                  ;; cksum runs locally
+                  (let ((default-directory
+                          (tramp-compat-temporary-file-directory)))
+                    (zerop (call-process "cksum" tmpfile t)))
+                  ;; cksum runs remotely
+                  (zerop
+                   (tramp-send-command-and-check
+                    v
+                    (format "cksum <%s" (tramp-shell-quote-argument localname))))
+                  ;; ... they are different
+                  (not
+                   (string-equal
+                    (buffer-string)
+                    (with-current-buffer (tramp-get-buffer v) (buffer-string))))
+                  (tramp-error
+                   v 'file-error
+                   (concat "Couldn't write region to `%s',"
+                           " decode using `%s' failed")
+                   filename rem-dec)))
+               (tramp-message
+                v 5 "Decoding region into remote file %s...done" filename)
+               (tramp-flush-file-property v localname))
+
+           ;; Save exit.
+           (delete-file tmpfile)))
+
+        ;; That's not expected.
+        (t
+         (tramp-error
+          v 'file-error
+          (concat "Method `%s' should specify both encoding and "
+                  "decoding command or an rcp program")
+          method)))
+
+       ;; Make `last-coding-system-used' have the right value.
+       (when coding-system-used
+         (set 'last-coding-system-used coding-system-used)))
+
+      ;; Set file modification time.
       (when (or (eq visit t) (stringp visit))
        (set-visited-file-modtime
         ;; We must pass modtime explicitely, because filename can be different
         ;; from (buffer-file-name), f.e. if `file-precious-flag' is set.
         (nth 5 (file-attributes filename))))
-      ;; Make `last-coding-system-used' have the right value.
-      (when (boundp 'last-coding-system-used)
-       (set 'last-coding-system-used coding-system-used))
-      (when (or (eq visit t)
-               (eq visit nil)
-               (stringp visit))
-       (message "Wrote %s" filename)))))
-
-;; Call down to the real handler.
-;; Because EFS does not play nicely with TRAMP (both systems match a
-;; TRAMP file name) it is needed to disable efs as well as tramp for the
-;; operation.
-;;
-;; Other than that, this is the canon file-handler code that the doco
-;; says should be used here. Which is nice.
-;;
-;; Under XEmacs current, EFS also hooks in as
-;; efs-sifn-handler-function to handle any filename with environment
-;; variables. This has two implications:
-;; 1) That EFS may not be completely dead (yet) for TRAMP filenames
-;; 2) That TRAMP might want to do the same thing.
-;; Details as they come in.
-;;
-;; Daniel Pittman <daniel@danann.net>
-
-;; (defun tramp-run-real-handler (operation args)
-;;   "Invoke normal file name handler for OPERATION.
-;; This inhibits EFS and Ange-FTP, too, because they conflict with tramp.
-;; First arg specifies the OPERATION, remaining ARGS are passed to the
-;; OPERATION."
-;;   (let ((inhibit-file-name-handlers
-;;          (list 'tramp-file-name-handler
-;;            'efs-file-handler-function
-;;                'ange-ftp-hook-function
-;;                (and (eq inhibit-file-name-operation operation)
-;;                     inhibit-file-name-handlers)))
-;;         (inhibit-file-name-operation operation))
-;;     (apply operation args)))
+      ;; Set the ownership.
+      (tramp-set-file-uid-gid filename)
+      (when (or (eq visit t) (null visit) (stringp visit))
+       (tramp-message v 0 "Wrote %s" filename))
+      (run-hooks 'tramp-handle-write-region-hook))))
 
 ;;;###autoload
 (progn (defun tramp-run-real-handler (operation args)
@@ -4244,10 +4244,6 @@ pass to the OPERATION."
         (inhibit-file-name-operation operation))
     (apply operation args))))
 
-;; This function is used from `tramp-completion-file-name-handler'
-;; functions only, if `tramp-completion-mode-p' is true. But this
-;; cannot be checked here because the check is based on a full
-;; filename, not available for all basic I/O operations.
 ;;;###autoload
 (progn (defun tramp-completion-run-real-handler (operation args)
   "Invoke `tramp-file-name-handler' for OPERATION.
@@ -4292,6 +4288,8 @@ ARGS are the arguments OPERATION has been called with."
                  'load 'make-directory 'make-directory-internal
                  'set-file-modes 'substitute-in-file-name
                  'unhandled-file-name-directory 'vc-registered
+                 ; Emacs 22 only
+                 'set-file-times
                  ; XEmacs only
                  'abbreviate-file-name 'create-file-buffer
                  'dired-file-modtime 'dired-make-compressed-filename
@@ -4320,53 +4318,64 @@ ARGS are the arguments OPERATION has been called with."
     (nth 2 args))
    ; BUF
    ((member operation
-           (list 'make-auto-save-file-name
-                 'set-visited-file-modtime 'verify-visited-file-modtime
-                 ; XEmacs only
+           (list 'set-visited-file-modtime 'verify-visited-file-modtime
+                  ; Emacs 22 only
+                 'make-auto-save-file-name
+                 ; XEmacs only
                  'backup-buffer))
     (buffer-file-name
      (if (bufferp (nth 0 args)) (nth 0 args) (current-buffer))))
    ; COMMAND
    ((member operation
-           (list 'dired-call-process
+           (list ; not in Emacs 23
+                 'dired-call-process
                   ; Emacs only
                  'shell-command
-                  ; Emacs 22 only
+                  ; since Emacs 22 only
                   'process-file
+                  ; since Emacs 23 only
+                  'start-file-process
                  ; XEmacs only
-                 'dired-print-file 'dired-shell-call-process))
+                 'dired-print-file 'dired-shell-call-process
+                 ; nowhere yet
+                 'executable-find 'start-process 'call-process))
     default-directory)
    ; unknown file primitive
    (t (error "unknown file I/O primitive: %s" operation))))
 
 (defun tramp-find-foreign-file-name-handler (filename)
   "Return foreign file name handler if exists."
-  (when (tramp-tramp-file-p filename)
-    (let (elt
-         res
-         (handler-alist tramp-foreign-file-name-handler-alist))
-      (while handler-alist
-       (setq elt (car handler-alist)
-             handler-alist (cdr handler-alist))
-       (when (funcall (car elt) filename)
-         (setq handler-alist nil)
-         (setq res (cdr elt))))
-      res)))
+  (when (and (stringp filename) (tramp-tramp-file-p filename))
+    (let ((v (tramp-dissect-file-name filename t))
+         (handler tramp-foreign-file-name-handler-alist)
+         elt res)
+      ;; When we are not fully sure that filename completion is safe,
+      ;; we should not return a handler.
+      (when (or (tramp-file-name-method v) (tramp-file-name-user v)
+               (and (tramp-file-name-host v)
+                    (not (member (tramp-file-name-host v)
+                                 (mapcar 'car tramp-methods))))
+               (not (tramp-completion-mode-p)))
+       (while handler
+         (setq elt (car handler)
+               handler (cdr handler))
+         (when (funcall (car elt) filename)
+           (setq handler nil
+                 res (cdr elt))))
+       res))))
 
 ;; Main function.
 ;;;###autoload
 (defun tramp-file-name-handler (operation &rest args)
   "Invoke Tramp file name handler.
 Falls back to normal file name handler if no tramp file name handler exists."
-;;  (setq edebug-trace t)
-;;  (edebug-trace "%s" (with-output-to-string (backtrace)))
   (save-match-data
     (let* ((filename (apply 'tramp-file-name-for-operation operation args))
-          (completion (tramp-completion-mode-p filename))
+          (completion (tramp-completion-mode-p))
           (foreign (tramp-find-foreign-file-name-handler filename)))
       (with-parsed-tramp-file-name filename nil
        (cond
-        ;; When we are in completion mode, some operations shouldn' be
+        ;; When we are in completion mode, some operations shouldn't be
         ;; handled by backend.
         ((and completion (zerop (length localname))
               (memq operation '(file-exists-p file-directory-p)))
@@ -4379,7 +4388,6 @@ Falls back to normal file name handler if no tramp file name handler exists."
         ;; Nothing to do for us.
         (t (tramp-run-real-handler operation args)))))))
 
-
 ;; In Emacs, there is some concurrency due to timers.  If a timer
 ;; interrupts Tramp and wishes to use the same connection buffer as
 ;; the "main" Emacs, then garbage might occur in the connection
@@ -4411,7 +4419,7 @@ preventing reentrant calls of Tramp.")
   "Invoke remote-shell Tramp file name handler.
 Fall back to normal file name handler if no Tramp handler exists."
   (when (and tramp-locked (not tramp-locker))
-    (signal 'file-error "Forbidden reentrant call of Tramp"))
+    (signal 'file-error (list "Forbidden reentrant call of Tramp")))
   (let ((tl tramp-locked))
     (unwind-protect
        (progn
@@ -4430,6 +4438,11 @@ Fall back to normal file name handler if no Tramp handler exists."
 Falls back to normal file name handler if no tramp file name handler exists."
 ;;  (setq edebug-trace t)
 ;;  (edebug-trace "%s" (with-output-to-string (backtrace)))
+
+;;  (mapcar 'trace-function-background
+;;       (mapcar 'intern
+;;               (all-completions "tramp-" obarray 'functionp)))
+
   (let ((fn (assoc operation tramp-completion-file-name-handler-alist)))
     (if fn
        (save-match-data (apply (cdr fn) args))
@@ -4438,6 +4451,11 @@ Falls back to normal file name handler if no tramp file name handler exists."
 ;;;###autoload
 (defsubst tramp-register-file-name-handler ()
   "Add tramp file name handler to `file-name-handler-alist'."
+  ;; Remove autoloaded handler from file name handler alist.  Useful,
+  ;; if `tramp-syntax' has been changed.
+  (let ((a1 (rassq 'tramp-file-name-handler file-name-handler-alist)))
+    (setq file-name-handler-alist (delete a1 file-name-handler-alist)))
+  ;; Add the handler.
   (add-to-list 'file-name-handler-alist
               (cons tramp-file-name-regexp 'tramp-file-name-handler))
   ;; If jka-compr is already loaded, move it to the front of
@@ -4447,15 +4465,29 @@ Falls back to normal file name handler if no tramp file name handler exists."
       (setq file-name-handler-alist
            (cons jka (delete jka file-name-handler-alist))))))
 
+;; `tramp-file-name-handler' must be registered before evaluation of
+;; site-start and init files, because there might exist remote files
+;; already, f.e. files kept via recentf-mode.
+;;;###autoload(tramp-register-file-name-handler)
+(tramp-register-file-name-handler)
+
 ;;;###autoload
 (defsubst tramp-register-completion-file-name-handler ()
   "Add tramp completion file name handler to `file-name-handler-alist'."
+  ;; Remove autoloaded handler from file name handler alist.  Useful,
+  ;; if `tramp-syntax' has been changed.
+  (let ((a1 (rassq
+            'tramp-completion-file-name-handler file-name-handler-alist)))
+    (setq file-name-handler-alist (delete a1 file-name-handler-alist)))
   ;; `partial-completion-mode' is unknown in XEmacs.  So we should
   ;; load it unconditionally there.  In the GNU Emacs case, method/
   ;; user/host name completion shall be bound to `partial-completion-mode'.
+  ;; `ido-mode' and `icy-mode' are other packages which extend file
+  ;; name completion.
   (when (or (not (boundp 'partial-completion-mode))
            (symbol-value 'partial-completion-mode)
-           (featurep 'ido))
+           (featurep 'ido)
+           (featurep 'icicles))
     (add-to-list 'file-name-handler-alist
                 (cons tramp-completion-file-name-regexp
                       'tramp-completion-file-name-handler))
@@ -4467,17 +4499,12 @@ Falls back to normal file name handler if no tramp file name handler exists."
       (setq file-name-handler-alist
            (cons jka (delete jka file-name-handler-alist))))))
 
-;; `tramp-file-name-handler' must be registered before evaluation of
-;; site-start and init files, because there might exist remote files
-;; already, f.e. files kept via recentf-mode.
-;;;###autoload(tramp-register-file-name-handler)
 ;; During autoload, it shall be checked whether
 ;; `partial-completion-mode' is active.  Therefore registering of
 ;; `tramp-completion-file-name-handler' will be delayed.
 ;;;###autoload(add-hook
 ;;;###autoload 'after-init-hook
 ;;;###autoload '(lambda () (tramp-register-completion-file-name-handler)))
-(tramp-register-file-name-handler)
 (tramp-register-completion-file-name-handler)
 
 ;;;###autoload
@@ -4491,20 +4518,19 @@ Falls back to normal file name handler if no tramp file name handler exists."
 
 (add-hook 'tramp-unload-hook 'tramp-unload-file-name-handlers)
 
-
 ;;; Interactions with other packages:
 
 ;; -- complete.el --
 
 ;; This function contributed by Ed Sabol
 (defun tramp-handle-expand-many-files (name)
-  "Like `PC-expand-many-files' for tramp files."
+  "Like `PC-expand-many-files' for Tramp files."
   (with-parsed-tramp-file-name name nil
     (save-match-data
       (if (or (string-match "\\*" name)
              (string-match "\\?" name)
              (string-match "\\[.*\\]" name))
-         (save-excursion
+         (progn
            (let (bufstr)
              ;; CCC: To do it right, we should quote certain characters
              ;; in the file name, but since the echo command is going to
@@ -4514,44 +4540,41 @@ Falls back to normal file name handler if no tramp file name handler exists."
              ;;-       (set-difference tramp-file-name-quote-list
              ;;-                       '(?\* ?\? ?[ ?]))))
              ;;-  (tramp-send-command
-             ;;-   multi-method method user host
-             ;;-   (format "echo %s" (comint-quote-filename localname)))
-             ;;-  (tramp-wait-for-output))
-             (tramp-send-command multi-method method user host
-                                 (format "echo %s" localname))
-             (tramp-wait-for-output)
-             (setq bufstr (buffer-substring (point-min)
-                                            (tramp-line-end-position)))
-             (goto-char (point-min))
-             (if (string-equal localname bufstr)
-                 nil
-               (insert "(\"")
-               (while (search-forward " " nil t)
-                 (delete-backward-char 1)
-                 (insert "\" \""))
-               (goto-char (point-max))
-               (delete-backward-char 1)
-               (insert "\")")
+             ;;-   method user host
+             ;;-   (format "echo %s" (comint-quote-filename localname))))
+             (tramp-send-command v (format "echo %s" localname))
+             (setq bufstr (buffer-substring
+                           (point-min) (tramp-compat-line-end-position)))
+             (with-current-buffer (tramp-get-buffer v)
                (goto-char (point-min))
-               (mapcar
-                (function (lambda (x)
-                            (tramp-make-tramp-file-name multi-method method
-                                                        user host x)))
-                (read (current-buffer))))))
+               (if (string-equal localname bufstr)
+                   nil
+                 (insert "(\"")
+                 (while (search-forward " " nil t)
+                   (delete-backward-char 1)
+                   (insert "\" \""))
+                 (goto-char (point-max))
+                 (delete-backward-char 1)
+                 (insert "\")")
+                 (goto-char (point-min))
+                 (mapcar
+                  (function (lambda (x)
+                              (tramp-make-tramp-file-name method user host x)))
+                  (read (current-buffer)))))))
        (list (expand-file-name name))))))
 
 (eval-after-load "complete"
   '(progn
      (defadvice PC-expand-many-files
        (around tramp-advice-PC-expand-many-files (name) activate)
-       "Invoke `tramp-handle-expand-many-files' for tramp files."
+       "Invoke `tramp-handle-expand-many-files' for Tramp files."
        (if (tramp-tramp-file-p name)
           (setq ad-return-value (tramp-handle-expand-many-files name))
         ad-do-it))
      (add-hook 'tramp-unload-hook
               '(lambda () (ad-unadvise 'PC-expand-many-files)))))
 
-;;; File name handler functions for completion mode
+;;; File name handler functions for completion mode.
 
 (defvar tramp-completion-mode nil
   "If non-nil, external packages signal that they are in file name completion.
@@ -4562,139 +4585,121 @@ but <TAB>, <SPACE> or ?\\? for file name completion.  This variable
 should never be set globally, the intention is to let-bind it.")
 
 ;; Necessary because `tramp-file-name-regexp-unified' and
-;; `tramp-completion-file-name-regexp-unified' aren't different.
-;; If nil, `tramp-completion-run-real-handler' is called (i.e. forwarding to
-;; `tramp-file-name-handler'). Otherwise, it takes `tramp-run-real-handler'.
-;; Using `last-input-event' is a little bit risky, because completing a file
-;; might require loading other files, like "~/.netrc", and for them it
-;; shouldn't be decided based on that variable. On the other hand, those files
-;; shouldn't have partial tramp file name syntax. Maybe another variable should
-;; be introduced overwriting this check in such cases. Or we change tramp
-;; file name syntax in order to avoid ambiguities, like in XEmacs ...
-;; In case of non unified file names it can be always true (and wouldn't be
-;; necessary, because there are different regexp).
-(defun tramp-completion-mode-p (file)
+;; `tramp-completion-file-name-regexp-unified' aren't different.  If
+;; nil, `tramp-completion-run-real-handler' is called (i.e. forwarding
+;; to `tramp-file-name-handler'). Otherwise, it takes
+;; `tramp-run-real-handler'.  Using `last-input-event' is a little bit
+;; risky, because completing a file might require loading other files,
+;; like "~/.netrc", and for them it shouldn't be decided based on that
+;; variable. On the other hand, those files shouldn't have partial
+;; tramp file name syntax. Maybe another variable should be introduced
+;; overwriting this check in such cases. Or we change tramp file name
+;; syntax in order to avoid ambiguities, like in XEmacs ...
+(defun tramp-completion-mode-p ()
   "Checks whether method / user name / host name completion is active."
-  (cond
-   (tramp-completion-mode t)
-   ((string-match "^/.*:.*:$" file) nil)
-   ((string-match
-     (concat tramp-prefix-regexp
-      "\\(" tramp-method-regexp  "\\)" tramp-postfix-single-method-regexp "$")
-     file)
-    (member (match-string 1 file) (mapcar 'car tramp-methods)))
-   ((or
-     ;; Emacs.
-     (equal last-input-event 'tab)
-     (and (natnump last-input-event)
-         (or
-          ;; ?\t has event-modifier 'control
-          (char-equal last-input-event ?\t)
-          (and (not (event-modifiers last-input-event))
-               (or (char-equal last-input-event ?\?)
-                   (char-equal last-input-event ?\ )))))
-     ;; XEmacs.
-     (and (featurep 'xemacs)
-         ;; `last-input-event' might be nil.
-         (not (null last-input-event))
-         ;; `last-input-event' may have no character approximation.
-         (funcall (symbol-function 'event-to-character) last-input-event)
-         (or
-          ;; ?\t has event-modifier 'control
-          (char-equal
-           (funcall (symbol-function 'event-to-character)
-                    last-input-event) ?\t)
-          (and (not (event-modifiers last-input-event))
-               (or (char-equal
-                    (funcall (symbol-function 'event-to-character)
-                             last-input-event) ?\?)
-                   (char-equal
-                    (funcall (symbol-function 'event-to-character)
-                             last-input-event) ?\ ))))))
-    t)))
+  (or
+   ;; Signal from outside.
+   tramp-completion-mode
+   ;; Emacs.
+   (equal last-input-event 'tab)
+   (and (natnump last-input-event)
+       (or
+        ;; ?\t has event-modifier 'control.
+        (char-equal last-input-event ?\t)
+        (and (not (event-modifiers last-input-event))
+             (or (char-equal last-input-event ?\?)
+                 (char-equal last-input-event ?\ )))))
+   ;; XEmacs.
+   (and (featurep 'xemacs)
+       ;; `last-input-event' might be nil.
+       (not (null last-input-event))
+       ;; `last-input-event' may have no character approximation.
+       (funcall (symbol-function 'event-to-character) last-input-event)
+       (or
+        ;; ?\t has event-modifier 'control.
+        (char-equal
+         (funcall (symbol-function 'event-to-character)
+                  last-input-event) ?\t)
+        (and (not (event-modifiers last-input-event))
+             (or (char-equal
+                  (funcall (symbol-function 'event-to-character)
+                           last-input-event) ?\?)
+                 (char-equal
+                  (funcall (symbol-function 'event-to-character)
+                           last-input-event) ?\ )))))))
 
 ;; Method, host name and user name completion.
 ;; `tramp-completion-dissect-file-name' returns a list of
 ;; tramp-file-name structures. For all of them we return possible completions.
 ;;;###autoload
 (defun tramp-completion-handle-file-name-all-completions (filename directory)
-  "Like `file-name-all-completions' for partial tramp files."
+  "Like `file-name-all-completions' for partial Tramp files."
 
-  (unwind-protect
-      ;; We need to reset `tramp-completion-mode'.
-      (progn
-       (setq tramp-completion-mode t)
-       (let*
-           ((fullname (concat directory filename))
-            ;; possible completion structures
-            (v (tramp-completion-dissect-file-name fullname))
-            result result1)
-
-         (while v
-           (let* ((car (car v))
-                  (multi-method (tramp-file-name-multi-method car))
-                  (method (tramp-file-name-method car))
-                  (user (tramp-file-name-user car))
-                  (host (tramp-file-name-host car))
-                  (localname (tramp-file-name-localname car))
-                  (m (tramp-find-method multi-method method user host))
-                  (tramp-current-user user) ; see `tramp-parse-passwd'
-                  all-user-hosts)
-
-             (unless (or multi-method ;; Not handled (yet).
-                         localname)   ;; Nothing to complete
-
-               (if (or user host)
-
-                   ;; Method dependent user / host combinations
-                   (progn
-                     (mapcar
-                      (lambda (x)
-                        (setq all-user-hosts
-                              (append all-user-hosts
-                                      (funcall (nth 0 x) (nth 1 x)))))
-                      (tramp-get-completion-function m))
-
-                     (setq result (append result
-                       (mapcar
-                        (lambda (x)
-                          (tramp-get-completion-user-host
-                           method user host (nth 0 x) (nth 1 x)))
-                        (delq nil all-user-hosts)))))
-
-                 ;; Possible methods
-                 (setq result
-                       (append result (tramp-get-completion-methods m)))))
-
-             (setq v (cdr v))))
-
-         ;; unify list, remove nil elements
-         (while result
-           (let ((car (car result)))
-             (when car (add-to-list
-                        'result1 (substring car (length directory))))
-             (setq result (cdr result))))
-
-         ;; Complete local parts
-         (append
-          result1
-          (condition-case nil
-              (if result1
-                  ;; "/ssh:" does not need to be expanded as hostname.
-                  (tramp-run-real-handler
-                   'file-name-all-completions (list filename directory))
-                ;; No method/user/host found to be expanded.
-                (tramp-completion-run-real-handler
-                 'file-name-all-completions (list filename directory)))
-            (error nil)))))
-    ;; unwindform
-    (setq tramp-completion-mode nil)))
+  (let* ((fullname (tramp-drop-volume-letter
+                   (expand-file-name filename directory)))
+        ;; Possible completion structures.
+        (v (tramp-completion-dissect-file-name fullname))
+        result result1)
+
+    (while v
+      (let* ((car (car v))
+            (method (tramp-file-name-method car))
+            (user (tramp-file-name-user car))
+            (host (tramp-file-name-host car))
+            (localname (tramp-file-name-localname car))
+            (m (tramp-find-method method user host))
+            (tramp-current-user user) ; see `tramp-parse-passwd'
+            all-user-hosts)
+
+       (unless localname        ;; Nothing to complete.
+
+         (if (or user host)
+
+             ;; Method dependent user / host combinations.
+             (progn
+               (mapc
+                (lambda (x)
+                  (setq all-user-hosts
+                        (append all-user-hosts
+                                (funcall (nth 0 x) (nth 1 x)))))
+                (tramp-get-completion-function m))
+
+               (setq result
+                     (append result
+                             (mapcar
+                              (lambda (x)
+                                (tramp-get-completion-user-host
+                                 method user host (nth 0 x) (nth 1 x)))
+                              (delq nil all-user-hosts)))))
+
+           ;; Possible methods.
+           (setq result
+                 (append result (tramp-get-completion-methods m)))))
+
+       (setq v (cdr v))))
+
+    ;; Unify list, remove nil elements.
+    (while result
+      (let ((car (car result)))
+       (when car
+         (add-to-list
+          'result1
+          (substring car (length (tramp-drop-volume-letter directory)))))
+       (setq result (cdr result))))
+
+    ;; Complete local parts.
+    (append
+     result1
+     (condition-case nil
+        (tramp-completion-run-real-handler
+         'file-name-all-completions (list filename directory))
+       (error nil)))))
 
 ;; Method, host name and user name completion for a file.
 ;;;###autoload
 (defun tramp-completion-handle-file-name-completion
   (filename directory &optional predicate)
-  "Like `file-name-completion' for tramp files."
+  "Like `file-name-completion' for Tramp files."
   (try-completion
    filename
    (mapcar 'list (file-name-all-completions filename directory))
@@ -4704,26 +4709,26 @@ should never be set globally, the intention is to let-bind it.")
 ;; I misuse a little bit the tramp-file-name structure in order to handle
 ;; completion possibilities for partial methods / user names / host names.
 ;; Return value is a list of tramp-file-name structures according to possible
-;; completions. If "multi-method" or "localname" is non-nil it means there
+;; completions. If "localname" is non-nil it means there
 ;; shouldn't be a completion anymore.
 
 ;; Expected results:
 
-;; "/x" "/[x"               "/x@" "/[x@"             "/x@y" "/[x@y"
-;; [nil nil nil "x" nil]    [nil nil "x" nil nil]    [nil nil "x" "y" nil]
-;; [nil nil "x" nil nil]
-;; [nil "x" nil nil nil]
-
-;; "/x:"                    "/x:y"                   "/x:y:"
-;; [nil nil nil "x" ""]     [nil nil nil "x" "y"]    [nil "x" nil "y" ""]
-;;       "/[x/"                   "/[x/y"
-;; [nil "x" nil "" nil]     [nil "x" nil "y" nil]
-;; [nil "x" "" nil nil]     [nil "x" "y" nil nil]
-
-;; "/x:y@"                  "/x:y@z"                 "/x:y@z:"
-;; [nil nil nil "x" "y@"]   [nil nil nil "x" "y@z"]  [nil "x" "y" "z" ""]
-;;       "/[x/y@"                 "/[x/y@z"
-;; [nil "x" nil "y" nil]    [nil "x" "y" "z" nil]
+;; "/x" "/[x"           "/x@" "/[x@"         "/x@y" "/[x@y"
+;; [nil nil "x" nil]    [nil "x" nil nil]    [nil "x" "y" nil]
+;; [nil "x" nil nil]
+;; ["x" nil nil nil]
+
+;; "/x:"                "/x:y"               "/x:y:"
+;; [nil nil "x" ""]     [nil nil "x" "y"]    ["x" nil "y" ""]
+;; "/[x/"               "/[x/y"
+;; ["x" nil "" nil]     ["x" nil "y" nil]
+;; ["x" "" nil nil]     ["x" "y" nil nil]
+
+;; "/x:y@"              "/x:y@z"             "/x:y@z:"
+;; [nil nil "x" "y@"]   [nil nil "x" "y@z"]  ["x" "y" "z" ""]
+;; "/[x/y@"             "/[x/y@z"
+;; ["x" nil "y" nil]    ["x" "y" "z" nil]
 (defun tramp-completion-dissect-file-name (name)
   "Returns a list of `tramp-file-name' structures.
 They are collected by `tramp-completion-dissect-file-name1'."
@@ -4748,27 +4753,51 @@ They are collected by `tramp-completion-dissect-file-name1'."
                        "\\(" tramp-user-regexp "\\)"   tramp-postfix-user-regexp
                        "\\(" tramp-host-regexp x-nil   "\\)$")
                nil 1 2 nil))
-        ;; "/method:user" "/[method/user"
+        ;; "/method:user" "/[method/user" "/method://user"
         (tramp-completion-file-name-structure5
          (list (concat tramp-prefix-regexp
-                       "\\(" tramp-method-regexp "\\)" tramp-postfix-single-method-regexp
+                       "\\(" tramp-method-regexp "\\)" tramp-postfix-method-regexp
                        "\\(" tramp-user-regexp x-nil   "\\)$")
                1 2 nil nil))
-        ;; "/method:host" "/[method/host"
+        ;; "/method:host" "/[method/host" "/method://host"
         (tramp-completion-file-name-structure6
          (list (concat tramp-prefix-regexp
-                       "\\(" tramp-method-regexp "\\)" tramp-postfix-single-method-regexp
+                       "\\(" tramp-method-regexp "\\)" tramp-postfix-method-regexp
                        "\\(" tramp-host-regexp x-nil   "\\)$")
                1 nil 2 nil))
-        ;; "/method:user@host" "/[method/user@host"
+        ;; "/method:user@host" "/[method/user@host" "/method://user@host"
         (tramp-completion-file-name-structure7
          (list (concat tramp-prefix-regexp
-                       "\\(" tramp-method-regexp "\\)" tramp-postfix-single-method-regexp
+                       "\\(" tramp-method-regexp "\\)" tramp-postfix-method-regexp
                        "\\(" tramp-user-regexp "\\)"   tramp-postfix-user-regexp
                        "\\(" tramp-host-regexp x-nil   "\\)$")
-               1 2 3 nil)))
-
-    (mapcar (lambda (regexp)
+               1 2 3 nil))
+        ;; "/method: "/method:/"
+        (tramp-completion-file-name-structure8
+         (list
+          (if (equal tramp-syntax 'url)
+              (concat tramp-prefix-regexp
+                      "\\(" tramp-method-regexp "\\)"
+                      "\\(" (substring tramp-postfix-method-regexp 0 1)
+                      "\\|" (substring tramp-postfix-method-regexp 1 2) "\\)"
+                      "\\(" "\\)$")
+            ;; Should not match if not URL syntax.
+            (concat tramp-prefix-regexp "/$"))
+          1 3 nil nil))
+        ;; "/method: "/method:/"
+        (tramp-completion-file-name-structure9
+         (list
+          (if (equal tramp-syntax 'url)
+              (concat tramp-prefix-regexp
+                      "\\(" tramp-method-regexp "\\)"
+                      "\\(" (substring tramp-postfix-method-regexp 0 1)
+                      "\\|" (substring tramp-postfix-method-regexp 1 2) "\\)"
+                      "\\(" "\\)$")
+            ;; Should not match if not URL syntax.
+            (concat tramp-prefix-regexp "/$"))
+          1 nil 3 nil)))
+
+    (mapc (lambda (regexp)
       (add-to-list 'result
        (tramp-completion-dissect-file-name1 regexp name)))
       (list
@@ -4779,30 +4808,28 @@ They are collected by `tramp-completion-dissect-file-name1'."
        tramp-completion-file-name-structure5
        tramp-completion-file-name-structure6
        tramp-completion-file-name-structure7
+       tramp-completion-file-name-structure8
+       tramp-completion-file-name-structure9
        tramp-file-name-structure))
 
     (delq nil result)))
 
 (defun tramp-completion-dissect-file-name1 (structure name)
   "Returns a `tramp-file-name' structure matching STRUCTURE.
-The structure consists of multi-method, remote method, remote user,
+The structure consists of remote method, remote user,
 remote host and localname (filename on remote host)."
 
-  (let (method)
-    (save-match-data
-      (when (string-match (nth 0 structure) name)
-       (setq method (and (nth 1 structure)
-                         (match-string (nth 1 structure) name)))
-       (if (and method (member method tramp-multi-methods))
-           ;; Not handled (yet).
-           (vector method nil nil nil nil)
-         (let ((user   (and (nth 2 structure)
-                            (match-string (nth 2 structure) name)))
-               (host   (and (nth 3 structure)
-                            (match-string (nth 3 structure) name)))
-               (localname   (and (nth 4 structure)
-                            (match-string (nth 4 structure) name))))
-           (vector nil method user host localname)))))))
+  (save-match-data
+    (when (string-match (nth 0 structure) name)
+      (let ((method    (and (nth 1 structure)
+                           (match-string (nth 1 structure) name)))
+           (user      (and (nth 2 structure)
+                           (match-string (nth 2 structure) name)))
+           (host      (and (nth 3 structure)
+                           (match-string (nth 3 structure) name)))
+           (localname (and (nth 4 structure)
+                           (match-string (nth 4 structure) name))))
+       (vector method user host localname)))))
 
 ;; This function returns all possible method completions, adding the
 ;; trailing method delimeter.
@@ -4812,8 +4839,8 @@ remote host and localname (filename on remote host)."
    (lambda (method)
      (and method
          (string-match (concat "^" (regexp-quote partial-method)) method)
-         (tramp-make-tramp-file-name nil method nil nil nil)))
-   (delete "multi" (mapcar 'car tramp-methods))))
+         (tramp-completion-make-tramp-file-name method nil nil nil)))
+   (mapcar 'car tramp-methods)))
 
 ;; Compares partial user and host names with possible completions.
 (defun tramp-get-completion-user-host (method partial-user partial-host user host)
@@ -4845,13 +4872,15 @@ PARTIAL-USER must match USER, PARTIAL-HOST must match HOST."
            host nil)))
 
   (unless (zerop (+ (length user) (length host)))
-    (tramp-make-tramp-file-name nil method user host nil)))
+    (tramp-completion-make-tramp-file-name method user host nil)))
 
 (defun tramp-parse-rhosts (filename)
   "Return a list of (user host) tuples allowed to access.
 Either user or host may be nil."
-
-  (let (res)
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let ((default-directory (tramp-compat-temporary-file-directory))
+       res)
     (when (file-readable-p filename)
       (with-temp-buffer
        (insert-file-contents filename)
@@ -4860,24 +4889,15 @@ Either user or host may be nil."
          (push (tramp-parse-rhosts-group) res))))
     res))
 
-;; Taken from gnus/netrc.el
-(eval-and-compile
-  (defalias 'tramp-point-at-eol
-    (if (fboundp 'point-at-eol)
-       'point-at-eol
-      'line-end-position)))
-
 (defun tramp-parse-rhosts-group ()
    "Return a (user host) tuple allowed to access.
 Either user or host may be nil."
-
    (let ((result)
         (regexp
          (concat
           "^\\(" tramp-host-regexp "\\)"
           "\\([ \t]+" "\\(" tramp-user-regexp "\\)" "\\)?")))
-
-     (narrow-to-region (point) (tramp-point-at-eol))
+     (narrow-to-region (point) (tramp-compat-line-end-position))
      (when (re-search-forward regexp nil t)
        (setq result (append (list (match-string 3) (match-string 1)))))
      (widen)
@@ -4887,8 +4907,10 @@ Either user or host may be nil."
 (defun tramp-parse-shosts (filename)
   "Return a list of (user host) tuples allowed to access.
 User is always nil."
-
-  (let (res)
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let ((default-directory (tramp-compat-temporary-file-directory))
+       res)
     (when (file-readable-p filename)
       (with-temp-buffer
        (insert-file-contents filename)
@@ -4900,11 +4922,9 @@ User is always nil."
 (defun tramp-parse-shosts-group ()
    "Return a (user host) tuple allowed to access.
 User is always nil."
-
    (let ((result)
         (regexp (concat "^\\(" tramp-host-regexp "\\)")))
-
-     (narrow-to-region (point) (tramp-point-at-eol))
+     (narrow-to-region (point) (tramp-compat-line-end-position))
      (when (re-search-forward regexp nil t)
        (setq result (list nil (match-string 1))))
      (widen)
@@ -4916,8 +4936,10 @@ User is always nil."
 (defun tramp-parse-sconfig (filename)
   "Return a list of (user host) tuples allowed to access.
 User is always nil."
-
-  (let (res)
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let ((default-directory (tramp-compat-temporary-file-directory))
+       res)
     (when (file-readable-p filename)
       (with-temp-buffer
        (insert-file-contents filename)
@@ -4929,11 +4951,9 @@ User is always nil."
 (defun tramp-parse-sconfig-group ()
    "Return a (user host) tuple allowed to access.
 User is always nil."
-
    (let ((result)
         (regexp (concat "^[ \t]*Host[ \t]+" "\\(" tramp-host-regexp "\\)")))
-
-     (narrow-to-region (point) (tramp-point-at-eol))
+     (narrow-to-region (point) (tramp-compat-line-end-position))
      (when (re-search-forward regexp nil t)
        (setq result (list nil (match-string 1))))
      (widen)
@@ -4945,11 +4965,12 @@ User is always nil."
 (defun tramp-parse-shostkeys (dirname)
   "Return a list of (user host) tuples allowed to access.
 User is always nil."
-
-  (let ((regexp (concat "^key_[0-9]+_\\(" tramp-host-regexp "\\)\\.pub$"))
-       (files (when (file-directory-p dirname) (directory-files dirname)))
-       result)
-
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let* ((default-directory (tramp-compat-temporary-file-directory))
+        (regexp (concat "^key_[0-9]+_\\(" tramp-host-regexp "\\)\\.pub$"))
+        (files (when (file-directory-p dirname) (directory-files dirname)))
+        result)
     (while files
       (when (string-match regexp (car files))
        (push (list nil (match-string 1 (car files))) result))
@@ -4959,12 +4980,13 @@ User is always nil."
 (defun tramp-parse-sknownhosts (dirname)
   "Return a list of (user host) tuples allowed to access.
 User is always nil."
-
-  (let ((regexp (concat "^\\(" tramp-host-regexp
-                       "\\)\\.ssh-\\(dss\\|rsa\\)\\.pub$"))
-       (files (when (file-directory-p dirname) (directory-files dirname)))
-       result)
-
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let* ((default-directory (tramp-compat-temporary-file-directory))
+        (regexp (concat "^\\(" tramp-host-regexp
+                        "\\)\\.ssh-\\(dss\\|rsa\\)\\.pub$"))
+        (files (when (file-directory-p dirname) (directory-files dirname)))
+        result)
     (while files
       (when (string-match regexp (car files))
        (push (list nil (match-string 1 (car files))) result))
@@ -4974,8 +4996,10 @@ User is always nil."
 (defun tramp-parse-hosts (filename)
   "Return a list of (user host) tuples allowed to access.
 User is always nil."
-
-  (let (res)
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let ((default-directory (tramp-compat-temporary-file-directory))
+       res)
     (when (file-readable-p filename)
       (with-temp-buffer
        (insert-file-contents filename)
@@ -4987,11 +5011,9 @@ User is always nil."
 (defun tramp-parse-hosts-group ()
    "Return a (user host) tuple allowed to access.
 User is always nil."
-
    (let ((result)
         (regexp (concat "^\\(" tramp-host-regexp "\\)")))
-
-     (narrow-to-region (point) (tramp-point-at-eol))
+     (narrow-to-region (point) (tramp-compat-line-end-position))
      (when (re-search-forward regexp nil t)
        (unless (char-equal (or (char-after) ?\n) ?:) ; no IPv6
         (setq result (list nil (match-string 1)))))
@@ -5003,13 +5025,15 @@ User is always nil."
 
 ;; For su-alike methods it would be desirable to return "root@localhost"
 ;; as default.  Unfortunately, we have no information whether any user name
-;; has been typed already.  So we (mis-)use tramp-current-user as indication,
+;; has been typed already.  So we use `tramp-current-user' as indication,
 ;; assuming it is set in `tramp-completion-handle-file-name-all-completions'.
 (defun tramp-parse-passwd (filename)
   "Return a list of (user host) tuples allowed to access.
 Host is always \"localhost\"."
-
-  (let (res)
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let ((default-directory (tramp-compat-temporary-file-directory))
+       res)
     (if (zerop (length tramp-current-user))
        '(("root" nil))
       (when (file-readable-p filename)
@@ -5023,11 +5047,9 @@ Host is always \"localhost\"."
 (defun tramp-parse-passwd-group ()
    "Return a (user host) tuple allowed to access.
 Host is always \"localhost\"."
-
    (let ((result)
         (regexp (concat "^\\(" tramp-user-regexp "\\):")))
-
-     (narrow-to-region (point) (tramp-point-at-eol))
+     (narrow-to-region (point) (tramp-compat-line-end-position))
      (when (re-search-forward regexp nil t)
        (setq result (list (match-string 1) "localhost")))
      (widen)
@@ -5037,8 +5059,10 @@ Host is always \"localhost\"."
 (defun tramp-parse-netrc (filename)
   "Return a list of (user host) tuples allowed to access.
 User may be nil."
-
-  (let (res)
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let ((default-directory (tramp-compat-temporary-file-directory))
+       res)
     (when (file-readable-p filename)
       (with-temp-buffer
        (insert-file-contents filename)
@@ -5050,49 +5074,63 @@ User may be nil."
 (defun tramp-parse-netrc-group ()
    "Return a (user host) tuple allowed to access.
 User may be nil."
-
    (let ((result)
         (regexp
          (concat
           "^[ \t]*machine[ \t]+" "\\(" tramp-host-regexp "\\)"
           "\\([ \t]+login[ \t]+" "\\(" tramp-user-regexp "\\)" "\\)?")))
-
-     (narrow-to-region (point) (tramp-point-at-eol))
+     (narrow-to-region (point) (tramp-compat-line-end-position))
      (when (re-search-forward regexp nil t)
        (setq result (list (match-string 3) (match-string 1))))
      (widen)
      (forward-line 1)
      result))
 
+(defun tramp-parse-putty (registry)
+  "Return a list of (user host) tuples allowed to access.
+User is always nil."
+  ;; On Windows, there are problems in completion when
+  ;; `default-directory' is remote.
+  (let ((default-directory (tramp-compat-temporary-file-directory))
+       res)
+    (with-temp-buffer
+      (when (zerop (call-process "reg" nil t nil "query" registry))
+       (goto-char (point-min))
+       (while (not (eobp))
+         (push (tramp-parse-putty-group registry) res))))
+    res))
+
+(defun tramp-parse-putty-group (registry)
+   "Return a (user host) tuple allowed to access.
+User is always nil."
+   (let ((result)
+        (regexp (concat (regexp-quote registry) "\\\\\\(.+\\)")))
+     (narrow-to-region (point) (tramp-compat-line-end-position))
+     (when (re-search-forward regexp nil t)
+       (setq result (list nil (match-string 1))))
+     (widen)
+     (forward-line 1)
+     result))
+
 ;;; Internal Functions:
 
-(defun tramp-maybe-send-perl-script (multi-method method user host script name)
-  "Define in remote shell function NAME implemented as perl SCRIPT.
-Only send the definition if it has not already been done.
-Function may have 0-3 parameters."
-  (let ((remote-perl (tramp-get-remote-perl multi-method method user host)))
-    (unless remote-perl (error "No remote perl"))
-    (let ((perl-scripts (tramp-get-connection-property "perl-scripts" nil
-                                                       multi-method method user host)))
-      (unless (memq name perl-scripts)
-        (with-current-buffer (tramp-get-buffer multi-method method user host)
-          (tramp-message 5 (concat "Sending the Perl script `" name "'..."))
-          (tramp-send-string multi-method method user host
-                             (concat name
-                                     " () {\n"
-                                     remote-perl
-                                     " -e '"
-                                     script
-                                     "' \"$1\" \"$2\" \"$3\" 2>/dev/null\n}"))
-          (tramp-wait-for-output)
-          (tramp-set-connection-property "perl-scripts" (cons name perl-scripts)
-                                         multi-method method user host)
-          (tramp-message 5 (concat "Sending the Perl script `" name "'...done.")))))))
+(defun tramp-maybe-send-script (vec script name)
+  "Define in remote shell function NAME implemented as SCRIPT.
+Only send the definition if it has not already been done."
+  (let* ((p (tramp-get-connection-process vec))
+        (scripts (tramp-get-connection-property p "scripts" nil)))
+    (unless (member name scripts)
+      (tramp-message vec 5 "Sending script `%s'..." name)
+      ;; The script could contain a call of Perl.  This is masked with `%s'.
+      (tramp-send-command-and-check
+       vec
+       (format "%s () {\n%s\n}" name
+              (format script (tramp-get-remote-perl vec))))
+      (tramp-set-connection-property p "scripts" (cons name scripts))
+      (tramp-message vec 5 "Sending script `%s'...done." name))))
 
 (defun tramp-set-auto-save ()
-  (when (and (buffer-file-name)
-             (tramp-tramp-file-p (buffer-file-name))
-            ;; ange-ftp has its own auto-save mechanism
+  (when (and ;; ange-ftp has its own auto-save mechanism
             (eq (tramp-find-foreign-file-name-handler (buffer-file-name))
                 'tramp-sh-file-name-handler)
              auto-save-default)
@@ -5105,340 +5143,273 @@ Function may have 0-3 parameters."
 (defun tramp-run-test (switch filename)
   "Run `test' on the remote system, given a SWITCH and a FILENAME.
 Returns the exit code of the `test' program."
-  (let ((v (tramp-dissect-file-name filename)))
-    (save-excursion
-      (tramp-send-command-and-check
-       (tramp-file-name-multi-method v) (tramp-file-name-method v)
-       (tramp-file-name-user v) (tramp-file-name-host v)
-       (format "test %s %s" switch
-               (tramp-shell-quote-argument (tramp-file-name-localname v)))))))
-
-(defun tramp-run-test2 (program file1 file2 &optional switch)
-  "Run `test'-like PROGRAM on the remote system, given FILE1, FILE2.
-The optional SWITCH is inserted between the two files.
-Returns the exit code of the `test' PROGRAM.  Barfs if the methods,
+  (with-parsed-tramp-file-name filename nil
+    (tramp-send-command-and-check
+     v
+     (format
+      "%s %s %s"
+      (tramp-get-test-command v)
+      switch
+      (tramp-shell-quote-argument localname)))))
+
+(defun tramp-run-test2 (format-string file1 file2)
+  "Run `test'-like program on the remote system, given FILE1, FILE2.
+FORMAT-STRING contains the program name, switches, and place holders.
+Returns the exit code of the `test' program.  Barfs if the methods,
 hosts, or files, disagree."
-  (let* ((v1 (tramp-dissect-file-name file1))
-         (v2 (tramp-dissect-file-name file2))
-         (mmethod1 (tramp-file-name-multi-method v1))
-         (mmethod2 (tramp-file-name-multi-method v2))
-         (method1 (tramp-file-name-method v1))
-         (method2 (tramp-file-name-method v2))
-         (user1 (tramp-file-name-user v1))
-         (user2 (tramp-file-name-user v2))
-         (host1 (tramp-file-name-host v1))
-         (host2 (tramp-file-name-host v2))
-         (localname1 (tramp-file-name-localname v1))
-         (localname2 (tramp-file-name-localname v2)))
-    (unless (and method1 method2 host1 host2
-                 (equal mmethod1 mmethod2)
-                 (equal method1 method2)
-                 (equal user1 user2)
-                 (equal host1 host2))
-      (error "tramp-run-test2: %s"
-             "only implemented for same method, same user, same host"))
-    (save-excursion
+  (unless (tramp-equal-remote file1 file2)
+    (with-parsed-tramp-file-name (if (tramp-tramp-file-p file1) file1 file2) nil
+      (tramp-error
+       v 'file-error
+       "tramp-run-test2 only implemented for same method, user, host")))
+  (with-parsed-tramp-file-name file1 v1
+    (with-parsed-tramp-file-name file1 v2
       (tramp-send-command-and-check
-       mmethod1 method1 user1 host1
-       (format "%s %s %s %s"
-               program
-               (tramp-shell-quote-argument localname1)
-               (or switch "")
-               (tramp-shell-quote-argument localname2))))))
-
-(defun tramp-touch (file time)
-  "Set the last-modified timestamp of the given file.
-TIME is an Emacs internal time value as returned by `current-time'."
-  (let* ((utc
-         ;; With GNU Emacs, `format-time-string' has an optional
-         ;; parameter UNIVERSAL.  This is preferred.
-         (and (functionp 'subr-arity)
-              (= 3 (cdr (funcall (symbol-function 'subr-arity)
-                                 (symbol-function 'format-time-string))))))
-        (touch-time
-         (if utc
-             (format-time-string "%Y%m%d%H%M.%S" time t)
-           (format-time-string "%Y%m%d%H%M.%S" time))))
-    (if (tramp-tramp-file-p file)
-       (with-parsed-tramp-file-name file nil
-         (let ((buf (tramp-get-buffer multi-method method user host)))
-           (unless (zerop (tramp-send-command-and-check
-                           multi-method method user host
-                           (format "%s touch -t %s %s"
-                                   (if utc "TZ=UTC; export TZ;" "")
-                                   touch-time
-                                   (tramp-shell-quote-argument localname))
-                           t))
-             (pop-to-buffer buf)
-             (error "tramp-touch: touch failed, see buffer `%s' for details"
-                    buf))))
-      ;; It's a local file
-      (with-temp-buffer
-       (unless (zerop (call-process
-                       "touch" nil (current-buffer) nil "-t" touch-time file))
-             (pop-to-buffer (current-buffer))
-             (error "tramp-touch: touch failed"))))))
-
-(defun tramp-buffer-name (multi-method method user host)
-  "A name for the connection buffer for USER at HOST using METHOD."
-  (if multi-method
-      (tramp-buffer-name-multi-method "tramp" multi-method method user host)
-    (let ((method (tramp-find-method multi-method method user host)))
-      (if user
-         (format "*tramp/%s %s@%s*" method user host)
-       (format "*tramp/%s %s*" method host)))))
-
-(defun tramp-buffer-name-multi-method (prefix multi-method method user host)
-  "A name for the multi method connection buffer.
-MULTI-METHOD gives the multi method, METHOD the array of methods,
-USER the array of user names, HOST the array of host names."
-  (unless (and (= (length method) (length user))
-               (= (length method) (length host)))
-    (error "Syntax error in multi method (implementation error)"))
-  (let ((len (length method))
-        (i 0)
-        string-list)
-    (while (< i len)
-      (setq string-list
-            (cons (if (aref user i)
-                      (format "%s#%s@%s:" (aref method i)
-                              (aref user i) (aref host i))
-                    (format "%s@%s:" (aref method i) (aref host i)))
-                  string-list))
-      (setq i (1+ i)))
-    (format "*%s/%s %s*"
-            prefix multi-method
-            (apply 'concat (reverse string-list)))))
-
-(defun tramp-get-buffer (multi-method method user host)
-  "Get the connection buffer to be used for USER at HOST using METHOD."
+       v1
+       (format format-string
+              (tramp-shell-quote-argument v1-localname)
+              (tramp-shell-quote-argument v2-localname))))))
+
+(defun tramp-buffer-name (vec)
+  "A name for the connection buffer VEC."
+  ;; We must use `tramp-file-name-real-host', because for gateway
+  ;; methods the default port will be expanded later on, which would
+  ;; tamper the name.
+  (let ((method (tramp-file-name-method vec))
+       (user   (tramp-file-name-user vec))
+       (host   (tramp-file-name-real-host vec)))
+    (if (not (zerop (length user)))
+       (format "*tramp/%s %s@%s*" method user host)
+      (format "*tramp/%s %s*" method host))))
+
+(defun tramp-get-buffer (vec)
+  "Get the connection buffer to be used for VEC."
+  (or (get-buffer (tramp-buffer-name vec))
+      (with-current-buffer (get-buffer-create (tramp-buffer-name vec))
+       (setq buffer-undo-list t)
+       (setq default-directory
+             (tramp-make-tramp-file-name
+              (tramp-file-name-method vec)
+              (tramp-file-name-user vec)
+              (tramp-file-name-host vec)
+              "/"))
+       (current-buffer))))
+
+(defun tramp-get-connection-buffer (vec)
+  "Get the connection buffer to be used for VEC.
+In case a second asynchronous communication has been started, it is different
+from `tramp-get-buffer'."
+  (or (tramp-get-connection-property vec "process-buffer" nil)
+      (tramp-get-buffer vec)))
+
+(defun tramp-get-connection-process (vec)
+  "Get the connection process to be used for VEC.
+In case a second asynchronous communication has been started, it is different
+from the default one."
+  (get-process
+   (or (tramp-get-connection-property vec "process-name" nil)
+       (tramp-buffer-name vec))))
+
+(defun tramp-debug-buffer-name (vec)
+  "A name for the debug buffer for VEC."
+  ;; We must use `tramp-file-name-real-host', because for gateway
+  ;; methods the default port will be expanded later on, which would
+  ;; tamper the name.
+  (let ((method (tramp-file-name-method vec))
+       (user   (tramp-file-name-user vec))
+       (host   (tramp-file-name-real-host vec)))
+    (if (not (zerop (length user)))
+       (format "*debug tramp/%s %s@%s*" method user host)
+      (format "*debug tramp/%s %s*" method host))))
+
+(defun tramp-get-debug-buffer (vec)
+  "Get the debug buffer for VEC."
   (with-current-buffer
-      (get-buffer-create (tramp-buffer-name multi-method method user host))
-    (setq buffer-undo-list t)
+      (get-buffer-create (tramp-debug-buffer-name vec))
+    (when (bobp)
+      (setq buffer-undo-list t)
+      ;; Activate outline-mode.  This runs `text-mode-hook' and
+      ;; `outline-mode-hook'.  We must prevent that local processes
+      ;; die.  Yes: I've seen `flyspell-mode', which starts "ispell"
+      ;; ...
+      (let ((default-directory (tramp-compat-temporary-file-directory)))
+       (outline-mode))
+      (set (make-local-variable 'outline-regexp)
+          "[0-9]+:[0-9]+:[0-9]+ [a-z0-9-]+ (\\([0-9]+\\)) #")
+;      (set (make-local-variable 'outline-regexp)
+;         "[a-z.-]+:[0-9]+: [a-z0-9-]+ (\\([0-9]+\\)) #")
+      (set (make-local-variable 'outline-level) 'tramp-outline-level))
     (current-buffer)))
 
-(defun tramp-debug-buffer-name (multi-method method user host)
-  "A name for the debug buffer for USER at HOST using METHOD."
-  (if multi-method
-      (tramp-buffer-name-multi-method "debug tramp"
-                                     multi-method method user host)
-    (let ((method (tramp-find-method multi-method method user host)))
-      (if user
-         (format "*debug tramp/%s %s@%s*" method user host)
-       (format "*debug tramp/%s %s*" method host)))))
-
-(defun tramp-get-debug-buffer (multi-method method user host)
-  "Get the debug buffer for USER at HOST using METHOD."
-  (with-current-buffer
-      (get-buffer-create
-       (tramp-debug-buffer-name multi-method method user host))
-    (setq buffer-undo-list t)
-    (current-buffer)))
+(defun tramp-outline-level ()
+  "Return the depth to which a statement is nested in the outline.
+Point must be at the beginning of a header line.
 
-(defun tramp-find-executable (multi-method method user host
-                                         progname dirlist ignore-tilde)
-  "Searches for PROGNAME in all directories mentioned in DIRLIST.
-First args METHOD, USER and HOST specify the connection, PROGNAME
-is the program to search for, and DIRLIST gives the list of directories
-to search.  If IGNORE-TILDE is non-nil, directory names starting
-with `~' will be ignored.
+The outline level is equal to the verbosity of the Tramp message."
+  (1+ (string-to-number (match-string 1))))
+
+(defun tramp-find-executable
+  (vec progname dirlist &optional ignore-tilde ignore-path)
+  "Searches for PROGNAME in $PATH and all directories mentioned in DIRLIST.
+First arg VEC specifies the connection, PROGNAME is the program
+to search for, and DIRLIST gives the list of directories to
+search.  If IGNORE-TILDE is non-nil, directory names starting
+with `~' will be ignored. If IGNORE-PATH is non-nil, searches
+only in DIRLIST.
 
 Returns the absolute file name of PROGNAME, if found, and nil otherwise.
 
 This function expects to be in the right *tramp* buffer."
-  (let (result)
-    (when ignore-tilde
-      ;; Remove all ~/foo directories from dirlist.  In Emacs 20,
-      ;; `remove' is in CL, and we want to avoid CL dependencies.
-      (let (newdl d)
-        (while dirlist
-          (setq d (car dirlist))
-          (setq dirlist (cdr dirlist))
-          (unless (char-equal ?~ (aref d 0))
-            (setq newdl (cons d newdl))))
-        (setq dirlist (nreverse newdl))))
-    (tramp-send-command
-     multi-method method user host
-     (format (concat "while read d; "
-                     "do if test -x $d/%s -a -f $d/%s; "
-                     "then echo tramp_executable $d/%s; "
-                     "break; fi; done <<'EOF'")
-             progname progname progname))
-    (mapcar (lambda (d)
-              (tramp-send-command multi-method method user host d))
-            dirlist)
-    (tramp-send-command multi-method method user host "EOF")
-    (tramp-wait-for-output)
-    (goto-char (point-max))
-    (when (search-backward "tramp_executable " nil t)
-      (skip-chars-forward "^ ")
-      (skip-chars-forward " ")
-      (buffer-substring (point) (tramp-line-end-position)))))
-
-(defun tramp-set-remote-path (multi-method method user host var dirlist)
-  "Sets the remote environment VAR to existing directories from DIRLIST.
-I.e., for each directory in DIRLIST, it is tested whether it exists and if
-so, it is added to the environment variable VAR."
-  (let ((existing-dirs
-         (mapcar
-          (lambda (x)
-            (when (and
-                   (file-exists-p
-                    (tramp-make-tramp-file-name multi-method method user host x))
-                   (file-directory-p
-                    (tramp-make-tramp-file-name multi-method method user host x)))
-              x))
-          dirlist)))
-    (tramp-send-command
-     multi-method method user host
-     (concat var "="
-             (mapconcat 'identity (delq nil existing-dirs) ":")
-             "; export " var))
-  (tramp-wait-for-output)))
+  (with-current-buffer (tramp-get-buffer vec)
+    (let (result)
+      ;; Check whether the executable is in $PATH. "which(1)" does not
+      ;; report always a correct error code; therefore we check the
+      ;; number of words it returns.
+      (unless ignore-path
+       (tramp-send-command vec (format "which \\%s | wc -w" progname))
+       (goto-char (point-min))
+       (if (looking-at "^1$")
+           (setq result (concat "\\" progname))))
+      (unless result
+       (when ignore-tilde
+         ;; Remove all ~/foo directories from dirlist.  In Emacs 20,
+         ;; `remove' is in CL, and we want to avoid CL dependencies.
+         (let (newdl d)
+           (while dirlist
+             (setq d (car dirlist))
+             (setq dirlist (cdr dirlist))
+             (unless (char-equal ?~ (aref d 0))
+               (setq newdl (cons d newdl))))
+           (setq dirlist (nreverse newdl))))
+       (tramp-send-command
+        vec
+        (format (concat "while read d; "
+                        "do if test -x $d/%s -a -f $d/%s; "
+                        "then echo tramp_executable $d/%s; "
+                        "break; fi; done <<'EOF'\n"
+                        "%s\nEOF")
+                progname progname progname (mapconcat 'identity dirlist "\n")))
+       (goto-char (point-max))
+       (when (search-backward "tramp_executable " nil t)
+         (skip-chars-forward "^ ")
+         (skip-chars-forward " ")
+         (setq result (buffer-substring
+                       (point) (tramp-compat-line-end-position)))))
+    result)))
+
+(defun tramp-set-remote-path (vec)
+  "Sets the remote environment PATH to existing directories.
+I.e., for each directory in `tramp-remote-path', it is tested
+whether it exists and if so, it is added to the environment
+variable PATH."
+  (tramp-message vec 5 (format "Setting $PATH environment variable"))
+  (tramp-send-command
+   vec (format "PATH=%s; export PATH"
+              (mapconcat 'identity (tramp-get-remote-path vec) ":"))))
 
 ;; -- communication with external shell --
 
-(defun tramp-find-file-exists-command (multi-method method user host)
+(defun tramp-find-file-exists-command (vec)
   "Find a command on the remote host for checking if a file exists.
 Here, we are looking for a command which has zero exit status if the
 file exists and nonzero exit status otherwise."
-  (make-local-variable 'tramp-file-exists-command)
-  (tramp-message 9 "Finding command to check if file exists")
-  (let ((existing
-         (tramp-make-tramp-file-name
-          multi-method method user host
-          "/"))                         ;assume this file always exists
+  (let ((existing "/")
         (nonexisting
-         (tramp-make-tramp-file-name
-          multi-method method user host
-          "/ this file does not exist "))) ;assume this never exists
+        (tramp-shell-quote-argument "/ this file does not exist "))
+       result)
     ;; The algorithm is as follows: we try a list of several commands.
     ;; For each command, we first run `$cmd /' -- this should return
     ;; true, as the root directory always exists.  And then we run
-    ;; `$cmd /this\ file\ does\ not\ exist', hoping that the file indeed
+    ;; `$cmd /this\ file\ does\ not\ exist ', hoping that the file indeed
     ;; does not exist.  This should return false.  We use the first
     ;; command we find that seems to work.
     ;; The list of commands to try is as follows:
-    ;; `ls -d'          This works on most systems, but NetBSD 1.4
-    ;;                  has a bug: `ls' always returns zero exit
-    ;;                  status, even for files which don't exist.
-    ;; `test -e'        Some Bourne shells have a `test' builtin
-    ;;                  which does not know the `-e' option.
-    ;; `/bin/test -e'   For those, the `test' binary on disk normally
-    ;;                  provides the option.  Alas, the binary
-    ;;                  is sometimes `/bin/test' and sometimes it's
-    ;;                  `/usr/bin/test'.
-    ;; `/usr/bin/test -e'       In case `/bin/test' does not exist.
+    ;; `ls -d'            This works on most systems, but NetBSD 1.4
+    ;;                    has a bug: `ls' always returns zero exit
+    ;;                    status, even for files which don't exist.
+    ;; `test -e'          Some Bourne shells have a `test' builtin
+    ;;                    which does not know the `-e' option.
+    ;; `/bin/test -e'     For those, the `test' binary on disk normally
+    ;;                    provides the option.  Alas, the binary
+    ;;                    is sometimes `/bin/test' and sometimes it's
+    ;;                    `/usr/bin/test'.
+    ;; `/usr/bin/test -e' In case `/bin/test' does not exist.
     (unless (or
-             (and (setq tramp-file-exists-command "test -e %s")
-                  (file-exists-p existing)
-                  (not (file-exists-p nonexisting)))
-             (and (setq tramp-file-exists-command "/bin/test -e %s")
-                  (file-exists-p existing)
-                  (not (file-exists-p nonexisting)))
-             (and (setq tramp-file-exists-command "/usr/bin/test -e %s")
-                  (file-exists-p existing)
-                  (not (file-exists-p nonexisting)))
-             (and (setq tramp-file-exists-command "ls -d %s")
-                  (file-exists-p existing)
-                  (not (file-exists-p nonexisting))))
-      (error "Couldn't find command to check if file exists"))))
+             (and (setq result (format "%s -e" (tramp-get-test-command vec)))
+                 (zerop (tramp-send-command-and-check
+                         vec (format "%s %s" result existing)))
+                  (not (zerop (tramp-send-command-and-check
+                              vec (format "%s %s" result nonexisting)))))
+             (and (setq result "/bin/test -e")
+                 (zerop (tramp-send-command-and-check
+                         vec (format "%s %s" result existing)))
+                  (not (zerop (tramp-send-command-and-check
+                              vec (format "%s %s" result nonexisting)))))
+             (and (setq result "/usr/bin/test -e")
+                 (zerop (tramp-send-command-and-check
+                         vec (format "%s %s" result existing)))
+                  (not (zerop (tramp-send-command-and-check
+                              vec (format "%s %s" result nonexisting)))))
+             (and (setq result (format "%s -d" (tramp-get-ls-command vec)))
+                 (zerop (tramp-send-command-and-check
+                         vec (format "%s %s" result existing)))
+                  (not (zerop (tramp-send-command-and-check
+                              vec (format "%s %s" result nonexisting))))))
+      (tramp-error
+       vec 'file-error "Couldn't find command to check if file exists"))
+    result))
 
 
 ;; CCC test ksh or bash found for tilde expansion?
-(defun tramp-find-shell (multi-method method user host)
-  "Find a shell on the remote host which groks tilde expansion."
-  (let ((shell nil))
-    (tramp-send-command multi-method method user host "echo ~root")
-    (tramp-wait-for-output)
-    (cond
-     ((string-match "^~root$" (buffer-string))
-      (setq shell
-            (or (tramp-find-executable multi-method method user host
-                                      "bash"  tramp-remote-path t)
-                (tramp-find-executable multi-method method user host
-                                      "ksh" tramp-remote-path t)))
-      (unless shell
-        (error "Couldn't find a shell which groks tilde expansion"))
-      ;; Find arguments for this shell.
-      (let ((alist tramp-sh-extra-args)
-           item extra-args)
-       (while (and alist (null extra-args))
-         (setq item (pop alist))
-         (when (string-match (car item) shell)
-           (setq extra-args (cdr item))))
-       (when extra-args (setq shell (concat shell " " extra-args))))
-      (tramp-message
-       5 "Starting remote shell `%s' for tilde expansion..." shell)
-      (tramp-send-command
-       multi-method method user host
-       (concat "PROMPT_COMMAND='' PS1='$ ' exec " shell)) ;
-      (tramp-barf-if-no-shell-prompt
-       (get-buffer-process (current-buffer))
-       60 "Couldn't find remote `%s' prompt" shell)
-      (tramp-message
-       9 "Setting remote shell prompt...")
-      ;; Douglas Gray Stephens <DGrayStephens@slb.com> says that we
-      ;; must use "\n" here, not tramp-rsh-end-of-line.  Kai left the
-      ;; last tramp-rsh-end-of-line, Douglas wanted to replace that,
-      ;; as well.
-      (process-send-string
-       nil (format "PROMPT_COMMAND=''; PS1='%s%s%s'; PS2=''; PS3=''%s"
+(defun tramp-find-shell (vec)
+  "Opens a shell on the remote host which groks tilde expansion."
+  (unless (tramp-get-connection-property vec "remote-shell" nil)
+    (let (shell)
+      (with-current-buffer (tramp-get-buffer vec)
+       (tramp-send-command vec "echo ~root")
+       (cond
+        ((string-match "^~root$" (buffer-string))
+         (setq shell
+               (or (tramp-find-executable
+                    vec "bash" (tramp-get-remote-path vec) t)
+                   (tramp-find-executable
+                    vec "ksh" (tramp-get-remote-path vec) t)))
+         (unless shell
+           (tramp-error
+            vec 'file-error
+            "Couldn't find a shell which groks tilde expansion"))
+         ;; Find arguments for this shell.
+         (let ((alist tramp-sh-extra-args)
+               item extra-args)
+           (while (and alist (null extra-args))
+             (setq item (pop alist))
+             (when (string-match (car item) shell)
+               (setq extra-args (cdr item))))
+           (when extra-args (setq shell (concat shell " " extra-args))))
+         (tramp-message
+          vec 5 "Starting remote shell `%s' for tilde expansion..." shell)
+         (tramp-send-command-internal
+          vec (concat "PROMPT_COMMAND='' PS1='$ ' exec " shell))
+         (tramp-message vec 5 "Setting remote shell prompt...")
+         ;; Douglas Gray Stephens <DGrayStephens@slb.com> says that we
+         ;; must use "\n" here, not tramp-rsh-end-of-line.  Kai left the
+         ;; last tramp-rsh-end-of-line, Douglas wanted to replace that,
+         ;; as well.
+         (tramp-send-command
+          vec
+          (format "PROMPT_COMMAND=''; PS1='%s%s%s'; PS2=''; PS3=''"
                   tramp-rsh-end-of-line
                   tramp-end-of-output
-                  tramp-rsh-end-of-line
                   tramp-rsh-end-of-line))
-      (tramp-wait-for-output)
-      (tramp-message
-       9 "Setting remote shell prompt...done")
-      )
-     (t (tramp-message 5 "Remote `%s' groks tilde expansion, good"
-                      (tramp-get-method-parameter
-                       multi-method method user host 'tramp-remote-sh))))))
-
-(defun tramp-check-ls-command (multi-method method user host cmd)
-  "Checks whether the given `ls' executable groks `-n'.
-METHOD, USER and HOST specify the connection, CMD (the absolute file name of)
-the `ls' executable.  Returns t if CMD supports the `-n' option, nil
-otherwise."
-  (tramp-message 9 "Checking remote `%s' command for `-n' option" cmd)
-  (when (file-executable-p
-         (tramp-make-tramp-file-name multi-method method user host cmd))
-    (let ((result nil))
-      (tramp-message 7 "Testing remote command `%s' for -n..." cmd)
-      (setq result
-            (tramp-send-command-and-check
-             multi-method method user host
-             (format "%s -lnd / >/dev/null"
-                     cmd)))
-      (tramp-message 7 "Testing remote command `%s' for -n...%s"
-                   cmd
-                   (if (zerop result) "okay" "failed"))
-      (zerop result))))
-
-(defun tramp-check-ls-commands (multi-method method user host cmd dirlist)
-  "Checks whether the given `ls' executable in one of the dirs groks `-n'.
-Returns nil if none was found, else the command is returned."
-  (let ((dl dirlist)
-        (result nil))
-    (tramp-let-maybe directory-sep-char ?/ ;for XEmacs
-      ;; It would be better to use the CL function `find', but
-      ;; we don't want run-time dependencies on CL.
-      (while (and dl (not result))
-       (let ((x (concat (file-name-as-directory (car dl)) cmd)))
-         (when (tramp-check-ls-command multi-method method user host x)
-           (setq result x)))
-       (setq dl (cdr dl)))
-      result)))
-
-(defun tramp-find-ls-command (multi-method method user host)
-  "Finds an `ls' command which groks the `-n' option, returning nil if failed.
-\(This option prints numeric user and group ids in a long listing.)"
-  (tramp-message 9 "Finding a suitable `ls' command")
-  (or
-   (tramp-check-ls-commands multi-method method user host "ls" tramp-remote-path)
-   (tramp-check-ls-commands multi-method method user host "gnuls" tramp-remote-path)
-   (tramp-check-ls-commands multi-method method user host "gls" tramp-remote-path)))
+         (tramp-message vec 5 "Setting remote shell prompt...done"))
+        (t (tramp-message
+            vec 5 "Remote `%s' groks tilde expansion, good"
+            (tramp-get-method-parameter
+             (tramp-file-name-method vec) 'tramp-remote-sh))
+           (tramp-set-connection-property
+            vec "remote-shell"
+            (tramp-get-method-parameter
+             (tramp-file-name-method vec) 'tramp-remote-sh))))))))
 
 ;; ------------------------------------------------------------
 ;; -- Functions for establishing connection --
@@ -5448,639 +5419,208 @@ Returns nil if none was found, else the command is returned."
 ;; prompts from the remote host.  See the variable
 ;; `tramp-actions-before-shell' for usage of these functions.
 
-(defun tramp-action-login (p multi-method method user host)
+(defun tramp-action-login (proc vec)
   "Send the login name."
-  (tramp-message 9 "Sending login name `%s'"
-                (or user (user-login-name)))
-  (erase-buffer)
-  (process-send-string nil (concat (or user (user-login-name))
-                                  tramp-rsh-end-of-line)))
-
-(defun tramp-action-password (p multi-method method user host)
+  (when (not (stringp tramp-current-user))
+    (save-window-excursion
+      (let ((enable-recursive-minibuffers t))
+       (pop-to-buffer (tramp-get-connection-buffer vec))
+       (setq tramp-current-user (read-string (match-string 0))))))
+  (tramp-message vec 3 "Sending login name `%s'" tramp-current-user)
+  (with-current-buffer (tramp-get-connection-buffer vec)
+    (tramp-message vec 6 "\n%s" (buffer-string)))
+  (tramp-send-string vec tramp-current-user))
+
+(defun tramp-action-password (proc vec)
   "Query the user for a password."
-  (let ((pw-prompt
-        (format "Password for %s "
-                (tramp-make-tramp-file-name
-                 nil method user host ""))))
-    (tramp-message 9 "Sending password")
-    (tramp-enter-password p pw-prompt user host)))
-
-(defun tramp-action-succeed (p multi-method method user host)
+  (tramp-message vec 3 "Sending password")
+  (tramp-enter-password proc))
+
+(defun tramp-action-succeed (proc vec)
   "Signal success in finding shell prompt."
-  (tramp-message 9 "Found remote shell prompt.")
-  (erase-buffer)
   (throw 'tramp-action 'ok))
 
-(defun tramp-action-permission-denied (p multi-method method user host)
+(defun tramp-action-permission-denied (proc vec)
   "Signal permission denied."
-  (pop-to-buffer (tramp-get-buffer multi-method method user host))
-  (tramp-message 9 "Permission denied by remote host.")
-  (kill-process p)
+  (kill-process proc)
   (throw 'tramp-action 'permission-denied))
 
-(defun tramp-action-copy-failed (p multi-method method user host)
-  "Signal copy failed."
-  (kill-process p)
-  (error "%s" (match-string 1)))
-
-(defun tramp-action-yesno (p multi-method method user host)
+(defun tramp-action-yesno (proc vec)
   "Ask the user for confirmation using `yes-or-no-p'.
 Send \"yes\" to remote process on confirmation, abort otherwise.
 See also `tramp-action-yn'."
   (save-window-excursion
-    (pop-to-buffer (tramp-get-buffer multi-method method user host))
-    (unless (yes-or-no-p (match-string 0))
-      (kill-process p)
-      (erase-buffer)
-      (throw 'tramp-action 'permission-denied))
-    (process-send-string p (concat "yes" tramp-rsh-end-of-line))
-    (erase-buffer)))
-
-(defun tramp-action-yn (p multi-method method user host)
+    (let ((enable-recursive-minibuffers t))
+      (save-match-data (pop-to-buffer (tramp-get-connection-buffer vec)))
+      (unless (yes-or-no-p (match-string 0))
+       (kill-process proc)
+       (throw 'tramp-action 'permission-denied))
+      (with-current-buffer (tramp-get-connection-buffer vec)
+       (tramp-message vec 6 "\n%s" (buffer-string)))
+      (tramp-send-string vec "yes"))))
+
+(defun tramp-action-yn (proc vec)
   "Ask the user for confirmation using `y-or-n-p'.
 Send \"y\" to remote process on confirmation, abort otherwise.
 See also `tramp-action-yesno'."
   (save-window-excursion
-    (pop-to-buffer (tramp-get-buffer multi-method method user host))
-    (unless (y-or-n-p (match-string 0))
-      (kill-process p)
-      (throw 'tramp-action 'permission-denied))
-    (erase-buffer)
-    (process-send-string p (concat "y" tramp-rsh-end-of-line))))
-
-(defun tramp-action-terminal (p multi-method method user host)
+    (let ((enable-recursive-minibuffers t))
+      (save-match-data (pop-to-buffer (tramp-get-connection-buffer vec)))
+      (unless (y-or-n-p (match-string 0))
+       (kill-process proc)
+       (throw 'tramp-action 'permission-denied))
+      (with-current-buffer (tramp-get-connection-buffer vec)
+       (tramp-message vec 6 "\n%s" (buffer-string)))
+      (tramp-send-string vec "y"))))
+
+(defun tramp-action-terminal (proc vec)
   "Tell the remote host which terminal type to use.
 The terminal type can be configured with `tramp-terminal-type'."
-  (tramp-message 9 "Setting `%s' as terminal type."
-                tramp-terminal-type)
-  (erase-buffer)
-  (process-send-string nil (concat tramp-terminal-type
-                                  tramp-rsh-end-of-line)))
+  (tramp-message vec 5 "Setting `%s' as terminal type." tramp-terminal-type)
+  (tramp-send-string vec tramp-terminal-type))
 
-(defun tramp-action-process-alive (p multi-method method user host)
+(defun tramp-action-process-alive (proc vec)
   "Check whether a process has finished."
-  (unless (memq (process-status p) '(run open))
+  (unless (memq (process-status proc) '(run open))
     (throw 'tramp-action 'process-died)))
 
-(defun tramp-action-out-of-band (p multi-method method user host)
+(defun tramp-action-out-of-band (proc vec)
   "Check whether an out-of-band copy has finished."
-  (cond ((and (memq (process-status p) '(stop exit))
-             (zerop (process-exit-status p)))
-        (tramp-message 9 "Process has finished.")
+  (cond ((and (memq (process-status proc) '(stop exit))
+             (zerop (process-exit-status proc)))
+        (tramp-message vec 3 "Process has finished.")
         (throw 'tramp-action 'ok))
-       ((or (and (memq (process-status p) '(stop exit))
-                 (not (zerop (process-exit-status p))))
-            (memq (process-status p) '(signal)))
+       ((or (and (memq (process-status proc) '(stop exit))
+                 (not (zerop (process-exit-status proc))))
+            (memq (process-status proc) '(signal)))
         ;; `scp' could have copied correctly, but set modes could have failed.
         ;; This can be ignored.
-        (goto-char (point-min))
-        (if (re-search-forward tramp-operation-not-permitted-regexp nil t)
-            (progn
-              (tramp-message 10 "'set mode' error ignored.")
-              (tramp-message 9 "Process has finished.")
-              (throw 'tramp-action 'ok))
-          (tramp-message 9 "Process has died.")
-          (throw 'tramp-action 'process-died)))
+        (with-current-buffer (process-buffer proc)
+          (goto-char (point-min))
+          (if (re-search-forward tramp-operation-not-permitted-regexp nil t)
+              (progn
+                (tramp-message vec 5 "'set mode' error ignored.")
+                (tramp-message vec 3 "Process has finished.")
+                (throw 'tramp-action 'ok))
+            (tramp-message vec 3 "Process has died.")
+            (throw 'tramp-action 'process-died))))
        (t nil)))
 
-;; The following functions are specifically for multi connections.
-
-(defun tramp-multi-action-login (p method user host)
-  "Send the login name."
-  (tramp-message 9 "Sending login name `%s'" user)
-  (erase-buffer)
-  (process-send-string p (concat user tramp-rsh-end-of-line)))
-
-(defun tramp-multi-action-password (p method user host)
-  "Query the user for a password."
-  (let ((pw-prompt
-        (format "Password for %s "
-                (tramp-make-tramp-file-name
-                 nil method user host ""))))
-    (tramp-message 9 "Sending password")
-    (tramp-enter-password p pw-prompt user host)))
-
-(defun tramp-multi-action-succeed (p method user host)
-  "Signal success in finding shell prompt."
-  (tramp-message 9 "Found shell prompt on `%s'" host)
-  (erase-buffer)
-  (throw 'tramp-action 'ok))
-
-(defun tramp-multi-action-permission-denied (p method user host)
-  "Signal permission denied."
-  (tramp-message 9 "Permission denied by remote host `%s'" host)
-  (kill-process p)
-  (erase-buffer)
-  (throw 'tramp-action 'permission-denied))
-
-(defun tramp-multi-action-process-alive (p method user host)
-  "Check whether a process has finished."
-  (unless (memq (process-status p) '(run open))
-    (throw 'tramp-action 'process-died)))
-
 ;; Functions for processing the actions.
 
-(defun tramp-process-one-action (p multi-method method user host actions)
+(defun tramp-process-one-action (proc vec actions)
   "Wait for output from the shell and perform one action."
-  (let (found item pattern action todo)
-    (erase-buffer)
-    (tramp-message 9 "Waiting 60s for prompt from remote shell")
+  (let (found todo item pattern action)
     (while (not found)
-      (tramp-accept-process-output p 1)
-      (goto-char (point-min))
+      ;; Reread output once all actions have been performed.
+      ;; Obviously, the output was not complete.
+      (tramp-accept-process-output proc 1)
       (setq todo actions)
       (while todo
-       (goto-char (point-min))
        (setq item (pop todo))
-       (setq pattern (symbol-value (nth 0 item)))
+       (setq pattern (concat (symbol-value (nth 0 item)) "\\'"))
        (setq action (nth 1 item))
-       (tramp-message 10 "Looking for regexp \"%s\" from remote shell"
-                      pattern)
-       (when (re-search-forward (concat pattern "\\'") nil t)
-         (setq found (funcall action p multi-method method user host)))))
+       (tramp-message
+        vec 5 "Looking for regexp \"%s\" from remote shell" pattern)
+       (when (tramp-check-for-regexp proc pattern)
+         (tramp-message vec 5 "Call `%s'" (symbol-name action))
+         (setq found (funcall action proc vec)))))
     found))
 
-(defun tramp-process-actions
-  (p multi-method method user host actions &optional timeout)
+(defun tramp-process-actions (proc vec actions &optional timeout)
   "Perform actions until success or TIMEOUT."
-  (tramp-message 10 "%s" (mapconcat 'identity (process-command p) " "))
   (let (exit)
     (while (not exit)
-      (tramp-message 9 "Waiting for prompts from remote shell")
+      (tramp-message proc 3 "Waiting for prompts from remote shell")
       (setq exit
            (catch 'tramp-action
              (if timeout
                  (with-timeout (timeout)
-                   (tramp-process-one-action
-                    p multi-method method user host actions))
-               (tramp-process-one-action
-                p multi-method method user host actions))
-             nil)))
+                   (tramp-process-one-action proc vec actions))
+               (tramp-process-one-action proc vec actions)))))
+    (with-current-buffer (tramp-get-connection-buffer vec)
+      (tramp-message vec 6 "\n%s" (buffer-string)))
     (unless (eq exit 'ok)
-      (tramp-clear-passwd user host)
-      (error "Login failed"))))
-
-;; For multi-actions.
-
-(defun tramp-process-one-multi-action (p method user host actions)
-  "Wait for output from the shell and perform one action."
-  (let (found item pattern action todo)
-    (erase-buffer)
-    (tramp-message 9 "Waiting 60s for prompt from remote shell")
-    (with-timeout (60 (throw 'tramp-action 'timeout))
-      (while (not found)
-       (tramp-accept-process-output p 1)
-       (setq todo actions)
-       (goto-char (point-min))
-       (while todo
-         (goto-char (point-min))
-         (setq item (pop todo))
-         (setq pattern (symbol-value (nth 0 item)))
-         (setq action (nth 1 item))
-         (tramp-message 10 "Looking for regexp \"%s\" from remote shell"
-                        pattern)
-         (when (re-search-forward (concat pattern "\\'") nil t)
-           (setq found (funcall action p method user host)))))
-      found)))
-
-(defun tramp-process-multi-actions (p method user host actions)
-  "Perform actions until success."
-  (let (exit)
-    (while (not exit)
-      (tramp-message 9 "Waiting for prompts from remote shell")
-      (setq exit
-           (catch 'tramp-action
-             (tramp-process-one-multi-action p method user host actions)
-             nil)))
-    (unless (eq exit 'ok)
-      (tramp-clear-passwd user host)
-      (error "Login failed"))))
-
-;; Functions to execute when we have seen the remote shell prompt but
-;; before we exec the Bourne-ish shell.  Note that these commands
-;; might be sent to any shell, not just a Bourne-ish shell.  This
-;; means that the commands need to work in all shells.  (It is also
-;; okay for some commands to just fail with an error message, but
-;; please make sure that they at least don't crash the odd shell people
-;; might be running...)
-(defun tramp-process-initial-commands (p
-                                      multi-method method user host
-                                      commands)
-  "Send list of commands to remote host, in order."
-  (let (cmd)
-    (while commands
-      (setq cmd (pop commands))
-      (erase-buffer)
-      (tramp-message 10 "Sending command to remote shell: %s"
-                    cmd)
-      (tramp-send-command multi-method method user host cmd nil t)
-      (tramp-barf-if-no-shell-prompt
-       p 60 "Remote shell command failed: %s" cmd))
-    (erase-buffer)))
-
-;; The actual functions for opening connections.
-
-(defun tramp-open-connection-telnet (multi-method method user host)
-  "Open a connection using a telnet METHOD.
-This starts the command `telnet HOST ARGS'[*], then waits for a remote
-login prompt, then sends the user name USER, then waits for a remote
-password prompt.  It queries the user for the password, then sends the
-password to the remote host.
-
-If USER is nil, uses value returned by `(user-login-name)' instead.
-
-Recognition of the remote shell prompt is based on the variables
-`shell-prompt-pattern' and `tramp-shell-prompt-pattern' which must be
-set up correctly.
-
-Please note that it is NOT possible to use this connection method
-together with an out-of-band transfer method!  You must use an inline
-transfer method.
-
-Maybe the different regular expressions need to be tuned.
-
-* Actually, the telnet program as well as the args to be used can be
-  specified in the method parameters, see the variable `tramp-methods'."
-  (save-match-data
-    (when (tramp-method-out-of-band-p multi-method method user host)
-      (error "Cannot use out-of-band method `%s' with telnet connection method"
-             method))
-    (when multi-method
-      (error "Cannot multi-connect using telnet connection method"))
-    (tramp-pre-connection multi-method method user host tramp-chunksize)
-    (tramp-message 7 "Opening connection for %s@%s using %s..."
-                  (or user (user-login-name)) host method)
-    (let ((process-environment (copy-sequence process-environment)))
-      (setenv "TERM" tramp-terminal-type)
-      (setenv "PROMPT_COMMAND")
-      (setenv "PS1" "$ ")
-      (let* ((default-directory (tramp-temporary-file-directory))
-            ;; If we omit the conditional here, then we would use
-            ;; `undecided-dos' in some cases.  With the conditional,
-            ;; we use nil in these cases.  Which one is right?
-             (coding-system-for-read (unless (and (not (featurep 'xemacs))
-                                                  (> emacs-major-version 20))
-                                       tramp-dos-coding-system))
-             (p (apply 'start-process
-                       (tramp-buffer-name multi-method method user host)
-                       (tramp-get-buffer multi-method method user host)
-                      (tramp-get-method-parameter
-                       multi-method
-                       (tramp-find-method multi-method method user host)
-                       user host 'tramp-login-program)
-                       host
-                      (tramp-get-method-parameter
-                       multi-method
-                       (tramp-find-method multi-method method user host)
-                       user host 'tramp-login-args)))
-             (found nil)
-             (pw nil))
-        (tramp-set-process-query-on-exit-flag p nil)
-       (set-buffer (tramp-get-buffer multi-method method user host))
-       (erase-buffer)
-       (tramp-process-actions p multi-method method user host
-                              tramp-actions-before-shell 60)
-        (tramp-open-connection-setup-interactive-shell
-         p multi-method method user host)
-        (tramp-post-connection multi-method method user host)))))
-
-
-(defun tramp-open-connection-rsh (multi-method method user host)
-  "Open a connection using an rsh METHOD.
-This starts the command `rsh HOST -l USER'[*], then waits for a remote
-password or shell prompt.  If a password prompt is seen, the user is
-queried for a password, this function sends the password to the remote
-host and waits for a shell prompt.
-
-If USER is nil, start the command `rsh HOST'[*] instead
-
-Recognition of the remote shell prompt is based on the variables
-`shell-prompt-pattern' and `tramp-shell-prompt-pattern' which must be
-set up correctly.
-
-Kludgy feature: if HOST has the form \"xx#yy\", then yy is assumed to
-be a port number for ssh, and \"-p yy\" will be added to the list of
-arguments, and xx will be used as the host name to connect to.
-
-* Actually, the rsh program to be used can be specified in the
-  method parameters, see the variable `tramp-methods'."
-  (save-match-data
-    (when multi-method
-      (error "Cannot multi-connect using rsh connection method"))
-    (tramp-pre-connection multi-method method user host tramp-chunksize)
-    (if (and user (not (string= user "")))
-       (tramp-message 7 "Opening connection for %s@%s using %s..."
-                      user host method)
-      (tramp-message 7 "Opening connection at %s using %s..." host method))
-    (let ((process-environment (copy-sequence process-environment))
-         (bufnam (tramp-buffer-name multi-method method user host))
-         (buf (tramp-get-buffer multi-method method user host))
-         (login-program (tramp-get-method-parameter
-                       multi-method
-                       (tramp-find-method multi-method method user host)
-                       user host 'tramp-login-program))
-         (login-args (mapcar
-                      (lambda (x)
-                        (format-spec
-                         x `((?t . ,(format "/tmp/%s" tramp-temp-name-prefix)))))
-                      (tramp-get-method-parameter
-                       multi-method
-                       (tramp-find-method multi-method method user host)
-                       user host 'tramp-login-args)))
-         (real-host host))
-      ;; The following should be changed.  We need a more general
-      ;; mechanism to parse extra host args.
-      (when (string-match "\\([^#]*\\)#\\(.*\\)" host)
-       (setq login-args (cons "-p" (cons (match-string 2 host) login-args)))
-       (setq real-host (match-string 1 host)))
-      (setenv "TERM" tramp-terminal-type)
-      (setenv "PROMPT_COMMAND")
-      (setenv "PS1" "$ ")
-      (let* ((default-directory (tramp-temporary-file-directory))
-            ;; If we omit the conditional, we would use
-            ;; `undecided-dos' in some cases.  With the conditional,
-            ;; we use nil in these cases.  Which one is right?
-             (coding-system-for-read (unless (and (not (featurep 'xemacs))
-                                                  (> emacs-major-version 20))
-                                       tramp-dos-coding-system))
-             (p (if (and user (not (string= user "")))
-                    (apply #'start-process bufnam buf login-program
-                           real-host "-l" user login-args)
-                  (apply #'start-process bufnam buf login-program
-                         real-host login-args)))
-             (found nil))
-        (tramp-set-process-query-on-exit-flag p nil)
-
-       (set-buffer buf)
-       (tramp-process-actions p multi-method method user host
-                              tramp-actions-before-shell 60)
-        (tramp-message 7 "Initializing remote shell")
-        (tramp-open-connection-setup-interactive-shell
-         p multi-method method user host)
-        (tramp-post-connection multi-method method user host)))))
-
-(defun tramp-open-connection-su (multi-method method user host)
-  "Open a connection using the `su' program with METHOD.
-This starts `su - USER', then waits for a password prompt.  The HOST
-name must be equal to the local host name or to `localhost'.
-
-If USER is nil, uses value returned by user-login-name instead.
-
-Recognition of the remote shell prompt is based on the variables
-`shell-prompt-pattern' and `tramp-shell-prompt-pattern' which must be
-set up correctly.  Note that the other user may have a different shell
-prompt than you do, so it is not at all unlikely that the variable
-`shell-prompt-pattern' is set up wrongly!"
-  (save-match-data
-    (when (tramp-method-out-of-band-p multi-method method user host)
-      (error "Cannot use out-of-band method `%s' with `su' connection method"
-             method))
-    (unless (or (string-match (concat "^" (regexp-quote host))
-                              (system-name))
-                (string= "localhost" host)
-               (string= "" host))
-      (error
-       "Cannot connect to different host `%s' with `su' connection method"
-       host))
-    (tramp-pre-connection multi-method method user host tramp-chunksize)
-    (tramp-message 7 "Opening connection for `%s' using `%s'..."
-                  (or user "<root>") method)
-    (let ((process-environment (copy-sequence process-environment)))
-      (setenv "TERM" tramp-terminal-type)
-      (setenv "PROMPT_COMMAND")
-      (setenv "PS1" "$ ")
-      (let* ((default-directory (tramp-temporary-file-directory))
-            ;; If we omit the conditional, we use `undecided-dos' in
-            ;; some cases.  With the conditional, we use nil in these
-            ;; cases.  What's the difference?  Which one is right?
-             (coding-system-for-read (unless (and (not (featurep 'xemacs))
-                                                  (> emacs-major-version 20))
-                                       tramp-dos-coding-system))
-             (p (apply 'start-process
-                       (tramp-buffer-name multi-method method user host)
-                       (tramp-get-buffer multi-method method user host)
-                      (tramp-get-method-parameter
-                       multi-method
-                       (tramp-find-method multi-method method user host)
-                       user host 'tramp-login-program)
-                       (mapcar
-                        (lambda (x)
-                         (format-spec x `((?u . ,(or user "root")))))
-                        (tramp-get-method-parameter
-                        multi-method
-                        (tramp-find-method multi-method method user host)
-                        user host 'tramp-login-args))))
-             (found nil)
-             (pw nil))
-        (tramp-set-process-query-on-exit-flag p nil)
-       (set-buffer (tramp-get-buffer multi-method method user host))
-       (tramp-process-actions p multi-method method user host
-                              tramp-actions-before-shell 60)
-        (tramp-open-connection-setup-interactive-shell
-         p multi-method method user host)
-        (tramp-post-connection multi-method method
-                               user host)))))
-
-;; HHH: Not Changed.  Multi method.  It is not clear to me how this can
-;;      handle not giving a user name in the "file name".
-;;
-;;      This is more difficult than for the single-hop method.  In the
-;;      multi-hop-method, the desired behaviour should be that the
-;;      user must specify names for the telnet hops of which the user
-;;      name is different than the "original" name (or different from
-;;      the previous hop.
-(defun tramp-open-connection-multi (multi-method method user host)
-  "Open a multi-hop connection using METHOD.
-This uses a slightly changed file name syntax.  The idea is to say
-    [multi/telnet:u1@h1/rsh:u2@h2]/path/to/file
-This will use telnet to log in as u1 to h1, then use rsh from there to
-log in as u2 to h2."
-  (save-match-data
-    (unless multi-method
-      (error "Multi-hop open connection function called on non-multi method"))
-    (when (tramp-method-out-of-band-p multi-method method user host)
-      (error "No out of band multi-hop connections"))
-    (unless (and (arrayp method) (not (stringp method)))
-      (error "METHOD must be an array of strings for multi methods"))
-    (unless (and (arrayp user) (not (stringp user)))
-      (error "USER must be an array of strings for multi methods"))
-    (unless (and (arrayp host) (not (stringp host)))
-      (error "HOST must be an array of strings for multi methods"))
-    (unless (and (= (length method) (length user))
-                 (= (length method) (length host)))
-      (error "Arrays METHOD, USER, HOST must have equal length"))
-    (tramp-pre-connection multi-method method user host tramp-chunksize)
-    (tramp-message 7 "Opening `%s' connection..." multi-method)
-    (let ((process-environment (copy-sequence process-environment)))
-      (setenv "TERM" tramp-terminal-type)
-      (setenv "PROMPT_COMMAND")
-      (setenv "PS1" "$ ")
-      (let* ((default-directory (tramp-temporary-file-directory))
-            ;; If we omit the conditional, we use `undecided-dos' in
-            ;; some cases.  With the conditional, we use nil in these
-            ;; cases.  What's the difference?  Which one is right?
-             (coding-system-for-read (unless (and (not (featurep 'xemacs))
-                                                  (> emacs-major-version 20))
-                                       tramp-dos-coding-system))
-             (p (start-process (tramp-buffer-name multi-method method user host)
-                               (tramp-get-buffer multi-method method user host)
-                               tramp-multi-sh-program))
-             (num-hops (length method))
-             (i 0))
-        (tramp-set-process-query-on-exit-flag p nil)
-        (tramp-message 9 "Waiting 60s for local shell to come up...")
-        (unless (tramp-wait-for-regexp
-                p 60 (format "\\(%s\\)\\'\\|\\(%s\\)\\'"
-                             shell-prompt-pattern tramp-shell-prompt-pattern))
-          (pop-to-buffer (buffer-name))
-          (kill-process p)
-          (error "Couldn't find local shell prompt"))
-        ;; Now do all the connections as specified.
-        (while (< i num-hops)
-          (let* ((m (aref method i))
-                 (u (aref user i))
-                 (h (aref host i))
-                 (entry (assoc m tramp-multi-connection-function-alist))
-                 (multi-func (nth 1 entry))
-                 (command (nth 2 entry)))
-           ;; The multi-funcs don't need to do save-match-data, as that
-            ;; is done here.
-            (funcall multi-func p m u h command)
-            (erase-buffer)
-            (setq i (1+ i))))
-        (tramp-open-connection-setup-interactive-shell
-         p multi-method method user host)
-        (tramp-post-connection multi-method method user host)))))
-
-;; HHH: Changed.  Multi method.  Don't know how to handle this in the case
-;;      of no user name provided.  Hack to make it work as it did before:
-;;      changed `user' to `(or user (user-login-name))' in the places where
-;;      the value is actually used.
-(defun tramp-multi-connect-telnet (p method user host command)
-  "Issue `telnet' command.
-Uses shell COMMAND to issue a `telnet' command to log in as USER to
-HOST.  You can use percent escapes in COMMAND: `%h' is replaced with
-the host name, and `%n' is replaced with an end of line character, as
-set in `tramp-rsh-end-of-line'.  Use `%%' if you want a literal percent
-character.
-
-If USER is nil, uses the return value of (user-login-name) instead."
-  (let ((cmd (format-spec command
-                         `((?h . ,host) (?n . ,tramp-rsh-end-of-line))))
-        (cmd1 (format-spec command `((?h . ,host) (?n . ""))))
-        found pw)
-    (erase-buffer)
-    (tramp-message 9 "Sending telnet command `%s'" cmd1)
-    (process-send-string p cmd)
-    (tramp-process-multi-actions p method user host
-                                tramp-multi-actions)))
-
-;; HHH: Changed.  Multi method.  Don't know how to handle this in the case
-;;      of no user name provided.  Hack to make it work as it did before:
-;;      changed `user' to `(or user (user-login-name))' in the places where
-;;      the value is actually used.
-(defun tramp-multi-connect-rlogin (p method user host command)
-  "Issue `rlogin' command.
-Uses shell COMMAND to issue an `rlogin' command to log in as USER to
-HOST.  You can use percent escapes in COMMAND.  `%u' will be replaced
-with the user name, `%h' will be replaced with the host name, and `%n'
-will be replaced with the value of `tramp-rsh-end-of-line'.  You can use
-`%%' if you want to use a literal percent character.
-
-If USER is nil, uses the return value of (user-login-name) instead."
-  (let ((cmd (format-spec command `((?h . ,host)
-                                   (?u . ,(or user (user-login-name)))
-                                   (?n . ,tramp-rsh-end-of-line))))
-        (cmd1 (format-spec command `((?h . ,host)
-                                    (?u . ,(or user (user-login-name)))
-                                    (?n . ""))))
-        found)
-    (erase-buffer)
-    (tramp-message 9 "Sending rlogin command `%s'" cmd1)
-    (process-send-string p cmd)
-    (tramp-process-multi-actions p method user host
-                                tramp-multi-actions)))
-
-;; HHH: Changed.  Multi method.  Don't know how to handle this in the case
-;;      of no user name provided.  Hack to make it work as it did before:
-;;      changed `user' to `(or user (user-login-name))' in the places where
-;;      the value is actually used.
-(defun tramp-multi-connect-su (p method user host command)
-  "Issue `su' command.
-Uses shell COMMAND to issue a `su' command to log in as USER on
-HOST.  The HOST name is ignored, this just changes the user id on the
-host currently logged in to.
-
-If USER is nil, uses the return value of (user-login-name) instead.
-
-You can use percent escapes in the COMMAND.  `%u' is replaced with the
-user name, and `%n' is replaced with the value of
-`tramp-rsh-end-of-line'.  Use `%%' if you want a literal percent
-character."
-  (let ((cmd (format-spec command `((?u . ,(or user (user-login-name)))
-                                   (?n . ,tramp-rsh-end-of-line))))
-        (cmd1 (format-spec command `((?u . ,(or user (user-login-name)))
-                                    (?n . ""))))
-        found)
-    (erase-buffer)
-    (tramp-message 9 "Sending su command `%s'" cmd1)
-    (process-send-string p cmd)
-    (tramp-process-multi-actions p method user host
-                                tramp-multi-actions)))
+      (tramp-clear-passwd)
+      (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.
 
-(defun tramp-accept-process-output
-  (&optional process timeout timeout-msecs)
+(defun tramp-accept-process-output (&optional proc timeout timeout-msecs)
   "Like `accept-process-output' for Tramp processes.
 This is needed in order to hide `last-coding-system-used', which is set
 for process communication also."
-  (let (last-coding-system-used)
-    (accept-process-output process timeout timeout-msecs)))
+  (with-current-buffer (process-buffer proc)
+    (tramp-message proc 10 "%s %s" proc (process-status proc))
+    (let (buffer-read-only last-coding-system-used)
+      ;; Under Windows XP, accept-process-output doesn't return
+      ;; sometimes.  So we add an additional timeout.
+      (with-timeout ((or timeout 1))
+       (accept-process-output proc timeout timeout-msecs)))
+    (tramp-message proc 10 "\n%s" (buffer-string))))
+
+(defun tramp-check-for-regexp (proc regexp)
+  "Check whether REGEXP is contained in process buffer of PROC.
+Erase echoed commands if exists."
+  (with-current-buffer (process-buffer proc)
+    (goto-char (point-min))
+    ;; Check whether we need to remove echo output.
+    (when (and (tramp-get-connection-property proc "check-remote-echo" nil)
+              (re-search-forward tramp-echoed-echo-mark-regexp nil t))
+      (let ((begin (match-beginning 0)))
+       (when (re-search-forward tramp-echoed-echo-mark-regexp nil t)
+         ;; Discard echo from remote output.
+         (tramp-set-connection-property proc "check-remote-echo" nil)
+         (tramp-message proc 5 "echo-mark found")
+         (forward-line)
+         (delete-region begin (point))
+         (goto-char (point-min)))))
+    ;; No echo to be handled, now we can look for the regexp.
+    (when (not (tramp-get-connection-property proc "check-remote-echo" nil))
+      (re-search-forward regexp nil t))))
 
 (defun tramp-wait-for-regexp (proc timeout regexp)
   "Wait for a REGEXP to appear from process PROC within TIMEOUT seconds.
 Expects the output of PROC to be sent to the current buffer.  Returns
 the string that matched, or nil.  Waits indefinitely if TIMEOUT is
 nil."
-  (let ((found nil)
-        (start-time (current-time)))
-    (cond (timeout
-           ;; Work around a bug in XEmacs 21, where the timeout
-           ;; expires faster than it should.  This degenerates
-           ;; to polling for buggy XEmacsen, but oh, well.
-           (while (and (not found)
-                       (< (tramp-time-diff (current-time) start-time)
-                          timeout))
-             (with-timeout (timeout)
-               (while (not found)
-                 (tramp-accept-process-output proc 1)
-                (unless (memq (process-status proc) '(run open))
-                  (error "Process has died"))
-                 (goto-char (point-min))
-                 (setq found (re-search-forward regexp nil t))))))
-          (t
-           (while (not found)
-             (tramp-accept-process-output proc 1)
-            (unless (memq (process-status proc) '(run open))
-              (error "Process has died"))
-             (goto-char (point-min))
-             (setq found (re-search-forward regexp nil t)))))
-    (when tramp-debug-buffer
-      (append-to-buffer
-       (tramp-get-debug-buffer tramp-current-multi-method tramp-current-method
-                             tramp-current-user tramp-current-host)
-       (point-min) (point-max))
+  (with-current-buffer (process-buffer proc)
+    (let ((found (tramp-check-for-regexp proc regexp))
+         (start-time (current-time)))
+      (cond (timeout
+            ;; Work around a bug in XEmacs 21, where the timeout
+            ;; expires faster than it should.  This degenerates
+            ;; to polling for buggy XEmacsen, but oh, well.
+            (while (and (not found)
+                        (< (tramp-time-diff (current-time) start-time)
+                           timeout))
+              (with-timeout (timeout)
+                (while (not found)
+                  (tramp-accept-process-output proc 1)
+                  (unless (memq (process-status proc) '(run open))
+                    (tramp-error-with-buffer
+                     nil proc 'file-error "Process has died"))
+                  (setq found (tramp-check-for-regexp proc regexp))))))
+           (t
+            (while (not found)
+              (tramp-accept-process-output proc 1)
+              (unless (memq (process-status proc) '(run open))
+                (tramp-error-with-buffer
+                 nil proc 'file-error "Process has died"))
+              (setq found (tramp-check-for-regexp proc regexp)))))
+      (tramp-message proc 6 "\n%s" (buffer-string))
       (when (not found)
-        (save-excursion
-          (set-buffer
-           (tramp-get-debug-buffer tramp-current-multi-method tramp-current-method
-                             tramp-current-user tramp-current-host))
-          (goto-char (point-max))
-          (insert "[[Regexp `" regexp "' not found"
-                  (if timeout (format " in %d secs" timeout) "")
-                  "]]"))))
-    found))
+       (if timeout
+           (tramp-error
+            proc 'file-error "[[Regexp `%s' not found in %d secs]]"
+            regexp timeout)
+         (tramp-error proc 'file-error "[[Regexp `%s' not found]]" regexp)))
+      found)))
 
 (defun tramp-wait-for-shell-prompt (proc timeout)
   "Wait for the shell prompt to appear from process PROC within TIMEOUT seconds.
@@ -6097,51 +5637,23 @@ and `tramp-shell-prompt-pattern'."
 Looks at process PROC to see if a shell prompt appears in TIMEOUT
 seconds.  If not, it produces an error message with the given ERROR-ARGS."
   (unless (tramp-wait-for-shell-prompt proc timeout)
-    (pop-to-buffer (buffer-name))
-    (apply 'error error-args)))
-
-(defun tramp-enter-password (p prompt user host)
-  "Prompt for a password and send it to the remote end.
-Uses PROMPT as a prompt and sends the password to process P."
-  (let ((pw (tramp-read-passwd user host prompt)))
-    (erase-buffer)
-    (process-send-string
-     p (concat pw
-              (or (tramp-get-method-parameter
-                   tramp-current-multi-method
-                   tramp-current-method
-                   tramp-current-user
-                   tramp-current-host
-                   'tramp-password-end-of-line)
-                  tramp-default-password-end-of-line)))))
-
-;; HHH: Not Changed.  This might handle the case where USER is not
-;;      given in the "File name" very poorly.  Then, the local
-;;      variable tramp-current-user will be set to nil.
-(defun tramp-pre-connection (multi-method method user host chunksize)
-  "Do some setup before actually logging in.
-METHOD, USER and HOST specify the connection."
-  (set-buffer (tramp-get-buffer multi-method method user host))
-  (set (make-local-variable 'tramp-current-multi-method) multi-method)
-  (set (make-local-variable 'tramp-current-method) method)
-  (set (make-local-variable 'tramp-current-user)   user)
-  (set (make-local-variable 'tramp-current-host)   host)
-  (set (make-local-variable 'tramp-chunksize)      chunksize)
-  (set (make-local-variable 'inhibit-eol-conversion) nil)
-  (erase-buffer))
-
-(defun tramp-open-connection-setup-interactive-shell
-  (p multi-method method user host)
+    (apply 'tramp-error-with-buffer nil proc 'file-error error-args)))
+
+;; We don't call `tramp-send-string' in order to hide the password from the
+;; debug buffer, and because end-of-line handling of the string.
+(defun tramp-enter-password (p)
+  "Prompt for a password and send it to the remote end."
+  (process-send-string
+   p (concat (tramp-read-passwd p)
+            (or (tramp-get-method-parameter
+                 tramp-current-method
+                 'tramp-password-end-of-line)
+                tramp-default-password-end-of-line))))
+
+(defun tramp-open-connection-setup-interactive-shell (proc vec)
   "Set up an interactive shell.
-Mainly sets the prompt and the echo correctly.  P is the shell process
-to set up.  METHOD, USER and HOST specify the connection."
-  ;; Wait a bit in case the remote end feels like sending a little
-  ;; junk first.  It seems that fencepost.gnu.org does this when doing
-  ;; a Kerberos login.
-  (sit-for 1)
-  (tramp-discard-garbage-erase-buffer p multi-method method user host)
-  (tramp-process-initial-commands p multi-method method user host
-                                 tramp-initial-commands)
+Mainly sets the prompt and the echo correctly.  PROC is the shell
+process to set up.  VEC specifies the connection."
   ;; It is useful to set the prompt in the following command because
   ;; some people have a setting for $PS1 which /bin/sh doesn't know
   ;; about and thus /bin/sh will display a strange prompt.  For
@@ -6156,116 +5668,83 @@ to set up.  METHOD, USER and HOST specify the connection."
   ;; clobbering $PS1.  $PROMP_COMMAND is another way to set the prompt
   ;; in /bin/bash, it must be discarded as well.
   (tramp-send-command-internal
-   multi-method method user host
+   vec
    (format "exec env 'ENV=' 'PROMPT_COMMAND=' 'PS1=$ ' %s"
           (tramp-get-method-parameter
-           multi-method method user host 'tramp-remote-sh))
-   (format "remote `%s' to come up"
-          (tramp-get-method-parameter
-           multi-method method user host 'tramp-remote-sh)))
-  (tramp-barf-if-no-shell-prompt
-   p 30
-   "Remote `%s' didn't come up.  See buffer `%s' for details"
-   (tramp-get-method-parameter multi-method method user host 'tramp-remote-sh)
-   (buffer-name))
-  (tramp-message 8 "Setting up remote shell environment")
-  (tramp-discard-garbage-erase-buffer p multi-method method user host)
-  (tramp-send-command-internal multi-method method user host
-                              "stty -inlcr -echo kill '^U'")
-  (erase-buffer)
-  ;; Ignore garbage after stty command.
-  (tramp-send-command-internal multi-method method user host
-                              "echo foo")
-  (erase-buffer)
-  (tramp-send-command-internal multi-method method user host
-                              "TERM=dumb; export TERM")
-  (erase-buffer)
-  ;; Check whether the remote host suffers from buggy `send-process-string'.
-  ;; This is known for FreeBSD (see comment in `send_process', file process.c).
-  ;; I've tested sending 624 bytes successfully, sending 625 bytes failed.
-  ;; Emacs makes a hack when this host type is detected locally.  It cannot
-  ;; handle remote hosts, though.
-  (when (or (not tramp-chunksize) (zerop tramp-chunksize))
-    (tramp-message 9 "Checking remote host type for `send-process-string' bug")
-    (tramp-send-command-internal multi-method method user host
-                                "(uname -sr) 2>/dev/null")
+           (tramp-file-name-method vec) 'tramp-remote-sh)))
+  (tramp-message vec 5 "Setting up remote shell environment")
+  (tramp-send-command-internal vec "stty -inlcr -echo kill '^U' erase '^H'")
+  ;; Check whether the echo has really been disabled.  Some
+  ;; implementations, like busybox of embedded GNU/Linux, don't
+  ;; support disabling.
+  (tramp-send-command-internal vec "echo foo")
+  (with-current-buffer (process-buffer proc)
     (goto-char (point-min))
-    (when (looking-at "FreeBSD")
-      (setq tramp-chunksize 500)))
-
+    (when (looking-at "echo foo")
+      (tramp-set-connection-property vec "remote-echo" t)
+      (tramp-message vec 5 "Remote echo still on. Ok.")
+      ;; Make sure backspaces and their echo are enabled and no line
+      ;; width magic interferes with them.
+      (tramp-send-command-internal vec "stty icanon erase ^H cols 32767")))
   ;; Try to set up the coding system correctly.
   ;; CCC this can't be the right way to do it.  Hm.
-  (save-excursion
-    (erase-buffer)
-    (tramp-message 9 "Determining coding system")
-    (tramp-send-command-internal multi-method method user host
-                                "echo foo ; echo bar")
+  (tramp-message vec 5 "Determining coding system")
+  (tramp-send-command-internal vec "echo foo ; echo bar")
+  (with-current-buffer (process-buffer proc)
     (goto-char (point-min))
     (if (featurep 'mule)
-        ;; Use MULE to select the right EOL convention for communicating
-        ;; with the process.
-        (let* ((cs (or (process-coding-system p) (cons 'undecided 'undecided)))
-               cs-decode cs-encode)
-          (when (symbolp cs) (setq cs (cons cs cs)))
-          (setq cs-decode (car cs))
-          (setq cs-encode (cdr cs))
-          (unless cs-decode (setq cs-decode 'undecided))
-          (unless cs-encode (setq cs-encode 'undecided))
-          (setq cs-encode (tramp-coding-system-change-eol-conversion
-                           cs-encode 'unix))
-          (when (search-forward "\r" nil t)
-            (setq cs-decode (tramp-coding-system-change-eol-conversion
-                             cs-decode 'dos)))
-          (set-buffer-process-coding-system cs-decode cs-encode))
+       ;; Use MULE to select the right EOL convention for communicating
+       ;; with the process.
+       (let* ((cs (or (funcall (symbol-function 'process-coding-system) proc)
+                      (cons 'undecided 'undecided)))
+              cs-decode cs-encode)
+         (when (symbolp cs) (setq cs (cons cs cs)))
+         (setq cs-decode (car cs))
+         (setq cs-encode (cdr cs))
+         (unless cs-decode (setq cs-decode 'undecided))
+         (unless cs-encode (setq cs-encode 'undecided))
+         (setq cs-encode (tramp-coding-system-change-eol-conversion
+                          cs-encode 'unix))
+         (when (search-forward "\r" nil t)
+           (setq cs-decode (tramp-coding-system-change-eol-conversion
+                            cs-decode 'dos)))
+         (funcall (symbol-function 'set-buffer-process-coding-system)
+                  cs-decode cs-encode))
       ;; Look for ^M and do something useful if found.
       (when (search-forward "\r" nil t)
-        ;; We have found a ^M but cannot frob the process coding system
-        ;; because we're running on a non-MULE Emacs.  Let's try
-        ;; stty, instead.
-       (erase-buffer)
-        (tramp-message 9 "Trying `stty -onlcr'")
-       (tramp-send-command-internal multi-method method user host
-                                    "stty -onlcr"))))
-  (erase-buffer)
-  (tramp-message
-   9 "Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1; export HISTFILE; export HISTSIZE'")
-  (tramp-send-command-internal
-   multi-method method user host
-   "HISTFILE=$HOME/.tramp_history; HISTSIZE=1; export HISTFILE; export HISTSIZE")
-  (erase-buffer)
-  (tramp-message 9 "Waiting 30s for `set +o vi +o emacs'")
-  (tramp-send-command-internal multi-method method user host
-                              "set +o vi +o emacs")
-  (erase-buffer)
-  (tramp-message 9 "Waiting 30s for `unset MAIL MAILCHECK MAILPATH'")
-  (tramp-send-command-internal
-   multi-method method user host
-   "unset MAIL MAILCHECK MAILPATH 1>/dev/null 2>/dev/null")
-  (erase-buffer)
-  (tramp-message 9 "Waiting 30s for `unset CDPATH'")
-  (tramp-send-command-internal multi-method method user host
-                              "unset CDPATH")
-  (erase-buffer)
-  (tramp-message 9 "Setting shell prompt")
+       ;; We have found a ^M but cannot frob the process coding system
+       ;; because we're running on a non-MULE Emacs.  Let's try
+       ;; stty, instead.
+       (tramp-send-command-internal vec "stty -onlcr"))))
+  (tramp-send-command-internal vec "set +o vi +o emacs")
+  (tramp-message vec 5 "Setting shell prompt")
   ;; Douglas Gray Stephens <DGrayStephens@slb.com> says that we must
-  ;; use "\n" here, not tramp-rsh-end-of-line.  We also manually frob
-  ;; the last time we sent a command, to avoid tramp-send-command to send
-  ;; "echo are you awake".
-  (setq tramp-last-cmd-time (current-time))
+  ;; use "\n" here, not tramp-rsh-end-of-line.
   (tramp-send-command
-   multi-method method user host
+   vec
    (format "PROMPT_COMMAND=''; PS1='%s%s%s'; PS2=''; PS3=''"
           tramp-rsh-end-of-line
            tramp-end-of-output
           tramp-rsh-end-of-line))
-  (tramp-wait-for-output))
-
-(defun tramp-post-connection (multi-method method user host)
-  "Prepare a remote shell before being able to work on it.
-METHOD, USER and HOST specify the connection.
-Among other things, this finds a shell which groks tilde expansion,
-tries to find an `ls' command which groks the `-n' option, sets the
-locale to C and sets up the remote shell search path."
+  ;; Check whether the remote host suffers from buggy `send-process-string'.
+  ;; This is known for FreeBSD (see comment in `send_process', file process.c).
+  ;; I've tested sending 624 bytes successfully, sending 625 bytes failed.
+  ;; Emacs makes a hack when this host type is detected locally.  It cannot
+  ;; handle remote hosts, though.
+  (with-connection-property proc "chunksize"
+    (cond
+     ((and (integerp tramp-chunksize) (> tramp-chunksize 0))
+      tramp-chunksize)
+     (t
+      (tramp-message
+       vec 5 "Checking remote host type for `send-process-string' bug")
+      (if (string-match
+          "^FreeBSD"
+          (with-connection-property vec "uname"
+            (tramp-send-command-and-read vec "echo \\\"`uname -sr`\\\"")))
+         500 0))))
+  ;; Set remote PATH variable.
+  (tramp-set-remote-path vec)
   ;; Search for a good shell before searching for a command which
   ;; checks if a file exists. This is done because Tramp wants to use
   ;; "test foo; echo $?" to check if various conditions hold, and
@@ -6274,168 +5753,23 @@ locale to C and sets up the remote shell search path."
   ;; the Solaris /bin/sh is a problem.  I'm betting that all systems
   ;; with buggy /bin/sh implementations will have a working bash or
   ;; ksh.  Whee...
-  (tramp-find-shell multi-method method user host)
-  ;; Without (sit-for 0.1) at least, my machine will almost always blow
-  ;; up on 'not numberp /root' - a race that causes the 'echo ~root'
-  ;; output of (tramp-find-shell) to show up along with the output of
-  ;; (tramp-find-ls-command) testing.
-  ;;
-  ;; I can't work out why this is a problem though. The (tramp-wait-for-output)
-  ;; call in (tramp-find-shell) *should* make this not happen, I thought.
-  ;;
-  ;; After much debugging I couldn't find any problem with the implementation
-  ;; of that function though. The workaround stays for me at least. :/
-  ;;
-  ;; Daniel Pittman <daniel@danann.net>
-  (sleep-for 1)
-  (erase-buffer)
-  (tramp-find-file-exists-command multi-method method user host)
-  (make-local-variable 'tramp-ls-command)
-  (setq tramp-ls-command (tramp-find-ls-command multi-method method user host))
-  (unless tramp-ls-command
-    (tramp-message
-     1
-     "Danger!  Couldn't find ls which groks -n.  Muddling through anyway")
-    (setq tramp-ls-command
-          (tramp-find-executable multi-method method user host
-                               "ls" tramp-remote-path nil)))
-  (unless tramp-ls-command
-    (error "Fatal error: Couldn't find remote executable `ls'"))
-  (tramp-message 5 "Using remote command `%s' for getting directory listings"
-               tramp-ls-command)
-  (tramp-send-command multi-method method user host
-                    (concat "tramp_set_exit_status () {" tramp-rsh-end-of-line
-                            "return $1" tramp-rsh-end-of-line
-                            "}"))
-  (tramp-wait-for-output)
-  ;; Set remote PATH variable.
-  (tramp-set-remote-path multi-method method user host "PATH" tramp-remote-path)
-  ;; Tell remote shell to use standard time format, needed for
-  ;; parsing `ls -l' output.
-  (tramp-send-command multi-method method user host
-                    "LC_TIME=C; export LC_TIME; echo huhu")
-  (tramp-wait-for-output)
-  (tramp-send-command multi-method method user host
-                    "mesg n; echo huhu")
-  (tramp-wait-for-output)
-  (tramp-send-command multi-method method user host
-                    "biff n ; echo huhu")
-  (tramp-wait-for-output)
-  ;; Unalias ls(1) to work around issues with those silly people who make it
-  ;; spit out ANSI escapes or whatever.
-  (tramp-send-command multi-method method user host
-                    "unalias ls; echo huhu")
-  (tramp-wait-for-output)
-  ;; Does `test A -nt B' work?  Use abominable `find' construct if it
-  ;; doesn't.  BSD/OS 4.0 wants the parentheses around the command,
-  ;; for otherwise the shell crashes.
-  (erase-buffer)
-  (make-local-variable 'tramp-test-groks-nt)
-  (tramp-send-command multi-method method user host
-                    "( test / -nt / )")
-  (tramp-wait-for-output)
-  (goto-char (point-min))
-  (setq tramp-test-groks-nt
-        (looking-at (format "\n%s\r?\n" (regexp-quote tramp-end-of-output))))
-  (unless tramp-test-groks-nt
-    (tramp-send-command
-     multi-method method user host
-     (concat "tramp_test_nt () {" tramp-rsh-end-of-line
-             "test -n \"`find $1 -prune -newer $2 -print`\"" tramp-rsh-end-of-line
-             "}")))
-  (tramp-wait-for-output)
-  ;; Send the fallback `uudecode' script.
-  (erase-buffer)
-  (tramp-send-string multi-method method user host tramp-uudecode)
-  (tramp-wait-for-output)
-  ;; Find a `perl'.
-  (erase-buffer)
-  (tramp-set-connection-property "perl-scripts" nil multi-method method user host)
-  (let ((tramp-remote-perl
-        (or (tramp-find-executable multi-method method user host
-                                   "perl5" tramp-remote-path nil)
-            (tramp-find-executable multi-method method user host
-                                   "perl" tramp-remote-path nil))))
-    (when tramp-remote-perl
-      (tramp-set-connection-property "perl" tramp-remote-perl
-                                    multi-method method user host)
-      (unless (tramp-method-out-of-band-p multi-method method user host)
-        (tramp-message 5 "Sending the Perl `mime-encode' implementations.")
-        (tramp-send-string
-         multi-method method user host
-         (concat "tramp_encode () {\n"
-                 (format tramp-perl-encode tramp-remote-perl)
-                 " 2>/dev/null"
-                 "\n}"))
-        (tramp-wait-for-output)
-        (tramp-send-string
-         multi-method method user host
-         (concat "tramp_encode_with_module () {\n"
-                 (format tramp-perl-encode-with-module tramp-remote-perl)
-                 " 2>/dev/null"
-                 "\n}"))
-        (tramp-wait-for-output)
-        (tramp-message 5 "Sending the Perl `mime-decode' implementations.")
-        (tramp-send-string
-         multi-method method user host
-         (concat "tramp_decode () {\n"
-                 (format tramp-perl-decode tramp-remote-perl)
-                 " 2>/dev/null"
-                 "\n}"))
-        (tramp-wait-for-output)
-        (tramp-send-string
-         multi-method method user host
-         (concat "tramp_decode_with_module () {\n"
-                 (format tramp-perl-decode-with-module tramp-remote-perl)
-                 " 2>/dev/null"
-                 "\n}"))
-        (tramp-wait-for-output))))
-  ;; Find ln(1)
-  (erase-buffer)
-  (let ((ln (tramp-find-executable multi-method method user host
-                                  "ln" tramp-remote-path nil)))
-    (when ln
-      (tramp-set-connection-property "ln" ln multi-method method user host)))
-  ;; Set uid and gid.
-  (erase-buffer)
-  (tramp-send-command multi-method method user host "id -u; id -g")
-  (tramp-wait-for-output)
-  (goto-char (point-min))
-  (tramp-set-connection-property
-   "uid" (read (current-buffer)) multi-method method user host)
-  (tramp-set-connection-property
-   "gid" (read (current-buffer)) multi-method method user host)
-  ;; Find the right encoding/decoding commands to use.
-  (erase-buffer)
-  (unless (tramp-method-out-of-band-p multi-method method user host)
-    (tramp-find-inline-encoding multi-method method user host))
-  ;; If encoding/decoding command are given, test to see if they work.
-  ;; CCC: Maybe it would be useful to run the encoder both locally and
-  ;; remotely to see if they produce the same result.
-  (let ((rem-enc (tramp-get-remote-encoding multi-method method user host))
-       (rem-dec (tramp-get-remote-decoding multi-method method user host))
-       (magic-string "xyzzy"))
-    (when (and (or rem-dec rem-enc) (not (and rem-dec rem-enc)))
-      (tramp-kill-process multi-method method user host)
-      ;; Improve error message and/or error check.
-      (error
-       "Must give both decoding and encoding command in method definition"))
-    (when (and rem-enc rem-dec)
-      (tramp-message
-       5
-       "Checking to see if encoding/decoding commands work on remote host...")
+  (tramp-find-shell vec)
+  ;; Disable unexpected output.
+  (tramp-send-command vec "mesg n; biff n")
+  ;; Set the environment.
+  (tramp-message vec 5 "Setting default environment")
+  (let ((env (copy-sequence tramp-remote-process-environment))
+       unset item)
+    (while env
+      (setq item (split-string (car env) "="))
+      (if (and (stringp (cadr item)) (not (string-equal (cadr item) "")))
+         (tramp-send-command
+          vec (format "%s=%s; export %s" (car item) (cadr item) (car item)))
+       (push (car item) unset))
+      (setq env (cdr env)))
+    (when unset
       (tramp-send-command
-       multi-method method user host
-       (format "echo %s | %s | %s"
-              (tramp-shell-quote-argument magic-string) rem-enc rem-dec))
-      (tramp-wait-for-output)
-      (unless (looking-at (regexp-quote magic-string))
-       (tramp-kill-process multi-method method user host)
-       (error "Remote host cannot execute de/encoding commands.  See buffer `%s' for details"
-              (buffer-name)))
-      (erase-buffer)
-      (tramp-message
-       5 "Checking to see if encoding/decoding commands work on remote host...done"))))
+       vec (format "unset %s" (mapconcat 'identity unset " "))))))
 
 ;; CCC: We should either implement a Perl version of base64 encoding
 ;; and decoding.  Then we just use that in the last item.  The other
@@ -6455,38 +5789,22 @@ locale to C and sets up the remote shell search path."
 ;;
 ;; For Irix, no solution is known yet.
 
-(defvar tramp-coding-commands
-  '(("mimencode -b" "mimencode -u -b"
-     base64-encode-region base64-decode-region)
-    ("mmencode -b" "mmencode -u -b"
-     base64-encode-region base64-decode-region)
-    ("recode data..base64" "recode base64..data"
-     base64-encode-region base64-decode-region)
-    ("uuencode xxx" "uudecode -o /dev/stdout"
-     tramp-uuencode-region uudecode-decode-region)
-    ("uuencode xxx" "uudecode -o -"
-     tramp-uuencode-region uudecode-decode-region)
-    ("uuencode xxx" "uudecode -p"
-     tramp-uuencode-region uudecode-decode-region)
-    ("uuencode xxx" "tramp_uudecode"
-     tramp-uuencode-region uudecode-decode-region)
-    ("tramp_encode_with_module" "tramp_decode_with_module"
-     base64-encode-region base64-decode-region)
-    ("tramp_encode" "tramp_decode"
-     base64-encode-region base64-decode-region))
-  "List of coding commands for inline transfer.
+(defconst tramp-local-coding-commands
+  '((b64 base64-encode-region base64-decode-region)
+    (uu  tramp-uuencode-region uudecode-decode-region)
+    (pack
+     "perl -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'"
+     "perl -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'"))
+  "List of local coding commands for inline transfer.
 Each item is a list that looks like this:
 
-\(REMOTE-ENCODING REMOTE-DECODING LOCAL-ENCODING LOCAL-DECODING)
+\(FORMAT ENCODING DECODING)
 
-The REMOTE-ENCODING should be a string, giving a command accepting a
-plain file on standard input and writing the encoded file to standard
-output.  The REMOTE-DECODING should also be a string, giving a command
-accepting an encoded file on standard input and writing the decoded
-file to standard output.
+FORMAT is  symbol describing the encoding/decoding format.  It can be
+`b64' for base64 encoding, `uu' for uu encoding, or `pack' for simple packing.
 
-LOCAL-ENCODING and LOCAL-DECODING can be strings, giving commands, or
-symbols, giving functions.  If they are strings, then they can contain
+ENCODING and DECODING can be strings, giving commands, or symbols,
+giving functions.  If they are strings, then they can contain
 the \"%s\" format specifier.  If that specifier is present, the input
 filename will be put into the command line at that spot.  If the
 specifier is not present, the input should be read from standard
@@ -6496,83 +5814,139 @@ If they are functions, they will be called with two arguments, start
 and end of region, and are expected to replace the region contents
 with the encoded or decoded results, respectively.")
 
-(defun tramp-find-inline-encoding (multi-method method user host)
+(defconst tramp-remote-coding-commands
+  '((b64 "mimencode -b" "mimencode -u -b")
+    (b64 "mmencode -b" "mmencode -u -b")
+    (b64 "recode data..base64" "recode base64..data")
+    (b64 tramp-perl-encode-with-module tramp-perl-decode-with-module)
+    (b64 tramp-perl-encode tramp-perl-decode)
+    (uu  "uuencode xxx" "uudecode -o /dev/stdout")
+    (uu  "uuencode xxx" "uudecode -o -")
+    (uu  "uuencode xxx" "uudecode -p")
+    (uu  "uuencode xxx" tramp-uudecode)
+    (pack
+     "perl -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'"
+     "perl -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'"))
+  "List of remote coding commands for inline transfer.
+Each item is a list that looks like this:
+
+\(FORMAT ENCODING DECODING)
+
+FORMAT is  symbol describing the encoding/decoding format.  It can be
+`b64' for base64 encoding, `uu' for uu encoding, or `pack' for simple packing.
+
+ENCODING and DECODING can be strings, giving commands, or symbols,
+giving variables.  If they are strings, then they can contain
+the \"%s\" format specifier.  If that specifier is present, the input
+filename will be put into the command line at that spot.  If the
+specifier is not present, the input should be read from standard
+input.
+
+If they are variables, this variable is a string containing a Perl
+implementation for this functionality.  This Perl program will be transferred
+to the remote host, and it is avalible as shell function with the same name.")
+
+(defun tramp-find-inline-encoding (vec)
   "Find an inline transfer encoding that works.
-Goes through the list `tramp-coding-commands'."
-  (let ((commands tramp-coding-commands)
-       (magic "xyzzy")
-       item found)
-    (while (and commands (null found))
-      (setq item (pop commands))
-      (catch 'wont-work
-       (let ((rem-enc (nth 0 item))
-             (rem-dec (nth 1 item))
-             (loc-enc (nth 2 item))
-             (loc-dec (nth 3 item)))
-         ;; Check if remote encoding and decoding commands can be
-         ;; called remotely with null input and output.  This makes
-         ;; sure there are no syntax errors and the command is really
-         ;; found.  Note that we do not redirect stdout to /dev/null,
-         ;; for two reaons: when checking the decoding command, we
-         ;; actually check the output it gives.  And also, when
-         ;; redirecting "mimencode" output to /dev/null, then as root
-         ;; it might change the permissions of /dev/null!
-         (tramp-message-for-buffer
-          multi-method method user host 9
-          "Checking remote encoding command `%s' for sanity" rem-enc)
-         (unless (zerop (tramp-send-command-and-check
-                         multi-method method user host
-                         (format "%s </dev/null" rem-enc) t))
-           (throw 'wont-work nil))
-         (tramp-message-for-buffer
-          multi-method method user host 9
-          "Checking remote decoding command `%s' for sanity" rem-dec)
-         (unless (zerop (tramp-send-command-and-check
-                         multi-method method user host
-                         (format "echo %s | %s | %s"
-                                 magic rem-enc rem-dec) t))
-           (throw 'wont-work nil))
-         (save-excursion
-           (goto-char (point-min))
-           (unless (looking-at (regexp-quote magic))
-             (throw 'wont-work nil)))
-         ;; If the local encoder or decoder is a string, the
-         ;; corresponding command has to work locally.
-         (when (stringp loc-enc)
-           (tramp-message-for-buffer
-            multi-method method user host 9
-            "Checking local encoding command `%s' for sanity" loc-enc)
-           (unless (zerop (tramp-call-local-coding-command
-                           loc-enc nil nil))
-             (throw 'wont-work nil)))
-         (when (stringp loc-dec)
-           (tramp-message-for-buffer
-            multi-method method user host 9
-            "Checking local decoding command `%s' for sanity" loc-dec)
-           (unless (zerop (tramp-call-local-coding-command
-                           loc-dec nil nil))
-             (throw 'wont-work nil)))
-         ;; CCC: At this point, maybe we should check that the output
-         ;; of the commands is correct.  But for the moment we will
-         ;; assume that commands working on empty input will also
-         ;; work in practice.
-         (setq found item))))
-    ;; Did we find something?  If not, issue error.  If so,
-    ;; set connection properties.
-    (unless found
-      (error "Couldn't find an inline transfer encoding"))
-    (let ((rem-enc (nth 0 found))
-         (rem-dec (nth 1 found))
-         (loc-enc (nth 2 found))
-         (loc-dec (nth 3 found)))
-      (tramp-message 10 "Using remote encoding %s" rem-enc)
-      (tramp-set-remote-encoding multi-method method user host rem-enc)
-      (tramp-message 10 "Using remote decoding %s" rem-dec)
-      (tramp-set-remote-decoding multi-method method user host rem-dec)
-      (tramp-message 10 "Using local encoding %s" loc-enc)
-      (tramp-set-local-encoding multi-method method user host loc-enc)
-      (tramp-message 10 "Using local decoding %s" loc-dec)
-      (tramp-set-local-decoding multi-method method user host loc-dec))))
+Goes through the list `tramp-local-coding-commands' and
+`tramp-remote-coding-commands'."
+  (save-excursion
+    (let ((local-commands tramp-local-coding-commands)
+         (magic "xyzzy")
+         loc-enc loc-dec rem-enc rem-dec litem ritem found)
+      (while (and local-commands (not found))
+       (setq litem (pop local-commands))
+       (catch 'wont-work-local
+         (let ((format (nth 0 litem))
+               (remote-commands tramp-remote-coding-commands))
+           (setq loc-enc (nth 1 litem))
+           (setq loc-dec (nth 2 litem))
+           ;; If the local encoder or decoder is a string, the
+           ;; corresponding command has to work locally.
+           (if (not (stringp loc-enc))
+               (tramp-message
+                vec 5 "Checking local encoding function `%s'" loc-enc)
+             (tramp-message
+              vec 5 "Checking local encoding command `%s' for sanity" loc-enc)
+             (unless (zerop (tramp-call-local-coding-command
+                             loc-enc nil nil))
+               (throw 'wont-work-local nil)))
+           (if (not (stringp loc-dec))
+               (tramp-message
+                vec 5 "Checking local decoding function `%s'" loc-dec)
+             (tramp-message
+              vec 5 "Checking local decoding command `%s' for sanity" loc-dec)
+             (unless (zerop (tramp-call-local-coding-command
+                             loc-dec nil nil))
+               (throw 'wont-work-local nil)))
+           ;; Search for remote coding commands with the same format
+           (while (and remote-commands (not found))
+             (setq ritem (pop remote-commands))
+             (catch 'wont-work-remote
+               (when (equal format (nth 0 ritem))
+                 (setq rem-enc (nth 1 ritem))
+                 (setq rem-dec (nth 2 ritem))
+                 ;; Check if remote encoding and decoding commands can be
+                 ;; called remotely with null input and output.  This makes
+                 ;; sure there are no syntax errors and the command is really
+                 ;; found.  Note that we do not redirect stdout to /dev/null,
+                 ;; for two reasons: when checking the decoding command, we
+                 ;; actually check the output it gives.  And also, when
+                 ;; redirecting "mimencode" output to /dev/null, then as root
+                 ;; it might change the permissions of /dev/null!
+                 (when (not (stringp rem-enc))
+                   (let ((name (symbol-name rem-enc)))
+                     (while (string-match (regexp-quote "-") name)
+                       (setq name (replace-match "_" nil t name)))
+                     (tramp-maybe-send-script vec (symbol-value rem-enc) name)
+                     (setq rem-enc name)))
+                 (tramp-message
+                  vec 5
+                  "Checking remote encoding command `%s' for sanity" rem-enc)
+                 (unless (zerop (tramp-send-command-and-check
+                                 vec (format "%s </dev/null" rem-enc) t))
+                   (throw 'wont-work-remote nil))
+
+                 (when (not (stringp rem-dec))
+                   (let ((name (symbol-name rem-dec)))
+                     (while (string-match (regexp-quote "-") name)
+                       (setq name (replace-match "_" nil t name)))
+                     (tramp-maybe-send-script vec (symbol-value rem-dec) name)
+                     (setq rem-dec name)))
+                 (tramp-message
+                  vec 5
+                  "Checking remote decoding command `%s' for sanity" rem-dec)
+                 (unless (zerop (tramp-send-command-and-check
+                                 vec
+                                 (format "echo %s | %s | %s"
+                                         magic rem-enc rem-dec) t))
+                   (throw 'wont-work-remote nil))
+
+                 (with-current-buffer (tramp-get-buffer vec)
+                   (goto-char (point-min))
+                   (unless (looking-at (regexp-quote magic))
+                     (throw 'wont-work-remote nil)))
+
+                 ;; `rem-enc' and `rem-dec' could be a string meanwhile.
+                 (setq rem-enc (nth 1 ritem))
+                 (setq rem-dec (nth 2 ritem))
+                 (setq found t)))))))
+
+      ;; Did we find something?  If not, issue an error.
+      (unless found
+       (kill-process (tramp-get-connection-process vec))
+       (tramp-error
+        vec 'file-error "Couldn't find an inline transfer encoding"))
+
+      ;; Set connection properties.
+      (tramp-message vec 5 "Using local encoding `%s'" loc-enc)
+      (tramp-set-connection-property vec "local-encoding" loc-enc)
+      (tramp-message vec 5 "Using local decoding `%s'" loc-dec)
+      (tramp-set-connection-property vec "local-decoding" loc-dec)
+      (tramp-message vec 5 "Using remote encoding `%s'" rem-enc)
+      (tramp-set-connection-property vec "remote-encoding" rem-enc)
+      (tramp-message vec 5 "Using remote decoding `%s'" rem-dec)
+      (tramp-set-connection-property vec "remote-decoding" rem-dec))))
 
 (defun tramp-call-local-coding-command (cmd input output)
   "Call the local encoding or decoding command.
@@ -6582,25 +5956,116 @@ INPUT can also be nil which means `/dev/null'.
 OUTPUT can be a string (which specifies a filename), or t (which
 means standard output and thus the current buffer), or nil (which
 means discard it)."
-  (call-process
-   tramp-encoding-shell                        ;program
-   (when (and input (not (string-match "%s" cmd)))
-     input)                            ;input
-   (if (eq output t) t nil)            ;output
-   nil                                 ;redisplay
-   tramp-encoding-command-switch
-   ;; actual shell command
-   (concat
-    (if (string-match "%s" cmd) (format cmd input) cmd)
-    (if (stringp output) (concat "> " output) ""))))
-
-(defun tramp-maybe-open-connection (multi-method method user host)
-  "Maybe open a connection to HOST, logging in as USER, using METHOD.
+  (let ((default-directory (tramp-compat-temporary-file-directory)))
+    (call-process
+     tramp-encoding-shell              ;program
+     (when (and input (not (string-match "%s" cmd)))
+       input)                          ;input
+     (if (eq output t) t nil)          ;output
+     nil                               ;redisplay
+     tramp-encoding-command-switch
+     ;; actual shell command
+     (concat
+      (if (string-match "%s" cmd) (format cmd input) cmd)
+      (if (stringp output) (concat "> " output) "")))))
+
+(defun tramp-compute-multi-hops (vec)
+  "Expands VEC according to `tramp-default-proxies-alist'.
+Gateway hops are already opened."
+  (let ((target-alist `(,vec))
+       (choices tramp-default-proxies-alist)
+       item proxy)
+
+    ;; Look for proxy hosts to be passed.
+    (while choices
+      (setq item (pop choices)
+           proxy (nth 2 item))
+      (when (and
+            ;; host
+            (string-match (or (nth 0 item) "")
+                          (or (tramp-file-name-host (car target-alist)) ""))
+            ;; user
+            (string-match (or (nth 1 item) "")
+                          (or (tramp-file-name-user (car target-alist)) "")))
+       (if (null proxy)
+           ;; No more hops needed.
+           (setq choices nil)
+         ;; Replace placeholders.
+         (setq proxy
+               (format-spec
+                proxy
+                `((?u . ,(or (tramp-file-name-user (car target-alist)) ""))
+                  (?h . ,(or (tramp-file-name-host (car target-alist)) "")))))
+         (with-parsed-tramp-file-name proxy l
+           ;; Add the hop.
+           (add-to-list 'target-alist l)
+           ;; Start next search.
+           (setq choices tramp-default-proxies-alist)))))
+
+    ;; Handle gateways.
+    (when (and (boundp 'tramp-gw-tunnel-method)
+              (string-match (format
+                             "^\\(%s\\|%s\\)$"
+                             (symbol-value 'tramp-gw-tunnel-method)
+                             (symbol-value 'tramp-gw-socks-method))
+                            (tramp-file-name-method (car target-alist))))
+      (let ((gw (pop target-alist))
+           (hop (pop target-alist)))
+       ;; Is the method prepared for gateways?
+       (unless (tramp-get-method-parameter
+                (tramp-file-name-method hop) 'tramp-default-port)
+         (tramp-error
+          vec 'file-error
+          "Method `%s' is not supported for gateway access."
+          (tramp-file-name-method hop)))
+       ;; Add default port if needed.
+       (unless
+           (string-match
+            tramp-host-with-port-regexp (tramp-file-name-host hop))
+         (aset hop 2
+               (concat
+                (tramp-file-name-host hop) tramp-prefix-port-format
+                (number-to-string
+                 (tramp-get-method-parameter
+                  (tramp-file-name-method hop) 'tramp-default-port)))))
+       ;; Open the gateway connection.
+       (add-to-list
+        'target-alist
+        (vector
+         (tramp-file-name-method hop) (tramp-file-name-user hop)
+         (funcall (symbol-function 'tramp-gw-open-connection) vec gw hop) nil))
+       ;; For the password prompt, we need the correct values.
+       ;; Therefore, we must remember the gateway vector.  But we
+       ;; cannot do it as connection property, because it shouldn't
+       ;; be persistent.  And we have no started process yet either.
+       (tramp-set-file-property (car target-alist) "" "gateway" hop)))
+
+    ;; Foreign and out-of-band methods are not supported for multi-hops.
+    (when (cdr target-alist)
+      (setq choices target-alist)
+      (while choices
+       (setq item (pop choices))
+       (when
+           (or
+            (not
+             (tramp-get-method-parameter
+              (tramp-file-name-method item) 'tramp-login-program))
+            (tramp-get-method-parameter
+             (tramp-file-name-method item) 'tramp-copy-program))
+         (tramp-error
+          vec 'file-error
+          "Method `%s' is not supported for multi-hops."
+          (tramp-file-name-method item)))))
+
+    ;; Result.
+    target-alist))
+
+(defun tramp-maybe-open-connection (vec)
+  "Maybe open a connection VEC.
 Does not do anything if a connection is already open, but re-opens the
 connection if a previous connection has died for some reason."
-  (let ((p (get-buffer-process
-           (tramp-get-buffer multi-method method user host)))
-       last-cmd-time)
+  (let ((p (tramp-get-connection-process vec)))
+
     ;; If too much time has passed since last command was sent, look
     ;; whether process is still alive.  If it isn't, kill it.  When
     ;; using ssh, it can sometimes happen that the remote end has hung
@@ -6608,239 +6073,287 @@ connection if a previous connection has died for some reason."
     ;; tries to send some data to the remote end.  So that's why we
     ;; try to send a command from time to time, then look again
     ;; whether the process is really alive.
-    (save-excursion
-      (set-buffer (tramp-get-buffer multi-method method user host))
-      (when (and tramp-last-cmd-time
-                (> (tramp-time-diff (current-time) tramp-last-cmd-time) 60)
-                p (processp p) (memq (process-status p) '(run open)))
-       (tramp-send-command
-        multi-method method user host "echo are you awake" nil t)
-       (unless (and (memq (process-status p) '(run open))
-                     (tramp-wait-for-output 10))
-         (delete-process p)
-         (setq p nil))
-       (erase-buffer)))
+    (condition-case nil
+       (when (and (> (tramp-time-diff
+                      (current-time)
+                      (tramp-get-connection-property
+                       p "last-cmd-time" '(0 0 0)))
+                     60)
+                  p (processp p) (memq (process-status p) '(run open)))
+         (tramp-send-command vec "echo are you awake" t t)
+         (unless (and (memq (process-status p) '(run open))
+                      (tramp-wait-for-output p 10))
+           ;; The error will be catched locally.
+           (tramp-error vec 'file-error "Awake did fail")))
+      (file-error
+       (tramp-flush-connection-property vec nil)
+       (tramp-flush-connection-property p nil)
+       (delete-process p)
+       (setq p nil)))
+
+    ;; New connection must be opened.
     (unless (and p (processp p) (memq (process-status p) '(run open)))
+
+      ;; We call `tramp-get-buffer' in order to get a debug buffer for
+      ;; messages from the beginning.
+      (tramp-get-buffer vec)
+      (if (zerop (length (tramp-file-name-user vec)))
+         (tramp-message
+          vec 3 "Opening connection for %s using %s..."
+          (tramp-file-name-host vec)
+          (tramp-file-name-method vec))
+       (tramp-message
+        vec 3 "Opening connection for %s@%s using %s..."
+        (tramp-file-name-user vec)
+        (tramp-file-name-host vec)
+        (tramp-file-name-method vec)))
+
+      ;; Start new process.
       (when (and p (processp p))
-        (delete-process p))
-      (let ((process-connection-type tramp-process-connection-type))
-       (funcall (tramp-get-method-parameter
-                 multi-method
-                 (tramp-find-method multi-method method user host)
-                 user host 'tramp-connection-function)
-                multi-method method user host)))))
-
-(defun tramp-send-command
-  (multi-method method user host command &optional noerase neveropen)
-  "Send the COMMAND to USER at HOST (logged in using METHOD).
-Erases temporary buffer before sending the command (unless NOERASE
-is true).
-If optional seventh arg NEVEROPEN is non-nil, never try to open the
-connection.  This is meant to be used from
-`tramp-maybe-open-connection' only."
-  (or neveropen
-      (tramp-maybe-open-connection multi-method method user host))
-  (setq tramp-last-cmd-time (current-time))
-  (setq tramp-last-cmd command)
-  (when tramp-debug-buffer
-    (save-excursion
-      (set-buffer (tramp-get-debug-buffer multi-method method user host))
-      (goto-char (point-max))
-      (tramp-insert-with-face 'bold (format "$ %s\n" command))))
-  (let ((proc nil))
-    (set-buffer (tramp-get-buffer multi-method method user host))
-    (unless noerase (erase-buffer))
-    (setq proc (get-buffer-process (current-buffer)))
-    (process-send-string proc
-                         (concat command tramp-rsh-end-of-line))))
-
-(defun tramp-send-command-internal
-  (multi-method method user host command &optional msg)
+       (delete-process p))
+      (setenv "TERM" tramp-terminal-type)
+      (setenv "PROMPT_COMMAND")
+      (setenv "PS1" "$ ")
+      (let* ((target-alist (tramp-compute-multi-hops vec))
+            (process-environment (copy-sequence process-environment))
+            (process-connection-type tramp-process-connection-type)
+            (process-adaptive-read-buffering nil)
+            (coding-system-for-read nil)
+            ;; This must be done in order to avoid our file name handler.
+            (p (let ((default-directory
+                       (tramp-compat-temporary-file-directory)))
+                 (start-process
+                  (or (tramp-get-connection-property vec "process-name" nil)
+                      (tramp-buffer-name vec))
+                  (tramp-get-connection-buffer vec)
+                  tramp-encoding-shell)))
+            (first-hop t))
+
+       (tramp-message
+        vec 6 "%s" (mapconcat 'identity (process-command p) " "))
+
+       ;; Check whether process is alive.
+       (set-process-sentinel p 'tramp-flush-connection-property)
+       (tramp-set-process-query-on-exit-flag p nil)
+       (tramp-message vec 3 "Waiting 60s for local shell to come up...")
+       (tramp-barf-if-no-shell-prompt
+        p 60 "Couldn't find local shell prompt %s" tramp-encoding-shell)
+
+       ;; Now do all the connections as specified.
+       (while target-alist
+         (let* ((hop (car target-alist))
+                (l-method (tramp-file-name-method hop))
+                (l-user (tramp-file-name-user hop))
+                (l-host (tramp-file-name-host hop))
+                (l-port nil)
+                (login-program
+                 (tramp-get-method-parameter l-method 'tramp-login-program))
+                (login-args
+                 (tramp-get-method-parameter l-method 'tramp-login-args))
+                (gw-args
+                 (tramp-get-method-parameter l-method 'tramp-gw-args))
+                (gw (tramp-get-file-property hop "" "gateway" nil))
+                (g-method (and gw (tramp-file-name-method gw)))
+                (g-user (and gw (tramp-file-name-user gw)))
+                (g-host (and gw (tramp-file-name-host gw)))
+                (command login-program)
+                spec)
+
+           ;; Add gateway arguments if necessary.
+           (when (and gw gw-args)
+             (setq login-args (append login-args gw-args)))
+
+           ;; Check for port number.  Until now, there's no need for handling
+           ;; like method, user, host.
+           (when (string-match tramp-host-with-port-regexp l-host)
+             (setq l-port (match-string 2 l-host)
+                   l-host (match-string 1 l-host)))
+
+           ;; Set variables for computing the prompt for reading password.
+           ;; They can also be derived from a gatewy.
+           (setq tramp-current-method (or g-method l-method)
+                 tramp-current-user   (or g-user   l-user)
+                 tramp-current-host   (or g-host   l-host))
+
+           ;; Replace login-args place holders.
+           (setq
+            l-host (or l-host "")
+            l-user (or l-user "")
+            l-port (or l-port "")
+            spec `((?h . ,l-host) (?u . ,l-user) (?p . ,l-port)
+                   (?t . ,(tramp-make-tramp-temp-file vec 'dont-create)))
+            command
+            (concat
+             command " "
+             (mapconcat
+              '(lambda (x)
+                 (setq x (mapcar '(lambda (y) (format-spec y spec)) x))
+                 (unless (member "" x) (mapconcat 'identity x " ")))
+              login-args " ")
+             ;; String to detect failed connection.  Every single word must
+             ;; be enclosed with '\"'; otherwise it is detected
+             ;; during connection setup.
+             ;; Local shell could be a Windows COMSPEC.  It doesn't know
+             ;; the ";" syntax, but we must exit always for `start-process'.
+             ;; "exec" does not work either.
+             (if first-hop
+                 " && exit || exit"
+               "; echo \"Tramp\" \"connection\" \"closed\"; sleep 1"))
+            ;; We don't reach a Windows shell.  Could be initial only.
+            first-hop nil)
+
+           ;; Send the command.
+           (tramp-message vec 3 "Sending command `%s'" command)
+           (tramp-send-command vec command t t)
+           (tramp-process-actions p vec tramp-actions-before-shell 60)
+           (tramp-message vec 3 "Found remote shell prompt on `%s'" l-host))
+         ;; Next hop.
+         (setq target-alist (cdr target-alist)))
+
+       ;; Make initial shell settings.
+       (tramp-open-connection-setup-interactive-shell p vec)))))
+
+(defun tramp-send-command (vec command &optional neveropen nooutput)
+  "Send the COMMAND to connection VEC.
+Erases temporary buffer before sending the command.  If optional
+arg NEVEROPEN is non-nil, never try to open the connection.  This
+is meant to be used from `tramp-maybe-open-connection' only.  The
+function waits for output unless NOOUTPUT is set."
+  (unless neveropen (tramp-maybe-open-connection vec))
+  (let ((p (tramp-get-connection-process vec)))
+    (when (tramp-get-connection-property vec "remote-echo" nil)
+      ;; We mark the command string that it can be erased in the output buffer.
+      (tramp-set-connection-property p "check-remote-echo" t)
+      (setq command (format "%s%s%s" tramp-echo-mark command tramp-echo-mark)))
+    (tramp-message vec 6 "%s" command)
+    (tramp-send-string vec command)
+    (unless nooutput (tramp-wait-for-output p))))
+
+(defun tramp-send-command-internal (vec command)
   "Send command to remote host and wait for success.
 Sends COMMAND, then waits 30 seconds for shell prompt."
-  (tramp-send-command multi-method method user host command t t)
-  (when msg
-    (tramp-message 9 "Waiting 30s for %s..." msg))
-  (tramp-barf-if-no-shell-prompt
-   nil 30
-   "Couldn't `%s', see buffer `%s'" command (buffer-name)))
-
-(defun tramp-wait-for-output (&optional timeout)
+  (let ((p (tramp-get-connection-process vec)))
+    (when (tramp-get-connection-property vec "remote-echo" nil)
+      ;; We mark the command string that it can be erased in the output buffer.
+      (tramp-set-connection-property p "check-remote-echo" t)
+      (setq command (format "%s%s%s" tramp-echo-mark command tramp-echo-mark)))
+    (tramp-message vec 6 "%s" command)
+    (tramp-send-string vec command)
+    (tramp-barf-if-no-shell-prompt
+     p 30 "Couldn't `%s', see buffer `%s'" command (buffer-name))))
+
+(defun tramp-wait-for-output (proc &optional timeout)
   "Wait for output from remote rsh command."
-  (let ((proc (get-buffer-process (current-buffer)))
-        (found nil)
-        (start-time (current-time))
-       (start-point (point))
-        (end-of-output (concat "^"
-                               (regexp-quote tramp-end-of-output)
-                               "\r?$")))
-    ;; Algorithm: get waiting output.  See if last line contains
-    ;; end-of-output sentinel.  If not, wait a bit and again get
-    ;; waiting output.  Repeat until timeout expires or end-of-output
-    ;; sentinel is seen.  Will hang if timeout is nil and
-    ;; end-of-output sentinel never appears.
-    (save-match-data
-      (cond (timeout
-             ;; Work around an XEmacs bug, where the timeout expires
-             ;; faster than it should.  This degenerates into polling
-             ;; for buggy XEmacsen, but oh, well.
-             (while (and (not found)
-                         (< (tramp-time-diff (current-time) start-time)
-                            timeout))
-               (with-timeout (timeout)
-                 (while (not found)
-                   (tramp-accept-process-output proc 1)
-                  (unless (memq (process-status proc) '(run open))
-                    (error "Process has died"))
-                   (goto-char (point-max))
-                   (forward-line -1)
-                   (setq found (looking-at end-of-output))))))
-            (t
-             (while (not found)
-               (tramp-accept-process-output proc 1)
-              (unless (memq (process-status proc) '(run open))
-                (error "Process has died"))
-               (goto-char (point-max))
-               (forward-line -1)
-               (setq found (looking-at end-of-output))))))
-    ;; At this point, either the timeout has expired or we have found
-    ;; the end-of-output sentinel.
-    (when found
-      (goto-char (point-max))
-      (forward-line -2)
-      (delete-region (point) (point-max)))
-    ;; If processing echoes, look for it in the first line and delete.
-    (when tramp-process-echoes
-      (save-excursion
-       (goto-char start-point)
-       (when (looking-at (regexp-quote tramp-last-cmd))
-         (delete-region (point) (progn (forward-line 1) (point))))))
-    ;; Add output to debug buffer if appropriate.
-    (when tramp-debug-buffer
-      (append-to-buffer
-       (tramp-get-debug-buffer tramp-current-multi-method tramp-current-method
-                             tramp-current-user tramp-current-host)
-       (point-min) (point-max))
-      (when (not found)
-        (save-excursion
-          (set-buffer
-           (tramp-get-debug-buffer tramp-current-multi-method tramp-current-method
-                                 tramp-current-user tramp-current-host))
-          (goto-char (point-max))
-          (insert "[[Remote prompt `" end-of-output "' not found"
-                  (if timeout (format " in %d secs" timeout) "")
-                  "]]"))))
-    (goto-char (point-min))
-    ;; Return value is whether end-of-output sentinel was found.
-    found))
+  (with-current-buffer (process-buffer proc)
+    (let ((found
+          (tramp-wait-for-regexp
+           proc timeout
+           (format "^%s\r?$" (regexp-quote tramp-end-of-output)))))
+      (if found
+         (let (buffer-read-only)
+           (goto-char (point-max))
+           (forward-line -2)
+           (delete-region (point) (point-max)))
+       (if timeout
+           (tramp-error
+            proc 'file-error
+            "[[Remote prompt `%s' not found in %d secs]]"
+            tramp-end-of-output timeout)
+         (tramp-error
+          proc 'file-error
+          "[[Remote prompt `%s' not found]]" tramp-end-of-output)))
+      ;; Return value is whether end-of-output sentinel was found.
+      found)))
 
-(defun tramp-send-command-and-check (multi-method method user host command
-                                                  &optional subshell)
+(defun tramp-send-command-and-check (vec command &optional subshell)
   "Run COMMAND and check its exit status.
-MULTI-METHOD and METHOD specify how to log in (as USER) to the remote HOST.
 Sends `echo $?' along with the COMMAND for checking the exit status.  If
 COMMAND is nil, just sends `echo $?'.  Returns the exit status found.
 
 If the optional argument SUBSHELL is non-nil, the command is executed in
 a subshell, ie surrounded by parentheses."
-  (tramp-send-command multi-method method user host
-                      (concat (if subshell "( " "")
-                              command
-                              (if command " 2>/dev/null; " "")
-                              "echo tramp_exit_status $?"
-                              (if subshell " )" " ")))
-  (tramp-wait-for-output)
-  (goto-char (point-max))
-  (unless (search-backward "tramp_exit_status " nil t)
-    (error "Couldn't find exit status of `%s'" command))
-  (skip-chars-forward "^ ")
-  (read (current-buffer)))
-
-(defun tramp-barf-unless-okay (multi-method method user host command subshell
-                                            signal fmt &rest args)
+  (tramp-send-command
+   vec
+   (concat (if subshell "( " "")
+          command
+          (if command " 2>/dev/null; " "")
+          "echo tramp_exit_status $?"
+          (if subshell " )" " ")))
+  (with-current-buffer (tramp-get-connection-buffer vec)
+    (goto-char (point-max))
+    (unless (re-search-backward "tramp_exit_status [0-9]+" nil t)
+      (tramp-error
+       vec 'file-error "Couldn't find exit status of `%s'" command))
+    (skip-chars-forward "^ ")
+    (prog1
+     (read (current-buffer))
+     (let (buffer-read-only) (delete-region (match-beginning 0) (point-max))))))
+
+(defun tramp-barf-unless-okay (vec command fmt &rest args)
   "Run COMMAND, check exit status, throw error if exit status not okay.
 Similar to `tramp-send-command-and-check' but accepts two more arguments
 FMT and ARGS which are passed to `error'."
-  (unless (zerop (tramp-send-command-and-check
-                  multi-method method user host command subshell))
-    ;; CCC: really pop-to-buffer?  Maybe it's appropriate to be more
-    ;; silent.
-    (pop-to-buffer (current-buffer))
-    (funcall 'signal signal (apply 'format fmt args))))
+  (unless (zerop (tramp-send-command-and-check vec command))
+    (apply 'tramp-error vec 'file-error fmt args)))
+
+(defun tramp-send-command-and-read (vec command)
+  "Run COMMAND and return the output, which must be a Lisp expression.
+In case there is no valid Lisp expression, it raises an error"
+  (tramp-barf-unless-okay vec command "`%s' returns with error" command)
+  (with-current-buffer (tramp-get-connection-buffer vec)
+    ;; Read the expression.
+    (goto-char (point-min))
+    (condition-case nil
+       (prog1 (read (current-buffer))
+         ;; Error handling.
+         (when (re-search-forward "\\S-" (tramp-compat-line-end-position) t)
+           (error nil)))
+      (error (tramp-error
+             vec 'file-error
+             "`%s' does not return a valid Lisp expression: `%s'"
+             command (buffer-string))))))
 
 ;; It seems that Tru64 Unix does not like it if long strings are sent
 ;; to it in one go.  (This happens when sending the Perl
 ;; `file-attributes' implementation, for instance.)  Therefore, we
-;; have this function which waits a bit at each line.
-(defun tramp-send-string
-  (multi-method method user host string)
-  "Send the STRING to USER at HOST using METHOD.
+;; have this function which sends the string in chunks.
+(defun tramp-send-string (vec string)
+  "Send the STRING via connection VEC.
 
 The STRING is expected to use Unix line-endings, but the lines sent to
 the remote host use line-endings as defined in the variable
-`tramp-rsh-end-of-line'."
-  (let ((proc (get-buffer-process
-               (tramp-get-buffer multi-method method user host))))
-    (unless proc
-      (error "Can't send string to remote host -- not logged in"))
-    ;; debug message
-    (when tramp-debug-buffer
-      (save-excursion
-       (set-buffer (tramp-get-debug-buffer multi-method method user host))
-       (goto-char (point-max))
-       (tramp-insert-with-face 'bold (format "$ %s\n" string))))
-    ;; replace "\n" by `tramp-rsh-end-of-line'
-    (setq string
-         (mapconcat 'identity
-                    (split-string string "\n")
-                    tramp-rsh-end-of-line))
-    (unless (or (string= string "")
-               (string-equal (substring string -1) tramp-rsh-end-of-line))
-      (setq string (concat string tramp-rsh-end-of-line)))
-    ;; send the string
-    (if (and tramp-chunksize (not (zerop tramp-chunksize)))
-       (let ((pos 0)
-             (end (length string)))
-         (while (< pos end)
-           (tramp-message-for-buffer
-            multi-method method user host 10
-            "Sending chunk from %s to %s"
-            pos (min (+ pos tramp-chunksize) end))
-           (process-send-string
-            proc (substring string pos (min (+ pos tramp-chunksize) end)))
-           (setq pos (+ pos tramp-chunksize))
-           (sleep-for 0.1)))
-      (process-send-string proc string))))
-
-(defun tramp-send-eof (multi-method method user host)
-  "Send EOF to the remote end.
-METHOD, HOST and USER specify the connection."
-  (let ((proc (get-buffer-process
-               (tramp-get-buffer multi-method method user host))))
-    (unless proc
-      (error "Can't send EOF to remote host -- not logged in"))
-    (process-send-eof proc)))
-;    (process-send-string proc "\^D")))
-
-(defun tramp-kill-process (multi-method method user host)
-  "Kill the connection process used by Tramp.
-MULTI-METHOD, METHOD, USER, and HOST specify the connection."
-  (let ((proc (get-buffer-process
-              (tramp-get-buffer multi-method method user host))))
-    (kill-process proc)))
-
-(defun tramp-discard-garbage-erase-buffer (p multi-method method user host)
-  "Erase buffer, then discard subsequent garbage.
-If `tramp-discard-garbage' is nil, just erase buffer."
-  (if (not tramp-discard-garbage)
-      (erase-buffer)
-    (while (prog1 (erase-buffer) (tramp-accept-process-output p 0.25))
-      (when tramp-debug-buffer
-        (save-excursion
-          (set-buffer (tramp-get-debug-buffer multi-method method user host))
-          (goto-char (point-max))
-          (tramp-insert-with-face
-           'bold (format "Additional characters detected\n")))))))
+`tramp-rsh-end-of-line'.  The communication buffer is erased before sending."
+  (let* ((p (tramp-get-connection-process vec))
+        (chunksize (tramp-get-connection-property p "chunksize" nil)))
+    (unless p
+      (tramp-error
+       vec 'file-error "Can't send string to remote host -- not logged in"))
+    (tramp-set-connection-property p "last-cmd-time" (current-time))
+    (tramp-message vec 10 "%s" string)
+    (with-current-buffer (tramp-get-connection-buffer vec)
+      ;; Clean up the buffer.  We cannot call `erase-buffer' because
+      ;; narrowing might be in effect.
+      (let (buffer-read-only) (delete-region (point-min) (point-max)))
+      ;; Replace "\n" by `tramp-rsh-end-of-line'.
+      (setq string
+           (mapconcat 'identity
+                      (split-string string "\n")
+                      tramp-rsh-end-of-line))
+      (unless (or (string= string "")
+                 (string-equal (substring string -1) tramp-rsh-end-of-line))
+       (setq string (concat string tramp-rsh-end-of-line)))
+      ;; Send the string.
+      (if (and chunksize (not (zerop chunksize)))
+         (let ((pos 0)
+               (end (length string)))
+           (while (< pos end)
+             (tramp-message
+              vec 10 "Sending chunk from %s to %s"
+              pos (min (+ pos chunksize) end))
+             (process-send-string
+              p (substring string pos (min (+ pos chunksize) end)))
+             (setq pos (+ pos chunksize))))
+       (process-send-string p string)))))
 
 (defun tramp-mode-string-to-int (mode-string)
   "Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits."
@@ -6913,27 +6426,83 @@ If `tramp-discard-garbage' is nil, just erase buffer."
        (t (error "Tenth char `%c' must be one of `xtT-'"
                  other-execute-or-sticky)))))))
 
-(defun tramp-convert-file-attributes (multi-method method user host attr)
-  "Convert file-attributes ATTR generated by perl script or ls.
+(defun tramp-convert-file-attributes (vec attr)
+  "Convert file-attributes ATTR generated by perl script, stat or ls.
 Convert file mode bits to string and set virtual device number.
 Return ATTR."
+  ;; Convert last access time.
+  (unless (listp (nth 4 attr))
+    (setcar (nthcdr 4 attr)
+           (list (floor (nth 4 attr) 65536)
+                 (floor (mod (nth 4 attr) 65536)))))
+  ;; Convert last modification time.
+  (unless (listp (nth 5 attr))
+    (setcar (nthcdr 5 attr)
+           (list (floor (nth 5 attr) 65536)
+                 (floor (mod (nth 5 attr) 65536)))))
+  ;; Convert last status change time.
+  (unless (listp (nth 6 attr))
+    (setcar (nthcdr 6 attr)
+           (list (floor (nth 6 attr) 65536)
+                 (floor (mod (nth 6 attr) 65536)))))
+  ;; Convert file size.
+  (when (< (nth 7 attr) 0)
+    (setcar (nthcdr 7 attr) -1))
+  (when (and (floatp (nth 7 attr))
+            (<= (nth 7 attr) (tramp-compat-most-positive-fixnum)))
+    (setcar (nthcdr 7 attr) (round (nth 7 attr))))
   ;; Convert file mode bits to string.
   (unless (stringp (nth 8 attr))
     (setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr))))
-  ;; Set file's gid change bit.  Possible only when id-format is 'integer.
-  (when (numberp (nth 3 attr))
-    (setcar (nthcdr 9 attr)
-           (not (eql (nth 3 attr)
-                     (tramp-get-remote-gid multi-method method user host)))))
+  ;; Convert directory indication bit.
+  (if (string-match "^d" (nth 8 attr))
+      (setcar attr t)
+    (if (and (listp (car attr)) (stringp (caar attr))
+            (string-match ".+ -> .\\(.+\\)." (caar attr)))
+       (setcar attr (match-string 1 (caar attr)))
+      (setcar attr nil)))
+  ;; Set file's gid change bit.
+  (setcar (nthcdr 9 attr)
+         (if (numberp (nth 3 attr))
+             (not (= (nth 3 attr)
+                     (tramp-get-remote-gid vec 'integer)))
+           (not (string-equal
+                 (nth 3 attr)
+                 (tramp-get-remote-gid vec 'string)))))
+  ;; Convert inode.
+  (unless (listp (nth 10 attr))
+    (setcar (nthcdr 10 attr)
+           (condition-case nil
+               (list (floor (nth 10 attr) 65536)
+                     (floor (mod (nth 10 attr) 65536)))
+             ;; Inodes can be incredible huge.  We must hide this.
+             (error (tramp-get-inode vec)))))
   ;; Set virtual device number.
   (setcar (nthcdr 11 attr)
-          (tramp-get-device multi-method method user host))
+          (tramp-get-device vec))
   attr)
 
-(defun tramp-get-device (multi-method method user host)
+(defun tramp-get-inode (vec)
+  "Returns the virtual inode number.
+If it doesn't exist, generate a new one."
+  (let ((string (tramp-make-tramp-file-name
+                (tramp-file-name-method vec)
+                (tramp-file-name-user vec)
+                (tramp-file-name-host vec)
+                "")))
+    (unless (assoc string tramp-inodes)
+      (add-to-list 'tramp-inodes
+                  (list string (length tramp-inodes))))
+    (nth 1 (assoc string tramp-inodes))))
+
+(defun tramp-get-device (vec)
   "Returns the virtual device number.
 If it doesn't exist, generate a new one."
-  (let ((string (tramp-make-tramp-file-name multi-method method user host "")))
+  (let ((string (tramp-make-tramp-file-name
+                (tramp-file-name-method vec)
+                (tramp-file-name-user vec)
+                (tramp-file-name-host vec)
+                "")))
     (unless (assoc string tramp-devices)
       (add-to-list 'tramp-devices
                   (list string (length tramp-devices))))
@@ -6953,7 +6522,6 @@ If it doesn't exist, generate a new one."
     (setq other (tramp-file-mode-permissions other sticky "t"))
     (concat type user group other)))
 
-
 (defun tramp-file-mode-permissions (perm suid suid-text)
   "Convert a permission bitset into a string.
 This is used internally by `tramp-file-mode-from-int'."
@@ -6966,7 +6534,6 @@ This is used internally by `tramp-file-mode-from-int'."
                (and suid (upcase suid-text)) ; suid, !execute
                (and x "x") "-"))))     ; !suid
 
-
 (defun tramp-decimal-to-octal (i)
   "Return a string consisting of the octal digits of I.
 Not actually used.  Use `(format \"%o\" i)' instead?"
@@ -6977,16 +6544,6 @@ Not actually used.  Use `(format \"%o\" i)' instead?"
                    (number-to-string (% i 8))))))
 
 
-;;(defun tramp-octal-to-decimal (ostr)
-;;  "Given a string of octal digits, return a decimal number."
-;;  (cond ((null ostr) 0)
-;;        ((string= "" ostr) 0)
-;;        (t (let ((last (aref ostr (1- (length ostr))))
-;;                 (rest (substring ostr 0 (1- (length ostr)))))
-;;             (unless (and (>= last ?0)
-;;                          (<= last ?7))
-;;               (error "Not an octal digit: %c" last))
-;;             (+ (- last ?0) (* 8 (tramp-octal-to-decimal rest)))))))
 ;; Kudos to Gerd Moellmann for this suggestion.
 (defun tramp-octal-to-decimal (ostr)
   "Given a string of octal digits, return a decimal number."
@@ -7014,289 +6571,409 @@ Not actually used.  Use `(format \"%o\" i)' instead?"
 ;; internal data structure.  Convenience functions for internal
 ;; data structure.
 
-(defun tramp-file-name-p (obj)
-  "Check whether TRAMP-FILE-NAME is a Tramp object."
-  (and (vectorp obj) (= 5 (length obj))))
-
-(defun tramp-file-name-multi-method (obj)
-  "Return MULTI-METHOD component of TRAMP-FILE-NAME."
-  (and (tramp-file-name-p obj) (aref obj 0)))
-
-(defun tramp-file-name-method (obj)
-  "Return METHOD component of TRAMP-FILE-NAME."
-  (and (tramp-file-name-p obj) (aref obj 1)))
-
-(defun tramp-file-name-user (obj)
-  "Return USER component of TRAMP-FILE-NAME."
-  (and (tramp-file-name-p obj) (aref obj 2)))
-
-(defun tramp-file-name-host (obj)
-  "Return HOST component of TRAMP-FILE-NAME."
-  (and (tramp-file-name-p obj) (aref obj 3)))
-
-(defun tramp-file-name-localname (obj)
-  "Return LOCALNAME component of TRAMP-FILE-NAME."
-  (and (tramp-file-name-p obj) (aref obj 4)))
+(defun tramp-file-name-p (vec)
+  "Check whether VEC is a Tramp object."
+  (and (vectorp vec) (= 4 (length vec))))
+
+(defun tramp-file-name-method (vec)
+  "Return method component of VEC."
+  (and (tramp-file-name-p vec) (aref vec 0)))
+
+(defun tramp-file-name-user (vec)
+  "Return user component of VEC."
+  (and (tramp-file-name-p vec) (aref vec 1)))
+
+(defun tramp-file-name-host (vec)
+  "Return host component of VEC."
+  (and (tramp-file-name-p vec) (aref vec 2)))
+
+(defun tramp-file-name-localname (vec)
+  "Return localname component of VEC."
+  (and (tramp-file-name-p vec) (aref vec 3)))
+
+;; The host part of a Tramp file name vector can be of kind
+;; "host#port".  Sometimes, we must extract these parts.
+(defun tramp-file-name-real-host (vec)
+  "Return the host name of VEC without port."
+  (let ((host (tramp-file-name-host vec)))
+    (if (and (stringp host)
+            (string-match tramp-host-with-port-regexp host))
+       (match-string 1 host)
+      host)))
+
+(defun tramp-file-name-port (vec)
+  "Return the port number of VEC."
+  (let ((host (tramp-file-name-host vec)))
+    (and (stringp host)
+        (string-match tramp-host-with-port-regexp host)
+        (string-to-number (match-string 2 host)))))
 
 (defun tramp-tramp-file-p (name)
   "Return t if NAME is a tramp file."
   (save-match-data
     (string-match tramp-file-name-regexp name)))
 
-;; HHH: Changed.  Used to assign the return value of (user-login-name)
-;;      to the `user' part of the structure if a user name was not
-;;      provided, now it assigns nil.
-(defun tramp-dissect-file-name (name)
-  "Return an `tramp-file-name' structure.
-The structure consists of remote method, remote user, remote host and
-localname (file name on remote host)."
-  (save-match-data
-    (let* ((match (string-match (nth 0 tramp-file-name-structure) name))
-          (method
-           ; single-hop
-           (if match (match-string (nth 1 tramp-file-name-structure) name)
-             ; maybe multi-hop
-             (string-match
-              (format (nth 0 tramp-multi-file-name-structure)
-                      (nth 0 tramp-multi-file-name-hop-structure)) name)
-             (match-string (nth 1 tramp-multi-file-name-structure) name))))
-      (if (and method (member method tramp-multi-methods))
-          ;; If it's a multi method, the file name structure contains
-          ;; arrays of method, user and host.
-          (tramp-dissect-multi-file-name name)
-        ;; Normal method.  First, find out default method.
-       (unless match (error "Not a tramp file name: %s" name))
-       (let ((user (match-string (nth 2 tramp-file-name-structure) name))
-             (host (match-string (nth 3 tramp-file-name-structure) name))
-             (localname (match-string (nth 4 tramp-file-name-structure) name)))
-         (vector nil method (or user nil) host localname))))))
-
-(defun tramp-find-default-method (user host)
-  "Look up the right method to use in `tramp-default-method-alist'."
-  (let ((choices tramp-default-method-alist)
-       (method tramp-default-method)
-       item)
-    (while choices
-      (setq item (pop choices))
-      (when (and (string-match (or (nth 0 item) "") (or host ""))
-                (string-match (or (nth 1 item) "") (or user "")))
-       (setq method (nth 2 item))
-       (setq choices nil)))
-    method))
-
-(defun tramp-find-method (multi-method method user host)
+(defun tramp-find-method (method user host)
   "Return the right method string to use.
-This is MULTI-METHOD, if non-nil.  Otherwise, it is METHOD, if non-nil.
-If both MULTI-METHOD and METHOD are nil, do a lookup in
+This is METHOD, if non-nil. Otherwise, do a lookup in
 `tramp-default-method-alist'."
-  (or multi-method method (tramp-find-default-method user host)))
-
-;; HHH: Not Changed.  Multi method.  Will probably not handle the case where
-;;      a user name is not provided in the "file name" very well.
-(defun tramp-dissect-multi-file-name (name)
-  "Not implemented yet."
-  (let ((regexp           (nth 0 tramp-multi-file-name-structure))
-        (method-index     (nth 1 tramp-multi-file-name-structure))
-        (hops-index       (nth 2 tramp-multi-file-name-structure))
-        (localname-index       (nth 3 tramp-multi-file-name-structure))
-        (hop-regexp       (nth 0 tramp-multi-file-name-hop-structure))
-        (hop-method-index (nth 1 tramp-multi-file-name-hop-structure))
-        (hop-user-index   (nth 2 tramp-multi-file-name-hop-structure))
-        (hop-host-index   (nth 3 tramp-multi-file-name-hop-structure))
-        method hops len hop-methods hop-users hop-hosts localname)
-    (unless (string-match (format regexp hop-regexp) name)
-      (error "Not a multi tramp file name: %s" name))
-    (setq method (match-string method-index name))
-    (setq hops (match-string hops-index name))
-    (setq len (/ (length (match-data t)) 2))
-    (when (< localname-index 0) (setq localname-index (+ localname-index len)))
-    (setq localname (match-string localname-index name))
-    (let ((index 0))
-      (while (string-match hop-regexp hops index)
-        (setq index (match-end 0))
-        (setq hop-methods
-              (cons (match-string hop-method-index hops) hop-methods))
-        (setq hop-users
-              (cons (match-string hop-user-index hops) hop-users))
-        (setq hop-hosts
-              (cons (match-string hop-host-index hops) hop-hosts))))
-    (vector
-     method
-     (apply 'vector (reverse hop-methods))
-     (apply 'vector (reverse hop-users))
-     (apply 'vector (reverse hop-hosts))
-     localname)))
-
-(defun tramp-make-tramp-file-name (multi-method method user host localname)
-  "Constructs a tramp file name from METHOD, USER, HOST and LOCALNAME."
-  (if multi-method
-      (tramp-make-tramp-multi-file-name multi-method method user host localname)
-    (format-spec
-     (concat tramp-prefix-format
-      (when method (concat "%m" tramp-postfix-single-method-format))
-      (when user   (concat "%u" tramp-postfix-user-format))
-      (when host   (concat "%h" tramp-postfix-host-format))
-      (when localname   (concat "%p")))
-    `((?m . ,method) (?u . ,user) (?h . ,host) (?p . ,localname)))))
-
-;; CCC: Henrik Holm: Not Changed.  Multi Method.  What should be done
-;; with this when USER is nil?
-(defun tramp-make-tramp-multi-file-name (multi-method method user host localname)
-  "Constructs a tramp file name for a multi-hop method."
-  (unless tramp-make-multi-tramp-file-format
-    (error "`tramp-make-multi-tramp-file-format' is nil"))
-  (let* ((prefix-format (nth 0 tramp-make-multi-tramp-file-format))
-         (hop-format    (nth 1 tramp-make-multi-tramp-file-format))
-         (localname-format   (nth 2 tramp-make-multi-tramp-file-format))
-         (prefix (format-spec prefix-format `((?m . ,multi-method))))
-         (hops "")
-         (localname (format-spec localname-format `((?p . ,localname))))
-         (i 0)
-         (len (length method)))
-    (while (< i len)
-      (let ((m (aref method i)) (u (aref user i)) (h (aref host i)))
-        (setq hops (concat hops (format-spec hop-format
-                                            `((?m . ,m) (?u . ,u) (?h . ,h)))))
-        (setq i (1+ i))))
-    (concat prefix hops localname)))
-
-(defun tramp-make-copy-program-file-name (user host localname)
-  "Create a file name suitable to be passed to `rcp' and workalikes."
-  (if user
-      (format "%s@%s:%s" user host localname)
-    (format "%s:%s" host localname)))
+  (or method
+      (let ((choices tramp-default-method-alist)
+           lmethod item)
+       (while choices
+         (setq item (pop choices))
+         (when (and (string-match (or (nth 0 item) "") (or host ""))
+                    (string-match (or (nth 1 item) "") (or user "")))
+           (setq lmethod (nth 2 item))
+           (setq choices nil)))
+       lmethod)
+      tramp-default-method))
+
+(defun tramp-find-user (method user host)
+  "Return the right user string to use.
+This is USER, if non-nil. Otherwise, do a lookup in
+`tramp-default-user-alist'."
+  (or user
+      (let ((choices tramp-default-user-alist)
+           luser item)
+       (while choices
+         (setq item (pop choices))
+         (when (and (string-match (or (nth 0 item) "") (or method ""))
+                    (string-match (or (nth 1 item) "") (or host "")))
+           (setq luser (nth 2 item))
+           (setq choices nil)))
+       luser)
+      tramp-default-user))
+
+(defun tramp-find-host (method user host)
+  "Return the right host string to use.
+This is HOST, if non-nil. Otherwise, it is `tramp-default-host'."
+  (or (and (> (length host) 0) host)
+      tramp-default-host))
+
+(defun tramp-dissect-file-name (name &optional nodefault)
+  "Return a `tramp-file-name' structure.
+The structure consists of remote method, remote user, remote host
+and localname (file name on remote host).  If NODEFAULT is
+non-nil, the file name parts are not expanded to their default
+values."
+  (save-match-data
+    (let ((match (string-match (nth 0 tramp-file-name-structure) name)))
+      (unless match (error "Not a tramp file name: %s" name))
+      (let ((method    (match-string (nth 1 tramp-file-name-structure) name))
+           (user      (match-string (nth 2 tramp-file-name-structure) name))
+           (host      (match-string (nth 3 tramp-file-name-structure) name))
+           (localname (match-string (nth 4 tramp-file-name-structure) name)))
+       (if nodefault
+           (vector method user host localname)
+         (vector
+          (tramp-find-method method user host)
+          (tramp-find-user   method user host)
+          (tramp-find-host   method user host)
+          localname))))))
+
+(defun tramp-equal-remote (file1 file2)
+  "Checks, whether the remote parts of FILE1 and FILE2 are identical.
+The check depends on method, user and host name of the files.  If
+one of the components is missing, the default values are used.
+The local file name parts of FILE1 and FILE2 are not taken into
+account.
 
-(defun tramp-method-out-of-band-p (multi-method method user host)
-  "Return t if this is an out-of-band method, nil otherwise."
-  (tramp-get-method-parameter
-   multi-method
-   (tramp-find-method multi-method method user host)
-   user host 'tramp-copy-program))
+Example:
 
-;; Variables local to connection.
+  (tramp-equal-remote \"/ssh::/etc\" \"/<your host name>:/home\")
+
+would yield `t'.  On the other hand, the following check results in nil:
+
+  (tramp-equal-remote \"/sudo::/etc\" \"/su::/etc\")"
+  (and (stringp (file-remote-p file1))
+       (stringp (file-remote-p file2))
+       (string-equal (file-remote-p file1) (file-remote-p file2))))
+
+(defun tramp-make-tramp-file-name (method user host localname)
+  "Constructs a Tramp file name from METHOD, USER, HOST and LOCALNAME."
+  (concat tramp-prefix-format
+         (when (not (zerop (length method)))
+           (concat method tramp-postfix-method-format))
+         (when (not (zerop (length user)))
+           (concat user tramp-postfix-user-format))
+         (when host host) tramp-postfix-host-format
+         (when localname localname)))
+
+(defun tramp-completion-make-tramp-file-name (method user host localname)
+  "Constructs a Tramp file name from METHOD, USER, HOST and LOCALNAME.
+It must not be a complete Tramp file name, but as long as there are
+necessary only.  This function will be used in file name completion."
+  (concat tramp-prefix-format
+         (when (not (zerop (length method)))
+           (concat method tramp-postfix-method-format))
+         (when (not (zerop (length user)))
+           (concat user tramp-postfix-user-format))
+         (when (not (zerop (length host)))
+           (concat host tramp-postfix-host-format))
+         (when localname localname)))
+
+(defun tramp-make-copy-program-file-name (vec)
+  "Create a file name suitable to be passed to `rcp' and workalikes."
+  (let ((user (tramp-file-name-user vec))
+       (host (tramp-file-name-real-host vec))
+       (localname (tramp-shell-quote-argument
+                   (tramp-file-name-localname vec))))
+    (if (not (zerop (length user)))
+        (format "%s@%s:%s" user host localname)
+      (format "%s:%s" host localname))))
+
+(defun tramp-method-out-of-band-p (vec)
+  "Return t if this is an out-of-band method, nil otherwise."
+  (tramp-get-method-parameter (tramp-file-name-method vec) 'tramp-copy-program))
 
-(defun tramp-get-ls-command (multi-method method user host)
-  (or
-   (save-excursion
-     (tramp-maybe-open-connection multi-method method user host)
-     (set-buffer (tramp-get-buffer multi-method method user host))
-     tramp-ls-command)
-   (error "Couldn't find remote `ls' command")))
+(defun tramp-local-host-p (vec)
+  "Return t if this points to the local host, nil otherwise."
+  (let ((host (tramp-file-name-real-host vec)))
+    (and
+     (stringp host)
+     (string-match
+      (concat "^" (regexp-opt (list "localhost" (system-name)) t) "$") host))))
 
-(defun tramp-get-test-groks-nt (multi-method method user host)
-  (save-excursion
-    (tramp-maybe-open-connection multi-method method user host)
-    (set-buffer (tramp-get-buffer multi-method method user host))
-    tramp-test-groks-nt))
+;; Variables local to connection.
 
-(defun tramp-get-file-exists-command (multi-method method user host)
-  (or
-   (save-excursion
-     (tramp-maybe-open-connection multi-method method user host)
-     (set-buffer (tramp-get-buffer multi-method method user host))
-     tramp-file-exists-command)
-   (error "Couldn't find remote `test -e' command")))
+(defun tramp-get-remote-path (vec)
+  (with-connection-property vec "remote-path"
+    (let* ((remote-path (tramp-compat-copy-tree tramp-remote-path))
+          (elt (memq 'tramp-default-remote-path remote-path))
+          (default-remote-path
+            (when elt
+              (condition-case nil
+                  (symbol-name
+                   (tramp-send-command-and-read vec "getconf PATH"))
+                ;; Default if "getconf" is not available.
+                (error
+                 (tramp-message
+                  vec 3
+                  "`getconf PATH' not successful, using default value \"%s\"."
+                  "/bin:/usr/bin")
+                 "/bin:/usr/bin")))))
+      (when elt
+       ;; Replace place holder `tramp-default-remote-path'.
+       (setcdr elt
+               (append
+                (tramp-split-string default-remote-path ":")
+                (cdr elt)))
+       (setq remote-path (delq 'tramp-default-remote-path remote-path)))
+
+      ;; Remove non-existing directories.
+      (delq
+       nil
+       (mapcar
+       (lambda (x)
+         (and
+          (with-connection-property vec x
+            (file-directory-p
+             (tramp-make-tramp-file-name
+              (tramp-file-name-method vec)
+              (tramp-file-name-user vec)
+              (tramp-file-name-host vec)
+              x)))
+          x))
+       remote-path)))))
+
+(defun tramp-get-ls-command (vec)
+  (with-connection-property vec "ls"
+    (with-current-buffer (tramp-get-buffer vec)
+      (tramp-message vec 5 "Finding a suitable `ls' command")
+      (or
+       (catch 'ls-found
+        (dolist (cmd '("ls" "gnuls" "gls"))
+          (let ((dl (tramp-get-remote-path vec))
+                result)
+            (while
+                (and
+                 dl
+                 (setq result
+                       (tramp-find-executable vec cmd dl t t)))
+              ;; Check parameter.
+              (when (zerop (tramp-send-command-and-check
+                            vec (format "%s -lnd /" result)))
+                (throw 'ls-found result))
+              (setq dl (cdr dl))))))
+       (tramp-error vec 'file-error "Couldn't find a proper `ls' command")))))
+
+(defun tramp-get-test-command (vec)
+  (with-connection-property vec "test"
+    (with-current-buffer (tramp-get-buffer vec)
+      (tramp-message vec 5 "Finding a suitable `test' command")
+      (if (zerop (tramp-send-command-and-check vec "test 0"))
+         "test"
+       (tramp-find-executable vec "test" (tramp-get-remote-path vec))))))
+
+(defun tramp-get-test-nt-command (vec)
+  ;; Does `test A -nt B' work?  Use abominable `find' construct if it
+  ;; doesn't.  BSD/OS 4.0 wants the parentheses around the command,
+  ;; for otherwise the shell crashes.
+  (with-connection-property vec "test-nt"
+    (or
+     (progn
+       (tramp-send-command
+       vec (format "( %s / -nt / )" (tramp-get-test-command vec)))
+       (with-current-buffer (tramp-get-buffer vec)
+        (goto-char (point-min))
+        (when (looking-at
+               (format "\n%s\r?\n" (regexp-quote tramp-end-of-output)))
+          (format "%s %%s -nt %%s" (tramp-get-test-command vec)))))
+     (progn
+       (tramp-send-command
+       vec
+       (format
+        "tramp_test_nt () {\n%s -n \"`find $1 -prune -newer $2 -print`\"\n}"
+        (tramp-get-test-command vec)))
+       "tramp_test_nt %s %s"))))
+
+(defun tramp-get-file-exists-command (vec)
+  (with-connection-property vec "file-exists"
+    (with-current-buffer (tramp-get-buffer vec)
+      (tramp-message vec 5 "Finding command to check if file exists")
+      (tramp-find-file-exists-command vec))))
+
+(defun tramp-get-remote-ln (vec)
+  (with-connection-property vec "ln"
+    (with-current-buffer (tramp-get-buffer vec)
+      (tramp-message vec 5 "Finding a suitable `ln' command")
+      (tramp-find-executable vec "ln" (tramp-get-remote-path vec)))))
+
+(defun tramp-get-remote-perl (vec)
+  (with-connection-property vec "perl"
+    (with-current-buffer (tramp-get-buffer vec)
+      (tramp-message vec 5 "Finding a suitable `perl' command")
+      (or (tramp-find-executable vec "perl5" (tramp-get-remote-path vec))
+         (tramp-find-executable vec "perl" (tramp-get-remote-path vec))))))
+
+(defun tramp-get-remote-stat (vec)
+  (with-connection-property vec "stat"
+    (with-current-buffer (tramp-get-buffer vec)
+      (tramp-message vec 5 "Finding a suitable `stat' command")
+      (let ((result (tramp-find-executable
+                    vec "stat" (tramp-get-remote-path vec)))
+           tmp)
+       ;; Check whether stat(1) returns usable syntax.
+       (when result
+         (setq tmp
+               ;; We don't want to display an error message.
+               (with-temp-message (or (current-message) "")
+                 (condition-case nil
+                     (tramp-send-command-and-read
+                      vec (format "%s -c '(\"%%N\")' /" result))
+                   (error nil))))
+         (unless (and (listp tmp) (stringp (car tmp))
+                      (string-match "^./.$" (car tmp)))
+           (setq result nil)))
+       result))))
 
-(defun tramp-get-remote-perl (multi-method method user host)
-  (tramp-get-connection-property "perl" nil multi-method method user host))
+(defun tramp-get-remote-id (vec)
+  (with-connection-property vec "id"
+    (with-current-buffer (tramp-get-buffer vec)
+      (tramp-message vec 5 "Finding POSIX `id' command")
+      (or
+       (catch 'id-found
+        (let ((dl (tramp-get-remote-path vec))
+              result)
+          (while
+              (and
+               dl
+               (setq result
+                     (tramp-find-executable vec "id" dl t t)))
+            ;; Check POSIX parameter.
+            (when (zerop (tramp-send-command-and-check
+                          vec (format "%s -u" result)))
+              (throw 'id-found result))
+            (setq dl (cdr dl)))))
+       (tramp-error vec 'file-error "Couldn't find a POSIX `id' command")))))
+
+(defun tramp-get-remote-uid (vec id-format)
+  (with-connection-property vec (format "uid-%s" id-format)
+    (let ((res (tramp-send-command-and-read
+               vec
+               (format "%s -u%s %s"
+                       (tramp-get-remote-id vec)
+                       (if (equal id-format 'integer) "" "n")
+                       (if (equal id-format 'integer)
+                           "" "| sed -e s/^/\\\"/ -e s/\$/\\\"/")))))
+      ;; The command might not always return a number.
+      (if (and (equal id-format 'integer) (not (integerp res))) -1 res))))
+
+(defun tramp-get-remote-gid (vec id-format)
+  (with-connection-property vec (format "gid-%s" id-format)
+    (let ((res (tramp-send-command-and-read
+               vec
+               (format "%s -g%s %s"
+                       (tramp-get-remote-id vec)
+                       (if (equal id-format 'integer) "" "n")
+                       (if (equal id-format 'integer)
+                           "" "| sed -e s/^/\\\"/ -e s/\$/\\\"/")))))
+      ;; The command might not always return a number.
+      (if (and (equal id-format 'integer) (not (integerp res))) -1 res))))
+
+(defun tramp-get-local-uid (id-format)
+  (if (equal id-format 'integer) (user-uid) (user-login-name)))
+
+(defun tramp-get-local-gid (id-format)
+  (nth 3 (tramp-compat-file-attributes "~/" id-format)))
 
-(defun tramp-get-remote-ln (multi-method method user host)
+;; Some predefined connection properties.
+(defun tramp-get-remote-coding (vec prop)
+  ;; Local coding handles properties like remote coding.  So we could
+  ;; call it without pain.
+  (let ((ret (tramp-get-local-coding vec prop)))
+    ;; The connection property might have been cached.  So we must send
+    ;; the script - maybe.
+    (when (not (stringp ret))
+      (let ((name (symbol-name ret)))
+       (while (string-match (regexp-quote "-") name)
+         (setq name (replace-match "_" nil t name)))
+       (tramp-maybe-send-script vec (symbol-value ret) name)
+       (setq ret name)))
+    ;; Return the value.
+    ret))
+
+(defun tramp-get-local-coding (vec prop)
   (or
-   (tramp-get-connection-property "ln" nil multi-method method user host)
-   (error "Couldn't find remote `ln' command")))
-
-(defun tramp-get-remote-uid (multi-method method user host)
-  (tramp-get-connection-property "uid" nil multi-method method user host))
-
-(defun tramp-get-remote-gid (multi-method method user host)
-  (tramp-get-connection-property "gid" nil multi-method method user host))
-
-;; Get a property of a TRAMP connection.
-(defun tramp-get-connection-property
-  (property default multi-method method user host)
-  "Get the named property for the connection.
-If the value is not set for the connection, return `default'"
-  (tramp-maybe-open-connection multi-method method user host)
-  (with-current-buffer (tramp-get-buffer multi-method method user host)
-    (let (error)
-      (condition-case nil
-         (symbol-value (intern (concat "tramp-connection-property-" property)))
-       (error default)))))
-
-;; Set a property of a TRAMP connection.
-(defun tramp-set-connection-property
-  (property value multi-method method user host)
-  "Set the named property of a TRAMP connection."
-  (tramp-maybe-open-connection multi-method method user host)
-  (with-current-buffer (tramp-get-buffer multi-method method user host)
-    (set (make-local-variable
-         (intern (concat "tramp-connection-property-" property)))
-         value)))
+   (tramp-get-connection-property vec prop nil)
+   (progn
+     (tramp-find-inline-encoding vec)
+     (tramp-get-connection-property vec prop nil))))
 
-;; Some predefined connection properties.
-(defun tramp-set-remote-encoding (multi-method method user host rem-enc)
-  (tramp-set-connection-property "remote-encoding" rem-enc
-                                multi-method method user host))
-(defun tramp-get-remote-encoding (multi-method method user host)
-  (tramp-get-connection-property "remote-encoding" nil
-                                multi-method method user host))
-
-(defun tramp-set-remote-decoding (multi-method method user host rem-dec)
-  (tramp-set-connection-property "remote-decoding" rem-dec
-                                multi-method method user host))
-(defun tramp-get-remote-decoding (multi-method method user host)
-  (tramp-get-connection-property "remote-decoding" nil
-                                multi-method method user host))
-
-(defun tramp-set-local-encoding (multi-method method user host loc-enc)
-  (tramp-set-connection-property "local-encoding" loc-enc
-                                multi-method method user host))
-(defun tramp-get-local-encoding (multi-method method user host)
-  (tramp-get-connection-property "local-encoding" nil
-                                multi-method method user host))
-
-(defun tramp-set-local-decoding (multi-method method user host loc-dec)
-  (tramp-set-connection-property "local-decoding" loc-dec
-                                multi-method method user host))
-(defun tramp-get-local-decoding (multi-method method user host)
-  (tramp-get-connection-property "local-decoding" nil
-                                multi-method method user host))
-
-(defun tramp-get-method-parameter (multi-method method user host param)
+(defun tramp-get-method-parameter (method param)
   "Return the method parameter PARAM.
-If the `tramp-methods' entry does not exist, use the variable PARAM
-as default."
-  (unless (boundp param)
-    (error "Non-existing method parameter `%s'" param))
-  (let ((entry (assoc param
-                     (assoc (tramp-find-method multi-method method user host)
-                            tramp-methods))))
-    (if entry
-       (cadr entry)
-      (symbol-value param))))
-
+If the `tramp-methods' entry does not exist, return NIL."
+  (let ((entry (assoc param (assoc method tramp-methods))))
+    (when entry (cadr entry))))
 
 ;; Auto saving to a special directory.
 
 (defun tramp-exists-file-name-handler (operation &rest args)
-  (let ((buffer-file-name "/")
-       (fnha file-name-handler-alist)
-       (check-file-name-operation operation)
-       (file-name-handler-alist
-        (list
-         (cons "/"
-               '(lambda (operation &rest args)
-                  "Returns OPERATION if it is the one to be checked"
-                  (if (equal check-file-name-operation operation)
-                      operation
-                    (let ((file-name-handler-alist fnha))
-                      (apply operation args))))))))
-    (eq (apply operation args) operation)))
+  "Checks whether OPERATION runs a file name handler."
+  ;; The file name handler is determined on base of either an
+  ;; argument, `buffer-file-name', or `default-directory'.
+  (condition-case nil
+      (let* ((buffer-file-name "/")
+            (default-directory "/")
+            (fnha file-name-handler-alist)
+            (check-file-name-operation operation)
+            (file-name-handler-alist
+             (list
+              (cons "/"
+                    '(lambda (operation &rest args)
+                       "Returns OPERATION if it is the one to be checked."
+                       (if (equal check-file-name-operation operation)
+                           operation
+                         (let ((file-name-handler-alist fnha))
+                           (apply operation args))))))))
+       (equal (apply operation args) operation))
+    (error nil)))
 
 (unless (tramp-exists-file-name-handler 'make-auto-save-file-name)
   (defadvice make-auto-save-file-name
     (around tramp-advice-make-auto-save-file-name () activate)
-    "Invoke `tramp-handle-make-auto-save-file-name' for tramp files."
+    "Invoke `tramp-handle-make-auto-save-file-name' for Tramp files."
     (if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))
        (setq ad-return-value (tramp-handle-make-auto-save-file-name))
       ad-do-it))
@@ -7343,57 +7020,68 @@ ALIST is of the form ((FROM . TO) ...)."
         (setq alist (cdr alist))))
     string))
 
-(defun tramp-insert-with-face (face string)
-  "Insert text with a specific face."
-  (let ((start (point)))
-    (insert string)
-    (add-text-properties start (point) (list 'face face))))
-
 ;; ------------------------------------------------------------
 ;; -- Compatibility functions section --
 ;; ------------------------------------------------------------
 
-(defun tramp-temporary-file-directory ()
-  "Return name of directory for temporary files (compat function).
-For Emacs, this is the variable `temporary-file-directory', for XEmacs
-this is the function `temp-directory'."
-  (cond ((boundp 'temporary-file-directory)
-         (symbol-value 'temporary-file-directory))
-        ((fboundp 'temp-directory)
-         (funcall (symbol-function 'temp-directory))) ;pacify byte-compiler
-        ((let ((d (getenv "TEMP"))) (and d (file-directory-p d)))
-         (file-name-as-directory (getenv "TEMP")))
-        ((let ((d (getenv "TMP"))) (and d (file-directory-p d)))
-         (file-name-as-directory (getenv "TMP")))
-        ((let ((d (getenv "TMPDIR"))) (and d (file-directory-p d)))
-         (file-name-as-directory (getenv "TMPDIR")))
-        ((file-exists-p "c:/temp") (file-name-as-directory "c:/temp"))
-        (t (message (concat "Neither `temporary-file-directory' nor "
-                            "`temp-directory' is defined -- using /tmp."))
-           (file-name-as-directory "/tmp"))))
-
-(defun tramp-read-passwd (user host prompt)
+(defun tramp-read-passwd (proc &optional prompt)
   "Read a password from user (compat function).
 Invokes `password-read' if available, `read-passwd' else."
-  (if (functionp 'password-read)
-      (let* ((key (concat (or user (user-login-name)) "@" host))
-            (password (apply #'password-read (list prompt key))))
-       (apply #'password-cache-add (list key password))
-       password)
-    (read-passwd prompt)))
-
-(defun tramp-clear-passwd (&optional user host)
-  "Clear password cache for connection related to current-buffer."
+  (let* ((key (tramp-make-tramp-file-name
+              tramp-current-method tramp-current-user
+              tramp-current-host ""))
+        (pw-prompt
+         (or prompt
+             (with-current-buffer (process-buffer proc)
+               (tramp-check-for-regexp proc tramp-password-prompt-regexp)
+               (format "%s for %s " (capitalize (match-string 1)) key)))))
+    (if (functionp 'password-read)
+       (let ((password (funcall (symbol-function 'password-read)
+                                pw-prompt key)))
+         (funcall (symbol-function 'password-cache-add) key password)
+         password)
+      (read-passwd pw-prompt))))
+
+(defun tramp-clear-passwd ()
+  "Clear password cache for connection related to current-buffer.
+If METHOD, USER or HOST is given, take then for computing the key."
   (interactive)
-  (let ((filename (or buffer-file-name list-buffers-directory "")))
-    (when (and (functionp 'password-cache-remove)
-              (or (and user host) (tramp-tramp-file-p filename)))
-      (let* ((v (when (tramp-tramp-file-p filename)
-                 (tramp-dissect-file-name filename)))
-            (luser (or user (tramp-file-name-user v) (user-login-name)))
-            (lhost (or host (tramp-file-name-host v) (system-name)))
-            (key (concat luser "@" lhost)))
-       (apply #'password-cache-remove (list key))))))
+  (when (functionp 'password-cache-remove)
+    (funcall (symbol-function 'password-cache-remove)
+            (tramp-make-tramp-file-name
+             tramp-current-method
+             tramp-current-user
+             tramp-current-host
+             ""))))
+
+;; Snarfed code from time-date.el and parse-time.el
+
+(defconst tramp-half-a-year '(241 17024)
+"Evaluated by \"(days-to-time 183)\".")
+
+(defconst tramp-parse-time-months
+  '(("jan" . 1) ("feb" . 2) ("mar" . 3)
+    ("apr" . 4) ("may" . 5) ("jun" . 6)
+    ("jul" . 7) ("aug" . 8) ("sep" . 9)
+    ("oct" . 10) ("nov" . 11) ("dec" . 12))
+  "Alist mapping month names to integers.")
+
+(defun tramp-time-less-p (t1 t2)
+  "Say whether time value T1 is less than time value T2."
+  (unless t1 (setq t1 '(0 0)))
+  (unless t2 (setq t2 '(0 0)))
+  (or (< (car t1) (car t2))
+      (and (= (car t1) (car t2))
+          (< (nth 1 t1) (nth 1 t2)))))
+
+(defun tramp-time-subtract (t1 t2)
+  "Subtract two time values.
+Return the difference in the format of a time value."
+  (unless t1 (setq t1 '(0 0)))
+  (unless t2 (setq t2 '(0 0)))
+  (let ((borrow (< (cadr t1) (cadr t2))))
+    (list (- (car t1) (car t2) (if borrow 1 0))
+         (- (+ (if borrow 65536 0) (cadr t1)) (cadr t2)))))
 
 (defun tramp-time-diff (t1 t2)
   "Return the difference between the two times, in seconds.
@@ -7412,11 +7100,7 @@ T1 and T2 are time values (as returned by `current-time' for example)."
                  (if (< (length t1) 3) (append t1 '(0)) t1)
                  (if (< (length t2) 3) (append t2 '(0)) t2)))
         (t
-         ;; snarfed from Emacs 21 time-date.el; combining
-        ;; time-to-seconds and subtract-time
-        (let ((time  (let ((borrow (< (cadr t1) (cadr t2))))
-                 (list (- (car t1) (car t2) (if borrow 1 0))
-                       (- (+ (if borrow 65536 0) (cadr t1)) (cadr t2))))))
+        (let ((time (tramp-time-subtract t1 t2)))
           (+ (* (car time) 65536.0)
              (cadr time)
              (/ (or (nth 2 time) 0) 1000000.0))))))
@@ -7425,19 +7109,18 @@ T1 and T2 are time values (as returned by `current-time' for example)."
   "Return a coding system like CODING-SYSTEM but with given EOL-TYPE.
 EOL-TYPE can be one of `dos', `unix', or `mac'."
   (cond ((fboundp 'coding-system-change-eol-conversion)
-         (apply #'coding-system-change-eol-conversion
-                (list coding-system eol-type)))
+         (funcall (symbol-function 'coding-system-change-eol-conversion)
+                 coding-system eol-type))
         ((fboundp 'subsidiary-coding-system)
-         (apply
-          #'subsidiary-coding-system
-          (list coding-system
-                (cond ((eq eol-type 'dos) 'crlf)
-                      ((eq eol-type 'unix) 'lf)
-                      ((eq eol-type 'mac) 'cr)
-                      (t
-                       (error "Unknown EOL-TYPE `%s', must be %s"
-                              eol-type
-                              "`dos', `unix', or `mac'"))))))
+         (funcall (symbol-function 'subsidiary-coding-system)
+                 coding-system
+                 (cond ((eq eol-type 'dos) 'crlf)
+                       ((eq eol-type 'unix) 'lf)
+                       ((eq eol-type 'mac) 'cr)
+                       (t
+                        (error "Unknown EOL-TYPE `%s', must be %s"
+                               eol-type
+                               "`dos', `unix', or `mac'")))))
         (t (error "Can't change EOL conversion -- is MULE missing?"))))
 
 (defun tramp-split-string (string pattern)
@@ -7455,11 +7138,9 @@ it does the right thing."
   "Specify if query is needed for process when Emacs is exited.
 If the second argument flag is non-nil, Emacs will query the user before
 exiting if process is running."
- (funcall
   (if (fboundp 'set-process-query-on-exit-flag)
-      (symbol-function 'set-process-query-on-exit-flag)
-    (symbol-function 'process-kill-without-query))
-  process flag))
+      (funcall (symbol-function 'set-process-query-on-exit-flag) process flag)
+    (funcall (symbol-function 'process-kill-without-query) process flag)))
 
 
 ;; ------------------------------------------------------------
@@ -7506,29 +7187,6 @@ Only works for Bourne-like shells."
                                      t t result)))
        result))))
 
-;; ;; EFS hooks itself into the file name handling stuff in more places
-;; ;; than just `file-name-handler-alist'. The following tells EFS to stay
-;; ;; away from tramp.el file names.
-;; ;;
-;; ;; This is needed because EFS installs (efs-dired-before-readin) into
-;; ;; 'dired-before-readin-hook'. This prevents EFS from opening an FTP
-;; ;; connection to help it's dired process. Not that I have any real
-;; ;; idea *why* this is helpful to dired.
-;; ;;
-;; ;; Anyway, this advice fixes the problem (with a sledgehammer :)
-;; ;;
-;; ;; Daniel Pittman <daniel@danann.net>
-;; ;;
-;; ;; CCC: when the other defadvice calls have disappeared, make sure
-;; ;; not to call defadvice unless it's necessary.  How do we find out whether
-;; ;; it is necessary?  (featurep 'efs) is surely the wrong way --
-;; ;; EFS might nicht be loaded yet.
-;; (defadvice efs-ftp-path (around dont-match-tramp-localname activate protect)
-;;   "Cause efs-ftp-path to fail when the path is a TRAMP localname."
-;;   (if (tramp-tramp-file-p (ad-get-arg 0))
-;;       nil
-;;     ad-do-it))
-
 ;; We currently (sometimes) use "[" and "]" in the filename format.
 ;; This means that Emacs wants to expand wildcards if
 ;; `find-file-wildcards' is non-nil, and then barfs because no
@@ -7539,19 +7197,19 @@ Only works for Bourne-like shells."
 ;; CCC: This check is now also really awful; we should search all
 ;; of the filename format, not just the prefix.
 (when (string-match "\\[" tramp-prefix-format)
-  (defadvice file-expand-wildcards (around tramp-fix activate)
+  (defadvice file-expand-wildcards
+    (around tramp-advice-file-expand-wildcards activate)
     (let ((name (ad-get-arg 0)))
       (if (tramp-tramp-file-p name)
          ;; If it's a Tramp file, dissect it and look if wildcards
          ;; need to be expanded at all.
-         (let ((v (tramp-dissect-file-name name)))
-           (if (string-match "[[*?]" (tramp-file-name-localname v))
-               (let ((res ad-do-it))
-                 (setq ad-return-value (or res (list name))))
-             (setq ad-return-value (list name))))
+         (if (string-match
+              "[[*?]"
+              (tramp-file-name-localname (tramp-dissect-file-name name)))
+             (setq ad-return-value (or ad-do-it (list name)))
+           (setq ad-return-value (list name)))
        ;; If it is not a Tramp file, just run the original function.
-       (let ((res ad-do-it))
-         (setq ad-return-value (or res (list name)))))))
+       (setq ad-return-value (or ad-do-it (list name))))))
   (add-hook 'tramp-unload-hook
            '(lambda () (ad-unadvise 'file-expand-wildcards))))
 
@@ -7579,10 +7237,6 @@ Only works for Bourne-like shells."
        (format "tramp (%s)" tramp-version) ; package name and version
        (delq nil
             `(;; Current state
-              tramp-ls-command
-              tramp-test-groks-nt
-              tramp-file-exists-command
-              tramp-current-multi-method
               tramp-current-method
               tramp-current-user
               tramp-current-host
@@ -7590,9 +7244,13 @@ Only works for Bourne-like shells."
               ;; System defaults
               tramp-auto-save-directory        ; vars to dump
               tramp-default-method
+              tramp-default-method-alist
+              tramp-default-host
+              tramp-default-proxies-alist
+              tramp-default-user
+              tramp-default-user-alist
               tramp-rsh-end-of-line
               tramp-default-password-end-of-line
-              tramp-remote-path
               tramp-login-prompt-regexp
               ;; Mask non-7bit characters
               (tramp-password-prompt-regexp . tramp-reporter-dump-variable)
@@ -7603,24 +7261,21 @@ Only works for Bourne-like shells."
               tramp-temp-name-prefix
               tramp-file-name-structure
               tramp-file-name-regexp
-              tramp-multi-file-name-structure
-              tramp-multi-file-name-hop-structure
-              tramp-multi-methods
-              tramp-multi-connection-function-alist
               tramp-methods
               tramp-end-of-output
-              tramp-coding-commands
+              tramp-local-coding-commands
+              tramp-remote-coding-commands
               tramp-actions-before-shell
               tramp-actions-copy-out-of-band
-              tramp-multi-actions
               tramp-terminal-type
               ;; Mask non-7bit characters
               (tramp-shell-prompt-pattern . tramp-reporter-dump-variable)
-              tramp-chunksize
               ,(when (boundp 'tramp-backup-directory-alist)
                  'tramp-backup-directory-alist)
               ,(when (boundp 'tramp-bkup-backup-directory-info)
                  'tramp-bkup-backup-directory-info)
+              ;; Dump cache.
+              (tramp-cache-data . tramp-reporter-dump-variable)
 
               ;; Non-tramp variables of interest
               ;; Mask non-7bit characters
@@ -7643,18 +7298,21 @@ Only works for Bourne-like shells."
        'tramp-load-report-modules      ; pre-hook
        'tramp-append-tramp-buffers     ; post-hook
        "\
-Enter your bug report in this message, including as much detail as you
-possibly can about the problem, what you did to cause it and what the
-local and remote machines are.
+Enter your bug report in this message, including as much detail
+as you possibly can about the problem, what you did to cause it
+and what the local and remote machines are.
+
+If you can give a simple set of instructions to make this bug
+happen reliably, please include those.  Thank you for helping
+kill bugs in Tramp.
+
+Another useful thing to do is to put
 
-If you can give a simple set of instructions to make this bug happen
-reliably, please include those.  Thank you for helping kill bugs in
-TRAMP.
+  (setq tramp-verbose 8)
 
-Another useful thing to do is to put (setq tramp-debug-buffer t) in
-the ~/.emacs file and to repeat the bug.  Then, include the contents
-of the *tramp/foo* buffer and the *debug tramp/foo* buffer in your bug
-report.
+in the ~/.emacs file and to repeat the bug.  Then, include the
+contents of the *tramp/foo* buffer and the *debug tramp/foo*
+buffer in your bug report.
 
 --bug report follows this line--
 "))))
@@ -7666,29 +7324,32 @@ Used for non-7bit chars in strings."
         (val (with-current-buffer reporter-eval-buffer
                (symbol-value varsym))))
 
-    ;; There are characters to be masked.
-    (when (and (boundp 'mm-7bit-chars)
-              (string-match
-               (concat "[^" (symbol-value 'mm-7bit-chars) "]") val))
-      (with-current-buffer reporter-eval-buffer
-       (set varsym (concat "(base64-decode-string \""
-                           (base64-encode-string val)
-                           "\")"))))
+    (if (hash-table-p val)
+       ;; Pretty print the cache.
+       (set varsym (read (format "(%s)" (tramp-cache-print val))))
+      ;; There are characters to be masked.
+      (when (and (boundp 'mm-7bit-chars)
+                (string-match
+                 (concat "[^" (symbol-value 'mm-7bit-chars) "]") val))
+       (with-current-buffer reporter-eval-buffer
+         (set varsym (format "(base64-decode-string \"%s\""
+                             (base64-encode-string val))))))
 
     ;; Dump variable.
     (funcall (symbol-function 'reporter-dump-variable) varsym mailbuf)
 
-    ;; Remove string quotation.
-    (forward-line -1)
-    (when (looking-at
-          (concat "\\(^.*\\)" "\""                       ;; \1 "
-                  "\\((base64-decode-string \\)" "\\\\"  ;; \2 \
-                  "\\(\".*\\)" "\\\\"                    ;; \3 \
-                  "\\(\")\\)" "\"$"))                    ;; \4 "
-      (replace-match "\\1\\2\\3\\4")
-      (beginning-of-line)
-      (insert " ;; variable encoded due to non-printable characters\n"))
-    (forward-line 1)
+    (unless (hash-table-p val)
+      ;; Remove string quotation.
+      (forward-line -1)
+      (when (looking-at
+            (concat "\\(^.*\\)" "\""                       ;; \1 "
+                    "\\((base64-decode-string \\)" "\\\\"  ;; \2 \
+                    "\\(\".*\\)" "\\\\"                    ;; \3 \
+                    "\\(\")\\)" "\"$"))                    ;; \4 "
+       (replace-match "\\1\\2\\3\\4")
+       (beginning-of-line)
+       (insert " ;; variable encoded due to non-printable characters\n"))
+      (forward-line 1))
 
     ;; Reset VARSYM to old value.
     (with-current-buffer reporter-eval-buffer
@@ -7710,8 +7371,39 @@ Used for non-7bit chars in strings."
     (funcall (symbol-function 'mml-mode) t)))
 
 (defun tramp-append-tramp-buffers ()
-  "Append Tramp buffers into the bug report."
+  "Append Tramp buffers and buffer local variables into the bug report."
+
+  (goto-char (point-max))
 
+  ;; Dump buffer local variables.
+  (dolist (buffer
+          (delq nil
+                (mapcar
+                 '(lambda (b)
+                    (when (string-match "\\*tramp/" (buffer-name b)) b))
+                 (buffer-list))))
+    (let ((reporter-eval-buffer buffer)
+         (buffer-name (buffer-name buffer))
+         (elbuf (get-buffer-create " *tmp-reporter-buffer*")))
+      (with-current-buffer elbuf
+       (emacs-lisp-mode)
+       (erase-buffer)
+       (insert "\n(setq\n")
+       (lisp-indent-line)
+       (funcall (symbol-function 'reporter-dump-variable)
+                'buffer-name (current-buffer))
+       (dolist (varsym-or-cons-cell (buffer-local-variables buffer))
+         (let ((varsym (or (car-safe varsym-or-cons-cell)
+                           varsym-or-cons-cell)))
+           (when (string-match "tramp" (symbol-name varsym))
+             (funcall
+              (symbol-function 'reporter-dump-variable)
+              varsym (current-buffer)))))
+       (lisp-indent-line)
+       (insert ")\n"))
+      (insert-buffer-substring elbuf)))
+
+  ;; Append buffers only when we are in message mode.
   (when (and
         (eq major-mode 'message-mode)
         (boundp 'mml-mode)
@@ -7732,24 +7424,27 @@ Used for non-7bit chars in strings."
        (setq buffer-read-only nil)
        (goto-char (point-min))
        (while (not (eobp))
-         (if (re-search-forward tramp-buf-regexp (tramp-point-at-eol) t)
+         (if (re-search-forward
+              tramp-buf-regexp (tramp-compat-line-end-position) t)
              (forward-line 1)
            (forward-line 0)
            (let ((start (point)))
              (forward-line 1)
              (kill-region start (point)))))
        (insert "
-The buffer(s) above will be appended to this message.  If you don't want
-to append a buffer because it contains sensitive data, or because the buffer
-is too large, you should delete the respective buffer.  The buffer(s) will
-contain user and host names.  Passwords will never be included there.")
+The buffer(s) above will be appended to this message.  If you
+don't want to append a buffer because it contains sensitive data,
+or because the buffer is too large, you should delete the
+respective buffer.  The buffer(s) will contain user and host
+names.  Passwords will never be included there.")
 
-       (when (and tramp-debug-buffer (> tramp-verbose 9))
+       (when (>= tramp-verbose 6)
          (insert "\n\n")
          (let ((start (point)))
            (insert "\
-Please note that you have set `tramp-verbose' to a value greater than 9.
-Therefore, the contents of files might be included in the debug buffer(s).")
+Please note that you have set `tramp-verbose' to a value of at
+least 6.  Therefore, the contents of files might be included in
+the debug buffer(s).")
            (add-text-properties start (point) (list 'face 'italic))))
 
        (set-buffer-modified-p nil)
@@ -7762,7 +7457,10 @@ Therefore, the contents of files might be included in the debug buffer(s).")
              (kill-buffer nil)
              (switch-to-buffer curbuf)
              (goto-char (point-max))
-             (insert "\n\n")
+             (insert "\n\
+This is a special notion of the `gnus/message' package.  If you
+use another mail agent (by copying the contents of this buffer)
+please ensure that the buffers are attached to your email.\n\n")
              (dolist (buffer buffer-list)
                (funcall (symbol-function 'mml-insert-empty-tag)
                         'part 'type "text/plain" 'encoding "base64"
@@ -7793,25 +7491,13 @@ Therefore, the contents of files might be included in the debug buffer(s).")
   ;; ange-ftp settings must be enabled.
   (when (functionp 'tramp-ftp-enable-ange-ftp)
     (funcall (symbol-function 'tramp-ftp-enable-ange-ftp)))
-  ;; `tramp-util' unloads also `tramp'.
-  (condition-case nil ;; maybe its not loaded yet.
-      (unload-feature (if (featurep 'tramp-util) 'tramp-util 'tramp) 'force)
+  ;; Maybe its not loaded yet.
+  (condition-case nil
+      (unload-feature 'tramp 'force)
     (error nil)))
 
 (provide 'tramp)
 
-;; Make sure that we get integration with the VC package.
-;; When it is loaded, we need to pull in the integration module.
-;; This must come after (provide 'tramp) because tramp-vc.el
-;; requires tramp.
-(eval-after-load "vc"
-  '(progn
-     (require 'tramp-vc)
-     (add-hook 'tramp-unload-hook
-              '(lambda ()
-                 (when (featurep 'tramp-vc)
-                   (unload-feature 'tramp-vc 'force))))))
-
 ;;; TODO:
 
 ;; * Allow putting passwords in the filename.
@@ -7822,6 +7508,12 @@ Therefore, the contents of files might be included in the debug buffer(s).")
 ;;   Another approach is to read a netrc file like ~/.authinfo
 ;;   from Gnus.
 ;; * Handle nonlocal exits such as C-g.
+;; * But it would probably be better to use with-local-quit at the
+;;   place where it's actually needed: around any potentially
+;;   indefinitely blocking piece of code.  In this case it would be
+;;   within Tramp around one of its calls to accept-process-output (or
+;;   around one of the loops that calls accept-process-output)
+;;   (Stefan Monnier).
 ;; * Autodetect if remote `ls' groks the "--dired" switch.
 ;; * Add fallback for inline encodings.  This should be used
 ;;   if the remote end doesn't support mimencode or a similar program.
@@ -7835,9 +7527,6 @@ Therefore, the contents of files might be included in the debug buffer(s).")
 ;;   two commands to write a null byte:
 ;;   dd if=/dev/zero bs=1 count=1
 ;;   echo | tr '\n' '\000'
-;; * Separate local `tramp-coding-commands' from remote ones.  Connect
-;;   the two via a format which can be `uu' or `b64'.  Then we can search
-;;   for the right local commands and the right remote commands separately.
 ;; * Cooperate with PCL-CVS.  It uses start-process, which doesn't
 ;;   work for remote files.
 ;; * Rewrite `tramp-shell-quote-argument' to abstain from using
@@ -7857,68 +7546,75 @@ Therefore, the contents of files might be included in the debug buffer(s).")
 ;; * Don't use globbing for directories with many files, as this is
 ;;   likely to produce long command lines, and some shells choke on
 ;;   long command lines.
-;; * Find out about the new auto-save mechanism in Emacs 21 and
-;;   do the right thing.
 ;; * `vc-directory' does not work.  It never displays any files, even
 ;;   if it does show files when run locally.
 ;; * Allow correction of passwords, if the remote end allows this.
 ;;   (Mark Hershberger)
 ;; * How to deal with MULE in `insert-file-contents' and `write-region'?
-;; * Do asynchronous `shell-command's.
 ;; * Grok `append' parameter for `write-region'.
 ;; * Test remote ksh or bash for tilde expansion in `tramp-find-shell'?
 ;; * abbreviate-file-name
-;; * grok ~ in tramp-remote-path  (Henrik Holm <henrikh@tele.ntnu.no>)
-;; * Also allow to omit user names when doing multi-hop.  Not sure yet
-;;   what the user names should default to, though.
 ;; * better error checking.  At least whenever we see something
 ;;   strange when doing zerop, we should kill the process and start
 ;;   again.  (Greg Stark)
-;; * Add caching for filename completion.  (Greg Stark)
-;;   Of course, this has issues with usability (stale cache bites)
-;;      -- <daniel@danann.net>
 ;; * Provide a local cache of old versions of remote files for the rsync
 ;;   transfer method to use.  (Greg Stark)
 ;; * Remove unneeded parameters from methods.
 ;; * Invoke rsync once for copying a whole directory hierarchy.
-;;   (Francesco Potort\e,Al\e(B)
-;; * Should we set PATH ourselves or should we rely on the remote end
-;;   to do it?
-;; * Make it work for XEmacs 20, which is missing `with-timeout'.
+;;   (Francesco Potortì)
 ;; * Make it work for different encodings, and for different file name
 ;;   encodings, too.  (Daniel Pittman)
-;; * Change applicable functions to pass a struct tramp-file-name rather
-;;   than the individual items MULTI-METHOD, METHOD, USER, HOST, LOCALNAME.
-;; * Implement asynchronous shell commands.
 ;; * Clean up unused *tramp/foo* buffers after a while.  (Pete Forman)
 ;; * Progress reports while copying files.  (Michael Kifer)
-;; * `Smart' connection method that uses inline for small and out of
-;;   band for large files.  (Michael Kifer)
 ;; * Don't search for perl5 and perl.  Instead, only search for perl and
 ;;   then look if it's the right version (with `perl -v').
 ;; * When editing a remote CVS controlled file as a different user, VC
 ;;   gets confused about the file locking status.  Try to find out why
 ;;   the workaround doesn't work.
-;; * Change `copy-file' to grok the case where the filename handler
-;;   for the source and the target file are different.  Right now,
-;;   it looks at the source file and then calls that handler, if
-;;   there is one.  But since ange-ftp, for instance, does not know
-;;   about Tramp, it does not do the right thing if the target file
-;;   name is a Tramp name.
 ;; * Username and hostname completion.
-;; ** If `partial-completion-mode' isn't loaded, "/foo:bla" tries to
-;;    connect to host "blabla" already if that host is unique. No idea
-;;    how to suppress. Maybe not an essential problem.
 ;; ** Try to avoid usage of `last-input-event' in `tramp-completion-mode-p'.
-;; ** Extend `tramp-get-completion-su' for NIS and shadow passwords.
 ;; ** Unify `tramp-parse-{rhosts,shosts,sconfig,hosts,passwd,netrc}'.
 ;;    Code is nearly identical.
-;; ** Decide whiche files to take for searching user/host names depending on
-;;    operating system (windows-nt) in `tramp-completion-function-alist'.
-;; ** Enhance variables for debug.
-;; ** Implement "/multi:" completion.
-;; ** Add a learning mode for completion. Make results persistent.
 ;; * Allow out-of-band methods as _last_ multi-hop.
+;; * WIBNI if we had a command "trampclient"?  If I was editing in
+;;   some shell with root priviledges, it would be nice if I could
+;;   just call
+;;     trampclient filename.c
+;;   as an editor, and the _current_ shell would connect to an Emacs
+;;   server and would be used in an existing non-priviledged Emacs
+;;   session for doing the editing in question.
+;;   That way, I need not tell Emacs my password again and be afraid
+;;   that it makes it into core dumps or other ugly stuff (I had Emacs
+;;   once display a just typed password in the context of a keyboard
+;;   sequence prompt for a question immediately following in a shell
+;;   script run within Emacs -- nasty).
+;;   And if I have some ssh session running to a different computer,
+;;   having the possibility of passing a local file there to a local
+;;   Emacs session (in case I can arrange for a connection back) would
+;;   be nice.
+;;   Likely the corresponding tramp server should not allow the
+;;   equivalent of the emacsclient -eval option in order to make this
+;;   reasonably unproblematic.  And maybe trampclient should have some
+;;   way of passing credentials, like by using an SSL socket or
+;;   something. (David Kastrup)
+;; * Could Tramp reasonably look for a prompt after ^M rather than
+;;   only after ^J ? (Stefan Monnier)
+;; * WIBNI there was an interactive command prompting for tramp
+;;   method, hostname, username and filename and translates the user
+;;   input into the correct filename syntax (depending on the Emacs
+;;   flavor) (Reiner Steib)
+;; * Let the user edit the connection properties interactively.
+;;   Something like `gnus-server-edit-server' in Gnus' *Server* buffer.
+;; * Reconnect directly to a compliant shell without first going
+;;   through the user's default shell. (Pete Forman)
+;; * It's just that when I come to Customize `tramp-default-user-alist'
+;;   I'm presented with a mismatch and raw lisp for a value.  It is my
+;;   understanding that a variable declared with defcustom is a User
+;;   Option and should not be modified by the code.  add-to-list is
+;;   called in several places. One way to handle that is to have a new
+;;   ordinary variable that gets its initial value from
+;;   tramp-default-user-alist and then is added to. (Pete Forman)
+;; * Make `tramp-default-user' obsolete.
 
 ;; Functions for file-name-handler-alist:
 ;; diff-latest-backup-file -- in diff.el
index 5734b5c9138e4c28f570fb6ced3daabaa64e1dc6..a83d81966a8adadeb9ca3b004b5cfc844304b800 100644 (file)
@@ -1,10 +1,10 @@
-;;; -*- mode: Emacs-Lisp; coding: iso-2022-7bit; -*-
 ;;; trampver.el --- Transparent Remote Access, Multiple Protocol
+;;; -*- mode: Emacs-Lisp; coding: utf-8; -*-
 ;;; lisp/trampver.el.  Generated from trampver.el.in by configure.
 
 ;; Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 
-;; Author: Kai Gro\e,A_\e(Bjohann <kai.grossjohann@gmx.net>
+;; Author: Kai Großjohann <kai.grossjohann@gmx.net>
 ;; Keywords: comm, processes
 
 ;; This file is part of GNU Emacs.
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, see
+;; <http://www.gnu.org/licenses/>.
 
 ;;; Code:
 
 ;; In the Tramp CVS repository, the version numer and the bug report address
 ;; are auto-frobbed from configure.ac, so you should edit that file and run
-;; "autoconf && ./configure" to change them.
+;; "autoconf && ./configure" to change them.  (X)Emacs version check is defined
+;; in macro AC_EMACS_INFO of aclocal.m4; should be changed only there.
 
-(defconst tramp-version "2.0.57-pre"
+(defconst tramp-version "2.1.11"
   "This version of Tramp.")
 
 (defconst tramp-bug-report-address "tramp-devel@gnu.org"
   "Email address to send bug reports to.")
 
+;; Check for (X)Emacs version.
+(let ((x (if (or (< emacs-major-version 21)    (and (featurep 'xemacs)      (< emacs-minor-version 4)))    (format "Tramp 2.1.11 is not fit for %s"        (when (string-match "^.*$" (emacs-version))       (match-string 0 (emacs-version))))    "ok")))
+  (unless (string-match "\\`ok\\'" x) (error x)))
+
 (provide 'trampver)
 
 ;;; arch-tag: 443576ca-f8f1-4bb1-addc-5c70861e93b1
index 77aa76095116dec6c7497cc3e53d23f1778bff12..fea28579b4d48435d9e9208063f76d4eecbf1e1d 100644 (file)
     ("Yahoo" .
      [simple-query "www.yahoo.com" "search.yahoo.com/search?p=" ""])
     ("Yahoo: Reference" . "www.yahoo.com/Reference/")
-
     ("Wikipedia" .
      [simple-query "wikipedia.org" "wikipedia.org/wiki/" ""])
 
@@ -452,14 +451,12 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
 
 (defun webjump-url-encode (str)
   (mapconcat '(lambda (c)
-               (cond ((= c 32) "+")
-                     ((or (and (>= c ?a) (<= c ?z))
-                          (and (>= c ?A) (<= c ?Z))
-                          (and (>= c ?0) (<= c ?9)))
-                      (char-to-string c))
-                     (t (upcase (format "%%%02x" c)))))
-            str
-            ""))
+                (let ((s (char-to-string c)))
+                  (cond ((string= s " ") "+")
+                        ((string-match "[a-zA-Z_.-/]" s) s)
+                        (t (upcase (format "%%%02x" c))))))
+             (encode-coding-string str 'utf-8)
+             ""))
 
 (defun webjump-url-fix (url)
   (if (webjump-null-or-blank-string-p url)
index 9c6be255023b43f8f2c9bf94dcdad9b1274c655f..6b0589da43d45e2be638851f00f74c9b7c5d0068 100644 (file)
@@ -492,16 +492,24 @@ Point is assumed to be just at the end of a comment."
         (goto-char (point-min))
         (re-search-forward (concat comment-end-skip "\\'") nil t))
       (goto-char (match-beginning 0)))
-     ;; comment-end-skip not found.  Maybe we're at EOB which implicitly
-     ;; closes the comment.
-     ((eobp) (skip-syntax-backward " "))
-     (t
-      ;; else comment-end-skip was not found probably because it was not
-      ;; set right.  Since \\s> should catch the single-char case, we'll
-      ;; blindly assume we're at the end of a two-char comment-end.
+     ;; comment-end-skip not found probably because it was not set
+     ;; right.  Since \\s> should catch the single-char case, let's
+     ;; check that we're looking at a two-char comment ender.
+     ((not (or (<= (- (point-max) (line-beginning-position)) 1)
+               (zerop (logand (car (syntax-after (- (point) 1)))
+                              ;; Here we take advantage of the fact that
+                              ;; the syntax class " " is encoded to 0,
+                              ;; so "  4" gives us just the 4 bit.
+                              (car (string-to-syntax "  4"))))
+               (zerop (logand (car (syntax-after (- (point) 2)))
+                              (car (string-to-syntax "  3"))))))
       (backward-char 2)
       (skip-chars-backward (string (char-after)))
-      (skip-syntax-backward " ")))))
+      (skip-syntax-backward " "))
+     ;; No clue what's going on: maybe we're really not right after the
+     ;; end of a comment.  Maybe we're at the "end" because of EOB rather
+     ;; than because of a marker.
+     (t (skip-syntax-backward " ")))))
 
 ;;;;
 ;;;; Commands
@@ -931,9 +939,14 @@ indentation to be kept as it was before narrowing."
                   (delete-char n)
                   (setq ,bindent (- ,bindent n)))))))))))
 
-(defun comment-add (arg)
+;; Compute the number of extra semicolons to add to the comment starter
+;; in Lisp mode, extra stars in C mode, etc.
+;; If ARG is non-nil, just follow ARG.
+;; If the comment-starter is multi-char, just follow ARG.
+;; Otherwise obey comment-add, and double it if EXTRA is non-nil.
+(defun comment-add (arg &optional extra)
   (if (and (null arg) (= (string-match "[ \t]*\\'" comment-start) 1))
-      comment-add
+      (* comment-add (if extra 2 1))
     (1- (prefix-numeric-value arg))))
 
 (defun comment-region-internal (beg end cs ce
@@ -1073,7 +1086,10 @@ The strings used as comment starts are built from
      ((consp arg) (uncomment-region beg end))
      ((< numarg 0) (uncomment-region beg end (- numarg)))
      (t
-      (setq numarg (comment-add arg))
+      ;; Add an extra semicolon in Lisp and similar modes.
+      ;; If STYLE doesn't specify indenting the comments,
+      ;; then double the value of `comment-add'.
+      (setq numarg (comment-add arg (null (nth 3 style))))
       (comment-region-internal
        beg end
        (let ((s (comment-padright comment-start numarg)))
index c547b4744b520a66fa23832a7114b130b604af94..bbb7fa6f97700d46fce7fa0e06e30337e87fac0e 100644 (file)
@@ -88,8 +88,9 @@ n   to cancel--don't try the command, and it remains disabled.
 SPC to try the command just this once, but leave it disabled.
 !   to try it, and enable all disabled commands for this session only.")
        (save-excursion
-       (set-buffer standard-output)
-       (help-mode)))
+        (set-buffer standard-output)
+        (help-mode)))
+     (fit-window-to-buffer (get-buffer-window "*Disabled Command*"))
      (message "Type y, n, ! or SPC (the space bar): ")
      (let ((cursor-in-echo-area t))
        (while (progn (setq char (read-event))
index c29d4fad3ddefb5131d10a60ae76992daaf2ae49..be0b5d622a26bf1d9d44260972145151c0548f54 100644 (file)
@@ -665,9 +665,9 @@ The optional 5th arg, PROP is a property to set instead of 'hilit."
   (or quietly hilit-quietly (message "Unhighlighting"))
   (let ((lstart 0))
     (while (and start (> start lstart) (< start end))
-      (mapcar (function (lambda (ovr)
-                         (and (overlay-get ovr 'hilit) (delete-overlay ovr))))
-             (overlays-at start))
+      (mapc (function (lambda (ovr)
+                       (and (overlay-get ovr 'hilit) (delete-overlay ovr))))
+           (overlays-at start))
       (setq lstart start start (next-overlay-change start))))
   (or quietly hilit-quietly (message "Done unhighlighting")))
 
@@ -975,24 +975,24 @@ the entire buffer is forced."
        (progn
 
          ;; BUFFER highlights...
-         (mapcar (lambda (hook)
-                   (if hilit-mode
-                       (add-hook hook 'hilit-rehighlight-buffer-quietly)
-                     (remove-hook hook 'hilit-rehighlight-buffer-quietly)))
-                 '(
-                   Info-selection-hook
-
-                   ;; runs too early                vm-summary-mode-hooks
-                   vm-summary-pointer-hook
-                   vm-preview-message-hook
-                   vm-show-message-hook
-
-                   rmail-show-message-hook
-                   mail-setup-hook
-                   mh-show-mode-hook
-
-                   dired-after-readin-hook
-                   ))
+         (mapc (lambda (hook)
+                 (if hilit-mode
+                     (add-hook hook 'hilit-rehighlight-buffer-quietly)
+                   (remove-hook hook 'hilit-rehighlight-buffer-quietly)))
+               '(
+                 Info-selection-hook
+
+                 ;; runs too early                  vm-summary-mode-hooks
+                 vm-summary-pointer-hook
+                 vm-preview-message-hook
+                 vm-show-message-hook
+
+                 rmail-show-message-hook
+                 mail-setup-hook
+                 mh-show-mode-hook
+
+                 dired-after-readin-hook
+                 ))
          )
       (error (message "Error loading highlight hooks: %s" c)
             (ding) (sit-for 1)))))
@@ -1023,11 +1023,11 @@ See the variable hilit-mode-enable-list.
 
 Takes optional arguments PARSE-FN and CASE-FOLD."
   ;; change pattern
-  (mapcar (function (lambda (p)
-                     (and (stringp (car p))
-                          (null (nth 1 p))
-                          (setcar (cdr p) 0))))
-         patterns)
+  (mapc (function (lambda (p)
+                   (and (stringp (car p))
+                        (null (nth 1 p))
+                        (setcar (cdr p) 0))))
+       patterns)
   (setq patterns (cons case-fold patterns))
 
   (or (consp modelist) (setq modelist (list modelist)))
index 2f95d5011c1ea14ce1e7e25110dce1d5653f1699..1b6a5d239bda85ce363c657452a56710fe6c5693 100644 (file)
@@ -385,7 +385,6 @@ relative X divided by window width."
   )
 
 (defmenu emacs-quit-menu
-  ("Suspend" suspend-emacstool)
   ("Quit" save-buffers-kill-emacs))
 
 (defmenu emacs-menu
index 92e521afc9f3bc6732ea31406a9663d963b30646..a1ed3d44f7f35f8aa75a506f2717c432f861c6ca 100644 (file)
@@ -187,12 +187,12 @@ in the file it applies to."
   :group 'outlines)
 
 (defface outline-4
-  '((t :inherit font-lock-builtin-face))
+  '((t :inherit font-lock-comment-face))
   "Level 4."
   :group 'outlines)
 
 (defface outline-5
-  '((t :inherit font-lock-comment-face))
+  '((t :inherit font-lock-type-face))
   "Level 5."
   :group 'outlines)
 
@@ -202,7 +202,7 @@ in the file it applies to."
   :group 'outlines)
 
 (defface outline-7
-  '((t :inherit font-lock-type-face))
+  '((t :inherit font-lock-builtin-face))
   "Level 7."
   :group 'outlines)
 
@@ -215,8 +215,8 @@ in the file it applies to."
   [outline-1 outline-2 outline-3 outline-4
    outline-5 outline-6 outline-7 outline-8])
 
-(defvar outline-font-lock-levels nil)
-(make-variable-buffer-local 'outline-font-lock-levels)
+;; (defvar outline-font-lock-levels nil)
+;; (make-variable-buffer-local 'outline-font-lock-levels)
 
 (defun outline-font-lock-face ()
   ;; (save-excursion
@@ -241,9 +241,7 @@ in the file it applies to."
   (save-excursion
     (goto-char (match-beginning 0))
     (looking-at outline-regexp)
-    (condition-case nil
-       (aref outline-font-lock-faces (1- (funcall outline-level)))
-      (error font-lock-warning-face))))
+    (aref outline-font-lock-faces (% (1- (funcall outline-level)) (length outline-font-lock-faces)))))
 
 (defvar outline-view-change-hook nil
   "Normal hook to be run after outline visibility changes.")
index 206fb7bd3daaa609f328139791fcbbc4d1c7d081..79b269870b14bd2ec9db4acc655d551711c15d3f 100644 (file)
@@ -711,6 +711,7 @@ If PREDICATE is non-nil, it will also be used to refine the match
 If no directory information can be extracted from the completed
 component, `default-directory' is used as the basis for completion."
   (let* ((name (substitute-env-vars pcomplete-stub))
+         (completion-ignore-case pcomplete-ignore-case)
         (default-directory (expand-file-name
                             (or (file-name-directory name)
                                 default-directory)))
@@ -934,7 +935,7 @@ generate the completions list.  This means that the hook
   (if pcomplete-last-window-config
       (let* ((cbuf (get-buffer "*Completions*"))
             (cwin (and cbuf (get-buffer-window cbuf))))
-       (when (and cwin (window-live-p cwin))
+       (when (window-live-p cwin)
          (bury-buffer cbuf)
          (set-window-configuration pcomplete-last-window-config))))
   (setq pcomplete-last-window-config nil
index d533796ee50b42efd3ca09b37714bf6fe6becd13..a0bac0b287133307626c737c07297d53621c2fb5 100644 (file)
     (list* '("BASE") '("HEAD")
           (when marked
             (with-temp-buffer
-              (call-process cvs-program
+              (process-file cvs-program
                             nil        ;no input
                             t          ;output to current-buffer
                             nil        ;don't update display while running
@@ -564,7 +564,7 @@ If non-nil, NEW means to create a new buffer no matter what."
               (process
                ;; the process will be run in the selected dir
                (let ((default-directory (cvs-expand-dir-name dir)))
-                 (apply 'start-process "cvs" procbuf cvs-program args))))
+                 (apply 'start-file-process "cvs" procbuf cvs-program args))))
          ;; setup the process.
          (process-put process 'cvs-buffer cvs-buffer)
          (with-current-buffer cvs-buffer (cvs-update-header msg 'add))
@@ -635,6 +635,9 @@ If non-nil, NEW means to create a new buffer no matter what."
           (if (not (string-match "." str)) (setq str "\n"))
           (setq str (concat "-- Running " cmd " ...\n" str)))
       (if (not (string-match
+                ;; FIXME:  If `cmd' is large, this will bump into the
+                ;; compiled-regexp size limit.  We could drop the "^" anchor
+                ;; and use search-forward to circumvent the problem.
                (concat "^-- Running " (regexp-quote cmd) " \\.\\.\\.\n") str))
          (error "Internal PCL-CVS error while removing message")
        (setq str (replace-match "" t t str))
@@ -1733,7 +1736,7 @@ Signal an error if there is no backup file."
          ;; problem when stdout and stderr are the same.
          (let ((res
                  (let ((coding-system-for-read 'binary))
-                   (apply 'call-process cvs-program nil '(t nil) nil
+                   (apply 'process-file cvs-program nil '(t nil) nil
                           "-q" "update" "-p"
                           ;; If `rev' is HEAD, don't pass it at all:
                           ;; the default behavior is to get the head
@@ -2003,7 +2006,7 @@ to hear about anymore."
 
 (defun cvs-find-modif (fi)
   (with-temp-buffer
-    (call-process cvs-program nil (current-buffer) nil
+    (process-file cvs-program nil (current-buffer) nil
                  "-f" "diff" (cvs-fileinfo->file fi))
     (goto-char (point-min))
     (if (re-search-forward "^\\([0-9]+\\)" nil t)
@@ -2265,7 +2268,7 @@ With prefix argument, prompt for cvs flags."
                        program (split-string-and-unquote args)))
 
        ;; FIXME: return the exit status?
-       (apply 'call-process program nil t t args)
+       (apply 'process-file program nil t t args)
        (goto-char (point-max))))))
 
 ;; FIXME: make this run in the background ala cvs-run-process...
@@ -2363,7 +2366,7 @@ The exact behavior is determined also by `cvs-dired-use-hook'."
 
 (add-hook 'vc-post-command-functions 'cvs-vc-command-advice)
 
-(defun cvs-vc-command-advice (command file flags)
+(defun cvs-vc-command-advice (command files flags)
   (when (and (equal command "cvs")
             (progn
               (while (and (stringp (car flags))
@@ -2392,9 +2395,10 @@ The exact behavior is determined also by `cvs-dired-use-hook'."
              (when (and (equal (car flags) "add")
                         (goto-char (point-min))
                         (looking-at ".*to add this file permanently\n\\'"))
-               (insert "cvs add: scheduling file `"
-                       (file-name-nondirectory file)
-                       "' for addition\n"))
+                (dolist (file (if (listp files) files (list files)))
+                  (insert "cvs add: scheduling file `"
+                          (file-name-nondirectory file)
+                          "' for addition\n")))
              ;; VC never (?) does `cvs -n update' so dcd=nil
              ;; should probably always be the right choice.
              (cvs-parse-process nil subdir))))))))
@@ -2407,7 +2411,7 @@ The exact behavior is determined also by `cvs-dired-use-hook'."
   (let* ((file (expand-file-name buffer-file-name))
         (version (and (fboundp 'vc-backend)
                       (eq (vc-backend file) 'CVS)
-                      (vc-workfile-version file))))
+                      (vc-working-revision file))))
     (when version
       (save-excursion
        (dolist (cvs-buf (buffer-list))
diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el
new file mode 100644 (file)
index 0000000..5f8709d
--- /dev/null
@@ -0,0 +1,1459 @@
+;;; bubbles.el --- Puzzle game for Emacs.
+
+;; Copyright (C) 2007 Free Software Foundation, Inc.
+
+;; Author:      Ulf Jasper <ulf.jasper@web.de>
+;; URL:         http://ulf.epplejasper.de/
+;; Created:     5. Feb. 2007
+;; Keywords:    games
+
+;; 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, 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; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Bubbles is a puzzle game.  Its goal is to remove as many bubbles as
+;; possible in as few moves as possible.
+
+;; Bubbles is an implementation of the "Same Game", similar to "Same
+;; GNOME" and many others, see <http://en.wikipedia.org/wiki/SameGame>.
+
+;; Installation
+;; ------------
+
+;; Add the following lines to your Emacs startup file (`~/.emacs').
+;; (add-to-list 'load-path "/path/to/bubbles/")
+;; (autoload 'bubbles "bubbles" "Play Bubbles" t)
+
+;; ======================================================================
+
+;;; History:
+
+;; 0.5 (2007-09-14)
+;;     - Minor bugfixes.
+
+;; 0.4 (2007-08-27)
+;;     - Allow for undoing last move.
+;;     - Bonus for removing all bubbles.
+;;     - Speed improvements.
+;;     - Animation enhancements.
+;;     - Added `bubbles-mode-hook'.
+;;     - Fixes: Don't move point.
+;;     - New URL.
+
+;; 0.3 (2007-03-11)
+;;     - Renamed shift modes and thus names of score files. All
+;;       highscores are lost, unless you rename the score files from
+;;       bubbles-shift-... to bubbles-...!
+;;     - Bugfixes: Check for successful image creation.
+;;                 Disable menus and counter when game is over.
+;;     Tested with GNU Emacs 22.0.93
+
+;; 0.2 (2007-02-24)
+;;     - Introduced game themes.
+;;     - Introduced graphics themes (changeable while playing).
+;;     - Added menu.
+;;     - Customization: grid size, colors, chars, shift mode.
+;;     - More keybindings.
+;;     - Changed shift direction from to-right to to-left.
+;;     - Bugfixes: Don't remove single-bubble regions;
+;;                 Animation glitches fixed.
+;;     Tested with GNU Emacs 22.0.93 and 21.4.1.
+
+;; 0.1 (2007-02-11)
+;;     Initial release. Tested with GNU Emacs 22.0.93 and 21.4.1.
+
+;; ======================================================================
+
+;;; Code:
+
+(defconst bubbles-version "0.5" "Version number of bubbles.el.")
+
+(require 'gamegrid)
+(require 'cl)
+
+;; User options
+
+;; Careful with that axe, Eugene! Order does matter in the custom
+;; section below.
+
+(defcustom bubbles-game-theme
+  'easy
+  "Overall game theme.
+The overall game theme specifies a grid size, a set of colors,
+and a shift mode."
+  :type '(radio (const :tag "Easy" easy)
+                (const :tag "Medium" medium)
+                (const :tag "Difficult" difficult)
+                (const :tag "Hard" hard)
+                (const :tag "User defined" user-defined))
+  :group 'bubbles)
+
+(defun bubbles-set-game-easy ()
+  "Set game theme to 'easy'."
+  (interactive)
+  (setq bubbles-game-theme 'easy)
+  (bubbles))
+
+(defun bubbles-set-game-medium ()
+  "Set game theme to 'medium'."
+  (interactive)
+  (setq bubbles-game-theme 'medium)
+  (bubbles))
+
+(defun bubbles-set-game-difficult ()
+  "Set game theme to 'difficult'."
+  (interactive)
+  (setq bubbles-game-theme 'difficult)
+  (bubbles))
+
+(defun bubbles-set-game-hard ()
+  "Set game theme to 'hard'."
+  (interactive)
+  (setq bubbles-game-theme 'hard)
+  (bubbles))
+
+(defun bubbles-set-game-userdefined ()
+  "Set game theme to 'user-defined'."
+  (interactive)
+  (setq bubbles-game-theme 'user-defined)
+  (bubbles))
+
+(defgroup bubbles nil
+  "Bubbles, a puzzle game."
+  :group 'games)
+
+(defcustom bubbles-graphics-theme
+  'circles
+  "Graphics theme.
+It is safe to choose a graphical theme.  If Emacs cannot display
+images the `ascii' theme will be used."
+  :type '(radio (const :tag "Circles" circles)
+                (const :tag "Squares" squares)
+                (const :tag "Diamonds" diamonds)
+                (const :tag "Balls" balls)
+                (const :tag "Emacs" emacs)
+                (const :tag "ASCII (no images)" ascii))
+  :group 'bubbles)
+
+(defconst bubbles--grid-small '(10 . 10)
+  "Predefined small bubbles grid.")
+
+(defconst bubbles--grid-medium '(15 . 10)
+  "Predefined medium bubbles grid.")
+
+(defconst bubbles--grid-large '(20 . 15)
+  "Predefined large bubbles grid.")
+
+(defconst bubbles--grid-huge '(30 . 20)
+  "Predefined huge bubbles grid.")
+
+(defcustom bubbles-grid-size
+  bubbles--grid-medium
+  "Size of bubbles grid."
+  :type `(radio (const :tag "Small" ,bubbles--grid-small)
+                (const :tag "Medium" ,bubbles--grid-medium)
+                (const :tag "Large" ,bubbles--grid-large)
+                (const :tag "Huge" ,bubbles--grid-huge)
+                (cons :tag "User defined"
+                      (integer :tag "Width")
+                      (integer :tag "Height")))
+  :group 'bubbles)
+
+(defconst bubbles--colors-2 '("orange" "violet")
+  "Predefined bubbles color list with two colors.")
+
+(defconst bubbles--colors-3 '("lightblue" "palegreen" "pink")
+  "Predefined bubbles color list with three colors.")
+
+(defconst bubbles--colors-4 '("firebrick" "sea green" "steel blue" "chocolate")
+  "Predefined bubbles color list with four colors.")
+
+(defconst bubbles--colors-5 '("firebrick" "sea green" "steel blue"
+                              "sandy brown" "bisque3")
+  "Predefined bubbles color list with five colors.")
+
+(defcustom bubbles-colors
+  bubbles--colors-3
+  "List of bubble colors.
+The length of this list determines how many different bubble
+types are present."
+  :type `(radio (const :tag "Red, darkgreen" ,bubbles--colors-2)
+                (const :tag "Red, darkgreen, blue" ,bubbles--colors-3)
+                (const :tag "Red, darkgreen, blue, orange" ,bubbles--colors-4)
+                (const :tag "Red, darkgreen, blue, orange, violet"
+                       ,bubbles--colors-5)
+                (repeat :tag "User defined" color))
+  :group 'bubbles)
+
+(defcustom bubbles-chars
+  '(?+ ?O ?# ?X ?. ?* ?& ?§)
+  "Characters used for bubbles.
+Note that the actual number of different bubbles is determined by
+the number of colors, see `bubbles-colors'."
+  :type '(repeat character)
+  :group 'bubbles)
+
+(defcustom bubbles-shift-mode
+  'default
+  "Shift mode.
+Available modes are `shift-default' and`shift-always'."
+  :type '(radio (const :tag "Default" default)
+                (const :tag "Shifter" always)
+                ;;(const :tag "Mega Shifter" 'mega)
+                )
+  :group 'bubbles)
+
+(defcustom bubbles-mode-hook nil
+  "Hook run by Bubbles mode."
+  :group 'bubbles
+  :type 'hook)
+
+(defun bubbles-customize ()
+  "Open customization buffer for bubbles."
+  (interactive)
+  (customize-group 'bubbles))
+
+;; ======================================================================
+;; internal variables
+
+(defvar bubbles--score 0
+  "Current Bubbles score.")
+
+(defvar bubbles--neighbourhood-score 0
+  "Score of active bubbles neighbourhood.")
+
+(defvar bubbles--faces nil
+  "List of currently used faces.")
+
+(defvar bubbles--playing nil
+  "Play status indicator.")
+
+(defvar bubbles--empty-image nil
+  "Image used for removed bubbles (empty grid cells).")
+
+(defvar bubbles--images nil
+  "List of images for bubbles.")
+
+(defvar bubbles--images-ok nil
+  "Indicate whether images have been created successfully.")
+
+(defvar bubbles--col-offset 0
+  "Horizontal offset for centering the bubbles grid.")
+
+(defvar bubbles--row-offset 0
+  "Vertical offset for centering the bubbles grid.")
+
+(defvar bubbles--save-data nil
+  "List containing bubbles save data (SCORE BUFFERCONTENTS).")
+
+(defconst bubbles--image-template-circle
+  "/* XPM */
+static char * dot_xpm[] = {
+\"20 20 2 1\",
+\"     c None\",
+\".    c #FFFFFF\",
+\"       ......       \",
+\"     ..........     \",
+\"   ..............   \",
+\"  ................  \",
+\"  ................  \",
+\" .................. \",
+\" .................. \",
+\"....................\",
+\"....................\",
+\"....................\",
+\"....................\",
+\"....................\",
+\"....................\",
+\" .................. \",
+\" .................. \",
+\"  ................  \",
+\"  ................  \",
+\"   ..............   \",
+\"     ..........     \",
+\"       ......       \"};")
+
+(defconst bubbles--image-template-square
+  "/* XPM */
+static char * dot_xpm[] = {
+\"20 20 2 1\",
+\"0    c None\",
+\"1    c #FFFFFF\",
+\"00000000000000000000\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"01111111111111111110\",
+\"00000000000000000000\"};")
+
+(defconst bubbles--image-template-diamond
+  "/* XPM */
+static char * dot_xpm[] = {
+\"20 20 2 1\",
+\"0    c None\",
+\"1    c #FFFFFF\",
+\"00000000011000000000\",
+\"00000000111100000000\",
+\"00000001111110000000\",
+\"00000011111111000000\",
+\"00000111111111100000\",
+\"00001111111111110000\",
+\"00011111111111111000\",
+\"00111111111111111100\",
+\"01111111111111111110\",
+\"11111111111111111111\",
+\"01111111111111111110\",
+\"00111111111111111100\",
+\"00011111111111111000\",
+\"00001111111111110000\",
+\"00000111111111100000\",
+\"00000011111111000000\",
+\"00000001111110000000\",
+\"00000000111100000000\",
+\"00000000011000000000\",
+\"00000000000000000000\"};")
+
+(defconst bubbles--image-template-emacs
+  "/* XPM */
+static char * emacs_24_xpm[] = {
+\"24 24 129 2\",
+\"     c None\",
+\".    c #837DA4\",
+\"+    c #807AA0\",
+\"@    c #9894B2\",
+\"#    c #CCCAD9\",
+\"$    c #C2C0D2\",
+\"%    c #B6B3C9\",
+\"&    c #A19DB9\",
+\"*    c #8681A5\",
+\"=    c #7D779B\",
+\"-    c #B6B3C7\",
+\";    c #ABA7BE\",
+\">    c #9792AF\",
+\",    c #AAA6BD\",
+\"'    c #CBC9D7\",
+\")    c #AAA7BE\",
+\"!    c #908BAA\",
+\"~    c #797397\",
+\"{    c #948FAC\",
+\"]    c #9A95B1\",
+\"^    c #EBEAEF\",
+\"/    c #F1F1F5\",
+\"(    c #BCB9CB\",
+\"_    c #A9A5BD\",
+\":    c #757093\",
+\"<    c #918DA9\",
+\"[    c #DDDBE4\",
+\"}    c #FFFFFF\",
+\"|    c #EAE9EF\",
+\"1    c #A7A4BA\",
+\"2    c #716C8F\",
+\"3    c #8D89A5\",
+\"4    c #9C98B1\",
+\"5    c #DBDAE3\",
+\"6    c #A4A1B7\",
+\"7    c #6E698A\",
+\"8    c #8B87A1\",
+\"9    c #928EA7\",
+\"0    c #C5C3D1\",
+\"a    c #F8F8F9\",
+\"b    c #CCCAD6\",
+\"c    c #A29FB4\",
+\"d    c #6A6585\",
+\"e    c #88849D\",
+\"f    c #B5B2C2\",
+\"g    c #F0F0F3\",
+\"h    c #E1E0E6\",
+\"i    c #A5A2B5\",
+\"j    c #A09DB1\",
+\"k    c #676281\",
+\"l    c #85819A\",
+\"m    c #9591A7\",
+\"n    c #E1E0E5\",
+\"o    c #F0EFF2\",
+\"p    c #B3B0C0\",
+\"q    c #9D9AAE\",
+\"r    c #635F7C\",
+\"s    c #827F96\",
+\"t    c #9997AA\",
+\"u    c #F7F7F9\",
+\"v    c #C8C7D1\",
+\"w    c #89869D\",
+\"x    c #9B99AB\",
+\"y    c #5F5B78\",
+\"z    c #7F7C93\",
+\"A    c #CFCDD6\",
+\"B    c #B7B5C2\",
+\"C    c #9996A9\",
+\"D    c #5C5873\",
+\"E    c #7A778D\",
+\"F    c #F5F5F6\",
+\"G    c #8E8C9E\",
+\"H    c #7D798F\",
+\"I    c #58546F\",
+\"J    c #6C6981\",
+\"K    c #D5D4DB\",
+\"L    c #F5F4F6\",
+\"M    c #9794A5\",
+\"N    c #625F78\",
+\"O    c #79768C\",
+\"P    c #55516A\",
+\"Q    c #605C73\",
+\"R    c #CAC9D1\",
+\"S    c #EAE9EC\",
+\"T    c #B4B3BE\",
+\"U    c #777488\",
+\"V    c #514E66\",
+\"W    c #DEDEE2\",
+\"X    c #F4F4F5\",
+\"Y    c #9D9BA9\",
+\"Z    c #747185\",
+\"`    c #4E4B62\",
+\" .   c #DEDDE1\",
+\"..   c #A6A5B0\",
+\"+.   c #716F81\",
+\"@.   c #4A475D\",
+\"#.   c #A4A3AE\",
+\"$.   c #F4F3F5\",
+\"%.   c #777586\",
+\"&.   c #6E6C7D\",
+\"*.   c #464358\",
+\"=.   c #514E62\",
+\"-.   c #B9B8C0\",
+\";.   c #D1D0D5\",
+\">.   c #747282\",
+\",.   c #6B6979\",
+\"'.   c #434054\",
+\").   c #5A5769\",
+\"!.   c #D0CFD4\",
+\"~.   c #5B5869\",
+\"{.   c #696676\",
+\"].   c #403D50\",
+\"^.   c #DBDADE\",
+\"/.   c #F3F3F4\",
+\"(.   c #646271\",
+\"_.   c #666473\",
+\":.   c #3D3A4C\",
+\"<.   c #555362\",
+\"[.   c #9E9DA6\",
+\"}.   c #9E9CA5\",
+\"|.   c #646170\",
+\"1.   c #393647\",
+\"2.   c #514E5D\",
+\"3.   c #83818C\",
+\"4.   c #A8A7AE\",
+\"5.   c #E6E6E8\",
+\"6.   c #DAD9DC\",
+\"7.   c #353343\",
+\"8.   c #32303E\",
+\"      . . . . . . . . . . . . . . . . . .       \",
+\"  + @ # $ % % % % % % % % % % % % % % & * + +   \",
+\"  = - ; > > > > > > > > , ' ) > > > > > > ! =   \",
+\"~ ~ { { { { { { { { { { { ] ^ / ( { { { { _ ~ ~ \",
+\": : < < < < < < < < < < < < [ } } | < < < 1 : : \",
+\"2 2 3 3 3 3 3 3 3 3 3 3 4 5 } } } 5 3 3 3 6 2 2 \",
+\"7 7 8 8 8 8 8 8 8 8 9 0 a } } } b 8 8 8 8 c 7 7 \",
+\"d d e e e e e e e f g } } } h i e e e e e j d d \",
+\"k k l l l l l m n } } } o p l l l l l l l q k k \",
+\"r r s s s s t u } } } v w s s s s s s s s x r r \",
+\"y y z z z z A } } } B z z z z z z z z z z C y y \",
+\"D D D D D D E F } } G D D D D D D D D D D H D D \",
+\"I I I I I I I J K } L M N I I I I I I I I O I I \",
+\"P P P P P P Q R } } } S T P P P P P P P P U P P \",
+\"V V V V V V W } } X Y V V V V V V V V V V Z V V \",
+\"` ` ` ` ` `  .} } ..` ` ` ` ` ` ` ` ` ` ` +.` ` \",
+\"@.@.@.@.@.@.@.#.$.$.%.@.@.@.@.@.@.@.@.@.@.&.@.@.\",
+\"*.*.*.*.*.*.*.*.=.-.} ;.>.*.*.*.*.*.*.*.*.,.*.*.\",
+\"'.'.'.'.'.'.'.'.'.'.).!.} !.~.'.'.'.'.'.'.{.'.'.\",
+\"].].].].].].].].].].].].^.} /.(.].].].].]._.].].\",
+\":.:.:.:.:.:.:.:.:.:.<.[./.} } }.:.:.:.:.:.|.:.:.\",
+\"  1.1.1.1.1.1.1.1.2.3.4.5.6.3.1.1.1.1.1.1.1.1.  \",
+\"  7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.  \",
+\"      8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.      \"};")
+
+(defconst bubbles--image-template-ball
+  "/* XPM */
+static char * dot3d_xpm[] = {
+\"20 20 190 2\",
+\"     c None\",
+\".    c #F9F6F6\",
+\"+    c #D6D0D0\",
+\"@    c #BFBBBB\",
+\"#    c #AAA4A4\",
+\"$    c #ABAAAB\",
+\"%    c #A8A8A8\",
+\"&    c #A29D9D\",
+\"*    c #B5B2B2\",
+\"=    c #CDC9C9\",
+\"-    c #D7D0D0\",
+\";    c #B3AFAF\",
+\">    c #B5B5B5\",
+\",    c #B7B7B7\",
+\"'    c #B8B8B8\",
+\")    c #B6B6B6\",
+\"!    c #B3B3B3\",
+\"~    c #AFAFAF\",
+\"{    c #A9A9A9\",
+\"]    c #A2A2A2\",
+\"^    c #9C9A9A\",
+\"/    c #C9C5C5\",
+\"(    c #FDFBFB\",
+\"_    c #C3BCBC\",
+\":    c #BBBBBB\",
+\"<    c #C0C0C0\",
+\"[    c #C3C2C2\",
+\"}    c #C3C3C3\",
+\"|    c #C2C2C2\",
+\"1    c #BEBEBE\",
+\"2    c #B9B9B9\",
+\"3    c #B2B2B2\",
+\"4    c #ABAAAA\",
+\"5    c #999999\",
+\"6    c #ACA7A7\",
+\"7    c #C2BBBB\",
+\"8    c #C5C5C5\",
+\"9    c #CACBCB\",
+\"0    c #CECECE\",
+\"a    c #CFCFCF\",
+\"b    c #CDCDCD\",
+\"c    c #C8C9C9\",
+\"d    c #9F9F9F\",
+\"e    c #959595\",
+\"f    c #A9A5A5\",
+\"g    c #D5CFCE\",
+\"h    c #BDBDBD\",
+\"i    c #C6C6C6\",
+\"j    c #D5D5D5\",
+\"k    c #D9D9D9\",
+\"l    c #DADADA\",
+\"m    c #D8D8D8\",
+\"n    c #D2D2D2\",
+\"o    c #CBCBCB\",
+\"p    c #A4A4A5\",
+\"q    c #9A9A9A\",
+\"r    c #8F8F8F\",
+\"s    c #C3BFBF\",
+\"t    c #AFACAB\",
+\"u    c #CCCCCC\",
+\"v    c #D6D6D6\",
+\"w    c #DEDEDE\",
+\"x    c #E4E4E4\",
+\"y    c #E5E5E5\",
+\"z    c #E2E2E2\",
+\"A    c #DBDBDB\",
+\"B    c #C9C8C8\",
+\"C    c #A8A9A8\",
+\"D    c #9D9E9D\",
+\"E    c #929292\",
+\"F    c #8A8888\",
+\"G    c #D3CECE\",
+\"H    c #B0B0B0\",
+\"I    c #D1D1D1\",
+\"J    c #DCDCDC\",
+\"K    c #E6E6E6\",
+\"L    c #EEEEEE\",
+\"M    c #F1F1F0\",
+\"N    c #EBEBEB\",
+\"O    c #D7D7D8\",
+\"P    c #ABABAB\",
+\"Q    c #A0A0A0\",
+\"R    c #949494\",
+\"S    c #898989\",
+\"T    c #C0BDBD\",
+\"U    c #B9B6B6\",
+\"V    c #B1B1B1\",
+\"W    c #BCBCBC\",
+\"X    c #C8C8C8\",
+\"Y    c #D3D3D3\",
+\"Z    c #DFDFDE\",
+\"`    c #EAEAEA\",
+\" .   c #F5F5F5\",
+\"..   c #FAFAFA\",
+\"+.   c #F1F1F1\",
+\"@.   c #CECFCF\",
+\"#.   c #ACACAC\",
+\"$.   c #A1A1A1\",
+\"%.   c #8A8A8A\",
+\"&.   c #9B9999\",
+\"*.   c #C7C7C7\",
+\"=.   c #DDDDDD\",
+\"-.   c #E8E8E8\",
+\";.   c #F2F2F2\",
+\">.   c #898A89\",
+\",.   c #7A7878\",
+\"'.   c #AEAEAE\",
+\").   c #C4C4C4\",
+\"!.   c #CBCBCA\",
+\"~.   c #AAAAAA\",
+\"{.   c #939393\",
+\"].   c #888888\",
+\"^.   c #7C7C7C\",
+\"/.   c #AAAAAB\",
+\"(.   c #BFBFBF\",
+\"_.   c #C9C9C9\",
+\":.   c #DFDEDF\",
+\"<.   c #A6A6A6\",
+\"[.   c #9B9B9B\",
+\"}.   c #909191\",
+\"|.   c #858586\",
+\"1.   c #797979\",
+\"2.   c #989494\",
+\"3.   c #A5A6A5\",
+\"4.   c #B9B9B8\",
+\"5.   c #C1C1C1\",
+\"6.   c #CFCFCE\",
+\"7.   c #979797\",
+\"8.   c #8D8D8D\",
+\"9.   c #828282\",
+\"0.   c #747171\",
+\"a.   c #ADAAAA\",
+\"b.   c #A9A8A9\",
+\"c.   c #B8B9B9\",
+\"d.   c #A5A5A5\",
+\"e.   c #9C9C9C\",
+\"f.   c #7E7E7D\",
+\"g.   c #929191\",
+\"h.   c #C9C4C4\",
+\"i.   c #989898\",
+\"j.   c #ADADAD\",
+\"k.   c #9D9D9D\",
+\"l.   c #8C8C8C\",
+\"m.   c #787878\",
+\"n.   c #B8B6B6\",
+\"o.   c #939191\",
+\"p.   c #A5A5A6\",
+\"q.   c #ABABAA\",
+\"r.   c #A8A8A9\",
+\"s.   c #A3A3A3\",
+\"t.   c #858585\",
+\"u.   c #757474\",
+\"v.   c #C5C1C1\",
+\"w.   c #969696\",
+\"x.   c #9B9B9C\",
+\"y.   c #A4A4A4\",
+\"z.   c #9E9E9E\",
+\"A.   c #939394\",
+\"B.   c #7D7D7D\",
+\"C.   c #747474\",
+\"D.   c #B7B5B5\",
+\"E.   c #A5A1A1\",
+\"F.   c #919191\",
+\"G.   c #9A9999\",
+\"H.   c #838383\",
+\"I.   c #757575\",
+\"J.   c #939090\",
+\"K.   c #A29E9E\",
+\"L.   c #868686\",
+\"M.   c #8D8D8C\",
+\"N.   c #8E8E8E\",
+\"O.   c #8D8D8E\",
+\"P.   c #8B8C8C\",
+\"Q.   c #848485\",
+\"R.   c #7F7F80\",
+\"S.   c #7A7A7A\",
+\"T.   c #737373\",
+\"U.   c #929090\",
+\"V.   c #828080\",
+\"W.   c #818181\",
+\"X.   c #808080\",
+\"Y.   c #7E7E7E\",
+\"Z.   c #737272\",
+\"`.   c #B7B4B4\",
+\" +   c #BCBABA\",
+\".+   c #959494\",
+\"++   c #747172\",
+\"@+   c #767676\",
+\"#+   c #6F6D6D\",
+\"$+   c #8F8E8E\",
+\"          . + @ # $ % & * = .           \",
+\"        - ; > , ' ) ! ~ { ] ^ /         \",
+\"    ( _ > : < [ } | 1 2 3 4 ] 5 6 (     \",
+\"    7 ) 1 8 9 0 a b c | : 3 { d e f     \",
+\"  g ! h i 0 j k l m n o | 2 ~ p q r s   \",
+\". t ' | u v w x y z A n B 1 ! C D E F . \",
+\"G H : i I J K L M N z O b | ) P Q R S T \",
+\"U V W X Y Z `  ...+.y l @.} ' #.$.e %.&.\",
+\"& H W *.n =.-.;. .L x k 0 [ , #.Q e >.,.\",
+\"] '.2 ).a k z -.` K w j !.< > ~.d {.].^.\",
+\"d /.> (._.I k =.:.J v 0 8 : V <.[.}.|.1.\",
+\"2.3.~ 4.5._.6.n Y I u i 1 > P $.7.8.9.0.\",
+\"a.d b.V c.(.).*.X i | h ) '.d.e.E ].f.g.\",
+\"h.i.$.C ~ > 2 W W : ' ! j.d.k.e l.9.m.n.\",
+\". o.i.d p.q.'.H V H j.r.s.k.e 8.t.^.u.. \",
+\"  v.r w.x.Q s.d.d.y.] z.5 A.8.t.B.C.D.  \",
+\"    E.l.F.e i.G.q 5 7.{.r %.H.^.I.J.    \",
+\"    ( K.L.%.M.N.N.O.P.S Q.R.S.T.U.(     \",
+\"        @ V.W.H.H.9.X.Y.S.I.Z.`.        \",
+\"          .  +.+++@+C.#+$+D..           \"};")
+
+;; ======================================================================
+;; Functions
+
+(defsubst bubbles--grid-width ()
+  "Return the grid width for the current game theme."
+  (car (case bubbles-game-theme
+         ('easy
+          bubbles--grid-small)
+         ('medium
+          bubbles--grid-medium)
+         ('difficult
+          bubbles--grid-large)
+         ('hard
+          bubbles--grid-huge)
+         ('user-defined
+          bubbles-grid-size))))
+
+(defsubst bubbles--grid-height ()
+  "Return the grid height for the current game theme."
+  (cdr (case bubbles-game-theme
+         ('easy
+          bubbles--grid-small)
+         ('medium
+          bubbles--grid-medium)
+         ('difficult
+          bubbles--grid-large)
+         ('hard
+          bubbles--grid-huge)
+         ('user-defined
+          bubbles-grid-size))))
+
+(defsubst bubbles--colors ()
+  "Return the color list for the current game theme."
+  (case bubbles-game-theme
+    ('easy
+     bubbles--colors-2)
+    ('medium
+     bubbles--colors-3)
+    ('difficult
+     bubbles--colors-4)
+    ('hard
+     bubbles--colors-5)
+    ('user-defined
+     bubbles-colors)))
+
+(defsubst bubbles--shift-mode ()
+  "Return the shift mode for the current game theme."
+  (case bubbles-game-theme
+    ('easy
+     'default)
+    ('medium
+     'default)
+    ('difficult
+     'always)
+    ('hard
+     'always)
+    ('user-defined
+     bubbles-shift-mode)))
+
+(defun bubbles-save-settings ()
+  "Save current customization settings."
+  (interactive)
+  (custom-set-variables
+   (list 'bubbles-game-theme `(quote ,bubbles-game-theme) t)
+   (list 'bubbles-graphics-theme `(quote ,bubbles-graphics-theme) t))
+  (customize-save-customized))
+
+(defsubst bubbles--empty-char ()
+  "The character used for removed bubbles (empty grid cells)."
+  ? )
+
+(defun bubbles-set-graphics-theme-ascii ()
+  "Set graphics theme to `ascii'."
+  (interactive)
+  (setq bubbles-graphics-theme 'ascii)
+  (bubbles--update-faces-or-images))
+
+(defun bubbles-set-graphics-theme-circles ()
+  "Set graphics theme to `circles'."
+  (interactive)
+  (setq bubbles-graphics-theme 'circles)
+  (bubbles--initialize-images)
+  (bubbles--update-faces-or-images))
+
+(defun bubbles-set-graphics-theme-squares ()
+  "Set graphics theme to `squares'."
+  (interactive)
+  (setq bubbles-graphics-theme 'squares)
+  (bubbles--initialize-images)
+  (bubbles--update-faces-or-images))
+
+(defun bubbles-set-graphics-theme-diamonds ()
+  "Set graphics theme to `diamonds'."
+  (interactive)
+  (setq bubbles-graphics-theme 'diamonds)
+  (bubbles--initialize-images)
+  (bubbles--update-faces-or-images))
+
+(defun bubbles-set-graphics-theme-balls ()
+  "Set graphics theme to `balls'."
+  (interactive)
+  (setq bubbles-graphics-theme 'balls)
+  (bubbles--initialize-images)
+  (bubbles--update-faces-or-images))
+
+(defun bubbles-set-graphics-theme-emacs ()
+  "Set graphics theme to `emacs'."
+  (interactive)
+  (setq bubbles-graphics-theme 'emacs)
+  (bubbles--initialize-images)
+  (bubbles--update-faces-or-images))
+
+;; game theme menu
+(defvar bubbles-game-theme-menu
+  (let ((menu (make-sparse-keymap "Game Theme")))
+    (define-key menu [bubbles-set-game-userdefined]
+      (list 'menu-item "User defined" 'bubbles-set-game-userdefined
+            :button '(:radio . (eq bubbles-game-theme 'user-defined))))
+    (define-key menu [bubbles-set-game-hard]
+      (list 'menu-item "Hard" 'bubbles-set-game-hard
+            :button '(:radio . (eq bubbles-game-theme 'hard))))
+    (define-key menu [bubbles-set-game-difficult]
+      (list 'menu-item "Difficult" 'bubbles-set-game-difficult
+            :button '(:radio . (eq bubbles-game-theme 'difficult))))
+    (define-key menu [bubbles-set-game-medium]
+      (list 'menu-item "Medium" 'bubbles-set-game-medium
+            :button '(:radio . (eq bubbles-game-theme 'medium))))
+    (define-key menu [bubbles-set-game-easy]
+      (list 'menu-item "Easy" 'bubbles-set-game-easy
+            :button '(:radio . (eq bubbles-game-theme 'easy))))
+    menu)
+  "Map for bubbles game theme menu.")
+
+;; graphics theme menu
+(defvar bubbles-graphics-theme-menu
+  (let ((menu (make-sparse-keymap "Graphics Theme")))
+    (define-key menu [bubbles-set-graphics-theme-ascii]
+      (list 'menu-item "ASCII" 'bubbles-set-graphics-theme-ascii
+            :button '(:radio . (eq bubbles-graphics-theme 'ascii))))
+    (define-key menu [bubbles-set-graphics-theme-emacs]
+      (list 'menu-item "Emacs" 'bubbles-set-graphics-theme-emacs
+            :button '(:radio . (eq bubbles-graphics-theme 'emacs))))
+    (define-key menu [bubbles-set-graphics-theme-balls]
+      (list 'menu-item "Balls" 'bubbles-set-graphics-theme-balls
+            :button '(:radio . (eq bubbles-graphics-theme 'balls))))
+    (define-key menu [bubbles-set-graphics-theme-diamonds]
+      (list 'menu-item "Diamonds" 'bubbles-set-graphics-theme-diamonds
+            :button '(:radio . (eq bubbles-graphics-theme 'diamonds))))
+    (define-key menu [bubbles-set-graphics-theme-squares]
+      (list 'menu-item "Squares" 'bubbles-set-graphics-theme-squares
+            :button '(:radio . (eq bubbles-graphics-theme 'squares))))
+    (define-key menu [bubbles-set-graphics-theme-circles]
+      (list 'menu-item "Circles" 'bubbles-set-graphics-theme-circles
+            :button '(:radio . (eq bubbles-graphics-theme 'circles))))
+    menu)
+    "Map for bubbles graphics theme menu.")
+
+;; menu
+(defvar bubbles-menu
+  (let ((menu (make-sparse-keymap "Bubbles")))
+    (define-key menu [bubbles-quit]
+      (list 'menu-item "Quit" 'bubbles-quit))
+    (define-key menu [bubbles]
+      (list 'menu-item "New game" 'bubbles))
+    (define-key menu [bubbles-separator-1]
+      '("--"))
+    (define-key menu [bubbles-save-settings]
+      (list 'menu-item "Save all settings" 'bubbles-save-settings))
+    (define-key menu [bubbles-customize]
+      (list 'menu-item "Edit all settings" 'bubbles-customize))
+    (define-key menu [bubbles-game-theme-menu]
+      (list 'menu-item "Game Theme" bubbles-game-theme-menu))
+    (define-key menu [bubbles-graphics-theme-menu]
+      (list 'menu-item "Graphics Theme" bubbles-graphics-theme-menu
+            :enable 'bubbles--playing))
+    (define-key menu [bubbles-separator-2]
+      '("--"))
+    (define-key menu [bubbles-undo]
+      (list 'menu-item "Undo last move" 'bubbles-undo
+            :enable '(and bubbles--playing (listp buffer-undo-list))))
+    menu)
+  "Map for bubbles menu.")
+
+;; bubbles mode map
+(defvar bubbles-mode-map
+  (let ((map (make-sparse-keymap 'bubbles-mode-map)))
+;;    (suppress-keymap map t)
+    (define-key map "q" 'bubbles-quit)
+    (define-key map "\n" 'bubbles-plop)
+    (define-key map " " 'bubbles-plop)
+    (define-key map [double-down-mouse-1] 'bubbles-plop)
+    (define-key map [mouse-2] 'bubbles-plop)
+    (define-key map "\C-m" 'bubbles-plop)
+    (define-key map "u" 'bubbles-undo)
+    (define-key map "p" 'previous-line)
+    (define-key map "n" 'next-line)
+    (define-key map "f" 'forward-char)
+    (define-key map "b" 'backward-char)
+    ;; bind menu to mouse
+    (define-key map [down-mouse-3] bubbles-menu)
+    ;; Put menu in menu-bar
+    (define-key map [menu-bar Bubbles] (cons "Bubbles" bubbles-menu))
+    map)
+  "Mode map for bubbles.")
+
+(defun bubbles-mode ()
+  "Major mode for playing bubbles.
+\\{bubbles-mode-map}"
+  (kill-all-local-variables)
+  (use-local-map bubbles-mode-map)
+  (setq major-mode 'bubbles-mode)
+  (setq mode-name "Bubbles")
+  (setq buffer-read-only t)
+  (buffer-disable-undo)
+  (setq buffer-undo-list t)
+  (force-mode-line-update)
+  (redisplay)
+  (add-hook 'post-command-hook 'bubbles--mark-neighbourhood t t)
+  (run-hooks 'bubbles-mode-hook))
+
+;;;###autoload
+(defun bubbles ()
+  "Play Bubbles game."
+  (interactive)
+  (switch-to-buffer (get-buffer-create "*bubbles*"))
+  (when (or (not bubbles--playing)
+            (y-or-n-p "Start new game? "))
+    (setq bubbles--save-data nil)
+    (setq bubbles--playing t)
+    (bubbles--initialize)))
+
+(defun bubbles-quit ()
+  "Quit Bubbles."
+  (interactive)
+  (message "bubbles-quit")
+  (bury-buffer))
+
+(defun bubbles--compute-offsets ()
+  "Update horizontal and vertical offsets for centering the bubbles grid.
+Set `bubbles--col-offset' and `bubbles--row-offset'."
+  (cond ((and (display-images-p)
+              bubbles--images-ok
+              (not (eq bubbles-graphics-theme 'ascii))
+              (fboundp 'window-inside-pixel-edges))
+         ;; compute offset in units of pixels
+         (let ((bubbles--image-size
+                (car (image-size (car bubbles--images) t))))
+           (setq bubbles--col-offset
+                 (list
+                  (max 0 (/ (- (nth 2 (window-inside-pixel-edges))
+                               (nth 0 (window-inside-pixel-edges))
+                               (* ( + bubbles--image-size 2) ;; margin
+                                  (bubbles--grid-width))) 2))))
+           (setq bubbles--row-offset
+                 (list
+                  (max 0 (/ (- (nth 3 (window-inside-pixel-edges))
+                               (nth 1 (window-inside-pixel-edges))
+                               (* (+ bubbles--image-size 1) ;; margin
+                                  (bubbles--grid-height))) 2))))))
+        (t
+         ;; compute offset in units of chars
+         (setq bubbles--col-offset
+               (max 0 (/ (- (window-width)
+                            (bubbles--grid-width)) 2)))
+         (setq bubbles--row-offset
+               (max 0 (/ (- (window-height)
+                            (bubbles--grid-height) 2) 2))))))
+
+(defun bubbles--remove-overlays ()
+  "Remove all overlays."
+  (if (fboundp 'remove-overlays)
+      (remove-overlays)))
+
+(defun bubbles--initialize ()
+  "Initialize Bubbles game."
+  (bubbles--initialize-faces)
+  (bubbles--initialize-images)
+  (bubbles--remove-overlays)
+
+  (switch-to-buffer (get-buffer-create "*bubbles*"))
+  (bubbles--compute-offsets)
+  (let ((inhibit-read-only t))
+    (set-buffer-modified-p nil)
+    (erase-buffer)
+    (insert " ")
+    (add-text-properties
+     (point-min) (point) (list 'intangible t 'display
+                               (cons 'space
+                                     (list :height bubbles--row-offset))))
+    (insert "\n")
+    (let ((max-char (length (bubbles--colors))))
+      (dotimes (i (bubbles--grid-height))
+        (let ((p (point)))
+          (insert " ")
+          (add-text-properties
+           p (point) (list 'intangible t
+                           'display (cons 'space
+                                          (list :width
+                                                bubbles--col-offset)))))
+        (dotimes (j (bubbles--grid-width))
+          (let* ((index (random max-char))
+                 (char (nth index bubbles-chars)))
+            (insert char)
+            (add-text-properties (1- (point)) (point) (list 'index index))))
+        (insert "\n"))
+      (insert "\n ")
+      (add-text-properties
+       (1- (point)) (point) (list 'intangible t 'display
+                                  (cons 'space
+                                        (list :width bubbles--col-offset)))))
+    (put-text-property (point-min) (point-max) 'pointer 'arrow))
+  (bubbles-mode)
+  (bubbles--reset-score)
+  (bubbles--update-faces-or-images)
+  (bubbles--goto 0 0)
+  (setq buffer-undo-list t)
+  (force-mode-line-update)
+  (redisplay))
+
+(defun bubbles--initialize-faces ()
+  "Prepare faces for playing `bubbles'."
+  (copy-face 'default 'bubbles--highlight-face)
+  (set-face-background 'bubbles--highlight-face "#8080f4")
+  (when (display-color-p)
+    (setq bubbles--faces
+          (mapcar (lambda (color)
+                    (let ((fname (intern (format "bubbles--face-%s" color))))
+                      (unless (facep fname)
+                        (copy-face 'default fname)
+                        (set-face-foreground fname color))
+                      fname))
+                  (bubbles--colors)))))
+
+(defsubst bubbles--row (pos)
+  "Return row of point POS."
+  (save-excursion
+    (goto-char pos)
+    (beginning-of-line)
+    (1- (count-lines (point-min) (point)))))
+
+(defsubst bubbles--col (pos)
+  "Return column of point POS."
+  (save-excursion
+    (goto-char pos)
+    (1- (current-column))))
+
+(defun bubbles--goto (row col)
+  "Move point to bubble at coordinates ROW and COL."
+  (if (or (< row 0)
+          (< col 0)
+          (>= row (bubbles--grid-height))
+          (>= col (bubbles--grid-width)))
+      ;; Error! return nil
+      nil
+    ;; go
+    (goto-char (point-min))
+    (forward-line (1+ row))
+    (forward-char (1+ col))
+    (point)))
+
+(defun bubbles--char-at (row col)
+  "Return character at bubble ROW and COL."
+  (save-excursion
+    (if (bubbles--goto row col)
+        (char-after (point))
+      nil)))
+
+(defun bubbles--mark-direct-neighbours (row col char)
+  "Mark direct neighbours of bubble at ROW COL with same CHAR."
+  (save-excursion
+    (let ((count 0))
+      (when (and (bubbles--goto row col)
+                 (eq char (char-after (point)))
+                 (not (get-text-property (point) 'active)))
+        (add-text-properties (point) (1+ (point))
+                             '(active t face 'bubbles--highlight-face))
+        (setq count (+ 1
+                       (bubbles--mark-direct-neighbours row (1+ col) char)
+                       (bubbles--mark-direct-neighbours row (1- col) char)
+                       (bubbles--mark-direct-neighbours (1+ row) col char)
+                       (bubbles--mark-direct-neighbours (1- row) col char))))
+      count)))
+
+(defun bubbles--mark-neighbourhood (&optional pos)
+  "Mark neighbourhood of point.
+Use optional parameter POS instead of point if given."
+  (when bubbles--playing
+    (unless pos (setq pos (point)))
+    (condition-case err
+        (let ((char (char-after pos))
+              (inhibit-read-only t)
+              (row (bubbles--row (point)))
+              (col (bubbles--col (point))))
+          (add-text-properties (point-min) (point-max)
+                               '(face default active nil))
+          (let ((count 0))
+            (when (and row col (not (eq char (bubbles--empty-char))))
+              (setq count (bubbles--mark-direct-neighbours row col char))
+              (unless (> count 1)
+                (add-text-properties (point-min) (point-max)
+                                     '(face default active nil))
+                (setq count 0)))
+            (bubbles--update-neighbourhood-score count))
+          (put-text-property (point-min) (point-max) 'pointer 'arrow)
+          (bubbles--update-faces-or-images)
+          (sit-for 0))
+      (error (message "Bubbles: Internal error %s" err)))))
+
+(defun bubbles--neighbourhood-available ()
+  "Return t if another valid neighbourhood is available."
+  (catch 'found
+    (save-excursion
+      (dotimes (i (bubbles--grid-height))
+        (dotimes (j (bubbles--grid-width))
+          (let ((c (bubbles--char-at i j)))
+            (if (and (not (eq c (bubbles--empty-char)))
+                     (or (eq c (bubbles--char-at (1+ i) j))
+                         (eq c (bubbles--char-at i (1+ j)))))
+                (throw 'found t)))))
+      nil)))
+
+(defun bubbles--count ()
+  "Count remaining bubbles."
+  (let ((count 0))
+    (save-excursion
+      (dotimes (i (bubbles--grid-height))
+        (dotimes (j (bubbles--grid-width))
+          (let ((c (bubbles--char-at i j)))
+            (if (not (eq c (bubbles--empty-char)))
+                (setq count (1+ count)))))))
+    count))
+
+(defun bubbles--reset-score ()
+  "Reset bubbles score."
+  (setq bubbles--neighbourhood-score 0
+        bubbles--score 0)
+  (bubbles--update-score))
+
+(defun bubbles--update-score ()
+  "Calculate and display new bubble score."
+  (setq bubbles--score (+ bubbles--score bubbles--neighbourhood-score))
+  (bubbles--show-scores))
+
+(defun bubbles--update-neighbourhood-score (size)
+  "Calculate and display score of active neighbourhood from its SIZE."
+  (if (> size 1)
+      (setq bubbles--neighbourhood-score (expt (- size 1) 2))
+    (setq bubbles--neighbourhood-score 0))
+  (bubbles--show-scores))
+
+(defun bubbles--show-scores ()
+  "Display current scores."
+  (save-excursion
+    (goto-char (or (next-single-property-change (point-min) 'status)
+                   (point-max)))
+    (let ((inhibit-read-only t)
+          (pos (point)))
+      (delete-region (point) (point-max))
+      (insert (format "Selected: %4d\n" bubbles--neighbourhood-score))
+      (insert " ")
+      (add-text-properties (1- (point)) (point)
+                           (list 'intangible t 'display
+                                 (cons 'space
+                                       (list :width bubbles--col-offset))))
+      (insert (format "Score:    %4d" bubbles--score))
+      (put-text-property pos (point) 'status t))))
+
+(defun bubbles--game-over ()
+  "Finish bubbles game."
+  (bubbles--update-faces-or-images)
+  (setq bubbles--playing nil
+        bubbles--save-data nil)
+  ;; add bonus if all bubbles were removed
+  (when (= 0 (bubbles--count))
+    (setq bubbles--score (+ bubbles--score (* (bubbles--grid-height)
+                                              (bubbles--grid-width))))
+    (bubbles--show-scores))
+  ;; Game over message
+  (goto-char (point-max))
+  (let* ((inhibit-read-only t))
+    (insert "\n ")
+    (add-text-properties (1- (point)) (point)
+                         (list 'intangible t 'display
+                               (cons 'space
+                                     (list :width bubbles--col-offset))))
+    (insert "Game Over!"))
+  ;; save score
+  (gamegrid-add-score (format "bubbles-%s-%d-%d-%d-scores"
+                              (symbol-name (bubbles--shift-mode))
+                              (length (bubbles--colors))
+                              (bubbles--grid-width) (bubbles--grid-height))
+                      bubbles--score))
+
+(defun bubbles-plop ()
+  "Remove active bubbles region."
+  (interactive)
+  (when (and bubbles--playing
+             (> bubbles--neighbourhood-score 0))
+    (setq bubbles--save-data (list bubbles--score (buffer-string)))
+    (let ((inhibit-read-only t))
+      ;; blank out current neighbourhood
+      (let ((row (bubbles--row (point)))
+            (col (bubbles--col (point))))
+        (goto-char (point-max))
+        (while (not (bobp))
+          (backward-char)
+          (while (get-text-property (point) 'active)
+            (delete-char 1)
+            (insert (bubbles--empty-char))
+            (add-text-properties (1- (point)) (point) (list 'removed t
+                                                            'index -1))))
+        (bubbles--goto row col))
+      ;; show new score
+      (bubbles--update-score)
+      ;; update display and wait
+      (bubbles--update-faces-or-images)
+      (sit-for 0)
+      (sleep-for 0.2)
+      (discard-input)
+      ;; drop down
+      (let ((something-dropped nil))
+        (save-excursion
+          (dotimes (i (bubbles--grid-height))
+            (dotimes (j (bubbles--grid-width))
+              (bubbles--goto i j)
+              (while (get-text-property (point) 'removed)
+                (setq something-dropped (or (bubbles--shift 'top i j)
+                                            something-dropped))))))
+        ;; update display and wait
+        (bubbles--update-faces-or-images)
+        (when something-dropped
+          (sit-for 0)))
+      (discard-input)
+      ;; shift to left
+      (put-text-property (point-min) (point-max) 'removed nil)
+      (save-excursion
+        (goto-char (point-min))
+        (let ((removed-string (format "%c" (bubbles--empty-char))))
+          (while (search-forward removed-string nil t)
+            (put-text-property (1- (point)) (point) 'removed t))))
+      (let ((shifted nil))
+        (cond ((eq (bubbles--shift-mode) 'always)
+               (save-excursion
+                 (dotimes (i (bubbles--grid-height))
+                   (dotimes (j (bubbles--grid-width))
+                     (bubbles--goto i j)
+                     (while (get-text-property (point) 'removed)
+                       (setq shifted (or (bubbles--shift 'right i j)
+                                         shifted))))))
+               (bubbles--update-faces-or-images)
+               (sleep-for 0.5))
+              (t ;; default shift-mode
+               (save-excursion
+                 (dotimes (j (bubbles--grid-width))
+                   (bubbles--goto (1- (bubbles--grid-height)) j)
+                   (let ((shifted-cols 0))
+                     (while (get-text-property (point) 'removed)
+                       (setq shifted-cols (1+ shifted-cols))
+                       (bubbles--shift 'right (1- (bubbles--grid-height)) j))
+                     (dotimes (k shifted-cols)
+                       (let ((i (- (bubbles--grid-height) 2)))
+                         (while (>= i 0)
+                           (setq shifted (or (bubbles--shift 'right i j)
+                                             shifted))
+                           (setq i (1- i))))))))))
+        (when shifted
+          ;;(sleep-for 0.5)
+          (bubbles--update-faces-or-images)
+          (sit-for 0)))
+      (put-text-property (point-min) (point-max) 'removed nil)
+      (unless (bubbles--neighbourhood-available)
+        (bubbles--game-over)))
+    ;; undo
+    (setq buffer-undo-list '((apply bubbles-undo . nil)))
+    (force-mode-line-update)
+    (redisplay)))
+
+(defun bubbles-undo ()
+  "Undo last move."
+  (interactive)
+  (when bubbles--save-data
+    (let ((inhibit-read-only t)
+          (pos (point)))
+      (erase-buffer)
+      (insert (cadr bubbles--save-data))
+      (bubbles--update-faces-or-images)
+      (setq bubbles--score (car bubbles--save-data))
+      (goto-char pos))
+    (setq buffer-undo-list t)
+    (force-mode-line-update)
+    (redisplay)))
+
+(defun bubbles--shift (from row col)
+  "Move bubbles FROM one side to position ROW COL.
+Return t if new char is non-empty."
+  (save-excursion
+    (when (bubbles--goto row col)
+      (let ((char-org (char-after (point)))
+            (char-new (bubbles--empty-char))
+            (removed nil)
+            (trow row)
+            (tcol col)
+            (index -1))
+        (cond ((eq from 'top)
+               (setq trow (1- row)))
+              ((eq from 'left)
+               (setq tcol (1- col)))
+              ((eq from 'right)
+               (setq tcol (1+ col))))
+        (save-excursion
+          (when (bubbles--goto trow tcol)
+            (setq char-new (char-after (point)))
+            (setq removed (get-text-property (point) 'removed))
+            (setq index (get-text-property (point) 'index))
+            (bubbles--shift from trow tcol)))
+        (insert char-new)
+        (delete-char 1)
+        (add-text-properties (1- (point)) (point) (list 'index index
+                                                        'removed removed))
+        (not (eq char-new (bubbles--empty-char)))))))
+
+(defun bubbles--initialize-images ()
+  "Prepare images for playing `bubbles'."
+  (when (and (display-images-p)
+             (not (eq bubbles-graphics-theme 'ascii)))
+    (let ((template (case bubbles-graphics-theme
+                      ('circles bubbles--image-template-circle)
+                      ('balls bubbles--image-template-ball)
+                      ('squares bubbles--image-template-square)
+                      ('diamonds bubbles--image-template-diamond)
+                      ('emacs bubbles--image-template-emacs))))
+      (setq bubbles--empty-image
+            (create-image (replace-regexp-in-string
+                           "^\"\\(.*\\)\t.*c .*\",$"
+                           "\"\\1\tc None\"," template)
+                          'xpm t
+                          ;;:mask 'heuristic
+                          :margin '(2 . 1)))
+      (setq bubbles--images
+            (mapcar (lambda (color)
+                      (let* ((rgb (color-values color))
+                             (red (nth 0 rgb))
+                             (green (nth 1 rgb))
+                             (blue (nth 2 rgb)))
+                        (with-temp-buffer
+                          (insert template)
+                          (goto-char (point-min))
+                          (re-search-forward
+                           "^\"[0-9]+ [0-9]+ \\(.*?\\) .*\",$" nil t)
+                          (goto-char (point-min))
+                          (while (re-search-forward
+                                  "^\"\\(.*\\)\t.*c \\(#.*\\)\",$" nil t)
+                            (let* ((crgb (color-values (match-string 2)))
+                                   (r (nth 0 crgb))
+                                   (g (nth 1 crgb))
+                                   (b (nth 2 crgb))
+                                   (brightness (/ (+ r g b) 3.0 256 256))
+                                   (val (sin (* brightness (/ pi 2))))
+                                   (rr (* red val))
+                                   (gg (* green val))
+                                   (bb (* blue val))
+                                   ;;(rr (/ (+ red r) 2))
+                                   ;;(gg (/ (+ green g) 2))
+                                   ;;(bb (/ (+ blue b) 2))
+                                   (color (format "#%02x%02x%02x"
+                                                  (/ rr 256) (/ gg 256)
+                                                  (/ bb 256))))
+                              (replace-match (format "\"\\1\tc %s\","
+                                                     (upcase color)))))
+                          (create-image (buffer-string) 'xpm t
+                                        :margin '(2 . 1)
+                                        ;;:mask 'heuristic
+                                        ))))
+                    (bubbles--colors))))
+    ;; check images
+    (setq bubbles--images-ok bubbles--empty-image)
+    (mapc (lambda (elt)
+            (setq bubbles--images-ok (and bubbles--images-ok elt)))
+          bubbles--images)))
+
+(defun bubbles--update-faces-or-images ()
+  "Update faces and/or images, depending on graphics mode."
+  (bubbles--set-faces)
+  (bubbles--show-images))
+
+(defun bubbles--set-faces ()
+  "Update faces in the bubbles buffer."
+  (unless (and (display-images-p)
+               bubbles--images-ok
+               (not (eq bubbles-graphics-theme 'ascii)))
+    (when (display-color-p)
+      (save-excursion
+        (let ((inhibit-read-only t))
+          (dotimes (i (bubbles--grid-height))
+            (dotimes (j (bubbles--grid-width))
+              (bubbles--goto i j)
+              (let* ((index (get-text-property (point) 'index))
+                     (face (nth index bubbles--faces))
+                     (fg-col (face-foreground face)))
+                (when (get-text-property (point) 'active)
+                  (set-face-foreground 'bubbles--highlight-face "#ff0000")
+                  (setq face 'bubbles--highlight-face))
+                (put-text-property (point) (1+ (point))
+                                   'face face)))))))))
+
+(defun bubbles--show-images ()
+  "Update images in the bubbles buffer."
+  (bubbles--remove-overlays)
+  (if (and (display-images-p)
+           bubbles--images-ok
+           (not (eq bubbles-graphics-theme 'ascii)))
+      (save-excursion
+        (goto-char (point-min))
+        (forward-line 1)
+        (let ((inhibit-read-only t)
+              char)
+          (dotimes (i (bubbles--grid-height))
+            (dotimes (j (bubbles--grid-width))
+              (forward-char 1)
+              (let ((index (or (get-text-property (point) 'index) -1)))
+                (let ((img bubbles--empty-image))
+                  (if (>= index 0)
+                      (setq img (nth index bubbles--images)))
+                  (put-text-property (point) (1+ (point))
+                                     'display (cons img nil)))))
+            (forward-line 1))))
+    (save-excursion
+      (let ((inhibit-read-only t))
+        (goto-char (point-min))
+        (while (not (eobp))
+          (let ((disp-prop (get-text-property (point) 'display)))
+            (if (and (listp disp-prop)
+                     (listp (car disp-prop))
+                     (eq (caar disp-prop) 'image))
+                (put-text-property (point) (1+ (point)) 'display nil))
+            (forward-char 1)))
+        (put-text-property (point-min) (point-max) 'pointer 'arrow)))))
+
+(provide 'bubbles)
+
+;; arch-tag: 2cd7237a-b0ad-400d-a7fd-75f676dceb70
+;;; bubbles.el ends here
index 6cccb7b0f9c52e9c21cd339c6b0b2781e02a4f93..813c75d173120bf0292343df1d07bb1681e9d45d 100644 (file)
@@ -66,7 +66,8 @@
 (defvar gamegrid-score-file-length 50
   "Number of high scores to keep")
 
-(defvar gamegrid-user-score-file-directory "~/.emacs.d/games"
+(defvar gamegrid-user-score-file-directory
+  (concat user-emacs-directory "games")
   "A directory for game scores which can't be shared.
 If Emacs was built without support for shared game scores, then this
 directory will be used.")
@@ -319,7 +320,7 @@ static unsigned char gamegrid_bits[] = {
                          (< max-height height))
                      (setq max-height height))))))
       (when (and max-height (< max-height 1))
-       (set-face-attribute gamegrid-face nil :height max-height)))))
+       (face-spec-set gamegrid-face `((t :height ,max-height)))))))
 
 (defun gamegrid-initialize-display ()
   (setq gamegrid-display-mode (gamegrid-display-type))
@@ -385,6 +386,7 @@ static unsigned char gamegrid_bits[] = {
 (defun gamegrid-init (options)
   (setq buffer-read-only t
        truncate-lines t
+       line-spacing 0
        gamegrid-display-options options)
   (buffer-disable-undo (current-buffer))
   (gamegrid-initialize-display))
index b027db88ad67123102f498738989cbabcb692999..e5dde1fe79c4e21eb17c2f4b675d657834b1c2a7 100644 (file)
@@ -400,7 +400,7 @@ which a stone will be taken away) and target."
               (<= (current-column) solitaire-end-x)
               (>= (solitaire-current-line) solitaire-start-y)
               (<= (solitaire-current-line) solitaire-end-y)
-              (mapcar
+              (mapc
                (lambda (movesymbol)
                  (if (listp (solitaire-possible-move movesymbol))
                      (setq count (1+ count))))
@@ -446,13 +446,13 @@ Seen in info on text lines."
        ;; right S-left
        (solitaire-auto-eval nil))
     (solitaire-center-point)
-    (mapcar (lambda (op)
-             (if (memq op '(S-left S-right S-up S-down))
-                 (sit-for 0.2))
-             (execute-kbd-macro (vector op))
-             (if (memq op '(S-left S-right S-up S-down))
-                 (sit-for 0.4)))
-           allmoves))
+    (mapc (lambda (op)
+           (if (memq op '(S-left S-right S-up S-down))
+               (sit-for 0.2))
+           (execute-kbd-macro (vector op))
+           (if (memq op '(S-left S-right S-up S-down))
+               (sit-for 0.4)))
+         allmoves))
   (solitaire-do-check))
 
 (provide 'solitaire)
index 71ae01d23d911805b10eaa3d590cd66171580543..896c1d4ac0a969920ee3c685674194302fa31941 100644 (file)
@@ -74,6 +74,7 @@ If nil, don't interrupt for about 1^26 seconds.")
                        zone-pgm-drip-fretfully
                        zone-pgm-five-oclock-swan-dive
                        zone-pgm-martini-swan-dive
+                       zone-pgm-rat-race
                        zone-pgm-paragraph-spaz
                        zone-pgm-stress
                        zone-pgm-stress-destress
@@ -85,30 +86,10 @@ If nil, don't interrupt for about 1^26 seconds.")
      ,@body))
 
 (defmacro zone-hiding-modeline (&rest body)
-  `(let (bg mode-line-fg mode-line-bg mode-line-box)
-     (unwind-protect
-         (progn
-           (when (and (= 0 (get 'zone 'modeline-hidden-level))
-                      (display-color-p))
-             (setq bg (face-background 'default)
-                   mode-line-box (face-attribute 'mode-line :box)
-                   mode-line-fg (face-attribute 'mode-line :foreground)
-                   mode-line-bg (face-attribute 'mode-line :background))
-             (set-face-attribute 'mode-line nil
-                                 :foreground bg
-                                 :background bg
-                                 :box nil))
-           (put 'zone 'modeline-hidden-level
-                (1+ (get 'zone 'modeline-hidden-level)))
-           ,@body)
-       (put 'zone 'modeline-hidden-level
-            (1- (get 'zone 'modeline-hidden-level)))
-       (when (and (> 1 (get 'zone 'modeline-hidden-level))
-                  mode-line-fg)
-         (set-face-attribute 'mode-line nil
-                             :foreground mode-line-fg
-                             :background mode-line-bg
-                             :box mode-line-box)))))
+  ;; This formerly worked by temporarily altering face `mode-line',
+  ;; which did not even work right, it seems.
+  `(let (mode-line-format)
+     ,@body))
 
 (defun zone-call (program &optional timeout)
   "Call PROGRAM in a zoned way.
@@ -157,6 +138,7 @@ If the element is a function or a list of a function and a number,
       (sit-for 0 500)
       (let ((pgm (elt zone-programs (random (length zone-programs))))
             (ct (and f (frame-parameter f 'cursor-type)))
+            (show-trailing-whitespace nil)
             (restore (list '(kill-buffer outbuf))))
         (when ct
           (modify-frame-parameters f '((cursor-type . (bar . 0))))
@@ -398,20 +380,20 @@ If the element is a function or a list of a function and a number,
   (let* ((specs (apply
                  'vector
                  (let (res)
-                   (mapcar (lambda (ent)
-                             (let* ((beg (car ent))
-                                    (end (cdr ent))
-                                    (amt (if random-style
-                                             (funcall random-style)
-                                           (- (random 7) 3))))
-                               (when (< (- end (abs amt)) beg)
-                                 (setq amt (random (- end beg))))
-                               (unless (= 0 amt)
-                                 (setq res
-                                       (cons
-                                        (vector amt beg (- end (abs amt)))
-                                        res)))))
-                           (zone-line-specs))
+                   (mapc (lambda (ent)
+                          (let* ((beg (car ent))
+                                 (end (cdr ent))
+                                 (amt (if random-style
+                                          (funcall random-style)
+                                        (- (random 7) 3))))
+                            (when (< (- end (abs amt)) beg)
+                              (setq amt (random (- end beg))))
+                            (unless (= 0 amt)
+                              (setq res
+                                    (cons
+                                     (vector amt beg (- end (abs amt)))
+                                     res)))))
+                        (zone-line-specs))
                    res)))
          (n (length specs))
          amt aamt cut paste txt i ent)
@@ -568,6 +550,17 @@ If the element is a function or a list of a function and a number,
 (defun zone-pgm-martini-swan-dive ()
   (zone-pgm-drip t t))
 
+(defun zone-pgm-rat-race ()
+  (while (not (input-pending-p))
+    (zone-call '((zone-pgm-rotate 10)
+                 (zone-pgm-drip-fretfully 15)
+                 (zone-pgm-drip 10)
+                 ((lambda ()
+                    (goto-char (point-min))
+                    (while (re-search-forward " +$" nil t)
+                      (delete-region (match-beginning 0) (match-end 0))))
+                  5)))))
+
 
 ;;;; paragraph spazzing (for textish modes)
 
@@ -692,6 +685,7 @@ If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).")
       (life (or zone-pgm-random-life-wait (random 4)))
       (kill-buffer nil))))
 
+
 (random t)
 
 ;;;;;;;;;;;;;;;
index 412f0b342fc99aa31ec5aa59470e776269ff7aac..0f58956408308fb8d2fe959bc77cb51cf4d19589 100644 (file)
@@ -6,11 +6,11 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, print, PostScript
-;; Version: 6.8.4
+;; Version: 6.9.1
 ;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
 
-(defconst pr-version "6.8.4"
-  "printing.el, v 6.8.4 <2005/06/11 vinicius>
+(defconst pr-version "6.9.1"
+  "printing.el, v 6.9.1 <2007/08/02 vinicius>
 
 Please send all bug fixes and enhancements to
        Vinicius Jose Latorre <viniciusjl@ig.com.br>
@@ -1093,46 +1093,457 @@ If SUFFIX is non-nil, add that at the end of the file name."
          (set-default-file-modes umask)))))
 
 
-;; GNU Emacs
-(defalias 'pr-e-frame-char-height    'frame-char-height)
-(defalias 'pr-e-frame-char-width     'frame-char-width)
-(defalias 'pr-e-mouse-pixel-position 'mouse-pixel-position)
-;; XEmacs
-(defalias 'pr-x-add-submenu             'add-submenu)
-(defalias 'pr-x-event-function          'event-function)
-(defalias 'pr-x-event-object            'event-object)
-(defalias 'pr-x-find-menu-item          'find-menu-item)
-(defalias 'pr-x-font-height             'font-height)
-(defalias 'pr-x-font-width              'font-width)
-(defalias 'pr-x-get-popup-menu-response 'get-popup-menu-response)
-(defalias 'pr-x-make-event              'make-event)
-(defalias 'pr-x-misc-user-event-p       'misc-user-event-p)
-(defalias 'pr-x-relabel-menu-item       'relabel-menu-item)
-(defalias 'pr-x-event-x-pixel           'event-x-pixel)
-(defalias 'pr-x-event-y-pixel           'event-y-pixel)
+\f
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; XEmacs Definitions
+
 
 (cond
  ((featurep 'xemacs)                   ; XEmacs
-  (defvar current-menubar     nil)
-  (defvar current-mouse-event nil)
-  (defvar zmacs-region-stays  nil)
+  ;; XEmacs
   (defalias 'pr-f-set-keymap-parents 'set-keymap-parents)
   (defalias 'pr-f-set-keymap-name    'set-keymap-name)
+
+  ;; XEmacs
   (defun pr-f-read-string (prompt initial history default)
     (let ((str (read-string prompt initial)))
       (if (and str (not (string= str "")))
          str
        default)))
+
+  ;; XEmacs
+  (defvar zmacs-region-stays  nil)
+
+  ;; XEmacs
   (defun pr-keep-region-active ()
-    (setq zmacs-region-stays t)))
+    (setq zmacs-region-stays t))
+
+  ;; XEmacs
+  (defun pr-region-active-p ()
+    (and pr-auto-region (not zmacs-region-stays) (ps-mark-active-p)))
+
+  ;; XEmacs
+  (defun pr-menu-char-height ()
+    (font-height (face-font 'default)))
+
+  ;; XEmacs
+  (defun pr-menu-char-width ()
+    (font-width (face-font 'default)))
+
+  ;; XEmacs
+  (defmacro pr-xemacs-global-menubar (&rest body)
+    `(save-excursion
+       (let ((temp (get-buffer-create (make-temp-name " *Temp"))))
+        ;; be sure to access global menubar
+        (set-buffer temp)
+        ,@body
+        (kill-buffer temp))))
+
+  ;; XEmacs
+  (defun pr-global-menubar (pr-menu-spec)
+    ;; Menu binding
+    (pr-xemacs-global-menubar
+     (add-submenu nil (cons "Printing" pr-menu-spec) "Apps"))
+    (setq pr-menu-print-item nil))
+
+  ;; XEmacs
+  (defvar current-mouse-event nil)
+  (defun pr-menu-position (entry index horizontal)
+    (make-event
+     'button-release
+     (list 'button 1
+          'x (- (event-x-pixel current-mouse-event) ; X
+                (* horizontal pr-menu-char-width))
+          'y (- (event-y-pixel current-mouse-event) ; Y
+                (* (pr-menu-index entry index) pr-menu-char-height)))))
+
+  (defvar pr-menu-position nil)
+  (defvar pr-menu-state nil)
+
+  ;; XEmacs
+  (defvar current-menubar nil)         ; to avoid compilation gripes
+  (defun pr-menu-lookup (path)
+    (car (find-menu-item current-menubar (cons "Printing" path))))
+
+  ;; XEmacs
+  (defun pr-menu-lock (entry index horizontal state path)
+    (when pr-menu-lock
+      (or (and pr-menu-position (eq state pr-menu-state))
+         (setq pr-menu-position (pr-menu-position entry index horizontal)
+               pr-menu-state    state))
+      (let* ((menu   (pr-menu-lookup path))
+            (result (get-popup-menu-response menu pr-menu-position)))
+       (and (misc-user-event-p result)
+            (funcall (event-function result)
+                     (event-object result))))
+      (setq pr-menu-position nil)))
+
+  ;; XEmacs
+  (defalias 'pr-update-mode-line 'set-menubar-dirty-flag)
+
+  ;; XEmacs
+  (defvar pr-ps-name-old     "PostScript Printers")
+  (defvar pr-txt-name-old    "Text Printers")
+  (defvar pr-ps-utility-old  "PostScript Utility")
+  (defvar pr-even-or-odd-old "Print All Pages")
+
+  ;; XEmacs
+  (defun pr-do-update-menus (&optional force)
+    (pr-menu-alist pr-ps-printer-alist
+                  'pr-ps-name
+                  'pr-menu-set-ps-title
+                  '("Printing")
+                  'pr-ps-printer-menu-modified
+                  force
+                  pr-ps-name-old
+                  'postscript 2)
+    (pr-menu-alist pr-txt-printer-alist
+                  'pr-txt-name
+                  'pr-menu-set-txt-title
+                  '("Printing")
+                  'pr-txt-printer-menu-modified
+                  force
+                  pr-txt-name-old
+                  'text 2)
+    (let ((save-var pr-ps-utility-menu-modified))
+      (pr-menu-alist pr-ps-utility-alist
+                    'pr-ps-utility
+                    'pr-menu-set-utility-title
+                    '("Printing" "PostScript Print" "File")
+                    'save-var
+                    force
+                    pr-ps-utility-old
+                    nil 1))
+    (pr-menu-alist pr-ps-utility-alist
+                  'pr-ps-utility
+                  'pr-menu-set-utility-title
+                  '("Printing" "PostScript Preview" "File")
+                  'pr-ps-utility-menu-modified
+                  force
+                  pr-ps-utility-old
+                  nil 1)
+    (pr-even-or-odd-pages ps-even-or-odd-pages force))
 
+  ;; XEmacs
+  (defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
+                             entry index)
+    (when (and alist (or force (symbol-value modified-sym)))
+      (pr-xemacs-global-menubar
+       (add-submenu menu-path
+                   (pr-menu-create name alist var-sym
+                                   fun entry index)))
+      (funcall fun (symbol-value var-sym))
+      (set modified-sym nil)))
+
+  ;; XEmacs
+  (defun pr-relabel-menu-item (newname var-sym)
+    (pr-xemacs-global-menubar
+     (relabel-menu-item
+      (list "Printing" (symbol-value var-sym))
+      newname)
+     (set var-sym newname)))
+
+  ;; XEmacs
+  (defun pr-menu-set-ps-title (value &optional item entry index)
+    (pr-relabel-menu-item (format "PostScript Printer: %s" value)
+                         'pr-ps-name-old)
+    (pr-ps-set-printer value)
+    (and index
+        (pr-menu-lock entry index 12 'toggle nil)))
+
+  ;; XEmacs
+  (defun pr-menu-set-txt-title (value &optional item entry index)
+    (pr-relabel-menu-item (format "Text Printer: %s" value)
+                         'pr-txt-name-old)
+    (pr-txt-set-printer value)
+    (and index
+        (pr-menu-lock entry index 12 'toggle nil)))
+
+  ;; XEmacs
+  (defun pr-menu-set-utility-title (value &optional item entry index)
+    (pr-xemacs-global-menubar
+     (let ((newname (format "%s" value)))
+       (relabel-menu-item
+       (list "Printing" "PostScript Print" "File" pr-ps-utility-old)
+       newname)
+       (relabel-menu-item
+       (list "Printing" "PostScript Preview" "File" pr-ps-utility-old)
+       newname)
+       (setq pr-ps-utility-old newname)))
+    (pr-ps-set-utility value)
+    (and index
+        (pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
+
+  ;; XEmacs
+  (defun pr-even-or-odd-pages (value &optional no-lock)
+    (pr-relabel-menu-item (cdr (assq value pr-even-or-odd-alist))
+                         'pr-even-or-odd-old)
+    (setq ps-even-or-odd-pages value)
+    (or no-lock
+       (pr-menu-lock 'postscript-options 8 12 'toggle nil)))
+
+  )
  (t                                    ; GNU Emacs
-  (defvar deactivate-mark nil)
+  ;; Do nothing
+  ))                                   ; end cond featurep
+
+
+\f
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; GNU Emacs Definitions
+
+
+(cond
+ ((featurep 'xemacs)                   ; XEmacs
+  ;; Do nothing
+  )
+ (t                                    ; GNU Emacs
+  ;; GNU Emacs
   (defalias 'pr-f-set-keymap-parents 'set-keymap-parent)
   (defalias 'pr-f-set-keymap-name    'ignore)
   (defalias 'pr-f-read-string        'read-string)
+
+  ;; GNU Emacs
+  (defvar deactivate-mark)
+
+  ;; GNU Emacs
   (defun pr-keep-region-active ()
-    (setq deactivate-mark nil))))
+    (setq deactivate-mark nil))
+
+  ;; GNU Emacs
+  (defun pr-region-active-p ()
+    (and pr-auto-region transient-mark-mode mark-active))
+
+  ;; GNU Emacs
+  (defun pr-menu-char-height ()
+    (frame-char-height))
+
+  ;; GNU Emacs
+  (defun pr-menu-char-width ()
+    (frame-char-width))
+
+  ;; GNU Emacs
+  ;; Menu binding
+  ;; Replace existing "print" item by "Printing" item.
+  ;; If you're changing this file, you'll load it a second,
+  ;; third... time, but "print" item exists only in the first load.
+  (eval-and-compile
+    (cond
+     ;; GNU Emacs 20
+     ((< emacs-major-version 21)
+      (defun pr-global-menubar (pr-menu-spec)
+       (require 'easymenu)
+       (easy-menu-change '("tools") "Printing" pr-menu-spec pr-menu-print-item)
+       (when pr-menu-print-item
+         (easy-menu-remove-item nil '("tools") pr-menu-print-item)
+         (setq pr-menu-print-item nil
+               pr-menu-bar (vector 'menu-bar 'tools
+                                   (pr-get-symbol "Printing")))))
+      )
+     ;; GNU Emacs 21 & 22
+     (t
+      (defun pr-global-menubar (pr-menu-spec)
+       (require 'easymenu)
+       (let ((menu-file (if (= emacs-major-version 21)
+                            '("menu-bar" "files") ; GNU Emacs 21
+                          '("menu-bar" "file")))) ; GNU Emacs 22 or higher
+         (cond
+          (pr-menu-print-item
+           (easy-menu-add-item global-map menu-file
+                               (easy-menu-create-menu "Print" pr-menu-spec)
+                               "print-buffer")
+           (dolist (item '("print-buffer"          "print-region"
+                           "ps-print-buffer-faces" "ps-print-region-faces"
+                           "ps-print-buffer"       "ps-print-region"))
+             (easy-menu-remove-item global-map menu-file item))
+           (setq pr-menu-print-item nil
+                 pr-menu-bar (vector 'menu-bar
+                                     (pr-get-symbol (nth 1 menu-file))
+                                     (pr-get-symbol "Print"))))
+          (t
+           (easy-menu-add-item global-map menu-file
+                               (easy-menu-create-menu "Print" pr-menu-spec)))
+          )))
+      )))
+
+  (eval-and-compile
+    (cond
+     (ps-windows-system
+      ;; GNU Emacs for Windows 9x/NT
+      (defun pr-menu-position (entry index horizontal)
+       (let ((pos (cdr (mouse-pixel-position))))
+         (list
+          (list (or (car pos) 0)       ; X
+                (- (or (cdr pos) 0)    ; Y
+                   (* (pr-menu-index entry index) pr-menu-char-height)))
+          (selected-frame))))          ; frame
+      )
+     (t
+      ;; GNU Emacs
+      (defun pr-menu-position (entry index horizontal)
+       (let ((pos (cdr (mouse-pixel-position))))
+         (list
+          (list (- (or (car pos) 0)    ; X
+                   (* horizontal pr-menu-char-width))
+                (- (or (cdr pos) 0)    ; Y
+                   (* (pr-menu-index entry index) pr-menu-char-height)))
+          (selected-frame))))          ; frame
+      )))
+
+  (defvar pr-menu-position nil)
+  (defvar pr-menu-state nil)
+
+  ;; GNU Emacs
+  (defun pr-menu-lookup (path)
+    (lookup-key global-map
+               (if path
+                   (vconcat pr-menu-bar
+                            (mapcar 'pr-get-symbol
+                                    (if (listp path)
+                                        path
+                                      (list path))))
+                 pr-menu-bar)))
+
+  ;; GNU Emacs
+  (defun pr-menu-lock (entry index horizontal state path)
+    (when pr-menu-lock
+      (or (and pr-menu-position (eq state pr-menu-state))
+         (setq pr-menu-position (pr-menu-position entry index horizontal)
+               pr-menu-state    state))
+      (let* ((menu   (pr-menu-lookup path))
+            (result (x-popup-menu pr-menu-position menu)))
+       (and result
+            (let ((command (lookup-key menu (vconcat result))))
+              (if (fboundp command)
+                  (funcall command)
+                (eval command)))))
+      (setq pr-menu-position nil)))
+
+  ;; GNU Emacs
+  (defalias 'pr-update-mode-line 'force-mode-line-update)
+
+  ;; GNU Emacs
+  (defun pr-do-update-menus (&optional force)
+    (pr-menu-alist pr-ps-printer-alist
+                  'pr-ps-name
+                  'pr-menu-set-ps-title
+                  "PostScript Printers"
+                  'pr-ps-printer-menu-modified
+                  force
+                  "PostScript Printers"
+                  'postscript 2)
+    (pr-menu-alist pr-txt-printer-alist
+                  'pr-txt-name
+                  'pr-menu-set-txt-title
+                  "Text Printers"
+                  'pr-txt-printer-menu-modified
+                  force
+                  "Text Printers"
+                  'text 2)
+    (let ((save-var pr-ps-utility-menu-modified))
+      (pr-menu-alist pr-ps-utility-alist
+                    'pr-ps-utility
+                    'pr-menu-set-utility-title
+                    '("PostScript Print" "File" "PostScript Utility")
+                    'save-var
+                    force
+                    "PostScript Utility"
+                    nil 1))
+    (pr-menu-alist pr-ps-utility-alist
+                  'pr-ps-utility
+                  'pr-menu-set-utility-title
+                  '("PostScript Preview" "File" "PostScript Utility")
+                  'pr-ps-utility-menu-modified
+                  force
+                  "PostScript Utility"
+                  nil 1)
+    (pr-even-or-odd-pages ps-even-or-odd-pages force))
+
+  ;; GNU Emacs
+  (defun pr-menu-get-item (name-list)
+    ;; NAME-LIST is a string or a list of strings.
+    (or (listp name-list)
+       (setq name-list (list name-list)))
+    (and name-list
+        (let* ((reversed (reverse name-list))
+               (name (pr-get-symbol (car reversed)))
+               (path (nreverse (cdr reversed)))
+               (menu (lookup-key
+                      global-map
+                      (vconcat pr-menu-bar
+                               (mapcar 'pr-get-symbol path)))))
+          (assq name (nthcdr 2 menu)))))
+
+  ;; GNU Emacs
+  (defvar pr-temp-menu nil)
+
+  ;; GNU Emacs
+  (defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
+                             entry index)
+    (when (and alist (or force (symbol-value modified-sym)))
+      (easy-menu-define pr-temp-menu nil ""
+       (pr-menu-create name alist var-sym fun entry index))
+      (let ((item (pr-menu-get-item menu-path)))
+       (and item
+            (let* ((binding     (nthcdr 3 item))
+                   (key-binding (cdr binding)))
+              (setcar binding pr-temp-menu)
+              (and key-binding (listp (car key-binding))
+                   (setcdr binding (cdr key-binding))) ; skip KEY-BINDING
+              (funcall fun (symbol-value var-sym) item))))
+      (set modified-sym nil)))
+
+  ;; GNU Emacs
+  (defun pr-menu-set-item-name (item name)
+    (and item
+        (setcar (nthcdr 2 item) name))) ; ITEM-NAME
+
+  ;; GNU Emacs
+  (defun pr-menu-set-ps-title (value &optional item entry index)
+    (pr-menu-set-item-name (or item
+                              (pr-menu-get-item "PostScript Printers"))
+                          (format "PostScript Printer: %s" value))
+    (pr-ps-set-printer value)
+    (and index
+        (pr-menu-lock entry index 12 'toggle nil)))
+
+  ;; GNU Emacs
+  (defun pr-menu-set-txt-title (value &optional item entry index)
+    (pr-menu-set-item-name (or item
+                              (pr-menu-get-item "Text Printers"))
+                          (format "Text Printer: %s" value))
+    (pr-txt-set-printer value)
+    (and index
+        (pr-menu-lock entry index 12 'toggle nil)))
+
+  ;; GNU Emacs
+  (defun pr-menu-set-utility-title (value &optional item entry index)
+    (let ((name (symbol-name value)))
+      (if item
+         (pr-menu-set-item-name item name)
+       (pr-menu-set-item-name
+        (pr-menu-get-item
+         '("PostScript Print"   "File" "PostScript Utility"))
+        name)
+       (pr-menu-set-item-name
+        (pr-menu-get-item
+         '("PostScript Preview" "File" "PostScript Utility"))
+        name)))
+    (pr-ps-set-utility value)
+    (and index
+        (pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
+
+  ;; GNU Emacs
+  (defun pr-even-or-odd-pages (value &optional no-lock)
+    (pr-menu-set-item-name (pr-menu-get-item "Print All Pages")
+                          (cdr (assq value pr-even-or-odd-alist)))
+    (setq ps-even-or-odd-pages value)
+    (or no-lock
+       (pr-menu-lock 'postscript-options 8 12 'toggle nil)))
+
+  ))                                   ; end cond featurep
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1592,7 +2003,7 @@ DEFAULT           It's a way to set default values when this entry is selected.
 
                   (VARIABLE . VALUE)
 
-               That associates VARIABLE with VALUE.  when this entry is
+               Which associates VARIABLE with VALUE.  When this entry is
                selected, it's executed the following command:
 
                   (set VARIABLE (eval VALUE))
@@ -2147,7 +2558,7 @@ DEFAULT           It's a way to set default values when this entry is selected.
 
                   (VARIABLE-SYM . VALUE)
 
-               That associates VARIABLE-SYM with VALUE.  when this entry is
+               Which associates VARIABLE-SYM with VALUE.  When this entry is
                selected, it's executed the following command:
 
                   (set (make-local-variable VARIABLE-SYM) (eval VALUE))
@@ -2327,7 +2738,7 @@ DEFAULT           It's a way to set default values when this entry is selected.
 
                   (VARIABLE . VALUE)
 
-               That associates VARIABLE with VALUE.  when this entry is
+               Which associates VARIABLE with VALUE.  When this entry is
                selected, it's executed the following command:
 
                   (set VARIABLE (eval VALUE))
@@ -2452,11 +2863,7 @@ See also `pr-menu-char-height' and `pr-menu-char-width'."
   :group 'printing)
 
 
-(defcustom pr-menu-char-height
-  (cond ((featurep 'xemacs)            ; XEmacs
-        (pr-x-font-height (face-font 'default)))
-       (t                              ; GNU Emacs
-        (pr-e-frame-char-height)))
+(defcustom pr-menu-char-height (pr-menu-char-height)
   "*Specify menu char height in pixels.
 
 This variable is used to guess which vertical position should be locked the
@@ -2468,11 +2875,7 @@ See also `pr-menu-lock' and `pr-menu-char-width'."
   :group 'printing)
 
 
-(defcustom pr-menu-char-width
-  (cond ((featurep 'xemacs)            ; XEmacs
-        (pr-x-font-width (face-font 'default)))
-       (t                              ; GNU Emacs
-        (pr-e-frame-char-width)))
+(defcustom pr-menu-char-width (pr-menu-char-width)
   "*Specify menu char width in pixels.
 
 This variable is used to guess which horizontal position should be locked the
@@ -2544,7 +2947,7 @@ SETTING           It's a cons like:
 
                   (VARIABLE . VALUE)
 
-               That associates VARIABLE with VALUE.  when this entry is
+               Which associates VARIABLE with VALUE.  When this entry is
                selected, it's executed the following command:
 
                  * If LOCAL is non-nil:
@@ -2772,15 +3175,6 @@ See `pr-ps-printer-alist'.")
 ;; Keys & Menus
 
 
-(defmacro pr-xemacs-global-menubar (&rest body)
-  `(save-excursion
-     (let ((temp (get-buffer-create (make-temp-name " *Temp"))))
-       ;; be sure to access global menubar
-       (set-buffer temp)
-       ,@body
-       (kill-buffer temp))))
-
-
 (defsubst pr-visible-p (key)
   (memq key pr-visible-entry-list))
 
@@ -2802,16 +3196,6 @@ See `pr-ps-printer-alist'.")
       'easy-menu-intern
     (lambda (s) (if (stringp s) (intern s) s))))
 
-(cond
- ((featurep 'xemacs)                   ; XEmacs
-  (defvar zmacs-region-stays nil)      ; to avoid compilation gripes
-  (defun pr-region-active-p ()
-    (and pr-auto-region (not zmacs-region-stays) (ps-mark-active-p))))
-
- (t                                    ; GNU Emacs
-  (defun pr-region-active-p ()
-    (and pr-auto-region transient-mark-mode mark-active))))
-
 
 (defconst pr-menu-spec
   ;; Menu mapping:
@@ -3070,51 +3454,7 @@ menu.
 
 Calls `pr-update-menus' to adjust menus."
   (interactive)
-  (cond
-   ((featurep 'xemacs)                 ; XEmacs
-    ;; Menu binding
-    (pr-xemacs-global-menubar
-     (pr-x-add-submenu nil (cons "Printing" pr-menu-spec) "Apps"))
-    (setq pr-menu-print-item nil))
-
-
-   (t                                  ; GNU Emacs
-    ;; Menu binding
-    (require 'easymenu)
-    ;; Replace existing "print" item by "Printing" item.
-    ;; If you're changing this file, you'll load it a second,
-    ;; third... time, but "print" item exists only in the first load.
-    (cond
-     ;; Emacs 20
-     ((< emacs-major-version 21)
-      (easy-menu-change '("tools") "Printing" pr-menu-spec pr-menu-print-item)
-      (when pr-menu-print-item
-       (easy-menu-remove-item nil '("tools") pr-menu-print-item)
-       (setq pr-menu-print-item nil
-             pr-menu-bar (vector 'menu-bar 'tools
-                                 (pr-get-symbol "Printing")))))
-     ;; Emacs 21 & 22
-     (t
-      (let ((menu-file (if (= emacs-major-version 21)
-                          '("menu-bar" "files") ; Emacs 21
-                        '("menu-bar" "file")))) ; Emacs 22 or higher
-       (cond
-        (pr-menu-print-item
-         (easy-menu-add-item global-map menu-file
-                             (easy-menu-create-menu "Print" pr-menu-spec)
-                             "print-buffer")
-         (dolist (item '("print-buffer"          "print-region"
-                         "ps-print-buffer-faces" "ps-print-region-faces"
-                         "ps-print-buffer"       "ps-print-region"))
-           (easy-menu-remove-item global-map menu-file item))
-         (setq pr-menu-print-item nil
-               pr-menu-bar (vector 'menu-bar
-                                   (pr-get-symbol (nth 1 menu-file))
-                                   (pr-get-symbol "Print"))))
-        (t
-         (easy-menu-add-item global-map menu-file
-                             (easy-menu-create-menu "Print" pr-menu-spec)))
-        ))))))
+  (pr-global-menubar pr-menu-spec)
   (pr-update-menus t))
 
 
@@ -4818,115 +5158,27 @@ Each element has the form:
 See `pr-visible-entry-alist'.")
 
 
-(defun pr-menu-index (entry index)
-  (let ((base-list
-        (cond ((eq entry 'text)
-               '(postscript))
-              ((eq entry 'postscript-options)
-               '(postscript text))
-              ((eq entry 'postscript-process)
-               '(postscript text postscript-options))
-              ((eq entry 'printing)
-               '(postscript text postscript-options postscript-process))
-              (t
-               nil)
-              ))
-       key)
-    (while base-list
-      (setq key       (car base-list)
-           base-list (cdr base-list))
-      (and (pr-visible-p key)
-          (setq index (+ index
-                         (cdr (assq key pr-menu-entry-alist)))))))
-  (+ index 2))
-
-
-(defvar pr-menu-position nil)
-(defvar pr-menu-state nil)
-
-
-(cond
- ((featurep 'xemacs)
-  ;; XEmacs
-  (defvar current-mouse-event nil)     ; to avoid compilation gripes
-  (defun pr-menu-position (entry index horizontal)
-    (pr-x-make-event
-     'button-release
-     (list 'button 1
-          'x (- (pr-x-event-x-pixel current-mouse-event) ; X
-                (* horizontal pr-menu-char-width))
-          'y (- (pr-x-event-y-pixel current-mouse-event) ; Y
-                (* (pr-menu-index entry index) pr-menu-char-height)))))
-  )
- (ps-windows-system
-  ;; GNU Emacs for Windows 9x/NT
-  (defun pr-menu-position (entry index horizontal)
-    (let ((pos (cdr (pr-e-mouse-pixel-position))))
-      (list
-       (list (or (car pos) 0)          ; X
-            (- (or (cdr pos) 0)        ; Y
-               (* (pr-menu-index entry index) pr-menu-char-height)))
-       (selected-frame))))             ; frame
-  )
- (t
-  ;; GNU Emacs
-  (defun pr-menu-position (entry index horizontal)
-    (let ((pos (cdr (pr-e-mouse-pixel-position))))
-      (list
-       (list (- (or (car pos) 0)       ; X
-               (* horizontal pr-menu-char-width))
-            (- (or (cdr pos) 0)        ; Y
-               (* (pr-menu-index entry index) pr-menu-char-height)))
-       (selected-frame))))             ; frame
-  ))
-
-(cond
- ((featurep 'xemacs)
-  ;; XEmacs
-  (defvar current-menubar nil)         ; to avoid compilation gripes
-  (defun pr-menu-lookup (path)
-    (car (pr-x-find-menu-item current-menubar (cons "Printing" path))))
-
-  ;; XEmacs
-  (defun pr-menu-lock (entry index horizontal state path)
-    (when pr-menu-lock
-      (or (and pr-menu-position (eq state pr-menu-state))
-         (setq pr-menu-position (pr-menu-position entry index horizontal)
-               pr-menu-state    state))
-      (let* ((menu   (pr-menu-lookup path))
-            (result (pr-x-get-popup-menu-response menu pr-menu-position)))
-       (and (pr-x-misc-user-event-p result)
-            (funcall (pr-x-event-function result)
-                     (pr-x-event-object result))))
-      (setq pr-menu-position nil))))
-
-
- (t
-  ;; GNU Emacs
-  (defun pr-menu-lookup (path)
-    (lookup-key global-map
-               (if path
-                   (vconcat pr-menu-bar
-                            (mapcar 'pr-get-symbol
-                                    (if (listp path)
-                                        path
-                                      (list path))))
-                 pr-menu-bar)))
-
-  ;; GNU Emacs
-  (defun pr-menu-lock (entry index horizontal state path)
-    (when pr-menu-lock
-      (or (and pr-menu-position (eq state pr-menu-state))
-         (setq pr-menu-position (pr-menu-position entry index horizontal)
-               pr-menu-state    state))
-      (let* ((menu   (pr-menu-lookup path))
-            (result (x-popup-menu pr-menu-position menu)))
-       (and result
-            (let ((command (lookup-key menu (vconcat result))))
-              (if (fboundp command)
-                  (funcall command)
-                (eval command)))))
-      (setq pr-menu-position nil)))))
+(defun pr-menu-index (entry index)
+  (let ((base-list
+        (cond ((eq entry 'text)
+               '(postscript))
+              ((eq entry 'postscript-options)
+               '(postscript text))
+              ((eq entry 'postscript-process)
+               '(postscript text postscript-options))
+              ((eq entry 'printing)
+               '(postscript text postscript-options postscript-process))
+              (t
+               nil)
+              ))
+       key)
+    (while base-list
+      (setq key       (car base-list)
+           base-list (cdr base-list))
+      (and (pr-visible-p key)
+          (setq index (+ index
+                         (cdr (assq key pr-menu-entry-alist)))))))
+  (+ index 2))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -4991,237 +5243,6 @@ If menu binding was not done, calls `pr-menu-bind'."
         alist)))
 
 
-(cond
- ((featurep 'xemacs)
-  ;; XEmacs
-  (defalias 'pr-update-mode-line 'set-menubar-dirty-flag)
-
-  ;; XEmacs
-  (defvar pr-ps-name-old     "PostScript Printers")
-  (defvar pr-txt-name-old    "Text Printers")
-  (defvar pr-ps-utility-old  "PostScript Utility")
-  (defvar pr-even-or-odd-old "Print All Pages")
-
-  ;; XEmacs
-  (defun pr-do-update-menus (&optional force)
-    (pr-menu-alist pr-ps-printer-alist
-                  'pr-ps-name
-                  'pr-menu-set-ps-title
-                  '("Printing")
-                  'pr-ps-printer-menu-modified
-                  force
-                  pr-ps-name-old
-                  'postscript 2)
-    (pr-menu-alist pr-txt-printer-alist
-                  'pr-txt-name
-                  'pr-menu-set-txt-title
-                  '("Printing")
-                  'pr-txt-printer-menu-modified
-                  force
-                  pr-txt-name-old
-                  'text 2)
-    (let ((save-var pr-ps-utility-menu-modified))
-      (pr-menu-alist pr-ps-utility-alist
-                    'pr-ps-utility
-                    'pr-menu-set-utility-title
-                    '("Printing" "PostScript Print"   "File")
-                    'save-var
-                    force
-                    pr-ps-utility-old
-                    nil 1))
-    (pr-menu-alist pr-ps-utility-alist
-                  'pr-ps-utility
-                  'pr-menu-set-utility-title
-                  '("Printing" "PostScript Preview" "File")
-                  'pr-ps-utility-menu-modified
-                  force
-                  pr-ps-utility-old
-                  nil 1)
-    (pr-even-or-odd-pages ps-even-or-odd-pages force))
-
-  ;; XEmacs
-  (defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
-                             entry index)
-    (when (and alist (or force (symbol-value modified-sym)))
-      (pr-xemacs-global-menubar
-       (pr-x-add-submenu menu-path
-                        (pr-menu-create name alist var-sym
-                                        fun entry index)))
-      (funcall fun (symbol-value var-sym))
-      (set modified-sym nil)))
-
-  ;; XEmacs
-  (defun pr-relabel-menu-item (newname var-sym)
-    (pr-xemacs-global-menubar
-     (pr-x-relabel-menu-item
-      (list "Printing" (symbol-value var-sym))
-      newname)
-     (set var-sym newname)))
-
-  ;; XEmacs
-  (defun pr-menu-set-ps-title (value &optional item entry index)
-    (pr-relabel-menu-item (format "PostScript Printer: %s" value)
-                         'pr-ps-name-old)
-    (pr-ps-set-printer value)
-    (and index
-        (pr-menu-lock entry index 12 'toggle nil)))
-
-  ;; XEmacs
-  (defun pr-menu-set-txt-title (value &optional item entry index)
-    (pr-relabel-menu-item (format "Text Printer: %s" value)
-                         'pr-txt-name-old)
-    (pr-txt-set-printer value)
-    (and index
-        (pr-menu-lock entry index 12 'toggle nil)))
-
-  ;; XEmacs
-  (defun pr-menu-set-utility-title (value &optional item entry index)
-    (pr-xemacs-global-menubar
-     (let ((newname (format "%s" value)))
-       (pr-x-relabel-menu-item
-       (list "Printing" "PostScript Print" "File" pr-ps-utility-old)
-       newname)
-       (pr-x-relabel-menu-item
-       (list "Printing" "PostScript Preview" "File" pr-ps-utility-old)
-       newname)
-       (setq pr-ps-utility-old newname)))
-    (pr-ps-set-utility value)
-    (and index
-        (pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
-
-  ;; XEmacs
-  (defun pr-even-or-odd-pages (value &optional no-lock)
-    (pr-relabel-menu-item (cdr (assq value pr-even-or-odd-alist))
-                         'pr-even-or-odd-old)
-    (setq ps-even-or-odd-pages value)
-    (or no-lock
-       (pr-menu-lock 'postscript-options 8 12 'toggle nil))))
-
-
- (t
-  ;; GNU Emacs
-  (defalias 'pr-update-mode-line 'force-mode-line-update)
-
-  ;; GNU Emacs
-  (defun pr-do-update-menus (&optional force)
-    (pr-menu-alist pr-ps-printer-alist
-                  'pr-ps-name
-                  'pr-menu-set-ps-title
-                  "PostScript Printers"
-                  'pr-ps-printer-menu-modified
-                  force
-                  "PostScript Printers"
-                  'postscript 2)
-    (pr-menu-alist pr-txt-printer-alist
-                  'pr-txt-name
-                  'pr-menu-set-txt-title
-                  "Text Printers"
-                  'pr-txt-printer-menu-modified
-                  force
-                  "Text Printers"
-                  'text 2)
-    (let ((save-var pr-ps-utility-menu-modified))
-      (pr-menu-alist pr-ps-utility-alist
-                    'pr-ps-utility
-                    'pr-menu-set-utility-title
-                    '("PostScript Print"   "File" "PostScript Utility")
-                    'save-var
-                    force
-                    "PostScript Utility"
-                    nil 1))
-    (pr-menu-alist pr-ps-utility-alist
-                  'pr-ps-utility
-                  'pr-menu-set-utility-title
-                  '("PostScript Preview" "File" "PostScript Utility")
-                  'pr-ps-utility-menu-modified
-                  force
-                  "PostScript Utility"
-                  nil 1)
-    (pr-even-or-odd-pages ps-even-or-odd-pages force))
-
-  ;; GNU Emacs
-  (defun pr-menu-get-item (name-list)
-    ;; NAME-LIST is a string or a list of strings.
-    (or (listp name-list)
-       (setq name-list (list name-list)))
-    (and name-list
-        (let* ((reversed (reverse name-list))
-               (name (pr-get-symbol (car reversed)))
-               (path (nreverse (cdr reversed)))
-               (menu (lookup-key
-                      global-map
-                      (vconcat pr-menu-bar
-                               (mapcar 'pr-get-symbol path)))))
-          (assq name (nthcdr 2 menu)))))
-
-  ;; GNU Emacs
-  (defvar pr-temp-menu nil)
-
-  ;; GNU Emacs
-  (defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
-                             entry index)
-    (when (and alist (or force (symbol-value modified-sym)))
-      (easy-menu-define pr-temp-menu nil ""
-       (pr-menu-create name alist var-sym fun entry index))
-      (let ((item (pr-menu-get-item menu-path)))
-       (and item
-            (let* ((binding     (nthcdr 3 item))
-                   (key-binding (cdr binding)))
-              (setcar binding pr-temp-menu)
-              (and key-binding (listp (car key-binding))
-                   (setcdr binding (cdr key-binding))) ; skip KEY-BINDING
-              (funcall fun (symbol-value var-sym) item))))
-      (set modified-sym nil)))
-
-  ;; GNU Emacs
-  (defun pr-menu-set-item-name (item name)
-    (and item
-        (setcar (nthcdr 2 item) name))) ; ITEM-NAME
-
-  ;; GNU Emacs
-  (defun pr-menu-set-ps-title (value &optional item entry index)
-    (pr-menu-set-item-name (or item
-                              (pr-menu-get-item "PostScript Printers"))
-                          (format "PostScript Printer: %s" value))
-    (pr-ps-set-printer value)
-    (and index
-        (pr-menu-lock entry index 12 'toggle nil)))
-
-  ;; GNU Emacs
-  (defun pr-menu-set-txt-title (value &optional item entry index)
-    (pr-menu-set-item-name (or item
-                              (pr-menu-get-item "Text Printers"))
-                          (format "Text Printer: %s" value))
-    (pr-txt-set-printer value)
-    (and index
-        (pr-menu-lock entry index 12 'toggle nil)))
-
-  ;; GNU Emacs
-  (defun pr-menu-set-utility-title (value &optional item entry index)
-    (let ((name (symbol-name value)))
-      (if item
-         (pr-menu-set-item-name item name)
-       (pr-menu-set-item-name
-        (pr-menu-get-item
-         '("PostScript Print"   "File" "PostScript Utility"))
-        name)
-       (pr-menu-set-item-name
-        (pr-menu-get-item
-         '("PostScript Preview" "File" "PostScript Utility"))
-        name)))
-    (pr-ps-set-utility value)
-    (and index
-        (pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
-
-  ;; GNU Emacs
-  (defun pr-even-or-odd-pages (value &optional no-lock)
-    (pr-menu-set-item-name (pr-menu-get-item "Print All Pages")
-                          (cdr (assq value pr-even-or-odd-alist)))
-    (setq ps-even-or-odd-pages value)
-    (or no-lock
-       (pr-menu-lock 'postscript-options 8 12 'toggle nil)))))
-
-
 (defun pr-ps-set-utility (value)
   (let ((item (cdr (assq value pr-ps-utility-alist))))
     (or item
@@ -5290,15 +5311,15 @@ If menu binding was not done, calls `pr-menu-bind'."
 
 (defun pr-eval-local-alist (alist)
   (let (local-list)
-    (mapcar #'(lambda (option)
-               (let ((var-sym (car option))
-                     (value   (cdr option)))
-                 (setq local-list
-                       (if (eq var-sym 'inherits-from:)
-                           (nconc (pr-eval-setting-alist value) local-list)
-                         (set (make-local-variable var-sym) (eval value))
-                         (cons var-sym local-list)))))
-           alist)
+    (mapc #'(lambda (option)
+             (let ((var-sym (car option))
+                   (value   (cdr option)))
+               (setq local-list
+                     (if (eq var-sym 'inherits-from:)
+                         (nconc (pr-eval-setting-alist value) local-list)
+                       (set (make-local-variable var-sym) (eval value))
+                       (cons var-sym local-list)))))
+         alist)
     local-list))
 
 
@@ -5320,7 +5341,7 @@ If menu binding was not done, calls `pr-menu-bind'."
                  (setq local-list
                        (pr-eval-setting-alist inherits global
                                               (cons inherits old)))))
-          (mapcar
+          (mapc
            (cond ((not local)          ; global settings
                   #'(lambda (option)
                       (let ((var-sym (car option)))
@@ -5997,9 +6018,10 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
 ;; Printing Interface (inspired on ps-print-interface.el)
 
 
-(require 'widget)
-(require 'wid-edit)
-(require 'cus-edit)
+(eval-when-compile
+  (require 'cus-edit)
+  (require 'wid-edit)
+  (require 'widget))
 
 
 (defvar pr-i-window-configuration nil)
index 478a07bc3b6bbf8ca666e69bdc217d9c4432f6f3..07d38dbdaa235d4594df2a293d8b926757516768 100644 (file)
@@ -1145,7 +1145,7 @@ If you use ada-xref.el:
 
   (interactive)
   (kill-all-local-variables)
-  
+
   (set-syntax-table ada-mode-syntax-table)
 
   (set (make-local-variable 'require-final-newline) mode-require-final-newline)
@@ -1423,12 +1423,12 @@ If you use ada-xref.el:
 Casing exception lists are `ada-case-exception' and `ada-case-exception-substring'."
   (find-file (expand-file-name file-name))
   (erase-buffer)
-  (mapcar (lambda (x) (insert (car x) "\n"))
-         (sort (copy-sequence ada-case-exception)
-               (lambda(a b) (string< (car a) (car b)))))
-  (mapcar (lambda (x) (insert "*" (car x) "\n"))
-           (sort (copy-sequence ada-case-exception-substring)
-                 (lambda(a b) (string< (car a) (car b)))))
+  (mapc (lambda (x) (insert (car x) "\n"))
+       (sort (copy-sequence ada-case-exception)
+             (lambda(a b) (string< (car a) (car b)))))
+  (mapc (lambda (x) (insert "*" (car x) "\n"))
+       (sort (copy-sequence ada-case-exception-substring)
+             (lambda(a b) (string< (car a) (car b)))))
   (save-buffer)
   (kill-buffer nil)
   )
@@ -4583,7 +4583,7 @@ Moves to 'begin' if in a declarative part."
   ;; The following keys are bound to functions defined in ada-xref.el or
   ;; ada-prj,el., However, RMS rightly thinks that the code should be shared,
   ;; and activated only if the right compiler is used
-  
+
   (define-key ada-mode-map (if (featurep 'xemacs) '(shift button3) [S-mouse-3])
     'ada-point-and-xref)
   (define-key ada-mode-map [(control tab)] 'ada-complete-identifier)
index 7cff0158f8a6be5223b27288b4374e9ec317e750..b3f059b2b347da6e079e34fdb392695271a6d8ef 100644 (file)
@@ -254,8 +254,8 @@ The current buffer must be the project editing buffer."
       (progn
        (setq widget-field-new  nil
              widget-field-list nil)
-       (mapcar (lambda (x) (delete-overlay x)) (car (overlay-lists)))
-       (mapcar (lambda (x) (delete-overlay x)) (cdr (overlay-lists)))))
+       (mapc (lambda (x) (delete-overlay x)) (car (overlay-lists)))
+       (mapc (lambda (x) (delete-overlay x)) (cdr (overlay-lists)))))
 
   ;;  Display the tabs
 
index e01579917f6c6e286ee7973e42e725735b686a22..d47a1c4d2cc1f1f631eb356463750c1ad8894baa 100644 (file)
@@ -49,7 +49,7 @@
   '(("\\<dnl\\>" 0 '(11))))
 
 (defconst autoconf-definition-regexp
-  "AC_\\(SUBST\\|DEFINE\\(_UNQUOTED\\)?\\)(\\(\\sw+\\)")
+  "AC_\\(SUBST\\|DEFINE\\(_UNQUOTED\\)?\\)(\\[*\\(\\sw+\\)\\]*")
 
 (defvar autoconf-font-lock-keywords
   `(("\\_<A[CHMS]_\\sw+" . font-lock-keyword-face)
index 48fa7d99f5a792b66720d6671a2c921a1efdafa5..db052c4b8f52d8611b57aea903efa4d10cf211b8 100644 (file)
@@ -2595,7 +2595,7 @@ sentence motion in or near comments and multiline strings."
 ;; set up electric character functions to work with pending-del,
 ;; (a.k.a. delsel) mode.  All symbols get the t value except
 ;; the functions which delete, which gets 'supersede.
-(mapcar
+(mapc
  (function
   (lambda (sym)
     (put sym 'delete-selection t)      ; for delsel (Emacs)
@@ -3074,7 +3074,8 @@ non-nil."
 indent the current line syntactically."
   ;; Emacs has a variable called mark-active, XEmacs uses region-active-p
   (interactive)
-  (if (c-region-is-active-p)
+  (if (and transient-mark-mode mark-active
+          (not (eq (region-beginning) (region-end))))
       (c-indent-region (region-beginning) (region-end))
     (c-indent-line)))
 
index 60bb3cfb97726befd7aee9b88132eab228284971..b9771260b02c3d0912e817023303bcabe239f77a 100644 (file)
@@ -2146,7 +2146,7 @@ need for `pike-font-lock-extra-types'.")
        0 ,c-doc-markup-face-name prepend nil)
       (,(concat header "\\(" "@" symbol "\\):")
        1 ,c-doc-markup-face-name prepend nil)
-      (,(concat "[#%]" symbol)
+      (,(concat "[#%@]" symbol)
        0 ,c-doc-markup-face-name prepend nil))
     ))
 
index d0ff9c523ade6d91a284ab14783f37bc78eeb187..a4dfe41ca7811546533dc70b280e08ad06b63f91 100644 (file)
@@ -1970,6 +1970,7 @@ identifiers that follows the type in a normal declaration."
   "Statement keywords followed directly by a substatement."
   t    '("do" "else")
   c++  '("do" "else" "try")
+  objc '("do" "else" "@finally" "@try")
   java '("do" "else" "finally" "try")
   idl  nil)
 
@@ -1983,6 +1984,7 @@ identifiers that follows the type in a normal declaration."
   "Statement keywords followed by a paren sexp and then by a substatement."
   t    '("for" "if" "switch" "while")
   c++  '("for" "if" "switch" "while" "catch")
+  objc '("for" "if" "switch" "while" "@catch" "@synchronized")
   java '("for" "if" "switch" "while" "catch" "synchronized")
   idl  nil
   pike '("for" "if" "switch" "while" "foreach")
@@ -2014,6 +2016,7 @@ identifiers that follows the type in a normal declaration."
 (c-lang-defconst c-simple-stmt-kwds
   "Statement keywords followed by an expression or nothing."
   t    '("break" "continue" "goto" "return")
+  objc '("break" "continue" "goto" "return" "@throw")
   ;; Note: `goto' is not valid in Java, but the keyword is still reserved.
   java '("break" "continue" "goto" "return" "throw")
   idl  nil
index 8669a41c2f03970d4c3e5e6f3820f35735af9123..00ec64a85a0e2686560c4677a833d55d035a1020 100644 (file)
@@ -269,7 +269,9 @@ control).  See \"cc-mode.el\" for more info."
                             'c-indent-new-comment-line
                             c-mode-base-map global-map)
   (substitute-key-definition 'indent-for-tab-command
-                            'c-indent-command
+                            ;; XXX Is this the right thing to do
+                            ;; here?
+                            'c-indent-line-or-region
                             c-mode-base-map global-map)
   (when (fboundp 'comment-indent-new-line)
     ;; indent-new-comment-line has changed name to
@@ -839,7 +841,7 @@ Note that the style variables are always made local to the buffer."
     (and c-file-style
         (c-set-style c-file-style))
     (and c-file-offsets
-        (mapcar
+        (mapc
          (lambda (langentry)
            (let ((langelem (car langentry))
                  (offset (cdr langentry)))
@@ -1428,15 +1430,15 @@ Key bindings:
                     adaptive-fill-mode
                     adaptive-fill-regexp)
                   nil)))
-       (mapcar (lambda (var) (unless (boundp var)
-                               (setq vars (delq var vars))))
-               '(signal-error-on-buffer-boundary
-                 filladapt-mode
-                 defun-prompt-regexp
-                 font-lock-mode
-                 font-lock-maximum-decoration
-                 parse-sexp-lookup-properties
-                 lookup-syntax-properties))
+       (mapc (lambda (var) (unless (boundp var)
+                             (setq vars (delq var vars))))
+             '(signal-error-on-buffer-boundary
+               filladapt-mode
+               defun-prompt-regexp
+               font-lock-mode
+               font-lock-maximum-decoration
+               parse-sexp-lookup-properties
+               lookup-syntax-properties))
        vars)
       (lambda ()
        (run-hooks 'c-prepare-bug-report-hooks)
index c5b9b0638120a0a9d182b6c704ae41ee893a5918..1ffcb170ca3f230df1de826f83e775d74b95e6c5 100644 (file)
@@ -381,11 +381,11 @@ a null operation."
       ;; fallback entry.
       (setq c-special-indent-hook
            (default-value 'c-special-indent-hook)))
-    (mapcar (lambda (elem)
-             (c-set-style-1 elem dont-override))
-           ;; Need to go through the variables backwards when we
-           ;; don't override any settings.
-           (if (eq dont-override t) (nreverse vars) vars)))
+    (mapc (lambda (elem)
+           (c-set-style-1 elem dont-override))
+         ;; Need to go through the variables backwards when we
+         ;; don't override any settings.
+         (if (eq dont-override t) (nreverse vars) vars)))
   (setq c-indentation-style stylename)
   (c-keep-region-active))
 
@@ -636,7 +636,7 @@ any reason to call this function directly."
                'make-variable-buffer-local))
        (varsyms (cons 'c-indentation-style (copy-alist c-style-variables))))
     (delq 'c-special-indent-hook varsyms)
-    (mapcar func varsyms)
+    (mapc func varsyms)
     ;; Hooks must be handled specially
     (if this-buf-only-p
        (make-local-hook 'c-special-indent-hook)
index a978415d59e82cae4d029669bf48af5303d1920e..9ed7ba09de9fac15d1dcd3cb6d4ba7254b6b7852 100644 (file)
 ;; 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 . VISITED) for all LOCs pertaining to
-;; that file.
+;; (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 ...) ...)
 
 ;;;###autoload
 (defcustom compilation-mode-hook nil
-  "*List of hook functions run by `compilation-mode' (see `run-mode-hooks')."
+  "List of hook functions run by `compilation-mode' (see `run-mode-hooks')."
   :type 'hook
   :group 'compilation)
 
 ;;;###autoload
 (defcustom compilation-window-height nil
-  "*Number of lines in a compilation window.  If nil, use Emacs default."
+  "Number of lines in a compilation window.  If nil, use Emacs default."
   :type '(choice (const :tag "Default" nil)
                 integer)
   :group 'compilation)
@@ -164,6 +167,10 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
      "^[ \t]*\\[[^] \n]+\\][ \t]*\\([^: \n]+\\):\\([0-9]+\\):\\(?:\\([0-9]+\\):[0-9]+:[0-9]+:\\)?\
 \\( warning\\)?" 1 2 3 (4))
 
+    (maven
+     ;; Maven is a popular build tool for Java.  Maven is Free Software.
+     "\\(.*?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\]" 1 2 3)
+
     (bash
      "^\\([^: \n\t]+\\): line \\([0-9]+\\):" 1 2)
 
@@ -439,7 +446,7 @@ Highlight entire line if t; don't highlight source lines if nil.")
   "Overlay used to temporarily highlight compilation matches.")
 
 (defcustom compilation-error-screen-columns t
-  "*If non-nil, column numbers in error messages are screen columns.
+  "If non-nil, column numbers in error messages are screen columns.
 Otherwise they are interpreted as character positions, with
 each character occupying one column.
 The default is to use screen columns, which requires that the compilation
@@ -450,21 +457,21 @@ especially the TAB character."
   :version "20.4")
 
 (defcustom compilation-read-command t
-  "*Non-nil means \\[compile] reads the compilation command to use.
+  "Non-nil means \\[compile] reads the compilation command to use.
 Otherwise, \\[compile] just uses the value of `compile-command'."
   :type 'boolean
   :group 'compilation)
 
 ;;;###autoload
 (defcustom compilation-ask-about-save t
-  "*Non-nil means \\[compile] asks which buffers to save before compiling.
+  "Non-nil means \\[compile] asks which buffers to save before compiling.
 Otherwise, it saves all modified buffers without asking."
   :type 'boolean
   :group 'compilation)
 
 ;;;###autoload
 (defcustom compilation-search-path '(nil)
-  "*List of directories to search for source files named in error messages.
+  "List of directories to search for source files named in error messages.
 Elements should be directory names, not file names of directories.
 The value nil as an element means to try the default directory."
   :type '(repeat (choice (const :tag "Default" nil)
@@ -473,7 +480,7 @@ The value nil as an element means to try the default directory."
 
 ;;;###autoload
 (defcustom compile-command "make -k "
-  "*Last shell command used to do a compilation; default for next compilation.
+  "Last shell command used to do a compilation; default for next compilation.
 
 Sometimes it is useful for files to supply local values for this variable.
 You might also use mode hooks to specify it in certain modes, like this:
@@ -491,7 +498,7 @@ You might also use mode hooks to specify it in certain modes, like this:
 
 ;;;###autoload
 (defcustom compilation-disable-input nil
-  "*If non-nil, send end-of-file as compilation process input.
+  "If non-nil, send end-of-file as compilation process input.
 This only affects platforms that support asynchronous processes (see
 `start-process'); synchronous compilation processes never accept input."
   :type 'boolean
@@ -602,6 +609,16 @@ Faces `compilation-error-face', `compilation-warning-face',
 (defvar compilation-error-list nil)
 (defvar compilation-old-error-list nil)
 
+(defcustom compilation-auto-jump-to-first-error nil
+  "If non-nil, automatically jump to the first error after `compile'."
+  :type 'boolean
+  :group 'compilation
+  :version "23.1")
+
+(defvar compilation-auto-jump-to-next nil
+  "If non-nil, automatically jump to the next error encountered.")
+(make-variable-buffer-local 'compilation-auto-jump-to-next)
+
 (defun compilation-face (type)
   (or (and (car type) (match-end (car type)) compilation-warning-face)
       (and (cdr type) (match-end (cdr type)) compilation-info-face)
@@ -649,13 +666,18 @@ Faces `compilation-error-face', `compilation-warning-face',
              l2
            (setcdr l1 (cons (list ,key) l2)))))))
 
+(defun compilation-auto-jump (buffer pos)
+  (with-current-buffer buffer
+    (goto-char pos)
+    (compile-goto-error)))
 
 ;; This function is the central driver, called when font-locking to gather
 ;; all information needed to later jump to corresponding source code.
 ;; 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))
+  (unless (< (next-single-property-change (match-beginning 0)
+                                          'directory nil (point))
             (point))
     (if file
        (if (functionp file)
@@ -707,6 +729,13 @@ Faces `compilation-error-face', `compilation-warning-face',
        (setq type (or (and (car type) (match-end (car type)) 1)
                       (and (cdr type) (match-end (cdr type)) 0)
                       2)))
+
+    (when (and compilation-auto-jump-to-next
+               (>= type compilation-skip-threshold))
+      (kill-local-variable 'compilation-auto-jump-to-next)
+      (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)))
 
 (defun compilation-move-to-column (col screen)
@@ -913,7 +942,7 @@ to a function that generates a unique name."
   (unless (equal command (eval compile-command))
     (setq compile-command command))
   (save-some-buffers (not compilation-ask-about-save) nil)
-  (setq compilation-directory default-directory)
+  (setq-default compilation-directory default-directory)
   (compilation-start command comint))
 
 ;; run compile with the default command line
@@ -923,15 +952,12 @@ If this is run in a Compilation mode buffer, re-use the arguments from the
 original use.  Otherwise, recompile using `compile-command'."
   (interactive)
   (save-some-buffers (not compilation-ask-about-save) nil)
-  (let ((default-directory
-          (or (and (not (eq major-mode (nth 1 compilation-arguments)))
-                   compilation-directory)
-              default-directory)))
+  (let ((default-directory (or compilation-directory default-directory)))
     (apply 'compilation-start (or compilation-arguments
                                  `(,(eval compile-command))))))
 
 (defcustom compilation-scroll-output nil
-  "*Non-nil to scroll the *compilation* buffer window as output appears.
+  "Non-nil to scroll the *compilation* buffer window as output appears.
 
 Setting it causes the Compilation mode commands to put point at the
 end of their output window so that the end of the output is always
@@ -953,8 +979,7 @@ Otherwise, construct a buffer name from MODE-NAME."
         (funcall name-function mode-name))
        (compilation-buffer-name-function
         (funcall compilation-buffer-name-function mode-name))
-       ((and (eq mode-command major-mode)
-             (eq major-mode (nth 1 compilation-arguments)))
+       ((eq mode-command major-mode)
         (buffer-name))
        (t
         (concat "*" (downcase mode-name) "*"))))
@@ -1006,7 +1031,7 @@ Returns the compilation buffer created."
     (with-current-buffer
        (setq outbuf
              (get-buffer-create
-              (compilation-buffer-name name-of-mode mode name-function)))
+               (compilation-buffer-name name-of-mode mode name-function)))
       (let ((comp-proc (get-buffer-process (current-buffer))))
        (if comp-proc
            (if (or (not (eq (process-status comp-proc) 'run))
@@ -1024,12 +1049,17 @@ Returns the compilation buffer created."
       (buffer-disable-undo (current-buffer))
       ;; first transfer directory from where M-x compile was called
       (setq default-directory thisdir)
+      ;; Remember the original dir, so we can use it when we recompile.
+      ;; default-directory' can't be used reliably for that because it may be
+      ;; affected by the special handling of "cd ...;".
+      (set (make-local-variable 'compilation-directory) thisdir)
       ;; Make compilation buffer read-only.  The filter can still write it.
       ;; Clear out the compilation buffer.
       (let ((inhibit-read-only t)
            (default-directory thisdir))
-       ;; Then evaluate a cd command if any, but don't perform it yet, else start-command
-       ;; would do it again through the shell: (cd "..") AND sh -c "cd ..; make"
+       ;; Then evaluate a cd command if any, but don't perform it yet, else
+       ;; start-command would do it again through the shell: (cd "..") AND
+       ;; sh -c "cd ..; make"
        (cd (if (string-match "^\\s *cd\\(?:\\s +\\(\\S +?\\)\\)?\\s *[;&\n]" command)
                (if (match-end 1)
                    (substitute-env-vars (match-string 1 command))
@@ -1045,6 +1075,8 @@ Returns the compilation buffer created."
        (if highlight-regexp
            (set (make-local-variable 'compilation-highlight-regexp)
                 highlight-regexp))
+        (if compilation-auto-jump-to-first-error
+            (set (make-local-variable 'compilation-auto-jump-to-next) t))
        ;; Output a mode setter, for saving and later reloading this buffer.
        (insert "-*- mode: " name-of-mode
                "; default-directory: " (prin1-to-string default-directory)
@@ -1093,53 +1125,31 @@ Returns the compilation buffer created."
            (funcall compilation-process-setup-function))
        (compilation-set-window-height outwin)
        ;; Start the compilation.
-       (if (fboundp 'start-process)
-           (let ((proc (if (eq mode t)
-                           (get-buffer-process
-                            (with-no-warnings
-                             (comint-exec outbuf (downcase mode-name)
-                                          shell-file-name nil `("-c" ,command))))
-                         (start-process-shell-command (downcase mode-name)
-                                                      outbuf command))))
-             ;; Make the buffer's mode line show process state.
-             (setq mode-line-process '(":%s"))
-             (set-process-sentinel proc 'compilation-sentinel)
-             (set-process-filter proc 'compilation-filter)
-             (set-marker (process-mark proc) (point) outbuf)
-             (when compilation-disable-input
-                (condition-case nil
-                    (process-send-eof proc)
-                  ;; The process may have exited already.
-                  (error nil)))
-             (setq compilation-in-progress
-                   (cons proc compilation-in-progress)))
-         ;; No asynchronous processes available.
-         (message "Executing `%s'..." command)
-         ;; Fake modeline display as if `start-process' were run.
-         (setq mode-line-process ":run")
-         (force-mode-line-update)
-         (sit-for 0)                   ; Force redisplay
-         (let* ((buffer-read-only nil) ; call-process needs to modify outbuf
-                (status (call-process shell-file-name nil outbuf nil "-c"
-                                      command)))
-           (cond ((numberp status)
-                  (compilation-handle-exit 'exit status
-                                           (if (zerop status)
-                                               "finished\n"
-                                             (format "\
-exited abnormally with code %d\n"
-                                                     status))))
-                 ((stringp status)
-                  (compilation-handle-exit 'signal status
-                                           (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)))
+       (let ((proc
+              (if (eq mode t)
+                  ;; comint uses `start-file-process'.
+                  (get-buffer-process
+                   (with-no-warnings
+                     (comint-exec
+                      outbuf (downcase mode-name)
+                      (if (file-remote-p default-directory)
+                          "/bin/sh"
+                        shell-file-name)
+                      nil `("-c" ,command))))
+                (start-file-process-shell-command (downcase mode-name)
+                                                  outbuf command))))
+         ;; Make the buffer's mode line show process state.
+         (setq mode-line-process '(":%s"))
+         (set-process-sentinel proc 'compilation-sentinel)
+         (set-process-filter proc 'compilation-filter)
+         (set-marker (process-mark proc) (point) outbuf)
+         (when compilation-disable-input
+           (condition-case nil
+               (process-send-eof proc)
+             ;; The process may have exited already.
+             (error nil)))
+         (setq compilation-in-progress
+               (cons proc compilation-in-progress))))
       ;; Now finally cd to where the shell started make/grep/...
       (setq default-directory thisdir))
     (if (buffer-local-value 'compilation-scroll-output outbuf)
@@ -1260,7 +1270,7 @@ exited abnormally with code %d\n"
   "*If non-nil, skip multiple error messages for the same source location.")
 
 (defcustom compilation-skip-threshold 1
-  "*Compilation motion commands skip less important messages.
+  "Compilation motion commands skip less important messages.
 The value can be either 2 -- skip anything less than error, 1 --
 skip anything less than warning or 0 -- don't skip any messages.
 Note that all messages not positively identified as warning or
@@ -1272,7 +1282,7 @@ info, are considered errors."
   :version "22.1")
 
 (defcustom compilation-skip-visited nil
-  "*Compilation motion commands skip visited messages if this is t.
+  "Compilation motion commands skip visited messages if this is t.
 Visited messages are ones for which the file, line and column have been jumped
 to from the current content in the current compilation buffer, even if it was
 from a different message."
@@ -1373,6 +1383,8 @@ Optional argument MINOR indicates this is called from
   ;; with the next-error function in simple.el, and it's only
   ;; coincidentally named similarly to compilation-next-error.
   (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)
@@ -1521,7 +1533,7 @@ Just inserts the text, but uses `insert-before-markers'."
               (eq (prog1 last (setq last (nth 2 (car msg))))
                   last))
           (if compilation-skip-visited
-              (nthcdr 4 (car msg)))
+              (nthcdr 5 (car msg)))
           (if compilation-skip-to-next-location
               (eq (car msg) loc))
           ;; count this message only if none of the above are true
@@ -1626,7 +1638,7 @@ This is the value of `next-error-function' in Compilation buffers."
   (when reset
     (setq compilation-current-error nil))
   (let* ((columns compilation-error-screen-columns) ; buffer's local value
-        (last 1)
+        (last 1) timestamp
         (loc (compilation-next-error (or n 1) nil
                                      (or compilation-current-error
                                          compilation-messages-start
@@ -1639,10 +1651,17 @@ This is the value of `next-error-function' in Compilation buffers."
                compilation-current-error
              (copy-marker (line-beginning-position)))
          loc (car loc))
-    ;; If loc contains no marker, no error in that file has been visited.  If
-    ;; the marker is invalid the buffer has been killed.  So, recalculate all
-    ;; markers for that file.
-    (unless (and (nth 3 loc) (marker-buffer (nth 3 loc)))
+    ;; 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))
+                 (equal (nth 4 loc)
+                        (setq timestamp
+                              (with-current-buffer (marker-buffer (nth 3 loc))
+                                (visited-file-modtime)))))
       (with-current-buffer (compilation-find-file marker (caar (nth 2 loc))
                                                  (cadr (car (nth 2 loc))))
        (save-restriction
@@ -1665,7 +1684,8 @@ This is the value of `next-error-function' in Compilation buffers."
                  (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) t)))                ; Set this one as visited.
+    (setcdr (nthcdr 3 loc) (list timestamp))
+    (setcdr (nthcdr 4 loc) t)))                ; Set this one as visited.
 
 (defvar compilation-gcpro nil
   "Internal variable used to keep some values from being GC'd.")
@@ -1868,7 +1888,24 @@ Pop up the buffer containing MARKER and scroll to MARKER if we ask the user."
           (let* ((name (read-file-name
                         (format "Find this %s in (default %s): "
                                 compilation-error filename)
-                        spec-dir filename t nil))
+                        spec-dir filename t nil
+                        ;; The predicate below is fine when called from
+                        ;; minibuffer-complete-and-exit, but it's too
+                        ;; restrictive otherwise, since it also prevents the
+                        ;; user from completing "fo" to "foo/" when she
+                        ;; wants to enter "foo/bar".
+                        ;;
+                        ;; Try to make sure the user can only select
+                        ;; a valid answer.  This predicate may be ignored,
+                        ;; tho, so we still have to double-check afterwards.
+                        ;; TODO: We should probably fix read-file-name so
+                        ;; that it never ignores this predicate, even when
+                        ;; using popup dialog boxes.
+                        ;; (lambda (name)
+                        ;;   (if (file-directory-p name)
+                        ;;       (setq name (expand-file-name filename name)))
+                        ;;   (file-exists-p name))
+                        ))
                  (origname name))
             (cond
              ((not (file-exists-p name))
@@ -2022,9 +2059,9 @@ The file-structure looks like this:
   ;; compilation-error-list) to point-min, but that was only meaningful for
   ;; the internal uses of compilation-forget-errors: all calls from external
   ;; packages seem to be followed by a move of compilation-parsing-end to
-  ;; something equivalent to point-max.  So we speculatively move
+  ;; something equivalent to point-max.  So we heuristically move
   ;; compilation-current-error to point-max (since the external package
-  ;; won't know that it should do it).  --stef
+  ;; won't know that it should do it).  --Stef
   (setq compilation-current-error nil)
   (let* ((proc (get-buffer-process (current-buffer)))
         (mark (if proc (process-mark proc)))
@@ -2035,7 +2072,12 @@ The file-structure looks like this:
          ;; we need to put ours just before the insertion point rather
          ;; than at the insertion point.  If that's not possible, then
          ;; don't use a marker.  --Stef
-         (if (> pos (point-min)) (copy-marker (1- pos)) pos))))
+         (if (> pos (point-min)) (copy-marker (1- pos)) pos)))
+  ;; Again, since this command is used in buffers that contain several
+  ;; compilations, to set the beginning of "this compilation", it's a good
+  ;; place to reset compilation-auto-jump-to-next.
+  (set (make-local-variable 'compilation-auto-jump-to-next)
+       compilation-auto-jump-to-first-error))
 
 ;;;###autoload
 (add-to-list 'auto-mode-alist '("\\.gcov\\'" . compilation-mode))
index 4de1a845ab4f38e7aec9cb911357a9450e28becf..d030110d85abbaf563a77a7ec91c67e6dfd931de 100644 (file)
@@ -1107,11 +1107,11 @@ versions of Emacs."
 ;;;     (setq interpreter-mode-alist (append interpreter-mode-alist
 ;;;                                      '(("miniperl" . perl-mode))))))
 (eval-when-compile
-  (mapcar (lambda (p)
-           (condition-case nil
-               (require p)
-             (error nil)))
-         '(imenu easymenu etags timer man info))
+  (mapc (lambda (p)
+         (condition-case nil
+             (require p)
+           (error nil)))
+       '(imenu easymenu etags timer man info))
   (if (fboundp 'ps-extend-face-list)
       (defmacro cperl-ps-extend-face-list (arg)
        `(ps-extend-face-list ,arg))
@@ -5385,15 +5385,15 @@ indentation and initial hashes.  Behaves usually outside of comment."
        (t
         (or name
             (setq name "+++BACK+++"))
-        (mapcar (lambda (elt)
-                  (if (and (listp elt) (listp (cdr elt)))
-                      (progn
-                        ;; In the other order it goes up
-                        ;; one level only ;-(
-                        (setcdr elt (cons (cons name lst)
-                                          (cdr elt)))
-                        (cperl-imenu-addback (cdr elt) t name))))
-                (if isback (cdr lst) lst))
+        (mapc (lambda (elt)
+                (if (and (listp elt) (listp (cdr elt)))
+                    (progn
+                      ;; In the other order it goes up
+                      ;; one level only ;-(
+                      (setcdr elt (cons (cons name lst)
+                                        (cdr elt)))
+                      (cperl-imenu-addback (cdr elt) t name))))
+              (if isback (cdr lst) lst))
         lst)))
 
 (defun cperl-imenu--create-perl-index (&optional regexp)
@@ -6986,17 +6986,17 @@ Use as
                        (setq cperl-unreadable-ok t
                              tm nil)   ; Return empty list
                      (error "Aborting: unreadable directory %s" file)))))))
-         (mapcar (function
-                  (lambda (file)
-                    (cond
-                     ((string-match cperl-noscan-files-regexp file)
-                      nil)
-                     ((not (file-directory-p file))
-                      (if (string-match cperl-scan-files-regexp file)
-                          (cperl-write-tags file erase recurse nil t noxs topdir)))
-                     ((not recurse) nil)
-                     (t (cperl-write-tags file erase recurse t t noxs topdir)))))
-                 files)))
+         (mapc (function
+                (lambda (file)
+                  (cond
+                   ((string-match cperl-noscan-files-regexp file)
+                    nil)
+                   ((not (file-directory-p file))
+                    (if (string-match cperl-scan-files-regexp file)
+                        (cperl-write-tags file erase recurse nil t noxs topdir)))
+                   ((not recurse) nil)
+                   (t (cperl-write-tags file erase recurse t t noxs topdir)))))
+               files)))
        (t
        (setq xs (string-match "\\.xs$" file))
        (if (not (and xs noxs))
@@ -7110,16 +7110,16 @@ One may build such TAGS files from CPerl mode menu."
              (cperl-tags-hier-fill))
          (or tags-table-list
              (call-interactively 'visit-tags-table))
-         (mapcar
+         (mapc
           (function
            (lambda (tagsfile)
              (message "Updating list of classes... %s" tagsfile)
            (set-buffer (get-file-buffer tagsfile))
            (cperl-tags-hier-fill)))
-        tags-table-list)
+          tags-table-list)
          (message "Updating list of classes... postprocessing..."))
-       (mapcar remover (car cperl-hierarchy))
-       (mapcar remover (nth 1 cperl-hierarchy))
+       (mapc remover (car cperl-hierarchy))
+       (mapc remover (nth 1 cperl-hierarchy))
        (setq to (list nil (cons "Packages: " (nth 1 cperl-hierarchy))
                       (cons "Methods: " (car cperl-hierarchy))))
        (cperl-tags-treeify to 1)
@@ -7183,40 +7183,40 @@ One may build such TAGS files from CPerl mode menu."
     (setcdr to l1)                     ; Init to dynamic space
     (setq writeto to)
     (setq ord 1)
-    (mapcar move-deeper packages)
+    (mapc move-deeper packages)
     (setq ord 2)
-    (mapcar move-deeper methods)
+    (mapc move-deeper methods)
     (if recurse
-       (mapcar (function (lambda (elt)
+       (mapc (function (lambda (elt)
                          (cperl-tags-treeify elt (1+ level))))
-               (cdr to)))
+             (cdr to)))
     ;;Now clean up leaders with one child only
-    (mapcar (function (lambda (elt)
-                       (if (not (and (listp (cdr elt))
-                                     (eq (length elt) 2))) nil
-                           (setcar elt (car (nth 1 elt)))
-                           (setcdr elt (cdr (nth 1 elt))))))
-           (cdr to))
+    (mapc (function (lambda (elt)
+                     (if (not (and (listp (cdr elt))
+                                   (eq (length elt) 2))) nil
+                       (setcar elt (car (nth 1 elt)))
+                       (setcdr elt (cdr (nth 1 elt))))))
+         (cdr to))
     ;; Sort the roots of subtrees
     (if (default-value 'imenu-sort-function)
        (setcdr to
                (sort (cdr to) (default-value 'imenu-sort-function))))
     ;; Now add back functions removed from display
-    (mapcar (function (lambda (elt)
-                       (setcdr to (cons elt (cdr to)))))
-           (if (default-value 'imenu-sort-function)
-               (nreverse
-                (sort root-functions (default-value 'imenu-sort-function)))
-             root-functions))
+    (mapc (function (lambda (elt)
+                     (setcdr to (cons elt (cdr to)))))
+         (if (default-value 'imenu-sort-function)
+             (nreverse
+              (sort root-functions (default-value 'imenu-sort-function)))
+           root-functions))
     ;; Now add back packages removed from display
-    (mapcar (function (lambda (elt)
-                       (setcdr to (cons (cons (concat "package " (car elt))
-                                              (cdr elt))
-                                        (cdr to)))))
-           (if (default-value 'imenu-sort-function)
-               (nreverse
-                (sort root-packages (default-value 'imenu-sort-function)))
-             root-packages))))
+    (mapc (function (lambda (elt)
+                     (setcdr to (cons (cons (concat "package " (car elt))
+                                            (cdr elt))
+                                      (cdr to)))))
+         (if (default-value 'imenu-sort-function)
+             (nreverse
+              (sort root-packages (default-value 'imenu-sort-function)))
+           root-packages))))
 
 ;;;(x-popup-menu t
 ;;;   '(keymap "Name1"
index 99f03f8a545a7089727c7aaf3f27816c26abaf6a..6cbef6f426df96bff5debd222f0845b763bc3425 100644 (file)
@@ -1677,21 +1677,21 @@ before the indent, the point is moved to the indent."
           (unit-file (downcase unit)))
       (catch 'done
         ;; Search for the file.
-        (mapcar #'(lambda (file)
-                    (let ((path (concat dir "/" file)))
-                      (if (and (string= unit-file (downcase file))
-                               (delphi-is-file path))
-                          (throw 'done path))))
-                files)
+        (mapc #'(lambda (file)
+                 (let ((path (concat dir "/" file)))
+                   (if (and (string= unit-file (downcase file))
+                            (delphi-is-file path))
+                       (throw 'done path))))
+             files)
 
         ;; Not found. Search subdirectories.
         (when recurse
-          (mapcar #'(lambda (subdir)
-                      (unless (member subdir '("." ".."))
-                        (let ((path (delphi-search-directory
-                                     unit (concat dir "/" subdir) recurse)))
-                          (if path (throw 'done path)))))
-                  files))
+          (mapc #'(lambda (subdir)
+                   (unless (member subdir '("." ".."))
+                     (let ((path (delphi-search-directory
+                                  unit (concat dir "/" subdir) recurse)))
+                       (if path (throw 'done path)))))
+               files))
 
         ;; Not found.
         nil))))
@@ -1721,7 +1721,7 @@ before the indent, the point is moved to the indent."
           ((stringp delphi-search-path)
            (delphi-find-unit-in-directory unit delphi-search-path))
 
-          ((mapcar
+          ((mapc
               #'(lambda (dir)
                   (let ((file (delphi-find-unit-in-directory unit dir)))
                     (if file (throw 'done file))))
@@ -1888,39 +1888,39 @@ comment block. If not in a // comment, just does a normal newline."
 
 (defvar delphi-debug-mode-map
   (let ((kmap (make-sparse-keymap)))
-    (mapcar #'(lambda (binding) (define-key kmap (car binding) (cadr binding)))
-            '(("n" delphi-debug-goto-next-token)
-              ("p" delphi-debug-goto-previous-token)
-              ("t" delphi-debug-show-current-token)
-              ("T" delphi-debug-tokenize-buffer)
-              ("W" delphi-debug-tokenize-window)
-              ("g" delphi-debug-goto-point)
-              ("s" delphi-debug-show-current-string)
-              ("a" delphi-debug-parse-buffer)
-              ("w" delphi-debug-parse-window)
-              ("f" delphi-debug-fontify-window)
-              ("F" delphi-debug-fontify-buffer)
-              ("r" delphi-debug-parse-region)
-              ("c" delphi-debug-unparse-buffer)
-              ("x" delphi-debug-show-is-stable)
-              ))
+    (mapc #'(lambda (binding) (define-key kmap (car binding) (cadr binding)))
+         '(("n" delphi-debug-goto-next-token)
+           ("p" delphi-debug-goto-previous-token)
+           ("t" delphi-debug-show-current-token)
+           ("T" delphi-debug-tokenize-buffer)
+           ("W" delphi-debug-tokenize-window)
+           ("g" delphi-debug-goto-point)
+           ("s" delphi-debug-show-current-string)
+           ("a" delphi-debug-parse-buffer)
+           ("w" delphi-debug-parse-window)
+           ("f" delphi-debug-fontify-window)
+           ("F" delphi-debug-fontify-buffer)
+           ("r" delphi-debug-parse-region)
+           ("c" delphi-debug-unparse-buffer)
+           ("x" delphi-debug-show-is-stable)
+           ))
     kmap)
   "Keystrokes for delphi-mode debug commands.")
 
 (defvar delphi-mode-map
   (let ((kmap (make-sparse-keymap)))
-    (mapcar #'(lambda (binding) (define-key kmap (car binding) (cadr binding)))
-            (list '("\r" delphi-newline)
-                  '("\t" delphi-tab)
-                  '("\177" backward-delete-char-untabify)
-;;                '("\C-cd" delphi-find-current-def)
-;;                '("\C-cx" delphi-find-current-xdef)
-;;                '("\C-cb" delphi-find-current-body)
-                  '("\C-cu" delphi-find-unit)
-                  '("\M-q" delphi-fill-comment)
-                  '("\M-j" delphi-new-comment-line)
-                  ;; Debug bindings:
-                  (list "\C-c\C-d" delphi-debug-mode-map)))
+    (mapc #'(lambda (binding) (define-key kmap (car binding) (cadr binding)))
+         (list '("\r" delphi-newline)
+               '("\t" delphi-tab)
+               '("\177" backward-delete-char-untabify)
+;;              '("\C-cd" delphi-find-current-def)
+;;              '("\C-cx" delphi-find-current-xdef)
+;;              '("\C-cb" delphi-find-current-body)
+               '("\C-cu" delphi-find-unit)
+               '("\M-q" delphi-fill-comment)
+               '("\M-j" delphi-new-comment-line)
+               ;; Debug bindings:
+               (list "\C-c\C-d" delphi-debug-mode-map)))
     kmap)
   "Keymap used in Delphi mode.")
 
@@ -1981,17 +1981,17 @@ no args, if that value is non-nil."
   (set-syntax-table delphi-mode-syntax-table)
 
   ;; Buffer locals:
-  (mapcar #'(lambda (var)
-              (let ((var-symb (car var))
-                    (var-val (cadr var)))
-                (make-local-variable var-symb)
-                (set var-symb var-val)))
-          (list '(indent-line-function delphi-indent-line)
-                '(comment-indent-function delphi-indent-line)
-                '(case-fold-search t)
-                '(delphi-progress-last-reported-point nil)
-                '(delphi-ignore-changes nil)
-                (list 'font-lock-defaults delphi-font-lock-defaults)))
+  (mapc #'(lambda (var)
+           (let ((var-symb (car var))
+                 (var-val (cadr var)))
+             (make-local-variable var-symb)
+             (set var-symb var-val)))
+       (list '(indent-line-function delphi-indent-line)
+             '(comment-indent-function delphi-indent-line)
+             '(case-fold-search t)
+             '(delphi-progress-last-reported-point nil)
+             '(delphi-ignore-changes nil)
+             (list 'font-lock-defaults delphi-font-lock-defaults)))
 
   ;; We need to keep track of changes to the buffer to determine if we need
   ;; to retokenize changed text.
index 5e0d4b41820d8db7b986b1e90c34f7f0aac93f3e..44034bde3d57a1768c8eb2e6d48675e4287b1825 100644 (file)
@@ -6,7 +6,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, ebnf, PostScript
-;; Version: 1.1
+;; Version: 1.2
 
 ;; This file is part of GNU Emacs.
 
@@ -589,6 +589,12 @@ See documentation for variable `ebnf-abn-lex'."
    ;; close EPS file
    ((and ebnf-eps-executing (= (following-char) ?\]))
     (ebnf-eps-remove-context (ebnf-abn-eps-filename)))
+   ;; EPS header
+   ((and ebnf-eps-executing (= (following-char) ?H))
+    (ebnf-eps-header-comment (ebnf-abn-eps-filename)))
+   ;; EPS footer
+   ((and ebnf-eps-executing (= (following-char) ?F))
+    (ebnf-eps-footer-comment (ebnf-abn-eps-filename)))
    ;; any other action in comment
    (t
     (setq ebnf-action (aref ebnf-comment-table (following-char)))
index 6ade2fdc9000950210bf95b7a16e3dfe3370cf6a..8f6ecd99d2467a406dc88790af6ef8a7bd0b221a 100644 (file)
@@ -6,7 +6,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, ebnf, PostScript
-;; Version: 1.9
+;; Version: 1.10
 
 ;; This file is part of GNU Emacs.
 
@@ -537,6 +537,12 @@ See documentation for variable `ebnf-bnf-lex'."
    ;; close EPS file
    ((and ebnf-eps-executing (= (following-char) ?\]))
     (ebnf-eps-remove-context (ebnf-bnf-eps-filename)))
+   ;; EPS header
+   ((and ebnf-eps-executing (= (following-char) ?H))
+    (ebnf-eps-header-comment (ebnf-bnf-eps-filename)))
+   ;; EPS footer
+   ((and ebnf-eps-executing (= (following-char) ?F))
+    (ebnf-eps-footer-comment (ebnf-bnf-eps-filename)))
    ;; any other action in comment
    (t
     (setq ebnf-action (aref ebnf-comment-table (following-char)))
index 36fb314e642a85679607026c95f25ca5632f2867..855dd3813b8f9b789e7e2f4edb3ed80b7e763c58 100644 (file)
@@ -6,7 +6,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, ebnf, PostScript
-;; Version: 1.0
+;; Version: 1.1
 
 ;; This file is part of GNU Emacs.
 
@@ -1306,6 +1306,12 @@ See documentation for variable `ebnf-dtd-lex'."
    ;; close EPS file
    ((and ebnf-eps-executing (= (following-char) ?\]))
     (ebnf-eps-remove-context (ebnf-dtd-eps-filename)))
+   ;; EPS header
+   ((and ebnf-eps-executing (= (following-char) ?H))
+    (ebnf-eps-header-comment (ebnf-dtd-eps-filename)))
+   ;; EPS footer
+   ((and ebnf-eps-executing (= (following-char) ?F))
+    (ebnf-eps-footer-comment (ebnf-dtd-eps-filename)))
    ;; any other action in comment
    (t
     (setq ebnf-action (aref ebnf-comment-table (following-char))))
index cca85a10c2dc6dac5acf1a36327f8279db8b7579..90acb3b0b0cae6422f102430996d79c38b0e4850 100644 (file)
@@ -6,7 +6,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, ebnf, PostScript
-;; Version: 1.1
+;; Version: 1.2
 
 ;; This file is part of GNU Emacs.
 
@@ -539,6 +539,12 @@ See documentation for variable `ebnf-ebx-lex'."
    ;; close EPS file
    ((and ebnf-eps-executing (= (following-char) ?\]))
     (ebnf-eps-remove-context (ebnf-ebx-eps-filename)))
+   ;; EPS header
+   ((and ebnf-eps-executing (= (following-char) ?H))
+    (ebnf-eps-header-comment (ebnf-ebx-eps-filename)))
+   ;; EPS footer
+   ((and ebnf-eps-executing (= (following-char) ?F))
+    (ebnf-eps-footer-comment (ebnf-ebx-eps-filename)))
    ;; any other action in comment
    (t
     (setq ebnf-action (aref ebnf-comment-table (following-char))))
index 802cf019d859f1937e5147905f92c90952f2b644..9b670b4dbfeeaf4ed7de960ef9029e15510aaa3a 100644 (file)
@@ -1,12 +1,12 @@
 ;;; ebnf-iso.el --- parser for ISO EBNF
 
 ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-;; Free Software Foundation, Inc.
+;;   Free Software Foundation, Inc.
 
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, ebnf, PostScript
-;; Version: 1.8
+;; Version: 1.9
 
 ;; This file is part of GNU Emacs.
 
@@ -504,6 +504,12 @@ See documentation for variable `ebnf-iso-lex'."
    ;; close EPS file
    ((and ebnf-eps-executing (= (following-char) ?\]))
     (ebnf-eps-remove-context (ebnf-iso-eps-filename)))
+   ;; EPS header
+   ((and ebnf-eps-executing (= (following-char) ?H))
+    (ebnf-eps-header-comment (ebnf-iso-eps-filename)))
+   ;; EPS footer
+   ((and ebnf-eps-executing (= (following-char) ?F))
+    (ebnf-eps-footer-comment (ebnf-iso-eps-filename)))
    ;; any other action in comment
    (t
     (setq ebnf-action (aref ebnf-comment-table (following-char))))
index 829494cd7efbbf72a002493a2b8854a83cf15b31..14640649d02bb1cc990bd8dc95d2d29c60d62085 100644 (file)
@@ -6,7 +6,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, ebnf, PostScript
-;; Version: 1.3
+;; Version: 1.4
 
 ;; This file is part of GNU Emacs.
 
   ;; control character & 8-bit character are set to `error'
   (let ((table (make-vector 256 'error)))
     ;; upper & lower case letters:
-    (mapcar
+    (mapc
      #'(lambda (char)
         (aset table char 'non-terminal))
      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
     ;; printable characters:
-    (mapcar
+    (mapc
      #'(lambda (char)
         (aset table char 'character))
      "!#$&()*+-.0123456789=?@[\\]^_`~")
@@ -459,6 +459,12 @@ See documentation for variable `ebnf-yac-lex'."
    ;; close EPS file
    ((and ebnf-eps-executing (= (following-char) ?\]))
     (ebnf-eps-remove-context (ebnf-yac-eps-filename)))
+   ;; EPS header
+   ((and ebnf-eps-executing (= (following-char) ?H))
+    (ebnf-eps-header-comment (ebnf-yac-eps-filename)))
+   ;; EPS footer
+   ((and ebnf-eps-executing (= (following-char) ?F))
+    (ebnf-eps-footer-comment (ebnf-yac-eps-filename)))
    ;; any other action in comment
    (t
     (setq ebnf-action (aref ebnf-comment-table (following-char))))
index 75fc250745ec8b417801bf4e0dc490b9d3594a27..66aefe660455cfbad2bed118c60afa3205af883d 100644 (file)
@@ -1,12 +1,12 @@
 ;;; ebnf2ps.el --- translate an EBNF to a syntactic chart on PostScript
 
 ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-;; Free Software Foundation, Inc.
+;;   Free Software Foundation, Inc.
 
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, ebnf, PostScript
-;; Version: 4.3
+;; Version: 4.4
 ;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
 
 ;; This file is part of GNU Emacs.
@@ -26,8 +26,8 @@
 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 ;; Boston, MA 02110-1301, USA.
 
-(defconst ebnf-version "4.3"
-  "ebnf2ps.el, v 4.3 <2006/09/26 vinicius>
+(defconst ebnf-version "4.4"
+  "ebnf2ps.el, v 4.4 <2007/02/12 vinicius>
 
 Vinicius's last change version.  When reporting bugs, please also
 report the version of Emacs, if any, that ebnf2ps was running with.
@@ -448,6 +448,24 @@ Please send all bug fixes and enhancements to
 ;;             `ebnf-eps-region' execution.
 ;;             It's an error to try to close a not opened EPS file.
 ;;
+;;    ;Hheader generate a header in current EPS file.  The header string can
+;;             have the following formats:
+;;
+;;             %%      prints a % character.
+;;
+;;             %H      prints the `ebnf-eps-header' (which see) value.
+;;
+;;             %F      prints the `ebnf-eps-footer' (which see) value.
+;;
+;;             Any  other format is ignored, that is, if, for example, it's
+;;             used %s then %s characters are stripped out from the header.
+;;             If header is an empty string, no header is generated until a
+;;             non-empty header is specified or `ebnf-eps-header' has a
+;;             non-empty string value.
+;;
+;;    ;Ffooter generate a footer in current EPS file.  Similar to ;H action
+;;             comment.
+;;
 ;; So if you have:
 ;;
 ;;    (setq ebnf-horizontal-orientation nil)
@@ -546,6 +564,16 @@ Please send all bug fixes and enhancements to
 ;; The production A is generated in both files ebnf--AA.eps and ebnf--BB.eps.
 ;;
 ;;
+;; Log Messages
+;; ------------
+;;
+;; The buffer *Ebnf2ps Log* is where the ebnf2ps log messages are inserted.
+;; These messages are intended to help debugging ebnf2ps.
+;;
+;; The log messages are enabled by `ebnf-log' option (which see).  The default
+;; value is nil, that is, no log messages are generated.
+;;
+;;
 ;; Utilities
 ;; ---------
 ;;
@@ -723,6 +751,14 @@ Please send all bug fixes and enhancements to
 ;;
 ;; `ebnf-eps-prefix'                   Specify EPS prefix file name.
 ;;
+;; `ebnf-eps-header-font'              Specify EPS header font.
+;;
+;; `ebnf-eps-header'                   Specify EPS header.
+;;
+;; `ebnf-eps-footer-font'              Specify EPS footer font.
+;;
+;; `ebnf-eps-footer'                   Specify EPS footer.
+;;
 ;; `ebnf-use-float-format'             Non-nil means use `%f' float format.
 ;;
 ;; `ebnf-stop-on-error'                        Non-nil means signal error and stop.
@@ -735,6 +771,8 @@ Please send all bug fixes and enhancements to
 ;; `ebnf-optimize'                     Non-nil means optimize syntactic chart
 ;;                                     of rules.
 ;;
+;; `ebnf-log'                          Non-nil means generate log messages.
+;;
 ;; To set the above options you may:
 ;;
 ;; a) insert the code in your ~/.emacs, like:
@@ -787,6 +825,9 @@ Please send all bug fixes and enhancements to
 ;; To help to handle this situation, ebnf2ps has the following commands to
 ;; handle styles:
 ;;
+;; `ebnf-find-style'   Return style definition if NAME is already defined;
+;;                     otherwise, return nil.
+;;
 ;; `ebnf-insert-style' Insert a new style NAME with inheritance INHERITS and
 ;;                     values VALUES.
 ;;
@@ -1879,6 +1920,126 @@ See `ebnf-eps-buffer' and `ebnf-eps-region' commands."
   :group 'ebnf2ps)
 
 
+(defcustom ebnf-eps-header-font '(11 Helvetica "Black" "White" bold)
+  "*Specify EPS header font.
+
+See documentation for `ebnf-production-font'.
+
+See `ebnf-eps-buffer' and `ebnf-eps-region' commands."
+  :type '(list :tag "EPS Header Font"
+              (number :tag "Font Size")
+              (symbol :tag "Font Name")
+              (choice :tag "Foreground Color"
+                      (string :tag "Name")
+                      (other :tag "Default" nil))
+              (choice :tag "Background Color"
+                      (string :tag "Name")
+                      (other :tag "Default" nil))
+              (repeat :tag "Font Attributes" :inline t
+                      (choice (const bold)      (const italic)
+                              (const underline) (const strikeout)
+                              (const overline)  (const shadow)
+                              (const box)       (const outline))))
+  :version "22"
+  :group 'ebnf2ps)
+
+
+(defcustom ebnf-eps-header nil
+  "*Specify EPS header.
+
+The value should be a string, a symbol or nil.
+
+String is inserted unchanged.
+
+For symbol bounded to a function, the function is called and should return a
+string.  For symbol bounded to a value, the value should be a string.
+
+If symbol is unbounded, it is silently ignored.
+
+Empty string or nil mean that no header will be generated.
+
+Note that when the header action comment (;H in EBNF syntax) is specified, the
+string in the header action comment is processed and, if it returns a non-empty
+string, it's used to generate the header.  The header action comment accepts
+the following formats:
+
+   %%  prints a % character.
+
+   %H  prints the `ebnf-eps-header' value.
+
+   %F  prints the `ebnf-eps-footer' (which see) value.
+
+Any other format is ignored, that is, if, for example, it's used %s then %s
+characters are stripped out from the header.  If header action comment is an
+empty string, no header is generated until a non-empty header is specified or
+`ebnf-eps-header' has a non-empty string value."
+  :type '(repeat (choice :menu-tag "EPS Header"
+                        :tag "EPS Header"
+                        string symbol (const :tag "No Header" nil )))
+  :version "22"
+  :group 'ebnf2ps)
+
+
+(defcustom ebnf-eps-footer-font '(7 Helvetica "Black" "White" bold)
+  "*Specify EPS footer font.
+
+See documentation for `ebnf-production-font'.
+
+See `ebnf-eps-buffer' and `ebnf-eps-region' commands."
+  :type '(list :tag "EPS Footer Font"
+              (number :tag "Font Size")
+              (symbol :tag "Font Name")
+              (choice :tag "Foreground Color"
+                      (string :tag "Name")
+                      (other :tag "Default" nil))
+              (choice :tag "Background Color"
+                      (string :tag "Name")
+                      (other :tag "Default" nil))
+              (repeat :tag "Font Attributes" :inline t
+                      (choice (const bold)      (const italic)
+                              (const underline) (const strikeout)
+                              (const overline)  (const shadow)
+                              (const box)       (const outline))))
+  :version "22"
+  :group 'ebnf2ps)
+
+
+(defcustom ebnf-eps-footer nil
+  "*Specify EPS footer.
+
+The value should be a string, a symbol or nil.
+
+String is inserted unchanged.
+
+For symbol bounded to a function, the function is called and should return a
+string.  For symbol bounded to a value, the value should be a string.
+
+If symbol is unbounded, it is silently ignored.
+
+Empty string or nil mean that no footer will be generated.
+
+Note that when the footer action comment (;F in EBNF syntax) is specified, the
+string in the footer action comment is processed and, if it returns a non-empty
+string, it's used to generate the footer.  The footer action comment accepts
+the following formats:
+
+   %%  prints a % character.
+
+   %H  prints the `ebnf-eps-header' (which see) value.
+
+   %F  prints the `ebnf-eps-footer' value.
+
+Any other format is ignored, that is, if, for example, it's used %s then %s
+characters are stripped out from the footer.  If footer action comment is an
+empty string, no footer is generated until a non-empty footer is specified or
+`ebnf-eps-footer' has a non-empty string value."
+  :type '(repeat (choice :menu-tag "EPS Footer"
+                        :tag "EPS Footer"
+                        string symbol (const :tag "No Footer" nil )))
+  :version "22"
+  :group 'ebnf2ps)
+
+
 (defcustom ebnf-entry-percentage 0.5   ; middle
   "*Specify entry height on alternatives.
 
@@ -2019,6 +2180,16 @@ The above optimizations are specially useful when `ebnf-syntax' is `yacc'."
   :version "20"
   :group 'ebnf-optimization)
 
+
+(defcustom ebnf-log nil
+  "*Non-nil means generate log messages.
+
+The log messages are generated into the buffer *Ebnf2ps Log*.
+These messages are intended to help debugging ebnf2ps."
+  :type 'boolean
+  :version "22"
+  :group 'ebnf2ps)
+
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; To make this file smaller, some commands go in a separate file.
@@ -2063,6 +2234,7 @@ See also `ebnf-print-buffer'."
   (interactive
    (list (read-file-name "Directory containing EBNF files (print): "
                         nil default-directory)))
+  (ebnf-log-header "(ebnf-print-directory %S)" directory)
   (ebnf-directory 'ebnf-print-buffer directory))
 
 
@@ -2075,6 +2247,7 @@ killed after process termination.
 
 See also `ebnf-print-buffer'."
   (interactive "fEBNF file to generate PostScript and print from: ")
+  (ebnf-log-header "(ebnf-print-file %S %S)" file do-not-kill-buffer-when-done)
   (ebnf-file 'ebnf-print-buffer file do-not-kill-buffer-when-done))
 
 
@@ -2091,6 +2264,7 @@ is nil, send the image to the printer.  If FILENAME is a string, save
 the PostScript image in a file with that name.  If FILENAME is a
 number, prompt the user for the name of the file to save in."
   (interactive (list (ps-print-preprint current-prefix-arg)))
+  (ebnf-log-header "(ebnf-print-buffer %S)" filename)
   (ebnf-print-region (point-min) (point-max) filename))
 
 
@@ -2099,6 +2273,7 @@ number, prompt the user for the name of the file to save in."
   "Generate and print a PostScript syntactic chart image of the region.
 Like `ebnf-print-buffer', but prints just the current region."
   (interactive (list (point) (mark) (ps-print-preprint current-prefix-arg)))
+  (ebnf-log-header "(ebnf-print-region %S %S %S)" from to filename)
   (run-hooks 'ebnf-hook)
   (or (ebnf-spool-region from to)
       (ps-do-despool filename)))
@@ -2117,6 +2292,7 @@ See also `ebnf-spool-buffer'."
   (interactive
    (list (read-file-name "Directory containing EBNF files (spool): "
                         nil default-directory)))
+  (ebnf-log-header "(ebnf-spool-directory %S)" directory)
   (ebnf-directory 'ebnf-spool-buffer directory))
 
 
@@ -2129,6 +2305,7 @@ killed after process termination.
 
 See also `ebnf-spool-buffer'."
   (interactive "fEBNF file to generate PostScript and spool from: ")
+  (ebnf-log-header "(ebnf-spool-file %S %S)" file do-not-kill-buffer-when-done)
   (ebnf-file 'ebnf-spool-buffer file do-not-kill-buffer-when-done))
 
 
@@ -2140,6 +2317,7 @@ local buffer to be sent to the printer later.
 
 Use the command `ebnf-despool' to send the spooled images to the printer."
   (interactive)
+  (ebnf-log-header "(ebnf-spool-buffer)")
   (ebnf-spool-region (point-min) (point-max)))
 
 
@@ -2150,6 +2328,7 @@ Like `ebnf-spool-buffer', but spools just the current region.
 
 Use the command `ebnf-despool' to send the spooled images to the printer."
   (interactive "r")
+  (ebnf-log-header "(ebnf-spool-region %S)" from to)
   (ebnf-generate-region from to 'ebnf-generate))
 
 
@@ -2166,6 +2345,7 @@ See also `ebnf-eps-buffer'."
   (interactive
    (list (read-file-name "Directory containing EBNF files (EPS): "
                         nil default-directory)))
+  (ebnf-log-header "(ebnf-eps-directory %S)" directory)
   (ebnf-directory 'ebnf-eps-buffer directory))
 
 
@@ -2178,6 +2358,7 @@ killed after EPS generation.
 
 See also `ebnf-eps-buffer'."
   (interactive "fEBNF file to generate EPS file from: ")
+  (ebnf-log-header "(ebnf-eps-file %S %S)" file do-not-kill-buffer-when-done)
   (ebnf-file 'ebnf-eps-buffer file do-not-kill-buffer-when-done))
 
 
@@ -2200,8 +2381,9 @@ The EPS file name has the following form:
             file name used in this case will be \"ebnf--A_B_+_C.eps\".
 
 WARNING: This function does *NOT* ask any confirmation to override existing
-         files."
+        files."
   (interactive)
+  (ebnf-log-header "(ebnf-eps-buffer)")
   (ebnf-eps-region (point-min) (point-max)))
 
 
@@ -2224,8 +2406,9 @@ The EPS file name has the following form:
             file name used in this case will be \"ebnf--A_B_+_C.eps\".
 
 WARNING: This function does *NOT* ask any confirmation to override existing
-         files."
+        files."
   (interactive "r")
+  (ebnf-log-header "(ebnf-eps-region %S %S)" from to)
   (let ((ebnf-eps-executing t))
     (ebnf-generate-region from to 'ebnf-generate-eps)))
 
@@ -2247,6 +2430,7 @@ See also `ebnf-syntax-buffer'."
   (interactive
    (list (read-file-name "Directory containing EBNF files (syntax): "
                         nil default-directory)))
+  (ebnf-log-header "(ebnf-syntax-directory %S)" directory)
   (ebnf-directory 'ebnf-syntax-buffer directory))
 
 
@@ -2259,6 +2443,7 @@ killed after syntax checking.
 
 See also `ebnf-syntax-buffer'."
   (interactive "fEBNF file to check syntax: ")
+  (ebnf-log-header "(ebnf-syntax-file %S %S)" file do-not-kill-buffer-when-done)
   (ebnf-file 'ebnf-syntax-buffer file do-not-kill-buffer-when-done))
 
 
@@ -2266,13 +2451,15 @@ See also `ebnf-syntax-buffer'."
 (defun ebnf-syntax-buffer ()
   "Do a syntactic analysis of the current buffer."
   (interactive)
+  (ebnf-log-header "(ebnf-syntax-buffer)")
   (ebnf-syntax-region (point-min) (point-max)))
 
 
 ;;;###autoload
 (defun ebnf-syntax-region (from to)
-  "Do a syntactic analysis of region."
+  "Do a syntactic analysis of region."
   (interactive "r")
+  (ebnf-log-header "(ebnf-syntax-region %S %S)" from to)
   (ebnf-generate-region from to nil))
 
 \f
@@ -2287,6 +2474,8 @@ See also `ebnf-syntax-buffer'."
    "
 ;;; ebnf2ps.el version %s
 
+;;; Emacs version %S
+
 \(setq ebnf-special-show-delimiter      %S
       ebnf-special-font                %s
       ebnf-special-shape               %s
@@ -2333,20 +2522,28 @@ See also `ebnf-syntax-buffer'."
       ebnf-iso-normalize-p             %S
       ebnf-file-suffix-regexp          %S
       ebnf-eps-prefix                  %S
+      ebnf-eps-header-font             %s
+      ebnf-eps-header                  %s
+      ebnf-eps-footer-font             %s
+      ebnf-eps-footer                  %s
       ebnf-entry-percentage            %S
       ebnf-color-p                     %S
       ebnf-line-width                  %S
       ebnf-line-color                  %S
+      ebnf-arrow-extra-width           %S
+      ebnf-arrow-scale                 %S
       ebnf-debug-ps                    %S
       ebnf-use-float-format            %S
       ebnf-stop-on-error               %S
       ebnf-yac-ignore-error-recovery   %S
       ebnf-ignore-empty-rule           %S
-      ebnf-optimize                    %S)
+      ebnf-optimize                    %S
+      ebnf-log                         %S)
 
 ;;; ebnf2ps.el - end of settings
 "
    ebnf-version
+   emacs-version
    ebnf-special-show-delimiter
    (ps-print-quote ebnf-special-font)
    (ps-print-quote ebnf-special-shape)
@@ -2393,16 +2590,23 @@ See also `ebnf-syntax-buffer'."
    ebnf-iso-normalize-p
    ebnf-file-suffix-regexp
    ebnf-eps-prefix
+   (ps-print-quote ebnf-eps-header-font)
+   (ps-print-quote ebnf-eps-header)
+   (ps-print-quote ebnf-eps-footer-font)
+   (ps-print-quote ebnf-eps-footer)
    ebnf-entry-percentage
    ebnf-color-p
    ebnf-line-width
    ebnf-line-color
+   ebnf-arrow-extra-width
+   ebnf-arrow-scale
    ebnf-debug-ps
    ebnf-use-float-format
    ebnf-stop-on-error
    ebnf-yac-ignore-error-recovery
    ebnf-ignore-empty-rule
-   ebnf-optimize))
+   ebnf-optimize
+   ebnf-log))
 
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -2465,6 +2669,10 @@ See also `ebnf-syntax-buffer'."
     ebnf-iso-normalize-p
     ebnf-file-suffix-regexp
     ebnf-eps-prefix
+    ebnf-eps-header-font
+    ebnf-eps-header
+    ebnf-eps-footer-font
+    ebnf-eps-footer
     ebnf-entry-percentage
     ebnf-color-p
     ebnf-line-width
@@ -2528,6 +2736,10 @@ See also `ebnf-syntax-buffer'."
       (ebnf-iso-normalize-p             . nil)
       (ebnf-file-suffix-regexp          . "\.[Bb][Nn][Ff]$")
       (ebnf-eps-prefix                  . "ebnf--")
+      (ebnf-eps-header-font             . '(11 Helvetica "Black" "White" bold))
+      (ebnf-eps-header                  . nil)
+      (ebnf-eps-footer-font             . '(7 Helvetica "Black" "White" bold))
+      (ebnf-eps-footer                  . nil)
       (ebnf-entry-percentage            . 0.5)
       (ebnf-color-p   . (or (fboundp 'x-color-values) ; Emacs
                            (fboundp 'color-instance-rgb-components))) ; XEmacs
@@ -2600,6 +2812,15 @@ Don't use this variable directly.  Use functions `ebnf-insert-style',
 ;; Style commands
 
 
+;;;###autoload
+(defun ebnf-find-style (name)
+  "Return style definition if NAME is already defined; otherwise, return nil.
+
+See `ebnf-style-database' documentation."
+  (interactive "SStyle name: ")
+  (assoc name ebnf-style-database))
+
+
 ;;;###autoload
 (defun ebnf-insert-style (name inherits &rest values)
   "Insert a new style NAME with inheritance INHERITS and values VALUES.
@@ -2735,18 +2956,20 @@ See `ebnf-style-database' documentation."
 ;; Internal variables
 
 
-(defvar ebnf-eps-buffer-name " *EPS*")
-(defvar ebnf-parser-func     nil)
-(defvar ebnf-eps-executing   nil)
-(defvar ebnf-eps-upper-x     0.0)
+(defvar ebnf-eps-buffer-name    " *EPS*")
+(defvar ebnf-parser-func        nil)
+(defvar ebnf-eps-executing      nil)
+(defvar ebnf-eps-header-comment nil)
+(defvar ebnf-eps-footer-comment nil)
+(defvar ebnf-eps-upper-x        0.0)
 (make-variable-buffer-local 'ebnf-eps-upper-x)
-(defvar ebnf-eps-upper-y     0.0)
+(defvar ebnf-eps-upper-y        0.0)
 (make-variable-buffer-local 'ebnf-eps-upper-y)
-(defvar ebnf-eps-prod-width  0.0)
+(defvar ebnf-eps-prod-width     0.0)
 (make-variable-buffer-local 'ebnf-eps-prod-width)
-(defvar ebnf-eps-max-height 0.0)
+(defvar ebnf-eps-max-height     0.0)
 (make-variable-buffer-local 'ebnf-eps-max-height)
-(defvar ebnf-eps-max-width  0.0)
+(defvar ebnf-eps-max-width      0.0)
 (make-variable-buffer-local 'ebnf-eps-max-width)
 
 
@@ -2756,6 +2979,23 @@ See `ebnf-style-database' documentation."
 See section \"Actions in Comments\" in ebnf2ps documentation.")
 
 
+(defvar ebnf-eps-file-alist nil
+"Alist associating file name with EPS header and footer.
+
+Each element has the following form:
+
+   (EPS-FILENAME HEADER FOOTER)
+
+EPS-FILENAME is the EPS file name.
+HEADER is the header string or nil.
+FOOTER is the footer string or nil.
+
+It's generated during parsing and used during EPS generation.
+
+See `ebnf-eps-context' and section \"Actions in Comments\" in ebnf2ps
+documentation.")
+
+
 (defvar ebnf-eps-production-list nil
   "Alist associating production name with EPS file name list.
 
@@ -2800,41 +3040,43 @@ See documentation for `ebnf-terminal-shape', `ebnf-non-terminal-shape' and
 `ebnf-chart-shape'.")
 
 
-(defvar ebnf-limit            nil)
-(defvar ebnf-action           nil)
-(defvar ebnf-action-list      nil)
+(defvar ebnf-limit          nil)
+(defvar ebnf-action         nil)
+(defvar ebnf-action-list    nil)
 
 
-(defvar ebnf-default-p        nil)
+(defvar ebnf-default-p      nil)
 
 
-(defvar ebnf-font-height-P    0)
-(defvar ebnf-font-height-T    0)
-(defvar ebnf-font-height-NT   0)
-(defvar ebnf-font-height-S    0)
-(defvar ebnf-font-height-E    0)
-(defvar ebnf-font-height-R    0)
-(defvar ebnf-font-width-P     0)
-(defvar ebnf-font-width-T     0)
-(defvar ebnf-font-width-NT    0)
-(defvar ebnf-font-width-S     0)
-(defvar ebnf-font-width-E     0)
-(defvar ebnf-font-width-R     0)
-(defvar ebnf-space-T          0)
-(defvar ebnf-space-NT         0)
-(defvar ebnf-space-S          0)
-(defvar ebnf-space-E          0)
-(defvar ebnf-space-R          0)
+(defvar ebnf-font-height-P  0)
+(defvar ebnf-font-height-T  0)
+(defvar ebnf-font-height-NT 0)
+(defvar ebnf-font-height-S  0)
+(defvar ebnf-font-height-E  0)
+(defvar ebnf-font-height-R  0)
+(defvar ebnf-font-width-P   0)
+(defvar ebnf-font-width-T   0)
+(defvar ebnf-font-width-NT  0)
+(defvar ebnf-font-width-S   0)
+(defvar ebnf-font-width-E   0)
+(defvar ebnf-font-width-R   0)
+(defvar ebnf-space-T        0)
+(defvar ebnf-space-NT       0)
+(defvar ebnf-space-S        0)
+(defvar ebnf-space-E        0)
+(defvar ebnf-space-R        0)
 
 
-(defvar ebnf-basic-width      0)
-(defvar ebnf-basic-height     0)
-(defvar ebnf-vertical-space   0)
-(defvar ebnf-horizontal-space 0)
+(defvar ebnf-basic-width-extra  0)
+(defvar ebnf-basic-width        0)
+(defvar ebnf-basic-height       0)
+(defvar ebnf-basic-empty-height 0)
+(defvar ebnf-vertical-space     0)
+(defvar ebnf-horizontal-space   0)
 
 
-(defvar ebnf-settings         nil)
-(defvar ebnf-fonts-required   nil)
+(defvar ebnf-settings       nil)
+(defvar ebnf-fonts-required nil)
 
 
 (defconst ebnf-debug
@@ -3179,8 +3421,8 @@ See documentation for `ebnf-terminal-shape', `ebnf-non-terminal-shape' and
 
 % --- Flow Stuff
 
-% height prepare_height |- line_height corner_height corner_height
-/prepare_height
+% height prepare-height |- line_height corner_height corner_height
+/prepare-height
 {dup 0 gt
  {T sub hT}
  {T add hT neg}ifelse
@@ -3206,7 +3448,7 @@ See documentation for `ebnf-terminal-shape', `ebnf-non-terminal-shape' and
   {0.5 mul dup
    1 corner_RA
    0 corner_RD}
-  {prepare_height
+  {prepare-height
    1 corner_RA
    exch 0 exch rlineto
    0 corner_RD
@@ -3227,7 +3469,7 @@ See documentation for `ebnf-terminal-shape', `ebnf-non-terminal-shape' and
 %  \\
 %   -
 /LLoop
-{prepare_height
+{prepare-height
  3 corner_LA
  exch 0 exch rlineto
  0 corner_RD
@@ -3252,7 +3494,7 @@ See documentation for `ebnf-terminal-shape', `ebnf-non-terminal-shape' and
   {0.5 mul dup
    1 corner_LA
    0 corner_LD}
-  {prepare_height
+  {prepare-height
    1 corner_LA
    exch 0 exch rlineto
    0 corner_LD
@@ -3273,7 +3515,7 @@ See documentation for `ebnf-terminal-shape', `ebnf-non-terminal-shape' and
 %   /
 %  -
 /RLoop
-{prepare_height
+{prepare-height
  1 corner_RA
  exch 0 exch rlineto
  0 corner_LD
@@ -4062,6 +4304,113 @@ end
 "
   "EBNF EPS end")
 
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Header & Footer
+
+
+(defun ebnf-eps-header-footer (value)
+  ;; evaluate header/footer value
+  ;; return a string or nil
+  (let ((tmp (if (symbolp value)
+                (cond ((fboundp value) (funcall value))
+                      ((boundp value)  (symbol-value value))
+                      (t               nil))
+              value)))
+    (and (stringp tmp) tmp)))
+
+
+(defun ebnf-eps-header ()
+  ;; evaluate header value
+  (ebnf-eps-header-footer ebnf-eps-header))
+
+
+(defun ebnf-eps-footer ()
+  ;; evaluate footer value
+  (ebnf-eps-header-footer ebnf-eps-footer))
+
+
+;; hacked fom `ps-output-string-prim' (ps-print.el)
+(defun ebnf-eps-string (string)
+  (let* ((str   (string-as-unibyte string))
+        (len   (length str))
+        (index 0)
+        (new   "(")                    ; insert start-string delimiter
+        start special)
+    ;; Find and quote special characters as necessary for PS
+    ;; This skips everything except control chars, non-ASCII chars, (, ) and \.
+    (while (setq start (string-match "[^]-~ -'*-[]" str index))
+      (setq special (aref str start)
+           new     (concat new
+                           (substring str index start)
+                           (if (and (<= 0 special) (<= special 255))
+                               (aref ps-string-escape-codes special)
+                             ;; insert hexadecimal representation if character
+                             ;; code is out of range
+                             (format "\\%04X" special)))
+           index   (1+ start)))
+    (concat new
+           (and (< index len)
+                (substring str index len))
+           ")")))                      ; insert end-string delimiter
+
+
+(defun ebnf-eps-header-footer-comment (str)
+  ;; parse header/footer comment string
+  (let ((len   (1- (length str)))
+       (index 0)
+       new start fmt)
+    (while (setq start (string-match "%" str index))
+      (setq fmt   (if (< start len) (aref str (1+ start)) ?\?)
+           new   (concat new
+                         (substring str index start)
+                         (cond ((= fmt ?%) "%")
+                               ((= fmt ?H) (ebnf-eps-header))
+                               ((= fmt ?F) (ebnf-eps-footer))
+                               (t nil)
+                               ))
+           index (+ start 2)))
+    (ebnf-eps-string (concat new
+                            (and (<= index len)
+                                 (substring str index (1+ len)))))))
+
+
+(defun ebnf-eps-header-footer-p (value)
+  ;; return t if value is non-nil and is not an empty string
+  (not (or (null value)
+          (and (stringp value) (string= value "")))))
+
+
+(defun ebnf-eps-header-comment (str)
+  ;; set header comment if header is on
+  (when (ebnf-eps-header-footer-p ebnf-eps-header)
+    (setq ebnf-eps-header-comment (ebnf-eps-header-footer-comment str))))
+
+
+(defun ebnf-eps-footer-comment (str)
+  ;; set footer comment if footer is on
+  (when (ebnf-eps-header-footer-p ebnf-eps-footer)
+    (setq ebnf-eps-footer-comment (ebnf-eps-header-footer-comment str))))
+
+
+(defun ebnf-eps-header-footer-file (filename)
+  ;; associate header and footer with a filename
+  (let ((filehf (assoc filename ebnf-eps-file-alist))
+       (header (or ebnf-eps-header-comment (ebnf-eps-header)))
+       (footer (or ebnf-eps-footer-comment (ebnf-eps-footer))))
+    (if (null filehf)
+       (setq ebnf-eps-file-alist (cons (list filename header footer)
+                                       ebnf-eps-file-alist))
+      (setcar (nthcdr 1 filehf) header)
+      (setcar (nthcdr 2 filehf) footer))))
+
+
+(defun ebnf-eps-header-footer-set (filename)
+  ;; set header and footer from a filename
+  (let ((header-footer (assoc filename ebnf-eps-file-alist)))
+    (setq ebnf-eps-header-comment (nth 1 header-footer)
+         ebnf-eps-footer-comment (nth 2 header-footer))))
+
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Formatting
@@ -4513,7 +4862,9 @@ end
     (if sep
        (let ((ebnf-direction "L"))
          (ebnf-node-generation sep))
-      (ebnf-empty-alternative (- width ebnf-horizontal-space))))
+      (ebnf-empty-alternative (- width
+                                ebnf-horizontal-space
+                                ebnf-basic-width-extra))))
   (ps-output "EOS\n"))
 
 
@@ -4528,7 +4879,7 @@ end
                        (if node-sep
                            (- (ebnf-node-height node-sep)
                               (ebnf-node-entry node-sep))
-                         0))))
+                         ebnf-basic-empty-height))))
     (ps-output (ebnf-format-float entry
                                  (+ (- (ebnf-node-height node-list)
                                        list-entry)
@@ -4540,7 +4891,9 @@ end
     (if (ebnf-node-separator zero-or-more)
        (let ((ebnf-direction "L"))
          (ebnf-node-generation (ebnf-node-separator zero-or-more)))
-      (ebnf-empty-alternative (- width ebnf-horizontal-space))))
+      (ebnf-empty-alternative (- width
+                                ebnf-horizontal-space
+                                ebnf-basic-width-extra))))
   (ps-output "EOS\n"))
 
 
@@ -4651,18 +5004,20 @@ killed after process termination."
 
 (defvar ebnf-map-name
   (let ((map (make-vector 256 ?\_)))
-    (mapcar #'(lambda (char)
-               (aset map char char))
-           (concat "#$%&+-.0123456789=?@~"
-                   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                   "abcdefghijklmnopqrstuvwxyz"))
+    (mapc #'(lambda (char)
+             (aset map char char))
+         (concat "#$%&+-.0123456789=?@~"
+                 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                 "abcdefghijklmnopqrstuvwxyz"))
     map))
 
 
 (defun ebnf-eps-filename (str)
   (let* ((len  (length str))
         (stri 0)
-        (new  (make-string len ?\s)))
+        ;; to keep compatibility with Emacs 20 & 21:
+        ;; DO NOT REPLACE `?\ ' BY `?\s'
+        (new  (make-string len ?\ )))
     (while (< stri len)
       (aset new stri (aref ebnf-map-name (aref str stri)))
       (setq stri (1+ stri)))
@@ -4723,6 +5078,7 @@ killed after process termination."
 
 
 (defun ebnf-parse-and-sort (start)
+  (ebnf-log "(ebnf-parse-and-sort %S)" start)
   (ebnf-begin-job)
   (let ((tree (funcall ebnf-parser-func start)))
     (if ebnf-sort-production
@@ -4861,7 +5217,10 @@ killed after process termination."
        ebnf-action              nil
        ebnf-default-p           nil
        ebnf-eps-context         nil
+       ebnf-eps-file-alist      nil
        ebnf-eps-production-list nil
+       ebnf-eps-header-comment  nil
+       ebnf-eps-footer-comment  nil
        ebnf-eps-upper-x         0.0
        ebnf-eps-upper-y         0.0
        ebnf-font-height-P       (ebnf-font-height ebnf-production-font)
@@ -4882,10 +5241,14 @@ killed after process termination."
        ebnf-space-E             (* ebnf-font-height-E 0.5)
        ebnf-space-R             (* ebnf-font-height-R 0.5))
   (let ((basic (+ ebnf-font-height-T ebnf-font-height-NT)))
-    (setq ebnf-basic-width      (* basic 0.5)
-         ebnf-horizontal-space (+ basic basic)
-         ebnf-basic-height     ebnf-basic-width
-         ebnf-vertical-space   ebnf-basic-width)
+    (setq ebnf-basic-width        (* basic 0.5)
+         ebnf-horizontal-space   (+ basic basic)
+         ebnf-basic-empty-height (* ebnf-basic-width 0.5)
+         ebnf-basic-height       ebnf-basic-width
+         ebnf-vertical-space     ebnf-basic-width
+         ebnf-basic-width-extra  (- ebnf-basic-width
+                                    ebnf-arrow-extra-width
+                                    0.1)) ; error factor
     ;; ensures value is greater than zero
     (or (and (numberp ebnf-production-horizontal-space)
             (> ebnf-production-horizontal-space 0.0))
@@ -4893,7 +5256,18 @@ killed after process termination."
     ;; ensures value is greater than zero
     (or (and (numberp ebnf-production-vertical-space)
             (> ebnf-production-vertical-space 0.0))
-       (setq ebnf-production-vertical-space basic))))
+       (setq ebnf-production-vertical-space basic)))
+  (ebnf-log "(ebnf-begin-job)")
+  (ebnf-log "   ebnf-arrow-extra-width ............ : %7.3f"      ebnf-arrow-extra-width)
+  (ebnf-log "   ebnf-arrow-scale .................. : %7.3f"      ebnf-arrow-scale)
+  (ebnf-log "   ebnf-basic-width-extra ............ : %7.3f"      ebnf-basic-width-extra)
+  (ebnf-log "   ebnf-basic-width .................. : %7.3f (T)"  ebnf-basic-width)
+  (ebnf-log "   ebnf-horizontal-space ............. : %7.3f (4T)" ebnf-horizontal-space)
+  (ebnf-log "   ebnf-basic-empty-height ........... : %7.3f (hT)" ebnf-basic-empty-height)
+  (ebnf-log "   ebnf-basic-height ................. : %7.3f (T)"  ebnf-basic-height)
+  (ebnf-log "   ebnf-vertical-space ............... : %7.3f (T)"  ebnf-vertical-space)
+  (ebnf-log "   ebnf-production-horizontal-space .. : %7.3f (2T)" ebnf-production-horizontal-space)
+  (ebnf-log "   ebnf-production-vertical-space .... : %7.3f (2T)" ebnf-production-vertical-space))
 
 
 (defsubst ebnf-shape-value (sym alist)
@@ -4916,6 +5290,7 @@ killed after process termination."
         (progn
           ;; adjust creator comment
           (end-of-line)
+          ;; (backward-char)
           (insert " & ebnf2ps v" ebnf-version)
           ;; insert ebnf settings & engine
           (goto-char (point-max))
@@ -4928,6 +5303,7 @@ killed after process termination."
   (when (buffer-modified-p buffer)
     (save-excursion
       (set-buffer buffer)
+      (ebnf-eps-header-footer-set filename)
       (setq ebnf-eps-upper-x (max ebnf-eps-upper-x ebnf-eps-max-width)
            ebnf-eps-upper-y (if (zerop ebnf-eps-upper-y)
                                 ebnf-eps-max-height
@@ -4954,7 +5330,9 @@ killed after process termination."
                                           ebnf-non-terminal-font
                                           ebnf-special-font
                                           ebnf-except-font
-                                          ebnf-repeat-font)))
+                                          ebnf-repeat-font
+                                          ebnf-eps-header-font
+                                          ebnf-eps-footer-font)))
                            "\n%%+ font ")))
        "\n%%Pages: 0\n%%EndComments\n\n%%BeginProlog\n"
        ebnf-eps-prologue)
@@ -4980,6 +5358,42 @@ killed after process termination."
        (setq ebnf-settings
             (concat
              "\n\n% === begin EBNF settings\n\n"
+             (format "/Header        %s def\n"
+                     (or ebnf-eps-header-comment "()"))
+             (format "/Footer        %s def\n"
+                     (or ebnf-eps-footer-comment "()"))
+             ;; header
+             (format "/ShowHeader    %s def\n"
+                     (ebnf-boolean
+                      (ebnf-eps-header-footer-p ebnf-eps-header)))
+             (format "/fH            %s /%s DefFont\n"
+                     (ebnf-format-float
+                      (ebnf-font-size ebnf-eps-header-font))
+                     (ebnf-font-name-select ebnf-eps-header-font))
+             (ebnf-format-color "/ForegroundH   %s def %% %s\n"
+                                (ebnf-font-foreground ebnf-eps-header-font)
+                                "Black")
+             (ebnf-format-color "/BackgroundH   %s def %% %s\n"
+                                (ebnf-font-background ebnf-eps-header-font)
+                                "White")
+             (format "/EffectH       %d def\n"
+                     (ebnf-font-attributes ebnf-eps-header-font))
+             ;; footer
+             (format "/ShowFooter    %s def\n"
+                     (ebnf-boolean
+                      (ebnf-eps-header-footer-p ebnf-eps-footer)))
+             (format "/fF            %s /%s DefFont\n"
+                     (ebnf-format-float
+                      (ebnf-font-size ebnf-eps-footer-font))
+                     (ebnf-font-name-select ebnf-eps-footer-font))
+             (ebnf-format-color "/ForegroundF   %s def %% %s\n"
+                                (ebnf-font-foreground ebnf-eps-footer-font)
+                                "Black")
+             (ebnf-format-color "/BackgroundF   %s def %% %s\n"
+                                (ebnf-font-background ebnf-eps-footer-font)
+                                "White")
+             (format "/EffectF       %d def\n"
+                     (ebnf-font-attributes ebnf-eps-footer-font))
              ;; production
              (format "/fP            %s /%s DefFont\n"
                      (ebnf-format-float (ebnf-font-size ebnf-production-font))
@@ -5136,9 +5550,10 @@ killed after process termination."
 
 
 (defun ebnf-dimensions (tree)
+  (ebnf-log "(ebnf-dimensions tree)")
   (let ((ebnf-total (length tree))
        (ebnf-nprod 0))
-    (mapcar 'ebnf-production-dimension tree))
+    (mapc 'ebnf-production-dimension tree))
   tree)
 
 
@@ -5149,6 +5564,7 @@ killed after process termination."
 
 ;; [production width-fun dim-fun entry height width name production action]
 (defun ebnf-production-dimension (production)
+  (ebnf-log "(ebnf-production-dimension production)")
   (ebnf-message-info "Calculating dimensions")
   (ebnf-node-dimension-func (ebnf-node-production production))
   (let* ((prod   (ebnf-node-production production))
@@ -5162,11 +5578,17 @@ killed after process termination."
     (ebnf-node-height production height)
     (ebnf-node-width  production (+ (ebnf-node-width prod)
                                    ebnf-line-width
-                                   ebnf-horizontal-space))))
+                                   ebnf-horizontal-space
+                                   ebnf-basic-width-extra)))
+  (ebnf-log "   production name   : %S"    (ebnf-node-name   production))
+  (ebnf-log "   production entry  : %7.3f" (ebnf-node-entry  production))
+  (ebnf-log "   production height : %7.3f" (ebnf-node-height production))
+  (ebnf-log "   production width  : %7.3f" (ebnf-node-width  production)))
 
 
 ;; [terminal width-fun dim-fun entry height width name]
 (defun ebnf-terminal-dimension (terminal)
+  (ebnf-log "(ebnf-terminal-dimension terminal)")
   (ebnf-terminal-dimension1 terminal
                            ebnf-font-height-T
                            ebnf-font-width-T
@@ -5175,6 +5597,7 @@ killed after process termination."
 
 ;; [non-terminal width-fun dim-fun entry height width name]
 (defun ebnf-non-terminal-dimension (non-terminal)
+  (ebnf-log "(ebnf-non-terminal-dimension non-terminal)")
   (ebnf-terminal-dimension1 non-terminal
                            ebnf-font-height-NT
                            ebnf-font-width-NT
@@ -5183,6 +5606,7 @@ killed after process termination."
 
 ;; [special width-fun dim-fun entry height width name]
 (defun ebnf-special-dimension (special)
+  (ebnf-log "(ebnf-special-dimension special)")
   (ebnf-terminal-dimension1 special
                            ebnf-font-height-S
                            ebnf-font-width-S
@@ -5194,9 +5618,16 @@ killed after process termination."
        (len    (length (ebnf-node-name node))))
     (ebnf-node-entry  node (* height 0.5))
     (ebnf-node-height node height)
-    (ebnf-node-width  node (+ ebnf-basic-width ebnf-arrow-extra-width space
+    (ebnf-node-width  node (+ ebnf-basic-width
+                             ebnf-arrow-extra-width
+                             space
                              (* len font-width)
-                             space ebnf-basic-width))))
+                             space
+                             ebnf-basic-width)))
+  (ebnf-log "   name   : %S"    (ebnf-node-name   node))
+  (ebnf-log "   entry  : %7.3f" (ebnf-node-entry  node))
+  (ebnf-log "   height : %7.3f" (ebnf-node-height node))
+  (ebnf-log "   width  : %7.3f" (ebnf-node-width  node)))
 
 
 (defconst ebnf-null-vector (vector t t t 0.0 0.0 0.0))
@@ -5204,6 +5635,7 @@ killed after process termination."
 
 ;; [repeat width-fun dim-fun entry height width times element]
 (defun ebnf-repeat-dimension (repeat)
+  (ebnf-log "(ebnf-repeat-dimension repeat)")
   (let ((times   (ebnf-node-name repeat))
        (element (ebnf-node-separator repeat)))
     (if element
@@ -5218,11 +5650,15 @@ killed after process termination."
                                ebnf-arrow-extra-width
                                ebnf-space-R ebnf-space-R ebnf-space-R
                                ebnf-horizontal-space
-                               (* (length times) ebnf-font-width-R)))))
+                               (* (length times) ebnf-font-width-R))))
+  (ebnf-log "   repeat entry  : %7.3f" (ebnf-node-entry  repeat))
+  (ebnf-log "   repeat height : %7.3f" (ebnf-node-height repeat))
+  (ebnf-log "   repeat width  : %7.3f" (ebnf-node-width  repeat)))
 
 
 ;; [except width-fun dim-fun entry height width element element]
 (defun ebnf-except-dimension (except)
+  (ebnf-log "(ebnf-except-dimension except)")
   (let ((factor  (ebnf-node-list except))
        (element (ebnf-node-separator except)))
     (ebnf-node-dimension-func factor)
@@ -5241,11 +5677,15 @@ killed after process termination."
                                ebnf-space-E ebnf-space-E
                                ebnf-space-E ebnf-space-E
                                ebnf-font-width-E
-                               ebnf-horizontal-space))))
+                               ebnf-horizontal-space)))
+  (ebnf-log "   except entry  : %7.3f" (ebnf-node-entry  except))
+  (ebnf-log "   except height : %7.3f" (ebnf-node-height except))
+  (ebnf-log "   except width  : %7.3f" (ebnf-node-width  except)))
 
 
 ;; [alternative width-fun dim-fun entry height width list]
 (defun ebnf-alternative-dimension (alternative)
+  (ebnf-log "(ebnf-alternative-dimension alternative)")
   (let ((body (ebnf-node-list alternative))
        (lis  (ebnf-node-list alternative)))
     (while lis
@@ -5270,23 +5710,33 @@ killed after process termination."
                                           (- (ebnf-node-height tail)
                                              (ebnf-node-entry tail))))))
       (ebnf-node-height alternative height)
-      (ebnf-node-width  alternative (+ width ebnf-horizontal-space))
-      (ebnf-node-list   alternative body))))
+      (ebnf-node-width  alternative (+ width
+                                      ebnf-horizontal-space
+                                      ebnf-basic-width-extra))
+      (ebnf-node-list   alternative body)))
+  (ebnf-log "   alternative entry  : %7.3f" (ebnf-node-entry  alternative))
+  (ebnf-log "   alternative height : %7.3f" (ebnf-node-height alternative))
+  (ebnf-log "   alternative width  : %7.3f" (ebnf-node-width  alternative)))
 
 
 ;; [optional width-fun dim-fun entry height width element]
 (defun ebnf-optional-dimension (optional)
+  (ebnf-log "(ebnf-optional-dimension optional)")
   (let ((body (ebnf-node-list optional)))
     (ebnf-node-dimension-func body)
     (ebnf-node-entry  optional (ebnf-node-entry body))
     (ebnf-node-height optional (+ (ebnf-node-height body)
                                  ebnf-vertical-space))
     (ebnf-node-width  optional (+ (ebnf-node-width body)
-                                 ebnf-horizontal-space))))
+                                 ebnf-horizontal-space)))
+  (ebnf-log "   optional entry  : %7.3f" (ebnf-node-entry  optional))
+  (ebnf-log "   optional height : %7.3f" (ebnf-node-height optional))
+  (ebnf-log "   optional width  : %7.3f" (ebnf-node-width  optional)))
 
 
 ;; [one-or-more width-fun dim-fun entry height width element separator]
 (defun ebnf-one-or-more-dimension (or-more)
+  (ebnf-log "(ebnf-one-or-more-dimension or-more)")
   (let ((list-part (ebnf-node-list or-more))
        (sep-part  (ebnf-node-separator or-more)))
     (ebnf-node-dimension-func list-part)
@@ -5294,7 +5744,7 @@ killed after process termination."
         (ebnf-node-dimension-func sep-part))
     (let ((height (+ (if sep-part
                         (ebnf-node-height sep-part)
-                      0.0)
+                      ebnf-basic-empty-height)
                     ebnf-vertical-space
                     (ebnf-node-height list-part)))
          (width  (max (if sep-part
@@ -5304,14 +5754,21 @@ killed after process termination."
       (when sep-part
        (ebnf-adjust-width list-part width)
        (ebnf-adjust-width sep-part width))
-      (ebnf-node-entry  or-more (+ (- height (ebnf-node-height list-part))
+      (ebnf-node-entry  or-more (+ (- height
+                                     (ebnf-node-height list-part))
                                   (ebnf-node-entry list-part)))
       (ebnf-node-height or-more height)
-      (ebnf-node-width  or-more (+ width ebnf-horizontal-space)))))
+      (ebnf-node-width  or-more (+ width
+                                  ebnf-horizontal-space
+                                  ebnf-basic-width-extra))))
+  (ebnf-log "   one-or-more entry  : %7.3f" (ebnf-node-entry  or-more))
+  (ebnf-log "   one-or-more height : %7.3f" (ebnf-node-height or-more))
+  (ebnf-log "   one-or-more width  : %7.3f" (ebnf-node-width  or-more)))
 
 
 ;; [zero-or-more width-fun dim-fun entry height width element separator]
 (defun ebnf-zero-or-more-dimension (or-more)
+  (ebnf-log "(ebnf-zero-or-more-dimension or-more)")
   (let ((list-part (ebnf-node-list or-more))
        (sep-part  (ebnf-node-separator or-more)))
     (ebnf-node-dimension-func list-part)
@@ -5319,7 +5776,7 @@ killed after process termination."
         (ebnf-node-dimension-func sep-part))
     (let ((height (+ (if sep-part
                         (ebnf-node-height sep-part)
-                      0.0)
+                      ebnf-basic-empty-height)
                     ebnf-vertical-space
                     (ebnf-node-height list-part)
                     ebnf-vertical-space))
@@ -5332,11 +5789,17 @@ killed after process termination."
        (ebnf-adjust-width sep-part width))
       (ebnf-node-entry  or-more height)
       (ebnf-node-height or-more height)
-      (ebnf-node-width  or-more (+ width ebnf-horizontal-space)))))
+      (ebnf-node-width  or-more (+ width
+                                  ebnf-horizontal-space
+                                  ebnf-basic-width-extra))))
+  (ebnf-log "   zero-or-more entry  : %7.3f" (ebnf-node-entry  or-more))
+  (ebnf-log "   zero-or-more height : %7.3f" (ebnf-node-height or-more))
+  (ebnf-log "   zero-or-more width  : %7.3f" (ebnf-node-width  or-more)))
 
 
 ;; [sequence width-fun dim-fun entry height width list]
 (defun ebnf-sequence-dimension (sequence)
+  (ebnf-log "(ebnf-sequence-dimension sequence)")
   (let ((above 0.0)
        (below 0.0)
        (width 0.0)
@@ -5352,7 +5815,10 @@ killed after process termination."
            width (+ width (ebnf-node-width node))))
     (ebnf-node-entry  sequence above)
     (ebnf-node-height sequence (+ above below))
-    (ebnf-node-width  sequence width)))
+    (ebnf-node-width  sequence width))
+  (ebnf-log "   sequence entry  : %7.3f" (ebnf-node-entry  sequence))
+  (ebnf-log "   sequence height : %7.3f" (ebnf-node-height sequence))
+  (ebnf-log "   sequence width  : %7.3f" (ebnf-node-width  sequence)))
 
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -5494,7 +5960,8 @@ killed after process termination."
   (let ((filename (ebnf-eps-filename name)))
     (if (member filename ebnf-eps-context)
        (error "Try to open an already opened EPS file: %s" filename)
-      (setq ebnf-eps-context (cons filename ebnf-eps-context)))))
+      (setq ebnf-eps-context (cons filename ebnf-eps-context)))
+    (ebnf-eps-header-footer-file filename)))
 
 
 (defun ebnf-eps-remove-context (name)
@@ -5505,14 +5972,16 @@ killed after process termination."
 
 
 (defun ebnf-eps-add-production (header)
-  (and ebnf-eps-executing
-       ebnf-eps-context
-       (let ((prod (assoc header ebnf-eps-production-list)))
-        (if prod
-            (setcdr prod (append ebnf-eps-context (cdr prod)))
-          (setq ebnf-eps-production-list
-                (cons (cons header (ebnf-dup-list ebnf-eps-context))
-                      ebnf-eps-production-list))))))
+  (when ebnf-eps-executing
+    (if ebnf-eps-context
+       (let ((prod (assoc header ebnf-eps-production-list)))
+         (if prod
+             (setcdr prod (ebnf-dup-list
+                           (append ebnf-eps-context (cdr prod))))
+           (setq ebnf-eps-production-list
+                 (cons (cons header (ebnf-dup-list ebnf-eps-context))
+                       ebnf-eps-production-list))))
+      (ebnf-eps-header-footer-file (ebnf-eps-filename header)))))
 
 
 (defun ebnf-dup-list (old)
@@ -5567,7 +6036,9 @@ killed after process termination."
 (defun ebnf-trim-right (str)
   (let* ((len   (1- (length str)))
         (index len))
-    (while (and (> index 0) (= (aref str index) ?\s))
+    ;; to keep compatibility with Emacs 20 & 21:
+    ;; DO NOT REPLACE `?\ ' BY `?\s'
+    (while (and (> index 0) (= (aref str index) ?\ ))
       (setq index (1- index)))
     (if (= index len)
        str
@@ -5579,12 +6050,12 @@ killed after process termination."
 
 
 (defun ebnf-make-empty (&optional width)
-  (vector 'ebnf-generate-empty
-         'ignore
-         'ignore
-         0.0
-         0.0
-         (or width ebnf-horizontal-space)))
+  (vector 'ebnf-generate-empty         ; 0 generator
+         'ignore                       ; 1 width fun
+         'ignore                       ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         (or width ebnf-horizontal-space))) ; 5 width
 
 
 (defun ebnf-make-terminal (name)
@@ -5606,19 +6077,19 @@ killed after process termination."
 
 
 (defun ebnf-make-terminal1 (name gen-func dim-func)
-  (vector gen-func
-         'ignore
-         dim-func
-         0.0
-         0.0
-         0.0
-         (let ((len (length name)))
+  (vector gen-func                     ; 0 generatore
+         'ignore                       ; 1 width fun
+         dim-func                      ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         0.0                           ; 5 width
+         (let ((len (length name)))    ; 6 name
            (cond ((> len 3) name)
                  ((= len 3) (concat name " "))
                  ((= len 2) (concat " " name " "))
                  ((= len 1) (concat " " name "  "))
                  (t         "    ")))
-         ebnf-default-p))
+         ebnf-default-p))              ; 7 is default?
 
 
 (defun ebnf-make-one-or-more (list-part &optional sep-part)
@@ -5636,70 +6107,71 @@ killed after process termination."
 
 
 (defun ebnf-make-or-more1 (gen-func dim-func list-part sep-part)
-  (vector gen-func
-         'ebnf-element-width
-         dim-func
-         0.0
-         0.0
-         0.0
-         (if (listp list-part)
+  (vector gen-func                     ; 0 generator
+         'ebnf-element-width           ; 1 width fun
+         dim-func                      ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         0.0                           ; 5 width
+         (if (listp list-part)         ; 6 element
              (ebnf-make-sequence list-part)
            list-part)
-         (if (and sep-part (listp sep-part))
+         (if (and sep-part (listp sep-part)) ; 7 separator
              (ebnf-make-sequence sep-part)
            sep-part)))
 
 
 (defun ebnf-make-production (name prod action)
-  (vector 'ebnf-generate-production
-         'ignore
-         'ebnf-production-dimension
-         0.0
-         0.0
-         0.0
-         name
-         prod
-         action))
+  (vector 'ebnf-generate-production    ; 0 generator
+         'ignore                       ; 1 width fun
+         'ebnf-production-dimension    ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         0.0                           ; 5 width
+         name                          ; 6 production name
+         prod                          ; 7 production body
+         action))                      ; 8 production action
 
 
 (defun ebnf-make-alternative (body)
-  (vector 'ebnf-generate-alternative
-         'ebnf-alternative-width
-         'ebnf-alternative-dimension
-         0.0
-         0.0
-         0.0
-         body))
+  (vector 'ebnf-generate-alternative   ; 0 generator
+         'ebnf-alternative-width       ; 1 width fun
+         'ebnf-alternative-dimension   ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         0.0                           ; 5 width
+         body))                        ; 6 alternative list
 
 
 (defun ebnf-make-optional (body)
-  (vector 'ebnf-generate-optional
-         'ebnf-alternative-width
-         'ebnf-optional-dimension
-         0.0
-         0.0
-         0.0
-         body))
+  (vector 'ebnf-generate-optional      ; 0 generator
+         'ebnf-alternative-width       ; 1 width fun
+         'ebnf-optional-dimension      ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         0.0                           ; 5 width
+         body))                        ; 6 optional element
 
 
 (defun ebnf-make-except (factor exception)
-  (vector 'ebnf-generate-except
-         'ignore
-         'ebnf-except-dimension
-         0.0
-         0.0
-         0.0
-         factor
-         exception))
+  (vector 'ebnf-generate-except                ; 0 generator
+         'ignore                       ; 1 width fun
+         'ebnf-except-dimension        ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         0.0                           ; 5 width
+         factor                        ; 6 base element
+         exception))                   ; 7 exception element
 
 
 (defun ebnf-make-repeat (times primary &optional upper)
-  (vector 'ebnf-generate-repeat
-         'ignore
-         'ebnf-repeat-dimension
-         0.0
-         0.0
-         0.0
+  (vector 'ebnf-generate-repeat                ; 0 generator
+         'ignore                       ; 1 width fun
+         'ebnf-repeat-dimension        ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         0.0                           ; 5 width
+                                       ; 6 times
          (cond ((and times upper)      ; L * U, L * L
                 (if (string= times upper)
                     (if (string= times "")
@@ -5712,27 +6184,27 @@ killed after process termination."
                 (concat "* " upper))
                (t                      ; *
                 " * "))
-         primary))
+         primary))                     ; 7 element
 
 
 (defun ebnf-make-sequence (seq)
-  (vector 'ebnf-generate-sequence
-         'ebnf-sequence-width
-         'ebnf-sequence-dimension
-         0.0
-         0.0
-         0.0
-         seq))
+  (vector 'ebnf-generate-sequence      ; 0 generator
+         'ebnf-sequence-width          ; 1 width fun
+         'ebnf-sequence-dimension      ; 2 dimension fun
+         0.0                           ; 3 entry
+         0.0                           ; 4 height
+         0.0                           ; 5 width
+         seq))                         ; 6 sequence
 
 
 (defun ebnf-make-dup-sequence (node seq)
-  (vector 'ebnf-generate-sequence
-         'ebnf-sequence-width
-         'ebnf-sequence-dimension
-          (ebnf-node-entry node)
-          (ebnf-node-height node)
-          (ebnf-node-width node)
-          seq))
+  (vector 'ebnf-generate-sequence      ; 0 generator
+         'ebnf-sequence-width          ; 1 width fun
+         'ebnf-sequence-dimension      ; 2 dimension fun
+         (ebnf-node-entry node)        ; 3 entry
+         (ebnf-node-height node)       ; 4 height
+         (ebnf-node-width node)        ; 5 width
+         seq))                         ; 6 sequence
 
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -5819,13 +6291,17 @@ killed after process termination."
 (defun ebnf-token-alternative (body sequence)
   (if (null body)
       (if (cdr sequence)
+         ;; no alternative
          sequence
-       (cons (car sequence)
+       ;; empty element
+       (cons (car sequence)            ; token
              (ebnf-make-empty)))
-    (cons (car sequence)
+    (cons (car sequence)               ; token
          (let ((seq (cdr sequence)))
            (if (and (= (length body) 1) (null seq))
+               ;; alternative with one element
                (car body)
+             ;; a real alternative
              (ebnf-make-alternative (nreverse (if seq
                                                   (cons seq body)
                                                 body))))))))
@@ -5858,6 +6334,28 @@ killed after process termination."
     table)
   "Vector used to map characters to a special comment token.")
 
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Log message
+
+
+(defun ebnf-log-header (format-str &rest args)
+  (when ebnf-log
+    (apply
+     'ebnf-log
+     (concat
+      "\n\n===============================================================\n\n"
+      format-str)
+     args)))
+
+
+(defun ebnf-log (format-str &rest args)
+  (when ebnf-log
+    (save-excursion
+      (set-buffer (get-buffer-create "*Ebnf2ps Log*"))
+      (goto-char (point-max))
+      (insert (apply 'format format-str args) "\n"))))
+
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; To make this file smaller, some commands go in a separate file.
index 58a25ab5b88c3585239a5d6a7b9a3f40ea8aac22..5acbe70a074989992ed44efe6eeb1c715c488d69 100644 (file)
@@ -1139,6 +1139,7 @@ Tree mode key bindings:
 
     (kill-all-local-variables)
     (use-local-map ebrowse-tree-mode-map)
+    (buffer-disable-undo)
 
     (unless (zerop (buffer-size))
       (goto-char (point-min))
@@ -1148,15 +1149,15 @@ Tree mode key bindings:
       (erase-buffer)
       (message nil))
 
-    (mapcar 'make-local-variable
-           '(ebrowse--tags-file-name
-             ebrowse--indentation
-             ebrowse--tree
-             ebrowse--header
-             ebrowse--show-file-names-flag
-             ebrowse--frozen-flag
-             ebrowse--tree-obarray
-             revert-buffer-function))
+    (mapc 'make-local-variable
+         '(ebrowse--tags-file-name
+           ebrowse--indentation
+           ebrowse--tree
+           ebrowse--header
+           ebrowse--show-file-names-flag
+           ebrowse--frozen-flag
+           ebrowse--tree-obarray
+           revert-buffer-function))
 
     (setf ebrowse--show-file-names-flag nil
          ebrowse--tree-obarray (make-vector 127 0)
@@ -1638,10 +1639,10 @@ and possibly kill the viewed buffer."
       (setq original-frame-configuration ebrowse--frame-configuration
            exit-action ebrowse--view-exit-action))
     ;; Delete the frame in which we viewed.
-    (mapcar 'delete-frame
-           (loop for frame in (frame-list)
-                 when (not (assq frame original-frame-configuration))
-                 collect frame))
+    (mapc 'delete-frame
+         (loop for frame in (frame-list)
+            when (not (assq frame original-frame-configuration))
+            collect frame))
     (when exit-action
       (funcall exit-action buffer))))
 
@@ -2004,7 +2005,7 @@ COLLAPSE non-nil means collapse the branch."
     (fillarray (car (cdr map)) 'ebrowse-electric-list-undefined)
     (fillarray (car (cdr submap)) 'ebrowse-electric-list-undefined)
     (define-key map "\e" submap)
-    (define-key map "\C-z" 'suspend-emacs)
+    (define-key map "\C-z" 'suspend-frame)
     (define-key map "\C-h" 'Helper-help)
     (define-key map "?" 'Helper-describe-bindings)
     (define-key map "\C-c" nil)
@@ -2256,28 +2257,28 @@ See 'Electric-command-loop' for a description of STATE and CONDITION."
   (kill-all-local-variables)
   (use-local-map ebrowse-member-mode-map)
   (setq major-mode 'ebrowse-member-mode)
-  (mapcar 'make-local-variable
-         '(ebrowse--decl-column        ;display column
-           ebrowse--n-columns          ;number of short columns
-           ebrowse--column-width       ;width of columns above
-           ebrowse--show-inherited-flag ;include inherited members?
-           ebrowse--filters            ;public, protected, private
-           ebrowse--accessor           ;vars, functions, friends
-           ebrowse--displayed-class    ;class displayed
-           ebrowse--long-display-flag  ;display with regexps?
-           ebrowse--source-regexp-flag ;show source regexp?
-           ebrowse--attributes-flag    ;show `virtual' and `inline'
-           ebrowse--member-list        ;list of members displayed
-           ebrowse--tree               ;the class tree
-           ebrowse--member-mode-strings ;part of mode line
-           ebrowse--tags-file-name     ;
-           ebrowse--header
-           ebrowse--tree-obarray
-           ebrowse--virtual-display-flag
-           ebrowse--inline-display-flag
-           ebrowse--const-display-flag
-           ebrowse--pure-display-flag
-           ebrowse--frozen-flag))      ;buffer not automagically reused
+  (mapc 'make-local-variable
+       '(ebrowse--decl-column          ;display column
+         ebrowse--n-columns            ;number of short columns
+         ebrowse--column-width         ;width of columns above
+         ebrowse--show-inherited-flag  ;include inherited members?
+         ebrowse--filters              ;public, protected, private
+         ebrowse--accessor             ;vars, functions, friends
+         ebrowse--displayed-class      ;class displayed
+         ebrowse--long-display-flag    ;display with regexps?
+         ebrowse--source-regexp-flag   ;show source regexp?
+         ebrowse--attributes-flag      ;show `virtual' and `inline'
+         ebrowse--member-list          ;list of members displayed
+         ebrowse--tree                 ;the class tree
+         ebrowse--member-mode-strings  ;part of mode line
+         ebrowse--tags-file-name       ;
+         ebrowse--header
+         ebrowse--tree-obarray
+         ebrowse--virtual-display-flag
+         ebrowse--inline-display-flag
+         ebrowse--const-display-flag
+         ebrowse--pure-display-flag
+         ebrowse--frozen-flag))        ;buffer not automagically reused
   (setq mode-name "Ebrowse-Members"
        mode-line-buffer-identification
        (propertized-buffer-identification "C++ Members")
@@ -3964,7 +3965,7 @@ Prefix arg ARG says how much."
     (fillarray (car (cdr map)) 'ebrowse-electric-position-undefined)
     (fillarray (car (cdr submap)) 'ebrowse-electric-position-undefined)
     (define-key map "\e" submap)
-    (define-key map "\C-z" 'suspend-emacs)
+    (define-key map "\C-z" 'suspend-frame)
     (define-key map "\C-h" 'Helper-help)
     (define-key map "?" 'Helper-describe-bindings)
     (define-key map "\C-c" nil)
@@ -4148,7 +4149,7 @@ Otherwise, FILE-NAME specifies the file to save the tree in."
          (erase-buffer)
          (setf (ebrowse-hs-member-table header) nil)
          (insert (prin1-to-string header) " ")
-         (mapcar 'ebrowse-save-class tree)
+         (mapc 'ebrowse-save-class tree)
          (write-file file-name)
          (message "Tree written to file `%s'" file-name))
       (kill-buffer temp-buffer)
@@ -4163,7 +4164,7 @@ Otherwise, FILE-NAME specifies the file to save the tree in."
   (insert "[ebrowse-ts ")
   (prin1 (ebrowse-ts-class class))     ;class name
   (insert "(")                         ;list of subclasses
-  (mapcar 'ebrowse-save-class (ebrowse-ts-subclasses class))
+  (mapc 'ebrowse-save-class (ebrowse-ts-subclasses class))
   (insert ")")
   (dolist (func ebrowse-member-list-accessors)
     (prin1 (funcall func class))
index 6c704916c651075227600f144eba9666ce5f076f..c7042fb1f671dfda3b9a7b31b1f5b38206244ed2 100644 (file)
@@ -682,7 +682,7 @@ Used in the F90 entry in `hs-special-modes-alist'.")
 (let (abbrevs-changed)
   ;; Use the 6th arg (SYSTEM-FLAG) of define-abbrev if possible.
   ;; A little baroque to quieten the byte-compiler.
-  (mapcar
+  (mapc
    (function (lambda (element)
                (condition-case nil
                    (apply 'define-abbrev f90-mode-abbrev-table
index 99e5fb5382324575fe98b60320febcc3ce50b2aa..5538bd8984a4d941e935f022f45cdf431132a34d 100644 (file)
@@ -325,11 +325,6 @@ Return nil if we cannot, non-nil if we can."
   (or (nth 2 (flymake-get-file-name-mode-and-masks file-name))
       'flymake-get-real-file-name))
 
-(defcustom flymake-buildfile-dirs '("." ".." "../.." "../../.." "../../../.." "../../../../.." "../../../../../.." "../../../../../../.." "../../../../../../../.." "../../../../../../../../.." "../../../../../../../../../.." "../../../../../../../../../../..")
-  "Dirs to look for buildfile."
-  :group 'flymake
-  :type '(repeat (string)))
-
 (defvar flymake-find-buildfile-cache (flymake-makehash 'equal))
 
 (defun flymake-get-buildfile-from-cache (dir-name)
@@ -346,19 +341,15 @@ Return nil if we cannot, non-nil if we can."
 Buildfile includes Makefile, build.xml etc.
 Return its file name if found, or nil if not found."
   (or (flymake-get-buildfile-from-cache source-dir-name)
-      (let* ((dirs flymake-buildfile-dirs)
-             (buildfile-dir          nil)
-             (found                  nil))
-        (while (and (not found) dirs)
-          (setq buildfile-dir (concat source-dir-name (car dirs)))
-          (when (file-exists-p (expand-file-name buildfile-name buildfile-dir))
-            (setq found t))
-          (setq dirs (cdr dirs)))
-        (if found
+      (let* ((file (locate-dominating-file
+                    source-dir-name
+                    (concat "\\`" (regexp-quote buildfile-name) "\\'"))))
+        (if file
             (progn
-              (flymake-log 3 "found buildfile at %s/%s" buildfile-dir buildfile-name)
-              (flymake-add-buildfile-to-cache source-dir-name buildfile-dir)
-              buildfile-dir)
+              (flymake-log 3 "found buildfile at %s" file)
+              (setq file (file-name-directory file))
+              (flymake-add-buildfile-to-cache source-dir-name file)
+              file)
           (progn
             (flymake-log 3 "buildfile for %s not found" source-dir-name)
             nil)))))
index 16992c54523d51a83a707bec915b3e0bede4c879..016e484a6c5337e8b8e881afffa6b0bb22bc98b6 100644 (file)
@@ -1,7 +1,8 @@
 ;;; fortran.el --- Fortran mode for GNU Emacs
 
 ;; Copyright (C) 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
-;;               2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
+;;               2002, 2003, 2004, 2005, 2006, 2007
+;;               Free Software Foundation, Inc.
 
 ;; Author: Michael D. Prange <prange@erl.mit.edu>
 ;; Maintainer: Glenn Morris <rgm@gnu.org>
@@ -55,7 +56,6 @@
 
 ;; silence compiler
 (defvar dabbrev-case-fold-search)
-(defvar font-lock-syntactic-keywords)
 (defvar gud-find-expr-function)
 (defvar imenu-case-fold-search)
 (defvar imenu-syntax-alist)
   :group  'fortran)
 
 
-;;;###autoload
 (defcustom fortran-tab-mode-default nil
-  "*Default tabbing/carriage control style for empty files in Fortran mode.
+  "Default tabbing/carriage control style for empty files in Fortran mode.
 A non-nil value specifies tab-digit style of continuation control.
 A value of nil specifies that continuation lines are marked
 with a character in column 6."
   :type  'boolean
   :group 'fortran-indent)
 
-(defcustom fortran-tab-mode-string "/t"
-  "*String to appear in mode line in TAB format buffers."
+;; TODO add more detail of what tab mode is to doc string.
+(defcustom fortran-tab-mode-string
+  (propertize "/t" 'help-echo "This buffer is in Fortran TAB mode"
+              'mouse-face 'mode-line-highlight
+              'local-map
+              (make-mode-line-mouse-map 'mouse-1
+                                        (lambda ()
+                                          (interactive)
+                                          (describe-variable
+                                           'fortran-tab-mode-string))))
+  "String to appear in mode line in TAB format buffers."
   :type  'string
   :group 'fortran-indent)
 
+(put 'fortran-tab-mode-string 'risky-local-variable t)
+
 (defcustom fortran-do-indent 3
-  "*Extra indentation applied to DO blocks."
+  "Extra indentation applied to DO blocks."
   :type  'integer
   :group 'fortran-indent)
 
 (defcustom fortran-if-indent 3
-  "*Extra indentation applied to IF, SELECT CASE and WHERE blocks."
+  "Extra indentation applied to IF, SELECT CASE and WHERE blocks."
   :type  'integer
   :group 'fortran-indent)
 
 (defcustom fortran-structure-indent 3
-  "*Extra indentation applied to STRUCTURE, UNION, MAP and INTERFACE blocks."
+  "Extra indentation applied to STRUCTURE, UNION, MAP and INTERFACE blocks."
   :type  'integer
   :group 'fortran-indent)
 
 (defcustom fortran-continuation-indent 5
-  "*Extra indentation applied to continuation lines."
+  "Extra indentation applied to continuation lines."
   :type  'integer
   :group 'fortran-indent)
 
 (defcustom fortran-comment-indent-style 'fixed
-  "*How to indent comments.
+  "How to indent comments.
 nil forces comment lines not to be touched;
 `fixed' indents to `fortran-comment-line-extra-indent' columns beyond
   `fortran-minimum-statement-indent-fixed' (if `indent-tabs-mode' nil), or
@@ -124,13 +134,13 @@ nil forces comment lines not to be touched;
   :group 'fortran-indent)
 
 (defcustom fortran-comment-line-extra-indent 0
-  "*Amount of extra indentation for text within full-line comments."
+  "Amount of extra indentation for text within full-line comments."
   :type  'integer
   :group 'fortran-indent
   :group 'fortran-comment)
 
 (defcustom fortran-comment-line-start "C"
-  "*Delimiter inserted to start new full-line comment.
+  "Delimiter inserted to start new full-line comment.
 You might want to change this to \"*\", for instance."
   :version "21.1"
   :type    'string
@@ -140,14 +150,14 @@ You might want to change this to \"*\", for instance."
 ;; filling and doesn't seem to be necessary.
 (defcustom fortran-comment-line-start-skip
   "^[CcDd*!]\\(\\([^ \t\n]\\)\\2+\\)?[ \t]*"
-  "*Regexp to match the start of a full-line comment."
+  "Regexp to match the start of a full-line comment."
   :version "21.1"
   :type    'regexp
   :group   'fortran-comment)
 
 (defcustom fortran-directive-re
   "^[ \t]*#.*"
-  "*Regexp to match a directive line.
+  "Regexp to match a directive line.
 The matching text will be fontified with `font-lock-keyword-face'.
 The matching line will be given zero indentation."
   :version "22.1"
@@ -155,12 +165,12 @@ The matching line will be given zero indentation."
   :group   'fortran-indent)
 
 (defcustom fortran-minimum-statement-indent-fixed 6
-  "*Minimum statement indentation for fixed format continuation style."
+  "Minimum statement indentation for fixed format continuation style."
   :type  'integer
   :group 'fortran-indent)
 
 (defcustom fortran-minimum-statement-indent-tab (max tab-width 6)
-  "*Minimum statement indentation for TAB format continuation style."
+  "Minimum statement indentation for TAB format continuation style."
   :type  'integer
   :group 'fortran-indent)
 
@@ -168,30 +178,30 @@ The matching line will be given zero indentation."
 ;; of length one rather than a single character.
 ;; The code in this file accepts either format for compatibility.
 (defcustom fortran-comment-indent-char " "
-  "*Single-character string inserted for Fortran comment indentation.
+  "Single-character string inserted for Fortran comment indentation.
 Normally a space."
   :type  'string
   :group 'fortran-comment)
 
 (defcustom fortran-line-number-indent 1
-  "*Maximum indentation for Fortran line numbers.
+  "Maximum indentation for Fortran line numbers.
 5 means right-justify them within their five-column field."
   :type  'integer
   :group 'fortran-indent)
 
 (defcustom fortran-check-all-num-for-matching-do nil
-  "*Non-nil causes all numbered lines to be treated as possible DO loop ends."
+  "Non-nil causes all numbered lines to be treated as possible DO loop ends."
   :type  'boolean
   :group 'fortran)
 
 (defcustom fortran-blink-matching-if nil
-  "*Non-nil causes \\[fortran-indent-line] on ENDIF to blink on matching IF.
+  "Non-nil causes \\[fortran-indent-line] on ENDIF to blink on matching IF.
 Also, from an ENDDO statement blink on matching DO [WHILE] statement."
   :type  'boolean
   :group 'fortran)
 
 (defcustom fortran-continuation-string "$"
-  "*Single-character string used for Fortran continuation lines.
+  "Single-character string used for Fortran continuation lines.
 In fixed format continuation style, this character is inserted in
 column 6 by \\[fortran-split-line] to begin a continuation line.
 Also, if \\[fortran-indent-line] finds this at the beginning of a
@@ -201,16 +211,17 @@ appropriate style. Normally $."
   :group 'fortran)
 
 (defcustom fortran-comment-region "c$$$"
-  "*String inserted by \\[fortran-comment-region] at start of each \
+  "String inserted by \\[fortran-comment-region] at start of each \
 line in region."
   :type  'string
   :group 'fortran-comment)
 
 (defcustom fortran-electric-line-number t
-  "*Non-nil causes line numbers to be moved to the correct column as typed."
+  "Non-nil causes line numbers to be moved to the correct column as typed."
   :type  'boolean
   :group 'fortran)
 
+;; TODO use fortran-line-length, somehow.
 (defcustom fortran-column-ruler-fixed
   "0   4 6  10        20        30        40        5\
 0        60        70\n\
@@ -222,6 +233,7 @@ See the variable `fortran-column-ruler-tab' for TAB format mode."
   :type  'string
   :group 'fortran)
 
+;; TODO use fortran-line-length, somehow.
 (defcustom fortran-column-ruler-tab
   "0       810        20        30        40        5\
 0        60        70\n\
@@ -239,11 +251,38 @@ See the variable `fortran-column-ruler-fixed' for fixed format mode."
   :group 'fortran)
 
 (defcustom fortran-break-before-delimiters t
-  "*Non-nil causes filling to break lines before delimiters.
+  "Non-nil causes filling to break lines before delimiters.
 Delimiters are characters matching the regexp `fortran-break-delimiters-re'."
   :type  'boolean
   :group 'fortran)
 
+;; TODO 0 as no-limit, as per g77.
+(defcustom fortran-line-length 72
+  "Maximum number of characters in a line of fixed-form Fortran code.
+Characters beyond this point are treated as comments.  Setting
+this variable directly (after fortran mode is loaded) does not
+take effect.  Use either \\[customize] (which affects all Fortran
+buffers and the default) or the function
+`fortran-line-length' (which can also operate on just the current
+buffer).  This corresponds to the g77 compiler option
+`-ffixed-line-length-N'."
+  :type 'integer
+  :initialize 'custom-initialize-default
+  :set (lambda (symbol value)
+         ;; Do all fortran buffers, and the default.
+         (fortran-line-length value t))
+  :version "23.1"
+  :group 'fortran)
+
+(put 'fortran-line-length 'safe-local-variable 'integerp)
+(make-variable-buffer-local 'fortran-line-length)
+
+(defcustom fortran-mode-hook nil
+  "Hook run when entering Fortran mode."
+  :type  'hook
+  :group 'fortran)
+
+\f
 (defconst fortran-break-delimiters-re "[-+*/><=, \t]"
   "Regexp matching delimiter characters at which lines may be broken.
 There are certain tokens comprised entirely of characters
@@ -259,22 +298,16 @@ characters matching the regexp `fortran-break-delimiters-re' that should
 not be split by filling.  Each element is assumed to be two
 characters long.")
 
-(defcustom fortran-mode-hook nil
-  "Hook run when entering Fortran mode."
-  :type  'hook
-  :group 'fortran)
-
-\f
-(defvar fortran-if-start-re "\\(\\(\\sw\\|\\s_\\)+:[ \t]*\\)?if[ \t]*("
+(defconst fortran-if-start-re "\\(\\(\\sw\\|\\s_\\)+:[ \t]*\\)?if[ \t]*("
   "Regexp matching the start of an IF statement.")
 
-(defvar fortran-end-prog-re1
+(defconst fortran-end-prog-re1
   "end\
 \\([ \t]*\\(program\\|subroutine\\|function\\|block[ \t]*data\\)\\>\
 \\([ \t]*\\(\\sw\\|\\s_\\)+\\)?\\)?"
   "Regexp possibly matching the end of a subprogram.")
 
-(defvar fortran-end-prog-re
+(defconst fortran-end-prog-re
   (concat "^[ \t0-9]*" fortran-end-prog-re1)
   "Regexp possibly matching the end of a subprogram, from the line start.
 See also `fortran-end-prog-re1'.")
@@ -402,11 +435,13 @@ Consists of level 3 plus all other intrinsics not already highlighted.")
 ;; (We can do so for F90-style).  Therefore an unmatched quote in a
 ;; standard comment will throw fontification off on the wrong track.
 ;; So we do syntactic fontification with regexps.
-(defvar fortran-font-lock-syntactic-keywords
-  '(("^[cd\\*]" 0 (11))
-    ("^[^cd\\*\t\n].\\{71\\}\\([^\n]+\\)" 1 (11)))
-  "`font-lock-syntactic-keywords' for Fortran.
-These get fixed-format comments fontified.")
+(defun fortran-font-lock-syntactic-keywords ()
+  "Return a value for `font-lock-syntactic-keywords' in Fortran mode.
+This varies according to the value of `fortran-line-length'.
+This is used to fontify fixed-format Fortran comments."
+  `(("^[cd\\*]" 0 (11))
+    (,(format "^[^cd\\*\t\n].\\{%d\\}\\([^\n]+\\)" (1- fortran-line-length))
+     1 (11))))
 
 (defvar fortran-font-lock-keywords fortran-font-lock-keywords-1
   "Default expressions to highlight in Fortran mode.")
@@ -582,6 +617,8 @@ Used in the Fortran entry in `hs-special-modes-alist'.")
         ["Widen" widen t]
         "--"
         ["Temporary column ruler" fortran-column-ruler  t]
+        ;; May not be '72', depending on fortran-line-length, but this
+        ;; seems ok for a menu item.
         ["72-column window"       fortran-window-create t]
         ["Full Width Window"
          (enlarge-window-horizontally (- (frame-width) (window-width)))
@@ -612,7 +649,7 @@ Used in the Fortran entry in `hs-special-modes-alist'.")
 (let (abbrevs-changed)
   ;; Use the 6th arg (SYSTEM-FLAG) of define-abbrev if possible.
   ;; Only use `apply' to quieten the byte-compiler.
-  (mapcar
+  (mapc
    (function (lambda (element)
                (condition-case nil
                    (apply 'define-abbrev fortran-mode-abbrev-table
@@ -780,7 +817,7 @@ with no args, if that value is non-nil."
   (set (make-local-variable 'normal-auto-fill-function) 'fortran-auto-fill)
   (set (make-local-variable 'indent-tabs-mode) (fortran-analyze-file-format))
   (setq mode-line-process '(indent-tabs-mode fortran-tab-mode-string))
-  (set (make-local-variable 'fill-column) 72)
+  (set (make-local-variable 'fill-column) fortran-line-length)
   (set (make-local-variable 'fill-paragraph-function) 'fortran-fill-paragraph)
   (set (make-local-variable 'font-lock-defaults)
        '((fortran-font-lock-keywords
@@ -789,9 +826,9 @@ with no args, if that value is non-nil."
           fortran-font-lock-keywords-3
           fortran-font-lock-keywords-4)
          nil t ((?/ . "$/") ("_$" . "w"))
-         fortran-beginning-of-subprogram))
-  (set (make-local-variable 'font-lock-syntactic-keywords)
-       fortran-font-lock-syntactic-keywords)
+         fortran-beginning-of-subprogram
+         (font-lock-syntactic-keywords
+          . (fortran-font-lock-syntactic-keywords))))
   (set (make-local-variable 'imenu-case-fold-search) t)
   (set (make-local-variable 'imenu-generic-expression)
        fortran-imenu-generic-expression)
@@ -804,9 +841,38 @@ with no args, if that value is non-nil."
        #'fortran-current-defun)
   (set (make-local-variable 'dabbrev-case-fold-search) 'case-fold-search)
   (set (make-local-variable 'gud-find-expr-function) 'fortran-gud-find-expr)
+  (add-hook 'hack-local-variables-hook 'fortran-hack-local-variables nil t)
   (run-mode-hooks 'fortran-mode-hook))
 
 \f
+(defun fortran-line-length (nchars &optional global)
+  "Set the length of fixed-form Fortran lines to NCHARS.
+This normally only affects the current buffer, which must be in
+Fortran mode.  If the optional argument GLOBAL is non-nil, it
+affects all Fortran buffers, and also the default."
+  (interactive "p")
+  (let (new)
+    (mapc (lambda (buff)
+            (with-current-buffer buff
+              (when (eq major-mode 'fortran-mode)
+                (setq fortran-line-length nchars
+                      fill-column fortran-line-length
+                      new (fortran-font-lock-syntactic-keywords))
+                ;; Refontify only if necessary.
+                (unless (equal new font-lock-syntactic-keywords)
+                  (setq font-lock-syntactic-keywords
+                        (fortran-font-lock-syntactic-keywords))
+                  (if font-lock-mode (font-lock-mode 1))))))
+          (if global
+              (buffer-list)
+            (list (current-buffer))))
+    (if global
+        (setq-default fortran-line-length nchars))))
+
+(defun fortran-hack-local-variables ()
+  "Fortran mode adds this to `hack-local-variables-hook'."
+  (fortran-line-length fortran-line-length))
+
 (defun fortran-gud-find-expr ()
   ;; Consider \n as punctuation (end of expression).
   (with-syntax-table fortran-gud-syntax-table
@@ -940,7 +1006,7 @@ The next key typed is executed unless it is SPC."
    nil "Type SPC or any command to erase ruler."))
 
 (defun fortran-window-create ()
-  "Make the window 72 columns wide.
+  "Make the window `fortran-line-length' (default 72) columns wide.
 See also `fortran-window-create-momentarily'."
   (interactive)
   (let ((window-min-width 2))
@@ -951,13 +1017,13 @@ See also `fortran-window-create-momentarily'."
           (scroll-bar-width (- (nth 2 window-edges)
                                (car window-edges)
                                (window-width))))
-      (split-window-horizontally (+ 72 scroll-bar-width)))
+      (split-window-horizontally (+ fortran-line-length scroll-bar-width)))
     (other-window 1)
     (switch-to-buffer " fortran-window-extra" t)
     (select-window (previous-window))))
 
 (defun fortran-window-create-momentarily (&optional arg)
-  "Momentarily make the window 72 columns wide.
+  "Momentarily make the window `fortran-line-length' (default 72) columns wide.
 Optional ARG non-nil and non-unity disables the momentary feature.
 See also `fortran-window-create'."
   (interactive "p")
@@ -1065,7 +1131,8 @@ Auto-indent does not happen if a numeric ARG is used."
     (string-match "^\\s-*\\(\\'\\|\\s<\\)"
                  (buffer-substring (match-end 0)
                                    (min (line-end-position)
-                                        (+ 72 (line-beginning-position)))))))
+                                        (+ fortran-line-length
+                                            (line-beginning-position)))))))
 
 ;; Note that you can't just check backwards for `subroutine' &c in
 ;; case of un-marked main programs not at the start of the file.
@@ -1996,13 +2063,15 @@ Always returns non-nil (to prevent `fill-paragraph' being called)."
     (fortran-indent-line)))
 
 (defun fortran-strip-sequence-nos (&optional do-space)
-  "Delete all text in column 72 and up (assumed to be sequence numbers).
-Normally also deletes trailing whitespace after stripping such text.
-Supplying prefix arg DO-SPACE prevents stripping the whitespace."
+  "Delete all text in column `fortran-line-length' (default 72) and up.
+This is assumed to be sequence numbers.  Normally also deletes
+trailing whitespace after stripping such text.  Supplying prefix
+arg DO-SPACE prevents stripping the whitespace."
   (interactive "*p")
   (save-excursion
     (goto-char (point-min))
-    (while (re-search-forward "^.\\{72\\}\\(.*\\)" nil t)
+    (while (re-search-forward (format "^.\\{%d\\}\\(.*\\)" fortran-line-length)
+                              nil t)
       (replace-match "" nil nil nil 1)
       (unless do-space (delete-horizontal-space)))))
 
index baa59c764fdafba12602db972a53bd6dc69bfee6..091735ee09de24b0bba78ee5f9ec8ccf8a52489b 100644 (file)
@@ -142,23 +142,31 @@ The following place holders should be present in the string:
   :version "22.1"
   :group 'grep)
 
-(defcustom grep-files-aliases '(
-       ("el" . "*.el")
-       ("ch" . "*.[ch]")
-       ("c" .  "*.c")
-       ("h" .  "*.h")
-       ("asm" . "*.[sS]")
-       ("m" .  "[Mm]akefile*")
-       ("l" . "[Cc]hange[Ll]og*")
-       ("tex" . "*.tex")
-       ("texi" . "*.texi")
-       )
+(defcustom grep-files-aliases
+  '(("asm" .    "*.[sS]")
+    ("c" .     "*.c")
+    ("cc" .    "*.cc")
+    ("ch" .    "*.[ch]")
+    ("el" .    "*.el")
+    ("h" .     "*.h")
+    ("l" .      "[Cc]hange[Ll]og*")
+    ("m" .     "[Mm]akefile*")
+    ("tex" .    "*.tex")
+    ("texi" .   "*.texi"))
   "*Alist of aliases for the FILES argument to `lgrep' and `rgrep'."
   :type 'alist
   :group 'grep)
 
-(defcustom grep-find-ignored-directories '("CVS" ".svn" "{arch}" ".hg" "_darcs"
-                                          ".git" ".bzr")
+(defcustom grep-find-ignored-directories
+  '(".bzr"
+    ".git"
+    ".hg"
+    ".svn"
+    "CVS"
+    "RCS"
+    "_MTN"
+    "_darcs"
+    "{arch}")
   "*List of names of sub-directories which `rgrep' shall not recurse into."
   :type '(repeat string)
   :group 'grep)
@@ -343,6 +351,12 @@ This variable's value takes effect when `grep-compute-defaults' is called.")
 (defvar grep-regexp-history nil)
 (defvar grep-files-history '("ch" "el"))
 
+(defvar grep-host-defaults-alist nil
+  "Default values depending on target host.
+`grep-compute-defaults' returns default values for every local or
+remote host `grep' runs.  These values can differ from host to
+host.  Once computed, the default values are kept here in order
+to avoid computing them again.")
 
 ;;;###autoload
 (defun grep-process-setup ()
@@ -371,92 +385,153 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
 
 (defun grep-probe (command args &optional func result)
   (equal (condition-case nil
-            (apply (or func 'call-process) command args)
+            (apply (or func 'process-file) command args)
           (error nil))
         (or result 0)))
 
 ;;;###autoload
 (defun grep-compute-defaults ()
-  (unless (or (not grep-use-null-device) (eq grep-use-null-device t))
-    (setq grep-use-null-device
-         (with-temp-buffer
-           (let ((hello-file (expand-file-name "HELLO" data-directory)))
-             (not
-              (and (if grep-command
-                       ;; `grep-command' is already set, so
-                       ;; use that for testing.
-                       (grep-probe grep-command
-                                   `(nil t nil "^English" ,hello-file)
-                                   #'call-process-shell-command)
-                     ;; otherwise use `grep-program'
-                     (grep-probe grep-program
-                                 `(nil t nil "-nH" "^English" ,hello-file)))
-                   (progn
-                     (goto-char (point-min))
-                     (looking-at
-                      (concat (regexp-quote hello-file)
-                              ":[0-9]+:English")))))))))
-  (unless (and grep-command grep-find-command
-              grep-template grep-find-template)
-    (let ((grep-options
-          (concat (if grep-use-null-device "-n" "-nH")
-                  (if (grep-probe grep-program
-                                  `(nil nil nil "-e" "foo" ,null-device)
-                                  nil 1)
-                      " -e"))))
-      (unless grep-command
-       (setq grep-command
-             (format "%s %s " grep-program grep-options)))
-      (unless grep-template
-       (setq grep-template
-             (format "%s <C> %s <R> <F>" grep-program grep-options)))
-      (unless grep-find-use-xargs
-       (setq grep-find-use-xargs
-             (cond
-              ((and
-                (grep-probe find-program `(nil nil nil ,null-device "-print0"))
-                (grep-probe "xargs" `(nil nil nil "-0" "-e" "echo")))
-               'gnu)
-              (t
-               'exec))))
-      (unless grep-find-command
-       (setq grep-find-command
-             (cond ((eq grep-find-use-xargs 'gnu)
-                    (format "%s . -type f -print0 | xargs -0 -e %s"
-                            find-program grep-command))
-                   ((eq grep-find-use-xargs 'exec)
-                    (let ((cmd0 (format "%s . -type f -exec %s"
-                                        find-program grep-command)))
-                      (cons
-                       (format "%s {} %s %s"
-                               cmd0 null-device
-                               (shell-quote-argument ";"))
-                       (1+ (length cmd0)))))
-                   (t
-                    (format "%s . -type f -print | xargs %s"
-                            find-program grep-command)))))
-      (unless grep-find-template
-       (setq grep-find-template
-             (let ((gcmd (format "%s <C> %s <R>"
-                                 grep-program grep-options)))
+  ;; Keep default values.
+  (unless grep-host-defaults-alist
+    (add-to-list
+     'grep-host-defaults-alist
+     (cons nil
+          `((grep-command ,grep-command)
+            (grep-template ,grep-template)
+            (grep-use-null-device ,grep-use-null-device)
+            (grep-find-command ,grep-find-command)
+            (grep-find-template ,grep-find-template)
+            (grep-find-use-xargs ,grep-find-use-xargs)
+            (grep-highlight-matches ,grep-highlight-matches)))))
+  (let* ((host-id
+         (intern (or (file-remote-p default-directory 'host) "localhost")))
+        (host-defaults (assq host-id grep-host-defaults-alist))
+        (defaults (assq nil grep-host-defaults-alist)))
+    ;; There are different defaults on different hosts.  They must be
+    ;; computed for every host once.
+    (setq grep-command
+         (or (cadr (assq 'grep-command host-defaults))
+             (cadr (assq 'grep-command defaults)))
+
+         grep-template
+          (or (cadr (assq 'grep-template host-defaults))
+             (cadr (assq 'grep-template defaults)))
+
+         grep-use-null-device
+         (or (cadr (assq 'grep-use-null-device host-defaults))
+             (cadr (assq 'grep-use-null-device defaults)))
+
+         grep-find-command
+         (or (cadr (assq 'grep-find-command host-defaults))
+             (cadr (assq 'grep-find-command defaults)))
+
+         grep-find-template
+         (or (cadr (assq 'grep-find-template host-defaults))
+             (cadr (assq 'grep-find-template defaults)))
+
+         grep-find-use-xargs
+         (or (cadr (assq 'grep-find-use-xargs host-defaults))
+             (cadr (assq 'grep-find-use-xargs defaults)))
+
+         grep-highlight-matches
+         (or (cadr (assq 'grep-highlight-matches host-defaults))
+             (cadr (assq 'grep-highlight-matches defaults))))
+
+    (unless (or (not grep-use-null-device) (eq grep-use-null-device t))
+      (setq grep-use-null-device
+           (with-temp-buffer
+             (let ((hello-file (expand-file-name "HELLO" data-directory)))
+               (not
+                (and (if grep-command
+                         ;; `grep-command' is already set, so
+                         ;; use that for testing.
+                         (grep-probe grep-command
+                                     `(nil t nil "^English" ,hello-file)
+                                     #'call-process-shell-command)
+                       ;; otherwise use `grep-program'
+                       (grep-probe grep-program
+                                   `(nil t nil "-nH" "^English" ,hello-file)))
+                     (progn
+                       (goto-char (point-min))
+                       (looking-at
+                        (concat (regexp-quote hello-file)
+                                ":[0-9]+:English")))))))))
+    (unless (and grep-command grep-find-command
+                grep-template grep-find-template)
+      (let ((grep-options
+            (concat (if grep-use-null-device "-n" "-nH")
+                    (if (grep-probe grep-program
+                                    `(nil nil nil "-e" "foo" ,null-device)
+                                    nil 1)
+                        " -e"))))
+       (unless grep-command
+         (setq grep-command
+               (format "%s %s " grep-program grep-options)))
+       (unless grep-template
+         (setq grep-template
+               (format "%s <C> %s <R> <F>" grep-program grep-options)))
+       (unless grep-find-use-xargs
+         (setq grep-find-use-xargs
+               (cond
+                ((and
+                  (grep-probe find-program `(nil nil nil ,null-device "-print0"))
+                  (grep-probe "xargs" `(nil nil nil "-0" "-e" "echo")))
+                 'gnu)
+                (t
+                 'exec))))
+       (unless grep-find-command
+         (setq grep-find-command
                (cond ((eq grep-find-use-xargs 'gnu)
-                      (format "%s . <X> -type f <F> -print0 | xargs -0 -e %s"
-                              find-program gcmd))
+                      (format "%s . -type f -print0 | xargs -0 -e %s"
+                              find-program grep-command))
                      ((eq grep-find-use-xargs 'exec)
-                      (format "%s . <X> -type f <F> -exec %s {} %s %s"
-                              find-program gcmd null-device
-                              (shell-quote-argument ";")))
+                      (let ((cmd0 (format "%s . -type f -exec %s"
+                                          find-program grep-command)))
+                        (cons
+                         (format "%s {} %s %s"
+                                 cmd0 null-device
+                                 (shell-quote-argument ";"))
+                         (1+ (length cmd0)))))
                      (t
-                      (format "%s . <X> -type f <F> -print | xargs %s"
-                              find-program gcmd))))))))
-  (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t))
-    (setq grep-highlight-matches
-         (with-temp-buffer
-           (and (grep-probe grep-program '(nil t nil "--help"))
-                (progn
-                  (goto-char (point-min))
-                  (search-forward "--color" nil t))
-                t)))))
+                      (format "%s . -type f -print | xargs %s"
+                              find-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 | xargs -0 -e %s"
+                                find-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 | xargs %s"
+                                find-program gcmd))))))))
+    (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t))
+      (setq grep-highlight-matches
+           (with-temp-buffer
+             (and (grep-probe grep-program '(nil t nil "--help"))
+                  (progn
+                    (goto-char (point-min))
+                    (search-forward "--color" nil t))
+                  t))))
+
+    ;; Save defaults for this host.
+    (setq grep-host-defaults-alist
+         (delete (assq host-id grep-host-defaults-alist)
+                 grep-host-defaults-alist))
+    (add-to-list
+     'grep-host-defaults-alist
+     (cons host-id
+          `((grep-command ,grep-command)
+            (grep-template ,grep-template)
+            (grep-use-null-device ,grep-use-null-device)
+            (grep-find-command ,grep-find-command)
+            (grep-find-template ,grep-find-template)
+            (grep-find-use-xargs ,grep-find-use-xargs)
+            (grep-highlight-matches ,grep-highlight-matches))))))
 
 (defun grep-tag-default ()
   (or (and transient-mark-mode mark-active
@@ -703,7 +778,8 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
          ;; even when async processes aren't supported.
          (compilation-start (if (and grep-use-null-device null-device)
                                 (concat command " " null-device)
-                              command) 'grep-mode))
+                              command)
+                            'grep-mode))
        (if (eq next-error-last-buffer (current-buffer))
            (setq default-directory dir))))))
 
index e5217b7162a06b785696b284ff87547b5e3cb9ba..d2384232686e7e86c83d2ddcffc20aefa06b8db9 100644 (file)
@@ -59,7 +59,7 @@
 (defgroup gud nil
   "Grand Unified Debugger mode for gdb and other debuggers under Emacs.
 Supported debuggers include gdb, sdb, dbx, xdb, perldb, pdb (Python), jdb."
-  :group 'unix
+  :group 'processes
   :group 'tools)
 
 
@@ -294,6 +294,11 @@ Used to grey out relevant toolbar icons.")
 (defun gud-file-name (f)
   "Transform a relative file name to an absolute file name.
 Uses `gud-<MINOR-MODE>-directories' to find the source files."
+  ;; When `default-directory' is a remote file name, prepend its
+  ;; remote part to f, which is the local file name.  Fortunately,
+  ;; `file-remote-p' returns exactly this remote file name part (or
+  ;; nil otherwise).
+  (setq f (concat (or (file-remote-p default-directory) "") f))
   (if (file-exists-p f) (expand-file-name f)
     (let ((directories (gud-val 'directories))
          (result nil))
@@ -2504,7 +2509,10 @@ comint mode, which see."
       (while (and w (not (eq (car w) t)))
        (setq w (cdr w)))
       (if w
-         (setcar w file)))
+         (setcar w
+                 (if (file-remote-p default-directory)
+                     (setq file (file-name-nondirectory file))
+                   file))))
     (apply 'make-comint (concat "gud" filepart) program nil
           (if massage-args (funcall massage-args file args) args))
     ;; Since comint clobbered the mode, we don't set it until now.
index fb990d6bf3aa4a96ccc4035653683b80526e1765..85d26427a3f455d8c4537a037e766567b76f5ebe 100644 (file)
@@ -406,11 +406,6 @@ to the variable `mode-line-format'.  For example,
 
 Note that `mode-line-format' is buffer-local.")
 
-;;---------------------------------------------------------------------------
-;; system dependency
-
-(defalias 'hs-match-data 'match-data)
-
 ;;---------------------------------------------------------------------------
 ;; support functions
 
@@ -508,8 +503,8 @@ Original match data is restored upon return."
 (defun hs-hide-comment-region (beg end &optional repos-end)
   "Hide a region from BEG to END, marking it as a comment.
 Optional arg REPOS-END means reposition at end."
-  (let ((beg-eol (progn (goto-char beg) (end-of-line) (point)))
-        (end-eol (progn (goto-char end) (end-of-line) (point))))
+  (let ((beg-eol (progn (goto-char beg) (line-end-position)))
+        (end-eol (progn (goto-char end) (line-end-position))))
     (hs-discard-overlays beg-eol end-eol)
     (hs-make-overlay beg-eol end-eol 'comment beg end))
   (goto-char (if repos-end end beg)))
@@ -526,7 +521,7 @@ and then further adjusted to be at the end of the line."
   (if comment-reg
       (hs-hide-comment-region (car comment-reg) (cadr comment-reg) end)
     (when (looking-at hs-block-start-regexp)
-      (let* ((mdata (hs-match-data t))
+      (let* ((mdata (match-data t))
              (pure-p (match-end 0))
              (p
               ;; `p' is the point at the end of the block beginning,
@@ -536,8 +531,7 @@ and then further adjusted to be at the end of the line."
                                         'identity)
                                     pure-p))
                 ;; whatever the adjustment, we move to eol
-                (end-of-line)
-                (point)))
+                (line-end-position)))
              (q
               ;; `q' is the point at the end of the block
               (progn (hs-forward-sexp mdata 1)
@@ -652,7 +646,7 @@ Return point, or nil if original point was not in a block."
       (while (and (re-search-backward hs-block-start-regexp nil t)
                   (not (setq done
                              (< here (save-excursion
-                                       (hs-forward-sexp (hs-match-data t) 1)
+                                       (hs-forward-sexp (match-data t) 1)
                                        (point)))))))
       (if done
           (point)
@@ -705,7 +699,7 @@ and `case-fold-search' are both t."
       (if (and c-reg (nth 0 c-reg))
           ;; point is inside a comment, and that comment is hidable
           (goto-char (nth 0 c-reg))
-       (end-of-line)
+        (end-of-line)
         (when (and (not c-reg)
                    (hs-find-block-beginning)
                    (looking-at hs-block-start-regexp))
@@ -734,12 +728,12 @@ Move point to the beginning of the line, and run the normal hook
 If `hs-hide-comments-when-hiding-all' is non-nil, also hide the comments."
   (interactive)
   (hs-life-goes-on
-   (message "Hiding all blocks ...")
    (save-excursion
      (unless hs-allow-nesting
        (hs-discard-overlays (point-min) (point-max)))
      (goto-char (point-min))
-     (let ((count 0)
+     (let ((spew (make-progress-reporter "Hiding all blocks..."
+                                         (point-min) (point-max)))
            (re (concat "\\("
                        hs-block-start-regexp
                        "\\)"
@@ -765,9 +759,9 @@ If `hs-hide-comments-when-hiding-all' is non-nil, also hide the comments."
                (if (> (count-lines (car c-reg) (nth 1 c-reg)) 1)
                    (hs-hide-block-at-point t c-reg)
                  (goto-char (nth 1 c-reg))))))
-         (message "Hiding ... %d" (setq count (1+ count))))))
+         (progress-reporter-update spew (point)))
+       (progress-reporter-done spew)))
    (beginning-of-line)
-   (message "Hiding all blocks ... done")
    (run-hooks 'hs-hide-hook)))
 
 (defun hs-show-all ()
@@ -806,7 +800,7 @@ See documentation for functions `hs-hide-block' and `run-hooks'."
   (hs-life-goes-on
    (or
     ;; first see if we have something at the end of the line
-    (let ((ov (hs-overlay-at (save-excursion (end-of-line) (point))))
+    (let ((ov (hs-overlay-at (line-end-position)))
           (here (point)))
       (when ov
         (goto-char
@@ -826,7 +820,7 @@ See documentation for functions `hs-hide-block' and `run-hooks'."
                   ;; ugh, fresh match-data
                   (looking-at hs-block-start-regexp))
              (setq p (point)
-                   q (progn (hs-forward-sexp (hs-match-data t) 1) (point)))))
+                   q (progn (hs-forward-sexp (match-data t) 1) (point)))))
       (when (and p q)
         (hs-discard-overlays p q)
         (goto-char (if end q (1+ p)))))
@@ -906,9 +900,9 @@ Key bindings:
       (progn
         (hs-grok-mode-type)
         ;; Turn off this mode if we change major modes.
-       (add-hook 'change-major-mode-hook
-                 'turn-off-hideshow
-                 nil t)
+        (add-hook 'change-major-mode-hook
+                  'turn-off-hideshow
+                  nil t)
         (easy-menu-add hs-minor-mode-menu)
         (set (make-local-variable 'line-move-ignore-invisible) t)
         (add-to-invisibility-spec '(hs . t)))
index f903d490565df844d681aba55ce4232b84a6b349..4d2dd7f315e5d70948bac4c96db92626b5f61eb7 100644 (file)
@@ -3461,12 +3461,12 @@ breakpoint overlays."
                line (string-to-number (match-string (nth 2 indmap)))
                file (idlwave-shell-file-name (match-string (nth 3 indmap))))
          (if (eq bp-re bp-re55)
-             (setq count (if (match-string 10) 1 
+             (setq count (if (match-string 10) 1
                            (if (match-string 8)
                                (string-to-number (match-string 8))))
                    condition (match-string 13)
                    disabled (not (null (match-string 15)))))
-                   
+
          ;; Add the breakpoint info to the list
          (nconc idlwave-shell-bp-alist
                 (list (cons (list file line)
@@ -3476,9 +3476,9 @@ breakpoint overlays."
                              count nil condition disabled))))))
       (setq idlwave-shell-bp-alist (cdr idlwave-shell-bp-alist))
       ;; Update breakpoint data
-      (if (eq bp-re bp-re54) 
-         (mapcar 'idlwave-shell-update-bp old-bp-alist)
-       (mapcar 'idlwave-shell-update-bp-command-only old-bp-alist))))
+      (if (eq bp-re bp-re54)
+         (mapc 'idlwave-shell-update-bp old-bp-alist)
+       (mapc 'idlwave-shell-update-bp-command-only old-bp-alist))))
   ;; Update the breakpoint overlays
   (unless no-show (idlwave-shell-update-bp-overlays))
   ;; Return the new list
@@ -4530,27 +4530,27 @@ idlwave-shell-electric-debug-mode-map)
 
 (if (or (featurep 'easymenu) (load "easymenu" t))
     (progn
-      (easy-menu-define 
+      (easy-menu-define
        idlwave-mode-debug-menu idlwave-mode-map "IDL debugging menus"
        idlwave-shell-menu-def)
       (easy-menu-define
        idlwave-shell-mode-menu idlwave-shell-mode-map "IDL shell menus"
        idlwave-shell-menu-def)
       (save-excursion
-       (mapcar (lambda (buf)
-                 (set-buffer buf)
-                 (if (eq major-mode 'idlwave-mode)
-                     (progn
-                       (easy-menu-remove idlwave-mode-debug-menu)
-                       (easy-menu-add idlwave-mode-debug-menu))))
-               (buffer-list)))))
+       (mapc (lambda (buf)
+               (set-buffer buf)
+               (if (eq major-mode 'idlwave-mode)
+                   (progn
+                     (easy-menu-remove idlwave-mode-debug-menu)
+                     (easy-menu-add idlwave-mode-debug-menu))))
+             (buffer-list)))))
 
 ;; The Breakpoint Glyph -------------------------------------------------------
 
 (defvar idlwave-shell-bp-glyph nil
   "The glyphs to mark breakpoint lines in the source code.")
 
-(let ((image-alist 
+(let ((image-alist
        '((bp . "/* XPM */
 static char * file[] = {
 \"14 12 3 1\",
index 2d143a3ddaafd578ea9b241693f0753c36064648..4400c30b09dd8a269d2e05f42eec19f16ec19f19 100644 (file)
@@ -916,21 +916,21 @@ static char * file[] = {
                    (idlwave-toolbar-add))
                  (buffer-list)))
       ;; For Emacs, add the key definitions to the mode maps
-      (mapcar (lambda (x)
-               (let* ((icon (aref x 0))
-                      (func (aref x 1))
-                      (show (aref x 2))
-                      (help (aref x 3))
-                      (key (vector 'tool-bar func))
-                      (def (list 'menu-item
-                                 "a"
-                                 func
-                                 :image (symbol-value icon)
-                                 :visible show
-                                 :help help)))
-                 (define-key idlwave-mode-map key def)
-                 (define-key idlwave-shell-mode-map key def)))
-             (reverse idlwave-toolbar)))
+      (mapc (lambda (x)
+             (let* ((icon (aref x 0))
+                    (func (aref x 1))
+                    (show (aref x 2))
+                    (help (aref x 3))
+                    (key (vector 'tool-bar func))
+                    (def (list 'menu-item
+                               "a"
+                               func
+                               :image (symbol-value icon)
+                               :visible show
+                               :help help)))
+               (define-key idlwave-mode-map key def)
+               (define-key idlwave-shell-mode-map key def)))
+           (reverse idlwave-toolbar)))
     (setq idlwave-toolbar-visible t)))
 
 (defun idlwave-toolbar-remove-everywhere ()
@@ -947,15 +947,15 @@ static char * file[] = {
                    (idlwave-toolbar-remove))
                  (buffer-list)))
       ;; For Emacs, remove the key definitions from the mode maps
-      (mapcar (lambda (x)
-               (let* (;;(icon (aref x 0))
-                      (func (aref x 1))
-                      ;;(show (aref x 2))
-                      ;;(help (aref x 3))
-                      (key (vector 'tool-bar func)))
-                 (define-key idlwave-mode-map key nil)
-                 (define-key idlwave-shell-mode-map key nil)))
-             idlwave-toolbar))
+      (mapc (lambda (x)
+             (let* (;;(icon (aref x 0))
+                    (func (aref x 1))
+                    ;;(show (aref x 2))
+                    ;;(help (aref x 3))
+                    (key (vector 'tool-bar func)))
+               (define-key idlwave-mode-map key nil)
+               (define-key idlwave-shell-mode-map key nil)))
+           idlwave-toolbar))
     (setq idlwave-toolbar-visible nil)))
 
 (defun idlwave-toolbar-toggle (&optional force-on)
index 1e600d6c4562419165802cf3870e4128afc647a3..abe5cfe648912bee4545a7dea0ba9bc09be2bd80 100644 (file)
@@ -2827,10 +2827,10 @@ If the optional argument EXPAND is non-nil then the actions in
         ;; Before indenting, run action routines.
         ;;
         (if (and expand idlwave-do-actions)
-            (mapcar 'idlwave-do-action idlwave-indent-expand-table))
+            (mapc 'idlwave-do-action idlwave-indent-expand-table))
         ;;
         (if idlwave-do-actions
-            (mapcar 'idlwave-do-action idlwave-indent-action-table))
+            (mapc 'idlwave-do-action idlwave-indent-action-table))
         ;;
         ;; No longer expand abbrevs on the line.  The user can do this
         ;; manually using expand-region-abbrevs.
@@ -4242,9 +4242,9 @@ blank lines."
 
 (defun idlwave-sintern-keyword-list (kwd-list &optional set)
   "Sintern a set of keywords (file (key . link) (key2 . link2) ...)"
-  (mapcar (lambda(x)
-           (setcar x (idlwave-sintern-keyword (car x) set)))
-         (cdr kwd-list))
+  (mapc (lambda(x)
+         (setcar x (idlwave-sintern-keyword (car x) set)))
+       (cdr kwd-list))
   kwd-list)
 
 (defun idlwave-sintern-rinfo-list (list &optional set default-dir)
@@ -5560,11 +5560,11 @@ directories and save the routine info.
     ;; Define the routine info list
     (insert "\n(setq idlwave-user-catalog-routines\n    '(")
     (let ((standard-output (current-buffer)))
-      (mapcar (lambda (x)
-               (insert "\n    ")
-               (prin1 x)
-               (goto-char (point-max)))
-             idlwave-user-catalog-routines))
+      (mapc (lambda (x)
+             (insert "\n    ")
+             (prin1 x)
+             (goto-char (point-max)))
+           idlwave-user-catalog-routines))
     (insert (format "))\n\n;;; %s ends here\n"
                    (file-name-nondirectory idlwave-user-catalog-file)))
     (goto-char (point-min))
@@ -5604,11 +5604,11 @@ directories and save the routine info.
     ;; Define the variable which contains a list of all scanned directories
     (insert "\n(setq idlwave-path-alist\n    '(")
     (let ((standard-output (current-buffer)))
-      (mapcar (lambda (x)
-               (insert "\n      ")
-               (prin1 x)
-               (goto-char (point-max)))
-             idlwave-path-alist))
+      (mapc (lambda (x)
+             (insert "\n      ")
+             (prin1 x)
+             (goto-char (point-max)))
+           idlwave-path-alist))
     (insert "))\n")
     (save-buffer 0)
     (kill-buffer (current-buffer))))
@@ -6319,12 +6319,12 @@ When TYPE is not specified, both procedures and functions will be considered."
   (if (null method)
       (mapcar 'car (idlwave-class-alist))
     (let (rtn)
-      (mapcar (lambda (x)
-               (and (nth 2 x)
-                    (or (not type)
-                        (eq type (nth 1 x)))
-                    (push (nth 2 x) rtn)))
-             (idlwave-all-assq method (idlwave-routines)))
+      (mapc (lambda (x)
+             (and (nth 2 x)
+                  (or (not type)
+                      (eq type (nth 1 x)))
+                  (push (nth 2 x) rtn)))
+           (idlwave-all-assq method (idlwave-routines)))
       (idlwave-uniquify rtn))))
 
 (defun idlwave-all-method-keyword-classes (method keyword &optional type)
@@ -6335,13 +6335,13 @@ When TYPE is not specified, both procedures and functions will be considered."
          (null keyword))
       nil
     (let (rtn)
-      (mapcar (lambda (x)
-               (and (nth 2 x)           ; non-nil class
-                    (or (not type)      ; correct or unspecified type
-                        (eq type (nth 1 x)))
-                    (assoc keyword (idlwave-entry-keywords x))
-                    (push (nth 2 x) rtn)))
-             (idlwave-all-assq method (idlwave-routines)))
+      (mapc (lambda (x)
+             (and (nth 2 x)            ; non-nil class
+                  (or (not type)       ; correct or unspecified type
+                      (eq type (nth 1 x)))
+                  (assoc keyword (idlwave-entry-keywords x))
+                  (push (nth 2 x) rtn)))
+           (idlwave-all-assq method (idlwave-routines)))
       (idlwave-uniquify rtn))))
 
 (defun idlwave-members-only (list club)
@@ -6785,12 +6785,12 @@ accumulate information on matching completions."
       (message "Making completion list...")
 
       (unless idlwave-completion-help-links ; already set somewhere?
-       (mapcar (lambda (x)  ; Pass link prop through to highlight-linked
-                 (let ((link (get-text-property 0 'link (car x))))
-                   (if link
-                       (push (cons (car x) link)
-                             idlwave-completion-help-links))))
-               list))
+       (mapc (lambda (x)  ; Pass link prop through to highlight-linked
+               (let ((link (get-text-property 0 'link (car x))))
+                 (if link
+                     (push (cons (car x) link)
+                           idlwave-completion-help-links))))
+             list))
       (let* ((list all-completions)
             ;; "complete" means, this is already a valid completion
             (complete (memq spart all-completions))
@@ -7551,7 +7551,7 @@ The list is cached in `idlwave-class-info' for faster access."
 If RECORD-LINK is non-nil, the keyword text is copied and a text
 property indicating the link is added."
   (let (kwds)
-    (mapcar
+    (mapc
      (lambda (key-list)
        (let ((file (car key-list)))
         (mapcar (lambda (key-cons)
@@ -8277,8 +8277,8 @@ demand _EXTRA in the keyword list."
                 (memq (nth 2 entry) super-classes)      ; an inherited class
                 (eq (nth 1 entry) type)                 ; correct type
                 (eq (car entry) name)                   ; correct name
-                (mapcar (lambda (k) (add-to-list 'keywords k))
-                        (idlwave-entry-keywords entry 'do-link))))
+                (mapc (lambda (k) (add-to-list 'keywords k))
+                      (idlwave-entry-keywords entry 'do-link))))
       (setq keywords (idlwave-uniquify keywords)))
 
     ;; Return the final list
@@ -8437,7 +8437,7 @@ If we do not know about MODULE, just return KEYWORD literally."
        (if (null keywords)
            (insert " No keywords accepted.")
          (setq col 9)
-         (mapcar
+         (mapc
           (lambda (x)
             (if (>= (+ col 1 (length (car x)))
                     (window-width))
index a2fd9cdab044e17d08a5df8871926fa9f57f7dab..c70f5cdb6a1abe163922eb669b4cbfcd0945d4f7 100644 (file)
@@ -51,7 +51,7 @@
 ;; these lines to your startup file:
 ;;
 ;;  (add-hook 'meta-mode-load-hook
-;;            '(lambda () (require 'meta-buf)))
+;;            (lambda () (require 'meta-buf)))
 ;;
 ;; The add-on package loaded this way may in turn make use of the
 ;; mode-hooks provided in this package to activate additional features
 ;;
 ;; This package was begun on February 1, 1997, exactly 20 years after
 ;; the genesis of TeX took place according to Don Knuth's own account
-;; (cf. ``The Errors of TeX'', reprinted in ``Literate Programming'',
+;; (cf.  ``The Errors of TeX'', reprinted in ``Literate Programming'',
 ;; Chapter 10, p. 249).  What better date could there be to choose?
 ;;
 
         (list
          ;; embedded TeX code in btex ... etex
          (cons (concat "\\(btex\\|verbatimtex\\)"
-                       "[ \t]+\\(.*\\)[ \t]+"
+                       "[ \t\f]+\\(.*\\)[ \t\f]+"
                        "\\(etex\\)")
                '((1 font-lock-keyword-face)
                  (2 font-lock-string-face)
                  (3 font-lock-keyword-face)))
          ;; unary macro definitions: def, vardef, let
          (cons (concat "\\<" macro-keywords-1 "\\>"
-                       "[ \t]+\\(\\sw+\\|\\s_+\\|\\s.+\\)")
+                       "[ \t\f]+\\(\\sw+\\|\\s_+\\|\\s.+\\)")
                '((1 font-lock-keyword-face)
                  (2 font-lock-function-name-face)))
          ;; binary macro defintions: <leveldef> x operator y
          (cons (concat "\\<" macro-keywords-2 "\\>"
-                       "[ \t]+\\(\\sw+\\)"
-                       "[ \t]*\\(\\sw+\\|\\s.+\\)"
-                       "[ \t]*\\(\\sw+\\)")
+                       "[ \t\f]+\\(\\sw+\\)"
+                       "[ \t\f]*\\(\\sw+\\|\\s.+\\)"
+                       "[ \t\f]*\\(\\sw+\\)")
                '((1 font-lock-keyword-face)
                  (2 font-lock-variable-name-face nil t)
                  (3 font-lock-function-name-face nil t)
                  (4 font-lock-variable-name-face nil t)))
          ;; variable declarations: numeric, pair, color, ...
          (cons (concat "\\<" type-keywords "\\>"
-                       "\\([ \t]+\\(\\sw+\\)\\)*")
+                       "\\([ \t\f]+\\(\\sw+\\)\\)*")
                '((1 font-lock-type-face)
                  (font-lock-match-meta-declaration-item-and-skip-to-next
                   (goto-char (match-end 1)) nil
                   (1 font-lock-variable-name-face nil t))))
          ;; argument declarations: expr, suffix, text, ...
          (cons (concat "\\<" args-keywords "\\>"
-                       "\\([ \t]+\\(\\sw+\\|\\s_+\\)\\)*")
+                       "\\([ \t\f]+\\(\\sw+\\|\\s_+\\)\\)*")
                '((1 font-lock-type-face)
                  (font-lock-match-meta-declaration-item-and-skip-to-next
                   (goto-char (match-end 1)) nil
                   (1 font-lock-variable-name-face nil t))))
          ;; special case of arguments: expr x of y
-         (cons (concat "\\(expr\\)[ \t]+\\(\\sw+\\)"
-                       "[ \t]+\\(of\\)[ \t]+\\(\\sw+\\)")
+         (cons (concat "\\(expr\\)[ \t\f]+\\(\\sw+\\)"
+                       "[ \t\f]+\\(of\\)[ \t\f]+\\(\\sw+\\)")
                '((1 font-lock-type-face)
                  (2 font-lock-variable-name-face)
                  (3 font-lock-keyword-face nil t)
                'font-lock-keyword-face)
          ;; input, generate
          (cons (concat "\\<" input-keywords "\\>"
-                       "[ \t]+\\(\\sw+\\)")
+                       "[ \t\f]+\\(\\sw+\\)")
                '((1 font-lock-keyword-face)
                  (2 font-lock-constant-face)))
          ;; embedded Metafont/MetaPost code in comments
   ;; `forward-sexp'.  The list of items is expected to be separated
   ;; by commas and terminated by semicolons or equals signs.
   ;;
-  (if (looking-at "[ \t]*\\(\\sw+\\|\\s_+\\)")
+  (if (looking-at "[ \t\f]*\\(\\sw+\\|\\s_+\\)")
       (save-match-data
         (condition-case nil
             (save-restriction
               (narrow-to-region (point-min) limit)
               (goto-char (match-end 1))
               ;; Move over any item value, etc., to the next item.
-              (while (not (looking-at "[ \t]*\\(\\(,\\)\\|;\\|=\\|$\\)"))
+              (while (not (looking-at "[ \t\f]*\\(\\(,\\)\\|;\\|=\\|$\\)"))
                 (goto-char (or (scan-sexps (point) 1) (point-max))))
               (goto-char (match-end 2)))
           (error t)))))
@@ -586,7 +586,7 @@ If the list was changed, sort the list and remove duplicates first."
   (if (and meta-left-comment-regexp
            (looking-at meta-left-comment-regexp))
       (current-column)
-    (skip-chars-backward "\t ")
+    (skip-chars-backward "\t\f ")
     (max (if (bolp) 0 (1+ (current-column)))
          comment-column)))
 
@@ -605,14 +605,16 @@ If the list was changed, sort the list and remove duplicates first."
 
 (defun meta-indent-calculate ()
   "Return the indentation of current line of Metafont or MetaPost source."
+  ;; Indentation within strings is not considered as Meta* don't allow multi
+  ;; line strings.
   (save-excursion
     (back-to-indentation)
     (cond
-      ;; Comments to the left margin.
+     ;; Comments to the left margin.
      ((and meta-left-comment-regexp
            (looking-at meta-left-comment-regexp))
       0)
-      ;; Comments to the right margin.
+     ;; Comments to the right margin.
      ((and meta-right-comment-regexp
            (looking-at meta-right-comment-regexp))
       comment-column)
@@ -620,42 +622,117 @@ If the list was changed, sort the list and remove duplicates first."
      ((and meta-ignore-comment-regexp
            (looking-at meta-ignore-comment-regexp))
       (current-indentation))
+     ;; Beginning of buffer.
+     ((eq (point-at-bol) (point-min))
+      0)
      ;; Backindent at end of environments.
-     ((looking-at
+     ((meta-indent-looking-at-code
        (concat "\\<" meta-end-environment-regexp "\\>"))
-      (- (meta-indent-calculate-last) meta-indent-level))
+      (- (meta-indent-current-indentation) meta-indent-level))
      ;; Backindent at keywords within environments.
-     ((looking-at
+     ((meta-indent-looking-at-code
        (concat "\\<" meta-within-environment-regexp "\\>"))
-      (- (meta-indent-calculate-last) meta-indent-level))
-     (t (meta-indent-calculate-last)))))
-
-(defun meta-indent-calculate-last ()
-  "Return the indentation of previous line of Metafont or MetaPost source."
-  (save-restriction
-    (widen)
-    (skip-chars-backward "\n\t ")
-    (move-to-column (current-indentation))
-    ;; Ignore comments.
-    (while (and (looking-at comment-start) (not (bobp)))
-      (skip-chars-backward "\n\t ")
-      (if (not (bobp))
-          (move-to-column (current-indentation))))
-    (cond
-     ((bobp) 0)
-     (t (+ (current-indentation)
-           (meta-indent-level-count)
-           (cond
-            ;; Compensate for backindent at end of environments.
-            ((looking-at
-              (concat "\\<"meta-end-environment-regexp "\\>"))
-             meta-indent-level)
-            ;; Compensate for backindent within environments.
-            ((looking-at
-              (concat "\\<" meta-within-environment-regexp "\\>"))
-             meta-indent-level)
-            (t 0)))))
-    ))
+      (- (meta-indent-current-indentation) meta-indent-level))
+     (t (meta-indent-current-indentation)))))
+
+(defun meta-indent-in-string-p ()
+  "Tell if the point is in a string."
+  (or (nth 3 (syntax-ppss))
+      (eq (get-text-property (point) 'face) font-lock-string-face)))
+
+(defun meta-indent-looking-at-code (regexp)
+  "Same as `looking-at' but checks that the point is not in a string."
+  (unless (meta-indent-in-string-p)
+    (looking-at regexp)))
+
+(defun meta-indent-previous-line ()
+  "Go to the previous line of code, skipping comments."
+  (skip-chars-backward "\n\t\f ")
+  (move-to-column (current-indentation))
+  ;; Ignore comments.
+  (while (and (looking-at comment-start) (not (bobp)))
+    (skip-chars-backward "\n\t\f ")
+    (when (not (bobp))
+      (move-to-column (current-indentation)))))
+
+(defun meta-indent-unfinished-line ()
+  "Tell if the current line of code ends with an unfinished expression."
+  (save-excursion
+    (end-of-line)
+    ;; Skip backward the comments.
+    (let ((point-not-in-string (point)))
+      (while (search-backward comment-start (point-at-bol) t)
+       (unless (meta-indent-in-string-p)
+         (setq point-not-in-string (point))))
+      (goto-char point-not-in-string))
+    ;; Search for the end of the previous expression.
+    (if (search-backward ";" (point-at-bol) t)
+       (progn (while (and (meta-indent-in-string-p)
+                          (search-backward ";" (point-at-bol) t)))
+              (if (= (char-after) ?\;)
+                  (forward-char)
+                (beginning-of-line)))
+      (beginning-of-line))
+    ;; See if the last statement of the line is environment-related,
+    ;; or exists at all.
+    (if (meta-indent-looking-at-code
+        (concat "[ \t\f]*\\($\\|" (regexp-quote comment-start)
+                "\\|\\<" meta-end-environment-regexp "\\>"
+                "\\|\\<" meta-begin-environment-regexp "\\>"
+                "\\|\\<" meta-within-environment-regexp "\\>\\)"))
+       nil
+      t)))
+
+(defun meta-indent-current-indentation ()
+  "Return the indentation wanted for the current line of code."
+  (+ (meta-indent-current-nesting)
+     (if (save-excursion
+          (back-to-indentation)
+          (and (not (looking-at (concat "\\<" meta-end-environment-regexp "\\>"
+                                        "\\|\\<" meta-within-environment-regexp "\\>")))
+               (progn (meta-indent-previous-line)
+                      (meta-indent-unfinished-line))))
+        meta-indent-level
+       0)))
+
+(defun meta-indent-current-nesting ()
+  "Return the indentation according to the nearest environment keyword."
+  (save-excursion
+    (save-restriction
+      (widen)
+      (back-to-indentation)
+      (let ((to-add 0))
+       ;; If we found some environment marker backward...
+       (if (catch 'found
+             (while (re-search-backward
+                     (concat "(\\|)\\|\\<" meta-end-environment-regexp "\\>"
+                             "\\|\\<" meta-begin-environment-regexp "\\>"
+                             "\\|\\<" meta-within-environment-regexp "\\>")
+                     nil t)
+               ;; If we aren't in a string or in a comment, we've found something.
+               (unless (or (meta-indent-in-string-p)
+                           (nth 4 (syntax-ppss)))
+                 (cond ((= (char-after) ?\()
+                        (setq to-add (+ to-add meta-indent-level)))
+                       ((= (char-after) ?\))
+                        (setq to-add (- to-add meta-indent-level)))
+                       (t (throw 'found t))))))
+           (progn
+             ;; ... then use it to compute the current indentation.
+             (back-to-indentation)
+             (+ to-add (current-indentation) (meta-indent-level-count)
+                ;; Compensate for backindent of end and within keywords.
+                (if (meta-indent-looking-at-code
+                     (concat "\\<" meta-end-environment-regexp "\\>\\|"
+                             "\\<" meta-within-environment-regexp "\\>"))
+                    meta-indent-level
+                  ;; Compensate for unfinished line.
+                  (if (save-excursion
+                        (meta-indent-previous-line)
+                        (meta-indent-unfinished-line))
+                      (- meta-indent-level)
+                    0))))
+         0)))))
 
 (defun meta-indent-level-count ()
   "Count indentation change for begin-end commands in the current line."
@@ -671,18 +748,12 @@ If the list was changed, sort the list and remove duplicates first."
             (goto-char (match-beginning 0))
             (cond
              ;; Count number of begin-end keywords within line.
-             ((looking-at
+             ((meta-indent-looking-at-code
                (concat "\\<" meta-begin-environment-regexp "\\>"))
               (setq count (+ count meta-indent-level)))
-             ((looking-at
+             ((meta-indent-looking-at-code
                (concat "\\<" meta-end-environment-regexp "\\>"))
-              (setq count (- count meta-indent-level)))
-             ;; Count number of open-close parentheses within line.
-             ((looking-at "(")
-              (setq count (+ count meta-indent-level)))
-             ((looking-at ")")
-              (setq count (- count meta-indent-level)))
-             )))
+              (setq count (- count meta-indent-level))))))
         count))))
 
 
@@ -715,7 +786,7 @@ Returns t unless search stops due to beginning or end of buffer."
         (concat "\\<" meta-begin-defun-regexp "\\>") nil t arg)
        (progn (goto-char (match-beginning 0))
               (skip-chars-backward "%")
-              (skip-chars-backward " \t") t)))
+              (skip-chars-backward " \t\f") t)))
 
 (defun meta-end-of-defun (&optional arg)
   "Move forward to end of a defun in Metafont or MetaPost code.
@@ -729,7 +800,7 @@ Returns t unless search stops due to beginning or end of buffer."
         (concat "\\<" meta-end-defun-regexp "\\>") nil t arg)
        (progn (goto-char (match-end 0))
               (skip-chars-forward ";")
-              (skip-chars-forward " \t")
+              (skip-chars-forward " \t\f")
               (if (looking-at "\n") (forward-line 1)) t)))
 
 
@@ -797,78 +868,74 @@ The environment marked is the one that contains point or follows point."
   "Abbrev table used in Metafont or MetaPost mode.")
 (define-abbrev-table 'meta-mode-abbrev-table ())
 
-(defvar meta-mode-syntax-table nil
+(defvar meta-mode-syntax-table
+  (let ((st (make-syntax-table)))
+    ;; underscores are word constituents
+    (modify-syntax-entry ?_  "w"  st)
+    ;; miscellaneous non-word symbols
+    (modify-syntax-entry ?#  "_"  st)
+    (modify-syntax-entry ?@  "_"  st)
+    (modify-syntax-entry ?$  "_"  st)
+    (modify-syntax-entry ??  "_"  st)
+    (modify-syntax-entry ?!  "_"  st)
+    ;; binary operators
+    (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)
+    (modify-syntax-entry ?<  "."  st)
+    (modify-syntax-entry ?>  "."  st)
+    (modify-syntax-entry ?|  "."  st)
+    ;; opening and closing delimiters
+    (modify-syntax-entry ?\( "()" st)
+    (modify-syntax-entry ?\) ")(" st)
+    (modify-syntax-entry ?\[ "(]" st)
+    (modify-syntax-entry ?\] ")[" st)
+    (modify-syntax-entry ?\{ "(}" st)
+    (modify-syntax-entry ?\} "){" st)
+    ;; comment character
+    (modify-syntax-entry ?%  "<"  st)
+    (modify-syntax-entry ?\n ">"  st)
+    ;; escape character, needed for embedded TeX code
+    (modify-syntax-entry ?\\ "\\" st)
+    st)
   "Syntax table used in Metafont or MetaPost mode.")
-(if meta-mode-syntax-table
-    ()
-  (setq meta-mode-syntax-table (make-syntax-table))
-  ;; underscores are word constituents
-  (modify-syntax-entry ?_  "w"  meta-mode-syntax-table)
-  ;; miscellaneous non-word symbols
-  (modify-syntax-entry ?#  "_"  meta-mode-syntax-table)
-  (modify-syntax-entry ?@  "_"  meta-mode-syntax-table)
-  (modify-syntax-entry ?$  "_"  meta-mode-syntax-table)
-  (modify-syntax-entry ??  "_"  meta-mode-syntax-table)
-  (modify-syntax-entry ?!  "_"  meta-mode-syntax-table)
-  ;; binary operators
-  (modify-syntax-entry ?&  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?+  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?-  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?/  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?*  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?.  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?:  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?=  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?<  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?>  "."  meta-mode-syntax-table)
-  (modify-syntax-entry ?|  "."  meta-mode-syntax-table)
-  ;; opening and closing delimiters
-  (modify-syntax-entry ?\( "()" meta-mode-syntax-table)
-  (modify-syntax-entry ?\) ")(" meta-mode-syntax-table)
-  (modify-syntax-entry ?\[ "(]" meta-mode-syntax-table)
-  (modify-syntax-entry ?\] ")[" meta-mode-syntax-table)
-  (modify-syntax-entry ?\{ "(}" meta-mode-syntax-table)
-  (modify-syntax-entry ?\} "){" meta-mode-syntax-table)
-  ;; comment character
-  (modify-syntax-entry ?%  "<"  meta-mode-syntax-table)
-  (modify-syntax-entry ?\n ">"  meta-mode-syntax-table)
-  ;; escape character, needed for embedded TeX code
-  (modify-syntax-entry ?\\ "\\" meta-mode-syntax-table)
-  )
 
-(defvar meta-mode-map nil
+(defvar meta-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "\C-m"      'reindent-then-newline-and-indent)
+    ;; Comment Paragraphs:
+    ;; (define-key map "\M-a"      'backward-sentence)
+    ;; (define-key map "\M-e"      'forward-sentence)
+    ;; (define-key map "\M-h"      'mark-paragraph)
+    ;; (define-key map "\M-q"      'fill-paragraph)
+    ;; Navigation:
+    (define-key map "\M-\C-a"   'meta-beginning-of-defun)
+    (define-key map "\M-\C-e"   'meta-end-of-defun)
+    (define-key map "\M-\C-h"   'meta-mark-defun)
+    ;; Indentation:
+    (define-key map "\M-\C-q"   'meta-indent-defun)
+    (define-key map "\C-c\C-qe" 'meta-indent-defun)
+    (define-key map "\C-c\C-qr" 'meta-indent-region)
+    (define-key map "\C-c\C-qb" 'meta-indent-buffer)
+    ;; Commenting Out:
+    (define-key map "\C-c%"     'meta-comment-defun)
+    ;; (define-key map "\C-uC-c%"  'meta-uncomment-defun)
+    (define-key map "\C-c;"     'meta-comment-region)
+    (define-key map "\C-c:"     'meta-uncomment-region)
+    ;; Symbol Completion:
+    (define-key map "\M-\t"     'meta-complete-symbol)
+    ;; Shell Commands:
+    ;; (define-key map "\C-c\C-c"  'meta-command-file)
+    ;; (define-key map "\C-c\C-k"  'meta-kill-job)
+    ;; (define-key map "\C-c\C-l"  'meta-recenter-output)
+    map)
   "Keymap used in Metafont or MetaPost mode.")
-(if meta-mode-map
-    ()
-  (setq meta-mode-map (make-sparse-keymap))
-  (define-key meta-mode-map "\t"        'meta-indent-line)
-  (define-key meta-mode-map "\C-m"      'reindent-then-newline-and-indent)
-  ;; Comment Paragraphs:
-; (define-key meta-mode-map "\M-a"      'backward-sentence)
-; (define-key meta-mode-map "\M-e"      'forward-sentence)
-; (define-key meta-mode-map "\M-h"      'mark-paragraph)
-; (define-key meta-mode-map "\M-q"      'fill-paragraph)
-  ;; Navigation:
-  (define-key meta-mode-map "\M-\C-a"   'meta-beginning-of-defun)
-  (define-key meta-mode-map "\M-\C-e"   'meta-end-of-defun)
-  (define-key meta-mode-map "\M-\C-h"   'meta-mark-defun)
-  ;; Indentation:
-  (define-key meta-mode-map "\M-\C-q"   'meta-indent-defun)
-  (define-key meta-mode-map "\C-c\C-qe" 'meta-indent-defun)
-  (define-key meta-mode-map "\C-c\C-qr" 'meta-indent-region)
-  (define-key meta-mode-map "\C-c\C-qb" 'meta-indent-buffer)
-  ;; Commenting Out:
-  (define-key meta-mode-map "\C-c%"     'meta-comment-defun)
-; (define-key meta-mode-map "\C-uC-c%"  'meta-uncomment-defun)
-  (define-key meta-mode-map "\C-c;"     'meta-comment-region)
-  (define-key meta-mode-map "\C-c:"     'meta-uncomment-region)
-  ;; Symbol Completion:
-  (define-key meta-mode-map "\M-\t"     'meta-complete-symbol)
-  ;; Shell Commands:
-; (define-key meta-mode-map "\C-c\C-c"  'meta-command-file)
-; (define-key meta-mode-map "\C-c\C-k"  'meta-kill-job)
-; (define-key meta-mode-map "\C-c\C-l"  'meta-recenter-output)
-  )
+
 
 (easy-menu-define
  meta-mode-menu meta-mode-map
@@ -947,11 +1014,14 @@ The environment marked is the one that contains point or follows point."
   (make-local-variable 'comment-start)
   (make-local-variable 'comment-end)
   (make-local-variable 'comment-multi-line)
-  (setq comment-start-skip "%+[ \t]*")
+  (setq comment-start-skip "%+[ \t\f]*")
   (setq comment-start "%")
   (setq comment-end "")
   (setq comment-multi-line nil)
 
+  ;; We use `back-to-indentation' but \f is no indentation sign.
+  (modify-syntax-entry ?\f "_   ")
+
   (make-local-variable 'parse-sexp-ignore-comments)
   (setq parse-sexp-ignore-comments t)
 
@@ -1033,5 +1103,5 @@ Turning on MetaPost mode calls the value of the variable
 (provide 'meta-mode)
 (run-hooks 'meta-mode-load-hook)
 
-;;; arch-tag: ec2916b2-3a83-4cf7-962d-d8019370c006
+;; arch-tag: ec2916b2-3a83-4cf7-962d-d8019370c006
 ;;; meta-mode.el ends here
index dc550a202e20c4d25ef8c94f22f0a4f96d6aa863..b7084950a09a1c7d4a7726820ed6520617bd2e52 100644 (file)
@@ -63,7 +63,7 @@ All Octave abbrevs start with a grave accent (`).")
 (unless octave-abbrev-table
   (define-abbrev-table 'octave-abbrev-table ()))
 
-(let ((ac abbrevs-changed))
+(let ((abbrevs-changed abbrevs-changed))
   (define-abbrev octave-abbrev-table "`a" "all_va_args" nil 0 t)
   (define-abbrev octave-abbrev-table "`b" "break" nil 0 t)
   (define-abbrev octave-abbrev-table "`cs" "case" nil 0 t)
@@ -89,10 +89,10 @@ All Octave abbrevs start with a grave accent (`).")
   (define-abbrev octave-abbrev-table "`r" "return" nil 0 t)
   (define-abbrev octave-abbrev-table "`s" "switch" nil 0 t)
   (define-abbrev octave-abbrev-table "`t" "try" nil 0 t)
+  (define-abbrev octave-abbrev-table "`u" "until ()" nil 0 t)
   (define-abbrev octave-abbrev-table "`up" "unwind_protect" nil 0 t)
   (define-abbrev octave-abbrev-table "`upc" "unwind_protect_cleanup" nil 0 t)
-  (define-abbrev octave-abbrev-table "`w" "while ()" nil 0 t)
-  (setq abbrevs-changed ac))
+  (define-abbrev octave-abbrev-table "`w" "while ()" nil 0 t))
 
 (defvar octave-comment-char ?#
   "Character to start an Octave comment.")
@@ -103,32 +103,34 @@ All Octave abbrevs start with a grave accent (`).")
   "Regexp to match the start of an Octave comment up to its body.")
 
 (defvar octave-begin-keywords
-  '("for" "function" "if" "switch" "try" "unwind_protect" "while"))
+  '("do" "for" "function" "if" "switch" "try" "unwind_protect" "while"))
 (defvar octave-else-keywords
   '("case" "catch" "else" "elseif" "otherwise" "unwind_protect_cleanup"))
+;; FIXME: only use specific "end" tokens here to avoid confusion when "end"
+;; is used in indexing (the real fix is much more complex).
 (defvar octave-end-keywords
-  '("end" "endfor" "endfunction" "endif" "endswitch" "end_try_catch"
-    "end_unwind_protect" "endwhile"))
+  '("endfor" "endfunction" "endif" "endswitch" "end_try_catch"
+    "end_unwind_protect" "endwhile" "until"))
 
 (defvar octave-reserved-words
   (append octave-begin-keywords
          octave-else-keywords
          octave-end-keywords
-         '("all_va_args" "break" "continue" "global" "gplot" "gsplot"
-           "replot" "return"))
+         '("break" "continue" "end" "global" "persistent" "return"))
   "Reserved words in Octave.")
 
 (defvar octave-text-functions
   '("casesen" "cd" "chdir" "clear" "diary" "dir" "document" "echo"
-    "edit_history" "format" "gset" "gshow" "help" "history" "hold"
-    "load" "ls" "more" "run_history" "save" "set" "show" "type"
+    "edit_history" "format" "help" "history" "hold"
+    "load" "ls" "more" "run_history" "save" "type"
     "which" "who" "whos")
-  "Text functions in Octave (these names are also reserved).")
+  "Text functions in Octave.")
 
 (defvar octave-variables
-  '("EDITOR" "EXEC_PATH" "F_DUPFD" "F_GETFD" "F_GETFL" "F_SETFD"
-    "F_SETFL" "I" "IMAGEPATH" "INFO_FILE" "INFO_PROGRAM" "Inf" "J"
-    "LOADPATH" "NaN" "OCTAVE_VERSION" "O_APPEND" "O_CREAT" "O_EXCL"
+  '("DEFAULT_EXEC_PATH" "DEFAULT_LOADPATH"
+    "EDITOR" "EXEC_PATH" "F_DUPFD" "F_GETFD" "F_GETFL" "F_SETFD"
+    "F_SETFL" "I" "IMAGE_PATH" "Inf" "J"
+    "NaN" "OCTAVE_VERSION" "O_APPEND" "O_CREAT" "O_EXCL"
     "O_NONBLOCK" "O_RDONLY" "O_RDWR" "O_TRUNC" "O_WRONLY" "PAGER" "PS1"
     "PS2" "PS4" "PWD" "SEEK_CUR" "SEEK_END" "SEEK_SET" "__F_DUPFD__"
     "__F_GETFD__" "__F_GETFL__" "__F_SETFD__" "__F_SETFL__" "__I__"
@@ -136,29 +138,23 @@ All Octave abbrevs start with a grave accent (`).")
     "__O_CREAT__" "__O_EXCL__" "__O_NONBLOCK__" "__O_RDONLY__"
     "__O_RDWR__" "__O_TRUNC__" "__O_WRONLY__" "__PWD__" "__SEEK_CUR__"
     "__SEEK_END__" "__SEEK_SET__" "__argv__" "__e__" "__eps__"
-    "__error_text__" "__i__" "__inf__" "__j__" "__nan__" "__pi__"
+    "__i__" "__inf__" "__j__" "__nan__" "__pi__"
     "__program_invocation_name__" "__program_name__" "__realmax__"
     "__realmin__" "__stderr__" "__stdin__" "__stdout__" "ans" "argv"
-    "automatic_replot" "beep_on_error" "completion_append_char"
-    "default_return_value" "default_save_format"
-    "define_all_return_values" "do_fortran_indexing" "e"
-    "echo_executing_commands" "empty_list_elements_ok" "eps"
-    "error_text" "gnuplot_binary" "gnuplot_has_multiplot" "history_file"
-    "history_size" "ignore_function_time_stamp" "implicit_str_to_num_ok"
-    "inf" "nan" "nargin" "ok_to_lose_imaginary_part"
-    "output_max_field_width" "output_precision"
+    "beep_on_error" "completion_append_char"
+    "crash_dumps_octave_core" "default_save_format"
+    "e" "echo_executing_commands" "eps"
+    "error_text" "gnuplot_binary" "history_file"
+    "history_size" "ignore_function_time_stamp"
+    "inf" "nan" "nargin" "output_max_field_width" "output_precision"
     "page_output_immediately" "page_screen_output" "pi"
-    "prefer_column_vectors" "prefer_zero_one_indexing"
     "print_answer_id_name" "print_empty_dimensions"
-    "program_invocation_name" "program_name" "propagate_empty_matrices"
-    "realmax" "realmin" "resize_on_range_error"
-    "return_last_computed_value" "save_precision" "saving_history"
+    "program_invocation_name" "program_name"
+    "realmax" "realmin" "return_last_computed_value" "save_precision"
+    "saving_history" "sighup_dumps_octave_core" "sigterm_dumps_octave_core"
     "silent_functions" "split_long_rows" "stderr" "stdin" "stdout"
     "string_fill_char" "struct_levels_to_print"
-    "suppress_verbose_help_message" "treat_neg_dim_as_zero"
-    "warn_assign_as_truth_value" "warn_comma_in_global_decl"
-    "warn_divide_by_zero" "warn_function_name_clash"
-    "warn_missing_semicolon" "whitespace_in_literal_matrix")
+    "suppress_verbose_help_message")
   "Builtin variables in Octave.")
 
 (defvar octave-function-header-regexp
@@ -193,22 +189,18 @@ parenthetical grouping.")
   "Additional Octave expressions to highlight.")
 
 (defcustom inferior-octave-buffer "*Inferior Octave*"
-  "*Name of buffer for running an inferior Octave process."
+  "Name of buffer for running an inferior Octave process."
   :type 'string
   :group 'octave-inferior)
 
 (defvar inferior-octave-process nil)
 \f
-(defvar octave-mode-map nil
-  "Keymap used in Octave mode.")
-(if octave-mode-map
-    ()
+(defvar octave-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map "`" 'octave-abbrev-start)
     (define-key map ";" 'octave-electric-semi)
     (define-key map " " 'octave-electric-space)
     (define-key map "\n" 'octave-reindent-then-newline-and-indent)
-    (define-key map "\t" 'indent-according-to-mode)
     (define-key map "\e;" 'octave-indent-for-comment)
     (define-key map "\e\n" 'octave-indent-new-comment-line)
     (define-key map "\e\t" 'octave-complete-symbol)
@@ -245,49 +237,51 @@ parenthetical grouping.")
     (define-key map "\C-c\C-i\C-s" 'octave-show-process-buffer)
     (define-key map "\C-c\C-i\C-h" 'octave-hide-process-buffer)
     (define-key map "\C-c\C-i\C-k" 'octave-kill-process)
-    (setq octave-mode-map map)))
+    map)
+  "Keymap used in Octave mode.")
+
 
 (defvar octave-mode-menu
-  (list "Octave"
-       (list "Lines"
-             ["Previous Code Line"     octave-previous-code-line t]
-             ["Next Code Line"         octave-next-code-line t]
-             ["Begin of Continuation"  octave-beginning-of-line t]
-             ["End of Continuation"    octave-end-of-line t]
-             ["Split Line at Point"    octave-indent-new-comment-line t])
-       (list "Blocks"
-             ["Next Block"             octave-forward-block t]
-             ["Previous Block"         octave-backward-block t]
-             ["Down Block"             octave-down-block t]
-             ["Up Block"               octave-backward-up-block t]
-             ["Mark Block"             octave-mark-block t]
-             ["Close Block"            octave-close-block t])
-       (list "Functions"
-             ["Begin of Function"      octave-beginning-of-defun t]
-             ["End of Function"        octave-end-of-defun t]
-             ["Mark Function"          octave-mark-defun t]
-             ["Indent Function"        octave-indent-defun t]
-             ["Insert Function"        octave-insert-defun t])
-       "-"
-       (list "Debug"
-             ["Send Current Line"      octave-send-line t]
-             ["Send Current Block"     octave-send-block t]
-             ["Send Current Function"  octave-send-defun t]
-             ["Send Region"            octave-send-region t]
-             ["Show Process Buffer"    octave-show-process-buffer t]
-             ["Hide Process Buffer"    octave-hide-process-buffer t]
-             ["Kill Process"           octave-kill-process t])
-       "-"
-       ["Indent Line"                  indent-according-to-mode t]
-       ["Complete Symbol"              octave-complete-symbol t]
-       "-"
-       ["Toggle Abbrev Mode"           abbrev-mode t]
-       ["Toggle Auto-Fill Mode"        auto-fill-mode t]
-       "-"
-       ["Submit Bug Report"            octave-submit-bug-report t]
-       "-"
-       ["Describe Octave Mode"         octave-describe-major-mode t]
-       ["Lookup Octave Index"          octave-help t])
+  '("Octave"
+    '("Lines"
+      ["Previous Code Line"    octave-previous-code-line t]
+      ["Next Code Line"                octave-next-code-line t]
+      ["Begin of Continuation" octave-beginning-of-line t]
+      ["End of Continuation"   octave-end-of-line t]
+      ["Split Line at Point"   octave-indent-new-comment-line t])
+    '("Blocks"
+      ["Next Block"            octave-forward-block t]
+      ["Previous Block"                octave-backward-block t]
+      ["Down Block"            octave-down-block t]
+      ["Up Block"              octave-backward-up-block t]
+      ["Mark Block"            octave-mark-block t]
+      ["Close Block"           octave-close-block t])
+    '("Functions"
+      ["Begin of Function"     octave-beginning-of-defun t]
+      ["End of Function"       octave-end-of-defun t]
+      ["Mark Function"         octave-mark-defun t]
+      ["Indent Function"       octave-indent-defun t]
+      ["Insert Function"       octave-insert-defun t])
+    "-"
+    '("Debug"
+      ["Send Current Line"     octave-send-line t]
+      ["Send Current Block"    octave-send-block t]
+      ["Send Current Function" octave-send-defun t]
+      ["Send Region"           octave-send-region t]
+      ["Show Process Buffer"   octave-show-process-buffer t]
+      ["Hide Process Buffer"   octave-hide-process-buffer t]
+      ["Kill Process"          octave-kill-process t])
+    "-"
+    ["Indent Line"             indent-according-to-mode t]
+    ["Complete Symbol"         octave-complete-symbol t]
+    "-"
+    ["Toggle Abbrev Mode"      abbrev-mode t]
+    ["Toggle Auto-Fill Mode"   auto-fill-mode t]
+    "-"
+    ["Submit Bug Report"       octave-submit-bug-report t]
+    "-"
+    ["Describe Octave Mode"    octave-describe-major-mode t]
+    ["Lookup Octave Index"     octave-help t])
   "Menu for Octave mode.")
 
 (defvar octave-mode-syntax-table
@@ -316,23 +310,23 @@ parenthetical grouping.")
   "Syntax table in use in `octave-mode' buffers.")
 
 (defcustom octave-auto-indent nil
-  "*Non-nil means indent line after a semicolon or space in Octave mode."
+  "Non-nil means indent line after a semicolon or space in Octave mode."
   :type 'boolean
   :group 'octave)
 
 (defcustom octave-auto-newline nil
-  "*Non-nil means automatically newline after a semicolon in Octave mode."
+  "Non-nil means automatically newline after a semicolon in Octave mode."
   :type 'boolean
   :group 'octave)
 
 (defcustom octave-blink-matching-block t
-  "*Control the blinking of matching Octave block keywords.
+  "Control the blinking of matching Octave block keywords.
 Non-nil means show matching begin of block when inserting a space,
 newline or semicolon after an else or end keyword."
   :type 'boolean
   :group 'octave)
 (defcustom octave-block-offset 2
-  "*Extra indentation applied to statements in Octave block structures."
+  "Extra indentation applied to statements in Octave block structures."
   :type 'integer
   :group 'octave)
 
@@ -352,15 +346,17 @@ newline or semicolon after an else or end keyword."
   (concat octave-block-begin-regexp "\\|" octave-block-end-regexp))
 (defvar octave-block-else-or-end-regexp
   (concat octave-block-else-regexp "\\|" octave-block-end-regexp))
+;; FIXME: only use specific "end" tokens here to avoid confusion when "end"
+;; is used in indexing (the real fix is much more complex).
 (defvar octave-block-match-alist
-  '(("for" . ("end" "endfor"))
-    ("function" . ("end" "endfunction"))
-    ("if" . ("else" "elseif" "end" "endif"))
-    ("switch" . ("case" "otherwise" "end" "endswitch"))
-    ("try" . ("catch" "end" "end_try_catch"))
-    ("unwind_protect" . ("unwind_protect_cleanup" "end"
-                        "end_unwind_protect"))
-    ("while" . ("end" "endwhile")))
+  '(("do" . ("until"))
+    ("for" . ("endfor"))
+    ("function" . ("endfunction"))
+    ("if" . ("else" "elseif" "endif"))
+    ("switch" . ("case" "otherwise" "endswitch"))
+    ("try" . ("catch" "end_try_catch"))
+    ("unwind_protect" . ("unwind_protect_cleanup" "end_unwind_protect"))
+    ("while" . ("endwhile")))
   "Alist with Octave's matching block keywords.
 Has Octave's begin keywords as keys and a list of the matching else or
 end keywords as associated values.")
@@ -370,13 +366,13 @@ end keywords as associated values.")
   "String to insert to start a new Octave comment on an empty line.")
 
 (defcustom octave-continuation-offset 4
-  "*Extra indentation applied to Octave continuation lines."
+  "Extra indentation applied to Octave continuation lines."
   :type 'integer
   :group 'octave)
 (defvar octave-continuation-regexp
   "[^#%\n]*\\(\\\\\\|\\.\\.\\.\\)\\s-*\\(\\s<.*\\)?$")
 (defcustom octave-continuation-string "\\"
-  "*Character string used for Octave continuation lines.  Normally \\."
+  "Character string used for Octave continuation lines.  Normally \\."
   :type 'string
   :group 'octave)
 
@@ -392,27 +388,22 @@ Currently, only builtin variables can be completed.")
    (list nil octave-function-header-regexp 3))
   "Imenu expression for Octave mode.  See `imenu-generic-expression'.")
 
-(defcustom octave-mode-startup-message t
-  "*nil means do not display the Octave mode startup message."
-  :type 'boolean
-  :group 'octave)
-
 (defcustom octave-mode-hook nil
-  "*Hook to be run when Octave mode is started."
+  "Hook to be run when Octave mode is started."
   :type 'hook
   :group 'octave)
 
 (defcustom octave-send-show-buffer t
-  "*Non-nil means display `inferior-octave-buffer' after sending to it."
+  "Non-nil means display `inferior-octave-buffer' after sending to it."
   :type 'boolean
   :group 'octave)
 (defcustom octave-send-line-auto-forward t
-  "*Control auto-forward after sending to the inferior Octave process.
+  "Control auto-forward after sending to the inferior Octave process.
 Non-nil means always go to the next Octave code line after sending."
   :type 'boolean
   :group 'octave)
 (defcustom octave-send-echo-input t
-  "*Non-nil means echo input sent to the inferior Octave process."
+  "Non-nil means echo input sent to the inferior Octave process."
   :type 'boolean
   :group 'octave)
 
@@ -423,7 +414,7 @@ Non-nil means always go to the next Octave code line after sending."
 
 This mode makes it easier to write Octave code by helping with
 indentation, doing some of the typing for you (with Abbrev mode) and by
-showing keywords, comments, strings, etc. in different faces (with
+showing keywords, comments, strings, etc.. in different faces (with
 Font Lock mode on terminals that support it).
 
 Octave itself is a high-level language, primarily intended for numerical
@@ -433,7 +424,7 @@ can also be stored in files, and it can be used in a batch mode (which
 is why you need this mode!).
 
 The latest released version of Octave is always available via anonymous
-ftp from bevo.che.wisc.edu in the directory `/pub/octave'.  Complete
+ftp from ftp.octave.org in the directory `/pub/octave'.  Complete
 source and binaries for several popular systems are available.
 
 Type \\[list-abbrevs] to display the built-in abbrevs for Octave keywords.
@@ -446,43 +437,39 @@ Keybindings
 Variables you can use to customize Octave mode
 ==============================================
 
-octave-auto-indent
+`octave-auto-indent'
   Non-nil means indent current line after a semicolon or space.
   Default is nil.
 
-octave-auto-newline
+`octave-auto-newline'
   Non-nil means auto-insert a newline and indent after a semicolon.
   Default is nil.
 
-octave-blink-matching-block
+`octave-blink-matching-block'
   Non-nil means show matching begin of block when inserting a space,
   newline or semicolon after an else or end keyword.  Default is t.
 
-octave-block-offset
+`octave-block-offset'
   Extra indentation applied to statements in block structures.
   Default is 2.
 
-octave-continuation-offset
+`octave-continuation-offset'
   Extra indentation applied to Octave continuation lines.
   Default is 4.
 
-octave-continuation-string
+`octave-continuation-string'
   String used for Octave continuation lines.
   Default is a backslash.
 
-octave-mode-startup-message
-  nil means do not display the Octave mode startup message.
-  Default is t.
-
-octave-send-echo-input
+`octave-send-echo-input'
   Non-nil means always display `inferior-octave-buffer' after sending a
   command to the inferior Octave process.
 
-octave-send-line-auto-forward
+`octave-send-line-auto-forward'
   Non-nil means always go to the next unsent line of Octave code after
   sending a line to the inferior Octave process.
 
-octave-send-echo-input
+`octave-send-echo-input'
   Non-nil means echo input sent to the inferior Octave process.
 
 Turning on Octave mode runs the hook `octave-mode-hook'.
@@ -490,19 +477,15 @@ Turning on Octave mode runs the hook `octave-mode-hook'.
 To begin using this mode for all `.m' files that you edit, add the
 following lines to your `.emacs' file:
 
-  (autoload 'octave-mode \"octave-mod\" nil t)
-  (setq auto-mode-alist
-        (cons '(\"\\\\.m$\" . octave-mode) auto-mode-alist))
+  (add-to-list 'auto-mode-alist '(\"\\\\.m\\\\'\" . octave-mode))
 
-To automatically turn on the abbrev, auto-fill and font-lock features,
+To automatically turn on the abbrev and auto-fill features,
 add the following lines to your `.emacs' file as well:
 
   (add-hook 'octave-mode-hook
            (lambda ()
              (abbrev-mode 1)
-             (auto-fill-mode 1)
-             (if (eq window-system 'x)
-                 (font-lock-mode 1))))
+             (auto-fill-mode 1)))
 
 To submit a problem report, enter \\[octave-submit-bug-report] from \
 an Octave mode buffer.
@@ -788,7 +771,7 @@ The new line is properly indented."
     (octave-reindent-then-newline-and-indent))))
 
 (defun octave-indent-defun ()
-  "Properly indents the Octave function which contains point."
+  "Properly indent the Octave function which contains point."
   (interactive)
   (save-excursion
     (octave-mark-defun)
@@ -871,8 +854,8 @@ does not end in `...' or `\\' or is inside an open parenthesis list."
                    (zerop (forward-line 1)))))
     (end-of-line)))
 
-(defun octave-scan-blocks (from count depth)
-  "Scan from character number FROM by COUNT Octave begin-end blocks.
+(defun octave-scan-blocks (count depth)
+  "Scan from point by COUNT Octave begin-end blocks.
 Returns the character number of the position thus found.
 
 If DEPTH is nonzero, block depth begins counting from that value.
@@ -910,7 +893,7 @@ With argument, do it that many times.
 Negative arg -N means move backward across N blocks."
   (interactive "p")
   (or arg (setq arg 1))
-  (goto-char (or (octave-scan-blocks (point) arg 0) (buffer-end arg))))
+  (goto-char (or (octave-scan-blocks arg 0) (buffer-end arg))))
 
 (defun octave-backward-block (&optional arg)
   "Move backward across one balanced Octave begin-end block.
@@ -928,7 +911,7 @@ In Lisp programs, an argument is required."
   (interactive "p")
   (let ((inc (if (> arg 0) 1 -1)))
     (while (/= arg 0)
-      (goto-char (or (octave-scan-blocks (point) inc -1)
+      (goto-char (or (octave-scan-blocks inc -1)
                     (buffer-end arg)))
       (setq arg (- arg inc)))))
 
@@ -948,7 +931,7 @@ In Lisp programs, an argument is required."
   (interactive "p")
   (let ((inc (if (> arg 0) 1 -1)))
     (while (/= arg 0)
-      (goto-char (or (octave-scan-blocks (point) inc 1)
+      (goto-char (or (octave-scan-blocks inc 1)
                     (buffer-end arg)))
       (setq arg (- arg inc)))))
 
@@ -1164,6 +1147,8 @@ otherwise."
 
 (defun octave-fill-paragraph (&optional arg)
  "Fill paragraph of Octave code, handling Octave comments."
+ ;; FIXME: now that the default fill-paragraph takes care of similar issues,
+ ;; this seems obsolete.  --Stef
  (interactive "P")
  (save-excursion
    (let ((end (progn (forward-paragraph) (point)))
@@ -1404,7 +1389,7 @@ entered without parens)."
 \f
 ;;; Menu
 (defun octave-add-octave-menu ()
-  "Adds the `Octave' menu to the menu bar in Octave mode."
+  "Add the `Octave' menu to the menu bar in Octave mode."
   (require 'easymenu)
   (easy-menu-define octave-mode-menu-map octave-mode-map
                    "Menu keymap for Octave mode." octave-mode-menu)
@@ -1534,7 +1519,6 @@ code line."
      'octave-continuation-offset
      'octave-continuation-string
      'octave-help-files
-     'octave-mode-startup-message
      'octave-send-echo-input
      'octave-send-line-auto-forward
      'octave-send-show-buffer))))
@@ -1543,5 +1527,5 @@ code line."
 
 (provide 'octave-mod)
 
-;;; arch-tag: 05f1ce09-be87-4c00-803e-4919ffa26c23
+;; arch-tag: 05f1ce09-be87-4c00-803e-4919ffa26c23
 ;;; octave-mod.el ends here
index ea4f620faaddf78a6d689c2427ebb72266b2ce43..f1d6d02020bc3a12574866e5252fdb27918c44d1 100644 (file)
@@ -885,10 +885,13 @@ On a comment line, go to end of line."
                           nil)
                          ((eq 'string (syntax-ppss-context s))
                           ;; Go to start of string and skip it.
-                          (goto-char (nth 8 s))
-                          (condition-case () ; beware invalid syntax
-                              (progn (forward-sexp) t)
-                            (error (end-of-line))))
+                           (let ((pos (point)))
+                             (goto-char (nth 8 s))
+                             (condition-case () ; beware invalid syntax
+                                 (progn (forward-sexp) t)
+                               ;; If there's a mismatched string, make sure
+                               ;; we still overall move *forward*.
+                               (error (goto-char pos) (end-of-line)))))
                          ((python-skip-out t s))))
             (end-of-line))
           (unless comment
@@ -983,15 +986,11 @@ don't move and return nil.  Otherwise return t."
                       (_ (if (python-comment-line-p)
                              (python-skip-comments/blanks t)))
                       (ci (current-indentation))
-                      (open (python-open-block-statement-p))
-                      opoint)
+                      (open (python-open-block-statement-p)))
                  (if (and (zerop ci) (not open))
                      (not (goto-char point))
                    (catch 'done
-                     (setq opoint (point))
-                     (while (and (zerop (python-next-statement))
-                                 (not (= opoint (point))))
-                       (setq opoint (point))
+                      (while (zerop (python-next-statement))
                        (when (or (and open (<= (current-indentation) ci))
                                  (< (current-indentation) ci))
                          (python-skip-comments/blanks t)
@@ -999,7 +998,16 @@ don't move and return nil.  Otherwise return t."
                          (throw 'done t)))))))
       (setq arg (1- arg)))
     (zerop arg)))
-\f
+
+(defvar python-which-func-length-limit 40
+  "Non-strict length limit for `python-which-func' output.")
+
+(defun python-which-func ()
+  (let ((function-name (python-current-defun python-which-func-length-limit)))
+    (set-text-properties 0 (length function-name) nil function-name)
+    function-name))
+
+
 ;;;; Imenu.
 
 (defvar python-recursing)
@@ -1375,7 +1383,7 @@ buffer for a list of commands.)"
       ;; seems worth putting in a separate file, and it's probably cleaner
       ;; to put it in a module.
       ;; Ensure we're at a prompt before doing anything else.
-      (python-send-receive "import emacs; print '_emacs_out ()'")))
+      (python-send-string "import emacs")))
   (if (derived-mode-p 'python-mode)
       (setq python-buffer (default-value 'python-buffer))) ; buffer-local
   ;; Without this, help output goes into the inferior python buffer if
@@ -1833,22 +1841,34 @@ of current line."
   (1+ (/ (current-indentation) python-indent)))
 
 ;; Fixme: Consider top-level assignments, imports, &c.
-(defun python-current-defun ()
+(defun python-current-defun (&optional length-limit)
   "`add-log-current-defun-function' for Python."
   (save-excursion
     ;; Move up the tree of nested `class' and `def' blocks until we
     ;; get to zero indentation, accumulating the defined names.
-    (let ((start t)
-         accum)
-      (while (or start (> (current-indentation) 0))
-       (setq start nil)
-       (python-beginning-of-block)
-       (end-of-line)
-       (beginning-of-defun)
-       (if (looking-at (rx (0+ space) (or "def" "class") (1+ space)
-                           (group (1+ (or word (syntax symbol))))))
-           (push (match-string 1) accum)))
-      (if accum (mapconcat 'identity accum ".")))))
+    (let ((accum)
+         (length -1))
+      (catch 'done
+       (while (or (null length-limit)
+                  (null (cdr accum))
+                  (< length length-limit))
+         (setq start nil)
+         (let ((started-from (point)))
+           (python-beginning-of-block)
+           (end-of-line)
+           (beginning-of-defun)
+           (when (= (point) started-from)
+             (throw 'done nil)))
+         (when (looking-at (rx (0+ space) (or "def" "class") (1+ space)
+                               (group (1+ (or word (syntax symbol))))))
+           (push (match-string 1) accum)
+           (setq length (+ length 1 (length (car accum)))))
+         (when (= (current-indentation) 0)
+           (throw 'done nil))))
+      (when accum
+       (when (and length-limit (> length length-limit))
+         (setcar accum ".."))
+       (mapconcat 'identity accum ".")))))
 
 (defun python-mark-block ()
   "Mark the block around point.
@@ -1947,7 +1967,7 @@ Repeating the command scrolls the completion window."
   (interactive)
   (let ((window (get-buffer-window "*Completions*")))
     (if (and (eq last-command this-command)
-            window (window-live-p window) (window-buffer window)
+            (window-live-p window) (window-buffer window)
             (buffer-name (window-buffer window)))
        (with-current-buffer (window-buffer window)
          (if (pos-visible-in-window-p (point-max) window)
@@ -2270,6 +2290,7 @@ with skeleton expansions for compound statement templates.
   (set (make-local-variable 'beginning-of-defun-function)
        'python-beginning-of-defun)
   (set (make-local-variable 'end-of-defun-function) 'python-end-of-defun)
+  (add-hook 'which-func-functions 'python-which-func nil t)
   (setq imenu-create-index-function #'python-imenu-create-index)
   (set (make-local-variable 'eldoc-documentation-function)
        #'python-eldoc-function)
index 959c1685a747480200d081b50131136fea91b999..5314bb3b74521da315af7ab8f4fe57e1f9e80af9 100644 (file)
 
 (defgroup sh nil
   "Shell programming utilities."
-  :group 'unix
   :group 'languages)
 
 (defgroup sh-script nil
     (wsh . sh)
     (zsh . ksh88)
     (rpm . sh))
-  "*Alist showing the direct ancestor of various shells.
+  "Alist showing the direct ancestor of various shells.
 This is the basis for `sh-feature'.  See also `sh-alias-alist'.
 By default we have the following three hierarchies:
 
@@ -276,7 +275,7 @@ sh          Bourne Shell
         '((ksh . ksh88)
            (bash2 . bash)
           (sh5 . sh)))
-  "*Alist for transforming shell names to what they really are.
+  "Alist for transforming shell names to what they really are.
 Use this where the name of the executable doesn't correspond to the type of
 shell it really is."
   :type '(repeat (cons symbol symbol))
@@ -302,7 +301,7 @@ shell it really is."
            (file-name-sans-extension (downcase shell)))))
    (getenv "SHELL")
    "/bin/sh")
-  "*The executable file name for the shell being programmed."
+  "The executable file name for the shell being programmed."
   :type 'string
   :group 'sh-script)
 
@@ -321,7 +320,7 @@ shell it really is."
     (wksh)
     ;; -f means don't run .zshrc.
     (zsh . "-f"))
-  "*Single argument string for the magic number.  See `sh-feature'."
+  "Single argument string for the magic number.  See `sh-feature'."
   :type '(repeat (cons (symbol :tag "Shell")
                       (choice (const :tag "No Arguments" nil)
                               (string :tag "Arguments")
@@ -330,8 +329,8 @@ shell it really is."
 
 (defcustom sh-imenu-generic-expression
   `((sh
-     . ((nil "^\\s-*\\(function\\s-+\\)?\\([A-Za-z_][A-Za-z_0-9]+\\)\\s-*()" 2))))
-  "*Alist of regular expressions for recognizing shell function definitions.
+     . ((nil "^\\s-*\\(function\\s-+\\)?\\([[:alpha:]_][[:alnum:]_]+\\)\\s-*()" 2))))
+  "Alist of regular expressions for recognizing shell function definitions.
 See `sh-feature' and `imenu-generic-expression'."
   :type '(alist :key-type (symbol :tag "Shell")
                :value-type (alist :key-type (choice :tag "Title"
@@ -507,7 +506,7 @@ This is buffer-local in every such buffer.")
   '(shell-dynamic-complete-environment-variable
     shell-dynamic-complete-command
     comint-dynamic-complete-filename)
-  "*Functions for doing TAB dynamic completion."
+  "Functions for doing TAB dynamic completion."
   :type '(repeat function)
   :group 'sh-script)
 
@@ -515,7 +514,7 @@ This is buffer-local in every such buffer.")
 (defcustom sh-require-final-newline
   '((csh . t)
     (pdksh . t))
-  "*Value of `require-final-newline' in Shell-Script mode buffers.
+  "Value of `require-final-newline' in Shell-Script mode buffers.
 \(SHELL . t) means use the value of `mode-require-final-newline' for SHELL.
 See `sh-feature'."
   :type '(repeat (cons (symbol :tag "Shell")
@@ -525,12 +524,12 @@ See `sh-feature'."
 
 
 (defcustom sh-assignment-regexp
-  '((csh . "\\<\\([a-zA-Z0-9_]+\\)\\(\\[.+\\]\\)?[ \t]*[-+*/%^]?=")
+  '((csh . "\\<\\([[:alnum:]_]+\\)\\(\\[.+\\]\\)?[ \t]*[-+*/%^]?=")
     ;; actually spaces are only supported in let/(( ... ))
-    (ksh88 . "\\<\\([a-zA-Z0-9_]+\\)\\(\\[.+\\]\\)?[ \t]*\\([-+*/%&|~^]\\|<<\\|>>\\)?=")
-    (rc . "\\<\\([a-zA-Z0-9_*]+\\)[ \t]*=")
-    (sh . "\\<\\([a-zA-Z0-9_]+\\)="))
-  "*Regexp for the variable name and what may follow in an assignment.
+    (ksh88 . "\\<\\([[:alnum:]_]+\\)\\(\\[.+\\]\\)?[ \t]*\\([-+*/%&|~^]\\|<<\\|>>\\)?=")
+    (rc . "\\<\\([[:alnum:]_*]+\\)[ \t]*=")
+    (sh . "\\<\\([[:alnum:]_]+\\)="))
+  "Regexp for the variable name and what may follow in an assignment.
 First grouping matches the variable name.  This is upto and including the `='
 sign.  See `sh-feature'."
   :type '(repeat (cons (symbol :tag "Shell")
@@ -546,7 +545,7 @@ sign.  See `sh-feature'."
 
 
 (defcustom sh-remember-variable-min 3
-  "*Don't remember variables less than this length for completing reads."
+  "Don't remember variables less than this length for completing reads."
   :type 'integer
   :group 'sh-script)
 
@@ -557,16 +556,16 @@ That command is also used for setting this variable.")
 
 
 (defcustom sh-beginning-of-command
-  "\\([;({`|&]\\|\\`\\|[^\\]\n\\)[ \t]*\\([/~a-zA-Z0-9:]\\)"
-  "*Regexp to determine the beginning of a shell command.
+  "\\([;({`|&]\\|\\`\\|[^\\]\n\\)[ \t]*\\([/~[:alnum:]:]\\)"
+  "Regexp to determine the beginning of a shell command.
 The actual command starts at the beginning of the second \\(grouping\\)."
   :type 'regexp
   :group 'sh-script)
 
 
 (defcustom sh-end-of-command
-  "\\([/~a-zA-Z0-9:]\\)[ \t]*\\([;#)}`|&]\\|$\\)"
-  "*Regexp to determine the end of a shell command.
+  "\\([/~[:alnum:]:]\\)[ \t]*\\([;#)}`|&]\\|$\\)"
+  "Regexp to determine the end of a shell command.
 The actual command ends at the end of the first \\(grouping\\)."
   :type 'regexp
   :group 'sh-script)
@@ -653,6 +652,7 @@ removed when closing the here document."
     (shell "cd" "echo" "eval" "set" "shift" "umask" "unset" "wait")
 
     (wksh sh-append ksh88
+          ;; FIXME: This looks too much like a regexp.  --Stef
          "Xt[A-Z][A-Za-z]*")
 
     (zsh sh-append ksh88
@@ -662,7 +662,7 @@ removed when closing the here document."
         "readonly" "rehash" "sched" "setopt" "source" "suspend" "true"
         "ttyctl" "type" "unfunction" "unhash" "unlimit" "unsetopt" "vared"
         "which"))
-  "*List of all shell builtins for completing read and fontification.
+  "List of all shell builtins for completing read and fontification.
 Note that on some systems not all builtins are available or some are
 implemented as aliases.  See `sh-feature'."
   :type '(repeat (cons (symbol :tag "Shell")
@@ -683,7 +683,7 @@ implemented as aliases.  See `sh-feature'."
     (rc "else")
 
     (sh "!" "do" "elif" "else" "if" "then" "trap" "type" "until" "while"))
-  "*List of keywords that may be immediately followed by a builtin or keyword.
+  "List of keywords that may be immediately followed by a builtin or keyword.
 Given some confusion between keywords and builtins depending on shell and
 system, the distinction here has been based on whether they influence the
 flow of control or syntax.  See `sh-feature'."
@@ -722,7 +722,7 @@ flow of control or syntax.  See `sh-feature'."
 
     (zsh sh-append bash
         "select"))
-  "*List of keywords not in `sh-leading-keywords'.
+  "List of keywords not in `sh-leading-keywords'.
 See `sh-feature'."
   :type '(repeat (cons (symbol :tag "Shell")
                       (choice (repeat string)
@@ -843,18 +843,18 @@ See `sh-feature'.")
 
 (defvar sh-font-lock-keywords-var
   '((csh sh-append shell
-        ("\\${?[#?]?\\([A-Za-z_][A-Za-z0-9_]*\\|0\\)" 1
+        ("\\${?[#?]?\\([[:alpha:]_][[:alnum:]_]*\\|0\\)" 1
           font-lock-variable-name-face))
 
     (es sh-append executable-font-lock-keywords
-       ("\\$#?\\([A-Za-z_][A-Za-z0-9_]*\\|[0-9]+\\)" 1
+       ("\\$#?\\([[:alpha:]_][[:alnum:]_]*\\|[0-9]+\\)" 1
          font-lock-variable-name-face))
 
     (rc sh-append es)
     (bash sh-append shell ("\\$(\\(\\sw+\\)" (1 'sh-quoted-exec t) ))
     (sh sh-append shell
        ;; Variable names.
-       ("\\$\\({#?\\)?\\([A-Za-z_][A-Za-z0-9_]*\\|[-#?@!]\\)" 2
+       ("\\$\\({#?\\)?\\([[:alpha:]_][[:alnum:]_]*\\|[-#?@!]\\)" 2
          font-lock-variable-name-face)
        ;; Function names.
        ("^\\(\\sw+\\)[ \t]*(" 1 font-lock-function-name-face)
@@ -867,8 +867,8 @@ See `sh-feature'.")
     (shell
            ;; Using font-lock-string-face here confuses sh-get-indent-info.
            ("\\(^\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\\\)$" 3 'sh-escaped-newline)
-          ("\\\\[^A-Za-z0-9]" 0 font-lock-string-face)
-          ("\\${?\\([A-Za-z_][A-Za-z0-9_]*\\|[0-9]+\\|[$*_]\\)" 1
+          ("\\\\[^[:alnum:]]" 0 font-lock-string-face)
+          ("\\${?\\([[:alpha:]_][[:alnum:]_]*\\|[0-9]+\\|[$*_]\\)" 1
             font-lock-variable-name-face))
     (rpm sh-append rpm2
         ("%{?\\(\\sw+\\)"  1 font-lock-keyword-face))
@@ -985,7 +985,7 @@ Point is at the beginning of the next line."
   ;; This looks silly, but it's because `sh-here-doc-re' keeps changing.
   (re-search-forward sh-here-doc-re limit t))
 
-(defun sh-quoted-subshell (limit)
+(defun sh-font-lock-quoted-subshell (limit)
   "Search for a subshell embedded in a string.
 Find all the unescaped \" characters within said subshell, remembering that
 subshells can nest."
@@ -997,46 +997,39 @@ subshells can nest."
             (eq ?\" (nth 3 (syntax-ppss))))
     ;; bingo we have a $( or a ` inside a ""
     (let ((char (char-after (point)))
-          (continue t)
-          (pos (point))
-          (data nil)      ;; value to put into match-data (and return)
-          (last nil)      ;; last char seen
-          (bq  (equal (match-string 1) "`")) ;; ` state flip-flop
-          (seen nil)                         ;; list of important positions
-          (nest 1))                          ;; subshell nesting level
-      (while (and continue char (<= pos limit))
-        ;; unescaped " inside a $( ... ) construct.
-        ;; state machine time...
-        ;; \ => ignore next char;
-        ;; ` => increase or decrease nesting level based on bq flag
-        ;; ) [where nesting > 0] => decrease nesting
-        ;; ( [where nesting > 0] => increase nesting
-        ;; ( [preceeded by $ ]   => increase nesting
-        ;; " [nesting <= 0 ]     => terminate, we're done.
-        ;; " [nesting >  0 ]     => remember this, it's not a proper "
-        ;; FIXME: don't count parens that appear within quotes.
-        (cond
-         ((eq ?\\ last) nil)
-         ((eq ?\` char) (setq nest (+ nest (if bq -1 1)) bq (not bq)))
-         ((and (> nest 0) (eq ?\) char))   (setq nest (1- nest)))
-         ((and (eq ?$ last) (eq ?\( char)) (setq nest (1+ nest)))
-         ((and (> nest 0) (eq ?\( char))   (setq nest (1+ nest)))
-         ((eq char ?\")
-          (if (>= 0 nest) (setq continue nil) (push pos seen))))
-        ;;(message "POS: %d [%d]" pos nest)
-        (setq last char
-              pos  (1+ pos)
-              char (char-after pos)) )
-      ;; FIXME: why construct a costly match data to pass to
-      ;; sh-apply-quoted-subshell rather than apply the highlight
-      ;; directly here?  -- Stef
-      (when seen
-        ;;(message "SEEN: %S" seen)
-        (setq data (list (current-buffer)))
-        (dolist(P seen)
-          (setq data (cons P (cons (1+ P) data))))
-        (store-match-data data))
-      data) ))
+          ;; `state' can be: double-quote, backquote, code.
+          (state (if (eq (char-before) ?`) 'backquote 'code))
+          ;; Stacked states in the context.
+          (states '(double-quote)))
+      (while (and state (progn (skip-chars-forward "^'\\\"`$()" limit)
+                               (< (point) limit)))
+        ;; unescape " inside a $( ... ) construct.
+        (case (char-after)
+          (?\' (skip-chars-forward "^'" limit))
+          (?\\ (forward-char 1))
+          (?\" (case state
+                 (double-quote (setq state (pop states)))
+                 (t (push state states) (setq state 'double-quote)))
+               (if state (put-text-property (point) (1+ (point))
+                                            'syntax-table '(1))))
+          (?\` (case state
+                 (backquote (setq state (pop states)))
+                 (t (push state states) (setq state 'backquote))))
+          (?\$ (if (not (eq (char-after (1+ (point))) ?\())
+                   nil
+                 (forward-char 1)
+                 (case state
+                   (t (push state states) (setq state 'code)))))
+          (?\( (case state
+                 (double-quote nil)
+                 (t (push state states) (setq state 'code))))
+          (?\) (case state
+                 (double-quote nil)
+                 (t (setq state (pop states)))))
+          (t (error "Internal error in sh-font-lock-quoted-subshell")))
+        (forward-char 1)))
+    t))
+
 
 (defun sh-is-quoted-p (pos)
   (and (eq (char-before pos) ?\\)
@@ -1092,17 +1085,6 @@ subshells can nest."
   (goto-char limit)
   nil)
 
-(defun sh-apply-quoted-subshell ()
-  "Apply the `sh-st-punc' syntax to all the matches in `match-data'.
-This is used to flag quote characters in subshell constructs inside strings
-\(which should therefore not be treated as normal quote characters\)"
-  (let ((m (match-data)) a b)
-    (while m
-      (setq a (car  m)
-            b (cadr m)
-            m (cddr m))
-      (put-text-property a b 'syntax-table sh-st-punc))) sh-st-punc)
-
 (defconst sh-font-lock-syntactic-keywords
   ;; A `#' begins a comment when it is unquoted and at the beginning of a
   ;; word.  In the shell, words are separated by metacharacters.
@@ -1129,8 +1111,7 @@ This is used to flag quote characters in subshell constructs inside strings
     (")" 0 (sh-font-lock-paren (match-beginning 0)))
     ;; highlight (possibly nested) subshells inside "" quoted regions correctly.
     ;; This should be at the very end because it uses syntax-ppss.
-    (sh-quoted-subshell
-     (1 (sh-apply-quoted-subshell) t t))))
+    (sh-font-lock-quoted-subshell)))
 
 (defun sh-font-lock-syntactic-face-function (state)
   (let ((q (nth 3 state)))
@@ -1151,17 +1132,17 @@ and command `sh-reset-indent-vars-to-global-values'."
 
 
 (defcustom sh-set-shell-hook nil
-  "*Hook run by `sh-set-shell'."
+  "Hook run by `sh-set-shell'."
   :type 'hook
   :group 'sh-script)
 
 (defcustom sh-mode-hook nil
-  "*Hook run by `sh-mode'."
+  "Hook run by `sh-mode'."
   :type 'hook
   :group 'sh-script)
 
 (defcustom sh-learn-basic-offset nil
-  "*When `sh-guess-basic-offset' should learn `sh-basic-offset'.
+  "When `sh-guess-basic-offset' should learn `sh-basic-offset'.
 
 nil mean:              never.
 t means:               only if there seems to be an obvious value.
@@ -1173,7 +1154,7 @@ Anything else means:   whenever we have a \"good guess\" as to the value."
   :group 'sh-indentation)
 
 (defcustom sh-popup-occur-buffer nil
-  "*Controls when  `sh-learn-buffer-indent' pops the `*indent*' buffer.
+  "Controls when  `sh-learn-buffer-indent' pops the `*indent*' buffer.
 If t it is always shown.  If nil, it is shown only when there
 are conflicts."
   :type '(choice
@@ -1182,7 +1163,7 @@ are conflicts."
   :group 'sh-indentation)
 
 (defcustom sh-blink t
-  "*If non-nil, `sh-show-indent' shows the line indentation is relative to.
+  "If non-nil, `sh-show-indent' shows the line indentation is relative to.
 The position on the line is not necessarily meaningful.
 In some cases the line will be the matching keyword, but this is not
 always the case."
@@ -1190,7 +1171,7 @@ always the case."
   :group 'sh-indentation)
 
 (defcustom sh-first-lines-indent 0
-  "*The indentation of the first non-blank non-comment line.
+  "The indentation of the first non-blank non-comment line.
 Usually 0 meaning first column.
 Can be set to a number, or to nil which means leave it as is."
   :type '(choice
@@ -1201,17 +1182,17 @@ Can be set to a number, or to nil which means leave it as is."
 
 
 (defcustom sh-basic-offset 4
-  "*The default indentation increment.
+  "The default indentation increment.
 This value is used for the `+' and `-' symbols in an indentation variable."
   :type 'integer
   :group 'sh-indentation)
 
 (defcustom sh-indent-comment nil
-  "*How a comment line is to be indented.
+  "How a comment line is to be indented.
 nil means leave it as it is;
 t  means indent it as a normal line, aligning it to previous non-blank
    non-comment line;
-a number means align to that column, e.g. 0 means fist column."
+a number means align to that column, e.g. 0 means first column."
   :type '(choice
          (const :tag "Leave as is." nil)
          (const :tag "Indent as a normal line."  t)
@@ -1246,7 +1227,7 @@ a number means align to that column, e.g. 0 means fist column."
           :menu-tag "/   Indent left  half sh-basic-offset")))
 
 (defcustom sh-indent-for-else 0
-  "*How much to indent an `else' relative to its `if'.  Usually 0."
+  "How much to indent an `else' relative to its `if'.  Usually 0."
   :type `(choice
          (integer :menu-tag "A number (positive=>indent right)"
                   :tag "A number")
@@ -1262,41 +1243,41 @@ a number means align to that column, e.g. 0 means fist column."
          sh-symbol-list))
 
 (defcustom sh-indent-for-fi 0
-  "*How much to indent a `fi' relative to its `if'.  Usually 0."
+  "How much to indent a `fi' relative to its `if'.  Usually 0."
   :type `(choice ,@ sh-number-or-symbol-list )
   :group 'sh-indentation)
 
 (defcustom sh-indent-for-done 0
-  "*How much to indent a `done' relative to its matching stmt.  Usually 0."
+  "How much to indent a `done' relative to its matching stmt.  Usually 0."
   :type `(choice ,@ sh-number-or-symbol-list )
   :group 'sh-indentation)
 
 (defcustom sh-indent-after-else '+
-  "*How much to indent a statement after an `else' statement."
+  "How much to indent a statement after an `else' statement."
   :type `(choice ,@ sh-number-or-symbol-list )
   :group 'sh-indentation)
 
 (defcustom sh-indent-after-if '+
-  "*How much to indent a statement after an `if' statement.
+  "How much to indent a statement after an `if' statement.
 This includes lines after `else' and `elif' statements, too, but
 does not affect the `else', `elif' or `fi' statements themselves."
   :type `(choice ,@ sh-number-or-symbol-list )
   :group 'sh-indentation)
 
 (defcustom sh-indent-for-then 0
-  "*How much to indent a `then' relative to its `if'."
+  "How much to indent a `then' relative to its `if'."
   :type `(choice ,@ sh-number-or-symbol-list )
   :group 'sh-indentation)
 
 (defcustom sh-indent-for-do 0
-  "*How much to indent a `do' statement.
+  "How much to indent a `do' statement.
 This is relative to the statement before the `do', typically a
 `while', `until', `for', `repeat' or `select' statement."
   :type `(choice ,@ sh-number-or-symbol-list)
   :group 'sh-indentation)
 
 (defcustom sh-indent-after-do '+
-  "*How much to indent a line after a `do' statement.
+  "How much to indent a line after a `do' statement.
 This is used when the `do' is the first word of the line.
 This is relative to the statement before the `do', typically a
 `while', `until', `for', `repeat' or `select' statement."
@@ -1304,7 +1285,7 @@ This is relative to the statement before the `do', typically a
   :group 'sh-indentation)
 
 (defcustom sh-indent-after-loop-construct '+
-  "*How much to indent a statement after a loop construct.
+  "How much to indent a statement after a loop construct.
 
 This variable is used when the keyword `do' is on the same line as the
 loop statement (e.g., `until', `while' or `for').
@@ -1314,7 +1295,7 @@ If the `do' is on a line by itself, then `sh-indent-after-do' is used instead."
 
 
 (defcustom sh-indent-after-done 0
-  "*How much to indent a statement after a `done' keyword.
+  "How much to indent a statement after a `done' keyword.
 Normally this is 0, which aligns the `done' to the matching
 looping construct line.
 Setting it non-zero allows you to have the `do' statement on a line
@@ -1323,55 +1304,55 @@ by itself and align the done under to do."
   :group 'sh-indentation)
 
 (defcustom sh-indent-for-case-label '+
-  "*How much to indent a case label statement.
+  "How much to indent a case label statement.
 This is relative to the line containing the `case' statement."
   :type `(choice ,@ sh-number-or-symbol-list)
   :group 'sh-indentation)
 
 (defcustom sh-indent-for-case-alt '++
-  "*How much to indent statements after the case label.
+  "How much to indent statements after the case label.
 This is relative to the line containing the `case' statement."
   :type `(choice ,@ sh-number-or-symbol-list)
   :group 'sh-indentation)
 
 
 (defcustom sh-indent-for-continuation '+
-  "*How much to indent for a continuation statement."
+  "How much to indent for a continuation statement."
   :type `(choice ,@ sh-number-or-symbol-list)
   :group 'sh-indentation)
 
 (defcustom sh-indent-after-open '+
-  "*How much to indent after a line with an opening parenthesis or brace.
+  "How much to indent after a line with an opening parenthesis or brace.
 For an open paren after a function, `sh-indent-after-function' is used."
   :type `(choice ,@ sh-number-or-symbol-list)
   :group 'sh-indentation)
 
 (defcustom sh-indent-after-function '+
-  "*How much to indent after a function line."
+  "How much to indent after a function line."
   :type `(choice ,@ sh-number-or-symbol-list)
   :group 'sh-indentation)
 
 ;; These 2 are for the rc shell:
 
 (defcustom sh-indent-after-switch '+
-  "*How much to indent a `case' statement relative to the `switch' statement.
+  "How much to indent a `case' statement relative to the `switch' statement.
 This is for the rc shell."
   :type `(choice ,@ sh-number-or-symbol-list)
   :group 'sh-indentation)
 
 (defcustom sh-indent-after-case '+
-  "*How much to indent a statement relative to the `case' statement.
+  "How much to indent a statement relative to the `case' statement.
 This is for the rc shell."
   :type `(choice ,@ sh-number-or-symbol-list)
   :group 'sh-indentation)
 
 (defcustom sh-backslash-column 48
-  "*Column in which `sh-backslash-region' inserts backslashes."
+  "Column in which `sh-backslash-region' inserts backslashes."
   :type 'integer
   :group 'sh)
 
 (defcustom sh-backslash-align t
-  "*If non-nil, `sh-backslash-region' will align backslashes."
+  "If non-nil, `sh-backslash-region' will align backslashes."
   :type 'boolean
   :group 'sh)
 
@@ -1381,7 +1362,7 @@ This is for the rc shell."
   "Make a regexp which matches WORD as a word.
 This specifically excludes an occurrence of WORD followed by
 punctuation characters like '-'."
-  (concat word "\\([^-a-z0-9_]\\|$\\)"))
+  (concat word "\\([^-[:alnum:]_]\\|$\\)"))
 
 (defconst sh-re-done (sh-mkword-regexpr "done"))
 
@@ -1925,14 +1906,14 @@ variable `sh-make-vars-local' has been set to nil.
 To revert all these variables to the global values, use
 command `sh-reset-indent-vars-to-global-values'."
   (interactive)
-  (mapcar 'make-local-variable sh-var-list)
+  (mapc 'make-local-variable sh-var-list)
   (message "Indentation variables are now local."))
 
 (defun sh-reset-indent-vars-to-global-values ()
   "Reset local indentation variables to the global values.
 Then, if variable `sh-make-vars-local' is non-nil, make them local."
   (interactive)
-  (mapcar 'kill-local-variable sh-var-list)
+  (mapc 'kill-local-variable sh-var-list)
   (if sh-make-vars-local
       (mapcar 'make-local-variable sh-var-list)))
 
@@ -2268,6 +2249,7 @@ STRING         This is ignored for the purposes of calculating
                      (setq align-point (point))))
                (or (bobp)
                    (forward-char -1))
+                ;; FIXME: This charset looks too much like a regexp.  --Stef
                (skip-chars-forward "[a-z0-9]*?")
                )
               ((string-match "[])}]" x)
@@ -2476,7 +2458,7 @@ we go to the end of the previous line and do not check for continuations."
        (if (looking-at "[\"'`]")
            (sh-safe-forward-sexp)
          ;; (> (skip-chars-forward "^ \t\n\"'`") 0)
-         (> (skip-chars-forward "-_a-zA-Z$0-9") 0)
+         (> (skip-chars-forward "-_$[:alnum:]") 0)
          ))
     (buffer-substring start (point))
     ))
index 1187129bb3387bf7b7e9a5457a531fcd6de04c04..a03b58b466ca1d3219d291bab987c8054903dcdc 100644 (file)
@@ -863,7 +863,7 @@ Based on `comint-mode-map'.")
 (unless sql-mode-abbrev-table
   (define-abbrev-table 'sql-mode-abbrev-table nil))
 
-(mapcar
+(mapc
  ;; In Emacs 22+, provide SYSTEM-FLAG to define-abbrev.
  '(lambda (abbrev)
     (let ((name (car abbrev))
index 6479fa3702b94433e062751f90d5f4a37a0b20ce..9aaee22b9a937fcaccd631d671274fc6f46544f5 100644 (file)
@@ -48,7 +48,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Documentation
 
-;; See comment string of function `vera-mode' or type `C-c C-h' in Emacs.
+;; See comment string of function `vera-mode' or type `C-h m' in Emacs.
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Installation
@@ -122,37 +122,37 @@ If nil, TAB always indents current line."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Key bindings
 
-(defvar vera-mode-map ()
+(defvar vera-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; Backspace/delete key bindings.
+    (define-key map [backspace] 'backward-delete-char-untabify)
+    (unless (boundp 'delete-key-deletes-forward) ; XEmacs variable
+      (define-key map [delete]       'delete-char)
+      (define-key map [(meta delete)] 'kill-word))
+    ;; Standard key bindings.
+    (define-key map "\M-e"     'vera-forward-statement)
+    (define-key map "\M-a"     'vera-backward-statement)
+    (define-key map "\M-\C-e"  'vera-forward-same-indent)
+    (define-key map "\M-\C-a"  'vera-backward-same-indent)
+    ;; Mode specific key bindings.
+    (define-key map "\C-c\t"   'indent-according-to-mode)
+    (define-key map "\M-\C-\\" 'vera-indent-region)
+    (define-key map "\C-c\C-c" 'vera-comment-uncomment-region)
+    (define-key map "\C-c\C-f" 'vera-fontify-buffer)
+    (define-key map "\C-c\C-v" 'vera-version)
+    (define-key map "\M-\t"    'tab-to-tab-stop)
+    ;; Electric key bindings.
+    (define-key map "\t"       'vera-electric-tab)
+    (define-key map "\r"       'vera-electric-return)
+    (define-key map " "        'vera-electric-space)
+    (define-key map "{"        'vera-electric-opening-brace)
+    (define-key map "}"        'vera-electric-closing-brace)
+    (define-key map "#"        'vera-electric-pound)
+    (define-key map "*"        'vera-electric-star)
+    (define-key map "/"        'vera-electric-slash)
+    map)
   "Keymap for Vera Mode.")
 
-(setq vera-mode-map (make-sparse-keymap))
-;; backspace/delete key bindings
-(define-key vera-mode-map [backspace] 'backward-delete-char-untabify)
-(unless (boundp 'delete-key-deletes-forward) ; XEmacs variable
-  (define-key vera-mode-map [delete]       'delete-char)
-  (define-key vera-mode-map [(meta delete)] 'kill-word))
-;; standard key bindings
-(define-key vera-mode-map "\M-e"     'vera-forward-statement)
-(define-key vera-mode-map "\M-a"     'vera-backward-statement)
-(define-key vera-mode-map "\M-\C-e"  'vera-forward-same-indent)
-(define-key vera-mode-map "\M-\C-a"  'vera-backward-same-indent)
-;; mode specific key bindings
-(define-key vera-mode-map "\C-c\t"   'indent-according-to-mode)
-(define-key vera-mode-map "\M-\C-\\" 'vera-indent-region)
-(define-key vera-mode-map "\C-c\C-c" 'vera-comment-uncomment-region)
-(define-key vera-mode-map "\C-c\C-f" 'vera-fontify-buffer)
-(define-key vera-mode-map "\C-c\C-v" 'vera-version)
-(define-key vera-mode-map "\M-\t"    'tab-to-tab-stop)
-;; electric key bindings
-(define-key vera-mode-map "\t"       'vera-electric-tab)
-(define-key vera-mode-map "\r"       'vera-electric-return)
-(define-key vera-mode-map " "        'vera-electric-space)
-(define-key vera-mode-map "{"        'vera-electric-opening-brace)
-(define-key vera-mode-map "}"        'vera-electric-closing-brace)
-(define-key vera-mode-map "#"        'vera-electric-pound)
-(define-key vera-mode-map "*"        'vera-electric-star)
-(define-key vera-mode-map "/"        'vera-electric-slash)
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Menu
 
@@ -844,21 +844,19 @@ This function does not modify point or mark."
 
 (defsubst vera-re-search-forward (regexp &optional bound noerror)
   "Like `re-search-forward', but skips over matches in literals."
-  (store-match-data '(nil nil))
-  (while (and (re-search-forward regexp bound noerror)
-             (vera-skip-forward-literal)
-             (progn (store-match-data '(nil nil))
-                    (if bound (< (point) bound) t))))
-  (match-end 0))
+  (let (ret)
+    (while (and (setq ret (re-search-forward regexp bound noerror))
+                (vera-skip-forward-literal)
+                (if bound (< (point) bound) t)))
+    ret))
 
 (defsubst vera-re-search-backward (regexp &optional bound noerror)
   "Like `re-search-backward', but skips over matches in literals."
-  (store-match-data '(nil nil))
-  (while (and (re-search-backward regexp bound noerror)
-             (vera-skip-backward-literal)
-             (progn (store-match-data '(nil nil))
-                    (if bound (> (point) bound) t))))
-  (match-end 0))
+  (let (ret)
+    (while (and (setq ret (re-search-backward regexp bound noerror))
+                (vera-skip-backward-literal)
+                (if bound (> (point) bound) t)))
+    ret))
 
 (defun vera-forward-syntactic-ws (&optional lim skip-directive)
   "Forward skip of syntactic whitespace."
index 0d909a4a3fff999f2c189272344d48cb71da3741..60d30eb8a6d854daec8f12af45bf988a2e5f5f2d 100644 (file)
@@ -2811,7 +2811,7 @@ STRING are replaced by `-' and substrings are converted to lower case."
 
 ;; set up electric character functions to work with
 ;; `delete-selection-mode' (Emacs) and `pending-delete-mode' (XEmacs)
-(mapcar
+(mapc
  (function
   (lambda (sym)
     (put sym 'delete-selection t)      ; for `delete-selection-mode' (Emacs)
@@ -5296,7 +5296,7 @@ argument.  The styles are chosen from the `vhdl-style-alist' variable."
     (or vars
        (error "ERROR:  Invalid VHDL indentation style `%s'" style))
     ;; set all the variables
-    (mapcar
+    (mapc
      (function
       (lambda (varentry)
        (let ((var (car varentry))
@@ -7148,7 +7148,7 @@ ENDPOS is encountered."
        (actual (vhdl-get-syntactic-context))
        (expurgated))
     ;; remove the library unit symbols
-    (mapcar
+    (mapc
      (function
       (lambda (elt)
        (if (memq (car elt) '(entity configuration package
index 7d953be1d5c1551e1c36737c94ec432c8b2e16b3..577ad024a2bcb1e54d37a76c61d2f5e22ffb641f 100644 (file)
@@ -76,8 +76,9 @@
   :version "20.3")
 
 (defcustom which-func-modes
-  '(emacs-lisp-mode c-mode c++-mode perl-mode cperl-mode makefile-mode
-                   sh-mode fortran-mode f90-mode ada-mode)
+  '(emacs-lisp-mode c-mode c++-mode perl-mode cperl-mode python-mode
+                   makefile-mode sh-mode fortran-mode f90-mode ada-mode
+                   diff-mode)
   "List of major modes for which Which Function mode should be used.
 For other modes it is disabled.  If this is equal to t,
 then Which Function mode is enabled in any major mode that supports it."
index a820ca4cedefb258dac5f43ab1bda768e5141278..f437bb7da373e98afdf4f7c950b1c8b399a17388 100644 (file)
@@ -101,17 +101,17 @@ from being inserted into the process-buffer.")
 (setq-default scheme-mode-line-process
              '("" xscheme-runlight))
 
-(mapcar 'make-variable-buffer-local
-       '(xscheme-expressions-ring
-         xscheme-expressions-ring-yank-pointer
-         xscheme-process-filter-state
-         xscheme-running-p
-         xscheme-control-g-disabled-p
-         xscheme-allow-output-p
-         xscheme-prompt
-         xscheme-string-accumulator
-         xscheme-mode-string
-         scheme-mode-line-process))
+(mapc 'make-variable-buffer-local
+      '(xscheme-expressions-ring
+       xscheme-expressions-ring-yank-pointer
+       xscheme-process-filter-state
+       xscheme-running-p
+       xscheme-control-g-disabled-p
+       xscheme-allow-output-p
+       xscheme-prompt
+       xscheme-string-accumulator
+       xscheme-mode-string
+       scheme-mode-line-process))
 \f
 (defgroup xscheme nil
   "Major mode for editing Scheme and interacting with MIT's C-Scheme."
index 2c3eb7207ef23f53fff35b00cc4cd5c82e0ceebe..fcad2c85bdfad10d143e6c13db51345d15f47d4c 100644 (file)
 ;;
 ;; Valid values for `ps-multibyte-buffer' are:
 ;;
-;;  nil                     This is the value to use the default settings which
-;;                         is by default for printing buffer with only ASCII
-;;                         and Latin characters.   The default setting can be
-;;                         changed by setting the variable
+;;  nil                            This is the value to use the default settings;
+;;                         by default, this only works to print buffers with
+;;                         only ASCII and Latin characters.   But this default
+;;                         setting can be changed by setting the variable
 ;;                         `ps-mule-font-info-database-default' differently.
 ;;                         The initial value of this variable is
 ;;                         `ps-mule-font-info-database-latin' (see
 ;;                         documentation).
 ;;
-;;  `non-latin-printer'     This is the value to use when you have a japanese
+;;  `non-latin-printer'            This is the value to use when you have a japanese
 ;;                         or korean PostScript printer and want to print
 ;;                         buffer with ASCII, Latin-1, Japanese (JISX0208 and
 ;;                         JISX0201-Kana) and Korean characters.  At present,
-;;                         it was not tested the Korean characters printing.
-;;                         If you have a korean PostScript printer, please,
-;;                         test it.
+;;                         it was not tested with the Korean characters
+;;                         printing.  If you have a korean PostScript printer,
+;;                         please, test it.
 ;;
-;;  `bdf-font'              This is the value to use when you want to print
+;;  `bdf-font'             This is the value to use when you want to print
 ;;                         buffer with BDF fonts.  BDF fonts include both latin
 ;;                         and non-latin fonts.  BDF (Bitmap Distribution
 ;;                         Format) is a format used for distributing X's font
@@ -75,7 +75,7 @@
 ;;                         `bdf-directory-list' appropriately (see ps-bdf.el
 ;;                         for documentation of this variable).
 ;;
-;;  `bdf-font-except-latin' This is like `bdf-font' except that it is used
+;;  `bdf-font-except-latin' This is like `bdf-font' except that it uses
 ;;                         PostScript default fonts to print ASCII and Latin-1
 ;;                         characters.  This is convenient when you want or
 ;;                         need to use both latin and non-latin characters on
 
 Valid values are:
 
-  nil                     This is the value to use the default settings which
-                         is by default for printing buffer with only ASCII
-                         and Latin characters.   The default setting can be
-                         changed by setting the variable
+  nil                    This is the value to use the default settings;
+                         by default, this only works to print buffers with
+                         only ASCII and Latin characters.   But this default
+                         setting can be changed by setting the variable
                          `ps-mule-font-info-database-default' differently.
                          The initial value of this variable is
                          `ps-mule-font-info-database-latin' (see
                          documentation).
 
-  `non-latin-printer'     This is the value to use when you have a Japanese
+  `non-latin-printer'    This is the value to use when you have a Japanese
                          or Korean PostScript printer and want to print
                          buffer with ASCII, Latin-1, Japanese (JISX0208 and
                          JISX0201-Kana) and Korean characters.  At present,
-                         it was not tested the Korean characters printing.
-                         If you have a korean PostScript printer, please,
-                         test it.
+                         it was not tested with the Korean characters
+                         printing.  If you have a korean PostScript printer,
+                         please, test it.
 
-  `bdf-font'              This is the value to use when you want to print
+  `bdf-font'             This is the value to use when you want to print
                          buffer with BDF fonts.  BDF fonts include both latin
                          and non-latin fonts.  BDF (Bitmap Distribution
                          Format) is a format used for distributing X's font
@@ -200,7 +200,7 @@ Valid values are:
                          `bdf-directory-list' appropriately (see ps-bdf.el for
                          documentation of this variable).
 
-  `bdf-font-except-latin' This is like `bdf-font' except that it is used
+  `bdf-font-except-latin' This is like `bdf-font' except that it uses
                          PostScript default fonts to print ASCII and Latin-1
                          characters.  This is convenient when you want or
                          need to use both latin and non-latin characters on
@@ -417,22 +417,26 @@ See also `ps-mule-font-info-database-bdf'.")
 
 (defun ps-mule-encode-bit (string delta)
   (let* ((dim (charset-dimension (char-charset (string-to-char string))))
-        (len (* (length string) dim))
-        (str (make-string len 0))
-        (i 0)
+        (len (length string))
+        (str (make-string (* len dim) 0))
         (j 0))
     (if (= dim 1)
-       (while (< j len)
-         (aset str j
-               (+ (nth 1 (split-char (aref string i))) delta))
-         (setq i (1+ i)
-               j (1+ j)))
-      (while (< j len)
+        ;; (apply 'string
+        ;;        (mapcar (lambda (c) (+ (nth 1 (split-char c)) delta))
+        ;;                string))
+       (dotimes (i len)
+         (aset str i
+               (+ (nth 1 (split-char (aref string i))) delta)))
+      ;; (mapconcat (lambda (c)
+      ;;              (let ((split (split-char c)))
+      ;;                (string (+ (nth 1 split) delta)
+      ;;                        (+ (nth 2 split) delta))))
+      ;;            string "")
+      (dotimes (i len)
        (let ((split (split-char (aref string i))))
          (aset str j (+ (nth 1 split) delta))
          (aset str (1+ j) (+ (nth 2 split) delta))
-         (setq i (1+ i)
-               j (+ j 2)))))
+         (setq j (+ j 2)))))
     str))
 
 ;; Special encoding function for Ethiopic.
@@ -455,31 +459,29 @@ See also `ps-mule-font-info-database-bdf'.")
   ;; to avoid compilation gripes
   (defvar ccl-encode-ethio-unicode nil))
 
-(if (boundp 'mule-version)
-    ;; bound mule-version
-    (defun ps-mule-encode-ethiopic (string)
-      (ccl-execute-on-string (symbol-value 'ccl-encode-ethio-unicode)
-                            (make-vector 9 nil)
-                            string))
-  ;; unbound mule-version
-  (defun ps-mule-encode-ethiopic (string)
-    string))
+(defalias 'ps-mule-encode-ethiopic
+  (if (boundp 'mule-version)
+      ;; Bound mule-version.
+      (lambda (string)
+        (ccl-execute-on-string (symbol-value 'ccl-encode-ethio-unicode)
+                               (make-vector 9 nil)
+                               string))
+    ;; Unbound mule-version.
+    #'identity))
 
 ;; Special encoding for mule-unicode-* characters.
 (defun ps-mule-encode-ucs2 (string)
   (let* ((len (length string))
         (str (make-string (* 2 len) 0))
-        (i 0)
         (j 0)
         ch hi lo)
-    (while (< i len)
+    (dotimes (i len)
       (setq ch (encode-char (aref string i) 'ucs)
            hi (lsh ch -8)
            lo (logand ch 255))
       (aset str j hi)
       (aset str (1+ j) lo)
-      (setq i (1+ i)
-           j (+ j 2)))
+      (setq j (+ j 2)))
     str))
 
 ;; A charset which we are now processing.
@@ -518,16 +520,17 @@ element of the list."
 (defconst ps-mule-external-libraries
   '((builtin nil nil
             nil nil nil)
-    (bdf ps-bdf nil
-        bdf-generate-prologue bdf-generate-font bdf-generate-glyphs)
-    (pcf nil nil
-        pcf-generate-prologue pcf-generate-font pcf-generate-glyphs)
-    (vflib nil nil
-          vflib-generate-prologue vflib-generate-font vflib-generate-glyphs))
-  "Alist of information of external libraries to support PostScript printing.
+    (bdf     ps-bdf nil
+            bdf-generate-prologue bdf-generate-font bdf-generate-glyphs)
+    (pcf     nil nil
+            pcf-generate-prologue pcf-generate-font pcf-generate-glyphs)
+    (vflib   nil nil
+            vflib-generate-prologue vflib-generate-font vflib-generate-glyphs))
+  "Alist of external libraries information to support PostScript printing.
 Each element has the form:
 
-    (FONT-SRC FEATURE INITIALIZED-P PROLOGUE-FUNC FONT-FUNC GLYPHS-FUNC)
+    (FONT-SRC FEATURE INITIALIZED-P
+     PROLOGUE-FUNC FONT-FUNC GLYPHS-FUNC)
 
 FONT-SRC is the font source: builtin, bdf, pcf, or vflib.
 
@@ -541,8 +544,8 @@ PROLOGUE-FUNC is a function to generate PostScript code which define several
 PostScript procedures that will be called by FONT-FUNC and GLYPHS-FUNC.  It is
 called with no argument, and should return a list of strings.
 
-FONT-FUNC is a function to generate PostScript code which define a new font.  It
-is called with one argument FONT-SPEC, and should return a list of strings.
+FONT-FUNC is a function to generate PostScript code which define a new font.
+It is called with one argument FONT-SPEC, and should return a list of strings.
 
 GLYPHS-FUNC is a function to generate PostScript code which define glyphs of
 characters.  It is called with three arguments FONT-SPEC, CODE-LIST, and BYTES,
@@ -906,11 +909,8 @@ the sequence."
 ;; The latter form is used if we much change font for the character.
 
 (defun ps-mule-prepare-font-for-components (components font-type)
-  (let ((len (length components))
-       (i 0)
-       elt)
-    (while (< i len)
-      (setq elt (aref components i))
+  (dotimes (i (length components))
+    (let ((elt (aref components i)))
       (if (consp elt)
          ;; ELT is a composition rule.
          (setq elt (encode-composition-rule elt))
@@ -930,8 +930,7 @@ the sequence."
          (if (stringp font)
              (setq elt (cons font str) ps-last-font font)
            (setq elt str))))
-      (aset components i elt)
-      (setq i (1+ i))))
+      (aset components i elt)))
   components)
 
 (defun ps-mule-plot-components (components tail)
@@ -1363,12 +1362,10 @@ FONTTAG should be a string \"/h0\" or \"/h1\"."
     (if (eq (car ps-mule-header-charsets) 'latin-iso8859-1)
        ;; Latin1 characters can be printed by the standard PostScript
        ;; font.  Converts the other non-ASCII characters to `?'.
-       (let ((len (length string))
-             (i 0))
-         (while (< i len)
+       (let ((len (length string)))
+         (dotimes (i len)
            (or (memq (char-charset (aref string i)) '(ascii latin-iso8859-1))
-               (aset string i ??))
-           (setq i (1+ i)))
+               (aset string i ??)))
          (setq string (encode-coding-string string 'iso-latin-1)))
       ;; We must prepare a font for the first non-ASCII and non-Latin1
       ;; character in STRING.
@@ -1383,21 +1380,17 @@ FONTTAG should be a string \"/h0\" or \"/h1\"."
            ;; We don't have a proper font, or we can't print them on
            ;; header because this kind of charset is not ASCII
            ;; compatible.
-           (let ((len (length string))
-                 (i 0))
-             (while (< i len)
+           (let ((len (length string)))
+             (dotimes (i len)
                (or (memq (char-charset (aref string i))
                          '(ascii latin-iso8859-1))
-                   (aset string i ??))
-               (setq i (1+ i)))
+                   (aset string i ??)))
              (setq string (encode-coding-string string 'iso-latin-1)))
          (let ((charsets (list 'ascii (car ps-mule-header-charsets)))
-               (len (length string))
-               (i 0))
-           (while (< i len)
+               (len (length string)))
+           (dotimes (i len)
              (or (memq (char-charset (aref string i)) charsets)
-                 (aset string i ??))
-             (setq i (1+ i))))
+                 (aset string i ??))))
          (setq string (ps-mule-string-encoding font-spec string nil t))))))
   string)
 
@@ -1446,7 +1439,7 @@ FONTTAG should be a string \"/h0\" or \"/h1\"."
 or \\[universal-argument] \\[what-cursor-position] will give information about them.\n"))))
 
        (with-category-table table
-         (let (string-list idx)
+         (let (string-list)
            (dolist (elt header-footer-list)
              (when (stringp elt)
                (when (string-match "\\cu+" elt)
@@ -1466,7 +1459,7 @@ or \\[universal-argument] \\[what-cursor-position] will give information about t
 ;;;###autoload
 (defun ps-mule-begin-job (from to)
   "Start printing job for multi-byte chars between FROM and TO.
-This checks if all multi-byte characters in the region are printable or not."
+It checks if all multi-byte characters in the region are printable or not."
   (setq ps-mule-charset-list nil
        ps-mule-header-charsets nil
        ps-mule-font-info-database
@@ -1541,14 +1534,12 @@ This checks if all multi-byte characters in the region are printable or not."
        (progn
          (ps-mule-prologue-generated)
          (ps-mule-init-external-library font-spec)
-         (let ((font (ps-font-alist 'ps-font-for-text))
-               (ps-current-font 0))
-           (while font
+         (let ((ps-current-font 0))
+           (dolist (font (ps-font-alist 'ps-font-for-text))
              ;; Be sure to download a glyph for SPACE in advance.
-             (ps-mule-prepare-font (ps-mule-get-font-spec 'ascii (car font))
+             (ps-mule-prepare-font (ps-mule-get-font-spec 'ascii font)
                                    " " 'ascii 'no-setfont)
-             (setq font (cdr font)
-                   ps-current-font (1+ ps-current-font)))))))
+             (setq ps-current-font (1+ ps-current-font)))))))
 
   ;; If the header contains non-ASCII and non-Latin1 characters, prepare a font
   ;; and glyphs for the first occurrence of such characters.
@@ -1581,5 +1572,9 @@ This checks if all multi-byte characters in the region are printable or not."
 
 (provide 'ps-mule)
 
-;;; arch-tag: bca017b2-66a7-4e59-8584-103e749eadbe
+;; Local Variables:
+;; generated-autoload-file: "ps-print.el"
+;; End:
+
+;; arch-tag: bca017b2-66a7-4e59-8584-103e749eadbe
 ;;; ps-mule.el ends here
index bdc21a2e7aba7a9086cede72e51c53f5f2b9ab1c..a8633b9a75f9608b1b33b410e5a6ab240ba514a7 100644 (file)
@@ -5028,15 +5028,15 @@ page-height == ((floor print-height ((th + ls) * zh)) * ((th + ls) * zh)) - th
 
 (defun ps-background (page-number)
   (let (has-local-background)
-    (mapcar #'(lambda (range)
-               (and (<= (aref range 0) page-number)
-                    (<= page-number (aref range 1))
-                    (if has-local-background
-                        (ps-output (aref range 2))
-                      (setq has-local-background t)
-                      (ps-output "/printLocalBackground{\n"
-                                 (aref range 2)))))
-           ps-background-pages)
+    (mapc #'(lambda (range)
+             (and (<= (aref range 0) page-number)
+                  (<= page-number (aref range 1))
+                  (if has-local-background
+                      (ps-output (aref range 2))
+                    (setq has-local-background t)
+                    (ps-output "/printLocalBackground{\n"
+                               (aref range 2)))))
+         ps-background-pages)
     (and has-local-background (ps-output "}def\n"))))
 
 
@@ -5672,7 +5672,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
 
     (ps-output "\n" ps-print-prologue-1
               "\n/printGlobalBackground{\n")
-    (mapcar 'ps-output ps-background-all-pages)
+    (mapc 'ps-output ps-background-all-pages)
     (ps-output
      "}def\n/printLocalBackground{\n}def\n"
      "\n%%EndProlog\n\n%%BeginSetup\n"
@@ -6470,10 +6470,10 @@ If FACE is not a valid face name, use default face."
   ;; Now, rebuild reference face lists
   (setq ps-print-face-alist nil)
   (if ps-auto-font-detect
-      (mapcar 'ps-map-face (face-list))
-    (mapcar 'ps-set-face-bold ps-bold-faces)
-    (mapcar 'ps-set-face-italic ps-italic-faces)
-    (mapcar 'ps-set-face-underline ps-underlined-faces))
+      (mapc 'ps-map-face (face-list))
+    (mapc 'ps-set-face-bold ps-bold-faces)
+    (mapc 'ps-set-face-italic ps-italic-faces)
+    (mapc 'ps-set-face-underline ps-underlined-faces))
   (setq ps-build-face-reference nil))
 
 
@@ -7061,16 +7061,71 @@ If FACE is not a valid face name, use default face."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; To make this file smaller, some commands go in a separate file.
 ;; But autoload them here to make the separation invisible.
+\f
+;;;### (autoloads (ps-mule-begin-page ps-mule-begin-job ps-mule-encode-header-string
+;;;;;;  ps-mule-initialize ps-mule-plot-composition ps-mule-plot-string
+;;;;;;  ps-mule-set-ascii-font ps-mule-prepare-ascii-font ps-multibyte-buffer)
+;;;;;;  "ps-mule" "ps-mule.el" "586d0a4deeb89be9b80cc01def34481c")
+;;; Generated autoloads from ps-mule.el
 
-(autoload 'ps-mule-prepare-ascii-font "ps-mule"
-  "Setup special ASCII font for STRING.
-STRING should contain only ASCII characters.")
+(defvar ps-multibyte-buffer nil "\
+*Specifies the multi-byte buffer handling.
 
-(autoload 'ps-mule-set-ascii-font     "ps-mule"
-  "Adjust current font if current charset is not ASCII.")
+Valid values are:
 
-(autoload 'ps-mule-plot-string        "ps-mule"
-  "Generate PostScript code for plotting characters in the region FROM and TO.
+  nil                    This is the value to use the default settings;
+                         by default, this only works to print buffers with
+                         only ASCII and Latin characters.   But this default
+                         setting can be changed by setting the variable
+                         `ps-mule-font-info-database-default' differently.
+                         The initial value of this variable is
+                         `ps-mule-font-info-database-latin' (see
+                         documentation).
+
+  `non-latin-printer'    This is the value to use when you have a Japanese
+                         or Korean PostScript printer and want to print
+                         buffer with ASCII, Latin-1, Japanese (JISX0208 and
+                         JISX0201-Kana) and Korean characters.  At present,
+                         it was not tested with the Korean characters
+                         printing.  If you have a korean PostScript printer,
+                         please, test it.
+
+  `bdf-font'             This is the value to use when you want to print
+                         buffer with BDF fonts.  BDF fonts include both latin
+                         and non-latin fonts.  BDF (Bitmap Distribution
+                         Format) is a format used for distributing X's font
+                         source file.  BDF fonts are included in
+                         `intlfonts-1.2' which is a collection of X11 fonts
+                         for all characters supported by Emacs.  In order to
+                         use this value, be sure to have installed
+                         `intlfonts-1.2' and set the variable
+                         `bdf-directory-list' appropriately (see ps-bdf.el for
+                         documentation of this variable).
+
+  `bdf-font-except-latin' This is like `bdf-font' except that it uses
+                         PostScript default fonts to print ASCII and Latin-1
+                         characters.  This is convenient when you want or
+                         need to use both latin and non-latin characters on
+                         the same buffer.  See `ps-font-family',
+                         `ps-header-font-family' and `ps-font-info-database'.
+
+Any other value is treated as nil.")
+
+(custom-autoload (quote ps-multibyte-buffer) "ps-mule" t)
+
+(autoload (quote ps-mule-prepare-ascii-font) "ps-mule" "\
+Setup special ASCII font for STRING.
+STRING should contain only ASCII characters.
+
+\(fn STRING)" nil nil)
+
+(autoload (quote ps-mule-set-ascii-font) "ps-mule" "\
+Not documented
+
+\(fn)" nil nil)
+
+(autoload (quote ps-mule-plot-string) "ps-mule" "\
+Generate PostScript code for plotting characters in the region FROM and TO.
 
 It is assumed that all characters in this region belong to the same charset.
 
@@ -7081,23 +7136,50 @@ Returns the value:
        (ENDPOS . RUN-WIDTH)
 
 Where ENDPOS is the end position of the sequence and RUN-WIDTH is the width of
-the sequence.")
+the sequence.
+
+\(fn FROM TO &optional BG-COLOR)" nil nil)
+
+(autoload (quote ps-mule-plot-composition) "ps-mule" "\
+Generate PostScript code for plotting composition in the region FROM and TO.
+
+It is assumed that all characters in this region belong to the same
+composition.
+
+Optional argument BG-COLOR specifies background color.
+
+Returns the value:
+
+       (ENDPOS . RUN-WIDTH)
+
+Where ENDPOS is the end position of the sequence and RUN-WIDTH is the width of
+the sequence.
+
+\(fn FROM TO &optional BG-COLOR)" nil nil)
+
+(autoload (quote ps-mule-initialize) "ps-mule" "\
+Initialize global data for printing multi-byte characters.
+
+\(fn)" nil nil)
+
+(autoload (quote ps-mule-encode-header-string) "ps-mule" "\
+Generate PostScript code for ploting STRING by font FONTTAG.
+FONTTAG should be a string \"/h0\" or \"/h1\".
 
-(autoload 'ps-mule-initialize         "ps-mule"
-  "Initialize global data for printing multi-byte characters.")
+\(fn STRING FONTTAG)" nil nil)
 
-(autoload 'ps-mule-begin-job          "ps-mule"
-  "Start printing job for multi-byte chars between FROM and TO.
-This checks if all multi-byte characters in the region are printable or not.")
+(autoload (quote ps-mule-begin-job) "ps-mule" "\
+Start printing job for multi-byte chars between FROM and TO.
+It checks if all multi-byte characters in the region are printable or not.
 
-(autoload 'ps-mule-begin-page         "ps-mule"
-  "Initialize multi-byte charset for printing current page.")
+\(fn FROM TO)" nil nil)
 
-(autoload 'ps-mule-encode-header-string "ps-mule"
-  "Generate PostScript code for plotting characters in header STRING.
+(autoload (quote ps-mule-begin-page) "ps-mule" "\
+Not documented
 
-It is assumed that the length of STRING is not zero.")
+\(fn)" nil nil)
 
+;;;***
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
index 86263ae4924f4734b8ad3d7605b21a63721a693a..ce342d876398b948d15b64ba5b4c574aa778fb12 100644 (file)
@@ -63,14 +63,14 @@ You should define the options of your own filters in this group."
   :group 'recentf)
 
 (defcustom recentf-max-saved-items 20
-  "*Maximum number of items of the recent list that will be saved.
+  "Maximum number of items of the recent list that will be saved.
 A nil value means to save the whole list.
 See the command `recentf-save-list'."
   :group 'recentf
   :type 'integer)
 
 (defcustom recentf-save-file "~/.recentf"
-  "*File to save the recent list into."
+  "File to save the recent list into."
   :group 'recentf
   :type 'file
   :initialize 'custom-initialize-default
@@ -89,9 +89,9 @@ file.  See also the function `set-file-modes'."
   :group 'recentf
   :type '(choice (const :tag "Don't change" nil)
           integer))
-  
+
 (defcustom recentf-exclude nil
-  "*List of regexps and predicates for filenames excluded from the recent list.
+  "List of regexps and predicates for filenames excluded from the recent list.
 When a filename matches any of the regexps or satisfies any of the
 predicates it is excluded from the recent list.
 A predicate is a function that is passed a filename to check and that
@@ -99,19 +99,27 @@ must return non-nil to exclude it."
   :group 'recentf
   :type '(repeat (choice regexp function)))
 
+(defun recentf-keep-default-predicate (file)
+  "Return non-nil if FILE should be kept in the recent list.
+It handles the case of remote files as well."
+  (cond
+   ((file-remote-p file nil t) (file-readable-p file))
+   ((file-remote-p file))
+   ((file-readable-p file))))
+
 (defcustom recentf-keep
-  '(file-readable-p)
-  "*List of regexps and predicates for filenames kept in the recent list.
+  '(recentf-keep-default-predicate)
+  "List of regexps and predicates for filenames kept in the recent list.
 Regexps and predicates are tried in the specified order.
 When nil all filenames are kept in the recent list.
 When a filename matches any of the regexps or satisfies any of the
 predicates it is kept in the recent list.
-The default is to keep readable files.
+The default is to keep readable files.  Remote files are checked
+for readability only in case a connection is established to that
+remote system, otherwise they are kept in the recent list without
+checking their readability.
 A predicate is a function that is passed a filename to check and that
-must return non-nil to keep it.  For example, you can add the
-`file-remote-p' predicate in front of this list to keep remote file
-names in the recent list without checking their readability through a
-remote access."
+must return non-nil to keep it."
   :group 'recentf
   :type '(repeat (choice regexp function)))
 
@@ -127,13 +135,13 @@ Set VARIABLE with VALUE, and force a rebuild of the recentf menu."
     (set-default variable value)))
 
 (defcustom recentf-menu-title "Open Recent"
-  "*Name of the recentf menu."
+  "Name of the recentf menu."
   :group 'recentf
   :type 'string
   :set 'recentf-menu-customization-changed)
 
 (defcustom recentf-menu-path '("File")
-  "*Path where to add the recentf menu.
+  "Path where to add the recentf menu.
 If nil add it at top level (see also `easy-menu-add-item')."
   :group 'recentf
   :type '(choice (const :tag "Top Level" nil)
@@ -141,7 +149,7 @@ If nil add it at top level (see also `easy-menu-add-item')."
   :set 'recentf-menu-customization-changed)
 
 (defcustom recentf-menu-before "Open File..."
-  "*Name of the menu before which the recentf menu will be added.
+  "Name of the menu before which the recentf menu will be added.
 If nil add it at end of menu (see also `easy-menu-add-item')."
   :group 'recentf
   :type '(choice (string :tag "Name")
@@ -149,18 +157,18 @@ If nil add it at end of menu (see also `easy-menu-add-item')."
   :set 'recentf-menu-customization-changed)
 
 (defcustom recentf-menu-action 'find-file
-  "*Function to invoke with a filename item of the recentf menu.
+  "Function to invoke with a filename item of the recentf menu.
 The default is to call `find-file' to edit the selected file."
   :group 'recentf
   :type 'function)
 
 (defcustom recentf-max-menu-items 10
-  "*Maximum number of items in the recentf menu."
+  "Maximum number of items in the recentf menu."
   :group 'recentf
   :type 'integer)
 
 (defcustom recentf-menu-filter nil
-  "*Function used to filter files displayed in the recentf menu.
+  "Function used to filter files displayed in the recentf menu.
 A nil value means no filter.  The following functions are predefined:
 
 - `recentf-sort-ascending'
@@ -214,13 +222,13 @@ elements (see `recentf-make-menu-element' for menu element form)."
                 function))
 
 (defcustom recentf-menu-open-all-flag nil
-  "*Non-nil means to show an \"All...\" item in the menu.
+  "Non-nil means to show an \"All...\" item in the menu.
 This item will replace the \"More...\" item."
   :group 'recentf
   :type 'boolean)
 
 (defcustom recentf-menu-append-commands-flag t
-  "*Non-nil means to append command items to the menu."
+  "Non-nil means to append command items to the menu."
   :group 'recentf
   :type 'boolean)
 
@@ -229,7 +237,7 @@ This item will replace the \"More...\" item."
                                 "22.1")
 
 (defcustom recentf-auto-cleanup 'mode
-  "*Define when to automatically cleanup the recent list.
+  "Define when to automatically cleanup the recent list.
 The following values can be set:
 
 - `mode'
@@ -262,13 +270,13 @@ cleanup the list."
            (recentf-auto-cleanup))))
 
 (defcustom recentf-initialize-file-name-history t
-  "*Non-nil means to initialize `file-name-history' with the recent list.
+  "Non-nil means to initialize `file-name-history' with the recent list.
 If `file-name-history' is not empty, do nothing."
   :group 'recentf
   :type  'boolean)
 
 (defcustom recentf-load-hook nil
-   "*Normal hook run at end of loading the `recentf' package."
+   "Normal hook run at end of loading the `recentf' package."
   :group 'recentf
   :type 'hook)
 
@@ -769,7 +777,7 @@ Filenames are relative to the `default-directory'."
     ("Java files (%d)"  ".\\.java\\'")
     ("C/C++ files (%d)" "c\\(pp\\)?\\'")
     )
-  "*List of rules used by `recentf-arrange-by-rule' to build sub-menus.
+  "List of rules used by `recentf-arrange-by-rule' to build sub-menus.
 A rule is a pair (SUB-MENU-TITLE . MATCHER).  SUB-MENU-TITLE is the
 displayed title of the sub-menu where a '%d' `format' pattern is
 replaced by the number of items in the sub-menu.  MATCHER is a regexp
@@ -785,7 +793,7 @@ may have been modified to match another rule."
                        (repeat regexp))))
 
 (defcustom recentf-arrange-by-rule-others "Other files (%d)"
-  "*Title of the `recentf-arrange-by-rule' sub-menu.
+  "Title of the `recentf-arrange-by-rule' sub-menu.
 This is for the menu where items that don't match any
 `recentf-arrange-rules' are displayed.  If nil these items are
 displayed in the main recent files menu.  A '%d' `format' pattern in
@@ -795,7 +803,7 @@ the title is replaced by the number of items in the sub-menu."
                  (string :tag "Title")))
 
 (defcustom recentf-arrange-by-rules-min-items 0
-  "*Minimum number of items in a `recentf-arrange-by-rule' sub-menu.
+  "Minimum number of items in a `recentf-arrange-by-rule' sub-menu.
 If the number of items in a sub-menu is less than this value the
 corresponding sub-menu items are displayed in the main recent files
 menu or in the `recentf-arrange-by-rule-others' sub-menu if
@@ -804,7 +812,7 @@ defined."
   :type 'number)
 
 (defcustom recentf-arrange-by-rule-subfilter nil
-  "*Function called by a rule based filter to filter sub-menu elements.
+  "Function called by a rule based filter to filter sub-menu elements.
 A nil value means no filter.  See also `recentf-menu-filter'.
 You can't use another rule based filter here."
   :group 'recentf-filters
@@ -958,7 +966,7 @@ duplicates.  It is used by `recentf-arrange-by-dir' as its
     (recentf-arrange-by-dir  . "Grouped by Directory")
     (recentf-arrange-by-rule . "Grouped by Custom Rules")
     )
-  "*List of filters managed by `recentf-filter-changer'.
+  "List of filters managed by `recentf-filter-changer'.
 Each filter is defined by a pair (FUNCTION . LABEL), where FUNCTION is
 the filter function, and LABEL is the menu item displayed to select
 that filter."
@@ -1272,9 +1280,9 @@ Write data into the file specified by `recentf-save-file'."
         (insert (format recentf-save-file-header (current-time-string)))
         (recentf-dump-variable 'recentf-list recentf-max-saved-items)
         (recentf-dump-variable 'recentf-filter-changer-current)
-        (insert "\n\f\n;;; Local Variables:\n"
-                (format ";;; coding: %s\n" recentf-save-file-coding-system)
-                ";;; End:\n")
+        (insert "\n\f\n;; Local Variables:\n"
+                (format ";; coding: %s\n" recentf-save-file-coding-system)
+                ";; End:\n")
         (write-file (expand-file-name recentf-save-file))
         (when recentf-save-file-modes
           (set-file-modes recentf-save-file recentf-save-file-modes))
index 8d8d9fc7af5368f7fdc40d8a5667220ddd25b9c4..5fe8ad43d229b8f63f814266f6fe151e7b5c8824 100644 (file)
@@ -1408,38 +1408,36 @@ make, or the user didn't cancel the call."
   (or map (setq map query-replace-map))
   (and query-flag minibuffer-auto-raise
        (raise-frame (window-frame (minibuffer-window))))
-  (let ((nocasify (not (and case-fold-search case-replace
-                           (string-equal from-string
-                                         (downcase from-string)))))
-       (case-fold-search (and case-fold-search
-                              (string-equal from-string
-                                            (downcase from-string))))
-       (literal (or (not regexp-flag) (eq regexp-flag 'literal)))
-       (search-function (if regexp-flag 're-search-forward 'search-forward))
-       (search-string from-string)
-       (real-match-data nil)           ; the match data for the current match
-       (next-replacement nil)
-       ;; This is non-nil if we know there is nothing for the user
-       ;; to edit in the replacement.
-       (noedit nil)
-       (keep-going t)
-       (stack nil)
-       (replace-count 0)
-       (nonempty-match nil)
-
-       ;; If non-nil, it is marker saying where in the buffer to stop.
-       (limit nil)
-
-       ;; Data for the next match.  If a cons, it has the same format as
-       ;; (match-data); otherwise it is t if a match is possible at point.
-       (match-again t)
-
-       (message
-        (if query-flag
-            (apply 'propertize
-                   (substitute-command-keys
-                    "Query replacing %s with %s: (\\<query-replace-map>\\[help] for help) ")
-                   minibuffer-prompt-properties))))
+  (let* ((case-fold-search
+          (and case-fold-search
+               (isearch-no-upper-case-p from-string regexp-flag)))
+         (nocasify (not (and case-replace case-fold-search)))
+         (literal (or (not regexp-flag) (eq regexp-flag 'literal)))
+         (search-function (if regexp-flag 're-search-forward 'search-forward))
+         (search-string from-string)
+         (real-match-data nil)       ; The match data for the current match.
+         (next-replacement nil)
+         ;; This is non-nil if we know there is nothing for the user
+         ;; to edit in the replacement.
+         (noedit nil)
+         (keep-going t)
+         (stack nil)
+         (replace-count 0)
+         (nonempty-match nil)
+
+         ;; If non-nil, it is marker saying where in the buffer to stop.
+         (limit nil)
+
+         ;; Data for the next match.  If a cons, it has the same format as
+         ;; (match-data); otherwise it is t if a match is possible at point.
+         (match-again t)
+
+         (message
+          (if query-flag
+              (apply 'propertize
+                     (substitute-command-keys
+                      "Query replacing %s with %s: (\\<query-replace-map>\\[help] for help) ")
+                     minibuffer-prompt-properties))))
 
     ;; If region is active, in Transient Mark mode, operate on region.
     (when start
index daa66118b38e29c4910bddd91b9b2b98c17b725d..ced5ed3f36870940a6ea6d2ec590ad6be6204f2e 100644 (file)
@@ -119,6 +119,12 @@ system, `file-name-shadow-properties' is used instead."
   :group 'minibuffer
   :version "22.1")
 
+(defvar rfn-eshadow-setup-minibuffer-hook nil
+  "Minibuffer setup functions from other packages.")
+
+(defvar rfn-eshadow-update-overlay-hook nil
+  "Customer overlay functions from other packages")
+
 \f
 ;;; Internal variables
 
@@ -153,7 +159,9 @@ The prompt and initial input should already have been inserted."
     (overlay-put rfn-eshadow-overlay 'evaporate t)
     ;; Add our post-command hook, and make sure can remove it later.
     (add-to-list 'rfn-eshadow-frobbed-minibufs (current-buffer))
-    (add-hook 'post-command-hook #'rfn-eshadow-update-overlay nil t)))
+    (add-hook 'post-command-hook #'rfn-eshadow-update-overlay nil t)
+    ;; Run custom hook
+    (run-hooks 'rfn-eshadow-setup-minibuffer-hook)))
 
 (defsubst rfn-eshadow-sifn-equal (goal pos)
   (equal goal (condition-case nil
@@ -193,7 +201,9 @@ been set up by `rfn-eshadow-setup-minibuffer'."
             (if (rfn-eshadow-sifn-equal goal mid)
                 (setq start mid)
               (setq end mid)))
-          (move-overlay rfn-eshadow-overlay (minibuffer-prompt-end) start)))
+          (move-overlay rfn-eshadow-overlay (minibuffer-prompt-end) start))
+       ;; Run custom hook
+       (run-hooks 'rfn-eshadow-update-overlay-hook))
     ;; `substitute-in-file-name' can fail on partial input.
     (error nil)))
 \f
index 83b46e5e04fd4b6fed441727b138d5c5ed4f8d58..0b531b37f2bb876abaa0638548e0ca6d4bb6cea8 100644 (file)
@@ -101,8 +101,8 @@ minibuffer histories, such as `compile-command' or `kill-ring'."
   (cond
    ;; Backward compatibility with previous versions of savehist.
    ((file-exists-p "~/.emacs-history") "~/.emacs-history")
-   ((and (not (featurep 'xemacs)) (file-directory-p "~/.emacs.d/"))
-    "~/.emacs.d/history")
+   ((and (not (featurep 'xemacs)) (file-directory-p user-emacs-directory))
+    (concat user-emacs-directory "history"))
    ((and (featurep 'xemacs) (file-directory-p "~/.xemacs/"))
     "~/.xemacs/history")
    ;; For users without `~/.emacs.d/' or `~/.xemacs/'.
index 770e01ccbca930cbdcd2028b16faa7f16c7ec9da..0a373058f667d48a2ddba213c06a5e714eb20003 100644 (file)
@@ -92,21 +92,8 @@ This is nil while loading `scroll-bar.el', and t afterward.")
   (setq scroll-bar-mode value)
 
   (when scroll-bar-mode-explicit
-    ;; Apply it to default-frame-alist.
-    (let ((parameter (assq 'vertical-scroll-bars default-frame-alist)))
-      (if (consp parameter)
-         (setcdr parameter scroll-bar-mode)
-       (setq default-frame-alist
-             (cons (cons 'vertical-scroll-bars scroll-bar-mode)
-                   default-frame-alist))))
-
-    ;; Apply it to existing frames.
-    (let ((frames (frame-list)))
-      (while frames
-       (modify-frame-parameters
-        (car frames)
-        (list (cons 'vertical-scroll-bars scroll-bar-mode)))
-       (setq frames (cdr frames))))))
+    (modify-all-frames-parameters (list (cons 'vertical-scroll-bars
+                                             scroll-bar-mode)))))
 
 (defcustom scroll-bar-mode default-frame-scroll-bars
   "*Specify whether to have vertical scroll bars, and on which side.
index 8eb9dbb685e9818a50821d04eaf8a37e46df1f3c..22b947ea9f8bbb6cf415af6a53827c2c9e6c40ef 100644 (file)
@@ -8,6 +8,7 @@
 ;; Keywords: processes
 
 ;; Changes by peck@sun.com and by rms.
+;; Overhaul by Karoly Lorentey <lorentey@elte.hu> for multi-tty support.
 
 ;; This file is part of GNU Emacs.
 
@@ -41,7 +42,7 @@
 ;; This program transmits the file names to Emacs through
 ;; the server subprocess, and Emacs visits them and lets you edit them.
 
-;; Note that any number of clients may dispatch files to emacs to be edited.
+;; Note that any number of clients may dispatch files to Emacs to be edited.
 
 ;; When you finish editing a Server buffer, again call server-edit
 ;; to mark that buffer as done for the client and switch to the next
 ;; The global variable "server-clients" lists all the waiting clients,
 ;; and which files are yet to be edited for each.
 
+;; Todo:
+
+;; - handle command-line-args-left.
+;; - move most of the args processing and decision making from emacsclient.c
+;;   to here.
+;; - fix up handling of the client's environment (place it in the terminal?).
+
 ;;; Code:
 
 (eval-when-compile (require 'cl))
@@ -105,7 +113,7 @@ If set, the server accepts remote connections; otherwise it is local."
   :version "22.1")
 (put 'server-host 'risky-local-variable t)
 
-(defcustom server-auth-dir "~/.emacs.d/server/"
+(defcustom server-auth-dir (concat user-emacs-directory "server/")
   "Directory for server authentication files."
   :group 'server
   :type 'directory
@@ -138,12 +146,10 @@ If set, the server accepts remote connections; otherwise it is local."
 
 (defvar server-clients nil
   "List of current server clients.
-Each element is (CLIENTID BUFFERS...) where CLIENTID is a string
-that can be given to the server process to identify a client.
-When a buffer is marked as \"done\", it is removed from this list.")
+Each element is a process.")
 
 (defvar server-buffer-clients nil
-  "List of client ids for clients requesting editing of current buffer.")
+  "List of client processes requesting editing of current buffer.")
 (make-variable-buffer-local 'server-buffer-clients)
 ;; Changing major modes should not erase this local.
 (put 'server-buffer-clients 'permanent-local t)
@@ -198,34 +204,111 @@ are done with it in the server.")
 
 (defvar server-name "server")
 
-(defvar server-socket-dir
-  (format "/tmp/emacs%d" (user-uid)))
+(defvar server-socket-dir nil
+  "The directory in which to place the server socket.
+Initialized by `server-start'.")
+
+(defun server-clients-with (property value)
+  "Return a list of clients with PROPERTY set to VALUE."
+  (let (result)
+    (dolist (proc server-clients result)
+      (when (equal value (process-get proc property))
+       (push proc result)))))
+
+(defun server-add-client (proc)
+  "Create a client for process PROC, if it doesn't already have one.
+New clients have no properties."
+  (add-to-list 'server-clients proc))
+
+(defmacro server-with-environment (env vars &rest body)
+  "Evaluate BODY with environment variables VARS set to those in ENV.
+The environment variables are then restored to their previous values.
+
+VARS should be a list of strings.
+ENV should be in the same format as `process-environment'."
+  (declare (indent 2))
+  (let ((var (make-symbol "var"))
+       (value (make-symbol "value")))
+    `(let ((process-environment process-environment))
+       (dolist (,var ,vars)
+         (let ((,value (getenv-internal ,var ,env)))
+           (push (if (null ,value)
+                     ,var
+                   (concat ,var "=" ,value))
+                 process-environment)))
+       (progn ,@body))))
+
+(defun server-delete-client (proc &optional noframe)
+  "Delete CLIENT, including its buffers, terminals and frames.
+If NOFRAME is non-nil, let the frames live.  (To be used from
+`delete-frame-functions'.)"
+  (server-log (concat "server-delete-client" (if noframe " noframe"))
+             proc)
+  ;; Force a new lookup of client (prevents infinite recursion).
+  (when (memq proc server-clients)
+    (let ((buffers (process-get proc 'buffers)))
+
+      ;; Kill the client's buffers.
+      (dolist (buf buffers)
+       (when (buffer-live-p buf)
+         (with-current-buffer buf
+           ;; Kill the buffer if necessary.
+           (when (and (equal server-buffer-clients
+                             (list proc))
+                      (or (and server-kill-new-buffers
+                               (not server-existing-buffer))
+                          (server-temp-file-p))
+                      (not (buffer-modified-p)))
+             (let (flag)
+               (unwind-protect
+                   (progn (setq server-buffer-clients nil)
+                          (kill-buffer (current-buffer))
+                          (setq flag t))
+                 (unless flag
+                   ;; Restore clients if user pressed C-g in `kill-buffer'.
+                   (setq server-buffer-clients (list proc)))))))))
+
+      ;; Delete the client's frames.
+      (unless noframe
+       (dolist (frame (frame-list))
+         (when (and (frame-live-p frame)
+                    (equal proc (frame-parameter frame 'client)))
+           ;; Prevent `server-handle-delete-frame' from calling us
+           ;; recursively.
+           (set-frame-parameter frame 'client nil)
+           (delete-frame frame))))
+
+      (setq server-clients (delq proc server-clients))
+
+      ;; Delete the client's tty.
+      (let ((terminal (process-get proc 'terminal)))
+       ;; Only delete the terminal if it is non-nil.
+       (when (and terminal (eq (terminal-live-p terminal) t))
+         (delete-terminal terminal)))
+
+      ;; Delete the client's process.
+      (if (eq (process-status proc) 'open)
+         (delete-process proc))
+
+      (server-log "Deleted" proc))))
 
 (defun server-log (string &optional client)
-  "If a *server* buffer exists, write STRING to it for logging purposes."
+  "If a *server* buffer exists, write STRING to it for logging purposes.
+If CLIENT is non-nil, add a description of it to the logged
+message."
   (when (get-buffer "*server*")
     (with-current-buffer "*server*"
       (goto-char (point-max))
       (insert (current-time-string)
-             (if client (format " %s:" client) " ")
+             (cond
+              ((null client) " ")
+              ((listp client) (format " %s: " (car client)))
+              (t (format " %s: " client)))
              string)
       (or (bolp) (newline)))))
 
 (defun server-sentinel (proc msg)
-  (let ((client (assq proc server-clients)))
-    ;; Remove PROC from the list of clients.
-    (when client
-      (setq server-clients (delq client server-clients))
-      (dolist (buf (cdr client))
-       (with-current-buffer buf
-         ;; Remove PROC from the clients of each buffer.
-         (setq server-buffer-clients (delq proc server-buffer-clients))
-         ;; Kill the buffer if necessary.
-         (when (and (null server-buffer-clients)
-                    (or (and server-kill-new-buffers
-                             (not server-existing-buffer))
-                        (server-temp-file-p)))
-           (kill-buffer (current-buffer)))))))
+  "The process sentinel for Emacs server connections."
   ;; If this is a new client process, set the query-on-exit flag to nil
   ;; for this process (it isn't inherited from the server process).
   (when (and (eq (process-status proc) 'open)
@@ -237,7 +320,8 @@ are done with it in the server.")
   ;; (and (process-contact proc :server)
   ;;      (eq (process-status proc) 'closed)
   ;;      (ignore-errors (delete-file (process-get proc :server-file))))
-  (server-log (format "Status changed to %s" (process-status proc)) proc))
+  (server-log (format "Status changed to %s: %s" (process-status proc) msg) proc)
+  (server-delete-client proc))
 
 (defun server-select-display (display)
   ;; If the current frame is on `display' we're all set.
@@ -259,25 +343,52 @@ are done with it in the server.")
                        ;; unobtrusive as possible.
                        (visibility . nil)))))
         (select-frame frame)
-        (set-window-buffer (selected-window) buffer)))))
+        (set-window-buffer (selected-window) buffer)
+        frame))))
 
 (defun server-unselect-display (frame)
-  ;; If the temporary frame is in use (displays something real), make it
-  ;; visible.  If not (which can happen if the user's customizations call
-  ;; pop-to-buffer etc.), delete it to avoid preserving the connection after
-  ;; the last real frame is deleted.
-  (if (and (eq (frame-first-window frame)
-               (next-window (frame-first-window frame) 'nomini))
-           (eq (window-buffer (frame-first-window frame))
-               (frame-parameter frame 'server-dummy-buffer)))
-      ;; The temp frame still only shows one buffer, and that is the
-      ;; internal temp buffer.
-      (delete-frame frame)
-    (set-frame-parameter frame 'visibility t))
-  (kill-buffer (frame-parameter frame 'server-dummy-buffer))
-  (set-frame-parameter frame 'server-dummy-buffer nil))
+  (when (frame-live-p frame)
+    ;; If the temporary frame is in use (displays something real), make it
+    ;; visible.  If not (which can happen if the user's customizations call
+    ;; pop-to-buffer etc.), delete it to avoid preserving the connection after
+    ;; the last real frame is deleted.
+    (if (and (eq (frame-first-window frame)
+                 (next-window (frame-first-window frame) 'nomini))
+             (eq (window-buffer (frame-first-window frame))
+                 (frame-parameter frame 'server-dummy-buffer)))
+        ;; The temp frame still only shows one buffer, and that is the
+        ;; internal temp buffer.
+        (delete-frame frame)
+      (set-frame-parameter frame 'visibility t))
+    (kill-buffer (frame-parameter frame 'server-dummy-buffer))
+    (set-frame-parameter frame 'server-dummy-buffer nil)))
+
+(defun server-handle-delete-frame (frame)
+  "Delete the client connection when the emacsclient frame is deleted."
+  (let ((proc (frame-parameter frame 'client)))
+    (when (and (frame-live-p frame)
+              proc
+              ;; See if this is the last frame for this client.
+              (>= 1 (let ((frame-num 0))
+                     (dolist (f (frame-list))
+                       (when (eq proc (frame-parameter f 'client))
+                         (setq frame-num (1+ frame-num))))
+                     frame-num)))
+      (server-log (format "server-handle-delete-frame, frame %s" frame) proc)
+      (server-delete-client proc 'noframe)))) ; Let delete-frame delete the frame later.
+
+(defun server-handle-suspend-tty (terminal)
+  "Notify the emacsclient process to suspend itself when its tty device is suspended."
+  (dolist (proc (server-clients-with 'terminal terminal))
+    (server-log (format "server-handle-suspend-tty, terminal %s" terminal) proc)
+    (condition-case err
+       (server-send-string proc "-suspend \n")
+      (file-error                       ;The pipe/socket was closed.
+       (ignore-errors (server-delete-client proc))))))
 
 (defun server-unquote-arg (arg)
+  "Remove &-quotation from ARG.
+See `server-quote-arg' and `server-process-filter'."
   (replace-regexp-in-string
    "&." (lambda (s)
          (case (aref s 1)
@@ -287,6 +398,26 @@ are done with it in the server.")
            (t " ")))
    arg t t))
 
+(defun server-quote-arg (arg)
+  "In ARG, insert a & before each &, each space, each newline, and -.
+Change spaces to underscores, too, so that the return value never
+contains a space.
+
+See `server-unquote-arg' and `server-process-filter'."
+  (replace-regexp-in-string
+   "[-&\n ]" (lambda (s)
+              (case (aref s 0)
+                (?& "&&")
+                (?- "&-")
+                (?\n "&n")
+                (?\s "&_")))
+   arg t t))
+
+(defun server-send-string (proc string)
+  "A wrapper around `proc-send-string' for logging."
+  (server-log (concat "Sent " string) proc)
+  (process-send-string proc string))
+
 (defun server-ensure-safe-dir (dir)
   "Make sure DIR is a directory with no race-condition issues.
 Creates the directory if necessary and makes sure:
@@ -308,68 +439,100 @@ Creates the directory if necessary and makes sure:
 (defun server-start (&optional leave-dead)
   "Allow this Emacs process to be a server for client processes.
 This starts a server communications subprocess through which
-client \"editors\" can send your editing commands to this Emacs job.
-To use the server, set up the program `emacsclient' in the
+client \"editors\" can send your editing commands to this Emacs
+job.  To use the server, set up the program `emacsclient' in the
 Emacs distribution as your standard \"editor\".
 
 Optional argument LEAVE-DEAD (interactively, a prefix arg) means just
 kill any existing server communications subprocess."
   (interactive "P")
-  (when server-process
-    ;; kill it dead!
-    (ignore-errors (delete-process server-process)))
-  ;; If this Emacs already had a server, clear out associated status.
-  (while server-clients
-    (let ((buffer (nth 1 (car server-clients))))
-      (server-buffer-done buffer)))
-  ;; Now any previous server is properly stopped.
-  (unless leave-dead
-    (let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir))
-           (server-file (expand-file-name server-name server-dir)))
-      ;; Make sure there is a safe directory in which to place the socket.
-      (server-ensure-safe-dir server-dir)
-      ;; Remove any leftover socket or authentication file.
-      (ignore-errors (delete-file server-file))
-      (when server-process
-        (server-log (message "Restarting server")))
-      (letf (((default-file-modes) ?\700))
-        (setq server-process
-              (apply #'make-network-process
-                     :name server-name
-                     :server t
-                     :noquery t
-                     :sentinel 'server-sentinel
-                     :filter 'server-process-filter
-                     ;; We must receive file names without being decoded.
-                     ;; Those are decoded by server-process-filter according
-                     ;; to file-name-coding-system.
-                     :coding 'raw-text
-                     ;; The rest of the args depends on the kind of socket used.
-                     (if server-use-tcp
-                         (list :family nil
-                               :service t
-                               :host (or server-host 'local)
-                               :plist '(:authenticated nil))
-                       (list :family 'local
-                             :service server-file
-                             :plist '(:authenticated t)))))
-        (unless server-process (error "Could not start server process"))
-        (when server-use-tcp
-          (let ((auth-key
-                 (loop
-                    ;; The auth key is a 64-byte string of random chars in the
-                    ;; range `!'..`~'.
-                    for i below 64
-                    collect (+ 33 (random 94)) into auth
-                    finally return (concat auth))))
-            (process-put server-process :auth-key auth-key)
-            (with-temp-file server-file
-              (set-buffer-multibyte nil)
-              (setq buffer-file-coding-system 'no-conversion)
-              (insert (format-network-address
-                       (process-contact server-process :local))
-                      " " (int-to-string (emacs-pid))
-                      "\n" auth-key))))))))
+  (when (or
+        (not server-clients)
+        (yes-or-no-p
+         "The current server still has clients; delete them? "))
+    ;; It is safe to get the user id now.
+    (setq server-socket-dir (or server-socket-dir
+                               (format "/tmp/emacs%d" (user-uid))))
+    (when server-process
+      ;; kill it dead!
+      (ignore-errors (delete-process server-process)))
+    ;; Delete the socket files made by previous server invocations.
+    (condition-case ()
+       (delete-file (expand-file-name server-name server-socket-dir))
+      (error nil))
+    ;; If this Emacs already had a server, clear out associated status.
+    (while server-clients
+      (server-delete-client (car server-clients)))
+    ;; Now any previous server is properly stopped.
+    (if leave-dead
+       (progn
+         (server-log (message "Server stopped"))
+         (setq server-process nil))
+      (let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir))
+            (server-file (expand-file-name server-name server-dir)))
+       ;; Make sure there is a safe directory in which to place the socket.
+       (server-ensure-safe-dir server-dir)
+       ;; Remove any leftover socket or authentication file.
+       (ignore-errors (delete-file server-file))
+       (when server-process
+         (server-log (message "Restarting server")))
+       (letf (((default-file-modes) ?\700))
+         (add-hook 'suspend-tty-functions 'server-handle-suspend-tty)
+         (add-hook 'delete-frame-functions 'server-handle-delete-frame)
+         (add-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)
+         (add-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function)
+         (setq server-process
+               (apply #'make-network-process
+                      :name server-name
+                      :server t
+                      :noquery t
+                      :sentinel 'server-sentinel
+                      :filter 'server-process-filter
+                      ;; We must receive file names without being decoded.
+                      ;; Those are decoded by server-process-filter according
+                      ;; to file-name-coding-system.
+                      :coding 'raw-text
+                      ;; The rest of the args depends on the kind of socket used.
+                      (if server-use-tcp
+                          (list :family nil
+                                :service t
+                                :host (or server-host 'local)
+                                :plist '(:authenticated nil))
+                        (list :family 'local
+                              :service server-file
+                              :plist '(:authenticated t)))))
+         (unless server-process (error "Could not start server process"))
+         (when server-use-tcp
+           (let ((auth-key
+                  (loop
+                   ;; The auth key is a 64-byte string of random chars in the
+                   ;; range `!'..`~'.
+                   for i below 64
+                   collect (+ 33 (random 94)) into auth
+                   finally return (concat auth))))
+             (process-put server-process :auth-key auth-key)
+             (with-temp-file server-file
+               (set-buffer-multibyte nil)
+               (setq buffer-file-coding-system 'no-conversion)
+               (insert (format-network-address
+                        (process-contact server-process :local))
+                       " " (int-to-string (emacs-pid))
+                       "\n" auth-key)))))))))
+
+(defun server-running-p (&optional name)
+  "Test whether server NAME is running."
+  (interactive
+   (list (if current-prefix-arg
+            (read-string "Server name: " nil nil server-name))))
+  (unless name (setq name server-name))
+  (condition-case nil
+      (progn
+       (delete-process
+        (make-network-process
+         :name "server-client-test" :family 'local :server nil :noquery t
+         :service (expand-file-name name server-socket-dir)))
+       t)
+    (file-error nil)))
 
 ;;;###autoload
 (define-minor-mode server-mode
@@ -384,143 +547,471 @@ Server mode runs a process that accepts commands from the
   ;; nothing if there is one (for multiple Emacs sessions)?
   (server-start (not server-mode)))
 \f
+(defun server-eval-and-print (expr proc)
+  "Eval EXPR and send the result back to client PROC."
+  (let ((v (eval (car (read-from-string expr)))))
+    (when (and v proc)
+      (with-temp-buffer
+        (let ((standard-output (current-buffer)))
+          (pp v)
+          (let ((text (buffer-substring-no-properties
+                       (point-min) (point-max))))
+            (server-send-string
+             proc (format "-print %s\n"
+                          (server-quote-arg text)))))))))
+
+(defun server-create-tty-frame (tty type proc)
+  (add-to-list 'frame-inherited-parameters 'client)
+  (let ((frame
+         (server-with-environment (process-get proc 'env)
+             '("LANG" "LC_CTYPE" "LC_ALL"
+               ;; For tgetent(3); list according to ncurses(3).
+               "BAUDRATE" "COLUMNS" "ESCDELAY" "HOME" "LINES"
+               "NCURSES_ASSUMED_COLORS" "NCURSES_NO_PADDING"
+               "NCURSES_NO_SETBUF" "TERM" "TERMCAP" "TERMINFO"
+               "TERMINFO_DIRS" "TERMPATH" 
+               ;; rxvt wants these
+               "COLORFGBG" "COLORTERM")
+           (make-frame-on-tty tty type
+                              ;; Ignore nowait here; we always need to
+                              ;; clean up opened ttys when the client dies.
+                              `((client . ,proc)
+                                ;; This is a leftover from an earlier
+                                ;; attempt at making it possible for process
+                                ;; run in the server process to use the
+                                ;; environment of the client process.
+                                ;; It has no effect now and to make it work
+                                ;; we'd need to decide how to make
+                                ;; process-environment interact with client
+                                ;; envvars, and then to change the
+                                ;; C functions `child_setup' and
+                                ;; `getenv_internal' accordingly.
+                                (environment . ,(process-get proc 'env)))))))
+  
+    ;; ttys don't use the `display' parameter, but callproc.c does to set
+    ;; the DISPLAY environment on subprocesses.
+    (set-frame-parameter frame 'display
+                         (getenv-internal "DISPLAY" (process-get proc 'env)))
+    (select-frame frame)
+    (process-put proc 'frame frame)
+    (process-put proc 'terminal (frame-terminal frame))
+
+    ;; Display *scratch* by default.
+    (switch-to-buffer (get-buffer-create "*scratch*") 'norecord)
+
+    ;; Reply with our pid.
+    (server-send-string proc (concat "-emacs-pid "
+                                     (number-to-string (emacs-pid)) "\n"))
+    frame))
+
+(defun server-create-window-system-frame (display nowait proc)
+  (add-to-list 'frame-inherited-parameters 'client)
+  (if (not (fboundp 'make-frame-on-display))
+      (progn
+        ;; This emacs does not support X.
+        (server-log "Window system unsupported" proc)
+        (server-send-string proc "-window-system-unsupported \n")
+        nil)
+    ;; Flag frame as client-created, but use a dummy client.
+    ;; This will prevent the frame from being deleted when
+    ;; emacsclient quits while also preventing
+    ;; `server-save-buffers-kill-terminal' from unexpectedly
+    ;; killing emacs on that frame.
+    (let* ((params `((client . ,(if nowait 'nowait proc))
+                     ;; This is a leftover, see above.
+                     (environment . ,(process-get proc 'env))))
+           (frame (make-frame-on-display
+                   (or display
+                       (frame-parameter nil 'display)
+                       (getenv "DISPLAY")
+                       (error "Please specify display"))
+                   params)))
+      (server-log (format "%s created" frame) proc)
+      ;; XXX We need to ensure the parameters are really set because Emacs
+      ;; forgets unhandled initialization parameters for X frames at
+      ;; the moment.
+      (modify-frame-parameters frame params)
+      (select-frame frame)
+      (process-put proc 'frame frame)
+      (process-put proc 'terminal (frame-terminal frame))
+
+      ;; Display *scratch* by default.
+      (switch-to-buffer (get-buffer-create "*scratch*") 'norecord)
+      frame)))
+
+
+(defun server-goto-toplevel (proc)
+  (condition-case nil
+      ;; If we're running isearch, we must abort it to allow Emacs to
+      ;; display the buffer and switch to it.
+      (dolist (buffer (buffer-list))
+        (with-current-buffer buffer
+          (when (bound-and-true-p isearch-mode)
+            (isearch-cancel))))
+    ;; Signaled by isearch-cancel.
+    (quit (message nil)))
+  (when (> (recursion-depth) 0)
+    ;; We're inside a minibuffer already, so if the emacs-client is trying
+    ;; to open a frame on a new display, we might end up with an unusable
+    ;; frame because input from that display will be blocked (until exiting
+    ;; the minibuffer).  Better exit this minibuffer right away.
+    ;; Similarly with recursive-edits such as the splash screen.
+    (run-with-timer 0 nil (lexical-let ((proc proc))
+                           (lambda () (server-execute-continuation proc))))
+    (top-level)))
+
+;; We use various special properties on process objects:
+;; - `env' stores the info about the environment of the emacsclient process.
+;; - `continuation' is a no-arg function that we need to execute.  It contains
+;;   commands we wanted to execute in some earlier invocation of the process
+;;   filter but that we somehow were unable to process at that time
+;;   (e.g. because we first need to throw to the toplevel).
+
+(defun server-execute-continuation (proc)
+  (let ((continuation (process-get proc 'continuation)))
+    (process-put proc 'continuation nil)
+    (if continuation (ignore-errors (funcall continuation)))))
+
 (defun* server-process-filter (proc string)
   "Process a request from the server to edit some files.
-PROC is the server process.  Format of STRING is \"PATH PATH PATH... \\n\"."
+PROC is the server process.  STRING consists of a sequence of
+commands prefixed by a dash.  Some commands have arguments; these
+are &-quoted and need to be decoded by `server-unquote-arg'.  The
+filter parses and executes these commands.
+
+To illustrate the protocol, here is an example command that
+emacsclient sends to create a new X frame (note that the whole
+sequence is sent on a single line):
+
+       -env HOME /home/lorentey
+       -env DISPLAY :0.0
+       ... lots of other -env commands
+       -display :0.0
+       -window-system
+
+The following commands are accepted by the server:
+
+`-auth AUTH-STRING'
+  Authenticate the client using the secret authentication string
+  AUTH-STRING.
+
+`-env NAME=VALUE'
+  An environment variable on the client side.
+
+`-dir DIRNAME'
+  The current working directory of the client process.
+
+`-current-frame'
+  Forbid the creation of new frames.
+
+`-nowait'
+  Request that the next frame created should not be
+  associated with this client.
+
+`-display DISPLAY'
+  Set the display name to open X frames on.
+
+`-position LINE[:COLUMN]'
+  Go to the given line and column number
+  in the next file opened.
+
+`-file FILENAME'
+  Load the given file in the current frame.
+
+`-eval EXPR'
+  Evaluate EXPR as a Lisp expression and return the
+  result in -print commands.
+
+`-window-system'
+  Open a new X frame.
+
+`-tty DEVICENAME TYPE'
+  Open a new tty frame at the client.
+
+`-suspend'
+  Suspend this tty frame.  The client sends this string in
+  response to SIGTSTP and SIGTTOU.  The server must cease all I/O
+  on this tty until it gets a -resume command.
+
+`-resume'
+  Resume this tty frame. The client sends this string when it
+  gets the SIGCONT signal and it is the foreground process on its
+  controlling tty.
+
+`-ignore COMMENT'
+  Do nothing, but put the comment in the server
+  log.  Useful for debugging.
+
+
+The following commands are accepted by the client:
+
+`-emacs-pid PID'
+  Describes the process id of the Emacs process;
+  used to forward window change signals to it.
+
+`-window-system-unsupported'
+  Signals that the server does not
+  support creating X frames; the client must try again with a tty
+  frame.
+
+`-print STRING'
+  Print STRING on stdout.  Used to send values
+  returned by -eval.
+
+`-error DESCRIPTION'
+  Signal an error (but continue processing).
+
+`-suspend'
+  Suspend this terminal, i.e., stop the client process.  Sent
+  when the user presses C-z."
+  (server-log (concat "Received " string) proc)
   ;; First things first: let's check the authentication
   (unless (process-get proc :authenticated)
     (if (and (string-match "-auth \\(.*?\\)\n" string)
-             (equal (match-string 1 string) (process-get proc :auth-key)))
-        (progn
-          (setq string (substring string (match-end 0)))
-          (process-put proc :authenticated t)
-          (server-log "Authentication successful" proc))
+            (equal (match-string 1 string) (process-get proc :auth-key)))
+       (progn
+         (setq string (substring string (match-end 0)))
+         (process-put proc :authenticated t)
+         (server-log "Authentication successful" proc))
       (server-log "Authentication failed" proc)
-      (process-send-string proc "Authentication failed")
+      (server-send-string
+       proc (concat "-error " (server-quote-arg "Authentication failed")))
       (delete-process proc)
       ;; We return immediately
       (return-from server-process-filter)))
-  (server-log string proc)
-  (let ((prev (process-get proc :previous-string)))
+  (let ((prev (process-get proc 'previous-string)))
     (when prev
       (setq string (concat prev string))
-      (process-put proc :previous-string nil)))
-  (when (> (recursion-depth) 0)
-    ;; We're inside a minibuffer already, so if the emacs-client is trying
-    ;; to open a frame on a new display, we might end up with an unusable
-    ;; frame because input from that display will be blocked (until exiting
-    ;; the minibuffer).  Better exit this minibuffer right away.
-    ;; Similarly with recursive-edits such as the splash screen.
-    (process-put proc :previous-string string)
-    (run-with-timer 0 nil (lexical-let ((proc proc))
-                            (lambda () (server-process-filter proc ""))))
-    (top-level))
-  (condition-case nil
-      ;; If we're running isearch, we must abort it to allow Emacs to
-      ;; display the buffer and switch to it.
-      (mapc #'(lambda (buffer)
-               (with-current-buffer buffer
-                 (when (bound-and-true-p isearch-mode)
-                   (isearch-cancel))))
-           (buffer-list))
-    ;; Signaled by isearch-cancel
-    (quit (message nil)))
-  ;; If the input is multiple lines,
-  ;; process each line individually.
-  (while (string-match "\n" string)
-    (let ((request (substring string 0 (match-beginning 0)))
-         (coding-system (and default-enable-multibyte-characters
-                             (or file-name-coding-system
-                                 default-file-name-coding-system)))
-         client nowait eval
-         (files nil)
-         (lineno 1)
-         (tmp-frame nil) ;; Sometimes used to embody the selected display.
-         (columnno 0))
-      ;; Remove this line from STRING.
-      (setq string (substring string (match-end 0)))
-      (setq client (cons proc nil))
-      (while (string-match "[^ ]* " request)
-       (let ((arg (substring request (match-beginning 0) (1- (match-end 0)))))
-         (setq request (substring request (match-end 0)))
-         (cond
-            ((equal "-nowait" arg) (setq nowait t))
-            ((equal "-eval" arg) (setq eval t))
-            ((and (equal "-display" arg) (string-match "\\([^ ]*\\) " request))
-             (let ((display (server-unquote-arg (match-string 1 request))))
-               (setq request (substring request (match-end 0)))
-               (condition-case err
-                   (setq tmp-frame (server-select-display display))
-                 (error (process-send-string proc (nth 1 err))
-                        (setq request "")))))
-            ;; ARG is a line number option.
-            ((string-match "\\`\\+[0-9]+\\'" arg)
-             (setq lineno (string-to-number (substring arg 1))))
-            ;; ARG is line number:column option.
-            ((string-match "\\`+\\([0-9]+\\):\\([0-9]+\\)\\'" arg)
-             (setq lineno (string-to-number (match-string 1 arg))
-                   columnno (string-to-number (match-string 2 arg))))
-            (t
-             ;; Undo the quoting that emacsclient does
-             ;; for certain special characters.
-             (setq arg (server-unquote-arg arg))
-             ;; Now decode the file name if necessary.
-             (when coding-system
-               (setq arg (decode-coding-string arg coding-system)))
-             (if eval
-                 (let* (errorp
-                        (v (condition-case errobj
-                               (eval (car (read-from-string arg)))
-                             (error (setq errorp t) errobj))))
-                   (when v
-                     (with-temp-buffer
-                       (let ((standard-output (current-buffer)))
-                         (when errorp (princ "error: "))
-                         (pp v)
-                         (ignore-errors
-                           (process-send-region proc (point-min) (point-max)))
-                         ))))
-               ;; ARG is a file name.
-               ;; Collapse multiple slashes to single slashes.
-               (setq arg (command-line-normalize-file-name arg))
-               (push (list arg lineno columnno) files))
-             (setq lineno 1)
-             (setq columnno 0)))))
-      (when files
-       (run-hooks 'pre-command-hook)
-       (server-visit-files files client nowait)
-       (run-hooks 'post-command-hook))
-      ;; CLIENT is now a list (CLIENTNUM BUFFERS...)
-      (if (null (cdr client))
-         ;; This client is empty; get rid of it immediately.
-         (progn
-           (delete-process proc)
-           (server-log "Close empty client" proc))
-       ;; We visited some buffer for this client.
-       (or nowait (push client server-clients))
-       (unless (or isearch-mode (minibufferp))
-         (server-switch-buffer (nth 1 client))
-         (run-hooks 'server-switch-hook)
-         (unless nowait
-           (message "%s" (substitute-command-keys
+      (process-put proc 'previous-string nil)))
+  (condition-case err
+      (progn
+       (server-add-client proc)
+       (if (not (string-match "\n" string))
+            ;; Save for later any partial line that remains.
+            (when (> (length string) 0)
+              (process-put proc 'previous-string string))
+            
+          ;; In earlier versions of server.el (where we used an `emacsserver'
+          ;; process), there could be multiple lines.  Nowadays this is not
+          ;; supported any more.
+          (assert (eq (match-end 0) (length string)))
+         (let ((request (substring string 0 (match-beginning 0)))
+               (coding-system (and default-enable-multibyte-characters
+                                   (or file-name-coding-system
+                                       default-file-name-coding-system)))
+               nowait ; t if emacsclient does not want to wait for us.
+               frame ; The frame that was opened for the client (if any).
+               display              ; Open the frame on this display.
+               dontkill       ; t if the client should not be killed.
+                (commands ())
+               dir
+                (tty-name nil)       ;nil, `window-system', or the tty name.
+                tty-type             ;string.
+               (files nil)
+               (lineno 1)
+               (columnno 0))
+           ;; Remove this line from STRING.
+           (setq string (substring string (match-end 0)))
+           (while (string-match " *[^ ]* " request)
+             (let ((arg (substring request (match-beginning 0)
+                                    (1- (match-end 0)))))
+               (setq request (substring request (match-end 0)))
+               (cond
+                ;; -version CLIENT-VERSION: obsolete at birth.
+                ((and (equal "-version" arg) (string-match "[^ ]+ " request))
+                  (setq request (substring request (match-end 0))))
+
+                ;; -nowait:  Emacsclient won't wait for a result.
+                ((equal "-nowait" arg) (setq nowait t))
+
+                ;; -current-frame:  Don't create frames.
+                ((equal "-current-frame" arg) (setq tty-name nil))
+
+                ;; -display DISPLAY:
+                ;; Open X frames on the given display instead of the default.
+                ((and (equal "-display" arg)
+                       (string-match "\\([^ ]*\\) " request))
+                 (setq display (match-string 1 request)
+                       request (substring request (match-end 0))))
+
+                ;; -window-system:  Open a new X frame.
+                ((equal "-window-system" arg)
+                  (setq dontkill t)
+                  (setq tty-name 'window-system))
+
+                ;; -resume:  Resume a suspended tty frame.
+                ((equal "-resume" arg)
+                 (lexical-let ((terminal (process-get proc 'terminal)))
+                   (setq dontkill t)
+                    (push (lambda ()
+                            (when (eq (terminal-live-p terminal) t)
+                              (resume-tty terminal)))
+                          commands)))
+
+                ;; -suspend:  Suspend the client's frame.  (In case we
+                ;; get out of sync, and a C-z sends a SIGTSTP to
+                ;; emacsclient.)
+                ((equal "-suspend" arg)
+                 (lexical-let ((terminal (process-get proc 'terminal)))
+                   (setq dontkill t)
+                    (push (lambda ()
+                            (when (eq (terminal-live-p terminal) t)
+                              (suspend-tty terminal)))
+                          commands)))
+
+                ;; -ignore COMMENT:  Noop; useful for debugging emacsclient.
+                ;; (The given comment appears in the server log.)
+                ((and (equal "-ignore" arg) (string-match "[^ ]* " request))
+                 (setq dontkill t
+                       request (substring request (match-end 0))))
+
+                ;; -tty DEVICE-NAME TYPE:  Open a new tty frame at the client.
+                ((and (equal "-tty" arg)
+                       (string-match "\\([^ ]*\\) \\([^ ]*\\) " request))
+                  (setq tty-name (match-string 1 request))
+                  (setq tty-type (match-string 2 request))
+                  (setq dontkill t)
+                  (setq request (substring request (match-end 0))))
+
+                ;; -position LINE[:COLUMN]:  Set point to the given
+                ;;  position in the next file.
+                ((and (equal "-position" arg)
+                       (string-match "\\+\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)? "
+                                     request))
+                 (setq lineno (string-to-number (match-string 1 request))
+                       columnno (if (null (match-end 2)) 0
+                                   (string-to-number (match-string 2 request)))
+                       request (substring request (match-end 0))))
+
+                ;; -file FILENAME:  Load the given file.
+                ((and (equal "-file" arg)
+                       (string-match "\\([^ ]+\\) " request))
+                 (let ((file (server-unquote-arg (match-string 1 request))))
+                   (setq request (substring request (match-end 0)))
+                   (if coding-system
+                       (setq file (decode-coding-string file coding-system)))
+                   (setq file (command-line-normalize-file-name file))
+                   (push (list file lineno columnno) files)
+                   (server-log (format "New file: %s (%d:%d)"
+                                        file lineno columnno) proc))
+                 (setq lineno 1
+                       columnno 0))
+
+                ;; -eval EXPR:  Evaluate a Lisp expression.
+                ((and (equal "-eval" arg)
+                       (string-match "\\([^ ]+\\) " request))
+                 (lexical-let ((expr (server-unquote-arg
+                                       (match-string 1 request))))
+                   (setq request (substring request (match-end 0)))
+                   (if coding-system
+                       (setq expr (decode-coding-string expr coding-system)))
+                    (push (lambda () (server-eval-and-print expr proc))
+                          commands)
+                   (setq lineno 1
+                         columnno 0)))
+
+                ;; -env NAME=VALUE:  An environment variable.
+                ((and (equal "-env" arg) (string-match "\\([^ ]+\\) " request))
+                 (let ((var (server-unquote-arg (match-string 1 request))))
+                   ;; XXX Variables should be encoded as in getenv/setenv.
+                   (setq request (substring request (match-end 0)))
+                    (process-put proc 'env
+                                 (cons var (process-get proc 'env)))))
+
+                ;; -dir DIRNAME:  The cwd of the emacsclient process.
+                ((and (equal "-dir" arg) (string-match "\\([^ ]+\\) " request))
+                 (setq dir (server-unquote-arg (match-string 1 request)))
+                 (setq request (substring request (match-end 0)))
+                 (if coding-system
+                     (setq dir (decode-coding-string dir coding-system)))
+                 (setq dir (command-line-normalize-file-name dir)))
+
+                ;; Unknown command.
+                (t (error "Unknown command: %s" arg)))))
+            
+            (setq frame
+                  (case tty-name
+                    ((nil) (if display (server-select-display display)))
+                    ((window-system)
+                     (server-create-window-system-frame display nowait proc))
+                    (t (server-create-tty-frame tty-name tty-type proc))))
+
+            (process-put proc 'continuation
+                         (lexical-let ((proc proc)
+                                       (files files)
+                                       (nowait nowait)
+                                       (commands commands)
+                                       (dontkill dontkill)
+                                       (frame frame)
+                                       (tty-name tty-name))
+                           (lambda ()
+                             (server-execute proc files nowait commands
+                                             dontkill frame tty-name))))
+
+            (when (or frame files)
+              (server-goto-toplevel proc))
+
+            (server-execute-continuation proc))))
+    ;; condition-case
+    (error (server-return-error proc err))))
+
+(defun server-execute (proc files nowait commands dontkill frame tty-name)
+  (condition-case err
+      (let* ((buffers
+              (when files
+                (run-hooks 'pre-command-hook)
+                (prog1 (server-visit-files files proc nowait)
+                  (run-hooks 'post-command-hook)))))
+
+        (mapc 'funcall (nreverse commands))
+              
+        ;; Delete the client if necessary.
+        (cond
+         (nowait
+          ;; Client requested nowait; return immediately.
+          (server-log "Close nowait client" proc)
+          (server-delete-client proc))
+         ((and (not dontkill) (null buffers))
+          ;; This client is empty; get rid of it immediately.
+          (server-log "Close empty client" proc)
+          (server-delete-client proc)))
+        (cond
+         ((or isearch-mode (minibufferp))
+          nil)
+         ((and frame (null buffers))
+          (message "%s" (substitute-command-keys
+                         "When done with this frame, type \\[delete-frame]")))
+         ((not (null buffers))
+          (server-switch-buffer (car buffers))
+          (run-hooks 'server-switch-hook)
+          (unless nowait
+            (message "%s" (substitute-command-keys
                            "When done with a buffer, type \\[server-edit]")))))
-      (when (frame-live-p tmp-frame)
-        ;; Delete tmp-frame or make it visible depending on whether it's
-        ;; been used or not.
-        (server-unselect-display tmp-frame))))
-  ;; Save for later any partial line that remains.
-  (when (> (length string) 0)
-    (process-put proc :previous-string string)))
+        (when (and frame (null tty-name))
+          (server-unselect-display frame)))
+    (error (server-return-error proc err))))
+
+(defun server-return-error (proc err)
+  (ignore-errors
+    (server-send-string
+     proc (concat "-error " (server-quote-arg
+                             (error-message-string err))))
+    (server-log (error-message-string err) proc)
+    (delete-process proc)))
 
 (defun server-goto-line-column (file-line-col)
+  "Move point to the position indicated in FILE-LINE-COL.
+FILE-LINE-COL should be a three-element list as described in
+`server-visit-files'."
   (goto-line (nth 1 file-line-col))
   (let ((column-number (nth 2 file-line-col)))
-    (when (> column-number 0)
-      (move-to-column (1- column-number)))))
+    (if (> column-number 0)
+       (move-to-column (1- column-number)))))
 
-(defun server-visit-files (files client &optional nowait)
-  "Find FILES and return the list CLIENT with the buffers nconc'd.
+(defun server-visit-files (files proc &optional nowait)
+  "Find FILES and return a list of buffers created.
 FILES is an alist whose elements are (FILENAME LINENUMBER COLUMNNUMBER).
+PROC is the client that requested this operation.
 NOWAIT non-nil means this client is not waiting for the results,
 so don't mark these buffers specially, just visit them normally."
   ;; Bind last-nonmenu-event to force use of keyboard, not mouse, for queries.
@@ -534,7 +1025,7 @@ so don't mark these buffers specially, just visit them normally."
        ;; modified, revert it.  If there is an existing buffer with
        ;; deleted file, offer to write it.
        (let* ((minibuffer-auto-raise (or server-raise-frame
-                                          minibuffer-auto-raise))
+                                         minibuffer-auto-raise))
               (filen (car file))
               (obuf (get-file-buffer filen)))
          (add-to-history 'file-name-history filen)
@@ -542,14 +1033,14 @@ so don't mark these buffers specially, just visit them normally."
              (progn
                (cond ((file-exists-p filen)
                       (when (not (verify-visited-file-modtime obuf))
-                         (revert-buffer t nil)))
+                        (revert-buffer t nil)))
                      (t
                       (when (y-or-n-p
-                              (concat "File no longer exists: "
-                                      filen
-                                      ", write buffer to file? "))
-                         (write-file filen))))
-               (setq server-existing-buffer t)
+                             (concat "File no longer exists: " filen
+                                     ", write buffer to file? "))
+                        (write-file filen))))
+               (unless server-buffer-clients
+                 (setq server-existing-buffer t))
                (server-goto-line-column file))
            (set-buffer (find-file-noselect filen))
            (server-goto-line-column file)
@@ -557,9 +1048,12 @@ so don't mark these buffers specially, just visit them normally."
        (unless nowait
          ;; When the buffer is killed, inform the clients.
          (add-hook 'kill-buffer-hook 'server-kill-buffer nil t)
-         (push (car client) server-buffer-clients))
+         (push proc server-buffer-clients))
        (push (current-buffer) client-record)))
-    (nconc client client-record)))
+    (unless nowait
+      (process-put proc 'buffers
+                   (nconc (process-get proc 'buffers) client-record)))
+    client-record))
 \f
 (defun server-buffer-done (buffer &optional for-killing)
   "Mark BUFFER as \"done\" for its client(s).
@@ -569,27 +1063,24 @@ or nil.  KILLED is t if we killed BUFFER (typically, because it was visiting
 a temp file).
 FOR-KILLING if non-nil indicates that we are called from `kill-buffer'."
   (let ((next-buffer nil)
-       (killed nil)
-       (old-clients server-clients))
-    (while old-clients
-      (let ((client (car old-clients)))
+       (killed nil))
+    (dolist (proc server-clients)
+      (let ((buffers (process-get proc 'buffers)))
        (or next-buffer
-           (setq next-buffer (nth 1 (memq buffer client))))
-       (delq buffer client)
-       ;; Delete all dead buffers from CLIENT.
-       (let ((tail client))
-         (while tail
-           (and (bufferp (car tail))
-                (null (buffer-name (car tail)))
-                (delq (car tail) client))
-           (setq tail (cdr tail))))
-       ;; If client now has no pending buffers,
-       ;; tell it that it is done, and forget it entirely.
-       (unless (cdr client)
-         (delete-process (car client))
-         (server-log "Close" (car client))
-         (setq server-clients (delq client server-clients))))
-      (setq old-clients (cdr old-clients)))
+           (setq next-buffer (nth 1 (memq buffer buffers))))
+       (when buffers                   ; Ignore bufferless clients.
+         (setq buffers (delq buffer buffers))
+         ;; Delete all dead buffers from PROC.
+         (dolist (b buffers)
+           (and (bufferp b)
+                (not (buffer-live-p b))
+                (setq buffers (delq b buffers))))
+         (process-put proc 'buffers buffers)
+         ;; If client now has no pending buffers,
+         ;; tell it that it is done, and forget it entirely.
+         (unless buffers
+           (server-log "Close" proc)
+           (server-delete-client proc)))))
     (when (and (bufferp buffer) (buffer-name buffer))
       ;; We may or may not kill this buffer;
       ;; if we do, do not call server-buffer-done recursively
@@ -654,30 +1145,32 @@ specifically for the clients and did not exist before their request for it."
 ;; but I think that is dangerous--the client would proceed
 ;; using whatever is on disk in that file. -- rms.
 (defun server-kill-buffer-query-function ()
+  "Ask before killing a server buffer."
   (or (not server-buffer-clients)
+      (let ((res t))
+       (dolist (proc server-buffer-clients res)
+          (when (and (memq proc server-clients)
+                     (eq (process-status proc) 'open))
+            (setq res nil))))
       (yes-or-no-p (format "Buffer `%s' still has clients; kill it? "
                           (buffer-name (current-buffer))))))
 
-(add-hook 'kill-buffer-query-functions
-         'server-kill-buffer-query-function)
-
 (defun server-kill-emacs-query-function ()
-  (let (live-client
-       (tail server-clients))
-    ;; See if any clients have any buffers that are still alive.
-    (while tail
-      (when (memq t (mapcar 'stringp (mapcar 'buffer-name (cdr (car tail)))))
-       (setq live-client t))
-      (setq tail (cdr tail)))
-    (or (not live-client)
-       (yes-or-no-p "Server buffers still have clients; exit anyway? "))))
-
-(add-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function)
+  "Ask before exiting Emacs it has live clients."
+  (or (not server-clients)
+      (let (live-client)
+       (dolist (proc server-clients live-client)
+         (when (memq t (mapcar 'buffer-live-p (process-get
+                                               proc 'buffers)))
+           (setq live-client t))))
+      (yes-or-no-p "This Emacs session has clients; exit anyway? ")))
 
 (defvar server-kill-buffer-running nil
   "Non-nil while `server-kill-buffer' or `server-buffer-done' is running.")
 
 (defun server-kill-buffer ()
+  "Remove the current buffer from its clients' buffer list.
+Designed to be added to `kill-buffer-hook'."
   ;; Prevent infinite recursion if user has made server-done-hook
   ;; call kill-buffer.
   (or server-kill-buffer-running
@@ -711,18 +1204,26 @@ starts server process and that is all.  Invoked by \\[server-edit]."
 
 (defun server-switch-buffer (&optional next-buffer killed-one)
   "Switch to another buffer, preferably one that has a client.
-Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."
-  ;; KILLED-ONE is t in a recursive call
-  ;; if we have already killed one temp-file server buffer.
-  ;; This means we should avoid the final "switch to some other buffer"
-  ;; since we've already effectively done that.
+Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it.
+
+KILLED-ONE is t in a recursive call if we have already killed one
+temp-file server buffer.  This means we should avoid the final
+\"switch to some other buffer\" since we've already effectively
+done that."
   (if (null next-buffer)
-      (if server-clients
-         (server-switch-buffer (nth 1 (car server-clients)) killed-one)
-       (unless (or killed-one (window-dedicated-p (selected-window)))
-         (switch-to-buffer (other-buffer))
+      (progn
+       (let ((rest server-clients))
+         (while (and rest (not next-buffer))
+           (let ((proc (car rest)))
+             ;; Only look at frameless clients.
+             (when (not (process-get proc 'frame))
+               (setq next-buffer (car (process-get proc 'buffers))))
+             (setq rest (cdr rest)))))
+       (and next-buffer (server-switch-buffer next-buffer killed-one))
+       (unless (or next-buffer killed-one (window-dedicated-p (selected-window)))
+         ;; (switch-to-buffer (other-buffer))
          (message "No server buffers remain to edit")))
-    (if (not (buffer-name next-buffer))
+    (if (not (buffer-live-p next-buffer))
        ;; If NEXT-BUFFER is a dead buffer, remove the server records for it
        ;; and try the next surviving server buffer.
        (apply 'server-switch-buffer (server-buffer-done next-buffer))
@@ -736,8 +1237,7 @@ Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."
                 (select-window win)
                 (set-buffer next-buffer))
            ;; Otherwise, let's find an appropriate window.
-           (cond ((and (windowp server-window)
-                       (window-live-p server-window))
+           (cond ((window-live-p server-window)
                   (select-window server-window))
                  ((framep server-window)
                   (unless (frame-live-p server-window)
@@ -751,8 +1251,8 @@ Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."
               (get-window-with-predicate
                (lambda (w)
                  (and (not (window-dedicated-p w))
-                      (equal (frame-parameter (window-frame w) 'display)
-                             (frame-parameter (selected-frame) 'display))))
+                      (equal (frame-terminal (window-frame w))
+                             (frame-terminal (selected-frame)))))
                'nomini 'visible (selected-window))))
            (condition-case nil
                (switch-to-buffer next-buffer)
@@ -762,10 +1262,31 @@ Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."
     (when server-raise-frame
       (select-frame-set-input-focus (window-frame (selected-window))))))
 
+;;;###autoload
+(defun server-save-buffers-kill-terminal (proc &optional arg)
+  "Offer to save each buffer, then kill PROC.
+
+With prefix arg, silently save all file-visiting buffers, then kill.
+
+If emacsclient was started with a list of filenames to edit, then
+only these files will be asked to be saved."
+  (let ((buffers (process-get proc 'buffers)))
+    ;; If client is bufferless, emulate a normal Emacs session
+    ;; exit and offer to save all buffers.  Otherwise, offer to
+    ;; save only the buffers belonging to the client.
+    (save-some-buffers arg
+                      (if buffers
+                          (lambda () (memq (current-buffer) buffers))
+                        t))
+    (server-delete-client proc)))
+
 (define-key ctl-x-map "#" 'server-edit)
 
 (defun server-unload-hook ()
+  "Unload the server library."
   (server-mode -1)
+  (remove-hook 'suspend-tty-functions 'server-handle-suspend-tty)
+  (remove-hook 'delete-frame-functions 'server-handle-delete-frame)
   (remove-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)
   (remove-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function)
   (remove-hook 'kill-buffer-hook 'server-kill-buffer))
index dbff7a389faf6289122a7dadd551aedfb6892c74..a8daf8b76d2415fc1761c8579e18982329e31baf 100644 (file)
@@ -5,7 +5,7 @@
 
 ;; Author: Olin Shivers <shivers@cs.cmu.edu>
 ;;     Simon Marshall <simon@gnu.org>
-;; Maintainer: FSF
+;; Maintainer: FSF <emacs-devel@gnu.org>
 ;; Keywords: processes
 
 ;; This file is part of GNU Emacs.
 
 ;;; Commentary:
 
-;; Please send me bug reports, bug fixes, and extensions, so that I can
-;; merge them into the master source.
-;;     - Olin Shivers (shivers@cs.cmu.edu)
-;;     - Simon Marshall (simon@gnu.org)
-
 ;; This file defines a shell-in-a-buffer package (shell mode) built on
 ;; top of comint mode.  This is actually cmushell with things renamed
 ;; to replace its counterpart in Emacs 18.  cmushell is more
@@ -516,6 +511,9 @@ Sentinels will always get the two parameters PROCESS and EVENT."
 (defun shell (&optional buffer)
   "Run an inferior shell, with I/O through BUFFER (which defaults to `*shell*').
 Interactively, a prefix arg means to prompt for BUFFER.
+If `default-directory' is a remote file name, it is also prompted
+to change if called with a prefix arg.
+
 If BUFFER exists but shell process is not running, make new shell.
 If BUFFER exists and shell process is running, just switch to BUFFER.
 Program used comes from variable `explicit-shell-file-name',
@@ -544,8 +542,16 @@ Otherwise, one argument `-i' is passed to the shell.
   (interactive
    (list
     (and current-prefix-arg
-        (read-buffer "Shell buffer: "
-                     (generate-new-buffer-name "*shell*")))))
+        (prog1
+            (read-buffer "Shell buffer: "
+                         (generate-new-buffer-name "*shell*"))
+          (if (file-remote-p default-directory)
+              ;; It must be possible to declare a local default-directory.
+              (setq default-directory
+                    (expand-file-name
+                     (read-file-name
+                      "Default directory: " default-directory default-directory
+                      t nil 'file-directory-p))))))))
   (setq buffer (get-buffer-create (or buffer "*shell*")))
   ;; Pop to buffer, so that the buffer's window will be correctly set
   ;; when we call comint (so that comint sets the COLUMNS env var properly).
@@ -557,7 +563,7 @@ Otherwise, one argument `-i' is passed to the shell.
           (startfile (concat "~/.emacs_" name))
           (xargs-name (intern-soft (concat "explicit-" name "-args"))))
       (unless (file-exists-p startfile)
-       (setq startfile (concat "~/.emacs.d/init_" name ".sh")))
+       (setq startfile (concat user-emacs-directory "init_" name ".sh")))
       (apply 'make-comint-in-buffer "shell" buffer prog
             (if (file-exists-p startfile) startfile)
             (if (and xargs-name (boundp xargs-name))
index 1d87c84c33f29952e503088adb3a92e3eda47100..1cfaf6bca22886623d6bfa4545ba9634fae2bc5d 100644 (file)
@@ -85,34 +85,22 @@ If the optional third argument FRAME is non-nil, use that frame's
 buffer list instead of the selected frame's buffer list.
 If no other buffer exists, the buffer `*scratch*' is returned."
   (setq frame (or frame (selected-frame)))
-  (or (get-next-valid-buffer (frame-parameter frame 'buried-buffer-list)
-                            buffer visible-ok frame)
-      (get-next-valid-buffer (nreverse (buffer-list frame))
-                            buffer visible-ok frame)
+  (or (get-next-valid-buffer (nreverse (buffer-list frame))
+                            buffer visible-ok frame)
       (progn
        (set-buffer-major-mode (get-buffer-create "*scratch*"))
        (get-buffer "*scratch*"))))
-
 (defun next-buffer ()
   "Switch to the next buffer in cyclic order."
   (interactive)
-  (let ((buffer (current-buffer))
-       (bbl (frame-parameter nil 'buried-buffer-list)))
+  (let ((buffer (current-buffer)))
     (switch-to-buffer (other-buffer buffer t))
-    (bury-buffer buffer)
-    (set-frame-parameter nil 'buried-buffer-list
-                        (cons buffer (delq buffer bbl)))))
+    (bury-buffer buffer)))
 
 (defun previous-buffer ()
   "Switch to the previous buffer in cyclic order."
   (interactive)
-  (let ((buffer (last-buffer (current-buffer) t))
-       (bbl (frame-parameter nil 'buried-buffer-list)))
-    (switch-to-buffer buffer)
-    ;; Clean up buried-buffer-list up to and including the chosen buffer.
-    (while (and bbl (not (eq (car bbl) buffer)))
-      (setq bbl (cdr bbl)))
-    (set-frame-parameter nil 'buried-buffer-list bbl)))
+  (switch-to-buffer (last-buffer (current-buffer) t)))
 
 \f
 ;;; next-error support framework
@@ -156,6 +144,15 @@ If `fringe-arrow', indicate the locus by the fringe arrow."
   :group 'next-error
   :version "22.1")
 
+(defcustom next-error-recenter nil
+  "*Display the line in the visited source file recentered as specified.
+If non-nil, the value is passed directly to `recenter'."
+  :type '(choice (integer :tag "Line to recenter to")
+                 (const :tag "Center of window" (4))
+                 (const :tag "No recentering" nil))
+  :group 'next-error
+  :version "23.1")
+
 (defcustom next-error-hook nil
   "*List of hook functions run by `next-error' after visiting source file."
   :type 'hook
@@ -305,6 +302,8 @@ See variables `compilation-parse-errors-function' and
     ;; we know here that next-error-function is a valid symbol we can funcall
     (with-current-buffer next-error-last-buffer
       (funcall next-error-function (prefix-numeric-value arg) reset)
+      (when next-error-recenter
+        (recenter next-error-recenter))
       (run-hooks 'next-error-hook))))
 
 (defun next-error-internal ()
@@ -313,6 +312,8 @@ See variables `compilation-parse-errors-function' and
   ;; we know here that next-error-function is a valid symbol we can funcall
   (with-current-buffer next-error-last-buffer
     (funcall next-error-function 0 nil)
+    (when next-error-recenter
+      (recenter next-error-recenter))
     (run-hooks 'next-error-hook)))
 
 (defalias 'goto-next-locus 'next-error)
@@ -456,7 +457,7 @@ than the value of `fill-column' and ARG is nil."
     ;; Mark the newline(s) `hard'.
     (if use-hard-newlines
        (set-hard-newline-properties
-        (- (point) (if arg (prefix-numeric-value arg) 1)) (point)))
+        (- (point) (prefix-numeric-value arg)) (point)))
     ;; If the newline leaves the previous line blank,
     ;; and we have a left margin, delete that from the blank line.
     (or flag
@@ -1042,7 +1043,7 @@ display the result of expression evaluation."
                (if (boundp 'edebug-active) edebug-active)))
       (let ((char-string
              (if (or (if (boundp 'edebug-active) edebug-active)
-                     (memq this-command '(eval-last-sexp eval-print-last-sexp)))
+                    (memq this-command '(eval-last-sexp eval-print-last-sexp)))
                  (prin1-char value))))
         (if char-string
             (format " (#o%o, #x%x, %s)" value value char-string)
@@ -1287,55 +1288,61 @@ makes the search case-sensitive."
 
 (defvar minibuffer-temporary-goal-position nil)
 
+(defun goto-history-element (nabs)
+  "Puts element of the minibuffer history in the minibuffer.
+The argument NABS specifies the absolute history position."
+  (interactive "p")
+  (let ((minimum (if minibuffer-default -1 0))
+       elt minibuffer-returned-to-present)
+    (if (and (zerop minibuffer-history-position)
+            (null minibuffer-text-before-history))
+       (setq minibuffer-text-before-history
+             (minibuffer-contents-no-properties)))
+    (if (< nabs minimum)
+       (if minibuffer-default
+           (error "End of history; no next item")
+         (error "End of history; no default available")))
+    (if (> nabs (length (symbol-value minibuffer-history-variable)))
+       (error "Beginning of history; no preceding item"))
+    (unless (memq last-command '(next-history-element
+                                previous-history-element))
+      (let ((prompt-end (minibuffer-prompt-end)))
+       (set (make-local-variable 'minibuffer-temporary-goal-position)
+            (cond ((<= (point) prompt-end) prompt-end)
+                  ((eobp) nil)
+                  (t (point))))))
+    (goto-char (point-max))
+    (delete-minibuffer-contents)
+    (setq minibuffer-history-position nabs)
+    (cond ((= nabs -1)
+          (setq elt minibuffer-default))
+         ((= nabs 0)
+          (setq elt (or minibuffer-text-before-history ""))
+          (setq minibuffer-returned-to-present t)
+          (setq minibuffer-text-before-history nil))
+         (t (setq elt (nth (1- minibuffer-history-position)
+                           (symbol-value minibuffer-history-variable)))))
+    (insert
+     (if (and (eq minibuffer-history-sexp-flag (minibuffer-depth))
+             (not minibuffer-returned-to-present))
+        (let ((print-level nil))
+          (prin1-to-string elt))
+       elt))
+    (goto-char (or minibuffer-temporary-goal-position (point-max)))))
+
 (defun next-history-element (n)
   "Puts next element of the minibuffer history in the minibuffer.
 With argument N, it uses the Nth following element."
   (interactive "p")
   (or (zerop n)
-      (let ((narg (- minibuffer-history-position n))
-           (minimum (if minibuffer-default -1 0))
-           elt minibuffer-returned-to-present)
-       (if (and (zerop minibuffer-history-position)
-                (null minibuffer-text-before-history))
-           (setq minibuffer-text-before-history
-                 (minibuffer-contents-no-properties)))
-       (if (< narg minimum)
-           (if minibuffer-default
-               (error "End of history; no next item")
-             (error "End of history; no default available")))
-       (if (> narg (length (symbol-value minibuffer-history-variable)))
-           (error "Beginning of history; no preceding item"))
-       (unless (memq last-command '(next-history-element
-                                    previous-history-element))
-         (let ((prompt-end (minibuffer-prompt-end)))
-           (set (make-local-variable 'minibuffer-temporary-goal-position)
-                (cond ((<= (point) prompt-end) prompt-end)
-                      ((eobp) nil)
-                      (t (point))))))
-       (goto-char (point-max))
-       (delete-minibuffer-contents)
-       (setq minibuffer-history-position narg)
-       (cond ((= narg -1)
-              (setq elt minibuffer-default))
-             ((= narg 0)
-              (setq elt (or minibuffer-text-before-history ""))
-              (setq minibuffer-returned-to-present t)
-              (setq minibuffer-text-before-history nil))
-             (t (setq elt (nth (1- minibuffer-history-position)
-                               (symbol-value minibuffer-history-variable)))))
-       (insert
-        (if (and (eq minibuffer-history-sexp-flag (minibuffer-depth))
-                 (not minibuffer-returned-to-present))
-            (let ((print-level nil))
-              (prin1-to-string elt))
-          elt))
-       (goto-char (or minibuffer-temporary-goal-position (point-max))))))
+      (goto-history-element (- minibuffer-history-position n))))
 
 (defun previous-history-element (n)
   "Puts previous element of the minibuffer history in the minibuffer.
 With argument N, it uses the Nth previous element."
   (interactive "p")
-  (next-history-element (- n)))
+  (or (zerop n)
+      (goto-history-element (+ minibuffer-history-position n))))
 
 (defun next-complete-history-element (n)
   "Get next history element which completes the minibuffer before the point.
@@ -1368,6 +1375,137 @@ Return 0 if current buffer is not a minibuffer."
   ;; the buffer; this should be 0 for normal buffers.
   (1- (minibuffer-prompt-end)))
 \f
+;; isearch minibuffer history
+(add-hook 'minibuffer-setup-hook 'minibuffer-history-isearch-setup)
+
+(defvar minibuffer-history-isearch-message-overlay)
+(make-variable-buffer-local 'minibuffer-history-isearch-message-overlay)
+
+(defun minibuffer-history-isearch-setup ()
+  "Set up a minibuffer for using isearch to search the minibuffer history.
+Intended to be added to `minibuffer-setup-hook'."
+  (set (make-local-variable 'isearch-search-fun-function)
+       'minibuffer-history-isearch-search)
+  (set (make-local-variable 'isearch-message-function)
+       'minibuffer-history-isearch-message)
+  (set (make-local-variable 'isearch-wrap-function)
+       'minibuffer-history-isearch-wrap)
+  (set (make-local-variable 'isearch-push-state-function)
+       'minibuffer-history-isearch-push-state)
+  (add-hook 'isearch-mode-end-hook 'minibuffer-history-isearch-end nil t))
+
+(defun minibuffer-history-isearch-end ()
+  "Clean up the minibuffer after terminating isearch in the minibuffer."
+  (if minibuffer-history-isearch-message-overlay
+      (delete-overlay minibuffer-history-isearch-message-overlay)))
+
+(defun minibuffer-history-isearch-search ()
+  "Return the proper search function, for isearch in minibuffer history."
+  (cond
+   (isearch-word
+    (if isearch-forward 'word-search-forward 'word-search-backward))
+   (t
+    (lambda (string bound noerror)
+      (let ((search-fun
+            ;; Use standard functions to search within minibuffer text
+             (cond
+              (isearch-regexp
+               (if isearch-forward 're-search-forward 're-search-backward))
+              (t
+               (if isearch-forward 'search-forward 'search-backward))))
+           found)
+       ;; Avoid lazy-highlighting matches in the minibuffer prompt when
+       ;; searching forward.  Lazy-highlight calls this lambda with the
+       ;; bound arg, so skip the minibuffer prompt.
+       (if (and bound isearch-forward (< (point) (minibuffer-prompt-end)))
+           (goto-char (minibuffer-prompt-end)))
+        (or
+        ;; 1. First try searching in the initial minibuffer text
+        (funcall search-fun string
+                 (if isearch-forward bound (minibuffer-prompt-end))
+                 noerror)
+        ;; 2. If the above search fails, start putting next/prev history
+        ;; elements in the minibuffer successively, and search the string
+        ;; in them.  Do this only when bound is nil (i.e. not while
+        ;; lazy-highlighting search strings in the current minibuffer text).
+        (unless bound
+          (condition-case nil
+              (progn
+                (while (not found)
+                  (cond (isearch-forward
+                         (next-history-element 1)
+                         (goto-char (minibuffer-prompt-end)))
+                        (t
+                         (previous-history-element 1)
+                         (goto-char (point-max))))
+                  (setq isearch-barrier (point) isearch-opoint (point))
+                  ;; After putting the next/prev history element, search
+                  ;; the string in them again, until next-history-element
+                  ;; or previous-history-element raises an error at the
+                  ;; beginning/end of history.
+                  (setq found (funcall search-fun string
+                                       (unless isearch-forward
+                                         ;; For backward search, don't search
+                                         ;; in the minibuffer prompt
+                                         (minibuffer-prompt-end))
+                                       noerror)))
+                ;; Return point of the new search result
+                (point))
+            ;; Return nil when next(prev)-history-element fails
+            (error nil)))))))))
+
+(defun minibuffer-history-isearch-message (&optional c-q-hack ellipsis)
+  "Display the minibuffer history search prompt.
+If there are no search errors, this function displays an overlay with
+the isearch prompt which replaces the original minibuffer prompt.
+Otherwise, it displays the standard isearch message returned from
+`isearch-message'."
+  (if (not (and (minibufferp) isearch-success (not isearch-error)))
+      ;; Use standard function `isearch-message' when not in the minibuffer,
+      ;; or search fails, or has an error (like incomplete regexp).
+      ;; This function overwrites minibuffer text with isearch message,
+      ;; so it's possible to see what is wrong in the search string.
+      (isearch-message c-q-hack ellipsis)
+    ;; Otherwise, put the overlay with the standard isearch prompt over
+    ;; the initial minibuffer prompt.
+    (if (overlayp minibuffer-history-isearch-message-overlay)
+       (move-overlay minibuffer-history-isearch-message-overlay
+                     (point-min) (minibuffer-prompt-end))
+      (setq minibuffer-history-isearch-message-overlay
+           (make-overlay (point-min) (minibuffer-prompt-end)))
+      (overlay-put minibuffer-history-isearch-message-overlay 'evaporate t))
+    (overlay-put minibuffer-history-isearch-message-overlay
+                'display (isearch-message-prefix c-q-hack ellipsis))
+    ;; And clear any previous isearch message.
+    (message "")))
+
+(defun minibuffer-history-isearch-wrap ()
+  "Wrap the minibuffer history search when search is failed.
+Move point to the first history element for a forward search,
+or to the last history element for a backward search."
+  (unless isearch-word
+    ;; When `minibuffer-history-isearch-search' fails on reaching the
+    ;; beginning/end of the history, wrap the search to the first/last
+    ;; minibuffer history element.
+    (if isearch-forward
+       (goto-history-element (length (symbol-value minibuffer-history-variable)))
+      (goto-history-element 0))
+    (setq isearch-success t))
+  (goto-char (if isearch-forward (minibuffer-prompt-end) (point-max))))
+
+(defun minibuffer-history-isearch-push-state ()
+  "Save a function restoring the state of minibuffer history search.
+Save `minibuffer-history-position' to the additional state parameter
+in the search status stack."
+  `(lambda (cmd)
+     (minibuffer-history-isearch-pop-state cmd ,minibuffer-history-position)))
+
+(defun minibuffer-history-isearch-pop-state (cmd hist-pos)
+  "Restore the minibuffer history search state.
+Go to the history element by the absolute history position `hist-pos'."
+  (goto-history-element hist-pos))
+
+\f
 ;Put this on C-x u, so we can force that rather than C-_ into startup msg
 (defalias 'advertised-undo 'undo)
 
@@ -2189,6 +2327,18 @@ value passed."
       (when stderr-file (delete-file stderr-file))
       (when lc (delete-file lc)))))
 
+(defun start-file-process (name buffer program &rest program-args)
+  "Start a program in a subprocess.  Return the process object for it.
+Similar to `start-process', but may invoke a file handler based on
+`default-directory'.  The current working directory of the
+subprocess is `default-directory'.
+
+PROGRAM and PROGRAM-ARGS might be file names.  They are not
+objects of file handler invocation."
+  (let ((fh (find-file-name-handler default-directory 'start-file-process)))
+    (if fh (apply fh 'start-file-process name buffer program program-args)
+      (apply 'start-process name buffer program program-args))))
+
 
 \f
 (defvar universal-argument-map
@@ -2395,6 +2545,8 @@ the text which should be made available.
 The second, optional, argument PUSH, has the same meaning as the
 similar argument to `x-set-cut-buffer', which see.")
 
+(make-variable-frame-local 'interprogram-cut-function)
+
 (defvar interprogram-paste-function nil
   "Function to call to get text cut from other programs.
 
@@ -2415,6 +2567,8 @@ most recent string, the function should return nil.  If it is
 difficult to tell whether Emacs or some other program provided the
 current string, it is probably good enough to return nil if the string
 is equal (according to `string=') to the last text Emacs provided.")
+
+(make-variable-frame-local 'interprogram-paste-function)
 \f
 
 
@@ -2591,7 +2745,9 @@ text.  See `insert-for-yank'."
   "Save the region as if killed, but don't kill it.
 In Transient Mark mode, deactivate the mark.
 If `interprogram-cut-function' is non-nil, also save the text for a window
-system cut and paste."
+system cut and paste.
+
+This command's old key binding has been given to `kill-ring-save'."
   (interactive "r")
   (if (eq last-command 'kill-region)
       (kill-append (filter-buffer-substring beg end) (< end beg))
@@ -2661,7 +2817,7 @@ The argument is used for internal purposes; do not supply one."
 (defcustom yank-excluded-properties
   '(read-only invisible intangible field mouse-face help-echo local-map keymap
     yank-handler follow-link fontified)
-  "*Text properties to discard when yanking.
+  "Text properties to discard when yanking.
 The value should be a list of text properties to discard or t,
 which means to discard all text properties."
   :type '(choice (const :tag "All" t) (repeat symbol))
@@ -3469,7 +3625,7 @@ The beginning of a blank line does not count as the end of a line."
   "Current goal column for vertical motion.
 It is the column where point was
 at the start of current run of vertical motion commands.
-When the `track-eol' feature is doing its job, the value is 9999.")
+When the `track-eol' feature is doing its job, the value is `most-positive-fixnum'.")
 
 (defcustom line-move-ignore-invisible t
   "*Non-nil means \\[next-line] and \\[previous-line] ignore invisible lines.
@@ -3477,16 +3633,6 @@ Outline mode sets this."
   :type 'boolean
   :group 'editing-basics)
 
-(defun invisible-p (pos)
-  "Return non-nil if the character after POS is currently invisible."
-  (let ((prop
-        (get-char-property pos 'invisible)))
-    (if (eq buffer-invisibility-spec t)
-       prop
-      (or (memq prop buffer-invisibility-spec)
-         (assq prop buffer-invisibility-spec)))))
-(define-obsolete-function-alias 'line-move-invisible-p 'invisible-p)
-
 ;; Returns non-nil if partial move was done.
 (defun line-move-partial (arg noerror to-end)
   (if (< arg 0)
@@ -3501,7 +3647,7 @@ Outline mode sets this."
           (vpos (nth 1 lh))
           (ypos (nth 2 lh))
           (rbot (nth 3 lh))
-          ppos py vs)
+          py vs)
       (when (or (null lh)
                (>= rbot (frame-char-height))
                (<= ypos (- (frame-char-height))))
@@ -3578,11 +3724,11 @@ Outline mode sets this."
                             ;; Don't count beg of empty line as end of line
                             ;; unless we just did explicit end-of-line.
                             (or (not (bolp)) (eq last-command 'move-end-of-line)))
-                       9999
+                       most-positive-fixnum
                      (current-column))))
 
-         (if (and (not (integerp selective-display))
-                  (not line-move-ignore-invisible))
+         (if (not (or (integerp selective-display)
+                       line-move-ignore-invisible))
              ;; Use just newline characters.
              ;; Set ARG to 0 if we move as many lines as requested.
              (or (if (> arg 0)
@@ -3821,7 +3967,8 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
                      (not (bobp))
                      (progn
                        (while (and (not (bobp)) (invisible-p (1- (point))))
-                         (goto-char (previous-char-property-change (point))))
+                         (goto-char (previous-single-char-property-change
+                                      (point) 'invisible)))
                        (backward-char 1)))
                 (point)))))
        (goto-char newpos)
@@ -3848,7 +3995,7 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
   (or arg (setq arg 1))
 
   (let ((orig (point))
-       start first-vis first-vis-field-value)
+       first-vis first-vis-field-value)
 
     ;; Move by lines, if ARG is not 1 (the default).
     (if (/= arg 1)
@@ -3859,7 +4006,6 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
     (while (and (not (bobp)) (invisible-p (1- (point))))
       (goto-char (previous-char-property-change (point)))
       (skip-chars-backward "^\n"))
-    (setq start (point))
 
     ;; Now find first visible char in the line
     (while (and (not (eobp)) (invisible-p (point)))
@@ -4168,13 +4314,6 @@ If optional arg REALLY-WORD is non-nil, it finds just a word."
                 regexp)
   :group 'fill)
 
-(defvar comment-line-break-function 'comment-indent-new-line
-  "*Mode-specific function which line breaks and continues a comment.
-
-This function is only called during auto-filling of a comment section.
-The function should take a single optional argument, which is a flag
-indicating whether it should use soft newlines.")
-
 ;; 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.
@@ -4248,10 +4387,10 @@ indicating whether it should use soft newlines.")
              (if (save-excursion
                    (skip-chars-backward " \t")
                    (= (point) fill-point))
-                 (funcall comment-line-break-function t)
+                 (default-indent-new-line t)
                (save-excursion
                  (goto-char fill-point)
-                 (funcall comment-line-break-function t)))
+                 (default-indent-new-line t)))
              ;; Now do justification, if required
              (if (not (eq justify 'left))
                  (save-excursion
@@ -4266,6 +4405,43 @@ indicating whether it should use soft newlines.")
       (justify-current-line justify t t)
       t)))
 
+(defvar comment-line-break-function 'comment-indent-new-line
+  "*Mode-specific function which line breaks and continues a comment.
+This function is called during auto-filling when a comment syntax
+is defined.
+The function should take a single optional argument, which is a flag
+indicating whether it should use soft newlines.")
+
+(defun default-indent-new-line (&optional soft)
+  "Break line at point and indent.
+If a comment syntax is defined, call `comment-indent-new-line'.
+
+The inserted newline is marked hard if variable `use-hard-newlines' is true,
+unless optional argument SOFT is non-nil."
+  (interactive)
+  (if comment-start
+      (funcall comment-line-break-function soft)
+    ;; Insert the newline before removing empty space so that markers
+    ;; get preserved better.
+    (if soft (insert-and-inherit ?\n) (newline 1))
+    (save-excursion (forward-char -1) (delete-horizontal-space))
+    (delete-horizontal-space)
+
+    (if (and fill-prefix (not adaptive-fill-mode))
+       ;; Blindly trust a non-adaptive fill-prefix.
+       (progn
+         (indent-to-left-margin)
+         (insert-before-markers-and-inherit fill-prefix))
+
+      (cond
+       ;; If there's an adaptive prefix, use it unless we're inside
+       ;; a comment and the prefix is not a comment starter.
+       (fill-prefix
+       (indent-to-left-margin)
+       (insert-and-inherit fill-prefix))
+       ;; If we're not inside a comment, just try to indent.
+       (t (indent-according-to-mode))))))
+
 (defvar normal-auto-fill-function 'do-auto-fill
   "The function to use for `auto-fill-function' if Auto Fill mode is turned on.
 Some major modes set this.")
@@ -4480,94 +4656,82 @@ it skips the contents of comments that end before point."
                                 (skip-syntax-backward "/\\")
                                 (point))))))
     (let* ((oldpos (point))
-          blinkpos
-          message-log-max    ; Don't log messages about paren matching.
-          matching-paren
-          open-paren-line-string
-          old-start
-          new-start)
-      (save-excursion
-       (save-restriction
-         ;; Don't search for matching paren within minibuffer prompt.
-         (setq old-start (minibuffer-prompt-end))
-         (setq new-start
-               (if blink-matching-paren-distance
-                   (max old-start (- (point) blink-matching-paren-distance))
-                 old-start))
-         (narrow-to-region new-start oldpos)
-         (condition-case ()
-             (let ((parse-sexp-ignore-comments
-                    (and parse-sexp-ignore-comments
-                         (not blink-matching-paren-dont-ignore-comments))))
-               (setq blinkpos (scan-sexps oldpos -1)))
-           (error nil)))
-       (and blinkpos
-            ;; Not syntax '$'.
-            (not (eq (syntax-class (syntax-after blinkpos)) 8))
-            (setq matching-paren
-                  (let ((syntax (syntax-after blinkpos)))
-                    (and (consp syntax)
-                         (eq (syntax-class syntax) 4)
-                         (cdr syntax)))))
-       (cond
-        ((not blinkpos)
-         (unless (and blink-matching-paren-distance (> new-start old-start))
-           ;; When `blink-matching-paren-distance' is non-nil and we
-           ;; didn't find a matching paren within that many characters
-           ;; don't display a message.
-           (message "Unmatched parenthesis")))
-        ((not (or (eq matching-paren (char-before oldpos))
-                  ;; The cdr might hold a new paren-class info rather than
-                  ;; a matching-char info, in which case the two CDRs
-                  ;; should match.
-                  (eq matching-paren (cdr (syntax-after (1- oldpos))))))
-         (message "Mismatched parentheses"))
-        ((pos-visible-in-window-p blinkpos)
-         ;; Matching open within window, temporarily move to blinkpos but only
-         ;; if `blink-matching-paren-on-screen' is non-nil.
-         (and blink-matching-paren-on-screen
-              (not show-paren-mode)
-              (save-excursion
-                (goto-char blinkpos)
-                (sit-for blink-matching-delay))))
-        (t
-         (save-excursion
-           (goto-char blinkpos)
-           (setq open-paren-line-string
-                 ;; Show what precedes the open in its line, if anything.
-                 (if (save-excursion
-                       (skip-chars-backward " \t")
-                       (not (bolp)))
-                     (buffer-substring (line-beginning-position)
-                                       (1+ blinkpos))
-                   ;; Show what follows the open in its line, if anything.
-                   (if (save-excursion
-                         (forward-char 1)
-                         (skip-chars-forward " \t")
-                         (not (eolp)))
-                       (buffer-substring blinkpos
-                                         (line-end-position))
-                     ;; Otherwise show the previous nonblank line,
-                     ;; if there is one.
-                     (if (save-excursion
-                           (skip-chars-backward "\n \t")
-                           (not (bobp)))
-                         (concat
-                          (buffer-substring (progn
-                                              (skip-chars-backward "\n \t")
-                                              (line-beginning-position))
-                                            (progn (end-of-line)
-                                                   (skip-chars-backward " \t")
-                                                   (point)))
-                          ;; Replace the newline and other whitespace with `...'.
-                          "..."
-                          (buffer-substring blinkpos (1+ blinkpos)))
-                       ;; There is nothing to show except the char itself.
-                       (buffer-substring blinkpos (1+ blinkpos)))))))
-         (message "Matches %s"
-                  (substring-no-properties open-paren-line-string))))))))
-
-;Turned off because it makes dbx bomb out.
+          (message-log-max nil)  ; Don't log messages about paren matching.
+          (blinkpos
+            (save-excursion
+              (save-restriction
+                (if blink-matching-paren-distance
+                    (narrow-to-region
+                     (max (minibuffer-prompt-end) ;(point-min) unless minibuf.
+                          (- (point) blink-matching-paren-distance))
+                     oldpos))
+                (let ((parse-sexp-ignore-comments
+                       (and parse-sexp-ignore-comments
+                            (not blink-matching-paren-dont-ignore-comments))))
+                  (condition-case ()
+                      (scan-sexps oldpos -1)
+                    (error nil))))))
+          (matching-paren
+            (and blinkpos
+                 ;; Not syntax '$'.
+                 (not (eq (syntax-class (syntax-after blinkpos)) 8))
+                 (let ((syntax (syntax-after blinkpos)))
+                   (and (consp syntax)
+                        (eq (syntax-class syntax) 4)
+                        (cdr syntax))))))
+      (cond
+       ((not (or (eq matching-paren (char-before oldpos))
+                 ;; The cdr might hold a new paren-class info rather than
+                 ;; a matching-char info, in which case the two CDRs
+                 ;; should match.
+                 (eq matching-paren (cdr (syntax-after (1- oldpos))))))
+        (message "Mismatched parentheses"))
+       ((not blinkpos)
+        (if (not blink-matching-paren-distance)
+            (message "Unmatched parenthesis")))
+       ((pos-visible-in-window-p blinkpos)
+        ;; Matching open within window, temporarily move to blinkpos but only
+        ;; if `blink-matching-paren-on-screen' is non-nil.
+        (and blink-matching-paren-on-screen
+             (not show-paren-mode)
+             (save-excursion
+               (goto-char blinkpos)
+               (sit-for blink-matching-delay))))
+       (t
+        (save-excursion
+          (goto-char blinkpos)
+          (let ((open-paren-line-string
+                 ;; Show what precedes the open in its line, if anything.
+                 (cond
+                  ((save-excursion (skip-chars-backward " \t") (not (bolp)))
+                   (buffer-substring (line-beginning-position)
+                                     (1+ blinkpos)))
+                  ;; Show what follows the open in its line, if anything.
+                  ((save-excursion
+                     (forward-char 1)
+                     (skip-chars-forward " \t")
+                     (not (eolp)))
+                   (buffer-substring blinkpos
+                                     (line-end-position)))
+                  ;; Otherwise show the previous nonblank line,
+                  ;; if there is one.
+                  ((save-excursion (skip-chars-backward "\n \t") (not (bobp)))
+                   (concat
+                    (buffer-substring (progn
+                                        (skip-chars-backward "\n \t")
+                                        (line-beginning-position))
+                                      (progn (end-of-line)
+                                             (skip-chars-backward " \t")
+                                             (point)))
+                    ;; Replace the newline and other whitespace with `...'.
+                    "..."
+                    (buffer-substring blinkpos (1+ blinkpos))))
+                  ;; There is nothing to show except the char itself.
+                  (t (buffer-substring blinkpos (1+ blinkpos))))))
+            (message "Matches %s"
+                     (substring-no-properties open-paren-line-string)))))))))
+
+;; Turned off because it makes dbx bomb out.
 (setq blink-paren-function 'blink-matching-open)
 \f
 ;; This executes C-g typed while Emacs is waiting for a command.
@@ -5255,10 +5419,10 @@ PREFIX is the string that represents this modifier in an event type symbol."
 \f
 ;;;; Keypad support.
 
-;;; Make the keypad keys act like ordinary typing keys.  If people add
-;;; bindings for the function key symbols, then those bindings will
-;;; override these, so this shouldn't interfere with any existing
-;;; bindings.
+;; Make the keypad keys act like ordinary typing keys.  If people add
+;; bindings for the function key symbols, then those bindings will
+;; override these, so this shouldn't interfere with any existing
+;; bindings.
 
 ;; Also tell read-char how to handle these keys.
 (mapc
@@ -5384,13 +5548,13 @@ after it has been set up properly in other respects."
       (funcall mode)
 
       ;; Set up other local variables.
-      (mapcar (lambda (v)
-               (condition-case ()      ;in case var is read-only
-                   (if (symbolp v)
-                       (makunbound v)
-                     (set (make-local-variable (car v)) (cdr v)))
-                 (error nil)))
-             lvars)
+      (mapc (lambda (v)
+             (condition-case ()        ;in case var is read-only
+                 (if (symbolp v)
+                     (makunbound v)
+                   (set (make-local-variable (car v)) (cdr v)))
+               (error nil)))
+           lvars)
 
       ;; Run any hooks (typically set up by the major mode
       ;; for cloning to work properly).
@@ -5452,36 +5616,33 @@ front of the list of recently selected ones."
 \f
 ;;; Handling of Backspace and Delete keys.
 
-(defcustom normal-erase-is-backspace
-  (and (not noninteractive)
-       (or (memq system-type '(ms-dos windows-nt))
-          (eq window-system 'mac)
-          (and (memq window-system '(x))
-               (fboundp 'x-backspace-delete-keys-p)
-               (x-backspace-delete-keys-p))
-          ;; If the terminal Emacs is running on has erase char
-          ;; set to ^H, use the Backspace key for deleting
-          ;; backward and, and the Delete key for deleting forward.
-          (and (null window-system)
-               (eq tty-erase-char ?\^H))))
-  "If non-nil, Delete key deletes forward and Backspace key deletes backward.
-
-On window systems, the default value of this option is chosen
-according to the keyboard used.  If the keyboard has both a Backspace
-key and a Delete key, and both are mapped to their usual meanings, the
-option's default value is set to t, so that Backspace can be used to
-delete backward, and Delete can be used to delete forward.
-
-If not running under a window system, customizing this option accomplishes
-a similar effect by mapping C-h, which is usually generated by the
-Backspace key, to DEL, and by mapping DEL to C-d via
-`keyboard-translate'.  The former functionality of C-h is available on
-the F1 key.  You should probably not use this setting if you don't
-have both Backspace, Delete and F1 keys.
+(defcustom normal-erase-is-backspace 'maybe
+  "Set the default behaviour of the Delete and Backspace keys.
+
+If set to t, Delete key deletes forward and Backspace key deletes
+backward.
+
+If set to nil, both Delete and Backspace keys delete backward.
+
+If set to 'maybe (which is the default), Emacs automatically
+selects a behaviour.  On window systems, the behaviour depends on
+the keyboard used.  If the keyboard has both a Backspace key and
+a Delete key, and both are mapped to their usual meanings, the
+option's default value is set to t, so that Backspace can be used
+to delete backward, and Delete can be used to delete forward.
+
+If not running under a window system, customizing this option
+accomplishes a similar effect by mapping C-h, which is usually
+generated by the Backspace key, to DEL, and by mapping DEL to C-d
+via `keyboard-translate'.  The former functionality of C-h is
+available on the F1 key.  You should probably not use this
+setting if you don't have both Backspace, Delete and F1 keys.
 
 Setting this variable with setq doesn't take effect.  Programmatically,
 call `normal-erase-is-backspace-mode' (which see) instead."
-  :type 'boolean
+  :type '(choice (const :tag "Off" nil)
+                (const :tag "Maybe" maybe)
+                (other :tag "On" t))
   :group 'editing-basics
   :version "21.1"
   :set (lambda (symbol value)
@@ -5491,17 +5652,37 @@ call `normal-erase-is-backspace-mode' (which see) instead."
             (normal-erase-is-backspace-mode (or value 0))
           (set-default symbol value))))
 
+(defun normal-erase-is-backspace-setup-frame (&optional frame)
+  "Set up `normal-erase-is-backspace-mode' on FRAME, if necessary."
+  (unless frame (setq frame (selected-frame)))
+  (with-selected-frame frame
+    (unless (terminal-parameter nil 'normal-erase-is-backspace)
+      (normal-erase-is-backspace-mode
+       (if (if (eq normal-erase-is-backspace 'maybe)
+               (and (not noninteractive)
+                    (or (memq system-type '(ms-dos windows-nt))
+                        (eq window-system 'mac)
+                        (and (memq window-system '(x))
+                             (fboundp 'x-backspace-delete-keys-p)
+                             (x-backspace-delete-keys-p))
+                        ;; If the terminal Emacs is running on has erase char
+                        ;; set to ^H, use the Backspace key for deleting
+                        ;; backward, and the Delete key for deleting forward.
+                        (and (null window-system)
+                             (eq tty-erase-char ?\^H))))
+             normal-erase-is-backspace)
+           1 0)))))
 
 (defun normal-erase-is-backspace-mode (&optional arg)
   "Toggle the Erase and Delete mode of the Backspace and Delete keys.
 
 With numeric arg, turn the mode on if and only if ARG is positive.
 
-On window systems, when this mode is on, Delete is mapped to C-d and
-Backspace is mapped to DEL; when this mode is off, both Delete and
-Backspace are mapped to DEL.  (The remapping goes via
-`function-key-map', so binding Delete or Backspace in the global or
-local keymap will override that.)
+On window systems, when this mode is on, Delete is mapped to C-d
+and Backspace is mapped to DEL; when this mode is off, both
+Delete and Backspace are mapped to DEL.  (The remapping goes via
+`local-function-key-map', so binding Delete or Backspace in the
+global or local keymap will override that.)
 
 In addition, on window systems, the bindings of C-Delete, M-Delete,
 C-M-Delete, C-Backspace, M-Backspace, and C-M-Backspace are changed in
@@ -5523,54 +5704,57 @@ have both Backspace, Delete and F1 keys.
 
 See also `normal-erase-is-backspace'."
   (interactive "P")
-  (setq normal-erase-is-backspace
-       (if arg
-           (> (prefix-numeric-value arg) 0)
-         (not normal-erase-is-backspace)))
-
-  (cond ((or (memq window-system '(x w32 mac pc))
-            (memq system-type '(ms-dos windows-nt)))
-        (let ((bindings
-               `(([C-delete] [C-backspace])
-                 ([M-delete] [M-backspace])
-                 ([C-M-delete] [C-M-backspace])
-                 (,esc-map
-                  [C-delete] [C-backspace])))
-              (old-state (lookup-key function-key-map [delete])))
-
-          (if normal-erase-is-backspace
+  (let ((enabled (or (and arg (> (prefix-numeric-value arg) 0))
+                    (and (not arg)
+                         (not (eq 1 (terminal-parameter
+                                     nil 'normal-erase-is-backspace)))))))
+    (set-terminal-parameter nil 'normal-erase-is-backspace
+                           (if enabled 1 0))
+
+    (cond ((or (memq window-system '(x w32 mac pc))
+              (memq system-type '(ms-dos windows-nt)))
+          (let* ((bindings
+                  `(([C-delete] [C-backspace])
+                    ([M-delete] [M-backspace])
+                    ([C-M-delete] [C-M-backspace])
+                    (,esc-map
+                     [C-delete] [C-backspace])))
+                 (old-state (lookup-key local-function-key-map [delete])))
+
+            (if enabled
+                (progn
+                  (define-key local-function-key-map [delete] [?\C-d])
+                  (define-key local-function-key-map [kp-delete] [?\C-d])
+                  (define-key local-function-key-map [backspace] [?\C-?]))
+              (define-key local-function-key-map [delete] [?\C-?])
+              (define-key local-function-key-map [kp-delete] [?\C-?])
+              (define-key local-function-key-map [backspace] [?\C-?]))
+
+            ;; Maybe swap bindings of C-delete and C-backspace, etc.
+            (unless (equal old-state (lookup-key local-function-key-map [delete]))
+              (dolist (binding bindings)
+                (let ((map global-map))
+                  (when (keymapp (car binding))
+                    (setq map (car binding) binding (cdr binding)))
+                  (let* ((key1 (nth 0 binding))
+                         (key2 (nth 1 binding))
+                         (binding1 (lookup-key map key1))
+                         (binding2 (lookup-key map key2)))
+                    (define-key map key1 binding2)
+                    (define-key map key2 binding1)))))))
+         (t
+          (if enabled
               (progn
-                (define-key function-key-map [delete] [?\C-d])
-                (define-key function-key-map [kp-delete] [?\C-d])
-                (define-key function-key-map [backspace] [?\C-?]))
-            (define-key function-key-map [delete] [?\C-?])
-            (define-key function-key-map [kp-delete] [?\C-?])
-            (define-key function-key-map [backspace] [?\C-?]))
-
-          ;; Maybe swap bindings of C-delete and C-backspace, etc.
-          (unless (equal old-state (lookup-key function-key-map [delete]))
-            (dolist (binding bindings)
-              (let ((map global-map))
-                (when (keymapp (car binding))
-                  (setq map (car binding) binding (cdr binding)))
-                (let* ((key1 (nth 0 binding))
-                       (key2 (nth 1 binding))
-                       (binding1 (lookup-key map key1))
-                       (binding2 (lookup-key map key2)))
-                  (define-key map key1 binding2)
-                  (define-key map key2 binding1)))))))
-        (t
-         (if normal-erase-is-backspace
-             (progn
-               (keyboard-translate ?\C-h ?\C-?)
-               (keyboard-translate ?\C-? ?\C-d))
-           (keyboard-translate ?\C-h ?\C-h)
-           (keyboard-translate ?\C-? ?\C-?))))
-
-  (run-hooks 'normal-erase-is-backspace-hook)
-  (if (interactive-p)
-      (message "Delete key deletes %s"
-              (if normal-erase-is-backspace "forward" "backward"))))
+                (keyboard-translate ?\C-h ?\C-?)
+                (keyboard-translate ?\C-? ?\C-d))
+            (keyboard-translate ?\C-h ?\C-h)
+            (keyboard-translate ?\C-? ?\C-?))))
+
+    (run-hooks 'normal-erase-is-backspace-hook)
+    (if (interactive-p)
+       (message "Delete key deletes %s"
+                (if (terminal-parameter nil 'normal-erase-is-backspace)
+                    "forward" "backward")))))
 \f
 (defvar vis-mode-saved-buffer-invisibility-spec nil
   "Saved value of `buffer-invisibility-spec' when Visible mode is on.")
index e3484bb0a4871179837c48467ba1d179a05e053f..5d4400958d6d09180de136df9559257c5d7a553d 100644 (file)
@@ -645,8 +645,12 @@ Point is moved to the end of the conflict."
         (error nil)))
     found))
 
-(defun smerge-refine-chopup-region (beg end file)
-  "Chopup the region into small elements, one per line."
+(defun smerge-refine-chopup-region (beg end file &optional preproc)
+  "Chopup the region into small elements, one per line.
+Save the result into FILE.
+If non-nil, PREPROC is called with no argument in a buffer that contains
+a copy of the text, just before chopping it up.  It can be used to replace
+chars to try and eliminate some spurious differences."
   ;; ediff chops up into words, where the definition of a word is
   ;; customizable.  Instead we here keep only one char per line.
   ;; The advantages are that there's nothing to configure, that we get very
@@ -661,14 +665,18 @@ Point is moved to the end of the conflict."
   (let ((buf (current-buffer)))
     (with-temp-buffer
       (insert-buffer-substring buf beg end)
+      (when preproc (goto-char (point-min)) (funcall preproc))
       (goto-char (point-min))
       (while (not (eobp))
         (forward-char 1)
+        ;; We add \n after each char except after \n, so we get one line per
+        ;; text char, where each line contains just one char, except for \n
+        ;; chars which are represented by the empty line.
         (unless (eq (char-before) ?\n) (insert ?\n)))
       (let ((coding-system-for-write 'emacs-mule))
         (write-region (point-min) (point-max) file nil 'nomessage)))))
 
-(defun smerge-refine-highlight-change (buf beg match-num1 match-num2)
+(defun smerge-refine-highlight-change (buf beg match-num1 match-num2 props)
   (let* ((startline (string-to-number (match-string match-num1)))
          (ol (make-overlay
               (+ beg startline -1)
@@ -676,30 +684,25 @@ Point is moved to the end of the conflict."
                          (string-to-number (match-string match-num2))
                        startline))
               buf
+              ;; Make them tend to shrink rather than spread when editing.
               'front-advance nil)))
-    (overlay-put ol 'smerge 'refine)
     (overlay-put ol 'evaporate t)
-    (overlay-put ol 'face 'smerge-refined-change)))
-
-
-(defun smerge-refine ()
-  "Highlight the parts of the conflict that are different."
-  (interactive)
-  ;; FIXME: make it work with 3-way conflicts.
-  (smerge-match-conflict)
-  (remove-overlays (match-beginning 0) (match-end 0) 'smerge 'refine)
-  (smerge-ensure-match 1)
-  (smerge-ensure-match 3)
-  (let ((buf (current-buffer))
-        ;; Read them before the match-data gets clobbered.
-       (beg1 (match-beginning 1)) (end1 (match-end 1))
-       (beg2 (match-beginning 3)) (end2 (match-end 3))
-       (file1 (make-temp-file "smerge1"))
-       (file2 (make-temp-file "smerge2")))
+    (dolist (x props)
+      (overlay-put ol (car x) (cdr x)))))
+
+(defun smerge-refine-subst (beg1 end1 beg2 end2 props &optional preproc)
+  "Show fine differences in the two regions BEG1..END1 and BEG2..END2.
+PROPS is an alist of properties to put (via overlays) on the changes.
+If non-nil, PREPROC is called with no argument in a buffer that contains
+a copy of a region, just before preparing it to for `diff'.  It can be used to
+replace chars to try and eliminate some spurious differences."
+  (let* ((buf (current-buffer))
+         (file1 (make-temp-file "diff1"))
+         (file2 (make-temp-file "diff2")))
 
     ;; Chop up regions into smaller elements and save into files.
-    (smerge-refine-chopup-region beg1 end1 file1)
-    (smerge-refine-chopup-region beg2 end2 file2)
+    (smerge-refine-chopup-region beg1 end1 file1 preproc)
+    (smerge-refine-chopup-region beg2 end2 file2 preproc)
 
     ;; Call diff on those files.
     (unwind-protect
@@ -716,15 +719,28 @@ Point is moved to the end of the conflict."
                        (buffer-substring (point) (line-end-position)))
               (let ((op (char-after (match-beginning 3))))
                 (when (memq op '(?d ?c))
-                  (smerge-refine-highlight-change buf beg1 1 2))
+                  (smerge-refine-highlight-change buf beg1 1 2 props))
                 (when (memq op '(?a ?c))
-                  (smerge-refine-highlight-change buf beg2 4 5)))
+                  (smerge-refine-highlight-change buf beg2 4 5 props)))
               (forward-line 1)                            ;Skip hunk header.
               (and (re-search-forward "^[0-9]" nil 'move) ;Skip hunk body.
                    (goto-char (match-beginning 0))))))
       (delete-file file1)
       (delete-file file2))))
 
+(defun smerge-refine ()
+  "Highlight the parts of the conflict that are different."
+  (interactive)
+  ;; FIXME: make it work with 3-way conflicts.
+  (smerge-match-conflict)
+  (remove-overlays (match-beginning 0) (match-end 0) 'smerge 'refine)
+  (smerge-ensure-match 1)
+  (smerge-ensure-match 3)
+  (smerge-refine-subst (match-beginning 1) (match-end 1)
+                       (match-beginning 3) (match-end 3)
+                       '((smerge . refine)
+                         (face . smerge-refined-change))))
+
 (defun smerge-diff (n1 n2)
   (smerge-match-conflict)
   (smerge-ensure-match n1)
index f90ffeba0efa18a927f8f41d45bcd25f8a7c5b8f..e0b4c794687ee6b6fd9df94e44d8ed1ba2a1a151 100644 (file)
 (defvar command-line-processed nil
   "Non-nil once command line has been processed.")
 
+(defvar window-system initial-window-system
+  "Name of window system the selected frame is displaying through.
+The value is a symbol--for instance, `x' for X windows.
+The value is nil if the selected frame is on a text-only-terminal.")
+
+(make-variable-frame-local 'window-system)
+
 (defgroup initialization nil
   "Emacs start-up procedure."
-  :group 'internal)
+  :group 'environment)
+
+(defcustom initial-buffer-choice nil
+  "Buffer to show after starting Emacs.
+If the value is nil and `inhibit-startup-screen' is nil, show the
+startup screen.  If the value is string, visit the specified file or
+directory using `find-file'.  If t, open the `*scratch*' buffer."
+  :type '(choice
+         (const     :tag "Startup screen" nil)
+         (directory :tag "Directory" :value "~/")
+         (file      :tag "File" :value "~/file.txt")
+         (const     :tag "Lisp scratch buffer" t))
+  :version "23.1"
+  :group 'initialization)
 
-(defcustom inhibit-splash-screen nil
+(defcustom inhibit-startup-screen nil
   "Non-nil inhibits the startup screen.
 It also inhibits display of the initial message in the `*scratch*' buffer.
 
@@ -49,7 +69,10 @@ you are familiar with the contents of the startup screen."
   :type 'boolean
   :group 'initialization)
 
-(defvaralias 'inhibit-startup-message 'inhibit-splash-screen)
+(defvaralias 'inhibit-splash-screen 'inhibit-startup-screen)
+(defvaralias 'inhibit-startup-message 'inhibit-startup-screen)
+
+(defvar startup-screen-inhibit-startup-screen nil)
 
 (defcustom inhibit-startup-echo-area-message nil
   "*Non-nil inhibits the initial startup echo area message.
@@ -84,6 +107,12 @@ the remaining command-line args are in the variable `command-line-args-left'.")
 (defvar command-line-args-left nil
   "List of command-line args not yet processed.")
 
+(defvaralias 'argv 'command-line-args-left
+  "List of command-line args not yet processed.
+This is a convenience alias, so that one can write \(pop argv\)
+inside of --eval command line arguments in order to access
+following arguments.")
+
 (defvar command-line-functions nil    ;; lrs 7/31/89
   "List of functions to process unrecognized command-line arguments.
 Each function should access the dynamically bound variables
@@ -263,9 +292,9 @@ init file is read, in case it sets `mail-host-address'."
 (defcustom auto-save-list-file-prefix
   (cond ((eq system-type 'ms-dos)
         ;; MS-DOS cannot have initial dot, and allows only 8.3 names
-        "~/_emacs.d/auto-save.list/_s")
+        (concat user-emacs-directory "auto-save.list/_s"))
        (t
-        "~/.emacs.d/auto-save-list/.saves-"))
+        (concat user-emacs-directory "auto-save-list/.saves-")))
   "Prefix for generating `auto-save-list-file-name'.
 This is used after reading your `.emacs' file to initialize
 `auto-save-list-file-name', by appending Emacs's pid and the system name,
@@ -295,6 +324,18 @@ from being initialized."
 (defvar pure-space-overflow nil
   "Non-nil if building Emacs overflowed pure space.")
 
+(defvar pure-space-overflow-message "\
+Warning Warning!!!  Pure space overflow    !!!Warning Warning
+\(See the node Pure Storage in the Lisp manual for details.)\n")
+
+(defvar tutorial-directory nil
+  "Directory containing the Emacs TUTORIAL files.")
+
+;; Get correct value in a dumped, installed Emacs.
+(eval-at-startup
+ (setq tutorial-directory (file-name-as-directory
+                           (expand-file-name "tutorials" data-directory))))
+
 (defun normal-top-level-add-subdirs-to-load-path ()
   "Add all subdirectories of current directory to `load-path'.
 More precisely, this uses only the subdirectories whose names
@@ -437,36 +478,19 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
        ;; for instance due to a dense colormap.
        (when (or frame-initial-frame
                  ;; If frame-initial-frame has no meaning, do this anyway.
-                 (not (and window-system
+                 (not (and initial-window-system
                            (not noninteractive)
-                           (not (eq window-system 'pc)))))
+                           (not (eq initial-window-system 'pc)))))
          ;; Modify the initial frame based on what .emacs puts into
          ;; ...-frame-alist.
          (if (fboundp 'frame-notice-user-settings)
              (frame-notice-user-settings))
+         ;; Set the faces for the initial background mode even if
+         ;; frame-notice-user-settings didn't (such as on a tty).
+         ;; frame-set-background-mode is idempotent, so it won't
+         ;; cause any harm if it's already been done.
          (if (fboundp 'frame-set-background-mode)
-             ;; Set the faces for the initial background mode even if
-             ;; frame-notice-user-settings didn't (such as on a tty).
-             ;; frame-set-background-mode is idempotent, so it won't
-             ;; cause any harm if it's already been done.
-             (let ((frame (selected-frame))
-                   term)
-               (when (and (null window-system)
-                          ;; Don't override default set by files in lisp/term.
-                          (null default-frame-background-mode)
-                          (let ((bg (frame-parameter frame 'background-color)))
-                            (or (null bg)
-                                (member bg '(unspecified "unspecified-bg"
-                                                         "unspecified-fg")))))
-
-                 (setq term (getenv "TERM"))
-                 ;; Some files in lisp/term do a better job with the
-                 ;; background mode, but we leave this here anyway, in
-                 ;; case they remove those files.
-                 (if (string-match "^\\(xterm\\|rxvt\\|dtterm\\|eterm\\)"
-                                   term)
-                     (setq default-frame-background-mode 'light)))
-               (frame-set-background-mode (selected-frame)))))
+             (frame-set-background-mode (selected-frame))))
 
        ;; Now we know the user's default font, so add it to the menu.
        (if (fboundp 'font-menu-add-default)
@@ -475,7 +499,25 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
             (run-hooks 'window-setup-hook))
        (or menubar-bindings-done
            (if (display-popup-menus-p)
-               (precompute-menubar-bindings)))))))
+               (precompute-menubar-bindings)))))
+    ;; Subprocesses of Emacs do not have direct access to the terminal, so
+    ;; unless told otherwise they should only assume a dumb terminal.
+    ;; We are careful to do it late (after term-setup-hook), although the
+    ;; new multi-tty code does not use $TERM any more there anyway.
+    (setenv "TERM" "dumb")
+    ;; Remove DISPLAY from the process-environment as well.  This allows
+    ;; `callproc.c' to give it a useful adaptive default which is either
+    ;; the value of the `display' frame-parameter or the DISPLAY value
+    ;; from initial-environment.
+    (let ((display (frame-parameter nil 'display)))
+      ;; Be careful which DISPLAY to remove from process-environment: follow
+      ;; the logic of `callproc.c'.
+      (if (stringp display) (setq display (concat "DISPLAY=" display))
+        (dolist (varval initial-environment)
+          (if (string-match "\\`DISPLAY=" varval)
+              (setq display varval))))
+      (when display
+        (delete display process-environment)))))
 
 ;; Precompute the keyboard equivalents in the menu bar items.
 (defun precompute-menubar-bindings ()
@@ -507,6 +549,20 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
 (defvar tool-bar-originally-present nil
   "Non-nil if tool-bars are present before user and site init files are read.")
 
+(defvar handle-args-function-alist '((nil . tty-handle-args))
+  "Functions for processing window-system dependent command-line arguments.
+Window system startup files should add their own function to this
+alist, which should parse the command line arguments.  Those
+pertaining to the window system should be processed and removed
+from the returned command line.")
+
+(defvar window-system-initialization-alist '((nil . ignore))
+  "Alist of window-system initialization functions.
+Window-system startup files should add their own initialization
+function to this list.  The function should take no arguments,
+and initialize the window system environment to prepare for
+opening the first frame (e.g. open a connection to an X server).")
+
 ;; Handle the X-like command-line arguments "-fg", "-bg", "-name", etc.
 (defun tty-handle-args (args)
   (let (rest)
@@ -611,16 +667,22 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
     (setq eol-mnemonic-dos  "(DOS)"
           eol-mnemonic-mac  "(Mac)")))
 
-  ;; Read window system's init file if using a window system.
+  ;; Make sure window system's init file was loaded in loadup.el if using a window system.
   (condition-case error
-      (if (and window-system (not noninteractive))
-         (load (concat term-file-prefix
-                       (symbol-name window-system)
-                       "-win")
-               ;; Every window system should have a startup file;
-               ;; barf if we can't find it.
-               nil t))
-    ;; If we can't read it, print the error message and exit.
+    (unless noninteractive
+      (if (and initial-window-system
+              (not (featurep
+                    (intern (concat (symbol-name initial-window-system) "-win")))))
+         (error "Unsupported window system `%s'" initial-window-system))
+      ;; Process window-system specific command line parameters.
+      (setq command-line-args
+           (funcall (or (cdr (assq initial-window-system handle-args-function-alist))
+                        (error "Unsupported window system `%s'" initial-window-system))
+                    command-line-args))
+      ;; Initialize the window system. (Open connection, etc.)
+      (funcall (or (cdr (assq initial-window-system window-system-initialization-alist))
+                  (error "Unsupported window system `%s'" initial-window-system))))
+    ;; If there was an error, print the error message and exit.
     (error
      (princ
       (if (eq (car error) 'error)
@@ -636,13 +698,9 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
                              (cdr error) ", "))))
       'external-debugging-output)
      (terpri 'external-debugging-output)
-     (setq window-system nil)
+     (setq initial-window-system nil)
      (kill-emacs)))
 
-  ;; Windowed displays do this inside their *-win.el.
-  (unless (or (display-graphic-p) noninteractive)
-    (setq command-line-args (tty-handle-args command-line-args)))
-
   (set-locale-environment nil)
 
   ;; Convert preloaded file names in load-history to absolute.
@@ -765,7 +823,7 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
   ;; If frame was created with a menu bar, set menu-bar-mode on.
   (unless (or noninteractive
              emacs-basic-display
-              (and (memq window-system '(x w32))
+              (and (memq initial-window-system '(x w32))
                    (<= (frame-parameter nil 'menu-bar-lines) 0)))
     (menu-bar-mode 1))
 
@@ -779,7 +837,6 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
   ;; Can't do this init in defcustom because the relevant variables
   ;; are not set.
   (custom-reevaluate-setting 'blink-cursor-mode)
-  (custom-reevaluate-setting 'normal-erase-is-backspace)
   (custom-reevaluate-setting 'tooltip-mode)
   (custom-reevaluate-setting 'global-font-lock-mode)
   (custom-reevaluate-setting 'mouse-wheel-down-event)
@@ -788,13 +845,15 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
   (custom-reevaluate-setting 'send-mail-function)
   (custom-reevaluate-setting 'focus-follows-mouse)
 
+  (normal-erase-is-backspace-setup-frame)
+
   ;; Register default TTY colors for the case the terminal hasn't a
-  ;; terminal init file.
-  (unless (memq window-system '(x w32 mac))
-    ;; We do this regardles of whether the terminal supports colors
-    ;; or not, since they can switch that support on or off in
-    ;; mid-session by setting the tty-color-mode frame parameter.
-    (tty-register-default-colors))
+  ;; terminal init file.  We do this regardles of whether the terminal
+  ;; supports colors or not and regardless the current display type,
+  ;; since users can connect to color-capable terminals and also
+  ;; switch color support on or off in mid-session by setting the
+  ;; tty-color-mode frame parameter.
+  (tty-register-default-colors)
 
   ;; Record whether the tool-bar is present before the user and site
   ;; init files are processed.  frame-notice-user-settings uses this
@@ -823,8 +882,8 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
        (load site-run-file t t))
 
     ;; Sites should not disable this.  Only individuals should disable
-    ;; the startup message.
-    (setq inhibit-startup-message nil)
+    ;; the startup screen.
+    (setq inhibit-startup-screen nil)
 
     ;; Warn for invalid user name.
     (when init-file-user
@@ -918,7 +977,7 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
                            (setq user-init-file source))))
 
                      (unless inhibit-default-init
-                        (let ((inhibit-startup-message nil))
+                        (let ((inhibit-startup-screen nil))
                           ;; Users are supposed to be told their rights.
                           ;; (Plus how to get help and how to undo.)
                           ;; Don't you dare turn this off for anyone
@@ -958,11 +1017,9 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
            (with-current-buffer (window-buffer)
              (deactivate-mark)))
 
-       ;; If the user has a file of abbrevs, read it.
-        ;; FIXME: after the 22.0 release this should be changed so
-       ;; that it does not read the abbrev file when -batch is used
-       ;; on the command line.
-       (when (and (file-exists-p abbrev-file-name)
+       ;; If the user has a file of abbrevs, read it (unless -batch).
+       (when (and (not noninteractive)
+                  (file-exists-p abbrev-file-name)
                   (file-readable-p abbrev-file-name))
            (quietly-read-abbrev-file abbrev-file-name))
 
@@ -983,11 +1040,11 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
        ;; buffers (probably *scratch*, *Messages*, *Minibuff-0*).
        ;; Arguably this should only be done if they're free of
        ;; multibyte characters.
-       (mapcar (lambda (buffer)
-                 (with-current-buffer buffer
-                   (if enable-multibyte-characters
-                       (set-buffer-multibyte nil))))
-               (buffer-list))
+       (mapc (lambda (buffer)
+               (with-current-buffer buffer
+                 (if enable-multibyte-characters
+                     (set-buffer-multibyte nil))))
+             (buffer-list))
        ;; Also re-set the language environment in case it was
        ;; originally done before unibyte was set and is sensitive to
        ;; unibyte (display table, terminal coding system &c).
@@ -1064,31 +1121,8 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
   ;; Load library for our terminal type.
   ;; User init file can set term-file-prefix to nil to prevent this.
   (unless (or noninteractive
-              window-system
-              (null term-file-prefix))
-    (let* ((TERM (getenv "TERM"))
-           (term TERM)
-          hyphend)
-      (while (and term
-                  (not (load (concat term-file-prefix term) t t)))
-        ;; Strip off last hyphen and what follows, then try again
-        (setq term
-              (if (setq hyphend (string-match "[-_][^-_]+\\'" term))
-                  (substring term 0 hyphend)
-                nil)))
-      (setq term TERM)
-      ;; The terminal file has been loaded, now call the terminal specific
-      ;; initialization function.
-      (while term
-       (let ((term-init-func (intern-soft (concat "terminal-init-" term))))
-         (if (not (fboundp term-init-func))
-              ;; Strip off last hyphen and what follows, then try again
-              (setq term
-                    (if (setq hyphend (string-match "[-_][^-_]+\\'" term))
-                        (substring term 0 hyphend)
-                      nil))
-            (setq term nil)
-           (funcall term-init-func))))))
+              initial-window-system)
+    (tty-run-terminal-initialization (selected-frame)))
 
   ;; Update the out-of-memory error message based on user's key bindings
   ;; for save-some-buffers.
@@ -1117,7 +1151,7 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
 ")
   "Initial message displayed in *scratch* buffer at startup.
 If this is nil, no message will be displayed.
-If `inhibit-splash-screen' is non-nil, then no message is displayed,
+If `inhibit-startup-screen' is non-nil, then no message is displayed,
 regardless of the value of this variable."
   :type '(choice (text :tag "Message")
                 (const :tag "none" nil))
@@ -1128,88 +1162,151 @@ regardless of the value of this variable."
 ;;; Fancy splash screen
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defvar fancy-splash-text
-  '((:face (variable-pitch :weight bold)
-          "Important Help menu items:\n"
-          :face variable-pitch
-           (lambda ()
-             (let* ((en "TUTORIAL")
-                    (tut (or (get-language-info current-language-environment
-                                                'tutorial)
-                             en))
-                    (title (with-temp-buffer
-                             (insert-file-contents
-                              (expand-file-name tut data-directory)
-                              nil 0 256)
-                             (search-forward ".")
-                             (buffer-substring (point-min) (1- (point))))))
-               ;; If there is a specific tutorial for the current language
-               ;; environment and it is not English, append its title.
-               (concat
-                "Emacs Tutorial\t\tLearn how to use Emacs efficiently"
-                (if (string= en tut)
-                    ""
-                  (concat " (" title ")"))
-                "\n")))
-           :face variable-pitch "\
-Emacs FAQ\t\tFrequently asked questions and answers
-View Emacs Manual\t\tView the Emacs manual using Info
-Absence of Warranty\tGNU Emacs comes with "
-          :face (variable-pitch :slant oblique)
-          "ABSOLUTELY NO WARRANTY\n"
-          :face variable-pitch
-          "\
-Copying Conditions\t\tConditions for redistributing and changing Emacs
-Getting New Versions\tHow to obtain the latest version of Emacs
-More Manuals / Ordering Manuals       Buying printed manuals from the FSF\n")
-  (:face variable-pitch
-        "\nTo quit a partially entered command, type "
-        :face default
-        "Control-g"
-        :face variable-pitch
-        ".
-
-Emacs Guided Tour\t\tSee http://www.gnu.org/software/emacs/tour/
-
-"
-        :face (variable-pitch :weight bold)
-        "Useful File menu items:\n"
-        :face variable-pitch
-        "Exit Emacs\t\t(Or type "
-        :face default
-        "Control-x"
-        :face variable-pitch
-        " followed by "
-        :face default
-        "Control-c"
-        :face variable-pitch
-        ")
-Recover Crashed Session\tRecover files you were editing before a crash\n"
-          ))
+(defvar fancy-startup-text
+  '((:face (variable-pitch :foreground "red")
+     "Welcome to "
+     :link ("GNU Emacs"
+           (lambda (button) (browse-url "http://www.gnu.org/software/emacs/"))
+           "Browse http://www.gnu.org/software/emacs/")
+     ", one component of the "
+     :link
+     (lambda ()
+       (if (eq system-type 'gnu/linux)
+          '("GNU/Linux"
+            (lambda (button) (browse-url "http://www.gnu.org/gnu/linux-and-gnu.html"))
+            "Browse http://www.gnu.org/gnu/linux-and-gnu.html")
+        '("GNU" (lambda (button) (describe-project))
+          "Display info on the GNU project")))
+     " operating system.\n"
+     :face variable-pitch "To quit a partially entered command, type "
+     :face default "Control-g"
+     :face variable-pitch ".\n\n"
+     :link ("Emacs Tutorial" (lambda (button) (help-with-tutorial)))
+     "\tLearn basic keystroke commands"
+     (lambda ()
+       (let* ((en "TUTORIAL")
+             (tut (or (get-language-info current-language-environment
+                                         'tutorial)
+                      en))
+             (title (with-temp-buffer
+                      (insert-file-contents
+                       (expand-file-name tut tutorial-directory)
+                       nil 0 256)
+                      (search-forward ".")
+                      (buffer-substring (point-min) (1- (point))))))
+        ;; If there is a specific tutorial for the current language
+        ;; environment and it is not English, append its title.
+        (if (string= en tut)
+            ""
+          (concat " (" title ")"))))
+     "\n"
+     :face variable-pitch
+     :link ("Emacs Guided Tour"
+           (lambda (button) (browse-url "http://www.gnu.org/software/emacs/tour/"))
+           "Browse http://www.gnu.org/software/emacs/tour/")
+     "\tOverview of Emacs features\n"
+     :link ("View Emacs Manual" (lambda (button) (info-emacs-manual)))
+     "\tView the Emacs manual using Info\n"
+     :link ("Absence of Warranty" (lambda (button) (describe-no-warranty)))
+     "\tGNU Emacs comes with "
+     :face (variable-pitch :slant oblique)
+     "ABSOLUTELY NO WARRANTY\n"
+     :face variable-pitch
+     :link ("Copying Conditions" (lambda (button) (describe-copying)))
+     "\tConditions for redistributing and changing Emacs\n"
+     :link ("Ordering Manuals" (lambda (button) (view-order-manuals)))
+     "\tPurchasing printed copies of manuals\n"
+     "\n"))
   "A list of texts to show in the middle part of splash screens.
 Each element in the list should be a list of strings or pairs
 `:face FACE', like `fancy-splash-insert' accepts them.")
 
+(defvar fancy-about-text
+  '((:face (variable-pitch :foreground "red")
+     "This is "
+     :link ("GNU Emacs"
+           (lambda (button) (browse-url "http://www.gnu.org/software/emacs/"))
+           "Browse http://www.gnu.org/software/emacs/")
+     ", one component of the "
+     :link
+     (lambda ()
+       (if (eq system-type 'gnu/linux)
+          '("GNU/Linux"
+            (lambda (button) (browse-url "http://www.gnu.org/gnu/linux-and-gnu.html"))
+            "Browse http://www.gnu.org/gnu/linux-and-gnu.html")
+        '("GNU" (lambda (button) (describe-project))
+          "Display info on the GNU project.")))
+     " operating system.\n"
+     :face (lambda ()
+            (list 'variable-pitch :foreground
+                  (if (eq (frame-parameter nil 'background-mode) 'dark)
+                      "cyan" "darkblue")))
+     "\n"
+     (lambda () (emacs-version))
+     "\n"
+     :face (variable-pitch :height 0.5)
+     (lambda () emacs-copyright)
+     "\n\n"
+     :face variable-pitch
+     :link ("Authors"
+           (lambda (button)
+             (view-file (expand-file-name "AUTHORS" data-directory))
+             (goto-char (point-min))))
+     "\tMany people have contributed code included in GNU Emacs\n"
+     :link ("Contributing"
+           (lambda (button)
+             (view-file (expand-file-name "CONTRIBUTE" data-directory))
+             (goto-char (point-min))))
+     "\tHow to contribute improvements to Emacs\n"
+     "\n"
+     :link ("GNU and Freedom" (lambda (button) (describe-project)))
+     "\tWhy we developed GNU Emacs, and the GNU operating system\n"
+     :link ("Absence of Warranty" (lambda (button) (describe-no-warranty)))
+     "\tGNU Emacs comes with "
+     :face (variable-pitch :slant oblique)
+     "ABSOLUTELY NO WARRANTY\n"
+     :face variable-pitch
+     :link ("Copying Conditions" (lambda (button) (describe-copying)))
+     "\tConditions for redistributing and changing Emacs\n"
+     :link ("Getting New Versions" (lambda (button) (describe-distribution)))
+     "\tHow to obtain the latest version of Emacs\n"
+     :link ("Ordering Manuals" (lambda (button) (view-order-manuals)))
+     "\tBuying printed manuals from the FSF\n"
+     "\n"
+     :link ("Emacs Tutorial" (lambda (button) (help-with-tutorial)))
+     "\tLearn basic Emacs keystroke commands"
+     (lambda ()
+       (let* ((en "TUTORIAL")
+             (tut (or (get-language-info current-language-environment
+                                         'tutorial)
+                      en))
+             (title (with-temp-buffer
+                      (insert-file-contents
+                       (expand-file-name tut tutorial-directory)
+                       nil 0 256)
+                      (search-forward ".")
+                      (buffer-substring (point-min) (1- (point))))))
+        ;; If there is a specific tutorial for the current language
+        ;; environment and it is not English, append its title.
+        (if (string= en tut)
+            ""
+          (concat " (" title ")"))))
+     "\n"
+     :link ("Emacs Guided Tour"
+           (lambda (button) (browse-url "http://www.gnu.org/software/emacs/tour/"))
+           "Browse http://www.gnu.org/software/emacs/tour/")
+     "\tSee an overview of the many facilities of GNU Emacs"
+     ))
+  "A list of texts to show in the middle part of the About screen.
+Each element in the list should be a list of strings or pairs
+`:face FACE', like `fancy-splash-insert' accepts them.")
+
 
 (defgroup fancy-splash-screen ()
   "Fancy splash screen when Emacs starts."
   :version "21.1"
   :group 'initialization)
 
-
-(defcustom fancy-splash-delay 7
-  "*Delay in seconds between splash screens."
-  :group 'fancy-splash-screen
-  :type 'integer)
-
-
-(defcustom fancy-splash-max-time 30
-  "*Show splash screens for at most this number of seconds.
-Values less than twice `fancy-splash-delay' are ignored."
-  :group 'fancy-splash-screen
-  :type 'integer)
-
-
 (defcustom fancy-splash-image nil
   "*The image to show in the splash screens, or nil for defaults."
   :group 'fancy-splash-screen
@@ -1217,30 +1314,54 @@ Values less than twice `fancy-splash-delay' are ignored."
                 (file :tag "File")))
 
 
+(defvar splash-screen-keymap
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map)
+    (set-keymap-parent map button-buffer-map)
+    (define-key map "\C-?" 'scroll-down)
+    (define-key map " " 'scroll-up)
+    (define-key map "q" 'exit-splash-screen)
+    map)
+  "Keymap for splash screen buffer.")
+
 ;; These are temporary storage areas for the splash screen display.
 
-(defvar fancy-current-text nil)
 (defvar fancy-splash-help-echo nil)
-(defvar fancy-splash-stop-time nil)
-(defvar fancy-splash-outer-buffer nil)
-(defvar fancy-splash-last-input-event nil)
 
 (defun fancy-splash-insert (&rest args)
   "Insert text into the current buffer, with faces.
-Arguments from ARGS should be either strings, functions called
-with no args that return a string, or pairs `:face FACE',
-where FACE is a valid face specification, as it can be used with
-`put-text-property'."
+Arguments from ARGS should be either strings; functions called
+with no args that return a string; pairs `:face FACE', where FACE
+is a face specification usable with `put-text-property'; or pairs
+`:link LINK' where LINK is a list of arguments to pass to
+`insert-button', of the form (LABEL ACTION [HELP-ECHO]), which
+specifies the button's label, `action' property and help-echo string.
+FACE and LINK can also be functions, which are evaluated to obtain
+a face or button specification."
   (let ((current-face nil))
     (while args
-      (if (eq (car args) :face)
-         (setq args (cdr args) current-face (car args))
-       (insert (propertize (let ((it (car args)))
-                              (if (functionp it)
-                                  (funcall it)
-                                it))
-                           'face current-face
-                           'help-echo fancy-splash-help-echo)))
+      (cond ((eq (car args) :face)
+            (setq args (cdr args) current-face (car args))
+            (if (functionp current-face)
+                (setq current-face (funcall current-face))))
+           ((eq (car args) :link)
+            (setq args (cdr args))
+            (let ((spec (car args)))
+              (if (functionp spec)
+                  (setq spec (funcall spec)))
+              (insert-button (car spec)
+                             'face (list 'link current-face)
+                             'action (cadr spec)
+                             'help-echo (concat "mouse-2, RET: "
+                                                (or (nth 2 spec)
+                                                    "Follow this link"))
+                             'follow-link t)))
+           (t (insert (propertize (let ((it (car args)))
+                                    (if (functionp it)
+                                        (funcall it)
+                                      it))
+                                  'face current-face
+                                  'help-echo fancy-splash-help-echo))))
       (setq args (cdr args)))))
 
 
@@ -1250,11 +1371,11 @@ where FACE is a valid face specification, as it can be used with
                            fancy-splash-image)
                           ((and (display-color-p)
                                 (image-type-available-p 'xpm))
-                           (if (and (fboundp 'x-display-planes)
-                                    (= (funcall 'x-display-planes) 8))
-                               "splash8.xpm"
-                             "splash.xpm"))
-                          (t "splash.pbm")))
+                            (if (and (fboundp 'x-display-planes)
+                                     (= (funcall 'x-display-planes) 8))
+                                "splash8.xpm"
+                              "splash.xpm"))
+                            (t "splash.pbm")))
         (img (create-image image-file))
         (image-width (and img (car (image-size img))))
         (window-width (window-width (selected-window))))
@@ -1270,52 +1391,41 @@ where FACE is a valid face specification, as it can be used with
                   (eq (frame-parameter nil 'background-mode) 'dark))
          (setq img (append img '(:color-symbols (("#000000" . "gray30"))))))
 
-       ;; Insert the image with a help-echo and a keymap.
-       (let ((map (make-sparse-keymap))
-             (help-echo "mouse-2: browse http://www.gnu.org/"))
-         (define-key map [mouse-2]
-           (lambda ()
-             (interactive)
-             (browse-url "http://www.gnu.org/")
-             (throw 'exit nil)))
-         (define-key map [down-mouse-2] 'ignore)
-         (define-key map [up-mouse-2] 'ignore)
-         (insert-image img (propertize "xxx" 'help-echo help-echo
-                                       'keymap map)))
-       (insert "\n"))))
-  (fancy-splash-insert
-   :face '(variable-pitch :foreground "red")
-   (if (eq system-type 'gnu/linux)
-       "GNU Emacs is one component of the GNU/Linux operating system."
-     "GNU Emacs is one component of the GNU operating system."))
-  (insert "\n")
-  (fancy-splash-insert
-   :face 'variable-pitch
-   "You can do basic editing with the menu bar and scroll bar \
-using the mouse.\n\n")
-  (when fancy-splash-outer-buffer
-    (fancy-splash-insert
-     :face 'variable-pitch
-     "Type "
-     :face 'default
-     "Control-l"
-     :face 'variable-pitch
-     " to begin editing"
-     (if (equal (buffer-name fancy-splash-outer-buffer)
-               "*scratch*")
-        ".\n"
-       " your file.\n"))))
-
-(defun fancy-splash-tail ()
+       ;; Insert the image with a help-echo and a link.
+       (make-button (prog1 (point) (insert-image img)) (point)
+                    'face 'default
+                    'help-echo "mouse-2, RET: Browse http://www.gnu.org/"
+                    'action (lambda (button) (browse-url "http://www.gnu.org/"))
+                    'follow-link t)
+       (insert "\n\n")))))
+
+(defun fancy-startup-tail (&optional concise)
   "Insert the tail part of the splash screen into the current buffer."
   (let ((fg (if (eq (frame-parameter nil 'background-mode) 'dark)
                "cyan" "darkblue")))
+    (unless concise
+      (fancy-splash-insert
+       :face 'variable-pitch
+       "\nTo start...     "
+       :link '("Open a File"
+              (lambda (button) (call-interactively 'find-file))
+              "Specify a new file's name, to edit the file")
+       "     "
+       :link '("Open Home Directory"
+              (lambda (button) (dired "~"))
+              "Open your home directory, to operate on its files")
+       "     "
+       :link '("Customize Startup"
+              (lambda (button) (customize-group 'initialization))
+              "Change initialization settings including this screen")
+       "\n"))
     (fancy-splash-insert :face `(variable-pitch :foreground ,fg)
                         "\nThis is "
                         (emacs-version)
                         "\n"
                         :face '(variable-pitch :height 0.5)
-                        "Copyright (C) 2007 Free Software Foundation, Inc.")
+                        emacs-copyright
+                        "\n")
     (and auto-save-list-file-prefix
         ;; Don't signal an error if the
         ;; directory for auto-save-list files
@@ -1330,151 +1440,120 @@ using the mouse.\n\n")
                                 auto-save-list-file-prefix)))
          t)
         (fancy-splash-insert :face '(variable-pitch :foreground "red")
-                             "\n\nIf an Emacs session crashed recently, "
+                             "\nIf an Emacs session crashed recently, "
                              "type "
                              :face '(fixed-pitch :foreground "red")
                              "Meta-x recover-session RET"
                              :face '(variable-pitch :foreground "red")
                              "\nto recover"
-                             " the files you were editing."))))
-
-(defun fancy-splash-screens-1 (buffer)
-  "Timer function displaying a splash screen."
-  (when (> (float-time) fancy-splash-stop-time)
-    (throw 'stop-splashing nil))
-  (unless fancy-current-text
-    (setq fancy-current-text fancy-splash-text))
-  (let ((text (car fancy-current-text)))
-    (set-buffer buffer)
-    (erase-buffer)
-    (if pure-space-overflow
-       (insert "\
-Warning Warning!!!  Pure space overflow    !!!Warning Warning
-\(See the node Pure Storage in the Lisp manual for details.)\n"))
-    (fancy-splash-head)
-    (apply #'fancy-splash-insert text)
-    (fancy-splash-tail)
-    (unless (current-message)
-      (message fancy-splash-help-echo))
-    (set-buffer-modified-p nil)
-    (goto-char (point-min))
-    (force-mode-line-update)
-    (setq fancy-current-text (cdr fancy-current-text))))
-
-
-(defun fancy-splash-default-action ()
-  "Stop displaying the splash screen buffer.
-This is an internal function used to turn off the splash screen after
-the user caused an input event by hitting a key or clicking with the
-mouse."
-  (interactive)
-  (if (and (memq 'down (event-modifiers last-command-event))
-          (eq (posn-window (event-start last-command-event))
-              (selected-window)))
-      ;; This is a mouse-down event in the spash screen window.
-      ;; Ignore it and consume the corresponding mouse-up event.
-      (read-event)
-    (push last-command-event unread-command-events))
-  (throw 'exit nil))
-
-(defun fancy-splash-special-event-action ()
-  "Save the last event and stop displaying the splash screen buffer.
-This is an internal function used to turn off the splash screen after
-the user caused an input event that is bound in `special-event-map'"
+                             " the files you were editing."))
+
+    (when concise
+      (fancy-splash-insert
+       :face 'variable-pitch "\n"
+       :link '("Dismiss this startup screen"
+              (lambda (button)
+                (when startup-screen-inhibit-startup-screen
+                  (customize-set-variable 'inhibit-startup-screen t)
+                  (customize-mark-to-save 'inhibit-startup-screen)
+                  (custom-save-all))
+                (let ((w (get-buffer-window "*GNU Emacs*")))
+                  (and w (not (one-window-p)) (delete-window w)))
+                (kill-buffer "*GNU Emacs*")))
+       "  ")
+      (when (or user-init-file custom-file)
+       (let ((checked (create-image "\300\300\141\143\067\076\034\030"
+                                    'xbm t :width 8 :height 8 :background "grey75"
+                                    :foreground "black" :relief -2 :ascent 'center))
+             (unchecked (create-image (make-string 8 0)
+                                      'xbm t :width 8 :height 8 :background "grey75"
+                                      :foreground "black" :relief -2 :ascent 'center)))
+         (insert-button
+          " " :on-glyph checked :off-glyph unchecked 'checked nil
+          'display unchecked 'follow-link t
+          'action (lambda (button)
+                    (if (overlay-get button 'checked)
+                        (progn (overlay-put button 'checked nil)
+                               (overlay-put button 'display (overlay-get button :off-glyph))
+                               (setq startup-screen-inhibit-startup-screen nil))
+                      (overlay-put button 'checked t)
+                      (overlay-put button 'display (overlay-get button :on-glyph))
+                      (setq startup-screen-inhibit-startup-screen t)))))
+       (fancy-splash-insert :face '(variable-pitch :height 0.9)
+                            " Never show it again.")))))
+
+(defun exit-splash-screen ()
+  "Stop displaying the splash screen buffer."
   (interactive)
-  (setq fancy-splash-last-input-event last-input-event)
-  (throw 'exit nil))
-
-
-(defun fancy-splash-screens (&optional hide-on-input)
-  "Display fancy splash screens when Emacs starts."
-  (if hide-on-input
-      (let ((old-hourglass display-hourglass)
-           (fancy-splash-outer-buffer (current-buffer))
-           splash-buffer
-           (old-minor-mode-map-alist minor-mode-map-alist)
-           (old-emulation-mode-map-alists emulation-mode-map-alists)
-           (old-special-event-map special-event-map)
-           (frame (fancy-splash-frame))
-           timer)
-       (save-selected-window
-         (select-frame frame)
-         (switch-to-buffer " GNU Emacs")
-         (make-local-variable 'cursor-type)
-         (setq splash-buffer (current-buffer))
-         (catch 'stop-splashing
-           (unwind-protect
-               (let ((map (make-sparse-keymap))
-                     (cursor-type nil))
-                 (use-local-map map)
-                 (define-key map [switch-frame] 'ignore)
-                 (define-key map [t] 'fancy-splash-default-action)
-                 (define-key map [mouse-movement] 'ignore)
-                 (define-key map [mode-line t] 'ignore)
-                 ;; Temporarily bind special events to
-                 ;; fancy-splash-special-event-action so as to stop
-                 ;; displaying splash screens with such events.
-                 ;; Otherwise, drag-n-drop into splash screens may
-                 ;; leave us in recursive editing with invisible
-                 ;; cursors for a while.
-                 (setq special-event-map (make-sparse-keymap))
-                 (map-keymap
-                  (lambda (key def)
-                    (define-key special-event-map (vector key)
-                      (if (eq def 'ignore)
-                          'ignore
-                        'fancy-splash-special-event-action)))
-                  old-special-event-map)
-                 (setq display-hourglass nil
-                       minor-mode-map-alist nil
-                       emulation-mode-map-alists nil
-                       buffer-undo-list t
-                       mode-line-format (propertize "---- %b %-"
-                                                    'face 'mode-line-buffer-id)
-                       fancy-splash-stop-time (+ (float-time)
-                                                 fancy-splash-max-time)
-                       timer (run-with-timer 0 fancy-splash-delay
-                                             #'fancy-splash-screens-1
-                                             splash-buffer))
-                 (message "%s" (startup-echo-area-message))
-                 (recursive-edit))
-             (cancel-timer timer)
-             (setq display-hourglass old-hourglass
-                   minor-mode-map-alist old-minor-mode-map-alist
-                   emulation-mode-map-alists old-emulation-mode-map-alists
-                   special-event-map old-special-event-map)
-             (kill-buffer splash-buffer)
-             (when fancy-splash-last-input-event
-               (setq last-input-event fancy-splash-last-input-event
-                     fancy-splash-last-input-event nil)
-               (command-execute (lookup-key special-event-map
-                                            (vector last-input-event))
-                                nil (vector last-input-event) t))))))
-    ;; If hide-on-input is nil, don't hide the buffer on input.
-    (if (or (window-minibuffer-p)
-           (window-dedicated-p (selected-window)))
-       (pop-to-buffer (current-buffer))
-      (switch-to-buffer "*About GNU Emacs*"))
-    (setq buffer-read-only nil)
-    (erase-buffer)
-    (if pure-space-overflow
-       (insert "\
-Warning Warning!!!  Pure space overflow    !!!Warning Warning
-\(See the node Pure Storage in the Lisp manual for details.)\n"))
-    (let (fancy-splash-outer-buffer)
-      (fancy-splash-head)
-      (dolist (text fancy-splash-text)
-       (apply #'fancy-splash-insert text)
-       (insert "\n"))
-      (skip-chars-backward "\n")
-      (delete-region (point) (point-max))
-      (insert "\n")
-      (fancy-splash-tail)
+  (quit-window t))
+
+(defun fancy-startup-screen (&optional concise)
+  "Display fancy startup screen.
+If CONCISE is non-nil, display a concise version of the
+splash screen in another window."
+  (let ((splash-buffer (get-buffer-create "*GNU Emacs*")))
+    (with-current-buffer splash-buffer
+      (let ((inhibit-read-only t))
+       (erase-buffer)
+       (make-local-variable 'startup-screen-inhibit-startup-screen)
+       (if pure-space-overflow
+           (insert pure-space-overflow-message))
+       (unless concise
+         (fancy-splash-head))
+       (dolist (text fancy-startup-text)
+         (apply #'fancy-splash-insert text)
+         (insert "\n"))
+       (skip-chars-backward "\n")
+       (delete-region (point) (point-max))
+       (insert "\n")
+       (fancy-startup-tail concise))
+      (use-local-map splash-screen-keymap)
+      (setq tab-width 22
+           buffer-read-only t)
       (set-buffer-modified-p nil)
-      (setq buffer-read-only t)
       (if (and view-read-only (not view-mode))
          (view-mode-enter nil 'kill-buffer))
-      (goto-char (point-min)))))
+      (goto-char (point-min))
+      (forward-line (if concise 2 4)))
+    (if concise
+       (progn
+         (display-buffer splash-buffer)
+         ;; If the splash screen is in a split window, fit it.
+         (let ((window (get-buffer-window splash-buffer t)))
+           (or (null window)
+               (eq window (selected-window))
+               (eq window (next-window window))
+               (fit-window-to-buffer window))))
+      (switch-to-buffer splash-buffer))))
+
+(defun fancy-about-screen ()
+  "Display fancy About screen."
+  (let ((frame (fancy-splash-frame)))
+    (save-selected-window
+      (select-frame frame)
+      (switch-to-buffer "*About GNU Emacs*")
+      (setq buffer-undo-list t
+           mode-line-format (propertize "---- %b %-"
+                                        'face 'mode-line-buffer-id))
+      (let ((inhibit-read-only t))
+       (erase-buffer)
+       (if pure-space-overflow
+           (insert pure-space-overflow-message))
+       (fancy-splash-head)
+       (dolist (text fancy-about-text)
+         (apply #'fancy-splash-insert text)
+         (insert "\n"))
+       (unless (current-message)
+         (message fancy-splash-help-echo))
+       (set-buffer-modified-p nil)
+       (goto-char (point-min))
+       (force-mode-line-update))
+      (use-local-map splash-screen-keymap)
+      (setq tab-width 22)
+      (message "%s" (startup-echo-area-message))
+      (setq buffer-read-only t)
+      (goto-char (point-min))
+      (forward-line 3))))
 
 (defun fancy-splash-frame ()
   "Return the frame to use for the fancy splash screen.
@@ -1508,241 +1587,376 @@ we put it on this frame."
          (> frame-height (+ image-height 19)))))))
 
 
-(defun normal-splash-screen (&optional hide-on-input)
-  "Display splash screen when Emacs starts."
+(defun normal-splash-screen (&optional startup)
+  "Display non-graphic splash screen.
+If optional argument STARTUP is non-nil, display the startup screen
+after Emacs starts.  If STARTUP is nil, display the About screen."
   (let ((prev-buffer (current-buffer)))
-    (unwind-protect
-       (with-current-buffer (get-buffer-create "GNU Emacs")
-         (setq buffer-read-only nil)
-         (erase-buffer)
-         (set (make-local-variable 'tab-width) 8)
-         (if hide-on-input
-             (set (make-local-variable 'mode-line-format)
-                  (propertize "---- %b %-" 'face 'mode-line-buffer-id)))
-
-          (if pure-space-overflow
-              (insert "\
-Warning Warning!!!  Pure space overflow    !!!Warning Warning
-\(See the node Pure Storage in the Lisp manual for details.)\n"))
-
-          ;; The convention for this piece of code is that
-          ;; each piece of output starts with one or two newlines
-          ;; and does not end with any newlines.
-          (insert "Welcome to GNU Emacs")
-          (insert
-           (if (eq system-type 'gnu/linux)
-               ", one component of the GNU/Linux operating system.\n"
-             ", a part of the GNU operating system.\n"))
-
-         (if hide-on-input
-             (insert (substitute-command-keys
-                      (concat
-                       "\nType \\[recenter] to begin editing"
-                       (if (equal (buffer-name prev-buffer) "*scratch*")
-                           ".\n"
-                         " your file.\n")))))
-
-          (if (display-mouse-p)
-              ;; The user can use the mouse to activate menus
-              ;; so give help in terms of menu items.
-              (progn
-                (insert "\
-You can do basic editing with the menu bar and scroll bar using the mouse.
-To quit a partially entered command, type Control-g.
-
-Useful File menu items:
-Exit Emacs             (or type Control-x followed by Control-c)
-Recover Crashed Session        Recover files you were editing before a crash
-
-Important Help menu items:
-Emacs Tutorial         Learn how to use Emacs efficiently
-Emacs FAQ              Frequently asked questions and answers
-Read the Emacs Manual  View the Emacs manual using Info
-\(Non)Warranty         GNU Emacs comes with ABSOLUTELY NO WARRANTY
-Copying Conditions     Conditions for redistributing and changing Emacs
-Getting New Versions   How to obtain the latest version of Emacs
-More Manuals / Ordering Manuals    How to order printed manuals from the FSF
+    (with-current-buffer (get-buffer-create "*About GNU Emacs*")
+      (setq buffer-read-only nil)
+      (erase-buffer)
+      (set (make-local-variable 'tab-width) 8)
+      (if (not startup)
+         (set (make-local-variable 'mode-line-format)
+              (propertize "---- %b %-" 'face 'mode-line-buffer-id)))
+
+      (if pure-space-overflow
+         (insert pure-space-overflow-message))
+
+      ;; The convention for this piece of code is that
+      ;; each piece of output starts with one or two newlines
+      ;; and does not end with any newlines.
+      (insert (if startup "Welcome to GNU Emacs" "This is GNU Emacs"))
+      (insert
+       (if (eq system-type 'gnu/linux)
+          ", one component of the GNU/Linux operating system.\n"
+        ", a part of the GNU operating system.\n"))
+
+      (if startup
+         (if (display-mouse-p)
+             ;; The user can use the mouse to activate menus
+             ;; so give help in terms of menu items.
+             (normal-mouse-startup-screen)
+
+           ;; No mouse menus, so give help using kbd commands.
+           (normal-no-mouse-startup-screen))
+
+       (normal-about-screen))
+
+      ;; The rest of the startup screen is the same on all
+      ;; kinds of terminals.
+
+      ;; Give information on recovering, if there was a crash.
+      (and startup
+          auto-save-list-file-prefix
+          ;; Don't signal an error if the
+          ;; directory for auto-save-list files
+          ;; does not yet exist.
+          (file-directory-p (file-name-directory
+                             auto-save-list-file-prefix))
+          (directory-files
+           (file-name-directory auto-save-list-file-prefix)
+           nil
+           (concat "\\`"
+                   (regexp-quote (file-name-nondirectory
+                                  auto-save-list-file-prefix)))
+           t)
+          (insert "\n\nIf an Emacs session crashed recently, "
+                  "type Meta-x recover-session RET\nto recover"
+                  " the files you were editing.\n"))
+
+      (use-local-map splash-screen-keymap)
+
+      ;; Display the input that we set up in the buffer.
+      (set-buffer-modified-p nil)
+      (setq buffer-read-only t)
+      (if (and view-read-only (not view-mode))
+         (view-mode-enter nil 'kill-buffer))
+      (switch-to-buffer "*About GNU Emacs*")
+      (if startup (rename-buffer "*GNU Emacs*" t))
+      (goto-char (point-min)))))
+
+(defun normal-mouse-startup-screen ()
+  ;; The user can use the mouse to activate menus
+  ;; so give help in terms of menu items.
+  (insert "\
+To follow a link, click Mouse-1 on it, or move to it and type RET.
+To quit a partially entered command, type Control-g.\n")
+
+  (insert "\nImportant Help menu items:\n")
+  (insert-button "Emacs Tutorial"
+                'action (lambda (button) (help-with-tutorial))
+                'follow-link t)
+  (insert "\t\tLearn basic Emacs keystroke commands\n")
+  (insert-button "Read the Emacs Manual"
+                'action (lambda (button) (info-emacs-manual))
+                'follow-link t)
+  (insert "\tView the Emacs manual using Info\n")
+  (insert-button "\(Non)Warranty"
+                'action (lambda (button) (describe-no-warranty))
+                'follow-link t)
+  (insert "\t\tGNU Emacs comes with ABSOLUTELY NO WARRANTY\n")
+  (insert-button "Copying Conditions"
+                'action (lambda (button) (describe-copying))
+                'follow-link t)
+  (insert "\tConditions for redistributing and changing Emacs\n")
+  (insert-button "More Manuals / Ordering Manuals"
+                'action (lambda (button) (view-order-manuals))
+                'follow-link t)
+  (insert "  How to order printed manuals from the FSF\n")
+
+  (insert "\nUseful tasks:\n")
+  (insert-button "Visit New File"
+                'action (lambda (button) (call-interactively 'find-file))
+                'follow-link t)
+  (insert "\t\tSpecify a new file's name, to edit the file\n")
+  (insert-button "Open Home Directory"
+                'action (lambda (button) (dired "~"))
+                'follow-link t)
+  (insert "\tOpen your home directory, to operate on its files\n")
+  (insert-button "Customize Startup"
+                'action (lambda (button) (customize-group 'initialization))
+                'follow-link t)
+  (insert "\tChange initialization settings including this screen\n")
+
+  (insert "\n" (emacs-version)
+         "\n" emacs-copyright))
+
+;; No mouse menus, so give help using kbd commands.
+(defun normal-no-mouse-startup-screen ()
+
+  ;; If keys have their default meanings,
+  ;; use precomputed string to save lots of time.
+  (if (and (eq (key-binding "\C-h") 'help-command)
+          (eq (key-binding "\C-xu") 'advertised-undo)
+          (eq (key-binding "\C-x\C-c") 'save-buffers-kill-terminal)
+          (eq (key-binding "\C-ht") 'help-with-tutorial)
+          (eq (key-binding "\C-hi") 'info)
+          (eq (key-binding "\C-hr") 'info-emacs-manual)
+          (eq (key-binding "\C-h\C-n") 'view-emacs-news))
+      (progn
+       (insert "
+Get help\t   C-h  (Hold down CTRL and press h)
+")
+       (insert-button "Emacs manual"
+                      'action (lambda (button) (info-emacs-manual))
+                      'follow-link t)
+       (insert "          C-h r\t")
+       (insert-button "Browse manuals"
+                      'action (lambda (button) (Info-directory))
+                      'follow-link t)
+       (insert "\t   C-h i
+")
+       (insert-button "Emacs tutorial"
+                      'action (lambda (button) (help-with-tutorial))
+                      'follow-link t)
+       (insert "          C-h t\tUndo changes\t   C-x u
 ")
-                (insert "\n\n" (emacs-version)
-                        "
-Copyright (C) 2007 Free Software Foundation, Inc."))
-
-            ;; No mouse menus, so give help using kbd commands.
-
-            ;; If keys have their default meanings,
-            ;; use precomputed string to save lots of time.
-            (if (and (eq (key-binding "\C-h") 'help-command)
-                     (eq (key-binding "\C-xu") 'advertised-undo)
-                     (eq (key-binding "\C-x\C-c") 'save-buffers-kill-emacs)
-                     (eq (key-binding "\C-ht") 'help-with-tutorial)
-                     (eq (key-binding "\C-hi") 'info)
-                     (eq (key-binding "\C-hr") 'info-emacs-manual)
-                     (eq (key-binding "\C-h\C-n") 'view-emacs-news))
-                (insert "
-Get help          C-h  (Hold down CTRL and press h)
-Emacs manual      C-h r
-Emacs tutorial    C-h t           Undo changes     C-x u
-Buy manuals        C-h C-m         Exit Emacs      C-x C-c
-Browse manuals     C-h i")
-
-              (insert (substitute-command-keys
-                       (format "\n
-Get help          %s
-Emacs manual      \\[info-emacs-manual]
-Emacs tutorial    \\[help-with-tutorial]\tUndo changes\t\\[advertised-undo]
-Buy manuals        \\[view-order-manuals]\tExit Emacs\t\\[save-buffers-kill-emacs]
-Browse manuals     \\[info]"
-                               (let ((where (where-is-internal
-                                             'help-command nil t)))
-                                 (if where
-                                     (key-description where)
-                                   "M-x help"))))))
-
-            ;; Say how to use the menu bar with the keyboard.
-            (if (and (eq (key-binding "\M-`") 'tmm-menubar)
-                     (eq (key-binding [f10]) 'tmm-menubar))
-                (insert "
-Activate menubar   F10  or  ESC `  or   M-`")
-              (insert (substitute-command-keys "
-Activate menubar     \\[tmm-menubar]")))
-
-            ;; Many users seem to have problems with these.
-            (insert "
+       (insert-button "Buy manuals"
+                      'action (lambda (button) (view-order-manuals))
+                      'follow-link t)
+       (insert "\t   C-h C-m\tExit Emacs\t   C-x C-c"))
+
+    (insert (format "
+Get help\t   %s
+"
+                   (let ((where (where-is-internal
+                                 'help-command nil t)))
+                     (if where
+                         (key-description where)
+                       "M-x help"))))
+    (insert-button "Emacs manual"
+                  'action (lambda (button) (info-emacs-manual))
+                  'follow-link t)
+    (insert (substitute-command-keys"\t   \\[info-emacs-manual]\t"))
+    (insert-button "Browse manuals"
+                  'action (lambda (button) (Info-directory))
+                  'follow-link t)
+    (insert (substitute-command-keys "\t   \\[info]
+"))
+    (insert-button "Emacs tutorial"
+                  'action (lambda (button) (help-with-tutorial))
+                  'follow-link t)
+    (insert (substitute-command-keys
+            "\t   \\[help-with-tutorial]\tUndo changes\t   \\[advertised-undo]
+"))
+    (insert-button "Buy manuals"
+                  'action (lambda (button) (view-order-manuals))
+                  'follow-link t)
+    (insert (substitute-command-keys
+            "\t   \\[view-order-manuals]\tExit Emacs\t   \\[save-buffers-kill-terminal]")))
+
+  ;; Say how to use the menu bar with the keyboard.
+  (insert "\n")
+  (insert-button "Activate menubar"
+                'action (lambda (button) (tmm-menubar))
+                'follow-link t)
+  (if (and (eq (key-binding "\M-`") 'tmm-menubar)
+          (eq (key-binding [f10]) 'tmm-menubar))
+      (insert "   F10  or  ESC `  or   M-`")
+    (insert (substitute-command-keys "   \\[tmm-menubar]")))
+
+  ;; Many users seem to have problems with these.
+  (insert "
 \(`C-' means use the CTRL key.  `M-' means use the Meta (or Alt) key.
 If you have no Meta key, you may instead type ESC followed by the character.)")
 
-            (insert "\n\n" (emacs-version)
-                    "
-Copyright (C) 2007 Free Software Foundation, Inc.")
+  ;; Insert links to useful tasks
+  (insert "\nUseful tasks:\n")
+
+  (insert-button "Visit New File"
+                'action (lambda (button) (call-interactively 'find-file))
+                'follow-link t)
+  (insert "\t\t\t")
+  (insert-button "Open Home Directory"
+                'action (lambda (button) (dired "~"))
+                'follow-link t)
+  (insert "\n")
+
+  (insert-button "Customize Startup"
+                'action (lambda (button) (customize-group 'initialization))
+                'follow-link t)
+  (insert "\t\t")
+  (insert-button "Open *scratch* buffer"
+                'action (lambda (button) (switch-to-buffer
+                                          (get-buffer-create "*scratch*")))
+                'follow-link t)
+  (insert "\n")
+  (insert "\n" (emacs-version) "\n" emacs-copyright "\n")
 
-            (if (and (eq (key-binding "\C-h\C-c") 'describe-copying)
-                     (eq (key-binding "\C-h\C-d") 'describe-distribution)
-                     (eq (key-binding "\C-h\C-w") 'describe-no-warranty))
-                (insert
-                 "\n
-GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for full details.
+  (if (and (eq (key-binding "\C-h\C-c") 'describe-copying)
+          (eq (key-binding "\C-h\C-d") 'describe-distribution)
+          (eq (key-binding "\C-h\C-w") 'describe-no-warranty))
+      (progn
+       (insert
+        "
+GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for ")
+       (insert-button "full details"
+                      'action (lambda (button) (describe-no-warranty))
+                      'follow-link t)
+       (insert ".
 Emacs is Free Software--Free as in Freedom--so you can redistribute copies
-of Emacs and modify it; type C-h C-c to see the conditions.
-Type C-h C-d for information on getting the latest version.")
-              (insert (substitute-command-keys
-                       "\n
-GNU Emacs comes with ABSOLUTELY NO WARRANTY; type \\[describe-no-warranty] for full details.
+of Emacs and modify it; type C-h C-c to see ")
+       (insert-button "the conditions"
+                      'action (lambda (button) (describe-copying))
+                      'follow-link t)
+       (insert ".
+Type C-h C-d for information on ")
+       (insert-button "getting the latest version"
+                      'action (lambda (button) (describe-distribution))
+                      'follow-link t)
+       (insert "."))
+    (insert (substitute-command-keys
+            "
+GNU Emacs comes with ABSOLUTELY NO WARRANTY; type \\[describe-no-warranty] for "))
+    (insert-button "full details"
+                  'action (lambda (button) (describe-no-warranty))
+                  'follow-link t)
+    (insert (substitute-command-keys ".
 Emacs is Free Software--Free as in Freedom--so you can redistribute copies
-of Emacs and modify it; type \\[describe-copying] to see the conditions.
-Type \\[describe-distribution] for information on getting the latest version."))))
-
-          ;; The rest of the startup screen is the same on all
-          ;; kinds of terminals.
-
-          ;; Give information on recovering, if there was a crash.
-          (and auto-save-list-file-prefix
-               ;; Don't signal an error if the
-               ;; directory for auto-save-list files
-               ;; does not yet exist.
-               (file-directory-p (file-name-directory
-                                  auto-save-list-file-prefix))
-               (directory-files
-                (file-name-directory auto-save-list-file-prefix)
-                nil
-                (concat "\\`"
-                        (regexp-quote (file-name-nondirectory
-                                       auto-save-list-file-prefix)))
-                t)
-               (insert "\n\nIf an Emacs session crashed recently, "
-                       "type Meta-x recover-session RET\nto recover"
-                       " the files you were editing."))
-
-          ;; Display the input that we set up in the buffer.
-          (set-buffer-modified-p nil)
-         (setq buffer-read-only t)
-         (if (and view-read-only (not view-mode))
-             (view-mode-enter nil 'kill-buffer))
-          (goto-char (point-min))
-          (if hide-on-input
-              (if (or (window-minibuffer-p)
-                      (window-dedicated-p (selected-window)))
-                  ;; If hide-on-input is nil, creating a new frame will
-                  ;; generate enough events that the subsequent `sit-for'
-                  ;; will immediately return anyway.
-                  nil ;; (pop-to-buffer (current-buffer))
-               (save-window-excursion
-                  (switch-to-buffer (current-buffer))
-                 (sit-for 120)))
-          (condition-case nil
-              (switch-to-buffer (current-buffer))
-            ;; In case the window is dedicated or something.
-            (error (pop-to-buffer (current-buffer))))))
-      ;; Unwind ... ensure splash buffer is killed
-      (if hide-on-input
-         (kill-buffer "GNU Emacs")
-       (switch-to-buffer "GNU Emacs")
-       (rename-buffer "*About GNU Emacs*" t)))))
-
+of Emacs and modify it; type \\[describe-copying] to see "))
+    (insert-button "the conditions"
+                  'action (lambda (button) (describe-copying))
+                  'follow-link t)
+    (insert (substitute-command-keys".
+Type \\[describe-distribution] for information on "))
+    (insert-button "getting the latest version"
+                  'action (lambda (button) (describe-distribution))
+                  'follow-link t)
+    (insert ".")))
+
+(defun normal-about-screen ()
+  (insert "\n" (emacs-version) "\n" emacs-copyright "\n\n")
+
+  (insert "To follow a link, click Mouse-1 on it, or move to it and type RET.\n\n")
+
+  (insert-button "Authors"
+                'action
+                (lambda (button)
+                  (view-file (expand-file-name "AUTHORS" data-directory))
+                  (goto-char (point-min)))
+                'follow-link t)
+  (insert "\t\tMany people have contributed code included in GNU Emacs\n")
+
+  (insert-button "Contributing"
+                'action
+                (lambda (button)
+                  (view-file (expand-file-name "CONTRIBUTE" data-directory))
+                  (goto-char (point-min)))
+                'follow-link t)
+  (insert "\tHow to contribute improvements to Emacs\n\n")
+
+  (insert-button "GNU and Freedom"
+                'action (lambda (button) (describe-project))
+                'follow-link t)
+  (insert "\t\tWhy we developed GNU Emacs and the GNU system\n")
+
+  (insert-button "Absence of Warranty"
+                'action (lambda (button) (describe-no-warranty))
+                'follow-link t)
+  (insert "\tGNU Emacs comes with ABSOLUTELY NO WARRANTY\n")
+
+  (insert-button "Copying Conditions"
+                'action (lambda (button) (describe-copying))
+                'follow-link t)
+  (insert "\tConditions for redistributing and changing Emacs\n")
+
+  (insert-button "Getting New Versions"
+                'action (lambda (button) (describe-distribution))
+                'follow-link t)
+  (insert "\tHow to get the latest version of GNU Emacs\n")
+
+  (insert-button "More Manuals / Ordering Manuals"
+                'action (lambda (button) (view-order-manuals))
+                'follow-link t)
+  (insert "\tBuying printed manuals from the FSF\n"))
 
 (defun startup-echo-area-message ()
   (if (eq (key-binding "\C-h\C-p") 'describe-project)
-      "For information about the GNU system and GNU/Linux, type C-h C-p."
+      "For information about GNU Emacs and the GNU system, type C-h C-a."
     (substitute-command-keys
-     "For information about the GNU system and GNU/Linux, type \
-\\[describe-project].")))
+     "For information about GNU Emacs and the GNU system, type \
+\\[about-emacs].")))
 
 
 (defun display-startup-echo-area-message ()
   (let ((resize-mini-windows t))
-    (message "%s" (startup-echo-area-message))))
-
-
-(defun display-splash-screen (&optional hide-on-input)
-  "Display splash screen according to display.
-Fancy splash screens are used on graphic displays,
-normal otherwise.
-With a prefix argument, any user input hides the splash screen."
-  (interactive "P")
+    (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
+            (or (and (get 'inhibit-startup-echo-area-message 'saved-value)
+                     (equal inhibit-startup-echo-area-message
+                            (if (equal init-file-user "")
+                                (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
+                          (save-excursion
+                            (set-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)))))
+       (message "%s" (startup-echo-area-message)))))
+
+(defun display-startup-screen (&optional concise)
+  "Display startup screen according to display.
+A fancy display is used on graphic displays, normal otherwise.
+
+If CONCISE is non-nil, display a concise version of the startup
+screen."
+  ;; Prevent recursive calls from server-process-filter.
+  (if (not (get-buffer "*GNU Emacs*"))
+      (if (use-fancy-splash-screens-p)
+         (fancy-startup-screen concise)
+       (normal-splash-screen t))))
+
+(defun display-about-screen ()
+  "Display the *About GNU Emacs* buffer.
+A fancy display is used on graphic displays, normal otherwise."
+  (interactive)
   (if (use-fancy-splash-screens-p)
-      (fancy-splash-screens hide-on-input)
-    (normal-splash-screen hide-on-input)))
+      (fancy-about-screen)
+    (normal-splash-screen nil)))
 
+(defalias 'about-emacs 'display-about-screen)
+(defalias 'display-splash-screen 'display-startup-screen)
 
 (defun command-line-1 (command-line-args-left)
-  (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
-          (or (and (get 'inhibit-startup-echo-area-message 'saved-value)
-                   (equal inhibit-startup-echo-area-message
-                          (if (equal init-file-user "")
-                              (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
-                        (save-excursion
-                          (set-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)))))
-      ;; display-splash-screen at the end of command-line-1 calls
-      ;; use-fancy-splash-screens-p. This can cause image.el to be
-      ;; loaded, putting "Loading image... done" in the echo area.
-      ;; This hides startup-echo-area-message. So
-      ;; use-fancy-splash-screens-p is called here simply to get the
-      ;; loading of image.el (if needed) out of the way before
-      ;; display-startup-echo-area-message runs.
-      (progn
-        (use-fancy-splash-screens-p)
-        (display-startup-echo-area-message)))
+  (display-startup-echo-area-message)
 
   ;; Delay 2 seconds after an init file error message
   ;; was displayed, so user can read it.
@@ -1756,260 +1970,273 @@ With a prefix argument, any user input hides the splash screen."
      "Building Emacs overflowed pure space.  (See the node Pure Storage in the Lisp manual for details.)"
      :warning))
 
-  (when command-line-args-left
-    ;; We have command args; process them.
-    (let ((dir command-line-default-directory)
-          (file-count 0)
-          first-file-buffer
-          tem
-          ;; This approach loses for "-batch -L DIR --eval "(require foo)",
-          ;; if foo is intended to be found in DIR.
-          ;;
-          ;; ;; The directories listed in --directory/-L options will *appear*
-          ;; ;; at the front of `load-path' in the order they appear on the
-          ;; ;; command-line.  We cannot do this by *placing* them at the front
-          ;; ;; in the order they appear, so we need this variable to hold them,
-          ;; ;; temporarily.
-          ;; extra-load-path
-          ;;
-          ;; To DTRT we keep track of the splice point and modify `load-path'
-          ;; straight away upon any --directory/-L option.
-          splice
-          just-files ;; t if this follows the magic -- option.
-          ;; This includes our standard options' long versions
-          ;; and long versions of what's on command-switch-alist.
-          (longopts
-           (append '(("--funcall") ("--load") ("--insert") ("--kill")
-                     ("--directory") ("--eval") ("--execute") ("--no-splash")
-                     ("--find-file") ("--visit") ("--file") ("--no-desktop"))
-                   (mapcar (lambda (elt)
-                             (list (concat "-" (car elt))))
-                           command-switch-alist)))
-          (line 0)
-          (column 0))
-
-      ;; Add the long X options to longopts.
-      (dolist (tem command-line-x-option-alist)
-        (if (string-match "^--" (car tem))
-            (push (list (car tem)) longopts)))
-
-      ;; Loop, processing options.
-      (while command-line-args-left
-        (let* ((argi (car command-line-args-left))
-               (orig-argi argi)
-               argval completion)
-          (setq command-line-args-left (cdr command-line-args-left))
-
-          ;; Do preliminary decoding of the option.
-          (if just-files
-              ;; After --, don't look for options; treat all args as files.
-              (setq argi "")
-            ;; Convert long options to ordinary options
-            ;; and separate out an attached option argument into argval.
-            (when (string-match "^\\(--[^=]*\\)=" argi)
-              (setq argval (substring argi (match-end 0))
-                    argi (match-string 1 argi)))
-            (if (equal argi "--")
-                (setq completion nil)
-              (setq completion (try-completion argi longopts)))
-            (if (eq completion t)
-                (setq argi (substring argi 1))
-              (if (stringp completion)
-                  (let ((elt (assoc completion longopts)))
-                    (or elt
-                        (error "Option `%s' is ambiguous" argi))
-                    (setq argi (substring (car elt) 1)))
-                (setq argval nil
-                      argi orig-argi))))
-
-          ;; Execute the option.
-          (cond ((setq tem (assoc argi command-switch-alist))
-                 (if argval
-                     (let ((command-line-args-left
-                            (cons argval command-line-args-left)))
-                       (funcall (cdr tem) argi))
-                   (funcall (cdr tem) argi)))
-
-                ((equal argi "-no-splash")
-                 (setq inhibit-startup-message t))
-
-                ((member argi '("-f"   ; what the manual claims
-                                "-funcall"
-                                "-e"))  ; what the source used to say
-                 (setq tem (intern (or argval (pop command-line-args-left))))
-                 (if (commandp tem)
-                     (command-execute tem)
-                   (funcall tem)))
-
-                ((member argi '("-eval" "-execute"))
-                 (eval (read (or argval (pop command-line-args-left)))))
-
-                ((member argi '("-L" "-directory"))
-                 (setq tem (expand-file-name
-                            (command-line-normalize-file-name
-                             (or argval (pop command-line-args-left)))))
-                 (cond (splice (setcdr splice (cons tem (cdr splice)))
-                               (setq splice (cdr splice)))
-                       (t (setq load-path (cons tem load-path)
-                                splice load-path))))
-
-                ((member argi '("-l" "-load"))
-                 (let* ((file (command-line-normalize-file-name
-                               (or argval (pop command-line-args-left))))
-                        ;; Take file from default dir if it exists there;
-                        ;; otherwise let `load' search for it.
-                        (file-ex (expand-file-name file)))
-                   (when (file-exists-p file-ex)
-                     (setq file file-ex))
-                   (load file nil t)))
-
-               ;; This is used to handle -script.  It's not clear
-               ;; we need to document it.
-                ((member argi '("-scriptload"))
-                 (let* ((file (command-line-normalize-file-name
-                               (or argval (pop command-line-args-left))))
-                        ;; Take file from default dir.
-                        (file-ex (expand-file-name file)))
-                   (load file-ex nil t t)))
-
-                ((equal argi "-insert")
-                 (setq tem (or argval (pop command-line-args-left)))
-                 (or (stringp tem)
-                     (error "File name omitted from `-insert' option"))
-                 (insert-file-contents (command-line-normalize-file-name tem)))
-
-                ((equal argi "-kill")
-                 (kill-emacs t))
-
-               ;; This is for when they use --no-desktop with -q, or
-               ;; don't load Desktop in their .emacs.  If desktop.el
-               ;; _is_ loaded, it will handle this switch, and we
-               ;; won't see it by the time we get here.
-               ((equal argi "-no-desktop")
-                (message "\"--no-desktop\" ignored because the Desktop package is not loaded"))
-
-                ((string-match "^\\+[0-9]+\\'" argi)
-                 (setq line (string-to-number argi)))
-
-                ((string-match "^\\+\\([0-9]+\\):\\([0-9]+\\)\\'" argi)
-                 (setq line (string-to-number (match-string 1 argi))
-                       column (string-to-number (match-string 2 argi))))
-
-                ((setq tem (assoc argi command-line-x-option-alist))
-                 ;; Ignore X-windows options and their args if not using X.
-                 (setq command-line-args-left
-                       (nthcdr (nth 1 tem) command-line-args-left)))
-
-                ((member argi '("-find-file" "-file" "-visit"))
-                 ;; An explicit option to specify visiting a file.
-                 (setq tem (or argval (pop command-line-args-left)))
-                 (unless (stringp tem)
-                   (error "File name omitted from `%s' option" argi))
-                 (setq file-count (1+ file-count))
-                 (let ((file (expand-file-name
-                              (command-line-normalize-file-name tem) dir)))
-                   (if (= file-count 1)
-                       (setq first-file-buffer (find-file file))
-                     (find-file-other-window file)))
-                 (or (zerop line)
-                     (goto-line line))
-                 (setq line 0)
-                 (unless (< column 1)
-                   (move-to-column (1- column)))
-                 (setq column 0))
-
-                ((equal argi "--")
-                 (setq just-files t))
-                (t
-                 ;; We have almost exhausted our options. See if the
-                 ;; user has made any other command-line options available
-                 (let ((hooks command-line-functions) ;; lrs 7/31/89
-                       (did-hook nil))
-                   (while (and hooks
-                               (not (setq did-hook (funcall (car hooks)))))
-                     (setq hooks (cdr hooks)))
-                   (if (not did-hook)
-                       ;; Presume that the argument is a file name.
-                       (progn
-                         (if (string-match "\\`-" argi)
-                             (error "Unknown option `%s'" argi))
-                         (setq file-count (1+ file-count))
-                         (let ((file
-                                (expand-file-name
-                                 (command-line-normalize-file-name orig-argi)
-                                 dir)))
-                           (if (= file-count 1)
-                               (setq first-file-buffer (find-file file))
-                             (find-file-other-window file)))
-                         (or (zerop line)
-                             (goto-line line))
-                         (setq line 0)
-                         (unless (< column 1)
-                           (move-to-column (1- column)))
-                         (setq column 0))))))
-         ;; In unusual circumstances, the execution of Lisp code due
-         ;; to command-line options can cause the last visible frame
-         ;; to be deleted.  In this case, kill emacs to avoid an
-         ;; abort later.
-         (unless (frame-live-p (selected-frame)) (kill-emacs nil))))
-
-      ;; If 3 or more files visited, and not all visible,
-      ;; show user what they all are.  But leave the last one current.
-      (and (> file-count 2)
-           (not noninteractive)
-           (not inhibit-startup-buffer-menu)
-           (or (get-buffer-window first-file-buffer)
-               (list-buffers)))))
-
-  ;; Maybe display a startup screen.
-  (unless (or inhibit-startup-message
-             noninteractive
-             emacs-quick-startup)
-    ;; Display a startup screen, after some preparations.
-
-    ;; If there are no switches to process, we might as well
-    ;; run this hook now, and there may be some need to do it
-    ;; before doing any output.
-    (run-hooks 'emacs-startup-hook)
-    (and term-setup-hook
-        (run-hooks 'term-setup-hook))
-    (setq inhibit-startup-hooks t)
-
-    ;; It's important to notice the user settings before we
-    ;; display the startup message; otherwise, the settings
-    ;; won't take effect until the user gives the first
-    ;; keystroke, and that's distracting.
-    (when (fboundp 'frame-notice-user-settings)
-      (frame-notice-user-settings))
-
-    ;; If there are no switches to process, we might as well
-    ;; run this hook now, and there may be some need to do it
-    ;; before doing any output.
-    (when window-setup-hook
-      (run-hooks 'window-setup-hook)
-      ;; Don't let the hook be run twice.
-      (setq window-setup-hook nil))
-
-    ;; Do this now to avoid an annoying delay if the user
-    ;; clicks the menu bar during the sit-for.
-    (when (display-popup-menus-p)
-      (precompute-menubar-bindings))
-    (with-no-warnings
-     (setq menubar-bindings-done t))
-
-    ;; If *scratch* exists and is empty, insert initial-scratch-message.
-    (and initial-scratch-message
-         (get-buffer "*scratch*")
-         (with-current-buffer "*scratch*"
-           (when (zerop (buffer-size))
-             (insert initial-scratch-message)
-             (set-buffer-modified-p nil))))
-
-    ;; If user typed input during all that work,
-    ;; abort the startup screen.  Otherwise, display it now.
-    (unless (input-pending-p)
-      (display-splash-screen t))))
-
+  (let ((file-count 0)
+       first-file-buffer)
+    (when command-line-args-left
+      ;; We have command args; process them.
+      (let ((dir command-line-default-directory)
+           tem
+           ;; This approach loses for "-batch -L DIR --eval "(require foo)",
+           ;; if foo is intended to be found in DIR.
+           ;;
+           ;; ;; The directories listed in --directory/-L options will *appear*
+           ;; ;; at the front of `load-path' in the order they appear on the
+           ;; ;; command-line.  We cannot do this by *placing* them at the front
+           ;; ;; in the order they appear, so we need this variable to hold them,
+           ;; ;; temporarily.
+           ;; extra-load-path
+           ;;
+           ;; To DTRT we keep track of the splice point and modify `load-path'
+           ;; straight away upon any --directory/-L option.
+           splice
+           just-files ;; t if this follows the magic -- option.
+           ;; This includes our standard options' long versions
+           ;; and long versions of what's on command-switch-alist.
+           (longopts
+            (append '(("--funcall") ("--load") ("--insert") ("--kill")
+                      ("--directory") ("--eval") ("--execute") ("--no-splash")
+                      ("--find-file") ("--visit") ("--file") ("--no-desktop"))
+                    (mapcar (lambda (elt)
+                              (list (concat "-" (car elt))))
+                            command-switch-alist)))
+           (line 0)
+           (column 0))
+
+       ;; Add the long X options to longopts.
+       (dolist (tem command-line-x-option-alist)
+         (if (string-match "^--" (car tem))
+             (push (list (car tem)) longopts)))
+
+       ;; Loop, processing options.
+       (while command-line-args-left
+         (let* ((argi (car command-line-args-left))
+                (orig-argi argi)
+                argval completion)
+           (setq command-line-args-left (cdr command-line-args-left))
+
+           ;; Do preliminary decoding of the option.
+           (if just-files
+               ;; After --, don't look for options; treat all args as files.
+               (setq argi "")
+             ;; Convert long options to ordinary options
+             ;; and separate out an attached option argument into argval.
+             (when (string-match "^\\(--[^=]*\\)=" argi)
+               (setq argval (substring argi (match-end 0))
+                     argi (match-string 1 argi)))
+             (if (equal argi "--")
+                 (setq completion nil)
+               (setq completion (try-completion argi longopts)))
+             (if (eq completion t)
+                 (setq argi (substring argi 1))
+               (if (stringp completion)
+                   (let ((elt (assoc completion longopts)))
+                     (or elt
+                         (error "Option `%s' is ambiguous" argi))
+                     (setq argi (substring (car elt) 1)))
+                 (setq argval nil
+                       argi orig-argi))))
+
+           ;; Execute the option.
+           (cond ((setq tem (assoc argi command-switch-alist))
+                  (if argval
+                      (let ((command-line-args-left
+                             (cons argval command-line-args-left)))
+                        (funcall (cdr tem) argi))
+                    (funcall (cdr tem) argi)))
+
+                 ((equal argi "-no-splash")
+                  (setq inhibit-startup-screen t))
+
+                 ((member argi '("-f"  ; what the manual claims
+                                 "-funcall"
+                                 "-e"))  ; what the source used to say
+                  (setq inhibit-startup-screen t)
+                  (setq tem (intern (or argval (pop command-line-args-left))))
+                  (if (commandp tem)
+                      (command-execute tem)
+                    (funcall tem)))
+
+                 ((member argi '("-eval" "-execute"))
+                  (setq inhibit-startup-screen t)
+                  (eval (read (or argval (pop command-line-args-left)))))
+
+                 ((member argi '("-L" "-directory"))
+                  (setq tem (expand-file-name
+                             (command-line-normalize-file-name
+                              (or argval (pop command-line-args-left)))))
+                  (cond (splice (setcdr splice (cons tem (cdr splice)))
+                                (setq splice (cdr splice)))
+                        (t (setq load-path (cons tem load-path)
+                                 splice load-path))))
+
+                 ((member argi '("-l" "-load"))
+                  (let* ((file (command-line-normalize-file-name
+                                (or argval (pop command-line-args-left))))
+                         ;; Take file from default dir if it exists there;
+                         ;; otherwise let `load' search for it.
+                         (file-ex (expand-file-name file)))
+                    (when (file-exists-p file-ex)
+                      (setq file file-ex))
+                    (load file nil t)))
+
+                 ;; This is used to handle -script.  It's not clear
+                 ;; we need to document it.
+                 ((member argi '("-scriptload"))
+                  (let* ((file (command-line-normalize-file-name
+                                (or argval (pop command-line-args-left))))
+                         ;; Take file from default dir.
+                         (file-ex (expand-file-name file)))
+                    (load file-ex nil t t)))
+
+                 ((equal argi "-insert")
+                  (setq inhibit-startup-screen t)
+                  (setq tem (or argval (pop command-line-args-left)))
+                  (or (stringp tem)
+                      (error "File name omitted from `-insert' option"))
+                  (insert-file-contents (command-line-normalize-file-name tem)))
+
+                 ((equal argi "-kill")
+                  (kill-emacs t))
+
+                 ;; This is for when they use --no-desktop with -q, or
+                 ;; don't load Desktop in their .emacs.  If desktop.el
+                 ;; _is_ loaded, it will handle this switch, and we
+                 ;; won't see it by the time we get here.
+                 ((equal argi "-no-desktop")
+                  (message "\"--no-desktop\" ignored because the Desktop package is not loaded"))
+
+                 ((string-match "^\\+[0-9]+\\'" argi)
+                  (setq line (string-to-number argi)))
+
+                 ((string-match "^\\+\\([0-9]+\\):\\([0-9]+\\)\\'" argi)
+                  (setq line (string-to-number (match-string 1 argi))
+                        column (string-to-number (match-string 2 argi))))
+
+                 ((setq tem (assoc argi command-line-x-option-alist))
+                  ;; Ignore X-windows options and their args if not using X.
+                  (setq command-line-args-left
+                        (nthcdr (nth 1 tem) command-line-args-left)))
+
+                 ((member argi '("-find-file" "-file" "-visit"))
+                  (setq inhibit-startup-screen t)
+                  ;; An explicit option to specify visiting a file.
+                  (setq tem (or argval (pop command-line-args-left)))
+                  (unless (stringp tem)
+                    (error "File name omitted from `%s' option" argi))
+                  (setq file-count (1+ file-count))
+                  (let ((file (expand-file-name
+                               (command-line-normalize-file-name tem) dir)))
+                    (if (= file-count 1)
+                        (setq first-file-buffer (find-file file))
+                      (find-file-other-window file)))
+                  (or (zerop line)
+                      (goto-line line))
+                  (setq line 0)
+                  (unless (< column 1)
+                    (move-to-column (1- column)))
+                  (setq column 0))
+
+                 ((equal argi "--")
+                  (setq just-files t))
+                 (t
+                  ;; We have almost exhausted our options. See if the
+                  ;; user has made any other command-line options available
+                  (let ((hooks command-line-functions)
+                        (did-hook nil))
+                    (while (and hooks
+                                (not (setq did-hook (funcall (car hooks)))))
+                      (setq hooks (cdr hooks)))
+                    (if (not did-hook)
+                        ;; Presume that the argument is a file name.
+                        (progn
+                          (if (string-match "\\`-" argi)
+                              (error "Unknown option `%s'" argi))
+                          (unless initial-window-system
+                            (setq inhibit-startup-screen t))
+                          (setq file-count (1+ file-count))
+                          (let ((file
+                                 (expand-file-name
+                                  (command-line-normalize-file-name orig-argi)
+                                  dir)))
+                            (cond ((= file-count 1)
+                                   (setq first-file-buffer (find-file file)))
+                                  (inhibit-startup-screen
+                                   (find-file-other-window file))
+                                  (t (find-file file))))
+                          (or (zerop line)
+                              (goto-line line))
+                          (setq line 0)
+                          (unless (< column 1)
+                            (move-to-column (1- column)))
+                          (setq column 0))))))
+           ;; In unusual circumstances, the execution of Lisp code due
+           ;; to command-line options can cause the last visible frame
+           ;; to be deleted.  In this case, kill emacs to avoid an
+           ;; abort later.
+           (unless (frame-live-p (selected-frame)) (kill-emacs nil))))))
+
+    (when initial-buffer-choice
+      (cond ((eq initial-buffer-choice t)
+            (switch-to-buffer (get-buffer-create "*scratch*")))
+           ((stringp initial-buffer-choice)
+            (find-file initial-buffer-choice))))
+
+    (if (or inhibit-startup-screen
+           initial-buffer-choice
+           noninteractive
+           emacs-quick-startup)
+
+       ;; Not displaying a startup screen.  If 3 or more files
+       ;; visited, and not all visible, show user what they all are.
+       (and (> file-count 2)
+            (not noninteractive)
+            (not inhibit-startup-buffer-menu)
+            (or (get-buffer-window first-file-buffer)
+                (list-buffers)))
+
+      ;; Display a startup screen, after some preparations.
+
+      ;; If there are no switches to process, we might as well
+      ;; run this hook now, and there may be some need to do it
+      ;; before doing any output.
+      (run-hooks 'emacs-startup-hook)
+      (and term-setup-hook
+          (run-hooks 'term-setup-hook))
+      (setq inhibit-startup-hooks t)
+
+      ;; It's important to notice the user settings before we
+      ;; display the startup message; otherwise, the settings
+      ;; won't take effect until the user gives the first
+      ;; keystroke, and that's distracting.
+      (when (fboundp 'frame-notice-user-settings)
+       (frame-notice-user-settings))
+
+      ;; If there are no switches to process, we might as well
+      ;; run this hook now, and there may be some need to do it
+      ;; before doing any output.
+      (when window-setup-hook
+       (run-hooks 'window-setup-hook)
+       ;; Don't let the hook be run twice.
+       (setq window-setup-hook nil))
+
+      ;; ;; Do this now to avoid an annoying delay if the user
+      ;; ;; clicks the menu bar during the sit-for.
+      ;; (when (display-popup-menus-p)
+      ;;       (precompute-menubar-bindings))
+      ;; (with-no-warnings
+      ;;       (setq menubar-bindings-done t))
+
+      ;; If *scratch* exists and is empty, insert initial-scratch-message.
+      (and initial-scratch-message
+          (get-buffer "*scratch*")
+          (with-current-buffer "*scratch*"
+            (when (zerop (buffer-size))
+              (insert initial-scratch-message)
+              (set-buffer-modified-p nil))))
+
+      (if (> file-count 0)
+         (display-startup-screen t)
+       (display-startup-screen nil)))))
 
 (defun command-line-normalize-file-name (file)
   "Collapse multiple slashes to one, to handle non-Emacs file names."
index 63bbc1107749dcea24207ce18d758bf2d1516217..bce80963705f7bcbdb441f6fd6b73f296e4e4be1 100644 (file)
@@ -510,6 +510,7 @@ Don't call this function; it is for internal use only."
                               (if (integerp b) (< a b)
                                 t)
                             (if (integerp b) t
+                               ;; string< also accepts symbols.
                               (string< a b))))))
        (dolist (p list)
          (funcall function (car p) (cdr p))))
@@ -1219,7 +1220,8 @@ if it is empty or a duplicate."
 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.
-Major mode functions should use this."
+Major mode functions should use this instead of `run-hooks' when running their
+FOO-mode-hook."
   (if delay-mode-hooks
       ;; Delaying case.
       (dolist (hook hooks)
@@ -1627,7 +1629,7 @@ any other non-digit terminates the character code and is then used as input."))
       ;; or C-q C-x might not return immediately since ESC or C-x might be
       ;; bound to some prefix in function-key-map or key-translation-map.
       (setq translated char)
-      (let ((translation (lookup-key function-key-map (vector char))))
+      (let ((translation (lookup-key local-function-key-map (vector char))))
        (if (arrayp translation)
            (setq translated (aref translation 0))))
       (cond ((null translated))
@@ -2041,6 +2043,15 @@ On other systems, this variable is normally always nil.")
 (put 'cl-assertion-failed 'error-conditions '(error))
 (put 'cl-assertion-failed 'error-message "Assertion failed")
 
+(defconst user-emacs-directory
+  (if (eq system-type 'ms-dos)
+      ;; MS-DOS cannot have initial dot.
+      "~/_emacs.d/"
+    "~/.emacs.d/")
+  "Directory beneath which additional per-user Emacs-specific files are placed.
+Various programs in Emacs store information in this directory.
+Note that this should end with a directory separator.")
+
 \f
 ;;;; Misc. useful functions.
 
@@ -2299,6 +2310,15 @@ Wildcards and redirection are handled as usual in the shell.
     (start-process name buffer shell-file-name shell-command-switch
                   (mapconcat 'identity args " ")))))
 
+(defun start-file-process-shell-command (name buffer &rest args)
+  "Start a program in a subprocess.  Return the process object for it.
+Similar to `start-process-shell-command', but calls `start-file-process'."
+  (start-file-process
+   name buffer
+   (if (file-remote-p default-directory) "/bin/sh" shell-file-name)
+   (if (file-remote-p default-directory) "-c" shell-command-switch)
+   (mapconcat 'identity args " ")))
+
 (defun call-process-shell-command (command &optional infile buffer display
                                           &rest args)
   "Execute the shell command COMMAND synchronously in separate process.
@@ -2330,6 +2350,16 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again."
                  infile buffer display
                  shell-command-switch
                  (mapconcat 'identity (cons command args) " ")))))
+
+(defun process-file-shell-command (command &optional infile buffer display
+                                          &rest args)
+  "Process files synchronously in a separate process.
+Similar to `call-process-shell-command', but calls `process-file'."
+  (process-file
+   (if (file-remote-p default-directory) "/bin/sh" shell-file-name)
+   infile buffer display
+   (if (file-remote-p default-directory) "-c" shell-command-switch)
+   (mapconcat 'identity (cons command args) " ")))
 \f
 ;;;; Lisp macros to do various things temporarily.
 
@@ -2378,6 +2408,23 @@ See also `with-temp-buffer'."
         (if (window-live-p save-selected-window-window)
             (select-window save-selected-window-window 'norecord))))))
 
+(defmacro with-selected-frame (frame &rest body)
+  "Execute the forms in BODY with FRAME as the selected frame.
+The value returned is the value of the last form in BODY.
+See also `with-temp-buffer'."
+  (declare (indent 1) (debug t))
+  (let ((old-frame (make-symbol "old-frame"))
+       (old-buffer (make-symbol "old-buffer")))
+    `(let ((,old-frame (selected-frame))
+          (,old-buffer (current-buffer)))
+       (unwind-protect
+          (progn (select-frame ,frame)
+                 ,@body)
+        (if (frame-live-p ,old-frame)
+            (select-frame ,old-frame))
+        (if (buffer-live-p ,old-buffer)
+            (set-buffer ,old-buffer))))))
+
 (defmacro with-temp-file (file &rest body)
   "Create a new buffer, evaluate BODY there, and write the buffer to FILE.
 The value returned is the value of the last form in BODY.
@@ -2475,6 +2522,29 @@ If BODY finishes, `while-no-input' returns whatever value BODY produced."
           (or (input-pending-p)
               ,@body))))))
 
+(defmacro condition-case-no-debug (var bodyform &rest handlers)
+  "Like `condition-case' except that it does not catch anything when debugging.
+More specifically if `debug-on-error' is set, then it does not catch any signal."
+  (declare (debug condition-case) (indent 2))
+  (let ((bodysym (make-symbol "body")))
+    `(let ((,bodysym (lambda () ,bodyform)))
+       (if debug-on-error
+           (funcall ,bodysym)
+         (condition-case ,var
+             (funcall ,bodysym)
+           ,@handlers)))))
+
+(defmacro with-demoted-errors (&rest body)
+  "Run BODY and demote any errors to simple messages.
+If `debug-on-error' is non-nil, run BODY without catching its errors.
+This is to be used around code which is not expected to signal an error
+but which should be robust in the unexpected case that an error is signalled."
+  (declare (debug t) (indent 0))
+  (let ((err (make-symbol "err")))
+    `(condition-case-no-debug ,err
+         (progn ,@body)
+       (error (message "Error: %s" ,err) nil))))
+
 (defmacro combine-after-change-calls (&rest body)
   "Execute BODY, but don't call the after-change functions till the end.
 If BODY makes changes in the buffer, they are recorded
@@ -2669,6 +2739,18 @@ of a match for REGEXP."
            (looking-at (concat "\\(?:"  regexp "\\)\\'")))))
     (not (null pos))))
 
+(defsubst looking-at-p (regexp)
+  "\
+Same as `looking-at' except this function does not change the match data."
+  (let ((inhibit-changing-match-data t))
+    (looking-at regexp)))
+
+(defsubst string-match-p (regexp string &optional start)
+  "\
+Same as `string-match' except this function does not change the match data."
+  (let ((inhibit-changing-match-data t))
+    (string-match regexp string start)))
+
 (defun subregexp-context-p (regexp pos &optional start)
   "Return non-nil if POS is in a normal subregexp context in REGEXP.
 A subregexp context is one where a sub-regexp can appear.
index 99e42fe288bd664abb1434b5bd04ae009565e9c8..e88067b7fe511322f083583238532f0cc2a480f7 100644 (file)
@@ -1,7 +1,7 @@
 ;;; t-mouse.el --- mouse support within the text terminal
 
-;; Authors: Alessandro Rubini and Ian T Zimmerman
-;; Maintainer: Nick Roberts <nickrob@gnu.org>
+;; Author: Nick Roberts <nickrob@gnu.org>
+;; Maintainer: FSF
 ;; Keywords: mouse gpm linux
 
 ;; Copyright (C) 1994, 1995, 1998, 2006, 2007 Free Software Foundation, Inc.
 
 ;;; Commentary:
 
-;; This package provides access to mouse event as reported by the
-;; gpm-Linux package.  It uses the program "mev" to get mouse events.
-;; It tries to reproduce the functionality offered by Emacs under X.
+;; This package provides access to mouse event as reported by the gpm-Linux
+;; package. It tries to reproduce the functionality offered by Emacs under X.
 ;; The "gpm" server runs under Linux, so this package is rather
 ;; Linux-dependent.
 
-;; Modified by Nick Roberts for Emacs 22.  In particular, the mode-line is
-;; now position sensitive.
-
-(defvar t-mouse-process nil
-  "Embeds the process which passes mouse events to Emacs.
-It is used by the program t-mouse.")
-
-(defvar t-mouse-filter-accumulator ""
-  "Accumulates input from the mouse reporting process.")
-
-(defvar t-mouse-debug-buffer nil
-  "Events normally posted to command queue are printed here in debug mode.
-See `t-mouse-start-debug'.")
-
-(defvar t-mouse-current-xy '(0 . 0)
-  "Stores the last mouse position t-mouse has been told about.")
-
-(defvar t-mouse-drag-start nil
-  "Whenever a drag starts in a special part of a window
-\(not the text), the `translated' starting coordinates including the
-window and part involved are saved here.  This is necessary lest they
-get re-translated when the button goes up, at which time window
-configuration may have changed.")
-
-(defvar t-mouse-prev-set-selection-function 'x-set-selection)
-(defvar t-mouse-prev-get-selection-function 'x-get-selection)
-
-(defvar t-mouse-swap-alt-keys nil
-  "When set, Emacs will handle mouse events with the right Alt
-\(a.k.a.  Alt-Ger) modifier, not with the regular left Alt modifier.
-Useful for people who play strange games with their keyboard tables.")
-
-(defvar t-mouse-fix-21 nil
-  "Enable brain-dead chords for 2 button mice.")
+;; The file, t-mouse.el was originally written by Alessandro Rubini and Ian T
+;; Zimmerman, and Emacs communicated with gpm through a client program called
+;; mev.  Now the interface with gpm is directly through a Unix socket, so this
+;; file is reduced to a single minor mode macro call.
 
+;; 
 \f
 ;;; Code:
 
-;; get the number of the current virtual console
-
-(defun t-mouse-tty ()
-  "Return number of virtual terminal Emacs is running on, as a string.
-For example, \"2\" for /dev/tty2."
-  (with-temp-buffer
-    (call-process "ps" nil t nil "h" (format "%s" (emacs-pid)))
-    (goto-char (point-min))
-    (if (or
-        ;; Many versions of "ps", all different....
-        (re-search-forward " +tty\\(.?[0-9a-f]\\)" nil t)
-        (re-search-forward "p \\([0-9a-f]\\)" nil t)
-        (re-search-forward "v0\\([0-9a-f]\\)" nil t)
-        (re-search-forward "[0-9]+ +\\([0-9]+\\)" nil t)
-        (re-search-forward "[\\t ]*[0-9]+[\\t ]+\\([0-9]+\\)" nil t)
-        (re-search-forward " +vc/\\(.?[0-9a-f]\\)" nil t)
-        (re-search-forward " +pts/\\(.?[0-9a-f]\\)" nil t))
-       (buffer-substring (match-beginning 1) (match-end 1)))))
-
-\f
-;; due to a horrible kludge in Emacs' keymap handler
-;; (read_key_sequence) mouse clicks on funny parts of windows generate
-;; TWO events, the first being a dummy of the sort '(mode-line).
-;; That's why Per Abrahamsen's code in xt-mouse.el doesn't work for
-;; the modeline, for instance.
-
-;; now get this:  the Emacs C code that generates these fake events
-;; depends on certain things done by the very lowest level input
-;; handlers; namely the symbols for the events (for instance
-;; 'C-S-double-mouse-2) must have an 'event-kind property, set to
-;; 'mouse-click.  Since events from unread-command-events do not pass
-;; through the low level handlers, they don't get this property unless
-;; I set it myself.  I imagine this has caused innumerable attempts by
-;; hackers to do things similar to t-mouse to lose.
-
-;; The next page of code is devoted to fixing this ugly problem.
-
-;; WOW! a fully general powerset generator
-;; (C) Ian Zimmerman Mon Mar 23 12:00:16 PST 1998 :-)
-(defun t-mouse-powerset (l)
-  (if (null l) '(nil)
-    (let ((l1 (t-mouse-powerset (cdr l)))
-          (first (nth 0 l)))
-      (append
-       (mapcar (function (lambda (l) (cons first l))) l1) l1))))
-
-;; and a slightly less general cartesian product
-(defun t-mouse-cartesian (l1 l2)
-  (if (null l1) l2
-    (append (mapcar (function (lambda (x) (append (nth 0 l1) x))) l2)
-            (t-mouse-cartesian (cdr l1) l2))))
-
-(let* ((modifier-sets (t-mouse-powerset '(control meta shift)))
-       (typed-sets (t-mouse-cartesian '((down) (drag))
-                                      '((mouse-1) (mouse-2) (mouse-3))))
-       (multipled-sets (t-mouse-cartesian '((double) (triple)) typed-sets))
-       (all-sets (t-mouse-cartesian modifier-sets multipled-sets)))
-  (while all-sets
-    (let ((event-sym (event-convert-list (nth 0 all-sets))))
-      (if (not (get event-sym 'event-kind))
-          (put event-sym 'event-kind 'mouse-click)))
-    (setq all-sets (cdr all-sets))))
-
-(defun t-mouse-make-event-element (x-dot-y-avec-time)
-  (let* ((x-dot-y (nth 0 x-dot-y-avec-time))
-        (time (nth 1 x-dot-y-avec-time))
-         (x (car x-dot-y))
-         (y (cdr x-dot-y))
-         (w (window-at x y))
-         (ltrb (window-edges w))
-         (left (nth 0 ltrb))
-         (top (nth 1 ltrb))
-        (event (if w
-                   (posn-at-x-y (- x left) (- y top) w t)
-                 (append (list nil 'menu-bar)
-                         (nthcdr 2 (posn-at-x-y x y))))))
-    (setcar (nthcdr 3 event) time)
-    event))
-
-;;; This fun is partly Copyright (C) 1994 Per Abrahamsen <abraham@iesd.auc.dk>
-(defun t-mouse-make-event ()
-  "Make a Lisp style event from the contents of mouse input accumulator.
-Also trim the accumulator by all the data used to build the event."
-  (let (ob (ob-pos (condition-case nil
-                      (progn
-                        ;; this test is just needed for Fedora Core 3
-                        (if (string-match "STILL RUNNING_1\n"
-                                          t-mouse-filter-accumulator)
-                            (setq t-mouse-filter-accumulator
-                                  (substring
-                                   t-mouse-filter-accumulator (match-end 0))))
-                        (read-from-string t-mouse-filter-accumulator))
-                     (error nil))))
-    ;; this test is just needed for Fedora Core 3
-    (if (or (eq (car ob-pos) 'STILL) (eq (car ob-pos) '***) (not ob-pos))
-       nil
-      (setq ob (car ob-pos))
-      (if (string-match "mev:$" (prin1-to-string ob))
-         (error "Can't open mouse connection"))
-      (setq t-mouse-filter-accumulator
-            (substring t-mouse-filter-accumulator (cdr ob-pos)))
-
-      ;;now the real work
-
-      (let ((event-type (nth 0 ob))
-            (current-xy-avec-time (nth 1 ob))
-            (type-switch (length ob)))
-       (if t-mouse-fix-21
-            (let
-                ;;Acquire the event's symbol's name.
-                ((event-name-string (symbol-name event-type))
-                 end-of-root-event-name
-                 new-event-name-string)
-
-              (if (string-match "-\\(21\\|\\12\\)$" event-name-string)
-
-                  ;;Transform the name to what it should have been.
-                  (progn
-                    (setq end-of-root-event-name (match-beginning 0))
-                    (setq new-event-name-string
-                          (concat (substring
-                                   event-name-string 0
-                                   end-of-root-event-name) "-3"))
-
-                    ;;Change the event to the symbol that corresponds to the
-                    ;;name we made. The proper symbol already exists.
-                    (setq event-type
-                          (intern new-event-name-string))))))
-
-        ;;store current position for mouse-position
-
-        (setq t-mouse-current-xy (nth 0 current-xy-avec-time))
-
-        ;;events have many types but fortunately they differ in length
-
-        (cond
-         ((= type-switch 4)             ;must be drag
-          (let ((count (nth 2 ob))
-                (start-element
-                 (or t-mouse-drag-start
-                     (t-mouse-make-event-element (nth 3 ob))))
-                (end-element
-                 (t-mouse-make-event-element current-xy-avec-time)))
-            (setq t-mouse-drag-start nil)
-            (list event-type start-element end-element count)))
-         ((= type-switch 3)             ;down or up
-          (let ((count (nth 2 ob))
-                (element
-                 (t-mouse-make-event-element current-xy-avec-time)))
-            (if (and (not t-mouse-drag-start)
-                     (symbolp (nth 1 element)))
-                ;; OUCH! GOTCHA! emacs uses setc[ad]r on these!
-                (setq t-mouse-drag-start (copy-sequence element))
-              (setq t-mouse-drag-start nil))
-            (list event-type element count)))
-         ((= type-switch 2)             ;movement
-          (list (if (eq 'vertical-scroll-bar
-                        (nth 1 t-mouse-drag-start)) 'scroll-bar-movement
-                  'mouse-movement)
-                (t-mouse-make-event-element current-xy-avec-time))))))))
-
-(defun t-mouse-process-filter (proc string)
-  (setq t-mouse-filter-accumulator
-        (concat t-mouse-filter-accumulator string))
-  (let ((event (t-mouse-make-event)))
-    (while event
-      (if (or track-mouse
-              (not (eq 'mouse-movement (event-basic-type event))))
-          (setq unread-command-events
-                (nconc unread-command-events (list event))))
-      (if t-mouse-debug-buffer
-          (print unread-command-events t-mouse-debug-buffer))
-      (setq event (t-mouse-make-event)))))
-
-(defun t-mouse-mouse-position-function (pos)
-  "Return the t-mouse-position unless running with a window system.
-The (secret) scrollbar interface is not implemented yet."
-  (setcdr pos t-mouse-current-xy)
-  pos)
-
-;; It should be possible to just send SIGTSTP to the inferior with
-;; stop-process.  That doesn't work; mev receives the signal fine but
-;; is not really stopped: instead it returns from
-;; kill(getpid(), SIGTSTP) immediately.  I don't understand what's up
-;; itz Tue Mar 24 14:27:38 PST 1998.
-
-(add-hook 'suspend-hook
-          (function (lambda ()
-                      (and t-mouse-process
-                           ;(stop-process t-mouse-process)
-                           (process-send-string
-                            t-mouse-process "push -enone -dall -Mnone\n")))))
-
-(add-hook 'suspend-resume-hook
-          (function (lambda ()
-                      (and t-mouse-process
-                           ;(continue-process t-mouse-process)
-                           (process-send-string t-mouse-process "pop\n")))))
-
 ;;;###autoload
-(define-minor-mode t-mouse-mode
-  "Toggle t-mouse mode to use the mouse in Linux consoles.
-With prefix arg, turn t-mouse mode on if arg is positive, otherwise turn it
-off.
-
-This allows the use of the mouse when operating on a Linux console, in the
-same way as you can use the mouse under X11.
-It requires the `mev' program, part of the `gpm' utilities."
-  nil " Mouse" nil :global t
-  (if t-mouse-mode
-      ;; Turn it on
-      (unless window-system
-        ;; Starts getting a stream of mouse events from an asynchronous process.
-        ;; Only works if Emacs is running on a virtual terminal without a window system.
-       (progn
-        (setq mouse-position-function #'t-mouse-mouse-position-function)
-        (let ((tty (t-mouse-tty))
-              (process-connection-type t))
-          (if (not (stringp tty))
-              (error "Cannot find a virtual terminal"))
-          (setq t-mouse-process
-                (start-process "t-mouse" nil
-                               "mev" "-i" "-E" "-C" tty
-                               (if t-mouse-swap-alt-keys
-                                   "-M-leftAlt" "-M-rightAlt")
-                               "-e-move"
-                               "-dall" "-d-hard"
-                               "-f")))
-        (setq t-mouse-filter-accumulator "")
-        (set-process-filter t-mouse-process 't-mouse-process-filter)
-        (set-process-query-on-exit-flag t-mouse-process nil)))
-    ;; Turn it off
-    (setq mouse-position-function nil)
-    (delete-process t-mouse-process)
-    (setq t-mouse-process nil)))
+(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
+;;;###autoload
+(define-minor-mode gpm-mouse-mode
+  "Toggle gpm-mouse mode to use the mouse in GNU/Linux consoles.
+With prefix arg, turn gpm-mouse mode on if arg is positive,
+otherwise turn it off.
+
+This allows the use of the mouse when operating on a GNU/Linux console,
+in the same way as you can use the mouse under X11.
+It relies on the `gpm' daemon being activated."
+  :global t :group 'mouse
+  (let ((activated nil))
+    (unwind-protect
+        (progn
+          (unless (fboundp 'gpm-mouse-start)
+            (error "Emacs must be built with Gpm to use this mode"))
+          (when gpm-mouse-mode
+            (gpm-mouse-start)
+            (setq activated t)))
+      ;; If the user asked to turn it off do that.
+      ;; If something failed to turn it on, try to turn it off as well,
+      ;; just in case.
+      (when (and (fboundp 'gpm-mouse-stop) (not activated))
+        (setq gpm-mouse-mode nil)
+        (gpm-mouse-stop)))))
 
 (provide 't-mouse)
 
index 8af1577ac379e057aeda077b6a5d84aa798db7ac..a46eadc745c029f7346bc5a67c4587c2828d52d3 100644 (file)
@@ -46,17 +46,44 @@ Each element has the form (DISPLAY FRAME BUFFER).")
   ;; Add the new buffers to all talk frames.
   (talk-update-buffers))
 
-(defun talk-add-display (display)
-  (let* ((elt (assoc display talk-display-alist))
-        (name (concat "*talk-" display "*"))
-        buffer frame)
-    (if (not (and elt (frame-live-p (setq frame (nth 1 elt)))))
-       (setq frame (make-frame-on-display display (list (cons 'name name)))))
+;;;###autoload
+(defun talk ()
+  "Connect to the Emacs talk group from the current X display or tty frame."
+  (interactive)
+  (let ((type (frame-live-p (selected-frame)))
+       (display (frame-terminal (selected-frame))))
+    (cond
+     ((eq type t)
+      (talk-add-display (selected-frame)))
+     ((eq type 'x)
+      (talk-add-display (frame-terminal (selected-frame))))
+     (t
+      (error "Unknown frame type"))))
+  (talk-update-buffers))
+
+(defun talk-add-display (frame)
+  (let* ((display (if (frame-live-p frame)
+                     (frame-terminal frame)
+                   frame))
+        (elt (assoc display talk-display-alist))
+        (name (concat "*talk-" (terminal-name display) "*"))
+        buffer)
+    (unless (frame-live-p frame)
+      (setq frame (make-frame-on-display display (list (cons 'name name)))))
+    (if (and elt (frame-live-p (nth 1 elt)))
+       (setq frame (nth 1 elt)))
     (if (not (and elt (buffer-name (get-buffer (setq buffer (nth 2 elt))))))
        (setq buffer (get-buffer-create name)))
+    (add-to-list 'delete-frame-functions 'talk-handle-delete-frame)
     (setq talk-display-alist
          (cons (list display frame buffer) (delq elt talk-display-alist)))))
 
+(defun talk-handle-delete-frame (frame)
+  (dolist (d talk-display-alist)
+    (when (eq (nth 1 d) frame)
+      (setq talk-display-alist (delq d talk-display-alist))
+      (talk-update-buffers))))
+
 (defun talk-disconnect ()
   "Disconnect this display from the Emacs talk group."
   (interactive)
index 77b62a192896552e98072fbd50e0fbc5e16f7286..944694b9b7ea6f3bcd5cc0bbac4ca468c1f1dc50 100644 (file)
@@ -750,9 +750,7 @@ appear on disk when you save the tar-file's buffer."
                             ;; that the file's contents' encoding and
                             ;; EOL format are auto-detected.
                             (let ((file-name-handler-alist
-                                   (if (featurep 'dos-w32)
-                                       '(("" . tar-file-name-handler))
-                                     file-name-handler-alist)))
+                                   '(("" . tar-file-name-handler))))
                               (car (find-operation-coding-system
                                     'insert-file-contents
                                     (cons name (current-buffer)) t)))))
index 261dac71818f9307d41cd864a667abda5bde6aa8..383dcd40d24c7fba75452f967bac02efe9b841cb 100644 (file)
@@ -315,9 +315,9 @@ mode, ON-REGION is ignored and assumed true if the region is active."
            (goto-char tempo-region-start))
        (save-excursion
          (tempo-insert-mark (point-marker))
-         (mapcar (function (lambda (elt)
-                             (tempo-insert elt on-region)))
-                 (symbol-value template))
+         (mapc (function (lambda (elt)
+                           (tempo-insert elt on-region)))
+               (symbol-value template))
          (tempo-insert-mark (point-marker)))
        (tempo-forward-mark))
     (tempo-forget-insertions)
@@ -460,10 +460,10 @@ never prompted."
   "Tries all the user-defined element handlers in `tempo-user-elements'."
   ;; Sigh... I need (some list)
   (catch 'found
-    (mapcar (function (lambda (handler)
-                       (let ((result (funcall handler element)))
-                         (if result (throw 'found result)))))
-           tempo-user-elements)
+    (mapc (function (lambda (handler)
+                     (let ((result (funcall handler element)))
+                       (if result (throw 'found result)))))
+         tempo-user-elements)
     (throw 'found nil)))
 
 ;;;
@@ -556,7 +556,7 @@ and insert the results."
   "Jump to the next mark in `tempo-forward-mark-list'."
   (interactive)
   (let ((next-mark (catch 'found
-                    (mapcar
+                    (mapc
                      (function
                       (lambda (mark)
                         (if (< (point) mark)
@@ -575,7 +575,7 @@ and insert the results."
   (interactive)
   (let ((prev-mark (catch 'found
                     (let (last)
-                      (mapcar
+                      (mapc
                        (function
                         (lambda (mark)
                           (if (<= (point) mark)
index 370f643225b1bc9ff85cd27ddd19cbf60ff8556a..523d20670e689bee1a35b2a98f72a0734746dd43 100644 (file)
 
 (defgroup term nil
   "General command interpreter in a window."
-  :group 'processes
-  :group 'unix)
+  :group 'processes)
 
 \f
 ;;; Buffer Local Variables:
@@ -3723,12 +3722,12 @@ all pending output has been dealt with."))
 (defun term-erase-in-display (kind)
   "Erases (that is blanks out) part of the window.
 If KIND is 0, erase from (point) to (point-max);
-if KIND is 1, erase from home to point; else erase from home to point-max.
-Should only be called when point is at the start of a screen line."
+if KIND is 1, erase from home to point; else erase from home to point-max."
   (term-handle-deferred-scroll)
   (cond ((eq term-terminal-parameter 0)
-        (delete-region (point) (point-max))
-        (term-unwrap-line))
+        (let ((need-unwrap (bolp)))
+          (delete-region (point) (point-max))
+          (when need-unwrap (term-unwrap-line))))
        ((let ((row (term-current-row))
              (col (term-horizontal-column))
              (start-region term-home-marker)
index 8adb94c07ca664baecfbbd2f4ea6fc44495581bb..23dfd8e2b1170942fd731d2cb69286f52673d050 100644 (file)
 
 ;;; Code:
 
-(if (boundp 'AT386-keypad-map)
-    nil
-  ;; The terminal initialization should already have set up some keys
-  (setq AT386-keypad-map (lookup-key function-key-map "\e["))
-  (if (not (keymapp AT386-keypad-map))
-      (error "What?  Your AT386 termcap/terminfo has no keycaps in it"))
-
-  ;; Equivalents of these are set up automatically by termcap/terminfo
-  ;;  (define-key AT386-keypad-map "A" [up])
-  ;;  (define-key AT386-keypad-map "B" [down])
-  ;;  (define-key AT386-keypad-map "C" [right])
-  ;;  (define-key AT386-keypad-map "D" [left])
-
-  ;; These would be set up by terminfo, but not termcap
-  (define-key AT386-keypad-map "H" [home])
-  (define-key AT386-keypad-map "Y" [end])
-  (define-key AT386-keypad-map "U" [next])     ;; PgDn
-  (define-key AT386-keypad-map "V" [prior])    ;; PgUp
-  (define-key AT386-keypad-map "@" [insert])   ;; Ins key
-
-  ;; These are not normally set up by either
-  (define-key AT386-keypad-map "G" [kp-5])     ;; Unlabeled center key
-  (define-key AT386-keypad-map "S" [kp-subtract])
-  (define-key AT386-keypad-map "T" [kp-add])
-
-  ;; Arrange for the ALT key to be equivalent to ESC
-  (define-key function-key-map "\eN" [27]) ; ALT map
-  )
+(defun terminal-init-AT386 ()
+  "Terminal initialization function for AT386."
+  (let ((AT386-keypad-map (lookup-key local-function-key-map "\e[")))
+    ;; The terminal initialization should already have set up some keys
+    (if (not (keymapp AT386-keypad-map))
+       (error "What?  Your AT386 termcap/terminfo has no keycaps in it"))
+
+    ;; Equivalents of these are set up automatically by termcap/terminfo
+    ;;  (define-key AT386-keypad-map "A" [up])
+    ;;  (define-key AT386-keypad-map "B" [down])
+    ;;  (define-key AT386-keypad-map "C" [right])
+    ;;  (define-key AT386-keypad-map "D" [left])
+
+    ;; These would be set up by terminfo, but not termcap
+    (define-key AT386-keypad-map "H" [home])
+    (define-key AT386-keypad-map "Y" [end])
+    (define-key AT386-keypad-map "U" [next])   ;; PgDn
+    (define-key AT386-keypad-map "V" [prior])  ;; PgUp
+    (define-key AT386-keypad-map "@" [insert]) ;; Ins key
+
+    ;; These are not normally set up by either
+    (define-key AT386-keypad-map "G" [kp-5])   ;; Unlabeled center key
+    (define-key AT386-keypad-map "S" [kp-subtract])
+    (define-key AT386-keypad-map "T" [kp-add])
+
+    ;; Arrange for the ALT key to be equivalent to ESC
+    (define-key local-function-key-map "\eN" [27]) ; ALT map
+    ))
 
 ;;; arch-tag: abec1b03-582f-49f8-b8cb-e2fd52ea4bd7
 ;;; AT386.el ends here
index e1cfbf15901f1aad0346a60db1c61602a475475e..e5fb2da83ad44162b43fdaf535a786fe296a793d 100644 (file)
@@ -6,19 +6,43 @@ See the end of the file for license conditions.
    This directory contains files of elisp that customize Emacs for certain
 terminal types.
 
-   When Emacs starts, it checks the TERM environment variable to see what type
-of terminal the user is running on, checks for an elisp file named
-"term/${TERM}.el", and if one exists, loads it.  If that doesn't yield a file
-that exists, the last hyphen and what follows it is stripped.  If that doesn't
-yield a file that exists, the previous hyphen is stripped, and so on until all
-hyphens are gone.  For example, if the terminal type is `aaa-48-foo', Emacs
-will try first `term/aaa-48-foo.el', then `term/aaa-48.el' and finally
-`term/aaa.el'.  Each terminal specific file should contain a function
-named terminal-init-TERMINALNAME (eg terminal-init-aaa-48 for
-term/aaa-48.el) that Emacs will call in order to initialize the
-terminal. The terminal files should not contain any top level forms
-that are executed when the file is loaded, all the initialization
-actions are performed by the terminal-init-TERMINALNAME functions.
+   When Emacs opens a new terminal, it checks the TERM environment variable to
+see what type of terminal the user is running on, searches for an elisp file
+named "term/${TERM}.el", and if one exists, loads it.  If Emacs finds no
+suitable file, then it strips the last hyphen and what follows it from TERM,
+and tries again.  If that still doesn't yield a file, then the previous hyphen
+is stripped, and so on until all hyphens are gone.  For example, if the
+terminal type is `aaa-48-foo', Emacs will try first `term/aaa-48-foo.el', then
+`term/aaa-48.el' and finally `term/aaa.el'.  Emacs stops searching at the
+first file found, and will not load more than one file for any terminal.  Note
+that it is not an error if Emacs is unable to find a terminal initialization
+file; in that case, it will simply proceed with the next step without loading
+any files.
+
+   Once the file has been loaded (or the search failed), Emacs tries to call a
+function named `terminal-init-TERMINALNAME' (eg `terminal-init-aaa-48' for the
+`aaa-48' terminal) in order to initialize the terminal.  Once again, if the
+function is not found, Emacs strips the last component of the name and tries
+again using the shorter name.  This search is independent of the previous file
+search, so that you can have terminal initialization functions for a family of
+terminals collected in a single file named after the family name, and users
+may put terminal initialization functions directly in their .emacs files.
+
+   Note that an individual terminal file is loaded only once in an Emacs
+session; if the same terminal type is opened again, Emacs will simply call the
+initialization function without reloading the file.  Therefore, all the actual
+initialization actions should be collected in terminal-init-* functions; the
+file should not contain any top-level form that is not a function or variable
+declaration.  Simply loading the file should not have any side effect.
+
+   Similarly, the terminal initialization function is called only once on any
+given terminal, when the first frame is created on it.  The function is not
+called for subsequent frames on the same terminal.  Therefore, terminal-init-*
+functions should only modify terminal-local variables (such as
+`local-function-key-map') and terminal parameters.  For example, it is not
+correct to modify frame parameters, since the modifications will only be
+applied for the first frame opened on the terminal.
+
 
    When writing terminal packages, there are some things it is good to keep in
 mind.
index 749ff85a0a68fb39393b59d7e03d432b107de570..c47de919b0c27b5c35c62a873df44ab534f458de 100644 (file)
@@ -1,7 +1,7 @@
 ;; -*- no-byte-compile: t -*-
 (defun terminal-init-apollo ()
-  "Terminal initialization function for apollo."  
-  (load "term/vt100" nil t))
+  "Terminal initialization function for apollo."
+  (tty-run-terminal-initialization (selected-frame) "vt100"))
 
 ;;; arch-tag: c72f446f-e6b7-4749-90a4-bd68632adacf
 ;;; apollo.el ends here
index 82401f7bf71873510c3b0f214c8ea0ca214ca6da..974476f679862733c05ac3e79e033d517fc08dc8 100644 (file)
@@ -1,7 +1,7 @@
 ;; -*- no-byte-compile: t -*-
 
 (defun terminal-init-bobcat ()
-  "Terminal initialization function for bobcat."  
+  "Terminal initialization function for bobcat."
   ;; HP terminals usually encourage using ^H as the rubout character
   (keyboard-translate ?\177 ?\^h)
   (keyboard-translate ?\^h ?\177))
index 3bdd5d3aa05a5d7e982a8a17acf987294105be8a..df857ba6625cfed9f74259777ad97327f4ceae1f 100644 (file)
@@ -3,7 +3,7 @@
 ;;; The Cygwin terminal can't really display underlines.
 
 (defun terminal-init-cygwin ()
-  "Terminal initialization function for cygwin."  
+  "Terminal initialization function for cygwin."
   (tty-no-underline))
 
 ;; arch-tag: ca81ce67-3c41-4883-a29b-4c3d64a21191
index 2db2cd93d4d8d12a56392427975ee9f2aa69e7f8..fb13f48d6bacecb9412138e99950cb71e366f742 100644 (file)
 ;; ---------------------------------------------------------------------------
 ;; keyboard setup -- that's simple!
 (set-input-mode nil nil 0)
-(define-key function-key-map [backspace] "\177") ; Normal behaviour for BS
-(define-key function-key-map [delete] "\C-d")    ; ... and Delete
-(define-key function-key-map [tab] [?\t])
-(define-key function-key-map [linefeed] [?\n])
-(define-key function-key-map [clear] [11])
-(define-key function-key-map [return] [13])
-(define-key function-key-map [escape] [?\e])
-(define-key function-key-map [M-backspace] [?\M-\d])
-(define-key function-key-map [M-delete] [?\M-d])
-(define-key function-key-map [M-tab] [?\M-\t])
-(define-key function-key-map [M-linefeed] [?\M-\n])
-(define-key function-key-map [M-clear] [?\M-\013])
-(define-key function-key-map [M-return] [?\M-\015])
-(define-key function-key-map [M-escape] [?\M-\e])
+(define-key local-function-key-map [backspace] "\177") ; Normal behaviour for BS
+(define-key local-function-key-map [delete] "\C-d") ; ... and Delete
+(define-key local-function-key-map [tab] [?\t])
+(define-key local-function-key-map [linefeed] [?\n])
+(define-key local-function-key-map [clear] [11])
+(define-key local-function-key-map [return] [13])
+(define-key local-function-key-map [escape] [?\e])
+(define-key local-function-key-map [M-backspace] [?\M-\d])
+(define-key local-function-key-map [M-delete] [?\M-d])
+(define-key local-function-key-map [M-tab] [?\M-\t])
+(define-key local-function-key-map [M-linefeed] [?\M-\n])
+(define-key local-function-key-map [M-clear] [?\M-\013])
+(define-key local-function-key-map [M-return] [?\M-\015])
+(define-key local-function-key-map [M-escape] [?\M-\e]))
 (put 'backspace 'ascii-character 127)
 (put 'delete 'ascii-character 127)
 (put 'tab 'ascii-character ?\t)
index 2f1930070512f79dee1926014adbab5551cc9625..a941a0399f37ddbac15e04d9a02cccd57da97d6f 100644 (file)
 
 ;;; Code:
 
-(defun iris-ansi-initialize-terminal ()
-  "Terminal initialization function for iris-ansi."
-  (define-key function-key-map "\e[120q" [S-escape])
-  (define-key function-key-map "\e[121q" [C-escape])
+(defvar iris-function-map (make-sparse-keymap)
+  "Function key definitions for SGI xwsh and winterm apps.")
+
+(define-key iris-function-map "\e[120q" [S-escape])
+(define-key iris-function-map "\e[121q" [C-escape])
 
-  (define-key function-key-map "\e[001q" [f1])
-  (define-key function-key-map "\e[013q" [S-f1])
-  (define-key function-key-map "\e[025q" [C-f1])
+(define-key iris-function-map "\e[001q" [f1])
+(define-key iris-function-map "\e[013q" [S-f1])
+(define-key iris-function-map "\e[025q" [C-f1])
 
 
-  (define-key function-key-map "\e[002q" [f2])
-  (define-key function-key-map "\e[014q" [S-f2])
-  (define-key function-key-map "\e[026q" [C-f2])
-  (define-key function-key-map "\e[038q" [M-f2])
+(define-key iris-function-map "\e[002q" [f2])
+(define-key iris-function-map "\e[014q" [S-f2])
+(define-key iris-function-map "\e[026q" [C-f2])
+(define-key iris-function-map "\e[038q" [M-f2])
 
-  (define-key function-key-map "\e[003q" [f3])
-  (define-key function-key-map "\e[015q" [S-f3])
-  (define-key function-key-map "\e[027q" [C-f3])
+(define-key iris-function-map "\e[003q" [f3])
+(define-key iris-function-map "\e[015q" [S-f3])
+(define-key iris-function-map "\e[027q" [C-f3])
 
 
-  (define-key function-key-map "\e[004q" [f4])
-  (define-key function-key-map "\e[016q" [S-f4])
-  (define-key function-key-map "\e[028q" [C-f4])
+(define-key iris-function-map "\e[004q" [f4])
+(define-key iris-function-map "\e[016q" [S-f4])
+(define-key iris-function-map "\e[028q" [C-f4])
 
 
-  (define-key function-key-map "\e[005q" [f5])
-  (define-key function-key-map "\e[017q" [S-f5])
-  (define-key function-key-map "\e[029q" [C-f5])
+(define-key iris-function-map "\e[005q" [f5])
+(define-key iris-function-map "\e[017q" [S-f5])
+(define-key iris-function-map "\e[029q" [C-f5])
 
 
-  (define-key function-key-map "\e[006q" [f6])
-  (define-key function-key-map "\e[018q" [S-f6])
-  (define-key function-key-map "\e[030q" [C-f6])
+(define-key iris-function-map "\e[006q" [f6])
+(define-key iris-function-map "\e[018q" [S-f6])
+(define-key iris-function-map "\e[030q" [C-f6])
 
 
-  (define-key function-key-map "\e[007q" [f7])
-  (define-key function-key-map "\e[019q" [S-f7])
-  (define-key function-key-map "\e[031q" [C-f7])
+(define-key iris-function-map "\e[007q" [f7])
+(define-key iris-function-map "\e[019q" [S-f7])
+(define-key iris-function-map "\e[031q" [C-f7])
 
 
-  (define-key function-key-map "\e[008q" [f8])
-  (define-key function-key-map "\e[020q" [S-f8])
-  (define-key function-key-map "\e[032q" [C-f8])
+(define-key iris-function-map "\e[008q" [f8])
+(define-key iris-function-map "\e[020q" [S-f8])
+(define-key iris-function-map "\e[032q" [C-f8])
 
 
-  (define-key function-key-map "\e[009q" [f9])
-  (define-key function-key-map "\e[021q" [S-f9])
-  (define-key function-key-map "\e[033q" [C-f9])
+(define-key iris-function-map "\e[009q" [f9])
+(define-key iris-function-map "\e[021q" [S-f9])
+(define-key iris-function-map "\e[033q" [C-f9])
 
 
-  (define-key function-key-map "\e[010q" [f10])
-  (define-key function-key-map "\e[022q" [S-f10])
-  (define-key function-key-map "\e[034q" [C-f10])
+(define-key iris-function-map "\e[010q" [f10])
+(define-key iris-function-map "\e[022q" [S-f10])
+(define-key iris-function-map "\e[034q" [C-f10])
 
 
-  (define-key function-key-map "\e[011q" [f11])
-  (define-key function-key-map "\e[023q" [S-f11])
-  (define-key function-key-map "\e[035q" [C-f11])
-  (define-key function-key-map "\e[047q" [M-f11])
+(define-key iris-function-map "\e[011q" [f11])
+(define-key iris-function-map "\e[023q" [S-f11])
+(define-key iris-function-map "\e[035q" [C-f11])
+(define-key iris-function-map "\e[047q" [M-f11])
 
-  (define-key function-key-map "\e[012q" [f12])
-  (define-key function-key-map "\e[024q" [S-f12])
-  (define-key function-key-map "\e[036q" [C-f12])
-  (define-key function-key-map "\e[048q" [M-f12])
+(define-key iris-function-map "\e[012q" [f12])
+(define-key iris-function-map "\e[024q" [S-f12])
+(define-key iris-function-map "\e[036q" [C-f12])
+(define-key iris-function-map "\e[048q" [M-f12])
 
 
-  (define-key function-key-map "\e[057q" [?\C-`])
-  (define-key function-key-map "\e[115q" [?\M-`])
+(define-key iris-function-map "\e[057q" [?\C-`])
+(define-key iris-function-map "\e[115q" [?\M-`])
 
-  (define-key function-key-map "\e[049q" [?\C-1])
-  (define-key function-key-map "\e[058q" [?\M-1])
+(define-key iris-function-map "\e[049q" [?\C-1])
+(define-key iris-function-map "\e[058q" [?\M-1])
 
 
-  (define-key function-key-map "\e[059q" [?\M-2])
+(define-key iris-function-map "\e[059q" [?\M-2])
 
-  (define-key function-key-map "\e[050q" [?\C-3])
-  (define-key function-key-map "\e[060q" [?\M-3])
+(define-key iris-function-map "\e[050q" [?\C-3])
+(define-key iris-function-map "\e[060q" [?\M-3])
 
-  (define-key function-key-map "\e[051q" [?\C-4])
-  (define-key function-key-map "\e[061q" [?\M-4])
+(define-key iris-function-map "\e[051q" [?\C-4])
+(define-key iris-function-map "\e[061q" [?\M-4])
 
-  (define-key function-key-map "\e[052q" [?\C-5])
-  (define-key function-key-map "\e[062q" [?\M-5])
+(define-key iris-function-map "\e[052q" [?\C-5])
+(define-key iris-function-map "\e[062q" [?\M-5])
 
 
-  (define-key function-key-map "\e[063q" [?\M-6])
+(define-key iris-function-map "\e[063q" [?\M-6])
 
-  (define-key function-key-map "\e[053q" [?\C-7])
-  (define-key function-key-map "\e[064q" [?\M-7])
+(define-key iris-function-map "\e[053q" [?\C-7])
+(define-key iris-function-map "\e[064q" [?\M-7])
 
-  (define-key function-key-map "\e[054q" [?\C-8])
-  (define-key function-key-map "\e[065q" [?\M-8])
+(define-key iris-function-map "\e[054q" [?\C-8])
+(define-key iris-function-map "\e[065q" [?\M-8])
 
-  (define-key function-key-map "\e[055q" [?\C-9])
-  (define-key function-key-map "\e[066q" [?\M-9])
+(define-key iris-function-map "\e[055q" [?\C-9])
+(define-key iris-function-map "\e[066q" [?\M-9])
 
-  (define-key function-key-map "\e[056q" [?\C-0])
-  (define-key function-key-map "\e[067q" [?\M-0])
+(define-key iris-function-map "\e[056q" [?\C-0])
+(define-key iris-function-map "\e[067q" [?\M-0])
 
-  (define-key function-key-map "\e[068q" [?\M--])
+(define-key iris-function-map "\e[068q" [?\M--])
 
-  (define-key function-key-map "\e[069q" [?\C-=])
-  (define-key function-key-map "\e[070q" [?\M-=])
+(define-key iris-function-map "\e[069q" [?\C-=])
+(define-key iris-function-map "\e[070q" [?\M-=])
 
-  ;; I don't know what to do with those.
-  ;;(define-key function-key-map "^H" [<del>])
-  ;;(define-key function-key-map "^H" [S-<del>])
-  ;;(define-key function-key-map "\177" [C-<del>])
-  ;;(define-key function-key-map "\e[071q" [M-<del>])
+;; I don't know what to do with those.
+;;(define-key iris-function-map "^H" [<del>])
+;;(define-key iris-function-map "^H" [S-<del>])
+;;(define-key iris-function-map "\177" [C-<del>])
+;;(define-key iris-function-map "\e[071q" [M-<del>])
 
-  (define-key function-key-map "\e[Z" [?\S-\t])
-  (define-key function-key-map "\e[072q" [?\C-\t])
-  ;; This only works if you remove the M-TAB keybing from the system.4Dwmrc
-  ;; our your ~/.4Dwmrc, if you use the 4Dwm window manager.
-  (define-key function-key-map "\e[073q" [?\M-\t])
+(define-key iris-function-map "\e[Z" [?\S-\t])
+(define-key iris-function-map "\e[072q" [?\C-\t])
+;; This only works if you remove the M-TAB keybing from the system.4Dwmrc
+;; our your ~/.4Dwmrc, if you use the 4Dwm window manager.
+(define-key iris-function-map "\e[073q" [?\M-\t])
 
-  (define-key function-key-map "\e[074q" [?\M-q])
+(define-key iris-function-map "\e[074q" [?\M-q])
 
-  (define-key function-key-map "\e[075q" [?\M-w])
+(define-key iris-function-map "\e[075q" [?\M-w])
 
-  (define-key function-key-map "\e[076q" [?\M-e])
+(define-key iris-function-map "\e[076q" [?\M-e])
 
-  (define-key function-key-map "\e[077q" [?\M-r])
+(define-key iris-function-map "\e[077q" [?\M-r])
 
-  (define-key function-key-map "\e[078q" [?\M-t])
+(define-key iris-function-map "\e[078q" [?\M-t])
 
-  (define-key function-key-map "\e[079q" [?\M-y])
+(define-key iris-function-map "\e[079q" [?\M-y])
 
-  (define-key function-key-map "\e[080q" [?\M-u])
+(define-key iris-function-map "\e[080q" [?\M-u])
 
-  (define-key function-key-map "\e[081q" [?\M-i])
+(define-key iris-function-map "\e[081q" [?\M-i])
 
-  (define-key function-key-map "\e[082q" [?\M-o])
+(define-key iris-function-map "\e[082q" [?\M-o])
 
-  (define-key function-key-map "\e[083q" [?\M-p])
+(define-key iris-function-map "\e[083q" [?\M-p])
 
-  (define-key function-key-map "\e[084q" [?\M-\[])
+(define-key iris-function-map "\e[084q" [?\M-\[])
 
-  (define-key function-key-map "\e[085q" [?\M-\]])
+(define-key iris-function-map "\e[085q" [?\M-\]])
 
-  (define-key function-key-map "\e[086q" [?\M-\\])
+(define-key iris-function-map "\e[086q" [?\M-\\])
 
-  (define-key function-key-map "\e[087q" [?\M-a])
+(define-key iris-function-map "\e[087q" [?\M-a])
 
-  (define-key function-key-map "\e[088q" [?\M-s])
+(define-key iris-function-map "\e[088q" [?\M-s])
 
-  (define-key function-key-map "\e[089q" [?\M-d])
+(define-key iris-function-map "\e[089q" [?\M-d])
 
-  (define-key function-key-map "\e[090q" [?\M-f])
+(define-key iris-function-map "\e[090q" [?\M-f])
 
-  (define-key function-key-map "\e[091q" [?\M-g])
+(define-key iris-function-map "\e[091q" [?\M-g])
 
-  (define-key function-key-map "\e[092q" [?\M-h])
+(define-key iris-function-map "\e[092q" [?\M-h])
 
-  (define-key function-key-map "\e[093q" [?\M-j])
+(define-key iris-function-map "\e[093q" [?\M-j])
 
-  (define-key function-key-map "\e[094q" [?\M-k])
+(define-key iris-function-map "\e[094q" [?\M-k])
 
-  (define-key function-key-map "\e[095q" [?\M-l])
+(define-key iris-function-map "\e[095q" [?\M-l])
 
-  (define-key function-key-map "\e[096q" [?\C-\;])
-  (define-key function-key-map "\e[097q" [?\M-:]) ;; we are cheating
-                                                 ;; here, this is
-                                                 ;; realy M-;, but
-                                                 ;; M-: generates the
-                                                 ;; same string and
-                                                 ;; is more usefull.
+(define-key iris-function-map "\e[096q" [?\C-\;])
+(define-key iris-function-map "\e[097q" [?\M-:]) ;; we are cheating
+                                                 ;; here, this is realy
+                                                 ;; M-;, but M-:
+                                                 ;; generates the same
+                                                 ;; string and is more
+                                                 ;; usefull.
 
-  (define-key function-key-map "\e[098q" [?\C-'])
-  (define-key function-key-map "\e[099q" [?\M-'])
+(define-key iris-function-map "\e[098q" [?\C-'])
+(define-key iris-function-map "\e[099q" [?\M-'])
 
-  (define-key function-key-map "\e[100q" [?\M-\n])
+(define-key iris-function-map "\e[100q" [?\M-\n])
 
-  (define-key function-key-map "\e[101q" [?\M-z])
+(define-key iris-function-map "\e[101q" [?\M-z])
 
-  (define-key function-key-map "\e[102q" [?\M-x])
+(define-key iris-function-map "\e[102q" [?\M-x])
 
-  (define-key function-key-map "\e[103q" [?\M-c])
+(define-key iris-function-map "\e[103q" [?\M-c])
 
-  (define-key function-key-map "\e[104q" [?\M-v])
+(define-key iris-function-map "\e[104q" [?\M-v])
 
-  (define-key function-key-map "\e[105q" [?\M-b])
+(define-key iris-function-map "\e[105q" [?\M-b])
 
-  (define-key function-key-map "\e[106q" [M-n])
+(define-key iris-function-map "\e[106q" [M-n])
 
-  (define-key function-key-map "\e[107q" [M-m])
+(define-key iris-function-map "\e[107q" [M-m])
 
-  (define-key function-key-map "\e[108q" [?\C-,])
-  (define-key function-key-map "\e[109q" [?\M-,])
+(define-key iris-function-map "\e[108q" [?\C-,])
+(define-key iris-function-map "\e[109q" [?\M-,])
 
-  (define-key function-key-map "\e[110q" [?\C-.])
-  (define-key function-key-map "\e[111q" [?\M-.])
+(define-key iris-function-map "\e[110q" [?\C-.])
+(define-key iris-function-map "\e[111q" [?\M-.])
 
-  (define-key function-key-map "\e[112q" [?\C-/])
-  (define-key function-key-map "\e[113q" [?\M-/])
+(define-key iris-function-map "\e[112q" [?\C-/])
+(define-key iris-function-map "\e[113q" [?\M-/])
 
-  (define-key function-key-map "\e[139q" [insert])
-  (define-key function-key-map "\e[139q" [S-insert])
-  (define-key function-key-map "\e[140q" [C-insert])
-  (define-key function-key-map "\e[141q" [M-insert])
+(define-key iris-function-map "\e[139q" [insert])
+(define-key iris-function-map "\e[139q" [S-insert])
+(define-key iris-function-map "\e[140q" [C-insert])
+(define-key iris-function-map "\e[141q" [M-insert])
 
-  (define-key function-key-map "\e[H" [home])
-  (define-key function-key-map "\e[143q" [S-home])
-  (define-key function-key-map "\e[144q" [C-home])
+(define-key iris-function-map "\e[H" [home])
+(define-key iris-function-map "\e[143q" [S-home])
+(define-key iris-function-map "\e[144q" [C-home])
 
 
-  (define-key function-key-map "\e[150q" [prior])
-  (define-key function-key-map "\e[151q" [S-prior]) ;; those don't
-                                                   ;; seem to
-                                                   ;; generate
+(define-key iris-function-map "\e[150q" [prior])
+(define-key iris-function-map "\e[151q" [S-prior]) ;; those don't seem
+                                                   ;; to generate
                                                    ;; anything
-  (define-key function-key-map "\e[152q" [C-prior])
+(define-key iris-function-map "\e[152q" [C-prior])
 
 
-  ;; (define-key function-key-map "^?" [delete])
-  (define-key function-key-map "\e[P" [S-delete])
-  (define-key function-key-map "\e[142q" [C-delete])
-  (define-key function-key-map "\e[M" [M-delete])
+;; (define-key iris-function-map "^?" [delete]) ?? something else seems to take care of this.
+(define-key iris-function-map "\e[P" [S-delete])
+(define-key iris-function-map "\e[142q" [C-delete])
+(define-key iris-function-map "\e[M" [M-delete])
 
-  (define-key function-key-map "\e[146q" [end])
-  (define-key function-key-map "\e[147q" [S-end]) ;; those don't seem
-                                                 ;; to generate
-                                                 ;; anything
-  (define-key function-key-map "\e[148q" [C-end])
+(define-key iris-function-map "\e[146q" [end])
+(define-key iris-function-map "\e[147q" [S-end]) ;; those don't seem to
+                                                 ;; generate anything
+(define-key iris-function-map "\e[148q" [C-end])
 
-  (define-key function-key-map "\e[154q" [next])
-  (define-key function-key-map "\e[155q" [S-next])
-  (define-key function-key-map "\e[156q" [C-next])
+(define-key iris-function-map "\e[154q" [next])
+(define-key iris-function-map "\e[155q" [S-next])
+(define-key iris-function-map "\e[156q" [C-next])
 
 
-  (define-key function-key-map "\e[161q" [S-up])
-  (define-key function-key-map "\e[162q" [C-up])
-  (define-key function-key-map "\e[163q" [M-up])
+(define-key iris-function-map "\e[161q" [S-up])
+(define-key iris-function-map "\e[162q" [C-up])
+(define-key iris-function-map "\e[163q" [M-up])
 
-  (define-key function-key-map "\e[158q" [S-left])
-  (define-key function-key-map "\e[159q" [C-left])
-  (define-key function-key-map "\e[160q" [M-left])
+(define-key iris-function-map "\e[158q" [S-left])
+(define-key iris-function-map "\e[159q" [C-left])
+(define-key iris-function-map "\e[160q" [M-left])
 
-  (define-key function-key-map "\e[164q" [S-down])
-  (define-key function-key-map "\e[165q" [C-down])
-  (define-key function-key-map "\e[166q" [M-down])
+(define-key iris-function-map "\e[164q" [S-down])
+(define-key iris-function-map "\e[165q" [C-down])
+(define-key iris-function-map "\e[166q" [M-down])
 
-  (define-key function-key-map "\e[167q" [S-right])
-  (define-key function-key-map "\e[168q" [C-right])
-  (define-key function-key-map "\e[169q" [M-right])
+(define-key iris-function-map "\e[167q" [S-right])
+(define-key iris-function-map "\e[168q" [C-right])
+(define-key iris-function-map "\e[169q" [M-right])
 
-  ;; Keypad functions, most of those are untested.
-  (define-key function-key-map "\e[179q" [?\C-/])
-  (define-key function-key-map "\e[180q" [?\M-/])
+;; Keypad functions, most of those are untested.
+(define-key iris-function-map "\e[179q" [?\C-/])
+(define-key iris-function-map "\e[180q" [?\M-/])
 
-  (define-key function-key-map "\e[187q" [?\C-*])
-  (define-key function-key-map "\e[188q" [?\M-*])
+(define-key iris-function-map "\e[187q" [?\C-*])
+(define-key iris-function-map "\e[188q" [?\M-*])
 
-  (define-key function-key-map "\e[198q" [?\C--])
-  (define-key function-key-map "\e[199q" [?\M--])
+(define-key iris-function-map "\e[198q" [?\C--])
+(define-key iris-function-map "\e[199q" [?\M--])
 
-  ;; Something else takes care of home, up, prior, down, left, right, next
-  ;;(define-key function-key-map "\e[H" [home])
-  (define-key function-key-map "\e[172q" [C-home])
+;; Something else takes care of home, up, prior, down, left, right, next
+;(define-key iris-function-map "\e[H" [home])
+(define-key iris-function-map "\e[172q" [C-home])
 
-  ;;(define-key function-key-map "\e[A" [up])
-  (define-key function-key-map "\e[182q" [C-up])
+;(define-key iris-function-map "\e[A" [up])
+(define-key iris-function-map "\e[182q" [C-up])
 
 
-  ;;(define-key function-key-map "\e[150q" [prior])
-  (define-key function-key-map "\e[190q" [C-prior])
+;(define-key iris-function-map "\e[150q" [prior])
+(define-key iris-function-map "\e[190q" [C-prior])
 
 
-  (define-key function-key-map "\e[200q" [?\C-+])
-  (define-key function-key-map "\e[201q" [?\M-+])
+(define-key iris-function-map "\e[200q" [?\C-+])
+(define-key iris-function-map "\e[201q" [?\M-+])
 
-  ;;(define-key function-key-map "\e[D" [left])
-  (define-key function-key-map "\e[174q" [C-left])
+;(define-key iris-function-map "\e[D" [left])
+(define-key iris-function-map "\e[174q" [C-left])
 
 
-  (define-key function-key-map "\e[000q" [begin])
-  (define-key function-key-map "\e[184q" [C-begin])
+(define-key iris-function-map "\e[000q" [begin])
+(define-key iris-function-map "\e[184q" [C-begin])
 
 
-  ;;(define-key function-key-map "\e[C" [right])
-  (define-key function-key-map "\e[192q" [C-right])
+;(define-key iris-function-map "\e[C" [right])
+(define-key iris-function-map "\e[192q" [C-right])
 
-  ;;(define-key function-key-map "\e[146q" [end])
-  (define-key function-key-map "\e[176q" [C-end])
+;(define-key iris-function-map "\e[146q" [end])
+(define-key iris-function-map "\e[176q" [C-end])
 
-  ;;(define-key function-key-map "\e[B" [down])
-  (define-key function-key-map "\e[186q" [C-down])
+;(define-key iris-function-map "\e[B" [down])
+(define-key iris-function-map "\e[186q" [C-down])
 
-  ;;(define-key function-key-map "\e[154q" [next])
-  (define-key function-key-map "\e[194q" [C-next])
+;(define-key iris-function-map "\e[154q" [next])
+(define-key iris-function-map "\e[194q" [C-next])
 
 
-  (define-key function-key-map "\e[100q" [M-enter])
+(define-key iris-function-map "\e[100q" [M-enter])
 
-  (define-key function-key-map "\e[139q" [insert])
-  (define-key function-key-map "\e[178q" [C-inset])
+(define-key iris-function-map "\e[139q" [insert])
+(define-key iris-function-map "\e[178q" [C-inset])
 
-  (define-key function-key-map "\e[P" [delete])
-  (define-key function-key-map "\e[196q" [C-delete])
-  (define-key function-key-map "\e[197q" [M-delete]))
+(define-key iris-function-map "\e[P" [delete])
+(define-key iris-function-map "\e[196q" [C-delete])
+(define-key iris-function-map "\e[197q" [M-delete])
+
+(defun terminal-init-iris-ansi ()
+  "Terminal initialization function for iris-ansi."
+  ;; Use inheritance to let the main keymap override these defaults.
+  ;; This way we don't override terminfo-derived settings or settings
+  ;; made in the .emacs file.
+  (let ((m (copy-keymap iris-function-map)))
+    (set-keymap-parent m (keymap-parent local-function-key-map))
+    (set-keymap-parent local-function-key-map m)))
 
 ;;; arch-tag: b1d0e73a-bb7d-47be-9fb2-6fb126469a1b
 ;;; iris-ansi.el ends here
index 7fa9a96e9bdb72c234938e961b5ab2e98d9c2cb1..fdd8e2229ac478c1f8f0e75eea21db6bf54ff6cd 100644 (file)
@@ -9,13 +9,15 @@
   ;; It can't really display underlines.
   (tty-no-underline)
 
+  (condition-case nil (t-mouse-mode 1)
+    (error nil))
+
   ;; Make Latin-1 input characters work, too.
   ;; Meta will continue to work, because the kernel
   ;; turns that into Escape.
 
-  (let ((value (current-input-mode)))
-    ;; The third arg only matters in that it is not t or nil.
-    (set-input-mode (nth 0 value) (nth 1 value) 'iso-latin-1 (nth 3 value))))
+  ;; 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
index 1f8d9ca77a34b5ecbcd78b59242257791763804f..17ac3474ff0809e6ae7c22e3f0327cdf1d8a2d45 100644 (file)
@@ -1,72 +1,83 @@
 ;; -*- no-byte-compile: t -*-
 ;; Define function key sequences for DEC terminals.
 
+(defvar lk201-function-map (make-sparse-keymap)
+  "Function key definitions for DEC terminals.")
+
 ;; Termcap or terminfo should set these.
-;; (define-key function-key-map "\e[A" [up])
-;; (define-key function-key-map "\e[B" [down])
-;; (define-key function-key-map "\e[C" [right])
-;; (define-key function-key-map "\e[D" [left])
+;; (define-key lk201-function-map "\e[A" [up])
+;; (define-key lk201-function-map "\e[B" [down])
+;; (define-key lk201-function-map "\e[C" [right])
+;; (define-key lk201-function-map "\e[D" [left])
 
-(define-key function-key-map "\e[1~" [find])
-(define-key function-key-map "\e[2~" [insert])
-(define-key function-key-map "\e[3~" [delete])
-(define-key function-key-map "\e[4~" [select])
-(define-key function-key-map "\e[5~" [prior])
-(define-key function-key-map "\e[6~" [next])
-(define-key function-key-map "\e[11~" [f1])
-(define-key function-key-map "\e[12~" [f2])
-(define-key function-key-map "\e[13~" [f3])
-(define-key function-key-map "\e[14~" [f4])
-(define-key function-key-map "\e[15~" [f5])
-(define-key function-key-map "\e[17~" [f6])
-(define-key function-key-map "\e[18~" [f7])
-(define-key function-key-map "\e[19~" [f8])
-(define-key function-key-map "\e[20~" [f9])
-(define-key function-key-map "\e[21~" [f10])
+(define-key lk201-function-map "\e[1~" [find])
+(define-key lk201-function-map "\e[2~" [insert])
+(define-key lk201-function-map "\e[3~" [delete])
+(define-key lk201-function-map "\e[4~" [select])
+(define-key lk201-function-map "\e[5~" [prior])
+(define-key lk201-function-map "\e[6~" [next])
+(define-key lk201-function-map "\e[11~" [f1])
+(define-key lk201-function-map "\e[12~" [f2])
+(define-key lk201-function-map "\e[13~" [f3])
+(define-key lk201-function-map "\e[14~" [f4])
+(define-key lk201-function-map "\e[15~" [f5])
+(define-key lk201-function-map "\e[17~" [f6])
+(define-key lk201-function-map "\e[18~" [f7])
+(define-key lk201-function-map "\e[19~" [f8])
+(define-key lk201-function-map "\e[20~" [f9])
+(define-key lk201-function-map "\e[21~" [f10])
 ;; Customarily F11 is used as the ESC key.
 ;; The file that includes this one, takes care of that.
-(define-key function-key-map "\e[23~" [f11])
-(define-key function-key-map "\e[24~" [f12])
-(define-key function-key-map "\e[25~" [f13])
-(define-key function-key-map "\e[26~" [f14])
-(define-key function-key-map "\e[28~" [help])
-(define-key function-key-map "\e[29~" [menu])
-(define-key function-key-map "\e[31~" [f17])
-(define-key function-key-map "\e[32~" [f18])
-(define-key function-key-map "\e[33~" [f19])
-(define-key function-key-map "\e[34~" [f20])
+(define-key lk201-function-map "\e[23~" [f11])
+(define-key lk201-function-map "\e[24~" [f12])
+(define-key lk201-function-map "\e[25~" [f13])
+(define-key lk201-function-map "\e[26~" [f14])
+(define-key lk201-function-map "\e[28~" [help])
+(define-key lk201-function-map "\e[29~" [menu])
+(define-key lk201-function-map "\e[31~" [f17])
+(define-key lk201-function-map "\e[32~" [f18])
+(define-key lk201-function-map "\e[33~" [f19])
+(define-key lk201-function-map "\e[34~" [f20])
 
 ;; Termcap or terminfo should set these.
-;; (define-key function-key-map "\eOA" [up])
-;; (define-key function-key-map "\eOB" [down])
-;; (define-key function-key-map "\eOC" [right])
-;; (define-key function-key-map "\eOD" [left])
+;; (define-key lk201-function-map "\eOA" [up])
+;; (define-key lk201-function-map "\eOB" [down])
+;; (define-key lk201-function-map "\eOC" [right])
+;; (define-key lk201-function-map "\eOD" [left])
 
 ;; Termcap or terminfo should set these, but doesn't properly.
 ;; Termcap sets these to k1-k4, which get mapped to f1-f4 in term.c
-(define-key function-key-map "\eOP" [kp-f1])
-(define-key function-key-map "\eOQ" [kp-f2])
-(define-key function-key-map "\eOR" [kp-f3])
-(define-key function-key-map "\eOS" [kp-f4])
+(define-key lk201-function-map "\eOP" [kp-f1])
+(define-key lk201-function-map "\eOQ" [kp-f2])
+(define-key lk201-function-map "\eOR" [kp-f3])
+(define-key lk201-function-map "\eOS" [kp-f4])
+
+(define-key lk201-function-map "\eOI" [kp-tab])
+(define-key lk201-function-map "\eOj" [kp-multiply])
+(define-key lk201-function-map "\eOk" [kp-add])
+(define-key lk201-function-map "\eOl" [kp-separator])
+(define-key lk201-function-map "\eOM" [kp-enter])
+(define-key lk201-function-map "\eOm" [kp-subtract])
+(define-key lk201-function-map "\eOn" [kp-decimal])
+(define-key lk201-function-map "\eOo" [kp-divide])
+(define-key lk201-function-map "\eOp" [kp-0])
+(define-key lk201-function-map "\eOq" [kp-1])
+(define-key lk201-function-map "\eOr" [kp-2])
+(define-key lk201-function-map "\eOs" [kp-3])
+(define-key lk201-function-map "\eOt" [kp-4])
+(define-key lk201-function-map "\eOu" [kp-5])
+(define-key lk201-function-map "\eOv" [kp-6])
+(define-key lk201-function-map "\eOw" [kp-7])
+(define-key lk201-function-map "\eOx" [kp-8])
+(define-key lk201-function-map "\eOy" [kp-9])
 
-(define-key function-key-map "\eOI" [kp-tab])
-(define-key function-key-map "\eOj" [kp-multiply])
-(define-key function-key-map "\eOk" [kp-add])
-(define-key function-key-map "\eOl" [kp-separator])
-(define-key function-key-map "\eOM" [kp-enter])
-(define-key function-key-map "\eOm" [kp-subtract])
-(define-key function-key-map "\eOn" [kp-decimal])
-(define-key function-key-map "\eOo" [kp-divide])
-(define-key function-key-map "\eOp" [kp-0])
-(define-key function-key-map "\eOq" [kp-1])
-(define-key function-key-map "\eOr" [kp-2])
-(define-key function-key-map "\eOs" [kp-3])
-(define-key function-key-map "\eOt" [kp-4])
-(define-key function-key-map "\eOu" [kp-5])
-(define-key function-key-map "\eOv" [kp-6])
-(define-key function-key-map "\eOw" [kp-7])
-(define-key function-key-map "\eOx" [kp-8])
-(define-key function-key-map "\eOy" [kp-9])
+(defun terminal-init-lk201 ()
+  ;; Use inheritance to let the main keymap override these defaults.
+  ;; This way we don't override terminfo-derived settings or settings
+  ;; made in the .emacs file.
+  (let ((m (copy-keymap lk201-function-map)))
+    (set-keymap-parent m (keymap-parent local-function-key-map))
+    (set-keymap-parent local-function-key-map m)))
 
 ;;; arch-tag: 7ffb4444-6a23-43e1-b457-43cf4f673c0d
 ;;; lk201.el ends here
index 314989906dd6d95f3ee00c6452df14d3be7f4bfa..7e4ec6546c898b9aca1b934a1e3087a9f9049df3 100644 (file)
@@ -65,8 +65,8 @@
 ;; An alist of X options and the function which handles them.  See
 ;; ../startup.el.
 
-(if (not (eq window-system 'mac))
-    (error "%s: Loading mac-win.el but not compiled for Mac" (invocation-name)))
+;; (if (not (eq window-system 'mac))
+;;     (error "%s: Loading mac-win.el but not compiled for Mac" (invocation-name)))
 
 (require 'frame)
 (require 'mouse)
@@ -76,7 +76,6 @@
 (require 'menu-bar)
 (require 'fontset)
 (require 'dnd)
-(eval-when-compile (require 'url))
 
 (defvar mac-charset-info-alist)
 (defvar mac-service-selection)
@@ -1062,22 +1061,25 @@ XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
 (substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame
                           global-map)
 
+(defun x-setup-function-keys (frame)
+  "Setup Function Keys for mac."
 ;; Map certain keypad keys into ASCII characters
 ;; that people usually expect.
-(define-key function-key-map [backspace] [?\d])
-(define-key function-key-map [delete] [?\d])
-(define-key function-key-map [tab] [?\t])
-(define-key function-key-map [linefeed] [?\n])
-(define-key function-key-map [clear] [?\C-l])
-(define-key function-key-map [return] [?\C-m])
-(define-key function-key-map [escape] [?\e])
-(define-key function-key-map [M-backspace] [?\M-\d])
-(define-key function-key-map [M-delete] [?\M-\d])
-(define-key function-key-map [M-tab] [?\M-\t])
-(define-key function-key-map [M-linefeed] [?\M-\n])
-(define-key function-key-map [M-clear] [?\M-\C-l])
-(define-key function-key-map [M-return] [?\M-\C-m])
-(define-key function-key-map [M-escape] [?\M-\e])
+(define-key local-function-key-map [backspace] [?\d])
+(define-key local-function-key-map [delete] [?\d])
+(define-key local-function-key-map [tab] [?\t])
+(define-key local-function-key-map [linefeed] [?\n])
+(define-key local-function-key-map [clear] [?\C-l])
+(define-key local-function-key-map [return] [?\C-m])
+(define-key local-function-key-map [escape] [?\e])
+(define-key local-function-key-map [M-backspace] [?\M-\d])
+(define-key local-function-key-map [M-delete] [?\M-\d])
+(define-key local-function-key-map [M-tab] [?\M-\t])
+(define-key local-function-key-map [M-linefeed] [?\M-\n])
+(define-key local-function-key-map [M-clear] [?\M-\C-l])
+(define-key local-function-key-map [M-return] [?\M-\C-m])
+(define-key local-function-key-map [M-escape] [?\M-\e])
+)
 
 ;; These tell read-char how to convert
 ;; these special chars to ASCII.
@@ -1710,6 +1712,19 @@ in `selection-converter-alist', which see."
              (setq modifiers (cons (car modifier-mask) modifiers)))))
     modifiers))
 
+(defun mac-ae-reopen-application (event)
+  "Show some frame in response to the Apple event EVENT.
+The frame to be shown is chosen from visible or iconified frames
+if possible.  If there's no such frame, a new frame is created."
+  (interactive "e")
+  (unless (frame-visible-p (selected-frame))
+    (let ((frame (or (car (visible-frame-list))
+                    (car (filtered-frame-list 'frame-visible-p)))))
+      (if frame
+         (select-frame frame)
+       (switch-to-buffer-other-frame "*scratch*"))))
+  (select-frame-set-input-focus (selected-frame)))
+
 (defun mac-ae-open-documents (event)
   "Open the documents specified by the Apple event EVENT."
   (interactive "e")
@@ -1766,9 +1781,9 @@ Currently the `mailto' scheme is supported."
 (define-key mac-apple-event-map [core-event open-application] 0)
 
 ;; Received when a dock or application icon is clicked and Emacs is
-;; already running.  Simply ignored.  Another idea is to make a new
-;; frame if all frames are invisible.
-(define-key mac-apple-event-map [core-event reopen-application] 'ignore)
+;; already running.
+(define-key mac-apple-event-map [core-event reopen-application]
+  'mac-ae-reopen-application)
 
 (define-key mac-apple-event-map [core-event open-documents]
   'mac-ae-open-documents)
@@ -1778,7 +1793,7 @@ Currently the `mailto' scheme is supported."
 
 (define-key mac-apple-event-map [internet-event get-url] 'mac-ae-get-url)
 
-(define-key mac-apple-event-map [hi-command about] 'display-splash-screen)
+(define-key mac-apple-event-map [hi-command about] 'about-emacs)
 
 ;;; Converted Carbon Events
 (defun mac-handle-toolbar-switch-mode (event)
@@ -2252,7 +2267,7 @@ See also `mac-dnd-known-types'."
         (handler (cdr type-info))
         (w (posn-window (event-start event))))
     (when handler
-      (if (and (windowp w) (window-live-p w)
+      (if (and (window-live-p w)
               (not (window-minibuffer-p w))
               (not (window-dedicated-p w)))
          ;; If dropping in an ordinary window which we could use,
@@ -2281,34 +2296,6 @@ See also `mac-dnd-known-types'."
          (mac-dnd-drop-data event (selected-frame) window
                             (cdr item) (car item) action)))))
 \f
-;;; Do the actual Windows setup here; the above code just defines
-;;; functions and variables that we use now.
-
-(setq command-line-args (x-handle-args command-line-args))
-
-;;; Make sure we have a valid resource name.
-(or (stringp x-resource-name)
-    (let (i)
-      (setq x-resource-name (invocation-name))
-
-      ;; Change any . or * characters in x-resource-name to hyphens,
-      ;; so as not to choke when we use it in X resource queries.
-      (while (setq i (string-match "[.*]" x-resource-name))
-       (aset x-resource-name i ?-))))
-
-(if (x-display-list)
-    ;; On Mac OS 8/9, Most coding systems used in code conversion for
-    ;; font names are not ready at the time when the terminal frame is
-    ;; created.  So we reconstruct font name table for the initial
-    ;; frame.
-    (mac-clear-font-name-table)
-  (x-open-connection "Mac"
-                    x-command-line-resources
-                    ;; Exit Emacs with fatal error if this fails.
-                    t))
-
-(setq frame-creation-function 'x-create-frame-with-faces)
-
 (defvar mac-font-encoder-list
   '(("mac-roman" mac-roman-encoder
      ccl-encode-mac-roman-font "%s")
@@ -2486,6 +2473,88 @@ It returns a name of the created fontset."
     (fontset-add-mac-fonts fontset t)
     fontset))
 
+(defun x-win-suspend-error ()
+  (error "Suspending an Emacs running under Mac makes no sense"))
+
+(defalias 'x-cut-buffer-or-selection-value 'x-get-selection-value)
+
+(defvar mac-initialized nil
+  "Non-nil if the w32 window system has been initialized.")
+
+(defun mac-initialize-window-system ()
+  "Initialize Emacs for Mac GUI frames."
+
+;;; Do the actual Windows setup here; the above code just defines
+;;; functions and variables that we use now.
+
+(setq command-line-args (x-handle-args command-line-args))
+
+;;; Make sure we have a valid resource name.
+(or (stringp x-resource-name)
+    (let (i)
+      (setq x-resource-name (invocation-name))
+
+      ;; Change any . or * characters in x-resource-name to hyphens,
+      ;; so as not to choke when we use it in X resource queries.
+      (while (setq i (string-match "[.*]" x-resource-name))
+       (aset x-resource-name i ?-))))
+
+(if (x-display-list)
+    ;; On Mac OS 8/9, Most coding systems used in code conversion for
+    ;; font names are not ready at the time when the terminal frame is
+    ;; created.  So we reconstruct font name table for the initial
+    ;; frame.
+    (mac-clear-font-name-table)
+  (x-open-connection "Mac"
+                    x-command-line-resources
+                    ;; Exit Emacs with fatal error if this fails.
+                    t))
+
+(add-hook 'suspend-hook 'x-win-suspend-error)
+
+;;; Arrange for the kill and yank functions to set and check the clipboard.
+(setq interprogram-cut-function 'x-select-text)
+(setq interprogram-paste-function 'x-get-selection-value)
+
+
+
+
+;;; Turn off window-splitting optimization; Mac is usually fast enough
+;;; that this is only annoying.
+(setq split-window-keep-point t)
+
+;; Don't show the frame name; that's redundant.
+(setq-default mode-line-frame-identification "  ")
+
+;; Turn on support for mouse wheels.
+(mouse-wheel-mode 1)
+
+
+;; Enable CLIPBOARD copy/paste through menu bar commands.
+(menu-bar-enable-clipboard)
+
+
+;; Initiate drag and drop
+
+(define-key special-event-map [drag-n-drop] 'mac-dnd-handle-drag-n-drop-event)
+
+\f
+;;;; Non-toolkit Scroll bars
+
+(unless x-toolkit-scroll-bars
+
+;; for debugging
+;; (defun mac-handle-scroll-bar-event (event) (interactive "e") (princ event))
+
+;;(global-set-key [vertical-scroll-bar mouse-1] 'mac-handle-scroll-bar-event)
+
+(global-set-key
+ [vertical-scroll-bar down-mouse-1]
+ 'mac-handle-scroll-bar-event)
+
+(global-unset-key [vertical-scroll-bar drag-mouse-1])
+(global-unset-key [vertical-scroll-bar mouse-1])
+
 ;; Adjust Courier font specifications in x-fixed-font-alist.
 (let ((courier-fonts (assoc "Courier" x-fixed-font-alist)))
   (if courier-fonts
@@ -2592,50 +2661,7 @@ ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
        (setq default-frame-alist
              (cons '(reverse . t) default-frame-alist)))))
 
-(defun x-win-suspend-error ()
-  (error "Suspending an Emacs running under Mac makes no sense"))
-(add-hook 'suspend-hook 'x-win-suspend-error)
-
-;;; Arrange for the kill and yank functions to set and check the clipboard.
-(setq interprogram-cut-function 'x-select-text)
-(setq interprogram-paste-function 'x-get-selection-value)
-
-(defalias 'x-cut-buffer-or-selection-value 'x-get-selection-value)
-
-;;; Turn off window-splitting optimization; Mac is usually fast enough
-;;; that this is only annoying.
-(setq split-window-keep-point t)
-
-;; Don't show the frame name; that's redundant.
-(setq-default mode-line-frame-identification "  ")
-
-;; Turn on support for mouse wheels.
-(mouse-wheel-mode 1)
-
-
-;; Enable CLIPBOARD copy/paste through menu bar commands.
-(menu-bar-enable-clipboard)
-
-;; Initiate drag and drop
-
-(define-key special-event-map [drag-n-drop] 'mac-dnd-handle-drag-n-drop-event)
-
-\f
-;;;; Non-toolkit Scroll bars
-
-(unless x-toolkit-scroll-bars
-
-;; for debugging
-;; (defun mac-handle-scroll-bar-event (event) (interactive "e") (princ event))
-
-;;(global-set-key [vertical-scroll-bar mouse-1] 'mac-handle-scroll-bar-event)
-
-(global-set-key
- [vertical-scroll-bar down-mouse-1]
- 'mac-handle-scroll-bar-event)
-
-(global-unset-key [vertical-scroll-bar drag-mouse-1])
-(global-unset-key [vertical-scroll-bar mouse-1])
+(setq mac-initialized t)))
 
 (defun mac-handle-scroll-bar-event (event)
   "Handle scroll bar EVENT to emulate Mac Toolbox style scrolling."
@@ -2683,7 +2709,6 @@ ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
     (mac-scroll-ignore-events)
     (scroll-up 1)))
 
-)
 
 \f
 ;;;; Others
@@ -2721,5 +2746,11 @@ ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
 ;; or bold bitmap versions will not display these variants correctly.
 (setq scalable-fonts-allowed t)
 
+(add-to-list 'handle-args-function-alist '(mac . x-handle-args))
+(add-to-list 'frame-creation-function-alist '(mac . x-create-frame-with-faces))
+(add-to-list 'window-system-initialization-alist '(mac . mac-initialize-window-system))
+
+(provide 'mac-win)
+
 ;; arch-tag: 71dfcd14-cde8-4d66-b05c-85ec94fb23a6
 ;;; mac-win.el ends here
index 57d8fd6cb1478825e9855f77337f80e342cd2edb..514f363314da8708531214e86c50955364fe296e 100644 (file)
 
 (defun terminal-init-news ()
   "Terminal initialization function for news."
-  (if (boundp 'news-fkey-prefix)
-      nil
-    ;; The terminal initialization should already have set up some keys
-    (setq news-fkey-prefix (lookup-key function-key-map "\eO"))
+  ;; The terminal initialization should already have set up some keys
+  (let ((news-fkey-prefix (lookup-key local-function-key-map "\eO")))
     (if (not (keymapp news-fkey-prefix))
        (error "What?  Your news termcap/terminfo has no keycaps in it"))
 
index 64c09e0e1bd3e884c9271096e9e589a0aa0609e2..c96c8a6e290d7b10170c2522e1c8be188870c617 100644 (file)
 
 ;;; Code:
 
-(defun terminal-init-rxvt ()
-  "Terminal initialization function for rxvt."
-  ;; The terminal intialization C code file might have initialized
-  ;; function keys F11->F42 from the termcap/terminfo information.  On
-  ;; a PC-style keyboard these keys correspond to
-  ;; MODIFIER-FUNCTION_KEY, where modifier is S-, C-, C-S-.  The
-  ;; code here subsitutes the corresponding defintions in
-  ;; function-key-map.  This substitution is needed because if a key
-  ;; definition if found in function-key-map, there are no further
-  ;; lookups in other keymaps.
-  (substitute-key-definition [f11] [S-f1] function-key-map)
-  (substitute-key-definition [f12] [S-f2] function-key-map)
-  (substitute-key-definition [f13] [S-f3] function-key-map)
-  (substitute-key-definition [f14] [S-f4] function-key-map)
-  (substitute-key-definition [f15] [S-f5] function-key-map)
-  (substitute-key-definition [f16] [S-f6] function-key-map)
-  (substitute-key-definition [f17] [S-f7] function-key-map)
-  (substitute-key-definition [f18] [S-f8] function-key-map)
-  (substitute-key-definition [f19] [S-f9] function-key-map)
-  (substitute-key-definition [f20] [S-f10] function-key-map)
-
-  (substitute-key-definition [f23] [C-f1] function-key-map)
-  (substitute-key-definition [f24] [C-f2] function-key-map)
-  (substitute-key-definition [f25] [C-f3] function-key-map)
-  (substitute-key-definition [f26] [C-f4] function-key-map)
-  (substitute-key-definition [f27] [C-f5] function-key-map)
-  (substitute-key-definition [f28] [C-f6] function-key-map)
-  (substitute-key-definition [f29] [C-f7] function-key-map)
-  (substitute-key-definition [f30] [C-f8] function-key-map)
-  (substitute-key-definition [f31] [C-f9] function-key-map)
-  (substitute-key-definition [f32] [C-f10] function-key-map)
-
-  (substitute-key-definition [f33] [C-S-f1] function-key-map)
-  (substitute-key-definition [f34] [C-S-f2] function-key-map)
-  (substitute-key-definition [f35] [C-S-f3] function-key-map)
-  (substitute-key-definition [f36] [C-S-f4] function-key-map)
-  (substitute-key-definition [f37] [C-S-f5] function-key-map)
-  (substitute-key-definition [f38] [C-S-f6] function-key-map)
-  (substitute-key-definition [f39] [C-S-f7] function-key-map)
-  (substitute-key-definition [f40] [C-S-f8] function-key-map)
-  (substitute-key-definition [f41] [C-S-f9] function-key-map)
-  (substitute-key-definition [f42] [C-S-f10] function-key-map)
-
-  ;; Set up function-key-map entries that termcap and terminfo don't know.
+(defvar rxvt-function-map
   (let ((map (make-sparse-keymap)))
+
+    ;; Set up input-decode-map entries that termcap and terminfo don't know.
     (define-key map "\e[A" [up])
     (define-key map "\e[B" [down])
     (define-key map "\e[C" [right])
@@ -94,8 +53,8 @@
     (define-key map "\e[21~" [f10])
     ;; The strings emitted by f11 and f12 are the same as the strings
     ;; emitted by S-f1 and S-f2, so don't define f11 and f12.
-    ;; (define-key map "\e[23~" [f11])
-    ;; (define-key map "\e[24~" [f12])
+    ;; (define-key rxvt-function-map "\e[23~" [f11])
+    ;; (define-key rxvt-function-map "\e[24~" [f12])
     (define-key map "\e[29~" [print])
 
     (define-key map "\e[11^" [C-f1])
     (define-key map "\e[c" [S-right])
     (define-key map "\e[a" [S-up])
     (define-key map "\e[b" [S-down])
+    map)
+  "Function key overrides for rxvt.")
+
+(defvar rxvt-alternatives-map
+  (let ((map (make-sparse-keymap)))
+    ;; The terminal intialization C code file might have initialized
+    ;; function keys F11->F42 from the termcap/terminfo information.  On
+    ;; a PC-style keyboard these keys correspond to
+    ;; MODIFIER-FUNCTION_KEY, where modifier is S-, C-, C-S-.  The
+    ;; code here subsitutes the corresponding defintions in
+    ;; function-key-map.  This substitution is needed because if a key
+    ;; definition if found in function-key-map, there are no further
+    ;; lookups in other keymaps.
+    (define-key map [f11] [S-f1])
+    (define-key map [f12] [S-f2])
+    (define-key map [f13] [S-f3])
+    (define-key map [f14] [S-f4])
+    (define-key map [f15] [S-f5])
+    (define-key map [f16] [S-f6])
+    (define-key map [f17] [S-f7])
+    (define-key map [f18] [S-f8])
+    (define-key map [f19] [S-f9])
+    (define-key map [f20] [S-f10])
 
-    ;; Use inheritance to let the main keymap override those defaults.
-    ;; This way we don't override terminfo-derived settings or settings
-    ;; made in the .emacs file.
-    (set-keymap-parent map (keymap-parent function-key-map))
-    (set-keymap-parent function-key-map map))
+    (define-key map [f23] [C-f1])
+    (define-key map [f24] [C-f2])
+    (define-key map [f25] [C-f3])
+    (define-key map [f26] [C-f4])
+    (define-key map [f27] [C-f5])
+    (define-key map [f28] [C-f6])
+    (define-key map [f29] [C-f7])
+    (define-key map [f30] [C-f8])
+    (define-key map [f31] [C-f9])
+    (define-key map [f32] [C-f10])
+
+    (define-key map [f33] [C-S-f1])
+    (define-key map [f34] [C-S-f2])
+    (define-key map [f35] [C-S-f3])
+    (define-key map [f36] [C-S-f4])
+    (define-key map [f37] [C-S-f5])
+    (define-key map [f38] [C-S-f6])
+    (define-key map [f39] [C-S-f7])
+    (define-key map [f40] [C-S-f8])
+    (define-key map [f41] [C-S-f9])
+    (define-key map [f42] [C-S-f10])
+    map)
+  "Keymap of possible alternative meanings for some keys.")
+
+(defun terminal-init-rxvt ()
+  "Terminal initialization function for rxvt."
+
+  (let ((map (copy-keymap rxvt-alternatives-map)))
+    (set-keymap-parent map (keymap-parent local-function-key-map))
+    (set-keymap-parent local-function-key-map map))
+
+  ;; Use inheritance to let the main keymap override those defaults.
+  ;; This way we don't override terminfo-derived settings or settings
+  ;; made in the .emacs file.
+  (let ((m (copy-keymap rxvt-function-map)))
+    (set-keymap-parent m (keymap-parent input-decode-map))
+    (set-keymap-parent input-decode-map m))
 
   ;; Initialize colors and background mode.
   (rxvt-register-default-colors)
@@ -239,7 +253,7 @@ for the currently selected frame."
                            (- 256 ncolors)
                            (list color color color))
          (setq ncolors (1- ncolors))))
-       
+
        ((= ncolors 72) ; rxvt-unicode
        ;; 64 non-gray colors
        (let ((levels '(0 139 205 255))
@@ -282,7 +296,7 @@ for the currently selected frame."
   "Set background mode as appropriate for the default rxvt colors."
   (let ((fgbg (getenv "COLORFGBG"))
        bg rgb)
-    (setq default-frame-background-mode 'light)
+    (set-terminal-parameter nil 'background-mode 'light)
     (when (and fgbg
               (string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
       (setq bg (string-to-number (substring fgbg (match-beginning 1))))
@@ -295,8 +309,7 @@ for the currently selected frame."
             ;; The following line assumes that white is the 15th
             ;; color in rxvt-standard-colors.
             (* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6))
-         (setq default-frame-background-mode 'dark)))
-    (frame-set-background-mode (selected-frame))))
+         (set-terminal-parameter nil 'background-mode 'dark)))))
 
 ;; arch-tag: 20cf2fb6-6318-4bab-9dbf-1d15048f2257
 ;;; rxvt.el ends here
index 65ebe193c7119da67f37a8a1f6d01ccbf16b7483..d3e85508b03c97c40546462df6d7cf725d4f14c3 100644 (file)
@@ -501,7 +501,7 @@ If there is no documentation string, then the string
 (defun print-mouse-format (binding)
   (princ (car binding))
   (princ ": ")
-  (mapcar (function
+  (mapc (function
           (lambda (mouse-list)
             (princ mouse-list)
             (princ " ")))
@@ -660,21 +660,6 @@ Insert contents into the current buffer at point."
   (interactive "r")
   (sun-set-selection (buffer-substring beg end)))
 
-;;;
-;;; Support for emacstool
-;;; This closes the window instead of stopping emacs.
-;;;
-(defun suspend-emacstool (&optional stuffstring)
-  "Suspend emacstool.
-If running under as a detached process emacstool,
-you don't want to suspend  (there is no way to resume),
-just close the window, and wait for reopening."
-  (interactive)
-  (run-hooks 'suspend-hook)
-  (if stuffstring (send-string-to-terminal stuffstring))
-  (send-string-to-terminal "\033[2t")  ; To close EmacsTool window.
-  (run-hooks 'suspend-resume-hook))
-
 (provide 'sun-mouse)
 (provide 'term/sun-mouse)              ; have to (require 'term/sun-mouse)
 
index c3dc773e26bc0b733576c42e4f18dd8970ff199c..b3ee0ec458ebf027649ee6e2ac48fc2b7ef2548c 100644 (file)
 
 (defun scroll-down-in-place (n)
   (interactive "p")
-  (previous-line n)
+  (forward-line (- n))
   (scroll-down n))
 
 (defun scroll-up-in-place (n)
   (interactive "p")
-  (next-line n)
+  (forward-line n)
   (scroll-up n))
 
 (defun kill-region-and-unmark (beg end)
   "List of forms to evaluate after setting sun-raw-prefix.")
 
 \f
-;;; This section adds definitions for the emacstool users
-;; emacstool event filter converts function keys to C-x*{c}{lrt}
-;;
-;; for example the Open key (L7) would be encoded as "\C-x*gl"
-;; the control, meta, and shift keys modify the character {lrt}
-;; note that (unshifted) C-l is ",",  C-r is "2", and C-t is "4"
-;;
-;; {c} is [a-j] for LEFT, [a-i] for TOP, [a-o] for RIGHT.
-;; A higher level insists on encoding {h,j,l,n}{r} (the arrow keys)
-;; as ANSI escape sequences.  Use the shell command
-;; % setkeys noarrows
-;; if you want these to come through for emacstool.
-;;
-;; If you are not using EmacsTool,
-;; you can also use this by creating a .ttyswrc file to do the conversion.
-;; but it won't include the CONTROL, META, or SHIFT keys!
-;;
-;; Important to define SHIFTed sequence before matching unshifted sequence.
-;; (talk about bletcherous old uppercase terminal conventions!*$#@&%*&#$%)
-;;  this is worse than C-S/C-Q flow control anyday!
-;;  Do *YOU* run in capslock mode?
-;;
-
-;; Note:  al, el and gl are trapped by EmacsTool, so they never make it here.
-
-(defvar suntool-map (make-sparse-keymap)
-  "*Keymap for Emacstool bindings.")
-
-
-;; Since .emacs gets loaded before this file, a hook is supplied
-;; for you to put your own bindings in.
-
-(defvar suntool-map-hooks nil
-  "List of forms to evaluate after setting suntool-map.")
-
-;;
-;; If running under emacstool, arrange to call suspend-emacstool
-;; instead of suspend-emacs.
-;;
-;; First mouse blip is a clue that we are in emacstool.
-;;
-;; C-x C-@ is the mouse command prefix.
-
-(autoload 'sun-mouse-handler "sun-mouse"
-         "Sun Emacstool handler for mouse blips (not loaded)." t)
 
 (defun terminal-init-sun ()
   "Terminal initialization function for sun."
-  (define-key function-key-map "\e[" sun-raw-prefix)
+  (define-key local-function-key-map "\e[" sun-raw-prefix)
 
   (define-key sun-raw-prefix "210z" [r3])
   (define-key sun-raw-prefix "213z" [r6])
     (let ((hooks sun-raw-prefix-hooks))
       (while hooks
        (eval (car hooks))
-       (setq hooks (cdr hooks)))))
-
-  (define-key suntool-map "gr" 'beginning-of-buffer)   ; r7
-  (define-key suntool-map "iR" 'backward-page)         ; R9
-  (define-key suntool-map "ir" 'scroll-down)           ; r9
-  (define-key suntool-map "kr" 'recenter)              ; r11
-  (define-key suntool-map "mr" 'end-of-buffer)         ; r13
-  (define-key suntool-map "oR" 'forward-page)          ; R15
-  (define-key suntool-map "or" 'scroll-up)             ; r15
-  (define-key suntool-map "b\M-L" 'rerun-prev-command) ; M-AGAIN
-  (define-key suntool-map "b\M-l" 'prev-complex-command) ; M-Again
-  (define-key suntool-map "bl" 'redraw-display)                 ; Again
-  (define-key suntool-map "cl" 'list-buffers)           ; Props
-  (define-key suntool-map "dl" 'undo)                   ; Undo
-  (define-key suntool-map "el" 'ignore)                         ; Expose-Open
-  (define-key suntool-map "fl" 'sun-select-region)      ; Put
-  (define-key suntool-map "f," 'copy-region-as-kill)    ; C-Put
-  (define-key suntool-map "gl" 'ignore)                         ; Open-Open
-  (define-key suntool-map "hl" 'sun-yank-selection)     ; Get
-  (define-key suntool-map "h," 'yank)                   ; C-Get
-  (define-key suntool-map "il" 'research-forward)       ; Find
-  (define-key suntool-map "i," 're-search-forward)      ; C-Find
-  (define-key suntool-map "i\M-l" 'research-backward)   ; M-Find
-  (define-key suntool-map "i\M-," 're-search-backward)  ; C-M-Find
-
-  (define-key suntool-map "jL" 'yank)                  ; DELETE
-  (define-key suntool-map "jl" 'kill-region-and-unmark)        ; Delete
-  (define-key suntool-map "j\M-l" 'exchange-point-and-mark) ; M-Delete
-  (define-key suntool-map "j,"
-    (lambda () (interactive) (pop-mark))) ; C-Delete
-
-  (define-key suntool-map "fT" 'shrink-window-horizontally)    ; T6
-  (define-key suntool-map "gT" 'enlarge-window-horizontally)   ; T7
-  (define-key suntool-map "ft" 'shrink-window)                 ; t6
-  (define-key suntool-map "gt" 'enlarge-window)                        ; t7
-  (define-key suntool-map "cT" (lambda (n) (interactive "p") (scroll-down n)))
-  (define-key suntool-map "dT" (lambda (n) (interactive "p") (scroll-up n)))
-  (define-key suntool-map "ct" 'scroll-down-in-place)          ; t3
-  (define-key suntool-map "dt" 'scroll-up-in-place)            ; t4
-  (define-key ctl-x-map "*" suntool-map)
-
-  (when suntool-map-hooks
-    (message "suntool-map-hooks is obsolete!  Use term-setup-hook instead!")
-    (let ((hooks suntool-map-hooks))
-      (while hooks
-       (eval (car hooks))
-       (setq hooks (cdr hooks)))))
-
-  (define-key ctl-x-map "\C-@" 'sun-mouse-once))
-
-(defun emacstool-init ()
-  "Set up Emacstool window, if you know you are in an emacstool."
-  ;; Make sure sun-mouse and sun-fns are loaded.
-  (require 'sun-fns)
-  (define-key ctl-x-map "\C-@" 'sun-mouse-handler)
-
-  ;; FIXME: this function does not seem to exist either.  -stef'01
-  (if (< (sun-window-init) 0)
-      (message "Not a Sun Window")
-    (progn
-      (substitute-key-definition 'suspend-emacs 'suspend-emacstool global-map)
-      (substitute-key-definition 'suspend-emacs 'suspend-emacstool esc-map)
-      (substitute-key-definition 'suspend-emacs 'suspend-emacstool ctl-x-map))
-      (send-string-to-terminal
-       (concat "\033]lEmacstool - GNU Emacs " emacs-version "\033\\"))))
-
-(defun sun-mouse-once ()
-  "Converts to emacstool and sun-mouse-handler on first mouse hit."
-  (interactive)
-  (emacstool-init)
-  (sun-mouse-handler))                 ; Now, execute this mouse blip.
+       (setq hooks (cdr hooks))))))
 
 ;;; arch-tag: db761d47-fd7d-42b4-aae1-04fa116b6ba6
 ;;; sun.el ends here
index 1c0bda519ac69118687c567693b0e5428dfe867f..1898153cf2ae81cfeb86ee7a51a872e5dcc5e624 100644 (file)
 
 (defun terminal-init-tvi970 ()
   "Terminal initialization function for tvi970."
-  (or (lookup-key function-key-map "\e[")
-      (define-key function-key-map "\e[" (make-keymap)))
-  ;; (or (lookup-key function-key-map "\eO")
-  ;;    (define-key function-key-map "\eO" (make-keymap)))
+  (or (lookup-key local-function-key-map "\e[")
+      (define-key local-function-key-map "\e[" (make-keymap)))
+  ;; (or (lookup-key local-function-key-map "\eO")
+  ;;    (define-key local-function-key-map "\eO" (make-keymap)))
 
   ;; Miscellaneous keys
-  (mapcar (function (lambda (key-binding)
-                     (define-key function-key-map
+  (mapc (function (lambda (key-binding)
+                     (define-key local-function-key-map
                        (car key-binding) (nth 1 key-binding))))
          '(
            ;; These are set up by termcap or terminfo
@@ -54,7 +54,7 @@
            ("\e[@"     [insert])
            ("\e[L"     [insertline])
            ("\e[M"     [deleteline])
-           ("\e[U"     [next]) ;; actually the `page' key
+           ("\e[U"     [next])         ;; actually the `page' key
 
            ;; These won't be set up by either
            ("\eOm"     [kp-subtract])
   ;; The numeric keypad keys.
   (let ((i 0))
     (while (< i 10)
-      (define-key function-key-map
+      (define-key local-function-key-map
        (format "\eO%c" (+ i ?p))
        (vector (intern (format "kp-%d" i))))
       (setq i (1+ i))))
   ;; The numbered function keys.
   (let ((i 0))
     (while (< i 16)
-      (define-key function-key-map
+      (define-key local-function-key-map
        (format "\e?%c" (+ i ?a))
        (vector (intern (format "f%d" (1+ i)))))
-      (define-key function-key-map
+      (define-key local-function-key-map
        (format "\e?%c" (+ i ?A))
        (vector (intern (format "S-f%d" (1+ i)))))
       (setq i (1+ i))))
 
   (tvi970-set-keypad-mode 1))
+
 \f
 ;;; Should keypad numbers send ordinary digits or distinct escape sequences?
 (defvar tvi970-keypad-numeric nil
index b185a7bb02f23393bbe7e75bd6a11957292341f6..17627db89231341597f43581ee556b6dbc3dc359 100644 (file)
 
 ;; Set up function-key-map entries that termcap and terminfo don't know.
 
-
 (defun terminal-init-vt100 ()
   "Terminal initialization function for vt100."
-  (load "term/lk201" nil t))
+  (tty-run-terminal-initialization (selected-frame) "lk201"))
 
 ;;; Controlling the screen width.
 (defvar vt100-wide-mode (= (frame-width) 132)
index ad780ed50812531b10ef8a1a4c87ca4eec84ca12..67a90a8242ca53ccd1a4736190cc7ed22c83a04d 100644 (file)
@@ -1,8 +1,8 @@
 ;; -*- no-byte-compile: t -*-
 
 (defun terminal-init-vt102 ()
-  "Terminal initialization function for vt102."  
-  (load "term/vt100" nil t))
+  "Terminal initialization function for vt102."
+  (tty-run-terminal-initialization (selected-frame) "vt100"))
 
 ;;; arch-tag: 6e839cfc-125a-4574-82f1-c23a51f7c50f
 ;;; vt102.el ends here
index 2221e597aed19f4a4d178be79f3a3e4128204517..82a7047fef125d8548d065dc90aca426283b98da 100644 (file)
@@ -1,8 +1,8 @@
 ;; -*- no-byte-compile: t -*-
 
 (defun terminal-init-vt125 ()
-  "Terminal initialization function for vt125."  
-  (load "term/vt100" nil t))
+  "Terminal initialization function for vt125."
+  (tty-run-terminal-initialization (selected-frame) "vt100"))
 
 ;;; arch-tag: 1d92d70f-dd55-4a1d-9088-e215a4883801
 ;;; vt125.el ends here
index e1215d150231429a98629444ded8db9370862616..7e7b3281d922b25f9eb5ff75a088ce29a2c2de25 100644 (file)
@@ -1,12 +1,11 @@
 ;; -*- no-byte-compile: t -*-
 ;; For our purposes we can treat the vt200 and vt100 almost alike.
 ;; Most differences are handled by the termcap entry.
-
 (defun terminal-init-vt200 ()
-  "Terminal initialization function for vt200."  
-  (load "term/vt100" nil t)
+  "Terminal initialization function for vt200."
+  (tty-run-terminal-initialization (selected-frame) "vt100")
   ;; Make F11 an escape key.
-  (define-key function-key-map "\e[23~" [?\e]))
+  (define-key local-function-key-map "\e[23~" [?\e]))
 
 ;;; arch-tag: 0f78f583-9f32-4237-b106-28bcfff21d89
 ;;; vt200.el ends here
index 315030ab6879e01b810cfd1530e3aaa2e181b3a7..a63f9561a6dde70a422b51fbc639bfbb700594e6 100644 (file)
@@ -2,10 +2,10 @@
 ;; For our purposes we can treat the vt200 and vt100 almost alike.
 ;; Most differences are handled by the termcap entry.
 (defun terminal-init-vt201 ()
-  "Terminal initialization function for vt201."  
-  (load "term/vt100" nil t)
+  "Terminal initialization function for vt201."
+  (tty-run-terminal-initialization (selected-frame) "vt100")
   ;; Make F11 an escape key.
-  (define-key function-key-map "\e[23~" [?\e]))
+  (define-key local-function-key-map "\e[23~" [?\e]))
 
 ;;; arch-tag: a6abb38f-60ea-449e-a9e9-3fb8572c52ae
 ;;; vt201.el ends here
index cccd2a6dfb71f23fa7c403f18bddc8684d44849d..b2b8fc944cf5fa55e297a5db7e85d4ef43f6ce70 100644 (file)
@@ -2,10 +2,10 @@
 ;; For our purposes we can treat the vt200 and vt100 almost alike.
 ;; Most differences are handled by the termcap entry.
 (defun terminal-init-vt220 ()
-  "Terminal initialization function for vt220."  
-  (load "term/vt100" nil t)
+  "Terminal initialization function for vt220."
+  (tty-run-terminal-initialization (selected-frame) "vt100")
   ;; Make F11 an escape key.
-  (define-key function-key-map "\e[23~" [?\e]))
+  (define-key local-function-key-map "\e[23~" [?\e]))
 
 ;;; arch-tag: 98fc4867-a20d-46a1-a276-d7be31e49871
 ;;; vt220.el ends here
index bb3931edac85895c7bc94e623eb295936e976711..cb26ebf40698f70df3fc687f5188664a8af4d8bb 100644 (file)
@@ -2,10 +2,10 @@
 ;; For our purposes we can treat the vt200 and vt100 almost alike.
 ;; Most differences are handled by the termcap entry.
 (defun terminal-init-vt240 ()
-  "Terminal initialization function for vt240."  
-  (load "term/vt100" nil t)
+  "Terminal initialization function for vt240."
+  (tty-run-terminal-initialization (selected-frame) "vt100")
   ;; Make F11 an escape key.
-  (define-key function-key-map "\e[23~" [?\e]))
+  (define-key local-function-key-map "\e[23~" [?\e]))
 
 ;;; arch-tag: d9f88e9c-02dc-49ff-871c-a415f08e4eb7
 ;;; vt240.el ends here
index ff600f47a1ee9d692e305b5aa1fa7e0af5092ad3..9a09ad5e8cba9898dcade167b25c2b2e8daa0b33 100644 (file)
@@ -1,9 +1,9 @@
 ;; -*- no-byte-compile: t -*-
 (defun terminal-init-vt300 ()
-  "Terminal initialization function for vt300."  
-  (load "term/vt100" nil t)
+  "Terminal initialization function for vt300."
+  (tty-run-terminal-initialization (selected-frame) "vt100")
   ;; Make F11 an escape key.
-  (define-key function-key-map "\e[23~" [?\e]))
+  (define-key local-function-key-map "\e[23~" [?\e]))
 
 ;;; arch-tag: 876831c9-a6f2-444a-b033-706e6fbc149f
 ;;; vt300.el ends here
index fb7772c7b5bc30e05e840e6742b9e1dcab2d7cbe..803d72860674669b99d6081375e74fe60387ff50 100644 (file)
@@ -1,9 +1,9 @@
 ;; -*- no-byte-compile: t -*-
 (defun terminal-init-vt320 ()
-  "Terminal initialization function for vt320."  
-  (load "term/vt100" nil t)
+  "Terminal initialization function for vt320."
+  (tty-run-terminal-initialization (selected-frame) "vt100")
   ;; Make F11 an escape key.
-  (define-key function-key-map "\e[23~" [?\e]))
+  (define-key local-function-key-map "\e[23~" [?\e]))
 
 ;;; arch-tag: f9f4c954-0b9e-45f9-b450-a320d32abd9c
 ;;; vt320.el ends here
index 97c0c5d7372e6250aebd89215c4fb6ed9d9b9c38..f73f4660b94cdb3e3ba8ddbbee532d9abd1bd13a 100644 (file)
@@ -1,9 +1,9 @@
 ;; -*- no-byte-compile: t -*-
 (defun terminal-init-vt400 ()
-  "Terminal initialization function for vt400."  
-  (load "term/vt100" nil t)
+  "Terminal initialization function for vt400."
+  (tty-run-terminal-initialization (selected-frame) "vt100")
   ;; Make F11 an escape key.
-  (define-key function-key-map "\e[23~" [?\e]))
+  (define-key local-function-key-map "\e[23~" [?\e]))
 
 ;;; arch-tag: a70809c5-6b21-42cc-ba20-536683e5e7d5
 ;;; vt400.el ends here
index 65ffa759c17758eb67e38eb38e08e96bec7867db..e65ba1a61d508ff7ba42593678770e30d3ba9a5b 100644 (file)
@@ -1,9 +1,9 @@
 ;; -*- no-byte-compile: t -*-
-(defun terminal-init-vt420 ()
-  "Terminal initialization function for vt420."  
-  (load "term/vt100" nil t)
+(defun terminal-init-vt420
+  "Terminal initialization function for vt420."
+  (tty-run-terminal-initialization (selected-frame) "vt100")
   ;; Make F11 an escape key.
-  (define-key function-key-map "\e[23~" [?\e]))
+  (define-key local-function-key-map "\e[23~" [?\e]))
 
 ;;; arch-tag: df2f897c-3a12-4b3c-9259-df089f96c160
 ;;; vt420.el ends here
index dfe94aaf133e0f08019317b43ff9eb10c33eb63f..51a25482be720eb7536a050fe0cbb9ab064e64eb 100644 (file)
@@ -68,8 +68,8 @@
 ;; An alist of X options and the function which handles them.  See
 ;; ../startup.el.
 
-(if (not (eq window-system 'w32))
-    (error "%s: Loading w32-win.el but not compiled for w32" (invocation-name)))
+;; (if (not (eq window-system 'w32))
+;;     (error "%s: Loading w32-win.el but not compiled for w32" (invocation-name)))
 
 (require 'frame)
 (require 'mouse)
 (require 'dnd)
 (require 'code-pages)
 
+;; Keep an obsolete alias for w32-focus-frame in case it is used by code
+;; outside Emacs.
+(define-obsolete-function-alias 'w32-focus-frame 'x-focus-frame "23.1")
+
 (defvar xlfd-regexp-registry-subnum)
 
 ;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
@@ -89,9 +93,6 @@
 ;; The following definition is used for debugging scroll bar events.
 ;(defun w32-handle-scroll-bar-event (event) (interactive "e") (princ event))
 
-;; Handle mouse-wheel events with mwheel.
-(mouse-wheel-mode 1)
-
 (defun w32-drag-n-drop-debug (event)
   "Print the drag-n-drop EVENT in a readable form."
   (interactive "e")
@@ -111,7 +112,7 @@ Switch to a buffer editing the last file dropped."
           (y (cdr coords)))
       (if (and (> x 0) (> y 0))
          (set-frame-selected-window nil window))
-      (mapcar (lambda (file-name)
+      (mapc (lambda (file-name)
                (let ((f (subst-char-in-string ?\\ ?/ file-name))
                      (coding (or file-name-coding-system
                                  default-file-name-coding-system)))
@@ -1039,58 +1040,30 @@ XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
 \f
 ;;;; Function keys
 
-;;; make f10 activate the real menubar rather than the mini-buffer menu
-;;; navigation feature.
-(defun menu-bar-open (&optional frame)
-  "Start key navigation of the menu bar in FRAME.
-
-This initially activates the first menu-bar item, and you can then navigate
-with the arrow keys, select a menu entry with the Return key or cancel with
-the Escape key.  If FRAME has no menu bar, this function does nothing.
-
-If FRAME is nil or not given, use the selected frame."
-  (interactive "i")
-  (w32-send-sys-command ?\xf100 frame))
-;
-(global-set-key [f10] 'menu-bar-open)
-
-(substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame
-                          global-map)
-
-(define-key function-key-map [S-tab] [backtab])
-
+ ;;; make f10 activate the real menubar rather than the mini-buffer menu
+ ;;; navigation feature.
+ (defun menu-bar-open (&optional frame)
+   "Start key navigation of the menu bar in FRAME.
+ This initially activates the first menu-bar item, and you can then navigate
+ with the arrow keys, select a menu entry with the Return key or cancel with
+ the Escape key.  If FRAME has no menu bar, this function does nothing.
+ If FRAME is nil or not given, use the selected frame."
+   (interactive "i")
+   (w32-send-sys-command ?\xf100 frame))
+
+(defun x-setup-function-keys (frame)
+  "Setup Function Keys for w32."
+  (with-selected-frame frame
+     (define-key local-function-key-map [f10] 'menu-bar-open)
+
+     (substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame
+                                local-function-key-map global-map)
+
+     (define-key local-function-key-map [S-tab] [backtab]))
+  (set-terminal-parameter frame 'x-setup-function-keys t))
 \f
-;;; Do the actual Windows setup here; the above code just defines
-;;; functions and variables that we use now.
-
-(setq command-line-args (x-handle-args command-line-args))
-
-;;; Make sure we have a valid resource name.
-(or (stringp x-resource-name)
-    (setq x-resource-name
-         ;; Change any . or * characters in x-resource-name to hyphens,
-         ;; so as not to choke when we use it in X resource queries.
-         (replace-regexp-in-string "[.*]" "-" (invocation-name))))
-
-;; For the benefit of older Emacses (19.27 and earlier) that are sharing
-;; the same lisp directory, don't pass the third argument unless we seem
-;; to have the multi-display support.
-(if (fboundp 'x-close-connection)
-    (x-open-connection ""
-                      x-command-line-resources
-                      ;; Exit Emacs with fatal error if this fails.
-                      t)
-  (x-open-connection ""
-                    x-command-line-resources))
-
-(setq frame-creation-function 'x-create-frame-with-faces)
-
-(setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100)
-                           x-cut-buffer-max))
-
-;; W32 expects the menu bar cut and paste commands to use the clipboard.
-;; This has ,? to match both on Sunos and on Solaris.
-(menu-bar-enable-clipboard)
 
 ;; W32 systems have different fonts than commonly found on X, so
 ;; we define our own standard fontset here.
@@ -1103,111 +1076,10 @@ European languages which are distributed with Windows as
 
 See the documentation of `create-fontset-from-fontset-spec' for the format.")
 
-;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
-(if (fboundp 'new-fontset)
-    (progn
-      ;; Setup the default fontset.
-      (setup-default-fontset)
-      ;; Create the standard fontset.
-      (create-fontset-from-fontset-spec w32-standard-fontset-spec t)
-      ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1,...).
-      (create-fontset-from-x-resource)
-      ;; Try to create a fontset from a font specification which comes
-      ;; from initial-frame-alist, default-frame-alist, or X resource.
-      ;; A font specification in command line argument (i.e. -fn XXXX)
-      ;; should be already in default-frame-alist as a `font'
-      ;; parameter.  However, any font specifications in site-start
-      ;; library, user's init file (.emacs), and default.el are not
-      ;; yet handled here.
-
-      (let ((font (or (cdr (assq 'font initial-frame-alist))
-                      (cdr (assq 'font default-frame-alist))
-                      (x-get-resource "font" "Font")))
-            xlfd-fields resolved-name)
-        (if (and font
-                 (not (query-fontset font))
-                 (setq resolved-name (x-resolve-font-name font))
-                 (setq xlfd-fields (x-decompose-font-name font)))
-            (if (string= "fontset"
-                         (aref xlfd-fields xlfd-regexp-registry-subnum))
-                (new-fontset font
-                             (x-complement-fontset-spec xlfd-fields nil))
-              ;; Create a fontset from FONT.  The fontset name is
-              ;; generated from FONT.
-              (create-fontset-from-ascii-font font
-                                             resolved-name "startup"))))))
-
-;; Apply a geometry resource to the initial frame.  Put it at the end
-;; of the alist, so that anything specified on the command line takes
-;; precedence.
-(let* ((res-geometry (x-get-resource "geometry" "Geometry"))
-       parsed)
-  (if res-geometry
-      (progn
-       (setq parsed (x-parse-geometry res-geometry))
-       ;; If the resource specifies a position,
-       ;; call the position and size "user-specified".
-       (if (or (assq 'top parsed) (assq 'left parsed))
-           (setq parsed (cons '(user-position . t)
-                              (cons '(user-size . t) parsed))))
-       ;; All geometry parms apply to the initial frame.
-       (setq initial-frame-alist (append initial-frame-alist parsed))
-       ;; The size parms apply to all frames.
-       (if (assq 'height parsed)
-           (push (cons 'height (cdr (assq 'height parsed)))
-                 default-frame-alist))
-       (if (assq 'width parsed)
-           (push (cons 'width (cdr (assq 'width parsed)))
-                 default-frame-alist)))))
-
-;; Check the reverseVideo resource.
-(let ((case-fold-search t))
-  (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
-    (if (and rv (string-match "^\\(true\\|yes\\|on\\)$" rv))
-       (push '(reverse . t) default-frame-alist))))
-
 (defun x-win-suspend-error ()
   "Report an error when a suspend is attempted."
   (error "Suspending an Emacs running under W32 makes no sense"))
-(add-hook 'suspend-hook 'x-win-suspend-error)
-
-;;; Turn off window-splitting optimization; w32 is usually fast enough
-;;; that this is only annoying.
-(setq split-window-keep-point t)
-
-;; Don't show the frame name; that's redundant.
-(setq-default mode-line-frame-identification "  ")
-
-;;; Set to a system sound if you want a fancy bell.
-(set-message-beep 'ok)
-
-;; Remap some functions to call w32 common dialogs
-
-(defun internal-face-interactive (what &optional bool)
-  (let* ((fn (intern (concat "face-" what)))
-        (prompt (concat "Set " what " of face "))
-        (face (read-face-name prompt))
-        (default (if (fboundp fn)
-                     (or (funcall fn face (selected-frame))
-                         (funcall fn 'default (selected-frame)))))
-        (fn-win (intern (concat (symbol-name window-system) "-select-" what)))
-        value)
-    (setq value
-         (cond ((fboundp fn-win)
-                (funcall fn-win))
-               ((eq bool 'color)
-                (completing-read (concat prompt " " (symbol-name face) " to: ")
-                                 (mapcar (function (lambda (color)
-                                                     (cons color color)))
-                                         x-colors)
-                                 nil nil nil nil default))
-               (bool
-                (y-or-n-p (concat "Should face " (symbol-name face)
-                                  " be " bool "? ")))
-               (t
-                (read-string (concat prompt " " (symbol-name face) " to: ")
-                             nil nil default))))
-    (list face (if (equal value "") nil value))))
+
 
 ;;; Enable Japanese fonts on Windows to be used by default.
 (set-fontset-font nil (make-char 'katakana-jisx0201) '("*" . "JISX0208-SJIS"))
@@ -1254,7 +1126,120 @@ pop-up menu are unaffected by `w32-list-proportional-fonts')."
         (png "libpng13d.dll" "libpng13.dll" "libpng12d.dll" "libpng12.dll" "libpng.dll")
         (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
         (tiff "libtiff3.dll" "libtiff.dll")
-        (gif "giflib4.dll" "libungif4.dll" "libungif.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")))
+
+;;; multi-tty support
+(defvar w32-initialized nil
+  "Non-nil if the w32 window system has been initialized.")
+
+(defun w32-initialize-window-system ()
+  "Initialize Emacs for W32 GUI frames."
+
+  ;; Do the actual Windows setup here; the above code just defines
+  ;; functions and variables that we use now.
+
+  (setq command-line-args (x-handle-args command-line-args))
+
+  ;; Make sure we have a valid resource name.
+  (or (stringp x-resource-name)
+      (setq x-resource-name
+            ;; Change any . or * characters in x-resource-name to hyphens,
+            ;; so as not to choke when we use it in X resource queries.
+            (replace-regexp-in-string "[.*]" "-" (invocation-name))))
+
+  (x-open-connection "" x-command-line-resources
+                     ;; Exit with a fatal error if this fails and we
+                     ;; are the initial display
+                     (eq initial-window-system 'w32))
+
+  ;; Setup the default fontset.
+  (setup-default-fontset)
+  ;; Create the standard fontset.
+  (create-fontset-from-fontset-spec w32-standard-fontset-spec t)
+  ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1,...).
+  (create-fontset-from-x-resource)
+  ;; Try to create a fontset from a font specification which comes
+  ;; from initial-frame-alist, default-frame-alist, or X resource.
+  ;; A font specification in command line argument (i.e. -fn XXXX)
+  ;; should be already in default-frame-alist as a `font'
+  ;; parameter.  However, any font specifications in site-start
+  ;; library, user's init file (.emacs), and default.el are not
+  ;; yet handled here.
+
+  (let ((font (or (cdr (assq 'font initial-frame-alist))
+                  (cdr (assq 'font default-frame-alist))
+                  (x-get-resource "font" "Font")))
+        xlfd-fields resolved-name)
+    (if (and font
+             (not (query-fontset font))
+             (setq resolved-name (x-resolve-font-name font))
+             (setq xlfd-fields (x-decompose-font-name font)))
+        (if (string= "fontset"
+                     (aref xlfd-fields xlfd-regexp-registry-subnum))
+            (new-fontset font
+                         (x-complement-fontset-spec xlfd-fields nil))
+          ;; Create a fontset from FONT.  The fontset name is
+          ;; generated from FONT.
+          (create-fontset-from-ascii-font font
+                                          resolved-name "startup"))))
+
+  ;; Apply a geometry resource to the initial frame.  Put it at the end
+  ;; of the alist, so that anything specified on the command line takes
+  ;; precedence.
+  (let* ((res-geometry (x-get-resource "geometry" "Geometry"))
+         parsed)
+    (if res-geometry
+        (progn
+          (setq parsed (x-parse-geometry res-geometry))
+          ;; If the resource specifies a position,
+          ;; call the position and size "user-specified".
+          (if (or (assq 'top parsed) (assq 'left parsed))
+              (setq parsed (cons '(user-position . t)
+                                 (cons '(user-size . t) parsed))))
+          ;; All geometry parms apply to the initial frame.
+          (setq initial-frame-alist (append initial-frame-alist parsed))
+          ;; The size parms apply to all frames.
+          (if (assq 'height parsed)
+              (push (cons 'height (cdr (assq 'height parsed)))
+                    default-frame-alist))
+          (if (assq 'width parsed)
+              (push (cons 'width (cdr (assq 'width parsed)))
+                    default-frame-alist)))))
+
+  ;; Check the reverseVideo resource.
+  (let ((case-fold-search t))
+    (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
+      (if (and rv (string-match "^\\(true\\|yes\\|on\\)$" rv))
+          (push '(reverse . t) default-frame-alist))))
+
+  ;; Don't let Emacs suspend under w32 gui
+  (add-hook 'suspend-hook 'x-win-suspend-error)
+
+  ;; Turn off window-splitting optimization; w32 is usually fast enough
+  ;; that this is only annoying.
+  (setq split-window-keep-point t)
+
+  ;; Turn on support for mouse wheels
+  (mouse-wheel-mode 1)
+
+  ;; W32 expects the menu bar cut and paste commands to use the clipboard.
+  (menu-bar-enable-clipboard)
+
+  ;; Don't show the frame name; that's redundant.
+  (setq-default mode-line-frame-identification "  ")
+
+  ;; Set to a system sound if you want a fancy bell.
+  (set-message-beep 'ok)
+  (setq w32-initialized t))
+
+(add-to-list 'handle-args-function-alist '(w32 . x-handle-args))
+(add-to-list 'frame-creation-function-alist '(w32 . x-create-frame-with-faces))
+(add-to-list 'window-system-initialization-alist '(w32 . w32-initialize-window-system))
+
+(provide 'w32-win)
 
 ;; arch-tag: 69fb1701-28c2-4890-b351-3d1fe4b4f166
 ;;; w32-win.el ends here
index c0e4334f522208e6c87d3782d7848b2790e32b93..e241224c637e1159b7b406754de33c196fc6cf6a 100644 (file)
@@ -40,9 +40,9 @@
 
 (defun terminal-init-wyse50 ()
   "Terminal initialization function for wyse50."
-  (define-key function-key-map "\C-a" (make-keymap))
+  (define-key local-function-key-map "\C-a" (make-keymap))
   (mapcar (function (lambda (key-definition)
-                     (define-key function-key-map
+                     (define-key local-function-key-map
                        (car key-definition) (nth 1 key-definition))))
          '(
            ;; These might be set up by termcap and terminfo
            ("\eY"      [key-clear])            ;; Not an X keysym
 
            ;; These are totally strange :-)
-           ("\eW"      [?\C-?])            ;; Not an X keysym
-           ("\^a\^k\^m"        [funct-up]) ;; Not an X keysym
-           ("\^a\^j\^m"        [funct-down])  ;; Not an X keysym
-           ("\^a\^l\^m"        [funct-right]) ;; Not an X keysym
-           ("\^a\^h\^m"        [funct-left])  ;; Not an X keysym
+           ("\eW"      [?\C-?])                ;; Not an X keysym
+           ("\^a\^k\^m"        [funct-up])     ;; Not an X keysym
+           ("\^a\^j\^m"        [funct-down])   ;; Not an X keysym
+           ("\^a\^l\^m"        [funct-right])  ;; Not an X keysym
+           ("\^a\^h\^m"        [funct-left])   ;; Not an X keysym
            ("\^a\^m\^m"        [funct-return]) ;; Not an X keysym
            ("\^a\^i\^m"        [funct-tab])    ;; Not an X keysym
            ))
index 8de5b902e18cbd615685d2062636210c06e53c6b..8c183db6dea6e6d33fabbbb4401625f1ddbde2cb 100644 (file)
 
 ;;; Commentary:
 
-;; X-win.el:  this file is loaded from ../lisp/startup.el when it recognizes
-;; that X windows are to be used.  Command line switches are parsed and those
-;; pertaining to X are processed and removed from the command line.  The
-;; X display is opened and hooks are set for popping up the initial window.
+;; X-win.el: this file defines functions to initialize the X window
+;; system and process X-specific command line parameters before
+;; creating the first X frame.
+
+;; Note that contrary to previous Emacs versions, the act of loading
+;; this file should not have the side effect of initializing the
+;; window system or processing command line arguments (this file is
+;; now loaded in loadup.el).  See the variables
+;; `handle-args-function-alist' and
+;; `window-system-initialization-alist' for more details.
 
 ;; startup.el will then examine startup files, and eventually call the hooks
 ;; which create the first window(s).
@@ -65,7 +71,7 @@
 ;; An alist of X options and the function which handles them.  See
 ;; ../startup.el.
 
-(if (not (eq window-system 'x))
+(if (not (fboundp 'x-create-frame))
     (error "%s: Loading x-win.el but not compiled for X" (invocation-name)))
 
 (require 'frame)
@@ -266,7 +272,7 @@ See also `emacs-session-save'.")
 If the directory ~/.emacs.d exists, we make a filename in there, otherwise
 a file in the home directory."
   (let ((basename (concat "session." session-id))
-       (emacs-dir "~/.emacs.d/"))
+       (emacs-dir user-emacs-directory))
     (expand-file-name (if (file-directory-p emacs-dir)
                          (concat emacs-dir basename)
                        (concat "~/.emacs-" basename)))))
@@ -395,6 +401,7 @@ exists."
 (defconst x-pointer-ur-angle 148)
 (defconst x-pointer-watch 150)
 (defconst x-pointer-xterm 152)
+(defconst x-pointer-invisible 255)
 \f
 ;;
 ;; Available colors
@@ -1170,27 +1177,39 @@ XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
 \f
 ;;;; Function keys
 
-(substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame
-                          global-map)
-
-;; Map certain keypad keys into ASCII characters
-;; that people usually expect.
-(define-key function-key-map [backspace] [127])
-(define-key function-key-map [delete] [127])
-(define-key function-key-map [tab] [?\t])
-(define-key function-key-map [linefeed] [?\n])
-(define-key function-key-map [clear] [?\C-l])
-(define-key function-key-map [return] [?\C-m])
-(define-key function-key-map [escape] [?\e])
-(define-key function-key-map [M-backspace] [?\M-\d])
-(define-key function-key-map [M-delete] [?\M-\d])
-(define-key function-key-map [M-tab] [?\M-\t])
-(define-key function-key-map [M-linefeed] [?\M-\n])
-(define-key function-key-map [M-clear] [?\M-\C-l])
-(define-key function-key-map [M-return] [?\M-\C-m])
-(define-key function-key-map [M-escape] [?\M-\e])
-(define-key function-key-map [iso-lefttab] [backtab])
-(define-key function-key-map [S-iso-lefttab] [backtab])
+(defvar x-alternatives-map
+  (let ((map (make-sparse-keymap)))
+    ;; Map certain keypad keys into ASCII characters that people usually expect.
+    (define-key map [backspace] [127])
+    (define-key map [delete] [127])
+    (define-key map [tab] [?\t])
+    (define-key map [linefeed] [?\n])
+    (define-key map [clear] [?\C-l])
+    (define-key map [return] [?\C-m])
+    (define-key map [escape] [?\e])
+    (define-key map [M-backspace] [?\M-\d])
+    (define-key map [M-delete] [?\M-\d])
+    (define-key map [M-tab] [?\M-\t])
+    (define-key map [M-linefeed] [?\M-\n])
+    (define-key map [M-clear] [?\M-\C-l])
+    (define-key map [M-return] [?\M-\C-m])
+    (define-key map [M-escape] [?\M-\e])
+    (define-key map [iso-lefttab] [backtab])
+    (define-key map [S-iso-lefttab] [backtab])
+    map)
+  "Keymap of possible alternative meanings for some keys.")
+
+(defun x-setup-function-keys (frame)
+  "Set up `function-key-map' on FRAME for the X window system."
+  ;; Don't do this twice on the same display, or it would break
+  ;; normal-erase-is-backspace-mode.
+  (unless (terminal-parameter frame 'x-setup-function-keys)
+    ;; Map certain keypad keys into ASCII characters that people usually expect.
+    (with-selected-frame frame
+      (let ((map (copy-keymap x-alternatives-map)))
+        (set-keymap-parent map (keymap-parent local-function-key-map))
+        (set-keymap-parent local-function-key-map map)))
+    (set-terminal-parameter frame 'x-setup-function-keys t)))
 
 ;; These tell read-char how to convert
 ;; these special chars to ASCII.
@@ -2348,15 +2367,15 @@ order until succeed.")
            (cond;; check cut buffer
             ((or (not cut-text) (string= cut-text ""))
              (setq x-last-selected-text-cut nil))
-            ;; This short cut doesn't work because x-get-cut-buffer     
-            ;; always returns a newly created string.   
-            ;; ((eq      cut-text x-last-selected-text-cut) nil)        
+            ;; This short cut doesn't work because x-get-cut-buffer
+            ;; always returns a newly created string.
+            ;; ((eq      cut-text x-last-selected-text-cut) nil)
             ((and (string= cut-text x-last-selected-text-cut-encoded)
                   (eq x-last-cut-buffer-coding next-coding))
-             ;; See the comment above.  No need of this recording.      
-             ;; Record the newer string,        
-             ;; so subsequent calls can use the `eq' test.      
-             ;; (setq x-last-selected-text-cut cut-text)        
+             ;; See the comment above.  No need of this recording.
+             ;; Record the newer string,
+             ;; so subsequent calls can use the `eq' test.
+             ;; (setq x-last-selected-text-cut cut-text)
              nil)
             (t
              (setq x-last-selected-text-cut-encoded cut-text
@@ -2364,7 +2383,7 @@ order until succeed.")
                  x-last-selected-text-cut
                  ;; ICCCM says cut buffer always contain ISO-Latin-1, but
                  ;; use next-selection-coding-system if not nil.
-                 (decode-coding-string 
+                 (decode-coding-string
                   cut-text next-coding))))))
 
     ;; As we have done one selection, clear this now.
@@ -2393,168 +2412,272 @@ order until succeed.")
     (or clip-text primary-text cut-text)
     ))
 
-\f
-;; Do the actual X Windows setup here; the above code just defines
-;; functions and variables that we use now.
-
-(setq command-line-args (x-handle-args command-line-args))
-
-;; Make sure we have a valid resource name.
-(or (stringp x-resource-name)
-    (let (i)
-      (setq x-resource-name (invocation-name))
-
-      ;; Change any . or * characters in x-resource-name to hyphens,
-      ;; so as not to choke when we use it in X resource queries.
-      (while (setq i (string-match "[.*]" x-resource-name))
-       (aset x-resource-name i ?-))))
-
-(x-open-connection (or x-display-name
-                      (setq x-display-name (getenv "DISPLAY")))
-                  x-command-line-resources
-                  ;; Exit Emacs with fatal error if this fails.
-                  t)
-
-(setq frame-creation-function 'x-create-frame-with-faces)
-
-(setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100)
-                           x-cut-buffer-max))
-
-;; Setup the default fontset.
-(setup-default-fontset)
-
-;; Create the standard fontset.
-(create-fontset-from-fontset-spec standard-fontset-spec t)
-
-;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
-(create-fontset-from-x-resource)
-
-;; Try to create a fontset from a font specification which comes
-;; from initial-frame-alist, default-frame-alist, or X resource.
-;; A font specification in command line argument (i.e. -fn XXXX)
-;; should be already in default-frame-alist as a `font'
-;; parameter.  However, any font specifications in site-start
-;; library, user's init file (.emacs), and default.el are not
-;; yet handled here.
-
-(let ((font (or (cdr (assq 'font initial-frame-alist))
-               (cdr (assq 'font default-frame-alist))
-               (x-get-resource "font" "Font")))
-      xlfd-fields resolved-name)
-  (if (and font
-          (not (query-fontset font))
-          (setq resolved-name (x-resolve-font-name font))
-          (setq xlfd-fields (x-decompose-font-name font)))
-      (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum))
-         (new-fontset font (x-complement-fontset-spec xlfd-fields nil))
-       ;; Create a fontset from FONT.  The fontset name is
-       ;; generated from FONT.
-       (create-fontset-from-ascii-font font resolved-name "startup"))))
-
-;; Apply a geometry resource to the initial frame.  Put it at the end
-;; of the alist, so that anything specified on the command line takes
-;; precedence.
-(let* ((res-geometry (x-get-resource "geometry" "Geometry"))
-       parsed)
-  (if res-geometry
-      (progn
-       (setq parsed (x-parse-geometry res-geometry))
-       ;; If the resource specifies a position,
-       ;; call the position and size "user-specified".
-       (if (or (assq 'top parsed) (assq 'left parsed))
-           (setq parsed (cons '(user-position . t)
-                              (cons '(user-size . t) parsed))))
-       ;; All geometry parms apply to the initial frame.
-       (setq initial-frame-alist (append initial-frame-alist parsed))
-       ;; The size parms apply to all frames.  Don't set it if there are
-       ;; sizes there already (from command line).
-       (if (and (assq 'height parsed)
-                (not (assq 'height default-frame-alist)))
-           (setq default-frame-alist
-                 (cons (cons 'height (cdr (assq 'height parsed)))
-                       default-frame-alist)))
-       (if (and (assq 'width parsed)
-                (not (assq 'width default-frame-alist)))
-           (setq default-frame-alist
-                 (cons (cons 'width (cdr (assq 'width parsed)))
-                       default-frame-alist))))))
-
-;; Check the reverseVideo resource.
-(let ((case-fold-search t))
-  (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
-    (if (and rv
-            (string-match "^\\(true\\|yes\\|on\\)$" rv))
-       (setq default-frame-alist
-             (cons '(reverse . t) default-frame-alist)))))
+(defun x-clipboard-yank ()
+  "Insert the clipboard contents, or the last stretch of killed text."
+  (interactive "*")
+  (let ((clipboard-text (x-selection-value 'CLIPBOARD))
+       (x-select-enable-clipboard t))
+    (if (and clipboard-text (> (length clipboard-text) 0))
+       (kill-new clipboard-text))
+    (yank)))
 
-;; Set x-selection-timeout, measured in milliseconds.
-(let ((res-selection-timeout
-       (x-get-resource "selectionTimeout" "SelectionTimeout")))
-  (setq x-selection-timeout 20000)
-  (if res-selection-timeout
-      (setq x-selection-timeout (string-to-number res-selection-timeout))))
+(defun x-menu-bar-open (&optional frame)
+  "Open the menu bar if `menu-bar-mode' is on. otherwise call `tmm-menubar'."
+  (interactive "i")
+  (if menu-bar-mode (accelerate-menu frame)
+    (tmm-menubar)))
 
-;; Set scroll bar mode to right if set by X resources. Default is left.
-(if (equal (x-get-resource "verticalScrollBars" "ScrollBars") "right")
-    (customize-set-variable 'scroll-bar-mode 'right))
+\f
+;;; Window system initialization.
 
 (defun x-win-suspend-error ()
   (error "Suspending an Emacs running under X makes no sense"))
-(add-hook 'suspend-hook 'x-win-suspend-error)
 
-;; Arrange for the kill and yank functions to set and check the clipboard.
-(setq interprogram-cut-function 'x-select-text)
-(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
+(defvar x-initialized nil
+  "Non-nil if the X window system has been initialized.")
+
+(defun x-initialize-window-system ()
+  "Initialize Emacs for X frames and open the first connection to an X server."
+  ;; Make sure we have a valid resource name.
+  (or (stringp x-resource-name)
+      (let (i)
+       (setq x-resource-name (invocation-name))
+
+       ;; Change any . or * characters in x-resource-name to hyphens,
+       ;; so as not to choke when we use it in X resource queries.
+       (while (setq i (string-match "[.*]" x-resource-name))
+         (aset x-resource-name i ?-))))
+
+  (x-open-connection (or x-display-name
+                        (setq x-display-name (or (getenv "DISPLAY" (selected-frame))
+                                                 (getenv "DISPLAY"))))
+                    x-command-line-resources
+                    ;; Exit Emacs with fatal error if this fails and we
+                    ;; are the initial display.
+                    (eq initial-window-system 'x))
+
+  (setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100)
+                             x-cut-buffer-max))
+
+  ;; Setup the default fontset.
+  (setup-default-fontset)
+
+  ;; Create the standard fontset.
+  (create-fontset-from-fontset-spec standard-fontset-spec t)
+
+  ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
+  (create-fontset-from-x-resource)
+
+  ;; Try to create a fontset from a font specification which comes
+  ;; from initial-frame-alist, default-frame-alist, or X resource.
+  ;; A font specification in command line argument (i.e. -fn XXXX)
+  ;; should be already in default-frame-alist as a `font'
+  ;; parameter.  However, any font specifications in site-start
+  ;; library, user's init file (.emacs), and default.el are not
+  ;; yet handled here.
+
+  (let ((font (or (cdr (assq 'font initial-frame-alist))
+                 (cdr (assq 'font default-frame-alist))
+                 (x-get-resource "font" "Font")))
+       xlfd-fields resolved-name)
+    (if (and font
+            (not (query-fontset font))
+            (setq resolved-name (x-resolve-font-name font))
+            (setq xlfd-fields (x-decompose-font-name font)))
+       (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum))
+           (new-fontset font (x-complement-fontset-spec xlfd-fields nil))
+         ;; Create a fontset from FONT.  The fontset name is
+         ;; generated from FONT.
+         (create-fontset-from-ascii-font font resolved-name "startup"))))
+
+  ;; Set scroll bar mode to right if set by X resources. Default is left.
+  (if (equal (x-get-resource "verticalScrollBars" "ScrollBars") "right")
+      (customize-set-variable 'scroll-bar-mode 'right))
+
+  ;; Apply a geometry resource to the initial frame.  Put it at the end
+  ;; of the alist, so that anything specified on the command line takes
+  ;; precedence.
+  (let* ((res-geometry (x-get-resource "geometry" "Geometry"))
+        parsed)
+    (if res-geometry
+       (progn
+         (setq parsed (x-parse-geometry res-geometry))
+         ;; If the resource specifies a position,
+         ;; call the position and size "user-specified".
+         (if (or (assq 'top parsed) (assq 'left parsed))
+             (setq parsed (cons '(user-position . t)
+                                (cons '(user-size . t) parsed))))
+         ;; All geometry parms apply to the initial frame.
+         (setq initial-frame-alist (append initial-frame-alist parsed))
+         ;; The size parms apply to all frames.  Don't set it if there are
+         ;; sizes there already (from command line).
+         (if (and (assq 'height parsed)
+                  (not (assq 'height default-frame-alist)))
+             (setq default-frame-alist
+                   (cons (cons 'height (cdr (assq 'height parsed)))
+                         default-frame-alist)))
+         (if (and (assq 'width parsed)
+                  (not (assq 'width default-frame-alist)))
+             (setq default-frame-alist
+                   (cons (cons 'width (cdr (assq 'width parsed)))
+                         default-frame-alist))))))
+
+  ;; Check the reverseVideo resource.
+  (let ((case-fold-search t))
+    (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
+      (if (and rv
+              (string-match "^\\(true\\|yes\\|on\\)$" rv))
+         (setq default-frame-alist
+               (cons '(reverse . t) default-frame-alist)))))
 
-;; Turn off window-splitting optimization; X is usually fast enough
-;; that this is only annoying.
-(setq split-window-keep-point t)
+  ;; Set x-selection-timeout, measured in milliseconds.
+  (let ((res-selection-timeout
+        (x-get-resource "selectionTimeout" "SelectionTimeout")))
+    (setq x-selection-timeout 20000)
+    (if res-selection-timeout
+       (setq x-selection-timeout (string-to-number res-selection-timeout))))
 
-;; Don't show the frame name; that's redundant with X.
-(setq-default mode-line-frame-identification "  ")
+  ;; Don't let Emacs suspend under X.
+  (add-hook 'suspend-hook 'x-win-suspend-error)
 
-;; Motif direct handling of f10 wasn't working right,
-;; So temporarily we've turned it off in lwlib-Xm.c
-;; and turned the Emacs f10 back on.
-;; ;; Motif normally handles f10 itself, so don't try to handle it a second time.
-;; (if (featurep 'motif)
-;;     (global-set-key [f10] 'ignore))
+  ;; Turn off window-splitting optimization; X is usually fast enough
+  ;; that this is only annoying.
+  (setq split-window-keep-point t)
 
-;; Turn on support for mouse wheels.
-(mouse-wheel-mode 1)
+  ;; Motif direct handling of f10 wasn't working right,
+  ;; So temporarily we've turned it off in lwlib-Xm.c
+  ;; and turned the Emacs f10 back on.
+  ;; ;; Motif normally handles f10 itself, so don't try to handle it a second time.
+  ;; (if (featurep 'motif)
+  ;;     (global-set-key [f10] 'ignore))
 
+  ;; Turn on support for mouse wheels.
+  (mouse-wheel-mode 1)
 
-;; Enable CLIPBOARD copy/paste through menu bar commands.
-(menu-bar-enable-clipboard)
+  ;; Enable CLIPBOARD copy/paste through menu bar commands.
+  (menu-bar-enable-clipboard)
 
-;; Override Paste so it looks at CLIPBOARD first.
-(defun x-clipboard-yank ()
-  "Insert the clipboard contents, or the last stretch of killed text."
-  (interactive "*")
-  (let ((clipboard-text (x-selection-value 'CLIPBOARD))
-       (x-select-enable-clipboard t))
-    (if (and clipboard-text (> (length clipboard-text) 0))
-       (kill-new clipboard-text))
-    (yank)))
+  ;; Override Paste so it looks at CLIPBOARD first.
+  (define-key menu-bar-edit-menu [paste]
+    (append '(menu-item "Paste" x-clipboard-yank
+                       :enable (not buffer-read-only)
+                       :help "Paste (yank) text most recently cut/copied")
+           nil))
+
+  (setq x-initialized t))
 
-(define-key menu-bar-edit-menu [paste]
-  '(menu-item "Paste" x-clipboard-yank
-             :enable (not buffer-read-only)
-             :help "Paste (yank) text most recently cut/copied"))
+(add-to-list 'handle-args-function-alist '(x . x-handle-args))
+(add-to-list 'frame-creation-function-alist '(x . x-create-frame-with-faces))
+(add-to-list 'window-system-initialization-alist '(x . x-initialize-window-system))
 
 ;; Initiate drag and drop
 (add-hook 'after-make-frame-functions 'x-dnd-init-frame)
 (define-key special-event-map [drag-n-drop] 'x-dnd-handle-drag-n-drop-event)
 
-;; Let F10 do menu bar navigation.
-(defun x-menu-bar-open (&optional frame)
-  "Open the menu bar if `menu-bar-mode' is on. otherwise call `tmm-menubar'."
-  (interactive "i")
-  (if menu-bar-mode (menu-bar-open frame)
-    (tmm-menubar)))
-                  
-(and (fboundp 'menu-bar-open)
-     (global-set-key [f10] 'x-menu-bar-open))
+(defcustom x-gtk-stock-map
+  '(
+    ("etc/images/new" . "gtk-new")
+    ("etc/images/open" . "gtk-open")
+    ("etc/images/diropen" . "n:system-file-manager")
+    ("etc/images/close" . "gtk-close")
+    ("etc/images/save" . "gtk-save")
+    ("etc/images/saveas" . "gtk-save-as")
+    ("etc/images/undo" . "gtk-undo")
+    ("etc/images/cut" . "gtk-cut")
+    ("etc/images/copy" . "gtk-copy")
+    ("etc/images/paste" . "gtk-paste")
+    ("etc/images/search" . "gtk-find")
+    ("etc/images/print" . "gtk-print")
+    ("etc/images/preferences" . "gtk-preferences")
+    ("etc/images/help" . "gtk-help")
+    ("etc/images/left-arrow" . "gtk-go-back")
+    ("etc/images/right-arrow" . "gtk-go-forward")
+    ("etc/images/home" . "gtk-home")
+    ("etc/images/jump-to" . "gtk-jump-to")
+    ("etc/images/index" . "gtk-index")
+    ("etc/images/search" . "gtk-find")
+    ("etc/images/exit" . "gtk-quit")
+    ;; Used in Gnus and/or MH-E:
+    ("etc/images/attach.xpm" . "gtk-attach")
+    ("etc/images/connect.xpm" . "gtk-connect")
+    ("etc/images/contact.xpm" . "gtk-contact")
+    ("etc/images/delete.xpm" . "gtk-delete")
+    ("etc/images/describe.xpm" . "gtk-properties")
+    ("etc/images/disconnect.xpm" . "gtk-disconnect")
+    ;; ("etc/images/exit.xpm" . "gtk-exit")
+    ("etc/images/lock-broken.xpm" . "gtk-lock_broken")
+    ("etc/images/lock-ok.xpm" . "gtk-lock_ok")
+    ("etc/images/lock.xpm" . "gtk-lock")
+    ("etc/images/next-page.xpm" . "gtk-next-page")
+    ("etc/images/refresh.xpm" . "gtk-refresh")
+    ("etc/images/sort-ascending.xpm" . "gtk-sort-ascending")
+    ("etc/images/sort-column-ascending.xpm" . "gtk-sort-column-ascending")
+    ("etc/images/sort-criteria.xpm" . "gtk-sort-criteria")
+    ("etc/images/sort-descending.xpm" . "gtk-sort-descending")
+    ("etc/images/sort-row-ascending.xpm" . "gtk-sort-row-ascending")
+    ("images/gnus/toggle-subscription.xpm" . "gtk-task-recurring")
+    ("images/mail/compose.xpm" . "gtk-mail-compose")
+    ("images/mail/copy.xpm" . "gtk-mail-copy")
+    ("images/mail/forward.xpm" . "gtk-mail-forward")
+    ("images/mail/inbox.xpm" . "gtk-inbox")
+    ("images/mail/move.xpm" . "gtk-mail-move")
+    ("images/mail/not-spam.xpm" . "gtk-not-spam")
+    ("images/mail/outbox.xpm" . "gtk-outbox")
+    ("images/mail/reply-all.xpm" . "gtk-mail-reply-to-all")
+    ("images/mail/reply.xpm" . "gtk-mail-reply")
+    ("images/mail/save-draft.xpm" . "gtk-mail-handling")
+    ("images/mail/send.xpm" . "gtk-mail-send")
+    ("images/mail/spam.xpm" . "gtk-spam")
+    ;; No themed versions available:
+    ;; mail/preview.xpm (combining stock_mail and stock_zoom)
+    ;; mail/save.xpm    (combining stock_mail, stock_save and stock_convert)
+    )
+  "How icons for tool bars are mapped to Gtk+ stock items.
+Emacs must be compiled with the Gtk+ toolkit for this to have any effect.
+A value that begins with n: denotes a named icon instead of a stock icon."
+  :version "22.2"
+  :type '(choice (repeat (choice symbol
+                                (cons (string :tag "Emacs icon")
+                                      (string :tag "Stock/named")))))
+  :group 'x)
+
+(defcustom icon-map-list '(x-gtk-stock-map)
+  "A list of alists that maps icon file names to stock/named icons.
+The alists are searched in the order they appear.  The first match is used.
+The keys in the alists are file names without extension and with two directory
+components.  For example, to map /usr/share/emacs/22.1.1/etc/images/open.xpm
+to stock item gtk-open, use:
+
+  (\"etc/images/open\" . \"gtk-open\")
+
+Themes also have named icons.  To map to one of those, use n: before the name:
+
+  (\"etc/images/diropen\" . \"n:system-file-manager\")
+
+The list elements are either the symbol name for the alist or the
+alist itself.
+
+If you don't want stock icons, set the variable to nil."
+  :version "22.2"
+  :type '(choice (const :tag "Don't use stock icons" nil)
+                (repeat (choice symbol
+                                (cons (string :tag "Emacs icon")
+                                      (string :tag "Stock/named")))))
+  :group 'x)
+
+(defun x-gtk-map-stock (file)
+  "Map icon with file name FILE to a Gtk+ stock name, using `x-gtk-stock-map'."
+  (let* ((file-sans (file-name-sans-extension file))
+        (key (and (string-match "/\\([^/]+/[^/]+/[^/]+$\\)" file-sans)
+                  (match-string 1 file-sans)))
+        (value))
+    (mapc (lambda (elem)
+           (let ((assoc (if (symbolp elem) (symbol-value elem) elem)))
+             (or value (setq value (assoc-string (or key file-sans) assoc)))))
+           icon-map-list)
+    (and value (cdr value))))
+
+(provide 'x-win)
 
 (defcustom x-gtk-stock-map
   '(
index 1f06499153f7830553155d1b2d5fe095adfc81a2..1c4b60706aa05c9fc329d7d66fbeb7486b633580 100644 (file)
 
 ;;; Code:
 
+(eval-when-compile (require 'xt-mouse))
+
+(defvar xterm-function-map
+  (let ((map (make-sparse-keymap)))
+
+    ;; xterm from X.org 6.8.2 uses these key definitions.
+    (define-key map "\eOP" [f1])
+    (define-key map "\eOQ" [f2])
+    (define-key map "\eOR" [f3])
+    (define-key map "\eOS" [f4])
+    (define-key map "\e[15~" [f5])
+    (define-key map "\e[17~" [f6])
+    (define-key map "\e[18~" [f7])
+    (define-key map "\e[19~" [f8])
+    (define-key map "\e[20~" [f9])
+    (define-key map "\e[21~" [f10])
+    (define-key map "\e[23~" [f11])
+    (define-key map "\e[24~" [f12])
+
+    (define-key map "\eO2P" [S-f1])
+    (define-key map "\eO2Q" [S-f2])
+    (define-key map "\eO2R" [S-f3])
+    (define-key map "\eO2S" [S-f4])
+    (define-key map "\e[1;2P" [S-f1])
+    (define-key map "\e[1;2Q" [S-f2])
+    (define-key map "\e[1;2R" [S-f3])
+    (define-key map "\e[1;2S" [S-f4])
+    (define-key map "\e[15;2~" [S-f5])
+    (define-key map "\e[17;2~" [S-f6])
+    (define-key map "\e[18;2~" [S-f7])
+    (define-key map "\e[19;2~" [S-f8])
+    (define-key map "\e[20;2~" [S-f9])
+    (define-key map "\e[21;2~" [S-f10])
+    (define-key map "\e[23;2~" [S-f11])
+    (define-key map "\e[24;2~" [S-f12])
+
+    (define-key map "\eO5P" [C-f1])
+    (define-key map "\eO5Q" [C-f2])
+    (define-key map "\eO5R" [C-f3])
+    (define-key map "\eO5S" [C-f4])
+    (define-key map "\e[15;5~" [C-f5])
+    (define-key map "\e[17;5~" [C-f6])
+    (define-key map "\e[18;5~" [C-f7])
+    (define-key map "\e[19;5~" [C-f8])
+    (define-key map "\e[20;5~" [C-f9])
+    (define-key map "\e[21;5~" [C-f10])
+    (define-key map "\e[23;5~" [C-f11])
+    (define-key map "\e[24;5~" [C-f12])
+
+    (define-key map "\eO6P" [C-S-f1])
+    (define-key map "\eO6Q" [C-S-f2])
+    (define-key map "\eO6R" [C-S-f3])
+    (define-key map "\eO6S" [C-S-f4])
+    (define-key map "\e[15;6~" [C-S-f5])
+    (define-key map "\e[17;6~" [C-S-f6])
+    (define-key map "\e[18;6~" [C-S-f7])
+    (define-key map "\e[19;6~" [C-S-f8])
+    (define-key map "\e[20;6~" [C-S-f9])
+    (define-key map "\e[21;6~" [C-S-f10])
+    (define-key map "\e[23;6~" [C-S-f11])
+    (define-key map "\e[24;6~" [C-S-f12])
+
+    (define-key map "\eO3P" [M-f1])
+    (define-key map "\eO3Q" [M-f2])
+    (define-key map "\eO3R" [M-f3])
+    (define-key map "\eO3S" [M-f4])
+    (define-key map "\e[15;3~" [M-f5])
+    (define-key map "\e[17;3~" [M-f6])
+    (define-key map "\e[18;3~" [M-f7])
+    (define-key map "\e[19;3~" [M-f8])
+    (define-key map "\e[20;3~" [M-f9])
+    (define-key map "\e[21;3~" [M-f10])
+    (define-key map "\e[23;3~" [M-f11])
+    (define-key map "\e[24;3~" [M-f12])
+
+    (define-key map "\eO4P" [M-S-f1])
+    (define-key map "\eO4Q" [M-S-f2])
+    (define-key map "\eO4R" [M-S-f3])
+    (define-key map "\eO4S" [M-S-f4])
+    (define-key map "\e[15;4~" [M-S-f5])
+    (define-key map "\e[17;4~" [M-S-f6])
+    (define-key map "\e[18;4~" [M-S-f7])
+    (define-key map "\e[19;4~" [M-S-f8])
+    (define-key map "\e[20;4~" [M-S-f9])
+    (define-key map "\e[21;4~" [M-S-f10])
+    (define-key map "\e[23;4~" [M-S-f11])
+    (define-key map "\e[24;4~" [M-S-f12])
+
+    (define-key map "\eOA" [up])
+    (define-key map "\eOB" [down])
+    (define-key map "\eOC" [right])
+    (define-key map "\eOD" [left])
+    (define-key map "\eOF" [end])
+    (define-key map "\eOH" [home])
+
+    (define-key map "\e[1;2A" [S-up])
+    (define-key map "\e[1;2B" [S-down])
+    (define-key map "\e[1;2C" [S-right])
+    (define-key map "\e[1;2D" [S-left])
+    (define-key map "\e[1;2F" [S-end])
+    (define-key map "\e[1;2H" [S-home])
+
+    (define-key map "\e[1;4A" [M-S-up])
+    (define-key map "\e[1;4B" [M-S-down])
+    (define-key map "\e[1;4C" [M-S-right])
+    (define-key map "\e[1;4D" [M-S-left])
+    (define-key map "\e[1;4F" [M-S-end])
+    (define-key map "\e[1;4H" [M-S-home])
+
+    (define-key map "\e[1;5A" [C-up])
+    (define-key map "\e[1;5B" [C-down])
+    (define-key map "\e[1;5C" [C-right])
+    (define-key map "\e[1;5D" [C-left])
+    (define-key map "\e[1;5F" [C-end])
+    (define-key map "\e[1;5H" [C-home])
+
+    (define-key map "\e[1;6A" [C-S-up])
+    (define-key map "\e[1;6B" [C-S-down])
+    (define-key map "\e[1;6C" [C-S-right])
+    (define-key map "\e[1;6D" [C-S-left])
+    (define-key map "\e[1;6F" [C-S-end])
+    (define-key map "\e[1;6H" [C-S-home])
+
+    (define-key map "\e[1;7A" [C-M-up])
+    (define-key map "\e[1;7B" [C-M-down])
+    (define-key map "\e[1;7C" [C-M-right])
+    (define-key map "\e[1;7D" [C-M-left])
+    (define-key map "\e[1;7F" [C-M-end])
+    (define-key map "\e[1;7H" [C-M-home])
+
+    (define-key map "\e[1;8A" [C-M-S-up])
+    (define-key map "\e[1;8B" [C-M-S-down])
+    (define-key map "\e[1;8C" [C-M-S-right])
+    (define-key map "\e[1;8D" [C-M-S-left])
+    (define-key map "\e[1;8F" [C-M-S-end])
+    (define-key map "\e[1;8H" [C-M-S-home])
+
+    (define-key map "\e[1;3A" [M-up])
+    (define-key map "\e[1;3B" [M-down])
+    (define-key map "\e[1;3C" [M-right])
+    (define-key map "\e[1;3D" [M-left])
+    (define-key map "\e[1;3F" [M-end])
+    (define-key map "\e[1;3H" [M-home])
+
+    (define-key map "\e[2~" [insert])
+    (define-key map "\e[3~" [delete])
+    (define-key map "\e[5~" [prior])
+    (define-key map "\e[6~" [next])
+
+    (define-key map "\e[2;2~" [S-insert])
+    (define-key map "\e[3;2~" [S-delete])
+    (define-key map "\e[5;2~" [S-prior])
+    (define-key map "\e[6;2~" [S-next])
+
+    (define-key map "\e[2;4~" [M-S-insert])
+    (define-key map "\e[3;4~" [M-S-delete])
+    (define-key map "\e[5;4~" [M-S-prior])
+    (define-key map "\e[6;4~" [M-S-next])
+
+    (define-key map "\e[2;5~" [C-insert])
+    (define-key map "\e[3;5~" [C-delete])
+    (define-key map "\e[5;5~" [C-prior])
+    (define-key map "\e[6;5~" [C-next])
+
+    (define-key map "\e[2;6~" [C-S-insert])
+    (define-key map "\e[3;6~" [C-S-delete])
+    (define-key map "\e[5;6~" [C-S-prior])
+    (define-key map "\e[6;6~" [C-S-next])
+
+    (define-key map "\e[2;7~" [C-M-insert])
+    (define-key map "\e[3;7~" [C-M-delete])
+    (define-key map "\e[5;7~" [C-M-prior])
+    (define-key map "\e[6;7~" [C-M-next])
+
+    (define-key map "\e[2;8~" [C-M-S-insert])
+    (define-key map "\e[3;8~" [C-M-S-delete])
+    (define-key map "\e[5;8~" [C-M-S-prior])
+    (define-key map "\e[6;8~" [C-M-S-next])
+
+    (define-key map "\e[2;3~" [M-insert])
+    (define-key map "\e[3;3~" [M-delete])
+    (define-key map "\e[5;3~" [M-prior])
+    (define-key map "\e[6;3~" [M-next])
+
+    (define-key map "\e[4~" [select])
+    (define-key map "\e[29~" [print])
+
+    (define-key map "\eOj" [kp-multiply])
+    (define-key map "\eOk" [kp-add])
+    (define-key map "\eOl" [kp-separator])
+    (define-key map "\eOm" [kp-subtract])
+    (define-key map "\eOo" [kp-divide])
+    (define-key map "\eOp" [kp-0])
+    (define-key map "\eOq" [kp-1])
+    (define-key map "\eOr" [kp-2])
+    (define-key map "\eOs" [kp-3])
+    (define-key map "\eOt" [kp-4])
+    (define-key map "\eOu" [kp-5])
+    (define-key map "\eOv" [kp-6])
+    (define-key map "\eOw" [kp-7])
+    (define-key map "\eOx" [kp-8])
+    (define-key map "\eOy" [kp-9])
+
+    ;; These keys are available in xterm starting from version 216
+    ;; if the modifyOtherKeys resource is set to 1.
+
+    (define-key map "\e[27;5;9~"   [C-tab])
+    (define-key map "\e[27;5;13~"  [C-return])
+    (define-key map "\e[27;5;39~"  [?\C-\'])
+    (define-key map "\e[27;5;44~"  [?\C-,])
+    (define-key map "\e[27;5;45~"  [?\C--])
+    (define-key map "\e[27;5;46~"  [?\C-.])
+    (define-key map "\e[27;5;47~"  [?\C-/])
+    (define-key map "\e[27;5;48~"  [?\C-0])
+    (define-key map "\e[27;5;49~"  [?\C-1])
+    ;; Not all C-DIGIT keys have a distinct binding.
+    (define-key map "\e[27;5;57~"  [?\C-9])
+    (define-key map "\e[27;5;59~"  [?\C-\;])
+    (define-key map "\e[27;5;61~"  [?\C-=])
+    (define-key map "\e[27;5;92~"  [?\C-\\])
+
+    (define-key map "\e[27;6;33~"  [?\C-!])
+    (define-key map "\e[27;6;34~"  [?\C-\"])
+    (define-key map "\e[27;6;35~"  [?\C-#])
+    (define-key map "\e[27;6;36~"  [?\C-$])
+    (define-key map "\e[27;6;37~"  [?\C-%])
+    (define-key map "\e[27;6;38~"  [?\C-&])
+    (define-key map "\e[27;6;40~"  [?\C-(])
+    (define-key map "\e[27;6;41~"  [?\C-)])
+    (define-key map "\e[27;6;42~"  [?\C-*])
+    (define-key map "\e[27;6;43~"  [?\C-+])
+    (define-key map "\e[27;6;58~"  [?\C-:])
+    (define-key map "\e[27;6;60~"  [?\C-<])
+    (define-key map "\e[27;6;62~"  [?\C->])
+    (define-key map "\e[27;6;63~"  [(control ??)])
+
+    ;; These are the strings emitted for various C-M- combinations
+    ;; for keyboards that the Meta and Alt modifiers are on the same
+    ;; key (usually labeled "Alt").
+    (define-key map "\e[27;13;9~"  [C-M-tab])
+    (define-key map "\e[27;13;13~" [C-M-return])
+
+    (define-key map "\e[27;13;39~" [?\C-\M-\'])
+    (define-key map "\e[27;13;44~" [?\C-\M-,])
+    (define-key map "\e[27;13;45~" [?\C-\M--])
+    (define-key map "\e[27;13;46~" [?\C-\M-.])
+    (define-key map "\e[27;13;47~" [?\C-\M-/])
+    (define-key map "\e[27;13;48~" [?\C-\M-0])
+    (define-key map "\e[27;13;49~" [?\C-\M-1])
+    (define-key map "\e[27;13;50~" [?\C-\M-2])
+    (define-key map "\e[27;13;51~" [?\C-\M-3])
+    (define-key map "\e[27;13;52~" [?\C-\M-4])
+    (define-key map "\e[27;13;53~" [?\C-\M-5])
+    (define-key map "\e[27;13;54~" [?\C-\M-6])
+    (define-key map "\e[27;13;55~" [?\C-\M-7])
+    (define-key map "\e[27;13;56~" [?\C-\M-8])
+    (define-key map "\e[27;13;57~" [?\C-\M-9])
+    (define-key map "\e[27;13;59~" [?\C-\M-\;])
+    (define-key map "\e[27;13;61~" [?\C-\M-=])
+    (define-key map "\e[27;13;92~" [?\C-\M-\\])
+
+    (define-key map "\e[27;14;33~"  [?\C-\M-!])
+    (define-key map "\e[27;14;34~"  [?\C-\M-\"])
+    (define-key map "\e[27;14;35~"  [?\C-\M-#])
+    (define-key map "\e[27;14;36~"  [?\C-\M-$])
+    (define-key map "\e[27;14;37~"  [?\C-\M-%])
+    (define-key map "\e[27;14;38~"  [?\C-\M-&])
+    (define-key map "\e[27;14;40~"  [?\C-\M-\(])
+    (define-key map "\e[27;14;41~"  [?\C-\M-\)])
+    (define-key map "\e[27;14;42~"  [?\C-\M-*])
+    (define-key map "\e[27;14;43~"  [?\C-\M-+])
+    (define-key map "\e[27;14;58~"  [?\C-\M-:])
+    (define-key map "\e[27;14;60~"  [?\C-\M-<])
+    (define-key map "\e[27;14;62~"  [?\C-\M->])
+    (define-key map "\e[27;14;63~"  [(control meta ??)])
+
+    (define-key map "\e[27;7;9~"  [C-M-tab])
+    (define-key map "\e[27;7;13~" [C-M-return])
+
+    (define-key map "\e[27;7;32~" [?\C-\M-\s])
+    (define-key map "\e[27;7;39~" [?\C-\M-\'])
+    (define-key map "\e[27;7;44~" [?\C-\M-,])
+    (define-key map "\e[27;7;45~" [?\C-\M--])
+    (define-key map "\e[27;7;46~" [?\C-\M-.])
+    (define-key map "\e[27;7;47~" [?\C-\M-/])
+    (define-key map "\e[27;7;48~" [?\C-\M-0])
+    (define-key map "\e[27;7;49~" [?\C-\M-1])
+    (define-key map "\e[27;7;50~" [?\C-\M-2])
+    (define-key map "\e[27;7;51~" [?\C-\M-3])
+    (define-key map "\e[27;7;52~" [?\C-\M-4])
+    (define-key map "\e[27;7;53~" [?\C-\M-5])
+    (define-key map "\e[27;7;54~" [?\C-\M-6])
+    (define-key map "\e[27;7;55~" [?\C-\M-7])
+    (define-key map "\e[27;7;56~" [?\C-\M-8])
+    (define-key map "\e[27;7;57~" [?\C-\M-9])
+    (define-key map "\e[27;7;59~" [?\C-\M-\;])
+    (define-key map "\e[27;7;61~" [?\C-\M-=])
+    (define-key map "\e[27;7;92~" [?\C-\M-\\])
+
+    (define-key map "\e[27;8;33~"  [?\C-\M-!])
+    (define-key map "\e[27;8;34~"  [?\C-\M-\"])
+    (define-key map "\e[27;8;35~"  [?\C-\M-#])
+    (define-key map "\e[27;8;36~"  [?\C-\M-$])
+    (define-key map "\e[27;8;37~"  [?\C-\M-%])
+    (define-key map "\e[27;8;38~"  [?\C-\M-&])
+    (define-key map "\e[27;8;40~"  [?\C-\M-\(])
+    (define-key map "\e[27;8;41~"  [?\C-\M-\)])
+    (define-key map "\e[27;8;42~"  [?\C-\M-*])
+    (define-key map "\e[27;8;43~"  [?\C-\M-+])
+    (define-key map "\e[27;8;58~"  [?\C-\M-:])
+    (define-key map "\e[27;8;60~"  [?\C-\M-<])
+    (define-key map "\e[27;8;62~"  [?\C-\M->])
+    (define-key map "\e[27;8;63~"  [(control meta ??)])
+
+    (define-key map "\e[27;2;9~"   [S-tab])
+    (define-key map "\e[27;2;13~"  [S-return])
+
+    (define-key map "\e[27;6;9~"   [C-S-tab])
+    (define-key map "\e[27;6;13~"  [C-S-return])
+
+    ;; Other versions of xterm might emit these.
+    (define-key map "\e[A" [up])
+    (define-key map "\e[B" [down])
+    (define-key map "\e[C" [right])
+    (define-key map "\e[D" [left])
+    (define-key map "\e[1~" [home])
+
+    (define-key map "\eO2A" [S-up])
+    (define-key map "\eO2B" [S-down])
+    (define-key map "\eO2C" [S-right])
+    (define-key map "\eO2D" [S-left])
+    (define-key map "\eO2F" [S-end])
+    (define-key map "\eO2H" [S-home])
+
+    (define-key map "\eO5A" [C-up])
+    (define-key map "\eO5B" [C-down])
+    (define-key map "\eO5C" [C-right])
+    (define-key map "\eO5D" [C-left])
+    (define-key map "\eO5F" [C-end])
+    (define-key map "\eO5H" [C-home])
+
+    (define-key map "\e[11~" [f1])
+    (define-key map "\e[12~" [f2])
+    (define-key map "\e[13~" [f3])
+    (define-key map "\e[14~" [f4])
+    map)
+  "Function key map overrides for xterm.")
+
+(defvar xterm-alternatives-map
+  (let ((map (make-sparse-keymap)))
+    ;; The terminal initialization C code file might have initialized
+    ;; function keys F13->F60 from the termcap/terminfo information.
+    ;; On a PC-style keyboard these keys correspond to
+    ;; MODIFIER-FUNCTION_KEY, where modifier is S-, C, A-, C-S-.  The code
+    ;; here substitutes the corresponding definitions in function-key-map.
+    ;; The mapping from escape sequences to Fn is done in input-decode-map
+    ;; whereas this here mapping is done in local-function-key-map so that
+    ;; bindings to f45 still work, in case your keyboard really has an f45
+    ;; key rather than C-S-f9.
+    (define-key map [f13] [S-f1])
+    (define-key map [f14] [S-f2])
+    (define-key map [f15] [S-f3])
+    (define-key map [f16] [S-f4])
+    (define-key map [f17] [S-f5])
+    (define-key map [f18] [S-f6])
+    (define-key map [f19] [S-f7])
+    (define-key map [f20] [S-f8])
+    (define-key map [f21] [S-f9])
+    (define-key map [f22] [S-f10])
+    (define-key map [f23] [S-f11])
+    (define-key map [f24] [S-f12])
+
+    (define-key map [f25] [C-f1])
+    (define-key map [f26] [C-f2])
+    (define-key map [f27] [C-f3])
+    (define-key map [f28] [C-f4])
+    (define-key map [f29] [C-f5])
+    (define-key map [f30] [C-f6])
+    (define-key map [f31] [C-f7])
+    (define-key map [f32] [C-f8])
+    (define-key map [f33] [C-f9])
+    (define-key map [f34] [C-f10])
+    (define-key map [f35] [C-f11])
+    (define-key map [f36] [C-f12])
+
+    (define-key map [f37] [C-S-f1])
+    (define-key map [f38] [C-S-f2])
+    (define-key map [f39] [C-S-f3])
+    (define-key map [f40] [C-S-f4])
+    (define-key map [f41] [C-S-f5])
+    (define-key map [f42] [C-S-f6])
+    (define-key map [f43] [C-S-f7])
+    (define-key map [f44] [C-S-f8])
+    (define-key map [f45] [C-S-f9])
+    (define-key map [f46] [C-S-f10])
+    (define-key map [f47] [C-S-f11])
+    (define-key map [f48] [C-S-f12])
+
+    (define-key map [f49] [M-f1])
+    (define-key map [f50] [M-f2])
+    (define-key map [f51] [M-f3])
+    (define-key map [f52] [M-f4])
+    (define-key map [f53] [M-f5])
+    (define-key map [f54] [M-f6])
+    (define-key map [f55] [M-f7])
+    (define-key map [f56] [M-f8])
+    (define-key map [f57] [M-f9])
+    (define-key map [f58] [M-f10])
+    (define-key map [f59] [M-f11])
+    (define-key map [f60] [M-f12])
+
+    map)
+  "Keymap of possible alternative meanings for some keys.")
+
+;; List of terminals for which modify-other-keys has been turned on.
+(defvar xterm-modify-other-keys-terminal-list nil)
+
 (defun terminal-init-xterm ()
   "Terminal initialization function for xterm."
   ;; rxvt terminals sometimes set the TERM variable to "xterm", but
-  ;; rxvt's keybindings that are incompatible with xterm's. It is
+  ;; rxvt's keybindings are incompatible with xterm's. It is
   ;; better in that case to use rxvt's initializion function.
-  (if (and (getenv "COLORTERM")
-          (string-match "\\`rxvt" (getenv "COLORTERM")))
-      (progn 
-       (eval-and-compile (load "term/rxvt"))
-       (terminal-init-rxvt))
-
-    ;; The terminal intialization C code file might have initialized
-    ;; function keys F13->F60 from the termcap/terminfo information.  On
-    ;; a PC-style keyboard these keys correspond to
-    ;; MODIFIER-FUNCTION_KEY, where modifier is S-, C, A-, C-S-.  The
-    ;; code here subsitutes the corresponding defintions in
-    ;; function-key-map. This substitution is needed because if a key
-    ;; definition is found in function-key-map, there are no further
-    ;; lookups in other keymaps.
-    (substitute-key-definition [f13] [S-f1] function-key-map)
-    (substitute-key-definition [f14] [S-f2] function-key-map)
-    (substitute-key-definition [f15] [S-f3] function-key-map)
-    (substitute-key-definition [f16] [S-f4] function-key-map)
-    (substitute-key-definition [f17] [S-f5] function-key-map)
-    (substitute-key-definition [f18] [S-f6] function-key-map)
-    (substitute-key-definition [f19] [S-f7] function-key-map)
-    (substitute-key-definition [f20] [S-f8] function-key-map)
-    (substitute-key-definition [f21] [S-f9] function-key-map)
-    (substitute-key-definition [f22] [S-f10] function-key-map)
-    (substitute-key-definition [f23] [S-f11] function-key-map)
-    (substitute-key-definition [f24] [S-f12] function-key-map)
-
-    (substitute-key-definition [f25] [C-f1] function-key-map)
-    (substitute-key-definition [f26] [C-f2] function-key-map)
-    (substitute-key-definition [f27] [C-f3] function-key-map)
-    (substitute-key-definition [f28] [C-f4] function-key-map)
-    (substitute-key-definition [f29] [C-f5] function-key-map)
-    (substitute-key-definition [f30] [C-f6] function-key-map)
-    (substitute-key-definition [f31] [C-f7] function-key-map)
-    (substitute-key-definition [f32] [C-f8] function-key-map)
-    (substitute-key-definition [f33] [C-f9] function-key-map)
-    (substitute-key-definition [f34] [C-f10] function-key-map)
-    (substitute-key-definition [f35] [C-f11] function-key-map)
-    (substitute-key-definition [f36] [C-f12] function-key-map)
-
-    (substitute-key-definition [f37] [C-S-f1] function-key-map)
-    (substitute-key-definition [f38] [C-S-f2] function-key-map)
-    (substitute-key-definition [f39] [C-S-f3] function-key-map)
-    (substitute-key-definition [f40] [C-S-f4] function-key-map)
-    (substitute-key-definition [f41] [C-S-f5] function-key-map)
-    (substitute-key-definition [f42] [C-S-f6] function-key-map)
-    (substitute-key-definition [f43] [C-S-f7] function-key-map)
-    (substitute-key-definition [f44] [C-S-f8] function-key-map)
-    (substitute-key-definition [f45] [C-S-f9] function-key-map)
-    (substitute-key-definition [f46] [C-S-f10] function-key-map)
-    (substitute-key-definition [f47] [C-S-f11] function-key-map)
-    (substitute-key-definition [f48] [C-S-f12] function-key-map)
-
-    (substitute-key-definition [f49] [A-f1] function-key-map)
-    (substitute-key-definition [f50] [A-f2] function-key-map)
-    (substitute-key-definition [f51] [A-f3] function-key-map)
-    (substitute-key-definition [f52] [A-f4] function-key-map)
-    (substitute-key-definition [f53] [A-f5] function-key-map)
-    (substitute-key-definition [f54] [A-f6] function-key-map)
-    (substitute-key-definition [f55] [A-f7] function-key-map)
-    (substitute-key-definition [f56] [A-f8] function-key-map)
-    (substitute-key-definition [f57] [A-f9] function-key-map)
-    (substitute-key-definition [f58] [A-f10] function-key-map)
-    (substitute-key-definition [f59] [A-f11] function-key-map)
-    (substitute-key-definition [f60] [A-f12] function-key-map)
-
-    (let ((map (make-sparse-keymap)))
-      ;; xterm from X.org 6.8.2 uses these key definitions.
-      (define-key map "\eOP" [f1])
-      (define-key map "\eOQ" [f2])
-      (define-key map "\eOR" [f3])
-      (define-key map "\eOS" [f4])
-      (define-key map "\e[15~" [f5])
-      (define-key map "\e[17~" [f6])
-      (define-key map "\e[18~" [f7])
-      (define-key map "\e[19~" [f8])
-      (define-key map "\e[20~" [f9])
-      (define-key map "\e[21~" [f10])
-      (define-key map "\e[23~" [f11])
-      (define-key map "\e[24~" [f12])
-
-      (define-key map "\eO2P" [S-f1])
-      (define-key map "\eO2Q" [S-f2])
-      (define-key map "\eO2R" [S-f3])
-      (define-key map "\eO2S" [S-f4])
-      (define-key map "\e[1;2P" [S-f1])
-      (define-key map "\e[1;2Q" [S-f2])
-      (define-key map "\e[1;2R" [S-f3])
-      (define-key map "\e[1;2S" [S-f4])
-      (define-key map "\e[15;2~" [S-f5])
-      (define-key map "\e[17;2~" [S-f6])
-      (define-key map "\e[18;2~" [S-f7])
-      (define-key map "\e[19;2~" [S-f8])
-      (define-key map "\e[20;2~" [S-f9])
-      (define-key map "\e[21;2~" [S-f10])
-      (define-key map "\e[23;2~" [S-f11])
-      (define-key map "\e[24;2~" [S-f12])
-
-      (define-key map "\eO5P" [C-f1])
-      (define-key map "\eO5Q" [C-f2])
-      (define-key map "\eO5R" [C-f3])
-      (define-key map "\eO5S" [C-f4])
-      (define-key map "\e[15;5~" [C-f5])
-      (define-key map "\e[17;5~" [C-f6])
-      (define-key map "\e[18;5~" [C-f7])
-      (define-key map "\e[19;5~" [C-f8])
-      (define-key map "\e[20;5~" [C-f9])
-      (define-key map "\e[21;5~" [C-f10])
-      (define-key map "\e[23;5~" [C-f11])
-      (define-key map "\e[24;5~" [C-f12])
-
-      (define-key map "\eO6P" [C-S-f1])
-      (define-key map "\eO6Q" [C-S-f2])
-      (define-key map "\eO6R" [C-S-f3])
-      (define-key map "\eO6S" [C-S-f4])
-      (define-key map "\e[15;6~" [C-S-f5])
-      (define-key map "\e[17;6~" [C-S-f6])
-      (define-key map "\e[18;6~" [C-S-f7])
-      (define-key map "\e[19;6~" [C-S-f8])
-      (define-key map "\e[20;6~" [C-S-f9])
-      (define-key map "\e[21;6~" [C-S-f10])
-      (define-key map "\e[23;6~" [C-S-f11])
-      (define-key map "\e[24;6~" [C-S-f12])
-
-      (define-key map "\eO3P" [A-f1])
-      (define-key map "\eO3Q" [A-f2])
-      (define-key map "\eO3R" [A-f3])
-      (define-key map "\eO3S" [A-f4])
-      (define-key map "\e[15;3~" [A-f5])
-      (define-key map "\e[17;3~" [A-f6])
-      (define-key map "\e[18;3~" [A-f7])
-      (define-key map "\e[19;3~" [A-f8])
-      (define-key map "\e[20;3~" [A-f9])
-      (define-key map "\e[21;3~" [A-f10])
-      (define-key map "\e[23;3~" [A-f11])
-      (define-key map "\e[24;3~" [A-f12])
-
-      (define-key map "\eO4P" [M-S-f1])
-      (define-key map "\eO4Q" [M-S-f2])
-      (define-key map "\eO4R" [M-S-f3])
-      (define-key map "\eO4S" [M-S-f4])
-      (define-key map "\e[15;4~" [M-S-f5])
-      (define-key map "\e[17;4~" [M-S-f6])
-      (define-key map "\e[18;4~" [M-S-f7])
-      (define-key map "\e[19;4~" [M-S-f8])
-      (define-key map "\e[20;4~" [M-S-f9])
-      (define-key map "\e[21;4~" [M-S-f10])
-      (define-key map "\e[23;4~" [M-S-f11])
-      (define-key map "\e[24;4~" [M-S-f12])
-
-      (define-key map "\eOA" [up])
-      (define-key map "\eOB" [down])
-      (define-key map "\eOC" [right])
-      (define-key map "\eOD" [left])
-      (define-key map "\eOF" [end])
-      (define-key map "\eOH" [home])
-
-      (define-key map "\e[1;2A" [S-up])
-      (define-key map "\e[1;2B" [S-down])
-      (define-key map "\e[1;2C" [S-right])
-      (define-key map "\e[1;2D" [S-left])
-      (define-key map "\e[1;2F" [S-end])
-      (define-key map "\e[1;2H" [S-home])
-
-      (define-key map "\e[1;4A" [M-S-up])
-      (define-key map "\e[1;4B" [M-S-down])
-      (define-key map "\e[1;4C" [M-S-right])
-      (define-key map "\e[1;4D" [M-S-left])
-      (define-key map "\e[1;4F" [M-S-end])
-      (define-key map "\e[1;4H" [M-S-home])
-
-      (define-key map "\e[1;5A" [C-up])
-      (define-key map "\e[1;5B" [C-down])
-      (define-key map "\e[1;5C" [C-right])
-      (define-key map "\e[1;5D" [C-left])
-      (define-key map "\e[1;5F" [C-end])
-      (define-key map "\e[1;5H" [C-home])
-
-      (define-key map "\e[1;6A" [C-S-up])
-      (define-key map "\e[1;6B" [C-S-down])
-      (define-key map "\e[1;6C" [C-S-right])
-      (define-key map "\e[1;6D" [C-S-left])
-      (define-key map "\e[1;6F" [C-S-end])
-      (define-key map "\e[1;6H" [C-S-home])
-
-      (define-key map "\e[1;7A" [C-M-up])
-      (define-key map "\e[1;7B" [C-M-down])
-      (define-key map "\e[1;7C" [C-M-right])
-      (define-key map "\e[1;7D" [C-M-left])
-      (define-key map "\e[1;7F" [C-M-end])
-      (define-key map "\e[1;7H" [C-M-home])
-
-      (define-key map "\e[1;8A" [C-M-S-up])
-      (define-key map "\e[1;8B" [C-M-S-down])
-      (define-key map "\e[1;8C" [C-M-S-right])
-      (define-key map "\e[1;8D" [C-M-S-left])
-      (define-key map "\e[1;8F" [C-M-S-end])
-      (define-key map "\e[1;8H" [C-M-S-home])
-
-      (define-key map "\e[1;3A" [A-up])
-      (define-key map "\e[1;3B" [A-down])
-      (define-key map "\e[1;3C" [A-right])
-      (define-key map "\e[1;3D" [A-left])
-      (define-key map "\e[1;3F" [A-end])
-      (define-key map "\e[1;3H" [A-home])
-
-      (define-key map "\e[2~" [insert])
-      (define-key map "\e[3~" [delete])
-      (define-key map "\e[5~" [prior])
-      (define-key map "\e[6~" [next])
-
-      (define-key map "\e[2;2~" [S-insert])
-      (define-key map "\e[3;2~" [S-delete])
-      (define-key map "\e[5;2~" [S-prior])
-      (define-key map "\e[6;2~" [S-next])
-
-      (define-key map "\e[2;4~" [M-S-insert])
-      (define-key map "\e[3;4~" [M-S-delete])
-      (define-key map "\e[5;4~" [M-S-prior])
-      (define-key map "\e[6;4~" [M-S-next])
-
-      (define-key map "\e[2;5~" [C-insert])
-      (define-key map "\e[3;5~" [C-delete])
-      (define-key map "\e[5;5~" [C-prior])
-      (define-key map "\e[6;5~" [C-next])
-
-      (define-key map "\e[2;6~" [C-S-insert])
-      (define-key map "\e[3;6~" [C-S-delete])
-      (define-key map "\e[5;6~" [C-S-prior])
-      (define-key map "\e[6;6~" [C-S-next])
-
-      (define-key map "\e[2;7~" [C-M-insert])
-      (define-key map "\e[3;7~" [C-M-delete])
-      (define-key map "\e[5;7~" [C-M-prior])
-      (define-key map "\e[6;7~" [C-M-next])
-
-      (define-key map "\e[2;8~" [C-M-S-insert])
-      (define-key map "\e[3;8~" [C-M-S-delete])
-      (define-key map "\e[5;8~" [C-M-S-prior])
-      (define-key map "\e[6;8~" [C-M-S-next])
-
-      (define-key map "\e[2;3~" [A-insert])
-      (define-key map "\e[3;3~" [A-delete])
-      (define-key map "\e[5;3~" [A-prior])
-      (define-key map "\e[6;3~" [A-next])
-
-      (define-key map "\e[4~" [select])
-      (define-key map "\e[29~" [print])
-
-      (define-key map "\eOj" [kp-multiply])
-      (define-key map "\eOk" [kp-add])
-      (define-key map "\eOl" [kp-separator])
-      (define-key map "\eOm" [kp-subtract])
-      (define-key map "\eOo" [kp-divide])
-      (define-key map "\eOp" [kp-0])
-      (define-key map "\eOq" [kp-1])
-      (define-key map "\eOr" [kp-2])
-      (define-key map "\eOs" [kp-3])
-      (define-key map "\eOt" [kp-4])
-      (define-key map "\eOu" [kp-5])
-      (define-key map "\eOv" [kp-6])
-      (define-key map "\eOw" [kp-7])
-      (define-key map "\eOx" [kp-8])
-      (define-key map "\eOy" [kp-9])
-
-      ;; These keys are available in xterm starting from version 216
-      ;; if the modifyOtherKeys resource is set to 1.
-
-      (define-key map "\e[27;5;9~"   [C-tab])
-      (define-key map "\e[27;5;13~"  [C-return])
-      (define-key map "\e[27;5;39~"  [?\C-\'])
-      (define-key map "\e[27;5;44~"  [?\C-,])
-      (define-key map "\e[27;5;45~"  [?\C--])
-      (define-key map "\e[27;5;46~"  [?\C-.])
-      (define-key map "\e[27;5;47~"  [?\C-/])
-      (define-key map "\e[27;5;48~"  [?\C-0])
-      (define-key map "\e[27;5;49~"  [?\C-1])
-      ;; Not all C-DIGIT keys have a distinct binding.
-      (define-key map "\e[27;5;57~"  [?\C-9])
-      (define-key map "\e[27;5;59~"  [?\C-\;])
-      (define-key map "\e[27;5;61~"  [?\C-=])
-      (define-key map "\e[27;5;92~"  [?\C-\\])
-
-      (define-key map "\e[27;6;33~"  [?\C-!])
-      (define-key map "\e[27;6;34~"  [?\C-\"])
-      (define-key map "\e[27;6;35~"  [?\C-#])
-      (define-key map "\e[27;6;36~"  [?\C-$])
-      (define-key map "\e[27;6;37~"  [?\C-%])
-      (define-key map "\e[27;6;38~"  [?\C-&])
-      (define-key map "\e[27;6;40~"  [?\C-\(])
-      (define-key map "\e[27;6;41~"  [?\C-\)])
-      (define-key map "\e[27;6;42~"  [?\C-*])
-      (define-key map "\e[27;6;43~"  [?\C-+])
-      (define-key map "\e[27;6;58~"  [?\C-:])
-      (define-key map "\e[27;6;60~"  [?\C-<])
-      (define-key map "\e[27;6;62~"  [?\C->])
-      (define-key map "\e[27;6;63~"  [(control ??)])
-
-      ;; These are the strings emitted for various C-M- combinations
-      ;; for keyboards that the Meta and Alt modifiers are on the same
-      ;; key (usually labeled "Alt").
-      (define-key map "\e[27;13;9~"  [C-M-tab])
-      (define-key map "\e[27;13;13~" [C-M-return])
-
-      (define-key map "\e[27;13;39~" [?\C-\M-\'])
-      (define-key map "\e[27;13;44~" [?\C-\M-,])
-      (define-key map "\e[27;13;45~" [?\C-\M--])
-      (define-key map "\e[27;13;46~" [?\C-\M-.])
-      (define-key map "\e[27;13;47~" [?\C-\M-/])
-      (define-key map "\e[27;13;48~" [?\C-\M-0])
-      (define-key map "\e[27;13;49~" [?\C-\M-1])
-      (define-key map "\e[27;13;50~" [?\C-\M-2])
-      (define-key map "\e[27;13;51~" [?\C-\M-3])
-      (define-key map "\e[27;13;52~" [?\C-\M-4])
-      (define-key map "\e[27;13;53~" [?\C-\M-5])
-      (define-key map "\e[27;13;54~" [?\C-\M-6])
-      (define-key map "\e[27;13;55~" [?\C-\M-7])
-      (define-key map "\e[27;13;56~" [?\C-\M-8])
-      (define-key map "\e[27;13;57~" [?\C-\M-9])
-      (define-key map "\e[27;13;59~" [?\C-\M-\;])
-      (define-key map "\e[27;13;61~" [?\C-\M-=])
-      (define-key map "\e[27;13;92~" [?\C-\M-\\])
-
-      (define-key map "\e[27;14;33~"  [?\C-\M-!])
-      (define-key map "\e[27;14;34~"  [?\C-\M-\"])
-      (define-key map "\e[27;14;35~"  [?\C-\M-#])
-      (define-key map "\e[27;14;36~"  [?\C-\M-$])
-      (define-key map "\e[27;14;37~"  [?\C-\M-%])
-      (define-key map "\e[27;14;38~"  [?\C-\M-&])
-      (define-key map "\e[27;14;40~"  [?\C-\M-\(])
-      (define-key map "\e[27;14;41~"  [?\C-\M-\)])
-      (define-key map "\e[27;14;42~"  [?\C-\M-*])
-      (define-key map "\e[27;14;43~"  [?\C-\M-+])
-      (define-key map "\e[27;14;58~"  [?\C-\M-:])
-      (define-key map "\e[27;14;60~"  [?\C-\M-<])
-      (define-key map "\e[27;14;62~"  [?\C-\M->])
-      (define-key map "\e[27;14;63~"  [(control meta ??)])
-
-      (define-key map "\e[27;7;9~"  [C-M-tab])
-      (define-key map "\e[27;7;13~" [C-M-return])
-
-      (define-key map "\e[27;7;32~" [?\C-\M-\s])
-      (define-key map "\e[27;7;39~" [?\C-\M-\'])
-      (define-key map "\e[27;7;44~" [?\C-\M-,])
-      (define-key map "\e[27;7;45~" [?\C-\M--])
-      (define-key map "\e[27;7;46~" [?\C-\M-.])
-      (define-key map "\e[27;7;47~" [?\C-\M-/])
-      (define-key map "\e[27;7;48~" [?\C-\M-0])
-      (define-key map "\e[27;7;49~" [?\C-\M-1])
-      (define-key map "\e[27;7;50~" [?\C-\M-2])
-      (define-key map "\e[27;7;51~" [?\C-\M-3])
-      (define-key map "\e[27;7;52~" [?\C-\M-4])
-      (define-key map "\e[27;7;53~" [?\C-\M-5])
-      (define-key map "\e[27;7;54~" [?\C-\M-6])
-      (define-key map "\e[27;7;55~" [?\C-\M-7])
-      (define-key map "\e[27;7;56~" [?\C-\M-8])
-      (define-key map "\e[27;7;57~" [?\C-\M-9])
-      (define-key map "\e[27;7;59~" [?\C-\M-\;])
-      (define-key map "\e[27;7;61~" [?\C-\M-=])
-      (define-key map "\e[27;7;92~" [?\C-\M-\\])
-
-      (define-key map "\e[27;8;33~"  [?\C-\M-!])
-      (define-key map "\e[27;8;34~"  [?\C-\M-\"])
-      (define-key map "\e[27;8;35~"  [?\C-\M-#])
-      (define-key map "\e[27;8;36~"  [?\C-\M-$])
-      (define-key map "\e[27;8;37~"  [?\C-\M-%])
-      (define-key map "\e[27;8;38~"  [?\C-\M-&])
-      (define-key map "\e[27;8;40~"  [?\C-\M-\(])
-      (define-key map "\e[27;8;41~"  [?\C-\M-\)])
-      (define-key map "\e[27;8;42~"  [?\C-\M-*])
-      (define-key map "\e[27;8;43~"  [?\C-\M-+])
-      (define-key map "\e[27;8;58~"  [?\C-\M-:])
-      (define-key map "\e[27;8;60~"  [?\C-\M-<])
-      (define-key map "\e[27;8;62~"  [?\C-\M->])
-      (define-key map "\e[27;8;63~"  [(control meta ??)])
-
-      (define-key map "\e[27;2;9~"   [S-tab])
-      (define-key map "\e[27;2;13~"  [S-return])
-
-      (define-key map "\e[27;6;9~"   [C-S-tab])
-      (define-key map "\e[27;6;13~"  [C-S-return])
-
-      ;; Other versions of xterm might emit these.
-      (define-key map "\e[A" [up])
-      (define-key map "\e[B" [down])
-      (define-key map "\e[C" [right])
-      (define-key map "\e[D" [left])
-      (define-key map "\e[1~" [home])
-
-      (define-key map "\eO2A" [S-up])
-      (define-key map "\eO2B" [S-down])
-      (define-key map "\eO2C" [S-right])
-      (define-key map "\eO2D" [S-left])
-      (define-key map "\eO2F" [S-end])
-      (define-key map "\eO2H" [S-home])
-
-      (define-key map "\eO5A" [C-up])
-      (define-key map "\eO5B" [C-down])
-      (define-key map "\eO5C" [C-right])
-      (define-key map "\eO5D" [C-left])
-      (define-key map "\eO5F" [C-end])
-      (define-key map "\eO5H" [C-home])
-
-      (define-key map "\e[11~" [f1])
-      (define-key map "\e[12~" [f2])
-      (define-key map "\e[13~" [f3])
-      (define-key map "\e[14~" [f4])
+  (if (and (getenv "COLORTERM" (selected-frame))
+          (string-match "\\`rxvt" (getenv "COLORTERM" (selected-frame))))
+      (tty-run-terminal-initialization (selected-frame) "rxvt")
+
+    (let ((map (copy-keymap xterm-alternatives-map)))
+      (set-keymap-parent map (keymap-parent local-function-key-map))
+      (set-keymap-parent local-function-key-map map))
+
+    (let ((map (copy-keymap xterm-function-map)))
 
       ;; Use inheritance to let the main keymap override those defaults.
       ;; This way we don't override terminfo-derived settings or settings
       ;; made in the .emacs file.
-      (set-keymap-parent map (keymap-parent function-key-map))
-      (set-keymap-parent function-key-map map))
+      (set-keymap-parent map (keymap-parent input-decode-map))
+      (set-keymap-parent input-decode-map map)))
 
-    ;; Do it!
     (xterm-register-default-colors)
     ;; This recomputes all the default faces given the colors we've just set up.
-    (tty-set-up-initial-frame-faces)))
+    (tty-set-up-initial-frame-faces)
+    
+    (when xterm-mouse-mode
+      (turn-on-xterm-mouse-tracking-on-terminal 
+       (frame-terminal (selected-frame))))
+    
+    ;; Try to turn on the modifyOtherKeys feature on modern xterms.
+    ;; When it is turned on much more key bindings work: things like
+    ;; C-. C-, etc.
+    ;; To do that we need to find out if the current terminal supports
+    ;; modifyOtherKeys. At this time only xterm does.
+    (let ((coding-system-for-read 'binary)
+         (chr nil)
+         (str nil))
+      ;; Try to find out the type of terminal by sending a "Secondary
+      ;; Device Attributes (DA)" query.
+      (send-string-to-terminal "\e[>0c")
+
+      ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
+      (when (equal (read-event nil nil 0.1) ?\e)
+       (when (equal (read-event nil nil 0.1) ?\[)
+         (while (not (equal (setq chr (read-event nil nil 0.1)) ?c))
+           (setq str (concat str (string chr))))
+         (when (string-match ">0;\\([0-9]+\\);0" str)
+           ;; NUMBER2 is the xterm version number, look for something
+           ;; greater than 216, the version when modifyOtherKeys was
+           ;; introduced.
+           (when (>= (string-to-number
+                      (substring str (match-beginning 1) (match-end 1))) 216)
+             ;; Make sure that the modifyOtherKeys state is restored when
+             ;; suspending, resuming and exiting.
+             (add-hook 'suspend-hook 'xterm-turn-off-modify-other-keys)
+             (add-hook 'suspend-resume-hook 'xterm-turn-on-modify-other-keys)
+             (add-hook 'kill-emacs-hook 'xterm-remove-modify-other-keys)
+             (add-hook 'delete-frame-hook 'xterm-remove-modify-other-keys)
+             ;; Add the selected frame to the list of frames that
+             ;; need to deal with modify-other-keys.
+             (push (frame-terminal (selected-frame))
+                   xterm-modify-other-keys-terminal-list)
+             (xterm-turn-on-modify-other-keys)))))))
 
 ;; Set up colors, for those versions of xterm that support it.
 (defvar xterm-standard-colors
@@ -486,7 +543,7 @@ for the currently selected frame.  The first 16 colors are taken from
 `xterm-standard-colors', which see, while the rest are computed assuming
 either the 88- or 256-color standard color scheme supported by latest
 versions of xterm."
-  (let* ((ncolors (display-color-cells))
+  (let* ((ncolors (display-color-cells (selected-frame)))
         (colors xterm-standard-colors)
         (color (car colors)))
     (if (> ncolors 0)
@@ -567,5 +624,29 @@ versions of xterm."
     ;; right colors, so clear them.
     (clear-face-cache)))
 
+(defun xterm-turn-on-modify-other-keys ()
+  "Turn on the modifyOtherKeys feature of xterm."
+  (let ((frame (selected-frame)))
+    (when (and (frame-live-p frame)
+              (memq frame xterm-modify-other-keys-terminal-list))
+      (send-string-to-terminal "\e[>4;1m"))))
+
+(defun xterm-turn-off-modify-other-keys (&optional frame)
+  "Turn off the modifyOtherKeys feature of xterm."
+  (setq frame (and frame (selected-frame)))
+  (when (and (frame-live-p frame)
+            (memq frame xterm-modify-other-keys-terminal-list))
+    (send-string-to-terminal "\e[>4m")))
+
+(defun xterm-remove-modify-other-keys (&optional frame)
+  "Turn off the modifyOtherKeys feature of xterm and remove frame from consideration."
+  (setq frame (and frame (selected-frame)))
+  (when (and (frame-live-p frame)
+            (memq frame xterm-modify-other-keys-terminal-list))
+    (setq xterm-modify-other-keys-terminal-list
+         (delq (frame-terminal frame)
+               xterm-modify-other-keys-terminal-list))
+    (send-string-to-terminal "\e[>4m")))
+
 ;; arch-tag: 12e7ebdd-1e6c-4b25-b0f9-35ace25e855a
 ;;; xterm.el ends here
index 274de28e6a05a95867bd946d1b70ae742463c442..bc0434e151ac9c360fdd0b9e98d3e52e16ec7efc 100644 (file)
@@ -1562,7 +1562,7 @@ The returned value is suitable for the `x-popup-menu' function."
 (defun artist-mt-get-symbol-from-keyword-sub (table kwd)
   "Search TABLE for keyword KWD and return its symbol."
   (catch 'found
-    (mapcar
+    (mapc
      (lambda (element)
        (let ((element-tag (artist-mt-get-tag element)))
         (cond ((eq element-tag 'graphics-operation)
@@ -1611,7 +1611,7 @@ info-variant-part."
 Calls RETRIEVE-FN to retrieve information from that symbol's
 info-variant-part."
   (catch 'found
-    (mapcar
+    (mapc
      (lambda (element)
        (let ((element-tag (artist-mt-get-tag element)))
         (cond ((eq element-tag 'graphics-operation)
@@ -1700,7 +1700,7 @@ otherwise the shifted symbol."
 If IS-SHIFTED is non-nil, return the shifted symbol,
 otherwise the shifted symbol."
   (catch 'found
-    (mapcar
+    (mapc
      (lambda (element)
        (let ((element-tag (artist-mt-get-tag element)))
         (cond ((eq element-tag 'graphics-operation)
@@ -1737,7 +1737,7 @@ info-variant-part."
 Calls RETRIEVE-FN to retrieve information from that symbol's
 info-variant-part."
   (catch 'found
-    (mapcar
+    (mapc
      (lambda (element)
        (let ((element-tag (artist-mt-get-tag element)))
         (cond ((eq element-tag 'function-call)
@@ -3160,7 +3160,7 @@ Do this by replacing the characters that forms the line with
 `artist-erase-char'.  Output is a list of endpoints for lines
 through X1, Y1. An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y)."
   (let ((endpoints (artist-vap-find-endpoints x1 y1)))
-    (mapcar
+    (mapc
      (lambda (endpoints)
        (let ((ep1 (car endpoints))
             (ep2 (car (cdr endpoints))))
@@ -3213,14 +3213,14 @@ through X1, Y1. An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y)."
 (defun artist-vaporize-lines (x1 y1)
   "Vaporize lines reachable from point X1, Y1."
   (let ((ep-stack nil))
-    (mapcar
+    (mapc
      (lambda (ep) (push ep ep-stack))
      (artist-vap-find-endpoints x1 y1))
     (while (not (null ep-stack))
       (let* ((vaporize-point (pop ep-stack))
             (new-endpoints (artist-vaporize-line (car vaporize-point)
                                                  (cdr vaporize-point))))
-       (mapcar
+       (mapc
         (lambda (endpoint) (push endpoint ep-stack))
         new-endpoints)))))
 
@@ -3340,7 +3340,7 @@ The POINT-LIST is expected to cover the first quadrant."
 
     ;; Create first half (the lower one (since y grows downwards)) from
     ;; the first quadrant.
-    (mapcar
+    (mapc
      (lambda (coord)
        (let* ((x         (artist-coord-get-x coord))
              (y         (artist-coord-get-y coord))
@@ -3359,7 +3359,7 @@ The POINT-LIST is expected to cover the first quadrant."
     ;; Create the other half by mirroring the first half.
     (setq both-halves
          (append first-half
-                 (mapcar
+                 (mapc
                   (lambda (i)
                     (artist-new-fill-item (artist-fill-item-get-x i)
                                           (- (artist-fill-item-get-y i))
@@ -5361,7 +5361,7 @@ The event, EV, is the mouse event."
                    artist-arrow-point-1
                    artist-arrow-point-2)))
        ;; Remove those variables from vars that are not bound
-       (mapcar
+       (mapc
         (function
          (lambda (x)
            (if (not (and (boundp x) (symbol-value x)))
index 99c2f92cab0abda9a752aed94f72c86caeb0b349..ee1a4f7d6593a28911d46ba6a655dff1a2c4b20a 100644 (file)
@@ -95,7 +95,8 @@
 
 (defcustom bibtex-style-indent-basic 2
   "Basic amount of indentation to use in BibTeX Style mode."
-  :type 'integer)
+  :type 'integer
+  :group 'bibtex)
 
 (defun bibtex-style-calculate-indentation (&optional virt)
   (or
index 639bdd6ccde2c545c88b3e8337c7945ff27df493..6d2d8ae22d9ef2e48388dc3e721a6adff9fdbdda 100644 (file)
@@ -34,7 +34,7 @@
 ;;  Major mode for editing and validating BibTeX files.
 
 ;;  Usage:
-;;  See documentation for function bibtex-mode or type "\M-x describe-mode"
+;;  See documentation for `bibtex-mode' or type "M-x describe-mode"
 ;;  when you are in BibTeX mode.
 
 ;;  Todo:
@@ -112,6 +112,7 @@ required-fields     Signal an error if a required field is missing.
 numerical-fields    Delete delimiters around numeral fields.
 page-dashes         Change double dashes in page field to single dash
                       (for scribe compatibility).
+whitespace          Delete whitespace at the beginning and end of fields.
 inherit-booktitle   If entry contains a crossref field and the booktitle
                       field is empty, set the booktitle field to the content
                       of the title field of the crossreferenced entry.
@@ -123,6 +124,10 @@ last-comma          Add or delete comma on end of last field in entry,
 delimiters          Change delimiters according to variables
                       `bibtex-field-delimiters' and `bibtex-entry-delimiters'.
 unify-case          Change case of entry and field names.
+braces              Enclose parts of field entries by braces according to
+                      `bibtex-field-braces-alist'.
+strings             Replace parts of field entries by string constants
+                      according to `bibtex-field-strings-alist'.
 
 The value t means do all of the above formatting actions.
 The value nil means do no formatting at all."
@@ -134,11 +139,35 @@ The value nil means do no formatting at all."
                       (const required-fields)
                       (const numerical-fields)
                       (const page-dashes)
+                      (const whitespace)
                       (const inherit-booktitle)
                       (const realign)
                       (const last-comma)
                       (const delimiters)
-                      (const unify-case))))
+                      (const unify-case)
+                      (const braces)
+                      (const strings))))
+
+(defcustom bibtex-field-braces-alist nil
+ "Alist of field regexps that \\[bibtex-clean-entry] encloses by braces.
+Each element has the form (FIELDS REGEXP), where FIELDS is a list
+of BibTeX field names and REGEXP is a regexp.
+Whitespace in REGEXP will be replaced by \"[ \\t\\n]+\"."
+  :group 'bibtex
+  :type '(repeat (list (repeat (string :tag "field name"))
+                       (choice (regexp :tag "regexp")
+                               (sexp :tag "sexp")))))
+
+(defcustom bibtex-field-strings-alist nil
+ "Alist of regexps that \\[bibtex-clean-entry] replaces by string constants.
+Each element has the form (FIELDS REGEXP TO-STR), where FIELDS is a list
+of BibTeX field names.  In FIELDS search for REGEXP, which are replaced
+by the BibTeX string constant TO-STR.
+Whitespace in REGEXP will be replaced by \"[ \\t\\n]+\"."
+  :group 'bibtex
+  :type '(repeat (list (repeat (string :tag "field name"))
+                       (regexp :tag "From regexp")
+                       (regexp :tag "To string constant"))))
 
 (defcustom bibtex-clean-entry-hook nil
   "List of functions to call when entry has been cleaned.
@@ -899,6 +928,17 @@ The following is a complex example, see http://link.aps.org/linkfaq.html.
                                       (function :tag "Filter"))))))))
 (put 'bibtex-generate-url-list 'risky-local-variable t)
 
+(defcustom bibtex-cite-matcher-alist
+  '(("\\\\cite[ \t\n]*{\\([^}]+\\)}" . 1))
+  "Alist of rules to identify cited keys in a BibTeX entry.
+Each rule should be of the form (REGEXP . SUBEXP), where SUBEXP
+specifies which parenthesized expression in REGEXP is a cited key.
+Case is significant.
+Used by `bibtex-find-crossref' and for font-locking."
+  :group 'bibtex
+  :type '(repeat (cons (regexp :tag "Regexp")
+                       (integer :tag "Number"))))
+
 (defcustom bibtex-expand-strings nil
   "If non-nil, expand strings when extracting the content of a BibTeX field."
   :group 'bibtex
@@ -1070,6 +1110,17 @@ The following is a complex example, see http://link.aps.org/linkfaq.html.
 \f
 ;; Internal Variables
 
+(defvar bibtex-field-braces-opt nil
+  "Optimized value of `bibtex-field-braces-alist'.
+Created by `bibtex-field-re-init'.
+It is a an alist with elements (FIELD . REGEXP).")
+
+(defvar bibtex-field-strings-opt nil
+  "Optimized value of `bibtex-field-strings-alist'.
+Created by `bibtex-field-re-init'.
+It is a an alist with elements (FIELD RULE1 RULE2 ...),
+where each RULE is (REGEXP . TO-STR).")
+
 (defvar bibtex-pop-previous-search-point nil
   "Next point where `bibtex-pop-previous' starts looking for a similar entry.")
 
@@ -1215,7 +1266,11 @@ The CDRs of the elements are t for header keys and nil for crossref keys.")
     (,(concat "^[ \t]*\\(" bibtex-field-name "\\)[ \t]*=")
      1 font-lock-variable-name-face)
     ;; url
-    (bibtex-font-lock-url) (bibtex-font-lock-crossref))
+    (bibtex-font-lock-url) (bibtex-font-lock-crossref)
+    ;; cite
+    ,@(mapcar (lambda (matcher)
+                `((lambda (bound) (bibtex-font-lock-cite ',matcher bound))))
+              bibtex-cite-matcher-alist))
   "*Default expressions to highlight in BibTeX mode.")
 
 (defvar bibtex-font-lock-url-regexp
@@ -1223,7 +1278,7 @@ The CDRs of the elements are t for header keys and nil for crossref keys.")
   (concat "^[ \t]*"
           (regexp-opt (delete-dups (mapcar 'caar bibtex-generate-url-list)) t)
           "[ \t]*=[ \t]*")
-  "Regexp for `bibtex-font-lock-url'.")
+  "Regexp for `bibtex-font-lock-url' derived from `bibtex-generate-url-list'.")
 
 (defvar bibtex-string-empty-key nil
   "If non-nil, `bibtex-parse-string' accepts empty key.")
@@ -1553,7 +1608,7 @@ If EMPTY-KEY is non-nil, key may be empty.  Do not move point."
         bounds))))
 
 (defun bibtex-reference-key-in-string (bounds)
-  "Return the key part of a BibTeX string defined via BOUNDS"
+  "Return the key part of a BibTeX string defined via BOUNDS."
   (buffer-substring-no-properties (nth 1 (car bounds))
                                   (nth 2 (car bounds))))
 
@@ -1626,8 +1681,8 @@ of the entry, see regexp `bibtex-entry-head'."
                    (if (save-excursion
                          (goto-char (match-end bibtex-type-in-head))
                          (looking-at "[ \t]*("))
-                       ",?[ \t\n]*)" ;; entry opened with `('
-                     ",?[ \t\n]*}")) ;; entry opened with `{'
+                       ",?[ \t\n]*)" ; entry opened with `('
+                     ",?[ \t\n]*}")) ; entry opened with `{'
                   bounds)
               (skip-chars-forward " \t\n")
               ;; loop over all BibTeX fields
@@ -1736,7 +1791,7 @@ If FLAG is nil, a message is echoed if point was incremented at least
                  (< (point) pnt))
         (goto-char (match-beginning bibtex-type-in-head))
         (if (pos-visible-in-window-p (point))
-            (sit-for 1)
+            (sit-for blink-matching-delay)
           (message "%s%s" prompt (buffer-substring-no-properties
                                   (point) (match-end bibtex-key-in-head))))))))
 
@@ -1801,21 +1856,19 @@ Optional arg BEG is beginning of entry."
   "Reinsert the Nth stretch of killed BibTeX text (field or entry).
 Optional arg COMMA is as in `bibtex-enclosing-field'."
   (unless bibtex-last-kill-command (error "BibTeX kill ring is empty"))
-  (let ((fun (lambda (kryp kr) ;; adapted from `current-kill'
+  (let ((fun (lambda (kryp kr) ; adapted from `current-kill'
                (car (set kryp (nthcdr (mod (- n (length (eval kryp)))
                                            (length kr)) kr))))))
     (if (eq bibtex-last-kill-command 'field)
         (progn
           ;; insert past the current field
           (goto-char (bibtex-end-of-field (bibtex-enclosing-field comma)))
-          (set-mark (point))
-          (message "Mark set")
+          (push-mark)
           (bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer
                                       bibtex-field-kill-ring) t nil t))
       ;; insert past the current entry
       (bibtex-skip-to-valid-entry)
-      (set-mark (point))
-      (message "Mark set")
+      (push-mark)
       (insert (funcall fun 'bibtex-entry-kill-ring-yank-pointer
                        bibtex-entry-kill-ring)))))
 
@@ -1835,6 +1888,15 @@ Formats current entry according to variable `bibtex-entry-format'."
             crossref-key bounds alternatives-there non-empty-alternative
             entry-list req-field-list field-list)
 
+        ;; Initialize `bibtex-field-braces-opt' and `bibtex-field-strings-opt'
+        ;; if necessary.
+        (unless bibtex-field-braces-opt
+          (setq bibtex-field-braces-opt
+                (bibtex-field-re-init bibtex-field-braces-alist 'braces)))
+        (unless bibtex-field-strings-opt
+          (setq bibtex-field-strings-opt
+                (bibtex-field-re-init bibtex-field-strings-alist 'strings)))
+
         ;; identify entry type
         (goto-char (point-min))
         (or (re-search-forward bibtex-entry-type nil t)
@@ -1904,7 +1966,7 @@ Formats current entry according to variable `bibtex-entry-format'."
                  deleted)
 
             ;; We have more elegant high-level functions for several
-            ;; tasks done by bibtex-format-entry.  However, they contain
+            ;; tasks done by `bibtex-format-entry'.  However, they contain
             ;; quite some redundancy compared with what we need to do
             ;; anyway.  So for speed-up we avoid using them.
 
@@ -1957,6 +2019,59 @@ Formats current entry according to variable `bibtex-entry-format'."
                                "\\([\"{][0-9]+\\)[ \t\n]*--?[ \t\n]*\\([0-9]+[\"}]\\)")))
                   (replace-match "\\1-\\2"))
 
+              ;; remove whitespace at beginning and end of field
+              (when (memq 'whitespace format)
+                (goto-char beg-text)
+                (if (looking-at "\\([{\"]\\)[ \t\n]+")
+                    (replace-match "\\1"))
+                (goto-char end-text)
+                (if (looking-back "[ \t\n]+\\([}\"]\\)" beg-text t)
+                    (replace-match "\\1")))
+
+              ;; enclose field text by braces according to
+              ;; `bibtex-field-braces-alist'.
+              (let (case-fold-search temp) ; Case-sensitive search
+                (when (and (memq 'braces format)
+                           (setq temp (cdr (assoc-string field-name
+                                                         bibtex-field-braces-opt t))))
+                  (goto-char beg-text)
+                  (while (re-search-forward temp end-text t)
+                    (let ((beg (match-beginning 0))
+                          (bounds (bibtex-find-text-internal nil t)))
+                      (unless (or (nth 4 bounds) ; string constant
+                                  ;; match already surrounded by braces
+                                  ;; (braces are inside field delimiters)
+                                  (and (< (point) (1- (nth 2 bounds)))
+                                       (< (1+ (nth 1 bounds)) beg)
+                                       (looking-at "}")
+                                       (save-excursion (goto-char (1- beg))
+                                                       (looking-at "{"))))
+                        (insert "}")
+                        (goto-char beg)
+                        (insert "{")))))
+
+                ;; replace field text by BibTeX string constants according to
+                ;; `bibtex-field-strings-alist'.
+                (when (and (memq 'strings format)
+                           (setq temp (cdr (assoc-string field-name
+                                                         bibtex-field-strings-opt t))))
+                  (goto-char beg-text)
+                  (dolist (re temp)
+                    (while (re-search-forward (car re) end-text t)
+                      (let ((bounds (save-match-data
+                                      (bibtex-find-text-internal nil t))))
+                        (unless (nth 4 bounds)
+                          ;; if match not at right subfield boundary...
+                          (if (< (match-end 0) (1- (nth 2 bounds)))
+                              (insert " # " (bibtex-field-left-delimiter))
+                            (delete-char 1))
+                          (replace-match (cdr re))
+                          (goto-char (match-beginning 0))
+                          ;; if match not at left subfield boundary...
+                          (if (< (1+ (nth 1 bounds)) (match-beginning 0))
+                              (insert (bibtex-field-right-delimiter) " # ")
+                            (delete-backward-char 1))))))))
+
               ;; use book title of crossref'd entry
               (if (and (memq 'inherit-booktitle format)
                        empty-field
@@ -2047,6 +2162,31 @@ Formats current entry according to variable `bibtex-entry-format'."
         (if (memq 'realign format)
             (bibtex-fill-entry))))))
 
+(defun bibtex-field-re-init (regexp-alist type)
+  "Calculate optimized value for bibtex-regexp-TYPE-opt.
+This value is based on bibtex-regexp-TYPE-alist.  TYPE is 'braces or 'strings.
+Return optimized value to be used by `bibtex-format-entry'."
+  (setq regexp-alist
+        (mapcar (lambda (e)
+                  (list (car e)
+                        (replace-regexp-in-string "[ \t\n]+" "[ \t\n]+" (nth 1 e))
+                        (nth 2 e))) ; nil for 'braces'.
+                regexp-alist))
+  (let (opt-list)
+    ;; Loop over field names
+    (dolist (field (delete-dups (apply 'append (mapcar 'car regexp-alist))))
+      (let (rules)
+        ;; Collect all matches we have for this field name
+        (dolist (e regexp-alist)
+          (if (assoc-string field (car e) t)
+              (push (cons (nth 1 e) (nth 2 e)) rules)))
+        (if (eq type 'braces)
+            ;; concatenate all regexps to a single regexp
+            (setq rules (concat "\\(?:" (mapconcat 'car rules "\\|") "\\)")))
+        ;; create list of replacement rules.
+        (push (cons field rules) opt-list)))
+    opt-list))
+
 \f
 (defun bibtex-autokey-abbrev (string len)
   "Return an abbreviation of STRING with at least LEN characters.
@@ -2099,7 +2239,7 @@ and `bibtex-autokey-names-stretch'."
                     (<= (length name-list)
                         (+ bibtex-autokey-names
                            bibtex-autokey-names-stretch)))
-          ;; Take bibtex-autokey-names elements from beginning of name-list
+          ;; Take `bibtex-autokey-names' elements from beginning of name-list
           (setq name-list (nreverse (nthcdr (- (length name-list)
                                                bibtex-autokey-names)
                                             (nreverse name-list)))
@@ -2161,7 +2301,7 @@ Return the result as a string"
         (setq word (match-string 0 titlestring)
               titlestring (substring titlestring (match-end 0)))
         ;; Ignore words matched by one of the elements of
-        ;; bibtex-autokey-titleword-ignore
+        ;; `bibtex-autokey-titleword-ignore'
         (unless (let ((lst bibtex-autokey-titleword-ignore))
                   (while (and lst
                               (not (string-match (concat "\\`\\(?:" (car lst)
@@ -2173,9 +2313,9 @@ Return the result as a string"
                   (<= counter bibtex-autokey-titlewords))
               (push word titlewords)
             (push word titlewords-extra))))
-      ;; Obey bibtex-autokey-titlewords-stretch:
+      ;; Obey `bibtex-autokey-titlewords-stretch':
       ;; If by now we have processed all words in titlestring, we include
-      ;; titlewords-extra in titlewords. Otherwise, we ignore titlewords-extra.
+      ;; titlewords-extra in titlewords.  Otherwise, we ignore titlewords-extra.
       (unless (string-match "\\b\\w+" titlestring)
         (setq titlewords (append titlewords-extra titlewords)))
       (mapconcat 'bibtex-autokey-demangle-title (nreverse titlewords)
@@ -2343,7 +2483,7 @@ for parsing BibTeX keys.  If parsing fails, try to set this variable to nil."
                              (push (cons key t) ref-keys)))))))
 
             (let (;; ignore @String entries because they are handled
-                  ;; separately by bibtex-parse-strings
+                  ;; separately by `bibtex-parse-strings'
                   (bibtex-sort-ignore-string-entries t)
                   bounds)
               (bibtex-map-entries
@@ -2399,7 +2539,7 @@ Return alist of strings if parsing was completed, `aborted' otherwise."
           (setq bibtex-strings strings))))))
 
 (defun bibtex-strings ()
-  "Return `bibtex-strings'. Initialize this variable if necessary."
+  "Return `bibtex-strings'.  Initialize this variable if necessary."
   (if (listp bibtex-strings) bibtex-strings
     (bibtex-parse-strings (bibtex-string-files-init))))
 
@@ -2456,10 +2596,10 @@ Parsing initializes `bibtex-reference-keys' and `bibtex-strings'."
                           bibtex-buffer-last-parsed-tick)))
             (save-restriction
               (widen)
-              ;; Output no progress messages in bibtex-parse-keys
-              ;; because when in y-or-n-p that can hide the question.
+              ;; Output no progress messages in `bibtex-parse-keys'
+              ;; because when in `y-or-n-p' that can hide the question.
               (if (and (listp (bibtex-parse-keys t))
-                       ;; update bibtex-strings
+                       ;; update `bibtex-strings'
                        (listp (bibtex-parse-strings strings-init t)))
 
                   ;; remember that parsing was successful
@@ -2519,28 +2659,35 @@ already set."
 COMPLETIONS is an alist of strings.  If point is not after the part
 of a word, all strings are listed.  Return completion."
   ;; Return value is used by cleanup functions.
+  ;; Code inspired by `lisp-complete-symbol'.
   (let* ((case-fold-search t)
          (beg (save-excursion
                 (re-search-backward "[ \t{\"]")
                 (forward-char)
                 (point)))
          (end (point))
-         (part-of-word (buffer-substring-no-properties beg end))
-         (completion (try-completion part-of-word completions)))
+         (pattern (buffer-substring-no-properties beg end))
+         (completion (try-completion pattern completions)))
     (cond ((not completion)
-           (error "Can't find completion for `%s'" part-of-word))
+           (error "Can't find completion for `%s'" pattern))
           ((eq completion t)
-           part-of-word)
-          ((not (string= part-of-word completion))
+           pattern)
+          ((not (string= pattern completion))
            (delete-region beg end)
            (insert completion)
+           ;; Don't leave around a completions buffer that's out of date.
+           (let ((win (get-buffer-window "*Completions*" 0)))
+             (if win (with-selected-window win (bury-buffer))))
            completion)
           (t
-           (message "Making completion list...")
-           (with-output-to-temp-buffer "*Completions*"
-             (display-completion-list (all-completions part-of-word completions)
-                                     part-of-word))
-           (message "Making completion list...done")
+           (let ((minibuf-is-in-use
+                  (eq (minibuffer-window) (selected-window))))
+             (unless minibuf-is-in-use (message "Making completion list..."))
+             (with-output-to-temp-buffer "*Completions*"
+               (display-completion-list
+                (sort (all-completions pattern completions) 'string<) pattern))
+             (unless minibuf-is-in-use
+               (message "Making completion list...done")))
            nil))))
 
 (defun bibtex-complete-string-cleanup (str compl)
@@ -2562,20 +2709,25 @@ Use `bibtex-summary-function' to generate summary."
              (bibtex-find-entry key t))
         (message "Ref: %s" (funcall bibtex-summary-function)))))
 
-(defun bibtex-copy-summary-as-kill ()
+(defun bibtex-copy-summary-as-kill (&optional arg)
   "Push summery of current BibTeX entry to kill ring.
-Use `bibtex-summary-function' to generate summary."
-  (interactive)
-  (save-excursion
-    (bibtex-beginning-of-entry)
-    (if (looking-at bibtex-entry-maybe-empty-head)
-        (kill-new (message "%s" (funcall bibtex-summary-function)))
-      (error "No entry found"))))
+Use `bibtex-summary-function' to generate summary.
+If prefix ARG is non-nil push BibTeX entry's URL to kill ring
+that is generated by calling `bibtex-url'."
+  (interactive "P")
+  (if arg (let ((url (bibtex-url nil t)))
+            (if url (kill-new (message "%s" url))
+              (message "No URL known")))
+    (save-excursion
+      (bibtex-beginning-of-entry)
+      (if (looking-at bibtex-entry-maybe-empty-head)
+          (kill-new (message "%s" (funcall bibtex-summary-function)))
+        (error "No entry found")))))
 
 (defun bibtex-summary ()
   "Return summary of current BibTeX entry.
 Used as default value of `bibtex-summary-function'."
-  ;; It would be neat to customize this function.  How?
+  ;; It would be neat to make this function customizable.  How?
   (if (looking-at bibtex-entry-maybe-empty-head)
       (let* ((bibtex-autokey-name-case-convert-function 'identity)
              (bibtex-autokey-name-length 'infty)
@@ -2664,16 +2816,17 @@ begins at the beginning of a line.  We use this function for font-locking."
     (unless (looking-at field-reg)
       (re-search-backward field-reg nil t))))
 
-(defun bibtex-font-lock-url (bound)
-  "Font-lock for URLs.  BOUND limits the search."
+(defun bibtex-font-lock-url (bound &optional no-button)
+  "Font-lock for URLs.  BOUND limits the search.
+If NO-BUTTON is non-nil do not generate buttons."
   (let ((case-fold-search t)
         (pnt (point))
-        field bounds start end found)
+        name bounds start end found)
     (bibtex-beginning-of-field)
     (while (and (not found)
                 (<= (point) bound)
                (prog1 (re-search-forward bibtex-font-lock-url-regexp bound t)
-                 (setq field (match-string-no-properties 1)))
+                 (setq name (match-string-no-properties 1)))
                (setq bounds (bibtex-parse-field-text))
                 (progn
                   (setq start (car bounds) end (nth 1 bounds))
@@ -2682,17 +2835,18 @@ begins at the beginning of a line.  We use this function for font-locking."
                       (setq end (1- end)))
                   (if (memq (char-after start) '(?\{ ?\"))
                       (setq start (1+ start)))
-                  (>= bound start)))
-      (let ((lst bibtex-generate-url-list) url)
-        (goto-char start)
-       (while (and (not found)
-                   (setq url (car (pop lst))))
-         (setq found (and (bibtex-string= field (car url))
-                           (re-search-forward (cdr url) end t)
-                           (>= (match-beginning 0) pnt)))))
-      (goto-char end))
-    (if found (bibtex-button (match-beginning 0) (match-end 0)
-                             'bibtex-url (match-beginning 0)))
+                  (if (< start pnt) (setq start (min pnt end)))
+                  (<= start bound)))
+      (if (<= pnt start)
+          (let ((lst bibtex-generate-url-list) url)
+            (while (and (not found) (setq url (car (pop lst))))
+              (goto-char start)
+              (setq found (and (bibtex-string= name (car url))
+                               (re-search-forward (cdr url) end t))))))
+      (unless found (goto-char end)))
+    (if (and found (not no-button))
+        (bibtex-button (match-beginning 0) (match-end 0)
+                       'bibtex-url (match-beginning 0)))
     found))
 
 (defun bibtex-font-lock-crossref (bound)
@@ -2713,6 +2867,19 @@ begins at the beginning of a line.  We use this function for font-locking."
                              start t))
     found))
 
+(defun bibtex-font-lock-cite (matcher bound)
+  "Font-lock for cited keys.
+MATCHER identifies the cited key, see `bibtex-cite-matcher-alist'.
+BOUND limits the search."
+  (let (case-fold-search)
+    (if (re-search-forward (car matcher) bound t)
+        (let ((start (match-beginning (cdr matcher)))
+              (end (match-end (cdr matcher))))
+          (bibtex-button start end 'bibtex-find-crossref
+                         (buffer-substring-no-properties start end)
+                         start t t)
+          t))))
+
 (defun bibtex-button-action (button)
   "Call BUTTON's BibTeX function."
   (apply (button-get button 'bibtex-function)
@@ -2831,7 +2998,7 @@ if that value is non-nil.
         (list (list nil bibtex-entry-head bibtex-key-in-head))
         imenu-case-fold-search t)
   (make-local-variable 'choose-completion-string-functions)
-  ;; XEmacs needs easy-menu-add, Emacs does not care
+  ;; XEmacs needs `easy-menu-add', Emacs does not care
   (easy-menu-add bibtex-edit-menu)
   (easy-menu-add bibtex-entry-menu)
   (run-mode-hooks 'bibtex-mode-hook))
@@ -3125,7 +3292,7 @@ Return the new location of point."
            (goto-char (bibtex-end-of-string bounds)))
           ((looking-at bibtex-any-valid-entry-type)
            ;; Parsing of entry failed
-           (error "Syntactically incorrect BibTeX entry starts here."))
+           (error "Syntactically incorrect BibTeX entry starts here"))
           (t (if (interactive-p) (message "Not on a known BibTeX entry."))
              (goto-char pnt)))
     (point)))
@@ -3163,7 +3330,7 @@ Otherwise display the beginning of entry."
 (defun bibtex-mark-entry ()
   "Put mark at beginning, point at end of current BibTeX entry."
   (interactive)
-  (set-mark (bibtex-beginning-of-entry))
+  (push-mark (bibtex-beginning-of-entry))
   (bibtex-end-of-entry))
 
 (defun bibtex-count-entries (&optional count-string-entries)
@@ -3227,6 +3394,7 @@ of the head of the entry found.  Return nil if no entry found."
             (list key nil entry-name))))))
 
 (defun bibtex-init-sort-entry-class-alist ()
+  "Initialize `bibtex-sort-entry-class-alist' (buffer-local)."
   (unless (local-variable-p 'bibtex-sort-entry-class-alist)
     (set (make-local-variable 'bibtex-sort-entry-class-alist)
          (let ((i -1) alist)
@@ -3283,27 +3451,49 @@ are ignored."
              nil                           ; ENDKEY function
              'bibtex-lessp))               ; PREDICATE
 
-(defun bibtex-find-crossref (crossref-key &optional pnt split)
+(defun bibtex-find-crossref (crossref-key &optional pnt split noerror)
   "Move point to the beginning of BibTeX entry CROSSREF-KEY.
 If `bibtex-files' is non-nil, search all these files.
 Otherwise the search is limited to the current buffer.
 Return position of entry if CROSSREF-KEY is found or nil otherwise.
 If CROSSREF-KEY is in the same buffer like current entry but before it
-an error is signaled.  Optional arg PNT is the position of the referencing
-entry. It defaults to position of point.  If optional arg SPLIT is non-nil,
-split window so that both the referencing and the crossrefed entry are
-displayed.
-If called interactively, CROSSREF-KEY defaults to crossref key of current
-entry and SPLIT is t."
+an error is signaled.  If NOERRER is non-nil this error is suppressed.
+Optional arg PNT is the position of the referencing entry.  It defaults
+to position of point.  If optional arg SPLIT is non-nil, split window
+so that both the referencing and the crossrefed entry are displayed.
+
+If called interactively, CROSSREF-KEY defaults to either the crossref key
+of current entry or a key matched by `bibtex-cite-matcher-alist',
+whatever is nearer to the position of point.  SPLIT is t.  NOERROR is nil
+for a crossref key, t otherwise."
   (interactive
-   (let ((crossref-key
-          (save-excursion
-            (bibtex-beginning-of-entry)
-            (let ((bounds (bibtex-search-forward-field "crossref" t)))
-              (if bounds
-                  (bibtex-text-in-field-bounds bounds t))))))
-     (list (bibtex-read-key "Find crossref key: " crossref-key t)
-           (point) t)))
+   (save-excursion
+     (let* ((pnt (point))
+            (_ (bibtex-beginning-of-entry))
+            (end (cdr (bibtex-valid-entry t)))
+            (_ (unless end (error "Not inside valid entry")))
+            (beg (match-end 0)) ; set by `bibtex-valid-entry'
+            (bounds (bibtex-search-forward-field "crossref" end))
+            case-fold-search best temp crossref-key)
+       (if bounds
+           (setq crossref-key (bibtex-text-in-field-bounds bounds t)
+                 best (cons (bibtex-dist pnt (bibtex-end-of-field bounds)
+                                         (bibtex-start-of-field bounds))
+                            crossref-key)))
+       (dolist (matcher bibtex-cite-matcher-alist)
+         (goto-char beg)
+         (while (re-search-forward (car matcher) end t)
+           (setq temp (bibtex-dist pnt (match-end (cdr matcher))
+                                   (match-beginning (cdr matcher))))
+           ;; Accept the key closest to the position of point.
+           (if (or (not best) (< temp (car best)))
+               (setq best (cons temp (match-string-no-properties
+                                      (cdr matcher)))))))
+       (goto-char pnt)
+       (setq temp (bibtex-read-key "Find crossref key: " (cdr best) t))
+       (list temp (point) t (not (and crossref-key
+                                      (string= temp crossref-key)))))))
+
   (let (buffer pos eqb)
     (save-excursion
       (setq pos (bibtex-find-entry crossref-key t)
@@ -3314,13 +3504,15 @@ entry and SPLIT is t."
           (split ; called (quasi) interactively
            (unless pnt (setq pnt (point)))
            (goto-char pnt)
-           (if eqb (select-window (split-window))
-             (pop-to-buffer buffer))
-           (goto-char pos)
-           (bibtex-reposition-window)
-           (beginning-of-line)
-           (if (and eqb (> pnt pos))
-               (error "The referencing entry must precede the crossrefed entry!")))
+           (if (and eqb (= pos (save-excursion (bibtex-beginning-of-entry))))
+               (message "Key `%s' is current entry" crossref-key)
+             (if eqb (select-window (split-window))
+               (pop-to-buffer buffer))
+             (goto-char pos)
+             (bibtex-reposition-window)
+             (beginning-of-line)
+             (if (and eqb (> pnt pos) (not noerror))
+                 (error "The referencing entry must precede the crossrefed entry!"))))
           ;; `bibtex-find-crossref' is called noninteractively during
           ;; clean-up of an entry.  Then it is not possible to check
           ;; whether the current entry and the crossrefed entry have
@@ -3329,6 +3521,12 @@ entry and SPLIT is t."
           (t (set-buffer buffer) (goto-char pos)))
     pos))
 
+(defun bibtex-dist (pos beg end)
+  "Return distance between POS and region delimited by BEG and END."
+  (cond ((and (<= beg pos) (<= pos end)) 0)
+        ((< pos beg) (- beg pos))
+        (t (- pos end))))
+
 (defun bibtex-find-entry (key &optional global start display)
   "Move point to the beginning of BibTeX entry named KEY.
 Return position of entry if KEY is found or nil if not found.
@@ -3394,7 +3592,7 @@ Return t if preparation was successful or nil if entry KEY already exists."
           ;; if key-exist is non-nil due to the previous cond clause
           ;; then point will be at beginning of entry named key.
           (key-exist)
-          (t             ; bibtex-maintain-sorted-entries is non-nil
+          (t             ; `bibtex-maintain-sorted-entries' is non-nil
            (let* ((case-fold-search t)
                   (left (save-excursion (bibtex-beginning-of-first-entry)))
                   (bounds (save-excursion (goto-char (point-max))
@@ -3576,7 +3774,7 @@ Return t if test was successful, nil otherwise."
             (delete-region (point-min) (point-max))
             (insert "BibTeX mode command `bibtex-validate'\n"
                     (if syntax-error
-                        "Maybe undetected errors due to syntax errors. Correct and validate again.\n"
+                        "Maybe undetected errors due to syntax errors.  Correct and validate again.\n"
                       "\n"))
             (dolist (err error-list)
               (insert (format "%s:%d: %s\n" file (car err) (cdr err))))
@@ -3737,7 +3935,7 @@ Optional arg COMMA is as in `bibtex-enclosing-field'."
                        end-text (or (match-end bibtex-key-in-head)
                                (match-end 0))
                        end end-text
-                       no-sub t) ;; subfields do not make sense
+                       no-sub t) ; subfields do not make sense
                (setq failure t)))
             (t (setq failure t)))
       (when (and subfield (not failure))
@@ -3926,8 +4124,8 @@ begin on separate lines prior to calling `bibtex-clean-entry' or if
 Don't call `bibtex-clean-entry' on @Preamble entries.
 At end of the cleaning process, the functions in
 `bibtex-clean-entry-hook' are called with region narrowed to entry."
-  ;; Opt. arg called-by-reformat is t if bibtex-clean-entry
-  ;; is called by bibtex-reformat
+  ;; Opt. arg CALLED-BY-REFORMAT is t if `bibtex-clean-entry'
+  ;; is called by `bibtex-reformat'
   (interactive "P")
   (let ((case-fold-search t)
         (start (bibtex-beginning-of-entry))
@@ -3946,7 +4144,7 @@ At end of the cleaning process, the functions in
     ;; set key
     (when (or new-key (not key))
       (setq key (bibtex-generate-autokey))
-      ;; Sometimes bibtex-generate-autokey returns an empty string
+      ;; Sometimes `bibtex-generate-autokey' returns an empty string
       (if (or bibtex-autokey-edit-before-use (string= "" key))
           (setq key (if (eq entry-type 'string)
                         (bibtex-read-string-key key)
@@ -4027,7 +4225,7 @@ If optional arg MOVE is non-nil move point to end of field."
     (if (not justify)
         (goto-char (bibtex-start-of-text-in-field bounds))
       (goto-char (bibtex-start-of-field bounds))
-      (forward-char) ;; leading comma
+      (forward-char) ; leading comma
       (bibtex-delete-whitespace)
       (open-line 1)
       (forward-char)
@@ -4045,7 +4243,7 @@ If optional arg MOVE is non-nil move point to end of field."
       (if bibtex-align-at-equal-sign
           (insert " ")
         (indent-to-column bibtex-text-indentation)))
-    ;; Paragraphs within fields are not preserved. Bother?
+    ;; Paragraphs within fields are not preserved.  Bother?
     (fill-region-as-paragraph (line-beginning-position) end-field
                               default-justification nil (point))
     (if move (goto-char end-field))))
@@ -4130,15 +4328,19 @@ If mark is active reformat entries in region, if not in whole buffer."
                                    (,(concat (if bibtex-comma-after-last-field "Insert" "Remove")
                                              " comma at end of entry? ") . 'last-comma)
                                    ("Replace double page dashes by single ones? " . 'page-dashes)
+                                   ("Delete whitespace at the beginning and end of fields? " . 'whitespace)
                                    ("Inherit booktitle? " . 'inherit-booktitle)
                                    ("Force delimiters? " . 'delimiters)
-                                   ("Unify case of entry types and field names? " . 'unify-case))))))
+                                   ("Unify case of entry types and field names? " . 'unify-case)
+                                   ("Enclose parts of field entries by braces? " . 'braces)
+                                   ("Replace parts of field entries by string constants? " . 'strings))))))
                 ;; Do not include required-fields because `bibtex-reformat'
                 ;; cannot handle the error messages of `bibtex-format-entry'.
                 ;; Use `bibtex-validate' to check for required fields.
                 ((eq t bibtex-entry-format)
                  '(realign opts-or-alts numerical-fields delimiters
-                           last-comma page-dashes unify-case inherit-booktitle))
+                           last-comma page-dashes unify-case inherit-booktitle
+                           whitespace braces strings))
                 (t
                  (remove 'required-fields (push 'realign bibtex-entry-format)))))
          (reformat-reference-keys
@@ -4178,7 +4380,7 @@ entries from minibuffer."
   (message "Starting to validate buffer...")
   (sit-for 1 nil t)
   (bibtex-realign)
-  (deactivate-mark)  ; So bibtex-validate works on the whole buffer.
+  (deactivate-mark)  ; So `bibtex-validate' works on the whole buffer.
   (if (not (let (bibtex-maintain-sorted-entries)
              (bibtex-validate)))
       (message "Correct errors and call `bibtex-convert-alien' again")
@@ -4186,7 +4388,7 @@ entries from minibuffer."
     (sit-for 2 nil t)
     (bibtex-reformat read-options)
     (goto-char (point-max))
-    (message "Buffer is now parsable. Please save it.")))
+    (message "Buffer is now parsable.  Please save it.")))
 
 (defun bibtex-complete ()
   "Complete word fragment before point according to context.
@@ -4249,7 +4451,7 @@ An error is signaled if point is outside key or BibTeX field."
            ;;
            ;; If we quit the *Completions* buffer without requesting
            ;; a completion, `choose-completion-string-functions' is still
-           ;; non-nil. Therefore, `choose-completion-string-functions' is
+           ;; non-nil.  Therefore, `choose-completion-string-functions' is
            ;; always set (either to non-nil or nil) when a new completion
            ;; is requested.
            (let (completion-ignore-case)
@@ -4276,7 +4478,7 @@ An error is signaled if point is outside key or BibTeX field."
                       (setq choose-completion-string-functions nil)
                       (choose-completion-string choice buffer base-size)
                       (bibtex-complete-string-cleanup choice ',compl)
-                      t)) ; needed by choose-completion-string-functions
+                      t)) ; needed by `choose-completion-string-functions'
              (bibtex-complete-string-cleanup (bibtex-complete-internal compl)
                                              compl)))
 
@@ -4391,44 +4593,94 @@ An error is signaled if point is outside key or BibTeX field."
   "Browse a URL for the BibTeX entry at point.
 Optional POS is the location of the BibTeX entry.
 The URL is generated using the schemes defined in `bibtex-generate-url-list'
-\(see there\).  Then the URL is passed to `browse-url' unless NO-BROWSE is nil.
+\(see there\).  If multiple schemes match for this entry, or the same scheme
+matches more than once, use the one for which the first step's match is the
+closest to POS.  The URL is passed to `browse-url' unless NO-BROWSE is t.
 Return the URL or nil if none can be generated."
   (interactive)
+  (unless pos (setq pos (point)))
   (save-excursion
-    (if pos (goto-char pos))
+    (goto-char pos)
     (bibtex-beginning-of-entry)
-    ;; Always remove field delimiters
-    (let ((fields-alist (bibtex-parse-entry t))
+    (let ((end (save-excursion (bibtex-end-of-entry)))
+          (fields-alist (save-excursion (bibtex-parse-entry t)))
           ;; Always ignore case,
           (case-fold-search t)
-          (lst bibtex-generate-url-list)
-          field url scheme obj fmt)
-      (while (setq scheme (pop lst))
-        (when (and (setq field (cdr (assoc-string (caar scheme)
-                                                 fields-alist t)))
-                   (string-match (cdar scheme) field))
-          (setq lst nil
-                scheme (cdr scheme)
-                url (if (null scheme) (match-string 0 field)
-                      (if (stringp (car scheme))
-                          (setq fmt (pop scheme)))
-                      (dolist (step scheme)
-                        (setq field (cdr (assoc-string (car step) fields-alist t)))
-                        (if (string-match (nth 1 step) field)
-                            (push (cond ((functionp (nth 2 step))
-                                         (funcall (nth 2 step) field))
-                                        ((numberp (nth 2 step))
-                                         (match-string (nth 2 step) field))
-                                        (t
-                                         (replace-match (nth 2 step) t nil field)))
-                                  obj)
-                          ;; If the scheme is set up correctly,
-                          ;; we should never reach this point
-                          (error "Match failed: %s" field)))
-                      (if fmt (apply 'format fmt (nreverse obj))
-                        (apply 'concat (nreverse obj)))))
-          (if (interactive-p) (message "%s" url))
-          (unless no-browse (browse-url url))))
+          text url scheme obj fmt fl-match step)
+      ;; The return value of `bibtex-parse-entry' (i.e., FIELDS-ALIST)
+      ;; is always used to generate the URL.  However, if the BibTeX
+      ;; entry contains more than one URL, we have multiple matches
+      ;; for the first step defining the generation of the URL.
+      ;; Therefore, we try to initiate the generation of the URL
+      ;; based on the match of `bibtex-font-lock-url' that is the
+      ;; closest to POS.  If that fails (no match found) we try to
+      ;; initiate the generation of the URL based on the properly
+      ;; concatenated CONTENT of the field as returned by
+      ;; `bibtex-text-in-field-bounds'.  The latter approach can
+      ;; differ from the former because `bibtex-font-lock-url' uses
+      ;; the buffer itself.
+      (while (bibtex-font-lock-url end t)
+        (push (list (bibtex-dist pos (match-beginning 0) (match-end 0))
+                    (match-beginning 0)
+                    (buffer-substring-no-properties
+                     (match-beginning 0) (match-end 0)))
+              fl-match)
+        ;; `bibtex-font-lock-url' moves point to end of match.
+        (forward-char))
+      (when fl-match
+        (setq fl-match (car (sort fl-match (lambda (x y) (< (car x) (car y))))))
+        (goto-char (nth 1 fl-match))
+        (bibtex-beginning-of-field) (re-search-backward ",")
+        (let* ((bounds (bibtex-parse-field))
+               (name (bibtex-name-in-field bounds))
+               (content (bibtex-text-in-field-bounds bounds t))
+               (lst bibtex-generate-url-list))
+          ;; This match can fail when CONTENT differs from text in buffer.
+          (when (string-match (regexp-quote (nth 2 fl-match)) content)
+            ;; TEXT is the part of CONTENT that starts with the match
+            ;; of `bibtex-font-lock-url' we are looking for.
+            (setq text (substring content (match-beginning 0)))
+            (while (and (not url) (setq scheme (pop lst)))
+              ;; Verify the match of `bibtex-font-lock-url' by
+              ;; comparing with TEXT.
+              (when (and (bibtex-string= (caar scheme) name)
+                         (string-match (cdar scheme) text))
+                (setq url t scheme (cdr scheme)))))))
+
+      ;; If the match of `bibtex-font-lock-url' was not approved
+      ;; parse FIELDS-ALIST, i.e., the output of `bibtex-parse-entry'.
+      (unless url
+        (let ((lst bibtex-generate-url-list))
+          (while (and (not url) (setq scheme (pop lst)))
+            (when (and (setq text (cdr (assoc-string (caar scheme)
+                                                      fields-alist t)))
+                       (string-match (cdar scheme) text))
+              (setq url t scheme (cdr scheme))))))
+
+      (when url
+        (setq url (if (null scheme) (match-string 0 text)
+                    (if (stringp (car scheme))
+                        (setq fmt (pop scheme)))
+                    (dotimes (i (length scheme))
+                      (setq step (nth i scheme))
+                      ;; The first step shall use TEXT as obtained earlier.
+                      (unless (= i 0)
+                        (setq text (cdr (assoc-string (car step) fields-alist t))))
+                      (if (string-match (nth 1 step) text)
+                          (push (cond ((functionp (nth 2 step))
+                                       (funcall (nth 2 step) text))
+                                      ((numberp (nth 2 step))
+                                       (match-string (nth 2 step) text))
+                                      (t
+                                       (replace-match (nth 2 step) t nil text)))
+                                obj)
+                        ;; If SCHEME is set up correctly,
+                        ;; we should never reach this point
+                        (error "Match failed: %s" text)))
+                    (if fmt (apply 'format fmt (nreverse obj))
+                      (apply 'concat (nreverse obj)))))
+        (if (interactive-p) (message "%s" url))
+        (unless no-browse (browse-url url)))
       (if (and (not url) (interactive-p)) (message "No URL known."))
       url)))
 
index d21559411e755cc065ce54d301e3b11a3e38675e..079c362b5046395aed99224f85d476577db92785 100644 (file)
 
 ;;; Code:
 
+(defgroup css nil
+  "Cascading Style Sheets (CSS) editing mode."
+  :group 'languages)
+
 (defun css-extract-keyword-list (res)
   (with-temp-buffer
     (url-insert-file-contents "http://www.w3.org/TR/REC-CSS2/css2.txt")
 (defcustom css-electric-keys '(?\} ?\;) ;; '()
   "Self inserting keys which should trigger re-indentation."
   :type '(repeat character)
-  :options '((?\} ?\;)))
+  :options '((?\} ?\;))
+  :group 'css)
 
 (defvar css-mode-syntax-table
   (let ((st (make-syntax-table)))
 (defconst css-name-re (concat css-nmchar-re "+"))
 
 (defface css-selector '((t :inherit font-lock-function-name-face))
-  "Face to use for selectors.")
+  "Face to use for selectors."
+  :group 'css)
 (defface css-property '((t :inherit font-lock-variable-name-face))
-  "Face to use for properties.")
+  "Face to use for properties."
+  :group 'css)
 
 (defvar css-font-lock-keywords
   `(("!\\s-*important" . font-lock-builtin-face)
     (map-char-table (lambda (c v)
                       ;; Turn punctuation (code = 1) into symbol (code = 1).
                       (if (eq (car-safe v) 1)
-                          (aset st c (cons 3 (cdr v)))))
+                          (set-char-table-range st c (cons 3 (cdr v)))))
                     st)
     st))
 
 
 (defcustom css-indent-offset 4
   "Basic size of one indentation step."
-  :type 'integer)
+  :type 'integer
+  :group 'css)
 
 (defun css-indent-calculate ()
   (let ((ppss (syntax-ppss))
index 88a4286aad2ae1d45e28c5771cf5ea787d5c777c..2671680542a4a3d356ab087f878dce49cd9cf93a 100644 (file)
@@ -1007,6 +1007,18 @@ space does not end a sentence, so don't break a line there."
          (goto-char end))))
     fill-pfx))
 
+(defun fill-paragraph-or-region (arg)
+  "Fill the active region or current paragraph.
+In Transient Mark mode, when the mark is active, it calls `fill-region'
+on the active region.  Otherwise, it calls `fill-paragraph'."
+  (interactive (progn
+                (barf-if-buffer-read-only)
+                (list (if current-prefix-arg 'full))))
+  (if (and transient-mark-mode mark-active
+          (not (eq (region-beginning) (region-end))))
+      (fill-region (region-beginning) (region-end) arg)
+    (fill-paragraph arg)))
+
 \f
 (defcustom default-justification 'left
   "*Method of justifying text not otherwise specified.
index 63be4f8277f06ed692f7986937b07f855e6165e8..69d8c814f462c238eca3377dd7c083df45d89795 100644 (file)
@@ -67,11 +67,21 @@ Non-nil means use highlight, nil means use minibuffer messages."
 
 (defcustom flyspell-mark-duplications-flag t
   "Non-nil means Flyspell reports a repeated word as an error.
+See `flyspell-mark-duplications-exceptions' to add exceptions to this rule.
 Detection of repeated words is not implemented in
 \"large\" regions; see `flyspell-large-region'."
   :group 'flyspell
   :type 'boolean)
 
+(defcustom flyspell-mark-duplications-exceptions
+  '(("francais" . ("nous" "vous")))
+  "A list of exceptions for duplicated words.
+It should be a list of (LANGUAGE . EXCEPTION-LIST).  LANGUAGE is matched
+against the current dictionary and EXCEPTION-LIST is a list of strings.
+The duplicated word is downcased before it is compared with the exceptions."
+  :group 'flyspell
+  :type '(alist :key-type string :value-type (repeat string)))
+
 (defcustom flyspell-sort-corrections nil
   "Non-nil means, sort the corrections alphabetically before popping them."
   :group 'flyspell
@@ -614,7 +624,7 @@ in your .emacs file.
 ;;*---------------------------------------------------------------------*/
 (defun flyspell-delay-commands ()
   "Install the standard set of Flyspell delayed commands."
-  (mapcar 'flyspell-delay-command flyspell-default-delayed-commands)
+  (mapc 'flyspell-delay-command flyspell-default-delayed-commands)
   (mapcar 'flyspell-delay-command flyspell-delayed-commands))
 
 ;;*---------------------------------------------------------------------*/
@@ -633,7 +643,7 @@ It will be checked only after `flyspell-delay' seconds."
 ;;*---------------------------------------------------------------------*/
 (defun flyspell-deplacement-commands ()
   "Install the standard set of Flyspell deplacement commands."
-  (mapcar 'flyspell-deplacement-command flyspell-default-deplacement-commands)
+  (mapc 'flyspell-deplacement-command flyspell-default-deplacement-commands)
   (mapcar 'flyspell-deplacement-command flyspell-deplacement-commands))
 
 ;;*---------------------------------------------------------------------*/
@@ -1025,6 +1035,13 @@ Mostly we check word delimiters."
                     (and (> start (point-min))
                          (not (memq (char-after (1- start)) '(?\} ?\\)))))
                 flyspell-mark-duplications-flag
+                (not (catch 'exception
+                       (dolist (except flyspell-mark-duplications-exceptions)
+                         (and (string= (or ispell-local-dictionary
+                                           ispell-dictionary)
+                                       (car except))
+                              (member (downcase word) (cdr except))
+                              (throw 'exception t)))))
                 (save-excursion
                   (goto-char start)
                   (let* ((bound
index 3d6a17c5d9334918114efa0577098af8bf5b9d57..0e6605dc131d270ca63fbfc9e3c46f7fda6a6f66 100644 (file)
@@ -1594,8 +1594,12 @@ nil           word is correct or spelling is accepted.
 quit          spell session exited."
 
   (interactive (list ispell-following-word ispell-quietly current-prefix-arg))
-  (if continue
-      (ispell-continue)
+  (cond
+   ((and transient-mark-mode mark-active
+        (not (eq (region-beginning) (region-end))))
+    (ispell-region (region-beginning) (region-end)))
+   (continue (ispell-continue))
+   (t
     (ispell-maybe-find-aspell-dictionaries)
     (ispell-accept-buffer-local-defs)  ; use the correct dictionary
     (let ((cursor-location (point))    ; retain cursor location
@@ -1690,7 +1694,7 @@ quit          spell session exited."
       ;; NB: Cancels ispell-quit incorrectly if called from ispell-region
       (if ispell-quit (setq ispell-quit nil replace 'quit))
       (goto-char cursor-location)      ; return to original location
-      replace)))
+      replace))))
 
 
 (defun ispell-get-word (following &optional extra-otherchars)
@@ -2683,7 +2687,7 @@ Return nil if spell session is quit,
        (rstart (make-marker)))
   (unwind-protect
       (save-excursion
-       (message "Spell checking %s using %s with %s dictionary..."
+       (message "Spell-checking %s using %s with %s dictionary..."
                 (if (and (= reg-start (point-min)) (= reg-end (point-max)))
                     (buffer-name) "region")
                 (file-name-nondirectory ispell-program-name)
@@ -2782,7 +2786,9 @@ Return nil if spell session is quit,
       (if (not recheckp) (set-marker ispell-region-end nil))
       ;; Only save if successful exit.
       (ispell-pdict-save ispell-silently-savep)
-      (message "Spell-checking using %s with %s dictionary done"
+      (message "Spell-checking %s using %s with %s dictionary done"
+              (if (and (= reg-start (point-min)) (= reg-end (point-max)))
+                  (buffer-name) "region")
               (file-name-nondirectory ispell-program-name)
               (or ispell-current-dictionary "default"))))))
 
index 18156071e1cbd2e7476be1ea6d4ce8199f184031..31ec234fddc7ca7f1cddf4f1106ec592c1df6c62 100644 (file)
@@ -66,6 +66,8 @@
     ;; ' used otherwise).
     (modify-syntax-entry ?\" "\"  2" st)
     ;; Comments are delimited by \" and newline.
+    ;; And in groff also \# to newline.
+    (modify-syntax-entry ?# ".  2"  st)
     (modify-syntax-entry ?\\ "\\  1" st)
     (modify-syntax-entry ?\n ">" st)
     st)
@@ -92,7 +94,7 @@
         (mapconcat 'identity
                    '("[f*n]*\\[.+?]" ; some groff extensions
                      "(.."           ; two chars after (
-                     "[^(\"]"        ; single char escape
+                     "[^(\"#]"       ; single char escape
                      ) "\\|")
         "\\)")
    )
@@ -127,7 +129,7 @@ closing requests for requests that are used in matched pairs."
        (concat "[.']\\|" paragraph-separate))
   ;; comment syntax added by mit-erl!gildea 18 Apr 86
   (set (make-local-variable 'comment-start) "\\\" ")
-  (set (make-local-variable 'comment-start-skip) "\\\\\"[ \t]*")
+  (set (make-local-variable 'comment-start-skip) "\\\\[\"#][ \t]*")
   (set (make-local-variable 'comment-column) 24)
   (set (make-local-variable 'comment-indent-function) 'nroff-comment-indent)
   (set (make-local-variable 'imenu-generic-expression) nroff-imenu-expression))
diff --git a/lisp/textmodes/org-export-latex.el b/lisp/textmodes/org-export-latex.el
new file mode 100644 (file)
index 0000000..2cf08b3
--- /dev/null
@@ -0,0 +1,1164 @@
+ ;;; org-export-latex.el --- LaTeX exporter for org-mode
+;;
+;; Copyright (C) 2007 Free Software Foundation, Inc.
+;;
+;; Emacs Lisp Archive Entry
+;; Filename: org-export-latex.el
+;; Version: 5.11
+;; Author: Bastien Guerry <bzg AT altern DOT org>
+;; Maintainer: Bastien Guerry <bzg AT altern DOT org>
+;; Keywords: org, wp, tex
+;; Description: Converts an org-mode buffer into LaTeX
+;; URL: http://www.cognition.ens.fr/~guerry/u/org-export-latex.el
+;;
+;; 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, 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; see the file COPYING. If not, write to the Free Software
+;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
+;;
+;;; Commentary:
+;;
+;; This library implements a LaTeX exporter for org-mode.
+;; 
+;; Put this file into your load-path and the following into your ~/.emacs:
+;;   (require 'org-export-latex)
+;; 
+;; The interactive functions are similar to those of the HTML exporter:
+;; 
+;; M-x `org-export-as-latex'
+;; M-x `org-export-as-latex-batch'
+;; M-x `org-export-as-latex-to-buffer'
+;; M-x `org-export-region-as-latex'
+;; M-x `org-replace-region-by-latex'
+;;
+;;; Code:
+
+(eval-when-compile
+  (require 'cl))
+
+(require 'footnote)
+(require 'org)
+
+;;; Variables:
+(defvar org-latex-options-plist nil)
+(defvar org-latex-todo-keywords-1 nil)
+(defvar org-latex-all-targets-regexp nil)
+(defvar org-latex-add-level 0)
+(defvar org-latex-sectioning-depth 0)
+(defvar org-export-latex-list-beginning-re
+  "^\\([ \t]*\\)\\([-+]\\|[0-9]+\\(?:\\.\\|)\\)\\) *?")
+
+(defvar org-latex-special-string-regexps
+  '(org-ts-regexp
+    org-scheduled-string
+    org-deadline-string
+    org-clock-string)
+  "A list of regexps to convert as special keywords.")
+
+(defvar latexp)    ; dynamically scoped from org.el
+(defvar re-quote)  ; dynamically scoped from org.el
+(defvar commentsp) ; dynamically scoped from org.el
+
+;;; Custom variables:
+(defcustom org-export-latex-sectioning-alist
+  '((1 "\\section{%s}" "\\section*{%s}")
+    (2 "\\subsection{%s}" "\\subsection*{%s}")
+    (3 "\\subsubsection{%s}" "\\subsubsection*{%s}")
+    (4 "\\paragraph{%s}" "\\paragraph*{%s}")
+    (5 "\\subparagraph{%s}" "\\subparagraph*{%s}"))
+  "Alist of LaTeX commands for inserting sections.
+Here is the structure of each cell:
+
+  \(level unnumbered-section numbered-section\)
+
+The %s formatter will be replaced by the title of the section."
+  :group 'org-export-latex
+  :type 'alist)
+
+(defcustom org-export-latex-emphasis-alist
+  '(("*" "\\textbf{%s}" nil)
+    ("/" "\\emph{%s}" nil)
+    ("_" "\\underline{%s}" nil)
+    ("+" "\\texttt{%s}" nil)
+    ("=" "\\texttt{%s}" nil))
+  "Alist of LaTeX expressions to convert emphasis fontifiers.
+Each element of the list is a list of three elements.
+The first element is the character used as a marker for fontification.
+The second element is a formatting string to wrap fontified text with.
+The third element decides whether to protect converted text from other
+conversions."
+  :group 'org-export-latex
+  :type 'alist)
+
+(defcustom org-export-latex-preamble
+  "\\documentclass[11pt,a4paper]{article}
+\\usepackage[utf8]{inputenc}
+\\usepackage[T1]{fontenc}
+\\usepackage{hyperref}"
+  "Preamble to be inserted at the very beginning of the LaTeX export."
+  :group 'org-export-latex
+  :type 'string)
+
+(defcustom org-export-latex-title-command "\\maketitle"
+  "The command used to insert the title just after \\begin{document}.
+If this string contains the formatting specification \"%s\" then
+it will be used as a formatting string, passing the title as an
+argument."
+  :group 'org-export-latex
+  :type 'string)
+
+(defcustom org-export-latex-date-format 
+  "%d %B %Y"
+  "Format string for \\date{...}."
+  :group 'org-export-latex
+  :type 'string)
+
+(defcustom org-export-latex-tables-verbatim nil
+  "When non-nil, export tables as verbatim."
+  :group 'org-export-latex
+  :type 'boolean)
+
+(defcustom org-export-latex-packages-alist nil
+  "Alist of packages to be inserted in the preamble.
+Each cell is of the forma \( option . package \).
+
+For example:
+
+\(setq org-export-latex-packages-alist
+      '((\"french\" \"babel\"))"
+  :group 'org-export-latex
+  :type 'alist)
+
+(defcustom org-export-latex-low-levels 'description
+  "How to convert sections below the current level of sectioning,
+as specified by `org-export-headline-levels' or the value of \"H:\"
+in Org's #+OPTION line.
+
+This can be either nil (skip the sections), 'description (convert
+the sections as descriptive lists) or a string to be used instead
+of \\section{%s}. In this latter case, the %s stands here for the
+inserted headline and is mandatory."
+  :group 'org-export-latex
+  :type '(choice (const :tag "Ignore" nil)
+                (symbol :tag "Convert as descriptive list" description)
+                (string :tag "Use a section string" :value "\\subparagraph{%s}")))
+
+(defcustom org-export-latex-remove-from-headlines
+  '(:todo t :priority t :tags t)
+  "A plist of keywords to remove from headlines.
+Non-nil means remove this keyword type from the headline.
+
+Don't remove the keys, just change their values."
+  :type 'plist
+  :group 'org-export-latex)
+
+(defcustom org-export-latex-image-default-option "width=10em"
+  "Default option for images."
+  :group 'org-export-latex
+  :type '(string))
+
+(defcustom org-export-latex-coding-system nil
+  "Coding system for the exported LaTex file."
+  :group 'org-export-latex
+  :type 'coding-system)
+
+;; FIXME Do we want this one?
+;; (defun org-export-as-latex-and-open (arg) ...)
+
+;;; Autoload functions:
+;;;###autoload
+(defun org-export-as-latex-batch ()
+  "Call `org-export-as-latex', may be used in batch processing as
+emacs  --batch
+       --load=$HOME/lib/emacs/org.el
+       --eval \"(setq org-export-headline-levels 2)\"
+       --visit=MyFile --funcall org-export-as-latex-batch"
+  (org-export-as-latex org-export-headline-levels 'hidden))
+
+;;;###autoload
+(defun org-export-as-latex-to-buffer (arg)
+  "Call `org-exort-as-latex` with output to a temporary buffer.
+No file is created.  The prefix ARG is passed through to `org-export-as-latex'."
+  (interactive "P")
+  (org-export-as-latex arg nil nil "*Org LaTeX Export*")
+  (switch-to-buffer-other-window "*Org LaTeX Export*"))
+
+;;;###autoload
+(defun org-replace-region-by-latex (beg end)
+  "Replace the region from BEG to END with its LaTeX export.
+It assumes the region has `org-mode' syntax, and then convert it to
+LaTeX. This can be used in any buffer. For example, you could
+write an itemized list in `org-mode' syntax in an LaTeX buffer and
+then use this command to convert it."
+  (interactive "r")
+  (let (reg latex buf)
+    (save-window-excursion
+      (if (org-mode-p)
+         (setq latex (org-export-region-as-latex
+                      beg end t 'string))
+       (setq reg (buffer-substring beg end)
+             buf (get-buffer-create "*Org tmp*"))
+       (save-excursion
+         (set-buffer buf)
+         (erase-buffer)
+         (insert reg)
+         (org-mode)
+         (setq latex (org-export-region-as-latex
+                      (point-min) (point-max) t 'string)))
+       (kill-buffer buf)))
+    (delete-region beg end)
+    (insert latex)))
+
+;;;###autoload
+(defun org-export-region-as-latex (beg end &optional body-only buffer)
+  "Convert region from BEG to END in `org-mode' buffer to LaTeX.
+If prefix arg BODY-ONLY is set, omit file header, footer, and table of
+contents, and only produce the region of converted text, useful for
+cut-and-paste operations.
+If BUFFER is a buffer or a string, use/create that buffer as a target
+of the converted LaTeX.  If BUFFER is the symbol `string', return the
+produced LaTeX as a string and leave not buffer behind.  For example,
+a Lisp program could call this function in the following way:
+
+  (setq latex (org-export-region-as-latex beg end t 'string))
+
+When called interactively, the output buffer is selected, and shown
+in a window.  A non-interactive call will only retunr the buffer."
+  (interactive "r\nP")
+  (when (interactive-p)
+    (setq buffer "*Org LaTeX Export*"))
+  (let ((transient-mark-mode t) (zmacs-regions t)
+       rtn)
+    (goto-char end)
+    (set-mark (point)) ;; to activate the region
+    (goto-char beg)
+    (setq rtn (org-export-as-latex
+              nil nil nil
+              buffer body-only))
+    (if (fboundp 'deactivate-mark) (deactivate-mark))
+    (if (and (interactive-p) (bufferp rtn))
+       (switch-to-buffer-other-window rtn)
+      rtn)))
+
+;;;###autoload
+(defun org-export-as-latex (arg &optional hidden ext-plist
+                               to-buffer body-only)
+  "Export current buffer to a LaTeX file."
+  (interactive "P")
+  ;; Make sure we have a file name when we need it.
+  (when (and (not (or to-buffer body-only))
+            (not buffer-file-name))
+    (if (buffer-base-buffer)
+       (org-set-local 'buffer-file-name
+                      (with-current-buffer (buffer-base-buffer)
+                        buffer-file-name))
+      (error "Need a file name to be able to export")))
+
+  (message "Exporting to LaTeX...")
+  (org-update-radio-target-regexp)
+  (org-export-latex-set-initial-vars ext-plist)
+  (let* ((wcf (current-window-configuration))
+        (opt-plist org-latex-options-plist)
+        (filename (concat (file-name-as-directory
+                           (org-export-directory :LaTeX ext-plist))
+                          (file-name-sans-extension
+                           (file-name-nondirectory ;sans-extension
+                            buffer-file-name)) ".tex"))
+        (filename (if (equal (file-truename filename)
+                             (file-truename buffer-file-name))
+                      (concat filename ".tex")
+                    filename))
+        (buffer (if to-buffer
+                    (cond
+                     ((eq to-buffer 'string) (get-buffer-create
+                                              "*Org LaTeX Export*"))
+                     (t (get-buffer-create to-buffer)))
+                  (find-file-noselect filename)))
+        (region-p (org-region-active-p))
+        (odd org-odd-levels-only)
+        (preamble (org-export-latex-make-preamble opt-plist))
+        (skip (plist-get opt-plist :skip-before-1st-heading))
+        (text (plist-get opt-plist :text))
+        (first-lines (if skip "" (org-export-latex-first-lines)))
+        (coding-system (and (boundp 'buffer-file-coding-system)
+                            buffer-file-coding-system))
+        (coding-system-for-write (or org-export-latex-coding-system
+                                     coding-system))
+        (save-buffer-coding-system (or org-export-latex-coding-system
+                                       coding-system))
+         (region (buffer-substring
+                 (if region-p (region-beginning) (point-min))
+                 (if region-p (region-end) (point-max))))
+        (string-for-export
+         (org-cleaned-string-for-export
+          region :emph-multiline t
+                 :for-LaTeX t
+                 :comments nil
+                 :add-text (if (eq to-buffer 'string) nil text)
+                 :skip-before-1st-heading skip
+                 :LaTeX-fragments nil)))
+
+    (set-buffer buffer) 
+    (erase-buffer)
+
+    (and (fboundp 'set-buffer-file-coding-system)
+        (set-buffer-file-coding-system coding-system-for-write))
+
+    ;; insert the preamble and initial document commands
+    (unless (or (eq to-buffer 'string) body-only)
+      (insert preamble))
+
+    ;; insert text found in #+TEXT
+    (when (and text (not (eq to-buffer 'string)))
+      (insert (org-export-latex-content text) "\n\n"))
+
+    ;; insert lines before the first headline
+    (unless (or skip (eq to-buffer 'string))
+      (insert first-lines))
+
+    ;; handle the case where the region does not begin with a section
+    (when region-p
+      (insert (with-temp-buffer
+               (insert string-for-export)
+               (org-export-latex-first-lines))))
+
+    ;; export the content of headlines
+    (org-export-latex-global
+     (with-temp-buffer
+       (insert string-for-export)
+       (goto-char (point-min))
+       (when (re-search-forward "^\\(\\*+\\) " nil t)
+        (let* ((asters (length (match-string 1)))
+               (level (if odd (- asters 2) (- asters 1))))
+          (setq org-latex-add-level
+                (if odd (1- (/ (1+ asters) 2)) (1- asters)))
+          (org-export-latex-parse-global level odd)))))
+
+    ;; finalization
+    (unless body-only (insert "\n\\end{document}"))
+    (or to-buffer (save-buffer))
+    (goto-char (point-min))
+    (message "Exporting to LaTeX...done")
+    (prog1
+       (if (eq to-buffer 'string)
+           (prog1 (buffer-substring (point-min) (point-max))
+             (kill-buffer (current-buffer)))
+         (current-buffer))
+      (set-window-configuration wcf))))
+
+
+;;; Parsing functions:
+(defun org-export-latex-parse-global (level odd)
+  "Parse the current buffer recursively, starting at LEVEL.
+If ODD is non-nil, assume the buffer only contains odd sections.
+Return A list reflecting the document structure."
+  (save-excursion
+    (goto-char (point-min))
+    (let* ((cnt 0) output
+          (depth org-latex-sectioning-depth))
+      (while (re-search-forward
+             (concat "^\\(\\(?:\\*\\)\\{"
+                     (number-to-string (+ (if odd 2 1) level))
+                     "\\}\\) \\(.*\\)$")
+             ;; make sure that there is no upper heading
+             (when (> level 0)
+               (save-excursion
+                 (save-match-data
+                   (re-search-forward
+                    (concat "^\\(\\(?:\\*\\)\\{"
+                            (number-to-string level)
+                            "\\}\\) \\(.*\\)$") nil t)))) t)
+       (setq cnt (1+ cnt))
+       (let* ((pos (match-beginning 0))
+              (heading (match-string 2))
+              (nlevel (if odd (/ (+ 3 level) 2) (1+ level))))
+         (save-excursion
+           (narrow-to-region
+            (point)
+            (save-match-data
+              (if (re-search-forward
+                   (concat "^\\(\\(?:\\*\\)\\{"
+                           (number-to-string (+ (if odd 2 1) level))
+                           "\\}\\) \\(.*\\)$") nil t)
+                  (match-beginning 0)
+                (point-max))))
+           (goto-char (point-min))
+           (setq output
+                 (append output
+                         (list
+                          (list
+                           `(pos . ,pos)
+                           `(level . ,nlevel)
+                           `(occur . ,cnt)
+                           `(heading . ,heading)
+                           `(content . ,(org-export-latex-parse-content))
+                           `(subcontent . ,(org-export-latex-parse-subcontent 
+                                            level odd)))))))
+         (widen)))
+      (list output))))
+
+(defun org-export-latex-parse-list (&optional delete)
+  "Parse the list at point.
+Return a list containing first level items as strings and
+sublevels as list of strings."
+  (let ((start (point))
+       ;; Find the end of the list
+       (end (save-excursion 
+              (catch 'exit
+                (while (or (looking-at org-export-latex-list-beginning-re)
+                           (looking-at "^[ \t]+\\|^$"))
+                  (if (eq (point) (point-max))
+                      (throw 'exit (point-max)))
+                  (forward-line 1))) (point)))
+       output itemsep)
+    (while (re-search-forward org-export-latex-list-beginning-re end t)
+      (setq itemsep (if (save-match-data
+                         (string-match "^[0-9]" (match-string 2)))
+                       "[0-9]+\\(?:\\.\\|)\\)" "[-+]"))
+      (let* ((indent1 (match-string 1))
+            (nextitem (save-excursion 
+                        (save-match-data
+                          (or (and (re-search-forward 
+                                    (concat "^" indent1 itemsep " *?") end t)
+                                   (match-beginning 0)) end))))
+            (item (buffer-substring
+                   (point)
+                   (or (and (re-search-forward 
+                             org-export-latex-list-beginning-re end t)
+                            (goto-char (match-beginning 0)))
+                       (goto-char end))))
+            (nextindent (match-string 1))
+            (item (org-trim item))
+            (item (if (string-match "^\\[.+\\]" item)
+                      (replace-match "\\\\texttt{\\&}"
+                                     t nil item) item)))
+       (push item output)
+       (when (> (length nextindent)
+                (length indent1))
+         (narrow-to-region (point) nextitem)
+         (push (org-export-latex-parse-list) output)
+         (widen))))
+    (when delete (delete-region start end))
+    (setq output (nreverse output))
+    (push (if (string-match "^\\[0" itemsep)
+             'ordered 'unordered) output)))
+
+(defun org-export-latex-parse-content ()
+  "Extract the content of a section."
+  (let ((beg (point))
+       (end (if (re-search-forward "^\\(\\*\\)+ .*$" nil t)
+                (progn (beginning-of-line) (point))
+              (point-max))))
+    (buffer-substring beg end)))
+
+(defun org-export-latex-parse-subcontent (level odd)
+  "Extract the subcontent of a section at LEVEL.
+If ODD Is non-nil, assume subcontent only contains odd sections."
+  (if (not (re-search-forward
+           (concat "^\\(\\(?:\\*\\)\\{"
+                   (number-to-string (+ (if odd 4 2) level))
+                   "\\}\\) \\(.*\\)$")
+           nil t))
+      nil ; subcontent is nil
+    (org-export-latex-parse-global (+ (if odd 2 1) level) odd)))
+
+;;; Rendering functions:
+(defun org-export-latex-global (content)
+  "Export CONTENT to LaTeX.
+CONTENT is an element of the list produced by
+`org-export-latex-parse-global'."
+  (if (eq (car content) 'subcontent)
+      (mapc 'org-export-latex-sub (cdr content))
+    (org-export-latex-sub (car content))))
+
+(defun org-export-latex-sub (subcontent)
+  "Export the list SUBCONTENT to LaTeX.
+SUBCONTENT is an alist containing information about the headline
+and its content."
+  (let ((num (plist-get org-latex-options-plist :section-numbers)))
+    (mapc (lambda(x) (org-export-latex-subcontent x num)) subcontent)))
+
+(defun org-export-latex-subcontent (subcontent num)
+  "Export each cell of SUBCONTENT to LaTeX."
+  (let ((heading (org-export-latex-fontify-headline
+                 (cdr (assoc 'heading subcontent))))
+       (level (- (cdr (assoc 'level subcontent))
+                 org-latex-add-level))
+       (occur (number-to-string (cdr (assoc 'occur subcontent))))
+       (content (cdr (assoc 'content subcontent)))
+       (subcontent (cadr (assoc 'subcontent subcontent))))
+    (cond 
+     ;; Normal conversion
+     ((<= level org-latex-sectioning-depth)
+      (let ((sec (assoc level org-export-latex-sectioning-alist)))
+       (insert (format (if num (cadr sec) (caddr sec)) heading) "\n"))
+      (insert (org-export-latex-content content))
+      (cond ((stringp subcontent) (insert subcontent))
+           ((listp subcontent) (org-export-latex-sub subcontent))))
+     ;; At a level under the hl option: we can drop this subsection
+     ((> level org-latex-sectioning-depth)
+      (cond ((eq org-export-latex-low-levels 'description)
+            (insert (format "\\begin{description}\n\n\\item[%s]\n\n" heading))
+            (insert (org-export-latex-content content))
+            (cond ((stringp subcontent) (insert subcontent))
+                  ((listp subcontent) (org-export-latex-sub subcontent)))
+            (insert "\\end{description}\n"))
+           ((stringp org-export-latex-low-levels)
+            (insert (format org-export-latex-low-levels heading) "\n")
+            (insert (org-export-latex-content content))
+            (cond ((stringp subcontent) (insert subcontent))
+                  ((listp subcontent) (org-export-latex-sub subcontent)))))))))
+
+
+;;; Exporting internals:
+(defun org-export-latex-protect-string (string)
+  "Prevent further conversion for STRING by adding the
+org-protect property."
+  (add-text-properties 
+   0 (length string) '(org-protected t) string) string)
+
+(defun org-export-latex-protect-char-in-string (char-list string)
+  "Add org-protected text-property to char from CHAR-LIST in STRING."
+  (with-temp-buffer
+    (save-match-data
+      (insert string)
+      (goto-char (point-min))
+      (while (re-search-forward (regexp-opt char-list) nil t)
+       (add-text-properties (match-beginning 0)
+                            (match-end 0) '(org-protected t)))
+      (buffer-string))))
+
+(defun org-export-latex-set-initial-vars (ext-plist)
+  "Store org local variables required for LaTeX export.
+EXT-PLIST is an optional additional plist."
+  (setq org-latex-todo-keywords-1 org-todo-keywords-1
+       org-latex-all-targets-regexp
+       (org-make-target-link-regexp (org-all-targets))
+       org-latex-options-plist
+       (org-combine-plists (org-default-export-plist) ext-plist
+                           (org-infile-export-plist))
+       org-latex-sectioning-depth
+       (let ((hl-levels (plist-get org-latex-options-plist :headline-levels))
+             (sec-depth (length org-export-latex-sectioning-alist)))
+             ;; Fall back on org-export-latex-sectioning-alist length if
+             ;; headline-levels goes beyond it
+         (if (> hl-levels sec-depth) sec-depth hl-levels))))
+
+(defun org-export-latex-make-preamble (opt-plist)
+  "Make the LaTeX preamble and return it as a string.
+Argument OPT-PLIST is the options plist for current buffer."
+  (let ((toc (plist-get opt-plist :table-of-contents)))
+    (concat 
+     (if (plist-get opt-plist :time-stamp-file)
+        (format-time-string "% Created %Y-%m-%d %a %H:%M\n"))
+     
+     ;; insert LaTeX custom preamble
+     org-export-latex-preamble "\n"
+     
+     ;; insert information on LaTeX packages
+     (when org-export-latex-packages-alist
+       (mapconcat (lambda(p)
+                   (if (equal "" (car p))
+                       (format "\\usepackage{%s}" (cadr p))
+                     (format "\\usepackage[%s]{%s}"
+                             (car p) (cadr p))))
+                 org-export-latex-packages-alist "\n"))
+     
+     ;; insert the title
+     (format 
+      "\\title{%s}\n"
+      (or (plist-get opt-plist :title)
+         (and (not
+               (plist-get opt-plist :skip-before-1st-heading))
+              (org-export-grab-title-from-buffer))
+         (and buffer-file-name
+              (file-name-sans-extension
+               (file-name-nondirectory buffer-file-name)))
+         "UNTITLED"))
+     
+     ;; insert author info
+     (if (plist-get opt-plist :author-info)
+        (format "\\author{%s}\n" 
+                (or (plist-get opt-plist :author) user-full-name))
+       (format "%%\\author{%s}\n"
+              (or (plist-get opt-plist :author) user-full-name)))
+     
+     ;; insert the date
+     (format "\\date{%s}\n"
+            (format-time-string 
+             (or (plist-get opt-plist :date)
+                 org-export-latex-date-format)))
+     
+     ;; beginning of the document
+     "\n\\begin{document}\n\n"
+     
+     ;; insert the title command
+     (if (string-match "%s" org-export-latex-title-command)
+        (format org-export-latex-title-command
+                (plist-get opt-plist :title))
+       org-export-latex-title-command)
+     "\n\n"
+     
+     ;; table of contents
+     (when (and org-export-with-toc 
+               (plist-get opt-plist :section-numbers))
+       (cond ((numberp toc)
+             (format "\\setcounter{tocdepth}{%s}\n\\tableofcontents\n\n"
+                     (min toc (plist-get opt-plist :headline-levels))))
+            (toc (format "\\setcounter{tocdepth}{%s}\n\\tableofcontents\n\n"
+                         (plist-get opt-plist :headline-levels))))))))
+
+(defun org-export-latex-first-lines (&optional comments)
+  "Export the first lines before first headline.
+COMMENTS is either nil to replace them with the empty string or a
+formatting string like %%%%s if we want to comment them out."
+  (save-excursion
+    (goto-char (point-min))
+    (let* ((end (if (re-search-forward "^\\*" nil t)
+                   (goto-char (match-beginning 0))
+                 (goto-char (point-max)))))
+      (org-export-latex-content
+       (org-cleaned-string-for-export
+       (buffer-substring (point-min) end)
+       :for-LaTeX t
+       :emph-multiline t
+       :add-text nil
+       :comments nil
+       :skip-before-1st-heading nil
+       :LaTeX-fragments nil)))))
+
+(defun org-export-latex-keywords-maybe (remove-list)
+  "Maybe remove keywords depending on rules in REMOVE-LIST."
+  (goto-char (point-min))
+  (let ((re-todo (mapconcat 'identity org-latex-todo-keywords-1 "\\|")))
+    ;; convert TODO keywords
+    (when (re-search-forward (concat "^\\(" re-todo "\\)") nil t)
+      (if (plist-get remove-list :todo)
+         (replace-match "")
+       (replace-match (format "\\texttt{%s}" (match-string 1)) t t)))
+    ;; convert priority string
+    (when (re-search-forward "\\[\\\\#.\\]" nil t)
+      (if (plist-get remove-list :priority)
+         (replace-match "")
+       (replace-match (format "\\texttt{%s}" (match-string 0)) t t)))
+    ;; convert tags
+    (when (re-search-forward "\\(:[a-zA-Z0-9]+\\)+:" nil t)
+      (if (or (not org-export-with-tags)
+             (plist-get remove-list :tags))
+         (replace-match "")
+       (replace-match (format "\\texttt{%s}" (match-string 0)) t t)))))
+
+(defun org-export-latex-fontify-headline (headline)
+  "Fontify special words in a HEADLINE."
+  (with-temp-buffer
+    ;; FIXME: org-inside-LaTeX-fragment-p doesn't work when the $...$ is at
+    ;; the beginning of the buffer - inserting "\n" is safe here though.
+    (insert "\n" headline)
+    (goto-char (point-min))
+    (when (plist-get org-latex-options-plist :emphasize)
+      (org-export-latex-fontify))
+    (org-export-latex-special-chars
+     (plist-get org-latex-options-plist :sub-superscript))
+    (org-export-latex-keywords-maybe
+     org-export-latex-remove-from-headlines)
+    (org-export-latex-links)
+    (org-trim (buffer-substring-no-properties (point-min) (point-max)))))
+
+(defun org-export-latex-content (content)
+  "Convert CONTENT string to LaTeX."
+  (with-temp-buffer
+   (insert content)
+   (org-export-latex-quotation-marks)
+   (when (plist-get org-latex-options-plist :emphasize)
+     (org-export-latex-fontify))
+   (org-export-latex-special-chars
+    (plist-get org-latex-options-plist :sub-superscript))
+   (org-export-latex-links)
+   (org-export-latex-keywords
+    (plist-get org-latex-options-plist :timestamps))
+   (org-export-latex-lists)
+   (org-export-latex-tables
+    (plist-get org-latex-options-plist :tables))
+   (org-export-latex-fixed-width
+    (plist-get org-latex-options-plist :fixed-width))
+   ;; return string
+   (buffer-substring (point-min) (point-max))))
+
+(defun org-export-latex-quotation-marks ()
+  "Export question marks depending on language conventions.
+Local definition of the language overrides
+`org-export-latex-quotation-marks-convention' which overrides
+`org-export-default-language'."
+  (let* ((lang (plist-get org-latex-options-plist :language))
+        (quote-rpl (if (equal lang "fr")
+                       '(("\\(\\s-\\)\"" "«~")
+                         ("\\(\\S-\\)\"" "~»")
+                         ("\\(\\s-\\)'" "`"))
+                     '(("\\(\\s-\\)\"" "``")
+                       ("\\(\\S-\\)\"" "''")
+                       ("\\(\\s-\\)'" "`")))))
+    (mapc (lambda(l) (goto-char (point-min))
+           (while (re-search-forward (car l) nil t)
+             (let ((rpl (concat (match-string 1) (cadr l))))
+               (org-export-latex-protect-string rpl)
+               (org-if-unprotected
+                (replace-match rpl t t))))) quote-rpl)))
+
+;; | chars/string in Org   | normal environment    | math environment      |
+;; |-----------------------+-----------------------+-----------------------|
+;; | & # % $               | \& \# \% \$           | \& \# \% \$           |
+;; | { } _ ^ \             | \{ \} \_ \^ \\        | {  }  _  ^ \          |
+;; |-----------------------+-----------------------+-----------------------|
+;; | a_b and a^b           | $a_b$ and $a^b$       | a_b and a^b           |
+;; | a_abc and a_{abc}     | $a_a$bc and $a_{abc}$ | a_abc and a_{abc}     |
+;; | \tau and \mu          | $\tau$ and $\mu$      | \tau and \mu          |
+;; |-----------------------+-----------------------+-----------------------|
+;; | \_ \^                 | \_  \^                | \_  \^                |
+;; | \(a=\mu\mbox{m}\)     | \(a=\mu\mbox{m}\)     | \(a=\mu\mbox{m}\)     |
+;; | \[\beta^2-a=0\]       | \[\beta^2-a=0\]       | \[\beta^2-a=0\]       |
+;; | $x=22\tau$            | $x=22\tau$            | $x=22\tau$            |
+;; | $$\alpha=\sqrt{a^3}$$ | $$\alpha=\sqrt{a^3}$$ | $$\alpha=\sqrt{a^3}$$ |
+
+(defun org-export-latex-special-chars (sub-superscript)
+  "Export special characters to LaTeX.
+If SUB-SUPERSCRIPT is non-nil, convert \\ and ^.
+See the `org-export-latex.el' code for a complete conversion table."
+  (goto-char (point-min))
+  (mapc (lambda(c)
+         (goto-char (point-min))
+         (while (re-search-forward c nil t)
+           ;; Put the point where to check for org-protected
+           (unless (get-text-property (match-beginning 2) 'org-protected)
+             (cond ((member (match-string 2) '("\\$" "$"))
+                    (if (equal (match-string 2) "\\$")
+                        (replace-match (concat (match-string 1) "$"
+                                               (match-string 3)) t t)
+                      (replace-match (concat (match-string 1) "\\$"
+                                             (match-string 3)) t t)))
+                   ((member (match-string 2) '("&" "%" "#"))
+                    (if (equal (match-string 1) "\\")
+                        (replace-match (match-string 2) t t)
+                      (replace-match (concat (match-string 1) "\\"
+                                             (match-string 2)) t t)))
+                   ((equal (match-string 2) "~")
+                    (cond ((equal (match-string 1) "\\") nil)
+                          ((eq 'org-link (get-text-property 0 'face (match-string 2)))
+                           (replace-match (concat (match-string 1) "\\~") t t))
+                          (t (replace-match 
+                              (org-export-latex-protect-string
+                               (concat (match-string 1) "\\~{}")) t t))))
+                   ((member (match-string 2) '("{" "}"))
+                    (unless (save-match-data (org-inside-LaTeX-fragment-p))
+                      (if (equal (match-string 1) "\\")
+                          (replace-match (match-string 2) t t)
+                        (replace-match (concat (match-string 1) "\\"
+                                               (match-string 2)) t t)))))
+             (unless (save-match-data (org-inside-LaTeX-fragment-p))
+               (cond ((equal (match-string 2) "\\")
+                      (replace-match (or (save-match-data
+                                           (org-export-latex-treat-backslash-char
+                                            (match-string 1)
+                                            (match-string 3))) "") t t))
+                     ((member (match-string 2) '("_" "^"))
+                      (replace-match (or (save-match-data
+                                           (org-export-latex-treat-sub-super-char
+                                            sub-superscript
+                                            (match-string 1)
+                                            (match-string 2)
+                                            (match-string 3))) "") t t)))))))
+       '("^\\([^\n$]*?\\|^\\)\\(\\\\?\\$\\)\\([^\n$]*\\)$"
+         "\\([a-za-z0-9]+\\|[ \t\n]\\|\\b\\|\\\\\\)\\(_\\|\\^\\)\\([a-za-z0-9]+\\|[ \t\n]\\|[:punct:]\\|{[a-za-z0-9]+}\\|([a-za-z0-9]+)\\)"
+         "\\(.\\|^\\)\\(\\\\\\)\\([ \t\n]\\|[a-zA-Z&#%{}\"]+\\)"
+         "\\(.\\|^\\)\\(&\\)"
+         "\\(.\\|^\\)\\(#\\)"
+         "\\(.\\|^\\)\\(%\\)"
+         "\\(.\\|^\\)\\({\\)"
+         "\\(.\\|^\\)\\(}\\)"
+         "\\(.\\|^\\)\\(~\\)"
+         ;; (?\< . "\\textless{}")
+         ;; (?\> . "\\textgreater{}")
+         )))
+
+(defun org-export-latex-treat-sub-super-char
+  (subsup string-before char string-after)
+  "Convert the \"_\" and \"^\" characters to LaTeX.
+SUBSUP corresponds to the ^: option in the #+OPTIONS line.
+Convert CHAR depending on STRING-BEFORE and STRING-AFTER."
+  (cond ((equal string-before "\\")
+        (concat string-before char string-after))
+       ;; this is part of a math formula
+       ((and (string-match "\\S-+" string-before)
+             (string-match "\\S-+" string-after))
+        (cond ((eq 'org-link (get-text-property 0 'face char))
+               (concat string-before "\\" char string-after))
+              ((save-match-data (org-inside-LaTeX-fragment-p))
+               (if subsup
+                   (cond ((eq 1 (length string-after))
+                          (concat string-before char string-after))
+                         ((string-match "[({]?\\([^)}]+\\)[)}]?" string-after)
+                          (format "%s%s{%s}" string-before char 
+                                  (match-string 1 string-after))))))
+              ((and subsup
+                    (> (length string-after) 1)
+                    (string-match "[({]?\\([^)}]+\\)[)}]?" string-after))
+               (format "$%s%s{%s}$" string-before char
+                       (match-string 1 string-after)))
+              (subsup (concat "$" string-before char string-after "$"))
+              (t (org-export-latex-protect-string
+                  (concat string-before "\\" char "{}" string-after)))))
+       (t (org-export-latex-protect-string
+           (concat string-before "\\" char "{}" string-after)))))
+
+(defun org-export-latex-treat-backslash-char (string-before string-after)
+  "Convert the \"$\" special character to LaTeX.
+The conversion is made depending of STRING-BEFORE and STRING-AFTER."
+  (cond ((member (list string-after) org-html-entities)
+        ;; backslash is part of a special entity (like "\alpha")
+        (concat string-before "$\\"
+                (or (cdar (member (list string-after) org-html-entities))
+                    string-after) "$"))
+       ((and (not (string-match "^[ \n\t]" string-after))
+             (not (string-match "[ \t]\\'\\|^" string-before)))
+        ;; backslash is inside a word
+        (org-export-latex-protect-string
+         (concat string-before "\\textbackslash{}" string-after)))
+       ((not (or (equal string-after "")
+                 (string-match "^[ \t\n]" string-after)))
+        ;; backslash might escape a character (like \#) or a user TeX
+        ;; macro (like \setcounter)
+        (org-export-latex-protect-string 
+         (concat string-before "\\" string-after)))
+       ((and (string-match "^[ \t\n]" string-after)
+             (string-match "[ \t\n]\\'" string-before))
+        ;; backslash is alone, convert it to $\backslash$
+        (org-export-latex-protect-string
+         (concat string-before "\\textbackslash{}" string-after)))
+       (t (org-export-latex-protect-string
+           (concat string-before "\\textbackslash{}" string-after)))))
+
+(defun org-export-latex-keywords (timestamps)
+  "Convert special keywords to LaTeX.
+Regexps are those from `org-latex-special-string-regexps'."
+  (let ((rg org-latex-special-string-regexps) r)
+    (while (setq r (pop rg))
+      (goto-char (point-min))
+      (while (re-search-forward (eval r) nil t)
+       (if (not timestamps)
+           (replace-match (format "\\\\texttt{%s}" (match-string 0)) t)
+         (replace-match ""))))))
+  
+(defun org-export-latex-fixed-width (opt)
+  "When OPT is non-nil convert fixed-width sections to LaTeX."
+  (goto-char (point-min))
+  ;; FIXME the search shouldn't be performed on already converted text
+  (while (re-search-forward "^[ \t]*:" nil t)
+    (if opt
+       (progn (goto-char (match-beginning 0))
+              (insert "\\begin{verbatim}\n")
+              (while (looking-at "^\\([ \t]*\\):\\(.*\\)$")
+                (replace-match (concat (match-string 1)
+                                       (match-string 2)) t t)
+                (forward-line))
+              (insert "\\end{verbatim}\n\n"))
+      (progn (goto-char (match-beginning 0))
+            (while (looking-at "^\\([ \t]*\\):\\(.*\\)$")
+              (replace-match (concat "%" (match-string 1)
+                                     (match-string 2)) t t)
+              (forward-line))))))
+
+(defun org-export-latex-lists ()
+  "Convert lists to LaTeX."
+  (goto-char (point-min))
+  (while (re-search-forward org-export-latex-list-beginning-re nil t)
+    (beginning-of-line)
+    (org-export-list-to-latex
+     (org-export-latex-parse-list t))))
+
+(defun org-export-list-to-generic (list params)
+  "Convert a LIST parsed through `org-export-latex-parse-list' to other formats.
+  
+Valid parameters are
+
+:ustart     String to start an unordered list
+:uend       String to end an unordered list
+
+:ostart     String to start an ordered list
+:oend       String to end an ordered list
+
+:splice     When set to t, return only list body lines, don't wrap
+            them into :[u/o]start and :[u/o]end.  Default is nil.
+
+:istart     String to start a list item
+:iend       String to end a list item
+:isep       String to separate items
+:lsep       String to separate sublists"
+  (interactive)
+  (let* ((p params) sublist
+        (splicep (plist-get p :splice))
+        (ostart  (plist-get p :ostart))
+        (oend  (plist-get p :oend))
+        (ustart  (plist-get p :ustart))
+        (uend  (plist-get p :uend))
+        (istart  (plist-get p :istart))
+        (iend  (plist-get p :iend))
+        (isep  (plist-get p :isep))
+        (lsep  (plist-get p :lsep)))
+    (let ((wrapper
+          (cond ((eq (car list) 'ordered)
+                 (concat ostart "\n%s" oend "\n"))
+                ((eq (car list) 'unordered)
+                 (concat ustart "\n%s" uend "\n"))))
+         rtn)
+      (while (setq sublist (pop list))
+       (cond ((symbolp sublist) nil)
+             ((stringp sublist)
+              (setq rtn (concat rtn istart sublist iend isep)))
+             (t 
+              (setq rtn (concat rtn   ;; previous list
+                                lsep  ;; list separator
+                                (org-export-list-to-generic sublist p)
+                                lsep  ;; list separator
+                                )))))
+      (format wrapper rtn))))
+
+(defun org-export-list-to-latex (list)
+  "Convert LIST into a LaTeX list."
+  (insert 
+   (org-export-list-to-generic
+    list '(:splicep nil :ostart "\\begin{enumerate}" :oend "\\end{enumerate}"
+                       :ustart "\\begin{itemize}" :uend "\\end{itemize}"
+                        :istart "\\item " :iend ""
+                       :isep "\n" :lsep "\n"))
+   ;; Add a trailing \n after list conversion
+   "\n"))
+
+;; FIXME Use org-export-highlight-first-table-line ?
+(defun org-export-latex-tables (insert)
+  "Convert tables to LaTeX and INSERT it."
+  (goto-char (point-min))
+  (while (re-search-forward "^\\([ \t]*\\)|" nil t)
+    ;; FIXME really need to save-excursion?
+    (save-excursion (org-table-align))
+    (let* ((beg (org-table-begin))
+          (end (org-table-end))
+          (raw-table (buffer-substring-no-properties beg end))
+          fnum line lines olines gr colgropen line-fmt alignment)
+      (if org-export-latex-tables-verbatim
+         (let* ((tbl (concat "\\begin{verbatim}\n" raw-table
+                             "\\end{verbatim}\n")))
+           (apply 'delete-region (list beg end))
+           (insert tbl))
+       (progn
+         (setq lines (split-string raw-table "\n" t))
+         (apply 'delete-region (list beg end))
+         (when org-export-table-remove-special-lines
+           (setq lines (org-table-clean-before-export lines)))
+         ;; make a formatting string to reflect aligment
+         (setq olines lines)
+         (while (and (not line-fmt) (setq line (pop olines)))
+           (unless (string-match "^[ \t]*|-" line)
+             (setq fields (org-split-string line "[ \t]*|[ \t]*"))
+             (setq fnum (make-vector (length fields) 0))
+             (setq line-fmt 
+                   (mapconcat
+                    (lambda (x)
+                      (setq gr (pop org-table-colgroup-info))
+                      (format "%s%%s%s"
+                              (cond ((eq gr ':start)
+                                     (prog1 (if colgropen "|" "")
+                                       (setq colgropen t)))
+                                    ((eq gr ':startend)
+                                     (prog1 (if colgropen "|" "|")
+                                       (setq colgropen nil)))
+                                    (t ""))
+                              (if (memq gr '(:end :startend))
+                                  (progn (setq colgropen nil) "|")
+                                "")))
+                    fnum ""))))
+         ;; maybe remove the first and last "|"
+         (when (string-match "^\\(|\\)?\\(.+\\)|$" line-fmt)
+           (setq line-fmt (match-string 2 line-fmt)))
+         ;; format alignment
+         (setq align (apply 'format 
+                            (cons line-fmt
+                                  (mapcar (lambda (x) (if x "r" "l"))
+                                          org-table-last-alignment))))
+         ;; prepare the table to send to orgtbl-to-latex
+         (setq lines
+               (mapcar
+                (lambda(elem) 
+                  (or (and (string-match "[ \t]*|-+" elem) 'hline)
+                      (split-string (org-trim elem) "|" t)))
+                lines))
+         (when insert
+           (insert (orgtbl-to-latex
+                    lines `(:tstart ,(concat "\\begin{tabular}{" align "}")))
+                   "\n\n")))))))
+
+(defun org-export-latex-fontify ()
+  "Convert fontification to LaTeX."
+  (goto-char (point-min))
+  (while (re-search-forward org-emph-re nil t)
+    ;; The match goes one char after the *string*
+    (let ((emph (assoc (match-string 3) 
+                      org-export-latex-emphasis-alist)) 
+         rpl)
+      (unless (get-text-property (1- (point)) 'org-protected)
+       (setq rpl (concat (match-string 1)
+                         (format (org-export-latex-protect-char-in-string
+                                  '("\\" "{" "}") (cadr emph))
+                                 (match-string 4))
+                         (match-string 5)))
+       (if (caddr emph) 
+           (setq rpl (org-export-latex-protect-string rpl)))
+       (replace-match rpl t t)))
+    (backward-char)))
+
+(defun org-export-latex-links ()
+  ;; Make sure to use the LaTeX hyperref and graphicx package
+  ;; or send some warnings.
+  "Convert links to LaTeX."
+  (goto-char (point-min))
+  (while (re-search-forward org-bracket-link-analytic-regexp nil t)
+    (org-if-unprotected
+     (goto-char (match-beginning 0))
+     (let* ((re-radio org-latex-all-targets-regexp)
+           (remove (list (match-beginning 0) (match-end 0)))
+           (type (match-string 2))
+           (raw-path (match-string 3))
+           (full-raw-path (concat (match-string 1) raw-path))
+           (desc (match-string 5))
+           imgp radiop
+           ;; define the path of the link
+           (path (cond
+                  ((member type '("http" "https" "ftp"))
+                   (concat type ":" raw-path))
+                  ((and re-radio (string-match re-radio raw-path))
+                   (setq radiop t))
+                  ((equal type "mailto")
+                   (concat type ":" raw-path))
+                  ((equal type "file")
+                   (if (and (or (org-file-image-p (expand-file-name raw-path))
+                                (string-match "\\.eps$" raw-path))
+                            (equal desc full-raw-path))
+                       (setq imgp t)
+                     (progn (when (string-match "\\(.+\\)::.+" raw-path)
+                              (setq raw-path (match-string 1 raw-path)))
+                            (if (file-exists-p raw-path)
+                                (concat type "://" (expand-file-name raw-path))
+                              (concat type "://" (org-export-directory
+                                                  :LaTeX org-latex-options-plist)
+                                      raw-path))))))))
+       ;; process with link inserting
+       (apply 'delete-region remove)
+       (cond ((and imgp (plist-get org-latex-options-plist :inline-images))
+             (insert (format "\\includegraphics[%s]{%s}"
+                             ;; image option should be set be a comment line
+                             org-export-latex-image-default-option
+                             (expand-file-name raw-path))))
+            ;; FIXME: what about caption? image properties?
+            (radiop (insert (format "\\hyperref[%s]{%s}" raw-path desc)))
+            (path (insert (format "\\href{%s}{%s}" path desc)))
+            (t (insert "\\texttt{" desc "}")))))))
+
+(defun org-export-latex-cleaned-string 
+  ;; FIXME remove commentsp call in org.el and here
+  (&optional commentsp)
+  "Clean stuff in the LaTeX export."
+
+  ;; Preserve line breaks
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\\\\\" nil t)
+    (add-text-properties (match-beginning 0) (match-end 0)
+                        '(org-protected t)))
+
+  ;; Convert LaTeX to \LaTeX{}
+  (goto-char (point-min))
+  (let ((case-fold-search nil) rpl)
+    (while (re-search-forward "\\([^+_]\\)LaTeX" nil t)
+    (replace-match (org-export-latex-protect-string 
+                   (concat (match-string 1) "\\LaTeX{}")) t t)))
+
+  ;; Convert horizontal rules
+  (goto-char (point-min))
+  (while (re-search-forward "^----+.$" nil t)
+    (replace-match (org-export-latex-protect-string "\\hrule") t t))
+
+  ;; Protect LaTeX \commands{...}
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\[a-zA-Z]+\\(?:\\[.*\\]\\)?{.*}" nil t)
+    (add-text-properties (match-beginning 0) (match-end 0)
+                        '(org-protected t)))
+
+  ;; Replace radio links
+  (goto-char (point-min))
+  (while (re-search-forward
+         (concat "<<<?" org-latex-all-targets-regexp 
+                 ">>>?\\((INVISIBLE)\\)?") nil t)
+    (replace-match
+     (org-export-latex-protect-string 
+      (format "\\label{%s}%s"(match-string 1)
+             (if (match-string 2) "" (match-string 1)))) t t))
+
+  ;; Delete @<...> constructs
+  (goto-char (point-min))
+  ;; Thanks to Daniel Clemente for this regexp
+  (while (re-search-forward "@<\\(?:[^\"\n]\\|\".*\"\\)*?>" nil t)
+    (replace-match ""))
+
+  ;; When converting to LaTeX, replace footnotes
+  ;; FIXME: don't protect footnotes from conversion
+  (when (plist-get org-latex-options-plist :footnotes)
+    (goto-char (point-min))
+    (while (re-search-forward "\\[[0-9]+\\]" nil t)
+      (when (save-match-data
+             (save-excursion (beginning-of-line)
+                             (looking-at "[^:|#]")))
+       (let ((foot-beg (match-beginning 0))
+             (foot-end (match-end 0))
+             (foot-prefix (match-string 0))
+             footnote footnote-rpl)
+         (when (and (re-search-forward (regexp-quote foot-prefix) nil t))
+           (replace-match "")
+           (let ((end (save-excursion
+                        (if (re-search-forward "^$\\|\\[[0-9]+\\]" nil t)
+                            (match-beginning 0) (point-max)))))
+             (setq footnote
+                   (concat 
+                    (org-trim (buffer-substring (point) end)) 
+                    ;; FIXME stupid workaround for cases where
+                    ;; `org-bracket-link-analytic-regexp' matches
+                    ;; }. as part of the link.
+                    " "))
+             (delete-region (point) end)))
+         (goto-char foot-beg)
+         (delete-region foot-beg foot-end)
+         (setq footnote-rpl (format "\\footnote{%s}" footnote))
+         (add-text-properties 0 10 '(org-protected t) footnote-rpl)
+         (add-text-properties (1- (length footnote-rpl))
+                              (length footnote-rpl)
+                              '(org-protected t) footnote-rpl)
+         (insert footnote-rpl))))
+    
+    ;; Replace footnote section tag for LaTeX
+    (goto-char (point-min))
+    (while (re-search-forward 
+           (concat "^" footnote-section-tag-regexp) nil t)
+      (replace-match ""))))
+
+(provide 'org-export-latex)
+
+;; arch-tag: 23c2b87d-da04-4c2d-ad2d-1eb6487bc3ad
+;;; org-export-latex.el ends here
diff --git a/lisp/textmodes/org-publish.el b/lisp/textmodes/org-publish.el
new file mode 100644 (file)
index 0000000..bc45a7d
--- /dev/null
@@ -0,0 +1,622 @@
+;;; org-publish.el --- publish related org-mode files as a website
+
+;; Copyright (C) 2006, 2007  Free Software Foundation, Inc.
+
+;; Author: David O'Toole <dto@gnu.org>
+;; Keywords: hypermedia, outlines
+;; Version: 1.80
+
+;; 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
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file 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; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;; This file is part of GNU Emacs.
+
+;;; Commentary:
+
+;; Requires at least version 4.27 of org.el
+;;
+;; The official org-mode website:
+;; http://staff.science.uva.nl/~dominik/Tools/org/
+;;
+;; Home page for org-publish.el:
+;; http://dto.freeshell.org/notebook/OrgMode.html
+
+;; This program extends the HTML publishing support of Emacs Org-mode
+;; to allow configurable publishing of related sets of files as a
+;; complete website.
+;;
+;; org-publish.el can do the following:
+;;
+;; + Publish all one's org-files to html
+;; + Upload html, images, attachments and other files to a web server
+;; + Exclude selected private pages from publishing
+;; + Publish a clickable index of pages
+;; + Manage local timestamps, for publishing only changed files
+;; + Accept plugin functions to extend range of publishable content
+;;
+;; Special thanks to the org-mode maintainer Carsten Dominik for his
+;; ideas, enthusiasm, and cooperation.
+
+;;; Installation:
+
+;; Put org-publish.el in your load path, byte-compile it, and then add
+;; the following lines to your emacs initialization file:
+
+;; (autoload 'org-publish "org-publish" nil t)
+;; (autoload 'org-publish "org-publish-all" nil t)
+;; (autoload 'org-publish "org-publish-current-file" nil t)
+;; (autoload 'org-publish "org-publish-current-project" nil t)
+
+;; NOTE: When org-publish.el is included with org.el, those forms are
+;; already in the file org-install.el, and hence don't need to be put
+;; in your emacs initialization file in this case.
+
+;;; Usage:
+;;
+;; The program's main configuration variable is
+;; `org-publish-project-alist'. See below for example configurations
+;; with commentary.
+
+;; The main interactive functions are:
+;;
+;; M-x org-publish
+;; M-x org-publish-all
+;; M-x org-publish-current-file
+;; M-x org-publish-current-project
+
+;;;; Simple example configuration:
+
+;; (setq org-publish-project-alist
+;;       (list
+;;        '("org" . (:base-directory "~/org/"
+;;                  :base-extension "org"
+;;                  :publishing-directory "~/public_html"
+;;                   :with-section-numbers nil
+;;                  :table-of-contents nil
+;;                  :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">")))
+
+;;;; More complex example configuration:
+
+;; Imagine your *.org files are kept in ~/org, your images in
+;; ~/images, and stylesheets in ~/other. Now imagine you want to
+;; publish the files through an ssh connection to a remote host, via
+;; Tramp-mode. To maintain relative links from *.org files to /images
+;; and /other, we should replicate the same directory structure in
+;; your web server account's designated html root (in this case,
+;; assumed to be ~/html)
+
+;; Once you've done created the proper directories, you can adapt the
+;; following example configuration to your specific paths, run M-x
+;; org-publish-all, and it should publish the files to the correct
+;; directories on the web server, transforming the *.org files into
+;; HTML, and leaving other files alone.
+
+;; (setq org-publish-project-alist
+;;       (list
+;;        '("orgfiles" :base-directory "~/org/"
+;;                    :base-extension "org"
+;;                    :publishing-directory "/ssh:user@host:~/html/notebook/"
+;;                    :publishing-function org-publish-org-to-html
+;;                    :exclude "PrivatePage.org"   ;; regexp
+;;                    :headline-levels 3
+;;                     :with-section-numbers nil
+;;                    :table-of-contents nil
+;;                    :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">"
+;;                    :auto-preamble t
+;;                    :auto-postamble nil)
+;;
+;;         ("images" :base-directory "~/images/"
+;;                  :base-extension "jpg\\|gif\\|png"
+;;                  :publishing-directory "/ssh:user@host:~/html/images/"
+;;                  :publishing-function org-publish-attachment)
+;;
+;;         ("other"  :base-directory "~/other/"
+;;                  :base-extension "css"
+;;                  :publishing-directory "/ssh:user@host:~/html/other/"
+;;                  :publishing-function org-publish-attachment)
+;;         ("website" :components ("orgfiles" "images" "other"))))
+
+;; For more information, see the documentation for the variable
+;; `org-publish-project-alist'.
+
+;; Of course, you don't have to publish to remote directories from
+;; within emacs. You can always just publish to local folders, and
+;; then use the synchronization/upload tool of your choice.
+
+
+;;; List of user-visible changes since version 1.27
+
+;; 1.78: Allow list-valued :publishing-function
+;; 1.77: Added :preparation-function, this allows you to use GNU Make etc.
+;; 1.65: Remove old "composite projects". They're redundant.
+;; 1.64: Allow meta-projects with :components
+;; 1.57: Timestamps flag is now called "org-publish-use-timestamps-flag"
+;; 1.52: Properly set default for :index-filename
+;; 1.48: Composite projects allowed.
+;;       :include keyword allowed.
+;; 1.43: Index no longer includes itself in the index.
+;; 1.42: Fix "function definition is void" error
+;;       when :publishing-function not set in org-publish-current-file.
+;; 1.41: Fixed bug where index isn't published on first try.
+;; 1.37: Added interactive function "org-publish". Prompts for particular
+;;       project name to publish.
+;; 1.34: Added force-publish option to all interactive functions.
+;; 1.32: Fixed "index.org has changed on disk" error during index publishing.
+;; 1.30: Fixed startup error caused by (require 'em-unix)
+
+;;; Code:
+
+
+(eval-when-compile
+  (require 'cl))
+
+
+(defgroup org-publish nil
+       "Options for publishing a set of Org-mode and related files."
+   :tag "Org Publishing"
+   :group 'org)
+
+
+(defcustom org-publish-project-alist nil
+  "Association list to control publishing behavior.
+Each element of the alist is a publishing 'project.'  The CAR of
+each element is a string, uniquely identifying the project. The
+CDR of each element is in one of the following forms:
+
+  (:property value :property value ... )
+
+OR,
+
+  (:components (\"project-1\" \"project-2\" ...))
+
+When the CDR of an element of org-publish-project-alist is in
+this second form, the elements of the list after :components are
+taken to be components of the project, which group together files
+requiring different publishing options. When you publish such a
+project with M-x org-publish, the components all publish.
+
+When a property is given a value in org-publish-project-alist, its
+setting overrides the value of the corresponding user variable
+ (if any) during publishing. However, options set within a file
+override everything.
+
+Most properties are optional, but some should always be set:
+
+    :base-directory        Directory containing publishing source files
+    :base-extension        Extension (without the dot!) of source files.
+                             This can be a regular expression.
+    :publishing-directory  Directory (possibly remote) where output
+                             files will be published
+
+The :exclude property may be used to prevent certain files from
+being published. Its value may be a string or regexp matching
+file names you don't want to be published.
+
+The :include property may be used to include extra files. Its
+value may be a list of filenames to include. The filenames are
+considered relative to the publishing directory.
+
+When both :include and :exclude properties are given values, the
+exclusion step happens first.
+
+One special property controls which back-end function to use for
+publishing files in the project. This can be used to extend the
+set of file types publishable by org-publish, as well as the set
+of output formats.
+
+    :publishing-function     Function to publish file. The default is
+                             org-publish-org-to-html, but other
+                             values are possible. May also be a
+                             list of functions, in which case 
+                             each function in the list is invoked
+                             in turn.
+
+Another property allows you to insert code that prepares a
+project for publishing. For example, you could call GNU Make on a
+certain makefile, to ensure published files are built up to date. 
+
+    :preparation-function   Function to be called before publishing
+                              this project.
+
+Some properties control details of the Org publishing process,
+and are equivalent to the corresponding user variables listed in
+the right column. See the documentation for those variables to
+learn more about their use and default values.
+
+    :language              org-export-default-language
+    :headline-levels       org-export-headline-levels
+    :section-numbers       org-export-with-section-numbers
+    :table-of-contents     org-export-with-toc
+    :emphasize             org-export-with-emphasize
+    :sub-superscript       org-export-with-sub-superscripts
+    :TeX-macros            org-export-with-TeX-macros
+    :fixed-width           org-export-with-fixed-width
+    :tables                org-export-with-tables
+    :table-auto-headline   org-export-highlight-first-table-line
+    :style                 org-export-html-style
+    :convert-org-links     org-export-html-link-org-files-as-html
+    :inline-images         org-export-html-inline-images
+    :expand-quoted-html    org-export-html-expand
+    :timestamp             org-export-html-with-timestamp
+    :publishing-directory  org-export-publishing-directory
+    :preamble              org-export-html-preamble
+    :postamble             org-export-html-postamble
+    :auto-preamble         org-export-html-auto-preamble
+    :auto-postamble        org-export-html-auto-postamble
+    :author                user-full-name
+    :email                 user-mail-address
+
+The following properties may be used to control publishing of an
+index of files or summary page for a given project.
+
+    :auto-index            Whether to publish an index during
+                           org-publish-current-project or org-publish-all.
+    :index-filename        Filename for output of index. Defaults
+                           to 'index.org' (which becomes 'index.html')
+    :index-title           Title of index page. Defaults to name of file.
+    :index-function        Plugin function to use for generation of index.
+                           Defaults to 'org-publish-org-index', which
+                           generates a plain list of links to all files
+                           in the project.
+"
+  :group 'org-publish
+  :type 'alist)
+
+
+(defcustom org-publish-use-timestamps-flag t
+  "When non-nil, use timestamp checking to publish only changed files.
+When nil, do no timestamp checking and always publish all
+files."
+  :group 'org-publish
+  :type 'boolean)
+
+
+(defcustom org-publish-timestamp-directory "~/.org-timestamps/"
+  "Name of directory in which to store publishing timestamps."
+  :group 'org-publish
+  :type 'string)
+
+
+;;;; Timestamp-related functions
+
+
+(defun org-publish-timestamp-filename (filename)
+  "Return path to timestamp file for filename FILENAME."
+  (while (string-match "~\\|/" filename)
+    (setq filename (replace-match "_" nil t filename)))
+  (concat org-publish-timestamp-directory filename ".timestamp"))
+
+
+(defun org-publish-needed-p (filename)
+  "Check whether file should be published.
+If org-publish-use-timestamps-flag is set to nil, this function always
+returns t. Otherwise, check the timestamps folder to determine
+whether file should be published."
+  (if org-publish-use-timestamps-flag
+      (progn
+       ;;
+       ;; create folder if needed
+       (if (not (file-exists-p org-publish-timestamp-directory))
+           (make-directory org-publish-timestamp-directory)
+         (if (not (file-directory-p org-publish-timestamp-directory))
+             (error "org-publish-timestamp-directory must be a directory.")))
+       ;;
+       ;; check timestamp. ok if timestamp file doesn't exist
+       (let* ((timestamp (org-publish-timestamp-filename filename))
+              (rtn (file-newer-than-file-p filename timestamp)))
+         (if rtn
+             ;; handle new timestamps
+             (if (not (file-exists-p timestamp))
+                 ;; create file
+                 (with-temp-buffer
+                   (make-directory (file-name-directory timestamp) :parents)
+                   (write-file timestamp)
+                   (kill-buffer (current-buffer)))))
+         rtn))
+    t))
+
+
+(defun org-publish-update-timestamp (filename)
+  "Update publishing timestamp for file FILENAME."
+  (let ((timestamp (org-publish-timestamp-filename filename)))
+    ;; Emacs 21 doesn't have set-file-times
+    (if (fboundp 'set-file-times)
+        (set-file-times timestamp)
+      (call-process "touch" nil 0 nil timestamp))))
+
+
+;;;; A hash mapping files to project names
+
+
+(defvar org-publish-files (make-hash-table :test 'equal) "Hash
+table mapping file names to project names.")
+
+
+;;;; Checking filenames against this hash
+
+
+(defun org-publish-validate-link (link &optional directory)
+  (gethash (file-truename (expand-file-name link directory))
+          org-publish-files))
+
+
+;;;; Getting project information out of org-publish-project-alist
+
+
+(defun org-publish-get-plists (&optional project-name)
+ "Return a list of property lists for project PROJECT-NAME.
+When argument is not given, return all property lists for all projects."
+ (let ((alist (if project-name
+                  (list (assoc project-name org-publish-project-alist))
+                org-publish-project-alist))
+       (project nil)
+       (plists nil)
+       (single nil)
+       (components nil))
+
+   ;;
+   ;;
+   (while (setq project (pop alist))
+     ;; what kind of project is it?
+     (if (setq components (plist-get (cdr project) :components))
+         ;; meta project. annotate each plist with name of enclosing project
+         (setq single
+               (apply 'append
+                      (mapcar 'org-publish-get-plists components)))
+       ;; normal project
+       (setq single (list (cdr project))))
+     ;;
+     (setq plists (append plists single))
+     (dolist (p single)
+       (let* ((exclude (plist-get p :exclude))
+              (files (org-publish-get-base-files p exclude)))
+         (dolist (f files)
+           (puthash (file-truename f) (car project) org-publish-files)))))
+   plists))
+
+
+
+(defun org-publish-get-base-files (plist &optional exclude-regexp)
+  "Return a list of all files in project defined by PLIST.
+If EXCLUDE-REGEXP is set, this will be used to filter out
+matching filenames."
+  (let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
+        (include-list (plist-get plist :include))
+        (extension (or (plist-get plist :base-extension) "org"))
+        (regexp (concat "^[^\\.].*\\.\\(" extension "\\)$"))
+        (allfiles (directory-files dir t regexp)))
+    ;;
+    ;; exclude files
+    (setq allfiles
+         (if (not exclude-regexp)
+             allfiles
+           (delq nil
+                 (mapcar (lambda (x)
+                           (if (string-match exclude-regexp x) nil x))
+                         allfiles))))
+    ;;
+    ;; include extra files
+    (let ((inc nil))
+      (while (setq inc (pop include-list))
+       (setq allfiles (cons (expand-file-name inc dir) allfiles))))
+
+    allfiles))
+
+
+(defun org-publish-get-project-from-filename (filename)
+  "Figure out which project a given FILENAME belongs to, if any.
+Filename should contain full path. Returns name of project, or
+nil if not found."
+  (org-publish-get-plists)
+  (gethash (file-truename filename) org-publish-files))
+
+
+(defun org-publish-get-plist-from-filename (filename)
+  "Return publishing configuration plist for file FILENAME."
+  (let ((found nil))
+    (mapc
+     (lambda (plist)
+       (let ((files (org-publish-get-base-files plist)))
+        (if (member (expand-file-name filename) files)
+            (setq found plist))))
+     (org-publish-get-plists))
+    found))
+
+
+
+;;;; Pluggable publishing back-end functions
+
+
+(defun org-publish-org-to-html (plist filename)
+  "Publish an org file to HTML.
+PLIST is the property list for the given project.
+FILENAME is the filename of the org file to be published."
+  (require 'org)
+  (let* ((arg (plist-get plist :headline-levels)))
+    (progn
+      (find-file filename)
+      (org-export-as-html arg nil plist)
+      ;; get rid of HTML buffer
+      (kill-buffer (current-buffer)))))
+
+
+(defun org-publish-org-to-latex (plist filename)
+  "Publish an org file to LaTeX."
+  (org-publish-org-to "latex" plist filename))
+
+(defun org-publish-org-to-html (plist filename)
+  "Publish an org file to HTML."
+  (org-publish-org-to "html" plist filename))
+
+(defun org-publish-org-to (format plist filename)
+  "Publish an org file to FORMAT.
+PLIST is the property list for the given project.
+FILENAME is the filename of the org file to be published."
+  (require 'org)
+  (let* ((arg (plist-get plist :headline-levels)))
+    (progn
+      (find-file filename)
+      (funcall (intern (concat "org-export-as-" format))
+              arg nil plist)
+      (kill-buffer (current-buffer)))))
+
+
+(defun org-publish-attachment (plist filename)
+  "Publish a file with no transformation of any kind.
+PLIST is the property list for the given project.
+FILENAME is the filename of the file to be published."
+  ;; make sure eshell/cp code is loaded
+  (require 'eshell)
+  (require 'esh-maint)
+  (require 'em-unix)
+  (let ((destination (file-name-as-directory (plist-get plist :publishing-directory))))
+    (eshell/cp filename destination)))
+
+
+;;;; Publishing files, sets of files, and indices
+
+
+(defun org-publish-file (filename)
+  "Publish file FILENAME."
+  (let* ((project-name (org-publish-get-project-from-filename filename))
+        (plist (org-publish-get-plist-from-filename filename))
+        (publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html)))
+    (if (not project-name)
+       (error (format "File %s is not part of any known project." filename)))
+    (when (org-publish-needed-p filename)
+      (if (listp publishing-function)
+         ;; allow chain of publishing functions
+         (mapc (lambda (f)
+                 (funcall f plist filename)) 
+               publishing-function)
+       (funcall publishing-function plist filename))
+      (org-publish-update-timestamp filename))))
+
+
+(defun org-publish-plist (plist)
+  "Publish all files in set defined by PLIST.
+ If :auto-index is set, publish the index too."
+  (let* ((exclude-regexp (plist-get plist :exclude))
+        (publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html))
+        (index-p (plist-get plist :auto-index))
+         (index-filename (or (plist-get plist :index-filename) "index.org"))
+        (index-function (or (plist-get plist :index-function) 'org-publish-org-index))
+        (preparation-function (plist-get plist :preparation-function))
+        (f nil))
+    ;;
+    (when preparation-function
+      (funcall preparation-function))
+    (if index-p
+       (funcall index-function plist index-filename))
+    (let ((files (org-publish-get-base-files plist exclude-regexp)))
+      (while (setq f (pop files))
+       ;; check timestamps
+       (when (org-publish-needed-p f)
+         (if (listp publishing-function)
+             ;; allow chain of publishing functions
+             (mapc (lambda (func)
+                     (funcall func plist f)) 
+                   publishing-function)
+           (funcall publishing-function plist f))
+         (org-publish-update-timestamp f))))))
+
+
+(defun org-publish-org-index (plist &optional index-filename)
+  "Create an index of pages in set defined by PLIST.
+Optionally set the filename of the index with INDEX-FILENAME;
+default is 'index.org'."
+  (let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
+        (exclude-regexp (plist-get plist :exclude))
+        (files (org-publish-get-base-files plist exclude-regexp))
+        (index-filename (concat dir (or index-filename "index.org")))
+        (index-buffer (find-buffer-visiting index-filename))
+        (ifn (file-name-nondirectory index-filename))
+        (f nil))
+    ;;
+    ;; if buffer is already open, kill it to prevent error message
+    (if index-buffer
+       (kill-buffer index-buffer))
+    (with-temp-buffer
+      (while (setq f (pop files))
+       (let ((fn (file-name-nondirectory f)))
+         (unless (string= fn ifn) ;; index shouldn't index itself
+           (insert (concat " + [[file:" fn "]["
+                           (file-name-sans-extension fn)
+                           "]]\n")))))
+      (write-file index-filename)
+      (kill-buffer (current-buffer)))))
+
+
+;(defun org-publish-meta-index (meta-plist &optional index-filename)
+;  "Create an index for a metaproject."
+;  (let* ((plists (
+
+
+;;;; Interactive publishing functions
+
+
+;;;###autoload
+(defun org-publish (project-name &optional force)
+  "Publish the project PROJECT-NAME."
+  (interactive (list (completing-read "Project name: " org-publish-project-alist
+                                     nil t)
+                    current-prefix-arg))
+  (save-window-excursion
+    (let ((org-publish-use-timestamps-flag (if force nil t))
+         (plists (org-publish-get-plists project-name)))
+      (mapcar 'org-publish-plist plists))))
+
+
+;;;###autoload
+(defun org-publish-current-project (&optional force)
+  "Publish the project associated with the current file.
+With prefix argument, force publishing all files in project."
+  (interactive "P")
+  (save-window-excursion
+    (let* ((project-name (org-publish-get-project-from-filename (buffer-file-name)))
+          (org-publish-use-timestamps-flag (if force nil t)))
+      (if (not project-name)
+         (error (format "File %s is not part of any known project." (buffer-file-name))))
+      (org-publish project-name))))
+
+
+;;;###autoload
+(defun org-publish-current-file (&optional force)
+  "Publish the current file.
+With prefix argument, force publish the file."
+  (interactive "P")
+  (save-window-excursion
+    (let ((org-publish-use-timestamps-flag
+          (if force nil t)))
+      (org-publish-file (buffer-file-name)))))
+
+
+;;;###autoload
+(defun org-publish-all (&optional force)
+  "Publish all projects.
+With prefix argument, force publish all files."
+  (interactive "P")
+  (save-window-excursion
+    (let ((org-publish-use-timestamps-flag
+          (if force nil t))
+         (plists (org-publish-get-plists)))
+      (mapcar 'org-publish-plist plists))))
+
+
+
+(provide 'org-publish)
+
+;; arch-tag: 72807f3c-8af0-4a6b-8dca-c3376eb25adb
+;;; org-publish.el ends here
index b3ddb451c3037a5a2d405bf24aeb0cf28f59d11d..6c48c47d3adcf1f7c4f9fbcde0a0032775fce92d 100644 (file)
@@ -1,11 +1,11 @@
-;;;; org.el --- Outline-based notes management and organize
+;;; org.el --- Outline-based notes management and organizer
 ;; Carstens outline-mode for keeping track of everything.
 ;; Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 ;;
-;; Author: Carsten Dominik <dominik at science dot uva dot nl>
+;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
-;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 4.67d
+;; Homepage: http://orgmode.org
+;; Version: 5.11b
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -49,7 +49,7 @@
 ;; ---------------------------
 ;; See the corresponding sections in the manual at
 ;;
-;;   http://staff.science.uva.nl/~dominik/Tools/org/org.html#Installation
+;;   http://orgmode.org/org.html#Installation
 ;;
 ;; Documentation
 ;; -------------
@@ -60,7 +60,7 @@
 ;; in the etc/ directory of Emacs 22.
 ;;
 ;; A list of recent changes can be found at
-;; http://www.astro.uva.nl/~dominik/Tools/org/Changes
+;; http://orgmode.org/Changes.html
 ;;
 ;;; Code:
 
@@ -83,7 +83,7 @@
 
 ;;; Version
 
-(defvar org-version "4.67c"
+(defconst org-version "5.11"
   "The version number of the file org.el.")
 (defun org-version ()
   (interactive)
     (get-text-property 0 'test (format "%s" x)))
   "Does format transport text properties?")
 
+(defmacro org-unmodified (&rest body)
+  "Execute body without changing buffer-modified-p."
+  `(set-buffer-modified-p
+    (prog1 (buffer-modified-p) ,@body)))
+
+(defmacro org-re (s)
+  "Replace posix classes in regular expression."
+  (if (featurep 'xemacs)
+      (let ((ss s))
+       (save-match-data
+         (while (string-match "\\[:alnum:\\]" ss)
+           (setq ss (replace-match "a-zA-Z0-9" t t ss)))
+         (while (string-match "\\[:alpha:\\]" ss)
+           (setq ss (replace-match "a-zA-Z" t t ss)))
+         ss))
+    s))
+
+(defmacro org-preserve-lc (&rest body)
+  `(let ((_line (org-current-line))
+        (_col (current-column)))
+     (unwind-protect
+        (progn ,@body)
+       (goto-line _line)
+       (move-to-column _col))))
+
+(defmacro org-without-partial-completion (&rest body)
+  `(let ((pc-mode (and (boundp 'partial-completion-mode)
+                      partial-completion-mode)))
+     (unwind-protect
+        (progn
+          (if pc-mode (partial-completion-mode -1))
+          ,@body)
+       (if pc-mode (partial-completion-mode 1)))))  
+
 ;;; The custom variables
 
 (defgroup org nil
   :group 'hypermedia
   :group 'calendar)
 
+;; FIXME: Needs a separate group...
+(defcustom org-completion-fallback-command 'hippie-expand
+  "The expansion command called by \\[org-complete] in normal context.
+Normal means, no org-mode-specific context."
+  :group 'org
+  :type 'function)
+
 (defgroup org-startup nil
   "Options concerning startup of Org-mode."
   :tag "Org Startup"
@@ -153,21 +194,13 @@ has been set."
   :group 'org-startup
   :type 'boolean)
 
-(defcustom org-CUA-compatible nil
-  "Non-nil means use alternative key bindings for S-<cursor movement>.
-Org-mode used S-<cursor movement> for changing timestamps and priorities.
-S-<cursor movement> is also used for example by `CUA-mode' to select text.
-If you want to use Org-mode together with `CUA-mode', Org-mode needs to use
-alternative bindings.  Setting this variable to t will replace the following
-keys both in Org-mode and in the Org-agenda buffer.
-
-S-RET   -> C-S-RET
-S-up    -> M-p
-S-down  -> M-n
-S-left  -> M--
-S-right -> M-+
-
-If you do not like the alternative keys, take a look at the variable
+(defcustom org-replace-disputed-keys nil
+  "Non-nil means use alternative key bindings for some keys.
+Org-mode uses S-<cursor> keys for changing timestamps and priorities.
+These keys are also used by other packages like `CUA-mode' or `windmove.el'.
+If you want to use Org-mode together with one of these other modes,
+or more generally if you would like to move some Org-mode commands to
+other keys, set this variable and configure the keys with the variable
 `org-disputed-keys'.
 
 This option is only relevant at load-time of Org-mode, and must be set
@@ -176,30 +209,58 @@ become effective."
   :group 'org-startup
   :type 'boolean)
 
-(defvar org-disputed-keys
-  '((S-up     [(shift up)]      [(meta ?p)])
-    (S-down   [(shift down)]    [(meta ?n)])
-    (S-left   [(shift left)]    [(meta ?-)])
-    (S-right  [(shift right)]   [(meta ?+)])
-    (S-return [(shift return)]  [(control shift return)]))
+(if (fboundp 'defvaralias)
+    (defvaralias 'org-CUA-compatible 'org-replace-disputed-keys))
+
+(defcustom org-disputed-keys
+  '(([(shift up)]              . [(meta p)])
+    ([(shift down)]            . [(meta n)])
+    ([(shift left)]            . [(meta -)])
+    ([(shift right)]           . [(meta +)])
+    ([(control shift right)]   . [(meta shift +)])
+    ([(control shift left)]    . [(meta shift -)]))
   "Keys for which Org-mode and other modes compete.
-This is an alist, cars are symbols for lookup, 1st element is the default key,
-second element will be used when `org-CUA-compatible' is t.")
+This is an alist, cars are the default keys, second element specifies
+the alternative to use when `org-replace-disputed-keys' is t.
+
+Keys can be specified in any syntax supported by `define-key'.
+The value of this option takes effect only at Org-mode's startup,
+therefore you'll have to restart Emacs to apply it after changing."
+  :group 'org-startup
+  :type 'alist)
 
 (defun org-key (key)
-  "Select a key according to `org-CUA-compatible'."
-  (nth (if org-CUA-compatible 2 1)
-       (or (assq key org-disputed-keys)
-          (error "Invalid Key %s in `org-key'" key))))
+  "Select key according to `org-replace-disputed-keys' and `org-disputed-keys'.
+Or return the original if not disputed."
+  (if org-replace-disputed-keys
+      (let* ((nkey (key-description key))
+            (x (org-find-if (lambda (x)
+                              (equal (key-description (car x)) nkey))
+                            org-disputed-keys)))
+       (if x (cdr x) key))
+    key))
+
+(defun org-find-if (predicate seq)
+  (catch 'exit
+    (while seq
+      (if (funcall predicate (car seq))
+         (throw 'exit (car seq))
+       (pop seq)))))
+
+(defun org-defkey (keymap key def)
+  "Define a key, possibly translated, as returned by `org-key'."
+  (define-key keymap (org-key key) def))
 
 (defcustom org-ellipsis nil
   "The ellipsis to use in the Org-mode outline.
 When nil, just use the standard three dots.  When a string, use that instead,
-and just in Org-mode (which will then use its own display table).
+When a face, use the standart 3 dots, but with the specified face.
+The change affects only Org-mode (which will then use its own display table).
 Changing this requires executing `M-x org-mode' in a buffer to become
 effective."
   :group 'org-startup
   :type '(choice (const :tag "Default" nil)
+                (face :tag "Face" :value org-warning)
                 (string :tag "String" :value "...#")))
 
 (defvar org-display-table nil
@@ -255,7 +316,9 @@ An entry can be toggled between QUOTE and normal with
   :group 'org-keywords
   :type 'string)
 
-(defvar org-repeat-re "\\<REPEAT(\\([-+ 0-9dwmy]+\\))"
+(defconst org-repeat-re
+  (concat "\\(?:\\<\\(?:" org-scheduled-string "\\|" org-deadline-string "\\)"
+         " +<[0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9] [^>\n]*\\)\\(\\+[0-9]+[dwmy]\\)")
   "Regular expression for specifying repeated events.
 After a match, group 1 contains the repeat expression.")
 
@@ -304,7 +367,7 @@ contexts.  Valid contexts are
                    (const default))
                   (boolean)))))
 
-(defcustom org-show-following-heading '((default . t))
+(defcustom org-show-following-heading '((default . nil))
   "Non-nil means, show following heading when revealing a location.
 Org-mode often shows locations in an org-mode file which might have
 been invisible before.  When this is set, the heading following the
@@ -368,7 +431,19 @@ contexts.  See `org-show-hierarchy-above' for valid contexts."
   :tag "Org Cycle"
   :group 'org-structure)
 
-(defcustom org-cycle-global-at-bob t
+(defcustom org-drawers '("PROPERTIES" "CLOCK")
+  "Names of drawers.  Drawers are not opened by cycling on the headline above.
+Drawers only open with a TAB on the drawer line itself.  A drawer looks like
+this:
+   :DRAWERNAME:
+   .....
+   :END:
+The drawer \"PROPERTIES\" is special for capturing properties through
+the property API."
+  :group 'org-structure
+  :type '(repeat (string :tag "Drawer Name")))
+
+(defcustom org-cycle-global-at-bob nil
   "Cycle globally if cursor is at beginning of buffer and not at a headline.
 This makes it possible to do global cycling without having to use S-TAB or
 C-u TAB.  For this special case to work, the first line of the buffer
@@ -386,6 +461,7 @@ nil         Never
 white       Only in completely white lines
 whitestart  Only at the beginning of lines, before the first non-white char.
 t           Everywhere except in headlines
+exc-hl-bol  Everywhere except at the start of a headline
 If TAB is used in a place where it does not emulate TAB, the current subtree
 visibility is cycled."
   :group 'org-cycle
@@ -393,9 +469,26 @@ visibility is cycled."
                 (const :tag "Only in completely white lines" white)
                 (const :tag "Before first char in a line" whitestart)
                 (const :tag "Everywhere except in headlines" t)
+                (const :tag "Everywhere except at bol in headlines" exc-hl-bol)
                 ))
 
+(defcustom org-cycle-separator-lines 2
+  "Number of empty lines needed to keep an empty line between collapsed trees.
+If you leave an empty line between the end of a subtree and the following
+headline, this empty line is hidden when the subtree is folded.
+Org-mode will leave (exactly) one empty line visible if the number of
+empty lines is equal or larger to the number given in this variable.
+So the default 2 means, at least 2 empty lines after the end of a subtree
+are needed to produce free space between a collapsed subtree and the
+following headline.
+
+Special case: when 0, never leave empty lines in collapsed view."
+  :group 'org-cycle
+  :type 'integer)
+
 (defcustom org-cycle-hook '(org-cycle-hide-archived-subtrees
+                           org-cycle-hide-drawers
+                           org-cycle-show-empty-lines
                            org-optimize-window-after-visibility-change)
   "Hook that is run after `org-cycle' has changed the buffer visibility.
 The function(s) in this hook must accept a single argument which indicates
@@ -406,12 +499,33 @@ the values `folded', `children', or `subtree'."
   :group 'org-cycle
   :type 'hook)
 
-
 (defgroup org-edit-structure nil
   "Options concerning structure editing in Org-mode."
   :tag "Org Edit Structure"
   :group 'org-structure)
 
+(defcustom org-special-ctrl-a/e nil
+  "Non-nil means `C-a' and `C-e' behave specially in headlines and items.
+When t, `C-a' will bring back the cursor to the beginning of the
+headline text, i.e. after the stars and after a possible TODO keyword.
+In an item, this will be the position after the bullet.
+When the cursor is already at that position, another `C-a' will bring
+it to the beginning of the line.
+`C-e' will jump to the end of the headline, ignoring the presence of tags
+in the headline.  A second `C-e' will then jump to the true end of the
+line, after any tags.
+When set to the symbol `reversed', the first `C-a' or `C-e' works normally,
+and only a directly following, identical keypress will bring the cursor
+to the special positions."
+  :group 'org-edit-structure
+  :type '(choice
+         (const :tag "off" nil)
+         (const :tag "after bullet first" t)
+         (const :tag "border first" reversed)))
+
+(if (fboundp 'defvaralias)
+    (defvaralias 'org-special-ctrl-a 'org-special-ctrl-a/e))
+
 (defcustom org-odd-levels-only nil
   "Non-nil means, skip even levels and only use odd levels for the outline.
 This has the effect that two stars are being added/taken away in
@@ -606,18 +720,49 @@ line like
   :type 'string)
 
 (defcustom org-archive-mark-done t
-  "Non-nil means, mark entries as DONE when they are moved to the archive file."
+  "Non-nil means, mark entries as DONE when they are moved to the archive file.
+This can be a string to set the keyword to use.  When t, Org-mode will
+use the first keyword in its list that means done."
   :group 'org-archive
-  :type 'boolean)
+  :type '(choice
+         (const :tag "No" nil)
+         (const :tag "Yes" t)
+         (string :tag "Use this keyword")))
 
 (defcustom org-archive-stamp-time t
   "Non-nil means, add a time stamp to entries moved to an archive file.
-The time stamp will be added directly after the TODO state keyword in the
-first line, so it is probably best to use this in combinations with
-`org-archive-mark-done'."
+This variable is obsolete and has no effect anymore, instead add ot remove
+`time' from the variablle `org-archive-save-context-info'."
   :group 'org-archive
   :type 'boolean)
 
+(defcustom org-archive-save-context-info '(time file category todo itags)
+  "Parts of context info that should be stored as properties when archiving.
+When a subtree is moved to an archive file, it looses information given by
+context, like inherited tags, the category, and possibly also the TODO
+state (depending on the variable `org-archive-mark-done').
+This variable can be a list of any of the following symbols:
+
+time       The time of archiving.
+file       The file where the entry originates.
+itags      The local tags, in the headline of the subtree.
+ltags      The tags the subtree inherits from further up the hierarchy.
+todo       The pre-archive TODO state.
+category   The category, taken from file name or #+CATEGORY lines.
+
+For each symbol present in the list, a property will be created in
+the archived entry, with a prefix \"PRE_ARCHIVE_\", to remember this
+information."
+  :group 'org-archive
+  :type '(set :greedy t
+         (const :tag "Time" time)
+         (const :tag "File" file)
+         (const :tag "Category" category)
+         (const :tag "TODO state" todo)
+         (const :tag "TODO state" priority)
+         (const :tag "Inherited tags" itags)
+         (const :tag "Local tags" ltags)))
+
 (defgroup org-table nil
   "Options concerning tables in Org-mode."
   :tag "Org Table"
@@ -706,7 +851,7 @@ table, obtained by prompting the user."
    :type 'string)
 
 (defcustom org-table-number-regexp
-  "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\)$"
+  "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\|nan\\)$"
   "Regular expression for recognizing numbers in table columns.
 If a table column contains mostly numbers, it will be aligned to the
 right.  If not, it will be aligned to the left.
@@ -731,7 +876,7 @@ Other options offered by the customize interface are more restrictive."
          (const :tag "Exponential, Floating point, Integer"
                 "^[-+]?[0-9.]+\\([eEdD][-+0-9]+\\)?$")
          (const :tag "Very General Number-Like, including hex"
-                "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\)$")
+                "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\|nan\\)$")
          (string :tag "Regexp:")))
 
 (defcustom org-table-number-fraction 0.5
@@ -783,6 +928,18 @@ calls `table-recognize-table'."
   :tag "Org Table Calculation"
   :group 'org-table)
 
+(defcustom org-table-use-standard-references t
+  "Should org-mode work with table refrences like B3 instead of @3$2?
+Possible values are:
+nil     never use them
+from    accept as input, do not present for editing
+t:      accept as input and present for editing"
+  :group 'org-table-calculation
+  :type '(choice
+         (const :tag "Never, don't even check unser input for them" nil)
+         (const :tag "Always, both as user input, and when editing" t)
+         (const :tag "Convert user input, don't offer during editing" 'from)))
+
 (defcustom org-table-copy-increment t
   "Non-nil means, increment when copying current field with \\[org-table-copy-down]."
   :group 'org-table-calculation
@@ -815,9 +972,6 @@ the command \\[org-table-eval-formula]."
   :group 'org-table-calculation
   :type 'boolean)
 
-;; FIXME this is also a variable that makes Org-mode files non-portable
-;; Maybe I should have a #+ options for constants?
-;; How about the SI/cgs issue?
 (defcustom org-table-formula-use-constants t
   "Non-nil means, interpret constants in formulas in tables.
 A constant looks like `$c' or `$Grav' and will be replaced before evaluation
@@ -834,12 +988,20 @@ speed of light in a formula, you would configure
 
   (setq org-table-formula-constants '((\"c\" . \"299792458.\")))
 
-and then use it in an equation like `$1*$c'."
+and then use it in an equation like `$1*$c'.
+
+Constants can also be defined on a per-file basis using a line like
+
+#+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6"
   :group 'org-table-calculation
   :type '(repeat
          (cons (string :tag "name")
                (string :tag "value"))))
 
+(defvar org-table-formula-constants-local nil
+  "Local version of `org-table-formula-constants'.")
+(make-variable-buffer-local 'org-table-formula-constants-local)
+
 (defcustom org-table-allow-automatic-line-recalculation t
   "Non-nil means, lines marked with |#| or |*| will be recomputed automatically.
 Automatically means, when TAB or RET or C-c C-c are pressed in the line."
@@ -852,7 +1014,7 @@ Automatically means, when TAB or RET or C-c C-c are pressed in the line."
   :group 'org)
 
 (defvar org-link-abbrev-alist-local nil
-  "buffer-local version of `org-link-abbrev-alist', which see.
+  "Buffer-local version of `org-link-abbrev-alist', which see.
 The value of this is taken from the #+LINK lines.")
 (make-variable-buffer-local 'org-link-abbrev-alist-local)
 
@@ -917,6 +1079,7 @@ Changing this variable requires a restart of Emacs to become effective."
              (const :tag "plain text links" plain)
              (const :tag "Radio target matches" radio)
              (const :tag "Tags" tag)
+             (const :tag "Tags" target)
              (const :tag "Timestamps" date)))
 
 (defgroup org-link-store nil
@@ -1228,6 +1391,15 @@ You can set this on a per-template basis with the variable
          (const :tag "Default from remember-data-file" nil)
          file))
 
+(defcustom org-remember-store-without-prompt t
+  "Non-nil means, `C-c C-c' stores remember note without further promts.
+In this case, you need `C-u C-c C-c' to get the prompts for
+note file and headline.
+When this variable is nil, `C-c C-c' give you the prompts, and
+`C-u C-c C-c' trigger the fasttrack."
+  :group 'org-remember
+  :type 'boolean)
+  
 (defcustom org-remember-default-headline ""
   "The headline that should be the default location in the notes file.
 When filing remember notes, the cursor will start at that position.
@@ -1243,7 +1415,7 @@ When not nil, this is a list of 4-element lists.  In each entry, the first
 element is a character, a unique key to select this template.
 The second element is the template.  The third element is optional and can
 specify a destination file for remember items created with this template.
-The default file is given by `org-default-notes-file'.  An optional third
+The default file is given by `org-default-notes-file'.  An optional forth
 element can specify the headline in that file that should be offered
 first when the user is asked to file the entry.  The default headline is
 given in the variable `org-remember-default-headline'.
@@ -1318,35 +1490,99 @@ When nil, new notes will be filed to the end of a file or entry."
   :tag "Org Progress"
   :group 'org-time)
 
-(defcustom org-todo-keywords '("TODO" "DONE")
-  "List of TODO entry keywords.
-\\<org-mode-map>By default, this is '(\"TODO\" \"DONE\").  The last entry in the list is
-considered to mean that the entry is \"done\".  All the other mean that
-action is required, and will make the entry show up in todo lists, diaries
-etc.
-The command \\[org-todo] cycles an entry through these states, and an
+(defcustom org-todo-keywords '((sequence "TODO" "DONE"))
+  "List of TODO entry keyword sequences and their interpretation.
+\\<org-mode-map>This is a list of sequences.
+
+Each sequence starts with a symbol, either `sequence' or `type',
+indicating if the keywords should be interpreted as a sequence of
+action steps, or as different types of TODO items.  The first
+keywords are states requiring action - these states will select a headline
+for inclusion into the global TODO list Org-mode produces.  If one of
+the \"keywords\" is the vertical bat \"|\" the remaining keywords
+signify that no further action is necessary.  If \"|\" is not found,
+the last keyword is treated as the only DONE state of the sequence.
+
+The command \\[org-todo] cycles an entry through these states, and one
 additional state where no keyword is present.  For details about this
-cycling, see also the variable `org-todo-interpretation'
-Changes become only effective after restarting Emacs."
+cycling, see the manual.
+
+TODO keywords and interpretation can also be set on a per-file basis with
+the special #+SEQ_TODO and #+TYP_TODO lines.
+
+For backward compatibility, this variable may also be just a list
+of keywords - in this case the interptetation (sequence or type) will be
+taken from the (otherwise obsolete) variable `org-todo-interpretation'."
   :group 'org-todo
   :group 'org-keywords
-  :type '(repeat (string :tag "Keyword")))
+  :type '(choice
+         (repeat :tag "Old syntax, just keywords"
+                 (string :tag "Keyword"))
+         (repeat :tag "New syntax"
+                 (cons
+                  (choice
+                   :tag "Interpretation"
+                   (const :tag "Sequence (cycling hits every state)" sequence)
+                   (const :tag "Type     (cycling directly to DONE)" type))
+                  (repeat
+                   (string :tag "Keyword"))))))
+
+(defvar org-todo-keywords-1 nil)
+(make-variable-buffer-local 'org-todo-keywords-1)
+(defvar org-todo-keywords-for-agenda nil)
+(defvar org-done-keywords-for-agenda nil)
+(defvar org-not-done-keywords nil)
+(make-variable-buffer-local 'org-not-done-keywords)
+(defvar org-done-keywords nil)
+(make-variable-buffer-local 'org-done-keywords)
+(defvar org-todo-heads nil)
+(make-variable-buffer-local 'org-todo-heads)
+(defvar org-todo-sets nil)
+(make-variable-buffer-local 'org-todo-sets)
+(defvar org-todo-log-states nil)
+(make-variable-buffer-local 'org-todo-log-states)
+(defvar org-todo-kwd-alist nil)
+(make-variable-buffer-local 'org-todo-kwd-alist)
+(defvar org-todo-key-alist nil)
+(make-variable-buffer-local 'org-todo-key-alist)
+(defvar org-todo-key-trigger nil)
+(make-variable-buffer-local 'org-todo-key-trigger)
 
 (defcustom org-todo-interpretation 'sequence
   "Controls how TODO keywords are interpreted.
-This variable is only relevant if `org-todo-keywords' contains more than two
-states.  \\<org-mode-map>Possible values are `sequence' and `type'.
-
-When `sequence', \\[org-todo] will always switch to the next state in the
-`org-todo-keywords' list. When `type', \\[org-todo] only cycles from state
-to state when executed several times in direct succession.  Otherwise, it
-switches directly to DONE from any state.
-See the manual for more information."
+This variable is in principle obsolete and is only used for
+backward compatibility, if the interpretation of todo keywords is
+not given already in `org-todo-keywords'.  See that variable for
+more information."
   :group 'org-todo
   :group 'org-keywords
   :type '(choice (const sequence)
                 (const type)))
 
+(defcustom org-use-fast-todo-selection 'prefix
+  "Non-nil means, use the fast todo selection scheme with C-c C-t.
+This variable describes if and under what circumstances the cycling
+mechanism for TODO keywords will be replaced by a single-key, direct
+selection scheme.
+
+When nil, fast selection is never used.
+
+When the symbol `prefix', it will be used when `org-todo' is called with
+a prefix argument,  i.e. `C-u C-c C-t' in an Org-mode buffer, and `C-u t'
+in an agenda buffer.
+
+When t, fast selection is used by default.  In this case, the prefix
+argument forces cycling instead.
+
+In all cases, the special interface is only used if access keys have actually
+been assigned by the user, i.e. if keywords in the configuration are followed
+by a letter in parenthesis, like TODO(t)."
+  :group 'org-todo
+  :type '(choice
+         (const :tag "Never" nil)
+         (const :tag "By default" t)
+         (const :tag "Only with C-u C-c C-t" prefix)))
+
 (defcustom org-after-todo-state-change-hook nil
   "Hook which is run after the state of a TODO item was changed.
 The new state (a string with a TODO keyword, or nil) is available in the
@@ -1356,8 +1592,8 @@ Lisp variable `state'."
 
 (defcustom org-log-done nil
   "When set, insert a (non-active) time stamp when TODO entry is marked DONE.
-When the state of an entry is changed from nothing to TODO, remove a previous
-closing date.
+When the state of an entry is changed from nothing or a DONE state to
+a not-done TODO state, remove a previous closing date.
 
 This can also be a list of symbols indicating under which conditions
 the time stamp recording the action should be annotated with a short note.
@@ -1382,7 +1618,10 @@ the following lines anywhere in the buffer:
    #+STARTUP: nologging
    #+STARTUP: lognotedone
    #+STARTUP: lognotestate
-   #+STARTUP: lognoteclock-out"
+   #+STARTUP: lognoteclock-out
+
+You can have local logging settings for a subtree by setting the LOGGING
+property to one or more of these keywords."
   :group 'org-todo
   :group 'org-progress
   :type '(choice
@@ -1393,12 +1632,18 @@ the following lines anywhere in the buffer:
               (const :tag "when TODO state changes" state)
               (const :tag "when clocking out" clock-out))))
 
+(defcustom org-log-done-with-time t
+  "Non-nil means, the CLOSED time stamp will contain date and time.
+When nil, only the date will be recorded."
+  :group 'org-progress
+  :type 'boolean)
+
 (defcustom org-log-note-headings
   '((done . "CLOSING NOTE %t")
     (state . "State %-12s %t")
     (clock-out . ""))
   "Headings for notes added when clocking out or closing TODO items.
-The value is an alist, with the car being a sympol indicating the note
+The value is an alist, with the car being a symbol indicating the note
 context, and the cdr is the heading to be used.  The heading may also be the
 empty string.
 %t in the heading will be replaced by a time stamp.
@@ -1414,30 +1659,77 @@ empty string.
                       state) string)
          (cons (const :tag "Heading when clocking out" clock-out) string)))
 
-(defcustom org-allow-auto-repeat t
-  "Non-nil means, find REPEAT cookies in entries and apply them.
-A repeat cookie looks like REPEAT(+1m) and causes deadlines and schedules
-to repeat themselves shifted by a certain amount of time, each time an
-entry is marked DONE."
+(defcustom org-log-states-order-reversed t
+  "Non-nil means, the latest state change note will be directly after heading.
+When nil, the notes will be orderer according to time."
+  :group 'org-todo
+  :group 'org-progress
+  :type 'boolean)
+
+(defcustom org-log-repeat t
+  "Non-nil means, prompt for a note when REPEAT is resetting a TODO entry.
+When nil, no note will be taken.
+This option can also be set with on a per-file-basis with
+
+   #+STARTUP: logrepeat
+   #+STARTUP: nologrepeat
+
+You can have local logging settings for a subtree by setting the LOGGING
+property to one or more of these keywords."
   :group 'org-todo
   :group 'org-progress
   :type 'boolean)
 
+(defcustom org-clock-into-drawer 2
+  "Should clocking info be wrapped into a drawer?
+When t, clocking info will always be inserted into a :CLOCK: drawer.
+If necessary, the drawer will be created.
+When nil, the drawer will not be created, but used when present.
+When an integer and the number of clocking entries in an item
+reaches or exceeds this number, a drawer will be created."
+  :group 'org-todo
+  :group 'org-progress
+  :type '(choice
+         (const :tag "Always" t)
+         (const :tag "Only when drawer exists" nil)
+         (integer :tag "When at least N clock entries")))
+
+(defcustom org-clock-out-when-done t
+  "When t, the clock will be stopped when the relevant entry is marked DONE.
+Nil means, clock will keep running until stopped explicitly with
+`C-c C-x C-o', or until the clock is started in a different item."
+  :group 'org-progress
+  :type 'boolean)
+
 (defgroup org-priorities nil
   "Priorities in Org-mode."
   :tag "Org Priorities"
   :group 'org-todo)
 
+(defcustom org-highest-priority ?A
+  "The highest priority of TODO items.  A character like ?A, ?B etc.
+Must have a smaller ASCII number than `org-lowest-priority'."
+  :group 'org-priorities
+  :type 'character)
+
+(defcustom org-lowest-priority ?C
+  "The lowest priority of TODO items.  A character like ?A, ?B etc.
+Must have a larger ASCII number than `org-highest-priority'."
+  :group 'org-priorities
+  :type 'character)
+
 (defcustom org-default-priority ?B
   "The default priority of TODO items.
 This is the priority an item get if no explicit priority is given."
   :group 'org-priorities
   :type 'character)
 
-(defcustom org-lowest-priority ?C
-  "The lowest priority of TODO items.  A character like ?A, ?B etc."
+(defcustom org-priority-start-cycle-with-default t
+  "Non-nil means, start with default priority when starting to cycle.
+When this is nil, the first step in the cycle will be (depending on the
+command used) one higher or lower that the default priority."
   :group 'org-priorities
-  :type 'character)
+  :type 'boolean)
 
 (defgroup org-time nil
   "Options concerning time stamps and deadlines in Org-mode."
@@ -1479,7 +1771,8 @@ To turn this on on a per-file basis, insert anywhere in the file:
   '("<%m/%d/%y %a>" . "<%m/%d/%y %a %H:%M>") ; american
   "Custom formats for time stamps.  See `format-time-string' for the syntax.
 These are overlayed over the default ISO format if the variable
-`org-display-custom-times' is set."
+`org-display-custom-times' is set.  Time like %H:%M should be at the
+end of the second format."
   :group 'org-time
   :type 'sexp)
 
@@ -1491,9 +1784,11 @@ These are overlayed over the default ISO format if the variable
        (concat "[" (substring f 1 -1) "]")
       f)))
 
-(defcustom org-deadline-warning-days 30
+(defcustom org-deadline-warning-days 14
   "No. of days before expiration during which a deadline becomes active.
-This variable governs the display in sparse trees and in the agenda."
+This variable governs the display in sparse trees and in the agenda.
+When negative, it means use this number (the absolute value of it)
+even if a deadline has a different individual lead time specified."
   :group 'org-time
   :type 'number)
 
@@ -1505,6 +1800,12 @@ When nil, only the minibuffer will be available."
   :group 'org-time
   :type 'boolean)
 
+(defcustom org-edit-timestamp-down-means-later nil
+  "Non-nil means, S-down will increase the time in a time stamp.
+When nil, S-up will increase."
+  :group 'org-time
+  :type 'boolean)
+
 (defcustom org-calendar-follow-timestamp-change t
   "Non-nil means, make the calendar window follow timestamp changes.
 When a timestamp is modified and the calendar window is visible, it will be
@@ -1521,9 +1822,10 @@ moved to the new date."
   "List of tags allowed in Org-mode files.
 When this list is nil, Org-mode will base TAG input on what is already in the
 buffer.
-The value of this variable is an alist, the car may be (and should) be a
-character that is used to select that tag through the fast-tag-selection
-interface.  See the manual for details."
+The value of this variable is an alist, the car of each entry must be a
+keyword as a string, the cdr may be a character that is used to select
+that tag through the fast-tag-selection interface.
+See the manual for details."
   :group 'org-tags
   :type '(repeat
          (choice
@@ -1559,11 +1861,15 @@ displaying the tags menu is not even shown, until you press C-c again."
          (const :tag "Yes" t)
          (const :tag "Expert" expert)))
 
-(defcustom org-tags-column 48
+(defvar org-fast-tag-selection-include-todo nil
+  "Non-nil means, fast tags selection interface will also offer TODO states.
+This is an undocumented feature, you should not rely on it.")
+
+(defcustom org-tags-column -80
   "The column to which tags should be indented in a headline.
 If this number is positive, it specifies the column.  If it is negative,
 it means that the tags should be flushright to that column.  For example,
--79 works well for a normal 80 character screen."
+-80 works well for a normal 80 character screen."
   :group 'org-tags
   :type 'integer)
 
@@ -1602,6 +1908,44 @@ make sure all corresponding TODO items find their way into the list."
   "History of minibuffer reads for tags.")
 (defvar org-last-tags-completion-table nil
   "The last used completion table for tags.")
+(defvar org-after-tags-change-hook nil
+  "Hook that is run after the tags in a line have changed.")
+
+(defgroup org-properties nil
+  "Options concerning properties in Org-mode."
+  :tag "Org Properties"
+  :group 'org)
+
+(defcustom org-property-format "%-10s %s"
+  "How property key/value pairs should be formatted by `indent-line'.
+When `indent-line' hits a property definition, it will format the line
+according to this format, mainly to make sure that the values are
+lined-up with respect to each other."
+  :group 'org-properties
+  :type 'string)
+
+(defcustom org-columns-default-format "%25ITEM %TODO %3PRIORITY %TAGS"
+  "The default column format, if no other format has been defined.
+This variable can be set on the per-file basis by inserting a line
+
+#+COLUMNS: %25ITEM ....."
+  :group 'org-properties
+  :type 'string)
+
+(defcustom org-global-properties nil
+  "List of property/value pairs that can be inherited by any entry.
+You can set buffer-local values for this by adding lines like
+
+#+PROPERTY: NAME VALUE"
+  :group 'org-properties
+  :type '(repeat
+         (cons (string :tag "Property")
+               (string :tag "Value"))))
+
+(defvar org-local-properties nil
+  "List of property/value pairs that can be inherited by any entry.
+Valid for the current buffer.
+This variable is populated from #+PROPERTY lines.")
 
 (defgroup org-agenda nil
   "Options concerning agenda views in Org-mode."
@@ -1612,7 +1956,7 @@ make sure all corresponding TODO items find their way into the list."
   "Variable used by org files to set a category for agenda display.
 Such files should use a file variable to set it, for example
 
-   -*- mode: org; org-category: \"ELisp\"
+#   -*- mode: org; org-category: \"ELisp\"
 
 or contain a special line
 
@@ -1635,6 +1979,11 @@ agenda file per line."
          (repeat :tag "List of files" file)
          (file :tag "Store list in a file\n" :value "~/.agenda_files")))
 
+(defcustom org-agenda-skip-unavailable-files nil
+  "t means to just skip non-reachable files in `org-agenda-files'.
+Nil means to remove them, after a query, from the list."
+  :group 'org-agenda
+  :type 'boolean)
 
 (defcustom org-agenda-confirm-kill 1
   "When set, remote killing from the agenda buffer needs confirmation.
@@ -1654,17 +2003,81 @@ forth between agenda and calendar."
   :group 'org-agenda
   :type 'sexp)
 
+(defcustom org-agenda-compact-blocks nil
+  "Non-nil means, make the block agenda more compact.
+This is done by leaving out unnecessary lines."
+  :group 'org-agenda
+  :type nil)
+
+(defgroup org-agenda-export nil
+ "Options concerning exporting agenda views in Org-mode."
+ :tag "Org Agenda Export"
+ :group 'org-agenda)
+
+(defcustom org-agenda-with-colors t
+  "Non-nil means, use colors in agenda views."
+  :group 'org-agenda-export
+  :type 'boolean)
+
+(defcustom org-agenda-exporter-settings nil
+  "Alist of variable/value pairs that should be active during agenda export.
+This is a good place to set uptions for ps-print and for htmlize."
+  :group 'org-agenda-export
+  :type '(repeat
+         (list
+          (variable)
+          (sexp :tag "Value"))))
+
+(defcustom org-agenda-export-html-style ""
+  "The style specification for exported HTML Agenda files.
+If this variable contains a string, it will replace the default <style>
+section as produced by `htmlize'.
+Since there are different ways of setting style information, this variable
+needs to contain the full HTML structure to provide a style, including the
+surrounding HTML tags.  The style specifications should include definitions
+the fonts used by the agenda, here is an example:
+
+   <style type=\"text/css\">
+       p { font-weight: normal; color: gray; }
+       .org-agenda-structure {
+          font-size: 110%;
+          color: #003399;
+          font-weight: 600;
+       }
+       .org-todo {
+          color: #cc6666;Week-agenda:
+          font-weight: bold;
+       }
+       .org-done {
+          color: #339933;
+       }
+       .title { text-align: center; }
+       .todo, .deadline { color: red; }
+       .done { color: green; }
+    </style>
+
+or, if you want to keep the style in a file,
+
+   <link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\">
+
+As the value of this option simply gets inserted into the HTML <head> header,
+you can \"misuse\" it to also add other text to the header.  However,
+<style>...</style> is required, if not present the variable will be ignored."
+  :group 'org-agenda-export
+  :group 'org-export-html
+  :type 'string)
+
 (defgroup org-agenda-custom-commands nil
  "Options concerning agenda views in Org-mode."
  :tag "Org Agenda Custom Commands"
  :group 'org-agenda)
 
-(defcustom org-agenda-custom-commands '(("w" todo "WAITING"))
+(defcustom org-agenda-custom-commands nil
   "Custom commands for the agenda.
 These commands will be offered on the splash screen displayed by the
 agenda dispatcher \\[org-agenda].  Each entry is a list like this:
 
-   (key type match options)
+   (key type match options files)
 
 key     The key (a single char as a string) to be associated with the command.
 type    The command type, any of the following symbols:
@@ -1678,13 +2091,18 @@ match   What to search for:
          - a single keyword for TODO keyword searches
          - a tags match expression for tags searches
          - a regular expression for occur searches
-options  A list of option setttings, similar to that in a let form, so like
+options  A list of option settings, similar to that in a let form, so like
          this: ((opt1 val1) (opt2 val2) ...)
+files    A list of files file to write the produced agenda buffer to
+         with the command `org-store-agenda-views'.
+         If a file name ends in \".html\", an HTML version of the buffer
+         is written out.  If it ends in \".ps\", a postscript version is
+         produced.  Otherwide, only the plain text is written to the file.
 
 You can also define a set of commands, to create a composite agenda buffer.
 In this case, an entry looks like this:
 
-  (key desc (cmd1 cmd2 ...) general-options)
+  (key desc (cmd1 cmd2 ...) general-options file)
 
 where
 
@@ -1695,19 +2113,22 @@ cmd    An agenda command, similar to the above.  However, tree commands
        (agenda)
        (alltodo)
        (stuck)
-       (todo \"match\" options)
-       (tags \"match\" options )
-       (tags-todo \"match\" options)
+       (todo \"match\" options files)
+       (tags \"match\" options files)
+       (tags-todo \"match\" options files)
 
 Each command can carry a list of options, and another set of options can be
 given for the whole set of commands.  Individual command options take
 precedence over the general options."
   :group 'org-agenda-custom-commands
   :type '(repeat
-         (choice
+         (choice :value ("a" tags "" nil)
           (list :tag "Single command"
                 (string :tag "Key")
                 (choice
+                 (const :tag "Agenda" agenda)
+                 (const :tag "TODO list" alltodo)
+                 (const :tag "Stuck projects" stuck)
                  (const :tag "Tags search (all agenda files)" tags)
                  (const :tag "Tags search of TODO entries (all agenda files)" tags-todo)
                  (const :tag "TODO keyword search (all agenda files)" todo)
@@ -1717,7 +2138,8 @@ precedence over the general options."
                  (symbol :tag "Other, user-defined function"))
                 (string :tag "Match")
                 (repeat :tag "Local options"
-                        (list (variable :tag "Option") (sexp :tag "Value"))))
+                        (list (variable :tag "Option") (sexp :tag "Value")))
+                (option (repeat :tag "Export" (file :tag "Export to"))))
           (list :tag "Command series, all agenda files"
                 (string :tag "Key")
                 (string :tag "Description")
@@ -1756,20 +2178,24 @@ precedence over the general options."
 
                 (repeat :tag "General options"
                         (list (variable :tag "Option")
-                              (sexp :tag "Value")))))))
+                              (sexp :tag "Value")))
+                (option (repeat :tag "Export" (file :tag "Export to")))))))
 
 (defcustom org-stuck-projects
-  '("+LEVEL=2/-DONE" ("TODO" "NEXT" "NEXTACTION") nil)
+  '("+LEVEL=2/-DONE" ("TODO" "NEXT" "NEXTACTION") nil "")
   "How to identify stuck projects.
-This is a list of three items:
+This is a list of four items:
 1. A tags/todo matcher string that is used to identify a project.
-   The entire tree below a headline matched by this is considered a project.
-2. A list of TODO keywords itentifying non-stuck projects.
+   The entire tree below a headline matched by this is considered one project.
+2. A list of TODO keywords identifying non-stuck projects.
    If the project subtree contains any headline with one of these todo
-   keywords, the project is consitered to be not stuck.
+   keywords, the project is considered to be not stuck.  If you specify
+   \"*\" as a keyword, any TODO keyword will mark the project unstuck.
 3. A list of tags identifying non-stuck projects.
    If the project subtree contains any headline with one of these tags,
-   the project is consitered to be not stuck.
+   the project is considered to be not stuck.  If you specify \"*\" as
+   a tag, any tag will mark the project unstuck.
+4. An arbitrary regular expression matching non-stuck projects.
 
 After defining this variable, you may use \\[org-agenda-list-stuck-projects]
 or `C-c a #' to produce the list."
@@ -1777,7 +2203,8 @@ or `C-c a #' to produce the list."
   :type '(list
          (string :tag "Tags/TODO match to identify a project")
          (repeat :tag "Projects are *not* stuck if they have an entry with TODO keyword any of" (string))
-         (repeat :tag "Projects are *not* stuck if they have an entry with TAG being any of" (string))))
+         (repeat :tag "Projects are *not* stuck if they have an entry with TAG being any of" (string))
+         (regexp :tag "Projects are *not* stuck if this regexp matches\ninside the subtree")))
 
 
 (defgroup org-agenda-skip nil
@@ -1811,7 +2238,19 @@ The idea behind this is that such items will appear in the agenda anyway."
 
 (defcustom org-agenda-skip-scheduled-if-done nil
   "Non-nil means don't show scheduled items in agenda when they are done.
-This is relevant for the daily/weekly agenda, not for the TODO list."
+This is relevant for the daily/weekly agenda, not for the TODO list.  And
+it applies only to the actual date of the scheduling.  Warnings about
+an item with a past scheduling dates are always turned off when the item
+is DONE."
+  :group 'org-agenda-skip
+  :type 'boolean)
+
+(defcustom org-agenda-skip-deadline-if-done nil
+  "Non-nil means don't show deadines when the corresponding item is done.
+When nil, the deadline is still shown and should give you a happy feeling.
+This is relevant for the daily/weekly agenda.  And it applied only to the
+actualy date of the deadline.  Warnings about approching and past-due
+deadlines are always turned off when the item is DONE."
   :group 'org-agenda-skip
   :type 'boolean)
 
@@ -1846,7 +2285,7 @@ Needs to be set before org.el is loaded."
   :type 'boolean)
 
 (defcustom org-agenda-start-with-follow-mode nil
-  "The initial value of follwo-mode in a newly created agenda window."
+  "The initial value of follow-mode in a newly created agenda window."
   :group 'org-agenda-startup
   :type 'boolean)
 
@@ -1924,13 +2363,25 @@ When nil, only the days which actually have entries are shown."
   :group 'org-agenda-daily/weekly
   :type 'boolean)
 
-(defcustom org-agenda-date-format "%A %d %B %Y"
+(defcustom org-agenda-format-date 'org-agenda-format-date-aligned
   "Format string for displaying dates in the agenda.
 Used by the daily/weekly agenda and by the timeline.  This should be
-a format string understood by `format-time-string'.
-FIXME: Not used currently, because of timezone problem."
+a format string understood by `format-time-string', or a function returning
+the formatted date as a string.  The function must take a single argument,
+a calendar-style date list like (month day year)."
   :group 'org-agenda-daily/weekly
-  :type 'string)
+  :type '(choice
+         (string :tag "Format string")
+         (function :tag "Function")))
+
+(defun org-agenda-format-date-aligned (date)
+  "Format a date string for display in the daily/weekly agenda, or timeline.
+This function makes sure that dates are aligned for easy reading."
+  (format "%-9s %2d %s %4d"
+         (calendar-day-name date)
+         (extract-calendar-day date)
+         (calendar-month-name (extract-calendar-month date))
+         (extract-calendar-year date)))
 
 (defcustom org-agenda-include-diary nil
   "If non-nil, include in the agenda entries from the Emacs Calendar's diary."
@@ -1944,6 +2395,13 @@ the entries for specific days."
   :group 'org-agenda-daily/weekly
   :type 'boolean)
 
+(defcustom org-agenda-repeating-timestamp-show-all t
+  "Non-nil means, show all occurences of a repeating stamp in the agenda.
+When nil, only one occurence is shown, either today or the
+nearest into the future."
+  :group 'org-agenda-daily/weekly
+  :type 'boolean)
+
 (defgroup org-agenda-time-grid nil
   "Options concerning the time grid in the Org-mode Agenda."
   :tag "Org Agenda Time Grid"
@@ -2006,7 +2464,7 @@ a grid line."
   (defcustom org-agenda-sorting-strategy
     '((agenda time-up category-keep priority-down)
       (todo category-keep priority-down)
-      (tags category-keep))
+      (tags category-keep priority-down))
     "Sorting structure for the agenda items of a single day.
 This is a list of symbols which will be used in sequence to determine
 if an entry should be listed before another entry.  The following
@@ -2056,9 +2514,9 @@ agenda entries."
   :group 'org-agenda-sorting
   :type 'boolean)
 
-(defgroup org-agenda-prefix nil
+(defgroup org-agenda-line-format nil
   "Options concerning the entry prefix in the Org-mode agenda display."
-  :tag "Org Agenda Prefix"
+  :tag "Org Agenda Line Format"
   :group 'org-agenda)
 
 (defcustom org-agenda-prefix-format
@@ -2113,7 +2571,7 @@ the prefix, you could use:
   (setq org-agenda-prefix-format \"  %-11:c% s\")
 
 See also the variables `org-agenda-remove-times-when-in-prefix' and
-`org-agenda-remove-tags-when-in-prefix'."
+`org-agenda-remove-tags'."
   :type '(choice
          (string :tag "General format")
          (list :greedy t :tag "View dependent"
@@ -2121,7 +2579,7 @@ See also the variables `org-agenda-remove-times-when-in-prefix' and
                (cons  (const timeline) (string :tag "Format"))
                (cons  (const todo) (string :tag "Format"))
                (cons  (const tags) (string :tag "Format"))))
-  :group 'org-agenda-prefix)
+  :group 'org-agenda-line-format)
 
 (defvar org-prefix-format-compiled nil
   "The compiled version of the most recently used prefix format.
@@ -2138,40 +2596,66 @@ cluttered.
 The option can be t or nil.  It may also be the symbol `beg', indicating
 that the time should only be removed what it is located at the beginning of
 the headline/diary entry."
-  :group 'org-agenda-prefix
+  :group 'org-agenda-line-format
   :type '(choice
          (const :tag "Always" t)
          (const :tag "Never" nil)
          (const :tag "When at beginning of entry" beg)))
 
-(defcustom org-agenda-remove-tags-when-in-prefix nil
+
+(defcustom org-agenda-default-appointment-duration nil
+  "Default duration for appointments that only have a starting time.
+When nil, no duration is specified in such cases.
+When non-nil, this must be the number of minutes, e.g. 60 for one hour."
+  :group 'org-agenda-line-format
+  :type '(choice
+         (integer :tag "Minutes")
+         (const :tag "No default duration")))
+
+
+(defcustom org-agenda-remove-tags nil
   "Non-nil means, remove the tags from the headline copy in the agenda.
 When this is the symbol `prefix', only remove tags when
 `org-agenda-prefix-format' contains a `%T' specifier."
-  :group 'org-agenda-prefix
+  :group 'org-agenda-line-format
   :type '(choice
          (const :tag "Always" t)
          (const :tag "Never" nil)
          (const :tag "When prefix format contains %T" prefix)))
 
-(defcustom org-agenda-align-tags-to-column 65
-  "Shift tags in agenda items to this column."
-  :group 'org-agenda-prefix
+(if (fboundp 'defvaralias)
+    (defvaralias 'org-agenda-remove-tags-when-in-prefix
+      'org-agenda-remove-tags))
+
+(defcustom org-agenda-tags-column -80
+  "Shift tags in agenda items to this column.
+If this number is positive, it specifies the column.  If it is negative,
+it means that the tags should be flushright to that column.  For example,
+-80 works well for a normal 80 character screen."
+  :group 'org-agenda-line-format
   :type 'integer)
 
+(if (fboundp 'defvaralias)
+    (defvaralias 'org-agenda-align-tags-to-column 'org-agenda-tags-column))
+
 (defgroup org-latex nil
   "Options for embedding LaTeX code into Org-mode"
   :tag "Org LaTeX"
   :group 'org)
 
 (defcustom org-format-latex-options
-  '(:foreground "Black" :background "Transparent" :scale 1.0
-               :matchers ("begin" "$" "$$" "\\(" "\\["))
+  '(:foreground default :background default :scale 1.0
+    :html-foreground "Black" :html-background "Transparent" :html-scale 1.0
+    :matchers ("begin" "$" "$$" "\\(" "\\["))
   "Options for creating images from LaTeX fragments.
 This is a property list with the following properties:
-:foreground  the foreground color, for example \"Black\".
+:foreground  the foreground color for images embedded in emacs, e.g. \"Black\".
+             `default' means use the forground of the default face.
 :background  the background color, or \"Transparent\".
+             `default' means use the background of the default face.
 :scale       a scaling factor for the size of the images
+:html-foreground, :html-background, :html-scale
+             The same numbers for HTML export.
 :matchers    a list indicating which matchers should be used to
              find LaTeX fragments.  Valid members of this list are:
              \"begin\"  find environments
@@ -2182,6 +2666,18 @@ This is a property list with the following properties:
   :group 'org-latex
   :type 'plist)
 
+(defcustom org-format-latex-header "\\documentclass{article}
+\\usepackage{fullpage}         % do not remove
+\\usepackage{amssymb}
+\\usepackage[usenames]{color}
+\\usepackage{amsmath}
+\\usepackage{latexsym}
+\\usepackage[mathscr]{eucal}
+\\pagestyle{empty}             % do not remove"
+  "The document header used for processing LaTeX fragments."
+  :group 'org-latex
+  :type 'string)
+
 (defgroup org-export nil
   "Options for exporting org-listings."
   :tag "Org Export"
@@ -2197,16 +2693,17 @@ This is a property list with the following properties:
 This path may be relative to the directory where the Org-mode file lives.
 The default is to put them into the same directory as the Org-mode file.
 The variable may also be an alist with export types `:html', `:ascii',
-`:ical', or `:xoxo' and the corresponding directories.  If a direcoty path
-is relative, it is interpreted relative to the directory where the exported
-Org-mode files lives."
+`:ical', `:LaTeX', or `:xoxo' and the corresponding directories.
+If a directory path is relative, it is interpreted relative to the
+directory where the exported Org-mode files lives."
   :group 'org-export-general
   :type '(choice
          (directory)
          (repeat
           (cons
            (choice :tag "Type"
-                   (const :html) (const :ascii) (const :ical) (const :xoxo))
+                   (const :html) (const :LaTeX) 
+                   (const :ascii) (const :ical) (const :xoxo))
            (directory)))))
 
 (defcustom org-export-language-setup
@@ -2214,8 +2711,8 @@ Org-mode files lives."
     ("cs"  "Autor"           "Datum" "Obsah")
     ("da"  "Ophavsmand"      "Dato"  "Indhold")
     ("de"  "Autor"           "Datum" "Inhaltsverzeichnis")
-    ("es"  "Autor"           "Fecha" "\xccndice")
-    ("fr"  "Auteur"          "Date"  "Table des Mati\xe8res")
+    ("es"  "Autor"           "Fecha" "\xcdndice")
+    ("fr"  "Auteur"          "Date"  "Table des mati\xe8res")
     ("it"  "Autore"          "Data"  "Indice")
     ("nl"  "Auteur"          "Datum" "Inhoudsopgave")
     ("nn"  "Forfattar"       "Dato"  "Innhold")  ;; nn = Norsk (nynorsk)
@@ -2237,6 +2734,12 @@ This should have an association in `org-export-language-setup'."
   :group 'org-export-general
   :type 'string)
 
+(defcustom org-export-skip-text-before-1st-heading t
+  "Non-nil means, skip all text before the first headline when exporting.
+When nil, that text is exported as well."
+  :group 'org-export-general
+  :type 'boolean)
+
 (defcustom org-export-headline-levels 3
   "The last level which is still exported as a headline.
 Inferior levels will produce itemize lists when exported.
@@ -2303,6 +2806,23 @@ headline  Only export the headline, but skip the tree below it."
          (const :tag "headline only" 'headline)
          (const :tag "entirely" t)))
 
+(defcustom org-export-author-info t
+  "Non-nil means, insert author name and email into the exported file.
+
+This option can also be set with the +OPTIONS line,
+e.g. \"author-info:nil\"."
+  :group 'org-export-general
+  :type 'boolean)
+
+(defcustom org-export-time-stamp-file t
+  "Non-nil means, insert a time stamp into the exported file.
+The time stamp shows when the file was created.
+
+This option can also be set with the +OPTIONS line,
+e.g. \"timestamp:nil\"."
+  :group 'org-export-general
+  :type 'boolean)
+
 (defcustom org-export-with-timestamps t
   "If nil, do not export time stamps and associated keywords."
   :group 'org-export-general
@@ -2323,6 +2843,14 @@ contents entries, but still be shown in the headlines of the document."
          (const :tag "Not in TOC" not-in-toc)
          (const :tag "On" t)))
 
+(defcustom org-export-with-property-drawer nil
+  "Non-nil means, export property drawers.
+When nil, these drawers are removed before export.
+
+This option can also be set with the +OPTIONS line, e.g. \"p:t\"."
+  :group 'org-export-general
+  :type 'boolean)
+
 (defgroup org-export-translation nil
   "Options for translating special ascii sequences for the export backends."
   :tag "Org Export Translation"
@@ -2339,6 +2867,14 @@ This option can also be set with the +OPTIONS line, e.g. \"*:nil\"."
   :group 'org-export-translation
   :type 'boolean)
 
+(defcustom org-export-with-footnotes t
+  "If nil, export [1] as a footnote marker.
+Lines starting with [1] will be formatted as footnotes.
+
+This option can also be set with the +OPTIONS line, e.g. \"f:nil\"."
+  :group 'org-export-translation
+  :type 'boolean)
+
 (defcustom org-export-with-sub-superscripts t
   "Non-nil means, interpret \"_\" and \"^\" for export.
 When this option is turned on, you can use TeX-like syntax for sub- and
@@ -2354,12 +2890,19 @@ sub- or superscripts.
  x_{i^2} or   x^(2-i)    braces or parenthesis do grouping.
 
 Still, ambiguity is possible - so when in doubt use {} to enclose the
-sub/superscript.
+sub/superscript.  If you set this variable to the symbol `{}',
+the braces are *required* in order to trigger interpretations as
+sub/superscript.  This can be helpful in documents that need \"_\"
+frequently in plain text.
+
 Not all export backends support this, but HTML does.
 
 This option can also be set with the +OPTIONS line, e.g. \"^:nil\"."
   :group 'org-export-translation
-  :type 'boolean)
+  :type '(choice
+         (const :tag "Always interpret" t)
+         (const :tag "Only with braces" {})
+         (const :tag "Never interpret" nil)))
 
 (defcustom org-export-with-TeX-macros t
   "Non-nil means, interpret simple TeX-like macros when exporting.
@@ -2371,7 +2914,7 @@ Not all export backends support this.
 
 This option can also be set with the +OPTIONS line, e.g. \"TeX:nil\"."
   :group 'org-export-translation
-  :group 'org-latex
+  :group 'org-export-latex
   :type 'boolean)
 
 (defcustom org-export-with-LaTeX-fragments nil
@@ -2383,7 +2926,7 @@ display math.
 
 This option can also be set with the +OPTIONS line, e.g. \"LaTeX:t\"."
   :group 'org-export-translation
-  :group 'org-latex
+  :group 'org-export-latex
   :type 'boolean)
 
 (defcustom org-export-with-fixed-width t
@@ -2467,7 +3010,7 @@ In the given sequence, these characters will be used for level 1, 2, ..."
 
 (defcustom org-export-ascii-bullets '(?* ?+ ?-)
   "Bullet characters for headlines converted to lists in ASCII export.
-The first character is used for the first lest level generated in this
+The first character is is used for the first lest level generated in this
 way, and so on.  If there are more levels than characters given here,
 the list will be repeated.
 Note that plain lists will keep the same bullets as the have in the
@@ -2485,6 +3028,16 @@ Org-mode file."
   :tag "Org Export HTML"
   :group 'org-export)
 
+(defcustom org-export-html-coding-system nil
+  ""
+  :group 'org-export-html
+  :type 'coding-system)
+
+(defcustom org-export-html-extension "html"
+  "The extension for exported HTML files."
+  :group 'org-export-html
+  :type 'string)
+
 (defcustom org-export-html-style
 "<style type=\"text/css\">
   html {
@@ -2534,6 +3087,7 @@ you can \"misuse\" it to add arbitrary text to the header."
   :group 'org-export-html
   :type 'string)
 
+
 (defcustom org-export-html-title-format "<h1 class=\"title\">%s</h1>\n"
   "Format for typesetting the document title in HTML export."
   :group 'org-export-html
@@ -2579,12 +3133,24 @@ This option can also be set with the +OPTIONS line, e.g. \"@:nil\"."
 
 (defcustom org-export-html-table-tag
   "<table border=\"2\" cellspacing=\"0\" cellpadding=\"6\" rules=\"groups\" frame=\"hsides\">"
-  "The HTML tag used to start a table.
+  "The HTML tag that is used to start a table.
 This must be a <table> tag, but you may change the options like
 borders and spacing."
   :group 'org-export-html
   :type 'string)
 
+(defcustom org-export-table-header-tags '("<th>" . "</th>")
+  "The opening tag for table header fields.
+This is customizable so that alignment options can be specified."
+  :group 'org-export-tables
+  :type '(cons (string :tag "Opening tag") (string :tag "Closing tag")))
+
+(defcustom org-export-table-data-tags '("<td>" . "</td>")
+  "The opening tag for table data fields.
+This is customizable so that alignment options can be specified."
+  :group 'org-export-tables
+  :type '(cons (string :tag "Opening tag") (string :tag "Closing tag")))
+
 (defcustom org-export-html-with-timestamp nil
   "If non-nil, write `org-export-html-html-helper-timestamp'
 into the exported HTML text.  Otherwise, the buffer will just be saved
@@ -2606,7 +3172,7 @@ to a file."
 (defcustom org-combined-agenda-icalendar-file "~/org.ics"
   "The file name for the iCalendar file covering all agenda files.
 This file is created with the command \\[org-export-icalendar-all-agenda-files].
-The file name should be absolute."
+The file name should be absolute, the file will be overwritten without warning."
   :group 'org-export-icalendar
   :type 'file)
 
@@ -2618,6 +3184,23 @@ The file name should be absolute."
          (const :tag "Unfinished" t)
          (const :tag "All" all)))
 
+(defcustom org-icalendar-include-sexps t
+  "Non-nil means, export to iCalendar files should also cover sexp entries.
+These are entries like in the diary, but directly in an Org-mode file."
+  :group 'org-export-icalendar
+  :type 'boolean)
+
+(defcustom org-icalendar-include-body 100
+  "Amount of text below headline to be included in iCalendar export.
+This is a number of characters that should maximally be included.
+Properties, scheduling and clocking lines will always be removed.
+The text will be inserted into the DESCRIPTION field."
+  :group 'org-export-icalendar
+  :type '(choice
+         (const :tag "Nothing" nil)
+         (const :tag "Everything" t)
+         (integer :tag "Max characters")))
+
 (defcustom org-icalendar-combined-name "OrgMode"
   "Calendar name for the combined iCalendar representing all agenda files."
   :group 'org-export-icalendar
@@ -2690,8 +3273,6 @@ Changing this variable requires a restart of Emacs to take effect."
          (setq markers (concat (replace-match "" t t markers) "^")))
       (if (string-match "-" markers)
          (setq markers (concat (replace-match "" t t markers) "-")))
-;      (while (>= (setq nl (1- nl)) 0) (setq body1 (concat body1 "\n?" body "*?")))
-;      (while (>= (setq nl (1- nl)) 0) (setq body1 (concat body1 "\\(?:\n?" body "*?\\)?")))
       (if (> nl 0)
           (setq body1 (concat body1 "\\(?:\n" body "*?\\)\\{0,"
                               (int-to-string nl) "\\}")))
@@ -2701,15 +3282,15 @@ Changing this variable requires a restart of Emacs to take effect."
                    "\\("
                    "\\([" markers "]\\)"
                    "\\("
-                   "[^" border markers "]"
+                   "[^" border (if (and nil stacked) markers) "]"
                    body1
-                   "[^" border markers "]"
+                   "[^" border (if (and nil stacked) markers) "]"
                    "\\)"
                    "\\3\\)"
                    "\\([" post (if stacked markers) "]\\|$\\)")))))
 
 (defcustom org-emphasis-regexp-components
-  '(" \t('\"" " \t.,?;'\")" " \t\r\n," "." 1 nil)
+  '(" \t('\"" "- \t.,:?;'\")" " \t\r\n,\"'" "." 1 nil)
   "Components used to build the reqular expression for emphasis.
 This is a list with 6 entries.  Terminology:  In an emphasis string
 like \" *strong word* \", we call the initial space PREMATCH, the final
@@ -2719,8 +3300,7 @@ specify what is allowed/forbidden in each part:
 
 pre          Chars allowed as prematch.  Beginning of line will be allowed too.
 post         Chars allowed as postmatch.  End of line will be allowed too.
-border       The chars *forbidden* as border characters.  In addition to the
-             characters given here, all marker characters are forbidden too.
+border       The chars *forbidden* as border characters.
 body-regexp  A regexp like \".\" to match a body character.  Don't use
              non-shy groups here, and don't allow newline here.
 newline      The maximum number of newlines allowed in an emphasis exp.
@@ -2743,13 +3323,13 @@ Use customize to modify this, or restart Emacs after changing it."
   '(("*" bold "<b>" "</b>")
     ("/" italic "<i>" "</i>")
     ("_" underline "<u>" "</u>")
-    ("=" shadow "<code>" "</code>")
+    ("=" org-code "<code>" "</code>")
     ("+" (:strike-through t) "<del>" "</del>")
-)
+    )
 "Special syntax for emphasized text.
 Text starting and ending with a special character will be emphasized, for
 example *bold*, _underlined_ and /italic/.  This variable sets the marker
-characters, the face to bbe used by font-lock for highlighting in Org-mode
+characters, the face to be used by font-lock for highlighting in Org-mode
 Emacs buffers, and the HTML tags to be used for this.
 Use customize to modify this, or restart Emacs after changing it."
   :group 'org-font-lock
@@ -2770,26 +3350,36 @@ Use customize to modify this, or restart Emacs after changing it."
   :tag "Org Faces"
   :group 'org-font-lock)
 
-(defun org-compatible-face (specs)
+(defun org-compatible-face (inherits specs)
   "Make a compatible face specification.
+If INHERITS is an existing face and if the Emacs version supports it,
+just inherit the face.  If not, use SPECS to define the face.
 XEmacs and Emacs 21 do not know about the `min-colors' attribute.
 For them we convert a (min-colors 8) entry to a `tty' entry and move it
 to the top of the list.  The `min-colors' attribute will be removed from
 any other entries, and any resulting duplicates will be removed entirely."
-  (if (or (featurep 'xemacs) (< emacs-major-version 22))
-      (let (r e a)
-       (while (setq e (pop specs))
-         (cond
-          ((memq (car e) '(t default)) (push e r))
-          ((setq a (member '(min-colors 8) (car e)))
-           (nconc r (list (cons (cons '(type tty) (delq (car a) (car e)))
-                                (cdr e)))))
-          ((setq a (assq 'min-colors (car e)))
-           (setq e (cons (delq a (car e)) (cdr e)))
-           (or (assoc (car e) r) (push e r)))
-          (t (or (assoc (car e) r) (push e r)))))
-       (nreverse r))
-    specs))
+  (cond
+   ((and inherits (facep inherits)
+        (not (featurep 'xemacs)) (> emacs-major-version 22))
+    ;; In Emacs 23, we use inheritance where possible.
+    ;; We only do this in Emacs 23, because only there the outline
+    ;; faces have been changed to the original org-mode-level-faces.
+    (list (list t :inherit inherits)))
+   ((or (featurep 'xemacs) (< emacs-major-version 22))
+    ;; These do not understand the `min-colors' attribute.
+    (let (r e a)
+      (while (setq e (pop specs))
+       (cond
+        ((memq (car e) '(t default)) (push e r))
+        ((setq a (member '(min-colors 8) (car e)))
+         (nconc r (list (cons (cons '(type tty) (delq (car a) (car e)))
+                              (cdr e)))))
+        ((setq a (assq 'min-colors (car e)))
+         (setq e (cons (delq a (car e)) (cdr e)))
+         (or (assoc (car e) r) (push e r)))
+        (t (or (assoc (car e) r) (push e r)))))
+      (nreverse r)))
+   (t specs)))
 
 (defface org-hide
   '((((background light)) (:foreground "white"))
@@ -2801,6 +3391,7 @@ color of the frame."
 
 (defface org-level-1 ;; font-lock-function-name-face
   (org-compatible-face
+   'outline-1
    '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
      (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
      (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
@@ -2812,6 +3403,7 @@ color of the frame."
 
 (defface org-level-2 ;; font-lock-variable-name-face
   (org-compatible-face
+   'outline-2
    '((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
      (((class color) (min-colors 16) (background dark))  (:foreground "LightGoldenrod"))
      (((class color) (min-colors 8)  (background light)) (:foreground "yellow"))
@@ -2822,6 +3414,7 @@ color of the frame."
 
 (defface org-level-3 ;; font-lock-keyword-face
   (org-compatible-face
+   'outline-3
    '((((class color) (min-colors 88) (background light)) (:foreground "Purple"))
      (((class color) (min-colors 88) (background dark))  (:foreground "Cyan1"))
      (((class color) (min-colors 16) (background light)) (:foreground "Purple"))
@@ -2834,6 +3427,7 @@ color of the frame."
 
 (defface org-level-4   ;; font-lock-comment-face
   (org-compatible-face
+   'outline-4
    '((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
      (((class color) (min-colors 88) (background dark))  (:foreground "chocolate1"))
      (((class color) (min-colors 16) (background light)) (:foreground "red"))
@@ -2846,6 +3440,7 @@ color of the frame."
 
 (defface org-level-5 ;; font-lock-type-face
   (org-compatible-face
+   'outline-5
    '((((class color) (min-colors 16) (background light)) (:foreground "ForestGreen"))
      (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen"))
      (((class color) (min-colors 8)) (:foreground "green"))))
@@ -2854,6 +3449,7 @@ color of the frame."
 
 (defface org-level-6 ;; font-lock-constant-face
   (org-compatible-face
+   'outline-6
    '((((class color) (min-colors 16) (background light)) (:foreground "CadetBlue"))
      (((class color) (min-colors 16) (background dark)) (:foreground "Aquamarine"))
      (((class color) (min-colors 8)) (:foreground "magenta"))))
@@ -2862,6 +3458,7 @@ color of the frame."
 
 (defface org-level-7 ;; font-lock-builtin-face
   (org-compatible-face
+   'outline-7
    '((((class color) (min-colors 16) (background light)) (:foreground "Orchid"))
      (((class color) (min-colors 16) (background dark)) (:foreground "LightSteelBlue"))
      (((class color) (min-colors 8)) (:foreground "blue"))))
@@ -2870,6 +3467,7 @@ color of the frame."
 
 (defface org-level-8 ;; font-lock-string-face
   (org-compatible-face
+   'outline-8
    '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
      (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
      (((class color) (min-colors 8)) (:foreground "green"))))
@@ -2878,14 +3476,51 @@ color of the frame."
 
 (defface org-special-keyword ;; font-lock-string-face
   (org-compatible-face
+   nil
    '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
      (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
      (t (:italic t))))
   "Face used for special keywords."
   :group 'org-faces)
 
-(defface org-warning ;; font-lock-warning-face
+(defface org-drawer ;; font-lock-function-name-face
+  (org-compatible-face
+   nil
+   '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
+     (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
+     (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
+     (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
+     (((class color) (min-colors 8)) (:foreground "blue" :bold t))
+     (t (:bold t))))
+  "Face used for drawers."
+  :group 'org-faces)
+
+(defface org-property-value nil
+  "Face used for the value of a property."
+  :group 'org-faces)
+
+(defface org-column
+  (org-compatible-face
+   nil
+   '((((class color) (min-colors 16) (background light))
+      (:background "grey90"))
+     (((class color) (min-colors 16) (background dark))
+      (:background "grey30"))
+     (((class color) (min-colors 8))
+      (:background "cyan" :foreground "black"))
+     (t (:inverse-video t))))
+  "Face for column display of entry properties."
+  :group 'org-faces)
+
+(when (fboundp 'set-face-attribute)
+  ;; Make sure that a fixed-width face is used when we have a column table.
+  (set-face-attribute 'org-column nil
+                     :height (face-attribute 'default :height)
+                     :family (face-attribute 'default :family)))  
+
+(defface org-warning
   (org-compatible-face
+   'font-lock-warning-face
    '((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
      (((class color) (min-colors 16) (background dark))  (:foreground "Pink" :bold t))
      (((class color) (min-colors 8)  (background light)) (:foreground "red"  :bold t))
@@ -2894,17 +3529,9 @@ color of the frame."
   "Face for deadlines and TODO keywords."
   :group 'org-faces)
 
-(defface org-headline-done ;; font-lock-string-face
-  (org-compatible-face
-   '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
-     (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
-     (((class color) (min-colors 8)  (background light)) (:bold nil))))
-  "Face used to indicate that a headline is DONE.
-This face is only used if `org-fontify-done-headline' is set."
-  :group 'org-faces)
-
 (defface org-archived    ; similar to shadow
   (org-compatible-face
+   'shadow
    '((((class color grayscale) (min-colors 88) (background light))
       (:foreground "grey50"))
      (((class color grayscale) (min-colors 88) (background dark))
@@ -2923,6 +3550,13 @@ This face is only used if `org-fontify-done-headline' is set."
   "Face for links."
   :group 'org-faces)
 
+(defface org-target
+  '((((class color) (background light)) (:underline t))
+    (((class color) (background dark)) (:underline t))
+    (t (:underline t)))
+  "Face for links."
+  :group 'org-faces)
+
 (defface org-date
   '((((class color) (background light)) (:foreground "Purple" :underline t))
     (((class color) (background dark)) (:foreground "Cyan" :underline t))
@@ -2930,13 +3564,21 @@ This face is only used if `org-fontify-done-headline' is set."
   "Face for links."
   :group 'org-faces)
 
+(defface org-sexp-date
+  '((((class color) (background light)) (:foreground "Purple"))
+    (((class color) (background dark)) (:foreground "Cyan"))
+    (t (:underline t)))
+  "Face for links."
+  :group 'org-faces)
+
 (defface org-tag
   '((t (:bold t)))
   "Face for tags."
   :group 'org-faces)
 
-(defface org-todo ;; font-lock-warning-face
+(defface org-todo ; font-lock-warning-face
   (org-compatible-face
+   nil
    '((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
      (((class color) (min-colors 16) (background dark))  (:foreground "Pink" :bold t))
      (((class color) (min-colors 8)  (background light)) (:foreground "red"  :bold t))
@@ -2947,15 +3589,40 @@ This face is only used if `org-fontify-done-headline' is set."
 
 (defface org-done ;; font-lock-type-face
   (org-compatible-face
+   nil
    '((((class color) (min-colors 16) (background light)) (:foreground "ForestGreen" :bold t))
      (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen" :bold t))
      (((class color) (min-colors 8)) (:foreground "green"))
      (t (:bold t))))
-  "Face used for DONE."
+  "Face used for todo keywords that indicate DONE items."
   :group 'org-faces)
 
+(defface org-headline-done ;; font-lock-string-face
+  (org-compatible-face
+   nil
+   '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
+     (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
+     (((class color) (min-colors 8)  (background light)) (:bold nil))))
+  "Face used to indicate that a headline is DONE.
+This face is only used if `org-fontify-done-headline' is set.  If applies
+to the part of the headline after the DONE keyword."
+  :group 'org-faces)
+
+(defcustom org-todo-keyword-faces nil
+  "Faces for specific TODO keywords.
+This is a list of cons cells, with TODO keywords in the car
+and faces in the cdr.  The face can be a symbol, or a property
+list of attributes, like (:foreground \"blue\" :weight bold :underline t)."
+  :group 'org-faces
+  :group 'org-todo
+  :type '(repeat
+         (cons
+          (string :tag "keyword")
+          (sexp :tag "face"))))
+
 (defface org-table ;; font-lock-function-name-face
   (org-compatible-face
+   nil
    '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
      (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
      (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
@@ -2967,6 +3634,7 @@ This face is only used if `org-fontify-done-headline' is set."
 
 (defface org-formula
   (org-compatible-face
+   nil
    '((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
      (((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
      (((class color) (min-colors 8)  (background light)) (:foreground "red"))
@@ -2975,8 +3643,36 @@ This face is only used if `org-fontify-done-headline' is set."
   "Face for formulas."
   :group 'org-faces)
 
+(defface org-code
+  (org-compatible-face
+   nil
+   '((((class color grayscale) (min-colors 88) (background light))
+      (:foreground "grey50"))
+     (((class color grayscale) (min-colors 88) (background dark))
+      (:foreground "grey70"))
+     (((class color) (min-colors 8) (background light))
+      (:foreground "green"))
+     (((class color) (min-colors 8) (background dark))
+      (:foreground "yellow"))))
+   "Face for fixed-with text like code snippets."
+   :group 'org-faces
+   :version "22.1")
+
+(defface org-agenda-structure ;; font-lock-function-name-face
+  (org-compatible-face
+   nil
+   '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
+     (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
+     (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
+     (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
+     (((class color) (min-colors 8)) (:foreground "blue" :bold t))
+     (t (:bold t))))
+  "Face used in agenda for captions and dates."
+  :group 'org-faces)
+
 (defface org-scheduled-today
   (org-compatible-face
+   nil
    '((((class color) (min-colors 88) (background light)) (:foreground "DarkGreen"))
      (((class color) (min-colors 88) (background dark)) (:foreground "PaleGreen"))
      (((class color) (min-colors 8)) (:foreground "green"))
@@ -2986,6 +3682,7 @@ This face is only used if `org-fontify-done-headline' is set."
 
 (defface org-scheduled-previously
   (org-compatible-face
+   nil
    '((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
      (((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
      (((class color) (min-colors 8)  (background light)) (:foreground "red"))
@@ -2996,6 +3693,7 @@ This face is only used if `org-fontify-done-headline' is set."
 
 (defface org-upcoming-deadline
   (org-compatible-face
+   nil
    '((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
      (((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
      (((class color) (min-colors 8)  (background light)) (:foreground "red"))
@@ -3004,8 +3702,34 @@ This face is only used if `org-fontify-done-headline' is set."
   "Face for items scheduled previously, and not yet done."
   :group 'org-faces)
 
-(defface org-time-grid ;; font-lock-variable-name-face
-  (org-compatible-face
+(defcustom org-agenda-deadline-faces
+  '((1.0 . org-warning)
+    (0.5 . org-upcoming-deadline)
+    (0.0 . default))
+  "Faces for showing deadlines in the agenda.
+This is a list of cons cells.  The cdr of each cess is a face to be used,
+and it can also just be a like like '(:foreground \"yellow\").
+Each car is a fraction of the head-warning time that must have passed for
+this the face in the cdr to be used for display.  The numbers must be
+given in descending order.  The head-warning time is normally taken
+from `org-deadline-warning-days', but can also be specified in the deadline
+timestamp itself, like this:
+
+   DEADLINE: <2007-08-13 Mon -8d>
+
+You may use d for days, w for weeks, m for months and y for years.  Months
+and years will only be treated in an approximate fashion (30.4 days for a
+month and 365.24 days for a year)."
+  :group 'org-faces
+  :group 'org-agenda-daily/weekly
+  :type '(repeat
+         (cons
+          (number :tag "Fraction of head-warning time passed")
+          (sexp :tag "Face"))))
+
+(defface org-time-grid ;; font-lock-variable-name-face
+  (org-compatible-face
+   nil
    '((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
      (((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod"))
      (((class color) (min-colors 8)) (:foreground "yellow" :weight light))))
@@ -3016,14 +3740,19 @@ This face is only used if `org-fontify-done-headline' is set."
   '(org-level-1 org-level-2 org-level-3 org-level-4
     org-level-5 org-level-6 org-level-7 org-level-8
     ))
-(defconst org-n-levels (length org-level-faces))
 
+(defcustom org-n-level-faces (length org-level-faces)
+  "The number different faces to be used for headlines.
+Org-mode defines 8 different headline faces, so this can be at most 8.
+If it is less than 8, the level-1 face gets re-used for level N+1 etc."
+  :type 'number
+  :group 'org-faces)
 
 ;;; Variables for pre-computed regular expressions, all buffer local
 
-(defvar org-done-string nil
-  "The last string in `org-todo-keywords', indicating an item is DONE.")
-(make-variable-buffer-local 'org-done-string)
+(defvar org-drawer-regexp nil
+  "Matches first line of a hidden block.")
+(make-variable-buffer-local 'org-drawer-regexp)
 (defvar org-todo-regexp nil
   "Matches any of the TODO state keywords.")
 (make-variable-buffer-local 'org-todo-regexp)
@@ -3043,12 +3772,6 @@ Also put tags into group 4 if tags are present.")
 (defvar org-looking-at-done-regexp nil
   "Matches the DONE keyword a point.")
 (make-variable-buffer-local 'org-looking-at-done-regexp)
-(defvar org-todo-kwd-priority-p nil
-  "Do TODO items have priorities?")
-(make-variable-buffer-local 'org-todo-kwd-priority-p)
-(defvar org-todo-kwd-max-priority nil
-  "Maximum priority of TODO items.")
-(make-variable-buffer-local 'org-todo-kwd-max-priority)
 (defvar org-ds-keyword-length 12
   "Maximum length of the Deadline and SCHEDULED keywords.")
 (make-variable-buffer-local 'org-ds-keyword-length)
@@ -3080,6 +3803,9 @@ Also put tags into group 4 if tags are present.")
 (defvar org-maybe-keyword-time-regexp nil
   "Matches a timestamp, possibly preceeded by a keyword.")
 (make-variable-buffer-local 'org-maybe-keyword-time-regexp)
+(defvar org-planning-or-clock-line-re nil
+  "Matches a line with planning or clock info.")
+(make-variable-buffer-local 'org-planning-or-clock-line-re)
 
 (defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t
                                   rear-nonsticky t mouse-map t fontified t)
@@ -3093,7 +3819,9 @@ Also put tags into group 4 if tags are present.")
     (match-string-no-properties num string)))
 
 (defsubst org-no-properties (s)
-  (remove-text-properties 0 (length s) org-rm-props s)
+  (if (fboundp 'set-text-properties)
+      (set-text-properties 0 (length s) nil s)
+    (remove-text-properties 0 (length s) org-rm-props s))
   s)
 
 (defsubst org-get-alist-option (option key)
@@ -3102,6 +3830,12 @@ Also put tags into group 4 if tags are present.")
        ((assoc key option) (cdr (assoc key option)))
        (t (cdr (assq 'default option)))))
 
+(defsubst org-inhibit-invisibility ()
+  "Modified `buffer-invisibility-spec' for Emacs 21.
+Some ops with invisible text do not work correctly on Emacs 21.  For these
+we turn off invisibility temporarily.  Use this in a `let' form."
+  (if (< emacs-major-version 22) nil buffer-invisibility-spec))
+
 (defsubst org-set-local (var value)
   "Make VAR local in current buffer and set it to VALUE."
   (set (make-variable-buffer-local var) value))
@@ -3139,7 +3873,11 @@ Also put tags into group 4 if tags are present.")
     ("nologging" org-log-done nil)
     ("lognotedone" org-log-done done push)
     ("lognotestate" org-log-done state push)
-    ("lognoteclock-out" org-log-done clock-out push))
+    ("lognoteclock-out" org-log-done clock-out push)
+    ("logrepeat" org-log-repeat t)
+    ("nologrepeat" org-log-repeat nil)
+    ("constcgs" constants-unit-system cgs)
+    ("constSI" constants-unit-system SI))
   "Variable associated with STARTUP options for org-mode.
 Each element is a list of three items: The startup options as written
 in the #+STARTUP line, the corresponding variable, and the value to
@@ -3149,11 +3887,22 @@ means to push this value onto the list in the variable.")
 (defun org-set-regexps-and-options ()
   "Precompute regular expressions for current buffer."
   (when (org-mode-p)
+    (org-set-local 'org-todo-kwd-alist nil)
+    (org-set-local 'org-todo-key-alist nil)
+    (org-set-local 'org-todo-key-trigger nil)
+    (org-set-local 'org-todo-keywords-1 nil)
+    (org-set-local 'org-done-keywords nil)
+    (org-set-local 'org-todo-heads nil)
+    (org-set-local 'org-todo-sets nil)
+    (org-set-local 'org-todo-log-states nil)
     (let ((re (org-make-options-regexp
-              '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO"
-                "STARTUP" "ARCHIVE" "TAGS" "LINK")))
+              '("CATEGORY" "SEQ_TODO" "TYP_TODO" "TODO" "COLUMNS"
+                "STARTUP" "ARCHIVE" "TAGS" "LINK" "PRIORITIES"
+                "CONSTANTS" "PROPERTY")))
          (splitre "[ \t]+")
-         kwds int key value cat arch tags links)
+         kwds kws0 kwsa key value cat arch tags const links hw dws
+         tail sep kws1 prio props
+         ex log note)
       (save-excursion
        (save-restriction
          (widen)
@@ -3165,33 +3914,39 @@ means to push this value onto the list in the variable.")
              (if (string-match "[ \t]+$" value)
                  (setq value (replace-match "" t t value)))
              (setq cat (intern value)))
-            ((equal key "SEQ_TODO")
-             (setq int 'sequence
-                   kwds (append kwds (org-split-string value splitre))))
-            ((equal key "PRI_TODO")
-             (setq int 'priority
-                   kwds (append kwds (org-split-string value splitre))))
+            ((member key '("SEQ_TODO" "TODO"))
+             (push (cons 'sequence (org-split-string value splitre)) kwds))
             ((equal key "TYP_TODO")
-             (setq int 'type
-                   kwds (append kwds (org-split-string value splitre))))
+             (push (cons 'type (org-split-string value splitre)) kwds))
             ((equal key "TAGS")
              (setq tags (append tags (org-split-string value splitre))))
+            ((equal key "COLUMNS")
+             (org-set-local 'org-columns-default-format value))
             ((equal key "LINK")
              (when (string-match "^\\(\\S-+\\)[ \t]+\\(.+\\)" value)
                (push (cons (match-string 1 value)
                            (org-trim (match-string 2 value)))
                      links)))
+            ((equal key "PRIORITIES")
+             (setq prio (org-split-string value " +")))
+            ((equal key "PROPERTY")
+             (when (string-match "\\(\\S-+\\)\\s-+\\(.*\\)" value)
+               (push (cons (match-string 1 value) (match-string 2 value))
+                     props)))
+            ((equal key "CONSTANTS")
+             (setq const (append const (org-split-string value splitre))))
             ((equal key "STARTUP")
              (let ((opts (org-split-string value splitre))
                    l var val)
-               (while (setq l (assoc (pop opts) org-startup-options))
-                 (setq var (nth 1 l) val (nth 2 l))
-                 (if (not (nth 3 l))
-                     (set (make-local-variable var) val)
-                   (if (not (listp (symbol-value var)))
-                       (set (make-local-variable var) nil))
-                   (set (make-local-variable var) (symbol-value var))
-                   (add-to-list var val)))))
+               (while (setq l (pop opts))
+                 (when (setq l (assoc l org-startup-options))
+                   (setq var (nth 1 l) val (nth 2 l))
+                   (if (not (nth 3 l))
+                       (set (make-local-variable var) val)
+                     (if (not (listp (symbol-value var)))
+                         (set (make-local-variable var) nil))
+                     (set (make-local-variable var) (symbol-value var))
+                     (add-to-list var val))))))
             ((equal key "ARCHIVE")
              (string-match " *$" value)
              (setq arch (replace-match "" t t value))
@@ -3199,17 +3954,75 @@ means to push this value onto the list in the variable.")
                                      '(face t fontified t) arch)))
            )))
       (and cat (org-set-local 'org-category cat))
-      (and kwds (org-set-local 'org-todo-keywords kwds))
+      (when prio
+       (if (< (length prio) 3) (setq prio '("A" "C" "B")))
+       (setq prio (mapcar 'string-to-char prio))
+       (org-set-local 'org-highest-priority (nth 0 prio))
+       (org-set-local 'org-lowest-priority  (nth 1 prio))
+       (org-set-local 'org-default-priority (nth 2 prio)))
+      (and props (org-set-local 'org-local-properties (nreverse props)))
       (and arch (org-set-local 'org-archive-location arch))
-      (and int (org-set-local 'org-todo-interpretation int))
       (and links (setq org-link-abbrev-alist-local (nreverse links)))
+      ;; Process the TODO keywords
+      (unless kwds
+       ;; Use the global values as if they had been given locally.
+       (setq kwds (default-value 'org-todo-keywords))
+       (if (stringp (car kwds))
+           (setq kwds (list (cons org-todo-interpretation
+                                  (default-value 'org-todo-keywords)))))
+       (setq kwds (reverse kwds)))
+      (setq kwds (nreverse kwds))
+      (let (inter kws kw)
+       (while (setq kws (pop kwds))
+         (setq inter (pop kws) sep (member "|" kws)
+               kws0 (delete "|" (copy-sequence kws))
+               kwsa nil
+               kws1 (mapcar
+                     (lambda (x)
+                       (if (string-match "^\\(.*?\\)\\(?:(\\(..?\\))\\)?$" x)
+                           (progn
+                             (setq kw (match-string 1 x)
+                                   ex (and (match-end 2) (match-string 2 x))
+                                   log (and ex (string-match "@" ex))
+                                   key (and ex (substring ex 0 1)))
+                             (if (equal key "@") (setq key nil))
+                             (push (cons kw (and key (string-to-char key))) kwsa)
+                             (and log (push kw org-todo-log-states))
+                             kw)
+                         (error "Invalid TODO keyword %s" x)))
+                     kws0)
+               kwsa (if kwsa (append '((:startgroup))
+                                     (nreverse kwsa)
+                                     '((:endgroup))))
+               hw (car kws1)
+               dws (if sep (org-remove-keyword-keys (cdr sep)) (last kws1))
+               tail (list inter hw (car dws) (org-last dws)))
+         (add-to-list 'org-todo-heads hw 'append)
+         (push kws1 org-todo-sets)
+         (setq org-done-keywords (append org-done-keywords dws nil))
+         (setq org-todo-key-alist (append org-todo-key-alist kwsa))
+         (mapc (lambda (x) (push (cons x tail) org-todo-kwd-alist)) kws1)
+         (setq org-todo-keywords-1 (append org-todo-keywords-1 kws1 nil)))
+       (setq org-todo-sets (nreverse org-todo-sets)
+             org-todo-kwd-alist (nreverse org-todo-kwd-alist)
+             org-todo-key-trigger (delq nil (mapcar 'cdr org-todo-key-alist))
+             org-todo-key-alist (org-assign-fast-keys org-todo-key-alist)))
+      ;; Process the constants
+      (when const
+       (let (e cst)
+         (while (setq e (pop const))
+           (if (string-match "^\\([a-zA-Z0][_a-zA-Z0-9]*\\)=\\(.*\\)" e)
+               (push (cons (match-string 1 e) (match-string 2 e)) cst)))
+         (setq org-table-formula-constants-local cst)))
+
+      ;; Process the tags.
       (when tags
        (let (e tgs)
          (while (setq e (pop tags))
            (cond
             ((equal e "{") (push '(:startgroup) tgs))
             ((equal e "}") (push '(:endgroup) tgs))
-            ((string-match "^\\([0-9a-zA-Z_@]+\\)(\\(.\\))$" e)
+            ((string-match (org-re "^\\([[:alnum:]_@]+\\)(\\(.\\))$") e)
              (push (cons (match-string 1 e)
                          (string-to-char (match-string 2 e)))
                    tgs))
@@ -3221,32 +4034,40 @@ means to push this value onto the list in the variable.")
                (push e org-tag-alist))))))
 
     ;; Compute the regular expressions and other local variables
-    (setq org-todo-kwd-priority-p (equal org-todo-interpretation 'priority)
-         org-todo-kwd-max-priority (1- (length org-todo-keywords))
-         org-ds-keyword-length (+ 2 (max (length org-deadline-string)
+    (if (not org-done-keywords)
+       (setq org-done-keywords (list (org-last org-todo-keywords-1))))
+    (setq org-ds-keyword-length (+ 2 (max (length org-deadline-string)
                                          (length org-scheduled-string)))
-         org-done-string
-         (nth (1- (length org-todo-keywords)) org-todo-keywords)
+         org-drawer-regexp
+         (concat "^[ \t]*:\\("
+                 (mapconcat 'regexp-quote org-drawers "\\|")
+                 "\\):[ \t]*$")
+         org-not-done-keywords
+         (org-delete-all org-done-keywords (copy-sequence org-todo-keywords-1))
          org-todo-regexp
-         (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords
+         (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords-1
                                      "\\|") "\\)\\>")
          org-not-done-regexp
          (concat "\\<\\("
-                 (mapconcat 'regexp-quote
-                            (nreverse (cdr (reverse org-todo-keywords)))
-                            "\\|")
+                 (mapconcat 'regexp-quote org-not-done-keywords "\\|")
                  "\\)\\>")
          org-todo-line-regexp
-         (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
-                 (mapconcat 'regexp-quote org-todo-keywords "\\|")
-                 "\\)\\>\\)? *\\(.*\\)")
+         (concat "^\\(\\*+\\)[ \t]+\\(?:\\("
+                 (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
+                 "\\)\\>\\)?[ \t]*\\(.*\\)")
          org-nl-done-regexp
-         (concat "[\r\n]\\*+[ \t]+" org-done-string "\\>")
+         (concat "\n\\*+[ \t]+"
+                 "\\(?:" (mapconcat 'regexp-quote org-done-keywords "\\|")
+                 "\\)" "\\>")
          org-todo-line-tags-regexp
-         (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
-                 (mapconcat 'regexp-quote org-todo-keywords "\\|")
-                 "\\)\\>\\)? *\\(.*?\\([ \t]:[a-zA-Z0-9:_@]+:[ \t]*\\)?$\\)")
-         org-looking-at-done-regexp (concat "^" org-done-string "\\>")
+         (concat "^\\(\\*+\\)[ \t]+\\(?:\\("
+                 (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
+                 (org-re
+                  "\\)\\>\\)? *\\(.*?\\([ \t]:[[:alnum:]:_@]+:[ \t]*\\)?$\\)"))
+         org-looking-at-done-regexp
+         (concat "^" "\\(?:"
+                 (mapconcat 'regexp-quote org-done-keywords "\\|") "\\)"
+                 "\\>")
          org-deadline-regexp (concat "\\<" org-deadline-string)
          org-deadline-time-regexp
          (concat "\\<" org-deadline-string " *<\\([^>]+\\)>")
@@ -3267,17 +4088,30 @@ means to push this value onto the list in the variable.")
          org-keyword-time-not-clock-regexp
          (concat "\\<\\(" org-scheduled-string
                  "\\|" org-deadline-string
-                 "\\|" org-closed-string "\\)"
+                 "\\|" org-closed-string
+                 "\\)"
                  " *[[<]\\([^]>]+\\)[]>]")
          org-maybe-keyword-time-regexp
          (concat "\\(\\<\\(" org-scheduled-string
                  "\\|" org-deadline-string
                  "\\|" org-closed-string
                  "\\|" org-clock-string "\\)\\)?"
-                 " *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^]\r\n>]*?[]>]\\)"))
+                 " *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^]\r\n>]*?[]>]\\|<%%([^\r\n>]*>\\)")
+         org-planning-or-clock-line-re
+         (concat "\\(?:^[ \t]*\\(" org-scheduled-string
+                 "\\|" org-deadline-string
+                 "\\|" org-closed-string "\\|" org-clock-string
+                 "\\)\\>\\)")
+         )
 
     (org-set-font-lock-defaults)))
 
+(defun org-remove-keyword-keys (list)
+  (mapcar (lambda (x)
+           (if (string-match "(..?)$" x)
+               (substring x 0 (match-beginning 0))
+             x))
+         list))
 
 ;;; Some variables ujsed in various places
 
@@ -3325,6 +4159,7 @@ This is for getting out of special buffers like remember.")
 (defvar annotation) ; from remember.el, dynamically scoped in `remember-mode'
 (defvar initial)    ; from remember.el, dynamically scoped in `remember-mode'
 (defvar org-latex-regexps)
+(defvar constants-unit-system)
 
 (defvar original-date) ; dynamically scoped in calendar.el does scope this
 
@@ -3339,6 +4174,7 @@ This is for getting out of special buffers like remember.")
 
 ;; Defined somewhere in this file, but used before definition.
 (defvar orgtbl-mode-menu) ; defined when orgtbl mode get initialized
+(defvar org-agenda-buffer-name)
 (defvar org-agenda-undo-list)
 (defvar org-agenda-pending-undo-list)
 (defvar org-agenda-overriding-header)
@@ -3348,7 +4184,6 @@ This is for getting out of special buffers like remember.")
 (defvar org-org-menu)
 (defvar org-tbl-menu)
 (defvar org-agenda-keymap)
-(defvar org-category-table)
 
 ;;;; Emacs/XEmacs compatibility
 
@@ -3477,7 +4312,8 @@ This variable is set by `org-before-change-function'.
 (defvar org-mode-hook nil)
 (defvar org-inhibit-startup nil)        ; Dynamically-scoped param.
 (defvar org-agenda-keep-modes nil)      ; Dynamically-scoped param.
-
+(defvar org-table-buffer-is-an nil)
+(defconst org-outline-regexp "\\*+ ")
 
 ;;;###autoload
 (define-derived-mode org-mode outline-mode "Org"
@@ -3520,20 +4356,25 @@ The following commands are available:
   (org-add-to-invisibility-spec '(org-cwidth))
   (when (featurep 'xemacs)
     (org-set-local 'line-move-ignore-invisible t))
-  (setq outline-regexp "\\*+")
-  ;;(setq outline-regexp "\\(?:\\*+\\|[ \t]*\\(?:[-+*]\\|[0-9]+[.)]\\) \\)")
-  (setq outline-level 'org-outline-level)
-  (when (and org-ellipsis (stringp org-ellipsis)
-             (fboundp 'set-display-table-slot) (boundp 'buffer-display-table))
+  (org-set-local 'outline-regexp org-outline-regexp)
+  (org-set-local 'outline-level 'org-outline-level)
+  (when (and org-ellipsis
+             (fboundp 'set-display-table-slot) (boundp 'buffer-display-table)
+            (fboundp 'make-glyph-code))
     (unless org-display-table
       (setq org-display-table (make-display-table)))
-    (set-display-table-slot org-display-table
-                           4 (string-to-vector org-ellipsis))
+    (set-display-table-slot
+     org-display-table 4
+     (vconcat (mapcar
+              (lambda (c) (make-glyph-code c (and (not (stringp org-ellipsis))
+                                                  org-ellipsis)))
+              (if (stringp org-ellipsis) org-ellipsis "..."))))
     (setq buffer-display-table org-display-table))
   (org-set-regexps-and-options)
   ;; Calc embedded
   (org-set-local 'calc-embedded-open-mode "# ")
   (modify-syntax-entry ?# "<")
+  (modify-syntax-entry ?@ "w")
   (if org-startup-truncated (setq truncate-lines t))
   (org-set-local 'font-lock-unfontify-region-function
                 'org-unfontify-region)
@@ -3545,6 +4386,7 @@ The following commands are available:
   (org-add-hook 'kill-buffer-hook 'org-check-running-clock nil 'local)
   ;; Paragraphs and auto-filling
   (org-set-autofill-regexps)
+  (setq indent-line-function 'org-indent-line-function)
   (org-update-radio-target-regexp)
 
   ;; Comment characters
@@ -3564,13 +4406,14 @@ The following commands are available:
   (if (and org-insert-mode-line-in-empty-file
           (interactive-p)
           (= (point-min) (point-max)))
-      (insert "    -*- mode: org -*-\n\n"))
+      (insert "#    -*- mode: org -*-\n\n"))
 
   (unless org-inhibit-startup
     (when org-startup-align-all-tables
       (let ((bmp (buffer-modified-p)))
        (org-table-map-tables 'org-table-align)
        (set-buffer-modified-p bmp)))
+    (org-cycle-hide-drawers 'all)
     (cond
      ((eq org-startup-folded t)
       (org-cycle '(4)))
@@ -3578,6 +4421,8 @@ The following commands are available:
       (let ((this-command 'org-cycle) (last-command 'org-cycle))
        (org-cycle '(4)) (org-cycle '(4)))))))
 
+(put 'org-mode 'flyspell-mode-predicate 'org-mode-flyspell-verify)
+
 (defsubst org-call-with-arg (command arg)
   "Call COMMAND interactively, but pretend prefix are was ARG."
   (let ((current-prefix-arg arg)) (call-interactively command)))
@@ -3585,6 +4430,7 @@ The following commands are available:
 (defsubst org-current-line (&optional pos)
   (save-excursion
     (and pos (goto-char pos))
+    ;; works also in narrowed buffer, because we start at 1, not point-min
     (+ (if (bolp) 1 0) (count-lines 1 (point)))))
 
 (defun org-current-time ()
@@ -3610,90 +4456,99 @@ that will be added to PLIST.  Returns the string that was modified."
 ;;;; Font-Lock stuff, including the activators
 
 (defvar org-mouse-map (make-sparse-keymap))
-(define-key org-mouse-map
+(org-defkey org-mouse-map
   (if (featurep 'xemacs) [button2] [mouse-2]) 'org-open-at-mouse)
-(define-key org-mouse-map
+(org-defkey org-mouse-map
   (if (featurep 'xemacs) [button3] [mouse-3]) 'org-find-file-at-mouse)
 (when org-mouse-1-follows-link
-  (define-key org-mouse-map [follow-link] 'mouse-face))
+  (org-defkey org-mouse-map [follow-link] 'mouse-face))
 (when org-tab-follows-link
-  (define-key org-mouse-map [(tab)] 'org-open-at-point)
-  (define-key org-mouse-map "\C-i" 'org-open-at-point))
+  (org-defkey org-mouse-map [(tab)] 'org-open-at-point)
+  (org-defkey org-mouse-map "\C-i" 'org-open-at-point))
 (when org-return-follows-link
-  (define-key org-mouse-map [(return)] 'org-open-at-point)
-  (define-key org-mouse-map "\C-m" 'org-open-at-point))
+  (org-defkey org-mouse-map [(return)] 'org-open-at-point)
+  (org-defkey org-mouse-map "\C-m" 'org-open-at-point))
 
 (require 'font-lock)
 
 (defconst org-non-link-chars "]\t\n\r<>")
-(defconst org-link-types '("https?" "ftp" "mailto" "file" "news" "bbdb" "vm"
+(defvar org-link-types '("http" "https" "ftp" "mailto" "file" "news" "bbdb" "vm"
                           "wl" "mhe" "rmail" "gnus" "shell" "info" "elisp"))
-(defconst org-link-re-with-space
-  (concat
-   "<?\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
-   "\\([^" org-non-link-chars " ]"
-   "[^" org-non-link-chars "]*"
-   "[^" org-non-link-chars " ]\\)>?")
+(defvar org-link-re-with-space nil
    "Matches a link with spaces, optional angular brackets around it.")
-
-(defconst org-link-re-with-space2
-  (concat
-   "<?\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
-   "\\([^" org-non-link-chars " ]"
-   "[^]\t\n\r]*"
-   "[^" org-non-link-chars " ]\\)>?")
+(defvar org-link-re-with-space2 nil
    "Matches a link with spaces, optional angular brackets around it.")
-
-(defconst org-angle-link-re
-  (concat
-   "<\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
-   "\\([^" org-non-link-chars " ]"
-   "[^" org-non-link-chars "]*"
-   "\\)>")
+(defvar org-angle-link-re nil
    "Matches link with angular brackets, spaces are allowed.")
-(defconst org-plain-link-re
-  (concat
-   "\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
-   "\\([^]\t\n\r<>,;() ]+\\)")
+(defvar org-plain-link-re nil
    "Matches plain link, without spaces.")
-
-(defconst org-bracket-link-regexp
-  "\\[\\[\\([^]]+\\)\\]\\(\\[\\([^]]+\\)\\]\\)?\\]"
+(defvar org-bracket-link-regexp nil
   "Matches a link in double brackets.")
-
-(defconst org-bracket-link-analytic-regexp
-  (concat
-  "\\[\\["
-  "\\(\\(" (mapconcat 'identity org-link-types "\\|") "\\):\\)?"
-  "\\([^]]+\\)"
-  "\\]"
-  "\\(\\[" "\\([^]]+\\)" "\\]\\)?"
-  "\\]"))
-; 1: http:
-; 2: http
-; 3: path
-; 4: [desc]
-; 5: desc
-
-(defconst org-any-link-re
-  (concat "\\(" org-bracket-link-regexp "\\)\\|\\("
-         org-angle-link-re "\\)\\|\\("
-         org-plain-link-re "\\)")
+(defvar org-bracket-link-analytic-regexp nil
+  "Regular expression used to analyze links.
+Here is what the match groups contain after a match:
+1: http:
+2: http
+3: path
+4: [desc]
+5: desc")
+(defvar org-any-link-re nil
   "Regular expression matching any link.")
 
-(defconst org-ts-lengths
-  (cons (length (format-time-string (car org-time-stamp-formats)))
-       (length (format-time-string (cdr org-time-stamp-formats))))
-  "This holds the lengths of the two different time formats.")
-(defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*?\\)>"
+(defun org-make-link-regexps ()
+  "Update the link regular expressions.
+This should be called after the variable `org-link-types' has changed."
+  (setq org-link-re-with-space
+       (concat
+        "<?\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
+        "\\([^" org-non-link-chars " ]"
+        "[^" org-non-link-chars "]*"
+        "[^" org-non-link-chars " ]\\)>?")
+       org-link-re-with-space2
+       (concat
+        "<?\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
+        "\\([^" org-non-link-chars " ]"
+        "[^]\t\n\r]*"
+        "[^" org-non-link-chars " ]\\)>?")
+       org-angle-link-re
+       (concat
+        "<\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
+        "\\([^" org-non-link-chars " ]"
+        "[^" org-non-link-chars "]*"
+        "\\)>")
+       org-plain-link-re
+       (concat
+        "\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
+        "\\([^]\t\n\r<>,;() ]+\\)")
+       org-bracket-link-regexp
+       "\\[\\[\\([^][]+\\)\\]\\(\\[\\([^][]+\\)\\]\\)?\\]"
+       org-bracket-link-analytic-regexp
+       (concat
+        "\\[\\["
+        "\\(\\(" (mapconcat 'identity org-link-types "\\|") "\\):\\)?"
+        "\\([^]]+\\)"
+        "\\]"
+        "\\(\\[" "\\([^]]+\\)" "\\]\\)?"
+        "\\]")
+       org-any-link-re
+       (concat "\\(" org-bracket-link-regexp "\\)\\|\\("
+               org-angle-link-re "\\)\\|\\("
+               org-plain-link-re "\\)")))
+
+(org-make-link-regexps)
+
+(defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)>"
   "Regular expression for fast time stamp matching.")
-(defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*?\\)[]>]"
+(defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)[]>]"
   "Regular expression for fast time stamp matching.")
-(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)\\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)"
+(defconst org-ts-regexp0 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)\\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)"
+  "Regular expression matching time strings for analysis.
+This one does not require the space after the date.")
+(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\) \\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)"
   "Regular expression matching time strings for analysis.")
-(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 ">")
+(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 "[^>\n]\\{0,16\\}>")
   "Regular expression matching time stamps, with groups.")
-(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[]>]")
+(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[^]>\n]\\{0,16\\}[]>]")
   "Regular expression matching time stamps (also [..]), with groups.")
 (defconst org-tr-regexp (concat org-ts-regexp "--?-?" org-ts-regexp)
   "Regular expression matching a time stamp range.")
@@ -3712,27 +4567,90 @@ The time stamps may be either active or inactive.")
 
 (defun org-do-emphasis-faces (limit)
   "Run through the buffer and add overlays to links."
-  (if (re-search-forward org-emph-re limit t)
-      (progn
-       (font-lock-prepend-text-property (match-beginning 2) (match-end 2)
-                                        'face
-                                        (nth 1 (assoc (match-string 3)
-                                                      org-emphasis-alist)))
-       (add-text-properties (match-beginning 2) (match-end 2)
-                            '(font-lock-multiline t))
-       (backward-char 1)
-       t)))
+  (let (rtn)
+    (while (and (not rtn) (re-search-forward org-emph-re limit t))
+      (if (not (= (char-after (match-beginning 3))
+                 (char-after (match-beginning 4))))
+         (progn
+           (setq rtn t)
+           (font-lock-prepend-text-property (match-beginning 2) (match-end 2)
+                                            'face
+                                            (nth 1 (assoc (match-string 3)
+                                                          org-emphasis-alist)))
+           (add-text-properties (match-beginning 2) (match-end 2)
+                                '(font-lock-multiline t))
+           (backward-char 1))))
+    rtn))
+
+(defun org-emphasize (&optional char)
+  "Insert or change an emphasis, i.e. a font like bold or italic.
+If there is an active region, change that region to a new emphasis.
+If there is no region, just insert the marker characters and position
+the cursor between them.
+CHAR should be either the marker character, or the first character of the
+HTML tag associated with that emphasis.  If CHAR is a space, the means
+to remove the emphasis of the selected region.
+If char is not given (for example in an interactive call) it
+will be prompted for."
+  (interactive)
+  (let ((eal org-emphasis-alist) e det
+       (erc org-emphasis-regexp-components)
+       (prompt "")
+       (string "") beg end move tag c s)
+    (if (org-region-active-p)
+       (setq beg (region-beginning) end (region-end)
+             string (buffer-substring beg end))
+      (setq move t))
+
+    (while (setq e (pop eal))
+      (setq tag (car (org-split-string (nth 2 e) "[ <>/]+"))
+           c (aref tag 0))
+      (push (cons c (string-to-char (car e))) det)
+      (setq prompt (concat prompt (format " [%s%c]%s" (car e) c
+                                         (substring tag 1)))))
+    (unless char
+      (message "%s" (concat "Emphasis marker or tag:" prompt))
+      (setq char (read-char-exclusive)))
+    (setq char (or (cdr (assoc char det)) char))
+    (if (equal char ?\ )
+       (setq s "" move nil)
+      (unless (assoc (char-to-string char) org-emphasis-alist)
+       (error "No such emphasis marker: \"%c\"" char))
+      (setq s (char-to-string char)))
+    (while (and (> (length string) 1)
+               (equal (substring string 0 1) (substring string -1))
+               (assoc (substring string 0 1) org-emphasis-alist))
+      (setq string (substring string 1 -1)))
+    (setq string (concat s string s))
+    (if beg (delete-region beg end))
+    (unless (or (bolp)
+               (string-match (concat "[" (nth 0 erc) "\n]")
+                             (char-to-string (char-before (point)))))
+      (insert " "))
+    (unless (string-match (concat "[" (nth 1 erc) "\n]")
+                         (char-to-string (char-after (point))))
+      (insert " ") (backward-char 1))
+    (insert string)
+    (and move (backward-char 1))))
+
+(defconst org-nonsticky-props
+  '(mouse-face highlight keymap invisible intangible help-echo org-linked-text))
 
 (defun org-activate-plain-links (limit)
   "Run through the buffer and add overlays to links."
-  (if (re-search-forward org-plain-link-re limit t)
-      (progn
-       (add-text-properties (match-beginning 0) (match-end 0)
-                            (list 'mouse-face 'highlight
-                                  'rear-nonsticky t
-                                  'keymap org-mouse-map
-                                  ))
-       t)))
+  (catch 'exit
+    (let (f)
+      (while (re-search-forward org-plain-link-re limit t)
+       (setq f (get-text-property (match-beginning 0) 'face))
+       (if (or (eq f 'org-tag)
+               (and (listp f) (memq 'org-tag f)))
+           nil
+         (add-text-properties (match-beginning 0) (match-end 0)
+                              (list 'mouse-face 'highlight
+                                    'rear-nonsticky org-nonsticky-props
+                                    'keymap org-mouse-map
+                                    ))
+         (throw 'exit t))))))
 
 (defun org-activate-angle-links (limit)
   "Run through the buffer and add overlays to links."
@@ -3740,7 +4658,7 @@ The time stamps may be either active or inactive.")
       (progn
        (add-text-properties (match-beginning 0) (match-end 0)
                             (list 'mouse-face 'highlight
-                                  'rear-nonsticky t
+                                  'rear-nonsticky org-nonsticky-props
                                   'keymap org-mouse-map
                                   ))
        t)))
@@ -3766,10 +4684,10 @@ We use a macro so that the test can happen at compilation time."
             ;; but that requires another match, protecting match data,
             ;; a lot of overhead for font-lock.
             (ip (org-maybe-intangible
-                 (list 'invisible 'org-link 'rear-nonsticky t
+                 (list 'invisible 'org-link 'rear-nonsticky org-nonsticky-props
                        'keymap org-mouse-map 'mouse-face 'highlight
                        'help-echo help)))
-            (vp (list 'rear-nonsticky t
+            (vp (list 'rear-nonsticky org-nonsticky-props
                       'keymap org-mouse-map 'mouse-face 'highlight
                       'help-echo help)))
        ;; We need to remove the invisible property here.  Table narrowing
@@ -3792,7 +4710,7 @@ We use a macro so that the test can happen at compilation time."
       (progn
        (add-text-properties (match-beginning 0) (match-end 0)
                             (list 'mouse-face 'highlight
-                                  'rear-nonsticky t
+                                  'rear-nonsticky org-nonsticky-props
                                   'keymap org-mouse-map))
        (when org-display-custom-times
          (if (match-end 3)
@@ -3805,7 +4723,9 @@ We use a macro so that the test can happen at compilation time."
 (defvar org-target-regexp "<<\\([^<>\n\r]+\\)>>"
   "Regular expression matching a link target.")
 (defvar org-radio-target-regexp "<<<\\([^<>\n\r]+\\)>>>"
-  "Regular expression matching a link target.")
+  "Regular expression matching a radio target.")
+(defvar org-any-target-regexp "<<<?\\([^<>\n\r]+\\)>>>?" ; FIXME, not exact, would match <<<aaa>>  as a radio target.
+  "Regular expression matching any target.")
 
 (defun org-activate-target-links (limit)
   "Run through the buffer and add overlays to target matches."
@@ -3815,7 +4735,7 @@ We use a macro so that the test can happen at compilation time."
          (progn
            (add-text-properties (match-beginning 0) (match-end 0)
                                 (list 'mouse-face 'highlight
-                                      'rear-nonsticky t
+                                      'rear-nonsticky org-nonsticky-props
                                       'keymap org-mouse-map
                                       'help-echo "Radio target link"
                                       'org-linked-text t))
@@ -3873,53 +4793,59 @@ between words."
        "\\)\\>")))
 
 (defun org-activate-tags (limit)
-  (if (re-search-forward "[ \t]\\(:[A-Za-z_@0-9:]+:\\)[ \r\n]" limit t)
+  (if (re-search-forward (org-re "^\\*+.*[ \t]\\(:[[:alnum:]_@:]+:\\)[ \r\n]") limit t)
       (progn
        (add-text-properties (match-beginning 1) (match-end 1)
                             (list 'mouse-face 'highlight
-                                  'rear-nonsticky t
+                                  'rear-nonsticky org-nonsticky-props
                                   'keymap org-mouse-map))
        t)))
 
-(defun org-font-lock-level ()
-  (save-excursion
-    (org-back-to-heading t)
-    (- (match-end 0) (match-beginning 0))))
-
 (defun org-outline-level ()
   (save-excursion
     (looking-at outline-regexp)
     (if (match-beginning 1)
        (+ (org-get-string-indentation (match-string 1)) 1000)
-      (- (match-end 0) (match-beginning 0)))))
+      (1- (- (match-end 0) (match-beginning 0))))))
 
 (defvar org-font-lock-keywords nil)
 
+(defconst org-property-re (org-re "^[ \t]*\\(:\\([[:alnum:]_]+\\):\\)[ \t]*\\(\\S-.*\\)")
+  "Regular expression matching a property line.")
+
 (defun org-set-font-lock-defaults ()
   (let* ((em org-fontify-emphasized-text)
         (lk org-activate-links)
         (org-font-lock-extra-keywords
-         ;; Headlines
          (list
-          '("^\\(\\**\\)\\(\\*\\)\\(.*\\)" (1 (org-get-level-face 1))
+          ;; Headlines
+          '("^\\(\\**\\)\\(\\* \\)\\(.*\\)" (1 (org-get-level-face 1))
             (2 (org-get-level-face 2)) (3 (org-get-level-face 3)))
+          ;; Table lines
           '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
             (1 'org-table))
           ;; Links
+          (if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend)))
           (if (memq 'angle lk) '(org-activate-angle-links (0 'org-link t)))
           (if (memq 'plain lk) '(org-activate-plain-links (0 'org-link t)))
           (if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t)))
           (if (memq 'radio lk) '(org-activate-target-links (0 'org-link t)))
           (if (memq 'date lk) '(org-activate-dates (0 'org-date t)))
-          (if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend)))
+          '("^&?%%(.*\\|<%%([^>\n]*?>" (0 'org-sexp-date t))
           '(org-hide-wide-columns (0 nil append))
           ;; TODO lines
-          (list (concat "^\\*+[ \t]*" org-not-done-regexp)
-                '(1 'org-todo t))
+          (list (concat "^\\*+[ \t]+" org-todo-regexp)
+                '(1 (org-get-todo-face 1) t))
+          ;; DONE
+          (if org-fontify-done-headline
+              (list (concat "^[*]+ +\\<\\("
+                            (mapconcat 'regexp-quote org-done-keywords "\\|")
+                            "\\)\\(.*\\)")
+                    '(2 'org-headline-done t))
+            nil)
           ;; Priorities
-          (list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t))
+          (list (concat "\\[#[A-Z0-9]\\]") '(0 'org-special-keyword t))
           ;; Special keywords
-          (list org-repeat-re  '(0 'org-special-keyword t))
           (list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
           (list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
           (list (concat "\\<" org-closed-string) '(0 'org-special-keyword t))
@@ -3930,26 +4856,29 @@ between words."
                    '(org-do-emphasis-faces (0 nil append))
                  '(org-do-emphasis-faces)))
           ;; Checkboxes, similar to Frank Ruell's org-checklet.el
-          '("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[ X]\\]\\)"
+          '("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[- X]\\]\\)"
             2 'bold prepend)
           (if org-provide-checkbox-statistics
               '("\\[\\([0-9]*%\\)\\]\\|\\[\\([0-9]*\\)/\\([0-9]*\\)\\]"
                 (0 (org-get-checkbox-statistics-face) t)))
           ;; COMMENT
-          (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string
+          (list (concat "^\\*+[ \t]+\\<\\(" org-comment-string
                         "\\|" org-quote-string "\\)\\>")
                 '(1 'org-special-keyword t))
           '("^#.*" (0 'font-lock-comment-face t))
-          ;; DONE
-          (if org-fontify-done-headline
-              (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>")
-                    '(1 'org-done t) '(2 'org-headline-done t))
-            (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>")
-                  '(1 'org-done t)))
-          ;; Table stuff
-          '("^[ \t]*\\(:.*\\)" (1 'org-table t))
+          ;; Code
+          '("^[ \t]*\\(:.*\\)" (1 'org-code t))
+          ;; Table internals
           '("| *\\(:?=[^|\n]*\\)" (1 'org-formula t))
-          '("^[ \t]*| *\\([#!$*_^]\\) *|" (1 'org-formula t))
+          '("^[ \t]*| *\\([#*]\\) *|" (1 'org-formula t))
+          '("^[ \t]*|\\( *\\([$!_^/]\\) *|.*\\)|" (1 'org-formula t))
+          ;; Drawers
+          (list org-drawer-regexp '(0 'org-special-keyword t))
+          (list "^[ \t]*:END:" '(0 'org-special-keyword t))
+          ;; Properties
+          (list org-property-re
+                '(1 'org-special-keyword t)
+                '(3 'org-property-value t))
           (if org-format-transports-properties-p
               '("| *\\(<[0-9]+>\\) *" (1 'org-formula t)))
           '("^\\*+ \\(.*:ARCHIVE:.*\\)" (1 'org-archived prepend))
@@ -3966,15 +4895,22 @@ between words."
 (defvar org-f nil)
 (defun org-get-level-face (n)
   "Get the right face for match N in font-lock matching of healdines."
-  (setq org-l (- (match-end 2) (match-beginning 1)))
+  (setq org-l (- (match-end 2) (match-beginning 1) 1))
   (if org-odd-levels-only (setq org-l (1+ (/ org-l 2))))
-;  (setq org-f (nth (1- (% org-l org-n-levels)) org-level-faces))
-  (setq org-f (nth (% (1- org-l) org-n-levels) org-level-faces))
+  (setq org-f (nth (% (1- org-l) org-n-level-faces) org-level-faces))
   (cond
    ((eq n 1) (if org-hide-leading-stars 'org-hide org-f))
    ((eq n 2) org-f)
    (t (if org-level-color-stars-only nil org-f))))
 
+(defun org-get-todo-face (kwd)
+  "Get the right face for a TODO keyword KWD.
+If KWD is a number, get the corresponding match group."
+  (if (numberp kwd) (setq kwd (match-string kwd)))
+  (or (cdr (assoc kwd org-todo-keyword-faces))
+      (and (member kwd org-done-keywords) 'org-done)
+      'org-todo))
+
 (defun org-unfontify-region (beg end &optional maybe_loudly)
   "Remove fontification and activation overlays from links."
   (font-lock-default-unfontify-region beg end)
@@ -3984,7 +4920,6 @@ between words."
         deactivate-mark buffer-file-name buffer-file-truename)
     (remove-text-properties beg end
                            '(mouse-face t keymap t org-linked-text t
-                                        rear-nonsticky t
                                         invisible t intangible t))))
 
 ;;;; Visibility cycling, including org-goto and indirect buffer
@@ -4022,12 +4957,13 @@ between words."
   `indent-relative', like TAB normally does.  See the option
   `org-cycle-emulate-tab' for details.
 
-- Special case: if point is the beginning of the buffer and there is no
-  headline in line 1, this function will act as if called with prefix arg."
+- Special case: if point is at the beginning of the buffer and there is
+  no headline in line 1, this function will act as if called with prefix arg.
+  But only if also the variable `org-cycle-global-at-bob' is t."
   (interactive "P")
   (let* ((outline-regexp
          (if (and (org-mode-p) org-cycle-include-plain-lists)
-             "\\(?:\\*+\\|\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) \\)"
+             "\\(?:\\*+ \\|\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) \\)"
            outline-regexp))
         (bob-special (and org-cycle-global-at-bob (bobp)
                           (not (looking-at outline-regexp))))
@@ -4080,6 +5016,14 @@ between words."
        (setq org-cycle-global-status 'overview)
        (run-hook-with-args 'org-cycle-hook 'overview))))
 
+     ((and org-drawers org-drawer-regexp
+          (save-excursion
+            (beginning-of-line 1)
+            (looking-at org-drawer-regexp)))
+      ;; Toggle block visibility
+      (org-flag-drawer
+       (not (get-char-property (match-end 0) 'invisible))))
+
      ((integerp arg)
       ;; Show-subtree, ARG levels up from here.
       (save-excursion
@@ -4088,7 +5032,8 @@ between words."
                              (- (funcall outline-level) arg)))
        (org-show-subtree)))
 
-     ((save-excursion (beginning-of-line 1) (looking-at outline-regexp))
+     ((and (save-excursion (beginning-of-line 1) (looking-at outline-regexp))
+          (or (bolp) (not (eq org-cycle-emulate-tab 'exc-hl-bol))))
       ;; At a heading: rotate between three different views
       (org-back-to-heading)
       (let ((goal-column 0) eoh eol eos)
@@ -4102,20 +5047,31 @@ between words."
              (beginning-of-line 2)) (setq eol (point)))
          (outline-end-of-heading)   (setq eoh (point))
          (org-end-of-subtree t)
-         (skip-chars-forward " \t\n")
-         (beginning-of-line 1) ; in case this is an item
+         (unless (eobp)
+           (skip-chars-forward " \t\n")
+           (beginning-of-line 1) ; in case this is an item
+           )
          (setq eos (1- (point))))
        ;; Find out what to do next and set `this-command'
        (cond
         ((= eos eoh)
          ;; Nothing is hidden behind this heading
          (message "EMPTY ENTRY")
-         (setq org-cycle-subtree-status nil))
-        ((>= eol eos)
+         (setq org-cycle-subtree-status nil)
+         (save-excursion
+           (goto-char eos)
+           (outline-next-heading)
+           (if (org-invisible-p) (org-flag-heading nil))))
+        ((or (>= eol eos)
+             (not (string-match "\\S-" (buffer-substring eol eos))))
          ;; Entire subtree is hidden in one line: open it
          (org-show-entry)
          (show-children)
          (message "CHILDREN")
+         (save-excursion
+           (goto-char eos)
+           (outline-next-heading)
+           (if (org-invisible-p) (org-flag-heading nil)))
          (setq org-cycle-subtree-status 'children)
          (run-hook-with-args 'org-cycle-hook 'children))
         ((and (eq last-command this-command)
@@ -4137,6 +5093,11 @@ between words."
 
      ((org-try-cdlatex-tab))
 
+     ((and (eq org-cycle-emulate-tab 'exc-hl-bol)
+          (or (not (bolp))
+              (not (looking-at outline-regexp))))
+      (call-interactively (global-key-binding "\t")))
+
      ((if (and (memq org-cycle-emulate-tab '(white whitestart))
               (save-excursion (beginning-of-line 1) (looking-at "[ \t]*"))
               (or (and (eq org-cycle-emulate-tab 'white)
@@ -4151,7 +5112,7 @@ between words."
          (progn
            (beginning-of-line 1)
            (and (looking-at "[ \t]+") (replace-match ""))))
-      (indent-relative))
+      (call-interactively (global-key-binding "\t")))
 
      (t (save-excursion
          (org-back-to-heading)
@@ -4177,13 +5138,13 @@ of the first headline in the buffer.  This is important, because if the
 first headline is not level one, then (hide-sublevels 1) gives confusing
 results."
   (interactive)
-  (hide-sublevels (save-excursion
-                   (goto-char (point-min))
-                   (if (re-search-forward (concat "^" outline-regexp) nil t)
-                       (progn
-                         (goto-char (match-beginning 0))
-                         (funcall outline-level))
-                     1))))
+  (let ((level (save-excursion
+                (goto-char (point-min))
+                (if (re-search-forward (concat "^" outline-regexp) nil t)
+                    (progn
+                      (goto-char (match-beginning 0))
+                      (funcall outline-level))))))
+    (and level (hide-sublevels level))))
 
 (defun org-content (&optional arg)
   "Show all headlines in the buffer, like a table of contents.
@@ -4210,13 +5171,53 @@ With numerical argument N, show content up to level N."
 This function is the default value of the hook `org-cycle-hook'."
   (when (get-buffer-window (current-buffer))
     (cond
-     ((eq state 'overview) (org-first-headline-recenter 1))
+;     ((eq state 'overview) (org-first-headline-recenter 1))
+;     ((eq state 'overview) (org-beginning-of-line))
      ((eq state 'content)  nil)
      ((eq state 'all)      nil)
      ((eq state 'folded)   nil)
      ((eq state 'children) (or (org-subtree-end-visible-p) (recenter 1)))
      ((eq state 'subtree)  (or (org-subtree-end-visible-p) (recenter 1))))))
 
+
+(defun org-cycle-show-empty-lines (state)
+  "Show empty lines above all visible headlines.
+The region to be covered depends on STATE when called through
+`org-cycle-hook'.  Lisp program can use t for STATE to get the
+entire buffer covered.  Note that an empty line is only shown if there
+are at least `org-cycle-separator-lines' empty lines before the headeline."
+  (when (> org-cycle-separator-lines 0)
+    (save-excursion
+      (let* ((n org-cycle-separator-lines)
+            (re (cond
+                 ((= n 1) "\\(\n[ \t]*\n\\*+\\) ")
+                 ((= n 2) "^[ \t]*\\(\n[ \t]*\n\\*+\\) ")
+                 (t (let ((ns (number-to-string (- n 2))))
+                      (concat "^\\(?:[ \t]*\n\\)\\{" ns "," ns "\\}"
+                              "[ \t]*\\(\n[ \t]*\n\\*+\\) ")))))
+            beg end)
+       (cond
+        ((memq state '(overview contents t))
+         (setq beg (point-min) end (point-max)))
+        ((memq state '(children folded))
+         (setq beg (point) end (progn (org-end-of-subtree t t)
+                                      (beginning-of-line 2)
+                                      (point)))))
+       (when beg
+         (goto-char beg)
+         (while (re-search-forward re end t)
+           (if (not (get-char-property (match-end 1) 'invisible))
+               (outline-flag-region
+                (match-beginning 1) (match-end 1) nil)))))))
+  ;; Never hide empty lines at the end of the file.
+  (save-excursion
+    (goto-char (point-max))
+    (outline-previous-heading)
+    (outline-end-of-heading)
+    (if (and (looking-at "[ \t\n]+")
+            (= (match-end 0) (point-max)))
+       (outline-flag-region (point) (match-end 0) nil))))
+
 (defun org-subtree-end-visible-p ()
   "Is the end of the current subtree visible?"
   (pos-visible-in-window-p
@@ -4234,82 +5235,92 @@ Optional argument N means, put the headline into the Nth line of the window."
 
 (defvar org-goto-window-configuration nil)
 (defvar org-goto-marker nil)
-(defvar org-goto-map (make-sparse-keymap))
-(let ((cmds '(isearch-forward isearch-backward)) cmd)
-  (while (setq cmd (pop cmds))
-    (substitute-key-definition cmd cmd org-goto-map global-map)))
-(define-key org-goto-map "\C-m"     'org-goto-ret)
-(define-key org-goto-map [(left)]   'org-goto-left)
-(define-key org-goto-map [(right)]  'org-goto-right)
-(define-key org-goto-map [(?q)]     'org-goto-quit)
-(define-key org-goto-map [(control ?g)] 'org-goto-quit)
-(define-key org-goto-map "\C-i" 'org-cycle)
-(define-key org-goto-map [(tab)] 'org-cycle)
-(define-key org-goto-map [(down)] 'outline-next-visible-heading)
-(define-key org-goto-map [(up)] 'outline-previous-visible-heading)
-(define-key org-goto-map "n" 'outline-next-visible-heading)
-(define-key org-goto-map "p" 'outline-previous-visible-heading)
-(define-key org-goto-map "f" 'outline-forward-same-level)
-(define-key org-goto-map "b" 'outline-backward-same-level)
-(define-key org-goto-map "u" 'outline-up-heading)
-(define-key org-goto-map "\C-c\C-n" 'outline-next-visible-heading)
-(define-key org-goto-map "\C-c\C-p" 'outline-previous-visible-heading)
-(define-key org-goto-map "\C-c\C-f" 'outline-forward-same-level)
-(define-key org-goto-map "\C-c\C-b" 'outline-backward-same-level)
-(define-key org-goto-map "\C-c\C-u" 'outline-up-heading)
-(let ((l '(1 2 3 4 5 6 7 8 9 0)))
-  (while l (define-key org-goto-map (int-to-string (pop l)) 'digit-argument)))
+(defvar org-goto-map
+  (let ((map (make-sparse-keymap)))
+    (let ((cmds '(isearch-forward isearch-backward kill-ring-save set-mark-command mouse-drag-region universal-argument org-occur)) cmd)
+      (while (setq cmd (pop cmds))
+       (substitute-key-definition cmd cmd map global-map)))
+    (suppress-keymap map)
+    (org-defkey map "\C-m"     'org-goto-ret)
+    (org-defkey map [(left)]   'org-goto-left)
+    (org-defkey map [(right)]  'org-goto-right)
+    (org-defkey map [(?q)]     'org-goto-quit)
+    (org-defkey map [(control ?g)] 'org-goto-quit)
+    (org-defkey map "\C-i" 'org-cycle)
+    (org-defkey map [(tab)] 'org-cycle)
+    (org-defkey map [(down)] 'outline-next-visible-heading)
+    (org-defkey map [(up)] 'outline-previous-visible-heading)
+    (org-defkey map "n" 'outline-next-visible-heading)
+    (org-defkey map "p" 'outline-previous-visible-heading)
+    (org-defkey map "f" 'outline-forward-same-level)
+    (org-defkey map "b" 'outline-backward-same-level)
+    (org-defkey map "u" 'outline-up-heading)
+    (org-defkey map "/" 'org-occur)
+    (org-defkey map "\C-c\C-n" 'outline-next-visible-heading)
+    (org-defkey map "\C-c\C-p" 'outline-previous-visible-heading)
+    (org-defkey map "\C-c\C-f" 'outline-forward-same-level)
+    (org-defkey map "\C-c\C-b" 'outline-backward-same-level)
+    (org-defkey map "\C-c\C-u" 'outline-up-heading)
+    map))
 
 (defconst org-goto-help
-"Select a location to jump to, press RET
-\[Up]/[Down]=next/prev headline   TAB=cycle visibility   RET=select   [Q]uit")
+"Browse copy of buffer to find location or copy text.
+RET=jump to location             [Q]uit and return to previous location
+\[Up]/[Down]=next/prev headline   TAB=cycle visibility   [/] org-occur"
+)
 
 (defun org-goto ()
-  "Go to a different location of the document, keeping current visibility.
+  "Look up a different location in the current file, keeping current visibility.
 
-When you want to go to a different location in a document, the fastest way
-is often to fold the entire buffer and then dive into the tree.  This
-method has the disadvantage, that the previous location will be folded,
+When you want look-up or go to a different location in a document, the
+fastest way is often to fold the entire buffer and then dive into the tree.
+This method has the disadvantage, that the previous location will be folded,
 which may not be what you want.
 
-This command works around this by showing a copy of the current buffer in
-overview mode.  You can dive into the tree in that copy, to find the
-location you want to reach.  When pressing RET, the command returns to the
-original buffer in which the visibility is still unchanged.  It then jumps
-to the new location, making it and the headline hierarchy above it visible."
+This command works around this by showing a copy of the current buffer
+in an indirect buffer, in overview mode.  You can dive into the tree in
+that copy, use org-occur and incremental search to find a location.
+When pressing RET or `Q', the command returns to the original buffer in
+which the visibility is still unchanged.  After RET is will also jump to
+the location selected in the indirect buffer and expose the
+the headline hierarchy above."
   (interactive)
   (let* ((org-goto-start-pos (point))
         (selected-point
-         (org-get-location (current-buffer) org-goto-help)))
+         (car (org-get-location (current-buffer) org-goto-help))))
     (if selected-point
        (progn
          (org-mark-ring-push org-goto-start-pos)
          (goto-char selected-point)
          (if (or (org-invisible-p) (org-invisible-p2))
              (org-show-context 'org-goto)))
-      (error "Quit"))))
+      (message "Quit"))))
 
-(defvar org-selected-point nil) ; dynamically scoped parameter
+(defvar org-goto-selected-point nil) ; dynamically scoped parameter
+(defvar org-goto-exit-command nil) ; dynamically scoped parameter
 
 (defun org-get-location (buf help)
   "Let the user select a location in the Org-mode buffer BUF.
 This function uses a recursive edit.  It returns the selected position
 or nil."
-  (let (org-selected-point)
+  (let (org-goto-selected-point org-goto-exit-command)
     (save-excursion
       (save-window-excursion
        (delete-other-windows)
-       (switch-to-buffer (get-buffer-create "*org-goto*"))
+       (and (get-buffer "*org-goto*") (kill-buffer "*org-goto*"))
+       (switch-to-buffer
+        (condition-case nil
+            (make-indirect-buffer (current-buffer) "*org-goto*")
+          (error (make-indirect-buffer (current-buffer) "*org-goto*"))))
        (with-output-to-temp-buffer "*Help*"
          (princ help))
        (shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
        (setq buffer-read-only nil)
-       (erase-buffer)
-       (insert-buffer-substring buf)
        (let ((org-startup-truncated t)
-             (org-startup-folded t)
+             (org-startup-folded nil)
              (org-startup-align-all-tables nil))
-         (org-mode))
+         (org-mode)
+         (org-overview))
        (setq buffer-read-only t)
        (if (and (boundp 'org-goto-start-pos)
                 (integer-or-marker-p org-goto-start-pos))
@@ -4323,21 +5334,24 @@ or nil."
        (message "Select location and press RET")
        ;; now we make sure that during selection, ony very few keys work
        ;; and that it is impossible to switch to another window.
-       (let ((gm (current-global-map))
-             (overriding-local-map org-goto-map))
-         (unwind-protect
-             (progn
-               (use-global-map org-goto-map)
-               (recursive-edit))
-           (use-global-map gm)))))
+;      (let ((gm (current-global-map))
+;            (overriding-local-map org-goto-map))
+;        (unwind-protect
+;            (progn
+;              (use-global-map org-goto-map)
+;              (recursive-edit))
+;          (use-global-map gm)))
+       (use-local-map org-goto-map)
+       (recursive-edit)
+       ))
     (kill-buffer "*org-goto*")
-    org-selected-point))
+    (cons org-goto-selected-point org-goto-exit-command)))
 
 (defun org-goto-ret (&optional arg)
   "Finish `org-goto' by going to the new location."
   (interactive "P")
-  (setq org-selected-point (point)
-       current-prefix-arg arg)
+  (setq org-goto-selected-point (point)
+       org-goto-exit-command 'return)
   (throw 'exit nil))
 
 (defun org-goto-left ()
@@ -4346,8 +5360,8 @@ or nil."
   (if (org-on-heading-p)
       (progn
        (beginning-of-line 1)
-       (setq org-selected-point (point)
-             current-prefix-arg (- (match-end 0) (match-beginning 0)))
+       (setq org-goto-selected-point (point)
+             org-goto-exit-command 'left)
        (throw 'exit nil))
     (error "Not on a heading")))
 
@@ -4356,17 +5370,16 @@ or nil."
   (interactive)
   (if (org-on-heading-p)
       (progn
-       (outline-end-of-subtree)
-       (or (eobp) (forward-char 1))
-       (setq org-selected-point (point)
-             current-prefix-arg (- (match-end 0) (match-beginning 0)))
+       (setq org-goto-selected-point (point)
+             org-goto-exit-command 'right)
        (throw 'exit nil))
     (error "Not on a heading")))
 
 (defun org-goto-quit ()
   "Finish `org-goto' without cursor motion."
   (interactive)
-  (setq org-selected-point nil)
+  (setq org-goto-selected-point nil)
+  (setq org-goto-exit-command 'quit)
   (throw 'exit nil))
 
 ;;; Indirect buffer display of subtrees
@@ -4474,10 +5487,13 @@ the current headline."
             pos)
        (cond
         ((and (org-on-heading-p) (bolp)
-              (save-excursion (backward-char 1) (not (org-invisible-p))))
+              (or (bobp)
+                  (save-excursion (backward-char 1) (not (org-invisible-p)))))
          (open-line (if blank 2 1)))
-        ((and (bolp) (save-excursion
-                       (backward-char 1) (not (org-invisible-p))))
+        ((and (bolp)
+              (or (bobp)
+                  (save-excursion
+                    (backward-char 1) (not (org-invisible-p)))))
          nil)
         (t (newline (if blank 2 1))))
        (insert head) (just-one-space)
@@ -4486,6 +5502,13 @@ the current headline."
        (unless (= (point) pos) (just-one-space) (backward-delete-char 1))
        (run-hooks 'org-insert-heading-hook)))))
 
+(defun org-insert-heading-after-current ()
+  "Insert a new heading with same level as current, after current subtree."
+  (interactive)
+  (org-back-to-heading)
+  (org-insert-heading)
+  (org-move-subtree-down)
+  (end-of-line 1))
 
 (defun org-insert-todo-heading (arg)
   "Insert a new heading with the same level and TODO state as current heading.
@@ -4500,10 +5523,28 @@ state (TODO by default).  Also with prefix arg, force first state."
       (looking-at org-todo-line-regexp))
     (if (or arg
            (not (match-beginning 2))
-           (equal (match-string 2) org-done-string))
-       (insert (car org-todo-keywords) " ")
+           (member (match-string 2) org-done-keywords))
+       (insert (car org-todo-keywords-1) " ")
       (insert (match-string 2) " "))))
 
+(defun org-insert-subheading (arg)
+  "Insert a new subheading and demote it.
+Works for outline headings and for plain lists alike."
+  (interactive "P")
+  (org-insert-heading arg)
+  (cond
+   ((org-on-heading-p) (org-do-demote))
+   ((org-at-item-p) (org-indent-item 1))))
+
+(defun org-insert-todo-subheading (arg)
+  "Insert a new subheading with TODO keyword or checkbox and demote it.
+Works for outline headings and for plain lists alike."
+  (interactive "P")
+  (org-insert-todo-heading arg)
+  (cond
+   ((org-on-heading-p) (org-do-demote))
+   ((org-at-item-p) (org-indent-item 1))))
+  
 ;;; Promotion and Demotion
 
 (defun org-promote-subtree ()
@@ -4556,6 +5597,9 @@ in the region."
            ((eolp) (insert " "))
            ((equal (char-after) ?\ ) (forward-char 1))))))
 
+(defun org-reduced-level (l)
+  (if org-odd-levels-only (1+ (floor (/ l 2))) l))
+
 (defun org-get-legal-level (level &optional change)
   "Rectify a level change under the influence of `org-odd-levels-only'
 LEVEL is a current level, CHANGE is by how much the level should be
@@ -4573,8 +5617,8 @@ If the region is active in `transient-mark-mode', promote all headings
 in the region."
   (org-back-to-heading t)
   (let* ((level (save-match-data (funcall outline-level)))
-        (up-head (make-string (org-get-legal-level level -1) ?*))
-        (diff (abs (- level (length up-head)))))
+        (up-head (concat (make-string (org-get-legal-level level -1) ?*) " "))
+        (diff (abs (- level (length up-head) -1))))
     (if (= level 1) (error "Cannot promote to level 0. UNDO to recover if necessary"))
     (replace-match up-head nil t)
     ;; Fixup tag positioning
@@ -4587,8 +5631,8 @@ If the region is active in `transient-mark-mode', demote all headings
 in the region."
   (org-back-to-heading t)
   (let* ((level (save-match-data (funcall outline-level)))
-        (down-head (make-string (org-get-legal-level level 1) ?*))
-        (diff (abs (- level (length down-head)))))
+        (down-head (concat (make-string (org-get-legal-level level 1) ?*) " "))
+        (diff (abs (- level (length down-head) -1))))
     (replace-match down-head nil t)
     ;; Fixup tag positioning
     (and org-auto-align-tags (org-set-tags nil t))
@@ -4632,7 +5676,8 @@ would end up with no indentation after the change, nothing at all is done."
                        "^\\S-"
                      (concat "^ \\{0," (int-to-string (- diff)) "\\}\\S-")))
          col)
-      (unless (save-excursion (re-search-forward prohibit end t))
+      (unless (save-excursion (end-of-line 1)
+                             (re-search-forward prohibit end t))
        (while (re-search-forward "^[ \t]+" end t)
          (goto-char (match-end 0))
          (setq col (current-column))
@@ -4649,8 +5694,8 @@ level 5 etc."
     (let ((org-odd-levels-only nil) n)
       (save-excursion
        (goto-char (point-min))
-       (while (re-search-forward "^\\*\\*+" nil t)
-         (setq n (1- (length (match-string 0))))
+       (while (re-search-forward "^\\*\\*+ " nil t)
+         (setq n (- (length (match-string 0)) 2))
          (while (>= (setq n (1- n)) 0)
            (org-demote))
          (end-of-line 1))))))
@@ -4664,15 +5709,15 @@ is signaled in this case."
   (interactive)
   (goto-char (point-min))
   ;; First check if there are no even levels
-  (when (re-search-forward "^\\(\\*\\*\\)+[^*]" nil t)
+  (when (re-search-forward "^\\(\\*\\*\\)+ " nil t)
     (org-show-context t)
     (error "Not all levels are odd in this file.  Conversion not possible."))
   (when (yes-or-no-p "Are you sure you want to globally change levels to odd-even? ")
     (let ((org-odd-levels-only nil) n)
       (save-excursion
        (goto-char (point-min))
-       (while (re-search-forward "^\\*\\*+" nil t)
-         (setq n (/ (length (match-string 0)) 2))
+       (while (re-search-forward "^\\*\\*+ " nil t)
+         (setq n (/ (length (1- (match-string 0))) 2))
          (while (>= (setq n (1- n)) 0)
            (org-promote))
          (end-of-line 1))))))
@@ -4724,6 +5769,7 @@ is signaled in this case."
     (setq txt (buffer-substring beg end))
     (delete-region beg end)
     (insert txt)
+    (or (bolp) (insert "\n"))
     (goto-char ins-point)
     (if folded (hide-subtree))
     (move-marker ins-point nil)))
@@ -4749,7 +5795,9 @@ This is a short-hand for marking the subtree and then copying it.
 If CUT is non-nil, actually cut the subtree."
   (interactive)
   (let (beg end folded)
-    (org-back-to-heading)
+    (if (interactive-p)
+       (org-back-to-heading nil) ; take what looks like a subtree
+      (org-back-to-heading t)) ; take what is really there
     (setq beg (point))
     (save-match-data
       (save-excursion (outline-end-of-heading)
@@ -4794,7 +5842,7 @@ If optional TREE is given, use this text instead of the kill ring."
         (^re_ (concat "\\(" outline-regexp "\\)[  \t]*"))
 
         (old-level (if (string-match ^re txt)
-                       (- (match-end 0) (match-beginning 0))
+                       (- (match-end 0) (match-beginning 0) 1)
                      -1))
         (force-level (cond (level (prefix-numeric-value level))
                            ((string-match
@@ -4828,33 +5876,26 @@ If optional TREE is given, use this text instead of the kill ring."
         (func (if (> shift 0) 'org-demote 'org-promote))
         (org-odd-levels-only nil)
         beg end)
-    ;; Remove the forces level indicator
+    ;; Remove the forced level indicator
     (if force-level
        (delete-region (point-at-bol) (point)))
-    ;; Make sure we start at the beginning of an empty line
-    (if (not (bolp)) (insert "\n"))
-    (if (not (looking-at "[ \t]*$"))
-       (progn (insert "\n") (backward-char 1)))
     ;; Paste
+    (beginning-of-line 1)
     (setq beg (point))
-    (if (string-match "[ \t\r\n]+\\'" txt)
-       (setq txt (replace-match "\n" t t txt)))
     (insert txt)
+    (unless (string-match "\n[ \t]*\\'" txt) (insert "\n"))
     (setq end (point))
-    (if (looking-at "[ \t\r\n]+")
-       (replace-match "\n"))
     (goto-char beg)
     ;; Shift if necessary
-    (if (= shift 0)
-       (message "Pasted at level %d, without shift" new-level)
+    (unless (= shift 0)
       (save-restriction
        (narrow-to-region beg end)
        (while (not (= shift 0))
          (org-map-region func (point-min) (point-max))
          (setq shift (+ delta shift)))
-       (goto-char (point-min))
-       (message "Pasted at level %d, with shift by %d levels"
-                new-level shift1)))
+       (goto-char (point-min))))
+    (when (interactive-p)
+      (message "Clipboard pasted as level %d subtree" new-level))
     (if (and kill-ring
             (eq org-subtree-clip (current-kill 0))
             org-subtree-clip-folded)
@@ -4870,16 +5911,17 @@ which is OK for `org-paste-subtree'.
 If optional TXT is given, check this string instead of the current kill."
   (let* ((kill (or txt (and kill-ring (current-kill 0)) ""))
         (start-level (and kill
-                          (string-match (concat "\\`" outline-regexp) kill)
-                          (- (match-end 0) (match-beginning 0))))
-        (re (concat "^" outline-regexp))
+                          (string-match (concat "\\`" org-outline-regexp) kill)
+                          (- (match-end 0) (match-beginning 0) 1)))
+        (re (concat "^" org-outline-regexp))
         (start 1))
     (if (not start-level)
-       nil  ;; does not even start with a heading
+       (progn
+         nil)  ;; does not even start with a heading
       (catch 'exit
        (while (setq start (string-match re kill (1+ start)))
-         (if (< (- (match-end 0) (match-beginning 0)) start-level)
-             (throw 'exit nil)))
+         (when (< (- (match-end 0) (match-beginning 0) 1) start-level)
+           (throw 'exit nil)))
        t))))
 
 (defun org-narrow-to-subtree ()
@@ -4888,7 +5930,7 @@ If optional TXT is given, check this string instead of the current kill."
   (save-excursion
     (narrow-to-region
      (progn (org-back-to-heading) (point))
-     (progn (org-end-of-subtree t) (point)))))
+     (progn (org-end-of-subtree t t) (point)))))
 
 
 ;;; Outline Sorting
@@ -4981,6 +6023,8 @@ WITH-CASE, the sorting considers case as well.  With two prefix arguments
             nentries
             (if unique (format ", %d duplicates removed" nremoved) ""))))
 
+(defvar org-priority-regexp) ; defined later in the file
+
 (defun org-do-sort (table what &optional with-case sorting-type)
   "Sort TABLE of WHAT according to SORTING-TYPE.
 The user will be prompted for the SORTING-TYPE if the call to this
@@ -4990,7 +6034,7 @@ the car of the elements of the table.
 If WITH-CASE is non-nil, the sorting will be case-sensitive."
   (unless sorting-type
     (message
-     "Sort %s: [a]lphabetically [n]umerically [t]ime. A/N/T means reversed:"
+     "Sort %s: [a]lphabetic. [n]umeric. [t]ime  [p]riority.  A/N/T/P means reversed:"
      what)
     (setq sorting-type (read-char-exclusive)))
   (let ((dcst (downcase sorting-type))
@@ -5014,6 +6058,13 @@ If WITH-CASE is non-nil, the sorting will be case-sensitive."
                   (org-time-string-to-time (match-string 0 x)))
                0))
            comparefun (if (= dcst sorting-type) '< '>)))
+     ((= dcst ?p)
+      (setq extractfun
+           (lambda (x)
+             (if (string-match org-priority-regexp x)
+                 (string-to-char (match-string 2 x))
+               org-default-priority))
+           comparefun (if (= dcst sorting-type) '< '>)))                 
      (t (error "Invalid sorting type `%c'" sorting-type)))
 
     (sort (mapcar (lambda (x) (cons (funcall extractfun (car x)) (cdr x)))
@@ -5036,7 +6087,6 @@ If WITH-CASE is non-nil, the sorting will be case-sensitive."
        ((= llt ?\)) "\\([ \t]*\\([-+]\\|\\([0-9]+)\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
        (t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))))))
 
-
 (defun org-in-item-p ()
   "It the cursor inside a plain list item.
 Does not have to be the first line."
@@ -5089,7 +6139,7 @@ Return t when things worked, nil when we are not in an item."
        (save-excursion
         (goto-char (match-end 0))
         (skip-chars-forward " \t")
-        (looking-at "\\[[ X]\\]"))))
+        (looking-at "\\[[- X]\\]"))))
 
 (defun org-toggle-checkbox (&optional arg)
   "Toggle the checkbox in the current line."
@@ -5103,7 +6153,11 @@ Return t when things worked, nil when we are not in an item."
        (setq beg (point) end (save-excursion (outline-next-heading) (point))))
        ((org-at-item-checkbox-p)
        (save-excursion
-         (replace-match (if (equal (match-string 0) "[ ]") "[X]" "[ ]") t t))
+         (replace-match
+          (cond (arg "[-]")
+                ((member (match-string 0) '("[ ]" "[-]")) "[X]")
+                (t "[ ]"))
+          t t))
        (throw 'exit t))
        (t (error "Not at a checkbox or heading, and no active region")))
       (save-excursion
@@ -5130,12 +6184,14 @@ with the current numbers.  With optional prefix argument ALL, do this for
 the whole buffer."
   (interactive "P")
   (save-excursion
-    (let* ((buffer-invisibility-spec nil) ; Emacs 21 compatibility
-          (beg (progn (outline-back-to-heading) (point)))
+    (let* ((buffer-invisibility-spec (org-inhibit-invisibility)) ; Emacs 21
+          (beg (condition-case nil
+                   (progn (outline-back-to-heading) (point))
+                 (error (point-min))))
           (end (move-marker (make-marker)
                             (progn (outline-next-heading) (point))))
           (re "\\(\\[[0-9]*%\\]\\)\\|\\(\\[[0-9]*/[0-9]*\\]\\)")
-          (re-box "^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[ X]\\]\\)")
+          (re-box "^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[- X]\\]\\)")
           b1 e1 f1 c-on c-off lim (cstat 0))
       (when all
        (goto-char (point-min))
@@ -5155,14 +6211,16 @@ the whole buffer."
        (goto-char e1)
        (when lim
          (while (re-search-forward re-box lim t)
-           (if (equal (match-string 2) "[ ]")
+           (if (member (match-string 2) '("[ ]" "[-]"))
                (setq c-off (1+ c-off))
              (setq c-on (1+ c-on))))
-         (delete-region b1 e1)
+;        (delete-region b1 e1)
          (goto-char b1)
          (insert (if f1
                      (format "[%d%%]" (/ (* 100 c-on) (max 1 (+ c-on c-off))))
-                   (format "[%d/%d]" c-on (+ c-on c-off))))))
+                   (format "[%d/%d]" c-on (+ c-on c-off))))
+         (and (looking-at "\\[.*?\\]")
+              (replace-match ""))))
       (when (interactive-p)
        (message "Checkbox satistics updated %s (%d places)"
                 (if all "in entire file" "in current outline entry") cstat)))))
@@ -5214,13 +6272,24 @@ leave it alone.  If it is larger than ind, set it to the target."
        (concat (make-string i1 ?\ ) l)
       l)))
 
+(defcustom org-empty-line-terminates-plain-lists nil
+  "Non-nil means, an empty line ends all plain list levels.
+When nil, empty lines are part of the preceeding item."
+  :group 'org-plain-lists
+  :type 'boolean)
+
 (defun org-beginning-of-item ()
   "Go to the beginning of the current hand-formatted item.
 If the cursor is not in an item, throw an error."
   (interactive)
   (let ((pos (point))
-       (limit (save-excursion (org-back-to-heading)
-                              (beginning-of-line 2) (point)))
+       (limit (save-excursion
+                (condition-case nil
+                    (progn
+                      (org-back-to-heading)
+                      (beginning-of-line 2) (point))
+                  (error (point-min)))))
+       (ind-empty (if org-empty-line-terminates-plain-lists 0 10000))
        ind ind1)
     (if (org-at-item-p)
        (beginning-of-line 1)
@@ -5230,12 +6299,14 @@ If the cursor is not in an item, throw an error."
       (if (catch 'exit
            (while t
              (beginning-of-line 0)
-             (if (< (point) limit) (throw 'exit nil))
-             (unless (looking-at "[ \t]*$")
+             (if (or (bobp) (< (point) limit)) (throw 'exit nil))
+
+             (if (looking-at "[ \t]*$")
+                 (setq ind1 ind-empty)
                (skip-chars-forward " \t")
-               (setq ind1 (current-column))
-               (if (< ind1 ind)
-                   (throw 'exit (org-at-item-p))))))
+               (setq ind1 (current-column)))
+             (if (< ind1 ind)
+                 (progn (beginning-of-line 1) (throw 'exit (org-at-item-p))))))
          nil
        (goto-char pos)
        (error "Not in an item")))))
@@ -5244,22 +6315,27 @@ If the cursor is not in an item, throw an error."
   "Go to the end of the current hand-formatted item.
 If the cursor is not in an item, throw an error."
   (interactive)
-  (let ((pos (point))
-       (limit (save-excursion (outline-next-heading) (point)))
-       (ind (save-excursion
-              (org-beginning-of-item)
-              (skip-chars-forward " \t")
-              (current-column)))
-       ind1)
-    (if (catch 'exit
-         (while t
-           (beginning-of-line 2)
-           (if (>= (point) limit) (throw 'exit t))
-           (unless (looking-at "[ \t]*$")
-             (skip-chars-forward " \t")
-             (setq ind1 (current-column))
-             (if (<= ind1 ind) (throw 'exit t)))))
-       (beginning-of-line 1)
+  (let* ((pos (point))
+        ind1
+        (ind-empty (if org-empty-line-terminates-plain-lists 0 10000))
+        (limit (save-excursion (outline-next-heading) (point)))
+        (ind (save-excursion
+               (org-beginning-of-item)
+               (skip-chars-forward " \t")
+               (current-column)))
+        (end (catch 'exit
+               (while t
+                 (beginning-of-line 2)
+                 (if (eobp) (throw 'exit (point)))
+                 (if (>= (point) limit) (throw 'exit (point-at-bol)))
+                 (if (looking-at "[ \t]*$")
+                     (setq ind1 ind-empty)
+                   (skip-chars-forward " \t")
+                   (setq ind1 (current-column)))
+                 (if (<= ind1 ind)
+                     (throw 'exit (point-at-bol)))))))
+    (if end
+       (goto-char end)
       (goto-char pos)
       (error "Not in an item"))))
 
@@ -5278,9 +6354,9 @@ Error if not at a plain list, or if this is the last item in the list."
 
 (defun org-previous-item ()
   "Move to the beginning of the previous item in the current plain list.
-Error if not at a plain list, or if this is the last item in the list."
+Error if not at a plain list, or if this is the first item in the list."
   (interactive)
-  (let (beg ind (pos (point)))
+  (let (beg ind ind1 (pos (point)))
     (org-beginning-of-item)
     (setq beg (point))
     (setq ind (org-get-indentation))
@@ -5290,10 +6366,13 @@ Error if not at a plain list, or if this is the last item in the list."
        (beginning-of-line 0)
        (if (looking-at "[ \t]*$")
            nil
-         (if (<= (org-get-indentation) ind)
+         (if (<= (setq ind1 (org-get-indentation)) ind)
              (throw 'exit t)))))
     (condition-case nil
-       (org-beginning-of-item)
+       (if (or (not (org-at-item-p))
+               (< ind1 (1- ind)))
+           (error "")
+         (org-beginning-of-item))
       (error (goto-char pos)
             (error "On first item")))))
 
@@ -5338,7 +6417,11 @@ so this really moves item trees."
       (while t
        (beginning-of-line 0)
        (if (looking-at "[ \t]*$")
-           nil
+           (if org-empty-line-terminates-plain-lists
+               (progn
+                 (goto-char pos)
+                 (error "Cannot move this item further up"))
+             nil)
          (if (<= (setq ind1 (org-get-indentation)) ind)
              (throw 'exit t)))))
     (condition-case nil
@@ -5362,10 +6445,45 @@ so this really moves item trees."
   "Renumber the ordered list at point if setup allows it.
 This tests the user option `org-auto-renumber-ordered-lists' before
 doing the renumbering."
-  (and org-auto-renumber-ordered-lists
-       (org-at-item-p)
-       (match-beginning 3)
-       (org-renumber-ordered-list 1)))
+  (interactive)
+  (when (and org-auto-renumber-ordered-lists
+            (org-at-item-p))
+    (if (match-beginning 3)
+       (org-renumber-ordered-list 1)
+      (org-fix-bullet-type))))
+
+(defun org-maybe-renumber-ordered-list-safe ()
+  (condition-case nil
+      (save-excursion
+       (org-maybe-renumber-ordered-list))
+    (error nil)))
+
+(defun org-cycle-list-bullet (&optional which)
+  "Cycle through the different itemize/enumerate bullets.
+This cycle the entire list level through the sequence:
+
+   `-'  ->  `+'  ->  `*'  ->  `1.'  ->  `1)'
+
+If WHICH is a string, use that as the new bullet.  If WHICH is an integer,
+0 meand `-', 1 means `+' etc."
+  (interactive "P")
+  (org-preserve-lc
+   (org-beginning-of-item-list)
+   (org-at-item-p)
+   (beginning-of-line 1)
+   (let ((current (match-string 0)) new)
+     (setq new (cond
+               ((and which (nth (1- which) '("-" "+" "*" "1." "1)"))))
+               ((string-match "-" current) "+")
+               ((string-match "\\+" current)
+                (if (looking-at "\\S-") "1." "*"))
+               ((string-match "\\*" current) "1.")
+               ((string-match "\\." current) "1)")
+               ((string-match ")" current) "-")
+               (t (error "This should not happen"))))
+     (and (looking-at "\\([ \t]*\\)\\S-+") (replace-match (concat "\\1" new)))
+     (org-fix-bullet-type)
+     (org-maybe-renumber-ordered-list))))
 
 (defun org-get-string-indentation (s)
   "What indentation has S due to SPACE and TAB at the beginning of the string?"
@@ -5391,19 +6509,46 @@ with something like \"1.\" or \"2)\"."
        (ind (org-get-string-indentation
              (buffer-substring (point-at-bol) (match-beginning 3))))
        ;; (term (substring (match-string 3) -1))
-       ind1 (n (1- arg)))
+       ind1 (n (1- arg))
+       fmt)
     ;; find where this list begins
+    (org-beginning-of-item-list)
+    (looking-at "[ \t]*[0-9]+\\([.)]\\)")
+    (setq fmt (concat "%d" (match-string 1)))
+    (beginning-of-line 0)
+    ;; walk forward and replace these numbers
     (catch 'exit
       (while t
        (catch 'next
-         (beginning-of-line 0)
-         (if (looking-at "[ \t]*$") (throw 'next t))
+         (beginning-of-line 2)
+         (if (eobp) (throw 'exit nil))
+         (if (looking-at "[ \t]*$") (throw 'next nil))
          (skip-chars-forward " \t") (setq ind1 (current-column))
-         (if (or (< ind1 ind)
-                 (and (= ind1 ind)
-                      (not (org-at-item-p))))
-             (throw 'exit t)))))
-    ;; Walk forward and replace these numbers
+         (if (> ind1 ind) (throw 'next t))
+         (if (< ind1 ind) (throw 'exit t))
+         (if (not (org-at-item-p)) (throw 'exit nil))
+         (delete-region (match-beginning 2) (match-end 2))
+         (goto-char (match-beginning 2))
+         (insert (format fmt (setq n (1+ n)))))))
+    (goto-line line)
+    (move-to-column col)))
+
+(defun org-fix-bullet-type ()
+  "Make sure all items in this list have the same bullet as the firsst item."
+  (interactive)
+  (unless (org-at-item-p) (error "This is not a list"))
+  (let ((line (org-current-line))
+       (col (current-column))
+       (ind (current-indentation))
+       ind1 bullet)
+    ;; find where this list begins
+    (org-beginning-of-item-list)
+    (beginning-of-line 1)
+    ;; find out what the bullet type is
+    (looking-at "[ \t]*\\(\\S-+\\)")
+    (setq bullet (match-string 1))
+    ;; walk forward and replace these numbers
+    (beginning-of-line 0)
     (catch 'exit
       (while t
        (catch 'next
@@ -5414,13 +6559,37 @@ with something like \"1.\" or \"2)\"."
          (if (> ind1 ind) (throw 'next t))
          (if (< ind1 ind) (throw 'exit t))
          (if (not (org-at-item-p)) (throw 'exit nil))
-         (if (not (match-beginning 3))
-             (error "unordered bullet in ordered list.  Press \\[undo] to recover"))
-         (delete-region (match-beginning 3) (1- (match-end 3)))
-         (goto-char (match-beginning 3))
-         (insert (format "%d" (setq n (1+ n)))))))
+         (skip-chars-forward " \t")
+         (looking-at "\\S-+")
+         (replace-match bullet))))
     (goto-line line)
-    (move-to-column col)))
+    (move-to-column col)
+    (if (string-match "[0-9]" bullet)
+       (org-renumber-ordered-list 1))))
+
+(defun org-beginning-of-item-list ()
+  "Go to the beginning of the current item list.
+I.e. to the first item in this list."
+  (interactive)
+  (org-beginning-of-item)
+  (let ((pos (point-at-bol))
+        (ind (org-get-indentation))
+       ind1)
+    ;; find where this list begins
+    (catch 'exit
+      (while t
+       (catch 'next
+         (beginning-of-line 0)
+         (if (looking-at "[ \t]*$")
+             (throw (if (bobp) 'exit 'next) t))
+         (skip-chars-forward " \t") (setq ind1 (current-column))
+         (if (or (< ind1 ind)
+                 (and (= ind1 ind)
+                      (not (org-at-item-p)))
+                 (bobp))
+             (throw 'exit t)
+           (when (org-at-item-p) (setq pos (point-at-bol)))))))
+    (goto-char pos)))
 
 (defvar org-last-indent-begin-marker (make-marker))
 (defvar org-last-indent-end-marker (make-marker))
@@ -5436,7 +6605,7 @@ with something like \"1.\" or \"2)\"."
   (unless (org-at-item-p)
     (error "Not on an item"))
   (save-excursion
-    (let (beg end ind ind1)
+    (let (beg end ind ind1 tmp delta ind-down ind-up)
       (if (memq last-command '(org-shiftmetaright org-shiftmetaleft))
          (setq beg org-last-indent-begin-marker
                end org-last-indent-end-marker)
@@ -5445,14 +6614,252 @@ with something like \"1.\" or \"2)\"."
        (org-end-of-item)
        (setq end (move-marker org-last-indent-end-marker (point))))
       (goto-char beg)
-      (skip-chars-forward " \t") (setq ind (current-column))
-      (if (< (+ arg ind) 0) (error "Cannot outdent beyond margin"))
+      (setq tmp (org-item-indent-positions)
+           ind (car tmp)
+           ind-down (nth 2 tmp)
+           ind-up (nth 1 tmp)
+           delta (if (> arg 0)
+                     (if ind-down (- ind-down ind) 2)
+                   (if ind-up (- ind-up ind) -2)))
+      (if (< (+ delta ind) 0) (error "Cannot outdent beyond margin"))
       (while (< (point) end)
        (beginning-of-line 1)
        (skip-chars-forward " \t") (setq ind1 (current-column))
        (delete-region (point-at-bol) (point))
-       (indent-to-column (+ ind1 arg))
-       (beginning-of-line 2)))))
+       (or (eolp) (indent-to-column (+ ind1 delta)))
+       (beginning-of-line 2))))
+  (org-fix-bullet-type)
+  (org-maybe-renumber-ordered-list-safe)
+  (save-excursion
+    (beginning-of-line 0)
+    (condition-case nil (org-beginning-of-item) (error nil))
+    (org-maybe-renumber-ordered-list-safe)))
+
+(defun org-item-indent-positions ()
+  "Return indentation for plain list items.
+This returns a list with three values:  The current indentation, the
+parent indentation and the indentation a child should habe.
+Assumes cursor in item line."
+  (let* ((bolpos (point-at-bol))
+        (ind (org-get-indentation))
+        ind-down ind-up pos)
+    (save-excursion
+      (org-beginning-of-item-list)
+      (skip-chars-backward "\n\r \t")
+      (when (org-in-item-p)
+       (org-beginning-of-item)
+       (setq ind-up (org-get-indentation))))
+    (setq pos (point))
+    (save-excursion
+      (cond
+       ((and (condition-case nil (progn (org-previous-item) t)
+              (error nil))
+            (or (forward-char 1) t)
+            (re-search-forward "^\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)" bolpos t))
+       (setq ind-down (org-get-indentation)))
+       ((and (goto-char pos)
+            (org-at-item-p))
+       (goto-char (match-end 0))
+       (skip-chars-forward " \t")
+       (setq ind-down (current-column)))))
+    (list ind ind-up ind-down)))
+
+;;; The orgstruct minor mode
+
+;; Define a minor mode which can be used in other modes in order to
+;; integrate the org-mode structure editing commands.
+
+;; This is really a hack, because the org-mode structure commands use
+;; keys which normally belong to the major mode.  Here is how it
+;; works: The minor mode defines all the keys necessary to operate the
+;; structure commands, but wraps the commands into a function which
+;; tests if the cursor is currently at a headline or a plain list
+;; item.  If that is the case, the structure command is used,
+;; temporarily setting many Org-mode variables like regular
+;; expressions for filling etc.  However, when any of those keys is
+;; used at a different location, function uses `key-binding' to look
+;; up if the key has an associated command in another currently active
+;; keymap (minor modes, major mode, global), and executes that
+;; command.  There might be problems if any of the keys is otherwise
+;; used as a prefix key.
+
+;; Another challenge is that the key binding for TAB can be tab or \C-i,
+;; likewise the binding for RET can be return or \C-m.  Orgtbl-mode
+;; addresses this by checking explicitly for both bindings.
+
+(defvar orgstruct-mode-map (make-sparse-keymap)
+  "Keymap for the minor `orgstruct-mode'.")
+
+(defvar org-local-vars nil
+  "List of local variables, for use by `orgstruct-mode'")
+
+;;;###autoload
+(define-minor-mode orgstruct-mode
+  "Toggle the minor more `orgstruct-mode'.
+This mode is for using Org-mode structure commands in other modes.
+The following key behave as if Org-mode was active, if the cursor
+is on a headline, or on a plain list item (both in the definition
+of Org-mode).
+
+M-up        Move entry/item up
+M-down     Move entry/item down
+M-left     Promote
+M-right            Demote
+M-S-up     Move entry/item up
+M-S-down    Move entry/item down
+M-S-left    Promote subtree
+M-S-right   Demote subtree
+M-q        Fill paragraph and items like in Org-mode
+C-c ^      Sort entries
+C-c -      Cycle list bullet
+TAB         Cycle item visibility
+M-RET       Insert new heading/item
+S-M-RET     Insert new TODO heading / Chekbox item
+C-c C-c     Set tags / toggle checkbox"
+  nil " OrgStruct" nil
+  (and (orgstruct-setup) (defun orgstruct-setup () nil)))
+
+;;;###autoload
+(defun turn-on-orgstruct ()
+  "Unconditionally turn on `orgstruct-mode'."
+  (orgstruct-mode 1))
+
+;;;###autoload
+(defun turn-on-orgstruct++ ()
+  "Unconditionally turn on `orgstruct-mode', and force org-mode indentations.
+In addition to setting orgstruct-mode, this also exports all indentation and
+autofilling variables from org-mode into the buffer.  Note that turning
+off orgstruct-mode will *not* remove these additonal settings."
+  (orgstruct-mode 1)
+  (let (var val)
+    (mapc
+     (lambda (x)
+       (when (string-match
+             "^\\(paragraph-\\|auto-fill\\|fill-paragraph\\|adaptive-fill\\|indent-\\)"
+             (symbol-name (car x)))
+        (setq var (car x) val (nth 1 x))
+        (org-set-local var (if (eq (car-safe val) 'quote) (nth 1 val) val))))
+     org-local-vars)))
+
+(defun orgstruct-error ()
+  "Error when there is no default binding for a structure key."
+  (interactive)
+  (error "This key is has no function outside structure elements"))
+
+(defun orgstruct-setup ()
+  "Setup orgstruct keymaps."
+  (let ((nfunc 0)
+       (bindings
+        (list
+         '([(meta up)]           org-metaup)
+         '([(meta down)]         org-metadown)
+         '([(meta left)]         org-metaleft)
+         '([(meta right)]        org-metaright)
+         '([(meta shift up)]     org-shiftmetaup)
+         '([(meta shift down)]   org-shiftmetadown)
+         '([(meta shift left)]   org-shiftmetaleft)
+         '([(meta shift right)]  org-shiftmetaright)
+         '([(shift up)]          org-shiftup)
+         '([(shift down)]        org-shiftdown)
+         '("\C-c\C-c"            org-ctrl-c-ctrl-c)
+         '("\M-q"                fill-paragraph)
+         '("\C-c^"               org-sort)
+         '("\C-c-"               org-cycle-list-bullet)))
+       elt key fun cmd)
+    (while (setq elt (pop bindings))
+      (setq nfunc (1+ nfunc))
+      (setq key (org-key (car elt))
+           fun (nth 1 elt)
+           cmd (orgstruct-make-binding fun nfunc key))
+      (org-defkey orgstruct-mode-map key cmd))
+
+    ;; Special treatment needed for TAB and RET
+    (org-defkey orgstruct-mode-map [(tab)]
+               (orgstruct-make-binding 'org-cycle 102 [(tab)] "\C-i"))
+    (org-defkey orgstruct-mode-map "\C-i"
+               (orgstruct-make-binding 'org-cycle 103 "\C-i" [(tab)]))
+    
+    (org-defkey orgstruct-mode-map "\M-\C-m"
+               (orgstruct-make-binding 'org-insert-heading 105
+                                    "\M-\C-m" [(meta return)]))
+    (org-defkey orgstruct-mode-map [(meta return)]
+               (orgstruct-make-binding 'org-insert-heading 106
+                                    [(meta return)] "\M-\C-m"))
+
+    (org-defkey orgstruct-mode-map [(shift meta return)]
+               (orgstruct-make-binding 'org-insert-todo-heading 107
+                                    [(meta return)] "\M-\C-m"))
+    
+    (unless org-local-vars
+      (setq org-local-vars (org-get-local-variables)))
+    
+    t))
+
+(defun orgstruct-make-binding (fun n &rest keys)
+  "Create a function for binding in the structure minor mode.
+FUN is the command to call inside a table.  N is used to create a unique
+command name.  KEYS are keys that should be checked in for a command
+to execute outside of tables."
+  (eval
+   (list 'defun
+        (intern (concat "orgstruct-hijacker-command-" (int-to-string n)))
+        '(arg)
+        (concat "In Structure, run `" (symbol-name fun) "'.\n"
+                "Outside of structure, run the binding of `"
+                (mapconcat (lambda (x) (format "%s" x)) keys "' or `")
+                "'.")
+        '(interactive "p")
+        (list 'if
+              '(org-context-p 'headline 'item)
+              (list 'org-run-like-in-org-mode (list 'quote fun))
+              (list 'let '(orgstruct-mode)
+                    (list 'call-interactively
+                          (append '(or)
+                                  (mapcar (lambda (k)
+                                            (list 'key-binding k))
+                                          keys)
+                                  '('orgstruct-error))))))))
+
+(defun org-context-p (&rest contexts)
+  "Check if local context is and of CONTEXTS.
+Possible values in the list of contexts are `table', `headline', and `item'."
+  (let ((pos (point)))
+    (goto-char (point-at-bol))
+    (prog1 (or (and (memq 'table contexts)
+                   (looking-at "[ \t]*|"))
+              (and (memq 'headline contexts)
+                   (looking-at "\\*+"))
+              (and (memq 'item contexts)
+                   (looking-at "[ \t]*\\([-+*] \\|[0-9]+[.)] \\)")))
+      (goto-char pos))))
+
+(defun org-get-local-variables ()
+  "Return a list of all local variables in an org-mode buffer."
+  (let (varlist)
+    (with-current-buffer (get-buffer-create "*Org tmp*")
+      (erase-buffer)
+      (org-mode)
+      (setq varlist (buffer-local-variables)))
+    (kill-buffer "*Org tmp*")
+    (delq nil
+         (mapcar
+          (lambda (x) 
+            (setq x
+                  (if (symbolp x)
+                      (list x)
+                    (list (car x) (list 'quote (cdr x)))))
+            (if (string-match
+                 "^\\(org-\\|orgtbl-\\|outline-\\|comment-\\|paragraph-\\|auto-fill\\|fill-paragraph\\|adaptive-fill\\|indent-\\)"
+                 (symbol-name (car x)))
+                x nil))
+          varlist))))
+
+;;;###autoload
+(defun org-run-like-in-org-mode (cmd)
+  (unless org-local-vars
+    (setq org-local-vars (org-get-local-variables)))
+  (eval (list 'let org-local-vars
+             (list 'call-interactively (list 'quote cmd)))))
 
 ;;;; Archiving
 
@@ -5468,46 +6875,68 @@ When called with prefix argument FIND-DONE, find whole trees without any
 open TODO items and archive them (after getting confirmation from the user).
 If the cursor is not at a headline when this comand is called, try all level
 1 trees.  If the cursor is on a headline, only try the direct children of
-this heading. "
+this heading."
   (interactive "P")
   (if find-done
       (org-archive-all-done)
     ;; Save all relevant TODO keyword-relatex variables
 
     (let ((tr-org-todo-line-regexp org-todo-line-regexp) ; keep despite compiler
-         (tr-org-todo-keywords org-todo-keywords)
-         (tr-org-todo-interpretation org-todo-interpretation)
-         (tr-org-done-string org-done-string)
+         (tr-org-todo-keywords-1 org-todo-keywords-1)
+         (tr-org-todo-kwd-alist org-todo-kwd-alist)
+         (tr-org-done-keywords org-done-keywords)
          (tr-org-todo-regexp org-todo-regexp)
          (tr-org-todo-line-regexp org-todo-line-regexp)
          (tr-org-odd-levels-only org-odd-levels-only)
          (this-buffer (current-buffer))
          (org-archive-location org-archive-location)
          (re "^#\\+ARCHIVE:[ \t]+\\(\\S-.*\\S-\\)[ \t]*$")
-         file heading buffer level newfile-p)
+         (file (abbreviate-file-name (buffer-file-name)))
+         (time (format-time-string
+                (substring (cdr org-time-stamp-formats) 1 -1)
+                (current-time)))
+         afile heading buffer level newfile-p
+         category todo priority ltags itags prop)
 
       ;; Try to find a local archive location
       (save-excursion
-       (if (or (re-search-backward re nil t) (re-search-forward re nil t))
-           (setq org-archive-location (match-string 1))))
+       (save-restriction
+         (widen)
+         (setq prop (org-entry-get nil "ARCHIVE" 'inherit))
+         (if (and prop (string-match "\\S-" prop))
+             (setq org-archive-location prop)
+           (if (or (re-search-backward re nil t)
+                   (re-search-forward re nil t))
+               (setq org-archive-location (match-string 1))))))
 
       (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location)
          (progn
-           (setq file (format (match-string 1 org-archive-location)
+           (setq afile (format (match-string 1 org-archive-location)
                               (file-name-nondirectory buffer-file-name))
                  heading (match-string 2 org-archive-location)))
        (error "Invalid `org-archive-location'"))
-      (if (> (length file) 0)
-         (setq newfile-p (not (file-exists-p file))
-               buffer (find-file-noselect file))
+      (if (> (length afile) 0)
+         (setq newfile-p (not (file-exists-p afile))
+               buffer (find-file-noselect afile))
        (setq buffer (current-buffer)))
       (unless buffer
-       (error "Cannot access file \"%s\"" file))
+       (error "Cannot access file \"%s\"" afile))
       (if (and (> (length heading) 0)
               (string-match "^\\*+" heading))
          (setq level (match-end 0))
        (setq heading nil level 0))
       (save-excursion
+       (org-back-to-heading t)
+       ;; Get context information that will be lost by moving the tree
+       (org-refresh-category-properties)
+       (setq category (org-get-category)
+             todo (and (looking-at org-todo-line-regexp)
+                       (match-string 2))
+             priority (org-get-priority (if (match-end 3) (match-string 3) ""))
+             ltags (org-get-tags)
+             itags (org-delete-all ltags (org-get-tags-at)))
+       (setq ltags (mapconcat 'identity ltags " ")
+             itags (mapconcat 'identity itags " "))
        ;; We first only copy, in case something goes wrong
        ;; we need to protect this-command, to avoid kill-region sets it,
        ;; which would lead to duplication of subtrees
@@ -5516,7 +6945,8 @@ this heading. "
        ;; Enforce org-mode for the archive buffer
        (if (not (org-mode-p))
            ;; Force the mode for future visits.
-           (let ((org-insert-mode-line-in-empty-file t))
+           (let ((org-insert-mode-line-in-empty-file t)
+                 (org-inhibit-startup t))
              (call-interactively 'org-mode)))
        (when newfile-p
          (goto-char (point-max))
@@ -5524,21 +6954,21 @@ this heading. "
                          (buffer-file-name this-buffer))))
        ;; Force the TODO keywords of the original buffer
        (let ((org-todo-line-regexp tr-org-todo-line-regexp)
-             (org-todo-keywords tr-org-todo-keywords)
-             (org-todo-interpretation tr-org-todo-interpretation)
-             (org-done-string tr-org-done-string)
+             (org-todo-keywords-1 tr-org-todo-keywords-1)
+             (org-todo-kwd-alist tr-org-todo-kwd-alist)
+             (org-done-keywords tr-org-done-keywords)
              (org-todo-regexp tr-org-todo-regexp)
              (org-todo-line-regexp tr-org-todo-line-regexp)
              (org-odd-levels-only
-              (if (local-variable-p 'org-odd-levels-only)
+              (if (local-variable-p 'org-odd-levels-only (current-buffer))
                   org-odd-levels-only
                 tr-org-odd-levels-only)))
          (goto-char (point-min))
          (if heading
              (progn
                (if (re-search-forward
-                    (concat "\\(^\\|\r\\)"
-                            (regexp-quote heading) "[ \t]*\\(:[a-zA-Z0-9_@:]+:\\)?[ \t]*\\($\\|\r\\)")
+                    (concat "^" (regexp-quote heading)
+                            (org-re "[ \t]*\\(:[[:alnum:]_@:]+:\\)?[ \t]*\\($\\|\r\\)"))
                     nil t)
                    (goto-char (match-end 0))
                  ;; Heading not found, just insert it at the end
@@ -5556,16 +6986,26 @@ this heading. "
            (goto-char (point-max)) (insert "\n"))
          ;; Paste
          (org-paste-subtree (org-get-legal-level level 1))
-         ;; Mark the entry as done, i.e. set to last work in org-todo-keywords
-         (if org-archive-mark-done
-             (let (org-log-done)
-               (org-todo (length org-todo-keywords))))
-         ;; Move cursor to right after the TODO keyword
-         (when org-archive-stamp-time
-           (beginning-of-line 1)
-           (looking-at org-todo-line-regexp)
-           (goto-char (or (match-end 2) (match-beginning 3)))
-           (org-insert-time-stamp (org-current-time) t t "(" ")"))
+
+         ;; Mark the entry as done
+         (when (and org-archive-mark-done
+                    (looking-at org-todo-line-regexp)
+                    (or (not (match-end 2))
+                        (not (member (match-string 2) org-done-keywords))))
+           (let (org-log-done)
+             (org-todo
+              (car (or (member org-archive-mark-done org-done-keywords)
+                       org-done-keywords)))))
+
+         ;; Add the context info
+         (when org-archive-save-context-info
+           (let ((l org-archive-save-context-info) e n v)
+             (while (setq e (pop l))
+               (when (and (setq v (symbol-value e))
+                          (stringp v) (string-match "\\S-" v))
+                 (setq n (concat "ARCHIVE_" (upcase (symbol-name e))))
+                 (org-entry-put (point) n v)))))
+
          ;; Save the buffer, if it is not the same buffer.
          (if (not (eq this-buffer buffer)) (save-buffer))))
       ;; Here we are back in the original buffer.  Everything seems to have
@@ -5575,7 +7015,36 @@ this heading. "
       (message "Subtree archived %s"
               (if (eq this-buffer buffer)
                   (concat "under heading: " heading)
-                (concat "in file: " (abbreviate-file-name file)))))))
+                (concat "in file: " (abbreviate-file-name afile)))))))
+
+(defun org-refresh-category-properties ()
+  "Refresh category text properties in teh buffer."
+  (let ((def-cat (cond
+                 ((null org-category)
+                  (if buffer-file-name
+                      (file-name-sans-extension
+                       (file-name-nondirectory buffer-file-name))
+                    "???"))
+                 ((symbolp org-category) (symbol-name org-category))
+                 (t org-category)))
+       beg end cat pos optionp)
+    (org-unmodified
+     (save-excursion
+       (save-restriction
+        (widen)
+        (goto-char (point-min))
+        (put-text-property (point) (point-max) 'org-category def-cat)
+        (while (re-search-forward
+                "^\\(#\\+CATEGORY:\\|[ \t]*:CATEGORY:\\)\\(.*\\)" nil t)
+          (setq pos (match-end 0)
+                optionp (equal (char-after (match-beginning 0)) ?#)
+                cat (org-trim (match-string 2)))
+          (if optionp
+              (setq beg (point-at-bol) end (point-max))
+            (org-back-to-heading t)
+            (setq beg (point) end (org-end-of-subtree t t)))
+          (put-text-property beg end 'org-category cat)
+          (goto-char pos)))))))
 
 (defun org-archive-all-done (&optional tag)
   "Archive sublevels of the current tree without open TODO items.
@@ -5620,6 +7089,29 @@ When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag."
            (goto-char end)))))
     (message "%d trees archived" cntarch)))
 
+(defun org-cycle-hide-drawers (state)
+  "Re-hide all drawers after a visibility state change."
+  (when (and (org-mode-p)
+            (not (memq state '(overview folded))))
+    (save-excursion
+      (let* ((globalp (memq state '(contents all)))
+             (beg (if globalp (point-min) (point)))
+             (end (if globalp (point-max) (org-end-of-subtree t))))
+       (goto-char beg)
+       (while (re-search-forward org-drawer-regexp end t)
+         (org-flag-drawer t))))))
+
+(defun org-flag-drawer (flag)
+  (save-excursion
+    (beginning-of-line 1)
+    (when (looking-at "^[ \t]*:[a-zA-Z][a-zA-Z0-9]*:")
+      (let ((b (match-end 0)))
+       (if (re-search-forward
+            "^[ \t]*:END:"
+            (save-excursion (outline-next-heading) (point)) t)
+           (outline-flag-region b (point-at-eol) flag)
+         (error ":END: line missing"))))))
+
 (defun org-cycle-hide-archived-subtrees (state)
   "Re-hide all archived subtrees after a visibility state change."
   (when (and (not org-cycle-open-archived-trees)
@@ -5653,11 +7145,11 @@ When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag."
 (defun org-toggle-tag (tag &optional onoff)
   "Toggle the tag TAG for the current line.
 If ONOFF is `on' or `off', don't toggle but set to this state."
-  (unless (org-on-heading-p) (error "Not on headling"))
+  (unless (org-on-heading-p t) (error "Not on headling"))
   (let (res current)
     (save-excursion
       (beginning-of-line)
-      (if (re-search-forward "[ \t]:\\([a-zA-Z0-9_@:]+\\):[ \t]*$"
+      (if (re-search-forward (org-re "[ \t]:\\([[:alnum:]_@:]+\\):[ \t]*$")
                             (point-at-eol) t)
          (progn
            (setq current (match-string 1))
@@ -5677,8 +7169,9 @@ If ONOFF is `on' or `off', don't toggle but set to this state."
       (end-of-line 1)
       (when current
        (insert " :" (mapconcat 'identity (nreverse current) ":") ":"))
-      (org-set-tags nil t))
-    res))
+      (org-set-tags nil t)
+    res)
+    (run-hooks 'org-after-tags-change-hook)))
 
 (defun org-toggle-archive-tag (&optional arg)
   "Toggle the archive tag for the current headline.
@@ -5749,6 +7242,8 @@ outside the table.")
   "Table row types, non-nil only for the duration of a comand.")
 (defvar org-table-current-begin-line nil
   "Table begin line, non-nil only for the duration of a comand.")
+(defvar org-table-current-begin-pos nil
+  "Table begin position, non-nil only for the duration of a comand.")
 (defvar org-table-dlines nil
   "Vector of data line line numbers in the current table.")
 (defvar org-table-hlines nil
@@ -5760,11 +7255,17 @@ outside the table.")
   "Regular expression for matching ranges in formulas.")
 
 (defconst org-table-range-regexp2
-   "@\\([-+]?I*[-+]?[0-9]*\\)?\\(\\$[-+]?[a-zA-Z0-9]+\\)?\\(\\.\\.@?\\([-+]?I*[-+]?[0-9]*\\)?\\(\\$[-+]?[a-zA-Z0-9]+\\)?\\)?\\|\\$[a-zA-Z0-9]+\\.\\.\\$[a-zA-Z0-9]+"
-  "Regular expression to recognize ranges in formulas for highlighting.")
+  (concat
+   "\\(" "@[-0-9I$&]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\|" "\\$[a-zA-Z0-9]+" "\\)"
+   "\\.\\."
+   "\\(" "@?[-0-9I$&]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\|" "\\$[a-zA-Z0-9]+" "\\)")
+  "Match a range for reference display.")
 
-(defvar org-inhibit-highlight-removal nil)
+(defconst org-table-translate-regexp
+  (concat "\\(" "@[-0-9I$]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\)")
+  "Match a reference that needs translation, for reference display.")
 
+(defvar org-inhibit-highlight-removal nil) ; dynamically scoped param
 
 (defun org-table-create-with-table.el ()
   "Use the table.el package to insert a new table.
@@ -5783,8 +7284,11 @@ and table.el tables."
 
 (defun org-table-create-or-convert-from-region (arg)
   "Convert region to table, or create an empty table.
-If there is an active region, convert it to a table.  If there is no such
-region, create an empty table."
+If there is an active region, convert it to a table, using the function
+`org-table-convert-region'.  See the documentation of that function
+to learn how the prefix argument is interpreted to determine the field
+separator.
+If there is no such region, create an empty table with `org-table-create'."
   (interactive "P")
   (if (org-region-active-p)
       (org-table-convert-region (region-beginning) (region-end) arg)
@@ -5822,34 +7326,46 @@ SIZE is a string Columns x Rows like for example \"3x2\"."
          (goto-char pos)))
     (org-table-align)))
 
-(defun org-table-convert-region (beg0 end0 &optional nspace)
+(defun org-table-convert-region (beg0 end0 &optional separator)
   "Convert region to a table.
 The region goes from BEG0 to END0, but these borders will be moved
 slightly, to make sure a beginning of line in the first line is included.
-When NSPACE is non-nil, it indicates the minimum number of spaces that
-separate columns (default: just one space)."
+
+SEPARATOR specifies the field separator in the lines.  It can have the
+following values:
+
+'(4)     Use the comma as a field separator
+'(16)    Use a TAB as field separator
+integer  When a number, use that many spaces as field separator
+nil      When nil, the command tries to be smart and figure out the
+         separator in the following way:
+         - when each line contains a TAB, assume TAB-separated material
+         - when each line contains a comme, assume CSV material
+         - else, assume one or more SPACE charcters as separator."
   (interactive "rP")
   (let* ((beg (min beg0 end0))
         (end (max beg0 end0))
-        (tabsep t)
-        re)
+        sep-re re)
     (goto-char beg)
     (beginning-of-line 1)
     (setq beg (move-marker (make-marker) (point)))
     (goto-char end)
     (if (bolp) (backward-char 1) (end-of-line 1))
     (setq end (move-marker (make-marker) (point)))
-    ;; Lets see if this is tab-separated material.  If every nonempty line
-    ;; contains a tab, we will assume that it is tab-separated material
-    (if nspace
-       (setq tabsep nil)
+    ;; Get the right field separator
+    (unless separator
       (goto-char beg)
-      (and (re-search-forward "^[^\n\t]+$" end t) (setq tabsep nil)))
-    (if nspace (setq tabsep nil))
-    (if tabsep
-       (setq re "^\\|\t")
-      (setq re (format "^ *\\| *\t *\\| \\{%d,\\}"
-                      (max 1 (prefix-numeric-value nspace)))))
+      (setq separator
+           (cond
+            ((not (re-search-forward "^[^\n\t]+$" end t)) '(16))
+            ((not (re-search-forward "^[^\n,]+$" end t)) '(4))
+            (t 1))))
+    (setq re (cond
+             ((equal separator '(4)) "^\\|\"?[ \t]*,[ \t]*\"?")
+             ((equal separator '(16)) "^\\|\t")
+             ((integerp separator)
+              (format "^ *\\| *\t *\\| \\{%d,\\}" separator))
+             (t (error "This should not happen"))))
     (goto-char beg)
     (while (re-search-forward re end t)
       (replace-match "| " t t))
@@ -6167,7 +7683,7 @@ Optional argument NEW may specify text to replace the current field content."
                    (setq n (concat new "|") org-table-may-need-update t)))
              (or (equal n o)
                  (let (org-table-may-need-update)
-                   (replace-match n))))
+                   (replace-match n t t))))
          (setq org-table-may-need-update t))
        (goto-char pos))))))
 
@@ -6249,9 +7765,13 @@ If the current field is not empty, it is copied down to the next row, and
 the cursor is moved with it.  Therefore, repeating this command causes the
 column to be filled row-by-row.
 If the variable `org-table-copy-increment' is non-nil and the field is an
-integer, it will be incremented while copying."
+integer or a timestamp, it will be incremented while copying.  In the case of
+a timestamp, if the cursor is on the year, change the year.  If it is on the
+month or the day, change that.  Point will stay on the current date field
+in order to easily repeat the interval."
   (interactive "p")
   (let* ((colpos (org-table-current-column))
+        (col (current-column))
         (field (org-table-get-field))
         (non-empty (string-match "[^ \t]" field))
         (beg (org-table-begin))
@@ -6279,8 +7799,12 @@ integer, it will be incremented while copying."
                   (string-match "^[0-9]+$" txt))
              (setq txt (format "%d" (+ (string-to-number txt) 1))))
          (insert txt)
-         (org-table-maybe-recalculate-line)
-         (org-table-align))
+         (move-to-column col)
+         (if (and org-table-copy-increment (org-at-timestamp-p t))
+             (org-timestamp-up 1)
+           (org-table-maybe-recalculate-line))
+         (org-table-align)
+         (move-to-column col))
       (error "No non-empty field found"))))
 
 (defun org-table-check-inside-data-field ()
@@ -6330,7 +7854,6 @@ is always the old value."
        val)
     (forward-char 1) ""))
 
-
 (defun org-table-field-info (arg)
   "Show info about the current field, and highlight any reference at point."
   (interactive "P")
@@ -6344,21 +7867,26 @@ is always the old value."
           (eql (org-table-get-stored-formulas))
           (dline (org-table-current-dline))
           (ref (format "@%d$%d" dline col))
+          (ref1 (org-table-convert-refs-to-an ref))
           (fequation (or (assoc name eql) (assoc ref eql)))
-          (cequation (assoc (int-to-string col) eql)))
+          (cequation (assoc (int-to-string col) eql))
+          (eqn (or fequation cequation)))
       (goto-char pos)
       (condition-case nil
-         (org-show-reference 'local)
+         (org-table-show-reference 'local)
        (error nil))
-      (message "line @%d, col $%s%s, ref @%d$%d%s%s"
+      (message "line @%d, col $%s%s, ref @%d$%d or %s%s%s"
               dline col
               (if cname (concat " or $" cname) "")
-              dline col
+              dline col ref1
               (if name (concat " or $" name) "")
               ;; FIXME: formula info not correct if special table line
-              (if (or fequation cequation)
-                  (concat ", " (if fequation "field" "column")
-                          " formula applies" "")
+              (if eqn
+                  (concat ", formula: "
+                          (org-table-formula-to-user
+                           (concat
+                            (if (string-match "^[$@]"(car eqn)) "" "$")
+                            (car eqn) "=" (cdr eqn))))
                 "")))))
 
 (defun org-table-current-column ()
@@ -6635,9 +8163,9 @@ With prefix ARG, insert below the current line."
         (org-table-align))
     (org-table-fix-formulas "@" nil (1- (org-table-current-dline)) 1)))
 
-(defun org-table-insert-hline (&optional arg)
+(defun org-table-insert-hline (&optional above)
   "Insert a horizontal-line below the current line into the table.
-With prefix ARG, insert above the current line."
+With prefix ABOVE, insert above the current line."
   (interactive "P")
   (if (not (org-at-table-p))
       (error "Not at a table"))
@@ -6649,12 +8177,25 @@ With prefix ARG, insert above the current line."
                  (concat "+" (make-string (- (match-end 1) (match-beginning 1))
                                           ?-) "|") t t line)))
     (and (string-match "\\+" line) (setq line (replace-match "|" t t line)))
-    (beginning-of-line (if arg 1 2))
+    (beginning-of-line (if above 1 2))
     (insert line "\n")
-    (beginning-of-line (if arg 1 -1))
+    (beginning-of-line (if above 1 -1))
     (move-to-column col)
     (and org-table-overlay-coordinates (org-table-align))))
 
+(defun org-table-hline-and-move (&optional same-column)
+  "Insert a hline and move to the row below that line."
+  (interactive "P")
+  (let ((col (org-table-current-column)))
+    (org-table-maybe-eval-formula)
+    (org-table-maybe-recalculate-line)
+    (org-table-insert-hline)
+    (end-of-line 2)
+    (if (looking-at "\n[ \t]*|-")
+       (progn (insert "\n|") (org-table-align))
+      (org-table-next-field))
+    (if same-column (org-table-goto-column col))))
+
 (defun org-table-clean-line (s)
   "Convert a table line S into a string with only \"|\" and space.
 In particular, this does handle wide and invisible characters."
@@ -6733,7 +8274,7 @@ should be done in reverse order."
        (setq beg (point-at-bol 1)))
       (goto-char pos)
       (if (re-search-forward org-table-hline-regexp tend t)
-         (setq beg (point-at-bol 0))
+         (setq end (point-at-bol 1))
        (goto-char tend)
        (setq end (point-at-bol))))
     (setq beg (move-marker (make-marker) beg)
@@ -6956,18 +8497,17 @@ it can be edited in place."
          (field (org-table-get-field))
          (cw (current-window-configuration))
          p)
-      (switch-to-buffer-other-window "*Org tmp*")
+      (org-switch-to-buffer-other-window "*Org tmp*")
       (erase-buffer)
       (insert "#\n# Edit field and finish with C-c C-c\n#\n")
-      (org-mode)
+      (let ((org-inhibit-startup t)) (org-mode))
       (goto-char (setq p (point-max)))
       (insert (org-trim field))
       (remove-text-properties p (point-max)
                              '(invisible t org-cwidth t display t
                                          intangible t))
       (goto-char p)
-      (org-set-local 'org-finish-function
-                    'org-table-finish-edit-field)
+      (org-set-local 'org-finish-function 'org-table-finish-edit-field)
       (org-set-local 'org-window-configuration cw)
       (org-set-local 'org-field-marker pos)
       (message "Edit and finish with C-c C-c"))))
@@ -6997,8 +8537,8 @@ the table and kill the editing buffer."
 
 (defun org-trim (s)
   "Remove whitespace at beginning and end of string."
-  (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s)))
-  (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s)))
+  (if (string-match "\\`[ \t\n\r]+" s) (setq s (replace-match "" t t s)))
+  (if (string-match "[ \t\n\r]+\\'" s) (setq s (replace-match "" t t s)))
   s)
 
 (defun org-wrap (string &optional width lines)
@@ -7159,21 +8699,25 @@ If NLAST is a number, only the NLAST fields will actually be summed."
      ((equal n 0)                             nil)
      (t n))))
 
-(defun org-table-current-field-formula ()
+(defun org-table-current-field-formula (&optional key noerror)
   "Return the formula active for the current field.
-Assumes that specials are in place."
+Assumes that specials are in place.
+If KEY is given, return the key to this formula.
+Otherwise return the formula preceeded with \"=\" or \":=\"."
   (let* ((name (car (rassoc (list (org-current-line)
                                  (org-table-current-column))
                            org-table-named-field-locations)))
         (col (org-table-current-column))
         (scol (int-to-string col))
         (ref (format "@%d$%d" (org-table-current-dline) col))
-        (stored-list (org-table-get-stored-formulas))
+        (stored-list (org-table-get-stored-formulas noerror))
         (ass (or (assoc name stored-list)
                  (assoc ref stored-list)
                  (assoc scol stored-list))))
-    (if ass (concat (if (string-match "^[0-9]+$" (car ass)) "=" ":=")
-                   (cdr ass)))))
+    (if key
+       (car ass)
+      (if ass (concat (if (string-match "^[0-9]+$" (car ass)) "=" ":=")
+                     (cdr ass))))))
 
 (defun org-table-get-formula (&optional equation named)
   "Read a formula from the minibuffer, offer stored formula as default.
@@ -7199,11 +8743,16 @@ When NAMED is non-nil, look for a named equation."
               stored)
              ((stringp equation)
               equation)
-             (t (read-string
-                 (format "%s formula $%s=" (if named "Field" "Column") scol)
-                 (or stored "") 'org-table-formula-history
-                 ;stored
-                 ))))
+             (t (org-table-formula-from-user
+                 (read-string
+                  (org-table-formula-to-user
+                   (format "%s formula %s%s="
+                           (if named "Field" "Column")
+                           (if (member (string-to-char scol) '(?$ ?@)) "" "$")
+                           scol))
+                  (if stored (org-table-formula-to-user stored) "")
+                  'org-table-formula-history
+                  )))))
         mustsave)
     (when (not (string-match "\\S-" eq))
       ;; remove formula
@@ -7225,7 +8774,7 @@ When NAMED is non-nil, look for a named equation."
 
 (defun org-table-store-formulas (alist)
   "Store the list of formulas below the current table."
-  (setq alist (sort alist (lambda (a b) (string< (car a) (car b)))))
+  (setq alist (sort alist 'org-table-formula-less-p))
   (save-excursion
     (goto-char (org-table-end))
     (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:\\(.*\n?\\)")
@@ -7242,7 +8791,20 @@ When NAMED is non-nil, look for a named equation."
                       alist "::")
            "\n")))
 
-(defun org-table-get-stored-formulas ()
+(defsubst org-table-formula-make-cmp-string (a)
+  (when (string-match "^\\(@\\([0-9]+\\)\\)?\\(\\$?\\([0-9]+\\)\\)?\\(\\$?[a-zA-Z0-9]+\\)?" a)
+    (concat
+     (if (match-end 2) (format "@%05d" (string-to-number (match-string 2 a))) "")
+     (if (match-end 4) (format "$%05d" (string-to-number (match-string 4 a))) "")
+     (if (match-end 5) (concat "@@" (match-string 5 a))))))
+
+(defun org-table-formula-less-p (a b)
+  "Compare two formulas for sorting."
+  (let ((as (org-table-formula-make-cmp-string (car a)))
+       (bs (org-table-formula-make-cmp-string (car b))))
+    (and as bs (string< as bs))))
+
+(defun org-table-get-stored-formulas (&optional noerror)
   "Return an alist with the stored formulas directly after current table."
   (interactive)
   (let (scol eq eq-alist strings string seen)
@@ -7258,7 +8820,12 @@ When NAMED is non-nil, look for a named equation."
                  eq (match-string 3 string)
                  eq-alist (cons (cons scol eq) eq-alist))
            (if (member scol seen)
-               (error "Double definition `$%s=' in TBLFM line, please fix by hand" scol)
+                (if noerror
+                    (progn
+                      (message "Double definition `$%s=' in TBLFM line, please fix by hand" scol)
+                      (ding)
+                      (sit-for 2))
+                  (error "Double definition `$%s=' in TBLFM line, please fix by hand" scol))
              (push scol seen))))))
     (nreverse eq-alist)))
 
@@ -7297,6 +8864,7 @@ For all numbers larger than LIMIT, shift them by DELTA."
            org-table-local-parameters nil
            org-table-named-field-locations nil
            org-table-current-begin-line nil
+           org-table-current-begin-pos nil
            org-table-current-line-types nil)
       (goto-char beg)
       (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t)
@@ -7313,7 +8881,7 @@ For all numbers larger than LIMIT, shift them by DELTA."
       (while (re-search-forward "^[ \t]*| *\\$ *\\(|.*\\)" end t)
        (setq fields (org-split-string (match-string 1) " *| *"))
        (while (setq field (pop fields))
-         (if (string-match "^\\([a-zA-Z][a-zA-Z0-9]*\\|%\\) *= *\\(.*\\)" field)
+         (if (string-match "^\\([a-zA-Z][_a-zA-Z0-9]*\\|%\\) *= *\\(.*\\)" field)
              (push (cons (match-string 1 field) (match-string 2 field))
                    org-table-local-parameters))))
       (goto-char beg)
@@ -7334,6 +8902,7 @@ For all numbers larger than LIMIT, shift them by DELTA."
       ;; Analyse the line types
       (goto-char beg)
       (setq org-table-current-begin-line (org-current-line)
+           org-table-current-begin-pos (point)
            l org-table-current-begin-line)
       (while (looking-at "[ \t]*|\\(-\\)?")
        (push (if (match-end 1) 'hline 'dline) types)
@@ -7344,13 +8913,6 @@ For all numbers larger than LIMIT, shift them by DELTA."
            org-table-dlines (apply 'vector (cons nil (nreverse dlines)))
            org-table-hlines (apply 'vector (cons nil (nreverse hlines)))))))
 
-(defun org-this-word ()
-  ;; Get the current word
-  (save-excursion
-    (let ((beg (progn (skip-chars-backward "^ \t\n") (point)))
-         (end (progn (skip-chars-forward "^ \t\n") (point))))
-      (buffer-substring-no-properties beg end))))
-
 (defun org-table-maybe-eval-formula ()
   "Check if the current field starts with \"=\" or \":=\".
 If yes, store the formula and apply it."
@@ -7364,7 +8926,8 @@ If yes, store the formula and apply it."
              eq (match-string 1 field))
        (if (or (fboundp 'calc-eval)
                (equal (substring eq 0 (min 2 (length eq))) "'("))
-           (org-table-eval-formula (if named '(4) nil) eq)
+           (org-table-eval-formula (if named '(4) nil)
+                                   (org-table-formula-from-user eq))
          (error "Calc does not seem to be installed, and is needed to evaluate the formula"))))))
 
 (defvar org-recalc-commands nil
@@ -7485,7 +9048,7 @@ formula is installed as valid in only this specific field.
 
 When called with two `C-u' prefixes, insert the active equation
 for the field back into the current field, so that it can be
-edited there.  This is useful in order to use \\[org-show-reference]
+edited there.  This is useful in order to use \\[org-table-show-reference]
 to check the referenced fields.
 
 When called, the command first prompts for a formula, which is read in
@@ -7527,7 +9090,7 @@ not overwrite the stored one."
           (modes (copy-sequence org-calc-default-modes))
           (numbers nil) ; was a variable, now fixed default
           (keep-empty nil)
-          n form form0 bw fmt x ev orig c lispp)
+          n form form0 bw fmt x ev orig c lispp literal)
       ;; Parse the format string.  Since we have a lot of modes, this is
       ;; a lot of work.  However, I think calc still uses most of the time.
       (if (string-match ";" formula)
@@ -7549,6 +9112,9 @@ not overwrite the stored one."
            (if (string-match "[NT]" fmt)
                (setq numbers (equal (match-string 0 fmt) "N")
                      fmt (replace-match "" t t fmt)))
+           (if (string-match "L" fmt)
+               (setq literal t
+                     fmt (replace-match "" t t fmt)))
            (if (string-match "E" fmt)
                (setq keep-empty t
                      fmt (replace-match "" t t fmt)))
@@ -7565,13 +9131,14 @@ not overwrite the stored one."
                      (org-no-properties
                       (buffer-substring (point-at-bol) (point-at-eol)))
                      " *| *"))
-       (if numbers
+       (if (eq numbers t)
            (setq fields (mapcar
                          (lambda (x) (number-to-string (string-to-number x)))
                          fields)))
        (setq ndown (1- ndown))
        (setq form (copy-sequence formula)
              lispp (and (> (length form) 2)(equal (substring form 0 2) "'(")))
+       (if (and lispp literal) (setq lispp 'literal))
        ;; Check for old vertical references
        (setq form (org-rewrite-old-row-references form))
        ;; Insert complex ranges
@@ -7596,17 +9163,16 @@ not overwrite the stored one."
                 t t form)))
        (setq form0 form)
        ;; Insert the references to fields in same row
-       (while (string-match "\\$\\([0-9]+\\)?" form)
-         (setq n (if (match-beginning 1)
-                     (string-to-number (match-string 1 form))
-                   n0)
-               x (nth (1- n) fields))
+       (while (string-match "\\$\\([0-9]+\\)" form)
+         (setq n (string-to-number (match-string 1 form))
+               x (nth (1- (if (= n 0) n0 n)) fields))
          (unless x (error "Invalid field specifier \"%s\""
                           (match-string 0 form)))
          (setq form (replace-match
                      (save-match-data
                        (org-table-make-reference x nil numbers lispp))
                      t t form)))
+
        (if lispp
            (setq ev (condition-case nil
                         (eval (eval (read form)))
@@ -7649,6 +9215,12 @@ $1->    %s\n" orig formula form0 form))
       (or suppress-align (and org-table-may-need-update
                              (org-table-align))))))
 
+(defun org-table-put-field-property (prop value)
+  (save-excursion
+    (put-text-property (progn (skip-chars-backward "^|") (point))
+                      (progn (skip-chars-forward "^|") (point))
+                      prop value)))
+
 (defun org-table-get-range (desc &optional tbeg col highlight)
   "Get a calc vector from a column, accorting to descriptor DESC.
 Optional arguments TBEG and COL can give the beginning of the table and
@@ -7688,7 +9260,7 @@ HIGHLIGHT means, just highlight the range."
            (goto-line r1)
            (while (not (looking-at org-table-dataline-regexp))
              (beginning-of-line 2))
-           (prog1 (org-table-get-field c1)
+           (prog1 (org-trim (org-table-get-field c1))
              (if highlight (org-table-highlight-rectangle (point) (point)))))
        ;; A range, return a vector
        ;; First sort the numbers to get a regular ractangle
@@ -7708,7 +9280,8 @@ HIGHLIGHT means, just highlight the range."
            (org-table-highlight-rectangle
             beg (progn (skip-chars-forward "^|\n") (point))))
        ;; return string representation of calc vector
-       (apply 'append (org-table-copy-region beg end))))))
+       (mapcar 'org-trim
+               (apply 'append (org-table-copy-region beg end)))))))
 
 (defun org-table-get-descriptor-line (desc &optional cline bline table)
   "Analyze descriptor DESC and retrieve the corresponding line number.
@@ -7738,7 +9311,7 @@ and TABLE is a vector with line types."
            (setq i 0 hdir "+")
            (if (eq (aref table 0) 'hline) (setq hn (1- hn)))))
       (if (and (not hn) on (not odir))
-         (error "should never happen");;(aref org-table-dlines on) FIXME
+         (error "should never happen");;(aref org-table-dlines on)
        (if (and hn (> hn 0))
            (setq i (org-find-row-type table i 'hline (equal hdir "-") nil hn)))
        (if on
@@ -7771,7 +9344,9 @@ NUMBERS indicates that everything should be converted to numbers.
 LISPP means to return something appropriate for a Lisp list."
   (if (stringp elements) ; just a single val
       (if lispp
-         (prin1-to-string (if numbers (string-to-number elements) elements))
+         (if (eq lispp 'literal)
+             elements
+           (prin1-to-string (if numbers (string-to-number elements) elements)))
        (if (equal elements "") (setq elements "0"))
        (if numbers (number-to-string (string-to-number elements)) elements))
     (unless keep-empty
@@ -7781,9 +9356,12 @@ LISPP means to return something appropriate for a Lisp list."
                          elements))))
     (setq elements (or elements '("0")))
     (if lispp
-       (mapconcat 'prin1-to-string
-                  (if numbers (mapcar 'string-to-number elements) elements)
-                  " ")
+       (mapconcat
+        (lambda (x)
+          (if (eq lispp 'literal)
+              x
+            (prin1-to-string (if numbers (string-to-number x) x))))
+        elements " ")
       (concat "[" (mapconcat
                   (lambda (x)
                     (if numbers (number-to-string (string-to-number x)) x))
@@ -7806,7 +9384,7 @@ With prefix arg ALL, do this for all lines in the table."
           (line-re org-table-dataline-regexp)
           (thisline (org-current-line))
           (thiscol (org-table-current-column))
-          beg end entry eqlnum eqlname eql (cnt 0) eq a name)
+          beg end entry eqlnum eqlname eqlname1 eql (cnt 0) eq a name)
       ;; Insert constants in all formulas
       (setq eqlist
            (mapcar (lambda (x)
@@ -7836,8 +9414,30 @@ With prefix arg ALL, do this for all lines in the table."
              end (move-marker (make-marker) (1+ (point-at-eol)))))
       (goto-char beg)
       (and all (message "Re-applying formulas to full table..."))
+
+      ;; First find the named fields, and mark them untouchanble
+      (remove-text-properties beg end '(org-untouchable t))
+      (while (setq eq (pop eqlname))
+       (setq name (car eq)
+             a (assoc name org-table-named-field-locations))
+       (and (not a)
+            (string-match "@\\([0-9]+\\)\\$\\([0-9]+\\)" name)
+            (setq a (list name
+                          (aref org-table-dlines
+                                (string-to-number (match-string 1 name)))
+                          (string-to-number (match-string 2 name)))))
+       (when (and a (or all (equal (nth 1 a) thisline)))
+         (message "Re-applying formula to field: %s" name)
+         (goto-line (nth 1 a))
+         (org-table-goto-column (nth 2 a))
+         (push (append a (list (cdr eq))) eqlname1)
+         (org-table-put-field-property :org-untouchable t)))
+
+      ;; Now evauluate the column formulas, but skip fields covered by
+      ;; field formulas
+      (goto-char beg)
       (while (re-search-forward line-re end t)
-       (unless (string-match "^ *[_^!$] *$" (org-table-get-field 1))
+       (unless (string-match "^ *[_^!$/] *$" (org-table-get-field 1))
          ;; Unprotected line, recalculate
          (and all (message "Re-applying formulas to full table...(line %d)"
                            (setq cnt (1+ cnt))))
@@ -7846,30 +9446,24 @@ With prefix arg ALL, do this for all lines in the table."
          (while (setq entry (pop eql))
            (goto-line org-last-recalc-line)
            (org-table-goto-column (string-to-number (car entry)) nil 'force)
-           (org-table-eval-formula nil (cdr entry)
-                                   'noalign 'nocst 'nostore 'noanalysis))))
+           (unless (get-text-property (point) :org-untouchable)
+             (org-table-eval-formula nil (cdr entry)
+                                     'noalign 'nocst 'nostore 'noanalysis)))))
+
+      ;; Now evaluate the field formulas
+      (while (setq eq (pop eqlname1))
+       (message "Re-applying formula to field: %s" (car eq))
+       (goto-line (nth 1 eq))
+       (org-table-goto-column (nth 2 eq))
+       (org-table-eval-formula nil (nth 3 eq) 'noalign 'nocst
+                               'nostore 'noanalysis))
+
       (goto-line thisline)
       (org-table-goto-column thiscol)
+      (remove-text-properties (point-min) (point-max) '(org-untouchable t))
       (or noalign (and org-table-may-need-update (org-table-align))
          (and all (message "Re-applying formulas to %d lines...done" cnt)))
-      ;; Now do the named fields
-      (while (setq eq (pop eqlname))
-       (setq name (car eq)
-             a (assoc name org-table-named-field-locations))
-       (and (not a)
-            (string-match "@\\([0-9]+\\)\\$\\([0-9]+\\)" name)
-            (setq a
-                  (list
-                   name
-                   (aref org-table-dlines
-                         (string-to-number (match-string 1 name)))
-                   (string-to-number (match-string 2 name)))))
-       (when (and a (or all (equal (nth 1 a) thisline)))
-         (message "Re-applying formula to field: %s" name)
-         (goto-line (nth 1 a))
-         (org-table-goto-column (nth 2 a))
-         (org-table-eval-formula nil (cdr eq) 'noalign 'nocst
-                                 'nostore 'noanalysis)))
+
       ;; back to initial position
       (message "Re-applying formulas...done")
       (goto-line thisline)
@@ -7907,7 +9501,7 @@ With prefix arg ALL, do this for all lines in the table."
       (setq f (replace-match (concat "$" (cdr a)) t t f)))
     ;; Parameters and constants
     (setq start 0)
-    (while (setq start (string-match "\\$\\([a-zA-Z][a-zA-Z0-9]*\\)" f start))
+    (while (setq start (string-match "\\$\\([a-zA-Z][_a-zA-Z0-9]*\\)" f start))
       (setq start (1+ start))
       (if (setq a (save-match-data
                    (org-table-get-constant (match-string 1 f))))
@@ -7920,37 +9514,84 @@ With prefix arg ALL, do this for all lines in the table."
   "Find the value for a parameter or constant in a formula.
 Parameters get priority."
   (or (cdr (assoc const org-table-local-parameters))
+      (cdr (assoc const org-table-formula-constants-local))
       (cdr (assoc const org-table-formula-constants))
       (and (fboundp 'constants-get) (constants-get const))
+      (and (string= (substring const 0 (min 5 (length const))) "PROP_")
+          (org-entry-get nil (substring const 5) 'inherit))
       "#UNDEFINED_NAME"))
 
-(defvar org-edit-formulas-map (make-sparse-keymap))
-(define-key org-edit-formulas-map "\C-c\C-c"      'org-finish-edit-formulas)
-(define-key org-edit-formulas-map "\C-c\C-q"      'org-abort-edit-formulas)
-(define-key org-edit-formulas-map "\C-c?"         'org-show-reference)
-(define-key org-edit-formulas-map [(shift up)]    'org-table-edit-line-up)
-(define-key org-edit-formulas-map [(shift down)]  'org-table-edit-line-down)
-(define-key org-edit-formulas-map [(shift left)] 'org-table-edit-backward-field)
-(define-key org-edit-formulas-map [(shift right)] 'org-table-edit-next-field)
-(define-key org-edit-formulas-map [(meta up)]     'org-table-edit-scroll-down)
-(define-key org-edit-formulas-map [(meta down)]   'org-table-edit-scroll)
-(define-key org-edit-formulas-map [(meta tab)]    'lisp-complete-symbol)
-(define-key org-edit-formulas-map "\M-\C-i"       'lisp-complete-symbol)
-(define-key org-edit-formulas-map [(tab)]         'org-edit-formula-lisp-indent)
-(define-key org-edit-formulas-map "\C-i"          'org-edit-formula-lisp-indent)
+(defvar org-table-fedit-map
+  (let ((map (make-sparse-keymap)))
+    (org-defkey map "\C-x\C-s"      'org-table-fedit-finish)
+    (org-defkey map "\C-c\C-s"      'org-table-fedit-finish)
+    (org-defkey map "\C-c\C-c"      'org-table-fedit-finish)
+    (org-defkey map "\C-c\C-q"      'org-table-fedit-abort)
+    (org-defkey map "\C-c?"         'org-table-show-reference)
+    (org-defkey map [(meta shift up)]    'org-table-fedit-line-up)
+    (org-defkey map [(meta shift down)]  'org-table-fedit-line-down)
+    (org-defkey map [(shift up)]    'org-table-fedit-ref-up)
+    (org-defkey map [(shift down)]  'org-table-fedit-ref-down)
+    (org-defkey map [(shift left)]  'org-table-fedit-ref-left)
+    (org-defkey map [(shift right)] 'org-table-fedit-ref-right)
+    (org-defkey map [(meta up)]     'org-table-fedit-scroll-down)
+    (org-defkey map [(meta down)]   'org-table-fedit-scroll)
+    (org-defkey map [(meta tab)]    'lisp-complete-symbol)
+    (org-defkey map "\M-\C-i"       'lisp-complete-symbol)
+    (org-defkey map [(tab)]         'org-table-fedit-lisp-indent)
+    (org-defkey map "\C-i"          'org-table-fedit-lisp-indent)
+    (org-defkey map "\C-c\C-r" 'org-table-fedit-toggle-ref-type)
+    (org-defkey map "\C-c}"    'org-table-fedit-toggle-coordinates)
+    map))
+
+(easy-menu-define org-table-fedit-menu org-table-fedit-map "Org Edit Formulas Menu"
+  '("Edit-Formulas"
+    ["Finish and Install" org-table-fedit-finish t]
+    ["Finish, Install, and Apply" (org-table-fedit-finish t) :keys "C-u C-c C-c"]
+    ["Abort" org-table-fedit-abort t]
+    "--"
+    ["Pretty-Print Lisp Formula" org-table-fedit-lisp-indent t]
+    ["Complete Lisp Symbol" lisp-complete-symbol t]
+    "--"
+    "Shift Reference at Point"
+    ["Up" org-table-fedit-ref-up t]
+    ["Down" org-table-fedit-ref-down t]
+    ["Left" org-table-fedit-ref-left t]
+    ["Right" org-table-fedit-ref-right t]
+    "-"
+    "Change Test Row for Column Formulas"
+    ["Up" org-table-fedit-line-up t]
+    ["Down" org-table-fedit-line-down t]
+    "--"
+    ["Scroll Table Window" org-table-fedit-scroll t]
+    ["Scroll Table Window down" org-table-fedit-scroll-down t]
+    ["Show Table Grid" org-table-fedit-toggle-coordinates
+     :style toggle :selected (with-current-buffer (marker-buffer org-pos)
+                              org-table-overlay-coordinates)]
+    "--"
+    ["Standard Refs (B3 instead of @3$2)" org-table-fedit-toggle-ref-type
+     :style toggle :selected org-table-buffer-is-an]))
 
 (defvar org-pos)
 
 (defun org-table-edit-formulas ()
   "Edit the formulas of the current table in a separate buffer."
   (interactive)
+  (when (save-excursion (beginning-of-line 1) (looking-at "#\\+TBLFM"))
+    (beginning-of-line 0))
   (unless (org-at-table-p) (error "Not at a table"))
   (org-table-get-specials)
-  (let ((eql (org-table-get-stored-formulas))
+  (let ((key (org-table-current-field-formula 'key 'noerror))
+       (eql (sort (org-table-get-stored-formulas 'noerror)
+                   'org-table-formula-less-p))
        (pos (move-marker (make-marker) (point)))
+       (startline 1)
        (wc (current-window-configuration))
-       entry s)
-    (switch-to-buffer-other-window "*Edit Formulas*")
+       (titles '((column . "# Column Formulas\n")
+                 (field . "# Field Formulas\n")
+                 (named . "# Named Field Formulas\n")))
+       entry s type title)
+    (org-switch-to-buffer-other-window "*Edit Formulas*")
     (erase-buffer)
     ;; Keep global-font-lock-mode from turning on font-lock-mode
     (let ((font-lock-global-modes '(not fundamental-mode)))
@@ -7958,38 +9599,227 @@ Parameters get priority."
     (org-set-local 'font-lock-global-modes (list 'not major-mode))
     (org-set-local 'org-pos pos)
     (org-set-local 'org-window-configuration wc)
-    (use-local-map org-edit-formulas-map)
-    (org-add-hook 'post-command-hook 'org-table-edit-formulas-post-command t t)
-    (setq s "# `C-c C-c' to finish, `C-u C-c C-c' to also apply, `C-c C-q' to abort.
-# `TAB' to pretty-print Lisp expressions, `M-TAB' to complete List symbols
-# `M-up/down' to scroll table, `S-up/down' to change line for column formulas\n\n")
-
-    (put-text-property 0 (length s) 'face 'font-lock-comment-face s)
-    (insert s)
+    (use-local-map org-table-fedit-map)
+    (org-add-hook 'post-command-hook 'org-table-fedit-post-command t t)
+    (easy-menu-add org-table-fedit-menu)
+    (setq startline (org-current-line))
     (while (setq entry (pop eql))
+      (setq type (cond
+                 ((equal (string-to-char (car entry)) ?@) 'field)
+                 ((string-match "^[0-9]" (car entry)) 'column)
+                 (t 'named)))
+      (when (setq title (assq type titles))
+       (or (bobp) (insert "\n"))
+       (insert (org-add-props (cdr title) nil 'face font-lock-comment-face))
+       (setq titles (delq title titles)))
+      (if (equal key (car entry)) (setq startline (org-current-line)))
       (setq s (concat (if (equal (string-to-char (car entry)) ?@) "" "$")
                      (car entry) " = " (cdr entry) "\n"))
       (remove-text-properties 0 (length s) '(face nil) s)
       (insert s))
-    (goto-char (point-min))
-    (message "Edit formulas and finish with `C-c C-c'.")))
+    (if (eq org-table-use-standard-references t)
+       (org-table-fedit-toggle-ref-type))
+    (goto-line startline)
+    (message "Edit formulas and finish with `C-c C-c'.  See menu for more commands.")))
 
-(defun org-table-edit-formulas-post-command ()
+(defun org-table-fedit-post-command ()
   (when (not (memq this-command '(lisp-complete-symbol)))
     (let ((win (selected-window)))
       (save-excursion
        (condition-case nil
-           (org-show-reference)
+           (org-table-show-reference)
          (error nil))
        (select-window win)))))
 
-(defun org-finish-edit-formulas (&optional arg)
+(defun org-table-formula-to-user (s)
+  "Convert a formula from internal to user representation."
+  (if (eq org-table-use-standard-references t)
+      (org-table-convert-refs-to-an s)
+    s))
+
+(defun org-table-formula-from-user (s)
+  "Convert a formula from user to internal representation."
+  (if org-table-use-standard-references
+      (org-table-convert-refs-to-rc s)
+    s))
+
+(defun org-table-convert-refs-to-rc (s)
+  "Convert spreadsheet references from AB7 to @7$28.
+Works for single references, but also for entire formulas and even the
+full TBLFM line."
+  (let ((start 0))
+    (while (string-match "\\<\\([a-zA-Z]+\\)\\([0-9]+\\>\\|&\\)\\|\\(;[^\r\n:]+\\)" s start)
+      (cond
+       ((match-end 3)
+       ;; format match, just advance
+       (setq start (match-end 0)))
+       ((and (> (match-beginning 0) 0)
+            (equal ?. (aref s (max (1- (match-beginning 0)) 0)))
+            (not (equal ?. (aref s (max (- (match-beginning 0) 2) 0)))))
+       ;; 3.e5 or something like this.
+       (setq start (match-end 0)))
+       (t
+       (setq start (match-beginning 0)
+             s (replace-match
+                (if (equal (match-string 2 s) "&")
+                    (format "$%d" (org-letters-to-number (match-string 1 s)))
+                  (format "@%d$%d"
+                          (string-to-number (match-string 2 s))
+                          (org-letters-to-number (match-string 1 s))))
+                t t s)))))
+    s))
+
+(defun org-table-convert-refs-to-an (s)
+  "Convert spreadsheet references from to @7$28 to AB7.
+Works for single references, but also for entire formulas and even the
+full TBLFM line."
+  (while (string-match "@\\([0-9]+\\)\\$\\([0-9]+\\)" s)
+    (setq s (replace-match
+            (format "%s%d"
+                    (org-number-to-letters
+                     (string-to-number (match-string 2 s)))
+                    (string-to-number (match-string 1 s)))
+            t t s)))
+  (while (string-match "\\(^\\|[^0-9a-zA-Z]\\)\\$\\([0-9]+\\)" s)
+    (setq s (replace-match (concat "\\1"
+                                  (org-number-to-letters
+                                   (string-to-number (match-string 2 s))) "&")
+                          t nil s)))
+  s)
+
+(defun org-letters-to-number (s)
+  "Convert a base 26 number represented by letters into an integer.
+For example:  AB -> 28."
+  (let ((n 0))
+    (setq s (upcase s))
+    (while (> (length s) 0)
+         (setq n (+ (* n 26) (string-to-char s) (- ?A) 1)
+               s (substring s 1)))
+    n))
+
+(defun org-number-to-letters (n)
+  "Convert an integer into a base 26 number represented by letters.
+For example:  28 -> AB."
+  (let ((s ""))
+    (while (> n 0)
+      (setq s (concat (char-to-string (+ (mod (1- n) 26) ?A)) s)
+           n (/ (1- n) 26)))
+    s))
+
+(defun org-table-fedit-convert-buffer (function)
+  "Convert all references in this buffer, using FUNTION."
+  (let ((line (org-current-line)))
+    (goto-char (point-min))
+    (while (not (eobp))
+      (insert (funcall function (buffer-substring (point) (point-at-eol))))
+      (delete-region (point) (point-at-eol))
+      (or (eobp) (forward-char 1)))
+    (goto-line line)))
+
+(defun org-table-fedit-toggle-ref-type ()
+  "Convert all references in the buffer from B3 to @3$2 and back."
+  (interactive)
+  (org-set-local 'org-table-buffer-is-an (not org-table-buffer-is-an))
+  (org-table-fedit-convert-buffer
+   (if org-table-buffer-is-an
+       'org-table-convert-refs-to-an 'org-table-convert-refs-to-rc))
+  (message "Reference type switched to %s"
+          (if org-table-buffer-is-an "A1 etc" "@row$column")))
+
+(defun org-table-fedit-ref-up ()
+  "Shift the reference at point one row/hline up."
+  (interactive)
+  (org-table-fedit-shift-reference 'up))
+(defun org-table-fedit-ref-down ()
+  "Shift the reference at point one row/hline down."
+  (interactive)
+  (org-table-fedit-shift-reference 'down))
+(defun org-table-fedit-ref-left ()
+  "Shift the reference at point one field to the left."
+  (interactive)
+  (org-table-fedit-shift-reference 'left))
+(defun org-table-fedit-ref-right ()
+  "Shift the reference at point one field to the right."
+  (interactive)
+  (org-table-fedit-shift-reference 'right))
+
+(defun org-table-fedit-shift-reference (dir)
+  (cond
+   ((org-at-regexp-p "\\(\\<[a-zA-Z]\\)&")
+    (if (memq dir '(left right))
+       (org-rematch-and-replace 1 (eq dir 'left))
+      (error "Cannot shift reference in this direction")))
+   ((org-at-regexp-p "\\(\\<[a-zA-Z]\\{1,2\\}\\)\\([0-9]+\\)")
+    ;; A B3-like reference
+    (if (memq dir '(up down))
+       (org-rematch-and-replace 2 (eq dir 'up))
+      (org-rematch-and-replace 1 (eq dir 'left))))
+   ((org-at-regexp-p
+     "\\(@\\|\\.\\.\\)\\([-+]?\\(I+\\>\\|[0-9]+\\)\\)\\(\\$\\([-+]?[0-9]+\\)\\)?")
+    ;; An internal reference
+    (if (memq dir '(up down))
+       (org-rematch-and-replace 2 (eq dir 'up) (match-end 3))
+      (org-rematch-and-replace 5 (eq dir 'left))))))
+
+(defun org-rematch-and-replace (n &optional decr hline)
+  "Re-match the group N, and replace it with the shifted refrence."
+  (or (match-end n) (error "Cannot shift reference in this direction"))
+  (goto-char (match-beginning n))
+  (and (looking-at (regexp-quote (match-string n)))
+       (replace-match (org-shift-refpart (match-string 0) decr hline)
+                     t t)))
+
+(defun org-shift-refpart (ref &optional decr hline)
+  "Shift a refrence part REF.
+If DECR is set, decrease the references row/column, else increase.
+If HLINE is set, this may be a hline reference, it certainly is not
+a translation reference."
+  (save-match-data
+    (let* ((sign (string-match "^[-+]" ref)) n)
+
+      (if sign (setq sign (substring ref 0 1) ref (substring ref 1)))
+      (cond
+       ((and hline (string-match "^I+" ref))
+       (setq n (string-to-number (concat sign (number-to-string (length ref)))))
+       (setq n (+ n (if decr -1 1)))
+       (if (= n 0) (setq n (+ n (if decr -1 1))))
+       (if sign
+           (setq sign (if (< n 0) "-" "+") n (abs n))
+         (setq n (max 1 n)))
+       (concat sign (make-string n ?I)))
+
+       ((string-match "^[0-9]+" ref)
+       (setq n (string-to-number (concat sign ref)))
+       (setq n (+ n (if decr -1 1)))
+       (if sign
+           (concat (if (< n 0) "-" "+") (number-to-string (abs n)))
+         (number-to-string (max 1 n))))
+
+       ((string-match "^[a-zA-Z]+" ref)
+       (org-number-to-letters
+        (max 1 (+ (org-letters-to-number ref) (if decr -1 1)))))
+
+       (t (error "Cannot shift reference"))))))
+
+(defun org-table-fedit-toggle-coordinates ()
+  "Toggle the display of coordinates in the refrenced table."
+  (interactive)
+  (let ((pos (marker-position org-pos)))
+    (with-current-buffer (marker-buffer org-pos)
+      (save-excursion
+       (goto-char pos)
+       (org-table-toggle-coordinate-overlays)))))
+
+(defun org-table-fedit-finish (&optional arg)
   "Parse the buffer for formula definitions and install them.
 With prefix ARG, apply the new formulas to the table."
   (interactive "P")
   (org-table-remove-rectangle-highlight)
+  (if org-table-use-standard-references
+      (progn
+       (org-table-fedit-convert-buffer 'org-table-convert-refs-to-rc)
+       (setq org-table-buffer-is-an nil)))
   (let ((pos org-pos) eql var form)
-    (setq org-pos nil)
     (goto-char (point-min))
     (while (re-search-forward
            "^\\(@[0-9]+\\$[0-9]+\\|\\$\\([a-zA-Z0-9]+\\)\\) *= *\\(.*\\(\n[ \t]+.*$\\)*\\)"
@@ -7997,9 +9827,13 @@ With prefix ARG, apply the new formulas to the table."
       (setq var (if (match-end 2) (match-string 2) (match-string 1))
            form (match-string 3))
       (setq form (org-trim form))
-      (while (string-match "[ \t]*\n[ \t]*" form)
-       (setq form (replace-match " " t t form)))
-      (push (cons var form) eql))
+      (when (not (equal form ""))
+       (while (string-match "[ \t]*\n[ \t]*" form)
+         (setq form (replace-match " " t t form)))
+       (when (assoc var eql)
+         (error "Double formulas for %s" var))
+       (push (cons var form) eql)))
+    (setq org-pos nil)
     (set-window-configuration org-window-configuration)
     (select-window (get-buffer-window (marker-buffer pos)))
     (goto-char pos)
@@ -8012,7 +9846,7 @@ With prefix ARG, apply the new formulas to the table."
        (org-table-recalculate 'all)
       (message "New formulas installed - press C-u C-c C-c to apply."))))
 
-(defun org-abort-edit-formulas ()
+(defun org-table-fedit-abort ()
   "Abort editing formulas, without installing the changes."
   (interactive)
   (org-table-remove-rectangle-highlight)
@@ -8023,7 +9857,7 @@ With prefix ARG, apply the new formulas to the table."
     (move-marker pos nil)
     (message "Formula editing aborted without installing changes")))
 
-(defun org-edit-formula-lisp-indent ()
+(defun org-table-fedit-lisp-indent ()
   "Pretty-print and re-indent Lisp expressions in the Formula Editor."
   (interactive)
   (let ((pos (point)) beg end ind)
@@ -8032,10 +9866,10 @@ With prefix ARG, apply the new formulas to the table."
      ((looking-at "[ \t]")
       (goto-char pos)
       (call-interactively 'lisp-indent-line))
-     ((looking-at "[$@0-9a-zA-Z]+ *= *[^ \t\n']") (goto-char pos))
+     ((looking-at "[$&@0-9a-zA-Z]+ *= *[^ \t\n']") (goto-char pos))
      ((not (fboundp 'pp-buffer))
       (error "Cannot pretty-print.  Command `pp-buffer' is not available."))
-     ((looking-at "[$@0-9a-zA-Z]+ *= *'(")
+     ((looking-at "[$&@0-9a-zA-Z]+ *= *'(")
       (goto-char (- (match-end 0) 2))
       (setq beg (point))
       (setq ind (make-string (current-column) ?\ ))
@@ -8064,7 +9898,7 @@ With prefix ARG, apply the new formulas to the table."
 
 (defvar org-show-positions nil)
 
-(defun org-show-reference (&optional local)
+(defun org-table-show-reference (&optional local)
   "Show the location/value of the $ expression at point."
   (interactive)
   (org-table-remove-rectangle-highlight)
@@ -8077,12 +9911,18 @@ With prefix ARG, apply the new formulas to the table."
          var name e what match dest)
       (if local (org-table-get-specials))
       (setq what (cond
-                 ((org-at-regexp-p org-table-range-regexp2) 'range)
+                 ((or (org-at-regexp-p org-table-range-regexp2)
+                      (org-at-regexp-p org-table-translate-regexp)
+                      (org-at-regexp-p org-table-range-regexp))
+                  (setq match
+                        (save-match-data
+                          (org-table-convert-refs-to-rc (match-string 0))))
+                  'range)
                  ((org-at-regexp-p "\\$[a-zA-Z][a-zA-Z0-9]*") 'name)
                  ((org-at-regexp-p "\\$[0-9]+") 'column)
                  ((not local) nil)
                  (t (error "No reference at point")))
-           match (and what (match-string 0)))
+           match (and what (or match (match-string 0))))
       (when (and  match (not (equal (match-beginning 0) (point-at-bol))))
        (org-table-add-rectangle-overlay (match-beginning 0) (match-end 0)
                                         'secondary-selection))
@@ -8094,15 +9934,19 @@ With prefix ARG, apply the new formulas to the table."
        (setq match (org-table-formula-substitute-names match)))
       (unless local
        (save-excursion
+         (end-of-line 1)
+         (re-search-backward "^\\S-" nil t)
          (beginning-of-line 1)
-         (when (looking-at "\\(\\$[0-9a-zA-Z]+\\|@[0-9]+\\$[0-9]+\\)=")
-           (setq dest (match-string 1))
+         (when (looking-at "\\(\\$[0-9a-zA-Z]+\\|@[0-9]+\\$[0-9]+\\|[a-zA-Z]+\\([0-9]+\\|&\\)\\) *=")
+           (setq dest
+                 (save-match-data
+                   (org-table-convert-refs-to-rc (match-string 1))))
            (org-table-add-rectangle-overlay
             (match-beginning 1) (match-end 1) face2))))
       (if (and (markerp pos) (marker-buffer pos))
          (if (get-buffer-window (marker-buffer pos))
              (select-window (get-buffer-window (marker-buffer pos)))
-           (switch-to-buffer-other-window (get-buffer-window
+           (org-switch-to-buffer-other-window (get-buffer-window
                                            (marker-buffer pos)))))
       (goto-char pos)
       (org-table-force-dataline)
@@ -8161,22 +10005,27 @@ With prefix ARG, apply the new formulas to the table."
        (t
        (cond
         ((not var) (error "No reference at point"))
+        ((setq e (assoc var org-table-formula-constants-local))
+         (message "Local Constant: $%s=%s in #+CONSTANTS line."
+                  var (cdr e)))
         ((setq e (assoc var org-table-formula-constants))
          (message "Constant: $%s=%s in `org-table-formula-constants'."
                   var (cdr e)))
         ((setq e (and (fboundp 'constants-get) (constants-get var)))
-         (message "Constant: $%s=%s, retrieved from `constants.el'." var e))
+         (message "Constant: $%s=%s, from `constants.el'%s."
+                  var e (format " (%s units)" constants-unit-system)))
         (t (error "Undefined name $%s" var)))))
       (goto-char pos)
-      (when org-show-positions
+      (when (and org-show-positions
+                 (not (memq this-command '(org-table-fedit-scroll
+                                           org-table-fedit-scroll-down))))
        (push pos org-show-positions)
+       (push org-table-current-begin-pos org-show-positions)
        (let ((min (apply 'min org-show-positions))
              (max (apply 'max org-show-positions)))
-         (when (or (not (pos-visible-in-window-p min))
-                   (not (pos-visible-in-window-p max)))
-           (goto-char min)
-           (set-window-start (selected-window) (point-at-bol))
-           (goto-char pos))))
+          (goto-char min) (recenter 0)
+          (goto-char max)
+          (or (pos-visible-in-window-p max) (recenter -1))))
       (select-window win))))
 
 (defun org-table-force-dataline ()
@@ -8193,27 +10042,17 @@ With prefix ARG, apply the new formulas to the table."
            ((or p1 p2) (goto-char (or p1 p2)))
            (t (error "No table dataline around here"))))))
 
-(defun org-table-edit-line-up ()
+(defun org-table-fedit-line-up ()
   "Move cursor one line up in the window showing the table."
   (interactive)
-  (org-table-edit-move 'previous-line))
+  (org-table-fedit-move 'previous-line))
 
-(defun org-table-edit-line-down ()
+(defun org-table-fedit-line-down ()
   "Move cursor one line down in the window showing the table."
   (interactive)
- (org-table-edit-move 'next-line))
-
-(defun org-table-edit-backward-field ()
-  "Move cursor one field backward in the window showing the table."
-  (interactive)
-  (org-table-edit-move 'org-table-previous-field))
-
-(defun org-table-edit-next-field ()
-  "Move cursor one field forward in the window showing the table."
-  (interactive)
-  (org-table-edit-move 'org-table-next-field))
+ (org-table-fedit-move 'next-line))
 
-(defun org-table-edit-move (command)
+(defun org-table-fedit-move (command)
   "Move the cursor in the window shoinw the table.
 Use COMMAND to do the motion, repeat if necessary to end up in a data line."
   (let ((org-table-allow-automatic-line-recalculation nil)
@@ -8228,14 +10067,14 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line."
     (move-marker pos (point))
     (select-window win)))
 
-(defun org-table-edit-scroll (N)
+(defun org-table-fedit-scroll (N)
   (interactive "p")
   (let ((other-window-scroll-buffer (marker-buffer org-pos)))
     (scroll-other-window N)))
 
-(defun org-table-edit-scroll-down (N)
+(defun org-table-fedit-scroll-down (N)
   (interactive "p")
-  (org-table-edit-scroll (- N)))
+  (org-table-fedit-scroll (- N)))
 
 (defvar org-table-rectangle-overlays nil)
 
@@ -8290,7 +10129,7 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line."
   (mapc 'org-delete-overlay org-table-coordinate-overlays)
   (setq org-table-coordinate-overlays nil)
   (save-excursion
-    (let ((id 0) (ih 0) hline eol str ic ov beg)
+    (let ((id 0) (ih 0) hline eol s1 s2 str ic ov beg)
       (goto-char (org-table-begin))
       (while (org-at-table-p)
        (setq eol (point-at-eol))
@@ -8299,15 +10138,18 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line."
        (setq hline (looking-at org-table-hline-regexp))
        (setq str (if hline (format "I*%-2d" (setq ih (1+ ih)))
                    (format "%4d" (setq id (1+ id)))))
-       (org-overlay-before-string ov str 'org-formula 'evaporate)
+       (org-overlay-before-string ov str 'org-special-keyword 'evaporate)
        (when hline
          (setq ic 0)
-         (while (re-search-forward "[+|]-+" eol t)
+         (while (re-search-forward "[+|]\\(-+\\)" eol t)
            (setq beg (1+ (match-beginning 0))
-                 str (concat "$" (int-to-string (setq ic (1+ ic)))))
+                 ic (1+ ic)
+                 s1 (concat "$" (int-to-string ic))
+                 s2 (org-number-to-letters ic)
+                 str (if (eq org-table-use-standard-references t) s2 s1))
            (setq ov (org-make-overlay beg (+ beg (length str))))
            (push ov org-table-coordinate-overlays)
-           (org-overlay-display ov str 'org-formula 'evaporate)))
+           (org-overlay-display ov str 'org-special-keyword 'evaporate)))
        (beginning-of-line 2)))))
 
 (defun org-table-toggle-coordinate-overlays ()
@@ -8492,7 +10334,7 @@ to execute outside of tables."
          '("\C-c}"              org-table-toggle-coordinate-overlays)
          '("\C-c{"              org-table-toggle-formula-debugger)
          '("\C-m"               org-table-next-row)
-         (list (org-key 'S-return) 'org-table-copy-down)
+         '([(shift return)]     org-table-copy-down)
          '("\C-c\C-q"           org-table-wrap-region)
          '("\C-c?"              org-table-field-info)
          '("\C-c "              org-table-blank-field)
@@ -8507,34 +10349,34 @@ to execute outside of tables."
        elt key fun cmd)
     (while (setq elt (pop bindings))
       (setq nfunc (1+ nfunc))
-      (setq key (car elt)
+      (setq key (org-key (car elt))
            fun (nth 1 elt)
            cmd (orgtbl-make-binding fun nfunc key))
-      (define-key orgtbl-mode-map key cmd))
+      (org-defkey orgtbl-mode-map key cmd))
 
     ;; Special treatment needed for TAB and RET
-    (define-key orgtbl-mode-map [(return)]
+    (org-defkey orgtbl-mode-map [(return)]
       (orgtbl-make-binding 'orgtbl-ret 100 [(return)] "\C-m"))
-    (define-key orgtbl-mode-map "\C-m"
+    (org-defkey orgtbl-mode-map "\C-m"
       (orgtbl-make-binding 'orgtbl-ret 101 "\C-m" [(return)]))
 
-    (define-key orgtbl-mode-map [(tab)]
+    (org-defkey orgtbl-mode-map [(tab)]
       (orgtbl-make-binding 'orgtbl-tab 102 [(tab)] "\C-i"))
-    (define-key orgtbl-mode-map "\C-i"
+    (org-defkey orgtbl-mode-map "\C-i"
       (orgtbl-make-binding 'orgtbl-tab 103 "\C-i" [(tab)]))
 
-    (define-key orgtbl-mode-map [(shift tab)]
+    (org-defkey orgtbl-mode-map [(shift tab)]
       (orgtbl-make-binding 'org-table-previous-field 104
                           [(shift tab)] [(tab)] "\C-i"))
 
-    (define-key orgtbl-mode-map "\M-\C-m"
+    (org-defkey orgtbl-mode-map "\M-\C-m"
       (orgtbl-make-binding 'org-table-wrap-region 105
                           "\M-\C-m" [(meta return)]))
-    (define-key orgtbl-mode-map [(meta return)]
+    (org-defkey orgtbl-mode-map [(meta return)]
       (orgtbl-make-binding 'org-table-wrap-region 106
                           [(meta return)] "\M-\C-m"))
 
-    (define-key orgtbl-mode-map "\C-c\C-c" 'orgtbl-ctrl-c-ctrl-c)
+    (org-defkey orgtbl-mode-map "\C-c\C-c" 'orgtbl-ctrl-c-ctrl-c)
     (when orgtbl-optimized
       ;; If the user wants maximum table support, we need to hijack
       ;; some standard editing functions
@@ -8542,7 +10384,7 @@ to execute outside of tables."
                 'self-insert-command 'orgtbl-self-insert-command
                 'delete-char 'org-delete-char
                 'delete-backward-char 'org-delete-backward-char)
-      (define-key orgtbl-mode-map "|" 'org-force-self-insert))
+      (org-defkey orgtbl-mode-map "|" 'org-force-self-insert))
     (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu"
       '("OrgTbl"
        ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"]
@@ -8678,7 +10520,31 @@ overwritten, and the table is not marked as requiring realignment."
 (defvar orgtbl-exp-regexp "^\\([-+]?[0-9][0-9.]*\\)[eE]\\([-+]?[0-9]+\\)$"
   "Regula expression matching exponentials as produced by calc.")
 
-(defvar org-table-clean-did-remove-column-1 nil)
+(defvar org-table-clean-did-remove-column nil)
+
+(defun orgtbl-export (table target)
+  (let ((func (intern (concat "orgtbl-to-" (symbol-name target))))
+       (lines (org-split-string table "[ \t]*\n[ \t]*"))
+       org-table-last-alignment org-table-last-column-widths
+       maxcol column)
+    (if (not (fboundp func))
+       (error "Cannot export orgtbl table to %s" target))
+    (setq lines (org-table-clean-before-export lines))
+    (setq table
+         (mapcar
+          (lambda (x)
+            (if (string-match org-table-hline-regexp x)
+                'hline
+              (org-split-string (org-trim x) "\\s-*|\\s-*")))
+          lines))
+    (setq maxcol (apply 'max (mapcar (lambda (x) (if (listp x) (length x) 0))
+                                    table)))
+    (loop for i from (1- maxcol) downto 0 do
+         (setq column (mapcar (lambda (x) (if (listp x) (nth i x) nil)) table))
+         (setq column (delq nil column))
+         (push (apply 'max (mapcar 'string-width column)) org-table-last-column-widths)
+         (push (> (/ (apply '+ (mapcar (lambda (x) (if (string-match org-table-number-regexp x) 1 0)) column)) maxcol) org-table-number-fraction) org-table-last-alignment))
+    (funcall func table nil)))
 
 (defun orgtbl-send-table (&optional maybe)
   "Send a tranformed version of this table to the receiver position.
@@ -8706,7 +10572,7 @@ this table."
                 (org-table-begin) (org-table-end)))
           (lines (nthcdr (or skip 0) (org-split-string txt "[ \t]*\n[ \t]*")))
           (lines (org-table-clean-before-export lines))
-          (i0 (if org-table-clean-did-remove-column-1 2 1))
+          (i0 (if org-table-clean-did-remove-column 2 1))
           (table (mapcar
                   (lambda (x)
                     (if (string-match org-table-hline-regexp x)
@@ -8996,7 +10862,7 @@ this function is called."
 
 (defun org-link-expand-abbrev (link)
   "Apply replacements as defined in `org-link-abbrev-alist."
-  (if (string-match "^\\([a-zA-Z]+\\)\\(::?\\(.*\\)\\)?$" link)
+  (if (string-match "^\\([a-zA-Z][-_a-zA-Z0-9]*\\)\\(::?\\(.*\\)\\)?$" link)
       (let* ((key (match-string 1 link))
             (as (or (assoc key org-link-abbrev-alist-local)
                     (assoc key org-link-abbrev-alist)))
@@ -9022,6 +10888,52 @@ this function is called."
 (defvar org-store-link-plist nil
   "Plist with info about the most recently link created with `org-store-link'.")
 
+(defvar org-link-protocols nil
+  "Link protocols added to Org-mode using `org-add-link-type'.")
+
+(defvar org-store-link-functions nil
+  "List of functions that are called to create and store a link.
+Each function will be called in turn until one returns a non-nil
+value.  Each function should check if it is responsible for creating
+this link (for example by looking at the major mode).
+If not, it must exit and return nil.
+If yes, it should return a non-nil value after a calling
+`org-store-link-properties' with a list of properties and values.
+Special properties are:
+
+:type         The link prefix. like \"http\".  This must be given.
+:link         The link, like \"http://www.astro.uva.nl/~dominik\".
+              This is obligatory as well.
+:description  Optional default description for the second pair
+              of brackets in an Org-mode link.  The user can still change
+              this when inserting this link into an Org-mode buffer.
+
+In addition to these, any additional properties can be specified
+and then used in remember templates.")
+
+(defun org-add-link-type (type &optional follow publish)
+  "Add TYPE to the list of `org-link-types'.
+Re-compute all regular expressions depending on `org-link-types'
+FOLLOW and PUBLISH are two functions.  Both take the link path as
+an argument.
+FOLLOW should do whatever is necessary to follow the link, for example
+to find a file or display a mail message.
+PUBLISH takes the path and retuns the string that should be used when
+this document is published."
+  (add-to-list 'org-link-types type t)
+  (org-make-link-regexps)
+  (add-to-list 'org-link-protocols
+              (list type follow publish)))
+
+(defun org-add-agenda-custom-command (entry)
+  "Replace or add a command in `org-agenda-custom-commands'.
+This is mostly for hacking and trying a new command - once the command
+works you probably want to add it to `org-agenda-custom-commands' for good."
+  (let ((ass (assoc (car entry) org-agenda-custom-commands)))
+    (if ass
+       (setcdr ass (cdr entry))
+      (push entry org-agenda-custom-commands))))
+
 ;;;###autoload
 (defun org-store-link (arg)
   "\\<org-mode-map>Store an org-link to the current location.
@@ -9035,9 +10947,13 @@ For file links, arg negates `org-context-in-file-links'."
   (let (link cpltxt desc description search txt)
     (cond
 
+     ((run-hook-with-args-until-success 'org-store-link-functions)
+      (setq link (plist-get org-store-link-plist :link)
+           desc (or (plist-get org-store-link-plist :description) link)))
+
      ((eq major-mode 'bbdb-mode)
       (let ((name (bbdb-record-name (bbdb-current-record)))
-           (company (bbdb-record-company (bbdb-current-record))))
+           (company (bbdb-record-getprop (bbdb-current-record) 'company)))
        (setq cpltxt (concat "bbdb:" (or name company))
              link (org-make-link cpltxt))
        (org-store-link-props :type "bbdb" :name name :company company)))
@@ -9220,10 +11136,11 @@ For file links, arg negates `org-context-in-file-links'."
          (setq cpltxt (substring cpltxt 0 -2)))
       (setq link (org-make-link cpltxt)))
 
-     (buffer-file-name
+     ((buffer-file-name (buffer-base-buffer))
       ;; Just link to this file here.
       (setq cpltxt (concat "file:"
-                          (abbreviate-file-name buffer-file-name)))
+                          (abbreviate-file-name
+                           (buffer-file-name (buffer-base-buffer)))))
       ;; Add a context string
       (when (org-xor org-context-in-file-links arg)
        (setq txt (if (org-region-active-p)
@@ -9249,9 +11166,9 @@ For file links, arg negates `org-context-in-file-links'."
     (if (and (interactive-p) link)
        (progn
          (setq org-stored-links
-               (cons (list cpltxt link desc) org-stored-links))
-         (message "Stored: %s" (or cpltxt link)))
-      (org-make-link-string link desc))))
+               (cons (list link desc) org-stored-links))
+         (message "Stored: %s" (or desc link)))
+      (and link (org-make-link-string link desc)))))
 
 (defun org-store-link-props (&rest plist)
   "Store link properties, extract names and addresses."
@@ -9306,7 +11223,7 @@ according to FMT (default from `org-email-link-description-format')."
       ;; We are using a headline, clean up garbage in there.
       (if (string-match org-todo-regexp s)
          (setq s (replace-match "" t t s)))
-      (if (string-match ":[a-zA-Z_@0-9:]+:[ \t]*$" s)
+      (if (string-match (org-re ":[[:alnum:]_@:]+:[ \t]*$") s)
          (setq s (replace-match "" t t s)))
       (setq s (org-trim s))
       (if (string-match (concat "^\\(" org-quote-string "\\|"
@@ -9320,11 +11237,13 @@ according to FMT (default from `org-email-link-description-format')."
     (mapconcat 'identity (org-split-string s "[ \t]+") " ")))
 
 (defun org-make-link (&rest strings)
-  "Concatenate STRINGS, format resulting string with `org-link-format'."
+  "Concatenate STRINGS."
   (apply 'concat strings))
 
 (defun org-make-link-string (link &optional description)
   "Make a link with brackets, consisting of LINK and DESCRIPTION."
+  (unless (string-match "\\S-" link)
+    (error "Empty link"))
   (when (stringp description)
     ;; Remove brackets from the description, they are fatal.
     (while (string-match "\\[\\|\\]" description)
@@ -9339,30 +11258,56 @@ according to FMT (default from `org-email-link-description-format')."
          (if description (concat "[" description "]") "")
          "]"))
 
-(defconst org-link-escape-chars '(("[" . "%5B") ("]" . "%5D") (" " . "%20"))
-  "Association list of escapes for some characters problematic in links.")
+(defconst org-link-escape-chars 
+  '((" " . "%20")
+    ("[" . "%5B")
+    ("]" . "%5d")
+    ("\340" . "%E0")  ; `a
+    ("\342" . "%E2")  ; ^a  
+    ("\347" . "%E7")  ; ,c
+    ("\350" . "%E8")  ; `e
+    ("\351" . "%E9")  ; 'e
+    ("\352" . "%EA")  ; ^e
+    ("\356" . "%EE")  ; ^i
+    ("\364" . "%F4")  ; ^o
+    ("\371" . "%F9")  ; `u
+    ("\373" . "%FB")  ; ^u
+    (";" . "%3B")
+    ("?" . "%3F")
+    ("=" . "%3D")
+    ("+" . "%2B")
+    )
+  "Association list of escapes for some characters problematic in links.
+This is the list that is used for internal purposes.")
+
+(defconst org-link-escape-chars-browser 
+  '((" " . "%20"))
+  "Association list of escapes for some characters problematic in links.
+This is the list that is used before handing over to the browser.")
 
-(defun org-link-escape (text)
+(defun org-link-escape (text &optional table)
   "Escape charaters in TEXT that are problematic for links."
+  (setq table (or table org-link-escape-chars))
   (when text
     (let ((re (mapconcat (lambda (x) (regexp-quote (car x)))
-                        org-link-escape-chars "\\|")))
+                        table "\\|")))
       (while (string-match re text)
        (setq text
              (replace-match
-              (cdr (assoc (match-string 0 text) org-link-escape-chars))
+              (cdr (assoc (match-string 0 text) table))
               t t text)))
       text)))
 
-(defun org-link-unescape (text)
+(defun org-link-unescape (text &optional table)
   "Reverse the action of `org-link-escape'."
+  (setq table (or table org-link-escape-chars))
   (when text
     (let ((re (mapconcat (lambda (x) (regexp-quote (cdr x)))
-                        org-link-escape-chars "\\|")))
+                        table "\\|")))
       (while (string-match re text)
        (setq text
              (replace-match
-              (car (rassoc (match-string 0 text) org-link-escape-chars))
+              (car (rassoc (match-string 0 text) table))
               t t text)))
       text)))
 
@@ -9404,6 +11349,13 @@ according to FMT (default from `org-email-link-description-format')."
     (setq s (replace-match "%40" t t s)))
   s)
 
+;;;###autoload
+(defun org-insert-link-global ()
+  "Insert a link like Org-mode does.
+This command can be called in any mode to insert a link in Org-mode syntax."
+  (interactive)
+  (org-run-like-in-org-mode 'org-insert-link))
+
 (defun org-insert-link (&optional complete-file)
   "Insert a link.  At the prompt, enter the link.
 
@@ -9430,11 +11382,13 @@ is in the current directory or below.
 With three \\[universal-argument] prefixes, negate the meaning of
 `org-keep-stored-link-after-insertion'."
   (interactive "P")
-  (let ((region (if (org-region-active-p)
-                   (prog1 (buffer-substring (region-beginning) (region-end))
-                     (delete-region (region-beginning) (region-end)))))
-        tmphist ; byte-compile incorrectly complains about this
-       link desc entry remove file)
+  (let* ((wcf (current-window-configuration))
+        (region (if (org-region-active-p)
+                    (buffer-substring (region-beginning) (region-end))))
+        (remove (and region (list (region-beginning) (region-end))))
+        (desc region)
+        tmphist ; byte-compile incorrectly complains about this
+        link entry file)
     (cond
      ((org-in-regexp org-bracket-link-regexp 1)
       ;; We do have a link at point, and we are going to edit it.
@@ -9469,22 +11423,43 @@ With three \\[universal-argument] prefixes, negate the meaning of
         (t (setq link (org-make-link "file:" file))))))
      (t
       ;; Read link, with completion for stored links.
-      ;; Fake a link history
+      (with-output-to-temp-buffer "*Org Links*"
+       (princ "Insert a link.  Use TAB to complete valid link prefixes.\n")
+       (when org-stored-links
+         (princ "\nStored links are available with <up>/<down> or M-p/n (most recent with RET):\n\n")
+         (princ (mapconcat
+                 (lambda (x)
+                   (if (nth 1 x) (concat (car x) " (" (nth 1 x) ")") (car x)))
+                 (reverse org-stored-links) "\n"))))
+      (let ((cw (selected-window)))
+       (select-window (get-buffer-window "*Org Links*"))
+       (shrink-window-if-larger-than-buffer)
+       (setq truncate-lines t)
+       (select-window cw))
+      ;; Fake a link history, containing the stored links.
       (setq tmphist (append (mapcar 'car org-stored-links)
                            org-insert-link-history))
-      (setq link (org-completing-read
-                 "Link: " org-stored-links nil nil nil
-                 'tmphist
-                 (or (car (car org-stored-links)))))
+      (unwind-protect
+         (setq link (org-completing-read
+                     "Link: "
+                     (append
+                      (mapcar (lambda (x) (list (concat (car x) ":")))
+                              (append org-link-abbrev-alist-local org-link-abbrev-alist))
+                      (mapcar (lambda (x) (list (concat x ":")))
+                              org-link-types))
+                     nil nil nil
+                     'tmphist
+                     (or (car (car org-stored-links)))))
+       (set-window-configuration wcf)
+       (kill-buffer "*Org Links*"))
       (setq entry (assoc link org-stored-links))
       (or entry (push link org-insert-link-history))
       (if (funcall (if (equal complete-file '(64)) 'not 'identity)
                   (not org-keep-stored-link-after-insertion))
          (setq org-stored-links (delq (assoc link org-stored-links)
                                       org-stored-links)))
-      (setq link (if entry (nth 1 entry) link)
-           desc (or region desc (nth 2 entry)))))
-
+      (setq desc (or desc (nth 1 entry)))))
+    
     (if (string-match org-plain-link-re link)
        ;; URL-like link, normalize the use of angular brackets.
        (setq link (org-make-link (org-remove-angle-brackets link))))
@@ -9504,6 +11479,8 @@ With three \\[universal-argument] prefixes, negate the meaning of
     ;; Check if we can/should use a relative path.  If yes, simplify the link
     (when (string-match "\\<file:\\(.*\\)" link)
       (let* ((path (match-string 1 link))
+            (origpath path)
+            (desc-is-link (equal link desc))
             (case-fold-search nil))
        (cond
         ((eq org-link-file-path-type 'absolute)
@@ -9521,7 +11498,9 @@ With three \\[universal-argument] prefixes, negate the meaning of
                ;; We are linking a file with relative path name.
                (setq path (substring (expand-file-name path)
                                      (match-end 0)))))))
-       (setq link (concat "file:" path))))
+       (setq link (concat "file:" path))
+       (if (equal desc origpath)
+           (setq desc path))))
 
     (setq desc (read-string "Description: " desc))
     (unless (string-match "\\S-" desc) (setq desc nil))
@@ -9531,7 +11510,7 @@ With three \\[universal-argument] prefixes, negate the meaning of
 (defun org-completing-read (&rest args)
   (let ((minibuffer-local-completion-map
         (copy-keymap minibuffer-local-completion-map)))
-    (define-key minibuffer-local-completion-map " " 'self-insert-command)
+    (org-defkey minibuffer-local-completion-map " " 'self-insert-command)
     (apply 'completing-read args)))
 
 ;;; Opening/following a link
@@ -9596,6 +11575,14 @@ This is saved in case the need arises to restore it.")
 (defvar org-open-link-marker (make-marker)
   "Marker pointing to the location where `org-open-at-point; was called.")
 
+;;;###autoload
+(defun org-open-at-point-global ()
+  "Follow a link like Org-mode does.
+This command can be called in any mode to follow a link that has
+Org-mode syntax."
+  (interactive)
+  (org-run-like-in-org-mode 'org-open-at-point))
+
 (defun org-open-at-point (&optional in-emacs)
   "Open link at or after point.
 If there is no link at point, this function will search forward up to
@@ -9636,8 +11623,12 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
                    (org-in-regexp org-plain-link-re))
            (setq type (match-string 1) path (match-string 2))
            (throw 'match t)))
+       (when (org-in-regexp "\\<\\([^><\n]+\\)\\>")
+         (setq type "tree-match"
+               path (match-string 1))
+         (throw 'match t))
        (save-excursion
-         (when (org-in-regexp "\\(:[A-Za-z_@0-9:]+\\):[ \t\r\n]")
+         (when (org-in-regexp (org-re "\\(:[[:alnum:]_@:]+\\):[ \t]*$"))
            (setq type "tags"
                  path (match-string 1))
            (while (string-match ":" path)
@@ -9651,6 +11642,9 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
 
       (cond
 
+       ((assoc type org-link-protocols)
+       (funcall (nth 1 (assoc type org-link-protocols)) path))
+
        ((equal type "mailto")
        (let ((cmd (car org-link-mailto-program))
              (args (cdr org-link-mailto-program)) args1
@@ -9670,7 +11664,8 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
          (apply cmd (nreverse args1))))
 
        ((member type '("http" "https" "ftp" "news"))
-       (browse-url (concat type ":" path)))
+       (browse-url (concat type ":" (org-link-escape
+                                     path org-link-escape-chars-browser))))
 
        ((string= type "tags")
        (org-tags-view in-emacs path))
@@ -9679,12 +11674,17 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
            (switch-to-buffer-other-window
             (org-get-buffer-for-internal-link (current-buffer)))
          (org-mark-ring-push))
-       (org-link-search
-        path
-        (cond ((equal in-emacs '(4)) 'occur)
-              ((equal in-emacs '(16)) 'org-occur)
-              (t nil))
-        pos))
+       (let ((cmd `(org-link-search
+                    ,path
+                    ,(cond ((equal in-emacs '(4)) 'occur)
+                           ((equal in-emacs '(16)) 'org-occur)
+                           (t nil))
+                    ,pos)))
+         (condition-case nil (eval cmd)
+           (error (progn (widen) (eval cmd))))))
+
+       ((string= type "tree-match")
+       (org-occur (concat "\\[" (regexp-quote path) "\\]")))
 
        ((string= type "file")
        (if (string-match "::\\([0-9]+\\)\\'" path)
@@ -9747,7 +11747,7 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
 
        ((string= type "shell")
        (let ((cmd path))
-         ;; FIXME: the following is only for backward compatibility
+         ;; The following is only for backward compatibility
          (while (string-match "@{" cmd) (setq cmd (replace-match "<" t t cmd)))
          (while (string-match "@}" cmd) (setq cmd (replace-match ">" t t cmd)))
          (if (or (not org-confirm-shell-link-function)
@@ -9830,6 +11830,10 @@ If the current buffer is in `dired-mode', grep will be used to search
 in all files.  If AVOID-POS is given, ignore matches near that position."
   (let ((case-fold-search t)
        (s0 (mapconcat 'identity (org-split-string s "[ \t\r\n]+") " "))
+       (markers (concat "\\(?:" (mapconcat (lambda (x) (regexp-quote (car x)))
+                                           (append '(("") (" ") ("\t") ("\n"))
+                                                   org-emphasis-alist)
+                                           "\\|") "\\)"))
        (pos (point))
        (pre "") (post "")
        words re0 re1 re2 re3 re4 re5 re2a reall)
@@ -9854,11 +11858,11 @@ in all files.  If AVOID-POS is given, ignore matches near that position."
        ;; (grep (concat "grep -n -e '" (match-string 1 s) "' *")))
        (t (org-do-occur (match-string 1 s)))))
      (t
-      ;; A normal search string
+      ;; A normal search strings
       (when (equal (string-to-char s) ?*)
        ;; Anchor on headlines, post may include tags.
-       (setq pre "^\\*+[ \t]*\\(?:\\sw+\\)?[ \t]*"
-             post "[ \t]*\\(?:[ \t]+:[a-zA-Z_@0-9:+]:[ \t]*\\)?$"
+       (setq pre "^\\*+[ \t]+\\(?:\\sw+\\)?[ \t]*"
+             post (org-re "[ \t]*\\(?:[ \t]+:[[:alnum:]_@:+]:[ \t]*\\)?$")
              s (substring s 1)))
       (remove-text-properties
        0 (length s)
@@ -9866,7 +11870,8 @@ in all files.  If AVOID-POS is given, ignore matches near that position."
       ;; Make a series of regular expressions to find a match
       (setq words (org-split-string s "[ \n\r\t]+")
            re0 (concat "\\(<<" (regexp-quote s0) ">>\\)")
-           re2 (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t]+") "\\)[ \t\r\n]")
+           re2 (concat markers "\\(" (mapconcat 'downcase words "[ \t]+")
+                       "\\)" markers)
            re2a (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t\r\n]+") "\\)[ \t\r\n]")
            re4 (concat "[^a-zA-Z_]\\(" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\)[^a-zA-Z_]")
            re1 (concat pre re2 post)
@@ -9908,16 +11913,18 @@ enclose the position of `org-open-link-marker'."
   (let ((m org-open-link-marker))
     (catch 'exit
       (while (apply 're-search-forward args)
-       (goto-char (match-end group))
-       (if (and (or (not (eq (marker-buffer m) (current-buffer)))
-                    (> (match-beginning 0) (marker-position m))
-                    (< (match-end 0) (marker-position m)))
-                (save-match-data
-                  (or (not (org-in-regexp org-bracket-link-analytic-regexp 1))
-                      (not (match-end 4))  ; no description
-                      (and (<= (match-beginning 4) (point))
-                           (>= (match-end 4) (point))))))
-                (throw 'exit (point)))))))
+       (unless (get-text-property (match-end group) 'intangible) ; Emacs 21
+         (goto-char (match-end group))
+         (if (and (or (not (eq (marker-buffer m) (current-buffer)))
+                      (> (match-beginning 0) (marker-position m))
+                      (< (match-end 0) (marker-position m)))
+                  (save-match-data
+                    (or (not (org-in-regexp
+                              org-bracket-link-analytic-regexp 1))
+                        (not (match-end 4))  ; no description
+                        (and (<= (match-beginning 4) (point))
+                             (>= (match-end 4) (point))))))
+             (throw 'exit (point))))))))
 
 (defun org-get-buffer-for-internal-link (buffer)
   "Return a buffer to be used for displaying the link target of internal links."
@@ -9950,7 +11957,7 @@ to read."
        (setq beg (match-end 0))
        (if (re-search-forward "^[ \t]*[0-9]+" nil t)
            (setq end (1- (match-beginning 0)))))
-      (and beg end (let ((buffer-read-only)) (delete-region beg end)))
+      (and beg end (let ((inhibit-read-only t)) (delete-region beg end)))
       (goto-char (point-min))
       (select-window cwin))))
 
@@ -10065,7 +12072,7 @@ onto the ring."
   (funcall (cdr (assq 'gnus org-link-frame-setup)))
   (if gnus-other-frame-object (select-frame gnus-other-frame-object))
   (cond ((and group article)
-        (gnus-group-read-group 0 nil group)
+        (gnus-group-read-group 1 nil group)
         (gnus-summary-goto-article (string-to-number article) nil t))
        (group (gnus-group-jump-to-group group))))
 
@@ -10163,12 +12170,13 @@ sequences, it will now work."
                (string= mh-index-folder (substring folder 0 end-index)))
           (if (equal major-mode 'mh-show-mode)
               (save-window-excursion
-                (when (buffer-live-p (get-buffer folder))
-                  (progn
-                    (pop-to-buffer folder)
-                    (org-mhe-get-message-folder-from-index)
-                    )
-                  ))
+               (let (pop-up-frames)
+                 (when (buffer-live-p (get-buffer folder))
+                   (progn
+                     (pop-to-buffer folder)
+                     (org-mhe-get-message-folder-from-index)
+                     )
+                   )))
             (org-mhe-get-message-folder-from-index)
             )
         folder
@@ -10346,7 +12354,7 @@ If the file does not exist, an error is thrown."
        (if (stringp command)
            (setq cmd command)
          (setq cmd 'emacs))))
-    (if (and (not (eq cmd 'emacs)) ; Emacs has not problems with non-ex files
+    (if (and (not (eq cmd 'emacs)) ; Emacs has no problems with non-ex files
             (not (file-exists-p file))
             (not org-open-non-existing-files))
        (error "No such file: %s" file))
@@ -10357,10 +12365,11 @@ If the file does not exist, an error is thrown."
          (setq cmd (replace-match "%s" t t cmd)))
       (setq cmd (format cmd (shell-quote-argument file)))
       (save-window-excursion
-       (shell-command (concat cmd " &"))))
+       (start-process-shell-command cmd nil cmd)))
      ((or (stringp cmd)
          (eq cmd 'emacs))
       (funcall (cdr (assq 'file org-link-frame-setup)) file)
+      (widen)
       (if line (goto-line line)
        (if search (org-link-search search))))
      ((consp cmd)
@@ -10380,10 +12389,6 @@ If the file does not exist, an error is thrown."
     org-file-apps-defaults-windowsnt)
    (t org-file-apps-defaults-gnu)))
 
-(defun org-expand-file-name (path)
-  "Replace special path abbreviations and expand the file name."
-  (expand-file-name path))
-
 (defvar ange-ftp-name-format) ; to silence the XEmacs compiler.
 (defun org-file-remote-p (file)
   "Test whether FILE specifies a location on a remote system.
@@ -10414,10 +12419,13 @@ conventions in Org-mode.  This function returns such a link."
 (defconst org-remember-help
 "Select a destination location for the note.
 UP/DOWN=headline   TAB=cycle visibility  [Q]uit   RET/<left>/<right>=Store
-RET at beg-of-buf -> Append to file as level 2 headline
 RET on headline   -> Store as sublevel entry to current headline
+RET at beg-of-buf -> Append to file as level 2 headline
 <left>/<right>    -> before/after current headline, same headings level")
 
+(defvar org-remember-previous-location nil)
+(defvar org-force-remember-template-char) ;; dynamically scoped
+
 ;;;###autoload
 (defun org-remember-apply-template (&optional use-char skip-interactive)
   "Initialize *remember* buffer with template, invoke `org-mode'.
@@ -10426,13 +12434,20 @@ to be run from that hook to fucntion properly."
   (if org-remember-templates
 
       (let* ((char (or use-char
-                      (if (= (length org-remember-templates) 1)
-                          (caar org-remember-templates)
+                      (cond
+                       ((= (length org-remember-templates) 1)
+                        (caar org-remember-templates))
+                       ((and (boundp 'org-force-remember-template-char)
+                             org-force-remember-template-char)
+                        (if (string-p org-force-remember-template-char)
+                            (string-to-char org-force-remember-template-char)
+                          org-force-remember-template-char))
+                       (t
                         (message "Select template: %s"
                                  (mapconcat
                                   (lambda (x) (char-to-string (car x)))
                                   org-remember-templates " "))
-                        (read-char-exclusive))))
+                        (read-char-exclusive)))))
             (entry (cdr (assoc char org-remember-templates)))
             (tpl (car entry))
             (plist-p (if org-store-link-plist t nil))
@@ -10447,23 +12462,34 @@ to be run from that hook to fucntion properly."
             (v-U (concat "[" (substring v-T 1 -1) "]"))
             (v-i initial)      ; defined in `remember-mode'
             (v-a (if (equal annotation "[[]]") "" annotation)) ; likewise
+            (v-A (if (and v-a
+                          (string-match "\\[\\(\\[.*?\\]\\)\\(\\[.*?\\]\\)?\\]" v-a))
+                     (replace-match "[\\1[%^{Link description}]]" nil nil v-a)
+                   v-a))
             (v-n user-full-name)
             (org-startup-folded nil)
-            org-time-was-given x prompt char time)
+            org-time-was-given org-end-time-was-given x prompt char time)
        (setq org-store-link-plist
-             (append (list :annotation v-a :initial v-i)))
+             (append (list :annotation v-a :initial v-i)
+                     org-store-link-plist))
        (unless tpl (setq tpl "")       (message "No template") (ding))
        (erase-buffer)
        (insert (substitute-command-keys
                 (format
-                 "## `C-c C-c' to file interactively, `C-u C-c C-c' to file directly.
-## Target file \"%s\", headline \"%s\"
+"## Filing location: Select interactively, default, or last used:
+## %s  to select file and header location interactively.
+## %s  \"%s\" -> \"* %s\"
+## C-u C-u C-c C-c  \"%s\" -> \"* %s\"
 ## To switch templates, use `\\[org-remember]'.\n\n"
+                 (if org-remember-store-without-prompt "    C-u C-c C-c" "        C-c C-c")
+                 (if org-remember-store-without-prompt "        C-c C-c" "    C-u C-c C-c")
                  (abbreviate-file-name (or file org-default-notes-file))
-                 (or headline ""))))
+                 (or headline "")
+                 (or (car org-remember-previous-location) "???")
+                 (or (cdr org-remember-previous-location) "???"))))
        (insert tpl) (goto-char (point-min))
        ;; Simple %-escapes
-       (while (re-search-forward "%\\([tTuUai]\\)" nil t)
+       (while (re-search-forward "%\\([tTuUaiA]\\)" nil t)
          (when (and initial (equal (match-string 0) "%i"))
            (save-match-data
              (let* ((lead (buffer-substring
@@ -10490,20 +12516,38 @@ to be run from that hook to fucntion properly."
            (org-set-local 'org-remember-default-headline headline))
        ;; Interactive template entries
        (goto-char (point-min))
-       (while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([uUtT]\\)?" nil t)
+       (while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([guUtT]\\)?" nil t)
          (setq char (if (match-end 3) (match-string 3))
                prompt (if (match-end 2) (match-string 2)))
          (goto-char (match-beginning 0))
          (replace-match "")
-         (if char
-             (progn
-               (setq org-time-was-given (equal (upcase char) char))
-               (setq time (org-read-date (equal (upcase char) "U") t nil
-                                         prompt))
-               (org-insert-time-stamp time org-time-was-given
-                                      (member char '("u" "U"))))
+         (cond
+          ((member char '("G" "g"))
+           (let* ((org-last-tags-completion-table
+                   (org-global-tags-completion-table
+                    (if (equal char "G") (org-agenda-files) (and file (list file)))))
+                  (org-add-colon-after-tag-completion t)
+                  (ins (completing-read
+                        (if prompt (concat prompt ": ") "Tags: ")
+                        'org-tags-completion-function nil nil nil
+                        'org-tags-history)))
+             (setq ins (mapconcat 'identity
+                                 (org-split-string ins (org-re "[^[:alnum:]]+"))
+                                 ":"))
+             (when (string-match "\\S-" ins)
+               (or (equal (char-before) ?:) (insert ":"))
+               (insert ins)
+               (or (equal (char-after) ?:) (insert ":")))))            
+          (char
+           (setq org-time-was-given (equal (upcase char) char))
+           (setq time (org-read-date (equal (upcase char) "U") t nil
+                                     prompt))
+           (org-insert-time-stamp time org-time-was-given
+                                  (member char '("u" "U"))
+                                  nil nil (list org-end-time-was-given)))
+          (t
            (insert (read-string
-                    (if prompt (concat prompt ": ") "Enter string")))))
+                    (if prompt (concat prompt ": ") "Enter string"))))))
        (goto-char (point-min))
        (if (re-search-forward "%\\?" nil t)
            (replace-match "")
@@ -10512,7 +12556,7 @@ to be run from that hook to fucntion properly."
     (org-set-local 'org-finish-function 'remember-buffer)))
 
 ;;;###autoload
-(defun org-remember ()
+(defun org-remember (&optional org-force-remember-template-char)
   "Call `remember'.  If this is already a remember buffer, re-apply template.
 If there is an active region, make sure remember uses it as initial content
 of the remember buffer."
@@ -10543,7 +12587,7 @@ find a better place.  Then press RET or <left> or <right> in insert the note.
 
 Key      Cursor position   Note gets inserted
 -----------------------------------------------------------------------------
-RET      buffer-start      as level 2 heading at end of file
+RET      buffer-start      as level 1 heading at end of file
 RET      on headline       as sublevel of the heading at cursor
 RET      no heading        at cursor position, level taken from context.
                           Or use prefix arg to specify level manually.
@@ -10552,8 +12596,10 @@ RET      no heading        at cursor position, level taken from context.
 
 So the fastest way to store the note is to press RET RET to append it to
 the default file.  This way your current train of thought is not
-interrupted, in accordance with the principles of remember.el.  But with
-little extra effort, you can push it directly to the correct location.
+interrupted, in accordance with the principles of remember.el.
+You can also get the fast execution without prompting by using
+C-u C-c C-c to exit the remember buffer.  See also the variable
+`org-remember-store-without-prompt'.
 
 Before being stored away, the function ensures that the text has a
 headline, i.e. a first line that starts with a \"*\".  If not, a headline
@@ -10567,22 +12613,29 @@ See also the variable `org-reverse-note-order'."
   (goto-char (point-min))
   (while (looking-at "^[ \t]*\n\\|^##.*\n")
     (replace-match ""))
+  (goto-char (point-max))
+  (unless (equal (char-before) ?\n) (insert "\n"))
   (catch 'quit
     (let* ((txt (buffer-substring (point-min) (point-max)))
-          (fastp current-prefix-arg)
+          (fastp (org-xor (equal current-prefix-arg '(4))
+                          org-remember-store-without-prompt))
           (file (if fastp org-default-notes-file (org-get-org-file)))
           (heading org-remember-default-headline)
           (visiting (org-find-base-buffer-visiting file))
           (org-startup-folded nil)
           (org-startup-align-all-tables nil)
           (org-goto-start-pos 1)
-          spos level indent reversed)
+          spos exitcmd level indent reversed)
+      (if (and (equal current-prefix-arg '(16)) org-remember-previous-location)
+         (setq file (car org-remember-previous-location)
+               heading (cdr org-remember-previous-location)))
+      (setq current-prefix-arg nil)
       ;; Modify text so that it becomes a nice subtree which can be inserted
       ;; into an org tree.
       (let* ((lines (split-string txt "\n"))
             first)
        (setq first (car lines) lines (cdr lines))
-       (if (string-match "^\\*+" first)
+       (if (string-match "^\\*+ " first)
            ;; Is already a headline
            (setq indent nil)
          ;; We need to add a headline:  Use time and first buffer line
@@ -10597,59 +12650,89 @@ See also the variable `org-reverse-note-order'."
       ;; Find the file
       (if (not visiting) (find-file-noselect file))
       (with-current-buffer (or visiting (get-file-buffer file))
-       (save-excursion (and (goto-char (point-min))
-                            (not (re-search-forward "^\\* " nil t))
-                            (insert "\n* Notes\n")))
-       (setq reversed (org-notes-order-reversed-p))
+       (unless (org-mode-p)
+         (error "Target files for remember notes must be in Org-mode"))
        (save-excursion
          (save-restriction
            (widen)
+           (and (goto-char (point-min))
+                (not (re-search-forward "^\\* " nil t))
+                (insert "\n* " (or heading "Notes") "\n"))
+           (setq reversed (org-notes-order-reversed-p))
 
            ;; Find the default location
            (when (and heading (stringp heading) (string-match "\\S-" heading))
              (goto-char (point-min))
              (if (re-search-forward
                   (concat "^\\*+[ \t]+" (regexp-quote heading)
-                          "\\([ \t]+:[@a-zA-Z0-9_:]*\\)?[ \t]*$")
+                          (org-re "\\([ \t]+:[[:alnum:]@_:]*\\)?[ \t]*$"))
                   nil t)
-                 (setq org-goto-start-pos (match-beginning 0))))
+                 (setq org-goto-start-pos (match-beginning 0))
+               (when fastp
+                 (goto-char (point-max))
+                 (unless (bolp) (newline))
+                 (insert "* " heading "\n")
+                 (setq org-goto-start-pos (point-at-bol 0)))))
 
            ;; Ask the User for a location
-           (setq spos (if fastp
-                          org-goto-start-pos
-                        (org-get-location (current-buffer) org-remember-help)))
+           (if fastp
+               (setq spos org-goto-start-pos
+                     exitcmd 'return)
+             (setq spos (org-get-location (current-buffer) org-remember-help)
+                   exitcmd (cdr spos)
+                   spos (car spos)))
            (if (not spos) (throw 'quit nil)) ; return nil to show we did
-                                             ; not handle this note
+                                       ; not handle this note
            (goto-char spos)
-           (cond ((and (bobp) (not reversed))
+           (cond ((org-on-heading-p t)
+                  (org-back-to-heading t)
+                  (setq level (funcall outline-level))
+                  (cond
+                   ((eq exitcmd 'return)
+                    ;; sublevel of current
+                    (setq org-remember-previous-location
+                          (cons (abbreviate-file-name file)
+                                (org-get-heading 'notags)))
+                    (if reversed
+                        (outline-next-heading)
+                      (org-end-of-subtree)
+                      (if (not (bolp))
+                          (if (looking-at "[ \t]*\n")
+                              (beginning-of-line 2)
+                            (end-of-line 1)
+                            (insert "\n"))))
+                    (org-paste-subtree (org-get-legal-level level 1) txt))
+                   ((eq exitcmd 'left)
+                    ;; before current
+                    (org-paste-subtree level txt))
+                   ((eq exitcmd 'right)
+                    ;; after current
+                    (org-end-of-subtree t)
+                    (org-paste-subtree level txt))
+                   (t (error "This should not happen"))))
+                 
+                 ((and (bobp) (not reversed))
                   ;; Put it at the end, one level below level 1
                   (save-restriction
                     (widen)
                     (goto-char (point-max))
                     (if (not (bolp)) (newline))
                     (org-paste-subtree (org-get-legal-level 1 1) txt)))
+                 
                  ((and (bobp) reversed)
                   ;; Put it at the start, as level 1
                   (save-restriction
                     (widen)
                     (goto-char (point-min))
-                    (re-search-forward "^\\*" nil t)
+                    (re-search-forward "^\\*" nil t)
                     (beginning-of-line 1)
                     (org-paste-subtree 1 txt)))
-                 ((and (org-on-heading-p nil) (not current-prefix-arg))
-                  ;; Put it below this entry, at the beg/end of the subtree
-                  (org-back-to-heading t)
-                  (setq level (funcall outline-level))
-                  (if reversed
-                      (outline-end-of-heading)
-                    (org-end-of-subtree t))
-                  (if (not (bolp)) (newline))
-                  (beginning-of-line 1)
-                  (org-paste-subtree (org-get-legal-level level 1) txt))
                  (t
                   ;; Put it right there, with automatic level determined by
                   ;; org-paste-subtree or from prefix arg
-                  (org-paste-subtree current-prefix-arg txt)))
+                  (org-paste-subtree
+                   (if (numberp current-prefix-arg) current-prefix-arg)
+                   txt)))
            (when remember-save-after-remembering
              (save-buffer)
              (if (not visiting) (kill-buffer (current-buffer)))))))))
@@ -10717,7 +12800,7 @@ the property list including an extra property :name with the block name."
   (unless (looking-at org-dblock-start-re)
     (error "Not at a dynamic block"))
   (let* ((begdel (1+ (match-end 0)))
-        (name (match-string 1))
+        (name (org-no-properties (match-string 1)))
         (params (append (list :name name)
                         (read (concat "(" (match-string 3) ")")))))
     (unless (re-search-forward org-dblock-end-re nil t)
@@ -10758,12 +12841,16 @@ blocks in the buffer."
   "Update the dynamic block at point
 This means to empty the block, parse for parameters and then call
 the correct writing function."
-  (let* ((pos (point))
-        (params (org-prepare-dblock))
-        (name (plist-get params :name))
-        (cmd (intern (concat "org-dblock-write:" name))))
-    (funcall cmd params)
-    (goto-char pos)))
+  (save-window-excursion
+    (let* ((pos (point))
+          (line (org-current-line))
+          (params (org-prepare-dblock))
+          (name (plist-get params :name))
+          (cmd (intern (concat "org-dblock-write:" name))))
+      (message "Updating dynamic block `%s' at line %d..." name line)
+      (funcall cmd params)
+      (message "Updating dynamic block `%s' at line %d...done" name line)
+      (goto-char pos))))
 
 (defun org-beginning-of-dblock ()
   "Find the beginning of the dynamic block at point.
@@ -10788,6 +12875,10 @@ This function can be used in a hook."
 
 ;;;; Completion
 
+(defconst org-additional-option-like-keywords
+  '("BEGIN_HTML" "BEGIN_LaTeX" "END_HTML" "END_LaTeX"
+    "ORGTBL" "HTML:" "LaTeX:"))
+
 (defun org-complete (&optional arg)
   "Perform completion on word at point.
 At the beginning of a headline, this completes TODO keywords as given in
@@ -10797,94 +12888,108 @@ that are supported for HTML support.
 If the current word is preceded by \"#+\", completes special words for
 setting file options.
 In the line after \"#+STARTUP:, complete valid keywords.\"
-At all other locations, this simply calls `ispell-complete-word'."
+At all other locations, this simply calls the value of
+`org-completion-fallback-command'."
   (interactive "P")
-  (catch 'exit
-    (let* ((end (point))
-          (beg1 (save-excursion
-                  (skip-chars-backward "a-zA-Z_@0-9")
+  (org-without-partial-completion
+   (catch 'exit
+     (let* ((end (point))
+           (beg1 (save-excursion
+                   (skip-chars-backward (org-re "[:alnum:]_@"))
+                   (point)))
+           (beg (save-excursion
+                  (skip-chars-backward "a-zA-Z0-9_:$")
                   (point)))
-          (beg (save-excursion
-                 (skip-chars-backward "a-zA-Z0-9_:$")
-                 (point)))
-          (confirm (lambda (x) (stringp (car x))))
-          (searchhead (equal (char-before beg) ?*))
-          (tag (equal (char-before beg1) ?:))
-          (texp (equal (char-before beg) ?\\))
-          (link (equal (char-before beg) ?\[))
-          (opt (equal (buffer-substring (max (point-at-bol) (- beg 2))
-                                        beg)
-                      "#+"))
-          (startup (string-match "^#\\+STARTUP:.*"
-                                (buffer-substring (point-at-bol) (point))))
-          (completion-ignore-case opt)
-          (type nil)
-          (tbl nil)
-          (table (cond
-                  (opt
-                   (setq type :opt)
-                   (mapcar (lambda (x)
-                             (string-match "^#\\+\\(\\([A-Z_]+:?\\).*\\)" x)
-                             (cons (match-string 2 x) (match-string 1 x)))
-                           (org-split-string (org-get-current-options) "\n")))
-                  (startup
-                   (setq type :startup)
-                   org-startup-options)
-                  (link (append org-link-abbrev-alist-local
-                                org-link-abbrev-alist))
-                  (texp
-                   (setq type :tex)
-                   org-html-entities)
-                  ((string-match "\\`\\*+[ \t]*\\'"
-                                 (buffer-substring (point-at-bol) beg))
-                   (setq type :todo)
-                   (mapcar 'list org-todo-keywords))
-                  (searchhead
-                   (setq type :searchhead)
-                   (save-excursion
-                     (goto-char (point-min))
-                     (while (re-search-forward org-todo-line-regexp nil t)
-                       (push (list
-                              (org-make-org-heading-search-string
-                                 (match-string 3) t))
-                             tbl)))
-                   tbl)
-                  (tag (setq type :tag beg beg1)
-                       (or org-tag-alist (org-get-buffer-tags)))
-                  (t (progn (ispell-complete-word arg) (throw 'exit nil)))))
-          (pattern (buffer-substring-no-properties beg end))
-          (completion (try-completion pattern table confirm)))
-      (cond ((eq completion t)
-            (if (equal type :opt)
-                (insert (substring (cdr (assoc (upcase pattern) table))
-                                   (length pattern)))
-              (if (equal type :tag) (insert ":"))))
-           ((null completion)
-            (message "Can't find completion for \"%s\"" pattern)
-            (ding))
-           ((not (string= pattern completion))
-            (delete-region beg end)
-            (if (string-match " +$" completion)
-                (setq completion (replace-match "" t t completion)))
-            (insert completion)
-            (if (get-buffer-window "*Completions*")
-                (delete-window (get-buffer-window "*Completions*")))
-            (if (assoc completion table)
-                (if (eq type :todo) (insert " ")
-                  (if (eq type :tag) (insert ":"))))
-            (if (and (equal type :opt) (assoc completion table))
-                (message "%s" (substitute-command-keys
-                               "Press \\[org-complete] again to insert example settings"))))
-           (t
-            (message "Making completion list...")
-            (let ((list (sort (all-completions pattern table confirm)
-                              'string<)))
-              (with-output-to-temp-buffer "*Completions*"
-                (condition-case nil
-                    ;; Protection needed for XEmacs and emacs 21
-                    (display-completion-list list pattern)
-                  (error (display-completion-list list)))))
-            (message "Making completion list...%s" "done"))))))
+           (confirm (lambda (x) (stringp (car x))))
+           (searchhead (equal (char-before beg) ?*))
+           (tag (and (equal (char-before beg1) ?:)
+                     (equal (char-after (point-at-bol)) ?*)))
+           (prop (and (equal (char-before beg1) ?:)
+                      (not (equal (char-after (point-at-bol)) ?*))))
+           (texp (equal (char-before beg) ?\\))
+           (link (equal (char-before beg) ?\[))
+           (opt (equal (buffer-substring (max (point-at-bol) (- beg 2))
+                                         beg)
+                       "#+"))
+           (startup (string-match "^#\\+STARTUP:.*"
+                                  (buffer-substring (point-at-bol) (point))))
+           (completion-ignore-case opt)
+           (type nil)
+           (tbl nil)
+           (table (cond
+                   (opt
+                    (setq type :opt)
+                    (append
+                     (mapcar
+                      (lambda (x)
+                        (string-match "^#\\+\\(\\([A-Z_]+:?\\).*\\)" x)
+                        (cons (match-string 2 x) (match-string 1 x)))
+                      (org-split-string (org-get-current-options) "\n"))
+                     (mapcar 'list org-additional-option-like-keywords)))
+                   (startup
+                    (setq type :startup)
+                    org-startup-options)
+                   (link (append org-link-abbrev-alist-local
+                                 org-link-abbrev-alist))
+                   (texp
+                    (setq type :tex)
+                    org-html-entities)
+                   ((string-match "\\`\\*+[ \t]+\\'"
+                                  (buffer-substring (point-at-bol) beg))
+                    (setq type :todo)
+                    (mapcar 'list org-todo-keywords-1))
+                   (searchhead
+                    (setq type :searchhead)
+                    (save-excursion
+                      (goto-char (point-min))
+                      (while (re-search-forward org-todo-line-regexp nil t)
+                        (push (list
+                               (org-make-org-heading-search-string
+                                (match-string 3) t))
+                              tbl)))
+                    tbl)
+                   (tag (setq type :tag beg beg1)
+                        (or org-tag-alist (org-get-buffer-tags)))
+                   (prop (setq type :prop beg beg1)
+                         (mapcar 'list (org-buffer-property-keys)))
+                   (t (progn
+                        (call-interactively org-completion-fallback-command)
+                        (throw 'exit nil)))))
+           (pattern (buffer-substring-no-properties beg end))
+           (completion (try-completion pattern table confirm)))
+       (cond ((eq completion t)
+             (if (not (assoc (upcase pattern) table))
+                 (message "Already complete")
+               (if (equal type :opt)
+                   (insert (substring (cdr (assoc (upcase pattern) table))
+                                      (length pattern)))
+                 (if (memq type '(:tag :prop)) (insert ":")))))
+            ((null completion)
+             (message "Can't find completion for \"%s\"" pattern)
+             (ding))
+            ((not (string= pattern completion))
+             (delete-region beg end)
+             (if (string-match " +$" completion)
+                 (setq completion (replace-match "" t t completion)))
+             (insert completion)
+             (if (get-buffer-window "*Completions*")
+                 (delete-window (get-buffer-window "*Completions*")))
+             (if (assoc completion table)
+                 (if (eq type :todo) (insert " ")
+                   (if (memq type '(:tag :prop)) (insert ":"))))
+             (if (and (equal type :opt) (assoc completion table))
+                 (message "%s" (substitute-command-keys
+                                "Press \\[org-complete] again to insert example settings"))))
+            (t
+             (message "Making completion list...")
+             (let ((list (sort (all-completions pattern table confirm)
+                               'string<)))
+               (with-output-to-temp-buffer "*Completions*"
+                 (condition-case nil
+                     ;; Protection needed for XEmacs and emacs 21
+                     (display-completion-list list pattern)
+                   (error (display-completion-list list)))))
+             (message "Making completion list...%s" "done")))))))
 
 ;;;; TODO, DEADLINE, Comments
 
@@ -10894,18 +12999,29 @@ At all other locations, this simply calls `ispell-complete-word'."
   (save-excursion
     (org-back-to-heading)
     (if (looking-at (concat outline-regexp
-                           "\\( +\\<" org-comment-string "\\>\\)"))
+                           "\\( *\\<" org-comment-string "\\>\\)"))
        (replace-match "" t t nil 1)
       (if (looking-at outline-regexp)
          (progn
            (goto-char (match-end 0))
-           (insert " " org-comment-string))))))
+           (insert org-comment-string " "))))))
 
 (defvar org-last-todo-state-is-todo nil
   "This is non-nil when the last TODO state change led to a TODO state.
 If the last change removed the TODO tag or switched to DONE, then
 this is nil.")
 
+(defvar org-setting-tags nil) ; dynamically skiped
+
+;; FIXME: better place
+(defun org-property-or-variable-value (var &optional inherit)
+  "Check if there is a property fixing the value of VAR.
+If yes, return this value.  If not, return the current value of the variable."
+  (let ((prop (org-entry-get nil (symbol-name var) inherit)))
+    (if (and prop (stringp prop) (string-match "\\S-" prop))
+       (read prop)
+      (symbol-value var))))
+
 (defun org-todo (&optional arg)
   "Change the TODO state of an item.
 The state of an item is given by a keyword at the start of the heading,
@@ -10926,78 +13042,131 @@ For calling through lisp, arg is also interpreted in the following way:
 'none             -> empty state
 \"\"(empty string)  -> switch to empty state
 'done             -> switch to DONE
+'nextset          -> switch to the next set of keywords
+'previousset      -> switch to the previous set of keywords
 \"WAITING\"         -> switch to the specified keyword, but only if it
                      really is a member of `org-todo-keywords'."
   (interactive "P")
   (save-excursion
     (org-back-to-heading)
-    (if (looking-at outline-regexp) (goto-char (match-end 0)))
+    (if (looking-at outline-regexp) (goto-char (1- (match-end 0))))
     (or (looking-at (concat " +" org-todo-regexp " *"))
        (looking-at " *"))
-    (let* ((this (match-string 1))
+    (let* ((logging (save-match-data (org-entry-get nil "LOGGING" t)))
+          (org-log-done (org-parse-local-options logging 'org-log-done))
+          (org-log-repeat (org-parse-local-options logging 'org-log-repeat))
+          (this (match-string 1))
+          (hl-pos (match-beginning 0))
+          (head (org-get-todo-sequence-head this))
+          (ass (assoc head org-todo-kwd-alist))
+          (interpret (nth 1 ass))
+          (done-word (nth 3 ass))
+          (final-done-word (nth 4 ass))
           (last-state (or this ""))
           (completion-ignore-case t)
-          (member (member this org-todo-keywords))
+          (member (member this org-todo-keywords-1))
           (tail (cdr member))
           (state (cond
-                  ((equal arg '(4))
+                  ((and org-todo-key-trigger
+                        (or (and (equal arg '(4)) (eq org-use-fast-todo-selection 'prefix))
+                            (and (not arg) org-use-fast-todo-selection
+                                 (not (eq org-use-fast-todo-selection 'prefix)))))
+                   ;; Use fast selection
+                   (org-fast-todo-selection))
+                  ((and (equal arg '(4))
+                        (or (not org-use-fast-todo-selection)
+                            (not org-todo-key-trigger)))
                    ;; Read a state with completion
                    (completing-read "State: " (mapcar (lambda(x) (list x))
-                                                      org-todo-keywords)
+                                                      org-todo-keywords-1)
                                     nil t))
                   ((eq arg 'right)
                    (if this
                        (if tail (car tail) nil)
-                     (car org-todo-keywords)))
+                     (car org-todo-keywords-1)))
                   ((eq arg 'left)
-                   (if (equal member org-todo-keywords)
+                   (if (equal member org-todo-keywords-1)
                        nil
                      (if this
-                         (nth (- (length org-todo-keywords) (length tail) 2)
-                              org-todo-keywords)
-                       org-done-string)))
+                         (nth (- (length org-todo-keywords-1) (length tail) 2)
+                              org-todo-keywords-1)
+                       (org-last org-todo-keywords-1))))
+                  ((and (eq org-use-fast-todo-selection t) (equal arg '(4))
+                        (setq arg nil))) ; hack to fall back to cycling
                   (arg
-                   ;; user requests a specific state
+                   ;; user or caller requests a specific state
                    (cond
                     ((equal arg "") nil)
                     ((eq arg 'none) nil)
-                    ((eq arg 'done) (org-last org-todo-keywords))
-                    ((car (member arg org-todo-keywords)))
+                    ((eq arg 'done) (or done-word (car org-done-keywords)))
+                    ((eq arg 'nextset)
+                     (or (car (cdr (member head org-todo-heads)))
+                         (car org-todo-heads)))
+                    ((eq arg 'previousset)
+                     (let ((org-todo-heads (reverse org-todo-heads)))
+                       (or (car (cdr (member head org-todo-heads)))
+                           (car org-todo-heads))))
+                    ((car (member arg org-todo-keywords-1)))
                     ((nth (1- (prefix-numeric-value arg))
-                            org-todo-keywords))))
-                  ((null member) (car org-todo-keywords))
+                            org-todo-keywords-1))))
+                  ((null member) (or head (car org-todo-keywords-1)))
+                  ((equal this final-done-word) nil) ;; -> make empty
                   ((null tail) nil) ;; -> first entry
-                  ((eq org-todo-interpretation 'sequence)
+                  ((eq interpret 'sequence)
                    (car tail))
-                  ((memq org-todo-interpretation '(type priority))
+                  ((memq interpret '(type priority))
                    (if (eq this-command last-command)
                        (car tail)
-                     (if (> (length tail) 0) org-done-string nil)))
+                     (if (> (length tail) 0)
+                         (or done-word (car org-done-keywords))
+                       nil)))
                   (t nil)))
           (next (if state (concat " " state " ") " "))
           dostates)
       (replace-match next t t)
+      (unless (pos-visible-in-window-p hl-pos)
+       (message "TODO state changed to %s" (org-trim next)))
+      (unless head
+       (setq head (org-get-todo-sequence-head state)
+             ass (assoc head org-todo-kwd-alist)
+             interpret (nth 1 ass)
+             done-word (nth 3 ass)
+             final-done-word (nth 4 ass)))
+      (when (memq arg '(nextset previousset))
+       (message "Keyword-Set %d/%d: %s"
+                (- (length org-todo-sets) -1
+                   (length (memq (assoc state org-todo-sets) org-todo-sets)))
+                (length org-todo-sets)
+                (mapconcat 'identity (assoc state org-todo-sets) " ")))
       (setq org-last-todo-state-is-todo
-           (not (equal state org-done-string)))
-      (when org-log-done
-       (setq dostates (and (eq org-todo-interpretation 'sequence)
-                           (listp org-log-done) (memq 'state org-log-done)))
+           (not (member state org-done-keywords)))
+      (when (and org-log-done (not (memq arg '(nextset previousset))))
+       (setq dostates (and (listp org-log-done) (memq 'state org-log-done)
+                           (or (not org-todo-log-states)
+                               (member state org-todo-log-states))))
+
        (cond
-        ((and state (not this))
+        ((and state (member state org-not-done-keywords)
+              (not (member this org-not-done-keywords)))
+         ;; This is now a todo state and was not one before
+         ;; Remove any CLOSED timestamp, and possibly log the state change
          (org-add-planning-info nil nil 'closed)
          (and dostates (org-add-log-maybe 'state state 'findpos)))
         ((and state dostates)
+         ;; This is a non-nil state, and we need to log it
          (org-add-log-maybe 'state state 'findpos))
-        ((equal state org-done-string)
-         ;; Planning info calls the note-setting command.
-         (org-add-planning-info 'closed (org-current-time)
-                                (if (org-get-repeat) nil 'scheduled))
+        ((and (member state org-done-keywords)
+              (not (member this org-done-keywords)))
+         ;; It is now done, and it was not done before
+         (org-add-planning-info 'closed (org-current-time))
          (org-add-log-maybe 'done state 'findpos))))
       ;; Fixup tag positioning
-      (and org-auto-align-tags (org-set-tags nil t))
+      (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t))
       (run-hooks 'org-after-todo-state-change-hook)
-      (and (equal state org-done-string) (org-auto-repeat-maybe))
-      ))
+      (and (member state org-done-keywords) (org-auto-repeat-maybe))
+      (if (and arg (not (member state org-done-keywords)))
+         (setq head (org-get-todo-sequence-head state)))
+      (put-text-property (point-at-bol) (point-at-eol) 'org-todo-head head)))
   ;; Fixup cursor location if close to the keyword
   (if (and (outline-on-heading-p)
           (not (bolp))
@@ -11008,8 +13177,86 @@ For calling through lisp, arg is also interpreted in the following way:
        (goto-char (or (match-end 2) (match-end 1)))
        (just-one-space))))
 
+(defun org-get-todo-sequence-head (kwd)
+  "Return the head of the TODO sequence to which KWD belongs.
+If KWD is not set, check if there is a text property remembering the
+right sequence."
+  (let (p)
+    (cond
+     ((not kwd)
+      (or (get-text-property (point-at-bol) 'org-todo-head)
+         (progn
+           (setq p (next-single-property-change (point-at-bol) 'org-todo-head
+                                                nil (point-at-eol)))
+           (get-text-property p 'org-todo-head))))
+     ((not (member kwd org-todo-keywords-1))
+      (car org-todo-keywords-1))
+     (t (nth 2 (assoc kwd org-todo-kwd-alist))))))
+
+(defun org-fast-todo-selection ()
+  "Fast TODO keyword selection with single keys.
+Returns the new TODO keyword, or nil if no state change should occur."
+  (let* ((fulltable org-todo-key-alist)
+        (done-keywords org-done-keywords) ;; needed for the faces.
+        (maxlen (apply 'max (mapcar
+                             (lambda (x)
+                               (if (stringp (car x)) (string-width (car x)) 0))
+                             fulltable)))
+        (buf (current-buffer))
+        (expert nil)
+        (fwidth (+ maxlen 3 1 3))
+        (ncol (/ (- (window-width) 4) fwidth))
+        tg cnt e c char c1 c2 ntable tbl rtn
+        groups ingroup)
+    (save-window-excursion
+      (if expert
+         (set-buffer (get-buffer-create " *Org todo*"))
+;      (delete-other-windows)
+;      (split-window-vertically)
+       (org-switch-to-buffer-other-window (get-buffer-create " *Org tags*")))
+      (erase-buffer)
+      (org-set-local 'org-done-keywords done-keywords)
+      (setq tbl fulltable char ?a cnt 0)
+      (while (setq e (pop tbl))
+       (cond
+        ((equal e '(:startgroup))
+         (push '() groups) (setq ingroup t)
+         (when (not (= cnt 0))
+           (setq cnt 0)
+           (insert "\n"))
+         (insert "{ "))
+        ((equal e '(:endgroup))
+         (setq ingroup nil cnt 0)
+         (insert "}\n"))
+        (t
+         (setq tg (car e) c (cdr e))
+         (if ingroup (push tg (car groups)))
+         (setq tg (org-add-props tg nil 'face
+                                 (org-get-todo-face tg)))
+         (if (and (= cnt 0) (not ingroup)) (insert "  "))
+         (insert "[" c "] " tg (make-string
+                                (- fwidth 4 (length tg)) ?\ ))
+         (when (= (setq cnt (1+ cnt)) ncol)
+           (insert "\n")
+           (if ingroup (insert "  "))
+           (setq cnt 0)))))
+      (insert "\n")
+      (goto-char (point-min))
+      (if (and (not expert) (fboundp 'fit-window-to-buffer))
+         (fit-window-to-buffer))
+      (message "[a-z..]:Set [SPC]:clear")
+      (setq c (let ((inhibit-quit t)) (read-char-exclusive)))
+      (cond
+       ((or (= c ?\C-g)
+           (and (= c ?q) (not (rassoc c fulltable))))
+       (setq quit-flag t))
+       ((= c ?\ ) nil)
+       ((setq e (rassoc c fulltable) tg (car e))
+       tg)
+       (t (setq quit-flag t))))))
+
 (defun org-get-repeat ()
-  "Return the REPEAT statement of this entry."
+  "Check if tere is a deadline/schedule with repeater in this entry."
   (save-match-data
     (save-excursion
       (org-back-to-heading t)
@@ -11020,24 +13267,29 @@ For calling through lisp, arg is also interpreted in the following way:
 (defvar org-last-changed-timestamp)
 (defvar org-log-post-message)
 (defun org-auto-repeat-maybe ()
-  "Check if the current headline contains a REPEAT key.
-If yes, set TODO state back to what it was and change any SCHEDULED
-or DEADLINE times the new date.
+  "Check if the current headline contains a repeated deadline/schedule.
+If yes, set TODO state back to what it was and change the base date
+of repeating deadline/scheduled time stamps to new date.
 This function should be run in the `org-after-todo-state-change-hook'."
   ;; last-state is dynamically scoped into this function
-  (let ((repeat (org-get-repeat))
-       (whata '(("d" . day) ("m" . month) ("y" . year)))
-       (msg "Entry repeats: ")
-       (org-log-done)
-       re type n what start)
+  (let* ((repeat (org-get-repeat))
+        (aa (assoc last-state org-todo-kwd-alist))
+        (interpret (nth 1 aa))
+        (head (nth 2 aa))
+        (done-word (nth 3 aa))
+        (whata '(("d" . day) ("m" . month) ("y" . year)))
+        (msg "Entry repeats: ")
+        (org-log-done)
+        re type n what ts)
     (when repeat
-      (org-todo (if (eq 'org-todo-interpretation 'type)
-                   last-state
-                 (car org-todo-keywords)))
-      (unless (memq 'org-add-log-note (default-value 'post-command-hook))
+      (org-todo (if (eq interpret 'type) last-state head))
+      (when (and org-log-repeat
+                (not (memq 'org-add-log-note
+                           (default-value 'post-command-hook))))
        ;; Make sure a note is taken
        (let ((org-log-done '(done)))
-         (org-add-log-maybe 'done org-done-string 'findpos)))
+         (org-add-log-maybe 'done (or done-word (car org-done-keywords))
+                            'findpos)))
       (org-back-to-heading t)
       (org-add-planning-info nil nil 'closed)
       (setq re (concat "\\(" org-scheduled-time-regexp "\\)\\|\\("
@@ -11045,11 +13297,10 @@ This function should be run in the `org-after-todo-state-change-hook'."
       (while (re-search-forward
              re (save-excursion (outline-next-heading) (point)) t)
        (setq type (if (match-end 1) org-scheduled-string org-deadline-string)
-             start 0)
-       (while (string-match "\\([-+]?[0-9]+\\)\\([dwmy]\\)" repeat start)
-         (setq start (match-end 0)
-               n (string-to-number (match-string 1 repeat))
-               what (match-string 2 repeat))
+             ts (match-string (if (match-end 2) 2 4)))
+       (when (string-match "\\([-+]?[0-9]+\\)\\([dwmy]\\)" ts)
+         (setq n (string-to-number (match-string 1 ts))
+               what (match-string 2 ts))
          (if (equal what "w") (setq n (* n 7) what "d"))
          (org-timestamp-change n (cdr (assoc what whata))))
        (setq msg (concat msg type org-last-changed-timestamp " ")))
@@ -11062,32 +13313,43 @@ The tree will show the lines where the regexp matches, and all higher
 headlines above the match.
 With \\[universal-argument] prefix, also show the DONE entries.
 With a numeric prefix N, construct a sparse tree for the Nth element
-of `org-todo-keywords'."
+of `org-todo-keywords-1'."
   (interactive "P")
   (let ((case-fold-search nil)
        (kwd-re
         (cond ((null arg) org-not-done-regexp)
-              ((equal arg '(4)) org-todo-regexp)
-              ((<= (prefix-numeric-value arg) (length org-todo-keywords))
+              ((equal arg '(4))
+               (let ((kwd (completing-read "Keyword (or KWD1|KWD2|...): "
+                                           (mapcar 'list org-todo-keywords-1))))
+                 (concat "\\("
+                         (mapconcat 'identity (org-split-string kwd "|") "\\|")
+                         "\\)\\>")))
+              ((<= (prefix-numeric-value arg) (length org-todo-keywords-1))
                (regexp-quote (nth (1- (prefix-numeric-value arg))
-                                  org-todo-keywords)))
+                                  org-todo-keywords-1)))
               (t (error "Invalid prefix argument: %s" arg)))))
     (message "%d TODO entries found"
-            (org-occur (concat "^" outline-regexp " +" kwd-re )))))
+            (org-occur (concat "^" outline-regexp " *" kwd-re )))))
 
-(defun org-deadline ()
-  "Insert the DEADLINE: string to make a deadline.
-A timestamp is also inserted - use \\[org-timestamp-up] and \\[org-timestamp-down]
-to modify it to the correct date."
-  (interactive)
-  (org-add-planning-info 'deadline nil 'closed))
+(defun org-deadline (&optional remove)
+  "Insert the \"DEADLINE:\" string with a timestamp to make a deadline.
+With argument REMOVE, remove any deadline from the item."
+  (interactive "P")
+  (if remove
+      (progn
+       (org-add-planning-info nil nil 'deadline)
+       (message "Item no longer has a deadline."))
+    (org-add-planning-info 'deadline nil 'closed)))
 
-(defun org-schedule ()
-  "Insert the SCHEDULED: string to schedule a TODO item.
-A timestamp is also inserted - use \\[org-timestamp-up] and \\[org-timestamp-down]
-to modify it to the correct date."
-  (interactive)
-  (org-add-planning-info 'scheduled nil 'closed))
+(defun org-schedule (&optional remove)
+  "Insert the SCHEDULED: string with a timestamp to schedule a TODO item.
+With argument REMOVE, remove any scheduling date from the item."
+  (interactive "P")
+  (if remove
+      (progn
+       (org-add-planning-info nil nil 'scheduled)
+       (message "Item is no longer scheduled."))
+    (org-add-planning-info 'scheduled nil 'closed)))
 
 (defun org-add-planning-info (what &optional time &rest remove)
   "Insert new timestamp with keyword in the line directly after the headline.
@@ -11096,13 +13358,14 @@ If non is given, the user is prompted for a date.
 REMOVE indicates what kind of entries to remove.  An old WHAT entry will also
 be removed."
   (interactive)
-  (let (org-time-was-given)
+  (let (org-time-was-given org-end-time-was-given)
     (when what (setq time (or time (org-read-date nil 'to-time))))
     (when (and org-insert-labeled-timestamps-at-point
               (member what '(scheduled deadline)))
       (insert
        (if (eq what 'scheduled) org-scheduled-string org-deadline-string) " ")
-      (org-insert-time-stamp time org-time-was-given)
+      (org-insert-time-stamp time org-time-was-given
+                            nil nil nil (list org-end-time-was-given))
       (setq what nil))
     (save-excursion
       (save-restriction
@@ -11111,13 +13374,15 @@ be removed."
          (looking-at (concat outline-regexp "\\( *\\)[^\r\n]*"))
          (goto-char (match-end 1))
          (setq col (current-column))
-         (goto-char (1+ (match-end 0)))
+         (goto-char (match-end 0))
+         (if (eobp) (insert "\n"))
+         (forward-char 1)
          (if (and (not (looking-at outline-regexp))
                   (looking-at (concat "[^\r\n]*?" org-keyword-time-regexp
                                       "[^\r\n]*"))
                   (not (equal (match-string 1) org-clock-string)))
              (narrow-to-region (match-beginning 0) (match-end 0))
-           (insert "\n")
+           (insert-before-markers "\n")
            (backward-char 1)
            (narrow-to-region (point) (point))
            (indent-to-column col))
@@ -11143,9 +13408,12 @@ be removed."
                   ((eq what 'deadline) org-deadline-string)
                   ((eq what 'closed) org-closed-string))
             " ")
-           (org-insert-time-stamp time
-                                  (or org-time-was-given (eq what 'closed))
-                                  (eq what 'closed))
+           (setq ts (org-insert-time-stamp
+                     time
+                     (or org-time-was-given
+                         (and (eq what 'closed) org-log-done-with-time))
+                     (eq what 'closed)
+                     nil nil (list org-end-time-was-given)))
            (end-of-line 1))
          (goto-char (point-min))
          (widen)
@@ -11163,6 +13431,7 @@ be removed."
 The auto-repeater uses this.")
 
 (defun org-add-log-maybe (&optional purpose state findpos)
+  "Set up the post command hook to take a note."
   (save-excursion
     (when (and (listp org-log-done)
               (memq purpose org-log-done))
@@ -11171,12 +13440,24 @@ The auto-repeater uses this.")
        (looking-at (concat outline-regexp "\\( *\\)[^\r\n]*"
                            "\\(\n[^\r\n]*?" org-keyword-time-not-clock-regexp
                            "[^\r\n]*\\)?"))
-       (goto-char (match-end 0)))
+       (goto-char (match-end 0))
+       (unless org-log-states-order-reversed
+         (and (= (char-after) ?\n) (forward-char 1))
+         (org-skip-over-state-notes)
+         (skip-chars-backward " \t\n\r")))
       (move-marker org-log-note-marker (point))
       (setq org-log-note-purpose purpose)
       (setq org-log-note-state state)
       (add-hook 'post-command-hook 'org-add-log-note 'append))))
 
+(defun org-skip-over-state-notes ()
+  "Skip past the list of State notes in an entry."
+  (if (looking-at "\n[ \t]*- State") (forward-char 1))
+  (while (looking-at "[ \t]*- State")
+    (condition-case nil
+       (org-next-item)
+      (error (org-end-of-item)))))
+
 (defun org-add-log-note (&optional purpose)
   "Pop up a window for taking a note, and add this note later at point."
   (remove-hook 'post-command-hook 'org-add-log-note)
@@ -11185,10 +13466,10 @@ The auto-repeater uses this.")
   (move-marker org-log-note-return-to (point))
   (switch-to-buffer (marker-buffer org-log-note-marker))
   (goto-char org-log-note-marker)
-  (switch-to-buffer-other-window "*Org Note*")
+  (org-switch-to-buffer-other-window "*Org Note*")
   (erase-buffer)
   (let ((org-inhibit-startup t)) (org-mode))
-  (insert (format "# Insert note for %s, finish with C-c C-c.\n\n"
+  (insert (format "# Insert note for %s, finish with C-c C-c, or cancel with C-u C-c C-c.\n\n"
                  (cond
                   ((eq org-log-note-purpose 'clock-out) "stopped clock")
                   ((eq org-log-note-purpose 'done)  "closed todo item")
@@ -11221,17 +13502,22 @@ The auto-repeater uses this.")
                                "")))))
       (if lines (setq note (concat note " \\\\")))
       (push note lines))
-    (save-excursion
-      (set-buffer (marker-buffer org-log-note-marker))
+    (when current-prefix-arg (setq lines nil))
+    (when lines
       (save-excursion
-       (goto-char org-log-note-marker)
-       (move-marker org-log-note-marker nil)
-       (end-of-line 1)
-       (if (not (bolp)) (insert "\n")) (indent-relative nil)
-       (setq ind (concat (buffer-substring (point-at-bol) (point)) "    "))
-       (insert "  - " (pop lines))
-       (while lines
-         (insert "\n" ind (pop lines))))))
+       (set-buffer (marker-buffer org-log-note-marker))
+       (save-excursion
+         (goto-char org-log-note-marker)
+         (move-marker org-log-note-marker nil)
+         (end-of-line 1)
+         (if (not (bolp)) (insert "\n")) (indent-relative nil)
+         (insert "  - " (pop lines))
+         (org-indent-line-function)
+         (beginning-of-line 1)
+         (looking-at "[ \t]*")
+         (setq ind (concat (match-string 0) "  "))
+         (end-of-line 1)
+         (while lines (insert "\n" ind (pop lines)))))))
   (set-window-configuration org-log-note-window-configuration)
   (with-current-buffer (marker-buffer org-log-note-return-to)
     (goto-char org-log-note-return-to))
@@ -11264,7 +13550,8 @@ that the match should indeed be shown."
        (when (or (not callback)
                  (save-match-data (funcall callback)))
          (setq cnt (1+ cnt))
-         (org-highlight-new-match (match-beginning 0) (match-end 0))
+         (when org-highlight-sparse-tree-matches
+           (org-highlight-new-match (match-beginning 0) (match-end 0)))
          (org-show-context 'occur-tree))))
     (when org-remove-highlights-with-change
       (org-add-hook 'before-change-functions 'org-remove-occur-highlights
@@ -11342,7 +13629,7 @@ from the `before-change-functions' in the current buffer."
 
 ;;;; Priorities
 
-(defvar org-priority-regexp ".*?\\(\\[#\\([A-Z]\\)\\] ?\\)"
+(defvar org-priority-regexp ".*?\\(\\[#\\([A-Z0-9]\\)\\] ?\\)"
   "Regular expression matching the priority indicator.")
 
 (defvar org-remove-priority-next-time nil)
@@ -11359,7 +13646,7 @@ from the `before-change-functions' in the current buffer."
 
 (defun org-priority (&optional action)
   "Change the priority of an item by ARG.
-ACTION can be set, up, or down."
+ACTION can be `set', `up', `down', or a character."
   (interactive)
   (setq action (or action 'set))
   (let (current new news have remove)
@@ -11370,19 +13657,32 @@ ACTION can be set, up, or down."
                have t)
        (setq current org-default-priority))
       (cond
-       ((eq action 'set)
-       (message "Priority A-%c, SPC to remove: " org-lowest-priority)
-       (setq new (read-char-exclusive))
+       ((or (eq action 'set) (integerp action))
+       (if (integerp action)
+           (setq new action)
+         (message "Priority %c-%c, SPC to remove: " org-highest-priority org-lowest-priority)
+         (setq new (read-char-exclusive)))
+       (if (and (= (upcase org-highest-priority) org-highest-priority)
+                (= (upcase org-lowest-priority) org-lowest-priority))
+           (setq new (upcase new)))
        (cond ((equal new ?\ ) (setq remove t))
-             ((or (< (upcase new) ?A) (> (upcase new) org-lowest-priority))
+             ((or (< (upcase new) org-highest-priority) (> (upcase new) org-lowest-priority))
               (error "Priority must be between `%c' and `%c'"
-                     ?A org-lowest-priority))))
+                     org-highest-priority org-lowest-priority))))
        ((eq action 'up)
-       (setq new (1- current)))
+       (if (and (not have) (eq last-command this-command))
+           (setq new org-lowest-priority)
+         (setq new (if (and org-priority-start-cycle-with-default (not have))
+                       org-default-priority (1- current)))))
        ((eq action 'down)
-       (setq new (1+ current)))
+       (if (and (not have) (eq last-command this-command))
+           (setq new org-highest-priority)
+         (setq new (if (and org-priority-start-cycle-with-default (not have))
+                       org-default-priority (1+ current)))))
        (t (error "Invalid action")))
-      (setq new (min (max ?A (upcase new)) org-lowest-priority))
+      (if (or (< (upcase new) org-highest-priority)
+             (> (upcase new) org-lowest-priority))
+         (setq remove t))
       (setq news (format "%c" new))
       (if have
          (if remove
@@ -11397,6 +13697,7 @@ ACTION can be set, up, or down."
                (insert " [#" news "]"))
            (goto-char (match-beginning 3))
            (insert "[#" news "] ")))))
+    (org-preserve-lc (org-set-tags nil 'align))
     (if remove
        (message "Priority removed")
       (message "Priority of current item set to %s" news))))
@@ -11419,15 +13720,15 @@ evaluated, testing if a given set of tags qualifies a headline for
 inclusion.  When TODO-ONLY is non-nil, only lines with a TODO keyword
 are included in the output."
   (let* ((re (concat "[\n\r]" outline-regexp " *\\(\\<\\("
-                    (mapconcat 'regexp-quote
-                               (nreverse (cdr (reverse org-todo-keywords)))
-                               "\\|")
-                    "\\>\\)\\)? *\\(.*?\\)\\(:[A-Za-z_@0-9:]+:\\)?[ \t]*$"))
+                    (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
+                    (org-re
+                     "\\>\\)\\)? *\\(.*?\\)\\(:[[:alnum:]_@:]+:\\)?[ \t]*$")))
         (props (list 'face nil
                      'done-face 'org-done
                      'undone-face nil
                      'mouse-face 'highlight
                      'org-not-done-regexp org-not-done-regexp
+                     'org-todo-regexp org-todo-regexp
                      'keymap org-agenda-keymap
                      'help-echo
                      (format "mouse-2 or RET jump to org file %s"
@@ -11435,7 +13736,7 @@ are included in the output."
         (case-fold-search nil)
          lspos
         tags tags-list tags-alist (llast 0) rtn level category i txt
-        todo marker entry)
+        todo marker entry priority)
     (save-excursion
       (goto-char (point-min))
       (when (eq action 'sparse-tree) (org-overview))
@@ -11444,7 +13745,7 @@ are included in the output."
          (setq todo (if (match-end 1) (match-string 2))
                tags (if (match-end 4) (match-string 4)))
          (goto-char (setq lspos (1+ (match-beginning 0))))
-         (setq level (funcall outline-level)
+         (setq level (org-reduced-level (funcall outline-level))
                category (org-get-category))
          (setq i llast llast level)
          ;; remove tag lists from same and sublevels
@@ -11462,7 +13763,7 @@ are included in the output."
                (if org-use-tag-inheritance
                    (apply 'append (mapcar 'cdr tags-alist))
                  tags))
-         (when (and (or (not todo-only) todo)
+         (when (and (or (not todo-only) (member todo org-not-done-keywords))
                     (eval matcher)
                     (or (not org-agenda-skip-archived-trees)
                         (not (member org-archive-tag tags-list))))
@@ -11477,11 +13778,13 @@ are included in the output."
                          (if org-tags-match-list-sublevels
                              (make-string (1- level) ?.) "")
                          (org-get-heading))
-                        category tags-list))
+                        category tags-list)
+                   priority (org-get-priority txt))
              (goto-char lspos)
              (setq marker (org-agenda-new-marker))
              (org-add-props txt props
-               'org-marker marker 'org-hd-marker marker 'org-category category)
+               'org-marker marker 'org-hd-marker marker 'org-category category
+               'priority priority 'type "tagsmatch")
              (push txt rtn))
            ;; if we are to skip sublevels, jump to end of subtree
            (or org-tags-match-list-sublevels (org-end-of-subtree t))))))
@@ -11501,25 +13804,43 @@ also TODO lines."
   (interactive "P")
   (org-scan-tags 'sparse-tree (cdr (org-make-tags-matcher match)) todo-only))
 
+(defvar org-cached-props nil)
+(defun org-cached-entry-get (pom property)
+  (cdr (assoc property (or org-cached-props
+                          (setq org-cached-props
+                                (org-entry-properties pom))))))
+
+(defun org-global-tags-completion-table (&optional files)
+  "Return the list of all tags in all agenda buffer/files."
+  (save-excursion
+    (org-uniquify
+     (apply 'append
+           (mapcar
+            (lambda (file)
+              (set-buffer (find-file-noselect file))
+              (org-get-buffer-tags))
+            (if (and files (car files))
+                files
+              (org-agenda-files)))))))
+
 (defun org-make-tags-matcher (match)
   "Create the TAGS//TODO matcher form for the selection string MATCH."
   ;; todo-only is scoped dynamically into this function, and the function
   ;; may change it it the matcher asksk for it.
   (unless match
     ;; Get a new match request, with completion
-    (setq org-last-tags-completion-table
-         (or org-tag-alist
-             org-last-tags-completion-table))
-    (setq match (completing-read
-                "Match: " 'org-tags-completion-function nil nil nil
-                'org-tags-history)))
-
+    (let ((org-last-tags-completion-table
+          (org-global-tags-completion-table)))
+      (setq match (completing-read
+                  "Match: " 'org-tags-completion-function nil nil nil
+                  'org-tags-history))))
+  
   ;; Parse the string and create a lisp form
   (let ((match0 match)
-       (re "^&?\\([-+:]\\)?\\({[^}]+}\\|LEVEL=\\([0-9]+\\)\\|[A-Za-z_@0-9]+\\)")
+       (re (org-re "^&?\\([-+:]\\)?\\({[^}]+}\\|LEVEL=\\([0-9]+\\)\\|\\([[:alnum:]]+\\)=\\({[^}]+}\\|\"[^\"]+\"\\)\\|[[:alnum:]_@]+\\)"))
        minus tag mm
        tagsmatch todomatch tagsmatcher todomatcher kwd matcher
-       orterms term orlist re-p level-p)
+       orterms term orlist re-p level-p prop-p pn pv)
     (if (string-match "/+" match)
        ;; match contains also a todo-matching request
        (progn
@@ -11545,10 +13866,19 @@ also TODO lines."
                tag (match-string 2 term)
                re-p (equal (string-to-char tag) ?{)
                level-p (match-end 3)
+               prop-p (match-end 4)
                mm (cond
                    (re-p `(org-match-any-p ,(substring tag 1 -1) tags-list))
                    (level-p `(= level ,(string-to-number
                                         (match-string 3 term))))
+                   (prop-p
+                    (setq pn (match-string 4 term)
+                          pv (match-string 5 term)
+                          re-p (equal (string-to-char pv) ?{)
+                          pv (substring pv 1 -1))
+                    (if re-p
+                        `(string-match ,pv (org-cached-entry-get nil ,pn))
+                      `(equal ,pv (org-cached-entry-get nil ,pn))))
                    (t `(member ,(downcase tag) tags-list)))
                mm (if minus (list 'not mm) mm)
                term (substring term (match-end 0)))
@@ -11558,7 +13888,9 @@ also TODO lines."
                (car tagsmatcher))
              orlist)
        (setq tagsmatcher nil))
-      (setq tagsmatcher (if (> (length orlist) 1) (cons 'or orlist) (car orlist))))
+      (setq tagsmatcher (if (> (length orlist) 1) (cons 'or orlist) (car orlist)))
+      (setq tagsmatcher
+           (list 'progn '(setq org-cached-props nil) tagsmatcher)))
 
     ;; Make the todo matcher
     (if (or (not todomatch) (not (string-match "\\S-" todomatch)))
@@ -11599,18 +13931,43 @@ also TODO lines."
 (defvar org-tags-overlay (org-make-overlay 1 1))
 (org-detach-overlay org-tags-overlay)
 
+(defun org-align-tags-here (to-col)
+  ;; Assumes that this is a headline
+  (let ((pos (point)) (col (current-column)) tags)
+    (beginning-of-line 1)
+    (if        (and (looking-at (org-re ".*?\\([ \t]+\\)\\(:[[:alnum:]_@:]+:\\)[ \t]*$"))
+            (< pos (match-beginning 2)))
+       (progn
+         (setq tags (match-string 2))
+         (goto-char (match-beginning 1))
+         (insert " ")
+         (delete-region (point) (1+ (match-end 0)))
+         (backward-char 1)
+         (move-to-column
+          (max (1+ (current-column))
+               (1+ col)
+               (if (> to-col 0)
+                   to-col
+                 (- (abs to-col) (length tags))))
+          t)
+         (insert tags)
+         (move-to-column (min (current-column) col) t))
+      (goto-char pos))))
+
 (defun org-set-tags (&optional arg just-align)
   "Set the tags for the current headline.
 With prefix ARG, realign all tags in headings in the current buffer."
   (interactive "P")
   (let* ((re (concat "^" outline-regexp))
-        (current (org-get-tags))
+        (current (org-get-tags-string))
+        (col (current-column))
+        (org-setting-tags t)
         table current-tags inherited-tags ; computed below when needed
         tags p0 c0 c1 rpl)
     (if arg
        (save-excursion
          (goto-char (point-min))
-         (let (buffer-invisibility-spec)  ; Emacs 21 compatibility
+         (let ((buffer-invisibility-spec (org-inhibit-invisibility)))
            (while (re-search-forward re nil t)
              (org-set-tags nil t)
              (end-of-line 1)))
@@ -11629,37 +13986,84 @@ With prefix ARG, realign all tags in headings in the current buffer."
                (if (or (eq t org-use-fast-tag-selection)
                        (and org-use-fast-tag-selection
                             (delq nil (mapcar 'cdr table))))
-                   (org-fast-tag-selection current-tags inherited-tags table)
+                   (org-fast-tag-selection
+                    current-tags inherited-tags table
+                    (if org-fast-tag-selection-include-todo org-todo-key-alist))
                  (let ((org-add-colon-after-tag-completion t))
                    (org-trim
-                    (completing-read "Tags: " 'org-tags-completion-function
-                                     nil nil current 'org-tags-history))))))
+                    (org-without-partial-completion
+                     (completing-read "Tags: " 'org-tags-completion-function
+                                      nil nil current 'org-tags-history)))))))
        (while (string-match "[-+&]+" tags)
          ;; No boolean logic, just a list
          (setq tags (replace-match ":" t t tags))))
+      
       (if (string-match "\\`[\t ]*\\'" tags)
           (setq tags "")
        (unless (string-match ":$" tags) (setq tags (concat tags ":")))
        (unless (string-match "^:" tags) (setq tags (concat ":" tags))))
-
+      
       ;; Insert new tags at the correct column
       (beginning-of-line 1)
-      (if (re-search-forward
-          (concat "\\([ \t]*" (regexp-quote current) "\\)[ \t]*$")
-          (point-at-eol) t)
-         (progn
-           (if (equal tags "")
-               (setq rpl "")
-             (goto-char (match-beginning 0))
-             (setq c0 (current-column) p0 (point)
-                   c1 (max (1+ c0) (if (> org-tags-column 0)
-                                       org-tags-column
-                                     (- (- org-tags-column) (length tags))))
-                   rpl (concat (make-string (max 0 (- c1 c0)) ?\ ) tags)))
-           (replace-match rpl t t)
-           (and (not (featurep 'xemacs)) c0 (tabify p0 (point)))
-           tags)
-       (error "Tags alignment failed")))))
+      (cond
+       ((and (equal current "") (equal tags "")))
+       ((re-search-forward
+        (concat "\\([ \t]*" (regexp-quote current) "\\)[ \t]*$")
+        (point-at-eol) t)
+       (if (equal tags "")
+           (setq rpl "")
+         (goto-char (match-beginning 0))
+         (setq c0 (current-column) p0 (point)
+               c1 (max (1+ c0) (if (> org-tags-column 0)
+                                   org-tags-column
+                                 (- (- org-tags-column) (length tags))))
+               rpl (concat (make-string (max 0 (- c1 c0)) ?\ ) tags)))
+       (replace-match rpl t t)
+       (and (not (featurep 'xemacs)) c0 (tabify p0 (point)))
+       tags)
+       (t (error "Tags alignment failed")))
+      (move-to-column col)
+      (unless just-align
+       (run-hooks 'org-after-tags-change-hook)))))
+
+(defun org-change-tag-in-region (beg end tag off)
+  "Add or remove TAG for each entry in the region.
+This works in the agenda, and also in an org-mode buffer."
+  (interactive
+   (list (region-beginning) (region-end)
+        (let ((org-last-tags-completion-table
+               (if (org-mode-p)
+                   (org-get-buffer-tags)
+                 (org-global-tags-completion-table))))
+          (completing-read
+           "Tag: " 'org-tags-completion-function nil nil nil
+           'org-tags-history))
+        (progn
+          (message "[s]et or [r]emove? ")
+          (equal (read-char-exclusive) ?r))))
+  (if (fboundp 'deactivate-mark) (deactivate-mark))
+  (let ((agendap (equal major-mode 'org-agenda-mode))
+       l1 l2 m buf pos newhead (cnt 0))
+    (goto-char end)
+    (setq l2 (1- (org-current-line)))
+    (goto-char beg)
+    (setq l1 (org-current-line))
+    (loop for l from l1 to l2 do
+         (goto-line l)
+         (setq m (get-text-property (point) 'org-hd-marker))
+         (when (or (and (org-mode-p) (org-on-heading-p))
+                   (and agendap m))
+           (setq buf (if agendap (marker-buffer m) (current-buffer))
+                 pos (if agendap m (point)))
+           (with-current-buffer buf
+             (save-excursion
+               (save-restriction
+                 (goto-char pos)
+                 (setq cnt (1+ cnt))
+                 (org-toggle-tag tag (if off 'off 'on))
+                 (setq newhead (org-get-heading)))))
+           (and agendap (org-agenda-change-all-lines newhead m))))
+    (message "Tag :%s: %s in %d headings" tag (if off "removed" "set") cnt)))
 
 (defun org-tags-completion-function (string predicate &optional flag)
   (let (s1 s2 rtn (ctable org-last-tags-completion-table)
@@ -11673,11 +14077,12 @@ With prefix ARG, realign all tags in headings in the current buffer."
       ;; try completion
       (setq rtn (try-completion s2 ctable confirm))
       (if (stringp rtn)
-         (concat s1 s2 (substring rtn (length s2))
-                 (if (and org-add-colon-after-tag-completion
-                          (assoc rtn ctable))
-                     ":" "")))
-      )
+         (setq rtn
+               (concat s1 s2 (substring rtn (length s2))
+                       (if (and org-add-colon-after-tag-completion
+                                (assoc rtn ctable))
+                           ":" ""))))
+      rtn)
      ((eq flag t)
       ;; all-completions
       (all-completions s2 ctable confirm)
@@ -11711,31 +14116,35 @@ With prefix ARG, realign all tags in headings in the current buffer."
       (put-text-property 0 (length s) 'face '(secondary-selection org-tag) s)
       (org-overlay-display org-tags-overlay (concat prefix s)))))
 
-(defun org-fast-tag-selection (current inherited table)
+(defun org-fast-tag-selection (current inherited table &optional todo-table)
   "Fast tag selection with single keys.
 CURRENT is the current list of tags in the headline, INHERITED is the
 list of inherited tags, and TABLE is an alist of tags and corresponding keys,
-possibly with grouping information.
+possibly with grouping information.  TODO-TABLE is a similar table with
+TODO keywords, should these have keys assigned to them.
 If the keys are nil, a-z are automatically assigned.
 Returns the new tags string, or nil to not change the current settings."
-  (let* ((maxlen (apply 'max (mapcar
+  (let* ((fulltable (append table todo-table))
+        (maxlen (apply 'max (mapcar
                              (lambda (x)
                                (if (stringp (car x)) (string-width (car x)) 0))
-                             table)))
+                             fulltable)))
         (buf (current-buffer))
         (expert (eq org-fast-tag-selection-single-key 'expert))
         (buffer-tags nil)
         (fwidth (+ maxlen 3 1 3))
         (ncol (/ (- (window-width) 4) fwidth))
         (i-face 'org-done)
-        (c-face 'org-tag)
+        (c-face 'org-todo)
         tg cnt e c char c1 c2 ntable tbl rtn
         ov-start ov-end ov-prefix
         (exit-after-next org-fast-tag-selection-single-key)
+        (done-keywords org-done-keywords)
         groups ingroup)
     (save-excursion
       (beginning-of-line 1)
-      (if (looking-at ".*[ \t]\\(:[A-Za-z_@0-9:]+:\\)[ \t]*\\(\r\\|$\\)")
+      (if (looking-at
+          (org-re ".*[ \t]\\(:[[:alnum:]_@:]+:\\)[ \t]*$"))
          (setq ov-start (match-beginning 1)
                ov-end (match-end 1)
                ov-prefix "")
@@ -11754,13 +14163,14 @@ Returns the new tags string, or nil to not change the current settings."
          (set-buffer (get-buffer-create " *Org tags*"))
        (delete-other-windows)
        (split-window-vertically)
-       (switch-to-buffer-other-window (get-buffer-create " *Org tags*")))
+       (org-switch-to-buffer-other-window (get-buffer-create " *Org tags*")))
       (erase-buffer)
+      (org-set-local 'org-done-keywords done-keywords)
       (org-fast-tag-insert "Inherited" inherited i-face "\n")
       (org-fast-tag-insert "Current" current c-face "\n\n")
       (org-fast-tag-show-exit exit-after-next)
       (org-set-current-tags-overlay current ov-prefix)
-      (setq tbl table char ?a cnt 0)
+      (setq tbl fulltable char ?a cnt 0)
       (while (setq e (pop tbl))
        (cond
         ((equal e '(:startgroup))
@@ -11788,6 +14198,8 @@ Returns the new tags string, or nil to not change the current settings."
          (if ingroup (push tg (car groups)))
          (setq tg (org-add-props tg nil 'face
                                  (cond
+                                  ((not (assoc tg table))
+                                   (org-get-todo-face tg))
                                   ((member tg current) c-face)
                                   ((member tg inherited) i-face)
                                   (t nil))))
@@ -11824,7 +14236,7 @@ Returns the new tags string, or nil to not change the current settings."
                    (setq expert nil)
                    (delete-other-windows)
                    (split-window-vertically)
-                   (switch-to-buffer-other-window " *Org tags*")
+                   (org-switch-to-buffer-other-window " *Org tags*")
                    (and (fboundp 'fit-window-to-buffer)
                         (fit-window-to-buffer))))
                 ((or (= c ?\C-g)
@@ -11848,14 +14260,18 @@ Returns the new tags string, or nil to not change the current settings."
                        (setq current (delete tg current))
                      (push tg current)))
                  (if exit-after-next (setq exit-after-next 'now)))
+                ((setq e (rassoc c todo-table) tg (car e))
+                 (with-current-buffer buf
+                   (save-excursion (org-todo tg)))
+                 (if exit-after-next (setq exit-after-next 'now)))
                 ((setq e (rassoc c ntable) tg (car e))
                  (if (member tg current)
                      (setq current (delete tg current))
                    (loop for g in groups do
                          (if (member tg g)
-                             (mapcar (lambda (x)
-                                       (setq current (delete x current)))
-                                     g)))
+                             (mapc (lambda (x)
+                                     (setq current (delete x current)))
+                                   g)))
                    (push tg current))
                  (if exit-after-next (setq exit-after-next 'now))))
 
@@ -11870,153 +14286,1360 @@ Returns the new tags string, or nil to not change the current settings."
                (delete-region (point) (point-at-eol))
                (org-fast-tag-insert "Current" current c-face)
                (org-set-current-tags-overlay current ov-prefix)
-               (while (re-search-forward "\\[.\\] \\([a-zA-Z0-9_@]+\\)" nil t)
+               (while (re-search-forward
+                       (org-re "\\[.\\] \\([[:alnum:]_@]+\\)") nil t)
                  (setq tg (match-string 1))
-                 (add-text-properties (match-beginning 1) (match-end 1)
-                                      (list 'face
-                                            (cond
-                                             ((member tg current) c-face)
-                                             ((member tg inherited) i-face)
-                                             (t nil)))))
+                 (add-text-properties
+                  (match-beginning 1) (match-end 1)
+                  (list 'face
+                        (cond
+                         ((member tg current) c-face)
+                         ((member tg inherited) i-face)
+                         (t (get-text-property (match-beginning 1) 'face))))))
                (goto-char (point-min)))))
       (org-detach-overlay org-tags-overlay)
       (if rtn
          (mapconcat 'identity current ":")
        nil))))
 
-(defun org-get-tags ()
+(defun org-get-tags-string ()
   "Get the TAGS string in the current headline."
   (unless (org-on-heading-p t)
     (error "Not on a heading"))
   (save-excursion
     (beginning-of-line 1)
-    (if (looking-at ".*[ \t]\\(:[A-Za-z_@0-9:]+:\\)[ \t]*\\(\r\\|$\\)")
+    (if (looking-at (org-re ".*[ \t]\\(:[[:alnum:]_@:]+:\\)[ \t]*$"))
        (org-match-string-no-properties 1)
       "")))
 
+(defun org-get-tags ()
+  "Get the list of tags specified in the current headline."
+  (org-split-string (org-get-tags-string) ":"))
+
 (defun org-get-buffer-tags ()
   "Get a table of all tags used in the buffer, for completion."
   (let (tags)
     (save-excursion
       (goto-char (point-min))
-      (while (re-search-forward "[ \t]:\\([A-Za-z_@0-9:]+\\):[ \t\r\n]" nil t)
-       (mapc (lambda (x) (add-to-list 'tags x))
-             (org-split-string (org-match-string-no-properties 1) ":"))))
+      (while (re-search-forward 
+             (org-re "[ \t]:\\([[:alnum:]_@:]+\\):[ \t\r\n]") nil t)
+       (when (equal (char-after (point-at-bol 0)) ?*)
+         (mapc (lambda (x) (add-to-list 'tags x))
+               (org-split-string (org-match-string-no-properties 1) ":")))))
     (mapcar 'list tags)))
 
-;;;; Timestamps
 
-(defvar org-last-changed-timestamp nil)
-(defvar org-time-was-given) ; dynamically scoped parameter
-(defvar org-ts-what) ; dynamically scoped parameter
+;;;; Properties
 
-(defun org-time-stamp (arg)
-  "Prompt for a date/time and insert a time stamp.
-If the user specifies a time like HH:MM, or if this command is called
-with a prefix argument, the time stamp will contain date and time.
-Otherwise, only the date will be included.  All parts of a date not
-specified by the user will be filled in from the current date/time.
-So if you press just return without typing anything, the time stamp
-will represent the current date/time.  If there is already a timestamp
-at the cursor, it will be modified."
-  (interactive "P")
-  (let (org-time-was-given time)
-    (cond
-     ((and (org-at-timestamp-p)
-          (eq last-command 'org-time-stamp)
-          (eq this-command 'org-time-stamp))
-      (insert "--")
-      (setq time (let ((this-command this-command))
-                 (org-read-date arg 'totime)))
-      (org-insert-time-stamp time (or org-time-was-given arg)))
-     ((org-at-timestamp-p)
-      (setq time (let ((this-command this-command))
-                  (org-read-date arg 'totime)))
-      (when (org-at-timestamp-p) ; just to get the match data
-       (replace-match "")
-       (setq org-last-changed-timestamp
-             (org-insert-time-stamp time (or org-time-was-given arg))))
-      (message "Timestamp updated"))
-     (t
-      (setq time (let ((this-command this-command))
-                  (org-read-date arg 'totime)))
-      (org-insert-time-stamp time (or org-time-was-given arg))))))
+;;; Setting and retrieving properties
 
-(defun org-time-stamp-inactive (&optional arg)
-  "Insert an inactive time stamp.
-An inactive time stamp is enclosed in square brackets instead of angle
-brackets.  It is inactive in the sense that it does not trigger agenda entries,
-does not link to the calendar and cannot be changed with the S-cursor keys.
-So these are more for recording a certain time/date."
-  (interactive "P")
-  (let (org-time-was-given time)
-    (setq time (org-read-date arg 'totime))
-    (org-insert-time-stamp time (or org-time-was-given arg) 'inactive)))
+(defconst org-special-properties
+  '("TODO" "TAGS" "ALLTAGS" "DEADLINE" "SCHEDULED" "CLOCK" "PRIORITY")
+  "The special properties valid in Org-mode.
 
-(defvar org-date-ovl (org-make-overlay 1 1))
-(org-overlay-put org-date-ovl 'face 'org-warning)
-(org-detach-overlay org-date-ovl)
+These are properties that are not defined in the property drawer,
+but in some other way.")
 
-(defvar org-ans1) ; dynamically scoped parameter
-(defvar org-ans2) ; dynamically scoped parameter
+(defconst org-property-start-re "^[ \t]*:PROPERTIES:[ \t]*$"
+  "Regular expression matching the first line of a property drawer.")
 
-(defun org-read-date (&optional with-time to-time from-string prompt)
-  "Read a date and make things smooth for the user.
-The prompt will suggest to enter an ISO date, but you can also enter anything
-which will at least partially be understood by `parse-time-string'.
-Unrecognized parts of the date will default to the current day, month, year,
-hour and minute.  For example,
-  3-2-5         --> 2003-02-05
-  feb 15        --> currentyear-02-15
-  sep 12 9      --> 2009-09-12
-  12:45         --> today 12:45
-  22 sept 0:34  --> currentyear-09-22 0:34
-  12            --> currentyear-currentmonth-12
-  Fri           --> nearest Friday (today or later)
-  +4            --> four days from today (only if +N is the only thing given)
-  etc.
-The function understands only English month and weekday abbreviations,
-but this can be configured with the variables `parse-time-months' and
-`parse-time-weekdays'.
+(defconst org-property-end-re "^[ \t]*:END:[ \t]*$"
+  "Regular expression matching the first line of a property drawer.")
 
-While prompting, a calendar is popped up - you can also select the
-date with the mouse (button 1).  The calendar shows a period of three
-months.  To scroll it to other months, use the keys `>' and `<'.
-If you don't like the calendar, turn it off with
-       \(setq org-popup-calendar-for-date-prompt nil)
+(defun org-property-action ()
+  "Do an action on properties."
+  (interactive)
+  (let (c prop)
+    (org-at-property-p)
+    (setq prop (match-string 2))
+    (message "Property Action:  [s]et  [d]elete  [D]elete globally  [c]ompute")
+    (setq c (read-char-exclusive))
+    (cond
+     ((equal c ?s)
+      (call-interactively 'org-set-property))
+     ((equal c ?d)
+      (call-interactively 'org-delete-property))
+     ((equal c ?D)
+      (call-interactively 'org-delete-property-globally))
+     ((equal c ?c)
+      (call-interactively 'org-compute-property-at-point))
+     (t (error "No such property action %c" c)))))
+
+(defun org-at-property-p ()
+  "Is the cursor in a property line?"
+  ;; FIXME: Does not check if we are actually in the drawer.
+  ;; FIXME: also returns true on any drawers.....
+  ;; This is used by C-c C-c for property action.
+  (save-excursion
+    (beginning-of-line 1)
+    (looking-at (org-re "^[ \t]*\\(:\\([[:alpha:]][[:alnum:]_-]*\\):\\)[ \t]*\\(.*\\)"))))
 
-With optional argument TO-TIME, the date will immediately be converted
-to an internal time.
-With an optional argument WITH-TIME, the prompt will suggest to also
-insert a time.  Note that when WITH-TIME is not set, you can still
-enter a time, and this function will inform the calling routine about
-this change.  The calling routine may then choose to change the format
-used to insert the time stamp into the buffer to include the time."
+(defmacro org-with-point-at (pom &rest body)
+  "Move to buffer and point of point-or-marker POM for the duration of BODY."
+  (declare (indent 1) (debug t))
+  `(save-excursion
+     (if (markerp pom) (set-buffer (marker-buffer pom)))
+     (save-excursion
+       (goto-char (or pom (point)))
+       ,@body)))
+
+(defun org-get-property-block (&optional beg end force)
+  "Return the (beg . end) range of the body of the property drawer.
+BEG and END can be beginning and end of subtree, if not given
+they will be found.
+If the drawer does not exist and FORCE is non-nil, create the drawer."
+  (catch 'exit
+    (save-excursion
+      (let* ((beg (or beg (progn (org-back-to-heading t) (point))))
+            (end (or end (progn (outline-next-heading) (point)))))
+       (goto-char beg)
+       (if (re-search-forward org-property-start-re end t)
+           (setq beg (1+ (match-end 0)))
+         (if force
+             (save-excursion
+               (org-insert-property-drawer)
+               (setq end (progn (outline-next-heading) (point))))
+           (throw 'exit nil))
+         (goto-char beg)
+         (if (re-search-forward org-property-start-re end t)
+             (setq beg (1+ (match-end 0)))))
+       (if (re-search-forward org-property-end-re end t)
+           (setq end (match-beginning 0))
+         (or force (throw 'exit nil))
+         (goto-char beg)
+         (setq end beg)
+         (org-indent-line-function)
+         (insert ":END:\n"))
+       (cons beg end)))))
+
+(defun org-entry-properties (&optional pom which)
+  "Get all properties of the entry at point-or-marker POM.
+This includes the TODO keyword, the tags, time strings for deadline,
+scheduled, and clocking, and any additional properties defined in the
+entry.  The return value is an alist, keys may occur multiple times
+if the property key was used several times.
+POM may also be nil, in which case the current entry is used.
+If WHICH is nil or `all', get all properties.  If WHICH is
+`special' or `standard', only get that subclass."
+  (setq which (or which 'all))
+  (org-with-point-at pom
+    (let ((clockstr (substring org-clock-string 0 -1))
+         (excluded '("TODO" "TAGS" "ALLTAGS" "PRIORITY"))
+         beg end range props sum-props key value)
+      (save-excursion
+       (when (condition-case nil (org-back-to-heading t) (error nil))
+         (setq beg (point))
+         (setq sum-props (get-text-property (point) 'org-summaries))
+         (outline-next-heading)
+         (setq end (point))
+         (when (memq which '(all special))
+           ;; Get the special properties, like TODO and tags
+           (goto-char beg)
+           (when (and (looking-at org-todo-line-regexp) (match-end 2))
+             (push (cons "TODO" (org-match-string-no-properties 2)) props))
+           (when (looking-at org-priority-regexp)
+             (push (cons "PRIORITY" (org-match-string-no-properties 2)) props))
+           (when (and (setq value (org-get-tags-string))
+                      (string-match "\\S-" value))
+             (push (cons "TAGS" value) props))
+           (when (setq value (org-get-tags-at))
+             (push (cons "ALLTAGS" (concat ":" (mapconcat 'identity value ":") ":"))
+                   props))
+           (while (re-search-forward org-keyword-time-regexp end t)
+             (setq key (substring (org-match-string-no-properties 1) 0 -1))
+             (unless (member key excluded) (push key excluded))
+             (push (cons key
+                         (if (equal key clockstr)
+                             (org-no-properties
+                              (org-trim
+                               (buffer-substring
+                                (match-beginning 2) (point-at-eol))))
+                           (org-match-string-no-properties 2)))
+                   props)))
+         (when (memq which '(all standard))
+           ;; Get the standard properties, like :PORP: ...
+           (setq range (org-get-property-block beg end))
+           (when range
+             (goto-char (car range))
+             (while (re-search-forward
+                     (org-re "^[ \t]*:\\([[:alpha:]][[:alnum:]_-]*\\):[ \t]*\\(\\S-.*\\)?")
+                     (cdr range) t)
+               (setq key (org-match-string-no-properties 1)
+                     value (org-trim (or (org-match-string-no-properties 2) "")))
+               (unless (member key excluded)
+                 (push (cons key (or value "")) props)))))
+         (append sum-props (nreverse props)))))))
+  
+(defun org-entry-get (pom property &optional inherit)
+  "Get value of PROPERTY for entry at point-or-marker POM.
+If INHERIT is non-nil and the entry does not have the property,
+then also check higher levels of the hierarchy.
+If the property is present but empty, the return value is the empty string.
+If the property is not present at all, nil is returned."
+  (org-with-point-at pom
+    (if inherit
+       (org-entry-get-with-inheritance property)
+      (if (member property org-special-properties)
+         ;; We need a special property.  Use brute force, get all properties.
+         (cdr (assoc property (org-entry-properties nil 'special)))
+       (let ((range (org-get-property-block)))
+         (if (and range
+                  (goto-char (car range))
+                  (re-search-forward
+                   (concat "^[ \t]*:" property ":[ \t]*\\(.*\\S-\\)?")
+                   (cdr range) t))
+             ;; Found the property, return it.
+             (if (match-end 1)
+                 (org-match-string-no-properties 1)
+               "")))))))
+
+(defun org-entry-delete (pom property)
+  "Delete the property PROPERTY from entry at point-or-marker POM."
+  (org-with-point-at pom
+    (if (member property org-special-properties)
+       nil ; cannot delete these properties.
+      (let ((range (org-get-property-block)))
+       (if (and range
+                (goto-char (car range))
+                (re-search-forward
+                 (concat "^[ \t]*:" property ":[ \t]*\\(.*\\S-\\)")
+                 (cdr range) t))
+           (progn
+             (delete-region (match-beginning 0) (1+ (point-at-eol)))
+             t)
+         nil)))))
+
+(defvar org-entry-property-inherited-from (make-marker))
+
+(defun org-entry-get-with-inheritance (property)
+  "Get entry property, and search higher levels if not present."
+  (let (tmp)
+    (save-excursion
+      (catch 'ex
+       (while t
+         (when (setq tmp (org-entry-get nil property))
+           (org-back-to-heading t)
+           (move-marker org-entry-property-inherited-from (point))
+           (throw 'ex tmp))
+         (or (org-up-heading-safe) (throw 'ex nil)))))
+    (or tmp (cdr (assoc property org-local-properties))
+       (cdr (assoc property org-global-properties)))))
+
+(defun org-entry-put (pom property value)
+  "Set PROPERTY to VALUE for entry at point-or-marker POM."
+  (org-with-point-at pom
+    (org-back-to-heading t)
+    (let ((beg (point)) (end (save-excursion (outline-next-heading) (point)))
+         range)
+      (cond
+       ((equal property "TODO")
+       (when (and (stringp value) (string-match "\\S-" value)
+                  (not (member value org-todo-keywords-1)))
+         (error "\"%s\" is not a valid TODO state" value))
+       (if (or (not value)
+               (not (string-match "\\S-" value)))
+           (setq value 'none))
+       (org-todo value)
+       (org-set-tags nil 'align))
+       ((equal property "PRIORITY")
+       (org-priority (if (and value (stringp value) (string-match "\\S-" value))
+                              (string-to-char value) ?\ ))
+       (org-set-tags nil 'align))
+       ((equal property "SCHEDULED")
+       (if (re-search-forward org-scheduled-time-regexp end t)
+           (cond
+            ((eq value 'earlier) (org-timestamp-change -1 'day))
+            ((eq value 'later) (org-timestamp-change 1 'day))
+            (t (call-interactively 'org-schedule)))
+         (call-interactively 'org-schedule)))
+       ((equal property "DEADLINE")
+       (if (re-search-forward org-deadline-time-regexp end t)
+           (cond
+            ((eq value 'earlier) (org-timestamp-change -1 'day))
+            ((eq value 'later) (org-timestamp-change 1 'day))
+            (t (call-interactively 'org-deadline)))
+         (call-interactively 'org-deadline)))
+       ((member property org-special-properties)
+       (error "The %s property can not yet be set with `org-entry-put'"
+              property))
+       (t ; a non-special property
+       (let ((buffer-invisibility-spec (org-inhibit-invisibility))) ; Emacs 21
+         (setq range (org-get-property-block beg end 'force))
+         (goto-char (car range))
+         (if (re-search-forward
+              (concat "^[ \t]*:" property ":\\(.*\\)") (cdr range) t)
+             (progn
+               (delete-region (match-beginning 1) (match-end 1))
+               (goto-char (match-beginning 1)))
+           (goto-char (cdr range))
+           (insert "\n")
+           (backward-char 1)
+           (org-indent-line-function)
+           (insert ":" property ":"))
+         (and value (insert " " value))
+         (org-indent-line-function)))))))
+
+(defun org-buffer-property-keys (&optional include-specials include-defaults)
+  "Get all property keys in the current buffer.
+With INCLUDE-SPECIALS, also list the special properties that relect things
+like tags and TODO state.
+With INCLUDE-DEFAULTS, also include properties that has special meaning
+internally: ARCHIVE, CATEGORY, SUMMARY, DESCRIPTION, LOCATION, and LOGGING."
+  (let (rtn range)
+    (save-excursion
+      (save-restriction
+       (widen)
+       (goto-char (point-min))
+       (while (re-search-forward org-property-start-re nil t)
+         (setq range (org-get-property-block))
+         (goto-char (car range))
+         (while (re-search-forward
+                 (org-re "^[ \t]*:\\([[:alnum:]_-]+\\):")
+                 (cdr range) t)
+           (add-to-list 'rtn (org-match-string-no-properties 1)))
+         (outline-next-heading))))
+    (when include-specials
+      (setq rtn (append org-special-properties rtn)))
+    (when include-defaults
+      (add-to-list rtn "CATEGORY")
+      (add-to-list rtn "ARCHIVE"))
+    (sort rtn (lambda (a b) (string< (upcase a) (upcase b))))))
+
+(defun org-insert-property-drawer ()
+  "Insert a property drawer into the current entry."
+  (interactive)
+  (org-back-to-heading t)
+  (let ((beg (point))
+       (re (concat "^[ \t]*" org-keyword-time-regexp))
+       end hiddenp)
+    (outline-next-heading)
+    (setq end (point))
+    (goto-char beg)
+    (while (re-search-forward re end t))
+    (setq hiddenp (org-invisible-p))
+    (end-of-line 1)
+    (and (= (char-after) ?\n) (forward-char 1))
+    (org-skip-over-state-notes)
+    (end-of-line 0)
+    (insert "\n:PROPERTIES:\n:END:")
+    (beginning-of-line 0)
+    (org-indent-line-function)
+    (beginning-of-line 2)
+    (org-indent-line-function)
+    (beginning-of-line 0)
+    (if hiddenp
+       (save-excursion
+         (org-back-to-heading t)
+         (hide-entry))
+      (org-flag-drawer t))))
+
+(defun org-set-property (property value)
+  "In the current entry, set PROPERTY to VALUE."
+  (interactive
+   (let* ((prop        (completing-read "Property: " 
+                                (mapcar 'list (org-buffer-property-keys))))
+         (cur (org-entry-get nil prop))
+         (allowed (org-property-get-allowed-values nil prop 'table))
+         (val (if allowed
+                  (completing-read "Value: " allowed nil 'req-match)
+                (read-string
+                 (concat "Value" (if (and cur (string-match "\\S-" cur))
+                                     (concat "[" cur "]") "")
+                         ": ")
+                 "" cur))))
+     (list prop (if (equal val "") cur val))))
+  (unless (equal (org-entry-get nil property) value)
+    (org-entry-put nil property value)))
+
+(defun org-delete-property (property)
+  "In the current entry, delete PROPERTY."
+  (interactive
+   (let* ((prop (completing-read
+                "Property: " (org-entry-properties nil 'standard))))
+     (list prop)))
+  (message (concat "Property " property 
+                  (if (org-entry-delete nil property)
+                      " deleted"
+                    " was not present in the entry"))))
+
+(defun org-delete-property-globally (property)
+  "Remove PROPERTY globally, from all entries."
+  (interactive
+   (let* ((prop (completing-read
+                "Globally remove property: " 
+                (mapcar 'list (org-buffer-property-keys)))))
+     (list prop)))
+  (save-excursion
+    (save-restriction
+      (widen)
+      (goto-char (point-min))
+      (let ((cnt 0))
+       (while (re-search-forward
+               (concat "^[ \t]*:" (regexp-quote property) ":.*\n?")
+               nil t)
+         (setq cnt (1+ cnt))
+         (replace-match ""))
+       (message "Property \"%s\" removed from %d entries" property cnt)))))
+
+(defvar org-columns-current-fmt-compiled) ; defined below
+
+(defun org-compute-property-at-point ()
+  "Compute the property at point.
+This looks for an enclosing column format, extracts the operator and
+then applies it to the proerty in the column format's scope."
+  (interactive)
+  (unless (org-at-property-p)
+    (error "Not at a property"))
+  (let ((prop (org-match-string-no-properties 2)))
+    (org-columns-get-format-and-top-level)
+    (unless (nth 3 (assoc prop org-columns-current-fmt-compiled))
+      (error "No operator defined for property %s" prop))
+    (org-columns-compute prop)))
+
+(defun org-property-get-allowed-values (pom property &optional table)
+  "Get allowed values for the property PROPERTY.
+When TABLE is non-nil, return an alist that can directly be used for
+completion."
+  (let (vals)
+    (cond
+     ((equal property "TODO")
+      (setq vals (org-with-point-at pom 
+                  (append org-todo-keywords-1 '("")))))
+     ((equal property "PRIORITY")
+      (let ((n org-lowest-priority))
+       (while (>= n org-highest-priority)
+         (push (char-to-string n) vals)
+         (setq n (1- n)))))
+     ((member property org-special-properties))
+     (t
+      (setq vals (org-entry-get pom (concat property "_ALL") 'inherit))
+           
+      (when (and vals (string-match "\\S-" vals))
+       (setq vals (car (read-from-string (concat "(" vals ")"))))
+       (setq vals (mapcar (lambda (x)
+                            (cond ((stringp x) x)
+                                  ((numberp x) (number-to-string x))
+                                  ((symbolp x) (symbol-name x))
+                                  (t "???")))
+                          vals)))))
+    (if table (mapcar 'list vals) vals)))
+
+(defun org-property-previous-allowed-value (&optional previous)
+  "Switch to the next allowed value for this property."
+  (interactive)
+  (org-property-next-allowed-value t))
+
+(defun org-property-next-allowed-value (&optional previous)
+  "Switch to the next allowed value for this property."
+  (interactive)
+  (unless (org-at-property-p)
+    (error "Not at a property"))
+  (let* ((key (match-string 2))
+        (value (match-string 3))
+        (allowed (or (org-property-get-allowed-values (point) key)
+                     (and (member value  '("[ ]" "[-]" "[X]"))
+                          '("[ ]" "[X]"))))
+        nval)
+    (unless allowed
+      (error "Allowed values for this property have not been defined"))
+    (if previous (setq allowed (reverse allowed)))
+    (if (member value allowed)
+       (setq nval (car (cdr (member value allowed)))))
+    (setq nval (or nval (car allowed)))
+    (if (equal nval value)
+       (error "Only one allowed value for this property"))
+    (org-at-property-p)
+    (replace-match (concat " :" key ": " nval) t t)
+    (org-indent-line-function)
+    (beginning-of-line 1)
+    (skip-chars-forward " \t")))
+
+;;; Column View
+
+(defvar org-columns-overlays nil
+  "Holds the list of current column overlays.")
+
+(defvar org-columns-current-fmt nil
+  "Local variable, holds the currently active column format.")
+(defvar org-columns-current-fmt-compiled nil
+  "Local variable, holds the currently active column format.
+This is the compiled version of the format.")
+(defvar org-columns-current-maxwidths nil
+  "Loval variable, holds the currently active maximum column widths.")
+(defvar org-columns-begin-marker (make-marker)
+  "Points to the position where last a column creation command was called.")
+(defvar org-columns-top-level-marker (make-marker)
+  "Points to the position where current columns region starts.")
+
+(defvar org-columns-map (make-sparse-keymap)
+  "The keymap valid in column display.")
+
+(defun org-columns-content ()
+  "Switch to contents view while in columns view."
+  (interactive)
+  (org-overview)
+  (org-content))
+
+(org-defkey org-columns-map "c" 'org-columns-content)
+(org-defkey org-columns-map "o" 'org-overview)
+(org-defkey org-columns-map "e" 'org-columns-edit-value)
+(org-defkey org-columns-map "v" 'org-columns-show-value)
+(org-defkey org-columns-map "q" 'org-columns-quit)
+(org-defkey org-columns-map "r" 'org-columns-redo)
+(org-defkey org-columns-map [left] 'backward-char)
+(org-defkey org-columns-map "a" 'org-columns-edit-allowed)
+(org-defkey org-columns-map "s" 'org-columns-edit-attributes)
+(org-defkey org-columns-map [right] 'forward-char)
+(org-defkey org-columns-map [right] (lambda () (interactive) (goto-char (1+ (point)))))
+(org-defkey org-columns-map [(shift right)] 'org-columns-next-allowed-value)
+(org-defkey org-columns-map "\C-c\C-c" 'org-columns-next-allowed-value)
+(org-defkey org-columns-map "n" 'org-columns-next-allowed-value)
+(org-defkey org-columns-map [(shift left)] 'org-columns-previous-allowed-value)
+(org-defkey org-columns-map "p" 'org-columns-previous-allowed-value)
+(org-defkey org-columns-map "<" 'org-columns-narrow)
+(org-defkey org-columns-map ">" 'org-columns-widen)
+(org-defkey org-columns-map [(meta right)] 'org-columns-move-right)
+(org-defkey org-columns-map [(meta left)] 'org-columns-move-left)
+(org-defkey org-columns-map [(shift meta right)] 'org-columns-new)
+(org-defkey org-columns-map [(shift meta left)] 'org-columns-delete)
+
+(easy-menu-define org-columns-menu org-columns-map "Org Column Menu"
+  '("Column"
+    ["Edit property" org-columns-edit-value t]
+    ["Next allowed value" org-columns-next-allowed-value t]
+    ["Previous allowed value" org-columns-previous-allowed-value t]
+    ["Show full value" org-columns-show-value t]
+    ["Edit allowed" org-columns-edit-allowed t]
+    "--"
+    ["Edit column attributes" org-columns-edit-attributes t]
+    ["Increase column width" org-columns-widen t]
+    ["Decrease column width" org-columns-narrow t]
+    "--"
+    ["Move column right" org-columns-move-right t]
+    ["Move column left" org-columns-move-left t]
+    ["Add column" org-columns-new t]
+    ["Delete column" org-columns-delete t]
+    "--"
+    ["CONTENTS" org-columns-content t]
+    ["OVERVIEW" org-overview t]
+    ["Refresh columns display" org-columns-redo t]
+    "--"
+    ["Quit" org-columns-quit t]))
+
+(defun org-columns-new-overlay (beg end &optional string face)
+  "Create a new column overlay and add it to the list."
+  (let ((ov (org-make-overlay beg end)))
+    (org-overlay-put ov 'face (or face 'secondary-selection))
+    (org-overlay-display ov string face)
+    (push ov org-columns-overlays)
+    ov))
+
+(defun org-columns-display-here (&optional props)
+  "Overlay the current line with column display."
+  (interactive)
+  (let* ((fmt org-columns-current-fmt-compiled)
+        (beg (point-at-bol))
+        (level-face (save-excursion
+                      (beginning-of-line 1)
+                      (and (looking-at "\\(\\**\\)\\(\\* \\)")
+                           (org-get-level-face 2))))
+        (color (list :foreground 
+                     (face-attribute (or level-face 'default) :foreground)))
+        props pom property ass width f string ov column)
+    ;; Check if the entry is in another buffer.
+    (unless props
+      (if (eq major-mode 'org-agenda-mode)
+         (setq pom (or (get-text-property (point) 'org-hd-marker)
+                       (get-text-property (point) 'org-marker))
+               props (if pom (org-entry-properties pom) nil))
+       (setq props (org-entry-properties nil))))
+    ;; Walk the format
+    (while (setq column (pop fmt))
+      (setq property (car column)
+           ass (if (equal property "ITEM")
+                   (cons "ITEM"
+                         (save-match-data
+                           (org-no-properties
+                            (org-remove-tabs
+                             (buffer-substring-no-properties
+                              (point-at-bol) (point-at-eol))))))
+                 (assoc property props))
+           width (or (cdr (assoc property org-columns-current-maxwidths))
+                     (nth 2 column))
+           f (format "%%-%d.%ds | " width width)
+           string (format f (or (cdr ass) "")))
+      ;; Create the overlay
+      (org-unmodified
+       (setq ov (org-columns-new-overlay
+                beg (setq beg (1+ beg)) string
+                (list color 'org-column)))
+;;;       (list (get-text-property (point-at-bol) 'face) 'org-column)))
+       (org-overlay-put ov 'keymap org-columns-map)
+       (org-overlay-put ov 'org-columns-key property)
+       (org-overlay-put ov 'org-columns-value (cdr ass))
+       (org-overlay-put ov 'org-columns-pom pom)
+       (org-overlay-put ov 'org-columns-format f))
+      (if (or (not (char-after beg))
+             (equal (char-after beg) ?\n))
+         (let ((inhibit-read-only t))
+           (save-excursion
+             (goto-char beg)
+             (insert " ")))))
+    ;; Make the rest of the line disappear.
+    (org-unmodified
+     (setq ov (org-columns-new-overlay beg (point-at-eol)))
+     (org-overlay-put ov 'invisible t)
+     (org-overlay-put ov 'keymap org-columns-map)
+     (org-overlay-put ov 'intangible t)
+     (push ov org-columns-overlays)
+     (setq ov (org-make-overlay (1- (point-at-eol)) (1+ (point-at-eol))))
+     (org-overlay-put ov 'keymap org-columns-map)
+     (push ov org-columns-overlays)
+     (let ((inhibit-read-only t))
+       (put-text-property (max (point-min) (1- (point-at-bol)))
+                         (min (point-max) (1+ (point-at-eol)))
+                         'read-only "Type `e' to edit property")))))
+
+(defvar org-previous-header-line-format nil
+  "The header line format before column view was turned on.")
+(defvar org-columns-inhibit-recalculation nil
+  "Inhibit recomputing of columns on column view startup.")
+
+(defvar header-line-format)
+(defun org-columns-display-here-title ()
+  "Overlay the newline before the current line with the table title."
+  (interactive)
+  (let ((fmt org-columns-current-fmt-compiled)
+       string (title "")
+       property width f column str)
+    (while (setq column (pop fmt))
+      (setq property (car column)
+           str (or (nth 1 column) property)
+           width (or (cdr (assoc property org-columns-current-maxwidths))
+                     (nth 2 column))
+           f (format "%%-%d.%ds | " width width)
+           string (format f str)
+           title (concat title string)))
+    (setq title (concat
+                (org-add-props " " nil 'display '(space :align-to 0))
+                (org-add-props title nil 'face '(:weight bold :underline t))))
+    (org-set-local 'org-previous-header-line-format header-line-format)
+    (setq header-line-format title)))
+
+(defun org-columns-remove-overlays ()
+  "Remove all currently active column overlays."
+  (interactive)
+  (when (marker-buffer org-columns-begin-marker)
+    (with-current-buffer (marker-buffer org-columns-begin-marker)
+      (when (local-variable-p 'org-previous-header-line-format)
+       (setq header-line-format org-previous-header-line-format)
+       (kill-local-variable 'org-previous-header-line-format))
+      (move-marker org-columns-begin-marker nil)
+      (move-marker org-columns-top-level-marker nil)
+      (org-unmodified
+       (mapc 'org-delete-overlay org-columns-overlays)
+       (setq org-columns-overlays nil)
+       (let ((inhibit-read-only t))
+        (remove-text-properties (point-min) (point-max) '(read-only t)))))))
+
+(defun org-columns-show-value ()
+  "Show the full value of the property."
+  (interactive)
+  (let ((value (get-char-property (point) 'org-columns-value)))
+    (message "Value is: %s" (or value ""))))
+
+(defun org-columns-quit ()
+  "Remove the column overlays and in this way exit column editing."
+  (interactive)
+  (org-unmodified
+   (org-columns-remove-overlays)
+   (let ((inhibit-read-only t))
+     (remove-text-properties (point-min) (point-max) '(read-only t))))
+  (when (eq major-mode 'org-agenda-mode)
+    (message
+     "Modification not yet reflected in Agenda buffer, use `r' to refresh")))
+
+(defun org-columns-check-computed ()
+  "Check if this column value is computed.
+If yes, throw an error indicating that changing it does not make sense."
+  (let ((val (get-char-property (point) 'org-columns-value)))
+    (when (and (stringp val)
+              (get-char-property 0 'org-computed val))
+      (error "This value is computed from the entry's children"))))
+
+(defun org-columns-edit-value ()
+  "Edit the value of the property at point in column view.
+Where possible, use the standard interface for changing this line."
+  (interactive)
+  (org-columns-check-computed)
+  (let* ((col (current-column))
+        (key (get-char-property (point) 'org-columns-key))
+        (value (get-char-property (point) 'org-columns-value))
+        (bol (point-at-bol)) (eol (point-at-eol))
+        (pom (or (get-text-property bol 'org-hd-marker)
+                 (point))) ; keep despite of compiler waring
+        (line-overlays
+         (delq nil (mapcar (lambda (x)
+                             (and (eq (overlay-buffer x) (current-buffer))
+                                  (>= (overlay-start x) bol)
+                                  (<= (overlay-start x) eol)
+                                  x))
+                           org-columns-overlays)))
+        nval eval allowed)
+    (when (equal key "ITEM")
+      (error "Cannot edit item headline from here"))
+    
+    (cond
+     ((equal key "TODO")
+      (setq eval '(org-with-point-at pom
+                   (let ((current-prefix-arg '(4))) (org-todo '(4))))))
+     ((equal key "PRIORITY")
+      (setq eval '(org-with-point-at pom
+                   (call-interactively 'org-priority))))
+     ((equal key "TAGS")
+      (setq eval '(org-with-point-at pom
+                   (let ((org-fast-tag-selection-single-key
+                          (if (eq org-fast-tag-selection-single-key 'expert)
+                              t org-fast-tag-selection-single-key)))
+                     (call-interactively 'org-set-tags)))))
+     ((equal key "DEADLINE")
+      (setq eval '(org-with-point-at pom
+                   (call-interactively 'org-deadline))))
+     ((equal key "SCHEDULED")
+      (setq eval '(org-with-point-at pom
+                   (call-interactively 'org-schedule))))
+     (t
+      (setq allowed (org-property-get-allowed-values pom key 'table))
+      (if allowed
+         (setq nval (completing-read "Value: " allowed nil t))
+       (setq nval (read-string "Edit: " value)))
+      (setq nval (org-trim nval))
+      (when (not (equal nval value))
+       (setq eval '(org-entry-put pom key nval)))))
+    (when eval
+      (let ((inhibit-read-only t))
+       (remove-text-properties (1- bol) eol '(read-only t))
+       (unwind-protect
+           (progn
+             (setq org-columns-overlays 
+                   (org-delete-all line-overlays org-columns-overlays))
+             (mapc 'org-delete-overlay line-overlays)
+             (org-columns-eval eval))
+         (org-columns-display-here))))
+    (move-to-column col)
+    (if (nth 3 (assoc key org-columns-current-fmt-compiled))
+       (org-columns-update key))))
+
+(defun org-columns-edit-allowed ()
+  "Edit the list of allowed values for the current property."
+  (interactive)
+  (let* ((col (current-column))
+        (key (get-char-property (point) 'org-columns-key))
+        (key1 (concat key "_ALL"))
+        (value (get-char-property (point) 'org-columns-value))
+        (allowed (org-entry-get (point) key1 t))
+        nval)
+    (setq nval (read-string "Allowed: " allowed))
+    (org-entry-put 
+     (cond ((marker-position org-entry-property-inherited-from)
+           org-entry-property-inherited-from)
+          ((marker-position org-columns-top-level-marker)
+           org-columns-top-level-marker))
+     key1 nval)))
+
+(defun org-columns-eval (form)
+  (let (hidep)
+    (save-excursion
+      (beginning-of-line 1)
+      (next-line 1)
+      (setq hidep (org-on-heading-p 1)))
+    (eval form)
+    (and hidep (hide-entry))))
+
+(defun org-columns-previous-allowed-value ()
+  "Switch to the previous allowed value for this column."
+  (interactive)
+  (org-columns-next-allowed-value t))
+
+(defun org-columns-next-allowed-value (&optional previous)
+  "Switch to the next allowed value for this column."
+  (interactive)
+  (org-columns-check-computed)
+  (let* ((col (current-column))
+        (key (get-char-property (point) 'org-columns-key))
+        (value (get-char-property (point) 'org-columns-value))
+        (bol (point-at-bol)) (eol (point-at-eol))
+        (pom (or (get-text-property bol 'org-hd-marker)
+                 (point))) ; keep despite of compiler waring
+        (line-overlays
+         (delq nil (mapcar (lambda (x)
+                             (and (eq (overlay-buffer x) (current-buffer))
+                                  (>= (overlay-start x) bol)
+                                  (<= (overlay-start x) eol)
+                                  x))
+                           org-columns-overlays)))
+        (allowed (or (org-property-get-allowed-values pom key)
+                     (and (equal
+                           (nth 4 (assoc key org-columns-current-fmt-compiled))
+                           'checkbox) '("[ ]" "[X]"))))
+        nval)
+    (when (equal key "ITEM")
+      (error "Cannot edit item headline from here"))
+    (unless (or allowed (member key '("SCHEDULED" "DEADLINE")))
+      (error "Allowed values for this property have not been defined"))
+    (if (member key '("SCHEDULED" "DEADLINE"))
+       (setq nval (if previous 'earlier 'later))
+      (if previous (setq allowed (reverse allowed)))
+      (if (member value allowed)
+         (setq nval (car (cdr (member value allowed)))))
+      (setq nval (or nval (car allowed)))
+      (if (equal nval value)
+         (error "Only one allowed value for this property")))
+    (let ((inhibit-read-only t))
+      (remove-text-properties (1- bol) eol '(read-only t))
+      (unwind-protect
+         (progn
+           (setq org-columns-overlays 
+                 (org-delete-all line-overlays org-columns-overlays))
+           (mapc 'org-delete-overlay line-overlays)
+           (org-columns-eval '(org-entry-put pom key nval)))
+       (org-columns-display-here)))
+    (move-to-column col)
+    (if (nth 3 (assoc key org-columns-current-fmt-compiled))
+       (org-columns-update key))))
+
+(defun org-verify-version (task)
+  (cond
+   ((eq task 'columns)
+    (if (or (featurep 'xemacs)
+           (< emacs-major-version 22))
+       (error "Emacs 22 is required for the columns feature")))))
+
+(defun org-columns-get-format-and-top-level ()
+  (let (fmt)
+    (when (condition-case nil (org-back-to-heading) (error nil))
+      (move-marker org-entry-property-inherited-from nil)
+      (setq fmt (org-entry-get nil "COLUMNS" t)))
+    (setq fmt (or fmt org-columns-default-format))
+    (org-set-local 'org-columns-current-fmt fmt)
+    (org-columns-compile-format fmt)
+    (if (marker-position org-entry-property-inherited-from)
+       (move-marker org-columns-top-level-marker
+                    org-entry-property-inherited-from)
+      (move-marker org-columns-top-level-marker (point)))
+    fmt))
+
+(defun org-columns ()
+  "Turn on column view on an org-mode file."
+  (interactive)
+  (org-verify-version 'columns)
+  (org-columns-remove-overlays)
+  (move-marker org-columns-begin-marker (point))
+  (let (beg end fmt cache maxwidths)
+    (setq fmt (org-columns-get-format-and-top-level))
+    (save-excursion
+      (goto-char org-columns-top-level-marker)
+      (setq beg (point))
+      (unless org-columns-inhibit-recalculation
+       (org-columns-compute-all))
+      (setq end (or (condition-case nil (org-end-of-subtree t t) (error nil))
+                   (point-max)))
+      (goto-char beg)
+      ;; Get and cache the properties
+      (while (re-search-forward (concat "^" outline-regexp) end t)
+       (push (cons (org-current-line) (org-entry-properties)) cache))
+      (when cache
+       (setq maxwidths (org-columns-get-autowidth-alist fmt cache))
+       (org-set-local 'org-columns-current-maxwidths maxwidths)
+       (org-columns-display-here-title)
+       (mapc (lambda (x)
+               (goto-line (car x))
+               (org-columns-display-here (cdr x)))
+             cache)))))
+
+(defun org-columns-new (&optional prop title width op fmt)
+  "Insert a new column, to the leeft o the current column."
+  (interactive)
+  (let ((editp (and prop (assoc prop org-columns-current-fmt-compiled)))
+       cell)
+    (setq prop (completing-read
+               "Property: " (mapcar 'list (org-buffer-property-keys t))
+               nil nil prop))
+    (setq title (read-string (concat "Column title [" prop "]: ") (or title prop)))
+    (setq width (read-string "Column width: " (if width (number-to-string width))))
+    (if (string-match "\\S-" width)
+       (setq width (string-to-number width))
+      (setq width nil))
+    (setq fmt (completing-read "Summary [none]: "
+                              '(("none") ("add_numbers") ("add_times") ("checkbox"))
+                              nil t))
+    (if (string-match "\\S-" fmt)
+       (setq fmt (intern fmt))
+      (setq fmt nil))
+    (if (eq fmt 'none) (setq fmt nil))
+    (if editp
+       (progn
+         (setcar editp prop)
+         (setcdr editp (list title width nil fmt)))
+      (setq cell (nthcdr (1- (current-column))
+                        org-columns-current-fmt-compiled))
+      (setcdr cell (cons (list prop title width nil fmt)
+                        (cdr cell))))
+    (org-columns-store-format)
+    (org-columns-redo)))
+
+(defun org-columns-delete ()
+  "Delete the column at point from columns view."
+  (interactive)
+  (let* ((n (current-column))
+        (title (nth 1 (nth n org-columns-current-fmt-compiled))))
+    (when (y-or-n-p
+          (format "Are you sure you want to remove column \"%s\"? " title))
+      (setq org-columns-current-fmt-compiled
+           (delq (nth n org-columns-current-fmt-compiled)
+                 org-columns-current-fmt-compiled))
+      (org-columns-store-format)
+      (org-columns-redo)
+      (if (>= (current-column) (length org-columns-current-fmt-compiled))
+         (backward-char 1)))))
+
+(defun org-columns-edit-attributes ()
+  "Edit the attributes of the current column."
+  (interactive)
+  (let* ((n (current-column))
+        (info (nth n org-columns-current-fmt-compiled)))
+    (apply 'org-columns-new info)))
+
+(defun org-columns-widen (arg)
+  "Make the column wider by ARG characters."
+  (interactive "p")
+  (let* ((n (current-column))
+        (entry (nth n org-columns-current-fmt-compiled))
+        (width (or (nth 2 entry)
+                   (cdr (assoc (car entry) org-columns-current-maxwidths)))))
+    (setq width (max 1 (+ width arg)))
+    (setcar (nthcdr 2 entry) width)
+    (org-columns-store-format)
+    (org-columns-redo)))
+
+(defun org-columns-narrow (arg)
+  "Make the column nrrower by ARG characters."
+  (interactive "p")
+  (org-columns-widen (- arg)))
+
+(defun org-columns-move-right ()
+  "Swap this column with the one to the right."
+  (interactive)
+  (let* ((n (current-column))
+        (cell (nthcdr n org-columns-current-fmt-compiled))
+        e)
+    (when (>= n (1- (length org-columns-current-fmt-compiled)))
+      (error "Cannot shift this column further to the right"))
+    (setq e (car cell))
+    (setcar cell (car (cdr cell)))
+    (setcdr cell (cons e (cdr (cdr cell))))
+    (org-columns-store-format)
+    (org-columns-redo)
+    (forward-char 1)))
+
+(defun org-columns-move-left ()
+  "Swap this column with the one to the left."
+  (interactive)
+  (let* ((n (current-column)))
+    (when (= n 0)
+      (error "Cannot shift this column further to the left"))
+    (backward-char 1)
+    (org-columns-move-right)
+    (backward-char 1)))    
+
+(defun org-columns-store-format ()
+  "Store the text version of the current columns format in appropriate place.
+This is either in the COLUMNS property of the node starting the current column
+display, or in the #+COLUMNS line of the current buffer."
+  (let (fmt)
+    (setq fmt (org-columns-uncompile-format org-columns-current-fmt-compiled))
+    (if (marker-position org-columns-top-level-marker)
+       (save-excursion
+         (goto-char org-columns-top-level-marker)
+         (if (org-entry-get nil "COLUMNS")
+             (org-entry-put nil "COLUMNS" fmt)
+           (goto-char (point-min))
+           (while (re-search-forward "^#\\+COLUMNS:.*" nil t)
+             (replace-match (concat "#+COLUMNS: " fmt t t)))))
+      (setq org-columns-current-fmt fmt))))
+
+(defvar org-overriding-columns-format nil
+  "When set, overrides any other definition.")
+(defvar org-agenda-view-columns-initially nil
+  "When set, switch to columns view immediately after creating the agenda.")
+
+(defun org-agenda-columns ()
+  "Turn on column view in the agenda."
+  (interactive)
+  (org-verify-version 'columns)
+  (org-columns-remove-overlays)
+  (move-marker org-columns-begin-marker (point))
+  (let (fmt cache maxwidths m)
+    (cond
+     ((and (local-variable-p 'org-overriding-columns-format)
+          org-overriding-columns-format)
+      (setq fmt org-overriding-columns-format))
+     ((setq m (get-text-property (point-at-bol) 'org-hd-marker))
+      (setq fmt (org-entry-get m "COLUMNS" t)))
+     ((and (boundp 'org-columns-current-fmt)
+          (local-variable-p 'org-columns-current-fmt)
+          org-columns-current-fmt)
+      (setq fmt org-columns-current-fmt))
+     ((setq m (next-single-property-change (point-min) 'org-hd-marker))
+      (setq m (get-text-property m 'org-hd-marker))
+      (setq fmt (org-entry-get m "COLUMNS" t))))
+    (setq fmt (or fmt org-columns-default-format))
+    (org-set-local 'org-columns-current-fmt fmt)
+    (org-columns-compile-format fmt)
+    (save-excursion
+      ;; Get and cache the properties
+      (goto-char (point-min))
+      (while (not (eobp))
+       (when (setq m (or (get-text-property (point) 'org-hd-marker)
+                         (get-text-property (point) 'org-marker)))
+         (push (cons (org-current-line) (org-entry-properties m)) cache))
+       (beginning-of-line 2))
+      (when cache
+       (setq maxwidths (org-columns-get-autowidth-alist fmt cache))
+       (org-set-local 'org-columns-current-maxwidths maxwidths)
+       (org-columns-display-here-title)
+       (mapc (lambda (x)
+               (goto-line (car x))
+               (org-columns-display-here (cdr x)))
+             cache)))))
+
+(defun org-columns-get-autowidth-alist (s cache)
+  "Derive the maximum column widths from the format and the cache."
+  (let ((start 0) rtn)
+    (while (string-match (org-re "%\\([[:alpha:]]\\S-*\\)") s start)
+      (push (cons (match-string 1 s) 1) rtn)
+      (setq start (match-end 0)))
+    (mapc (lambda (x)
+           (setcdr x (apply 'max
+                            (mapcar
+                             (lambda (y)
+                               (length (or (cdr (assoc (car x) (cdr y))) " ")))
+                             cache))))
+         rtn)
+    rtn))
+
+(defun org-columns-compute-all ()
+  "Compute all columns that have operators defined."
+  (org-unmodified
+   (remove-text-properties (point-min) (point-max) '(org-summaries t)))
+  (let ((columns org-columns-current-fmt-compiled) col)
+    (while (setq col (pop columns))
+      (when (nth 3 col)
+       (save-excursion
+         (org-columns-compute (car col)))))))
+
+(defun org-columns-update (property)
+  "Recompute PROPERTY, and update the columns display for it."
+  (org-columns-compute property)
+  (let (fmt val pos)
+    (save-excursion
+      (mapc (lambda (ov)
+             (when (equal (org-overlay-get ov 'org-columns-key) property)
+               (setq pos (org-overlay-start ov))
+               (goto-char pos)
+               (when (setq val (cdr (assoc property
+                                           (get-text-property 
+                                            (point-at-bol) 'org-summaries))))
+                 (setq fmt (org-overlay-get ov 'org-columns-format))
+                 (org-overlay-put ov 'org-columns-value val)
+                 (org-overlay-put ov 'display (format fmt val)))))
+           org-columns-overlays))))
+
+(defun org-columns-compute (property)
+  "Sum the values of property PROPERTY hierarchically, for the entire buffer."
+  (interactive)
+  (let* ((re (concat "^" outline-regexp))
+        (lmax 30) ; Does anyone use deeper levels???
+        (lsum (make-vector lmax 0))
+        (lflag (make-vector lmax nil))
+        (level 0)
+        (ass (assoc property org-columns-current-fmt-compiled))
+        (format (nth 4 ass))
+        (beg org-columns-top-level-marker)
+        last-level val valflag flag end sumpos sum-alist sum str str1 useval)
+    (save-excursion
+      ;; Find the region to compute
+      (goto-char beg)
+      (setq end (condition-case nil (org-end-of-subtree t) (error (point-max))))
+      (goto-char end)
+      ;; Walk the tree from the back and do the computations
+      (while (re-search-backward re beg t)
+       (setq sumpos (match-beginning 0)
+             last-level level
+             level (org-outline-level)
+             val (org-entry-get nil property)
+             valflag (and val (string-match "\\S-" val)))
+       (cond
+        ((< level last-level)
+         ;; put the sum of lower levels here as a property
+         (setq sum (aref lsum last-level)   ; current sum
+               flag (aref lflag last-level) ; any valid entries from children?
+               str (org-column-number-to-string sum format)
+               str1 (org-add-props (copy-sequence str) nil 'org-computed t 'face 'bold)
+               useval (if flag str1 (if valflag val ""))
+               sum-alist (get-text-property sumpos 'org-summaries))
+         (if (assoc property sum-alist)
+             (setcdr (assoc property sum-alist) useval)
+           (push (cons property useval) sum-alist)
+           (org-unmodified
+            (add-text-properties sumpos (1+ sumpos)
+                                 (list 'org-summaries sum-alist))))
+         (when val
+           (org-entry-put nil property (if flag str val)))
+         ;; add current to current  level accumulator
+         (when (or flag valflag)
+           ;; FIXME: is this ok?????????
+           (aset lsum level (+ (aref lsum level)
+                               (if flag sum (org-column-string-to-number
+                                             (if flag str val) format))))
+           (aset lflag level t))
+         ;; clear accumulators for deeper levels
+         (loop for l from (1+ level) to (1- lmax) do 
+               (aset lsum l 0)
+               (aset lflag l nil)))
+        ((>= level last-level)
+         ;; add what we have here to the accumulator for this level
+         (aset lsum level (+ (aref lsum level)
+                             (org-column-string-to-number (or val "0") format)))
+         (and valflag (aset lflag level t)))
+        (t (error "This should not happen")))))))
+
+(defun org-columns-redo ()
+  "Construct the column display again."
+  (interactive)
+  (message "Recomputing columns...")
+  (save-excursion
+    (if (marker-position org-columns-begin-marker)
+       (goto-char org-columns-begin-marker))
+    (org-columns-remove-overlays)
+    (if (org-mode-p)
+       (call-interactively 'org-columns)
+      (call-interactively 'org-agenda-columns)))
+  (message "Recomputing columns...done"))
+
+(defun org-columns-not-in-agenda ()
+  (if (eq major-mode 'org-agenda-mode)
+      (error "This command is only allowed in Org-mode buffers")))
+
+
+(defun org-string-to-number (s)
+  "Convert string to number, and interpret hh:mm:ss."
+  (if (not (string-match ":" s))
+      (string-to-number s)
+    (let ((l (nreverse (org-split-string s ":"))) (sum 0.0))
+      (while l
+       (setq sum (+ (string-to-number (pop l)) (/ sum 60))))
+      sum)))
+
+(defun org-column-number-to-string (n fmt)
+  "Convert a computed column number to a string value, according to FMT."
+  (cond
+   ((eq fmt 'add_times)
+    (let* ((h (floor n)) (m (floor (+ 0.5 (* 60 (- n h))))))
+      (format "%d:%02d" h m)))
+   ((eq fmt 'checkbox)
+    (cond ((= n (floor n)) "[X]")
+         ((> n 1.) "[-]")
+         (t "[ ]")))
+   (t (number-to-string n))))
+
+(defun org-column-string-to-number (s fmt)
+  "Convert a column value to a number that can be used for column computing."
+  (cond
+   ((string-match ":" s)
+    (let ((l (nreverse (org-split-string s ":"))) (sum 0.0))
+      (while l
+       (setq sum (+ (string-to-number (pop l)) (/ sum 60))))
+      sum))
+   ((eq fmt 'checkbox)
+    (if (equal s "[X]") 1. 0.000001))
+   (t (string-to-number s))))
+
+(defun org-columns-uncompile-format (cfmt)
+  "Turn the compiled columns format back into a string representation."
+  (let ((rtn "") e s prop title op width fmt)
+    (while (setq e (pop cfmt))
+      (setq prop (car e)
+           title (nth 1 e)
+           width (nth 2 e)
+           op (nth 3 e)
+           fmt (nth 4 e))
+      (cond
+       ((eq fmt 'add_times) (setq op ":"))
+       ((eq fmt 'checkbox) (setq op "X"))
+       ((eq fmt 'add_numbers) (setq op "+")))
+      (if (equal title prop) (setq title nil))
+      (setq s (concat "%" (if width (number-to-string width))
+                     prop
+                     (if title (concat "(" title ")"))
+                     (if op (concat "{" op "}"))))
+      (setq rtn (concat rtn " " s)))
+    (org-trim rtn)))
+
+(defun org-columns-compile-format (fmt)
+  "Turn a column format string into an alist of specifications.
+The alist has one entry for each column in the format.  The elements of
+that list are:
+property     the property
+title        the title field for the columns
+width        the column width in characters, can be nil for automatic
+operator     the operator if any
+format       the output format for computed results, derived from operator"
+  (let ((start 0) width prop title op f)
+    (setq org-columns-current-fmt-compiled nil)
+    (while (string-match
+           (org-re "%\\([0-9]+\\)?\\([[:alnum:]_-]+\\)\\(?:(\\([^)]+\\))\\)?\\(?:{\\([^}]+\\)}\\)?\\s-*")
+           fmt start)
+      (setq start (match-end 0)
+           width (match-string 1 fmt)
+           prop (match-string 2 fmt)
+           title (or (match-string 3 fmt) prop)
+           op (match-string 4 fmt)
+           f nil)
+      (if width (setq width (string-to-number width)))
+      (cond
+       ((equal op "+") (setq f 'add_numbers))
+       ((equal op ":") (setq f 'add_times))
+       ((equal op "X") (setq f 'checkbox)))
+      (push (list prop title width op f) org-columns-current-fmt-compiled))
+    (setq org-columns-current-fmt-compiled
+         (nreverse org-columns-current-fmt-compiled))))
+
+;;;; Timestamps
+
+(defvar org-last-changed-timestamp nil)
+(defvar org-time-was-given) ; dynamically scoped parameter
+(defvar org-end-time-was-given) ; dynamically scoped parameter
+(defvar org-ts-what) ; dynamically scoped parameter
+
+(defun org-time-stamp (arg)
+  "Prompt for a date/time and insert a time stamp.
+If the user specifies a time like HH:MM, or if this command is called
+with a prefix argument, the time stamp will contain date and time.
+Otherwise, only the date will be included.  All parts of a date not
+specified by the user will be filled in from the current date/time.
+So if you press just return without typing anything, the time stamp
+will represent the current date/time.  If there is already a timestamp
+at the cursor, it will be modified."
+  (interactive "P")
+  (let ((default-time
+         ;; Default time is either today, or, when entering a range,
+         ;; the range start.
+         (if (or (org-at-timestamp-p t)
+                 (save-excursion
+                   (re-search-backward
+                    (concat org-ts-regexp "--?-?\\=") ; 1-3 minuses
+                    (- (point) 20) t)))
+             (apply 'encode-time (org-parse-time-string (match-string 1)))
+           (current-time)))
+       org-time-was-given org-end-time-was-given time)
+    (cond
+     ((and (org-at-timestamp-p)
+          (eq last-command 'org-time-stamp)
+          (eq this-command 'org-time-stamp))
+      (insert "--")
+      (setq time (let ((this-command this-command))
+                 (org-read-date arg 'totime nil nil default-time)))
+      (org-insert-time-stamp time (or org-time-was-given arg)))
+     ((org-at-timestamp-p)
+      (setq time (let ((this-command this-command))
+                  (org-read-date arg 'totime nil nil default-time)))
+      (when (org-at-timestamp-p) ; just to get the match data
+       (replace-match "")
+       (setq org-last-changed-timestamp
+             (org-insert-time-stamp
+              time (or org-time-was-given arg)
+              nil nil nil (list org-end-time-was-given))))
+      (message "Timestamp updated"))
+     (t
+      (setq time (let ((this-command this-command))
+                  (org-read-date arg 'totime nil nil default-time)))
+      (org-insert-time-stamp time (or org-time-was-given arg)
+                            nil nil nil (list org-end-time-was-given))))))
+
+(defun org-time-stamp-inactive (&optional arg)
+  "Insert an inactive time stamp.
+An inactive time stamp is enclosed in square brackets instead of angle
+brackets.  It is inactive in the sense that it does not trigger agenda entries,
+does not link to the calendar and cannot be changed with the S-cursor keys.
+So these are more for recording a certain time/date."
+  (interactive "P")
+  (let (org-time-was-given org-end-time-was-given time)
+    (setq time (org-read-date arg 'totime))
+    (org-insert-time-stamp time (or org-time-was-given arg) 'inactive
+                          nil nil (list org-end-time-was-given))))
+
+(defvar org-date-ovl (org-make-overlay 1 1))
+(org-overlay-put org-date-ovl 'face 'org-warning)
+(org-detach-overlay org-date-ovl)
+
+(defvar org-ans1) ; dynamically scoped parameter
+(defvar org-ans2) ; dynamically scoped parameter
+
+(defvar org-plain-time-of-day-regexp) ; defined below
+(defun org-read-date (&optional with-time to-time from-string prompt
+                               default-time)
+  "Read a date and make things smooth for the user.
+The prompt will suggest to enter an ISO date, but you can also enter anything
+which will at least partially be understood by `parse-time-string'.
+Unrecognized parts of the date will default to the current day, month, year,
+hour and minute.  If this command is called to replace a timestamp at point,
+of to enter the second timestamp of a range, the default time is taken from the
+existing stamp.  For example,
+  3-2-5         --> 2003-02-05
+  feb 15        --> currentyear-02-15
+  sep 12 9      --> 2009-09-12
+  12:45         --> today 12:45
+  22 sept 0:34  --> currentyear-09-22 0:34
+  12            --> currentyear-currentmonth-12
+  Fri           --> nearest Friday (today or later)
+  +4            --> four days from today (only if +N is the only thing given)
+  etc.
+The function understands only English month and weekday abbreviations,
+but this can be configured with the variables `parse-time-months' and
+`parse-time-weekdays'.
+
+While prompting, a calendar is popped up - you can also select the
+date with the mouse (button 1).  The calendar shows a period of three
+months.  To scroll it to other months, use the keys `>' and `<'.
+If you don't like the calendar, turn it off with
+       \(setq org-popup-calendar-for-date-prompt nil)
+
+With optional argument TO-TIME, the date will immediately be converted
+to an internal time.
+With an optional argument WITH-TIME, the prompt will suggest to also
+insert a time.  Note that when WITH-TIME is not set, you can still
+enter a time, and this function will inform the calling routine about
+this change.  The calling routine may then choose to change the format
+used to insert the time stamp into the buffer to include the time.
+With optional argument FROM-STRING, read fomr this string instead from
+the user.  PROMPT can overwrite the default prompt.  DEFAULT-TIME is
+the time/date that is used for everything that is not specified by the
+user."
   (require 'parse-time)
   (let* ((org-time-stamp-rounding-minutes
          (if (equal with-time '(16)) 0 org-time-stamp-rounding-minutes))
         (ct (org-current-time))
-        (default-time
-          ;; Default time is either today, or, when entering a range,
-          ;; the range start.
-          (if (save-excursion
-                (re-search-backward
-                 (concat org-ts-regexp "--?-?\\=") ; 1-3 minuses
-                 (- (point) 20) t))
-              (apply
-               'encode-time
-               (mapcar (lambda(x) (or x 0))
-                       (parse-time-string (match-string 1))))
-            ct))
+        (def (or default-time ct))
         (calendar-move-hook nil)
         (view-diary-entries-initially nil)
         (view-calendar-holidays-initially nil)
         (timestr (format-time-string
-                  (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") default-time))
+                  (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") def))
         (prompt (concat (if prompt (concat prompt " ") "")
-                        (format "YYYY-MM-DD [%s]: " timestr)))
+                        (format "Date and/or time (default [%s]): " timestr)))
         ans (org-ans0 "") org-ans1 org-ans2 (deltadays 0)
-        second minute hour day month year tl wday wday1)
+        second minute hour day month year tl wday wday1 pm h2 m2)
 
     (cond
      (from-string (setq ans from-string))
@@ -12024,47 +15647,46 @@ used to insert the time stamp into the buffer to include the time."
       (save-excursion
        (save-window-excursion
          (calendar)
-         (calendar-forward-day (- (time-to-days default-time)
+         (calendar-forward-day (- (time-to-days def)
                                   (calendar-absolute-from-gregorian
                                    (calendar-current-date))))
-         (org-eval-in-calendar nil)
+         (org-eval-in-calendar nil t)
          (let* ((old-map (current-local-map))
                 (map (copy-keymap calendar-mode-map))
                 (minibuffer-local-map (copy-keymap minibuffer-local-map)))
-           (define-key map (kbd "RET") 'org-calendar-select)
-           (define-key map (if (featurep 'xemacs) [button1] [mouse-1])
+           (org-defkey map (kbd "RET") 'org-calendar-select)
+           (org-defkey map (if (featurep 'xemacs) [button1] [mouse-1])
              'org-calendar-select-mouse)
-           (define-key map (if (featurep 'xemacs) [button2] [mouse-2])
+           (org-defkey map (if (featurep 'xemacs) [button2] [mouse-2])
              'org-calendar-select-mouse)
-           (define-key minibuffer-local-map [(meta shift left)]
+           (org-defkey minibuffer-local-map [(meta shift left)]
              (lambda () (interactive)
                (org-eval-in-calendar '(calendar-backward-month 1))))
-           (define-key minibuffer-local-map [(meta shift right)]
+           (org-defkey minibuffer-local-map [(meta shift right)]
              (lambda () (interactive)
                (org-eval-in-calendar '(calendar-forward-month 1))))
-           (define-key minibuffer-local-map [(shift up)]
+           (org-defkey minibuffer-local-map [(shift up)]
              (lambda () (interactive)
                (org-eval-in-calendar '(calendar-backward-week 1))))
-           (define-key minibuffer-local-map [(shift down)]
+           (org-defkey minibuffer-local-map [(shift down)]
              (lambda () (interactive)
                (org-eval-in-calendar '(calendar-forward-week 1))))
-           (define-key minibuffer-local-map [(shift left)]
+           (org-defkey minibuffer-local-map [(shift left)]
              (lambda () (interactive)
                (org-eval-in-calendar '(calendar-backward-day 1))))
-           (define-key minibuffer-local-map [(shift right)]
+           (org-defkey minibuffer-local-map [(shift right)]
              (lambda () (interactive)
                (org-eval-in-calendar '(calendar-forward-day 1))))
-           (define-key minibuffer-local-map ">"
+           (org-defkey minibuffer-local-map ">"
              (lambda () (interactive)
                (org-eval-in-calendar '(scroll-calendar-left 1))))
-           (define-key minibuffer-local-map "<"
+           (org-defkey minibuffer-local-map "<"
              (lambda () (interactive)
                (org-eval-in-calendar '(scroll-calendar-right 1))))
            (unwind-protect
                (progn
                  (use-local-map map)
                  (setq org-ans0 (read-string prompt "" nil nil))
-;                (if (not (string-match "\\S-" org-ans0)) (setq org-ans0 nil))
                  ;; org-ans0: from prompt
                  ;; org-ans1: from mouse click
                  ;; org-ans2: from calendar motion
@@ -12077,23 +15699,57 @@ used to insert the time stamp into the buffer to include the time."
     (if (string-match "^[ \t]*[-+][0-9]+[ \t]*$" org-ans0)
        (setq deltadays (string-to-number ans) ans ""))
 
-    (if (string-match
-        "^ *\\(\\([0-9]+\\)-\\)?\\([0-1]?[0-9]\\)-\\([0-3]?[0-9]\\)\\([^-0-9]\\|$\\)" ans)
-       (progn
-         (setq year (if (match-end 2)
-                        (string-to-number (match-string 2 ans))
-                      (string-to-number (format-time-string "%Y")))
-               month (string-to-number (match-string 3 ans))
-               day (string-to-number (match-string 4 ans)))
-         (if (< year 100) (setq year (+ 2000 year)))
-         (setq ans (replace-match (format "%04d-%02d-%02d\\5" year month day)
-                                  t nil ans))))
+    ;; Help matching ISO dates with single digit month ot day, like 2006-8-11.
+    (when (string-match
+          "^ *\\(\\([0-9]+\\)-\\)?\\([0-1]?[0-9]\\)-\\([0-3]?[0-9]\\)\\([^-0-9]\\|$\\)" ans)
+      (setq year (if (match-end 2)
+                    (string-to-number (match-string 2 ans))
+                  (string-to-number (format-time-string "%Y")))
+           month (string-to-number (match-string 3 ans))
+           day (string-to-number (match-string 4 ans)))
+      (if (< year 100) (setq year (+ 2000 year)))
+      (setq ans (replace-match (format "%04d-%02d-%02d\\5" year month day)
+                              t nil ans)))
+    ;; Help matching am/pm times, because `parse-time-string' does not do that.
+    ;; If there is a time with am/pm, and *no* time without it, we convert
+    ;; so that matching will be successful.
+    (loop for i from 1 to 2 do ; twice, for end time as well
+         (when (and (not (string-match "\\(\\`\\|[^+]\\)[012]?[0-9]:[0-9][0-9]\\([ \t\n]\\|$\\)" ans))
+                    (string-match "\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?\\(am\\|AM\\|pm\\|PM\\)\\>" ans))
+           (setq hour (string-to-number (match-string 1 ans))
+                 minute (if (match-end 3)
+                            (string-to-number (match-string 3 ans))
+                          0)
+                 pm (equal ?p 
+                           (string-to-char (downcase (match-string 4 ans)))))
+           (if (and (= hour 12) (not pm))
+               (setq hour 0)
+             (if (and pm (< hour 12)) (setq hour (+ 12 hour))))
+           (setq ans (replace-match (format "%02d:%02d" hour minute)
+                                    t t ans))))
+
+    ;; Check if a time range is given as a duration
+    (when (string-match "\\([012]?[0-9]\\):\\([0-6][0-9]\\)\\+\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?" ans)
+      (setq hour (string-to-number (match-string 1 ans))
+           h2 (+ hour (string-to-number (match-string 3 ans)))
+           minute (string-to-number (match-string 2 ans))
+           m2 (+ minute (if (match-end 5) (string-to-number (match-string 5 ans))0)))
+      (setq ans (replace-match (format "%02d:%02d-%02d:%02d" hour minute h2 m2) t t ans)))
+
+    ;; Check if there is a time range
+    (when (and (boundp 'org-end-time-was-given)
+              (string-match org-plain-time-of-day-regexp ans)
+              (match-end 8))
+      (setq org-end-time-was-given (match-string 8 ans))
+      (setq ans (concat (substring ans 0 (match-beginning 7))
+                       (substring ans (match-end 7)))))
+
     (setq tl (parse-time-string ans)
-         year (or (nth 5 tl) (string-to-number (format-time-string "%Y" ct)))
-         month (or (nth 4 tl) (string-to-number (format-time-string "%m" ct)))
-         day (or (nth 3 tl) (string-to-number (format-time-string "%d" ct)))
-         hour (or (nth 2 tl) (string-to-number (format-time-string "%H" ct)))
-         minute (or (nth 1 tl) (string-to-number (format-time-string "%M" ct)))
+         year (or (nth 5 tl) (string-to-number (format-time-string "%Y" def)))
+         month (or (nth 4 tl) (string-to-number (format-time-string "%m" def)))
+         day (or (nth 3 tl) (string-to-number (format-time-string "%d" def)))
+         hour (or (nth 2 tl) (string-to-number (format-time-string "%H" def)))
+         minute (or (nth 1 tl) (string-to-number (format-time-string "%M" def)))
          second (or (nth 0 tl) 0)
          wday (nth 6 tl))
     (setq day (+ day deltadays))
@@ -12113,18 +15769,28 @@ used to insert the time stamp into the buffer to include the time."
          (format "%04d-%02d-%02d %02d:%02d" year month day hour minute)
        (format "%04d-%02d-%02d" year month day)))))
 
-(defun org-eval-in-calendar (form)
+(defun org-eval-in-calendar (form &optional keepdate)
   "Eval FORM in the calendar window and return to current window.
 Also, store the cursor date in variable org-ans2."
   (let ((sw (selected-window)))
     (select-window (get-buffer-window "*Calendar*"))
     (eval form)
-    (when (calendar-cursor-to-date)
+    (when (and (not keepdate) (calendar-cursor-to-date))
       (let* ((date (calendar-cursor-to-date))
             (time (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date))))
        (setq org-ans2 (format-time-string "%Y-%m-%d" time))))
     (org-move-overlay org-date-ovl (1- (point)) (1+ (point)) (current-buffer))
-    (select-window sw)))
+    (select-window sw)
+    ;; Update the prompt to show new default date
+    (save-excursion
+      (goto-char (point-min))
+      (when (and org-ans2
+                (re-search-forward "\\[[-0-9]+\\]" nil t)
+                (get-text-property (match-end 0) 'field))
+       (let ((inhibit-read-only t))
+         (replace-match (concat "[" org-ans2 "]") t t)
+         (add-text-properties (point-min) (1+ (match-end 0))
+                              (text-properties-at (1+ (point-min)))))))))
 
 (defun org-calendar-select ()
   "Return to `org-read-date' with the date currently selected.
@@ -12136,7 +15802,7 @@ This is used by `org-read-date' in a temporary keymap for the calendar buffer."
       (setq org-ans1 (format-time-string "%Y-%m-%d" time)))
     (if (active-minibuffer-window) (exit-minibuffer))))
 
-(defun org-insert-time-stamp (time &optional with-hm inactive pre post)
+(defun org-insert-time-stamp (time &optional with-hm inactive pre post extra)
   "Insert a date stamp for the date given by the internal TIME.
 WITH-HM means, use the stamp format that includes the time of the day.
 INACTIVE means use square brackets instead of angular ones, so that the
@@ -12149,6 +15815,18 @@ The command returns the inserted time stamp."
     (if inactive (setq fmt (concat "[" (substring fmt 1 -1) "]")))
     (insert (or pre ""))
     (insert (setq stamp (format-time-string fmt time)))
+    (when (listp extra)
+      (setq extra (car extra))
+      (if (and (stringp extra)
+              (string-match "\\([0-9]+\\):\\([0-9]+\\)" extra))
+         (setq extra (format "-%02d:%02d"
+                             (string-to-number (match-string 1 extra))
+                             (string-to-number (match-string 2 extra))))
+       (setq extra nil)))
+    (when extra
+      (backward-char 1)
+      (insert extra)
+      (forward-char 1))
     (insert (or post ""))
     stamp))
 
@@ -12175,17 +15853,22 @@ The command returns the inserted time stamp."
 
 (defun org-display-custom-time (beg end)
   "Overlay modified time stamp format over timestamp between BED and END."
-  (let* ((t1 (save-match-data
-              (org-parse-time-string (buffer-substring beg end) t)))
-        (w1 (- end beg))
-        (with-hm (and (nth 1 t1) (nth 2 t1)))
-        (tf (funcall (if with-hm 'cdr 'car) org-time-stamp-custom-formats))
-        (time (org-fix-decoded-time t1))
-        (str (org-add-props
+  (let* ((ts (buffer-substring beg end))
+        t1 w1 with-hm tf time str w2 (off 0))
+    (save-match-data
+      (setq t1 (org-parse-time-string ts t))
+      (if (string-match "\\(-[0-9]+:[0-9]+\\)?\\( \\+[0-9]+[dwmy]\\)?\\'" ts)
+         (setq off (- (match-end 0) (match-beginning 0)))))
+    (setq end (- end off))
+    (setq w1 (- end beg)
+         with-hm (and (nth 1 t1) (nth 2 t1))
+         tf (funcall (if with-hm 'cdr 'car) org-time-stamp-custom-formats)
+         time (org-fix-decoded-time t1)
+         str (org-add-props
                  (format-time-string
                   (substring tf 1 -1) (apply 'encode-time time))
-                 nil 'mouse-face 'highlight))
-        (w2 (length str)))
+                 nil 'mouse-face 'highlight)
+         w2 (length str))
     (if (not (= w2 w1))
        (add-text-properties (1+ beg) (+ 2 beg)
                             (list 'org-dwidth t 'org-dwidth-n (- w1 w2))))
@@ -12235,10 +15918,25 @@ Don't touch the rest."
 
 (defun org-deadline-close (timestamp-string &optional ndays)
   "Is the time in TIMESTAMP-STRING close to the current date?"
-  (and (< (org-days-to-time timestamp-string)
-         (or ndays org-deadline-warning-days))
+  (setq ndays (or ndays (org-get-wdays timestamp-string)))
+  (and (< (org-days-to-time timestamp-string) ndays)
        (not (org-entry-is-done-p))))
 
+(defun org-get-wdays (ts)
+  "Get the deadline lead time appropriate for timestring TS."
+  (cond
+   ((<= org-deadline-warning-days 0)
+    ;; 0 or negative, enforce this value no matter what
+    (- org-deadline-warning-days))
+   ((string-match "-\\([0-9]+\\)\\([dwmy]\\)\\(\\'\\|>\\)" ts)
+    ;; lead time is specified.
+    (floor (* (string-to-number (match-string 1 ts))
+             (cdr (assoc (match-string 2 ts)
+                         '(("d" . 1)    ("w" . 7)
+                           ("m" . 30.4) ("y" . 365.25)))))))
+   ;; go for the default.
+   (t org-deadline-warning-days)))
+
 (defun org-calendar-select-mouse (ev)
   "Return to `org-read-date' with the date currently selected.
 This is used by `org-read-date' in a temporary keymap for the calendar buffer."
@@ -12261,7 +15959,7 @@ days.  If the prefix is a raw \\[universal-argument] prefix, all deadlines are s
          (cond
           ((equal ndays '(4)) 100000)
           (ndays (prefix-numeric-value ndays))
-          (t org-deadline-warning-days)))
+          (t (abs org-deadline-warning-days))))
         (case-fold-search nil)
         (regexp (concat "\\<" org-deadline-string " *<\\([^>]+\\)>"))
         (callback
@@ -12283,10 +15981,10 @@ days in order to avoid rounding problems."
   (or
    (org-clock-update-time-maybe)
    (save-excursion
-     (unless (org-at-date-range-p)
+     (unless (org-at-date-range-p t)
        (goto-char (point-at-bol))
-       (re-search-forward org-tr-regexp (point-at-eol) t))
-     (if (not (org-at-date-range-p))
+       (re-search-forward org-tr-regexp-both (point-at-eol) t))
+     (if (not (org-at-date-range-p t))
         (error "Not at a time-stamp range, and none found in current line")))
    (let* ((ts1 (match-string 1))
          (ts2 (match-string 2))
@@ -12349,12 +16047,152 @@ days in order to avoid rounding problems."
 (defun org-time-string-to-time (s)
   (apply 'encode-time (org-parse-time-string s)))
 
+(defun org-time-string-to-absolute (s &optional daynr)
+  "Convert a time stamp to an absolute day number.
+If there is a specifyer for a cyclic time stamp, get the closest date to
+DAYNR."
+  (cond
+   ((and daynr (string-match "\\`%%\\((.*)\\)" s))
+    (if (org-diary-sexp-entry (match-string 1 s) "" date)
+       daynr
+      (+ daynr 1000)))
+   ((and daynr (string-match "\\+[0-9]+[dwmy]" s))
+    (org-closest-date s (if (and (boundp 'daynr) (integerp daynr)) daynr
+                         (time-to-days (current-time))) (match-string 0 s)))
+   (t (time-to-days (apply 'encode-time (org-parse-time-string s))))))
+
+(defun org-time-from-absolute (d)
+  "Return the time corresponding to date D.
+D may be an absolute day number, or a calendar-type list (month day year)."
+  (if (numberp d) (setq d (calendar-gregorian-from-absolute d)))
+  (encode-time 0 0 0 (nth 1 d) (car d) (nth 2 d)))
+
+(defun org-calendar-holiday ()
+  "List of holidays, for Diary display in Org-mode."
+  (let ((hl (check-calendar-holidays date)))
+    (if hl (mapconcat 'identity hl "; "))))
+
+(defun org-diary-sexp-entry (sexp entry date)
+  "Process a SEXP diary ENTRY for DATE."
+  (require 'diary-lib)
+  (let ((result (if calendar-debug-sexp
+                    (let ((stack-trace-on-error t))
+                      (eval (car (read-from-string sexp))))
+                  (condition-case nil
+                      (eval (car (read-from-string sexp)))
+                    (error
+                     (beep)
+                     (message "Bad sexp at line %d in %s: %s"
+                             (org-current-line)
+                             (buffer-file-name) sexp)
+                     (sleep-for 2))))))
+    (cond ((stringp result) result)
+         ((and (consp result)
+               (stringp (cdr result))) (cdr result))
+         (result entry)
+          (t nil))))
+
+(defun org-diary-to-ical-string (frombuf)
+  "Get iCalendar entreis from diary entries in buffer FROMBUF.
+This uses the icalendar.el library."
+  (let* ((tmpdir (if (featurep 'xemacs)
+                    (temp-directory)
+                  temporary-file-directory))
+        (tmpfile (make-temp-name
+                  (expand-file-name "orgics" tmpdir)))
+        buf rtn b e)
+    (save-excursion
+      (set-buffer frombuf)
+      (icalendar-export-region (point-min) (point-max) tmpfile)
+      (setq buf (find-buffer-visiting tmpfile))
+      (set-buffer buf)
+      (goto-char (point-min))
+      (if (re-search-forward "^BEGIN:VEVENT" nil t)
+         (setq b (match-beginning 0)))
+      (goto-char (point-max))
+      (if (re-search-backward "^END:VEVENT" nil t)
+         (setq e (match-end 0)))
+      (setq rtn (if (and b e) (concat (buffer-substring b e) "\n") "")))
+    (kill-buffer buf)
+    (kill-buffer frombuf)
+    (delete-file tmpfile)
+    rtn))
+
+(defun org-closest-date (start current change)
+  "Find the date closest to CURRENT that is consistent with START and CHANGE."
+  ;; Make the proper lists from the dates
+  (catch 'exit
+    (let ((a1 '(("d" . day) ("w" . week) ("m" . month) ("y" . year)))
+         dn dw sday cday n1 n2
+         d m y y1 y2 date1 date2 nmonths nm ny m2)
+
+      (setq start (org-date-to-gregorian start)
+           current (org-date-to-gregorian
+                    (if org-agenda-repeating-timestamp-show-all
+                        current
+                      (time-to-days (current-time))))
+           sday (calendar-absolute-from-gregorian start)
+           cday  (calendar-absolute-from-gregorian current))
+
+      (if (<= cday sday) (throw 'exit sday))
+
+      (if (string-match "\\(\\+[0-9]+\\)\\([dwmy]\\)" change)
+         (setq dn (string-to-number (match-string 1 change))
+               dw (cdr (assoc (match-string 2 change) a1)))
+       (error "Invalid change specifyer: %s" change))
+      (if (eq dw 'week) (setq dw 'day dn (* 7 dn)))
+      (cond
+       ((eq dw 'day)
+       (setq n1 (+ sday (* dn (floor (/ (- cday sday) dn))))
+             n2 (+ n1 dn)))
+       ((eq dw 'year)
+       (setq d (nth 1 start) m (car start) y1 (nth 2 start) y2 (nth 2 current))
+       (setq y1 (+ (* (floor (/ (- y2 y1) dn)) dn) y1))
+       (setq date1 (list m d y1)
+             n1 (calendar-absolute-from-gregorian date1)
+             date2 (list m d (+ y1 (* (if (< n1 cday) 1 -1) dn)))
+             n2 (calendar-absolute-from-gregorian date2)))
+       ((eq dw 'month)
+       ;; approx number of month between the tow dates
+       (setq nmonths (floor (/ (- cday sday) 30.436875)))
+       ;; How often does dn fit in there?
+       (setq d (nth 1 start) m (car start) y (nth 2 start)
+             nm (* dn (max 0 (1- (floor (/ nmonths dn)))))
+             m (+ m nm)
+             ny (floor (/ m 12))
+             y (+ y ny)
+             m (- m (* ny 12)))
+       (while (> m 12) (setq m (- m 12) y (1+ y)))
+       (setq n1 (calendar-absolute-from-gregorian (list m d y)))
+       (setq m2 (+ m dn) y2 y)
+       (if (> m2 12) (setq y2 (1+ y2) m2 (- m2 12)))
+       (setq n2 (calendar-absolute-from-gregorian (list m2 d y2)))
+       (while (< n2 cday)
+         (setq n1 n2 m m2 y y2)
+         (setq m2 (+ m dn) y2 y)
+         (if (> m2 12) (setq y2 (1+ y2) m2 (- m2 12)))
+         (setq n2 (calendar-absolute-from-gregorian (list m2 d y2))))))
+
+      (if org-agenda-repeating-timestamp-show-all
+         (if (> (abs (- cday n1)) (abs (- cday n2))) n2 n1)
+       (if (= cday n1) n1 n2)))))
+
+(defun org-date-to-gregorian (date)
+  "Turn any specification of DATE into a gregorian date for the calendar."
+  (cond ((integerp date) (calendar-gregorian-from-absolute date))
+       ((and (listp date) (= (length date) 3)) date)
+       ((stringp date)
+        (setq date (org-parse-time-string date))
+        (list (nth 4 date) (nth 3 date) (nth 5 date)))
+       ((listp date)
+        (list (nth 4 date) (nth 3 date) (nth 5 date)))))
+
 (defun org-parse-time-string (s &optional nodefault)
   "Parse the standard Org-mode time string.
 This should be a lot faster than the normal `parse-time-string'.
 If time is not given, defaults to 0:00.  However, with optional NODEFAULT,
 hour and minute fields will be nil if not given."
-  (if (string-match org-ts-regexp1 s)
+  (if (string-match org-ts-regexp0 s)
       (list 0
            (if (or (match-beginning 8) (not nodefault))
                (string-to-number (or (match-string 8 s) "0")))
@@ -12413,7 +16251,7 @@ With prefix ARG, change that many days."
         (ans (or (looking-at tsr)
                  (save-excursion
                    (skip-chars-backward "^[<\n\r\t")
-                   (if (> (point) 1) (backward-char 1))
+                   (if (> (point) (point-min)) (backward-char 1))
                    (and (looking-at tsr)
                         (> (- (match-end 0) pos) -1))))))
     (and (boundp 'org-ts-what)
@@ -12425,6 +16263,9 @@ With prefix ARG, change that many days."
               ((org-pos-in-match-range pos 8)      'minute)
               ((or (org-pos-in-match-range pos 4)
                    (org-pos-in-match-range pos 5)) 'day)
+              ((and (> pos (or (match-end 8) (match-end 5)))
+                    (< pos (match-end 0)))
+               (- pos (or (match-end 8) (match-end 5))))
               (t 'day))))
     ans))
 
@@ -12436,6 +16277,7 @@ in the timestamp determines what will be changed."
   (let ((pos (point))
        with-hm inactive
        org-ts-what
+       extra
        ts time time0)
     (if (not (org-at-timestamp-p t))
        (error "Not at a timestamp"))
@@ -12445,12 +16287,15 @@ in the timestamp determines what will be changed."
             (not (get-text-property (1- (point)) 'display)))
        (setq org-ts-what 'day))
     (setq org-ts-what (or what org-ts-what)
-         with-hm (<= (abs (- (cdr org-ts-lengths)
-                             (- (match-end 0) (match-beginning 0))))
-                     1)
          inactive (= (char-after (match-beginning 0)) ?\[)
          ts (match-string 0))
     (replace-match "")
+    (if (string-match
+        "\\(\\(-[012][0-9]:[0-5][0-9]\\)?\\( [-+][0-9]+[dwmy]\\)*\\)[]>]"
+        ts)
+       (setq extra (match-string 1 ts)))
+    (if (string-match "^.\\{10\\}.*?[0-9]+:[0-9][0-9]" ts)
+       (setq with-hm t))
     (setq time0 (org-parse-time-string ts))
     (setq time
          (apply 'encode-time
@@ -12462,6 +16307,8 @@ in the timestamp determines what will be changed."
                  (list (+ (if (eq org-ts-what 'month) n 0)  (nth 4 time0)))
                  (list (+ (if (eq org-ts-what 'year) n 0)   (nth 5 time0)))
                  (nthcdr 6 time0))))
+    (when (integerp org-ts-what)
+      (setq extra (org-modify-ts-extra extra org-ts-what n)))
     (if (eq what 'calendar)
        (let ((cal-date
               (save-excursion
@@ -12476,7 +16323,7 @@ in the timestamp determines what will be changed."
          (setcar (nthcdr 2 time0) (or (nth 1 time0) 0))
          (setq time (apply 'encode-time time0))))
     (setq org-last-changed-timestamp
-         (org-insert-time-stamp time with-hm inactive))
+         (org-insert-time-stamp time with-hm inactive nil nil extra))
     (org-clock-update-time-maybe)
     (goto-char pos)
     ;; Try to recenter the calendar window, if any
@@ -12485,6 +16332,36 @@ in the timestamp determines what will be changed."
             (memq org-ts-what '(day month year)))
        (org-recenter-calendar (time-to-days time)))))
 
+;; FIXME: does not yet work for lead times
+(defun org-modify-ts-extra (s pos n)
+  "Change the different parts of the lead-time and repeat fields in timestamp."
+  (let ((idx '(("d" . 0) ("w" . 1) ("m" . 2) ("y" . 3) ("d" . -1) ("y" . 4)))
+       ng h m new)
+    (when (string-match "\\(-\\([012][0-9]\\):\\([0-5][0-9]\\)\\)?\\( \\+\\([0-9]+\\)\\([dmwy]\\)\\)?" s)
+      (cond
+       ((or (org-pos-in-match-range pos 2)
+           (org-pos-in-match-range pos 3))
+       (setq m (string-to-number (match-string 3 s))
+             h (string-to-number (match-string 2 s)))
+       (if (org-pos-in-match-range pos 2)
+           (setq h (+ h n))
+         (setq m (+ m n)))
+       (if (< m 0) (setq m (+ m 60) h (1- h)))
+       (if (> m 59) (setq m (- m 60) h (1+ h)))
+       (setq h (min 24 (max 0 h)))
+       (setq ng 1 new (format "-%02d:%02d" h m)))
+       ((org-pos-in-match-range pos 6)
+       (setq ng 6 new (car (rassoc (+ n (cdr (assoc (match-string 6 s) idx))) idx))))
+       ((org-pos-in-match-range pos 5)
+       (setq ng 5 new (format "%d" (max 1 (+ n (string-to-number (match-string 5 s))))))))
+       
+      (when ng
+       (setq s (concat
+                (substring s 0 (match-beginning ng))
+                new
+                (substring s (match-end ng))))))
+    s))
+
 (defun org-recenter-calendar (date)
   "If the calendar is visible, recenter it to DATE."
   (let* ((win (selected-window))
@@ -12523,10 +16400,78 @@ If there is already a time stamp at the cursor position, update it."
   (interactive)
   (org-timestamp-change 0 'calendar))
 
+;; Make appt aware of appointments from the agenda
+(defun org-agenda-to-appt (&optional filter)
+  "Activate appointments found in `org-agenda-files'.
+When prefixed, prompt for a regular expression and use it as a
+filter: only add entries if they match this regular expression.
+
+FILTER can be a string. In this case, use this string as a
+regular expression to filter results.
+
+FILTER can also be an alist, with the car of each cell being
+either 'headline or 'category.  For example:
+
+  '((headline \"IMPORTANT\")
+    (category \"Work\"))
+
+will only add headlines containing IMPORTANT or headlines
+belonging to the category \"Work\"."
+  (interactive "P")
+  (require 'org)
+  (if (equal filter '(4))
+      (setq filter (read-from-minibuffer "Regexp filter: ")))
+  (let* ((today (org-date-to-gregorian 
+                (time-to-days (current-time))))
+        (files org-agenda-files) entries file)
+    (while (setq file (pop files))
+      (setq entries (append entries (org-agenda-get-day-entries
+                                    file today :timestamp))))
+    (setq entries (delq nil entries))
+    (mapc 
+     (lambda(x)
+       (let* ((evt (org-trim (get-text-property 1 'txt x)))
+             (cat (get-text-property 1 'org-category x))
+             (tod (get-text-property 1 'time-of-day x))
+             (ok (or (and (stringp filter) (string-match filter evt))
+                     (and (not (null filter)) (listp filter)
+                          (or (string-match 
+                               (cadr (assoc 'category filter)) cat)
+                              (string-match 
+                               (cadr (assoc 'headline filter)) evt))))))
+             ;; (setq evt (set-text-properties 0 (length event) nil evt))
+        (when (and ok tod)
+          (setq tod (number-to-string tod)
+                tod (when (string-match 
+                           "\\([0-9]\\{1,2\\}\\)\\([0-9]\\{2\\}\\)" tod)
+                      (concat (match-string 1 tod) ":"
+                              (match-string 2 tod))))
+          (appt-add tod evt)))) entries)
+    nil))
+
 ;;; The clock for measuring work time.
 
+(defvar org-mode-line-string "")
+(put 'org-mode-line-string 'risky-local-variable t)
+
+(defvar org-mode-line-timer nil)
+(defvar org-clock-heading "")
+(defvar org-clock-start-time "")
+
+(defun org-update-mode-line ()
+  (let* ((delta (- (time-to-seconds (current-time))
+                   (time-to-seconds org-clock-start-time)))
+        (h (floor delta 3600))
+        (m (floor (- delta (* 3600 h)) 60)))
+    (setq org-mode-line-string
+         (propertize (format "-[%d:%02d (%s)]" h m org-clock-heading)
+                     'help-echo "Org-mode clock is running"))
+    (force-mode-line-update)))
+
 (defvar org-clock-marker (make-marker)
   "Marker recording the last clock-in.")
+(defvar org-clock-mode-line-entry nil
+  "Information for the modeline about the running clock.")
 
 (defun org-clock-in ()
   "Start the clock on the current item.
@@ -12536,19 +16481,77 @@ If necessary, clock-out of the currently active clock."
   (let (ts)
     (save-excursion
       (org-back-to-heading t)
-      (beginning-of-line 2)
-      (when (and (looking-at (concat "[ \t]*" org-keyword-time-regexp))
-                (not (equal (match-string 1) org-clock-string)))
-       ;; First line hast scheduling info, move one further
-       (beginning-of-line 2)
-       (or (bolp) (newline)))
+      (if (looking-at org-todo-line-regexp)
+         (setq org-clock-heading (match-string 3))
+       (setq org-clock-heading "???"))
+      (setq org-clock-heading (propertize org-clock-heading 'face nil))
+      (org-clock-find-position)
+
       (insert "\n") (backward-char 1)
       (indent-relative)
       (insert org-clock-string " ")
+      (setq org-clock-start-time (current-time))
       (setq ts (org-insert-time-stamp (current-time) 'with-hm 'inactive))
       (move-marker org-clock-marker (point) (buffer-base-buffer))
+      (or global-mode-string (setq global-mode-string '("")))
+      (or (memq 'org-mode-line-string global-mode-string)
+         (setq global-mode-string
+               (append global-mode-string '(org-mode-line-string))))
+      (org-update-mode-line)
+      (setq org-mode-line-timer (run-with-timer 60 60 'org-update-mode-line))
       (message "Clock started at %s" ts))))
 
+(defun org-clock-find-position ()
+  "Find the location where the next clock line should be inserted."
+  (org-back-to-heading t)
+  (catch 'exit
+    (let ((beg (point-at-bol 2)) (end (progn (outline-next-heading) (point)))
+         (re (concat "^[ \t]*" org-clock-string))
+         (cnt 0)
+         first last)
+      (goto-char beg)
+      (when (eobp) (newline) (setq end (max (point) end)))
+      (when (re-search-forward "^[ \t]*:CLOCK:" end t)
+       ;; we seem to have a CLOCK drawer, so go there.
+       (beginning-of-line 2)
+       (throw 'exit t))
+      ;; Lets count the CLOCK lines
+      (goto-char beg)
+      (while (re-search-forward re end t)
+       (setq first (or first (match-beginning 0))
+             last (match-beginning 0)
+             cnt (1+ cnt)))
+      (when (and (integerp org-clock-into-drawer)
+                (>= (1+ cnt) org-clock-into-drawer))
+       ;; Wrap current entries into a new drawer
+       (goto-char last)
+       (beginning-of-line 2)
+       (if (org-at-item-p) (org-end-of-item))
+       (insert ":END:\n")
+       (beginning-of-line 0)
+       (org-indent-line-function)
+       (goto-char first)
+       (insert ":CLOCK:\n")
+       (beginning-of-line 0)
+       (org-indent-line-function)
+       (org-flag-drawer t)
+       (beginning-of-line 2)
+       (throw 'exit nil))
+
+      (goto-char beg)
+      (while (and (looking-at (concat "[ \t]*" org-keyword-time-regexp))
+                 (not (equal (match-string 1) org-clock-string)))
+       ;; Planning info, skip to after it
+       (beginning-of-line 2)
+       (or (bolp) (newline)))
+      (when (eq t org-clock-into-drawer)
+       (insert ":CLOCK:\n:END:\n")
+       (beginning-of-line -1)
+       (org-indent-line-function)
+       (org-flag-drawer t)
+       (beginning-of-line 2)
+       (org-indent-line-function)))))
+
 (defun org-clock-out (&optional fail-quietly)
   "Stop the currently running clock.
 If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
@@ -12565,7 +16568,8 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
               (equal (match-string 1) org-clock-string))
          (setq ts (match-string 2))
        (if fail-quietly (throw 'exit nil) (error "Clock start time is gone")))
-      (goto-char org-clock-marker)
+      (goto-char (match-end 0))
+      (delete-region (point) (point-at-eol))
       (insert "--")
       (setq te (org-insert-time-stamp (current-time) 'with-hm 'inactive))
       (setq s (- (time-to-seconds (apply 'encode-time (org-parse-time-string te)))
@@ -12576,7 +16580,16 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
            s (- s (* 60 s)))
       (insert " => " (format "%2d:%02d" h m))
       (move-marker org-clock-marker nil)
-      (org-add-log-maybe 'clock-out)
+      (let* ((logging (save-match-data (org-entry-get nil "LOGGING" t)))
+            (org-log-done (org-parse-local-options logging 'org-log-done))
+            (org-log-repeat (org-parse-local-options logging 'org-log-repeat)))
+       (org-add-log-maybe 'clock-out))
+      (when org-mode-line-timer
+       (cancel-timer org-mode-line-timer)
+       (setq org-mode-line-timer nil))
+      (setq global-mode-string
+           (delq 'org-mode-line-string global-mode-string))
+      (force-mode-line-update)
       (message "Clock stopped at %s after HH:MM = %d:%02d" te h m)))))
 
 (defun org-clock-cancel ()
@@ -12590,6 +16603,19 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
     (delete-region (1- (point-at-bol)) (point-at-eol)))
   (message "Clock canceled"))
 
+(defun org-clock-goto (&optional delete-windows)
+  "Go to the currently clocked-in entry."
+  (interactive "P")
+  (if (not (marker-buffer org-clock-marker))
+      (error "No active clock"))
+  (switch-to-buffer-other-window
+   (marker-buffer org-clock-marker))
+  (if delete-windows (delete-other-windows))
+  (goto-char org-clock-marker)
+  (org-show-entry)
+  (org-back-to-heading)
+  (recenter))
+
 (defvar org-clock-file-total-minutes nil
   "Holds the file total time in minutes, after a call to `org-clock-sum'.")
   (make-variable-buffer-local 'org-clock-file-total-minutes)
@@ -12601,7 +16627,7 @@ Puts the resulting times in minutes as a text property on each headline."
   (let* ((bmp (buffer-modified-p))
         (re (concat "^\\(\\*+\\)[ \t]\\|^[ \t]*"
                     org-clock-string
-                    "[ \t]*\\(\\[.*?\\]\\)-+\\(\\[.*?\\]\\)"))
+                    "[ \t]*\\(?:\\(\\[.*?\\]\\)-+\\(\\[.*?\\]\\)\\|=>[ \t]+\\([0-9]+\\):\\([0-9]+\\)\\)"))
         (lmax 30)
         (ltimes (make-vector lmax 0))
         (t1 0)
@@ -12612,19 +16638,24 @@ Puts the resulting times in minutes as a text property on each headline."
     (save-excursion
       (goto-char (point-max))
       (while (re-search-backward re nil t)
-       (if (match-end 2)
-           ;; A time
-           (setq ts (match-string 2)
-                 te (match-string 3)
-                 ts (time-to-seconds
-                     (apply 'encode-time (org-parse-time-string ts)))
-                 te (time-to-seconds
-                     (apply 'encode-time (org-parse-time-string te)))
-                 ts (if tstart (max ts tstart) ts)
-                 te (if tend (min te tend) te)
-                 dt (- te ts)
-                 t1 (if (> dt 0) (+ t1 (floor (/ dt 60))) t1))
-         ;; A headline
+       (cond
+        ((match-end 2)
+         ;; Two time stamps
+         (setq ts (match-string 2)
+               te (match-string 3)
+               ts (time-to-seconds
+                   (apply 'encode-time (org-parse-time-string ts)))
+               te (time-to-seconds
+                   (apply 'encode-time (org-parse-time-string te)))
+               ts (if tstart (max ts tstart) ts)
+               te (if tend (min te tend) te)
+               dt (- te ts)
+               t1 (if (> dt 0) (+ t1 (floor (/ dt 60))) t1)))
+        ((match-end 4)
+         ;; A naket time
+         (setq t1 (+ t1 (string-to-number (match-string 5))
+                     (* 60 (string-to-number (match-string 4))))))
+        (t ;; A headline
          (setq level (- (match-end 1) (match-beginning 1)))
          (when (or (> t1 0) (> (aref ltimes level) 0))
            (loop for l from 0 to level do
@@ -12633,7 +16664,7 @@ Puts the resulting times in minutes as a text property on each headline."
            (loop for l from level to (1- lmax) do
                  (aset ltimes l 0))
            (goto-char (match-beginning 0))
-           (put-text-property (point) (point-at-eol) :org-clock-minutes time))))
+           (put-text-property (point) (point-at-eol) :org-clock-minutes time)))))
       (setq org-clock-file-total-minutes (aref ltimes 0)))
     (set-buffer-modified-p bmp)))
 
@@ -12648,7 +16679,10 @@ in the echo area."
     (unless total-only
       (save-excursion
        (goto-char (point-min))
-       (while (setq p (next-single-property-change (point) :org-clock-minutes))
+       (while (or (and (equal (setq p (point)) (point-min))
+                       (get-text-property p :org-clock-minutes))
+                  (setq p (next-single-property-change
+                           (point) :org-clock-minutes)))
          (goto-char p)
          (when (setq time (get-text-property p :org-clock-minutes))
            (org-put-clock-overlay time (funcall outline-level))))
@@ -12703,8 +16737,10 @@ from the `before-change-functions' in the current buffer."
 
 (defun org-clock-out-if-current ()
   "Clock out if the current entry contains the running clock.
-This is used to stop the clock after a TODO entry is marked DONE."
-  (when (and (equal state org-done-string)
+This is used to stop the clock after a TODO entry is marked DONE,
+and is only done if the variable `org-clock-out-when-done' is not nil."
+  (when (and org-clock-out-when-done
+            (member state org-done-keywords)
             (equal (marker-buffer org-clock-marker) (current-buffer))
             (< (point) org-clock-marker)
             (> (save-excursion (outline-next-heading) (point))
@@ -12729,25 +16765,32 @@ If yes, offer to stop it and to save the buffer with the changes."
     (when (y-or-n-p "Save changed buffer?")
       (save-buffer))))
 
-(defun org-clock-report ()
+(defun org-clock-report (&optional arg)
   "Create a table containing a report about clocked time.
-If the buffer contains lines
-#+BEGIN: clocktable :maxlevel 3 :emphasize nil
-
-#+END: clocktable
-then the table will be inserted between these lines, replacing whatever
-is was there before.  If these lines are not in the buffer, the table
-is inserted at point, surrounded by the special lines.
-The BEGIN line can contain parameters.  Allowed are:
-:maxlevel   The maximum level to be included in the table.  Default is 3.
-:emphasize  t/nil, if levell 1 and level 2 should be bold/italic in the table."
-  (interactive)
+If the cursor is inside an existing clocktable block, then the table
+will be updated.  If not, a new clocktable will be inserted.
+When called with a prefix argument, move to the first clock table in the
+buffer and update it."
+  (interactive "P")
   (org-remove-clock-overlays)
-  (unless (org-find-dblock "clocktable")
+  (when arg (org-find-dblock "clocktable"))
+  (if (org-in-clocktable-p)
+      (goto-char (org-in-clocktable-p))
     (org-create-dblock (list :name "clocktable"
-                            :maxlevel 2 :emphasize nil)))
+                            :maxlevel 2 :scope 'file)))
   (org-update-dblock))
 
+(defun org-in-clocktable-p ()
+  "Check if the cursor is in a clocktable."
+  (let ((pos (point)) start)
+    (save-excursion
+      (end-of-line 1)
+      (and (re-search-backward "^#\\+BEGIN:[ \t]+clocktable" nil t)
+          (setq start (match-beginning 0))
+          (re-search-forward "^#\\+END:.*" nil t)
+          (>= (match-end 0) pos)
+          start))))
+
 (defun org-clock-update-time-maybe ()
   "If this is a CLOCK line, update it and return t.
 Otherwise, return nil."
@@ -12821,12 +16864,16 @@ the returned times will be formatted strings."
 
 (defun org-dblock-write:clocktable (params)
   "Write the standard clocktable."
-  (let ((hlchars '((1 . "*") (2 . ?/)))
+  (let ((hlchars '((1 . "*") (2 . "/")))
        (emph nil)
        (ins (make-marker))
+       (total-time nil)
        ipos time h m p level hlc hdl maxlevel
-       ts te cc block)
-    (setq maxlevel (or (plist-get params :maxlevel) 3)
+       ts te cc block beg end pos scope tbl tostring multifile)
+    (setq scope (plist-get params :scope)
+         tostring (plist-get  params :tostring)
+         multifile (plist-get  params :multifile)
+         maxlevel (or (plist-get params :maxlevel) 3)
          emph (plist-get params :emphasize)
          ts (plist-get params :tstart)
          te (plist-get params :tend)
@@ -12840,48 +16887,114 @@ the returned times will be formatted strings."
                     (apply 'encode-time (org-parse-time-string te)))))
     (move-marker ins (point))
     (setq ipos (point))
-    (insert-before-markers "Clock summary at ["
-                          (substring
-                           (format-time-string (cdr org-time-stamp-formats))
-                           1 -1)
-                          "]."
-                          (if block
-                              (format "  Considered range is /%s/." block)
-                            "")
-                          "\n\n|L|Headline|Time|\n")
-    (org-clock-sum ts te)
-    (setq h (/ org-clock-file-total-minutes 60)
-         m (- org-clock-file-total-minutes (* 60 h)))
-    (insert-before-markers "|-\n|0|" "*Total file time*| "
-                          (format "*%d:%02d*" h m)
-                          "|\n")
-    (goto-char (point-min))
-    (while (setq p (next-single-property-change (point) :org-clock-minutes))
-      (goto-char p)
-      (when (setq time (get-text-property p :org-clock-minutes))
-       (save-excursion
-         (beginning-of-line 1)
-         (when (and (looking-at "\\(\\*+\\)[ \t]+\\(.*?\\)\\([ \t]+:[0-9a-zA-Z_@:]+:\\)?[ \t]*$")
-                    (setq level (- (match-end 1) (match-beginning 1)))
-                    (<= level maxlevel))
-           (setq hlc (if emph (or (cdr (assoc level hlchars)) "") "")
-                 hdl (match-string 2)
-                 h (/ time 60)
-                 m (- time (* 60 h)))
-           (goto-char ins)
-           (if (= level 1) (insert-before-markers "|-\n"))
-           (insert-before-markers
-            "| " (int-to-string level) "|" hlc hdl hlc " |"
-            (make-string (1- level) ?|)
-            hlc
-            (format "%d:%02d" h m)
-            hlc
-            " |\n")))))
-    (goto-char ins)
-    (backward-delete-char 1)
-    (goto-char ipos)
-    (skip-chars-forward "^|")
-    (org-table-align)))
+
+    ;; Get the right scope
+    (setq pos (point))
+    (save-restriction
+      (cond
+       ((not scope))
+       ((eq scope 'file) (widen))
+       ((eq scope 'subtree) (org-narrow-to-subtree))
+       ((eq scope 'tree)
+       (while (org-up-heading-safe))
+       (org-narrow-to-subtree))
+       ((and (symbolp scope) (string-match "^tree\\([0-9]+\\)$"
+                                          (symbol-name scope)))
+       (setq level (string-to-number (match-string 1 (symbol-name scope))))
+       (catch 'exit
+         (while (org-up-heading-safe)
+           (looking-at outline-regexp)
+           (if (<= (org-reduced-level (funcall outline-level)) level)
+               (throw 'exit nil))))
+       (org-narrow-to-subtree))
+       ((or (listp scope) (eq scope 'agenda))
+       (let* ((files (if (listp scope) scope (org-agenda-files)))
+              (scope 'agenda)
+              (p1 (copy-sequence params))
+              file)
+         (plist-put p1 :tostring t)
+         (plist-put p1 :multifile t)
+         (plist-put p1 :scope 'file)
+         (org-prepare-agenda-buffers files)
+         (while (setq file (pop files))
+           (with-current-buffer (find-buffer-visiting file)
+             (push (org-clocktable-add-file
+                    file (org-dblock-write:clocktable p1)) tbl)
+             (setq total-time (+ (or total-time 0)
+                                 org-clock-file-total-minutes)))))))
+      (goto-char pos)
+      
+      (unless (eq scope 'agenda)
+       (org-clock-sum ts te)
+       (goto-char (point-min))
+       (while (setq p (next-single-property-change (point) :org-clock-minutes))
+         (goto-char p)
+         (when (setq time (get-text-property p :org-clock-minutes))
+           (save-excursion
+             (beginning-of-line 1)
+             (when (and (looking-at (org-re "\\(\\*+\\)[ \t]+\\(.*?\\)\\([ \t]+:[[:alnum:]_@:]+:\\)?[ \t]*$"))
+                        (setq level (org-reduced-level
+                                     (- (match-end 1) (match-beginning 1))))
+                        (<= level maxlevel))
+               (setq hlc (if emph (or (cdr (assoc level hlchars)) "") "")
+                     hdl (match-string 2)
+                     h (/ time 60)
+                     m (- time (* 60 h)))
+               (if (and (not multifile) (= level 1)) (push "|-" tbl))
+               (push (concat
+                      "| " (int-to-string level) "|" hlc hdl hlc " |"
+                      (make-string (1- level) ?|)
+                      hlc (format "%d:%02d" h m) hlc
+                      " |") tbl))))))
+      (setq tbl (nreverse tbl))
+      (if tostring
+         (if tbl (mapconcat 'identity tbl "\n") nil)
+       (goto-char ins)
+       (insert-before-markers
+        "Clock summary at ["
+        (substring
+         (format-time-string (cdr org-time-stamp-formats))
+         1 -1)
+        "]."
+        (if block
+            (format "  Considered range is /%s/." block)
+          "")
+        "\n\n"
+        (if (eq scope 'agenda) "|File" "")
+        "|L|Headline|Time|\n")
+       (setq total-time (or total-time org-clock-file-total-minutes)
+             h (/ total-time 60)
+             m (- total-time (* 60 h)))
+       (insert-before-markers
+        "|-\n|"
+        (if (eq scope 'agenda) "|" "")
+        "|" 
+        "*Total time*| "
+        (format "*%d:%02d*" h m)
+        "|\n|-\n")
+       (setq tbl (delq nil tbl))
+       (if (and (stringp (car tbl)) (> (length (car tbl)) 1)
+                (equal (substring (car tbl) 0 2) "|-"))
+           (pop tbl))
+       (insert-before-markers (mapconcat
+                               'identity (delq nil tbl)
+                               (if (eq scope 'agenda) "\n|-\n" "\n")))
+       (backward-delete-char 1)
+       (goto-char ipos)
+       (skip-chars-forward "^|")
+       (org-table-align)))))
+
+(defun org-clocktable-add-file (file table)
+  (if table
+      (let ((lines (org-split-string table "\n"))
+           (ff (file-name-nondirectory file)))
+       (mapconcat 'identity
+                  (mapcar (lambda (x)
+                            (if (string-match org-table-dataline-regexp x)
+                                (concat "|" ff x)
+                              x))
+                          lines)
+                  "\n"))))
 
 ;; FIXME: I don't think anybody uses this, ask David
 (defun org-collect-clock-time-entries ()
@@ -12984,86 +17097,98 @@ The following commands are available:
 
 (substitute-key-definition 'undo 'org-agenda-undo
                           org-agenda-mode-map global-map)
-(define-key org-agenda-mode-map "\C-i"     'org-agenda-goto)
-(define-key org-agenda-mode-map [(tab)]    'org-agenda-goto)
-(define-key org-agenda-mode-map "\C-m"     'org-agenda-switch-to)
-(define-key org-agenda-mode-map "\C-k"     'org-agenda-kill)
-(define-key org-agenda-mode-map "\C-c$"    'org-agenda-archive)
-(define-key org-agenda-mode-map "\C-c\C-x\C-s" 'org-agenda-archive)
-(define-key org-agenda-mode-map "$"        'org-agenda-archive)
-(define-key org-agenda-mode-map "\C-c\C-o" 'org-agenda-open-link)
-(define-key org-agenda-mode-map " "        'org-agenda-show)
-(define-key org-agenda-mode-map "\C-c\C-t" 'org-agenda-todo)
-(define-key org-agenda-mode-map "\C-c\C-xb" 'org-agenda-tree-to-indirect-buffer)
-(define-key org-agenda-mode-map "b"        'org-agenda-tree-to-indirect-buffer)
-(define-key org-agenda-mode-map "o"        'delete-other-windows)
-(define-key org-agenda-mode-map "L"        'org-agenda-recenter)
-(define-key org-agenda-mode-map "t"        'org-agenda-todo)
-(define-key org-agenda-mode-map "a"        'org-agenda-toggle-archive-tag)
-(define-key org-agenda-mode-map ":"        'org-agenda-set-tags)
-(define-key org-agenda-mode-map "."        'org-agenda-goto-today)
-(define-key org-agenda-mode-map "d"        'org-agenda-day-view)
-(define-key org-agenda-mode-map "w"        'org-agenda-week-view)
-(define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later)
-(define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier)
-(define-key org-agenda-mode-map [?\C-c ?\C-x (right)] 'org-agenda-date-later)
-(define-key org-agenda-mode-map [?\C-c ?\C-x (left)] 'org-agenda-date-earlier)
-
-(define-key org-agenda-mode-map ">" 'org-agenda-date-prompt)
-(define-key org-agenda-mode-map "\C-c\C-s" 'org-agenda-schedule)
-(define-key org-agenda-mode-map "\C-c\C-d" 'org-agenda-deadline)
+(org-defkey org-agenda-mode-map "\C-i"     'org-agenda-goto)
+(org-defkey org-agenda-mode-map [(tab)]    'org-agenda-goto)
+(org-defkey org-agenda-mode-map "\C-m"     'org-agenda-switch-to)
+(org-defkey org-agenda-mode-map "\C-k"     'org-agenda-kill)
+(org-defkey org-agenda-mode-map "\C-c$"    'org-agenda-archive)
+(org-defkey org-agenda-mode-map "\C-c\C-x\C-s" 'org-agenda-archive)
+(org-defkey org-agenda-mode-map "$"        'org-agenda-archive)
+(org-defkey org-agenda-mode-map "\C-c\C-o" 'org-agenda-open-link)
+(org-defkey org-agenda-mode-map " "        'org-agenda-show)
+(org-defkey org-agenda-mode-map "\C-c\C-t" 'org-agenda-todo)
+(org-defkey org-agenda-mode-map [(control shift right)] 'org-agenda-todo-nextset)
+(org-defkey org-agenda-mode-map [(control shift left)]  'org-agenda-todo-previousset)
+(org-defkey org-agenda-mode-map "\C-c\C-xb" 'org-agenda-tree-to-indirect-buffer)
+(org-defkey org-agenda-mode-map "b"        'org-agenda-tree-to-indirect-buffer)
+(org-defkey org-agenda-mode-map "o"        'delete-other-windows)
+(org-defkey org-agenda-mode-map "L"        'org-agenda-recenter)
+(org-defkey org-agenda-mode-map "t"        'org-agenda-todo)
+(org-defkey org-agenda-mode-map "a"        'org-agenda-toggle-archive-tag)
+(org-defkey org-agenda-mode-map ":"        'org-agenda-set-tags)
+(org-defkey org-agenda-mode-map "."        'org-agenda-goto-today)
+(org-defkey org-agenda-mode-map "j"        'org-agenda-goto-date)
+(org-defkey org-agenda-mode-map "d"        'org-agenda-day-view)
+(org-defkey org-agenda-mode-map "w"        'org-agenda-week-view)
+(org-defkey org-agenda-mode-map "m"        'org-agenda-month-view)
+(org-defkey org-agenda-mode-map "y"        'org-agenda-year-view)
+(org-defkey org-agenda-mode-map [(shift right)] 'org-agenda-date-later)
+(org-defkey org-agenda-mode-map [(shift left)] 'org-agenda-date-earlier)
+(org-defkey org-agenda-mode-map [?\C-c ?\C-x (right)] 'org-agenda-date-later)
+(org-defkey org-agenda-mode-map [?\C-c ?\C-x (left)] 'org-agenda-date-earlier)
+
+(org-defkey org-agenda-mode-map ">" 'org-agenda-date-prompt)
+(org-defkey org-agenda-mode-map "\C-c\C-s" 'org-agenda-schedule)
+(org-defkey org-agenda-mode-map "\C-c\C-d" 'org-agenda-deadline)
 (let ((l '(1 2 3 4 5 6 7 8 9 0)))
-  (while l (define-key org-agenda-mode-map
+  (while l (org-defkey org-agenda-mode-map
             (int-to-string (pop l)) 'digit-argument)))
 
-(define-key org-agenda-mode-map "f" 'org-agenda-follow-mode)
-(define-key org-agenda-mode-map "l" 'org-agenda-log-mode)
-(define-key org-agenda-mode-map "D" 'org-agenda-toggle-diary)
-(define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid)
-(define-key org-agenda-mode-map "r" 'org-agenda-redo)
-(define-key org-agenda-mode-map "q" 'org-agenda-quit)
-(define-key org-agenda-mode-map "x" 'org-agenda-exit)
-(define-key org-agenda-mode-map "s" 'org-save-all-org-buffers)
-(define-key org-agenda-mode-map "P" 'org-agenda-show-priority)
-(define-key org-agenda-mode-map "T" 'org-agenda-show-tags)
-(define-key org-agenda-mode-map "n" 'next-line)
-(define-key org-agenda-mode-map "p" 'previous-line)
-(define-key org-agenda-mode-map "\C-n" 'org-agenda-next-date-line)
-(define-key org-agenda-mode-map "\C-p" 'org-agenda-previous-date-line)
-(define-key org-agenda-mode-map "," 'org-agenda-priority)
-(define-key org-agenda-mode-map "\C-c," 'org-agenda-priority)
-(define-key org-agenda-mode-map "i" 'org-agenda-diary-entry)
-(define-key org-agenda-mode-map "c" 'org-agenda-goto-calendar)
+(org-defkey org-agenda-mode-map "f" 'org-agenda-follow-mode)
+(org-defkey org-agenda-mode-map "l" 'org-agenda-log-mode)
+(org-defkey org-agenda-mode-map "D" 'org-agenda-toggle-diary)
+(org-defkey org-agenda-mode-map "g" 'org-agenda-toggle-time-grid)
+(org-defkey org-agenda-mode-map "r" 'org-agenda-redo)
+(org-defkey org-agenda-mode-map "q" 'org-agenda-quit)
+(org-defkey org-agenda-mode-map "x" 'org-agenda-exit)
+(org-defkey org-agenda-mode-map "\C-x\C-w" 'org-write-agenda)
+(org-defkey org-agenda-mode-map "s" 'org-save-all-org-buffers)
+(org-defkey org-agenda-mode-map "\C-x\C-s" 'org-save-all-org-buffers)
+(org-defkey org-agenda-mode-map "P" 'org-agenda-show-priority)
+(org-defkey org-agenda-mode-map "T" 'org-agenda-show-tags)
+(org-defkey org-agenda-mode-map "n" 'next-line)
+(org-defkey org-agenda-mode-map "p" 'previous-line)
+(org-defkey org-agenda-mode-map "\C-c\C-n" 'org-agenda-next-date-line)
+(org-defkey org-agenda-mode-map "\C-c\C-p" 'org-agenda-previous-date-line)
+(org-defkey org-agenda-mode-map "," 'org-agenda-priority)
+(org-defkey org-agenda-mode-map "\C-c," 'org-agenda-priority)
+(org-defkey org-agenda-mode-map "i" 'org-agenda-diary-entry)
+(org-defkey org-agenda-mode-map "c" 'org-agenda-goto-calendar)
 (eval-after-load "calendar"
-  '(define-key calendar-mode-map org-calendar-to-agenda-key
+  '(org-defkey calendar-mode-map org-calendar-to-agenda-key
      'org-calendar-goto-agenda))
-(define-key org-agenda-mode-map "C" 'org-agenda-convert-date)
-(define-key org-agenda-mode-map "m" 'org-agenda-phases-of-moon)
-(define-key org-agenda-mode-map "M" 'org-agenda-phases-of-moon)
-(define-key org-agenda-mode-map "S" 'org-agenda-sunrise-sunset)
-(define-key org-agenda-mode-map "h" 'org-agenda-holidays)
-(define-key org-agenda-mode-map "H" 'org-agenda-holidays)
-(define-key org-agenda-mode-map "+" 'org-agenda-priority-up)
-(define-key org-agenda-mode-map "I" 'org-agenda-clock-in)
-(define-key org-agenda-mode-map "O" 'org-agenda-clock-out)
-(define-key org-agenda-mode-map "X" 'org-agenda-clock-cancel)
-(define-key org-agenda-mode-map "-" 'org-agenda-priority-down)
-(define-key org-agenda-mode-map (org-key 'S-up) 'org-agenda-priority-up)
-(define-key org-agenda-mode-map (org-key 'S-down) 'org-agenda-priority-down)
-(define-key org-agenda-mode-map [?\C-c ?\C-x (up)] 'org-agenda-priority-up)
-(define-key org-agenda-mode-map [?\C-c ?\C-x (down)] 'org-agenda-priority-down)
-(define-key org-agenda-mode-map [(right)] 'org-agenda-later)
-(define-key org-agenda-mode-map [(left)] 'org-agenda-earlier)
-(define-key org-agenda-mode-map "\C-c\C-x\C-c" 'org-export-icalendar-combine-agenda-files)
+(org-defkey org-agenda-mode-map "C" 'org-agenda-convert-date)
+(org-defkey org-agenda-mode-map "M" 'org-agenda-phases-of-moon)
+(org-defkey org-agenda-mode-map "S" 'org-agenda-sunrise-sunset)
+(org-defkey org-agenda-mode-map "h" 'org-agenda-holidays)
+(org-defkey org-agenda-mode-map "H" 'org-agenda-holidays)
+(org-defkey org-agenda-mode-map "\C-c\C-x\C-i" 'org-agenda-clock-in)
+(org-defkey org-agenda-mode-map "I" 'org-agenda-clock-in)
+(org-defkey org-agenda-mode-map "\C-c\C-x\C-o" 'org-agenda-clock-out)
+(org-defkey org-agenda-mode-map "O" 'org-agenda-clock-out)
+(org-defkey org-agenda-mode-map "\C-c\C-x\C-x" 'org-agenda-clock-cancel)
+(org-defkey org-agenda-mode-map "X" 'org-agenda-clock-cancel)
+(org-defkey org-agenda-mode-map "\C-c\C-x\C-j" 'org-clock-goto)
+(org-defkey org-agenda-mode-map "J" 'org-clock-goto)
+(org-defkey org-agenda-mode-map "+" 'org-agenda-priority-up)
+(org-defkey org-agenda-mode-map "-" 'org-agenda-priority-down)
+(org-defkey org-agenda-mode-map [(shift up)] 'org-agenda-priority-up)
+(org-defkey org-agenda-mode-map [(shift down)] 'org-agenda-priority-down)
+(org-defkey org-agenda-mode-map [?\C-c ?\C-x (up)] 'org-agenda-priority-up)
+(org-defkey org-agenda-mode-map [?\C-c ?\C-x (down)] 'org-agenda-priority-down)
+(org-defkey org-agenda-mode-map [(right)] 'org-agenda-later)
+(org-defkey org-agenda-mode-map [(left)] 'org-agenda-earlier)
+(org-defkey org-agenda-mode-map "\C-c\C-x\C-c" 'org-agenda-columns)
+
 (defvar org-agenda-keymap (copy-keymap org-agenda-mode-map)
   "Local keymap for agenda entries from Org-mode.")
 
-(define-key org-agenda-keymap
+(org-defkey org-agenda-keymap
   (if (featurep 'xemacs) [(button2)] [(mouse-2)]) 'org-agenda-goto-mouse)
-(define-key org-agenda-keymap
+(org-defkey org-agenda-keymap
   (if (featurep 'xemacs) [(button3)] [(mouse-3)]) 'org-agenda-show-mouse)
 (when org-agenda-mouse-1-follows-link
-  (define-key org-agenda-keymap [follow-link] 'mouse-face))
+  (org-defkey org-agenda-keymap [follow-link] 'mouse-face))
 (easy-menu-define org-agenda-menu org-agenda-mode-map "Agenda menu"
   '("Agenda"
     ("Agenda Files")
@@ -13082,17 +17207,26 @@ The following commands are available:
     ["Goto Today" org-agenda-goto-today (org-agenda-check-type nil 'agenda 'timeline)]
     ["Next Dates" org-agenda-later (org-agenda-check-type nil 'agenda)]
     ["Previous Dates" org-agenda-earlier (org-agenda-check-type nil 'agenda)]
+    ["Jump to date" org-agenda-goto-date (org-agenda-check-type nil 'agenda)]
     "--"
-    ("Tags"
+    ("Tags and Properties"
      ["Show all Tags" org-agenda-show-tags t]
-     ["Set Tags" org-agenda-set-tags t])
+     ["Set Tags current line" org-agenda-set-tags (not (org-region-active-p))]
+     ["Change tag in region" org-agenda-set-tags (org-region-active-p)]
+     "--"
+     ["Column View" org-columns t])
     ("Date/Schedule"
      ["Schedule" org-agenda-schedule t]
      ["Set Deadline" org-agenda-deadline t]
      "--"
-     ["Change date +1 day" org-agenda-date-later (org-agenda-check-type nil 'agenda 'timeline)]
-     ["Change date -1 day" org-agenda-date-earlier (org-agenda-check-type nil 'agenda 'timeline)]
-     ["Change date to ..." org-agenda-date-prompt (org-agenda-check-type nil 'agenda 'timeline)])
+     ["Change Date +1 day" org-agenda-date-later (org-agenda-check-type nil 'agenda 'timeline)]
+     ["Change Date -1 day" org-agenda-date-earlier (org-agenda-check-type nil 'agenda 'timeline)]
+     ["Change Date to ..." org-agenda-date-prompt (org-agenda-check-type nil 'agenda 'timeline)])
+    ("Clock"
+     ["Clock in" org-agenda-clock-in t]
+     ["Clock out" org-agenda-clock-out t]
+     ["Clock cancel" org-agenda-clock-cancel t]
+     ["Goto running clock" org-clock-goto t])
     ("Priority"
      ["Set Priority" org-agenda-priority t]
      ["Increase Priority" org-agenda-priority-up t]
@@ -13113,6 +17247,10 @@ The following commands are available:
       :style radio :selected (equal org-agenda-ndays 1)]
      ["Week View" org-agenda-week-view :active (org-agenda-check-type nil 'agenda)
       :style radio :selected (equal org-agenda-ndays 7)]
+     ["Month View" org-agenda-month-view :active (org-agenda-check-type nil 'agenda)
+      :style radio :selected (member org-agenda-ndays '(28 29 30 31))]
+     ["Year View" org-agenda-year-view :active (org-agenda-check-type nil 'agenda)
+      :style radio :selected (member org-agenda-ndays '(365 366))]
      "--"
      ["Show Logbook entries" org-agenda-log-mode
       :style toggle :selected org-agenda-show-log :active (org-agenda-check-type nil 'agenda 'timeline)]
@@ -13120,6 +17258,7 @@ The following commands are available:
       :style toggle :selected org-agenda-include-diary :active (org-agenda-check-type nil 'agenda)]
      ["Use Time Grid" org-agenda-toggle-time-grid
       :style toggle :selected org-agenda-use-time-grid :active (org-agenda-check-type nil 'agenda)])
+    ["Write view to file" org-write-agenda t]
     ["Rebuild buffer" org-agenda-redo t]
     ["Save all Org-mode Buffers" org-save-all-org-buffers t]
     "--"
@@ -13141,7 +17280,7 @@ The following commands are available:
   "In a series of undo commands, this is the list of remaning undo items.")
 
 (defmacro org-if-unprotected (&rest body)
-  "Execute BODY if ther is no `org-protected' text property at point."
+  "Execute BODY if there is no `org-protected' text property at point."
   (declare (debug t))
   `(unless (get-text-property (point) 'org-protected)
      ,@body))
@@ -13191,7 +17330,7 @@ that have been changed along."
        (if (pop entry)
            (with-current-buffer buf
              (let ((last-undo-buffer buf)
-                    buffer-read-only)
+                    (inhibit-read-only t))
                (unless (memq buf org-agenda-undo-has-started-in)
                  (push buf org-agenda-undo-has-started-in)
                  (make-local-variable 'pending-undo-list)
@@ -13222,7 +17361,7 @@ that have been changed along."
   "Dispatch agenda commands to collect entries to the agenda buffer.
 Prompts for a character to select a command.  Any prefix arg will be passed
 on to the selected command.  The default selections are:
-g
+
 a     Call `org-agenda-list' to display the agenda for current day or week.
 t     Call `org-todo-list' to display the global todo list.
 T     Call `org-todo-list' to display the global todo list, select only
@@ -13230,7 +17369,8 @@ T     Call `org-todo-list' to display the global todo list, select only
 m     Call `org-tags-view' to display headlines with tags matching
       a condition  (the user is prompted for the condition).
 M     Like `m', but select only TODO entries, no ordinary headlines.
-l     Create a timeeline for the current buffer.
+L     Create a timeline for the current buffer.
+e     Export views to associated files.
 
 More commands can be added by configuring the variable
 `org-agenda-custom-commands'.  In particular, specific tags and TODO keyword
@@ -13251,17 +17391,19 @@ next use of \\[org-agenda]) restricted to the current file."
       (setq org-agenda-restrict nil)
       (move-marker org-agenda-restrict-begin nil)
       (move-marker org-agenda-restrict-end nil)
+      ;; Delete old local properties
+      (put 'org-agenda-redo-command 'org-lprops nil)
       ;; Remember where this call originated
       (setq org-agenda-last-dispatch-buffer (current-buffer))
       (save-window-excursion
        (delete-other-windows)
-       (switch-to-buffer-other-window " *Agenda Commands*")
+       (org-switch-to-buffer-other-window " *Agenda Commands*")
        (erase-buffer)
        (insert (eval-when-compile
                  (let ((header
 "Press key for an agenda command:
 --------------------------------         C   Configure custom agenda commands
-a   Agenda for current week or day
+a   Agenda for current week or day       e   Export agenda views
 t   List of all TODO entries             T   Entries with special TODO kwd
 m   Match a TAGS query                   M   Like m, but only TODO entries
 L   Timeline for current buffer          #   List stuck projects (!=configure)
@@ -13279,6 +17421,9 @@ L   Timeline for current buffer          #   List stuck projects (!=configure)
                              '(face bold))
                          (cond
                           ((stringp type) type)
+                          ((eq type 'agenda) "Agenda for current week or day")
+                          ((eq type 'alltodo) "List of all TODO entries")
+                          ((eq type 'stuck) "List of stuck projects")
                           ((eq type 'todo) "TODO keyword")
                           ((eq type 'tags) "Tags query")
                           ((eq type 'tags-todo) "Tags (TODO)")
@@ -13332,7 +17477,15 @@ L   Timeline for current buffer          #   List stuck projects (!=configure)
            (progn
              (setq type (nth 1 entry) match (nth 2 entry) lprops (nth 3 entry)
                    lprops (nth 3 entry))
+             (put 'org-agenda-redo-command 'org-lprops lprops)
              (cond
+              ((eq type 'agenda)
+               (org-let lprops '(org-agenda-list current-prefix-arg)))
+              ((eq type 'alltodo)
+               (org-let lprops '(org-todo-list current-prefix-arg)))
+              ((eq type 'stuck)
+               (org-let lprops '(org-agenda-list-stuck-projects
+                                 current-prefix-arg)))
               ((eq type 'tags)
                (org-let lprops '(org-tags-view current-prefix-arg match)))
               ((eq type 'tags-todo)
@@ -13353,13 +17506,14 @@ L   Timeline for current buffer          #   List stuck projects (!=configure)
               ((fboundp type)
                (org-let lprops '(funcall type match)))
               (t (error "Invalid custom agenda command type %s" type))))
-         (org-run-agenda-series (cddr entry))))
+         (org-run-agenda-series (nth 1 entry) (cddr entry))))
        ((equal c ?C) (customize-variable 'org-agenda-custom-commands))
        ((equal c ?a) (call-interactively 'org-agenda-list))
        ((equal c ?t) (call-interactively 'org-todo-list))
        ((equal c ?T) (org-call-with-arg 'org-todo-list (or arg '(4))))
        ((equal c ?m) (call-interactively 'org-tags-view))
        ((equal c ?M) (org-call-with-arg 'org-tags-view (or arg '(4))))
+       ((equal c ?e) (call-interactively 'org-store-agenda-views))
        ((equal c ?L)
        (unless restrict-ok
          (error "This is not an Org-mode file"))
@@ -13368,10 +17522,10 @@ L   Timeline for current buffer          #   List stuck projects (!=configure)
        ((equal c ?!) (customize-variable 'org-stuck-projects))
        (t (error "Invalid key"))))))
 
-(defun org-run-agenda-series (series)
-  (org-prepare-agenda)
+(defun org-run-agenda-series (name series)
+  (org-prepare-agenda name)
   (let* ((org-agenda-multi t)
-        (redo (list 'org-run-agenda-series (list 'quote series)))
+        (redo (list 'org-run-agenda-series name (list 'quote series)))
         (cmds (car series))
         (gprops (nth 1 series))
         match ;; The byte compiler incorrectly complains about this.  Keep it!
@@ -13380,11 +17534,14 @@ L   Timeline for current buffer          #   List stuck projects (!=configure)
       (setq type (car cmd) match (nth 1 cmd) lprops (nth 2 cmd))
       (cond
        ((eq type 'agenda)
-       (call-interactively 'org-agenda-list))
+       (org-let2 gprops lprops
+         '(call-interactively 'org-agenda-list)))
        ((eq type 'alltodo)
-       (call-interactively 'org-todo-list))
+       (org-let2 gprops lprops
+         '(call-interactively 'org-todo-list)))
        ((eq type 'stuck)
-       (call-interactively 'org-agenda-list-stuck-projects))
+       (org-let2 gprops lprops
+         '(call-interactively 'org-agenda-list-stuck-projects)))
        ((eq type 'tags)
        (org-let2 gprops lprops
                  '(org-tags-view current-prefix-arg match)))
@@ -13405,17 +17562,211 @@ L   Timeline for current buffer          #   List stuck projects (!=configure)
 
 ;;;###autoload
 (defmacro org-batch-agenda (cmd-key &rest parameters)
-  "Run an agenda command in batch mode, send result to STDOUT.
-CMD-KEY is a string that is also a key in `org-agenda-custom-commands'.
+  "Run an agenda command in batch mode and send the result to STDOUT.
+If CMD-KEY is a string of length 1, it is used as a key in
+`org-agenda-custom-commands' and triggers this command.  If it is a
+longer string is is used as a tags/todo match string.
 Paramters are alternating variable names and values that will be bound
 before running the agenda command."
   (let (pars)
     (while parameters
       (push (list (pop parameters) (if parameters (pop parameters))) pars))
-    (flet ((read-char-exclusive () (string-to-char cmd-key)))
-      (eval (list 'let (nreverse pars) '(org-agenda nil))))
-    (set-buffer "*Org Agenda*")
-    (princ (buffer-string))))
+    (if (> (length cmd-key) 1)
+       (eval (list 'let (nreverse pars)
+                   (list 'org-tags-view nil cmd-key)))
+      (flet ((read-char-exclusive () (string-to-char cmd-key)))
+       (eval (list 'let (nreverse pars) '(org-agenda nil)))))
+    (set-buffer org-agenda-buffer-name)
+    (princ (org-encode-for-stdout (buffer-string)))))
+
+(defun org-encode-for-stdout (string)
+  (if (fboundp 'encode-coding-string)
+      (encode-coding-string string buffer-file-coding-system)
+    string))
+
+(defvar org-agenda-info nil)
+
+;;;###autoload
+(defmacro org-batch-agenda-csv (cmd-key &rest parameters)
+  "Run an agenda command in batch mode and send the result to STDOUT.
+If CMD-KEY is a string of length 1, it is used as a key in
+`org-agenda-custom-commands' and triggers this command.  If it is a
+longer string is is used as a tags/todo match string.
+Paramters are alternating variable names and values that will be bound
+before running the agenda command.
+
+The output gives a line for each selected agenda item.  Each
+item is a list of comma-separated values, like this:
+
+category,head,type,todo,tags,date,time,extra,priority-l,priority-n
+
+category     The category of the item
+head         The headline, without TODO kwd, TAGS and PRIORITY
+type         The type of the agenda entry, can be
+                todo               selected in TODO match
+                tagsmatch          selected in tags match
+                diary              imported from diary
+                deadline           a deadline on given date
+                scheduled          scheduled on given date
+                timestamp          entry has timestamp on given date
+                closed             entry was closed on given date
+                upcoming-deadline  warning about deadline
+                past-scheduled     forwarded scheduled item
+                block              entry has date block including g. date
+todo         The todo keyword, if any
+tags         All tags including inherited ones, separated by colons
+date         The relevant date, like 2007-2-14
+time         The time, like 15:00-16:50
+extra        Sting with extra planning info
+priority-l   The priority letter if any was given
+priority-n   The computed numerical priority
+agenda-day   The day in the agenda where this is listed"
+
+  (let (pars)
+    (while parameters
+      (push (list (pop parameters) (if parameters (pop parameters))) pars))
+    (push (list 'org-agenda-remove-tags t) pars)
+    (if (> (length cmd-key) 1)
+       (eval (list 'let (nreverse pars)
+                   (list 'org-tags-view nil cmd-key)))
+      (flet ((read-char-exclusive () (string-to-char cmd-key)))
+       (eval (list 'let (nreverse pars) '(org-agenda nil)))))
+    (set-buffer org-agenda-buffer-name)
+    (let* ((lines (org-split-string (buffer-string) "\n"))
+          line)
+      (while (setq line (pop lines))
+       (catch 'next
+         (if (not (get-text-property 0 'org-category line)) (throw 'next nil))
+         (setq org-agenda-info
+               (org-fix-agenda-info (text-properties-at 0 line)))
+         (princ
+          (org-encode-for-stdout
+           (mapconcat 'org-agenda-export-csv-mapper
+                      '(org-category txt type todo tags date time-of-day extra
+                                     priority-letter priority agenda-day)
+                     ",")))
+         (princ "\n"))))))
+
+(defun org-fix-agenda-info (props)
+  "Make sure all properties on an agenda item have a canonical form,
+so the the export commands caneasily use it."
+  (let (tmp re)
+    (when (setq tmp (plist-get props 'tags))
+      (setq props (plist-put props 'tags (mapconcat 'identity tmp ":"))))
+    (when (setq tmp (plist-get props 'date))
+      (if (integerp tmp) (setq tmp (calendar-gregorian-from-absolute tmp)))
+      (let ((calendar-date-display-form '(year "-" month "-" day)))
+       '((format "%4d, %9s %2s, %4s" dayname monthname day year))
+
+       (setq tmp (calendar-date-string tmp)))
+      (setq props (plist-put props 'date tmp)))
+    (when (setq tmp (plist-get props 'day))
+      (if (integerp tmp) (setq tmp (calendar-gregorian-from-absolute tmp)))
+      (let ((calendar-date-display-form '(year "-" month "-" day)))
+       (setq tmp (calendar-date-string tmp)))
+      (setq props (plist-put props 'day tmp))
+      (setq props (plist-put props 'agenda-day tmp)))
+    (when (setq tmp (plist-get props 'txt))
+      (when (string-match "\\[#\\([A-Z0-9]\\)\\] ?" tmp)
+       (plist-put props 'priority-letter (match-string 1 tmp))
+       (setq tmp (replace-match "" t t tmp)))
+      (when (and (setq re (plist-get props 'org-todo-regexp))
+                (setq re (concat "\\`\\.*" re " ?"))
+                (string-match re tmp))
+       (plist-put props 'todo (match-string 1 tmp))
+       (setq tmp (replace-match "" t t tmp)))
+      (plist-put props 'txt tmp)))
+  props)
+
+(defun org-agenda-export-csv-mapper (prop)
+  (let ((res (plist-get org-agenda-info prop)))
+    (setq res
+         (cond
+          ((not res) "")
+          ((stringp res) res)
+          (t (prin1-to-string res))))
+    (while (string-match "," res)
+      (setq res (replace-match ";" t t res)))
+    (org-trim res)))
+
+
+;;;###autoload
+(defun org-store-agenda-views (&rest parameters)
+  (interactive)
+  (eval (list 'org-batch-store-agenda-views)))
+
+;; FIXME, why is this a macro?????
+;;;###autoload
+(defmacro org-batch-store-agenda-views (&rest parameters)
+  "Run all custom agenda commands that have a file argument."
+  (let ((cmds org-agenda-custom-commands)
+       (pop-up-frames nil)
+       (dir default-directory)
+       pars cmd thiscmdkey files opts)
+    (while parameters
+      (push (list (pop parameters) (if parameters (pop parameters))) pars))
+    (setq pars (reverse pars))
+    (save-window-excursion
+      (while cmds
+       (setq cmd (pop cmds)
+             thiscmdkey (car cmd)
+             opts (nth 3 cmd)
+             files (nth 4 cmd))
+       (if (stringp files) (setq files (list files)))
+       (when files
+         (flet ((read-char-exclusive () (string-to-char thiscmdkey)))
+           (eval (list 'let (append org-agenda-exporter-settings opts pars)
+                       '(org-agenda nil))))
+         (set-buffer org-agenda-buffer-name)
+         (while files
+           (eval (list 'let (append org-agenda-exporter-settings opts pars)
+                       (list 'org-write-agenda
+                             (expand-file-name (pop files) dir) t))))
+         (and (get-buffer org-agenda-buffer-name)
+              (kill-buffer org-agenda-buffer-name)))))))
+
+(defun org-write-agenda (file &optional nosettings)
+  "Write the current buffer (an agenda view) as a file.
+Depending on the extension of the file name, plain text (.txt),
+HTML (.html or .htm) or Postscript (.ps) is produced.
+If NOSETTINGS is given, do not scope the settings of
+`org-agenda-exporter-settings' into the export commands.  This is used when
+the settings have already been scoped and we do not wish to overrule other,
+higher priority settings."
+  (interactive "FWrite agenda to file: ")
+  (if (not (file-writable-p file))
+      (error "Cannot write agenda to file %s" file))
+  (cond
+   ((string-match "\\.html?\\'" file) (require 'htmlize))
+   ((string-match "\\.ps\\'" file) (require 'ps-print)))
+  (org-let (if nosettings nil org-agenda-exporter-settings)
+    '(save-excursion
+       (save-window-excursion
+        (cond
+         ((string-match "\\.html?\\'" file)
+          (set-buffer (htmlize-buffer (current-buffer)))
+
+          (when (and org-agenda-export-html-style
+                     (string-match "<style>" org-agenda-export-html-style))
+            ;; replace <style> section with org-agenda-export-html-style
+            (goto-char (point-min))
+            (kill-region (- (search-forward "<style") 6)
+                         (search-forward "</style>"))
+            (insert org-agenda-export-html-style))
+          (write-file file)
+          (kill-buffer (current-buffer))
+          (message "HTML written to %s" file))
+         ((string-match "\\.ps\\'" file)
+          (ps-print-buffer-with-faces file)
+          (message "Postscript written to %s" file))
+         (t
+          (let ((bs (buffer-string)))
+            (find-file file)
+            (insert bs)
+            (save-buffer 0)
+            (kill-buffer (current-buffer))
+            (message "Plain text written to %s" file))))))
+    (set-buffer org-agenda-buffer-name)))
 
 (defmacro org-no-read-only (&rest body)
   "Inhibit read-only for BODY."
@@ -13440,11 +17791,19 @@ before running the agenda command."
   "Get the list of agenda files.
 Optional UNRESTRICTED means return the full list even if a restriction
 is currently in place."
-  (cond
-   ((and (not unrestricted) (get 'org-agenda-files 'org-restrict)))
-   ((stringp org-agenda-files) (org-read-agenda-file-list))
-   ((listp org-agenda-files) org-agenda-files)
-   (t (error "Invalid value of `org-agenda-files'"))))
+  (let ((files
+        (cond
+         ((and (not unrestricted) (get 'org-agenda-files 'org-restrict)))
+         ((stringp org-agenda-files) (org-read-agenda-file-list))
+         ((listp org-agenda-files) org-agenda-files)
+         (t (error "Invalid value of `org-agenda-files'")))))
+    (if org-agenda-skip-unavailable-files
+       (delq nil
+             (mapcar (function
+                      (lambda (file)
+                        (and (file-readable-p file) file)))
+                     files))
+      files))) ; `org-check-agenda-file' will remove them from the list
 
 (defun org-edit-agenda-file-list ()
   "Edit the list of agenda files.
@@ -13508,20 +17867,14 @@ If the current buffer does not, find the first agenda file."
       (find-file (car fs)))
     (if (buffer-base-buffer) (switch-to-buffer (buffer-base-buffer)))))
 
-(defun org-agenda-file-to-end ()
-  "Move/add the current file to the end of the agenda file list.
-If the file is not present in the list, it is appended to the list.  If it is
-present, it is moved there."
-  (interactive)
-  (org-agenda-file-to-front 'to-end))
-
 (defun org-agenda-file-to-front (&optional to-end)
   "Move/add the current file to the top of the agenda file list.
 If the file is not present in the list, it is added to the front.  If it is
 present, it is moved there.  With optional argument TO-END, add/move to the
 end of the list."
   (interactive "P")
-  (let ((file-alist (mapcar (lambda (x)
+  (let ((org-agenda-skip-unavailable-files nil)
+       (file-alist (mapcar (lambda (x)
                              (cons (file-truename x) x))
                            (org-agenda-files t)))
        (ctf (file-truename buffer-file-name))
@@ -13542,7 +17895,8 @@ end of the list."
 These are the files which are being checked for agenda entries.
 Optional argument FILE means, use this file instead of the current."
   (interactive)
-  (let* ((file (or file buffer-file-name))
+  (let* ((org-agenda-skip-unavailable-files nil)
+        (file (or file buffer-file-name))
         (true-file (file-truename file))
         (afile (abbreviate-file-name file))
         (files (delq nil (mapcar
@@ -13578,16 +17932,23 @@ Optional argument FILE means, use this file instead of the current."
 (defvar org-agenda-multi nil)  ; dynammically scoped
 (defvar org-agenda-buffer-name "*Org Agenda*")
 (defvar org-pre-agenda-window-conf nil)
-(defun org-prepare-agenda ()
+(defvar org-agenda-name nil)
+(defun org-prepare-agenda (&optional name)
+  (setq org-todo-keywords-for-agenda nil)
+  (setq org-done-keywords-for-agenda nil)
   (if org-agenda-multi
       (progn
        (setq buffer-read-only nil)
        (goto-char (point-max))
-       (unless (= (point) 1)
+       (unless (or (bobp) org-agenda-compact-blocks)
          (insert "\n" (make-string (window-width) ?=) "\n"))
        (narrow-to-region (point) (point-max)))
     (org-agenda-maybe-reset-markers 'force)
     (org-prepare-agenda-buffers (org-agenda-files))
+    (setq org-todo-keywords-for-agenda
+         (org-uniquify org-todo-keywords-for-agenda))
+    (setq org-done-keywords-for-agenda
+         (org-uniquify org-done-keywords-for-agenda))
     (let* ((abuf (get-buffer-create org-agenda-buffer-name))
           (awin (get-buffer-window abuf)))
       (cond
@@ -13597,27 +17958,38 @@ Optional argument FILE means, use this file instead of the current."
        ((equal org-agenda-window-setup 'current-window)
        (switch-to-buffer abuf))
        ((equal org-agenda-window-setup 'other-window)
-       (switch-to-buffer-other-window abuf))
+       (org-switch-to-buffer-other-window abuf))
        ((equal org-agenda-window-setup 'other-frame)
        (switch-to-buffer-other-frame abuf))
        ((equal org-agenda-window-setup 'reorganize-frame)
        (delete-other-windows)
-       (switch-to-buffer-other-window abuf))))
+       (org-switch-to-buffer-other-window abuf))))
     (setq buffer-read-only nil)
     (erase-buffer)
-    (org-agenda-mode))
+    (org-agenda-mode)
+    (and name (not org-agenda-name)
+        (org-set-local 'org-agenda-name name)))
   (setq buffer-read-only nil))
 
 (defun org-finalize-agenda ()
   "Finishing touch for the agenda buffer, called just before displaying it."
   (unless org-agenda-multi
-    (org-agenda-align-tags)
     (save-excursion
-      (let ((buffer-read-only))
+      (let ((inhibit-read-only t))
        (goto-char (point-min))
        (while (org-activate-bracket-links (point-max))
          (add-text-properties (match-beginning 0) (match-end 0)
-                              '(face org-link))))
+                              '(face org-link)))
+       (org-agenda-align-tags)
+       (unless org-agenda-with-colors
+         (remove-text-properties (point-min) (point-max) '(face nil))))
+      (if (and (boundp 'org-overriding-columns-format)
+              org-overriding-columns-format)
+         (org-set-local 'org-overriding-columns-format
+                        org-overriding-columns-format))
+      (if (and (boundp 'org-agenda-view-columns-initially)
+              org-agenda-view-columns-initially)
+         (org-agenda-columns))
       (run-hooks 'org-finalize-agenda-hook))))
 
 (defun org-prepare-agenda-buffers (files)
@@ -13626,6 +17998,7 @@ Optional argument FILE means, use this file instead of the current."
   (let ((pa '(:org-archived t))
        (pc '(:org-comment t))
        (pall '(:org-archived t :org-comment t))
+       (inhibit-read-only t)
        (rea (concat ":" org-archive-tag ":"))
             bmp file re)
     (save-excursion
@@ -13635,6 +18008,11 @@ Optional argument FILE means, use this file instead of the current."
          (set-buffer (org-get-agenda-file-buffer file))
          (widen)
          (setq bmp (buffer-modified-p))
+         (org-refresh-category-properties)
+         (setq org-todo-keywords-for-agenda
+               (append org-todo-keywords-for-agenda org-todo-keywords-1))
+         (setq org-done-keywords-for-agenda
+               (append org-done-keywords-for-agenda org-done-keywords))
          (save-excursion
            (remove-text-properties (point-min) (point-max) pall)
            (when org-agenda-skip-archived-trees
@@ -13651,18 +18029,20 @@ Optional argument FILE means, use this file instead of the current."
 
 (defvar org-agenda-skip-function nil
   "Function to be called at each match during agenda construction.
-If this function return nil, the current match should not be skipped.
+If this function returns nil, the current match should not be skipped.
 Otherwise, the function must return a position from where the search
 should be continued.
+This may also be a Lisp form, it will be evaluated.
 Never set this variable using `setq' or so, because then it will apply
 to all future agenda commands.  Instead, bind it with `let' to scope
-it dynamically into the agenda-constructing command.")
+it dynamically into the agenda-constructing command.  A good way to set
+it is through options in org-agenda-custom-commands.")
 
 (defun org-agenda-skip ()
   "Throw to `:skip' in places that should be skipped.
 Also moves point to the end of the skipped region, so that search can
 continue from there."
-  (let ((p (point-at-bol)) to)
+  (let ((p (point-at-bol)) to fp)
     (and org-agenda-skip-archived-trees
         (get-text-property p :org-archived)
         (org-end-of-subtree t)
@@ -13671,10 +18051,13 @@ continue from there."
         (org-end-of-subtree t)
         (throw :skip t))
     (if (equal (char-after p) ?#) (throw :skip t))
-    (when (and (functionp org-agenda-skip-function)
+    (when (and (or (setq fp (functionp org-agenda-skip-function))
+                  (consp org-agenda-skip-function))
               (setq to (save-excursion
                          (save-match-data
-                           (funcall org-agenda-skip-function)))))
+                           (if fp
+                               (funcall org-agenda-skip-function)
+                             (eval org-agenda-skip-function))))))
       (goto-char to)
       (throw :skip t))))
 
@@ -13728,34 +18111,10 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved
        (with-current-buffer buf (save-buffer)))
       (kill-buffer buf))))
 
-(defvar org-category-table nil)
-(defun org-get-category-table ()
-  "Get the table of categories and positions in current buffer."
-  (let (tbl)
-    (save-excursion
-      (goto-char (point-min))
-      (while (re-search-forward "\\(^\\|\r\\)#\\+CATEGORY:[ \t]*\\(.*\\)" nil t)
-       (push (cons (point) (org-trim (match-string 2))) tbl)))
-    tbl))
-
 (defun org-get-category (&optional pos)
   "Get the category applying to position POS."
-  (if (not org-category-table)
-      (cond
-       ((null org-category)
-       (setq org-category
-             (if buffer-file-name
-                 (file-name-sans-extension
-                  (file-name-nondirectory buffer-file-name))
-               "???")))
-       ((symbolp org-category) (symbol-name org-category))
-       (t org-category))
-    (let ((tbl org-category-table)
-         (pos (or pos (point))))
-      (while (and tbl (> (caar tbl) pos))
-       (pop tbl))
-      (or (cdar tbl) (cdr (nth (1- (length org-category-table))
-                              org-category-table))))))
+  (get-text-property (or pos (point)) 'org-category))
+
 ;;; Agenda timeline
 
 (defun org-timeline (&optional include-all)
@@ -13785,23 +18144,25 @@ dates."
         s e rtn d emptyp)
     (setq org-agenda-redo-command
          (list 'progn
-               (list 'switch-to-buffer-other-window (current-buffer))
+               (list 'org-switch-to-buffer-other-window (current-buffer))
                (list 'org-timeline (list 'quote include-all))))
     (if (not dopast)
        ;; Remove past dates from the list of dates.
        (setq day-numbers (delq nil (mapcar (lambda(x)
                                              (if (>= x today) x nil))
                                            day-numbers))))
-    (org-prepare-agenda)
+    (org-prepare-agenda (concat "Timeline "
+                               (file-name-nondirectory buffer-file-name)))
     (if doclosed (push :closed args))
     (push :timestamp args)
+    (push :sexp args)
     (if dotodo (push :todo args))
     (while (setq d (pop day-numbers))
       (if (and (listp d) (eq (car d) :omitted))
          (progn
            (setq s (point))
            (insert (format "\n[... %d empty days omitted]\n\n" (cdr d)))
-           (put-text-property s (1- (point)) 'face 'org-level-3))
+           (put-text-property s (1- (point)) 'face 'org-agenda-structure))
        (if (listp d) (setq d (car d) emptyp t) (setq emptyp nil))
        (if (and (>= d today)
                 dopast
@@ -13812,19 +18173,17 @@ dates."
        (setq date (calendar-gregorian-from-absolute d))
        (setq s (point))
        (setq rtn (and (not emptyp)
-                      (apply 'org-agenda-get-day-entries
-                             entry date args)))
+                      (apply 'org-agenda-get-day-entries entry
+                             date args)))
        (if (or rtn (equal d today) org-timeline-show-empty-dates)
            (progn
-             (insert (calendar-day-name date) " "
-                     (number-to-string (extract-calendar-day date)) " "
-                     (calendar-month-name (extract-calendar-month date)) " "
-                     (number-to-string (extract-calendar-year date)) "\n")
-; FIXME: this gives a timezone problem
-;            (insert (format-time-string org-agenda-date-format
-;                                        (calendar-time-from-absolute d 0))
-;                    "\n")
-             (put-text-property s (1- (point)) 'face 'org-level-3)
+             (insert
+              (if (stringp org-agenda-format-date)
+                  (format-time-string org-agenda-format-date
+                                      (org-time-from-absolute date))
+                (funcall org-agenda-format-date date))
+              "\n")
+             (put-text-property s (1- (point)) 'face 'org-agenda-structure)
              (put-text-property s (1- (point)) 'org-date-line t)
              (if (equal d today)
                  (put-text-property s (1- (point)) 'org-today t))
@@ -13880,11 +18239,13 @@ When EMPTY is non-nil, also include days without any entries."
 ;;; Agenda Daily/Weekly
 
 (defvar org-agenda-overriding-arguments nil) ; dynamically scoped parameter
+(defvar org-agenda-start-day nil) ; dynamically scoped parameter
 (defvar org-agenda-last-arguments nil
   "The arguments of the previous call to org-agenda")
 (defvar org-starting-day nil) ; local variable in the agenda buffer
+(defvar org-agenda-span nil) ; local variable in the agenda buffer
 (defvar org-include-all-loc nil) ; local variable
-
+(defvar org-agenda-remove-date nil) ; dynamically scoped
 
 ;;;###autoload
 (defun org-agenda-list (&optional include-all start-day ndays)
@@ -13900,18 +18261,22 @@ START-DAY defaults to TODAY, or to the most recent match for the weekday
 given in `org-agenda-start-on-weekday'.
 NDAYS defaults to `org-agenda-ndays'."
   (interactive "P")
+  (setq ndays (or ndays org-agenda-ndays)
+       start-day (or start-day org-agenda-start-day))
   (if org-agenda-overriding-arguments
       (setq include-all (car org-agenda-overriding-arguments)
            start-day (nth 1 org-agenda-overriding-arguments)
            ndays (nth 2 org-agenda-overriding-arguments)))
+  (if (stringp start-day)
+      ;; Convert to an absolute day number
+      (setq start-day (time-to-days (org-read-date nil t start-day))))
   (setq org-agenda-last-arguments (list include-all start-day ndays))
   (org-compile-prefix-format 'agenda)
   (org-set-sorting-strategy 'agenda)
   (require 'calendar)
   (let* ((org-agenda-start-on-weekday
-         (if (or (equal ndays 1)
-                 (and (null ndays) (equal 1 org-agenda-ndays)))
-             nil org-agenda-start-on-weekday))
+         (if (or (equal ndays 7) (and (null ndays) (equal 7 org-agenda-ndays)))
+             org-agenda-start-on-weekday nil))
         (thefiles (org-agenda-files))
         (files thefiles)
         (today (time-to-days (current-time)))
@@ -13936,9 +18301,11 @@ NDAYS defaults to `org-agenda-ndays'."
       (push (1+ (car day-numbers)) day-numbers)
       (setq ndays (1- ndays)))
     (setq day-numbers (nreverse day-numbers))
-    (org-prepare-agenda)
+    (org-prepare-agenda "Day/Week")
     (org-set-local 'org-starting-day (car day-numbers))
     (org-set-local 'org-include-all-loc include-all)
+    (org-set-local 'org-agenda-span
+                  (org-agenda-ndays-to-span nd))
     (when (and (or include-all org-agenda-include-all-todo)
               (member today day-numbers))
       (setq files thefiles
@@ -13953,11 +18320,14 @@ NDAYS defaults to `org-agenda-ndays'."
       (when rtnall
        (insert "ALL CURRENTLY OPEN TODO ITEMS:\n")
        (add-text-properties (point-min) (1- (point))
-                            (list 'face 'org-level-3))
+                            (list 'face 'org-agenda-structure))
        (insert (org-finalize-agenda-entries rtnall) "\n")))
-    (setq s (point))
-    (insert (if (= nd 7) "Week-" "Day-") "agenda:\n")
-    (add-text-properties s (1- (point)) (list 'face 'org-level-3))
+    (unless org-agenda-compact-blocks
+      (setq s (point))
+      (insert (capitalize (symbol-name (org-agenda-ndays-to-span nd)))
+             "-agenda:\n")
+      (add-text-properties s (1- (point)) (list 'face 'org-agenda-structure
+                                               'org-date-line t)))
     (while (setq d (pop day-numbers))
       (setq date (calendar-gregorian-from-absolute d)
            s (point))
@@ -13974,10 +18344,10 @@ NDAYS defaults to `org-agenda-ndays'."
          (if org-agenda-show-log
              (setq rtn (org-agenda-get-day-entries
                         file date
-                        :deadline :scheduled :timestamp :closed))
+                        :deadline :scheduled :timestamp :sexp :closed))
            (setq rtn (org-agenda-get-day-entries
                       file date
-                      :deadline :scheduled :timestamp)))
+                      :deadline :scheduled :sexp :timestamp)))
          (setq rtnall (append rtnall rtn))))
       (if org-agenda-include-diary
          (progn
@@ -13986,15 +18356,13 @@ NDAYS defaults to `org-agenda-ndays'."
            (setq rtnall (append rtnall rtn))))
       (if (or rtnall org-agenda-show-all-dates)
          (progn
-           (insert (format "%-9s %2d %s %4d\n"
-                           (calendar-day-name date)
-                           (extract-calendar-day date)
-                           (calendar-month-name (extract-calendar-month date))
-                           (extract-calendar-year date)))
-; FIXME: this gives a timezone problem
-;          (insert (format-time-string org-agenda-date-format
-;                                      (calendar-time-from-absolute d 0)) "\n")
-           (put-text-property s (1- (point)) 'face 'org-level-3)
+           (insert
+            (if (stringp org-agenda-format-date)
+                (format-time-string org-agenda-format-date
+                                    (org-time-from-absolute date))
+              (funcall org-agenda-format-date date))
+            "\n")
+           (put-text-property s (1- (point)) 'face 'org-agenda-structure)
            (put-text-property s (1- (point)) 'org-date-line t)
            (if todayp (put-text-property s (1- (point)) 'org-today t))
            (if rtnall (insert
@@ -14019,6 +18387,9 @@ NDAYS defaults to `org-agenda-ndays'."
     (setq buffer-read-only t)
     (message "")))
 
+(defun org-agenda-ndays-to-span (n)
+  (cond ((< n 7) 'day) ((= n 7) 'week) ((< n 32) 'month) (t 'year)))
+
 ;;; Agenda TODO list
 
 (defvar org-select-this-todo-keyword nil)
@@ -14030,28 +18401,27 @@ NDAYS defaults to `org-agenda-ndays'."
 The prefix arg can be used to select a specific TODO keyword and limit
 the list to these.  When using \\[universal-argument], you will be prompted
 for a keyword.  A numeric prefix directly selects the Nth keyword in
-`org-todo-keywords'."
+`org-todo-keywords-1'."
   (interactive "P")
   (require 'calendar)
   (org-compile-prefix-format 'todo)
   (org-set-sorting-strategy 'todo)
+  (org-prepare-agenda "TODO")
   (let* ((today (time-to-days (current-time)))
         (date (calendar-gregorian-from-absolute today))
-        (kwds org-todo-keywords)
+        (kwds org-todo-keywords-for-agenda)
         (completion-ignore-case t)
         (org-select-this-todo-keyword
          (if (stringp arg) arg
            (and arg (integerp arg) (> arg 0)
-                 (nth (1- arg) org-todo-keywords))))
+                 (nth (1- arg) kwds))))
         rtn rtnall files file pos)
     (when (equal arg '(4))
       (setq org-select-this-todo-keyword
-           (completing-read "Keyword: " (mapcar 'list org-todo-keywords)
-                            nil t)))
+           (completing-read "Keyword (or KWD1|K2D2|...): "
+                            (mapcar 'list kwds) nil nil)))
     (and (equal 0 arg) (setq org-select-this-todo-keyword nil))
-    (org-prepare-agenda)
     (org-set-local 'org-last-arg arg)
-    (org-set-local 'org-todo-keywords kwds)
     (setq org-agenda-redo-command
          '(org-todo-list (or current-prefix-arg org-last-arg)))
     (setq files (org-agenda-files)
@@ -14063,23 +18433,25 @@ for a keyword.  A numeric prefix directly selects the Nth keyword in
        (setq rtnall (append rtnall rtn))))
     (if org-agenda-overriding-header
        (insert (org-add-props (copy-sequence org-agenda-overriding-header)
-                   nil 'face 'org-level-3) "\n")
+                   nil 'face 'org-agenda-structure) "\n")
       (insert "Global list of TODO items of type: ")
       (add-text-properties (point-min) (1- (point))
-                          (list 'face 'org-level-3))
+                          (list 'face 'org-agenda-structure))
       (setq pos (point))
       (insert (or org-select-this-todo-keyword "ALL") "\n")
       (add-text-properties pos (1- (point)) (list 'face 'org-warning))
       (setq pos (point))
       (unless org-agenda-multi
-       (insert
-        "Available with `N r': (0)ALL "
-        (let ((n 0))
-          (mapconcat (lambda (x)
-                       (format "(%d)%s" (setq n (1+ n)) x))
-                     org-todo-keywords " "))
-        "\n"))
-      (add-text-properties pos (1- (point)) (list 'face 'org-level-3)))
+       (insert "Available with `N r': (0)ALL")
+       (let ((n 0) s)
+         (mapc (lambda (x)
+                 (setq s (format "(%d)%s" (setq n (1+ n)) x))
+                 (if (> (+ (current-column) (string-width s) 1) (frame-width))
+                     (insert "\n                     "))
+                 (insert " " s))
+               kwds))
+       (insert "\n"))
+      (add-text-properties pos (1- (point)) (list 'face 'org-agenda-structure)))
     (when rtnall
       (insert (org-finalize-agenda-entries rtnall) "\n"))
     (goto-char (point-min))
@@ -14104,7 +18476,7 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
         buffer)
     (setq matcher (org-make-tags-matcher match)
          match (car matcher) matcher (cdr matcher))
-    (org-prepare-agenda)
+    (org-prepare-agenda (concat "TAGS " match))
     (setq org-agenda-redo-command
          (list 'org-tags-view (list 'quote todo-only)
                (list 'if 'current-prefix-arg nil match)))
@@ -14124,7 +18496,6 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
          (with-current-buffer buffer
            (unless (org-mode-p)
              (error "Agenda file %s is not in `org-mode'" file))
-           (setq org-category-table (org-get-category-table))
            (save-excursion
              (save-restriction
                (if org-agenda-restrict
@@ -14135,17 +18506,17 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
                (setq rtnall (append rtnall rtn))))))))
     (if org-agenda-overriding-header
        (insert (org-add-props (copy-sequence org-agenda-overriding-header)
-                   nil 'face 'org-level-3) "\n")
+                   nil 'face 'org-agenda-structure) "\n")
       (insert "Headlines with TAGS match: ")
       (add-text-properties (point-min) (1- (point))
-                          (list 'face 'org-level-3))
+                          (list 'face 'org-agenda-structure))
       (setq pos (point))
       (insert match "\n")
       (add-text-properties pos (1- (point)) (list 'face 'org-warning))
       (setq pos (point))
       (unless org-agenda-multi
        (insert "Press `C-u r' to search again with new search string\n"))
-      (add-text-properties pos (1- (point)) (list 'face 'org-level-3)))
+      (add-text-properties pos (1- (point)) (list 'face 'org-agenda-structure)))
     (when rtnall
       (insert (org-finalize-agenda-entries rtnall) "\n"))
     (goto-char (point-min))
@@ -14169,12 +18540,66 @@ used by user-defined selections using `org-agenda-skip-function'.")
 If yes, it returns the end position of this tree, causing agenda commands
 to skip this subtree.  This is a function that can be put into
 `org-agenda-skip-function' for the duration of a command."
-  (save-match-data
-    (let ((end (save-excursion (org-end-of-subtree t)))
-         skip)
-      (save-excursion
-       (setq skip (re-search-forward org-agenda-skip-regexp end t)))
-      (and skip end))))
+  (let ((end (save-excursion (org-end-of-subtree t)))
+       skip)
+    (save-excursion
+      (setq skip (re-search-forward org-agenda-skip-regexp end t)))
+    (and skip end)))
+
+(defun org-agenda-skip-entry-if (&rest conditions)
+  "Skip entry if any of CONDITIONS is true.
+See `org-agenda-skip-if for details."
+  (org-agenda-skip-if nil conditions))
+(defun org-agenda-skip-subtree-if (&rest conditions)
+  "Skip entry if any of CONDITIONS is true.
+See `org-agenda-skip-if for details."
+  (org-agenda-skip-if t conditions))
+
+(defun org-agenda-skip-if (subtree conditions)
+  "Checks current entity for CONDITIONS.
+If SUBTREE is non-nil, the entire subtree is checked.  Otherwise, only
+the entry, i.e. the text before the next heading is checked.
+
+CONDITIONS is a list of symbols, boolean OR is used to combine the results
+from different tests.  Valid conditions are:
+
+scheduled     Check if there is a scheduled cookie
+notscheduled  Check if there is no scheduled cookie
+deadline      Check if there is a deadline
+notdeadline   Check if there is no deadline
+regexp        Check if regexp matches
+notregexp     Check if regexp does not match.
+
+The regexp is taken from the conditions list, it must com right after the
+`regexp' of `notregexp' element.
+
+If any of these conditions is met, this function returns the end point of
+the entity, causing the search to continue from there.  This is a function
+that can be put into `org-agenda-skip-function' for the duration of a command."
+  (let (beg end m r)
+    (org-back-to-heading t)
+    (setq beg (point)
+         end (if subtree
+                 (progn (org-end-of-subtree t) (point))
+               (progn (outline-next-heading) (1- (point)))))
+    (goto-char beg)
+    (and
+     (or
+      (and (memq 'scheduled conditions)
+          (re-search-forward org-scheduled-time-regexp end t))
+      (and (memq 'notscheduled conditions)
+          (not (re-search-forward org-scheduled-time-regexp end t)))
+      (and (memq 'deadline conditions)
+          (re-search-forward org-deadline-time-regexp end t))
+      (and (memq 'notdeadline conditions)
+          (not (re-search-forward org-deadline-time-regexp end t)))
+      (and (setq m (memq 'regexp conditions))
+          (stringp (setq r (nth 1 m)))
+          (re-search-forward (nth 1 m) end t))
+      (and (setq m (memq 'notregexp conditions))
+          (stringp (setq r (nth 1 m)))
+          (not (re-search-forward (nth 1 m) end t))))
+     end)))
 
 (defun org-agenda-list-stuck-projects (&rest ignore)
   "Create agenda view for projects that are stuck.
@@ -14184,24 +18609,38 @@ of what a project is and how to check if it stuck, customize the variable
 MATCH is being ignored."
   (interactive)
   (let* ((org-agenda-skip-function 'org-agenda-skip-subtree-when-regexp-matches)
+        ;; FIXME: we could have used org-agenda-skip-if here.
         (org-agenda-overriding-header "List of stuck projects: ")
         (matcher (nth 0 org-stuck-projects))
         (todo (nth 1 org-stuck-projects))
-        (tags (nth 2 org-stuck-projects))
+        (todo-wds (if (member "*" todo)
+                      (progn
+                        (org-prepare-agenda-buffers (org-agenda-files))
+                        (org-delete-all
+                         org-done-keywords-for-agenda
+                         (copy-sequence org-todo-keywords-for-agenda)))
+                    todo))
         (todo-re (concat "^\\*+[ \t]+\\("
-                         (mapconcat 'identity todo "\\|")
+                         (mapconcat 'identity todo-wds "\\|")
                          "\\)\\>"))
-        (tags-re (concat "^\\*+.*:\\("
-                         (mapconcat 'identity tags "\\|")
-                         "\\):[a-zA-Z0-9_@:]*[ \t]*$")))
-
+        (tags (nth 2 org-stuck-projects))
+        (tags-re (if (member "*" tags)
+                     (org-re "^\\*+ .*:[[:alnum:]_@]+:[ \t]*$")
+                   (concat "^\\*+ .*:\\("
+                           (mapconcat 'identity tags "\\|")
+                           (org-re "\\):[[:alnum:]_@:]*[ \t]*$"))))
+        (gen-re (nth 3 org-stuck-projects))
+        (re-list
+         (delq nil
+               (list
+                (if todo todo-re)
+                (if tags tags-re)
+                (and gen-re (stringp gen-re) (string-match "\\S-" gen-re)
+                     gen-re)))))
     (setq org-agenda-skip-regexp
-         (cond
-          ((and todo tags)
-           (concat todo-re "\\|" tags-re))
-          (todo todo-re)
-          (tags tags-re)
-          (t (error "No information how to identify unstuck projects"))))
+         (if re-list
+             (mapconcat 'identity re-list "\\|")
+           (error "No information how to identify unstuck projects")))
     (org-tags-view nil matcher)
     (with-current-buffer org-agenda-buffer-name
       (setq org-agenda-redo-command
@@ -14216,6 +18655,7 @@ MATCH is being ignored."
   "Get the (Emacs Calendar) diary entries for DATE."
   (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*")
         (diary-display-hook '(fancy-diary-display))
+        (pop-up-frames nil)
         (list-diary-entries-hook
          (cons 'org-diary-default-entry list-diary-entries-hook))
         (diary-file-name-prefix-function nil) ; turn this feature off
@@ -14224,18 +18664,20 @@ MATCH is being ignored."
         (org-disable-agenda-to-diary t))
     (save-excursion
       (save-window-excursion
-       (list-diary-entries date 1)))  ;; Keep this name for now, compatibility
+       (funcall (if (fboundp 'diary-list-entries)
+                    'diary-list-entries 'list-diary-entries)
+                date 1)))
     (if (not (get-buffer fancy-diary-buffer))
        (setq entries nil)
       (with-current-buffer fancy-diary-buffer
        (setq buffer-read-only nil)
-       (if (= (point-max) 1)
+       (if (zerop (buffer-size))
            ;; No entries
            (setq entries nil)
          ;; Omit the date and other unnecessary stuff
          (org-agenda-cleanup-fancy-diary)
          ;; Add prefix to each line and extend the text properties
-         (if (= (point-max) 1)
+         (if (zerop (buffer-size))
              (setq entries nil)
            (setq entries (buffer-substring (point-min) (- (point-max) 1)))))
        (set-buffer-modified-p nil)
@@ -14247,7 +18689,8 @@ MATCH is being ignored."
             (lambda (x)
               (setq x (org-format-agenda-item "" x "Diary" nil 'time))
               ;; Extend the text properties to the beginning of the line
-              (org-add-props x (text-properties-at (1- (length x)) x)))
+              (org-add-props x (text-properties-at (1- (length x)) x)
+                'type "diary" 'date date))
             entries)))))
 
 (defun org-agenda-cleanup-fancy-diary ()
@@ -14289,8 +18732,10 @@ date.  It also removes lines that contain only whitespace."
   (org-add-props string nil
     'mouse-face 'highlight
     'keymap org-agenda-keymap
-    'help-echo (format "mouse-2 or RET jump to diary file %s"
-                      (abbreviate-file-name buffer-file-name))
+    'help-echo (if buffer-file-name
+                  (format "mouse-2 or RET jump to diary file %s"
+                          (abbreviate-file-name buffer-file-name))
+                "")
     'org-agenda-diary-link t
     'org-marker (org-agenda-new-marker (point-at-bol))))
 
@@ -14316,6 +18761,8 @@ items should be listed.  The following arguments are allowed:
                 date range matching the selected date.  Deadlines will
                 also be listed, on the expiration day.
 
+   :sexp         List entries resulting from diary-like sexps.
+
    :deadline     List any deadlines past due, or due within
                 `org-deadline-warning-days'.  The listing occurs only
                 in the diary for *today*, not at any other date.  If
@@ -14340,10 +18787,10 @@ all files listed in `org-agenda-files' will be checked automatically:
    &%%(org-diary)
 
 If you don't give any arguments (as in the example above), the default
-arguments (:deadline :scheduled :timestamp) are used.  So the example above may
-also be written as
+arguments (:deadline :scheduled :timestamp :sexp) are used.
+So the example above may also be written as
 
-   &%%(org-diary :deadline :timestamp :scheduled)
+   &%%(org-diary :deadline :timestamp :sexp :scheduled)
 
 The function expects the lisp variables `entry' and `date' to be provided
 by the caller, because this is how the calendar works.  Don't use this
@@ -14351,11 +18798,12 @@ function from a program - use `org-agenda-get-day-entries' instead."
   (org-agenda-maybe-reset-markers)
   (org-compile-prefix-format 'agenda)
   (org-set-sorting-strategy 'agenda)
-  (setq args (or args '(:deadline :scheduled :timestamp)))
+  (setq args (or args '(:deadline :scheduled :timestamp :sexp)))
   (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry))
                    (list entry)
                  (org-agenda-files t)))
         file rtn results)
+    (org-prepare-agenda-buffers files)
     ;; If this is called during org-agenda, don't return any entries to
     ;; the calendar.  Org Agenda will list these entries itself.
     (if org-disable-agenda-to-diary (setq files nil))
@@ -14373,7 +18821,7 @@ FILE is the path to a file to be checked for entries.  DATE is date like
 the one returned by `calendar-current-date'.  ARGS are symbols indicating
 which kind of entries should be extracted.  For details about these, see
 the documentation of `org-diary'."
-  (setq args (or args '(:deadline :scheduled :timestamp)))
+  (setq args (or args '(:deadline :scheduled :timestamp :sexp)))
   (let* ((org-startup-folded nil)
         (org-startup-align-all-tables nil)
         (buffer (if (file-exists-p file)
@@ -14386,7 +18834,6 @@ the documentation of `org-diary'."
       (with-current-buffer buffer
        (unless (org-mode-p)
          (error "Agenda file %s is not in `org-mode'" file))
-       (setq org-category-table (org-get-category-table))
        (let ((case-fold-search nil))
          (save-excursion
            (save-restriction
@@ -14406,22 +18853,26 @@ the documentation of `org-diary'."
                  (setq results (append results rtn))
                  (setq rtn (org-agenda-get-timestamps))
                  (setq results (append results rtn)))
+                ((eq arg :sexp)
+                 (setq rtn (org-agenda-get-sexps))
+                 (setq results (append results rtn)))
                 ((eq arg :scheduled)
                  (setq rtn (org-agenda-get-scheduled))
                  (setq results (append results rtn)))
                 ((eq arg :closed)
                  (setq rtn (org-agenda-get-closed))
                  (setq results (append results rtn)))
-                ((and (eq arg :deadline)
-                      (equal date (calendar-current-date)))
+                ((eq arg :deadline)
                  (setq rtn (org-agenda-get-deadlines))
                  (setq results (append results rtn))))))))
        results))))
 
+;; FIXME: this works only if the cursor is *not* at the
+;; beginning of the entry
 (defun org-entry-is-done-p ()
   "Is the current entry marked DONE?"
   (save-excursion
-    (and (re-search-backward "[\r\n]\\*" nil t)
+    (and (re-search-backward "[\r\n]\\*" nil t)
         (looking-at org-nl-done-regexp))))
 
 (defun org-at-date-range-p (&optional inactive-ok)
@@ -14447,15 +18898,20 @@ the documentation of `org-diary'."
   (let* ((props (list 'face nil
                      'done-face 'org-done
                      'org-not-done-regexp org-not-done-regexp
+                     'org-todo-regexp org-todo-regexp
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
                      'help-echo
                      (format "mouse-2 or RET jump to org file %s"
                              (abbreviate-file-name buffer-file-name))))
-        (regexp (concat "[\n\r]\\*+ *\\("
+        ;; FIXME: get rid of the \n at some point  but watch out
+        (regexp (concat "^\\*+[ \t]+\\("
                         (if org-select-this-todo-keyword
-                            (concat "\\<\\(" org-select-this-todo-keyword
-                                    "\\)\\>")
+                            (if (equal org-select-this-todo-keyword "*")
+                                org-todo-regexp
+                              (concat "\\<\\("
+                                      (mapconcat 'identity (org-split-string org-select-this-todo-keyword "|") "\\|")
+                                    "\\)\\>"))
                           org-not-done-regexp)
                         "[^\n\r]*\\)"))
         marker priority category tags
@@ -14471,26 +18927,21 @@ the documentation of `org-diary'."
                    (and org-agenda-todo-ignore-deadlines (goto-char beg)
                         (re-search-forward org-deadline-time-regexp end t)
                         (org-deadline-close (match-string 1))))
-           (goto-char beg)
+           (goto-char (1+ beg))
            (or org-agenda-todo-list-sublevels (org-end-of-subtree 'invisible))
            (throw :skip nil)))
        (goto-char beg)
        (org-agenda-skip)
        (goto-char (match-beginning 1))
-       (setq marker (org-agenda-new-marker (1+ (match-beginning 0)))
+       (setq marker (org-agenda-new-marker (match-beginning 0))
              category (org-get-category)
              tags (org-get-tags-at (point))
              txt (org-format-agenda-item "" (match-string 1) category tags)
-             priority
-             (+ (org-get-priority txt)
-                (if org-todo-kwd-priority-p
-                    (- org-todo-kwd-max-priority -2
-                       (length
-                        (member (match-string 2) org-todo-keywords)))
-                    1)))
+             priority (1+ (org-get-priority txt)))
        (org-add-props txt props
          'org-marker marker 'org-hd-marker marker
-         'priority priority 'org-category category)
+         'priority priority 'org-category category
+         'type "todo")
        (push txt ee)
        (if org-agenda-todo-list-sublevels
            (goto-char (match-end 1))
@@ -14504,76 +18955,126 @@ the documentation of `org-diary'."
   "Return the date stamp information for agenda display."
   (let* ((props (list 'face nil
                      'org-not-done-regexp org-not-done-regexp
+                     'org-todo-regexp org-todo-regexp
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
                      'help-echo
                      (format "mouse-2 or RET jump to org file %s"
                              (abbreviate-file-name buffer-file-name))))
-        (regexp (regexp-quote
-                 (substring
-                  (format-time-string
-                   (car org-time-stamp-formats)
-                   (apply 'encode-time  ; DATE bound by calendar
-                          (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
-                  0 11)))
+        (d1 (calendar-absolute-from-gregorian date))
+        (remove-re
+         (concat
+          (regexp-quote
+           (format-time-string
+            "<%Y-%m-%d"
+            (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date))))
+          ".*?>"))
+        (regexp
+         (concat
+          (regexp-quote
+           (substring
+            (format-time-string
+             (car org-time-stamp-formats)
+             (apply 'encode-time  ; DATE bound by calendar
+                    (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
+            0 11))
+          "\\|\\(<[0-9]+-[0-9]+-[0-9]+[^>\n]+?\\+[0-9]+[dwmy]>\\)"
+          "\\|\\(<%%\\(([^>\n]+)\\)>\\)"))
         marker hdmarker deadlinep scheduledp donep tmp priority category
-        ee txt timestr tags)
+        ee txt timestr tags b0 b3 e3)
     (goto-char (point-min))
     (while (re-search-forward regexp nil t)
+      (setq b0 (match-beginning 0)
+           b3 (match-beginning 3) e3 (match-end 3))
       (catch :skip
-       (and (save-match-data (org-at-date-range-p)) (throw :skip nil))
+       (and (org-at-date-range-p) (throw :skip nil))
        (org-agenda-skip)
-       (setq marker (org-agenda-new-marker (match-beginning 0))
-             category (org-get-category (match-beginning 0))
+       (if (and (match-end 1)
+                (not (= d1 (org-time-string-to-absolute (match-string 1) d1))))
+           (throw :skip nil))
+       (if (and e3
+                (not (org-diary-sexp-entry (buffer-substring b3 e3) "" date)))
+           (throw :skip nil))
+       (setq marker (org-agenda-new-marker b0)
+             category (org-get-category b0)
              tmp (buffer-substring (max (point-min)
-                                        (- (match-beginning 0)
-                                           org-ds-keyword-length))
-                                   (match-beginning 0))
-             timestr (buffer-substring (match-beginning 0) (point-at-eol))
+                                        (- b0 org-ds-keyword-length))
+                                   b0)
+             timestr (if b3 "" (buffer-substring b0 (point-at-eol)))
              deadlinep (string-match org-deadline-regexp tmp)
              scheduledp (string-match org-scheduled-regexp tmp)
              donep (org-entry-is-done-p))
-       (and org-agenda-skip-scheduled-if-done
-            scheduledp donep
-            (throw :skip t))
+       (if (or scheduledp deadlinep) (throw :skip t))
        (if (string-match ">" timestr)
            ;; substring should only run to end of time stamp
            (setq timestr (substring timestr 0 (match-end 0))))
        (save-excursion
-         (if (re-search-backward "\\(^\\|\r\\)\\*+" nil t)
+         (if (re-search-backward "^\\*+ " nil t)
              (progn
-               (goto-char (match-end 1))
+               (goto-char (match-beginning 0))
                (setq hdmarker (org-agenda-new-marker)
                      tags (org-get-tags-at))
-               (looking-at "\\*+[ \t]*\\([^\r\n]+\\)")
+               (looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
                (setq txt (org-format-agenda-item
-                          (format "%s%s"
-                                  (if deadlinep  "Deadline:  " "")
-                                  (if scheduledp "Scheduled: " ""))
-                          (match-string 1) category tags timestr)))
+                          nil (match-string 1) category tags timestr nil
+                          remove-re)))
            (setq txt org-agenda-no-heading-message))
          (setq priority (org-get-priority txt))
          (org-add-props txt props
            'org-marker marker 'org-hd-marker hdmarker)
-         (if deadlinep
-             (org-add-props txt nil
-               'face (if donep 'org-done 'org-warning)
-               'undone-face 'org-warning 'done-face 'org-done
-               'org-category category 'priority (+ 100 priority))
-           (if scheduledp
-               (org-add-props txt nil
-                 'face 'org-scheduled-today
-                 'undone-face 'org-scheduled-today 'done-face 'org-done
-                 'org-category category 'priority (+ 99 priority))
-             (org-add-props txt nil 'priority priority 'org-category category)))
+         (org-add-props txt nil 'priority priority
+                        'org-category category 'date date
+                        'type "timestamp")
          (push txt ee))
        (outline-next-heading)))
     (nreverse ee)))
 
+(defun org-agenda-get-sexps ()
+  "Return the sexp information for agenda display."
+  (require 'diary-lib)
+  (let* ((props (list 'face nil
+                     'mouse-face 'highlight
+                     'keymap org-agenda-keymap
+                     'help-echo
+                     (format "mouse-2 or RET jump to org file %s"
+                             (abbreviate-file-name buffer-file-name))))
+        (regexp "^&?%%(")
+        marker category ee txt tags entry result beg b sexp sexp-entry)
+    (goto-char (point-min))
+    (while (re-search-forward regexp nil t)
+      (catch :skip
+       (org-agenda-skip)
+       (setq beg (match-beginning 0))
+       (goto-char (1- (match-end 0)))
+       (setq b (point))
+       (forward-sexp 1)
+       (setq sexp (buffer-substring b (point)))
+       (setq sexp-entry (if (looking-at "[ \t]*\\(\\S-.*\\)")
+                            (org-trim (match-string 1))
+                          ""))
+       (setq result (org-diary-sexp-entry sexp sexp-entry date))
+       (when result
+         (setq marker (org-agenda-new-marker beg)
+               category (org-get-category beg))
+
+         (if (string-match "\\S-" result)
+             (setq txt result)
+           (setq txt "SEXP entry returned empty string"))
+
+         (setq txt (org-format-agenda-item
+                     "" txt category tags 'time))
+         (org-add-props txt props 'org-marker marker)
+         (org-add-props txt nil
+           'org-category category 'date date
+           'type "sexp")
+         (push txt ee))))
+    (nreverse ee)))
+
 (defun org-agenda-get-closed ()
   "Return the logged TODO entries for agenda display."
   (let* ((props (list 'mouse-face 'highlight
                      'org-not-done-regexp org-not-done-regexp
+                     'org-todo-regexp org-todo-regexp
                      'keymap org-agenda-keymap
                      'help-echo
                      (format "mouse-2 or RET jump to org file %s"
@@ -14603,12 +19104,12 @@ the documentation of `org-diary'."
            ;; substring should only run to end of time stamp
            (setq timestr (substring timestr 0 (match-end 0))))
        (save-excursion
-         (if (re-search-backward "\\(^\\|\r\\)\\*+" nil t)
+         (if (re-search-backward "^\\*+ " nil t)
              (progn
-               (goto-char (match-end 1))
+               (goto-char (match-beginning 0))
                (setq hdmarker (org-agenda-new-marker)
                      tags (org-get-tags-at))
-               (looking-at "\\*+[ \t]*\\([^\r\n]+\\)")
+               (looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
                (setq txt (org-format-agenda-item
                           (if closedp "Closed:    " "Clocked:   ")
                           (match-string 1) category tags timestr)))
@@ -14617,6 +19118,7 @@ the documentation of `org-diary'."
          (org-add-props txt props
            'org-marker marker 'org-hd-marker hdmarker 'face 'org-done
            'priority priority 'org-category category
+           'type "closed" 'date date
            'undone-face 'org-warning 'done-face 'org-done)
          (push txt ee))
        (outline-next-heading)))
@@ -14624,9 +19126,9 @@ the documentation of `org-diary'."
 
 (defun org-agenda-get-deadlines ()
   "Return the deadline information for agenda display."
-  (let* ((wdays org-deadline-warning-days)
-        (props (list 'mouse-face 'highlight
+  (let* ((props (list 'mouse-face 'highlight
                      'org-not-done-regexp org-not-done-regexp
+                     'org-todo-regexp org-todo-regexp
                      'keymap org-agenda-keymap
                      'help-echo
                      (format "mouse-2 or RET jump to org file %s"
@@ -14634,54 +19136,77 @@ the documentation of `org-diary'."
         (regexp org-deadline-time-regexp)
         (todayp (equal date (calendar-current-date))) ; DATE bound by calendar
         (d1 (calendar-absolute-from-gregorian date))  ; DATE bound by calendar
-        d2 diff pos pos1 category tags
-        ee txt head face)
+        d2 diff dfrac wdays pos pos1 category tags
+        ee txt head face s upcomingp donep timestr)
     (goto-char (point-min))
     (while (re-search-forward regexp nil t)
       (catch :skip
        (org-agenda-skip)
-       (setq pos (1- (match-beginning 1))
-             d2 (time-to-days
-                 (org-time-string-to-time (match-string 1)))
-             diff (- d2 d1))
+       (setq s (match-string 1)
+             pos (1- (match-beginning 1))
+             d2 (org-time-string-to-absolute (match-string 1) d1)
+             diff (- d2 d1)
+             wdays (org-get-wdays s)
+             dfrac (/ (* 1.0 (- wdays diff)) wdays)
+             upcomingp (and todayp (> diff 0)))
        ;; When to show a deadline in the calendar:
        ;; If the expiration is within wdays warning time.
        ;; Past-due deadlines are only shown on the current date
-       (if (and (< diff wdays) todayp (not (= diff 0)))
+       (if (or (and (<= diff wdays) todayp)
+               (= diff 0))
            (save-excursion
              (setq category (org-get-category))
-             (if (re-search-backward "\\(^\\|\r\\)\\*+[ \t]*" nil t)
+             (if (re-search-backward "^\\*+[ \t]+" nil t)
                  (progn
                    (goto-char (match-end 0))
-                   (setq pos1 (match-end 1))
+                   (setq pos1 (match-beginning 0))
                    (setq tags (org-get-tags-at pos1))
                    (setq head (buffer-substring-no-properties
                                (point)
                                (progn (skip-chars-forward "^\r\n")
                                       (point))))
-                   (if (string-match org-looking-at-done-regexp head)
+                   (setq donep (string-match org-looking-at-done-regexp head))
+                   (if (string-match " \\([012]?[0-9]:[0-9][0-9]\\)" s)
+                       (setq timestr
+                             (concat (substring s (match-beginning 1)) " "))
+                     (setq timestr 'time))
+                   (if (and donep
+                            (or org-agenda-skip-deadline-if-done
+                                (not (= diff 0))))
                        (setq txt nil)
                      (setq txt (org-format-agenda-item
-                                (format "In %3d d.: " diff) head category tags))))
+                                (if (= diff 0)
+                                    "Deadline:  "
+                                  (format "In %3d d.: " diff))
+                                head category tags timestr))))
                (setq txt org-agenda-no-heading-message))
              (when txt
-               (setq face (cond ((<= diff 0) 'org-warning)
-                                ((<= diff 5) 'org-upcoming-deadline)
-                                (t nil)))
+               (setq face (org-agenda-deadline-face dfrac))
                (org-add-props txt props
                  'org-marker (org-agenda-new-marker pos)
                  'org-hd-marker (org-agenda-new-marker pos1)
-                 'priority (+ (- 10 diff) (org-get-priority txt))
+                 'priority (+ (if upcomingp (floor (* dfrac 10.)) 100)
+                              (org-get-priority txt))
                  'org-category category
-                 'face face 'undone-face face 'done-face 'org-done)
+                 'type (if upcomingp "upcoming-deadline" "deadline")
+                 'date (if upcomingp date d2)
+                 'face (if donep 'org-done face)
+                 'undone-face face 'done-face 'org-done)
                (push txt ee))))))
-    ee))
+    (nreverse ee)))
+
+(defun org-agenda-deadline-face (fraction)
+  "Return the face to displaying a deadline item.
+FRACTION is what fraction of the head-warning time has passed."
+  (let ((faces org-agenda-deadline-faces) f)
+    (catch 'exit
+      (while (setq f (pop faces))
+       (if (>= fraction (car f)) (throw 'exit (cdr f)))))))
 
 (defun org-agenda-get-scheduled ()
   "Return the scheduled information for agenda display."
-  (let* ((props (list 'face 'org-scheduled-previously
-                     'org-not-done-regexp org-not-done-regexp
-                     'undone-face 'org-scheduled-previously
+  (let* ((props (list 'org-not-done-regexp org-not-done-regexp
+                     'org-todo-regexp org-todo-regexp
                      'done-face 'org-done
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
@@ -14692,47 +19217,66 @@ the documentation of `org-diary'."
         (todayp (equal date (calendar-current-date))) ; DATE bound by calendar
         (d1 (calendar-absolute-from-gregorian date))  ; DATE bound by calendar
         d2 diff pos pos1 category tags
-        ee txt head)
+        ee txt head pastschedp donep face timestr s)
     (goto-char (point-min))
     (while (re-search-forward regexp nil t)
       (catch :skip
        (org-agenda-skip)
-       (setq pos (1- (match-beginning 1))
-             d2 (time-to-days
-                 (org-time-string-to-time (match-string 1)))
+       (setq s (match-string 1)
+             pos (1- (match-beginning 1))
+             d2 (org-time-string-to-absolute (match-string 1) d1)
              diff (- d2 d1))
+       (setq pastschedp (and todayp (< diff 0)))
        ;; When to show a scheduled item in the calendar:
        ;; If it is on or past the date.
-       (if (and (< diff 0) todayp)
+       (if (or (and (< diff 0) todayp)
+               (= diff 0))
            (save-excursion
              (setq category (org-get-category))
-             (if (re-search-backward "\\(^\\|\r\\)\\*+[ \t]*" nil t)
+             (if (re-search-backward "^\\*+[ \t]+" nil t)
                  (progn
                    (goto-char (match-end 0))
-                   (setq pos1 (match-end 1))
+                   (setq pos1 (match-beginning 0))
                    (setq tags (org-get-tags-at))
                    (setq head (buffer-substring-no-properties
                                (point)
                                (progn (skip-chars-forward "^\r\n") (point))))
-                   (if (string-match org-looking-at-done-regexp head)
+                   (setq donep (string-match org-looking-at-done-regexp head))
+                   (if (string-match " \\([012]?[0-9]:[0-9][0-9]\\)" s)
+                       (setq timestr
+                             (concat (substring s (match-beginning 1)) " "))
+                     (setq timestr 'time))
+                   (if (and donep
+                            (or org-agenda-skip-scheduled-if-done
+                                (not (= diff 0))))
                        (setq txt nil)
                      (setq txt (org-format-agenda-item
-                                (format "Sched.%2dx: " (- 1 diff)) head
-                                category tags))))
+                                (if (= diff 0)
+                                    "Scheduled: "
+                                  (format "Sched.%2dx: " (- 1 diff)))
+                                head category tags timestr))))
                (setq txt org-agenda-no-heading-message))
              (when txt
+               (setq face (if pastschedp
+                              'org-scheduled-previously
+                            'org-scheduled-today))
                (org-add-props txt props
+                 'undone-face face
+                 'face (if donep 'org-done face)
                  'org-marker (org-agenda-new-marker pos)
                  'org-hd-marker (org-agenda-new-marker pos1)
-                 'priority (+ (- 5 diff) (org-get-priority txt))
+                 'type (if pastschedp "past-scheduled" "scheduled")
+                 'date (if pastschedp d2 date)
+                 'priority (+ 94 (- 5 diff) (org-get-priority txt))
                  'org-category category)
                (push txt ee))))))
-    ee))
+    (nreverse ee)))
 
 (defun org-agenda-get-blocks ()
   "Return the date-range information for agenda display."
   (let* ((props (list 'face nil
                      'org-not-done-regexp org-not-done-regexp
+                     'org-todo-regexp org-todo-regexp
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
                      'help-echo
@@ -14757,12 +19301,12 @@ the documentation of `org-diary'."
            (save-excursion
              (setq marker (org-agenda-new-marker (point)))
              (setq category (org-get-category))
-             (if (re-search-backward "\\(^\\|\r\\)\\*+" nil t)
+             (if (re-search-backward "^\\*+ " nil t)
                  (progn
-                   (setq hdmarker (org-agenda-new-marker (match-end 1)))
-                   (goto-char (match-end 1))
+                   (goto-char (match-beginning 0))
+                   (setq hdmarker (org-agenda-new-marker (point)))
                    (setq tags (org-get-tags-at))
-                   (looking-at "\\*+[ \t]*\\([^\r\n]+\\)")
+                   (looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
                    (setq txt (org-format-agenda-item
                               (format (if (= d1 d2) "" "(%d/%d): ")
                                       (1+ (- d0 d1)) (1+ (- d2 d1)))
@@ -14771,6 +19315,7 @@ the documentation of `org-diary'."
                (setq txt org-agenda-no-heading-message))
              (org-add-props txt props
                'org-marker marker 'org-hd-marker hdmarker
+               'type "block" 'date date
                'priority (org-get-priority txt) 'org-category category)
              (push txt ee)))
        (goto-char pos)))
@@ -14779,7 +19324,6 @@ the documentation of `org-diary'."
 
 ;;; Agenda presentation and sorting
 
-;; FIXME: should I allow spaces around the dash?
 (defconst org-plain-time-of-day-regexp
   (concat
    "\\(\\<[012]?[0-9]"
@@ -14795,10 +19339,22 @@ groups carry important information:
 1  the first time, range or not
 8  the second time, if it is a range.")
 
+(defconst org-plain-time-extension-regexp
+  (concat
+   "\\(\\<[012]?[0-9]"
+   "\\(\\(:\\([0-5][0-9]\\([AaPp][Mm]\\)?\\)\\)\\|\\([AaPp][Mm]\\)\\)\\>\\)"
+   "\\+\\([0-9]+\\)\\(:\\([0-5][0-9]\\)\\)?")
+  "Regular expression to match a time range like 13:30+2:10 = 13:30-15:40.
+Examples:  11:45 or 8am-13:15 or 2:45-2:45pm.  After a match, the following
+groups carry important information:
+0  the full match
+7  hours of duration
+9  minutes of duration")
+
 (defconst org-stamp-time-of-day-regexp
   (concat
    "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} +\\sw+ +\\)"
-   "\\([012][0-9]:[0-5][0-9]\\)>"
+   "\\([012][0-9]:[0-5][0-9]\\(-\\([012][0-9]:[0-5][0-9]\\)\\)?[^\n\r>]*?\\)>"
    "\\(--?"
    "<\\1\\([012][0-9]:[0-5][0-9]\\)>\\)?")
   "Regular expression to match a timestamp time or time range.
@@ -14816,7 +19372,7 @@ The flag is set if the currently compiled format contains a `%t'.")
 The flag is set if the currently compiled format contains a `%T'.")
 
 (defun org-format-agenda-item (extra txt &optional category tags dotime
-                                    noprefix)
+                                    noprefix remove-re)
   "Format TXT to be inserted into the agenda buffer.
 In particular, it adds the prefix and corresponding text properties.  EXTRA
 must be a string and replaces the `%s' specifier in the prefix format.
@@ -14827,7 +19383,8 @@ time-of-day should be extracted from TXT for sorting of this entry, and for
 the `%t' specifier in the format.  When DOTIME is a string, this string is
 searched for a time before TXT is.  NOPREFIX is a flag and indicates that
 only the correctly processes TXT should be returned - this is used by
-`org-agenda-change-all-lines'.  TAGS can be the tags of the headline."
+`org-agenda-change-all-lines'.  TAGS can be the tags of the headline.
+Any match of REMOVE-RE will be removed from TXT."
   (save-match-data
     ;; Diary entries sometimes have extra whitespace at the beginning
     (if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt)))
@@ -14841,14 +19398,15 @@ only the correctly processes TXT should be returned - this is used by
           time    ; time and tag are needed for the eval of the prefix format
           (ts (if dotime (concat (if (stringp dotime) dotime "") txt)))
           (time-of-day (and dotime (org-get-time-of-day ts)))
-          stamp plain s0 s1 s2 rtn)
+          stamp plain s0 s1 s2 rtn srp)
       (when (and dotime time-of-day org-prefix-has-time)
        ;; Extract starting and ending time and move them to prefix
        (when (or (setq stamp (string-match org-stamp-time-of-day-regexp ts))
                  (setq plain (string-match org-plain-time-of-day-regexp ts)))
          (setq s0 (match-string 0 ts)
+               srp (and stamp (match-end 3))
                s1 (match-string (if plain 1 2) ts)
-               s2 (match-string (if plain 8 4) ts))
+               s2 (match-string (if plain 8 (if srp 4 6)) ts))
 
          ;; If the times are in TXT (not in DOTIMES), and the prefix will list
          ;; them, we might want to remove them there to avoid duplication.
@@ -14863,10 +19421,20 @@ only the correctly processes TXT should be returned - this is used by
        (if s1 (setq s1 (org-get-time-of-day s1 'string t)))
        (if s2 (setq s2 (org-get-time-of-day s2 'string t))))
 
-      (when (string-match "\\([ \t]+\\)\\(:[a-zA-Z_@0-9:]+:\\)[ \t]*$" txt)
+      (when (and s1 (not s2) org-agenda-default-appointment-duration
+                (string-match "\\([0-9]+\\):\\([0-9]+\\)" s1))
+       (let ((m (+ (string-to-number (match-string 2 s1))
+                   (* 60 (string-to-number (match-string 1 s1)))
+                   org-agenda-default-appointment-duration))
+             h)
+         (setq h (/ m 60) m (- m (* h 60)))
+         (setq s2 (format "%02d:%02d" h m))))
+
+      (when (string-match (org-re "\\([ \t]+\\)\\(:[[:alnum:]_@:]+:\\)[ \t]*$")
+                         txt)
        ;; Tags are in the string
-       (if (or (eq org-agenda-remove-tags-when-in-prefix t)
-               (and org-agenda-remove-tags-when-in-prefix
+       (if (or (eq org-agenda-remove-tags t)
+               (and org-agenda-remove-tags
                     org-prefix-has-tag))
            (setq txt (replace-match "" t t txt))
          (setq txt (replace-match
@@ -14874,6 +19442,10 @@ only the correctly processes TXT should be returned - this is used by
                             (match-string 2 txt))
                     t t txt))))
 
+      (when remove-re
+       (while (string-match remove-re txt)
+         (setq txt (replace-match "" t t txt))))
+
       ;; Create the final string
       (if noprefix
          (setq rtn txt)
@@ -14891,9 +19463,12 @@ only the correctly processes TXT should be returned - this is used by
        'org-category (downcase category) 'tags tags
        'prefix-length (- (length rtn) (length txt))
        'time-of-day time-of-day
+       'txt txt
+       'time time
+       'extra extra
        'dotime dotime))))
 
-(defvar org-agenda-sorting-strategy)
+(defvar org-agenda-sorting-strategy) ;; FIXME: can be removed?
 (defvar org-agenda-sorting-strategy-selected nil)
 
 (defun org-agenda-add-time-grid-maybe (list ndays todayp)
@@ -15012,16 +19587,18 @@ HH:MM."
     (if (eq x 'line)
        (save-excursion
          (beginning-of-line 1)
-         (setq re (get-text-property (point) 'org-not-done-regexp))
+         (setq re (get-text-property (point) 'org-todo-regexp))
          (goto-char (+ (point) (or (get-text-property (point) 'prefix-length) 0)))
          (and (looking-at (concat "[ \t]*\\.*" re))
               (add-text-properties (match-beginning 0) (match-end 0)
-                                   '(face org-todo))))
-      (setq re (concat (get-text-property 0 'org-not-done-regexp x))
+                                   (list 'face (org-get-todo-face 0)))))
+      (setq re (concat (get-text-property 0 'org-todo-regexp x))
            pl (get-text-property 0 'prefix-length x))
       (and re (equal (string-match (concat "\\(\\.*\\)" re) x (or pl 0)) pl)
-          (add-text-properties (or (match-end 1) (match-end 0)) (match-end 0)
-                               '(face org-todo) x))
+          (add-text-properties
+           (or (match-end 1) (match-end 0)) (match-end 0)
+           (list 'face (org-get-todo-face (match-string 2 x)))
+           x))
       x)))
 
 (defsubst org-cmp-priority (a b)
@@ -15034,8 +19611,8 @@ HH:MM."
 
 (defsubst org-cmp-category (a b)
   "Compare the string values of categories of strings A and B."
-  (let ((ca (or (get-text-property 1 'category a) ""))
-       (cb (or (get-text-property 1 'category b) "")))
+  (let ((ca (or (get-text-property 1 'org-category a) ""))
+       (cb (or (get-text-property 1 'org-category b) "")))
     (cond ((string-lessp ca cb) -1)
          ((string-lessp cb ca) +1)
          (t nil))))
@@ -15093,7 +19670,8 @@ If ERROR is non-nil, throw an error, otherwise just return nil."
   (let ((buf (current-buffer)))
     (if (not (one-window-p)) (delete-window))
     (kill-buffer buf)
-    (org-agenda-maybe-reset-markers 'force))
+    (org-agenda-maybe-reset-markers 'force)
+    (org-columns-remove-overlays))
   ;; Maybe restore the pre-agenda window configuration.
   (and org-agenda-restore-windows-after-quit
        (not (eq org-agenda-window-setup 'other-frame))
@@ -15122,15 +19700,21 @@ When this is the global TODO list, a prefix argument will be interpreted."
   (interactive)
   (let* ((org-agenda-keep-modes t)
         (line (org-current-line))
-        (window-line (- line (org-current-line (window-start)))))
+        (window-line (- line (org-current-line (window-start))))
+        (lprops (get 'org-agenda-redo-command 'org-lprops)))
     (message "Rebuilding agenda buffer...")
-    (eval org-agenda-redo-command)
+    (org-let lprops '(eval org-agenda-redo-command))
     (setq org-agenda-undo-list nil
          org-agenda-pending-undo-list nil)
     (message "Rebuilding agenda buffer...done")
     (goto-line line)
     (recenter window-line)))
 
+(defun org-agenda-goto-date (date)
+  "Jump to DATE in agenda."
+  (interactive (list (org-read-date)))
+  (org-agenda-list nil date))
+
 (defun org-agenda-goto-today ()
   "Go to today."
   (interactive)
@@ -15139,8 +19723,11 @@ When this is the global TODO list, a prefix argument will be interpreted."
     (cond
      (tdpos (goto-char tdpos))
      ((eq org-agenda-type 'agenda)
-      (let ((org-agenda-overriding-arguments org-agenda-last-arguments))
-       (setf (nth 1 org-agenda-overriding-arguments) nil)
+      (let* ((sd (time-to-days (current-time)))
+            (comp (org-agenda-compute-time-span sd org-agenda-span))
+            (org-agenda-overriding-arguments org-agenda-last-arguments))
+       (setf (nth 1 org-agenda-overriding-arguments) (car comp))
+       (setf (nth 2 org-agenda-overriding-arguments) (cdr comp))
        (org-agenda-redo)
        (org-agenda-find-today-or-agenda)))
      (t (error "Cannot find today")))))
@@ -15152,64 +19739,111 @@ When this is the global TODO list, a prefix argument will be interpreted."
        (point-min))))
 
 (defun org-agenda-later (arg)
-  "Go forward in time by `org-agenda-ndays' days.
-With prefix ARG, go forward that many times `org-agenda-ndays'."
+  "Go forward in time by thee current span.
+With prefix ARG, go forward that many times the current span."
   (interactive "p")
   (org-agenda-check-type t 'agenda)
-  (let ((org-agenda-overriding-arguments
-        (list (car org-agenda-last-arguments)
-              (+ org-starting-day (* arg org-agenda-ndays))
-              nil t)))
+  (let* ((span org-agenda-span)
+        (sd org-starting-day)
+        (greg (calendar-gregorian-from-absolute sd))
+        greg2 nd)
+    (cond
+     ((eq span 'day)
+      (setq sd (+ arg sd) nd 1))
+     ((eq span 'week)
+      (setq sd (+ (* 7 arg) sd) nd 7))
+     ((eq span 'month)
+      (setq greg2 (list (+ (car greg) arg) (nth 1 greg) (nth 2 greg))
+           sd (calendar-absolute-from-gregorian greg2))
+      (setcar greg2 (1+ (car greg2)))
+      (setq nd (- (calendar-absolute-from-gregorian greg2) sd)))
+     ((eq span 'year)
+      (setq greg2 (list (car greg) (nth 1 greg) (+ arg (nth 2 greg)))
+           sd (calendar-absolute-from-gregorian greg2))
+      (setcar (nthcdr 2 greg2) (1+ (nth 2 greg2)))
+      (setq nd (- (calendar-absolute-from-gregorian greg2) sd))))
+    (let ((org-agenda-overriding-arguments
+          (list (car org-agenda-last-arguments) sd nd t)))
     (org-agenda-redo)
-    (org-agenda-find-today-or-agenda)))
-
+    (org-agenda-find-today-or-agenda))))
 (defun org-agenda-earlier (arg)
-  "Go back in time by `org-agenda-ndays' days.
-With prefix ARG, go back that many times `org-agenda-ndays'."
+  "Go backward in time by the current span.
+With prefix ARG, go backward that many times the current span."
   (interactive "p")
-  (org-agenda-check-type t 'agenda)
-  (let ((org-agenda-overriding-arguments
-        (list (car org-agenda-last-arguments)
-              (- org-starting-day (* arg org-agenda-ndays))
-              nil t)))
-    (org-agenda-redo)
-    (org-agenda-find-today-or-agenda)))
+  (org-agenda-later (- arg)))
 
+(defun org-agenda-day-view ()
+  "Switch to daily view for agenda."
+  (interactive)
+  (setq org-agenda-ndays 1)
+  (org-agenda-change-time-span 'day))
 (defun org-agenda-week-view ()
-  "Switch to weekly view for agenda."
+  "Switch to daily view for agenda."
   (interactive)
-  (org-agenda-check-type t 'agenda)
-  (if (= org-agenda-ndays 7)
-      (error "This is already the week view"))
   (setq org-agenda-ndays 7)
-  (let ((org-agenda-overriding-arguments
-        (list (car org-agenda-last-arguments)
-              (or (get-text-property (point) 'day)
-                      org-starting-day)
-              nil t)))
-    (org-agenda-redo)
-    (org-agenda-find-today-or-agenda))
-  (org-agenda-set-mode-name)
-  (message "Switched to week view"))
-
-(defun org-agenda-day-view ()
+  (org-agenda-change-time-span 'week))
+(defun org-agenda-month-view ()
+  "Switch to daily view for agenda."
+  (interactive)
+  (org-agenda-change-time-span 'month))
+(defun org-agenda-year-view ()
   "Switch to daily view for agenda."
   (interactive)
+  (if (y-or-n-p "Are you sure you want to compute the agenda for an entire year? ")
+      (org-agenda-change-time-span 'year)
+    (error "Abort")))
+
+(defun org-agenda-change-time-span (span)
+  "Change the agenda view to SPAN.
+SPAN may be `day', `week', `month', `year'."
   (org-agenda-check-type t 'agenda)
-  (if (= org-agenda-ndays 1)
-      (error "This is already the day view"))
-  (setq org-agenda-ndays 1)
-  (let ((org-agenda-overriding-arguments
-        (list (car org-agenda-last-arguments)
-              (or (get-text-property (point) 'day)
-                      org-starting-day)
-              nil t)))
+  (if (equal org-agenda-span span)
+      (error "Viewing span is already \"%s\"" span))
+  (let* ((sd (or (get-text-property (point) 'day)
+               org-starting-day))
+        (computed (org-agenda-compute-time-span sd span))
+        (org-agenda-overriding-arguments
+         (list (car org-agenda-last-arguments)
+               (car computed) (cdr computed) t)))
     (org-agenda-redo)
     (org-agenda-find-today-or-agenda))
   (org-agenda-set-mode-name)
-  (message "Switched to day view"))
-
-;; FIXME: this no longer works if user make date format that starts with a blank
+  (message "Switched to %s view" span))
+
+(defun org-agenda-compute-time-span (sd span)
+  "Compute starting date and number of days for agenda.
+SPAN may be `day', `week', `month', `year'.  The return value
+is a cons cell with the starting date and the number of days,
+so that the date SD will be in that range."
+  (let* ((greg (calendar-gregorian-from-absolute sd))
+        nd)
+    (cond
+     ((eq span 'day)
+      (setq nd 1))
+     ((eq span 'week)
+      (let* ((nt (calendar-day-of-week
+                 (calendar-gregorian-from-absolute sd)))
+            (d (if org-agenda-start-on-weekday
+                   (- nt org-agenda-start-on-weekday)
+                 0)))
+       (setq sd (- sd (+ (if (< d 0) 7 0) d)))
+       (setq nd 7)))
+     ((eq span 'month)
+      (setq sd (calendar-absolute-from-gregorian
+               (list (car greg) 1 (nth 2 greg)))
+           nd (- (calendar-absolute-from-gregorian
+                  (list (1+ (car greg)) 1 (nth 2 greg)))
+                 sd)))
+     ((eq span 'year)
+      (setq sd (calendar-absolute-from-gregorian
+               (list 1 1 (nth 2 greg)))
+           nd (- (calendar-absolute-from-gregorian
+                  (list 1 1 (1+ (nth 2 greg))))
+                 sd))))
+    (cons sd nd)))
+
+;; FIXME: does not work if user makes date format that starts with a blank
 (defun org-agenda-next-date-line (&optional arg)
   "Jump to the next line indicating a date in agenda buffer."
   (interactive "p")
@@ -15243,10 +19877,10 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
   "Detach overlay INDEX."
   (funcall (if (featurep 'xemacs) 'detach-extent 'delete-overlay) org-hl))
 
+;; FIXME this is currently not used.
 (defun org-highlight-until-next-command (beg end &optional buffer)
   (org-highlight beg end buffer)
   (add-hook 'pre-command-hook 'org-unhighlight-once))
-
 (defun org-unhighlight-once ()
   (remove-hook 'pre-command-hook 'org-unhighlight-once)
   (org-unhighlight))
@@ -15340,8 +19974,13 @@ and by additional input from the age of a schedules or deadline entry."
       (save-excursion
        (and (outline-next-heading)
             (org-flag-heading nil)))) ; show the next heading
+    (run-hooks 'org-agenda-after-show-hook)
     (and highlight (org-highlight (point-at-bol) (point-at-eol)))))
 
+(defvar org-agenda-after-show-hook nil
+  "Normal hook run after an item has been shown from the agenda.
+Point is in the buffer where the item originated.")
+
 (defun org-agenda-kill ()
   "Kill the entry or subtree belonging to the current agenda entry."
   (interactive)
@@ -15350,14 +19989,15 @@ and by additional input from the age of a schedules or deadline entry."
                     (org-agenda-error)))
         (buffer (marker-buffer marker))
         (pos (marker-position marker))
+        (type (get-text-property (point) 'type))
         dbeg dend (n 0) conf)
     (org-with-remote-undo buffer
      (with-current-buffer buffer
        (save-excursion
         (goto-char pos)
-        (if (org-mode-p)
+        (if (and (org-mode-p) (not (member type '("sexp"))))
             (setq dbeg (progn (org-back-to-heading t) (point))
-                  dend (org-end-of-subtree t))
+                  dend (org-end-of-subtree t t))
           (setq dbeg (point-at-bol)
                 dend (min (point-max) (1+ (point-at-eol)))))
         (goto-char dbeg)
@@ -15413,7 +20053,7 @@ If this information is not given, the function uses the tree at point."
                     (setq p (marker-position m))
                     (>= p beg)
                     (<= p end))
-           (let (buffer-read-only)
+           (let ((inhibit-read-only t))
              (delete-region (point-at-bol) (1+ (point-at-eol)))))
          (beginning-of-line 0))))))
 
@@ -15502,6 +20142,16 @@ dedicated frame)."
   "Marker pointing to the headline that last changed its TODO state
 by a remote command from the agenda.")
 
+(defun org-agenda-todo-nextset ()
+  "Switch TODO entry to next sequence."
+  (interactive)
+  (org-agenda-todo 'nextset))
+
+(defun org-agenda-todo-previousset ()
+  "Switch TODO entry to previous sequence."
+  (interactive)
+  (org-agenda-todo 'previousset))
+
 (defun org-agenda-todo (&optional arg)
   "Cycle TODO state of line at point, also in Org-mode file.
 This changes the line at point, all other lines in the agenda referring to
@@ -15514,7 +20164,7 @@ the same tree node, and the headline of the tree node in the Org-mode file."
         (buffer (marker-buffer marker))
         (pos (marker-position marker))
         (hdmarker (get-text-property (point) 'org-hd-marker))
-        (buffer-read-only nil)
+        (inhibit-read-only t)
         newhead)
     (org-with-remote-undo buffer
       (with-current-buffer buffer
@@ -15542,7 +20192,7 @@ The new content of the line will be NEWHEAD (as modified by
 `equal' against all `org-hd-marker' text properties in the file.
 If FIXFACE is non-nil, the face of each item is modified acording to
 the new TODO state."
-  (let* ((buffer-read-only nil)
+  (let* ((inhibit-read-only t)
         props m pl undone-face done-face finish new dotime cat tags)
     (save-excursion
       (goto-char (point-max))
@@ -15580,20 +20230,25 @@ the new TODO state."
        (beginning-of-line 0)))
     (org-finalize-agenda)))
 
-;; FIXME: allow negative value for org-agenda-align-tags-to-column
-;; See the code in set-tags for the way to do this.
 (defun org-agenda-align-tags (&optional line)
-  "Align all tags in agenda items to `org-agenda-align-tags-to-column'."
-  (let ((buffer-read-only))
+  "Align all tags in agenda items to `org-agenda-tags-column'."
+  (let ((inhibit-read-only t) l c)
     (save-excursion
       (goto-char (if line (point-at-bol) (point-min)))
-      (while (re-search-forward "\\([ \t]+\\):[a-zA-Z0-9_@:]+:[ \t]*$"
+      (while (re-search-forward (org-re "\\([ \t]+\\)\\(:[[:alnum:]_@:]+:\\)[ \t]*$")
                                (if line (point-at-eol) nil) t)
+       (add-text-properties
+        (match-beginning 2) (match-end 2)
+        (list 'face (list 'org-tag (get-text-property
+                                    (match-beginning 2) 'face))))
+       (setq l (- (match-end 2) (match-beginning 2))
+             c (if (< org-agenda-tags-column 0)
+                   (- (abs org-agenda-tags-column) l)
+                 org-agenda-tags-column))
        (delete-region (match-beginning 1) (match-end 1))
        (goto-char (match-beginning 1))
        (insert (org-add-props
-                   (make-string (max 1 (- org-agenda-align-tags-to-column
-                                          (current-column))) ?\ )
+                   (make-string (max 1 (- c (current-column))) ?\ )
                    (text-properties-at (point))))))))
 
 (defun org-agenda-priority-up ()
@@ -15614,10 +20269,10 @@ the same tree node, and the headline of the tree node in the Org-mode file."
   (org-agenda-check-no-diary)
   (let* ((marker (or (get-text-property (point) 'org-marker)
                     (org-agenda-error)))
-        (buffer (marker-buffer marker))
-        (pos (marker-position marker))
         (hdmarker (get-text-property (point) 'org-hd-marker))
-        (buffer-read-only nil)
+        (buffer (marker-buffer hdmarker))
+        (pos (marker-position hdmarker))
+        (inhibit-read-only t)
         newhead)
     (org-with-remote-undo buffer
       (with-current-buffer buffer
@@ -15639,7 +20294,7 @@ POS defaults to point.  If tags are inherited, the list contains
 the targets in the same sequence as the headlines appear, i.e.
 the tags of the current headline come last."
   (interactive)
-  (let (tags)
+  (let (tags lastpos)
     (save-excursion
       (save-restriction
        (widen)
@@ -15647,8 +20302,9 @@ the tags of the current headline come last."
        (save-match-data
          (org-back-to-heading t)
          (condition-case nil
-             (while t
-               (if (looking-at "[^\r\n]+?:\\([a-zA-Z_@0-9:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
+             (while (not (equal lastpos (point)))
+               (setq lastpos (point))
+               (if (looking-at (org-re "[^\r\n]+?:\\([[:alnum:]_@:]+\\):[ \t]*$"))
                    (setq tags (append (org-split-string
                                        (org-match-string-no-properties 1) ":")
                                       tags)))
@@ -15662,26 +20318,30 @@ the tags of the current headline come last."
   "Set tags for the current headline."
   (interactive)
   (org-agenda-check-no-diary)
-  (org-agenda-show)   ;;; FIXME This is a stupid hack and should not be needed
-  (let* ((hdmarker (or (get-text-property (point) 'org-hd-marker)
-                       (org-agenda-error)))
-        (buffer (marker-buffer hdmarker))
-        (pos (marker-position hdmarker))
-        (buffer-read-only nil)
-        newhead)
-    (org-with-remote-undo buffer
-      (with-current-buffer buffer
-       (widen)
-       (goto-char pos)
-       (org-show-context 'agenda)
-       (save-excursion
-         (and (outline-next-heading)
-              (org-flag-heading nil)))   ; show the next heading
-       (call-interactively 'org-set-tags)
-       (end-of-line 1)
-       (setq newhead (org-get-heading)))
-      (org-agenda-change-all-lines newhead hdmarker)
-      (beginning-of-line 1))))
+  (if (and (org-region-active-p) (interactive-p))
+      (call-interactively 'org-change-tag-in-region)
+    (org-agenda-show)   ;;; FIXME This is a stupid hack and should not be needed
+    (let* ((hdmarker (or (get-text-property (point) 'org-hd-marker)
+                        (org-agenda-error)))
+          (buffer (marker-buffer hdmarker))
+          (pos (marker-position hdmarker))
+          (inhibit-read-only t)
+          newhead)
+      (org-with-remote-undo buffer
+       (with-current-buffer buffer
+         (widen)
+         (goto-char pos)
+         (save-excursion
+           (org-show-context 'agenda))
+         (save-excursion
+           (and (outline-next-heading)
+                (org-flag-heading nil)))   ; show the next heading
+         (goto-char pos)
+         (call-interactively 'org-set-tags)
+         (end-of-line 1)
+         (setq newhead (org-get-heading)))
+       (org-agenda-change-all-lines newhead hdmarker)
+       (beginning-of-line 1)))))
 
 (defun org-agenda-toggle-archive-tag ()
   "Toggle the archive tag for the current entry."
@@ -15692,7 +20352,7 @@ the tags of the current headline come last."
                        (org-agenda-error)))
         (buffer (marker-buffer hdmarker))
         (pos (marker-position hdmarker))
-        (buffer-read-only nil)
+        (inhibit-read-only t)
         newhead)
     (org-with-remote-undo buffer
       (with-current-buffer buffer
@@ -15732,11 +20392,11 @@ the tags of the current headline come last."
   (interactive "p")
   (org-agenda-date-later (- arg) what))
 
-(defun org-agenda-show-new-time (marker stamp)
+(defun org-agenda-show-new-time (marker stamp &optional prefix)
   "Show new date stamp via text properties."
   ;; We use text properties to make this undoable
-  (let ((buffer-read-only nil))
-    (setq stamp (concat " => " stamp))
+  (let ((inhibit-read-only t))
+    (setq stamp (concat " " prefix " => " stamp))
     (save-excursion
       (goto-char (point-max))
       (while (not (bobp))
@@ -15792,8 +20452,9 @@ be used to request time specification in the time stamp."
       (with-current-buffer buffer
        (widen)
        (goto-char pos)
-       (setq ts (org-schedule))
-       (message "Item scheduled for %s" ts)))))
+       (setq ts (org-schedule arg)))
+      (org-agenda-show-new-time marker ts "S"))
+    (message "Item scheduled for %s" ts)))
 
 (defun org-agenda-deadline (arg)
   "Schedule the item at point."
@@ -15810,14 +20471,19 @@ be used to request time specification in the time stamp."
       (with-current-buffer buffer
        (widen)
        (goto-char pos)
-       (setq ts (org-deadline))
-       (message "Deadline for this item set to %s" ts)))))
+       (setq ts (org-deadline arg)))
+      (org-agenda-show-new-time marker ts "S"))
+       (message "Deadline for this item set to %s" ts)))
 
-(defun org-get-heading ()
+(defun org-get-heading (&optional no-tags)
   "Return the heading of the current entry, without the stars."
   (save-excursion
     (org-back-to-heading t)
-    (if (looking-at "\\*+[ \t]+\\([^\r\n]*\\)")        (match-string 1) "")))
+    (if (looking-at
+        (if no-tags 
+            (org-re "\\*+[ \t]+\\([^\n\r]*?\\)\\([ \t]+:[[:alnum:]:_@]+:[ \t]*\\)?$")
+          "\\*+[ \t]+\\([^\r\n]*\\)"))
+       (match-string 1) "")))
 
 (defun org-agenda-clock-in (&optional arg)
   "Start the clock on the currently selected item."
@@ -15976,6 +20642,7 @@ This is a command that has to be installed in `calendar-mode-map'."
             "Hebrew:     " (calendar-hebrew-date-string date) " (until sunset)\n"
             "Islamic:    " (calendar-islamic-date-string date) " (until sunset)\n"
             "French:     " (calendar-french-date-string date) "\n"
+            "Baha'i:     " (calendar-bahai-date-string date) " (until sunset)\n"
             "Mayan:      " (calendar-mayan-date-string date) "\n"
             "Coptic:     " (calendar-coptic-date-string date) "\n"
             "Ethiopic:   " (calendar-ethiopic-date-string date) "\n"
@@ -15992,11 +20659,11 @@ This is a command that has to be installed in `calendar-mode-map'."
 (defvar org-cdlatex-mode-map (make-sparse-keymap)
   "Keymap for the minor `org-cdlatex-mode'.")
 
-(define-key org-cdlatex-mode-map "_" 'org-cdlatex-underscore-caret)
-(define-key org-cdlatex-mode-map "^" 'org-cdlatex-underscore-caret)
-(define-key org-cdlatex-mode-map "`" 'cdlatex-math-symbol)
-(define-key org-cdlatex-mode-map "'" 'org-cdlatex-math-modify)
-(define-key org-cdlatex-mode-map "\C-c{" 'cdlatex-environment)
+(org-defkey org-cdlatex-mode-map "_" 'org-cdlatex-underscore-caret)
+(org-defkey org-cdlatex-mode-map "^" 'org-cdlatex-underscore-caret)
+(org-defkey org-cdlatex-mode-map "`" 'cdlatex-math-symbol)
+(org-defkey org-cdlatex-mode-map "'" 'org-cdlatex-math-modify)
+(org-defkey org-cdlatex-mode-map "\C-c{" 'cdlatex-environment)
 
 (defvar org-cdlatex-texmathp-advice-is-done nil
   "Flag remembering if we have applied the advice to texmathp already.")
@@ -16064,7 +20731,7 @@ looks only before point, not after."
        (while (string-match re str start)
          (cond
           ((= (match-end 0) (length str))
-           (throw 'exit (cons "$" (+ lim (match-beginning 0)))))
+           (throw 'exit (cons "$" (+ lim (match-beginning 0) 1))))
           ((= (match-end 0) (- (length str) 5))
            (throw 'exit nil))
           (t (setq start (match-end 0))))))
@@ -16156,11 +20823,12 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
                      "Creating images for entry...%s"))))
        (message msg "")
        (narrow-to-region beg end)
+       (goto-char beg)
        (org-format-latex
         (concat "ltxpng/" (file-name-sans-extension
                            (file-name-nondirectory
                             buffer-file-name)))
-        default-directory 'overlays msg at)
+        default-directory 'overlays msg at 'forbuffer)
       (message msg "done.  Use `C-c C-c' to remove images.")))))
 
 (defvar org-latex-regexps
@@ -16173,7 +20841,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
     ("$$" "\\$\\$[^\000]*?\\$\\$" 0 t))
   "Regular expressions for matching embedded LaTeX.")
 
-(defun org-format-latex (prefix &optional dir overlays msg at)
+(defun org-format-latex (prefix &optional dir overlays msg at forbuffer)
   "Replace LaTeX fragments with links to an image, and produce images."
   (if (and overlays (fboundp 'clear-image-cache)) (clear-image-cache))
   (let* ((prefixnodir (file-name-nondirectory prefix))
@@ -16210,7 +20878,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
              (setq checkdir t)
              (or (file-directory-p todir) (make-directory todir)))
            (org-create-formula-image
-            txt movefile opt)
+            txt movefile opt forbuffer)
            (if overlays
                (progn
                  (setq ov (org-make-overlay beg end))
@@ -16229,31 +20897,27 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
              (insert link))))))))
 
 ;; This function borrows from Ganesh Swami's latex2png.el
-(defun org-create-formula-image (string tofile options)
+(defun org-create-formula-image (string tofile options buffer)
   (let* ((tmpdir (if (featurep 'xemacs)
                     (temp-directory)
                   temporary-file-directory))
         (texfilebase (make-temp-name
                       (expand-file-name "orgtex" tmpdir)))
-
-;(texfilebase (make-temp-file "orgtex"))
-;       (dummy (delete-file texfilebase))
         (texfile (concat texfilebase ".tex"))
         (dvifile (concat texfilebase ".dvi"))
         (pngfile (concat texfilebase ".png"))
-        (scale (number-to-string (* 1000 (or (plist-get options :scale) 1.0))))
-        (fg (or (plist-get options :foreground) "Black"))
-        (bg (or (plist-get options :background) "Transparent")))
+        (fnh (face-attribute 'default :height nil))
+        (scale (or (plist-get options (if buffer :scale :html-scale)) 1.0))
+        (dpi (number-to-string (* scale (floor (* 0.9 (if buffer fnh 140.))))))
+        (fg (or (plist-get options (if buffer :foreground :html-foreground))
+                "Black"))
+        (bg (or (plist-get options (if buffer :background :html-background))
+                "Transparent")))
+    (if (eq fg 'default) (setq fg (org-dvipng-color :foreground)))
+    (if (eq bg 'default) (setq bg (org-dvipng-color :background)))
     (with-temp-file texfile
-      (insert "\\documentclass{article}
-\\usepackage{fullpage}
-\\usepackage{amssymb}
-\\usepackage[usenames]{color}
-\\usepackage{amsmath}
-\\usepackage{latexsym}
-\\usepackage[mathscr]{eucal}
-\\pagestyle{empty}
-\\begin{document}\n" string "\n\\end{document}\n"))
+      (insert org-format-latex-header
+             "\n\\begin{document}\n" string "\n\\end{document}\n"))
     (let ((dir default-directory))
       (condition-case nil
          (progn
@@ -16265,7 +20929,9 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
        (progn (message "Failed to create dvi file from %s" texfile) nil)
       (call-process "dvipng" nil nil nil
                    "-E" "-fg" fg "-bg" bg
-                   "-x" scale "-y" scale "-T" "tight"
+                    "-D" dpi
+                   ;;"-x" scale "-y" scale
+                   "-T" "tight"
                    "-o" pngfile
                    dvifile)
       (if (not (file-exists-p pngfile))
@@ -16276,6 +20942,16 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
              (delete-file (concat texfilebase e)))
        pngfile))))
 
+(defun org-dvipng-color (attr)
+  "Return an rgb color specification for dvipng."
+  (apply 'format "rgb %s %s %s"
+        (mapcar 'org-normalize-color
+                (color-values (face-attribute 'default attr nil)))))
+
+(defun org-normalize-color (value)
+  "Return string to be used as color value for an RGB component."
+  (format "%g" (/ value 65535.0)))
+
 ;;;; Exporting
 
 ;;; Variables, constants, and parameter plists
@@ -16300,18 +20976,26 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
     (:headline-levels      . org-export-headline-levels)
     (:section-numbers      . org-export-with-section-numbers)
     (:table-of-contents    . org-export-with-toc)
+    (:preserve-breaks      . org-export-preserve-breaks)
     (:archived-trees       . org-export-with-archived-trees)
     (:emphasize            . org-export-with-emphasize)
     (:sub-superscript      . org-export-with-sub-superscripts)
+    (:footnotes            . org-export-with-footnotes)
+    (:property-drawer      . org-export-with-property-drawer)
     (:TeX-macros           . org-export-with-TeX-macros)
     (:LaTeX-fragments      . org-export-with-LaTeX-fragments)
+    (:skip-before-1st-heading . org-export-skip-text-before-1st-heading)
     (:fixed-width          . org-export-with-fixed-width)
     (:timestamps           . org-export-with-timestamps)
+    (:author-info          . org-export-author-info)
+    (:time-stamp-file      . org-export-time-stamp-file)
     (:tables               . org-export-with-tables)
     (:table-auto-headline  . org-export-highlight-first-table-line)
     (:style                . org-export-html-style)
+    (:agenda-style         . org-agenda-export-html-style) ;; FIXME: Does this work????
     (:convert-org-links    . org-export-html-link-org-files-as-html)
     (:inline-images        . org-export-html-inline-images)
+    (:html-extension       . org-export-html-extension)
     (:expand-quoted-html   . org-export-html-expand)
     (:timestamp            . org-export-html-with-timestamp)
     (:publishing-directory . org-export-publishing-directory)
@@ -16334,7 +21018,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
   (save-excursion
     (goto-char 0)
     (let ((re (org-make-options-regexp
-              '("TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")))
+              '("TITLE" "AUTHOR" "DATE" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")))
          p key val text options)
       (while (re-search-forward re nil t)
        (setq key (org-match-string-no-properties 1)
@@ -16343,6 +21027,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
         ((string-equal key "TITLE") (setq p (plist-put p :title val)))
         ((string-equal key "AUTHOR")(setq p (plist-put p :author val)))
         ((string-equal key "EMAIL") (setq p (plist-put p :email val)))
+        ((string-equal key "DATE") (setq p (plist-put p :date val)))
         ((string-equal key "LANGUAGE") (setq p (plist-put p :language val)))
         ((string-equal key "TEXT")
          (setq text (if text (concat text "\n" val) val)))
@@ -16357,9 +21042,14 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
                    (":"     . :fixed-width)
                    ("|"     . :tables)
                    ("^"     . :sub-superscript)
+                   ("f"     . :footnotes)
+                   ("p"     . :property-drawer)
                    ("*"     . :emphasize)
                    ("TeX"   . :TeX-macros)
-                   ("LaTeX" . :LaTeX-fragments)))
+                   ("LaTeX" . :LaTeX-fragments)
+                   ("skip"  . :skip-before-1st-heading)
+                   ("author" . :author-info)
+                   ("timestamp" . :time-stamp-file)))
              o)
          (while (setq o (pop op))
            (if (string-match (concat (regexp-quote (car o))
@@ -16377,19 +21067,11 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
                val)))
     dir))
 
-(defun org-export-find-first-heading-line (list)
-  "Remove all lines from LIST which are before the first headline."
-  (let ((orig-list list)
-       (re (concat "^" outline-regexp)))
-    (while (and list
-               (not (string-match re (car list))))
-      (pop list))
-    (or list orig-list)))
-
 (defun org-skip-comments (lines)
   "Skip lines starting with \"#\" and subtrees starting with COMMENT."
   (let ((re1 (concat "^\\(\\*+\\)[ \t]+" org-comment-string))
        (re2 "^\\(\\*+\\)[ \t\n\r]")
+       (case-fold-search nil)
        rtn line level)
     (while (setq line (pop lines))
       (cond
@@ -16419,10 +21101,16 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
 \[v]   limit export to visible part of outline tree
 
 \[a] export as ASCII
+
 \[h] export as HTML
+\[H] export as HTML to temporary buffer
+\[R] export region as HTML
 \[b] export as HTML and browse immediately
 \[x] export as XOXO
 
+\[l] export as LaTeX
+\[L] export as LaTeX to temporary buffer
+
 \[i] export current file as iCalendar file
 \[I] export all agenda files as iCalendar files
 \[c] export agenda files into combined iCalendar file
@@ -16437,7 +21125,11 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
           (?a . org-export-as-ascii)
           (?h . org-export-as-html)
           (?b . org-export-as-html-and-open)
+          (?H . org-export-as-html-to-buffer)
+          (?R . org-export-region-as-html)
           (?x . org-export-as-xoxo)
+          (?l . org-export-as-latex)
+          (?L . org-export-as-latex-to-buffer)
           (?i . org-export-icalendar-this-file)
           (?I . org-export-icalendar-all-agenda-files)
           (?c . org-export-icalendar-combine-agenda-files)
@@ -16465,6 +21157,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
     ("curren")
     ("yen")
     ("brvbar")
+    ("vert" . "&#124;")
     ("sect")
     ("uml")
     ("copy")
@@ -16681,6 +21374,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
     ("clubs") ("clubsuit"."&clubs;")
     ("hearts") ("diamondsuit"."&hearts;")
     ("diams") ("diamondsuit"."&diams;")
+    ("smile"."&#9786;") ("blacksmile"."&#9787;") ("sad"."&#9785;")
     ("quot")
     ("amp")
     ("lt")
@@ -16758,7 +21452,7 @@ translations.  There is currently no way for users to extend this.")
 ;;; General functions for all backends
 
 (defun org-cleaned-string-for-export (string &rest parameters)
-  "Cleanup a buffer substring so that links can be created safely."
+  "Cleanup a buffer STRING so that links can be created safely."
   (interactive)
   (let* ((re-radio (and org-target-link-regexp
                        (concat "\\([^<]\\)\\(" org-target-link-regexp "\\)")))
@@ -16766,46 +21460,93 @@ translations.  There is currently no way for users to extend this.")
         (re-angle-link (concat "\\([^[]\\)" org-angle-link-re))
         (re-archive (concat ":" org-archive-tag ":"))
         (re-quote (concat "^\\*+[ \t]+" org-quote-string "\\>"))
-        (htmlp (memq :for-html parameters))
-        (outline-regexp "\\*+")
-        rtn)
-    (save-excursion
-      (set-buffer (get-buffer-create " org-mode-tmp"))
+        (re-commented (concat "^\\*+[ \t]+" org-comment-string "\\>"))
+        (htmlp (plist-get parameters :for-html))
+        (asciip (plist-get parameters :for-ascii))
+        (latexp (plist-get parameters :for-LaTeX))
+        (commentsp (plist-get parameters :comments))
+        (archived-trees (plist-get parameters :archived-trees))
+        (inhibit-read-only t)
+        (outline-regexp "\\*+ ")
+        a b xx
+        rtn p)
+    (with-current-buffer (get-buffer-create " org-mode-tmp")
       (erase-buffer)
       (insert string)
+      ;; Remove license-to-kill stuff
+      (while (setq p (text-property-any (point-min) (point-max)
+                                       :org-license-to-kill t))
+       (delete-region p (next-single-property-change p :org-license-to-kill)))
+
       (let ((org-inhibit-startup t)) (org-mode))
       (untabify (point-min) (point-max))
 
+      ;; Get the correct stuff before the first headline
+      (when (plist-get parameters :skip-before-1st-heading)
+       (goto-char (point-min))
+       (when (re-search-forward "^\\*+[ \t]" nil t)
+         (delete-region (point-min) (match-beginning 0))
+         (goto-char (point-min))
+         (insert "\n")))
+      (when (plist-get parameters :add-text)
+       (goto-char (point-min))
+       (insert (plist-get parameters :add-text) "\n"))
+
       ;; Get rid of archived trees
-      (when (not (eq org-export-with-archived-trees t))
+      (when (not (eq archived-trees t))
        (goto-char (point-min))
        (while (re-search-forward re-archive nil t)
-         (if (not (org-on-heading-p))
+         (if (not (org-on-heading-p t))
              (org-end-of-subtree t)
            (beginning-of-line 1)
-           (delete-region
-            (if org-export-with-archived-trees (1+ (point-at-eol)) (point))
-            (org-end-of-subtree t)))))
+           (setq a (if archived-trees
+                       (1+ (point-at-eol)) (point))
+                 b (org-end-of-subtree t))
+           (if (> b a) (delete-region a b)))))
 
-      ;; Protect stuff from HTML processing
-      (goto-char (point-min))
-      (while (re-search-forward "^[ \t]*:.*\\(\n[ \t]*:.*\\)*" nil t)
-       (add-text-properties (match-beginning 0) (match-end 0)
-                            '(org-protected t)))
-      (when htmlp
+      ;; Get rid of property drawers
+      (unless org-export-with-property-drawer
        (goto-char (point-min))
-       (while (re-search-forward "^#\\+HTML:[ \t]*\\(.*\\)" nil t)
-         (replace-match "\\1" t)
-         (add-text-properties
-          (point-at-bol) (min (1+ (point-at-eol)) (point-max))
-          '(org-protected t))))
+       (while (re-search-forward "^[ \t]*:PROPERTIES:[ \t]*\n\\([^@]*?\n\\)?[ \t]*:END:[ \t]*\n" nil t)
+         (replace-match "")))
+
+      ;; Find targets in comments and move them out of comments,
+      ;; but mark them as targets that should be invisible
       (goto-char (point-min))
-      (while (re-search-forward
-             "^#\\+BEGIN_HTML\\>.*\\(\n.*\\)*?\n#\\+END_HTML\\>.*\n?" nil t)
-       (if htmlp
-           (add-text-properties (match-beginning 1) (1+ (match-end 1))
-                                '(org-protected t))
-         (delete-region (match-beginning 0) (match-end 0))))
+      (while (re-search-forward "^#.*?\\(<<<?[^>\r\n]+>>>?\\).*" nil t)
+       (replace-match "\\1(INVISIBLE)"))
+
+      ;; Protect backend specific stuff, throw away the others.
+      (goto-char (point-min))
+      (let ((formatters
+            `((,htmlp "HTML" "BEGIN_HTML" "END_HTML")
+              (,asciip "ASCII" "BEGIN_ASCII" "END_ASCII")
+              (,latexp "LaTeX" "BEGIN_LaTeX" "END_LaTeX")))
+           fmt)
+       (while (re-search-forward "^[ \t]*:.*\\(\n[ \t]*:.*\\)*" nil t)
+         (add-text-properties (match-beginning 0) (match-end 0)
+                              '(org-protected t)))
+       (while formatters
+         (setq fmt (pop formatters))
+         (when (car fmt)
+           (goto-char (point-min))
+           (while (re-search-forward (concat "^#\\+" (cadr fmt) 
+                                             ":[ \t]*\\(.*\\)") nil t)
+             (replace-match "\\1" t)
+             (add-text-properties
+              (point-at-bol) (min (1+ (point-at-eol)) (point-max))
+              '(org-protected t))))
+         (goto-char (point-min))
+         (while (re-search-forward
+                 (concat "^#\\+" 
+                         (caddr fmt) "\\>.*\\(\\(\n.*\\)*?\n\\)#\\+"
+                         (cadddr fmt) "\\>.*\n?") nil t)
+           (if (car fmt)
+               (add-text-properties (match-beginning 1) (1+ (match-end 1))
+                                    '(org-protected t))
+             (delete-region (match-beginning 0) (match-end 0))))))
+
+      ;; Protect quoted subtrees
       (goto-char (point-min))
       (while (re-search-forward re-quote nil t)
        (goto-char (match-beginning 0))
@@ -16813,16 +21554,48 @@ translations.  There is currently no way for users to extend this.")
        (add-text-properties (point) (org-end-of-subtree t)
                             '(org-protected t)))
 
-      ;; Find targets in comments and move them out of comments,
-      ;; but mark them as targets that should be invisible
+      ;; Remove subtrees that are commented
       (goto-char (point-min))
-      (while (re-search-forward "^#.*?\\(<<<?[^>\r\n]+>>>?\\).*" nil t)
-       (replace-match "\\1(INVISIBLE)"))
+      (while (re-search-forward re-commented nil t)
+       (goto-char (match-beginning 0))
+       (delete-region (point) (org-end-of-subtree t)))
 
-      ;; Remove comments
+      ;; Remove special table lines
+      (when org-export-table-remove-special-lines
+       (goto-char (point-min))
+       (while (re-search-forward "^[ \t]*|" nil t)
+         (beginning-of-line 1)
+         (if (or (looking-at "[ \t]*| *[!_^] *|")
+                 (and (looking-at ".*?| *<[0-9]+> *|")
+                      (not (looking-at ".*?| *[^ <|]"))))
+             (delete-region (max (point-min) (1- (point-at-bol)))
+                            (point-at-eol))
+           (end-of-line 1))))
+
+      ;; Specific LaTeX stuff
+      (when latexp
+       (require 'org-export-latex nil)
+       (org-export-latex-cleaned-string))
+
+      ;; Specific HTML stuff
+      (when htmlp
+       ;; Convert LaTeX fragments to images
+       (when (plist-get parameters :LaTeX-fragments)
+         (org-format-latex
+          (concat "ltxpng/" (file-name-sans-extension
+                             (file-name-nondirectory
+                              org-current-export-file)))
+          org-current-export-dir nil "Creating LaTeX image %s"))
+       (message "Exporting..."))
+
+      ;; Remove or replace comments
       (goto-char (point-min))
-      (while (re-search-forward "^#.*\n?" nil t)
-       (replace-match ""))
+      (while (re-search-forward "^#\\(.*\n?\\)" nil t)
+       (if commentsp
+           (progn (add-text-properties
+                   (match-beginning 0) (match-end 0) '(org-protected t))
+                  (replace-match (format commentsp (match-string 1)) t t))
+         (replace-match "")))
 
       ;; Find matches for radio targets and turn them into internal links
       (goto-char (point-min))
@@ -16838,56 +21611,85 @@ translations.  There is currently no way for users to extend this.")
         (replace-match "\\1 \\3")
         (goto-char (match-beginning 0))))
 
-      ;; Convert LaTeX fragments to images
-      (when (memq :LaTeX-fragments parameters)
-       (org-format-latex
-        (concat "ltxpng/" (file-name-sans-extension
-                           (file-name-nondirectory
-                            org-current-export-file)))
-        org-current-export-dir nil "Creating LaTeX image %s"))
-      (message "Exporting...")
 
       ;; Normalize links: Convert angle and plain links into bracket links
       ;; Expand link abbreviations
       (goto-char (point-min))
       (while (re-search-forward re-plain-link nil t)
+       (goto-char (1- (match-end 0)))
        (org-if-unprotected
-        (replace-match
-         (concat
-          (match-string 1) "[[" (match-string 2) ":" (match-string 3) "]]")
-         t t)))
+        (let* ((s (concat (match-string 1) "[[" (match-string 2)
+                          ":" (match-string 3) "]]")))
+          ;; added 'org-link face to links
+          (put-text-property 0 (length s) 'face 'org-link s)
+          (replace-match s t t))))
       (goto-char (point-min))
       (while (re-search-forward re-angle-link nil t)
+       (goto-char (1- (match-end 0)))
        (org-if-unprotected
-        (replace-match
-         (concat
-          (match-string 1) "[[" (match-string 2) ":" (match-string 3) "]]")
-         t t)))
+        (let* ((s (concat (match-string 1) "[[" (match-string 2)
+                          ":" (match-string 3) "]]")))
+          (put-text-property 0 (length s) 'face 'org-link s)
+          (replace-match s t t))))
       (goto-char (point-min))
       (while (re-search-forward org-bracket-link-regexp nil t)
        (org-if-unprotected
-        (replace-match
-         (concat "[[" (save-match-data
-                        (org-link-expand-abbrev (match-string 1)))
-                 "]"
-                 (if (match-end 3)
-                     (match-string 2)
-                   (concat "[" (match-string 1) "]"))
-                 "]")
-         t t)))
+        (let* ((s (concat "[[" (setq xx (save-match-data
+                                          (org-link-expand-abbrev (match-string 1))))
+                          "]"
+                          (if (match-end 3)
+                              (match-string 2)
+                            (concat "[" xx "]"))
+                          "]")))
+          (put-text-property 0 (length s) 'face 'org-link s)
+          (replace-match s t t))))
 
       ;; Find multiline emphasis and put them into single line
-      (when (memq :emph-multiline parameters)
+      (when (plist-get  parameters :emph-multiline)
        (goto-char (point-min))
        (while (re-search-forward org-emph-re nil t)
-         (org-if-unprotected
-          (subst-char-in-region (match-beginning 0) (match-end 0) ?\n ?\  t)
-          (goto-char (1- (match-end 0))))))
+         (if (not (= (char-after (match-beginning 3))
+                     (char-after (match-beginning 4))))
+             (org-if-unprotected
+              (subst-char-in-region (match-beginning 0) (match-end 0)
+                                    ?\n ?\  t)
+              (goto-char (1- (match-end 0))))
+           (goto-char (1+ (match-beginning 0))))))
 
       (setq rtn (buffer-string)))
     (kill-buffer " org-mode-tmp")
     rtn))
 
+(defun org-export-grab-title-from-buffer ()
+  "Get a title for the current document, from looking at the buffer."
+  (let ((inhibit-read-only t))
+    (save-excursion
+      (goto-char (point-min))
+      (let ((end (save-excursion (outline-next-heading) (point))))
+       (when (re-search-forward "^[ \t]*[^|# \t\r\n].*\n" end t)
+         ;; Mark the line so that it will not be exported as normal text.
+         (org-unmodified
+          (add-text-properties (match-beginning 0) (match-end 0)
+                               (list :org-license-to-kill t)))
+         ;; Return the title string
+         (org-trim (match-string 0)))))))
+
+(defun org-export-get-title-from-subtree ()
+  "Return subtree title and exclude it from export."
+  (let (title (m (mark)))
+    (save-excursion
+      (goto-char (region-beginning))
+      (when (and (org-at-heading-p)
+                (>= (org-end-of-subtree t t) (region-end)))
+       ;; This is a subtree, we take the title from the first heading
+       (goto-char (region-beginning))
+       (looking-at org-todo-line-regexp)
+       (setq title (match-string 3))
+       (org-unmodified
+        (add-text-properties (point) (1+ (point-at-eol))
+                             (list :org-license-to-kill t)))))
+    title))
+        
 (defun org-solidify-link-text (s &optional alist)
   "Take link text and make a safe target out of it."
   (save-match-data
@@ -16898,6 +21700,15 @@ translations.  There is currently no way for users to extend this.")
           (a (assoc rtn alist)))
       (or (cdr a) rtn))))
 
+(defun org-get-min-level (lines)
+  "Get the minimum level in LINES."
+  (let ((re "^\\(\\*+\\) ") l min)
+    (catch 'exit
+      (while (setq l (pop lines))
+       (if (string-match re l)
+           (throw 'exit (org-tr-level (length (match-string 1 l))))))
+      1)))
+
 ;; Variable holding the vector with section numbers
 (defvar org-section-numbers (make-vector org-level-max 0))
 
@@ -16947,6 +21758,7 @@ When LEVEL is non-nil, increase section numbers on that level."
 ;;; ASCII export
 
 (defvar org-last-level nil) ; dynamically scoped variable
+(defvar org-min-level nil) ; dynamically scoped variable
 (defvar org-levels-open nil) ; dynamically scoped parameter
 (defvar org-ascii-current-indentation nil) ; For communication
 
@@ -16959,16 +21771,14 @@ underlined headlines.  The default is 3."
   (setq-default org-todo-line-regexp org-todo-line-regexp)
   (let* ((opt-plist (org-combine-plists (org-default-export-plist)
                                        (org-infile-export-plist)))
-        (region
-         (buffer-substring
-          (if (org-region-active-p) (region-beginning) (point-min))
-          (if (org-region-active-p) (region-end) (point-max))))
+        (region-p (org-region-active-p))
+        (subtree-p
+         (when region-p
+           (save-excursion
+             (goto-char (region-beginning))
+             (and (org-at-heading-p)
+                  (>= (org-end-of-subtree t t) (region-end))))))
         (custom-times org-display-custom-times)
-        (lines (org-export-find-first-heading-line
-                (org-skip-comments
-                 (org-split-string
-                  (org-cleaned-string-for-export region)
-                  "[\r\n]"))))
         (org-ascii-current-indentation '(0 . 0))
         (level 0) line txt
         (umax nil)
@@ -16977,26 +21787,57 @@ underlined headlines.  The default is 3."
          (filename (concat (file-name-as-directory
                            (org-export-directory :ascii opt-plist))
                           (file-name-sans-extension
-                           (file-name-nondirectory buffer-file-name))
+                           (or (and subtree-p
+                                    (org-entry-get (region-beginning)
+                                                   "EXPORT_FILE_NAME" t))
+                               (file-name-nondirectory buffer-file-name)))
                           ".txt"))
+        (filename (if (equal (file-truename filename)
+                             (file-truename buffer-file-name))
+                      (concat filename ".txt")
+                    filename))
         (buffer (find-file-noselect filename))
         (org-levels-open (make-vector org-level-max nil))
         (odd org-odd-levels-only)
-        (date  (format-time-string "%Y/%m/%d" (current-time)))
-        (time  (format-time-string "%X" (org-current-time)))
+        (date  (plist-get opt-plist :date))
         (author      (plist-get opt-plist :author))
-        (title       (or (plist-get opt-plist :title)
+        (title       (or (and subtree-p (org-export-get-title-from-subtree))
+                         (plist-get opt-plist :title)
+                         (and (not
+                               (plist-get opt-plist :skip-before-1st-heading))
+                              (org-export-grab-title-from-buffer))
                          (file-name-sans-extension
                           (file-name-nondirectory buffer-file-name))))
         (email       (plist-get opt-plist :email))
         (language    (plist-get opt-plist :language))
         (quote-re0   (concat "^[ \t]*" org-quote-string "\\>"))
 ;       (quote-re    (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)"))
-        (text        nil)
         (todo nil)
-        (lang-words nil))
-
-    (setq org-last-level 1)
+        (lang-words nil)
+        (region
+         (buffer-substring
+          (if (org-region-active-p) (region-beginning) (point-min))
+          (if (org-region-active-p) (region-end) (point-max))))
+        (lines (org-split-string
+                (org-cleaned-string-for-export
+                 region
+                 :for-ascii t
+                 :skip-before-1st-heading
+                 (plist-get opt-plist :skip-before-1st-heading)
+                 :archived-trees
+                 (plist-get opt-plist :archived-trees)
+                 :add-text (plist-get opt-plist :text))
+                "\n"))
+        thetoc have-headings first-heading-pos
+        table-open table-buffer)
+
+    (let ((inhibit-read-only t))
+      (org-unmodified
+       (remove-text-properties (point-min) (point-max)
+                              '(:org-license-to-kill t))))
+
+    (setq org-min-level (org-get-min-level lines))
+    (setq org-last-level org-min-level)
     (org-init-section-numbers)
 
     (find-file-noselect filename)
@@ -17008,10 +21849,10 @@ underlined headlines.  The default is 3."
     (fundamental-mode)
     ;; create local variables for all options, to make sure all called
     ;; functions get the correct information
-    (mapcar (lambda (x)
-             (set (make-local-variable (cdr x))
-                  (plist-get opt-plist (car x))))
-           org-export-plist-vars)
+    (mapc (lambda (x)
+           (set (make-local-variable (cdr x))
+                (plist-get opt-plist (car x))))
+         org-export-plist-vars)
     (org-set-local 'org-odd-levels-only odd)
     (setq umax (if arg (prefix-numeric-value arg)
                 org-export-headline-levels))
@@ -17022,57 +21863,71 @@ underlined headlines.  The default is 3."
     ;; File header
     (if title (org-insert-centered title ?=))
     (insert "\n")
-    (if (or author email)
+    (if (and (or author email)
+            org-export-author-info)
        (insert (concat (nth 1 lang-words) ": " (or author "")
                        (if email (concat " <" email ">") "")
                        "\n")))
-    (if (and date time)
-       (insert (concat (nth 2 lang-words) ": " date " " time "\n")))
-    (if text (insert (concat (org-html-expand-for-ascii text) "\n\n")))
+
+    (cond
+     ((and date (string-match "%" date))
+      (setq date (format-time-string date (current-time))))
+     (date)
+     (t (setq date (format-time-string "%Y/%m/%d %X" (current-time)))))
+
+    (if (and date org-export-time-stamp-file)
+       (insert (concat (nth 2 lang-words) ": " date"\n")))
 
     (insert "\n\n")
 
     (if org-export-with-toc
        (progn
-         (insert (nth 3 lang-words) "\n"
-                 (make-string (length (nth 3 lang-words)) ?=) "\n")
-         (mapcar '(lambda (line)
-                    (if (string-match org-todo-line-regexp
-                                      line)
-                        ;; This is a headline
-                        (progn
-                          (setq level (- (match-end 1) (match-beginning 1))
-                                level (org-tr-level level)
-                                txt (match-string 3 line)
-                                todo
-                                (or (and org-export-mark-todo-in-toc
-                                         (match-beginning 2)
-                                         (not (equal (match-string 2 line)
-                                                     org-done-string)))
+         (push (concat (nth 3 lang-words) "\n") thetoc)
+         (push (concat (make-string (length (nth 3 lang-words)) ?=) "\n") thetoc)
+         (mapc '(lambda (line)
+                  (if (string-match org-todo-line-regexp
+                                    line)
+                      ;; This is a headline
+                      (progn
+                        (setq have-headings t)
+                        (setq level (- (match-end 1) (match-beginning 1))
+                              level (org-tr-level level)
+                              txt (match-string 3 line)
+                              todo
+                              (or (and org-export-mark-todo-in-toc
+                                       (match-beginning 2)
+                                       (not (member (match-string 2 line)
+                                                    org-done-keywords)))
                                        ; TODO, not DONE
-                                    (and org-export-mark-todo-in-toc
-                                         (= level umax-toc)
+                                  (and org-export-mark-todo-in-toc
+                                       (= level umax-toc)
                                          (org-search-todo-below
                                           line lines level))))
-                          (setq txt (org-html-expand-for-ascii txt))
-
-                          (if (and (memq org-export-with-tags '(not-in-toc nil))
-                                   (string-match "[ \t]+:[a-zA-Z0-9_@:]+:[ \t]*$" txt))
-                              (setq txt (replace-match "" t t txt)))
-                          (if (string-match quote-re0 txt)
-                              (setq txt (replace-match "" t t txt)))
-
-                          (if org-export-with-section-numbers
-                              (setq txt (concat (org-section-number level)
-                                                " " txt)))
-                          (if (<= level umax-toc)
-                              (progn
-                                (insert
-                                 (make-string (* (1- level) 4) ?\ )
-                                 (format (if todo "%s (*)\n" "%s\n") txt))
-                                (setq org-last-level level))
-                            ))))
-                 lines)))
+                        (setq txt (org-html-expand-for-ascii txt))
+
+                        (if (and (memq org-export-with-tags '(not-in-toc nil))
+                                 (string-match
+                                  (org-re "[ \t]+:[[:alnum:]_@:]+:[ \t]*$")
+                                  txt))
+                            (setq txt (replace-match "" t t txt)))
+                        (if (string-match quote-re0 txt)
+                            (setq txt (replace-match "" t t txt)))
+
+                        (if org-export-with-section-numbers
+                            (setq txt (concat (org-section-number level)
+                                              " " txt)))
+                        (if (<= level umax-toc)
+                            (progn
+                              (push
+                               (concat
+                                (make-string
+                                 (* (max 0 (- level org-min-level)) 4) ?\ )
+                                (format (if todo "%s (*)\n" "%s\n") txt))
+                               thetoc)
+                              (setq org-last-level level))
+                          ))))
+               lines)
+         (setq thetoc (if have-headings (nreverse thetoc) nil))))
 
     (org-init-section-numbers)
     (while (setq line (pop lines))
@@ -17089,14 +21944,51 @@ underlined headlines.  The default is 3."
       (when custom-times
        (setq line (org-translate-time line)))
       (cond
-       ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
+       ((string-match "^\\(\\*+\\)[ \t]+\\(.*\\)" line)
        ;; a Headline
+       (setq first-heading-pos (or first-heading-pos (point)))
        (setq level (org-tr-level (- (match-end 1) (match-beginning 1)))
              txt (match-string 2 line))
        (org-ascii-level-start level txt umax lines))
+
+       ((and org-export-with-tables
+            (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line))
+       (if (not table-open)
+           ;; New table starts
+           (setq table-open t table-buffer nil))
+       ;; Accumulate lines
+       (setq table-buffer (cons line table-buffer))
+       (when (or (not lines)
+                 (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)"
+                                    (car lines))))
+         (setq table-open nil
+               table-buffer (nreverse table-buffer))
+         (insert (mapconcat
+                  (lambda (x)
+                    (org-fix-indentation x org-ascii-current-indentation))
+                  (org-format-table-ascii table-buffer)
+                  "\n") "\n")))
        (t
-       (insert (org-fix-indentation line org-ascii-current-indentation) "\n"))))
+       (setq line (org-fix-indentation line org-ascii-current-indentation))
+       (if (and org-export-with-fixed-width
+                (string-match "^\\([ \t]*\\)\\(:\\)" line))
+           (setq line (replace-match "\\1" nil nil line)))
+       (insert line "\n"))))
+
     (normal-mode)
+
+    ;; insert the table of contents
+    (when thetoc
+      (goto-char (point-min))
+      (if (re-search-forward "^[ \t]*\\[TABLE-OF-CONTENTS\\][ \t]*$" nil t)
+         (progn
+           (goto-char (match-beginning 0))
+           (replace-match ""))
+       (goto-char first-heading-pos))
+      (mapc 'insert thetoc)
+      (or (looking-at "[ \t]*\n[ \t]*\n")
+         (insert "\n\n")))
+
     (save-buffer)
     ;; remove display and invisible chars
     (let (beg end)
@@ -17124,8 +22016,8 @@ underlined headlines.  The default is 3."
            (progn
              (setq lv (- (match-end 1) (match-beginning 1))
                    todo (and (match-beginning 2)
-                             (not (equal (match-string 2 line)
-                                         org-done-string))))
+                             (not (member (match-string 2 line)
+                                         org-done-keywords))))
                                        ; TODO, not DONE
              (if (<= lv level) (throw 'exit nil))
              (if todo (throw 'exit t))))))))
@@ -17159,7 +22051,7 @@ underlined headlines.  The default is 3."
          ;; find the indentation of the next non-empty line
          (catch 'stop
            (while lines
-             (if (string-match "^\\*" (car lines)) (throw 'stop nil))
+             (if (string-match "^\\* " (car lines)) (throw 'stop nil))
              (if (string-match "^\\([ \t]*\\)\\S-" (car lines))
                  (throw 'stop (setq ind (org-get-indentation (car lines)))))
              (pop lines)))
@@ -17169,7 +22061,7 @@ underlined headlines.  The default is 3."
          (insert "\n"))
       (setq char (nth (- umax level) (reverse org-export-ascii-underline)))
       (unless org-export-with-tags
-       (if (string-match "[ \t]+\\(:[a-zA-Z0-9_@:]+:\\)[ \t]*$" title)
+       (if (string-match (org-re "[ \t]+\\(:[[:alnum:]_@:]+:\\)[ \t]*$") title)
            (setq title (replace-match "" t t title))))
       (if org-export-with-section-numbers
          (setq title (concat (org-section-number level) " " title)))
@@ -17187,7 +22079,7 @@ continue to use it.  The prefix arg ARG is passed through to the exporting
 command."
   (interactive
    (list (progn
-          (message "Export visible: [a]SCII  [h]tml  [b]rowse HTML  [x]OXO  [ ]keep buffer")
+          (message "Export visible: [a]SCII  [h]tml  [b]rowse HTML [H/R]uffer with HTML  [x]OXO  [ ]keep buffer")
           (read-char-exclusive))
         current-prefix-arg))
   (if (not (member type '(?a ?\C-a ?b ?\C-b ?h ?x ?\ )))
@@ -17198,11 +22090,19 @@ command."
                                (?b . org-export-as-html-and-open)
                                (?\C-b . org-export-as-html-and-open)
                                (?h . org-export-as-html)
+                               (?H . org-export-as-html-to-buffer)
+                               (?R . org-export-region-as-html)
                                (?x . org-export-as-xoxo)))))
         (keepp (equal type ?\ ))
         (file buffer-file-name)
         (buffer (get-buffer-create "*Org Export Visible*"))
         s e)
+    ;; Need to hack the drawers here.
+    (save-excursion
+      (goto-char (point-min))
+      (while (re-search-forward org-drawer-regexp nil t)
+       (goto-char (match-beginning 1))
+       (or (org-invisible-p) (org-flag-drawer nil))))
     (with-current-buffer buffer (erase-buffer))
     (save-excursion
       (setq s (goto-char (point-min)))
@@ -17210,6 +22110,7 @@ command."
        (goto-char (org-find-invisible))
        (append-to-buffer buffer s (point))
        (setq s (goto-char (org-find-visible))))
+      (org-cycle-hide-drawers 'all)
       (goto-char (point-min))
       (unless keepp
        ;; Copy all comment lines to the end, to make sure #+ settings are
@@ -17253,10 +22154,11 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
 #+EMAIL:     %s
 #+LANGUAGE:  %s
 #+TEXT:      Some descriptive text to be emitted.  Several lines OK.
-#+OPTIONS:   H:%d num:%s toc:%s \\n:%s @:%s ::%s |:%s ^:%s *:%s TeX:%s LaTeX:%s
+#+OPTIONS:   H:%d num:%s toc:%s \\n:%s @:%s ::%s |:%s ^:%s f:%s *:%s TeX:%s LaTeX:%s skip:%s p:%s
 #+CATEGORY:  %s
 #+SEQ_TODO:  %s
 #+TYP_TODO:  %s
+#+PRIORITIES: %c %c %c
 #+STARTUP:   %s %s %s %s %s
 #+TAGS:      %s
 #+ARCHIVE:   %s
@@ -17271,16 +22173,16 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
    org-export-with-fixed-width
    org-export-with-tables
    org-export-with-sub-superscripts
+   org-export-with-footnotes
    org-export-with-emphasize
    org-export-with-TeX-macros
    org-export-with-LaTeX-fragments
+   org-export-skip-text-before-1st-heading
+   org-export-with-property-drawer
    (file-name-nondirectory buffer-file-name)
-   (if (equal org-todo-interpretation 'sequence)
-       (mapconcat 'identity org-todo-keywords " ")
-     "TODO FEEDBACK VERIFY DONE")
-   (if (equal org-todo-interpretation 'type)
-       (mapconcat 'identity org-todo-keywords " ")
-     "Me Jason Marie DONE")
+   "TODO FEEDBACK VERIFY DONE"
+   "Me Jason Marie DONE"
+   org-highest-priority org-lowest-priority org-default-priority
    (cdr (assoc org-startup-folded
               '((nil . "showall") (t . "overview") (content . "content"))))
    (if org-odd-levels-only "odd" "oddeven")
@@ -17348,12 +22250,12 @@ this line is also exported in fixed-width font."
       (save-excursion
        (org-back-to-heading)
        (if (looking-at (concat outline-regexp
-                               "\\( +\\<" org-quote-string "\\>\\)"))
+                               "\\( *\\<" org-quote-string "\\>\\)"))
            (replace-match "" t t nil 1)
          (if (looking-at outline-regexp)
              (progn
                (goto-char (match-end 0))
-               (insert " " org-quote-string))))))))
+               (insert org-quote-string " "))))))))
 
 (defun org-export-as-html-and-open (arg)
   "Export the outline as HTML and immediately open it with a browser.
@@ -17372,19 +22274,96 @@ emacs         --batch
        --visit=MyFile --funcall org-export-as-html-batch"
   (org-export-as-html org-export-headline-levels 'hidden))
 
-(defun org-export-as-html (arg &optional hidden ext-plist)
+(defun org-export-as-html-to-buffer (arg)
+  "Call `org-exort-as-html` with output to a temporary buffer.
+No file is created.  The prefix ARG is passed through to `org-export-as-html'."
+  (interactive "P")
+  (org-export-as-html arg nil nil "*Org HTML Export*")
+  (switch-to-buffer-other-window "*Org HTML Export*"))
+
+(defun org-replace-region-by-html (beg end)
+  "Assume the current region has org-mode syntax, and convert it to HTML.
+This can be used in any buffer.  For example, you could write an
+itemized list in org-mode syntax in an HTML buffer and then use this
+command to convert it."
+  (interactive "r")
+  (let (reg html buf pop-up-frames)
+    (save-window-excursion
+      (if (org-mode-p)
+         (setq html (org-export-region-as-html
+                     beg end t 'string))
+       (setq reg (buffer-substring beg end)
+             buf (get-buffer-create "*Org tmp*"))
+       (with-current-buffer buf
+         (erase-buffer)
+         (insert reg)
+         (org-mode)
+         (setq html (org-export-region-as-html
+                     (point-min) (point-max) t 'string)))
+       (kill-buffer buf)))
+    (delete-region beg end)
+    (insert html)))
+
+(defun org-export-region-as-html (beg end &optional body-only buffer)
+  "Convert region from BEG to END in org-mode buffer to HTML.
+If prefix arg BODY-ONLY is set, omit file header, footer, and table of
+contents, and only produce the region of converted text, useful for
+cut-and-paste operations.
+If BUFFER is a buffer or a string, use/create that buffer as a target
+of the converted HTML.  If BUFFER is the symbol `string', return the
+produced HTML as a string and leave not buffer behind.  For example,
+a Lisp program could call this function in the following way:
+
+  (setq html (org-export-region-as-html beg end t 'string))
+
+When called interactively, the output buffer is selected, and shown
+in a window.  A non-interactive call will only retunr the buffer."
+  (interactive "r\nP")
+  (when (interactive-p)
+    (setq buffer "*Org HTML Export*"))
+  (let ((transient-mark-mode t) (zmacs-regions t)
+       rtn)
+    (goto-char end)
+    (set-mark (point)) ;; to activate the region
+    (goto-char beg)
+    (setq rtn (org-export-as-html
+              nil nil nil
+              buffer body-only))
+    (if (fboundp 'deactivate-mark) (deactivate-mark))
+    (if (and (interactive-p) (bufferp rtn))
+       (switch-to-buffer-other-window rtn)
+      rtn)))
+
+(defun org-export-as-html (arg &optional hidden ext-plist
+                              to-buffer body-only)
   "Export the outline as a pretty HTML file.
-If there is an active region, export only the region.
-The prefix ARG specifies how many levels of the outline should become
-headlines.  The default is 3.  Lower levels will become bulleted lists.
-When HIDDEN is non-nil, don't display the HTML buffer.
+If there is an active region, export only the region.  The prefix
+ARG specifies how many levels of the outline should become
+headlines.  The default is 3.  Lower levels will become bulleted
+lists.  When HIDDEN is non-nil, don't display the HTML buffer.
 EXT-PLIST is a property list with external parameters overriding
-org-mode's default settings, but still inferior to file-local settings."
+org-mode's default settings, but still inferior to file-local
+settings.  When TO-BUFFER is non-nil, create a buffer with that
+name and export to that buffer.  If TO-BUFFER is the symbol `string',
+don't leave any buffer behind but just return the resulting HTML as
+a string.  When BODY-ONLY is set, don't produce the file header and footer,
+simply return the content of <body>...</body>, without even
+the body tags themselves."
   (interactive "P")
+
+  ;; Make sure we have a file name when we need it.
+  (when (and (not (or to-buffer body-only))
+            (not buffer-file-name))
+    (if (buffer-base-buffer)
+       (org-set-local 'buffer-file-name
+                      (with-current-buffer (buffer-base-buffer)
+                        buffer-file-name))
+      (error "Need a file name to be able to export.")))
+
   (message "Exporting...")
   (setq-default org-todo-line-regexp org-todo-line-regexp)
   (setq-default org-deadline-line-regexp org-deadline-line-regexp)
-  (setq-default org-done-string org-done-string)
+  (setq-default org-done-keywords org-done-keywords)
   (setq-default org-maybe-keyword-time-regexp org-maybe-keyword-time-regexp)
   (let* ((opt-plist (org-combine-plists (org-default-export-plist)
                                        ext-plist
@@ -17392,44 +22371,53 @@ org-mode's default settings, but still inferior to file-local settings."
 
         (style (plist-get opt-plist :style))
         (link-validate (plist-get opt-plist :link-validation-function))
-        valid
+        valid thetoc have-headings first-heading-pos
         (odd org-odd-levels-only)
         (region-p (org-region-active-p))
-         (region
-          (buffer-substring
-           (if region-p (region-beginning) (point-min))
-           (if region-p (region-end) (point-max))))
+        (subtree-p
+         (when region-p
+           (save-excursion
+             (goto-char (region-beginning))
+             (and (org-at-heading-p)
+                  (>= (org-end-of-subtree t t) (region-end))))))
         ;; The following two are dynamically scoped into other
         ;; routines below.
         (org-current-export-dir (org-export-directory :html opt-plist))
         (org-current-export-file buffer-file-name)
-         (all_lines
-          (org-skip-comments (org-split-string
-                             (org-cleaned-string-for-export
-                              region :emph-multiline :for-html
-                              (if (plist-get opt-plist :LaTeX-fragments)
-                                  :LaTeX-fragments))
-                             "[\r\n]")))
-         (lines (org-export-find-first-heading-line all_lines))
          (level 0) (line "") (origline "") txt todo
          (umax nil)
          (umax-toc nil)
-         (filename (concat (file-name-as-directory
-                           (org-export-directory :html opt-plist))
-                          (file-name-sans-extension
-                           (file-name-nondirectory buffer-file-name))
-                          ".html"))
-        (current-dir (file-name-directory buffer-file-name))
-         (buffer (find-file-noselect filename))
+         (filename (if to-buffer nil
+                    (concat (file-name-as-directory
+                             (org-export-directory :html opt-plist))
+                            (file-name-sans-extension
+                             (or (and subtree-p
+                                      (org-entry-get (region-beginning)
+                                                     "EXPORT_FILE_NAME" t))
+                                 (file-name-nondirectory buffer-file-name)))
+                            "." org-export-html-extension)))
+        (current-dir (if buffer-file-name
+                         (file-name-directory buffer-file-name)
+                       default-directory))
+        (buffer (if to-buffer
+                    (cond
+                     ((eq to-buffer 'string) (get-buffer-create "*Org HTML Export*"))
+                     (t (get-buffer-create to-buffer)))
+                  (find-file-noselect filename)))
          (org-levels-open (make-vector org-level-max nil))
-        (date (format-time-string "%Y/%m/%d" (current-time)))
-        (time  (format-time-string "%X" (org-current-time)))
+        (date (plist-get opt-plist :date))
          (author      (plist-get opt-plist :author))
-        (title       (or (plist-get opt-plist :title)
-                         (file-name-sans-extension
-                          (file-name-nondirectory buffer-file-name))))
+        (title       (or (and subtree-p (org-export-get-title-from-subtree))
+                         (plist-get opt-plist :title)
+                         (and (not
+                               (plist-get opt-plist :skip-before-1st-heading))
+                              (org-export-grab-title-from-buffer))
+                         (and buffer-file-name
+                              (file-name-sans-extension
+                               (file-name-nondirectory buffer-file-name)))
+                         "UNTITLED"))
         (quote-re0   (concat "^[ \t]*" org-quote-string "\\>"))
-        (quote-re    (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)"))
+        (quote-re    (concat "^\\(\\*+\\)\\([ \t]+" org-quote-string "\\>\\)"))
         (inquote     nil)
         (infixed     nil)
         (in-local-list nil)
@@ -17438,55 +22426,91 @@ org-mode's default settings, but still inferior to file-local settings."
         (llt org-plain-list-ordered-item-terminator)
         (email       (plist-get opt-plist :email))
          (language    (plist-get opt-plist :language))
-        (text        (plist-get opt-plist :text))
         (lang-words  nil)
         (target-alist nil) tg
         (head-count  0) cnt
         (start       0)
         (coding-system (and (boundp 'buffer-file-coding-system)
                             buffer-file-coding-system))
-        (coding-system-for-write coding-system)
-        (save-buffer-coding-system coding-system)
-        (charset (and coding-system
+        (coding-system-for-write (or org-export-html-coding-system
+                                     coding-system))
+        (save-buffer-coding-system (or org-export-html-coding-system
+                                       coding-system))
+        (charset (and coding-system-for-write
                       (fboundp 'coding-system-get)
-                      (coding-system-get coding-system 'mime-charset)))
+                      (coding-system-get coding-system-for-write
+                                         'mime-charset)))
+         (region
+          (buffer-substring
+           (if region-p (region-beginning) (point-min))
+           (if region-p (region-end) (point-max))))
+         (lines
+          (org-split-string
+          (org-cleaned-string-for-export
+           region
+           :emph-multiline t
+           :for-html t
+           :skip-before-1st-heading
+           (plist-get opt-plist :skip-before-1st-heading)
+           :archived-trees
+           (plist-get opt-plist :archived-trees)
+           :add-text
+           (plist-get opt-plist :text)
+           :LaTeX-fragments
+           (plist-get opt-plist :LaTeX-fragments))
+          "[\r\n]"))
         table-open type
         table-buffer table-orig-buffer
-        ind start-is-num starter
+        ind start-is-num starter didclose
         rpl path desc descp desc1 desc2 link
         )
+
+    (let ((inhibit-read-only t))
+      (org-unmodified
+       (remove-text-properties (point-min) (point-max)
+                              '(:org-license-to-kill t))))
+
     (message "Exporting...")
 
-    (setq org-last-level 1)
+    (setq org-min-level (org-get-min-level lines))
+    (setq org-last-level org-min-level)
     (org-init-section-numbers)
 
+    (cond
+     ((and date (string-match "%" date))
+      (setq date (format-time-string date (current-time))))
+     (date)
+     (t (setq date (format-time-string "%Y/%m/%d %X" (current-time)))))
+
     ;; Get the language-dependent settings
     (setq lang-words (or (assoc language org-export-language-setup)
                          (assoc "en" org-export-language-setup)))
 
     ;; Switch to the output buffer
-    (if (or hidden t)
-        (set-buffer buffer)
-      (switch-to-buffer-other-window buffer))
+    (set-buffer buffer)
     (erase-buffer)
     (fundamental-mode)
+
+    (and (fboundp 'set-buffer-file-coding-system)
+        (set-buffer-file-coding-system coding-system-for-write))
+
     (let ((case-fold-search nil)
          (org-odd-levels-only odd))
       ;; create local variables for all options, to make sure all called
       ;; functions get the correct information
-      (mapcar (lambda (x)
-               (set (make-local-variable (cdr x))
-                    (plist-get opt-plist (car x))))
-             org-export-plist-vars)
+      (mapc (lambda (x)
+             (set (make-local-variable (cdr x))
+                  (plist-get opt-plist (car x))))
+           org-export-plist-vars)
       (setq umax (if arg (prefix-numeric-value arg)
                    org-export-headline-levels))
       (setq umax-toc (if (integerp org-export-with-toc)
                         (min org-export-with-toc umax)
                       umax))
-
-      ;; File header
-      (insert (format
-               "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
+      (unless body-only
+       ;; File header
+       (insert (format
+                "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
                \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
 <html xmlns=\"http://www.w3.org/1999/xhtml\"
 lang=\"%s\" xml:lang=\"%s\">
@@ -17494,99 +22518,103 @@ lang=\"%s\" xml:lang=\"%s\">
 <title>%s</title>
 <meta http-equiv=\"Content-Type\" content=\"text/html;charset=%s\"/>
 <meta name=\"generator\" content=\"Org-mode\"/>
-<meta name=\"generated\" content=\"%s %s\"/>
+<meta name=\"generated\" content=\"%s\"/>
 <meta name=\"author\" content=\"%s\"/>
 %s
 </head><body>
 "
-              language language (org-html-expand title) (or charset "iso-8859-1")
-              date time author style))
+                language language (org-html-expand title)
+                (or charset "iso-8859-1") date author style))
 
+       (insert (or (plist-get opt-plist :preamble) ""))
 
-      (insert (or (plist-get opt-plist :preamble) ""))
+       (when (plist-get opt-plist :auto-preamble)
+         (if title (insert (format org-export-html-title-format
+                                   (org-html-expand title))))))
 
-      (when (plist-get opt-plist :auto-preamble)
-       (if title     (insert (format org-export-html-title-format
-                                     (org-html-expand title))))
-       (if text      (insert "<p>\n" (org-html-expand text) "</p>")))
-
-      (if org-export-with-toc
+      (if (and org-export-with-toc (not body-only))
          (progn
-           (insert (format "<h%d>%s</h%d>\n"
-                           org-export-html-toplevel-hlevel
-                           (nth 3 lang-words)
-                           org-export-html-toplevel-hlevel))
-           (insert "<ul>\n<li>")
+           (push (format "<h%d>%s</h%d>\n"
+                         org-export-html-toplevel-hlevel
+                         (nth 3 lang-words)
+                         org-export-html-toplevel-hlevel)
+                 thetoc)
+           (push "<ul>\n<li>" thetoc)
            (setq lines
-           (mapcar '(lambda (line)
-                      (if (string-match org-todo-line-regexp line)
-                          ;; This is a headline
-                          (progn
-                            (setq level (- (match-end 1) (match-beginning 1))
-                                  level (org-tr-level level)
-                                  txt (save-match-data
-                                        (org-html-expand
-                                         (org-export-cleanup-toc-line
-                                          (match-string 3 line))))
-                                  todo
-                                  (or (and org-export-mark-todo-in-toc
-                                           (match-beginning 2)
-                                           (not (equal (match-string 2 line)
-                                                       org-done-string)))
+                 (mapcar '(lambda (line)
+                   (if (string-match org-todo-line-regexp line)
+                       ;; This is a headline
+                       (progn
+                         (setq have-headings t)
+                         (setq level (- (match-end 1) (match-beginning 1))
+                               level (org-tr-level level)
+                               txt (save-match-data
+                                     (org-html-expand
+                                      (org-export-cleanup-toc-line
+                                       (match-string 3 line))))
+                               todo
+                               (or (and org-export-mark-todo-in-toc
+                                        (match-beginning 2)
+                                        (not (member (match-string 2 line)
+                                                     org-done-keywords)))
                                        ; TODO, not DONE
-                                      (and org-export-mark-todo-in-toc
-                                           (= level umax-toc)
-                                           (org-search-todo-below
-                                            line lines level))))
-                            (if (and (memq org-export-with-tags '(not-in-toc nil))
-                                     (string-match "[ \t]+:[a-zA-Z0-9_@:]+:[ \t]*$" txt))
-                                (setq txt (replace-match "" t t txt)))
-                            (if (string-match quote-re0 txt)
-                                (setq txt (replace-match "" t t txt)))
-                            (if org-export-with-section-numbers
-                                (setq txt (concat (org-section-number level)
-                                                  " " txt)))
-                            (if (<= level umax-toc)
-                                (progn
-                                  (setq head-count (+ head-count 1))
-                                  (if (> level org-last-level)
-                                      (progn
-                                        (setq cnt (- level org-last-level))
-                                        (while (>= (setq cnt (1- cnt)) 0)
-                                          (insert "\n<ul>\n<li>"))
-                                        (insert "\n")))
-                                  (if (< level org-last-level)
-                                      (progn
-                                        (setq cnt (- org-last-level level))
-                                        (while (>= (setq cnt (1- cnt)) 0)
-                                          (insert "</li>\n</ul>"))
-                                        (insert "\n")))
-                                  ;; Check for targets
-                                  (while (string-match org-target-regexp line)
-                                    (setq tg (match-string 1 line)
-                                          line (replace-match
-                                                (concat "@<span class=\"target\">" tg "@</span> ")
-                                                t t line))
-                                    (push (cons (org-solidify-link-text tg)
-                                                (format "sec-%d" head-count))
-                                          target-alist))
-                                  (while (string-match "&lt;\\(&lt;\\)+\\|&gt;\\(&gt;\\)+" txt)
-                                    (setq txt (replace-match "" t t txt)))
-                                  (insert
-                                   (format
-                                    (if todo
-                                        "</li>\n<li><a href=\"#sec-%d\"><span class=\"todo\">%s</span></a>"
-                                      "</li>\n<li><a href=\"#sec-%d\">%s</a>")
-                                    head-count txt))
-
-                                  (setq org-last-level level))
-                              )))
-                      line)
-                   lines))
-           (while (> org-last-level 0)
+                                   (and org-export-mark-todo-in-toc
+                                        (= level umax-toc)
+                                        (org-search-todo-below
+                                         line lines level))))
+                         (if (and (memq org-export-with-tags '(not-in-toc nil))
+                                  (string-match
+                                   (org-re "[ \t]+:[[:alnum:]_@:]+:[ \t]*$")
+                                   txt))
+                             (setq txt (replace-match "" t t txt)))
+                         (if (string-match quote-re0 txt)
+                             (setq txt (replace-match "" t t txt)))
+                         (if org-export-with-section-numbers
+                             (setq txt (concat (org-section-number level)
+                                               " " txt)))
+                         (if (<= level (max umax umax-toc))
+                             (setq head-count (+ head-count 1)))
+                         (if (<= level umax-toc)
+                             (progn
+                               (if (> level org-last-level)
+                                   (progn
+                                     (setq cnt (- level org-last-level))
+                                     (while (>= (setq cnt (1- cnt)) 0)
+                                       (push "\n<ul>\n<li>" thetoc))
+                                     (push "\n" thetoc)))
+                               (if (< level org-last-level)
+                                   (progn
+                                     (setq cnt (- org-last-level level))
+                                     (while (>= (setq cnt (1- cnt)) 0)
+                                       (push "</li>\n</ul>" thetoc))
+                                     (push "\n" thetoc)))
+                               ;; Check for targets
+                               (while (string-match org-target-regexp line)
+                                 (setq tg (match-string 1 line)
+                                       line (replace-match
+                                             (concat "@<span class=\"target\">" tg "@</span> ")
+                                             t t line))
+                                 (push (cons (org-solidify-link-text tg)
+                                             (format "sec-%d" head-count))
+                                       target-alist))
+                               (while (string-match "&lt;\\(&lt;\\)+\\|&gt;\\(&gt;\\)+" txt)
+                                 (setq txt (replace-match "" t t txt)))
+                               (push
+                                (format
+                                 (if todo
+                                     "</li>\n<li><a href=\"#sec-%d\"><span class=\"todo\">%s</span></a>"
+                                   "</li>\n<li><a href=\"#sec-%d\">%s</a>")
+                                 head-count txt) thetoc)
+
+                               (setq org-last-level level))
+                           )))
+                   line)
+                         lines))
+           (while (> org-last-level (1- org-min-level))
              (setq org-last-level (1- org-last-level))
-             (insert "</li>\n</ul>\n"))
-           ))
+             (push "</li>\n</ul>\n" thetoc))
+           (setq thetoc (if have-headings (nreverse thetoc) nil))))
+
       (setq head-count 0)
       (org-init-section-numbers)
 
@@ -17594,7 +22622,7 @@ lang=\"%s\" xml:lang=\"%s\">
        (catch 'nextline
 
          ;; end of quote section?
-         (when (and inquote (string-match "^\\*+" line))
+         (when (and inquote (string-match "^\\*+ " line))
            (insert "</pre>\n")
            (setq inquote nil))
          ;; inside a quote section?
@@ -17618,7 +22646,16 @@ lang=\"%s\" xml:lang=\"%s\">
 
          ;; Protected HTML
          (when (get-text-property 0 'org-protected line)
-           (insert line "\n")
+           (let (par)
+             (when (re-search-backward
+                    "\\(<p>\\)\\([ \t\r\n]*\\)\\=" (- (point) 100) t)
+               (setq par (match-string 1))
+               (replace-match "\\2\n"))
+             (insert line "\n")
+             (while (and lines
+                         (get-text-property 0 'org-protected (car lines)))
+               (insert (pop lines) "\n"))
+             (and par (insert "<p>\n")))
            (throw 'nextline nil))
 
          ;; Horizontal line
@@ -17676,9 +22713,10 @@ lang=\"%s\" xml:lang=\"%s\">
              (setq rpl
                    (concat
                     "<a href=\"#"
-                    (org-solidify-link-text path target-alist)
+                    (org-solidify-link-text
+                     (save-match-data (org-link-unescape path)) target-alist)
                     "\">" desc "</a>")))
-            ((member type '("http" "https")) ; FIXME: need to test this.
+            ((member type '("http" "https"))
              ;; standard URL, just check if we need to inline an image
              (if (and (or (eq t org-export-html-inline-images)
                           (and org-export-html-inline-images (not descp)))
@@ -17709,7 +22747,7 @@ lang=\"%s\" xml:lang=\"%s\">
                             (string-match "\\.org$" thefile))
                    (setq thefile (concat (substring thefile 0
                                                     (match-beginning 0))
-                                         ".html"))
+                                         "." org-export-html-extension))
                    (if (and search
                             ;; make sure this is can be used as target search
                             (not (string-match "^[0-9]*$" search))
@@ -17735,24 +22773,40 @@ lang=\"%s\" xml:lang=\"%s\">
                                "&gt;</i>"))))
            (setq line (replace-match rpl t t line)
                  start (+ start (length rpl))))
+
          ;; TODO items
          (if (and (string-match org-todo-line-regexp line)
                   (match-beginning 2))
-             (if (equal (match-string 2 line) org-done-string)
-                 (setq line (replace-match
-                             "<span class=\"done\">\\2</span>"
-                             t nil line 2))
-               (setq line (replace-match "<span class=\"todo\">\\2</span>"
-                                         t nil line 2))))
+
+              (setq line 
+                    (concat (substring line 0 (match-beginning 2))
+                            "<span class=\""
+                            (if (member (match-string 2 line)
+                                        org-done-keywords)
+                                "done" "todo")
+                            "\">" (match-string 2 line)
+                            "</span>" (substring line (match-end 2)))))
+
+         ;; Does this contain a reference to a footnote?
+         (when org-export-with-footnotes
+           (while (string-match "\\([^* \t].*?\\)\\[\\([0-9]+\\)\\]" line)
+             (let ((n (match-string 2 line)))
+               (setq line
+                     (replace-match
+                      (format
+                       "%s<sup><a class=\"footref\" name=\"fnr.%s\" href=\"#fn.%s\">%s</a></sup>"
+                       (match-string 1 line) n n n)
+                      t t line)))))
 
          (cond
-          ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
+          ((string-match "^\\(\\*+\\)[ \t]+\\(.*\\)" line)
            ;; This is a headline
            (setq level (org-tr-level (- (match-end 1) (match-beginning 1)))
                  txt (match-string 2 line))
            (if (string-match quote-re0 txt)
                (setq txt (replace-match "" t t txt)))
-           (if (<= level umax) (setq head-count (+ head-count 1)))
+           (if (<= level (max umax umax-toc))
+               (setq head-count (+ head-count 1)))
            (when in-local-list
              ;; Close any local lists before inserting a new header line
              (while local-list-num
@@ -17761,6 +22815,7 @@ lang=\"%s\" xml:lang=\"%s\">
                (pop local-list-num))
              (setq local-list-indent nil
                    in-local-list nil))
+           (setq first-heading-pos (or first-heading-pos (point)))
            (org-html-level-start level txt umax
                                  (and org-export-with-toc (<= level umax))
                                  head-count)
@@ -17801,11 +22856,15 @@ lang=\"%s\" xml:lang=\"%s\">
                    line (substring line (match-beginning 5)))
              (unless (string-match "[^ \t]" line)
                ;; empty line.  Pretend indentation is large.
-               (setq ind (1+ (or (car local-list-indent) 1))))
+               (setq ind (if org-empty-line-terminates-plain-lists
+                             0
+                           (1+ (or (car local-list-indent) 1)))))
+             (setq didclose nil)
              (while (and in-local-list
                          (or (and (= ind (car local-list-indent))
                                   (not starter))
                              (< ind (car local-list-indent))))
+               (setq didclose t)
                (org-close-li)
                (insert (if (car local-list-num) "</ol>\n" "</ul>"))
                (pop local-list-num) (pop local-list-indent)
@@ -17814,7 +22873,7 @@ lang=\"%s\" xml:lang=\"%s\">
               ((and starter
                     (or (not in-local-list)
                         (> ind (car local-list-indent))))
-               ;; Start new (level of ) list
+               ;; Start new (level of) list
                (org-close-par-maybe)
                (insert (if start-is-num "<ol>\n<li>\n" "<ul>\n<li>\n"))
                (push start-is-num local-list-num)
@@ -17823,7 +22882,10 @@ lang=\"%s\" xml:lang=\"%s\">
               (starter
                ;; continue current list
                (org-close-li)
-               (insert "<li>\n")))
+               (insert "<li>\n"))
+              (didclose
+               ;; we did close a list, normal text follows: need <p>
+               (org-open-par)))
              (if (string-match "^[ \t]*\\[\\([X ]\\)\\]" line)
                  (setq line
                        (replace-match
@@ -17837,6 +22899,14 @@ lang=\"%s\" xml:lang=\"%s\">
            ;; also start a new paragraph.
            (if (string-match "^ [-+*]-\\|^[ \t]*$" line) (org-open-par))
 
+           ;; Is this the start of a footnote?
+           (when org-export-with-footnotes
+             (when (string-match "^[ \t]*\\[\\([0-9]+\\)\\]" line)
+               (org-close-par-maybe)
+               (let ((n (match-string 1 line)))
+                 (setq line (replace-match
+                             (format "<p class=\"footnote\"><sup><a class=\"footnum\" name=\"fn.%s\" href=\"#fnr.%s\">%s</a></sup>" n n n) t t line)))))
+
            ;; Check if the line break needs to be conserved
            (cond
             ((string-match "\\\\\\\\[ \t]*$" line)
@@ -17860,24 +22930,43 @@ lang=\"%s\" xml:lang=\"%s\">
                            (and org-export-with-toc (<= level umax))
                            head-count)
 
-      (when (plist-get opt-plist :auto-postamble)
-       (when author
-         (insert "<p class=\"author\"> "
-                 (nth 1 lang-words) ": " author "\n")
-         (when email
-           (insert "<a href=\"mailto:" email "\">&lt;"
-                   email "&gt;</a>\n"))
-         (insert "</p>\n"))
-       (when (and date time)
-         (insert "<p class=\"date\"> "
-                 (nth 2 lang-words) ": "
-                 date " " time "</p>\n")))
-
-      (if org-export-html-with-timestamp
-         (insert org-export-html-html-helper-timestamp))
-      (insert (or (plist-get opt-plist :postamble) ""))
-      (insert "</body>\n</html>\n")
+      (unless body-only
+       (when (plist-get opt-plist :auto-postamble)
+         (when (and org-export-author-info author)
+           (insert "<p class=\"author\"> "
+                   (nth 1 lang-words) ": " author "\n")
+           (when email
+             (insert "<a href=\"mailto:" email "\">&lt;"
+                     email "&gt;</a>\n"))
+           (insert "</p>\n"))
+         (when (and date org-export-time-stamp-file)
+           (insert "<p class=\"date\"> "
+                   (nth 2 lang-words) ": "
+                   date "</p>\n")))
+
+       (if org-export-html-with-timestamp
+           (insert org-export-html-html-helper-timestamp))
+       (insert (or (plist-get opt-plist :postamble) ""))
+       (insert "</body>\n</html>\n"))
+
       (normal-mode)
+      (if (eq major-mode default-major-mode) (html-mode))
+
+      ;; insert the table of contents
+      (goto-char (point-min))
+      (when thetoc
+       (if (or (re-search-forward
+                "<p>\\s-*\\[TABLE-OF-CONTENTS\\]\\s-*</p>" nil t)
+               (re-search-forward
+                "\\[TABLE-OF-CONTENTS\\]" nil t))
+           (progn
+             (goto-char (match-beginning 0))
+             (replace-match ""))
+         (goto-char first-heading-pos)
+         (when (looking-at "\\s-*</p>")
+           (goto-char (match-end 0))
+           (insert "\n")))
+       (mapc 'insert thetoc))
       ;; remove empty paragraphs and lists
       (goto-char (point-min))
       (while (re-search-forward "<p>[ \r\n\t]*</p>" nil t)
@@ -17885,13 +22974,63 @@ lang=\"%s\" xml:lang=\"%s\">
       (goto-char (point-min))
       (while (re-search-forward "<li>[ \r\n\t]*</li>\n?" nil t)
        (replace-match ""))
-      (save-buffer)
+      (or to-buffer (save-buffer))
       (goto-char (point-min))
-      (message "Exporting... done"))))
-
+      (message "Exporting... done")
+      (if (eq to-buffer 'string)
+         (prog1 (buffer-substring (point-min) (point-max))
+           (kill-buffer (current-buffer)))
+       (current-buffer)))))
+
+(defvar org-table-colgroup-info nil)
+(defun org-format-table-ascii (lines)
+  "Format a table for ascii export."
+  (if (stringp lines)
+      (setq lines (org-split-string lines "\n")))
+  (if (not (string-match "^[ \t]*|" (car lines)))
+      ;; Table made by table.el - test for spanning
+      lines
+
+    ;; A normal org table
+    ;; Get rid of hlines at beginning and end
+    (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines)))
+    (setq lines (nreverse lines))
+    (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines)))
+    (setq lines (nreverse lines))
+    (when org-export-table-remove-special-lines
+      ;; Check if the table has a marking column.  If yes remove the
+      ;; column and the special lines
+      (setq lines (org-table-clean-before-export lines)))
+    ;; Get rid of the vertical lines except for grouping
+    (let ((vl (org-colgroup-info-to-vline-list org-table-colgroup-info))
+         rtn line vl1 start)
+      (while (setq line (pop lines))
+       (if (string-match org-table-hline-regexp line)
+           (and (string-match "|\\(.*\\)|" line)
+                (setq line (replace-match " \\1" t nil line)))
+         (setq start 0 vl1 vl)
+         (while (string-match "|" line start)
+           (setq start (match-end 0))
+           (or (pop vl1) (setq line (replace-match " " t t line)))))
+       (push line rtn))
+      (nreverse rtn))))
+
+(defun org-colgroup-info-to-vline-list (info)
+  (let (vl new last)
+    (while info
+      (setq last new new (pop info))
+      (if (or (memq last '(:end :startend))
+             (memq new  '(:start :startend)))
+         (push t vl)
+       (push nil vl)))
+    (setq vl (nreverse vl))
+    (and vl (setcar vl nil))
+    vl))
 
 (defun org-format-table-html (lines olines)
   "Find out which HTML converter to use and return the HTML code."
+  (if (stringp lines)
+      (setq lines (org-split-string lines "\n")))
   (if (string-match "^[ \t]*|" (car lines))
       ;; A normal org table
       (org-format-org-table-html lines)
@@ -17931,7 +23070,7 @@ lang=\"%s\" xml:lang=\"%s\">
                              (lambda (x) (string-match "^[ \t]*|-" x))
                              (cdr lines)))))
        (nlines 0) fnum i
-       tbopen line fields html)
+       tbopen line fields html gr colgropen)
     (if splice (setq head nil))
     (unless splice (push (if head "<thead>" "<tbody>") html))
     (setq tbopen t)
@@ -17957,8 +23096,10 @@ lang=\"%s\" xml:lang=\"%s\">
                                  (string-match org-table-number-regexp x))
                             (incf (aref fnum i)))
                         (if head
-                            (concat "<th>" x "</th>")
-                          (concat "<td>" x "</td>")))
+                            (concat (car org-export-table-header-tags) x
+                                    (cdr org-export-table-header-tags))
+                          (concat (car org-export-table-data-tags) x
+                                  (cdr org-export-table-data-tags))))
                       fields "")
                      "</tr>")
              html)))
@@ -17969,45 +23110,73 @@ lang=\"%s\" xml:lang=\"%s\">
       ;; Put in COL tags with the alignment (unfortuntely often ignored...)
       (push (mapconcat
             (lambda (x)
-              (format "<COL align=\"%s\">"
+              (setq gr (pop org-table-colgroup-info))
+              (format "%s<COL align=\"%s\"></COL>%s"
+                      (if (memq gr '(:start :startend)) 
+                          (prog1
+                              (if colgropen "</colgroup>\n<colgroup>" "<colgroup>")
+                            (setq colgropen t))
+                        "")
                       (if (> (/ (float x) nlines) org-table-number-fraction)
-                          "right" "left")))
+                          "right" "left")
+                      (if (memq gr '(:end :startend)) 
+                          (progn (setq colgropen nil) "</colgroup>")
+                        "")))
             fnum "")
            html)
+      (if colgropen (setq html (cons (car html) (cons "</colgroup>" (cdr html)))))
       (push org-export-html-table-tag html))
     (concat (mapconcat 'identity html "\n") "\n")))
 
 (defun org-table-clean-before-export (lines)
   "Check if the table has a marking column.
 If yes remove the column and the special lines."
+  (setq org-table-colgroup-info nil)
   (if (memq nil
            (mapcar
             (lambda (x) (or (string-match "^[ \t]*|-" x)
                             (string-match "^[ \t]*| *\\([#!$*_^ /]\\) *|" x)))
             lines))
       (progn
-       (setq org-table-clean-did-remove-column-1 nil)
-       lines)
-    (setq org-table-clean-did-remove-column-1 t)
+       (setq org-table-clean-did-remove-column nil)
+       (delq nil
+             (mapcar
+              (lambda (x)
+                (cond
+                 ((string-match  "^[ \t]*| */ *|" x)
+                  (setq org-table-colgroup-info
+                        (mapcar (lambda (x)
+                                  (cond ((member x '("<" "&lt;")) :start)
+                                        ((member x '(">" "&gt;")) :end)
+                                        ((member x '("<>" "&lt;&gt;")) :startend)
+                                        (t nil)))
+                                (org-split-string x "[ \t]*|[ \t]*")))
+                  nil)
+                 (t x)))
+              lines)))
+    (setq org-table-clean-did-remove-column t)
     (delq nil
          (mapcar
-          (lambda (x) (if (string-match "^[ \t]*| *[!_^/] *|" x)
-                          nil ; ignore this line
-                        (and (or (string-match "^[ \t]*|-+\\+" x)
-                                 (string-match "^[ \t]*|[^|]*|" x))
-                             (replace-match "|" t t x))))
+          (lambda (x)
+            (cond
+             ((string-match  "^[ \t]*| */ *|" x)
+              (setq org-table-colgroup-info
+                    (mapcar (lambda (x)
+                              (cond ((member x '("<" "&lt;")) :start)
+                                    ((member x '(">" "&gt;")) :end)
+                                    ((member x '("<>" "&lt;&gt;")) :startend)
+                                    (t nil)))
+                            (cdr (org-split-string x "[ \t]*|[ \t]*"))))
+              nil)
+             ((string-match "^[ \t]*| *[!_^/] *|" x)
+              nil) ; ignore this line
+             ((or (string-match "^\\([ \t]*\\)|-+\\+" x)
+                  (string-match "^\\([ \t]*\\)|[^|]*|" x))
+              ;; remove the first column
+              (replace-match "\\1|" t nil x))
+             (t (error "This should not happen"))))
           lines))))
 
-(defun org-fake-empty-table-line (line)
-  "Replace everything except \"|\" with spaces."
-  (let ((i (length line))
-       (newstr (copy-sequence line)))
-    (while (> i 0)
-      (setq i (1- i))
-      (if (not (eq (aref newstr i) ?|))
-         (aset newstr i ?\ )))
-    newstr))
-
 (defun org-format-table-table-html (lines)
   "Format a table generated by table.el into HTML.
 This conversion does *not* use `table-generate-source' from table.el.
@@ -18024,17 +23193,21 @@ But it has the disadvantage, that no cell- or row-spanning is allowed."
            (progn
              (if field-buffer
                  (progn
-                   (setq html (concat
-                               html
-                               "<tr>"
-                               (mapconcat
-                                (lambda (x)
-                                  (if (equal x "") (setq x empty))
-                                  (if head
-                                      (concat "<th>" x "</th>\n")
-                                    (concat "<td>" x "</td>\n")))
-                                field-buffer "\n")
-                               "</tr>\n"))
+                   (setq
+                    html
+                    (concat
+                     html
+                     "<tr>"
+                     (mapconcat
+                      (lambda (x)
+                        (if (equal x "") (setq x empty))
+                        (if head
+                            (concat (car org-export-table-header-tags) x
+                                    (cdr org-export-table-header-tags))
+                          (concat (car org-export-table-data-tags) x
+                                  (cdr org-export-table-data-tags))))
+                      field-buffer "\n")
+                     "</tr>\n"))
                    (setq head nil)
                    (setq field-buffer nil)))
              ;; Ignore this line
@@ -18110,11 +23283,14 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
 
 (defun org-export-cleanup-toc-line (s)
   "Remove tags and time staps from lines going into the toc."
-  (if (string-match " +:[a-zA-Z0-9_@:]+: *$" s)
+  (if (string-match (org-re " +:[[:alnum:]_@:]+: *$") s)
       (setq s (replace-match "" t t s)))
   (when org-export-remove-timestamps-from-toc
     (while (string-match org-maybe-keyword-time-regexp s)
       (setq s (replace-match "" t t s))))
+  (while (string-match org-bracket-link-regexp s)
+    (setq s (replace-match (match-string (if (match-end 3) 3 1) s)
+                          t t s)))
   s)
 
 (defun org-html-expand (string)
@@ -18179,27 +23355,42 @@ stacked delimiters is N.  Escaping delimiters is not possible."
    "\\(\\(?:\\*\\|[-+]?[^-+*!@#$%^_ \t\r\n,:\"?<>~;./{}=()]+\\)\\)\\)")
   "The regular expression matching a sub- or superscript.")
 
+;(let ((s "a\\_b"))
+;  (and (string-match org-match-substring-regexp s)
+;       (conca      t (match-string 1 s) ":::" (match-string 2 s))))
+
 (defun org-export-html-convert-sub-super (string)
   "Convert sub- and superscripts in STRING to HTML."
-  (let (key c)
-    (while (string-match org-match-substring-regexp string)
-      (setq key (if (string= (match-string 2 string) "_") "sub" "sup"))
-      (setq c (or (match-string 8 string)
-                 (match-string 6 string)
-                 (match-string 5 string)))
-      (setq string (replace-match
-                   (concat (match-string 1 string)
-                           "<" key ">" c "</" key ">")
-                   t t string)))
+  (let (key c (s 0) (requireb (eq org-export-with-sub-superscripts '{})))
+    (while (string-match org-match-substring-regexp string s)
+      (if (and requireb (match-end 8))
+         (setq s (match-end 2))
+       (setq s (match-end 1)
+             key (if (string= (match-string 2 string) "_") "sub" "sup")
+             c (or (match-string 8 string)
+                   (match-string 6 string)
+                   (match-string 5 string))
+             string (replace-match
+                     (concat (match-string 1 string)
+                             "<" key ">" c "</" key ">")
+                     t t string))))
     (while (string-match "\\\\\\([_^]\\)" string)
-      (setq string (replace-match (match-string 1 string) t t string))))
-  string)
+      (setq string (replace-match (match-string 1 string) t t string)))
+    string))
 
 (defun org-export-html-convert-emphasize (string)
   "Apply emphasis."
-  (while (string-match org-emph-re string)
-    (setq string (replace-match (concat "\\1" (nth 2 (assoc (match-string 3 string) org-emphasis-alist)) "\\4" (nth 3 (assoc (match-string 3 string) org-emphasis-alist)) "\\5") t nil string)))
-  string)
+  (let ((s 0))
+    (while (string-match org-emph-re string s)
+      (if (not (equal
+               (substring string (match-beginning 3) (1+ (match-beginning 3)))
+               (substring string (match-beginning 4) (1+ (match-beginning 4)))))
+         (setq string (replace-match
+                       (concat "\\1" (nth 2 (assoc (match-string 3 string) org-emphasis-alist))
+                               "\\4" (nth 3 (assoc (match-string 3 string) org-emphasis-alist))
+                               "\\5") t nil string))
+       (setq s (1+ s))))
+    string))
 
 (defvar org-par-open nil)
 (defun org-open-par ()
@@ -18216,11 +23407,8 @@ stacked delimiters is N.  Escaping delimiters is not possible."
   "Close <li> if necessary."
   (org-close-par-maybe)
   (insert "</li>\n"))
-;  (when (save-excursion
-;        (re-search-backward "</?\\(ul\\|ol\\|li\\|[hH][0-9]\\)>" nil t))
-;    (if (member (match-string 0) '("</ul>" "</ol>" "<li>"))
-;      (insert "</li>"))))
 
+(defvar body-only) ; dynamically scoped into this.
 (defun org-html-level-start (level title umax with-toc head-count)
   "Insert a new level in HTML export.
 When TITLE is nil, just close all open levels."
@@ -18235,7 +23423,7 @@ When TITLE is nil, just close all open levels."
     (when title
       ;; If title is nil, this means this function is called to close
       ;; all levels, so the rest is done only if title is given
-       (when (string-match "\\(:[a-zA-Z0-9_@:]+:\\)[ \t]*$" title)
+       (when (string-match (org-re "\\(:[[:alnum:]_@:]+:\\)[ \t]*$") title)
          (setq title (replace-match
                       (if org-export-with-tags
                           (save-match-data
@@ -18256,11 +23444,11 @@ When TITLE is nil, just close all open levels."
              (aset org-levels-open (1- level) t)
              (org-close-par-maybe)
              (insert "<ul>\n<li>" title "<br/>\n")))
-       (if org-export-with-section-numbers
+       (if (and org-export-with-section-numbers (not body-only))
            (setq title (concat (org-section-number level) " " title)))
        (setq level (+ level org-export-html-toplevel-hlevel -1))
        (if with-toc
-           (insert (format "\n<h%d><a name=\"sec-%d\">%s</a></h%d>\n"
+           (insert (format "\n<h%d id=\"sec-%d\">%s</h%d>\n"
                            level head-count title level))
          (insert (format "\n<h%d>%s</h%d>\n" level title level)))
        (org-open-par)))))
@@ -18268,7 +23456,7 @@ When TITLE is nil, just close all open levels."
 (defun org-html-level-close (&rest args)
   "Terminate one level in HTML export."
   (org-close-li)
-  (insert "</ul>"))
+  (insert "</ul>\n"))
 
 ;;; iCalendar export
 
@@ -18300,11 +23488,13 @@ The file is stored under the name `org-combined-agenda-icalendar-file'."
 If COMBINE is non-nil, combine all calendar entries into a single large
 file and store it under the name `org-combined-agenda-icalendar-file'."
   (save-excursion
+    (org-prepare-agenda-buffers files)
     (let* ((dir (org-export-directory
                 :ical (list :publishing-directory
                             org-export-publishing-directory)))
           file ical-file ical-buffer category started org-agenda-new-buffers)
 
+      (and (get-buffer "*ical-tmp*") (kill-buffer "*ical-tmp*"))
       (when combine
        (setq ical-file
              (if (file-name-absolute-p org-combined-agenda-icalendar-file)
@@ -18349,78 +23539,165 @@ the iCalendar file.")
 (defun org-print-icalendar-entries (&optional combine)
   "Print iCalendar entries for the current Org-mode file to `standard-output'.
 When COMBINE is non nil, add the category to each line."
-  (let ((re2 (concat "--?-?\\(" org-ts-regexp "\\)"))
-       (org-category-table (org-get-category-table))
+  (let ((re1 (concat org-ts-regexp "\\|<%%([^>\n]+>"))
+       (re2 (concat "--?-?\\(" org-ts-regexp "\\)"))
        (dts (org-ical-ts-to-string
              (format-time-string (cdr org-time-stamp-formats) (current-time))
              "DTSTART"))
-       hd ts ts2 state status (inc t) pos
-       scheduledp deadlinep tmp pri category)
+       hd ts ts2 state status (inc t) pos b sexp rrule
+       scheduledp deadlinep tmp pri category entry location summary desc
+       (sexp-buffer (get-buffer-create "*ical-tmp*")))
+    (org-refresh-category-properties)
     (save-excursion
       (goto-char (point-min))
-      (while (re-search-forward org-ts-regexp nil t)
-       (setq pos (match-beginning 0)
-             ts (match-string 0)
-             inc t
-             hd (org-get-heading)
-             category (org-get-category))
-       (if (looking-at re2)
-           (progn
-             (goto-char (match-end 0))
-             (setq ts2 (match-string 1) inc nil))
-         (setq ts2 ts
-               tmp (buffer-substring (max (point-min)
+      (while (re-search-forward re1 nil t)
+       (catch :skip
+         (org-agenda-skip)
+         (setq pos (match-beginning 0)
+               ts (match-string 0)
+               inc t
+               hd (org-get-heading)
+               summary (org-entry-get nil "SUMMARY")
+               desc (or (org-entry-get nil "DESCRIPTION")
+                        (org-get-cleaned-entry org-icalendar-include-body))
+               location (org-entry-get nil "LOCATION")
+               category (org-get-category))
+         (if (looking-at re2)
+             (progn
+               (goto-char (match-end 0))
+               (setq ts2 (match-string 1) inc nil))
+           (setq tmp (buffer-substring (max (point-min)
                                             (- pos org-ds-keyword-length))
-                                     pos)
-               deadlinep (string-match org-deadline-regexp tmp)
-               scheduledp (string-match org-scheduled-regexp tmp)
-               ;; donep (org-entry-is-done-p)
-                ))
-       (if (or (string-match org-tr-regexp hd)
-               (string-match org-ts-regexp hd))
-           (setq hd (replace-match "" t t hd)))
-       (if (string-match org-bracket-link-regexp hd)
-           (setq hd (replace-match (if (match-end 3) (match-string 3 hd)
-                                     (match-string 1 hd))
-                                   t t hd)))
-       (if deadlinep (setq hd (concat "DL: " hd)))
-       (if scheduledp (setq hd (concat "S: " hd)))
-       (princ (format "BEGIN:VEVENT
-%s
+                                       pos)
+                 ts2 (if (string-match "[0-9]\\{1,2\\}:[0-9][0-9]-\\([0-9]\\{1,2\\}:[0-9][0-9]\\)" ts)
+                         (progn
+                           (setq inc nil)
+                           (replace-match "\\1" t nil ts))
+                       ts)
+                 deadlinep (string-match org-deadline-regexp tmp)
+                 scheduledp (string-match org-scheduled-regexp tmp)
+                 ;; donep (org-entry-is-done-p)
+                 ))
+         (if (or (string-match org-tr-regexp hd)
+                 (string-match org-ts-regexp hd))
+             (setq hd (replace-match "" t t hd)))
+         (if (string-match "\\+\\([0-9]+\\)\\([dwmy]\\)>" ts)
+             (setq rrule
+                   (concat "\nRRULE:FREQ="
+                           (cdr (assoc
+                                 (match-string 2 ts)
+                                 '(("d" . "DAILY")("w" . "WEEKLY")
+                                   ("m" . "MONTHLY")("y" . "YEARLY"))))
+                           ";INTERVAL=" (match-string 1 ts)))
+           (setq rrule ""))
+         (setq summary (or summary hd))
+         (if (string-match org-bracket-link-regexp summary)
+             (setq summary
+                   (replace-match (if (match-end 3)
+                                      (match-string 3 summary)
+                                       (match-string 1 summary))
+                                     t t summary)))
+         (if deadlinep (setq summary (concat "DL: " summary)))
+         (if scheduledp (setq summary (concat "S: " summary)))
+         (if (string-match "\\`<%%" ts)
+             (with-current-buffer sexp-buffer
+               (insert (substring ts 1 -1) " " summary "\n"))
+           (princ (format "BEGIN:VEVENT
 %s
-SUMMARY:%s
+%s%s
+SUMMARY:%s%s%s
 CATEGORIES:%s
 END:VEVENT\n"
-                      (org-ical-ts-to-string ts "DTSTART")
-                      (org-ical-ts-to-string ts2 "DTEND" inc)
-                      hd category)))
+                          (org-ical-ts-to-string ts "DTSTART")
+                          (org-ical-ts-to-string ts2 "DTEND" inc)
+                          rrule summary
+                          (if (and desc (string-match "\\S-" desc))
+                              (concat "\nDESCRIPTION: " desc) "")
+                          (if (and location (string-match "\\S-" location))
+                              (concat "\nLOCATION: " location) "")
+                          category)))))
+
+      (when (and org-icalendar-include-sexps
+                (condition-case nil (require 'icalendar) (error nil))
+                (fboundp 'icalendar-export-region))
+       ;; Get all the literal sexps
+       (goto-char (point-min))
+       (while (re-search-forward "^&?%%(" nil t)
+         (catch :skip
+           (org-agenda-skip)
+           (setq b (match-beginning 0))
+           (goto-char (1- (match-end 0)))
+           (forward-sexp 1)
+           (end-of-line 1)
+           (setq sexp (buffer-substring b (point)))
+           (with-current-buffer sexp-buffer
+             (insert sexp "\n"))
+           (princ (org-diary-to-ical-string sexp-buffer)))))
+
       (when org-icalendar-include-todo
        (goto-char (point-min))
        (while (re-search-forward org-todo-line-regexp nil t)
-         (setq state (match-string 2))
-         (setq status (if (equal state org-done-string)
-                          "COMPLETED" "NEEDS-ACTION"))
-         (when (and state
-                    (or (not (equal state org-done-string))
-                        (eq org-icalendar-include-todo 'all)))
-           (setq hd (match-string 3))
-           (if (string-match org-priority-regexp hd)
-               (setq pri (string-to-char (match-string 2 hd))
-                     hd (concat (substring hd 0 (match-beginning 1))
-                                (substring hd (match-end 1))))
-             (setq pri org-default-priority))
-           (setq pri (floor (1+ (* 8. (/ (float (- org-lowest-priority pri))
-                                         (- org-lowest-priority ?A))))))
-
-           (princ (format "BEGIN:VTODO
+         (catch :skip
+           (org-agenda-skip)
+           (setq state (match-string 2))
+           (setq status (if (member state org-done-keywords)
+                            "COMPLETED" "NEEDS-ACTION"))
+           (when (and state
+                      (or (not (member state org-done-keywords))
+                          (eq org-icalendar-include-todo 'all))
+                      (not (member org-archive-tag (org-get-tags-at)))
+                      )
+             (setq hd (match-string 3)
+                   summary (org-entry-get nil "SUMMARY")
+                   desc (or (org-entry-get nil "DESCRIPTION")
+                            (org-get-cleaned-entry org-icalendar-include-body))
+                   location (org-entry-get nil "LOCATION"))
+             (if (string-match org-bracket-link-regexp hd)
+                 (setq hd (replace-match (if (match-end 3) (match-string 3 hd)
+                                           (match-string 1 hd))
+                                         t t hd)))
+             (if (string-match org-priority-regexp hd)
+                 (setq pri (string-to-char (match-string 2 hd))
+                       hd (concat (substring hd 0 (match-beginning 1))
+                                  (substring hd (match-end 1))))
+               (setq pri org-default-priority))
+             (setq pri (floor (1+ (* 8. (/ (float (- org-lowest-priority pri))
+                                           (- org-lowest-priority org-highest-priority))))))
+
+             (princ (format "BEGIN:VTODO
 %s
-SUMMARY:%s
+SUMMARY:%s%s%s
 CATEGORIES:%s
 SEQUENCE:1
 PRIORITY:%d
 STATUS:%s
 END:VTODO\n"
-                          dts hd category pri status))))))))
+                            dts
+                            (or summary hd)
+                            (if (and location (string-match "\\S-" location))
+                                (concat "\nLOCATION: " location) "")
+                            (if (and desc (string-match "\\S-" desc))
+                                (concat "\nDESCRIPTION: " desc) "")
+                            category pri status)))))))))
+
+(defun org-get-cleaned-entry (what)
+  "Clean-up description string."
+  (when what
+    (save-excursion
+      (org-back-to-heading t)
+      (let ((s (buffer-substring (point-at-bol 2) (org-end-of-subtree t)))
+           (re (concat org-drawer-regexp "[^\000]*?:END:.*\n?"))
+           (re2 (concat "^[ \t]*" org-keyword-time-regexp ".*\n?")))
+       (while (string-match re s) (setq s (replace-match "" t t s)))
+       (while (string-match re2 s) (setq s (replace-match "" t t s)))
+       (if (string-match "[ \t\r\n]+\\'" s) (setq s (replace-match "" t t s)))
+       (while (string-match "[ \t]*\n[ \t]*" s)
+         (setq s (replace-match "\\n" t t s)))
+       (setq s (org-trim s))
+       (if (and (numberp what)
+                (> (length s) what))
+           (substring s 0 what)
+         s)))))
 
 (defun org-start-icalendar-file (name)
   "Start an iCalendar file by inserting the header."
@@ -18452,7 +23729,11 @@ a time), or the day by one (if it does not contain a time)."
     (let ((s (car t2))   (mi (nth 1 t2)) (h (nth 2 t2))
          (d (nth 3 t2)) (m  (nth 4 t2)) (y (nth 5 t2)))
       (when inc
-       (if have-time (setq h (+ 2 h)) (setq d (1+ d))))
+       (if have-time
+           (if org-agenda-default-appointment-duration
+               (setq mi (+ org-agenda-default-appointment-duration mi))
+             (setq h (+ 2 h)))
+         (setq d (1+ d))))
       (setq time (encode-time s mi h d m y)))
     (setq fmt (if have-time ":%Y%m%dT%H%M%S" ";VALUE=DATE:%Y%m%d"))
     (concat keyword (format-time-string fmt time))))
@@ -18487,7 +23768,7 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
       (with-current-buffer out (erase-buffer))
       ;; Kick off the output
       (org-export-as-xoxo-insert-into out "<ol class='xoxo'>\n")
-      (while (re-search-forward "^\\(\\*+\\) \\(.+\\)" (point-max) 't)
+      (while (re-search-forward "^\\(\\*+\\)[ \t]+\\(.+\\)" (point-max) 't)
         (let* ((hd (match-string-no-properties 1))
                (level (length hd))
                (text (concat
@@ -18545,47 +23826,44 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
 
 ;;;; Key bindings
 
-;; - Bindings in Org-mode map are currently
-;;   0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t  the alphabet
-;;             abcd fgh j lmnopqrstuvwxyz!? #$ ^ -+*/=     [] ; |,.<>~ '\t  necessary bindings
-;;                 e                                                        (?) useful from outline-mode
-;;                     i k                 @                                expendable from outline-mode
-;;   0123456789                               % &     ()_{}    "      `     free
-
 ;; Make `C-c C-x' a prefix key
-(define-key org-mode-map "\C-c\C-x" (make-sparse-keymap))
+(org-defkey org-mode-map "\C-c\C-x" (make-sparse-keymap))
 
 ;; TAB key with modifiers
-(define-key org-mode-map "\C-i"       'org-cycle)
-(define-key org-mode-map [(tab)]      'org-cycle)
-(define-key org-mode-map [(control tab)] 'org-force-cycle-archived)
-(define-key org-mode-map [(meta tab)] 'org-complete)
-(define-key org-mode-map "\M-\t" 'org-complete)
-(define-key org-mode-map "\M-\C-i"      'org-complete)
+(org-defkey org-mode-map "\C-i"       'org-cycle)
+(org-defkey org-mode-map [(tab)]      'org-cycle)
+(org-defkey org-mode-map [(control tab)] 'org-force-cycle-archived)
+(org-defkey org-mode-map [(meta tab)] 'org-complete)
+(org-defkey org-mode-map "\M-\t" 'org-complete)
+(org-defkey org-mode-map "\M-\C-i"      'org-complete)
 ;; The following line is necessary under Suse GNU/Linux
 (unless (featurep 'xemacs)
-  (define-key org-mode-map [S-iso-lefttab]  'org-shifttab))
-(define-key org-mode-map [(shift tab)]    'org-shifttab)
+  (org-defkey org-mode-map [S-iso-lefttab]  'org-shifttab))
+(org-defkey org-mode-map [(shift tab)]    'org-shifttab)
+(define-key org-mode-map (kbd "<backtab>") 'org-shifttab)
 
-(define-key org-mode-map (org-key 'S-return)   'org-table-copy-down)
-(define-key org-mode-map [(meta shift return)] 'org-insert-todo-heading)
-(define-key org-mode-map [(meta return)]       'org-meta-return)
+(org-defkey org-mode-map [(shift return)]   'org-table-copy-down)
+(org-defkey org-mode-map [(meta shift return)] 'org-insert-todo-heading)
+(org-defkey org-mode-map [(meta return)]       'org-meta-return)
 
 ;; Cursor keys with modifiers
-(define-key org-mode-map [(meta left)]  'org-metaleft)
-(define-key org-mode-map [(meta right)] 'org-metaright)
-(define-key org-mode-map [(meta up)]    'org-metaup)
-(define-key org-mode-map [(meta down)]  'org-metadown)
+(org-defkey org-mode-map [(meta left)]  'org-metaleft)
+(org-defkey org-mode-map [(meta right)] 'org-metaright)
+(org-defkey org-mode-map [(meta up)]    'org-metaup)
+(org-defkey org-mode-map [(meta down)]  'org-metadown)
+
+(org-defkey org-mode-map [(meta shift left)]   'org-shiftmetaleft)
+(org-defkey org-mode-map [(meta shift right)]  'org-shiftmetaright)
+(org-defkey org-mode-map [(meta shift up)]     'org-shiftmetaup)
+(org-defkey org-mode-map [(meta shift down)]   'org-shiftmetadown)
 
-(define-key org-mode-map [(meta shift left)]   'org-shiftmetaleft)
-(define-key org-mode-map [(meta shift right)]  'org-shiftmetaright)
-(define-key org-mode-map [(meta shift up)]     'org-shiftmetaup)
-(define-key org-mode-map [(meta shift down)]   'org-shiftmetadown)
+(org-defkey org-mode-map [(shift up)]          'org-shiftup)
+(org-defkey org-mode-map [(shift down)]        'org-shiftdown)
+(org-defkey org-mode-map [(shift left)]        'org-shiftleft)
+(org-defkey org-mode-map [(shift right)]       'org-shiftright)
 
-(define-key org-mode-map (org-key 'S-up)       'org-shiftup)
-(define-key org-mode-map (org-key 'S-down)     'org-shiftdown)
-(define-key org-mode-map (org-key 'S-left)     'org-shiftleft)
-(define-key org-mode-map (org-key 'S-right)    'org-shiftright)
+(org-defkey org-mode-map [(control shift right)] 'org-shiftcontrolright)
+(org-defkey org-mode-map [(control shift left)]  'org-shiftcontrolleft)
 
 ;;; Extra keys for tty access.
 ;;  We only set them when really needed because otherwise the
@@ -18593,102 +23871,110 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
 
 (when (or (featurep 'xemacs)   ;; because XEmacs supports multi-device stuff
          (not window-system))
-  (define-key org-mode-map "\C-c\C-xc"    'org-table-copy-down)
-  (define-key org-mode-map "\C-c\C-xM"    'org-insert-todo-heading)
-  (define-key org-mode-map "\C-c\C-xm"    'org-meta-return)
-  (define-key org-mode-map [?\e (return)] 'org-meta-return)
-  (define-key org-mode-map [?\e (left)]   'org-metaleft)
-  (define-key org-mode-map "\C-c\C-xl"    'org-metaleft)
-  (define-key org-mode-map [?\e (right)]  'org-metaright)
-  (define-key org-mode-map "\C-c\C-xr"    'org-metaright)
-  (define-key org-mode-map [?\e (up)]     'org-metaup)
-  (define-key org-mode-map "\C-c\C-xu"    'org-metaup)
-  (define-key org-mode-map [?\e (down)]   'org-metadown)
-  (define-key org-mode-map "\C-c\C-xd"    'org-metadown)
-  (define-key org-mode-map "\C-c\C-xL"    'org-shiftmetaleft)
-  (define-key org-mode-map "\C-c\C-xR"    'org-shiftmetaright)
-  (define-key org-mode-map "\C-c\C-xU"    'org-shiftmetaup)
-  (define-key org-mode-map "\C-c\C-xD"    'org-shiftmetadown)
-  (define-key org-mode-map [?\C-c ?\C-x (up)]    'org-shiftup)
-  (define-key org-mode-map [?\C-c ?\C-x (down)]  'org-shiftdown)
-  (define-key org-mode-map [?\C-c ?\C-x (left)]  'org-shiftleft)
-  (define-key org-mode-map [?\C-c ?\C-x (right)] 'org-shiftright))
+  (org-defkey org-mode-map "\C-c\C-xc"    'org-table-copy-down)
+  (org-defkey org-mode-map "\C-c\C-xM"    'org-insert-todo-heading)
+  (org-defkey org-mode-map "\C-c\C-xm"    'org-meta-return)
+  (org-defkey org-mode-map [?\e (return)] 'org-meta-return)
+  (org-defkey org-mode-map [?\e (left)]   'org-metaleft)
+  (org-defkey org-mode-map "\C-c\C-xl"    'org-metaleft)
+  (org-defkey org-mode-map [?\e (right)]  'org-metaright)
+  (org-defkey org-mode-map "\C-c\C-xr"    'org-metaright)
+  (org-defkey org-mode-map [?\e (up)]     'org-metaup)
+  (org-defkey org-mode-map "\C-c\C-xu"    'org-metaup)
+  (org-defkey org-mode-map [?\e (down)]   'org-metadown)
+  (org-defkey org-mode-map "\C-c\C-xd"    'org-metadown)
+  (org-defkey org-mode-map "\C-c\C-xL"    'org-shiftmetaleft)
+  (org-defkey org-mode-map "\C-c\C-xR"    'org-shiftmetaright)
+  (org-defkey org-mode-map "\C-c\C-xU"    'org-shiftmetaup)
+  (org-defkey org-mode-map "\C-c\C-xD"    'org-shiftmetadown)
+  (org-defkey org-mode-map [?\C-c (up)]    'org-shiftup)
+  (org-defkey org-mode-map [?\C-c (down)]  'org-shiftdown)
+  (org-defkey org-mode-map [?\C-c (left)]  'org-shiftleft)
+  (org-defkey org-mode-map [?\C-c (right)] 'org-shiftright)
+  (org-defkey org-mode-map [?\C-c ?\C-x (right)] 'org-shiftcontrolright)
+  (org-defkey org-mode-map [?\C-c ?\C-x (left)] 'org-shiftcontrolleft))
 
   ;; All the other keys
 
-(define-key org-mode-map "\C-c\C-a" 'show-all)  ; in case allout messed up.
-(define-key org-mode-map "\C-c\C-r" 'org-reveal)
-(define-key org-mode-map "\C-xns" 'org-narrow-to-subtree)
-(define-key org-mode-map "\C-c$"    'org-archive-subtree)
-(define-key org-mode-map "\C-c\C-x\C-s" 'org-advertized-archive-subtree)
-(define-key org-mode-map "\C-c\C-x\C-a" 'org-toggle-archive-tag)
-(define-key org-mode-map "\C-c\C-xb" 'org-tree-to-indirect-buffer)
-(define-key org-mode-map "\C-c\C-j" 'org-goto)
-(define-key org-mode-map "\C-c\C-t" 'org-todo)
-(define-key org-mode-map "\C-c\C-s" 'org-schedule)
-(define-key org-mode-map "\C-c\C-d" 'org-deadline)
-(define-key org-mode-map "\C-c;"    'org-toggle-comment)
-(define-key org-mode-map "\C-c\C-v" 'org-show-todo-tree)
-(define-key org-mode-map "\C-c\C-w" 'org-check-deadlines)
-(define-key org-mode-map "\C-c/"    'org-occur)   ; Minor-mode reserved
-(define-key org-mode-map "\C-c\\"   'org-tags-sparse-tree) ; Minor-mode res.
-(define-key org-mode-map "\C-c\C-m" 'org-insert-heading)
-(define-key org-mode-map "\M-\C-m"  'org-insert-heading)
-(define-key org-mode-map "\C-c\C-x\C-n" 'org-next-link)
-(define-key org-mode-map "\C-c\C-x\C-p" 'org-previous-link)
-(define-key org-mode-map "\C-c\C-l" 'org-insert-link)
-(define-key org-mode-map "\C-c\C-o" 'org-open-at-point)
-(define-key org-mode-map "\C-c%"    'org-mark-ring-push)
-(define-key org-mode-map "\C-c&"    'org-mark-ring-goto)
-(define-key org-mode-map "\C-c\C-z" 'org-time-stamp)  ; Alternative binding
-(define-key org-mode-map "\C-c."    'org-time-stamp)  ; Minor-mode reserved
-(define-key org-mode-map "\C-c!"    'org-time-stamp-inactive) ; Minor-mode r.
-(define-key org-mode-map "\C-c,"    'org-priority)    ; Minor-mode reserved
-(define-key org-mode-map "\C-c\C-y" 'org-evaluate-time-range)
-(define-key org-mode-map "\C-c>"    'org-goto-calendar)
-(define-key org-mode-map "\C-c<"    'org-date-from-calendar)
-(define-key org-mode-map [(control ?,)]     'org-cycle-agenda-files)
-(define-key org-mode-map [(control ?\')]     'org-cycle-agenda-files)
-(define-key org-mode-map "\C-c["    'org-agenda-file-to-front)
-(define-key org-mode-map "\C-c]"    'org-remove-file)
-(define-key org-mode-map "\C-c-"    'org-table-insert-hline)
-(define-key org-mode-map "\C-c^"    'org-sort)
-(define-key org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c)
-(define-key org-mode-map "\C-c#"    'org-update-checkbox-count)
-(define-key org-mode-map "\C-m"     'org-return)
-(define-key org-mode-map "\C-c?"    'org-table-field-info)
-(define-key org-mode-map "\C-c "    'org-table-blank-field)
-(define-key org-mode-map "\C-c+"    'org-table-sum)
-(define-key org-mode-map "\C-c="    'org-table-eval-formula)
-(define-key org-mode-map "\C-c'"    'org-table-edit-formulas)
-(define-key org-mode-map "\C-c`"    'org-table-edit-field)
-(define-key org-mode-map "\C-c|"    'org-table-create-or-convert-from-region)
-(define-key org-mode-map "\C-c*"    'org-table-recalculate)
-(define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks)
-(define-key org-mode-map "\C-c~"    'org-table-create-with-table.el)
-(define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region)
-(define-key org-mode-map "\C-c}"    'org-table-toggle-coordinate-overlays)
-(define-key org-mode-map "\C-c{"    'org-table-toggle-formula-debugger)
-(define-key org-mode-map "\C-c\C-e" 'org-export)
-(define-key org-mode-map "\C-c:"    'org-toggle-fixed-width-section)
-
-(define-key org-mode-map "\C-c\C-x\C-k" 'org-cut-special)
-(define-key org-mode-map "\C-c\C-x\C-w" 'org-cut-special)
-(define-key org-mode-map "\C-c\C-x\M-w" 'org-copy-special)
-(define-key org-mode-map "\C-c\C-x\C-y" 'org-paste-special)
-
-(define-key org-mode-map "\C-c\C-x\C-t" 'org-toggle-time-stamp-overlays)
-(define-key org-mode-map "\C-c\C-x\C-i" 'org-clock-in)
-(define-key org-mode-map "\C-c\C-x\C-o" 'org-clock-out)
-(define-key org-mode-map "\C-c\C-x\C-x" 'org-clock-cancel)
-(define-key org-mode-map "\C-c\C-x\C-d" 'org-clock-display)
-(define-key org-mode-map "\C-c\C-x\C-r" 'org-clock-report)
-(define-key org-mode-map "\C-c\C-x\C-u" 'org-dblock-update)
-(define-key org-mode-map "\C-c\C-x\C-l" 'org-preview-latex-fragment)
-(define-key org-mode-map "\C-c\C-x\C-b" 'org-toggle-checkbox)
+(org-defkey org-mode-map "\C-c\C-a" 'show-all)  ; in case allout messed up.
+(org-defkey org-mode-map "\C-c\C-r" 'org-reveal)
+(org-defkey org-mode-map "\C-xns" 'org-narrow-to-subtree)
+(org-defkey org-mode-map "\C-c$"    'org-archive-subtree)
+(org-defkey org-mode-map "\C-c\C-x\C-s" 'org-advertized-archive-subtree)
+(org-defkey org-mode-map "\C-c\C-x\C-a" 'org-toggle-archive-tag)
+(org-defkey org-mode-map "\C-c\C-xb" 'org-tree-to-indirect-buffer)
+(org-defkey org-mode-map "\C-c\C-j" 'org-goto)
+(org-defkey org-mode-map "\C-c\C-t" 'org-todo)
+(org-defkey org-mode-map "\C-c\C-s" 'org-schedule)
+(org-defkey org-mode-map "\C-c\C-d" 'org-deadline)
+(org-defkey org-mode-map "\C-c;"    'org-toggle-comment)
+(org-defkey org-mode-map "\C-c\C-v" 'org-show-todo-tree)
+(org-defkey org-mode-map "\C-c\C-w" 'org-check-deadlines)
+(org-defkey org-mode-map "\C-c/"    'org-occur)   ; Minor-mode reserved
+(org-defkey org-mode-map "\C-c\C-x/" 'org-occur-in-agenda-files)
+(org-defkey org-mode-map "\C-c\\"   'org-tags-sparse-tree) ; Minor-mode res.
+(org-defkey org-mode-map "\C-c\C-m" 'org-ctrl-c-ret)
+(org-defkey org-mode-map "\M-\C-m"  'org-insert-heading)
+(org-defkey org-mode-map [(control return)] 'org-insert-heading-after-current)
+(org-defkey org-mode-map "\C-c\C-x\C-n" 'org-next-link)
+(org-defkey org-mode-map "\C-c\C-x\C-p" 'org-previous-link)
+(org-defkey org-mode-map "\C-c\C-l" 'org-insert-link)
+(org-defkey org-mode-map "\C-c\C-o" 'org-open-at-point)
+(org-defkey org-mode-map "\C-c%"    'org-mark-ring-push)
+(org-defkey org-mode-map "\C-c&"    'org-mark-ring-goto)
+(org-defkey org-mode-map "\C-c\C-z" 'org-time-stamp)  ; Alternative binding
+(org-defkey org-mode-map "\C-c."    'org-time-stamp)  ; Minor-mode reserved
+(org-defkey org-mode-map "\C-c!"    'org-time-stamp-inactive) ; Minor-mode r.
+(org-defkey org-mode-map "\C-c,"    'org-priority)    ; Minor-mode reserved
+(org-defkey org-mode-map "\C-c\C-y" 'org-evaluate-time-range)
+(org-defkey org-mode-map "\C-c>"    'org-goto-calendar)
+(org-defkey org-mode-map "\C-c<"    'org-date-from-calendar)
+(org-defkey org-mode-map [(control ?,)]     'org-cycle-agenda-files)
+(org-defkey org-mode-map [(control ?\')]     'org-cycle-agenda-files)
+(org-defkey org-mode-map "\C-c["    'org-agenda-file-to-front)
+(org-defkey org-mode-map "\C-c]"    'org-remove-file)
+(org-defkey org-mode-map "\C-c-"    'org-ctrl-c-minus)
+(org-defkey org-mode-map "\C-c^"    'org-sort)
+(org-defkey org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c)
+(org-defkey org-mode-map "\C-c#"    'org-update-checkbox-count)
+(org-defkey org-mode-map "\C-m"     'org-return)
+(org-defkey org-mode-map "\C-c?"    'org-table-field-info)
+(org-defkey org-mode-map "\C-c "    'org-table-blank-field)
+(org-defkey org-mode-map "\C-c+"    'org-table-sum)
+(org-defkey org-mode-map "\C-c="    'org-table-eval-formula)
+(org-defkey org-mode-map "\C-c'"    'org-table-edit-formulas)
+(org-defkey org-mode-map "\C-c`"    'org-table-edit-field)
+(org-defkey org-mode-map "\C-c|"    'org-table-create-or-convert-from-region)
+(org-defkey org-mode-map "\C-c*"    'org-table-recalculate)
+(org-defkey org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks)
+(org-defkey org-mode-map "\C-c~"    'org-table-create-with-table.el)
+(org-defkey org-mode-map "\C-c\C-q" 'org-table-wrap-region)
+(org-defkey org-mode-map "\C-c}"    'org-table-toggle-coordinate-overlays)
+(org-defkey org-mode-map "\C-c{"    'org-table-toggle-formula-debugger)
+(org-defkey org-mode-map "\C-c\C-e" 'org-export)
+(org-defkey org-mode-map "\C-c:"    'org-toggle-fixed-width-section)
+(org-defkey org-mode-map "\C-c\C-x\C-f" 'org-emphasize)
+
+(org-defkey org-mode-map "\C-c\C-x\C-k" 'org-cut-special)
+(org-defkey org-mode-map "\C-c\C-x\C-w" 'org-cut-special)
+(org-defkey org-mode-map "\C-c\C-x\M-w" 'org-copy-special)
+(org-defkey org-mode-map "\C-c\C-x\C-y" 'org-paste-special)
+
+(org-defkey org-mode-map "\C-c\C-x\C-t" 'org-toggle-time-stamp-overlays)
+(org-defkey org-mode-map "\C-c\C-x\C-i" 'org-clock-in)
+(org-defkey org-mode-map "\C-c\C-x\C-o" 'org-clock-out)
+(org-defkey org-mode-map "\C-c\C-x\C-j" 'org-clock-goto)
+(org-defkey org-mode-map "\C-c\C-x\C-x" 'org-clock-cancel)
+(org-defkey org-mode-map "\C-c\C-x\C-d" 'org-clock-display)
+(org-defkey org-mode-map "\C-c\C-x\C-r" 'org-clock-report)
+(org-defkey org-mode-map "\C-c\C-x\C-u" 'org-dblock-update)
+(org-defkey org-mode-map "\C-c\C-x\C-l" 'org-preview-latex-fragment)
+(org-defkey org-mode-map "\C-c\C-x\C-b" 'org-toggle-checkbox)
+
+(define-key org-mode-map "\C-c\C-x\C-c" 'org-columns)
 
 (when (featurep 'xemacs)
-  (define-key org-mode-map 'button3   'popup-mode-menu))
+  (org-defkey org-mode-map 'button3   'popup-mode-menu))
 
 (defsubst org-table-p () (org-at-table-p))
 
@@ -18717,7 +24003,13 @@ overwritten, and the table is not marked as requiring realignment."
        (goto-char (match-beginning 0))
        (self-insert-command N))
     (setq org-table-may-need-update t)
-    (self-insert-command N)))
+    (self-insert-command N)
+    (org-fix-tags-on-the-fly)))
+
+(defun org-fix-tags-on-the-fly ()
+  (when (and (equal (char-after (point-at-bol)) ?*)
+            (org-on-heading-p))
+    (org-align-tags-here org-tags-column)))
 
 (defun org-delete-backward-char (N)
   "Like `delete-backward-char', insert whitespace at field end in tables.
@@ -18740,7 +24032,8 @@ because, in this case the deletion might narrow the column."
        ;; noalign: if there were two spaces at the end, this field
        ;; does not determine the width of the column.
        (if noalign (setq org-table-may-need-update c)))
-    (backward-delete-char N)))
+    (backward-delete-char N)
+    (org-fix-tags-on-the-fly)))
 
 (defun org-delete-char (N)
   "Like `delete-char', but insert whitespace at field end in tables.
@@ -18765,7 +24058,8 @@ because, in this case the deletion might narrow the column."
            ;; does not determine the width of the column.
            (if noalign (setq org-table-may-need-update c)))
        (delete-char N))
-    (delete-char N)))
+    (delete-char N)
+    (org-fix-tags-on-the-fly)))
 
 ;; Make `delete-selection-mode' work with org-mode and orgtbl-mode
 (put 'org-self-insert-command 'delete-selection t)
@@ -18779,6 +24073,12 @@ because, in this case the deletion might narrow the column."
 (put 'org-delete-char 'flyspell-delayed t)
 (put 'org-delete-backward-char 'flyspell-delayed t)
 
+(eval-after-load "pabbrev"
+  '(progn
+     (add-to-list 'pabbrev-expand-after-command-list
+                 'orgtbl-self-insert-command t)
+     (add-to-list 'pabbrev-expand-after-command-list
+                 'org-self-insert-command t)))
 
 ;; How to do this: Measure non-white length of current string
 ;; If equal to column width, we should realign.
@@ -18790,7 +24090,7 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
     (while commands
       (setq old (pop commands) new (pop commands))
       (if (fboundp 'command-remapping)
-         (define-key map (vector 'remap old) new)
+         (org-defkey map (vector 'remap old) new)
        (substitute-key-definition old new map global-map)))))
 
 (when (eq org-enable-table-editor 'optimized)
@@ -18800,7 +24100,7 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
             'self-insert-command 'org-self-insert-command
             'delete-char 'org-delete-char
             'delete-backward-char 'org-delete-backward-char)
-  (define-key org-mode-map "|" 'org-force-self-insert))
+  (org-defkey org-mode-map "|" 'org-force-self-insert))
 
 (defun org-shiftcursor-error ()
   "Throw an error because Shift-Cursor command was applied in wrong context."
@@ -18821,7 +24121,8 @@ See the individual commands for more information."
 
 (defun org-shiftmetaleft ()
   "Promote subtree or delete table column.
-Calls `org-promote-subtree' or `org-table-delete-column', depending on context.
+Calls `org-promote-subtree', `org-outdent-item',
+or `org-table-delete-column', depending on context.
 See the individual commands for more information."
   (interactive)
   (cond
@@ -18832,7 +24133,8 @@ See the individual commands for more information."
 
 (defun org-shiftmetaright ()
   "Demote subtree or insert table column.
-Calls `org-demote-subtree' or `org-table-insert-column', depending on context.
+Calls `org-demote-subtree', `org-indent-item',
+or `org-table-insert-column', depending on context.
 See the individual commands for more information."
   (interactive)
   (cond
@@ -18916,22 +24218,26 @@ commands for more information."
 
 (defun org-shiftup (&optional arg)
   "Increase item in timestamp or increase priority of current headline.
-Calls `org-timestamp-up' or `org-priority-up', depending on context.
-See the individual commands for more information."
+Calls `org-timestamp-up' or `org-priority-up', or `org-previous-item',
+depending on context.  See the individual commands for more information."
   (interactive "P")
   (cond
-   ((org-at-timestamp-p t) (call-interactively 'org-timestamp-up))
+   ((org-at-timestamp-p t)
+    (call-interactively (if org-edit-timestamp-down-means-later
+                           'org-timestamp-down 'org-timestamp-up)))
    ((org-on-heading-p) (call-interactively 'org-priority-up))
    ((org-at-item-p) (call-interactively 'org-previous-item))
    (t (call-interactively 'org-beginning-of-item) (beginning-of-line 1))))
 
 (defun org-shiftdown (&optional arg)
   "Decrease item in timestamp or decrease priority of current headline.
-Calls `org-timestamp-down' or `org-priority-down', depending on context.
-See the individual commands for more information."
+Calls `org-timestamp-down' or `org-priority-down', or `org-next-item'
+depending on context.  See the individual commands for more information."
   (interactive "P")
   (cond
-   ((org-at-timestamp-p t) (call-interactively 'org-timestamp-down))
+   ((org-at-timestamp-p t)
+    (call-interactively (if org-edit-timestamp-down-means-later
+                           'org-timestamp-up 'org-timestamp-down)))
    ((org-on-heading-p) (call-interactively 'org-priority-down))
    (t (call-interactively 'org-next-item))))
 
@@ -18941,6 +24247,7 @@ See the individual commands for more information."
   (cond
    ((org-at-timestamp-p t) (call-interactively 'org-timestamp-up-day))
    ((org-on-heading-p) (org-call-with-arg 'org-todo 'right))
+   ((org-at-property-p) (call-interactively 'org-property-next-allowed-value))
    (t (org-shiftcursor-error))))
 
 (defun org-shiftleft ()
@@ -18949,8 +24256,31 @@ See the individual commands for more information."
   (cond
    ((org-at-timestamp-p t) (call-interactively 'org-timestamp-down-day))
    ((org-on-heading-p) (org-call-with-arg 'org-todo 'left))
+   ((org-at-property-p)
+    (call-interactively 'org-property-previous-allowed-value))
+   (t (org-shiftcursor-error))))
+
+(defun org-shiftcontrolright ()
+  "Switch to next TODO set."
+  (interactive)
+  (cond
+   ((org-on-heading-p) (org-call-with-arg 'org-todo 'nextset))
+   (t (org-shiftcursor-error))))
+
+(defun org-shiftcontrolleft ()
+  "Switch to previous TODO set."
+  (interactive)
+  (cond
+   ((org-on-heading-p) (org-call-with-arg 'org-todo 'previousset))
    (t (org-shiftcursor-error))))
 
+(defun org-ctrl-c-ret ()
+  "Call `org-table-hline-and-move' or `org-insert-heading' dep. on context."
+  (interactive)
+  (cond
+   ((org-at-table-p) (call-interactively 'org-table-hline-and-move))
+   (t (call-interactively 'org-insert-heading))))
+
 (defun org-copy-special ()
   "Copy region in table or copy current subtree.
 Calls `org-table-copy' or `org-copy-subtree', depending on context.
@@ -18995,6 +24325,8 @@ This command does many different things, depending on context:
 - If the cursor is on a #+TBLFM line, re-apply the formulas to
   the entire table.
 
+- If the cursor is a the beginning of a dynamic block, update it.
+
 - If the cursor is inside a table created by the table.el package,
   activate that table.
 
@@ -19020,6 +24352,8 @@ This command does many different things, depending on context:
      ((and (local-variable-p 'org-finish-function (current-buffer))
           (fboundp org-finish-function))
       (funcall org-finish-function))
+     ((org-at-property-p)
+      (call-interactively 'org-property-action))
      ((org-on-target-p) (call-interactively 'org-update-radio-target-regexp))
      ((org-on-heading-p) (call-interactively 'org-set-tags))
      ((org-at-table.el-p)
@@ -19036,7 +24370,11 @@ This command does many different things, depending on context:
      ((org-at-item-checkbox-p)
       (call-interactively 'org-toggle-checkbox))
      ((org-at-item-p)
-      (call-interactively 'org-renumber-ordered-list))
+      (call-interactively 'org-maybe-renumber-ordered-list))
+     ((save-excursion (beginning-of-line 1) (looking-at "#\\+BEGIN:"))
+      ;; Dynamic block
+      (beginning-of-line 1)
+      (org-update-dblock))
      ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
       (cond
        ((equal (match-string 1) "TBLFM")
@@ -19063,11 +24401,24 @@ Calls `org-table-next-row' or `newline', depending on context.
 See the individual commands for more information."
   (interactive)
   (cond
+   ((bobp) (newline))
    ((org-at-table-p)
     (org-table-justify-field-maybe)
     (call-interactively 'org-table-next-row))
    (t (newline))))
 
+(defun org-ctrl-c-minus ()
+  "Insert separator line in table or modify bullet type in list.
+Calls `org-table-insert-hline' or `org-cycle-list-bullet',
+depending on context."
+  (interactive)
+  (cond
+   ((org-at-table-p)
+    (call-interactively 'org-table-insert-hline))
+   ((org-in-item-p)
+    (call-interactively 'org-cycle-list-bullet))
+   (t (error "`C-c -' does have no function here."))))
+
 (defun org-meta-return (&optional arg)
   "Insert a new heading or wrap a region in a table.
 Calls `org-insert-heading' or `org-table-wrap-region', depending on context.
@@ -19104,7 +24455,7 @@ See the individual commands for more information."
      ["Insert Row" org-shiftmetadown (org-at-table-p)]
      ["Sort lines in region" org-table-sort-lines (org-at-table-p)]
      "--"
-     ["Insert Hline" org-table-insert-hline (org-at-table-p)])
+     ["Insert Hline" org-ctrl-c-minus (org-at-table-p)])
     ("Rectangle"
      ["Copy Rectangle" org-copy-special (org-at-table-p)]
      ["Cut Rectangle" org-cut-special (org-at-table-p)]
@@ -19177,6 +24528,8 @@ See the individual commands for more information."
      "--"
      ["Convert to odd levels" org-convert-to-odd-levels t]
      ["Convert to odd/even levels" org-convert-to-oddeven-levels t])
+    ("Editing"
+     ["Emphasis..." org-emphasize t])
     ("Archive"
      ["Toggle ARCHIVE tag" org-toggle-archive-tag t]
 ;     ["Check and Tag Children" (org-toggle-archive-tag (4))
@@ -19202,22 +24555,19 @@ See the individual commands for more information."
      ("Select keyword"
       ["Next keyword" org-shiftright (org-on-heading-p)]
       ["Previous keyword" org-shiftleft (org-on-heading-p)]
-      ["Complete Keyword" org-complete (assq :todo-keyword (org-context))])
+      ["Complete Keyword" org-complete (assq :todo-keyword (org-context))]
+      ["Next keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-on-heading-p))]
+      ["Previous keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-on-heading-p))])
      ["Show TODO Tree" org-show-todo-tree t]
      ["Global TODO list" org-todo-list t]
      "--"
      ["Set Priority" org-priority t]
      ["Priority Up" org-shiftup t]
-     ["Priority Down" org-shiftdown t]
-     "--"
-;     ["Insert Checkbox" org-insert-todo-heading (org-in-item-p)]
-;     ["Toggle Checkbox" org-ctrl-c-ctrl-c (org-at-item-checkbox-p)]
-;     ["Insert [n/m] cookie" (progn (insert "[/]") (org-update-checkbox-count))
-;      (or (org-on-heading-p) (org-at-item-p))]
-;     ["Insert [%] cookie" (progn (insert "[%]") (org-update-checkbox-count))
-;      (or (org-on-heading-p) (org-at-item-p))]
-;     ["Update Statistics" org-update-checkbox-count t]
-     )
+     ["Priority Down" org-shiftdown t])
+    ("TAGS and Properties"
+     ["Set Tags" 'org-ctrl-c-ctrl-c (org-at-heading-p)]
+     ["Change tag in region" 'org-change-tag-in-region (org-region-active-p)]
+     ["Column view of properties" org-columns t])
     ("Dates and Scheduling"
      ["Timestamp" org-time-stamp t]
      ["Timestamp (inactive)" org-time-stamp-inactive t]
@@ -19239,13 +24589,14 @@ See the individual commands for more information."
      ["Clock in" org-clock-in t]
      ["Clock out" org-clock-out t]
      ["Clock cancel" org-clock-cancel t]
+     ["Goto running clock" org-clock-goto t]
      ["Display times" org-clock-display t]
      ["Create clock table" org-clock-report t]
      "--"
      ["Record DONE time"
       (progn (setq org-log-done (not org-log-done))
             (message "Switching to %s will %s record a timestamp"
-                     org-done-string
+                     (car org-done-keywords)
                      (if org-log-done "automatically" "not")))
       :style toggle :selected org-log-done])
     "--"
@@ -19297,15 +24648,6 @@ See the individual commands for more information."
     ["Refresh setup" org-mode-restart t]
     ))
 
-(defun org-toggle-log-option (type)
-  (if (not (listp org-log-done)) (setq org-log-done nil))
-  (if (memq type org-log-done)
-      (setq org-log-done (delq type org-log-done))
-    (add-to-list 'org-log-done type)))
-
-(defun org-check-log-option (type)
-  (and (listp org-log-done) (memq type org-log-done)))
-
 (defun org-info (&optional node)
   "Read documentation for Org-mode in the info system.
 With optional NODE, go directly to that node."
@@ -19328,6 +24670,7 @@ With optional NODE, go directly to that node."
           ["Add/Move Current File to Front of List" org-agenda-file-to-front t]
           ["Remove Current File from List" org-remove-file t]
           ["Cycle through agenda files" org-cycle-agenda-files t]
+          ["Occur in all agenda files" org-occur-in-agenda-files t]
           "--")
          (mapcar 'org-file-menu-entry (org-agenda-files t))))))))
 
@@ -19394,7 +24737,7 @@ and :keyword."
         (p (point)) clist o)
     ;; First the large context
     (cond
-     ((org-on-heading-p)
+     ((org-on-heading-p t)
       (push (list :headline (point-at-bol) (point-at-eol)) clist)
       (when (progn
              (beginning-of-line 1)
@@ -19404,7 +24747,7 @@ and :keyword."
        (push (org-point-in-group p 4 :tags) clist))
       (goto-char p)
       (skip-chars-backward "^[\n\r \t") (or (eobp) (backward-char 1))
-      (if (looking-at "\\[#[A-Z]\\]")
+      (if (looking-at "\\[#[A-Z0-9]\\]")
          (push (org-point-in-group p 0 :priority) clist)))
 
      ((org-at-item-p)
@@ -19459,6 +24802,7 @@ and :keyword."
     (setq clist (nreverse (delq nil clist)))
     clist))
 
+;; FIXME: Compare with at-regexp-p Do we need both?
 (defun org-in-regexp (re &optional nlines visually)
   "Check if point is inside a match of regexp.
 Normally only the current line is checked, but you can include NLINES extra
@@ -19476,6 +24820,39 @@ really on, so that the block visually is on the match."
                   (>= (+ inc (match-end 0)) pos))
              (throw 'exit (cons (match-beginning 0) (match-end 0)))))))))
 
+(defun org-at-regexp-p (regexp)
+  "Is point inside a match of REGEXP in the current line?"
+  (catch 'exit
+    (save-excursion
+      (let ((pos (point)) (end (point-at-eol)))
+       (beginning-of-line 1)
+       (while (re-search-forward regexp end t)
+         (if (and (<= (match-beginning 0) pos)
+                  (>= (match-end 0) pos))
+             (throw 'exit t)))
+       nil))))
+
+(defun org-occur-in-agenda-files (regexp)
+  "Call `multi-occur' with buffers for all agenda files."
+  (interactive "sList all lines matching: ")
+  (multi-occur
+   (mapcar
+    (lambda (x) (or (get-file-buffer x) (find-file-noselect x)))
+    (org-agenda-files))
+   regexp))
+
+(defun org-uniquify (list)
+  "Remove duplicate elements from LIST."
+  (let (res)
+    (mapc (lambda (x) (add-to-list 'res x 'append)) list)
+    res))
+
+(defun org-delete-all (elts list)
+  "Remove all elements in ELTS from LIST."
+  (while elts
+    (setq list (delete (pop elts) list)))
+  list)
+
 (defun org-point-in-group (point group &optional context)
   "Check if POINT is in match-group GROUP.
 If CONTEXT is non-nil, return a list with CONTEXT and the boundaries of the
@@ -19488,6 +24865,13 @@ return nil."
           (list context (match-beginning group) (match-end group))
         t)))
 
+(defun org-switch-to-buffer-other-window (&rest args)
+  "Switch to buffer in a second window on the current frame.
+In particular, do not allow pop-up frames."
+  (let (pop-up-frames special-display-buffer-names special-display-regexps
+                     special-display-function)
+    (apply 'switch-to-buffer-other-window args)))
+
 (defun org-combine-plists (&rest plists)
   "Create a single property list from all plists in PLISTS.
 The process starts by copying the first list, and then setting properties
@@ -19530,7 +24914,7 @@ ones and overrule settings in the other lists."
 
 (defun org-replace-escapes (string table)
   "Replace %-escapes in STRING with values in TABLE.
-TABLE is an association list with keys line \"%a\" and string values.
+TABLE is an association list with keys like \"%a\" and string values.
 The sequences in STRING may contain normal field width and padding information,
 for example \"%-5s\".  Replacements happen in the sequence given by TABLE,
 so values can contain further %-escapes if they are define later in TABLE."
@@ -19555,27 +24939,85 @@ Counting starts at 1."
       (setq c (1+ c)))
     (nreverse rtn)))
 
-(defun org-at-regexp-p (regexp)
-  "Is point inside a match of REGEXP in the current line?"
-  (catch 'exit
-    (save-excursion
-      (let ((pos (point)) (end (point-at-eol)))
-       (beginning-of-line 1)
-       (while (re-search-forward regexp end t)
-         (if (and (<= (match-beginning 0) pos)
-                  (>= (match-end 0) pos))
-             (throw 'exit t)))
-       nil))))
-
 (defun org-find-base-buffer-visiting (file)
   "Like `find-buffer-visiting' but alway return the base buffer and
 not an indirect buffer"
   (let ((buf (find-buffer-visiting file)))
-    (or (buffer-base-buffer buf) buf)))
+    (if buf
+       (or (buffer-base-buffer buf) buf)
+      nil)))
+
+(defun org-image-file-name-regexp ()
+  "Return regexp matching the file names of images."
+  (if (fboundp 'image-file-name-regexp)
+      (image-file-name-regexp)
+    (let ((image-file-name-extensions
+          '("png" "jpeg" "jpg" "gif" "tiff" "tif"
+            "xbm" "xpm" "pbm" "pgm" "ppm")))
+      (concat "\\."
+             (regexp-opt (nconc (mapcar 'upcase
+                                        image-file-name-extensions)
+                                image-file-name-extensions)
+                         t)
+             "\\'"))))
+
+(defun org-file-image-p (file)
+  "Return non-nil if FILE is an image."
+  (save-match-data
+    (string-match (org-image-file-name-regexp) file)))
 
 ;;; Paragraph filling stuff.
 ;; We want this to be just right, so use the full arsenal.
-;; FIXME: configure filladapt for XEmacs
+
+(defun org-indent-line-function ()
+  "Indent line like previous, but further if previous was headline or item."
+  (interactive)
+  (let* ((pos (point))
+        (itemp (org-at-item-p))
+        column bpos bcol tpos tcol bullet btype bullet-type)
+    ;; Find the previous relevant line
+    (beginning-of-line 1)
+    (cond
+     ((looking-at "#") (setq column 0))
+     ((looking-at "\\*+ ") (setq column 0))
+     (t
+      (beginning-of-line 0)
+      (while (and (not (bobp)) (looking-at "[ \t]*[\n:#|]"))
+       (beginning-of-line 0))
+      (cond
+       ((looking-at "\\*+[ \t]+")
+       (goto-char (match-end 0))
+       (setq column (current-column)))
+       ((org-in-item-p)
+       (org-beginning-of-item)
+;      (looking-at "[ \t]*\\(\\S-+\\)[ \t]*")
+       (looking-at "[ \t]*\\(\\S-+\\)[ \t]*\\(\\[[- X]\\][ \t]*\\)?")
+       (setq bpos (match-beginning 1) tpos (match-end 0)
+             bcol (progn (goto-char bpos) (current-column))
+             tcol (progn (goto-char tpos) (current-column))
+             bullet (match-string 1)
+             bullet-type (if (string-match "[0-9]" bullet) "n" bullet))
+       (if (not itemp)
+           (setq column tcol)
+         (goto-char pos)
+         (beginning-of-line 1)
+         (looking-at "[ \t]*\\(\\S-+\\)[ \t]*")
+         (setq bullet (match-string 1)
+               btype (if (string-match "[0-9]" bullet) "n" bullet))
+         (setq column (if (equal btype bullet-type) bcol tcol))))
+       (t (setq column (org-get-indentation))))))
+    (goto-char pos)
+    (if (<= (current-column) (current-indentation))
+       (indent-line-to column)
+      (save-excursion (indent-line-to column)))
+    (setq column (current-column))
+    (beginning-of-line 1)
+    (if (looking-at
+        "\\([ \t]+\\)\\(:[0-9a-zA-Z]+:\\)[ \t]*\\(\\S-.*\\(\\S-\\|$\\)\\)")
+       (replace-match (concat "\\1" (format org-property-format
+                                            (match-string 2) (match-string 3)))
+                      t nil))
+    (move-to-column column)))
 
 (defun org-set-autofill-regexps ()
   (interactive)
@@ -19583,15 +25025,15 @@ not an indirect buffer"
   ;; text in a line directly attached to a headline would otherwise
   ;; fill the headline as well.
   (org-set-local 'comment-start-skip "^#+[ \t]*")
-  (org-set-local 'paragraph-separate "\f\\|\\*\\|[     ]*$\\|[ \t]*[:|]")
+  (org-set-local 'paragraph-separate "\f\\|\\*+ \\|[   ]*$\\|[ \t]*[:|]")
   ;; The paragraph starter includes hand-formatted lists.
   (org-set-local 'paragraph-start
-                "\f\\|[        ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*][ \t]+\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]")
+                "\f\\|[        ]*$\\|\\*+ \\|\f\\|[ \t]*\\([-+*][ \t]+\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]")
   ;; Inhibit auto-fill for headers, tables and fixed-width lines.
   ;; But only if the user has not turned off tables or fixed-width regions
   (org-set-local
    'auto-fill-inhibit-regexp
-   (concat "\\*\\|#\\+"
+   (concat "\\*\\|#\\+"
           "\\|[ \t]*" org-keyword-time-regexp
           (if (or org-enable-table-editor org-enable-fixed-width-editor)
               (concat
@@ -19627,49 +25069,77 @@ In particular, this makes sure hanging paragraphs for hand-formatted lists
 work correctly."
   (cond ((looking-at "#[ \t]+")
         (match-string 0))
-       ((looking-at " *\\([-*+] \\|[0-9]+[.)] \\)?")
-        (make-string (- (match-end 0) (match-beginning 0)) ?\ ))
+       ((looking-at "[ \t]*\\([-*+] \\|[0-9]+[.)] \\)?")
+        (save-excursion
+          (goto-char (match-end 0))
+          (make-string (current-column) ?\ )))
        (t nil)))
 
-
-(defun org-image-file-name-regexp ()
-  "Return regexp matching the file names of images."
-  (if (fboundp 'image-file-name-regexp)
-      (image-file-name-regexp)
-    (let ((image-file-name-extensions
-          '("png" "jpeg" "jpg" "gif" "tiff" "tif"
-            "xbm" "xpm" "pbm" "pgm" "ppm")))
-      (concat "\\."
-             (regexp-opt (nconc (mapcar 'upcase
-                                        image-file-name-extensions)
-                                image-file-name-extensions)
-                         t)
-             "\\'"))))
-
-(defun org-file-image-p (file)
-  "Return non-nil if FILE is an image."
-  (save-match-data
-    (string-match (org-image-file-name-regexp) file)))
-
 ;;;; Functions extending outline functionality
 
-;; C-a should go to the beginning of a *visible* line, also in the
-;; new outline.el.  I guess this should be patched into Emacs?
-(defun org-beginning-of-line ()
+(defun org-beginning-of-line (&optional arg)
   "Go to the beginning of the current line.  If that is invisible, continue
-to a visible line beginning.  This makes the function of C-a more intuitive."
-  (interactive)
-  (beginning-of-line 1)
-  (if (bobp)
-      nil
-    (backward-char 1)
-    (if (org-invisible-p)
-       (while (and (not (bobp)) (org-invisible-p))
-         (backward-char 1)
-         (beginning-of-line 1))
-      (forward-char 1))))
+to a visible line beginning.  This makes the function of C-a more intuitive.
+If this is a headline, and `org-special-ctrl-a/e' is set, ignore tags on the
+first attempt, and only move to after the tags when the cursor is already
+beyond the end of the headline."
+  (interactive "P")
+  (let ((pos (point)))
+    (beginning-of-line 1)
+    (if (bobp)
+       nil
+      (backward-char 1)
+      (if (org-invisible-p)
+         (while (and (not (bobp)) (org-invisible-p))
+           (backward-char 1)
+           (beginning-of-line 1))
+       (forward-char 1)))
+    (when org-special-ctrl-a/e
+      (cond
+       ((and (looking-at org-todo-line-regexp)
+            (= (char-after (match-end 1)) ?\ ))
+       (goto-char
+        (if (eq org-special-ctrl-a/e t)
+            (cond ((> pos (match-beginning 3)) (match-beginning 3))
+                  ((= pos (point)) (match-beginning 3))
+                  (t (point)))
+          (cond ((> pos (point)) (point))
+                ((not (eq last-command this-command)) (point))
+                (t (match-beginning 3))))))
+       ((org-at-item-p)
+       (goto-char
+        (if (eq org-special-ctrl-a/e t)
+            (cond ((> pos (match-end 4)) (match-end 4))
+                  ((= pos (point)) (match-end 4))
+                  (t (point)))
+          (cond ((> pos (point)) (point))
+                ((not (eq last-command this-command)) (point))
+                (t (match-end 4))))))))))
+
+(defun org-end-of-line (&optional arg)
+  "Go to the end of the line.
+If this is a headline, and `org-special-ctrl-a/e' is set, ignore tags on the
+first attempt, and only move to after the tags when the cursor is already
+beyond the end of the headline."
+  (interactive "P")
+  (if (or (not org-special-ctrl-a/e)
+         (not (org-on-heading-p)))
+      (end-of-line arg)
+    (let ((pos (point)))
+      (beginning-of-line 1)
+      (if (looking-at (org-re ".*?\\([ \t]*\\)\\(:[[:alnum:]_@:]+:\\)[ \t]*$"))
+         (if (eq org-special-ctrl-a/e t)
+             (if (or (< pos (match-beginning 1))
+                     (= pos (match-end 0)))
+                 (goto-char (match-beginning 1))
+               (goto-char (match-end 0)))
+           (if (or (< pos (match-end 0)) (not (eq this-command last-command)))
+               (goto-char (match-end 0))
+             (goto-char (match-beginning 1))))
+       (end-of-line arg)))))
 
 (define-key org-mode-map "\C-a" 'org-beginning-of-line)
+(define-key org-mode-map "\C-e" 'org-end-of-line)
 
 (defun org-invisible-p ()
   "Check if point is at a character currently not visible."
@@ -19689,6 +25159,9 @@ to a visible line beginning.  This makes the function of C-a more intuitive."
 
 (defalias 'org-back-to-heading 'outline-back-to-heading)
 (defalias 'org-on-heading-p 'outline-on-heading-p)
+(defalias 'org-at-heading-p 'outline-on-heading-p)
+(defun org-at-heading-or-item-p ()
+  (or (org-on-heading-p) (org-at-item-p)))
 
 (defun org-on-target-p ()
   (or (org-in-regexp org-radio-target-regexp)
@@ -19702,6 +25175,21 @@ With argument, move up ARG levels."
       (outline-up-heading-all arg)   ; emacs 21 version of outline.el
     (outline-up-heading arg t)))     ; emacs 22 version of outline.el
 
+(defun org-up-heading-safe ()
+  "Move to the heading line of which the present line is a subheading.
+This version will not throw an error.  It will return the level of the
+headline found, or nil if no higher level is found."
+  (let ((pos (point)) start-level level
+       (re (concat "^" outline-regexp)))
+    (catch 'exit
+      (outline-back-to-heading t)
+      (setq start-level (funcall outline-level))
+      (if (equal start-level 1) (throw 'exit nil))
+      (while (re-search-backward re nil t)
+       (setq level (funcall outline-level))
+       (if (< level start-level) (throw 'exit level)))
+      nil)))
+
 (defun org-goto-sibling (&optional previous)
   "Goto the next sibling, even if it is invisible.
 When PREVIOUS is set, go to the previous sibling instead.  Returns t
@@ -19711,16 +25199,16 @@ move point."
        (pos (point))
        (re (concat "^" outline-regexp))
        level l)
-    (org-back-to-heading t)
-    (setq level (funcall outline-level))
-    (catch 'exit
-      (or previous (forward-char 1))
-      (while (funcall fun re nil t)
-       (setq l (funcall outline-level))
-       (when (< l level) (goto-char pos) (throw 'exit nil))
-       (when (= l level) (goto-char (match-beginning 0)) (throw 'exit t)))
-      (goto-char pos)
-      nil)))
+    (when (condition-case nil (org-back-to-heading t) (error nil))
+      (setq level (funcall outline-level))
+      (catch 'exit
+       (or previous (forward-char 1))
+       (while (funcall fun re nil t)
+         (setq l (funcall outline-level))
+         (when (< l level) (goto-char pos) (throw 'exit nil))
+         (when (= l level) (goto-char (match-beginning 0)) (throw 'exit t)))
+       (goto-char pos)
+       nil))))
 
 (defun org-show-siblings ()
   "Show all siblings of the current headline."
@@ -19747,11 +25235,11 @@ When ENTRY is non-nil, show the entire entry."
          (save-excursion
            (and (outline-next-heading)
                 (org-flag-heading nil))))
-      (outline-flag-region (max 1 (1- (point)))
+      (outline-flag-region (max (point-min) (1- (point)))
                           (save-excursion (outline-end-of-heading) (point))
                           flag))))
 
-(defun org-end-of-subtree (&optional invisible-OK)
+(defun org-end-of-subtree (&optional invisible-OK to-heading)
   ;; This is an exact copy of the original function, but it uses
   ;; `org-back-to-heading', to make it work also in invisible
   ;; trees.  And is uses an invisible-OK argument.
@@ -19763,13 +25251,14 @@ When ENTRY is non-nil, show the entire entry."
                (or first (> (funcall outline-level) level)))
       (setq first nil)
       (outline-next-heading))
-    (if (memq (preceding-char) '(?\n ?\^M))
-       (progn
-         ;; Go to end of line before heading
-         (forward-char -1)
-         (if (memq (preceding-char) '(?\n ?\^M))
-             ;; leave blank line before heading
-             (forward-char -1)))))
+    (unless to-heading
+      (if (memq (preceding-char) '(?\n ?\^M))
+         (progn
+           ;; Go to end of line before heading
+           (forward-char -1)
+           (if (memq (preceding-char) '(?\n ?\^M))
+               ;; leave blank line before heading
+               (forward-char -1))))))
   (point))
 
 (defun org-show-subtree ()
@@ -19785,13 +25274,17 @@ When ENTRY is non-nil, show the entire entry."
 Show the heading too, if it is currently invisible."
   (interactive)
   (save-excursion
-    (org-back-to-heading t)
-    (outline-flag-region
-     (max 1 (1- (point)))
-     (save-excursion
-       (re-search-forward (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move)
-       (or (match-beginning 1) (point-max)))
-     nil)))
+    (condition-case nil
+       (progn
+         (org-back-to-heading t)
+         (outline-flag-region
+          (max (point-min) (1- (point)))
+          (save-excursion
+            (re-search-forward
+             (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move)
+            (or (match-beginning 1) (point-max)))
+          nil))
+      (error nil))))
 
 (defun org-make-options-regexp (kwds)
   "Make a regular expression for keyword lines."
@@ -19824,7 +25317,13 @@ Show the heading too, if it is currently invisible."
   (remove-hook 'post-command-hook 'org-isearch-post-command 'local)
   (org-show-context 'isearch))
 
-;;;; Repair problems with some other packages
+
+;;;; Address problems with some other packages
+
+;; Make flyspell not check words in links, to not mess up our keymap
+(defun org-mode-flyspell-verify ()
+  "Don't let flyspell put overlays at active buttons."
+  (not (get-text-property (point) 'keymap)))
 
 ;; Make `bookmark-jump' show the jump location if it was hidden.
 (eval-after-load "bookmark"
@@ -19851,6 +25350,91 @@ Show the heading too, if it is currently invisible."
 ;;;; Experimental code
 
 
+(defun org-closed-in-range ()
+  "Sparse tree of items closed in a certain time range.
+Still experimental, may disappear in the furture."
+  (interactive)
+  ;; Get the time interval from the user.
+  (let* ((time1 (time-to-seconds
+                 (org-read-date nil 'to-time nil "Starting date: ")))
+         (time2 (time-to-seconds
+                 (org-read-date nil 'to-time nil "End date:")))
+         ;; callback function
+         (callback (lambda ()
+                     (let ((time
+                            (time-to-seconds
+                             (apply 'encode-time
+                                    (org-parse-time-string
+                                     (match-string 1))))))
+                       ;; check if time in interval
+                       (and (>= time time1) (<= time time2))))))
+    ;; make tree, check each match with the callback
+    (org-occur "CLOSED: +\\[\\(.*?\\)\\]" nil callback)))
+
+(defun org-fill-paragraph-experimental (&optional justify)
+  "Re-align a table, pass through to fill-paragraph if no table."
+  (let ((table-p (org-at-table-p))
+       (table.el-p (org-at-table.el-p)))
+    (cond ((equal (char-after (point-at-bol)) ?*) t) ; skip headlines
+         (table.el-p t)                             ; skip table.el tables
+         (table-p (org-table-align) t)              ; align org-mode tables
+         ((save-excursion
+            (let ((pos (1+ (point-at-eol))))
+              (backward-paragraph 1)
+              (re-search-forward "\\\\\\\\[ \t]*$" pos t)))
+          (save-excursion
+            (save-restriction
+              (narrow-to-region (1+ (match-end 0)) (point-max))
+              (fill-paragraph nil)
+              t)))
+         (t nil))))                                 ; call paragraph-fill
+
+;; FIXME: this needs a much better algorithm
+(defun org-assign-fast-keys (alist)
+  "Assign fast keys to a keyword-key alist.
+Respect keys that are already there."
+  (let (new e k c c1 c2 (char ?a))
+    (while (setq e (pop alist))
+      (cond
+       ((equal e '(:startgroup)) (push e new))
+       ((equal e '(:endgroup)) (push e new))
+       (t
+       (setq k (car e) c2 nil)
+       (if (cdr e)
+           (setq c (cdr e))
+         ;; automatically assign a character.
+         (setq c1 (string-to-char
+                   (downcase (substring
+                              k (if (= (string-to-char k) ?@) 1 0)))))
+         (if (or (rassoc c1 new) (rassoc c1 alist))
+             (while (or (rassoc char new) (rassoc char alist))
+               (setq char (1+ char)))
+           (setq c2 c1))
+         (setq c (or c2 char)))
+       (push (cons k c) new))))
+    (nreverse new)))
+
+(defun org-parse-local-options (string var)
+  "Parse STRING for startup setting relevant for variable VAR."
+  (let ((rtn (symbol-value var))
+       e opts)
+    (save-match-data
+      (if (or (not string) (not (string-match "\\S-" string)))
+         rtn
+       (setq opts (delq nil (mapcar (lambda (x)
+                                      (setq e (assoc x org-startup-options))
+                                      (if (eq (nth 1 e) var) e nil))
+                                    (org-split-string string "[ \t]+"))))
+       (if (not opts)
+           rtn
+         (setq rtn nil)
+         (while (setq e (pop opts))
+           (if (not (nth 3 e))
+               (setq rtn (nth 2 e))
+             (if (not (listp rtn)) (setq rtn nil))
+             (push (nth 2 e) rtn)))
+         rtn)))))
+
 ;;;; Finish up
 
 (provide 'org)
index c8a64b8aecc70902a6c595eb4beaf5571c1d35e2..46becd26dd4b83856f5a7fd79249d2bcc913dfc4 100644 (file)
@@ -702,26 +702,26 @@ While entering the regexp, completion on knows citation keys is possible.
         (delete-char 1))
 
       ;; Tell AUCTeX
-      (when (and reftex-mode 
+      (when (and reftex-mode
                  (fboundp 'LaTeX-add-bibitems)
                  reftex-plug-into-AUCTeX)
         (apply 'LaTeX-add-bibitems (mapcar 'car selected-entries)))
-      
+
       ;; Produce the cite-view strings
       (when (and reftex-mode reftex-cache-cite-echo cite-view)
-        (mapcar (lambda (entry) 
-                  (reftex-make-cite-echo-string entry docstruct-symbol))
-                selected-entries))
+        (mapc (lambda (entry)
+                (reftex-make-cite-echo-string entry docstruct-symbol))
+              selected-entries))
 
       (message ""))
 
     (set-marker reftex-select-return-marker nil)
     (reftex-kill-buffer "*RefTeX Select*")
-    
+
     ;; Check if the prefix arg was numeric, and call recursively
     (when (integerp arg)
       (if (> arg 1)
-          (progn      
+          (progn
             (skip-chars-backward "}")
             (decf arg)
             (reftex-do-citation arg))
@@ -954,7 +954,7 @@ While entering the regexp, completion on knows citation keys is possible.
              reftex-mouse-selected-face
            nil))
         tmp len)
-    (mapcar 
+    (mapc
      (lambda (x)
        (setq tmp (cdr (assoc "&formatted" x))
              len (length tmp))
index 3294c4c22a9d9d0c149fb19c80b9cbad192e6410..c004602757c21f8b8d01feee341263f70c553403 100644 (file)
@@ -665,10 +665,10 @@ When called with 2 C-u prefix args, disable magic word recognition."
       (save-excursion
         (while reftex-buffers-with-changed-invisibility
           (set-buffer (car (car reftex-buffers-with-changed-invisibility)))
-          (setq buffer-invisibility-spec 
+          (setq buffer-invisibility-spec
                 (cdr (pop reftex-buffers-with-changed-invisibility)))))
-      (mapcar (lambda (buf) (and (buffer-live-p buf) (bury-buffer buf)))
-              selection-buffers)
+      (mapc (lambda (buf) (and (buffer-live-p buf) (bury-buffer buf)))
+            selection-buffers)
       (reftex-kill-temporary-buffers))
     ;; Add the prefixes, put together the relevant information in the form
     ;; (LABEL TYPEKEY SEPARATOR) and return a list of those.
index 4a9ad14510ddc6c745b6b422ccd3f72561c3fddd..d08694c2080b512a809554997f2d44a4f2c15308 100644 (file)
@@ -418,11 +418,11 @@ During a selection process, these are the local bindings.
           (set-buffer selection-buffer)
           (use-local-map nil)
           (remove-hook 'pre-command-hook 'reftex-select-pre-command-hook t)
-          (remove-hook 'post-command-hook 
+          (remove-hook 'post-command-hook
                        'reftex-select-post-command-hook t))
         ;; Kill the mark overlays
-        (mapcar (lambda (c) (reftex-delete-overlay (nth 1 c)))
-                reftex-select-marked)))))
+        (mapc (lambda (c) (reftex-delete-overlay (nth 1 c)))
+              reftex-select-marked)))))
 
     (set (make-local-variable 'reftex-last-line)
          (+ (count-lines (point-min) (point)) (if (bolp) 1 0)))
@@ -643,12 +643,12 @@ Useful for large TOC's."
     (and ovl (reftex-delete-overlay ovl))
     (setq reftex-select-marked (delq cell reftex-select-marked))
     (setq cnt (1+ (length reftex-select-marked)))
-    (mapcar (lambda (c)
-              (setq sep (nth 2 c))
-              (reftex-overlay-put (nth 1 c) 'before-string
-                                  (if sep
-                                      (format "*%c%d* " sep (decf cnt))
-                                    (format "*%d*  " (decf cnt)))))
+    (mapc (lambda (c)
+            (setq sep (nth 2 c))
+            (reftex-overlay-put (nth 1 c) 'before-string
+                                (if sep
+                                    (format "*%c%d* " sep (decf cnt))
+                                  (format "*%d*  " (decf cnt)))))
             reftex-select-marked)
     (message "Entry no longer marked")))
 
index 4de409de70ce5b8c8f45652b6df4b005c14eae9a..ae147cc6b97057d0d3ab51e2c452548455e25e6d 100644 (file)
@@ -618,7 +618,7 @@ point."
                 nil              ; we have permission, do nothing
               (error "Abort"))   ; abort, we don't have permission
             ;; Do the changes
-            (mapcar 'reftex-toc-promote-action entries)
+            (mapc 'reftex-toc-promote-action entries)
             ;; Rescan the document and rebuilt the toc buffer
             (save-window-excursion
               (reftex-toc-Rescan))
index 375bd2d26529434a06fb6d4c6fbb9785a478fbc7..519faded548d2cab4a6761ecde0bdbb674f01d03 100644 (file)
@@ -859,12 +859,12 @@ This enforces rescanning the buffer on next use."
 
 (defun reftex-erase-all-selection-and-index-buffers ()
   ;; Remove all selection buffers associated with current document.
-  (mapcar 
+  (mapc
    (lambda (type)
      (reftex-erase-buffer (reftex-make-selection-buffer-name type)))
    reftex-typekey-list)
   ;; Kill all index buffers
-  (mapcar 
+  (mapc
    (lambda (tag)
      (reftex-kill-buffer (reftex-make-index-buffer-name tag)))
    (cdr (assoc 'index-tags (symbol-value reftex-docstruct-symbol)))))
@@ -1339,7 +1339,7 @@ Valid actions are: readable, restore, read, kill, write."
                               (user-login-name) (user-full-name)))
               (insert "(set reftex-docstruct-symbol '(\n\n")
               (let ((standard-output (current-buffer)))
-                (mapcar
+                (mapc
                  (lambda (x)
                    (cond ((eq (car x) 'toc)
                           ;; A toc entry. Do not save the marker.
index 9da49fcc59929f1f3042de58f03b468689c50ecd..245ffc479081cf821e6767c8cadb669040aabeae 100644 (file)
   :group 'languages)
 
 (defcustom sgml-basic-offset 2
-  "*Specifies the basic indentation level for `sgml-indent-line'."
+  "Specifies the basic indentation level for `sgml-indent-line'."
   :type 'integer
   :group 'sgml)
 
 (defcustom sgml-transformation-function 'identity
-  "*Default value for `skeleton-transformation-function' in SGML mode."
+  "Default value for `skeleton-transformation-function' in SGML mode."
   :type 'function
   :group 'sgml)
 
@@ -166,7 +166,7 @@ This takes effect when first loading the `sgml-mode' library.")
   "Syntax table used to parse SGML tags.")
 
 (defcustom sgml-name-8bit-mode nil
-  "*When non-nil, insert non-ASCII characters as named entities."
+  "When non-nil, insert non-ASCII characters as named entities."
   :type 'boolean
   :group 'sgml)
 
@@ -225,7 +225,7 @@ Currently, only Latin-1 characters are supported.")
 ;; The -s option suppresses output.
 
 (defcustom sgml-validate-command "nsgmls -s" ; replaced old `sgmls'
-  "*The command to validate an SGML document.
+  "The command to validate an SGML document.
 The file name of current buffer file name will be appended to this,
 separated by a space."
   :type 'string
@@ -238,7 +238,7 @@ separated by a space."
 ;; I doubt that null end tags are used much for large elements,
 ;; so use a small distance here.
 (defcustom sgml-slash-distance 1000
-  "*If non-nil, is the maximum distance to search for matching `/'."
+  "If non-nil, is the maximum distance to search for matching `/'."
   :type '(choice (const nil) integer)
   :group 'sgml)
 
@@ -281,8 +281,8 @@ Any terminating `>' or `/' is not matched.")
       . (cons (concat "<"
                      (regexp-opt (mapcar 'car sgml-tag-face-alist) t)
                      "\\([ \t][^>]*\\)?>\\([^<]+\\)</\\1>")
-             '(3 (cdr (assoc (downcase (match-string 1))
-                             sgml-tag-face-alist)) prepend))))))
+             '(3 (cdr (assoc-string (match-string 1) sgml-tag-face-alist t))
+               prepend))))))
 
 ;; for font-lock, but must be defvar'ed after
 ;; sgml-font-lock-keywords-1 and sgml-font-lock-keywords-2 above
@@ -318,7 +318,7 @@ When more these are fontified together with `sgml-font-lock-keywords'.")
     ("!doctype")
     ("!element")
     ("!entity"))
-  "*Alist of tag names for completing read and insertion rules.
+  "Alist of tag names for completing read and insertion rules.
 This alist is made up as
 
   ((\"tag\" . TAGRULE)
@@ -348,15 +348,14 @@ an optional alist of possible values."
     ("!doctype" . "Document type (DTD) declaration")
     ("!element" . "Tag declaration")
     ("!entity" . "Entity (macro) declaration"))
-  "*Alist of tag name and short description."
+  "Alist of tag name and short description."
   :type '(repeat (cons (string :tag "Tag Name")
                       (string :tag "Description")))
   :group 'sgml)
 
 (defcustom sgml-xml-mode nil
-  "*When non-nil, tag insertion functions will be XML-compliant.
-If this variable is customized, the custom value is used always.
-Otherwise, it is set to be buffer-local when the file has
+  "When non-nil, tag insertion functions will be XML-compliant.
+It is set to be buffer-local when the file has
 a DOCTYPE or an XML declaration."
   :type 'boolean
   :version "22.1"
@@ -369,20 +368,19 @@ a DOCTYPE or an XML declaration."
   "List of tags whose !ELEMENT definition says the end-tag is optional.")
 
 (defun sgml-xml-guess ()
-  "Guess whether the current buffer is XML."
+  "Guess whether the current buffer is XML.  Return non-nil if so."
   (save-excursion
     (goto-char (point-min))
-    (when (or (string= "xml" (file-name-extension (or buffer-file-name "")))
-             (looking-at "\\s-*<\\?xml")
-             (when (re-search-forward
-                    (eval-when-compile
+    (or (string= "xml" (file-name-extension (or buffer-file-name "")))
+       (looking-at "\\s-*<\\?xml")
+       (when (re-search-forward
+              (eval-when-compile
                 (mapconcat 'identity
                            '("<!DOCTYPE" "\\(\\w+\\)" "\\(\\w+\\)"
-                                   "\"\\([^\"]+\\)\"" "\"\\([^\"]+\\)\"")
-                                 "\\s-+"))
-                    nil t)
-               (string-match "X\\(HT\\)?ML" (match-string 3))))
-      (set (make-local-variable 'sgml-xml-mode) t))))
+                             "\"\\([^\"]+\\)\"" "\"\\([^\"]+\\)\"")
+                           "\\s-+"))
+              nil t)
+         (string-match "X\\(HT\\)?ML" (match-string 3))))))
 
 (defvar v2)                            ; free for skeleton
 
@@ -410,7 +408,7 @@ a DOCTYPE or an XML declaration."
         (eq (char-before) ?<))))
 
 ;;;###autoload
-(define-derived-mode sgml-mode text-mode "SGML"
+(define-derived-mode sgml-mode text-mode '(sgml-xml-mode "XML" "SGML")
   "Major mode for editing SGML documents.
 Makes > match <.
 Keys <, &, SPC within <>, \", / and ' can be electric depending on
@@ -462,9 +460,9 @@ Do \\[describe-key] on the following bindings to discover what they do.
           . sgml-font-lock-syntactic-keywords)))
   (set (make-local-variable 'facemenu-add-face-function)
        'sgml-mode-facemenu-add-face-function)
-  (sgml-xml-guess)
+  (set (make-local-variable 'sgml-xml-mode) (sgml-xml-guess))
   (if sgml-xml-mode
-      (setq mode-name "XML")
+      ()
     (set (make-local-variable 'skeleton-transformation-function)
          sgml-transformation-function))
   ;; This will allow existing comments within declarations to be
@@ -737,22 +735,93 @@ With prefix argument, only self insert."
 
 (defun sgml-skip-tag-backward (arg)
   "Skip to beginning of tag or matching opening tag if present.
-With prefix argument ARG, repeat this ARG times."
+With prefix argument ARG, repeat this ARG times.
+Return non-nil if we skipped over matched tags."
   (interactive "p")
   ;; FIXME: use sgml-get-context or something similar.
-  (while (>= arg 1)
-    (search-backward "<" nil t)
-    (if (looking-at "</\\([^ \n\t>]+\\)")
-       ;; end tag, skip any nested pairs
-       (let ((case-fold-search t)
-             (re (concat "</?" (regexp-quote (match-string 1))
-                         ;; Ignore empty tags like <foo/>.
-                         "\\([^>]*[^/>]\\)?>")))
-         (while (and (re-search-backward re nil t)
-                     (eq (char-after (1+ (point))) ?/))
-           (forward-char 1)
-           (sgml-skip-tag-backward 1))))
-    (setq arg (1- arg))))
+  (let ((return t))
+    (while (>= arg 1)
+      (search-backward "<" nil t)
+      (if (looking-at "</\\([^ \n\t>]+\\)")
+          ;; end tag, skip any nested pairs
+          (let ((case-fold-search t)
+                (re (concat "</?" (regexp-quote (match-string 1))
+                            ;; Ignore empty tags like <foo/>.
+                            "\\([^>]*[^/>]\\)?>")))
+            (while (and (re-search-backward re nil t)
+                        (eq (char-after (1+ (point))) ?/))
+              (forward-char 1)
+              (sgml-skip-tag-backward 1)))
+        (setq return nil))
+      (setq arg (1- arg)))
+    return))
+
+(defvar sgml-electric-tag-pair-overlays nil)
+(defvar sgml-electric-tag-pair-timer nil)
+
+(defun sgml-electric-tag-pair-before-change-function (beg end)
+  (condition-case err
+  (save-excursion
+    (goto-char end)
+    (skip-chars-backward "[:alnum:]-_.:")
+    (if (and ;; (<= (point) beg) ; This poses problems for downcase-word.
+             (or (eq (char-before) ?<)
+                 (and (eq (char-before) ?/)
+                      (eq (char-before (1- (point))) ?<)))
+             (null (get-char-property (point) 'text-clones)))
+        (let* ((endp (eq (char-before) ?/))
+               (cl-start (point))
+               (cl-end (progn (skip-chars-forward "[:alnum:]-_.:") (point)))
+               (match
+                (if endp
+                    (when (sgml-skip-tag-backward 1) (forward-char 1) t)
+                  (with-syntax-table sgml-tag-syntax-table
+                    (up-list -1)
+                    (when (sgml-skip-tag-forward 1)
+                      (backward-sexp 1)
+                      (forward-char 2)
+                      t))))
+               (clones (get-char-property (point) 'text-clones)))
+          (when (and match
+                     (/= cl-end cl-start)
+                     (equal (buffer-substring cl-start cl-end)
+                            (buffer-substring (point)
+                                              (save-excursion
+                                                (skip-chars-forward "[:alnum:]-_.:")
+                                                (point))))
+                     (or (not endp) (eq (char-after cl-end) ?>)))
+            (when clones
+              (message "sgml-electric-tag-pair-before-change-function: deleting old OLs")
+              (mapc 'delete-overlay clones))
+            (message "sgml-electric-tag-pair-before-change-function: new clone")
+            (text-clone-create cl-start cl-end 'spread "[[:alnum:]-_.:]+")
+            (setq sgml-electric-tag-pair-overlays
+                  (append (get-char-property (point) 'text-clones)
+                          sgml-electric-tag-pair-overlays))))))
+  (scan-error nil)
+  (error (message "Error in sgml-electric-pair-mode: %s" err))))
+
+(defun sgml-electric-tag-pair-flush-overlays ()
+  (while sgml-electric-tag-pair-overlays
+    (delete-overlay (pop sgml-electric-tag-pair-overlays))))
+
+(define-minor-mode sgml-electric-tag-pair-mode
+  "Automatically update the closing tag when editing the opening one."
+  :lighter "/e"
+  (if sgml-electric-tag-pair-mode
+      (progn
+        (add-hook 'before-change-functions
+                  'sgml-electric-tag-pair-before-change-function
+                  nil t)
+        (unless sgml-electric-tag-pair-timer
+          (setq sgml-electric-tag-pair-timer
+                (run-with-idle-timer 5 'repeat 'sgml-electric-tag-pair-flush-overlays))))
+    (remove-hook 'before-change-functions
+                 'sgml-electric-tag-pair-before-change-function
+                 t)
+    ;; We leave the timer running for other buffers.
+    ))
+
 
 (defun sgml-skip-tag-forward (arg)
   "Skip to end of tag or matching closing tag if present.
@@ -940,7 +1009,7 @@ and move to the line in the SGML document that caused it."
 (defun sgml-lexical-context (&optional limit)
   "Return the lexical context at point as (TYPE . START).
 START is the location of the start of the lexical element.
-TYPE is one of `string', `comment', `tag', `cdata', or `text'.
+TYPE is one of `string', `comment', `tag', `cdata', `pi', or `text'.
 
 Optional argument LIMIT is the position to start parsing from.
 If nil, start from a preceding tag at indentation."
@@ -967,12 +1036,19 @@ If nil, start from a preceding tag at indentation."
                   (let ((cdata-start (point)))
                     (unless (search-forward "]]>" pos 'move)
                       (list 0 nil nil 'cdata nil nil nil nil cdata-start))))
+                 ((and sgml-xml-mode (looking-at "<\\?"))
+                  ;; Processing Instructions.
+                  ;; In SGML, it's basically a normal tag of the form
+                  ;; <?NAME ...> but in XML, it takes the form <? ... ?>.
+                  (let ((pi-start (point)))
+                    (unless (search-forward "?>" pos 'move)
+                      (list 0 nil nil 'pi nil nil nil nil pi-start))))
                  (t
                   ;; We've reached a tag.  Parse it.
                   ;; FIXME: Handle net-enabling start-tags
                   (parse-partial-sexp (point) pos 0))))))
       (cond
-       ((eq (nth 3 state) 'cdata) (cons 'cdata (nth 8 state)))
+       ((memq (nth 3 state) '(cdata pi)) (cons (nth 3 state) (nth 8 state)))
        ((nth 3 state) (cons 'string (nth 8 state)))
        ((nth 4 state) (cons 'comment (nth 8 state)))
        ((and state (> (nth 0 state) 0)) (cons 'tag (nth 1 state)))
@@ -1006,8 +1082,10 @@ See `sgml-tag-alist' for info about attribute rules."
              (insert alist ?\")
            (delete-backward-char 2)))
       (insert "=\"")
-      (when alist
-        (insert (skeleton-read '(completing-read "Value: " alist))))
+      (if (cdr alist)
+          (insert (skeleton-read '(completing-read "Value: " alist)))
+        (when (null alist)
+          (insert (skeleton-read '(read-string "Value: ")))))
       (insert ?\"))))
 
 (defun sgml-quote (start end &optional unquotep)
@@ -1096,9 +1174,15 @@ Leave point at the beginning of the tag."
       (when (eq (char-after) ?<)
        ;; Oops!! Looks like we were not in a textual context after all!.
        ;; Let's try to recover.
+        ;; Remember the tag-start so we don't need to look for it later.
+       ;; This is not just an optimization but also makes sure we don't get
+       ;; stuck in infloops in cases where "looking back for <" would not go
+       ;; back far enough.
+        (setq tag-start (point))
        (with-syntax-table sgml-tag-syntax-table
          (let ((pos (point)))
            (condition-case nil
+                ;; FIXME: This does not correctly skip over PI an CDATA tags.
                (forward-sexp)
              (scan-error
               ;; This < seems to be just a spurious one, let's ignore it.
@@ -1113,33 +1197,41 @@ Leave point at the beginning of the tag."
       (cond
        ((sgml-looking-back-at "--")    ; comment
        (setq tag-type 'comment
-             tag-start (search-backward "<!--" nil t)))
+             tag-start (or tag-start (search-backward "<!--" nil t))))
        ((sgml-looking-back-at "]]")    ; cdata
        (setq tag-type 'cdata
-             tag-start (re-search-backward "<!\\[[A-Z]+\\[" nil t)))
+             tag-start (or tag-start
+                            (re-search-backward "<!\\[[A-Z]+\\[" nil t))))
+       ((sgml-looking-back-at "?")      ; XML processing-instruction
+        (setq tag-type 'pi
+              ;; IIUC: SGML processing instructions take the form <?foo ...>
+              ;; i.e. a "normal" tag, handled below.  In XML this is changed
+              ;; to <?foo ... ?> where "..." can contain < and > and even <?
+              ;; but not ?>.  This means that when parsing backward, there's
+              ;; no easy way to make sure that we find the real beginning of
+              ;; the PI.
+             tag-start (or tag-start (search-backward "<?" nil t))))
        (t
-       (setq tag-start
-             (with-syntax-table sgml-tag-syntax-table
-               (goto-char tag-end)
-               (condition-case nil
-                   (backward-sexp)
-                 (scan-error
-                  ;; This > isn't really the end of a tag. Skip it.
-                  (goto-char (1- tag-end))
-                  (throw 'found (sgml-parse-tag-backward limit))))
-               (point)))
+        (unless tag-start
+          (setq tag-start
+                (with-syntax-table sgml-tag-syntax-table
+                  (goto-char tag-end)
+                  (condition-case nil
+                      (backward-sexp)
+                    (scan-error
+                     ;; This > isn't really the end of a tag. Skip it.
+                     (goto-char (1- tag-end))
+                     (throw 'found (sgml-parse-tag-backward limit))))
+                  (point))))
        (goto-char (1+ tag-start))
        (case (char-after)
-         (?!                           ; declaration
-          (setq tag-type 'decl))
-         (??                           ; processing-instruction
-          (setq tag-type 'pi))
+         (?! (setq tag-type 'decl))    ; declaration
+         (?? (setq tag-type 'pi))      ; processing-instruction
+         (?% (setq tag-type 'jsp))     ; JSP tags
          (?/                           ; close-tag
           (forward-char 1)
           (setq tag-type 'close
                 name (sgml-parse-tag-name)))
-         (?%                           ; JSP tags
-          (setq tag-type 'jsp))
          (t                            ; open or empty tag
           (setq tag-type 'open
                 name (sgml-parse-tag-name))
@@ -1198,7 +1290,7 @@ not the case, the first tag returned is the one inside which we are."
        ((eq (sgml-tag-type tag-info) 'open)
        (cond
         ((null stack)
-         (if (member-ignore-case (sgml-tag-name tag-info) ignore)
+         (if (assoc-string (sgml-tag-name tag-info) ignore t)
              ;; There was an implicit end-tag.
              nil
            (push tag-info context)
@@ -1283,12 +1375,13 @@ the current start-tag or the current comment or the current cdata, ..."
 (defun sgml-empty-tag-p (tag-name)
   "Return non-nil if TAG-NAME is an implicitly empty tag."
   (and (not sgml-xml-mode)
-       (member-ignore-case tag-name sgml-empty-tags)))
+       (assoc-string tag-name sgml-empty-tags 'ignore-case)))
 
 (defun sgml-unclosed-tag-p (tag-name)
   "Return non-nil if TAG-NAME is a tag for which an end-tag is optional."
   (and (not sgml-xml-mode)
-       (member-ignore-case tag-name sgml-unclosed-tags)))
+       (assoc-string tag-name sgml-unclosed-tags 'ignore-case)))
+
 
 (defun sgml-calculate-indent (&optional lcon)
   "Calculate the column to which this line should be indented.
@@ -1334,6 +1427,8 @@ LCON is the lexical context, if any."
 
     ;; We don't know how to indent it.  Let's be honest about it.
     (cdata nil)
+    ;; We don't know how to indent it.  Let's be honest about it.
+    (pi nil)
 
     (tag
      (goto-char (1+ (cdr lcon)))
@@ -1352,8 +1447,8 @@ LCON is the lexical context, if any."
      (let* ((here (point))
            (unclosed (and ;; (not sgml-xml-mode)
                       (looking-at sgml-tag-name-re)
-                      (member-ignore-case (match-string 1)
-                                          sgml-unclosed-tags)
+                      (assoc-string (match-string 1)
+                                    sgml-unclosed-tags 'ignore-case)
                       (match-string 1)))
            (context
             ;; If possible, align on the previous non-empty text line.
@@ -1791,11 +1886,11 @@ This takes effect when first loading the library.")
     ("ul" . "Unordered list")
     ("var" . "Math variable face")
     ("wbr" . "Enable <br> within <nobr>"))
-"*Value of `sgml-tag-help' for HTML mode.")
+  "*Value of `sgml-tag-help' for HTML mode.")
 
 \f
 ;;;###autoload
-(define-derived-mode html-mode sgml-mode "HTML"
+(define-derived-mode html-mode sgml-mode '(sgml-xml-mode "XHTML" "HTML")
   "Major mode based on SGML mode for editing HTML documents.
 This allows inserting skeleton constructs used in hypertext documents with
 completion.  See below for an introduction to HTML.  Use
@@ -1849,7 +1944,6 @@ To work around that, do:
        outline-level (lambda ()
                        (char-before (match-end 0))))
   (setq imenu-create-index-function 'html-imenu-index)
-  (when sgml-xml-mode (setq mode-name "XHTML"))
   (set (make-local-variable 'sgml-empty-tags)
        ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd',
        ;; plus manual addition of "wbr".
index eadb9e606c34a2cd10c7e24b1295edfd19be50ed..5e8b8c7cbc2004de8ad61d4429f9eb74b08d770b 100644 (file)
@@ -1376,7 +1376,7 @@ the last cache point coordinate."
 ;;
 
 ;; Point Motion Only Group
-(mapcar
+(mapc
  (lambda (command)
    (let ((func-symbol (intern (format "*table--cell-%s" command)))
         (doc-string (format "Table remapped function for `%s'." command)))
@@ -1409,7 +1409,7 @@ the last cache point coordinate."
    backward-paragraph))
 
 ;; Extraction Group
-(mapcar
+(mapc
  (lambda (command)
    (let ((func-symbol (intern (format "*table--cell-%s" command)))
         (doc-string (format "Table remapped function for `%s'." command)))
@@ -1443,7 +1443,7 @@ the last cache point coordinate."
    backward-kill-sexp))
 
 ;; Pasting Group
-(mapcar
+(mapc
  (lambda (command)
    (let ((func-symbol (intern (format "*table--cell-%s" command)))
         (doc-string (format "Table remapped function for `%s'." command)))
@@ -1469,7 +1469,7 @@ the last cache point coordinate."
    insert))
 
 ;; Formatting Group
-(mapcar
+(mapc
  (lambda (command)
    (let ((func-symbol (intern (format "*table--cell-%s" command)))
         (doc-string (format "Table remapped function for `%s'." command)))
@@ -1641,20 +1641,20 @@ Inside a table cell has a special keymap.
   (if (numberp cell-width) (setq cell-width (cons cell-width nil)))
   (if (numberp cell-height) (setq cell-height (cons cell-height nil)))
   ;; test validity of the arguments.
-  (mapcar (lambda (arg)
-           (let* ((value (symbol-value arg))
-                  (error-handler
-                   (function (lambda ()
-                               (error "%s must be a positive integer%s" arg
-                                      (if (listp value) " or a list of positive integers" ""))))))
-             (if (null value) (funcall error-handler))
-             (mapcar (function (lambda (arg1)
-                                 (if (or (not (integerp arg1))
-                                         (< arg1 1))
-                                     (funcall error-handler))))
-                     (if (listp value) value
-                       (cons value nil)))))
-         '(columns rows cell-width cell-height))
+  (mapc (lambda (arg)
+         (let* ((value (symbol-value arg))
+                (error-handler
+                 (function (lambda ()
+                   (error "%s must be a positive integer%s" arg
+                          (if (listp value) " or a list of positive integers" ""))))))
+           (if (null value) (funcall error-handler))
+           (mapcar (function (lambda (arg1)
+                     (if (or (not (integerp arg1))
+                             (< arg1 1))
+                         (funcall error-handler))))
+                   (if (listp value) value
+                     (cons value nil)))))
+       '(columns rows cell-width cell-height))
   (let ((orig-coord (table--get-coordinate))
        (coord (table--get-coordinate))
        r i cw ch cell-str border-str)
@@ -3141,7 +3141,7 @@ CALS (DocBook DTD):
       (set-marker-insertion-type (table-get-source-info 'colspec-marker) t) ;; insert before
       (save-excursion
        (goto-char (table-get-source-info 'colspec-marker))
-       (mapcar
+       (mapc
         (lambda (col)
           (insert (format "    <colspec colnum=\"%d\" colname=\"c%d\"/>\n" col col)))
         (sort (table-get-source-info 'colnum-list) '<)))
@@ -3223,11 +3223,11 @@ CALS (DocBook DTD):
              (if (> colspan 1)
                  (let ((scol (table-get-source-info 'current-column))
                        (ecol (+ (table-get-source-info 'current-column) colspan -1)))
-                   (mapcar (lambda (col)
-                             (unless (memq col (table-get-source-info 'colnum-list))
-                               (table-put-source-info 'colnum-list
-                                                      (cons col (table-get-source-info 'colnum-list)))))
-                           (list scol ecol))
+                   (mapc (lambda (col)
+                           (unless (memq col (table-get-source-info 'colnum-list))
+                             (table-put-source-info 'colnum-list
+                                                    (cons col (table-get-source-info 'colnum-list)))))
+                         (list scol ecol))
                    (insert (format " namest=\"c%d\" nameend=\"c%d\"" scol ecol))))
              (if (> rowspan 1) (insert (format " morerows=\"%d\"" (1- rowspan))))
              (if (and alignment
@@ -3910,19 +3910,19 @@ converts a table into plain text without frames.  It is a companion to
          (remap-alist table-command-remap-alist))
       ;; table-command-prefix mode specific bindings
       (if (vectorp table-command-prefix)
-         (mapcar (lambda (binding)
-                   (let ((seq (copy-sequence (car binding))))
-                     (and (vectorp seq)
-                          (listp (aref seq 0))
-                          (eq (car (aref seq 0)) 'control)
-                          (progn
-                            (aset seq 0 (cadr (aref seq 0)))
-                            (define-key map (vconcat table-command-prefix seq) (cdr binding))))))
-                 table-cell-bindings))
+         (mapc (lambda (binding)
+                 (let ((seq (copy-sequence (car binding))))
+                   (and (vectorp seq)
+                        (listp (aref seq 0))
+                        (eq (car (aref seq 0)) 'control)
+                        (progn
+                          (aset seq 0 (cadr (aref seq 0)))
+                          (define-key map (vconcat table-command-prefix seq) (cdr binding))))))
+               table-cell-bindings))
       ;; shorthand control bindings
-      (mapcar (lambda (binding)
-               (define-key map (car binding) (cdr binding)))
-             table-cell-bindings)
+      (mapc (lambda (binding)
+             (define-key map (car binding) (cdr binding)))
+           table-cell-bindings)
       ;; remap normal commands to table specific version
       (while remap-alist
        (define-key map (vector 'remap (caar remap-alist)) (cdar remap-alist))
@@ -4092,11 +4092,11 @@ key             binding
 ---             -------
 
 ")
-      (mapcar (lambda (binding)
-               (princ (format "%-16s%s\n"
-                              (key-description (car binding))
-                              (cdr binding))))
-             table-cell-bindings)
+      (mapc (lambda (binding)
+             (princ (format "%-16s%s\n"
+                            (key-description (car binding))
+                            (cdr binding))))
+           table-cell-bindings)
       (print-help-return-message))))
 
 (defun *table--cell-dabbrev-expand (arg)
index 54b592e4845e66ae3684f0d7fed06f35c4667ac9..06e26d21aafc51a61352044030fbd7d85bb024a1 100644 (file)
@@ -1,7 +1,8 @@
 ;;; 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 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1989, 1992, 1994, 1995, 1996, 1997, 1998
+;;   1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: tex
@@ -243,6 +244,24 @@ Normally set to either `plain-tex-mode' or `latex-mode'."
   :options '("''" "\">" "\"'" ">>" "»")
   :group 'tex)
 
+(defcustom tex-fontify-script t
+  "If non-nil, fontify subscript and superscript strings."
+  :type 'boolean
+  :group 'tex
+  :version "23.1")
+(put 'tex-fontify-script 'safe-local-variable 'booleanp)
+
+(defcustom tex-font-script-display '(-0.2 0.2)
+  "How much to lower and raise subscript and superscript content.
+This is a list of two floats.  The first is negative and
+specifies how much subscript is lowered, the second is positive
+and specifies how much superscript is raised.  Heights are
+measured relative to that of the normal text."
+  :group 'tex
+  :type '(list (float :tag "Subscript")
+               (float :tag "Superscript"))
+  :version "23.1")
+
 (defvar tex-last-temp-file nil
   "Latest temporary file generated by \\[tex-region] and \\[tex-buffer].
 Deleted when the \\[tex-region] or \\[tex-buffer] is next run, or when the
@@ -527,6 +546,8 @@ An alternative value is \" . \", if you use a font with a narrow period."
            (citations (regexp-opt
                        '("label" "ref" "pageref" "vref" "eqref"
                          "cite" "nocite" "index" "glossary" "bibitem"
+                          ;; natbib's two variants of \cite:
+                          "citep" "citet"
                          ;; These are text, rather than citations.
                          ;; "caption" "footnote" "footnotemark" "footnotetext"
                          )
@@ -591,13 +612,14 @@ An alternative value is \" . \", if you use a font with a narrow period."
                  (setq pos (1- pos) odd (not odd)))
                odd))
     (if (eq (char-after pos) ?_)
-       '(face subscript display (raise -0.3))
-      '(face superscript display (raise +0.3)))))
+       `(face subscript display (raise ,(car tex-font-script-display)))
+      `(face superscript display (raise ,(cadr tex-font-script-display))))))
 
 (defun tex-font-lock-match-suscript (limit)
   "Match subscript and superscript patterns up to LIMIT."
-  (when (re-search-forward "[_^] *\\([^\n\\{}]\\|\
-\\\\\\([a-zA-Z@]+\\|[^ \t\n]\\)\\|\\({\\)\\)" limit t)
+  (when (and tex-fontify-script
+            (re-search-forward "[_^] *\\([^\n\\{}]\\|\
+\\\\\\([a-zA-Z@]+\\|[^ \t\n]\\)\\|\\({\\)\\)" limit t))
     (when (match-end 3)
       (let ((beg (match-beginning 3))
            (end (save-restriction
@@ -619,26 +641,31 @@ An alternative value is \" . \", if you use a font with a narrow period."
 
 (defvar tex-verbatim-environments
   '("verbatim" "verbatim*"))
+(put 'tex-verbatim-environments 'safe-local-variable
+     (lambda (x) (null (delq t (mapcar 'stringp x)))))
 
 (defvar tex-font-lock-syntactic-keywords
-  (let ((verbs (regexp-opt tex-verbatim-environments t)))
-    `((,(concat "^\\\\begin *{" verbs "}.*\\(\n\\)") 2 "|")
-      ;; Technically, we'd like to put the "|" property on the \n preceding
-      ;; the \end, but this would have 2 disadvantages:
-      ;; 1 - it's wrong if the verbatim env is empty (the same \n is used to
-      ;;     start and end the fenced-string).
-      ;; 2 - font-lock considers the preceding \n as being part of the
-      ;;     preceding line, so things gets screwed every time the previous
-      ;;     line is re-font-locked on its own.
-      ;; There's a hack in tex-font-lock-keywords-1 to remove the verbatim
-      ;; face from the \ but C-M-f still jumps to the wrong spot :-(  --Stef
-      (,(concat "^\\(\\\\\\)end *{" verbs "}\\(.?\\)") (1 "|") (3 "<"))
-      ;; ("^\\(\\\\\\)begin *{comment}" 1 "< b")
-      ;; ("^\\\\end *{comment}.*\\(\n\\)" 1 "> b")
-      ("\\\\verb\\**\\([^a-z@*]\\)"
-       ;; Do it last, because it uses syntax-ppss which needs the
-       ;; syntax-table properties of previous entries.
-       1 (tex-font-lock-verb (match-end 1))))))
+  '((eval . `(,(concat "^\\\\begin *{"
+                       (regexp-opt tex-verbatim-environments t)
+                       "}.*\\(\n\\)") 2 "|"))
+    ;; Technically, we'd like to put the "|" property on the \n preceding
+    ;; the \end, but this would have 2 disadvantages:
+    ;; 1 - it's wrong if the verbatim env is empty (the same \n is used to
+    ;;     start and end the fenced-string).
+    ;; 2 - font-lock considers the preceding \n as being part of the
+    ;;     preceding line, so things gets screwed every time the previous
+    ;;     line is re-font-locked on its own.
+    ;; There's a hack in tex-font-lock-keywords-1 to remove the verbatim
+    ;; face from the \ but C-M-f still jumps to the wrong spot :-(  --Stef
+    (eval . `(,(concat "^\\(\\\\\\)end *{"
+                       (regexp-opt tex-verbatim-environments t)
+                       "}\\(.?\\)") (1 "|") (3 "<")))
+    ;; ("^\\(\\\\\\)begin *{comment}" 1 "< b")
+    ;; ("^\\\\end *{comment}.*\\(\n\\)" 1 "> b")
+    ("\\\\verb\\**\\([^a-z@*]\\)"
+     ;; Do it last, because it uses syntax-ppss which needs the
+     ;; syntax-table properties of previous entries.
+     1 (tex-font-lock-verb (match-end 1)))))
 
 (defun tex-font-lock-unfontify-region (beg end)
   (font-lock-default-unfontify-region beg end)
@@ -646,17 +673,47 @@ An alternative value is \" . \", if you use a font with a narrow period."
     (let ((next (next-single-property-change beg 'display nil end))
          (prop (get-text-property beg 'display)))
       (if (and (eq (car-safe prop) 'raise)
-              (member (car-safe (cdr prop)) '(-0.3 +0.3))
+              (member (car-safe (cdr prop)) tex-font-script-display)
               (null (cddr prop)))
          (put-text-property beg next 'display nil))
       (setq beg next))))
 
+(defcustom tex-suscript-height-ratio 0.8
+  "Ratio of subscript/superscript height to that of the preceding text.
+In nested subscript/superscript, this factor is applied repeatedly,
+subject to the limit set by `tex-suscript-height-minimum'."
+  :type 'float
+  :group 'tex
+  :version "23.1")
+
+(defcustom tex-suscript-height-minimum 0.0
+  "Integer or float limiting the minimum size of subscript/superscript text.
+An integer is an absolute height in units of 1/10 point, a float
+is a height relative to that of the default font.  Zero means no minimum."
+  :type '(choice (integer :tag "Integer height in 1/10 point units")
+                (float :tag "Fraction of default font height"))
+  :group 'tex
+  :version "23.1")
+
+(defun tex-suscript-height (height)
+  "Return the integer height of subscript/superscript font in 1/10 points.
+Not smaller than the value set by `tex-suscript-height-minimum'."
+  (ceiling (max (if (integerp tex-suscript-height-minimum)
+                   tex-suscript-height-minimum
+                 ;; For bootstrapping.
+                 (condition-case nil
+                     (* tex-suscript-height-minimum
+                        (face-attribute 'default :height))
+                   (error 0)))
+               ;; NB assumes height is integer.
+               (* height tex-suscript-height-ratio))))
+
 (defface superscript
-  '((t :height 0.8)) ;; :raise 0.3
+  '((t :height tex-suscript-height)) ;; :raise 0.2
   "Face used for superscripts."
   :group 'tex)
 (defface subscript
-  '((t :height 0.8)) ;; :raise -0.3
+  '((t :height tex-suscript-height)) ;; :raise -0.2
   "Face used for subscripts."
   :group 'tex)
 
@@ -1169,14 +1226,14 @@ on the line for the invalidity you want to see."
        (backward-paragraph)
        (forward-paragraph)
        (while (not (bobp))
-         ;; Scan the previous paragraph for invalidities.
+           ;; Scan the previous paragraph for invalidities.
          (backward-paragraph)
          (save-excursion
            (or (tex-validate-region (point) (save-excursion
                                               (forward-paragraph)
                                               (point)))
                (let ((end (line-beginning-position 2))
-                     start tem)
+                      start tem)
                  (beginning-of-line)
                  (setq start (point))
                  ;; Keep track of line number as we scan,
@@ -1240,6 +1297,7 @@ area if a mismatch is found."
              (save-excursion
                (let ((pos (match-beginning 0)))
                  (goto-char pos)
+                 (skip-chars-backward "\\\\") ; escaped parens
                  (forward-sexp 1)
                  (or (eq (preceding-char) (cdr (syntax-after pos)))
                      (eq (char-after pos) (cdr (syntax-after (1- (point)))))
@@ -1378,6 +1436,34 @@ Return the value returned by the last execution of BODY."
                              (looking-at "\\\\begin")))
     (tex-next-unmatched-end)))
 
+(defun tex-next-unmatched-eparen (otype)
+  "Leave point after the next unmatched escaped closing parenthesis.
+The string OTYPE is an opening parenthesis type: `(', `{', or `['."
+  (condition-case nil
+      (let ((ctype (char-to-string (cdr (aref (syntax-table)
+                                             (string-to-char otype))))))
+       (while (and (tex-search-noncomment
+                    (re-search-forward (format "\\\\[%s%s]" ctype otype)))
+                   (save-excursion
+                     (goto-char (match-beginning 0))
+                     (looking-at (format "\\\\%s" (regexp-quote otype)))))
+         (tex-next-unmatched-eparen otype)))
+    (wrong-type-argument (error "Unknown opening parenthesis type: %s" otype))
+    (search-failed (error "Couldn't find closing escaped paren"))))
+
+(defun tex-last-unended-eparen (ctype)
+  "Leave point at the start of the last unended escaped opening parenthesis.
+The string CTYPE is a closing parenthesis type:  `)', `}', or `]'."
+  (condition-case nil
+      (let ((otype (char-to-string (cdr (aref (syntax-table)
+                                             (string-to-char ctype))))))
+       (while (and (tex-search-noncomment
+                    (re-search-backward (format "\\\\[%s%s]" ctype otype)))
+                   (looking-at (format "\\\\%s" (regexp-quote ctype))))
+         (tex-last-unended-eparen ctype)))
+    (wrong-type-argument (error "Unknown opening parenthesis type: %s" ctype))
+    (search-failed (error "Couldn't find unended escaped paren"))))
+
 (defun tex-goto-last-unclosed-latex-block ()
   "Move point to the last unclosed \\begin{...}.
 Mark is left at original location."
@@ -1389,26 +1475,34 @@ Mark is left at original location."
     (push-mark)
     (goto-char spot)))
 
+;; Don't think this one actually _needs_ (for the purposes of
+;; tex-mode) to handle escaped parens.
 (defun latex-backward-sexp-1 ()
-  "Like (backward-sexp 1) but aware of multi-char elements."
+  "Like (backward-sexp 1) but aware of multi-char elements and escaped parens."
   (let ((pos (point))
        (forward-sexp-function))
     (backward-sexp 1)
-    (if (looking-at "\\\\begin\\>")
-       (signal 'scan-error
-               (list "Containing expression ends prematurely"
-                     (point) (prog1 (point) (goto-char pos))))
-      (when (eq (char-after) ?{)
-       (let ((newpos (point)))
-         (when (ignore-errors (backward-sexp 1) t)
-           (if (or (looking-at "\\\\end\\>")
-                   ;; In case the \\ ends a verbatim section.
-                   (and (looking-at "end\\>") (eq (char-before) ?\\)))
-               (tex-last-unended-begin)
-             (goto-char newpos))))))))
-
+    (cond ((looking-at "\\\\\\(begin\\>\\|[[({]\\)")
+          (signal 'scan-error
+                  (list "Containing expression ends prematurely"
+                        (point) (prog1 (point) (goto-char pos)))))
+         ((looking-at "\\\\\\([])}]\\)")
+          (tex-last-unended-eparen (match-string 1)))
+         ((eq (char-after) ?{)
+          (let ((newpos (point)))
+            (when (ignore-errors (backward-sexp 1) t)
+              (if (or (looking-at "\\\\end\\>")
+                      ;; In case the \\ ends a verbatim section.
+                      (and (looking-at "end\\>") (eq (char-before) ?\\)))
+                  (tex-last-unended-begin)
+                (goto-char newpos))))))))
+
+;; Note this does not handle things like mismatched brackets inside
+;; begin/end blocks.
+;; Needs to handle escaped parens for tex-validate-*.
+;; http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00038.html
 (defun latex-forward-sexp-1 ()
-  "Like (forward-sexp 1) but aware of multi-char elements."
+  "Like (forward-sexp 1) but aware of multi-char elements and escaped parens."
   (let ((pos (point))
        (forward-sexp-function))
     (forward-sexp 1)
@@ -1425,10 +1519,19 @@ Mark is left at original location."
        ((looking-at "\\\\begin\\>")
        (goto-char (match-end 0))
        (tex-next-unmatched-end))
+       ;; A better way to handle this, \( .. \) etc, is probably to
+       ;; temporarily change the syntax of the \ in \( to punctuation.
+       ((looking-back "\\\\[])}]")
+       (signal 'scan-error
+               (list "Containing expression ends prematurely"
+                     (- (point) 2) (prog1 (point)
+                                     (goto-char pos)))))
+       ((looking-back "\\\\\\([({[]\\)")
+       (tex-next-unmatched-eparen (match-string 1)))
        (t (goto-char newpos))))))
 
 (defun latex-forward-sexp (&optional arg)
-  "Like `forward-sexp' but aware of multi-char elements."
+  "Like `forward-sexp' but aware of multi-char elements and escaped parens."
   (interactive "P")
   (unless arg (setq arg 1))
   (let ((pos (point)))
@@ -2168,7 +2271,7 @@ start of the header is required to be within the first 100 lines."
       (widen)
       (goto-char (point-min))
       (let ((search-end (save-excursion
-      (forward-line 100)
+                         (forward-line 100)
                          (point)))
            (already-output 0)
            hbeg hend)
@@ -2185,11 +2288,11 @@ start of the header is required to be within the first 100 lines."
        (and tex-start-of-header
             (re-search-forward tex-start-of-header search-end t)
             (progn
-             (beginning-of-line)
-             (setq hbeg (point))       ;mark beginning of header
+              (beginning-of-line)
+              (setq hbeg (point))      ; mark beginning of header
               (when (re-search-forward tex-end-of-header nil t)
-                   (forward-line 1)
-                   (setq hend (point)) ;mark end of header
+                (forward-line 1)
+                (setq hend (point))    ; mark end of header
                 (write-region
                  (max (if beg
                           (min hbeg beg)
index 31e7946c58e5a34bb755d920ed03c67dd396b4ab..73b6ec3920e69c784f9b22e92327a38c6b72c6ca 100644 (file)
@@ -57,8 +57,6 @@ If optional argument HERE is non-nil, insert info at point."
 (require 'texinfo)          ; So `texinfo-footnote-style' is defined.
 (require 'texnfo-upd)       ; So `texinfo-section-types-regexp' is defined.
 
-(defvar texinfo-format-syntax-table nil)
-
 (defvar texinfo-vindex)
 (defvar texinfo-findex)
 (defvar texinfo-cindex)
@@ -81,27 +79,80 @@ If optional argument HERE is non-nil, insert info at point."
 (defvar texinfo-short-index-format-cmds-alist)
 (defvar texinfo-format-filename)
 (defvar texinfo-footnote-number)
-(defvar texinfo-start-of-header)
-(defvar texinfo-end-of-header)
-(defvar texinfo-raisesections-alist)
-(defvar texinfo-lowersections-alist)
+
+(defvar texinfo-raisesections-alist
+  '((@chapter . @chapter)             ; Cannot go higher
+    (@unnumbered . @unnumbered)
+    (@centerchap . @unnumbered)
+
+    (@majorheading . @majorheading)
+    (@chapheading . @chapheading)
+    (@appendix . @appendix)
+
+    (@section . @chapter)
+    (@unnumberedsec . @unnumbered)
+    (@heading . @chapheading)
+    (@appendixsec . @appendix)
+
+    (@subsection . @section)
+    (@unnumberedsubsec . @unnumberedsec)
+    (@subheading . @heading)
+    (@appendixsubsec . @appendixsec)
+
+    (@subsubsection . @subsection)
+    (@unnumberedsubsubsec . @unnumberedsubsec)
+    (@subsubheading . @subheading)
+    (@appendixsubsubsec . @appendixsubsec))
+  "*An alist of next higher levels for chapters, sections, etc...
+For example, section to chapter, subsection to section.
+Used by `texinfo-raise-lower-sections'.
+The keys specify types of section; the values correspond to the next
+higher types.")
+
+(defvar texinfo-lowersections-alist
+  '((@chapter . @section)
+    (@unnumbered . @unnumberedsec)
+    (@centerchap . @unnumberedsec)
+    (@majorheading . @heading)
+    (@chapheading . @heading)
+    (@appendix . @appendixsec)
+
+    (@section . @subsection)
+    (@unnumberedsec . @unnumberedsubsec)
+    (@heading . @subheading)
+    (@appendixsec . @appendixsubsec)
+
+    (@subsection . @subsubsection)
+    (@unnumberedsubsec . @unnumberedsubsubsec)
+    (@subheading . @subsubheading)
+    (@appendixsubsec . @appendixsubsubsec)
+
+    (@subsubsection . @subsubsection) ; Cannot go lower.
+    (@unnumberedsubsubsec . @unnumberedsubsubsec)
+    (@subsubheading . @subsubheading)
+    (@appendixsubsubsec . @appendixsubsubsec))
+  "*An alist of next lower levels for chapters, sections, etc...
+For example, chapter to section, section to subsection.
+Used by `texinfo-raise-lower-sections'.
+The keys specify types of section; the values correspond to the next
+lower types.")
 \f
 ;;; Syntax table
 
-(if texinfo-format-syntax-table
-    nil
-  (setq texinfo-format-syntax-table (make-syntax-table))
-  (modify-syntax-entry ?\" " " texinfo-format-syntax-table)
-  (modify-syntax-entry ?\\ " " texinfo-format-syntax-table)
-  (modify-syntax-entry ?@ "\\" texinfo-format-syntax-table)
-  (modify-syntax-entry ?\^q "\\" texinfo-format-syntax-table)
-  (modify-syntax-entry ?\[ "." texinfo-format-syntax-table)
-  (modify-syntax-entry ?\] "." texinfo-format-syntax-table)
-  (modify-syntax-entry ?\( "." texinfo-format-syntax-table)
-  (modify-syntax-entry ?\) "." texinfo-format-syntax-table)
-  (modify-syntax-entry ?{ "(}" texinfo-format-syntax-table)
-  (modify-syntax-entry ?} "){" texinfo-format-syntax-table)
-  (modify-syntax-entry ?\' "." texinfo-format-syntax-table))
+(defvar texinfo-format-syntax-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\" " " st)
+    (modify-syntax-entry ?\\ " " st)
+    (modify-syntax-entry ?@ "\\" st)
+    (modify-syntax-entry ?\^q "\\" 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))
 
 \f
 ;;; Top level buffer and region formatting functions
@@ -113,8 +164,8 @@ The Info file output is generated in a buffer visiting the Info file
 name specified in the @setfilename command.
 
 Non-nil argument (prefix, if interactive) means don't make tag table
-and don't split the file if large.  You can use Info-tagify and
-Info-split to do these manually."
+and don't split the file if large.  You can use `Info-tagify' and
+`Info-split' to do these manually."
   (interactive "P")
   (let ((lastmessage "Formatting Info file...")
        (coding-system-for-write buffer-file-coding-system))
@@ -329,7 +380,7 @@ is automatically removed when the Info file is created.  The original
 Texinfo source buffer is not changed.
 
 Non-nil argument (prefix, if interactive) means don't split the file
-if large.  You can use Info-split to do this manually."
+if large.  You can use `Info-split' to do this manually."
   (interactive "P")
   (let ((temp-buffer (concat  "*--" (buffer-name) "--temporary-buffer*" )))
     (message "First updating nodes and menus, then creating Info file.")
@@ -764,64 +815,6 @@ commands."
               (setq count (1+ count)))
             (kill-word 1)
             (insert (symbol-name new-level))))))))))
-
-(defvar texinfo-raisesections-alist
-  '((@chapter . @chapter)             ; Cannot go higher
-    (@unnumbered . @unnumbered)
-    (@centerchap . @unnumbered)
-
-    (@majorheading . @majorheading)
-    (@chapheading . @chapheading)
-    (@appendix . @appendix)
-
-    (@section . @chapter)
-    (@unnumberedsec . @unnumbered)
-    (@heading . @chapheading)
-    (@appendixsec . @appendix)
-
-    (@subsection . @section)
-    (@unnumberedsubsec . @unnumberedsec)
-    (@subheading . @heading)
-    (@appendixsubsec . @appendixsec)
-
-    (@subsubsection . @subsection)
-    (@unnumberedsubsubsec . @unnumberedsubsec)
-    (@subsubheading . @subheading)
-    (@appendixsubsubsec . @appendixsubsec))
-  "*An alist of next higher levels for chapters, sections. etc.
-For example, section to chapter, subsection to section.
-Used by `texinfo-raise-lower-sections'.
-The keys specify types of section; the values correspond to the next
-higher types.")
-
-(defvar texinfo-lowersections-alist
-  '((@chapter . @section)
-    (@unnumbered . @unnumberedsec)
-    (@centerchap . @unnumberedsec)
-    (@majorheading . @heading)
-    (@chapheading . @heading)
-    (@appendix . @appendixsec)
-
-    (@section . @subsection)
-    (@unnumberedsec . @unnumberedsubsec)
-    (@heading . @subheading)
-    (@appendixsec . @appendixsubsec)
-
-    (@subsection . @subsubsection)
-    (@unnumberedsubsec . @unnumberedsubsubsec)
-    (@subheading . @subsubheading)
-    (@appendixsubsec . @appendixsubsubsec)
-
-    (@subsubsection . @subsubsection) ; Cannot go lower.
-    (@unnumberedsubsubsec . @unnumberedsubsubsec)
-    (@subsubheading . @subsubheading)
-    (@appendixsubsubsec . @appendixsubsubsec))
-  "*An alist of next lower levels for chapters, sections. etc.
-For example, chapter to section, section to subsection.
-Used by `texinfo-raise-lower-sections'.
-The keys specify types of section; the values correspond to the next
-lower types.")
-
 \f
 ;;; Perform those texinfo-to-info conversions that apply to the whole input
 ;;; uniformly.
@@ -1077,8 +1070,8 @@ Leave point after argument."
       (forward-char -1)
       (skip-chars-backward " ")
       (setq end (point))
-      (setq args (cons (if (> end beg) (buffer-substring-no-properties beg end))
-                       args))
+      (push (if (> end beg) (buffer-substring-no-properties beg end))
+            args)
       (goto-char next)
       (skip-chars-forward " "))
     (if (eolp) (forward-char 1))
@@ -1110,8 +1103,8 @@ Leave point after argument."
              (goto-char beg)
              (while (search-forward "\n" end t)
                (replace-match " "))))
-      (setq args (cons (if (> end beg) (buffer-substring-no-properties beg end))
-                       args))
+      (push (if (> end beg) (buffer-substring-no-properties beg end))
+            args)
       (goto-char next))
     ;;(if (eolp) (forward-char 1))
     (setq texinfo-command-end (point))
@@ -1140,7 +1133,7 @@ Leave point after argument."
                (re-search-forward "[\n ]")
                (forward-char -1)
                (setq end (point))))
-        (setq args (cons (buffer-substring-no-properties beg end) args))
+        (push (buffer-substring-no-properties beg end) args)
         (skip-chars-forward " "))
       (forward-char 1)
       (nreverse args))))
@@ -1184,7 +1177,7 @@ Leave point after argument."
     (let ((tem (if texinfo-fold-nodename-case (downcase name) name)))
       (if (assoc tem texinfo-node-names)
           (error "Duplicate node name: %s" name)
-        (setq texinfo-node-names (cons (list tem) texinfo-node-names))))
+        (push (list tem) texinfo-node-names)))
     (setq texinfo-footnote-number 0)
     ;; insert "\n\^_" unconditionally since this is what info is looking for
     (insert "\n\^_\nFile: " texinfo-format-filename
@@ -1494,8 +1487,6 @@ If used within a line, follow `@br' with braces."
 Argument is either end or separate."
   (setq texinfo-footnote-style (texinfo-parse-arg-discard)))
 
-(defvar texinfo-footnote-number)
-
 (put 'footnote 'texinfo-format 'texinfo-format-footnote)
 (defun texinfo-format-footnote ()
   "Format a footnote in either end of node or separate node style.
@@ -1601,9 +1592,8 @@ Used by @refill indenting command to avoid indenting within lists, etc.")
 
 (defun texinfo-push-stack (check arg)
   (setq texinfo-stack-depth (1+ texinfo-stack-depth))
-  (setq texinfo-stack
-        (cons (list check arg texinfo-command-start)
-              texinfo-stack)))
+  (push (list check arg texinfo-command-start)
+        texinfo-stack))
 
 (defun texinfo-pop-stack (check)
   (setq texinfo-stack-depth (1- texinfo-stack-depth))
@@ -1974,7 +1964,7 @@ Or else:
     @end multitable
 
 where the fractions specify the width of each column as a percent
-of the current width of the text (i.e., of the fill-column).
+of the current width of the text (i.e., of the `fill-column').
 
 Long lines of text are filled within columns.
 
@@ -2028,12 +2018,10 @@ commands that are defined in texinfo.tex for printed output.
      ((looking-at "@columnfractions")
       (forward-word 1)
       (while (not (eolp))
-        (setq texinfo-multitable-width-list
-              (cons
-               (truncate
-                (1-
-                 (* fill-column (read (get-buffer (current-buffer))))))
-               texinfo-multitable-width-list))))
+        (push (truncate
+               (1-
+                (* fill-column (read (get-buffer (current-buffer))))))
+              texinfo-multitable-width-list)))
      ;;
      ;; Case 2: {Column 1 template} {Column 2} {Column 3 example}
      ((looking-at "{")
@@ -2044,9 +2032,8 @@ commands that are defined in texinfo.tex for printed output.
                  (end-of-template
                  ;; forward-sexp works with braces in Texinfo mode
                   (progn (forward-sexp 1) (1- (point)))))
-            (setq texinfo-multitable-width-list
-                  (cons (- end-of-template start-of-template)
-                        texinfo-multitable-width-list))
+            (push (- end-of-template start-of-template)
+                  texinfo-multitable-width-list)
             ;; Remove carriage return from within a template, if any.
             ;; This helps those those who want to use more than
             ;; one line's worth of words in @multitable line.
@@ -2417,13 +2404,11 @@ Use only the FILENAME arg; for Info, ignore the other arguments to @image."
          (beginning-delimiter (or (nth 1 args) ""))
          (end-delimiter (or (nth 2 args) "")))
     (texinfo-discard-command)
-    (setq texinfo-enclosure-list
-        (cons
-         (list command-name
-               (list
-                beginning-delimiter
-                end-delimiter))
-         texinfo-enclosure-list))))
+    (push (list command-name
+                (list
+                 beginning-delimiter
+                 end-delimiter))
+          texinfo-enclosure-list)))
 
 \f
 ;;; @alias
@@ -2436,12 +2421,10 @@ Use only the FILENAME arg; for Info, ignore the other arguments to @image."
     (save-excursion (end-of-line) (setq texinfo-command-end (point)))
     (if (not (looking-at "\\([^=]+\\)=\\(.*\\)"))
        (error "Invalid alias command")
-      (setq texinfo-alias-list
-           (cons
-            (cons
-             (match-string-no-properties 1)
-             (match-string-no-properties 2))
-            texinfo-alias-list))
+      (push (cons
+             (match-string-no-properties 1)
+             (match-string-no-properties 2))
+            texinfo-alias-list)
       (texinfo-discard-command))
     )
   )
@@ -2570,8 +2553,7 @@ If used within a line, follow `@bullet' with braces."
    "lisp\\|"
    "smalllisp"
    "\\)")
-  "Regexp specifying environments in which @kbd does not put `...'
-  around argument.")
+  "Regexp matching environments in which @kbd does not put `...' around arg.")
 
 (defvar texinfo-format-kbd-end-regexp
   (concat
@@ -2584,7 +2566,7 @@ If used within a line, follow `@bullet' with braces."
    "smalllisp"
    "\\)")
   "Regexp specifying end of environments in which @kbd does not put `...'
-  around argument. (See `texinfo-format-kbd-regexp')")
+around argument. (See `texinfo-format-kbd-regexp')")
 
 (put 'kbd 'texinfo-format 'texinfo-format-kbd)
 (defun texinfo-format-kbd ()
@@ -2793,8 +2775,8 @@ If used within a line, follow `@minus' with braces."
 \f
 ;;; Refilling and indenting:  @refill, @paragraphindent, @noindent
 
-;;; Indent only those paragraphs that are refilled as a result of an
-;;; @refill command.
+;; Indent only those paragraphs that are refilled as a result of an
+;; @refill command.
 
 ;;    * If the value is `asis', do not change the existing indentation at
 ;;      the starts of paragraphs.
@@ -2804,8 +2786,8 @@ If used within a line, follow `@minus' with braces."
 ;;    * If the value is greater than zero, indent each paragraph by that
 ;;      number of spaces.
 
-;;; But do not refill paragraphs with an @refill command that are
-;;; preceded by @noindent or are part of a table, list, or deffn.
+;; But do not refill paragraphs with an @refill command that are
+;; preceded by @noindent or are part of a table, list, or deffn.
 
 (defvar texinfo-paragraph-indent "asis"
   "Number of spaces for @refill to indent a paragraph; else to leave as is.")
@@ -2822,7 +2804,7 @@ Default is to leave the number of spaces as is."
 
 (put 'refill 'texinfo-format 'texinfo-format-refill)
 (defun texinfo-format-refill ()
-  "Refill paragraph. Also, indent first line as set by @paragraphindent.
+  "Refill paragraph.  Also, indent first line as set by @paragraphindent.
 Default is to leave paragraph indentation as is."
   (texinfo-discard-command)
   (let ((position (point-marker)))
@@ -2941,11 +2923,9 @@ Default is to leave paragraph indentation as is."
 
     ;; eg: "aa" . texinfo-aaindex
     (or (assoc index-name texinfo-indexvar-alist)
-        (setq texinfo-indexvar-alist
-              (cons
-               (cons index-name
-                     index-alist-name)
-               texinfo-indexvar-alist)))
+        (push (cons index-name
+                    index-alist-name)
+              texinfo-indexvar-alist))
 
     (fset index-formatting-command
           (list 'lambda 'nil
@@ -4024,7 +4004,7 @@ The command  `@value{foo}'  expands to the value."
 (put 'ifset 'texinfo-end 'texinfo-discard-command)
 (put 'ifset 'texinfo-format 'texinfo-if-set)
 (defun texinfo-if-set ()
-  "If set, continue formatting; else do not format region up to @end ifset"
+  "If set, continue formatting; else do not format region up to @end ifset."
   (let ((arg (texinfo-parse-arg-discard)))
     (cond
      ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp)
@@ -4045,7 +4025,7 @@ The command  `@value{foo}'  expands to the value."
 (put 'ifclear 'texinfo-end 'texinfo-discard-command)
 (put 'ifclear 'texinfo-format 'texinfo-if-clear)
 (defun texinfo-if-clear ()
-  "If clear, continue formatting; if set, do not format up to @end ifset"
+  "If clear, continue formatting; if set, do not format up to @end ifset."
   (let ((arg (texinfo-parse-arg-discard)))
     (cond
      ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp)
@@ -4291,7 +4271,7 @@ the @ifeq command."
 ;;; Batch formatting
 
 (defun batch-texinfo-format ()
-  "Runs  texinfo-format-buffer  on the files remaining on the command line.
+  "Run `texinfo-format-buffer' on the files remaining on the command line.
 Must be used only with -batch, and kills Emacs on completion.
 Each file will be processed even if an error occurred previously.
 For example, invoke
@@ -4317,8 +4297,8 @@ For example, invoke
                      (nconc (directory-files file)
                             (cdr command-line-args-left))))
               (t
-               (setq files (cons file files)
-                     command-line-args-left (cdr command-line-args-left)))))
+               (push file files)
+               (setq command-line-args-left (cdr command-line-args-left)))))
       (while files
         (setq file (car files)
               files (cdr files))
@@ -4354,5 +4334,5 @@ For example, invoke
 ;;; Place `provide' at end of file.
 (provide 'texinfmt)
 
-;;; arch-tag: 1e8d9a2d-bca0-40a0-ac6c-dab01bc6f725
+;; arch-tag: 1e8d9a2d-bca0-40a0-ac6c-dab01bc6f725
 ;;; texinfmt.el ends here
index 038345e17bdf94a100bd93bc86709e121d3ef03e..004e57bc21a2dfcaa47179afeef5fce952d87051 100644 (file)
 
 ;;;###autoload
 (defcustom texinfo-open-quote "``"
-  "*String inserted by typing \\[texinfo-insert-quote] to open a quotation."
+  "String inserted by typing \\[texinfo-insert-quote] to open a quotation."
   :type 'string
   :group 'texinfo)
 
 ;;;###autoload
 (defcustom texinfo-close-quote "''"
-  "*String inserted by typing \\[texinfo-insert-quote] to close a quotation."
+  "String inserted by typing \\[texinfo-insert-quote] to close a quotation."
   :type 'string
   :group 'texinfo)
 
@@ -296,21 +296,19 @@ chapter."
 
 ;;; Syntax table
 
-(defvar texinfo-mode-syntax-table nil)
-
-(if texinfo-mode-syntax-table
-    nil
-  (setq texinfo-mode-syntax-table (make-syntax-table))
-  (modify-syntax-entry ?\" "." texinfo-mode-syntax-table)
-  (modify-syntax-entry ?\\ "." texinfo-mode-syntax-table)
-  (modify-syntax-entry ?@ "\\" texinfo-mode-syntax-table)
-  (modify-syntax-entry ?\^q "\\" texinfo-mode-syntax-table)
-  (modify-syntax-entry ?\[ "(]" texinfo-mode-syntax-table)
-  (modify-syntax-entry ?\] ")[" texinfo-mode-syntax-table)
-  (modify-syntax-entry ?{ "(}" texinfo-mode-syntax-table)
-  (modify-syntax-entry ?} "){" texinfo-mode-syntax-table)
-  (modify-syntax-entry ?\n ">" texinfo-mode-syntax-table)
-  (modify-syntax-entry ?\' "w" texinfo-mode-syntax-table))
+(defvar texinfo-mode-syntax-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\" "." st)
+    (modify-syntax-entry ?\\ "." st)
+    (modify-syntax-entry ?@ "\\" st)
+    (modify-syntax-entry ?\^q "\\" st)
+    (modify-syntax-entry ?\[ "(]" st)
+    (modify-syntax-entry ?\] ")[" st)
+    (modify-syntax-entry ?{ "(}" st)
+    (modify-syntax-entry ?} "){" st)
+    (modify-syntax-entry ?\n ">" st)
+    (modify-syntax-entry ?\' "w" st)
+    st))
 
 ;; Written by Wolfgang Bangerth <zcg51122@rpool1.rus.uni-stuttgart.de>
 ;; To override this example, set either `imenu-generic-expression'
@@ -399,7 +397,6 @@ Subexpression 1 is what goes into the corresponding `@end' statement.")
 
 \f
 ;;; Keybindings
-(defvar texinfo-mode-map nil)
 
 ;;; Keys common both to Texinfo mode and to TeX shell.
 
@@ -420,65 +417,65 @@ Subexpression 1 is what goes into the corresponding `@end' statement.")
 ;; Mode documentation displays commands in reverse order
 ;; from how they are listed in the texinfo-mode-map.
 
-(if texinfo-mode-map
-    nil
-  (setq texinfo-mode-map (make-sparse-keymap))
-
-  ;; bindings for `texnfo-tex.el'
-  (texinfo-define-common-keys texinfo-mode-map)
-
-  (define-key texinfo-mode-map "\"" 'texinfo-insert-quote)
-
-  ;; bindings for `makeinfo.el'
-  (define-key texinfo-mode-map "\C-c\C-m\C-k" 'kill-compilation)
-  (define-key texinfo-mode-map "\C-c\C-m\C-l"
-    'makeinfo-recenter-compilation-buffer)
-  (define-key texinfo-mode-map "\C-c\C-m\C-r" 'makeinfo-region)
-  (define-key texinfo-mode-map "\C-c\C-m\C-b" 'makeinfo-buffer)
-
-  ;; bindings for `texinfmt.el'
-  (define-key texinfo-mode-map "\C-c\C-e\C-r"    'texinfo-format-region)
-  (define-key texinfo-mode-map "\C-c\C-e\C-b"    'texinfo-format-buffer)
-
-  ;; AUCTeX-like bindings
-  (define-key texinfo-mode-map "\e\r"          'texinfo-insert-@item)
-
-  ;; bindings for updating nodes and menus
-
-  (define-key texinfo-mode-map "\C-c\C-um"   'texinfo-master-menu)
-
-  (define-key texinfo-mode-map "\C-c\C-u\C-m"   'texinfo-make-menu)
-  (define-key texinfo-mode-map "\C-c\C-u\C-n"   'texinfo-update-node)
-  (define-key texinfo-mode-map "\C-c\C-u\C-e"   'texinfo-every-node-update)
-  (define-key texinfo-mode-map "\C-c\C-u\C-a"   'texinfo-all-menus-update)
-
-  (define-key texinfo-mode-map "\C-c\C-s"     'texinfo-show-structure)
-
-  (define-key texinfo-mode-map "\C-c}"          'up-list)
-  (define-key texinfo-mode-map "\C-c]"          'up-list)
-  (define-key texinfo-mode-map "\C-c{"         'texinfo-insert-braces)
-
-  ;; bindings for inserting strings
-  (define-key texinfo-mode-map "\C-c\C-o"     'texinfo-insert-block)
-  (define-key texinfo-mode-map "\C-c\C-c\C-d" 'texinfo-start-menu-description)
-  (define-key texinfo-mode-map "\C-c\C-c\C-s" 'texinfo-insert-@strong)
-  (define-key texinfo-mode-map "\C-c\C-c\C-e" 'texinfo-insert-@emph)
-
-  (define-key texinfo-mode-map "\C-c\C-cv"    'texinfo-insert-@var)
-  (define-key texinfo-mode-map "\C-c\C-cu"    'texinfo-insert-@uref)
-  (define-key texinfo-mode-map "\C-c\C-ct"    'texinfo-insert-@table)
-  (define-key texinfo-mode-map "\C-c\C-cs"    'texinfo-insert-@samp)
-  (define-key texinfo-mode-map "\C-c\C-cq"    'texinfo-insert-@quotation)
-  (define-key texinfo-mode-map "\C-c\C-co"    'texinfo-insert-@noindent)
-  (define-key texinfo-mode-map "\C-c\C-cn"    'texinfo-insert-@node)
-  (define-key texinfo-mode-map "\C-c\C-cm"    'texinfo-insert-@email)
-  (define-key texinfo-mode-map "\C-c\C-ck"    'texinfo-insert-@kbd)
-  (define-key texinfo-mode-map "\C-c\C-ci"    'texinfo-insert-@item)
-  (define-key texinfo-mode-map "\C-c\C-cf"    'texinfo-insert-@file)
-  (define-key texinfo-mode-map "\C-c\C-cx"    'texinfo-insert-@example)
-  (define-key texinfo-mode-map "\C-c\C-ce"    'texinfo-insert-@end)
-  (define-key texinfo-mode-map "\C-c\C-cd"    'texinfo-insert-@dfn)
-  (define-key texinfo-mode-map "\C-c\C-cc"    'texinfo-insert-@code))
+(defvar texinfo-mode-map
+  (let ((map (make-sparse-keymap)))
+
+    ;; bindings for `texnfo-tex.el'
+    (texinfo-define-common-keys map)
+
+    (define-key map "\"" 'texinfo-insert-quote)
+
+    ;; bindings for `makeinfo.el'
+    (define-key map "\C-c\C-m\C-k" 'kill-compilation)
+    (define-key map "\C-c\C-m\C-l"
+      'makeinfo-recenter-compilation-buffer)
+    (define-key map "\C-c\C-m\C-r" 'makeinfo-region)
+    (define-key map "\C-c\C-m\C-b" 'makeinfo-buffer)
+
+    ;; bindings for `texinfmt.el'
+    (define-key map "\C-c\C-e\C-r"    'texinfo-format-region)
+    (define-key map "\C-c\C-e\C-b"    'texinfo-format-buffer)
+
+    ;; AUCTeX-like bindings
+    (define-key map "\e\r"             'texinfo-insert-@item)
+
+    ;; bindings for updating nodes and menus
+
+    (define-key map "\C-c\C-um"   'texinfo-master-menu)
+
+    (define-key map "\C-c\C-u\C-m"   'texinfo-make-menu)
+    (define-key map "\C-c\C-u\C-n"   'texinfo-update-node)
+    (define-key map "\C-c\C-u\C-e"   'texinfo-every-node-update)
+    (define-key map "\C-c\C-u\C-a"   'texinfo-all-menus-update)
+
+    (define-key map "\C-c\C-s"     'texinfo-show-structure)
+
+    (define-key map "\C-c}"          'up-list)
+    (define-key map "\C-c]"          'up-list)
+    (define-key map "\C-c{"            'texinfo-insert-braces)
+
+    ;; bindings for inserting strings
+    (define-key map "\C-c\C-o"     'texinfo-insert-block)
+    (define-key map "\C-c\C-c\C-d" 'texinfo-start-menu-description)
+    (define-key map "\C-c\C-c\C-s" 'texinfo-insert-@strong)
+    (define-key map "\C-c\C-c\C-e" 'texinfo-insert-@emph)
+
+    (define-key map "\C-c\C-cv"    'texinfo-insert-@var)
+    (define-key map "\C-c\C-cu"    'texinfo-insert-@uref)
+    (define-key map "\C-c\C-ct"    'texinfo-insert-@table)
+    (define-key map "\C-c\C-cs"    'texinfo-insert-@samp)
+    (define-key map "\C-c\C-cq"    'texinfo-insert-@quotation)
+    (define-key map "\C-c\C-co"    'texinfo-insert-@noindent)
+    (define-key map "\C-c\C-cn"    'texinfo-insert-@node)
+    (define-key map "\C-c\C-cm"    'texinfo-insert-@email)
+    (define-key map "\C-c\C-ck"    'texinfo-insert-@kbd)
+    (define-key map "\C-c\C-ci"    'texinfo-insert-@item)
+    (define-key map "\C-c\C-cf"    'texinfo-insert-@file)
+    (define-key map "\C-c\C-cx"    'texinfo-insert-@example)
+    (define-key map "\C-c\C-ce"    'texinfo-insert-@end)
+    (define-key map "\C-c\C-cd"    'texinfo-insert-@dfn)
+    (define-key map "\C-c\C-cc"    'texinfo-insert-@code)
+    map))
 
 (easy-menu-define texinfo-mode-menu
   texinfo-mode-map
@@ -947,22 +944,22 @@ to jump to the corresponding spot in the Texinfo source file."
 ;;; The  tex  and  print  function definitions:
 
 (defcustom texinfo-texi2dvi-command "texi2dvi"
-  "*Command used by `texinfo-tex-buffer' to run TeX and texindex on a buffer."
+  "Command used by `texinfo-tex-buffer' to run TeX and texindex on a buffer."
   :type 'string
   :group 'texinfo)
 
 (defcustom texinfo-tex-command "tex"
-  "*Command used by `texinfo-tex-region' to run TeX on a region."
+  "Command used by `texinfo-tex-region' to run TeX on a region."
   :type 'string
   :group 'texinfo)
 
 (defcustom texinfo-texindex-command "texindex"
-  "*Command used by `texinfo-texindex' to sort unsorted index files."
+  "Command used by `texinfo-texindex' to sort unsorted index files."
   :type 'string
   :group 'texinfo)
 
 (defcustom texinfo-delete-from-print-queue-command "lprm"
-  "*Command string used to delete a job from the line printer queue.
+  "Command string used to delete a job from the line printer queue.
 Command is used by \\[texinfo-delete-from-print-queue] based on
 number provided by a previous \\[tex-show-print-queue]
 command."
index 35b60e4d3bd8938eb89910aba607531139d3550f..ce26344af8cb7537b6c23024172f42e59a05f2e9 100644 (file)
@@ -67,7 +67,7 @@
   "Determine the start and end buffer locations for the THING at point.
 THING is a symbol which specifies the kind of syntactic entity you want.
 Possibilities include `symbol', `list', `sexp', `defun', `filename', `url',
-`word', `sentence', `whitespace', `line', `page' and others.
+`email', `word', `sentence', `whitespace', `line', `page' and others.
 
 See the file `thingatpt.el' for documentation on how to define
 a symbol as a valid THING.
@@ -124,7 +124,7 @@ of the textual entity that was found."
   "Return the THING at point.
 THING is a symbol which specifies the kind of syntactic entity you want.
 Possibilities include `symbol', `list', `sexp', `defun', `filename', `url',
-`word', `sentence', `whitespace', `line', `page' and others.
+`email', `word', `sentence', `whitespace', `line', `page' and others.
 
 See the file `thingatpt.el' for documentation on how to define
 a symbol as a valid THING."
@@ -340,6 +340,33 @@ point."
              (goto-char (car bounds))
            (error "No URL here")))))
 
+;;   Email addresses
+(defvar thing-at-point-email-regexp
+  "<?[-+_.~a-zA-Z][-+_.~:a-zA-Z0-9]*@[-.a-zA-Z0-9]+>?"
+  "A regular expression probably matching an email address.
+This does not match the real name portion, only the address, optionally
+with angle brackets.")
+
+;; Haven't set 'forward-op on 'email nor defined 'forward-email' because
+;; not sure they're actually needed, and URL seems to skip them too.
+;; Note that (end-of-thing 'email) and (beginning-of-thing 'email)
+;; work automagically, though.
+
+(put 'email 'bounds-of-thing-at-point
+     (lambda ()
+       (let ((thing (thing-at-point-looking-at thing-at-point-email-regexp)))
+         (if thing
+             (let ((beginning (match-beginning 0))
+                   (end (match-end 0)))
+               (cons beginning end))))))
+
+(put 'email 'thing-at-point
+     (lambda ()
+       (let ((boundary-pair (bounds-of-thing-at-point 'email)))
+         (if boundary-pair
+             (buffer-substring-no-properties
+              (car boundary-pair) (cdr boundary-pair))))))
+
 ;;  Whitespace
 
 (defun forward-whitespace (arg)
index 6aa81268f1228aa105e251616c3ec802ce0b1bd9..9d8b289cbe99da6970b66dc9dbf7093029ce17dc 100644 (file)
@@ -67,7 +67,7 @@
   :version "22.1"
   :group 'multimedia)
 
-(defcustom thumbs-thumbsdir "~/.emacs.d/thumbs"
+(defcustom thumbs-thumbsdir (concat user-emacs-directory "thumbs")
   "*Directory to store thumbnails."
   :type 'directory
   :group 'thumbs)
index 2b6a671c6bd4e2d34ef2d587b29d920b1cc1cdf5..8bc14974315917686179fe34efc39e8bf5ec34b7 100644 (file)
 ;;; Commentary:
 
 ;; Facilities to display current time/date and a new-mail indicator
-;; in the Emacs mode line.  The single entry point is `display-time'.
+;; in the Emacs mode line.  The entry point is `display-time'.
+
+;; Display time world in a buffer, the entry point is
+;; `display-time-world'.
 
 ;;; Code:
 
@@ -109,6 +112,51 @@ A value of nil means 1 <= hh <= 12, and an AM/PM suffix is used."
    "Time when mail file's file system was recorded to be down.
 If that file system seems to be up, the value is nil.")
 
+(defcustom display-time-world-list
+  '(("America/Los_Angeles" "Seattle")
+    ("America/New_York" "New York")
+    ("Europe/London" "London")
+    ("Europe/Paris" "Paris")
+    ("Asia/Calcutta" "Bangalore")
+    ("Asia/Tokyo" "Tokyo"))
+  "Alist specifying time zones and places for `display-time-world'.
+Each element has the form (TIMEZONE LABEL).
+TIMEZONE should be a valid argument for `set-time-zone-rule'.
+LABEL is a string to display to label that zone's time."
+  :group 'display-time
+  :type '(repeat (list string string))
+  :version "23.1")
+
+(defcustom display-time-world-time-format "%A %m %B %R %Z"
+  "Format of the time displayed, see `format-time-string'."
+  :group 'display-time
+  :type 'string
+  :version "23.1")
+
+(defcustom display-time-world-buffer-name "*wclock*"
+  "Name of the wclock buffer."
+  :group 'display-time
+  :type 'string
+  :version "23.1")
+
+(defcustom display-time-world-timer-enable t
+  "If non-nil, a timer will update the world clock."
+  :group 'display-time
+  :type 'boolean
+  :version "23.1")
+
+(defcustom display-time-world-timer-second 60
+  "Interval in seconds for updating the world clock."
+  :group 'display-time
+  :type 'integer
+  :version "23.1")
+
+(defvar display-time-world-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "q" 'kill-this-buffer)
+    map)
+  "Keymap of Display Time World mode")
+
 ;;;###autoload
 (defun display-time ()
   "Enable display of time, load level, and mail flag in mode lines.
@@ -393,6 +441,69 @@ This runs the normal hook `display-time-hook' after each update."
     (remove-hook 'rmail-after-get-new-mail-hook
                 'display-time-event-handler)))
 
+
+(defun display-time-world-mode ()
+  "Major mode for buffer that displays times in various time zones.
+See `display-time-world'."
+  (interactive)
+  (kill-all-local-variables)
+  (setq
+   major-mode 'display-time-world-mode
+   mode-name "World clock")
+  (use-local-map display-time-world-mode-map))
+
+(defun display-time-world-display (alist)
+  "Replace current buffer text with times in various zones, based on ALIST."
+  (let ((inhibit-read-only t)
+       (buffer-undo-list t))
+    (erase-buffer)
+    (let ((max-width 0)
+         (result ()))
+      (unwind-protect
+         (dolist (zone alist)
+           (let* ((label (cadr zone))
+                  (width (string-width label)))
+             (set-time-zone-rule (car zone))
+             (setq result
+                   (append result
+                           (list
+                            label width
+                            (format-time-string display-time-world-time-format))))
+             (when (> width max-width)
+               (setq max-width width))))
+       (set-time-zone-rule nil))
+      (while result
+       (insert (pop result)
+               (make-string (1+ (- max-width (pop result))) ?\s)
+               (pop result) "\n")))
+    (delete-backward-char 1)))
+
+;;;###autoload
+(defun display-time-world ()
+  "Enable updating display of times in various time zones.
+`display-time-world-list' specifies the zones.
+To turn off the world time display, go to that window and type `q'."
+  (interactive)
+  (when (and display-time-world-timer-enable
+             (not (get-buffer display-time-world-buffer-name)))
+    (run-at-time t display-time-world-timer-second 'display-time-world-timer))
+  (with-current-buffer (get-buffer-create display-time-world-buffer-name)
+    (display-time-world-display display-time-world-list))
+  (pop-to-buffer display-time-world-buffer-name)
+  (fit-window-to-buffer)
+  (display-time-world-mode))
+
+(defun display-time-world-timer ()
+  (if (get-buffer display-time-world-buffer-name)
+      (with-current-buffer (get-buffer display-time-world-buffer-name)
+        (display-time-world-display display-time-world-list))
+    ;; cancel timer
+    (let ((list timer-list))
+      (while list
+        (let ((elt (pop list)))
+          (when (equal (symbol-name (aref elt 5)) "display-time-world-timer")
+            (cancel-timer elt)))))))
+
 (provide 'time)
 
 ;;; arch-tag: b9c1623f-b5cb-48e4-b650-482a4d23c5a6
index b6b5e46aa27564e3aa69a85359fc6238c8f03ea9..6deed45bf5c1cb3e1f48f4f5fd1b04c4416e3038 100644 (file)
@@ -47,7 +47,6 @@
 (defvar tmm-table-undef)
 
 ;;;###autoload (define-key global-map "\M-`" 'tmm-menubar)
-;;;###autoload (define-key global-map [f10] 'tmm-menubar)
 ;;;###autoload (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
 
 ;;;###autoload
@@ -101,7 +100,7 @@ See the documentation for `tmm-prompt'."
   (tmm-menubar (car (posn-x-y (event-start event)))))
 
 (defcustom tmm-mid-prompt "==>"
-  "*String to insert between shortcut and menu item.
+  "String to insert between shortcut and menu item.
 If nil, there will be no shortcuts. It should not consist only of spaces,
 or else the correct item might not be found in the `*Completions*' buffer."
   :type 'string
@@ -116,14 +115,14 @@ Alternatively, you can use Up/Down keys (or your History keys) to change
 the item in the minibuffer, and press RET when you are done, or press the
 marked letters to pick up your choice.  Type C-g or ESC ESC ESC to cancel.
 "
-  "*Help text to insert on the top of the completion buffer.
+  "Help text to insert on the top of the completion buffer.
 To save space, you can set this to nil,
 in which case the standard introduction text is deleted too."
   :type '(choice string (const nil))
   :group 'tmm)
 
 (defcustom tmm-shortcut-style '(downcase upcase)
-  "*What letters to use as menu shortcuts.
+  "What letters to use as menu shortcuts.
 Must be either one of the symbols `downcase' or `upcase',
 or else a list of the two in the order you prefer."
   :type '(choice (const downcase)
@@ -132,7 +131,7 @@ or else a list of the two in the order you prefer."
   :group 'tmm)
 
 (defcustom tmm-shortcut-words 2
-  "*How many successive words to try for shortcuts, nil means all.
+  "How many successive words to try for shortcuts, nil means all.
 If you use only one of `downcase' or `upcase' for `tmm-shortcut-style',
 specify nil for this variable."
   :type '(choice integer (const nil))
@@ -232,13 +231,11 @@ Its value should be an event that has a binding in MENU."
                            tmm-km-list nil t nil
                            (cons 'history
                                  (- (* 2 history-len) index-of-default))))
-                  (save-excursion
-                    (remove-hook 'minibuffer-setup-hook 'tmm-add-prompt)
-                    (if (get-buffer "*Completions*")
-                        (progn
-                          (set-buffer "*Completions*")
-                          (use-local-map tmm-old-comp-map)
-                          (bury-buffer (current-buffer))))))))))
+                   (remove-hook 'minibuffer-setup-hook 'tmm-add-prompt)
+                   (if (get-buffer "*Completions*")
+                       (with-current-buffer "*Completions*"
+                         (use-local-map tmm-old-comp-map)
+                         (bury-buffer (current-buffer)))))))))
       (setq choice (cdr (assoc out tmm-km-list)))
       (and (null choice)
           (> (length out) (length tmm-c-prompt))
@@ -566,9 +563,10 @@ of `menu-bar-final-items'."
          ;; Return that keymap.
          bind))))
 
+;; Huh?  What's that about?  --Stef
 (add-hook 'calendar-load-hook (lambda () (require 'cal-menu)))
 
 (provide 'tmm)
 
-;;; arch-tag: e7ddbdb6-4b95-4da3-afbe-ad6063d112f4
+;; arch-tag: e7ddbdb6-4b95-4da3-afbe-ad6063d112f4
 ;;; tmm.el ends here
index 768fee70411f6597e111bd3981324d58022e6b1c..e3635f47fe70241ad237bea8e52e74cd24cc5591 100644 (file)
@@ -55,22 +55,22 @@ conveniently adding tool bar items."
   :group 'mouse
   :group 'frames
   (and (display-images-p)
-       (let ((lines (if tool-bar-mode 1 0)))
-        ;; Alter existing frames...
-        (mapc (lambda (frame)
-                (modify-frame-parameters frame
-                                         (list (cons 'tool-bar-lines lines))))
-              (frame-list))
-        ;; ...and future ones.
-        (let ((elt (assq 'tool-bar-lines default-frame-alist)))
-          (if elt
-              (setcdr elt lines)
-            (add-to-list 'default-frame-alist (cons 'tool-bar-lines lines)))))
+       (modify-all-frames-parameters (list (cons 'tool-bar-lines
+                                                (if tool-bar-mode 1 0))))
        (if (and tool-bar-mode
-               (display-graphic-p)
-               (= 1 (length (default-value 'tool-bar-map)))) ; not yet setup
+               (display-graphic-p))
           (tool-bar-setup))))
 
+;;;###autoload
+;; Used in the Show/Hide menu, to have the toggle reflect the current frame.
+(defun toggle-tool-bar-mode-from-frame (&optional arg)
+  "Toggle tool bar on or off, based on the status of the current frame.
+See `tool-bar-mode' for more information."
+  (interactive (list (or current-prefix-arg 'toggle)))
+  (if (eq arg 'toggle)
+      (tool-bar-mode (if (> (frame-parameter nil 'tool-bar-lines) 0) 0 1))
+    (tool-bar-mode arg)))
+
 ;;;###autoload
 ;; We want to pretend the toolbar by standard is on, as this will make
 ;; customize consider disabling the toolbar a customization, and save
@@ -228,42 +228,47 @@ 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")
-  (tool-bar-add-item-from-menu 'find-file "new")
-  (tool-bar-add-item-from-menu 'menu-find-file-existing "open")
-  (tool-bar-add-item-from-menu 'dired "diropen")
-  (tool-bar-add-item-from-menu 'kill-this-buffer "close")
-  (tool-bar-add-item-from-menu 'save-buffer "save" nil
-                              :visible '(or buffer-file-name
-                                            (not (eq 'special
-                                                     (get major-mode
-                                                          'mode-class)))))
-  (tool-bar-add-item-from-menu 'write-file "saveas" nil
-                              :visible '(or buffer-file-name
-                                            (not (eq 'special
-                                                     (get major-mode
-                                                          'mode-class)))))
-  (tool-bar-add-item-from-menu 'undo "undo" nil
-                              :visible '(not (eq 'special (get major-mode
-                                                               'mode-class))))
-  (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
-                              "cut" nil
-                              :visible '(not (eq 'special (get major-mode
-                                                               'mode-class))))
-  (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
-                              "copy")
-  (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
-                              "paste" nil
-                              :visible '(not (eq 'special (get major-mode
-                                                               'mode-class))))
-  (tool-bar-add-item-from-menu 'nonincremental-search-forward "search")
-  ;;(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.
+(defvar tool-bar-setup nil
+  "t if the tool-bar has been set up by `tool-bar-setup'.")
+
+(defun tool-bar-setup (&optional frame)
+  (unless tool-bar-setup
+    (with-selected-frame (or frame (selected-frame))
+      ;; 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")
+      (tool-bar-add-item-from-menu 'find-file "new")
+      (tool-bar-add-item-from-menu 'menu-find-file-existing "open")
+      (tool-bar-add-item-from-menu 'dired "diropen")
+      (tool-bar-add-item-from-menu 'kill-this-buffer "close")
+      (tool-bar-add-item-from-menu 'save-buffer "save" nil
+                                  :visible '(or buffer-file-name
+                                                (not (eq 'special
+                                                         (get major-mode
+                                                              'mode-class)))))
+      (tool-bar-add-item-from-menu 'write-file "saveas" nil
+                                  :visible '(or buffer-file-name
+                                                (not (eq 'special
+                                                         (get major-mode
+                                                              'mode-class)))))
+      (tool-bar-add-item-from-menu 'undo "undo" nil
+                                  :visible '(not (eq 'special (get major-mode
+                                                                   'mode-class))))
+      (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
+                                  "cut" nil
+                                  :visible '(not (eq 'special (get major-mode
+                                                                   'mode-class))))
+      (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
+                                  "copy")
+      (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
+                                  "paste" nil
+                                  :visible '(not (eq 'special (get major-mode
+                                                                   'mode-class))))
+      (tool-bar-add-item-from-menu 'nonincremental-search-forward "search")
+      ;;(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 'print-buffer "print")
@@ -281,9 +286,9 @@ holds a keymap."
                                (popup-menu menu-bar-help-menu))
                       'help
                       :help "Pop up the Help menu"))
-  )
+  (setq tool-bar-setup t))))
 
-(provide 'tool-bar)
 
+(provide 'tool-bar)
 ;;; arch-tag: 15f30f0a-d0d7-4d50-bbb7-f48fd0c8582f
 ;;; tool-bar.el ends here
index bfa7f42d8ab529c70080dc5b43bdecb070f12c98..26fb0e503f787b17670d8a9617049343f91988ad 100644 (file)
@@ -155,9 +155,9 @@ options:
                           " RET instead."))
               (insert "\n\nWith your current key bindings"
                       " you can use "
-                      (if (string-equal "the menus" where)
+                      (if (string-match "^the .*menus?$" where)
                           ""
-                        "the key ")
+                        "the key")
                       where
                       " to get the function `"
                       (format "%s" db)
@@ -210,14 +210,12 @@ LEFT and RIGHT are the elements to compare."
 (defconst tutorial--default-keys
   ;; On window system, `suspend-emacs' is replaced in the default
   ;; keymap
-  (let* ((suspend-emacs (if window-system
-                            'iconify-or-deiconify-frame
-                          'suspend-emacs))
+  (let* ((suspend-emacs 'suspend-frame)
          (default-keys
            `((ESC-prefix [27])
              (Control-X-prefix [?\C-x])
              (mode-specific-command-prefix [?\C-c])
-             (save-buffers-kill-emacs [?\C-x ?\C-c])
+             (save-buffers-kill-terminal [?\C-x ?\C-c])
 
              ;; * SUMMARY
              (scroll-up [?\C-v])
@@ -293,7 +291,7 @@ LEFT and RIGHT are the elements to compare."
              ;; * MODE LINE
              (describe-mode [?\C-h ?m])
              (set-fill-column [?\C-x ?f])
-             (fill-paragraph [?\M-q])
+             (fill-paragraph-or-region [?\M-q])
 
              ;; * SEARCHING
              (isearch-forward [?\C-s])
@@ -406,7 +404,7 @@ where
   WHERE       is a text describing the key sequences to which DEF-FUN is
               bound now (or, if it is remapped, a key sequence
               for the function it is remapped to)
-  REMARK      is a list with info about rebinding.  It has either of
+  REMARK      is a list with info about rebinding. It has either of
               these formats:
 
                 \(TEXT cua-mode)
@@ -439,15 +437,27 @@ where
                          (if (eq def-fun 'Control-X-prefix)
                              (lookup-key global-map [24])
                            (key-binding key))))
-              (where (where-is-internal (if rem-fun rem-fun def-fun))))
+              (where (where-is-internal (if rem-fun rem-fun def-fun)))
+              cwhere)
 
          (if where
              (progn
-               (setq where (key-description (car where)))
+               (setq cwhere (car where)
+                     where (key-description cwhere))
                (when (and (< 10 (length where))
                           (string= (substring where 0 (length "<menu-bar>"))
                                    "<menu-bar>"))
-                 (setq where "the menus")))
+                 (setq where
+                       (if (and (vectorp cwhere)
+                                (setq cwhere (elt cwhere 1))
+                                (setq cwhere
+                                      (cadr
+                                       (assoc cwhere
+                                              (lookup-key global-map
+                                                          [menu-bar]))))
+                                (stringp cwhere))
+                           (format "the `%s' menu" cwhere)
+                         "the menus"))))
            (setq where ""))
          (setq remark nil)
          (unless
@@ -617,8 +627,7 @@ with some explanatory links."
 
 (defun tutorial--saved-dir ()
   "Directory to which tutorials are saved."
-  (expand-file-name "tutorial"
-                   (if (eq system-type 'ms-dos) "~/_emacs.d/" "~/.emacs.d/")))
+  (expand-file-name "tutorial" user-emacs-directory))
 
 (defun tutorial--saved-file ()
   "File name in which to save tutorials."
@@ -836,7 +845,7 @@ Run the Viper tutorial? "))
               (delete-region (point-min) (point))
               (goto-char tutorial--point-before-chkeys)
               (setq tutorial--point-before-chkeys (point-marker)))
-          (insert-file-contents (expand-file-name filename data-directory))
+          (insert-file-contents (expand-file-name filename tutorial-directory))
           (forward-line)
           (setq tutorial--point-before-chkeys (point-marker)))
 
@@ -921,7 +930,7 @@ See `get-lang-string' for more information.")
 In certain places Emacs can replace a string shown to the user with
 a language specific string.  This function retrieves such strings.
 
-LANG is the language specification.  It should be one of those
+LANG is the language specification. It should be one of those
 strings that can be returned by `read-language-name'.  STRINGID
 is a symbol that specifies the string to retrieve.
 
index f6bfd432a16dee5fcb9910d136e5bd34f1e83c34..8226c65cbb9055ed4eece6ffd3848b1e20c5b654 100644 (file)
@@ -28,7 +28,7 @@
 ;;; Commentary:
 
 ;; Emacs's standard method for making buffer names unique adds <2>, <3>,
-;; etc. to the end of (all but one of) the buffers.  This file replaces
+;; etc.. to the end of (all but one of) the buffers.  This file replaces
 ;; that behavior, for buffers visiting files and dired buffers, with a
 ;; uniquification that adds parts of the file name until the buffer names
 ;; are unique.  For instance, buffers visiting /u/mernst/tmp/Makefile and
@@ -95,7 +95,7 @@
 
 
 (defcustom uniquify-buffer-name-style nil
-  "*If non-nil, buffer names are uniquified with parts of directory name.
+  "If non-nil, buffer names are uniquified with parts of directory name.
 The value determines the buffer name style and is one of `forward',
 `reverse', `post-forward', or `post-forward-angle-brackets'.
 For example, files `/foo/bar/mumble/name' and `/baz/quux/mumble/name'
@@ -104,7 +104,9 @@ would have the following buffer names in the various styles:
   reverse        name\\mumble\\bar  name\\mumble\\quux
   post-forward   name|bar/mumble  name|quux/mumble
   post-forward-angle-brackets   name<bar/mumble>  name<quux/mumble>
-  nil            name  name<2>"
+  nil            name  name<2>
+Of course, the \"mumble\" part may be stripped as well, depending on the setting
+of `uniquify-strip-common-suffix'."
   :type '(radio (const forward)
                (const reverse)
                (const post-forward)
@@ -119,7 +121,7 @@ would have the following buffer names in the various styles:
   :group 'uniquify)
 
 (defcustom uniquify-ask-about-buffer-names-p nil
-  "*If non-nil, permit user to choose names for buffers with same base file.
+  "If non-nil, permit user to choose names for buffers with same base file.
 If the user chooses to name a buffer, uniquification is preempted and no
 other buffer names are changed."
   :type 'boolean
@@ -127,7 +129,7 @@ other buffer names are changed."
 
 ;; The default value matches certain Gnus buffers.
 (defcustom uniquify-ignore-buffers-re nil
-  "*Regular expression matching buffer names that should not be uniquified.
+  "Regular expression matching buffer names that should not be uniquified.
 For instance, set this to \"^draft-[0-9]+$\" to avoid having uniquify rename
 draft buffers even if `uniquify-after-kill-buffer-p' is non-nil and the
 visited file name isn't the same as that of the buffer."
@@ -135,12 +137,12 @@ visited file name isn't the same as that of the buffer."
   :group 'uniquify)
 
 (defcustom uniquify-min-dir-content 0
-  "*Minimum number of directory name components included in buffer name."
+  "Minimum number of directory name components included in buffer name."
   :type 'integer
   :group 'uniquify)
 
 (defcustom uniquify-separator nil
-  "*String separator for buffer name components.
+  "String separator for buffer name components.
 When `uniquify-buffer-name-style' is `post-forward', separates
 base file name from directory part in buffer names (default \"|\").
 When `uniquify-buffer-name-style' is `reverse', separates all
@@ -149,7 +151,7 @@ file name components (default \"\\\")."
   :group 'uniquify)
 
 (defcustom uniquify-trailing-separator-p nil
-  "*If non-nil, add a file name separator to dired buffer names.
+  "If non-nil, add a file name separator to dired buffer names.
 If `uniquify-buffer-name-style' is `forward', add the separator at the end;
 if it is `reverse', add the separator at the beginning; otherwise, this
 variable is ignored."
@@ -263,7 +265,7 @@ in `uniquify-list-buffers-directory-modes', otherwise returns nil."
           (directory-file-name filename))))))))
 
 (defun uniquify-rerationalize-w/o-cb (fix-list)
-  "Re-rationalize the buffers in FIX-LIST, but ignoring current-buffer."
+  "Re-rationalize the buffers in FIX-LIST, but ignoring `current-buffer'."
   (let ((new-fix-list nil))
     (dolist (item fix-list)
       (let ((buf (uniquify-item-buffer item)))
index 146d224435b93484372c834d2cada94f8ff92f32..8f3979debcf83644de6eccd78f030d1adbc681ca 100644 (file)
        (url-set-host, url-set-port, url-set-filename, url-set-target)
        (url-set-attributes, url-set-full): Change macros to defuns.
 
+2007-09-26  Juanma Barranquero  <lekktu@gmail.com>
+
+       * url-dav.el (top):
+       * url-vars.el (top): Use `mapc' rather than `mapcar'.
+
 2007-09-22  Diane Murray  <disumu@x3y2z1.net>
 
        * url-misc.el (url-generic-emulator-loader): Send the port as a
 
 2007-09-03  Diane Murray  <disumu@x3y2z1.net>
 
-       * url-http.el: (url-http-parse-headers): Bind the current buffer
+       * url-http.el (url-http-parse-headers): Bind the current buffer
        rather than calling `url-mark-buffer-as-dead' with
        `current-buffer', so that the correct buffer is killed if
        `url-retrieve-synchronously' gets redirected to a new URL.
 
+2007-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * url-parse.el (url): Use defstruct rather than macros.
+       (url-generic-parse-url):
+       * url-util.el (url-normalize-url, url-truncate-url-for-viewing):
+       * url-methods.el (url-scheme-register-proxy):
+       * url-mailto.el (url-mailto):
+       * url-file.el (url-file-build-filename):
+       * url-expand.el (url-identity-expander, url-default-expander):
+       Update all callers.
+
+2007-08-09  Edward O'Connor  <hober0@gmail.com>  (tiny change)
+
+       * url-auth.el (url-basic-auth): When prompting for username
+       and password, default to the username and password in the URL.
+
 2007-08-08  Glenn Morris  <rgm@gnu.org>
 
        * url-auth.el, url-cache.el, url-dav.el, url-file.el, vc-dav.el:
 
        * Relicense all FSF files to GPLv3 or later.
 
+2007-06-12  Tom Tromey  <tromey@redhat.com>
+
+       * url.el (url-configuration-directory): Use user-emacs-directory.
+
+2007-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * url-cookie.el (url-cookie-name, url-cookie-value)
+       (url-cookie-expires, url-cookie-localpart, url-cookie-domain)
+       (url-cookie-secure, url-cookie-set-name, url-cookie-set-value)
+       (url-cookie-set-expires, url-cookie-set-localpart)
+       (url-cookie-set-domain, url-cookie-set-secure)
+       (url-cookie-retrieve-arg, url-cookie-create, url-cookie-p): Remove.
+       (url-cookie): New struct.
+       (url-cookie-store): Use setf instead of url-cookie-set-*.
+
 2007-05-29  Chong Yidong  <cyd@stupidchicken.com>
 
        * url-mailto.el (url-mailto): Insert body after
        mail-header-separator if present, so that it is before signature.
-       Bug reported by Leo <sdl.web@gmail.com>.
+       Suggested by Leo <sdl.web@gmail.com>.
 
 2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
 
index c6fe270900b335fdf006df18b919d6747d3eccfa..98e351916c1d379dc1f1b838ea8bf8fe126be97c 100644 (file)
@@ -318,5 +318,5 @@ RATING   a rating between 1 and 10 of the strength of the authentication.
 
 (provide 'url-auth)
 
-;;; arch-tag: 04058625-616d-44e4-9dbf-4b46b00b2a91
+;; arch-tag: 04058625-616d-44e4-9dbf-4b46b00b2a91
 ;;; url-auth.el ends here
index cdca65104adc37d1acf667cb3f76acd6d8bf4c9b..368c34e32a8a5531644f0d317840868d889b10ea 100644 (file)
 
 ;; See http://home.netscape.com/newsref/std/cookie_spec.html for the
 ;; 'open standard' defining this crap.
-;;
-;; A cookie is stored internally as a vector of 7 slots
-;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
-
-(defsubst url-cookie-name    (cookie) (aref cookie 1))
-(defsubst url-cookie-value   (cookie) (aref cookie 2))
-(defsubst url-cookie-expires (cookie) (aref cookie 3))
-(defsubst url-cookie-localpart    (cookie) (aref cookie 4))
-(defsubst url-cookie-domain  (cookie) (aref cookie 5))
-(defsubst url-cookie-secure  (cookie) (aref cookie 6))
-
-(defsubst url-cookie-set-name    (cookie val) (aset cookie 1 val))
-(defsubst url-cookie-set-value   (cookie val) (aset cookie 2 val))
-(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val))
-(defsubst url-cookie-set-localpart (cookie val) (aset cookie 4 val))
-(defsubst url-cookie-set-domain  (cookie val) (aset cookie 5 val))
-(defsubst url-cookie-set-secure  (cookie val) (aset cookie 6 val))
-(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args)))
-
-(defsubst url-cookie-create (&rest args)
-  "Create a cookie vector object from keyword-value pairs ARGS.
-The keywords allowed are
-  :name NAME
-  :value VALUE
-  :expires TIME
-  :localpart LOCALPAR
-  :domain DOMAIN
-  :secure ???
-Could someone fill in more information?"
-  (let ((retval (make-vector 7 nil)))
-    (aset retval 0 'cookie)
-    (url-cookie-set-name retval (url-cookie-retrieve-arg :name args))
-    (url-cookie-set-value retval (url-cookie-retrieve-arg :value args))
-    (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args))
-    (url-cookie-set-localpart retval (url-cookie-retrieve-arg :localpart args))
-    (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args))
-    (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args))
-    retval))
-
-(defun url-cookie-p (obj)
-  "Return non-nil if OBJ is a cookie vector object.
-These objects represent cookies in the URL package.
-A cookie vector object is a vector of 7 slots:
- [cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE]."
-  (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie)))
 
 (defgroup url-cookie nil
   "URL cookies."
@@ -85,6 +40,20 @@ A cookie vector object is a vector of 7 slots:
   :prefix "url-cookie-"
   :group 'url)
 
+;; A cookie is stored internally as a vector of 7 slots
+;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
+
+(defstruct (url-cookie
+            (:constructor url-cookie-create)
+            (:copier nil)
+            ;; For compatibility with a previous version which did not use
+            ;; defstruct, and also in order to make sure that the printed
+            ;; representation does not depend on CL internals, we use an
+            ;; explicitly managed tag.
+            (:type vector))
+  (tag 'cookie :read-only t)
+  name value expires localpart domain secure)
+
 (defvar url-cookie-storage nil         "Where cookies are stored.")
 (defvar url-cookie-secure-storage nil  "Where secure cookies are stored.")
 (defcustom url-cookie-file nil
@@ -199,8 +168,8 @@ telling Microsoft that."
            (if (and (equal localpart (url-cookie-localpart cur))
                     (equal name (url-cookie-name cur)))
                (progn
-                 (url-cookie-set-expires cur expires)
-                 (url-cookie-set-value cur value)
+                 (setf (url-cookie-expires cur) expires)
+                 (setf (url-cookie-value cur) value)
                  (setq tmp t))))
          (if (not tmp)
              ;; New cookie
index b58c16728656e4f06bb1773c16a7cfc4c1ef71af..3c2ea8721347b7493e450e4ce0c85b79cf40543e 100644 (file)
     (while children
       (setq node (car children)
            node-type (intern
-                      (or 
+                      (or
                        (cdr-safe (assq url-dav-datatype-attribute
                                        (xml-node-attributes node)))
                        "unknown"))
@@ -864,7 +864,7 @@ If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
         (exists-p (url-http-file-exists-p newname)))
 
     (if (and exists-p
-            (or 
+            (or
              (null overwrite)
              (and (numberp overwrite)
                   (not (yes-or-no-p
@@ -933,19 +933,19 @@ Returns nil if DIR contains no name starting with FILE."
 (defun url-dav-register-handler (op)
   (put op 'url-file-handlers (intern-soft (format "url-dav-%s" op))))
 
-(mapcar 'url-dav-register-handler
-        ;; These handlers are disabled because they incorrectly presume that
-        ;; the URL specifies an HTTP location and thus break FTP URLs.
-       '(;; file-name-all-completions
-         ;; file-name-completion
-         ;; rename-file
-         ;; make-directory
-         ;; file-directory-p
-         ;; directory-files
-         ;; delete-file
-         ;; delete-directory
-         ;; file-attributes
-          ))
+(mapc 'url-dav-register-handler
+      ;; These handlers are disabled because they incorrectly presume that
+      ;; the URL specifies an HTTP location and thus break FTP URLs.
+      '(;; file-name-all-completions
+       ;; file-name-completion
+       ;; rename-file
+       ;; make-directory
+       ;; file-directory-p
+       ;; directory-files
+       ;; delete-file
+       ;; delete-directory
+       ;; file-attributes
+       ))
 
 \f
 ;;; Version Control backend cruft
index b7efd75b4b65451909e1373acb714502536ec124..bebdbd9e04bf1690f4e9ae6a9c6b649f441cdd59 100644 (file)
@@ -106,24 +106,24 @@ path components followed by `..' are removed, along with the `..' itself."
       (url-recreate-url urlobj)))))
 
 (defun url-identity-expander (urlobj defobj)
-  (url-set-type urlobj (or (url-type urlobj) (url-type defobj))))
+  (setf (url-type urlobj) (or (url-type urlobj) (url-type defobj))))
 
 (defun url-default-expander (urlobj defobj)
   ;; The default expansion routine - urlobj is modified by side effect!
   (if (url-type urlobj)
       ;; Well, they told us the scheme, let's just go with it.
       nil
-    (url-set-type urlobj (or (url-type urlobj) (url-type defobj)))
-    (url-set-port urlobj (or (url-port urlobj)
-                            (and (string= (url-type urlobj)
-                                          (url-type defobj))
-                                 (url-port defobj))))
+    (setf (url-type urlobj) (or (url-type urlobj) (url-type defobj)))
+    (setf (url-port urlobj) (or (url-port urlobj)
+                                (and (string= (url-type urlobj)
+                                              (url-type defobj))
+                                     (url-port defobj))))
     (if (not (string= "file" (url-type urlobj)))
-       (url-set-host urlobj (or (url-host urlobj) (url-host defobj))))
+       (setf (url-host urlobj) (or (url-host urlobj) (url-host defobj))))
     (if (string= "ftp"  (url-type urlobj))
-       (url-set-user urlobj (or (url-user urlobj) (url-user defobj))))
+       (setf (url-user urlobj) (or (url-user urlobj) (url-user defobj))))
     (if (string= (url-filename urlobj) "")
-       (url-set-filename urlobj "/"))
+       (setf (url-filename urlobj) "/"))
     (if (string-match "^/" (url-filename urlobj))
        nil
       (let ((query nil)
@@ -137,9 +137,10 @@ path components followed by `..' are removed, along with the `..' itself."
        (setq file (url-expander-remove-relative-links
                    (expand-file-name file
                                      (url-file-directory (url-filename defobj)))))
-       (url-set-filename urlobj (if query (concat file sepchar query) file))))))
+       (setf (url-filename urlobj)
+              (if query (concat file sepchar query) file))))))
 
 (provide 'url-expand)
 
-;;; arch-tag: 7b5f744b-b721-49da-be47-484631680a5a
+;; arch-tag: 7b5f744b-b721-49da-be47-484631680a5a
 ;;; url-expand.el ends here
index 6e771c9cd6928f2637530230473027c1c66f5138..c361016856b26c7d26a93c5399a224ea7b57d931 100644 (file)
@@ -127,10 +127,11 @@ to them."
     ;; straighten it out for us?
     ;; (if (and (file-directory-p filename)
     ;;          (not (string-match (format "%c$" directory-sep-char) filename)))
-    ;;     (url-set-filename url (format "%s%c" filename directory-sep-char)))
+    ;;     (setf (url-filename url)
+    ;;           (format "%s%c" filename directory-sep-char)))
     (if (and (file-directory-p filename)
             (not (string-match "/\\'" filename)))
-       (url-set-filename url (format "%s/" filename)))
+       (setf (url-filename url) (format "%s/" filename)))
 
 
     ;; If it is a directory, look for an index file first.
index 10d08b9633ff355a426990a8409cc782666b871c..4b15d07245b0155786779c6fe169b4965da1a55c 100644 (file)
@@ -66,7 +66,7 @@
   (if (url-user url)
       ;; malformed mailto URL (mailto://wmperry@gnu.org) instead of
       ;; mailto:wmperry@gnu.org
-      (url-set-filename url (concat (url-user url) "@" (url-filename url))))
+      (setf (url-filename url) (concat (url-user url) "@" (url-filename url))))
   (setq url (url-filename url))
   (let (to args source-url subject func headers-start)
     (if (string-match (regexp-quote "?") url)
index 89c36bec73735ff010bf3684d3dd55e7c55a0d07..94dcd49f00d757353950b55eda47688137357876 100644 (file)
      ;; First check if its something like hostname:port
      ((string-match "^\\([^:]+\\):\\([0-9]+\\)$" env-proxy)
       (setq urlobj (url-generic-parse-url nil)) ; Get a blank object
-      (url-set-type urlobj "http")
-      (url-set-host urlobj (match-string 1 env-proxy))
-      (url-set-port urlobj (string-to-number (match-string 2 env-proxy))))
+      (setf (url-type urlobj) "http")
+      (setf (url-host urlobj) (match-string 1 env-proxy))
+      (setf (url-port urlobj) (string-to-number (match-string 2 env-proxy))))
      ;; Then check if its a fully specified URL
      ((string-match url-nonrelative-link env-proxy)
       (setq urlobj (url-generic-parse-url env-proxy))
-      (url-set-type urlobj "http")
-      (url-set-target urlobj nil))
+      (setf (url-type urlobj) "http")
+      (setf (url-target urlobj) nil))
      ;; Finally, fall back on the assumption that its just a hostname
      (t
       (setq urlobj (url-generic-parse-url nil)) ; Get a blank object
-      (url-set-type urlobj "http")
-      (url-set-host urlobj env-proxy)))
+      (setf (url-type urlobj) "http")
+      (setf (url-host urlobj) env-proxy)))
 
      (if (and (not cur-proxy) urlobj)
         (progn
index 57bebe56034821ba4ea0409ca2dd488f5fd9a910..9f3437f401c7a8468a37f2c667484bc110b77531 100644 (file)
 ;;; Code:
 
 (require 'url-vars)
+(eval-when-compile (require 'cl))
 
 (autoload 'url-scheme-get-property "url-methods")
 
-(defun url-type (urlobj)
-  (aref urlobj 0))
+(defstruct (url
+            (:constructor nil)
+            (:constructor url-parse-make-urlobj
+                          (&optional type user password host portspec filename
+                                     target attributes fullness))
+            (:copier nil))
+  type user password host portspec filename target attributes fullness)
 
-(defun url-user (urlobj)
-  (aref urlobj 1))
-
-(defun url-password (urlobj)
-  (aref urlobj 2))
-
-(defun url-host (urlobj)
-  (aref urlobj 3))
-
-(defun url-port (urlobj)
-  (or (aref urlobj 4)
+(defsubst url-port (urlobj)
+  (or (url-portspec urlobj)
       (if (url-fullness urlobj)
-         (url-scheme-get-property (url-type urlobj) 'default-port))))
-
-(defun url-filename (urlobj)
-  (aref urlobj 5))
-
-(defun url-target (urlobj)
-  (aref urlobj 6))
-
-(defun url-attributes (urlobj)
-  (aref urlobj 7))
-
-(defun url-fullness (urlobj)
-  (aref urlobj 8))
-
-(defun url-set-type (urlobj type)
-  (aset urlobj 0 type))
-
-(defun url-set-user (urlobj user)
-  (aset urlobj 1 user))
-
-(defun url-set-password (urlobj pass)
-  (aset urlobj 2 pass))
-
-(defun url-set-host (urlobj host)
-  (aset urlobj 3 host))
-
-(defun url-set-port (urlobj port)
-  (aset urlobj 4 port))
-
-(defun url-set-filename (urlobj file)
-  (aset urlobj 5 file))
-
-(defun url-set-target (urlobj targ)
-  (aset urlobj 6 targ))
-
-(defun url-set-attributes (urlobj targ)
-  (aset urlobj 7 targ))
+          (url-scheme-get-property (url-type urlobj) 'default-port))))
 
-(defun url-set-full (urlobj val)
-  (aset urlobj 8 val))
+(defsetf url-port (urlobj) (port) `(setf (url-portspec ,urlobj) ,port))
 
 ;;;###autoload
 (defun url-recreate-url (urlobj)
@@ -123,17 +83,14 @@ Format is:
   ;; See RFC 3986.
   (cond
    ((null url)
-    (make-vector 9 nil))
+    (url-parse-make-urlobj))
    ((or (not (string-match url-nonrelative-link url))
        (= ?/ (string-to-char url)))
     ;; This isn't correct, as a relative URL can be a fragment link
     ;; (e.g. "#foo") and many other things (see section 4.2).
     ;; However, let's not fix something that isn't broken, especially
     ;; when close to a release.
-    (let ((retval (make-vector 9 nil)))
-      (url-set-filename retval url)
-      (url-set-full retval nil)
-      retval))
+    (url-parse-make-urlobj nil nil nil nil nil url))
    (t
     (with-temp-buffer
       (set-syntax-table url-parse-syntax-table)
@@ -214,7 +171,8 @@ Format is:
        (setq file (buffer-substring save-pos (point)))
        (if (and host (string-match "%[0-9][0-9]" host))
            (setq host (url-unhex-string host)))
-       (vector prot user pass host port file refs attr full))))))
+       (url-parse-make-urlobj
+         prot user pass host port file refs attr full))))))
 
 (provide 'url-parse)
 
index d7d8e2b4a4b636476e068fc8585ddc6c26c16ad9..119f40b4da46348aae1797948ea1939033fa30c4 100644 (file)
@@ -168,7 +168,7 @@ Strips out default port numbers, etc."
          type (url-type data))
     (if (member type '("www" "about" "mailto" "info"))
        (setq retval url)
-      (url-set-target data nil)
+      (setf (url-target data) nil)
       (setq retval (url-recreate-url data)))
     retval))
 
@@ -427,13 +427,13 @@ WIDTH defaults to the current frame width."
                  (string-match "/" fname))
        (setq fname (substring fname (match-end 0) nil)
              modified (1+ modified))
-       (url-set-filename urlobj fname)
+       (setf (url-filename urlobj) fname)
        (setq url (url-recreate-url urlobj)
              str-width (length url)))
       (if (> modified 1)
          (setq fname (concat "/.../" fname))
        (setq fname (concat "/" fname)))
-      (url-set-filename urlobj fname)
+      (setf (url-filename urlobj) fname)
       (setq url (url-recreate-url urlobj)))
     url))
 
index 35e69e7990b9c7deb9081f6098a5ef08013c1e31..7ddab8aab6431d4b15c6d6969322a130496b46cc 100644 (file)
 (defvar url-current-mime-headers nil
   "A parsed representation of the MIME headers for the current url.")
 
-(mapcar 'make-variable-buffer-local
-       '(
-         url-current-object
-         url-current-referer
-         url-current-mime-headers
-         ))
+(mapc 'make-variable-buffer-local
+      '(
+       url-current-object
+       url-current-referer
+       url-current-mime-headers
+       ))
 
 (defcustom url-honor-refresh-requests t
   "*Whether to do automatic page reloads.
index 1af016ff0ba8c52125b7b547c5a56c977653c3be..3b292b4452d3e44d758105055e199b6e92f39af0 100644 (file)
@@ -50,7 +50,8 @@
 (defvar url-configuration-directory
   (cond
    ((file-directory-p "~/.url") "~/.url")
-   ((file-directory-p "~/.emacs.d") "~/.emacs.d/url")
+   ((file-directory-p user-emacs-directory)
+    (concat user-emacs-directory "url"))
    (t "~/.url")))
 
 (defun url-do-setup ()
index 36cb9d616da546c79b7ba00e22034b943afe37b7..96957de08128b57737dc48fec81ff127535537b8 100644 (file)
@@ -62,7 +62,7 @@
 ;;;
 
 (defvar vc-arch-command
-  (let ((candidates '("tla")))
+  (let ((candidates '("tla" "baz")))
     (while (and candidates (not (executable-find (car candidates))))
       (setq candidates (cdr candidates)))
     (or (car candidates) "tla")))
   (comment-normalize-vars)
   (goto-char (point-max))
   (forward-comment -1)
-  (unless (bolp) (insert "\n"))
+  (skip-chars-forward " \t\n")
+  (cond
+   ((not (bolp)) (insert "\n\n"))
+   ((not (eq ?\n (char-before (1- (point))))) (insert "\n")))
   (let ((beg (point))
        (idfile (and buffer-file-name
                     (expand-file-name
@@ -195,16 +198,17 @@ Only the value `maybe' can be trusted :-(."
        ;; creates a {arch} directory somewhere.
        file 'arch-root (vc-find-root file "{arch}/=tagging-method"))))
 
-(defun vc-arch-register (file &optional rev comment)
+(defun vc-arch-register (files &optional rev comment)
   (if rev (error "Explicit initial revision not supported for Arch"))
-  (let ((tagmet (vc-arch-tagging-method file)))
-    (if (and (memq tagmet '(tagline implicit)) comment-start)
-       (with-current-buffer (find-file-noselect file)
-         (if (buffer-modified-p)
-             (error "Save %s first" (buffer-name)))
-         (vc-arch-add-tagline)
-         (save-buffer))
-      (vc-arch-command nil 0 file "add"))))
+  (dolist (file files)
+    (let ((tagmet (vc-arch-tagging-method file)))
+      (if (and (memq tagmet '(tagline implicit)) comment-start)
+         (with-current-buffer (find-file-noselect file)
+           (if (buffer-modified-p)
+               (error "Save %s first" (buffer-name)))
+           (vc-arch-add-tagline)
+           (save-buffer)))))
+  (vc-arch-command nil 0 files "add"))
 
 (defun vc-arch-registered (file)
   ;; Don't seriously check whether it's source or not.  Checking would
@@ -261,7 +265,7 @@ Return non-nil if FILE is unchanged."
              ;; ID not found.
              (if (equal (file-name-nondirectory sigfile)
                         (subst-char-in-string
-                         ?/ ?% (vc-arch-workfile-version file)))
+                         ?/ ?% (vc-arch-working-revision file)))
                  'added
                ;; Might be `added' or `up-to-date' as well.
                ;; FIXME: Check in the patch logs to find out.
@@ -279,7 +283,7 @@ Return non-nil if FILE is unchanged."
                    'up-to-date
                  'edited)))))))))
 
-(defun vc-arch-workfile-version (file)
+(defun vc-arch-working-revision (file)
   (let* ((root (expand-file-name "{arch}" (vc-arch-root file)))
         (defbranch (vc-arch-default-version file)))
     (when (and defbranch (string-match "\\`\\(.+@[^/\n]+\\)/\\(\\(\\(.*?\\)\\(?:--.*\\)?\\)--.*\\)\\'" defbranch))
@@ -317,7 +321,7 @@ Return non-nil if FILE is unchanged."
 
 (defun vc-arch-mode-line-string (file)
   "Return string for placement in modeline by `vc-mode-line' for FILE."
-  (let ((rev (vc-workfile-version file)))
+  (let ((rev (vc-working-revision file)))
     (dolist (rule vc-arch-mode-line-rewrite)
       (if (string-match (car rule) rev)
          (setq rev (replace-match (cdr rule) t nil rev))))
@@ -361,49 +365,51 @@ Return non-nil if FILE is unchanged."
        (message "There are unresolved conflicts in %s"
                 (file-name-nondirectory rej))))))
 
-(defun vc-arch-find-file-not-found-hook ()
-  ;; Do nothing.  We are not sure whether the file is `source' or not,
-  ;; so we shouldn't ask the user whether she wants to check it out.
-  )
-
 (defun vc-arch-checkout-model (file) 'implicit)
 
-(defun vc-arch-checkin (file rev comment)
+(defun vc-arch-checkin (files rev comment)
   (if rev (error "Committing to a specific revision is unsupported"))
-  (let ((summary (file-relative-name file (vc-arch-root file))))
+  ;; FIXME: This implementation probably only works for singleton filesets
+  (let ((summary (file-relative-name (car files) (vc-arch-root (car files)))))
     ;; Extract a summary from the comment.
     (when (or (string-match "\\`Summary:[ \t]*\\(.*[^ \t\n]\\)\\([ \t]*\n\\)*" comment)
              (string-match "\\`[ \t]*\\(.*[^ \t\n]\\)[ \t]*\\(\n?\\'\\|\n\\([ \t]*\n\\)+\\)" comment))
       (setq summary (match-string 1 comment))
       (setq comment (substring comment (match-end 0))))
-    (vc-arch-command nil 0 file "commit" "-s" summary "-L" comment "--"
+    (vc-arch-command nil 0 files "commit" "-s" summary "-L" comment "--"
                     (vc-switches 'Arch 'checkin))))
 
-(defun vc-arch-diff (file &optional oldvers newvers buffer)
-  "Get a difference report using Arch between two versions of FILE."
-  (if (and newvers
-          (vc-up-to-date-p file)
-          (equal newvers (vc-workfile-version file)))
-      ;; Newvers is the base revision and the current file is unchanged,
-      ;; so we can diff with the current file.
-      (setq newvers nil))
-  (if newvers
-      (error "Diffing specific revisions not implemented")
-    (let* ((async (and (not vc-disable-async-diff) (fboundp 'start-process)))
-          ;; Run the command from the root dir.
-          (default-directory (vc-arch-root file))
-          (status
-           (vc-arch-command
-            (or buffer "*vc-diff*")
-            (if async 'async 1)
-            nil "file-diffs"
-            ;; Arch does not support the typical flags.
-            ;; (vc-switches 'Arch 'diff)
-            (file-relative-name file)
-            (if (equal oldvers (vc-workfile-version file))
-                nil
-              oldvers))))
-      (if async 1 status))))          ; async diff, pessimistic assumption.
+(defun vc-arch-diff (files &optional oldvers newvers buffer)
+  "Get a difference report using Arch between two versions of FILES."
+  ;; FIXME: This implementation only works for singleton filesets.  To make
+  ;; it work for more cases, we have to either call `file-diffs' manually on
+  ;; each and every `file' in the fileset, or use `changes --diffs' (and
+  ;; variants) and maybe filter the output with `filterdiff' to only include
+  ;; the files in which we're interested.
+  (let ((file (car files)))
+    (if (and newvers
+             (vc-up-to-date-p file)
+             (equal newvers (vc-working-revision file)))
+        ;; Newvers is the base revision and the current file is unchanged,
+        ;; so we can diff with the current file.
+        (setq newvers nil))
+    (if newvers
+        (error "Diffing specific revisions not implemented")
+      (let* ((async (and (not vc-disable-async-diff) (fboundp 'start-process)))
+             ;; Run the command from the root dir.
+             (default-directory (vc-arch-root file))
+             (status
+              (vc-arch-command
+               (or buffer "*vc-diff*")
+               (if async 'async 1)
+               nil "file-diffs"
+               ;; Arch does not support the typical flags.
+               ;; (vc-switches 'Arch 'diff)
+               (file-relative-name file)
+               (if (equal oldvers (vc-working-revision file))
+                   nil
+                 oldvers))))
+        (if async 1 status)))))               ; async diff, pessimistic assumption.
 
 (defun vc-arch-delete-file (file)
   (vc-arch-command nil 0 file "rm"))
@@ -417,7 +423,7 @@ Return non-nil if FILE is unchanged."
   "A wrapper around `vc-do-command' for use in vc-arch.el."
   (apply 'vc-do-command buffer okstatus vc-arch-command file flags))
 
-(defun vc-arch-init-version () nil)
+(defun vc-arch-init-revision () nil)
 
 ;;; Completion of versions and revisions.
 
@@ -444,6 +450,104 @@ Return non-nil if FILE is unchanged."
              (table (vc-arch--version-completion-table root string)))
        (complete-with-action action table string pred)))))
 
+;;; Trimming revision libraries.
+
+;; This code is not directly related to VC and there are many variants of
+;; this functionality available as scripts, but I like this version better,
+;; so maybe others will like it too.
+
+(defun vc-arch-trim-find-least-useful-rev (revs)
+  (let* ((first (pop revs))
+         (second (pop revs))
+         (third (pop revs))
+         ;; We try to give more importance to recent revisions.  The idea is
+         ;; that it's OK if checking out a revision 1000-patch-old is ten
+         ;; times slower than checking out a revision 100-patch-old.  But at
+         ;; the same time a 2-patch-old rev isn't really ten times more
+         ;; important than a 20-patch-old, so we use an arbitrary constant
+         ;; "100" to reduce this effect for recent revisions.  Making this
+         ;; constant a float has the side effect of causing the subsequent
+         ;; computations to be done as floats as well.
+         (max (+ 100.0 (car (or (car (last revs)) third))))
+         (cost (lambda () (/ (- (car third) (car first)) (- max (car second)))))
+         (minrev second)
+         (mincost (funcall cost)))
+    (while revs
+      (setq first second)
+      (setq second third)
+      (setq third (pop revs))
+      (when (< (funcall cost) mincost)
+        (setq minrev second)
+        (setq mincost (funcall cost))))
+    minrev))
+
+(defun vc-arch-trim-make-sentinel (revs)
+  (if (null revs) (lambda (proc msg) (message "VC-Arch trimming ... done"))
+    `(lambda (proc msg)
+       (message "VC-Arch trimming %s..." ',(file-name-nondirectory (car revs)))
+       (rename-file ,(car revs) ,(concat (car revs) "*rm*"))
+       (setq proc (start-process "vc-arch-trim" nil
+                                 "rm" "-rf" ',(concat (car revs) "*rm*")))
+       (set-process-sentinel proc (vc-arch-trim-make-sentinel ',(cdr revs))))))
+
+(defun vc-arch-trim-one-revlib (dir)
+  "Delete half of the revisions in the revision library."
+  (interactive "Ddirectory: ")
+  (let ((revs
+         (sort (delq nil
+                     (mapcar
+                      (lambda (f)
+                        (when (string-match "-\\([0-9]+\\)\\'" f)
+                          (cons (string-to-number (match-string 1 f)) f)))
+                      (directory-files dir nil nil 'nosort)))
+               'car-less-than-car))
+        (subdirs nil))
+    (when (cddr revs)
+      (dotimes (i (/ (length revs) 2))
+        (let ((minrev (vc-arch-trim-find-least-useful-rev revs)))
+          (setq revs (delq minrev revs))
+          (push minrev subdirs)))
+      (funcall (vc-arch-trim-make-sentinel
+                (mapcar (lambda (x) (expand-file-name (cdr x) dir)) subdirs))
+               nil nil))))
+
+(defun vc-arch-trim-revlib ()
+  "Delete half of the revisions in the revision library."
+  (interactive)
+  (let ((rl-dir (with-output-to-string
+                  (call-process vc-arch-command nil standard-output nil
+                                "my-revision-library"))))
+    (while (string-match "\\(.*\\)\n" rl-dir)
+      (let ((dir (match-string 1 rl-dir)))
+        (setq rl-dir
+              (if (and (file-directory-p dir) (file-writable-p dir))
+                  dir
+                (substring rl-dir (match-end 0))))))
+    (unless (file-writable-p rl-dir)
+      (error "No writable revlib directory found"))
+    (message "Revlib at %s" rl-dir)
+    (let* ((archives (directory-files rl-dir 'full "[^.]\\|..."))
+           (categories
+            (apply 'append
+                   (mapcar (lambda (dir)
+                             (when (file-directory-p dir)
+                               (directory-files dir 'full "[^.]\\|...")))
+                           archives)))
+           (branches
+            (apply 'append
+                   (mapcar (lambda (dir)
+                             (when (file-directory-p dir)
+                               (directory-files dir 'full "[^.]\\|...")))
+                           categories)))
+           (versions
+            (apply 'append
+                   (mapcar (lambda (dir)
+                             (when (file-directory-p dir)
+                               (directory-files dir 'full "--.*--")))
+                           branches))))
+      (mapc 'vc-arch-trim-one-revlib versions))
+    ))
+
 (defvar vc-arch-extra-menu-map
   (let ((map (make-sparse-keymap)))
     (define-key map [add-tagline]
@@ -455,7 +559,7 @@ Return non-nil if FILE is unchanged."
 
 ;;; Less obvious implementations.
 
-(defun vc-arch-find-version (file rev buffer)
+(defun vc-arch-find-revision (file rev buffer)
   (let ((out (make-temp-file "vc-out")))
     (unwind-protect
         (progn
index e30af4369c24cdbc4dcf15ed39f0808d1809a2c0..5ed46431fdaba3de29252ce38a4638df21771171 100644 (file)
@@ -92,6 +92,7 @@ Invoke the bzr command adding `BZR_PROGRESS_BAR=none' to the environment."
     (apply 'vc-do-command buffer okstatus vc-bzr-program
            file-or-list bzr-command (append vc-bzr-program-args args))))
 
+
 ;;;###autoload
 (defconst vc-bzr-admin-dirname ".bzr"    ; FIXME: "_bzr" on w32?
   "Name of the directory containing Bzr repository status files.")
@@ -237,7 +238,7 @@ If any error occurred in running `bzr status', then return nil."
 (defun vc-bzr-workfile-unchanged-p (file)
   (eq 'unchanged (car (vc-bzr-status file))))
 
-(defun vc-bzr-workfile-version (file)
+(defun vc-bzr-working-revision (file)
   (lexical-let*
       ((rootdir (vc-bzr-root file))
        (branch-format-file (expand-file-name vc-bzr-admin-branch-format-file
@@ -283,7 +284,7 @@ If any error occurred in running `bzr status', then return nil."
   "Register FILE under bzr.
 Signal an error unless REV is nil.
 COMMENT is ignored."
-  (if rev (error "Can't register explicit version with bzr"))
+  (if rev (error "Can't register explicit revision with bzr"))
   (vc-bzr-command "add" nil 0 files))
 
 ;; Could run `bzr status' in the directory and see if it succeeds, but
@@ -312,7 +313,7 @@ or a superior directory.")
 (defun vc-bzr-checkin (files rev comment)
   "Check FILE in to bzr with log message COMMENT.
 REV non-nil gets an error."
-  (if rev (error "Can't check in a specific version with bzr"))
+  (if rev (error "Can't check in a specific revision with bzr"))
   (vc-bzr-command "commit" nil 0 files "-m" comment))
 
 (defun vc-bzr-checkout (file &optional editable rev destfile)
@@ -364,11 +365,11 @@ EDITABLE is ignored."
   (unless (fboundp 'vc-default-log-view-mode)
     (add-hook 'log-view-mode-hook 'vc-bzr-log-view-mode)))
 
-(defun vc-bzr-show-log-entry (version)
-  "Find entry for patch name VERSION in bzr change log buffer."
+(defun vc-bzr-show-log-entry (revision)
+  "Find entry for patch name REVISION in bzr change log buffer."
   (goto-char (point-min))
   (let (case-fold-search)
-    (if (re-search-forward (concat "^-+\nrevno: " version "$") nil t)
+    (if (re-search-forward (concat "^-+\nrevno: " revision "$") nil t)
         (beginning-of-line 0)
       (goto-char (point-min)))))
 
@@ -376,7 +377,7 @@ EDITABLE is ignored."
 
 (defun vc-bzr-diff (files &optional rev1 rev2 buffer)
   "VC bzr backend for diff."
-  (let ((working (vc-workfile-version (if (consp files) (car files) files))))
+  (let ((working (vc-working-revision (if (consp files) (car files) files))))
     (if (and (equal rev1 working) (not rev2))
         (setq rev1 nil))
     (if (and (not rev1) rev2)
@@ -393,8 +394,8 @@ EDITABLE is ignored."
 (defalias 'vc-bzr-diff-tree 'vc-bzr-diff)
 
 
-;; FIXME: vc-{next,previous}-version need fixing in vc.el to deal with
-;; straight integer versions.
+;; FIXME: vc-{next,previous}-revision need fixing in vc.el to deal with
+;; straight integer revisions.
 
 (defun vc-bzr-delete-file (file)
   "Delete FILE and delete it in the bzr repository."
@@ -411,12 +412,12 @@ EDITABLE is ignored."
   "Internal use.")
 (make-variable-buffer-local 'vc-bzr-annotation-table)
 
-(defun vc-bzr-annotate-command (file buffer &optional version)
+(defun vc-bzr-annotate-command (file buffer &optional revision)
   "Prepare BUFFER for `vc-annotate' on FILE.
 Each line is tagged with the revision number, which has a `help-echo'
 property containing author and date information."
   (apply #'vc-bzr-command "annotate" buffer 0 file "--long" "--all"
-         (if version (list "-r" version)))
+         (if revision (list "-r" revision)))
   (with-current-buffer buffer
     ;; Store the tags for the annotated source lines in a hash table
     ;; to allow saving space by sharing the text properties.
@@ -545,7 +546,7 @@ Optional argument LOCALP is always ignored."
               (vc-file-setprop file 'vc-state current-vc-state)
               (vc-file-setprop file 'vc-bzr-state current-bzr-state)
               (when (eq 'added current-bzr-state)
-                (vc-file-setprop file 'vc-workfile-version "0"))))
+                (vc-file-setprop file 'vc-working-revision "0"))))
           (when (eq 'not-versioned current-bzr-state)
             (let ((file (expand-file-name
                          (buffer-substring-no-properties
index a0eb2609ade0a8e231e0f1cb0d3b5261be41539e..5ffb4815182a94cfc8e77bd839e5acea15cccb2c 100644 (file)
 
 (eval-when-compile (require 'cl) (require 'vc))
 
+;; Clear up the cache to force vc-call to check again and discover
+;; new functions when we reload this file.
+(put 'CVS 'vc-functions nil)
+
 ;;;
 ;;; Customization options
 ;;;
@@ -225,13 +229,13 @@ See also variable `vc-cvs-sticky-date-format-string'."
            (goto-char (point-max))
            (widen)))))))
 
-(defun vc-cvs-workfile-version (file)
-  "CVS-specific version of `vc-workfile-version'."
+(defun vc-cvs-working-revision (file)
+  "CVS-specific version of `vc-working-revision'."
   ;; There is no need to consult RCS headers under CVS, because we
   ;; get the workfile version for free when we recognize that a file
   ;; is registered in CVS.
   (vc-cvs-registered file)
-  (vc-file-getprop file 'vc-workfile-version))
+  (vc-file-getprop file 'vc-working-revision))
 
 (defun vc-cvs-checkout-model (file)
   "CVS-specific version of `vc-checkout-model'."
@@ -254,20 +258,31 @@ See also variable `vc-cvs-sticky-date-format-string'."
 Compared to the default implementation, this function does two things:
 Handle the special case of a CVS file that is added but not yet
 committed and support display of sticky tags."
-  (let ((sticky-tag (vc-file-getprop file 'vc-cvs-sticky-tag))
-       (string (if (string= (vc-workfile-version file) "0")
-                   ;; A file that is added but not yet committed.
-                   "CVS @@"
-                 (vc-default-mode-line-string 'CVS file))))
-    (if (zerop (length sticky-tag))
-       string
-      (concat string "[" sticky-tag "]"))))
+  (let* ((sticky-tag (vc-file-getprop file 'vc-cvs-sticky-tag))
+        help-echo
+        (string 
+         (if (string= (vc-working-revision file) "0")
+             ;; A file that is added but not yet committed.
+             (progn
+               (setq help-echo "Added file (needs commit) under CVS")
+               "CVS @@")
+           (let ((def-ml (vc-default-mode-line-string 'CVS file)))
+             (setq help-echo 
+                   (get-text-property 0 'help-echo def-ml))
+             def-ml))))
+    (propertize 
+     (if (zerop (length sticky-tag))
+        string
+       (setq help-echo (format "%s on the '%s' branch" 
+                              help-echo sticky-tag))
+       (concat string "[" sticky-tag "]"))
+     'help-echo help-echo)))
 
 (defun vc-cvs-dired-state-info (file)
   "CVS-specific version of `vc-dired-state-info'."
   (let ((cvs-state (vc-state file)))
     (cond ((eq cvs-state 'edited)
-          (if (equal (vc-workfile-version file) "0")
+          (if (equal (vc-working-revision file) "0")
               "(added)" "(modified)"))
          ((eq cvs-state 'needs-patch) "(patch)")
          ((eq cvs-state 'needs-merge) "(merge)"))))
@@ -277,21 +292,21 @@ committed and support display of sticky tags."
 ;;; State-changing functions
 ;;;
 
-(defun vc-cvs-register (file &optional rev comment)
-  "Register FILE into the CVS version-control system.
-COMMENT can be used to provide an initial description of FILE.
+(defun vc-cvs-register (files &optional rev comment)
+  "Register FILES into the CVS version-control system.
+COMMENT can be used to provide an initial description of FILES.
 
 `vc-register-switches' and `vc-cvs-register-switches' are passed to
 the CVS command (in that order)."
   (when (and (not (vc-cvs-responsible-p file))
-            (vc-cvs-could-register file))
-    ;; Register the directory if needed.
-    (vc-cvs-register (directory-file-name (file-name-directory file))))
-  (apply 'vc-cvs-command nil 0 file
-        "add"
-        (and comment (string-match "[^\t\n ]" comment)
-             (concat "-m" comment))
-        (vc-switches 'CVS 'register)))
+              (vc-cvs-could-register file))
+      ;; Register the directory if needed.
+      (vc-cvs-register (directory-file-name (file-name-directory file))))
+    (apply 'vc-cvs-command nil 0 files
+          "add"
+          (and comment (string-match "[^\t\n ]" comment)
+               (concat "-m" comment))
+          (vc-switches 'CVS 'register)))
 
 (defun vc-cvs-responsible-p (file)
   "Return non-nil if CVS thinks it is responsible for FILE."
@@ -313,17 +328,18 @@ its parents."
                     t (directory-file-name dir))))
     (eq dir t)))
 
-(defun vc-cvs-checkin (file rev comment)
+(defun vc-cvs-checkin (files rev comment)
   "CVS-specific version of `vc-backend-checkin'."
-  (unless (or (not rev) (vc-cvs-valid-version-number-p rev))
+  (unless (or (not rev) (vc-cvs-valid-revision-number-p rev))
     (if (not (vc-cvs-valid-symbolic-tag-name-p rev))
        (error "%s is not a valid symbolic tag name" rev)
       ;; If the input revison is a valid symbolic tag name, we create it
       ;; as a branch, commit and switch to it.
-      (apply 'vc-cvs-command nil 0 file "tag" "-b" (list rev))
-      (apply 'vc-cvs-command nil 0 file "update" "-r" (list rev))
-      (vc-file-setprop file 'vc-cvs-sticky-tag rev)))
-  (let ((status (apply 'vc-cvs-command nil 1 file
+      (apply 'vc-cvs-command nil 0 files "tag" "-b" (list rev))
+      (apply 'vc-cvs-command nil 0 files "update" "-r" (list rev))
+      (mapc (lambda (file) (vc-file-setprop file 'vc-cvs-sticky-tag rev))
+           files)))
+  (let ((status (apply 'vc-cvs-command nil 1 files
                       "ci" (if rev (concat "-r" rev))
                       (concat "-m" comment)
                       (vc-switches 'CVS 'checkin))))
@@ -333,7 +349,8 @@ its parents."
       ;; Check checkin problem.
       (cond
        ((re-search-forward "Up-to-date check failed" nil t)
-        (vc-file-setprop file 'vc-state 'needs-merge)
+       (mapc (lambda (file) (vc-file-setprop file 'vc-state 'needs-merge))
+             files)
         (error (substitute-command-keys
                 (concat "Up-to-date check failed: "
                         "type \\[vc-next-action] to merge in changes"))))
@@ -342,22 +359,27 @@ its parents."
         (goto-char (point-min))
         (shrink-window-if-larger-than-buffer)
         (error "Check-in failed"))))
-    ;; Update file properties
-    (vc-file-setprop
-     file 'vc-workfile-version
-     (vc-parse-buffer "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" 2))
-    ;; Forget the checkout model of the file, because we might have
+    ;; Single-file commit?  Then update the revision by parsing the buffer.
+    ;; Otherwise we can't necessarily tell what goes with what; clear
+    ;; its properties so they have to be refetched.
+    (if (= (length files) 1)
+       (vc-file-setprop
+        (car files) 'vc-working-revision
+        (vc-parse-buffer "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" 2))
+      (mapc (lambda (file) (vc-file-clearprops file)) files))
+    ;; Anyway, forget the checkout model of the file, because we might have
     ;; guessed wrong when we found the file.  After commit, we can
     ;; tell it from the permissions of the file (see
     ;; vc-cvs-checkout-model).
-    (vc-file-setprop file 'vc-checkout-model nil)
+    (mapc (lambda (file) (vc-file-setprop file 'vc-checkout-model nil))
+         files)
 
     ;; if this was an explicit check-in (does not include creation of
     ;; a branch), remove the sticky tag.
     (if (and rev (not (vc-cvs-valid-symbolic-tag-name-p rev)))
-       (vc-cvs-command nil 0 file "update" "-A"))))
+       (vc-cvs-command nil 0 files "update" "-A"))))
 
-(defun vc-cvs-find-version (file rev buffer)
+(defun vc-cvs-find-revision (file rev buffer)
   (apply 'vc-cvs-command
         buffer 0 file
         "-Q"                           ; suppress diagnostic output
@@ -367,112 +389,58 @@ its parents."
         "-p"
         (vc-switches 'CVS 'checkout)))
 
-(defun vc-cvs-checkout (file &optional editable rev workfile)
-  "Retrieve a revision of FILE into a WORKFILE.
+(defun vc-cvs-checkout (file &optional editable rev)
+  "Checkout a revision of FILE into the working area.
 EDITABLE non-nil means that the file should be writable.
-REV is the revision to check out into WORKFILE."
-  (let ((filename (or workfile file))
-       (file-buffer (get-file-buffer file))
-       switches)
-    (message "Checking out %s..." filename)
-    (save-excursion
-      ;; Change buffers to get local value of vc-checkout-switches.
-      (if file-buffer (set-buffer file-buffer))
-      (setq switches (vc-switches 'CVS 'checkout))
-      ;; Save this buffer's default-directory
-      ;; and use save-excursion to make sure it is restored
-      ;; in the same buffer it was saved in.
-      (let ((default-directory default-directory))
-       (save-excursion
-         ;; Adjust the default-directory so that the check-out creates
-         ;; the file in the right place.
-         (setq default-directory (file-name-directory filename))
-         (if workfile
-             (let ((failed t)
-                    (backup-name (if (string= file workfile)
-                                     (car (find-backup-file-name filename)))))
-                (when backup-name
-                  (copy-file filename backup-name
-                             'ok-if-already-exists 'keep-date)
-                  (unless (file-writable-p filename)
-                    (set-file-modes filename
-                                    (logior (file-modes filename) 128))))
-               (unwind-protect
-                   (progn
-                      (let ((coding-system-for-read 'no-conversion)
-                            (coding-system-for-write 'no-conversion))
-                        (with-temp-file filename
-                          (apply 'vc-cvs-command
-                                 (current-buffer) 0 file
-                                 "-Q"  ; suppress diagnostic output
-                                 "update"
-                                 (and (stringp rev)
-                                      (not (string= rev ""))
-                                      (concat "-r" rev))
-                                 "-p"
-                                 switches)))
-                     (setq failed nil))
-                 (if failed
-                      (if backup-name
-                          (rename-file backup-name filename
-                                       'ok-if-already-exists)
-                        (if (file-exists-p filename)
-                            (delete-file filename)))
-                    (and backup-name
-                         (not vc-make-backup-files)
-                         (delete-file backup-name)))))
-           (if (and (file-exists-p file) (not rev))
-               ;; If no revision was specified, just make the file writable
-               ;; if necessary (using `cvs-edit' if requested).
-               (and editable (not (eq (vc-cvs-checkout-model file) 'implicit))
-                     (if vc-cvs-use-edit
-                         (vc-cvs-command nil 0 file "edit")
-                       (set-file-modes file (logior (file-modes file) 128))
-                       (if file-buffer (toggle-read-only -1))))
-              ;; Check out a particular version (or recreate the file).
-              (vc-file-setprop file 'vc-workfile-version nil)
-              (apply 'vc-cvs-command nil 0 file
-                     (and editable
-                          (or (not (file-exists-p file))
-                              (not (eq (vc-cvs-checkout-model file)
-                                       'implicit)))
-                          "-w")
-                     "update"
-                     (when rev
-                       (unless (eq rev t)
-                         ;; default for verbose checkout: clear the
-                         ;; sticky tag so that the actual update will
-                         ;; get the head of the trunk
-                         (if (string= rev "")
-                             "-A"
-                           (concat "-r" rev))))
-                     switches))))
-       (vc-mode-line file)
-       (message "Checking out %s...done" filename)))))
+REV is the revision to check out."
+  (message "Checking out %s..." file)
+  ;; Change buffers to get local value of vc-checkout-switches.
+  (with-current-buffer (or (get-file-buffer file) (current-buffer))
+    (if (and (file-exists-p file) (not rev))
+        ;; If no revision was specified, just make the file writable
+        ;; if necessary (using `cvs-edit' if requested).
+        (and editable (not (eq (vc-cvs-checkout-model file) 'implicit))
+             (if vc-cvs-use-edit
+                 (vc-cvs-command nil 0 file "edit")
+               (set-file-modes file (logior (file-modes file) 128))
+               (if (equal file buffer-file-name) (toggle-read-only -1))))
+      ;; Check out a particular revision (or recreate the file).
+      (vc-file-setprop file 'vc-working-revision nil)
+      (apply 'vc-cvs-command nil 0 file
+             (and editable "-w")
+             "update"
+             (when rev
+               (unless (eq rev t)
+                 ;; default for verbose checkout: clear the
+                 ;; sticky tag so that the actual update will
+                 ;; get the head of the trunk
+                 (if (string= rev "")
+                     "-A"
+                   (concat "-r" rev))))
+             (vc-switches 'CVS 'checkout)))
+    (vc-mode-line file))
+  (message "Checking out %s...done" file))
 
 (defun vc-cvs-delete-file (file)
   (vc-cvs-command nil 0 file "remove" "-f")
   (vc-cvs-command nil 0 file "commit" "-mRemoved."))
 
 (defun vc-cvs-revert (file &optional contents-done)
-  "Revert FILE to the version it was based on."
-  (unless contents-done
-    ;; Check out via standard output (caused by the final argument
-    ;; FILE below), so that no sticky tag is set.
-    (vc-cvs-checkout file nil (vc-workfile-version file) file))
+  "Revert FILE to the working revision on which it was based."
+  (vc-default-revert 'CVS file contents-done)
   (unless (eq (vc-checkout-model file) 'implicit)
     (if vc-cvs-use-edit
         (vc-cvs-command nil 0 file "unedit")
       ;; Make the file read-only by switching off all w-bits
       (set-file-modes file (logand (file-modes file) 3950)))))
 
-(defun vc-cvs-merge (file first-version &optional second-version)
+(defun vc-cvs-merge (file first-revision &optional second-revision)
   "Merge changes into current working copy of FILE.
-The changes are between FIRST-VERSION and SECOND-VERSION."
+The changes are between FIRST-REVISION and SECOND-REVISION."
   (vc-cvs-command nil 0 file
                  "update" "-kk"
-                 (concat "-j" first-version)
-                 (concat "-j" second-version))
+                 (concat "-j" first-revision)
+                 (concat "-j" second-revision))
   (vc-file-setprop file 'vc-state 'edited)
   (with-current-buffer (get-buffer "*vc*")
     (goto-char (point-min))
@@ -483,18 +451,18 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
 (defun vc-cvs-merge-news (file)
   "Merge in any new changes made to FILE."
   (message "Merging changes into %s..." file)
-  ;; (vc-file-setprop file 'vc-workfile-version nil)
+  ;; (vc-file-setprop file 'vc-working-revision nil)
   (vc-file-setprop file 'vc-checkout-time 0)
   (vc-cvs-command nil 0 file "update")
   ;; Analyze the merge result reported by CVS, and set
   ;; file properties accordingly.
   (with-current-buffer (get-buffer "*vc*")
     (goto-char (point-min))
-    ;; get new workfile version
+    ;; get new working revision
     (if (re-search-forward
         "^Merging differences between [0-9.]* and \\([0-9.]*\\) into" nil t)
-       (vc-file-setprop file 'vc-workfile-version (match-string 1))
-      (vc-file-setprop file 'vc-workfile-version nil))
+       (vc-file-setprop file 'vc-working-revision (match-string 1))
+      (vc-file-setprop file 'vc-working-revision nil))
     ;; get file status
     (prog1
         (if (eq (buffer-size) 0)
@@ -531,37 +499,30 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
 ;;; History functions
 ;;;
 
-(defun vc-cvs-print-log (file &optional buffer)
+(defun vc-cvs-print-log (files &optional buffer)
   "Get change log associated with FILE."
   (vc-cvs-command
    buffer
-   (if (and (vc-stay-local-p file) (fboundp 'start-process)) 'async 0)
-   file "log"))
-
-(defun vc-cvs-diff (file &optional oldvers newvers buffer)
-  "Get a difference report using CVS between two versions of FILE."
-  (if (string= (vc-workfile-version file) "0")
-      ;; This file is added but not yet committed; there is no master file.
-      (if (or oldvers newvers)
-         (error "No revisions of %s exist" file)
-       ;; We regard this as "changed".
-       ;; Diff it against /dev/null.
-       ;; Note: this is NOT a "cvs diff".
-       (apply 'vc-do-command (or buffer "*vc-diff*")
-              1 "diff" file
-              (append (vc-switches nil 'diff) '("/dev/null")))
-       ;; Even if it's empty, it's locally modified.
-       1)
-    (let* ((async (and (not vc-disable-async-diff)
-                       (vc-stay-local-p file)
-                       (fboundp 'start-process)))
+   (if (and (vc-stay-local-p files) (fboundp 'start-process)) 'async 0)
+   files "log"))
+
+(defun vc-cvs-wash-log ()
+  "Remove all non-comment information from log output."
+  (vc-call-backend 'RCS 'wash-log)
+  nil)
+
+(defun vc-cvs-diff (files &optional oldvers newvers buffer)
+  "Get a difference report using CVS between two revisions of FILE."
+    (let* ((async (and (not vc-disable-async-diff) 
+                      (vc-stay-local-p files)
+                      (fboundp 'start-process)))
           (status (apply 'vc-cvs-command (or buffer "*vc-diff*")
                          (if async 'async 1)
-                         file "diff"
+                         files "diff"
                          (and oldvers (concat "-r" oldvers))
                          (and newvers (concat "-r" newvers))
                          (vc-switches 'CVS 'diff))))
-      (if async 1 status))))           ; async diff, pessimistic assumption
+      (if async 1 status)))            ; async diff, pessimistic assumption
 
 (defun vc-cvs-diff-tree (dir &optional rev1 rev2)
   "Diff all files at and below DIR."
@@ -587,14 +548,36 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
                (and rev2 (concat "-r" rev2))
                (vc-switches 'CVS 'diff))))))
 
-(defun vc-cvs-annotate-command (file buffer &optional version)
+(defconst vc-cvs-annotate-first-line-re "^[0-9]")
+
+(defun vc-cvs-annotate-process-filter (process string)
+  (setq string (concat (process-get process 'output) string))
+  (if (not (string-match vc-cvs-annotate-first-line-re string))
+      ;; Still waiting for the first real line.
+      (process-put process 'output string)
+    (let ((vc-filter (process-get process 'vc-filter)))
+      (set-process-filter process vc-filter)
+      (funcall vc-filter process (substring string (match-beginning 0))))))
+
+(defun vc-cvs-annotate-command (file buffer &optional revision)
   "Execute \"cvs annotate\" on FILE, inserting the contents in BUFFER.
-Optional arg VERSION is a version to annotate from."
-  (vc-cvs-command buffer 0 file "annotate" (if version (concat "-r" version)))
-  (with-current-buffer buffer
-    (goto-char (point-min))
-    (re-search-forward "^[0-9]")
-    (delete-region (point-min) (1- (point)))))
+Optional arg REVISION is a revision to annotate from."
+  (vc-cvs-command buffer
+                  (if (and (vc-stay-local-p file) (fboundp 'start-process))
+                     'async 0)
+                  file "annotate"
+                  (if revision (concat "-r" revision)))
+  ;; Strip the leading few lines.
+  (let ((proc (get-buffer-process buffer)))
+    (if proc
+        ;; If running asynchronously, use a process filter.
+        (progn
+          (process-put proc 'vc-filter (process-filter proc))
+          (set-process-filter proc 'vc-cvs-annotate-process-filter))
+      (with-current-buffer buffer
+        (goto-char (point-min))
+        (re-search-forward vc-cvs-annotate-first-line-re)
+        (delete-region (point-min) (1- (point)))))))
 
 (defun vc-cvs-annotate-current-time ()
   "Return the current time, based at midnight of the current day, and
@@ -607,7 +590,8 @@ encoded as fractional days."
 systime, or nil if there is none."
   (let* ((bol (point))
          (cache (get-text-property bol 'vc-cvs-annotate-time))
-         buffer-read-only)
+         (inhibit-read-only t)
+         (inhibit-modification-hooks t))
     (cond
      (cache)
      ((looking-at
@@ -649,7 +633,7 @@ systime, or nil if there is none."
 ;;;
 
 (defun vc-cvs-create-snapshot (dir name branchp)
-  "Assign to DIR's current version a given NAME.
+  "Assign to DIR's current revision a given NAME.
 If BRANCHP is non-nil, the name is created as a branch (and the current
 workspace is immediately moved to that new branch)."
   (vc-cvs-command nil 0 dir "tag" "-c" (if branchp "-b") name)
@@ -679,13 +663,13 @@ If UPDATE is non-nil, then update (resynch) any affected buffers."
                   ((or (string= state "U")
                        (string= state "P"))
                    (vc-file-setprop file 'vc-state 'up-to-date)
-                   (vc-file-setprop file 'vc-workfile-version nil)
+                   (vc-file-setprop file 'vc-working-revision nil)
                    (vc-file-setprop file 'vc-checkout-time
                                     (nth 5 (file-attributes file))))
                   ((or (string= state "M")
                        (string= state "C"))
                    (vc-file-setprop file 'vc-state 'edited)
-                   (vc-file-setprop file 'vc-workfile-version nil)
+                   (vc-file-setprop file 'vc-working-revision nil)
                    (vc-file-setprop file 'vc-checkout-time 0)))
                  (vc-file-setprop file 'vc-cvs-sticky-tag sticky-tag)
                  (vc-resynch-buffer file t t))))
@@ -711,11 +695,11 @@ If UPDATE is non-nil, then update (resynch) any affected buffers."
 ;;; Internal functions
 ;;;
 
-(defun vc-cvs-command (buffer okstatus file &rest flags)
+(defun vc-cvs-command (buffer okstatus files &rest flags)
   "A wrapper around `vc-do-command' for use in vc-cvs.el.
 The difference to vc-do-command is that this function always invokes `cvs',
 and that it passes `vc-cvs-global-switches' to it before FLAGS."
-  (apply 'vc-do-command buffer okstatus "cvs" file
+  (apply 'vc-do-command buffer okstatus "cvs" files
          (if (stringp vc-cvs-global-switches)
              (cons vc-cvs-global-switches flags)
            (append vc-cvs-global-switches
@@ -816,7 +800,7 @@ essential information."
                     "\\(RCS Version\\|RCS Revision\\|Repository revision\\):\
 \[\t ]+\\([0-9.]+\\)"
                     nil t))
-              (vc-file-setprop file 'vc-latest-version (match-string 2)))
+              (vc-file-setprop file 'vc-latest-revision (match-string 2)))
           (vc-file-setprop
            file 'vc-state
            (cond
@@ -859,8 +843,8 @@ CVS/Entries should only be accessed through this function."
   (and (string-match "^[a-zA-Z]" tag)
        (not (string-match "[^a-z0-9A-Z-_]" tag))))
 
-(defun vc-cvs-valid-version-number-p (tag)
-  "Return non-nil if TAG is a valid version number."
+(defun vc-cvs-valid-revision-number-p (tag)
+  "Return non-nil if TAG is a valid revision number."
   (and (string-match "^[0-9]" tag)
        (not (string-match "[^0-9.]" tag))))
 
@@ -924,7 +908,7 @@ is non-nil."
    ;; entry for a "locally added" file (not yet committed)
    ((looking-at "/[^/]+/0/")
     (vc-file-setprop file 'vc-checkout-time 0)
-    (vc-file-setprop file 'vc-workfile-version "0")
+    (vc-file-setprop file 'vc-working-revision "0")
     (if set-state (vc-file-setprop file 'vc-state 'edited)))
    ;; normal entry
    ((looking-at
@@ -938,7 +922,7 @@ is non-nil."
             ;; sticky tag
             "\\(.\\|\\)" ;Sticky tag type (date or tag name, could be empty)
             "\\(.*\\)"))               ;Sticky tag
-    (vc-file-setprop file 'vc-workfile-version (match-string 1))
+    (vc-file-setprop file 'vc-working-revision (match-string 1))
     (vc-file-setprop file 'vc-cvs-sticky-tag
                     (vc-cvs-parse-sticky-tag (match-string 4)
                                               (match-string 5)))
@@ -988,5 +972,5 @@ is non-nil."
 
 (provide 'vc-cvs)
 
-;;; arch-tag: 60e1402a-aa53-4607-927a-cf74f144b432
+;; arch-tag: 60e1402a-aa53-4607-927a-cf74f144b432
 ;;; vc-cvs.el ends here
index 88946f160ff5d76fda3e726c103e662adbc5e644..4bf6506dcb160e72da8fa41b01f3289c29849191 100644 (file)
 ;; * state (file)                                 OK
 ;; - state-heuristic (file)                       NOT NEEDED
 ;; - dir-state (dir)                              OK
-;; * workfile-version (file)                      OK
+;; * working-revision (file)                      OK
 ;; - latest-on-branch-p (file)                    NOT NEEDED
 ;; * checkout-model (file)                        OK
 ;; - workfile-unchanged-p (file)                  OK
-;; - mode-line-string (file)                      NOT NEEDED
+;; - mode-line-string (file)                      OK
 ;; - dired-state-info (file)                      OK
 ;; STATE-CHANGING FUNCTIONS
 ;; * create-repo ()                               OK
 ;; * register (files &optional rev comment)       OK
-;; - init-version (file)                          NOT NEEDED
+;; - init-revision (file)                         NOT NEEDED
 ;; - responsible-p (file)                         OK
 ;; - could-register (file)                        NOT NEEDED, DEFAULT IS GOOD
 ;; - receive-file (file rev)                      NOT NEEDED
 ;; - unregister (file)                            OK
 ;; * checkin (files rev comment)                  OK
-;; * find-version (file rev buffer)               OK
+;; * find-revision (file rev buffer)              OK
 ;; * checkout (file &optional editable rev)       OK
 ;; * revert (file &optional contents-done)        OK
 ;; - rollback (files)                             COULD BE SUPPORTED
 ;;                                                 wouldn't be identified as a merge by git,
 ;;                                                 so it's probably not a good idea.
 ;; - merge-news (file)                            see `merge'
-;; - steal-lock (file &optional version)          NOT NEEDED
+;; - steal-lock (file &optional revision)         NOT NEEDED
 ;; HISTORY FUNCTIONS
 ;; * print-log (files &optional buffer)                   OK
 ;; - log-view-mode ()                             OK
-;; - show-log-entry (version)                     NOT NEEDED, DEFAULT IS GOOD
+;; - show-log-entry (revision)                    NOT NEEDED, DEFAULT IS GOOD
 ;; - wash-log (file)                              COULD BE SUPPORTED
 ;; - logentry-check ()                            NOT NEEDED
 ;; - comment-history (file)                       ??
 ;; - update-changelog (files)                     COULD BE SUPPORTED
 ;; * diff (file &optional rev1 rev2 buffer)       OK
-;; - revision-completion-table (file)             NOT SUPPORTED in emacs-22.x
+;; - revision-completion-table (file)             NEEDED?
 ;; - diff-tree (dir &optional rev1 rev2)          OK
 ;; - annotate-command (file buf &optional rev)    OK
 ;; - annotate-time ()                             OK
 ;; MISCELLANEOUS
 ;; - make-version-backups-p (file)                NOT NEEDED
 ;; - repository-hostname (dirname)                NOT NEEDED
-;; - previous-version (file rev)                  OK
-;; - next-version (file rev)                      OK
+;; - previous-revision (file rev)                 OK
+;; - next-revision (file rev)                     OK
 ;; - check-headers ()                             COULD BE SUPPORTED
 ;; - clear-headers ()                             NOT NEEDED
 ;; - delete-file (file)                                   OK
          (vc-file-setprop file 'vc-state 'nil)))
        (forward-line)))))
 
-(defun vc-git-workfile-version (file)
-  "Git-specific version of `vc-workfile-version'."
+(defun vc-git-working-revision (file)
+  "Git-specific version of `vc-working-revision'."
   (let ((str (with-output-to-string
                (with-current-buffer standard-output
                  (call-process "git" nil '(t nil) nil "symbolic-ref" "HEAD")))))
 (defun vc-git-workfile-unchanged-p (file)
   (eq 'up-to-date (vc-git-state file)))
 
+(defun vc-git-mode-line-string (file)
+  "Return string for placement into the modeline for FILE."
+  (let* ((branch (vc-git-working-revision file))
+         (def-ml (vc-default-mode-line-string 'Git file))
+         (help-echo (get-text-property 0 'help-echo def-ml)))
+    (if (zerop (length branch))
+        (propertize
+         (concat def-ml "!")
+         'help-echo (concat help-echo "\nNo current branch (detached HEAD)"))
+      (propertize def-ml
+                  'help-echo (concat help-echo "\nCurrent branch: " branch)))))
+
 (defun vc-git-dired-state-info (file)
   "Git-specific version of `vc-dired-state-info'."
   (let ((git-state (vc-state file)))
   (let ((coding-system-for-write git-commits-coding-system))
     (vc-git-command nil 0 files "commit" "-m" comment "--only" "--")))
 
-(defun vc-git-find-version (file rev buffer)
+(defun vc-git-find-revision (file rev buffer)
   (let ((coding-system-for-read 'binary)
         (coding-system-for-write 'binary)
        (fullname (substring
 
 ;;; MISCELLANEOUS
 
-(defun vc-git-previous-version (file rev)
-  "Git-specific version of `vc-previous-version'."
+(defun vc-git-previous-revision (file rev)
+  "Git-specific version of `vc-previous-revision'."
   (let ((default-directory (file-name-directory (expand-file-name file)))
        (file (file-name-nondirectory file)))
     (vc-git-symbolic-commit
           (point)
           (1- (point-max))))))))
 
-(defun vc-git-next-version (file rev)
-  "Git-specific version of `vc-next-version'."
+(defun vc-git-next-revision (file rev)
+  "Git-specific version of `vc-next-revision'."
   (let* ((default-directory (file-name-directory
                             (expand-file-name file)))
        (file (file-name-nondirectory file))
index a7c10eeb0272ee847cbdaf5e64c8e45618e40789..2e90d06fbc57ce455730b27156046369b0059a1c 100644 (file)
 ;; beginning of vc.el. The current status is:
 
 ;; FUNCTION NAME                               STATUS
+;; BACKEND PROPERTIES
+;; * revision-granularity                      OK
+;; STATE-QUERYING FUNCTIONS
 ;; * registered (file)                         OK
 ;; * state (file)                              OK
 ;; - state-heuristic (file)                    ?? PROBABLY NOT NEEDED
 ;; - dir-state (dir)                           OK
-;; * workfile-version (file)                   OK
+;; * working-revision (file)                   OK
 ;; - latest-on-branch-p (file)                 ??
 ;; * checkout-model (file)                     OK
 ;; - workfile-unchanged-p (file)               OK
 ;; - mode-line-string (file)                   NOT NEEDED
 ;; - dired-state-info (file)                   OK
 ;; STATE-CHANGING FUNCTIONS
-;; * register (file &optional rev comment)     OK
-;; - init-version ()                           NOT NEEDED
+;; * register (files &optional rev comment)    OK
+;; * create-repo ()                            OK
+;; - init-revision ()                           NOT NEEDED
 ;; - responsible-p (file)                      OK
 ;; - could-register (file)                     OK
 ;; - receive-file (file rev)                   ?? PROBABLY NOT NEEDED
 ;; - unregister (file)                         COMMENTED OUT, MAY BE INCORRECT
-;; * checkin (file rev comment)                OK
-;; * find-version (file rev buffer)            OK
+;; * checkin (files rev comment)               OK
+;; * find-revision (file rev buffer)            OK
 ;; * checkout (file &optional editable rev)    OK
 ;; * revert (file &optional contents-done)     OK
-;; - cancel-version (file editable)            ?? PROBABLY NOT NEEDED   
+;; - rollback (files)                          ?? PROBABLY NOT NEEDED   
 ;; - merge (file rev1 rev2)                    NEEDED
 ;; - merge-news (file)                         NEEDED
-;; - steal-lock (file &optional version)       NOT NEEDED
+;; - steal-lock (file &optional revision)       NOT NEEDED
 ;; HISTORY FUNCTIONS
-;; * print-log (file &optional buffer)         OK
+;; * print-log (files &optional buffer)        OK
 ;; - log-view-mode ()                          OK
-;; - show-log-entry (version)                  NOT NEEDED, DEFAULT IS GOOD
+;; - show-log-entry (revision)                  NOT NEEDED, DEFAULT IS GOOD
 ;; - wash-log (file)                           ??
 ;; - logentry-check ()                         NOT NEEDED
 ;; - comment-history (file)                    NOT NEEDED
 ;; - update-changelog (files)                  NOT NEEDED
-;; * diff (file &optional rev1 rev2 buffer)    OK
+;; * diff (files &optional rev1 rev2 buffer)   OK
 ;; - revision-completion-table (file)          COMMENTED OUT AS A WORKAROUND FOR A BUG
 ;; - diff-tree (dir &optional rev1 rev2)       TEST IT
 ;; - annotate-command (file buf &optional rev) OK
@@ -85,8 +89,8 @@
 ;; MISCELLANEOUS
 ;; - make-version-backups-p (file)             ??
 ;; - repository-hostname (dirname)             ?? 
-;; - previous-version (file rev)               OK
-;; - next-version (file rev)                   OK
+;; - previous-revision (file rev)               OK
+;; - next-revision (file rev)                   OK
 ;; - check-headers ()                          ??
 ;; - clear-headers ()                          ??
 ;; - delete-file (file)                        TEST IT
   :version "22.2"
   :group 'vc)
 
+\f
+;;; Properties of the backend
+
+(defun vc-hg-revision-granularity ()
+     'repository)
+
 ;;; State querying functions
 
 ;;;###autoload (defun vc-hg-registered (file)
         ;; should not show up in vc-dired, so don't deal with them
         ;; here.
         ((eq status-char ?A)
-         (vc-file-setprop file 'vc-workfile-version "0")
+         (vc-file-setprop file 'vc-working-revision "0")
          (vc-file-setprop file 'vc-state 'edited))
         ((eq status-char ?M)
          (vc-file-setprop file 'vc-state 'edited))
          (vc-file-setprop file 'vc-state 'nil)))
        (forward-line)))))
 
-(defun vc-hg-workfile-version (file)
-  "Hg-specific version of `vc-workfile-version'."
+(defun vc-hg-working-revision (file)
+  "Hg-specific version of `vc-working-revision'."
   (let* 
       ((status nil)
        (out
 
 ;;; History functions
 
-(defun vc-hg-print-log(file &optional buffer)
-  "Get change log associated with FILE."
+(defun vc-hg-print-log(files &optional buffer)
+  "Get change log associated with FILES."
   ;; `log-view-mode' needs to have the file name in order to function
   ;; correctly. "hg log" does not print it, so we insert it here by
   ;; hand.
   ;; If the buffer exists from a previous invocation it might be
   ;; read-only.
   (let ((inhibit-read-only t))
-    (with-current-buffer
-       buffer
-      (insert "File:        " (file-name-nondirectory file) "\n")))
-  (vc-hg-command
-   buffer
-   (if (and (vc-stay-local-p file) (fboundp 'start-process)) 'async 0)
-   file "log"))
+    ;; We need to loop and call "hg log" on each file separately. 
+    ;; "hg log" with multiple file arguments mashes all the logs
+    ;; together.
+    (dolist (file files)
+      (with-current-buffer
+         buffer
+       (insert "File:        " (file-name-nondirectory file) "\n"))
+      (vc-hg-command buffer 0 file "log"))))
 
 (defvar log-view-message-re)
 (defvar log-view-file-re)
 (defvar log-view-font-lock-keywords)
 
 (define-derived-mode vc-hg-log-view-mode log-view-mode "Hg-Log-View"
-  (require 'add-log) ;; we need the faces add-log
-  ;; Don't have file markers, so use impossible regexp.
+  (require 'add-log) ;; we need the add-log faces
   (set (make-local-variable 'log-view-file-re) "^File:[ \t]+\\(.+\\)")
   (set (make-local-variable 'log-view-message-re)
        "^changeset:[ \t]*\\([0-9]+\\):\\(.+\\)")
          ("^date: \\(.+\\)" (1 'change-log-date))
          ("^summary:[ \t]+\\(.+\\)" (1 'log-view-message))))))
 
-(defun vc-hg-diff (file &optional oldvers newvers buffer)
-  "Get a difference report using hg between two versions of FILE."
-  (let ((working (vc-workfile-version file)))
+(defun vc-hg-diff (files &optional oldvers newvers buffer)
+  "Get a difference report using hg between two revisions of FILES."
+  (let ((working (vc-working-revision (car files))))
     (if (and (equal oldvers working) (not newvers))
        (setq oldvers nil))
     (if (and (not oldvers) newvers)
        (setq oldvers working))
     (apply #'vc-hg-command (or buffer "*vc-diff*") nil
-          (file-name-nondirectory file)
-          "--cwd" (file-name-directory file) 
+          (mapcar (lambda (file) (file-name-nondirectory file)) files)
+          "--cwd" (file-name-directory (car files))
           "diff"
           (append
            (if oldvers
                  table (lambda () (vc-hg-revision-table file))))
     table))
 
-(defalias 'vc-hg-diff-tree 'vc-hg-diff)
+(defun vc-hg-diff-tree (file &optional oldvers newvers buffer)
+  (vc-hg-diff (list file) oldvers newvers buffer))
 
-(defun vc-hg-annotate-command (file buffer &optional version)
+(defun vc-hg-annotate-command (file buffer &optional revision)
   "Execute \"hg annotate\" on FILE, inserting the contents in BUFFER.
-Optional arg VERSION is a version to annotate from."
-  (vc-hg-command buffer 0 file "annotate" "-d" "-n" (if version (concat "-r" version)))
+Optional arg REVISION is a revision to annotate from."
+  (vc-hg-command buffer 0 file "annotate" "-d" "-n" (if revision (concat "-r" revision)))
   (with-current-buffer buffer
     (goto-char (point-min))
     (re-search-forward "^[0-9]")
@@ -327,22 +338,22 @@ Optional arg VERSION is a version to annotate from."
     (beginning-of-line)
     (if (looking-at vc-hg-annotate-re) (match-string-no-properties 1))))
 
-(defun vc-hg-previous-version (file rev)
+(defun vc-hg-previous-revision (file rev)
   (let ((newrev (1- (string-to-number rev))))
     (when (>= newrev 0)
       (number-to-string newrev))))
 
-(defun vc-hg-next-version (file rev)
+(defun vc-hg-next-revision (file rev)
   (let ((newrev (1+ (string-to-number rev)))
-       (tip-version 
+       (tip-revision 
         (with-temp-buffer
           (vc-hg-command t 0 nil "tip")
           (goto-char (point-min))
           (re-search-forward "^changeset:[ \t]*\\([0-9]+\\):")
           (string-to-number (match-string-no-properties 1)))))
-    ;; We don't want to exceed the maximum possible version number, ie
-    ;; the tip version.
-    (when (<= newrev tip-version)
+    ;; We don't want to exceed the maximum possible revision number, ie
+    ;; the tip revision.
+    (when (<= newrev tip-revision)
       (number-to-string newrev))))
 
 ;; Modelled after the similar function in vc-bzr.el
@@ -358,11 +369,15 @@ Optional arg VERSION is a version to annotate from."
   "Rename file from OLD to NEW using `hg mv'."
   (vc-hg-command nil 0 new old "mv"))
 
-(defun vc-hg-register (file &optional rev comment)
-  "Register FILE under hg.
+(defun vc-hg-register (files &optional rev comment)
+  "Register FILES under hg.
 REV is ignored.
 COMMENT is ignored."
-  (vc-hg-command nil 0 file "add"))
+  (vc-hg-command nil 0 files "add"))
+
+(defun vc-hg-create-repo ()
+  "Create a new Mercurial repository."
+  (vc-hg-command nil 0 nil "init"))
 
 (defalias 'vc-hg-responsible-p 'vc-hg-root)
 
@@ -382,12 +397,12 @@ COMMENT is ignored."
 ;;   "Unregister FILE from hg."
 ;;   (vc-hg-command nil nil file "remove"))
 
-(defun vc-hg-checkin (file rev comment)
+(defun vc-hg-checkin (files rev comment)
   "Hg-specific version of `vc-backend-checkin'.
 REV is ignored."
-  (vc-hg-command nil 0 file  "commit" "-m" comment))
+  (vc-hg-command nil 0 files  "commit" "-m" comment))
 
-(defun vc-hg-find-version (file rev buffer)
+(defun vc-hg-find-revision (file rev buffer)
   (let ((coding-system-for-read 'binary)
         (coding-system-for-write 'binary))
     (if rev
@@ -417,7 +432,7 @@ REV is the revision to check out into WORKFILE."
   "Hg-specific version of `vc-dired-state-info'."
   (let ((hg-state (vc-state file)))
     (if (eq hg-state 'edited)
-       (if (equal (vc-workfile-version file) "0")
+       (if (equal (vc-working-revision file) "0")
            "(added)" "(modified)")
       ;; fall back to the default VC representation
       (vc-default-dired-state-info 'Hg file))))
@@ -427,13 +442,78 @@ REV is the revision to check out into WORKFILE."
   (unless contents-done
     (with-temp-buffer (vc-hg-command t 0 file "revert"))))
 
+;;; Hg specific functionality.
+
+;;; XXX This functionality is experimental/work in progress. It might
+;;; change without notice.
+(defvar vc-hg-extra-menu-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [incoming] '(menu-item "Show incoming" vc-hg-incoming))
+    (define-key map [outgoing] '(menu-item "Show outgoing" vc-hg-outgoing))
+    map))
+
+(defun vc-hg-extra-menu () vc-hg-extra-menu-map)
+
+(define-derived-mode vc-hg-outgoing-mode vc-hg-log-view-mode "Hg-Outgoing")
+
+(define-derived-mode vc-hg-incoming-mode vc-hg-log-view-mode "Hg-Incoming")
+
+;; XXX this adds another top level menu, instead figure out how to
+;; replace the Log-View menu.
+(easy-menu-define log-view-mode-menu vc-hg-outgoing-mode-map
+  "Hg-outgoing Display Menu"
+  `("Hg-outgoing"
+    ["Push selected"  vc-hg-push]))
+
+(easy-menu-define log-view-mode-menu vc-hg-incoming-mode-map
+  "Hg-incoming Display Menu"
+  `("Hg-incoming"
+    ["Pull selected"  vc-hg-pull]))
+
+(defun vc-hg-outgoing ()
+  (interactive)
+  (let ((bname "*Hg outgoing*"))
+    (vc-hg-command bname 0 nil "outgoing" "-n")
+    (pop-to-buffer bname)
+    (vc-hg-outgoing-mode)))
+
+(defun vc-hg-incoming ()
+  (interactive)
+  (let ((bname "*Hg incoming*"))
+    (vc-hg-command bname 0 nil "incoming" "-n")
+    (pop-to-buffer bname)
+    (vc-hg-incoming-mode)))
+
+;; XXX maybe also add key bindings for these functions.
+(defun vc-hg-push ()
+  (interactive)
+  (let ((marked-list (log-view-get-marked)))
+    (if marked-list
+       (vc-hg-command 
+        nil 0 nil
+        (cons "push"
+              (apply 'nconc
+                     (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
+       (vc-hg-command 
+        nil 0 nil
+        (cons "pull"
+              (apply 'nconc
+                     (mapcar (lambda (arg) (list "-r" arg)) marked-list))))
+      (error "No log entries selected for pull"))))
+
 ;;; Internal functions
 
-(defun vc-hg-command (buffer okstatus file &rest flags)
+(defun vc-hg-command (buffer okstatus file-or-list &rest flags)
   "A wrapper around `vc-do-command' for use in vc-hg.el.
 The difference to vc-do-command is that this function always invokes `hg',
 and that it passes `vc-hg-global-switches' to it before FLAGS."
-  (apply 'vc-do-command buffer okstatus "hg" file
+  (apply 'vc-do-command buffer okstatus "hg" file-or-list
          (if (stringp vc-hg-global-switches)
              (cons vc-hg-global-switches flags)
            (append vc-hg-global-switches
index 6684190e3d20fc190b06ccb64f9bddfbaf42289e..92c6c7344836c2d80ac861046852c1e111940b4b 100644 (file)
@@ -73,26 +73,26 @@ Removing an entry from the list prevents VC from being activated
 when visiting a file managed by that backend.
 An empty list disables VC altogether."
   :type '(repeat symbol)
-  :version "22.2"
+  :version "23.1"
   :group 'vc)
 
 (defcustom vc-path
   (if (file-directory-p "/usr/sccs")
       '("/usr/sccs")
     nil)
-  "*List of extra directories to search for version control commands."
+  "List of extra directories to search for version control commands."
   :type '(repeat directory)
   :group 'vc)
 
 (defcustom vc-make-backup-files nil
-  "*If non-nil, backups of registered files are made as with other files.
+  "If non-nil, backups of registered files are made as with other files.
 If nil (the default), files covered by version control don't get backups."
   :type 'boolean
   :group 'vc
   :group 'backup)
 
 (defcustom vc-follow-symlinks 'ask
-  "*What to do if visiting a symbolic link to a file under version control.
+  "What to do if visiting a symbolic link to a file under version control.
 Editing such a file through the link bypasses the version control system,
 which is dangerous and probably not what you want.
 
@@ -106,26 +106,26 @@ visited and a warning displayed."
   :group 'vc)
 
 (defcustom vc-display-status t
-  "*If non-nil, display revision number and lock status in modeline.
+  "If non-nil, display revision number and lock status in modeline.
 Otherwise, not displayed."
   :type 'boolean
   :group 'vc)
 
 
 (defcustom vc-consult-headers t
-  "*If non-nil, identify work files by searching for version headers."
+  "If non-nil, identify work files by searching for version headers."
   :type 'boolean
   :group 'vc)
 
 (defcustom vc-keep-workfiles t
-  "*If non-nil, don't delete working files after registering changes.
+  "If non-nil, don't delete working files after registering changes.
 If the back-end is CVS, workfiles are always kept, regardless of the
 value of this flag."
   :type 'boolean
   :group 'vc)
 
 (defcustom vc-mistrust-permissions nil
-  "*If non-nil, don't assume permissions/ownership track version-control status.
+  "If non-nil, don't assume permissions/ownership track version-control status.
 If nil, do rely on the permissions.
 See also variable `vc-consult-headers'."
   :type 'boolean
@@ -139,7 +139,7 @@ See also variable `vc-consult-headers'."
                    (vc-backend-subdirectory-name file)))))
 
 (defcustom vc-stay-local t
-  "*Non-nil means use local operations when possible for remote repositories.
+  "Non-nil means use local operations when possible for remote repositories.
 This avoids slow queries over the network and instead uses heuristics
 and past information to determine the current status of a file.
 
@@ -160,32 +160,36 @@ by these regular expressions."
 
 (defun vc-stay-local-p (file)
   "Return non-nil if VC should stay local when handling FILE.
-This uses the `repository-hostname' backend operation."
-  (let* ((backend (vc-backend file))
-        (sym (vc-make-backend-sym backend 'stay-local))
-        (stay-local (if (boundp sym) (symbol-value sym) t)))
-    (if (eq stay-local t) (setq stay-local vc-stay-local))
-    (if (symbolp stay-local) stay-local
-      (let ((dirname (if (file-directory-p file)
-                        (directory-file-name file)
-                      (file-name-directory file))))
-       (eq 'yes
-           (or (vc-file-getprop dirname 'vc-stay-local-p)
-               (vc-file-setprop
-                dirname 'vc-stay-local-p
-                (let ((hostname (vc-call-backend
-                                 backend 'repository-hostname dirname)))
-                  (if (not hostname)
-                      'no
-                    (let ((default t))
-                      (if (eq (car-safe stay-local) 'except)
-                          (setq default nil stay-local (cdr stay-local)))
-                      (when (consp stay-local)
-                        (setq stay-local
-                              (mapconcat 'identity stay-local "\\|")))
-                      (if (if (string-match stay-local hostname)
-                              default (not default))
-                          'yes 'no)))))))))))
+This uses the `repository-hostname' backend operation.
+If FILE is a list of files, return non-nil if any of them
+individually should stay local."
+  (if (listp file)
+      (delq nil (mapcar 'vc-stay-local-p file))
+    (let* ((backend (vc-backend file))
+          (sym (vc-make-backend-sym backend 'stay-local))
+          (stay-local (if (boundp sym) (symbol-value sym) t)))
+      (if (eq stay-local t) (setq stay-local vc-stay-local))
+      (if (symbolp stay-local) stay-local
+       (let ((dirname (if (file-directory-p file)
+                          (directory-file-name file)
+                        (file-name-directory file))))
+         (eq 'yes
+             (or (vc-file-getprop dirname 'vc-stay-local-p)
+                 (vc-file-setprop
+                  dirname 'vc-stay-local-p
+                  (let ((hostname (vc-call-backend
+                                   backend 'repository-hostname dirname)))
+                    (if (not hostname)
+                        'no
+                      (let ((default t))
+                        (if (eq (car-safe stay-local) 'except)
+                            (setq default nil stay-local (cdr stay-local)))
+                        (when (consp stay-local)
+                          (setq stay-local
+                                (mapconcat 'identity stay-local "\\|")))
+                        (if (if (string-match stay-local hostname)
+                                default (not default))
+                            'yes 'no))))))))))))
 
 ;;; This is handled specially now.
 ;; Tell Emacs about this new kind of minor mode
@@ -276,7 +280,10 @@ It is usually called via the `vc-call' macro."
      (t                (apply f args)))))
 
 (defmacro vc-call (fun file &rest args)
-  ;; BEWARE!! `file' is evaluated twice!!
+  "A convenience macro for calling VC backend functions.
+Functions called by this macro must accept FILE as the first argument.
+ARGS specifies any additional arguments. FUN should be unquoted.
+BEWARE!! `file' is evaluated twice!!"
   `(vc-call-backend (vc-backend ,file) ',fun ,file ,@args))
 \f
 (defsubst vc-parse-buffer (pattern i)
@@ -355,7 +362,8 @@ file was previously registered under a certain backend, then that
 backend is tried first."
   (let (handler)
     (cond
-     ((string-match vc-ignore-dir-regexp (file-name-directory file)) nil)
+     ((and (file-name-directory file) (string-match vc-ignore-dir-regexp (file-name-directory file)))
+      nil)
      ((and (boundp 'file-name-handler-alist)
           (setq handler (find-file-name-handler file 'vc-registered)))
       ;; handler should set vc-backend and return t if registered
@@ -365,7 +373,7 @@ backend is tried first."
       ;; Try vc-BACKEND-registered for each handled BACKEND.
       (catch 'found
        (let ((backend (vc-file-getprop file 'vc-backend)))
-         (mapcar
+         (mapc
           (lambda (b)
             (and (vc-call-backend b 'registered file)
                  (vc-file-setprop file 'vc-backend b)
@@ -377,20 +385,26 @@ backend is tried first."
         (vc-file-setprop file 'vc-backend 'none)
         nil)))))
 
-(defun vc-backend (file)
-  "Return the version control type of FILE, nil if it is not registered."
+(defun vc-backend (file-or-list)
+  "Return the version control type of FILE-OR-LIST, nil if it's not registered.
+If the argument is a list, the files must all have the same back end."
   ;; `file' can be nil in several places (typically due to the use of
   ;; code like (vc-backend buffer-file-name)).
-  (when (stringp file)
-    (let ((property (vc-file-getprop file 'vc-backend)))
-      ;; Note that internally, Emacs remembers unregistered
-      ;; files by setting the property to `none'.
-      (cond ((eq property 'none) nil)
-           (property)
-           ;; vc-registered sets the vc-backend property
-           (t (if (vc-registered file)
-                  (vc-file-getprop file 'vc-backend)
-                nil))))))
+  (cond ((stringp file-or-list)
+        (let ((property (vc-file-getprop file-or-list 'vc-backend)))
+          ;; Note that internally, Emacs remembers unregistered
+          ;; files by setting the property to `none'.
+          (cond ((eq property 'none) nil)
+                (property)
+                ;; vc-registered sets the vc-backend property
+                (t (if (vc-registered file-or-list)
+                       (vc-file-getprop file-or-list 'vc-backend)
+                     nil)))))
+       ((and file-or-list (listp file-or-list))
+        (vc-backend (car file-or-list)))
+       (t
+        nil)))
+
 
 (defun vc-backend-subdirectory-name (file)
   "Return where the master and lock FILEs for the current directory are kept."
@@ -479,12 +493,12 @@ For registered files, the value returned is one of:
                      prompt the user to do it)."
   ;; FIXME: New (sub)states needed (?):
   ;; - `added' (i.e. `edited' but with no base version yet,
-  ;;            typically represented by vc-workfile-version = "0")
+  ;;            typically represented by vc-working-revision = "0")
   ;; - `conflict' (i.e. `edited' with conflict markers)
   ;; - `removed'
   ;; - `copied' and `moved' (might be handled by `removed' and `added')
   (or (vc-file-getprop file 'vc-state)
-      (if (vc-backend file)
+      (if (and (> (length file) 0) (vc-backend file))
           (vc-file-setprop file 'vc-state
                            (vc-call state-heuristic file)))))
 
@@ -522,7 +536,7 @@ Return non-nil if FILE is unchanged."
   (zerop (condition-case err
              ;; If the implementation supports it, let the output
              ;; go to *vc*, not *vc-diff*, since this is an internal call.
-             (vc-call diff file nil nil "*vc*")
+             (vc-call diff (list file) nil nil "*vc*")
            (wrong-number-of-arguments
             ;; If this error came from the above call to vc-BACKEND-diff,
             ;; try again without the optional buffer argument (for
@@ -533,15 +547,15 @@ Return non-nil if FILE is unchanged."
                                                         'diff))))
                     (not (eq (caddr err) 4)))
                 (signal (car err) (cdr err))
-              (vc-call diff file))))))
+              (vc-call diff (list file)))))))
 
-(defun vc-workfile-version (file)
-  "Return the version level of the current workfile FILE.
+(defun vc-working-revision (file)
+  "Return the repository version from which FILE was checked out.
 If FILE is not registered, this function always returns nil."
-  (or (vc-file-getprop file 'vc-workfile-version)
+  (or (vc-file-getprop file 'vc-working-revision)
       (if (vc-backend file)
-          (vc-file-setprop file 'vc-workfile-version
-                           (vc-call workfile-version file)))))
+          (vc-file-setprop file 'vc-working-revision
+                           (vc-call working-revision file)))))
 
 (defun vc-default-registered (backend file)
   "Check if FILE is registered in BACKEND using vc-BACKEND-master-templates."
@@ -642,14 +656,14 @@ a regexp for matching all such backup files, regardless of the version."
               "\\.~.+" (unless manual "\\.") "~")
     (expand-file-name (concat (file-name-nondirectory file)
                               ".~" (subst-char-in-string
-                                    ?/ ?_ (or rev (vc-workfile-version file)))
+                                    ?/ ?_ (or rev (vc-working-revision file)))
                               (unless manual ".") "~")
                       (file-name-directory file))))
 
 (defun vc-delete-automatic-version-backups (file)
   "Delete all existing automatic version backups for FILE."
   (condition-case nil
-      (mapcar
+      (mapc
        'delete-file
        (directory-files (or (file-name-directory file) default-directory) t
                        (vc-version-backup-file-name file nil nil t)))
@@ -730,9 +744,22 @@ visiting FILE."
   (let ((backend (vc-backend file)))
     (if (not backend)
        (setq vc-mode nil)
-      (setq vc-mode (concat " " (if vc-display-status
-                                   (vc-call mode-line-string file)
-                                 (symbol-name backend))))
+      (let* ((ml-string (vc-call mode-line-string file))
+             (ml-echo (get-text-property 0 'help-echo ml-string)))
+        (setq vc-mode
+              (concat
+               " "
+               (if (null vc-display-status)
+                   (symbol-name backend)
+                 (propertize
+                  ml-string
+                  'mouse-face 'mode-line-highlight
+                  'help-echo 
+                  (concat (or ml-echo
+                              (format "File under the %s version control system"
+                                      backend))
+                          "\nmouse-1: Version Control menu")
+                  'local-map vc-mode-line-map)))))
       ;; If the file is locked by some other user, make
       ;; the buffer read-only.  Like this, even root
       ;; cannot modify a file that someone else has locked.
@@ -762,17 +789,24 @@ Format:
 This function assumes that the file is registered."
   (setq backend (symbol-name backend))
   (let ((state   (vc-state file))
-       (rev     (vc-workfile-version file)))
-    (cond ((or (eq state 'up-to-date)
-              (eq state 'needs-patch))
-          (concat backend "-" rev))
-          ((stringp state)
-          (concat backend ":" state ":" rev))
-          (t
-           ;; Not just for the 'edited state, but also a fallback
-           ;; for all other states.  Think about different symbols
-           ;; for 'needs-patch and 'needs-merge.
-           (concat backend ":" rev)))))
+       (state-echo nil)
+       (rev     (vc-working-revision file)))
+    (propertize
+     (cond ((or (eq state 'up-to-date)
+               (eq state 'needs-patch))
+           (setq state-echo "Up to date file")
+           (concat backend "-" rev))
+          ((stringp state)
+           (setq state-echo (concat "File locked by" state))
+           (concat backend ":" state ":" rev))
+          (t
+           ;; Not just for the 'edited state, but also a fallback
+           ;; for all other states.  Think about different symbols
+           ;; for 'needs-patch and 'needs-merge.
+           (setq state-echo "Locally modified file")
+           (concat backend ":" rev)))
+     'help-echo (concat state-echo " under the " backend
+                       " version control system"))))
 
 (defun vc-follow-link ()
   "If current buffer visits a symbolic link, visit the real file.
@@ -803,7 +837,7 @@ current, and kill the buffer that visits the link."
   (when buffer-file-name
     (vc-file-clearprops buffer-file-name)
     (cond
-     ((ignore-errors (vc-backend buffer-file-name))
+     ((with-demoted-errors (vc-backend buffer-file-name))
       ;; Compute the state and put it in the modeline.
       (vc-mode-line buffer-file-name)
       (unless vc-make-backup-files
@@ -878,7 +912,7 @@ Used in `find-file-not-found-functions'."
   (let ((map (make-sparse-keymap)))
     (define-key map "a" 'vc-update-change-log)
     (define-key map "b" 'vc-switch-backend)
-    (define-key map "c" 'vc-cancel-version)
+    (define-key map "c" 'vc-rollback)
     (define-key map "d" 'vc-directory)
     (define-key map "g" 'vc-annotate)
     (define-key map "h" 'vc-insert-headers)
@@ -887,10 +921,11 @@ Used in `find-file-not-found-functions'."
     (define-key map "m" 'vc-merge)
     (define-key map "r" 'vc-retrieve-snapshot)
     (define-key map "s" 'vc-create-snapshot)
-    (define-key map "u" 'vc-revert-buffer)
+    (define-key map "u" 'vc-revert)
     (define-key map "v" 'vc-next-action)
+    (define-key map "+" 'vc-update)
     (define-key map "=" 'vc-diff)
-    (define-key map "~" 'vc-version-other-window)
+    (define-key map "~" 'vc-revision-other-window)
     map))
 (fset 'vc-prefix-map vc-prefix-map)
 (define-key global-map "\C-xv" 'vc-prefix-map)
@@ -907,8 +942,8 @@ Used in `find-file-not-found-functions'."
     (define-key map [separator1] '("----"))
     (define-key map [vc-annotate] '("Annotate" . vc-annotate))
     (define-key map [vc-rename-file] '("Rename File" . vc-rename-file))
-    (define-key map [vc-version-other-window]
-      '("Show Other Version" . vc-version-other-window))
+    (define-key map [vc-revision-other-window]
+      '("Show Other Version" . vc-revision-other-window))
     (define-key map [vc-diff] '("Compare with Base Version" . vc-diff))
     (define-key map [vc-update-change-log]
       '("Update ChangeLog" . vc-update-change-log))
@@ -916,9 +951,9 @@ Used in `find-file-not-found-functions'."
     (define-key map [separator2] '("----"))
     (define-key map [vc-insert-header]
       '("Insert Header" . vc-insert-headers))
-    (define-key map [undo] '("Undo Last Check-In" . vc-cancel-version))
-    (define-key map [vc-revert-buffer]
-      '("Revert to Base Version" . vc-revert-buffer))
+    (define-key map [undo] '("Undo Last Check-In" . vc-rollback))
+    (define-key map [vc-revert]
+      '("Revert to Base Version" . vc-revert))
     (define-key map [vc-update]
       '("Update to Latest Version" . vc-update))
     (define-key map [vc-next-action] '("Check In/Out" . vc-next-action))
@@ -950,13 +985,13 @@ Used in `find-file-not-found-functions'."
 
 ;;(put 'vc-rename-file 'menu-enable 'vc-mode)
 ;;(put 'vc-annotate 'menu-enable '(eq (vc-buffer-backend) 'CVS))
-;;(put 'vc-version-other-window 'menu-enable 'vc-mode)
+;;(put 'vc-revision-other-window 'menu-enable 'vc-mode)
 ;;(put 'vc-diff 'menu-enable 'vc-mode)
 ;;(put 'vc-update-change-log 'menu-enable
 ;;     '(member (vc-buffer-backend) '(RCS CVS)))
 ;;(put 'vc-print-log 'menu-enable 'vc-mode)
-;;(put 'vc-cancel-version 'menu-enable 'vc-mode)
-;;(put 'vc-revert-buffer 'menu-enable 'vc-mode)
+;;(put 'vc-rollback 'menu-enable 'vc-mode)
+;;(put 'vc-revert 'menu-enable 'vc-mode)
 ;;(put 'vc-insert-headers 'menu-enable 'vc-mode)
 ;;(put 'vc-next-action 'menu-enable 'vc-mode)
 ;;(put 'vc-register 'menu-enable '(and buffer-file-name (not vc-mode)))
index 0007aa45ea4f4808a0ac44b8542b45f0fbe68b60..aa99e3f4273f676ee8662b427f694f366e74c8b0 100644 (file)
@@ -109,6 +109,11 @@ This is only meaningful if you don't use the implicit checkout model
   :version "22.1"
   :group 'vc)
 
+;;; Properties of the backend
+
+(defun vc-mcvs-revision-granularity ()
+     'file)
+
 ;;;
 ;;; State-querying functions
 ;;;
@@ -191,8 +196,8 @@ This is only meaningful if you don't use the implicit checkout model
            (goto-char (point-max))
            (widen)))))))
 
-(defun vc-mcvs-workfile-version (file)
-  (vc-cvs-workfile-version
+(defun vc-mcvs-working-revision (file)
+  (vc-cvs-working-revision
    (expand-file-name (vc-file-getprop file 'mcvs-inode)
                     (vc-file-getprop file 'mcvs-root))))
 
@@ -202,13 +207,16 @@ This is only meaningful if you don't use the implicit checkout model
 ;;; State-changing functions
 ;;;
 
-(defun vc-mcvs-register (file &optional rev comment)
-  "Register FILE into the Meta-CVS version-control system.
+(defun vc-mcvs-register (files &optional rev comment)
+  "Register FILES into the Meta-CVS version-control system.
 COMMENT can be used to provide an initial description of FILE.
 
 `vc-register-switches' and `vc-mcvs-register-switches' are passed to
 the Meta-CVS command (in that order)."
-  (let* ((filename (file-name-nondirectory file))
+  ;; FIXME: multiple-file case should be made to work
+  (if (> (length files) 1) (error "Registering filesets is not yet supported."))
+  (let* ((file (car files)) 
+        (filename (file-name-nondirectory file))
         (extpos (string-match "\\." filename))
         (ext (if extpos (substring filename (1+ extpos))))
         (root (vc-mcvs-root file))
@@ -245,7 +253,7 @@ the Meta-CVS command (in that order)."
                (vc-switches 'MCVS 'register))
     ;; I'm not sure exactly why, but if we don't setup the inode and root
     ;; prop of the file, things break later on in vc-mode-line that
-    ;; ends up calling vc-mcvs-workfile-version.
+    ;; ends up calling vc-mcvs-working-revision.
     ;; We also need to set vc-checkout-time so that vc-workfile-unchanged-p
     ;; doesn't try to call `mcvs diff' on the file.
     (vc-mcvs-registered file)))
@@ -257,9 +265,9 @@ the Meta-CVS command (in that order)."
   "Return non-nil if FILE could be registered in Meta-CVS.
 This is only possible if Meta-CVS is responsible for FILE's directory.")
 
-(defun vc-mcvs-checkin (file rev comment)
+(defun vc-mcvs-checkin (files rev comment)
   "Meta-CVS-specific version of `vc-backend-checkin'."
-  (unless (or (not rev) (vc-mcvs-valid-version-number-p rev))
+  (unless (or (not rev) (vc-mcvs-valid-revision-number-p rev))
     (if (not (vc-mcvs-valid-symbolic-tag-name-p rev))
        (error "%s is not a valid symbolic tag name" rev)
       ;; If the input revision is a valid symbolic tag name, we create it
@@ -267,14 +275,15 @@ This is only possible if Meta-CVS is responsible for FILE's directory.")
       ;; This file-specific form of branching is deprecated.
       ;; We can't use `mcvs branch' and `mcvs switch' because they cannot
       ;; be applied just to this one file.
-      (apply 'vc-mcvs-command nil 0 file "tag" "-b" (list rev))
-      (apply 'vc-mcvs-command nil 0 file "update" "-r" (list rev))
-      (vc-file-setprop file 'vc-mcvs-sticky-tag rev)
+      (apply 'vc-mcvs-command nil 0 files "tag" "-b" (list rev))
+      (apply 'vc-mcvs-command nil 0 files "update" "-r" (list rev))
+      (mapc (lambda (file) (vc-file-setprop file 'vc-mcvs-sticky-tag rev))
+           files)
       (setq rev nil)))
   ;; This commit might cvs-commit several files (e.g. MAP and TYPES)
   ;; so using numbered revs here is dangerous and somewhat meaningless.
   (when rev (error "Cannot commit to a specific revision number"))
-  (let ((status (apply 'vc-mcvs-command nil 1 file
+  (let ((status (apply 'vc-mcvs-command nil 1 files
                       "ci" "-m" comment
                       (vc-switches 'MCVS 'checkin))))
     (set-buffer "*vc*")
@@ -283,7 +292,8 @@ This is only possible if Meta-CVS is responsible for FILE's directory.")
       ;; Check checkin problem.
       (cond
        ((re-search-forward "Up-to-date check failed" nil t)
-        (vc-file-setprop file 'vc-state 'needs-merge)
+       (mapc (lambda (file) (vc-file-setprop file 'vc-state 'needs-merge))
+             files)
         (error (substitute-command-keys
                 (concat "Up-to-date check failed: "
                         "type \\[vc-next-action] to merge in changes"))))
@@ -292,22 +302,27 @@ This is only possible if Meta-CVS is responsible for FILE's directory.")
         (goto-char (point-min))
         (shrink-window-if-larger-than-buffer)
         (error "Check-in failed"))))
-    ;; Update file properties
-    (vc-file-setprop
-     file 'vc-workfile-version
-     (vc-parse-buffer "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" 2))
-    ;; Forget the checkout model of the file, because we might have
+    ;; Single-file commit?  Then update the revision by parsing the buffer.
+    ;; Otherwise we can't necessarily tell what goes with what; clear
+    ;; its properties so they have to be refetched.
+    (if (= (length files) 1)
+       (vc-file-setprop
+        (car files) 'vc-working-revision
+        (vc-parse-buffer "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" 2))
+      (mapc (lambda (file) (vc-file-clearprops file)) files))
+    ;; Anyway, forget the checkout model of the file, because we might have
     ;; guessed wrong when we found the file.  After commit, we can
     ;; tell it from the permissions of the file (see
     ;; vc-mcvs-checkout-model).
-    (vc-file-setprop file 'vc-checkout-model nil)
+    (mapc (lambda (file) (vc-file-setprop file 'vc-checkout-model nil))
+           files)
 
     ;; if this was an explicit check-in (does not include creation of
     ;; a branch), remove the sticky tag.
     (if (and rev (not (vc-mcvs-valid-symbolic-tag-name-p rev)))
-       (vc-mcvs-command nil 0 file "update" "-A"))))
+       (vc-mcvs-command nil 0 files "update" "-A"))))
 
-(defun vc-mcvs-find-version (file rev buffer)
+(defun vc-mcvs-find-revision (file rev buffer)
   (apply 'vc-mcvs-command
         buffer 0 file
         "-Q"                           ; suppress diagnostic output
@@ -333,8 +348,8 @@ This is only possible if Meta-CVS is responsible for FILE's directory.")
               (vc-mcvs-command nil 0 file "edit")
             (set-file-modes file (logior (file-modes file) 128))
             (if (equal file buffer-file-name) (toggle-read-only -1))))
-    ;; Check out a particular version (or recreate the file).
-    (vc-file-setprop file 'vc-workfile-version nil)
+    ;; Check out a particular revision (or recreate the file).
+    (vc-file-setprop file 'vc-working-revision nil)
     (apply 'vc-mcvs-command nil 0 file
           (if editable "-w")
           "update"
@@ -349,7 +364,7 @@ This is only possible if Meta-CVS is responsible for FILE's directory.")
   (vc-mcvs-command nil 0 new "move" (file-relative-name old)))
 
 (defun vc-mcvs-revert (file &optional contents-done)
-  "Revert FILE to the version it was based on."
+  "Revert FILE to the working revision it was based on."
   (vc-default-revert 'MCVS file contents-done)
   (unless (eq (vc-checkout-model file) 'implicit)
     (if vc-mcvs-use-edit
@@ -357,13 +372,13 @@ This is only possible if Meta-CVS is responsible for FILE's directory.")
       ;; Make the file read-only by switching off all w-bits
       (set-file-modes file (logand (file-modes file) 3950)))))
 
-(defun vc-mcvs-merge (file first-version &optional second-version)
+(defun vc-mcvs-merge (file first-revision &optional second-revision)
   "Merge changes into current working copy of FILE.
-The changes are between FIRST-VERSION and SECOND-VERSION."
+The changes are between FIRST-REVISION and SECOND-REVISION."
   (vc-mcvs-command nil 0 file
                   "update" "-kk"
-                  (concat "-j" first-version)
-                  (concat "-j" second-version))
+                  (concat "-j" first-revision)
+                  (concat "-j" second-revision))
   (vc-file-setprop file 'vc-state 'edited)
   (with-current-buffer (get-buffer "*vc*")
     (goto-char (point-min))
@@ -374,18 +389,18 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
 (defun vc-mcvs-merge-news (file)
   "Merge in any new changes made to FILE."
   (message "Merging changes into %s..." file)
-  ;; (vc-file-setprop file 'vc-workfile-version nil)
+  ;; (vc-file-setprop file 'vc-working-revision nil)
   (vc-file-setprop file 'vc-checkout-time 0)
   (vc-mcvs-command nil 0 file "update")
   ;; Analyze the merge result reported by Meta-CVS, and set
   ;; file properties accordingly.
   (with-current-buffer (get-buffer "*vc*")
     (goto-char (point-min))
-    ;; get new workfile version
+    ;; get new working revision
     (if (re-search-forward
         "^Merging differences between [0-9.]* and \\([0-9.]*\\) into" nil t)
-       (vc-file-setprop file 'vc-workfile-version (match-string 1))
-      (vc-file-setprop file 'vc-workfile-version nil))
+       (vc-file-setprop file 'vc-working-revision (match-string 1))
+      (vc-file-setprop file 'vc-working-revision nil))
     ;; get file status
     (prog1
         (if (eq (buffer-size) 0)
@@ -421,44 +436,32 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
 ;;; History functions
 ;;;
 
-(defun vc-mcvs-print-log (file &optional buffer)
-  "Get change log associated with FILE."
-  (let ((default-directory (vc-mcvs-root file)))
+(defun vc-mcvs-print-log (files &optional buffer)
+  "Get change log associated with FILES."
+  (let ((default-directory (vc-mcvs-root (car files))))
     ;; Run the command from the root dir so that `mcvs filt' returns
     ;; valid relative names.
     (vc-mcvs-command
      buffer
-     (if (and (vc-stay-local-p file) (fboundp 'start-process)) 'async 0)
-     file "log")))
-
-(defun vc-mcvs-diff (file &optional oldvers newvers buffer)
-  "Get a difference report using Meta-CVS between two versions of FILE."
-  (if (string= (vc-workfile-version file) "0")
-      ;; This file is added but not yet committed; there is no master file.
-      (if (or oldvers newvers)
-         (error "No revisions of %s exist" file)
-       ;; We regard this as "changed".
-       ;; Diff it against /dev/null.
-       ;; Note: this is NOT a "mcvs diff".
-       (apply 'vc-do-command (or buffer "*vc-diff*")
-              1 "diff" file
-              (append (vc-switches nil 'diff) '("/dev/null")))
-       ;; Even if it's empty, it's locally modified.
-       1)
+     (if (and (vc-stay-local-p files) (fboundp 'start-process)) 'async 0)
+     files "log")))
+
+(defun vc-mcvs-diff (files &optional oldvers newvers buffer)
+  "Get a difference report using Meta-CVS between two revisions of FILES."
     (let* ((async (and (not vc-disable-async-diff)
-                       (vc-stay-local-p file)
+                       (vc-stay-local-p files)
                        (fboundp 'start-process)))
           ;; Run the command from the root dir so that `mcvs filt' returns
           ;; valid relative names.
-          (default-directory (vc-mcvs-root file))
+          (default-directory (vc-mcvs-root (car files)))
           (status
            (apply 'vc-mcvs-command (or buffer "*vc-diff*")
                   (if async 'async 1)
-                  file "diff"
+                  files "diff"
                   (and oldvers (concat "-r" oldvers))
                   (and newvers (concat "-r" newvers))
                   (vc-switches 'MCVS 'diff))))
-      (if async 1 status))))          ; async diff, pessimistic assumption.
+      (if async 1 status)))           ; async diff, pessimistic assumption.
 
 (defun vc-mcvs-diff-tree (dir &optional rev1 rev2)
   "Diff all files at and below DIR."
@@ -473,13 +476,13 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
             (and rev2 (concat "-r" rev2))
             (vc-switches 'MCVS 'diff)))))
 
-(defun vc-mcvs-annotate-command (file buffer &optional version)
+(defun vc-mcvs-annotate-command (file buffer &optional revision)
   "Execute \"mcvs annotate\" on FILE, inserting the contents in BUFFER.
-Optional arg VERSION is a version to annotate from."
+Optional arg REVISION is a revision to annotate from."
   (vc-mcvs-command
    buffer
    (if (and (vc-stay-local-p file) (fboundp 'start-process)) 'async 0)
-   file "annotate" (if version (concat "-r" version)))
+   file "annotate" (if revision (concat "-r" revision)))
   (with-current-buffer buffer
     (goto-char (point-min))
     (re-search-forward "^[0-9]")
@@ -493,7 +496,7 @@ Optional arg VERSION is a version to annotate from."
 ;;;
 
 (defun vc-mcvs-create-snapshot (dir name branchp)
-  "Assign to DIR's current version a given NAME.
+  "Assign to DIR's current revision a given NAME.
 If BRANCHP is non-nil, the name is created as a branch (and the current
 workspace is immediately moved to that new branch)."
   (if (not branchp)
@@ -525,13 +528,13 @@ If UPDATE is non-nil, then update (resynch) any affected buffers."
                   ((or (string= state "U")
                        (string= state "P"))
                    (vc-file-setprop file 'vc-state 'up-to-date)
-                   (vc-file-setprop file 'vc-workfile-version nil)
+                   (vc-file-setprop file 'vc-working-revision nil)
                    (vc-file-setprop file 'vc-checkout-time
                                     (nth 5 (file-attributes file))))
                   ((or (string= state "M")
                        (string= state "C"))
                    (vc-file-setprop file 'vc-state 'edited)
-                   (vc-file-setprop file 'vc-workfile-version nil)
+                   (vc-file-setprop file 'vc-working-revision nil)
                    (vc-file-setprop file 'vc-checkout-time 0)))
                  (vc-file-setprop file 'vc-mcvs-sticky-tag sticky-tag)
                  (vc-resynch-buffer file t t))))
@@ -593,7 +596,7 @@ and that it passes `vc-mcvs-global-switches' to it before FLAGS."
       (forward-line 1))))
 
 (defalias 'vc-mcvs-valid-symbolic-tag-name-p 'vc-cvs-valid-symbolic-tag-name-p)
-(defalias 'vc-mcvs-valid-version-number-p 'vc-cvs-valid-version-number-p)
+(defalias 'vc-mcvs-valid-revision-number-p 'vc-cvs-valid-revision-number-p)
 
 (provide 'vc-mcvs)
 
index e24bf399ba1393c2c4e34cdcc4d1711744eac803..5365b4d9289332a795a91cc59719f69ecf54685d 100644 (file)
@@ -81,7 +81,7 @@
           'edited
         'up-to-date))))
 
-(defun vc-mtn-workfile-version (file)
+(defun vc-mtn-working-revision (file)
   ;; If `mtn' fails or returns status>0, or if the search fails, just
   ;; return nil.
   (ignore-errors
 (defun vc-mtn-checkin (files rev comment)
   (vc-mtn-command nil 0 files "commit" "-m" comment))
 
-(defun vc-mtn-find-version (file rev buffer)
+(defun vc-mtn-find-revision (file rev buffer)
   (vc-mtn-command buffer 0 file "cat" "-r" rev))
 
 ;; (defun vc-mtn-checkout (file &optional editable rev)
                '(("^[ |]+Author: \\(.*\\)" (1 'change-log-email))
                  ("^[ |]+Date: \\(.*\\)" (1 'change-log-date-face))))))
 
-;; (defun vc-mtn-show-log-entry (version)
+;; (defun vc-mtn-show-log-entry (revision)
 ;;   )
 
 (defun vc-mtn-wash-log (file))
index b341f82a73b8d378c04fa15b4c751a5e246e981d..35eba607bea3c98caa46e887b9b5c08de32d4404 100644 (file)
 
 ;; See vc.el
 
+;; TODO:
+;; - remove call to vc-expand-dirs by implementing our own (which can just
+;;   list the RCS subdir instead).
+
 ;;; Code:
 
 ;;;
@@ -96,6 +100,11 @@ For a description of possible values, see `vc-check-master-templates'."
   :group 'vc)
 
 \f
+;;; Properties of the backend
+
+(defun vc-rcs-revision-granularity ()
+     'file)
+
 ;;;
 ;;; State-querying functions
 ;;;
@@ -114,12 +123,12 @@ For a description of possible values, see `vc-check-master-templates'."
       (and vc-consult-headers
            (vc-rcs-consult-headers file)))
   (let ((state
-         ;; vc-workfile-version might not be known; in that case the
+         ;; vc-working-revision might not be known; in that case the
          ;; property is nil.  vc-rcs-fetch-master-state knows how to
          ;; handle that.
          (vc-rcs-fetch-master-state file
                                     (vc-file-getprop file
-                                                     'vc-workfile-version))))
+                                                     'vc-working-revision))))
     (if (not (eq state 'up-to-date))
         state
       (if (vc-workfile-unchanged-p file)
@@ -172,19 +181,19 @@ For a description of possible values, see `vc-check-master-templates'."
                    (vc-rcs-state file))))
         (vc-rcs-state file)))))
 
-(defun vc-rcs-workfile-version (file)
-  "RCS-specific version of `vc-workfile-version'."
+(defun vc-rcs-working-revision (file)
+  "RCS-specific version of `vc-working-revision'."
   (or (and vc-consult-headers
            (vc-rcs-consult-headers file)
-           (vc-file-getprop file 'vc-workfile-version))
+           (vc-file-getprop file 'vc-working-revision))
       (progn
         (vc-rcs-fetch-master-state file)
-        (vc-file-getprop file 'vc-workfile-version))))
+        (vc-file-getprop file 'vc-working-revision))))
 
 (defun vc-rcs-latest-on-branch-p (file &optional version)
   "Return non-nil if workfile version of FILE is the latest on its branch.
 When VERSION is given, perform check for that version."
-  (unless version (setq version (vc-workfile-version file)))
+  (unless version (setq version (vc-working-revision file)))
   (with-temp-buffer
     (string= version
             (if (vc-trunk-p version)
@@ -212,7 +221,7 @@ When VERSION is given, perform check for that version."
   "RCS-specific implementation of `vc-workfile-unchanged-p'."
   ;; Try to use rcsdiff --brief.  If rcsdiff does not understand that,
   ;; do a double take and remember the fact for the future
-  (let* ((version (concat "-r" (vc-workfile-version file)))
+  (let* ((version (concat "-r" (vc-working-revision file)))
          (status (if (eq vc-rcsdiff-knows-brief 'no)
                      (vc-do-command nil 1 "rcsdiff" file version)
                    (vc-do-command nil 2 "rcsdiff" file "--brief" version))))
@@ -238,17 +247,23 @@ When VERSION is given, perform check for that version."
 ;;; State-changing functions
 ;;;
 
-(defun vc-rcs-register (file &optional rev comment)
-  "Register FILE into the RCS version-control system.
-REV is the optional revision number for the file.  COMMENT can be used
-to provide an initial description of FILE.
+(defun vc-rcs-create-repo ()
+  "Create a new RCS repository."
+  ;; RCS is totally file-oriented, so all we have to do is make the directory
+  (make-directory "RCS"))
+
+(defun vc-rcs-register (files &optional rev comment)
+  "Register FILES into the RCS version-control system.
+REV is the optional revision number for the files.  COMMENT can be used
+to provide an initial description for each FILES.
 
 `vc-register-switches' and `vc-rcs-register-switches' are passed to
 the RCS command (in that order).
 
 Automatically retrieve a read-only version of the file with keywords
 expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
-    (let ((subdir (expand-file-name "RCS" (file-name-directory file))))
+  (let ((subdir (expand-file-name "RCS" (file-name-directory file))))
+    (dolist (file files)
       (and (not (file-exists-p subdir))
           (not (directory-files (file-name-directory file)
                                 nil ".*,v$" t))
@@ -277,11 +292,11 @@ expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
                                (expand-file-name
                                 name
                                 (file-name-directory file))))))
-        (vc-file-setprop file 'vc-workfile-version
+        (vc-file-setprop file 'vc-working-revision
                          (if (re-search-forward
                               "^initial revision: \\([0-9.]+\\).*\n"
                               nil t)
-                             (match-string 1))))))
+                             (match-string 1)))))))
 
 (defun vc-rcs-responsible-p (file)
   "Return non-nil if RCS thinks it would be responsible for registering FILE."
@@ -315,57 +330,59 @@ whether to remove it."
         (yes-or-no-p (format "Directory %s is empty; remove it? " dir))
         (delete-directory dir))))
 
-(defun vc-rcs-checkin (file rev comment)
+(defun vc-rcs-checkin (files rev comment)
   "RCS-specific version of `vc-backend-checkin'."
   (let ((switches (vc-switches 'RCS 'checkin)))
-    (let ((old-version (vc-workfile-version file)) new-version
-         (default-branch (vc-file-getprop file 'vc-rcs-default-branch)))
-      ;; Force branch creation if an appropriate
-      ;; default branch has been set.
-      (and (not rev)
-          default-branch
-          (string-match (concat "^" (regexp-quote old-version) "\\.")
-                        default-branch)
-          (setq rev default-branch)
-          (setq switches (cons "-f" switches)))
-      (if (and (not rev) old-version)
-          (setq rev (vc-branch-part old-version)))
-      (apply 'vc-do-command nil 0 "ci" (vc-name file)
-            ;; if available, use the secure check-in option
-            (and (vc-rcs-release-p "5.6.4") "-j")
-            (concat (if vc-keep-workfiles "-u" "-r") rev)
-            (concat "-m" comment)
-            switches)
-      (vc-file-setprop file 'vc-workfile-version nil)
-
-      ;; determine the new workfile version
-      (set-buffer "*vc*")
-      (goto-char (point-min))
-      (when (or (re-search-forward
-                "new revision: \\([0-9.]+\\);" nil t)
-               (re-search-forward
-                "reverting to previous revision \\([0-9.]+\\)" nil t))
-       (setq new-version (match-string 1))
-       (vc-file-setprop file 'vc-workfile-version new-version))
-
-      ;; if we got to a different branch, adjust the default
-      ;; branch accordingly
-      (cond
-       ((and old-version new-version
-            (not (string= (vc-branch-part old-version)
-                          (vc-branch-part new-version))))
-       (vc-rcs-set-default-branch file
-                                  (if (vc-trunk-p new-version) nil
-                                    (vc-branch-part new-version)))
-       ;; If this is an old RCS release, we might have
-       ;; to remove a remaining lock.
-       (if (not (vc-rcs-release-p "5.6.2"))
-           ;; exit status of 1 is also accepted.
-           ;; It means that the lock was removed before.
-           (vc-do-command nil 1 "rcs" (vc-name file)
-                          (concat "-u" old-version))))))))
-
-(defun vc-rcs-find-version (file rev buffer)
+    ;; Now operate on the files
+    (dolist (file files)
+      (let ((old-version (vc-working-revision file)) new-version
+           (default-branch (vc-file-getprop file 'vc-rcs-default-branch)))
+       ;; Force branch creation if an appropriate
+       ;; default branch has been set.
+       (and (not rev)
+            default-branch
+            (string-match (concat "^" (regexp-quote old-version) "\\.")
+                          default-branch)
+            (setq rev default-branch)
+            (setq switches (cons "-f" switches)))
+       (if (and (not rev) old-version)
+           (setq rev (vc-branch-part old-version)))
+       (apply 'vc-do-command nil 0 "ci" (vc-name file)
+              ;; if available, use the secure check-in option
+              (and (vc-rcs-release-p "5.6.4") "-j")
+              (concat (if vc-keep-workfiles "-u" "-r") rev)
+              (concat "-m" comment)
+              switches)
+       (vc-file-setprop file 'vc-working-revision nil)
+
+       ;; determine the new workfile version
+       (set-buffer "*vc*")
+       (goto-char (point-min))
+       (when (or (re-search-forward
+                  "new revision: \\([0-9.]+\\);" nil t)
+                 (re-search-forward
+                  "reverting to previous revision \\([0-9.]+\\)" nil t))
+         (setq new-version (match-string 1))
+         (vc-file-setprop file 'vc-working-revision new-version))
+
+       ;; if we got to a different branch, adjust the default
+       ;; branch accordingly
+       (cond
+        ((and old-version new-version
+              (not (string= (vc-branch-part old-version)
+                            (vc-branch-part new-version))))
+         (vc-rcs-set-default-branch file
+                                    (if (vc-trunk-p new-version) nil
+                                      (vc-branch-part new-version)))
+         ;; If this is an old RCS release, we might have
+         ;; to remove a remaining lock.
+         (if (not (vc-rcs-release-p "5.6.2"))
+             ;; exit status of 1 is also accepted.
+             ;; It means that the lock was removed before.
+             (vc-do-command nil 1 "rcs" (vc-name file)
+                            (concat "-u" old-version)))))))))
+
+(defun vc-rcs-find-revision (file rev buffer)
   (apply 'vc-do-command
         buffer 0 "co" (vc-name file)
         "-q" ;; suppress diagnostic output
@@ -404,7 +421,7 @@ whether to remove it."
                    (if (stringp rev)
                        ;; a literal revision was specified
                        (concat "-r" rev)
-                     (let ((workrev (vc-workfile-version file)))
+                     (let ((workrev (vc-working-revision file)))
                        (if workrev
                            (concat "-r"
                                    (if (not rev)
@@ -424,7 +441,7 @@ whether to remove it."
            (with-current-buffer "*vc*"
              (setq new-version
                    (vc-parse-buffer "^revision \\([0-9.]+\\).*\n" 1)))
-           (vc-file-setprop file 'vc-workfile-version new-version)
+           (vc-file-setprop file 'vc-working-revision new-version)
            ;; if necessary, adjust the default branch
            (and rev (not (string= rev ""))
                 (vc-rcs-set-default-branch
@@ -435,40 +452,47 @@ whether to remove it."
                    new-version)))))
        (message "Checking out %s...done" file)))))
 
+(defun vc-rcs-rollback (files)
+  "Roll back, undoing the most recent checkins of FILES."
+  (if (not files)
+      (error "RCS backend doesn't support directory-level rollback."))
+  (dolist (file files)
+         (let* ((discard (vc-working-revision file))
+                (previous (if (vc-trunk-p discard) "" (vc-branch-part discard)))
+                (config (current-window-configuration))
+                (done nil))
+           (if (null (yes-or-no-p (format "Remove version %s from %s history? " 
+                                          discard file)))
+               (error "Aborted"))
+           (message "Removing revision %s from %s." discard file)
+           (vc-do-command nil 0 "rcs" (vc-name file) (concat "-o" discard))
+           ;; Check out the most recent remaining version.  If it
+           ;; fails, because the whole branch got deleted, do a
+           ;; double-take and check out the version where the branch
+           ;; started.
+           (while (not done)
+             (condition-case err
+                 (progn
+                   (vc-do-command nil 0 "co" (vc-name file) "-f"
+                                  (concat "-u" previous))
+                   (setq done t))
+               (error (set-buffer "*vc*")
+                      (goto-char (point-min))
+                      (if (search-forward "no side branches present for" nil t)
+                          (progn (setq previous (vc-branch-part previous))
+                                 (vc-rcs-set-default-branch file previous)
+                                 ;; vc-do-command popped up a window with
+                                 ;; the error message.  Get rid of it, by
+                                 ;; restoring the old window configuration.
+                                 (set-window-configuration config))
+                        ;; No, it was some other error: re-signal it.
+                        (signal (car err) (cdr err)))))))))
+
 (defun vc-rcs-revert (file &optional contents-done)
   "Revert FILE to the version it was based on."
   (vc-do-command nil 0 "co" (vc-name file) "-f"
                  (concat (if (eq (vc-state file) 'edited) "-u" "-r")
-                         (vc-workfile-version file))))
-
-(defun vc-rcs-cancel-version (file editable)
-  "Undo the most recent checkin of FILE.
-EDITABLE non-nil means previous version should be locked."
-  (let* ((target (vc-workfile-version file))
-        (previous (if (vc-trunk-p target) "" (vc-branch-part target)))
-        (config (current-window-configuration))
-        (done nil))
-    (vc-do-command nil 0 "rcs" (vc-name file) (concat "-o" target))
-    ;; Check out the most recent remaining version.  If it fails, because
-    ;; the whole branch got deleted, do a double-take and check out the
-    ;; version where the branch started.
-    (while (not done)
-      (condition-case err
-         (progn
-           (vc-do-command nil 0 "co" (vc-name file) "-f"
-                          (concat (if editable "-l" "-u") previous))
-           (setq done t))
-       (error (set-buffer "*vc*")
-              (goto-char (point-min))
-              (if (search-forward "no side branches present for" nil t)
-                  (progn (setq previous (vc-branch-part previous))
-                         (vc-rcs-set-default-branch file previous)
-                         ;; vc-do-command popped up a window with
-                         ;; the error message.  Get rid of it, by
-                         ;; restoring the old window configuration.
-                         (set-window-configuration config))
-                ;; No, it was some other error: re-signal it.
-                (signal (car err) (cdr err))))))))
+                         (vc-working-revision file))))
 
 (defun vc-rcs-merge (file first-version &optional second-version)
   "Merge changes into current working copy of FILE.
@@ -492,19 +516,38 @@ Needs RCS 5.6.2 or later for -M."
 ;;; History functions
 ;;;
 
-(defun vc-rcs-print-log (file &optional buffer)
+(defun vc-rcs-print-log (files &optional buffer)
   "Get change log associated with FILE."
-  (vc-do-command buffer 0 "rlog" (vc-name file)))
+  (vc-do-command buffer 0 "rlog" (mapcar 'vc-name files)))
 
-(defun vc-rcs-diff (file &optional oldvers newvers buffer)
-  "Get a difference report using RCS between two versions of FILE."
-  (if (not oldvers) (setq oldvers (vc-workfile-version file)))
-  (apply 'vc-do-command (or buffer "*vc-diff*") 1 "rcsdiff" file
+(defun vc-rcs-diff (files &optional oldvers newvers buffer)
+  "Get a difference report using RCS between two sets of files."
+  (apply 'vc-do-command (or buffer "*vc-diff*") 
+        1              ;; Always go synchronous, the repo is local
+        "rcsdiff" (vc-expand-dirs files)
          (append (list "-q"
-                       (concat "-r" oldvers)
+                       (and oldvers (concat "-r" oldvers))
                        (and newvers (concat "-r" newvers)))
                  (vc-switches 'RCS 'diff))))
 
+(defun vc-rcs-wash-log ()
+  "Remove all non-comment information from log output."
+  (let ((separator (concat "^-+\nrevision [0-9.]+\ndate: .*\n"
+                          "\\(branches: .*;\n\\)?"
+                          "\\(\\*\\*\\* empty log message \\*\\*\\*\n\\)?")))
+    (goto-char (point-max)) (forward-line -1)
+    (while (looking-at "=*\n")
+      (delete-char (- (match-end 0) (match-beginning 0)))
+      (forward-line -1))
+    (goto-char (point-min))
+    (if (looking-at "[\b\t\n\v\f\r ]+")
+       (delete-char (- (match-end 0) (match-beginning 0))))
+    (goto-char (point-min))
+    (re-search-forward separator nil t)
+    (delete-region (point-min) (point))
+    (while (re-search-forward separator nil t)
+      (delete-region (match-beginning 0) (match-end 0)))))
+
 (defun vc-rcs-annotate-command (file buffer &optional revision)
   "Annotate FILE, inserting the results in BUFFER.
 Optional arg REVISION is a revision to annotate from."
@@ -768,11 +811,11 @@ to its master version."
     (or value
        (vc-branch-part branch))))
 
-(defun vc-rcs-fetch-master-state (file &optional workfile-version)
+(defun vc-rcs-fetch-master-state (file &optional working-revision)
   "Compute the master file's idea of the state of FILE.
 If a WORKFILE-VERSION is given, compute the state of that version,
 otherwise determine the workfile version based on the master file.
-This function sets the properties `vc-workfile-version' and
+This function sets the properties `vc-working-revision' and
 `vc-checkout-model' to their correct values, based on the master
 file."
   (with-temp-buffer
@@ -783,7 +826,7 @@ file."
     (let ((workfile-is-latest nil)
          (default-branch (vc-parse-buffer "^branch[ \t\n]+\\([^;]*\\);" 1)))
       (vc-file-setprop file 'vc-rcs-default-branch default-branch)
-      (unless workfile-version
+      (unless working-revision
        ;; Workfile version not known yet.  Determine that first.  It
        ;; is either the head of the trunk, the head of the default
        ;; branch, or the "default branch" itself, if that is a full
@@ -791,19 +834,19 @@ file."
        (cond
         ;; no default branch
         ((or (not default-branch) (string= "" default-branch))
-         (setq workfile-version
+         (setq working-revision
                (vc-parse-buffer "^head[ \t\n]+\\([^;]+\\);" 1))
          (setq workfile-is-latest t))
         ;; default branch is actually a revision
         ((string-match "^[0-9]+\\.[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*$"
                        default-branch)
-         (setq workfile-version default-branch))
+         (setq working-revision default-branch))
         ;; else, search for the head of the default branch
         (t (vc-insert-file (vc-name file) "^desc")
-           (setq workfile-version
+           (setq working-revision
                  (vc-rcs-find-most-recent-rev default-branch))
            (setq workfile-is-latest t)))
-       (vc-file-setprop file 'vc-workfile-version workfile-version))
+       (vc-file-setprop file 'vc-working-revision working-revision))
       ;; Check strict locking
       (goto-char (point-min))
       (vc-file-setprop file 'vc-checkout-model
@@ -813,14 +856,14 @@ file."
       (goto-char (point-min))
       (let ((locking-user
             (vc-parse-buffer (concat "^locks[ \t\n]+[^;]*[ \t\n]+\\([^:]+\\):"
-                                     (regexp-quote workfile-version)
+                                     (regexp-quote working-revision)
                                      "[^0-9.]")
                              1)))
        (cond
         ;; not locked
         ((not locking-user)
           (if (or workfile-is-latest
-                  (vc-rcs-latest-on-branch-p file workfile-version))
+                  (vc-rcs-latest-on-branch-p file working-revision))
               ;; workfile version is latest on branch
               'up-to-date
             ;; workfile version is not latest on branch
@@ -830,7 +873,7 @@ file."
               (string= locking-user (vc-user-login-name file)))
          (if (or (eq (vc-checkout-model file) 'locking)
                  workfile-is-latest
-                 (vc-rcs-latest-on-branch-p file workfile-version))
+                 (vc-rcs-latest-on-branch-p file working-revision))
              'edited
            ;; Locking is not used for the file, but the owner does
            ;; have a lock, and there is a higher version on the current
@@ -911,7 +954,7 @@ Returns: nil            if no headers were found
        ;; else: nothing found
        ;; -------------------
        (t nil)))
-     (if status (vc-file-setprop file 'vc-workfile-version version))
+     (if status (vc-file-setprop file 'vc-working-revision version))
      (and (eq status 'rev-and-lock)
          (vc-file-setprop file 'vc-state
                           (cond
index f7a0f027a4ceacecabfc7268ecd1ac344f8853ff..06fcff3ceb5860d726fae5239f1cb91c8fbfca04 100644 (file)
 
 ;;; Commentary:
 
+;; TODO:
+;; - remove call to vc-expand-dirs by implementing our own (which can just
+;;   list the SCCS subdir instead).
+
 ;;; Code:
 
 (eval-when-compile
@@ -85,6 +89,11 @@ For a description of possible values, see `vc-check-master-templates'."
 (defconst vc-sccs-name-assoc-file "VC-names")
 
 \f
+;;; Properties of the backend
+
+(defun vc-sccs-revision-granularity ()
+     'file)
+
 ;;;
 ;;; State-querying functions
 ;;;
@@ -102,8 +111,8 @@ For a description of possible values, see `vc-check-master-templates'."
   (with-temp-buffer
     (if (vc-insert-file (vc-sccs-lock-file file))
         (let* ((locks (vc-sccs-parse-locks))
-               (workfile-version (vc-workfile-version file))
-               (locking-user (cdr (assoc workfile-version locks))))
+               (working-revision (vc-working-revision file))
+               (locking-user (cdr (assoc working-revision locks))))
           (if (not locking-user)
               (if (vc-workfile-unchanged-p file)
                   'up-to-date
@@ -136,13 +145,13 @@ For a description of possible values, see `vc-check-master-templates'."
             (vc-sccs-state file))))
     (vc-sccs-state file)))
 
-(defun vc-sccs-workfile-version (file)
-  "SCCS-specific version of `vc-workfile-version'."
+(defun vc-sccs-working-revision (file)
+  "SCCS-specific version of `vc-working-revision'."
   (with-temp-buffer
-    ;; The workfile version is always the latest version number.
+    ;; The working revision is always the latest revision number.
     ;; To find this number, search the entire delta table,
     ;; rather than just the first entry, because the
-    ;; first entry might be a deleted ("R") version.
+    ;; first entry might be a deleted ("R") revision.
     (vc-insert-file (vc-name file) "^\001e\n\001[^s]")
     (vc-parse-buffer "^\001d D \\([^ ]+\\)" 1)))
 
@@ -154,23 +163,29 @@ For a description of possible values, see `vc-check-master-templates'."
   "SCCS-specific implementation of `vc-workfile-unchanged-p'."
   (zerop (apply 'vc-do-command nil 1 "vcdiff" (vc-name file)
                 (list "--brief" "-q"
-                      (concat "-r" (vc-workfile-version file))))))
+                      (concat "-r" (vc-working-revision file))))))
 
 \f
 ;;;
 ;;; State-changing functions
 ;;;
 
-(defun vc-sccs-register (file &optional rev comment)
-  "Register FILE into the SCCS version-control system.
+(defun vc-sccs-create-repo ()
+  "Create a new SCCS repository."
+  ;; SCCS is totally file-oriented, so all we have to do is make the directory
+  (make-directory "SCCS"))
+
+(defun vc-sccs-register (files &optional rev comment)
+  "Register FILES into the SCCS version-control system.
 REV is the optional revision number for the file.  COMMENT can be used
-to provide an initial description of FILE.
+to provide an initial description of FILES.
 
 `vc-register-switches' and `vc-sccs-register-switches' are passed to
 the SCCS command (in that order).
 
-Automatically retrieve a read-only version of the file with keywords
+Automatically retrieve a read-only version of the files with keywords
 expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
+  (dolist (file files)
     (let* ((dirname (or (file-name-directory file) ""))
           (basename (file-name-nondirectory file))
           (project-file (vc-sccs-search-project-dir dirname basename)))
@@ -178,14 +193,14 @@ expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
             (or project-file
                 (format (car vc-sccs-master-templates) dirname basename))))
        (apply 'vc-do-command nil 0 "admin" vc-name
-              (and rev (concat "-r" rev))
+              (and rev (not (string= rev "")) (concat "-r" rev))
               "-fb"
               (concat "-i" (file-relative-name file))
               (and comment (concat "-y" comment))
               (vc-switches 'SCCS 'register)))
       (delete-file file)
       (if vc-keep-workfiles
-         (vc-do-command nil 0 "get" (vc-name file)))))
+         (vc-do-command nil 0 "get" (vc-name file))))))
 
 (defun vc-sccs-responsible-p (file)
   "Return non-nil if SCCS thinks it would be responsible for registering FILE."
@@ -194,16 +209,17 @@ expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
       (stringp (vc-sccs-search-project-dir (or (file-name-directory file) "")
                                           (file-name-nondirectory file)))))
 
-(defun vc-sccs-checkin (file rev comment)
+(defun vc-sccs-checkin (files rev comment)
   "SCCS-specific version of `vc-backend-checkin'."
-  (apply 'vc-do-command nil 0 "delta" (vc-name file)
-        (if rev (concat "-r" rev))
-        (concat "-y" comment)
-        (vc-switches 'SCCS 'checkin))
-  (if vc-keep-workfiles
-      (vc-do-command nil 0 "get" (vc-name file))))
-
-(defun vc-sccs-find-version (file rev buffer)
+  (dolist (file files)
+    (apply 'vc-do-command nil 0 "delta" (vc-name file)
+          (if rev (concat "-r" rev))
+          (concat "-y" comment)
+          (vc-switches 'SCCS 'checkin))
+    (if vc-keep-workfiles
+       (vc-do-command nil 0 "get" (vc-name file)))))
+
+(defun vc-sccs-find-revision (file rev buffer)
   (apply 'vc-do-command
         buffer 0 "get" (vc-name file)
         "-s" ;; suppress diagnostic output
@@ -214,7 +230,7 @@ expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
         (vc-switches 'SCCS 'checkout)))
 
 (defun vc-sccs-checkout (file &optional editable rev)
-  "Retrieve a copy of a saved version of SCCS controlled FILE.
+  "Retrieve a copy of a saved revision of SCCS controlled FILE.
 EDITABLE non-nil means that the file should be writable and
 locked.  REV is the revision to check out."
   (let ((file-buffer (get-file-buffer file))
@@ -242,24 +258,27 @@ locked.  REV is the revision to check out."
                 switches))))
     (message "Checking out %s...done" file)))
 
+(defun vc-sccs-rollback (files)
+  "Roll back, undoing the most recent checkins of FILES."
+  (if (not files)
+      (error "SCCS backend doesn't support directory-level rollback."))
+  (dolist (file files)
+         (let ((discard (vc-working-revision file)))
+           (if (null (yes-or-no-p (format "Remove version %s from %s history? " 
+                                          discard file)))
+               (error "Aborted"))
+           (message "Removing revision %s from %s..." discard file)
+           (vc-do-command nil 0 "rmdel" (vc-name file) (concat "-r" discard))
+           (vc-do-command nil 0 "get" (vc-name file) nil))))
+
 (defun vc-sccs-revert (file &optional contents-done)
   "Revert FILE to the version it was based on."
   (vc-do-command nil 0 "unget" (vc-name file))
   (vc-do-command nil 0 "get" (vc-name file))
-  ;; Checking out explicit versions is not supported under SCCS, yet.
-  ;; We always "revert" to the latest version; therefore
-  ;; vc-workfile-version is cleared here so that it gets recomputed.
-  (vc-file-setprop file 'vc-workfile-version nil))
-
-(defun vc-sccs-cancel-version (file editable)
-  "Undo the most recent checkin of FILE.
-EDITABLE non-nil means previous version should be locked."
-  (vc-do-command nil 0 "rmdel"
-                (vc-name file)
-                (concat "-r" (vc-workfile-version file)))
-  (vc-do-command nil 0 "get"
-                (vc-name file)
-                (if editable "-e")))
+  ;; Checking out explicit revisions is not supported under SCCS, yet.
+  ;; We always "revert" to the latest revision; therefore
+  ;; vc-working-revision is cleared here so that it gets recomputed.
+  (vc-file-setprop file 'vc-working-revision nil))
 
 (defun vc-sccs-steal-lock (file &optional rev)
   "Steal the lock on the current workfile for FILE and revision REV."
@@ -271,9 +290,14 @@ EDITABLE non-nil means previous version should be locked."
 ;;; History functions
 ;;;
 
-(defun vc-sccs-print-log (file &optional buffer)
-  "Get change log associated with FILE."
-  (vc-do-command buffer 0 "prs" (vc-name file)))
+(defun vc-sccs-print-log (files &optional buffer)
+  "Get change log associated with FILES."
+  (vc-do-command buffer 0 "prs" (mapcar 'vc-name files)))
+
+(defun vc-sccs-wash-log ()
+  "Remove all non-comment information from log output."
+  ;; FIXME: not implemented for SCCS
+  nil)
 
 (defun vc-sccs-logentry-check ()
   "Check that the log entry in the current buffer is acceptable for SCCS."
@@ -281,11 +305,12 @@ EDITABLE non-nil means previous version should be locked."
     (goto-char 512)
     (error "Log must be less than 512 characters; point is now at pos 512")))
 
-(defun vc-sccs-diff (file &optional oldvers newvers buffer)
-  "Get a difference report using SCCS between two versions of FILE."
+(defun vc-sccs-diff (files &optional oldvers newvers buffer)
+  "Get a difference report using SCCS between two filesets."
   (setq oldvers (vc-sccs-lookup-triple file oldvers))
   (setq newvers (vc-sccs-lookup-triple file newvers))
-  (apply 'vc-do-command (or buffer "*vc-diff*") 1 "vcdiff" (vc-name file)
+  (apply 'vc-do-command (or buffer "*vc-diff*") 
+        1 "vcdiff" (mapcar 'vc-name (vc-expand-dirs files))
          (append (list "-q"
                        (and oldvers (concat "-r" oldvers))
                        (and newvers (concat "-r" newvers)))
@@ -297,8 +322,8 @@ EDITABLE non-nil means previous version should be locked."
 ;;;
 
 (defun vc-sccs-assign-name (file name)
-  "Assign to FILE's latest version a given NAME."
-  (vc-sccs-add-triple name file (vc-workfile-version file)))
+  "Assign to FILE's latest revision a given NAME."
+  (vc-sccs-add-triple name file (vc-working-revision file)))
 
 \f
 ;;;
@@ -363,7 +388,7 @@ find any project directory."
 
 (defun vc-sccs-parse-locks ()
   "Parse SCCS locks in current buffer.
-The result is a list of the form ((VERSION . USER) (VERSION . USER) ...)."
+The result is a list of the form ((REVISION . USER) (REVISION . USER) ...)."
   (let (master-locks)
     (goto-char (point-min))
     (while (re-search-forward "^\\([0-9.]+\\) [0-9.]+ \\([^ ]+\\) .*\n?"
@@ -384,8 +409,8 @@ The result is a list of the form ((VERSION . USER) (VERSION . USER) ...)."
     (kill-buffer (current-buffer))))
 
 (defun vc-sccs-lookup-triple (file name)
-  "Return the numeric version corresponding to a named snapshot of FILE.
-If NAME is nil or a version number string it's just passed through."
+  "Return the numeric revision corresponding to a named snapshot of FILE.
+If NAME is nil or a revision number string it's just passed through."
   (if (or (null name)
          (let ((firstchar (aref name 0)))
            (and (>= firstchar ?0) (<= firstchar ?9))))
index bfb0da6804845574d9b6299384c8cf61afba123d..43643b931d9dff294ebe6acf4957712fc29ed2a7 100644 (file)
 
 ;;; Commentary:
 
-;; This is preliminary support for Subversion (http://subversion.tigris.org/).
-;; It started as `sed s/cvs/svn/ vc.cvs.el' (from version 1.56)
-;; and hasn't been completely fixed since.
-
-;; Sync'd with Subversion's vc-svn.el as of revision 5801.
+;; Sync'd with Subversion's vc-svn.el as of revision 5801. but this version
+;; has been extensively modified since to handle filesets.
 
 ;;; Bugs:
 
@@ -96,6 +93,10 @@ If you want to force an empty list of arguments, use t."
        (t ".svn"))
   "The name of the \".svn\" subdirectory or its equivalent.")
 
+;;; Properties of the backend
+
+(defun vc-svn-revision-granularity ()
+     'repository)
 ;;;
 ;;; State-querying functions
 ;;;
@@ -159,13 +160,13 @@ If you want to force an empty list of arguments, use t."
       (vc-svn-command t 0 nil "status" (if localp "-v" "-u"))
       (vc-svn-parse-status))))
 
-(defun vc-svn-workfile-version (file)
-  "SVN-specific version of `vc-workfile-version'."
+(defun vc-svn-working-revision (file)
+  "SVN-specific version of `vc-working-revision'."
   ;; There is no need to consult RCS headers under SVN, because we
   ;; get the workfile version for free when we recognize that a file
   ;; is registered in SVN.
   (vc-svn-registered file)
-  (vc-file-getprop file 'vc-workfile-version))
+  (vc-file-getprop file 'vc-working-revision))
 
 (defun vc-svn-checkout-model (file)
   "SVN-specific version of `vc-checkout-model'."
@@ -179,25 +180,25 @@ If you want to force an empty list of arguments, use t."
   "SVN-specific version of `vc-dired-state-info'."
   (let ((svn-state (vc-state file)))
     (cond ((eq svn-state 'edited)
-          (if (equal (vc-workfile-version file) "0")
+          (if (equal (vc-working-revision file) "0")
               "(added)" "(modified)"))
          ((eq svn-state 'needs-patch) "(patch)")
          ((eq svn-state 'needs-merge) "(merge)"))))
 
-(defun vc-svn-previous-version (file rev)
+(defun vc-svn-previous-revision (file rev)
   (let ((newrev (1- (string-to-number rev))))
     (when (< 0 newrev)
       (number-to-string newrev))))
 
-(defun vc-svn-next-version (file rev)
+(defun vc-svn-next-revision (file rev)
   (let ((newrev (1+ (string-to-number rev))))
-    ;; The "workfile version" is an uneasy conceptual fit under Subversion;
+    ;; The "working revision" is an uneasy conceptual fit under Subversion;
     ;; we use it as the upper bound until a better idea comes along.  If the
     ;; workfile version W coincides with the tree's latest revision R, then
     ;; this check prevents a "no such revision: R+1" error.  Otherwise, it
     ;; inhibits showing of W+1 through R, which could be considered anywhere
     ;; from gracious to impolite.
-    (unless (< (string-to-number (vc-file-getprop file 'vc-workfile-version))
+    (unless (< (string-to-number (vc-file-getprop file 'vc-working-revision))
                newrev)
       (number-to-string newrev))))
 
@@ -206,13 +207,19 @@ If you want to force an empty list of arguments, use t."
 ;;; State-changing functions
 ;;;
 
-(defun vc-svn-register (file &optional rev comment)
-  "Register FILE into the SVN version-control system.
-COMMENT can be used to provide an initial description of FILE.
+(defun vc-svn-create-repo ()
+  "Create a new SVN repository."
+  (vc-do-command nil 0 "svnadmin" '("create" "SVN"))
+  (vc-do-command nil 0 "svn" '(".") 
+                "checkout" (concat "file://" default-directory "SVN")))
+
+(defun vc-svn-register (files &optional rev comment)
+  "Register FILES into the SVN version-control system.
+The COMMENT argument is ignored  This does an add but not a commit.
 
 `vc-register-switches' and `vc-svn-register-switches' are passed to
 the SVN command (in that order)."
-  (apply 'vc-svn-command nil 0 file "add" (vc-switches 'SVN 'register)))
+  (apply 'vc-svn-command nil 0 files "add" (vc-switches 'SVN 'register)))
 
 (defun vc-svn-responsible-p (file)
   "Return non-nil if SVN thinks it is responsible for FILE."
@@ -225,10 +232,11 @@ the SVN command (in that order)."
   "Return non-nil if FILE could be registered in SVN.
 This is only possible if SVN is responsible for FILE's directory.")
 
-(defun vc-svn-checkin (file rev comment)
+(defun vc-svn-checkin (files rev comment)
   "SVN-specific version of `vc-backend-checkin'."
+  (if rev (error "Committing to a specific revision is unsupported in SVN."))
   (let ((status (apply
-                 'vc-svn-command nil 1 file "ci"
+                 'vc-svn-command nil 1 files "ci"
                  (nconc (list "-m" comment) (vc-switches 'SVN 'checkin)))))
     (set-buffer "*vc*")
     (goto-char (point-min))
@@ -236,7 +244,8 @@ This is only possible if SVN is responsible for FILE's directory.")
       ;; Check checkin problem.
       (cond
        ((search-forward "Transaction is out of date" nil t)
-        (vc-file-setprop file 'vc-state 'needs-merge)
+        (mapc (lambda (file) (vc-file-setprop file 'vc-state 'needs-merge))
+             files)
         (error (substitute-command-keys
                 (concat "Up-to-date check failed: "
                         "type \\[vc-next-action] to merge in changes"))))
@@ -247,11 +256,12 @@ This is only possible if SVN is responsible for FILE's directory.")
         (error "Check-in failed"))))
     ;; Update file properties
     ;; (vc-file-setprop
-    ;;  file 'vc-workfile-version
+    ;;  file 'vc-working-revision
     ;;  (vc-parse-buffer "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" 2))
     ))
 
-(defun vc-svn-find-version (file rev buffer)
+(defun vc-svn-find-revision (file rev buffer)
+  "SVN-specific retrieval of a specified version into a buffer."
   (apply 'vc-svn-command
         buffer 0 file
         "cat"
@@ -271,7 +281,7 @@ This is only possible if SVN is responsible for FILE's directory.")
       ;; If no revision was specified, there's nothing to do.
       nil
     ;; Check out a particular version (or recreate the file).
-    (vc-file-setprop file 'vc-workfile-version nil)
+    (vc-file-setprop file 'vc-working-revision nil)
     (apply 'vc-svn-command nil 0 file
           "update"
           ;; default for verbose checkout: clear the sticky tag so
@@ -311,18 +321,18 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
 (defun vc-svn-merge-news (file)
   "Merge in any new changes made to FILE."
   (message "Merging changes into %s..." file)
-  ;; (vc-file-setprop file 'vc-workfile-version nil)
+  ;; (vc-file-setprop file 'vc-working-revision nil)
   (vc-file-setprop file 'vc-checkout-time 0)
   (vc-svn-command nil 0 file "update")
   ;; Analyze the merge result reported by SVN, and set
   ;; file properties accordingly.
   (with-current-buffer (get-buffer "*vc*")
     (goto-char (point-min))
-    ;; get new workfile version
+    ;; get new working revision
     (if (re-search-forward
         "^\\(Updated to\\|At\\) revision \\([0-9]+\\)" nil t)
-       (vc-file-setprop file 'vc-workfile-version (match-string 2))
-      (vc-file-setprop file 'vc-workfile-version nil))
+       (vc-file-setprop file 'vc-working-revision (match-string 2))
+      (vc-file-setprop file 'vc-working-revision nil))
     ;; get file status
     (goto-char (point-min))
     (prog1
@@ -362,53 +372,61 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
 ;;; History functions
 ;;;
 
-(defun vc-svn-print-log (file &optional buffer)
-  "Get change log associated with FILE."
+(defun vc-svn-print-log (files &optional buffer)
+  "Get change log(s) associated with FILES."
   (save-current-buffer
     (vc-setup-buffer buffer)
     (let ((inhibit-read-only t))
       (goto-char (point-min))
       ;; Add a line to tell log-view-mode what file this is.
-      (insert "Working file: " (file-relative-name file) "\n"))
+      ;; FIXME if there are multiple files, log-view-current-file
+      ;; breaks.  It's trivial to adapt log-view-file-re for the
+      ;; changed prefix, but less trivial to make
+      ;; log-view-current-file actually do the right thing in the
+      ;; multiple file case.
+      (insert (format "Working file%s: "
+                     (if (= (length files) 1)
+                         ""
+                       "s"))
+                     (vc-delistify (mapcar 'file-relative-name files)) "\n"))
     (vc-svn-command
      buffer
-     (if (and (vc-stay-local-p file) (fboundp 'start-process)) 'async 0)
-     file "log"
-     ;; By default Subversion only shows the log upto the working version,
+     (if (and (= (length files) 1) (vc-stay-local-p (car files)) (fboundp 'start-process)) 'async 0)
+     files "log"
+     ;; By default Subversion only shows the log upto the working revision,
      ;; whereas we also want the log of the subsequent commits.  At least
      ;; that's what the vc-cvs.el code does.
      "-rHEAD:0")))
 
-(defun vc-svn-diff (file &optional oldvers newvers buffer)
-  "Get a difference report using SVN between two versions of FILE."
-  (unless buffer (setq buffer "*vc-diff*"))
-  (if (and oldvers (equal oldvers (vc-workfile-version file)))
-      ;; Use nil rather than the current revision because svn handles it
-      ;; better (i.e. locally).
-      (setq oldvers nil))
-  (if (string= (vc-workfile-version file) "0")
-      ;; This file is added but not yet committed; there is no master file.
-      (if (or oldvers newvers)
-         (error "No revisions of %s exist" file)
-       ;; We regard this as "changed".
-       ;; Diff it against /dev/null.
-       ;; Note: this is NOT a "svn diff".
-       (apply 'vc-do-command buffer
-              1 "diff" file
-              (append (vc-switches nil 'diff) '("/dev/null")))
-       ;; Even if it's empty, it's locally modified.
-       1)
-    (let* ((switches
+(defun vc-svn-wash-log ()
+  "Remove all non-comment information from log output."
+  ;; FIXME: not implemented for SVN
+  nil)
+
+(defun vc-svn-diff (files &optional oldvers newvers buffer)
+  "Get a difference report using SVN between two revisions of fileset FILES."
+  (and oldvers
+       (catch 'no
+        (dolist (f files)
+          (or (equal oldvers (vc-working-revision f))
+              (throw 'no nil)))
+        t)
+       ;; Use nil rather than the current revision because svn handles
+       ;; it better (i.e. locally).  Note that if _any_ of the files
+       ;; has a different revision, we fetch the lot, which is
+       ;; obviously sub-optimal.
+       (setq oldvers nil))
+  (let* ((switches
            (if vc-svn-diff-switches
                (vc-switches 'SVN 'diff)
              (list "-x" (mapconcat 'identity (vc-switches nil 'diff) " "))))
           (async (and (not vc-disable-async-diff)
-                       (vc-stay-local-p file)
+                       (vc-stay-local-p files)
                       (or oldvers newvers) ; Svn diffs those locally.
                       (fboundp 'start-process))))
       (apply 'vc-svn-command buffer
             (if async 'async 0)
-            file "diff"
+            files "diff"
             (append
              switches
              (when oldvers
@@ -417,18 +435,18 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
       (if async 1                    ; async diff => pessimistic assumption
        ;; For some reason `svn diff' does not return a useful
        ;; status w.r.t whether the diff was empty or not.
-       (buffer-size (get-buffer buffer))))))
+       (buffer-size (get-buffer buffer)))))
 
 (defun vc-svn-diff-tree (dir &optional rev1 rev2)
   "Diff all files at and below DIR."
-  (vc-svn-diff (file-name-as-directory dir) rev1 rev2))
+  (vc-svn-diff (list (file-name-as-directory dir)) rev1 rev2))
 
 ;;;
 ;;; Snapshot system
 ;;;
 
 (defun vc-svn-create-snapshot (dir name branchp)
-  "Assign to DIR's current version a given NAME.
+  "Assign to DIR's current revision a given NAME.
 If BRANCHP is non-nil, the name is created as a branch (and the current
 workspace is immediately moved to that new branch).
 NAME is assumed to be a URL."
@@ -464,11 +482,16 @@ NAME is assumed to be a URL."
 ;;; Internal functions
 ;;;
 
-(defun vc-svn-command (buffer okstatus file &rest flags)
+(defcustom vc-svn-program "svn"
+  "Name of the svn executable."
+  :type 'string
+  :group 'vc)
+
+(defun vc-svn-command (buffer okstatus file-or-list &rest flags)
   "A wrapper around `vc-do-command' for use in vc-svn.el.
 The difference to vc-do-command is that this function always invokes `svn',
 and that it passes `vc-svn-global-switches' to it before FLAGS."
-  (apply 'vc-do-command buffer okstatus "svn" file
+  (apply 'vc-do-command buffer okstatus vc-svn-program file-or-list
          (if (stringp vc-svn-global-switches)
              (cons vc-svn-global-switches flags)
            (append vc-svn-global-switches
@@ -487,7 +510,9 @@ and that it passes `vc-svn-global-switches' to it before FLAGS."
           ;; Old `svn' used name="svn:this_dir", newer use just name="".
           (concat "name=\"\\(?:svn:this_dir\\)?\"[\n\t ]*"
                   "\\(?:[-a-z]+=\"[^\"]*\"[\n\t ]*\\)*?"
-                  "url=\"\\([^\"]+\\)\"") nil t)
+                  "url=\"\\(?1:[^\"]+\\)\""
+                   ;; Yet newer ones don't use XML any more.
+                   "\\|^\ndir\n[0-9]+\n\\(?1:.*\\)") nil t)
       ;; This is not a hostname but a URL.  This may actually be considered
       ;; as a feature since it allows vc-svn-stay-local to specify different
       ;; behavior for different modules on the same server.
@@ -541,7 +566,7 @@ information about FILENAME and return its status."
        (unless filename (vc-file-setprop file 'vc-backend 'SVN))
        ;; Use the last-modified revision, so that searching in vc-print-log
        ;; output works.
-       (vc-file-setprop file 'vc-workfile-version (match-string 3))
+       (vc-file-setprop file 'vc-working-revision (match-string 3))
         ;; Remember Svn's own status.
         (vc-file-setprop file 'vc-svn-status status)
        (vc-file-setprop
@@ -555,7 +580,7 @@ information about FILENAME and return its status."
             'up-to-date))
          ((eq status ?A)
           ;; If the file was actually copied, (match-string 2) is "-".
-          (vc-file-setprop file 'vc-workfile-version "0")
+          (vc-file-setprop file 'vc-working-revision "0")
           (vc-file-setprop file 'vc-checkout-time 0)
           'edited)
          ((memq status '(?M ?C))
@@ -577,8 +602,8 @@ information about FILENAME and return its status."
   (and (string-match "^[a-zA-Z]" tag)
        (not (string-match "[^a-z0-9A-Z-_]" tag))))
 
-(defun vc-svn-valid-version-number-p (tag)
-  "Return non-nil if TAG is a valid version number."
+(defun vc-svn-valid-revision-number-p (tag)
+  "Return non-nil if TAG is a valid revision number."
   (and (string-match "^[0-9]" tag)
        (not (string-match "[^0-9]" tag))))
 
index af1ce9440dae1642052afdbd23b75aaebc7ba54a..a0db56ce6d770d2e6c3fe26b992547af2486049e 100644 (file)
@@ -29,8 +29,9 @@
 ;;; Credits:
 
 ;; VC was initially designed and implemented by Eric S. Raymond
-;; <esr@snark.thyrsus.com>.  Over the years, many people have
+;; <esr@thyrsus.com> in 1992.  Over the years, many other people have
 ;; contributed substantial amounts of work to VC.  These include:
+;;
 ;;   Per Cederqvist <ceder@lysator.liu.se>
 ;;   Paul Eggert <eggert@twinsun.com>
 ;;   Sebastian Kremer <sk@thp.uni-koeln.de>
 ;;   Andre Spiegel <spiegel@gnu.org>
 ;;   Richard Stallman <rms@gnu.org>
 ;;   Thien-Thi Nguyen <ttn@gnu.org>
+;;
+;; In July 2007 ESR returned and redesigned the mode to cope better
+;; with modern version-control systems that do commits by fileset
+;; rather than per individual file.
+;;
+;; Features in the new version:
+;; * Key commands (vc-next-action = C-x v v, vc-print-log = C-x v l, vc-revert
+;;   = C-x v u, vc-rollback = C-x v c, vc-diff = C-x v =, vc-update = C-x v +) 
+;;   now operate on filesets rather than individual files.
+;; * The fileset for a command is either (a) all marked files in VC-dired
+;;   mode, (b) the currently visited file if it's under version control,
+;;   or (c) the current directory if the visited buffer is not under
+;;   version control and a wildcarding-enable flag has been set. 
+;;
+;; If you maintain a client of the mode or customize it in your .emacs, 
+;; note that some backend functions which formerly took single file arguments 
+;; now take a list of files.  These include: register, checkin, print-log,
+;; rollback, and diff.
 
 ;;; Commentary:
 
 ;; VC keeps some per-file information in the form of properties (see
 ;; vc-file-set/getprop in vc-hooks.el).  The backend-specific functions
 ;; do not generally need to be aware of these properties.  For example,
-;; `vc-sys-workfile-version' should compute the workfile version and
+;; `vc-sys-working-revision' should compute the working revision and
 ;; return it; it should not look it up in the property, and it needn't
 ;; store it there either.  However, if a backend-specific function does
 ;; store a value in a property, that value takes precedence over any
 ;; with `vc-sys-'.  Some of the functions are mandatory (marked with a
 ;; `*'), others are optional (`-').
 ;;
+;; BACKEND PROPERTIES
+;;
+;; * revision-granularity
+;;
+;;   Takes no arguments.  Returns either 'file or 'repository.  Backends
+;;   that return 'file have per-file revision numbering; backends
+;;   that return 'repository have per-repository revision numbering,
+;;   so a revision level implicitly identifies a changeset
+;;   
 ;; STATE-QUERYING FUNCTIONS
 ;;
 ;; * registered (file)
 ;;   anything, but rather store the files' states into the corresponding
 ;;   `vc-state' properties.
 ;;
-;; * workfile-version (file)
+;; * working-revision (file)
 ;;
-;;   Return the current workfile version of FILE.
+;;   Return the working revision of FILE.  This is the revision fetched
+;;   by the last checkout or upate, not necessarily the same thing as the
+;;   head or tip revision. Should return "0" for a file added but not yet 
+;;   committed.
 ;;
 ;; - latest-on-branch-p (file)
 ;;
-;;   Return non-nil if the current workfile version of FILE is the latest
-;;   on its branch.  The default implementation always returns t, which
-;;   means that working with non-current versions is not supported by
-;;   default.
+;;   Return non-nil if the working revision of FILE is the latest revision
+;;   on its branch (many VCSes call this the 'tip' or 'head' revision).
+;;   The default implementation always returns t, which means that
+;;   working with non-current revisions is not supported by default.
 ;;
 ;; * checkout-model (file)
 ;;
 ;;
 ;; - workfile-unchanged-p (file)
 ;;
-;;   Return non-nil if FILE is unchanged from its current workfile
-;;   version.  This function should do a brief comparison of FILE's
-;;   contents with those of the master version.  If the backend does not
-;;   have such a brief-comparison feature, the default implementation of
-;;   this function can be used, which delegates to a full
-;;   vc-BACKEND-diff.  (Note that vc-BACKEND-diff must not run
-;;   asynchronously in this case, see variable `vc-disable-async-diff'.)
+;;   Return non-nil if FILE is unchanged from the working revision.
+;;   This function should do a brief comparison of FILE's contents
+;;   with those of the repository master of the working revision.  If
+;;   the backend does not have such a brief-comparison feature, the
+;;   default implementation of this function can be used, which
+;;   delegates to a full vc-BACKEND-diff.  (Note that vc-BACKEND-diff
+;;   must not run asynchronously in this case, see variable
+;;   `vc-disable-async-diff'.)
 ;;
 ;; - mode-line-string (file)
 ;;
-;;   If provided, this function should return the VC-specific mode line
-;;   string for FILE.  The default implementation deals well with all
-;;   states that `vc-state' can return.
+;;   If provided, this function should return the VC-specific mode
+;;   line string for FILE. The returned string should have a
+;;   `help-echo' property which is the text to be displayed as a
+;;   tooltip when the mouse hovers over the VC entry on the mode-line.
+;;   The default implementation deals well with all states that
+;;   `vc-state' can return.
 ;;
 ;; - dired-state-info (file)
 ;;
 ;;
 ;; STATE-CHANGING FUNCTIONS
 ;;
-;; * register (file &optional rev comment)
+;; * create-repo (backend)
+;;
+;;   Create an empty repository in the current directory and initialize 
+;;   it so VC mode can add files to it.  For file-oriented systems, this 
+;;   need do no more than create a subdirectory with the right name.
+;;
+;; * register (files &optional rev comment)
 ;;
-;;   Register FILE in this backend.  Optionally, an initial revision REV
-;;   and an initial description of the file, COMMENT, may be specified.
+;;   Register FILES in this backend.  Optionally, an initial revision REV
+;;   and an initial description of the file, COMMENT, may be specified,
+;;   but it is not guaranteed that the backend will do anything with this.
 ;;   The implementation should pass the value of vc-register-switches
-;;   to the backend command.
+;;   to the backend command.  (Note: in older versions of VC, this 
+;;   command took a single file argument and not a list.)
 ;;
-;; - init-version (file)
+;; - init-revision (file)
 ;;
-;;   The initial version to use when registering FILE if one is not
+;;   The initial revision to use when registering FILE if one is not
 ;;   specified by the user.  If not provided, the variable
-;;   vc-default-init-version is used instead.
+;;   vc-default-init-revision is used instead.
 ;;
 ;; - responsible-p (file)
 ;;
 ;;   Unregister FILE from this backend.  This is only needed if this
 ;;   backend may be used as a "more local" backend for temporary editing.
 ;;
-;; * checkin (file rev comment)
+;; * checkin (files rev comment)
 ;;
-;;   Commit changes in FILE to this backend.  If REV is non-nil, that
-;;   should become the new revision number.  COMMENT is used as a
-;;   check-in comment.  The implementation should pass the value of
-;;   vc-checkin-switches to the backend command.
+;;   Commit changes in FILES to this backend.  If REV is non-nil, that
+;;   should become the new revision number (not all backends do
+;;   anything with it).  COMMENT is used as a check-in comment.  The
+;;   implementation should pass the value of vc-checkin-switches to
+;;   the backend command. (Note: in older versions of VC, this 
+;;   command took a single file argument and not a list.)
 ;;
-;; * find-version (file rev buffer)
+;; * find-revision (file rev buffer)
 ;;
 ;;   Fetch revision REV of file FILE and put it into BUFFER.
 ;;   If REV is the empty string, fetch the head of the trunk.
 ;;   Check out revision REV of FILE into the working area.  If EDITABLE
 ;;   is non-nil, FILE should be writable by the user and if locking is
 ;;   used for FILE, a lock should also be set.  If REV is non-nil, that
-;;   is the revision to check out (default is current workfile version).
+;;   is the revision to check out (default is the working revision).
 ;;   If REV is t, that means to check out the head of the current branch;
 ;;   if it is the empty string, check out the head of the trunk.
 ;;   The implementation should pass the value of vc-checkout-switches
 ;;
 ;; * revert (file &optional contents-done)
 ;;
-;;   Revert FILE back to the current workfile version.  If optional
+;;   Revert FILE back to the working revision.  If optional
 ;;   arg CONTENTS-DONE is non-nil, then the contents of FILE have
 ;;   already been reverted from a version backup, and this function
 ;;   only needs to update the status of FILE within the backend.
 ;;
-;; - cancel-version (file editable)
+;; - rollback (files)
 ;;
-;;   Cancel the current workfile version of FILE, i.e. remove it from the
-;;   master.  EDITABLE non-nil means that FILE should be writable
-;;   afterwards, and if locking is used for FILE, then a lock should also
-;;   be set.  If this function is not provided, trying to cancel a
-;;   version is caught as an error.
+;;   Remove the tip revision of each of FILES from the repository.  If
+;;   this function is not provided, trying to cancel a revision is
+;;   caught as an error.  (Most backends don't provide it.)  (Also
+;;   note that older versions of this backend command were called
+;;   'cancel-version' and took a single file arg, not a list of
+;;   files.)
 ;;
 ;; - merge (file rev1 rev2)
 ;;
 ;;
 ;;   Merge recent changes from the current branch into FILE.
 ;;
-;; - steal-lock (file &optional version)
+;; - steal-lock (file &optional revision)
 ;;
-;;   Steal any lock on the current workfile version of FILE, or on
-;;   VERSION if that is provided.  This function is only needed if
-;;   locking is used for files under this backend, and if files can
-;;   indeed be locked by other users.
+;;   Steal any lock on the working revision of FILE, or on REVISION if
+;;   that is provided.  This function is only needed if locking is
+;;   used for files under this backend, and if files can indeed be
+;;   locked by other users.
 ;;
 ;; HISTORY FUNCTIONS
 ;;
-;; * print-log (file &optional buffer)
+;; * print-log (files &optional buffer)
 ;;
-;;   Insert the revision log of FILE into BUFFER, or the *vc* buffer
-;;   if BUFFER is nil.
+;;   Insert the revision log for FILES into BUFFER, or the *vc* buffer
+;;   if BUFFER is nil.  (Note: older versions of this function expected
+;;   only a single file argument.)
 ;;
 ;; - log-view-mode ()
 ;;
 ;;   `log-view-mode' and is expected to be changed (if at all) to a derived
 ;;   mode of `log-view-mode'.
 ;;
-;; - show-log-entry (version)
+;; - show-log-entry (revision)
 ;;
-;;   If provided, search the log entry for VERSION in the current buffer,
+;;   If provided, search the log entry for REVISION in the current buffer,
 ;;   and make sure it is displayed in the buffer's window.  The default
 ;;   implementation of this function works for RCS-style logs.
 ;;
 ;; - wash-log (file)
 ;;
-;;   Remove all non-comment information from the output of print-log.  The
-;;   default implementation of this function works for RCS-style logs.
+;;   Remove all non-comment information from the output of print-log.
 ;;
 ;; - logentry-check ()
 ;;
 ;;   default implementation runs rcs2log, which handles RCS- and
 ;;   CVS-style logs.
 ;;
-;; * diff (file &optional rev1 rev2 buffer)
+;; * diff (files &optional rev1 rev2 buffer)
 ;;
 ;;   Insert the diff for FILE into BUFFER, or the *vc-diff* buffer if
 ;;   BUFFER is nil.  If REV1 and REV2 are non-nil, report differences
-;;   from REV1 to REV2.  If REV1 is nil, use the current workfile
-;;   version (as found in the repository) as the older version; if
-;;   REV2 is nil, use the current workfile contents as the newer
-;;   version.  This function should pass the value of (vc-switches
-;;   BACKEND 'diff) to the backend command.  It should return a status
-;;   of either 0 (no differences found), or 1 (either non-empty diff
-;;   or the diff is run asynchronously).
+;;   from REV1 to REV2.  If REV1 is nil, use the working revision (as
+;;   found in the repository) as the older revision; if REV2 is nil,
+;;   use the current working-copy contents as the newer revision.  This
+;;   function should pass the value of (vc-switches BACKEND 'diff) to
+;;   the backend command.  It should return a status of either 0 (no
+;;   differences found), or 1 (either non-empty diff or the diff is
+;;   run asynchronously).
 ;;
 ;; - revision-completion-table (file)
 ;;
 ;; - annotate-command (file buf &optional rev)
 ;;
 ;;   If this function is provided, it should produce an annotated display
-;;   of FILE in BUF, relative to version REV.  Annotation means each line
+;;   of FILE in BUF, relative to revision REV.  Annotation means each line
 ;;   of FILE displayed is prefixed with version information associated with
 ;;   its addition (deleted lines leave no history) and that the text of the
 ;;   file is fontified according to age.
 ;;
 ;;   Only required if `annotate-command' is defined for the backend,
 ;;   AND you'd like the current time considered to be anything besides
-;;   (vs-annotate-convert-time (current-time)) -- i.e. the current
+;;   (vc-annotate-convert-time (current-time)) -- i.e. the current
 ;;   time with hours, minutes, and seconds included.  Probably safe to
 ;;   ignore.  Return the current-time, in units of fractional days.
 ;;
 ;;
 ;; - assign-name (file name)
 ;;
-;;   Give name NAME to the current version of FILE, assuming it is
+;;   Give name NAME to the working revision of FILE, assuming it is
 ;;   up-to-date.  Only used by the default version of `create-snapshot'.
 ;;
 ;; - retrieve-snapshot (dir name update)
 ;;   snapshot that are currently visited.  The default implementation
 ;;   does a sanity check whether there aren't any uncommitted changes at
 ;;   or below DIR, and then performs a tree walk, using the `checkout'
-;;   function to retrieve the corresponding versions.
+;;   function to retrieve the corresponding revisions.
 ;;
 ;; MISCELLANEOUS
 ;;
 ;; - make-version-backups-p (file)
 ;;
-;;   Return non-nil if unmodified repository versions of FILE should be
+;;   Return non-nil if unmodified repository revisions of FILE should be
 ;;   backed up locally.  If this is done, VC can perform `diff' and
 ;;   `revert' operations itself, without calling the backend system.  The
 ;;   default implementation always returns nil.
 ;;   This function is used in `vc-stay-local-p' which backends can use
 ;;   for their convenience.
 ;;
-;; - previous-version (file rev)
+;; - previous-revision (file rev)
 ;;
-;;   Return the version number that precedes REV for FILE, or nil if no such
-;;   version exists.
+;;   Return the revision number that precedes REV for FILE, or nil if no such
+;;   revision exists.
 ;;
-;; - next-version (file rev)
+;; - next-revision (file rev)
 ;;
-;;   Return the version number that follows REV for FILE, or nil if no such
-;;   version exists.
+;;   Return the revision number that follows REV for FILE, or nil if no such
+;;   revision exists.
 ;;
 ;; - check-headers ()
 ;;
 ;;
 ;;   Operation called in current buffer when opening a file.  This can
 ;;   be used by the backend to setup some local variables it might need.
-;
+;;
 ;; - find-file-not-found-hook ()
 ;;
 ;;   Operation called in current buffer when opening a non-existing file.
@@ -513,8 +559,8 @@ preserve the setting."
   :type 'boolean
   :group 'vc)
 
-(defcustom vc-default-init-version "1.1"
-  "A string used as the default version number when a new file is registered.
+(defcustom vc-default-init-revision "1.1"
+  "A string used as the default revision number when a new file is registered.
 This can be overridden by giving a prefix argument to \\[vc-register].  This
 can also be overridden by a particular VC backend."
   :type 'string
@@ -569,13 +615,13 @@ These are passed to the checkin program by \\[vc-register]."
   :version "20.3")
 
 (defcustom vc-dired-terse-display t
-  "If non-nil, show only locked files in VC Dired."
+  "If non-nil, show only locked or locally modified files in VC Dired."
   :type 'boolean
   :group 'vc
   :version "20.3")
 
 (defcustom vc-directory-exclusion-list '("SCCS" "RCS" "CVS" "MCVS" ".svn" 
-                                        ".git" ".hg" "{arch}")
+                                        ".git" ".hg" ".bzr" "{arch}")
   "List of directory names to be ignored when walking directory trees."
   :type '(repeat string)
   :group 'vc)
@@ -603,7 +649,7 @@ to use -L and sets this variable to remember whether it worked."
   :group 'vc)
 
 (defcustom vc-allow-async-revert nil
-  "Specifies whether the diff during \\[vc-revert-buffer] may be asynchronous.
+  "Specifies whether the diff during \\[vc-revert] may be asynchronous.
 Enabling this option means that you can confirm a revert operation even
 if the local changes in the file have not been found and displayed yet."
   :type '(choice (const :tag "No" nil)
@@ -630,7 +676,7 @@ See `run-hooks'."
 
 ;;;###autoload
 (defcustom vc-checkin-hook nil
-  "Normal hook (list of functions) run after a checkin is done.
+  "Normal hook (list of functions) run after commit or file checkin.
 See also `log-edit-done-hook'."
   :type 'hook
   :options '(log-edit-comment-to-change-log)
@@ -638,7 +684,7 @@ See also `log-edit-done-hook'."
 
 ;;;###autoload
 (defcustom vc-before-checkin-hook nil
-  "Normal hook (list of functions) run before a file is checked in.
+  "Normal hook (list of functions) run before a commit or a file checkin.
 See `run-hooks'."
   :type 'hook
   :group 'vc)
@@ -732,9 +778,9 @@ List of factors, used to expand/compress the time scale.  See `vc-annotate'."
     (define-key m "D" 'vc-annotate-show-diff-revision-at-line)
     (define-key m "J" 'vc-annotate-revision-at-line)
     (define-key m "L" 'vc-annotate-show-log-revision-at-line)
-    (define-key m "N" 'vc-annotate-next-version)
-    (define-key m "P" 'vc-annotate-prev-version)
-    (define-key m "W" 'vc-annotate-workfile-version)
+    (define-key m "N" 'vc-annotate-next-revision)
+    (define-key m "P" 'vc-annotate-prev-revision)
+    (define-key m "W" 'vc-annotate-working-revision)
     m)
   "Local keymap used for VC-Annotate mode.")
 
@@ -791,65 +837,12 @@ and that its contents match what the master file says."
 Backends that offer asynchronous diffs should respect this variable
 in their implementation of vc-BACKEND-diff.")
 
-(defvar vc-log-file)
-(defvar vc-log-version)
+(defvar vc-log-fileset)
+(defvar vc-log-revision)
 
 (defvar vc-dired-mode nil)
 (make-variable-buffer-local 'vc-dired-mode)
 
-;; functions that operate on RCS revision numbers.  This code should
-;; also be moved into the backends.  It stays for now, however, since
-;; it is used in code below.
-;;;###autoload
-(defun vc-trunk-p (rev)
-  "Return t if REV is a revision on the trunk."
-  (not (eq nil (string-match "\\`[0-9]+\\.[0-9]+\\'" rev))))
-
-(defun vc-branch-p (rev)
-  "Return t if REV is a branch revision."
-  (not (eq nil (string-match "\\`[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*\\'" rev))))
-
-;;;###autoload
-(defun vc-branch-part (rev)
-  "Return the branch part of a revision number REV."
-  (let ((index (string-match "\\.[0-9]+\\'" rev)))
-    (if index
-        (substring rev 0 index))))
-
-(defun vc-minor-part (rev)
-  "Return the minor version number of a revision number REV."
-  (string-match "[0-9]+\\'" rev)
-  (substring rev (match-beginning 0) (match-end 0)))
-
-(defun vc-default-previous-version (backend file rev)
-  "Return the version number immediately preceding REV for FILE,
-or nil if there is no previous version.  This default
-implementation works for MAJOR.MINOR-style version numbers as
-used by RCS and CVS."
-  (let ((branch (vc-branch-part rev))
-        (minor-num (string-to-number (vc-minor-part rev))))
-    (when branch
-      (if (> minor-num 1)
-          ;; version does probably not start a branch or release
-          (concat branch "." (number-to-string (1- minor-num)))
-        (if (vc-trunk-p rev)
-            ;; we are at the beginning of the trunk --
-            ;; don't know anything to return here
-            nil
-          ;; we are at the beginning of a branch --
-          ;; return version of starting point
-          (vc-branch-part branch))))))
-
-(defun vc-default-next-version (backend file rev)
-  "Return the version number immediately following REV for FILE,
-or nil if there is no next version.  This default implementation
-works for MAJOR.MINOR-style version numbers as used by RCS
-and CVS."
-  (when (not (string= rev (vc-workfile-version file)))
-    (let ((branch (vc-branch-part rev))
-         (minor-num (string-to-number (vc-minor-part rev))))
-      (concat branch "." (number-to-string (1+ minor-num))))))
-
 ;; File property caching
 
 (defun vc-clear-context ()
@@ -857,35 +850,31 @@ and CVS."
   (interactive)
   (fillarray vc-file-prop-obarray 0))
 
-(defmacro with-vc-properties (file form settings)
-  "Execute FORM, then maybe set per-file properties for FILE.
+(defmacro with-vc-properties (files form settings)
+  "Execute FORM, then maybe set per-file properties for FILES.
 SETTINGS is an association list of property/value pairs.  After
 executing FORM, set those properties from SETTINGS that have not yet
 been updated to their corresponding values."
   (declare (debug t))
   `(let ((vc-touched-properties (list t)))
      ,form
-     (mapcar (lambda (setting)
+     (dolist (file ,files)
+       (mapc (lambda (setting)
               (let ((property (car setting)))
                 (unless (memq property vc-touched-properties)
-                  (put (intern ,file vc-file-prop-obarray)
+                  (put (intern file vc-file-prop-obarray)
                        property (cdr setting)))))
-            ,settings)))
-
-;; Random helper functions
-
-(defsubst vc-editable-p (file)
-  "Return non-nil if FILE can be edited."
-  (or (eq (vc-checkout-model file) 'implicit)
-      (memq (vc-state file) '(edited needs-merge))))
+            ,settings))))
 
 ;; Two macros for elisp programming
+
 ;;;###autoload
 (defmacro with-vc-file (file comment &rest body)
   "Check out a writable copy of FILE if necessary, then execute BODY.
 Check in FILE with COMMENT (a string) after BODY has been executed.
 FILE is passed through `expand-file-name'; BODY executed within
-`save-excursion'.  If FILE is not under version control, or locked by
+`save-excursion'.  If FILE is not under version control, or you are
+using a locking version-control system and the file is locked by 
 somebody else, signal error."
   (declare (debug t) (indent 2))
   (let ((filevar (make-symbol "file")))
@@ -899,7 +888,7 @@ somebody else, signal error."
              (vc-checkout ,filevar t))))
        (save-excursion
          ,@body)
-       (vc-checkin ,filevar nil ,comment))))
+       (vc-checkin (list ,filevar) nil ,comment))))
 
 ;;;###autoload
 (defmacro edit-vc-file (file comment &rest body)
@@ -916,16 +905,7 @@ However, before executing BODY, find FILE, and after BODY, save buffer."
         ,@body
         (save-buffer)))))
 
-(defun vc-ensure-vc-buffer ()
-  "Make sure that the current buffer visits a version-controlled file."
-  (if vc-dired-mode
-      (set-buffer (find-file-noselect (dired-get-filename)))
-    (while vc-parent-buffer
-      (set-buffer vc-parent-buffer))
-    (if (not buffer-file-name)
-       (error "Buffer %s is not associated with a file" (buffer-name))
-      (if (not (vc-backend buffer-file-name))
-         (error "File %s is not under version control" buffer-file-name)))))
+;; Common command execution logic to be used by backends
 
 (defun vc-process-filter (p s)
   "An alternative output filter for async process P.
@@ -955,6 +935,33 @@ BUF defaults to \"*vc*\", can be a string and will be created if necessary."
           (inhibit-read-only t))
       (erase-buffer))))
 
+(defvar vc-sentinel-movepoint)          ;Dynamically scoped.
+
+(defun vc-process-sentinel (p s)
+  (let ((previous (process-get p 'vc-previous-sentinel)))
+    (if previous (funcall previous p s))
+    (with-current-buffer (process-buffer p)
+      (let (vc-sentinel-movepoint)
+        ;; Normally, we want async code such as sentinels to not move point.
+        (save-excursion
+          (goto-char (process-mark p))
+          (let ((cmds (process-get p 'vc-sentinel-commands)))
+            (process-put p 'vc-postprocess nil)
+            (dolist (cmd cmds)
+              ;; Each sentinel may move point and the next one should be run
+              ;; at that new point.  We could get the same result by having
+              ;; each sentinel read&set process-mark, but since `cmd' needs
+              ;; to work both for async and sync processes, this would be
+              ;; difficult to achieve.
+              (vc-exec-after cmd))))
+        ;; But sometimes the sentinels really want to move point.
+        (if vc-sentinel-movepoint
+            (let ((win (get-buffer-window (current-buffer) 0)))
+              (if (not win)
+                  (goto-char vc-sentinel-movepoint)
+                (with-selected-window win
+                  (goto-char vc-sentinel-movepoint)))))))))
+
 (defun vc-exec-after (code)
   "Eval CODE when the current buffer's process is done.
 If the current buffer has no process, just evaluate CODE.
@@ -967,30 +974,34 @@ Else, add CODE to the process' sentinel."
      ;; lost.  Terminated processes get deleted automatically
      ;; anyway. -- cyd
      ((or (null proc) (eq (process-status proc) 'exit))
+      ;; Make sure we've read the process's output before going further.
+      (if proc (accept-process-output proc))
       (eval code))
      ;; If a process is running, add CODE to the sentinel
      ((eq (process-status proc) 'run)
-      (let ((sentinel (process-sentinel proc)))
-       (set-process-sentinel proc
-         `(lambda (p s)
-            (with-current-buffer ',(current-buffer)
-              (goto-char (process-mark p))
-              ,@(append (cdr (cdr (cdr ;strip off `with-current-buffer buf
-                                        ;             (goto-char...)'
-                          (car (cdr (cdr ;strip off `lambda (p s)'
-                           sentinel))))))
-                        (list `(vc-exec-after ',code))))))))
+      (let ((previous (process-sentinel proc)))
+        (unless (eq previous 'vc-process-sentinel)
+          (process-put proc 'vc-previous-sentinel previous))
+        (set-process-sentinel proc 'vc-process-sentinel))
+      (process-put proc 'vc-sentinel-commands
+                   (cons code (process-get proc 'vc-sentinel-commands))))
      (t (error "Unexpected process state"))))
   nil)
 
 (defvar vc-post-command-functions nil
   "Hook run at the end of `vc-do-command'.
 Each function is called inside the buffer in which the command was run
-and is passed 3 arguments: the COMMAND, the FILE and the FLAGS.")
+and is passed 3 arguments: the COMMAND, the FILES and the FLAGS.")
 
 (defvar w32-quote-process-args)
+
+(defun vc-delistify (filelist)
+  "Smash a FILELIST into a file list string suitable for info messages."
+  ;; FIXME what about file names with spaces?
+  (if (not filelist) "."  (mapconcat 'identity filelist " ")))
+
 ;;;###autoload
-(defun vc-do-command (buffer okstatus command file &rest flags)
+(defun vc-do-command (buffer okstatus command file-or-list &rest flags)
   "Execute a VC command, notifying user and checking for errors.
 Output from COMMAND goes to BUFFER, or *vc* if BUFFER is nil or the
 current buffer if BUFFER is t.  If the destination buffer is not
@@ -998,65 +1009,82 @@ already current, set it up properly and erase it.  The command is
 considered successful if its exit status does not exceed OKSTATUS (if
 OKSTATUS is nil, that means to ignore error status, if it is `async', that
 means not to wait for termination of the subprocess; if it is t it means to
-ignore all execution errors).  FILE is the
-name of the working file (may also be nil, to execute commands that
-don't expect a file name).  If an optional list of FLAGS is present,
+ignore all execution errors).  FILE-OR-LIST is the name of a working file;
+it may be a list of files or be nil (to execute commands that don't expect 
+a file name or set of files).  If an optional list of FLAGS is present,
 that is inserted into the command line before the filename."
-  (and file (setq file (expand-file-name file)))
-  (if vc-command-messages
-      (message "Running %s on %s..." command file))
-  (save-current-buffer
-    (unless (or (eq buffer t)
-                (and (stringp buffer)
-                     (string= (buffer-name) buffer))
-                (eq buffer (current-buffer)))
-      (vc-setup-buffer buffer))
-    (let ((squeezed (remq nil flags))
-         (inhibit-read-only t)
-         (status 0))
-      (when file
-       ;; FIXME: file-relative-name can return a bogus result because
-       ;; it doesn't look at the actual file-system to see if symlinks
-       ;; come into play.
-       (setq squeezed (append squeezed (list (file-relative-name file)))))
-      (let ((exec-path (append vc-path exec-path))
-           ;; Add vc-path to PATH for the execution of this command.
-           (process-environment
-            (cons (concat "PATH=" (getenv "PATH")
-                          path-separator
-                          (mapconcat 'identity vc-path path-separator))
-                  process-environment))
-           (w32-quote-process-args t))
-       (if (and (eq okstatus 'async) (file-remote-p default-directory))
-           ;; start-process does not support remote execution
-           (setq okstatus nil))
-       (if (eq okstatus 'async)
-           (let ((proc
-                  (let ((process-connection-type nil))
-                    (apply 'start-process command (current-buffer) command
-                           squeezed))))
-              (unless (active-minibuffer-window)
-                (message "Running %s in the background..." command))
-             ;;(set-process-sentinel proc (lambda (p msg) (delete-process p)))
-             (set-process-filter proc 'vc-process-filter)
-             (vc-exec-after
-              `(unless (active-minibuffer-window)
-                  (message "Running %s in the background... done" ',command))))
-         (let ((buffer-undo-list t))
-            (setq status (apply 'process-file command nil t nil squeezed)))
-         (when (and (not (eq t okstatus))
-                     (or (not (integerp status))
-                         (and okstatus (< okstatus status))))
-           (pop-to-buffer (current-buffer))
-           (goto-char (point-min))
-           (shrink-window-if-larger-than-buffer)
-           (error "Running %s...FAILED (%s)" command
-                  (if (integerp status) (format "status %d" status) status))))
-       (if vc-command-messages
-           (message "Running %s...OK" command)))
-      (vc-exec-after
-       `(run-hook-with-args 'vc-post-command-functions ',command ',file ',flags))
-      status)))
+  ;; FIXME: file-relative-name can return a bogus result because
+  ;; it doesn't look at the actual file-system to see if symlinks
+  ;; come into play.
+  (let* ((files
+         (mapcar (lambda (f) (file-relative-name (expand-file-name f)))
+                 (if (listp file-or-list) file-or-list (list file-or-list))))
+        (full-command
+         ;; What we're doing here is preparing a version of the command 
+         ;; for display in a debug-progess message.  If it's fewer than
+         ;; 20 characters display the entire command (without trailing 
+         ;; newline).  Otherwise display the first 20 followed by an ellipsis.
+         (concat (if (string= (substring command -1) "\n")
+                     (substring command 0 -1)
+                   command)
+                 " " 
+                 (vc-delistify (mapcar (lambda (s) (if (> (length s) 20) (concat (substring s 0 2) "...")  s)) flags)) 
+                 " " (vc-delistify files))))
+    (save-current-buffer
+      (unless (or (eq buffer t)
+                 (and (stringp buffer)
+                      (string= (buffer-name) buffer))
+                 (eq buffer (current-buffer)))
+       (vc-setup-buffer buffer))
+      (let ((squeezed (remq nil flags))
+           (inhibit-read-only t)
+           (status 0))
+       (when files
+         (setq squeezed (nconc squeezed files)))
+       (let ((exec-path (append vc-path exec-path))
+             ;; Add vc-path to PATH for the execution of this command.
+             (process-environment
+              (cons (concat "PATH=" (getenv "PATH")
+                            path-separator
+                            (mapconcat 'identity vc-path path-separator))
+                    process-environment))
+             (w32-quote-process-args t))
+         (if (and (eq okstatus 'async) (file-remote-p default-directory))
+             ;; start-process does not support remote execution
+             (setq okstatus nil))
+         (if (eq okstatus 'async)
+             ;; Run asynchronously
+             (let ((proc
+                    (let ((process-connection-type nil))
+                      (apply 'start-process command (current-buffer) command
+                             squeezed))))
+               (if vc-command-messages
+                   (message "Running %s in background..." full-command))
+               ;;(set-process-sentinel proc (lambda (p msg) (delete-process p)))
+               (set-process-filter proc 'vc-process-filter)
+               (vc-exec-after
+                `(if vc-command-messages
+                     (message "Running %s in background... done" ',full-command))))
+           ;; Run synchrously
+           (if vc-command-messages
+               (message "Running %s in foreground..." full-command))
+           (let ((buffer-undo-list t))
+             (setq status (apply 'process-file command nil t nil squeezed)))
+           (when (and (not (eq t okstatus))
+                      (or (not (integerp status))
+                          (and okstatus (< okstatus status))))
+             (pop-to-buffer (current-buffer))
+             (goto-char (point-min))
+             (shrink-window-if-larger-than-buffer)
+             (error "Running %s...FAILED (%s)" full-command
+                    (if (integerp status) (format "status %d" status) status))))
+         ;; We're done
+         (if vc-command-messages
+             (message "Running %s...OK = %d" full-command status)))
+       (vc-exec-after
+        `(run-hook-with-args 'vc-post-command-functions 
+                             ',command ',file-or-list ',flags))
+       status))))
 
 (defun vc-position-context (posn)
   "Save a bit of the text around POSN in the current buffer.
@@ -1172,9 +1200,121 @@ CONTEXT is that which `vc-buffer-context' returns."
          (let ((new-mark (vc-find-position-by-context mark-context)))
            (if new-mark (set-mark new-mark))))))
 
-(defun vc-revert-buffer1 (&optional arg no-confirm)
+;;; Code for deducing what fileset and backend to assume
+
+(defun vc-responsible-backend (file &optional register)
+  "Return the name of a backend system that is responsible for FILE.
+The optional argument REGISTER means that a backend suitable for
+registration should be found.
+
+If REGISTER is nil, then if FILE is already registered, return the
+backend of FILE.  If FILE is not registered, or a directory, then the
+first backend in `vc-handled-backends' that declares itself
+responsible for FILE is returned.  If no backend declares itself
+responsible, return the first backend.
+
+If REGISTER is non-nil, return the first responsible backend under
+which FILE is not yet registered.  If there is no such backend, return
+the first backend under which FILE is not yet registered, but could
+be registered."
+  (if (not vc-handled-backends)
+      (error "No handled backends"))
+  (or (and (not (file-directory-p file)) (not register) (vc-backend file))
+      (catch 'found
+       ;; First try: find a responsible backend.  If this is for registration,
+       ;; it must be a backend under which FILE is not yet registered.
+       (dolist (backend vc-handled-backends)
+         (and (or (not register)
+                  (not (vc-call-backend backend 'registered file)))
+              (vc-call-backend backend 'responsible-p file)
+              (throw 'found backend)))
+       ;; no responsible backend
+       (if (not register)
+           ;; if this is not for registration, the first backend must do
+           (car vc-handled-backends)
+         ;; for registration, we need to find a new backend that
+         ;; could register FILE
+         (dolist (backend vc-handled-backends)
+           (and (not (vc-call-backend backend 'registered file))
+                (vc-call-backend backend 'could-register file)
+                (throw 'found backend)))
+         (error "No backend that could register")))))
+
+(defun vc-expand-dirs (file-or-dir-list)
+  "Expands directories in a file list specification.
+Only files already under version control are noticed."
+  ;; FIXME: Kill this function.
+  (let ((flattened '()))
+    (dolist (node file-or-dir-list)
+      (vc-file-tree-walk
+       node (lambda (f) (if (vc-backend f) (push f flattened)))))
+    (nreverse flattened)))
+
+(defun vc-deduce-fileset (&optional allow-directory-wildcard)
+  "Deduce a set of files and a backend to apply an operation to.
+
+If we're in VC-dired-mode, the fileset is the list of marked
+files.  Otherwise, if we're looking at a buffer visiting a
+version-controlled file. the fileset is a singleton containing
+the relative filename, throw an error.
+
+If neither of these things is true, but allow-directory-wildcard is on, 
+select all files under version control at and below the current 
+directory.
+
+Otherwise, throw an error.
+"
+  (cond (vc-dired-mode 
+        (let ((regexp (dired-marker-regexp))
+              (marked (dired-map-over-marks (dired-get-filename) nil)))
+          (unless marked
+            (error "No files have been selected."))
+          ;; All members of the fileset must have the same backend
+          (let ((firstbackend (vc-backend (car marked))))
+                (mapc (lambda (f) (unless (eq (vc-backend f) firstbackend)
+                                    (error "All members of a fileset must be under the same version-control system.")))
+                      (cdr marked)))
+          marked))
+       ((vc-backend buffer-file-name)
+        (list buffer-file-name))
+       ((and vc-parent-buffer (buffer-file-name vc-parent-buffer))
+        (progn
+          (set-buffer vc-parent-buffer)
+          (vc-deduce-fileset)))
+       ;; This is guarded by an enabling arg so users won't potentially 
+       ;; shoot themselves in the foot by modifying a fileset they can't 
+       ;; verify by eyeball.  Allow it for nondestructive commands like
+       ;; making diffs, or possibly for destructive ones that have
+       ;; confirmation prompts.
+       (allow-directory-wildcard
+        (progn
+          (message "All version-controlled files below %s selected."
+                   default-directory)
+          (list default-directory)))
+       (t (error "No fileset is available here."))))
+
+(defun vc-ensure-vc-buffer ()
+  "Make sure that the current buffer visits a version-controlled file."
+  (if vc-dired-mode
+      (set-buffer (find-file-noselect (dired-get-filename)))
+    (while vc-parent-buffer
+      (set-buffer vc-parent-buffer))
+    (if (not buffer-file-name)
+       (error "Buffer %s is not associated with a file" (buffer-name))
+      (if (not (vc-backend buffer-file-name))
+         (error "File %s is not under version control" buffer-file-name)))))
+
+;;; Support for the C-x v v command.  This is where all the single-file-oriented
+;;; code from before the fileset rewrite lives.
+
+(defsubst vc-editable-p (file)
+  "Return non-nil if FILE can be edited."
+  (or (eq (vc-checkout-model file) 'implicit)
+      (memq (vc-state file) '(edited needs-merge))))
+
+(defun vc-revert-buffer-internal (&optional arg no-confirm)
   "Revert buffer, keeping point and mark where user expects them.
-Try to be clever in the face of changes due to expanded version control
+Try to be clever in the face of changes due to expanded version-control
 key words.  This is important for typeahead to work as expected.
 ARG and NO-CONFIRM are passed on to `revert-buffer'."
   (interactive "P")
@@ -1190,7 +1330,6 @@ ARG and NO-CONFIRM are passed on to `revert-buffer'."
       (revert-buffer arg no-confirm t))
     (vc-restore-buffer-context context)))
 
-
 (defun vc-buffer-sync (&optional not-urgent)
   "Make sure the current buffer and its working file are in sync.
 NOT-URGENT means it is ok to continue if the user says not to save."
@@ -1201,135 +1340,176 @@ NOT-URGENT means it is ok to continue if the user says not to save."
        (unless not-urgent
          (error "Aborted")))))
 
-(defun vc-default-latest-on-branch-p (backend file)
-  "Return non-nil if FILE is the latest on its branch.
-This default implementation always returns non-nil, which means that
-editing non-current versions is not supported by default."
-  t)
+(defvar vc-dired-window-configuration)
 
-(defun vc-next-action-on-file (file verbose &optional comment)
-  "Do The Right Thing for a given FILE under version control.
-If COMMENT is specified, it will be used as an admin or checkin comment.
-If VERBOSE is non-nil, query the user rather than using default parameters."
-  (let ((visited (get-file-buffer file))
-       state version)
-    (when visited
-      (if vc-dired-mode
-          (switch-to-buffer-other-window visited)
-        (set-buffer visited))
-      ;; Check relation of buffer and file, and make sure
-      ;; user knows what he's doing.  First, finding the file
-      ;; will check whether the file on disk is newer.
-      ;; Ignore buffer-read-only during this test, and
-      ;; preserve find-file-literally.
-      (let ((buffer-read-only (not (file-writable-p file))))
-        (find-file-noselect file nil find-file-literally))
-      (if (not (verify-visited-file-modtime (current-buffer)))
-         (if (yes-or-no-p "Replace file on disk with buffer contents? ")
-             (write-file buffer-file-name)
-           (error "Aborted"))
-       ;; Now, check if we have unsaved changes.
-       (vc-buffer-sync t)
-       (if (buffer-modified-p)
-           (or (y-or-n-p "Operate on disk file, keeping modified buffer? ")
-               (error "Aborted")))))
+;; Here's the major entry point.
+
+;;;###autoload
+(defun vc-next-action (verbose)
+  "Do the next logical version control operation on the current fileset.
+This requires that all files in the fileset be in the same state.
 
+For locking systems:
+   If every file is not already registered, this registers each for version
+control.
+   If every file is registered and not locked by anyone, this checks out
+a writable and locked file of each ready for editing.
+   If every file is checked out and locked by the calling user, this
+first checks to see if each file has changed since checkout.  If not,
+it performs a revert on that file.
+   If every file has been changed, this pops up a buffer for entry
+of a log message; when the message has been entered, it checks in the
+resulting changes along with the log message as change commentary.  If
+the variable `vc-keep-workfiles' is non-nil (which is its default), a
+read-only copy of each changed file is left in place afterwards.
+   If the affected file is registered and locked by someone else, you are
+given the option to steal the lock(s).
+
+For merging systems:
+   If every file is not already registered, this registers each one for version
+control.  This does an add, but not a commit.
+   If every file is added but not committed, each one is committed.
+   If every working file is changed, but the corresponding repository file is
+unchanged, this pops up a buffer for entry of a log message; when the
+message has been entered, it checks in the resulting changes along
+with the logmessage as change commentary.  A writable file is retained.
+   If the repository file is changed, you are asked if you want to
+merge in the changes into your working copy."
+  (interactive "P")
+  (let* ((files (vc-deduce-fileset))
+        (backend (vc-backend (car files)))
+        (state (vc-state (car files)))
+        (model (vc-checkout-model (car files)))
+        revision)
+    ;; Verify that the fileset is homogenous
+    (dolist (file (cdr files))
+      (if (not (eq (vc-state file) state))
+         (error "Fileset is in a mixed-up state"))
+      (if (not (eq (vc-checkout-model file) model))
+         (error "Fileset has mixed checkout models")))
+    ;; Check for buffers in the fileset not matching the on-disk contents.
+    (dolist (file files)
+      (let ((visited (get-file-buffer file)))
+       (when visited
+         (if vc-dired-mode
+             (switch-to-buffer-other-window visited)
+           (set-buffer visited))
+         ;; Check relation of buffer and file, and make sure
+         ;; user knows what he's doing.  First, finding the file
+         ;; will check whether the file on disk is newer.
+         ;; Ignore buffer-read-only during this test, and
+         ;; preserve find-file-literally.
+         (let ((buffer-read-only (not (file-writable-p file))))
+           (find-file-noselect file nil find-file-literally))
+         (if (not (verify-visited-file-modtime (current-buffer)))
+             (if (yes-or-no-p (format "Replace %s on disk with buffer contents? " file))
+                 (write-file buffer-file-name)
+               (error "Aborted"))
+           ;; Now, check if we have unsaved changes.
+           (vc-buffer-sync t)
+           (if (buffer-modified-p)
+               (or (y-or-n-p (message "Use %s on disk, keeping modified buffer? " file))
+                   (error "Aborted")))))))
     ;; Do the right thing
-    (if (not (vc-registered file))
-       (vc-register verbose comment)
-      (vc-recompute-state file)
-      (if visited (vc-mode-line file))
-      (setq state (vc-state file))
+    (cond 
+     ;; Files aren't registered
+     ((not state)
+      (mapc 'vc-register files))
+     ;; Files are up-to-date, or need a merge and user specified a revision
+     ((or (eq state 'up-to-date) (and verbose (eq state 'needs-patch)))
       (cond
-       ;; up-to-date
-       ((or (eq state 'up-to-date)
-           (and verbose (eq state 'needs-patch)))
-       (cond
-        (verbose
-         ;; go to a different version
-         (setq version
-               (read-string "Branch, version, or backend to move to: "))
-         (let ((vsym (intern-soft (upcase version))))
-           (if (member vsym vc-handled-backends)
-               (vc-transfer-file file vsym)
-             (vc-checkout file (eq (vc-checkout-model file) 'implicit)
-                          version))))
-        ((not (eq (vc-checkout-model file) 'implicit))
-         ;; check the file out
-         (vc-checkout file t))
-        (t
-         ;; do nothing
-         (message "%s is up-to-date" file))))
-
-       ;; Abnormal: edited but read-only
-       ((and visited (eq state 'edited)
-            buffer-read-only (not (file-writable-p file)))
-       ;; Make the file+buffer read-write.  If the user really wanted to
-       ;; commit, he'll get a chance to do that next time around, anyway.
-       (message "File is edited but read-only; making it writable")
-       (set-file-modes buffer-file-name
-                       (logior (file-modes buffer-file-name) 128))
-       (toggle-read-only -1))
-
-       ;; edited
-       ((eq state 'edited)
-       (cond
-        ;; For files with locking, if the file does not contain
-        ;; any changes, just let go of the lock, i.e. revert.
-        ((and (not (eq (vc-checkout-model file) 'implicit))
-              (vc-workfile-unchanged-p file)
-              ;; If buffer is modified, that means the user just
-              ;; said no to saving it; in that case, don't revert,
-              ;; because the user might intend to save after
-              ;; finishing the log entry.
-              (not (and visited (buffer-modified-p))))
-         ;; DO NOT revert the file without asking the user!
-         (if (not visited) (find-file-other-window file))
-         (if (yes-or-no-p "Revert to master version? ")
-             (vc-revert-buffer)))
-        (t ;; normal action
+       (verbose
+       ;; go to a different revision
+       (setq revision (read-string "Branch, revision, or backend to move to: "))
+       (let ((vsym (intern-soft (upcase revision))))
+         (if (member vsym vc-handled-backends)
+             (mapc (lambda (file) (vc-transfer-file file vsym)) files)
+           (mapc (lambda (file) 
+                   (vc-checkout file (eq model 'implicit) revision))))))
+       ((not (eq model 'implicit))
+       ;; check the files out
+       (mapc (lambda (file) (vc-checkout file t)) files))
+       (t
+        ;; do nothing
+        (message "Fileset is up-to-date"))))
+     ;; Files have local changes 
+     ((eq state 'edited)
+      (let ((ready-for-commit files))
+       ;; If files are edited but read-only, give user a chance to correct
+       (dolist (file files)
+         (if (not (file-writable-p file))
+             (progn
+               ;; Make the file+buffer read-write.
+               (unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue?" file))
+                 (error "Aborted"))
+               (set-file-modes file (logior (file-modes file) 128))
+               (let ((visited (get-file-buffer file)))
+                 (if visited 
+                     (save-excursion 
+                       (set-buffer visited) 
+                       (toggle-read-only -1)))))))
+       ;; Allow user to revert files with no changes
+       (save-excursion
+         (let ((revertlist '()))
+           (dolist (file files)
+             (let ((visited (get-file-buffer file)))
+               ;; For files with locking, if the file does not contain
+               ;; any changes, just let go of the lock, i.e. revert.
+               (if (and (not (eq model 'implicit))
+                        (vc-workfile-unchanged-p file)
+                        ;; If buffer is modified, that means the user just
+                        ;; said no to saving it; in that case, don't revert,
+                        ;; because the user might intend to save after
+                        ;; finishing the log entry and committing.
+                        (not (and visited (buffer-modified-p))))
+                   (progn
+                     (vc-revert-file file)
+                     (delete file ready-for-commit)))))))
+       ;; Remaining files need to be committed
+       (if (not ready-for-commit)
+           (message "No files remain to be committed")
          (if (not verbose)
-             (vc-checkin file nil comment)
-           (setq version (read-string "New version or backend: "))
-           (let ((vsym (intern (upcase version))))
-             (if (member vsym vc-handled-backends)
-                 (vc-transfer-file file vsym)
-               (vc-checkin file version comment)))))))
-
-       ;; locked by somebody else
-       ((stringp state)
-       (if comment
-           (error "Sorry, you can't steal the lock on %s this way"
-                  (file-name-nondirectory file)))
-       (vc-steal-lock file
-                       (if verbose (read-string "Version to steal: ")
-                         (vc-workfile-version file))
-                      state))
-
-       ;; needs-patch
-       ((eq state 'needs-patch)
+             (vc-checkin ready-for-commit)
+           (progn
+             (setq revision (read-string "New revision or backend: "))
+             (let ((vsym (intern (upcase revision))))
+               (if (member vsym vc-handled-backends)
+                   (vc-transfer-file file vsym)
+                 (vc-checkin ready-for-commit revision))))))))
+     ;; locked by somebody else (locking VCSes only)
+     ((stringp state)
+      (let ((revision 
+            (if verbose 
+                (read-string "Revision to steal: ")
+              (vc-working-revision file))))
+       (mapc (lambda (file) (vc-steal-lock file revision state) files))))
+       ;; needs-patch
+     ((eq state 'needs-patch)
+      (dolist (file files)
        (if (yes-or-no-p (format
-                         "%s is not up-to-date.  Get latest version? "
+                         "%s is not up-to-date.  Get latest revision? "
                          (file-name-nondirectory file)))
-           (vc-checkout file (eq (vc-checkout-model file) 'implicit) t)
-         (if (and (not (eq (vc-checkout-model file) 'implicit))
-                  (yes-or-no-p "Lock this version? "))
-             (vc-checkout file t)
-           (error "Aborted"))))
-
-       ;; needs-merge
-       ((eq state 'needs-merge)
+           (vc-checkout file (eq model 'implicit) t)
+         (if (and (not (eq model 'implicit))
+                  (yes-or-no-p "Lock this revision? "))
+             (vc-checkout file t)))))
+     ;; needs-merge
+     ((eq state 'needs-merge)
+      (dolist (file files)
        (if (yes-or-no-p (format
                          "%s is not up-to-date.  Merge in changes now? "
                          (file-name-nondirectory file)))
-           (vc-maybe-resolve-conflicts file (vc-call merge-news file))
-         (error "Aborted")))
+           (vc-maybe-resolve-conflicts file (vc-call merge-news file)))))
 
-       ;; unlocked-changes
-       ((eq state 'unlocked-changes)
-       (if (not visited) (find-file-other-window file))
+     ;; unlocked-changes
+     ((eq state 'unlocked-changes)
+      (dolist (file files)
+       (if (not (equal buffer-file-name file)) 
+           (find-file-other-window file))
        (if (save-window-excursion
-             (vc-version-diff file (vc-workfile-version file) nil)
+             (vc-diff-internal 
+              (vc-backend file) nil (list file)
+              (vc-working-revision file) nil)
              (goto-char (point-min))
              (let ((inhibit-read-only t))
                (insert
@@ -1338,108 +1518,34 @@ If VERBOSE is non-nil, query the user rather than using default parameters."
              (yes-or-no-p (concat "File has unlocked changes.  "
                                   "Claim lock retaining changes? ")))
            (progn (vc-call steal-lock file)
-                   (clear-visited-file-modtime)
+                  (clear-visited-file-modtime)
                   ;; Must clear any headers here because they wouldn't
                   ;; show that the file is locked now.
                   (vc-clear-headers file)
                   (write-file buffer-file-name)
                   (vc-mode-line file))
          (if (not (yes-or-no-p
-                   "Revert to checked-in version, instead? "))
+                   "Revert to checked-in revision, instead? "))
              (error "Checkout aborted")
-           (vc-revert-buffer1 t t)
+           (vc-revert-buffer-internal t t)
            (vc-checkout file t))))))))
 
-(defvar vc-dired-window-configuration)
-
-(defun vc-next-action-dired (file rev comment)
-  "Call `vc-next-action-on-file' on all the marked files.
-Ignores FILE and REV, but passes on COMMENT."
-  (let ((dired-buffer (current-buffer)))
-    (dired-map-over-marks
-     (let ((file (dired-get-filename)))
-       (message "Processing %s..." file)
-       (vc-next-action-on-file file nil comment)
-       (set-buffer dired-buffer)
-       (set-window-configuration vc-dired-window-configuration)
-       (message "Processing %s...done" file))
-    nil t))
-  (dired-move-to-filename))
-
-;; Here's the major entry point.
-
-;;;###autoload
-(defun vc-next-action (verbose)
-  "Do the next logical version control operation on the current file.
-
-If you call this from within a VC dired buffer with no files marked,
-it will operate on the file in the current line.
-
-If you call this from within a VC dired buffer, and one or more
-files are marked, it will accept a log message and then operate on
-each one.  The log message will be used as a comment for any register
-or checkin operations, but ignored when doing checkouts.  Attempted
-lock steals will raise an error.
-
-A prefix argument lets you specify the version number to use.
-
-For RCS and SCCS files:
-   If the file is not already registered, this registers it for version
-control.
-   If the file is registered and not locked by anyone, this checks out
-a writable and locked file ready for editing.
-   If the file is checked out and locked by the calling user, this
-first checks to see if the file has changed since checkout.  If not,
-it performs a revert.
-   If the file has been changed, this pops up a buffer for entry
-of a log message; when the message has been entered, it checks in the
-resulting changes along with the log message as change commentary.  If
-the variable `vc-keep-workfiles' is non-nil (which is its default), a
-read-only copy of the changed file is left in place afterwards.
-   If the file is registered and locked by someone else, you are given
-the option to steal the lock.
-
-For CVS files:
-   If the file is not already registered, this registers it for version
-control.  This does a \"cvs add\", but no \"cvs commit\".
-   If the file is added but not committed, it is committed.
-   If your working file is changed, but the repository file is
-unchanged, this pops up a buffer for entry of a log message; when the
-message has been entered, it checks in the resulting changes along
-with the logmessage as change commentary.  A writable file is retained.
-   If the repository file is changed, you are asked if you want to
-merge in the changes into your working copy."
-
-  (interactive "P")
-  (catch 'nogo
-    (if vc-dired-mode
-       (let ((files (dired-get-marked-files)))
-          (set (make-local-variable 'vc-dired-window-configuration)
-               (current-window-configuration))
-         (if (string= ""
-                (mapconcat
-                    (lambda (f)
-                      (if (not (vc-up-to-date-p f)) "@" ""))
-                    files ""))
-               (vc-next-action-dired nil nil "dummy")
-             (vc-start-entry nil nil nil nil
-                             "Enter a change comment for the marked files."
-                             'vc-next-action-dired))
-           (throw 'nogo nil)))
-    (while vc-parent-buffer
-      (pop-to-buffer vc-parent-buffer))
-    (if buffer-file-name
-        (vc-next-action-on-file buffer-file-name verbose)
-      (error "Buffer %s is not associated with a file" (buffer-name)))))
-
-;; These functions help the vc-next-action entry point
-
-(defun vc-default-init-version (backend) vc-default-init-version)
+(defun vc-create-repo (backend)
+  "Create an empty repository in the current directory."
+  (interactive
+   (list
+    (intern
+     (upcase
+      (completing-read
+       "Create repository for: "
+       (mapcar (lambda (b) (list (downcase (symbol-name b)))) vc-handled-backends)
+       nil t)))))
+  (vc-call-backend backend 'create-repo))
 
 ;;;###autoload
-(defun vc-register (&optional set-version comment)
+(defun vc-register (&optional set-revision comment)
   "Register the current file into a version control system.
-With prefix argument SET-VERSION, allow user to specify initial version
+With prefix argument SET-REVISION, allow user to specify initial revision
 level.  If COMMENT is present, use that as an initial comment.
 
 The version control system to use is found by cycling through the list
@@ -1463,74 +1569,34 @@ first backend that could register the file is used."
       (set-buffer-modified-p t))
   (vc-buffer-sync)
 
-  (vc-start-entry buffer-file-name
-                  (if set-version
-                      (read-string (format "Initial version level for %s: "
+  (vc-start-entry (list buffer-file-name)
+                  (if set-revision
+                      (read-string (format "Initial revision level for %s: "
                                           (buffer-name)))
                    (vc-call-backend (vc-responsible-backend buffer-file-name)
-                                    'init-version))
+                                    'init-revision))
                   (or comment (not vc-initial-comment))
                  nil
                   "Enter initial comment."
-                 (lambda (file rev comment)
-                   (message "Registering %s... " file)
-                   (let ((backend (vc-responsible-backend file t)))
-                     (vc-file-clearprops file)
-                     (vc-call-backend backend 'register file rev comment)
-                     (vc-file-setprop file 'vc-backend backend)
-                     (unless vc-make-backup-files
-                       (make-local-variable 'backup-inhibited)
-                       (setq backup-inhibited t)))
-                   (message "Registering %s... done" file))))
-
-
-(defun vc-responsible-backend (file &optional register)
-  "Return the name of a backend system that is responsible for FILE.
-The optional argument REGISTER means that a backend suitable for
-registration should be found.
-
-If REGISTER is nil, then if FILE is already registered, return the
-backend of FILE.  If FILE is not registered, or a directory, then the
-first backend in `vc-handled-backends' that declares itself
-responsible for FILE is returned.  If no backend declares itself
-responsible, return the first backend.
-
-If REGISTER is non-nil, return the first responsible backend under
-which FILE is not yet registered.  If there is no such backend, return
-the first backend under which FILE is not yet registered, but could
-be registered."
-  (if (not vc-handled-backends)
-      (error "No handled backends"))
-  (or (and (not (file-directory-p file)) (not register) (vc-backend file))
-      (catch 'found
-       ;; First try: find a responsible backend.  If this is for registration,
-       ;; it must be a backend under which FILE is not yet registered.
-       (dolist (backend vc-handled-backends)
-         (and (or (not register)
-                  (not (vc-call-backend backend 'registered file)))
-              (vc-call-backend backend 'responsible-p file)
-              (throw 'found backend)))
-       ;; no responsible backend
-       (if (not register)
-           ;; if this is not for registration, the first backend must do
-           (car vc-handled-backends)
-         ;; for registration, we need to find a new backend that
-         ;; could register FILE
-         (dolist (backend vc-handled-backends)
-           (and (not (vc-call-backend backend 'registered file))
-                (vc-call-backend backend 'could-register file)
-                (throw 'found backend)))
-         (error "No backend that could register")))))
-
-(defun vc-default-responsible-p (backend file)
-  "Indicate whether BACKEND is reponsible for FILE.
-The default is to return nil always."
-  nil)
-
-(defun vc-default-could-register (backend file)
-  "Return non-nil if BACKEND could be used to register FILE.
-The default implementation returns t for all files."
-  t)
+                 (lambda (files rev comment)
+                   (dolist (file files)
+                     (message "Registering %s... " file)
+                     (let ((backend (vc-responsible-backend file t)))
+                       (vc-file-clearprops file)
+                       (vc-call-backend backend 'register (list file) rev comment)
+                       (vc-file-setprop file 'vc-backend backend)
+                       (unless vc-make-backup-files
+                         (make-local-variable 'backup-inhibited)
+                         (setq backup-inhibited t)))
+                     (message "Registering %s... done" file)))))
+
+(defun vc-register-with (backend)
+  "Register the current file with a specified back end."
+  (interactive "SBackend: ")
+  (if (not (member backend vc-handled-backends))
+      (error "Unknown back end."))
+  (let ((vc-handled-backends (list backend)))
+    (call-interactively 'vc-register)))
 
 (defun vc-resynch-window (file &optional keep noquery)
   "If FILE is in the current buffer, either revert or unvisit it.
@@ -1542,7 +1608,7 @@ rather than user editing!"
   (and (string= buffer-file-name file)
        (if keep
           (progn
-            (vc-revert-buffer1 t noquery)
+            (vc-revert-buffer-internal t noquery)
              ;; TODO: Adjusting view mode might no longer be necessary
              ;; after RMS change to files.el of 1999-08-08.  Investigate
              ;; this when we install the new VC.
@@ -1567,8 +1633,8 @@ rather than user editing!"
            (vc-resynch-window file keep noquery)))))
   (vc-dired-resynch-file file))
 
-(defun vc-start-entry (file rev comment initial-contents msg action &optional after-hook)
-  "Accept a comment for an operation on FILE revision REV.
+(defun vc-start-entry (files rev comment initial-contents msg action &optional after-hook)
+  "Accept a comment for an operation on FILES revision REV.
 If COMMENT is nil, pop up a VC-log buffer, emit MSG, and set the
 action on close to ACTION.  If COMMENT is a string and
 INITIAL-CONTENTS is non-nil, then COMMENT is used as the initial
@@ -1578,9 +1644,12 @@ entered COMMENT.  If COMMENT is t, also do action immediately with an
 empty comment.  Remember the file's buffer in `vc-parent-buffer'
 \(current one if no file).  AFTER-HOOK specifies the local value
 for vc-log-operation-hook."
-  (let ((parent (or (and file (get-file-buffer file)) (current-buffer))))
+  (let ((parent 
+        (if (and files (equal (length files) 1))
+            (get-file-buffer (car files)) 
+          (current-buffer))))
     (if vc-before-checkin-hook
-        (if file
+        (if files
             (with-current-buffer parent
               (run-hooks 'vc-before-checkin-hook))
           (run-hooks 'vc-before-checkin-hook)))
@@ -1590,13 +1659,13 @@ for vc-log-operation-hook."
     (set (make-local-variable 'vc-parent-buffer) parent)
     (set (make-local-variable 'vc-parent-buffer-name)
         (concat " from " (buffer-name vc-parent-buffer)))
-    (if file (vc-mode-line file))
-    (vc-log-edit file)
+    ;;(if file (vc-mode-line file))
+    (vc-log-edit files)
     (make-local-variable 'vc-log-after-operation-hook)
     (if after-hook
        (setq vc-log-after-operation-hook after-hook))
     (setq vc-log-operation action)
-    (setq vc-log-version rev)
+    (setq vc-log-revision rev)
     (when comment
       (erase-buffer)
       (when (stringp comment) (insert comment)))
@@ -1616,7 +1685,7 @@ After check-out, runs the normal hook `vc-checkout-hook'."
        (vc-up-to-date-p file)
        (vc-make-version-backup file))
   (with-vc-properties
-   file
+   (list file)
    (condition-case err
        (vc-call checkout file writable rev)
      (file-error
@@ -1646,7 +1715,7 @@ After check-out, runs the normal hook `vc-checkout-hook'."
        (error "Steal canceled"))
     (message "Stealing lock on %s..." file)
     (with-vc-properties
-     file
+     (list file)
      (vc-call steal-lock file rev)
      `((vc-state . edited)))
     (vc-resynch-buffer file t t)
@@ -1662,9 +1731,9 @@ After check-out, runs the normal hook `vc-checkout-hook'."
      ".\n")
     (message "Please explain why you stole the lock.  Type C-c C-c when done.")))
 
-(defun vc-checkin (file &optional rev comment initial-contents)
-  "Check in FILE.
-The optional argument REV may be a string specifying the new version
+(defun vc-checkin (files &optional rev comment initial-contents)
+  "Check in FILES.
+The optional argument REV may be a string specifying the new revision
 level (if nil increment the current level).  COMMENT is a comment
 string; if omitted, a buffer is popped up to accept a comment.  If
 INITIAL-CONTENTS is non-nil, then COMMENT is used as the initial contents
@@ -1675,25 +1744,25 @@ that the version control system supports this mode of operation.
 
 Runs the normal hook `vc-checkin-hook'."
   (vc-start-entry
-   file rev comment initial-contents
+   files rev comment initial-contents
    "Enter a change comment."
-   (lambda (file rev comment)
-     (message "Checking in %s..." file)
+   (lambda (files rev comment)
+     (message "Checking in %s..." (vc-delistify files))
      ;; "This log message intentionally left almost blank".
      ;; RCS 5.7 gripes about white-space-only comments too.
      (or (and comment (string-match "[^\t\n ]" comment))
         (setq comment "*** empty log message ***"))
      (with-vc-properties
-      file
-      ;; Change buffers to get local value of vc-checkin-switches.
-      (with-current-buffer (or (get-file-buffer file) (current-buffer))
-       (progn
-         (vc-call checkin file rev comment)
-         (vc-delete-automatic-version-backups file)))
+      files
+      ;; We used to change buffers to get local value of vc-checkin-switches,
+      ;; but 'the' local buffer is not a well-defined concept for filesets.
+      (progn
+       (vc-call checkin files rev comment)
+       (mapc 'vc-delete-automatic-version-backups files))
       `((vc-state . up-to-date)
        (vc-checkout-time . ,(nth 5 (file-attributes file)))
-       (vc-workfile-version . nil)))
-     (message "Checking in %s...done" file))
+       (vc-working-revision . nil)))
+     (message "Checking in %s...done" (vc-delistify files)))
    'vc-checkin-hook))
 
 (defun vc-finish-logentry (&optional nocomment)
@@ -1705,7 +1774,7 @@ the buffer contents as a comment."
   ;; Check and record the comment, if any.
   (unless nocomment
     ;; Comment too long?
-    (vc-call-backend (or (and vc-log-file (vc-backend vc-log-file))
+    (vc-call-backend (or (and vc-log-fileset (vc-backend (car vc-log-fileset)))
                         (vc-responsible-backend default-directory))
                     'logentry-check)
     (run-hooks 'vc-logentry-check-hook))
@@ -1713,11 +1782,12 @@ the buffer contents as a comment."
   ;; But not if it is a vc-dired buffer.
   (with-current-buffer vc-parent-buffer
     (or vc-dired-mode (vc-buffer-sync)))
-  (if (not vc-log-operation) (error "No log operation is pending"))
+  (if (not vc-log-operation)
+      (error "No log operation is pending"))
   ;; save the parameters held in buffer-local variables
   (let ((log-operation vc-log-operation)
-       (log-file vc-log-file)
-       (log-version vc-log-version)
+       (log-fileset vc-log-fileset)
+       (log-revision vc-log-revision)
        (log-entry (buffer-string))
        (after-hook vc-log-after-operation-hook)
        (tmp-vc-parent-buffer vc-parent-buffer))
@@ -1725,8 +1795,8 @@ the buffer contents as a comment."
     ;; OK, do it to it
     (save-excursion
       (funcall log-operation
-              log-file
-              log-version
+              log-fileset
+              log-revision
               log-entry))
     ;; Remove checkin window (after the checkin so that if that fails
     ;; we don't zap the *VC-log* buffer and the typing therein).
@@ -1739,201 +1809,19 @@ the buffer contents as a comment."
                    (bury-buffer)
                    (pop-to-buffer tmp-vc-parent-buffer))))
     ;; Now make sure we see the expanded headers
-    (if log-file
-       (vc-resynch-buffer log-file vc-keep-workfiles t))
+    (if log-fileset
+       (mapc 
+        (lambda (file) (vc-resynch-buffer file vc-keep-workfiles t)) 
+        log-fileset))
     (if vc-dired-mode
       (dired-move-to-filename))
     (run-hooks after-hook 'vc-finish-logentry-hook)))
 
-;; Code for access to the comment ring
-
-;; Additional entry points for examining version histories
-
-;;;###autoload
-(defun vc-diff (historic &optional not-urgent)
-  "Display diffs between file versions.
-Normally this compares the current file and buffer with the most
-recent checked in version of that file.  This uses no arguments.  With
-a prefix argument HISTORIC, it reads the file name to use and two
-version designators specifying which versions to compare.  The
-optional argument NOT-URGENT non-nil means it is ok to say no to
-saving the buffer."
-  (interactive (list current-prefix-arg t))
-  (if historic
-      (call-interactively 'vc-version-diff)
-    (vc-ensure-vc-buffer)
-    (let ((file buffer-file-name))
-      (vc-buffer-sync not-urgent)
-      (if (vc-workfile-unchanged-p buffer-file-name)
-         (message "No changes to %s since latest version" file)
-       (vc-version-diff file nil nil)))))
-
-(defun vc-default-revision-completion-table (backend file) nil)
-
-(defun vc-version-diff (file rev1 rev2)
-  "List the differences between FILE's versions REV1 and REV2.
-If REV1 is empty or nil it means to use the current workfile version;
-REV2 empty or nil means the current file contents.  FILE may also be
-a directory, in that case, generate diffs between the correponding
-versions of all registered files in or below it."
-  (interactive
-   (let* ((file (expand-file-name
-                 (read-file-name (if buffer-file-name
-                                     "File or dir to diff (default visited file): "
-                                   "File or dir to diff: ")
-                                 default-directory buffer-file-name t)))
-          (rev1-default nil) (rev2-default nil)
-          (completion-table (vc-call revision-completion-table file)))
-     ;; compute default versions based on the file state
-     (cond
-      ;; if it's a directory, don't supply any version default
-      ((file-directory-p file)
-       nil)
-      ;; if the file is not up-to-date, use current version as older version
-      ((not (vc-up-to-date-p file))
-       (setq rev1-default (vc-workfile-version file)))
-      ;; if the file is not locked, use last and previous version as default
-      (t
-       (setq rev1-default (vc-call previous-version file
-                                   (vc-workfile-version file)))
-       (if (string= rev1-default "") (setq rev1-default nil))
-       (setq rev2-default (vc-workfile-version file))))
-     ;; construct argument list
-     (let* ((rev1-prompt (if rev1-default
-                            (concat "Older version (default "
-                                    rev1-default "): ")
-                          "Older version: "))
-           (rev2-prompt (concat "Newer version (default "
-                                (or rev2-default "current source") "): "))
-           (rev1 (if completion-table
-                     (completing-read rev1-prompt completion-table
-                                       nil nil nil nil rev1-default)
-                   (read-string rev1-prompt nil nil rev1-default)))
-           (rev2 (if completion-table
-                     (completing-read rev2-prompt completion-table
-                                       nil nil nil nil rev2-default)
-                   (read-string rev2-prompt nil nil rev2-default))))
-       (list file rev1 rev2))))
-  (if (file-directory-p file)
-      ;; recursive directory diff
-      (progn
-        (vc-setup-buffer "*vc-diff*")
-       (if (string-equal rev1 "") (setq rev1 nil))
-       (if (string-equal rev2 "") (setq rev2 nil))
-        (let ((inhibit-read-only t))
-          (insert "Diffs between "
-                  (or rev1 "last version checked in")
-                  " and "
-                  (or rev2 "current workfile(s)")
-                  ":\n\n"))
-        (let ((dir (file-name-as-directory file)))
-          (vc-call-backend (vc-responsible-backend dir)
-                           'diff-tree dir rev1 rev2))
-       (vc-exec-after `(let ((inhibit-read-only t))
-                         (insert "\nEnd of diffs.\n"))))
-    ;; Single file diff.  It is important that the vc-controlled buffer
-    ;; is still current at this time, because any local settings in that
-    ;; buffer should affect the diff command.
-    (vc-diff-internal file rev1 rev2))
-  (set-buffer "*vc-diff*")
-  (if (and (zerop (buffer-size))
-          (not (get-buffer-process (current-buffer))))
-      (progn
-       (if rev1
-           (if rev2
-               (message "No changes to %s between %s and %s" file rev1 rev2)
-             (message "No changes to %s since %s" file rev1))
-         (message "No changes to %s since latest version" file))
-       nil)
-    (pop-to-buffer (current-buffer))
-    ;; Gnus-5.8.5 sets up an autoload for diff-mode, even if it's
-    ;; not available.  Work around that.
-    (if (require 'diff-mode nil t) (diff-mode))
-    (vc-exec-after '(let ((inhibit-read-only t))
-                     (if (eq (buffer-size) 0)
-                         (insert "No differences found.\n"))
-                     (goto-char (point-min))
-                     (shrink-window-if-larger-than-buffer)))
-    t))
-
-(defun vc-diff-label (file file-rev rev)
-  (concat (file-relative-name file)
-         (format-time-string "\t%d %b %Y %T %z\t"
-                             (nth 5 (file-attributes file-rev)))
-         rev))
-
-(defun vc-diff-internal (file rev1 rev2)
-  "Run diff to compare FILE's revisions REV1 and REV2.
-Diff output goes to the *vc-diff* buffer.  The exit status of the diff
-command is returned.
-
-This function takes care to set up a proper coding system for diff output.
-If both revisions are available as local files, then it also does not
-actually call the backend, but performs a local diff."
-  (if (or (not rev1) (string-equal rev1 ""))
-      (setq rev1 (vc-workfile-version file)))
-  (if (string-equal rev2 "")
-      (setq rev2 nil))
-  (let ((file-rev1 (vc-version-backup-file file rev1))
-        (file-rev2 (if (not rev2)
-                       file
-                     (vc-version-backup-file file rev2)))
-        (coding-system-for-read (vc-coding-system-for-diff file)))
-    (if (and file-rev1 file-rev2)
-        (let ((status
-               (if (eq vc-diff-knows-L 'no)
-                   (apply 'vc-do-command "*vc-diff*" 1 "diff" nil
-                          (append (vc-switches nil 'diff)
-                                  (list (file-relative-name file-rev1)
-                                        (file-relative-name file-rev2))))
-                 (apply 'vc-do-command "*vc-diff*" 2 "diff" nil
-                        (append (vc-switches nil 'diff)
-                                ;; Provide explicit labels like RCS or
-                                ;; CVS would do so diff-mode refers to
-                                ;; `file' rather than to `file-rev1'
-                                ;; when trying to find/apply/undo
-                                ;; hunks.
-                                (list "-L" (vc-diff-label file file-rev1 rev1)
-                                      "-L" (vc-diff-label file file-rev2 rev2)
-                                      (file-relative-name file-rev1)
-                                      (file-relative-name file-rev2)))))))
-          (if (eq status 2)
-              (if (not vc-diff-knows-L)
-                  (setq vc-diff-knows-L 'no
-                        status (apply 'vc-do-command "*vc-diff*" 1 "diff" nil
-                                      (append 
-                                       (vc-switches nil 'diff)
-                                       (list (file-relative-name file-rev1)
-                                             (file-relative-name file-rev2)))))
-                (error "diff failed"))
-            (if (not vc-diff-knows-L) (setq vc-diff-knows-L 'yes)))
-          status)
-      (vc-call diff file rev1 rev2))))
-
-(defun vc-switches (backend op)
-  (let ((switches
-        (or (if backend
-                (let ((sym (vc-make-backend-sym
-                            backend (intern (concat (symbol-name op)
-                                                    "-switches")))))
-                  (if (boundp sym) (symbol-value sym))))
-            (let ((sym (intern (format "vc-%s-switches" (symbol-name op)))))
-              (if (boundp sym) (symbol-value sym)))
-            (cond
-             ((eq op 'diff) diff-switches)))))
-    (if (stringp switches) (list switches)
-      ;; If not a list, return nil.
-      ;; This is so we can set vc-diff-switches to t to override
-      ;; any switches in diff-switches.
-      (if (listp switches) switches))))
-
-;; Old def for compatibility with Emacs-21.[123].
-(defmacro vc-diff-switches-list (backend) `(vc-switches ',backend 'diff))
-(make-obsolete 'vc-diff-switches-list 'vc-switches "22.1")
+;;; Additional entry points for examining version histories
 
 (defun vc-default-diff-tree (backend dir rev1 rev2)
   "List differences for all registered files at and below DIR.
-The meaning of REV1 and REV2 is the same as for `vc-version-diff'."
+The meaning of REV1 and REV2 is the same as for `vc-revision-diff'."
   ;; This implementation does an explicit tree walk, and calls
   ;; vc-BACKEND-diff directly for each file.  An optimization
   ;; would be to use `vc-diff-internal', so that diffs can be local,
@@ -1948,7 +1836,7 @@ The meaning of REV1 and REV2 is the same as for `vc-version-diff'."
       `(let ((coding-system-for-read (vc-coding-system-for-diff ',f)))
          (message "Looking at %s" ',f)
          (vc-call-backend ',(vc-backend f)
-                          'diff ',f ',rev1 ',rev2))))))
+                          'diff (list ',f) ',rev1 ',rev2))))))
 
 (defun vc-coding-system-for-diff (file)
   "Return the coding system for reading diff output for FILE."
@@ -1963,33 +1851,203 @@ The meaning of REV1 and REV2 is the same as for `vc-version-diff'."
       ;; and a final fallback
       'undecided))
 
+(defun vc-switches (backend op)
+  (let ((switches
+        (or (if backend
+                (let ((sym (vc-make-backend-sym
+                            backend (intern (concat (symbol-name op)
+                                                    "-switches")))))
+                  (if (boundp sym) (symbol-value sym))))
+            (let ((sym (intern (format "vc-%s-switches" (symbol-name op)))))
+              (if (boundp sym) (symbol-value sym)))
+            (cond
+             ((eq op 'diff) diff-switches)))))
+    (if (stringp switches) (list switches)
+      ;; If not a list, return nil.
+      ;; This is so we can set vc-diff-switches to t to override
+      ;; any switches in diff-switches.
+      (if (listp switches) switches))))
+
+;; Old def for compatibility with Emacs-21.[123].
+(defmacro vc-diff-switches-list (backend) `(vc-switches ',backend 'diff))
+(make-obsolete 'vc-diff-switches-list 'vc-switches "22.1")
+
+(defun vc-diff-sentinel (verbose rev1-name rev2-name)
+  ;; Did changes get generated into the buffer?
+  (if (not (zerop (buffer-size (get-buffer "*vc-diff*"))))
+      (progn
+       (pop-to-buffer "*vc-diff*")
+       ;; Gnus-5.8.5 sets up an autoload for diff-mode, even if it's
+       ;; not available.  Work around that.
+       (if (require 'diff-mode nil t) (diff-mode))
+       (when verbose
+         (let (buffer-read-only)
+           (goto-char (point-max))
+           (insert (format "\n\nDiffs between %s and %s end here." rev1-name rev2-name))
+           (goto-char (point-min))
+           (insert (format "Diffs between %s and %s:\n\n" rev1-name rev2-name))))
+       (shrink-window-if-larger-than-buffer)
+       t)
+    (progn
+      (message "No changes between %s and %s" rev1-name rev2-name)
+      nil)))
+
+(defun vc-diff-internal (backend async files rev1 rev2 &optional verbose)
+  "Report diffs between two revisions of a fileset.
+Diff output goes to the *vc-diff* buffer.  The function
+returns t if the buffer had changes, nil otherwise."
+  (let* ((filenames (vc-delistify files))
+        (rev1-name (or rev1 "working revision"))
+        (rev2-name (or rev2 "workfile"))
+        ;; Set coding system based on the first file.  It's a kluge,
+        ;; but the only way to set it for each file included would
+        ;; be to call the back end separately for each file.
+        (coding-system-for-read 
+         (if files (vc-coding-system-for-diff (car files)) 'undecided)))
+    (vc-setup-buffer "*vc-diff*")
+    (message "Finding changes in %s..." filenames)
+    ;; Many backends don't handle well the case of a file that has been 
+    ;; added but not yet committed to the repo (notably CVS and Subversion).  
+    ;; Do that work here so the backends don't have to futz with it.
+    (let ((filtered '()))
+      (dolist (file files)
+       (cond ((and (not (file-directory-p file)) (string= (vc-working-revision file) "0"))
+              (progn
+                ;; This file is added but not yet committed; 
+                ;; there is no master file to diff against.
+                (if (or rev1 rev2)
+                    (error "No revisions of %s exist" file)
+                  ;; We regard this as "changed".
+                  ;; Diff it against /dev/null.
+                  (apply 'vc-do-command "*vc-diff*"
+                         1 "diff" file
+                         (append (vc-switches nil 'diff) '("/dev/null"))))))
+             (t
+              (add-to-list 'filtered file t))))
+      (let ((vc-disable-async-diff (not async)))
+       (vc-call-backend backend 'diff filtered rev1 rev2 "*vc-diff*")))
+    (set-buffer "*vc-diff*")
+    ;; This odd-looking code is because in the non-async case we 
+    ;; actually want to pass the return value from vc-diff-sentinel
+    ;; back to the caller.
+    (if async
+       (vc-exec-after `(vc-diff-sentinel ,verbose ,rev1-name ,rev2-name))
+     (vc-diff-sentinel verbose rev1-name rev2-name))))
+
+;;;###autoload
+(defun vc-history-diff (backend files rev1 rev2)
+  "Report diffs between revisions of the fileset in the repository history."
+  (interactive
+   (let* ((files (vc-deduce-fileset t))
+         (first (car files))
+         (backend (vc-backend first))
+         (completion-table
+          (vc-call-backend backend 'revision-completion-table first))
+         (rev1-default nil)
+         (rev2-default nil))
+     (cond
+      ;; someday we may be able to do revision completion on non-singleton
+      ;; filesets, but not yet.
+      ((/= (length files) 1)
+       nil)
+      ;; if it's a directory, don't supply any revision default
+      ((file-directory-p first)
+       nil)
+      ;; if the file is not up-to-date, use working revision as older revision
+      ((not (vc-up-to-date-p first))
+       (setq rev1-default (vc-working-revision first)))
+      ;; if the file is not locked, use last and previous revisions as defaults
+      (t
+       (setq rev1-default (vc-call previous-revision first
+                                  (vc-working-revision first)))
+       (if (string= rev1-default "") (setq rev1-default nil))
+       (setq rev2-default (vc-working-revision first))))
+     ;; construct argument list
+     (let* ((rev1-prompt (if rev1-default
+                            (concat "Older revision (default "
+                                    rev1-default "): ")
+                          "Older revision: "))
+           (rev2-prompt (concat "Newer revision (default "
+                                (or rev2-default "current source") "): "))
+           (rev1 (if completion-table
+                     (completing-read rev1-prompt completion-table
+                                      nil nil nil nil rev1-default)
+                   (read-string rev1-prompt nil nil rev1-default)))
+           (rev2 (if completion-table
+                     (completing-read rev2-prompt completion-table
+                                      nil nil nil nil rev2-default)
+                   (read-string rev2-prompt nil nil rev2-default))))
+       (if (string= rev1 "") (setq rev1 nil))
+       (if (string= rev2 "") (setq rev2 nil))
+       (list backend files rev1 rev2))))
+  (if (and (not rev1) rev2)
+      (error "Not a valid revision range."))
+  (vc-diff-internal backend t files rev1 rev2 (interactive-p)))
+
+(defun vc-contains-version-controlled-file (dir)
+  "Return t if DIR contains a version-controlled file, nil otherwise."
+  (catch 'found
+    (mapc (lambda (f) (and (not (file-directory-p f)) (vc-backend f) (throw 'found 't))) (directory-files dir))
+    nil))
+
+;;;###autoload
+(defun vc-diff (historic)
+  "Display diffs between file revisions.
+Normally this compares the currently selected fileset with their
+working revisions. With a prefix argument HISTORIC, it reads two revision
+designators specifying which revisions to compare.
+
+If no current fileset is available (that is, we are not in
+VC-Dired mode and the visited file of the current buffer is not
+under version control) behave specially; if there are
+version-controlled files in the current directory, treat all
+version-controlled files recursively beneath the current
+directory as the selected fileset.
+"
+
+  (interactive "P")
+  (cond 
+   ;;((not (vc-contains-version-controlled-file default-directory))
+   ;;(error "No version-controlled files directly beneath default directory"))
+   (historic
+    (call-interactively 'vc-history-diff))
+   (t
+    (let* ((files (vc-deduce-fileset t))
+          (first (car files))
+          (backend 
+           (cond ((file-directory-p first)
+                  (vc-responsible-backend first))
+                 (t
+                  (vc-backend first)))))
+      (vc-diff-internal backend t files nil nil (interactive-p))))))
+
 ;;;###autoload
-(defun vc-version-other-window (rev)
-  "Visit version REV of the current file in another window.
-If the current file is named `F', the version is named `F.~REV~'.
+(defun vc-revision-other-window (rev)
+  "Visit revision REV of the current file in another window.
+If the current file is named `F', the revision is named `F.~REV~'.
 If `F.~REV~' already exists, use it instead of checking it out again."
   (interactive
    (save-current-buffer
      (vc-ensure-vc-buffer)
      (let ((completion-table
             (vc-call revision-completion-table buffer-file-name))
-           (prompt "Version to visit (default is workfile version): "))
+           (prompt "Revision to visit (default is working revision): "))
        (list
         (if completion-table
             (completing-read prompt completion-table)
           (read-string prompt))))))
   (vc-ensure-vc-buffer)
   (let* ((file buffer-file-name)
-        (version (if (string-equal rev "")
-                     (vc-workfile-version file)
+        (revision (if (string-equal rev "")
+                     (vc-working-revision file)
                    rev)))
-    (switch-to-buffer-other-window (vc-find-version file version))))
+    (switch-to-buffer-other-window (vc-find-revision file revision))))
 
-(defun vc-find-version (file version)
-  "Read VERSION of FILE into a buffer and return the buffer."
-  (let ((automatic-backup (vc-version-backup-file-name file version))
+(defun vc-find-revision (file revision)
+  "Read REVISION of FILE into a buffer and return the buffer."
+  (let ((automatic-backup (vc-version-backup-file-name file revision))
        (filebuf (or (get-file-buffer file) (current-buffer)))
-        (filename (vc-version-backup-file-name file version 'manual)))
+        (filename (vc-version-backup-file-name file revision 'manual)))
     (unless (file-exists-p filename)
       (if (file-exists-p automatic-backup)
           (rename-file automatic-backup filename nil)
@@ -2004,7 +2062,7 @@ If `F.~REV~' already exists, use it instead of checking it out again."
                      ;; Change buffer to get local value of
                      ;; vc-checkout-switches.
                      (with-current-buffer filebuf
-                       (vc-call find-version file version outbuf))))
+                       (vc-call find-revision file revision outbuf))))
                  (setq failed nil))
              (if (and failed (file-exists-p filename))
                  (delete-file filename))))
@@ -2012,18 +2070,6 @@ If `F.~REV~' already exists, use it instead of checking it out again."
        (message "Checking out %s...done" filename)))
     (find-file-noselect filename)))
 
-(defun vc-default-find-version (backend file rev buffer)
-  "Provide the new `find-version' op based on the old `checkout' op.
-This is only for compatibility with old backends.  They should be updated
-to provide the `find-version' operation instead."
-  (let ((tmpfile (make-temp-file (expand-file-name file))))
-    (unwind-protect
-       (progn
-         (vc-call-backend backend 'checkout file nil rev tmpfile)
-         (with-current-buffer buffer
-           (insert-file-contents-literally tmpfile)))
-      (delete-file tmpfile))))
-
 ;; Header-insertion code
 
 ;;;###autoload
@@ -2073,10 +2119,10 @@ The headers are reset to their non-expanded form."
 
 ;;;###autoload
 (defun vc-merge ()
-  "Merge changes between two versions into the current buffer's file.
-This asks for two versions to merge from in the minibuffer.  If the
-first version is a branch number, then merge all changes from that
-branch.  If the first version is empty, merge news, i.e. recent changes
+  "Merge changes between two revisions into the current buffer's file.
+This asks for two revisions to merge from in the minibuffer.  If the
+first revision is a branch number, then merge all changes from that
+branch.  If the first revision is empty, merge news, i.e. recent changes
 from the current branch.
 
 See Info node `Merging'."
@@ -2086,34 +2132,34 @@ See Info node `Merging'."
   (let* ((file buffer-file-name)
         (backend (vc-backend file))
         (state (vc-state file))
-        first-version second-version status)
+        first-revision second-revision status)
     (cond
-     ((stringp state)
+     ((stringp state)  ;; Locking VCses only
       (error "File is locked by %s" state))
      ((not (vc-editable-p file))
       (if (y-or-n-p
           "File must be checked out for merging.  Check out now? ")
          (vc-checkout file t)
        (error "Merge aborted"))))
-    (setq first-version
-         (read-string (concat "Branch or version to merge from "
+    (setq first-revision
+         (read-string (concat "Branch or revision to merge from "
                               "(default news on current branch): ")))
-    (if (string= first-version "")
+    (if (string= first-revision "")
        (if (not (vc-find-backend-function backend 'merge-news))
            (error "Sorry, merging news is not implemented for %s" backend)
          (setq status (vc-call merge-news file)))
       (if (not (vc-find-backend-function backend 'merge))
          (error "Sorry, merging is not implemented for %s" backend)
-       (if (not (vc-branch-p first-version))
-           (setq second-version
-                 (read-string "Second version: "
-                              (concat (vc-branch-part first-version) ".")))
-         ;; We want to merge an entire branch.  Set versions
+       (if (not (vc-branch-p first-revision))
+           (setq second-revision
+                 (read-string "Second revision: "
+                              (concat (vc-branch-part first-revision) ".")))
+         ;; We want to merge an entire branch.  Set revisions
          ;; accordingly, so that vc-BACKEND-merge understands us.
-         (setq second-version first-version)
-         ;; first-version must be the starting point of the branch
-         (setq first-version (vc-branch-part first-version)))
-       (setq status (vc-call merge file first-version second-version))))
+         (setq second-revision first-revision)
+         ;; first-revision must be the starting point of the branch
+         (setq first-revision (vc-branch-part first-revision)))
+       (setq status (vc-call merge file first-revision second-revision))))
     (vc-maybe-resolve-conflicts file status "WORKFILE" "MERGE SOURCE")))
 
 (defun vc-maybe-resolve-conflicts (file status &optional name-A name-B)
@@ -2140,7 +2186,7 @@ See Info node `Merging'."
     (define-key vmap "t" 'vc-dired-toggle-terse-mode)
     map))
 
-(define-derived-mode vc-dired-mode dired-mode "Dired under VC"
+(define-derived-mode vc-dired-mode dired-mode "Dired under "
   "The major mode used in VC directory buffers.
 
 It works like Dired, but lists only files under version control, with
@@ -2200,6 +2246,13 @@ There is a special command, `*l', to mark all files currently locked."
        (set (make-local-variable 'dired-actual-switches)
             vc-dired-switches))
   (set (make-local-variable 'vc-dired-terse-mode) vc-dired-terse-display)
+  (let ((backend-name (symbol-name (vc-responsible-backend
+                                   default-directory))))
+    (setq mode-name (concat mode-name backend-name))
+    ;; Add menu after `vc-dired-mode-map' has `dired-mode-map' as the parent.
+    (let ((vc-dire-menu-map (copy-keymap vc-menu-map)))
+      (define-key-after (lookup-key vc-dired-mode-map [menu-bar]) [vc] 
+       (cons backend-name vc-dire-menu-map) 'subdir)))
   (setq vc-dired-mode t))
 
 (defun vc-dired-toggle-terse-mode ()
@@ -2223,15 +2276,6 @@ There is a special command, `*l', to mark all files currently locked."
 
 (define-key vc-dired-mode-map "*l" 'vc-dired-mark-locked)
 
-(defun vc-default-dired-state-info (backend file)
-  (let ((state (vc-state file)))
-    (cond
-     ((stringp state) (concat "(" state ")"))
-     ((eq state 'edited) (concat "(" (vc-user-login-name file) ")"))
-     ((eq state 'needs-merge) "(merge)")
-     ((eq state 'needs-patch) "(patch)")
-     ((eq state 'unlocked-changes) "(stale)"))))
-
 (defun vc-dired-reformat-line (vc-info)
   "Reformat a directory-listing line.
 Replace various columns with version control information, VC-INFO.
@@ -2249,7 +2293,7 @@ This code, like dired, assumes UNIX -l format."
   "Reformat the listing according to version control.
 Called by dired after any portion of a vc-dired buffer has been read in."
   (message "Getting version information... ")
-  (let (subdir filename (buffer-read-only nil))
+  (let (subdir filename (inhibit-read-only t))
     (goto-char (point-min))
     (while (not (eobp))
       (cond
@@ -2258,7 +2302,9 @@ Called by dired after any portion of a vc-dired buffer has been read in."
        ;; if the backend supports it, get the state
        ;; of all files in this directory at once
        (let ((backend (vc-responsible-backend subdir)))
-         (if (vc-find-backend-function backend 'dir-state)
+         ;; check `backend' can really handle `subdir'.
+         (if (and (vc-call-backend backend 'responsible-p subdir)
+                  (vc-find-backend-function backend 'dir-state))
              (vc-call-backend backend 'dir-state subdir)))
         (forward-line 1)
         ;; erase (but don't remove) the "total" line
@@ -2330,7 +2376,7 @@ Called by dired after any portion of a vc-dired buffer has been read in."
   (let (result)
     ;; Check whether dired is loaded.
     (when (fboundp 'dired-buffers-for-dir)
-      (mapcar (lambda (buffer)
+      (mapc (lambda (buffer)
                (with-current-buffer buffer
                  (if vc-dired-mode
                      (setq result (append result (list buffer))))))
@@ -2395,10 +2441,10 @@ Otherwise, return nil."
 ;;;###autoload
 (defun vc-create-snapshot (dir name branchp)
   "Descending recursively from DIR, make a snapshot called NAME.
-For each registered file, the version level of its latest version
-becomes part of the named configuration.  If the prefix argument
-BRANCHP is given, the snapshot is made as a new branch and the files
-are checked out in that new branch."
+For each registered file, the working revision becomes part of
+the named configuration.  If the prefix argument BRANCHP is
+given, the snapshot is made as a new branch and the files are
+checked out in that new branch."
   (interactive
    (list (read-file-name "Directory: " default-directory default-directory t)
          (read-string "New snapshot name: ")
@@ -2409,27 +2455,16 @@ are checked out in that new branch."
                   'create-snapshot dir name branchp)
   (message "Making %s... done" (if branchp "branch" "snapshot")))
 
-(defun vc-default-create-snapshot (backend dir name branchp)
-  (when branchp
-    (error "VC backend %s does not support module branches" backend))
-  (let ((result (vc-snapshot-precondition dir)))
-    (if (stringp result)
-       (error "File %s is not up-to-date" result)
-      (vc-file-tree-walk
-       dir
-       (lambda (f)
-        (vc-call assign-name f name))))))
-
 ;;;###autoload
 (defun vc-retrieve-snapshot (dir name)
   "Descending recursively from DIR, retrieve the snapshot called NAME.
-If NAME is empty, it refers to the latest versions.
+If NAME is empty, it refers to the latest revisions.
 If locking is used for the files in DIR, then there must not be any
 locked files at or below DIR (but if NAME is empty, locked files are
 allowed and simply skipped)."
   (interactive
    (list (read-file-name "Directory: " default-directory default-directory t)
-         (read-string "Snapshot name to retrieve (default latest versions): ")))
+         (read-string "Snapshot name to retrieve (default latest revisions): ")))
   (let ((update (yes-or-no-p "Update any affected buffers? "))
        (msg (if (or (not name) (string= name ""))
                 (format "Updating %s... " (abbreviate-file-name dir))
@@ -2440,60 +2475,24 @@ allowed and simply skipped)."
                     'retrieve-snapshot dir name update)
     (message "%s" (concat msg "done"))))
 
-(defun vc-default-retrieve-snapshot (backend dir name update)
-  (if (string= name "")
-      (progn
-        (vc-file-tree-walk
-         dir
-         (lambda (f) (and
-                (vc-up-to-date-p f)
-                (vc-error-occurred
-                 (vc-call checkout f nil "")
-                 (if update (vc-resynch-buffer f t t)))))))
-    (let ((result (vc-snapshot-precondition dir)))
-      (if (stringp result)
-          (error "File %s is locked" result)
-        (setq update (and (eq result 'visited) update))
-        (vc-file-tree-walk
-         dir
-         (lambda (f) (vc-error-occurred
-                (vc-call checkout f nil name)
-                (if update (vc-resynch-buffer f t t)))))))))
-
 ;; Miscellaneous other entry points
 
 ;;;###autoload
-(defun vc-print-log (&optional focus-rev)
-  "List the change log of the current buffer in a window.
-If FOCUS-REV is non-nil, leave the point at that revision."
+(defun vc-print-log (&optional working-revision)
+  "List the change log of the current fileset in a window.
+If WORKING-REVISION is non-nil, leave the point at that revision."
   (interactive)
-  (vc-ensure-vc-buffer)
-  (let ((file buffer-file-name))
-    (or focus-rev (setq focus-rev (vc-workfile-version file)))
+  (let* ((files (vc-deduce-fileset))
+        (backend (vc-backend (car files)))
+        (working-revision (or working-revision (vc-working-revision (car files)))))
     ;; Don't switch to the output buffer before running the command,
     ;; so that any buffer-local settings in the vc-controlled
     ;; buffer can be accessed by the command.
-    (condition-case err
-        (progn
-          (vc-call print-log file "*vc-change-log*")
-          (set-buffer "*vc-change-log*"))
-      (wrong-number-of-arguments
-       ;; If this error came from the above call to print-log, try again
-       ;; without the optional buffer argument (for backward compatibility).
-       ;; Otherwise, resignal.
-       (if (or (not (eq (cadr err)
-                        (indirect-function
-                         (vc-find-backend-function (vc-backend file)
-                                                   'print-log))))
-               (not (eq (caddr err) 2)))
-           (signal (car err) (cdr err))
-         ;; for backward compatibility
-         (vc-call print-log file)
-         (set-buffer "*vc*"))))
-    (pop-to-buffer (current-buffer))
+    (vc-call-backend backend 'print-log files "*vc-change-log*")
+    (pop-to-buffer "*vc-change-log*")
     (vc-exec-after
      `(let ((inhibit-read-only t))
-       (vc-call-backend ',(vc-backend file) 'log-view-mode)
+       (vc-call-backend ',backend 'log-view-mode)
        (goto-char (point-max)) (forward-line -1)
        (while (looking-at "=*\n")
          (delete-char (- (match-end 0) (match-beginning 0)))
@@ -2501,122 +2500,130 @@ If FOCUS-REV is non-nil, leave the point at that revision."
        (goto-char (point-min))
        (if (looking-at "[\b\t\n\v\f\r ]+")
            (delete-char (- (match-end 0) (match-beginning 0))))
-       ;; (shrink-window-if-larger-than-buffer)
-       ;; move point to the log entry for the current version
-       (vc-call-backend ',(vc-backend file)
-                        'show-log-entry
-                        ',focus-rev)
+       (shrink-window-if-larger-than-buffer)
+       ;; move point to the log entry for the working revision
+       (vc-call-backend ',backend 'show-log-entry ',working-revision)
+        (setq vc-sentinel-movepoint (point))
         (set-buffer-modified-p nil)))))
 
-(defun vc-default-log-view-mode (backend) (log-view-mode))
-(defun vc-default-show-log-entry (backend rev)
-  (with-no-warnings
-   (log-view-goto-rev rev)))
-
-(defun vc-default-comment-history (backend file)
-  "Return a string with all log entries stored in BACKEND for FILE."
-  (if (vc-find-backend-function backend 'print-log)
-      (with-current-buffer "*vc*"
-       (vc-call print-log file)
-       (vc-call wash-log file)
-       (buffer-string))))
-
-(defun vc-default-wash-log (backend file)
-  "Remove all non-comment information from log output.
-This default implementation works for RCS logs; backends should override
-it if their logs are not in RCS format."
-  (let ((separator (concat "^-+\nrevision [0-9.]+\ndate: .*\n"
-                          "\\(branches: .*;\n\\)?"
-                          "\\(\\*\\*\\* empty log message \\*\\*\\*\n\\)?")))
-    (goto-char (point-max)) (forward-line -1)
-    (while (looking-at "=*\n")
-      (delete-char (- (match-end 0) (match-beginning 0)))
-      (forward-line -1))
-    (goto-char (point-min))
-    (if (looking-at "[\b\t\n\v\f\r ]+")
-       (delete-char (- (match-end 0) (match-beginning 0))))
-    (goto-char (point-min))
-    (re-search-forward separator nil t)
-    (delete-region (point-min) (point))
-    (while (re-search-forward separator nil t)
-      (delete-region (match-beginning 0) (match-end 0)))))
-
 ;;;###autoload
-(defun vc-revert-buffer ()
-  "Revert the current buffer's file to the version it was based on.
+(defun vc-revert ()
+  "Revert working copies of the selected fileset to their repository contents.
 This asks for confirmation if the buffer contents are not identical
-to that version.  This function does not automatically pick up newer
-changes found in the master file; use \\[universal-argument] \\[vc-next-action] to do so."
+to the working revision (except for keyword expansion)."
   (interactive)
-  (vc-ensure-vc-buffer)
-  ;; Make sure buffer is saved.  If the user says `no', abort since
-  ;; we cannot show the changes and ask for confirmation to discard them.
-  (vc-buffer-sync nil)
-  (let ((file buffer-file-name)
-       ;; This operation should always ask for confirmation.
-       (vc-suppress-confirm nil)
-       (obuf (current-buffer))
-       status)
-    (if (vc-up-to-date-p file)
-        (unless (yes-or-no-p "File seems up-to-date.  Revert anyway? ")
-          (error "Revert canceled")))
-    (unless (vc-workfile-unchanged-p file)
-      (message "Finding changes...")
-      ;; vc-diff selects the new window, which is not what we want:
-      ;; if the new window is on another frame, that'd require the user
-      ;; moving her mouse to answer the yes-or-no-p question.
-      (let* ((vc-disable-async-diff (not vc-allow-async-revert))
-             (win (save-selected-window
-                    (setq status (vc-diff nil t)) (selected-window))))
-       (vc-exec-after `(message nil))
-       (when status
-         (unwind-protect
-             (unless (yes-or-no-p "Discard changes? ")
-               (error "Revert canceled"))
-           (select-window win)
-           (if (one-window-p t)
-               (if (window-dedicated-p (selected-window))
-                   (make-frame-invisible))
-             (delete-window))))))
-    (set-buffer obuf)
-    ;; Do the reverting
-    (message "Reverting %s..." file)
-    (vc-revert-file file)
-    (message "Reverting %s...done" file)))
+  (let* ((files (vc-deduce-fileset))
+        (backend (vc-backend (car files))))
+    ;; If any of the files is visited by the current buffer, make
+    ;; sure buffer is saved.  If the user says `no', abort since
+    ;; we cannot show the changes and ask for confirmation to
+    ;; discard them.
+    (if (or (not files) (memq (buffer-file-name) files))
+       (vc-buffer-sync nil))
+    (dolist (file files)
+      (let (buf (get-file-buffer file))
+       (if (and buf (buffer-modified-p buf))
+         (error "Please kill or save all modified buffers before reverting.")))
+      (if (vc-up-to-date-p file)
+         (unless (yes-or-no-p (format "%s seems up-to-date.  Revert anyway? " file))
+           (error "Revert canceled"))))
+    (if (vc-diff-internal backend vc-allow-async-revert files nil nil)
+       (progn
+         (unless (yes-or-no-p (format "Discard changes in %s? " (vc-delistify files)))
+           (error "Revert canceled"))
+         (delete-windows-on "*vc-diff*")
+         (kill-buffer "*vc-diff*")))
+    (dolist (file files)
+      (progn
+       (message "Reverting %s..." (vc-delistify files))
+       (vc-revert-file file)
+       (message "Reverting %s...done" (vc-delistify files))))))
+
+;;;###autoload
+(defun vc-rollback ()
+  "Roll back (remove) the most recent changeset committed to the repository.
+This may be either a file-level or a repository-level operation,
+depending on the underlying version-control system."
+  (interactive)
+  (let* ((files (vc-deduce-fileset))
+        (backend (vc-backend (car files)))
+        (granularity (vc-call-backend backend 'revision-granularity)))
+    (unless (vc-find-backend-function backend 'rollback)
+      (error "Rollback is not supported in %s" backend))
+    (if (and (not (eq granularity 'repository)) (/= (length files) 1))
+       (error "Rollback requires a singleton fileset or repository versioning"))
+    (if (not (vc-call latest-on-branch-p (car files)))
+       (error "Rollback is only possible at the tip revision."))
+    ;; If any of the files is visited by the current buffer, make
+    ;; sure buffer is saved.  If the user says `no', abort since
+    ;; we cannot show the changes and ask for confirmation to
+    ;; discard them.
+    (if (or (not files) (memq (buffer-file-name) files))
+       (vc-buffer-sync nil))
+    (dolist (file files)
+      (if (buffer-modified-p (get-file-buffer file))
+         (error "Please kill or save all modified buffers before rollback."))
+      (if (not (vc-up-to-date-p file))
+         (error "Please revert all modified workfiles before rollback.")))
+    ;; Accumulate changes associated with the fileset
+    (vc-setup-buffer "*vc-diff*")
+    (not-modified)
+    (message "Finding changes...")
+    (let* ((tip (vc-working-revision (car files)))
+          (previous (vc-call previous-revision (car files) tip)))
+      (vc-diff-internal backend nil files previous tip))
+    ;; Display changes 
+    (unless (yes-or-no-p "Discard these revisions? ")
+      (error "Rollback canceled"))
+    (delete-windows-on "*vc-diff*")
+    (kill-buffer"*vc-diff*")
+    ;; Do the actual reversions
+    (message "Rolling back %s..." (vc-delistify files))
+    (with-vc-properties
+     files
+     (vc-call-backend backend 'rollback files)
+     `((vc-state . ,'up-to-date)
+       (vc-checkout-time . , (nth 5 (file-attributes file)))
+       (vc-working-revision . nil)))
+    (mapc (lambda (f) (vc-resynch-buffer f t t)) files)
+    (message "Rolling back %s...done" (vc-delistify files))))
+
+;;;###autoload
+(define-obsolete-function-alias 'vc-revert-buffer 'vc-revert "23.1")
 
 ;;;###autoload
 (defun vc-update ()
-  "Update the current buffer's file to the latest version on its branch.
-If the file contains no changes, and is not locked, then this simply replaces
-the working file with the latest version on its branch.  If the file contains
-changes, and the backend supports merging news, then any recent changes from
-the current branch are merged into the working file."
+  "Update the current fileset's files to their tip revisions.
+For each one that contains no changes, and is not locked, then this simply 
+replaces the work file with the latest revision on its branch.  If the file 
+contains changes, and the backend supports merging news, then any recent 
+changes from the current branch are merged into the working file."
   (interactive)
-  (vc-ensure-vc-buffer)
-  (vc-buffer-sync nil)
-  (let ((file buffer-file-name))
+  (dolist (file (vc-deduce-fileset))
+    (if (buffer-modified-p (get-file-buffer file))
+       (error "Please kill or save all modified buffers before updating."))
     (if (vc-up-to-date-p file)
-        (vc-checkout file nil "")
+       (vc-checkout file nil "")
       (if (eq (vc-checkout-model file) 'locking)
-          (if (eq (vc-state file) 'edited)
-              (error
-               (substitute-command-keys
-           "File is locked--type \\[vc-revert-buffer] to discard changes"))
-            (error
-             (substitute-command-keys
-           "Unexpected file state (%s)--type \\[vc-next-action] to correct")
-                   (vc-state file)))
-        (if (not (vc-find-backend-function (vc-backend file) 'merge-news))
-            (error "Sorry, merging news is not implemented for %s"
-                   (vc-backend file))
-          (vc-call merge-news file)
-          (vc-resynch-window file t t))))))
+         (if (eq (vc-state file) 'edited)
+             (error
+              (substitute-command-keys
+               "File is locked--type \\[vc-revert] to discard changes"))
+           (error
+            (substitute-command-keys
+             "Unexpected file state (%s)--type \\[vc-next-action] to correct")
+            (vc-state file)))
+       (if (not (vc-find-backend-function (vc-backend file) 'merge-news))
+           (error "Sorry, merging news is not implemented for %s"
+                  (vc-backend file))
+         (vc-call merge-news file)
+         (vc-resynch-buffer file t t))))))
 
 (defun vc-version-backup-file (file &optional rev)
   "Return name of backup file for revision REV of FILE.
 If version backups should be used for FILE, and there exists
-such a backup for REV or the current workfile version of file,
-return its name; otherwise return nil."
+such a backup for REV or the working revision of file, return 
+its name; otherwise return nil."
   (when (vc-call make-version-backups-p file)
     (let ((backup-file (vc-version-backup-file-name file rev)))
       (if (file-exists-p backup-file)
@@ -2626,37 +2633,10 @@ return its name; otherwise return nil."
         (if (file-exists-p backup-file)
             backup-file)))))
 
-(defun vc-default-revert (backend file contents-done)
-  (unless contents-done
-    (let ((rev (vc-workfile-version file))
-          (file-buffer (or (get-file-buffer file) (current-buffer))))
-      (message "Checking out %s..." file)
-      (let ((failed t)
-            (backup-name (car (find-backup-file-name file))))
-        (when backup-name
-          (copy-file file backup-name 'ok-if-already-exists 'keep-date)
-          (unless (file-writable-p file)
-            (set-file-modes file (logior (file-modes file) 128))))
-        (unwind-protect
-            (let ((coding-system-for-read 'no-conversion)
-                  (coding-system-for-write 'no-conversion))
-              (with-temp-file file
-                (let ((outbuf (current-buffer)))
-                  ;; Change buffer to get local value of vc-checkout-switches.
-                  (with-current-buffer file-buffer
-                    (let ((default-directory (file-name-directory file)))
-                      (vc-call find-version file rev outbuf)))))
-              (setq failed nil))
-          (when backup-name
-            (if failed
-                (rename-file backup-name file 'ok-if-already-exists)
-              (and (not vc-make-backup-files) (delete-file backup-name))))))
-      (message "Checking out %s...done" file))))
-
 (defun vc-revert-file (file)
-  "Revert FILE back to the version it was based on."
+  "Revert FILE back to the repository working revision it was based on."
   (with-vc-properties
-   file
+   (list file)
    (let ((backup-file (vc-version-backup-file file)))
      (when backup-file
        (copy-file backup-file file 'ok-if-already-exists 'keep-date)
@@ -2666,53 +2646,6 @@ return its name; otherwise return nil."
      (vc-checkout-time . ,(nth 5 (file-attributes file)))))
   (vc-resynch-buffer file t t))
 
-;;;###autoload
-(defun vc-cancel-version (norevert)
-  "Get rid of most recently checked in version of this file.
-A prefix argument NOREVERT means do not revert the buffer afterwards."
-  (interactive "P")
-  (vc-ensure-vc-buffer)
-  (let* ((file buffer-file-name)
-        (backend (vc-backend file))
-         (target (vc-workfile-version file)))
-    (cond
-     ((not (vc-find-backend-function backend 'cancel-version))
-      (error "Sorry, canceling versions is not supported under %s" backend))
-     ((not (vc-call latest-on-branch-p file))
-      (error "This is not the latest version; VC cannot cancel it"))
-     ((not (vc-up-to-date-p file))
-      (error "%s" (substitute-command-keys "File is not up to date; use \\[vc-revert-buffer] to discard changes"))))
-    (if (null (yes-or-no-p (format "Remove version %s from master? " target)))
-       (error "Aborted")
-      (setq norevert (or norevert (not
-          (yes-or-no-p "Revert buffer to most recent remaining version? "))))
-
-      (message "Removing last change from %s..." file)
-      (with-vc-properties
-       file
-       (vc-call cancel-version file norevert)
-       `((vc-state . ,(if norevert 'edited 'up-to-date))
-        (vc-checkout-time . ,(if norevert
-                               0
-                             (nth 5 (file-attributes file))))
-        (vc-workfile-version . nil)))
-      (message "Removing last change from %s...done" file)
-
-      (cond
-       (norevert ;; clear version headers and mark the buffer modified
-       (set-visited-file-name file)
-       (when (not vc-make-backup-files)
-         ;; inhibit backup for this buffer
-         (make-local-variable 'backup-inhibited)
-         (setq backup-inhibited t))
-       (setq buffer-read-only nil)
-       (vc-clear-headers)
-       (vc-mode-line file)
-       (vc-dired-resynch-file file))
-       (t ;; revert buffer to file on disk
-       (vc-resynch-buffer file t t)))
-      (message "Version %s has been removed from the master" target))))
-
 ;;;###autoload
 (defun vc-switch-backend (file backend)
   "Make BACKEND the current version control system for FILE.
@@ -2727,32 +2660,25 @@ To get a prompt, use a prefix argument."
         (error "There is no version-controlled file in this buffer"))
     (let ((backend (vc-backend buffer-file-name))
          (backends nil))
-      (unwind-protect
-         (progn
-           (unless backend
-             (error "File %s is not under version control" buffer-file-name))
-           ;; Find the registered backends.
-           (dolist (backend vc-handled-backends)
-             (when (vc-call-backend backend 'registered buffer-file-name)
-               (push backend backends)))
-           ;; Find the next backend.
-           (let ((def (car (delq backend
-                                 (append (memq backend backends) backends))))
-                 (others (delete backend backends)))
-             (cond
-              ((null others) (error "No other backend to switch to"))
-              (current-prefix-arg
-               (intern
-                (upcase
-                 (completing-read
-                  (format "Switch to backend [%s]: " def)
-                  (mapcar (lambda (b) (list (downcase (symbol-name b)))) backends)
-                  nil t nil nil (downcase (symbol-name def))))))
-              (t def))))
-       ;; Calling the `registered' method can mess up the file
-       ;; properties, so we want to revert them to what they were.
-       (if (and backend (delete backend backends))
-           (vc-call-backend backend 'registered buffer-file-name))))))
+      (unless backend
+        (error "File %s is not under version control" buffer-file-name))
+      ;; Find the registered backends.
+      (dolist (backend vc-handled-backends)
+       (when (vc-call-backend backend 'registered buffer-file-name)
+         (push backend backends)))
+      ;; Find the next backend.
+      (let ((def (car (delq backend (append (memq backend backends) backends))))
+           (others (delete backend backends)))
+       (cond
+        ((null others) (error "No other backend to switch to"))
+        (current-prefix-arg
+         (intern
+          (upcase
+           (completing-read
+            (format "Switch to backend [%s]: " def)
+            (mapcar (lambda (b) (list (downcase (symbol-name b)))) backends)
+            nil t nil nil (downcase (symbol-name def))))))
+       (t def))))))
   (unless (eq backend (vc-backend file))
     (vc-file-clearprops file)
     (vc-file-setprop file 'vc-backend backend)
@@ -2767,7 +2693,7 @@ To get a prompt, use a prefix argument."
   "Transfer FILE to another version control system NEW-BACKEND.
 If NEW-BACKEND has a higher precedence than FILE's current backend
 \(i.e.  it comes earlier in `vc-handled-backends'), then register FILE in
-NEW-BACKEND, using the version number from the current backend as the
+NEW-BACKEND, using the revision number from the current backend as the
 base level.  If NEW-BACKEND has a lower precedence than the current
 backend, then commit all changes that were made under the current
 backend to NEW-BACKEND, and unregister FILE from the current backend.
@@ -2787,7 +2713,7 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
        (set-file-modes file (logior (file-modes file) 128))
       ;; `registered' might have switched under us.
       (vc-switch-backend file old-backend)
-      (let* ((rev (vc-workfile-version file))
+      (let* ((rev (vc-working-revision file))
             (modified-file (and edited (make-temp-file file)))
             (unmodified-file (and modified-file (vc-version-backup-file file))))
        ;; Go back to the base unmodified file.
@@ -2801,7 +2727,7 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
                (if unmodified-file
                    (copy-file unmodified-file file
                               'ok-if-already-exists 'keep-date)
-                 (if (y-or-n-p "Get base version from master? ")
+                 (if (y-or-n-p "Get base revision from master? ")
                      (vc-revert-file file))))
              (vc-call-backend new-backend 'receive-file file rev))
          (when modified-file
@@ -2820,14 +2746,6 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
       (vc-mode-line file)
       (vc-checkin file nil comment (stringp comment)))))
 
-(defun vc-default-unregister (backend file)
-  "Default implementation of `vc-unregister', signals an error."
-  (error "Unregistering files is not supported for %s" backend))
-
-(defun vc-default-receive-file (backend file rev)
-  "Let BACKEND receive FILE from another version control system."
-  (vc-call-backend backend 'register file rev ""))
-
 (defun vc-rename-master (oldmaster newfile templates)
   "Rename OLDMASTER to be the master file for NEWFILE based on TEMPLATES."
   (let* ((dir (file-name-directory (expand-file-name oldmaster)))
@@ -2878,14 +2796,6 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
     ;; If the backend hasn't deleted the file itself, let's do it for him.
     (if (file-exists-p file) (delete-file file))))
 
-(defun vc-default-rename-file (backend old new)
-  (condition-case nil
-      (add-name-to-file old new)
-    (error (rename-file old new)))
-  (vc-delete-file old)
-  (with-current-buffer (find-file-noselect new)
-    (vc-register)))
-
 ;;;###autoload
 (defun vc-rename-file (old new)
   "Rename file OLD to NEW, and rename its master file likewise."
@@ -2907,7 +2817,7 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
     (if (file-exists-p old) (rename-file old new))
     ;; ?? Renaming a file might change its contents due to keyword expansion.
     ;; We should really check out a new copy if the old copy was precisely equal
-    ;; to some checked in version.  However, testing for this is tricky....
+    ;; to some checked-in revision.  However, testing for this is tricky....
     (if oldbuf
        (with-current-buffer oldbuf
          (let ((buffer-read-only buffer-read-only))
@@ -2954,7 +2864,87 @@ log entries should be gathered."
   (vc-call-backend (vc-responsible-backend default-directory)
                    'update-changelog args))
 
-(defun vc-default-update-changelog (backend files)
+;;; The default back end.  Assumes RCS-like revision numbering.
+
+(defun vc-default-revision-granularity ()
+  (error "Your backend will not work with this version of VC mode."))
+
+;; functions that operate on RCS revision numbers.  This code should
+;; also be moved into the backends.  It stays for now, however, since
+;; it is used in code below.
+;;;###autoload
+(defun vc-trunk-p (rev)
+  "Return t if REV is a revision on the trunk."
+  (not (eq nil (string-match "\\`[0-9]+\\.[0-9]+\\'" rev))))
+
+(defun vc-branch-p (rev)
+  "Return t if REV is a branch revision."
+  (not (eq nil (string-match "\\`[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*\\'" rev))))
+
+;;;###autoload
+(defun vc-branch-part (rev)
+  "Return the branch part of a revision number REV."
+  (let ((index (string-match "\\.[0-9]+\\'" rev)))
+    (if index
+        (substring rev 0 index))))
+
+(defun vc-minor-part (rev)
+  "Return the minor revision number of a revision number REV."
+  (string-match "[0-9]+\\'" rev)
+  (substring rev (match-beginning 0) (match-end 0)))
+
+(defun vc-default-previous-revision (backend file rev)
+  "Return the revision number immediately preceding REV for FILE,
+or nil if there is no previous revision.  This default
+implementation works for MAJOR.MINOR-style revision numbers as
+used by RCS and CVS."
+  (let ((branch (vc-branch-part rev))
+        (minor-num (string-to-number (vc-minor-part rev))))
+    (when branch
+      (if (> minor-num 1)
+          ;; revision does probably not start a branch or release
+          (concat branch "." (number-to-string (1- minor-num)))
+        (if (vc-trunk-p rev)
+            ;; we are at the beginning of the trunk --
+            ;; don't know anything to return here
+            nil
+          ;; we are at the beginning of a branch --
+          ;; return revision of starting point
+          (vc-branch-part branch))))))
+
+(defun vc-default-next-revision (backend file rev)
+  "Return the revision number immediately following REV for FILE,
+or nil if there is no next revision.  This default implementation
+works for MAJOR.MINOR-style revision numbers as used by RCS
+and CVS."
+  (when (not (string= rev (vc-working-revision file)))
+    (let ((branch (vc-branch-part rev))
+         (minor-num (string-to-number (vc-minor-part rev))))
+      (concat branch "." (number-to-string (1+ minor-num))))))
+
+(defun vc-default-responsible-p (backend file)
+  "Indicate whether BACKEND is reponsible for FILE.
+The default is to return nil always."
+  nil)
+
+(defun vc-default-could-register (backend file)
+  "Return non-nil if BACKEND could be used to register FILE.
+The default implementation returns t for all files."
+  t)
+
+(defun vc-default-latest-on-branch-p (backend file)
+  "Return non-nil if FILE is the latest on its branch.
+This default implementation always returns non-nil, which means that
+editing non-current revisions is not supported by default."
+  t)
+
+(defun vc-default-init-revision (backend) vc-default-init-revision)
+
+(defalias 'vc-cvs-update-changelog 'vc-update-changelog-rcs2log)
+(defalias 'vc-rcs-update-changelog 'vc-update-changelog-rcs2log)
+;; FIXME: This should probably be moved to vc-rcs.el and replaced in
+;; vc-cvs.el by code using cvs2cl.
+(defun vc-update-changelog-rcs2log (backend files)
   "Default implementation of update-changelog.
 Uses `rcs2log' which only works for RCS and CVS."
   ;; FIXME: We (c|sh)ould add support for cvs2cl
@@ -2995,9 +2985,7 @@ Uses `rcs2log' which only works for RCS and CVS."
                                     (mapcar
                                      (lambda (f)
                                        (file-relative-name
-                                        (if (file-name-absolute-p f)
-                                            f
-                                          (concat odefault f))))
+                                       (expand-file-name f odefault)))
                                      files)))
                        "done"
                     (pop-to-buffer (get-buffer-create "*vc*"))
@@ -3007,7 +2995,135 @@ Uses `rcs2log' which only works for RCS and CVS."
               (setq default-directory (file-name-directory changelog))
               (delete-file tempfile)))))
 
-;; Annotate functionality
+(defun vc-default-find-revision (backend file rev buffer)
+  "Provide the new `find-revision' op based on the old `checkout' op.
+This is only for compatibility with old backends.  They should be updated
+to provide the `find-revision' operation instead."
+  (let ((tmpfile (make-temp-file (expand-file-name file))))
+    (unwind-protect
+       (progn
+         (vc-call-backend backend 'checkout file nil rev tmpfile)
+         (with-current-buffer buffer
+           (insert-file-contents-literally tmpfile)))
+      (delete-file tmpfile))))
+
+(defun vc-default-dired-state-info (backend file)
+  (let* ((state (vc-state file))
+       (statestring
+        (cond
+         ((stringp state) (concat "(" state ")"))
+         ((eq state 'edited) (concat "(" (vc-user-login-name file) ")"))
+         ((eq state 'needs-merge) "(merge)")
+         ((eq state 'needs-patch) "(patch)")
+         ((eq state 'unlocked-changes) "(stale)")))
+       (buffer
+        (get-file-buffer file))
+       (modflag
+        (if (and buffer (buffer-modified-p buffer)) "+" "")))
+    (concat statestring modflag)))
+
+(defun vc-default-rename-file (backend old new)
+  (condition-case nil
+      (add-name-to-file old new)
+    (error (rename-file old new)))
+  (vc-delete-file old)
+  (with-current-buffer (find-file-noselect new)
+    (vc-register)))
+
+(defalias 'vc-default-logentry-check 'ignore)
+
+(defun vc-default-check-headers (backend)
+  "Default implementation of check-headers; always returns nil."
+  nil)
+
+(defun vc-default-log-view-mode (backend) (log-view-mode))
+
+(defun vc-default-show-log-entry (backend rev)
+  (with-no-warnings
+   (log-view-goto-rev rev)))
+
+(defun vc-default-comment-history (backend file)
+  "Return a string with all log entries stored in BACKEND for FILE."
+  (if (vc-find-backend-function backend 'print-log)
+      (with-current-buffer "*vc*"
+       (vc-call print-log (list file))
+       (vc-call-backend backend 'wash-log)
+       (buffer-string))))
+
+(defun vc-default-unregister (backend file)
+  "Default implementation of `vc-unregister', signals an error."
+  (error "Unregistering files is not supported for %s" backend))
+
+(defun vc-default-receive-file (backend file rev)
+  "Let BACKEND receive FILE from another version control system."
+  (vc-call-backend backend 'register file rev ""))
+
+(defun vc-default-create-snapshot (backend dir name branchp)
+  (when branchp
+    (error "VC backend %s does not support module branches" backend))
+  (let ((result (vc-snapshot-precondition dir)))
+    (if (stringp result)
+       (error "File %s is not up-to-date" result)
+      (vc-file-tree-walk
+       dir
+       (lambda (f)
+        (vc-call assign-name f name))))))
+
+(defun vc-default-retrieve-snapshot (backend dir name update)
+  (if (string= name "")
+      (progn
+        (vc-file-tree-walk
+         dir
+         (lambda (f) (and
+                (vc-up-to-date-p f)
+                (vc-error-occurred
+                 (vc-call checkout f nil "")
+                 (if update (vc-resynch-buffer f t t)))))))
+    (let ((result (vc-snapshot-precondition dir)))
+      (if (stringp result)
+          (error "File %s is locked" result)
+        (setq update (and (eq result 'visited) update))
+        (vc-file-tree-walk
+         dir
+         (lambda (f) (vc-error-occurred
+                (vc-call checkout f nil name)
+                (if update (vc-resynch-buffer f t t)))))))))
+
+(defun vc-default-revert (backend file contents-done)
+  (unless contents-done
+    (let ((rev (vc-working-revision file))
+          (file-buffer (or (get-file-buffer file) (current-buffer))))
+      (message "Checking out %s..." file)
+      (let ((failed t)
+            (backup-name (car (find-backup-file-name file))))
+        (when backup-name
+          (copy-file file backup-name 'ok-if-already-exists 'keep-date)
+          (unless (file-writable-p file)
+            (set-file-modes file (logior (file-modes file) 128))))
+        (unwind-protect
+            (let ((coding-system-for-read 'no-conversion)
+                  (coding-system-for-write 'no-conversion))
+              (with-temp-file file
+                (let ((outbuf (current-buffer)))
+                  ;; Change buffer to get local value of vc-checkout-switches.
+                  (with-current-buffer file-buffer
+                    (let ((default-directory (file-name-directory file)))
+                      (vc-call find-revision file rev outbuf)))))
+              (setq failed nil))
+          (when backup-name
+            (if failed
+                (rename-file backup-name file 'ok-if-already-exists)
+              (and (not vc-make-backup-files) (delete-file backup-name))))))
+      (message "Checking out %s...done" file))))
+
+(defun vc-default-revision-completion-table (backend file) nil)
+
+(defun vc-check-headers ()
+  "Check if the current file has any headers in it."
+  (interactive)
+  (vc-call-backend (vc-backend buffer-file-name) 'check-headers))
+
+;;; Annotate functionality
 
 ;; Declare globally instead of additional parameter to
 ;; temp-buffer-show-function (not possible to pass more than one
@@ -3065,13 +3181,13 @@ cover the range from the oldest annotation to the newest."
     ;; Run through this file and find the oldest and newest dates annotated.
     (save-excursion
       (goto-char (point-min))
-      (while (setq date (prog1 (vc-call-backend vc-annotate-backend
-                                                'annotate-time)
-                          (forward-line 1)))
-       (if (> date newest)
-           (setq newest date))
-       (if (< date oldest)
-           (setq oldest date))))
+      (while (not (eobp))
+        (when (setq date (vc-call-backend vc-annotate-backend 'annotate-time))
+          (if (> date newest)
+              (setq newest date))
+          (if (< date oldest)
+              (setq oldest date)))
+        (forward-line 1)))
     (vc-annotate-display
      (/ (- (if full newest current) oldest)
         (vc-annotate-oldest-in-map vc-annotate-color-map))
@@ -3114,11 +3230,11 @@ cover the range from the oldest annotation to the newest."
      :style toggle :selected
      (eq vc-annotate-display-mode 'fullscale)]
     "--"
-    ["Annotate previous revision" vc-annotate-prev-version]
-    ["Annotate next revision" vc-annotate-next-version]
+    ["Annotate previous revision" vc-annotate-prev-revision]
+    ["Annotate next revision" vc-annotate-next-revision]
     ["Annotate revision at line" vc-annotate-revision-at-line]
     ["Annotate revision previous to line" vc-annotate-revision-previous-to-line]
-    ["Annotate latest revision" vc-annotate-workfile-version]
+    ["Annotate latest revision" vc-annotate-working-revision]
     ["Show log of revision at line" vc-annotate-show-log-revision-at-line]
     ["Show diff of revision at line" vc-annotate-show-diff-revision-at-line]))
 
@@ -3136,9 +3252,9 @@ use; you may override this using the second optional arg MODE."
         (vc-annotate-display-default (or vc-annotate-ratio 1.0)))
         ;; One of the auto-scaling modes
        ((eq vc-annotate-display-mode 'scale)
-        (vc-annotate-display-autoscale))
+        (vc-exec-after `(vc-annotate-display-autoscale)))
        ((eq vc-annotate-display-mode 'fullscale)
-        (vc-annotate-display-autoscale t))
+        (vc-exec-after `(vc-annotate-display-autoscale t)))
        ((numberp vc-annotate-display-mode) ; A fixed number of days lookback
         (vc-annotate-display-default
          (/ vc-annotate-display-mode
@@ -3158,8 +3274,8 @@ default, the time scale stretches back one year into the past;
 everything that is older than that is shown in blue.
 
 With a prefix argument, this command asks two questions in the
-minibuffer.  First, you may enter a version number; then the buffer
-displays and annotates that version instead of the current version
+minibuffer.  First, you may enter a revision number; then the buffer
+displays and annotates that revision instead of the working revision
 \(type RET in the minibuffer to leave that default unchanged).  Then,
 you are prompted for the time span in days which the color range
 should cover.  For example, a time span of 20 days means that changes
@@ -3176,10 +3292,10 @@ colors. `vc-annotate-background' specifies the background color."
    (save-current-buffer
      (vc-ensure-vc-buffer)
      (list buffer-file-name
-          (let ((def (vc-workfile-version buffer-file-name)))
+          (let ((def (vc-working-revision buffer-file-name)))
             (if (null current-prefix-arg) def
               (read-string
-               (format "Annotate from version (default %s): " def)
+               (format "Annotate from revision (default %s): " def)
                nil nil def)))
           (if (null current-prefix-arg)
               vc-annotate-display-mode
@@ -3215,35 +3331,44 @@ colors. `vc-annotate-background' specifies the background color."
         (set (make-local-variable 'vc-annotate-parent-rev) rev)
         (set (make-local-variable 'vc-annotate-parent-display-mode)
              display-mode)))
-    (when current-line
-      (goto-line current-line temp-buffer-name))
-    (message "Annotating... done")))
 
-(defun vc-annotate-prev-version (prefix)
-  "Visit the annotation of the version previous to this one.
-
-With a numeric prefix argument, annotate the version that many
-versions previous."
+    (with-current-buffer temp-buffer-name
+      (vc-exec-after
+       `(progn
+          ;; Ideally, we'd rather not move point if the user has already
+          ;; moved it elsewhere, but really point here is not the position
+          ;; of the user's cursor :-(
+          (when ,current-line           ;(and (bobp))
+            (goto-line ,current-line)
+            (setq vc-sentinel-movepoint))
+          (unless (active-minibuffer-window)
+            (message "Annotating... done")))))))
+
+(defun vc-annotate-prev-revision (prefix)
+  "Visit the annotation of the revision previous to this one.
+
+With a numeric prefix argument, annotate the revision that many
+revisions previous."
   (interactive "p")
-  (vc-annotate-warp-version (- 0 prefix)))
+  (vc-annotate-warp-revision (- 0 prefix)))
 
-(defun vc-annotate-next-version (prefix)
-  "Visit the annotation of the version after this one.
+(defun vc-annotate-next-revision (prefix)
+  "Visit the annotation of the revision after this one.
 
-With a numeric prefix argument, annotate the version that many
-versions after."
+With a numeric prefix argument, annotate the revision that many
+revisions after."
   (interactive "p")
-  (vc-annotate-warp-version prefix))
+  (vc-annotate-warp-revision prefix))
 
-(defun vc-annotate-workfile-version ()
-  "Visit the annotation of the workfile version of this file."
+(defun vc-annotate-working-revision ()
+  "Visit the annotation of the working revision of this file."
   (interactive)
   (if (not (equal major-mode 'vc-annotate-mode))
       (message "Cannot be invoked outside of a vc annotate buffer")
-    (let ((warp-rev (vc-workfile-version vc-annotate-parent-file)))
+    (let ((warp-rev (vc-working-revision vc-annotate-parent-file)))
       (if (equal warp-rev vc-annotate-parent-rev)
-         (message "Already at version %s" warp-rev)
-       (vc-annotate-warp-version warp-rev)))))
+         (message "Already at revision %s" warp-rev)
+       (vc-annotate-warp-revision warp-rev)))))
 
 (defun vc-annotate-extract-revision-at-line ()
   "Extract the revision number of the current line."
@@ -3251,7 +3376,7 @@ versions after."
   (vc-call-backend vc-annotate-backend 'annotate-extract-revision-at-line))
 
 (defun vc-annotate-revision-at-line ()
-  "Visit the annotation of the version identified in the current line."
+  "Visit the annotation of the revision identified in the current line."
   (interactive)
   (if (not (equal major-mode 'vc-annotate-mode))
       (message "Cannot be invoked outside of a vc annotate buffer")
@@ -3259,11 +3384,11 @@ versions after."
       (if (not rev-at-line)
          (message "Cannot extract revision number from the current line")
        (if (equal rev-at-line vc-annotate-parent-rev)
-           (message "Already at version %s" rev-at-line)
-         (vc-annotate-warp-version rev-at-line))))))
+           (message "Already at revision %s" rev-at-line)
+         (vc-annotate-warp-revision rev-at-line))))))
 
 (defun vc-annotate-revision-previous-to-line ()
-  "Visit the annotation of the version before the version at line."
+  "Visit the annotation of the revision before the revision at line."
   (interactive)
   (if (not (equal major-mode 'vc-annotate-mode))
       (message "Cannot be invoked outside of a vc annotate buffer")
@@ -3272,11 +3397,11 @@ versions after."
       (if (not rev-at-line)
          (message "Cannot extract revision number from the current line")
        (setq prev-rev
-             (vc-call previous-version vc-annotate-parent-file rev-at-line))
-       (vc-annotate-warp-version prev-rev)))))
+             (vc-call previous-revision vc-annotate-parent-file rev-at-line))
+       (vc-annotate-warp-revision prev-rev)))))
 
 (defun vc-annotate-show-log-revision-at-line ()
-  "Visit the log of the version at line."
+  "Visit the log of the revision at line."
   (interactive)
   (if (not (equal major-mode 'vc-annotate-mode))
       (message "Cannot be invoked outside of a vc annotate buffer")
@@ -3286,7 +3411,7 @@ versions after."
        (vc-print-log rev-at-line)))))
 
 (defun vc-annotate-show-diff-revision-at-line ()
-  "Visit the diff of the version at line from its previous version."
+  "Visit the diff of the revision at line from its previous revision."
   (interactive)
   (if (not (equal major-mode 'vc-annotate-mode))
       (message "Cannot be invoked outside of a vc annotate buffer")
@@ -3295,19 +3420,23 @@ versions after."
       (if (not rev-at-line)
          (message "Cannot extract revision number from the current line")
        (setq prev-rev
-             (vc-call previous-version vc-annotate-parent-file rev-at-line))
+             (vc-call previous-revision vc-annotate-parent-file rev-at-line))
        (if (not prev-rev)
-           (message "Cannot diff from any version prior to %s" rev-at-line)
+           (message "Cannot diff from any revision prior to %s" rev-at-line)
          (save-window-excursion
-           (vc-version-diff vc-annotate-parent-file prev-rev rev-at-line))
+           (vc-diff-internal 
+            (vc-backend vc-annotate-parent-file)
+            nil
+            (list vc-annotate-parent-file) 
+            prev-rev rev-at-line))
          (switch-to-buffer "*vc-diff*"))))))
 
-(defun vc-annotate-warp-version (revspec)
-  "Annotate the version described by REVSPEC.
+(defun vc-annotate-warp-revision (revspec)
+  "Annotate the revision described by REVSPEC.
 
-If REVSPEC is a positive integer, warp that many versions
+If REVSPEC is a positive integer, warp that many revisions
 forward, if possible, otherwise echo a warning message.  If
-REVSPEC is a negative integer, warp that many versions backward,
+REVSPEC is a negative integer, warp that many revisions backward,
 if possible, otherwise echo a warning message.  If REVSPEC is a
 string, then it describes a revision number, so warp to that
 revision."
@@ -3321,23 +3450,23 @@ revision."
        ((and (integerp revspec) (> revspec 0))
        (setq newrev vc-annotate-parent-rev)
        (while (and (> revspec 0) newrev)
-              (setq newrev (vc-call next-version
+              (setq newrev (vc-call next-revision
                                     vc-annotate-parent-file newrev))
               (setq revspec (1- revspec)))
        (if (not newrev)
-           (message "Cannot increment %d versions from version %s"
+           (message "Cannot increment %d revisions from revision %s"
                     revspeccopy vc-annotate-parent-rev)))
        ((and (integerp revspec) (< revspec 0))
        (setq newrev vc-annotate-parent-rev)
        (while (and (< revspec 0) newrev)
-              (setq newrev (vc-call previous-version
+              (setq newrev (vc-call previous-revision
                                     vc-annotate-parent-file newrev))
               (setq revspec (1+ revspec)))
        (if (not newrev)
-           (message "Cannot decrement %d versions from version %s"
+           (message "Cannot decrement %d revisions from revision %s"
                     (- 0 revspeccopy) vc-annotate-parent-rev)))
        ((stringp revspec) (setq newrev revspec))
-       (t (error "Invalid argument to vc-annotate-warp-version")))
+       (t (error "Invalid argument to vc-annotate-warp-revision")))
       (when newrev
        (vc-annotate vc-annotate-parent-file newrev
                      vc-annotate-parent-display-mode
@@ -3392,61 +3521,41 @@ The annotations are relative to the current time, unless overridden by OFFSET."
   (font-lock-mode 1))
 
 (defun vc-annotate-lines (limit)
-  (let (difference)
-    (while (and (< (point) limit)
-               (setq difference (vc-annotate-difference vc-annotate-offset)))
-      (let* ((color (or (vc-annotate-compcar difference vc-annotate-color-map)
-                       (cons nil vc-annotate-very-old-color)))
-            ;; substring from index 1 to remove any leading `#' in the name
-            (face-name (concat "vc-annotate-face-"
-                               (if (string-equal
-                                    (substring (cdr color) 0 1) "#")
-                                   (substring (cdr color) 1)
-                                 (cdr color))))
-            ;; Make the face if not done.
-            (face (or (intern-soft face-name)
-                      (let ((tmp-face (make-face (intern face-name))))
-                        (set-face-foreground tmp-face (cdr color))
-                        (if vc-annotate-background
-                            (set-face-background tmp-face
-                                                 vc-annotate-background))
-                        tmp-face)))    ; Return the face
-            (point (point)))
-       (forward-line 1)
-       (put-text-property point (point) 'face face)))
-    ;; Pretend to font-lock there were no matches.
-    nil))
-\f
-;; Collect back-end-dependent stuff here
-
-(defalias 'vc-default-logentry-check 'ignore)
-
-(defun vc-check-headers ()
-  "Check if the current file has any headers in it."
-  (interactive)
-  (vc-call-backend (vc-backend buffer-file-name) 'check-headers))
-
-(defun vc-default-check-headers (backend)
-  "Default implementation of check-headers; always returns nil."
+  (while (< (point) limit)
+    (let ((difference (vc-annotate-difference vc-annotate-offset))
+          (start (point))
+          (end (progn (forward-line 1) (point))))
+      (when difference
+        (let* ((color (or (vc-annotate-compcar difference vc-annotate-color-map)
+                          (cons nil vc-annotate-very-old-color)))
+               ;; substring from index 1 to remove any leading `#' in the name
+               (face-name (concat "vc-annotate-face-"
+                                  (if (string-equal
+                                       (substring (cdr color) 0 1) "#")
+                                      (substring (cdr color) 1)
+                                    (cdr color))))
+               ;; Make the face if not done.
+               (face (or (intern-soft face-name)
+                         (let ((tmp-face (make-face (intern face-name))))
+                           (set-face-foreground tmp-face (cdr color))
+                           (if vc-annotate-background
+                               (set-face-background tmp-face
+                                                    vc-annotate-background))
+                           tmp-face))))        ; Return the face
+          (put-text-property start end 'face face)))))
+  ;; Pretend to font-lock there were no matches.
   nil)
-
-;; Back-end-dependent stuff ends here.
+\f
 
 ;; Set up key bindings for use while editing log messages
 
-(defun vc-log-edit (file)
+(defun vc-log-edit (fileset)
   "Set up `log-edit' for use with VC on FILE."
   (setq default-directory
-       (if file (file-name-directory file)
-         (with-current-buffer vc-parent-buffer default-directory)))
-  (log-edit 'vc-finish-logentry nil
-           (if file `(lambda () ',(list (file-name-nondirectory file)))
-             ;; If FILE is nil, we were called from vc-dired.
-             (lambda ()
-               (with-current-buffer vc-parent-buffer
-                 (dired-get-marked-files t)))))
-  (set (make-local-variable 'vc-log-file) file)
-  (make-local-variable 'vc-log-version)
+       (with-current-buffer vc-parent-buffer default-directory))
+  (log-edit 'vc-finish-logentry nil `(lambda () ',fileset))
+  (set (make-local-variable 'vc-log-fileset) fileset)
+  (make-local-variable 'vc-log-revision)
   (set-buffer-modified-p nil)
   (setq buffer-file-name nil))
 
@@ -3465,13 +3574,13 @@ Invoke FUNC f ARGS on each VC-managed file f underneath it."
     (let ((dir (file-name-as-directory file)))
       (mapcar
        (lambda (f) (or
-                   (string-equal f ".")
-                   (string-equal f "..")
-                   (member f vc-directory-exclusion-list)
-                   (let ((dirf (expand-file-name f dir)))
-                     (or
-                      (file-symlink-p dirf);; Avoid possible loops
-                      (vc-file-tree-walk-internal dirf func args)))))
+               (string-equal f ".")
+               (string-equal f "..")
+               (member f vc-directory-exclusion-list)
+               (let ((dirf (expand-file-name f dir)))
+                 (or
+                  (file-symlink-p dirf) ;; Avoid possible loops.
+                  (vc-file-tree-walk-internal dirf func args)))))
        (directory-files dir)))))
 
 (provide 'vc)
index b8c93f64ff592c5852002625536aa2fabd4bc171..a05bb3c60c5456473719eba88b13f48cb2555458 100644 (file)
 ;; and also as usual \C-h in this map will list the key definitions, which
 ;; are designed to be easy to remember.
 ;;
-;; A special feature is provided by (vcursor-toggle-vcursor-map), bound
+;; A special feature is provided by (vcursor-use-vcursor-map), bound
 ;; to t in that keymap.  With this in effect, the main keymap
 ;; is overridden by the vcursor map, so keys like \C-p and so on
 ;; move the vcursor instead.  Remember how to turn it off (type t),
   :group 'vcursor)
 
 (defcustom vcursor-auto-disable nil
-  "*If non-nil, disable the virtual cursor after use.
+  "If non-nil, disable the virtual cursor after use.
 Any non-vcursor command will force `vcursor-disable' to be called.
 If non-nil but not t, just make sure copying is toggled off, but don't
 disable the vcursor."
@@ -344,7 +344,7 @@ disable the vcursor."
   :group 'vcursor)
 
 (defcustom vcursor-modifiers (list 'control 'shift)
-  "*A list of modifiers that are used to define vcursor key bindings."
+  "A list of modifiers that are used to define vcursor key bindings."
   :type '(repeat symbol)
   :group 'vcursor)
 
@@ -464,7 +464,7 @@ on loading vcursor and from the customize package."
     )))
 
 (defcustom vcursor-key-bindings nil
-  "*How to bind keys when vcursor is loaded.
+  "How to bind keys when vcursor is loaded.
 If t, guess; if `xterm', use bindings suitable for an X terminal; if
 `oemacs', use bindings which work on a PC with Oemacs.  If nil, don't
 define any key bindings.
@@ -476,7 +476,7 @@ Default is nil."
   :version "20.3")
 
 (defcustom vcursor-interpret-input nil
-  "*If non-nil, input from the vcursor is treated as interactive input.
+  "If non-nil, input from the vcursor is treated as interactive input.
 This will cause text insertion to be much slower.  Note that no special
 interpretation of strings is done: \"\C-x\" is a string of four
 characters.  The default is simply to copy strings."
@@ -506,49 +506,48 @@ scrolling set this.  It is used by the `vcursor-auto-disable' code.")
 ;; automatically handle any new commands using the primitives.
 
 (defcustom vcursor-copy-flag nil
-  "*Non-nil means moving vcursor should copy characters moved over to point."
+  "Non-nil means moving vcursor should copy characters moved over to point."
   :type 'boolean
   :group 'vcursor)
 
 (defvar vcursor-temp-goal-column nil
   "Keeps track of temporary goal columns for the virtual cursor.")
 
-(defvar vcursor-use-vcursor-map nil
-  "Non-nil if the vcursor map is mapped directly onto the main keymap.
-See `vcursor-toggle-vcursor-map'.")
-(make-variable-buffer-local 'vcursor-use-vcursor-map)
-
-(defvar vcursor-map nil "Keymap for vcursor command.")
-(define-prefix-command 'vcursor-map)
-
-(define-key vcursor-map "t" 'vcursor-toggle-vcursor-map)
-
-(define-key vcursor-map "\C-p" 'vcursor-previous-line)
-(define-key vcursor-map "\C-n" 'vcursor-next-line)
-(define-key vcursor-map "\C-b" 'vcursor-backward-char)
-(define-key vcursor-map "\C-f" 'vcursor-forward-char)
-
-(define-key vcursor-map "\r" 'vcursor-disable)
-(define-key vcursor-map " " 'vcursor-copy)
-(define-key vcursor-map "\C-y" 'vcursor-copy-word)
-(define-key vcursor-map "\C-i" 'vcursor-toggle-copy)
-(define-key vcursor-map "<" 'vcursor-beginning-of-buffer)
-(define-key vcursor-map ">" 'vcursor-end-of-buffer)
-(define-key vcursor-map "\M-v" 'vcursor-scroll-down)
-(define-key vcursor-map "\C-v" 'vcursor-scroll-up)
-(define-key vcursor-map "o" 'vcursor-other-window)
-(define-key vcursor-map "g" 'vcursor-goto)
-(define-key vcursor-map "x" 'vcursor-swap-point)
-(define-key vcursor-map "\C-s" 'vcursor-isearch-forward)
-(define-key vcursor-map "\C-r" 'vcursor-isearch-backward)
-(define-key vcursor-map "\C-a" 'vcursor-beginning-of-line)
-(define-key vcursor-map "\C-e" 'vcursor-end-of-line)
-(define-key vcursor-map "\M-w" 'vcursor-forward-word)
-(define-key vcursor-map "\M-b" 'vcursor-backward-word)
-(define-key vcursor-map "\M-l" 'vcursor-copy-line)
-(define-key vcursor-map "c" 'vcursor-compare-windows)
-(define-key vcursor-map "k" 'vcursor-execute-key)
-(define-key vcursor-map "\M-x" 'vcursor-execute-command)
+(defvar vcursor-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "t" 'vcursor-use-vcursor-map)
+
+    (define-key map "\C-p" 'vcursor-previous-line)
+    (define-key map "\C-n" 'vcursor-next-line)
+    (define-key map "\C-b" 'vcursor-backward-char)
+    (define-key map "\C-f" 'vcursor-forward-char)
+
+    (define-key map "\r" 'vcursor-disable)
+    (define-key map " " 'vcursor-copy)
+    (define-key map "\C-y" 'vcursor-copy-word)
+    (define-key map "\C-i" 'vcursor-toggle-copy)
+    (define-key map "<" 'vcursor-beginning-of-buffer)
+    (define-key map ">" 'vcursor-end-of-buffer)
+    (define-key map "\M-v" 'vcursor-scroll-down)
+    (define-key map "\C-v" 'vcursor-scroll-up)
+    (define-key map "o" 'vcursor-other-window)
+    (define-key map "g" 'vcursor-goto)
+    (define-key map "x" 'vcursor-swap-point)
+    (define-key map "\C-s" 'vcursor-isearch-forward)
+    (define-key map "\C-r" 'vcursor-isearch-backward)
+    (define-key map "\C-a" 'vcursor-beginning-of-line)
+    (define-key map "\C-e" 'vcursor-end-of-line)
+    (define-key map "\M-w" 'vcursor-forward-word)
+    (define-key map "\M-b" 'vcursor-backward-word)
+    (define-key map "\M-l" 'vcursor-copy-line)
+    (define-key map "c" 'vcursor-compare-windows)
+    (define-key map "k" 'vcursor-execute-key)
+    (define-key map "\M-x" 'vcursor-execute-command)
+    map)
+  "Keymap for vcursor command.")
+;; This seems unused, but it was done as part of define-prefix-command,
+;; so let's keep it for now.
+(fset 'vcursor-map vcursor-map)
 
 ;; If vcursor-key-bindings is already set on loading, bind the keys now.
 ;; This hybrid way of doing it retains compatibility while allowing
@@ -716,8 +715,7 @@ not be visible otherwise, display it in another window."
   (interactive)
   (let ((buf (current-buffer)) (here (point)) (win (selected-window)))
     (vcursor-goto) ; will disable the vcursor
-    (save-excursion
-      (set-buffer buf)
+    (with-current-buffer buf
       (setq vcursor-window win)
       (vcursor-move here)))
 )
@@ -801,8 +799,7 @@ This is called by most of the virtual-cursor copying commands to find
 out how much to copy."
 
   (vcursor-check)
-  (save-excursion
-    (set-buffer (overlay-buffer vcursor-overlay))
+  (with-current-buffer (overlay-buffer vcursor-overlay)
     (let ((start (goto-char (overlay-start vcursor-overlay))))
       (- (progn (apply func args) (point)) start)))
   )
@@ -817,6 +814,16 @@ out how much to copy."
    (t (error "The virtual cursor is not active now")))
   )
 
+(define-minor-mode vcursor-use-vcursor-map
+  "Toggle the state of the vcursor key map.
+When on, the keys defined in it are mapped directly on top of the main
+keymap, allowing you to move the vcursor with ordinary motion keys.
+An indication \"!VC\" appears in the mode list.  The effect is
+local to the current buffer.
+Disabling the vcursor automatically turns this off."
+  :keymap vcursor-map
+  :lighter " !VC")
+
 (defun vcursor-disable (&optional arg)
   "Disable the virtual cursor.
 Next time you use it, it will start from point.
@@ -844,7 +851,7 @@ not copy text until you turn it on again."
    ((and arg (< (prefix-numeric-value arg) 0))
     (vcursor-move (point))
     (setq vcursor-window (selected-window)))
-   (vcursor-use-vcursor-map (vcursor-toggle-vcursor-map 0)))
+   (vcursor-use-vcursor-map (vcursor-use-vcursor-map 0)))
   (setq vcursor-copy-flag nil)
   )
 
@@ -867,8 +874,7 @@ ALL-FRAMES is also used to decide whether to split the window."
       ;; We don't use fancy vcursor-find-window trickery, since we're
       ;; quite happy to have the vcursor cycle back into the current
       ;; window.
-      (let ((sw (selected-window))
-           (win (vcursor-find-window nil nil (not all-frames))))
+      (let ((win (vcursor-find-window nil nil (not all-frames))))
        (if win (select-window win))
        ;; else start from here
        (other-window n all-frames)
@@ -891,7 +897,7 @@ If `compare-ignore-case' is non-nil, changes in case are also ignored."
   ;; (vcursor-window-funcall 'compare-windows arg)
   (require 'compare-w)
   (let* (p1 p2 maxp1 maxp2 b1 b2 w2
-           success size
+           success
            (opoint1 (point))
            opoint2
            (skip-whitespace (if ignore-whitespace
@@ -905,8 +911,7 @@ If `compare-ignore-case' is non-nil, changes in case are also ignored."
       (setq p2 (point) b2 (current-buffer)))
     (setq opoint2 p2)
     (setq maxp1 (point-max))
-    (save-excursion
-      (set-buffer b2)
+    (with-current-buffer b2
       (setq maxp2 (point-max)))
 
     (setq success t)
@@ -921,7 +926,7 @@ If `compare-ignore-case' is non-nil, changes in case are also ignored."
 
       (and skip-whitespace
           (save-excursion
-            (let (p1a p2a w1 w2 result1 result2)
+            (let (p1a p2a result1 result2)
               (setq result1
                     (if (stringp skip-whitespace)
                         (compare-windows-skip-whitespace opoint1)
@@ -1096,8 +1101,7 @@ is called interactively, so prefix argument etc. are usable."
   (interactive "p")
   (vcursor-check)
   (vcursor-insert
-   (save-excursion
-     (set-buffer (overlay-buffer vcursor-overlay))
+   (with-current-buffer (overlay-buffer vcursor-overlay)
      (let* ((ostart (overlay-start vcursor-overlay))
            (end (+ ostart arg)))
        (prog1
@@ -1126,32 +1130,8 @@ line is treated like ordinary characters."
     (vcursor-copy (if (or (= count 0) arg) (1+ count) count)))
   )
 
-(defun vcursor-toggle-vcursor-map (&optional force noredisp)
-  "Toggle the state of the vcursor key map.
-When on, the keys defined in it are mapped directly on top of the main
-keymap, allowing you to move the vcursor with ordinary motion keys.
-An indication \"!VC\" appears in the mode list.  The effect is
-local to the current buffer.
-With prefix FORCE, turn on, or off if it is 0.
-With NOREDISP, don't force redisplay.
-Disabling the vcursor automatically turns this off."
-  (interactive "P")
-  (let ((new (cond ((not force) (not vcursor-use-vcursor-map))
-                  ((eq force 0) nil)
-                  (t))))
-    (or (eq new vcursor-use-vcursor-map)
-       (progn
-         (setq vcursor-use-vcursor-map new)
-         (or (assq 'vcursor-use-vcursor-map minor-mode-map-alist)
-             (setq minor-mode-map-alist
-                   (cons (cons 'vcursor-use-vcursor-map vcursor-map)
-                         minor-mode-map-alist)))
-         (or (assq 'vcursor-use-vcursor-map minor-mode-alist)
-             (setq minor-mode-alist
-                   (cons (list 'vcursor-use-vcursor-map " !VC")
-                         minor-mode-alist)))
-         (or noredisp (redraw-display)))))
-  )
+(define-obsolete-function-alias
+  'vcursor-toggle-vcursor-map 'vcursor-use-vcursor-map "23.1")
 
 (defun vcursor-post-command ()
   (and vcursor-auto-disable (not vcursor-last-command)
@@ -1166,5 +1146,5 @@ Disabling the vcursor automatically turns this off."
 
 (provide 'vcursor)
 
-;;; arch-tag: cdfe1cdc-2c46-4046-88e4-ed57d20f7aca
+;; arch-tag: cdfe1cdc-2c46-4046-88e4-ed57d20f7aca
 ;;; vcursor.el ends here
index 1657dc0e270173fe0a5d56b4bfee1fc419d8e881..6d82b194ff89f176f5bc0aa9fb71daebfa84c6ce 100644 (file)
 
 ;;; Code:
 
-(defconst emacs-version "22.1.50" "\
+(defconst emacs-copyright "Copyright (C) 2007 Free Software Foundation, Inc."
+  "Short copyright string for this version of Emacs.")
+
+(defconst emacs-version "23.0.50" "\
 Version numbers of this version of Emacs.")
 
 (defconst emacs-major-version
index 37dc73dd4088da57b7256360c64ef1fc53b1970b..960d89909835d7cadd6be42ab7c3bf2b90a9ef10 100644 (file)
 (eval-when-compile (require 'cl))
 (require 'dired)
 (autoload 'dired-do-create-files-regexp "dired-aux")
-(autoload 'dired-call-process "dired-aux")
 
 (defgroup wdired nil
   "Mode to rename files by editing their names in dired buffers."
@@ -176,6 +175,7 @@ program `dired-chmod-program', which must exist."
     (define-key map "\C-c\C-c" 'wdired-finish-edit)
     (define-key map "\C-c\C-k" 'wdired-abort-changes)
     (define-key map "\C-c\C-[" 'wdired-abort-changes)
+    (define-key map "\C-x\C-q" 'wdired-exit)
     (define-key map "\C-m"     'ignore)
     (define-key map "\C-j"     'ignore)
     (define-key map "\C-o"     'ignore)
@@ -424,6 +424,22 @@ non-nil means return old filename."
   (set-buffer-modified-p nil)
   (setq buffer-undo-list nil))
 
+(defun wdired-exit ()
+  "Exit wdired and return to dired mode.
+Just return to dired mode if there are no changes.  Otherwise,
+ask a yes-or-no question whether to save or cancel changes,
+and proceed depending on the answer."
+  (interactive)
+  (if (buffer-modified-p)
+      (if (y-or-n-p (format "Buffer %s modified; save changes? "
+                           (current-buffer)))
+         (wdired-finish-edit)
+       (wdired-abort-changes))
+    (wdired-change-to-dired-mode)
+    (set-buffer-modified-p nil)
+    (setq buffer-undo-list nil)
+    (message "(No changes need to be saved)")))
+
 ;; Rename a file, searching it in a modified dired buffer, in order
 ;; to be able to use `dired-do-create-files-regexp' and get its
 ;; "benefits".
@@ -684,7 +700,7 @@ Like original function but it skips read-only words."
        (new-bit "-")
        (pos-prop (- (point) (- (current-column) wdired-col-perm))))
     (if (eq (char-after (point)) ?-)
-       (setq new-bit   
+       (setq new-bit
              (if (= (% (- (current-column) wdired-col-perm) 3) 0) "r"
                (if (= (% (- (current-column) wdired-col-perm) 3) 1) "w"
                  "x"))))
@@ -744,8 +760,8 @@ Like original function but it skips read-only words."
             (progn
               (setq perm-tmp
                     (int-to-string (wdired-perms-to-number perms-new)))
-              (unless (equal 0 (dired-call-process dired-chmod-program
-                                                   t perm-tmp filename))
+              (unless (equal 0 (process-file dired-chmod-program
+                                            nil nil nil perm-tmp filename))
                 (setq errors (1+ errors))
                 (dired-log (concat dired-chmod-program " " perm-tmp
                                    " `" filename "' failed\n\n"))))
index 3ea8394b0b79681d6db2073ac8bc75898dc3f274..6e6aeb5fbb71b34b632e21468d8c98ebe94311ed 100644 (file)
@@ -709,7 +709,9 @@ periodically for whitespace."
 If timer is not set, then set it to scan the files in
 `whitespace-all-buffer-files' periodically (defined by
 `whitespace-rescan-timer-time') for whitespace creep."
-  (if (and whitespace-rescan-timer-time (not whitespace-rescan-timer))
+  (if (and whitespace-rescan-timer-time
+          (/= whitespace-rescan-timer-time 0)
+          (not whitespace-rescan-timer))
       (setq whitespace-rescan-timer
            (add-timeout whitespace-rescan-timer-time
                         'whitespace-rescan-files-in-buffers nil
index ec702f7b45c4636ab90fc869c9a48afc1de18531..f0dab6626acfc493fd20880e29f1b0366e755c50 100644 (file)
 
 ;;; The Mode.
 
-(defvar widget-browse-mode-map nil
+(defvar widget-browse-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map widget-keymap)
+    (define-key map "q" 'bury-buffer)
+    map)
   "Keymap for `widget-browse-mode'.")
 
-(unless widget-browse-mode-map
-  (setq widget-browse-mode-map (make-sparse-keymap))
-  (set-keymap-parent widget-browse-mode-map widget-keymap)
-  (define-key widget-browse-mode-map "q" 'bury-buffer))
-
 (easy-menu-define widget-browse-mode-customize-menu
     widget-browse-mode-map
   "Menu used in widget browser buffers."
@@ -265,38 +264,21 @@ VALUE is assumed to be a list of widgets."
 
 ;;; Widget Minor Mode.
 
-(defvar widget-minor-mode nil
-  "If non-nil, we are in Widget Minor Mode.")
-(make-variable-buffer-local 'widget-minor-mode)
-
-(defvar widget-minor-mode-map nil
+(defvar widget-minor-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map widget-keymap)
+    map)
   "Keymap used in Widget Minor Mode.")
 
-(unless widget-minor-mode-map
-  (setq widget-minor-mode-map (make-sparse-keymap))
-  (set-keymap-parent widget-minor-mode-map widget-keymap))
-
 ;;;###autoload
-(defun widget-minor-mode (&optional arg)
+(define-minor-mode widget-minor-mode
   "Togle minor mode for traversing widgets.
 With arg, turn widget mode on if and only if arg is positive."
-  (interactive "P")
-  (cond ((null arg)
-        (setq widget-minor-mode (not widget-minor-mode)))
-       ((<= arg 0)
-        (setq widget-minor-mode nil))
-       (t
-        (setq widget-minor-mode t)))
-  (force-mode-line-update))
-
-(add-to-list 'minor-mode-alist '(widget-minor-mode " Widget"))
-
-(add-to-list 'minor-mode-map-alist
-            (cons 'widget-minor-mode widget-minor-mode-map))
+  :lighter " Widget")
 
 ;;; The End:
 
 (provide 'wid-browse)
 
-;;; arch-tag: d5ffb18f-8984-4735-8502-edf70456db21
+;; arch-tag: d5ffb18f-8984-4735-8502-edf70456db21
 ;;; wid-browse.el ends here
index 50df4bd56c64a7210c2600b65e4f31defdf227fc..49d519a9ea2394806e6c51c1cf16f9eebc7cbc01 100644 (file)
@@ -1503,6 +1503,8 @@ If that does not exists, call the value of `widget-complete-field'."
                      (delete-backward-char 1))
                    (insert ?\n)
                    (setq doc-end (point)))))
+              ((eq escape ?h)
+               (widget-add-documentation-string-button widget))
               ((eq escape ?v)
                (if (and button-begin (not button-end))
                    (widget-apply widget :value-create)
@@ -1528,44 +1530,7 @@ If that does not exists, call the value of `widget-complete-field'."
   (widget-clear-undo))
 
 (defun widget-default-format-handler (widget escape)
-  ;; We recognize the %h escape by default.
-  (let* ((buttons (widget-get widget :buttons)))
-    (cond ((eq escape ?h)
-          (let* ((doc-property (widget-get widget :documentation-property))
-                 (doc-try (cond ((widget-get widget :doc))
-                                ((functionp doc-property)
-                                 (funcall doc-property
-                                          (widget-get widget :value)))
-                                ((symbolp doc-property)
-                                 (documentation-property
-                                  (widget-get widget :value)
-                                  doc-property))))
-                 (doc-text (and (stringp doc-try)
-                                (> (length doc-try) 1)
-                                doc-try))
-                 (doc-indent (widget-get widget :documentation-indent)))
-            (when doc-text
-              (and (eq (preceding-char) ?\n)
-                   (widget-get widget :indent)
-                   (insert-char ?\s (widget-get widget :indent)))
-              ;; The `*' in the beginning is redundant.
-              (when (eq (aref doc-text  0) ?*)
-                (setq doc-text (substring doc-text 1)))
-              ;; Get rid of trailing newlines.
-              (when (string-match "\n+\\'" doc-text)
-                (setq doc-text (substring doc-text 0 (match-beginning 0))))
-              (push (widget-create-child-and-convert
-                     widget 'documentation-string
-                     :indent (cond ((numberp doc-indent )
-                                    doc-indent)
-                                   ((null doc-indent)
-                                    nil)
-                                   (t 0))
-                     doc-text)
-                    buttons))))
-         (t
-          (error "Unknown escape `%c'" escape)))
-    (widget-put widget :buttons buttons)))
+  (error "Unknown escape `%c'" escape))
 
 (defun widget-default-button-face-get (widget)
   ;; Use :button-face or widget-button-face
@@ -1677,13 +1642,32 @@ If that does not exists, call the value of `widget-complete-field'."
   (widget-default-action widget event))
 
 (defun widget-default-prompt-value (widget prompt value unbound)
-  "Read an arbitrary value.  Stolen from `set-variable'."
-;; (let ((initial (if unbound
-;; nil
-;; It would be nice if we could do a `(cons val 1)' here.
-;; (prin1-to-string (custom-quote value))))))
+  "Read an arbitrary value."
   (eval-minibuffer prompt))
 
+(defun widget-docstring (widget)
+  "Return the documentation string specificied by WIDGET, or nil if none.
+If WIDGET has a `:doc' property, that specifies the documentation string.
+Otherwise, try the `:documentation-property' property.  If this
+is a function, call it with the widget's value as an argument; if
+it is a symbol, use this symbol together with the widget's value
+as the argument to `documentation-property'."
+  (let ((doc (or (widget-get widget :doc)
+                (let ((doc-prop (widget-get widget :documentation-property))
+                      (value (widget-get widget :value)))
+                  (cond ((functionp doc-prop)
+                         (funcall doc-prop value))
+                        ((symbolp doc-prop)
+                         (documentation-property value doc-prop)))))))
+    (when (and (stringp doc) (> (length doc) 0))
+      ;; Remove any redundant `*' in the beginning.
+      (when (eq (aref doc 0) ?*)
+       (setq doc (substring doc 1)))
+      ;; Remove trailing newlines.
+      (when (string-match "\n+\\'" doc)
+       (setq doc (substring doc 0 (match-beginning 0))))
+      doc)))
+
 ;;; The `item' Widget.
 
 (define-widget 'item 'default
@@ -2925,7 +2909,8 @@ link for that string."
   "A documentation string."
   :format "%v"
   :action 'widget-documentation-string-action
-  :value-create 'widget-documentation-string-value-create)
+  :value-create 'widget-documentation-string-value-create
+  :visibility-widget 'visibility)
 
 (defun widget-documentation-string-value-create (widget)
   ;; Insert documentation string.
@@ -2937,11 +2922,13 @@ link for that string."
        (let ((before (substring doc 0 (match-beginning 0)))
              (after (substring doc (match-beginning 0)))
              button)
+         (when (and indent (not (zerop indent)))
+           (insert-char ?\s indent))
          (insert before ?\s)
          (widget-documentation-link-add widget start (point))
          (setq button
                (widget-create-child-and-convert
-                widget 'visibility
+                widget (widget-get widget :visibility-widget)
                 :help-echo "Show or hide rest of the documentation."
                 :on "Hide Rest"
                 :off "More"
@@ -2955,6 +2942,8 @@ link for that string."
            (insert after)
            (widget-documentation-link-add widget start (point)))
          (widget-put widget :buttons (list button)))
+      (when (and indent (not (zerop indent)))
+       (insert-char ?\s indent))
       (insert doc)
       (widget-documentation-link-add widget start (point))))
   (insert ?\n))
@@ -2966,6 +2955,29 @@ link for that string."
                (not (widget-get parent :documentation-shown))))
   ;; Redraw.
   (widget-value-set widget (widget-value widget)))
+
+(defun widget-add-documentation-string-button (widget &rest args)
+  "Insert a new `documentation-string' widget based on WIDGET.
+The new widget becomes a child of WIDGET, and is also added to
+its `:buttons' list.  The documentation string is found from
+WIDGET using the function `widget-docstring'.
+Optional ARGS specifies additional keyword arguments for the
+`documentation-string' widget."
+  (let ((doc (widget-docstring widget))
+       (indent (widget-get widget :indent))
+       (doc-indent (widget-get widget :documentation-indent)))
+    (when doc
+      (and (eq (preceding-char) ?\n)
+          indent
+          (insert-char ?\s indent))
+      (unless (or (numberp doc-indent) (null doc-indent))
+       (setq doc-indent 0))
+      (widget-put widget :buttons
+                 (cons (apply 'widget-create-child-and-convert
+                              widget 'documentation-string
+                              :indent doc-indent
+                              (nconc args (list doc)))
+                       (widget-get widget :buttons))))))
 \f
 ;;; The Sexp Widgets.
 
index 0626625ec869a0a93c7f2cc5041a6d2e63b58233..0f6ae8ab7634ab2b62326d49f8c1ae0951ade249 100644 (file)
@@ -57,15 +57,15 @@ BODY remains selected."
         ;; select-window changes frame-selected-window for whatever
         ;; frame that window is in.
         (save-selected-window-alist
-         (mapcar (lambda (frame) (list frame (frame-selected-window frame)))
+         (mapcar (lambda (frame) (cons frame (frame-selected-window frame)))
                  (frame-list))))
      (save-current-buffer
        (unwind-protect
           (progn ,@body)
         (dolist (elt save-selected-window-alist)
           (and (frame-live-p (car elt))
-               (window-live-p (cadr elt))
-               (set-frame-selected-window (car elt) (cadr elt))))
+               (window-live-p (cdr elt))
+               (set-frame-selected-window (car elt) (cdr elt))))
         (if (window-live-p save-selected-window-window)
             (select-window save-selected-window-window))))))
 
@@ -396,11 +396,15 @@ subtree is balanced."
 (defun bw-adjust-window (window delta horizontal)
   "Wrapper around `adjust-window-trailing-edge' with error checking.
 Arguments WINDOW, DELTA and HORIZONTAL are passed on to that function."
-  (condition-case err
-      (adjust-window-trailing-edge window delta horizontal)
-    (error
-     ;;(message "adjust: %s" (error-message-string err))
-     )))
+  ;; `adjust-window-trailing-edge' may fail if delta is too large.
+  (while (>= (abs delta) 1)
+    (condition-case err
+        (progn
+          (adjust-window-trailing-edge window delta horizontal)
+          (setq delta 0))
+      (error
+       ;;(message "adjust: %s" (error-message-string err))
+       (setq delta (/ delta 2))))))
 
 (defun bw-balance-sub (wt w h)
   (setq wt (bw-refresh-edges wt))
@@ -423,6 +427,99 @@ Arguments WINDOW, DELTA and HORIZONTAL are passed on to that function."
       (dolist (c childs)
           (bw-balance-sub c cw ch)))))
 
+;;; A different solution to balance-windows
+
+(defun window-fixed-size-p (&optional window direction)
+  "Non-nil if WINDOW cannot be resized in DIRECTION.
+DIRECTION can be nil (i.e. any), `height' or `width'."
+  (with-current-buffer (window-buffer window)
+    (let ((fixed (and (boundp 'window-size-fixed) window-size-fixed)))
+      (when fixed
+       (not (and direction
+                 (member (cons direction window-size-fixed)
+                         '((height . width) (width . height)))))))))
+
+(defvar window-area-factor 1
+  "Factor by which the window area should be over-estimated.
+This is used by `balance-windows-area'.
+Changing this globally has no effect.")
+
+(defun balance-windows-area ()
+  "Make all visible windows the same area (approximately).
+See also `window-area-factor' to change the relative size of specific buffers."
+  (interactive)
+  (let* ((unchanged 0) (carry 0) (round 0)
+         ;; Remove fixed-size windows.
+         (wins (delq nil (mapcar (lambda (win)
+                                   (if (not (window-fixed-size-p win)) win))
+                                 (window-list nil 'nomini))))
+         (changelog nil)
+         next)
+    ;; Resizing a window changes the size of surrounding windows in complex
+    ;; ways, so it's difficult to balance them all.  The introduction of
+    ;; `adjust-window-trailing-edge' made it a bit easier, but it is still
+    ;; very difficult to do.  `balance-window' above takes an off-line
+    ;; approach: get the whole window tree, then balance it, then try to
+    ;; adjust the windows so they fit the result.
+    ;; Here, instead, we take a "local optimization" approach, where we just
+    ;; go through all the windows several times until nothing needs to be
+    ;; changed.  The main problem with this approach is that it's difficult
+    ;; to make sure it terminates, so we use some heuristic to try and break
+    ;; off infinite loops.
+    ;; After a round without any change, we allow a second, to give a chance
+    ;; to the carry to propagate a minor imbalance from the end back to
+    ;; the beginning.
+    (while (< unchanged 2)
+      ;; (message "New round")
+      (setq unchanged (1+ unchanged) round (1+ round))
+      (dolist (win wins)
+        (setq next win)
+        (while (progn (setq next (next-window next))
+                      (window-fixed-size-p next)))
+        ;; (assert (eq next (or (cadr (member win wins)) (car wins))))
+        (let* ((horiz
+                (< (car (window-edges win)) (car (window-edges next))))
+               (areadiff (/ (- (* (window-height next) (window-width next)
+                                  (buffer-local-value 'window-area-factor
+                                                      (window-buffer next)))
+                               (* (window-height win) (window-width win)
+                                  (buffer-local-value 'window-area-factor
+                                                      (window-buffer win))))
+                            (max (buffer-local-value 'window-area-factor
+                                                     (window-buffer win))
+                                 (buffer-local-value 'window-area-factor
+                                                     (window-buffer next)))))
+               (edgesize (if horiz
+                             (+ (window-height win) (window-height next))
+                           (+ (window-width win) (window-width next))))
+               (diff (/ areadiff edgesize)))
+          (when (zerop diff)
+            ;; Maybe diff is actually closer to 1 than to 0.
+            (setq diff (/ (* 3 areadiff) (* 2 edgesize))))
+          (when (and (zerop diff) (not (zerop areadiff)))
+            (setq diff (/ (+ areadiff carry) edgesize))
+            ;; Change things smoothly.
+            (if (or (> diff 1) (< diff -1)) (setq diff (/ diff 2))))
+          (if (zerop diff)
+              ;; Make sure negligible differences don't accumulate to
+              ;; become significant.
+              (setq carry (+ carry areadiff))
+            (bw-adjust-window win diff horiz)
+            ;; (sit-for 0.5)
+            (let ((change (cons win (window-edges win))))
+              ;; If the same change has been seen already for this window,
+              ;; we're most likely in an endless loop, so don't count it as
+              ;; a change.
+              (unless (member change changelog)
+                (push change changelog)
+                (setq unchanged 0 carry 0)))))))
+    ;; We've now basically balanced all the windows.
+    ;; But there may be some minor off-by-one imbalance left over,
+    ;; so let's do some fine tuning.
+    ;; (bw-finetune wins)
+    ;; (message "Done in %d rounds" round)
+    ))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 \f
 ;; I think this should be the default; I think people will prefer it--rms.
@@ -645,10 +742,7 @@ header-line."
          ;; desired-height lines, constrained by MIN-HEIGHT and MAX-HEIGHT.
          (- (max (min desired-height max-height)
                  (or min-height window-min-height))
-            window-height))
-        ;; We do our own height checking, so avoid any restrictions due to
-        ;; window-min-height.
-        (window-min-height 1))
+            window-height)))
 
     ;; Don't try to redisplay with the cursor at the end
     ;; on its own line--that would force a scroll and spoil things.
index 4d50b5d3f2e35b690e64e5b6bfc0693b2512ff8d..876fd6fc311c4d7725ccbd8a79b06e9e8d5be94c 100644 (file)
@@ -502,7 +502,7 @@ As a special case, if PATHS is nil then replace it by calling
           ;; Assume no `cygpath' program available.
           ;; Hack /cygdrive/x/ or /x/ or (obsolete) //x/ to x:/
           (when (string-match "\\`\\(/cygdrive\\|/\\)?/./" file)
-            (if (match-string 1)               ; /cygdrive/x/ or //x/ -> /x/
+            (if (match-beginning 1)            ; /cygdrive/x/ or //x/ -> /x/
                 (setq file (substring file (match-end 1))))
             (aset file 0 (aref file 1))        ; /x/ -> xx/
             (aset file 1 ?:))          ; xx/ -> x:/
@@ -520,19 +520,19 @@ As a special case, if PATHS is nil then replace it by calling
   :group 'help)
 
 (defcustom woman-show-log nil
-  "*If non-nil then show the *WoMan-Log* buffer if appropriate.
+  "If non-nil then show the *WoMan-Log* buffer if appropriate.
 I.e. if any warning messages are written to it.  Default is nil."
   :type 'boolean
   :group 'woman)
 
 (defcustom woman-pre-format-hook nil
-  "*Hook run by WoMan immediately before formatting a buffer.
+  "Hook run by WoMan immediately before formatting a buffer.
 Change only via `Customization' or the function `add-hook'."
   :type 'hook
   :group 'woman)
 
 (defcustom woman-post-format-hook nil
-  "*Hook run by WoMan immediately after formatting a buffer.
+  "Hook run by WoMan immediately after formatting a buffer.
 Change only via `Customization' or the function `add-hook'."
   :type 'hook
   :group 'woman)
@@ -550,7 +550,7 @@ Change only via `Customization' or the function `add-hook'."
     (if (eq system-type 'windows-nt)
        (mapcar 'woman-Cyg-to-Win path)
       path))
-  "*List of dirs to search and/or files to try for man config file.
+  "List of dirs to search and/or files to try for man config file.
 A trailing separator (`/' for UNIX etc.) on directories is
 optional, and the filename is used if a directory specified is
 the first to start with \"man\" and has an extension starting
@@ -595,7 +595,7 @@ or
 MANPATH_MAP[ \t]+\\(\\S-+\\)[ \t]+\\(\\S-+\\)\\)" nil t)
                      (add-to-list 'manpath
                                   (if (match-beginning 1)
-                                      (match-string 1) 
+                                      (match-string 1)
                                     (cons (match-string 2)
                                           (match-string 3)))))
                    manpath))
@@ -606,7 +606,7 @@ MANPATH_MAP[ \t]+\\(\\S-+\\)[ \t]+\\(\\S-+\\)\\)" nil t)
 (defcustom woman-manpath
   (or (woman-parse-colon-path (getenv "MANPATH"))
       '("/usr/man" "/usr/share/man" "/usr/local/man"))
-  "*List of DIRECTORY TREES to search for UN*X manual files.
+  "List of DIRECTORY TREES to search for UN*X manual files.
 Each element should be the name of a directory that contains
 subdirectories of the form `man?', or more precisely subdirectories
 selected by the value of `woman-manpath-man-regexp'.  Non-directory
@@ -649,7 +649,7 @@ Microsoft platforms.  Its purpose is to avoid `cat?', `.', `..', etc."
 
 (defcustom woman-path
   (if (eq system-type 'ms-dos) '("$DJDIR/info" "$DJDIR/man/cat[1-9onlp]"))
-  "*List of SPECIFIC DIRECTORIES to search for UN*X manual files.
+  "List of SPECIFIC DIRECTORIES to search for UN*X manual files.
 For example
 
   (\"/emacs/etc\").
@@ -676,7 +676,7 @@ drive letters explicitly."
   :group 'woman-interface)
 
 (defcustom woman-cache-level 2
-  "*The level of topic caching.
+  "The level of topic caching.
 1 - cache only the topic and directory lists
     (the only level before version 0.34 - only for compatibility);
 2 - cache also the directories for each topic
@@ -695,7 +695,7 @@ file `woman-cache-filename' for a change to take effect.
   :group 'woman-interface)
 
 (defcustom woman-cache-filename nil
-  "*The full pathname of the WoMan directory and topic cache file.
+  "The full pathname of the WoMan directory and topic cache file.
 It is used to save and restore the cache between sessions.  This is
 especially useful with remote-mounted man page files!  The default
 value of nil suppresses this action.  The `standard' non-nil
@@ -707,7 +707,7 @@ the `woman' command to update and re-write the cache."
   :group 'woman-interface)
 
 (defcustom woman-dired-keys t
-  "*List of `dired' mode keys to define to run WoMan on current file.
+  "List of `dired' mode keys to define to run WoMan on current file.
 E.g. '(\"w\" \"W\"), or any non-null atom to automatically define
 \"w\" and \"W\" if they are unbound, or nil to do nothing.
 Default is t."
@@ -719,20 +719,20 @@ Default is t."
 (defcustom woman-imenu-generic-expression
   '((nil "\n\\([A-Z].*\\)" 1) ; SECTION, but not TITLE
     ("*Subsections*" "^   \\([A-Z].*\\)" 1))
-  "*Imenu support for Sections and Subsections.
+  "Imenu support for Sections and Subsections.
 An alist with elements of the form (MENU-TITLE REGEXP INDEX) --
 see the documentation for `imenu-generic-expression'."
   :type 'sexp
   :group 'woman-interface)
 
 (defcustom woman-imenu nil
-  "*If non-nil then WoMan adds a Contents menu to the menubar.
+  "If non-nil then WoMan adds a Contents menu to the menubar.
 It does this by calling `imenu-add-to-menubar'.  Default is nil."
   :type 'boolean
   :group 'woman-interface)
 
 (defcustom woman-imenu-title "CONTENTS"
-  "*The title to use if WoMan adds a Contents menu to the menubar.
+  "The title to use if WoMan adds a Contents menu to the menubar.
 Default is \"CONTENTS\"."
   :type 'string
   :group 'woman-interface)
@@ -741,13 +741,13 @@ Default is \"CONTENTS\"."
   ;; `woman-use-topic-at-point' may be let-bound when woman is loaded,
   ;; in which case its global value does not get defined.
   ;; `woman-file-name' sets it to this value if it is unbound.
-  "*Default value for `woman-use-topic-at-point'."
+  "Default value for `woman-use-topic-at-point'."
   :type '(choice (const :tag "Yes" t)
                 (const :tag "No" nil))
   :group 'woman-interface)
 
 (defcustom woman-use-topic-at-point woman-use-topic-at-point-default
-  "*Control use of the word at point as the default topic.
+  "Control use of the word at point as the default topic.
 If non-nil the `woman' command uses the word at point automatically,
 without interactive confirmation, if it exists as a topic."
   :type '(choice (const :tag "Yes" t)
@@ -778,7 +778,7 @@ Used as :set cookie by Customize when customizing the user options
 
 (defcustom woman-uncompressed-file-regexp
   "\\.\\([0-9lmnt]\\w*\\)"             ; disallow no extension
-  "*Do not change this unless you are sure you know what you are doing!
+  "Do not change this unless you are sure you know what you are doing!
 Regexp used to select man source files (ignoring any compression extension).
 
 The SysV standard man pages use two character suffixes, and this is
@@ -793,7 +793,7 @@ MUST NOT end with any kind of string terminator such as $ or \\'."
 
 (defcustom woman-file-compression-regexp
   "\\.\\(g?z\\|bz2\\)\\'"
-  "*Do not change this unless you are sure you know what you are doing!
+  "Do not change this unless you are sure you know what you are doing!
 Regexp used to match compressed man file extensions for which
 decompressors are available and handled by auto-compression mode,
 e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\)\\\\'\" for `gzip' or `bzip2'.
@@ -809,7 +809,7 @@ Should begin with \\. and end with \\' and MUST NOT be optional."
 (defcustom woman-use-own-frame         ; window-system
   (or (and (fboundp 'display-graphic-p) (display-graphic-p)) ; Emacs 21
       (memq window-system '(x w32)))   ; Emacs 20
-  "*If non-nil then use a dedicated frame for displaying WoMan windows.
+  "If non-nil then use a dedicated frame for displaying WoMan windows.
 Only useful when run on a graphic display such as X or MS-Windows."
   :type 'boolean
   :group 'woman-interface)
@@ -823,37 +823,37 @@ Only useful when run on a graphic display such as X or MS-Windows."
   :group 'woman)
 
 (defcustom woman-fill-column 65
-  "*Right margin for formatted text -- default is 65."
+  "Right margin for formatted text -- default is 65."
   :type 'integer
   :group 'woman-formatting)
 
 (defcustom woman-fill-frame nil
   ;; Based loosely on a suggestion by Theodore Jump:
-  "*If non-nil then most of the window width is used."
+  "If non-nil then most of the window width is used."
   :type 'boolean
   :group 'woman-formatting)
 
 (defcustom woman-default-indent 5
-  "*Default prevailing indent set by -man macros -- default is 5.
+  "Default prevailing indent set by -man macros -- default is 5.
 Set this variable to 7 to emulate GNU man formatting."
   :type 'integer
   :group 'woman-formatting)
 
 (defcustom woman-bold-headings t
-  "*If non-nil then embolden section and subsection headings.  Default is t.
+  "If non-nil then embolden section and subsection headings.  Default is t.
 Heading emboldening is NOT standard `man' behavior."
   :type 'boolean
   :group 'woman-formatting)
 
 (defcustom woman-ignore t
-  "*If non-nil then unrecognized requests etc. are ignored.  Default is t.
+  "If non-nil then unrecognized requests etc. are ignored.  Default is t.
 This gives the standard ?roff behavior.  If nil then they are left in
 the buffer, which may aid debugging."
   :type 'boolean
   :group 'woman-formatting)
 
 (defcustom woman-preserve-ascii t
-  "*If non-nil, preserve ASCII characters in the WoMan buffer.
+  "If non-nil, preserve ASCII characters in the WoMan buffer.
 Otherwise, to save time, some backslashes and spaces may be
 represented differently (as the values of the variables
 `woman-escaped-escape-char' and `woman-unpadded-space-char'
@@ -865,7 +865,7 @@ buffer text is searched, copied or saved to a file."
   :group 'woman-formatting)
 
 (defcustom woman-emulation 'nroff
-  "*WoMan emulation, currently either nroff or troff.  Default is nroff.
+  "WoMan emulation, currently either nroff or troff.  Default is nroff.
 Troff emulation is experimental and largely untested.
 \(Add groff later?)"
   :type '(choice (const nroff) (const troff))
@@ -884,7 +884,7 @@ Troff emulation is experimental and largely untested.
   (or (and (fboundp 'display-color-p) (display-color-p))
       (and (fboundp 'display-graphic-p) (display-graphic-p))
       (x-display-color-p))
-  "*If non-nil then WoMan assumes that face support is available.
+  "If non-nil then WoMan assumes that face support is available.
 It defaults to a non-nil value if the display supports either colors
 or different fonts."
   :type 'boolean
@@ -955,11 +955,10 @@ This is usually either black or white."
   (let (symbol-fonts)
     ;; With NTEmacs 20.5, the PATTERN option to `x-list-fonts' does
     ;; not seem to work and fonts may be repeated, so ...
-    (while fonts
-      (and (string-match "-Symbol-" (car fonts))
-          (not (member (car fonts) symbol-fonts))
-          (setq symbol-fonts (cons (car fonts) symbol-fonts)))
-      (setq fonts (cdr fonts)))
+    (dolist (font fonts)
+      (and (string-match "-Symbol-" font)
+          (not (member font symbol-fonts))
+          (setq symbol-fonts (cons font symbol-fonts))))
     symbol-fonts))
 
 (when woman-font-support
@@ -969,12 +968,12 @@ This is usually either black or white."
   ;; avoid unnecessarily upsetting the line spacing in NTEmacs 20.5!
 
   (defcustom woman-use-extended-font t
-    "*If non-nil then may use non-ASCII characters from the default font."
+    "If non-nil then may use non-ASCII characters from the default font."
     :type 'boolean
     :group 'woman-faces)
 
   (defcustom woman-use-symbol-font nil
-    "*If non-nil then may use the symbol font.
+    "If non-nil then may use the symbol font.
 It is off by default, mainly because it may change the line spacing
 \(in NTEmacs 20.5)."
     :type 'boolean
@@ -986,7 +985,7 @@ It is off by default, mainly because it may change the line spacing
     "Symbol font(s), preferably same size as default when WoMan was loaded.")
 
   (defcustom woman-symbol-font (car woman-symbol-font-list)
-    "*A string describing the symbol font to use for special characters.
+    "A string describing the symbol font to use for special characters.
 It should be compatible with, and the same size as, the default text font.
 Under MS-Windows, the default is
   \"-*-Symbol-normal-r-*-*-*-*-96-96-p-*-ms-symbol\"."
@@ -1199,10 +1198,9 @@ Return t if the file exists, nil otherwise."
   "Save the directory and topic cache.
 It is saved to the file named by the variable `woman-cache-filename'."
   (if woman-cache-filename
-      (save-excursion                  ; to restore current buffer
+      (with-current-buffer (generate-new-buffer "WoMan tmp buffer")
        ;; Make a temporary buffer; name starting with space "hides" it.
-       (let ((standard-output
-              (set-buffer (generate-new-buffer "WoMan tmp buffer")))
+       (let ((standard-output (current-buffer))
              (backup-inhibited t))
          ;; (switch-to-buffer standard-output t) ; only for debugging
          (buffer-disable-undo standard-output)
@@ -1344,10 +1342,8 @@ Ignore any paths that are unreadable or not directories."
   ;; Allow each path to be a single string or a list of strings:
   (if (not (listp woman-manpath)) (setq woman-manpath (list woman-manpath)))
   (if (not (listp woman-path)) (setq woman-path (list woman-path)))
-  (let (dir head dirs path)
-    (while woman-manpath
-      (setq dir (car woman-manpath)
-           woman-manpath (cdr woman-manpath))
+  (let (head dirs path)
+    (dolist (dir woman-manpath)
       (when (consp dir)
        (unless path
          (setq path (split-string (getenv "PATH") path-separator t)))
@@ -1361,9 +1357,7 @@ Ignore any paths that are unreadable or not directories."
          (setq dir (woman-canonicalize-dir dir)
                dirs (nconc dirs (directory-files
                                  dir t woman-manpath-man-regexp)))))
-    (while woman-path
-      (setq dir (car woman-path)
-           woman-path (cdr woman-path))
+    (dolist (dir woman-path)
       (if (or (null dir)
              (null (setq dir (woman-canonicalize-dir dir)
                          head (file-name-directory dir)))
@@ -1455,22 +1449,20 @@ Also make each path-info component into a list.
 \(Note that this function changes the value of ALIST.)"
   ;; Replaces unreadably "optimized" O(n^2) implementation.
   ;; Instead we use sorting to merge stuff efficiently.  -- dak
-  (let (elt newalist)
+  (let (newalist)
     ;; Sort list into reverse order
     (setq alist (sort alist (lambda(x y) (string< (car y) (car x)))))
     ;; merge duplicate keys.
     (if (> woman-cache-level 1)
-       (while alist
-         (setq elt (pop alist))
+       (dolist (elt alist)
          (if (equal (car elt) (caar newalist))
              (unless (member (cdr elt) (cdar newalist))
                (setcdr (car newalist) (cons (cdr elt)
                                             (cdar newalist))))
            (setcdr elt (list (cdr elt)))
            (push elt newalist)))
-    ;; woman-cache-level = 1 => elements are single-element lists ...
-      (while alist
-       (setq elt (pop alist))
+      ;; woman-cache-level = 1 => elements are single-element lists ...
+      (dolist (elt alist)
        (unless (equal (car elt) (caar newalist))
          (push elt newalist))))
     newalist))
@@ -1496,10 +1488,9 @@ Also make each path-info component into a list.
        ;; Use cached path-info to locate files for each topic:
        (let ((path-info (cdr (assoc topic topics)))
              filename)
-         (while path-info
-           (setq dir (nth (car (car path-info)) path)
-                 filename (car (cdr (car path-info)))
-                 path-info (cdr path-info)
+         (dolist (elt path-info)
+           (setq dir (nth (car elt) path)
+                 filename (car (cdr elt))
                  files (nconc files
                               ;; Find the actual file name:
                               (if filename
@@ -1534,7 +1525,7 @@ Also make each path-info component into a list.
   "Define dired keys to run WoMan according to `woman-dired-keys'."
   (if woman-dired-keys
       (if (listp woman-dired-keys)
-         (mapcar 'woman-dired-define-key woman-dired-keys)
+         (mapc 'woman-dired-define-key woman-dired-keys)
        (woman-dired-define-key-maybe "w")
        (woman-dired-define-key-maybe "W")))
   (define-key-after (lookup-key dired-mode-map [menu-bar immediate])
@@ -1648,7 +1639,10 @@ Do not call directly!"
        (select-frame
         (or (and (frame-live-p woman-frame) woman-frame)
             (setq woman-frame (make-frame)))))
-    (switch-to-buffer (get-buffer-create bufname))
+    (set-buffer (get-buffer-create bufname))
+    (condition-case nil
+        (switch-to-buffer (current-buffer))
+      (error (pop-to-buffer (current-buffer))))
     (buffer-disable-undo)
     (setq buffer-read-only nil)
     (erase-buffer)                     ; NEEDED for reformat
@@ -1767,21 +1761,21 @@ Leave point at end of new text.  Return length of inserted text."
 \f
 ;;; Major mode (Man) interface:
 
-(defvar woman-mode-map nil "Keymap for woman mode.")
+(defvar woman-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map Man-mode-map)
 
-(unless woman-mode-map
-  (setq woman-mode-map (make-sparse-keymap))
-  (set-keymap-parent woman-mode-map Man-mode-map)
+    (define-key map "R" 'woman-reformat-last-file)
+    (define-key map "w" 'woman)
+    (define-key map "\en" 'WoMan-next-manpage)
+    (define-key map "\ep" 'WoMan-previous-manpage)
+    (define-key map [M-mouse-2] 'woman-follow-word)
 
-  (define-key woman-mode-map "R" 'woman-reformat-last-file)
-  (define-key woman-mode-map "w" 'woman)
-  (define-key woman-mode-map "\en" 'WoMan-next-manpage)
-  (define-key woman-mode-map "\ep" 'WoMan-previous-manpage)
-  (define-key woman-mode-map [M-mouse-2] 'woman-follow-word)
-
-  ;; We don't need to call `man' when we are in `woman-mode'.
-  (define-key woman-mode-map [remap man] 'woman)
-  (define-key woman-mode-map [remap man-follow] 'woman-follow))
+    ;; We don't need to call `man' when we are in `woman-mode'.
+    (define-key map [remap man] 'woman)
+    (define-key map [remap man-follow] 'woman-follow)
+    map)
+  "Keymap for woman mode.")
 
 (defun woman-follow (topic)
   "Get a Un*x manual page of the item under point and put it in a buffer."
@@ -1916,7 +1910,7 @@ See `Man-mode' for additional details."
   ;; necessary to avoid re-installing the same imenu:
   (setq woman-imenu-done nil)
   (if woman-imenu (woman-imenu))
-  (let (buffer-read-only)
+  (let ((inhibit-read-only t))
     (Man-highlight-references 'WoMan-xref-man-page))
   (set-buffer-modified-p nil)
   (run-mode-hooks 'woman-mode-hook))
@@ -1953,14 +1947,10 @@ Optional argument REDRAW, if non-nil, forces mode line to be updated."
     (setq apropos-accumulator
          (apropos-internal "woman"
                            (lambda (symbol)
-                             (or (commandp symbol)
-                                 (user-variable-p symbol)))))
-    ;; Filter out any inhibited symbols:
-    (let ((tem apropos-accumulator))
-      (while tem
-       (if (get (car tem) 'apropos-inhibit)
-           (setq apropos-accumulator (delq (car tem) apropos-accumulator)))
-       (setq tem (cdr tem))))
+                             (and
+                              (or (commandp symbol)
+                                  (user-variable-p symbol))
+                              (not (get symbol 'apropos-inhibit))))))
     ;; Find documentation strings:
     (let ((p apropos-accumulator)
          doc symbol)
@@ -2091,17 +2081,14 @@ alist in `woman-buffer-alist' and return nil."
   (char-to-string woman-unpadded-space-char)
   "Internal string representation of unpadded space characters.")
 
-(defvar woman-syntax-table nil
+(defvar woman-syntax-table
+  (let ((st (make-syntax-table)))
+    ;; The following internal chars must NOT have whitespace syntax:
+    (modify-syntax-entry woman-unpadded-space-char "." st)
+    (modify-syntax-entry woman-escaped-escape-char "." st)
+    st)
   "Syntax table to support special characters used internally by WoMan.")
 
-(if woman-syntax-table
-    ()
-  (setq woman-syntax-table (make-syntax-table))
-  ;; The following internal chars must NOT have whitespace syntax:
-  (modify-syntax-entry woman-unpadded-space-char "." woman-syntax-table)
-  (modify-syntax-entry woman-escaped-escape-char "." woman-syntax-table)
-  )
-
 (defun woman-set-buffer-display-table ()
   "Set up a display table for a WoMan buffer.
 This display table is used for displaying internal special characters, but
@@ -2169,14 +2156,14 @@ To be called on original buffer and any .so insertions."
   (goto-char from)
   ;; .eo turns off escape character processing
   (while (re-search-forward "\\(\\\\[\\e]\\)\\|^\\.eo" to t) ; \\
-    (if (match-string 1)
+    (if (match-beginning 1)
        (replace-match woman-escaped-escape-string t t)
       (woman-delete-whole-line)
       ;; .ec turns on escape character processing (and sets the
       ;; escape character to its argument, if any, which I'm ignoring
       ;; for now!)
       (while (and (re-search-forward "\\(\\\\\\)\\|^\\.ec" to t) ; \
-                 (match-string 1))
+                 (match-beginning 1))
        (replace-match woman-escaped-escape-string t t))
       ;; ***** Need test for .ec arg and warning here! *****
       (woman-delete-whole-line)))
@@ -2190,15 +2177,13 @@ To be called on original buffer and any .so insertions."
 (defun woman-non-underline-faces ()
   "Prepare non-underlined versions of underlined faces."
   (let ((face-list (face-list)))
-    (while face-list
-      (let* ((face (car face-list))
-            (face-name (symbol-name face)))
+    (dolist (face face-list)
+      (let ((face-name (symbol-name face)))
        (if (and (string-match "\\`woman-" face-name)
                 (face-underline-p face))
            (let ((face-no-ul (intern (concat face-name "-no-ul"))))
              (copy-face face face-no-ul)
-             (set-face-underline-p face-no-ul nil))))
-      (setq face-list (cdr face-list)))))
+             (set-face-underline-p face-no-ul nil)))))))
 
 ;; Preprocessors
 ;; =============
@@ -2449,7 +2434,7 @@ Preserves location of `point'."
            to t)
       (let ((from (match-beginning 0))
            (delim (regexp-quote (match-string 1)))
-           (absolute (match-string 2)) ; absolute position?
+           (absolute (match-beginning 2)) ; absolute position?
            (N (woman-parse-numeric-arg)) ; distance
            to
            msg)                        ; for warning
@@ -2628,7 +2613,7 @@ If DELETE is non-nil then delete from point."
                       ;; Interpret bogus `el \}' as `el \{',
                       ;; especially for Tcl/Tk man pages:
                       "\\(\\\\{\\|el[ \t]*\\\\}\\)\\|\\(\n[.']\\)?[ \t]*\\\\}[ \t]*")
-                     (match-string 1))
+                     (match-beginning 1))
               (re-search-forward "\\\\}"))
             (delete-region (if delete from (match-beginning 0)) (point))
             (if (looking-at "^$") (delete-char 1))
@@ -2731,11 +2716,9 @@ If DELETE is non-nil then delete from point."
 (defun woman0-rename ()
   "Effect renaming required by .rn requests."
   ;; For now, do this backwards AFTER all macro expansion.
-  (while woman0-rename-alist
-    (let* ((new (car woman0-rename-alist))
-          (old (cdr new))
-          (new (car new)))
-      (setq woman0-rename-alist (cdr woman0-rename-alist))
+  (dolist (new woman0-rename-alist)
+    (let ((old (cdr new))
+          (new (car new)))
       (goto-char (point-min))
       (setq new (concat "^[.'][ \t]*" (regexp-quote new)))
       (setq old (concat "." old))
@@ -2752,7 +2735,7 @@ Replaces || by |, but | by \, where | denotes the internal escape."
   (let (start)
     (while (setq start (string-match woman-unescape-regex macro start))
       (setq macro
-           (if (match-string 1 macro)
+           (if (match-beginning 1)
                (replace-match "" t t macro 1)
              (replace-match "\\" t t macro))
            start (1+ start)))
@@ -2875,7 +2858,7 @@ interpolated by `\*x' and `\*(xx' escapes."
   (while
       ;; Find .ds requests and \* escapes:
       (re-search-forward "\\(^[.'][ \t]*ds\\)\\|\\\\\\*" to t)
-    (cond ((match-string 1)            ; .ds
+    (cond ((match-beginning 1)         ; .ds
           (skip-chars-forward " \t")
           (if (eolp)                   ; ignore if no argument
               ()
@@ -3004,7 +2987,7 @@ Set NEWTEXT in face FACE if specified."
                 ((cadr replacement)    ; Use ASCII simulation
                  (woman-replace-match (cadr replacement)))))
        (WoMan-warn (concat "Special character "
-                           (if (match-string 1) "\\(%s" "\\[%s]")
+                           (if (match-beginning 1) "\\(%s" "\\[%s]")
                            " not interpolated!") name)
        (if woman-ignore (woman-delete-match 0))))
     ))
@@ -3016,8 +2999,7 @@ together with the corresponding glyphs from the default and symbol fonts.
 Useful for constructing the alist variable `woman-special-characters'."
   (interactive)
   (with-output-to-temp-buffer "*WoMan Extended Font Map*"
-    (save-excursion
-      (set-buffer standard-output)
+    (with-current-buffer standard-output
       (let ((i 32))
        (while (< i 256)
          (insert (format "\\%03o " i) (string i) " " (string i))
@@ -3238,7 +3220,7 @@ If optional arg CONCAT is non-nil then join arguments."
     (setq c (concat "\\(" c "\\)\\|^[.'][ \t]*hc"))
     (save-excursion
       (while (and (re-search-forward c nil t)
-                 (match-string 1))
+                 (match-beginning 1))
        (delete-char -1)))
     ))
 
@@ -3315,7 +3297,7 @@ If optional arg CONCAT is non-nil then join arguments."
         "^[.'][ \t]*\\(\\(\\ft\\)\\|\\(.P\\)\\)\\|\\(\\\\f\\)" nil 1)
       (let (font beg notfont fescape)
        ;; Match font indicator and leave point at end of sequence:
-       (cond ((match-string 2)
+       (cond ((match-beginning 2)
               ;; .ft request found
               (setq beg (match-beginning 0))
               (skip-chars-forward " \t")
@@ -3323,10 +3305,10 @@ If optional arg CONCAT is non-nil then join arguments."
                   (setq font previous-font)
                 (looking-at "[^ \t\n]+"))
               (forward-line))          ; end of control line and \n
-             ((match-string 3)
+             ((match-beginning 3)
               ;; Macro that resets font found
               (setq font 'default))
-             ((match-string 4)
+             ((match-beginning 4)
               ;; \f escape found
               (setq beg (match-beginning 0)
                      fescape t)
@@ -3758,7 +3740,7 @@ expression in parentheses.  Leaves point after the value."
       (while
          (and
           (setq to (re-search-forward "\\(\\\\c\\)?\n[.']" nil t))
-          (match-string 1)
+          (match-beginning 1)
           (looking-at "br"))
        (goto-char (match-beginning 0))
        (woman-delete-line 2)))
@@ -3920,12 +3902,10 @@ Leave 1 blank line.  Format paragraphs upto TO."
                ((eq c ?\t)             ; skip
                 (if (eq (following-char) ?\t)
                     (forward-char)     ; both tabs, just skip
-                  (let ((i woman-tab-width))
-                    (while (> i 0)
-                      (if (eolp)
-                          (insert ?\ ) ; extend line
-                        (forward-char)) ; skip
-                      (setq i (1- i)))
+                  (dotimes (i woman-tab-width)
+                     (if (eolp)
+                         (insert ?\ )  ; extend line
+                       (forward-char)) ; skip
                     )))
                (t
                 (if (or (eq (following-char) ?\ ) ; overwrite OK
@@ -4312,7 +4292,7 @@ Format paragraphs upto TO.  Set prevailing indent to I."
                  ;; Necessary to avoid spaces inheriting underlines.
                  ;; Cannot simply delete (current-column) whitespace
                  ;; characters because some may be tabs!
-                 (while (> i 0) (insert ? ) (setq i (1- i)))))
+                 (insert-char ?\s i)))
           (goto-char to)               ; necessary ???
           ))
     ))
@@ -4468,9 +4448,7 @@ tab stop columns or pairs (COLUMN . TYPE) where TYPE is R or C."
                    n (- (if n (1- n) eol) (point))
                    tab (- tab (if (eq type ?C) (/ n 2) n))) )
          (setq n (- tab (current-column)))
-         (while (> n 0)
-           (insert ?\ )
-           (setq n (1- n))))
+         (insert-char ?\s n))
       (insert ?\ ))))
 
 (defun woman2-DT (to)
@@ -4571,8 +4549,7 @@ Format paragraphs upto TO."
 (defun WoMan-log-begin ()
   "Log the beginning of formatting in *WoMan-Log*."
   (let ((WoMan-current-buffer (buffer-name)))
-    (save-excursion
-      (set-buffer (get-buffer-create "*WoMan-Log*"))
+    (with-current-buffer (get-buffer-create "*WoMan-Log*")
       (or (eq major-mode 'view-mode) (view-mode 1))
       (setq buffer-read-only nil)
       (goto-char (point-max))
@@ -4615,8 +4592,7 @@ with the message."
   "Log a message STRING in *WoMan-Log*.
 If optional argument END is non-nil then make buffer read-only after
 logging the message."
-  (save-excursion
-    (set-buffer (get-buffer-create "*WoMan-Log*"))
+  (with-current-buffer (get-buffer-create "*WoMan-Log*")
     (setq buffer-read-only nil)
     (goto-char (point-max))
     (or end (insert "  "))  (insert string "\n")
@@ -4635,5 +4611,5 @@ logging the message."
 
 (provide 'woman)
 
-;;; arch-tag: eea35e90-552f-4712-a94b-d9ffd3db7651
+;; arch-tag: eea35e90-552f-4712-a94b-d9ffd3db7651
 ;;; woman.el ends here
index 08fca38aab2e21b0cc668fd1b404b8b14b906e9f..f6f3b75dc0795f0fd44123f0808d3b3b58234456 100644 (file)
@@ -121,14 +121,15 @@ any protocol specific data.")
 
 (defun x-dnd-init-frame (&optional frame)
   "Setup drag and drop for FRAME (i.e. create appropriate properties)."
-  (x-register-dnd-atom "DndProtocol" frame)
-  (x-register-dnd-atom "_MOTIF_DRAG_AND_DROP_MESSAGE" frame)
-  (x-register-dnd-atom "XdndEnter" frame)
-  (x-register-dnd-atom "XdndPosition" frame)
-  (x-register-dnd-atom "XdndLeave" frame)
-  (x-register-dnd-atom "XdndDrop" frame)
-  (x-dnd-init-xdnd-for-frame frame)
-  (x-dnd-init-motif-for-frame frame))
+  (when (eq 'x (window-system frame))
+    (x-register-dnd-atom "DndProtocol" frame)
+    (x-register-dnd-atom "_MOTIF_DRAG_AND_DROP_MESSAGE" frame)
+    (x-register-dnd-atom "XdndEnter" frame)
+    (x-register-dnd-atom "XdndPosition" frame)
+    (x-register-dnd-atom "XdndLeave" frame)
+    (x-register-dnd-atom "XdndDrop" frame)
+    (x-dnd-init-xdnd-for-frame frame)
+    (x-dnd-init-motif-for-frame frame)))
 
 (defun x-dnd-get-state-cons-for-frame (frame-or-window)
   "Return the entry in x-dnd-current-state for a frame or window."
@@ -171,7 +172,7 @@ FRAME-OR-WINDOW is the frame or window that the mouse is over."
 WINDOW is the window the mouse is over.  ACTION is the suggested
 action from the source.  If nothing has changed, return the last
 action and type we got from `x-dnd-test-function'."
-  (let ((buffer (when (and (windowp window) (window-live-p window))
+  (let ((buffer (when (window-live-p window)
                  (window-buffer window)))
        (current-state (x-dnd-get-state-for-frame window)))
     (when (or (not (equal buffer (aref current-state 0)))
@@ -206,9 +207,7 @@ EXTRA-DATA is data needed for a specific protocol."
     (when types (aset current-state 2 types))
     (when extra-data (aset current-state 6 extra-data))
     (aset current-state 1 window)
-    (aset current-state 0 (if (and (windowp window)
-                                  (window-live-p window))
-                             (window-buffer window) nil))
+    (aset current-state 0 (and (window-live-p window) (window-buffer window)))
     (setcdr (x-dnd-get-state-cons-for-frame window) current-state)))
 
 
@@ -319,7 +318,7 @@ nil if not."
         (action (aref state 5))
         (w (posn-window (event-start event))))
     (when handler
-      (if (and (windowp w) (window-live-p w)
+      (if (and (window-live-p w)
               (not (window-minibuffer-p w))
               (not (window-dedicated-p w)))
          ;; If dropping in an ordinary window which we could use,
index d14c9c85cd34182d4e3f08a80c51f4c918ae4454..15aebb08ab262bf78b4f6f7b7d014879bce35b2b 100644 (file)
@@ -43,6 +43,9 @@
 
 ;;; Code:
 
+(defvar xterm-mouse-debug-buffer nil)
+
+;; XXX Perhaps this should be terminal-local instead. --lorentey
 (define-key function-key-map "\e[M" 'xterm-mouse-translate)
 
 (defvar xterm-mouse-last)
                       (list (intern (format "drag-mouse-%d"
                                             (+ 1 xterm-mouse-last)))
                             down-data click-data)))))
+           (if xterm-mouse-debug-buffer
+               (print unread-command-events xterm-mouse-debug-buffer))
            (if (and (symbolp down-where)
                     (consp down-where))
                (vector (list down-where down-data) down)
              (vector down))))))))
 
-(defvar xterm-mouse-x 0
-  "Position of last xterm mouse event relative to the frame.")
-
-(defvar xterm-mouse-y 0
-  "Position of last xterm mouse event relative to the frame.")
+;; These two variables have been converted to terminal parameters.
+;;
+;;(defvar xterm-mouse-x 0
+;;  "Position of last xterm mouse event relative to the frame.")
+;;
+;;(defvar xterm-mouse-y 0
+;;  "Position of last xterm mouse event relative to the frame.")
 
 (defvar xt-mouse-epoch nil)
 
 
 (defun xterm-mouse-position-function (pos)
   "Bound to `mouse-position-function' in XTerm mouse mode."
-  (setcdr pos (cons xterm-mouse-x xterm-mouse-y))
+  (when (terminal-parameter nil 'xterm-mouse-x)
+    (setcdr pos (cons (terminal-parameter nil 'xterm-mouse-x)
+                     (terminal-parameter nil 'xterm-mouse-y))))
   pos)
 
 ;; read xterm sequences above ascii 127 (#x7f)
             (fdiff (- f (* 1.0 maxwrap dbig))))
        (+ (truncate fdiff) (* maxwrap dbig))))))
 
-
 (defun xterm-mouse-event ()
   "Convert XTerm mouse event to Emacs mouse event."
   (let* ((type (- (xterm-mouse-event-read) #o40))
         ;; Emulate timestamp information.  This is accurate enough
         ;; for default value of mouse-1-click-follows-link (450msec).
         (timestamp (xterm-mouse-truncate-wrap
-                    (* 1000
-                       (- (float-time)
-                          (or xt-mouse-epoch
-                              (setq xt-mouse-epoch (float-time)))))))
-        (mouse (intern
+                     (* 1000
+                        (- (float-time)
+                           (or xt-mouse-epoch
+                               (setq xt-mouse-epoch (float-time)))))))
+         (mouse (intern
                 ;; For buttons > 3, the release-event looks
                 ;; differently (see xc/programs/xterm/button.c,
                 ;; function EditorButton), and there seems to come in
          (left (nth 0 ltrb))
          (top (nth 1 ltrb)))
 
-    (setq xterm-mouse-x x
-         xterm-mouse-y y)
+    (set-terminal-parameter nil 'xterm-mouse-x x)
+    (set-terminal-parameter nil 'xterm-mouse-y y)
     (setq
      last-input-event
      (list mouse
@@ -199,27 +207,67 @@ down the SHIFT key while pressing the mouse button."
   :global t :group 'mouse
   (if xterm-mouse-mode
       ;; Turn it on
-      (unless window-system
+      (progn
+       ;; Frame creation and deletion.
+       (add-hook 'after-make-frame-functions 
+                 'turn-on-xterm-mouse-tracking-on-terminal)
+       (add-hook 'delete-frame-functions 'xterm-mouse-handle-delete-frame)
+       
+       ;; Restore normal mouse behaviour outside Emacs.
+        (add-hook 'suspend-tty-functions
+                 'turn-off-xterm-mouse-tracking-on-terminal)
+       (add-hook 'resume-tty-functions 
+                 'turn-on-xterm-mouse-tracking-on-terminal)
+       (add-hook 'suspend-hook 'turn-off-xterm-mouse-tracking)
+       (add-hook 'suspend-resume-hook 'turn-on-xterm-mouse-tracking)
+       (add-hook 'kill-emacs-hook 'turn-off-xterm-mouse-tracking)
        (setq mouse-position-function #'xterm-mouse-position-function)
        (turn-on-xterm-mouse-tracking))
     ;; Turn it off
+    (remove-hook 'after-make-frame-functions 
+                'turn-on-xterm-mouse-tracking-on-terminal)
+    (remove-hook 'delete-frame-functions 'xterm-mouse-handle-delete-frame)
+    (remove-hook 'suspend-tty-functions 
+                'turn-off-xterm-mouse-tracking-on-terminal)
+    (remove-hook 'resume-tty-functions 
+                'turn-on-xterm-mouse-tracking-on-terminal)
+    (remove-hook 'suspend-hook 'turn-off-xterm-mouse-tracking)
+    (remove-hook 'suspend-resume-hook 'turn-on-xterm-mouse-tracking)
+    (remove-hook 'kill-emacs-hook 'turn-off-xterm-mouse-tracking)
     (turn-off-xterm-mouse-tracking 'force)
     (setq mouse-position-function nil)))
 
 (defun turn-on-xterm-mouse-tracking ()
   "Enable Emacs mouse tracking in xterm."
-  (if xterm-mouse-mode
-      (send-string-to-terminal "\e[?1000h")))
+  (dolist (f (frame-list))
+    (when (eq t (frame-live-p f))
+      (with-selected-frame f
+       (when xterm-mouse-mode
+         (send-string-to-terminal "\e[?1000h"))))))
 
 (defun turn-off-xterm-mouse-tracking (&optional force)
   "Disable Emacs mouse tracking in xterm."
-  (if (or force xterm-mouse-mode)
-      (send-string-to-terminal "\e[?1000l")))
-
-;; Restore normal mouse behaviour outside Emacs.
-(add-hook 'suspend-hook 'turn-off-xterm-mouse-tracking)
-(add-hook 'suspend-resume-hook 'turn-on-xterm-mouse-tracking)
-(add-hook 'kill-emacs-hook 'turn-off-xterm-mouse-tracking)
+  (dolist (f (frame-list))
+    (when (eq t (frame-live-p f))
+      (with-selected-frame f
+       (when (or force xterm-mouse-mode)
+         (send-string-to-terminal "\e[?1000l"))))))
+
+(defun turn-on-xterm-mouse-tracking-on-terminal (terminal)
+  "Enable xterm mouse tracking on TERMINAL."
+  (when (and xterm-mouse-mode (eq t (terminal-live-p terminal)))
+    (send-string-to-terminal "\e[?1000h" terminal)))
+
+(defun turn-off-xterm-mouse-tracking-on-terminal (terminal)
+  "Disable xterm mouse tracking on TERMINAL."
+  (when (and xterm-mouse-mode (eq t (terminal-live-p terminal)))
+    (send-string-to-terminal "\e[?1000l" terminal)))
+
+(defun xterm-mouse-handle-delete-frame (frame)
+  "Turn off xterm mouse tracking if FRAME is the last frame on its device."
+  (when (and (eq t (frame-live-p frame))
+            (<= 1 (length (frames-on-display-list (frame-terminal frame)))))
+    (turn-off-xterm-mouse-tracking-on-terminal frame)))
 
 (provide 'xt-mouse)
 
index 1ff2a140945478d19a12337f996e3e9ff3ba3f9e..75597a9549e66d27a10d86ee5e9365661e16d421 100644 (file)
@@ -1,9 +1,18 @@
+2007-08-29  Karoly Lorentey  <lorentey@elte.hu>
+
+       * xlwmenu.c (XlwMenuRealize): Ignore X errors while setting up
+       cursor shape.
+
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
        * Relicense all FSF files to GPLv3 or later.
 
        * COPYING: Switch to GPLv3.
 
+2007-06-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * lwlib-Xaw.c, lwlib.c: Link to xaw3d if available.
+
 2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * Version 22.1 released.
index be1990ed6fe67b8a2396852be4d6643737017946..4ef2d3fcb67cd83c5c5fc51847f7bf11ef4be0a0 100644 (file)
@@ -35,12 +35,21 @@ Boston, MA 02110-1301, USA.  */
 #include <X11/CoreP.h>
 #include <X11/Shell.h>
 
+#ifdef HAVE_XAW3D
+#include <X11/Xaw3d/Scrollbar.h>
+#include <X11/Xaw3d/Paned.h>
+#include <X11/Xaw3d/Dialog.h>
+#include <X11/Xaw3d/Form.h>
+#include <X11/Xaw3d/Command.h>
+#include <X11/Xaw3d/Label.h>
+#else /* !HAVE_XAW3D */
 #include <X11/Xaw/Scrollbar.h>
 #include <X11/Xaw/Paned.h>
 #include <X11/Xaw/Dialog.h>
 #include <X11/Xaw/Form.h>
 #include <X11/Xaw/Command.h>
 #include <X11/Xaw/Label.h>
+#endif /* HAVE_XAW3D */
 
 #include <X11/Xatom.h>
 
index bd5d9adbf9dfe4db851b26630963de929681ef87..542b3ba5a60e50ce83fc9ac876ed3f44c5f2fd49 100644 (file)
@@ -48,7 +48,11 @@ Boston, MA 02110-1301, USA.  */
 #endif /* not USE_MOTIF && USE_LUCID */
 #endif
 #if defined (USE_XAW)
+#ifdef HAVE_XAW3D
+#include <X11/Xaw3d/Paned.h>
+#else /* !HAVE_XAW3D */
 #include <X11/Xaw/Paned.h>
+#endif /* HAVE_XAW3D */
 #include "lwlib-Xaw.h"
 #endif
 
index b3929d34a35a77f99fceacd89f0420556da32674..40a88fcced5fd0c00db7b96ada8c403b5b597cfd 100644 (file)
@@ -1844,7 +1844,16 @@ XlwMenuRealize (w, valueMask, attributes)
   xswa.save_under = True;
   xswa.cursor = mw->menu.cursor_shape;
   mask = CWSaveUnder | CWCursor;
+  /* I sometimes get random BadCursor errors while creating the first
+     frame on a display.  I can not find their reason, but they are
+     annoying so for now let's ignore any errors here.  -- lorentey  */
+#ifdef emacs
+  x_catch_errors (XtDisplay (w));
+#endif
   XChangeWindowAttributes (XtDisplay (w), XtWindow (w), mask, &xswa);
+#ifdef emacs
+  x_uncatch_errors ();
+#endif
 
   mw->menu.windows [0].window = XtWindow (w);
   mw->menu.windows [0].x = w->core.x;
index 742e200354b8b4ab59a7435a8d07538810afb537..326a844b6388d84a02e8e5d0eade11788f25a957 100644 (file)
@@ -1,3 +1,24 @@
+2007-09-13  Seiji Zenitani  <zenitani@mac.com>
+            Takanori Yamamoto  <takanori.yamamoto@gmail.com>
+            Kentaro Ohkouchi  <nanasess@fsm.ne.jp>
+
+       * Emacs.app/Contents/Info.plist: Add
+       filetype/extension entries for the document icon.
+       * Emacs.app/Contents/Resources/Emacs.icns: Update.
+       * Emacs.app/Contents/Resources/document.icns: New file.
+
+2007-08-29  Glenn Morris  <rgm@gnu.org>
+
+       * Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings:
+       * src/Emacs.r: Increase version to 23.0.50.
+
+2007-08-29  Karoly Lorentey  <lorentey@elte.hu>
+
+       * makefile.MPW (EmacsObjects): Add terminal.c.x.
+       (callproc.c.x): Add dependencies frame.h, termhooks.h.
+       ({Src}terminal.c.x): New.
+       (shortlisp): Add server.elc and termdev.elc.
+
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
        * Relicense all FSF files to GPLv3 or later.
        * INSTALL: Fix description about using colors in terminal.
        Fix typos (/Application -> /Applications).
 
+2007-04-26  Glenn Morris  <rgm@gnu.org>
+
+       * Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings:
+       * src/Emacs.r: Increase version to 22.1.50.
+
 2007-04-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * make-package (compver): Don't hardcode processor type.
index ed2c4a8bf7c6e868fbe023b916a1187b4d1a5411..5a36977218811ea2649657d9f5ff61d268013c33 100644 (file)
@@ -28,6 +28,428 @@ MA 02110-1301, USA.
        <string>English</string>
        <key>CFBundleDocumentTypes</key>
        <array>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>text</string>
+                               <string>txt</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Plain text document</string>
+                       <key>CFBundleTypeOSTypes</key>
+                       <array>
+                               <string>TEXT</string>
+                               <string>utxt</string>
+                       </array>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>html</string>
+                               <string>htm</string>
+                               <string>shtm</string>
+                               <string>shtml</string>
+                               <string>jsp</string>
+                               <string>asp</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>HTML document</string>
+                       <key>CFBundleTypeOSTypes</key>
+                       <array>
+                               <string>HTML</string>
+                       </array>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>css</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>CSS style sheet</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>xhtml</string>
+                               <string>xhtm</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>XHTML document</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>xml</string>
+                               <string>xsl</string>
+                               <string>xslt</string>
+                               <string>xbl</string>
+                               <string>xul</string>
+                               <string>rdf</string>
+                               <string>dtd</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>XML document</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>sgml</string>
+                               <string>sgm</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>SGML document</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>yml</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>YAML document</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>js</string>
+                               <string>JS</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>JavaScript script</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>php</string>
+                               <string>php3</string>
+                               <string>php4</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>PHP script</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>tcl</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Tcl script</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>rb</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Ruby script</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>py</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Python script</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>pl</string>
+                               <string>pm</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Perl script</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>sh</string>
+                               <string>csh</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Shell script</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>h</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>C Header Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>c</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>C Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>hh</string>
+                               <string>hp</string>
+                               <string>hpp</string>
+                               <string>hxx</string>
+                               <string>h++</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>C++ Header Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>cc</string>
+                               <string>cp</string>
+                               <string>cpp</string>
+                               <string>cxx</string>
+                               <string>c++</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>C++ Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>m</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Objective-C Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>s</string>
+                               <string>asm</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Assembly Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>java</string>
+                               <string>jav</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Java Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>f</string>
+                               <string>for</string>
+                               <string>f77</string>
+                               <string>f90</string>
+                               <string>f95</string>
+                               <string>f99</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Fortran Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>pas</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Pascal Source file</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>ada</string>
+                               <string>adb</string>
+                               <string>ads</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Ada Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>el</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Emacs Lisp Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>hs</string>
+                               <string>lhs</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Haskell Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>lua</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>Lua Source File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>pro</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>IDL Procedure File</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>gp</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>gnuplot file</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>bib</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>BibTeX document</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>CFBundleTypeExtensions</key>
+                       <array>
+                               <string>tex</string>
+                               <string>ltx</string>
+                               <string>ctx</string>
+                               <string>latex</string>
+                               <string>texi</string>
+                       </array>
+                       <key>CFBundleTypeIconFile</key>
+                       <string>document.icns</string>
+                       <key>CFBundleTypeName</key>
+                       <string>TeX document</string>
+                       <key>CFBundleTypeRole</key>
+                       <string>Editor</string>
+               </dict>
                <dict>
                        <key>CFBundleTypeExtensions</key>
                        <array>
index 25cc99fdd0e1742f9fa5b68c1526feb849c4c2a4..de187c1142dadea88c148071290f44d813d56a83 100644 (file)
Binary files a/mac/Emacs.app/Contents/Resources/Emacs.icns and b/mac/Emacs.app/Contents/Resources/Emacs.icns differ
index fc069b9bb47848efa243938c3587abb8388b4ea3..2d98a155d9e959edae353e2ff82f83b8aa3e978d 100644 (file)
@@ -1,5 +1,5 @@
 /* Localized versions of Info.plist keys */
 
 CFBundleName = "Emacs";
-CFBundleShortVersionString = "22.1.50";
-CFBundleGetInfoString = "22.1.50, Copyright (C) 2007 Free Software Foundation, Inc.";
+CFBundleShortVersionString = "23.0.50";
+CFBundleGetInfoString = "23.0.50, Copyright (C) 2007 Free Software Foundation, Inc.";
diff --git a/mac/Emacs.app/Contents/Resources/document.icns b/mac/Emacs.app/Contents/Resources/document.icns
new file mode 100644 (file)
index 0000000..e939746
Binary files /dev/null and b/mac/Emacs.app/Contents/Resources/document.icns differ
index 9c03942effaa8819b10cc321904f73e468c8ff57..47fc1f9abf2fd3999ec2a6694623cdea8170c1e8 100644 (file)
@@ -118,6 +118,7 @@ EmacsObjects = 
        "{Src}sysdep.c.x" Â¶
        "{Src}term.c.x" Â¶
        "{Src}termcap.c.x" Â¶
+       "{Src}terminal.c.x" Â¶
        "{Src}textprop.c.x" Â¶
        "{Src}tparam.c.x" Â¶
        "{Src}undo.c.x" Â¶
@@ -260,8 +261,8 @@ buildobj.lst 
        {CONFIG_H_GROUP} Â¶
        "{Includes}sys:types.h" Â¶
        "{Includes}sys:file.h" Â¶
-               "{Includes}sys:types.h" Â¶
-               "{Includes}sys:stat.h" Â¶
+       "{Includes}sys:types.h" Â¶
+       "{Includes}sys:stat.h" Â¶
        "{Src}lisp.h" Â¶
        "{Src}commands.h" Â¶
        "{Src}buffer.h" Â¶
@@ -273,7 +274,9 @@ buildobj.lst 
        "{Src}process.h" Â¶
        "{Src}syssignal.h" Â¶
        "{Src}systty.h" Â¶
-               "{Includes}termio.h"
+       "{Includes}termio.h" Â¶
+       "{Src}frame.h" Â¶
+       "{Src}termhooks.h"
 
 {Src}casefiddle Ã„ Â¶
        {CONFIG_H_GROUP} Â¶
@@ -798,6 +801,16 @@ buildobj.lst 
        "{Src}lisp.h" Â¶
        "{Includes}sys:file.h"
 
+{Src}terminal.c.x Ã„ Â¶
+       {CONFIG_H_GROUP} Â¶
+       "{Src}lisp.h" Â¶
+       "{Src}frame.h" Â¶
+       "{Src}termchar.h" Â¶
+       "{Src}termhooks.h" Â¶
+       "{Src}charset.h" Â¶
+       "{Src}coding.h" Â¶
+       "{Src}keyboard.h"
+
 {Src}textproc.c.x Ã„ Â¶
        {CONFIG_H_GROUP} Â¶
        "{Src}lisp.h" Â¶
@@ -1014,6 +1027,7 @@ shortlisp = 
        {Lisp}abbrev.elc Â¶
        {Lisp}buff-menu.elc Â¶
        {Lisp}button.elc Â¶
+       {Lisp}server.elc Â¶
        {Lisp}emacs-lisp:byte-run.elc Â¶
        {Lisp}cus-face.elc Â¶
        {Lisp}cus-start.elc Â¶
@@ -1027,6 +1041,7 @@ shortlisp = 
        {Lisp}emacs-lisp:float-sup.elc Â¶
        {Lisp}format.elc Â¶
        {Lisp}frame.elc Â¶
+       {Lisp}termdev.elc Â¶
        {Lisp}help.elc Â¶
        {Lisp}indent.elc Â¶
        {Lisp}isearch.elc Â¶
index 21204ea22bb11a3430f5033558adc52ebcd7fea8..33f69ab42582cc7eba3b83d1e48c8ab00f1f65b9 100644 (file)
@@ -144,7 +144,7 @@ resource 'DITL' (128, purgeable) {
                {10, 60, 72, 278},
                StaticText {
                        disabled,
-                       "GNU Emacs 22 for Mac OS"
+                       "GNU Emacs 23 for Mac OS"
                }
        }
 };
@@ -218,13 +218,13 @@ resource 'FREF' (129) {
 };
 
 resource 'vers' (1) {
-       0x22,           /* Major revision in BCD */
-       0x1,            /* Minor revision in BCD */
+       0x23,           /* Major revision in BCD */
+       0x0,            /* Minor revision in BCD */
        development,    /* development, alpha, beta, or final (release) */
        50,             /* Non-final release # */
        0,              /* Region code */
-       "22.1.50",      /* Short version number */
-       "22.1.50, Copyright \0xa9 2007 "
+       "23.0.50",      /* Short version number */
+       "23.0.50, Copyright \0xa9 2007 "
        "Free Software Foundation, Inc." /* Long version number */
 };
 
index 93054f8fb896932c807358d9fbcfd00137384d4d..cce67987d0c9d4eb046cb3c61ead615b9722ce18 100755 (executable)
--- a/make-dist
+++ b/make-dist
@@ -154,10 +154,10 @@ echo Version numbers are $version and $shortversion
 
 if [ $update = yes ];
 then
-  if grep -s "@set EMACSVER  *${shortversion}" ./man/emacs.texi > /dev/null; then
+  if grep -s "@set EMACSVER  *${shortversion}" ./doc/emacs/emacs.texi > /dev/null; then
     true
   else
-    echo "You must update the version number in \`./man/emacs.texi'"
+    echo "You must update the version number in \`./doc/emacs/emacs.texi'"
     sleep 5
   fi
 fi
@@ -242,9 +242,10 @@ fi
 if [ $update = yes ];
 then
   echo "Updating Info files"
-  (cd man; make -f Makefile.in srcdir=. info)
-  (cd lispref; make -f Makefile.in srcdir=. info)
-  (cd lispintro; make -f Makefile.in SHELL=/bin/sh srcdir=. info VPATH=.)
+  (cd doc/emacs; make -f Makefile.in srcdir=. info)
+  (cd doc/misc; make -f Makefile.in srcdir=. info)
+  (cd doc/lispref; make -f Makefile.in srcdir=. info)
+  (cd doc/lispintro; make -f Makefile.in SHELL=/bin/sh srcdir=. info VPATH=.)
 
   echo "Updating finder, custom and autoload data"
   (cd lisp; make updates EMACS="$EMACS")
@@ -293,7 +294,7 @@ mkdir ${tempdir}
 ### tar file; this means that people can start reading the INSTALL and
 ### README while the rest of the tar file is still unpacking.  Whoopee.
 echo "Making links to top-level files"
-ln AUTHORS FTP INSTALL README BUGS CONTRIBUTE move-if-change ${tempdir}
+ln FTP INSTALL README BUGS move-if-change ${tempdir}
 ln ChangeLog Makefile.in configure configure.in ${tempdir}
 ln config.bat make-dist update-subdirs vpath.sed ${tempdir}
 ### Copy these files; they're cross-filesystem symlinks.
@@ -312,7 +313,7 @@ echo "Updating version number in README"
 
 
 echo "Creating subdirectories"
-for subdir in lisp site-lisp lispref lispintro \
+for subdir in lisp 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 \
@@ -320,8 +321,10 @@ for subdir in lisp site-lisp lispref lispintro \
              etc etc/e \
              etc/images etc/images/ezimage etc/images/gnus etc/images/gud \
              etc/images/icons etc/images/low-color etc/images/mail \
-             etc/images/smilies etc/tree-widget etc/tree-widget/default \
-             etc/tree-widget/folder info man m4 msdos vms mac mac/inc \
+             etc/images/smilies etc/images/tree-widget \
+             etc/images/tree-widget/default etc/images/tree-widget/folder \
+             etc/refcards etc/tutorials info doc doc/emacs doc/misc doc/man \
+             doc/lispref doc/lispintro m4 msdos vms mac mac/inc \
              mac/inc/sys mac/src mac/Emacs.app mac/Emacs.app/Contents \
              mac/Emacs.app/Contents/MacOS mac/Emacs.app/Contents/Resources \
              mac/Emacs.app/Contents/Resources/English.lproj
@@ -569,10 +572,9 @@ echo "Making links to \`lwlib'"
 echo "Making links to \`etc'"
 ### Don't distribute = files, TAGS, DOC files, backups, autosaves, or
 ### tex litter.
-### Don't distribute gfdl.1, since no man page references it.
 (cd etc
  files=`ls -d * | grep -v CVS | grep -v RCS | grep -v 'Old' | grep -v '^e$' \
-        | grep -v '^images$' | grep -v '^tree-widget$'`
+        | grep -v '^images$' | grep -v '^refcards$' | grep -v '^tutorials$'`
  ln $files ../${tempdir}/etc
  ## If we ended up with a symlink, or if we did not get anything
  ## due to a cross-device symlink, copy the file.
@@ -591,15 +593,17 @@ echo "Making links to \`etc'"
    fi
  done
  cd ../${tempdir}/etc
- rm -f fns*.el gfdl.1
+ rm -f fns*.el
  rm -f DOC* *~ \#*\# *.dvi *.log *.orig *.rej *,v =* core
  rm -f TAGS)
 
-echo "Making links to \`etc/e'"
-(cd etc/e
- ln `ls -d * | grep -v CVS | grep -v RCS` ../../${tempdir}/etc/e
- cd ../../${tempdir}/etc/e
- rm -f *~ \#*\# *,v =* core)
+for dir in etc/e etc/tutorials etc/refcards ; do
+    echo "Making links to \`${dir}'"
+    (cd ${dir}
+       ln `ls -d * | grep -v CVS | grep -v RCS` ../../${tempdir}/${dir}
+       cd ../../${tempdir}/${dir}
+       rm -f *~ \#*\# *,v =* core)
+done
 
 echo "Making links to \`etc/images'"
 (cd etc/images
@@ -610,8 +614,7 @@ echo "Making links to \`etc/images'"
  done)
 
 for dir in etc/images/ezimage etc/images/gnus etc/images/gud etc/images/icons \
-           etc/images/low-color etc/images/mail etc/images/smilies \
-           etc/tree-widget/default etc/tree-widget/folder ; do
+           etc/images/low-color etc/images/mail etc/images/smilies ; do
     echo "Making links to \`${dir}'"
     (cd ${dir}
      ln `ls -d * | grep -v CVS | grep -v RCS` ../../../${tempdir}/${dir}
@@ -619,6 +622,14 @@ for dir in etc/images/ezimage etc/images/gnus etc/images/gud etc/images/icons \
      rm -f *~ \#*\# *,v =* core)
 done
 
+for dir in etc/images/tree-widget/default etc/images/tree-widget/folder ; do
+    echo "Making links to \`${dir}'"
+    (cd ${dir}
+     ln `ls -d * | grep -v CVS | grep -v RCS` ../../../../${tempdir}/${dir}
+     cd ../../../../${tempdir}/${dir}
+     rm -f *~ \#*\# *,v =* core)
+done
+
 echo "Making links to \`info'"
 # Don't distribute backups or autosaves.
 (cd info
@@ -629,44 +640,59 @@ echo "Making links to \`info'"
  ln emacs dummy~ ; ln emacs \#dummy\#
  rm -f *~ \#*\# core)
 
-echo "Making links to \`man'"
-(cd man
- ln *.texi *.aux *.cps *.fns *.kys *.vrs ../${tempdir}/man
- ln makefile.w32-in ../${tempdir}/man
- test -f README && ln README ../${tempdir}/man
- test -f Makefile.in && ln Makefile.in ../${tempdir}/man
- ln ChangeLog ../${tempdir}/man
- test -f split-man && ln split-man ../${tempdir}/man
- cp texinfo.tex ../${tempdir}/man
- cd ../${tempdir}/man
+echo "Making links to \`doc/emacs'"
+(cd doc/emacs
+ ln *.texi *.aux *.cps *.fns *.kys *.vrs ../../${tempdir}/doc/emacs
+ ln makefile.w32-in ../../${tempdir}/doc/emacs
+ test -f README && ln README ../../${tempdir}/doc/emacs
+ test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/emacs
+ ln ChangeLog ../../${tempdir}/doc/emacs
+ cp texinfo.tex ../../${tempdir}/doc/emacs
+ cd ../../${tempdir}/doc/emacs
+ rm -f \#*\# =* *~ core emacs-index* *.Z *.z xmail
+ rm -f emacs.?? termcap.?? gdb.?? *.log *.toc *.dvi *.oaux)
+
+echo "Making links to \`doc/misc'"
+(cd doc/misc
+ ln *.texi *.aux *.cps *.fns *.kys *.vrs ../../${tempdir}/doc/misc
+ ln makefile.w32-in ../../${tempdir}/doc/misc
+ test -f README && ln README ../../${tempdir}/doc/misc
+ test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/misc
+ ln ChangeLog ../../${tempdir}/doc/misc
+ cp texinfo.tex ../../${tempdir}/doc/misc
+ cd ../../${tempdir}/doc/misc
  rm -f \#*\# =* *~ core emacs-index* *.Z *.z xmail
  rm -f emacs.?? termcap.?? gdb.?? *.log *.toc *.dvi *.oaux)
 
-echo "Making links to \`lispref'"
-(cd lispref
- ln `ls -1 *.texi` ../${tempdir}/lispref
- ln *.aux *.cps *.fns *.kys *.vrs ../${tempdir}/lispref
- ln *.txt *.el spellfile tindex.pl ../${tempdir}/lispref
- ln makefile.w32-in ../${tempdir}/lispref
- test -f README && ln README ../${tempdir}/lispref
- test -f Makefile.in && ln Makefile.in ../${tempdir}/lispref
- ln ChangeLog ../${tempdir}/lispref
- cd ../${tempdir}/lispref
+echo "Making links to \`doc/lispref'"
+(cd doc/lispref
+ ln `ls -1 *.texi` ../../${tempdir}/doc/lispref
+ ln *.aux *.cps *.fns *.kys *.vrs ../../${tempdir}/doc/lispref
+ ln *.txt *.el spellfile tindex.pl ../../${tempdir}/doc/lispref
+ ln makefile.w32-in ../../${tempdir}/doc/lispref
+ test -f README && ln README ../../${tempdir}/doc/lispref
+ test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/lispref
+ ln ChangeLog ../../${tempdir}/doc/lispref
+ cd ../../${tempdir}/doc/lispref
  rm -f \#*\# =* *~ core elisp-index* *.Z *.z xmail
  rm -f elisp.?? *.log *.toc *.dvi *.oaux)
 
-echo "Making links to \`lispintro'"
-(cd lispintro
- ln *.texi *.aux *.cps *.fns *.kys *.vrs *.eps ../${tempdir}/lispintro
- ln makefile.w32-in ../${tempdir}/lispintro
- test -f texinfo.tex && ln texinfo.tex ../${tempdir}/lispintro
- test -f README && ln README ../${tempdir}/lispintro
- test -f Makefile.in && ln Makefile.in ../${tempdir}/lispintro
- ln ChangeLog ../${tempdir}/lispintro
- cd ../${tempdir}/lispintro
+echo "Making links to \`doc/lispintro'"
+(cd doc/lispintro
+ ln *.texi *.aux *.cps *.fns *.kys *.vrs *.eps ../../${tempdir}/doc/lispintro
+ ln makefile.w32-in ../../${tempdir}/doc/lispintro
+ test -f texinfo.tex && ln texinfo.tex ../../${tempdir}/doc/lispintro
+ test -f README && ln README ../../${tempdir}/doc/lispintro
+ test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/lispintro
+ ln ChangeLog ../../${tempdir}/doc/lispintro
+ cd ../../${tempdir}/doc/lispintro
  rm -f \#*\# =* *~ core *.Z *.z xmail
  rm -f emacs-lisp-intro.?? *.log *.toc *.dvi *.oaux)
 
+echo "Making links to \`doc/man'"
+(cd doc/man
+ ln *.1 ../../${tempdir}/doc/man)
+
 echo "Making links to \`vms'"
 (cd vms
  test -f README && ln README ../${tempdir}/vms
index 9e4b309b3641837102eb4bd8c2ab937fed3382a5..be98de6be01a1ec467902370b497291cb5d89596 100755 (executable)
 #! /bin/sh
 # mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+
+scriptversion=2006-05-11.19
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
 # Created: 1993-05-16
-# Public domain
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
 
+nl='
+'
+IFS=" ""       $nl"
 errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit $?
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+  '')
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the `mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because `.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
 
 for file
 do
-   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-   shift
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
+  shift
+  IFS=$oIFS
+
+  for d
+  do
+    test "x$d" = x && continue
 
-   pathcomp=
-   for d
-   do
-     pathcomp="$pathcomp$d"
-     case "$pathcomp" in
-       -* ) pathcomp=./$pathcomp ;;
-     esac
+    pathcomp=$pathcomp$d
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
 
-     if test ! -d "$pathcomp"; then
-        echo "mkdir $pathcomp" 1>&2
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
 
-        (mkdir "$pathcomp" && chmod a+rx "$pathcomp") || lasterr=$?
+      mkdir "$pathcomp" || lasterr=$?
 
-        if test ! -d "$pathcomp"; then
-         errstatus=$lasterr
-        fi
-     fi
+      if test ! -d "$pathcomp"; then
+       errstatus=$lasterr
+      else
+       if test ! -z "$dirmode"; then
+         echo "chmod $dirmode $pathcomp"
+         lasterr=
+         chmod "$dirmode" "$pathcomp" || lasterr=$?
 
-     pathcomp="$pathcomp/"
-   done
+         if test ! -z "$lasterr"; then
+           errstatus=$lasterr
+         fi
+       fi
+      fi
+    fi
+
+    pathcomp=$pathcomp/
+  done
 done
 
 exit $errstatus
-
-# mkinstalldirs ends here
index 0fd192b7722a03f438b85cf667866044c69db3fd..d61f9e27ace58ac1dd1eefa76c541c31a83f14a2 100644 (file)
@@ -1,3 +1,9 @@
+2007-10-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * sed6.inp: Update comment to reflect doc directory structure.
+
+       * sed1v2.inp (RSVG_LIBS, RSVG_CFLAGS): Edit out.
+
 2007-07-25  Glenn Morris  <rgm@gnu.org>
 
        * Relicense all FSF files to GPLv3 or later.
index 688a946b5d53183d2eee5561e1f9264e3e35865e..5d3ae877c428ad5b22d6c96899c608cb85d541b7 100644 (file)
@@ -37,6 +37,8 @@ s/\.h\.in/.h-in/
 /^GETLOADAVG_LIBS *=/s/@[^@\n]*@//
 /^LIBSOUND *=/s/@LIBSOUND@//
 /^CFLAGS_SOUND *=/s/@CFLAGS_SOUND@//
+/^RSVG_LIBS *=/s/@RSVG_LIBS@//
+/^RSVG_CFLAGS *=/s/@RSVG_CFLAGS@//
 /^EXEEXT *=/s/@EXEEXT@//
 /^LN_S *=/s/@[^@\n]*@/ln -s/
 /^M_FILE *=/s!@[^@\n]*@!m/intel386.h!
index fe377878b5dabe2d5dc8ac40666820a2fd574d7e..1f290fe3fab24a38bde46dd22a9de31203283efe 100644 (file)
@@ -1,6 +1,6 @@
 # -sed6.inp------------------------------------------------------------------
-# Configuration script for man/Makefile, lispref/Makefile, and
-# lispintro/Makefile under DJGPP v2.x
+# Configuration script for doc/emacs/Makefile, doc/lispref/Makefile,
+# doc/lispintro/Makefile, and doc/misc/Makefile under DJGPP v2.x
 # ---------------------------------------------------------------------------
 #
 # Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004,
index b85b743937f8fa1f1475da4014ddf82bed8ecafb..4a8f353782b39d3ffe28abe5d5f9f17cbe92193b 100644 (file)
@@ -4,6 +4,18 @@
 
        * nmake.defs (COMCTL32): New system library.
 
+2007-09-06  Glenn Morris  <rgm@gnu.org>
+
+       * configure.bat:
+       * makefile.w32-in (info-nmake, info-gmake)
+       (clean-other-dirs-nmake): Change from ../man to ../doc/emacs and
+       ../doc/misc; and from ../lispref, ../lispintro to ../doc/lispref,
+       ../doc/lispintro.
+
+2007-08-29  Glenn Morris  <rgm@gnu.org>
+
+       * emacs.rc: Increase version to 23.0.50.
+
 2007-08-14  Dhuvra Krishnamurthy <dhuvrakm@gmail.com> (tiny change)
 
        * makefile.w32-in (bootstrap-nmake): Change directories once more.
 
        * COPYING: Switch to GPLv3.
 
-2007-07-20  Eli Zaretskii  <eliz@gnu.org>
+2007-07-16  Eli Zaretskii  <eliz@gnu.org>
 
        * makefile.w32-in (bootstrap, bootstrap-nmake, bootstrap-gmake):
        Depend on cmdproxy.
        (cleanall): Don't delete *~.
 
+2007-07-15  Jason Rumney  <jasonr@gnu.org>
+
+       * inc/sys/socket.h (uint16_t): Define if C99 does not appear to
+       be fully supported.
+
+2007-07-14  Jason Rumney  <jasonr@gnu.org>
+
+       * inc/sys/socket.h: Include winsock2.h and ws2tcpip.h instead
+       of winsock.h.
+
 2007-07-11  Jason Rumney  <jasonr@gnu.org>
 
        * gmake.defs (OLE32): New library to link.
 
        * cmdproxy.c (main): Set console codepages to "ANSI".
 
+2007-06-20  Jason Rumney  <jasonr@gnu.org>
+
+       * configure.bat: Complain if image libraries are missing.
+
 2007-06-15  Jason Rumney  <jasonr@gnu.org>
 
        * emacs.manifest: New file.
        * INSTALL: Fix URL of EmacsW32 site where building with image
        support is described.
 
+2007-04-26  Glenn Morris  <rgm@gnu.org>
+
+       * emacs.rc: Increase version to 22.1.50.
+
 2007-03-31  Eli Zaretskii  <eliz@gnu.org>
 
        * INSTALL: Mention the VCVARS32.BAT batch file for VS.NET users.
index 5ff084832dda3569ac3f80957813acc3fd86f94c..27ba7bedce14b508fb02d3110f3762a5fc655465 100755 (executable)
@@ -118,11 +118,11 @@ echo.   --no-opt                disable optimization
 echo.   --no-cygwin             use -mno-cygwin option with GCC\r
 echo.   --cflags FLAG           pass FLAG to compiler\r
 echo.   --ldflags FLAG          pass FLAG to compiler when linking\r
-echo.   --without-png           do not use libpng even if it is installed\r
-echo.   --without-jpeg          do not use jpeg-6b even if it is installed\r
-echo.   --without-gif           do not use libungif even if it is installed\r
-echo.   --without-tiff          do not use libtiff even if it is installed\r
-echo.   --without-xpm           do not use libXpm even if it is installed\r
+echo.   --without-png           do not use libpng\r
+echo.   --without-jpeg          do not use jpeg-6b\r
+echo.   --without-gif           do not use giflib or libungif\r
+echo.   --without-tiff          do not use libtiff\r
+echo.   --without-xpm           do not use libXpm\r
 goto end\r
 rem ----------------------------------------------------------------------\r
 :setprefix\r
@@ -509,9 +509,10 @@ if exist config.tmp del config.tmp
 copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
 copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile\r
 copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile\r
-copy /b config.settings+%MAKECMD%.defs+..\man\makefile.w32-in ..\man\makefile\r
-copy /b config.settings+%MAKECMD%.defs+..\lispref\makefile.w32-in ..\lispref\makefile\r
-copy /b config.settings+%MAKECMD%.defs+..\lispintro\makefile.w32-in ..\lispintro\makefile\r
+copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile\r
+copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile\r
+copy /b config.settings+%MAKECMD%.defs+..\doc\lispref\makefile.w32-in ..\doc\lispref\makefile\r
+copy /b config.settings+%MAKECMD%.defs+..\doc\lispintro\makefile.w32-in ..\doc\lispintro\makefile\r
 if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile\r
 copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile\r
 rem   Use the default (no-op) Makefile.in if the nt version is not present.\r
@@ -533,6 +534,51 @@ copy subdirs.el ..\site-lisp\subdirs.el
 \r
 :dontUpdateSubdirs\r
 echo.\r
+\r
+rem check that we have all the libraries we need.\r
+set libsOK=1\r
+\r
+if not "(%HAVE_XPM%)" == "()" goto checkpng\r
+if (%xpmsupport%) == (N) goto checkpng\r
+ set libsOK=0\r
+ echo XPM support is missing. It is required for color icons in the toolbar.\r
+ echo   Install libXpm development files or use --without-xpm\r
+\r
+:checkpng\r
+if not "(%HAVE_PNG%)" == "()" goto checkjpeg\r
+if (%pngsupport%) == (N) goto checkjpeg\r
+ set libsOK=0\r
+ echo PNG support is missing.\r
+ echo   Install libpng development files or use --without-png\r
+\r
+:checkjpeg\r
+if not "(%HAVE_JPEG%)" == "()" goto checktiff\r
+if (%jpegsupport%) == (N) goto checktiff\r
+ set libsOK=0\r
+ echo JPEG support is missing.\r
+ echo   Install jpeg development files or use --without-jpeg\r
+\r
+:checktiff\r
+if not "(%HAVE_TIFF%)" == "()" goto checkgif\r
+if (%tiffsupport%) == (N) goto checkgif\r
+ set libsOK=0\r
+ echo TIFF support is missing.\r
+ echo   Install libtiff development files or use --without-tiff\r
+\r
+:checkgif\r
+if not "(%HAVE_GIF%)" == "()" goto donelibchecks\r
+if (%gifsupport%) == (N) goto donelibchecks\r
+ set libsOK=0\r
+ echo GIF support is missing.\r
+ echo   Install giflib or libungif development files or use --without-gif\r
+\r
+:donelibchecks\r
+if (%libsOK%) == (1) goto success\r
+echo.\r
+echo Important libraries are missing. Fix these issues before running make.\r
+goto end\r
+\r
+:success\r
 echo Emacs successfully configured.\r
 echo Emacs successfully configured. >>config.log\r
 echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.\r
index 861b336fd35ef099525294ddc7792e62286bfa85..3565493d003bfc18e9f8426921a06585cdbf0956 100644 (file)
@@ -7,8 +7,8 @@ Emacs ICON   icons\emacs.ico
 #endif
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 22,1,50,0
- PRODUCTVERSION 22,1,50,0
+ FILEVERSION 23,0,50,0
+ PRODUCTVERSION 23,0,50,0
  FILEFLAGSMASK 0x3FL
 #ifdef EMACSDEBUG
  FILEFLAGS 0x1L
@@ -25,12 +25,12 @@ BEGIN
        BEGIN
            VALUE "CompanyName", "Free Software Foundation\0"
            VALUE "FileDescription", "GNU Emacs for Windows NT/95/98/2000/ME/XP\0"
-           VALUE "FileVersion", "22, 1, 50, 0\0"
+           VALUE "FileVersion", "23, 0, 50, 0\0"
            VALUE "InternalName", "Emacs\0"
            VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007\0"
            VALUE "OriginalFilename", "emacs.exe"
            VALUE "ProductName", "Emacs: The extensible self-documenting text editor\0"
-           VALUE "ProductVersion", "22, 1, 50, 0\0"
+           VALUE "ProductVersion", "23, 0, 50, 0\0"
            VALUE "OLESelfRegister", "\0"
         END
      END
index 5050720a3f4e5e5ea998d8c970f114ca744bf0bb..f848231299ddd6db2982413b9582757431e59174 100644 (file)
@@ -51,7 +51,13 @@ Boston, MA 02110-1301, USA.  */
 #define timeval ws_timeval
 #endif
 
-#include <winsock.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
+/* process.c uses uint16_t (from C99) for IPv6, but
+   apparently it is not defined in some versions of mingw and msvc.  */
+#ifndef UINT16_C
+typedef unsigned short uint16_t;
+#endif
 
 /* redefine select to reference our version */
 #ifdef MUST_REDEF_SELECT
index 05e9a6658795c6544dad97cfccf70260c7f3cd0a..155f201aa1e72fb7fb5b4700dd617c70ad5f3dd0 100644 (file)
@@ -232,23 +232,26 @@ install-other-dirs-gmake:
        $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim install\r
 \r
 force-info:\r
-# Note that man/makefile knows how to\r
+# Note that doc/emacs/makefile knows how to\r
 # put the info files in $(infodir),\r
 # so we can do ok running make in the build dir.\r
 info: force-info info-$(MAKETYPE)\r
 \r
 info-nmake:\r
-       cd ..\man\r
+       cd ..\doc\emacs\r
        $(MAKE) $(MFLAGS) info\r
-       cd ..\lispref\r
+       cd ..\doc\misc\r
        $(MAKE) $(MFLAGS) info\r
-       cd ..\lispintro\r
+       cd ..\doc\lispref\r
+       $(MAKE) $(MFLAGS) info\r
+       cd ..\doc\lispintro\r
        $(MAKE) $(MFLAGS) info\r
 \r
 info-gmake:\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../man info\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lispref info\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lispintro info\r
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs info\r
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc info\r
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref info\r
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro info\r
 #\r
 # Maintenance\r
 #\r
@@ -265,13 +268,15 @@ clean-other-dirs-nmake:
        $(MAKE) $(MFLAGS) clean\r
        cd ..\lisp\r
        $(MAKE) $(MFLAGS) clean\r
-       cd ..\lispintro\r
+       cd ..\doc\lispintro\r
        $(MAKE) $(MFLAGS) clean\r
-       cd ..\lispref\r
+       cd ..\doc\lispref\r
        $(MAKE) $(MFLAGS) clean\r
        cd ..\leim\r
        $(MAKE) $(MFLAGS) clean\r
-       cd ..\man\r
+       cd ..\doc\emacs\r
+       $(MAKE) $(MFLAGS) clean\r
+       cd ..\doc\misc\r
        $(MAKE) $(MFLAGS) clean\r
        cd ..\nt\r
 \r
index fe99529135fc31e8a021122bb8073afa681943ad..c21e38d47d7928dec2e0c4d5a7e3154e7dfbb8a1 100644 (file)
@@ -3,7 +3,10 @@ source ^\.(gdbinit|dbxinit)$
 
 # Auto-generated files, which ignore
 precious ^(config\.stamp|config\.h|epaths\.h|buildobj\.lst)$
+precious ^(TAGS-LISP)$
+precious ^(buildobj\.lst)$
 
 backup ^(stamp-oldxmenu|prefix-args|temacs|emacs|emacs-[0-9.]*)$
+backup ^(bootstrap-emacs)$
 
 # arch-tag: 277cc7ae-b3f5-44af-abf1-84c073164543
index 851322059a8d1a3518d8d844c4867f499844d438..ad7b666f18803b46ccff9fefd943bec094767c45 100644 (file)
@@ -998,7 +998,7 @@ define xbacktrace
     xgettype (*$bt->function)
     if $type == Lisp_Symbol
       xprintsym (*$bt->function)
-      printf " (0x%x)\n", *$bt->args
+      printf " (0x%x)\n", $bt->args
     else
       printf "0x%x ", *$bt->function
       if $type == Lisp_Vectorlike
@@ -1115,7 +1115,7 @@ end
 tbreak init_sys_modes
 commands
   silent
-  xgetptr Vwindow_system
+  xgetptr Vinitial_window_system
   set $tem = (struct Lisp_Symbol *) $ptr
   xgetptr $tem->xname
   set $tem = (struct Lisp_String *) $ptr
index 2317e4302a94804847a69ece264b4ce0069d347c..4ba46df0f2306ffb24ad588bc7c4d7397cce865d 100644 (file)
 2007-10-14  Juanma Barranquero  <lekktu@gmail.com>
 
-       * eval.c (do_autoload): Don't save autoloads.
-
-       * data.c (Ffset): Save autoload of the function being set.
-
-2007-10-07  John Paul Wallington  <jpw@pobox.com>
-
-       * xfns.c (x_create_tip_frame): Set the `display-type' frame
-       parameter before setting up faces.
-
-2007-10-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * msdos.c (dos_rawgetc): Undo last change (there's no ``leaving
-       selected frame'' on MSDOS).
-
-2007-10-12  Martin Rudalics  <rudalics@gmx.at>
-
-       * frame.c (Qexplicit_name): New variable.
-       (x_report_frame_params): Report it in parameter alist.
-       (syms_of_frame): Intern and staticpro it.
-
-2007-10-09  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (x_set_window_size): Disable code that attempts to tell
-       Lisp code about a size change before it actually happens.
-
-2007-10-09  Richard Stallman  <rms@gnu.org>
-
-       * xdisp.c (handle_invisible_prop): After setting up an ellipsis,
-       return HANDLED_RETURN.
-
-2007-10-06  Martin Rudalics  <rudalics@gmx.at>
-
-       * keyboard.c (kbd_buffer_get_event): Break loop waiting for input
-       when there's an unread command event.
-
-       * frame.c (focus_follows_mouse): Moved here from frame.el to allow
-       window autoselection act appropriately when leaving selected frame.
-       (syms_of_frame): Initialize focus_follows_mouse.
-       * frame.h (focus_follows_mouse): Extern it.
-       * macterm.c (XTread_socket): When focus_follows_mouse is nil
-       make SELECT_WINDOW_EVENT only if we don't leave the selected
-       frame.
-       * msdos.c (dos_rawgetc): Likewise.
-       * w32term.c (w32_read_socket): Likewise.
-       * xterm.c (handle_one_xevent): Likewise.
-       * xdisp.c (syms_of_xdisp): In doc-string of
-       mouse-autoselect-window mention focus-follows-mouse.
-
-2007-10-06  Andreas Schwab  <schwab@suse.de>
-
-       * fileio.c (Fwrite_region): Ignore EINVAL error from fsync.
-
-2007-10-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_load_query_font): Fix missing return value.
-       [USE_CG_DRAWING] (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap):
-       Add BLOCK_INPUT.
-
-2007-10-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image.c (syms_of_image) <image-types>: Fix typo in docstring.
-
-2007-10-02  Richard Stallman  <rms@gnu.org>
-
-       * xdisp.c (get_window_cursor_type): Implement documented behavior
-       for cursor-in-non-selected-windows = t.
-
-2007-10-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * lread.c (Fload): Fix typo in docstring.
-
-2007-09-29  Juri Linkov  <juri@jurta.org>
-
-       * emacs.c (standard_args): Change priority of "--no-splash"
-       from 40 to 3.  Add "--no-desktop" with the same priority.
-
-2007-09-29  Jason Rumney  <jasonr@gnu.org>
-
-       * w32.c (w32_get_resource): Always close registry keys.
-
-2007-09-27  Jason Rumney  <jasonr@gnu.org>
-
-       * makefile.w32-in (LIBS): Add COMCTL32.
-
-       * w32fns.c (globals_of_w32fns): Init common controls.
-
-2007-09-21  Richard Stallman  <rms@gnu.org>
-
-       * image.c (our_memory_buffer): Renamed from omfib_buffer.
-
-2007-09-21  Juanma Barranquero  <lekktu@gmail.com>
-
-       * w32term.c (x_draw_glyph_string): Use strike_through_color, not
-       underline_color, to draw strike-through.
-
-2007-09-20  Glenn Morris  <rgm@gnu.org>
-
-       * process.c (Fmake_network_process): Doc fix.
-
-2007-09-19  Richard Stallman  <rms@gnu.org>
-
-       * buffer.c (Foverlays_at): Doc fix.
-
-2007-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fns.c (Fplist_put): Preserve uneven tail data.
-
-2007-09-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_image_for_pixmap): Always create a GdkPixbuf
-       when we have no file name for the icon.
-       (xg_tool_bar_expose_callback): Remove.
-       (xg_create_tool_bar): Don't connect expose signal to
-       xg_tool_bar_expose_callback.
-
-2007-09-16  Andreas Schwab  <schwab@suse.de>
-
-       * alloc.c (reset_malloc_hooks): Set the hooks to the previous
-       values instead of zapping them.
-
-2007-09-15  Glenn Morris  <rgm@gnu.org>
-
-       * s/hpux.h: No longer define `static' as nothing.
-
-2007-09-14  Glenn Morris  <rgm@gnu.org>
-
-       * fringe.c (init_fringe_bitmap) <swap nibble>: Move to file scope.
-       * gtkutil.c (xg_separator_p) <separator_names>: Move to file scope.
-       * image.c (our_memory_fill_input_buffer) <buffer>: Move to file
-       scope and rename to omfib_buffer for clarity.
-       (gif_load) <interlace_start, interlace_increment>: Move to file scope.
-
-2007-09-14  Peter O'Gorman  <bug-gnu-emacs@mlists.thewrittenword.com>  (tiny change)
-
-       * gtkutil.c (xg_get_file_with_chooser): Move GCPRO1 after declarations.
-
-       * termhooks.h (enum event_kind): Remove trailing comma.
-
-       * frame.h (enum): Remove trailing comma.
-
-2007-09-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c, xterm.c, xfaces.c (abs): #undef before #define.
-
-2007-09-12  Glenn Morris  <rgm@gnu.org>
-
-       * gtkutil.c (cnt): Rename to menu_grab_callback_cnt for clarity.
-       (menu_grab_callback): All uses changed.
-
-       * xselect.c (cnt): Rename to x_reply_selection_request_cnt for clarity.
-       (x_reply_selection_request): All uses changed.
-
-2007-09-06  Pixel  <pixel@mandriva.com>  (tiny change)
-
-       * image.c (gif_load): Fix bug: Handle nonexistent colormap.
-
-2007-09-06  Glenn Morris  <rgm@gnu.org>
-
-       * gtkutil.c (menu_grab_callback) <cnt>:
-       * xselect.c (x_reply_selection_request) <cnt>: Move static
-       variable to file scope.
-
-2007-09-02  Dhuvra Krishnamurthy  <dhuvrakm@gmail.com>  (tiny change)
-
-       * w32proc.c (delete_child): Don't terminate threads of zombies.
-
-2007-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c: Qrtl is new.
-       (parse_tool_bar_item): Handle :rtl keyword.
-       (syms_of_keyboard): Intern :rtl keyword.
-
-       * dispextern.h (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE.
-
-       * gtkutil.c (file_for_image, find_rtl_image): New functions.
-       (xg_get_image_for_pixmap): Use file_for_image
-       (update_frame_tool_bar): If direction is RTL, use RTL image if
-       defined.  Use Gtk stock images or named theme icons if defined.
-
-2007-08-29  Martin Rudalics  <rudalics@gmx.at>
-
-       * keyboard.h (struct kboard): New elt Vlast_repeatable_command.
-
-       * keyboard.c (syms_of_keyboard): Set up new Lisp variable
-       last-repeatable-command.
-       (init_kboard): Initialize Vlast_repeatable_command.
-       (command_loop_1): Set it to real_this_command unless that was
-       bound to an input event.
-       (mark_kboards): Mark it.
-
-2007-08-28  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image.c (syms_of_image) <image-library-alist, cross-disabled-images>:
-       Doc fixes.
-
-2007-08-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_tool_bar_expose_callback): Just do SET_FRAME_GARBAGED
-       so no Lisp code is executed.
-
-2007-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (x_draw_composite_glyph_string_foreground): Draw rectangle
-       for nonexistent or zero-width glyph in composition glyph.
-
-2007-08-27  Richard Stallman  <rms@gnu.org>
-
-       * eval.c (condition-case): Doc fix.
-
-2007-08-27  Masatake YAMATO  <jet@gyve.org>
-
-       * xfaces.c (tty_supports_face_attributes_p): Fix code
-       for LFACE_INVERSE_INDEX and LFACE_BACKGROUND_INDEX; code
-       was copied and not edited.
-
-2007-08-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lread.c (load_warn_old_style_backquotes): Fix up array size typo.
-
-2007-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lread.c (Qold_style_backquotes): New var.
-       (syms_of_lread): Init and staticpro it.
-       (load_warn_old_style_backquotes): New fun.
-       (Fload): Use them to warn about old style backquotes.
-       (end_of_file_error, Fload): Remove unused vars.
-
-       * lisp.h (Fclear_face_cache, Fx_send_client_event): Declare.
-
-       * lread.c (Vold_style_backquotes): New var.
-       (syms_of_lread): Init and export it to Elisp.
-       (read1): Set it when we find an old-style (back)quote.
-
-2007-08-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32reg.c (SYSTEM_DEFAULT_RESOURCES): Add missing NULL terminator.
-
-2007-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * insdel.c (reset_var_on_error): New fun.
-       (signal_before_change, signal_after_change):
-       Use it to reset (after|before)-change-functions to nil in case of error.
-       Bind inhibit-modification-hooks to t.
-       Don't bind (after|before)-change-functions to nil while they run.
-
-2007-08-19  Andreas Schwab  <schwab@suse.de>
-
-       * alloc.c (pure): Round PURESIZE up.
-
-2007-08-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): Remove check that mouse click is in
-       active frame.
-
-2007-08-15  Philippe Waroquiers  <philippe.waroquiers@eurocontrol.int>
-
-       * term.c (tty_default_color_capabilities): Declare static
-       variables in file scope, to avoid HPUX compiler problem.
-
-2007-08-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (update_frame_tool_bar): Use -1 as index
-       to gtk_toolbar_insert.
-
-2007-08-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xterm.c (x_draw_image_glyph_string): Adjust stipple origin when
-       filling pixmap with stippled background.
-
-2007-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * print.c (new_backquote_output): Rename from old_backquote_output.
-       (print): Inverse its logic (according to its name) so as to match the
-       behavior of new_backquote_flag in lread.c.
-
-2007-08-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * gmalloc.c (posix_memalign): New function.
-
-2007-08-08  Glenn Morris  <rgm@gnu.org>
-
-       * Replace `iff' in doc-strings and comments.
-
-2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * dispextern.h (struct image): New members.
-
-       * image.c: Sync to trunk version.
-       (search_image_cache, uncache_image, image-refresh): New functions.
-       Check for fg and bg colors.
-       (lookup_image): Use search_image_cache.  Cache fg and bg colors.
-       (pbm_load): Another check for invalid image data.
-       (png_load): Ignore default background field.
-
-       * xdisp.c (move_it_by_lines): Remove incorrect optimization.
-
-2007-08-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gmalloc.c (__malloc_initialize): Remove pthread_once.  Not needed.
-
-2007-08-07  Sam Steingold  <sds@gnu.org>
-
-       * gmalloc.c (__morecore): Fix the declaration to comply with the
-       definition.
-
-2007-08-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * emacs.c (main)
-       [HAVE_GTK_AND_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
-       Call malloc_enable_thread on interactive startup.
-
-       * gmalloc.c (_malloc_thread_enabled_p) [USE_PTHREAD]: New variable.
-       (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS)
-       [USE_PTHREAD]: Conditionalize with it.
-       (malloc_atfork_handler_prepare, malloc_atfork_handler_parent)
-       (malloc_atfork_handler_child, malloc_enable_thread) [USE_PTHREAD]:
-       New functions.
-
-2007-08-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (redisplay_window): When restoring original buffer
-       position, make sure it is still valid.
-
-2007-08-06  Martin Rudalics  <rudalics@gmx.at>
-
-       * window.c (window_min_size_2): New function.
-       (window_min_size_1, size_window, Fdisplay_buffer)
-       (Fsplit_window, adjust_window_trailing_edge): Use it to avoid
-       windows without mode- or header-lines when window-min-height is
-       too small.
-       (size_window): Reset nodelete_p after testing it, following an
-       earlier note by Kim F. Storm.
-       (display_buffer): Do not set split_height_threshold to twice the
-       value of window_min_height to avoid changing the value of a
-       customizable variable.  Rather explicitly check whether the
-       height of the window that shall be splitted is at least as large
-       as split_height_threshold.
-       (Fwindow_full_width_p): New defun.
-       (syms_of_window): Defsubr it.
-
-       * window.h: Add EXFUN for Fwindow_full_width_p.
-
-2007-08-06  Andreas Schwab  <schwab@suse.de>
-
-       * window.c (Fdisplay_buffer): Use NILP.
-       (Fset_window_scroll_bars): Likewise.
-
-2007-08-03  Richard Stallman  <rms@gnu.org>
-
-       * fileio.c (Fvisited_file_modtime): Use make_time.
-
-2007-08-01  Ryo Yoshitake  <ryo@shiftmode.net>  (tiny change)
-
-       * mac.c (init_mac_osx_environment): Adjust load-path on self-contained
-       build.
-
-2007-07-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * eval.c (init_eval_once): Bump max_lisp_eval_depth to 400.
-
-2007-07-25  Glenn Morris  <rgm@gnu.org>
-
-       * Relicense all FSF files to GPLv3 or later.
-
-       * COPYING: Switch to GPLv3.
-
-2007-07-24  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (x_real_positions): Get real position from OS instead of
-       calculating it.
-
-2007-07-23  Jason Rumney  <jasonr@gnu.org>
-
-       * filelock.c (current_lock_owner): Allow for @ sign in username.
-
-2007-07-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (clean): Don't delete *~.
-
-       * w32proc.c (IMAGE_NT_OPTIONAL_HDR32_MAGIC, IMAGE_OPTIONAL_HEADER32):
-       Define if not defined.
-
-2007-07-18  Jason Rumney  <jasonr@gnu.org>
-
-       * w32proc.c (w32_executable_type): Handle 64 bit executables.
-
-2007-07-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * coding.c (Ffind_operation_coding_system):
-       * eval.c (For, Fand, Fprogn):
-       * keyboard.c (Ftrack_mouse):
-       * print.c (Fwith_output_to_temp_buffer):
-       * window.c (Fsave_window_excursion): Doc fixes (some reported
-       by Johan Bockg\e,Ae\e(Brd).
-
-2007-07-15  Richard Stallman  <rms@gnu.org>
-
-       * data.c (Fsetq_default): Doc fix.
-
-       * eval.c (Fsetq): Doc fix.
-
-2007-07-11  Jason Rumney  <jasonr@gnu.org>
-
-       * makefile.w32-in (LIBS): Include OLE32.
-
-       * w32fns.c (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
-       (w32_msg_pump) <WM_DESTROY>: Uninitialize COM.
-
-2007-06-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event):
-       Check WINDOWP before using XWINDOW.
-
-2007-06-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (syms_of_buffer) <selective-display>: Fix typo in docstring.
-
-2007-06-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Check this after including config.h.
-       (_aligned_blocks_mutex) [USE_PTHREAD]: New variable.
-       (LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS): New macros.
-       (_free_internal, memalign): Use them.
-       (_malloc_mutex, _aligned_blocks_mutex) [USE_PTHREAD]:
-       Initialize to PTHREAD_MUTEX_INITIALIZER.
-       (malloc_initialize_1) [USE_PTHREAD]: Don't use recursive mutex.
-       (morecore_nolock): Rename from morecore.  All uses changed.
-       Use only nolock versions of internal allocation functions.
-       (_malloc_internal_nolock, _realloc_internal_nolock)
-       (_free_internal_nolock): New functions created from
-       _malloc_internal, _realloc_internal, and _free_internal.
-       (_malloc_internal, _realloc_internal, _free_internal): Use them.
-       Copy hook value to automatic variable before its use.
-       (memalign): Copy hook value to automatic variable before its use.
-
-2007-06-21  Jason Rumney  <jasonr@gnu.org>
-
-       * image.c (convert_mono_to_color_image): Swap fore and background.
-
-2007-06-20  Jason Rumney  <jasonr@gnu.org>
-
-       * w32bdf.c (w32_BDF_to_x_font): Unmap memory when finished.
-       (w32_free_bdf_font): Unmap memory not handle.
-
-2007-06-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * w32.c (_wsa_errlist): Fix typo in error message.
-       (init_environment): Ignore any environment variable from the
-       registry having a null value.
-
-2007-06-17  Jason Rumney  <jasonr@gnu.org>
-
-       * w32menu.c (add_menu_item): Don't use multibyte string functions on
-       unicode strings.
-
-2007-06-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * xdisp.c (syms_of_xdisp) <auto-resize-tool-bars>:
-       Fix typo in docstring.
-
-2007-06-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32menu.c (add_menu_item): Escape `&' characters in menu items
-       and their keybindings.
-
-2007-06-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * composite.c (update_compositions): Check validity of compositions.
-
-2007-06-10  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Fx_file_dialog): Take size from struct not pointer.
-
-2007-06-06  Jason Rumney  <jasonr@gnu.org>
-
-       * s/ms-w32.h: Don't define HAVE_TZNAME.
-
-2007-06-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.c (xpm_load): Remove spurious call to
-       xpm_init_color_cache.
-
-2007-06-06  Martin Rudalics  <rudalics@gmx.at>
-
-       * syntax.c (scan_words): Fix arg to UPDATE_SYNTAX_TABLE_BACKWARD.
-
-2007-06-05  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * xfaces.c (syms_of_xfaces): Delete stray semicolon.
-       * xdisp.c (next_element_from_buffer):
-       * window.c (delete_window):
-       * term.c (term_mouse_highlight):
-       * msdos.c (getdefdir):
-       * macterm.c (mac_create_bitmap_from_bitmap_data)
-       (init_font_name_table):
-       * fns.c (Fsxhash):
-       * data.c (Fmake_local_variable):
-       * ccl.c (ccl_driver): Likewise.
-
-2007-06-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * window.c (Fshrink_window): Reflow docstring.
-
-2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * Version 22.1 released.
-
-       * xfns.c (x_set_name_internal): Undo last change.
-
-2007-06-01  Richard Stallman  <rms@gnu.org>
-
-       * xfns.c (x_encode_text): Add GCPRO.
-       (x_set_name_internal): Separate USE_GTK and non-USE_GTK cases.
-
-2007-06-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xfns.c (x_set_name_internal): Save encoded name before
-       x_encode_text in case string data is relocated.
-
-2007-05-31  Richard Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer): Doc fix.
-
-2007-05-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t
-       around current_column call.
-
-2007-05-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (redisplay_window): If first window line is a
-       continuation line, recompute the new window start instead of
-       recentering.
-
-2007-05-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event):
-       Call mac_wakeup_from_rne on window size change.
-
-2007-05-22  Richard Stallman  <rms@gnu.org>
-
-       * xterm.c (x_connection_closed): Remove NO_RETURN.
-
-2007-05-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (skip_chars): Update syntax-table only after we checked that
-       the new location is valid.
-
-2007-05-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (x_calc_absolute_position): Add BLOCK_INPUT around
-       mac_get_window_bounds.
-
-2007-05-17  Glenn Morris  <rgm@gnu.org>
-
-       * m/macppc.h (ORDINARY_LINK): No longer define on OpenBSD.
-
-2007-05-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Also convert
-       dead key repeat and up events.
-
-2007-05-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xterm.c (XTread_socket): Revert last change.
-
-2007-05-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.c (pbm_load): Correctly check image size for greyscale pbm.
-
-       * xterm.c (XTread_socket): Yet Another Uncaught X Error Crash (YAUXEC).
-
-2007-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object mixup (YAILOM)
-
-2007-05-06  Richard Stallman  <rms@gnu.org>
-
-       * process.c: Undo May 3 change.
-
-2007-05-03  Per Cederqvist  <ceder@lysator.liu.se>  (tiny change)
-
-       * process.c (Faccept_process_output): Revert 2006-03-22 change so
-       that the third argument once again is in microseconds (not
-       milliseconds).  This makes it compatible with Emacs 21 and
-       earlier.  Problem found by Henrik Rindl\e,Av\e(Bw.
-
-2007-05-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (mac_dialog_show): Apply 2007-04-27 change for xmenu.c.
-       (Fx_popup_dialog) [MAC_OSX]: Likewise.
-
-2007-04-29  Richard Stallman  <rms@gnu.org>
-
-       * insdel.c (replace_range): For undo, record insertion first.
-
-2007-04-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xdisp.c (try_window_reusing_current_matrix): Fix number of
-       disabled lines.
-
-2007-04-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (xdialog_show): Call Fredisplay before showing the dialog.
-
-       * gtkutil.c (xg_update_menubar, create_menus): Create empty
-       submenu for menu bar items.
-
-2007-04-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (redisplay_window): Use BEG_UNCHANGED and END_UNCHANGED
-       values of the actual window.
-
-2007-04-23  Richard Stallman  <rms@gnu.org>
-
-       * process.c (Fstart_process): Doc fix.
-
-2007-04-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * process.c (Fstart_process): Doc fix.
-
-2007-04-22  Richard Stallman  <rms@gnu.org>
-
-       * abbrev.c (Fdefine_abbrev): Doc fix.
-
-       * keymap.c (Fdefine_key): Minor doc fix.
-
-2007-04-21  Glenn Morris  <rgm@gnu.org>
-
-       * keymap.c (Fdefine_key): Fix info ref in doc string.
-
-2007-04-20  Glenn Morris  <rgm@gnu.org>
-
-       * sysdep.c (init_system_name): Don't accept localhost.localdomain.
-
-2007-04-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * minibuf.c (Fminibuffer_contents, Fminibuffer_contents_no_properties)
-       (Fminibuffer_completion_contents, Fdelete_minibuffer_contents):
-       Doc fixes.
-
-2007-04-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * dispnew.c (adjust_frame_glyphs_for_frame_redisplay):
-       Set garbaged flag in presence of window margins.
-       (showing_window_margins_p): New function.
-
-       * xdisp.c (cursor_row_p): Only end row on newline if it's a
-       display string.  Suggested by Lennart Borgman.
-
-2007-04-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * alloc.c (mem_insert): Set min_heap_address and max_heap_address
-       if they are not yet initialized.
-
-2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (redisplay_window): When deciding whether or not to
-       recenter, don't use the reset values of BEG_UNCHANGED and
-       END_UNCHANGED.
-
-2007-04-13  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (Fkill_buffer): gcpro BUF during kill_buffer_processes
-       and check that buffer is still alive upon return.
-
-2007-04-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [!TARGET_API_MAC_CARBON]: Include Displays.h.
-       (mac_screen_config_changed): New variable.
-       (mac_handle_dm_notification, init_dm_notification_handler)
-       (mac_get_screen_info): New functions.
-       [MAC_OS8] (main): Call init_dm_notification_handler.
-       (mac_initialize) [MAC_OSX]: Likewise.
-       (XTread_socket): Call mac_get_screen_info if screen config changed.
-       (mac_initialized): Make static.
-       (mac_initialize_display_info): Remove function.
-       (mac_term_init): Call mac_get_screen_info.  Add partial contents of
-       mac_initialize_display_info.
-
-2007-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (xrm_get_preference_database, Fmac_get_preference)
-       [TARGET_API_MAC_CARBON]: Use CFPreferencesAppSynchronize.
-
-       * macterm.c [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event):
-       Use GetGlobalMouse instead of GetMouse and LocalToGlobal.
-       (mac_initialize_display_info) [MAC_OSX]: Use CGRectZero.
-       (mac_initialize_display_info) [!MAC_OSX]: dpyinfo->height and
-       dpyinfo->width are those of whole screen.
-
-2007-04-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Don't decrement
-       glyph pointer before start of glyph row.
-
-2007-04-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * s/darwin.h (__restrict, struct kboard): Remove outdated workarounds.
-       (C_SWITCH_SYSTEM): Remove `-I../mac/src'.
-
-2007-04-09  Martin Rudalics  <rudalics@gmx.at>
-
-       * indent.c (Fmove_to_column): Set next_boundary with correct start pt.
-
-2007-04-08  Richard Stallman  <rms@gnu.org>
-
-       * xdisp.c (syms_of_xdisp) <message-log-max>: Default 100.
-
-2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
-
-       * editfns.c (Ftranspose_regions): Validate interval before setting
-       text properties.
-
-2007-04-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs.c (main): Fix instructions for building Emacs for profiling.
-
-2007-04-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_update_menubar): Call g_list_next after moving
-       menu bar item.
-
-2007-04-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * print.c (Fprin1_to_string): Use macro SPECPDL_INDEX.
-
-2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymap.c (Fcommand_remapping): New optional argument.
-       (where_is_internal): Use new keymaps argument.
-       (Fkey_binding): Caller changed.
-
-       * keyboard.c (command_loop_1): Caller changed.
-
-2007-03-31  Eli Zaretskii  <eliz@gnu.org>
-
-       * window.c (Fget_lru_window): Doc fix.
-
-2007-03-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * undo.c (Fprimitive_undo): Give clearer error message when trying
-       to change text properties outside accessible part of buffer.
-
-2007-03-29  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (wait_reading_process_output) [HAVE_PTYS]:
-       When EIO happens, clear channel from descriptor masks before raising
-       SIGCHLD signal to avoid busy loop between read and sigchld_handler.
-       (sigchld_handler): Remove sleep (2007-03-11 & 2007-03-26 changes).
-
-2007-03-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (Fset_buffer_major_mode): Check that BUFFER is valid.
-
-       * process.c (Fformat_network_address): Return nil when the
-       argument vector contains invalid values.
-
-2007-03-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Define USE_PTHREAD.
-       [USE_PTHREAD]: Include pthread.h.
-       (malloc_init_once_control, _malloc_mutex) [USE_PTHREAD]: New variables.
-       (malloc_initialize_1): New function created from __malloc_initialize.
-       (__malloc_initialize): Use it.
-       (LOCK, UNLOCK): New macros to make malloc etc. thread safe.
-       (_malloc_internal, _free_internal, _realloc_internal): Use them.
-
-       * lread.c (readchar): Extend BLOCK_INPUT block to ferror/clearerr.
-
-2007-03-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * process.c (Fformat_network_address): Make args array big enough
-       to format IPv6 addresses.
-
-2007-03-27  Glenn Morris  <rgm@gnu.org>
-
-       * m/hp800.h: Restore HP-UX support (removed 2007-01-29).
-
-2007-03-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (Fx_display_mm_height, Fx_display_mm_width): Scale whole
-       screen size in pixels by millimeters per pixel of main display.
-
-       * macselect.c (get_scrap_target_type_list, x_own_selection):
-       Move assignments outside predicate macros.
-       (Vselection_converter_alist): Doc fix.
-
-       * macterm.c (create_text_encoding_info_alist): Move assignments
-       outside predicate macros.
-       (mac_initialize_display_info) [MAC_OSX]: dpyinfo->height and
-       dpyinfo->width are those of whole screen.
-
-2007-03-26  Sam Steingold  <sds@gnu.org>
-
-       * process.c (sigchld_handler): Delay by 1ms instead of 1s to
-       alleviate sluggishness (the original problem is still fixed).
-
-2007-03-25  Kim F. Storm  <storm@cua.dk>
-
-       * intervals.c (merge_properties): Use explicit loop instead of
-       Fplist_member to avoid QUIT.  Don't use Fcdr.
-       (intervals_equal): Likewise.  Rewrite loop to perform length check
-       on the fly rather than calling Flength.  Don't use Fcar.
-
-2007-03-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * editfns.c (Fgoto_char): Doc fix.
-
-       * indent.c (Findent_to): Doc fix.
-
-2007-03-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * editfns.c (Ftranspose_regions): Use set_text_properties_1
-       instead of Fset_text_properties to avoid GC.  Signal after change.
-
-2007-03-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * xfns.c (Fx_show_tip): Doc fix.
-
-       * macfns.c (Fx_show_tip): Doc fix.
-
-       * w32fns.c (Fx_show_tip): Doc fix.
-
-2007-03-23  Kim F. Storm  <storm@cua.dk>
-
-       * intervals.c (merge_properties, intervals_equal):
-       Use Fplist_member instead of Fmemq to find properties.
-
-2007-03-23  Glenn Morris  <rgm@gnu.org>
-
-       * unexhp9k800.c: Restore file with clarified legal status.
-       * m/sr2k.h: Restore since dependency unexhp9k800.c is restored.
-
-2007-03-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * widget.c (EmacsFrameSetCharSize): Catch X errors.
-
-2007-03-22  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Fcopy_file): Call barf_or_query_if_file_exists with
-       non-encoded file name.
-       (Frename_file): Likewise.
-       (Fadd_name_to_file): Likewise.
-       (Fmake_symbolic_link): Likewise.
-
-2007-03-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * Makefile.in (alloca.o, gtkutil.o): Depend on systime.h.
-       (dired.o, editfns.o, fileio.o, msdos.o): Depend on atimer.h.
-       (dosfns.o, window.o, fns.o, macselect.o): Depend on atimer.h and
-       systime.h.
-       (term.o, print.o, lread.o): Depend on blockinput.h, atimer.h, and
-       systime.h.
-       (macfns.o): Remove duplicate dependency on systime.h.
-
-       * dispnew.c (Fopen_termscript): Add BLOCK_INPUT around fclose.
-       (Fsend_string_to_terminal): Add BLOCK_INPUT around fwrite.
-
-       * fileio.c (do_auto_save_unwind): Add BLOCK_INPUT around fclose.
-       (Fdo_auto_save): Add BLOCK_INPUT around fwrite.
-
-       * keyboard.c (record_char): Add BLOCK_INPUT around fwrite.
-       (Fopen_dribble_file): Add BLOCK_INPUT around fclose.
-
-       * lread.c: Include blockinput.h.
-       (readchar, Fget_file_char): Add BLOCK_INPUT around getc.
-       (unreadchar): Add BLOCK_INPUT around ungetc.
-       (load_unwind): Add BLOCK_INPUT around fclose.
-
-       * print.c: Include blockinput.h.
-       (Fredirect_debugging_output): Add BLOCK_INPUT around fclose.
-
-       * process.c (Fmake_network_process) [HAVE_GETADDRINFO]:
-       Clear immediate_quit before calling freeaddrinfo.
-       Add BLOCK_INPUT around freeaddrinfo.
-
-       * term.c: Include blockinput.h.
-       (write_glyphs, insert_glyphs): Add BLOCK_INPUT around fwrite.
-
-2007-03-19  Richard Stallman  <rms@gnu.org>
-
-       * keyboard.c (NUM_RECENT_KEYS): Bump up to 300.
-
-       * buffer.c (syms_of_buffer): Doc fix.
-
-2007-03-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.c (pbm_load): Signal error for invalid image size.
-
-2007-03-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (note_mouse_movement): Don't return immediately for
-       LeaveNotify case.
-
-       * macmenu.c (popup_activated_flag): New variable.
-       (x_activate_menubar, mac_menu_show): Set it during menu tracking.
-       (popup_activated): New function.
-
-       * xdisp.c (redisplay_internal, note_mouse_highlight):
-       Check popup_activated for MAC_OS.
-
-2007-03-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (syms_of_buffer) <buffer-display-table>: Doc fix.
-       Reported by Nikolaj Schumacher <n_schumacher@web.de>.
-
-2007-03-17  Richard Stallman  <rms@gnu.org>
-
-       * dired.c (file_name_completion): gcpro NAME.
-
-2007-03-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (try_window_id): Increment matrix positions if the
-       buffer's byte count has increased, but not the character count.
-
-2007-03-12  Andreas Schwab  <schwab@suse.de>
-
-       * lisp.h: Declare check_obarray.
-
-       * process.c (Fdelete_process): Properly handle deletion of first
-       element of deleted_pid_list.
-       (create_process): Declare pid as pid_t.
-
-2007-03-12  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (sigchld_handler): Change type of pid to pid_t.
-       Scan deleted_pid_list explicitly to avoid using Fmember which don't
-       know about mark bits and make_fixnum_or_float which may malloc.
-       Reported by Andreas Schwab.
-
-       * keyboard.c (read_key_sequence): Store original event into keybuf
-       when replaying sequence with local keymap(s) from string.
-
-2007-03-12  Glenn Morris  <rgm@gnu.org>
-
-       * editfns.c (Fdecode_time, Fencode_time): Doc fix ("daylight
-       savings" to "daylight saving").
-
-2007-03-11  Sam Steingold  <sds@gnu.org>
-
-       * process.c (sigchld_handler): Sleep before wait3 to avoid a busyloop.
-
-2007-03-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (Fx_server_vendor): Change vendor string to "Apple Inc.".
-
-2007-03-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_CARBON_EVENTS] (mac_handle_mouse_event):
-       Ignore mouse wheel movement on title bar or tool bar.
-
-2007-03-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keyboard.c (help_form_saved_window_configs): New var.
-       (read_char_help_form_unwind): New function.
-       (read_char): Don't restore window configuration if a mouse click
-       arrives while the help form is being displayed.
-
-2007-03-10  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): Don't automatically select a new window
-       start for a contination line during mouse-click.
-
-2007-03-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): Ignore buttons > 3 for the tool bar.
-
-2007-03-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * keymap.c (Fdescribe_buffer_bindings): Check that BUFFER is valid.
-
-2007-03-08  Richard Stallman  <rms@gnu.org>
-
-       * keyboard.c (syms_of_keyboard): Doc fix.
-
-2007-03-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * minibuf.c (Ftry_completion): Don't short circuit if
-       completion-ignore-case is non-nil.
-
-2007-03-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (mac_set_scroll_bar_width, mac_frame_parm_handlers):
-       Undo 2006-03-06 changes.
-
-       * macterm.c (XTset_vertical_scroll_bar) [MAC_OSX]: Don't show scroll
-       bar if its width is smaller than that of Aqua small scroll bar.
-
-2007-03-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * minibuf.c (read_minibuf): Bind inhibit-read-only a bit longer so as
-       to handle correctly prompts with read-only property.
-
-2007-03-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * sound.c (wav_play): Check header->data_length to see how much we
-       shall read.
-       (alsa_period_size): Convert ALSA period size in frames to bytes.
-       (alsa_write): Return if frames is zero.
-
-2007-03-06  Kenichi Handa  <handa@m17n.org>
-
-       * xselect.c (Vselection_coding_system): Documentation improved.
-
-2007-03-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (x_scroll_bar_create, XTread_socket): Replace #if
-       USE_TOOLKIT_SCROLL_BARS with #ifdef USE_TOOLKIT_SCROLL_BARS.
-       (x_set_window_size): Call SET_FRAME_GARBAGED.  Clear window if
-       internal border width has changed.
-
-       * macterm.h (struct mac_output): New member `internal_border_width'.
-
-2007-03-04  Richard Stallman  <rms@gnu.org>
-
-       * window.c (Fdisplay_buffer): Doc fix.
-
-2007-03-03  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in: Don't clear out LIB_X11_LIB, since XFT_LIBS does
-       not include -lX11 on Solaris.
-
-2007-03-02  Stuart D. Herring  <herring@lanl.gov>
-
-       * keymap.c (Fkey_binding): Don't consider one-element lists as events.
-
-2007-03-01  Kenichi Handa  <handa@m17n.org>
-
-       * process.c (send_process_object): Check the process status and
-       signal an error if something is wrong.
-
-2007-02-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * insdel.c (Fcombine_after_change_execute): Return nil if
-       combine_after_change_buffer has been invalidated.
-
-2007-02-25  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * m/xtensa.h: New file.
-
-2007-02-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * .gdbinit (xprintstr): Ensure GDB (> 6.6) prints symbol name
-       as strings and not character arrays.
-
-2007-02-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag)
-       (x_set_toolkit_scroll_bar_thumb): Add bar->min_handle as margin to
-       scroll bar handle size in order to avoid `scroll backward' problem.
-       (x_scroll_bar_create, XTset_vertical_scroll_bar)
-       [USE_TOOLKIT_SCROLL_BARS]: Initialize bar->min_handle.
-
-       * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
-       New member `min_handle'.
-
-2007-02-23  Kim F. Storm  <storm@cua.dk>
-
-       * print.c (print): Reset print_number_index if Vprint_number_table
-       is nil.
-
-2007-02-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32.c (stat, get_long_basename, is_unc_volume): Use _mbspbrk
-       instead of strpbrk.
-
-2007-02-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (mac_menu_show): Call unbind_to early.  Use variable
-       `menu_item_selection' as in W32 version.
-       [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Add explicit
-       braces to avoid ambiguous `else'.
-
-       * macterm.c (mac_display_info_for_display): Remove function.
-       (mac_flush_display_optional) [USE_CG_DRAWING]: New function.
-       (x_redisplay_interface) [USE_CG_DRAWING]: Set it as handler for
-       flush_display_optional.
-       [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_press):
-       New argument MOUSE_POS.  All uses changed.  Set bar->dragging to
-       negative integer if scroll bar handle is pressed.
-       [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_release):
-       Negative bar->dragging means scroll bar handle is not dragged.
-       [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag): Get initial
-       offset of scroll bar handle from negative bar->dragging.
-       (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Modifiers for scroll
-       bar click is compared against mapped one.  Set down/up_modifier
-       for scroll bar click event with control key.
-
-       * macterm.h (x_display_info_for_display): Remove extern.
-       (SCROLL_BAR_UNPACK, SET_SCROLL_BAR_CONTROL_HANDLE): Don't limit
-       value to be unpacked to 32-bit on LP64 model.
-
-2007-02-23  Kenichi Handa  <handa@m17n.org>
-
-       * process.c (send_process_object_unwind): New function.
-       (send_process_object): New function.
-       (Fprocess_send_region): Call send_process_object.
-       (Fprocess_send_string): Likewise.
-
-2007-02-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32menu.c (w32_menu_show): Mark the frame's menu as inactive
-       when popup menu finishes.
-
-       * w32fns.c (menubar_in_use): New flag.
-       (w32_wnd_proc) <WM_INITMENU, WM_EXITMENULOOP, WM_TIMER, WM_COMMAND>:
-       Use it.
-
-       * w32menu.c (Fx_popup_menu): Don't free menu strings here.
-       (w32_menu_show): Do it here instead.
-
-       * w32fns.c (w32_wnd_proc) <WM_INITMENU>: Set menubar_active frame
-       parameter.
-
-       * w32menu.c (current_popup_menu): Make available globally.
-       (menubar_selection_callback): Free menu strings before pushing the
-       menu event into the keyboard buffer.  Remove menu_command_in_progress.
-
-       * w32fns.c (current_popup_menu): Use from w32menu.c.
-       (w32_wnd_proc) <WM_EXITMENULOOP, WM_TIMER>: Use menubar_active
-       and current_popup_menu to determine whether a menubar menu has
-       been cancelled.
-
-       * w32term.h (w32_output): Remove menu_command_in_progress.
-
-2007-02-22  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (update_frame, update_single_window): Set force_p here if
-       redisplay_dont_pause is set or Vredisplay_preemption_period is nil...
-       (update_window, update_frame_1): ... instead of here.
-       (update_text_area): Clear mouse face on header lines.
-
-2007-02-21  Kim F. Storm  <storm@cua.dk>
-
-       * minibuf.c (Fassoc_string): Doc fix.  Allow symbol for KEY too.
-
-2007-02-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (WINDOW_RESOURCE, TERM_WINDOW_RESOURCE): Remove macros.
-       [USE_MAC_TSM] (mac_handle_text_input_event): Remove unused variable
-       `mapped_modifiers'.
-       (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Use Keyboard
-       Layout Services routines to get current Unicode keyboard layout.
-
-2007-02-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frame.c (x_set_screen_gamma): Apply gamma value to the frame's
-       bgcolor.
-
-2007-02-19  Kim F. Storm  <storm@cua.dk>
-
-       * minibuf.c (Fassoc_string): Allow symbols as keys.
-
-       * w32term.c (w32_set_scroll_bar_thumb): Don't resize scroll-bar
-       handle while dragging, except when we get close to eob.
-       Fix position and size calculations so we don't scroll backwards
-       just by clicking on the handle.
-
-2007-02-17  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * Makefile.in (${emacsapp}Contents/Resources/Emacs.rsrc)
-       [HAVE_CARBON]: Remove target.
-       (macosx-app) [HAVE_CARBON]: Don't depend on it.
-
-2007-02-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * callproc.c (syms_of_callproc) <doc-directory>:
-       <configure-info-directory>:
-       (Fgetenv_internal): Fix typos in docstrings.
-
-       * doc.c (Fsubstitute_command_keys): Fix typo in docstring.
-
-2007-02-16  Andreas Schwab  <schwab@suse.de>
-
-       * frame.c (Fmodify_frame_parameters): Return a value.
-
-       * editfns.c (Fformat): Add support for '+' flag.
-       * doprnt.c (doprnt1): Likewise.  Fix overflow checking.
-
-2007-02-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * s/umips.h: Unused file removed.
-
-2007-02-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * xfaces.c (Fcolor_distance): Don't continue checking a color for
-       errors after it has been correctly parsed as an RGB list.
-
-2007-02-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (do_ewmh_fullscreen): Also check for _NET_WM_STATE_FULLSCREEN.
-
-2007-02-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (Fx_focus_frame): Move current process to foreground if
-       it is not.
-       [TARGET_API_MAC_CARBON] (Fx_file_dialog): Replace #if MAC_OSX with
-       #ifdef MAC_OSX.
-       (Fmac_set_font_panel_visible_p) [USE_MAC_FONT_PANEL]: Rename from
-       Fmac_set_font_panel_visibility.  All uses changed.  Rename argument
-       VISIBLE to FLAG.
-
-       * macterm.c (MakeMeTheFrontProcess) [MAC_OSX]: Remove function.
-       (mac_initialize) [MAC_OSX]: Call SetFrontProcess instead of
-       MakeMeTheFrontProcess.
-
-2007-02-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frame.c (x_set_screen_gamma): Clear face cache.
-
-2007-02-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (Fgenerate_new_buffer_name, Fbuffer_modified_tick):
-       Reflow docstrings.
-
-2007-02-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * window.c (Fwindow_height, Fwindow_hscroll)
-       (Fwindow_redisplay_end_trigger, Fwindow_point, Fwindow_start)
-       (Fwindow_end, Fwindow_display_table, Fwindow_text_height):
-       Document the effect of WINDOW arg being nil.
-
-2007-02-08  Kim F. Storm  <storm@cua.dk>
-
-       * minibuf.c (read_minibuf): Fix 2007-01-30 change.
-       Use Qlambda as interim value of Vminibuffer_completing_file_name.
-       (Fcompleting_read): Use non-filename maps if value is Qlambda (or Qnil).
-       (syms_of_minibuf) <minibuffer-completing-file-name>: Document lambda.
-
-2007-02-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * makefile.w32-in ($(TRES)): Use literal "../nt/emacs.rc" instead
-       of $(ALL_DEPS).
-
-2007-02-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in ($(TRES)): Depend on stamp_BLD, since $(TRES) is
-       put into $(BLD).
-
-2007-02-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frame.c (Fmodify_frame_parameters): Don't bind
-       Qinhibit_default_face_x_resources, which has no effect.
-       (Qinhibit_default_face_x_resources): Symbol deleted.
-
-2007-02-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * indent.c (Fmove_to_column): Document that the argument COLUMN is
-       taken from prefix numeric argument.
-
-2007-02-03  Juanma Barranquero  <lekktu@gmail.com>
-
-       * lread.c (syms_of_lread) <load-history>: Doc fix.
-
-2007-01-29  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>  (tiny change)
-
-       * xterm.c [!USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_expose):
-       Use the foreground color of the scroll-bar face when drawing
-       the scroll-bar's border.
-
-2007-02-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (do_ewmh_fullscreen): Check that what != NULL before
-       calling wm_supports.
-
-2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * lread.c (syms_of_lread) <user-init-file>: Doc fix.
-       Wording by Eli Zaretskii.
-
-2007-01-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (update_frame_tool_bar): Initialize h/vmargin to 0.
-
-2007-01-30  Richard Stallman  <rms@gnu.org>
-
-       * minibuf.c (read_minibuf):
-       Save and clear Vminibuffer_completing_file_name.
-       (read_minibuf_unwind): Restore it.
-       (Vminibuffer_completion_table, Qminibuffer_completion_table)
-       (Vminibuffer_completion_predicate, Qminibuffer_completion_predicate)
-       (Vminibuffer_completion_confirm, Qminibuffer_completion_confirm)
-       (Vminibuffer_completing_file_name): Definitions moved up.
-
-2007-01-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * m/hp800.h: Restore, removing HP-UX support.
-
-2007-01-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * Makefile.in: Use a variable, XFT_LIBS, instead #define LIB_X11_LIB.
-
-2007-01-28  Richard Stallman  <rms@gnu.org>
-
-       * minibuf.c (Ftry_completion, Fall_completions)
-       (Fcompleting_read, Ftest_completion):
-       Rename arg ALIST or TABLE to COLLECTION.
-
-2007-01-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * unexhp9k800.c: Remove due to lack of legal papers.
-
-       * m/sr2k.h, m/hp800.h: Remove due to dependence on above.
-
-2007-01-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Doc fix.
-
-       * minibuf.c (Fcompleting_read): Doc fix.
-
-2007-01-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_initialize): Call XftInit if HAVE_XFT.
-
-       * Makefile.in: Use XFT_LIBS if defined.
-
-2007-01-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use
-       BLOCK_INPUT/UNBLOCK_INPUT.
-
-       * blockinput.h (interrupt_input_blocked): Declare volatile.
-
-       * keyboard.c (interrupt_input_blocked): Declare volatile.
-
-       * syssignal.h (SIGNAL_THREAD_CHECK): Use pthread_equal.
-
-2007-01-24  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (describe_map): Don't consider prefix keys to be shadowed.
-
-2007-01-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * editfns.c (Finsert_char): Doc fix.
-       (Fget_internal_run_time, Fdecode_time): Fix typos in docstrings.
-
-2007-01-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag):
-       Don't pass keyboard modifiers to mac_store_drag_event, but put
-       them as kEventParamKeyModifiers Apple event parameter.
-
-2007-01-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (try_window): Revert previous change.
-
-       * dispnew.c (update_text_area): Revert 2006-09-17 change.
-       Always redraw non-mode-line rows with mouse-face.
-
-2007-01-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (try_window): Clear mouse-face highlights first.
-
-       * window.c (set_window_buffer): Revert 2006-11-22 change.
-
-2007-01-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * .gdbinit (ppt, xtype, xmisctype, xint, xptr, xmarker, xframe)
-       (xbuffer, xcons, xcar, xcdr): Fix doc strings.
-
-2007-01-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keyboard.c (read_key_sequence): Extract local map only if the
-       given position is in an accessible buffer region.
-
-2007-01-19  Nick Roberts  <nickrob@snap.net.nz>
-
-       * .gdbinit: Reformat documentation so that first sentence
-       displays properly with "help user-defined" (like apropos).
-
-2007-01-18  Bruno Haible  <bruno@clisp.org>  (tiny change)
-
-       * epaths.in: Move PATH_DOC from local/info to local/share/info.
-
-2007-01-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]:
-       Create movable modal window instead of movable alert window.
-       (create_and_show_dialog) [!MAC_OSX]: Use DeactivateControl instead
-       of DisableControl.
-
-       * macselect.c (Fmac_resume_apple_event): Set error number when
-       descriptor type of reply is non-null.
-
-2007-01-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]:
-       Use DisableControl for disabled items.  Set default button to first
-       enabled one.  Use icon of application in execution.
-
-2007-01-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * process.c (Fdelete_process, Fprocess_id, sigchld_handler):
-       Copy PID into EMACS_INT to avoid GCC warnings.
-
-       * fns.c (maybe_resize_hash_table): Copy new size of hash table
-       into EMACS_INT to avoid GCC warnings.
-
-       * editfns.c (Fuser_uid, Fuser_real_uid): Copy values returned by
-       geteuid and getuid into EMACS_INT to avoid GCC warnings.
-
-       * dired.c (Ffile_attributes): Fix last change.
-
-2007-01-12  Eli Zaretskii  <eliz@gnu.org>
-
-       * dired.c (Ffile_attributes): Copy some members of `struct stat'
-       into int's to avoid GCC warnings about limited range of short in
-       arguments to FIXNUM_OVERFLOW_P.
-
-2007-01-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (HAVE_DIALOGS): Define if TARGET_API_MAC_CARBON.
-       (mac_handle_dialog_event, install_dialog_event_handler)
-       (create_and_show_dialog) [TARGET_API_MAC_CARBON]: New functions.
-       (DIALOG_LEFT_MARGIN, DIALOG_TOP_MARGIN, DIALOG_RIGHT_MARGIN)
-       (DIALOG_BOTTOM_MARGIN, DIALOG_MIN_INNER_WIDTH)
-       (DIALOG_MAX_INNER_WIDTH, DIALOG_BUTTON_BUTTON_HORIZONTAL_SPACE)
-       (DIALOG_BUTTON_BUTTON_VERTICAL_SPACE, DIALOG_BUTTON_MIN_WIDTH)
-       (DIALOG_TEXT_MIN_HEIGHT, DIALOG_TEXT_BUTTONS_VERTICAL_SPACE)
-       (DIALOG_ICON_WIDTH, DIALOG_ICON_HEIGHT, DIALOG_ICON_LEFT_MARGIN)
-       (DIALOG_ICON_TOP_MARGIN) [TARGET_API_MAC_CARBON]: New macros.
-       (mac_dialog) [TARGET_API_MAC_CARBON]: Remove function.
-       (mac_dialog_show) [TARGET_API_MAC_CARBON]: Use create_and_show_dialog.
-
-       * macterm.c (x_free_frame_resources) [USE_CG_DRAWING]:
-       Call mac_prepare_for_quickdraw.
-       (quit_char, make_ctrl_char) [TARGET_API_MAC_CARBON]: Move externs
-       outside #ifdef MAC_OSX.
-       (mac_quit_char_key_p) [TARGET_API_MAC_CARBON]: Move function
-       outside #ifdef MAC_OSX.
-       (mac_check_bundle) [MAC_OSX]: Remove unused function.
-
-       * macterm.h (mac_quit_char_key_p): Move extern outside #ifdef MAC_OSX.
-       (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): Parenthesize definitions.
-
-2007-01-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use pthread_equal,
-       block/unblock SIGIO.
-
-2007-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * editfns.c (Fformat): Allow integer-format to work with floats of size
-       larger than most-positive-fixnum (but still smaller than MAXINT).
-
-       * dired.c (Ffile_attributes): Use floats for large uids/gids.
-
-2007-01-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs.c (syms_of_emacs) <path-separator>: Doc fix.
-
-2007-01-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * callproc.c (Fcall_process_region) [HAVE_MKSTEMP]: Add BLOCK_INPUT
-       around mkstemp.
-
-       * image.c (XDrawLine) [MAC_OS]: Remove macro.
-       (XCreateGC_pixmap) [!HAVE_NTGUI]: Likewise.
-       (x_disable_image) [!HAVE_NTGUI]: Use XCreateGC instead of
-       XCreateGC_pixmap.
-
-       * macgui.h (Display): Typedef to opaque type.
-
-       * macmenu.c (mac_dialog_modal_filter) [MAC_OSX]: New function.
-       (Fx_popup_dialog) [MAC_OSX]: Use standard alert if called from
-       Fmessage_box, Fyes_or_no_p, or Fy_or_n_p.
-       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030] (menu_quit_handler):
-       Use mac_quit_char_key_p.
-
-       * macterm.c (XDrawLine): Rename from mac_draw_line_to_pixmap.
-       (XCreateGC): Change type of 2nd argument to void *.
-       (XFreeGC) [USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
-       Fix last change.
-       (mac_to_emacs_modifiers): Change return type to int.
-       [USE_CARBON_EVENTS] (mac_event_to_emacs_modifiers): Likewise.
-       (mac_mapped_modifiers): New function.
-       (XTread_socket): Use it.
-       [USE_TSM] (mac_handle_text_input_event): Likewise.
-       (do_window_update) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
-       (mac_quit_char_modifiers, mac_quit_char_keycode) [MAC_OSX]:
-       Remove variables.
-       (mac_determine_quit_char_modifiers, init_quit_char_handler)
-       [MAC_OSX]: Remove functions.
-       (make_ctrl_char) [MAC_OSX]: Add extern.
-       (mac_quit_char_key_p) [MAC_OSX]: New function.
-       (mac_initialize) [MAC_OSX]: Don't call init_quit_char_handler.
-
-       * macterm.h (FONT_MAX_WIDTH): Remove unused macro.
-       (XCreateGC): Change type in extern.
-       (XDrawLine): Rename from mac_draw_line_to_pixmap.
-       (mac_quit_char_key_p) [MAC_OSX]: Add extern.
-
-2007-01-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c (init_keyboard): Initialize interrupt_input_blocked and
-       interrupt_input_pending.
-
-       * xterm.h (x_display_info): New: net_supported_atoms,
-       nr_net_supported_atoms and net_supported_window.
-
-       * xterm.c (last_user_time): New variable.
-       (handle_one_xevent): Set last_user_time from events that have Time.
-       Set net_supported_window to 0 when reparented.
-       (wm_supports): New function.
-       (do_ewmh_fullscreen): Use wm_supports to check for _NET_WM_STATE.
-       (x_term_init): Initialize net_supported_atoms, nr_net_supported_atoms
-       and net_supported_window.
-
-2007-01-05  Kim F. Storm  <storm@cua.dk>
-
-       * indent.c (Fvertical_motion): Fix it overshoot check for overlay
-       strings without embedded newlines immediately followed by newline.
-
-2007-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * editfns.c (Fformat_time_string, Fdecode_time, Fencode_time)
-       (Fcurrent_time_string, Fcurrent_time_zone): Add BLOCK_INPUT around
-       gmtime/localtime/emacs_memftimeu/mktime.
-
-       * mac.c (Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE
-       instead of 'EMAx'.
-       [!MAC_OSX] (sys_open, sys_creat, sys_fopen): Likewise.
-
-       * macgui.h (struct _XGC) [USE_CG_DRAWING
-       && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New members cg_fore_color
-       and cg_back_color.
-
-       * macmenu.c (Vshow_help_function) [TARGET_API_MAC_CARBON]: Add extern.
-       (restore_show_help_function, menu_target_item_handler)
-       [TARGET_API_MAC_CARBON]: New functions.
-       (install_menu_target_item_handler): New function.
-       (add_menu_item) [TARGET_API_MAC_CARBON]: Set help string as menu
-       item property.
-
-       * macterm.c (CG_SET_FILL_COLOR_MAYBE_WITH_CGCOLOR)
-       (CG_SET_FILL_COLOR_WITH_GC_FOREGROUND)
-       (CG_SET_FILL_COLOR_WITH_GC_BACKGROUND)
-       (CG_SET_STROKE_COLOR_MAYBE_WITH_CGCOLOR)
-       (CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND): New macros.
-       (mac_cg_color_space_rgb) [USE_CG_DRAWING]: New variable.
-       (mac_cg_color_black) [USE_CG_DRAWING
-       && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New variable.
-       (init_cg_color) [USE_CG_DRAWING]: New function.
-       (mac_draw_line, mac_draw_rectangle) [USE_CG_DRAWING]: Use
-       CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND instead of CG_SET_STROKE_COLOR.
-       (mac_erase_rectangle, mac_clear_window, mac_draw_cg_image)
-       (mac_fill_rectangle, mac_draw_image_string_cg) [USE_CG_DRAWING]:
-       Use CG_SET_FILL_COLOR_WITH_GC_FOREGROUND or
-       CG_SET_FILL_COLOR_WITH_GC_BACKGROUND instead of CG_SET_FILL_COLOR.
-       (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Likewise.
-       (XCreateGC, XFreeGC, XSetForeground, XSetBackground) [USE_CG_DRAWING
-       && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use gc->cg_fore_color and/or
-       gc->cg_back_color.
-       (install_drag_handler, remove_drag_handler): Make extern.
-       (install_menu_target_item_handler): Add extern.
-       (install_window_handler): Call install_menu_target_item_handler.
-       [MAC_OS8] (main): Use MAC_EMACS_CREATOR_CODE instead of 'EMAx'.
-       (mac_initialize) [USE_CG_DRAWING]: Call init_cg_color.
-
-       * macterm.h (MAC_EMACS_CREATOR_CODE): New enumerator.
-
-2007-01-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * window.c (Fwindow_end): Fix use of >= operator.
-
-2007-01-03  Richard Stallman  <rms@gnu.org>
-
-       * window.c (Fwindow_end): Check BUF_OVERLAY_MODIFF like BUF_MODIFF.
-
-2007-01-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.h (xg_menu_item_cb_data_): Remove highlight_id and
-       unhighlight_id.
-
-       * gtkutil.c (menuitem_highlight_callback): Invoked widget is the
-       parent of the menu item.  Get menu item widget from event.
-       (xg_create_one_menuitem, xg_update_menu_item): highlight_id and
-       unhighlight_id has been removed.
-       (create_menus): Connect enter/leave-notify-event to the menu instead
-       of individual items.
-
-2006-12-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (update_frame_tool_bar): Connect create-menu-proxy with
-       xg_tool_bar_menu_proxy.
-       (xg_tool_bar_menu_proxy): New function.
-       (xg_tool_bar_proxy_callback): New function.
-
-2006-12-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_tool_bar_button_cb): Save last modifier on widget.
-       (xg_tool_bar_callback): Remove check for button.
-       (update_frame_tool_bar): Put an event box in the tool bar and a button
-       in the event box.  Attach enter/leave-notify-event to the event box.
-
-2006-12-30  Richard Stallman  <rms@gnu.org>
-
-       * keymap.c (Fdefine_key): Doc fix.
-
-2006-12-29  Kim F. Storm  <storm@cua.dk>
-
-       * frame.h (struct frame): New member minimize_tool_bar_window_p.
-
-       * xdisp.c (auto_resize_tool_bars_p): Replace with ...
-       (Vauto_resize_tool_bars): ... this.
-       (syms_of_xdisp): DEFVAR_LISP and initialize it.  Update doc string
-       to describe new value `grow-only', and use of C-l.
-       (display_tool_bar_line): Only use default face for border below
-       toolbar if not grow-only (to get acceptable visual appearence).
-       Explicitly set visible_height for empty toolbar lines.
-       (redisplay_tool_bar): Handle `grow-only' setting.  Check and clear
-       minimize_tool_bar_window_p flag.
-
-       * window.c (Frecenter): Set minimize_tool_bar_window_p flag
-       when called without arg to redraw with minimum toolbar height.
-       Update doc string.
-
-2006-12-29  Jason Rumney  <jasonr@gnu.org>
-
-       * s/ms-w32.h (tzname): Do not define in msvc8.
-       (utime): Do not define in msvc8.
-
-       * regex.c (regerror): Change parameter name err_code.
-
-2006-12-26  Richard Stallman  <rms@gnu.org>
-
-       * search.c (Fsearch_forward): Doc fix.
-
-       * callint.c (Finteractive): Doc fix.
-
-2006-12-25  Kim F. Storm  <storm@cua.dk>
-
-       * s/ms-w32.h (BROKEN_DATAGRAM_SOCKETS): Define it.
-
-2006-12-23  Eli Zaretskii  <eliz@gnu.org>
-
-       * keyboard.c (some_mouse_moved): Fix last change.
-
-2006-12-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * callproc.c (syms_of_callproc) <shell-file-name>: Doc fix.
-
-2006-12-22  Mark Davies  <mark@mcs.vuw.ac.nz>
-
-       * m/amdx86-64.h, m/hp800.h: Add support for NetBSD.
-       * m/sh3el.h: New file.
-
-2006-12-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (emacs, temacs): Depend on stamp_BLD instead of
-       $(BLD).
-       ($(OBJ0) $(OBJ1) $(WIN32OBJ)): New dependency on stamp_BLD.
-       (bootstrap-temacs): Pass $(XMFLAGS) to sub-make.
-       ($(OBJ0) $(OBJ1) $(WIN32OBJ)): Add lastfile.$(O) and firstfile.$(O).
-       (clean): Delete stamp_BLD.
-
-2006-12-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (mac_update_title_bar) [TARGET_API_MAC_CARBON]:
-       Call mac_update_proxy_icon also when buffer modification flag changed.
-       [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): Don't update alias,
-       but compare FSRef/FSSpec of resolved alias.
-
-2006-12-21  Kim F. Storm  <storm@cua.dk>
-
-       * w32.c (_sys_wait_accept): Fix handle leak.
-
-2006-12-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * sound.c: Include <alsa/asoundlib.h> if ALSA_SUBDIR_INCLUDE is
-       defined.
-
-2006-12-20  Kim F. Storm  <storm@cua.dk>
-
-       * s/ms-w32.h (BROKEN_NON_BLOCKING_CONNECT): Define it.
-
-2006-12-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * keyboard.c (syms_of_keyboard) <double-click-time>:
-       * mac.c (Fmac_code_convert_string):
-       * search.c (Fsearch_forward): Doc fixes.
-
-2006-12-19  Kim F. Storm  <storm@cua.dk>
-
-       Rework 2006-12-04 change.  A SIGUSR1 (SIGUSR2) signal now generates
-       a sigusr1 event instead of [signal usr1] sequence, and signal events
-       are now supposed to be handled via special-event-map.
-
-       * keyboard.c (kbd_buffer_store_event_hold): Undo 2006-12-04 change.
-       (make_lispy_event): Don't generate Qsignal prefix for code 0.
-       Abort if signal code is unknown.
-       (store_user_signal_events): Don't make Qsignal prefix (code 0).
-       (Qsignal): Move declaration back to process.c.
-       (syms_of_keyboard): Don't intern or staticpro it here.
-
-       * process.c (Qsignal): Declare here.
-       (syms_of_process): Intern or staticpro it.
-
-       * emacs.c (main): Rename user signals to sigusr1 and sigusr2.
-
-       * .gdbinit: Pass on SIGUSR1 and SIGUSR2 to Emacs.
-
-2006-12-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (syms_of_buffer) <buffer-display-table>:
-       <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
-
-2006-12-17  Richard Stallman  <rms@gnu.org>
-
-       * fileio.c (Fread_file_name_internal): Pass Vread_file_name_predicate
-       to Ffile_name_completion.
-
-       * dired.c (file_name_completion): New arg PREDICATE.  Some cleanup.
-       (Ffile_name_completion): New arg PREDICATE.
-
-2006-12-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (Fkill_buffer): Doc fix.
-       (syms_of_buffer) <kill-buffer-query-functions>: Doc fix.
-
-2006-12-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * minibuf.c (Ftry_completion): Check that obarray buckets are symbols.
-
-2006-12-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (w32-window-exists-p): New function.
-       (syms_of_w32fns): Defsubr it.
-
-       * prefix-args.c [STDC_HEADERS]: Include stdlib.h.
-
-2006-12-16  Juanma Barranquero  <lekktu@gmail.com>
-
-       * minibuf.c (Ftry_completion): Use `check_obarray' if ALIST is a vector.
-
-2006-12-15  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs.c (USAGE3): Clarify documentation of --color.
-
-2006-12-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]:
-       New variable.
-       (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE): New macros.
-       [!MAC_OSX] (select): Use them.
-       [MAC_OSX] (select_and_poll_event, sys_select): Likewise.
-       (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: New function.
-
-       * macfns.c (mac_atsu_font_face_attributes) [USE_ATSUI]: Add extern.
-       (Fmac_atsu_font_face_attributes) [USE_ATSUI]: New function.
-       (syms_of_macfns) [USE_ATSUI]: Defsubr it.
-
-       * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag):
-       Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event.
-
-       * macterm.c (mac_query_char_extents) [USE_ATSUI]: Don't call
-       ATSUGetGlyphBounds if not necessary.
-       (Vmac_atsu_font_table) [USE_ATSUI]: Remove variable.
-       (syms_of_macterm) [USE_ATSUI]: Don't defvar it.
-       (fm_get_style_from_font, atsu_find_font_from_family_name)
-       (atsu_find_font_family_name, mac_atsu_font_face_attributes)
-       [USE_ATSUI]: New functions.
-       (init_font_name_table) [USE_ATSUI]: Use atsu_find_font_family_name.
-       (mac_load_query_font) [USE_ATSUI]: Use atsu_find_font_from_family_name.
-       Don't get metrics for Latin-1 right half characters.
-       (mac_load_query_font): Don't load font if space width is not positive.
-       [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event):
-       Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event.
-       (XTread_socket): Call SelectWindow when unfocused frame is clicked.
-
-       * macterm.h (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: Add extern.
-
-2006-12-15  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (ignore_mouse_drag_p): New global var.
-       (some_mouse_moved): Return 0 if it is non-zero.
-       (make_lispy_event): Generate click event on mouse up if
-       ignore_mouse_drag_p is non-zero, even if mouse moved.
-       Clear ignore_mouse_drag_p on mouse down/up.
-
-       * xdisp.c (redisplay_window): Set ignore_mouse_drag_p if tool-bar
-       is resized to avoid generating a mouse drag event.
-
-2006-12-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * w32fns.c (w32_wnd_proc): Force non-tooltip frames to respect the
-       minimum tracking size.  Remove non-working old hack to do the same.
-
-2006-12-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * emacs.c (handle_user_signal): Move function to keyboard.c.
-       (main): Use add_user_signal for SIGUSR1 and SIGUSR2.
-
-       * keyboard.c (make_lispy_event): Use find_user_signal_name.
-       (read_avail_input): Store pending user signal events.
-       (struct user_signal_info): New struct.
-       (user_signals): New variable.
-       (add_user_signal, store_user_signal_events)
-       (find_user_signal_name): New functions.
-       (handle_user_signal): Move function from emacs.c.  Don't store
-       USER_SIGNAL_EVENT here, but increment number of pending signals.
-
-       * keyboard.h (add_user_signals): Add extern.
-
-2006-12-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (syms_of_buffer) <cursor-in-non-selected-windows>:
-       <default-scroll-up-aggressively, default-scroll-down-aggressively>:
-       <line-spacing, left-margin>: Doc fixes.
-
-       * xdisp.c (syms_of_xdisp) <mode-line-inverse-video>: Doc fix.
-
-2006-12-10  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (show_mouse_face): Never use text cursor in tool-bar.
-
-2006-12-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * abbrev.c (syms_of_abbrev) <last-abbrev-text>:
-       * buffer.c (syms_of_buffer) <default-major-mode>:
-       * keymap.c (Flookup_key):
-       * lread.c (Feval_buffer, Feval_region):
-       * macterm.c (syms_of_macterm) <x-use-underline-position-properties>:
-       <x-underline-at-descent-line, mac-emulate-three-button-mouse>:
-       * marker.c (Fmarker_insertion_type):
-       * minibuf.c (syms_of_minibuf) <minibuffer-completion-table>:
-       * msdos.c (syms_of_msdos) <delete-exited-processes>:
-       * w32term.c (syms_of_w32term) <x-use-underline-position-properties>:
-       <x-underline-at-descent-line>:
-       * xdisp.c (format-mode-line):
-       * xterm.c (syms_of_xterm) <x-use-underline-position-properties>:
-       <x-underline-at-descent-line>: Doc fixes.
-
-2006-12-10  Andreas Schwab  <schwab@suse.de>
-
-       * systime.h (EMACS_GET_TIME): Remove check for
-       HAVE_STRUCT_TIMEZONE which is never defined.
-
-2006-12-10  Alan Mackenzie  <acm@muc.de>
-
-       * syntax.c (Fpartial_parse_sexp): Correct Docco: Elt 8 of the
-       result is now neither the last elt nor optional for OLDSTATE.
-
-2006-12-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * process.c (Fsignal_process): Doc fix.  Use XFLOAT_DATA to
-       extract the process ID from a Lisp float.
-
-2006-12-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xterm.c (XTframe_raise_lower): Comment out _NET_ACTIVE_WINDOW code.
-
-2006-12-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * frame.h (PIX_TYPE): Redefine as `unsigned long', for 64-bit
-       platforms where long is 64-bit.
-
-       * msdos.h (PIX_TYPE): Redefine as `unsigned long'.
-
-2006-12-08  NAKAJI Hiroyuki  <nakaji@jp.freebsd.org>  (tiny change)
-
-       * m/amdx86-64.h: Add support for Solaris 10 on x86-64.
-
-2006-12-08  Kenichi Handa  <handa@m17n.org>
-
-       * xterm.c (x_query_font): Use xstricmp instead off strcasecmp.
-
-2006-12-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs.c (syms_of_emacs) <system-type>: Doc fix.
-
-2006-12-07  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (parse_signal): Use xstricmp instead of strcasecmp.
-       (Fsignal_process): Don't use strncasecmp.
-
-2006-12-05  Glenn Morris  <rgm@gnu.org>
-
-       * abbrev.c (Qforce): New Lisp_Object.
-       (Fdefine_abbrev): Do not overwrite non-system abbrevs with system
-       abbrevs, unless 'force is applied.
-       (syms_of_abbrev): Add Qforce.
-
-2006-12-04  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (parse_signal): Rename macro from handle_signal.
-       (Fsignal_process): Also accept lower-case variants of signal
-       names (to align with signal names generated by Emacs itself).
-
-       * emacs.c (handle_USR1_signal, handle_USR2_signal): Replace by...
-       (handle_user_signal): ... this, which generates two USER_SIGNAL_EVENTs
-       first with code == 0 [signal] and one with code == sig number.
-       (main): Use it as handler for SIGUR1 and SIGUSR2.
-
-       * keyboard.c (kbd_buffer_store_event_hold): Don't throw-on-input
-       if first event in [signal xxx] sequence.
-       (lispy_user_signals, Qusr1_signal, Qusr2_signal): Remove.
-       (syms_of_keyboard): Don't intern and staticpro them.
-       (Qsignal): Declare here.
-       (syms_of_keyboard): Intern and staticpro it.
-       (make_lispy_event): Use it.  Intern symbols on the fly for other
-       USER_SIGNAL_EVENTs events.
-
-       * process.c (Qsignal): Declare extern.
-       (syms_of_process): Don't intern/staticpro it here.
-
-       * process.c (read_process_output): Abort if carryover < 0.
-
-2006-12-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * config.in: Regenerate.
-
-       * fileio.c [__NetBSD__]: Don't define `unix'.
-       (Funix_sync, syms_of_fileio): Use `#ifdef HAVE_SYNC' instead of
-       `#ifdef unix'.
-
-2006-12-04  Glenn Morris  <rgm@gnu.org>
-
-       * Makefile.in (version): New variable, set by configure.
-       (bootstrapclean, mostlyclean): Also remove emacs-${version}.
-
-2006-12-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (update_frame_tool_bar): Handle modifying a toolbar item
-       without an image.
-
-2006-12-01  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (Fw32_shell_execute): Doc fix.
-
-2006-11-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (move_it_to): Correctly count tab glyphs for continued
-       lines ending in tab.
-
-2006-11-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_raise_frame): Move setting of _NET_ACTIVE_WINDOW
-       property ...
-       (XTframe_raise_lower): ... to here.
-
-2006-11-30  Kenichi Handa  <handa@m17n.org>
-
-       * regex.c (regex_compile): Fix previous change.
-
-2006-11-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * sound.c (Fplay_sound_internal): Remove spurious newline in docstring.
-
-2006-11-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * config.in: Regenerate.
-
-2006-11-28  Kenichi Handa  <handa@m17n.org>
-
-       * regex.c (regex_compile): Don't call SET_LIST_BIT with a
-       multibyte character.
-
-2006-11-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * s/aix4-2.h: Undefine _NO_PROTO.  Suggested by Joe Buehler.
-
-2006-11-27  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (set_window_buffer): Refactor recent changes.
-
-2006-11-27  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_msg_worker): Declare correctly.
-       (w32_initialize): Don't cast w32_msg_worker.
-
-       * w32fns.c (w32_msg_worker): Define as WINAPI and arg as void pointer.
-
-2006-11-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * m/amdx86-64.h: Look for standard libs in /usr/lib64 only if that
-       directory exists.
-
-2006-11-25  Eli Zaretskii  <eliz@gnu.org>
-
-       * w16select.c (Fw16_set_clipboard_data): Fix the call to sit_for
-       as per the calling sequence change on 2006-07-11.
-
-2006-11-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * window.c (set_window_buffer): Use BLOCK_INPUT.
-
-2006-11-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * fns.c (substring_both): Add missing address operator.
-
-2006-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fns.c: Use AREF/ASIZE macros.
-       (concat): Provide the full ANSI prototype.
-
-2006-11-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (syms_of_buffer) <buffer-undo-list>: Doc fix.
-
-2006-11-23  William Smith  <William.Smith@global360.com>  (tiny change)
-
-       * strftime.c (HAVE_SYS__MBSTATE_T_H): Fix typo.
-
-2006-11-22  Alfred M. Szmidt  <ams@gnu.org>  (tiny change)
-
-       * s/openbsd.h (LD_SWITCH_SYSTEM): Remove /usr/pkg/lib and
-       /usr/pkg/lib from the library search path.
-       (LD_SWITCH_X_DEFAULT): New macro.
-
-2006-11-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * window.c (set_window_buffer): Clear mouse highlight if it is in
-       this window.
-
-2006-11-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xfaces.c (realize_default_face): Check if the default font name
-       exists on this display before trying to use it.
-
-2006-11-21  Richard Stallman  <rms@gnu.org>
-
-       * fileio.c: Break line before &&, not after.
-
-2006-11-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * fns.c (concat) [!__GNUC__]: Add prototype.
-
-2006-11-20  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Fread_file_name_internal): Use SBYTES (not SCHARS) to
-       check the tailing slash of a filename.
-
-2006-11-20  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>  (tiny change)
-
-       * indent.c (Fvertical_motion): Include composition in the case of
-       overshoot expected.
-
-2006-11-19  Andreas Schwab  <schwab@gnu.org>
-
-       * xfaces.c (Fdisplay_supports_face_attributes_p): Initialize supports.
-
-       * xmenu.c (Fx_popup_menu): Initialize selection.
-
-2006-11-18  Andreas Schwab  <schwab@suse.de>
-
-       * s/gnu-linux.h (GC_MARK_SECONDARY_STACK): Update call to mark_memory.
-
-2006-11-17  Tetsurou Okazaki  <okazaki@be.to>  (tiny change)
-
-       * xterm.c (do_ewmh_fullscreen): Declare variable before XSETFRAME
-       to avoid gcc 2.96 error.
-
-2006-11-17  NIIMI Satoshi  <sa2c@sa2c.net>  (tiny change)
-
-       * search.c (simple_search): In the loop of backward searching,
-       check also the byte position against the limit.
-
-2006-11-14  Romain Francoise  <romain@orebokech.com>
-
-       * minibuf.c (Fcompleting_read): Fix typo in docstring.
-
-2006-11-14  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (code_convert_region): Initialize coding->heading_ascii.
-       (decode_coding_string, code_convert_region): Likewise.
-
-2006-11-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * config.in: Regenerate.
-
-       * macfns.c (Fx_display_mm_height, Fx_display_mm_width)
-       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
-       && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if
-       CGDisplayScreenSize is available.
-
-       * macmenu.c (menu_quit_handler, install_menu_quit_handler):
-       Replace `#ifdef HAVE_CANCELMENUTRACKING' with
-       `#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030'.
-       (install_menu_quit_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
-       && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if
-       CancelMenuTracking is available.
-
-       * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg)
-       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
-       && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if
-       CGContextShowGlyphsWithAdvances is available.
-
-2006-11-13  Jason Rumney  <jasonr@gnu.org>
-
-       * s/ms-w32.h: Define HAVE_INET_SOCKETS.
-
-2006-11-13  Nozomu Ando  <nand@mac.com>
-
-       * alloc.c (mark_memory): New argument OFFSET.  All uses changed.
-       Fix address calculations for case END < START.
-       (mark_stack): Impose Lisp_Object alignment on jmp_buf.
-
-2006-11-12  Juanma Barranquero  <lekktu@gmail.com>
-
-       * coding.c (Fencode_sjis_char, Fencode_big5_char):
-       Improve argument/docstring consistency.
-
-       * editfns.c (Fmessage): Doc fixes.
-
-       * process.c (syms_of_process) <delete-exited-processes>: Doc fix.
-
-2006-11-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xmenu.c (popup_activated): Define outside HAVE_MENUS.
-
-2006-11-12  Romain Francoise  <romain@orebokech.com>
-
-       * xselect.c (selection-coding-system): Fix docstring.
-
-2006-11-12  Juanma Barranquero  <lekktu@gmail.com>
-
-       * category.c (Fchar_category_set): Improve arg/docstring consistency.
-
-       * data.c (Flogxor):
-       * fns.c (Frandom, Flength, Fsafe_length, Fstring_bytes)
-       (Fstring_equal, Fcompare_strings, Fstring_lessp, Fcopy_sequence)
-       (Fstring_make_unibyte): Fix typos in docstrings.
-
-2006-11-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h (struct x_display_info): Fix indentation.
-
-       * xterm.c (do_ewmh_fullscreen, XTfullscreen_hook): New functions.
-       (x_check_fullscreen): Call do_ewmh_fullscreen.
-       (x_initialize): Set fullscreen_hook to XTfullscreen_hook.
-
-       * frame.c (x_set_fullscreen): Call fullscreen_hook if set.
-
-       * term.c: Define fullscreen_hook.
-       (syms_of_term): Initialize fullscreen_hook to NULL.
-
-       * termhooks.h: Add fullscreen_hook.
-
-2006-11-08  Juanma Barranquero  <lekktu@gmail.com>
-
-       * bytecode.c (Fbyte_code):
-       * data.c (Fmakunbound): Use SYMBOL_CONSTANT_P macro.
-
-2006-11-06  Juanma Barranquero  <lekktu@gmail.com>
-
-       * lread.c (syms_of_lread):
-       * xsmfns.c (syms_of_xsmfns): Fix typo in docstring.
-
-2006-11-06  Martin Rudalics  <rudalics@gmx.at>
-
-       * macmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS.
-
-       * w32menu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS.
-       Return nil if building without menus.
-
-       * xmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS.
-       Return nil if building without menus.
-
-2006-11-05  Mark Davies  <mark@mcs.vuw.ac.nz>  (tiny change)
-
-       * s/netbsd.h (POSIX_SIGNALS): Define.
-
-2006-11-05  Martin Rudalics  <rudalics@gmx.at>
-
-       * macmenu.c (Fmenu_or_popup_active_p): New function.
-       (syms_of_macmenu): Defsubr it.
-
-       * w32menu.c (Fmenu_or_popup_active_p): New function.
-       (syms_of_w32menu): Defsubr it.
-       (popup_activated_flag, popup_activated): Remove.
-
-       * xdisp.c (note_mouse_highlight) [HAVE_NTGUI]: Don't bother to
-       check popup_activated.
-
-       * xmenu.c (Fmenu_or_popup_active_p): New function.
-       (syms_of_xmenu): Defsubr it.
-
-2006-11-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * unexmacosx.c (malloc_cookie): Remove unused variable.
-       (region_list_head, region_list_tail, lca, nlc, infile_lc_highest_addr)
-       (text_seg_lowest_offset, mh, curr_header_offset, infd, outfd)
-       (emacs_zone, data_segment_old_fileoff, data_segment_scp)
-       (num_unexec_regions, unexec_regions): Make variables static.
-       (print_regions, find_emacs_zone_regions): Make static.
-       (unexec_region_info): New typedef.
-       (unexec_regions): Change type from vm_range_t[] to unexec_region_info[].
-       All uses changed.
-       (unexec_regions_recorder): Subtract size of trailing null pages from
-       filesize.  Show filesize.
-       (unexec_regions_merge): Don't merge if null pages of preceding region
-       is not too small.  Use long format in printf.
-       (copy_segment, copy_data_segment): Show filesize.
-       (copy_data_segment): Write filesize bytes of region data.
-       Adjust filesize in segment command accordingly.
-       (dump_it): Use long format in printf.
-
-2006-11-05  Juanma Barranquero  <lekktu@gmail.com>
-
-       * dosfns.c (Finsert_startup_screen):
-       * fns.c (Ffeaturep, syms_of_fns):
-       * frame.c (syms_of_frame): Fix typos in docstrings.
-
-       * unexcw.c (unexec): Fix typo in output message.
-
-2006-11-04  Ralf Angeli  <angeli@caeruleus.net>
-
-       * w32fns.c (w32_createwindow): Remove code for handling -geometry
-       command line option and `initial-frame-alist' which is superfluous
-       after the last change to `w32_createwindow'.
-
-2006-11-04  Slawomir Nowaczyk  <slawek@cs.lth.se>  (tiny change)
-
-       * w32proc.c (sys_wait): Only wait for processes with fd<0.
-       Others should be handled by sys_select instead.  Fixes problems
-       with (progn (start-process "" nil "ls") (call-process "ls")).
-
-2006-11-04  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
-
-       * xmenu.c (Fmenu_bar_open): Declare variable before BLOCK_INPUT to
-       avoid gcc 2.95 error.
-
-2006-11-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * gtkutil.c (update_frame_tool_bar): If icon image is invalid and
-       wicon is null, insert an empty button.
-
-2006-11-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_raise_frame): Send _NET_ACTIVE_WINDOW when raising the
-       window.
-
-2006-11-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * emacs.c (Fkill_emacs): Fix typo in docstring.
-
-2006-11-02  Nozomu Ando  <nand@mac.com>
-
-       * unexmacosx.c (mach_header, segment_command, vm_region, section)
-       [_LP64]: New defines.
-       (VM_REGION_BASIC_INFO_COUNT, VM_REGION_BASIC_INFO, LC_SEGMENT)
-       (MH_MAGIC) [_LP64]: Redefine.
-       (delta): Remove variable.
-       (curr_file_offset, pagesize): New variables.
-       (ROUNDUP_TO_PAGE_BOUNDARY): New macro.
-       (data_segment_old_fileoff): Initialize explicitly.
-       (print_region, unexec_regions_recorder, print_load_command_name)
-       (copy_segment, copy_data_segment): Use long format in printf.
-       (MAX_UNEXEC_REGIONS): Increase to 400.
-       (unexec_regions_recorder): Don't warn too many regions here.
-       (find_emacs_zone_regions): Warn too many regions here.
-       (print_load_command_name) [_LP64]: Show correct load command name.
-       (copy_segment, copy_data_segment): Use variable `curr_file_offset'.
-       Show starting virtual memory address.  Don't show ending file offset.
-       (copy_symtab, copy_dysymtab, copy_twolevelhints): New argument DELTA.
-       (dump_it): Use new local variable `linkedit_delta' and pass to them.
-       Error if trying to handle multiple DATA segments.
-       (unexec): Initialize variable `pagesize'.
-
-2006-11-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * eval.c (Fcatch): Doc fix.
-
-2006-10-31  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c [MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v)
-       (xpm_put_color_table_v, xpm_get_color_table_v, xpm_make_color_table_h)
-       (xpm_put_color_table_h, xpm_get_color_table_h, xpm_str_to_color_key)
-       (xpm_load_image): Add const qualifier to arguments.
-       [MAC_OS] (xpm_color_key_strings): Make static const.
-
-       * mac.c (create_apple_event_from_event_ref)
-       (create_apple_event_from_drag_ref, skip_white_space, parse_comment)
-       (parse_include_file, parse_binding, parse_component)
-       (parse_resource_name, parse_value, parse_resource_line)
-       (xrm_merge_string_database, xrm_get_resource)
-       (xrm_get_preference_database): Add const qualifier to arguments.
-       [MAC_OSX] (sys_select): Make variable `context' static const.
-
-       * macfns.c (mac_color_map): Make static const.
-       (mac_color_map_lookup): Add const qualifier to arguments.
-
-       * macmenu.c (install_menu_quit_handler): Make variable `typesList'
-       static const.
-       (name_is_separator): Add const qualifier to arguments.
-
-       * macselect.c (init_service_handler): Make variable `specs' static
-       const.
-
-       * macterm.c (mac_create_bitmap_from_bitmap_data): Make variable
-       `swap_nibbles' static const.
-       (atsu_get_text_layout_with_text_ptr): Make variables `lengths',
-       `tags', `sizes', `values' static const.
-       (mac_draw_string_common): Make variables `context' static.
-       Make variables `tags', `sizes', and `values' static const.
-       (pcm_get_status, x_detect_focus_change, x_scroll_bar_handle_click)
-       (xlfdpat_create, xlfdpat_block_match_1, xlfdpat_match)
-       (mac_to_x_fontname, parse_x_font_name, add_mac_font_name)
-       (mac_do_list_fonts, is_fully_specified_xlfd, do_grow_window)
-       (mac_store_event_ref_as_apple_event, mac_make_rdb): Add const
-       qualifier to arguments.
-       (xlfd_scalable_fields, keycode_to_xkeysym_table)
-       (fn_keycode_to_keycode_table): Make static const.
-       (mac_load_query_font): Make variables `tags', `sizes', `values',
-       `types', and `selectors' static const.
-       (mac_handle_command_event, mac_handle_window_event):
-       Make variables `names' and `types' static const.
-       (init_command_handler, install_window_handler): Make variables
-       `specs*' static const.
-       (mac_handle_font_event, mac_handle_text_input_event)
-       (mac_store_service_event): Make variables `names' and `types'
-       const.  Make variables `names_*' and `types_*' static const.
-
-       * macterm.h (create_apple_event_from_event_ref)
-       (create_apple_event_from_drag_ref, xrm_merge_string_database)
-       (xrm_get_resource, xrm_get_preference_database): Add const
-       qualifier to arguments in externs.
-
-2006-10-31  Kenichi Handa  <handa@m17n.org>
-
-       * xfns.c (xic_create_xfontset): Fix previous change.
-
-2006-10-30  Chong Yidong  <cyd@stupidchicken.com>
-
-       * s/openbsd.h (LD_SWITCH_SYSTEM): Add /usr/pkg/lib and
-       /usr/pkg/lib to library search path.
-
-2006-10-29  Mark Davies  <mark@mcs.vuw.ac.nz>  (tiny change)
-
-       * ralloc.c (relinquish): Use a long for excess space counter to
-       handle 64-bit case correctly.
-
-2006-10-29  Jeramey Crawford  <jeramey@jeramey.com>
-
-       * m/amdx86-64.h: Add defines for OpenBSD x86-64.
-
-2006-10-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * window.c (Fdisplay_buffer): Fix typo in docstring.
-
-2006-10-27  Ben North  <ben@redfrontdoor.org>  (tiny change)
-
-       * w32term.c (x_draw_glyph_string_foreground): Set background mode
-       to TRANSPARENT before using overstrike to simulate bold faces.
-
-       * xfaces.c (best_matching_font): Fix logic to decide whether to
-       use overstriking to simulate bold-face (it was reversed).
-
-2006-10-23  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (remember_mouse_glyph): Do nothing if glyphs are not
-       initialized.
-
-       * keyboard.c (read_char): Make an element (t . EVENT) in
-       unread-command-events add EVENT to the current command's key sequence.
-       (syms_of_keyboard) <unread-command-events>: Update doc.
-
-2006-10-21  Richard Stallman  <rms@gnu.org>
-
-       * minibuf.c (Vread_expression_map): Define here.
-       (Qread_expression_history): New variable.
-       (syms_of_minibuf): Initialize them.
-       (Feval_minibuffer): Use Vread_expression_map and
-       Qread_expression_history.
-
-2006-10-21  Kenichi Handa  <handa@m17n.org>
-
-       * xfns.c (xic_create_fontsetname): If ADSTYLE field is not a wild
-       card, change it to "*".
-       (xic_create_xfontset): Call XCreateFontSet for each single
-       fontname in fontsetname.
-
-2006-10-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * callint.c (callint_message): Convert to a Lisp string.
-       (syms_of_callint): Initialize it.
-       (callint_message_size): Var deleted.
-       (Fcall_interactively): Use Fformat instead of doprnt to construct
-       prompt string.
-
-2006-10-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xdisp.c (display_mode_line): Clear enabled_p flag on mode-line row.
-
-2006-10-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (Vmac_carbon_version_string) [TARGET_API_MAC_CARBON]:
-       New variable.
-       (syms_of_macfns) [TARGET_API_MAC_CARBON]: Defvar it.
-
-2006-10-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xselect.c (x_handle_selection_request): If the converted_selection
-       is nil or XCDR (converted_selection) is nil, decline the request.
-
-2006-10-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (get_utf8_string): Remove warnings with casts.
-       (xg_tool_bar_button_cb): Ditto.
-       (xg_tool_bar_callback): Ditto.
-
-2006-10-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Remove unused
-       variable ch_dim.
-       (adjust_frame_glyphs_for_window_redisplay): Likewise.  Don't allocate
-       menu bar window matrices on non-X systems.
-
-       * mac.c (Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
-
-       * macterm.c (mac_query_char_extents): Don't return glyph ID if layout
-       adjustment is needed.
-       (mac_load_query_font): Check if width and height are positive.
-
-2006-10-14  Richard Stallman  <rms@gnu.org>
-
-       * sysdep.c (init_sys_modes): Delete DEFVAR_LISP in the wrong place.
-
-2006-10-13  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (decode_mode_spec): Ignore %c and %l constructs in frame
-       title.
-
-2006-10-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymap.c (Fkey_binding): Check Lisp_Object types before doing
-       XCAR and XINT.
-
-2006-10-12  Romain Francoise  <romain@orebokech.com>
-
-       * image.c (xbm_read_bitmap_data): Delete extra semicolon.
-
-2006-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * eval.c: Include xterm.h for x_fully_uncatch_errors and friends.
-
-       * dispextern.h: Declare x_create_bitmap_from_xpm_data.
-
-       * xterm.c (x_check_expected_move): Remove unused var `count'.
-
-       * xmenu.c (syms_of_xmenu): Use Ffset rather than Fdefalias, since
-       Fdefalias is not declared in any *.h file.
-
-2006-10-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * dispnew.c (sit_for): Sit forever if TIMEOUT is t.
-
-       * keyboard.c (command_loop_1): Handle non-number values of
-       `minibuffer-message-timeout'.
-       (Fexecute_extended_command): Fix typo.
-
-       * minibuf.c (temp_echo_area_glyphs): Sit for
-       `minibuffer-message-timeout' seconds.
-
-2006-10-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_draw_image_string, mac_draw_image_string_16):
-       Add argument OVERSTRIKE_P.
-       (mac_draw_string_common, mac_draw_image_string_cg): Likewise.
-       Support overstrike.
-       (mac_draw_string, mac_draw_string_16): Remove functions.
-       (x_draw_glyph_string_foreground): Use overstrike when needed.
-       (x_draw_composite_glyph_string_foreground): Likewise.
-       Use mac_draw_image_string_16 instead of mac_draw_string_16.
-       (mac_load_query_font): Rename from XLoadQueryFont.  Take argument
-       F instead of DPY.  All uses changed.  Don't save/restore font.
-
-2006-10-07  Ralf Angeli  <angeli@caeruleus.net>
-
-       * w32fns.c (w32_createwindow): Honour left and top positions if
-       supplied explicitly.
-
-2006-10-06  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (pos_visible_p): Fix value when EOB is visible.
-
-2006-10-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * frame.c (Qinhibit_face_set_after_frame_default): New var.
-       (syms_of_frame): Initialize it.
-       (x_set_frame_parameters): Avoid resetting :font attributes to the
-       new-frame defaults.
-
-2006-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lisp.h (clear_regexp_cache): Declare.
-
-       * search.c (compile_pattern): Only check `cp->syntax_table' if needed.
-       (compile_pattern_1): Remember `used_syntax' in `cp->syntax_table'.
-       (clear_regexp_cache): Only flush those regexps which depend on
-       a syntax-table.
-
-       * regex.c (regex_compile): Set the new `used_syntax' bit.
-
-       * regex.h: Remove file local variables.
-       (struct re_pattern_buffer): New field `used_syntax'.
-
-2006-10-03  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (list_processes_1): Run sentinels before removing dead
-       processes.  Also remove `closed' network connections.
-
-2006-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xdisp.c (handle_fontified_prop): Don't fontify at EOB.
-
-2006-09-30  Eli Zaretskii  <eliz@gnu.org>
-
-       * config.in: Regenerated.
-
-2006-09-29  Juri Linkov  <juri@jurta.org>
-
-       * buffer.c (syms_of_buffer): Reorder coding systems in the
-       docstring of %z to the real order displayed in the modeline.
-
-2006-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (Fdefine_key): Yet another int/Lisp_Object mixup (YAILOM).
-
-2006-09-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * indent.c (Fvertical_motion): Do move back if the Lisp string
-       being displayed contains newlines.
-
-2006-09-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_compute_glyph_string_overhangs, XLoadQueryFont)
-       [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw before QDTextBounds.
-
-2006-09-26  Kenichi Handa  <handa@m17n.org>
-
-       * keymap.c (Fsingle_key_description): For an invalid char, return
-       "Invalid char code NNNNN".
-
-2006-09-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * callint.c (Fcall_interactively): Doc fix.
-
-2006-09-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (x_underline_at_descent_line): New variable.
-       (syms_of_macterm): DEFVAR_BOOL it.
-       (x_draw_glyph_string): Use it.
-       (XLoadQueryFont): Calculate min_bounds.descent and max_bounds.descent.
-
-2006-09-25  Kenichi Handa  <handa@m17n.org>
-
-       * keymap.c (Fsingle_key_description): Return unique names for
-       generic characters.
-
-2006-09-24  Richard Stallman  <rms@gnu.org>
-
-       * search.c (compile_pattern_1): Don't BLOCK_INPUT.
-
-2006-09-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in ($(BLD)/fns.$(O), $(BLD)/w32proc.$(O)):
-       Depend on nt/inc/langinfo.h and nt/inc/nl_types.h.
-
-       * w32proc.c (nl_langinfo): New function.
-
-       * w32fns.c (w32-pass-alt-to-system, w32-alt-is-meta)
-       (w32-pass-lwindow-to-system, w32-enable-num-lock)
-       (w32-enable-caps-lock, w32-scroll-lock-modifier)
-       (w32-lwindow-modifier, w32-rwindow-modifier)
-       (w32-apps-modifier, w32-mouse-button-tolerance): Doc fix.
-
-2006-09-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * minibuf.c (Finternal_complete_buffer, Fread_minibuffer)
-       (Fdisplay_completion_list): Fix typos in docstrings.
-
-2006-09-23  Romain Francoise  <romain@orebokech.com>
-
-       * s/gnu-linux.h (MAIL_USE_FLOCK): Check for HAVE_LIBLOCKFILE too.
-
-2006-09-23  Kenichi Handa  <handa@m17n.org>
-
-       * keymap.c (Fmap_keymap): Docstring mentions about generic character.
-
-2006-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * regex.c (analyse_first): For eight-bit-control chars, mark both the
-       char's value and its leading byte in the fastmap.
-       (re_search_2): When fast-scanning without translation, be careful to
-       check that we only match the leading byte of a multibyte char.
-
-       * charset.h (PREV_CHAR_BOUNDARY): Make it work from within a char's
-       byte sequence.
-       (AT_CHAR_BOUNDARY): New macro.
-
-2006-09-22  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (optimize_sub_char_table): Don't optimize a sub-char-table
-       whose default value is non-nil.
-
-2006-09-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_file_with_chooser): Only show C-l help for
-       Gtk+ versions < 2.10.
-
-       * xfns.c (syms_of_xfns): Fix typo in help text for
-       x-gtk-file-dialog-help-text.
-
-2006-09-21  Kim F. Storm  <storm@cua.dk>
-
-       * fns.c (Fmemq): Refill doc string.
-       (Fmemql): New defun, like memq but using eql.
-       (syms_of_fns): Defsubr it.
-
-2006-09-20  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (pos_visible_p): CHARPOS < 0 means return info for
-       last visible glyph in window.
-
-       * window.c (Fset_window_hscroll, Fwindow_line_height):
-       Doc fix.  Use "off-window" instead of "off-screen".
-       (Fpos_visible_in_window_p): Likewise.
-       If POS is t, return info for last visible glyph in window.
-
-2006-09-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * search.c (struct regexp_cache): New entry syntax_table.
-       (compile_pattern_1): Set it.
-       (syms_of_search): Initialize it.
-       (compile_pattern): Require the syntax_table entry of the cache
-       element to match the current syntax table entry.
-
-2006-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (Fwindow_end): Fix recent change.
-
-2006-09-19  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Fset_window_hscroll, Fpos_visible_in_window_p):
-       Doc fix.  Use "off-screen" instead of "invisible".
-       (Fwindow_line_height): Make line numbers 0-based.  Make line arg
-       optional; if nil, use current cursor row.  Handle text terminals
-       properly.  Return nil if non-interactive or pseudo-window.
-
-2006-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c: Include alloca.h if available.
-       (Fkey_binding): Only use AREF after checking it's a vector.
-       Remove unused var `window'.
-
-2006-09-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * emacs.c (shut_down_emacs) [!subprocesses]: Don't set
-       inhibit_sentinels.
-
-       * mac.c [!MAC_OSX] (select): Fix argument name.
-
-       * macmenu.c (enum mac_menu_kind, min_menu_id): New enumerator and
-       menu ID for Apple menu.
-       (menubar_selection_callback): Remove function.
-       (find_and_call_menu_selection): New function from xmenu.c.
-       (x_activate_menubar): Use it.
-       (set_frame_menubar): Don't use f->output_data.mac->menubar_active.
-
-       * macterm.c (menubar_selection_callback): Remove extern.
-       (M_APPLE): Change to 234.
-       (do_apple_menu) [!TARGET_API_MAC_CARBON]: Make non-static.
-       (do_menu_choice): Remove function.
-
-       * macterm.h (struct mac_output): Remove member menubar_active.
-       (do_menu_choice): Remove extern.
-       (do_apple_menu) [!TARGET_API_MAC_CARBON]: Add extern.
-
-2006-09-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (syms_of_xfns): Rename x_gtk_show_chooser_help_text to
-       x_gtk_file_dialog_help_text.
-
-       * gtkutil.c (xg_uses_old_file_dialog): Rename x-use-old-gtk-file-dialog
-       to x-gtk-use-old-file-dialog.
-       (xg_get_file_with_chooser): Rename x_gtk_show_chooser_help_text to
-       x_gtk_file_dialog_help_text.
-
-       * xfns.c (syms_of_xfns): Ditto.
-
-2006-09-18  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Fwindow_line_visibility): Remove.
-       (Fwindow_line_height): New defun replacing it.
-       (syms_of_window): Defsubr it.
-
-2006-09-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1.
-       [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Fix pointer type.
-
-2006-09-17  Jay Belanger  <belanger@truman.edu>
-
-       * gmalloc.c:
-       * md5.c:
-       * md5.h:
-       * strftime.c: Replace "GNU Library General Public License" by "GNU
-       General Public License" throughout.
-
-2006-09-17  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (update_text_area): Undo 2000-07-18 change.
-       Always redrawing whole row if line has mouse-face in it causes
-       excessive flickering of the mode line.
-
-2006-09-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * search.c (clear_regexp_cache): New function.
-
-       * syntax.c (Fmodify_syntax_entry): Clear regexp cache.
-
-2006-09-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_file_with_chooser):
-       Check x-gtk-show-chooser-help-text before adding the help text.
-
-       * xfns.c (syms_of_xfns): New variable: x-gtk-show-chooser-help-text.
-
-       * gtkutil.c (get_utf8_string): Try harder to convert to UTF8.  Gtk+
-       will simply crash if we fail.
-
-2006-09-16  Richard Stallman  <rms@gnu.org>
-
-       * regex.c (re_compile_pattern): Set gl_state.current_syntax_table.
-
-2006-09-15  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Fwindow_line_visibility): New defun for line-move-partial.
-       (syms_of_window): Defsubr it.
-       (Fwindow_end): Use window's buffer rather than current buffer.
-
-2006-09-15  Jay Belanger  <belanger@truman.edu>
-
-       * COPYING: Replace "Library Public License" by "Lesser Public
-       License" throughout.
-
-2006-09-15  David Kastrup  <dak@gnu.org>
-
-       * Makefile.in (keymap.o): Add "keymap.h" and "window.h" dependencies.
-
-       * keymap.c: include "window.h".
-       (Fcommand_remapping): New optional POSITION argument.
-       (Fkey_binding): New optional POSITION argument.  Completely rework
-       handling of mouse clicks to get the same order of keymaps as
-       `read-key-sequence' and heed POSITION.  Also temporarily switch
-       buffers to location of mouse click and back.
-
-       * keyboard.c (command_loop_1): Adjust call of `Fcommand_remapping'
-       for additional argument.
-       (parse_menu_item): Adjust call of `Fkey_binding' for additional
-       argument.
-       (read_key_sequence): If there are both `local-map' and `keymap'
-       text properties at some buffer position, heed both.
-
-       * keymap.h: Declare additional optional arguments of
-       `Fcommand_remapping' and `Fkey_binding'.
-
-2006-09-15  Juanma Barranquero  <lekktu@gmail.com>
-
-       * indent.c (Fcurrent_column, Findent_to): Fix typos in docstring.
-
-2006-09-14  Andreas Schwab  <schwab@suse.de>
-
-       * print.c: Whitespace fixup.
-
-2006-09-14  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (produce_image_glyph): Automatically crop wide images at
-       right window edge so we can draw the cursor on the same row to
-       avoid confusing redisplay by placing the cursor outside the visible
-       window area.
-
-2006-09-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xterm.c (x_initialize): Don't install Xt event timer here.
-       (x_timeout_atimer_activated_flag): New var.
-       (x_activate_timeout_atimer): New function to install Xt timer.
-       (x_send_scroll_bar_event, x_process_timeouts): Use it.
-
-       * xmenu.c (x_menu_set_in_use, popup_activate_callback)
-       (create_and_show_popup_menu, create_and_show_dialog): Use it.
-
-       * xterm.h (x_activate_timeout_atimer): Add prototype.
-
-2006-09-13  Richard Stallman  <rms@gnu.org>
-
-       * print.c (print_string): When printcharfun is t,
-       copy string contents and call strout on the copy.
-
-       * keyboard.c (read_char): If end_time specified, don't put the
-       event into this_command_keys.
-       (read_key_sequence): If Voverriding_terminal_local_map is specified,
-       don't check Voverriding_local_map at all.
-
-2006-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * textprop.c (Fnext_property_change, Fnext_single_property_change)
-       (Fprevious_property_change, Fprevious_single_property_change):
-       Avoid changing limit, so we can correctly catch the case where the
-       property is constant up to limit.
-
-2006-09-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
-       * macterm.c (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
-       Undo 2006-09-08 change.
-
-2006-09-11  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymap.c (Fkey_binding): Use string position for string objects.
-
-2006-09-11  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (Fkey_binding): Fix last change.
-
-       * editfns.c (Fmessage): Recommend using (message "%s" ...).
-
-2006-09-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymap.c (Fkey_binding): Check for local keymap for mouse click
-       events.
-
-2006-09-10  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (Finput_pending_p): Check Vunread_input_method_events
-       and Vunread_post_input_method_events.
-
-       * dispnew.c (Fredisplay): Document return value.
-
-2006-09-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (Fx_close_connection): Call xg_display_close when USE_GTK.
-
-       * gtkutil.c (xg_display_close): Always change default display if needed,
-       check for < Gtk+ version 2.10 before calling gdk_display_close.
-
-2006-09-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c [MAC_OSX] (sys_select): Check argument `nfds' more rigidly.
-       Make variable `ofds' static.  Remove variable `maxfd'.
-
-       * macfns.c (Fx_file_dialog): Remove unused variable `f'.
-       Call check_mac.
-
-       * macmenu.c (Vmenu_updating_frame, syms_of_macmenu):
-       * w32menu.c (Vmenu_updating_frame, syms_of_w32menu):
-       Apply 2006-09-08 change for xmenu.c.
-
-       * xfns.c (Fx_file_dialog): Call check_x.
-
-2006-09-10  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_window_cursor_type): Use hollow cursor on
-       non-transparent images.
-
-2006-09-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * editfns.c (Fsystem_name): Mention "host" in the doc string.
-       (syms_of_editfns) <system-name>: Likewise.
-
-2006-09-08  Martin Rudalics  <rudalics@gmx.at>
-
-       * xdisp.c (mouse_autoselect_window): Remove.
-       (Vmouse_autoselect_window): New variable.  DEFVAR_LISP it.
-
-       * dispextern.h (mouse_autoselect_window): Remove extern.
-       (Vmouse_autoselect_window): Add extern.
-
-       * macterm.c (XTread_socket): Test Vmouse_autoselect_window
-       instead of mouse_autoselect_window.
-
-       * msdos.c (dos_rawgetc): Likewise.
-
-       * w32term.c (w32_read_socket): Likewise.
-
-       * xterm.c (handle_one_xevent): Likewise.
-
-2006-09-08  Richard Stallman  <rms@gnu.org>
-
-       * xdisp.c (Vmenu_updating_frame): Define here.
-       (syms_of_xdisp): DEFVAR it here.
-       (update_menu_bar): Always return hooks_run.
-       Set Vmenu_updating_frame.
-
-       * xdisp.c (redisplay_internal): Test Vinhibit_redisplay
-       before calculating SELECTED_FRAME.
-
-       * xmenu.c (Vmenu_updating_frame): Don't define here.
-       (syms_of_xmenu): Don't DEFVAR it here.
-
-       * xterm.c (x_error_quitter): For BadName error, just return.
-
-       * eval.c (find_handler_clause): Give up on debugger if INPUT_BLOCKED_P.
-
-       * casetab.c (init_casetab_once): Call set_case_table.
-
-       * emacs.c (shut_down_emacs): Set inhibit_sentinels.
-
-       * process.c (inhibit_sentinels): New variable.
-       (exec_sentinel): Test inhibit_sentinels.
-       (init_process): Initialize it.
-
-       * process.h (inhibit_sentinels): Add decl.
-
-       * search.c (looking_at_1, string_match_1, search_command):
-       Make syntax table's canon table point to eqv table.
-
-2006-09-08  Andreas Schwab  <schwab@suse.de>
-
-       * print.c (strout): Fix whitespace.
-
-2006-09-08  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (x_draw_glyph_string): Fix 2006-08-24 change.
-
-2006-09-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c [!MAC_OSX]: Don't include keyboard.h.
-       [!MAC_OSX] (select): Try detect_input_pending before ReceiveNextEvent
-       in the same BLOCK_INPUT block, in case that some input has already
-       been read asynchronously.  Pretend to be interrupted by a signal
-       if some input is available.
-       [MAC_OSX] (select_and_poll_event, sys_select): Likewise.
-       (SELECT_POLLING_PERIOD_USEC) [SELECT_USE_CFSOCKET]: Change to 100000.
-       Now used for ReceiveNextEvent timeout instead of select timeout.
-       (EVENT_CLASS_SOCK) [SELECT_USE_CFSOCKET]: Remove macro.
-       [SELECT_USE_CFSOCKET] (socket_callback): Add non-blocking connect
-       support.  Quit event loop.
-       [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Add non-blocking
-       connect support.  Reuse previously allocated CFRunLoopSource.
-       (Fmac_process_hi_command) [TARGET_API_MAC_CARBON]: New function.
-       (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it.
-
-       * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
-       Specify kWindowAsyncDragAttribute.
-
-       * macterm.c (mac_handle_origin_change, mac_handle_size_change)
-       (mac_get_ideal_size): New functions.
-       (x_set_offset, x_set_window_size, x_make_frame_visible)
-       (do_zoom_window, mac_handle_window_event, XTread_socket): Use them.
-       (install_window_handler, mac_handle_window_event)
-       [USE_CARBON_EVENTS]: Handle kEventWindowGetIdealSize and
-       kEventWindowBoundsChanged.
-       (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Don't call
-       DragWindow.
-
-2006-09-07  Andreas Schwab  <schwab@suse.de>
-
-       * m/ibms390x.h (START_FILES, LIB_STANDARD): Override to
-       use lib64 instead of lib.
-
-2006-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * Makefile.in: Avoid double quotes when possible.
-
-2006-09-06  Kenichi Handa  <handa@m17n.org>
-
-       * editfns.c (Fformat_time_string): Use make_unibyte_string to make
-       a Lisp string from the result of emacs_memftimeu call.
-
-2006-09-06  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (pos_visible_p): Remove exact_mode_line_heights_p arg;
-       so calculate heights even when pos-visible-in-window-p is called
-       with partially = t.  Don't overshoot last_visible_y in move_it_to.
-       Return row height and row number in new rowh and vpos args.
-       (cursor_row_fully_visible_p): First line is always "fully visible".
-       (try_window): Don't clear matrix if vscrolled.
-
-       * lisp.h (pos_visible_p): Update prototype.
-
-       * window.c (Fpos_visible_in_window_p): Adapt to new pos_visible_p.
-       Return row height and row number for partially visible rows.
-       Modify return value to a 2 element list for fully visible rows and
-       6 for partially visible row.
-       (window_scroll_pixel_based): Use pos_visible_p directly instead of
-       Fpos_visible_in_window_p.  Fix auto vscrolling for partially
-       visible lines.  Only vscroll backwards if already vscrolled
-       forwards.  Unconditionally vscroll forwards if PT is first (and
-       only) line.  Set new window start instead of scrolling at
-       start/end of tall line.
-
-2006-09-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (install_window_handler, mac_handle_window_event)
-       [USE_CARBON_EVENTS]: Handle kEventWindowClose.
-       [USE_MAC_TSM] (mac_handle_text_input_event): Set modifiers for
-       ASCII keystroke event.
-
-2006-09-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_file_with_chooser): Don't mention specific keys in
-       the file chooser message.  Only call gtk_file_chooser_set_current_name
-       when action is SAVE.
-
-2006-09-04  Andreas Schwab  <schwab@suse.de>
-
-       * Makefile.in: Double all single and back quotes in C-style
-       comments to help fontifier.
-
-2006-09-03  Jason Rumney  <jasonr@gnu.org>
-
-       * w32.c (shutdown_handler): New function to exit cleanly on shutdown.
-       (globals_of_w32): Register it as a signal handler.
-
-2006-09-02  Juri Linkov  <juri@jurta.org>
-
-       * marker.c (Fmarker_position): Doc fix.
-
-2006-09-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * window.c (syms_of_window) <split-height-threshold>:
-       <window-min-height, window-min-width>: Doc fix.
-
-2006-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_file_with_chooser): Change file chooser message
-       for writing files.  Call gtk_file_chooser_set_current_name to keep
-       default filename.
-
-       * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls
-
-2006-09-02  Jindrich Makovicka  <makovick@gmail.com>  (tiny change)
-
-       * fns.c (concat) [__GNUC__]: Declare with
-       `__attribute__((noinline))'.
-
-       * eval.c (apply1, call2) [__GNUC__]: Declare with
-       `__attribute__((noinline))'.
-
-2006-09-02  Stuart D. Herring  <herring@lanl.gov>
-
-       * minibuf.c (Finternal_complete_buffer): New function.
-       (syms_of_minibuf): Defsubr it.
-       (Fread_buffer): Use it, instead of Vbuffer_alist.
-
-2006-09-01  Martin Rudalics  <rudalics@gmx.at>
-
-       * buffer.h (struct buffer_text): New field chars_modiff.
-       (CHARS_MODIFF, BUF_CHARS_MODIFF): New macros.
-       * buffer.c (Fbuffer_chars_modified_tick): New function returning
-       value of BUF_CHARS_MODIFF.
-       (syms_of_buffer): Defsubr it.
-       (Fget_buffer_create): Initialize BUF_CHARS_MODIFF.
-       * insdel.c (modify_region): New argument preserve_chars_modiff.
-       Set CHARS_MODIFF to MODIFF provided preserve_chars_modiff is zero.
-       (insert_1_both, insert_from_string_1, insert_from_buffer_1)
-       (adjust_after_replace, adjust_after_replace_noundo)
-       (replace_range, replace_range_2, del_range_2): Reset CHARS_MODIFF.
-       * lisp.h (modify_region): Add fourth argument in extern.
-       * casefiddle.c (casify_region): Call modify_region with fourth
-       argument zero to assert that CHARS_MODIFF is updated.
-       * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal)
-       (Ftranspose_regions): Likewise.
-       * textprop.c (Fadd_text_properties, Fset_text_properties)
-       (Fremove_text_properties, Fremove_list_of_text_properties):
-       Call modify_region with fourth argument 1 to avoid that
-       CHARS_MODIFF is updated.
-
-2006-08-31  Richard Stallman  <rms@gnu.org>
-
-       * editfns.c (Fformat): Don't sign-extend for %o or %x.
-
-2006-08-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * indent.c (Fvertical_motion): Don't move back if we were
-       displaying a Lisp string, either.
-
-2006-08-28  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_window_cursor_type) [!HAVE_WINDOW_SYSTEM]:
-       Don't attempt to replace cursor on image glyphs.
-
-2006-08-28  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (Fdetect_coding_region, Fdetect_coding_string):
-       Fix docstring about ISO-2022 control characters.
-
-2006-08-28  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_window_cursor_type): Replace BOX cursor on images
-       with a hollow box cursor if image is larger than 32x32 (or the default
-       frame font if that is bigger).  Replace any other cursor on images
-       with hollow box cursor, as redisplay doesn't support bar and hbar
-       cursors on images.
-
-2006-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Undo previous
-       change.  Move mutex lock/unlock operations inside BLOCK_INPUT.
-
-       * dired.c (directory_files_internal_unwind, directory_files_internal)
-       (file_name_completion): Add BLOCK_INPUT around opendir/closedir.
-
-       * image.c [MAC_OS] (image_load_qt_1): Use ComponentResult instead
-       of OSErr.
-
-       * keyboard.c (in_sighandler): Remove variable.
-       (Fcurrent_idle_time): Add missing `doc:'.
-       (input_available_signal, init_keyboard): Undo previous change.
-
-       * keyboard.h (in_sighandler): Remove extern.
-
-       * mac.c (create_apple_event_from_event_ref, select)
-       (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator)
-       (Fmac_set_file_type, cfstring_create_normalized)
-       (mac_get_system_locale, select_and_poll_event, sys_select):
-       Use OSStatus instead of OSErr.
-
-       * macfns.c [TARGET_API_MAC_CARBON] (mac_update_proxy_icon):
-       Don't use FRAME_FILE_NAME.  Use (FS)UpdateAlias.
-       (Fx_create_frame): Apply 2006-07-03 for xfns.c.
-
-       * macselect.c (get_scrap_from_symbol, clear_scrap, put_scrap_string)
-       (put_scrap_private_timestamp, scrap_has_target_type, get_scrap_string)
-       (get_scrap_private_timestamp, get_scrap_target_type_list)
-       (x_own_selection, x_get_foreign_selection)
-       (Fx_disown_selection_internal, Fx_selection_owner_p)
-       (Fx_selection_exists_p): Use OSStatus instead of OSErr.
-
-       * macterm.c (mac_draw_string_common, mac_query_char_extents)
-       (x_iconify_frame, XLoadQueryFont, install_window_handler)
-       (mac_handle_command_event, init_command_handler, init_menu_bar):
-       Use OSStatus instead of OSErr.
-       (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Don't use
-       FRAME_FILE_NAME.
-       (x_query_font): Apply 2006-08-04 change for xterm.c.
-       (Qhi_command): Rename from Qhicommand.  All uses changed.
-
-       * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]: Remove member
-       file_name.
-       (FRAME_FILE_NAME): Remove macro.
-       (install_window_handler, create_apple_event_from_event_ref):
-       Return OSStatus instead of OSErr.
-
-2006-08-26  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (Fset_buffer_multibyte):
-       * editfns.c (Fcurrent_time, Fget_internal_run_time):
-       * macfns.c (Fxw_color_values):
-       * w32fns.c (Fxw_color_values):
-       * xfns.c (Fxw_color_values): Simplify; use list3.
-
-       * fileio.c (Fmake_directory_internal, Fdelete_directory)
-       (Fdelete_file): Simplify; use list1.
-       (Frename_file, Fadd_name_to_file, Fmake_symbolic_link):
-       Simplify; remove NO_ARG_ARRAY stuff, use list2.
-
-2006-08-25  Richard Stallman  <rms@gnu.org>
-
-       * buffer.c (Fswitch_to_buffer): Fix previous change.
-
-2006-08-25  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (Fcurrent_idle_time): Simplify.
-
-2006-08-25  Richard Stallman  <rms@gnu.org>
-
-       * fns.c (sxhash_string): Rotate properly; don't lose bits.
-
-2006-08-24  Francesc Rocher  <francesc.rocher@gmail.com>
-
-       * xdisp.c (overline_margin): New variable.
-       (x_produce_glyphs): Use it.
-       (syms_of_xdisp): DEFVAR_INT it.
-
-       * xterm.c (x_underline_at_descent_line): New variable.
-       (syms_of_xterm): DEFVAR_BOOL it.
-       (x_draw_glyph_string): Use it.
-       Draw underline and overline up to the end of line if the face
-       extends to the end of line.
-
-       * macterm.c: Likewise.
-
-       * w32term.c: Likewise.
-
-2006-08-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * buffer.c (Fswitch_to_buffer): Move buffer to front of
-       buffer-alist if necessary.
-
-2006-08-22  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (update_tool_bar): Redisplay toolbar also when only
-       number of items changes.
-
-2006-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * buffer.c (Fset_buffer_multibyte): Record proper undo entry.
-
-2006-08-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c: Clarify difference between in_sighandler and
-       handling_signal.
-
-2006-08-21  Kim F. Storm  <storm@cua.dk>
-
-       * macterm.c (x_draw_stretch_glyph_string):
-       * w32term.c (x_draw_stretch_glyph_string):
-       * xterm.c (x_draw_stretch_glyph_string): It is ok to draw a
-       stretch glyph in left marginal areas on header and mode lines.
-
-2006-08-21  Kenichi Handa  <handa@m17n.org>
-
-       * keyboard.c (syms_of_keyboard): Docstring of
-       Vunread_post_input_method_events and Vunread_input_method_events
-       fixed.
-
-2006-08-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keyboard.c (show_help_echo): Preserve mouse movement flag if
-       tracking mouse.
-
-2006-08-20  Richard Stallman  <rms@gnu.org>
-
-       * xfaces.c (load_pixmap): Add quotes in error message.
-
-       * keyboard.c (Fcurrent_idle_time): New function.
-       (syms_of_keyboard): defsubr it.
-
-2006-08-18  Nick Roberts  <nickrob@snap.net.nz>
-
-       * window.c (Fset_window_fringes): Do nothing on a tty.
-       (Fwindow_fringes): Put ? operator after the line break.
-
-2006-08-16  Andreas Schwab  <schwab@suse.de>
-
-       * print.c (debug_output_compilation_hack): Fix return type.
-
-2006-08-16  Richard Stallman  <rms@gnu.org>
-
-       * print.c (debug_output_compilation_hack): New function.
-
-2006-08-16  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (choose_write_coding_system): Use LF for end-of-line
-       in auto-saving.
-
-2006-08-15  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keyboard.c (read_char): Don't change idle timer state at all if
-       end_time is supplied.
-
-2006-08-15  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New arg RET.  If SRC
-       is exhausted, return with RET.
-       (detect_coding_emacs_mule, detect_coding_iso2022)
-       (detect_coding_sjis, detect_coding_big5, detect_coding_utf_8)
-       (detect_coding_utf_16, detect_coding_ccl): Adjusted for the above
-       change.
-
-2006-08-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keyboard.c (read_char): Don't reset idle timers if a time limit
-       is supplied.
-
-2006-08-14  Kim F. Storm  <storm@cua.dk>
-
-       * .gdbinit (pitx): Print iterator position.
-       Limit stack dump in case iterator is not initialized.
-
-2006-08-12  Eli Zaretskii  <eliz@gnu.org>
-
-       * frame.c (Fmouse_position, Fmouse_pixel_position)
-       (Fset_mouse_position, Fset_mouse_pixel_position): Doc fix.
-
-2006-08-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xselect.c (Fx_register_dnd_atom): New function.
-       (syms_of_xselect): Defsubr it.
-       (x_handle_dnd_message): Check that message_type is in
-       dpyinfo->x_dnd_atoms before generating lisp event.
-
-       * xterm.h (struct x_display_info): Add x_dnd_atoms* to keep track
-       of drag and drop Atoms.
-
-       * xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms*
-
-2006-08-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c: Define in_sighandler.
-       (input_available_signal): Set in_sighandler.
-       (init_keyboard): Initialize in_sighandler.
-
-       * keyboard.h: Declare in_sighandler.
-
-       * alloc.c (UNBLOCK_INPUT_ALLOC, BLOCK_INPUT_ALLOC): Use in_sighandler
-       to check if mutex should be locked or not.
-
-2006-08-09  Richard Stallman  <rms@gnu.org>
-
-       * keyboard.c (keyremap_step): No-op if fkey->parent = nil.
-       (read_key_sequence): Always start fkey.start and fkey.end at 0,
-       and likewise for keytran.
-
-2006-08-09  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (syms_of_coding): Improve the docstring
-       of file-coding-system-alist.
-
-2006-08-07  Andreas Schwab  <schwab@suse.de>
-
-       * puresize.h (BASE_PURESIZE): Increase to 1120000.
-
-2006-08-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * buffer.c (Vchange_major_mode_hook, Qchange_major_mode_hook): New vars.
-       (Fkill_all_local_variables): Use it.
-       (syms_of_buffer): Defvar it.
-
-2006-08-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32.c (w32_valid_pointer_p): New function.
-
-       * w32.h: Add prototype for w32_valid_pointer_p.
-
-       * alloc.c: Include w32.h.
-       (valid_lisp_object_p) [WINDOWSNT]: Call w32_valid_pointer_p to do
-       the job.
-
-       * keyboard.c (kbd_buffer_get_event): Return Qnil when current time
-       is exactly equal to end_time, not only when it is past that.
-
-2006-08-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keyboard.c (read_char): Rebalance specpdl after receiving jump.
-
-       * process.c: Reapply 2006-08-01 change.
-
-2006-08-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (w32_query_font): Fix last change: use stricmp.
-
-2006-08-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * editfns.c (Fsubst_char_in_region): Redo the setup work after running
-       the before-change-functions since they may have altered the buffer.
-
-2006-08-04  Ralf Angeli  <angeli@caeruleus.net>
-
-       * w32fns.c (w32_createwindow): Handle -geometry command line option
-       and the geometry settings in the Registry.
-
-2006-08-04  Kenichi Handa  <handa@m17n.org>
-
-       * w32fns.c (w32_query_font): Compare names by ignoring case.
-
-       * xterm.c (x_query_font): Compare names by ignoring case.
-
-2006-08-03  Jason Rumney  <jasonr@gnu.org>
-
-       * w32menu.c (w32_menu_show, w32_dialog_show): Call Fsignal to quit
-       when no option selected.
-
-2006-08-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * process.c: Revert last change.
-
-2006-08-01  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (wait_reading_process_output_unwind): New function.
-       Restores waiting_for_user_input_p to saved value.
-       (wait_reading_process_output): Unwind protect waiting_for_user_input_p
-       instead of save/restore old value on stack.
-
-2006-07-30  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * editfns.c: Undo 2006-06-27 change.
-
-2006-07-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * coding.c (Ffind_operation_coding_system): Revert the change from
-       2006-05-29.
-
-       * alloc.c [WINDOWSNT]: Include fcntl.h, to fix last change.
-
-2006-07-28  Richard Stallman  <rms@gnu.org>
-
-       * xfaces.c (lookup_named_face, Fdisplay_supports_face_attributes_p):
-       Add conditional aborts for clarity.
-
-       * xdisp.c (update_menu_bar): New arg HOOKS_RUN.  Callers changed.
-       Used to avoid running the hooks over and over for each frame.
-       (prepare_menu_bars): Pass value from update_menu_bar
-       as HOOKS_RUN of next call.
-
-       * keyboard.c (safe_run_hooks_1): Don't crash if Vrun_hooks is nil.
-
-2006-07-28  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (valid_pointer_p): New function (from valid_lisp_object_p).
-       (valid_lisp_object_p): Use it to check for valid SUBRP obj.
-
-2006-07-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keyboard.c (read_char): New arg END_TIME specifying timeout.
-       All callers changed.  Turn off echoing if END_TIME is non-NULL.
-       (kbd_buffer_get_event): New arg END_TIME.
-
-       * lread.c (read_filtered_event): New arg SECONDS to wait until.
-       (Fread_char, Fread_event, Fread_char_exclusive): New arg SECONDS.
-
-       * lisp.h: Update read-char, read-event, and read_filtered_event
-       prototypes.
-
-       * keyboard.h: Include systime.h.  Update read_char prototype.
-
-2006-07-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * alloc.c (find_string_data_in_pure): New function.
-       (make_pure_string): Use it to reuse existing string data if possible.
-
-       * puresize.h (BASE_PURESIZE): Decrease to 1102000.
-
-2006-07-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (Fdefine_key): If the key binding definition looks like an
-       XEmacs-style key sequence, convert it to Emacs's format.
-
-2006-07-22  Ralf Angeli  <angeli@caeruleus.net>
-
-       * w32fns.c (w32_createwindow): If `left' and/or `top' frame
-       parameters are bound to some values, use that instead of
-       CW_USEDEFAULT.
-
-2006-07-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32.c (convert_time): Use explicit long double constants to
-       ensure long double arithmetics is used throughout.
-
-2006-07-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp): New vars.
-       (init_alloc_once): Initialize them.
-       (pure_alloc): Allocate non-Lisp objects from the end of pure storage
-       without alignment.
-
-       * puresize.h (BASE_PURESIZE): Decrease to 1141000.
-
-2006-07-18  Francis Litterio  <franl@world.std.com>
-
-       * w32term.c (x_calc_absolute_position): Fix frame positioning
-       with negative X/Y coordinates.
-
-2006-07-18  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * xterm.c (x_connection_closed, x_error_quitter): Mark as NO_RETURN.
-
-       * textprop.c (text_read_only): Likewise.
-
-       * lread.c (end_of_file_error): Likewise.
-
-       * lisp.h (circular_list_error, memory_full, buffer_memory_full):
-       Likewise.
-
-       * eval.c (unwind_to_catch): Likewise.
-
-       * buffer.h (buffer_slot_type_mismatch): Likewise.
-
-2006-07-18  Kim F. Storm  <storm@cua.dk>
-
-       Cleanup Fsignal calls that never returns; now only use it for Qquit.
-
-       * eval.c (xsignal): New func.  Like Fsignal, but marked no-return.
-       (xsignal0, xsignal1, xsignal2, xsignal3): New no-return functions.
-       (signal_error): New no-return function (from xfaces.c).
-       (Fthrow): Use xsignal2 instead of Fsignal + abort.
-       (error): Use xsignal1 instead of Fsignal + abort.
-       (FletX, Flet, grow_specpdl): Use signal_error.
-       (Feval, Ffuncall, funcall_lambda): Use xsignal1, xsignal2.
-
-       * alloc.c (buffer_memory_full, memory_full): Use xsignal.  Remove loop.
-       (list1): New function.
-
-       * lisp.h (list1): Add EXFUN.
-       (xsignal, xsignal0, xsignal1, xsignal2, xsignal3, signal_error):
-       Add prototypes.  Mark them as no-return.
-
-       * buffer.c (Fbuffer_local_value, Fbarf_if_buffer_read_only):
-       Use xsignal1.
-
-       * callint.c (check_mark): Use xsignal0.
-
-       * casefiddle.c (casify_object): wrong_type_argument is no-return.
-
-       * cmds.c (Fforward_char, Fdelete_char): Use xsignal0.
-
-       * coding.c (Fcheck_coding_system): Use xsignal1.  Remove loop.
-       (Fdefine_coding_system_internal): Use xsignal1.
-
-       * data.c (circular_list_error): Use xsignal.
-       (wrong_type_argument): Use xsignal2.  Don't care about return value.
-       (args_out_of_range, args_out_of_range_3): Use xsignal2, xsignal3.
-       Remove loop around Fsignal.
-       (indirect_variable, Fsymbol_value, set_internal, Fdefault_value)
-       (indirect_function, Findirect_function, Fstring_to_number)
-       (Fmakunbound, Ffmakunbound, Fsymbol_function, Ffset): Use xsignal1.
-       (arith_driver, float_arith_driver, Frem, Fmod, arith_error):
-       Use xsignal0.
-
-       * doc.c (Fdocumentation): Use xsignal1.
-
-       * editfns.c (region_limit, Fget_internal_run_time): Use xsignal0.
-
-       * fileio.c (report_file_error): Use xsignal.
-       (barf_or_query_if_file_exists, Fcopy_file, Fdelete_file)
-       (Finsert_file_contents): Use xsignal2.
-       (syms_of_fileio): Use list2, list3.
-
-       * floatfns.c (arith_error, range_error, domain_error): Use xsignal2.
-       (range_error2, domain_error2): Use xsignal3.
-       (rounding_driver, fmod_float): Use xsignal0.
-       (float_error): Use xsignal1.
-       (matherr): Use xsignal.
-
-       * fns.c (Flength): wrong_type_argument is no-return.
-       (hashfn_user_defined, Fmake_hash_table): Use signal_error.
-       (Fmd5): Use xsignal1.
-
-       * frame.c (x_set_line_spacing, x_set_screen_gamma): Use signal_error.
-
-       * keyboard.c (recursive_edit_1): Use xsignal1.
-
-       * keymap.c (Fmap_keymap): Use xsignal1.
-
-       * lread.c (Fload): Use xsignal2, signal_error.
-       (end_of_file_error): Use xsignal0, xsignal1.
-       (read0): Use xsignal1.
-       (invalid_syntax): New error function marked no-return.
-       (read_integer, read1, read_list): Use it.
-
-       * macselect.c (x_get_local_selection): Use signal_error.
-
-       * msdos.c (Fmsdos_set_mouse_buttons): Use xsignal2.
-
-       * search.c (compile_pattern_1): Use xsignal1.
-       (signal_failure): Remove (was only called once).
-       (search_command): Use xsignal1 instead of signal_failure.
-
-       * syntax.c (scan_lists): Use xsignal3.
-
-       * textprop.c (text_read_only): Use xsignal0, xsignal1.
-
-       * unexsol.c (unexec): Use xsignal.
-
-       * window.c (window_scroll_pixel_based, window_scroll_line_based):
-       Use xsignal0.
-
-       * xfaces.c (signal_error): Move to eval.c.
-       (resolve_face_name): Use xsignal1.
-
-       * xfns.c (x_decode_color): Use signal_error.
-
-       * xselect.c (x_get_local_selection, copy_multiple_data)
-       (x_get_window_property_as_lisp_data)
-       (lisp_data_to_selection_data, CHECK_CUT_BUFFER)
-       (Fx_get_cut_buffer_internal): Use signal_error.
-
-2006-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (XTread_socket): Undo previous change.
-
-2006-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (keycode_to_xkeysym): Remove function.  All uses now
-       directly lookup keycode_to_xkeysym_table.
-       [USE_MAC_TSM] (mac_handle_text_input_event): Don't construct
-       ASCII_KEYSTROKE_EVENT for non-zero keycode_to_xkeysym_table entries.
-       (XTread_socket): Use character codes to construct keypad key events.
-       (mac_initialize_display_info) [MAC_OSX]: Use CGDisplaySamplesPerPixel.
-       (x_delete_display): Apply 2006-07-04 change for xterm.c.
-
-2006-07-17  Richard Stallman  <rms@gnu.org>
-
-       * keyboard.c (Vcommand_error_function): New variable.
-       (syms_of_keyboard): Defvar it.
-       (cmd_error_internal): Simplify, and handle Vcommand_error_function.
-
-       * dispnew.c (init_display): Mention DISPLAY as well as TERM in err msg.
-
-2006-07-17  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (handle_single_display_spec): Ensure the right value of
-       it->position is saved by push_it.
-       (pop_it): Restore it->object for GET_FROM_BUFFER and GET_FROM_STRING.
-       (reseat_1): Don't setup it->object twice.
-       (set_iterator_to_next): No need to set it->object after pop_it.
-       (move_it_to): Explicitly check to see if last move reached to_charpos.
-
-2006-07-17  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * xdisp.c (display_mode_line): Preserve match data.
-
-2006-07-14  Kim F. Storm  <storm@cua.dk>
-
-       * w32.c (pfn_WSACreateEvent, pfn_WSACloseEvent): New func ptrs.
-       (init_winsock): Load them.  Use ws2_32.dll.
-       (sys_listen): Undo last change.  Just set FILE_LISTEN flag.
-       (sys_accept): Undo last change.  Instead, set child status to
-       STATUS_READ_ACKNOWLEDGED and reset char_avail event so next
-       sys_select will wakeup the reader thread.
-       (_sys_wait_accept): New function used by reader thread to wait for
-       an incoming connection on a server socket.
-
-       * w32.h (_sys_read_ahead, _sys_wait_accept): Add prototypes.
-
-       * w32proc.c (reader_thread): Use _sys_wait_accept to wait on a
-       server socket (FILE_LISTEN flag).
-
-2006-07-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * sound.c (alsa_init): Call snd_pcm_close after successful snd_pcm_open.
-
-2006-07-14  Kim F. Storm  <storm@cua.dk>
-
-       * w32.c: Fix high cpu load for server sockets.
-       (pfn_WSAEventSelect): New function ptr.
-       (init_winsock): Load it.
-       (sys_listen): Set FILE_LISTEN flag. Set event mask for socket's
-       char_avail event object to FD_ACCEPT.
-       (sys_accept): Check FILE_LISTEN flag.  Set event mask on new
-       socket's char_avail event object to FD_READ|FD_CLOSE.
-
-       * w32.h (FILE_LISTEN): New filedesc flag value.
-
-2006-07-13  Kim F. Storm  <storm@cua.dk>
-
-       * bytecode.c (Fbyte_code): Use CAR, CDR for Bcar, Bcdr.
-       Use CAR_SAFE, CDR_SAFE for Bcar_safe, Bcdr_safe.
-       Simplify loops and use CAR for Bnth and Belt.
-
-       * data.c (Findirect_function): Optimize for no indirection.
-
-       * eval.c (Fthrow): Remove loop around Fsignal.
-       (Feval, Fapply, Ffuncall): Optimize for no function indirection.
-       Use original function name in all signaled errors.
-       Simplify Fsignal calls (no return).
-       (funcall_lambda): Simplify Fsignal calls (no return).
-
-2006-07-13  Andreas Schwab  <schwab@suse.de>
-
-       * syntax.c (scan_sexps_forward): Use EMACS_INT for out_bytepos and
-       out_charpos.
-
-2006-07-13  Kenichi Handa  <handa@m17n.org>
-
-       * editfns.c (Fformat): Fix calculation of text property positions
-       of format string.
-
-2006-07-12  Kim F. Storm  <storm@cua.dk>
-
-       * lisp.h (CHECK_TYPE): New macro for generic type checking.
-       (CAR_SAFE, CDR_SAFE): New macros.
-       (ARRAYP, CHECK_ARRAY): New macros.
-       (CHECK_VECTOR_OR_STRING, CHECK_SUBR): New macros.
-       (CHECK_WINDOW_CONFIGURATION): New macro.
-       (CHECK_LIST_CONS, CHECK_LIST_END): New checks for list traversal.
-       (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST)
-       (CHECK_STRING, CHECK_STRING_CAR, CHECK_CONS, CHECK_SYMBOL)
-       (CHECK_CHAR_TABLE, CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE)
-       (CHECK_BUFFER, CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS)
-       (CHECK_NUMBER, CHECK_NATNUM, CHECK_MARKER, CHECK_OVERLAY)
-       (CHECK_NUMBER_COERCE_MARKER, CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT)
-       (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER): Use CHECK_TYPE.
-
-       * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET):
-       * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Use CHECK_TYPE.
-
-       * callint.c (Fcall_interactively):
-       * casefiddle.c (casify_object):
-       * editfns.c (general_insert_function):
-       * fns.c (Flength, Felt, Ffillarray):
-       * data.c (Fcar, Fcdr): Remove loop around wrong_type_argument.
-
-       * data.c (wrong_type_argument): Remove loop around Fsignal.
-       (Farrayp, Fsequencep): Use ARRAYP.
-       (Fcar): Use CAR.
-       (Fcar_safe): Use CAR_SAFE.
-       (Fcdr): Use CDR.
-       (Fcdr_safe): Use CDR_SAFE.
-       (Fsetcar, Fsetcdr): Use CHECK_CONS.
-       (Fsubr_arity, Fsubr_name): Use CHECK_SUBR.
-       (Faset): Use CHECK_ARRAY.
-
-       * fns.c (Felt): Use CHECK_ARRAY.
-       (concat): Use CHECK_NUMBER.
-       (Fsubstring, substring_both): Use CHECK_VECTOR_OR_STRING.
-       (Fmemq): Use CHECK_LIST.
-       (Fassq, Fassoc, Frassq, Frassoc): Use CAR.
-       (assq_no_quit): Use CAR_SAFE.
-       (Fnthcdr, Fmember, Fdelq, Fdelete, Fnreverse, Fnconc):
-       Use CHECK_LIST_CONS.
-       (Freverse, Fplist_get, Flax_plist_get): Use CHECK_LIST_END.
-
-       * bytecode.c (Fbyte_code): Use CHECK_VECTOR.
-
-       * casetab.c (check_case_table):
-       * category.c (check_category_table):
-       * marker.c (Fcopy_marker):
-       * syntax.c (check_syntax_table):
-       * xfaces.c (load_pixmap): Use CHECK_TYPE.
-
-       * fns.c (Fcopy_sequence, concat):
-       * fringe.c (Fdefine_fringe_bitmap):
-       * lread.c (check_obarray): Cleanup wrong_type_argument use.
-
-       * keyboard.c (access_keymap_keyremap): Use ARRAYP.
-
-       * keymap.c (Fdefine_key, Flookup_key):
-       * macros.c (Fstart_kbd_macro): Use CHECK_VECTOR_OR_STRING.
-
-       * mac.c (Fmac_get_preference): Use CHECK_LIST_END.
-
-       * search.c (Fset_match_data): Use CHECK_LIST.
-
-       * sunfns.c (sun_item_create): Use CHECK_LIST_CONS.
-
-       * window.c (Fwindow_configuration_frame, Fset_window_configuration):
-       (compare_window_configurations): Use CHECK_WINDOW_CONFIGURATION.
-
-2006-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * Makefile.in (dired.o, editfns.o, fileio.o): Depend on blockinput.h.
-
-       * dired.c: Include blockinput.h.
-       (Ffile_attributes): Add BLOCK_INPUT around getpwuid/getgrgid.
-
-       * editfns.c: Include blockinput.h.
-       (Fuser_login_name, Fuser_full_name): Add BLOCK_INPUT around
-       getpwuid/getpwnam.
-
-       * fileio.c: Include blockinput.h.
-       (Fexpand_file_name, search_embedded_absfilename): Add BLOCK_INPUT
-       around getpwnam.
-       (search_embedded_absfilename): Remove spurious xfree.
-
-2006-07-11  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (sit_for): Reduce number of args from 5 to 3.
-       Now just one TIMEOUT arg that can be a Lisp float or Lisp int.
-       Combine args DISPLAY and INITIAL_DISPLAY into one arg DO_DISPLAY.
-       Signal error if TIMEOUT is not a number.
-       Undo 2006-06-14 change for non-preemptive display if TIMEOUT < 0.
-       The rework of sit_for args also fixes several incorrect Qt args
-       which should have been 1.
-       (Fredisplay): Pass 1 instead of Qt to swallow_events and
-       detect_input_pending_run_timers.
-
-       * lisp.h (sit_for): Update prototype.
-       (Fredisplay): Add EXFUN.
-
-       * dispextern.h (sit_for): Remove prototype.
-
-       * callint.c (Fcall_interactively):
-       * minibuf.c (temp_echo_area_glyphs):
-       * keyboard.c (command_loop_1, read_char, Fexecute_extended_command):
-       * fileio.c (Fdo_auto_save): Update/simplify sit_for calls.
-
-2006-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (forw_comment): Also use EMACS_INT for buffer positions.
-
-2006-07-11  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (Fredisplay): Add FORCE argument to force redisplay when
-       input is available.  Fix test for redisplay_dont_pause non-nil.
-       Specbind redisplay-dont-pause to t if FORCE non-nil.
-
-2006-07-10  Chong Yidong  <cyd@stupidchicken.com>
-
-       * puresize.h (BASE_PURESIZE): Increment to 1211000.
-
-       * dispnew.c (Fredisplay): New function, equivalent to (sit-for 0).
-       (Fsit_for): Function deleted.
-
-       * keyboard.c (command_loop_1, Fexecute_extended_command):
-       Call sit_for instead of Fsit_for.
-
-       * minibuf.c (temp_echo_area_glyphs): Likewise.
-
-2006-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (Fforward_comment): Revert the reversion.
-       (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
-
-2006-07-09  John Paul Wallington  <jpw@pobox.com>
-
-       * syntax.c (Fforward_comment): Revert previous change.
-
-2006-07-09  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Fforce_window_update): Doc fix.
-
-2006-07-08  Stephen Gildea  <gildea@stop.mail-abuse.org>
-
-       * fileio.c (do_auto_save_make_dir): Make the auto-save-list-file
-       directory unreadable for better user privacy.
-
-2006-07-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (Fforward_comment): Fix int-32 vs EMACS_INT-64 mixup.
-
-       * lread.c (read_filtered_event): Remove `register' qualifier because it
-       causes compilation problem with gcc-4.0.2-20051125 on amd64.
-       (readevalloop): Remove unused var `bpos'.
-       Yet another int/Lisp_Object mixup (YAILOM).
-
-2006-07-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * keyboard.c (Fexecute_extended_command): Mention the argument
-       PREFIXARG in the doc string.
-
-2006-07-07  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (Fdefine_fringe_bitmap): Doc fix.
-
-2006-07-05  Chong Yidong  <cyd@stupidchicken.com>
-
-       * insdel.c (prepare_to_modify_buffer): For an indirect buffer, do
-       clash detection using the base buffer.
-
-       * puresize.h (BASE_PURESIZE): Increment to 1210500.
-
-2006-07-04  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (x_delete_display): Don't free or derefence NULL pointers.
-
-2006-07-04  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (Fset_overriding_fontspec_internal): Check if we need
-       to update Voverriding_fontspec_alist.
-
-2006-07-03  Richard Stallman  <rms@gnu.org>
-
-       * xfns.c (Fx_create_frame): Move unwind_create_frame setup down.
-
-       * xfaces.c (Fface_attribute_relative_p): Doc fix.
-
-       * textprop.c (Fget_char_property_and_overlay): Doc fix.
-
-       * eval.c (Fdefvaralias): Doc fix.
-
-2006-07-03  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (sit_for): Fix preempt condition.
-
-2006-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lread.c (read_filtered_event): Treat select-window just like
-       switch-frame.
-
-2006-07-02  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (display_tool_bar_line): Skip glyphs which are too big
-       to ever fit the tool-bar,
-       (MAX_FRAME_TOOL_BAR_HEIGHT): New macro.
-       (tool_bar_lines_needed): Use unused mode-line row as temp_row.
-       (redisplay_tool_bar): Only clear desired matrix if we actually
-       change the tool-bar window height.  Only try to make the tool-bar
-       window bigger if there is actually room for it.
-
-2006-06-30  Ralf Angeli  <angeli@caeruleus.net>
-
-       * w32term.c (x_make_frame_visible): Use SystemParametersInfo with
-       SPI_GETWORKAREA to find the dimensions of the screen work area,
-       and adjust vertical position of the frame in order to avoid being
-       covered by the task bar.
-
-       * w32fns.c (w32_createwindow): Use CW_USEDEFAULT instead of
-       f->left_pos and SH_SHOW instead of f->top_pos in the call to
-       CreateWindow.  Record the actual position in f->left_pos and
-       f->top_pos.
-
-2006-06-30  John Paul Wallington  <jpw@pobox.com>
-
-       * w32console.c (syms_of_ntterm) <w32-use-full-screen-buffer>:
-       Doc fix - default value has changed.
-
-2006-06-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c [!TARGET_API_MAC_CARBON]: Don't include FixMath.h or Scrap.h.
-
-       * macfns.c (Fx_create_frame): Apply 2006-06-24 change for xfns.c.
-
-       * macgui.h (USE_MAC_TSM) [TARGET_API_MAC_CARBON]: Set default to 1.
-
-       * macterm.c (Qeql): Add extern.
-       (x_set_mouse_pixel_position) [MAC_OSX]: Use CGWarpMouseCursorPosition.
-       (fm_style_face_attributes_alist) [USE_ATSUI]: New variable.
-       (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it.
-       Change keys of Vmac_atsu_font_table from strings to numbers.
-       (fm_style_to_face_attributes) [USE_ATSUI]: New function.
-       (init_font_name_table) [USE_ATSUI]: Use it.
-       (saved_ts_script_language_on_focus) [USE_MAC_TSM]: New variable.
-       (syms_of_macterm) [USE_MAC_TSM]: Initialize and staticpro it.
-       [USE_MAC_TSM] (mac_tsm_resume): Restore script and language codes
-       only when saved_ts_script_language_on_focus coincides with
-       Vmac_ts_script_language_on_focus.
-       [USE_MAC_TSM] (mac_tsm_suspend): Save value of
-       Vmac_ts_script_language_on_focus to saved_ts_script_language_on_focus.
-       (XTread_socket) [USE_MAC_TSM]: Add Mac OS Classic support.
-       [USE_MAC_TSM] (mac_handle_text_input_event, init_tsm): Likewise.
-
-2006-06-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * editfns.c (Fdelete_field, Ffield_string, Ffield_beginning)
-       (Ffield_string_no_properties, Ffield_end): Mention
-       args-out-of-range error condition in docstring.
-
-2006-06-27  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (handle_composition_prop): Set stop_charpos before push_it.
-
-2006-06-25  Kim F. Storm  <storm@cua.dk>
-
-       * s/gnu-linux.h (SIGNALS_VIA_CHARACTERS): Define for Linux kernel
-       version 2.4 and later.
-
-2006-06-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xfns.c (Fx_create_frame): Set font parameter directly instead of
-       using x_default_parameter, since x_get_args clears the parm alist.
-
-2006-06-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * dired.c (directory_files_internal) [WINDOWSNT]: Find files
-       case-insensitively.
-
-2006-06-24  Aidan Kehoe  <kehoea@parhasard.net>
-
-       * lread.c (read_escape): When an unknown Unicode code point is
-       encountered as a string or character escape, signal an error.
-
-2006-06-23  Kim F. Storm  <storm@cua.dk>
-
-       * .gdbinit (pitx): Dump iterator stack.
-
-       * xdisp.c (handle_composition_prop): Push iterator on stack.
-       (set_iterator_to_next): Pop iterator at end of composition.
-
-2006-06-23  Martin Rudalics  <rudalics@gmx.at>
-
-       * fileio.c (Frename_file) [DOS_NT]: Don't try to move directory to
-       itself on DOS_NT platforms, if the old and new names are identical
-       but for the letter-case.
-
-2006-06-21  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (struct it): Add `position' member to iterator stack.
-       Rename `pos' member to `current'.  Rearrange and add comments.
-
-       * xdisp.c (handle_stop): Set it->ignore_overlay_strings_at_pos_p
-       if  we get any overlays.
-       (set_cursor_from_row): Don't clobber `end' if we rescan from
-       start_string.
-       (push_it, pop_it): Save it->position.
-
-2006-06-19  Richard Stallman  <rms@gnu.org>
-
-       * window.c (size_window): New arg FIRST_ONLY.  All callers changed.
-       (adjust_window_trailing_edge): Specially compute FIRST_PARALLEL
-       for the case of a top-level window and the following minibuffer.
-       Don't exit because of no `next' when there is a parent.
-       Use the FIRST_ONLY feature when resizing following windows.
-
-       * syntax.c (init_syntax_once): Give most control chars' syntax Spunct.
-
-2006-06-17  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (update_frame): Check for input pending on entry.
-       (update_window, update_frame_1): Break loop if input is detected.
-
-2006-06-16  Francis Litterio  <flitterio@gmail.com>
-
-       * xterm.c (x_check_expected_move, handle_one_xevent)
-       (x_set_offset, x_check_fullscreen): Extensive changes to make
-       frame positioning deterministic under X.
-
-       * xterm.h (x_output): Add members left_before_move and
-       top_before_move.  Removed members expected_left and expected_top.
-
-2006-06-16  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (struct it): Add union to iterator stack to save
-       image, composition, and stretch specific paramters.
-
-       * xdisp.c (next_overlay_string): Fix assert.
-       (push_it, pop_it): Handle composition and stretch specific values.
-       Only handle it->slice in image (for now).
-       (back_to_previous_visible_line_start): Continue search if newline is
-       part of a compisition.  Simplify.
-       (reseat_1): Set it->object to buffer.
-       (set_iterator_to_next): Set it->object to string or buffer, when
-       setting it->method to GET_FROM_STRING or GET_FROM_BUFFER.
-       (next_element_from_composition): Set it->object to buffer if not
-       from string.
-       (set_cursor_from_row): Only save start of string if not already
-       done to handle multiple strings in a row.
-
-       * .gdbinit (pitx): Show composition parameters.
-       (pgx, pg): New commands to print a glyph structure.
-       (pgi, pgn): New commands to print specific/next glyph.
-       (pgrowx, pgrow): New commands to print all glyphs in a row.
-
-2006-06-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (Fx_display_mm_height, Fx_display_mm_width)
-       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use CGDisplayScreenSize.
-
-       * macterm.c (do_app_resume, do_app_suspend): Remove functions.
-       (mac_tsm_resume, mac_tsm_suspend) [USE_MAC_TSM]: New functions.
-       (mac_handle_window_event, XTread_socket) [USE_MAC_TSM]: Use them.
-       (Vmac_ts_script_language_on_focus) [USE_MAC_TSM]: New variable.
-       (syms_of_macterm) [USE_MAC_TSM]: Defvar it.
-       (saved_ts_language, saved_ts_component) [USE_MAC_TSM]: New variables.
-       (mac_initialize_display_info) [MAC_OSX]: Use Quartz Display
-       Services functions to get size of main display in pixels.
-
-2006-06-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (back_to_previous_visible_line_start):
-       Reset it->continuation_lines_width.
-
-2006-06-14  Richard Stallman  <rms@gnu.org>
-
-       * eval.c (Fdefconst): Mark variable as risky.
-
-       * callproc.c (Fcall_process): Doc fix.
-
-       * window.c (adjust_window_trailing_edge): Don't break out of the loop
-       because there's no next window, if there are parallel windows.
-       Do break out when WINDOW is nil.
-
-2006-06-14  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (IT_STACK_SIZE): New macro specifying size of
-       iterator stack (instead of hardcoded number).  Increase from 2 to
-       4 to make room for propertized overlay strings before and after a
-       display string, image or composition.
-       (struct it): Add image_id and method members to iterator stack.
-
-       * xdisp.c (init_from_display_pos): Don't set it->method and
-       overlay_string_index after pop_it.  Add asserts.
-       (handle_stop): Look for overlay strings around a display string,
-       image, or composition.  Handle properties on those strings.
-       (next_overlay_string): Don't set string, pos or method after pop_it.
-       (get_overlay_strings_1): Split from get_overlay_strings; don't
-       modify it if no overlay strings are found.
-       (get_overlay_strings): Use get_overlay_strings_1.  Always set
-       it->string and it->method.
-       (push_it): Push it->image_id and it->method.  Push it->object
-       instead of it->string if method is GET_FROM_IMAGE.
-       (pop_it): Pop it->image_id and it->method.  Ppo it->object
-       instead of it->string if method is GET_FROM_IMAGE.
-       Reset it->current.string_pos if popped it->string is nil.
-       (reseat_1): Remove comment dated 19 May 2003.  It expressed doubt
-       whether a given change was correct; but the change is correct.
-       Clear it->string_from_display_prop_p.
-       (set_iterator_to_next): Rely on it->method and it->image_id from
-       iterator stack, instead of setting them explicitly after pop_it.
-
-       * dispnew.c (sit_for): Undo 2006-06-01 change.  Instead, a
-       negative time forces redisplay even when input is available.
-       (Fsit_for): Doc fix.
-
-2006-06-13  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c: Modify preemptive redisplay to be based on periodic
-       checks for input.
-       (PERIODIC_PREEMPTION_CHECKING): Define to 1 iff EMACS_HAS_USECS.
-       (Vredisplay_preemption_period): New variable.
-       (syms_of_display): DEFVAR_LISP and initialize it.
-       (preemption_period, preemption_next_check): New variables.
-       (update_frame, update_single_window): Initialize them based on
-       Vredisplay_preemption_period if !force_p.
-       (update_window, update_frame_1): Use them to determine when to
-       check for input.
-
-2006-06-03  Aidan Kehoe  <kehoea@parhasard.net>
-
-       * lread.c (read_escape): Provide a Unicode character escape
-       syntax; \u followed by exactly four or \U followed by exactly
-       eight hex digits in a comment or string is read as a Unicode
-       character with that code point.
-
-2006-06-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * window.c (window_scroll_pixel_based): Signal "Beginning of
-       buffer" when scroll-down at the beginning of an empty buffer.
-
-2006-06-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event):
-       Exclude 0x7f from ASCII range.
-
-2006-06-05  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_set_scroll_bar_thumb, x_scroll_bar_create)
-       (w32_set_vertical_scroll_bar, w32_scroll_bar_handle_click)
-       (x_scroll_bar_report_motion): Remove workarounds for
-       versions of Windows NT < 3.51.
-       [!SIF_ALL]: Remove.
-       (pfnSetScrollInfo, pfnGetScrollInfo): Remove.
-       (w32_initialize): Don't dynamically load Get/SetScrollInfo.
-
-2006-06-04  David Kastrup  <dak@gnu.org>
-
-       * dispnew.c: Mention `redisplay-dont-pause' in doc string of
-       `sit-for'.
-
-2006-06-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (x_set_icon_name): Apply 2006-06-02 change for xfns.c.
-
-       * macgui.h (USE_MAC_TSM): Set default to 1 on Mac OS X.
-
-       * macterm.c (tsm_document_id) [USE_MAC_TSM]: New variable.
-       (Qtext_input, Qupdate_active_input_area, Qunicode_for_key_event)
-       [USE_MAC_TSM]: Likewise.
-       (syms_of_macterm) [USE_MAC_TSM]: Intern and staticpro them.
-       (Qbefore_string) [USE_MAC_TSM]: Add extern.
-       (do_app_resume, do_app_suspend) [USE_MAC_TSM]: Call
-       ActivateTSMDocument/DeactivateTSMDocument.
-       (mac_store_event_ref_as_apple_event): Call mac_post_mouse_moved_event.
-       (mac_handle_window_event) [USE_MAC_TSM]: Handle
-       kEventWindowFocusAcquired/kEventWindowFocusRelinquish.
-       (mac_handle_text_input_event) [USE_MAC_TSM]: New function.
-       (install_window_handler) [USE_MAC_TSM]: Install it.  Register
-       kEventWindowFocusAcquired/kEventWindowFocusRelinquish.
-       (keycode_to_xkeysym_table): Add entry for f16.
-       (XTread_socket) [USE_MAC_TSM]: Set/reset read_socket_inev
-       before/after passing keystroke event to toolbox dispatcher.
-       (init_tsm) [USE_MAC_TSM]: New function.
-       (mac_initialize) [USE_MAC_TSM]: Call it.
-       (Vmac_ts_active_input_overlay) [USE_MAC_TSM]: New defvar.
-
-       * macterm.h (EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER): New enumerator.
-
-2006-06-02  John Paul Wallington  <jpw@gnu.org>
-
-       * xfns.c (x_set_name_internal): Set icon to `text', derived from
-       name, when frame's icon_name isn't a string rather than only when
-       it is nil.
-
-2006-06-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (x_set_icon_name): Don't use arg if it's not a string
-       and not nil.
-
-2006-06-02  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xfns.c (x_set_icon_name): No-op if arg is non-nil and not a
-       string.
-
-2006-06-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xdisp.c (next_element_from_composition): Set it->object to
-       it->string if composition is coming from string.
-       (set_cursor_from_row): Don't return 0 unless row displays a
-       continued line.
-       (dump_glyph): Dump composite glyph.
-
-2006-06-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (menu_nav_ended): Check that menubar_widget is not NULL.
-
-2006-06-01  Richard Stallman  <rms@gnu.org>
-
-       * window.c (Fsplit_window): Doc fix.
-
-2006-06-01  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * process.c (deleted_pid_list): New variable to store the pids
-       of deleted processes.  Declare it only if SIGCHLD is defined.
-       (init_process): Initialize it.
-       (syms_of_process): Staticpro it.
-       (Fdelete_process): Add pid of the deleted process to it.  Check after
-       the addition and before the kill if the process is already stopped,
-       in which case it is deleted from the list and not killed.
-       (sigchld_handler): Define it only if SIGCHLD is.  Search the process
-       that signaled Emacs in `deleted_pid_list' before `Vprocess_alist'.
-       Original idea by Stefan Monnier.
-
-2006-06-01  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (sit_for): Perform redisplay even if input is pending
-       when redisplay-dont-pause is non-nil.
-
-2006-06-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_handle_visibility_change): Set buf.arg to Qnil.
-       (XTread_socket): Remove obsolete comment.
-
-2006-06-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (syms_of_xmenu): Make accelerate-menu an alias for
-       menu-bar-open.
-
-2006-06-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (Fmenu_bar_open, syms_of_xmenu): Change menu-bar-start to
-       menu-bar-open.
-
-       * gtkutil.c (menu_nav_ended): Change x-menu-bar-start to menu-bar-open.
-
-2006-05-31  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.c (Vhistory_add_new_input): New variable.
-       (read_minibuf): Use it.
-       (syms_of_minibuf) <history-add-new-input>: New Lisp variable.
-       (syms_of_minibuf) <history-delete-duplicates>: Doc fix.
-
-2006-05-31  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (select_wrapper): Add wrapper around select to work around
-       "incomplete backtrace" bug in gdb 5.3, when emacs is stopped inside
-       select called from wait_reading_process_output.
-
-2006-05-30  Andreas Schwab  <schwab@suse.de>
-
-       * xmenu.c (Fmenu_bar_start): Return a value.
-
-2006-05-30  Richard Stallman  <rms@gnu.org>
-
-       * coding.c (Ffind_operation_coding_system): Doc fix.
-
-2006-05-30  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32term.c (x_draw_hollow_cursor): Fix last change.
-
-2006-05-29  Kim F. Storm  <storm@cua.dk>
-
-       * w32term.c (x_draw_stretch_glyph_string): Fix last change.
-
-2006-05-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * coding.c (Ffind_operation_coding_system): Doc fix.
-
-2006-05-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility):
-       Call mac_set_font_info_for_selection if font panel is made visible.
-
-       * macterm.c (font_panel_shown_p) [USE_MAC_FONT_PANEL]: New variable.
-       (mac_font_panel_visible_p, mac_show_hide_font_panel)
-       [USE_MAC_FONT_PANEL]: New functions.
-       [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection):
-       Return immediately if font panel is not visible.
-
-       * macterm.h (mac_font_panel_visible_p, mac_show_hide_font_panel):
-       Add externs.
-
-2006-05-29  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * search.c (matcher_overflow): Mark as NO_RETURN.
-
-       * xterm.c (x_connection_closed): Likewise.
-
-       * sysdep.c (croak): Likewise.
-
-       * sound.c (sound_perror, alsa_sound_perror): Likewise.
-
-       * lisp.h (die, nsberror): Likewise.
-
-2006-05-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * sound.c (alsa_open, alsa_configure, alsa_write):
-       Move assignment to err out of if-statement.
-
-       * gtkutil.c (menu_nav_ended): New function.
-       (create_menus): Connect menu_nav_ended to "selection-done" to fix
-       grabs.
-
-       * xmenu.c (Fmenu_bar_start): New function for USE_GTK and USE_X_TOOLKIT.
-
-2006-05-28  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * charset.h (invalid_character): Mark as NO_RETURN.
-
-2006-05-29  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (Ffind_operation_coding_system): Call a function by
-       safe_call1 instead of call1.
-
-2006-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (struct saved_window): Add `dedicated'.
-       (Fset_window_configuration, save_window_save): Save/restore the
-       `dedicated' flag.
-
-2006-05-28  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (set_cursor_from_row): If cursor cannot be set in row,
-       don't update w->cursor and return 0.  Return 1 on success.
-       (try_cursor_movement): Repeat set_cursor_from_row on successive rows
-       until it succeeds.
-
-       * dispextern.h (set_cursor_from_row): Update prototype.
-
-2006-05-28  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_phys_cursor_geometry): Return computed x and y through
-       parameters.  Adjust x and width in case cursor in on a partially
-       visible stretch glyph on the left edge.
-       (erase_phys_cursor): Don't erase into left fringe/margin in case
-       previous cursor glyph is a partially visible stretch glyph on left.
-
-       * dispextern.h (get_phys_cursor_geometry): Update prototype.
-
-       * xterm.c (x_draw_stretch_glyph_string): Fix problems with invisible
-       cursor and erasing cursor on partially visible stretch glyph on left.
-       (x_draw_hollow_cursor): Compute x via get_phys_cursor_geometry.
-
-       * macterm.c: Likewise.
-
-       * w32term.c: Likewise.
-
-2006-05-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macselect.c (mac_handle_apple_event):
-       Return errAEEventNotHandled if key binding is not found.
-
-2006-05-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs.c (main) [PROFILING]: Enable also for __MINGW32__.
-       [__MINGW32__]: MinGW-specific declaration of `etext'.
-
-       * w32heap.c (etext, edata): Remove unused definitions.
-
-2006-05-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * fileio.c (Fcopy_file): Delete argument MUSTBENEW.
-       Incorporate the exclusive file-opening functionality into the behavior
-       when OK-IF-ALREADY-EXISTS is nil.
-       (Frename_file): Call Fcopy_file without MUSTBENEW argument.
-
-2006-05-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * sound.c (alsa_configure): Move get period/buffer_size after
-       setting hwparams.
-
-2006-05-26  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (Ffind_operation_coding_system): Allow (FILENAME
-       . BUFFER) in TARGET.
-
-2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.c (png_load): Don't call fclose on NULL.
-
-2006-05-25  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fns.c (Fyes_or_no_p):
-       * callint.c (Fcall_interactively): Fread_from_minibuffer now takes
-       only seven args.
-
-2006-05-25  Juri Linkov  <juri@jurta.org>
-
-       * lisp.h (Fread_from_minibuffer): Decrement number of args.
-
-       * minibuf.c (read_minibuf): Remove arg KEEP_ALL.  Callers changed.
-       (Fread_from_minibuffer): Remove arg KEEP_ALL.  Callers changed.
-
-       * buffer.c (mode-line-format): Fix docstring.
-
-2006-05-25  Richard Stallman  <rms@gnu.org>
-
-       * emacs.c (main, Fdump_emacs): Don't test __linux or __linux__.
-
-2006-05-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * puresize.h (BASE_PURESIZE): Increase to 1210000.
-
-2006-05-24  Alan Mackenzie  <acm@muc.de>
-
-       * lread.c (Vload_history): Enhance doc-string to say that the file
-       is the absolute truename of the loaded file.
-
-       * lread.c (Vafter_load_alist): doc-string: state that an element
-       now has a regexp to match file names, not a file name as such.
-
-       * lread.c (readevalloop): Call file-truename on the name for
-       load-history, except at preloading time.
-
-       * lread.c (Fload): At preloading time, preserve the extension of
-       the filename which goes into load-history.  New var hist_file_name.
-
-       * lread.c (Fload): Do eval-after-load stuff by calling the lisp
-       function do-after-load-evaluation.
-
-2006-05-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (ae_attr_table): New variable.
-       (syms_of_mac): Intern and staticpro its elements.
-       (mac_aelist_to_lisp): Also convert Apple event attributes.
-       (mac_ae_put_lisp): New function.
-       (create_apple_event_from_event_ref) [MAC_OSX]: Use typeUTF8Text.
-
-       * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor etc.
-
-       * macselect.c (Qemacs_suspension_id): New variable.
-       (syms_of_macselect): Intern and staticpro it.
-       (struct suspended_ae_info): New struct.
-       (deferred_apple_events, defer_apple_events)
-       (Fmac_process_deferred_apple_events): Use it.
-       (suspended_apple_events): New variable.
-       (mac_handle_apple_event_1): New function.
-       (mac_handle_apple_event): Use it.  Don't process previously
-       suspended events.
-       (cleanup_suspended_apple_events, get_suspension_id)
-       (cleanup_all_suspended_apple_events): New functions.
-       (init_apple_event_handler): Call cleanup_all_suspended_apple_events
-       at exit.
-       (Fmac_cleanup_expired_apple_events, Fmac_ae_set_reply_parameter)
-       (Fmac_resume_apple_event): New defuns.
-       (syms_of_macselect): Defsubr them.
-
-       * macterm.c (fn_keycode_to_keycode_table, XTread_socket) [MAC_OSX]:
-       Fix last change.  Don't map `fn' modifier if pressed with F1 ... F12.
-
-       * macterm.h (TYPE_FILE_NAME): Change from macro to enumerator.
-       (KEY_EMACS_SUSPENSION_ID_ATTR): New enumerator.
-       (keyReplyRequestedAttr) [MAC_OS_X_VERSION_MAX_ALLOWED < 1030]: Likewise.
-       (gestaltSystemVersionMajor, gestaltSystemVersionMinor)
-       (gestaltSystemVersionBugFix) [MAC_OS_X_VERSION_MAX_ALLOWED < 1040]:
-       Likewise.
-       (typeUTF8Text, kEventParamWindowMouseLocation)
-       [MAC_OSX && MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Likewise.
-       (x_get_focus_frame, mac_ae_put_lisp): Add externs.
-
-2006-05-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (fn_keycode_to_xkeysym_table, convert_fn_keycode): Remove.
-       (fn_keycode_to_keycode_table) [MAC_OSX]: New variable.
-       (mac_set_unicode_keystroke_event) [TARGET_API_MAC_CARBON]: New function.
-       (XTread_socket) [TARGET_API_MAC_CARBON]: Use it.
-       (XTread_socket) [MAC_OSX]: Try 'uchr' Unicode keyboard-layout
-       resource to backtranslate key with modifiers.
-       (XTread_socket): Don't set read_socket_inev around AEProcessAppleEvent.
-
-2006-05-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c: Remove declarations already in xterm.h
-
-       * xterm.h: Add extern declarations for x_clear_errors,
-       x_fully_uncatch_errors, x_catching_errors and
-       x_alloc_lighter_color_for_widget.  Remove duplicated declarations.
-
-2006-05-21  Richard Stallman  <rms@gnu.org>
-
-       * xfaces.c (best_matching_font): Abort for best == NULL
-       before we start to use it.
-
-       * buffer.c (syms_of_buffer, Fmake_overlay): Doc fixes.
-
-2006-05-20  Kim F. Storm  <storm@cua.dk>
-
-       * xfaces.c (best_matching_font): Fix crash in 2006-05-17 change.
-
-2006-05-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (convert_fn_keycode): Fix last change.
-
-2006-05-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32.c (init_environment): Perform the processing of environment
-       variables on a copy of default variables and their values, not on
-       the original.  Simplify code that calls ExpandEnvironmentStrings
-       and make buf1[] and buf2[] more visible for easier debugging.
-
-2006-05-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * frame.c (x_set_border_width): Remove #ifndef MAC_OS.
-
-       * image.c [MAC_OS] (gif_load): Allocate Lisp string first.
-
-       * macfns.c (Fx_focus_frame): Don't check dpyinfo->x_focus_frame.
-
-       * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON && MAC_OSX]:
-       Forward keyUp events to toolbox_dispatcher.
-
-       * window.c (foreach_window): Check WINDOWP (FRAME_ROOT_WINDOW (f)).
-
-2006-05-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * config.in: Regenerated (HAVE_ALSA).
-
-       * sound.c (alsa_sound_perror, alsa_open, alsa_period_size)
-       (alsa_configure, alsa_close, alsa_choose_format, alsa_write)
-       (snd_error_quiet, alsa_init): New functions.
-       (vox_init): Return 0 if unable to open device.
-       (Fplay_sound_internal): Test for alsa first and use vox (oss) as
-       a fallback.
-       (struct sound_device): Add period_size.
-       (wav_play, au_play): Use period_size if set.
-
-       * Makefile.in (CFLAGS_SOUND): New flags for ALSA.
-       (ALL_CFLAGS): Add CFLAGS_SOUND.
-
-2006-05-18  Kenichi Handa  <handa@m17n.org>
-
-       * callproc.c (Fcall_process): Reject encoding arguments by
-       ascii-incompatible coding systems (e.g. utf-16).
-
-       * coding.c (Qascii_incompatible): New variable.
-       (syms_of_coding): Setup Qascii_incompatible.
-       (setup_coding_system): Be sure to initialize coding->common_flags.
-       Check `ascii-incompatible' property of the coding system.
-
-       * coding.h (CODING_ASCII_INCOMPATIBLE_MASK): New macro.
-
-2006-05-18  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (display_tool_bar_line): Restore entire tool-bar
-       geometry when backtracking in case last image doesn't fit on line.
-
-2006-05-18  MIYOSHI Masanori  <miyoshi@meadowy.org>  (tiny change)
-
-       * xdisp.c (display_tool_bar_line): Don't adjust tool-bar height by
-       more than height of one frame default line.
-
-2006-05-17  Richard Stallman  <rms@gnu.org>
-
-       * xfaces.c (better_font_p): Any font beats no font.
-       (best_matching_font): Simplify based on above change.
-
-       * buffer.c (Fprevious_overlay_change, Fnext_overlay_change): Doc fixes.
-
-2006-05-16  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (handle_one_xevent): Check that f is not NULL before
-       calling x_kill_gs_process.
-
-2006-05-14  Richard Stallman  <rms@gnu.org>
-
-       * textprop.c (Fnext_single_char_property_change)
-       (Fprevious_single_char_property_change): Don't allow returning
-       value beyond LIMIT in any cases.
-       (Fnext_char_property_change, Fprevious_char_property_change): Doc fix.
-
-       * intervals.c (get_local_map): Abort if POSITION outside BEGV, ZV.
-
-2006-05-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): Check that f is not NULL before
-       calling _XEditResCheckMessages.
-
-2006-05-14  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (handle_one_xevent): Fix crash in 2006-03-24 change.
-
-2006-05-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * frame.c (x_set_border_width): Fix error message to say "frame",
-       not "window".
-
-       * Makefile.in (SOME_MACHINE_LISP): Add fringe.elc.
-
-2006-05-12  Chong Yidong  <cyd@stupidchicken.com>
-
-       * intervals.c (set_point_both): Fix mixup before before and after
-       in variable names.
-
-       * editfns.c (Fline_beginning_position): Inhibit point-motion hooks
-       while setting point temporarily.
-
-2006-05-11  Richard Stallman  <rms@gnu.org>
-
-       * lread.c (readevalloop): Abort if START non-nil for non-buffer input.
-
-2006-05-11  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_tool_bar): Handle large tool-bar-border values.
-
-2006-05-11  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Finsert_file_contents): Fix for the case of IO error
-       while handling replace operation.
-
-2006-05-10  Kenichi Handa  <handa@m17n.org>
-
-       * xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font
-       chosen for the default face was different from the frame font,
-       adjust the frame font.
-
-2006-05-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c (Qduration) [MAC_OS]: Undo previous change.
-       (syms_of_image) [MAC_OS]: Likewise.
-       [MAC_OS] (gif_load): Emulate Graphic Control Extension block.
-
-       * macfns.c (x_to_mac_color): Fix shift amount change.
-       (mac_set_font) [USE_MAC_FONT_PANEL]: Use x_get_focus_frame.
-       [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): Doc fix.
-
-       * macselect.c (Vmac_service_selection) [MAC_OSX]: Rename from
-       Vmac_services_selection.  All uses changed.
-       (mac_store_service_event): Rename from mac_store_services_event in
-       extern and calls.
-
-       * macterm.c (Qservice) [MAC_OSX]: Rename from Qservices.  All uses
-       changed.
-       [MAC_OSX] (mac_store_service_event): Rename from
-       mac_store_services_event.  All callers changed.
-       [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): Add args
-       FACE_ID and C.  All callers changed.
-       (x_free_frame_resources) [USE_MAC_FONT_PANEL]: Call
-       mac_set_font_info_for_selection when focus frame is destroyed.
-       (XTread_socket): Revert to FrontNonFloatingWindow/FrontWindow.
-
-       * macterm.h (mac_set_font_info_for_selection): Add 2nd and 3rd
-       args in extern.
-
-2006-05-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * keymap.c (describe_map): Avoid generating duplicate entries if
-       the shadowed binding has the same definition.
-
-2006-05-09  Kenichi Handa  <handa@m17n.org>
-
-       * keymap.c (push_key_description): Handle invalid character key.
-
-2006-05-08  Kenichi Handa  <handa@m17n.org>
-
-       * callproc.c (Fcall_process): Use system_eol_type for encoding
-       arguments if eol_type is not yet decided.
-
-       * coding.h (system_eol_type): Extern it.
-
-       * coding.c (setup_coding_system): For invalid coding-system, set
-       coding->eol_type to CODING_EOL_UNDECIDED.
-       (encode_coding): Cancel previous change.
-       (shrink_encoding_region): Likewise.
-       (code_convert_region1): Likewise.
-       (code_convert_string1): Likewise.
-       (code_convert_string_norecord): Likewise.
-
-       * fileio.c (choose_write_coding_system): Use system_eol_type for
-       encoding if eol_type is not yet decided.
-
-       * process.c (setup_process_coding_systems): Use system_eol_type
-       for encoding if eol_type is not yet decided.
-       (read_process_output): Likewise.
-       (send_process): Likewise.
-
-2006-05-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * minibuf.c (syms_of_minibuf) <history-length>: Fix typo in doc.
-
-2006-05-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (Fmac_clear_font_name_table): Move defun to macfns.c.
-       (syms_of_mac): Likewise for defsubr.
-
-       * macfns.c (mac_set_font): New function.
-       (mac_frame_parm_handlers, syms_of_macfns): Replace x_set_font with it.
-       (mac_window) [TARGET_API_MAC_CARBON && MAC_OSX]: Specify
-       kWindowToolbarButtonAttribute when creating window.
-       (Fmac_clear_font_name_table): Move from macfns.c.
-       (syms_of_macfns): Likewise for defsubr.
-       [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): New defun.
-       (syms_of_macfns) [USE_MAC_FONT_PANEL]: Defsubr it.
-
-       * macgui.h (USE_MAC_FONT_PANEL): Define to 1 if USE_ATSUI is set
-       and build is done on Mac OS X 10.2 and later.
-
-       * macselect.c (mac_do_receive_drag): Remove unused variable `index'.
-       (mac_store_services_event): Change return type in extern.
-
-       * macterm.c (XLoadQueryFont) [USE_ATSUI]: Set font->mac_fontnum to
-       FMFontFamily value.
-       [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): New function.
-       (x_new_focus_frame) [USE_MAC_FONT_PANEL]: Use it.
-       (QCfamily, QCweight, QCslant, Qnormal, Qbold, Qitalic): Add extern.
-       (QWindow) [MAC_OSX]: Likewise.
-       (Qfont) [USE_MAC_FONT_PANEL]: Likewise.
-       (Vmac_atsu_font_table) [USE_ATSUI]: New variable.
-       (syms_of_macterm) [USE_ATSUI]: Defvar it.
-       (Qtoolbar_switch_mode) [MAC_OSX]: New variable.
-       (Qpanel_closed, Qselection) [USE_MAC_FONT_PANEL]: Likewise.
-       (syms_of_macterm): Intern and staticpro them.
-       (init_font_name_table) [USE_ATSUI]: Add data to Vmac_atsu_font_table.
-       [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event):
-       New function.
-       [USE_CARBON_EVENTS] (mac_handle_command_event): Use it.
-       [MAC_OSX] (mac_store_services_event): Likewise.
-       [USE_CARBON_EVENTS] (mac_handle_window_event) [MAC_OSX]: Handle
-       kEventWindowToolbarSwitchMode event.
-       (install_window_handler) [USE_CARBON_EVENTS && MAC_OSX]: Register it.
-       [MAC_OSX] (mac_store_services_event): Change return type to OSStatus.
-       [USE_MAC_FONT_PANEL] (mac_handle_font_event): New function.
-       (install_window_handler) [USE_MAC_FONT_PANEL]: Install it.
-       (XTread_socket): Select window on mouse click if x_focus_frame is NULL.
-
-       * macterm.h (mac_set_font_info_for_selection): Add extern.
-
-2006-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c (Qduration) [MAC_OS]: New variable.
-       (syms_of_image) [MAC_OS]: Intern and staticpro it.
-       [MAC_OS] (gif_load): Save image extension data in img->data.lisp_val.
-       [MAC_OSX] (image_load_quartz2d): Use cfstring_create_with_utf8_cstring
-       instead of cfstring_create_with_string.
-
-2006-05-06  Kim F. Storm  <storm@cua.dk>
-
-       * .gdbinit (xframe): Print frame name.
-       (xlist): New command to print a list (max 10 elements).
-       (xpr): Print lisp object of any type.
-       (pitx): Print it->pixel_width.
-
-2006-05-05  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (handle_composition_prop): Fix for the case of empty
-       composition component.
-
-2006-05-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * keyboard.c (make_lispy_event) [MAC_OS]: Get Apple event info
-       from event->arg.
-
-       * termhooks.h (enum event_kind) [MAC_OS]: Update comment for
-       MAC_APPLE_EVENT.
-
-       * macterm.h (mac_make_lispy_event_code): Remove extern.
-       (mac_post_mouse_moved_event): Add extern.
-       (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
-       `const AEDesc *' in externs.
-       (create_apple_event_from_drag_ref) [TARGET_API_MAC_CARBON]: New extern.
-
-       * mac.c (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
-       `const AEDesc *'.
-       [TARGET_API_MAC_CARBON] (create_apple_event): New function.
-       [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): Use it.
-       Use xrealloc instead of repeated xmalloc/xfree.
-       [TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref):
-       New function.
-
-       * macmenu.c (restore_menu_items, cleanup_popup_menu): Return a value.
-
-       * macselect.c: Update copyright year.
-       (mac_store_apple_event): Change return type to void in extern.
-       (mac_handle_apple_event): Don't get return value from
-       mac_store_apple_event.
-       [TARGET_API_MAC_CARBON] (Vmac_dnd_known_types): New variable.
-       (syms_of_macselect) [TARGET_API_MAC_CARBON]: Defvar it.
-       [TARGET_API_MAC_CARBON] (mac_do_track_drag): Move function from
-       macterm.c.  Use Vmac_dnd_known_types as acceptable flavors.
-       [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise.  New
-       implementation using create_apple_event_from_drag_ref.
-       [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP)
-       (mac_do_receive_dragUPP): Move variables from macterm.c.
-       (install_drag_handler, remove_drag_handler): New functions.
-
-       * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON]: Try window
-       path select also for proxy icon click.
-       [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event): New function.
-       [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback): Use it.
-       (xlfdpat_create): Remove unused label `error' and trailing sentences.
-       (mac_do_track_drag, mac_do_receive_drag): Move functions to macselect.c.
-       (mac_do_track_dragUPP, mac_do_receive_dragUPP): Move variables to
-       macselect.c.
-       (install_drag_handler, remove_drag_handler): Add extern.
-       (mac_store_apple_event): Change return type to void.  All uses changed.
-       Create Lisp object from Apple event and store it into input event.
-       (mac_make_lispy_event_code): Remove function.
-       [TARGET_API_MAC_CARBON] (mac_store_drag_event): New function.
-       (install_window_handler): Call install_drag_handler.
-       (remove_window_handler): Call remove_drag_handler.
-
-2006-05-03  Richard Stallman  <rms@gnu.org>
-
-       * sound.c (Fplay_sound_internal): Dynamically allocate
-       current_sound_device and current_sound.
-       (sound_cleanup): Free them.
-
-       * minibuf.c (read_minibuf): Don't use read_minibuf_noninteractive
-       when inside a keyboard macro.
-
-2006-05-02  Andreas Schwab  <schwab@suse.de>
-
-       * xmenu.c (restore_menu_items): Return a value.
-
-2006-05-01  Martin Rudalics  <rudalics@gmx.at>
-
-       * syntax.c (Fforward_comment): Detect generic comment at beginning of
-       buffer when moving backwards.
-
-2006-05-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dispnew.c (update_window): Don't set changed_p when mode/header
-       line is updated.
-
-       * xdisp.c (prepare_menu_bars) [MAC_OS]: Call mac_update_title_bar.
-       (get_glyph_face_and_encoding, get_char_face_and_encoding):
-       Don't distinguish known faces from others.
-
-       * mac.c (mac_coerce_file_name_ptr): Try typeFSRef if coercion
-       through typeFileURL failed.
-
-       * macfns.c (mac_update_title_bar): New function.
-       [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): New function.
-       (show_hourglass, hide_hourglass) [USE_CG_DRAWING]:
-       Call mac_prepare_for_quickdraw.
-
-       * macgui.h (USE_ATSUI): Set default to 1 if MAC_OSX is defined.
-       (USE_CG_DRAWING): Don't define if compiled on Mac OS X 10.1.
-       (enum pcm_status): New enum.
-       (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID)
-       (XCharStructRow): Remove.  Now validity is represented by
-       non-negativeness of sum of ascent and descent.
-       (struct MacFontStruct): Change type of member `rows'.
-       (struct _XGC) [USE_CG_DRAWING]: Add member `clip_rects'.
-
-       * macterm.c (mac_draw_line, mac_draw_line_to_pixmap):
-       Adjust endpoints of strictly horizontal/vertical lines.
-       (mac_set_clip_rectangles) [USE_CG_DRAWING]: Set clip_rects.
-       (pcm_init, pcm_get_status): New functions.
-       (x_per_char_metric, XLoadQueryFont): Use them instead of
-       XCharStructRow and related macros.
-       (x_draw_relief_rect): Don't adjust arguments of mac_draw_line.
-       (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Free FRAME_FILE_NAME.
-       (XTread_socket) [TARGET_API_MAC_CARBON]: Handle proxy icon drag
-       and window path pop-up menu on title bar.
-       (mac_use_core_graphics) [USE_CG_DRAWING]: Set default to 1.
-
-       * macterm.h (mac_update_title_bar): Add extern.
-       (struct mac_output) [TARGET_API_MAC_CARBON]: New member `file_name'.
-       (FRAME_FILE_NAME): New macro.
-
-       * unexmacosx.c (unexec): Error if trying unexec from dumped executable.
-
-2006-04-30  Richard Stallman  <rms@gnu.org>
-
-       * keymap.c (Fdefine_key): Improve error message
-       when KEY begins with a non-prefix key.
-
-2006-04-30  Martin Rudalics  <rudalics@gmx.at>
-
-       * syntax.c (Fforward_comment): Don't forget to break out of the loop
-       when we skipped backward over a generic comment.
-
-2006-04-27  Nick Roberts  <nickrob@snap.net.nz>
-
-       * .gdbinit (pp1, pv1): Only print value as expression is now
-       printed out by gud-print.
-       (pv1): Correct doc string.
-
-2006-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (store_in_keymap): Change `def' arg to not be `register'.
-       Seems to trigger a bug in gcc-amd64 4.0.2 20051125 (Red Hat 4.0.2-8):
-       keymap.c:895: error: address of register variable `def' requested.
-
-2006-04-26  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (construct_mouse_wheel): Handle negative coordinates.
-
-       * w32fns.c (w32_wnd_proc) <WM_LBUTTONDOWN, WM_RBUTTONDOWN>:
-       <WM_LBUTTONUP, WM_RBUTTONUP>: Call signal_user_input in the cases
-       where we preempt mouse_button_timer.
-
-2006-04-25  Miles Bader  <miles@gnu.org>
-
-       * editfns.c (Ffield_beginning, find_field): Undo change of 2006-04-23.
-
-2006-04-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * process.h: Include headers for pid_t.
-
-2006-04-24  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (fill_stretch_glyph_string): Set s->nchars = 1 for code which
-       does last_glyph=s->first_glyph+s->nchars-1, e.g. if stretch has relief.
-       (produce_stretch_glyph): Assume that face box height and width is
-       already included in stretch glyph size so caller doesn't have to
-       consider the extra space otherwise added (fixes problem in ses.el).
-
-       * frame.c (x_set_font): Clear f->n_tool_bar_rows and current frame
-       matrices to force recalculation of tool-bar height after font change.
-
-       * xdisp.c (tool_bar_lines_needed): New local `temp_row' for clarity.
-       Clear it when done, so we don't accidentally draw a second copy of
-       the tool-bar after resetting f->n_tool_bar_rows.
-       (redisplay_tool_bar): Update tool-bar-lines frame parameter whenever
-       we recalculate f->n_tool_bar_rows.
-
-2006-04-23  Lars Hansen  <larsh@soem.dk>
-
-       * editfns.c (find_field): Fix comment.
-       (Ffield_beginning): Fix bug when POS is at field beginning.
-
-2006-04-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * puresize.h (BASE_PURESIZE): Increase to 1205000.
-
-2006-04-21  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): Fix last change.  Don't recenter if
-       window start is at BEGV.
-
-       * dispextern.h (struct image): New member `corners'.
-       (TOP_CORNER, LEFT_CORNER, BOT_CORNER, RIGHT_CORNER): New macros.
-
-       * image.c (four_corners_best): New arg CORNERS specifies what pixels
-       to look at in case image has margin.
-       (x_create_bitmap_mask): Pass NULL for CORNERS to four_corners_best.
-       (image_background, image_background_transparent)
-       (x_build_heuristic_mask): Pass img->corners to four_corners_best.
-       (gif_load): Set img->corners according to image's margin spec.
-       Use img->corners values directly where applicable.
-       Save image extension data in img->data.lisp_val.
-       (gif_clear_image): New function to free img->data.lisp_val.
-       (gif_type): Use it instead of generic x_clear_image.
-       (Fimage_extension_data): New defun.
-       (syms_of_image): Defsubr it.
-
-2006-04-21  John Sullivan  <john@wjsullivan.net>  (tiny change)
-
-       * window.c (Fdisplay_buffer): Doc fix.
-
-2006-04-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Increase to 25000.
-
-2006-04-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c [MAC_OS] (xpm_load_image): Fill in background field
-       while we have ximg handy.
-
-       * macmenu.c (restore_menu_items, save_menu_items): New functions
-       from xmenu.c.
-       (set_frame_menubar, digest_single_submenu): Apply 2006-04-18
-       changes for xmenu.c.
-
-       * macterm.c (x_per_char_metric): Return NULL if glyph width is 0.
-       (add_mac_font_name): New function.
-       (init_font_name_table): Use it.  Adopt the first found font from
-       those having the same family name.
-
-2006-04-21  Nick Roberts  <nickrob@snap.net.nz>
-
-       * xdisp.c (note_mouse_highlight): Use build_string.
-
-2006-04-20  Lars Hansen  <larsh@soem.dk>
-
-       * textprop.c (Fremove_list_of_text_properties):
-       Ensure modify_region is called only when buffer is modified and that
-       signal_after_change is allways called in that case.
-
-       * print.c (PRINTFINISH): Call signal_after_change.
-
-2006-04-20  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): Fix last change.
-
-       * xdisp.c (redisplay_window): If current window start is not at the
-       beginning of a line, select a new window start if buffer is modified
-       and window start is in the modified region, but the first change is
-       before window start.
-
-2006-04-18  Richard Stallman  <rms@gnu.org>
-
-       * xmenu.c (restore_menu_items, save_menu_items): New fns.
-       (set_frame_menubar): Use save_menu_items.  Save updated vector in
-       the frame before unwinding it.  Don't use unuse_menu_items.
-       Don't use discard_menu_items.
-       (digest_single_submenu): Abort if an item is not in a pane.
-       (init_menu_items): Put the error check at the top.
-
-       * keymap.c (describe_map): Make "shadowed" warning more verbose.
-
-       * window.c (adjust_window_trailing_edge): Correctly distinguish
-       series vs parallel cases, even when window has no parent.
-
-       * abbrev.c (record_symbol): New function.
-       (Finsert_abbrev_table_description): Sort the abbrevs alphabetically.
-
-2006-04-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c (x_create_bitmap_from_data) [MAC_OS]: Don't check return
-       value of xmalloc.
-
-       * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
-       (create_apple_event_from_event_ref, xrm_get_preference_database)
-       (cfstring_create_normalized): Don't check return value of xmalloc.
-
-       * macselect.c (get_scrap_target_type_list, defer_apple_events)
-       (copy_scrap_flavor_data, mac_handle_service_event): Don't check
-       return value of xmalloc/xrealloc.
-
-       * macterm.c (XCreateGC, x_per_char_metric, xlfdpat_create)
-       (init_font_name_table, init_font_name_table, mac_do_list_fonts)
-       (XLoadQueryFont, mac_store_apple_event): Don't check return value
-       of xmalloc.
-
-2006-04-17  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (coordinates_in_window): On the vertical border,
-       calculate the row number measured from the top of the window, not
-       the top of the frame.
-       (window_loop): Test w->dedicated with !NILP instead of EQ Qt.
-       (window_scroll_pixel_based): Fix off-by-one bug in 2002-12-23 change.
-
-2006-04-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Reduce to 24000.
-
-2006-04-16  Romain Francoise  <romain@orebokech.com>
-
-       * puresize.h (BASE_PURESIZE): Decrement back to 1200000.
-
-2006-04-16  Andreas Schwab  <schwab@suse.de>
-
-       * puresize.h (PURESIZE_RATIO): Reduce to 10/6.
-
-2006-04-15  Romain Francoise  <romain@orebokech.com>
-
-       * puresize.h (BASE_PURESIZE): Increment to 1210000.
-
-2006-04-13  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * print.c (Fprin1_to_string): Mention in the `doc' that the
-       behavior is modified by `print-level' and `print-length'.
-
-2006-04-13  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (setup_coding_system): If eol-type is not yet decided
-       and system_eol_type is not LF, set CODING_REQUIRE_ENCODING_MASK.
-       If coding_system is nil, return 0.
-       (code_convert_region1): Even if coding_system is nil, don't skip
-       conversion if system_eol_type is not LF.
-       (code_convert_string1): Likewise.
-       (code_convert_string_norecord): Likewise.
-
-2006-04-13  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (setup_coding_system): Fix previous change.
-       (encode_coding): If eol_type is not yet decided, use system_eol_type.
-       (shrink_encoding_region): If eol_type is not yet decided and
-       system_eol_type is not LF, don't shrink.
-
-2006-04-13  Nick Roberts  <nickrob@snap.net.nz>
-
-       * xdisp.c (note_mouse_highlight): Add help echo for dragging vertical
-       line.
-
-2006-04-12  Richard Stallman  <rms@gnu.org>
-
-       * keyboard.c (read_key_sequence): Explicitly avoid keybuf[-1].
-
-       * process.c (conv_lisp_to_sockaddr): If FAMILY unknown, just return.
-       (Fprocess_send_eof): Abort if fail to open null device.
-
-2006-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * fns.c [HAVE_MENUS && MAC_OS]: Include macterm.h.
-
-       * image.c [MAC_OS] (xpm_load_image): Add parentheses around
-       assignment used as truth value.  Add explicit braces to avoid
-       ambiguous `else'.
-       [MAC_OS] (gif_load): Remove unused variable `gcpro1'.
-
-       * lisp.h (syms_of_fontset, Fset_fontset_font): Put extern and
-       EXFUN in #ifdef HAVE_WINDOW_SYSTEM.
-       (syms_of_xfns, syms_of_xsmfns, syms_of_xselect, syms_of_xterm):
-       Put externs in #ifdef HAVE_X_WINDOWS.
-       (syms_of_macfns, syms_of_macselect, syms_of_macterm)
-       (syms_of_macmenu, syms_of_mac) [MAC_OS]: Add externs.
-       (init_mac_osx_environment) [MAC_OSX]: Add extern.
-
-       * mac.c (init_process): Remove undef.
-       (select) [MAC_OSX]: Undefine before including sysselect.h.
-       (posix_pathname_to_fsspec, fsspec_to_posix_pathname) [MAC_OSX]:
-       Remove functions and prototypes.
-       (parse_value): Add parentheses around + inside shift.
-       (path_from_vol_dir_name): Make static.
-       (get_temp_dir_name): Remove unused variables `cpb' and `dir_name'.
-       [!MAC_OSX] (get_path_to_system_folder): Likewise.
-       (Fmac_get_file_creator, Fmac_get_file_type): Remove unused
-       variable `cCode'.
-       (Fmac_coerce_ae_data): Remove unused variables `fref' and `fs'.
-       (Fmac_get_preference): Add explicit braces to avoid ambiguous `else'.
-
-       * macfns.c (x_to_mac_color): Remove unused variable `tail'.
-       (x_set_mouse_color): Remove unused variable `dpy'.
-       (Fx_create_frame): Remove unused variable `x_frame_count'.
-       (Fx_server_version): Add explicit braces to avoid ambiguous `else'.
-       (x_sync): Move from macterm.c.
-       (Fx_file_dialog): Remove unused variable `default_filter_index'.
-
-       * macmenu.c (min_menu_id): Make element type explicit.
-
-       * macselect.c (get_flavor_type_from_symbol): Remove unused
-       variable `val'.
-       (get_scrap_private_timestamp, x_get_foreign_selection)
-       (copy_scrap_flavor_data): Add explicit braces to avoid ambiguous `else'.
-       (Fmac_process_deferred_apple_events): Remove unused variables
-       `keyword', `reply', `apple_event', `count', and `err'.
-
-       * macterm.c: Don't include gnu.h.
-       (x_io_error_quitter, x_draw_image_foreground_1): Remove prototypes.
-       (x_sync): Move to macfns.c.
-       [USE_CG_DRAWING] (mac_define_fringe_bitmap): Remove unused
-       variable `mask_bits'.
-       (mac_compute_glyph_string_overhangs): Avoid ambiguous `else'.
-       (x_draw_image_glyph_string): Remove unused variable `pixmap'.
-       (x_mac_to_emacs_modifiers): Remove function.
-       (XTset_vertical_scroll_bar, mac_handle_visibility_change)
-       (x_make_frame_visible, xlfdpat_create, mac_handle_command_event):
-       Add explicit braces to avoid ambiguous `else'.
-       (x_make_frame_visible): Remove unused variables `type',
-       `original_top', and `original_left'.
-       (mac_do_list_fonts, XTread_socket): Add parentheses around && within ||.
-       (x_load_font): Remove unused variables `full_name', and `value'.
-       (do_get_menus, do_init_managers, do_check_ram_size) [!MAC_OS8]:
-       Remove functions.
-       (do_zoom_window): Reorganize variables with respect to conditionals.
-       (init_command_handler): Remove unused variable `err'.
-       [MAC_OSX] (mac_check_bundle): Remove unused variable `child'.
-
-       * macterm.h (x_set_mouse_position, x_set_mouse_pixel_position)
-       (x_make_frame_invisible, x_iconify_frame, x_free_frame_resources)
-       (x_destroy_window, x_wm_set_size_hint, x_delete_display, XFreeGC)
-       (do_menu_choice, have_menus_p, x_real_positions)
-       (x_set_menu_bar_lines, x_pixel_width, x_pixel_height, x_char_width)
-       (x_char_height, x_sync, x_set_tool_bar_lines, x_activate_menubar)
-       (free_frame_menubar): Add externs.
-
-       * unexmacosx.c: Include config.h before using HAVE_MALLOC_MALLOC_H.
-       (malloc, realloc, free): Add undefs.
-       (read_load_commands): Remove unused variable `n' and `j'.
-       (copy_data_segment): Remove unused variable `r'.
-
-       * xdisp.c (get_glyph_string_clip_rects): Add parentheses around &&
-       within ||.  Add explicit braces to avoid ambiguous `else'.
-       (dump_glyph_row): Remove label for `inverse_p' from legend.
-
-       * xfaces.c (Finternal_merge_in_global_face, try_font_list):
-       Add explicit braces to avoid ambiguous `else'.
-
-2006-04-11  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
-
-       * dispnew.c (init_display): Don't init X display if the user asked
-       for a non-X display.
-
-2006-04-12  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (setup_coding_system): Use system_eol_type for default
-       coding->eol_type.
-
-2006-04-11  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * lisp.h (wrong_type_argument): Mark as NO_RETURN.
-
-       * data.c (wrong_type_argument): Try to avoid compiler warnings due
-       to the fact the function is now marked as NO_RETURN.
-
-2006-04-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * s/ms-w32.h (pid_t) [_MSC_VER]: New typedef.
-
-2006-04-10  Romain Francoise  <romain@orebokech.com>
-
-       * xrdb.c (gethomedir): Use xstrdup.
-
-2006-04-10  Andreas Schwab  <schwab@suse.de>
-
-       * xrdb.c (gethomedir): Make sure to always return a pointer that
-       can be passed to free.
-
-2006-04-09  Richard Stallman  <rms@gnu.org>
-
-       * lisp.h (Fkill_emacs): Undo previous change.
-
-2006-04-08  Richard Stallman  <rms@gnu.org>
-
-       * search.c (boyer_moore): Test ch >= 0400, not >.
-
-2006-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * puresize.h (pure_write_error): Mark as NO_RETURN.
-
-       * lisp.h (args_out_of_range, args_out_of_range_3)
-
-2006-04-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements
-       if a menu is active on this frame.
-
-2006-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * lisp.h (report_file_error): Mark as NO_RETURN.
-
-2006-04-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * alloc.c [STDC_HEADERS]: Include stddef.h.
-
-       * lisp.h (PSEUDOVECSIZE): Fix last change.
-
-2006-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * process.h (struct Lisp_Process): Replace Lisp_Objects `pid',
-       `raw_status_high', and `raw_status_low' with plain integers, and move
-       them to the end of the structure.
-
-       * alloc.c (allocate_process): Use PSEUDOVECSIZE to initialize the
-       pseudovector's size field so only the Lisp_Object fields get GC'd.
-
-       * process.c (update_status, make_process, Fdelete_process)
-       (Fprocess_status, list_processes_1, start_process_unwind)
-       (create_process, Fmake_network_process, server_accept_connection)
-       (wait_reading_process_output, send_process, Fprocess_running_child_p)
-       (process_send_signal, proc_encode_coding_system, Fprocess_send_eof)
-       (sigchld_handler, status_notify): Adjust to new non-Lisp fields for
-       `pid' and `raw_status'.
-       (Fprocess_id, Fsignal_process): Same, and additionally use floats when
-       representing PIDs that are larger than most-positive-fixnum.
-
-       * keymap.c (describe_map): Only use XINT if we checked INTEGERP.
-
-       * lisp.h (OFFSETOF, PSEUDOVECSIZE): New macros.
-
-2006-04-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos.
-
-2006-04-03  Paul Eggert  <eggert@cs.ucla.edu>
-
-       * editfns.c (TM_YEAR_IN_ASCTIME_RANGE): New macro, identical to
-       ../lib-src/b2m.c and ../lib-src/editfns.c.
-       (Fcurrent_time_string): Use it.
-       Document that the year might not consume 4 columns if it's outside
-       the range 1000-9999.
-       Check for asctime failure.
-       Don't assume that the output string length is always exactly 24.
-
-2006-04-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (XTread_socket): Initialize variable `f' before its use.
-
-2006-04-03  Kenichi Handa  <handa@m17n.org>
-
-       * image.c: Include "charset.h" and "coding.h".
-       (x_find_image_file): Return an encoded file name.
-
-2006-04-01  Eli Zaretskii  <eliz@gnu.org>
-
-       * configure: Regenerated.
-
-2006-03-31  Kenichi Handa  <handa@m17n.org>
-
-       * xfns.c (xg_set_icon): Delete superfluous UNGCPRO.
-
-2006-03-30  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * xdisp.c (syms_of_xdisp): Fix variable name.
-
-2006-03-30  Kenichi Handa  <handa@m17n.org>
-
-       * xterm.c (x_term_init): Delete superfluous UNGCPRO.
-
-2006-03-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * keyboard.c (process_tool_bar_item): Reorder dummy args.
-
-2006-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keyboard.c (tool_bar_items): Use map_keymap.
-       (process_tool_bar_item): Add dummy args to fit the required interface.
-
-2006-03-25  Eli Zaretskii  <eliz@gnu.org>
-
-       * .gdbinit (pr, pp, pp1, pv, pv1): Force print_output_debug_flag
-       to zero before calling debug_print or safe_debug_print.
-
-       * print.c (print_output_debug_flag): New global variable.
-       (Fexternal_debugging_output) [WINDOWSNT]: Don't call
-       OutputDebugString if print_output_debug_flag is zero.
-
-2006-03-24  Paul Eggert  <eggert@cs.ucla.edu>
-
-       * editfns.c (TM_YEAR_BASE): Move up, so the changes below can use it.
-       (Fdecode_time, Fencode_time): Use TM_YEAR_BASE instead of 1900.
-       (Fdecode_time): Cast tm_year to EMACS_INT.
-       (Fcurrent_time_string): Report an invalid time specification if
-       the argument is invalid.  Also, check for out-of-range time stamps.
-
-2006-03-24  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (handle_one_xevent):
-       * w32term.c (w32_read_socket):
-       * macterm.c (XTread_socket): Don't let key-press clear mouse face
-       on in toolbar window if mouse-highlight is an integer.
-
-       * fns.c (sxhash_list): Include last non-nil CDR in hash.
-
-2006-03-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (enum mac_menu_kind): New enum.
-       (min_menu_id): New variable.
-       (POPUP_SUBMENU_ID, MIN_POPUP_SUBMENU_ID, MIN_MENU_ID)
-       (MIN_SUBMENU_ID): Remove defines.  All uses are replaced with
-       min_menu_id and enumerators in enum mac_menu_kind.
-       (fill_menu, dispose_menus, install_menu_quit_handler): New arg KIND.
-       All uses changed.  Add range check for menu ID.
-       (fill_menubar): Add range check for menu ID.
-       [HAVE_CANCELMENUTRACKING] (menu_quit_handler): Check error code of
-       GetEventParameter.
-       (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler
-       for each menu kind.
-
-2006-03-22  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c: Undo 2006-03-21 change.
-
-       * term.c: Define aliases for append_glyph and produce_stretch_glyph
-       when `static' is defined to avoid name clash with those in xdisp.c.
-
-       * process.c (Faccept_process_output): Fix to comply with lisp
-       reference.  Change arg "timeout" to "seconds" and allow both
-       integer and float value.  Change arg "timeout-msec" to "millisec"
-       and interpret" as milliseconds rather than microseconds.  Fix doc
-       string accordingly.
-
-2006-03-21  Ken Raeburn  <raeburn@raeburn.org>
-
-       * xdisp.c (store_next_glyph): Rename from append_glyph.
-       (generate_stretch_glyph): Rename from produce_stretch_glyph.
-       All callers changed accordingly.
-
-2006-03-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c: x_session_initialized new variable.
-       (x_term_init): Use x_session_initialized to check if
-       x_session_initialize should be called.
-       (x_initialize): Initialize x_session_initialized.
-
-2006-03-21  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (draw_fringe_bitmap): Don't calculate default overlay arrow
-       bitmap here, but ...
-       (update_window_fringes): ... here, so we can test if it has changed.
-
-2006-03-20  Andreas Schwab  <schwab@suse.de>
-
-       * dispnew.c (init_display): Check DISPLAY here.
-
-       * emacs.c (main): Don't check here.
-
-       * xterm.c (x_display_ok): Don't use DISPLAY env var.
-
-2006-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (window_scroll_pixel_based): Yet another int/Lisp_Object
-       mixup (YAILOM).
-
-2006-03-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs.c (main): Fix last change.
-
-2006-03-20  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Fwrite_region): Set visit_file to Qnil before GCPRO it.
-
-       * keymap.c (map_keymap): Set tail to Qnil before GCPRO it.
-
-       * xfns.c (xg_set_icon): Remove unnecessary GCPRO.
-
-       * xterm.c (x_term_init): Remove unnecessary GCPRO.
-
-2006-03-19  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (set_cursor_from_row): Fix cursor property on overlay string,
-       so it doesn't associate overlay string with following glyph by default.
-       Allow integer property value to specify explicit number of buffer
-       positions associate with overlay string.
-
-2006-03-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xterm.c (x_display_ok): Fix minor bug and compilation warnings.
-
-2006-03-18  Nozomu Ando  <nand@mac.com>
-
-       * m/pmax.h (BROKEN_NOCOMBRELOC) [__NetBSD__]: Define.
-       (LIB_STANDARD, START_FILES) [__NetBSD__]: Don't define.
-       (START_FILES, RUN_TIME_REMAP, UNEXEC) [__NetBSD__, __OpenBSD__]:
-       Don't redefine.
-
-       * m/mips.h: Don't use unexmips on NetBSD.
-       (LIBS_MACHINE): Move definition lower, so it doesn't use
-       LD_SWITCH_MACHINE, START_FILES, LIB_STANDARD, LIBS_TERMCAP,
-       C_SWITCH_MACHINE, and C_DEBUG_SWITCH.
-
-       * unexelf.c [BROKEN_NOCOMBRELOC]: Include assert.h.
-       (unexec) [BROKEN_NOCOMBRELOC]: Handle platforms whose nocombreloc
-       option is broken (e.g., MIPS/NetBSD).
-
-2006-03-18  Craig McDaniel  <craigmcd@gmail.com>  (tiny change)
-
-       * sheap.c (STATIC_HEAP_SIZE): Enlarge STATIC_HEAP_SIZE to 12MB.
-       Remove the HAVE_X_WINDOWS conditional.
-
-2006-03-18  Vivek Dasmohapatra  <vivek@etla.org>  (tiny change)
-
-       * emacs.c (main): If user asks for a display that is unavailable,
-       simulate -nw.
-
-       * xterm.c (x_display_ok): New function.
-
-       * xterm.h: Add prototype for x_display_ok.
-
-2006-03-18  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (Fw32_select_font): Doc fix.
-
-2006-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c [MAC_OS] (XPutPixel, XGetPixel)
-       [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]: Don't use specialized
-       version when depth is 32.
-       (mac_create_cg_image_from_image) [MAC_OS && USE_CG_DRAWING]:
-       New function.
-       (prepare_image_for_display) [MAC_OS && USE_CG_DRAWING]: Use it.
-       (x_clear_image_1) [MAC_OS && USE_CG_DRAWING]: Release CGImage.
-
-       * macterm.c (XCreatePixmap) [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]:
-       Create GWorld in ARGB pixel format.
-       (mac_copy_area, mac_copy_area_with_mask) [USE_CG_DRAWING]:
-       Remove functions.
-       (x_draw_image_foreground) [USE_CG_DRAWING]: Use mac_draw_cg_image
-       instead of mac_copy_area/mac_copy_area_with_mask.
-
-2006-03-15  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (extend_face_to_end_of_line): Always add space glyph to
-       empty row.  Fixes memory corruption revealed by 2006-03-02 change.
-       (display_tool_bar_line): Skip empty tool-bar line if HEIGHT < 0.
-       (tool_bar_lines_needed): Fix tool-bar display in case the tool-bar
-       width is exactly the same as the window width.  Don't count a final
-       empty tool-bar line (pass HEIGHT = -1 to display_tool_bar_line).
-
-2006-03-15  Juanma Barranquero  <lekktu@gmail.com>
-
-       * fringe.c (w32_init_fringe, w32_reset_fringes): Revert to being
-       conditional on HAVE_NTGUI, not WINDOWS_NT.
-
-2006-03-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dispextern.h (mac_init_fringe) [MAC_OS]: Add prototype.
-
-       * fringe.c (mac_init_fringe) [MAC_OS]: New function.
-
-       * macterm.c (mac_initialize) [USE_CG_DRAWING]: Call mac_init_fringe.
-       (max_fringe_bmp, fringe_bmp) [USE_CG_DRAWING]: New variables.
-       (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap)
-       (mac_draw_cg_image) [USE_CG_DRAWING]: New functions.
-       (mac_draw_bitmap) [USE_CG_DRAWING]: Remove function.
-       (x_draw_fringe_bitmap) [USE_CG_DRAWING]: Use mac_draw_cg_image
-       instead of mac_draw_bitmap.
-       (x_redisplay_interface) [USE_CG_DRAWING]: Set handlers for
-       define_fringe_bitmap and destroy_fringe_bitmap.
-
-2006-03-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xterm.c (x_uncatch_errors): Block input for entire function.
-
-2006-03-12  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Fx_create_frame): Remove call to
-       Qface_set_after_frame_default (from xfns.c 2003-05-26).
-
-       * w32menu.c (Fx_popup_menu): Call w32_free_menu_strings when
-       finished with the menu.
-
-       * w32term.c: Sync 2005-10-24 xterm.c changes.
-       (last_mouse_glyph_frame): New var.
-       (note_mouse_movement): Say mouse moved if current frame differs
-       from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
-       (w32_mouse_position): Set last_mouse_glyph_frame.
-       Remove OLD_REDISPLAY_CODE block.
-
-2006-03-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macgui.h [USE_ATSUI && MAC_OSX]: Define USE_CG_TEXT_DRAWING to 1.
-
-       * macterm.h (struct mac_output) [USE_CG_DRAWING]: New member cg_context.
-       (mac_prepare_for_quickdraw) [USE_CG_DRAWING]: Add prototype.
-
-       * mac.c (sys_select) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
-
-       * macfns.c (x_create_tip_frame): Apply 2006-03-11 change for xfns.c.
-
-       * macterm.c (mac_draw_rectangle, x_draw_glyph_string_foreground)
-       (x_draw_composite_glyph_string_foreground)
-       (x_draw_image_foreground): Undo previous changes.
-       (x_draw_hollow_cursor): Likewise.  Subtract 1 from the last
-       argument of mac_draw_rectangle.
-       (CG_SET_FILL_COLOR, CG_SET_STROKE_COLOR): New macros.
-       (mac_draw_string_common, mac_draw_image_string_cg): Use them.
-       (FRAME_CG_CONTEXT) [USE_CG_DRAWING]: New macro.
-       (mac_begin_cg_clip, mac_end_cg_clip, mac_prepare_for_quickdraw)
-       [USE_CG_DRAWING]: New functions.
-       (mac_draw_line, mac_erase_rectangle, mac_clear_window)
-       (mac_fill_rectangle, mac_draw_rectangle, mac_draw_string_common)
-       (mac_draw_image_string_cg) [USE_CG_DRAWING]: Add Quartz 2D drawing part.
-       (mac_draw_bitmap, mac_invert_rectangle, mac_draw_string_common)
-       (mac_copy_area, mac_scroll_area, x_scroll_bar_create)
-       (x_scroll_bar_remove, XTset_vertical_scroll_bar, x_set_window_size)
-       (XTread_socket) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
-
-2006-03-12  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
-
-       * xfns.c (x_icon): Disable redundant call to `x_wm_set_window_state'.
-
-2006-03-11  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (signal_user_input): New function.
-       (post_character_message): Use it for keyboard input.
-       (w32_msg_pump): Use it for mouse input.
-
-2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * window.c: Rename preserve_y to window_scroll_pixel_based_preserve_y.
-       (window_scroll_pixel_based, syms_of_window): Adapt to above change.
-
-2006-03-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (w32_wnd_proc): Ignore middle and extra button events
-       if a menu is already active (the menubar_active flag is on).
-
-2006-03-11  David Ponce  <david@dponce.com>
-
-       * xfns.c (x_create_tip_frame): Preserve received parms by copying them.
-
-2006-03-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32term.c: Add x_fully_uncatch_errors and x_catching_errors to
-       the list of unused display error handling functions.
-
-       * eval.c (unwind_to_catch): Call x_fully_uncatch_errors only if
-       HAVE_X_WINDOWS.
-       (internal_condition_case, internal_condition_case_1)
-       (internal_condition_case_2): Call x_catching_errors only if
-       HAVE_X_WINDOWS.
-
-       * vm-limit.c [HAVE_GETRLIMIT]: Don't define unconditionally.
-       Don't include sys/resource.h unless defined.
-
-2006-03-11  Richard Stallman  <rms@gnu.org>
-
-       * keymap.c (describe_map): Shorten string to indicate shadowed binding.
-
-       * vm-limit.c (get_lim_data, lim_data, data_space_start):
-       Move from mem-limits.h.
-       (enum warnlevel): New data type.
-       (check_memory_limits): Rewrite the logic about warnings.
-       Use standard `struct rlimit'.  Check return values for nonsense.
-       (memory_warnings): Always clear lim_data.
-
-       * mem-limits.h (get_lim_data, lim_data, data_space_start):
-       Move to vm-limit.c.
-
-       * xterm.c (x_fully_uncatch_errors, x_catching_errors): New functions.
-
-       * eval.c (unwind_to_catch): Call x_fully_uncatch_errors.
-       (internal_condition_case_1, internal_condition_case_2):
-       Abort if within unclosed x_catch_errors.
-
-2006-03-11  Romain Francoise  <romain@orebokech.com>
-
-       * process.c (Vprocess_adaptive_read_buffering): Doc fix.
-
-2006-03-11  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
-
-       * lisp.h: Remove duplicate prototypes.  Make the prototype of
-       getloadavg be conditioned on HAVE_GETLOADAVG being undefined.
-
-2006-03-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * xterm.c (x_draw_hollow_cursor): Subtract 1 from the last
-       argument of XDrawRectangle.
-
-       * xdisp.c (get_phys_cursor_geometry): Don't decrease height by 1.
-
-       * macterm.c (mac_draw_rectangle): Don't add 1 to width and height.
-       (x_draw_glyph_string_foreground)
-       (x_draw_composite_glyph_string_foreground)
-       (x_draw_image_foreground): Don't subtract 1 from width and height
-       arguments to mac_draw_rectangle.
-       (x_draw_hollow_cursor): Add 1 to w->phys_cursor_width.
-
-2006-03-10  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (USE_POSIX_MEMALIGN): Fix last change.
-
-2006-03-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c (USE_POSIX_MEMALIGN): New macro.
-       (ABLOCKS_BASE, lisp_align_malloc, lisp_align_free): Use it.
-
-2006-03-09  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): Fix decoding
-       ASCII component of a composition.
-
-2006-03-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * window.c: Declare preserve_y as a static global variable.
-       (window_scroll_pixel_based): No longer declare preserve_y;
-       it is global now.
-       (syms_of_window): Set preserve_y to -1.
-
-2006-03-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c [MAC_OS] (XPutPixel): Set alpha channel bits if pixmap
-       depth is 32.
-       [MAC_OS] (XGetPixel): Strip off alpha channel bits if pixmap
-       depth is 32.
-
-2006-03-06  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (handle_invisible_prop): Don't update it->position with
-       a buffer position if we're in a display string.
-
-2006-03-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.h (MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH)
-       (MAC_AQUA_SMALL_VERTICAL_SCROLL_BAR_WIDTH): New defines.
-
-       * macfns.c (x_default_scroll_bar_color_parameter)
-       (x_set_scroll_bar_foreground, x_set_scroll_bar_background):
-       Remove unnecessary prototypes.
-       (x_set_scroll_bar_default_width):
-       Use MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH.
-       (mac_set_scroll_bar_width): New function.
-       (mac_frame_parm_handlers): Set it as handler for scroll-bar-width.
-
-       * macterm.c (get_control_part_bounds): Fix type of return value.
-       (x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
-       (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: Don't show
-       scroll bar if it is not tall enough to display scroll bar thumb.
-       [USE_CARBON_EVENTS] (mac_convert_event_ref)
-       (mac_handle_command_event, mac_handle_window_event)
-       (mac_handle_mouse_event): Check error code of GetEventParameter.
-       (convert_fn_keycode) [MAC_OSX]: Likewise.
-
-2006-03-05  Andreas Schwab  <schwab@suse.de>
-
-       * xselect.c (x_catch_errors_unwind): Fix missing return value.
-
-2006-03-02  Kim F. Storm  <storm@cua.dk>
-
-       * frame.h (struct frame): New member n_tool_bar_rows.
-
-       * xdisp.c: Minimize the unpleasent visual impact of the requirement
-       that non-toolkit tool-bars must occupy an integral number of screen
-       lines, by distributing the rows evenly over the tool-bar screen area.
-       (Vtool_bar_border): New variable.
-       (syms_of_xdisp): DEFVAR_LISP it.
-       (display_tool_bar_line): Add HEIGHT arg for desired row height.
-       Make tool-bar row the desired height.  Use default face for border
-       below tool-bar.
-       (tool_bar_lines_needed): Add N_ROWS arg.  Use it to return number of
-       actual tool-bar rows.
-       (redisplay_tool_bar): Calculate f->n_tool_bar_rows initially.
-       Adjust the height of the tool-bar rows to fill tool-bar screen area.
-       (redisplay_tool_bar): Calculate f->n_tool_bar_rows when tool-bar area
-       is resized.
-
-2006-03-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * search.c (Fregexp_quote): Do not precede a literal `]' with two
-       backslashes to try to make clear that it has a literal meaning; it
-       does not do that.  (It could close a character alternative
-       containing a backslash.)
-
-2006-02-28  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xselect.c (x_catch_errors_unwind): New function.
-       (x_reply_selection_request): Put x_uncatch_errors in an unwind.
-       (Fx_get_atom_name): Call x_uncatch_errors earlier.
-
-       * window.c (Qscroll_up, Qscroll_down): New syms.
-       (window_scroll_pixel_based): Make preserve_y static to avoid
-       getting point stuck when scrolling 1 line.
-
-2006-02-26  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xterm.h, xterm.c (x_uncatch_errors): Delete unneccessary argument.
-
-       * xterm.c (x_load_font, x_term_init, XTmouse_position)
-       (handle_one_xevent, x_connection_closed, x_list_fonts):
-       No arg for x_uncatch_errors.
-
-       * xselect.c (x_own_selection, x_decline_selection_request)
-       (x_reply_selection_request, x_get_foreign_selection)
-       (Fx_get_atom_name, Fx_send_client_event): Likewise.
-
-       * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame):
-       Likewise.
-
-2006-02-26  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * lread.c: Declare Vload_file_rep_suffixes instead of
-       deleted variable default_suffixes.
-       (Fget_load_suffixes): New function.
-       (Fload): Use Fget_load_suffixes and Vload_file_rep_suffixes.
-       No longer use deleted variable default_suffixes.  Update docstring.
-       (syms_of_lread): defsubr Sget_load_suffixes.
-       Expand `load-suffixes' docstring.
-       Delete default_suffixes and DEFVAR_LISP the new variable
-       `load-file-rep-suffixes'.
-
-       * w32.c (check_windows_init_file): Use Fget_load_suffixes instead
-       of Vload_suffixes.
-
-       * lisp.h: EXFUN Fget_load_suffixes.
-       Extern Vload_file_rep_suffixes.
-
-       * eval.c (specpdl_ptr): Remove volatile qualifier for consistency
-       with lisp.h.
-
-2006-02-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lisp.h (struct specbinding, specpdl_ptr): Remove the volatile
-       qualifier which was trying to avoid the bug that was fixed by
-       yesterday's changes to xterm.c.
-
-2006-02-25  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xterm.h (x_catch_errors) Return value changed to void.
-       (x_uncatch_errors): Delete unused count argument.
-
-       * xterm.c (x_catch_errors): Don't use record_unwind_protect, since
-       it can be called in a signal handler.
-       (x_catch_errors_unwind): Function deleted.
-       (x_uncatch_errors): Deallocate last x_error_message_stack struct.
-       (x_check_errors): Call x_uncatch_errors before signalling error.
-
-       (x_load_font, x_term_init, XTmouse_position, handle_one_xevent)
-       (x_connection_closed, x_list_fonts): Use new versions of
-       x_catch_errors and x_uncatch_errors.
-
-       * xselect.c (x_own_selection, x_decline_selection_request)
-       (x_reply_selection_request, x_get_foreign_selection)
-       (Fx_get_atom_name, Fx_send_client_event): Likewise.
-
-       * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame):
-       Likewise.
-
-       * eval.c (record_unwind_protect): Add an assertion.
-
-2006-02-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * process.c (Fmake_network_process): Init the process's mark.
-
-2006-02-25  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (modify_overlay): Force redisplay if we modify an
-       overlay at the end of the buffer.
-
-2006-02-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_image_for_pixmap): If x_find_image_file returns
-       nil the image file has been removed, in that case use the (cached)
-       pixmap.
-
-2006-02-24  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Finsert_file_contents): When a text is replaced
-       partially, be sure to set point before the inserted characters.
-
-2006-02-23  Zhang Wei  <id.brep@gmail.com>  (tiny change)
-
-       * xfns.c (Fx_file_dialog): Return a decoded file name.
-
-2006-02-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dispnew.c (update_text_area): Avoid needless redraw of rightmost
-       glyph whose face is extended to the text area end.
-
-       * macterm.c (x_set_toolkit_scroll_bar_thumb): Don't set control
-       values if control is not visible or values are not changed.
-
-2006-02-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (Fwindow_list): Check `window' before doing XWINDOW.
-       The default `window' should not be "on a different frame".
-
-2006-02-22  Kim F. Storm  <storm@cua.dk>
-
-       * indent.c (Fvertical_motion): Only try to move back if we can.
-
-2006-02-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macgui.h (struct _XGC) [!MAC_OSX || !USE_ATSUI]: New member
-       n_clip_rects.
-
-       * macmenu.c (digest_single_submenu): Apply 2006-02-19 change for
-       xmenu.c.
-
-       * macterm.c (GC_CLIP_REGION): Remove macro.
-       (mac_begin_clip, mac_end_clip): Take arg GC instead of REGION.
-       All uses changed.  Don't do clipping if n_clip_rects is zero.
-       (mac_set_clip_rectangles): Use xassert instead of abort.
-       Set n_clip_rects.  Don't make clip_region empty when number of
-       clipping rectangles is zero.
-       (mac_reset_clip_rectangles): Set n_clip_rects directly instead of
-       calling mac_set_clip_rectangles.
-       (x_set_toolkit_scroll_bar_thumb): Temporarily hide scroll bar to
-       avoid multiple redraws.
-
-2006-02-22  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (draw_fringe_bitmap): Fix overlay-arrow display.
-
-2006-02-21  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (syms_of_fringe) <fringe-bitmaps>: Doc fix.
-
-2006-02-21  Zhang Wei  <brep@newsmth.org>
-
-       * xfns.c (Fx_file_dialog, Motif and GTK): DECODE_FILE before
-       returning it.
-
-2006-02-21  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
-
-       * fringe.c (horizontal_bar_bits): Rename from `horisontal_bar_bits'.
-       (standard_bitmaps): Use it.
-
-2006-02-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_draw_string_common): Remove arg MODE.  New arg
-       BG_WIDTH.  All uses changed.  Draw background if BG_WIDTH is not zero.
-       (mac_draw_image_string, mac_draw_image_string_16): New arg BG_WIDTH.
-       [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg): Rename from
-       mac_draw_string_cg.  New arg BG_WIDTH.  All uses changed.
-       Draw background if BG_WIDTH is not zero.  Use float constants as
-       divisors instead of double.  Use alloca instead of xmalloc/xfree.
-       (x_draw_glyph_string_background, x_draw_glyph_string_foreground)
-       [!MAC_OS8 || USE_ATSUI]: Background may be drawn using
-       mac_draw_image_string* functions.
-       (XLoadQueryFont) [MAC_OS8 && USE_ATSUI]: Don't adjust heights of
-       some fonts when srcCopy text transfer mode might be used.
-       (mac_begin_clip, mac_end_clip): Check if region is empty.
-       (mac_set_clip_rectangles): When resetting clip region, make it
-       empty instead of disposing of it.
-
-2006-02-20  Kim F. Storm  <storm@cua.dk>
-
-       * Makefile.in: Add fringe.elc to WINDOW_SUPPORT.
-
-       * buffer.h (struct buffer): New members fringe_indicator_alist and
-       fringe_cursor_alist.
-
-       * buffer.c (init_buffer_once): Set dummy default values for
-       fringe-indicator-alist and fringe-cursor-alist.  The proper
-       default values are set by pre-loading fringe.el.
-       (syms_of_buffer): defvar_per_buffer new fringe-indicator-alist and
-       fringe-cursor-alist buffer-local variables and defvar_lisp_nopro
-       corresponding default- variables.
-
-       * fringe.c (enum fringe_bitmap_type): Remove.  Change all uses
-       to use `int'.
-       (NO_FRINGE_BITMAP, UNDEF_FRINGE_BITMAP, MAX_STANDARD_FRINGE_BITMAPS):
-       Define explicitly.
-       (Qtruncation, Qcontinuation, Qempty_line, Qtop_bottom)
-       (Qhollow_small): New variables.
-       (syms_of_fringe): Intern and staticpro them.
-       (question_mark_bits): Rename from unknown_bits.
-       (left_curly_arrow_bits): Rename from continuation_bits.
-       (right_curly_arrow_bits): Rename from continued_bits.
-       (left_triangle_bits): Rename from ov_bits.
-       (right_triangle_bits): Add.
-       (filled_rectangle_bits): Rename from filled_box_cursor_bits.
-       (hollow_rectangle_bits): Rename from hollow_box_cursor_bits.
-       (filled_square_bits): Add.
-       (vertical_bar_bits): Rename from bar_cursor_bits.
-       (horizontal_bar_bits): Rename from hbar_cursor_bits.
-       (empty_line_bits): Rename from zv_bits.
-       (standard_bitmaps): Update to use new names.
-       (draw_fringe_bitmap_1): Make static.
-       (get_logical_cursor_bitmap, get_logical_fringe_bitmap): New functions
-       to map from logical cursors and indicators to physical bitmaps.
-       (draw_fringe_bitmap): Resolve fringe cursor and overlay-arrow
-       bitmaps using symbol names instead of bitmap numbers.
-       (update_window_fringes): Use logical indicator symbol names
-       instead of bitmap numbers for logical.  Add bitmap cache.
-       (LEFT_FRINGE, RIGHT_FRINGE): New helper macros.
-
-2006-02-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * regex.c: Revert 2006-02-19 change.
-       (xmalloc, xrealloc): Define these when not linked to Emacs.
-       Redefine malloc -> xmalloc, realloc -> xrealloc as in Emacs case.
-
-2006-02-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * regex.c (extend_range_table_work_area): Fix typo.
-
-2006-02-19  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.c (x_catch_errors): Use xmalloc.
-
-       * regex.c (extend_range_table_work_area): Call xmalloc and xrealloc.
-       (regex_compile): Likewise.
-       (regcomp): Use xmalloc.
-
-       * gtkutil.c (malloc_widget_value): Use xmalloc.
-
-       * vm-limit.c [HAVE_GETRLIMIT]: Include sys/resource.h.
-       (check_memory_limits) [HAVE_GETRLIMIT]: Use getrlimit.
-
-       * xmenu.c (digest_single_submenu): When pane_string is empty,
-       do initialize save_wv.
-
-2006-02-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xdisp.c (update_menu_bar) [MAC_OS]: Don't set
-       w->update_mode_line if arg F is not the selected frame.
-
-       * macmenu.c (popup_activated_flag, submenu_id)
-       (next_menubar_widget_id): Remove variables.
-       (initialize_frame_menubar): Remove function.
-       (pop_down_menu, mac_menu_show): Simplify save value.
-       (dispose_menus): New function.
-       (pop_down_menu, fill_menubar): Use it.
-       (fill_submenu): Remove function.  All uses changed to fill_menu.
-       (add_menu_item): Remove args SUBMENU and FORCE_DISABLE.  New arg
-       POS.  Don't call SetMenuItemHierarchicalID here.
-       (fill_menu): Add arg SUBMENU_ID.  Return submenu_id that is to be
-       used next.  Call SetMenuItemHierarchicalID here.
-       (fill_menubar): Add arg DEEP_P.  All uses changed.  Clean up menu
-       objects if needed.  Reuse existing menu bar titles if possible.
-       (set_frame_menubar): Don't clean up menu objects here.
-
-2006-02-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * window.c (window_min_size_1): Ensure room for the scroll bar and
-       fringes.
-
-2006-02-17  Romain Francoise  <romain@orebokech.com>
-
-       * puresize.h (BASE_PURESIZE): Increment to 1200000.
-
-2006-02-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c (Fmake_symbol): Comment-out left-over assert from before the
-       addition of the BLOCK_INPUTs.
-
-2006-02-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * window.c (Fset_window_scroll_bars): Doc fix.
-
-2006-02-17  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (display_mode_element): Call display_string with correct
-       PREC arg (which must be a number of characters, not column width).
-
-2006-02-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * frame.c (x_get_arg): Clear out PARAM in ALIST also on Mac.
-
-       * macfns.c (x_set_menu_bar_lines): Menu bar is always shown on Mac.
-
-       * macmenu.c (set_frame_menubar): Don't call DrawMenuBar.
-
-2006-02-14  Richard M. Stallman  <rms@gnu.org>
-
-       * frame.c (x_get_arg): Clear out all occurrences of PARAM in ALIST.
-
-       * m/ibms390x.h: New file.
-
-2006-02-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_tool_bar_detach_callback): Set show-arrow to the
-       value of x-gtk-whole-detached-tool-bar.
-       (xg_tool_bar_attach_callback): Set show-arrow to TRUE.
-
-       * xfns.c (syms_of_xfns): New variable: x-gtk-whole-detached-tool-bar.
-
-2006-02-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_x_to_emacs_modifiers): Make non-static.
-
-       * xterm.h: Declare x_x_to_emacs_modifiers.
-
-       * gtkutil.c (xg_tool_bar_button_cb): New function.
-       (xg_tool_bar_callback): Call x_x_to_emacs_modifiers to
-       store modifiers in event.
-       (update_frame_tool_bar): Connect button-release-event to
-       xg_tool_bar_button_cb.
-
-2006-02-13  Richard M. Stallman  <rms@gnu.org>
-
-       * .gdbinit (xwindow): Update the code to show the window box.
-
-2006-02-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (note_mouse_movement): Check for NULL FRAME_X_OUTPUT (frame).
-
-2006-02-12  Richard M. Stallman  <rms@gnu.org>
-
-       * cmds.c (internal_self_insert): Handle weird auto-fill-function.
-
-2006-02-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * keyboard.c (Venable_disabled_menus_and_buttons): New variable.
-       (syms_of_keyboard): DEVFAR_LISP and initialize it.
-       (parse_tool_bar_item, parse_menu_item): If that variable is
-       non-nil, don't disable menu items and tool-bar buttons.
-
-2006-02-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * doc.c (Fsubstitute_command_keys): Doc fix.
-
-2006-02-10  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * data.c (Findirect_function): Rewrite docstring.
-       Fix omission bug: Declare new arg NOERROR.
-
-2006-02-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (x_set_mouse_color): Don't call rif->define_frame_cursor
-       if window_desc is not set yet.
-       (Fx_create_frame): Remove variable x_frame_name.  Apply 2005-12-07
-       and 2006-01-26 changes for xfns.c.  Call x_iconify_frame if frame
-       parameter `visibility' is `icon'.
-       (Fx_create_frame, x_create_tip_frame): Use "fontset-standard"
-       instead of "fontset-mac".
-       (Fx_focus_frame): New defun.
-       (syms_of_macfns): Defsubr it.
-
-       * macterm.c (mac_define_frame_cursor): Don't change pointer shape
-       for unfocused frame.
-       (x_raise_frame): Call BringToFront instead of SelectWindow.
-       (x_lower_frame): Use NULL instead of nil.
-       (x_make_frame_visible): Don't call SelectWindow.
-       (XTread_socket): Increment handling_signal at the start, decrement
-       it at the end.
-       [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): Use
-       CFPreferencesGetAppIntegerValue instead of Fmac_get_preference.
-
-2006-02-10  Kim F. Storm  <storm@cua.dk>
-
-       * data.c (Findirect_function): Add NOERROR arg.  All callers changed
-       to pass Qnil for NOERROR.
-
-       * keymap.c (current_minor_maps_error): Remove.
-       (current_minor_maps): Pass Qt for NOERROR to Findirect_function
-       instead of using internal_condition_case_1+current_minor_maps_error.
-
-2006-02-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): Must note mouse movement even for nil
-       frames for GTK, in that case it is the tool bar.  This is so that
-       highlighted text get reset properly.
-
-2006-02-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * alloc.c (Fmake_bool_vector, Fpurecopy): Doc fixes.
-
-2006-02-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * window.c (adjust_window_trailing_edge): Check that shrinking
-       does not set a window to size zero or less.
-
-2006-02-08  Miles Bader  <miles@gnu.org>
-
-       * editfns.c (Fconstrain_to_field): Use Fget_char_property instead
-       of Fget_text_property (other field functions work with overlays as
-       well as text-properties).
-
-2006-02-07  Kenichi Handa  <handa@m17n.org>
-
-       * dispextern.h (unibyte_display_via_language_environment): Extern it.
-
-       * xterm.h (unibyte_display_via_language_environment):
-       * w32term.h (unibyte_display_via_language_environment):
-       * macterm.h (unibyte_display_via_language_environment): Delete extern.
-
-2006-02-07  Kenichi Handa  <handa@m17n.org>
-
-       * term.c (append_glyph): Refer to it->char_to_display instead of it->c.
-       (produce_glyphs): Set the character to print in
-       it->char_to_display.  Handle unibyte-display-via-language-environment.
-       (produce_stretch_glyph): Set character to print in it->char_to_display.
-
-2006-02-06  Kenichi Handa  <handa@m17n.org>
-
-       * lread.c (openp): Initialize encoded_fn before GCPRO it.
-
-2006-02-05  Ken Raeburn  <raeburn@raeburn.org>
-
-       * editfns.c (Fconstrain_to_field): Fix int/Lisp_Object mixup.
-
-       * lisp.h (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]:
-       Cast bitfield value to EMACS_INT, to suppress gcc warning.
-
-       * xrdb.c (malloc, realloc, free) [emacs]: Undefine macros before
-       defining.
-
-2006-02-03  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c: Cache last merged escape glyph face.
-       (last_escape_glyph_frame, last_escape_glyph_face_id)
-       (last_escape_glyph_merged_face_id): New variables.
-       (get_next_display_element): Use/update them.
-       (redisplay_internal): Reset them before redisplay.
-
-       * xdisp.c (set_iterator_to_next): Optimize 2004-12-13 fix.
-       Only recheck faces after displaying ellipsis.
-
-2006-02-02  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (decode_composition_emacs_mule): Fix handling of
-       incorrect format data.
-
-2006-01-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (update_frame_tool_bar): Use new tool bar function
-       gtk_toolbar_insert() so we can have tool bars of different sizes.
-
-2006-01-30  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * data.c (Flistp): Doc fix.
-
-2006-01-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * window.c (Fother_window, Fwindow_vscroll, Fset_window_vscroll):
-       Fix typos in docstrings.
-
-2006-01-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * data.c (Fcar, Fcdr): Add links to Elisp manual to the docstrings.
-
-2006-01-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * alloc.c (make_interval, allocate_string)
-       (allocate_string_data, make_float, Fcons, allocate_vectorlike)
-       (Fmake_symbol, allocate_misc): Use BLOCK_INPUT when accessing
-       global variables.
-
-2006-01-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * dired.c (DIRENTRY_NONEMPTY) [__CYGWIN__]: Don't use d_ino; use
-       the MSDOS definition.
-
-2006-01-26  Richard M. Stallman  <rms@gnu.org>
-
-       * alloc.c (check_pure_size): Make overflow message an "error message".
-
-       * keymap.c (Fmap_keymap): Doc fix.
-
-       * xfns.c (Fx_create_frame): Put all specified parms into f->param_alist
-       unless they were cleared out.
-
-       * frame.c (x_get_arg): "Clear out" the parm in ALIST if found there.
-
-2006-01-26  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
-
-       * editfns.c (Fconstrain_to_field): Fix behaviour on field boundaries.
-       (find_field): Set before_field to after_field when pos is at BEGV.
-       (Fline_beginning_position, Fline_end_position):
-       Clarify confusing doc string.
-
-       * cmds.c (Fbeginning_of_line, Fend_of_line): Clarify confusing doc
-       string.
-
-2006-01-26  Kenichi Handa  <handa@m17n.org>
-
-       * callproc.c (Fcall_process): GCPRO error_file.  Encode infile,
-       current_dir, and error_file.  On reporting an error, decode them
-       back.
-
-2006-01-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * regex.c (IMMEDIATE_QUIT_CHECK): Use it with SYNC_INPUT as well.
-       (re_match_2_internal) <on_failure_jump, on_failure_jump_smart>:
-       Don't check for quit, since any loop will go through fail or jump.
-
-2006-01-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * alloc.c (allocate_string_data): Update next_free immediately, to
-       reduce risk of memory clobberage.
-
-2006-01-24  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
-
-       * xdisp.c (handle_invisible_prop): Set it->position to fix cursor
-       display when point moves across an ellipsis.  If there are
-       adjacent invisible texts, don't lose the second one's ellipsis.
-       (x_produce_glyphs): Doc fix.
-
-2006-01-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xterm.c (x_catch_errors_unwind): Yet another int/Lisp_Object mixup.
-
-2006-01-23  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (handle_single_display_spec): Fix handling of space
-       property on char from string: set *position rather than
-       it->current.pos.
-       (produce_stretch_glyph): Reduce width of stretch glyphs so they
-       don't get wider than the window (unless truncate-lines is on).
-
-2006-01-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xterm.c: Avoid allocating Lisp data from a signal handler.
-       (x_error_message): New var to replace x_error_message_string.
-       (x_error_catcher, x_catch_errors, x_catch_errors_unwind)
-       (x_check_errors, x_had_errors_p, x_clear_errors, x_error_handler)
-       (syms_of_xterm): Use it instead of x_error_message_string.
-
-       * alloc.c (lisp_align_free): Add an assertion.
-       (make_interval, allocate_string, make_float, Fcons, Fmake_symbol)
-       (allocate_misc): If ENABLE_CHECKING is on, check we're not called from
-       a signal handler.
-
-2006-01-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * dired.c (syms_of_dired) <completion-ignored-extensions>: Doc fix.
-
-2006-01-21  Romain Francoise  <romain@orebokech.com>
-
-       * xdisp.c (get_window_cursor_type): Fix last change.
-       Update copyright year.
-
-2006-01-20  Eli Zaretskii  <eliz@gnu.org>
-
-       * lread.c (Fload): Don't leak the file descriptor returned by
-       openp if we are going to signal an error.
-
-       * w32.c (sys_close): If FD is outside [0..MAXDESC) limits, pass it
-       directly to _close.
-       (sys_dup): Protect against new_fd larger than fd_info[] can handle.
-       (sys_read): If FD is outside [0..MAXDESC) limits, pass it directly
-       to _read.
-       (sys_write): If FD is outside [0..MAXDESC) limits, pass it
-       directly to _write.
-
-       * .gdbinit: Don't dereference Vsystem_type's Lisp_Symbol pointer
-       if it is NULL.
-
-2006-01-20  Kenichi Handa  <handa@m17n.org>
-
-       * puresize.h (BASE_PURESIZE): Increment to 1190000.
-
-2006-01-19  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xdisp.c (get_window_cursor_type): Use cursor type specified by
-       the selected buffer for the echo area too.
-
-2006-01-19  Richard M. Stallman  <rms@gnu.org>
-
-       * keymap.c (Fmap_keymap): Doc fix.
-
-       * s/irix6-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): New definitions.
-
-       * keyboard.c (echo_char): Don't omit the space between first two
-       echoed chars.
-
-       * minibuf.c (read_minibuf): Fix previous change.
-
-2006-01-19  Kenichi Handa  <handa@m17n.org>
-
-       * xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF.
-
-2006-01-17  Richard M. Stallman  <rms@gnu.org>
-
-       * frame.c (x_frame_get_and_record_arg): Don't record Qunbound
-       value in f->param_alist.
-
-2006-01-15  Andreas Schwab  <schwab@suse.de>
-
-       * search.c (Freplace_match): Use UPPERCASEP instead of !NOCASEP.
-
-2006-01-13  Richard M. Stallman  <rms@gnu.org>
-
-       * Makefile.in: Define new macro WINDOW_SUPPORT.
-       (lisp): Use it.
-       (SOME_MACHINE_LISP): Add conditionally loaded files.
-
-2006-01-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_ATSUI] (atsu_get_text_layout_with_text_ptr)
-       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Specify kATSLineUseQDRendering.
-       (XLoadQueryFont) [USE_ATSUI]: Display diacritical marks in
-       decomposed form.
-
-       * process.c [HAVE_INTTYPES_H]: Include inttypes.h.
-       (ifflag_table): Fix typo (IFF_OACTIV -> IFF_OACTIVE).
-       (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ_IFR_NETMASK
-       macro.  Also try member ifr_addr when getting netmask.
-
-2006-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fileio.c (Fexpand_file_name): Remove redundant tests.
-       Fix elimination of // so that it doesn't prevent elimination of an
-       immediately following /. or /..
-
-2006-01-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_toggle_notify_cb): New function.
-       (xg_toggle_visibility_cb): Move setting of x_gtk_show_hidden_files to
-       xg_toggle_notify_cb.
-       (xg_get_file_with_chooser): Add callback to xg_toggle_notify_cb when
-       parameter value changes so the toggle button gets updated.
-
-2006-01-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * .gdbinit: Fix typo.
-
-2006-01-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * .gdbinit: Fix last change.
-
-2006-01-05  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fmake_network_process): Use AF_INET instead of
-       AF_UNSPEC when AF_INET6 is not defined.
-
-2006-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
-       Don't check that the other type is known file-related one.
-
-       * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor,
-       gestaltSystemVersionMinor, and gestaltSystemVersionBugFix on Mac
-       OS X 10.4 and later.
-
-2006-01-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_image_for_pixmap): If the image is from a file,
-       let GTK do all image processing.  Importing Emacs own pixmaps to GTK
-       looks bad for inactive tool bar items with some Gnome themes.
-
-2006-01-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * .gdbinit: Avoid a warning message when x_error_quitter is not
-       compiled in.
-
-       * process.c [WINDOWSNT]: Undef AF_INET6 to disable IPv6 support
-       for w32.
-
-2006-01-04  Kim F. Storm  <storm@cua.dk>
-
-       * process.c: Add IPv6 support.
-       (Qipv4, Qipv6): New vars.
-       (syms_of_process): Intern and staticpro them.
-       (Fformat_network_address): Handle 9 or 8 element vector as IPv6 address
-       with or without port number.  Handle 4 element vector as IPv4 address
-       without port number.
-       (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size)
-       (conv_lisp_to_sockaddr): Handle IPv6 addresses.
-       (Fmake_network_process): Use :family 'ipv4 and 'ipv6 to explicitly
-       request that address family only.  :family nil or omitted means to
-       determine address family from the specified :host and :service.
-       (ifflag_table): Add missing OpenBSD IFF_ flags.
-       (server_accept_connection): Handle IPv6 addresses.
-       (init_process): Add (:family ipv4) and (:family ipv6) sub-features.
-
-       * .gdbinit: Undo last change.  Instead, look at Vsystem_type to
-       determine which breakpoints to set.
-
-2006-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (describe_map_compare): Yet another int/Lisp_Object mixup.
-
-       * window.h (Fwindow_minibuffer_p): Declare (for use in minibuf.c).
-
-2006-01-03  Romain Francoise  <romain@orebokech.com>
-
-       * emacs.c (main): Update copyright year.
-
-2006-01-03  Ken Raeburn  <raeburn@gnu.org>
-
-       * callproc.c (delete_temp_file): Bind file-name-handler-alist to
-       nil for the call to internal_delete_file.
-
-2006-01-01  Ken Raeburn  <raeburn@gnu.org>
-
-       * callproc.c (Fcall_process_region): Bind file-name-handler-alist
-       to nil for the call to Fwrite_region.
-
-2005-12-31  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.c (read_minibuf): Clear out all other minibuffer windows.
-
-2005-12-31  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs.c (gdb_pvec_type): A dummy variable for GDB's sake.
-
-2005-12-30  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * textprop.c (set_text_properties): Reword description of return value.
-       Return Qnil if caller wants to remove all text properties from a
-       string and the string already has no intervals.
-
-2005-12-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * term.c (visible_cursor): New boolean var.
-       (set_terminal_modes, tty_show_cursor): Use "vs" or "ve" depending on
-       visible_cursor.
-       (syms_of_term): Export the new var as "visible-cursor".
-
-2005-12-30  Eli Zaretskii  <eliz@gnu.org>
-
-       * .gdbinit: Tell users not to worry about GDB warnings that some
-       functions do not exist in the binary.
-
-2005-12-30  Andreas Schwab  <schwab@suse.de>
-
-       * process.c (Fnetwork_interface_info): Correctly terminate the
-       loop over ifflag_table.
-
-2005-12-29  Richard M. Stallman  <rms@gnu.org>
-
-       * lread.c (readevalloop): Test for reading a whole buffer
-       before actually reading anything.  Handle all cases, including
-       START = END = nil and an already-narrowed buffer.
-       Convert END to a marker if it is a number.
-
-       * keymap.c (describe_map): Put sparse map elements into an array,
-       sort them, then output a sequence of identical bindings on one line.
-       (struct describe_map_elt): New data type.
-       (describe_map_compare): New function.
-
-2005-12-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_file_with_chooser): Change message shown
-       in file chooser.
-
-2005-12-27  Richard M. Stallman  <rms@gnu.org>
-
-       * lread.c (readevalloop): Set PT and ZV in the proper buffer,
-       not the current one.
-
-       * minibuf.c (Fminibuffer_message): Doc fix.
-       (read_minibuf): Set current_buffer->enable_multibyte_characters sooner.
-
-       * eval.c (do_autoload): Ignore elements of Vautoload_queue
-       where car is not symbol.
-
-2005-12-27  Kenichi Handa  <handa@m17n.org>
-
-       * charset.c (lisp_string_width): Check multibyteness of STRING.
-
-2005-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (x_show_hidden_files): New variable.
-       (syms_of_xfns): Defvar it.
-
-       * gtkutil.c (xg_toggle_visibility_cb): New function.
-       (xg_get_file_with_chooser): Add toggle hidden files and a message
-       to the new file chooser dialog.  Show hidden files if
-       x_show_hidden_files is non-zero.
-
-2005-12-26  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.h: Undo previous change.
-
-       * Makefile.in (undo.o): Undo previous change.
-
-       * undo.c: Undo previous change.
-
-2005-12-26  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keyboard.h: extern last_point_position_window.
-
-       * undo.c: include keyboard.h.
-
-       * Makefile.in (undo.o): Depend on keyboard.h.
-
-2005-12-26  Richard M. Stallman  <rms@gnu.org>
-
-       * commands.h (last_point_position_window): Declare.
-
-       * undo.c: Depend on window.h.
-       (record_point): Save old point from the correct window.
-
-       * keyboard.c (last_point_position_window): New variable.
-       (command_loop_1): Set last_point_position_window.
-       (syms_of_keyboard): Init it.
-
-       * Makefile.in (undo.o): Depend on window.h.
-
-2005-12-25  Richard M. Stallman  <rms@gnu.org>
-
-       * eval.c (un_autoload): Expect (0 . OFEATURES) in Vautoload_queue
-       to undo a `provide'.
-
-       * fns.c (Fprovide): Store (0 . OFEATURES) in Vautoload_queue.
-
-2005-12-25  Giorgos Keramidas  <keramida@ceid.upatras.gr>
-
-       * m/amdx86-64.h [__FreeBSD__] (START_FILES, LIB_STANDARD):
-       define for FreeBSD on this platform.
-
-2005-12-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.h (TYPE_FILE_NAME): New define.
-       (posix_pathname_to_fsspec, fsspec_to_posix_pathname): Remove externs.
-
-       * mac.c (posix_pathname_to_fsspec, fsspec_to_posix_pathname):
-       Add prototypes.  Make static.
-       (mac_aedesc_to_lisp): Initialize err to noErr.
-       (mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
-       (init_coercion_handler): New functions.
-       (Fmac_coerce_ae_data): Use coercion of Apple event data for
-       translation from/to file names.
-
-       * macterm.c: Don't include sys/param.h.
-       (init_coercion_handler): Add extern.
-       [MAC_OS8] (main): Call init_coercion_handler.
-       (mac_initialize) [MAC_OSX]: Likewise.
-       [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Use coercion of
-       Apple event data for translation from/to file names.
-
-       * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise.
-
-       * image.c [MAC_OS] (find_image_fsspec): Likewise.
-
-2005-12-23  Martin Rudalics  <rudalics@gmx.at>
-
-       * insdel.c (insert, insert_and_inherit, insert_before_markers)
-       (insert_before_markers_and_inherit): Make sure FROM is correct
-       when `after-change-functions' are called.
-
-2005-12-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (Fx_uses_old_gtk_dialog): New function.
-
-       * gtkutil.c (xg_uses_old_file_dialog): New function.
-       (xg_get_file_name): Use xg_uses_old_file_dialog.
-
-       * gtkutil.h: Declare xg_uses_old_file_dialog.
-
-2005-12-22  Richard M. Stallman  <rms@gnu.org>
-
-       * xmenu.c (xmenu_show): Call inhibit_garbage_collection.
-
-2005-12-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (Fmac_coerce_ae_data) [MAC_OSX]: Fix memory leak.
-
-       * macgui.h (XCharStruct): Remove member `valid_p'.
-       (STORE_XCHARSTRUCT): Don't set member `valid_p'.
-       (XCharStructRow): New typedef.
-       (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID):
-       New macros.
-       (struct MacFontStruct): Add member `bounds'.  Remove member
-       `per_char'.  All uses for QuichDraw Text fonts are changed to
-       `bounds.per_char'.  ATSUI font bounds are represented as an array
-       `bounds.rows' of XCharStructRow's, each of which consists of a
-       bitmap of valid entries and an array of char bounds.
-
-       * macterm.c (mac_per_char_metric): Add prototype.
-       (x_per_char_metric) [USE_CG_TEXT_DRAWING]: Remove prototype.
-       (mac_query_char_extents): New function.
-       (x_per_char_metric): Use it.
-       (XLoadQueryFont): Likewise.  Consolidate min/max_bounds calculations.
-       [USE_CG_TEXT_DRAWING] (mac_draw_string_cg):
-       Use mac_per_char_metric instead of x_per_char_metric.
-       (mac_text_extents_16): New function.
-       (mac_compute_glyph_string_overhangs): Use it.
-       (mac_unload_font): Free member `bounds' in struct MacFontStruct.
-
-2005-12-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * minibuf.c (Fdisplay_completion_list): Use XCAR/XCDR.
-       (Fminibuffer_completion_help): Remove duplicates before display.
-
-2005-12-21  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
-
-       * print.c (print_preprocess): Don't lose print_depth levels while
-       iterating.
-
-2005-12-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (Qmac_apple_event): Add extern.
-       (set_frame_menubar, mac_menu_show keymp_panes)
-       (single_keymap_panes, list_of_panes, list_of_item)
-       (single_menu_item): Add argument types to prototypes.
-       (mac_dialog_show) [HAVE_DIALOGS]: Likewise.
-       (struct skp): New struct (from xmenu.c).
-       (single_keymap_panes, single_menu_item, list_of_panes)
-       (list_of_item): Sync with xmenu.c.
-       (Fx_popup_menu, Fx_popup_dialog): Likewise.  Don't get window from
-       POSITION if it is mac-apple-event event.
-       (menubar_selection_callback): Don't use menu_command_in_progress.
-       (set_frame_menubar): First parse all submenus, then make
-       widget_value trees from them.  Don't allocate any widget_value
-       objects until we are done with the parsing.
-       (parse_single_submenu, digest_single_submenu): New functions.
-       (single_submenu): Function deleted, replaced by those two.
-       (install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't create
-       or dispose of EventHandlerUPP.  Install hander to all submenus.
-       (mac_menu_show) [!HAVE_MULTILINGUAL_MENU]: Use ENCODE_MENU_STRING
-       instead of ENCODE_SYSTEM.
-       (free_frame_menubar, fill_submenu, fill_menu): Don't use NULL for
-       integer values.
-       [HAVE_DIALOGS] (mac_dialog_show): Sync with xdialog_show (in xmenu.c).
-       (add_menu_item) [TARGET_API_MAC_CARBON]: Use CFString functions to
-       format menu item string.  Don't use NULL for integer value.
-
-       * macterm.h (struct mac_output): Remove unused member
-       menu_command_in_progress.
-
-2005-12-20  Juri Linkov  <juri@jurta.org>
-
-       * xmenu.c (Fx_popup_menu): Set Vmenu_updating_frame to f if
-       position is non-nil, else set it to nil.
-
-       * macmenu.c (Fx_popup_menu): Add `else' to set
-       Vmenu_updating_frame to nil only if position is nil.
-
-       * w32menu.c (Fx_popup_menu): Add `else' to set
-       Vmenu_updating_frame to nil only if position is nil.
-
-2005-12-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * keyboard.c (make_lispy_event): Drag-and-drop items are now
-       stored in member `args' of struct input_event.
-
-       * termhooks.h (struct input_event): Fix comment for DRAG_N_DROP_EVENT.
-
-       * xselect.c (x_handle_dnd_message): Drag-and-drop items are now
-       stored in member `args' of struct input_event.
-
-       * w32term.c (construct_drag_n_drop): Likewise.
-
-       * macterm.c (mac_do_receive_drag): Likewise.
-       (x_use_underline_position_properties): Undo 2005-07-13 change.
-       (syms_of_macterm) <x-use-underline-position-properties>: Likewise.
-       (mac_use_core_graphics, mac_wheel_button_is_mouse_2)
-       (mac_pass_command_to_system, mac_pass_control_to_system):
-       New boolean variables renamed from Lisp_Object ones
-       Vmac_use_core_graphics, Vmac_wheel_button_is_mouse_2,
-       Vmac_pass_command_to_system, and Vmac_pass_control_to_system.
-       All uses changed.
-       (syms_of_macterm): DEFVAR_BOOL them.  Remove previous DEFVAR_LISPs.
-       Make them user options.
-       (mac_handle_command_event, mac_store_services_event):
-       Call create_apple_event_from_event_ref without 5th argument.
-       (backtranslate_modified_keycode): Mask off modifier keys that are
-       mapped to some Emacs modifiers before passing it to KeyTranslate.
-       (syms_of_macterm): Make variables `mac-emulate-three-button-mouse',
-       `mac-wheel-button-is-mouse-2', and `mac-*-modifier' user options.
-       Fix docstrings of `mac-*-modifier'.
-
-       * mac.c (create_apple_event_from_event_ref): Remove arg `types'.
-       (do_applescript): Change argument types to Lisp_Object.
-       All uses changed.
-
-       * macterm.h (create_apple_event_from_event_ref): Remove 5th
-       argument from extern.
-
-2005-12-18  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * xfns.c (Fx_backspace_delete_keys_p): In case we cannot determine
-       the answer, return `lambda', not nil.
-
-2005-12-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in (bootstrap-temacs): Warn that parts of commands
-       enclosed in $(ARGQUOTE)s should not be split between two lines, as
-       that will break with GNU Make >3.80, when sh.exe is used and
-       arg quoting is with '..'.
-
-2005-12-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * print.c (print_preprocess): Just signal an error if print_depth
-       is exceeded.
-
-2005-12-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * .gdbinit: Set a breakpoint on w32_abort.
-
-2005-12-16  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.c (Fminibuffer_completion_contents): New Lisp function
-       created from minibuffer_completion_contents.
-       (minibuffer_completion_contents): Remove.
-       (do_completion, Fminibuffer_complete_word)
-       (Fminibuffer_completion_help): Replace minibuffer_completion_contents
-       with Fminibuffer_completion_contents.
-       (syms_of_minibuf): Add Sminibuffer_completion_contents.
-       (Fdisplay_completion_list): Doc fix.
-       (display_completion_list_1): Use `nil' for second arg of
-       `Fdisplay_completion_list'.
-
-2005-12-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (compute_tip_xy): Handle negative dx and dy.
-
-       * w32fns.c (compute_tip_xy): Ditto.
-
-       * macfns.c (compute_tip_xy): Ditto.
-
-2005-12-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * print.c (print_preprocess): Go to a deeper print_depth to avoid
-       print_object loop.
-
-2005-12-14  Kyotaro HORIGUCHI  <horiguti@meadowy.org>  (tiny change)
-
-       * coding.c (code_convert_region_unwind): GCPRO arg.
-
-2005-12-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (compute_tip_xy): Calculate root_y the same way as root_x,
-       i.e. dy is offset from top of frame instead of bottom.
-
-       * macfns.c (compute_tip_xy): Ditto.
-
-       * w32fns.c (compute_tip_xy): Ditto.
-
-       * gtkutil.c (SSDATA): New macro to remove compiler warnings.
-       (xg_get_image_for_pixmap, xg_create_frame_widgets)
-       (xg_get_file_with_chooser): Use SSDATA instead of SDATA.
-
-       * xmenu.c (menubar_selection_callback): Do nothing if the callback
-       is for an unselected radio menu item.
-
-2005-12-11  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (syms_of_xdisp) <blink-cursor-alist>: Doc fix.
-
-       * lisp.h [! NO_UNION_TYPE] (EQ): Use == so args are computed just once.
-
-       * keymap.c (Fset_keymap_parent, store_in_keymap): Use CHECK_IMPURE.
-       (Flookup_key): Doc fix.
-       (syms_of_keymap) <function-key-map>: Doc fix.
-
-       * fns.c (Frequire): Treat evaluating from a source file
-       like loading the file.
-
-       * floatfns.c (Flog): Doc fix.
-
-       * fileio.c (Finsert_file_contents): Set Vdeactivate_mark
-       when we change the buffer.
-
-2005-12-11  Juri Linkov  <juri@jurta.org>
-
-       * minibuf.c (display_completion_list_1):
-       Call `minibuffer_completion_contents' instead of using `nil' as
-       second arg of `Fdisplay_completion_list'.
-       (keys_of_minibuf): Unbind SPC in
-       Vminibuffer_local_filename_completion_map (see also related
-       change on 2005-12-06).
-
-2005-12-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * emacs.c (main) [MAC_OS8]: Undo previous change.
-
-       * macselect.c (syms_of_macselect) <mac-apple-event-map>:
-       Initialize to nil.  Keymap is now created in lisp/term/mac-win.el.
-
-2005-12-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * Makefile.in (macselect.o): Depend on keymap.h.
-
-       * emacs.c (main) [MAC_OS8]: Call syms_of_keymap before
-       syms_of_macselect.
-
-       * image.c (init_image) [MAC_OS]: Don't call EnterMovies.
-       [!HAVE_GIF && MAC_OS] (gif_load): Call EnterMovies.
-
-       * keyboard.c (Qmac_apple_event) [MAC_OS]: New variable.
-       (syms_of_keyboard) [MAC_OS]: Initialize it.
-       (make_lispy_event) [MAC_OS]: Build lisp event for MAC_APPLE_EVENT.
-
-       * mac.c (Qundecoded_file_name): New variable.
-       (syms_of_mac): Initialize it.
-       (mac_aelist_to_lisp, mac_aedesc_to_lisp): New functions.
-       [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): New fun.
-       (Fmac_coerce_ae_data): New defun.
-       (syms_of_mac): Defsubr it.
-
-       * macselect.c: Include keymap.h.
-       (mac_ready_for_apple_events): New variable.
-       (Vmac_apple_event_map, Qmac_apple_event_class)
-       (Qmac_apple_event_id): New variables.
-       (syms_of_macselect): Initialize them.
-       (Qundefined, mac_store_apple_event): Add externs.
-       (struct apple_event_binding): New struct.
-       (find_event_binding_fun, find_event_binding)
-       (mac_find_apple_event_spec, defer_apple_events)
-       (mac_handle_apple_event, init_apple_event_handler)
-       (copy_scrap_flavor_data): New functions.
-       (Fmac_process_deferred_apple_events): New defun.
-       (syms_of_macselect): Defsubr it.
-       (mac_store_services_event): Fix extern.
-       (mac_handle_service_event): Don't allocate Lisp objects during
-       asynchronous input processing.  Use mac_store_services_event
-       instead of mac_store_application_menu_event.
-
-       * macterm.c (Qmac_ready_for_drag_n_drop, Qapplication, Qabout)
-       (Qpreferences): Remove variables.
-       (syms_of_macterm) : Don't initialize them.
-       (Qhicommand) [USE_CARBON_EVENTS]: New variable.
-       (syms_of_macterm) [USE_CARBON_EVENTS]: Initialize it.
-       (init_required_apple_events, do_ae_open_application)
-       (do_ae_print_documents, do_ae_open_documents)
-       (do_ae_quit_application): Remove functions and prototypes.
-       (mac_ready_for_apple_events, Qundefined, init_apple_event_handler)
-       (mac_find_apple_event_spec): Add externs.
-       (mac_store_application_menu_event): Remove function.
-       (mac_store_apple_event, mac_make_lispy_event_code): New functions.
-       (mac_handle_command_event): Create Apple event from Carbon event.
-       Use mac_store_apple_event instead of mac_store_application_menu_event.
-       [MAC_OSX] (mac_store_services_event): Likewise.
-       (struct SelectionRange, SelectionRange): Remove struct and typedef.
-       [MAC_OS8] (main): Call init_apple_event_handler instead of
-       init_required_apple_events.
-       (mac_initialize) [MAC_OSX]: Likewise.
-       [!USE_CARBON_EVENTS] (mac_wait_next_event):
-       Use mac_ready_for_apple_events instead of Qmac_ready_for_drag_n_drop.
-
-       * macterm.h (mac_make_lispy_event_code, mac_aedesc_to_lisp):
-       Add externs.
-       (create_apple_event_from_event_ref) [TARGET_API_MAC_CARBON]: Likewise.
-       (Fmac_get_preference): Add EXFUN.
-
-       * termhooks.h (enum event_kind) [MAC_OS]: Add new MAC_APPLE_EVENT
-       event.
-
-2005-12-09  Richard M. Stallman  <rms@gnu.org>
-
-       * xfns.c (Fx_create_frame): Reinstate previous change.
-
-2005-12-09  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (w32_abort) [__GNUC__]: Add instructions for attaching
-       GDB to the abort dialog.
-
-2005-12-09  Kyotaro HORIGUCHI  <horiguti@meadowy.org>  (tiny change)
-
-       * indent.c (Fvertical_motion): Force move if starting on
-       stretch glyph.
-
-2005-12-08  Richard M. Stallman  <rms@gnu.org>
-
-       * lread.c (read_escape) <\s>: Don't treat strings specially.
-
-       * xfns.c (Fx_create_frame): Comment out previous change.
-
-2005-12-07  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
-
-       * xfns.c (Fx_create_frame): Initialize Vdefault_minibuffer_frame,
-       when needed.
-
-2005-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * minibuf.c (keys_of_minibuf): Just unbind SPC in
-       Vminibuffer_local_filename_completion_map rather than forcing it
-       explicitly to the same binding as the global map.
-
-2005-12-06  Ken Raeburn  <raeburn@gnu.org>
-
-       * buffer.c (Fkill_buffer): Avoid dangerous side effects in NILP args.
-       * bytecode.c (Fbyte_code): Likewise.
-       * fileio.c (internal_delete_file, Fread_file_name_internal): Likewise.
-       * minibuf.c (Fminibuffer_complete_and_exit): Likewise.
-       * undo.c (truncate_undo_list): Likewise.
-
-2005-12-05  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (enlarge_window): Eliminate arg preserve_before.
-       Assume it is 0.  All callers changed.
-       (Fenlarge_window, Fshrink_window): Likewise.
-
-2005-12-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (compute_tip_xy): Put tip above pointer if it doesn't
-       fit below.
-
-2005-12-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h: Add prototype for xg_set_icon_from_xpm_data.
-
-       * xfns.c (x_real_positions): int ign => unsigned int.
-       (xg_set_icon_from_xpm_data): Remove unused variable err.
-       (x_set_name_internal, Fx_create_frame, xg_set_icon): Add cast
-       to remove compiler warning.
-       (compute_tip_xy): Put tip above pointer if it doesn't fit below.
-
-2005-12-02  David Reitter  <david.reitter@gmail.com>
-
-       * minibuf.c (Fcompleting_read): If Vminibuffer_completing_file_name is
-       non-nil, use the new keymaps Vminibuffer_local_filename_completion_map
-       and Vminibuffer_local_must_match_filename_map keymaps.
-       (keys_of_minibuf): Bind SPC in the new file-name completion keymaps.
-
-       * keymap.c (Vminibuffer_local_filename_completion_map)
-       (Vminibuffer_local_must_match_filename_map): New variables.
-       (syms_of_keymap): DEFVAR_LISP them, initialize them, and set their
-       parent to be Vminibuffer_local_completion_map and
-       Vminibuffer_local_must_match_map, respectively.
-
-       * commands.h (Vminibuffer_local_filename_completion_map)
-       (Vminibuffer_local_must_match_filename_map): Declare the new keymaps.
-
-2005-12-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (Fset_window_configuration): Don't accidentally copy the
-       window-point of one window to another.
-
-2005-11-30  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
-
-       * buffer.c (Fpop_to_buffer): Remove superfluous call to record_buffer.
-
-2005-11-30  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c: Include fcntl.h.  Define O_WRONLY if not defined.
-       (valid_lisp_object_p) [!GC_MARK_STACK]: Validate pointer by
-       passing it to `emacs_write'.
-
-2005-11-29  Ari Roponen  <arjuropo@cc.jyu.fi>  (tiny change)
-
-       * atimer.c (stop_other_atimers): Fix loop to correctly compute `prev'.
-
-2005-11-27  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (adjust_window_trailing_edge): New function.
-       (Fadjust_window_trailing_edge): New function.
-       (syms_of_window): Defsubr it.
-       (window_deletion_count): New variable.
-       (delete_window): Update window_deletion_count.
-
-2005-11-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * minibuf.c (syms_of_minibuf): Mention the extension of
-       `completion-auto-help's meaning by complete.el.
-
-2005-11-26  Henrik Enberg  <henrik.enberg@telia.com>
-
-       * xfaces.c (Finternal_set_lisp_face_attribute_from_resource):
-       Handle :inherit property as a lisp expression.
-
-2005-11-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (Qcontrol): Rename from Qctrl.  All uses changed.
-       (syms_of_macterm): Staticpro Qcontrol, Qmeta, Qalt, Qhyper,
-       Qsuper, and Qmodifier_value.
-       (Vmac_control_modifier, Vmac_option_modifier)
-       (Vmac_command_modifier, Vmac_function_modifier)
-       (Vmac_emulate_three_button_mouse, Vmac_wheel_button_is_mouse_2)
-       (Vmac_pass_command_to_system, Vmac_pass_control_to_system)
-       (Vmac_charset_info_alist): Doc fixes.
-
-2005-11-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * emacs.c (main) [MAC_OSX]: Change working directory to home
-       directory if `-psn_*' option is specified.
-
-       * mac.c (DECODE_UTF_8): Remove macro.
-       [TARGET_API_MAC_CARBON] (cfstring_to_lisp_nodecode): New function
-       created from cfstring_to_lisp.
-       [TARGET_API_MAC_CARBON] (cfstring_to_lisp): Use it.
-       (xrm_get_preference_database) [TARGET_API_MAC_CARBON]: Likewise.
-
-       * macterm.h (cfstring_to_lisp_nodecode) [TARGET_API_MAC_CARBON]:
-       Add prototype.
-
-2005-11-21  Ken Raeburn  <raeburn@gnu.org>
-
-       * keymap.c (shadow_lookup): Use make_number to pass a number to
-       Fsubstring.
-
-2005-11-21  Juri Linkov  <juri@jurta.org>
-
-       * puresize.h (BASE_PURESIZE): Increment to 1180000.
-
-2005-11-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xfaces.c (Finternal_set_lisp_face_attribute):
-       Use :ignore-defface for new frame defaults when `unspecified' is
-       supplied.
-       (Finternal_get_lisp_face_attribute): Hide :ignore-defface.
-       (merge_face_vectors): Don't do :ignore-defface overwriting here.
-       (Finternal_merge_in_global_face): Do it here.
-
-2005-11-20  Juri Linkov  <juri@jurta.org>
-
-       * charset.c (invalid_character): Use Lisp-readable syntax
-       for octal and hex.  Reorder decimal, octal and hex values.
-
-2005-11-20  Nick Roberts  <nickrob@snap.net.nz>
-
-       * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that
-       this type is recognised when debugging.
-
-2005-11-19  Andreas Schwab  <schwab@suse.de>
-
-       * .gdbinit (nextcons, xcdr, xfloat): Update for changes in
-       Lisp_Cons and Lisp_Float.
-
-2005-11-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_CG_TEXT_DRAWING] (cg_text_anti_aliasing_threshold):
-       New variable.
-       [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): New fun.
-       (init_font_name_table) [USE_ATSUI && USE_CG_TEXT_DRAWING]: Use it.
-       [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): Don't do antialiasing if
-       font size is smaller than or equal to cg_text_anti_aliasing_threshold.
-
-2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.c (x_create_bitmap_from_xpm_data): Free attributes on fail.
-
-       * xfaces.c (Qignore_defface): New variable.
-       (syms_of_xfaces): Provide `:ignore-defface'.
-       (IGNORE_DEFFACE_P): New macro.
-       (check_lface_attrs, lface_fully_specified_p)
-       (Finternal_set_lisp_face_attribute)
-       (Fface_attribute_relative_p, Fmerge_face_attribute):
-       Handle Qignore_defface as a possible value.
-       (merge_face_vectors): The merged face is `unspecified' if the
-       mergee specifies `:ignore-defface'.
-
-2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lread.c (readevalloop): Add missing GCPROs.
-
-2005-11-16  Chong Yidong  <cyd@stupidchicken.com>
-
-       * xfns.c (xg_set_icon_from_xpm_data): New function.
-
-       * gnu.h (gnu_xpm_bits): Rename from gnu_bits.
-       (gnu_xbm_bits): Rename from gnu_bits (xbm version).
-
-       * xterm.c (x_bitmap_icon): Use the xpm if available.
-
-       * image.c (x_create_bitmap_from_xpm_data): New function.
-       (x_create_bitmap_from_xpm_data): Initialize XpmAttributes.
-
-2005-11-15  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * Makefile.in (lisp, shortlisp): Add rfn-eshadow.
-
-2005-11-16  Nick Roberts  <nickrob@snap.net.nz>
-
-       * .gdbinit: Make SIGTSTP work like SIGINT normally does.
-
-2005-11-15  Andreas Schwab  <schwab@suse.de>
-
-       * lisp.h (struct Lisp_Cons): Make cdr a union.
-       (XCDR_AS_LVALUE): Adjust.
-       (struct Lisp_Float): Make data a union.
-       (XFLOAT_DATA): Adjust.
-
-       * alloc.c (free_float): Make free list chaining aliasing-safe.
-       (make_float): Likewise.
-       (free_cons): Likewise.
-       (Fcons): Likewise.
-       (check_cons_list): Likewise.
-       (Fmake_symbol): Likewise.
-       (allocate_misc): Likewise.
-       (free_misc): Likewise.
-       (gc_sweep): Likewise.
-
-2005-11-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (HASHKEY_QUERY_CACHE): New define.
-       (xrm_create_database, xrm_q_put_resource): Empty query cache.
-       (xrm_get_resource): Use query cache.
-
-       * image.c (init_image) [MAC_OS]: Don't call EnterMovies if
-       inhibit_window_system is set.
-
-2005-11-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macgui.h (USE_CG_TEXT_DRAWING): New define.
-       (struct MacFontStruct) [USE_CG_TEXT_DRAWING]: New members cg_font
-       and cg_glyphs.
-
-       * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): New function.
-       (x_draw_glyph_string_foreground) [USE_CG_TEXT_DRAWING]: Use it.
-       (XLoadQueryFont) [USE_CG_TEXT_DRAWING]: Set members cg_font and
-       cg_glyphs in struct MacFontStruct if synthesized bold or italic is
-       not used and font substitution never occurs for ASCII and Latin-1
-       characters.
-       (XLoadQueryFont): Maximum and minimum metrics are now those among
-       ASCII characters.
-       (XLoadQueryFont) [!MAC_OS8 || USE_ATSUI]: Apply WebKit-style
-       height adjustments for Courier, Helvetica, and Times.
-
-       * s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'.
-
-2005-11-11  David Reitter  <david.reitter@gmail.com>
-
-       * macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey,
-       macMetaKey, macAltKey.  Introduce Qctrl, Qmeta,
-       Vmac_control_modifier / mac-control-modifier,
-       Vmac_option_modifier / mac-option-modifier,
-       Vmac_command_modifier / mac-command-modifier.
-       (mac_to_emacs_modifiers): Use the new style modifier
-       variables.  Return UInt32 (modifiers are longs now.)
-       (backtranslate_modified_keycode): New function (refactoring).
-       (XTread_socket): Use new modifier variables and refactored function.
-       (mac_determine_quit_char_modifiers): Remove macMetaKey (there is
-       no dedicated meta key.  Not in use anyway.)
-       (convert_fn_keycode): Map Fn-keys to their original keycode
-       using a table (english keyboard only).
-
-2005-11-11  Kim F. Storm  <storm@cua.dk>
-
-       * .gdbinit (pitx): Fix output format if n_overlay_strings > 0.
-       Add post hook to "backtrace" to always dump lisp call stack to
-       increase chance of people sending it to us when reporting bugs.
-
-       * doc.c (Fsubstitute_command_keys): Doc fix.
-
-       * dispextern.h (struct it): New member ignore_overlay_strings_at_pos_p.
-
-       * xdisp.c (handle_stop): Skip overlay string handling if
-       ignore_overlay_strings_at_pos_p is set.
-       (set_iterator_to_next): At end of display vector, set
-       ignore_overlay_strings_at_pos_p if dpvec came from an overlay
-       string, so we skip those overlay strings at current pos.
-
-2005-11-10  Lars Hansen  <larsh@soem.dk>
-
-       * fileio.c (file-regular-p): Doc fix.
-
-2005-11-10  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (valid_lisp_object_p): New function to validate that
-       an object is really a valid Lisp_Object.
-
-       * lisp.h (valid_lisp_object_p): Add prototype.
-
-       * print.c (safe_debug_print): New function to be called from gdb
-       to print Lisp objects; use valid_lisp_object_p to avoid crashing
-       if user tries to print something which is not a Lisp object.
-
-       * .gdbinit (pp, pp1): Use safe_debug_print.
-       (pv, pv1): New commands to print value of a lisp variable.
-
-2005-11-10  Nick Roberts  <nickrob@snap.net.nz>
-
-       * .gdbinit (pp1): New user-defined function.
-
-2005-11-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c [MAC_OSX] (image_load_quartz2d): Fix memory leak.
-
-       * mac.c [MAC_OSX] (init_mac_osx_environment): Reinitialize locale
-       related variables for dumped executable.
-
-       * unexmacosx.c (unexec_write_zero): New function.
-       (copy_data_segment): Clear uninitialized local variables in
-       statically linked libraries.
-
-       * s/darwin.h (C_SWITCH_SYSTEM): Remove -fno-common.
-
-2005-11-09  Juri Linkov  <juri@jurta.org>
-
-       * keymap.c (shadow_lookup): If Flookup_key returns a number,
-       call it again with a sub-key-sequence, and if its return value
-       is non-nil (sub-key is bound), return nil.
-
-2005-11-08  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fsignal_process): Recognize signal names with and
-       without SIG prefix, e.g. SIGHUP and HUP.
-
-       * search.c (search_buffer): No need to initialize base_pat.
-
-2005-11-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (Fget_lru_window, Fget_largest_window, window_loop):
-       Don't abuse the `mini' arg.  Use the `obj' arg instead.
-
-2005-11-04  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (show_mouse_face): Clear mouse face to eol.
-
-2005-11-03  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * Makefile.in (lisp, shortlisp): Add emacs-lisp/syntax.elc,
-       font-lock.elc and jit-lock.elc.
-
-2005-11-03  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Fenlarge_window): Rename SIDE to HORIZONTAL.
-       (enlarge_window): Rename WIDTHFLAG to HORIZ_FLAG.
-       (CURBEG, CURSIZE): Use HORIZ_FLAG instead of WIDTHFLAG.
-
-       * sheap.c (STATIC_HEAP_SIZE): Increment both definitions.
-
-       * alloc.c (refill_memory_reserve): Move decl out of conditionals.
-
-2005-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (Fdisplay_buffer): Fix last change to not use
-       a dedicated window.
-
-2005-11-01  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (update_window_fringes): Undo 2005-10-27 change.
-       Instead, rotate the bottom angle bitmap 180 degrees to indicate
-       that the bottom row does not end in a newline.
-
-2005-11-01  Andreas Schwab  <schwab@suse.de>
-
-       * unexelf.c (unexec): Handle .plt section in BSS segment.
-
-2005-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lread.c (readevalloop): Yet another int/Lisp_Object mixup (YAILOM).
-
-       * window.c (window_loop): For LRU and LARGEST, let the `mini' argument
-       determine whether to consider dedicated windows as well.
-       (Fget_lru_window, Fget_largest_window): Add `dedicated' argument.
-       (Fdisplay_buffer): Do consider dedicated windows in those cases where
-       we will split the window rather than reuse it.
-       Don't try to use windows on other displays.
-
-2005-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * puresize.h (BASE_PURESIZE): Increment to 1170000.
-
-2005-10-31  Romain Francoise  <romain@orebokech.com>
-
-       * macfns.c: Update copyright year.
-       * m/gould.h: Likewise.
-
-2005-10-30  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (display_line): Restore it->current_x and call
-       extend_face_to_end_of_line when last glyph doesn't fit on line.
-       (set_glyph_string_background_width): Remove specific tests here
-       to see if face background should extend to end of line.  Simplify.
-
-2005-10-30  Richard M. Stallman  <rms@gnu.org>
-
-       * alloc.c (BYTES_USED): Use uordblks, not arena.
-       (bytes_used_when_reconsidered): New variable.
-       (emacs_blocked_free): Set that.
-
-2005-10-29  Chong Yidong  <cyd@stupidchicken.com>
-
-       * alloc.c (emacs_blocked_free): Fix typo.
-
-2005-10-29  Richard M. Stallman  <rms@gnu.org>
-
-       * data.c (Fmake_variable_frame_local): Doc fix.
-
-       * xdisp.c (handle_fontified_prop): Do nothing if memory full.
-       (format_mode_line_unwind_data): New arg SAVE_PROPTRANS
-       controls whether to save and restore mode_line_proptrans_alist.
-       Callers changed.
-       (unwind_format_mode_line): Work with that feature.
-       (redisplay_internal): Don't call prepare_menu_bars if memory full.
-       (move_elt_to_front): New function.
-       (display_mode_element): Use move_elt_to_front.
-       Don't bother munging text props on a null string.
-       Delete obsolete elts from mode_line_proptrans_alist.
-       (decode_mode_spec): Test Vmemory_full, not spare_memory.
-       (Fformat_mode_line): Clear mode_line_proptrans_alist after saving.
-
-       * lisp.h (memory_full_cons_threshold): Declare.
-       (internal_lisp_condition_case): Declare.
-
-       * alloc.c (syms_of_alloc) <memory-full>: Doc fix.
-       (Fmemory_full_p): Function deleted.
-       (syms_of_alloc): Don't defsubr it.
-       (memory_full_cons_threshold): New variable.
-       (spare_memory): Now a vector of 7 elts.
-       (buffer_memory_full): Don't set Vmemory_full here.
-       (xfree): Don't try to refill here.
-       (emacs_blocked_free): Record BYTES_USED in local var.
-       (memory_full): Now free all the slots in spare_memory.
-       (refill_memory_reserve): Allocate each slot in spare_memory.
-       (init_alloc_once): Call refill_memory_reserve.
-
-       * keyboard.c (command_loop_1): Don't set Vmemory_full here.
-
-       * eval.c (internal_lisp_condition_case): New function.
-       (Fcondition_case): Use internal_lisp_condition_case.
-       (Feval): Test Vmemory_full and memory_full_cons_threshold.
-       (Ffuncall): Likewise.
-
-       * bytecode.c (Fbyte_code): Use internal_lisp_condition_case.
-
-2005-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (Fparse_partial_sexp): Fix docstring.
-
-2005-10-28  Romain Francoise  <romain@orebokech.com>
-
-       * puresize.h (BASE_PURESIZE): Increment to 1130000.
-
-2005-10-28  Richard M. Stallman  <rms@gnu.org>
-
-       * xfns.c (syms_of_xfns): Provide `x' as feature.
-
-       * xdisp.c (decode_mode_spec): Define %e to indicate memory full.
-
-       * editfns.c (Fformat): Don't include string padding
-       between info[n].start and info[n].end.
-
-       * alloc.c (spare_memory): No longer static.
-       (xfree) [!SYSTEM_MALLOC]: Call refill_memory_reserve.
-
-       * puresize.h (BASE_PURESIZE): Increment to 1120000.
-
-2005-10-27  Chong Yidong  <cyd@stupidchicken.com>
-
-       * data.c (Fmake_variable_frame_local): Add clarification to docstring.
-
-       * fringe.c (update_window_fringes): Handle case where buffer ends
-       with a newline.
-
-2005-10-27  Kenichi Handa  <handa@m17n.org>
-
-       * coding.h (DECODE_SYSTEM): Fix argument name; name->str.
-
-2005-10-24  Kenichi Handa  <handa@m17n.org>
-
-       * charset.h (charset_mule_unicode_0100_24ff)
-       (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff):
-       Extern them.
-
-       * charset.c (charset_mule_unicode_0100_24ff)
-       (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff):
-       New variables.
-       (Fsetup_special_charsets): Initialize them.
-
-       * xterm.c (handle_one_xevent): Handle keysyms directly mapped to
-       supported Unicode characters.
-
-2005-10-25  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (w32_to_x_font): Avoid forcing font widths.
-
-2005-10-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c [MAC_OS] (image_load_qt_1): Check image size.
-       Use GraphicsImportGetImageDescription instead of
-       GraphicsImportGetNaturalBounds.
-       [MAC_OSX] (image_load_quartz2d): Check image size.
-       [MAC_OS] (xpm_load_image): Likewise.
-
-       * macterm.c (last_mouse_glyph_frame): New var.
-       (note_mouse_movement): Say mouse moved if current frame differs
-       from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
-       (XTmouse_position): Set last_mouse_glyph_frame.
-       (XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event.
-       (mac_draw_string_common) [USE_ATSUI && WORDS_BIG_ENDIAN]: Fix typo.
-       Use EndianU16_BtoN.
-       (mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls.
-       (x_per_char_metric, XLoadQueryFont)
-       [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Use device origins to get
-       glyph bounds.
-       (mac_to_x_fontname, mac_do_list_fonts)
-       (mac_initialize_display_info): Change screen resolutions to 72dpi.
-
-2005-10-25  Masatake YAMATO  <jet@gyve.org>
-
-       * minibuf.c (Fdisplay_completion_list): Small doc fix.
-
-2005-10-24  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c: Undo 2005-10-23 change.
-       (last_mouse_glyph_frame): New var.
-       (note_mouse_movement): Say mouse moved if current frame differs
-       from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
-       (XTmouse_position): Set last_mouse_glyph_frame.
-       (handle_one_xevent): Clear last_mouse_glyph_frame [instead of
-       last_mouse_glyph] on mouse up/down event.
-
-       * editfns.c (Fcompare_buffer_substrings): Fix last change.
-
-2005-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * editfns.c (Fcompare_buffer_substrings): Handle multibyte chars.
-
-2005-10-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (note_mouse_movement): Always call note_mouse_highlight
-       so tool tips don't interfere with press on tool bar button.
-
-2005-10-23  Richard M. Stallman  <rms@gnu.org>
-
-       * casetab.c (Fset_case_table): Doc fix.
-
-       * lread.c (build_load_history): Replace STREAM arg with ENTIRE.
-       (readevalloop): Compute ENTIRE properly.
-       (syms_of_lread) <load-history>: Doc fix.
-
-2005-10-21  Richard M. Stallman  <rms@gnu.org>
-
-       * lread.c (Fload): Simplify gcpro structure.
-       Gcpro FOUND as well as FILE, but not EFOUND.
-       Unless preloading, record FOUND instead of FILE in Vload_history.
-       Rename repeat local FILE to MSG_FILE.
-       (syms_of_lread) <load-history>: Doc fix.
-
-2005-10-21  Kenichi Handa  <handa@m17n.org>
-
-       * search.c (boyer_moore): Add parens to fix and/or precedence bug.
-
-2005-10-20  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (clone_per_buffer_values): Remove unused var tem.
-       (init_buffer): Remove unused vars dotstat, pwdstat.
-
-       * ccl.c (check_ccl_update): Remove unused var vp.
-
-       * fileio.c (auto_save_error): Call SAFE_FREE.
-
-       * fns.c (Fchar_table_range): Remove unused var i.
-
-       * minibuf.c (display_completion_list_1): New wrapper function
-       for Fdisplay_completion_list.
-       (Fminibuffer_completion_help): Use it.
-
-       * term.c (encode_terminal_code): Remove unused var src_start.
-
-       * window.c (Fwindow_tree): Remove unused var alist.
-
-       * xterm.c (x_calc_absolute_position): Remove unused vars win_x, win_y.
-
-2005-10-20  Aubrey Jaffer  <agj@alum.mit.edu>  (tiny change)
-
-       * unexelf.c (unexec): Fix calls to `fatal' with less than 3 arguments.
-
-2005-10-20  Olli Savia  <ops@iki.fi>  (tiny change)
-
-       * syssignal.h [__Lynx__]: Undef SIGPOLL along with SIGIO.
-
-2005-10-20  Andreas Schwab  <schwab@suse.de>
-
-       * minibuf.c (Fdisplay_completion_list): Doc fix.
-
-2005-10-19  Kim F. Storm  <storm@cua.dk>
-
-       * image.c (check_image_size): Handle integer Vmax_image_size value
-       directly as max pixel value.  Use default frame size for null frame.
-       (syms_of_image) <max-image-size>: Describe integer value.
-
-2005-10-19  Romain Francoise  <romain@orebokech.com>
-
-       * emacs.c (main): Update copyright year.
-
-2005-10-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * image.c (Vmax_image_size): New variable.
-       (check_image_size): New function.
-       (xbm_read_bitmap_data, pbm_load, png_load, jpeg_load, tiff_load)
-       (gif_load, gs_load): Use it.
-       (lookup_image): Try loading again if previous load failed.
-       (xbm_read_bitmap_data): Add a new argument, a pointer to the frame
-       to display in, NULL if none.
-       (xbm_load_image, xbm_file_p): Pass xbm_read_bitmap_data the new
-       argument.
-
-2005-10-18  Richard M. Stallman  <rms@gnu.org>
-
-       * search.c (Fstring_match): Doc fix.
-
-2005-10-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (note_mouse_movement): Use PtInRect.
-       (XTread_socket): Also ignore mouse motion just before a button
-       release event.  Don't process button release event when mouse is
-       not grabbed.
-
-2005-10-16  Masatake YAMATO  <jet@gyve.org>
-
-       * minibuf.c (Fdisplay_completion_list): Add new optional
-       argument COMMON_SUBSTRING.  Bind `completion-common-substring'
-       to the optional argument during running `completion-setup-hook'.
-
-2005-10-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp):
-       Allow nil as argument.
-        [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil
-       for encoding arguments as UTF-16 in native byte order, no BOM.
-
-       * macfns.c (Fx_create_frame): Add debugging code.
-       (Fx_show_tip): Set frame pixel width and height.
-
-       * macterm.c (MAC_WINDOW_NORMAL_GC): Remove macro.
-       (FRAME_NORMAL_GC): New macro.
-       (mac_draw_line, mac_clear_area, mac_clear_window)
-       (mac_fill_rectangle, mac_draw_string, mac_draw_string_16)
-       (mac_draw_image_string, mac_draw_image_string_16): Rename from
-       XDrawLine, XClearArea, XClearWindow, XFillRectangle, XDrawString,
-       XDrawString16, XDrawImageString, and XDrawImageString16, respectively.
-       All uses changed.
-       (mac_draw_line, mac_erase_rectangle, mac_clear_area)
-       (mac_clear_window, mac_draw_bitmap, mac_draw_rectangle)
-       (mac_invert_rectangle, mac_draw_string_common, mac_draw_string)
-       (mac_draw_string_16, mac_draw_image_string)
-       (mac_draw_image_string_16, mac_copy_area, mac_copy_area_with_mask)
-       (mac_scroll_area): Drawing functions now take frame as destination.
-       All uses changed.
-       (mac_draw_string_common): Get port height with FRAME_PIXEL_HEIGHT.
-       (x_draw_fringe_bitmap): Set clipping area in face->gc.
-
-       * macterm.h (mac_clear_area): Add extern.
-
-2005-10-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (note_mouse_movement, XTread_socket): Apply 2005-10-14
-       changes for xterm.c.
-
-       * w32term.c (note_mouse_movement, w32_read_socket): Likewise.
-
-2005-10-14  Kenichi Handa  <handa@m17n.org>
-
-       * search.c (search_buffer): Give up BM search on case-fold-search
-       if one of a target character has a case-equivalence of different
-       charset even if that target charcter is an ASCII.
-
-       * casefiddle.c (casify_object): Fix for the case that case
-       conversion change the byte length.
-
-2005-10-14  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise.
-       (handle_one_xevent): Only clear help_echo_string; restore it if
-       note_mouse_movement didn't record any mouse movement.
-
-       * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use.
-       (remember_mouse_glyph): Clear RECT if mouse is over an image glyph.
-
-       * keyboard.c (make_lispy_position): Adjust wx for left margin if
-       ON_TEXT.
-       (Fposn_at_x_y): Fix calculation of x coordinate.
-       (Fposn_at_point): Return nil if point is hscrolled out of view.
-
-2005-10-13  Andreas Schwab  <schwab@suse.de>
-
-       * sysdep.c (request_sigio, unrequest_sigio): Do nothing in
-       non-interactive mode.
-
-2005-10-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change.
-
-2005-10-12  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down.
-
-2005-10-12  Romain Francoise  <romain@orebokech.com>
-
-       * buffer.c (init_buffer): Rename `rc' to `len' for clarity.
-
-2005-10-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to
-       get end of text rows.  Obtain header-line/mode-line rows directly.
-
-       * xterm.c, w32term.c, macterm.c (note_mouse_movement):
-       Restore help_echo_string if mouse is moved inside last_mouse_glyph.
-
-2005-10-12  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (remember_mouse_glyph): New generic version based on
-       glyph_rect and remember_mouse_glyph from xterm.c enhanced to
-       properly handle all different window areas.
-
-       * dispextern.h (remember_mouse_glyph): Add prototype.
-
-       * xterm.c (glyph_rect, remember_mouse_glyph): Remove X versions.
-       (note_mouse_movement, XTmouse_position): Use generic
-       remember_mouse_glyph, add last_mouse_glyph arg.
-
-       * w32term.c (note_mouse_movement): Fix last_mouse_glyph check.
-       (glyph_rect, remember_mouse_glyph): Remove w32 specific versions.
-       (note_mouse_movement, w32_mouse_position): Use generic
-       remember_mouse_glyph, add last_mouse_glyph arg.
-
-       * macterm.c (note_mouse_movement): Add call to remember_mouse_glyph.
-       (glyph_rect, remember_mouse_glyph): Remove mac specific versions.
-       (XTmouse_position): Adapt to use generic remember_mouse_glyph
-       instead of pixel_to_glyph_coords.
-
-       * window.c (coordinates_in_window): Fix x position for ON_RIGHT_MARGIN.
-       Fix x position for ON_TEXT when left margin width > 0.
-
-2005-10-11  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (coordinates_in_window): Fix y position for ON_SCROLL_BAR.
-
-       * keyboard.c (make_lispy_position): Fix buffer calculations for
-       mouse click or movement in right fringe and the margins.
-
-2005-10-11  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image.c (fn_jpeg_stdio_src): Don't define it.
-       (init_jpeg_functions): Don't initialize `fn_jpeg_stdio_src'.
-       (our_common_init_source): Rename from `our_init_source'.
-       (our_common_term_source): Rename from `our_term_source'.
-       (our_memory_fill_input_buffer): Rename from
-       `our_fill_input_buffer'.
-       (our_memory_skip_input_data): Rename from `our_skip_input_data'.
-       (jpeg_memory_src): Use the new names.
-       (struct jpeg_stdio_mgr): New struct.
-       (JPEG_STDIO_BUFFER_SIZE): New constant.
-       (our_stdio_fill_input_buffer, our_stdio_skip_input_data)
-       (jpeg_file_src): New functions.
-       (jpeg_load): Use `jpeg_file_src' instead of `fn_jpeg_stdio_src'.
-
-2005-10-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (PER_CHAR_METRIC): Remove unused macro.
-       (fm_font_family_alist): New variable.
-       (syms_of_macterm): Initialize and staticpro it.
-       (decode_mac_font_name): Replace '-' in family name with '_' if it
-       occurs just once.  Lower family name.
-       (parse_x_font_name): Rename from x_font_name_to_mac_font_name.
-       All uses changed.  Remove argument MF and code conversion for it.
-       Add argument SIZE.  Rename argument MF_DECODED to FAMILY, and CS
-       to CHARSET.  Parse font size.  Lower family name.  Return integer
-       value for status of parsing.
-       (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name.
-       Don't use Fdowncase because family name is already lowered by
-       decode_mac_font_name.
-       (init_font_name_table): Always call decode_mac_font_name.
-       Add pair of family name and its reference to fm_font_family_alist.
-       (mac_clear_font_name_table): Clear fm_font_family_alist.
-       (XLoadQueryFont): Move font size parsing part to parse_x_font_name.
-       Lookup fm_font_family_alist to get font family reference.
-       (XLoadQueryFont) [USE_ATSUI]: Don't use Fdowncase because family
-       name is already lowered by parse_x_font_name.
-
-2005-10-11  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (glyph_rect): Return 0 if position is outside text area.
-
-       * keyboard.c (make_lispy_position): Fix buffer position calculation for
-       mouse click or movement in fringe.
-
-2005-10-10  Jason Rumney  <jasonr@gnu.org>
-
-       * xterm.c (remember_mouse_glyph): New function.
-       (note_mouse_movement): Use it to remember the current glyph if changed.
-       (XTmouse_position): Fix calculation of fake glyph under mouse.
-       Move code to calculate glyph under mouse into remember_mouse_glyph.
-
-2005-10-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * emacs.c (USAGE3, standard_args): -nb => -nbi.
-
-2005-10-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * frame.c (Fredirect_frame_focus): Fix typos in docstring.
-       (next_frame, prev_frame, set_term_frame_name): Make static.
-
-       * window.c (Fwindow_tree): Fix spelling.
-
-2005-10-09  Romain Francoise  <romain@orebokech.com>
-
-       * window.c (Fwindow_end): Don't try to redisplay if non-interactive.
-
-2005-10-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * emacs.c (standard_args): Remove options -i, -itype, --icon-type.
-       Add options -nb, --no-bitmap-icon.
-
-       * xfns.c (Fx_create_frame): Make bitmapIcon have default on.
-
-2005-10-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macgui.h (MAX_CLIP_RECTS): New define.
-       (struct _XGC): New member clip_region.
-       (struct _XGC) [MAC_OSX && USE_ATSUI]: New members n_clip_rects and
-       clip_rects.
-
-       * macterm.c (GC_CLIP_REGION): New macro.
-       (saved_port_clip_region): New variable.
-       (mac_begin_clip, mac_end_clip): New functions.
-       (XDrawLine, mac_erase_rectangle, mac_draw_bitmap, XFillRectangle)
-       (mac_draw_rectangle, mac_draw_string_common, mac_copy_area)
-       (mac_copy_area_with_mask, mac_scroll_area): Use them.
-       (mac_set_clip_rectangle, mac_reset_clipping): Remove functions.
-       [USE_ATSUI] (atsu_get_text_layout_with_text_ptr)
-       [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Specify kATSLineFractDisable.
-       (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Clip to clipping
-       rectangles stored in gc.
-       (XFreeGC): Dispose of clipping region.
-       (mac_set_clip_rectangles, mac_reset_clip_rectangles): New functions.
-       (x_draw_fringe_bitmap, x_set_glyph_string_clipping)
-       (x_draw_relief_rect, x_draw_box_rect, x_draw_stretch_glyph_string)
-       (x_draw_glyph_string, x_clip_to_row, x_draw_hollow_cursor)
-       (x_draw_bar_cursor): Use them.
-       (x_set_glyph_string_clipping): Use get_glyph_string_clip_rects to
-       get multiple clipping rectangles.
-
-       * macterm.h (mac_term_init): Add types to extern.
-       (struct mac_output): Remove members mWP and pending_menu_activation.
-       Put members scroll_bar_foreground_pixel and
-       scroll_bar_background_pixel in #if 0.
-       (FRAME_MAC_WINDOW, FRAME_X_WINDOW): Use window_desc.
-
-       * xfaces.c (x_create_gc, x_free_gc) [MAC_OS]: Add BLOCK_INPUT.
-       Add debugging code.
-
-2005-10-08  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (window_tree, Fwindow_tree): Rename fns added 2005-10-04.
-
-2005-10-07  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (redraw_overlapped_rows, redraw_overlapping_rows)
-       [!HAVE_WINDOW_SYSTEM]: Don't declare them...
-       (update_window) [!HAVE_WINDOW_SYSTEM]: ...and don't call them.
-
-2005-10-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dispextern.h (struct glyph_string): Rename member for_overlaps_p
-       to for_overlaps.  Now occupy 3 bits.
-       (OVERLAPS_PRED, OVERLAPS_SUCC, OVERLAPS_BOTH)
-       (OVERLAPS_ERASED_CURSOR): New defines.
-       (struct redisplay_interface): Add new OVERLAPS arg to member
-       fix_overlapping_area.
-       (x_fix_overlapping_area): Add new OVERLAPS arg.
-       (get_glyph_string_clip_rects): Add extern.
-
-       * dispnew.c (redraw_overlapping_rows):
-       Call rif->fix_overlapping_area with new OVERLAPS arg as redrawn part.
-
-       * xdisp.c: Rename member for_overlaps_p in struct glyph_string to
-       for_overlaps.
-       (get_glyph_string_clip_rects): New function created from
-       get_glyph_string_clip_rect.  Set clipping rectangles according to the
-       value of for_overlaps.  Enable to store multiple clipping rectangles.
-       (get_glyph_string_clip_rect): Use get_glyph_string_clip_rects.
-       (fill_composite_glyph_string, fill_glyph_string, draw_glyphs):
-       Rename argument OVERLAPS_P to OVERLAPS.  All uses in macros changed.
-       (x_fix_overlapping_area): Add OVERLAPS arg.  Pass it to draw_glyphs.
-       (draw_phys_cursor_glyph): Set width of erased cursor to use it for
-       calculating clipping rectangles later.  Call x_fix_overlapping_area
-       with new OVERLAPS arg to draw only erased cursor area.
-       (expose_overlaps): Call x_fix_overlapping_area with new OVERLAPS arg
-       to draw overlaps in both preceding and succeeding rows.
-
-       * xterm.c, w32term.c, macterm.c: Rename member for_overlaps_p in
-       struct glyph_string to for_overlaps.
-
-2005-10-04  Richard M. Stallman  <rms@gnu.org>
-
-       * alloc.c (refill_memory_reserve): Conditionalize the body,
-       not the function's existence.
-
-2005-10-04  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (window_split_tree): New function.
-       (Fwindow_split_tree): New defun.
-       (syms_of_window): Defsubr it.
-
-2005-10-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_invert_rectangle): New function.
-       (XTflash): Use it.
-
-2005-10-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * regex.h (re_char): Don't expose it in the interface.
-       (re_set_whitespace_regexp): Adjust the arg's type to not use it.
-
-       * regex.c (re_char): Move it back here.
-       (re_set_whitespace_regexp): Change the arg's type to not use it.
-
-       * keyboard.c (make_lispy_event): If point has moved between down and up
-       event, make it a drag, not a click, to mirror what
-       mouse-drag-region expects.
-
-2005-10-02  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * lisp.h (fatal): Undo previous change.
-       * term.c (fatal): Undo previous change.
-
-2005-10-01  Richard M. Stallman  <rms@gnu.org>
-
-       * xfaces.c (face_color_gray_p): Colors close to black count as gray.
-
-2005-10-01  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (try_window): Skip scroll-margin check if ZV is visible.
-
-2005-10-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * keyboard.c (init_keyboard) [MAC_OSX]: Don't install SIGINT handler.
-
-       * macfns.c (start_hourglass): Apply 2005-05-07 change for xfns.c.
-       (x_create_tip_frame) [GLYPH_DEBUG]: Uncomment debugging code.
-       (Fx_create_frame, x_create_tip_frame) [USE_ATSUI]:
-       Try ATSUI-compatible 12pt Monaco font first.
-
-       * macgui.h (struct _XCharStruct): New member valid_p.
-       (STORE_XCHARSTRUCT): Set valid_p.
-       (struct MacFontStruct) [USE_ATSUI]: New member mac_style.
-
-       * macterm.c (mac_draw_string_common, x_per_char_metric)
-       (mac_compute_glyph_string_overhangs, init_font_name_table)
-       (XLoadQueryFont, mac_unload_font) [USE_ATSUI]: Add ATSUI support.
-       (atsu_get_text_layout_with_text_ptr) [USE_ATSUI]: New function.
-       (x_draw_glyph_string_background)
-       (x_draw_glyph_string_foreground) [MAC_OS8 && USE_ATSUI]: Don't use
-       XDrawImageString.  Always draw background and foreground separately.
-       (x_draw_glyph_string_foreground) [USE_ATSUI]: Don't use 8-bit
-       functions for one-byte chars when using ATSUI-compatible fonts.
-       (atsu_font_id_hash) [USE_ATSUI]: New variable.
-       (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it.
-       (XLoadQueryFont): Set min_byte1, max_byte1, min_char_or_byte2, and
-       max_char_or_byte2 more in detail.
-       (quit_char_comp, mac_check_for_quit_char) [MAC_OSX]: Remove functions.
-
-2005-09-30  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct type.
-       * xterm.c (handle_one_xevent, handle_one_xevent): Likewise.
-
-       * unexelf.c (fatal): Fix prototype.
-
-       * term.c (fatal): Implement using varargs.
-
-       * regex.c (re_char): Move typedef ...
-       * regex.h (re_char): ... here.
-       (re_iswctype, re_wctype, re_set_whitespace_regexp): New prototypes.
-
-       * emacs.c (malloc_set_state): Fix return type.
-       (endif): Fix type.
-
-       * lisp.h (fatal): Add argument types.
-
-       * dispextern.h (fatal): Delete prototype.
-
-       * systime.h (make_time): Prototype moved from ...
-       * editfns.c (make_time): ... here.
-
-       * editfns.c: Move systime.h include after lisp.h.
-       * dired.c:
-       * xsmfns.c:
-       * process.c: Likewise.
-
-       * alloc.c (old_malloc_hook, old_realloc_hook, old_realloc_hook):
-       Add parameter types.
-       (__malloc_hook, __realloc_hook, __free_hook): Fix prototypes.
-       (emacs_blocked_free): Change definition to match __free_hook.
-       (emacs_blocked_malloc): Change definition to match __malloc_hook.
-       (emacs_blocked_realloc): Change definition to match __realloc_hook.
-
-2005-09-30  Romain Francoise  <romain@orebokech.com>
-
-       * minibuf.c (Fread_buffer): Follow convention for reading from the
-       minibuffer with a default value.  Doc fix.
-
-2005-09-29  Juri Linkov  <juri@jurta.org>
-
-       * editfns.c (Fmessage, Fmessage_box, Fmessage_or_box):
-       Rename argument name `string' to `format-string'.
-       (Fformat): Doc fix.
-
-2005-09-28  Kim F. Storm  <storm@cua.dk>
-
-       * image.c (gif_load): Fix size of allocated image buffer
-       for images where a sub-image may be larger than the image's
-       total height/width specifications.
-
-2005-09-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macgui.h (struct _XCharStruct): Each member now takes short value.
-
-2005-09-27  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * xfaces.c (lookup_derived_face): Add parameter type.
-
-       * xdisp.c (cursor_row_fully_visible_p): Add parameter type.
-
-       * marker.c (verify_bytepos): Add parameter type.
-
-       * process.c (get_operating_system_release): Move prototype ...
-
-       * systime.h (get_operating_system_release): ... here.
-
-       * xterm.c (handle_one_xevent): Refer to union field to match the
-       type required by the function definition.
-       (set_vertical_scroll_bar): Move prototype ...
-
-       * xterm.h: ... here.
-
-       * fns.c (internal_equal, seed_random): Fix prototypes.
-       (internal_equal): Add missing parameter.
-
-2005-09-25  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (update_menu_bindings): Variable deleted.
-       (syms_of_keyboard): Don't defvar it.
-       (parse_menu_item): Don't test it.
-
-2005-09-23  Richard M. Stallman  <rms@gnu.org>
-
-       * editfns.c (Fformat): Explicitly test for end of format string
-       and don't use `index'.
-
-2005-09-23  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME):
-       Define BROKEN_GET_CURRENT_DIR_NAME.
-
-       * sysdep.c (get_current_dir_name): Also define if
-       BROKEN_GET_CURRENT_DIR_NAME.
-
-       * m/ibmrs6000.h: Test for USG5, not USG5_4.
-
-2005-09-22  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (message_dolog): Add warning about GC and Lisp strings.
-       (message2): Fix commentary.  Ok to use alloca'ed memory.
-       Still not ok to use Lisp string data (because of GC).
-       (set_message): Add comment why GC cannot happen.
-
-2005-09-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (xlfdpat_block_match_1): Fix assertion.
-       (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't add style
-       variants for a scalable font multiple times.
-
-2005-09-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * process.c (create_process) [RTU || UNIPLUS || DONT_REOPEN_PTY]:
-       Setup slave tty options before forking.
-
-2005-09-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_set_geometry): Do a gtk_window_move if program
-       positions have been set for the frame (as is done for frames in
-       special-display-buffer-names).
-
-2005-09-19  Kim F. Storm  <storm@cua.dk>
-
-       * editfns.c (Fformat): Don't scan past end of format string that
-       ends in %.  Reported by Johan Bockg\e,Ae\e(Brd.
-
-2005-09-18  Andreas Schwab  <schwab@suse.de>
-
-       * window.h (struct window): Remove height_fixed_p, no longer set.
-
-       * window.c (make_window): Don't initialize height_fixed_p.
-       (window_fixed_size_p): Don't use it.
-
-2005-09-18  John Paul Wallington  <jpw@pobox.com>
-
-       * data.c (Fdefalias): Signal an error if SYMBOL is not a symbol.
-
-2005-09-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * Makefile.in (SOME_MACHINE_OBJECTS): Undo previous change.
-
-       * macfns.c (image_cache_refcount, dpyinfo_refcount) [GLYPH_DEBUG]:
-       New variables.
-       [TARGET_API_MAC_CARBON] (Fx_file_dialog): Don't allow multiple
-       file selection.
-
-       * sysdep.c [MAC_OS8]: Don't include stdlib.h.  Include sys/param.h.
-
-2005-09-17  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (XMENU_OBJ) [!HAVE_CARBON]: Reinstate variable.
-       (obj): Use XMENU_OBJ, not a literal xmenu.o.
-
-2005-09-16  Romain Francoise  <romain@orebokech.com>
-
-       * fileio.c (syms_of_fileio) <write-region-inhibit-fsync>: Doc fix.
-
-2005-09-15  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (overlay_arrow_at_row): Add HAVE_WINDOW_SYSTEM conditional.
-       (display_mode_element): Instead of `lisp_string' and `this',
-       record `offset' and increment that.
-       `last_offset' replaces `last'.
-
-       * Makefile.in (XMENU_OBJ): Variable deleted.
-       (obj): Use xmenu.o unconditionally.
-       (SOME_MACHINE_OBJECTS): Delete xmenu.o.
-
-       * emacs.c (main): Don't conditionalize syms_of_xmenu on HAVE_XMENU.
-
-2005-09-15  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (move_it_vertically): Don't try to fetch byte BEGV-1.
-       (reseat_at_next_visible_line_start): Likewise (in xassert).
-
-2005-09-14  Romain Francoise  <romain@orebokech.com>
-
-       * fileio.c (write_region_inhibit_fsync): New variable.
-       (Fwrite_region): Use it to skip call to fsync.
-       (syms_of_fileio): Initialize it.
-
-2005-09-14  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (code_convert_region_unwind): Argument format changed.
-       (run_pre_post_conversion_on_str): If pre-write-conversion function
-       changed the current buffer, delete the new buffer.
-       (run_pre_write_conversin_on_c_str): Likewise.
-
-       * fileio.c (Fexpand_file_name): Check multibyteness of
-       default_directory.
-
-2005-09-13  Kenichi Handa  <handa@m17n.org>
-
-       * composite.c (compose_chars_in_text): Delete it.
-
-       * composite.h (compose_chars_in_text): Delete extern.
-
-2005-09-13  Kim F. Storm  <storm@cua.dk>
-
-       * print.c (print_error_message): Fix last change.
-
-2005-09-12  Kim F. Storm  <storm@cua.dk>
-
-       * composite.c (compose_chars_in_text): Fix setup of `pend'.
-       Unconditionally reload `ptr' and `pend' after eval.
-
-       * xdisp.c (message3): Pass copy of lisp string to message_dolog.
-
-       * print.c (print_error_message): Pass copy of caller name to
-       message_dolog.
-
-       * fileio.c (auto_save_error): Pass copy of lisp string to message2.
-
-2005-09-12  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (display_mode_element): Be sure to make variables THIS
-       and LISP_STRING point into a string data of ELT.
-
-2005-09-12  Kim F. Storm  <storm@cua.dk>
-
-       * editfns.c (Ftranslate_region_internal): Reload `tt' after
-       signal_after_change that may have GC'ed.
-       (Fmessage, Fmessage_box, Fmessage_or_box): Doc fix.
-
-       * keymap.c (Fdescribe_buffer_bindings): Reload `translate'
-       after insert while runs signal_after_change.
-
-       * minibuf.c (Fminibuffer_complete_word): Move `completion_string'
-       declaration to where it is used.
-
-       * w32.c (check_windows_init_file): Fix allocation of error buffer.
-
-       * xfns.c (x_encode_text): Declare static.  Add FREEP arg.
-       (x_set_name_internal): Call x_encode_text with new FREEP arg to
-       know if xfree is needed instead of guessing.
-
-       * xterm.h (x_encode_text): Remove prototype.
-
-2005-09-11  Chris Prince  <cprince@gmail.com>  (tiny change)
-
-       * w32term.c (x_bitmap_icon): Load small icons too.
-
-2005-09-10  Romain Francoise  <romain@orebokech.com>
-
-       * buffer.c (init_buffer): Grow buffer to add directory separator
-       and terminal zero.  Fix typos.
-
-2005-09-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * buffer.c (init_buffer): Fix error message for failed call to
-       get_current_dir_name.
-       (get_current_dir_name): Remove prototype.
-
-       * xsmfns.c (get_current_dir_name): Remove prototype.
-
-       * lisp.h (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]:
-       Add prototype.
-
-       * sysdep.c [WINDOWSNT]: Add prototype for getwd.
-       Don't #undef NULL after including blockinput.h.
-
-       * config.in: Regenerated.
-
-2005-09-10  Giuseppe Scrivano  <gscrivano@gmail.com>
-
-       Remove the MAXPATHLEN limitations:
-
-       * sysdep.c (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]:
-       New function.
-
-       * buffer.c (init_buffer): Use it.
-
-       * xsmfns.c (smc_save_yourself_CB): Ditto.
-
-2005-09-09  Kim F. Storm  <storm@cua.dk>
-
-       * doc.c (Fsubstitute_command_keys): Lookup key binding for
-       commands that are remapped from some other command.
-
-       * xdisp.c (try_window_reusing_current_matrix): Clear mode_line_p
-       flag in disabled rows below the window.
-
-       * frame.h (struct frame): New member updated_p.
-
-       * xdisp.c (redisplay_internal): Mark updated frames in new updated_p
-       member.  Remove local `updated' array and associated variables.
-
-2005-09-07  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (handle_display_prop): Respect overlay window property.
-
-       * xdisp.c (try_window): Remove superfluous cursor_height calculation.
-       Fixes crash reported by YAMAMOTO Mitsuharu.
-
-2005-09-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (struct xlfdpat_block, struct xlfdpat): New structs.
-       (xlfdpat_destroy, xlfdpat_create, xlfdpat_exact_p)
-       (xlfdpat_block_match_1, xlfdpat_match): New functions.
-       (xlfdpat_block_match): New macro.
-       (mac_to_x_fontname): Don't use tolower for non-ASCII characters.
-       (x_font_name_to_mac_font_name): Set coding.dst_multibyte to 0.
-       (add_font_name_table_entry): Increase font_name_table_size more
-       rapidly.
-       (mac_c_string_match): Remove function.
-       (mac_do_list_fonts): Use XLFD pattern match instead of regular
-       expression match.
-
-       * xfaces.c (xstrlwr): Don't use tolower for non-ASCII characters.
-
-2005-09-03  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (redisplay_internal): Make UPDATED as long as needed.
-       (move_it_in_display_line_to): Stop after last char on line even
-       on a windowing terminal, if that's the specified stop position.
-
-       * fns.c (Fsort): Doc fix.
-
-       * editfns.c (Fpropertize): Don't insist that properties be symbols.
-
-2005-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * dired.c (directory_files_internal_unwind, directory_files_internal)
-       (file_name_completion): Use a Save_Value object rather than a cons of
-       two 16bit ints to store the DIR*.
-       (directory_files_internal, file_name_completion): Handle both EINTR and
-       EAGAIN consistently after `readdir'.
-
-2005-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * intervals.c (update_interval): Add position info in error.
-
-       * dispnew.c (window_to_frame_hpos, update_window):
-       Avoid gcc warning about unused variable `f'.
-
-2005-08-31  Jason Rumney  <jasonr@gnu.org>
-
-       * w32menu.c (add_menu_item): If unicode_append_menu returns an
-       error, revert to using AppendMenu.
-
-2005-08-31  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c (PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument.
-       All uses changed.
-       [MAC_OS] (XPutPixel, XGetPixel): Add efficient versions for common
-       cases.
-       (x_create_x_image_and_pixmap) [MAC_OS]: Don't call x_destroy_x_image.
-       [MAC_OS] (find_image_fsspec) [!MAC_OSX]: Don't use FSRef.
-       Use posix_pathname_to_fsspec.
-       [MAC_OS] (xpm_load_image): Fill in background_transparent field
-       while we have mask.
-
-       * macgui.h [!TARGET_API_MAC_CARBON] (GetPixDepth): New define.
-
-       * macterm.h (PIX_MASK_DRAW, PIX_MASK_RETAIN): Move defines to image.c.
-
-2005-08-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (update_syntax_table): Properly reproduce the special +1
-       setting of e_property at the end of the buffer when bumping into the
-       INTERVALS_AT_ONCE limit.
-
-2005-08-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs.c (USAGE1): Fix the description of the -Q option.
-
-2005-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xdisp.c (pos_visible_p): Yet another int/Lisp_Object mixup (YAILOM).
-
-2005-08-26  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (resize_mini_window): Fix 2005-08-20 change.
-       Don't move PT to new window start.
-
-2005-08-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * keyboard.c (kbd_buffer_get_event) [MAC_OS]: Make events for
-       ICONIFY/DEICONIFY_EVENT.
-
-       * macterm.c (mac_copy_area, mac_copy_area_with_mask):
-       Restore background color.
-       (mac_handle_visibility_change): New function.
-       (x_make_frame_invisible, x_iconify_frame)
-       (XTread_socket) [!USE_CARBON_EVENTS]: Use it.
-       [USE_CARBON_EVENTS] (mac_handle_window_event)
-       (install_window_handler): Handle visibility change events.
-       (x_make_frame_visible): Don't reposition window if it is iconified
-       or asked for visible before.  Select and uncollapse window when it
-       is made visible.
-       (x_make_frame_invisible): Don't reset x_highlight_frame.
-       (x_iconify_frame): Likewise.  Make invisible frame visible before
-       it is iconified.
-       (read_socket_inev): Move variable outside #if USE_CARBON_EVENTS.
-       (do_window_update): Don't change visibility of invisible frame.
-
-2005-08-22  Juri Linkov  <juri@jurta.org>
-
-       * term.c (turn_on_face): Check for TS_set_foreground and
-       TS_set_background depending on standout_mode.  Simplify.
-
-2005-08-21  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (update_window_fringes): Only put TOP and BOTTOM
-       bitmaps on fully visible rows.
-
-       * fringe.c (update_window_fringes): Replace FORCE_P arg with
-       KEEP_CURRENT_P arg; if non-zero, don't update current row fringes,
-       and return 0.
-
-       * xdisp.c (redisplay_window): Call update_window_fringes with
-       KEEP_CURRENT_P non-0 if we are going to refresh fringes later.
-
-2005-08-20  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (display_echo_area_1): Get display start pos from w->start.
-       (resize_mini_window): Set w->start, and PT, so as to display the tail
-       end of the buffer, if it doesn't all fit.
-
-2005-08-18  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (calc_pixel_width_or_height): Use actual display
-       resolution when available instead of Vdisplay_pixels_per_inch.
-
-2005-08-17  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (pos_visible_p): Adjust X value if window is hscrolled.
-
-       * dispnew.c (buffer_posn_from_coords): Check that target row is
-       within matrix.
-
-2005-08-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_wm_set_icon_pixmap): Move GTK specific code to
-       xg_set_frame_icon and call it.
-
-       * gtkutil.c (xg_set_frame_icon): New function.
-
-       * gtkutil.h (xg_set_frame_icon): Declare it.
-
-2005-08-16  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (increment_row_positions): Skip non-enabled rows.
-
-       * window.c (SAVED_WINDOW_VECTOR_SIZE): Remove dangerous define.
-       (Fcurrent_window_configuration): Use VECSIZE macro instead.
-
-2005-08-15  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (message3_nolog): Clear echo_message_buffer.
-
-2005-08-15  Kim F. Storm  <storm@cua.dk>
-
-       * lisp.h (QUIT) [!SYNC_INPUT]: Throw t to Vthrow_on_input.
-
-       * process.c (deactivate_process, status_notify, read_process_output)
-       (update_status, status_convert, decode_status, allocate_pty)
-       (make_process, remove_process, list_processes_1)
-       (create_process_1, unwind_request_sigio, read_process_output)
-       (send_process, keyboard_bit_set): Declare static.
-       (Fdelete_process): Simplify.  Pass process to status_notify, so we
-       don't try to read output from it.
-       (status_notify): New arg deleting_process--don't try to read
-       output from that process.
-
-       * lisp.h (deactivate_process, status_notify, read_process_output):
-       Remove prototypes.
-
-2005-08-14  Richard M. Stallman  <rms@gnu.org>
-
-       * image.c (syms_of_image): Init Qxbm, Qpbm before calling
-       define_image_type.
-
-2005-08-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_pixbuf_from_pix_and_mask): New function.
-       (xg_get_image_for_pixmap): Move some code to
-       xg_get_pixbuf_from_pix_and_mask, and call it.
-
-       * gtkutil.h (xg_get_pixbuf_from_pix_and_mask): Declare.
-
-       * xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
-       to get an GTK icon and set it with GTK functions to avoid having GTK
-       override an icon set with just X functions.
-
-2005-08-11  Richard M. Stallman  <rms@gnu.org>
-
-       * image.c (syms_of_image): Init image_types here, and call
-       define_image_type.
-       (init_image): Not here.
-
-2005-08-09  Richard M. Stallman  <rms@gnu.org>
-
-       * bytecode.c (BYTE_CODE_QUIT): Throw t to Vthrow_on_input.
-
-       * lisp.h (QUIT): Throw t to Vthrow_on_input.
-
-2005-08-09  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * floatfns.c (Fexpt): Use floats for negative exponent.
-
-2005-08-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_modify_menubar_widgets): Remove semicolon that
-       should not be there, causing menu display errors with GTK 2.6.9.
-
-2005-08-07  Richard M. Stallman  <rms@gnu.org>
-
-       * floatfns.c (Fexpt): Undo previous change.
-
-       * dispnew.c (Fframe_or_buffer_changed_p): Take an arg
-       so it can be used with various state vectors.
-
-       * emacs.c (endif): Convert -script into -scriptload.
-       (standard_args): Add -scriptload.  Allow -basic-display with one dash.
-
-       * fns.c (syms_of_fns): Add `emacs' to features.
-
-       * term.c (set_terminal_modes): If no TS_termcap_modes string,
-       output newlines to scroll the old screen contents off the screen.
-
-2005-08-06  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * floatfns.c (Fexpt): Use floats for negative exponent.
-       Reported by D Goel.
-
-2005-08-02  Richard M. Stallman  <rms@gnu.org>
-
-       * frame.c (Fframe_char_width): Doc fix.
-
-2005-07-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * xdisp.c (syms_of_xdisp) <redisplay-end-trigger-functions>:
-       Defvar it.
-
-2005-07-28  Juanma Barranquero  <lekktu@gmail.com>
-
-       * w32fns.c (my_set_window_pos, my_show_window): Don't declare.
-       (my_create_window, my_create_tip_window): Make static.
-
-       * w32term.c (my_show_window, my_set_window_pos, my_set_focus)
-       (my_set_foreground_window, my_destroy_window): Make static.
-
-2005-07-26  Paul Eggert  <eggert@cs.ucla.edu>
-
-       Merge gnulib getopt implementation into Emacs.
-
-       * s/cygwin.h (C_SWITCH_SYSTEM): Remove, since gettext.h is
-       now part of lib-src.
-
-2005-07-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * eval.c (Fdefvar): Allow (defvar enable-multibyte-characters).
-
-2005-07-25  Jason Rumney  <jasonr@gnu.org>
-
-       * w32menu.c (w32_menu_display_help): Suppress tooltip when
-       navigating menus with the keyboard.
-
-2005-07-23  Richard M. Stallman  <rms@gnu.org>
-
-       * insdel.c (syms_of_insdel): staticpro combine_after_change_buffer.
-
-       * bytecode.c (MAYBE_GC): Test gc_cons_threshold and
-       gc_relative_threshold, one by one.
-
-       * keyboard.c (read_char): Test gc_cons_threshold.
-       (syms_of_keyboard): staticpro Qecho_area_clear_hook.
-
-       * eval.c (Feval, Ffuncall): Test gc_cons_threshold and
-       gc_relative_threshold, one by one.
-
-       * alloc.c (gc_cons_threshold): Not static.
-       (gc_cons_combined_threshold): Var deleted.
-       (gc_relative_threshold): New variable.
-       (Fgarbage_collect, init_alloc_once): Compute gc_relative_threshold
-       instead of gc_cons_combined_threshold.
-
-       * lisp.h (gc_cons_threshold, gc_relative_threshold): Declare.
-       (gc_cons_combined_threshold): Declaration deleted.
-
-2005-07-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c: Don't include stdlib.h or string.h.
-       (Fdo_applescript, Fmac_file_name_to_posix)
-       (Fmac_file_name_to_posix): Doc fixes.
-       [TARGET_API_MAC_CARBON] (Fmac_get_preference)
-       (Fmac_code_convert_string): Likewise.
-       [MAC_OSX] (init_mac_osx_environment): Fall back on terminal mode
-       if the executable is not contained in a bundle.
-
-       * macfns.c: Don't include stdlib.h or string.h.  Include atimer.h.
-       (gray_width, gray_height): Remove defines.
-       (gray_bits, gray_bitmap_width, gray_bitmap_height)
-       (gray_bitmap_bits): Remove variables.
-       (lispy_function_keys): Remove extern.
-       (free_frame_menubar): Add extern.
-       (x_window_to_frame): Remove function.
-       (unwind_create_tip_frame): Add declaration.
-       (x_set_name_internal): New function.
-       (x_set_name, x_set_title): Use it.
-       (Fx_create_frame, Fx_display_grayscale_p, Fx_display_pixel_width)
-       (Fx_display_pixel_height, Fx_display_planes)
-       (Fx_display_color_cells, Fx_server_max_request_size)
-       (Fx_server_vendor, Fx_server_version, Fx_display_screens)
-       (Fx_display_mm_height, Fx_display_mm_width)
-       (Fx_display_backing_store, Fx_display_visual_class)
-       (Fx_display_save_under, Fx_synchronize, Fx_show_tip): Doc fixes.
-
-       * macmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes.
-
-       * macselect.c (Fx_own_selection_internal): Follow error conventions.
-       (Fx_get_selection_internal, Fx_selection_owner_p)
-       (Fx_selection_exists_p): Doc fixes.
-       (syms_of_macselect) <selection-converter-alist>: Likewise.
-
-2005-07-21  Juanma Barranquero  <lekktu@gmail.com>
-
-       * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
-
-       * ccl.c (Fregister_ccl_program): Fix typos in docstring.
-       (Fccl_execute_on_string): Likewise; add usage info.
-
-       * composite.c (Fcompose_region_internal)
-       (Fcompose_string_internal):
-       Improve argument/docstring consistency.
-
-       * minibuf.c (Fminibuffer_prompt_end, Feval_minibuffer):
-       Fix typos in docstrings.
-
-       * textprop.c (Fnext_char_property_change)
-       (Fprevious_char_property_change): Doc fixes.
-
-       * window.c (Fset_window_margins, Fset_window_fringes):
-       Improve argument/docstring consistency.
-
-       * xfaces.c (Finternal_lisp_face_p): Doc fix.
-
-2005-07-21  Andreas Schwab  <schwab@suse.de>
-
-       * eval.c (restore_stack_limits): Return a value.
-
-2005-07-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * eval.c (Fdefvar): Doc fix.
-
-2005-07-20  Kim F. Storm  <storm@cua.dk>
-
-       * fileio.c (Fdo_auto_save, do_auto_save_unwind):
-       Use make_save_value to unwind protect stream.
-
-       * lread.c (Fload, load_unwind):
-       Use make_save_value to unwind protect stream.
-
-2005-07-19  Juanma Barranquero  <lekktu@gmail.com>
-
-       * eval.c (Fprog2, Fcalled_interactively_p),
-       (syms_of_eval) <debug-on-quit>: Doc fixes.
-       (syms_of_eval) <max-specpdl-size>:
-       (Finteractive_p): Fix typos in docstrings.
-
-2005-07-19  Kim F. Storm  <storm@cua.dk>
-
-       * w32fns.c (Vx_hand_shape): Variable removed.
-       (syms_of_w32fns): Intern and staticpro Qw32_charset_default.
-
-2005-07-19  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (Fstring_as_multibyte): Escape backslashes in the docstring.
-
-2005-07-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * buffer.h (Fgenerate_new_buffer_name): Declare (for use in coding.c).
-
-2005-07-18  Kim F. Storm  <storm@cua.dk>
-
-       * frame.h (struct frame): New member already_hscrolled_p.
-
-       * xdisp.c (redisplay_internal): Only try to hscroll each frame once
-       to avoid redisplay looping hscrolling back and forth ad infinitum.
-
-2005-07-18  Juri Linkov  <juri@jurta.org>
-
-       * buffer.c (scroll-up-aggressively, scroll-down-aggressively):
-       * keymap.c (Fminor_mode_key_binding):
-       * macterm.c (mac-emulate-three-button-mouse):
-       Delete duplicate duplicate words.
-
-2005-07-18  Ken Raeburn  <raeburn@gnu.org>
-
-       * minibuf.c (Ftest_completion): Fix odd syntax in test.
-
-2005-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (x_set_cursor_color): Use XSetBackground and XSetForeground.
-
-       * macgui.h (struct _XGC): New struct.
-       (GC): Use it.
-       (GCForeground, GCBackground, GCFont): Use X11 mask values.
-       (XCreateGC, XParseGeometry): Move externs to macterm.h.
-
-       * macterm.c (x_bitmap_icon, x_make_frame_visible): Remove declarations.
-       (XSetFont): Add declaration.
-       (mac_set_forecolor, mac_set_backcolor, mac_set_colors):
-       Remove functions.
-       (GC_FORE_COLOR, GC_BACK_COLOR, GC_FONT, MAC_WINDOW_NORMAL_GC):
-       New defines.
-       (XDrawLine, mac_draw_line_to_pixmap, XClearWindow)
-       (mac_draw_bitmap, XCreatePixmapFromBitmapData, XFillRectangle)
-       (mac_draw_rectangle, mac_draw_string_common, mac_scroll_area):
-       Use them.
-       (mac_erase_rectangle): New function.
-       (XClearArea, x_draw_fringe_bitmap, x_clear_glyph_string_rect)
-       (x_draw_stretch_glyph_string): Use it.
-       (XChangeGC, XCreateGC, XGetGCValues, XSetForeground)
-       (XSetBackground, XSetFont): Adjust for new GC implementation.
-       (x_draw_fringe_bitmap, x_draw_box_rect): Use GC to set colors.
-       (XTset_vertical_scroll_bar): Clear area under scroll bar.
-
-       * macterm.h (struct mac_display_info): Change types of
-       scratch_cursor_gc black_relief.gc, and white_relief.gc to GC.
-       (XCreateGC, XParseGeometry): Move externs from macgui.h.
-
-       * xfaces.c [MAC_OS] (XCreateGC): Remove extern.
-
-2005-07-16  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (Fmake_overlay): Doc fix.
-
-2005-07-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32proc.c (syms_of_ntproc): staticpro Qhigh, Qlow,
-       Vw32_valid_locale_ids, and Vw32_valid_codepages.
-
-2005-07-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c [TARGET_API_MAC_CARBON] (Fmac_code_convert_string):
-       Use Fstring_as_unibyte instead of string_make_unibyte.
-
-2005-07-15  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (select_frame_for_redisplay): Use find_symbol_value.
-
-2005-07-15  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c: Fix redisplay loop in last change.
-       (IT_POS_VALID_AFTER_MOVE_P): New macro.
-       (move_it_vertically_backward, move_it_by_lines): Use it.
-
-2005-07-14  Jason Rumney  <jasonr@gnu.org>
-
-       * w32.c (init_environment): Default HOME directory to user's
-       appdata directory if possible.
-
-2005-07-14  Kim F. Storm  <storm@cua.dk>
-
-       * .gdbinit (pitx): Fix output format.  Print string charpos.
-
-       * lread.c (syms_of_lread): Initialize seen_list.
-
-       * search.c (syms_of_search): Staticpro searchbuf.whitespace_regexp.
-
-       * syntax.c (syms_of_syntax): Staticpro lisp objects in gl_state.
-       Staticpro re_match_object.
-
-2005-07-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macselect.c (get_scrap_target_type_list): Avoid NULL pointer
-       dereference.
-
-       * macterm.c (mac_window_to_frame): Remove duplicate define.
-
-2005-07-14  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (code_convert_region_unwind): ARG is changed to a cons.
-       (code_convert_region): Adjust for the above change.
-       (set_conversion_work_buffer): If the work buffer is already in
-       use, generate a new buffer and return it.  Otherwise return Qnil.
-       (run_pre_post_conversion_on_str): Adjust for the above change.
-       (run_pre_write_conversin_on_c_str): Likewise.
-
-2005-07-13  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (start_display): Don't reseat to next visible line start
-       if current start position is in a string or image.
-       (move_it_vertically_backward): Be sure to move out of strings and
-       images when moving it2 forward.
-       (move_it_by_lines): When moving forward, move to next buffer
-       position if we end up in a string or image.  When moving backward,
-       count rows moved over when moving to start of current row in case
-       row starts in middle of a string or image.  Also move further
-       backward if we end up in a string or image.
-       (try_cursor_movement): If overlay string spans multiple lines,
-       move backward to set cursor on start of an overlay string.
-       (cursor_row_p): Row is ok if cursor is at newline from string, but
-       string starts on this line (so we always position cursor at start
-       of string).
-
-       * indent.c (Fvertical_motion): If start position is on an image,
-       don't move back if we move too far (that's almost certain to happen).
-
-       * xdisp.c (cursor_row_fully_visible_p): Allow partially visible
-       row in minibuffer windows.
-       (try_window): Don't check margins in minibuffer windows.
-
-2005-07-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c: Don't include stdlib.h or composite.h.
-       (x_use_underline_position_properties, last_mouse_press_frame)
-       (x_noop_count, Qvendor_specific_keysyms): Remove unused variables.
-       (syms_of_macterm, mac_initialize): Don't initialize them.
-       (waiting_for_input, initial_argv, initial_argc)
-       (Vcommand_line_args, Vx_no_window_manager, errno, window_scroll)
-       (set_frame_menubar, path_from_vol_dir_name): Remove externs.
-       (extra_keyboard_modifiers): Fix type in extern.
-       (x_window_to_frame, x_window_to_scroll_bar): Remove declarations.
-       (x_scroll_bar_report_motion): Add argument types to declaration.
-       (mac_compute_glyph_string_overhangs): Add declaration.
-       (disable_mouse_highlight): Remove unused variable.
-       [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click)
-       (x_scroll_bar_handle_press, x_scroll_bar_handle_release)
-       (x_scroll_bar_handle_drag): Remove argument `timestamp'.
-       All callers changed.
-       [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click): Don't set
-       timestamp.
-       [USE_CARBON_EVENTS] (mac_handle_mouse_event): Likewise.
-       (x_scroll_bar_create, XTset_vertical_scroll_bar): Show scroll bar
-       only when its width is less than the height.
-       (XTredeem_scroll_bar): Sync with xterm.c.
-       (font_name_table, font_name_table_size, font_name_count):
-       Make static.
-       (drag_and_drop_file_list): Remove variable.  Previous use is now
-       local to function.
-       (do_ae_open_documents): Move DRAG_N_DROP event construction part
-       from XTread_socket.
-       (XTread_socket): Consolidate setting of event timestamp.
-       Move DRAG_N_DROP event construction part to do_ae_open_documents.
-       Support extra_keyboard_modifiers.
-
-       * xfaces.c (try_font_list) [MAC_OS]: Try font family name
-       beginning with that for ASCII.
-
-2005-07-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c (gc_cons_combined_threshold, Vgc_cons_percentage): New vars.
-       (Fgarbage_collect, init_alloc_once): Set gc_cons_combined_threshold.
-       (syms_of_alloc): Declare gc-cons-percentage.
-
-       * eval.c (Feval, Ffuncall):
-       * keyboard.c (read_char):
-       * bytecode.c (MAYBE_GC): Use gc_cons_combined_threshold.
-
-       * lisp.h (gc_cons_combined_threshold): Declare.
-
-2005-07-12  Kim F. Storm  <storm@cua.dk>
-
-       * coding.c (Qprocess_argument):
-       * coding.h (Qprocess_argument): Remove unused var.
-
-       * xselect.c (intern): Remove dup. intern and staticpro for QTIMESTAMP.
-
-2005-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c [!TARGET_API_MAC_CARBON]: Include charset.h, coding.h, and
-       Endian.h.
-       [!MAC_OSX] (fchmod, fchown): New functions.
-       (mac_get_code_from_arg): Don't accept Lisp integer as argument.
-       Use SBYTES and EndianU32_BtoN.
-       (mac_get_object_from_code): Return 4 byte string even if argument
-       is 0.  Use make_unibyte_string and EndianU32_NtoB.
-       (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator)
-       (Fmac_set_file_type): Fix documents and argument declarations.
-       Don't specify kFSCatInfoNodeFlags.  Support Mac OS Classic.
-
-2005-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (Frecenter): Yet another int/Lisp_Object mixup (YAILOM).
-
-2005-07-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfaces.c (x_update_menu_appearance): Use fontSet resource for
-       Lucid if X_I18N, font otherwise.
-
-2005-07-10  Steven Tamm  <steventamm@mac.com>
-
-       * mac.c (Fmac_get_file_type, Fmac_get_file_creator): Add.
-       (Fmac_set_file_type, Fmac_set_file_creator): Add.
-       (mac_get_object_from_code, mac_get_code_from_arg): Add.
-
-2005-07-10  Richard M. Stallman  <rms@gnu.org>
-
-       * lread.c (Qeval_buffer_list, Veval_buffer_list): New vars.
-       (syms_of_lread): Set up eval-buffer-list.
-       (Feval_buffer, Feval_region): Bind eval-buffer-list.
-
-2005-07-08  Richard M. Stallman  <rms@gnu.org>
-
-       * eval.c (Fdefvar): Allow defvaring a constant to itself quoted.
-
-2005-07-08  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (menu_bar_items): Don't GCPRO menu_bar_items_vector here.
-       (syms_of_keyboard): Initialize and staticpro menu_bar_items_vector.
-
-2005-07-07  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Frecenter): Fix last change (set iarg before use).
-
-2005-07-06  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Frecenter): When arg is inside the scroll margin,
-       move it out of the margin.
-
-2005-07-06  Jason Rumney  <jasonr@gnu.org>
-
-       * w32console.c (initialize_w32_display): Detect when the console
-       dimensions are insane, and default to 80x25 instead.
-       (w32_use_full_screen_buffer): Default to nil.
-
-2005-07-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_draw_vertical_window_border): Use foreground of
-       VERTICAL_BORDER_FACE_ID for vertical border line.
-       (mac_encode_char): Call check_ccl_update in advance.
-       (mac_to_x_fontname, x_font_name_to_mac_font_name)
-       (init_font_name_table, mac_do_list_fonts, XLoadQueryFont):
-       Don't assume that font family length is less than 32.
-       (x_compute_min_glyph_bounds): Make static.
-       (x_load_font): Never set fonts_changed_p to zero.
-
-2005-07-04  Lute Kamstra  <lute@gnu.org>
-
-       * Update FSF's address in GPL notices.
-
-2005-07-03  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (try_window): Fix previous change in how it handles
-       a partially-visible line or one only partly past the margin.
-
-       * window.c (window_scroll_pixel_based): Take account
-       of this_scroll_margin when finding point when scrolling up.
-
-2005-06-29  Ralf Angeli  <angeli@iwi.uni-sb.de>
-
-       * window.c (window_scroll_pixel_based, window_scroll_line_based):
-       Handle `scroll-preserve-screen-position' non-nil, non-t specially.
-       (syms_of_window) <scroll-preserve-screen-position>: Doc fix.
-
-2005-07-02  Juri Linkov  <juri@jurta.org>
-
-       * w32term.c (w32_draw_vertical_window_border): Use foreground of
-       VERTICAL_BORDER_FACE_ID for vertical border line.
-
-2005-07-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * fileio.c (Fcopy_file): Rearrange the code that calls fchown and
-       fchmod so that chmod doesn't get called on MSDOS before the file
-       is closed.
-
-2005-07-01  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (cleartype_active): New flag for enabling sub-pixel
-       workaround.
-       (w32_initialize): Initialize it.
-       (w32_native_per_char_metric): Allow a couple of extra pixels when
-       Cleartype is active.
-
-       * w32term.c (w32_initialize): Move check for screen reader here
-       from syms_of_w32term.
-
-2005-06-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): bzero compose_status when nbytes
-       is not zero.
-
-2005-07-01  Masatake YAMATO  <jet@gyve.org>
-
-       * emacs.c (main): Passing ADD_NO_RANDOMIZE to `personality'.
-
-2005-06-30  Juri Linkov  <juri@jurta.org>
-
-       * xdisp.c (x_draw_vertical_border): If left fringe is not present
-       decrease x coord of vertical border by 1 pixel to not occupy text
-       area of the right window.
-
-       * xterm.c (x_draw_vertical_window_border): Use foreground of
-       VERTICAL_BORDER_FACE_ID for vertical border line.
-
-       * term.c (turn_on_face): In standout mode apply specified
-       fg to bg, and specified bg to fg (this makes the logic of
-       inversion on terminal consistent with X).
-
-2005-06-29  Juanma Barranquero  <lekktu@gmail.com>
-
-       * eval.c (user_variable_p_eh): New function.
-       (Fuser_variable_p): Use it.  Clarify docstring.
-       Return t for aliases of user options, nil for alias loops.
-
-2005-06-27  Richard M. Stallman  <rms@gnu.org>
-
-       * eval.c (Fdefvar): Improve error message.
-
-2005-06-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last
-       change.
-
-2005-06-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * eval.c (Fdefvar): Don't try to set constant symbols.
-
-2005-06-25  Richard M. Stallman  <rms@gnu.org>
-
-       * macfns.c (Fx_show_tip): Pass new arg to try_window.
-
-       * w32fns.c (Fx_show_tip): Pass new arg to try_window.
-
-       * xfns.c (Fx_show_tip): Pass new arg to try_window.
-
-       * xdisp.c (try_window): New arg CHECK_MARGINS.  Calls changed.
-       (redisplay_window): Handle try_window reporting point in scroll margin.
-
-       * dispextern.h (try_window): Declare new arg.
-
-       * fileio.c (Fcopy_file): New arg PRESERVE_UID_GID.
-       Use fchmod to copy the file modes.
-       (Frename_file): Don't copy UID and GID here;
-       instead, specify t for PRESERVE_UID_GID when calling Fcopy_file.
-
-       * eval.c (call_debugger): Take full care of extending stack limits
-       to make space for the debugger, and restore the change afterward.
-       Bind debug-on-error to nil.
-       (restore_stack_limits): New subroutine.
-       (Fsignal): Extend specpdl bound along with eval depth bound,
-       for calling edebug.  Don't do either one, for calling debugger.
-       (find_handler_clause): Don't bind debug-on-error here.
-       Don't unbind anything either.
-       Temporarily advance max_specpdl_size for calling
-       internal_with_output_to_temp_buffer.
-       (grow_specpdl): Don't alter max_specpdl_size before signaling
-       an error.
-       (syms_of_eval) <max-specpdl-size>: Doc fix.
-
-       * lread.c (read1): 0.0e+NaN should make a "positive" NaN.
-
-2005-06-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * fileio.c (Frename_file): Undo last change: no need to ifdef away
-       chown on DOS_NT platforms.
-
-       * w32.c (sys_chown): New function.
-
-       * s/ms-w32.h (chown): New; define to sys_chown.
-
-2005-06-24  Juanma Barranquero  <lekktu@gmail.com>
-
-       * xdisp.c (syms_of_xdisp) <nobreak-char-display>: Doc fix.
-       (syms_of_xdisp) <void-text-area-pointer>: Doc fix.
-
-       * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows.
-
-2005-06-23  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (get_next_display_element): Finish reversing the tests of
-       Vnobreak_char_display.
-
-       * xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape.
-       All uses changed.
-       (Qnobreak_space): Rename from Qno_break_space.  All uses changed.
-       (syms_of_xdisp): Define nobreak-char-display and nobreak-space.
-
-       * fileio.c (Frename_file): Preserve owner and group, if possible,
-       when copying.
-
-2005-06-23  Juanma Barranquero  <lekktu@gmail.com>
-
-       * abbrev.c (Funexpand_abbrev):
-       * category.c (Fmake_category_set):
-       * dispnew.c (Fsleep_for, Fsit_for):
-       * editfns.c (Fsubst_char_in_region):
-       * eval.c (Fdefvar, Fdefconst, Feval, Ffuncall):
-       * frame.c (make_frame_without_minibuffer):
-       * lread.c (read_vector):
-       * macfns.c (check_x_frame):
-       * process.c (Fstop_process, Fcontinue_process):
-       * search.c (Freplace_match):
-       * syntax.c (Fstring_to_syntax):
-       * w32fns.c (check_x_frame, check_x_display_info):
-       * xfaces.c (x_supports_face_attributes_p):
-       * xselect.c (Fx_own_selection_internal): Follow error conventions.
-
-       * image.c (fn_png_init_io): Don't define it.
-       (init_png_functions) [HAVE_NTGUI]: Don't initialize fn_png_init_io.
-       (png_read_from_file): New function, based on png_read_from_memory.
-       (png_load): Use it, instead of fn_png_init_io.
-
-2005-06-23  Kim F. Storm  <storm@cua.dk>
-
-       * search.c (Fmatch_data): Remove evaporate option.
-       (Fset_match_data): Do not mention evaporate option in doc string.
-       Add commentary explaining evaporate arg (for internal use only).
-       (unwind_set_match_data): Add comment on evaporate use.
-
-2005-06-22  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (Qvertical_border): Rename from `Qvertical_divider'.
-       (realize_basic_faces, syms_of_xfaces): Update references to it.
-       * dispextern.h (enum face_id): Rename `VERTICAL_DIVIDER_FACE_ID'
-       to `VERTICAL_BORDER_FACE_ID'.
-       * dispnew.c (build_frame_matrix_from_leaf_window): Update references.
-
-2005-06-21  Juri Linkov  <juri@jurta.org>
-
-       * dispextern.h: Add extern Qframe_set_background_mode.
-
-       * xfaces.c: Rename obsolete function Qframe_update_face_colors to
-       Qframe_set_background_mode.
-
-       * frame.c (Fmodify_frame_parameters):
-       Call frame-set-background-mode after changing the background color
-       on non-window non-dos branch.
-
-2005-06-21  Juanma Barranquero  <lekktu@gmail.com>
-
-       * fns.c (Fchar_table_range):
-       * process.c (Fmake_network_process): Fix spellings.
-
-2005-06-20  Kim F. Storm  <storm@cua.dk>
-
-       * fns.c (Fsort): Doc fix.
-
-2005-06-20  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (Qvertical_divider): New variable.
-       (realize_basic_faces): Realize its face.
-       (syms_of_xfaces): Initialize it.
-
-       * dispextern.h (enum face_id): Add `VERTICAL_DIVIDER_FACE_ID'.
-
-       * dispnew.c (build_frame_matrix_from_leaf_window): Display vertical
-       window-separator on ttys using `vertical-divider' face by default.
-
-2005-06-17  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (get_next_display_element):
-       Reverse test of Vshow_nonbreak_escape.
-
-       * term.c (produce_special_glyphs): Use spec_glyph_lookup_face.
-       (Ftty_no_underline): New function.
-       (syms_of_term): defsubr it.
-
-       * keyboard.c (read_char): Call restore_getcjmp after jump occurs.
-
-       * dispnew.c (spec_glyph_lookup_face): New function.
-       (build_frame_matrix_from_leaf_window): Use it.
-
-       * dispextern.h (spec_glyph_lookup_face): Add declaration.
-
-       * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
-
-2005-06-12  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (read_char): After catching a longjmp,
-       call restore_getcjmp.
-
-2005-06-17  Juanma Barranquero  <lekktu@gmail.com>
-
-       * xselect.c (lisp_data_to_selection_data): Fix spelling.
-
-2005-06-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_compute_glyph_string_overhangs): Don't set
-       overhangs unless the given glyph type is noncomposite CHAR_GLYPH.
-       [USE_CARBON_EVENTS] (mac_convert_event_ref): Convert dead key down
-       events.
-       (XTread_socket): Don't pass keyboard events with the option
-       modifier to the system when Vmac_command_key_is_meta is nil or
-       Vmac_option_modifier is non-nil.
-       [USE_CARBON_EVENTS] (read_socket_inev): New variable.
-       [USE_CARBON_EVENTS] (init_command_handler): Fix argument.
-       [USE_CARBON_EVENTS] (mac_handle_mouse_event): New Carbon event
-       handler function.
-       (install_window_handler) [USE_CARBON_EVENTS]: Install it.
-       (XTread_socket) [USE_CARBON_EVENTS]: Move mouse wheel event
-       handler part to mac_handle_mouse_event.
-
-2005-06-14  Juanma Barranquero  <lekktu@gmail.com>
-
-       * eval.c (Fdefvaralias): Rename arguments SYMBOL and ALIASED to
-       NEW-ALIAS and BASE-VARIABLE, respectively.
-
-2005-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup.
-       (get_phys_cursor_geometry, format_mode_line_unwind_data)
-       (get_line_height_property, x_produce_glyphs): Remove unused vars.
-
-       * coding.c (run_pre_post_conversion_on_str): Remove unused var `buf'.
-
-2005-06-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32term.c (x_use_underline_position_properties): New variable.
-       (x_draw_glyph_string): Remind in a comment to change doc string of
-       x-use-underline-position-properties if/when underline positioning
-       is implemented.
-       (syms_of_w32term): DEFVAR_BOOL x-use-underline-position-properties,
-       and initialize it to nil.
-
-2005-06-12  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (NEWOPENFILENAME): New struct.
-       (Fx_file_dialog): Use it to trick the system into giving us up to
-       date dialogs on systems that are documented to support it.
-       Do not set OFN_FILEMUSTEXIST flag if looking for a directory.
-
-2005-06-12  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32fns.c (w32_abort): Use the MB_YESNO dialog instead of
-       MB_ABORTRETRYIGNORE.  Never return, even if DebugBreak does.
-
-2005-06-11  Eli Zaretskii  <eliz@gnu.org>
-
-       * image.c (x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
-       to CreateDIBSection to avoid a compiler warning.
-       (pbm_load): Cast 3rd arg to IMAGE_BACKGROUND to avoid a compiler
-       warning.
-       (png_load): Cast return values of fn_png_create_read_struct and
-       fn_png_create_info_struct, to avoid compiler warnings on W32.
-       Cast 3rd arg to IMAGE_BACKGROUND and image_background_transparent
-       to avoid compiler warnings.
-       (jpeg_load): Cast return value of fn_jpeg_std_error to avoid a
-       compiler warning on W32.  Cast 3rd arg to IMAGE_BACKGROUND to
-       avoid a compiler warning.
-       (tiff_load): Cast return values of fn_TIFFOpen and
-       fn_TIFFClientOpen to avoid compiler warning on W32.  Cast 3rd arg
-       to IMAGE_BACKGROUND to avoid a compiler warning.
-       (gif_load): Cast return values of fn_DGifOpenFileName and
-       fn_DGifOpen to avoid compiler warnings on W32.  Cast 3rd arg to
-       IMAGE_BACKGROUND to avoid a compiler warning.
-       (DrawText) [HAVE_NTGUI || MAC_OS]: If already defined, undef
-       before redefining.
-
-       * w32bdf.c (create_offscreen_bitmap): Cast `bitsp' to `void **' in
-       the call to CreateDIBSection, to avoid a compiler warning.
-
-2005-06-11  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Fx_file_dialog): Unblock input before falling back to
-       minibuffer.
-       * macfns.c (Fx_file_dialog): Likewise.
-
-2005-06-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * makefile.w32-in ($(TEMACS)): Depend on addsection.exe.
-
-2005-06-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * process.c (syms_of_process) [ADAPTIVE_READ_BUFFERING]:
-       * w32fns.c (syms_of_w32fns): Fix spellings.
-
-2005-06-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * unexw32.c (COPY_CHUNK, COPY_PROC_CHUNK): Add a new argument
-       `verbose'; print diagnostic messages only if it is non-zero.
-       All callers changed to pass a zero value unless DEBUG_DUMP is defined
-       in the environment.
-       (copy_executable_and_dump_data): Print section names with %.8s.
-
-2005-06-10  Masatake YAMATO  <jet@gyve.org>
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face
-       when mouse_face is not given.
-
-2005-06-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * window.c (Fselect_window): Adapt call to Fselect_frame.
-
-       * lisp.h: Update EXFUN of Fselect_frame.
-
-       * keyboard.c (command_loop_1): Adapt call to Fselect_frame.
-
-       * frame.c (Fhandle_switch_frame, Fselect_frame): Delete unused arg
-       no_enter.
-       (Fset_mouse_position, Fset_mouse_pixel_position, Ficonify_frame):
-       Adapt to above change.
-
-2005-06-10  Juanma Barranquero  <lekktu@gmail.com>
-
-       * fns.c (Fmemq, Fmaphash): Doc fixes.
-
-2005-06-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * xfaces.c (Fdisplay_supports_face_attributes_p):
-       Fix typo in docstring.
-
-2005-06-08  Steven Tamm  <steventamm@mac.com>
-
-       * unexmacosx.c (copy_data_segment): Copy __la_sym_ptr2 section
-       used by gcc4 on intel mac.
-
-2005-06-09  Kim F. Storm  <storm@cua.dk>
-
-       * search.c (Fmatch_data): Add optional RESEAT arg.  Unchain markers
-       in REUSE list if non-nil; free them if equal to evaporate.
-       (Fset_match_data): Add optional RESEAT arg.  Unchain markers in LIST
-       if non-nil; free them if equal to evaporate.  Use XCAR/XCDR.
-       (restore_search_regs): Rename from restore_match_data.  Uses changed.
-       (unwind_set_match_data): New function.
-       (record_unwind_save_match_data): New function like save-match-data.
-
-       * lisp.h (Fmatch_data, Fset_match_data): Fix EXFUN.
-       (record_unwind_save_match_data): Add prototype.
-       (restore_search_regs): Rename from restore_match_data.
-
-       * composite.c (compose_chars_in_text):
-       * eval.c (do_autoload):
-       * macmenu.c (set_frame_menubar):
-       * process.c (read_process_output, exec_sentinel):
-       * xmenu.c (set_frame_menubar):
-       * xdisp.c (prepare_menu_bars, update_menu_bar, update_tool_bar):
-       * w32menu.c (set_frame_menubar):
-       Use record_unwind_save_match_data.
-
-2005-06-08  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (get_next_display_element): Alter previous change:
-       Distinguish Vshow_nonbreak_escape = t or not t.
-       For t, use escape_glyph once again, as before previous change.
-       Use space or hyphen for display, instead of the non-ASCII char.
-       (syms_of_xdisp) <show-nonbreak-escape>: Doc fix.
-
-       * process.c (Fstart_process): Don't touch command_channel_p slot.
-
-       * process.h (struct process): Delete command_channel_p.
-
-2005-06-07  Masatake YAMATO  <jet@gyve.org>
-
-       * xdisp.c (note_mode_line_or_margin_highlight):
-       Check the overlapping of re-rendering area to avoid flickering.
-       (note_mouse_highlight): Call clear_mouse_face if PART
-       is not ON_MODE_LINE nor ON_HEADER_LINE.
-
-2005-06-07  Kim F. Storm  <storm@cua.dk>
-
-       * process.c: Improve commentary for adaptive read buffering.
-
-2005-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xterm.c (x_create_toolkit_scroll_bar): Use XtNarrowScrollbars
-       if available.
-
-2005-06-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * macmenu.c (menu_quit_handler, install_menu_quit_handler):
-       New functions for popping down menus on C-g.
-       (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler.
-
-       * macterm.c: Make mac_quit_char_modifiers and mac_quit_char_keycode
-       non-static.
-
-       * config.in: Add HAVE_CANCELMENUTRACKING.
-
-2005-06-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros.
-
-       * unexw32.c (RVA_TO_PTR): Move here from w32heap.h.
-
-       * w32proc.c (RVA_TO_PTR): New macro.
-
-       * w32heap.c (RVA_TO_PTR): No need to #undef now.
-
-       * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/w32select.$(O)):
-       Depend on w32heap.h.
-
-2005-06-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keyboard.c (command_loop_1): Update Vthis_original_command.
-
-2005-06-06  Richard M. Stallman  <rms@gnu.org>
-
-       * xmenu.c (popup_get_selection): Undo previous change.
-
-2005-06-06  Juri Linkov  <juri@jurta.org>
-
-       * xdisp.c (Qno_break_space): New variable.
-       (syms_of_xdisp): Initialize it.
-       (get_next_display_element): Add no-break space and soft hypen
-       codes for iso8859-2 and iso8859-5.  Don't add `\' for them.
-       Use `no-break-space' face for no-break spaces.
-
-2005-06-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * window.c (delete_window): Handle the case where a h/vchild has
-       a h/vchild.
-
-2005-06-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32.c (sys_setsockopt): Change arg 4 to `const void *'.  In the
-       call to pfn_setsockopt, cast optval to `const char *'.
-
-2005-06-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * w32.c (gettimeofday): Use struct _timeb, not struct timeb.
-       (open_unc_volume): Cast return value of map_w32_filename, to avoid
-       compiler warnings.
-
-       * s/ms-w32.h (fileno): Don't define if already defined.
-
-       * emacs.c: Include w32heap.h, to avoid compiler warning about sbrk.
-
-       * makefile.w32-in (DOC): Define to point to the generated DOC-X.
-
-2005-06-04  Richard M. Stallman  <rms@gnu.org>
-
-       * xmenu.c (popup_get_selection): Click not in menu deactivates menu.
-
-2005-06-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * macmenu.c (cleanup_popup_menu): New function.
-       (Fx_popup_menu): Unwind protect cleanup_popup_menu in case
-       mac_menu_show Quit:s.
-       (mac_menu_show): Quit on cancel if not popped up on click (i.e.
-       a dialog).
-
-2005-06-04  Kim F. Storm  <storm@cua.dk>
-
-       * coding.c (decode_coding_string): Handle CODING_FINISH_INTERRUPT.
-
-       * callproc.c (Fcall_process): Don't use alloca to gradually
-       increase size of buf, as it effectively uses twice the necessary
-       space on the stack.  Instead, pre-allocate buf of full size, and
-       gradually increase the read size.
-
-       * bytecode.c (BYTE_CODE_QUIT): Check Vthrow_on_input.
-
-       * eval.c (unbind_to): Preserve value of Vquit_flag.
-
-       * xterm.c (handle_one_xevent): Also ignore mouse motion just
-       before a button release event.
-
-2005-06-03  Juanma Barranquero  <lekktu@gmail.com>
-
-       * xfaces.c (Finternal_lisp_face_equal_p): Really report
-       on faces in a frame, if the argument FRAME is non-nil.
-       Improve argument/docstring consistency.
-
-2005-06-02  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (MODE_LINE_NOPROP_LEN): New macro.
-       (x_consider_frame_title, Fformat_mode_line): Save offset into
-       mode_line_noprop_buf rather than pointer, in case buffer is relocated.
-
-2005-06-01  Kim F. Storm  <storm@cua.dk>
-
-       * fns.c (mapcar1): Maybe exit loop if original sequence was modified.
-
-2005-06-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_to_x_fontname, mac_do_list_fonts): Set XLFD
-       resolution fields for scalable fonts to 0.
-
-       * xfaces.c (build_scalable_font_name): Round pixel size to the
-       nearest integer.
-
-2005-06-01  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (display_mode_line): Support nested calls to redisplay
-       and format-mode-line.  Set mode_line_target to MODE_LINE_DISPLAY.
-
-2005-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fileio.c (Finsert_file_contents):
-       * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup.
-
-2005-05-31  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (mode_line_noprop_buf, mode_line_noprop_buf_end)
-       (mode_line_noprop_ptr): Rename from frame_title_*.
-       (store_mode_line_noprop_char): Rename from store_frame_title_char.
-       (store_mode_line_noprop): Rename from store_frame_title.
-       (mode_line_target): New enum to specify current output target
-       for mode line formatting.
-       (display_mode_element): Test it rather than frame_title_ptr and
-       mode_line_string_list to determine where output should go.
-       (mode_line_proptrans_alist, mode_line_string_alist): Make static.
-       (Vmode_line_unwind_vector): New variable.
-       (format_mode_line_unwind_data, unwind_format_mode_line):
-       New functions for unwind protection in mode line formatting.
-       (x_consider_frame_title): Use them and new local var 'title_start'
-       to support nested calls to format-mode-line and redisplay.
-       Set mode_line_target to MODE_LINE_TITLE.
-       (Fformat_mode_line): Use them and new local var 'string_start' to
-       support nested calls to format-mode-line and redisplay.
-       Set mode_line_target to MODE_LINE_NOPROP or MODE_LINE_STRING.
-       Don't trim trailing dashes.
-       (decode_mode_spec): Don't make infinite number of trailing dashes
-       for MODE_LINE_NOPROP and MODE_LINE_STRING targets.
-       (syms_of_xdisp): Initialize and staticpro mode_line_string_face,
-       mode_line_string_face_prop, and Vmode_line_unwind_vector.
-       (init_xdisp): Initialize mode_line_noprop_ptr to start of _buf.
-       Initialize mode_line_target to MODE_LINE_DISPLAY.
-
-2005-05-29  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (Fbuffer_local_value): Call indirect_variable.
-
-2005-05-28  Masatake YAMATO  <jet@gyve.org>
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Change the
-       pointer to a hand cursor when hoovering over a mouse-face.
-
-2005-05-27  Kenichi Handa  <handa@m17n.org>
-
-       * xterm.c (x_encode_char): Call check_ccl_update in advance.
-
-       * ccl.c: Now an element of Vccl_program_table is a vector of
-       length 4, not 3.
-       (ccl_get_compiled_code): New arg idx.  Caller changed.
-       Adjust for the change of Vccl_program_table.
-       (setup_ccl_program): Adjust for the change of Vccl_program_table.
-       (check_ccl_update): New function.
-       (Fregister_ccl_program): Use ASET to set an element of a vector.
-       Adjusted for the change of Vccl_program_table.
-
-       * ccl.h (struct ccl_program): New member idx.
-       (check_ccl_update): Extern it.
-
-2005-05-27  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image.c (Vimage_library_alist): Move from image.el.
-       (syms_of_image): Defvar it.
-       (lookup_image_type): Use it.
-
-       * buffer.c (Fbuffer_local_value): Make argument name match its use
-       in docstring.
-
-2005-05-26  Juanma Barranquero  <lekktu@gmail.com>
-
-       * keyboard.c (Frecursive_edit): Fix typo in docstring.
-       (Fposn_at_x_y): Make argument name match its use in docstring.
-
-2005-05-26  Lute Kamstra  <lute@gnu.org>
-
-       * eval.c (Frun_hooks): Mention run-mode-hooks in docstring.
-
-2005-05-24  Masatake YAMATO  <jet@gyve.org>
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Use b and e
-       as loop sentinels.
-
-2005-05-24  Nick Roberts  <nickrob@snap.net.nz>
-
-       * xmenu.c (Fx_popup_dialog): Add a third boolean argument to
-       select frame title ("Question"/"Information").
-       (xdialog_show): Use it.
-
-       * macmenu.c (Fx_popup_dialog, mac_dialog_show): As for xmenu.c.
-
-       * w32menu.c (Fx_popup_dialog, w32_dialog_show): As for xmenu.c.
-
-       * fns.c (Fyes_or_no_p, Fy_or_n_p): Call Fx_popup_dialog with
-       a third argument (Qnil).
-
-       * lisp.h: x-popup-dialog can have three arguments.
-
-       * editfns.c (Fmessage_box): Use "Information" for frame title.
-
-2005-05-23  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * termcap.c [VMS]: Include <starlet.h>.
-
-2005-05-23  Masatake YAMATO  <jet@gyve.org>
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Add code
-       for mouse-face.  Change the type of the first argument from `window'
-       to `Lisp_Object'.
-       (note_mouse_highlight): Call note_mode_line_or_margin_highlight with
-       window instead of w.
-
-2005-05-22  Andreas Schwab  <schwab@suse.de>
-
-       * process.c (send_process): Move misplaced volatile.
-
-2005-05-21  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (display_mode_element): If we're processing a list and
-       padding is specified, put it after the last element.
-
-2005-05-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * fileio.c (Fexpand_file_name) [DOS_NT]: Don't try to support
-       "superroot" on DOS_NT systems.
-
-2005-05-21  David Hunter  <hunterd42@comcast.net>  (tiny change)
-
-       * process.c (send_process): Restore the SIGPIPE handler if we
-       catch a SIGPIPE.
-
-2005-05-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * image.c (lookup_image, png_read_from_memory): Remove hacks (and
-       misleading comments).
-       (DEF_IMGLIB_FN): Use C calling convention for image libraries.
-
-2005-05-20  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
-
-       * window.c (Fwindow_inside_edges, Fwindow_inside_pixel_edges):
-       Correct the right value.
-
-2005-05-19  Nick Roberts  <nickrob@snap.net.nz>
-
-       * keyboard.c (syms_of_keyboard): Remove Lisp variables
-       post-command-idle-hook and post-command-idle-delay.
-       (command_loop_1): Don't try to execute post-command-idle-hook.
-
-2005-05-16  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (handle_display_prop): Handle empty replacement.
-       (handle_single_display_spec): Return -1 for empty replacement.
-
-       * keyboard.c (adjust_point_for_property): Skip empty overlay string.
-
-       * .gdbinit (pitx): Print more info about iterator.
-
-2005-05-16  Andreas Schwab  <schwab@suse.de>
-
-       * unexmacosx.c (unexec_realloc): Move declarations before statements.
-
-2005-05-14  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (message3): Call cancel_echoing.
-
-       * alloc.c (Fmemory_full_p): New function.
-       (syms_of_alloc): defsubr it.
-
-       * process.c (send_process_trap): Unblock SIGPIPE.
-       (send_process): Reset SIGPIPE handler before reporting error.
-
-2005-05-14  Nick Roberts  <nickrob@snap.net.nz>
-
-       * emacs.c (syms_of_emacs): Fix doc string for system-type.
-
-2005-05-13  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Ffind_file_name_handler): Handle lambda-exp as handler.
-       (Finsert_file_contents): If we read 0 bytes from a special file,
-       unlock the visited file if we locked it.
-       (Fmake_symbolic_link, Frecent_auto_save_p): Doc fixes.
-       (Ffile_exists_p, Ffile_symlink_p): Doc fixes.
-
-2005-05-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * emacs.c (main) [MAC_OS8]: Call init_atimer before mac_term_init.
-
-       * keyboard.c (readable_events) [USE_TOOLKIT_SCROLL_BARS]:
-       Regard toolkit scroll bar thumb drag events as squeezable and prevent
-       redisplay from being paused by them.
-
-       * mac.c [!MAC_OSX]: Include keyboard.h and syssignal.h.
-       [!MAC_OSX] (target_ticks): Remove variable.
-       [!MAC_OSX] (check_alarm, pause, index): Remove functions.
-       [!MAC_OSX && __MRC__] (sys_strftime): Likewise.
-       [!MAC_OSX] (select): If fd 0 is not set in rfds and some input
-       event occurs before timeout, behave as if the function were interrupted.
-       [!MAC_OSX] (sigblock, sigsetmask, alarm): Simulate SIGALRM
-       handling using Time Manager routines.
-       [!MAC_OSX] (mac_atimer_task, mac_atimer_qlink, signal_mask):
-       New variables.
-       [!MAC_OSX] (mac_atimer_handler, set_mac_atimer, remove_mac_atimer)
-       (setitimer): New functions.
-
-       * macfns.c, macmenu.c: Don't include signal.h.
-
-       * macterm.c [USE_TOOLKIT_SCROLL_BARS] (get_control_part_bounds):
-       Rename from get_control_part_bound.  All callers changed.
-       (x_scroll_bar_clear): New function.
-       (x_clear_frame): Use it.
-       (XTset_vertical_scroll_bar): Don't call Draw1Control.
-       (x_scroll_bar_handle_click): Change type of second argument from
-       int to ControlPartCode.
-       (check_alarm): Remove declaration.
-       (XTread_socket) [!TARGET_API_MAC_CARBON]: Don't call it.
-       (XTread_socket): Use ControlPartCode instead of SInt16.
-
-2005-05-13  Nozomu Ando  <nand@mac.com>
-
-       * unexmacosx.c: Include assert.h.
-       (MACOSX_MALLOC_MULT16): New define.
-       [MACOSX_MALLOC_MULT16] (ptr_in_unexec_regions): Determine whether
-       ptr is in unexec regions by checking it is multiple of 16.
-       (unexec_malloc_header_t): New typedef.
-       (unexec_malloc, unexec_realloc, unexec_free): Store and use
-       allocated size information in unexec_malloc_header.
-
-2005-05-10  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.c (noinclude): Add #undef.
-
-       * image.c, xfns.c, xmenu.c: Don't include signal.h.
-
-2005-05-09  Juanma Barranquero  <lekktu@gmail.com>
-
-       * fileio.c (Fexpand_file_name, Frename_file, Fadd_name_to_file)
-       (Fmake_symbolic_link, Faccess_file, Frecent_auto_save_p):
-       Doc fixes.
-
-       * dired.c (Ffile_name_completion): Make argument name
-       match its use in docstring.
-
-2005-05-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * eval.c (Fdefvaralias): Remove any pre-existing
-       variable-documentation property of the alias.
-
-2005-05-07  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * xfns.c (start_hourglass): Do nothing when running on a tty.
-
-2005-05-07  Juanma Barranquero  <lekktu@gmail.com>
-
-       * fns.c (Fchar_table_range): Fix typos in docstring.
-
-2005-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fns.c (Fchar_table_range): Yet Another Int/Lisp_Object Mixup.
-
-2005-05-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * lread.c (Flocate_file_internal): Doc fix.
-
-       * Makefile.in (lisp, shortlisp): Add jka-cmpr-hook.elc.
-
-2005-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macselect.c (x_own_selection): Accept Lisp string as result of
-       selection converter function.
-       (x_clear_frame_selections): Don't call x-lost-selection-functions
-       if Emacs is not owner of the selection.
-       (Vmac_services_selection): Put variable and initialization in
-       #ifdef MAC_OSX.
-       (syms_of_macselect) [MAC_OSX]: Set default value of
-       Vmac_services_selection to PRIMARY.
-
-       * macterm.c (toolkit_scroll_bar_interaction): Remove unused variable.
-       (mac_handle_tool_bar_click): Remove unused function and declaration.
-       [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback)
-       (install_scroll_bar_timer, set_scroll_bar_timer)
-       (control_part_code_to_scroll_bar_part, construct_scroll_bar_click)
-       (get_control_part_bound, x_scroll_bar_handle_press)
-       (x_scroll_bar_handle_release, x_scroll_bar_handle_drag)
-       (x_set_toolkit_scroll_bar_thumb): New functions and declarations.
-       [USE_TOOLKIT_SCROLL_BARS] (last_scroll_bar_part, scroll_bar_timer)
-       (scroll_bar_timer_event_posted_p): New variables.
-       [USE_TOOLKIT_SCROLL_BARS] (SCROLL_BAR_FIRST_DELAY)
-       (SCROLL_BAR_CONTINUOUS_DELAY): New macros.
-       (x_scroll_bar_create): Set control reference with NewControl.
-       (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]:
-       Initialize track_top and track_height to nil.
-       (x_scroll_bar_set_handle, x_scroll_bar_note_movement):
-       Put functions in #ifndef USE_TOOLKIT_SCROLL_BARS.
-       (XTset_vertical_scroll_bar): Don't make space between scroll bar
-       and associated window.
-       (XTset_vertical_scroll_bar) [MAC_OSX]: Get scroll bar area width
-       from window config.
-       (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
-       Set track_top and track_height to nil when scroll bar size is changed.
-       Recalculate them if they are nil.
-       (XTread_socket) [MAC_OSX]: Use control kind to determine if the
-       clicked control is a scroll bar.
-       (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Use toolkit scroll bar
-       event handler functions.  Don't add modifiers to scroll bar click
-       events.  Call scroll bar release handler when window is deactivated.
-       (mac_initialize): Remove unused code for X toolkit.
-       (syms_of_macterm) [!USE_TOOLKIT_SCROLL_BARS]:
-       Initialize Vx_toolkit_scroll_bars to nil.
-
-       * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
-       New members track_top and track_height.
-
-       * sysselect.h [DARWIN || MAC_OSX]: Temporarily undefine
-       init_process when including sys/select.h.
-
-2005-05-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * eval.c (Fdefvaralias): Doc fix.
-
-       * xmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes.
-
-2005-05-05  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (init_buffer_once): Set cursor_in_non_selected_windows
-       default value.
-       (syms_of_buffer): Add default-cursor-in-non-selected-windows.
-       Fix type of cursor-in-non-selected-windows.
-
-2005-05-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * mac.c: #undef init_process so not to conflict with system headers.
-
-2005-05-02  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer): Define cursor-in-non-selected-windows.
-
-       * buffer.h (struct buffer): Add cursor_in_non_selected_windows slot.
-
-       * xdisp.c (Vcursor_in_non_selected_windows)
-       (Qcursor_in_non_selected_windows): Vars deleted.
-       (syms_of_xdisp): Don't initialize them.
-       (get_window_cursor_type): Use cursor_in_non_selected_windows
-       buffer slot.
-
-2005-05-02  Kim F. Storm  <storm@cua.dk>
-
-       * macros.c (executing_kbd_macro_index): Rename from
-       executing_macro_index.  All uses changed.
-       (executing_kbd_macro_iterations): Rename from
-       executing_macro_iterations.  All uses changed.
-       (executing_kbd_macro): Rename from executing_macro.
-       All uses changed.
-       (syms_of_macros): Rename Lisp var executing-macro-index to
-       executing-kbd-macro-index.
-
-       * xdisp.c (move_it_in_display_line_to): Fix last change.
-
-2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * xmenu.c (Fx_popup_menu): Doc fix.
-
-       * charset.c (syms_of_charset): Delete defsubr for Schars_in_region.
-
-2005-05-02  Jason Rumney  <jasonr@gnu.org>
-
-       * emacs.c (USAGE3, USAGE4): Keep strings below 2048 bytes.
-
-2005-05-02  Nozomu Ando  <nand@mac.com>
-
-       * sysselect.h: Fix typo.
-
-2005-05-02  Nick Roberts  <nickrob@snap.net.nz>
-
-       * charset.c (Fchars_in_region): Remove as obsolete.
-
-2005-05-01  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (move_it_in_display_line_to): Stop if we move beyond
-       TO_CHARPOS.  This may happen if last glyphs was an image or stretch
-       glyph.
-
-2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * dispnew.c (sit_for): Vexecuting_macro -> Vexecuting_kbd_macro.
-
-2005-05-01  Richard M. Stallman  <rms@gnu.org>
-
-       * xmenu.c [not HAVE_X_TOOLKIT] (xmenu_show):
-       If user cancels the menu, quit unless FOR_CLICK.
-
-       * macros.c (Vexecuting_kbd_macro): Rename from Vexecuting_macro.
-       All uses changed.
-       (syms_of_macros): Define only executing-kbd-macro, not executing-macro.
-       * keyboard.c: Change Vexecuting_macro to Vexecuting_kbd_macro.
-       * macros.h (Vexecuting_kbd_macro): Declare instead of Vexecuting_macro.
-       * commands.h (Vexecuting_kbd_macro): Likewise.
-
-2005-05-01  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * sysdep.c (get_frame_size) [VMS]: Use a fresh i/o channel.
-
-2005-04-30  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Ffind_file_name_handler): Handle the `operations'
-       property of the file name handler.
-       (Qoperations): New variable.
-       (syms_of_fileio): Initialize and staticpro it.
-
-       * xdisp.c (set_message_1): Delete xassert.
-
-2005-04-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c: Don't include time.h.  Include sysselect.h after systime.h.
-
-       * macfns.c (Fx_server_version): Add BLOCK_INPUT around Gestalt.
-
-       * macgui.h [HAVE_CARBON && MAC_OSX]: Don't undefine/define mktime
-       before/after including Carbon.h if there is a working mktime.
-
-2005-04-28  Kim F. Storm  <storm@cua.dk>
-
-       * xfaces.c (resolve_face_name): Add arg SIGNAL_P.  Calls changed.
-       Fix cyclic alias check.  If alias loop is detected, signal
-       circular-list error if SIGNAL_P, and return Qdefault if !SIGNAL_P.
-
-2005-04-28  Lute Kamstra  <lute@gnu.org>
-
-       * eval.c (do_autoload): Record only autoloads in the autoload
-       property of symbols.
-
-2005-04-28  Nick Roberts  <nickrob@snap.net.nz>
-
-       * emacs.c (USAGE1): Add --basic-display and --quick options.
-
-2005-04-27  Kim F. Storm  <storm@cua.dk>
-
-       * data.c (syms_of_data) Staticpro Qcyclic_variable_indirection.
-
-2005-04-26  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Fsame_window_p, Fspecial_display_p): Doc fixes.
-       (syms_of_window): Doc fixes.
-
-       * indent.c (Fvertical_motion): Undo previous change.
-
-2005-04-26  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (char_table_range): New function.
-       (Fchar_table_range): Signal an error if characters in the range
-       have inconsistent values.  Don't check the parent.
-
-2005-04-25  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (fontset_set): Fix previous change.
-
-2005-04-24  Richard M. Stallman  <rms@gnu.org>
-
-       * indent.c (Fvertical_motion): Bind fontification-functions to nil.
-
-2005-04-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * regex.c (re_search_2, re_match_2_internal): Convert second arg
-       of RE_TRANSLATE to int, to shut up GCC warnings.
-
-       * fileio.c (Fcopy_file): Doc fix.
-       [MSDOS]: Fix call to emacs_open: buffer_file_type not defined and
-       not needed.
-
-2005-04-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * Makefile.in [HAVE_CARBON] (MAC_OBJ): Add macselect.o.
-       (SOME_MACHINE_OBJECTS): Likewise.
-       (mac.o): Depend on ccl.h.
-       (macselect.o): New target.
-
-       * emacs.c (main) [MAC_OS8 || MAC_OSX && HAVE_CARBON]:
-       Call syms_of_macselect.
-
-       * frame.c (Fdelete_frame) [MAC_OS]: Call x_clear_frame_selections.
-
-       * mac.c [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
-       (QCLIPBOARD): Remove variable.
-       (syms_of_mac): Don't initialize it.
-       (Fmac_paste_function, Fmac_cut_function, Fx_selection_exists_p):
-       Remove functions.
-       (syms_of_mac): Don't defsubr them.
-       [TARGET_API_MAC_CARBON] (Qmime_charset, QNFD, QNFKD, QNFC, QNFKC)
-       (QHFS_plus_D, QHFS_plus_C): New variables.
-       (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them.
-       [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp)
-       (cfstring_create_normalized): New functions.
-       [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Likewise.
-       (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it.
-
-       * macterm.c (handling_window_update, terminate_flag):
-       Remove variables.
-       (do_window_update, do_ae_quit_application, XTread_socket):
-       Don't use them.
-       (WNE_SLEEP_AT_SUSPEND, WNE_SLEEP_AT_RESUME): Don't define.
-       [USE_CARBON_EVENTS && MAC_OSX] (mac_handle_service_event)
-       (init_service_handler): Move to macselect.c.  Remove declarations.
-       [USE_CARBON_EVENTS && MAC_OSX] (init_service_handler): Add extern.
-       (Qapplication, Qabout): New variables.
-       (syms_of_mac): Initialize them.
-       [USE_CARBON_EVENTS && MAC_OSX] (Qpreferences, Qservices, Qpaste)
-       (Qperform): New variables.
-       (syms_of_mac) [USE_CARBON_EVENTS && MAC_OSX]: Initialize them.
-       (do_get_menus) [TARGET_API_MAC_CARBON]: Don't call AppendResMenu.
-       (do_menu_choice): Unhighlight menu bar also when menu_id is 0.
-       (mac_store_application_menu_event, init_menu_bar): New functions.
-       [USE_CARBON_EVENTS] (mac_handle_command_event)
-       (init_command_handler): New functions.
-       (mac_handle_window_event): Return noErr on window update event.
-       (do_ae_quit_application): Call mac_store_application_menu_event.
-       (mac_initialize) [USE_CARBON_EVENTS]: Call init_command_handler
-       and init_menu_bar.
-
-       * macterm.h (x_clear_frame_selections): Add extern.
-
-       * macselect.c: New file for selection processing on Mac OS.
-
-2005-04-23  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Fcopy_file): New arg MUSTBENEW.
-       (Frename_file): Pass new arg to Fcopy_file.
-
-       * window.c (window_size_fixed): Variable deleted.
-       (syms_of_window): Initialize window-size-fixed to nil.
-       But don't DEFVAR window_size_fixed.
-
-2005-04-23  Andreas Schwab  <schwab@suse.de>
-
-       * m/macppc.h (LD_SWITCH_MACHINE) [LINUX]: Don't define.
-       (START_FILES, LIB_STANDARD) [LINUX && _ARCH_PPC64]: Override to
-       use lib64 instead of lib.
-       (_LP64) [_ARCH_PPC64]: Define if not defined.
-
-2005-04-23  David Hunter  <hunterd42@comcast.net>  (tiny change)
-
-       * s/ms-w32.h (HAVE_PWD_H): Define.
-
-2005-04-22  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (copy_sub_char_table): Explicitly copy the default value
-       of the sub-chartable.
-
-       * fontset.c (fontset_set): When a sub-chartable is created,
-       explicitly sets the defalt value.
-
-2005-04-22  Kim F. Storm  <storm@cua.dk>
-
-       * fns.c (Fplist_get): Replace by Fsafe_plist_get.
-       (Fsafe_plist_get): Rename to Fplist_get.
-       (Fsafe_get): Remove, as Fget now uses safe Fplist_get.
-       (defsubr): Remove defsubr for Fsafe_plist_get and Fsafe_get.
-
-       * lisp.h (Fsafe_plist_get, Fsafe_get): Remove EXFUN.
-
-       * xdisp.c (store_mode_line_string, produce_stretch_glyph)
-       (note_mode_line_or_margin_highlight, note_mouse_highlight):
-       Use Fplist_get instead of Fsafe_plist_get.
-
-       * xfaces.c (resolve_face_name): Use Fget instead of Fsafe_get.
-
-2005-04-21  Miles Bader  <miles@gnu.org>
-
-       * xdisp.c (dump_glyph_row): Don't display overlay_arrow_p field.
-
-2005-04-20  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * sysdep.c: Remove reference to defunct vms-pwd.h.
-       * dired.c: Likewise.  Also, for pwd.h, use HAVE_PWD_H, not !VMS.
-       * editfns.c, fileio.c, filelock.c, sysdep.c, xrdb.c: Likewise.
-
-       * config.in: Regenerate.
-
-2005-04-20  Kenichi Handa  <handa@m17n.org>
-
-       * lisp.h (CHAR_TABLE_DEFAULT_SLOT_ASCII): New macro.
-       (CHAR_TABLE_DEFAULT_SLOT_8_BIT_CONTROL): New macro.
-       (CHAR_TABLE_DEFAULT_SLOT_8_BIT_GRAPHIC): New macro.
-
-       * alloc.c (make_sub_char_table): Argument changed to initial
-       value of the slots.
-
-       * data.c (Faref): Handle special slots used as default values of
-       ascii, eight-bit-control, eight-bit-control.  Don't ignore a
-       default value set for a group of characters.
-       (Faset): Signal an error if IDXVAL is not a valid character code.
-       Make a sub-chartable with correct initial value.
-
-       * fns.c (Fset_char_table_range): Don't set slots used as default
-       values for ascii, eight-bit-control, eight-bit-graphic.
-       Don't call Faref with charset-id.
-       (Fset_char_table_default): Document how to treat normal character
-       argument.  Handle special slots used as default values of ascii,
-       eight-bit-control, eight-bit-control.  Make a sub chartable if
-       necessary.
-
-2005-04-20  Kenichi Handa  <handa@m17n.org>
-
-       * search.c (boyer_moore): Fix previous change.
-
-2005-04-19  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (setup_for_ellipsis): Reset saved_face_id to use default
-       face unless last visible char and first invisible char have the
-       same face.  Also use default face if saved_face_id is undefined.
-
-2005-04-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macgui.h (MacFontStruct): Remove member `fontname'.  Add member
-       `full_name'.
-       [TARGET_API_MAC_CARBON] (MacFontStruct): Use type int for
-       mac_scriptcode member.
-
-       * macterm.c (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): Remove variables.
-       (syms_of_mac): Don't initialize them.
-       (Vmac_charset_info_alist): New variable.
-       (syms_of_mac): Defvar it.
-       (create_text_encoding_info_alist): New function.
-       (decode_mac_font_name, mac_to_x_fontname)
-       (x_font_name_to_mac_font_name, init_font_name_table): Don't hard
-       code the correspondence among XLFD charsets, Mac script codes, and
-       Emacs coding systems.  Use Vmac_charset_info_alist and result of
-       create_text_encoding_info_alist instead.
-       (init_font_name_table) [TARGET_API_MAC_CARBON]: Use Font Manager
-       routines also on Mac OS Classic.
-       (init_font_name_table) [!TARGET_API_MAC_CARBON]:
-       Use add_font_name_table_entry.
-       (mac_do_list_fonts): Regard 0 in XLFD scaleble fields as
-       specified.  Derive unspecified scalable fields from specified one.
-       (x_list_fonts): Consider Valternate_fontname_alist.
-       (kDefaultFontSize): Change value from 9 to 12.
-       (XLoadQueryFont): Get decoded font family, font face, and charset
-       from x_font_name_to_mac_font_name.  Set full name of loaded font.
-       (mac_unload_font): Free `full_name' member.
-       (x_load_font): Don't try XLoadQueryFont if x_list_fonts returns
-       NULL.  Copy full_name member of struct MacFontStruct to that of
-       struct font_info.
-
-2005-04-19  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (handle_stop): Set saved_face_id to current face if
-       selective_display_ellipsis_p so ellipsis will be shown in same
-       face as preceding text.
-       (setup_for_ellipsis): Don't set saved_face_id here.
-       (next_element_from_display_vector): Default to saved_face_id.
-
-       * fns.c (Fsafe_get): New function.
-       (syms_of_fns): Defsubr it.
-
-       * lisp.h (Fsafe_get): EXFUN it.
-
-       * xfaces.c (resolve_face_name): Use Fsafe_get to avoid redisplay
-       loops in case of bad face property lists.  Limit number of face
-       alias lookups to 10 (in case of face alias loops).
-
-2005-04-18  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (struct glyph_row): New member overlay_arrow_bitmap.
-       It replaces the corresponding member from struct window, as a
-       window may now show multiple overlay arrows.
-       Remove member overlay_arrow_p, superseeded by overlay_arrow_bitmap.
-
-       * dispnew.c (row_equal_p, update_window_line, scrolling_window):
-       Compare overlay_arrow_bitmap than overlay_arrow_p members.
-
-       * fringe.c (draw_fringe_bitmap): Use overlay_arrow_bitmap from row
-       rather than from window.
-       (update_window_fringes): Compare overlay_arrow_bitmap rather than
-       overlay_arrow_p members.
-       (Ffringe_bitmaps_at_pos): Return fringe overlay_arrow_bitmap name
-       if not default.
-
-       * window.h (struct window): Remove member overlay_arrow_bitmap.
-
-       * window.c (make_window): Don't initialize overlay_arrow_bitmap.
-
-       * xdisp.c (overlay_arrow_string_or_property): Remove PBITMAP arg.
-       Calls changed.  Don't check for overlay-arrow-bitmap property here.
-       (overlay_arrow_at_row): Remove PBITMAP arg.  Instead, if left
-       fringe is present, return Lisp integer for bitmap (or -1 for default).
-       Fix value of overlay-arrow-bitmap property to be a symbol, use
-       lookup_fringe_bitmap to parse it.
-       (display_line): Change call to overlay_arrow_at_row.  Store integer
-       return value as overlay bitmap in row rather than window.
-       Only show overlay arrow if row displays text, or if no other overlay
-       arrow is seen in window (if overlay marker is at point-max).
-
-2005-04-18  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * xfaces.c (realize_x_face) [!HAVE_WINDOW_SYSTEM]: Return NULL.
-
-2005-04-18  Lute Kamstra  <lute@gnu.org>
-
-       * lread.c (Vloads_in_progress): Static.
-       * fns.c (Vloads_in_progress): Remove extern.
-       (load_in_progress): Add extern.
-       (Frequire): Use load_in_progress instead of Vloads_in_progress.
-
-2005-04-18  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * xmenu.c (Fx_popup_menu): Initialize error_name to NULL.
-
-2005-04-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (XTread_socket): Don't beep on keyboard input even if
-       no frame is visible.
-
-2005-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * term.c (struct keys): Add support for shifted keys.
-
-2005-04-16  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (with_echo_area_buffer): Delete WHICH < 0 case.
-       (set_message): Call with_echo_area_buffer with WHICH = 0.
-       (set_message_1): Erase the echo area buffer first thing.
-       (echo_area_display): Don't clear echo_message_buffer.
-
-2005-04-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * Makefile.in (mac.o): Depend on charset.h and coding.h.
-
-       * mac.c: Include charset.h and coding.h.
-       [TARGET_API_MAC_CARBON] (Qutf_8): Remove extern.
-       [TARGET_API_MAC_CARBON] (cfstring_create_with_string): New function.
-       [TARGET_API_MAC_CARBON] (Fmac_get_preference): Use it.
-
-       * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise.
-
-       * image.c [MAC_OSX] (image_load_quartz2d): Likewise.
-
-       * macterm.c (x_autoselect_window_p): Remove variable.
-       (last_window): New variable.
-       (XTreassert_line_highlight, x_change_line_highlight):
-       Remove declarations.
-       (mac_focus_changed, x_detect_focus_change): New functions and
-       declarations.
-       (XTextExtents16, front_emacs_window): Remove function.
-       (mac_focus_frame): New function.
-       (XTmouse_position, do_menu_choice, do_zoom_window, XTread_socket)
-       (mac_check_for_quit_char): Use it instead of front_emacs_window.
-       (x_scroll_bar_report_motion): Obtain window from control owner.
-       (x_make_frame_invisible): Set window manager size hint.
-       (do_mouse_moved): Remove function.
-       (XTread_socket): Move its contents here.  Generate select-window
-       event on mouse movement if needed.  Use x_detect_focus_change on
-       activate/deactivate events.  Don't deiconify frame or invalidate
-       window rectangle when dnd items are dropped.
-       Don't activate/deactivate root control.
-       (frame_highlight, frame_unhighlight): Activate/deactivate root
-       control here.
-       (syms_of_macterm): Delete DEFVAR_BOOL for x_autoselect_window_p.
-
-       * macterm.h (cfstring_create_with_string) [TARGET_API_MAC_CARBON]:
-       New extern.
-
-2005-04-15  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * Makefile.in: Define new macro TOOLTIP_SUPPORT.
-       (lisp): Use it.
-       (SOME_MACHINE_LISP): Add tooltip.
-
-2005-04-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c [!TARGET_API_MAC_CARBON]: Include MacLocales.h.
-       Don't include TextEncodingConverter.h.
-       (mac_system_script_code, Vmac_system_locale): New variables.
-       (syms_of_mac): Defvar them.
-       (mac_get_system_locale): New function.
-
-       * macfns.c (x_set_name, x_set_title) [!TARGET_API_MAC_CARBON]:
-       Use ENCODE_SYSTEM to encode title bar string.
-       (x_create_tip_frame): Apply 2005-03-18 change for xfns.c.
-       (Fx_file_dialog) [TARGET_API_MAC_CARBON && !MAC_OSX]:
-       Use CFStringGetSystemEncoding to get system default string encoding.
-
-       * macterm.c [!TARGET_API_MAC_CARBON]: Don't include
-       TextEncodingConverter.h.
-
-2005-04-13  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (syms_of_macterm): Remove redundant definition of
-       mac-pass-control-to-system.
-
-2005-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (Fset_window_configuration): Be careful when you choose
-       among several possible points for the new_current_buffer.
-
-2005-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * keyboard.c (poll_for_input) [SYNC_INPUT]: Don't call
-       poll_for_input_1.  Set interrupt_input_pending to 1 instead.
-       (Qlanguage_change) [MAC_OS]: New variable.
-       (syms_of_keyboard) [MAC_OS]: Intern and staticpro it.
-       (kbd_buffer_get_event) [MAC_OS]: Make event for LANGUAGE_CHANGE_EVENT.
-
-       * macterm.c (mac_keyboard_text_encoding)
-       (current_mac_keyboard_text_encoding): Remove variables.
-       (XTread_socket): Store language-change event if keyboard script change
-       is detected.  Don't convert input to `mac_keyboard_text_encoding'.
-       (syms_of_macterm): Delete DEFVAR_INT for mac-keyboard-text-encoding.
-
-       * termhooks.h (enum event_kind) [MAC_OS]: Add LANGUAGE_CHANGE_EVENT.
-
-2005-04-10  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs.c (standard_args): Rename --bare-bones to --quick.
-       Add -D aka --basic-display.
-
-       * buffer.c (Fmake_indirect_buffer): Clear out some local variables.
-
-2005-04-09  Richard M. Stallman  <rms@gnu.org>
-
-       * keymap.c (where_is_internal): Convert a string used as event type
-       into "(any string)".
-
-       * lread.c (Vloads_in_progress): Not static.
-       * fns.c (Vloads_in_progress): Add extern.
-       (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil.
-
-2005-04-09  Thien-Thi Nguyen  <ttn@surf.glug.org>
-
-       * dispnew.c (mirror_line_dance): Avoid crash if W2 is null.
-
-2005-04-09  Lute Kamstra  <lute@gnu.org>
-
-       * print.c (PRINTPREPARE): Check if the marker PRINTCHARFUN is
-       within the accessible part of the buffer.
-
-2005-04-09  Kim F. Storm  <storm@cua.dk>
-
-       * lread.c (readevalloop): Add args START and END as region in
-       current buffer to read.  Callers changed.
-       When specified, narrow to this region only when reading,
-       not during eval.  Track next point to read from during eval.
-       Also restore point to "real" buffer position before eval.
-       (Feval_region): Don't save excursion and restriction here, and
-       don't narrow to region.  Just pass region to readevalloop.
-       Note: Point is now preserved even when PRINTFLAG is nil.
-
-2005-04-08  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>".
-
-2005-04-06  Kim F. Storm  <storm@cua.dk>
-
-       * emacs.c (standard_args): Add -Q, --bare-bones, -bare-bones.
-
-2005-04-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
-       (Fmac_get_preference): Doc fix.
-
-       * macfns.c (Fx_create_frame, x_create_tip_frame):
-       Add "fontset-mac" to fallback font/fontsets.
-
-2005-04-04  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (Fgarbage_collect): Call CHECK_CONS_LIST before and after gc.
-
-       * eval.c (Ffuncall): Always call CHECK_CONS_LIST on entry.
-       Call it again after autoload.
-
-2005-04-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * alloc.c (allocate_string_data): Call BLOCK_INPUT before calling
-       mallopt.
-
-       * ralloc.c (r_alloc_init): Ditto.
-
-2005-04-01  Kenichi Handa  <handa@m17n.org>
-
-       * lisp.h (Vascii_upcase_table, Vascii_canon_table)
-       (Vascii_eqv_table): Extern them.
-
-       * casetab.c (set_case_table): If standard is nonzero, setup
-       Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table.
-
-       * search.c (looking_at_1): Use current_buffer->case_canon_table,
-       not DOWNCASE_TABLE.
-       (string_match_1): Likewise.
-       (fast_c_string_match_ignore_case): Use Vascii_canon_table, not
-       Vascii_downcase_table.
-       (fast_string_match_ignore_case): Likewise.
-       (search_buffer): Fix checking of boyer-moore usability.
-       (boyer_moore): Calculate translate_prev_byte1/2/3 in advance.
-       No need of tranlating characters in PAT.  Fix calculation of
-       simple_translate.
-
-2005-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xterm.c [HAVE_XAW3D]: Include ThreeD.h for XtNbeNiceToColormap.
-       (x_create_toolkit_scroll_bar): Test XtNbeNiceToColormap before using it.
-       Use XtNtopShadowPixel and XtNbottomShadowPixel.
-       (x_set_toolkit_scroll_bar_thumb): Remove ugly old hack that didn't
-       really work and that breaks with some versions of Xaw3d.
-
-2005-03-31  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (syms_of_coding): Fix previous change.
-
-2005-03-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fileio.c (search_embedded_absfilename): Fix last change.
-
-2005-03-25  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (syms_of_coding): Suggest to use set-coding-category in
-       the docstring of coding-category-list.
-
-2005-03-31  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (Qmouse_fixup_help_message): New var.
-       (syms_of_keyboard): Intern and staticpro it.
-       (show_help_echo): Apply mouse-fixup-help-message to help string.
-
-2005-03-30  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (display_line): Allow multiple overlay arrows in window.
-
-2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fileio.c (Fexpand_file_name): Use IS_DEVICE_SEP.
-       (file_name_absolute_p): New fun, extracted from Ffile_name_absolute_p.
-       (Ffile_name_absolute_p): Use it.
-       (search_embedded_absfilename): New fun, extracted from
-       Fsubstitute_in_file_name.  Use file_name_absolute_p.
-       Free the pw data after use.
-       (Fsubstitute_in_file_name): Use it.
-       After cutting a prefix, re-check file-name-handler.
-
-2005-03-26  Lennart Borgman  <lennart.borgman.073@student.lu.se>
-
-       * w32term.h (x_output): Add focus_state.
-
-       * w32term.c (x_focus_changed, w32_detect_focus_change): New functions.
-       (w32_read_socket) <WM_SETFOCUS>: Call w32_detect_focus_change.
-
-2005-03-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * minibuf.c (Fminibuffer_complete_and_exit, Fself_insert_and_exit):
-       Use Fexit_minibuffer.
-       (Fexit_minibuffer): Mark it as no-return, deactivate the mark.
-
-2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * dired.c (Ffile_attributes): Add a missing gcpro.
-
-       * alloc.c (make_number): The arg can be bigger than `int'.
-       * lisp.h (make_number): Make prototype more precise.
-
-       * process.c, dired.c (Vfile_name_coding_system)
-       (Vdefault_file_name_coding_system):
-       * callproc.c (Vdoc_file_name, Vfile_name_coding_system)
-       (Vdefault_file_name_coding_system): Remove unused declarations.
-
-2005-03-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (create_and_show_popup_menu): Just remove menu and return
-       if it failed to pop up (Gnome "show pointer on ctrl" option makes
-       menus fail to pop up).
-
-2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xdisp.c (get_next_display_element): Also use `\ ' & `\-' for latin-9.
-       Just prepend a backslash without replacing the NBSP by an SPC.
-
-2005-03-22  Kim F. Storm  <storm@cua.dk>
-
-       * xfaces.c (lookup_derived_face): Add arg SIGNAL_P.
-       * dispextern.h (lookup_derived_face): Fix prototype.
-       * msdos.c (XMenuActivate): Fix call to lookup_derived_face.
-
-       * xdisp.c (handle_single_display_spec): Derive left-fringe and
-       right-fringe face from fringe face.
-
-       * fringe.c (draw_fringe_bitmap_1, Fset_fringe_bitmap_face):
-       Derive face from fringe face.
-
-2005-03-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xrdb.c (x_load_resources): Undo previous change (2005-03-18).
-
-2005-03-22  David Kastrup  <dak@gnu.org>
-
-       * textprop.c (Fnext_char_property_change)
-       (Fprevious_char_property_change): Allow marker as limit.
-       (Fnext_single_char_property_change)
-       (Fprevious_single_char_property_change): Check that limit is a
-       number in strings.
-       (Fnext_single_char_property_change): Coerce position to integer.
-       (Fprevious_single_char_property_change): Same here.
-
-2005-03-21  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * s/openbsd.h (LD_SWITCH_SYSTEM_tmp): Define if undefined.
-
-2005-03-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * frame.c (Fignore_event): Remove.
-       (syms_of_frame): Don't defsubr it.
-
-       * keyboard.c (keys_of_keyboard): Just use `ignore' instead of the
-       redundant `ignore-event'.
-
-2005-03-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * unexec.c (write_segment, unexec): Move these functions to avoid
-       forward references (which cause errors with "gcc -gcoff").
-
-2005-03-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (x_create_tip_frame): Remove setting of Vx_resource_name so
-       that it doesn't become "tooltip".  The specbind is enough.
-
-       * xrdb.c (x_load_resources): Use different char *helv when I18N
-       is present.
-
-2005-03-17  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (syms_of_coding): Docstring of coding-category-list fixed.
-
-2005-03-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xfaces.c (x_update_menu_appearance) [HAVE_X_I18N]:
-       Use xic_create_fontsetname even for non-Motif menus.
-       Don't forget to free the fontsetname.
-
-       * xfns.c (xic_create_fontsetname): Add a final catch-all font pattern.
-
-2005-03-17  Richard M. Stallman  <rms@gnu.org>
-
-       * dispnew.c (mirror_line_dance): Set W2 according to FRAME_FROM.
-
-       * fileio.c (Fcopy_file, Frename_file, Fadd_name_to_file)
-       (Fmake_symbolic_link): Use G to read the new file name.
-
-       * callint.c (Finteractive): Document G option.
-       (Fcall_interactively): Implement G option.
-
-       * buffer.c (buffer_lisp_local_variables): New function,
-       broken out from Fbuffer_local_variables.
-       (clone_per_buffer_values): Use buffer_lisp_local_variables.
-
-2005-03-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xfns.c (xic_create_fontsetname): Add `motif' argument.
-       Always return a freshly allocated string.
-       (xic_create_xfontset): Adjust call.
-
-       * xfaces.c (x_update_menu_appearance) [USE_MOTIF]:
-       Use xic_create_fontsetname to create a fontset so utf-8 locales work.
-       (dump_realized_face): Fix warning.
-
-       * emacs.c (Fkill_emacs): YAILOM.
-
-       * frame.c (Fignore_event): Fix ancient obscure C-u handling bug.
-
-2005-03-17  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (HASHKEY_TERMINAL): Remove.
-       (HASHKEY_MAX_NID): New macro.
-       (xrm_q_get_resource_1): Rename from xrm_q_get_resource.  Add extra
-       argument.
-       (xrm_q_get_resource): Call xrm_q_get_resource_1 with extra argument.
-       (xrm_create_database, xrm_q_put_resource)
-       (xrm_merge_string_database, xrm_q_get_resource_1)
-       (xrm_q_get_resource): Change resource database representation so
-       that it may not use multiple hash tables for a single database.
-       [TARGET_API_MAC_CARBON] (xrm_cfproperty_list_to_value): YAILOM.
-
-2005-03-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xmenu.c (ENCODE_MENU_STRING) [HAVE_X_I18N]: Use ENCODE_SYSTEM.
-
-       * coding.h (ENCODE_SYSTEM, DECODE_SYSTEM) [!WINDOWSNT]: Use the
-       locale-coding-system, as was already done for WINDOWSNT.
-
-       * keyboard.c (read_char): Only do the 7-bit-meta -> 27-bit-meta
-       translation for chars in the 0-255 range.
-
-2005-03-16  Lute Kamstra  <lute@gnu.org>
-
-       * floatfns.c (Ffloor): Doc fix.
-
-2005-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c: Include macterm.h instead of directly including Carbon.h.
-       [TARGET_API_MAC_CARBON] (Qstring, Qnumber, Qboolean, Qdate, Qdata)
-       (Qarray, Qdictionary): New variables.
-       (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them.
-       [TARGET_API_MAC_CARBON] (Qutf_8): Add extern.
-       [TARGET_API_MAC_CARBON] (DECODE_UTF_8): New macro.
-       [TARGET_API_MAC_CARBON] (struct cfdict_context): New struct used
-       in callback for CFDictionaryApplyFunction.
-       [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp)
-       (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp)
-       (cfobject_desc_to_lisp, cfdictionary_add_to_list)
-       (cfdictionary_puthash, cfproperty_list_to_lisp): New functions.
-       [TARGET_API_MAC_CARBON] (Fmac_get_preference): New function.
-       (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it.
-       (P, LOOSE_BINDING, SINGLE_COMPONENT, HASHKEY_TERMINAL): New macro.
-       (skip_white_space, parse_comment, parse_include_file)
-       (parse_binding, parse_component, parse_resource_name, parse_value)
-       (parse_resource_line, xrm_create_database, xrm_q_put_resource)
-       (xrm_merge_string_database, xrm_q_get_resource, xrm_get_resource)
-       (xrm_cfproperty_list_to_value, xrm_get_preference_database):
-       New functions.
-
-       * macfns.c (mac_get_rdb_resource): Remove function.
-       (x_get_string_resource): Use xrm_get_resource.
-
-       * macgui.h (XrmDatabase): Typedef to Lisp_Object.
-
-       * macterm.c (x_list_fonts): FONT-LIST-CACHE is now cadr part of
-       name_list_element.
-       (mac_make_rdb): Create resource database from preferences and
-       argument string.
-       (mac_term_init): Save resource database to cddr part of
-       name_list_element.
-
-       * macterm.h (xrm_merge_string_database, xrm_get_resource)
-       (xrm_get_preference_database): Add externs.
-       [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp)
-       (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp)
-       (cfobject_desc_to_lisp, cfproperty_list_to_lisp): Likewise.
-
-       * process.c (init_process): Change `#ifdef DARWIN' to `#if
-       defined (DARWIN) || defined (MAC_OSX)'
-
-       * s/darwin.h (DARWIN): Don't define.
-
-2005-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (Qhyper, Qsuper, Qmeta, Qalt, Qctrl, Qcontrol, Qshift):
-       Remove unused variables.
-       (syms_of_macfns): Don't initialize them.  Likewise for
-       Qface_set_after_frame_default.  Defvar and initialize
-       Vx_window_horizontal_drag_shape.
-       (x_set_mouse_color): Change mouse pointer shape.
-       (mac_window) [!MAC_OSX]: Create root control.
-       (Fx_create_frame): Remove initializations of mouse pointer shapes.
-       (hourglass_started): New function (from xfns.c).
-       (start_hourglass, cancel_hourglass): Put function body in #ifdef
-       MAC_OSX.
-       (show_hourglass) [TARGET_API_MAC_CARBON]: Create progress
-       indicator for each non-tooltip frame if needed, and show it.
-       (hide_hourglass) [TARGET_API_MAC_CARBON]: Hide progress indicators.
-
-       * macgui.h [!TARGET_API_MAC_CARBON]: Include Appearance.h and
-       Controls.h.  Use ThemeCursor instead of CursHandle.
-
-       * macterm.c (activate_scroll_bars, deactivate_scroll_bars):
-       Remove functions and declarations.
-       (mac_set_colors): Take argument for saving background color.
-       All callers changed.
-       (XDrawLine, XClearArea, mac_draw_bitmap, XFillRectangle)
-       (mac_draw_rectangle, mac_draw_string_common): Save and Restore
-       background color.
-       (x_update_end, mac_do_track_drag): Don't reset background color.
-       (mac_define_frame_cursor) [!TARGET_API_MAC_CARBON]:
-       Use SetThemeCursor.
-       (x_set_window_size) [TARGET_API_MAC_CARBON]: Move progress
-       indicator control to the upper-right corner of the window.
-       (arrow_cursor) [!TARGET_API_MAC_CARBON]: Remove variable.
-       (do_init_managers) [!TARGET_API_MAC_CARBON]: Don't initialize it.
-       (do_window_update): Update controls after updating content area.
-       (mac_handle_window_event): Remove unused extern.
-       (XTread_socket): Check both control handle and control part code
-       to determine whether a scroll bar is clicked.  Activate/deactivate
-       root control instead of contained scroll bar controls.
-       (make_mac_terminal_frame): Use ThemeCursor constants.
-
-       * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]:
-       New member hourglass_control.
-       (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): New defines.
-       (activate_scroll_bars, deactivate_scroll_bars): Remove declarations.
-
-2005-03-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (keycode_to_xkeysym_table): Change mapping so that it
-       coincides with that in Apple X11 except `clear', `enter' on
-       laptops, and fn + `enter' on laptops.
-
-2005-03-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xmenu.c (ENCODE_MENU_STRING): Explicitly use string_make_unibyte.
-       (list_of_panes, list_of_items, Fx_popup_menu): Use XCAR/XCDR.
-       (digest_single_submenu, xmenu_show): Use ENCODE_MENU_STRING.
-
-       * xfns.c (xic_defaut_fontset): New constant.
-       (xic_create_fontsetname): New function.
-       Extracted from create_frame_xic.  Try to generate a slightly
-       better fontset.
-       (xic_create_xfontset): Use it.
-       (create_frame_xic): Simplify.
-
-2005-03-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fileio.c (Fmake_symbolic_link): Fix last change.
-
-2005-03-11  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Frename_file, Fadd_name_to_file)
-       (Fmake_symbolic_link): If NEWNAME or LINKNAME is a directory,
-       expand the basename of FILE relative to it.
-
-2005-03-11  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Finsert_file_contents): Call Fcheck_coding_system
-       before calling setup_coding_system so that autoloading of a coding
-       system work.
-
-2005-03-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (hourglass_started): New function.
-
-       * dispextern.h: Declare hourglass_started.
-
-       * keyboard.c (Fexecute_extended_command): Restart hourglass
-       after call to Fcompleting_read if already started.
-
-       * gtkutil.c (xg_update_scrollbar_pos): Call x_sync so that the
-       GTK main loop is entered in xterm.c, thus doing the redraw.
-
-2005-03-10  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (pos_visible_p): Fix X value in last line of buffer.
-
-2005-03-08  Kenichi Handa  <handa@m17n.org>
-
-       * frame.c (x_set_font): Call set_default_ascii_font if an
-       available font is found.
-
-       * fontset.c (set_default_ascii_font): New function.
-       (syms_of_fontset): Don't set FONTSET_ASCII (Vdefault_fontset) here.
-
-       * fontset.h (set_default_ascii_font): Extern it.
-
-2005-03-07  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (CLEAR_IMAGE_CACHE_COUNT): New const.
-       (clear_image_cache_count): New var.
-       (redisplay_internal): Don't clear face and image caches in the
-       middle of redisplay; do it afterwards.
-
-       * blockinput.h (TOTALLY_UNBLOCK_INPUT): Avoid dangling else.
-
-       * xdisp.c (notice_overwritten_cursor): Check that phys_cursor.vpos
-       is valid.  If not, clear phys_cursor_on_p and return.
-
-2005-03-07  Andreas Schwab  <schwab@suse.de>
-
-       * blockinput.h (UNBLOCK_INPUT_TO): Always call UNBLOCK_INPUT.
-
-2005-03-06  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (Ftop_level): Let Fthrow deal with UNBLOCK_INPUT.
-
-       * eval.c (unwind_to_catch): Use UNBLOCK_INPUT_TO.
-       (Feval, Ffuncall): Use CHECK_CONS_LIST.
-
-       * lisp.h (CHECK_CONS_LIST): New macro (two definitions).
-
-       * blockinput.h (UNBLOCK_INPUT_TO): New macro.
-       (TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any.
-
-2005-03-05  Juri Linkov  <juri@jurta.org>
-
-       * emacs.c (USAGE1): Replace Info node name "command arguments"
-       with "emacs invocation".
-       (USAGE3): Fix usage of `--color=MODE' which actually doesn't
-       allow arguments `--color' and `MODE' to be separated by space.
-       Add --no-blinking-cursor, -nbc.
-       (standard_args): Add -nbc, --no-blinking-cursor.
-
-2005-03-04  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * s/vms.h: Define NO_HYPHENS_IN_FILENAMES.
-       * s/vms4-4.h, s/vms5-5.h: Undefine NO_HYPHENS_IN_FILENAMES.
-       * fileio.c (Fexpand_file_name) [VMS]:
-       Use NO_HYPHENS_IN_FILENAMES, not VMS4_4.
-       * doc.c (munge_doc_file_name) [VMS]: Likewise.
-       (Fsnarf_documentation): Call munge_doc_file_name.
-
-2005-03-04  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * s/vms.h (FILE_SYSTEM_CASE): New macro.
-       * fileio.c (Fexpand_file_name) [VMS]: Don't upcase the name
-       "manually"; this is now handled generally via FILE_SYSTEM_CASE.
-
-2005-03-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * emacs.c (main): Change `#ifdef HAVE_CARBON' to `#if
-       defined (MAC_OSX) && defined (HAVE_CARBON)'.
-
-       * image.c [!MAC_OSX && TARGET_API_MAC_CARBON]: Include QuickTime.h.
-
-       * mac.c [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
-       [!MAC_OSX] (select) [TARGET_API_MAC_CARBON]: Use ReceiveNextEvent.
-       (posix_pathname_to_fsspec, fsspec_to_posix_pathname): New functions.
-       (mac_clear_font_name_table): Move extern to macterm.h.
-
-       * macfns.c (install_window_handler): Move extern to macterm.h.
-       (Fx_file_dialog): Check STRINGP (default_filename) to see it is
-       valid.  Don't check !NILP (dir) because it is already checked with
-       CHECK_STRING.
-       (Fx_file_dialog) [!MAC_OSX]: Use FSSpec instead of FSRef for
-       specifying the default location and obtaining the selected filename.
-
-       * macgui.h [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
-
-       * macmenu.c [TARGET_API_MAC_CARBON]: Don't include headers that
-       are included via Carbon.h.
-
-       * macterm.c [TARGET_API_MAC_CARBON && !MAC_OSX]:
-       Define USE_CARBON_EVENTS to 1.
-       (qd) [__MRC__ && TARGET_API_MAC_CARBON]: Don't declare.
-       (x_free_frame_resources): Call remove_window_handler for
-       non-tooltip windows.
-       [TARGET_API_MAC_CARBON]: Don't include headers that are included
-       via Carbon.h.
-       [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP)
-       (mac_do_receive_dragUPP): New variables.
-       (mac_handle_service_event, init_service_handler): Put declarations
-       and definitions in #ifdef MAC_OSX.
-       (install_window_handler) [TARGET_API_MAC_CARBON]: Create UPPs for
-       drag-and-drop handler functions and register them.
-       (remove_window_handler): New function.
-       (do_ae_open_documents, mac_do_receive_drag) [!MAC_OSX]:
-       Use fsspec_to_posix_pathname.
-       (main): Change #if !TARGET_API_MAC_CARBON to #ifdef MAC_OS8.
-       (XTread_socket) [!MAC_OSX]: Don't pass keyboard events to TSM.
-       [MAC_OS8] (make_mac_terminal_frame) [TARGET_API_MAC_CARBON]:
-       Set default cursors.
-       (mac_initialize) [USE_CARBON_EVENTS && !MAC_OSX]: Don't call
-       init_service_handler or init_quit_char_handler.
-       (mac_initialize) [!MAC_OSX]: Don't call MakeMeTheFrontProcess.
-
-       * macterm.h (install_window_handler, remove_window_handler)
-       (posix_pathname_to_fsspec, fsspec_to_posix_pathname)
-       (mac_clear_font_name_table): New externs.
-
-2005-03-03  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * fileio.c (FILE_SYSTEM_CASE): Define macro if not already defined.
-       (Ffile_name_directory): Use FILE_SYSTEM_CASE unconditionally.
-       (Fexpand_file_name): Likewise.
-
-2005-03-03  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs.c (Fkill_emacs): Use EXIT_SUCCESS;
-       no longer special-case VMS.  Add bogus return value.
-
-2005-03-02  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (XASSERTS): Define to 0 if not already defined.
-       (xassert) [!XASSERTS]: Define dummy version.
-
-2005-03-02  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): YABX (yet another bogus xassert).
-       Reported by David Kastrup.
-
-2005-03-01  Ehud Karni  <ehud@unix.mvs.co.il>
-
-       * xdisp.c (get_next_display_element): Fix control and escape
-       glyph from display vector.
-
-2005-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keyboard.c (Fposn_at_x_y): Check integerness of X and Y.
-
-2005-02-27  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (fast_find_position): Rename END to BEG.
-       (syms_of_xdisp) <menu-bar-update-hook>: Doc fix.
-
-2005-02-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_resize_outer_widget): Remove unneeded call to
-       gtk_window_resize and x_wm_set_size_hint.
-
-2005-02-25  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (OVERLAY_STRING_CHUNK_SIZE): Increase from 3 to 16.
-
-       * xdisp.c (init_from_display_pos): Don't read past end of
-       it->overlay_strings array.
-
-2005-02-25  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
-
-       * buffer.c (syms_of_buffer): Fix typo.
-
-2005-02-23  Lute Kamstra  <lute@gnu.org>
-
-       * buffer.c (Foverlay_buffer): Doc fix.
-
-2005-02-22  Kim F. Storm  <storm@cua.dk>
-
-       * minibuf.c (Ftry_completion, Fall_completions): Allow both string
-       and symbol keys in alists and hash tables.
-
-       * xdisp.c (fast_find_position): Fix search for start of overlay.
-
-2005-02-21  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (window_scroll_pixel_based): When scrolling backwards,
-       handle partial visible line at end of window even when we hit PT.
-
-2005-02-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.h: Declare Fcurrent_active_maps, used in doc.c.
-
-2005-02-21  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (move_it_vertically_backward): Eliminate two xasserts.
-       I think those asserts are bogus if buffer contains invisible text
-       or images.
-
-2005-02-21  David Kastrup  <dak@gnu.org>
-
-       * gtkutil.c (xg_create_frame_widgets): UNBLOCK_INPUT on error.
-
-2005-02-20  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (pos_visible_p): Be sure to move to the specified
-       position.  Always get the full ascent / descent of the
-       corresponding row, to return reliable rtop and rbot values.
-       (back_to_previous_visible_line_start): Fix 2005-01-18 change.
-       Must look one character back, as back_to_previous_line_start
-       returns position after the newline.
-       (move_it_vertically_backward): Fix heuristic for when to move further
-       back in case line_height * 2/3 is larger than window height.
-       (cursor_row_fully_visible_p): Rename make_cursor_line_fully_visible_p
-       as it does not do anything anymore.  Add arg current_matrix_p to
-       use current matrix rather than desired matrix when set.
-       (try_cursor_movement): Don't scroll to make cursor row fully
-       visible if cursor didn't move.  This avoids unexpected recentering
-       in case of blinking cursor or accepting process output.
-       Use current matrix to check cursor row visibility.
-       (redisplay_window): Fix whether to recenter or move to top in case
-       cursor line is taller than window height.
-       (find_first_unchanged_at_end_row): Stop search if we reach a row
-       which not enabled (instead of abort).
-
-2005-02-18  Kim F. Storm  <storm@cua.dk>
-
-       * xfaces.c (Finternal_set_lisp_face_attribute): Allow :color property
-       to be nil in a :box attribute value list; customize prints that
-       as lisp value when no box color is specified.
-
-       * .gdbinit (pitx, pit): Pretty print display iterator.
-       (prowx, prow): Pretty print glyph row.
-       (pcursorx, pcursor): Pretty print a window cursor.
-       (pwinx, pwin): Pretty print struct window.
-
-2005-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c (BLOCK_BYTES): Harmless typo.
-
-2005-02-17  Andreas Schwab  <schwab@suse.de>
-
-       * xfns.c (hack_wm_protocols): Use correct type for last parameter
-       of XGetWindowProperty to avoid aliasing issues.
-       (Fx_window_property): Likewise.
-
-       * xselect.c (Fx_disown_selection_internal): Use union of struct
-       input_event and struct selection_input_event to avoid aliasing issues.
-
-       * xterm.c (handle_one_xevent): Use union of struct input_event and
-       struct selection_input_event to avoid aliasing issues.
-       (SET_SAVED_MENU_EVENT): Adapt reference to inev.
-
-2005-02-17  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (enum it_method): New enum.
-       (GET_FROM_*): Its members.
-       (struct it): Change member method from function pointer to enum.
-
-       * xdisp.c (check_it, init_from_display_pos, handle_stop)
-       (setup_for_ellipsis, handle_single_display_spec)
-       (handle_composition_prop, next_overlay_string)
-       (get_overlay_strings, reseat_1, reseat_to_string)
-       (next_element_from_ellipsis, BUFFER_POS_REACHED_P)
-       (in_display_vector_p, display_line, get_next_display_element):
-       Change it->method from function pointer to enum.
-       (get_next_element): New array to map it->method to function.
-       (get_next_display_element): Use it.
-       (set_iterator_to_next): Use switch instead of if/else chain.
-
-2005-02-15  Benjamin Riefenstahl  <Benjamin.Riefenstahl@epost.de>
-
-       * w32select.c: Summary: Thorough rework to implement Unicode
-       clipboard operations and delayed rendering.
-
-       Drop last_clipboard_text and related code, keep track of
-       ownership via clipboard_owner instead.  Drop old #if0 sections.
-
-       (DEFAULT_LCID, ANSICP, OEMCP, QUNICODE, QANSICP, QOEMCP)
-       (clipboard_owner, modifying_clipboard, cfg_coding_system)
-       (cfg_codepage, cfg_lcid, cfg_clipboard_type, current_text)
-       (current_coding_system, current_requires_encoding)
-       (current_num_nls, current_clipboard_type, current_lcid):
-       New static variables.
-
-       (convert_to_handle_as_ascii, convert_to_handle_as_coded)
-       (render, render_all, run_protected, lisp_error_handler)
-       (owner_callback, create_owner, setup_config)
-       (enum_locale_callback, cp_from_locale, coding_from_cp):
-       New local functions.
-
-       (term_w32select, globals_of_w32select): New global functions.
-
-       (Fw32_set_clipboard_data): Ignore parameter FRAME, use
-       clipboard_owner instead.  Use delayed rendering and provide
-       all text formats.  Provide CF_LOCALE if necessary.
-
-       (Fw32_get_clipboard_data): Handle CF_UNICODETEXT and
-       CF_LOCALE.  Fall back to CF_TEXT, if CF_UNICODETEXT is not
-       available.  Force DOS line-ends for decoding.
-
-       (Fx_selection_exists_p): Handle CF_UNICODETEXT.
-
-       (syms_of_w32select): Init and register new variables.
-
-       * w32.h: Add prototypes for globals_of_w32select and
-       term_w32select.  Make the neighboring K&R declarations into
-       prototypes, too.
-
-       * emacs.c: Include w32.h to get function prototypes.
-       (main): Call globals_of_w32select.
-
-       * w32.c (term_ntproc): Call term_w32select.
-
-       * s/ms-w32.h: Guard MSC-specific #pragmas with an #ifdef.
-
-2005-02-16  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (BUFFER_POS_REACHED_P): Return true if pos reached and
-       at end of display vector.
-
-2005-02-15  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (get_next_display_element): Fix escape-glyph criterion
-       for mode and header lines.
-
-       * lread.c (syms_of_lread) <user-init-file>: Doc fix.
-
-       * keymap.h (describe_map_tree): Change decl.
-
-       * keyboard.c (command_loop_1): Always use safe_run_hooks
-       to run Qdeferred_action_function.
-
-       * keymap.c (describe_map_tree): New arg MENTION_SHADOW.  Calls changed.
-       (describe_map, describe_vector): Likewise.  When it's 1,
-       don't omit shadowed bindings, instead mark them as shadowed.
-
-       * doc.c (Fsubstitute_command_keys): Compute list of shadowing maps
-       for describe_map_tree.  Pass 1 for MENTION_SHADOW.
-
-       * data.c (Fsetq_default): Allow no arg case.
-
-2005-02-14  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (encode_coding_string): Always return a unibyte string.
-       If NOCOPY is nonzero and there's no need of encoding, make STR
-       unibyte directly.
-
-       * xselect.c (lisp_data_to_selection_data): If OBJ is a non-ASCII
-       multibyte string, signal an error instead of aborting.
-
-2005-02-12  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * keyboard.c: If HAVE_FCNTL_H include fcntl.h.
-
-2005-02-12  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (expose_window): Don't fix overlaps for mode lines.
-
-2005-02-10  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (try_window_id): Set first_unchanged_at_end_row to NULL
-       if it moves outside window or it doesn't display text.
-
-2005-02-09  Kim F. Storm  <storm@cua.dk>
-
-       * undo.c (Fprimitive_undo): Check that undo function does not
-       switch buffer.
-
-2005-02-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xselect.c (selection_data_to_lisp_data): For the special case
-       type == XA_ATOM, data contains array of int, not array of Atom.
-       (x_property_data_to_lisp, selection_data_to_lisp_data):
-       Comment update: data must be array of int for format == 32.
-
-2005-02-08  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * undo.c (Fprimitive_undo): Check veracity of delta,start,end.
-
-2005-02-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (Fx_change_window_property): Use long array when format is 32.
-       (Fx_window_property): If format is 32 and long is bigger than 32 bits,
-       convert long array returned from XGetWindowProperty to an int array.
-       (x_set_tool_bar_lines): Check that width and height is greater than
-       zero before clearing area.
-
-       * xselect.c (x_reply_selection_request): Pass long array to
-       XChangeProperty so that 64 bit longs are handeled correctly.
-       (x_get_window_property): If format is 32 and long is bigger than 32
-       bits convert data from XGetWindowProperty from long array to int array.
-       (lisp_data_to_selection_data): When the input is a vector and the
-       format is 32, allocate a long array even if long is bigger than 32 bits.
-       (x_fill_property_data): Use char, short and long as the man page
-       for XChangeProperty specifies.  This way the data returned is OK for
-       both 32 and 64 bit machines.
-       (x_handle_dnd_message): Calculate size correctly even for 64 bit
-       machines.
-       (Fx_send_client_event): Undo change from 2005-02-05,
-       x_fill_property_data now handles that case.
-
-       * xfns.c (Fx_backspace_delete_keys_p): Add comment about the
-       reason for the approach in the code.
-
-2005-02-07  Kim F. Storm  <storm@cua.dk>
-
-       * undo.c (Fprimitive_undo): Record max one dummmy apply element.
-
-2005-02-06  Richard M. Stallman  <rms@gnu.org>
-
-       * eval.c (Frun_hook_with_args)
-       (Frun_hook_with_args_until_success)
-       (Frun_hook_with_args_until_failure): Doc fixes.
-
-2005-02-05  Andreas Schwab  <schwab@suse.de>
-
-       * sysdep.c (sys_subshell): Properly terminate execlp argument list.
-
-2005-02-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xselect.c (Fx_send_client_event, x_handle_dnd_message): Handle
-       the longs in a XClientMessageEvent correctly when long is 64 bits.
-
-2005-02-05  Eli Zaretskii  <eliz@gnu.org>
-
-       * xfaces.c (face_color_supported_p): Use HAVE_WINDOW_SYSTEM
-       instead of HAVE_X_WINDOWS, for non-X windowed sessions.
-
-2005-02-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (menubar_selection_callback): Force out GTK buffered
-       events so the menu event comes after them.  This is to prevent sit-for
-       from exiting on buffered events directly after a menu selection,
-       lisp code for Help => About Emacs uses sit-for.
-
-       * gtkutil.c (create_menus): Connect selection-done event instead of
-       the deactivate event to deactivate_cb.  This will make the last
-       leave event come before the call to deactivate_cb, so the leave
-       event does not make sit-for exit after a menu selection.
-
-2005-02-03  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (build_frame_matrix_from_leaf_window)
-        [!GLYPH_DEBUG]: Fix xassert.
-
-       * xfaces.c (x_free_gc) [!GLYPH_DEBUG]: Fix xassert.
-
-       * xfns.c (unwind_create_frame) [!GLYPH_DEBUG]: Fix xassert.
-
-2005-02-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c: Use MAC_OS_X_VERSION_MAX_ALLOWED to conditionalize by
-       the compiling OS version.
-
-       * macfns.c (x_create_tip_frame): Likewise.
-
-       * macterm.c (mac_draw_string_common, x_make_frame_visible): Likewise.
-
-2005-02-03  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.c (x_error_quitter): On GCC 3 and up, specify noinline.
-
-       * xdisp.c (echo_area_display): Clear echo_message_buffer.
-
-       * buffer.c (Fbury_buffer): Doc fix.
-
-2005-02-02  Steven Tamm  <steventamm@mac.com>
-
-       * macfns.c (unwind_create_frame): Fix compile error due to
-       xassert being uncondition, but predicate is.
-       * dispnew.c (update_window): Fix compile error due to
-       xassert being uncondition, but predicate is.
-
-2005-02-02  Miles Bader  <miles@gnu.org>
-
-       * dispextern.h (xassert): Enable unconditionally.
-
-2005-02-02  Kim F. Storm  <storm@cua.dk>
-
-       * undo.c (Fprimitive_undo): Fix dummy apply undo entry.
-
-2005-02-02  Kenichi Handa  <handa@m17n.org>
-
-       * casefiddle.c (casify_object): Enable changing characters of
-       different byte length.
-       (casify_region): Fix loop condition, args to replace_range_2, and
-       update opoint_byte.
-
-       * insdel.c (replace_range_2): Fix bugs in adjusting markers and point.
-
-2005-02-01  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (back_to_previous_visible_line_start): Reset iterator
-       stack before calling handle_display_prop.
-
-2005-01-31  Kim F. Storm  <storm@cua.dk>
-
-       * undo.c (Qapply): New lisp var.
-       (syms_of_undo): Intern and staticpro it.
-       (Fprimitive_undo): Support formats (apply FUNNAME . ARGS) and
-       (apply DELTA BEG END FUNNAME . ARGS) instead of (FUNNAME . ARGS).
-
-       * buffer.c (syms_of_buffer) <buffer-undo-list>: Doc fix.
-
-2005-01-30  Jesper Harder  <harder@phys.au.dk>
-
-       * macterm.c (syms_of_macterm) <mac-reverse-ctrl-meta>
-       <mac-emulate-three-button-mouse>: Fix docstring indentation.
-
-2005-01-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * undo.c (syms_of_undo) <undo-outer-limit>: Doc update.
-       Increase value to 3 Meg.
-
-2005-01-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (show_hourglass): Use FRAME_X_WINDOW as parent for GTK,
-       button events are not received otherwise.
-
-2005-01-29  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer) <buffer-undo-list>: Doc fix.
-
-       * undo.c (Fprimitive_undo): Handle (FUNNAME . ARGS) by calling FUNNAME.
-
-2005-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (access_keymap): YAILOM.
-
-2005-01-27  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_phys_cursor_geometry): New function to calculate
-       phys cursor position and size for hollow cursor.  Position is
-       aligned with get_glyph_string_clip_rect and ensures that a hollow
-       cursor is shown, even when the actual glyph is not visible.
-
-       * dispextern.h (get_phys_cursor_geometry): Add prototype.
-
-       * xterm.c (x_clip_to_row): Ensure y >= 0.
-       (x_draw_hollow_cursor): Use get_phys_cursor_geometry.
-
-       * w32term.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry.
-
-       * macterm.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry.
-
-2005-01-27  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xterm.c (x_error_quitter): Add a prototype.  Make it static again.
-
-2005-01-27  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_glyph_string_clip_rect): Always show a cursor
-       glyph, even when row is only partially visible and actual cursor
-       position is not visible.
-
-2005-01-24  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.c (x_error_quitter): No longer static, and moved after
-       x_error_handler.
-
-2005-01-24  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (move_it_by_lines): If we move forward after going too
-       far back, cancel move if end position is same as start position.
-
-2005-01-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dispextern.h (struct glyph_string): New members clip_head and
-       clip_tail.
-
-       * xdisp.c (get_glyph_string_clip_rect): Restrict horizontal clip
-       region to the area between clip_head and clip_tail.
-       (draw_glyphs): Record the area that need to be actually redrawn to
-       the new variables clip_head and clip_tail when there are
-       overhangs.  Set values of these variables to the corresponding
-       members in struct glyph_string.  Refine x coordinates for
-       notice_overwritten_cursor using clip_head and clip_tail.
-
-       * macgui.h (STORE_XCHARSETSTRUCT): New macro.
-
-       * macterm.c (mac_compute_glyph_string_overhangs): Implement with
-       QDTextBounds.
-       (x_draw_glyph_string): Don't fill the background of the successor
-       of a glyph with a right overhang if the successor will draw a cursor.
-       (XLoadQueryFont): Obtain font metrics using QDTextBounds.
-       (x_redisplay_interface): Add entry for compute_glyph_string_overhangs.
-
-2005-01-24  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (window_scroll_pixel_based): Fix scrolling in the wrong
-       direction if window height was smaller than next-screen-context-lines.
-       Now always scroll at least one line in the requested direction.
-       Ensure that we actually do scroll backwards when requested to do so.
-
-       * xdisp.c (redisplay_window): Only try to make cursor line fully
-       visible once (to avoid redisplay loop).
-
-2005-01-23  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Fpos_visible_in_window_p): Simplify return value for
-       partially visible rows.
-       (window_scroll_pixel_based): Adapt to that change.
-
-       * window.c (window_scroll_pixel_based): Force moving to next line
-       if scrolling doesn't move start point, e.g. if looking at tall image.
-
-       * xdisp.c (pos_visible_p): Return 0 if non-interactive.
-       Clear last_height before calling line_bottom_y to get real height.
-       Fix calculation of y.
-
-2005-01-22  Steven Tamm  <steventamm@mac.com>
-
-       * s/darwin.h: Removed PTY_ITERATION from here.
-       (DARWIN): Define.
-
-       * process.c (init_process): Default process-connection-type to
-       nil on darwin 6 or less, t if it is 7 or higher.  This way the
-       broken pty behavior is still allowed on darwin 6 for interactive
-       processes for people that know what they are doing.
-
-2005-01-22  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (auto_window_vscroll_p): New boolean.
-       (syms_of_window): DEFVAR_BOOL it.
-       (Fpos_visible_in_window_p): Extend return value to include RTOP
-       and RBOT values if FULLY is nil.
-       (window_scroll_pixel_based): Adjust vscroll for partially visible
-       rows if auto_window_vscroll_p is set.
-       (Fset_window_vscroll): Do nothing if vscroll is not modified.
-
-       * xdisp.c (pos_visible_p): Replace FULLY arg by RTOP and RBOT args
-       to return number of partially invisible pixels at top and bottom
-       of the dislay row at POS.
-
-       * lisp.h (pos_visible_p): Fix prototype.
-
-2005-01-21  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Fcopy_file): Doc fix.
-
-2005-01-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_tool_bar_detach_callback): Remove unused variable bw.
-       (xg_get_file_name): Move declaration ofx_use_old_gtk_file_dialog to
-       start of function for older compilers.
-
-2005-01-20  Richard M. Stallman  <rms@gnu.org>
-
-       * editfns.c (Fmessage): If arg is "", return "" (as before).
-
-       * keymap.c (access_keymap): Protect from bad value of meta_prefix_char.
-
-       * .gdbinit (xgetptr, xgetint, xgettype): Copy $arg0 into a temp
-       variable.
-
-2005-01-20  Steven Tamm  <steventamm@mac.com>
-
-       * editfns.c (Voperating_system_release): Add.
-       (init_editfns): Assign new variable operating-system-release
-       based on call to uname if available.
-       (get_operating_system_release): Add function to
-       allow c-level access to operating system release.
-
-       * config.h: Regenerated.
-
-       * s/darwin.h (PTY_ITERATION): Don't allow PTYs on darwin 6 or less.
-       (MIN_PTY_KERNEL_VERSION): Define minimum kernel version for
-       using ptys as '7'.
-
-2005-01-20  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (STRING_MARKED_P, VECTOR_MARKED_P): Return boolean.
-
-       * xterm.c (x_draw_glyph_string_box): Fix last_x for full width rows.
-       Thanks to Chong Yidong <cyd@stupidchicken.com> for debugging this.
-
-       * macterm.c (x_draw_glyph_string_box): Likewise.
-
-       * w32term.c (x_draw_glyph_string_box): Likewise.
-
-       * indent.c (Fvertical_motion): Temporarily disable selective display.
-
-2005-01-19  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Fix :pointer
-       image property.
-
-       * fns.c (sweep_weak_table): Advance prev pointer when we keep a pair.
-
-2005-01-18  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (fast_find_position): Backtrack to find first row if
-       charpos is inside a display overlay that spans multiple lines.
-
-2005-01-18  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (decode_coding_iso2022): Translate invalid codes if
-       translation-table is specified.
-
-2005-01-18  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (back_to_previous_visible_line_start): Undo 2004-12-28
-       change.  If handle_display_prop indicates newline is replaced by
-       image or text, move back to start of relevant overlay or interval
-       and continue scan from there.  Simplify.
-
-2005-01-17  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (mode_line_string, marginal_area_string):
-       Fix off-by-one error in search for glyph.
-
-2005-01-16  Kim F. Storm  <storm@cua.dk>
-
-       * macterm.c (syms_of_macterm) <mac-allow-anti-aliasing>: Doc fix.
-
-2005-01-16  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (mac_to_x_fontname): Remove spurious argument.
-
-2005-01-16  Andreas Schwab  <schwab@suse.de>
-
-       * macterm.c (mac_draw_string_common): Fix compilation on OSX 10.1.
-
-2005-01-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * fringe.c (Fdefine_fringe_bitmap, init_fringe): When assigning
-       fringe_faces, cast result from xmalloc/xrealloc to Lisp_Object *.
-
-2005-01-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * keyboard.c (READABLE_EVENTS_DO_TIMERS_NOW)
-       (READABLE_EVENTS_FILTER_EVENTS, READABLE_EVENTS_IGNORE_SQUEEZABLES):
-       New flags for readable_events.
-       (get_filtered_input_pending, readable_filtered_events): Remove.
-       (tracking_off): Call readable_events and get_input_pending with
-       flag READABLE_EVENTS_DO_TIMERS_NOW.
-       (readable_events): Move code from old readable_filtered_events here,
-       but check new READABLE_EVENTS_* in argument flags instead of previous
-       two boolean arguments do_timers_now and filter_events.
-       If we are doing mouse tracking and the mouse moved, return only if
-       READABLE_EVENTS_IGNORE_SQUEEZABLES is not set in flags.
-       (swallow_events): Call get_input_pending with flag
-       READABLE_EVENTS_DO_TIMERS_NOW.
-       (get_input_pending): Move code from old get_filtered_input_pending
-       here.  Replace boolean arguments do_timers_now, filter_events with
-       flags, and pass flags to readable_events.  Document new
-       READABLE_EVENTS_* flags.
-       (detect_input_pending_ignore_squeezables): New function.
-       (detect_input_pending_run_timers): Call get_input_pending with flag
-       READABLE_EVENTS_DO_TIMERS_NOW.
-       (Finput_pending_p): Call get_input_pending with flags
-       READABLE_EVENTS_DO_TIMERS_NOW and READABLE_EVENTS_FILTER_EVENTS.
-
-       * dispnew.c (update_window, update_frame_1): Replace calls to
-       detect_input_pending with detect_input_pending_ignore_squeezables
-       so that redisplay is not paused if the event queue contains only
-       mouse movements.
-
-       * lisp.h: Declare detect_input_pending_ignore_squeezables.
-
-2005-01-15  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (Vmac_use_core_graphics): Declare variable for
-       mac-allow-anti-aliasing.
-       (syms_of_macterm): DEFVAR_LISP and initialize it.
-       (mac_draw_string_common): Use core graphics text rendering if
-       mac-allow-anti-aliasing is enabled.
-
-       * macfns.c (Fx_file_dialog): Save As dialog includes only the
-       file name in the text box.
-
-2005-01-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (x_set_foreground_color, x_set_background_color):
-       Sync with xfns.c.
-       (mac_window, x_create_tip_frame): Use XSetWindowBackground.
-       * macterm.c (XSetBackground, XSetWindowBackground): New functions.
-       * macterm.h (XSetBackground, XSetWindowBackground): Add externs.
-
-2005-01-14  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (Fposn_at_x_y): Add optional arg WHOLE.
-
-2005-01-13  Richard M. Stallman  <rms@gnu.org>
-
-       * keymap.c (Fcurrent_active_maps): Ignore Voverriding_local_map
-       if Voverriding_terminal_local_map is non-nil.
-
-       * keyboard.c (syms_of_keyboard): Doc fix.
-
-2005-01-13  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (Fformat_mode_line): Fix last change.  Remove NO_PROPS arg
-       (specify 0 for FACE instead).  Reorder arg list.  Doc fix.
-
-2005-01-12  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (Fformat_mode_line): New arg FACE specifies a default
-       face property for characters that don't specify one.
-
-       * fns.c (Frequire): Record in load-history unconditionally.
-
-2005-01-10  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (merge_faces): Rename from merge_into_realized_face.
-
-       * xfaces.c (merge_faces): Rename from merge_into_realized_face.
-       Callers changed.
-       Add support to merge with lisp face id too (if face_name is t).
-
-       * xdisp.c (get_next_display_element, next_element_from_display_vector):
-       Don't lookup lface_id from display table glyphs here; instead use
-       merge_faces to merge the lisp face id into current face.
-
-2005-01-09  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (struct it): New member dpvec_face_id.
-       (merge_into_realized_face): Add prototype.
-
-       * xfaces.c (merge_into_realized_face): New function.  Used to
-       merge escape-glyph face or face from display table into current face.
-
-       * xdisp.c (Vshow_nonbreak_escape): New lisp var.
-       (syms_of_xdisp): DEFVAR_LISP it.
-       (escape_glyph_face): Remove var.
-       (redisplay_window): Don't initialize it.
-       (setup_for_ellipsis, get_next_display_element):
-       Set it->dpvec_face_id to -1.
-       (get_next_display_element): Test Vshow_nonbreak_escape.
-       Do not setup escape_glyph_face.
-       Properly merge escape-glyph face or face from display table with
-       current face for escape and control characters.
-       Set it->dpvec_face_id to relevant face id instead of adding it to each
-       element of display vector.
-       (next_element_from_display_vector): If it->dpvec_face_id is set,
-       use that instead of lface_id from glyph itself.
-
-2005-01-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h (struct x_output): New member, toolbar_detached.
-
-       * gtkutil.c (xg_create_frame_widgets): Set initial tool bar height to
-       38.
-       (xg_tool_bar_detach_callback): Set toolbar_detached to 1.
-       (xg_tool_bar_attach_callback): Set toolbar_detached to 0.
-       (xg_create_tool_bar): Initialize toolbar_detached.
-       (update_frame_tool_bar): Only set FRAME_TOOLBAR_HEIGHT (f) if
-       toolbar_detached is zero.
-
-2005-01-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (create_and_show_popup_menu): Pass zero as button to
-       gtk_menu_popup if not for_click, so callbacks for the menu are called.
-
-       * gtkutil.c (xg_gtk_scroll_destroy, xg_create_scroll_bar)
-       (xg_tool_bar_callback, xg_tool_bar_help_callback)
-       (update_frame_tool_bar): Cast to EMACS_INT to avoid compiler warning.
-
-       * xselect.c (x_get_foreign_selection, x_fill_property_data)
-       (Fx_get_atom_name, Fx_send_client_event): Replace XFLOAT with
-       XFLOAT_DATA to get extract number from Lisp object.
-
-2005-01-07  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (set_iterator_to_next): Fix 2004-12-13 change.
-       Set stop_charpos to current charpos instead of 0.
-
-2005-01-06  Nick Roberts  <nickrob@snap.net.nz>
-
-       * xdisp.c (Fformat_mode_line): First arg now required.
-
-2005-01-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (XLoadQueryFont): Correctly handle 0 size
-       font widths that are returned from some Japanese fonts.
-
-2005-01-06  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (fringe_faces): Change to Lisp_Object pointer.
-       (draw_fringe_bitmap_1): Lookup user defined fringe faces here.
-       (destroy_fringe_bitmap): Set fringe_faces element to nil.
-       (Fdefine_fringe_bitmap, init_fringe): Change allocation of
-       fringe_faces array and init elements to nil.
-       (Fset_fringe_bitmap_face): Set fringe_faces to face name instead of
-       non-persistent face id.
-       (mark_fringe_data): New function for GC.
-
-       * alloc.c (mark_fringe_data): Declare extern.
-       (Fgarbage_collect): Call mark_fringe_data.
-
-       * alloc.c (overrun_check_free): Invalidate freed memory if
-       XMALLOC_CLEAR_FREE_MEMORY is defined.
-
-2005-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c: Include sys/param.h.
-       [TARGET_API_MAC_CARBON] (mac_nav_event_callback): New declaration
-       and function.
-       [TARGET_API_MAC_CARBON] (Fx_file_dialog): Use MAXPATHLEN for size
-       of filename string.  Set event callback function when creating
-       dialog boxes.  Add code conversions for filenames.  Don't dispose
-       of apple event descriptor record if failed to create it.
-
-       * macterm.c: Include sys/param.h.
-       [USE_CARBON_EVENTS] (mac_handle_window_event): Add handler for
-       kEventWindowUpdate.
-       (install_window_handler) [USE_CARBON_EVENTS]: Register it.
-       (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Get FSRef instead
-       of FSSpec from apple event descriptor record.
-       (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Use MAXPATHLEN for
-       size of filename string.
-       [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise.
-       [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Return error when a
-       file dialog is in action.
-       [TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise.
-       Reject only when there are no filename items.  Set background color
-       before (un)highlighting the window below the dragged items.
-       (XTread_socket) [USE_CARBON_EVENTS]: Don't call do_window_update.
-
-2005-01-05  Romain Francoise  <romain@orebokech.com>
-
-       * term.c (encode_terminal_code): Fix buffer size computation.
-
-2005-01-04  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (Fformat_mode_line): Doc fix.
-
-2005-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c (refill_memory_reserve): Move.
-       (emacs_blocked_free, emacs_blocked_malloc, emacs_blocked_realloc)
-       (reset_malloc_hooks, uninterrupt_malloc) [SYNC_INPUT]: Don't define.
-
-2005-01-03  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (window_scroll_pixel_based): Don't correct preserve_y
-       for CURRENT_HEADER_LINE_HEIGHT when moving backwards.
-
-2005-01-03  Jason Rumney  <jasonr@gnu.org>
-
-       * w32bdf.c (w32_load_bdf_font): Set fontp->average_width and
-       fontp->space_width to FONT_WIDTH so they are valid.
-
-       * w32fns.c (w32_load_system_font): Set FONT_WIDTH to maximum, not
-       average width.  Set fontp->average_width and fontp->space_width to
-       their appropriate values.
-
-       * w32term.c (x_new_font): Set FRAME_COLUMN_WIDTH to
-       fontp->average_width, not FONT_WIDTH.  Set FRAME_SPACE_WIDTH to
-       fontp->space_width.
-
-2005-01-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (x_new_font): Set FRAME_SPACE_WIDTH.
-       (x_font_min_bounds, XLoadQueryFont): Use the correct font width
-       metrics for max and min bounds.
-       (x_load_font): Correctly calculate average font width metrics.
-
-2005-01-02  Richard M. Stallman  <rms@gnu.org>
-
-       * alloc.c (Fgarbage_collect): Don't truncate_undo_list on dead buffers.
-
-2004-12-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): Clear area in expose event for GTK.
-
-2004-12-31  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (setup_for_ellipsis, get_next_display_element):
-       Set it->ellipsis_p to 1 or 0.
-       (display_line): Record whether row ends in mid-ellipsis.
-       (set_cursor_from_row): If ends in ellipsis, find start of it.
-       (cursor_row_p): If PT's at the end of the ellipsis the row
-       ends within, don't display cursor on this row.
-
-       * dispextern.h (struct it): New element ellipsis_p.
-       (struct glyph_row): New element ends_in_ellipsis_p.
-
-       * xdisp.c (BUFFER_POS_REACHED_P): We haven't reached the specified
-       position if we're reading from something other than the buffer.
-
-       * window.c (window_scroll_pixel_based): Only look at
-       Vscroll_preserve_screen_position if the old PT can't be kept.
-       (syms_of_window) <scroll-preserve-screen-position>: Doc fix.
-
-2004-12-30  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_line_height_property): New function extracted from
-       original calc_line_height_property.
-       (calc_line_height_property): Rework.  Handle t and (nil . ratio).
-       (x_produce_glyphs): Use them to handle line-height and
-       line-spacing according to new height spec.
-       (Qtotal): Remove.
-       (syms_of_xdisp): Remove intern and staticpro for Qtotal.
-
-2004-12-30  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Finsert_file_contents): Don't use
-       current_buffer->buffer_file_coding_system even if REPLACE is
-       non-nil.  Call Qafter_insert_file_set_coding with the second arg VISIT.
-
-       * fontset.h (struct font_info): New members space_width and
-       average_width.
-
-       * frame.h (struct frame): New member space_width.
-       (FRAME_SPACE_WIDTH): New macro.
-
-       * xterm.h (struct x_display_info): New member Xatom_AVERAGE_WIDTH.
-
-       * xterm.c (x_new_font): Set FRAME_COLUMN_WIDTH to
-       fontp->average_width, not FONT_WIDTH.  Set FRAME_SPACE_WIDTH to
-       fontp->space_width.
-       (x_load_font): Calculate fontp->space_width and fontp->average_width.
-       (x_term_init): Initialize dpyinfo->Xatom_AVERAGE_WIDTH.
-
-       * xdisp.c (x_produce_glyphs): Calculate tab width by
-       FRAME_SPACE_WIDTH, not FRAME_COLUMN_WIDTH.
-
-2004-12-29  Sanghyuk Suh  <han9kin@mac.com>
-
-       * macterm.c (SelectionRange): Add Xcode position apple event struct.
-       (do_ae_open_documents): Handle Xcode-style file position open events.
-
-2004-12-29  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffer.c (syms_of_buffer) <vertical-scroll-bar>: Correct typo.
-
-2004-12-29  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer) <vertical-scroll-bar>: Doc fix.
-
-2004-12-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (install_window_handler): Modify extern to return OSErr
-       value.
-       (mac_window): Handle return value of install_window_handler.
-
-       * macterm.c (reflect_byte): Remove function.
-       (mac_create_bitmap_from_bitmap_data): Don't call reflect_byte.
-       Lookup table instead.
-       (mac_do_font_lists): Simplify calculation of the longest
-       nonspecial string.
-       (init_mac_drag_n_drop): Remove function and declaration.
-       (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call
-       init_mac_drag_n_drop.
-       (mac_do_track_drag): New function and declaration.
-       (install_window_handler): Return OSErr value.
-       (install_window_handler) [TARGET_API_MAC_CARBON]:
-       Register handlers for tracking/receiving drag-and-drop items.
-       (do_ae_open_documents): Generate unibyte strings for filenames.
-       (mac_do_receive_drag) [TARGET_API_MAC_CARBON]: Likewise.
-       Reject only non-filename items.  Set event modifiers, and return value.
-
-2004-12-28  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * coding.c (decode_coding): Fix previous change.
-
-2004-12-28  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (back_to_previous_visible_line_start):
-       Don't call handle_display_prop.
-
-2004-12-28  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * coding.c (decode_coding_XXX, decode_composition_emacs_mule)
-       (decode_coding_emacs_mule, encode_coding_emacs_mule)
-       (decode_coding_iso2022, encode_designation_at_bol)
-       (encode_coding_iso2022, decode_coding_sjis_big5, decode_eol)
-       (decode_coding): Constify arguments and local vars.
-
-2004-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (popup_get_selection): Only pop down dialogs
-       on C-g and Escape.
-       (popup_get_selection): Remove parameter down_on_keypress.
-       (create_and_show_popup_menu, create_and_show_dialog):
-       Remove parameter down_on_keypress to popup_get_selection.
-
-2004-12-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * dispextern.h: Change HAVE_CARBON to MAC_OS.
-       (struct glyph_string): Likewise.
-
-       * emacs.c (main) [MAC_OS8]: Call mac_term_init instead of
-       mac_initialize.
-
-       * fileio.c (Fnext_read_file_uses_dialog_p, Fread_file_name):
-       Change TARGET_API_MAC_CARBON to HAVE_CARBON.
-
-       * fns.c (vector): Change MAC_OSX to MAC_OS.
-
-       * frame.c (x_set_frame_parameters, x_report_frame_params)
-       (x_set_fullscreen): Remove #ifndef HAVE_CARBON.
-       (x_set_border_width, Vdefault_frame_scroll_bars):
-       Change HAVE_CARBON to MAC_OS.
-
-       * image.c [MAC_OS]: Include sys/stat.h.
-       [MAC_OS && !MAC_OSX]: Include sys/param.h, ImageCompression.h, and
-       QuickTimeComponents.h.
-
-       * mac.c [!MAC_OSX] (mac_wait_next_event): Add extern.
-       [!MAC_OSX] (select): Use mac_wait_next_event.
-       [!MAC_OSX] (run_mac_command): Change EXEC_SUFFIXES to Vexec_suffixes.
-       [!MAC_OSX] (select, run_mac_command): Change `#ifdef
-       TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'.
-       (mac_clear_font_name_table): Add extern.
-       (Fmac_clear_font_name_table): New defun.
-       (syms_of_mac): Defsubr it.
-       [MAC_OSX] (SELECT_POLLING_PERIOD_USEC): New define.
-       [MAC_OSX] (select_and_poll_event): New function.
-       [MAC_OSX] (sys_select): Use it.
-       [MAC_OSX && SELECT_USE_CFSOCKET] (socket_callback): New function.
-       [MAC_OSX && SELECT_USE_CFSOCKET]
-       (SELECT_TIMEOUT_THRESHOLD_RUNLOOP, EVENT_CLASS_SOCK): New defines.
-       [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Use CFSocket and
-       RunLoop for simultaneously monitoring two kinds of inputs, window
-       events and process outputs, without periodically polling.
-
-       * macfns.c (mac_initialized): Remove extern.
-       (stricmp): Put in #if 0.  All callers changed to use xstricmp in
-       xfaces.c.
-       (strnicmp): Decrement `n' at the end of each loop, not the beginning.
-       (check_mac): Use the term "Mac native windows" instead of "Mac OS".
-       (check_x_display_info, x_display_info_for_name): Sync with xfns.c.
-       (mac_get_rdb_resource): New function (from w32reg.c).
-       (x_get_string_resource): Use it.
-       (install_window_handler): Add extern.
-       (mac_window): New function.
-       (Fx_create_frame): Use it instead of make_mac_frame.
-       Set parameter for Qfullscreen.  Call x_wm_set_size_hint.
-       (Fx_open_connection, Fx_close_connection): New defuns.
-       (syms_of_macfns): Defsubr them.
-       (x_create_tip_frame) [TARGET_API_MAC_CARBON]:
-       Add kWindowNoUpdatesAttribute to the window attribute.
-       (x_create_tip_frame) [!TARGET_API_MAC_CARBON]: Use NewCWindow.
-       (x_create_tip_frame): Don't call ShowWindow.
-       (Fx_show_tip): Call ShowWindow.
-       (Fx_file_dialog): Change `#ifdef TARGET_API_MAC_CARBON' to `#if
-       TARGET_API_MAC_CARBON'.
-       (mac_frame_parm_handlers): Set handlers for Qfullscreen.
-       (syms_of_macfns) [MAC_OSX]: Initialize mac_in_use to 0.
-
-       * macgui.h [!MAC_OSX]: Don't include Controls.h.  Include Windows.h.
-       (Window): Typedef to WindowPtr and move outside `#if
-       TARGET_API_MAC_CARBON'.
-       (XSizeHints): New struct.
-
-       * macterm.c (x_update_begin, x_update_end)
-       [TARGET_API_MAC_CARBON]: Disable screen updates during update of a
-       frame.
-       (x_draw_glyph_string_background, x_draw_glyph_string_foreground)
-       [MAC_OS8]: Use XDrawImageString/XDrawImageString16.
-       (construct_mouse_click): Put in #if 0.
-       (x_check_fullscreen, x_check_fullscreen_move): Remove decls.
-       (x_scroll_bar_create, x_scroll_bar_handle_click): Change `#ifdef
-       TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'.
-       (activate_scroll_bars, deactivate_scroll_bars)
-       [!TARGET_API_MAC_CARBON]: Use ActivateControl/DeactivateControl.
-       (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Reposition window
-       if the position is neither user-specified nor program-specified.
-       (x_free_frame_resources): Free size_hints.
-       (x_wm_set_size_hint): Allocate size_hints if needed.  Set size_hints.
-       (mac_clear_font_name_table): New function.
-       (mac_do_list_fonts): Initialize font_name_table if needed.
-       (x_list_fonts): Don't initialize font_name_table.  Add BLOCK_INPUT
-       around mac_do_list_fonts.
-       (mac_unload_font): New function.
-       (x_load_font): Add BLOCK_INPUT around XLoadQueryFont.
-       (init_mac_drag_n_drop, mac_do_receive_drag): Enclose declarations
-       and definitions with #if TARGET_API_MAC_CARBON.
-       [USE_CARBON_EVENTS] (mac_handle_window_event): Add decl.
-       (install_window_handler): Add decl.
-       (do_window_update): Add BeginUpdate/EndUpdate for the tooltip
-       window.  Use UpdateControls.  Get the rectangle that should be
-       updated and restrict the target of expose_frame to it.
-       (do_grow_window): Set minimum height/width according to size_hints.
-       (do_grow_window) [TARGET_API_MAC_CARBON]: Use ResizeWindow.
-       (do_zoom_window): Don't use x_set_window_size.
-       [USE_CARBON_EVENTS] (mac_handle_window_event): New function.
-       (install_window_handler): New function.
-       [!USE_CARBON_EVENTS] (mouse_region): New variable.
-       [!USE_CARBON_EVENTS] (mac_wait_next_event): New function.
-       (XTread_socket) [USE_CARBON_EVENTS]: Move call to
-       GetEventDispatcherTarget inside BLOCK_INPUT.
-       (XTread_socket) [!USE_CARBON_EVENTS]: Use mac_wait_next_event.
-       Update mouse_region when mouse is moved.
-       (make_mac_frame): Remove.
-       (make_mac_terminal_frame): Put in #ifdef MAC_OS8.
-       Initialize mouse pointer shapes.  Change values of f->left_pos and
-       f->top_pos.  Don't use make_mac_frame.  Use NewCWindow.
-       Don't call ShowWindow.
-       (mac_initialize_display_info) [MAC_OSX]: Create mac_id_name from
-       Vinvocation_name and Vsystem_name.
-       (mac_make_rdb): New function (from w32term.c).
-       (mac_term_init): Use it.  Add BLOCK_INPUT.  Error if display has
-       already been opened.  Don't pass argument to
-       mac_initialize_display_info.  Don't set dpyinfo->height/width.
-       Add entries to x_display_list and x_display_name_list.
-       (x_delete_display): New function.
-       (mac_initialize): Don't call mac_initialize_display_info.
-       (syms_of_macterm) [!MAC_OSX]: Don't call Fprovide.
-
-       * macterm.h (check_mac): Add extern.
-       (struct mac_output): New member size_hints.
-       (FRAME_SIZE_HINTS): New macro.
-       (mac_unload_font): Add extern.
-
-       * xdisp.c (expose_window, expose_frame): Remove kludges for Mac.
-
-       * xfaces.c (clear_font_table) [MAC_OS]: Call mac_unload_font.
-
-2004-12-27  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (Fbuffer_disable_undo): Delete (move to simple.el).
-       (syms_of_buffer): Don't defsubr it.
-
-       * process.c (list_processes_1): Set undo_list instead
-       of calling Fbuffer_disable_undo.
-
-       * xdisp.c (single_display_spec_string_p): Rename from
-       single_display_prop_string_p.
-       (single_display_spec_intangible_p): Rename from
-       single_display_prop_intangible_p.
-       (handle_single_display_spec): Rename from handle_single_display_prop.
-       Rewritten to be easier to understand.
-
-       Change in load-history format.  Functions now get (defun . NAME),
-       and variables get just NAME.
-
-       * data.c (Fdefalias): Use (defun . FN_NAME) in LOADHIST_ATTACH.
-
-       * eval.c (Fdefun, Fdefmacro): Use (defun . FN_NAME) in LOADHIST_ATTACH.
-       (Fdefvaralias, Fdefvar, Fdefconst): Use just SYM in LOADHIST_ATTACH.
-       (Qdefvar): Var deleted.
-       (syms_of_eval): Don't initialze it.
-
-       * lread.c (syms_of_lread) <load-history>: Doc fix.
-
-2004-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (popup_get_selection): Pop down on C-g.
-       (set_frame_menubar): Install translations for Lucid/Motif/Lesstif that
-       pops down menu on C-g.
-       (xdialog_show): If dialog popped down and no button in the dialog was
-       pushed, call Fsignal to quit.
-       (xmenu_show): In no toolkit version, if menu returns NO_SELECT call
-       Fsignal to quit.
-
-       * xfns.c (Fx_file_dialog): Motif/Lesstif version: Pop down on C-g.
-
-       * gtkutil.c (xg_initialize): Install bindings for C-g so that
-       dialogs and menus pop down.
-
-2004-12-27  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (code_convert_region): Fix calculation of `ratio'.
-
-2004-12-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (update_frame_tool_bar): Make the value of
-       tool-bar-button-margin control margins of images in tool bar.
-
-       * alloc.c (check_depth): New variable.
-       (overrun_check_malloc, overrun_check_realloc): Only add
-       overhead and write check pattern if check_depth is 1 (to handle
-       recursive calls).  Increase/decrease check_depth in entry/exit.
-       (overrun_check_free): Only check for overhead if check_depth is 1.
-       Increase/decrease check_depth in entry/exit.
-
-2004-12-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c (input_available_signal): Call SIGNAL_THREAD_CHECK
-       before touching input_available_clear_time, to avoid accessing it
-       from multiple threads.
-
-2004-12-23  Jason Rumney  <jasonr@gnu.org>
-
-       * image.c (__WIN32__) [HAVE_NTGUI]: Define for correct behaviour
-       of JPEG library.
-
-2004-12-22  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs.c (main): If batch mode, set Vundo_outer_limit to nil.
-
-       * lisp.h (Vundo_outer_limit): Fix decl.
-
-       * undo.c (Vundo_outer_limit): Replaces undo_outer_limit.
-       Uses changed.
-       (syms_of_undo): Initialize appropriately.
-       (truncate_undo_list): If it's nil, there's no limit.
-
-2004-12-22  Kenichi Handa  <handa@m17n.org>
-
-       * xselect.c (Fx_get_cut_buffer_internal): Return a unibyte string.
-
-2004-12-21  Richard M. Stallman  <rms@gnu.org>
-
-       * eval.c (unwind_to_catch): Clear immediate_quit.
-
-       * xdisp.c (get_next_display_element): Display codes 8a0 and 8ad
-       specially as `\ ' and `\-'.
-
-       * keyboard.c (kbd_buffer_store_event_hold):
-       In the code for while-no-input, handle immediate_quit.
-
-       * alloc.c (Fgarbage_collect): Update call to truncate_undo_list.
-       Call that at the very start.
-       (undo_limit, undo_strong_limit, undo_outer_limit): Move to undo.c.
-       (syms_of_alloc): Don't define undo-limit,
-       undo-strong-limit and undo-outer-limit here.
-
-       * undo.c (truncate_undo_list): Return void.
-       Take just one argument, the buffer.
-       Make it current, and inhibit recursive GC.
-       Access and update the undo list directly; return void.
-       Refer to the undo...limit variables directly.
-       Test undo_outer_limit only after counting the whole current command.
-       When it's exceeded, call the function in undo-outer-limit-function.
-       (undo_limit, undo_strong_limit, undo_outer_limit): From alloc.c.
-       (Vundo_outer_limit_function): New variable.
-       (syms_of_undo): Define undo-limit, undo-strong-limit
-       and undo-outer-limit here, and undo-outer-limit-function.
-       Doc fixes.
-
-       * lisp.h (truncate_undo_list): Update decl.
-
-2004-12-21  Piet van Oostrum  <piet@cs.uu.nl>
-
-       * fileio.c (Fread_file_name): Delete duplicates in
-       file-name-history when history_delete_duplicates is true.
-
-2004-12-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_do_list_fonts): Fix memory leak
-
-2004-12-20  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.c (re_match_2_internal) <symend, wordend>:
-       Fix calls to UPDATE_SYNTAX_TABLE_FORWARD.
-
-2004-12-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (endif, x_font_name_to_mac_font_name):
-       Use maccentraleurroman instead of maccentraleuropean
-       (mac_c_string_match, mac_do_list_fonts): Speed up font search by
-       quickly finding a specific font without needing regexps.
-
-2004-12-15  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * syssignal.h: Declare main_thread.
-       (SIGNAL_THREAD_CHECK): New macro.
-
-       * keyboard.c (input_available_signal): Move thread checking code
-       to macro SIGNAL_THREAD_CHECK and call that macro.
-       (interrupt_signal): Call SIGNAL_THREAD_CHECK.
-
-       * alloc.c (uninterrupt_malloc): Move main_thread to emacs.c.
-
-       * emacs.c: Define main_thread.
-       (main): Initialize main_thread.
-       (handle_USR1_signal, handle_USR2_signal, fatal_error_signal)
-       (memory_warning_signal): Call SIGNAL_THREAD_CHECK.
-
-       * floatfns.c (float_error): Call SIGNAL_THREAD_CHECK.
-
-       * dispnew.c (window_change_signal): Call SIGNAL_THREAD_CHECK.
-
-       * sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK.
-
-       * process.c (send_process_trap, sigchld_handler):
-       Call SIGNAL_THREAD_CHECK.
-
-       * data.c (arith_error): Call SIGNAL_THREAD_CHECK.
-
-       * atimer.c (alarm_signal_handler): Call SIGNAL_THREAD_CHECK.
-
-       * xterm.c (xg_scroll_callback): Update XG_LAST_SB_DATA before
-       returning when xg_ignore_gtk_scrollbar is true.
-
-2004-12-14  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (read_char): Save and restore echo_string when
-       handling input method.
-
-2004-12-13  Richard M. Stallman  <rms@gnu.org>
-
-       * eval.c (syms_of_eval) <quit-flag>: Doc fix.
-
-       * keyboard.c (Vthrow_on_input): New variable.
-       (syms_of_keyboard): Defvar and initialize it.
-       (kbd_buffer_store_event_hold): Handle Vthrow_on_input.
-
-       * lisp.h (QUIT): Check for Vthrow_on_input.
-       (Vthrow_on_input): Declare it.
-
-2004-12-13  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (set_iterator_to_next): Reset stop_charpos after display
-       vector.
-
-2004-12-12  Richard M. Stallman  <rms@gnu.org>
-
-       * indent.c (Fvertical_motion): Call move_it_by_lines even if LINES = 0.
-
-       * minibuf.c (Fall_completions): Add var `zero' and use it in loop.
-       (Ftry_completion): Really use outer `zero'; eliminate inner one.
-
-2004-12-12  Kenichi Handa  <handa@m17n.org>
-
-       * term.c (encode_terminal_code): Fix previous change.
-
-2004-12-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keyboard.c (handle_async_input): Remove pthread mutex handling.
-       (input_available_signal): Move pthread thingy to !SYNC_INPUT branch.
-
-       * syntax.c (Fforward_word): Avoid non-idempotent side-effects
-       in macro arguments.
-
-       * minibuf.c (Ftry_completion, Fall_completions): Don't use
-       XFASTINT blindly.
-
-       * emacs.c (main, Fdump_emacs): Don't touch malloc hooks if SYNC_INPUT.
-
-2004-12-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * w32term.c (x_calc_absolute_position): Remove calculation of
-       difference between inner and outer window.  Don't subtract difference
-       for left and top calculations.
-
-       * xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff
-       for left and top calculations.  Remove call to x_real_positions.
-       [Bug report by Drew Adams in November.]
-       (x_check_expected_move): Do not set change_gravity to 1 when calling
-       x_set_offset.
-
-2004-12-08  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (get_next_display_element): Use `escape-glyph' for
-       control chars and escaped octal codes.
-       (Qescape_glyph): New variable.
-       (syms_of_xdisp): Initialize it.
-       (escape_glyph_face): New variable.
-       (redisplay_window): Initialize it.
-
-2004-12-07  Paul Eggert  <eggert@cs.ucla.edu>
-
-       * image.c (our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE)
-       (init_image): Use 1 rather than TRUE.  TRUE's not always defined.
-
-2004-12-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around
-       reset_malloc_hooks.
-
-       * keyboard.c (handle_async_input, input_available_signal):
-       Add ! defined (SYSTEM_MALLOC) around thread code.
-
-       * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC.
-
-2004-12-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * eval.c (init_eval_once): Increase max_specpdl_size to 1000.
-
-       * config.in: Regenerate.
-
-2004-12-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (Fx_popup_menu): Correct documentation about position.
-       (xmenu_show): Do not call XTranslateCoordinates.  Adjust position
-       if not given by a mouse click to correspond with x-popup-menu
-       documentation.
-
-       * config.in: Regenerate.
-
-       * gtkutil.c: Include signal.h and syssignal.h.
-       (xg_get_file_name): Block and unblock __SIGRTMIN if defined.
-
-       * alloc.c: If HAVE_GTK_AND_PTHREAD, include pthread.h,
-       new variables main_thread and alloc_mutex,
-       define (UN)BLOCK_INPUT_ALLOC to use alloc_mutex to protect
-       emacs_blocked_* calls and only do (UN)BLOCK_INPUT in the main thread.
-       If not HAVE_GTK_AND_PTHREAD, (UN)BLOCK_INPUT_ALLOC is the same
-       as (UN)BLOCK_INPUT.
-       (emacs_blocked_free, emacs_blocked_malloc)
-       (emacs_blocked_realloc): Use (UN)BLOCK_INPUT_ALLOC.
-       (uninterrupt_malloc): Initialize main_thread and alloc_mutex.
-       (reset_malloc_hooks): New function.
-
-       * lisp.h: Declare reset_malloc_hooks.
-
-       * emacs.c (Fdump_emacs): Call reset_malloc_hooks.
-
-       * keyboard.c: Conditionally include pthread.h.
-       (handle_async_input, input_available_signalt): If not in the main
-       thread, block signal, send signal to main thread and return.
-
-       * gtkutil.c (xg_get_file_with_chooser): Handle local files only.
-       Set current folder in file chooser if default_filename is a directory.
-
-2004-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * regex.c (GET_UNSIGNED_NUMBER): Signal an error when reaching the end.
-       Remove redundant correctness checks.
-       (regex_compile): Fix up error codes for \{..\} expressions.
-
-2004-12-05  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.c (regex_compile): Fix end-of-pattern case for space.
-
-2004-12-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.h (cfstring_create_with_utf8_cstring): Add prototype.
-       * mac.c (cfstring_create_with_utf8_cstring): Add to prevent
-       crashes with invalid characters.
-       * macmenu.c (add_menu_item): Use it.
-       * image.c (image_load_quartz2d): Likewise.
-       * macfns.c (x_set_name, x_set_title): Likewise.
-       (Fx_file_dialog): Likewise.  Use constant CFRefs instead of
-       creating them each time for labels.
-
-2004-12-02  Richard M. Stallman  <rms@gnu.org>
-
-       * config.in (RE_TRANSLATE_P): If make_number is not a macro,
-       don't use it here.
-
-       * eval.c (Fcalled_interactively_p): Don't check INTERACTIVE.
-       (interactive_p): Skip Scalled_interactively_p frames
-       like Sinteractive_p frames.
-       (unwind_to_catch): Clear handling_signal.
-
-       * data.c (Fmake_variable_buffer_local): Doc fix.
-       (Fmake_local_variable): Doc fix.
-
-       * insdel.c (insert_from_string_before_markers)
-       (insert_from_string): Don't modify buffer on empty insertion.
-
-       * window.c (Fget_lru_window, Fget_largest_window): Doc fixes.
-
-2004-12-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (add_menu_item): Fallback on MacRoman if encoding
-       menu text as UTF8 fails.
-
-2004-12-01  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c: Add commentary for last change.
-       (XMALLOC_PUT_SIZE, XMALLOC_GET_SIZE): New macros to handle
-       sizeof(size_t) != 4.
-       (overrun_check_malloc, overrun_check_realloc, overrun_check_free):
-       Use them.  Also clear header and trailer of freed memory.
-       (GC_STRING_OVERRUN_COOKIE_SIZE): Rename from GC_STRING_EXTRA.
-       (string_overrun_cookie): Rename from string_overrun_pattern.
-       (GC_STRING_EXTRA): Define from GC_STRING_OVERRUN_COOKIE_SIZE.
-
-2004-12-01  Andreas Schwab  <schwab@suse.de>
-
-       * lisp.h: Declare string_to_multibyte.
-
-2004-12-01  Kenichi Handa  <handa@m17n.org>
-
-       * w32console.c (w32con_write_glyphs): Decide coding here.
-       Adjusted for the change of encode_terminal_code.
-
-       * term.c (encode_terminal_code): Don't make it "static".
-
-2004-11-30  Kenichi Handa  <handa@m17n.org>
-
-       * term.c (encode_terminal_buf, encode_terminal_bufsize): New variables.
-       (encode_terminal_code): Argument changed.  Encode all
-       characters at once, and return a pointer to the result of encoding.
-       (write_glyphs): Decide coding here.  Adjusted for the above change.
-       (insert_glyphs): Likewise.
-       (term_init): Initialize encode_terminal_bufsize to 0.
-
-       * coding.c (Vcode_conversion_workbuf_name): New variable.
-       (syms_of_coding): Initialize and staticpro it.
-       (set_conversion_work_buffer): New function.
-       (run_pre_post_conversion_on_str): Use it.
-       (run_pre_write_conversin_on_c_str): New function.
-
-       * coding.h (run_pre_write_conversin_on_c_str): Extern it.
-
-2004-11-30  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * keyboard.c: Don't undef SIGIO
-       * s/darwin.h (NO_SOCK_SIGIO): Define NO_SOCK_SIGIO on carbon
-       * Makefile.in (mac.o): Depend on blockinput.h and atimer.h.
-       (macfns.o): Don't depend on ccl.h.
-       * macfns.c (mac_frame_parm_handlers): Set handlers for
-       Qleft_fringe and Qright_fringe.
-       * macterm.c (mac_fill_rectangle_to_pixmap)
-       (mac_draw_rectangle_to_pixmap, mac_copy_area_to_pixmap)
-       (mac_copy_area_with_mask_to_pixmap, x_draw_image_foreground_1):
-       Put in #if 0.
-       (mac_scroll_area) [TARGET_API_MAC_CARBON]: Use ScrollWindowRect.
-       (x_flush) [TARGET_API_MAC_CARBON]: Don't traverse frames.
-       (XFlush) [TARGET_API_MAC_CARBON]: Define to an empty replacement.
-       (x_draw_glyph_string_background, x_draw_glyph_string_foreground)
-       [!MAC_OS8]: Added ifdef'd out code for os8.  Don't use
-       XDrawImageString.  Always draw background and foreground separately.
-       (x_draw_image_foreground): Use clipping instead of computing the
-       intersection rectangle.
-       (x_draw_image_glyph_string): Don't draw an image with mask to a
-       pixmap.
-       (x_redisplay_interface): Set flush_display_optional member to 0.
-       (XTread_socket): Correctly reset the TEConverter
-       object.
-
-2004-11-30  Kim F. Storm  <storm@cua.dk>
-
-       * lisp.h: New defines to enable buffer overrun checking.
-       (GC_CHECK_STRING_OVERRUN, GC_CHECK_STRING_FREE_LIST)
-       (XMALLOC_OVERRUN_CHECK, GC_CHECK_CONS_LIST): Add.
-
-       * alloc.c: Add more checks for buffer overruns.
-       (XMALLOC_OVERRUN_CHECK_SIZE, xmalloc_overrun_check_header)
-       xmalloc_overrun_check_trailer, overrun_check_malloc)
-       overrun_check_realloc, overrun_check_free): Add.
-       (GC_STRING_EXTRA, string_overrun_pattern): Add.
-       (check_sblock, allocate_string_data, compact_small_strings):
-       Set and check string_overrun_pattern if GC_CHECK_STRING_OVERRUN.
-       (check_cons_list): Condition on GC_CHECK_CONS_LIST.
-       (check_string_free_list): Add.
-       (allocate_string, sweep_strings): Call check_string_free_list.
-
-       * emacs.c (malloc_initialize_hook): Don't free malloc_state_ptr if
-       XMALLOC_OVERRUN_CHECK to avoid crash during load.
-
-2004-11-29  Kim F. Storm  <storm@cua.dk>
-
-       * fns.c (concat): Use SAFE_ALLOCA.
-
-2004-11-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * sysdep.c (emacs_write): Don't use QUIT.
-
-2004-11-29  Kenichi Handa  <handa@m17n.org>
-
-       * buffer.c (init_buffer): Set current_buffer->directory to a
-       multibyte string made by string_to_multibyte.
-
-       * emacs.c (init_cmdargs): Set unibyte strings in Vcommand_line_args.
-
-2004-11-27  Andreas Schwab  <schwab@suse.de>
-
-       * alloc.c (mark_stack): Call GC_MARK_SECONDARY_STACK if defined.
-
-       * s/gnu-linux.h: Enable no-op gcpros on ia64.
-       (GC_MARK_SECONDARY_STACK) [__ia64__]: Define.
-
-       * filelock.c (lock_file_1): Call get_boot_time early.
-       Increase buffer size.
-
-2004-11-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * lisp.h (DECL_ALIGN): Define non-trivially only if NO_DECL_ALIGN
-       is not defined.
-
-2004-11-27  Kim F. Storm  <storm@cua.dk>
-
-       * search.c (syms_of_search) <search-spaces-regexp>: Move 'doc:'
-       marker out of doc string.
-
-2004-11-26  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * s/darwin.h (POSIX_SIGNALS): Undo the removal of 2002-08-25,
-       which was not mentioned in the log.
-
-2004-11-26  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (update_window_fringes): Prefer truncation bitmaps over
-       angle bitmaps at top/bottom line.
-
-       * xdisp.c: Undo recent changes for restoring saved_face_id.  Instead,
-       set it when it->method is set to next_element_from_display_vector.
-       (setup_for_ellipsis): Add LEN argument.  Callers changed.
-       Set it->saved_face_id.
-       (get_next_display_element): Use loop instead of recursion.
-       Set it->saved_face_id.  Combine duplicate code for ctr chars.
-       (next_element_from_display_vector): Do not set it->saved_face_id.
-       (next_element_from_ellipsis): Use setup_for_ellipsis.
-
-2004-11-26  Eli Zaretskii  <eliz@gnu.org>
-
-       * eval.c (Fdefvar): Declare pdl from last change as `volatile' to
-       prevent compiler warnings.
-
-2004-11-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keyboard.c (command_loop_1): Print a message describing the key
-       the user just pressed when this key has no binding.
-
-       * sysdep.c (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
-       (emacs_open, emacs_read, emacs_write): Check QUIT when interrupted.
-
-       * lread.c (readchar): Check QUIT when `getc' is interrupted.
-
-2004-11-24  Richard M. Stallman  <rms@gnu.org>
-
-       * coding.c (run_pre_post_conversion_on_str): Bind Qinhibit_read_only.
-
-       * buffer.c (syms_of_buffer) <indicate-buffer-boundaries>: Doc fix.
-
-2004-11-24  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (move_it_in_display_line_to, display_line):
-       Restore saved_face_id also when truncate-lines or hscrolled.
-
-2004-11-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_file_name): Rename use-old-gtk-file-dialog to
-       x-use-old-gtk-file-dialog.
-
-       * xfns.c: Define x_use_old_gtk_file_dialog.
-       (syms_of_xfns): Rename use-old-gtk-file-dialog to x-...  Move it
-       outside ifdef USE_GTK.
-
-2004-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * coding.h (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
-       Don't use XFASTINT blindly.
-
-       * config.in (RE_TRANSLATE_P): Don't use XFASTINT blindly.
-
-       * indent.c (skip_invisible): Avoid non-idempotent side-effects
-       in macro arguments.
-
-       * keymap.c (Flookup_key): Check INTEGERP before XINT.
-
-       * lread.c (oblookup): Don't use XFASTINT blindly.
-
-       * window.c (Fset_window_scroll_bars): Don't use XINT if it isn't int.
-       (decode_next_window_args, window_loop): Don't use XFASTINT blindly.
-
-2004-11-23  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P)
-       (MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P): Not if dpvec_index is zero.
-
-       * xfaces.c (lookup_named_face): Add signal_p arg.  Return -1 if
-       signal_p is zero and face name is unknown.
-       (Fx_list_fonts): Don't signal error in lookup_named_face.
-       (Fface_font): Signal error in lookup_named_face.
-       (ascii_face_of_lisp_face): Likewise.
-
-       * dispextern.h (lookup_named_face): Fix prototype.
-
-       * xdisp.c (handle_single_display_prop): Don't signal error in
-       lookup_named_face for unknown fringe face name.
-       (highlight_trailing_whitespace): Don't signal error in
-       lookup_named_face if trailing-whitespace face unknown.
-       (calc_line_height_property): Don't signal error in
-       lookup_named_face if specified face name is unknown.
-
-       * fringe.c (update_window_fringes): Show top row indicator if
-       window has header-line.  Don't show arrow at bob and eob
-       if the boundary indicators are not used.
-       (Fset_fringe_bitmap_face): Signal error in lookup_named_face.
-
-       * window.c (set_window_buffer): Clear display_error_modiff.
-
-2004-11-22  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (update_window_fringes): Provide sensible fall-back
-       value for non-nil indicate-buffer-boundaries setting.
-
-2004-11-22  Markus Rost  <rost@ias.edu>
-
-       * minibuf.c (Fminibuffer_complete_and_exit): Fix previous change.
-
-2004-11-22  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * eval.c (Fdefvar): Warn when var is let-bound but globally void.
-
-2004-11-21  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (erase_phys_cursor): Clear hollow cursor inside TEXT_AREA.
-
-       * xterm.c (x_clip_to_row): Add area arg.  Callers changed.
-       (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA.
-
-       * w32term.c (w32_clip_to_row): Add area arg.  Callers changed.
-       (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA.
-
-       * macterm.c (x_clip_to_row): Add area arg.  Callers changed.
-       (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA.
-
-       * xdisp.c (move_it_in_display_line_to, display_line):
-       Restore saved_face_id if overflow-newline-into-fringe is enabled and
-       line is continued before or in middle of element from display vector.
-
-       * indent.c (Fvertical_motion): Fix last change.  Use another
-       method to detect if iterator moved too far ahead after reseat.
-
-       * xdisp.c (IT_EXPAND_MATRIX_WIDTH): New macro.  Do not
-       expand matrix width for overflow in zero-width area.
-       (append_glyph, append_composite_glyph, produce_image_glyph)
-       (append_stretch_glyph): Use it to avoid loop in redisplay.
-       (note_mode_line_or_margin_highlight): Don't let help-echo from
-       string override help-echo from image map.
-
-2004-11-20  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fns.c (Fyes_or_no_p): Call Fread_from_minibuffer with extra argument.
-       * callint.c (Fcall_interactively): Ditto.
-
-2004-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * minibuf.c (Fminibuffer_complete_and_exit):
-       Fixup the case of the completed value, for case-indep completion.
-
-2004-11-20  Richard M. Stallman  <rms@gnu.org>
-
-       * lisp.h (Fread_from_minibuffer): Add arg in decl.
-
-       * minibuf.c (read_minibuf): New arg KEEP_ALL.  Callers changed.
-       (Fread_from_minibuffer): New arg KEEP_ALL.  Callers changed.
-
-       * search.c (Vsearch_spaces_regexp):
-       Rename from Vsearch_whitespace_regexp.  All uses changed.
-
-2004-11-20  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * eval.c (init_eval_once): Increase `max_specpdl_size' to 650.
-
-2004-11-19  Richard M. Stallman  <rms@gnu.org>
-
-       * search.c (Vsearch_whitespace_regexp): New variable.
-       (syms_of_search): Defvar it.
-       (compile_pattern_1): Call re_set_whitespace_regexp with it.
-       (search_buffer): No regexp is trivial if Vsearch_whitespace_regexp
-       is non-nil.
-       (struct regexp_cache): New element whitespace_regexp.
-       (syms_of_search): Initialize whitespace_regexp elements.
-       (compile_pattern): Compare whitespace_regexp elements.
-       (compile_pattern_1): Set whitespace_regexp elements.
-
-       * regex.c (regex_compile): Substitute whitespace_regexp
-       for spaces, if it is nonzero.
-       (whitespace_regexp): New variable.
-       (re_set_whitespace_regexp): New function.
-
-2004-11-19  Kim F. Storm  <storm@cua.dk>
-
-       * indent.c (Fvertical_motion): Fix last change.
-
-2004-11-18  Kim F. Storm  <storm@cua.dk>
-
-       * indent.c (Fvertical_motion): Undo 2004-11-16 change.
-       Instead, move back again if reseating moves too far ahead.
-
-2004-11-17  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * xdisp.c (message3): Call clear_message.
-
-2004-11-17  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (erase_phys_cursor): Adjust cursor row visible height.
-
-2004-11-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_file_name): Typo in HAVE_GTK_FILE_SELECTION_NEW.
-
-       * xmenu.c (x_menu_in_use): Remove.
-       (x_menu_set_in_use): Also set popup_activated_flag.
-
-       * xfns.c (Fx_file_dialog): Call popup_activated instead of
-       x_menu_in_use.  Call x_menu_set_in_use in Motif version also.
-
-       * xterm.h (x_menu_in_use): Remove.
-
-2004-11-16  Richard M. Stallman  <rms@gnu.org>
-
-       * keymap.c (Fmap_keymap): New arg SORT-FIRST.
-       Use map-keymap-internal to implement that.
-
-       * indent.c (Fvertical_motion): In batch mode, use vmotion directly.
-
-2004-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xdisp.c (get_glyph_string_clip_rect, init_glyph_string): Check it's
-       a window before using XWINDOW.
-
-       * window.c (make_window, Fselect_window, make_dummy_parent)
-       (save_window_save):
-       * frame.c (make_frame):
-       * fns.c (concat): Avoid side-effects inside XSETFASTINT's arguments.
-
-       * lisp.h (NILP): Use EQ rather than XFASTINT.
-
-2004-11-16  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (Fdefine_fringe_bitmap): Always set 'h'.  Simplify.
-
-       * indent.c (Fvertical_motion): Fix last change.  Only reseat when
-       moving backwards.
-
-2004-11-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * dispextern.h: Extern reseat_at_previous_visible_line_start.
-
-2004-11-16  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (display_mode_element): Fix previous change (calculate
-       end position of substring to display correctly).
-
-2004-11-16  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (Fposn_at_point): Remove extra */ after doc string.
-       Reported by Andrew M. Scott.
-
-2004-11-15  Kim F. Storm  <storm@cua.dk>
-
-       * fns.c (Fsafe_plist_get): New defun.
-       (syms_of_fns): Defsubr it.
-
-       * lisp.h (Fsafe_plist_get): Add EXFUN.
-
-       * xdisp.c (store_mode_line_string, produce_stretch_glyph):
-       Use Fsafe_plist_get.
-       (note_mode_line_or_margin_highlight, note_mouse_highlight):
-       Fix image map element parsing.  Use Fsafe_plist_get.
-
-2004-11-15  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (get_next_display_element): Fix previous change.
-
-2004-11-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * window.c (shrink_windows): Handle special case of one window left
-       when trying to shrink the final reminder.  Grow windows if
-       total_removed is less than total_shrink.
-
-       * xmenu.c (pop_down_menu): Remove global variable current_menu,
-       extract pointer from arg with XSAVE_VALUE.
-       (create_and_show_popup_menu, create_and_show_dialog, xmenu_show):
-       Construct arg to record_unwind_protect with make_save_value.
-
-2004-11-13  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (reseat_at_previous_visible_line_start): No longer static.
-       (get_next_display_element): Fix previous change to apply only to \n.
-
-       * indent.c (Fvertical_motion): Scan to PT from start of line to
-       make iterator consistent.
-
-       * minibuf.c (syms_of_minibuf) <completion-ignore-case>: Doc fix.
-
-2004-11-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (pop_down_file_dialog): Add BLOCK_INPUT.
-
-       * xfns.c (Fx_file_dialog): Call x_menu_in_use and x_menu_set_in_use.
-       Record unwind with clean_up_file_dialog.
-
-       * xterm.h (x_menu_in_use, x_menu_set_in_use, x_menu_wait_for_event):
-       Declare.
-
-       * xmenu.c (x_menu_in_use, x_menu_set_in_use): New functions.
-
-2004-11-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_file_sel_ok, xg_file_sel_cancel)
-       (xg_file_sel_destroy): Remove.
-       (xg_file_response_cb, pop_down_file_dialog)
-       (xg_get_file_name_from_chooser, xg_get_file_name_from_selector):
-       New functions.
-       (xg_get_file_with_chooser, xg_get_file_with_selection):
-       Take new arg func, set it to xg_get_file_name_from_chooser/selector.
-       Move common code to xg_get_file_name.  Return widget created.
-       (xg_get_file_name): Set name, transient for, modal and destroy
-       with parent here.  Connect response signal to xg_file_response_cb,
-       connect delete-event to gtk_true.  Record pop_down_file_dialog
-       for unwind.  Do event loop and call x_menu_wait_for_event in loop.
-       (xg_create_widget): Make dialogs modal.
-
-       * xmenu.c (unuse_menu_items, pop_down_menu): Arg is of type
-       Lisp_Object.
-       (popup_get_selection): Move unwind protect ...
-       (create_and_show_popup_menu, create_and_show_dialog): ... to here.
-       Move destroy of widget to pop_down_menu.
-       (popup_widget_loop): Move unwind protect ...
-       (create_and_show_popup_menu, create_and_show_dialog): ... to here.
-       Move destroy of widget to pop_down_menu.
-       (pop_down_menu): BLOCK_INPUT and destroy widget/window.
-       (xmenu_show): Record unwind pop_down_menu.  Move XMenuDestroy,
-       x_mouse_leave and grabbed = 0 to pop_down_menu.
-
-2004-11-13  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (make_cursor_line_fully_visible_p): New variable.
-       (syms_of_xdisp): DEFVAR_BOOL it.
-       (make_cursor_line_fully_visible, try_cursor_movement)
-       (try_window_id): Use it.
-
-2004-11-12  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (struct glyph_row): New member extra_line_spacing.
-       (struct it): New member max_extra_line_spacing.
-       (MR_PARTIALLY_VISIBLE, MR_PARTIALLY_VISIBLE_AT_TOP)
-       (MR_PARTIALLY_VISIBLE_AT_BOTTOM): New helper macros.
-       (MATRIX_ROW_PARTIALLY_VISIBLE_P): Fix to return false if invisible
-       part of last line is only extra line spacing (so the text on the
-       line is fully visible).  Use helper macros.
-       Add W arg (to use them).  All callers changed.
-       (MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P)
-       (MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P): Use helper macros.
-
-       * window.c (window_scroll_pixel_based, Frecenter):
-       Use move_it_vertically_backward directly.
-       (Frecenter): Fix calculation of new start pos for negative arg.
-       Before, the new start pos was sometimes chosen too far back, so
-       the last line became only partially visible, and thus would be
-       either only semi-visible or automatically scrolled to the middle
-       of the window by redisplay.
-
-       * xdisp.c (init_iterator): Clear it.max_extra_line_spacing.
-       (move_it_vertically_backward): Don't recure to move further back.
-       (move_it_vertically): Remove superfluous condition.
-       (move_it_by_lines): Clear last_height when moved 0 lines.
-       (resize_mini_window): Use it.max_extra_line_spacing.
-       (display_tool_bar_line): Clear row->extra_line_spacing.
-       (try_scrolling): Use move_it_vertically_backward directly.
-       (redisplay_window): Likewise.
-       (compute_line_metrics): Set row->extra_line_spacing.
-       (display_line, display_string): Likewise.
-       (x_produce_glyphs): Update it->max_extra_line_spacing.
-
-       * xmenu.c (pop_down_menu): Return nil.
-
-2004-11-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (x_menu_wait_for_event): New function.
-       (popup_get_selection, popup_widget_loop): Call x_menu_wait_for_event
-       to handle timers.
-       (popup_widget_loop): Add argument do_timers.
-       (create_and_show_popup_menu, create_and_show_dialog): Pass 1 for
-       do_timers to popup_widget_loop.
-       (xmenu_show): Call XMenuActivateSetWaitFunction so that
-       x_menu_wait_for_event is called by XMenuActivate.
-       (create_and_show_popup_menu): Pass 1 for do_timers to
-       popup_get_selection.
-       (pop_down_menu): New function.
-       (popup_get_selection, popup_widget_loop): Unwind protect to
-       pop_down_menu.
-       (popup_widget_loop): Add argument widget.
-       (create_and_show_popup_menu, create_and_show_dialog): Pass new
-       argument widget to popup_widget_loop.
-
-2004-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (Fkeymap_prompt): Accept symbol keymaps.
-
-2004-11-09  Kim F. Storm  <storm@cua.dk>
-
-       * xselect.c: Include <sys/types.h> and <unistd.h> (for getpid).
-       Fix various comments referring to XEvents instead of input events.
-       (x_queue_event): Fix format strings.
-       (x_stop_queuing_selection_requests): Likewise.
-
-       * xdisp.c (produce_image_glyph): Remove unused variable 'face_ascent'.
-       (pint2hrstr): Add extra braces to silence compiler.
-
-       * print.c (print_object): Fix format string.
-
-       * lread.c (read1): Fix next_char matching.
-
-       * lisp.h (Fdelete): Add EXFUN.
-       (replace_range_2): Add prototype.
-
-       * keyboard.c (read_avail_input): Remove unused variable 'discard'.
-
-       * intervals.h (NULL_INTERVAL_P): Add separate version when
-       ENABLE_CHECKING is not defined to silence compiler.
-       (compare_string_intervals): Add prototype.
-
-       * fringe.c (destroy_fringe_bitmap): Fix return type.
-       (Ffringe_bitmaps_at_pos): Remove unused var 'old_buffer'.
-
-       * emacs.c (Fdump_emacs): Fix format string.
-
-       * doc.c: Include <ctype.h>.
-       (Fsubstitute_command_keys): Remove unused variable 'firstkey'.
-
-       * data.c (store_symval_forwarding): Remove unused variables.
-
-       * callint.c (Fcall_interactively): Remove unused variable 'funcar'.
-
-2004-11-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * Makefile.in (stamp-oldxmenu): If HAVE_GTK, don't add dependencies
-       to ${OLDXMENU}.
-
-2004-11-09  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fmake_network_process): Remove kludge for interrupted
-       connects on BSD.  If connect is interrupted, just close socket and
-       start over rather than sleeping and retry with same socket.
-
-2004-11-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * .cvsignore: Add buildobj.lst.
-
-       * doc.c: New variable Vbuild_files.
-       (Fsnarf_documentation): If Vbuild_files is nil, populate it with
-       file names from buildobj.lst.  Only attach docstrings from files
-       that are in Vbuild_files.
-       (syms_of_doc): Defvar Vbuild_files.
-
-       * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o
-       and w32*.o.
-       (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked.
-       (mostlyclean): Rm buildobj.lst
-
-       * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs
-       is linked.
-
-2004-11-09  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (update_window_fringes): Update fringe bitmaps if
-       cur and row ends_at_zv_p differs.  If bitmaps of a row is updated,
-       also update previous row to get rid of misc. artifacts.
-
-2004-11-08  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (fast_find_position): Fix start pos if header line present.
-       (note_mouse_highlight): Clear mouse face if we move out of text area.
-
-2004-11-08  Eli Zaretskii  <eliz@gnu.org>
-
-       * editfns.c: Move #include "systime.h" before <sys/resource.h>.
-       Don't include <sys/time.h> explicitly.
-       Include <stdio.h> unconditionally, not just on MacOS.
-
-2004-11-08  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (fontset_pattern_regexp): Cancel my previous change;
-       don't pay attention to '\' before '*'.
-       (fontset_pattern_regexp): Change the meaning of the second arg.
-       (Fnew_fontset): Call fs_query_fontset, not Fquery_fontset.
-       (check_fontset_name): Try NAME as literal at first, and if it
-       failes, try NAME as pattern.
-
-2004-11-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * emacs.c (Fdump_emacs): Only output warning on GNU/Linux.
-
-2004-11-07  Andreas Schwab  <schwab@suse.de>
-
-       * lisp.h (Fmsdos_downcase_filename): Declare.
-       * dired.c (Fmsdos_downcase_filename): Don't declare here.
-       * fileio.c: Likewise.
-
-2004-11-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * dosfns.c (Fdos_memget, Fdos_memput): Use integer variable offs in
-       comparisons with integers instead of Lisp_Object address.
-       (Fmsdos_set_keyboard): Declare argument allkeys.
-
-       * msdos.c (IT_set_frame_parameters): Use EQ, not ==, for Lisp_Object:s.
-
-       * dired.c (Fmsdos_downcase_filename): Declare extern on MSDOS to avoid
-       int/Lisp_Object mixup.
-
-       * fileio.c: Ditto.
-
-2004-11-06  Steven Tamm  <steventamm@mac.com>
-
-       * editfns.c: Need to include sys/time.h before resource.h on darwin.
-
-2004-11-06  Richard M. Stallman  <rms@gnu.org>
-
-       * callint.c (Fcall_interactively): Avoid reusing EVENT for other data.
-
-       * xfaces.c (merge_named_face): GCPRO the face_name in the
-       named_merge_point struct that we make.
-       (merge_face_heights): Eliminate GCPRO arg.  All callers changed.
-
-       * keyboard.c (command_loop_1): Change Vtransient_mark_mode
-       before deciding whether to inactivate mark.
-
-2004-11-06  Lars Brinkhoff  <lars@nocrew.org>
-
-       * config.in: Regenerate (add HAVE_GETRUSAGE).
-       * editfns.c (Fget_internal_run_time): New function.
-       (syms_of_data): Defsubr it.
-       * fns.c (sxhash): As far as possible, merge calculation of
-       hash code for symbols and strings.
-
-2004-11-06  Eli Zaretskii  <eliz@gnu.org>
-
-       * frame.c (syms_of_frame): Fix the example in the doc string.
-
-2004-11-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * eval.c (Feval): Remove check for INPUT_BLOCKED_P.
-
-       * xmenu.c (popup_get_selection, create_and_show_popup_menu)
-       (create_and_show_dialog): Revert change from 2004-10-31.
-
-2004-11-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * macros.c (syms_of_macros) <defining-kbd-macro>: Doc fix.
-
-2004-11-05  Kim F. Storm  <storm@cua.dk>
-
-       * print.c (print_object): Print Lisp_Misc_Save_Value objects.
-
-       * fileio.c (Ffile_modes): Doc fix.
-       (auto_save_1): Check for Ffile_modes nil value.
-
-2004-11-05  Kim F. Storm  <storm@cua.dk>
-
-       * xselect.c (struct selection_event_queue, selection_queue)
-       (x_queue_selection_requests, x_queue_event)
-       (x_start_queuing_selection_requests)
-       (x_stop_queuing_selection_requests): Add new queue for selection
-       input events to replace previous XEvent queue in xterm.c.
-       (queue_selection_requests_unwind): Adapt to new queue.
-       (x_reply_selection_request): Adapt to new queue.
-       Unexpect wait_object in case of x errors (memory leak).
-       (x_handle_selection_request, x_handle_selection_clear): Make static.
-       (x_handle_selection_event): New function.  May queue selection events.
-       (wait_for_property_change_unwind): Use save_value instead of cons.
-       Clear property_change_reply_object.
-       (wait_for_property_change): Abort if already waiting.
-       Use save_value instead of cons for unwind data.
-       (x_handle_property_notify): Skip events already arrived, but don't
-       free them, as "arrived" field is checked by wait_for_property_change,
-       and it will be freed by unwind or explicit unexpect_property_change.
-       (x_get_foreign_selection): Add to new queue.
-       (receive_incremental_selection): Don't unexpect wait_object when done
-       as it has already been freed by previous wait_for_property_change.
-
-       * xterm.h (x_start_queuing_selection_requests)
-       (x_stop_queuing_selection_requests, x_handle_selection_request)
-       (x_handle_selection_clear): Remove prototypes.
-       (x_handle_selection_event): Add prototype.
-
-       * xterm.c (handle_one_xevent): Don't queue X selection events
-       here, it may be too late if we start queuing after we have already
-       stored some selection events into the kbd buffer.
-       (struct selection_event_queue, queue, x_queue_selection_requests)
-       (x_queue_event, x_unqueue_events, x_start_queuing_selection_requests)
-       (x_stop_queuing_selection_requests): Remove/move to xselect.c.
-       (x_catch_errors_unwind): Block input around final XSync.
-
-       * keyboard.h (kbd_buffer_unget_event): Add prototype.
-
-       * keyboard.c (kbd_buffer_store_event_hold): Remove obsolete code.
-       (kbd_buffer_unget_event): New function.
-       (kbd_buffer_get_event, swallow_events): Combine SELECTION events
-       and use x_handle_selection_event.
-       (mark_kboards): Don't mark x and y of SELECTION_CLEAR_EVENT.
-
-2004-11-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xselect.c (TRACE3): New debug macro.
-       (x_reply_selection_request): Use it.
-       (receive_incremental_selection): In call to TRACE0, the name of
-       a symbol is in xname.
-
-2004-11-05  Kim F. Storm  <storm@cua.dk>
-
-       * fontset.c (fontset_pattern_regexp): Use unsigned char.
-
-2004-11-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * fileio.c (Fnext_read_file_uses_dialog_p): New function.
-
-       * gtkutil.h (use_old_gtk_file_dialog): Declare.
-
-       * gtkutil.c: Make use_old_gtk_file_dialog non-static.
-       (xg_initialize): Move DEFVAR_BOOL for use_old_gtk_file_dialog ...
-       * xfns.c (syms_of_xfns): ... to here.
-
-       * gtkutil.c (xg_get_file_with_chooser): Expand DEFAULT_FILENAME if
-       it doesn't start with /.
-
-2004-11-04  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (fontset_pattern_regexp): If '*' is preceded by '\',
-       treat it as a literal character.
-
-2004-11-03  Kim F. Storm  <storm@cua.dk>
-
-       * .gdbinit (ppt): New function.
-
-2004-11-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_window_to_scroll_bar): Only call
-       xg_get_scroll_id_for_window if toolkit scroll bars are used.
-
-       * gtkutil.c (xg_get_file_with_chooser): Use GTK_STOCK_OK instead
-       of save.
-
-2004-11-02  Andreas Schwab  <schwab@suse.de>
-
-       * window.c (Fscroll_right): Fix last change.
-
-2004-11-02  Kim F. Storm  <storm@cua.dk>
-
-       * Makefile.in (callproc.o): Depend on blockinput.h, atimer.h, systime.h.
-
-2004-11-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * callproc.c (Fcall_process): Block input around vfork.
-
-2004-11-02  Kim F. Storm  <storm@cua.dk>
-
-       * eval.c (Fcalled_interactively_p): Rename from Fcall_interactive_p.
-       (syms_of_eval): Defsubr it.
-
-2004-11-02  Richard M. Stallman  <rms@gnu.org>
-
-       * insdel.c (replace_range_2): New function.
-
-       * casefiddle.c (casify_region): Handle changes in byte-length
-       using replace_range_2.
-
-       * emacs.c (USAGE3): Delete --horizontal-scroll-bars, -hb.
-
-       * xdisp.c (back_to_previous_visible_line_start):
-       Subtract 1 from pos when checking previous newline for invisibility.
-
-       * window.c (window_scroll_pixel_based): Update preserve_y
-       for header line if any.
-       (Fscroll_left, Fscroll_right): Don't call interactive_p;
-       use a new second argument instead.
-
-       * eval.c (Fcall_interactive_p): New function.
-       (interactive_p): Don't test INTERACTIVE here.
-       (Finteractive_p): Doc fix.
-
-       * eval.c (Feval): Abort if INPUT_BLOCKED_P.
-
-2004-11-02  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
-
-       * w32fns.c (w32_font_match): Use fast_string_match_ignore_case for
-       comparing font names.
-
-2004-11-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
-       Fx_file_dialog if only directories should be read.
-
-       * lisp.h: Fx_file_dialog takes 5 parameters.
-
-       * xfns.c (Fx_file_dialog): Both Motif and GTK version:
-       Add parameter only_dir_p.
-       In Motif version, don't put DEFAULT_FILENAME in filter part of the
-       dialog, just text field part.  Do not add DEFAULT_FILENAME
-       to list of files if it isn't there.
-       In GTK version, pass only_dir_p parameter to xg_get_file_name.
-
-       * macfns.c (Fx_file_dialog): Add parameter only_dir_p.
-       Check only_dir_p instead of comparing prompt to "Dired".  When using
-       a save dialog, add option kNavDontConfirmReplacement, change title
-       to "Enter name", change text for save button to "Ok".
-
-       * w32fns.c (Fx_file_dialog): Add parameter only_dir_p.
-       Check only_dir_p instead of comparing prompt to "Dired".
-
-       * gtkutil.c (xg_get_file_with_chooser, xg_get_file_with_selection):
-       New functions, only defined ifdef HAVE_GTK_FILE_CHOOSER_DIALOG_NEW
-       and HAVE_GTK_FILE_SELECTION_NEW respectively.
-       (xg_get_file_name): Add parameter only_dir_p.
-       Call xg_get_file_with_chooser or xg_get_file_with_selection
-       depending on HAVE_GTK_FILE* and the value of use_old_gtk_file_dialog.
-       (xg_initialize): New DEFVAR_BOOL use_old_gtk_file_dialog.
-
-       * gtkutil.h (xg_get_file_name): Add parameter only_dir_p.
-
-       * config.in: Rebuild (added HAVE_GTK_FILE_*).
-
-2004-11-01  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (connect_wait_mask, num_pending_connects):
-       Only declare and use them if NON_BLOCKING_CONNECT is defined.
-       (init_process): Initialize them if NON_BLOCKING_CONNECT defined.
-       (IF_NON_BLOCKING_CONNECT): New helper macro.
-       (wait_reading_process_output): Only declare and use local vars
-       Connecting and check_connect when NON_BLOCKING_CONNECT is defined.
-
-2004-11-01  Andy Petrusenco  <Igrek@star-sw.com>  (tiny change)
-
-       * w32term.c (x_scroll_run): Delete region objects after use.
-
-2004-10-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c: Add prototypes for forward function declarations.
-       (popup_get_selection): Remove parameter do_timers, remove call to
-       timer_check.
-       (create_and_show_popup_menu, create_and_show_dialog):
-       Remove parameter do_timers from call to popup_get_selection.
-
-       * xdisp.c (update_tool_bar): Pass a copy of f->tool_bar_items to
-       tool_bar_items and assign the result to f->tool_bar_items if
-       not equal.  Move BLOCK/UNBLOCK_INPUT from around call to
-       tool_bar_items to assignment of result.
-
-       * atimer.c (alarm_signal_handler): Do not call set_alarm if
-       pending_atimers is non-zero.
-
-2004-10-31  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (margin_glyphs_to_reserve): Don't use ncols_scale_factor.
-
-2004-10-28  Will  <will@glozer.net>
-
-       * macterm.c: Allow user to assign key modifiers to the Mac Option
-       key via a 'mac-option-modifier' variable.
-
-2004-10-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xselect.c (Vx_lost_selection_functions, Vx_sent_selection_functions):
-       Rename from Vx_lost_selection_hooks and Vx_sent_selection_hooks.
-       (x_handle_selection_request, x_handle_selection_clear)
-       (x_clear_frame_selections, syms_of_xselect): Adjust accordingly.
-
-2004-10-28  Richard M. Stallman  <rms@gnu.org>
-
-       * w32fns.c (Fx_server_vendor, Fx_server_version): Doc fixes.
-
-       * xfns.c (Fx_server_vendor, Fx_server_version): Doc fixes.
-
-2004-10-27  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (scan_sexps_forward): Give precedence to a 2-char
-       comment-starter over a 1-char one.
-
-2004-10-27  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (get_next_display_element): In mode lines,
-       treat newline and tab like other control characters.
-
-       * editfns.c (Fmessage): Doc fix.
-
-       * indent.c (vmotion): When moving up, check the newline before.
-       Make prevline an int, not a Lisp_Object.
-
-2004-10-27  Kim F. Storm  <storm@cua.dk>
-
-       * editfns.c (Fformat): Allocate discarded table with SAFE_ALLOCA.
-       Only allocate info and discarded tables once.
-
-       * lisp.h (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
-       (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Increment it when malloc is used.
-       (SAFE_FREE): Test it to determine if we need to unwind to free.
-       Remove size arg.  All users changed.
-       (SAFE_FREE_LISP) Remove.  All users changed to use SAFE_FREE.
-
-2004-10-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c: Put empty line between comment and function body.
-       (xg_destroy_widgets): Rename from remove_from_container.
-       Just destroy all widgets in list.  Argument wcont removed.
-       (xg_update_menubar, xg_update_submenu): Call xg_destroy_widgets
-       instead of remove_from_container.
-       (xg_display_close, xg_create_tool_bar, update_frame_tool_bar)
-       (free_frame_tool_bar): Add comment.
-
-       * xfns.c (xic_create_xfontset): Check that FRAME_XIC_BASE_FONTNAME
-       is not NULL before strcmp.
-
-2004-10-26  Kim F. Storm  <storm@cua.dk>
-
-       * callint.c (Fcall_interactively): Add 'U' code to get the
-       up-event discarded by a previous 'k' or 'K' argument.
-
-2004-10-26  David Kastrup  <dak@gnu.org>
-
-       * buffer.c (syms_of_buffer): Fix a few typos.
-
-2004-10-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xsmfns.c: Put empty line between comment and function body.
-       Use two spaces before comment end.
-
-2004-10-25  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (fontset_pattern_regexp): Optimize for the case that
-       PATTERN is full XLFD.
-
-2004-10-24  Kenichi Handa  <handa@m17n.org>
-
-       * regex.h (enum reg_errcode_t): New value REG_ERANGEX.
-
-       * regex.c (re_error_msgid): Add an entry for REG_ERANGEX.
-       (regex_compile): Return REG_ERANGEX if appropriate.
-
-2004-10-22  Kenichi Handa  <handa@m17n.org>
-
-       * editfns.c (Ftranslate_region_internal): New function.
-       (syms_of_editfns): Defsubr it.
-
-2004-10-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (xic_create_xfontset): Initialize missing_list to NULL.
-
-2004-10-21  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
-
-       * xterm.h (x_output): New member `xic_base_fontname'.
-       (FRAME_XIC_BASE_FONTNAME): New macro.
-       (xic_free_xfontset): Declare.
-
-       * xfns.c (xic_create_xfontset): Share fontsets between frames
-       based on base_fontname.
-       (xic_free_xfontset): New function.
-       (free_frame_xic): Use it.
-       (xic_set_xfontset): Ditto.
-
-       * xterm.c (xim_destroy_callback): Ditto.
-
-2004-10-20  B. Anyos  <banyos@freemail.hu>  (tiny change)
-
-       * w32term.c (x_draw_glyph_string): Use overline_color for overlines.
-
-2004-10-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h (XSync): If USE_GTK, define XSync as process_all and then
-       XSync.
-
-       * emacs.c (my_heap_start, heap_bss_diff, MAX_HEAP_BSS_DIFF):
-       New variables and constant.
-       (main): Calculate heap_bss_diff.  If we are dumping and the
-       heap_bss_diff is greater than MAX_HEAP_BSS_DIFF, set PER_LINUX32
-       and exec ourself again.
-       (Fdump_emacs): If heap_bss_diff is greater than MAX_HEAP_BSS_DIFF
-       print a warning.
-
-       * lastfile.c: Make my_endbss and my_endbss_static available on all
-       platforms.
-
-       * Makefile.in (RUN_TEMACS): Remove @SETARCH@.
-       * config.in (HAVE_PERSONALITY_LINUX32): Regenerate.
-
-2004-10-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * data.c (Flocal_variable_if_set_p): Doc fix.
-
-2004-10-19  Jason Rumney  <jasonr@gnu.org>
-
-       * w32.c (init_environment): Set emacs_dir correctly when running
-       emacs from the build directory.
-
-2004-10-19  Richard M. Stallman  <rms@gnu.org>
-
-       * editfns.c (Fdelete_and_extract_region):
-       If region is empty, return null string.
-
-2004-10-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.h (xg_update_scrollbar_pos): Remove arguments real_left
-       and canon_width.
-       (xg_frame_cleared): Remove.
-
-       * gtkutil.c (xg_frame_cleared, xg_fixed_handle_expose)
-       (xg_find_top_left_in_fixed): Remove.
-       (xg_create_scroll_bar): Put an event box widget between
-       the scroll bar widget and the edit widget.
-       (xg_show_scroll_bar): Show the parent widget (the event box).
-       (xg_remove_scroll_bar): Destroy parent (the event box) also.
-       (xg_update_scrollbar_pos): Remove arguments real_left and canon_width.
-       Move the parent (the event box) widget inside the fixed widget.
-       Move window clear to xterm.c.
-
-       * gtkutil.h (xg_frame_cleared): Remove.
-
-       * xterm.c (x_clear_frame): Remove call to xg_frame_cleared
-       (x_scroll_bar_create, XTset_vertical_scroll_bar):
-       Remove arguments left and width to xg_update_scrollbar_pos.
-       (XTset_vertical_scroll_bar): Do x_clear_area for USE_GTK also.
-
-2004-10-19  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (display_mode_element): Fix display of wide chars.
-
-2004-10-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_update_scrollbar_pos): Change XClearWindow to
-       gdk_window_clear and move gdk_window_process_all_updates after
-       clear so events are sent to the X server in correct order.
-
-2004-10-18  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (fs_load_font): Use fast_string_match_ignore_case for
-       comparing font names.
-       (fs_query_fontset): Use fast_string_match for comparing fontset names.
-       (list_fontsets): Likewise.
-
-       * search.c (fast_string_match_ignore_case): New function.
-
-       * lisp.h (fast_string_match_ignore_case): Extern it.
-
-2004-10-17  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (overlay_arrow_at_row): Return overlay string rather
-       than bitmap if there is not left fringe.
-       (get_overlay_arrow_glyph_row): Also used on windows system.
-       (display_line): Display overlay string if no left fringe.
-
-2004-10-16  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (w32_font_match): Encode font name being matched.
-
-2004-10-16  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Fspecial_display_p): Doc fix.
-
-2004-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * doc.c (Fsubstitute_command_keys): Fix remap-handling.
-       Don't ignore menus, because where-is-internal already does it for us.
-
-2004-10-15  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): Only update fringes and vertical
-       border on window frames.
-
-2004-10-14  Andreas Schwab  <schwab@suse.de>
-
-       * m/ia64.h (DATA_SEG_BITS): Don't define.
-
-2004-10-14  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.h: Include Xutil.h after keysym.h to work around bug
-       in some X versions.
-
-2004-10-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fns.c (map_char_table): Add missing gcpros.
-
-2004-10-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (get_keymap): An autoload form is not a keymap.
-
-       * textprop.c (syms_of_textprop): Make `syntax-table' nonsticky.
-
-2004-10-13  Kim F. Storm  <storm@cua.dk>
-
-       * callproc.c (Fcall_process): Simplify handling of display arg.
-       Resume `display_on_the_fly' once a coding system is determined.
-
-       * xdisp.c (redisplay_preserve_echo_area): Fix last change.
-
-2004-10-12  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_preserve_echo_area): Flush display in case
-       caller, such as call-process, is not going to poll for input.
-       (calc_line_height_property): Handle case where it->object is nil.
-
-       * xterm.c (x_redisplay_interface): Fix flush_display_optional.
-
-2004-10-12  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (get_next_display_element):
-       If unibyte_display_via_language_environment is zero, display 8-bit
-       chars in octal in unibyte buffer.
-
-2004-10-12  Kim F. Storm  <storm@cua.dk>
-
-       * doc.c (Fsubstitute_command_keys): Ignore remappings unless there
-       are no ordinary bindings.
-
-2004-10-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (syms_of_xfns): Defsubr x-file-dialog for GTK also.
-
-2004-10-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow.
-       (x_lower_frame): Add BLOCK_INPUT around SendBehind.
-       (make_mac_frame): Add BLOCK_INPUT around the making of a
-       terminal frame.
-       (mac_initialize): Add BLOCK_INPUT around carbon initialization.
-       * macgui.h (mktime): Use emacs_mktime.
-       * macfns.c (Fx_file_dialog): Add BLOCK_INPUT around more code.
-       Make a cancel file-open dialog be like C-g.
-       * mac.c (mktime): Use emacs_mktime.
-       (Fdo_applescript): Add BLOCK_INPUT around do_applescript.
-       (Fmac_paste_function): Add better error handling for carbon cut/paste.
-
-2004-10-10  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (timer_resume_idle): New function to resume idle
-       timer without resetting timers on the idle list.
-       (read_char): Use timer_resume_idle.  Remove local var last_idle_start.
-       (timer_start_idle, timer_stop_idle): Declare static.
-       (read_key_sequence): Use timer_resume_idle instead of timer_start_idle.
-
-       * keyboard.h (timer_start_idle, timer_stop_idle): Remove prototypes.
-
-2004-10-08  Steven Tamm  <steventamm@mac.com>
-
-       * config.in (HAVE_MALLOC_MALLOC_H): Regenerate.
-       * macterm.c (mac_check_for_quit_char): Remove warning for using
-       NULL where 0 should be used.
-       * unexmacosx.c: Use malloc/malloc.h on Tiger instead of
-       objc/malloc.h
-       * mac.c: Include time.h for Tiger compatibility.
-
-2004-10-07  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): Fix flicker on vertical line between
-       windows.  Update vertical line after drawing window fringes, but
-       only if actually drawing any bitmaps--or there is no fringe.
-
-       * xterm.c (x_update_window_end): Likewise.
-       * macterm.c (x_update_window_end): Likewise.
-       * w32term.c (x_update_window_end): Likewise.
-
-       * fringe.c (draw_window_fringes): Return value now indicates if
-       any fringe bitmaps were redrawn (or there are no fringes).
-
-       * dispextern.h (draw_window_fringes): Update prototype.
-
-2004-10-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (mac_get_window_bounds): Add extern.
-       (x_real_positions): Use mac_get_window_bounds.
-
-       * macmenu.c (update_submenu_strings): Apply 2004-09-07 change for
-       xmenu.c (YAILOM).
-
-       * macterm.c [!MAC_OSX]: Include Windows.h.
-       (front_emacs_window): Rename from mac_front_window.  All uses
-       changed.  Return the frontmost non-tooltip emacs window.
-       (mac_get_window_bounds): New function.
-       (x_calc_absolute_position): Use the difference of width and height
-       between the inner and outer window.
-       (x_set_offset): Specify window position by the coordinae of the
-       outer window.  Adjust the position if the title bar is completely
-       outside the screen.
-       (app_is_suspended, app_sleep_time): Remove unused variables.
-       (do_app_resume, do_app_suspend): Remove their contents because
-       window-activate/deactivate events will do the job.
-       (do_zoom_window): Remove unused variables.  Make compliant to the
-       standard way of zooming.  Set f->left_pos and f->top_pos.
-       (XTread_socket): Don't use argument `expected'.  Don't use
-       FrontWindow to determine the clicked window.  Exclude unprocessed
-       mouseUp cases in the early stage.  Add parentheses to fix operator
-       precedence.
-       (XTread_socket) [TARGET_API_MAC_CARBON]: Don't specify drag area.
-
-2004-10-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * config.in: Regenerate.
-
-       * Makefile.in (RUN_TEMACS): Check HAVE_RANDOM_HEAPSTART instead of
-       HAVE_EXECSHIELD.
-
-2004-10-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
-       a row if Alt or Meta has been found for that row.  Also stop scanning
-       for Keysyms for that row.
-
-2004-10-04  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons
-       to list.  Include overlay arrow bitmap in return value.
-
-       * xterm.c (XTset_vertical_scroll_bar): Improve handling of scroll
-       bars with fractional column width.  If scroll bar separates two
-       windows, move it towards the window it belongs to.  Only update
-       the padding area below the scroll bar widget when necessary,
-       i.e. when scroll bar widget is created, moved, or resized.
-
-       * xdisp.c (define_frame_cursor1): Do not change frame cursor
-       while tracking/dragging mouse.
-       (x_draw_vertical_border): Do not draw line if frame has scroll bars.
-
-       * window.c (coordinates_in_window): Relax check for cursor
-       on vertial border between mode lines.
-       (Fset_window_fringes): Do not allow negative widths.
-       (Fset_window_scroll_bars): Likewise.
-
-       * .gdbinit (pp): Shorthand for p ARG + pr.
-       (ff): New command: flush frame updates (X only).
-
-2004-10-03  Michael Albinus  <michael.albinus@gmx.de>
-
-       * fileio.c (auto_save_1) Call Ffile_modes for remote files.
-
-2004-09-30  Kenichi Handa  <handa@m17n.org>
-
-       * process.c (send_process): Free composition data.
-
-       * fileio.c (Finsert_file_contents): Free composition data.
-
-       * coding.c (code_convert_region): Don't skip ASCIIs if there are
-       compositions to encode.
-       (encode_coding_string): Likewise.  Free composition data.
-
-2004-09-30  Florian Weimer  <fw@deneb.enyo.de>
-
-       * coding.c (code_convert_region): Free composition data.
-
-2004-09-29  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c: Remove limit on number of bitmaps.
-       (fringe_bitmaps, fringe_faces): Change to pointers.
-       (max_fringe_bitmaps): New var.
-       (Fdefine_fringe_bitmap): Expand fringe_bitmaps and fringe_faces.
-       (init_fringe): Allocate fringe_bitmaps and fringe_faces.
-
-       * dispextern.h (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
-       (struct glyph_row): Reorder fringe_bitmap related fields.
-       (struct it): Likewise.
-
-       * w32term.c (fringe_bmp): Change to pointer.
-       (max_fringe_bmp): New var.
-       (w32_define_fringe_bitmap): Expand fringe_bmp.
-       (w32_draw_fringe_bitmap): Check max_fringe_bmp.
-       (w32_destroy_fringe_bitmap): Likewise.
-
-2004-09-29  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c: Simplify last change.
-       (lookup_fringe_bitmap): New function.
-       (valid_fringe_bitmap_p, resolve_fringe_bitmap): Remove.
-       (Fdestroy_fringe_bitmap): Use lookup_fringe_bitmap.
-       Keep standard bitmaps in Vfringe_bitmaps.
-       (Fdefine_fringe_bitmap): Use lookup_fringe_bitmap.
-       (Fset_fringe_bitmap_face): Likewise.
-
-       * dispextern.h (lookup_fringe_bitmap): Add prototype.
-       (valid_fringe_bitmap_p): Remove prototype.
-
-       * xdisp.c (handle_single_display_prop): Use lookup_fringe_bitmap.
-
-2004-09-29  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c (destroy_fringe_bitmap, init_fringe_bitmap)
-       (w32_init_fringe, w32_reset_fringes): Fix bootstrap (NULL rif).
-
-       * dispextern.h (valid_fringe_bitmap_p): Fix prototype.
-
-       * fringe.c (Vfringe_bitmaps): New variable.
-       (syms_of_fringe): DEFVAR_LISP it.
-       (valid_fringe_bitmap_p): Rename from valid_fringe_bitmap_id_p.
-       Change arg to Lisp_Object and fail if not an integer.
-       (get_fringe_bitmap_name, resolve_fringe_bitmap)
-       (destroy_fringe_bitmap): New functions.
-       (Fdestroy_fringe_bitmap): Change arg to bitmap symbol.
-       Use destroy_fringe_bitmap.  Remove symbol from Vfringe_bitmaps and
-       clear its fringe property.
-       (init_fringe_bitmap): Use destroy_fringe_bitmap instead of
-       Fdestroy_fringe_bitmap.
-       (Fdefine_fringe_bitmap): Add BITMAP arg specifying new or existing
-       bitmap symbol; remove WHICH arg.  Add symbol to Vfringe_bitmaps
-       and set fringe property.  Signal error if no free slots.
-       (Fset_fringe_bitmap_face): Change arg to bitmap symbol.
-       (Ffringe_bitmaps_at_pos): Return bitmap symbols instead of numbers.
-
-       * xdisp.c (handle_single_display_prop): Fringe bitmaps are now
-       symbols with a fringe property.
-
-2004-09-27  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (syms_of_buffer) <indicate-buffer-boundaries>:
-       Doc fix.  Format may now be a symbol or alist, not a cons.
-
-       * fringe.c (update_window_fringes): Handle new formats of
-       indicate-buffer-boundaries (symbol or alist).  No longer
-       allow a simple cons.
-       (Ffringe_bitmaps_at_pos): Use nil value for no bitmap.
-
-2004-09-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * config.in: Rebuild.
-
-2004-09-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * config.in: Rebuild.
-
-       * Makefile.in: Run setarch i386 ./temacs if exec-shield is present.
-
-2004-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xterm.c (x_term_init): Work around a bug in some X servers.
-
-2004-09-18  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer) <default-major-mode>: Doc fix.
-
-       * xdisp.c (try_window_reusing_current_matrix):
-       Handle the case where we reach the old displayed text,
-       out of sync with the old line boundary.
-
-2004-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fileio.c (Finsert_file_contents): Fix case of replacement in a
-       narrowed buffer.
-
-2004-09-14  Kim F. Storm  <storm@cua.dk>
-
-       * puresize.h (PURESIZE_RATIO): Define based on BITS_PER_EMACS_INT.
-
-       * xfaces.c (Qface_no_inherit): New var.
-       (syms_of_xfaces): Intern and staticpro it.
-       (Finternal_make_lisp_face, Finternal_set_lisp_face_attribute)
-       (Finternal_copy_lisp_face, update_face_from_frame_parameter):
-       Don't increment face_change_count when face has non-nil
-       face-no-inherit property.
-
-2004-09-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * bytecode.c (BYTE_CODE_QUIT): Add missing AFTER_POTENTIAL_GC.
-       (Fbyte_code): Remove dead code after `wrong_type_argument'.
-
-       * alloc.c (Fgarbage_collect): Mark keyboards, gtk data, and specpdl
-       before doing the mark_stack_check_gcpros since they're not on the stack.
-
-2004-09-12  Kim F. Storm  <storm@cua.dk>
-
-       * editfns.c (Fformat): Handle format strings with multiple text
-       properties.  Reverse text property list from the format string,
-       so the positions are in increasing order.
-
-2004-09-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xselect.c (x_reply_selection_request): XSync and UNBLOCK before
-       x_uncatch_errors so that possible protocol errors are delivered.
-
-2004-09-10  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (msdos.o): Depend on buffer.h, commands.h, and
-       blockinput.h.
-       (dosfns.o): Depend on blockinput.h, window.h, dispextern.h,
-       charset.h, and coding.h
-       (w16select.o): Depend on buffer.h, charset.h, coding.h, and composite.h.
-       (term.o): Depend on window.h and keymap.h.
-       (abbrev.o): Depend on syntax.h.
-       (callint.o): Depend on keymap.h.
-       (casefiddle.o): Depend on charset.h and keymap.h.
-       (category.o): Depend on keymap.h.
-       (coding.o): Depend on dispextern.h.
-       (cmds.o): Depend on keyboard.h and keymap.h.
-       (dispnew.o): Depend on indent.h and intervals.h.
-       (doc.o): Depend on keymap.h.
-       (editfns.o): Depend on frame.h.
-       (emacs.o): Depend on dispextern.h.
-       (fileio.o): Don't depend on ccl.h.
-       (filelock.o): Depend on charset.h and coding.h.
-       (frame.o): Depend on w32term.h and macterm.h.
-       (insdel.o): Depend on region-cache.h.
-       (keyboard.o): Depend on keymap.h, w32term.h, and macterm.h.
-       (minibuf.o): Depend on $(INTERVALS_SRC) and keymap.h.
-       (search.o): Depend on $(INTERVALS_SRC).
-       (syntax.o): Depend on keymap.h, regex.h, and $(INTERVALS_SRC).
-       (window.o): Depend on keymap.h, blockinput.h, $(INTERVALS_SRC),
-       xterm.h, w32term.h, and macterm.h.
-       (xdisp.o): Depend on keyboard.h, $(INTERVALS_SRC), xterm.h,
-       w32term.h, and macterm.h.
-       (xfaces.o): Depend on keyboard.h, $(INTERVALS_SRC),
-       region-cache.h, xterm.h, w32term.h, and macterm.h.
-       (bytecode.o): Depend on dispextern.h, frame.h, and xterm.h.
-       (data.o): Depend on frame.h.
-       (fns.o): Depend on keymap.h, xterm.h, and blockinput.h.
-       (print.o): Depend on termchar.h and $(INTERVALS_SRC).
-       (lread.o): Depend on $(INTERVALS_SRC), termhooks.h, and coding.h.
-       (intervals.o): Depend on keymap.h.
-
-       * msdos.c (msdos_set_cursor_shape, IT_display_cursor):
-       Add debugging print-out to termscript.
-
-2004-09-09  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (decode_mode_spec): Use current buffer for most purposes.
-
-2004-09-08  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Fset_window_buffer): Doc fix.
-
-       * xdisp.c (Fformat_mode_line): New arg BUFFER says which buffer to use.
-
-2004-09-08  Dan Nicolaescu  <dann@ics.uci.edu>
-
-       * minibuf.c (history_delete_duplicates): New variable.
-       (read_minibuf): Use it.
-       (syms_of_minibuf): Create the corresponding lisp variable.
-
-2004-09-08  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (set_cursor_from_row): Also look at 'cursor' property in
-       overlay just before point.
-
-2004-09-07  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffer.h (struct buffer): Add auto_save_file_format field.
-       * buffer.c (reset_buffer, init_buffer_once):
-       Handle auto_save_file_format field.
-       (syms_of_buffer): Add DEFVAR_PER_BUFFER for
-       `buffer-auto-save-file-format'.
-       * fileio.c: Delete declaration for removed Vauto_save_file_format.
-       (build_annotations): Adapt to replacement of
-       `auto-save-file-format' with the new buffer-local variable
-       `buffer-auto-save-file-format'.
-       (syms_of_fileio): Delete DEFVAR_LISP for auto-save-file-format.
-
-2004-09-07  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.h (AppendMenuW_Proc): Move declaration from w32menu.c.
-
-       * w32fns.c (w32_wnd_proc) <WM_MEASUREITEM, WM_DRAWITEM>:
-       Handle Unicode menu titles.
-
-2004-09-07  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (set_cursor_from_row): Fix last change.  Only use 'cursor'
-       property from text property or overlay strings at point.
-
-2004-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xmenu.c (update_submenu_strings): YAILOM.
-       (set_frame_menubar): Make sure last_i is initialized.
-
-2004-09-03  Jason Rumney  <jasonr@gnu.org>
-
-       * w32menu.c (_widget_value): Add lname and lkey.
-       (digest_single_submenu): Set lname and lkey in widget_value
-       instead of name and key.
-       (update_submenu_strings): New function.
-       (set_frame_menubar): Remove call to inhibit_garbage_collection,
-       call update_submenu_strings.
-
-       * w32menu.c (globals_of_w32menu): Check for Unicode API.
-       (digest_single_submenu, w32_menu_show): Encode menu strings as
-       UTF-8 if Unicode API is available.
-       (utf8to16): New function.
-       (add_menu_item): Use it when calling Unicode API.
-
-2004-09-03  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (set_cursor_from_row): Look for non-nil `cursor' property
-       in overlay or text-property strings; set cursor on corresponding
-       glyph rather than at end of the string.
-
-2004-09-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c (x_real_positions): Save the current window port and
-       set a new one before obtaining the global coordinate.
-       Use FRAME_MAC_WINDOW.
-       (x_set_name, x_set_title): Encode title to UTF8.
-       Use SetWindowTitleWithCFString.
-       (Fx_server_version): Get correct OS version.
-
-       * macmenu.c (add_menu_item): Remove unused variable `i'.
-       Don't let separator items destroy refence constants of other menu items.
-
-       * macterm.c (x_update_end): Move SetPortWindowPort to inside
-       BLOCK_INPUT.
-       (x_set_offset): Use FRAME_MAC_WINDOW.
-
-       * xdisp.c (note_mouse_highlight): Set the mouse pointer shape to
-       nontext_cursor if it is on a scroll bar.
-
-       * s/darwin.h (LIBS_CARBON): New define to specify libraries for
-       Carbon support.
-       (LD_SWITCH_SYSTEM_TEMACS): Don't link with unused libstdc++.
-       Use LIBS_CARBON.
-
-2004-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (x_set_name_internal): New function.  Check if we shall call
-       xfree before ENCODE_UTF_8.
-       (x_set_name, x_set_title): Call x_set_name_internal.
-
-2004-08-31  NAKAMURA Toshikazu  <nr-tkz@nifty.com>  (tiny change)
-
-       * w32fns.c (w32_load_font): If a BDF font is already loaded, do not
-       reload it.
-
-2004-08-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * macmenu.c (_widget_value): Add lname and lkey.
-       (single_submenu): Set lname and lkey in widget_value
-       instead of name and key.
-       (update_submenu_strings): New function.
-       (set_frame_menubar): Remove call to inhibit_garbage_collection,
-       call update_submenu_strings.
-
-       * xmenu.c (digest_single_submenu): Set lname and lkey in widget_value
-       instead of name and key.
-       (update_submenu_strings): New function.
-       (set_frame_menubar): Remove call to inhibit_garbage_collection,
-       call update_submenu_strings.
-
-       * gtkutil.h (_widget_value): Added lname and lkey.
-
-2004-08-30  Steven Tamm  <steventamm@mac.com>
-
-       * macmenu.c (mac_menu_show): Remove shadowing of menu variable
-       by using different names for inner loop variables.
-
-2004-08-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (set_frame_menubar): Reintroduce inhibit_garbage_collection
-       from 2002-07-15T00:01:34Z!raeburn@raeburn.org so that strings from ENCODE_UTF_8 isn't GC:ed before used.
-
-       * gtkutil.c (xg_create_frame_widgets): Compensate for tool bar when
-       tool bar items is 0.
-
-2004-08-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macmenu.c (ENCODE_MENU_STRING): Added to handle multibyte
-       strings in menu items.
-       (single_submenu): Use ENCODE_MENU_STRING
-       (mac_menu_show): Use ENCODE_MENU_STRING.  Reset grabbed because
-       button release isn't passed to event loop
-       (add_menu_item): Use SetMenuItemWithCFString
-
-2004-08-26  Steven Tamm  <steventamm@mac.com>
-
-       * fileio.c (Fread_file_name): Call x_file_dialog on carbon on
-       tool-bar/menu click.
-       * macfns.c (Fx_file_dialog): Implement using NavServices.
-
-2004-08-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_catch_errors_unwind): Do not XSync if display has closed.
-
-       * xfns.c (x_window_to_frame, x_any_window_to_frame)
-       (x_non_menubar_window_to_frame, x_menubar_window_to_frame)
-       (x_top_window_to_frame): Return 0 if wdesc is None.
-
-2004-08-22  Richard M. Stallman  <rms@gnu.org>
-
-       * process.c (process_send_signal) [SIGNALS_VIA_CHARACTERS,
-       HAVE_TERMIOS]: If there's no char for this signal, drop through
-       and use system calls.
-
-       * bytecode.c (Fbyte_code) <unwind-protect>: Cannot GC.
-
-2004-08-20  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (wait_reading_process_output): Rename from
-       wait_reading_process_input.  All uses changed.
-       (wait_reading_process_output_1): Rename from
-       wait_reading_process_input_1.  All uses changed.
-
-       * dispnew.c (Fsleep_for): Remove obsolete code.
-
-2004-08-20  Kenichi Handa  <handa@m17n.org>
-
-       * syntax.c (skip_chars): Fix for unibyte case.
-
-2004-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (char_quoted): Mixup byte/char pos.
-       (back_comment): Fixup globals in all cases.
-
-2004-08-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (x_set_name, x_set_title): Encode title to UTF8 before
-       passing it to gtk_window_set_title.
-
-2004-08-19  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (wait_reading_process_input): Clean up.
-       Add wait_for_cell, wait_proc, and just_wait_proc args
-       to avoid overloading `read_kbd' and `do_display' args.
-       Change read_kbd arg to int.  All callers changed.
-
-       * process.c (process_send_signal): Use CDISABLE.
-
-       * sysdep.c (child_setup_tty, init_sys_modes): Use CDISABLE.
-
-2004-08-18  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Faccept_process_output): Add arg JUST-THIS-ONE;
-       forward to wait_reading_process_input via DO_DISPLAY arg.
-       (wait_reading_process_input): If DO_DISPLAY < 0 for a process
-       object, only process output from that process; also inhibit
-       running timers if DO_DISPLAY==-2.
-
-2004-08-17  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (process_send_signal): Fix last change--use
-       _POSIX_VDISABLE instead of CVDISABLE when available.
-
-2004-08-16  Richard M. Stallman  <rms@gnu.org>
-
-       * sysdep.c (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
-       Set VQUIT and VINTR chars to the standard ones if they are unset.
-       [AIX]: Don't do that here.  And don't force VINTR to standard
-       when SIGNALS_VIA_CHARACTERS.
-
-       * process.c (process_send_signal)
-       [SIGNALS_VIA_CHARACTERS, HAVE_TERMIOS]: Clean up.
-       Do nothing if the character is CVDISABLE.
-
-       * xfaces.c (merge_face_ref): Specifying `unspecified' is a no-op.
-
-       * intervals.c (move_if_not_intangible):
-       Force POSITION to be between BEGV and ZV.
-
-2004-08-14  John Paul Wallington  <jpw@gnu.org>
-
-       * buffer.c (Frestore_buffer_modified_p): Doc fix.
-
-       * fileio.c (Fread_file_name): Doc fix.
-
-       * minibuf.c (syms_of_minibuf) <completion-ignore-case>: Doc fix.
-
-2004-08-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keymap.c (Fmake_keymap, Fmap_keymap, Fwhere_is_internal): Doc fixes.
-
-2004-08-08  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keyboard.c: Declare Qdisabled_command_function instead of
-       Qdisabled_command_hook.
-       (Fcommand_execute): Use Qdisabled_command_function instead of
-       Qdisabled_command_hook.
-       (syms_of_keyboard): Ditto.
-
-2004-08-07  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keymap.c (Flocal_key_binding, Fglobal_key_binding)
-       (syms_of_keymap) <key-translation-map>: Doc fixes.
-
-2004-08-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * window.c (window_list_1): YAILOM.
-
-       * fileio.c (make_temp_name): Handle multibyte prefixes.
-
-2004-08-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keyboard.c (syms_of_keyboard) <overriding-terminal-local-map>:
-       Doc fix.
-
-2004-08-03  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (decode_coding_string): Adjust coding->consumed, and
-       etc. with shrinked_bytes.
-
-2004-08-03  Kim F. Storm  <storm@cua.dk>
-
-       * indent.c (compute_motion): Fix check for full width window
-       in non-window case.  Do not count left truncation glyph on
-       window systems.
-
-2004-08-02  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * data.c (Finteractive_form): Doc fix.
-
-2004-08-02  Kim F. Storm  <storm@cua.dk>
-
-       * indent.c (compute_motion): Use actual window width if WIDTH is -1,
-       properly accounting for continuation glyph on non-window systems.
-       (Fcompute_motion): Use actual window width if WIDTH is nil, and
-       actual window width/height if TOPOS is nil, properly accounting for
-       continuation glyphs on non-window systems, and optional header lines.
-       (vmotion): Let compute_motion calculate actual window width.
-
-       * window.c (window_scroll_line_based): Let compute_motion
-       calculate actual window width.
-
-2004-08-02  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (read_process_output): Use whole read buffer.
-       Don't trigger adaptive read buffering on errors.
-
-2004-07-31  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keymap.c (Fset_keymap_parent, Fdefine_prefix_command): Doc fixes.
-
-       * keyboard.c (syms_of_keyboard) <disable-point-adjustment>: Doc fix.
-
-       * callint.c (Fcall_interactively): Doc fix.
-
-2004-07-30  Richard M. Stallman  <rms@gnu.org>
-
-       * abbrev.c (Fexpand_abbrev): Undo previous change.
-
-2004-07-30  Kim F. Storm  <storm@cua.dk>
-
-       * editfns.c (Fformat): Allocate extra (dummy) element in info.
-
-2004-07-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * eval.c (Fdefvar, Fdefconst): Doc fixes.
-
-2004-07-27  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (move_it_in_display_line_to): Check BUFFER_POS_REACHED_P after
-       we have ensured that the glyph fits on the current line (or returned
-       MOVE_LINE_CONTINUED otherwise).
-
-2004-07-26  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (move_it_in_display_line_to): If overflow-newline-into-fringe
-       is enabled, return MOVE_LINE_CONTINUED rather than MOVE_POS_MATCH_OR_ZV
-       if target position is at end of display line but char is not a newline.
-
-2004-07-25  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (coordinates_in_window): Return ON_SCROLL_BAR
-       instead of ON_VERTICAL_BORDER, when on scroll bar.
-       (Fcoordinates_in_window_p): Handle ON_SCROLL_BAR--return nil.
-
-       * dispextern.h (enum window_part): Add ON_SCROLL_BAR.
-
-       * window.c (Fcoordinates_in_window_p):
-       Take account of FRAME_INTERNAL_BORDER_WIDTH.
-
-       * alloc.c (check_cons_list): New function (contents commented out).
-
-2004-07-24  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * xfaces.c (Fcolor_supported_p): Doc fix.
-
-       * frame.c (Fselect_frame, Fset_frame_selected_window)
-       (Fframe_visible_p, Fraise_frame): Doc fixes.
-
-2004-07-24  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.h (not_single_kboard_state): Declare.
-
-       * fileio.c (Fwrite_region): Doc fix.
-
-       * window.c (Fwindow_at): Take account of FRAME_INTERNAL_BORDER_WIDTH.
-
-       * abbrev.c (Fexpand_abbrev): Run Qpre_abbrev_expand_hook
-       only when a real abbrev is present.
-
-       * xfns.c (x_icon_verify): New function.
-       (Fx_create_frame): Use it.
-
-2004-07-22  Barry Fishman  <barry_fishman@att.net>  (tiny change)
-
-       * s/gnu-linux.h: Use GC_MARK_STACK if __amd64__ is defined.
-
-2004-07-21  Kim F. Storm  <storm@cua.dk>
-
-       * window.h (struct glyph_matrix): New members nrows_scale_factor
-       and ncols_scale_factor.
-
-       * window.c (make_window): Initialize nrows_scale_factor and
-       ncols_scale_factor members.
-
-       * dispnew.c (margin_glyphs_to_reserve): Apply ncols_scale_factor.
-       (allocate_matrices_for_frame_redisplay): Fix left/right margin mix-up.
-       (required_matrix_height): Apply nrows_scale_factor.
-       (required_matrix_width): Apply ncols_scale_factor.
-
-       * xdisp.c (display_line): Increment nrows_scale_factor and set
-       fonts_changed_p if past last allocated row.
-       (append_glyph, append_composite_glyph, produce_image_glyph)
-       (append_stretch_glyph): Increment ncols_scale_factor and set
-       fonts_changed_p if current area is full.
-
-2004-07-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * widget.c (EmacsFrameDestroy): Don't abort if normal_gc is 0.
-
-2004-07-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * window.c (Fpos_visible_in_window_p, Fset_window_hscroll)
-       (Fwindow_inside_pixel_edges, Fwindow_end, Fset_window_point)
-       (Fset_window_start, Fscroll_up, Fscroll_down)
-       (Fother_window_for_scrolling, Fscroll_other_window)
-       (Fsave_window_excursion, Fset_window_vscroll)
-       (syms_of_window) <window-size-fixed>: Doc fixes.
-
-2004-07-19  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
-
-       * w32fns.c (Fx_file_dialog): Use ENCODE_FILE instead of
-       ENCODE_SYSTEM for filenames.
-
-2004-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (sys_select): Block input around call to
-       ReceiveNextEvent to prevent breakage.  Correctly handle
-       blocking on event queue only by calling ReceiveNextEvent
-       instead of select (since GUI events aren't on an fd).
-       (sys_read): Remove function
-       * sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON
-
-2004-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * mac.c (sys_select): Redo sys_select to use alarm-based
-       polling instead of 1 sec timeouts (like solaris).
-
-       * macterm.c (x_make_frame_visible): Comment in polling on
-       frame creation.
-
-       * keyboard.c: Undef SIGIO on Carbon
-
-       * atimer.c (alarm_signal_handler): Call alarm handlers after
-       scheduling.
-
-       * eval.c (Feval): Remove quit_char test
-
-       * process.c (wait_reading_process_input): Remove clearing
-       stdin for select call on process input.
-
-2004-07-18  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * xdisp.c (syms_of_xdisp) <window-scroll-functions>: Correct
-       capitalization error in docstring.
-
-2004-07-17  Juanma Barranquero  <lektu@terra.es>
-
-       * keyboard.c (not_single_kboard_state): Do nothing unless
-       MULTI_KBOARD is defined.
-
-2004-07-17  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (coordinates_in_window): Inside the window but outside
-       its box to the L or R, return ON_VERTICAL_BORDER.
-       (window_list_1): Rotate the list to start with WINDOW.
-
-       * print.c (print_preprocess): Test for print_depth at limit
-       before entering in being_printed.
-
-       * keyboard.c (not_single_kboard_state): New function.
-       (stuff_buffered_input): Now no-op only if no SIGTSTP.
-
-       * frame.c (Fdelete_frame): If we're in single_bboard_state on
-       this kboard, and we delete its last frame, go to any_kboard_state.
-
-       * buffer.c (syms_of_buffer) <transient-mark-mode>: Doc fix.
-
-2004-07-15  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
-
-       * w32fns.c (Fx_file_dialog): Encode strings in system coding
-       system before passing them to OS functions for display.
-
-2004-07-15  David Kastrup  <dak@gnu.org>
-
-       * search.c (syms_of_search): Staticpro `saved_last_thing_searched'.
-       Apparently fixes an abort condition.
-
-2004-07-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fileio.c (Fvisited_file_modtime): Return a list of two integers,
-       instead of a cons.
-
-2004-07-14  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
-
-       * keyboard.c (echo_dash): Do nothing if there already is a dash
-       at the end of the echo string.
-
-2004-07-12  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (mark_object): Only look at Lisp_Misc_Save_Value
-       if GC_MARK_STACK.
-
-2004-07-10  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffer.c (Fswitch_to_buffer, Fpop_to_buffer): Doc fixes.
-
-       * window.c (Fwindow_buffer, Fother_window, Fget_lru_window)
-       (Fget_largest_window, Fget_buffer_window, Fdelete_windows_on)
-       (Freplace_buffer_in_windows, Fset_window_buffer)
-       (Fselect-window, Fdisplay-buffer, Fsplit_window): Doc fixes.
-       (syms_of_window): Expand docstring of `display-buffer-function'.
-
-2004-07-09  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * editfns.c (Ffloat_time, Fformat_time_string, Fdecode_time)
-       (Fcurrent_time_string, Fcurrent_time_zone): Mention in docstrings
-       that time values of the type (HIGH . LOW) are considered obsolete.
-
-2004-07-06  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keyboard.c (syms_of_keyboard): Fix `keyboard-translate-table'
-       docstring.
-
-       * fns.c (Fclear_string): Declare `len' before call to CHECK_STRING.
-
-2004-07-06  John Paul Wallington  <jpw@gnu.org>
-
-       * eval.c (Fdefmacro): Signal an error if NAME is not a symbol.
-
-       * fns.c (Fclear_string): Signal an error if STRING is not a string.
-
-2004-07-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * macterm.c (mac_initialize_display_info): Use CGGetActiveDisplayList
-       instead of CGMainDisplayID (only in OSX 10.2 and later).
-
-2004-07-04  John Paul Wallington  <jpw@gnu.org>
-
-       * fileio.c (read_file_name_completion_ignore_case): New variable.
-       (syms_of_fileio): Declare and initialise it.
-       (Fread_file_name): Bind `completion-ignore-case' to respect it.
-
-2004-07-03  Eli Zaretskii  <eliz@gnu.org>
-
-       * msdos.c (dos_rawgetc): Use make_number to produce Lisp objects
-       for event.x and event.y.
-
-2004-07-01  Kenichi Handa  <handa@m17n.org>
-
-       * w32select.c (Fw32_set_clipboard_data): Update `nbytes' correctly
-       after getting a new string by pre-write-conversion.
-
-2004-06-30  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xterm.c (x_detect_focus_change): Remove unused var `nr_events'.
-       (x_calc_absolute_position): Remove unused var `child'.
-
-       * xfaces.c (x_supports_face_attributes_p)
-       (Fdisplay_supports_face_attributes_p): YAILOM.
-       (tty_supports_face_attributes_p): Remove unused var `i'.
-
-       * syntax.c (skip_chars): Remove unused labels fwd_unibyte_ok and
-       back_unibyte_ok.
-
-       * search.c (match_limit, Fmatch_data, Fset_match_data): YAILOM.
-
-       * fontset.c (Fset_fontset_font): Remove unused vars `family' and
-       `registry'.
-
-       * Makefile.in (${etc}DOC): Fix file name of make-docfile.
-
-2004-06-30  Andreas Schwab  <schwab@suse.de>
-
-       * image.c (CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
-       (Finit_image_library): Pass LIBRARIES through to
-       CHECK_LIB_AVAILABLE.  Declare parameters.  Doc fix.
-       (lookup_image_type): Pass Qnil as second argument to
-       Finit_image_library.
-
-       * lisp.h (Finit_image_library): Declare.
-
-2004-06-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (do_window_activate, do_window_deactivate): Remove.
-       (XTread_socket): Send mouse button events to the toolbox
-       dispatcher even when the mouse is grabbed.  Don't process window
-       activate events for non-Emacs windows.  Replace function calls to
-       do_window_activate and do_window_deactivate with their contents.
-       Reset mouse grabbing status when a window is deactivated.
-
-2004-06-29  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (mac_get_emulated_btn)
-       (mac_event_to_emacs_modifiers): Fix emulated mouse button
-       support to correctly mask out modifiers.
-
-2004-06-29  David Kastrup  <dak@gnu.org>
-
-       * search.c (Fset_match_data): Allow buffer before end of list
-       which can happen if set-match-data is using a pre-consed list.
-
-2004-06-28  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (XTread_socket): Correctly set the frame position
-       after the window is moved.
-
-2004-06-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_image_for_pixmap): Call g_object_unref on
-       gpix and gmask just before return to avoid memory leak.
-       (xg_get_image_for_pixmap): Add workaround for monochrome displays
-       so insensitive and activated icons look ok.
-
-2004-06-27  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (file_dialog_callback): Disable edit control if set
-       to directories only on CDN_INITDONE message.
-       (Fx_file_dialog): Default to directories only when prompt starts
-       with "Dired".
-
-2004-06-25  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (allocate_misc): Update total_free_markers.
-       (free_misc): New function.
-       (safe_alloca_unwind, free_marker): Use it.
-
-       * lisp.h (free_misc): Add prototype.
-
-       * fns.c (Fmapconcat, Fmapcar): Remove superfluous GCPROs.
-
-2004-06-24  Richard M. Stallman  <rms@gnu.org>
-
-       * emacs.c (Vsignal_USR1_hook, Vsignal_USR2_hook): Definitions deleted.
-       (syms_of_emacs): Lisp variables deleted.
-
-2004-06-23  David Kastrup  <dak@gnu.org>
-
-       * search.c (Freplace_match): Adjust the match-data more thoroughly
-       when replacing strings in the buffer.
-       (Fmatch_data): When INTEGERS is non-nil and the last match was in
-       a buffer, add the buffer as last element to the match data.
-       (Fset_match_data): If an additional element of the match-data is a
-       buffer, restore it to last_thing_searched.
-       (save_search_regs): Save last_thing_searched as part of the match data.
-       (restore_match_data): Restore it again.
-
-2004-06-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * keymap.c (Ftext_char_description): Doc fix.
-       * doc.c (Fsnarf_documentation): Doc fix.
-
-2004-06-22  Kim F. Storm  <storm@cua.dk>
-
-       * fns.c (Fmapcar, Fmapconcat): GCPRO the args array.
-
-       * lisp.h (struct Lisp_Save_Value): New member dogc.
-       (SAFE_ALLOCA_LISP): Change second arg to number of elements.
-       Set dogc member in Lisp_Save_Value object so it will be GC'ed.
-       (SAFE_FREE_LISP): New macro.
-
-       * alloc.c (safe_alloca_unwind): Clear dogc and pointer members.
-       (make_save_value): Init new dogc member.
-       (mark_object): Mark Lisp_Save_Value pointer array if dogc is set.
-
-       * fns.c (Fmapconcat, Fmapcar): Use new SAFE_ALLOCA_LISP and
-       SAFE_FREE_LISP macros.
-
-2004-06-22  Kim F. Storm  <storm@cua.dk>
-
-       * lisp.h (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects.
-       Temporarily inhibits GC if memory is xmalloc'ed, as the Lisp_Objects
-       in that memory area are unknown to GC.  Add comments.
-
-       * fns.c (Fmapconcat, Fmapcar): Use SAFE_ALLOCA_LISP.
-
-2004-06-21  Kim F. Storm  <storm@cua.dk>
-
-       * lisp.h (MAX_ALLOCA): Define here.
-       (safe_alloca_unwind): Add prototype.
-       (USE_SAFE_ALLOCA, SAFE_ALLOCA, SAFE_FREE): New macros.
-
-       * alloc.c (safe_alloca_unwind): New function.
-
-       * casefiddle.c (casify_object): Use SAFE_ALLOCA.
-
-       * charset.c (Fstring): Use SAFE_ALLOCA.
-
-       * coding.c (MAX_ALLOCA): Remove define.
-
-       * data.c (MAX_ALLOCA): Remove define.
-       (Faset): Use SAFE_ALLOCA.
-
-       * editfns.c (Fformat, Ftranspose_regions): Use SAFE_ALLOCA.
-
-       * fns.c (string_make_multibyte, string_to_multibyte)
-       (string_make_unibyte, Fmapconcat, Fmapcar): Use SAFE_ALLOCA.
-       (MAX_ALLOCA): Remove define.
-       (Fbase64_encode_region, Fbase64_encode_string)
-       (Fbase64_decode_region, Fbase64_decode_string): Use SAFE_ALLOCA.
-       (Fbase64_encode_region, Fbase64_encode_string): Fix potential
-       memory leak if encoding fails.
-
-       * xdisp.c (add_to_log): Use SAFE_ALLOCA.
-
-2004-06-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * print.c (Fwith_output_to_temp_buffer): Doc fix.
-
-2004-06-20  Richard M. Stallman  <rms@gnu.org>
-
-       * xfaces.c (Finternal_copy_lisp_face): Small cleanup; doc fix.
-
-       * search.c (match_limit): Cleaner err msg when no match data available.
-
-       * window.c (syms_of_window): Doc fix.
-
-       * keyboard.c (command_loop_1): Handle values `only' and `identity'
-       for Vtransient_mark_mode.
-
-       * buffer.c (syms_of_buffer): Doc fix.
-
-2004-06-21  David Kastrup  <dak@gnu.org>
-
-       * minibuf.c (Ftry_completion, Fall_completions): Do lazy binding
-       and unbinding of `case-fold-search' according to
-       `completion-ignore-case' around calls of string-match and
-       predicates, respectively.  Should give satisfactory performance
-       in all relevant cases.
-
-2004-06-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_draw_image_foreground_1): Subtract slice.x/y from
-       clip_x/y_origin.
-
-       * fns.c (string_to_multibyte): Use xmalloc/xfree instead of alloca.
-
-       * macfns.c (Fx_display_color_cells): Do not limit return value to 256.
-
-       * macterm.c (mac_initialize_display_info): Initialize n_planes correctly
-       on Mac OSX.
-
-2004-06-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffer.c (syms_of_buffer): Clarify `fill-column' docstring.
-
-2004-06-16  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (Vimage_types): Remove extern.
-
-2004-06-16  Miles Bader  <miles@gnu.org>
-
-       * image.c (lookup_image_type): Initialize image type if necessary.
-
-2004-06-15  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (try_cursor_movement): Exclude header line from scroll
-       margin at top of window.
-       (try_window_reusing_current_matrix): Calculate proper cursor position
-       after scrolling up with non-zero scroll margin, as the old cursor
-       position corresponds to value of PT before executing this command.
-       (try_window_id): Consider scroll margin at bottom of window too;
-       otherwise we fail to scroll when hl-line-mode is enabled.
-
-       * syntax.c (skip_chars): Only recognize [:class:] when it has the
-       proper format and class is a lower-case word.
-
-2004-06-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_get_image_for_pixmap): New function.
-       (xg_get_gdk_pixmap_and_mask): Remove.
-       (update_frame_tool_bar): Call xg_get_image_for_pixmap instead of
-       xg_get_gdk_pixmap_and_mask.
-
-       * xterm.h (struct x_display_info): Typo in comment fixed.
-
-2004-06-14  Juanma Barranquero  <lektu@terra.es>
-
-       * dispextern.h (Vimage_types): Make it conditional on
-       HAVE_WINDOW_SYSTEM.
-
-       * image.c (Vimage_types): Move from xdisp.c.
-       (Vimage_type_cache): New variable.
-       (define_image_type): New argument indicating whether an image
-       library was loaded; cache loaded status and return t on success,
-       nil otherwise.
-       (CACHE_IMAGE_TYPE, ADD_IMAGE_TYPE): New macros.
-       (w32_delayed_load): New function to load an image library from a
-       list of possible filenames.
-       (init_xpm_functions, init_png_functions, init_jpeg_functions)
-       (init_tiff_functions, init_gif_functions): Use `w32_delayed_load'.
-       (CHECK_LIB_AVAILABLE): Call `define_image_library' with new argument.
-       (Finit_image_library): New function, extracted from `init_image'.
-       Try to initialize an image library on demand and cache whether we
-       were successful or not.
-       (syms_of_image): Initialize `Vimage_types' and
-       `Vimage_type_cache'.  Add recognized image types to Vimage_types.
-       Export `init-image-library'.
-       (init_image): Remove initialization of all image types, except xbm
-       and pbm.
-
-       * xdisp.c (Vimage_types): Delete (moved to image.c).
-
-2004-06-14  Andreas Schwab  <schwab@suse.de>
-
-       * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
-       Avoid calling specbind when completion-regexp-list is empty.
-
-2004-06-13  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.h (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t)
-       (re_wctype, re_iswctype, re_wctype_to_bit):
-       Non-function definitions moved here from regex.c.
-
-       * regex.c (re_wctype, re_iswctype): Function defs longer static.
-       (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t)
-       (re_wctype, re_iswctype, re_wctype_to_bit):
-       Non-function definitions moved to regex.h.
-
-       * window.c (Fselect_window): Doc fix.
-
-       * syntax.c: Include regex.h.
-       (skip_chars): New arg HANDLE_ISO_CLASSES.  Callers changed.
-       If requested, make a list of classes, then check the scanned
-       chars for membership in them.
-       (in_classes): New function.
-       Doc fix.
-
-       * keyboard.c (cmd_error): Don't call any_kboard_state
-       if inside a recursive edit level.
-
-2004-06-13  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
-
-       * keyboard.c (command_loop): Call any_kboard_state before
-       command_loop_2 when at top level.
-
-2004-06-13  Andreas Schwab  <schwab@suse.de>
-
-       * print.c (print_object): Always use %ld for printing EMACS_INT.
-
-       * keyboard.c (cancel_hourglass_unwind): Return a value.
-       (modify_event_symbol): Always use %ld for printing EMACS_INT.
-       (Fexecute_extended_command): Likewise.
-
-       * syntax.h (SYNTAX_ENTRY_FOLLOW_PARENT): Rename local variable to
-       avoid clashes.
-       (SYNTAX): Likewise.
-       (SYNTAX_WITH_FLAGS): Likewise.
-       (SYNTAX_MATCH): Likewise.
-
-       * syntax.c (char_quoted): Avoid warning about undefined operation.
-       (find_defun_start): Likewise.
-       (scan_lists): Likewise.
-       (INC_FROM): Likewise.
-       (scan_sexps_forward): Likewise.
-
-       * image.c: Include <ctype.h>.
-
-       * xfaces.c (face_attr_equal_p): Declare parameters.
-
-2004-06-13  Kenichi Handa  <handa@m17n.org>
-
-       * ccl.c (CCL_READ_CHAR): If hit EOF, set REG to -1.
-
-2004-06-12  Matthew Mundell  <matt@mundell.ukfsn.org>
-
-       * eval.c (Fdefun): Signal an error if NAME is not a symbol.
-
-2004-06-12  Kenichi Handa  <handa@m17n.org>
-
-       * ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION): Save eof_ic in
-       ccl_prog_stack_struct and update it.
-       (CCL_INVALID_CMD): If CCL_DEBUG is defined, call ccl_debug_hook.
-       (CCL_READ_CHAR): Get instruction counter from eof_ic, not from
-       ccl->eof_ic on EOF.
-       (ccl_debug_hook): New function.
-       (struct ccl_prog_stack): New member eof_ic.
-       (ccl_driver): Handle EOF in subrountine call correctly.
-
-2004-06-11  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (encode_coding_string): Check CODING_FINISH_INTERRUPT.
-
-2004-06-11  Kim F. Storm  <storm@cua.dk>
-
-       * emacs.c (shut_down_emacs): Inhibit redisplay during shutdown.
-
-2004-06-11  Juanma Barranquero  <lektu@terra.es>
-
-       * keyboard.c (Fposn_at_point): Doc fix.
-
-2004-06-11  David Kastrup  <dak@gnu.org>
-
-       * search.c (match_limit): Don't flag an error if match-data
-       exceeding the allocated search_regs.num_regs gets requested, just
-       return Qnil.
-
-2004-06-08  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (push_named_merge_point): Return 0 when a cycle is detected.
-
-2004-06-07  Juanma Barranquero  <lektu@terra.es>
-
-       * editfns.c (Fuser_login_name, Ffloat_time, Fencode_time)
-       (Fcurrent_time_string, Fcurrent_time_zone)
-       (Finsert_buffer_substring, Ftranspose_regions): Doc fixes.
-
-2004-06-07  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (struct named_merge_point): New type.
-       (push_named_merge_point): New function.
-       (merge_named_face): New function.
-       (merge_face_ref, face_at_buffer_position, face_at_string_position):
-       Use `merge_named_face'.
-       (merge_face_inheritance): Function removed.
-       (merge_face_ref): Rename from `merge_face_vector_with_property'.
-       Add new `err_msgs' and `named_merge_points' args.  Return error
-       status.  Only print error messages if ERR_MSGS is true.  Don't try to
-       do :inherit attribute validation.
-       (merge_face_heights): Handle `unspecified' in both directions.
-       (merge_face_vectors): Rename `cycle_check' arg to `named_merge_points'.
-       Call `merge_face_ref' instead of `merge_face_inheritance'.
-       (Fdisplay_supports_face_attributes_p, Fface_attributes_as_vector)
-       (compute_char_face, face_at_buffer_position)
-       (face_at_string_position): Call `merge_face_ref' instead of
-       `merge_face_vector_with_property'.
-
-2004-06-07  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (find_safe_codings): Check NILP (safe_codings) only at
-       the necessary places.
-
-2004-06-07  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fdelete_process): Undo 2004-05-28 change.
-       Instead, call status_notify also for network process.
-       (status_message): Use process instead of status as arg.
-       Give messages "deleted" or "connection broken by remote peer" for
-       an exited network process.
-       (status_notify): Change call to status_message.
-       (read_process_output): Increase readmax to 4096.  Do not increase
-       buffer size for datagram channels (default is now large enough).
-
-2004-06-06  Steven Tamm  <tamm@Steven-Tamms-Computer.local>
-
-       * macfns.c (x_create_tip_frame): Fix Mac OS X 10.1 compilation
-       problem due to newly defined variable.
-
-2004-06-06  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (Fdisplay_supports_face_attributes_p): Give up
-       immediately if non-interactive or not initialized.
-
-2004-06-05  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.c (Fcompleting_read): Doc fix.
-
-2004-06-05  Andreas Schwab  <schwab@suse.de>
-
-       * macfns.c (x_create_tip_frame): Fix declaration after statement.
-
-2004-06-05  Juanma Barranquero  <lektu@terra.es>
-
-       * keymap.c (Fdescribe_vector): Fix docstring.
-       (Fkey_description, Fglobal_key_binding): Fix typo in docstring.
-
-2004-06-05  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (tty_supports_face_attributes_p): Make sure the specified
-       attributes have different values than the default face.
-
-2004-06-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * xfaces.c (x_supports_face_attributes_p): Make this function
-       conditional on HAVE_WINDOW_SYSTEM.
-       (Fdisplay_supports_face_attributes_p) [HAVE_WINDOW_SYSTEM]:
-       Don't call x_supports_face_attributes_p if it was not compiled in.
-
-2004-06-04  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (tty_supports_face_attributes_p): New function, mostly
-       from Ftty_supports_face_attributes_p.
-       (x_supports_face_attributes_p): New function.
-       (Ftty_supports_face_attributes_p): Function deleted.
-       (Fdisplay_supports_face_attributes_p): New function.
-       (syms_of_xfaces): Initialize Sdisplay_supports_face_attributes_p.
-       (face_attr_equal_p): New function.
-       (lface_equal_p): Use it.
-
-2004-06-03  Juanma Barranquero  <lektu@terra.es>
-
-       * w32fns.c (Fx_display_grayscale_p, Fw32_send_sys_command)
-       (Vw32_color_map): Fix typo in docstring.
-       (Fx_create_frame, Fw32_find_bdf_fonts, Fx_show_tip)
-       (Fw32_unregister_hot_key, Fw32_reconstruct_hot_key):
-       Make argument names match their use in docstring.
-
-2004-06-02  Juanma Barranquero  <lektu@terra.es>
-
-       Work around bugs/problems with MinGW builds of graphics libraries
-       called from MSVC builds of Emacs.
-
-       * image.c (lookup_image): Make pointer to img static.
-       (png_read_from_memory): Disable "global" optimization.
-
-2004-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * eval.c (Fcondition_case): Fix usage.  Simplify.
-
-       * mem-limits.h (EXCEEDS_LISP_PTR) [USE_LSB_TAG]: Never true.
-
-2004-05-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macfns.c: Don't include ccl.h.
-       [MAC_OSX]: Don't include QuickTime/QuickTime.h.
-       [!MAC_OSX]: Don't include alloca.h, Windows.h, Gestalt.h, or
-       TextUtils.h.
-       (Fx_create_frame): Sync with xfns.c.  Initialize cursor descriptors.
-       (Fx_display_mm_height, Fx_display_mm_width): Calculate length from
-       display height/width.
-       (compute_tip_xy, Vx_max_tooltip_size): Declare.
-       (unwind_create_tip_frame, compute_tip_xy): New functions.
-       (x_create_tip_frame, Fx_show_tip, Fx_hide_tip): Sync with xfns.c.
-       (syms_of_macfns): Initialize Qcancel_timer, Vx_max_tooltip_size,
-       and last_show_tip_args.
-
-       * macgui.h [!MAC_OSX]: Include Gestalt.h.
-       (Cursor, No_Cursor): New defines.
-       [!TARGET_API_MAC_CARBON] (SetPortWindowPort): New compatibility macro.
-       [!TARGET_API_MAC_CARBON] (arrow_cursor): Declare.
-
-       * macmenu.c (mac_menu_show, mac_dialog): Use SetPortWindowPort.
-
-       * macterm.c: Don't include Gestalt.h.
-       (enum mouse_tracking_type, mouse_tracking_in_progress): Remove.
-       (XDrawLine, XClearArea, XClearWindow, mac_draw_bitmap)
-       (mac_set_clip_rectangle, mac_reset_clipping, XCreatePixmap)
-       (XFillRectangle, mac_draw_rectangle, mac_draw_string_common)
-       (mac_copy_area, mac_copy_area_with_mask, x_update_end)
-       (construct_mouse_click, XTmouse_position)
-       (x_scroll_bar_report_motion, x_calc_absolute_position)
-       (do_mouse_moved, do_zoom_window, mac_do_receive_drag)
-       (XTread_socket, make_mac_frame): Use SetPortWindowPort.
-       (note_mouse_movement): Clear the mouse face and reset the pointer
-       shape when the pointer goes outside the frame without grabbing.
-       (mac_front_window): New function.
-       (mac_window_to_frame): New macro.
-       (XTmouse_position, x_scroll_bar_report_motion, do_window_update)
-       (do_window_activate, do_window_deactivate, do_app_resume)
-       (do_app_suspend, do_mouse_moved, do_menu_choice, do_grow_window)
-       (do_zoom_window, mac_do_receive_drag, XTread_socket)
-       (mac_check_for_quit_char): Use mac_front_window and/or
-       mac_window_to_frame.
-       (x_scroll_bar_handle_click): Set `(PORTION . WHOLE)' part in a
-       scroll-bar click event.
-       (mac_define_frame_cursor): Change the pointer shape.
-       (x_free_frame_resources): Reset tip_window to NULL when it is
-       disposed of.
-       [!TARGET_API_MAC_CARBON] (arrow_cursor): New variable.
-       [!TARGET_API_MAC_CARBON] (do_init_managers): Initialize arrow_cursor.
-       (do_window_update): Don't do anything if the updated window is the
-       tooltip window.
-       (do_mouse_moved): Handle mouse movement events here (previously in
-       XTread_socket).  Clear the mouse face if
-       dpyinfo->mouse_face_hidden is set.
-       (do_os_event, do_events): Remove (now in XTread_socket).
-       (XTread_socket): Immediately return if interrupt_input_blocked.
-       Loop until all the events in the queue are processed.
-       Rearrange codes for mouse grabbing.  Add tooltip support.  Include the
-       contents of do_os_event and do_events.  Remove mouse movement
-       handling (now in do_mouse_moved).  Add the case where
-       Vmouse_highlight has an integer value.
-       (NewMacWindow): Remove.
-       (make_mac_frame): Do what NewMacWindow previously did.  Don't do
-       excess initializations.
-       (make_mac_terminal_frame): Previous initializations in
-       make_mac_frame are moved here.
-       (mac_initialize_display_info):
-       Initialize dpyinfo->mouse_face_overlay and dpyinfo->mouse_face_hidden.
-
-       * xdisp.c [MAC_OS] (No_Cursor): Remove variable.
-       (define_frame_cursor1): Don't treat HAVE_CARBON as a special case.
-
-2004-05-29  Richard M. Stallman  <rms@gnu.org>
-
-       * lisp.h (truncate_undo_list): Update decl.
-
-       * alloc.c (undo_outer_limit): New variable.
-       (syms_of_alloc): Defvar it.
-       (Fgarbage_collect): Pass undo_outer_limit to truncate_undo_list.
-
-       * undo.c (truncate_undo_list): New arg LIMITSIZE.
-
-       * alloc.c (lisp_align_malloc): Check for base == 0
-       regardless of HAVE_POSIX_MEMALIGN.
-       Clean up HAVE_POSIX_MEMALIGN handling of `err'.
-
-2004-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c: Undo Kim's recent changes and fix the same bug differently.
-       (marker_blocks_pending_free): Remove.
-       (Fgarbage_collect): Sweep after cleaning up undo-lists.
-       Mark the undo lists after claning them up.
-       Don't free block in marker_blocks_pending_free.
-       (mark_buffer): Don't mark undo_list.
-       (gc_sweep): Sweep hash-tables and strings first.
-       Do free marker blocks that are empty.
-
-2004-05-28  Jim Blandy  <jimb@redhat.com>
-
-       * regex.c (print_partial_compiled_pattern): Add missing 'break'
-       after 'case wordend'.  For symbeg and symend, print to stderr,
-       like the other cases.
-
-2004-05-28  Noah Friedman  <friedman@splode.com>
-
-       * process.c (Fdelete_process): Do not call remove_process.
-
-2004-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c (struct backtrace): Remove.
-       (Fgarbage_collect): Use the new mark_backtrace.
-
-       * eval.c (mark_backtrace): New function.
-
-       * minibuf.c (run_exit_minibuf_hook): New function.
-       (read_minibuf_unwind): Don't run exit-minibuffer-hook any more.
-       (read_minibuf): Use separate unwind handler to run exit-minibuf-hook.
-
-2004-05-27  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (back_to_previous_visible_line_start): Skip backwards
-       over display properties, e.g. images, that replace buffer text.
-
-2004-05-25  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (marker_blocks_pending_free): New var.
-       (gc_sweep): Store free marker blocks on that list.
-       (Fgarbage_collect): Free them after undo-list cleanup.
-
-       * process.c (wait_reading_process_input): Check connect_wait_mask
-       before actually accepting connection in case it has already been
-       accepted due to recursion.
-
-2004-05-23  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
-
-       * coding.c (Fset_safe_terminal_coding_system_internal):
-       Set suppress_error in safe_terminal_coding, not terminal_coding.
-
-2004-05-22  Richard M. Stallman  <rms@gnu.org>
-
-       * alloc.c (Fmake_string): Doc fix.
-
-       * buffer.c (clone_per_buffer_values): Copy the alist of local vars,
-       and the alist pairs too.
-
-       * casefiddle.c (casify_object): Return OBJ unchanged if not real char.
-
-       * emacs.c (main): Update copyright year.
-
-       * fileio.c (Fread_file_name): Expand DIR if not absolute.
-
-       * insdel.c (del_range_2, replace_range): Don't write an anchor
-       if the gap is empty.
-
-       * xdisp.c (try_scrolling): If scroll-up-aggressively or
-       scroll-down-aggressively is small but positive, put point
-       near the screen edge.
-
-2004-05-22  Juanma Barranquero  <lektu@terra.es>
-
-       * keymap.c (Fdefine_key): Doc fix.
-
-2004-05-22  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (struct backtrace): Add debug_on_exit member.
-       (Fgarbage_collect): Clear out buffer undo_list markers after gc_sweep.
-       Identify those markers as Lisp_Misc_Free objects.  Clear car and cdr of
-       the removed cons cells.
-       (mark_object): Undo previous change - disallow Lisp_Misc_Free objects.
-       (gc_sweep): Clear cons_blocks before sweeping strings, so we don't have
-       any cons cells pointing to unallocated stings.
-       Do not lisp_free any marker blocks, as there may still be pointers
-       to them from buffer undo lists at this stage of GC.
-
-       * keyboard.c (struct backtrace): Add debug_on_exit member.
-       (Fcommand_execute): Clear it.
-
-2004-05-20  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * intervals.c (lookup_char_property): Do not prematurely return nil.
-
-2004-05-19  Jim Blandy  <jimb@redhat.com>
-
-       Add support for new '\_<' and '\_>' regexp operators, matching the
-       beginning and end of symbols.
-
-       * regex.c (enum syntaxcode): Add Ssymbol.
-       (init_syntax_once): Set the syntax for '_' to Ssymbol, not Sword.
-       (re_opcode_t): New opcodes `symbeg' and `symend'.
-       (print_partial_compiled_pattern): Print the new opcodes properly.
-       (regex_compile): Parse the new operators.
-       (analyse_first): Skip sym(beg|end) (they match only the empty string).
-       (mutually_exclusive_p): `symend' is mutually exclusive with \s_ and
-       \sw; `symbeg' is mutually exclusive with \S_ and \Sw.
-       (re_match_2_internal): Match symbeg and symend.
-
-       * search.c (trivial_regexp_p): \_ is no longer a trivial regexp.
-
-2004-05-19  Kim F. Storm  <storm@cua.dk>
-
-       * .gdbinit (xsymbol): Fix last change.
-
-2004-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * .gdbinit (xprintstr): New fun.
-       (xstring, xprintsym): Use it.
-
-       * w32proc.c (create_child): Use INTMASK.
-
-       * alloc.c (Fgarbage_collect): Do all the marking before flushing
-       unmarked elements of the undo list.
-
-2004-05-18  David Ponce  <david@dponce.com>
-
-       * print.c (print): Reset print_depth before to call print_object.
-
-2004-05-18  Jason Rumney  <jasonr@gnu.org>
-
-       * w32console.c: Prefix RIF functions with w32con_ to avoid
-       namespace clash with functions in term.c and w32term.c.
-
-       * w32menu.c (add_menu_item, w32_menu_display_help)
-       [USE_LISP_UNION_TYPE]: Cast from Lisp_Object using i member.
-
-       * w32term.h (display_x_get_resource, vga_stdcolor_name): Add prototype.
-
-2004-05-18  Eli Zaretskii  <eliz@gnu.org>
-
-       * lisp.h (DECL_ALIGN): Remove restriction on MS-DOS systems.
-
-       * msdos.c (syms_of_msdos): Initialize dos-unsupported-char-glyph
-       with make_number.
-       (IT_write_glyphs): Extract glyph from dos-unsupported-char-glyph
-       with XINT.
-
-2004-05-18  Kim F. Storm  <storm@cua.dk>
-
-       * blockinput.h (INPUT_BLOCKED_P): New macros.
-
-       * keyboard.c (Frecursive_edit): Return immediately if input blocked.
-       (Ftop_level): Unblock input if blocked.
-
-       * buffer.h (GET_OVERLAYS_AT): New macro.
-       * msdos.c (IT_note_mouse_highlight): Use it.
-       * textprop.c (get_char_property_and_overlay): Use it.
-       * xdisp.c (next_overlay_change, note_mouse_highlight): Use it.
-       * xfaces.c (face_at_buffer_position): Use it.
-
-       * print.c (print_object): Increase buf size.
-
-2004-05-17  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Fw32_register_hot_key, Fw32_unregister_hot_key)
-       (Fw32_toggle_lock_key) [USE_LISP_UNION_TYPE]: Cast from
-       Lisp_Object using i member.
-       (w32_quit_key): Rename from Vw32_quit_key, and make an int.
-       (syms_of_w32fns, globals_of_w32fns): Use Lisp_Object and int
-       consistently.
-
-       * w32proc.c (create_child): Use make_number instead of masking pid.
-
-       * w32fns.c (w32_color_map_lookup): Return a Lisp_Object.
-       (x_to_w32_charset, w32_to_x_charset, w32_to_all_x_charsets):
-       Use EQ to compare Lisp_Objects.
-       (w32_parse_hot_key): Use int for lisp_modifiers consistently.
-
-       * w32term.c (w32_num_mouse_buttons): Rename from
-       Vw32_num_mouse_buttons and make it an int.
-
-       * w32.c (init_environment): Use it.
-
-       * w32fns.c (w32_wnd_proc): Likewise.
-
-       * w32proc.c (w32_pipe_read_delay): Rename from
-       Vw32_pipe_read_delay and make it an int.
-
-       * w32.c (_sys_read_ahead): Use it.
-
-       * lisp.h (egetenv) [USE_CRT_DLL]: Remove condition.
-
-       * w32proc.c (create_child) [USE_LSB_TAG]: Don't try to mask pid.
-
-       * w32inevt.c (w32_console_mouse_position, do_mouse_event)
-       (key_event): Don't mix Lisp_Object and int.
-
-       * w32heap.c (init_heap) [USE_LSB_TAG]: Don't check heap location.
-
-       * keyboard.c (kbd_buffer_get_event): Don't use event->code and
-       modifiers in language change event.
-
-2004-05-17  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (mark_object): Ignore Lisp_Misc_Free objects.
-       Such objects may be freed markers which still exist on an undo list.
-
-2004-05-16  Juanma Barranquero  <lektu@terra.es>
-
-       * data.c (Fset_default): Make argument names match their use in
-       docstring.
-
-2004-05-15  Andreas Schwab  <schwab@suse.de>
-
-       * emacs.c (gdb_array_mark_flag): Define.
-       * .gdbinit: Mask off gdb_array_mark_flag from vector sizes.
-
-2004-05-15  Eli Zaretskii  <eliz@gnu.org>
-
-       * lisp.h (DECL_ALIGN) [MSDOS]: Don't define DECL_ALIGN to use
-       __attribute__((__aligned__)), so that USE_LSB_TAG would not become
-       defined for the MS-DOS build.
-
-2004-05-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * w32fns.c (Fw32_define_rgb_color): Avoid XSET.
-
-2004-05-14  Kenichi Handa  <handa@m17n.org>
-
-       * ccl.c (Fccl_execute_on_string): Fix setting elements of STATUS.
-
-2004-05-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * lisp.h (Vx_resource_name, Vx_resource_class): Move from xfns.c
-       section to frame.c section.
-       (Fxw_display_color_p, Fx_file_dialog): Declare if
-       HAVE_WINDOW_SYSTEM defined.
-
-       * macfns.c (Fx_create_frame): Fix int/Lisp_Object mixup.
-
-       * macmenu.c (set_frame_menubar): Use NILP to test a lisp value.
-
-       * macterm.c (mac_get_emulated_btn, mac_event_to_emacs_modifiers)
-       (mac_get_mouse_btn): Use NILP and EQ to test/compare lisp values.
-       (XTread_socket): Fix int/Lisp_Object mixup.
-       (mac_check_for_quit_char): Fix pointer/Lisp_Object mixup.
-
-       * macterm.h (struct frame, struct face, struct image)
-       (display_x_get_resource, Fx_display_color_p)
-       (Fx_display_grayscale_p, Fx_display_planes, x_free_gcs):
-       Add prototypes.
-
-2004-05-14  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (wait_reading_process_input): Make reentrant.
-       Make Available and Connecting non-static.  Save and restore value
-       of waiting_for_user_input_p.
-
-2004-05-13  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (mark_kboards): Don't mark x and y members
-       that are overloaded in selection request events.
-
-2004-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lisp.h (USE_LSB_TAG): Make it the default when it is known to work.
-
-2004-05-13  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * window.c (Fdisplay_buffer, Fsplit_window)
-       (split-height-threshold): Doc fix.
-
-2004-05-13  Juanma Barranquero  <lektu@terra.es>
-
-       * xfaces.c (Ftty_supports_face_attributes_p)
-       (Finternal_copy_lisp_face): Fix typo in docstring.
-       (Finternal_get_lisp_face_attribute): Fix docstring.
-
-2004-05-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (syms_of_xfns): Provide x-toolkit also for GTK.
-
-2004-05-11  Steven Tamm  <steventamm@mac.com>
-
-       * macfns.c (Fx_create_frame): Default to using tool-bar by
-       setting tool-bar-lines to 1 in default-frame-alist.
-
-2004-05-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * image.c (xpm_scan, xpm_make_color_table_v, xpm_put_color_table_v)
-       (xpm_get_color_table_v, xpm_make_color_table_h)
-       (xpm_put_color_table_h, xpm_get_color_table_h)
-       (xpm_str_to_color_key, xpm_load_image, xpm_load)
-       (syms_of_image): Support XPM on Carbon Emacs.  Does not
-       depend on libXpm, but only supports XPM version 3 without extensions.
-
-2004-05-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P
-       instead of FRAME_X_P
-
-2004-05-11  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (read_process_output): Grow decoding_buf when needed;
-       this could cause a crash in allocate_string and compact_small_strings.
-
-2004-04-29  Jim Blandy  <jimb@redhat.com>
-
-       * regex.c (mutually_exclusive_p): In 'case wordbeg', compare op2
-       against proper opcode.
-
-2004-05-10  Juanma Barranquero  <lektu@terra.es>
-
-       * process.c (Fstart_process): Fix docstring.
-
-       * charset.c (Fget_unused_iso_final_char): Fix typos in docstring.
-       (Fchar_bytes, Fchar_width, Fstring_width, Fchar_direction)
-       (Fsplit_char, Fchar_charset): Make argument names match their use
-       in docstring.
-
-2004-05-10  Richard M. Stallman  <rms@gnu.org>
-
-       * print.c (print_preprocess): Use being_printed, loop_count and
-       halftail to detect overdeep nesting and cyclic cdr chains.
-
-2004-05-10  Andreas Schwab  <schwab@suse.de>
-
-       * lisp.h (Fmake_symbolic_link): Declare.
-
-       * fileio.c (Frename_file): Remove extra argument in call to
-       Fmake_symbolic_link.
-
-2004-05-10  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (calc_line_height_property): Use string position when
-       object is a string.
-
-2004-05-10  Kenichi Handa  <handa@m17n.org>
-
-       * print.c (temp_output_buffer_setup): Bind inhibit-read-only and
-       inhibit-modification-hooks to t temporarily before calling
-       Ferase_buffer.
-
-       * xfns.c (x_create_tip_frame): Bind inhibit-read-only and
-       inhibit-modification-hooks to t temporarily before calling
-       Ferase_buffer.
-
-       * w32fns.c (x_create_tip_frame): Bind inhibit-read-only and
-       inhibit-modification-hooks to t temporarily before calling
-       Ferase_buffer.
-
-       * fns.c (count_combining): Delete it.
-       (concat): Don't check combining bytes.
-
-2004-05-09  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Vw32_ansi_code_page): New Lisp variable.
-       (globals_of_w32fns): Set it.
-
-2004-05-09  Piet van Oostrum  <piet@cs.uu.nl>
-
-       * data.c (Fquo): Simplify.
-
-2004-05-08  Peter Whaite  <emacs@whaite.ca>  (tiny change)
-
-       * data.c (Fquo): If any argument is float, do the computation in
-       floating point.
-
-2004-05-08  Juanma Barranquero  <lektu@terra.es>
-
-       * process.c (Fwaiting_for_user_input_p, Fmake_network_process)
-       (Fset_process_query_on_exit_flag, Vprocess_adaptive_read_buffering):
-       Fix spelling of Emacs on docstring.
-       (Fset_process_coding_system, Fprocess_coding_system)
-       (Fset_process_filter_multibyte, Fprocess_filter_multibyte_p):
-       Make argument names match their use in docstring.
-       (Fprocess_id, Fprocess_query_on_exit_flag, Finterrupt_process):
-       Fix docstring.
-
-       * editfns.c (Finsert_buffer_substring): Make argument names match their
-       use in docstring.
-
-       * syntax.c (Fmodify_syntax_entry): Fix docstring.
-
-2004-05-07  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (mac_check_for_quit_char): Adding BLOCK_INPUT
-       around call to ReceiveEvent to avoid certain crashes.
-
-2004-05-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (mac_draw_line_to_pixmap, XCreatePixmapFromBitmapData)
-       (mac_fill_rectangle_to_pixmap, mac_draw_rectangle_to_pixmap)
-       (mac_copy_area_to_pixmap, mac_copy_area_with_mask_to_pixmap):
-       Save/restore the current graphics port and device handle when
-       drawing into an offscreen graphics world.
-
-       * image.c [MAC_OS] (XPutPixel, XGetPixel, image_load_qt_1)
-       (gif_load): Likewise.
-
-2004-05-07  Juanma Barranquero  <lektu@terra.es>
-
-       * window.c (Fset_window_buffer): Fix docstring.
-
-2004-05-06  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * emacs.c (main) [VMS]: Fix var ref.
-
-2004-05-06  Romain Francoise  <romain@orebokech.com>
-
-       * data.c (Fsetq_default): Fix docstring.
-
-2004-05-06  Jason Rumney  <jasonr@gnu.org>
-
-       * image.c (Display) [HAVE_NTGUI]: Redefine while loading xpm.h
-       to avoid name clash.
-
-2004-05-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * fileio.c (barf_or_query_if_file_exists): Use lstat.
-       (Frename_file): Handle renaming of symlinks across file systems.
-       (Frename_file): Put symlink handling inside #ifdef S_IFLNK.
-
-2004-05-04  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (Qtotal): New var.
-       (syms_of_xdisp): Intern and staticpro it.
-       (calc_line_height_property): New arg total.  Set it if
-       line-spacing property has format (total . VALUE).
-       (x_produce_glyphs): Ignore line-spacing if line-height is 0.
-       Handle total line-spacing property.
-
-2004-05-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear
-       "under" scroll bar when size/position changes.
-
-2004-05-03  Jason Rumney  <jasonr@gnu.org>
-
-       * makefile.nt: Remove.
-
-2004-05-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT):
-       Avoid compiler warnings.
-
-       * Makefile.in (region-cache.o): Depend on config.h.
-
-2004-05-02  Romain Francoise  <romain@orebokech.com>
-
-       * indent.c (compute_motion): Save vpos in prev_vpos when dealing
-       with continuation lines, too.
-
-2004-05-02  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * syssignal.h (init_signals): Move decl outside `#ifdef POSIX_SIGNALS'.
-
-2004-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xdisp.c (calc_line_height_property): YAILOM (yet another
-       int/Lisp_Object mixup).
-
-2004-05-01  Eli Zaretskii  <eliz@gnu.org>
-
-       * msdos.c (top-level): Add "#pragma pack(0)" after <dir.h>, to
-       undo bad effect of pack(4) in some versions of system headers.
-
-2004-05-01  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (x_draw_hollow_cursor): Sync with xterm.c
-
-2004-04-30  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (syms_of_buffer) <line-spacing>: Allow float value.
-       (syms_of_buffer) <cursor-type>: Doc fix.
-
-       * dispextern.h (struct it): Remove member use_default_face.
-       Add members override_ascent, override_descent, override_boff.
-
-       * xdisp.c (init_iterator): Handle line-spacing float value.
-       Initialize override_ascent member.
-       (append_space_for_newline): Reset override_ascent.
-       Remove use_default_face.
-       (calc_line_height_property): New function to calculate value of
-       line-height and line-spacing properties.  Look at overlays, too.
-       Set override_ascent, override_descent, override_boff members when
-       using another face than the current face.  Float values are now
-       relative to the frame default font, by default; accept a cons
-       of ratio and face name to specify value relative to a specific face.
-       (x_produce_glyphs): Use calc_line_height_property.
-       Use override_ascent etc. when set to handle different face heights.
-       A negative line-spacing property value is interpreted as a total
-       line height, rather than inter-line spacing.
-       (note_mouse_highlight): Allocate room for 40 overlays initially.
-
-2004-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * data.c (Fsubr_name): New fun.
-       (syms_of_data): Defsubr it.
-
-2004-04-29  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (null_glyph_slice): New var.
-       (append_glyph, append_composite_glyph, append_stretch_glyph):
-       Use it to initialize glyph slice.
-
-2004-04-27  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xdisp.c (x_produce_glyphs): Fix the proverbial int/Lisp_Object mixup.
-       (on_hot_spot_p): Make sure we always return a value.
-       (Flookup_image_map): Remove unused var ix and iy.
-       (note_mode_line_or_margin_highlight): Remove unused var `image'.
-
-2004-04-27  Eli Zaretskii  <eliz@gnu.org>
-
-       * msdos.c (init_environment): If one of the TMP... environment
-       variables is set to a drive letter without a trailing slash,
-       append a slash.
-
-2004-04-27  Matthew Mundell  <matt@mundell.ukfsn.org>
-
-       * editfns.c (lisp_time_argument): Provide externally.
-
-       * fileio.c (Fset_file_times): New function.
-       (syms_of_fileio): Intern and staticpro it.
-
-2004-04-27  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (x_produce_glyphs): Fix last change; handle newline in
-       header line strings.
-
-       * dispextern.h (struct it): New member use_default_face.
-
-       * xdisp.c (Qline_height): New variable.
-       (syms_of_xdisp): Intern and staticpro it.
-       (append_space_for_newline): Partially undo 2004-04-25 change;
-       add default_face_p arg, and restore callers.
-       Clear it->use_default_face after use.
-       (x_produce_glyphs): Set default font for ascii char if
-       it->use_default_font is set.  Change line-spacing property to set
-       just extra line spacing.  Handle new line-height property.
-
-2004-04-26  Andreas Schwab  <schwab@suse.de>
-
-       * print.c (print_object): Print non-ascii characters in bool
-       vector representation as octal escapes.
-
-       * lisp.h (BOOL_VECTOR_BITS_PER_CHAR): Define.
-       * print.c (print_object): Use it instead of BITS_PER_CHAR for
-       bool vectors.
-       * lread.c (read1): Likewise.
-       * alloc.c (Fmake_bool_vector): Likewise.
-       * data.c (Faref, Faset): Likewise.
-       * fns.c (Fcopy_sequence, concat, internal_equal, Ffillarray)
-       (mapcar1): Likewise.
-
-2004-04-26  Steven Tamm  <tamm@Steven-Tamms-Computer.local>
-
-       * lread.c (init_lread): Fix typo in HAVE_CARBON test logic.
-
-2004-04-26  Miles Bader  <miles@gnu.org>
-
-       * lisp.h (CYCLE_CHECK): Macro moved from xfaces.c.
-
-2004-04-26  Juanma Barranquero  <lektu@terra.es>
-
-       * buffer.c (Fpop_to_buffer): Fix docstring.
-
-2004-04-26  Steven Tamm  <steventamm@mac.com>
-
-       * lread.c (init_lread): Don't display missing lisp directory
-       warnings with Carbon Emacs because self-contained bundled Emacs
-       may be built without correct installation path.
-
-2004-04-25  Kim F. Storm  <storm@cua.dk>
-
-       * macterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines.
-
-       * xterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines.
-
-       * xdisp.c (append_space_for_newline): Rename from append_space.
-       Remove DEFAULT_FACE_P arg; always use current face.  Callers changed.
-       (x_produce_glyphs): Handle line-spacing property on newline char.
-       If value is t, adjust ascent and descent to fit current row height.
-       If value is an integer or float, set extra_line_spacing to integer
-       value, or to float value x current line height.
-
-2004-04-23  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (Finternal_char_font): If POSITION is nil, return
-       font for displaying CH with the default face.
-
-2004-04-23  Juanma Barranquero  <lektu@terra.es>
-
-       * makefile.w32-in: Add "-*- makefile -*-" mode tag.
-
-2004-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lisp.h (XINT) [EXPLICIT_SIGN_EXTEND && !NO_UNION_TYPE]:
-       Don't make assumptions about the relative place of i and val.
-       (EQ) [!NO_UNION_TYPE]: Don't forget to check the type match as well.
-
-2004-04-21  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (struct glyph_slice): New struct.
-       (struct glyph): New member slice.
-       (GLYPH_SLICE_EQUAL_P): New macro.
-       (GLYPH_EQUAL_P): Use it.
-       (struct glyph_string): New member slice.
-       (struct it_slice): New struct.
-       (struct it): New member slice, add member to stack too.
-       New member constrain_row_ascent_descent_p.
-       (image_ascent): Add prototype.
-
-       * dispnew.c (buffer_posn_from_coords): Return full image width
-       and height even for image slices (posn is relative to full image).
-       (marginal_area_string): Adjust x0,y0 for image slice.
-
-       * image.c (image_ascent): Add slice arg; calculate ascent for
-       image slice (or full image).
-
-       * keyboard.c (Fposn_at_x_y, Fposn_at_point): New defuns.
-       (syms_of_keyboard): Defsubr them.
-
-       * lisp.h (pos_visible_p): Fix prototype.
-
-       * macterm.c (x_draw_relief_rect): Add top_p and bot_p args.
-       (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
-       (x_draw_image_foreground, x_draw_image_relief)
-       (x_draw_image_foreground_1, x_draw_image_glyph_string):
-       Draw sliced images.
-
-       * w32term.c (w32_draw_relief_rect): Add top_p and bot_p args.
-       (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
-       (x_draw_image_foreground, x_draw_image_relief)
-       (w32_draw_image_foreground_1, x_draw_image_glyph_string):
-       Draw sliced images.
-
-       * w32term.h (image_ascent): Remove prototype.
-
-       * window.c (Fpos_visible_in_window_p): Return pixel position if
-       PARTIALLY arg is non-nil.  Simplify.  Doc fix.
-       (Fwindow_vscroll, Fset_window_vscroll): Add optional PIXEL_P arg
-       to return/set vscroll in pixels.
-
-       * window.h (Fwindow_vscroll, Fset_window_vscroll): Fix EXFUN.
-
-       * xdisp.c (Qslice): New variable.
-       (syms_of_xdisp): Intern and staticpro it.
-       (pos_visible_p): Return pixel position in new x and y args.
-       (init_iterator): Reset it->slice info.
-       (handle_display_prop): Parse (slice ...) property.
-       (push_it, pop_it): Save/restore slice info.
-       (make_cursor_line_fully_visible): Fix 2004-04-14 change.  Do not
-       force repositioning of tall row if window is vscrolled, as that
-       would reset vscroll.
-       (append_space): Set it->constrain_row_ascent_descent_p to avoid
-       increasing row height if row is non-empty.
-       (fill_image_glyph_string): Copy slice info.
-       (take_vertical_position_into_account): Simplify.
-       (produce_image_glyph): Handle iterator slice info, setup glyph
-       slice info.  Do not force minimum line height.
-       (x_produce_glyphs): If it->constrain_row_ascent_descent_p is set,
-       do not increase height (ascent/descent) of non-empty row when
-       adding normal character glyph; instead reduce glyph ascent/descent
-       appropriately; if row is higher than current glyph, adjust glyph
-       descent/ascent to reposition glyph within the existing row.
-       Likewise, when char is newline, only set ascent/descent if row is
-       currently empty.
-       (note_mouse_highlight): Handle hotspots with sliced image.
-
-       * xterm.c (x_draw_relief_rect): Add top_p and bot_p args.
-       (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
-       (x_draw_image_foreground, x_draw_image_relief)
-       (x_draw_image_foreground_1, x_draw_image_glyph_string):
-       Draw sliced images.
-
-       * xterm.h (image_ascent): Remove prototype.
-
-2004-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (Fkey_description): Fix the usual int/Lisp_Object mixup.
-
-2004-04-20  John Paul Wallington  <jpw@gnu.org>
-
-       * fns.c (Fassoc, Feql): Fix indentation.
-
-       * fontset.c (regularize_fontname): Rename from regulalize_fontname.
-
-2004-04-19  John Paul Wallington  <jpw@gnu.org>
-
-       * fns.c (Feql): New function.
-       (syms_of_fns): Defsubr it.
-
-2004-04-18  Jason Rumney  <jasonr@gnu.org>
-
-       * w32select.c (Fw32_set_clipboard_data): Get sequence number
-       after closing the clipboard.
-
-2004-04-16  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffer.c (Fbuffer_base_buffer): Doc fix.
-
-2004-04-17  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (Fkey_description): Add optional PREFIX arg.
-       Combine prefix with KEYS to make up the full key sequence to describe.
-       Correlate meta_prefix_char and following (simple) key to describe
-       as meta modifier.  All callers changed.
-       (describe_map): Rename arg `keys' to `prefix'.  Remove local
-       `elt_prefix' var.  Use Fkey_description with prefix instead of
-       elt_prefix combined with Fsingle_key_description.
-       (describe_vector): Declare static.  Replace arg `elt_prefix' with
-       `prefix'.  Add KEYMAP_P arg.  Add local var `elt_prefix'; use it
-       if !KEYMAP_P.  Use Fkey_description with prefix instead of
-       Fsingle_key_description.
-
-       * keymap.h (Fkey_description): Fix prototype.
-       (describe_vector): Remove prototype.
-
-       * xdisp.c (update_overlay_arrows): Fix handling of up_to_date < 0.
-
-       * image.c (PNG_BG_COLOR_SHIFT): Remove.
-       (png_load): Fix calculation of transparent background color on X
-       and W32 platforms.
-
-2004-04-16  Juanma Barranquero  <lektu@terra.es>
-
-       * xdisp.c (try_scrolling): Make sure `scroll-conservatively' is
-       not too large before computing how much to scroll.
-
-2004-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * dired.c (Ffile_attributes): Don't pass extra nil arg to file-handler.
-
-2004-04-14  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fileio.c (Fverify_visited_file_modtime, Fvisited_file_modtime):
-       Add hyperlink to Elisp manual to the docstring.
-
-2004-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * callint.c (fix_command): Use XDCR.
-
-2004-04-14  Nick Roberts  <nick@nick.uklinux.net>
-
-       * window.c (Fget_lru_window): Doc fix.
-
-2004-04-14  Kim F. Storm  <storm@cua.dk>
-
-       * editfns.c (Fformat): Fix allocation size of precision array.
-
-       * dispnew.c (update_window): Only set changed_p if
-       scrolling_window actually did scroll.
-       (scrolling_window): Only return 1 if we actually did scroll.
-
-       * xdisp.c (get_glyph_string_clip_rect): Fix reduction of cursor
-       height to glyph height when cursor row is not fully visible.
-       (make_cursor_line_fully_visible): Add FORCE_P arg to return
-       failure in case row is higher than window.  Callers changed.
-       (try_scrolling): Fix loop in scrolling if last_line_misfit (from Gerd).
-       Try to scroll partially visible, higher-than-window cursor row.
-       (redisplay_window): Always try to scroll partially visible,
-       higher-than-window cursor row - both initially and again with
-       centering_position = 0.
-       Clear desired matrix before retrying with centering_position = 0.
-
-2004-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * syntax.c (scan_lists): Simplify backward string scan.
-       Fix off-by-one boundary check for string and comment fences.
-
-2004-04-13  Joe Buehler  <jbuehler@hekimian.com>
-
-       * sheap.c, unexcw.c: New files.
-
-2004-04-12  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffer.c (Fmake_indirect_buffer): Throw an error if the intended
-       base buffer has been killed.  Correct the error message if the
-       base buffer does not exist.
-
-2004-04-12  Joe Buehler  <jbuehler@hekimian.com>
-
-       * s/cygwin.h: Changes for Cygwin unexec() support, changes in
-       Cygwin itself.  Add support for Xaw3d scrollbars.
-
-       * puresize.h: Set up PURE_P() for Cygwin unexec() support.
-
-       * lastfile.c: Define my_endbss[] for Cygwin unexec() support.
-
-       * gmalloc.c (__default_morecore): Use bss_sbrk(), not __sbrk(),
-       before Cygwin unexec.
-
-       * Makefile.in: Link changes for Cygwin unexec() support.
-
-2004-04-12  Andreas Schwab  <schwab@suse.de>
-
-       * buffer.c (Fmake_indirect_buffer): Check that NAME is a string.
-
-2004-04-11  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * buffer.c (Fgenerate_new_buffer_name): Return NAME argument if
-       IGNORE argument equals NAME.  Doc fix.
-
-2004-04-11  Masatake YAMATO  <jet@gyve.org>
-
-       * buffer.c (fix_start_end_in_overlays): Make overlays
-       empty if they are backwards.
-
-2004-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * xfaces.c (face_color_supported_p): Fix compilation without X11.
-
-2004-04-07  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * doc.c (Fsnarf_documentation): Ignore new file name entries.
-
-2004-04-06  Kim F. Storm  <storm@cua.dk>
-
-       * msdos.c (clear_mouse_face): Only clear mouse highlight if not hidden.
-       (dos_rawgetc): Set mouse_face_hidden after clearing highlight.
-
-       * w32term.c (w32_read_socket): Set mouse_face_hidden after
-       clearing highlight.
-
-       * xdisp.c (clear_mouse_face): Only clear mouse highlight if not hidden.
-
-       * xterm.c (handle_one_xevent): Set mouse_face_hidden after
-       clearing highlight.
-
-       * indent.c (vmotion): Do not reserve one column for continuation
-       marks on window frames.
-
-2004-04-04  Eli Zaretskii  <eliz@gnu.org>
-
-       * charset.h (SINGLE_BYTE_CHAR_P): Fix macro to avoid warnings
-       from GCC.
-
-2004-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * .gdbinit-union: Remove.
-
-       * .gdbinit: Make it work for USE_LSB_TAG and !NO_LISP_UNION.
-       (xgetptr, xgetint, xgettype): New funs.  Use them everywhere.
-       ($nonvalbits): Remove.
-       ($valmask): Set it by calling xreload to avoid redundancy.
-
-       * emacs.c (gdb_use_union, gdb_use_lsb): New vars.
-       (gdb_emacs_intbits): Remove.
-
-2004-03-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * data.c (Fbyteorder): Make test work even if unsigned is not 4 bytes.
-
-2004-03-30  Kenichi Handa  <handa@m17n.org>
-
-       * editfns.c (Fformat): Fix initialization of the array info.
-
-2004-03-30  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (x_mouse_click_focus_ignore_position): New var.
-       (syms_of_xterm): DEFVAR_BOOL it.
-       (ignore_next_mouse_click_timeout): New var.
-       (handle_one_xevent): Clear it on KeyPress, set it on EnterNotify.
-       Use it to filter mouse clicks following focus event.
-
-2004-03-29  David Ponce  <david@dponce.com>
-
-       * callint.c (Fcall_interactively): Fix last change.
-
-2004-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * eval.c (Fcommandp): Simplify.
-
-       * data.c (Finteractive_form): Rename from Fsubr_interactive_form.
-       Extend to handle all kinds of functions.
-
-       * lisp.h (Finteractive_form): Declare.
-
-       * callint.c (Fcall_interactively): Use it.
-
-2004-03-26  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (syms_of_xdisp): Include `void-variable' in list_of_error
-       to catch errors in calc_pixel_width_or_height during redisplay.
-
-2004-03-26  Masatake YAMATO  <jet@gyve.org>
-
-       * buffer.c (fix_start_end_in_overlays): Rename fix_overlays_in_range.
-
-       * lisp.h (fix_start_end_in_overlays): Likewise.
-
-       * insdel.c (adjust_markers_for_insert): Call fix_start_end_in_overlays.
-
-       * editfns.c (Ftranspose_regions): Likewise.
-
-2004-03-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): Do not pass key press events to GTK.
-
-2004-03-19  Richard M. Stallman  <rms@gnu.org>
-
-       * s/sol2-6.h: Delete previous change.
-
-2004-03-19  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (move_it_in_display_line_to): Fix MOVE_TO_POS case when
-       to_charpos corresponds to newline in right fringe.  Use local
-       BUFFER_POS_REACHED_P macro.
-
-2004-03-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xdisp.c (calc_pixel_width_or_height): Add ifdef HAVE_WINDOW_SYSTEM
-       to compile on non-window system.
-
-2004-03-19  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (calc_pixel_width_or_height): Add prototype.
-
-       * image.c (Qcenter): Move to xdisp.c.
-
-       * xdisp.c (Qcenter): Declare here.
-       (syms_of_xdisp): Intern and staticpro it.
-       (handle_single_display_prop): Allow space display property on all
-       platforms.
-       (display_mode_line): Set mode_line_p before displaying line.
-       (calc_pixel_width_or_height): Declare extern.  Add separate :align-to
-       handling.  Remove complex cases for fringes and scroll-bars.
-       Add left, right, and center alignment positions.  Add text (area)
-       width/height.  Return width or height for image specs.
-       (produce_stretch_glyph): Improve handling of :align-to.  Is now
-       relative to left of text area by default, but other base offsets
-       can be specified -- also for text lines.
-
-       * term.c (produce_glyphs): Handle IT_STRETCH.
-       (produce_stretch_glyph): New function to handle space width and
-       align-to display properties on non-window systems.
-
-2004-03-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * fileio.c (Fread_file_name): Set completion-ignore-case for
-       case-insensitive systems.
-
-2004-03-14  Masatake YAMATO  <jet@gyve.org>
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Accept HEADER_LINE
-       when keymap and cursor are setup.
-
-2004-03-14  Steven Tamm  <steventamm@mac.com>
-
-       * Makefile.in (XMENU_OBJ) [HAVE_CARBON]: Do not include xmenu.o.
-
-2004-03-14  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (x_find_image_file): Add prototype.
-
-       * image.c (x_find_image_file): Make extern.
-
-       * xfns.c (x_find_image_file): Remove prototype.
-
-2004-03-13  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (XMENU_OBJ): Include xmenu.o if HAVE_MENUS is defined.
-
-       * emacs.c (main): Call syms_of_xmenu only if HAVE_MENUS is defined.
-
-2004-03-12  Richard M. Stallman  <rms@gnu.org>
-
-       * fns.c (internal_equal): New arg PROPS controls comparing
-       text properties.  All callers changed.
-       (Fequal_including_properties): New function.
-       (syms_of_fns): defsubr it.
-
-2004-03-12  Kim F. Storm  <storm@cua.dk>
-
-       Fix image support on MAC.  From YAMAMOTO Mitsuharu.
-
-       * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs.
-       (image_background, image_background_transparent): Fix prototypes.
-
-       * image.c (XImagePtr, XImagePtr_or_DC): Move typedefs to dispextern.h.
-
-       * macfns.c (x_list_fonts, x_get_font_info, x_load_font)
-       (x_query_font, x_find_ccl_program, x_set_window_size)
-       (x_make_frame_visible, mac_initialize, XCreatePixmap)
-       (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground)
-       (mac_draw_line_to_pixmap): Move prototypes to macterm.h.
-
-       * macterm.h (x_list_fonts, x_get_font_info, x_load_font)
-       (x_query_font, x_find_ccl_program, x_set_window_size)
-       (x_make_frame_visible, mac_initialize, XCreatePixmap)
-       (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground)
-       (mac_draw_line_to_pixmap): Add prototypes.
-
-2004-03-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * macterm.c (XTread_socket): Fix mouse click on tool bar.
-
-2004-03-11  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h: Move image related prototypes from xfns.c section
-       to image.c.  Condition them by HAVE_WINDOW_SYSTEM rather than
-       HAVE_X_WINDOWS.
-
-       * Makefile.in (XOBJ): Consolidate into one list.  Add image.o.
-       Move gtkutil.o to new GTK_OBJ list.
-       (XMENU_OBJ) [HAVE_MENUS]: Move declaration to proper place.
-       (GTK_OBJ) [USE_GTK]: New declaration.
-       (obj): Add $(GTK_OBJ) to list.
-
-2004-03-11  Steven Tamm  <steventamm@mac.com>
-
-       * image.c [MAC_OSX]: Include sys/stat.h.
-
-       * macfns.c (syms_of_macfns): Remove definitions of things now
-       defined in image.c.
-
-2004-03-11  Kim F. Storm  <storm@cua.dk>
-
-       The following changes consolidates the identical/similar image
-       support code previously found in xfns.c, w32fns.c, and macfns.c
-       into a new file image.c.
-
-       * makefile.w32-in (OBJ1): Add image.o.
-       ($(BLD)/image.$(O)): Add dependencies.
-
-       * Makefile.in (XOBJ, MAC_OBJ): Add image.o.
-       (image.o): Add dependencies.
-
-       * image.c: New file with consolidated image support code.
-       (COLOR_TABLE_SUPPORT): New define to control whether
-       color table support is available (X only).
-       (Bitmap_Record): Common name for x_bitmap_record,
-       w32_bitmap_record, and mac_bitmap_record.
-       (XImagePtr): Common name for pointer to XImage or equivalent.
-       (XImagePtr_or_DC): New type to simplify code sharing; equivalent
-       to XImagePtr on X+MAC, and to HDC on W32.
-       (GET_PIXEL): Wrapper for XGetPixel or equivalent.
-       (NO_PIXMAP): Common name for "None" or equivalent.
-       (PNG_BG_COLOR_SHIFT): Bits to shift PNG background colors.
-       (RGB_PIXEL_COLOR): Common type for an integer "pixel color" value.
-       (PIX_MASK_RETAIN, PIX_MASK_DRAW): Portability macros (from macfns.c).
-       (FRAME_X_VISUAL, x_defined_color, DefaultDepthOfScreen):
-       Define with suitable equivalents on W32 and MAC for code sharing.
-       (XDrawLine): Define on MAC for code sharing.
-       (Destroy_Image, Free_Pixmap): Wrappers for code sharing.
-       (IF_LIB_AVAILABLE): Macro to simplify code sharing.
-       (Vx_bitmap_file_path, Vimage_cache_eviction_delay)
-       (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
-       (x_reference_bitmap, x_create_bitmap_from_data)
-       (x_create_bitmap_from_file, x_destroy_bitmap)
-       (x_destroy_all_bitmaps, x_create_bitmap_mask)
-       (XGetImage, XPutPixel, XGetPixel, XDestroyImage)
-       (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols)
-       (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask)
-       (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter)
-       (define_image_type, lookup_image_type, valid_image_p)
-       (image_error, enum image_value_type, struct image_keyword)
-       (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
-       (make_image, free_image, prepare_image_for_display, image_ascent)
-       (four_corners_best, image_background, image_background_transparent)
-       (x_clear_image_1, x_clear_image, x_alloc_image_color)
-       (make_image_cache, free_image_cache, clear_image_cache)
-       (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
-       (forall_images_in_image_cache, x_create_x_image_and_pixmap)
-       (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file)
-       (find_image_fsspec, image_load_qt_1, image_load_quicktime)
-       (init_image_func_pointer, image_load_quartz2d)
-       (struct ct_color, init_color_table, free_color_table)
-       (lookup_rgb_color, lookup_pixel_color, colors_in_color_table)
-       (cross_disabled_images, x_to_xcolors, x_from_xcolors)
-       (x_detect_edges, x_emboss, x_laplace, x_edge_detection)
-       (x_disable_image, x_build_heuristic_mask)
-       (XBM support, XPM support, PBM support, PNG support, JPEG support)
-       (TIFF support, GIF support, Ghostscript support): Consolidate image
-       code from xfns.c, w32fns.c, and macfns.c.
-       (syms_of_image): Consolidate image related symbol setup here.
-       (init_image): Consolidate image related initializations here.
-
-       * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Add calls to syms_of_image
-       and init_image.  Remove call to init_xfns.
-
-       * macterm.h (struct mac_bitmap_record): Add file member.
-       Not currently used, but simplifies code sharing.
-
-       * macfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay)
-       (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
-       (x_reference_bitmap, x_create_bitmap_from_data)
-       (x_create_bitmap_from_file, x_destroy_bitmap)
-       (x_destroy_all_bitmaps, x_create_bitmap_mask)
-       (XGetImage, XPutPixel, XGetPixel, XDestroyImage)
-       (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols)
-       (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask)
-       (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter)
-       (define_image_type, lookup_image_type, valid_image_p)
-       (image_error, enum image_value_type, struct image_keyword)
-       (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
-       (make_image, free_image, prepare_image_for_display, image_ascent)
-       (four_corners_best, image_background, image_background_transparent)
-       (x_clear_image_1, x_clear_image, x_alloc_image_color)
-       (make_image_cache, free_image_cache, clear_image_cache)
-       (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
-       (forall_images_in_image_cache, x_create_x_image_and_pixmap)
-       (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file)
-       (find_image_fsspec, image_load_qt_1, image_load_quicktime)
-       (init_image_func_pointer, image_load_quartz2d)
-       (struct ct_color, init_color_table, free_color_table)
-       (lookup_rgb_color, lookup_pixel_color, colors_in_color_table)
-       (cross_disabled_images, x_to_xcolors, x_from_xcolors)
-       (x_detect_edges, x_emboss, x_laplace, x_edge_detection)
-       (x_disable_image, x_build_heuristic_mask)
-       (XBM support, XPM support, PBM support, PNG support, JPEG support)
-       (TIFF support, GIF support, Ghostscript support): Merge with image
-       code from xfns.c and macfns.c into image.c.
-       (syms_of_xfns): Move image related symbols to image.c.
-       (init_external_image_libraries, init_xfns): Remove; initialization
-       moved to init_image in image.c.
-
-       * w32fns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay)
-       (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
-       (x_reference_bitmap, x_create_bitmap_from_data)
-       (x_create_bitmap_from_file, x_destroy_bitmap)
-       (x_destroy_all_bitmaps, x_create_bitmap_mask)
-       (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols)
-       (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask)
-       (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter)
-       (define_image_type, lookup_image_type, valid_image_p)
-       (image_error, enum image_value_type, struct image_keyword)
-       (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
-       (make_image, free_image, prepare_image_for_display, image_ascent)
-       (four_corners_best, image_background, image_background_transparent)
-       (x_clear_image_1, x_clear_image, x_alloc_image_color)
-       (make_image_cache, free_image_cache, clear_image_cache)
-       (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
-       (forall_images_in_image_cache, x_create_x_image_and_pixmap)
-       (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file)
-       (struct ct_color, init_color_table, free_color_table)
-       (lookup_rgb_color, lookup_pixel_color, colors_in_color_table)
-       (cross_disabled_images, x_to_xcolors, x_from_xcolors)
-       (x_detect_edges, x_emboss, x_laplace, x_edge_detection)
-       (x_disable_image, x_build_heuristic_mask)
-       (XBM support, XPM support, PBM support, PNG support, JPEG support)
-       (TIFF support, GIF support, Ghostscript support): Merge with image
-       code from xfns.c and macfns.c into image.c.
-       (syms_of_xfns): Move image related symbols to image.c.
-       (init_external_image_libraries, init_xfns): Remove; initialization
-       moved to init_image in image.c.
-
-       * xfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay)
-       (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
-       (x_reference_bitmap, x_create_bitmap_from_data)
-       (x_create_bitmap_from_file, x_destroy_bitmap)
-       (x_destroy_all_bitmaps, x_create_bitmap_mask)
-       (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols)
-       (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask)
-       (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter)
-       (define_image_type, lookup_image_type, valid_image_p)
-       (image_error, enum image_value_type, struct image_keyword)
-       (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
-       (make_image, free_image, prepare_image_for_display, image_ascent)
-       (four_corners_best, image_background, image_background_transparent)
-       (x_clear_image_1, x_clear_image, x_alloc_image_color)
-       (make_image_cache, free_image_cache, clear_image_cache)
-       (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
-       (forall_images_in_image_cache, x_create_x_image_and_pixmap)
-       (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file)
-       (struct ct_color, init_color_table, free_color_table)
-       (lookup_rgb_color, lookup_pixel_color, colors_in_color_table)
-       (cross_disabled_images, x_to_xcolors, x_from_xcolors)
-       (x_detect_edges, x_emboss, x_laplace, x_edge_detection)
-       (x_disable_image, x_build_heuristic_mask)
-       (XBM support, XPM support, PBM support, PNG support, JPEG support)
-       (TIFF support, GIF support, Ghostscript support): Merge with
-       w32fns.c and macfns.c image code into image.c.
-       (syms_of_xfns): Move image related symbols to image.c.
-       (init_xfns): Remove; initialization moved to init_image in image.c.
-
-       * lisp.h (syms_of_image, init_image): Add protoypes.
-       (init_xfns): Remove prototype.
-
-       * dispextern.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
-       (x_reference_bitmap, x_create_bitmap_from_data)
-       (x_create_bitmap_from_file, x_destroy_bitmap)
-       (x_create_bitmap_mask): Move prototypes from dispextern.h.
-       (gamma_correct) [MAC_OS]: Add prototype.
-
-       * xterm.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
-       (x_reference_bitmap, x_create_bitmap_from_data)
-       (x_create_bitmap_from_file, x_destroy_bitmap)
-       (x_create_bitmap_mask): Move prototypes to dispextern.h.
-
-2004-03-09  Kenichi Handa  <handa@etlken2>
-
-       * coding.c (decode_coding_emacs_mule): Handle insufficent source
-       correctly.
-
-2004-03-04  Richard M. Stallman  <rms@gnu.org>
-
-       * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition.
-
-       * window.c (Fdisplay_buffer): Doc fix.
-
-       * buffer.c (Fpop_to_buffer): Doc fix.
-
-2004-03-03  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (display_line): Fix call to get_overlay_arrow_glyph_row.
-
-2004-03-02  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * editfns.c (Ftranslate_region): Lisp_Object/int mixup.
-
-2004-03-02  Richard M. Stallman  <rms@gnu.org>
-
-       * indent.c (compute_motion): Save vpos in prev_vpos, like hpos etc.
-
-2004-03-02  Kenichi Handa  <handa@m17n.org>
-
-       * doc.c (Fsubstitute_command_keys): Fix counding bytes.
-
-2004-03-02  Kim F. Storm  <storm@cua.dk>
-
-       * window.h (struct window): New member overlay_arrow_bitmap.
-
-       * window.c (make_window): Initialize overlay_arrow_bitmap.
-
-       * xdisp.c (Voverlay_arrow_variable_list): New variable to properly
-       implement and integrate multiple overlay arrows with redisplay.
-       (syms_of_xdisp): DEFVAR_LISP and initialize it.
-       (last_arrow_position, last_arrow_string): Replace by properties.
-       (Qlast_arrow_position, Qlast_arrow_string)
-       (Qoverlay_arrow_string, Qoverlay_arrow_bitmap): New variables.
-       (syms_of_xdisp): Intern and staticpro them.
-       (overlay_arrow_string_or_property, update_overlay_arrows)
-       (overlay_arrow_in_current_buffer_p, overlay_arrows_changed_p)
-       (overlay_arrow_at_row): New functions for multiple overlay arrows.
-       (redisplay_internal): Use them instead of directly accessing
-       Voverlay_arrow_position etc. for multiple overlay arrows.
-       (mark_window_display_accurate): Use update_overlay_arrows.
-       (try_cursor_movement): Use overlay_arrow_in_current_buffer_p.
-       (try_window_id): Use overlay_arrows_changed_p.
-       (get_overlay_arrow_glyph_row): Add overlay_arrow_string arg.
-       (display_line): Use overlay_arrow_at_row to check multiple
-       overlay arrows, and get relevant overlay-arrow-string and
-       overlay-arrow-bitmap.  Set w->overlay_arrow_bitmap accordingly.
-       (produce_image_glyph): Set pixel_width = 0 for fringe bitmap.
-       (syms_of_xdisp): Remove last_arrow_position and last_arrow_string.
-
-       * fringe.c (draw_fringe_bitmap): Use w->overlay_arrow_bitmap if set.
-       (update_window_fringes): Remove unused code.
-
-2004-03-01  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_read_socket): Fix last change to ButtonPress handling.
-
-2004-03-01  Juanma Barranquero  <lektu@terra.es>
-
-       * fringe.c (Fdefine_fringe_bitmap): Fix typo in docstring.
-
-       * makefile.w32-in ($(BLD)/fringe.$(O)): Add dependencies.
-
-2004-03-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (Fx_display_color_cells): Use number of planes to calculate
-       how many colors can be displayed.
-
-2004-03-01  Kenichi Handa  <handa@m17n.org>
-
-       * editfns.c (Ftranslate_region): Handle multibyte chars in TABLE
-       correctly.
-
-2004-02-28  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (update_window): Update header line also if there are
-       no other changes in window (move code after set_cursor label).
-
-       * lisp.h (mark_window_display_accurate): Remove prototype.
-
-       * window.c (window_loop, Fforce_window_update): Force mode line
-       updates by setting prevent_redisplay_optimizations_p and
-       update_mode_lines.
-
-2004-02-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (x_window): Fix indentation.
-
-       * xterm.c (x_calc_absolute_position): Call x_real_positions
-       to get WM window sizes and use those to calculate position.
-       (x_set_offset): Remove code commented out.
-
-2004-02-28  Miles Bader  <miles@gnu.org>
-
-       * keyboard.c (adjust_point_for_property): #ifdef-out dodgy xassert.
-
-2004-02-28  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (kbd_buffer_store_event_hold): New function to store
-       an event into kbd fifo, but with special handling of quit event;
-       a quit event is saved for later, and further events are discarded
-       until the saved quit event has been processed.
-       (kbd_buffer_store_event): Use kbd_buffer_store_event_hold.
-       (gen_help_event): Store help event in kbd fifo.
-       (NREAD_INPUT_EVENTS): Remove.
-       (read_avail_input): Adapt to new read_socket_hook interface.
-       Remove allocation and initialization of local input_event buffer,
-       as read_socket_hook stores events directly in fifo.  Allocate and
-       initialize local hold_quit event to handle postponed quit event
-       (and store it if set by kbd_buffer_store_event_hold).
-
-       * keyboard.h (kbd_buffer_store_event_hold): Add prototype.
-       (gen_help_event): Fix prototype.
-
-       * macterm.c (XTread_socket): Remove bufp_r and
-       numcharsp args.  Add hold_quit arg.
-       Rework to use just one, local, inev input_event.  Store inev
-       directly in fifo using kbd_buffer_store_event_hold.
-
-       * sysdep.c (BUFFER_SIZE_FACTOR): Remove.
-       (read_input_waiting): Adapt to new read_socket_hook interface.
-       Remove allocation and initialization of local input_event buffer,
-       as read_socket_hook stores events directly in fifo.  Allocate and
-       initialize local hold_quit event to handle postponed quit event
-       (and store it if set by kbd_buffer_store_event_hold).
-
-       * term.c (read_socket_hook): Fix arg list.
-
-       * termhooks.h (read_socket_hook): Fix prototype.
-
-       * w32inevt.c (w32_console_read_socket): Remove bufp_r and
-       numcharsp args.  Add hold_quit arg.
-       Rework to use just one, local, inev input_event.  Store inev
-       directly in fifo using kbd_buffer_store_event_hold.
-
-       * w32inevt.h (w32_console_mouse_position): Fix prototype.
-
-       * w32term.c (w32_read_socket): Remove bufp_r and numcharsp args.
-       Add hold_quit arg.  Rework to use just one, local, inev
-       input_event.  Store inev directly in fifo using
-       kbd_buffer_store_event_hold.  Update count in one place.
-       Postpone call to gen_help_event until inev is stored; use new
-       local do_help for this.
-       Remove local emacs_event in handing of ButtonPress event; just use
-       inev instead (so no reason to copy it later).
-
-       * xsmfns.c (x_session_check_input): Remove numchars arg.
-
-       * xterm.c (x_focus_changed, x_detect_focus_change):
-       Remove numchars arg.  Always store event into bufp arg.
-       Return nothing.  Callers changed accordingly.
-       (glyph_rect): Simplify.
-       (STORE_KEYSYM_FOR_DEBUG): New macro.
-       (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc.
-       (current_bufp, current_numcharsp) [USE_GTK]: Remove.
-       (current_hold_quit) [USE_GTK]: Add.
-       (event_handler_gdk): Adapt to new handle_one_xevent.
-       (handle_one_xevent): Remove bufp_r and numcharsp args.
-       Add hold_quit arg.  Rework to use just one, local, inev
-       input_event.  Store inev directly in fifo using
-       kbd_buffer_store_event_hold.  Update count in one place.
-       Postpone call to gen_help_event until inev is stored; use new
-       local do_help for this.
-       Simplify handling of keysyms (consolidate common code).  Fix bug
-       where count was updated with nchars instead of nbytes.
-       Remove local emacs_event in handing of ButtonPress event; just use
-       inev instead (so no reason to copy it later).
-       Remove `out' label.  Rename label `ret' to `done'; add various
-       `goto done' to clarify code flow in deeply nested blocks.
-       (x_dispatch_event): Simplify as handle_one_xevent now calls
-       kbd_buffer_store_event itself.
-       (XTread_socket): Remove bufp_r and numcharsp args.  Add hold_quit
-       arg.  Call handle_one_xevent with new arglist.  Store event from
-       x_session_check_input in fifo.
-       [USE_GTK]: Setup current_hold_quit.
-       Decrement handling_signal before unblocking input.
-       (x_initialize) [USE_GTK]: Initialize current_count.
-
-       * xterm.h (x_session_check_input): Fix prototype.
-
-2004-02-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework QuickTime'.
-
-       * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in
-       macgui.h).
-
-       * emacs.c (main) [HAVE_CARBON]: Call init_xfns.
-
-       * macgui.h [MAC_OSX]: Include Carbon/Carbon.h.
-       (mktime, DEBUG, Z, free, malloc, realloc, max, min)
-       (init_process) [MAC_OSX]: Avoid conflicts with Carbon/Carbon.h.
-       [!MAC_OSX]: Include QDOffscreen.h and Controls.h.
-       (INFINITY) [MAC_OSX]: Avoid conflict with definition in math.h.
-       (Bitmap): Remove typedef.
-       (Pixmap): Change int to GWorldPtr.
-
-       * macmenu.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
-
-       * macterm.h [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
-       (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG):
-       New #define to extract 16-bit depth color components from unsigned
-       long representation.
-       (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel
-       colors used for masks.
-       (struct mac_display_info): Add color_p.  Remove n_cbits.
-
-       * macfns.c: Include sys/types.h and sys/stat.h.
-       [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h).
-       Include QuickTime/QuickTime.h.
-       (XCreatePixmap, XCreatePixmapFromBitmapData, XFreePixmap)
-       (XSetForeground, mac_draw_line_to_pixmap): Add externs for
-       functions defined in macterm.c.
-       (XImagePtr): New typedef.  Corresponds to XImage * in xfns.c.
-       (ZPixmap): New #define for compatibility with xfns.c.
-       (XGetImage, XPutPixel, XGetPixel, XDestroyImage)
-       (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image)
-       (find_image_fsspec, image_load_qt_1, image_load_quicktime):
-       New functions.
-       (four_corners_best, x_create_x_image_and_pixmap)
-       (x_destroy_x_image, unwind_create_frame, x_disable_image)
-       (x_edge_detection, init_color_table, colors_in_color_table)
-       (lookup_rgb_color, lookup_pixel_color, postprocess_image)
-       (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image)
-       (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors)
-       (x_from_xcolors, x_detect_edges): New declarations (from xfns.c).
-       (mac_color_map_lookup, x_to_mac_color): Fix Lisp_Object/unsigned
-       long mixup.
-       (mac_defined_color, x_to_x_colors): Use RED16_FROM_ULONG etc.
-       (x_decode_color): Don't use n_cbits (in struct mac_display_info).
-       (x_set_foreground_color, x_set_cursor_color): Sync with w32fns.c.
-       (x_set_cursor_type, Fxw_color_values, valid_image_p)
-       (image_value_type, parse_image_spec, image_ascent, x_clear_image)
-       (x_alloc_image_color, clear_image_cache, lookup_image)
-       (x_find_image_file, xbm_read_bitmap_file_data)
-       (enum xbm_keyword_index, xbm_format, xbm_image_p, xbm_scan)
-       (xbm_read_bitmap_data, xbm_load, pbm_image_p, pbm_scan_number)
-       (enum pbm_keyword_index, pbm_format, enum png_keyword_index)
-       (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format)
-       (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p)
-       (enum gif_keyword_index, gif_format, gif_image_p): Sync with xfns.c.
-       (x_make_gc): Sync with xfns.c.  Enclose unused `border_tile' with
-       #if 0.
-       (x_free_gcs): Sync with xfns.c.  Enclose unused `border_tile' with
-       #if 0.  Free white_relief.gc and black_relief.gc.
-       (unwind_create_frame, x_emboss, x_laplace, x_edge_detection):
-       New functions (from xfns.c).
-       (Fx_create_frame): Record unwind_create_frame.
-       (Fxw_display_color_p): Use dpyinfo->color_p.
-       (Fx_display_grayscale_p, Fx_display_planes): Don't use
-       dpyinfo->n_cbits.
-       (Fx_display_color_cells): Use dpyinfo->n_planes;
-       (QCmatrix, QCcolor_adjustment, QCmask, Qemboss, Qedge_detection)
-       (Qheuristic, cross_disabled_images, emboss_matrix)
-       (laplace_matrix): New variables (from xfns.c).
-       (Fimage_size, Fimage_mask_p, four_corners_best, image_background)
-       (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image)
-       (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges)
-       (image_background_transparent): New function (from xfns.c).
-       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
-       (image_load_quicktime): Add declaration.
-       [MAC_OSX] (image_load_quartz2d): Likewise.
-       [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef.
-       [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable.
-       [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New funs.
-       (xbm_load_image_from_file, x_laplace_read_row)
-       (x_laplace_write_row, pbm_read_file): Remove functions.
-       [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p)
-       (xpm_load): Sync with xfns.c (although XPM is not supported yet).
-       (colors_in_color_table): Sync with xfns.c (although not used).
-       (lookup_rgb_color): Don't lookup color table.  Just do gamma
-       correction.
-       (COLOR_INTENSITY): New #define (from xfns.c).
-       (x_disable_image): New function (from xfns.c).
-       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
-       (x_build_heuristic_mask): Sync with xfns.c.
-       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
-       (HAVE_PBM): Remove #ifdef.
-       (pbm_load): Sync with xfns.c.  Set img->width and img->height
-       before IMAGE_BACKGROUND.
-       (png_image_p, png_load): Don't enclose declarations with #if HAVE_PNG.
-       (Qpng, enum png_keyword_index, png_format, png_type, png_image_p):
-       Don't enclose with #if HAVE_PNG.
-       [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a
-       symbol _CGImageCreateWithPNGDataProvider is defined.
-       Otherwise use image_load_quicktime.
-       [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime.
-       [HAVE_PNG] (png_load): Sync with xfns.c.
-       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
-       (jpeg_image_p, jpeg_load): Don't enclose declarations with #if
-       HAVE_JPEG.
-       (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type)
-       (jpeg_image_p): Don't enclose with #if HAVE_JPEG.
-       [!HAVE_JPEG] (jpeg_load) [MAC_OSX]: Use image_load_quartz2d.
-       [!HAVE_JPEG] (jpeg_load) [!MAC_OSX]: Use image_load_quicktime.
-       [HAVE_JPEG] (jpeg_load): Sync with xfns.c.
-       (tiff_image_p, tiff_load): Don't enclose declarations with #if
-       HAVE_TIFF.
-       (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type)
-       (tiff_image_p): Don't enclose with #if HAVE_TIFF.
-       [!HAVE_TIFF] (tiff_load): Use image_load_quicktime.
-       [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler):
-       New functions (from xfns.c).
-       [HAVE_TIFF] (tiff_load): Sync with xfns.c.
-       (gif_image_p, gif_load): Don't enclose declarations with #if HAVE_GIF.
-       (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p):
-       Don't enclose with #if HAVE_GIF.
-       [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is
-       animated gif.  Otherwise use image_load_quicktime.
-       [HAVE_GIF] (gif_lib.h): Temporarily define DrawText as
-       gif_DrawText to avoid conflict with QuickdrawText.h.
-       [HAVE_GIF] (gif_load): Sync with xfns.c.
-       (enum gs_keyword_index, gs_format, gs_image_p, gs_load)
-       [HAVE_GHOSTSCRIPT] (x_kill_gs_process): Sync with xfns.c (although
-       Ghostscript is not supported yet).
-       (syms_of_macfns): Initialize Qemboss, Qedge_detection, Qheuristic,
-       QCmatrix, QCcolor_adjustment, and QCmask.  Add DEFVAR_BOOL
-       cross_disabled_images (from xfns.c).  Remove #if 0 for supported
-       image types.  Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and
-       HAVE_PNG.  Add defsubr for Simage_size and Simage_mask_p.
-       (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and
-       HAVE_PNG.  Call EnterMovies to support animated gifs.
-       Call init_image_func_pointer to bind a symbol
-       _CGImageCreateWithPNGDataProvider if it is defined.
-
-       * macterm.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
-       (x_draw_bar_cursor): Sync declaration with xterm.c.
-       (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area)
-       (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen
-       graphics).
-       (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc.
-       (mac_draw_line_to_pixmap, XCreatePixmap)
-       (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap)
-       (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap):
-       New functions.
-       (mac_draw_bitmap) [TARGET_API_MAC_CARBON]:
-       Use GetPortBitMapForCopyBits instead of the cast to Bitmap *.
-       Cast bits to char *.
-       (reflect_byte): New function (from w32fns.c).
-       (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits
-       due to byte alignment.
-       (mac_scroll_area) [TARGET_API_MAC_CARBON]:
-       Use GetPortBitMapForCopyBits instead of the cast to Bitmap *.
-       (XSetForeground): Remove static (now used in macfns.c).
-       (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c).
-       (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c.
-       (x_setup_relief_color, x_setup_relief_colors, x_draw_box_rect)
-       (x_draw_glyph_string_box, x_draw_image_foreground)
-       (x_draw_image_foreground_1, x_draw_image_glyph_string)
-       (x_draw_stretch_glyph_string, x_draw_glyph_string)
-       (x_draw_hollow_cursor, x_draw_bar_cursor, mac_draw_window_cursor):
-       Sync with xterm.c.
-       (x_draw_relief_rect): Sync with xterm.c.  Make 1 pixel shorter
-       than the xterm.c version when a strictly horizontal or vertical
-       line is drawn.
-       (XTset_terminal_window): Add static.
-       (x_make_frame_visible): Add UNBLOCK_INPUT.
-       (x_free_frame_resources): New funcion (from xterm.c).
-       (XTread_socket): Call handle_tool_bar_click if mouse up/down event
-       occurs in tool bar area.
-       (mac_initialize_display_info): Remove dpyinfo->n_cbits.
-       Set dpyinfo->color_p.  Determine dpyinfo->n_planes using HasDepth.
-       Initialize image cache.
-       (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match):
-       Enclose unused functions with #if 0.
-       (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables.
-       (decode_mac_font_name): New function to apply code conversions
-       from a mac font name to an XLFD font name according to its script code.
-       (x_font_name_to_mac_font_name): Apply code conversion from an XLFD
-       font name to a mac font name according to REGISTRY and ENCODING fields.
-       (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font
-       whose name starts with `.'.
-       (init_font_name_table): Use decode_mac_font_name.  Add both
-       jisx0208.1983-sjis and jisx0201.1976-0 entries if the script code
-       of a font is smJapanese.
-       (mac_do_list_fonts): New function to list fonts that match a given
-       pattern.
-       (x_list_fonts, XLoadQueryFont): Use it.
-       (XLoadQueryFont): Set rbearing field for each variable width
-       character to avoid needless redraw.
-       (syms_of_macterm): Initialize Qbig5, Qcn_gb, Qsjis, and Qeuc_kr.
-
-2004-02-26  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (NREAD_INPUT_EVENTS): Temporarily increase to 512
-       as read_socket_hook handler on X aborts if buffer is too small
-       and W32 handler doesn't always check buffer limit.
-
-       * xdisp.c (handle_single_display_prop): Handle left-fringe and
-       right-fringe similar to a display margin image.  Specifically,
-       the characters having the fringe prop are no longer shown, and
-       we use IT_IMAGE/next_element_from_image with image_id = -1 to
-       do this.  Set fringe bitmap face_id in it->face_id.
-       (produce_image_glyph): Handle image_id < 0 as "no image" case, but
-       still realize it->face (i.e. the fringe bitmap face).
-
-2004-02-25  Miles Bader  <miles@gnu.org>
-
-       * xdisp.c (check_it): Check string/string_pos consistency.
-       (init_iterator): Initialize string-related fields properly.
-
-2004-02-11  Miles Bader  <miles@gnu.org>
-
-       * xdisp.c (produce_image_glyph): Force negative descents to zero.
-
-2004-02-10  Miles Bader  <miles@gnu.org>
-
-       * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked);
-       BLOCK_INPUT can be nested, so it doesn't make much sense.
-
-2004-02-24  Michael Mauger  <mmaug@yahoo.com>
-
-       * w32fns.c (slurp_file, xbm_scan, xbm_load_image)
-       (xbm_read_bitmap_data): Use unsigned char for image data.
-
-2004-02-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * abbrev.c (Finsert_abbrev_table_description): Doc fix.
-
-2004-02-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_draw_fringe_bitmap): Draw overlaid bitmaps
-       correctly over other bitmaps.
-
-2004-02-21  Eli Zaretskii  <eliz@gnu.org>
-
-       * emacs.c (USAGE1): Split into two halves.
-       (USAGE2): Second half of the old USAGE1.
-       (USAGE3): Rename from USAGE2.
-       (USAGE4): Rename from USAGE3.
-
-2004-02-21  Juri Linkov  <juri@jurta.org>
-
-       * emacs.c (USAGE1): Add --no-desktop.  Move --display from USAGE2.
-       Fix --multibyte.  Move --help, --version to USAGE2.  Add alias
-       --file.  Fix -f, -l.  Sort options.  Untabify.
-       (USAGE2): Add -hb.  Fix --name, --title.  Sort options.  Untabify.
-
-2004-02-19  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * category.c (Fdefine_category, Fcategory_docstring)
-       (Fget_unused_category, Fset_category_table)
-       (Fcategory_set_mnemonics): Doc fixes.
-
-2004-02-20  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c: Undo 2004-02-16 and 2004-02-17 changes.
-       The following changes are relative to the 2004-01-21 revision.
-       (NREAD_INPUT_EVENTS): Define as max number of input events to read
-       in one call to read_socket_hook.  Value is 8.
-       (read_avail_input): Separate and rework handling of read_socket_hook
-       and non-read_socket_hook cases.  Use smaller input_event buffer
-       in read_socket_hook case, and repeat if full buffer is read.
-       Use new local variable 'discard' to skip input after C-g.
-       In non-read_socket_hook case, just use a single input_event, and
-       call kbd_buffer_store_event on the fly for each character.
-
-2004-02-19  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lisp.h (union Lisp_Object): Give a more precise type for `type'.
-       Remove unused `gu' alternative.
-
-2004-02-19  Andreas Schwab  <schwab@suse.de>
-
-       * fringe.c (Fdefine_fringe_bitmap): Use && instead of & to avoid
-       warning.
-
-2004-02-18  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_window_cursor_type, display_and_set_cursor):
-       Fix last change.
-
-2004-02-17  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (fast_find_position): Fix return value of new version;
-       it was inverted compared to the 21.1 version.
-       (get_window_cursor_type): Don't look at glyph if NULL.
-       (display_and_set_cursor): Set glyph to NULL if cursor in fringe.
-
-       * keyboard.c: Rework previous change; it didn't consider that the
-       buf array was allocated on the stack.
-       (prev_read): Remove variable.
-       (read_avail_input_buf): New static event buffer array.
-       (in_read_avail_input): New static variable to handle re-entrancy.
-       (read_avail_input): Change buf to pinter to read_avail_input_buf.
-       Use in_read_avail_input to handle re-entrance; when re-entered,
-       fully initialize and use tmp_buf array instead of read_avail_input_buf.
-       Do not initialize read_avail_input_buf in full here; instead assume it
-       is always cleared on entry.  To ensure that, we clear (just) the
-       entries that were used before we return.
-       (init_keyboard): Initialize read_avail_input_buf here.
-
-2004-02-16  Jesper Harder  <harder@ifa.au.dk>
-
-       * cmds.c (Fend_of_line): Doc fix.
-
-2004-02-16  Dmitry Antipov  <dmitry.antipov@mail.ru>  (tiny change)
-
-       * keyboard.c (prev_read): New static variable.
-       (read_avail_input): Use it to zero out only those slots in buf[]
-       that were used last time we were called.
-
-2004-02-16  Eli Zaretskii  <eliz@gnu.org>
-
-       * Makefile.in (obj): Move fringe.o from here...
-       (XOBJ, MAC_OBJ): ...to here.
-
-2004-02-16  Stephen Eglen  <stephen@gnu.org>
-
-       * fringe.c (init_fringe_bitmap): Define j in MAC_OS code.
-
-2004-02-15  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * data.c (Fbyteorder):
-       * fringe.c (Fdefine_fringe_bitmap):
-       * xdisp.c (handle_single_display_prop):
-       * xselect.c (x_handle_dnd_message): Lisp_Object/int mixup.
-
-2004-02-16  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
-
-2004-02-15  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (Vmac_emulate_three_button_mouse): New variable for
-       controlling emulation of a three button mouse with option and
-       command keys.
-       (Qreverse, mac_get_enumlated_btn): Handle the emulation.
-       (mac_event_to_emacs_modifiers, XTread_socket): Ditto.
-
-2004-02-15  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (syms_of_buffer): Doc fix for indicate-buffer-boundaries.
-
-       * fringe.c (init_fringe_bitmap) [MAC_OS, WORDS_BIG_ENDIAN]:
-       Perform byte-swapping.
-
-2004-02-14  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (struct draw_fringe_bitmap_params): Change member
-       bits from char to short to facilitate wider bitmaps.
-       (struct redisplay_interface): Fix prototype of define_fringe_bitmap
-       member.
-
-       * fringe.c (struct fringe_bitmap): Change member bits from char to
-       short to facilitate 16 bits wide bitmaps.  Modify all standard
-       bitmaps accordingly.
-       (BYTES_PER_BITMAP_ROW, STANDARD_BITMAP_HEIGHT): New macros.
-       (FRBITS): Use STANDARD_BITMAP_HEIGHT instead of just sizeof.
-       (draw_fringe_bitmap): Ditto.
-       (init_fringe_bitmap) [MAC_OS]: Don't bitswap.
-       (init_fringe_bitmap) [HAVE_X_WINDOWS]: Enhance bitswapping to
-       handle up to 16 bits wide bitmaps.
-       (Fdefine_fringe_bitmap): Doc fix.  Handle wider bitmaps.
-       (Ffringe_bitmaps_at_pos): Add missing arg declarations.
-
-       * macterm.c (mac_draw_bitmap): Handle 16 bits wide bitmaps directly.
-       (x_draw_fringe_bitmap): Use enhanced mac_draw_bitmap, so we no longer
-       need to call mac_create_bitmap_from_bitmap_data and mac_free_bitmap.
-
-       * w32term.c (w32_define_fringe_bitmap): Bitmaps are now 16 bits wide,
-       so it is no longer necessary to expand them here.
-
-       * xterm.c (x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits).
-
-2004-02-12  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Fwindow_fringes): Doc fix.
-
-2004-02-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xselect.c (x_get_foreign_selection): Add new optional parameter
-       time_stamp.
-       (Fx_get_selection_internal): Ditto, pass time_stamp to
-       x_get_foreign_selection.
-
-       * data.c (Fbyteorder): New function.
-
-2004-02-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * atimer.c: Move include stdio.h to same place as in other files.
-
-       * region-cache.c: Ditto.
-
-       * sysdep.c: Ditto.
-
-       * xfaces.c: Ditto.
-
-2004-02-09  Sam Steingold  <sds@gnu.org>
-
-       * w32term.c (w32_draw_fringe_bitmap): Fix a typo in the last patch.
-
-2004-02-09  Kim F. Storm  <storm@cua.dk>
-
-       * fringe.c: New file.  Move original fringe related declarations
-       and code from dispextern.h and xdisp.c here.
-       Rework code to support user defined fringe bitmaps, redefining
-       standard bitmaps, ability to overlay user defined bitmap with
-       overlay arrow bitmap, and add faces to bitmaps.
-       (Voverflow_newline_into_fringe): Declare here.
-       (enum fringe_bitmap_align): New enum.
-       (..._bits): All bitmaps are now defined without bitswapping; that
-       is now done in init_fringe_once (if necessary).
-       (standard_bitmaps): New array with specifications for the
-       standard fringe bitmaps.
-       (fringe_faces): New array.
-       (valid_fringe_bitmap_id_p): New function.
-       (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap.
-       (draw_fringe_bitmap): New function which draws fringe bitmap,
-       possibly overlaying bitmap with cursor in right fringe or the
-       overlay arrow in the left fringe.
-       (update_window_fringes): Do not handle overlay arrow here.
-       Compare and copy fringe bitmap faces.
-       (init_fringe_bitmap): New function.
-       (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to
-       define and destroy user defined fringe bitmaps.
-       (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap.
-       (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps.
-       (syms_of_fringe): New function.  Defsubr new DEFUNs.
-       DEFVAR_LISP Voverflow_newline_into_fringe.
-       (init_fringe_once, init_fringe): New functions.
-       (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions.
-
-       * Makefile.in (obj): Add fringe.o.
-       (fringe.o): New dependencies.
-
-       * dispextern.h (FRINGE_ID_BITS): New definition for number of
-       bits allocated to hold a fringe number.  Increase number of bits
-       from 4 to 8 to allow user defined fringe bitmaps.
-       (struct glyph_row, struct it): New members left_user_fringe_bitmap,
-       left_user_fringe_face_id, right_user_fringe_bitmap,
-       right_user_fringe_face_id.
-       (enum fringe_bitmap_type, struct fringe_bitmap, fringe_bitmaps):
-       Move to new file fringe.c.
-       (MAX_FRINGE_BITMAPS): Define here.
-       (struct draw_fringe_bitmap_params): New members bits, cursor_p,
-       and overlay_p.  Change member which to int.
-       (struct redisplay_interface): New members define_fringe_bitmap
-       and destroy_fringe_bitmap.
-       (valid_fringe_bitmap_id_p): Add prototype.
-       (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: Add prototypes.
-
-       * dispnew.c (row_equal_p): Compare fringe bitmap faces and overlay
-       arrows.
-       (update_frame): Do flush_display if force_flush_display_p to
-       ensure display (specifically fringes) are updated in a timely
-       manner when resizing the frame by dragging the mouse.
-       (update_window_line): Update row if overlay arrow changed.
-       (scrolling_window): Redraw fringe bitmaps if fringe bitmap faces
-       or overlay arrow changed.
-
-       * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Call init_fringe_once,
-       syms_of_fringe, and init_fringe.
-
-       * frame.h (struct frame): New member force_flush_display_p.
-
-       * lisp.h (syms_of_fringe, init_fringe, init_fringe_once):
-       Add prototypes.
-
-       * macterm.c (mac_draw_bitmap): Add overlay_p arg.
-       (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps;
-       thanks to YAMAMOTO Mitsuharu for advice on how to do this.
-       Use cursor color for displaying cursor in fringe.
-       (x_redisplay_interface): Add null handlers for
-       define_fringe_bitmap and destroy_fringe_bitmap functions.
-
-       * w32term.c (w32_draw_fringe_bitmap): Copy unadapted code from
-       xterm.c to handle overlayed fringe bitmaps and to use cursor color
-       for displaying cursor in fringe.
-       (w32_define_fringe_bitmap, w32_destroy_fringe_bitmap): New W32
-       specific functions to define and destroy fringe bitmaps in fringe_bmp.
-       (w32_redisplay_interface): Add them to redisplay_interface.
-       (w32_term_init): Call w32_init_fringe instead of explicitly
-       defining fringe bitmaps in fringe_bmp array.
-       (x_delete_display): Call w32_reset_fringes instead of explicitly
-       destroying fringe bitmaps in fringe_bmp array.
-
-       * xdisp.c (Voverflow_newline_into_fringe, syms_of_xdisp)
-       (left_bits, right_bits, up_arrow_bits, down_arrow_bits)
-       (continued_bits, continuation_bits, ov_bits, first_line_bits)
-       (last_line_bits, filled_box_cursor_bits, hollow_box_cursor_bits)
-       (bar_cursor_bits, hbar_cursor_bits, zv_bits, hollow_square_bits)
-       (fringe_bitmaps, draw_fringe_bitmap, draw_row_fringe_bitmaps)
-       (draw_window_fringes, compute_fringe_widths, update_window_fringes):
-       Move fringe handling vars and code to new file fringe.c.
-       (handle_display_prop): Handle left-fringe and right-fringe
-       display properties; store user fringe bitmaps in iterator.
-       (move_it_in_display_line_to): Handle cursor in fringe at eob.
-       (clear_garbaged_frames): Set force_flush_display_p if resized.
-       (redisplay_window): Redraw fringe bitmaps if not just_this_one_p.
-       (display_line): Handle cursor in fringe at eob.
-       (display_line): Set row user fringe bitmaps from iterator.
-
-       * xterm.c (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
-       Use cursor color for displaying cursor in fringe.
-       (x_redisplay_interface): Add null handlers for
-       define_fringe_bitmap and destroy_fringe_bitmap functions.
-
-2004-02-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * macfns.c (Fx_change_window_property): Make doc string and
-       parameters same as for X version.
-
-       * w32fns.c (Fx_change_window_property): Ditto.
-
-2004-02-07  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (hscroll_window_tree): Position cursor near to right
-       margin in hscrolled window when jumping to end of line (rather
-       than centering cursor).
-
-       * process.c (wait_reading_process_input): Don't do adaptive read
-       buffering if waiting for a specific process.
-
-2004-02-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * minibuf.c (Fminibufferp, Fread_from_minibuffer)
-       (Fread_minibuffer, Feval_minibuffer)
-       (Fread_string, Fread_no_blanks_input)
-       (Fcompleting_read): Doc fixes.
-       (syms_of_minibuf): Doc fixes for minibuffer-completion-table and
-       completion-regexp-list.  Define Qcase_fold_search and staticpro it.
-       (read_minibuf): Fix initial comment.
-       (Ftry_completion, Fall_completions, Ftest_completion): Bind
-       case-fold-search to the value of completion-ignore-case when
-       checking completion-regexp-list.
-       (Fdisplay_completion_list): Make it handle arguments that are
-       symbols.  Doc fix.
-
-2004-02-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h: Add declaration of free_frame_menubar.
-
-       * xfns.c (x_create_bitmap_mask): Removed unused variable depth.
-       (x_set_menu_bar_lines): Added ! defined USE_GTK for olines.
-       (Fx_change_window_property): Add declaration of parameters type and
-       format.  Remove unused variable cons.
-
-       * xselect.c: Include stdio.h.
-
-2004-02-05  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (Fset_char_table_range): Fix previous change.
-
-       * buffer.c (Fset_buffer_multibyte): Fix docstring.
-
-2004-02-04  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * editfns.c (Fchar_after, Fchar_before): Doc fixes.
-
-2004-02-04  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keymap.c (Vmouse_events): Rename from Vmenu_events.
-       (syms_of_keymap): Add mouse-[45], header-line, and mode-line to it.
-
-2004-02-04  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (Fset_char_table_range): Handle charsets ascii,
-       eight-bit-control, and eight-bit-graphic correctly.
-
-2004-02-03  Jason Rumney  <jasonr@gnu.org>
-
-       * w32select.c (Fw32_set_clipboard_data): Make coding iso2022 safe.
-
-       * w32fns.c (x_to_w32_font): Likewise.
-
-2004-02-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h: Add x_handle_dnd_message, x_check_property_data,
-       x_fill_property_data, x_property_data_to_lisp and check_x_display_info.
-
-       * xterm.c (handle_one_xevent): Call x_handle_dnd_message for
-       ClientMessages.
-
-       * xselect.c: Include termhooks.h and X11/Xproto.h.
-       (x_check_property_data, x_fill_property_data)
-       (x_property_data_to_lisp, mouse_position_for_drop)
-       (Fx_get_atom_name, x_handle_dnd_message): New functions for DND support.
-       (Fx_send_client_event): Move here from xfns.c.
-       (syms_of_xselect): Add Sx_get_atom_name and Sx_send_client_message.
-
-       * xfns.c (x-send-client-message): Move to xselect.c.
-       (Fx_change_window_property): Add optional arguments TYPE, FORMAT and
-       OUTER_P.
-       (Fx_window_property): Add optional arguments TYPE, SOURCE, DELETE_P,
-       VECTOR_RET_P.  Handle AnyPropertyType.  Call x_property_data_to_lisp
-       if vector_ret_p is true.
-       (syms_of_xfns): Sx_send_client_message moved to xselect.c.
-
-2004-02-02  Eli Zaretskii  <eliz@gnu.org>
-
-       * fileio.c (Fcopy_file): If NEWNAME is a directory, expand the
-       basename of FILE relative to it, not FILE itself.
-
-2004-02-02  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (coding_restore_composition): Check invalid
-       composition data more rigidly.
-
-2004-01-30  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fileio.c (Fread_file_name_internal): Correctly handle the case
-       where insert-default-directory is nil.
-       (Fread_file_name): Always return an empty string if the user exits
-       with an empty minibuffer.  Adapt the docstring accordingly.
-       (syms_of_fileio): Adapt the docstring of insert-default-directory
-       to the change in Fread_file_name.
-
-2004-01-29  Eli Zaretskii  <eliz@gnu.org>
-
-       * alloca.c [!alloca]: Fix the prototype for xfree.
-
-2004-01-29  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (string_char_to_byte): Optimize for ASCII only string.
-       (string_byte_to_char): Likewise.
-
-2004-01-28  Peter Runestig  <peter@runestig.com>
-
-       * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
-
-2004-01-27  Steven Tamm  <steventamm@mac.com>
-
-       * unexmacosx.c (unexec_copy): Do not copy more than was
-       requested to prevent overwriting during unexec.
-
-2004-01-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * process.c (sigchld_handler): Add comment about not calling malloc.
-
-       * process.h: Add extern to synch_process_termsig.
-
-2004-01-27  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (make_mac_frame, make_mac_terminal_frame):
-       Move setting of scroll bars from make_mac_frame to
-       make_mac_terminal_frame to prevent clobbering of scroll-bar-mode.
-
-2004-01-26  Richard M. Stallman  <rms@gnu.org>
-
-       * search.c (Freplace_match): Handle nonexistent
-       back-references properly.
-
-2004-01-03  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (decode_any_window): New function.
-       (Fwindow_height, Fwindow_width, Fwindow_edges)
-       (Fwindow_pixel_edges, Fwindow_inside_edges)
-       (Fwindow_inside_pixel_edges): Use decode_any_window.
-
-2004-01-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * process.h: synch_process_termsig new variable.
-
-       * callproc.c: Define synch_process_termsig.
-       (Fcall_process): Initiate synch_process_termsig to zero and
-       check if non-zero and get signal name after subprocess has ended.
-
-       * process.c (sigchld_handler): Set synch_process_termsig
-       if terminated by a signal.  synch_process_death setting removed.
-
-       * sysdep.c (mkdir, rmdir): Also check synch_process_termsig.
-
-2004-01-26  Andreas Schwab  <schwab@suse.de>
-
-       * print.c (print_preprocess): Declare size as EMACS_INT to not
-       lose bits.
-       (print_object): Likewise.
-       * alloc.c (Fpurecopy): Likewise.
-
-2004-01-25  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * window.c (Fwindow_minibuffer_p): Doc fix.
-
-2004-01-24  Jonathan Yavner  <jyavner@member.fsf.org>
-
-       * editfns.c (Fformat): Make both passes accept the same set of flags.
-
-2004-01-23  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (Fmd5): If OBJECT is a buffer different from the current
-       one, set buffer to OBJECT temporarily.
-
-2004-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * keyboard.c (kbd_buffer_gcpro): Remove.
-       (kbd_buffer_store_event, clear_event, Fdiscard_input)
-       (stuff_buffered_input, init_keyboard, syms_of_keyboard):
-       Don't initialize and/or maintain the variable any more.  It was made
-       redundant by my commit of 2003-06-15.
-
-       * lisp.h [USE_LSB_TAG && !DECL_ALIGN]: Signal an error.
-
-2004-01-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * lisp.h: Add undef DECL_ALIGN.
-
-2004-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * process.c (wait_reading_process_input) [SYNC_INPUT]:
-       Check interrupt_input_pending explicitly.
-
-       * lisp.h (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
-
-       * keyboard.c (handle_async_input): New fun,
-       extracted from input_available_signal.
-       (input_available_signal, reinvoke_input_signal): Use it.
-
-2004-01-20  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * buffer.c (buffer_defaults, buffer_local_symbols): Use DECL_ALIGN.
-
-       * lisp.h [USE_LSB_TAG]: Add definitions for Lisp_Object value
-       manipulation macros for when tags are in the lower bits.
-       (struct Lisp_Free) [USE_LSB_TAG]: Add padding.
-       (DECL_ALIGN): New macro.
-       (DEFUN): Use it.
-
-       * lisp.h [ENABLE_CHECKING]: Don't force union type.
-
-       * s/darwin.h (__attribute__): Remove outdated workaround.
-
-       * macterm.c (main) [USE_LSB_TAG]: Don't range check the ram.
-
-       * alloc.c (lisp_malloc, lisp_align_malloc) [USE_LSB_TAG]:
-       Don't check range of malloc address.
-       (pure_alloc) [USE_LSB_TAG]: Enforce alignment.
-
-       * process.c (wait_reading_process_input): Lisp_Object/int mixup.
-
-       * dired.c (Ffile_attributes): Lisp_Object/int mixup.
-
-2004-01-19  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (fontset_font_pattern): Fix previous change.
-
-2004-01-16  Miles Bader  <miles@gnu.ai.mit.edu>
-
-       * xdisp.c (Voverflow_newline_into_fringe)
-       (move_it_in_display_line_to, redisplay_internal)
-       (update_window_fringes, redisplay_window, display_line, window):
-       Add `#ifdef HAVE_WINDOW_SYSTEM' around fringe-drawing stuff, so
-       that it compiles without a window-system.
-       * dispnew.c (direct_output_for_insert, update_window): Likewise.
-
-2004-01-16  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.h (struct buffer): New member indicate_buffer_boundaries.
-
-       * buffer.c (init_buffer_once): Set buffer_defaults and
-       buffer_local_flags for indicate_buffer_boundaries.
-       (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro
-       default- variable for it.
-
-       * dispextern.h (struct glyph_row): New members left_fringe_bitmap,
-       right_fringe_bitmap, redraw_fringe_bitmaps_p for new fringe handling.
-       New members exact_window_width_line_p and cursor_in_fringe_p for
-       overflowing newlines into right fringe.
-       New members indicate_bob_p, indicate_top_line_p, indicate_eob_p,
-       and indicate_bottom_line_p for buffer boundaries and scrolling.
-       (enum fringe_bitmap_type): Add UP_ARROW_BITMAP, DOWN_ARROW_BITMAP,
-       FIRST_LINE_BITMAP, LAST_LINE_BITMAP, FILLED_BOX_CURSOR_BITMAP,
-       HOLLOW_BOX_CURSOR_BITMAP, BAR_CURSOR_BITMAP, HBAR_CURSOR_BITMAP,
-       and HOLLOW_SQUARE_BITMAP.
-       (draw_fringe_bitmap, draw_window_fringes, update_window_fringes):
-       Add prototypes.
-
-       * dispnew.c (row_equal_p, update_window_line): Compare fringe bitmaps
-       instead of related indicator fields.
-       Compare exact_window_width_line_p and cursor_in_mouse_face_p indicators.
-       (direct_output_for_insert): Handle exact width lines like
-       contined lines.  Call update_window_fringes.
-       (update_window): Call update_window_fringes.
-       (scrolling_window): Don't skip desired rows with changed bitmaps.
-       Check if fringe bitmaps changes when assigning scrolled rows.
-
-       * xdisp.c (Voverflow_newline_into_fringe): New variable.
-       (IT_OVERFLOW_NEWLINE_INTO_FRINGE): New macro.
-       (move_it_in_display_line_to): Overflow newline into fringe for
-       rows that are exactly as wide as the window.
-       (up_arrow_bits, down_arrow_bits, first_line_bits, last_line_bits)
-       (filled_box_cursor_bits, hollow_box_cursor_bits, bar_cursor_bits)
-       (hbar_cursor_bits, hollow_square_bits): New fringe bitmaps.
-       (fringe_bitmaps): Add new bitmaps.
-       (draw_fringe_bitmap): Make extern.  Remove WHICH arg.
-       Select proper bitmap for cursor in fringe when appropriate.
-       Handle alignment of bitmap to top or bottom of row.
-       (draw_row_fringe_bitmaps): Don't select bitmaps here; that is now
-       done by update_window_fringes.
-       (update_window_fringes, draw_window_fringes): New functions.
-       (redisplay_internal): Call update_window_fringes in case only
-       cursor row is updated.
-       (redisplay_window): Call update_window_fringes.
-       Explicitly call draw_window_fringes if redisplay was done using
-       the current matrix or the overlay arrow is in the window.
-       (try_window_reusing_current_matrix): Mark scrolled rows for
-       fringe update (to update buffer-boundaries / scrolling icons).
-       (find_last_unchanged_at_beg_row): Handle exact width lines line
-       continued lines.
-       (display_line): Overflow newline into fringe for rows that are
-       exactly as wide as the window.  Don't append space for newline
-       in this case.
-       (notice_overwritten_cursor): Explicitly clear cursor bitmap
-       in fringe as if it had been overwritten.
-       (erase_phys_cursor): Erase cursor bitmap in fringe.
-       (syms_of_xdisp): Mark show-trailing-whitespace and
-       void-text-area-pointer as user options.
-       DEFVAR_LISP Voverflow_newline_into_fringe.  Enable by default.
-
-       * xterm.c (x_update_window_end): Call draw_window_fringes.
-       (x_after_update_window_line): Just set redraw_fringe_bitmaps_p
-       in row instead of actually drawing fringe bitmaps.
-       (x_draw_fringe_bitmap): Handle bottom aligned bitmaps.
-       (x_draw_window_cursor): Draw cursor in fringe.
-
-       * w32term.c (x_update_window_end): Call draw_window_fringes.
-       (x_after_update_window_line): Just set redraw_fringe_bitmaps_p
-       in row instead of actually drawing fringe bitmaps.
-       (w32_draw_fringe_bitmap): Handle bottom aligned bitmaps.
-       (w32_draw_window_cursor): Draw cursor in fringe.
-
-       * macterm.c (x_update_window_end): Call draw_window_fringes.
-       (x_after_update_window_line): Just set redraw_fringe_bitmaps_p
-       in row instead of actually drawing fringe bitmaps.
-       (x_draw_fringe_bitmap): Handle bottom aligned bitmaps.
-       (mac_draw_window_cursor): Draw cursor in fringe.
-
-2004-01-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): Don't handle characters that are part
-       of an old style (XLookupString) compose sequence.
-
-2004-01-15  Kenichi Handa  <handa@m17n.org>
-
-       * search.c (Freplace_match): Use make_multibyte_string or
-       make_unibyte_string according to the buffer multibyteness.
-
-2004-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c (struct interval_block, struct string_block)
-       (struct symbol_block, struct marker_block, live_string_p)
-       (live_cons_p, live_symbol_p, live_float_p, live_misc_p):
-       Better preserve alignment for objects in blocks.
-       (FLOAT_BLOCK_SIZE): Adjust for possible alignment padding.
-
-       * lread.c (defvar_per_buffer): Remove dead declaration.
-
-       * macterm.c (do_check_ram_size): Don't hardcode the lisp address
-       space size.
-
-2004-01-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (popup_get_selection): Check new parameter down_on_keypress
-       if a key press should pop down.  Only pop down if a key is pressed
-       outside the menu/dialog.
-       (create_and_show_popup_menu): Pass 0 for down_on_keypress to
-       popup_get_selection.
-       (create_and_show_dialog): Pass 1 for down_on_keypress to
-       popup_get_selection.
-
-2004-01-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * alloc.c (allocate_vectorlike): Surround calls to mallopt with
-       BLOCK/UNBLOCK_INPUT.
-
-2004-01-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (Fx_popup_dialog): Add an Ok button if no buttons are
-       specified.
-
-2004-01-08  Kenichi Handa  <handa@m17n.org>
-
-       * editfns.c (Fformat): Fix '&' to '&&'.
-
-2004-01-08  Andreas Schwab  <schwab@suse.de>
-
-       * print.c (print_preprocess) <case Lisp_Vectorlike>: Only mask
-       size if PSEUDOVECTOR_FLAG is set.
-
-2004-01-07  Kenichi Handa  <handa@m17n.org>
-
-       * charset.c (Fdeclare_equiv_charset): Fix docstring.
-
-       * fontset.c (fontset_ref_via_base): Fix previous change.
-
-2004-01-07  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (read_process_output): Only activate adaptive
-       buffering if we read less than 256 bytes at a time.
-
-2004-01-06  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (buffer_posn_from_coords): Return both buffer/string
-       object and image object.  Return glyph width and height.
-       (mode_line_string, marginal_area_string): Ditto.
-
-       * dispextern.h (buffer_posn_from_coords, mode_line_string)
-       (marginal_area_string): Fix prototypes.
-
-       * keyboard.h (POSN_POSN, POSN_SET_POSN): Rename macros from
-       POSN_BUFFER_POSN and POSN_SET_BUFFER_POSN.  All uses changed.
-       (POSN_INBUFFER_P, POSN_BUFFER_POSN): New macros.
-
-       * keyboard.c (make_lispy_position): Use modified mode_line_string,
-       buffer_posn_from_coords, and marginal_area_string functions to
-       include both string object and image object in the lispy position.
-       Also add actual glyph width and height to position.
-       (read_key_sequence): Use real buffer position from mouse
-       event to find keymap property even when click is in marginal area.
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Use modified
-       mode_line_string and marginal_area_string functions to handle
-       both string object and image object properties.
-
-2004-01-06  Andreas Schwab  <schwab@suse.de>
-
-       * syntax.c (skip_chars): Treat '-' at end of string as ordinary
-       character.
-
-2004-01-02  Andreas Schwab  <schwab@suse.de>
-
-       * macterm.c (emacs_options, x_initialized, same_x_server):
-       Remove unused (and duplicated) definitions.
-
-2004-01-02  Kim F. Storm  <storm@cua.dk>
-
-       * process.h (struct Lisp_Process): New members for adaptive read
-       buffering: adaptive_read_buffering, read_output_delay, and
-       read_output_skip.
-
-       * process.c (ADAPTIVE_READ_BUFFERING): New conditional.
-       (READ_OUTPUT_DELAY_INCREMENT, READ_OUTPUT_DELAY_MAX)
-       (READ_OUTPUT_DELAY_MAX_MAX): New constants.
-       (process_output_delay_count, process_output_skip): New vars.
-       (Vprocess_adaptive_read_buffering): New variable.
-       (make_process): Initialize adaptive read buffering members.
-       (Fstart_process): Set adaptive_read_buffering member.
-       (deactivate_process): Cleanup adaptive read buffering.
-       (wait_reading_process_input): Temporarily omit delayed
-       subprocesses from the set of file descriptors to read from;
-       adjust the select timeout if we skipped any subprocesses.
-       (read_process_output): Increase adaptive read buffering delay if
-       we read less than a full buffer; reduce delay when we read a
-       full buffer.
-       (send_process): Simplify using local Lisp_Process var.
-       Reset adaptive read buffering delay after write.
-       (init_process): Initialize process_output_delay_count and
-       process_output_skip.
-       (syms_of_process): DEFVAR_LISP Vprocess_adaptive_read_buffering.
-
-2004-01-01  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_text_out): Use s->font, for consistency with callers.
-
-2003-12-30  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * print.c (Ferror_message_string): Add hyperlink in the docstring
-       to the definition of `signal' in the Elisp manual.
-       * eval.c (Fsignal): Ditto.
-
-2003-12-29  James Clark  <jjc@jclark.com>
-
-       * fns.c (internal_equal): Return t for two NaN arguments.
-
-2003-12-29  Richard M. Stallman  <rms@gnu.org>
-
-       * data.c (store_symval_forwarding): Handle setting
-       default-fill-column, etc., by changing the value in
-       buffers that use the default.
-
-       * minibuf.c (Fset_minibuffer_window): Doc fix.
-
-       * fileio.c (choose_write_coding_system): Ignore auto_saving
-       if using the visited file for auto saves.
-       (Fwrite_region): Don't update SAVE_MODIFF
-       if auto-saving in visited file.
-
-2003-12-29  Kenichi Handa  <handa@m17n.org>
-
-       * dispextern.h (face_font_available_p): Extern it.
-
-       * fontset.c (Voverriding_fontspec_alist): New variable.
-       (lookup_overriding_fontspec): New function.
-       (fontset_ref_via_base): Call lookup_overriding_fontspec if necessary.
-       (fontset_font_pattern): Likewise.
-       (regulalize_fontname): New function.
-       (Fset_fontset_font): Call regulalize_fontname.
-       (Fset_overriding_fontspec_internal): New function.
-       (syms_of_fontset): Initialize and staticpro Voverriding_fontspec_alist.
-       Defsubr Sset_overriding_fontspec_internal.
-
-       * xfaces.c (face_font_available_p): New function.
-
-2003-12-28  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (Fother_buffer): Don't crash if BUF is nil
-       or if its name is nil.
-
-       * buffer.c (Fkill_buffer): Don't delete auto-save file
-       if it's the same as the visited file.
-
-2003-12-28  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * coding.c (Fcheck_coding_system): Doc fix.
-
-2003-12-28  Kim F. Storm  <storm@cua.dk>
-
-       * Makefile.in (eval.o): Depend on dispextern.h.
-
-       * dispnew.c (buffer_posn_from_coords): Fix calculation of dy for
-       image glyph using image's ascent.
-       (mode_line_string): Return image glyph as object clicked on.
-       Adjust y0 for image glyph using image's ascent.
-
-       * dispextern.h (FACE_ID_BITS, MAX_FACE_ID): New defines.
-       (struct glyph): New members, ascent and descent.  Used to save
-       this glyph's ascent and descent, instead of having.
-       (struct glyph): Declare member face_id using FACE_ID_BITS.
-       (find_hot_spot): Add prototype.
-
-       * keyboard.c (Qimage): Remove extern (now in lisp.h).
-       (QCmap): Declare extern.
-       (make_lispy_position): When position is inside image hot-spot,
-       use hot-spot element's id as posn element.
-
-       * lisp.h (IMAGEP): New macro to test for image object type.
-       (Qimage): Declare extern.
-
-       * macfns.c (Qimage): Remove extern (now in lisp.h).
-       (valid_image_p, parse_image_spec): Use IMAGEP macro.
-
-       * macterm.c (Qface, Qmouse_face): Remove unused externs.
-
-       * w32fns.c (Qimage): Remove extern (now in lisp.h).
-       (valid_image_p, parse_image_spec): Use IMAGEP macro.
-
-       * w32menu.c (Qmouse_click, Qevent_kind): Remove unused externs.
-
-       * w32term.c (Qface, Qmouse_face): Remove unused externs.
-
-       * xdisp.c (Qarrow, Qhand, Qtext, Qpointer): New variables for
-       pointer types.
-       (Qrelative_width, Qalign_to): Remove unused variables.
-       (Vvoid_text_area_pointer): Replace Vshow_text_cursor_in_void.
-       (QCmap, QCpointer, Qrect, Qcircle, Qpoly): New variables for image
-       maps.
-       (x_y_to_hpos_vpos): Return glyph relative coordinates through new
-       dx and dy args.  Remove buffer_only_p arg (always 0).  Simplify
-       code accordingly.
-       (get_glyph_string_clip_rect): Draw cursor using glyph's rather
-       than row's ascent and height, to get sensible height on tall rows.
-       (build_desired_tool_bar_string): Remove Qimage extern.
-       (get_tool_bar_item): Fix call to x_y_to_hpos_vpos.
-       (produce_image_glyph): Adjust it.ascent to minimum row ascent if
-       image glyph is alone on the last line.
-       (append_glyph, append_composite_glyph, produce_image_glyph)
-       (append_stretch_glyph): Set glyph's ascent and descent.
-       (on_hot_spot_p): New function to check if position is inside an
-       rectangular, circular, or polygon-shaped image hot-spot,
-       (find_hot_spot): New function to search for image hot-spot.
-       (Flookup_image_map): New defun to search for image hot-spot.
-       (define_frame_cursor1): New aux function to determine frame
-       pointer.
-       (note_mode_line_or_margin_highlight, note_mouse_highlight): Handle
-       `pointer' text property and :pointer image property to control
-       frame pointer shape.  Detect image hot-spots for pointer and
-       help_echo properties.  Use define_frame_cursor1.
-       (note_mouse_highlight): Use Vvoid_text_area_pointer.
-       (syms_of_xdisp): Defsubr new defun.  Intern and staticpro new
-       variables.  DEFVAR_LISP Vvoid_text_area_pointer instead of
-       Vshow_text_cursor_in_void.
-
-       * xfaces.c (cache_face): Abort if c->size exceeds MAX_FACE_ID.
-
-       * xfns.c (x_set_mouse_color): Remove bogus x_check_errors call.
-       (Qimage): Remove extern (now in lisp.h).
-       (valid_image_p, parse_image_spec): Use IMAGEP macro.
-
-       * xmenu.c (show_help_event): Remove unused code.
-
-       * xterm.c (Qface, Qmouse_face): Remove unused externs.
-       (x_draw_hollow_cursor): Draw cursor using glyph's rather than
-       row's ascent and descent, to get a sensible height on tall rows.
-
-2003-12-25  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * minibuf.c (Fcompleting_read): Undo previous change.
-
-2003-12-25  Lars Hansen  <larsh@math.ku.dk>
-
-       * dired.c (Fdirectory_files, Fdirectory_files_and_attributes):
-       Arguments GCPRO'ed in call to file name handler.
-
-2003-12-25  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * termcap.c (tgetst1): Scan for "%pN"; if all
-       N are continuous in [1,9], remove all "%pN".
-
-2003-12-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_frame_set_char_size): Call x_wm_set_size_hint.
-
-       * xfaces.c (lface_fully_specified_p): Take into account that
-       MAC OS always have unspecified stipple.
-
-2003-12-24  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * tparam.c (tparam1): Add handling for `%pN', which
-       means use param N for the next substitution.
-
-2003-12-24  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * xfaces.c (Fcolor_gray_p): Fix omission bug:
-       In case `frame' is nil, consult the selected frame.
-       (Fcolor_supported_p): Likewise.
-
-2003-12-23  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fns.c (Frandom, Fstring_make_multibyte, Fset_char_table_range):
-       Doc fixes.
-
-       * minibuf.c (read_minibuf): Allow INITIAL to be a cons of a string
-       and an integer.  Adapt the introductory comment accordingly.
-       (Fread_from_minibuffer): Delete code moved into read_minibuf.
-       Doc fix.
-       (Fread_minibuffer, Fread_no_blanks_input): Adapt to changes in
-       read_minibuf.
-       (Fcompleting_read): Delete code moved into read_minibuf.
-       (Ftest_completion): Make it handle obarrays and hash tables correctly.
-
-2003-12-03  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (decode_coding_iso2022): Fix for preserving UTF-8
-       encoding sequence.
-
-2003-12-01  Kenichi Handa  <handa@m17n.org>
-
-       * composite.c (syms_of_composite): Don't make the compostion hash
-       table week.
-
-2003-11-30  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * intervals.h: Add EXFUN for Fget_char_property_and_overlay.
-       * textprop.c (Fget_char_property_and_overlay): New function.
-       (syms_of_textprop): Defsubr it.
-
-2003-11-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * dispnew.c (buffer_posn_from_coords): Add ifdef HAVE_WINDOW_SYSTEM
-       to compile on terminal configuration.
-
-       * fileio.c (Fread_file_name): Check use_file_dialog also before
-       calling Fx_file_dialog.
-
-       * fns.c (use_file_dialog): New variable.
-       (syms_of_fns): DEFVAR_BOOL use-file-dialog.
-
-2003-11-29  Kim F. Storm  <storm@cua.dk>
-
-       * msdos.c (Qcursor_type, Qbar, Qhbar): Declare extern.
-       (syms_of_msdos): Don't intern and staticpro them.
-
-2003-11-27  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (buffer_posn_from_coords): Calculate and return pixel
-       coordinates relative to glyph at posn.  If glyph is an image,
-       return that as object at posn.  Callers changed.
-       (mode_line_string, marginal_area_string): Calculate and return
-       pixel coordinates relative to glyph.  Callers changed.
-
-       * dispextern.h (buffer_posn_from_coords, mode_line_string)
-       (marginal_area_string): Fix prototypes.
-       (window_box_left_offset, window_box_right_offset): Add prototypes.
-
-       * frame.h (get_specified_cursor_type, get_window_cursor_type):
-       Remove prototypes.
-
-       * keyboard.h (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): Fix defines.
-
-       * keyboard.c (make_lispy_position): Add x and y coordinates
-       relative to the current glyph as 7th element of position.
-       If glyph is an image, return it in the object element.
-       (read_key_sequence): Skip checks for keymap property in cases
-       where POSN_STRING is not a string (e.g. an image).
-
-       * xdisp.c (Vdisplay_pixels_per_inch): New variable.
-       (Vshow_text_cursor_in_void): New variable.
-       (glyph_to_pixel_coords): Don't use negative hpos.
-       (x_y_to_hpos_vpos): Fix for partially visible first glyph.
-       (append_stretch_glyph): Change ascent arg to be actual value
-       in pixels rather than ratio to height.  Callers changed.
-       (calc_pixel_width_or_height): New aux function, implementing
-       pixel based artihmetic for glyph widths and heights.
-       (produce_stretch_glyph): Use calc_pixel_width_or_height for
-       :width, :height, :align-to, and :ascent, thus allowing these to
-       be specified in pixels as well as multiples of characters.
-       Don't produce stretch glyphs with zero width or height.
-       (get_specified_cursor_type): Declare static.
-       (get_window_cursor_type): Declare static.  Add glyph arg to be
-       able to know when cursor is on an image; always substitute
-       hollow-box cursor for filled-box cursor on images, to avoid
-       negative images and flicker when blinking the cursor.
-       (display_and_set_cursor): Pass glyph to get_window_cursor_type.
-       (note_mode_line_or_margin_highlight): Use non-text cursor rather
-       than vertical scroll-bar cursor in display margins.
-       (note_mouse_highlight): Use non-text cursor rather than text
-       cursor in fringes and over images in the text area.
-       Use non-text cursor when mouse pointer is outside editable text,
-       i.e. in the void after end-of-line or end-of-buffer; this was
-       already done for W32, but is now standard for all systems --
-       user can toggle show-text-cursor-in-void to get old behaviour.
-       (syms_of_xdisp): DEFVAR_LISP Vshow_text_cursor_in_void and
-       Vdisplay_pixels_per_inch.
-
-2003-11-25  Andreas Schwab  <schwab@suse.de>
-
-       * fns.c (internal_equal) <case Lisp_Vectorlike>: Declare size as
-       EMACS_INT to not lose bits.
-       (Ffillarray): Don't set bits beyond the size of a bool vector.
-
-2003-11-25  Kim F. Storm  <storm@cua.dk>
-
-       * print.c (Fredirect_debugging_output) [!GNU_LINUX]: Do not
-       define this defun on systems that cannot use stderr as lvalue.
-
-2003-11-24  Gerd Moellmann  <gerd@gnu.org>
-
-       * s/freebsd.h (LD_SWITCH_SYSTEM_TEMACS)
-       [__FreeBSD_version >= 500042]: Define as -znocombreloc because
-       ld's default is incompatible with unexec.
-
-2003-11-23  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (enum window_loop): Add REDISPLAY_BUFFER_WINDOWS.
-       (window_loop): Handle REDISPLAY_BUFFER_WINDOWS.
-       (Fforce_window_update): New defun.
-       (syms_of_window): Defsubr it.
-       (Fset_window_margins, Fset_window_fringes): Doc fix.
-
-       * print.c (Fredirect_debugging_output): New defun.
-       (syms_of_print): Defsubr it.
-
-2003-11-22  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fns.c (Fset_char_table_parent): Doc fix.
-
-2003-11-22  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (buffer_posn_from_coords): Return actual row/column
-       for glyph clicked on, rather than (unused) pixel positions.
-       (mode_line_string, marginal_area_string): Change X and Y args to
-       pointers for returning actual row/column for glyph clicked on.
-       Simplify and optimize loops.
-
-       * dispextern.h (mode_line_string, marginal_area_string):
-       Update prototypes.
-
-       * keyboard.c (make_lispy_position): New function for generating
-       mouse click positions from frame and pixel coordinates.
-       Enhanced to return buffer position and actual row/column for
-       events outside the text area using updated mode_line_string and
-       marginal_area_string functions.
-       Return left-fringe and right-fringe clicks as such, rather than
-       clicks in text area.
-       (make_lispy_event) [USE_X_TOOLKIT, USE_GTK]: Don't call
-       pixel_to_glyph_coords, as we never use the results.
-       (make_lispy_event): Use make_lispy_position for MOUSE_CLICK_EVENT,
-       WHEEL_EVENT, and DRAG_N_DROP_EVENT to replace redundant code.
-       Eliminate unused code in WHEEL_EVENT handling.
-       (make_lispy_movement): Use make_lispy_position.
-
-       * window.c (coordinates_in_window): Remove redundant tests.
-       Fix returned X pixel value for left-margin.
-
-       * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new
-       mode_line_string and marginal_area_string parameters.
-
-2003-11-22  Lars Hansen  <larsh@math.ku.dk>
-
-       * w32.c (struct the_group, getgrgid): Add.
-       * mac.c (struct my_group, getgrgid): Add.
-
-2003-11-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fns.c (Fassq, Fassoc, Frassq, Frassoc): Doc fixes.
-
-2003-11-21  Lars Hansen  <larsh@math.ku.dk>
-
-       * dired.c (Ffile_attributes): Add parameter ID-FORMAT and
-       include in call to file name handler.  Optionally translate numeric
-       UID and GID to strings.  Update docstring.
-       (directory_files_internal): Add parameter ID-FORMAT.
-       (Fdirectory_files_and_attributes): Add parameter ID-FORMAT and
-       include in call to file name handler and call to
-       directory_files_internal.  Update Docstring.
-       (Fdirectory_files): Add dummy parameter in call to
-       directory_files_internal.
-       * lisp.h (Qinteger): Add.
-       (Qinteger_or_floatp, Qinteger_or_float_or_marker_p): Remove.
-       (Ffile_attributes): Add parameter.
-       * data.c (Qinteger): Export.
-
-2003-11-21  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fns.c (Freverse, Fnreverse): Doc fixes.
-
-2003-11-19  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (init_iterator): Initialize it->start to position
-       before reseating (in case start position is invisible).
-       (init_to_row_start): Set it->start to row-start.
-       (redisplay_window): Accept optional_new_start if start position
-       is invisible (in which case IT_CHARPOS overshoots PT).
-       (display_line): Setup row->start from it->start (rather than
-       it->current which is wrong if first char on line is invisible).
-       When done, reseat it->start to it->current (= start of next row).
-       (expose_area): Fix exposure of text area when first char (e.g. TAB)
-       is only partially visible.
-
-       * dispextern.h (struct it): New member start.
-
-2003-11-17  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * alloc.c (make_float, Fcons): Clear the markbit at init time.
-       (make_float, Fcons, Fmake_symbol, allocate_misc): Move the increment
-       of block_index outside of the macro call.
-       (Fgarbage_collect): Remove null code.
-
-       * m/amdx86-64.h: Don't redefine XPNTR.
-
-       * keyboard.c (parse_modifiers, apply_modifiers): Use INTMASK instead
-       of VALMASK.
-
-       * fns.c (hashfn_eq, hashfn_eql, hashfn_equal, hash_put)
-       (sxhash_string, sxhash): Use INTMASK instead of VALMASK.
-       (maybe_resize_hash_table): Use MOST_POSITIVE_FIXNUM.
-
-       * lisp.h (VALMASK): Only define for non-union type.
-       (MARKBIT): Remove.
-       (ARRAY_MARK_FLAG): Use previous value of MARKBIT.
-       (XTYPE): Define unconditionally.
-       (XSETTYPE): Remove one more remnant.
-       (EQ): Define differently for the union and non-union cases.
-       (INTMASK): New bit mask.
-       (struct Lisp_Marker): Move down to prepare for upcoming patch.
-       (GC_EQ): Delegate to EQ.
-
-       * coding.c (coding_restore_composition): Lisp_Object/int mixup.
-
-2003-11-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_window_to_scroll_bar): Move check of display to
-       where window_id is compared.
-
-2003-11-17  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (struct it): New member first_vpos.
-
-       * xdisp.c (start_display): Set it->first_vpos.
-       (try_window_id): Use first_vpos to start display in first _text_
-       line if no reusable lines at start of window with header line.
-
-2003-11-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * w32fns.c (XPutPixel):
-       * w32bdf.c (w32_init_bdf_font):
-       * sunfns.c (sel_read):
-       * process.c (Fmake_network_process):
-       * frame.c (store_frame_param):
-       * fontset.c (Fset_fontset_font):
-       * emacs.c (shut_down_emacs):
-       * ccl.c (ccl_driver): Remove period at end of error message.
-
-       * config.in: Regenerate.
-
-       * xfns.c (x_window_to_frame, x_any_window_to_frame)
-       (x_non_menubar_window_to_frame, x_menubar_window_to_frame)
-       (x_top_window_to_frame): Add Display* argument to xg_win_to_widget.
-       (x_create_bitmap_mask, xg_set_icon, create_frame_xic)
-       (xic_set_statusarea, x_window, gif_load): Formatting adjustments.
-
-       * xterm.h (struct x_display_info): New field xg_cursor for GTK.
-
-       * xterm.c: Add Display * to x_window_to_scroll_bar declaration.
-       (XTmouse_position, handle_one_xevent): Pass Display* to
-       x_window_to_scroll_bar.
-       (x_window_to_scroll_bar): Take a Display* argument.
-       Check that display for frame is equal to Display* argument.
-       (event_handler_gdk): Remove current_dpyinfo.  Get dpyinfo from
-       x_display_info_for_display instead.  Use Display in xev instead
-       of GDK_DISPLAY.
-       (x_dispatch_event): Call x_display_info_for_display.
-       (XTread_socket): Move GTK part out of loop.  current_dpyinfo removed.
-       (x_connection_closed): Call xg_display_close for GTK.
-       (x_term_init): Call xg_display_open for additional displays.
-       Initiate dpyinfo->xg_cursor with call to xg_create_default_cursor
-       for GTK.
-
-       * xmenu.c (single_menu_item, mouse_position_for_popup)
-       (x_activate_menubar): Formatting adjustments.
-
-       * xdisp.c (update_tool_bar, redisplay_tool_bar): Formatting
-       adjustments.
-
-       * gtkutil.c (xg_get_gdk_display, xg_set_screen, xg_display_open)
-       (xg_display_close, xg_create_default_cursor)
-       (xg_get_gdk_pixmap_and_mask): New functions for multiple display
-       handling.
-       (xg_left_ptr_cursor): Remove.
-       (xg_set_cursor): Change cursor to GdkCursor*.  Do not create
-       cursor here.
-       (xg_win_to_widget): Take Display* argument, call
-       gdk_xid_table_lookup_for_display.
-       (xg_create_frame_widgets, xg_get_file_name, create_menus)
-       (xg_create_widget, xg_modify_menubar_widgets): Call xg_set_screen.
-       (xg_create_widget, xg_create_scroll_bar): Use xg_cursor
-       in FRAME_X_DISPLAY_INFO.
-       (xg_get_scroll_id_for_window): Take Display* argument.
-       (update_frame_tool_bar): Call xg_get_gdk_pixmap_and_mask.
-       (xg_initialize): Remove xg_left_ptr_cursor.
-
-       * gtkutil.h (xg_get_scroll_id_for_window, xg_win_to_widget): Add
-       Display* argument.
-       (xg_display_open, xg_display_close, xg_create_default_cursor): Declare.
-
-2003-11-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_detect_focus_change): Do not change focus frame for
-       Enter/LeaveNotify if the current focus frame has explicit focus.
-
-2003-11-14  Kim F. Storm  <storm@cua.dk>
-
-       * dispnew.c (update_text_area): Fix redisplay error when hscroll
-       is active and first glyph is only partially visible.
-
-2003-11-13  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (select_frame_for_redisplay): New function.
-       (redisplay_internal): Record also selected_frame for
-       unwind_redisplay.  Call select_frame_for_redisplay before
-       redrawing each frame.
-       (unwind_redisplay): Argument changed to a cons.
-
-2003-11-12  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fns.c (Fstring_to_multibyte): Doc fix.
-
-2003-11-11  Kenichi Handa  <handa@m17n.org>
-
-       * xterm.c (x_list_fonts): Fix excluding of auto-scaled fonts.
-
-2003-11-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (x_window): Set XtNx and XtNy in shell widget for
-       program specified positions.
-
-2003-11-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (XAW_ARROW_SCROLLBARS): Define it for Xaw 1.5E.
-
-2003-11-08  Kenichi Handa  <handa@m17n.org>
-
-       * Makefile.in (lisp): Add kannada.el.
-       (shortlisp): Likewise.
-
-2003-11-07  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (coding_allocate_composition_data):
-       Reset coding->composing to COMPOSITION_NO.
-       (coding_restore_composition): Detect invalid composition data.
-       Give Fstring and Fvector a Lispy integer, not C int.
-
-2003-11-05  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * floatfns.c (Flogb): Don't use VALMASK.
-
-       * m/amdx86-64.h (VALBITS, XINT, XUINT): Remove.
-       * m/ia64.h (VALBITS, XINT, XUINT): Remove.
-
-       * lisp.h (XINT): Move the cast to clarify what is going on.
-       (GCTYPEMASK, XSETTYPE): Remove.
-       (XGCTYPE): Make it an alias of XTYPE.
-
-2003-11-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_term_init): Fix formatting.
-
-2003-11-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.h (xg_have_tear_offs): Declare.
-       (xg_keep_popup, xg_did_tearoff): Remove.
-
-       * gtkutil.c: Remove variable xg_did_tearoff.
-       (xg_have_tear_offs): New function.
-       (tearoff_remove): Just decrease xg_detached_menus.
-       (tearoff_activate): Increase xg_detached_menus and call
-       tearoff_remove when tearoff is removed.
-       (xg_keep_popup): Remove function.
-       (create_menus): Give add_tearoff_p as argument to recursive
-       call to create_menus.
-       (xg_create_widget): Use variables instead of multiple
-       strcmp.  Tell create_menus to create tear off only for
-       menu bar menus.
-       (xg_update_menubar): Change title for a detached menu also.
-       (xg_modify_menubar_widgets): Always call xg_update_menubar, regardless
-       of deep_p.
-       (xg_initialize): Initialize xg_detached_menus, remove
-       initialization of xg_did_tearoff.
-
-       * xmenu.c (set_frame_menubar): For GTK, set deep_p if
-       xg_have_tear_offs returns non-zero.
-       (create_and_show_popup_menu): Remove setting of xg_did_tearoff and
-       call to xg_keep_popup.
-
-2003-11-01  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (XTread_socket): Handle menubar selection and grow
-       window only for mouseDown events.
-
-2003-10-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_term_init): For GTK part, increase x_initialized
-       to check for more than one display.  Use error instead of return 0.
-
-2003-10-31  Andrew Choi  <akochoi@shaw.ca>
-
-       * unexmacosx.c (unrelocate): New function (contributed by Nozomu Ando).
-       (copy_dysymtab): Call it.
-
-2003-10-31  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * eval.c (Fdefvaralias): Doc fix.
-
-2003-10-26  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * data.c (Fsetplist): Doc fix.
-
-2003-10-14  Lute Kamstra  <lute@gnu.org>
-
-       * window.c (Fset_window_fringes): Clarify docstring.
-
-2003-10-14  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Fset_window_margins): Simplify arg checking.
-
-2003-10-13  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.c (MAX_BUF_SIZE): Reduce to 2**15.
-       (print_partial_compiled_pattern): Replace assert with a printout.
-       (skip_noops, mutually_exclusive_p): Change args, values to re_char *.
-
-       * alloc.c (lisp_align_malloc): If BASE is 0, call memory_full.
-
-       * window.c (Fset_window_margins): Allow only integers as args.
-       (syms_of_window) <special-display-buffer-names,
-       special-display-regexps>: Doc fixes.
-
-2003-10-13  Lute Kamstra  <lute@gnu.org>
-
-       * window.c (Fset_window_fringes): Elaborate docstring.
-
-2003-10-12  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (XTread_socket): Call DragWindow only for mouseDown events.
-
-       * s/darwin.h (GC_MARK_STACK): Define.
-
-2003-10-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * window.c (shrink_windows): New function.
-       (size_window): Call shrink_windows to calculate window sizes when
-       shrinking frame with more than one window.
-
-2003-10-12  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (compute_fringe_widths): Doc fix.
-
-2003-10-08  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (Fcoding_system_p): Return t for auto-loading coding system.
-
-2003-10-07  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (Qcoding_system_define_form): New variable.
-       (syms_of_coding): Intern and staticpro it.
-       (Fcheck_coding_system): Try to autoload the definition of
-       CODING-SYSTEM.
-
-2003-10-05  Luc Teirlinck  <teirllm@auburn.edu>
-
-       * fns.c (Frequire): Doc fix.
-
-2003-10-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (Fx_send_client_event): New function as a base for
-       manipulating extended window manager hints.
-       (Fx_send_client_event): Remove unused variable s.
-
-       * w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
-       that function is removed.
-
-       * xterm.c (x_set_offset): Use move_offset_left/top instead of
-       x/y_pixels_outer_diff.
-       (x_check_expected_move): Calculate move_offset_left/top.
-
-       * xterm.h (struct x_output): New members: move_offset_top/left.
-
-       * frame.c (x_set_frame_parameters): Remove x_fullscreen_move,
-       call x_set_offset directly.
-
-       * frame.h (enum): FULLSCREEN_MOVE_WAIT removed.
-
-       * frame.c (Fdelete_frame): Free decode_mode_spec_buffer.
-
-       * xterm.c (x_delete_display): Free font names and font_encoder
-       in dpyinfo->font_table.
-
-       * xfns.c (Fx_close_connection): Only call XFreeFont here.
-       Move xfree of font names to x_delete_display.
-
-       * xterm.h (struct x_display_info): New member, wm_type.
-       (struct x_output): New members, expected_top/left and
-       check_expected_move.
-
-       * xterm.c (handle_one_xevent): Reset wm_type when ReparentNotify
-       is received.
-       (handle_one_xevent): Rename x_check_expected_move from
-       x_check_fullscreen_move.
-       (x_set_offset): Only add WM decoration sizes to modified_top/left
-       for X_WMTYPE_A.  Set check_expected_move when WM type is unknown.
-       (x_check_expected_move): Rename from x_check_fullscreen_move.
-       Removed fullscreen specific code.  Use check_expected_move,
-       expected_left/top instead.  Also, set wm_type.
-       (x_term_init): Initialize wm_type to unknown.
-
-       * frame.c (x_fullscreen_move): Remove addition of WM decoration
-       sizes to move_x/y.
-
-2003-10-03  Kenichi Handa  <handa@m17n.org>
-
-       * macterm.c (x_load_font): Clear all members of FONTP before start
-       filling them.
-
-2003-10-02  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (fs_load_font): Don't set fontp->font_encoder to NULL
-       before calling find_ccl_program_func.  Call find_ccl_program_func
-       only when fontp->font_encoder is not NULL.
-
-       * xterm.c (x_load_font): Clear all members of FONTP before start
-       filling them.
-
-2003-10-03  John Paul Wallington  <jpw@gnu.org>
-
-       * keymap.c (map_keymap): Don't abort when binding is a vector.
-
-2003-10-02  Jason Rumney  <jasonr@gnu.org>
-
-       * makefile.w32-in (emacs.o, coding.o, bytecode.o):
-       Sync dependencies with Makefile.in.
-       (alloca.o): Remove.
-
-       * w32fns.c (w32_load_system_font): Clear all members of FONTP before
-       filling them.
-
-       * w32bdf.c (w32_load_bdf_font): Likewise.
-
-2003-09-30  Richard M. Stallman  <rms@gnu.org>
-
-       * term.c (set_tty_color_mode): Calculate current_mode_spec
-       regardless of value of VAL.
-
-       * intervals.c (graft_intervals_into_buffer):
-       Set BUF_INTERVALS (buffer)->up_obj when appropriate.
-       Handle over_used when splitting UNDER.
-
-2003-09-30  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-
-       * regex.c (regex_compile): Free the stack when returning from function.
-
-2003-09-28  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (Finternal_char_font): Change return value to
-       cons (FONT-NAME . GLYPH-CODE).
-
-2003-09-28  Eli Zaretskii  <eliz@gnu.org>
-
-       * term.c (tty_setup_colors): Treat any negative argument as -1.
-
-2003-09-27  Gaute B Strokkenes  <biggaute@uwc.net>  (tiny change)
-
-       * process.c (send_process): Delete unused temp_buf.
-
-2003-09-26  Dave Love  <fx@gnu.org>
-
-       * xterm.c (x_bitmap_mask): Declare.
-
-2003-09-25  Dave Love  <fx@gnu.org>
-
-       * Makefile.in (fns.o): Depend on md5.h.
-
-2003-09-25  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (set_window_buffer): Fix redisplay problems when
-       switching between buffers with different display margin widths.
-
-2003-09-23  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (set_socket_option): Fix :bindtodevice option.
-       (Fset_network_process_option): Update process contact list when
-       setting option succeeds.
-       (Fmake_network_process): Doc fix.
-
-2003-09-23  Dave Love  <fx@gnu.org>
-
-       * process.c (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ... macros.
-
-2003-09-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * term.c (set_tty_color_mode): Use INTEGERP to test whether a
-       color mode is an integer number (it could be -1).
-
-2003-09-22  Richard M. Stallman  <rms@gnu.org>
-
-       * intervals.c (graft_intervals_into_buffer): Correct the main loop
-       in the case where OVER is longer than UNDER.
-
-2003-09-22  Masatake YAMATO  <jet@gyve.org>
-
-       * window.c (Fset_window_scroll_bars): Validate the value of
-       `vertical_type'.
-
-2003-09-21  Kim F. Storm  <storm@cua.dk>
-
-       * frame.c (Vdefault_frame_scroll_bars): New variable.
-       (x_set_vertical_scroll_bars): Use it instead of hardcoded values.
-       (syms_of_frame): DEFVAR_LISP it, and initialize according to
-       window-system default scroll bar position.
-
-       * window.c (Fwindow_scroll_bars): Doc fix.
-
-2003-09-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_set_offset): Take window manager decorations into account.
-
-2003-09-19  Richard M. Stallman  <rms@gnu.org>
-
-       * atimer.h: Don't include lisp.h.
-       (P_): Define it here (as well as elsewhere).
-
-       * print.c (Fprin1_to_string): Move the PRINTPREPARE
-       later, so that PRINTFINISH won't unbind Qinhibit_modification_hooks.
-
-       * data.c (Fvariable_binding_locus): New function.
-       (syms_of_data): defsubr it.
-       (Flocal_variable_p): Delete duplicate call to indirect_variable.
-
-2003-09-18  Dave Love  <fx@gnu.org>
-
-       * alloc.c (GC_MALLOC_CHECK): Move conditional undef after lisp.h.
-
-       * process.c (Fnetwork_interface_info): Fix type error.
-       (Fnetwork_interface_list): Doc fix.
-       (read_process_output, read_process_output): Delete unused var.
-
-2003-09-17  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fnetwork_interface_list, Fnetwork_interface_info):
-       Require HAVE_NET_IF_H and HAVE_SYS_IOCTL_H to include these fns.
-       (Fnetwork_interface_info): Check that ifreq struct has required
-       fields before accessing them; this requires that those fields are
-       defined as macros, which may be too restrictive on some platforms,
-       but it is better than failing on other platforms.
-       (syms_of_process): Only defsubr above fns when included.
-
-2003-09-17  Dave Love  <fx@gnu.org>
-
-       * unexalpha.c: Don't include varargs.h.
-
-2003-09-17  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fset_process_sentinel): Add sentinel to childp plist
-       for network process.
-       (socket_options): Add `:' prefix to option names.  Add optbit field.
-       (set_socket_option): Remove no_error arg and special handling of s < 0.
-       Return 1<<optbit for known option, 0 for unknown.
-       Do not interpret 0 as false for boolean option (only nil).
-       Pass failed option and value to report_file_error.
-       (Fset_network_process_options): Replace by Fset_network_process_option.
-       (Fset_network_process_option): New function to set just one option.
-       (Fmake_network_process): Allow :coding arg to be a cons.
-       Allow :server arg to be an integer specifying backlog size.
-       Remove :options arg, and allow options to be specified directly
-       as :KEY, VALUE pairs.  Parse these options before binding socket.
-       As before, :reuseaddr t is default for a server process, but this
-       can now be disabled by specifying :reuseaddr nil.
-       (Fnetwork_interface_info): Rename from Fget_network_interface_info.
-       (init_process): Availability of network options is now checked with
-       simpler syntax (featurep 'make-network-process :OPTION); use loop to
-       setup features.
-       (syms_of_process): Fix defsubr's for the replaced functions.
-
-2003-09-16  Dave Love  <fx@gnu.org>
-
-       * Makefile.in: Depend on coding.h.
-
-2003-09-14  Kim F. Storm  <storm@cua.dk>
-
-       * process.c [HAVE_SOCKETS]: Include sys/ioctl.h and net/if.h.
-       (Fnetwork_interface_list, Fget_network_interface_info): New defuns.
-       (syms_of_process): Defsubr them.
-
-       * config.in: Regenerate.
-
-2003-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * m/sr2k.h (XMARKBIT, XUNMARK): Remove.
-       * m/news-r6.h (XUNMARK): Remove.
-       * m/mips.h (XUNMARK): Remove.
-       * m/mips-siemens.h (XUNMARK): Remove.
-       * m/iris4d.h (XUNMARK): Remove.
-       * m/hp800.h (XMARKBIT, XUNMARK): Remove.
-
-2003-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * lisp.h (VALBITS): Don't remove 1 for the markbit.
-       (union Lisp_Object): Use unsigned int for types.  Remove markbit.
-       (MARKBIT): Remove 1 from VALBITS so we still use same old val.
-       (XTYPE): Use unsigned right-shift.
-       (XMARKBIT, XMARK, XUNMARK): Remove.
-
-       * alloc.c (init_intervals, init_symbol, init_marker):
-       Don't preallocate anything.
-       (Fgarbage_collect, mark_object): Ignore the markbit.
-
-       * bytecode.c (mark_byte_stack, unmark_byte_stack): Ignore the markbit.
-
-2003-09-08  Lute Kamstra  <lute@gnu.org>
-
-       * xdisp.c (pint2hrstr): New function.
-       (decode_mode_spec): Add `%i' and `%I' specs.
-       * buffer.c (syms_of_buffer): Document `%i' and `%I' constructs
-       for `mode-line-format'.
-
-2003-09-07  Andreas Schwab  <schwab@suse.de>
-
-       * alloc.c: Use long instead of int when casting ABLOCKS_BUSY to
-       avoid warning.
-
-2003-09-07  Eli Zaretskii  <eliz@gnu.org>
-
-       * editfns.c (region_limit): Support any non-zero value of BEGINNINGP.
-
-2003-09-03  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_window_cursor_type): Partially undo 2002-03-01
-       change (superseded by 2002-08-30 change); the default blink-off
-       cursor is now again "no cursor".
-
-2003-09-01  Jason Rumney  <jasonr@gnu.org>
-
-       * makefile.w32-in (alloca.o): Remove.
-       (coding.o): Depend on intervals.h
-       (emacs.o, bytecode.o): Depend on window.h
-
-2003-09-01  Dave Love  <fx@gnu.org>
-
-       * Makefile.in (alloca.o): Remove commands.
-       (coding.o): Depend on intervals.h composite.h window.h.
-       (emacs.o): Depend on window.h keyboard.h keymap.h.
-       (gtkutil.o): Depend on keyboard.h charset.h coding.h.
-       (bytecode.o): Depend on window.h.
-
-2003-08-31  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_per_char_metric): Allow cached metrics to be
-       returned even when font_type is unknown.
-
-       * xdisp.c (init_iterator): Remove old WINDOWSNT conditional.
-
-2003-08-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_term_init): Initialize new fields in x_display_info.
-
-       * xterm.h (struct x_display_info): Add red/green/blue_bits and
-       *_offset.
-
-       * xfns.c (lookup_rgb_color): Use new fields in x_display_info to
-       calculate pixel value.
-
-2003-08-29  Gerd Moellmann  <gerd.moellmann@t-online.de>
-
-       * xdisp.c (redisplay_internal): Fix change of 2003-04-30.
-       Don't tell redisplay display is accurate when it's actually been
-       paused for pending input.
-
-2003-08-29  Richard M. Stallman  <rms@gnu.org>
-
-       * dispnew.c (adjust_glyph_matrix): Call window_box
-       whenever W is nonzero.
-
-       * data.c (Fmake_variable_buffer_local, Fmake_local_variable)
-       (Fkill_local_variable, Fmake_variable_frame_local)
-       (Flocal_variable_p, Flocal_variable_if_set_p):
-       Use indirect_variable to trace thru variable aliases.
-
-       * config.in: Updated.
-
-       * callint.c (Fcall_interactively): Save and restore
-       Vthis_command, Vthis_original_command, real_this_command,
-       and current_kboard->Vlast_command.
-
-       * abbrev.c (Fexpand_abbrev): Insert before deleting.
-
-2003-08-29  Gerd Moellmann  <gerd@gnu.org>
-
-       * xfns.c (lookup_rgb_color): Handle TrueColor visuals specially.
-
-2003-08-28  David Abrahams  <dave@boost-consulting.com>  (tiny change)
-
-       * coding.c (decode_coding_iso2022): Initialize local variable c2.
-       (decode_coding_sjis_big5): Likewise.
-
-2003-08-27  Jason Rumney  <jasonr@gnu.org>
-
-       * w32.c (sys_pipe): Protect against file descriptor overflow.
-
-       * w32fns.c (syms_of_w32fns): Remove non-existent functions.
-
-       * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment.
-
-2003-08-26  Terje Rosten  <terjeros@phys.ntnu.no>
-
-       * xfns.c (Vgtk_version_string): New variable.
-       (syms_of_xfns): DEFVAR_LISP it.  Provide gtk.
-
-2003-08-24  Eli Zaretskii  <eliz@gnu.org>
-
-       * term.c (term_init): Remove `const' from buffer_size's declaration.
-
-       * Makefile.in (msdos.o): Depend on intervals.h.
-
-       * msdos.c: Include intervals.h, since STRING_INTERVALS requires that.
-
-2003-08-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h (struct x_display_info): New fields: client_leader_window
-       and Xatom_wm_client_leader.
-
-       * xterm.c (x_initialize): Move call to x_session_initialize to ...
-       (x_term_init): ... here.  Initialize client_leader fields in dpyinfo.
-
-       * xsmfns.c (create_client_leader_window): New function.
-       (x_session_initialize): Call create_client_leader_window, take
-       dpyinfo as argument.
-
-       * xfns.c (Fx_create_frame): Set property WM_CLIENT_LEADER.
-
-       * Makefile.in (xsmfns.o): Add more depenedencies.
-
-2003-08-21  Dave Love  <fx@gnu.org>
-
-       * m/iris4d.h: Use _MIPS_SZLONG, not _LP64.
-
-2003-08-21  Kenichi Handa  <handa@m17n.org>
-
-       * term.c (term_init): Fix previous change; don't rely on the
-       length of `buffer' if TERMINFO is defined.
-
-2003-08-20  Dave Love  <fx@gnu.org>
-
-       * atimer.h: Include lisp.h.
-
-       * lisp.h (EMACS_LISP_H): New.
-       (popup_activated_flag): Don't declare.
-
-       * alloca.c: Some merging with gnulib.  Change logic and doc
-       concerning (x)malloc/(x)free -- no longer Emacs-specific.
-       [DO_BLOCK_INPUT]: Don't include lisp.h.
-       (xmalloc, xfree): Declare.
-       (malloc): Don't declare.
-
-       * Makefile.in (LWLIB_OPTIONS): Remove (unused).
-       (alloca.o): Remove obsolete stuff concerning alloca.s.  Depend on
-       atimer.h, blockinput.h.
-
-       * alloc.c (lisp_align_malloc): Change type of `aligned'.
-
-       * alloca.s: Remove.
-
-2003-08-19  Gerd Moellmann  <gerd@gnu.org>
-
-       * s/freebsd.h [__FreeBSD_version >= 400000]: Define TERMINFO,
-       use -lncurses.
-
-       * term.c (term_init): Use a buffer of size 4096 for tgetent since
-       FreeBSD returns something longer than 2044.  Abort if the end of
-       the buffer is overwritten.
-
-2003-08-19  Miles Bader  <miles@gnu.org>
-
-       * xterm.c (x_term_init): Correctly use result of Ffile_readable_p.
-
-2003-08-19  Gerd Moellmann  <gerd@gnu.org>
-
-       * alloc.c (lisp_align_malloc): Check for memory full when
-       allocating ablocks, which also avoids freeing a pointer into an
-       ablocks structure.
-
-       * puresize.h (BASE_PURESIZE): Increase to 1100000.
-
-       * buffer.c (Fmove_overlay): Set overlay's next pointer unconditionally.
-
-2003-08-16  Richard M. Stallman  <rms@gnu.org>
-
-       * editfns.c (Fencode_time): Doc fix.
-
-2003-08-16  David Ponce  <david@dponce.com>
-
-       * fileio.c (Fwrite_region): Fix conditional expression to issue
-       the right message.
-
-2003-08-16  Juri Linkov  <juri@jurta.org>
-
-       * syntax.c (Fforward_word): Argument changed to optional.
-       Set default value to 1.
-
-2003-08-15  Kenichi Handa  <handa@m17n.org>
-
-       * xfaces.c (better_font_p): Prefer a real scalable font; i.e. not
-       what autoscaled.
-       (best_matching_font): Once we find a better scalable font, set
-       non_scalable_has_exact_height_p to 1.
-       (try_font_list): Call try_alternative_families to try any family
-       with the given registry.
-
-2003-08-09  Andreas Schwab  <schwab@suse.de>
-
-       * alloc.c (mark_object): Handle Lisp_Misc_Save_Value.
-
-       * print.c (print_string): Fix printing of multibyte string with
-       nontrivial printcharfun.
-
-2003-07-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (xg_set_icon): Rewrite to compile with GTK 2.0 and 2.2.
-
-       * xterm.c (x_bitmap_icon): Return if xg_set_icon succeeds.
-
-2003-07-31  Kenichi Handa  <handa@m17n.org>
-
-       * process.c (read_process_output): Return the actually read bytes
-       instead of the result of decoding.
-
-2003-07-31  Kenichi Handa  <handa@m17n.org>
-
-       * xterm.h (struct x_bitmap_record): New member have_mask.
-
-       * xfns.c (x_create_bitmap_from_data): Initialize have_mask member
-       to 0.
-       (x_create_bitmap_from_file): Likewise.
-       (x_destroy_bitmap): Check have_mask member before freeing a mask.
-       (x_destroy_all_bitmaps): Likewise.
-       (x_create_bitmap_mask): Set have_mask member to 1.
-
-2003-07-30  Richard M. Stallman  <rms@gnu.org>
-
-       * Makefile.in (CFLAGS) [!OPTIMIZE]: Undo previous change.
-
-2003-07-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_mark_data): Update calls to mark_object.
-
-2003-07-29  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.c (xim_open_dpy, xim_initialize, xim_close_dpy):
-       Conditionalize XIM code on HAVE_XIM.
-
-       * fns.c (Fclear_string): New function.
-       (syms_of_fns): defsubr it.
-
-2003-07-28  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
-
-       * xfns.c (xic_set_preeditarea): Add the left fringe width to spot.x.
-
-2003-07-22  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xfns.c: Don't check HAVE_PNG_H: autoconf doesn't seem to find it.
-
-       * buffer.c (delete_all_overlays): New function.
-       * buffer.h (delete_all_overlays): Declare.
-       * coding.c (run_pre_post_conversion_on_str):
-       * print.c (temp_output_buffer_setup):
-       * fileio.c (Finsert_file_contents):
-       * minibuf.c (get_minibuffer): Use it.
-
-2003-07-22  Andrew Choi  <akochoi@shaw.ca>
-
-       * unexmacosx.c (unexec_regions_sort_compare):
-       (unexec_regions_merge): New functions.  Sort and merge unexec
-       regions before dumping them.
-
-2003-07-22  Dave Love  <fx@gnu.org>
-
-       * xfns.c [HAVE_PNG]: Consider both png.h and libpng/png.h.
-
-2003-07-21  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * alloc.c (MARK_STRING, UNMARK_STRING, STRING_MARKED_P)
-       (GC_STRING_CHARS, string_bytes): Use ARRAY_MARK_FLAG rather than
-       MARKBIT as the gcmarkbit for strings.
-
-2003-07-21  Richard M. Stallman  <rms@gnu.org>
-
-       * s/openbsd.h (LD_SWITCH_SYSTEM_TEMACS): Add undef.
-
-       * fns.c (Flocale_info): Rename from Flanginfo.  Doc fixes.
-       (syms_of_fns): Corresponding change.
-
-       * alloc.c (syms_of_alloc): Doc fixes.
-
-2003-07-20  Han Boetes  <han@mijncomputer.nl>  (tiny change)
-
-       * s/netbsd.h: Use -Wl syntax.
-
-2003-07-17  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.c (xim_initialize): Redo 6/24 change.
-
-2003-07-15  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * buffer.c (copy_overlays): Use EMACS_INT for positions.
-       (Fswitch_to_buffer): Don't signal an error when switching to the same
-       buffer in a dedicated window.
-
-       * alloc.c: Use bitmaps for cons, as was done for floats.
-       (init_float, init_cons): Let the normal code allocate the first block.
-       (CONS_BLOCK_SIZE): Redefine based on BLOCK_BYTES and bitmap size.
-       (CONS_BLOCK, CONS_INDEX, CONS_MARKED_P, CONS_MARK, CONS_UNMARK):
-       New macros.
-       (struct cons_block): Move conses to the beginning.  Add gcmarkbits.
-       (Fcons): Use lisp_align_malloc and CONS_UNMARK.
-       (live_cons_p): Check the pointer is not past the `conses' array.
-       (mark_maybe_object, mark_maybe_pointer): Use CONS_MARKED_P.
-       (mark_object, mark_buffer): Use CONS_MARKED_P and CONS_MARK.
-       (survives_gc_p): Use CONS_MARKED_P and simplify.
-       (gc_sweep): Use CONS_MARKED_P, CONS_UNMARK, and lisp_align_free.
-
-2003-07-13  Paul Eggert  <eggert@twinsun.com>
-
-       GCC 3.3 (sparc) no longer puts "int foo = 0;" into data; it
-       puts it into BSS instead, at least on Solaris 8 and 9.
-       This is a valid optimization, and it may occur on other platforms,
-       so Emacs should not assume that initializing a static variable to
-       zero puts it into data.
-       * alloc.c (pure, staticvec):
-       Initialize these arrays to nonzero, so that they're not
-       put into BSS by that optimization.
-
-2003-07-13  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * alloc.c (BLOCK_PADDING): Rename from ABLOCKS_PADDING.  Update users.
-       (lisp_align_malloc): Use posix_memalign is available.
-       (ABLOCKS_BASE): Use HAVE_POSIX_MEMALIGN as an optimization.
-       (STRING_BLOCK_SIZE): Rename from STRINGS_IN_STRING_BLOCK
-       for consistency.  Update users.
-
-2003-07-13  Richard M. Stallman  <rms@gnu.org>
-
-       * s/netbsd.h (START_FILES_1, END_FILES_1): Always define them.
-
-2003-07-13  Terje Rosten  <terjeros@phys.ntnu.no>
-
-       * xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap): Modify to add mask,
-       and use the Gtk+ function gtk_window_icon_from_file if available.
-
-       * xfns.c (x_bitmap_mask, x_create_bitmap_mask): New functions to
-       handle mask of bitmaps.
-       (x_allocate_bitmap_record, x_destroy_bitmap): Modify to handle the
-       mask property.
-       (xg_set_icon): New function, wrapper for gtk_window_icon_from_file.
-
-       * xterm.h (xg_set_icon): New function.
-
-2003-07-12  Paul Eggert  <eggert@twinsun.com>
-
-       * unexelf.c (unexec): Consider a section to precede the .bss
-       section if its addresses overlap that of .bss.
-
-2003-07-12  Richard M. Stallman  <rms@gnu.org>
-
-       * Makefile.in (CFLAGS) [!OPTIMIZE]: Set CFLAGS to -g.
-
-       * config.in (HAVE_CRTIN): Add #undef.
-       (INLINE): Really inline only if OPTIMIZE is defined.
-
-       * s/netbsd.h (START_FILES, LIB_STANDARD): Use START_FILES_1,
-       END_FILES_1.
-       (START_FILES_1, END_FILES_1): New macros (conditional).
-       (LD_SWITCH_SYSTEM_TEMACS): Define.
-
-       * s/openbsd.h: Don't include bsd4-3.h.
-       (TERMINFO): Define.
-       (LIBS_TERMCAP): Define.
-       (LD_SWITCH_SYSTEM): Define (two definitions).
-
-       * xfns.c: Include libpng/png.h instead of png.h.
-
-2003-07-11  Andreas Schwab  <schwab@suse.de>
-
-       * buffer.c (modify_overlay): Update prototype.
-       * lisp.h (adjust_overlays_for_insert, adjust_overlays_for_delete):
-       Likewise.
-
-2003-07-09  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * lisp.h (VALBITS): Define in terms of GCTYPEBITS.
-       (struct interval): Move to intervals.h.
-       (struct Lisp_Marker): Use EMACS_INT for position info.
-       (forward_point): Remove prototype of defunct function.
-       (Qmodification_hooks, Qrear_nonsticky, Fnext_property_change)
-       (Fget_text_property, Fset_text_properties, Ftext_propertes_not_all)
-       (syms_of_textprop, set_text_properties): Remove prototypes that are
-       already in intervals.h.
-
-       * intervals.h (struct interval): Move from lisp.h.
-       Use EMACS_INT for position and size info.
-
-       * coding.c: Include intervals.h for Fset_text_properties.
-
-       * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for
-       position and length information.
-
-2003-07-09  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for
-       position and length information.
-
-2003-07-09  Stefan Monnier  <monnier@cs.yale.edu>
-
-       Change overlays_after and overlays_before so the overlays themselves
-       are linked into lists, rather than using cons cells.  After all each
-       Lisp_Misc already occupies 5 words, so we can add a `next' field to
-       Lisp_Overlay for free and save up one cons cell per overlay (not
-       to mention one indirection when traversing the list of overlay).
-
-       * lisp.h (struct Lisp_Overlay): New field `next'.
-
-       * buffer.h (struct buffer): Change overlays_before and overlays_after
-       from Lisp lists of overlays to pointers to overlays.
-
-       * buffer.c (overlay_strings, recenter_overlay_lists):
-       Fix typo in eassert in last commit.
-       (unchain_overlay): New function.
-       (add_overlay_mod_hooklist): Use AREF.
-       (copy_overlays, reset_buffer, overlays_at, overlays_in)
-       (overlay_touches_p, overlay_strings, recenter_overlay_lists)
-       (fix_overlays_in_range, fix_overlays_before, Fmake_overlay)
-       (Fmove_overlay, Fdelete_overlay, Foverlay_lists)
-       (report_overlay_modification, evaporate_overlays, init_buffer_once):
-       Adjust to new type of overlays_(before|after).
-
-       * alloc.c (mark_object): Mark the new `next' field of overlays.
-       (mark_buffer): Manually mark the overlays_(after|before) fields.
-
-       * coding.c (run_pre_post_conversion_on_str):
-       * editfns.c (overlays_around):
-       * xdisp.c (load_overlay_strings):
-       * fileio.c (Finsert_file_contents):
-       * indent.c (current_column):
-       * insdel.c (signal_before_change, signal_after_change):
-       * intervals.c (set_point_both):
-       * print.c (temp_output_buffer_setup): Use new type for
-       overlays_(before|after).
-
-2003-07-08  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * buffer.c (report_overlay_modification): Don't run hooks while
-       traversing the list of overlays.
-
-       * buffer.h (struct buffer): Use an int for overlay_center.
-       (overlays_at, evaporate_overlays, recenter_overlay_lists)
-       (overlay_strings, fix_overlays_before): Use EMACS_INT for positions.
-
-       * buffer.c (reset_buffer, recenter_overlay_lists)
-       (adjust_overlays_for_insert, adjust_overlays_for_delete)
-       (fix_overlays_in_range, Fmake_overlay, Fmove_overlay)
-       (evaporate_overlays, init_buffer_once): Update use of overlay_center.
-       (overlays_at, evaporate_overlays, recenter_overlay_lists)
-       (overlay_strings, fix_overlays_before): Use EMACS_INT for positions.
-
-       * xdisp.c (fast_find_position): Remove unused var.
-
-       * cmds.c (Qexpand_abbrev): New sym.
-       (syms_of_cmds): Initialize it.
-       (internal_self_insert): Use it to call expand-abbrev.
-
-2003-07-09  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (use_xim) [!USE_XIM]: Default to disable XIM if Emacs
-       was configured with --without-xim.
-       (x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
-
-2003-07-07  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (reseat_1): Set it->area to TEXT_AREA.
-
-       * alloc.c (Fgarbage_collect): Doc fix.
-
-2003-07-07  Nozomu Ando  <nand@mac.com>
-
-       * buffer.c (Fkill_buffer): Clear charpos cache if necessary.
-
-2003-07-06  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * minibuf.c (read_minibuf): UNGCPRO before returning.
-       (Ftry_completion, Fall_completions): Doc fix.
-
-       * alloc.c (live_float_p): Check that p is not past the `floats' array,
-       now that `floats' is not the last element of the struct any more.
-
-2003-07-06  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.h (ClipboardSequence_Proc): New type.
-
-       * w32fns.c (clipboard_sequence_fn): New variable.
-       (globals_of_w32fns): Initialize it.
-
-       * w32select.c (last_clipboard_sequence_number): New variable.
-       (Fw32_set_clipboard_data, Fw32_get_clipboard_data): Use sequence
-       number if possible.
-
-2003-07-06  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * m/amdx86-64.h (MARKBIT):
-       * m/ia64.h (MARKBIT): Remove definition since lisp.h does not compare
-       MARKBIT and ARRAY_MARK_FLAG any more.
-
-       * m/hp800.h (XSETMARKBIT):
-       * m/sr2k.h (XSETMARKBIT):
-       * lisp.h (XSETMARKBIT): Remove unused macro.
-
-       * lisp.h (mark_object): Change prototype.
-
-       * alloc.c (mark_object): Change arg *Lisp_Object -> Lisp_Object.
-       (last_marked): Change accordingly.
-       (mark_interval, mark_maybe_object, mark_maybe_pointer)
-       (Fgarbage_collect, mark_glyph_matrix, mark_face_cache, mark_image)
-       (mark_buffer): Update calls to mark_object.
-
-       * bytecode.c (mark_byte_stack):
-       * fns.c (sweep_weak_table):
-       * keyboard.c (mark_kboards): Update calls to mark_object.
-
-2003-07-06  Jason Rumney  <jasonr@gnu.org>
-
-       * alloc.c (struct ablock): Only include padding when there is some.
-
-2003-07-04  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * alloc.c (ALIGN): Add casts to simplify usage.
-       (BLOCK_ALIGN, BLOCK_BYTES, ABLOCKS_PADDING, ABLOCKS_SIZE)
-       (ABLOCKS_BYTES, ABLOCK_ABASE, ABLOCKS_BUSY, ABLOCKS_BASE): New macros.
-       (struct ablock, struct ablocks): New types.
-       (free_ablock): New global var.
-       (lisp_align_malloc, lisp_align_free): New functions.
-       (FLOAT_BLOCK_SIZE): Redefine in terms of BLOCK_BYTES.
-       (struct float_block): Reorder and add gcmarkbits.
-       (GETMARKBIT, SETMARKBIT, UNSETMARKBIT, FLOAT_BLOCK, FLOAT_INDEX)
-       (FLOAT_MARKED_P, FLOAT_MARK, FLOAT_UNMARK): New macros.
-       (init_float, make_float): Use lisp_align_malloc.
-       (free_float, live_float_p): Don't use `type' any more.
-       (make_float): Use FLOAT_UNMARK to access to mark bit.
-       (mark_maybe_object, mark_maybe_pointer, survives_gc_p):
-       Use FLOAT_MARKED_P to access the mark bit.
-       (pure_alloc): Simplify use of ALIGN.
-       (mark_object): Use FLOAT_MARK to access the mark bit.
-       (gc_sweep): Use new macros to access the float's mark bit.
-       (init_alloc_once): Init free_ablock.
-
-       * lisp.h (struct Lisp_Float): Remove unused field `type'.
-
-2003-06-27  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * alloc.c (VECTOR_MARK, VECTOR_UNMARK, VECTOR_MARKED_P): New macros.
-       (GC_STRING_BYTES): Don't mask markbit (it's only used on `size').
-       (allocate_buffer): Move.
-       (string_bytes): Don't mask markbit of `size_byte'.
-       (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect)
-       (mark_object, mark_buffer, survives_gc_p, gc_sweep):
-       Use the `size' field of buffers (rather than the `name' field) for
-       the mark bit, as is done for all other vectorlike objects.
-       Use the new macros to access the mark bit of vectorlike objects.
-
-2003-06-26  Richard M. Stallman  <rms@gnu.org>
-
-       * puresize.h (BASE_PURESIZE): Increment base size.
-
-       * xdisp.c (fast_find_position): Enable Gerd's new definition.
-
-       * xterm.c (xim_initialize): Undo previous change.
-
-2003-06-26  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * alloc.c (survives_gc_p): Simplify.
-
-       * buffer.c (set_buffer_internal_1): Test CONSP for lists.
-
-       * window.c (Fset_window_dedicated_p): Simplify.
-       (display_buffer_1): Don't raise the win from which minibuf was entered.
-       (temp_output_buffer_show): Don't assume BEG == 1.  Simplify.
-       (Fminibuffer_selected_window): Simplify.
-
-       * buffer.h (struct buffer_text): Lisp_Object `markers' => Lisp_Marker.
-
-       * lisp.h (unchain_marker): Lisp_Object arg => Lisp_Marker.
-       (struct Lisp_Marker): Lisp_Object `chain' => Lisp_Marker `next'.
-
-       * insdel.c (check_markers, adjust_markers_for_delete)
-       (adjust_markers_for_insert, adjust_markers_for_replace)
-       (prepare_to_modify_buffer, RESTORE_VALUE):
-       * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos)
-       (Fset_marker, set_marker_restricted, set_marker_both, unchain_marker)
-       (set_marker_restricted_both, Fbuffer_has_markers_at, count_markers):
-       * alloc.c (Fmake_marker, free_marker, gc_sweep):
-       * buffer.c (Fget_buffer_create, Fkill_buffer, Fset_buffer_multibyte):
-       * editfns.c (save_excursion_restore, transpose_markers):
-       * window.c (delete_window):
-       * xdisp.c (message_dolog): Update for new types.
-
-2003-06-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfaces.c (set_font_frame_param): Set default_face_done_p to zero.
-       (realize_default_face): Use default_face_done_p for the force_p
-       argument to set_lface_from_font_name.  Set default_face_done_p to one.
-
-       * frame.c (make_frame): Initialize default_face_done_p.
-
-       * frame.h (struct frame): Add default_face_done_p.
-
-       * config.in: Add XRegisterIMInstantiateCallback_arg6 so it
-       will be defined.
-
-2003-06-25  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * alloc.c (make_interval, Fmake_symbol, allocate_misc):
-       Initialize the new field `gcmarkbit'.
-       (mark_interval, MARK_INTERVAL_TREE): Use the new `gcmarkbit' field.
-       (mark_interval_tree): Don't mark the tree separately from the nodes.
-       (UNMARK_BALANCE_INTERVALS): Don't unmark the tree.
-       (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect)
-       (mark_object, survives_gc_p, gc_sweep): Use new `gcmarkbit' fields.
-
-       * lisp.h (struct interval, struct Lisp_Symbol, struct Lisp_Free)
-       (struct Lisp_Marker, struct Lisp_Intfwd, struct Lisp_Boolfwd)
-       (struct Lisp_Kboard_Objfwd, struct Lisp_Save_Value)
-       (struct Lisp_Buffer_Local_Value, struct Lisp_Overlay)
-       (struct Lisp_Objfwd, struct Lisp_Buffer_Objfwd): Add `gcmarkbit' field.
-
-2003-06-24  Dave Love  <fx@gnu.org>
-
-       * xterm.c (xim_initialize): Use XRegisterIMInstantiateCallback_arg6.
-
-       * strftime.c: Test HAVE_SYS__MBSTATE_H, not __hpux.  Merge changes
-       from gnulib.
-
-2003-06-21  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Fwrite_region): Alternate messages
-       for append and partial write.
-
-       * keyboard.c (read_key_sequence): When converting upcase fn key to
-       downcase, update fkey and keytran so `backspace' gets translated.
-
-       * keyboard.c (read_avail_input): Don't signal SIGHUP in batch mode.
-
-       * process.c (wait_reading_process_input): Don't signal SIGIO
-       in batch mode.
-
-2003-06-17  Kenichi Handa  <handa@m17n.org>
-
-       * Makefile.in (xselect.o): Don't depend on charset.h, coding.h,
-       composite.h.
-
-       * xselect.c: Don't include charset.h, coding.h, composite.h.
-       (Qforeign_selection): New variable.
-       (syms_of_xselect): Intern and static it.
-       (selection_data_to_lisp_data): Return a unibyte string made from
-       data with `foreign-selection' text property.
-
-2003-06-15  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * termhooks.h (EVENT_INIT): New macro.
-
-       * keyboard.c (mark_kboards): Move from alloc.c.  Mark kbd_buffer.
-
-       * alloc.c (mark_kboards): Move to keyboard.c.
-
-       * keyboard.c (record_asynch_buffer_change, read_avail_input):
-       * xterm.c (x_dispatch_event):
-       * xmenu.c (find_and_call_menu_selection):
-       * xdisp.c (handle_tool_bar_click):
-       * w32menu.c (menubar_selection_callback):
-       * sysdep.c (kbd_input_ast, read_input_waiting):
-       * msdos.c (dos_rawgetc):
-       * macterm.c (mac_check_for_quit_char):
-       * macmenu.c (menubar_selection_callback):
-       * gtkutil.c (xg_tool_bar_callback): Don't pass uninitialized
-       data to kbd_buffer_store_event.
-
-2003-06-15  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (x_fix_overlapping_area): Always use area relative X
-       to fix redisplay problem with tall characters (such as \e,AC\e(B).
-
-2003-06-13  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
-
-       * fileio.c (Fcopy_file): Doc fix: copies file modes, too.
-
-2003-06-12  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Fwrite_region): Save and restore restriction.
-
-2003-06-12  Dave Love  <fx@gnu.org>
-
-       * alloca.c (alloca): Declare arg as size_t.
-
-       * sysdep.c: Remove redundant include of unistd.h, stdlib.h.
-       Use HAVE_DECL_SYS_SIGLIST, not SYS_SIGLIST_DECLARED.
-
-2003-06-11  Dave Love  <fx@gnu.org>
-
-       * search.c (shrink_regexp_cache): Use xrealloc.
-       (syms_of_search): Use xmalloc.
-
-2003-06-10  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (phys_cursor_in_rect_p): Fix 2003-05-24 change.
-       Adjust phys_cursor.x to be relative to window box, rather than
-       text area before checking -- to ensure cursor is redrawn when
-       exposing window.
-       Note: This also fixes a similar (older) bug if display margins
-       are present.
-
-2003-06-06  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (encoding_buffer_size): If coding->type is
-       coding_type_ccl, double magnification on CRLF encoding.
-
-2003-06-06  Jason Rumney  <jasonr@gnu.org>
-
-       * w32reg.c (SYSTEM_DEFAULT_RESOURCES): New constant.
-       (w32_get_string_resource): Try SYSTEM_DEFAULT_RESOURCES last.
-
-       * xfaces.c (Finternal_face_x_get_resource): Do it on Windows and
-       Mac too.
-
-2003-06-05  Dave Love  <fx@gnu.org>
-
-       * strftime.c: Merge changes from gnulib.
-
-       * mktime.c (__mktime_internal): Merge changes from gnulib
-       involving year 69 and dst2.
-
-       Changes to merge with gnulib version and be consistent with the
-       autoconf test:
-
-       * getloadavg.c: Set NLIST_STRUCT from HAVE_NLIST_H.
-       Use HAVE_STRUCT_NLIST_N_UN_N_NAME, not NLIST_NAME_UNION.
-       [HAVE_LOCALE_H]: Include locale.h.
-       (getloadavg) [HAVE_SETLOCALE]: Run sscanf in C locale.
-
-2003-06-05  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (coordinates_in_window): Convert X and Y to window
-       relative coordinates inside mode-line and header-line parts.
-       Convert X and Y to margin area relative coordinates inside left
-       and right display margin parts.
-
-2003-06-05  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (add_system_logical_colors_to_map): New function.
-       (Fx_open_connection): Use it.
-
-2003-06-04  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * process.c (allocate_pty): Revert part of the previous patch.
-       (Faccept_process_output): Simplify.
-
-2003-06-04  Jason Rumney  <jasonr@gnu.org>
-
-       * termhooks.h (enum event_kind): Remove MOUSE_WHEEL_EVENT.
-
-       * keyboard.c (Qmouse_wheel, mouse_wheel_syms)
-       (lispy_mouse_wheel_names): Remove.
-       (syms_of_keyboard): Remove Qmouse_wheel and mouse_wheel_syms.
-       Always define drag_and_drop_syms.
-
-       * macterm.c (XTread_socket): Map mouse wheel events to Emacs
-       WHEEL_EVENT events.
-
-2003-06-03  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xdisp.c (update_tool_bar): Add missing UNGCPRO.
-
-       * buffer.c (init_buffer_once): Make kill-buffer-hook permanent-local.
-
-2003-06-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (make_menu_item): Make sure we don't crash on a NULL
-       menu item label.
-
-2003-06-03  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Fwindow_edges): Doc fix.
-       (Fwindow_pixel_edges, Fwindow_inside_edges)
-       (Fwindow_inside_pixel_edges): New functions.
-       (syms_of_window): defsubr them.
-
-       * window.h (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
-       (WINDOW_MODE_LINE_LINES, WINDOW_HEADER_LINE_LINES): New macros.
-
-2003-06-02  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * dispnew.c (Fsit_for): Don't lie about the number of args.
-
-2003-06-02  Dave Love  <fx@gnu.org>
-
-       * callproc.c: Use HAVE_FCNTL_H, not USG5.
-       (syms_of_callproc) <process-environment>: Doc fix.
-
-       * doc.c: Use HAVE_FCNTL_H, not USG5.
-
-       * xfaces.c (font_rescale_ratio): Fix for K&R.
-
-       * termcap.c: Use HAVE_FCNTL_H, not _POSIX_VERSION.
-
-       * mem-limits.h: Use HAVE_SYS_RESOURCE_H, HAVE_SYS_VLIMIT_H.
-
-       * lread.c [HAVE_FCNTL_H]: Include fcntl.h.
-
-       * gtkutil.c: Include keyboard.h, charset.h, coding.h.
-       (xg_create_frame_widgets): Use ENCODE_UTF_8.
-
-       * xterm.c (Qutf_8): Move to coding.c
-
-       * xmenu.c (ENCODE_MENU_STRING): New.
-       (list_of_panes, list_of_items, digest_single_submenu, xmenu_show):
-       Use it.
-
-       * coding.h (ENCODE_UTF_8): New.
-       (Qutf_8): Declare.
-
-       * coding.c (Qutf_8): New.
-       (syms_of_coding): Intern it.
-
-       * fns.c: Doc fixes.
-
-2003-06-02  Kenichi Handa  <handa@m17n.org>
-
-       * buffer.c (Fset_buffer_multibyte): Fix previous change.
-
-2003-06-01  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * lread.c (openp): Make sure STR is a string.
-
-2003-06-01  David Ponce  <david@dponce.com>
-
-       * termhooks.h (enum event_kind): Add new WHEEL_EVENT event.
-       Declare MOUSE_WHEEL_EVENT only if MAC_OSX defined.
-
-       * keyboard.c (Qmouse_wheel): Declare only if MAC_OSX defined.
-       (mouse_wheel_syms, lispy_mouse_wheel_names): Likewise.
-       (discard_mouse_events): Discard WHEEL_EVENT events too.
-       (lispy_wheel_names, wheel_syms): New.
-       (syms_of_keyboard): Init and staticpro `wheel_syms'.  Init and
-       staticpro `Qmouse_wheel' and `mouse_wheel_syms' only if MAC_OSX defined.
-       (make_lispy_event): Add WHEEL_EVENT handler.
-
-       * w32term.c (construct_mouse_wheel): Construct WHEEL_EVENT.
-       (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs
-       WHEEL_EVENT events.
-
-2003-05-31  John Paul Wallington  <jpw@gnu.org>
-
-       * Makefile.in (lisp, shortlisp): byte-run, float-sup, map-ynp, and
-       timer are in lisp/emacs-lisp.
-
-2003-05-31  Kenichi Handa  <handa@m17n.org>
-
-       * buffer.c (Fset_buffer_multibyte): Correctly recover a narrowed
-       region when a buffer is changed to unibyte.
-
-       * charset.h (VALID_LEADING_CODE_P): New macro.
-       (UNIBYTE_STR_AS_MULTIBYTE_P): Check more rigidly.
-
-       * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): If coding->flags
-       is nonzero, accept multibyte form of eight-bit-control chars.
-       (decode_composition_emacs_mule): Likewise.
-       (decode_coding_emacs_mule): Likewise.
-       (encode_coding_emacs_mule): If coding->flags is nonzero, produce
-       multibyte form of eight-bit-control chars.
-
-       * fileio.c (Qauto_save_coding, auto_save_coding): New variables.
-       (Finsert_file_contents): If coding-system-for-read is bound to
-       Qauto_save_coding, use the coding system emacs-mule with special
-       setting for recovering a file.
-       (choose_write_coding_system): On auto saving, use the coding
-       system emacs-mule with special setting for auto saving.
-       (syms_of_fileio) <Qauto_save_coding>: Intern and staticpro it.
-
-2003-05-30  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (ccl_coding_driver): Set ccl->eight_bit_control
-       properly before calling ccl_driver.
-
-       * ccl.h (struct ccl_program) <eight_bit_control>: Comment fixed.
-
-       * ccl.c (CCL_WRITE_CHAR): Increment extra_bytes only when it is nonzero.
-       (ccl_driver): Initialize extra_bytes to ccl->eight_bit_control.
-       (setup_ccl_program): Initialize ccl->eight_bit_control to zero.
-
-2003-05-29  Glenn Morris  <gmorris@ast.cam.ac.uk>
-
-       * xfaces.c (realize_default_face): Do not abort if lface is
-       non-existent - reverts change from 2003-05-19.
-
-2003-05-29  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (decode_coding_iso2022): Pay attention to the byte
-       sequence of CTEXT extended segment, and retain those bytes as is.
-
-2003-05-28  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (ENCODE_UNSAFE_CHARACTER): Adjust for the name change
-       of CODING_REPLACEMENT_CHARACTER.
-       (decode_coding_iso2022): If CODING_FLAG_ISO_SAFE, set
-       CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in coding->mode, and
-       check this flag on encoding.
-       (encode_coding_sjis_big5):
-       Check CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag of coding->mode.
-       (Fset_terminal_coding_system_internal):
-       Set CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in terminal_coding.mode
-       instead of setting CODING_FLAG_ISO_SAFE flag in terminal_coding.flags.
-
-       * coding.h (CODING_REPLACEMENT_CHARACTER): Rename from
-       CODING_INHIBIT_CHARACTER_SUBSTITUTION.
-       (CODING_MODE_INHIBIT_UNENCODABLE_CHAR): New macro.
-
-2003-05-28  Richard M. Stallman  <rms@gnu.org>
-
-       * print.c (syms_of_print) <print-escape-nonascii>: Doc fix.
-
-       * eval.c (unbind_to): Move init of this_binding to separate statement.
-
-2003-05-28  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (expose_window): Fix error in calculation of
-       window relative coordinates of area to redisplay.
-
-2003-05-27  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (GET_WHEEL_DELTA_WPARAM): New macro.
-
-2003-05-27  David Ponce  <david@dponce.com>
-
-       Handle W32 mouse wheel events as mouse click events, like in X.
-
-       * keyboard.c (make_lispy_event) [WINDOWSNT]: Don't handle
-       MOUSE_WHEEL_EVENT anymore.
-
-       * w32term.c (construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT.
-       Scrolling down/up the mouse wheel is respectively mapped to mouse
-       button 4 and 5.
-       (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs
-       MOUSE_CLICK_EVENT events.  Forward w32 MSH_MOUSEWHEEL events as
-       WM_MOUSEWHEEL events.
-
-2003-05-27  Andreas Schwab  <schwab@suse.de>
-
-       * buffer.c (syms_of_buffer) <default-direction-reversed>: Doc fix.
-
-       * xdisp.c (try_window_id): Avoid aborting if PT is inside a
-       partially visible line.
-
-       * alloc.c (Fgarbage_collect): Fix last change.
-
-2003-05-26  John Paul Wallington  <jpw@gnu.org>
-
-       * xfns.c (Fx_create_frame): Don't call Qface_set_after_frame_default.
-
-2003-05-25  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * window.c (Fset_window_buffer): Add type of `keep_margins'.
-       (Fset_window_fringes, Fset_window_scroll_bars): Declare before use.
-
-       * window.h (window_box_text_cols): Declare.
-
-       * xdisp.c (window_text_bottom_y, draw_row_fringe_bitmaps)
-       (x_draw_vertical_border): Remove unused var `f'.
-
-       * xfaces.c (build_scalable_font_name): Remove `unused var
-       pixel_size' warning.
-
-       * xfns.c (png_load): Remove `unused vars intent, image_gamma' warning.
-
-       * unexelf.c (unexec): Remove `unused var n' warning.
-
-       * strftime.c (my_strftime_localtime_r): Remove `defined but
-       unused' warning.
-
-       * process.c (allocate_pty): Remove `unused var stb' and
-       `cp might be used uninitialized' warnings.
-
-       * dispnew.c (mode_line_string): Remove unused var `f'.
-
-       * coding.c (find_safe_codings): Remove unused var `i'.
-
-       * bytecode.c (Fbyte_code): Remove `unused val' warning.
-
-       * buffer.c (Fkill_buffer): Remove unused var `list'.
-
-       * alloc.c (Fgarbage_collect): Remove `unused var tail' warning.
-
-2003-05-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * frame.c (make_frame): Condition want_fullscreen with
-       HAVE_WINDOW_SYSTEM.
-
-2003-05-25  Juanma Barranquero  <lektu@terra.es>
-
-       * window.c (Fset_window_scroll_bars): Fix typo in argument name.
-       (Fwindow_scroll_bars): Fix typo in docstring.
-
-2003-05-24  Kim F. Storm  <storm@cua.dk>
-
-       The following changes serve several purposes:
-
-       1) Swap the position of fringes and display margins in windows, i.e.
-       the fringes are now displayed between the margins and the text area
-       (by default).
-
-       2) Allow fringe and scroll bar parameters to be set per-buffer and
-       per-window (like display margins).  Such settings are now stored
-       in window configurations, preserved when frames are resized, and
-       copied when windows are split vertically or horizontally.
-       Several bugs related to display margins have been fixed.
-
-       3) Consistently use FRAME_FONT and FRAME_FONTSET macros.
-
-       4) Use FRAME_COLUMN_WIDTH (f) consistently throughout the code
-       rather than FRAME_WIDTH (FRAME_FONT (f)).
-
-       5) Introduce a consistent naming of variables, members and macros
-       depending on whether their value is measured in pixels or in
-       canonical columns/lines.  Pixel dimensions are named *_width and
-       *_height, while canonical columns/lines are named *_cols and
-       *_lines.  Pixel positions are named *_x and *_y, while column/line
-       positions are named *_col and *_line.
-
-       6) Consolidate more of the X, W32, and MAC gui code by moving
-       common data into struct frame, and generalize it for the non-gui
-       case by using suitable defaults.
-
-       7) Cleanup and consolidate the macros controlling frame and window
-       layout into frame.h and window.h, and generalize the use of the
-       various window_box_* functions (enhanced to handle the new fringe
-       position and the per-window fringe and scroll bar settings).
-
-       * frame.h (struct frame): Rename members height to text_lines,
-       width to text_cols, window_height to total_lines, window_width to
-       total_cols, new_height to new_text_lines, new_width to
-       new_text_cols.  All uses changed.
-       (struct frame): New members which consolidate common members of
-       x_output, w32_output, and mac_output structures: left_pos,
-       top_pos, pixel_height, pixel_width, x_pixels_diff, y_pixels_diff,
-       win_gravity, size_hint_flags, border_width, internal_border_width,
-       line_height, fringe_cols, left_fringe_width, right_fringe_width,
-       want_fullscreen.  All uses changed.
-       (struct frame): New member column_width contaning the canonical
-       column width, analogue to line_height.  All uses changed.
-       (struct frame): Rename members scroll_bar_pixel_width to
-       config_scroll_bar_width, and scroll_bar_cols to
-       config_scroll_bar_cols.  All uses changed.
-       (struct frame): New member scroll_bar_actual_width which
-       consolidates and renames the vertical_scroll_bar_extra member of
-       x_output, w32_output, and mac_output structures.  All uses changed.
-       (FRAME_PIXEL_HEIGHT): Rename from PIXEL_HEIGHT and moved
-       from x/w32/macterm.h files.  All uses changed.  Also change code
-       which referred to f->output_data...->pixel_height.
-       (FRAME_PIXEL_WIDTH): Rename from PIXEL_WIDTH and moved
-       from x/w32/macterm.h files.  All uses changed.  Also change code
-       which referred to f->output_data...->pixel_width.
-       (FRAME_LINES): Rename from FRAME_HEIGHT.  All uses changed.
-       Also change code which referred to f->height.
-       (FRAME_COLS): Rename from FRAME_WIDTH.  All uses changed.
-       Also change code which referred to f->width.
-       (FRAME_NEW_HEIGHT, FRAME_NEW_WIDTH): Remove macros; change uses
-       to update new_text_lines and new_text_cols members directly.
-       (FRAME_CONFIG_SCROLL_BAR_WIDTH): Rename from
-       FRAME_SCROLL_BAR_PIXEL_WIDTH.  All uses changed.
-       (FRAME_CONFIG_SCROLL_BAR_COLS): Rename from
-       FRAME_SCROLL_BAR_COLS.  All uses changed.
-       (FRAME_LEFT_SCROLL_BAR_COLS, FRAME_RIGHT_SCROLL_BAR_COLS):
-       Rename from FRAME_LEFT_SCROLL_BAR_WIDTH and
-       FRAME_RIGHT_SCROLL_BAR_WIDTH, resp.  All uses changed.
-       (FRAME_SCROLL_BAR_AREA_WIDTH, FRAME_LEFT_SCROLL_BAR_AREA_WIDTH)
-       (FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH): New macros.
-       (FRAME_TOTAL_COLS): Rename from FRAME_WINDOW_WIDTH.
-       (SET_FRAME_COLS): Rename from SET_FRAME_WIDTH.
-       (FRAME_TOTAL_COLS_ARG): Rename from FRAME_WINDOW_WIDTH_ARG.
-       (WINDOW_VERTICAL_SCROLL_BAR_COLUMN): Remove unused macro.
-       (WINDOW_VERTICAL_SCROLL_BAR_HEIGHT): Remove unused macro.
-       (FRAME_LINE_HEIGHT): Rename from CANON_Y_UNIT.
-       Unconditionally return line_height member (it now has proper value
-       also for non-window frames).
-       (FRAME_COLUMN_WIDTH): Rename from CANON_X_UNIT.  Unconditionally
-       return new column_width member (rather than the default font width).
-       (FRAME_FRINGE_COLS, FRAME_LEFT_FRINGE_WIDTH)
-       (FRAME_RIGHT_FRINGE_WIDTH): Rename from FRAME_X_... and moved
-       from x/w32/macterm.h files.  Unconditionally return corresponding
-       member of frame structure (they now have proper values also for
-       non-window frames).
-       (FRAME_TOTAL_FRINGE_WIDTH): Rename from FRAME_FRINGE_WIDTH.
-       Calculate return value from left and right widths.
-       (FRAME_INTERNAL_BORDER_WIDTH): Unconditionally return
-       internal_border_width member (has proper value for non-window frame).
-       (FRAME_PIXEL_X_FROM_CANON_X): Rename from PIXEL_X_FROM_CANON_X.
-       (FRAME_PIXEL_Y_FROM_CANON_Y): Rename from PIXEL_Y_FROM_CANON_Y.
-       (FRAME_CANON_X_FROM_PIXEL_X): Rename from CANON_X_FROM_PIXEL_X.
-       (FRAME_CANON_Y_FROM_PIXEL_Y): Rename from CANON_Y_FROM_PIXEL_Y.
-       (FRAME_LINE_TO_PIXEL_Y): Rename from CHAR_TO_PIXEL_ROW,
-       consolidated from xterm.h, macterm.h, and w32term.h.
-       (FRAME_COL_TO_PIXEL_X): Rename from CHAR_TO_PIXEL_COL,
-       consolidated from xterm.h, macterm.h, and w32term.h.
-       (FRAME_TEXT_COLS_TO_PIXEL_WIDTH): Rename from
-       CHAR_TO_PIXEL_WIDTH consolidated from x/mac/w32term.h.
-       (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Rename from
-       CHAR_TO_PIXEL_HEIGHT consolidated from x/mac/w32term.h.
-       (FRAME_PIXEL_Y_TO_LINE): Rename from PIXEL_TO_CHAR_ROW
-       consolidated from x/mac/w32term.h.
-       (FRAME_PIXEL_X_TO_COL): Rename from PIXEL_TO_CHAR_COL
-       consolidated from x/mac/w32term.h.
-       (FRAME_PIXEL_WIDTH_TO_TEXT_COLS): Rename from
-       PIXEL_TO_CHAR_WIDTH consolidated from x/mac/w32term.h.
-       (FRAME_PIXEL_HEIGHT_TO_TEXT_LINES): Rename from
-       PIXEL_TO_CHAR_HEIGHT consolidated from x/mac/w32term.h.
-
-       * window.h (struct window): Rename members left to left_col,
-       top to top_line, height to total_lines, width to total_cols,
-       left_margin_width to left_margin_cols, right_margin_width to
-       right_margin_cols, orig_height to orig_total_lines, orig_top to
-       orig_top_line.  All uses changed.
-       (struct window): New members left_fringe_width, right_fringe_width,
-       fringes_outside_margins, scroll_bar_width, vertical_scroll_bar_type.
-       (WINDOW_XFRAME, WINDOW_FRAME_COLUMN_WIDTH, WINDOW_FRAME_LINE_HEIGHT):
-       New macros primarily used to simplify other macros.
-       (WINDOW_TOTAL_COLS): New macro.  Change relevant code that
-       referred to XINT (w->width).
-       (WINDOW_TOTAL_LINES): New macro.  Change relevant code that
-       referred to XINT (w->height).
-       (WINDOW_TOTAL_WIDTH): New macro.  Change relevant code that
-       referred to XINT (w->width) * canon_x_unit.
-       (WINDOW_TOTAL_HEIGHT): New macro.  Change relevant code that
-       referred to XINT (w->height) * canon_y_unit.
-       (WINDOW_LEFT_EDGE_COL): New macro.  Change relevant code that
-       referred to XINT (w->left).
-       (WINDOW_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_EDGE.  Change
-       all uses and code that referred to XINT (w->left) + XINT (w->width).
-       (WINDOW_TOP_EDGE_LINE): New macro.  Change relevant code that
-       referred to XINT (w->top).
-       (WINDOW_BOTTOM_EDGE_LINE): New macro.  Change relevant code that
-       referred to XINT (w->top) + XINT (w->height).
-       (WINDOW_LEFT_EDGE_X): New macro.  Change relevant code that
-       referred to XINT (w->left) * canon_x_unit.
-       (WINDOW_RIGHT_EDGE_X): New macro.  Change relevant code that
-       referred to (XINT (w->left) + XINT (w->width)) * canon_x_unit.
-       (WINDOW_TOP_EDGE_Y): New macro.  Change relevant code that
-       referred to XINT (w->top) * canon_y_unit.
-       (WINDOW_BOTTOM_EDGE_Y): New macro.  Change relevant code that
-       referred to (XINT (w->top) + XINT (w->height)) * canon_y_unit.
-       (WINDOW_LEFTMOST_P): New macro.
-       (WINDOW_BOX_LEFT_EDGE_COL): Rename from WINDOW_LEFT_MARGIN.
-       All uses changed.
-       (WINDOW_BOX_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_MARGIN.
-       All uses changed.
-       (WINDOW_BOX_LEFT_EDGE_X): Rename from
-       WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, moved from dispextern.h.
-       Do not exclude left fringe width.
-       (WINDOW_BOX_RIGHT_EDGE_X): Rename from
-       WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X, moved from dispextern.h.
-       Do not exclude fringe widths.
-       (WINDOW_LEFT_FRINGE_WIDTH, WINDOW_RIGHT_FRINGE_WIDTH)
-       (WINDOW_FRINGE_COLS, WINDOW_TOTAL_FRINGE_WIDTH): New macros.
-       Change relevant code that referred to FRAME_LEFT_FRINGE_WIDTH,
-       FRAME_RIGHT_FRINGE_WIDTH, FRAME_FRINGE_COLS, and
-       FRAME_TOTAL_FRINGE_WIDTH to allow per-window fringe settings.
-       (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS): New macro.
-       (WINDOW_VERTICAL_SCROLL_BAR_TYPE, WINDOW_HAS_VERTICAL_SCROLL_BAR)
-       (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
-       (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
-       (WINDOW_CONFIG_SCROLL_BAR_WIDTH, WINDOW_CONFIG_SCROLL_BAR_COLS):
-       New macros.  Change code which referenced corresponding
-       FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS,
-       FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT,
-       FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT,
-       FRAME_SCROLL_BAR_PIXEL_WIDTH, and FRAME_SCROLL_BAR_COLS macros to
-       allow per-window scroll-bar settings.
-       (WINDOW_LEFT_SCROLL_BAR_COLS, WINDOW_RIGHT_SCROLL_BAR_COLS): New macros.
-       (WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH): New macro.  Change code that
-       referred to FRAME_LEFT_SCROLL_BAR_WIDTH.
-       (WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH): New macro.  Change code
-       that referred to FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT and
-       FRAME_SCROLL_BAR_WIDTH.
-       (WINDOW_SCROLL_BAR_COLS, WINDOW_SCROLL_BAR_AREA_WIDTH)
-       (WINDOW_SCROLL_BAR_AREA_X): New macros.
-       (WINDOW_HEADER_LINE_HEIGHT): Rename from
-       WINDOW_DISPLAY_HEADER_LINE_HEIGHT, moved from dispextern.h.
-       (WINDOW_BOX_HEIGHT_NO_MODE_LINE): Rename from
-       WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, moved from dispextern.h.
-       (WINDOW_BOX_TEXT_HEIGHT): Rename from
-       WINDOW_DISPLAY_PIXEL_WIDTH, moved from dispextern.h.
-       (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y)
-       (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y)
-       (WINDOW_TEXT_TO_FRAME_PIXEL_X): Move here from dispextern.h.
-       (WINDOW_LEFT_MARGIN_WIDTH): Rename from
-       WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH, moved from dispextern.h.
-       (WINDOW_RIGHT_MARGIN_WIDTH): Rename from
-       WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, moved from dispextern.h.
-       (window_from_coordinates): Update prototype.
-       (Fset_window_buffer): Update EXFUN.
-       (set_window_buffer): Update prototype.
-
-       * dispextern.h (struct glyph_matrix): Rename members window_left_x
-       to window_left_col, window_top_y to window_top_line.  All uses
-       changed.
-       (FRAME_INTERNAL_BORDER_WIDTH_SAFE): Remove macro; can now safely
-       use FRAME_INTERNAL_BORDER_WIDTH macro instead as
-       internal_border_width is now set to 0 for non-window frames.
-       (WINDOW_DISPLAY_PIXEL_WIDTH, WINDOW_DISPLAY_PIXEL_HEIGHT)
-       (WINDOW_DISPLAY_MODE_LINE_HEIGHT, WINDOW_DISPLAY_HEADER_LINE_HEIGHT)
-       (WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, WINDOW_DISPLAY_TEXT_HEIGHT)
-       (WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X)
-       (WINDOW_DISPLAY_TOP_EDGE_PIXEL_Y, WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y)
-       (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y)
-       (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y)
-       (WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH)
-       (WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, WINDOW_WANTS_MODELINE_P):
-       Move to window.h and renamed [see window.h changes].
-       (WINDOW_AREA_TO_FRAME_PIXEL_X, WINDOW_AREA_PIXEL_WIDTH)
-       (WINDOW_DISPLAY_TEXT_AREA_PIXEL_WIDTH): Remove macros.
-       (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P):
-       Use WINDOW_TOTAL_LINES.
-       (frame_update_line_height): Remove prototype.
-
-       * buffer.h (struct buffer): Rename members measured in columns:
-       left_margin_width to left_margin_cols, right_margin_width to
-       right_margin_cols.  All uses changed.
-       New members left_fringe_width, right_fringe_width,
-       fringes_outside_margins for per-buffer fringe settings.
-       New members scroll_bar_width and vertical_scroll_bar_type for
-       per-buffer scroll bar settings.
-
-       * buffer.c (init_buffer_once): Set buffer_defaults and
-       buffer_local_flags for new buffer-local variables
-       left_fringe_width, right_fringe_width, fringes_outside_margins,
-       scroll_bar_width, and vertical_scroll_bar_type.
-       (syms_of_buffer): Defvar_per_buffer them, and defvar_lisp_nopro
-       default-* variables for them.
-
-       * dispnew.c: Make (many) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (mode_line_string): No need to adjust width for mode lines, as it
-       is already adjusted by the caller.
-       (marginal_area_string): Handle fringes inside/outside margins.
-
-       * frame.c: Make (many) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (make_frame): Initialize left_fringe_width, right_fringe_width,
-       fringe_cols, scroll_bar_actual_width, border_width,
-       internal_border_width, column_width, line_height, x_pixels_diff,
-       y_pixels_diff, want_fullscreen, size_hint_flags, and win_gravity
-       members with values suitable for a non-window frames.
-
-       * gtkutil.c: Make (many) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * indent.c: Make (few) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * keyboard.c: Make (many) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (make_lispy_event): Use window positions returned from
-       window_from_coordinates when constructing the lisp event for
-       MOUSE_CLICK_EVENT and DRAG_N_DROP_EVENT, rather than calculating
-       (incorrect) values locally.
-       (make_lispy_movement): Use window positions returned from
-       window_from_coordinates when constructing the lisp event, rather
-       than calculating (incorrect) values locally.
-
-       * scroll.c: Make (some) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * sunfns.c (Fsun_menu_internal): Adapt to per-window fringes and
-       scroll-bars.
-
-       * sysdep.c: Make (few) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * term.c: Make (some) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * widget.c: Make (few) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * window.c: Make (many) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (make_window): Initialize new members
-       left_margin_cols, right_margin_cols, left_fringe_width,
-       right_fringe_width, fringes_outside_margins, scroll_bar_width,
-       and vertical_scroll_bar_type.
-       (coordinates_in_window): Adapt to new fringe/margin positions
-       and per-window fringes and scroll-bars.
-       Fix bug related to incorrectly adjusting coordinates by
-       frame's internal_border_width (the effect normally negible since
-       the internal_border_width is typically 0 or 1 pixel, but very
-       noticeable for an internal_border_width of e.g. 25 pixels).
-       Upon successful return (other than ON_NOTHING), the coordinates
-       are now always properly converted to window relative for the
-       given display element.
-       (window_from_coordinates): Add new parameters wx and wy to
-       return the window relative x and y position in the returned
-       window and part.  A null arg means, don't return the position.
-       All callers changed.
-       (adjust_window_margins): New function which may reduce the width
-       of the display margins if a window's text area is too small after
-       resizing or splitting windows.
-       (size_window): Fix bug that did not account for display margin
-       widths when checking the minimum width of a window; use
-       adjust_window_margins.
-       (set_window_buffer): Call Fset_window_fringes and
-       Fset_window_scroll_bars to setup per-window elements.
-       Add new arg KEEP_MARGINS_P.  Non-nil means to keep window's
-       existing display margin, fringe widths, and scroll bar settings
-       (e.g. after splitting a window or resizing the frame).
-       All callers changed.
-       (Fset_window_buffer): New arg KEEP_MARGINS.  All callers changed.
-       (Fsplit_window): Duplicate original window's display margin,
-       fringe, and scroll-bar settings; then call Fset_window_buffer with
-       KEEP_MARGINS non-nil.  This fixes a bug which caused a split
-       window to only preserve the display margins in one of the windows.
-       When splitting horizontally, call adjust_window_margins on both
-       windows to ensure that the text area of the new windows is non too
-       narrow.  This fixes a bug which could cause Emacs to trap if the
-       width of the split window was less than the width of the display
-       margins.
-       (window_box_text_cols): Rename from window_internal_width.
-       All uses changed.  Adapt to per-window fringes and scroll bars.
-       Fix bug that caused vertical separator to be subtracted also on
-       window frames.  Fix another bug that did not reduce the returned
-       value by the columns used for display margins.
-       (window_scroll_line_based): Fix bug related to scrolling too much
-       when display margins are present (implicitly fixed by the fix to
-       window_box_text_cols).
-       (scroll_left, scroll_right): Fix bug related to scrolling too far
-       by default when display margins are present (implicitly fixed by
-       the fix to window_box_text_cols).
-       (struct saved_window): Rename members left to left_col, top to
-       top_line, width to total_cols, height to total_lines, orig_top to
-       orig_top_line, orig_height to orig_total_lines.  All uses changed.
-       New members left_margin_cols, right_margin_cols,
-       left_fringe_width, right_fringe_width, fringes_outside_margins,
-       scroll_bar_width, and vertical_scroll_bar_type for saving
-       per-window display elements.
-       (Fset_window_configuration): Restore display margins, fringes,
-       and scroll bar settings.  This fixes a bug which caused display
-       margins to be discarded when saving and restoring a window
-       configuration.
-       (save_window_save): Save display margins, fringes, and scroll bar
-       settings.  This fixes a bug which caused display margins to be
-       discarded when saving and restoring a window configuration.
-       (Fset_window_margins): Do nothing if display margins are not
-       really changed.  Otherwise, call adjust_window_margins to ensure
-       the text area doesn't get too narrow.  This fixes a bug which
-       could cause Emacs to trap if setting display margins wider than
-       the width of the window.
-       (Fset_window_fringes): New defun to allow user to specifically set
-       this window's fringe widths and position vs. display margins.
-       (Fwindow_fringes): New defun to return window's actual fringe settings.
-       (Fset_window_scroll_bars): New defun to allow user to specifically
-       set this window's scroll bar width and position.
-       (Fwindow_scroll_bars): New defun to return window's actual scroll
-       bar settings.
-       (compare_window_configurations): Also compare display margins,
-       fringes, and scroll bar settings.
-       (syms_of_window): Defsubr new defuns for fringe and scroll bars.
-
-       * xdisp.c: Make (many) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (window_box_width): Adapt to per-window fringes and scroll bars,
-       and new fringe vs. display margin position.  Note that returned
-       value is no longer guaranteed to be a whole multiple of the frame
-       column width, since per-window fringes may now be any width.
-       (window_box_left_offset): New function like window_box_left, but
-       value is relative to left border of window (rather than frame).
-       (window_box_right_offset): New function like window_box_right,
-       but value is relative to left border of window.
-       (window_box_left): Adapt to per-window fringes and scroll bars,
-       and new fringe vs. display margin position.  Simplify by using
-       WINDOW_LEFT_EDGE_X and window_box_left_offset.
-       (window_box): Allow null args for unnecessary return values;
-       change/simplify relevant callers.
-       (x_y_to_hpos_vpos): Adapt to per-window fringes and scroll bars,
-       and new fringe vs. display margin position.
-       Use window_box_left_offset and window_box_right_offset
-       (get_glyph_string_clip_rect): Adapt to per-window fringes and
-       scroll bars, and new fringe vs. display margin position.
-       Use WINDOW_LEFT_EDGE_X and WINDOW_TOTAL_WIDTH.
-       (draw_fringe_bitmap): Rework to handle per-window fringes and new
-       fringe vs. display margin position.
-       (hscroll_window_tree): Use window_box_width instead of window_box.
-       (redisplay_window): Adapt to per-window scroll bars.
-       (draw_glyphs): Rework to handle per-window fringes and scroll
-       bars, and new fringe vs. display margin position.
-       Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left.
-       (x_clear_end_of_line): Adapt to per-window fringes and scroll
-       bars, and new fringe vs. display margin position.  Fix bug which
-       increased total width of full_width rows by width of scroll bars
-       although window's total width already includes that.
-       (x_fix_overlapping_area): Simplify using window_box_left_offset.
-       (expose_area): Simplify using window_box_left_offset.
-       (x_draw_vertical_border): Handle per-window scroll bar settings,
-       mixing windows with left, right and no scroll bars.
-
-       * xfaces.c [WINDOWSNT]: Move redefinition of FONT_WIDTH macro to
-       where it's used in x_list_fonts (for clarity).
-       (frame_update_line_height): Remove unused function; functionality
-       is now done directly when setting the default font in x_set_font.
-
-       * xfns.c: Make (many) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * xmenu.c: Make (some) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * xterm.h (struct x_output): Move members left_pos, top_pos,
-       border_width, pixel_height, pixel_width, line_height,
-       internal_border_width, vertical_scroll_bar_extra,
-       left_fringe_width, right_fringe_width, fringe_cols,
-       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
-       x_pixels_diff, and y_pixels_diff to struct frame (frame.h).
-       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
-       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
-       (PIXEL_WIDTH, PIXEL_HEIGHT)
-       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
-       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to
-       frame.h and renamed [see frame.h changes].
-       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
-       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
-       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h
-       and renamed [see frame.h changes].
-
-       * xterm.c: Make (several) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars.
-       (scroll_run): Adapt to new fringe position.
-       (glyph_rect): Use window coordinates returned from
-       window_from_coordinates rather than frame_to_window_pixel_xy.
-       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
-       scroll-bars.
-       (handle_one_xevent): Simplify a USE_GTK conditional.
-       (x_clip_to_row): Remove superfluous whole_line_p arg and code
-       (fringes are now inside margins, i.e. always in the clipping area).
-       All callers changed.
-       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
-       directly, then call compute_fringe_widths.  Don't call
-       frame_update_line_height.
-
-       * w32term.h (struct w32_output): Move members left_pos, top_pos,
-       border_width, pixel_height, pixel_width, line_height,
-       internal_border_width, vertical_scroll_bar_extra,
-       left_fringe_width, right_fringe_width, fringe_cols,
-       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
-       x_pixels_diff, and y_pixels_diff to struct frame (frame.h).
-       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
-       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
-       (PIXEL_WIDTH, PIXEL_HEIGHT)
-       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
-       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to
-       frame.h and renamed [see frame.h changes].
-       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
-       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
-       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h
-       and renamed [see frame.h changes].
-
-       * w32term.c: Make (several) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars.
-       (glyph_rect): Use window coordinates returned from
-       window_from_coordinates rather than frame_to_window_pixel_xy.
-       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
-       scroll-bars.
-       (w32_clip_to_row): Remove superfluous whole_line_p arg and code
-       (fringes are now inside margins, i.e. always in the clipping area).
-       All callers changed.
-       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
-       directly, then call compute_fringe_widths.  Don't call
-       frame_update_line_height.
-
-       * w32console.c: Make (few) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * w32fns.c: Make (many) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * w32menu.c: Make (few) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * macterm.h (struct mac_output): Move members left_pos, top_pos,
-       border_width, pixel_height, pixel_width, line_height,
-       internal_border_width, vertical_scroll_bar_extra,
-       left_fringe_width, right_fringe_width, fringe_cols,
-       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
-       x_pixels_diff, y_pixels_diff to struct frame (frame.h).
-       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
-       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
-       (PIXEL_WIDTH, PIXEL_HEIGHT)
-       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
-       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to
-       frame.h and renamed [see frame.h changes].
-       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
-       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
-       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h
-       and renamed [see frame.h changes].
-
-       * macterm.c: Make (several) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars.
-       (glyph_rect): Use window coordinates returned from
-       window_from_coordinates rather than frame_to_window_pixel_xy.
-       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
-       scroll-bars.
-       (x_clip_to_row): Remove superfluous whole_line_p arg and code
-       (fringes are now inside margins, i.e. always in the clipping area).
-       All callers changed.
-       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
-       directly, then call compute_fringe_widths.  Don't call
-       frame_update_line_height.
-
-       * macfns.c: Make (several) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (x_real_positions): Set f->x_pixels_diff and f->y_pixels_diff to 0.
-
-       * macmenu.c: Make (few) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-
-       * msdos.h (struct x_output): Remove members left_pos, top_pos,
-       and line_height, and use corresponding new members in struct
-       frame.  All uses changed.
-       (FRAME_LINE_HEIGHT, FRAME_INTERNAL_BORDER_WIDTH): Remove macros;
-       superseeded by corresponding macros in frame.h.
-
-       * msdos.c: Make (several) trivial substitutions for renamed and
-       new macros in dispextern.h, frame.h and window.h.
-       (IT_note_mouse_highlight): Use updated window coordinates returned
-       by window_from_coordinates, rather than adjusting them locally.
-       (internal_terminal_init): No need to initialize line_height here;
-       it now defaults to 1.
-
-2003-05-24  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (read_key_sequence): Adjust fkey and keytran when
-       dropping `down' events.
-
-2003-05-24  Andreas Schwab  <schwab@suse.de>
-
-       * coding.c (find_safe_codings): Fix last change.
-
-2003-05-24  Istvan Marko  <mi@imarko.dhs.org>  (tiny change)
-
-       * xfns.c (x_window): Fix typo from 2003-05-21 change.
-
-2003-05-23  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xdisp.c (display_mode_element): Increase max depth.
-       Simplify the error handling code.  Use a different error string
-       for the case where we hit the depth limit.
-
-       * lisp.h (Vfundamental_mode_abbrev_table): Don't declare.
-
-       * buffer.c (reset_buffer_local_variables): Remove redundant setting.
-
-2003-05-21  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * intervals.c (get_local_map): Don't get char-property of previous
-       point any more: get_pos_property already does it and better.
-
-2003-05-21  Dave Love  <fx@gnu.org>
-
-       [Merged from unicode branch.]
-
-       * xfns.c (x_window, x_window): Use use_xim.
-
-       * xterm.c (use_xim): Initialize.
-       (xim_open_dpy, xim_initialize, xim_close_dpy): Use use_xim.
-       (x_term_init): Maybe set use_xim.
-
-       * xterm.h (use_xim) [HAVE_X_I18N]: Declare.
-
-2003-05-21  Jason Rumney  <jasonr@gnu.org>
-
-       * unexw32.c (_start): Remove _fmode initialization.
-
-       * emacs.c (main) [WINDOWSNT]: Move it here.
-
-2003-05-20  Dave Love  <fx@gnu.org>
-
-       * s/gnu-linux.h (MAIL_USE_FLOCK): Make it conditional.
-
-2003-05-19  Richard M. Stallman  <rms@gnu.org>
-
-       * xfaces.c (Finternal_set_lisp_face_attribute): Handle Qunspecified
-       as value for QCfont attribute.
-       (realize_default_face): lface should already exist; crash if not.
-       Specify 0 for FORCE_P when calling set_lface_from_font_name.
-
-       * frame.c (Fignore_event): Doc fix.
-
-2003-05-19  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (decode_coding_string): Handle post-read-conversion
-       even if the coding doesn't require decoding.
-
-2003-05-18  Richard M. Stallman  <rms@gnu.org>
-
-       * callproc.c (Fcall_process_region): Doc fix.
-
-2003-05-17  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * lread.c (Fload): Print a message if package is obsolete.
-
-       * window.c (Fselect_window): Add optional `norecord' arg.
-       (select_window_1): Fold into Fselect_window.
-       (select_window_norecord): New function.
-       (temp_output_buffer_show): Use it.  Preserve current buffer.
-
-       * window.h (Fselect_window): Update declaration.
-
-       * window.c (delete_window, Fother_window, Fset_window_configuration):
-       * minibuf.c (read_minibuf):
-       * macterm.c (x_new_focus_frame):
-       * frame.c (do_switch_frame, Fset_frame_selected_window, Fdelete_frame):
-       * callint.c (Fcall_interactively):
-       * xterm.c (x_new_focus_frame): Pass nil as new arg to Fselect_window.
-
-       * buffer.c (Fpop_to_buffer): Pass norecord to Fselect_window.
-
-2003-05-17  David Kastrup  <dak@gnu.org>
-
-       * process.c (read_process_output): Back out change from 2003-03-09.
-
-2003-05-17  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * editfns.c (get_pos_property): Don't assume that `object' = nil.
-
-       * textprop.c (text_property_stickiness): New arg `buffer'.
-
-       * intervals.h (text_property_stickiness): New arg `buffer'.
-       (get_pos_property): Declare.
-
-       * intervals.c (get_local_map): Use get_pos_property, to obey
-       stickiness and empty overlays.
-       (create_root_interval, graft_intervals_into_buffer): Use BEG.
-       (merge_properties, intervals_equal, merge_properties_sticky):
-       Use XCAR, XCDR.
-       (adjust_for_invis_intang): Pass new arg to text_property_stickiness.
-
-2003-05-17  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.c (read_minibuf): If buffer is empty, record the default
-       in the history.
-       (Fminibuffer_complete_word): When deleting the overlap, take account
-       of its real position.
-
-       * fns.c (map_char_table): Fix previous change.
-
-       * syntax.c (find_defun_start):
-       When open_paren_in_column_0_is_defun_start,
-       return beginning of buffer.
-
-       * lisp.h (map_char_table): Declare added arg.
-
-       * fns.c (map_char_table): New arg TABLE gets the master table.
-       All calls changed.
-       Process default and inheritance, resorting to Faref if necessary.
-
-       * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap)
-       (Faccessible_keymaps): Pass new arg to map_char_table.
-
-       * fontset.c (Ffontset_info): Pass new arg to map_char_table.
-
-       * casetab.c (set_case_table): Pass new arg to map_char_table.
-
-       * data.c (let_shadows_buffer_binding_p): Make target of p volatile.
-
-       * lisp.h (specbinding_func): New typedef.
-       (struct specbinding): Use specbinding_func, to put the `volatile'
-       in the right place.
-
-       * alloc.c (Fgarbage_collect): Cast pointers into specpdl
-       to avoid GCC warning.
-
-2003-05-16  Ralph Schleicher  <rs@nunatak.allgaeu.org>
-
-       * fileio.c (Fdelete_file): Handle symlinks pointing to directories.
-
-2003-05-15  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (apply_modifiers): Don't fill the other cache.
-
-2003-05-14  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * .gdbinit-union: New file, for USE_LISP_UNION_TYPE users.
-
-       * window.h (Qwindowp, Qwindow_live_p, Vwindow_list)
-       (Fwindow_end, Fselected_window, Fdelete_window, Fwindow_buffer)
-       (Fget_buffer_window, Fsave_window_excursion, Fsplit_window)
-       (Fset_window_configuration, Fcurrent_window_configuration)
-       (compare_window_configurations, Fcoordinates_in_window_p, Fwindow_at)
-       (Fpos_visible_in_window_p, mark_window_cursors_off)
-       (window_internal_height, window_internal_width, Frecenter)
-       (Fscroll_other_window, Fset_window_start, temp_output_buffer_show)
-       (replace_buffer_in_all_windows, init_window_once, init_window)
-       (syms_of_window, keys_of_window): Move from lisp.h.
-       * lisp.h: Move window.c declarations to window.h.
-
-       * bytecode.c: Include window.h.
-       * emacs.c: Include window.h.
-
-       * keyboard.c (make_lispy_event): Apply modifiers to multibyte-char key.
-       (keyremap): Add `parent' field.
-       (keyremap_step): Use it.  Remove `parent' argument.
-       (read_key_sequence): Setup and use the new `parent' field.
-
-2003-05-11  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (adjust_point_for_property): Ensure termination.
-
-2003-05-10  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (follow_key): Remove dead variable `did_meta'.
-       (access_keymap_keyremap, keyremap_step): New funs, extracted from the
-       duplicated handling of function-key-map and key-translation-map
-       in read_key_sequence.
-       (read_key_sequence): Use them.
-
-       * keyboard.c (adjust_point_for_property): Try harder to move point
-       to the non-sticky end of an invisible property.
-
-       * xdisp.c (single_display_prop_intangible_p): Make `space' display
-       property intangible as well.
-
-2003-05-10  Andreas Schwab  <schwab@suse.de>
-
-       * xmenu.c (single_menu_item): Change last parameter to void* to
-       avoid warning.
-
-2003-05-09  Richard M. Stallman  <rms@gnu.org>
-
-       * print.c (Fprin1_to_string): Instead of gcpro, set abort_on_gc.
-       Bind Qinhibit_modification_hooks to t so there will be no GC.
-       Rename local `tem' to `save_deactivate_mark'.
-
-       * eval.c (specpdl_ptr): Declare volatile.
-       (unbind_to): Copy the whole binding and decrement specpdl_ptr
-       before doing the work of unbinding it.
-
-       * lisp.h (struct specbinding): Declare elements volatile.
-       (specpdl_ptr): Declare volatile.
-
-       * Makefile.in (alloca.o): Specify -DDO_BLOCK_INPUT in compiling.
-
-       * alloca.c: Test DO_BLOCK_INPUT rather than `emacs'
-       for use of BLOCK_INPUT and inclusion of lisp.h and blockinput.h.
-
-2003-05-08  Dave Love  <fx@gnu.org>
-
-       * coding.c (Vlast_coding_system_used): Doc fix.
-
-2003-05-07  Jason Rumney  <jasonr@gnu.org>
-
-       * fileio.c (Ffile_symlink_p): Let handlers handle symlinks even
-       when system does not support them.
-
-2003-05-05  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * fileio.c (Qwrite_region_annotate_functions): New var.
-       (build_annotations): Use it to process the global part of the hook.
-       (syms_of_fileio): Init and staticpro it.
-
-       * keyboard.c (safe_run_hooks_error): Display a message instead of
-       silently ignoring the error.
-
-2003-05-03  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (input_available_signal): Mark static.
-       (menu_bar_items): Use map_keymap.
-       (menu_bar_one_keymap): Remove.
-       (menu_bar_item): Adjust arglist (for use in map_keymap).
-       Properly hide a second binding when not both are keymaps.
-
-       * xmenu.c (struct skp): New struct, to pass args through map_keymap.
-       (single_keymap_panes): Use it and map_keymap.
-       (single_menu_item): Use skp as well.
-
-       * keymap.h (map_keymap_function_t): New type.
-       (map_keymap): Declare.
-
-       * keymap.c (map_keymap_item, map_keymap_char_table_item, map_keymap)
-       (map_keymap_call, Fmap_keymap): New functions.
-       (syms_of_keymap): Defsubr map-keymap.
-
-2003-05-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (create_dialog, make_widget_for_menu_item)
-       (make_menu_item, create_menus, xg_update_menu_item): Don't call
-       ..._with_mnemonic functions for menu items.
-
-2003-05-01  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (coding_system_accept_latin_extra_p): Delete this
-       function.
-       (find_safe_codings): Pay attention to
-       the property tranlsation-table-for-encode of each codings.
-       (syms_of_coding): Give Qtranslation_table the extra slot number 2.
-
-2003-05-01  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * eval.c (Funwind_protect): Use func=Fprogn rather than symbol=Qnil.
-
-2003-04-30  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * eval.c (unbind_to): Don't handle symbol = Qnil any more.
-
-       * lisp.h (CHECK): Wrap args in parenthesis.
-       (specbind): Fix doc: symbol = Qnil is not supported any more.
-
-       * bytecode.c (Fbyte_code) <unwind-protect>:
-       Use Fprogn rather than 0 and Qnil.
-
-       * keyboard.c (parse_modifiers_uncached): Parse `down', `drag',
-       `double', and `triple' modifiers as well.
-
-2003-04-30  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (echo_char): Don't clear out a dash that follows a space.
-
-       * alloc.c (abort_on_gc): New variable.
-       (Fgarbage_collect): Abort if abort_on_gc is set.
-
-       * lisp.h (abort_on_gc): Add decl.
-
-       * eval.c (Fsignal): Clear abort_on_gc.
-
-       * editfns.c (Fformat): Set abort_on_gc during first scan of format.
-       Reinit FORMAT_START and END before second scan.
-
-       * xdisp.c (move_it_vertically_backward): Do the final big else
-       even if nlines is 0.
-
-       * xdisp.c (redisplay_internal): Finish the per-frame loop
-       even if redisplay is suspended by input.
-
-2003-04-24  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (x_list_fonts): Return all fonts that match if
-       maxnames = -1.
-
-2003-04-25  Kenichi Handa  <handa@m17n.org>
-
-       * syntax.c (skip_chars): Fix previous change.
-
-2003-04-24  Kenichi Handa  <handa@m17n.org>
-
-       * syntax.c (skip_chars): Make the code faster by using the common
-       technique of *p, *stop, and *endp.
-
-2003-04-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xdisp.c (update_tool_bar): BLOCK_INPUT before calling
-       tool_bar_items so GTK tool bar expose callback does not access items
-       being updated.
-
-2003-04-19  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * eval.c (Fapply): Undo last change and add a comment about why.
-
-2003-04-18  Miles Bader  <miles@gnu.org>
-
-       * data.c (Faset): Calculate nbytes earlier, to satisfy the now
-       pickier PARSE_MULTIBYTE_SEQ.
-
-2003-04-17  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * eval.c (For, Fand, Fprogn, un_autoload, do_autoload):
-       Use XCDR, XCAR, CONSP.
-       (Fdefmacro): Fix docstring.  Use XCAR, XCDR.
-       (Fapply): Remove unnecessary GCPRO.
-
-       * doc.c (Fsubstitute_command_keys): Remove spurious casts.
-
-       * charset.h (PARSE_MULTIBYTE_SEQ): Pretend `length' is used.
-
-       * buffer.h: Don't hardcode BEG==1.
-
-       * abbrev.c (Fdefine_abbrev_table): Use XCAR, XCDR.
-
-2003-04-16  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (try_window, try_window_reusing_current_matrix):
-       When at end of window, set window_end_pos to Z-ZV.
-
-       * buffer.c (Foverlay_recenter): Doc fix.
-
-2003-04-14  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * dispnew.c (Fsit_For): Support XEmacs-style arg list.
-
-2003-04-14  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (mac_check_for_quit_char): Don't check more often than
-       once a second.
-
-2003-04-11  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (kbd_buffer_get_event): Don't handle SELECT_WINDOW_EVENT
-       specially, so that they can't hide an implicit switch-frame event.
-       (make_lispy_event): Handle SELECT_WINDOW_EVENT.
-       (head_table): Use switch-frame as event_kind for select-window.
-       (keys_of_keyboard): Don't bind [select-window] in special-event-map.
-
-       * editfns.c (Fformat): Lisp_Object/int mixup.
-       (format2): Remove unused var numargs.
-
-2003-04-11  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Vafter_insert_file_adjust_coding_function): Delete.
-       (Qafter_insert_file_set_coding): New variable.
-       (syms_of_fileio): Initialize and staticpro it.  Delete declaration
-       for after-insert-file-adjust-coding-function.
-       (Finsert_file_contents): Call Qafter_insert_file_set_coding
-       instead of Vafter_insert_file_adjust_coding_function.
-
-2003-04-11  Kenichi Handa  <handa@m17n.org>
-
-       * lisp.h (temp_echo_area_glyphs): Adjust prototype.
-
-       * minibuf.c (temp_echo_area_glyphs): Change the arg to Lisp
-       string.  Callers changed.
-
-2003-04-10  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Vafter_insert_file_adjust_coding_function): New variable.
-       (syms_of_fileio): Declare it as a lisp variable.
-       (Finsert_file_contents):
-       Call Vafter_insert_file_adjust_coding_function before calling
-       decode-format.
-
-2003-04-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (xg_scroll_callback): Call gtk_range_get_adjustment to
-       get GtkAdjustment as widget now is a GtkRange.
-
-       * gtkutil.c (xg_create_scroll_bar): Connect to value-changed on
-       GtkRange to avoid memory leak.
-
-2003-04-09  Kenichi Handa  <handa@m17n.org>
-
-       * xfaces.c (Vface_font_rescale_alist): New variable.
-       (struct font_name): New member rescale_ratio.
-       (font_rescale_ratio): New function.
-       (split_font_name): If NUMERIC_P is nonzero, set font->rescale_ratio.
-       (better_font_p): On comparing point sized, pay attention to
-       recale_ratio member of fonts.
-       (build_scalable_font_name): Reflect font->rescale_ratio in the
-       font name.
-       (syms_of_xfaces): Declare Vface_font_rescale_alist as a Lisp variable.
-
-       * lread.c (read1): Before calling index, check if the 2nd
-       arguemnt is in ASCII range.
-
-2003-04-08  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Ffile_symlink_p): Doc fix.
-
-       * editfns.c (Fformat): Translate positions of text properties
-       in the format string to apply them to the result.
-
-       * fileio.c (Finsert_file_contents): Doc fix.
-       (syms_of_fileio) <after-insert-file-functions>: Doc fix.
-
-2003-04-08  Ivan Zakharyaschev  <imz@altlinux.org>  (tiny change)
-
-       * lread.c (openp): Get the Qfile_exists_p handler for STRING, not FN.
-
-2003-04-08  Steven Tamm  <steventamm@mac.com>
-
-       * mac.c (init_mac_osx_environment): Switch libexec and bin so
-       that self-contained application finds libexec files.
-
-2003-04-08  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (code_convert_region_unwind):
-       Set Vlast_coding_system_used to the argument.
-       (code_convert_region): If post-read-conversion function changed
-       the value of last-coding-sytem, keep the new value in
-       coding->symbol so that it won't be overridden.
-       (run_pre_post_conversion_on_str): Likewise.
-       (coding_system_accept_latin_extra_p): New function.
-       (find_safe_codings): Pay attention to characters registered in
-       latin-extra-code-table.
-
-2003-04-07  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * Makefile.in (md5.o): Add missing dependency info.
-
-2003-04-06  Richard M. Stallman  <rms@gnu.org>
-
-       * xselect.c (x_handle_selection_request): Move UNGCPRO to very end.
-
-       * marker.c (verify_bytepos): New function.
-
-       * intervals.c (set_intervals_multibyte_1): When becoming
-       multibyte, adjust right and left child sizes to a whole set of
-       characters.  If an interval gets zero total-length, delete it.
-       If an interval consists of just its children, delete one of them.
-
-       * intervals.h (CHECK_TOTAL_LENGTH): New macro.
-       * intervals.c: Add many calls to CHECK_TOTAL_LENGTH.
-
-       * alloc.c (VALIDATE_LISP_STORAGE): Macro deleted.
-       All calls deleted.
-       (lisp_malloc): Do the work here directly.
-
-2003-04-06  Gareth Jones  <emacs@referential.org.uk>  (tiny change)
-
-       * fns.c (Flength): Return SUB_CHAR_TABLE_ORDINARY_SLOTS for sub
-       char tables.
-
-2003-04-04  Kenichi Handa  <handa@m17n.org>
-
-       * editfns.c (Fformat): Use a copy of FORMAT string so that we can
-       destructively change "%S" to "%s".
-
-2003-04-03  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (choose_face_font): Make sure *NEEDS_OVERSTRIKE is
-       always set.
-
-2003-04-01  Dave Love  <fx@gnu.org>
-
-       * xfns.c (xpm_lookup_color): Grok "opaque".
-
-2003-03-31  Andrew Choi  <akochoi@shaw.ca>
-
-       * frame.c (x_report_frame_params) [HAVE_CARBON]: Do not report
-       parent window ID.
-
-       * macfns.c (syms_of_macfns): Remove call to init_x_parm_symbols.
-
-       * macterm.h (struct mac_output): Define x_pixels_diff and
-       y_pixels_diff.
-
-2003-03-31  Juanma Barranquero  <lektu@terra.es>
-
-       * makefile.w32-in ($(BLD)/frame.$(O)): Add dependency on
-       blockinput.h and files included from it.
-
-2003-03-31  Kim F. Storm  <storm@cua.dk>
-
-       The following changes consolidates the common code related to
-       frame-parameter handling from the xfns.c, w32fns.c, and macfns.c
-       files into frame.c.
-
-       * frame.c: Include blockinput.h.
-       (Vx_resource_name, Vx_resource_class, Qx_frame_parameter)
-       (Qx_resource_name, Qface_set_after_frame_default): Define vars here.
-       (Qauto_raise, Qauto_lower, ...): Define all frame parameter
-       related vars here.
-       (struct frame_parm_table, frame_parms): New table for describing
-       frame parameters and their associated Q-variable.
-       The order of the parameters corresponds to the sequence of the
-       frame_parm_handlers table in redisplay_interface.
-       (x_fullscreen_move, x_set_frame_parameters)
-       (x_report_frame_params, x_set_fullscreen, x_set_line_spacing)
-       (x_set_screen_gamma, x_set_font, x_set_fringe_width)
-       (x_set_border_width, x_set_internal_border_width, x_set_visibility)
-       (x_set_autoraise, x_set_autolower, x_set_unsplittable)
-       (x_set_vertical_scroll_bars, x_set_scroll_bar_width, x_icon_type):
-       Generic functions for processing of frame parameters.
-       (validate_x_resource_name, xrdb_get_resource, Fx_get_resource)
-       (display_x_get_resource, x_get_resource_string): Functions for
-       generic access to X resources.
-       (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
-       (x_default_parameter, Fx_parse_geometry): Functions for generic
-       access to frame parameters.
-       (x_figure_window_size): Generic calculation of frame size.
-       Fixed to add space needed for tool bar.  Also setup size_hint_flags.
-       (syms_of_frame): Intern and staticpro frame parameter variables.
-       Defvar_lisp Vx_resource_class and Vx_resource_name here.
-       Defsubr Sx_get_resource and Sx_parse_geometry.
-
-       * frame.h (Qauto_raise, Qauto_lower, ...): Declare extern all frame
-       parameter related vars defined in frame.c.
-       (EMACS_CLASS): Define here.
-       (enum FULLSCREEN_*): Define here.
-       (x_set_scroll_bar_default_width, x_wm_set_icon_position)
-       (x_set_offset, x_new_font, x_new_fontset): Add prototypes.
-       (x_fullscreen_adjust, x_set_frame_parameters, x_report_frame_params)
-       (x_set_fullscreen, x_set_line_spacing, x_set_screen_gamma, x_set_font)
-       (x_set_fringe_width, x_set_border_width, x_set_internal_border_width)
-       (x_set_visibility, x_set_autoraise, x_set_autolower)
-       (x_set_unsplittable, x_set_vertical_scroll_bars)
-       (x_set_scroll_bar_width, x_icon_type, validate_x_resource_name)
-       (x_figure_window_size): Add prototypes.
-
-       * dispextern.h (frame_parm_handler): New typedef.
-       (struct redisplay_interface): New member frame_parm_handlers.
-       (enum resource_types): Move declaration here.
-       (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
-       (x_default_parameter): Add prototypes.
-
-       * window.c: Remove extern decl for frame parameter vars.
-       (change_window_heights): New generic function;
-       replaces x_change_window_heights.  All users changed.
-
-       * window.h (change_window_heights): Add prototype.
-
-       * xfaces.c: Remove extern decl for frame parameter vars.
-
-       * xterm.h (EMACS_CLASS): Remove.  Use generic define.
-       (struct w32_display_info): Fix type of xrdb member.
-       (enum FULLSCREEN_*): Remove.
-       Remove prototypes for generic functions (in frame.h).
-
-       * xfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
-       parameters now defined in frame.h and frame.c.
-       (Vx_resource_name): Remove.  Use generic var.
-       (enum x_frame_parms): Remove (bogus, unused enum).
-       (check_x_display_info): Make non-static (for frame.c).
-       (struct x_frame_parm_table, x_frame_parms): Remove.
-       (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params)
-       (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font)
-       (x_set_border_width, x_set_internal_border_width, x_set_visibility)
-       (x_change_window_heights, x_set_autoraise, x_set_autolower)
-       (x_set_vertical_scroll_bars, x_set_scroll_bar_width)
-       (validate_x_resource_name, Fx_get_resource, x_get_resource_string)
-       (x_default_parameter, Fx_parse_geometry, x_figure_window_size):
-       Remove.  Use generic functions instead.
-       (enum resource_types): Remove.
-       (x_set_scroll_bar_default_width): New global function (for frame.c).
-       (Fx_create_frame): Depend on x_figure_window_size to add space for
-       toolbar and setup size_hint_flags.
-       (x_frame_parm_handlers): New table for redisplay_interface.
-       (syms_of_xfns): Don't intern/staticpro removed vars.
-
-       * xterm.c: Remove unnecessary extern declarations.
-       (x_fullscreen_adjust): Remove.  Use generic instead.
-       (x_redisplay_interface): Add x_frame_parm_handlers member.
-
-       * w32gui.h (XrmDatabase): New (dummy) typedef.
-
-       * w32term.h (EMACS_CLASS): Remove.  Use generic define.
-       (struct w32_display_info): Fix type of xrdb member.
-       (enum FULLSCREEN_*): Remove.
-       (x_fullscreen_adjust): Remove prototype.
-
-       * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
-       parameters now defined in frame.h and frame.c.
-       (Vx_resource_name): Remove.  Use generic var.
-       (enum x_frame_parms): Remove (bogus, unused enum).
-       (check_x_display_info): Make non-static (for frame.c).
-       (struct x_frame_parm_table, x_frame_parms): Remove.
-       (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params)
-       (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font)
-       (x_set_border_width, x_set_internal_border_width, x_set_visibility)
-       (x_change_window_heights, x_set_autoraise, x_set_autolower)
-       (x_set_vertical_scroll_bars, x_set_scroll_bar_width)
-       (validate_x_resource_name, Fx_get_resource, x_get_resource_string)
-       (x_default_parameter, Fx_parse_geometry, x_figure_window_size):
-       Remove.  Use generic functions instead.
-       (enum resource_types): Remove.
-       (x_set_scroll_bar_default_width): New global function (for frame.c).
-       (Fx_create_frame): Depend on x_figure_window_size to add space for
-       toolbar and setup size_hint_flags.
-       (w32_frame_parm_handlers): New table for redisplay_interface.
-       (syms_of_w32fns): Don't intern/staticpro removed vars.
-
-       * w32term.c: Remove unnecessary extern declarations.
-       (x_fullscreen_adjust): Remove.  Use generic instead.
-       (x_redisplay_interface): Add w32_frame_parm_handlers member.
-
-       * w32reg.c (x_get_string_resource): Use XrmDatabase.
-
-       * macgui.h (XrmDatabase): New (dummy) typedef.
-
-       * macterm.h (EMACS_CLASS): Remove.
-       (struct mac_display_info): Add xrdb member.
-       (struct mac_output): Add want_fullscreen member.
-
-       * macfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
-       parameters now defined in frame.h and frame.c.
-       (Vx_resource_name): Remove.  Use generic var.
-       (check_x_display_info): Make non-static (for frame.c).
-       (struct x_frame_parm_table, x_frame_parms): Remove.
-       (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params)
-       (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font)
-       (x_set_border_width, x_set_internal_border_width, x_set_visibility)
-       (x_change_window_heights, x_set_autoraise, x_set_autolower)
-       (x_set_vertical_scroll_bars, x_set_scroll_bar_width)
-       (validate_x_resource_name, Fx_get_resource, x_get_resource_string)
-       (x_default_parameter, Fx_parse_geometry, x_figure_window_size):
-       Remove.  Use generic functions instead.
-       (enum resource_types): Remove.
-       (x_set_scroll_bar_default_width): New global function (for frame.c).
-       (mac_frame_parm_handlers): New table for redisplay_interface.
-       (syms_of_macfns): Don't intern/staticpro removed vars.
-
-       * macterm.c: Remove unnecessary extern declarations.
-       (x_redisplay_interface): Add mac_frame_parm_handlers member.
-
-       * Makefile.in (frame.o): Add dependency on blockinput.h and files
-       included from it (atimer.h and systime.h).
-
-2003-03-30  Andreas Schwab  <schwab@suse.de>
-
-       * xdisp.c (x_insert_glyphs): Fix swapped width and height
-       parameters for shift_glyphs_for_insert.
-
-       * macterm.c (x_redisplay_interface): Add missing entry for
-       draw_vertical_window_border.
-
-2003-03-29  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
-
-       * fileio.c (Fexpand_file_name): In the no-handler case, after
-       expanding, look again for a handler and invoke it.  This is needed
-       for filenames like "/foo/../user@host:/bar/../baz" -- the first
-       expansion produces "/user@host:/bar/../baz" which needs to be
-       expanded again for the finame result "/user@host:/baz".
-
-2003-03-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_tool_bar_item_expose_callback): Reduce size
-       of area to be redrawn for better performance.
-
-2003-03-28  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xterm.c (take_vertical_position_into_account): Remove.
-       (xt_action_hook): Call set_vertical_scroll_bar if needed.
-       (XM_SB_MIN, XM_SB_RANGE): Remove (min is now set to 0).
-       (xm_scroll_callback, x_create_toolkit_scroll_bar)
-       (x_set_toolkit_scroll_bar_thumb): Simplify.
-       (x_scroll_bar_expose): Only compile if !USE_TOOLKIT_SCROLL_BARS.
-       (XTread_socket): Remove unused var.
-       (x_make_frame_invisible): Replace goto with else.
-
-       * xdisp.c (set_vertical_scroll_bar): New fun.
-       (redisplay_window): Use it.
-
-2003-03-26  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (update_tool_bar): Recompute tool bar if
-       update_mode_lines is set.  Set w->update_mode_line
-       only if the tool bar contents actually change.
-       (update_menu_bar): Undo previous change.
-
-2003-03-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_resize_widgets): Don't call xg_frame_cleared.
-       (xg_frame_set_char_size): Calculate scroll bar width before frame
-       width.  Call SET_FRAME_GARBAGED and cancel_mouse_face.
-       (xg_separator_p): Check for all documented separator types.
-       (xg_update_scrollbar_pos): Variable gheight not needed, use height.
-       (update_frame_tool_bar): Don't call gdk_window_process_all_updates.
-
-       * xdisp.c (update_menu_bar): Set w->update_mode_line to Qt
-       so tool bar gets updated.
-
-2003-03-26  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * data.c (store_symval_forwarding): Re-instate part of the code
-       that was deleted with too much enthusiasm.
-
-2003-03-25  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * data.c (store_symval_forwarding): Delete special read-only
-       hack for type == -1, since we now use ->constant instead.
-       (Fkill_local_variable): Don't use XBUFFER if it can be nil.
-
-       * buffer.c (overlays_in): Declare static.
-       (syms_of_buffer) <enable-multibyte-characters>: Use the symbol's
-       `constant' field rather than the variable's `type' field.
-
-2003-03-24  Andrew Choi  <akochoi@shaw.ca>
-
-       * config.in [MAC_OSX]: Do not redefine bcopy, bzero, and bcmp.
-
-       * dispextern.h [HAVE_CARBON]: Include Carbon.h.
-
-       * fns.c [MAC_OSX]: Do not redefine vector.
-
-       * keyboard.c [MAC_OSX]: Handle SIGINT with interrupt_signal.
-
-       * macgui.h: Remove definition of No_Cursor.
-
-       * macterm.h: Include Carbon.h.  Replace (struct Cursor *) by Cursor.
-
-       * xdisp.c: Define No_Cursor.
-       (x_write_glyphs, notice_overwritten_cursor)
-       (draw_phys_cursor_glyph, note_mode_line_or_margin_highlight)
-       (note_mouse_highlight): Remove Mac-specific code.
-       (note_mouse_highlight): Use bcmp instead of == to compare Cursors.
-
-2003-03-24  John Paul Wallington  <jpw@gnu.org>
-
-       * xdisp.c (redisplay_window): If mini window's buffer is not
-       empty, then redisplay it like other windows.
-
-2003-03-23  Kim F. Storm  <storm@cua.dk>
-
-       * w32term.c (w32_draw_window_cursor): Fix last change.
-
-2003-03-23  Kenichi Handa  <handa@m17n.org>
-
-       * alloc.c (make_string_from_bytes, make_specified_string):
-       Add `const' for the arg CONTENTS.
-
-       * lisp.h (make_string_from_bytes, make_specified_string):
-       Prototypes adjusted.
-
-2003-03-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xdisp.c (get_glyph_string_clip_rect): Remove ; at end of #endif.
-
-       * gtkutil.h: Take two more arguments to xg_update_scrollbar_pos.
-       (XG_SB_RANGE): New define.
-
-       * gtkutil.c (xg_fixed_handle_expose): New function.
-       (xg_create_frame_widgets): Call xg_fixed_handle_expose for
-       expose events.
-       (xg_update_scrollbar_pos): Take two more arguments, left and width
-       of scroll bar including borders.
-       Clear left and right part outside scroll bar separately as some
-       themes have bars that are not an even number of pixels.
-       Don't set reallocate_redraws, don't call
-       gdk_window_process_all_updates.
-       (xg_set_toolkit_scroll_bar_thumb): Upper value is fixed,
-       so no need to change it.  Calculate size and value with XG_SB_RANGE.
-
-       * xterm.c (x_scroll_bar_create, XTset_vertical_scroll_bar):
-       Pass left and width of scroll bar including borders to
-       xg_update_scrollbar_pos.
-
-2003-03-22  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * Makefile.in: Make sure space precedes end-of-line backslashes.
-
-2003-03-22  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (pixel_to_glyph_coords, glyph_to_pixel_coords):
-       Add generic versions here.  Remove system specific versions
-       defined elsewhere.
-
-       * dispextern.h (pixel_to_glyph_coords, glyph_to_pixel_coords):
-       Add prototypes.
-
-       * xterm.h (STORE_NATIVE_RECT): New macro.
-
-2003-03-21  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_glyph_string_clip_rect):
-       Use FRAME_INTERNAL_BORDER_WIDTH.
-
-       * dispextern.h (struct redisplay_interface): Add active_p
-       argument to draw_window_cursor member.  All uses changed.
-
-2003-03-21  Kim F. Storm  <storm@cua.dk>
-
-       The following changes consolidate code related to writing and
-       inserting glyphs, exposing frame, the tool bar, the mouse face,
-       the output cursor, and help echo from xterm.c, w32term.c and
-       macterm.c into xdisp.c.  It also generalizes the use of the
-       window_part enum instead of using numeric values throughout.
-
-       * xdisp.c: Consolidate gui-independent code here.
-       Include keymap.h.
-       (Qhelp_echo): Import.
-       (mouse_autoselect_window, x_stretch_cursor_p): Declare here.
-       (help_echo_string, help_echo_window, help_echo_object)
-       (previous_help_echo_string, help_echo_pos): Declare here.
-       (output_cursor, last_mouse_frame, last_tool_bar_item): Declare here.
-       (estimate_mode_line_height): Define here.  Handle windowing
-       systems directly (without using estimate_mode_line_height_hook).
-       (x_y_to_hpos_vpos, get_tool_bar_item, note_tool_bar_highlight):
-       (update_window_cursor, update_cursor_in_window_tree)
-       (fast_find_position, fast_find_string_pos)
-       (note_mode_line_highlight, note_mode_line_or_margin_highlight)
-       (expose_area, expose_line, expose_overlaps, expose_window)
-       (expose_window_tree, phys_cursor_in_rect_p): New generic versions;
-       declared static as they are only used locally in xdisp.c.
-       (draw_glyphs): Rename from x_draw_glyphs and make static.
-       (tool_bar_item_info, notice_overwritten_cursor): Make static.
-       (frame_to_window_pixel_xy, get_glyph_string_clip_rect)
-       (set_output_cursor, x_cursor_to, handle_tool_bar_click)
-       (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
-       (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor)
-       (display_and_set_cursor, x_update_cursor, x_clear_cursor)
-       (show_mouse_face, clear_mouse_face, cursor_in_mouse_face_p)
-       (note_mouse_highlight, x_clear_window_mouse_face)
-       (cancel_mouse_face, x_draw_vertical_border, expose_frame)
-       (x_intersect_rectangles): New generic functions for use by xdisp.c
-       and GUI front-ends.
-       (syms_of_xdisp): Initialize and staticpro help_echo* variables.
-       Defvar_bool "x-streach-cursor" and "mouse-autoselect-window" here.
-
-       * dispextern.h (Display_Info): Generic typedef for *_display_info.
-       (NativeRectangle): Generic typedef for rectangle type.
-       (enum window_part): Move here from window.c.
-       (struct redisplay_interface): New members flush_display_optional,
-       define_frame_cursor, clear_frame_area, draw_window_cursor,
-       draw_vertical_window_border, shift_glyphs_for_insert.
-       Rename member clear_mouse_face to clear_window_mouse_face.
-       (estimate_mode_line_height_hook): Remove hook.
-       (auto_raise_tool_bar_buttons_p): Don't declare extern.
-       (tool_bar_item_info): Remove prototype.
-       (help_echo_string, help_echo_window, help_echo_object)
-       (previous_help_echo_string, help_echo_pos)
-       (last_mouse_frame, last_tool_bar_item, mouse_autoselect_window):
-       (x_stretch_cursor_p, output_cursor): Declare extern.
-       (x_draw_glyphs, notice_overwritten_cursor): Remove prototypes.
-       (x_write_glyphs), x_insert_glyphs, x_clear_end_of_line)
-       (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor)
-       (display_and_set_cursor, set_output_cursor, x_cursor_to)
-       (x_update_cursor, x_clear_cursor, x_draw_vertical_border)
-       (frame_to_window_pixel_xy, get_glyph_string_clip_rect)
-       (note_mouse_highlight, x_clear_window_mouse_face, cancel_mouse_face)
-       (handle_tool_bar_click, clear_mouse_face, show_mouse_face)
-       (cursor_in_mouse_face_p, expose_frame, x_intersect_rectangles):
-       Add prototypes.
-       (mode_line_string, marginal_area_string): Fix prototypes.
-
-       * window.c (enum window_part): Move to dispextern.h.
-       (coordinates_in_window): Use enum window_part member names
-       instead of numbers to describe return value.
-       (struct check_window_data): Change part member to window_part.
-       (check_window_containing): Return window_part unaltered.
-       (window_from_coordinates): Change part arg from int to enum
-       window_part.  Allow part arg to be null.  All users changed.
-
-       * window.h (window_from_coordinates): Fix prototype.
-
-       * term.c (estimate_mode_line_height): Move to xdisp.c.
-
-       * keyboard.c (make_lispy_event): Use enum window_part.
-
-       * dispnew.c (mode_line_string, marginal_area_string): Use enum
-       window_part instead of int in arg list.  Users changed.
-
-       * xterm.h (No_Cursor): Declare as None for X.
-       (struct mac_output): Replace member cross_cursor by hand_cursor.
-
-       * xterm.c: Remove consolidated defines and code.
-       (BETWEEN): Remove unused macro.
-       (x_draw_vertical_window_border, x_shift_glyphs_for_insert)
-       (x_define_frame_cursor, x_clear_frame_area)
-       (x_draw_window_cursor): New X-specific functions for RIF.
-       (x_redisplay_interface): Add new members.
-
-       * xfns.c: Setup and use hand_cursor instead of cross_cursor.
-
-       * w32term.h (struct w32_output): Remove cross_cursor member.
-
-       * w32term.c: Remove consolidated defines and code.
-       (BETWEEN): Remove unused macro.
-       (w32_draw_vertical_window_border, w32_shift_glyphs_for_insert)
-       (w32_define_frame_cursor, w32_clear_frame_area)
-       (w32_draw_window_cursor): New W32-specific functions for RIF.
-       (w32_redisplay_interface): Add new members.
-
-       * w32gui.h (No_Cursor): Define as 0 for W32.
-       (XRectangle): Add X compatible rectangle type.
-       (NativeRectangle): Declare as RECT for W32.
-       (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros.
-
-       * w32fns.c: Remove setup of cross_cursor (already has hand_cursor).
-
-       * w32console.c: Remove consolidated defines and code.
-
-       * msdos.h (Display_Info): Add generic typedef.
-
-       * msdos.c: Remove consolidated defines and code.
-       (IT_note_mouse_highlight, dos_rawgetc): Use enum window_part.
-
-       * macterm.h (struct mac_output): Replace member cross_cursor by
-       hand_cursor.
-       (activate_scroll_bars, deactivate_scroll_bars): Add prototypes.
-
-       * macterm.c: Remove consolidated defines and code.
-       (BETWEEN): Remove unused macro.
-       (mac_draw_vertical_window_border, mac_shift_glyphs_for_insert)
-       (mac_define_frame_cursor, mac_clear_frame_area)
-       (mac_draw_window_cursor): New Mac-specific functions for RIF.
-       (x_redisplay_interface): Add new members.
-
-       * macgui.h (No_Cursor): Define as 0 for Mac.
-       (XRectangle): Add X compatible rectangle type.
-       (NativeRectangle): Declare as Rect for Mac.
-       (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros.
-
-       * macfns.c (x_set_mouse_color): Setup hand_cursor.
-       (x_set_cursor_color): Use x_display_and_set_cursor.
-
-       * Makefile.in (xdisp.o): Add dependency on blockinput.h and files
-       included from it.  Add dependency on keymap.h.
-
-       * makefile.w32-in (xdisp.o): Add dependency on keymap.h.
-
-2003-03-21  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Fexpand_file_name): Fix previous change.
-
-2003-03-19  Kenichi Handa  <handa@m17n.org>
-
-       * fileio.c (Ffile_name_directory): Reconstruct file name by
-       make_specified_string.
-       (Ffile_name_nondirectory, Ffile_name_as_directory)
-       (Fdirectory_file_name, Fexpand_file_name)
-       (Fsubstitute_in_file_name): Likewise.
-       (Fread_file_name): Compare decoded homedir with DIR and
-       DEFAULT_FILENAME.
-
-       * alloc.c (make_specified_string): If NCHARS is negative, count
-       the number of characters.
-
-2003-03-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_frame_cleared): Call gtk_widget_queue_draw for
-       all widgets.
-
-       * gtkutil.h: Removed xg_ignore_next_thumb.
-
-2003-03-18  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (Vchar_coding_system_table): Remove this variable.
-       (Vcoding_system_safe_chars): New variable.
-       (intersection): Remove this function.
-       (find_safe_codings): Don't use Vchar_coding_system_table, but try
-       all codings in SAFE_CODINGS.
-       (Ffind_coding_systems_region_internal): Adjust for the change of
-       find_safe_codings.  Get generic coding systems from
-       Vcoding_system_safe_chars.
-       (Fdefine_coding_system_internal): New function.
-       (syms_of_coding): Defsubr Sdefine_coding_system_internal.
-       Initialize and staticpro Vcoding_system_safe_chars.
-
-2003-03-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_set_toolkit_scroll_bar_thumb): Check if new values
-       equal old values before updating.
-
-       * xterm.c (xg_scroll_callback): Remove xg_ignore_next_thumb.
-
-       * gtkutil.c (xg_initialize): Remove xg_ignore_next_thumb.
-
-2003-03-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c: Removed handle_fixed_child, struct xg_last_sb_pos.
-       (xg_resize_widgets): Don't call foreach(handle_fixed_child).
-       (xg_gtk_scroll_destroy): Remove free of struct xg_last_sb_pos.
-       (scroll_bar_button_cb): Set bar->dragging to nil on button release.
-       (xg_create_scroll_bar): Pass bar to button event callback.
-       (xg_find_top_left_in_fixed): New function.
-       (xg_update_scrollbar_pos): Don't call gdk_window_clear on
-       whole scroll bar area.  Get old position with
-       xg_find_top_left_in_fixed, calculate and only clear needed areas.
-       (xg_set_toolkit_scroll_bar_thumb): Do not adjust scroll bar if
-       dragging is in progress.  Calculate whole as for Motif.
-       Remove code that saved last values.  Call gtk_range functions to
-       set scroll bar sizes.
-
-       * gtkutil.h: Removed xg_ignore_next_thumb.
-
-2003-03-17  Juanma Barranquero  <lektu@terra.es>
-
-       * makefile.w32-in ($(BLD)/xdisp.$(O)): Add dependency on blockinput.h
-       and files included from it.
-
-2003-03-18  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keymap.c (accessible_keymaps_1): Break cycles but without preventing
-       multiple occurrences of the same keymap under different prefixes.
-       (Faccessible_keymaps): Remove code redundant since 1994-08-03T07:39:00Z!rms@gnu.org.
-
-2003-03-16  Jason Rumney  <jasonr@gnu.org>
-
-       * w32gui.h: Use HDC for Display.
-
-       * w32term.c (w32_encode_char): Prevent double-byte chars from
-       crashing Emacs.
-
-       * w32fns.c (jpeg_load, png_load, slurp_file): Read image files
-       as binary.
-
-2003-03-16  Juanma Barranquero  <lektu@terra.es>
-
-       * xdisp.c (x_produce_glyphs): Use FRAME_BASELINE_OFFSET.
-
-2003-03-16  Kim F. Storm  <storm@cua.dk>
-
-       The following changes consolidate some of the gui-independent
-       parts of the processing and drawing of "glyph strings" from
-       xterm.c, w32term.c, and macterm.c into xdisp.c.
-
-       * dispextern.h (struct glyph): Reduce face_id member from 22 to
-       21 bits (this reduces number of faces from 4M to 2M).
-       Replace W32 specific w32_font_type member (2 bits) by generic
-       font_type member (3 bits) for portability.
-       (FONT_TYPE_UNKNOWN): New define, default for font_type member.
-       (enum draw_glyphs_face): Define here.
-       (struct glyph_string): Define here.  Merge W32 and X versions.
-       (struct redisplay_interface): New members per_char_metric,
-       encode_char, compute_glyph_string_overhangs, draw_glyph_string.
-       (VCENTER_BASELINE_OFFSET): Define here.
-       (dump_glyph_string, x_get_glyph_overhangs, x_produce_glyphs)
-       (x_draw_glyphs, notice_overwritten_cursor): Declare prototypes here.
-
-       * xdisp.c: Consolidate gui-independent "glyph string" code here.
-       (dump_glyph_string): Moved here.
-       (init_glyph_string, append_glyph_string_lists, append_glyph_string)
-       (prepend_glyph_string_lists, get_glyph_face_and_encoding)
-       (fill_composite_glyph_string, fill_glyph_string)
-       (fill_image_glyph_string, fill_stretch_glyph_string)
-       (left_overwritten, left_overwriting, right_overwritten)
-       (right_overwriting, get_char_face_and_encoding)
-       (set_glyph_string_background_width, compute_overhangs_and_x)
-       (append_glyph, append_composite_glyph, produce_image_glyph)
-       (take_vertical_position_into_account, append_stretch_glyph)
-       (produce_stretch_glyph): New generic functions (based on X version).
-       Call platform specific functions through rif.
-       (INIT_GLYPH_STRING): New macro, hides W32 details.
-       (BUILD_STRETCH_GLYPH_STRING, BUILD_IMAGE_GLYPH_STRING)
-       (BUILD_CHAR_GLYPH_STRINGS, BUILD_COMPOSITE_GLYPH_STRING)
-       (BUILD_GLYPH_STRINGS): Generic macros (based on X version).
-       (x_draw_glyphs, x_get_glyph_overhangs, x_produce_glyphs)
-       (notice_overwritten_cursor):
-       Generic functions exported to platform modules.  Users changed.
-
-       * xterm.h (FONT_DESCENT, FRAME_X_OUTPUT, FRAME_BASELINE_OFFSET)
-       (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE)
-       (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2):
-       New macros for consolidated code.
-
-       * xterm.c: Remove consolidated defines and code.
-       (x_per_char_metric, x_encode_char)
-       (x_compute_glyph_string_overhangs): Adapt to RIF requirements.
-       (x_redisplay_interface): Add new members.
-
-       * w32gui.h (Display): Add dummy typedef for consolidation.
-       (XChar2b): Define alias for wchar_t for consolidation.
-       (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros.
-
-       * w32term.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
-       (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE):
-       New macros for consolidation.
-
-       * w32term.c: Remove consolidated defines and code.
-       (BUILD_WCHAR_T, BYTE1, BYTE2): Macros removed; callers changed
-       to use STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2 instead.
-       (w32_per_char_metric): Change font_type arg to int for RIF.
-       (w32_encode_char): Return int according to RIF requirements.
-       (w32_compute_glyph_string_overhangs): Adapt to RIF.
-       (w32_get_glyph_overhangs): New function for RIF.  Uses generic
-       x_get_glyph_overhangs.
-       (w32_redisplay_interface): Add new members.
-
-       * macgui.h (XChar2b): Move typedef here for consolidation.
-       (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros.
-
-       * macterm.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY):
-       (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE): New macros for
-       consolidation.
-
-       * macterm.c: Remove consolidated defines and code.
-       (mac_per_char_metric): New function for RIF.
-       (mac_encode_char): Adapt to new RIF requirements.
-       (mac_compute_glyph_string_overhangs): Adapt for RIF.
-       (x_redisplay_interface): Add new members.
-
-2003-03-15  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keymap.c (Vmenu_events): New var.
-       (syms_of_keymap): Initialize it.
-       (where_is_internal): Check more carefully what is a menu event.
-
-2003-03-14  Richard M. Stallman  <rms@gnu.org>
-
-       * lread.c (read1): After #!, exit loop on eof.
-
-2003-03-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.h: Add declaration for xg_frame_cleared.
-
-       * xterm.c (x_clear_frame): Call xg_frame_cleared for GTK.
-
-       * gtkutil.c (struct xg_last_sb_pos): New structure.
-       (handle_fixed_child): New function.
-       (xg_resize_widgets): Call handle_fixed_child on all scroll bar widgets
-       and force a redraw on them.
-       (xg_gtk_scroll_destroy): Free struct xg_last_sb_pos also.
-       (xg_create_scroll_bar): Add struct xg_last_sb_pos to scroll bar
-       so we can avoid unneeded redraws.
-       (xg_update_scrollbar_pos): Invalidate data in xg_last_sb_pos
-       and force a redraw on the scroll bar.
-       (xg_set_toolkit_scroll_bar_thumb): Do not change/redraw scroll bar
-       if xg_last_sb_pos shows the positions are up to date.
-       (xg_frame_cleared): New function.
-
-2003-03-13  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (Fdetect_coding_region): Fix docstring.
-       (Fdetect_coding_string): Fix docstring.
-
-2003-03-13  Andreas Schwab  <schwab@suse.de>
-
-       * gtkutil.c: Add prototype for create_menus.
-
-       * data.c (long_to_cons): Fix type of top.
-
-       * xselect.c (selection_data_to_lisp_data): Use int instead of
-       long for an integer of size 4.
-
-       * gtkutil.c (xg_update_frame_menubar): Add missing return value.
-       (xg_tool_bar_help_callback): Likewise.
-
-2003-03-12  Andreas Schwab  <schwab@suse.de>
-
-       * xterm.c (x_term_init) [USE_GTK]: Fix typo.
-
-2003-03-12  Kim F. Storm  <storm@cua.dk>
-
-       The following changes consolidate the fringe handling from
-       xterm.c, w32term.c, and macterm.c into xdisp.c.
-
-       * xdisp.c: Consolidate fringe handling code here.
-       (left_bits, right_bits, continued_bits, continuation_bits)
-       (ov_bits, zv_bits): Define fringe bitmaps.
-       (fringe_bitmaps): New array holding fringe bitmaps.
-       (draw_fringe_bitmap): Draw a specific bitmap; call display
-       specific drawing routine via rif->draw_fringe_bitmap.
-       (draw_row_fringe_bitmaps): Generic replacement for
-       x_draw_row_fringe_bitmaps; all callers changed.
-       (compute_fringe_widths): Generic replacement for
-       x_compute_fringe_widths; all callers changed.
-
-       * dispextern.h (enum fringe_bitmap_type): Define here.
-       (struct fringe_bitmap, struct draw_fringe_bitmap_params): New.
-       (fringe_bitmaps): Declare extern.
-       (struct redisplay_interface): New member draw_fringe_bitmap.
-       (draw_row_fringe_bitmaps, compute_fringe_widths): Declare extern.
-
-       * xterm.c: Remove generic fringe code.
-       (x_draw_fringe_bitmap): Only perform actual fringe drawing.
-       (x_redisplay_interface): Add x_draw_fringe_bitmap member.
-
-       * w32term.c: Remove generic fringe code.
-       (w32_draw_fringe_bitmap): Only perform actual fringe drawing.
-       (w32_redisplay_interface): Add w32_draw_fringe_bitmap member.
-
-       * macterm.c: Remove generic fringe code.
-       (x_draw_fringe_bitmap): Only perform actual fringe drawing.
-       (x_redisplay_interface): Add x_draw_fringe_bitmap member.
-
-2003-03-11  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * print.c (Fprin1_to_string): Return unibyte string if possible.
-
-2003-03-09  David Kastrup  <dak@gnu.org>
-
-       * process.c (read_process_output): We have allocated enough space
-       for readmax and carryover, so actually use the alloted space.
-
-2003-03-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c (make_lispy_event): Extend mouse_syms if needed for
-       toolkit scrollbar click.
-
-       * xterm.c (x_window_to_scroll_bar): Call xg_get_scroll_id_for_window
-       for USE_GTK.
-       (x_scroll_bar_handle_click): Use this function for toolkit scrollbars
-       also.
-       (handle_one_xevent): ButtonPress/Release: If event is for a toolkit
-       scrollbar and control is pressed, call x_scroll_bar_handle_click.
-
-       * gtkutil.h (xg_get_scroll_id_for_window): Declare.
-
-       * gtkutil.c (xg_get_scroll_id_for_window): New function.
-       (xg_tool_bar_item_expose_callback): New function.
-       (xg_tool_bar_expose_callback): Call update_frame_tool_bar.
-       (xg_create_tool_bar): Connect xg_tool_bar_expose_callback to expose
-       on the tool bar widget.
-       (update_frame_tool_bar): Connect xg_tool_bar_item_expose_callback
-       to expose on the tool bar item widgets.
-
-2003-03-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (update_frame_tool_bar): Compare pixmap ID instead of
-       struct image* when deciding to update (struct image* may have been
-       deleted from the image cache).
-
-       * xterm.c (handle_one_xevent): Pass ReparentNotify to Xt even if
-       the event isn't for a frame (i.e. for dialogs).
-
-2003-03-07  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (CODING_ADD_COMPOSITION_COMPONENT): If the number of
-       composition components reaches the limit, terminate composing.
-       (COMPOSITION_OK): New macro.
-       (detect_coding_iso2022): Use it if an escape sequence for
-       composition is found.
-       (coding_restore_composition): Adjust the number of composition
-       components if it is not sane.
-
-2003-03-06  Juanma Barranquero  <lektu@terra.es>
-
-       * w32term.h (struct w32_display_info): Add xrdb member to support
-       passing resources via -xrm on Windows.
-
-       * w32term.c (w32_make_rdb): New function.
-       (w32_term_init): Use it to initialize xrdb member of w32_display_info
-       struct.  Delete leftover code.
-
-       * w32fns.c (Fx_get_resource, x_get_resource_string): Pass xrdb to check
-       for resources passed on the command line.
-
-       * w32reg.c (w32_get_rdb_resource): New function.
-       (x_get_string_resource): Use it, so resources passed with -xrm
-       supercede the ones in the registry.
-
-2003-03-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_detect_focus_change): Call x_any_window_to_frame
-       instead of x_top_window_to_frame.
-
-2003-03-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xsmfns.c (smc_save_yourself_CB): Add --no-splash to options
-       when restarting Emacs.
-
-2003-03-03  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (Fkill_buffer): Use Frun_hook_with_args_until_failure
-       to run kill-buffer-query-functions.
-       (Qkill_buffer_query_functions): New var.
-       (syms_of_buffer): Init and staticpro it.
-
-2003-03-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h (XSync): Define as gdk_window_process_all_updates for GTK.
-
-2003-02-25  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): Fix infinite loop in redisplay.
-       If centering point failed to make whole line visible and vscroll
-       is non-zero, disable vscroll and try centering point again.
-
-       * lread.c (read1): Accept `single space' syntax like (? x).
-
-2003-02-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c (cancel_hourglass_unwind): Surround with
-       #ifdef HAVE_X_WINDOWS.
-
-2003-02-25  Kenichi Handa  <handa@m17n.org>
-
-       * buffer.c (Fset_buffer_multibyte): Pay attention to the buffer
-       process only when "subprocesses" is defined.
-
-2003-02-24  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * syntax.c (back_comment): Only check nestedness of 2nd char if needed.
-
-2003-02-24  Juanma Barranquero  <lektu@terra.es>
-
-       * callint.c (fix_command): Declare as static void and move before
-       Fcall_interactively.
-
-       * xdisp.c (Qwhen): Declare external; it's now defined in callint.c.
-       (syms_of_xdisp): Don't initialize Qwhen.
-
-2003-02-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c (cancel_hourglass_unwind): New function.
-       (command_loop_1): Cancel hourglass with unwind-protect.
-
-2003-02-23  Richard M. Stallman  <rms@gnu.org>
-
-       * callint.c (fix_command): New subroutine, from Fcall_interactively.
-       Detect (when ... (region-beginning)) etc.
-       (Fcall_interactively): Call fix_command.
-       (Qif, Qwhen): New variables.
-       (syms_of_callint): Init and staticpro them.
-
-       * regex.c (print_partial_compiled_pattern): Output to stderr.
-
-2003-02-23  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
-
-       * dired.c (directory_files_internal): Don't expand directory.
-       (Fdirectory_files, Fdirectory_files_and_attributes): Do it here
-       instead.  From Lars Hansen <larsh@math.ku.dk>.
-
-2003-02-22  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * fns.c (string_to_multibyte): Remove unused var i.
-       (Flanginfo): Fix int/Lisp_Object mixup.
-       (void_call2): New fun.
-       (Fmap_char_table): Use it in place of call2.
-
-       * xfaces.c (x_face_list_fonts): Fix int/Lisp_Object mixup.
-
-       * macros.c (Fstart_kbd_macro): Remove redundant assignment.
-
-       * keymap.c (copy_keymap_1): Make it static.
-
-       * alloc.c (Fgarbage_collect): Don't use XSETFLOAT.
-
-2003-02-22  David Ponce  <david@dponce.com>
-
-       * lread.c (Fload): Don't check STRING_MULTIBYTE.
-
-2003-02-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * process.h: Removed subtty field from struct Lisp_Process.
-
-       * process.c (create_process): Remove setting of subtty.
-       (emacs_get_tty_pgrp): New function.
-       (Fprocess_running_child_p, process_send_signal):
-       Call emacs_get_tty_pgrp instead of ioctl.
-       (process_send_signal): Call EMACS_KILLPG if ioctl TIOCSIGSEND fails.
-
-2003-02-21  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
-
-       * keymap.c (Fdefine_key): Doc fix.
-
-2003-02-21  Juanma Barranquero  <lektu@terra.es>
-
-       Port of patch for RC by Klaus Zeitler <kzeitler@lucent.com>.
-
-       * s/hpux10.h: Define POLL_INTERRUPTED_SYS_CALL, not
-       POLLING_PROBLEM_IN_SELECT.
-
-       * s/hpux11.h: Include hpux10-20.h instead of hpux10.h.
-       Delete #undef of POLLING_PROBLEM_IN_SELECT.
-
-       * s/hpux10-20.h: New file.
-
-       * process.c (wait_reading_process_input):
-       Use POLL_INTERRUPTED_SYS_CALL, not POLLING_PROBLEM_IN_SELECT.
-
-2003-02-20  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (check_fontset_name): If NAME is nil, return the
-       default fontset.
-       (override_font_info): New function.
-       (Fset_fontset_font): Document that NAME nil means the default fontset.
-       (Ffontset_info): If FONTSET is not the default fontset, merge
-       FONTSET onto the copy of the default fontset, and work on that
-       copy.  Document that NAME nil means the default fontset.
-       (Ffontset_font): Document that NAME nil means the default fontset.
-
-       * process.c (setup_process_coding_systems): If the process's
-       in/out descriptor is -1, do nothing.
-
-2003-02-19  Andreas Schwab  <schwab@suse.de>
-
-       * lisp.h (Fcancel_kbd_macro_events, Fstring_to_multibyte):
-       Add prototypes.
-
-2003-02-19  Kenichi Handa  <handa@m17n.org>
-
-       * xfaces.c (try_alternative_families): Try all scalable fonts if
-       Vscalable_fonts_allowed is not Qt.
-
-2003-02-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfaces.c (x_face_list_fonts): Set *pfonts to 0 if no fonts found.
-
-2003-02-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_list_fonts): If maxnames is less than 0, get all font
-       names.
-
-       * xfaces.c (x_face_list_fonts): Allocate struct font_name here.
-       (sorted_font_list): Move allocation of struct font_name to
-       x_face_list_fonts.
-       (Fx_font_family_list): Set font-list-limit to -1 to get all font names.
-       (Fx_list_fonts): Set maxnames to -1 to get all font names.
-
-2003-02-18  Kim F. Storm  <storm@cua.dk>
-
-       * lread.c (read1): Fix last change.
-       "`" is not always special.  Allow "?" after a character constant.
-
-2003-02-18  Andrew Choi  <akochoi@shaw.ca>
-
-       * unexmacosx.c (copy_data_segment): Also copy __cfstring section.
-
-2003-02-18  Andreas Schwab  <schwab@suse.de>
-
-       * window.c (window_scroll_pixel_based): Move outside a
-       multi-glyph character before setting new window start.
-
-       * xdisp.c (in_display_vector_p): New function.
-       * dispextern.h (in_display_vector_p): Declare.
-
-2003-02-18  Kim F. Storm  <storm@cua.dk>
-
-       * lread.c (read1): Fix and relax read syntax.
-       Recognize "[", ";", "#", and "?" after a dotted-pair dot.
-       Only recognize "," after dotted-pair dot if inside backquote.
-       Never include "`" or "," (inside backquote) in a symbol.
-       Allow dotted-pair dot after a character constant.
-       Allow "`" and "," (inside backquote) after a character constant.
-
-2003-02-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_tool_bar_expose_callback): New function.
-       (xg_create_tool_bar): Force style of tool bar to be horizontal with
-       icons.  Set name of tool bar to emacs-toolbar.
-       (update_frame_tool_bar): Connect expose event to
-       xg_tool_bar_expose_callback.
-
-2003-02-17  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (this_command_key_count_reset): New variable.
-       Initiatize to 0 where this_command_key_count is set.
-       (read_char): Save and restore this_command_key_count_reset
-       around input method code.
-       (read_char): If this_command_key_count_reset, echo reread commands.
-       (Freset_this_command_lengths): Set this_command_key_count_reset to 1.
-
-2003-02-17  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (string_to_multibyte): Always return a multibyte string.
-
-2003-02-16  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (w32_list_bdf_fonts, w32_list_fonts):
-       Negative max_fonts parameter means list all.
-
-2003-02-14  Dave Love  <fx@gnu.org>
-
-       * fns.c (Flanginfo): Doc fix.
-
-2003-02-13  Kim F. Storm  <storm@cua.dk>
-
-       * lread.c (read_escape): Interpret \s as a SPACE character, except
-       for \s-X in a character constant which still is the super modifier.
-       (read1): Signal an `invalid read syntax' error if a character
-       constant is immediately followed by a digit or symbol character.
-
-       * search.c (Fmatch_data): Doc fix.  Explicitly state that
-       match-data is undefined if last search failed.
-
-       * keymap.c (Fcommand_remapping): Rename from Fremap_command.
-       All uses changed.
-
-2003-02-12  Juanma Barranquero  <lektu@terra.es>
-
-       * eval.c (Fdefmacro): Fix typo.
-
-2003-02-12  Kim F. Storm  <storm@cua.dk>
-
-       * macros.c (Fstart_kbd_macro): If appending, and last keyboard
-       macro is a string, convert meta modifiers in string when copying
-       the string into a vector.
-
-2003-02-11  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (Fremap_command): Return nil if arg is not a symbol.
-
-2003-02-11  Kenichi Handa  <handa@m17n.org>
-
-       * Makefile.in (lisp, shortlisp): Add malayalam.el and tamil.el.
-
-2003-02-10  Kim F. Storm  <storm@cua.dk>
-
-       * process.c: Doc fixes.
-       (syms_of_process): Add `:' prefix to QCfilter_multibyte.
-
-2003-02-10  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (Fstring_to_multibyte): Fix typo in the docstring.
-
-       * process.c (QCfilter_multibyte): New variable.
-       (setup_process_coding_systems): New function.
-       (Fset_process_buffer, Fset_process_filter):
-       Call setup_process_coding_systems.
-       (Fstart_process): Initialize the member `filter_multibyte' of
-       struct Lisp_Process.
-       (create_process): Call setup_process_coding_systems.
-       (Fmake_network_process): New keyward `:filter-multibyte'.
-       Initialize the member `filter_multibyte' of struct Lisp_Process.
-       Call setup_process_coding_systems.
-       (server_accept_connection): Call setup_process_coding_systems.
-       (read_process_output): If the process has a filter, decide the
-       multibyteness of a string to given to the filter by
-       `filter_multibyte' member of the process.  If the process doesn't
-       have a filter and the result of conversion is unibyte, use
-       Fstring_to_multibyte (not Fstring_make_multibyte) to get the
-       multibyte form.
-       (Fset_process_coding_system): Call setup_process_coding_systems.
-       (Fset_process_filter_multibyte): New function.
-       (Fprocess_filter_multibyte_p): New function.
-       (syms_of_process): Intern and staticpro QCfilter_multibyte.
-       Defsubr Sset_process_filter_multibyte and
-       Sprocess_filter_multibyte_p.
-
-       * process.h (struct Lisp_Process): New member filter_multibyte.
-
-       * lisp.h (setup_process_coding_systems): Add prototype.
-
-       * buffer.c (Fset_buffer_multibyte): If the current buffer has a
-       process, update coding systems for the process.
-
-2003-02-09  Kenichi Handa  <handa@m17n.org>
-
-       * fns.c (string_to_multibyte): New function.
-       (Fstring_to_multibyte): New function.
-       (syms_of_fns): Defsubr it.
-
-2003-02-08  Andreas Schwab  <schwab@suse.de>
-
-       * Makefile.in (EXEEXT): Define to @EXEEXT@ and use this variable
-       instead of the substitution.
-
-2003-02-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_make_frame_visible): Call gtk_window_deiconify.
-
-       * xmenu.c (menu_position_func): Adjust menu popup position so that
-       the menu is fully visible.
-
-2003-02-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (x_text_icon, x_raise_frame, x_lower_frame)
-       (x_make_frame_invisible, x_wm_set_icon_position):
-       Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif.
-
-       * xfns.c (x_set_name, x_set_title): Ditto.
-
-2003-02-04  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (echo_now): Update before_command_echo_length.
-       (Freset_this_command_lengths): Reset this_command_key_count etc.
-       immediately rather than arranging to do it later.
-       (before_command_key_count_1, before_command_echo_length_1)
-       (before_command_restore_flag): Vars deleted.
-       (add_command_key): Don't handle before_command_restore_flag.
-       (read_char, record_menu_key): Don't update before_command_key_count or
-       before_command_echo_length.
-       (read_char): Don't handle before_command_restore_flag.
-
-       * keyboard.c (command_loop_1): Don't call adjust_point_for_property
-       in direct-output clauses if it wouldn't be called in the ordinary case.
-
-2003-02-04  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (syms_of_keyboard) <this-original-command>: Doc fix.
-
-2003-02-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (remove_from_container): Copying list is not needed.
-       (xg_update_menubar, xg_update_menu_item, xg_update_submenu)
-       (xg_modify_menubar_widgets, update_frame_tool_bar): Call g_list_free
-       on list returned from gtk_container_get_children to avoid memory leak.
-
-2003-02-01  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (w32_create_pixmap_from_bitmap_data): Use alloca for
-       local malloc.
-       [HAVE_XPM]: Avoid clashes with XColor, XImage and Pixel
-       definitions in xpm.h.
-       (init_xpm_functions): New function.
-       (xpm_load): Sync with xfns.c.  Adapt for Windows version of libXpm.
-       (init_external_image_libraries): Try to load libXpm.dll.
-
-       * fileio.c (Fcopy_file) [WINDOWSNT]: Reverse logic for setting
-       timestamp.
-
-2003-01-31  Dave Love  <fx@gnu.org>
-
-       * syntax.c (Fskip_chars_forward)
-       (open-paren-in-column-0-is-defun-start): Doc fix.
-
-2003-01-31  Joe Buehler  <jhpb@draco.hekimian.com>
-
-       * fileio.c: Support // at start of name for Cygwin (just added proper
-       preprocessor tests).
-
-       * keyboard.c: Port to Cygwin (just added proper preprocessor tests).
-
-       * Makefile.in: Use @EXEEXT@ for Cygwin.
-
-       * mem-limits.h: Added ifdef to define BSD4_2 for Cygwin.
-
-       * s/cygwin.h: Added for Cygwin port.
-
-2003-01-31  Juanma Barranquero  <lektu@terra.es>
-
-       * w32fns.c (DrawText): Kludge to avoid a redefinition on Windows
-       when including gif_lib.h.
-       (init_gif_functions, init_tiff_functions): New functions.
-       (gif_load, tiff_load): Sync with xfns.c version.  Adjust colors for
-       Windows.  Disable color table lookups.  Call library functions
-       through pointers determined at runtime.
-       (init_external_image_libraries): Try to load libungif.dll and
-       libtiff.dll.
-
-2003-01-31  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (SKIP_GLYPHS): New macro.
-       (set_cursor_from_row): Skip all glyphs that comes from overlay string.
-
-2003-01-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (free_frame_tool_bar): Remove debug printf.
-
-2003-01-30  Dave Love  <fx@gnu.org>
-
-       * alloc.c (Vgc_elapsed, gcs_done): New variables.
-       (Fgarbage_collect): Use them.
-       (init_alloc, syms_of_alloc): Set them up.
-
-2003-01-30  Juanma Barranquero  <lektu@terra.es>
-
-       * w32fns.c (init_external_image_libraries): Add missing operator.
-
-2003-01-29  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (init_external_image_libraries): Allow jpeg-62.dll as
-       an alternative name for jpeg.dll.
-
-2003-01-29  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (set_cursor_from_row): Pay attention to string display
-       properties.
-
-2003-01-28  Benjamin Riefenstahl  <Benjamin.Riefenstahl@epost.de>
-
-       * macterm.c (keycode_to_xkeysym_table): Add <tab>, <backspace>,
-       <escape>.
-       (keycode_to_xkeysym_table): Reformat and add more comments.
-       (XTread_socket): Drop special case for backspace.
-
-2003-01-28  Andrew Choi  <akochoi@shaw.ca>
-
-       * macfns.c (x_to_mac_color): Correct the order for parsing the RGB
-       values in old-style RGB specs.
-
-2003-01-27  Juanma Barranquero  <lektu@terra.es>
-
-       * w32fns.c (init_external_image_libraries): Try alternate names for the
-       jpeg dll.
-
-2003-01-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (create_dialog, xg_separator_p)
-       (xg_item_label_same_p, xg_update_menu_item): Check for NULL string
-       before calling strcmp or strlen.
-
-2003-01-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (update_frame_tool_bar): Call prepare_image_for_display
-       and handle image load failure.
-
-2003-01-26  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (init_jpeg_functions, jpeg_resync_to_restart_wrapper):
-       New functions.
-       (jpeg_load): Sync with xfns.c version.  Adjust colors for Windows.
-       Disable color table lookups.  Call jpeg library functions
-       through pointers determined at runtime.
-       (init_external_image_libraries): Try to load jpeg.dll.
-
-2003-01-25  Richard M. Stallman  <rms@gnu.org>
-
-       * lisp.h: Declare format2 instead of format1.
-
-       * fileio.c (barf_or_query_if_file_exists):
-       Call format2 instead of format1.
-
-       * editfns.c (format2): New function, replaces format1
-       but takes exactly two Lisp Objects as format args.
-
-       * buffer.c (Fkill_buffer): Call format2 instead of format1.
-
-2003-01-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h: Change to return value of x_dispatch_event to int.
-
-       * xterm.c (x_filter_event): New function.
-       (event_handler_gdk, XTread_socket): Call x_filter_event.
-       (x_dispatch_event): Change to return value of finish.
-       (event_handler_gdk): Use return value from x_dispatch_event.
-
-       * xfns.c (x_window): Call create_frame_xic for GTK version to
-       initialize input methods.
-
-       * gtkutil.h: Add (void) prototypes.
-
-       * gtkutil.c (create_menus): Remove code that puts the help menu to
-       the right.
-
-2003-01-25  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (XPutPixel): Handle monochrome images; used for masks.
-       [HAVE_PNG]: Sync with xfns.c version.
-       (png_load): Adjust colors for Windows.  Use Windows
-       bitmaps.  Disable color table lookups.
-       (DEF_IMGLIB_FN, LOAD_IMGLIB_FN): New macros.
-       (init_png_functions): New function.
-       (png_read_from_memory, png_load): Call png library functions
-       through pointers determined at runtime.
-       (QCloader, QCbounding_box, QCpt_width, QCpt_height): Declare.
-       (init_external_image_libraries): New function.
-       (init_xfns): Call it.
-
-2003-01-24  Andreas Schwab  <schwab@suse.de>
-
-       * minibuf.c (Fminibuffer_message): Verify type of parameter.
-
-2003-01-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_initialize): Initialize id_to_widget here instead
-       of static initializer.
-
-2003-01-24  Dave Love  <fx@gnu.org>
-
-       * s/gnu-linux.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define for more
-       architectures.
-
-       * alloc.c (mark_stack) [!GC_LISP_OBJECT_ALIGNMENT && __GNUC__]:
-       Use __alignof__.
-
-2003-01-24  Kenichi Handa  <handa@m17n.org>
-
-       * keyboard.c (adjust_point_for_property): New second arg MODIFIED.
-       It it is nonzero, don't pretend that an invisible area doesn't exist.
-       (command_loop_1): Call adjust_point_for_property with proper
-       second arg.
-
-2003-01-22  Jason Rumney  <jasonr@gnu.org>
-
-       Sync changes with xterm.c and xfns.c.
-
-       * w32term.c (x_draw_glyph_string_foreground)
-       (x_draw_composite_glyph_string_foreground): Implement overstriking.
-
-       * w32term.c (x_write_glyphs): Clear phys_cursor_on_p if current
-       phys_cursor's hpos is overwritten.  This is still not completely
-       correct, as it doesn't really make sense to use hpos at all to
-       get the cursor glyph (as that is relative to the width of the
-       characters on the line, which may have changed during the update).
-
-       * w32term.c (notice_overwritten_cursor): Handle the special case
-       of the cursor being in the first blank non-text line at the
-       end of a window.
-
-       * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor)
-       (x_draw_phys_cursor_glyph): Set phys_cursor_width here.
-       Compute from the x position returned by x_draw_glyphs.
-
-       (x_display_and_set_cursor): Don't set phys_cursor_width here,
-       except for NO_CURSOR and system caret, to make phys_cursor_width
-       contain what its name suggests.
-       (notice_overwritten_cursor): Consider the cursor image erased if
-       the output area intersects the cursor image in y-direction.
-
-       * w32term.c (note_mode_line_or_margin_highlight): Rename from
-       note_mode_line_highlight and extend.
-
-       * w32term.c (last_window): New variable.
-       (w32_read_socket) <WM_MOUSEMOVE>: Generate SELECT_WINDOW_EVENTs.
-       (note_mouse_movement): Remove reimplemented code in #if 0.
-
-       * w32fns.c (x_set_cursor_type): Set cursor_type_changed,
-       not update_mode_lines, and always set it to 1.
-
-2003-01-21  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (IDC_HAND): Define it if system headers don't.
-
-2003-01-21  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
-
-       * w32term.h (struct w32_output): New member hand_cursor.
-       (WM_EMACS_SETCURSOR): New message definition.
-
-       * w32term.c (note_mode_line_highlight): Delete #if 0 to enable
-       function w32_define_cursor.
-       (note_mouse_highlight): Initialize, setup cursor accoding to mouse
-       position, change member name output_data.x to output_data.w32 and
-       add function w32_define_cursor.
-       (show_mouse_face): Delete #if 0 to enable function w32_define_cursor
-       and change member name output_data.x to output_data.w32.
-       (w32_initialize_display_info):
-       Setup dpyinfo->vertical_scroll_bar_cursor.
-
-       * w32fns.c (Vx_hand_shape): New variable.
-       (w32_wnd_proc): Add message entries for WM_SETCURSOR and
-       WM_EMACS_SETCURSOR.
-       (x-create-frame): Setup Cursor types.
-
-2003-01-21  David Ponce  <david@dponce.com>
-
-       * w32term.c (w32_encode_char): For DIM=1 charset, set
-       ccl->reg[2] to -1 before calling ccl_driver.
-       (Sync. with xterm.c x_encode_char change by Kenichi Handa
-       <handa@m17n.org> on 2002-09-30.)
-       (w32_draw_relief_rect): Declare all args.
-       (w32_define_cursor): New.
-
-       * w32fns.c (w32_load_cursor): New function.
-       (w32_init_class): Use it.
-       (x_put_x_image): Declare all args.
-
-2003-01-21  Richard Dawe  <rich@phekda.freeserve.co.uk>
-
-       * Makefile.in (ALL_CFLAGS): Include MYCPPFLAGS, not MYCPPFLAG.
-
-2003-01-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c: Must include stdio.h before termhooks.h.
-
-2003-01-21  Dave Love  <fx@gnu.org>
-
-       * alloc.c (Fgc_status): Print zombie list.
-       (mark_maybe_object) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]:
-       Fix assignment of zombies.
-       (Fgarbage_collect) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]:
-       Don't take car of non-cons.
-
-       * s/sol2-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define.
-
-       * s/sunos4-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define.
-
-2003-01-20  David Ponce  <david@dponce.com>
-
-       * w32menu.c (digest_single_submenu): Declare all args.
-
-       Sync with 2002-12-23  Richard M. Stallman  <rms@gnu.org>
-       changes in xmenu.c:
-
-       (parse_single_submenu): Use individual keymap's prompt
-       string as pane name, if there is one.
-       (set_frame_menubar): Save menu_items_n_panes from each call to
-       parse_single_submenu and use it when calling digest_single_submenu.
-
-2003-01-20  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (XTread_socket): Check for valid, visible window
-       before sending a scroll-wheel event.
-
-2003-01-20  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (redisplay_window): If mini window's buffer is not
-       a minibuffer, then redisplay it like other windows.
-
-2003-01-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * gtkutil.c (xg_create_frame_widgets): Check if there is an
-       external tool bar before setting tool bar height.
-
-2003-01-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (handle_one_xevent): Surround popup_activated
-       with #ifdef:s for non-toolkit version.
-
-       * Makefile.in (XOBJ): Add gtkutil.o if USE_GTK.
-       (gtkutil.o): New file.
-       (TOOLKIT_DEFINES): Set to -DUSE_GTK if HAVE_GTK.
-       (LIBW): Set to @GTK_LIBS@ if USE_GTK.
-
-       * gtkutil.c: New file for GTK version.
-
-       * gtkutil.h: New file for GTK version.
-
-       * xterm.h: Add xt_or_gtk_widget.
-       Include gtk files for USE_GTK.
-       (struct x_output): Add toolbar_height.
-       (struct x_output): Add GTK widgets and Gdk size_hints.
-       (GTK_WIDGET_TO_X_WIN, FRAME_GTK_OUTER_WIDGET, FRAME_GTK_WIDGET)
-       (FRAME_OUTER_WINDOW): New macros for USE_GTK.
-       (FRAME_OUTER_TO_INNER_DIFF_Y): Add FRAME_TOOLBAR_HEIGHT to calculation.
-
-       * xterm.c: Include gtkutil.h for USE_GTK.
-       (free_frame_menubar): Declare extern void for USE_GTK.
-       (note_mouse_highlight): Check popup_activated for USE_GTK.
-       (xt_action_hook): Don't compile if USE_GTK.
-       (x_scroll_bar_to_input_event): Use CurrentTime for USE_GTK.
-       (xg_scroll_callback): New function.
-       (x_create_toolkit_scroll_bar): Call xg_create_scroll_bar for USE_GTK.
-       (x_set_toolkit_scroll_bar_thumb): Call xg_set_toolkit_scroll_bar_thumb
-       for USE_GTK.
-       (x_scroll_bar_create): Call xg_update_scrollbar_pos and
-       xg_show_scroll_bar for USE_GTK.
-       (x_scroll_bar_remove): Call xg_remove_scroll_bar for USE_GTK.
-       (XTset_vertical_scroll_bar): Call xg_update_scrollbar_pos for USE_GTK.
-       (event_handler_gdk): New function for USE_GTK.
-       (handle_one_xevent): Call xg_resize_widgets for USE_GTK.
-       (handle_one_xevent): Make sure widget is mapped before
-       calling x_real_positions for USE_GTK.
-       (XTread_socket): Add GTK event loop for USE_GTK.
-       (x_set_window_size): Call xg_frame_set_char_size for USE_GTK.
-       (x_make_frame_visible): Call gtk_widget_show_all for USE_GTK.
-       (x_make_frame_invisible): Call gtk_widget_hide for USE_GTK.
-       (x_iconify_frame): Add code for USE_GTK.
-       (x_free_frame_resources): Call gtk_widget_destroy for USE_GTK.
-       (x_wm_set_size_hint): Only compile if not USE_GTK.  GTK version
-       is in gtkutil.c.
-       (x_term_init): Add initialization for GTK.
-       (syms_of_xterm): Set Vx_toolkit_scroll_bars for USE_GTK.
-
-       * xmenu.c: Include gtkutil.h for USE_GTK.
-       (Fx_popup_menu): Use current position if x and y are nil.
-       (single_menu_item, single_menu_item, Fx_popup_dialog):
-       Check for USE_GTK.
-       (popup_widget_loop): New function for USE_GTK.
-       (x_activate_menubar): Add code for USE_GTK.
-       (popup_activate_callback, popup_deactivate_callback)
-       (menu_highlight_callback, menubar_selection_callback):
-       Add USE_GTK versions.
-       (update_frame_menubar): Call xg_update_frame_menubar for USE_GTK.
-       (set_frame_menubar): Call xg_modify_menubar_widgets for USE_GTK.
-       (free_frame_menubar): Only compile if not USE_GTK.  GTK version
-       is in gtkutil.c.
-       (popup_selection_callback): New version for USE_GTK.
-       (create_and_show_popup_menu): New fuction, one USE_GTK version and
-       one USE_X_TOOLKIT version.
-       (xmenu_show): Call create_and_show_popup_menu.
-       (dialog_selection_callback): New version for USE_GTK.
-       (create_and_show_dialog): New fuction, one USE_GTK version and
-       one USE_X_TOOLKIT version.
-       (xdialog_show): Call create_and_show_dialog.
-
-       * xfns.c: Include gtkutil for USE_GTK.
-       (x_window_to_frame, x_any_window_to_frame)
-       (x_non_menubar_window_to_frame, x_menubar_window_to_frame)
-       (x_top_window_to_frame): Add code for USE_GTK.
-       (x_set_background_color): Call xg_set_background_color for GTK.
-       (x_set_menu_bar_lines): Check for USE_GTK.
-       (x_set_tool_bar_lines): Call update_frame_tool_bar for USE_GTK.
-       (x_set_name, x_set_title): Call gtk_window_set_title for USE_GTK.
-       (x_window): Call xg_create_frame_widgets for USE_GTK.
-       (Fx_create_frame): Check for USE_GTK.
-       (Fx_file_dialog): New implementation for USE_GTK.
-
-       * xdisp.c: Add check for USE_GTK for extern void set_frame_menubar.
-       (update_menu_bar): Add check for USE_GTK.
-       (update_tool_bar): Add check for USE_GTK and external tool bar.
-       (redisplay_tool_bar): Add check for USE_GTK and external tool bar.
-       (redisplay_internal): Add check for USE_GTK and popup_activated.
-       (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_MENU_BAR.
-       (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_TOOL_BAR.
-       (display_menu_bar): Add check for USE_GTK
-
-       * lisp.h (Vx_resource_name): Declare extern.
-
-       * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT
-       for USE_GTK.
-       (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK.
-
-       * frame.h (struct frame): Add external_tool_bar.  Check for USE_GTK.
-       (FRAME_EXTERNAL_TOOL_BAR): New macro.
-       (FRAME_EXTERNAL_MENU_BAR): Check for USE_GTK.
-
-       * fileio.c (Fread_file_name): Add check for USE_GTK.
-
-       * dispnew.c (adjust_frame_glyphs_for_window_redisplay):
-       Add check for USE_GTK.
-
-       * config.in: Added HAVE_GTK.
-
-       * alloc.c (Fgarbage_collect): Call xg_mark_data for GTK.
-
-2003-01-18  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * charset.h (Funibyte_char_to_multibyte): Export.
-
-2003-01-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xmenu.c (mouse_position_for_popup): New function.
-       (Fx_popup_menu): Call mouse_position_for_popup for X and
-       mouse_position_hook for others.
-
-2003-01-17  Kim F. Storm  <storm@cua.dk>
-
-       * editfns.c (Finsert): Mention `string-make-multibyte' and
-       `string-as-multibyte' in doc string.
-
-2003-01-17  Kenichi Handa  <handa@m17n.org>
-
-       * fontset.c (syms_of_fontset): Setup Vfont_encoding_alist here.
-
-       * editfns.c (Fformat): Convert an unibyte char argument that is
-       formatted by "%c" to multibyte if the total result must be a
-       multibyte string.
-
-2003-01-16  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (set-process-filter): Document unibyte/multibyte-ness
-       of string argument.
-
-2003-01-16  Kenichi Handa  <handa@m17n.org>
-
-       * charset.h (NEXT_CHAR_BOUNDARY, PREV_CHAR_BOUNDARY): New macros.
-
-       * regex.c (GET_CHAR_BEFORE_2): Use PREV_CHAR_BOUNDARY.
-       (re_search_2): Likewise.
-
-2003-01-15  Kenichi Handa  <handa@m17n.org>
-
-       * xdisp.c (message_dolog): Fix bug of the case that *Message*
-       buffer is unibyte.
-
-2003-01-15  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * fns.c (Fsubstring): Clarify doc string.
-
-       * textprop.c (Ftext_properties_at, Fnext_char_property_change)
-       (Fprevious_char_property_change)
-       (Fnext_single_char_property_change)
-       (Fprevious_single_char_property_change, Fnext_property_change)
-       (Fnext_single_property_change, Fprevious_property_change)
-       (Fprevious_single_property_change, Fadd_text_properties)
-       (Fput_text_property, Fset_text_properties)
-       (Fremove_text_properties, Fremove_list_of_text_properties)
-       (Ftext_property_any, Ftext_property_not_all): Clarify doc strings.
-
-2003-01-14  Kim F. Storm  <storm@cua.dk>
-
-       * process.h (struct Lisp_Process): New member plist replaces old
-       member private_vars.  All uses changed.
-
-       * process.c: Reworked 2003-01-12 change -- call a plist a plist!
-       (QCplist): Rename from QCvars.  Change all uses.
-       (Fprocess_plist): Replaces Fprocess_variable.  Simplified.
-       (Fset_process_plist): Replaces Fset_process_variable.  Simplify.
-       (syms_of_process): Intern, staticpro, defsubr these.
-       (Fmake_network_process): Describe :plist arg.  Remove :vars arg.
-
-2003-01-14  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * m/delta.h: Remove (obsolete).
-
-2003-01-13  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * fileio.c (Fdelete_directory, Fdelete_file): Document the
-       behaviour in front of symlinks.
-       (Fdelete_file): Raise an error on directories.
-
-2003-01-13  Dave Love  <fx@gnu.org>
-
-       * fns.c (Freverse): Use QUIT.
-
-2003-01-13  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.c (minibuffer_completion_contents):
-       Error if point is inside prompt.
-
-       * keyboard.c (command_loop_1): Don't redisplay directly
-       if there's a post-command-hook.
-
-       * fileio.c (syms_of_fileio) <directory-sep-char>: Doc fix.
-       (Fdo_auto_save): Add gcpros around Ffile_name_directory.
-
-2003-01-12  Kim F. Storm  <storm@cua.dk>
-
-       * process.h (struct Lisp_Process): New member private_vars.
-
-       * process.c (QCvars): New variable.
-       (syms_of_process): Intern and staticpro it.
-       (Fset_process_contact): Removed function.
-       (Fprocess_variable, Fset_process_variable): New functions.
-       (syms_of_process): Defsubr them.
-       (Fstart_process): Initialize private_vars plist to nil.
-       (Fmake_network_process): New arg :vars to setup the private
-       variables for new network process.
-       (server_accept_connection): Copy server's private variables to
-       client process.
-
-       * alloc.c (pure_alloc): Fixed 2003-01-10 changed (caused spurious
-       crashes).  Code rewritten and simplified.  Now directly aligns the
-       pointer and recalculates pure_bytes_used, rather than aligning the
-       size and adjusting the pointer.
-
-2003-01-11  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fset_process_contact): New function.
-       (syms_of_process): defsubr it.
-       (make-network-process): Update doc.
-
-2003-01-10  Andreas Schwab  <schwab@suse.de>
-
-       * alloc.c (pure_alloc): Correct alignment for Lisp_Floats.
-       Reported by Berthold Gunreben <b.gunreben@web.de>.
-
-2003-01-10  Dave Love  <fx@gnu.org>
-
-       * composite.c (syms_of_composite): Make composition_hash_table weak.
-
-2003-01-09  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fmake_network_process): Convert new port number
-       to host byte order for `:service t' case.  From Mario Lang.
-
-2003-01-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (Fx_file_dialog): Call XtAppNextEvent and x_dispatch_event
-       instead of XtAppProcessEvent.
-
-       * xterm.c (handle_one_xevent): New function.
-       (x_dispatch_event): New function.
-       (XTread_socket): Call handle_one_xevent.
-
-       * xterm.h (FRAME_OUTER_TO_INNER_DIFF_X/Y): New.
-
-       * xmenu.c (Fx_popup_menu): If popping up at mouse position,
-       call XQueryPointer to get coordinates.
-       (popup_get_selection): Do not set popup_activated_flag to zero,
-       let popup_deactivate_callback do that.  Needed for Motif.
-       Call x_dispatch_event instead of XtDispatchEvent.
-       (xmenu_show): Calculate root coordinate from frame top/left position.
-
-2003-01-08  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (server_accept_connection): Fix recording of new
-       connection's local address in :local property of contact info.
-       (Fmake_network_process): Record local network address for new
-       client processes in :local property of contact info.
-       (format-network-address): Add arg OMIT-PORT.  Change callers.
-
-2003-01-07  Dave Love  <fx@gnu.org>
-
-       * Makefile.in (fns.o): Depend on coding.h.
-
-2003-01-06  Dave Love  <fx@gnu.org>
-
-       * fns.c: Include coding.h.  Use POINTER_TYPE*, not void*.
-       (Vlocale_coding_system): Declare.
-       (Qcodeset, Qdays, Qmonths, Qpaper): New.
-       (Flanginfo): New.
-       (syms_of_fns): Initialize new stuff.
-
-2003-01-07  Markus Rost  <rost@math.ohio-state.edu>
-
-       * minibuf.c (Fread_variable): Doc fix.
-
-       * eval.c (Fuser_variable_p): Doc change.  For custom variables,
-       use the same test as for custom-variable-p.
-
-2003-01-05  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (try_scrolling): New arg LAST_LINE_MISFIT.
-       Count LAST_LINE_MISFIT in scroll margin for end of window.
-       Move label too_near_end before setting SCROLL_MARGIN_POS.
-       Set LAST_LINE_MISFIT before jumping there.
-
-       * xdisp.c (try_scrolling): Calculate amount_to_scroll better in
-       scroll_conservatively case.  If scrolling that much doesn't change
-       STARTP, move it down one line.
-
-       * xdisp.c (redisplay_window): Pass last_line_misfit arg to
-       try_scrolling.  Make it 1 after make_cursor_line_fully_visible fails.
-
-       * xdisp.c (setup_echo_area_for_printing): Kill Emacs if no
-       selected frame.
-
-       * keymap.c (apropos_predicate, apropos_accumulate): Make them static.
-       (syms_of_keymap): Staticpro them.
-       (Fapropos_internal): Initialize them and clear them out.
-       Don't GCPRO them.
-
-       * buffer.c (syms_of_buffer) <scroll-up|down-aggressively>: Doc fixes.
-
-       * lisp.h: New misc type Lisp_Save_Value.
-       (enum Lisp_Misc_Type): Add Lisp_Misc_Save_Value.
-       (XSAVE_VALUE): New macro.
-       (struct Lisp_Save_Value): New data type.
-       (union Lisp_Misc): Add u_save_value alternative.
-       (make_save_value): Declare.
-
-       * alloc.c (make_save_value): New function.
-
-       * xterm.c (x_catch_errors): Save dpy using make_save_value.
-       (x_catch_errors_unwind): Call XSync.
-
-2003-01-01  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (window_scroll_pixel_based): Partially undo last change.
-
-       * keyboard.c (command_loop_1): Call adjust_point_for_property
-       in direct action cases for Qforward_char and Qbackward_char.
-       Set already_adjusted so it won't be done twice.
-
-2002-12-30  Richard Dawe  <rich@phekda.freeserve.co.uk>
-
-       * src/config.in (!HAVE_SIZE_T): Fix order of arguments in
-       type definition of size_t.
-
-2003-01-02  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (syms_of_macterm): Provide the feature "mac-carbon" to
-       distinguish Carbon GUI builds from X11 builds on darwin.
-
-2002-12-30  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (syms_of_macterm): Set mac-wheel-button-is-mouse-2
-       to default to t.
-
-2002-12-29  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * data.c (Fstring_to_number, Fminus): Better English in doc strings.
-
-2002-12-28  Steven Tamm  <steventamm@mac.com>
-
-       * Makefile.in (macosx-bundle): Fix Mac OS X/Carbon port to
-       allow building in a different directory than source.  Uses some
-       GNU Make extensions, but there is no other make on Mac OS X.
-
-2002-12-26  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * data.c (Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
-       (Fsetq_default, Fmake_local_variable, Fkill_local_variable)
-       (Fmake_variable_frame_local, Faset, Fnumber_to_string, Fminus)
-       (Fstring_to_number): Mention the returned value in the doc strings.
-
-2002-12-23  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer) <scroll-up-aggressively>
-       <scroll-down-aggressively>: Doc fix.
-
-       * xmenu.c (parse_single_submenu): Use individual keymap's prompt
-       string as pane name, if there is one.
-       (set_frame_menubar): Save menu_items_n_panes from each call to
-       parse_single_submenu and use it when calling digest_single_submenu.
-
-       * window.c (window_scroll_pixel_based): Fix check for reaching BEGV.
-       Don't try to make last line fully visible if it is past end of window.
-
-2002-12-22  Steven Tamm  <steventamm@mac.com>
-
-       * macmenu.c (MIN_POPUP_SUBMENU_ID): Add.
-       (mac_menu_show): Add support for hierarchical popup menus.
-       (add_menu_item): Remove indentation support.
-       (fill_submenu, fill_menu): Create hierarchical menus
-       instead of using indentation.
-
-2002-12-22  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (try_cursor_movement): Don't call try_window here.
-       (redisplay_window): Never redisplay minibuffer when inactive.
-
-       * window.c (select_window_1): Undo 9/21 change.
-
-2002-12-22  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (XTread_socket): Call KeyTranslate for control and
-       meta to deal correctly shifted non-alpha characters, like C-S-5
-       being treated like C-%.  Do not look for shift key to deal
-       with masking off control-key with mac-reverse-ctrl-meta.
-
-2002-12-21  Richard M. Stallman  <rms@gnu.org>
-
-       * xmenu.c (popup_get_selection): Now static.  New arg DO_TIMERS.
-       If it is non-nil, run timers.  Use an unwind-protect to requeue
-       the events that were read ahead.
-       (popup_get_selection_unwind): New subroutine.
-       (popup_get_selection_queue): File-scope variable now holds that queue.
-       (xmenu_show): Pass 0 for DO_TIMERS to popup_get_selection.
-       (xdialog_show): Pass 1 for DO_TIMERS to popup_get_selection.
-       Use an unwind-protect to pop down the dialog box.
-       (xdialog_show_unwind): New subroutine implements that.
-
-       * xdisp.c (row_containing_pos): Change exit test using last_y.
-       (try_window_id): Abort if row_containing_pos returns null.
-
-       * lread.c (load_error_handler): New function.
-       (Fload): Handle errors in Fsubstitute_in_file_name.
-       Don't expect Fsignal to return.
-
-       * eval.c: Errors and throws work right with interrupt blocking.
-       (struct catchtag): New elt interrupt_input_blocked.
-       (unwind_to_catch): Restore interrupt_input_blocked from saved value.
-       (internal_catch, Fcondition_case, internal_condition_case)
-       (internal_condition_case_1, internal_condition_case_2): Save it.
-       (Fsignal): Don't do TOTALLY_UNBLOCK_INPUT.
-
-       * editfns.c (Fformat): Add parens.
-
-       * dired.c (file_name_completion): Fix that change.
-       Delete special quit-handling code; just use QUIT.
-
-2002-12-21  Tak Ota  <Takaaki.Ota@am.sony.com>
-
-       * dired.c (file_name_completion): Close directory on error
-       just as in directory_files_internal.
-
-2002-12-19  David Kastrup  <David.Kastrup@t-online.de>
-
-       * window.c (Fset_window_configuration): Set old_point to correct
-       value when new_current_buffer == current_buffer.
-
-2002-12-17  Ben Key  <bkey1@tampabay.rr.com>
-
-       Revisited my earlier fix for the following entry in etc/PROBLEMS:
-       "Emacs built on Windows 9x/ME crashes at startup on Windows XP,
-       or Emacs builtpart of on XP crashes at startup on Windows 9x/ME."
-
-       These changes were in part based upon suggestions made by Peter
-       'Luna' Runestig [peter@runestig.com].
-
-       * w32.c (g_b_init_is_windows_9x, g_b_init_open_process_token)
-       (g_b_init_get_token_information, g_b_init_lookup_account_sid)
-       (g_b_init_get_sid_identifier_authority ): Add several static
-       global variables.
-
-       * w32.c (globals_of_w32): New function.  Used to initialize those
-       global variables that must always be initialized on startup even
-       when the global variable initialized is non zero.  Its primary
-       purpose at this time is to set the global variables
-       g_b_init_is_windows_9x, g_b_init_open_process_token,
-       g_b_init_get_token_information, g_b_init_lookup_account_sid, and
-       g_b_init_get_sid_identifier_authority to 0 on startup.
-       Called from main.
-
-       * w32.c (is_windows_9x): Perform initialization only if
-       g_b_init_is_windows_9x is equal to 0.  On initialization set
-       g_b_init_is_windows_9x equal to 1.
-
-       * w32.c (open_process_token): Perform initialization only if
-       g_b_init_open_process_token is equal to 0.  On initialization set
-       g_b_init_open_process_token equal to 1.
-
-       * w32.c (get_token_information): Perform initialization only if
-       g_b_init_get_token_information is equal to 0.  On initialization
-       set g_b_init_get_token_information equal to 1.
-
-       * w32.c (lookup_account_sid): Perform initialization only if
-       g_b_init_lookup_account_sid is equal to 0.  On initialization
-       set g_b_init_lookup_account_sid equal to 1.
-
-       * w32.c (get_sid_identifier_authority): Perform initialization
-       only if g_b_init_get_sid_identifier_authority is equal to 0.
-       On initialization set g_b_init_get_sid_identifier_authority equal to 1.
-
-       * w32fns.c (globals_of_w32fns): New function.  Used to initialize
-       those global variables that must always be initialized on startup
-       even when the global variable initialized is non zero.
-       Its primary purpose at this time is to initialize the global variable
-       track_mouse_event_fn.
-
-       * w32fns.c (w32_wnd_proc): Remove initialization of
-       track_mouse_event_fn from the handler for the WM_SETFOCUS message.
-
-       * w32fns.c (syms_of_w32fns): Call globals_of_w32fns.
-
-       * w32menu.c (globals_of_w32menu): New function.  Used to
-       initialize those global variables that must always be initialized
-       on startup even when the global variable initialized is non zero.
-       Its primary purpose at this time is to initialize the global
-       variables get_menu_item_info and set_menu_item_info.
-
-       * w32menu.c (initialize_frame_menubar): Remove initialization of
-       get_menu_item_info and set_menu_item_info.
-
-       * w32menu.c (syms_of_w32menu): Call globals_of_w32menu.
-
-       * w32.h (globals_of_w32, globals_of_w32fns, globals_of_w32menu):
-       Declare them.
-
-       * emacs.c (main): Call globals_of_w32 prior to calling
-       init_environment if WINDOWSNT is defined.  Call globals_of_w32fns
-       and globals_of_w32menu if initialized is non zero and HAVE_NTGUI
-       is defined.
-
-       * w32term.c (x_update_window_begin): Fix Windows API error
-       detected by BoundsChecker.  Test to determine if
-       w32_system_caret_hwnd is NULL prior to attempting to use
-       SendMessage to send the WM_EMACS_HIDE_CARET message to it.
-
-       * w32term.c (x_update_window_end): Fix Windows API error
-       detected by BoundsChecker.  Test to determine if
-       w32_system_caret_hwnd is NULL prior to attempting to use
-       SendMessage to send the WM_EMACS_SHOW_CARET message to it.
-
-2002-12-17  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (coding_system_require_warning): New variable.
-       (syms_of_coding): DEFVAR it.
-
-       * coding.h (coding_system_require_warning): Extern it.
-
-       * fileio.c (choose_write_coding_system): Even if
-       Vcoding_system_for_write is non-nil, if
-       coding_system_require_warning is nonzero, call
-       Vselect_safe_coding_system_function.
-
-2002-12-17  Markus Rost  <rost@math.ohio-state.edu>
-
-       * Makefile.in (lisp, shortlisp): Add cus-face and timer.
-       (lisp): Add font-core.
-
-2002-12-13  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * textprop.c (text_read_only): New arg `propval'.
-       (get_char_property_and_overlay): Remove unused var `next_overlay'.
-       (verify_interval_modification): Use text_read_only's new arg.
-
-2002-12-13  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (Funencodable_char_position): Set pend correctly.
-
-2002-12-12  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (last_mousemove_x, last_mousemove_y): New variables.
-       (w32_read_socket) <WM_MOUSEMOVE>: Use them to detect non-movement.
-       Be more careful about when help_events are generated.
-
-2002-12-12  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (mac_check_for_quit_char): Correctly set the
-       modifiers of the event to 0.
-       * mac.c (sys_select): Duplicate rfds before calling select to
-       ensure that rfds survive the while loop.
-
-2002-12-11  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (try_window_id): Don't call set_cursor_from_row if
-       row_containing_pos returned NULL.
-
-2002-12-10  Steven Tamm  <steventamm@mac.com>
-
-       * mac.c (sys_read): Fix sys_read to not call select if IO is
-       non-blocking.
-       (sys_select): Fix sys_select to not use a timeout larger than
-       the one given.
-
-2002-12-10  Juanma Barranquero  <lektu@terra.es>
-
-       * editfns.c (Fformat): Use alloca, not _alloca.
-
-2002-12-09  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (Fget_buffer_create): Call Qucs_set_table_for_input
-       as the last thing.
-
-2002-12-09  Dave Love  <fx@gnu.org>
-
-       * s/sol2-8.h: Removed.  (Not necessary.)
-
-2002-12-09  Matthew Swift  <swift@alum.mit.edu>
-
-       * editfns.c (Fformat): Handle precision in string conversion
-       specifiers like libc functions do (ie, print at most that many
-       characters).
-
-2002-12-08  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (row_containing_pos): Check more carefully
-       whether charpos is really in the row before returning it.
-
-2002-12-07  Steven Tamm  <steventamm@mac.com>
-
-       * sysdep.c (emacs_read) [HAVE_CARBON]: Have emacs_read use sys_read.
-
-       * eval.c (Feval) [HAVE_CARBON]: Calls mac_check_for_quit_char at
-       each stack frame.  This may change as it could be time consuming.
-
-       * macterm.c (mac_check_for_quit_char, quit_char_comp)
-       (init_quit_char_handler, mac_determine_quit_char_modifiers)
-       (mac_initialize): Add code to check for pressing of quit_char
-       in the OS event queue.
-
-       * mac.c (sys_select): Call mac_check_for_quit_char every second
-       while blocking on select.
-
-       * mac.c (sys_read): Use sys_select to test for input first
-       before calling read, to allow C-g to break.
-
-2002-12-07  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.c (Fcompleting_read): Doc fix.
-
-       * lread.c (syms_of_lread) <load-history>: Doc fix.
-
-       * fileio.c (Fcopy_file): Set immediate_quit around emacs_open call.
-
-       * eval.c (Fdefun, Fdefmacro): Record in load-history redefining an
-       autoload.
-
-       * data.c (Fdefalias): Record in load-history redefining an autoload.
-
-       * alloca.c: Undo ifdef change accidentally made on 12-04.
-
-2002-12-06  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * xfns.c (png_load): Avoid double gamma correction for PNG images.
-
-2002-12-04  Richard M. Stallman  <rms@gnu.org>
-
-       * sysdep.c (fcntl.h): Test only HAVE_FCNTL_H.
-
-       * fileio.c (fcntl.h): Test only HAVE_FCNTL_H.
-
-       * alloca.c: Don't use #error.
-
-2002-12-03  Dave Love  <fx@gnu.org>
-
-       * buffer.c (Qucs_set_table_for_input): New.
-       (Fget_buffer_create): Use it.
-       (Qset_buffer_major_mode_hook): Deleted.
-       (Fset_buffer_major_mode): Revert previous change.
-       (init_buffer_once): Intern ucs-set-table-for-input.
-       (syms_of_buffer): Delete Qset_buffer_major_mode_hook.
-       Add &Qucs_set_table_for_input.
-
-2002-12-03  Andreas Schwab  <schwab@suse.de>
-
-       * callint.c (Fcall_interactively): Use next_event only if less
-       than key_count.
-
-2002-12-02  Andrew Choi  <akochoi@shaw.ca>
-
-       * macmenu.c (add_menu_item, fill_menubar): Truncate menu item
-       names to 255 characters.
-
-       * macterm.c (XTread_socket): If all frames have been collapsed,
-       expand the first one before handling drag-and-drop events.
-
-       * s/darwin.h (GETPGRP_NO_ARG): Delete.  Replaced by GETPGRP_VOID,
-       which is detected by autoconf.
-
-2002-12-01  Steven Tamm  <steventamm@mac.com>
-
-       * unexmacosx.c (copy_twolevelhints, dump_it): Now corrects the
-       offset in two hints table to allow prebinding to be redone and
-       allow the executable to be stripped.
-
-2002-11-29  Dave Love  <fx@gnu.org>
-
-       * fns.c (Frequire): Don't call LOADHIST_ATTACH if feature was
-       already provided.
-
-2002-11-29  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (start_display): Check more intelligently for
-       whether the line is continued.
-       (move_it_vertically_backward): Clear it->continuation_lines_width.
-
-2002-11-28  Dave Love  <fx@gnu.org>
-
-       * s/amdahl.h, s/unipl5-0.h, m/sgi3000.h, s/3700.h, s/alliant-2800.h:
-       * s/alliant.h, s/altos.h: Deleted.  (Unused/empty.)
-
-2002-11-27  Steven Tamm  <steventamm@mac.com>
-
-       * fns.c (Frequire): Change nesting allowance from 2 to 3 to cause
-       more descriptive error output from lread.c:Fload upon most require
-       cycles during boostrapping.
-
-2002-11-27  Jason Rumney  <jasonr@gnu.org>
-
-       * fileio.c (Finsert_file_contents): Give a more appropriate error
-       for files bigger than 2Gb when off_t is 32 bit.
-
-       * dired.c (Ffile_attributes): Don't return negative file sizes for
-       files bigger than 2Gb when off_t is 32 bit.
-
-2002-11-27  Dave Love  <fx@gnu.org>
-
-       * s/irix6-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define.
-
-       * systty.h: Don't conditionally define GETPGRP_NO_ARG.
-       Test GETPGRP_VOID instead.
-       [BSD_TERMIOS]: Remove definitions (never used).
-
-       * s/osf5-0.h (WAIT_USE_INT, SYS_SIGLIST_DECLARED, sys_siglist):
-       Don't define.
-       (GC_SETJMP_WORKS, GC_MARK_STACK): Define.
-
-       * m/mips.h (WORDS_BIG_ENDIAN): Define conditionally.
-
-2002-11-25  Jason Rumney  <jasonr@gnu.org>
-
-       * w32.c (sys_write): Avoid non-blocking mode, which is not fully
-       supported.
-
-2002-11-25  Dave Love  <fx@gnu.org>
-
-       * unexalpha.c (update_dynamic_symbols): Cast arg of fatal_unexec.
-
-       * Makefile.in (TEMACS_LDFLAGS): Update last change.
-
-2002-11-25  Andreas Schwab  <schwab@suse.de>
-
-       * m/ia64.h: Restore `#ifndef NOT_C_CODE' deleted by last change.
-
-2002-11-24  Steven Tamm  <steventamm@mac.com>
-
-       * unexmacosx.c (unexec_realloc): Use malloc_default_zone to
-       determine the size of pointers alloced in unexed space instead
-       of using possibly invalid emacs_zone pointers.  This fixes the
-       binary incompatibility problems caused by updates to libSystem.B.
-
-2002-11-24  Richard M. Stallman  <rms@gnu.org>
-
-       * search.c (Fstring_match): Doc fix.
-
-       * callint.c (Fcall_interactively): If a command fails because
-       `*' detects a read-only buffer, but RECORD_FLAG is set,
-       record it anyway if the args don't actually do tty input.
-
-2002-11-22  Dave Love  <fx@gnu.org>
-
-       * sysdep.c (stuff_char) [PROTOTYPES]: Provide ISO C arglist.
-
-       * keyboard.c (interrupt_signal): Provide forward declaration.
-       (kbd_buffer_store_event): Don't declare interrupt_signal.
-
-       * xdisp.c (store_frame_title_char) [PROTOTYPES]: Provide ISO C arglist.
-
-2002-11-21  Richard M. Stallman  <rms@gnu.org>
-
-       * eval.c (interactive_p): Skip any number of bytecode
-       and special form frames, in any order.
-
-2002-11-20  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (convert_mono_to_color_image): New function.
-       (xbm_load, xbm_load_image): Use it when foreground or background
-       is explicitly set.
-
-2002-11-19  Dave Love  <fx@gnu.org>
-
-       * s/usg5-4.h, sco4.h (bcopy, bzero, bcmp): Don't define.
-
-2002-11-18  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (x_build_heuristic_mask): Filter palette info from color.
-       (XPutPixel): Swap blue and red.
-       (xpm_format, pbm_format, png_format, jpeg_format, tiff_format)
-       (gif_format, gs_format): Use IMAGE_ASCENT_VALUE.
-       (xpm_image_p, pbm_image_p, png_image_p, jpeg_image_p)
-       (tiff_image_p, gif_image_p, gs_image_p): Don't check ascent.
-
-2002-11-18  Dave Love  <fx@gnu.org>
-
-       * m/orion105.h (HAVE_ALLOCA): Don't define.
-
-       * m/m68k.h, m/arm.h, mtekxd88.h, m/tower32v3.h: Don't define alloca.
-
-       * m/intel386.h: Don't include alloca.h or define alloca.
-
-       * m/ia64.h: Don't include alloca.h, stdlib.h.  Don't declare
-       malloc, realloc, calloc.
-
-       * m/hp800.h, m/sr2k.h, m/ns16000.h, m/wicat.h (bcopy, bzero)
-       (bcmp): Don't define.
-
-       * m/delta.h (bcopy, bzero, bcmp, alloca): Don't define.
-
-       * m/amdahl.h: Don't define LIB_STANDARD.
-
-       * m/alpha.h: Move OSF1 stuff from here to s/osf1.h.
-
-       * s/osf1.h: Move OSF1 stuff from m/alpha.h to here.
-
-       * s/irix4-0.h, s/irix5-0.h, m/powerpcle.h, m/sparc.h:
-       Don't include alloca.h.
-
-       * s/aix3-2.h (HAVE_FSYNC): Don't define.
-
-       * regex.c (_GNU_SOURCE): Don't define.
-
-       * process.c (_GNU_SOURCE): Don't define.
-
-       * fileio.c (_GNU_SOURCE, HAVE_FSYNC): Don't define.
-
-2002-11-18  Markus Rost  <rost@math.ohio-state.edu>
-
-       * s/sol2-8.h: Include sol2-6.h.
-
-2002-11-18  Miles Bader  <miles@gnu.org>
-
-       * dispextern.h (struct face): Add `overstrike' field.
-       * xterm.c (x_draw_glyph_string_foreground)
-       (x_draw_composite_glyph_string_foreground): Implement overstriking.
-       * xfaces.c (load_face_font): Set `face->overstrike' based on
-       result from choose_face_font.
-       (best_matching_font, choose_face_font): Add `needs_overstrike'
-       argument, and use it to return whether overstriking is desirable
-       for this face/font combo.
-       (set_font_frame_param: Pass new argument to choose_face_font.
-
-2002-11-17  Ben Key  <BKey1@tampabay.rr.com>
-
-       This change is my fix for the following entry in etc/PROBLEMS:
-       "Emacs built on Windows 9x/ME crashes at startup on Windows XP,
-       or Emacs builtpart of on XP crashes at startup on Windows 9x/ME."
-
-       * w32.c: Added wrapper functions around the win32 API functions
-       OpenProcessToken, GetTokenInformation, LookupAccountSid, and
-       GetSidIdentifierAuthority.  These wrapper functions serve two
-       purposes:
-       1.  They ensure that the wrapped function can never be called
-       when Emacs is running on an operating system on which they are
-       not supported (Microsoft Windows 95 / 98 / ME).
-       2.  They call the wrapped functions via function pointers rather
-       than calling them directly.  This avoids taking advantage of the
-       undocumented fact that although these functions are not supported
-       in the 9x branch of Microsoft Windows, the functions do exist in
-       the version of advapi32.dll that is found in the 9x branch of
-       Microsoft Windows.
-
-       * w32.c (init_user_info): Replace the calls to the win32 API
-       functions OpenProcessToken, GetTokenInformation, LookupAccountSid,
-       and GetSidIdentifierAuthority with calls to the newly added
-       wrapper functions.
-
-       * w32.h: Added extern declarations for the following functions:
-       syms_of_w32term, syms_of_w32fns, syms_of_w32select,
-       syms_of_w32menu, and void syms_of_fontset.
-
-       * w32fns.c (w32_wnd_proc): Add code to reinitialize the
-       function pointer track_mouse_event_fn in the handler for the
-       WM_SETFOCUS message.
-
-       * w32menu.c (initialize_frame_menubar): Add code to
-       reinitialize the function pointers set_menu_item_info and
-       get_menu_item_info.
-
-2002-11-17  Ben Key  <BKey1@tampabay.rr.com>
-
-       * sound.c: Added a partial implementation of play-sound-internal
-       for Microsoft Windows.  Added various #ifdef / #else / #endif
-       code blocks to separate the code that will compile under
-       Microsoft Windows from the code that is specific to GNU/Linux.
-       Moved several blocks of code around to make this separation of code
-       into Windows compatible and GNU/Linux compatible code blocks easier.
-
-       * makefile.w32-in: Include sound.c and link with WinMM.lib.
-
-       * s/ms-w32.h: Defined the symbol HAVE_SOUND so that the newly
-       added support for play-sound-internal under Windows would be
-       included in the build of Emacs.
-
-2002-11-16  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (w32_load_system_font): Don't disable Cleartype.
-
-       * w32term.c (w32_get_glyph_string_clip_rect): Clip cursor tightly.
-
-2002-11-15  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (command_loop_1): Fix int/Lisp_Object mixup.
-       (adjust_point_for_property): Move out of display and invisible even if
-       we were already inside before (in case a property was added while
-       we weren't looking).  Be more careful when handling invisible props.
-       Skip invisible text as if it really wasn't there at all.
-
-2002-11-15  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (x_draw_image_foreground)
-       (w32_draw_image_foreground_1): Use standard copy and invert
-       operations to draw images.
-
-       * w32fns.c (x_create_x_image_and_pixmap): Fill in palette for
-       depth of 1.
-       (xbm_read_bitmap_data): Invert bits as xbm is read in.
-       (XPutPixel): Don't invert bits here.
-
-2002-11-15  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (x_draw_image_foreground, x_draw_image_glyph_string)
-       (w32_draw_image_foreground_1): Handle image masks.
-       (x_draw_image_glyph_string): Don't BitBlt transparently.
-
-       * w32fns.c (w32_defined_color): Adjust RGB values for Emacs.
-       (x_from_xcolors): Adjust RGB values for W32.
-       (image_background, image_background_transparent)
-       (postprocess_image, x_to_xcolors, x_disable_image)
-       (x_build_heuristic_mask): Adapt for W32 and enable.
-       (x_create_x_image_and_pixmap): Mark images with palettes as such.
-       (xbm_load): Remove unused variable.
-
-2002-11-14  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer): Doc fix.
-
-2002-11-14  Dave Love  <fx@gnu.org>
-
-       * alloc.c (SETJMP_WILL_NOT_WORK): Add note.
-
-       * xterm.c (x_draw_relief_rect, x_draw_box_rect, x_update_cursor):
-       * xmenu.c (unuse_menu_items, digest_single_submenu):
-       * xfns.c (x_put_x_image):
-       * xdisp.c (message2_nolog, set_message):
-       * undo.c (record_point):
-       * terminfo.c (tparam):
-       * syntax.c (scan_sexps_forward):
-       * scroll.c (calculate_scrolling, calculate_direct_scrolling):
-       * composite.c (update_compositions):
-       * cm.c (calccost, cmgoto):
-       * charset.c (c_string_width): Declare all args (per C99).
-
-       * frame.h (get_specified_cursor_type, get_window_cursor_type): Declare.
-
-       * lisp.h (get_specified_cursor_type, get_window_cursor_type):
-       Don't declare.
-
-       * emacs.c (main) [!VMS]: Avoid third arg.
-
-       * fns.c (Fcopy_sequence): Doc fix.
-       (Fmap_char_table): Cast `call2'.
-
-2002-11-14  Francesco Potort\e,Al\e(B  <pot@gnu.org>
-
-       * s/sol2-8.h: New file.
-
-2002-11-14  Kim F. Storm  <storm@cua.dk>
-
-       * buffer.c (syms_of_buffer) <mode-line-format>: Document symbol
-       dependency on `risky-local-variable' and the :propertize form.
-
-2002-11-12  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * fns.c (Fmap_char_table): Don't use map_char_table's function arg.
-
-       * syntax.c (scan_sexps_forward): Undo last patch.
-       Use a more obvious fix: check eob before updating the syntax table.
-
-2002-11-09  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * syntax.c (scan_sexps_forward): Update syntax table before reading
-       a char rather than after so we don't update the table past eob.
-
-2002-11-09  Dave Love  <fx@gnu.org>
-
-       * buffer.c (Fset_buffer_major_mode): Fix last change.
-
-       * regex.c (regexec): Fix pmatch declaration.
-
-       * cmds.c (Fself_insert_command): Apply Vtranslation_table_for_input.
-
-       * keyboard.c (command_loop_1): Apply Vtranslation_table_for_input
-       to self-inserting characters.
-       (syms_of_keyboard) <keyboard-translate-table>: Doc fix.
-
-       * coding.c (Vtranslation_table_for_input): New.
-       (syms_of_coding): DEFVAR it.
-
-2002-11-08  Juanma Barranquero  <lektu@terra.es>
-
-       * w32term.c (w32_draw_fringe_bitmap): Remove unused local variable
-       window.
-
-2002-11-08  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * process.c (Fformat_network_address): Remove unused locals p,
-       cp, and i.
-
-2002-11-06  Dave Love  <fx@gnu.org>
-
-       * buffer.c (Qset_buffer_major_mode_hook): New.
-       (Fset_buffer_major_mode): Use it.
-
-2002-11-06  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.c (x_term_init): Use turn_on_atimers, not start_polling
-       and stop_polling.
-
-       * process.c (wait_reading_process_input):
-       Test POLLING_PROBLEM_IN_SELECT, not hpux.
-       Avoid initialization for auto Lisp_Object var.
-
-       * s/hpux11.h (POLLING_PROBLEM_IN_SELECT): Add #undef.
-
-       * s/hpux10.h (POLLING_PROBLEM_IN_SELECT): Defined.
-
-2002-11-05  Richard M. Stallman  <rms@gnu.org>
-
-       * s/sol2-5.h (BROKEN_SIGIO): Turn off the #undef.
-
-       * callint.c (Fcall_interactively): New local filter_specs.
-       (Fcall_interactively): Check for progn as well as let.
-       Add a gcpro.
-       (Qprogn): New variable.
-       (syms_of_callint): Staticpro and init Qprogn.
-
-2002-11-04  John Paul Wallington  <jpw@shootybangbang.com>
-
-       * lread.c (Feval_buffer): Doc fix.
-
-2002-11-04  Dave Love  <fx@gnu.org>
-
-       * keyboard.c (read_char): Always translate iff
-       Vkeyboard_translate_table is a char table and c is valid.
-
-       * xterm.c (XTread_socket): Check Lisp types for Vx_keysym_table
-       and fix C types.
-
-2002-11-03  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xdisp.c (single_display_prop_intangible_p): Strings are intangible.
-
-       * editfns.c (get_pos_property): Don't hardcode Qfield.
-
-       * keyboard.c (adjust_point_for_property): Handle `display' prop on
-       overlays.  Also handle `invisible' prop.
-
-2002-11-02  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * coding.c (decode_coding_emacs_mule, decode_coding_iso2022)
-       (decode_coding_sjis_big5, decode_eol): Allow lone \r in DOS EOL.
-
-2002-11-01  Andreas Schwab  <schwab@suse.de>
-
-       * editfns.c (Fmessage): Revert last change to properly handle %%.
-
-2002-11-01  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xmenu.c (unuse_menu_items): New fun.
-       (menu_items_inuse): New var.
-       (syms_of_xmenu): Initialize it.
-       (init_menu_items): Use it to detect re-entrance.
-       (Fx_popup_menu, Fx_popup_dialog, set_frame_menubar): Reset when done.
-       (Fx_popup_menu): Remove spurious XSETFRAME.
-
-       * editfns.c (find_field): Make an exception for nil fields.
-
-2002-11-01  Dave Love  <fx@gnu.org>
-
-       * m/gec63.h: Deleted.
-
-2002-10-31  Dave Love  <fx@gnu.org>
-
-       * xterm.c (XTread_socket): Fix last change.
-       (xaw_scroll_callback): Cast call_data to long to avoid warning.
-
-2002-10-31  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * process.c (Fformat_network_address): Fix int/Lisp_Object mixup.
-
-2002-10-30  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * editfns.c (overlays_around, get_pos_property): New funs.
-       (find_field): Use them.
-       Also be careful not to modify POS before its last use.
-       (Fmessage): Don't Fformat if there's nothing to format.
-
-2002-10-30  Dave Love  <fx@gnu.org>
-
-       * process.c [HAVE_SYS_WAIT]: Include sys/wait.h.
-       [HAVE_PTY_H]; Include pty.h.
-
-       * lread.c (Fload) <!load_dangerous_libraries>: Close fd.
-
-       * xterm.c (Qeql): Declare.
-       (Vx_keysym_table): New.
-       (syms_of_xterm): Initialize it.
-       (XTread_socket): Use it.  Deal with ASCII keysyms.
-       (XSetIMValues) [HAVE_X11R6]: Prototype.
-
-       * keyboard.c (lispy_accent_codes, lispy_accent_keys): Extended.
-       (lispy_kana_keys): Comment out.
-       (make_lispy_event) [XK_kana_A]: Comment out.
-       (modify_event_symbol) <sizeof (long) == sizeof (EMACS_INT)>:
-       Fix sprintf call.
-
-       * s/osf5-0.h (C_SWITCH_SYSTEM): Revert last change (fixed by
-       regexp.h change).
-       (TERMINFO, LIBS_TERMCAP): Define.
-
-       * s/usg5-4.h (bcopy, bzero): Define conditional on HAVE_BCOPY.
-       (bcmp): Define conditional on HAVE_BCMP.
-       (NO_SIOCTL_H): Don't define.
-       (TIOCSIGSEND): Don't make conditional on IRIX6.
-
-       * s/sol2-5.h: Don't include strings.h.
-       (bcopy, bzero, bcmp) [HAVE_BCOPY]: Don't undef.
-
-       * s/irix6-0.h (IRIX6): Don't define.
-       (bcopy, bcmp, bzero): Don't undef.
-
-       * s/irix6-5.h: Don't include strings.h.
-       (IRIX6): Don't define.
-       (bcopy, bcmp, bzero): Don't undef.
-
-       * syntax.c (Fforward_comment): Doc fix.
-
-2002-10-29  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fsignal_process): Allow PROCESS to be specified by
-       name in addition to pid (as integer or string).
-
-2002-10-28  Harald Maier  <Harald.Maier.BW@t-online.de>  (tiny change)
-
-       * w32heap.c: Don't redefine _heap_init and _heap_term on MSVC 7 build
-       environments.
-
-2002-10-27  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (note_mouse_highlight): Don't use mouse-face if hidden.
-
-       * w32term.c (note_mouse_highlight): Don't use mouse-face if hidden.
-
-       * msdos.c (IT_note_mouse_highlight): Don't use mouse-face if hidden.
-
-       * macterm.c (note_mouse_highlight): Don't use mouse-face if hidden.
-
-2002-10-26  Richard M. Stallman  <rms@gnu.org>
-
-       * editfns.c (Fformat): Detect invalid format letters for floats.
-
-2002-10-25  Kenichi Handa  <handa@m17n.org>
-
-       * xfns.c (x_set_name): Encode by Qcompound_text unconditionally.
-       (x_set_title): Likewise.
-
-2002-10-25  Juanma Barranquero  <lektu@terra.es>
-
-       * macgui.h:
-       * w32gui.h: Remove definition of XColor.
-
-       * dispextern.h [!HAVE_X_WINDOWS]: Define XColor.
-
-2002-10-24  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (get_window_cursor_type): New arg ACTIVE_CURSOR.
-       Callers changed (supply dummy arg).
-
-       * lisp.h (get_window_cursor_type): Update prototype.
-
-       * w32term.c (x_display_and_set_cursor): Get active_cursor from
-       get_window_cursor_type to track system caret.
-
-2002-10-24  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Fformat_network_address): New function.
-       (syms_of_process): Defsubr it.
-       (list_processes_1): Use it to format :local/:remote address if
-       service/host is not set; before Emacs would crash in that case.
-       (Fmake_network_process): Don't use Ffind_operation_coding_system
-       to setup coding system if host or service is not set.
-
-2002-10-23  Juanma Barranquero  <lektu@terra.es>
-
-       Patch suggested by Jay Finger <jay_finger@hotmail.com>.
-
-       * w32term.c (w32_term_init): Pass XColor to w32_define_color, not
-       COLORREF.
-
-       * macgui.h:
-       * w32gui.h: Add definition of XColor.
-
-       * macfns.c:
-       * w32fns.c:
-       * xfaces.c: Remove definition of XColor.
-
-2002-10-22  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xfns.c (x_set_name, x_set_title): `icon.value' has unsigned char.
-
-       * window.c (window_loop): For GET_LRU_WINDOW and GET_LARGEST_WINDOW>,
-       Only ignore truly dedicated windows.  For UNSHOW_BUFFER, delete the
-       window if it is dedicated.
-       (Fshrink_window): Add preserve_before as was done for enlarge_window.
-       (Vspecial_display_function): Update docstring.
-
-       * buffer.c (assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
-       (call_overlay_mod_hooks): Use CONSP and XCAR/XCDR.
-       (Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE;
-
-2002-10-21  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * casefiddle.c (casify_region): Don't treat a prefix char as part
-       of a word when at the beginning.
-
-2002-10-17  Juanma Barranquero  <lektu@terra.es>
-
-       * lread.c (syms_of_lread): Fix typos.
-
-2002-10-17  Dave Love  <fx@gnu.org>
-
-       * Makefile.in (TEMACS_LDFLAGS): Add trailing comment.
-
-2002-10-16  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Fcopy_file): Fix backward test of KEEP_TIME.
-
-2002-10-14  Juanma Barranquero  <lektu@terra.es>
-
-       * w16select.c (syms_of_win16select): Fix docstring for
-       `selection-coding-system'.
-
-       * w32select.c (syms_of_w32select): Likewise.
-
-2002-10-14  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * syntax.c (scan_lists): Don't get fooled by a symbol ending with
-       a backslash-quoted char.
-       (scan_lists, scan_sexps_forward): Pacify the compiler.
-
-2002-10-13  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (window_scroll): Set immediate_quit.
-
-       * print.c (print): When backquote form is the car of a list,
-       output in old style.  Use old_backquote_output to output all
-       comma forms inside it in old style too.
-
-       * buffer.h (struct buffer): Move `undo_list' down below `name'.
-
-2002-10-11  Markus Rost  <rost@math.ohio-state.edu>
-
-       * emacs.c (syms_of_emacs) <kill-emacs-hook>: Doc fix (not run in
-       batch mode).
-
-       * lread.c (Fload): Doc fix (load-suffixes).
-
-2002-10-10  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (syms_of_macterm, mac_get_mouse_btn):
-       Reverse functionality of mac-wheel-button-is-mouse-2 to be correct.
-       Also switch the default to Qnil from Qt.
-
-2002-10-08  Kenichi Handa  <handa@m17n.org>
-
-       * coding.c (code_convert_region): When we need more GAP for
-       conversion, pay attention to the case that coding->produced is not
-       greater than coding->consumed.
-
-2002-10-07  Richard M. Stallman  <rms@gnu.org>
-
-       * unexelf.c (unexec): Redo 9/16 change, but only if IRIX6_5.
-
-2002-10-06  Andrew Choi  <akochoi@shaw.ca>
-
-       * macmenu.c (mac_menu_show): Add j to count menu items; match
-       menu_item_selection to it to find selected item.
-
-2002-10-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (XTread_socket): Fix from 2002-10-03 didn't cover all
-       cases.  The correct fix is to pass ReparentNotify to Xt.
-       The shell widget interprets ConfigureNotify differently depending
-       on if it has been reparented or not.
-
-2002-10-05  Markus Rost  <rost@math.ohio-state.edu>
-
-       * editfns.c (Fformat_time_string): Doc fix.
-
-2002-10-05  John Paul Wallington  <jpw@shootybangbang.com>
-
-       * fns.c (Flength): Doc fix.
-
-2002-10-04  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (keyremap): New struct.
-       (read_key_sequence): Use it: globally replace keytran_foo with
-       keytran.foo and fkey_foo with fkey.foo.  Rename temp vars
-       keytran_next and fkey_next to just `next'.
-
-2002-10-04  Steven Tamm  <steventamm@mac.com>
-
-       * macterm.c (keycode_to_xkeysym_table): Change return to be
-       treated like an X keysym.
-
-2002-10-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.c (XTread_socket): For ConfigureNotify, with x and y == 0,
-       and USE_MOTIF, call XTranslateCoordinates to get the real x and y.
-       This is to also handle x/y changes that occur because of a resize.
-
-2002-10-02  John Paul Wallington  <jpw@shootybangbang.com>
-
-       * frame.c (Vdelete_frame_functions): New variable.
-       (syms_of_frame): Initialize and defvar it.
-       (Fdelete_frame): Use it instead of delete-frame-hook.  Don't run
-       it when frame's `tooltip' parameter is non-nil.
-
-       * xfns.c (x_create_tip_frame): Set `tooltip' frame parameter to t.
-
-       * w32fns.c (x_create_tip_frame): Likewise.
-
-       * macfns.c (x_create_tip_frame): Likewise.
-
-2002-09-30  Kenichi Handa  <handa@m17n.org>
-
-       * xterm.c (x_encode_char): For DIM=1 charset, set ccl->reg[2] to
-       -1 before calling ccl_driver.
-
-       * coding.c (decode_coding_emacs_mule): Check coding->cmp_data.
-       Only when it is non-nil, handle composition sequence.
-       (setup_coding_system) <0>: Don't force composition handling.
-
-       * Makefile.in (lisp, shortlisp): Add utf-16.elc.
-
-2002-09-29  Richard M. Stallman  <rms@gnu.org>
-
-       * search.c (Freplace_match): Adjust match data for the substitution
-       just made in the buffer.
-
-       * xdisp.c (STOP_POLLING, RESUME_POLLING): New macros.
-       (redisplay_internal): Use them.  Do RESUME_POLLING at end of function.
-
-2002-09-27  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (STOP_POLLING, RESUME_POLLING): New macros.
-       (read_char): Use them.  Do all exits thru the end of the function.
-
-2002-09-27  Kenichi Handa  <handa@etl.go.jp>
-
-       * xfaces.c (try_font_list): Pay attention to the case that FAMILY
-       is nil.
-
-2002-09-26  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.h (__restrict_arr): Don't define if already defined.
-
-       * coding.c (run_pre_post_conversion_on_str):
-       Save and restore Vdeactivate_mark.
-
-2002-09-26  John Paul Wallington  <jpw@shootybangbang.com>
-
-       * minibuf.c (Fminibufferp): Add an optional `buffer' argument.
-
-2002-09-26  Kenichi Handa  <handa@etl.go.jp>
-
-       * xfaces.c (try_font_list): New arg PREFER_FACE_FAMILY.  If it is
-       nonzero, try face's family at first.  Otherwise try FAMILY at first.
-       (choose_face_font): If C is a single byte char or latin-1, call
-       try_font_list with PREFER_FACE_FAMILY 1.
-
-2002-09-21  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (select_window_1): Don't select frame.
-       Set frame's selected window only when frame itself is selected.
-       (Fselect_window): Doc fix.
-
-2002-09-18  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (make-network-process): Doc fix (there is no
-       network-server-log-function hook).
-
-2002-09-18  Richard M. Stallman  <rms@gnu.org>
-
-       * print.c (print): Clear out the unused parts of Vprint_number_table.
-       (syms_of_print): Doc fix for `print-number-table'.
-
-       * unexelf.c (unexec): Undo previous change.
-
-2002-09-17  Andreas Schwab  <schwab@suse.de>
-
-       * m/alpha.h [LINUX]: Don't define DATA_START.
-
-2002-09-16  Dave Love  <fx@gnu.org>
-
-       * unexelf.c (unexec): Deal with .got, reinstating change from
-       25-08-1999.
-
-2002-09-13  Richard M. Stallman  <rms@gnu.org>
-
-       * s/sol2-6.h (UNEXEC): Comment out definition.
-
-       * unexsol.c (unexec): Don't downcase first letter of error msg.
-
-       * xfaces.c (Fcolor_supported_p): Just one arg is required.
-
-2002-09-12  Markus Rost  <rost@math.ohio-state.edu>
-
-       * unexsol.c: Include buffer.h, charset.h, coding.h.
-
-2002-09-11  Richard M. Stallman  <rms@gnu.org>
-
-       * unexsol.c: Don't use report_file_error; do it by hand
-       using dlerror.
-
-       * process.c (wait_reading_process_input, both versions):
-       Before calling turn_on_atimers, call stop_polling.
-
-       * emacs.c (syms_of_emacs) <command-line-args>: Doc fix.
-
-       * xdisp.c (try_scrolling): If after make_cursor_line_fully_visible
-       we go to too_near_end, call clear_glyph_matrix.
-       (redisplay_window): After make_cursor_line_fully_visible,
-       call clear_glyph_matrix and bypass `goto done'.
-
-       * xfns.c (x_report_frame_params): If FRAME_SCROLL_BAR_PIXEL_WIDTH is 0
-       and we have non-toolkit scroll bars, return nil for scroll-bar-width.
-
-2002-09-10  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Fdo_auto_save): Catch error making directory.
-       Only call push_message if we need to.
-       At the same time, make an unwind-protect to pop it.
-       Rename local message_p to old_message_p.
-       (do_auto_save_make_dir, do_auto_save_eh): New functions.
-       (do_auto_save_unwind): Don't call pop_message.
-
-       * lisp.h (pop_message_unwind): Renamed from push_message_unwind.
-
-       * keyboard.c (Fexecute_extended_command): Use pop_message_unwind.
-
-       * alloc.c (Fgarbage_collect): Use pop_message_unwind.
-
-       * xdisp.c (pop_message_unwind): Renamed from push_message_unwind.
-
-2002-09-10  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * regex.c (DISCARD_FAILURE_REG_OR_COUNT): Delete.
-       (CHECK_INFINITE_LOOP): Don't pop anything: just set `cycle' to 1.
-       (re_match_2_internal): Be more careful with infinite loops.
-
-2002-09-10  Kim F. Storm  <storm@cua.dk>
-
-       * macros.c (end_kbd_macro): New function.
-       (Fend_kbd_macro): Use it.
-
-       * macros.h (end_kbd_macro): Declare extern.
-
-       * keyboard.c (Fdiscard_input): If defining keyboard macro,
-       end and save it instead of discarding it.
-
-2002-09-09  Markus Rost  <rost@math.ohio-state.edu>
-
-       * s/sol2-6.h: Fix typo.  Add comment.
-
-2002-09-09  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.c (regnum_t): Use signed int, not unsigned int.
-
-       * s/sol2-6.h: New file.
-
-       * s/sol2-5.h (UNEXEC): Definition deleted.
-
-2002-09-08  Kim F. Storm  <storm@cua.dk>
-
-       * macros.c (executing_macro_index): Change type to EMACS_INT.
-       (syms_of_macros): DEFVAR_INT it (needed by kmacro).
-
-       * macros.h (executing_macro_index): Change type to EMACS_INT.
-
-2002-09-06  Richard M. Stallman  <rms@gnu.org>
-
-       * casetab.c (set_case_table): Make canon table point to eqv table.
-
-2002-09-06  Juanma Barranquero  <lektu@terra.es>
-
-       * coding.c (syms_of_coding): Fix spacing.
-
-       * composite.c (Fcompose_region_internal)
-       (Fcompose_string_internal): Likewise.
-
-       * data.c (Flsh): Likewise.
-
-       * fontset.c (Fset_fontset_font): Likewise.
-
-       * macfns.c (Fx_server_max_request_size): Likewise.
-
-       * w16select.c (syms_of_win16select): Likewise.
-
-       * w32select.c (syms_of_w32select): Likewise.
-
-       * xselect.c (syms_of_xselect): Likewise.
-
-2002-09-05  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.c (set_image_of_range_1): In no-TRANSLATE case,
-       call EXTEND_RANGE_TABLE and return a proper value.
-       (set_image_of_range): Don't call set_image_of_range_1
-       if no TRANSLATE or if range includes all of Latin-1.
-       Only call it for the Latin-1 part of the range.
-       For other cases, make two separate ranges,
-       one for the original specified characters and one for
-       their case-conversions.
-
-2002-09-04  Richard M. Stallman  <rms@gnu.org>
-
-       * s/sol2-5.h (UNEXEC): Use unexsol.o.
-
-       * window.c (displayed_window_lines): Correct for one-off bug
-       in HEIGHT on non-window displays.
-
-       * regex.c (set_image_of_range_1): New function.
-       (set_image_of_range): Use set_image_of_range_1 for Latin-1.
-       Return a value to indicate running out of memory.
-       (SET_RANGE_TABLE_WORK_AREA): Check value from set_image_of_range.
-       (extend_range_table_work_area): New subroutine.
-       (EXTEND_RANGE_TABLE): Replaces EXTEND_RANGE_TABLE_WORK_AREA.
-       Different calling conventions, and used from set_image_of_range{,_1}.
-       (IMMEDIATE_QUIT_CHECK): Definitions moved.
-
-2002-09-04  Juanma Barranquero  <lektu@terra.es>
-
-       * makefile.w32-in: All dependencies updated.
-
-2002-09-01  Richard M. Stallman  <rms@gnu.org>
-
-       * unexsol.c: New file.
-
-       * xfns.c (Qbox): Declare external, don't define.
-
-       * xdisp.c (redisplay_window) <force-start case>:
-       If point is on semi-visible last line, reposition
-       it at previous line.
-
-       * alloc.c (display_malloc_warning): Use display-warning.
-       (malloc_warning_1): Function deleted.
-
-       * alloc.c [ALLOC_DEBUG]: #undef INLINE.
-
-       * lread.c (read1): Handle #! by skipping the line.
-
-2002-08-31  Richard M. Stallman  <rms@gnu.org>
-
-       * Makefile.in (TEMACS_LDFLAGS): Renamed from ALL_LDFLAGS.
-       Don't include LDFLAGS.
-       (temacs): Pass LDFLAGS separately, and not via YMF_PASS_LDFLAGS.
-
-2002-08-31  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * xdisp.c (get_window_cursor_type): Don't use x_highlight_frame
-       member of x_display_info unless we compile for some window system.
-
-2002-08-31  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (Valternate_cursor_type, Qalternate_cursor_type): Removed.
-       (get_window_cursor_type): Don't use them.
-       (syms_of_xdisp): Remove intern, staticpro, and defvar for them.
-
-2002-08-30  Kenichi Handa  <handa@etl.go.jp>
-
-       * xdisp.c (get_next_display_element): Fix previous change.
-
-2002-08-30  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (expose_overlaps): New function (merge code from xterm.c).
-       (expose_window): Use it to fix the display of overlapping
-       rows (merge code from xterm.c).
-
-       * macfns.c (Qbox): Add extern declaration.
-
-2002-08-30  Juanma Barranquero  <lektu@terra.es>
-
-       * w32fns.c (Qbox): Make extern.
-       (syms_of_w32fns): Remove initialization of Qbox.
-
-2002-08-30  Rune Kleveland  <runekl@viewpoint.no>  (tiny change)
-
-       * xfns.c (Fx_open_connection): Fix error message.
-
-2002-08-30  Kim F. Storm  <storm@cua.dk>
-
-       The following changes consolidates the handling of the cursor
-       type in xdisp.c, moving duplicate code and functionality from
-       xfns.c, xterm.c, w32fns.c, w32term.c, macfns.c, and macterm.c.
-
-       * frame.h (enum text_cursor_kinds): Consolidated here.
-       Added DEFAULT_CURSOR value.
-       (struct frame) <desired_cursor, cursor_width>
-       <blink_off_cursor, blink_off_cursor_width>: New fields.
-       Consolidated from output_x, output_w32 and output_mac structs.
-       (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR)
-       (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros consolidated here.
-
-       * xdisp.c (Qbar, Qhbar, Qbox, Qhollow, Vblink_cursor_alist):
-       Variables consolidated here.
-       (Valternate_cursor_type, Qalternate_cursor_type): New variables.
-       (Vcursor_in_non_selected_windows): Renamed from
-       cursor_in_non_selected_windows and changed to Lisp_Object.
-       (syms_of_xdisp): Define and staticpro new and moved variables.
-       (get_specified_cursor_type): Renamed from x_specified_cursor_type;
-       consolidated here.  Recognize Qhollow setting.
-       (set_frame_cursor_types): New function to set frame cursor types
-       based on the frame parameters.
-       (get_window_cursor_type): New function to calculate new cursor
-       type and width for the specified window.  Based on duplicated
-       code consolidated here.
-       Enhancements: cursor-in-non-selected-windows may be a cursor type,
-       check buffer-local alternate-cursor-type and blink-cursor-alist
-       before using built-in blink off methods.
-
-       * dispextern.h (cursor_in_non_selected_windows): Extern removed.
-
-       * lisp.h (Qcursor_in_non_selected_windows): Extern removed.
-       (get_specified_cursor_type, get_window_cursor_type)
-       (set_frame_cursor_types): Added prototypes.
-
-       * macfns.c (x_specified_cursor_type): Removed.
-       (x_set_cursor_type): Use set_frame_cursor_types.
-       (Qbar, Qbox): Removed.
-       (syms_of_macfns): Don't intern or staticpro them.
-
-       * macterm.c (x_specified_cursor_type): Remove prototype.
-       (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH.
-       (x_display_and_set_cursor): Use get_window_cursor_type.
-       Remove unused local variables cursor_non_selected, active_cursor.
-       Redraw cursor if hbar cursor width changes.
-       (make_mac_frame): Set FRAME_DESIRED_CURSOR.
-
-       * macterm.h (enum text_cursor_kinds): Removed.
-       (struct output_mac) <current_cursor, desired_cursor, cursor_width>
-       <blink_off_cursor, blink_off_cursor_width>: Members removed.
-       (FRAME_DESIRED_CURSOR): Macro removed.
-
-       * w32fns.c (Vblink_cursor_alist): Removed.
-       (Qbar, Qhbar, Qbox, Qhollow): Removed.
-       (syms_of_w32fns): Don't intern, staticpro, or define them.
-       (x_specified_cursor_type): Removed.
-       (x_set_cursor_type): Use set_frame_cursor_types.
-
-       * w32term.c (x_specified_cursor_type): Remove prototype.
-       (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH.
-       (x_display_and_set_cursor): Use get_window_cursor_type.
-       Remove unused local variables cursor_off_state.
-       Redraw cursor if hbar cursor width changes.
-       Changed all occurrences of w32_highlight_frame to x_highlight_frame.
-
-       * w32term.h (enum text_cursor_kinds): Removed.
-       (struct output_w32) <current_cursor, desired_cursor, cursor_width>
-       <blink_off_cursor, blink_off_cursor_width>: Members removed.
-       (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR)
-       (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed.
-       (struct w32_display_info) <x_highlight_frame>: Renamed member from
-       w32_highlight_frame.
-
-       * xfns.c (Vblink_cursor_alist): Removed.
-       (Qbar, Qhbar, Qbox, Qhollow): Removed.
-       (syms_of_xfns): Don't intern, staticpro, or define them.
-       (x_specified_cursor_type): Removed.
-       (x_set_cursor_type): Use set_frame_cursor_types.
-
-       * xterm.c (x_specified_cursor_type): Remove prototype.
-       (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH.
-       (x_display_and_set_cursor): Use get_window_cursor_type.
-       Remove unused local variables cursor_off_state.
-       Redraw cursor if hbar cursor width changes.
-
-       * xterm.h (enum text_cursor_kinds): Removed.
-       (struct output_x) <current_cursor, desired_cursor, cursor_width>
-       <blink_off_cursor, blink_off_cursor_width>: Members removed.
-       (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR)
-       (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed.
-       (x_specified_cursor_type): Remove prototype.
-
-2002-08-28  Richard M. Stallman  <rms@gnu.org>
-
-       * w32fns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and
-       FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist.
-       (Vblink_cursor_alist): New variable.
-       (syms_of_w32fns): Initialize and defvar it.
-       (x_specified_cursor_type): Recognize Qbox for filled box.
-       Exceptions are hollow boxes.
-       (Qbox, Qhollow): New variables.
-       (syms_of_w32fns): Initialize and staticpro them.
-
-       * w32term.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH):
-       New macros.
-       (struct w32_output): New fields blink_off_cursor,
-       blink_off_cursor_width.
-       (FRAME_CURSOR_WIDTH): New macro.
-
-       * w32term.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR
-       and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off.
-
-       * w32term.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH
-       for bar cursor.
-
-       * w32term.c (expose_overlaps): New function.
-       (expose_window): Use it to fix the display of overlapping rows.
-
-2002-08-28  Simon Josefsson  <jas@extundo.com>
-
-       * xfns.c (Fx_open_connection): Improve help when X connection
-       fails, xhost is insecure and xauth is better.
-
-2002-08-28  Juanma Barranquero  <lektu@terra.es>
-
-       * makefile.w32-in: Add missing dependencies on w32term.h and
-       composite.h.
-
-       * emacs.c (USAGE1): Add missing newline.
-
-2002-08-27  Andrew Choi  <akochoi@shaw.ca>
-
-       * s/darwin.h [HAVE_LIBNCURSES]: Define HAVE_TERMINFO.
-
-2002-08-27  Richard M. Stallman  <rms@gnu.org>
-
-       * xfns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and
-       FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist.
-       (Vblink_cursor_alist): New variable.
-       (syms_of_xfns): Initialize and defvar it.
-       (x_specified_cursor_type): Recognize Qbox for filled box.
-       Exceptions are hollow boxes.
-       (Qbox, Qhollow): New variables.
-       (syms_of_xfns): Initialize and staticpro them.
-
-       * xterm.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH):
-       New macros.
-       (struct x_output): New fields blink_off_cursor, blink_off_cursor_width.
-
-       * xterm.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR
-       and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off.
-
-       * emacs.c (main): Handle --script.
-       (USAGE1): Mention --script.
-       (standard_args): Define sort order for --script.
-
-2002-08-27  Gerd Moellmann  <gerd.moellmann@t-online.de>
-
-       * xdisp.c (redisplay_updating_p): Variable removed.
-       (inhibit_free_realized_faces, Qinhibit_free_realized_faces):
-       New variables.
-       (init_iterator): Don't free realized faces if
-       inhibit_free_realized_faces is set.
-       (redisplay_internal): Bind Qinhibit_free_realized_faces to nil.
-       (syms_of_xdisp): DEFVAR_BOOL inhibit-free-realized-faces,
-       initialize Qinhibit_free_realized_faces.
-
-       * dispextern.h (PRODUCE_GLYPHS): Set inhibit_free_realized_faces
-       when iterator is adding glyphs to a glyph matrix.
-
-2002-08-27  Kenichi Handa  <handa@etl.go.jp>
-
-       * xdisp.c (get_next_display_element): In unibyte case, don't use
-       octal form for such eight-bit characters that can be converted to
-       multibyte char.
-
-2002-08-26  Kim F. Storm  <storm@cua.dk>
-
-       * frame.c (make_terminal_frame) [CANNOT_DUMP]: Initialize
-       foreground and background colors.  From Joe Buehler.
-
-2002-08-26  Miles Bader  <miles@gnu.org>
-
-       * bytecode.c (Fbyte_code): Fsub1 can GC, so protect it.
-
-2002-08-25  Andrew Choi  <akochoi@shaw.ca>
-
-       * emacs.c (main): Call init_mac_osx_environment if HAVE_CARBON is
-       defined instead of MAC_OSX.
-
-       * s/darwin.h (select): Define select to sys_select only if
-       HAVE_CARBON is defined.
-       (HAVE_WORKING_VFORK): #undef it.  Define vfork to fork.
-       (DONT_REOPEN_PTY): #def it.
-
-       * macterm.c (XTread_socket): Remove code to call
-       SendEventToEventTarget for keys with command modifiers when
-       mac_command_key_is_meta is nil.
-
-2002-08-24  Andreas Schwab  <schwab@suse.de>
-
-       * eval.c (Fdefvar): Fix last change.
-
-2002-08-23  Richard M. Stallman  <rms@gnu.org>
-
-       * eval.c (Fdefvar, Fdefconst, Fdefvaralias):
-       Record variables in load history as (defvar . VAR).
-       (Fdefvar): Don't record in load history if no initial value.
-       (Qdefvar): New variable.
-       (syms_of_eval): Init and staticpro it.
-
-       * lread.c (syms_of_lread): Doc fix.
-       (build_load_history): Use Fmember to see if a definition
-       is already in the Vload_history element.
-
-       * process.c (Fstart_process): Remove /: from program name.
-
-       * emacs.c (decode_env_path): Don't add /: if file name handler
-       has a `safe-magic' property.
-
-       * callproc.c (Fcall_process): Remove /: from program name.
-
-2002-08-23  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * regex.c (PATFETCH): Remove the translating fetch.
-       (PATFETCH_RAW): Rename to PATFETCH.
-       (set_image_of_range): New fun.
-       (SET_RANGE_TABLE_WORK_AREA): Use it.
-       (regex_compile): Don't translate the pattern chars so eagerly.
-       Only do it when inserting an `exactn' bytecode or when handling
-       a char-range.
-       (mutually_exclusive_p): Avoid empty statement.
-
-2002-08-22  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): Do not `goto try_to_scroll' when we
-       end up on a partially visible line; this reverts a specific part
-       of the 2002-07-07 change by Richard M. Stallman to "fix" a nasty
-       display error which has been reported several times now.
-       However it introduces the problem that changes was supposed to fix.
-       See my comments in the source if you want to debug this further.
-
-2002-08-20  Kenichi Handa  <handa@etl.go.jp>
-
-       * abbrev.c (Fexpand_abbrev): Fix for the multibyte case.
-
-2002-08-19  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * msdos.c (croak): Add `void' to definition.
-
-       * sysdep.c (request_sigio, unrequest_sigio) [MSDOS]:
-       Don't define them, they are defined in msdos.c.
-
-       * mem-limits.h [MSDOS]: Declare etext.
-
-       * fileio.c (Ffile_name_directory) [DOS_NT]: Don't declare `beg'
-       `const' since CORRECT_DIR_SEPS modifies its target.
-
-2002-08-19  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (Fclear_this_command_keys): Add optional arg
-       KEEP-RECORD to avoid clearing lossage when we just want to clear
-       the current key sequence (kmacro needs this).
-
-2002-08-19  Kenichi Handa  <handa@localhost>
-
-       * composite.c (run_composition_function): Call FUNC if it is fboundp.
-
-       * composite.h (COMPOSITION_MODIFICATION_FUNC): If PROP is not a
-       cons, return Qnil.
-
-2002-08-17  Richard M. Stallman  <rms@gnu.org>
-
-       * s/sol2-5.h (BROKEN_SIGIO): Add #undef.
-
-       * sysdep.c [!VMS]: Include sys/files.h.
-
-       * editfns.c (save_restriction_restore): Defend from unchained marker.
-
-       * buffer.c (overlays_at): Handle extending vec uniformly.
-       (overlays_in): Handle extending vec from length 0 as in overlays_at.
-
-2002-08-15  Andrew Choi  <akochoi@shaw.ca>
-
-       * mac.c (init_mac_osx_environment): New function.
-
-       * emacs.c (main) [MAC_OSX]: Call init_mac_osx_environment.
-
-2002-08-14  Kim F. Storm  <storm@cua.dk>
-
-       * macros.c (Fstart_kbd_macro): Added NO-EXEC argument to inhibit
-       executing macro before appending to it (when used from Lisp).
-       (Fexecute_kbd_macro): Added LOOPFUNC argument to supply function
-       which is called prior to each iteration of macro (for kmacro.el).
-       (Fend_kbd_macro, Fcall_last_kbd_macro): Likewise.
-
-       * lisp.h (Fexecute_kbd_macro): Update prototype.
-
-       * keyboard.c (Fcommand_execute): Update call to Fexecute_kbd_macro.
-
-2002-08-14  Kenichi Handa  <handa@etl.go.jp>
-
-       * xselect.c (QUTF8_STRING): New variable.
-       (symbol_to_x_atom): Pay attention to QUTF8_STRING.
-       (x_atom_to_symbol): Likewise.
-       (x_get_local_selection): New argument local_request.  If it is
-       nonzero, call handler_fn with the second arg nil.
-       (x_handle_selection_request): Call x_get_local_selection with
-       local_request 0.
-       (lisp_data_to_selection_data): Don't encode the string here.
-       (Fx_get_selection_internal): Call x_get_local_selection with
-       local_request 1.
-       (syms_of_xselect): Intern and staticpro QUTF8_STRING.
-
-       * xterm.c (x_term_init): Initialize dpyinfo->Xatom_UTF8_STRING.
-
-       * xterm.h (struct x_display_info): New member Xatom_UTF8_STRING.
-
-2002-08-13  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.c (Fminibufferp): New function.
-       (syms_of_minibuf): Defsubr it.
-       (Fminibuffer_prompt_end): Handle non-minibuffers specially.
-
-2002-08-13  Gerd Moellmann  <gerd.moellmann@t-online.de>
-
-       * coding.c (Funencodable_char_position): Lisp_Object/int mixup.
-
-2002-08-12  Richard M. Stallman  <rms@gnu.org>
-
-       * syswait.h: Only the include of sys/wait.h tests HAVE_SYS_WAIT_H.
-       [!VMS] (WCOREDUMP, WEXITSTATUS, WIFEXITED, WIFSTOPPED, WIFSIGNALED)
-       (WSTOPSIG, WTERMSIG): Define each one independently if not defined
-       already.
-
-       * buffer.c (syms_of_buffer) <fill-column>: Doc fix.
-
-2002-08-11  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (XTmouse_position): Check wp with is_emacs_window.
-       (Vmac_pass_command_to_system): New variable.
-       (Vmac_pass_control_to_system): New variable.
-       (do_mouse_moved): Check wp with is_emacs_window.
-       (XTread_socket): Check window_ptr with is_emacs_window.
-       Call FrontNonFloatingWindow instead of FrontWindow.  Send keydown
-       events back to Mac Toolbox for processing, depending on values of
-       Vmac_pass_command_to_system and Vmac_pass_control_to_system.
-       (syms_of_macterm): DEFVAR_LISP Vmac_pass_command_to_system and
-       Vmac_pass_control_to_system.
-
-2002-08-10  Kenichi Handa  <handa@etl.go.jp>
-
-       * coding.c (unencodable_char_position): New function.
-       (Funencodable_char_position): New function.
-       (syms_of_coding): Defsubr Funencodable_char_position.
-
-2002-08-10  Andrew Choi  <akochoi@shaw.ca>
-
-       * mac.c (sys_select) [MAC_OSX]: New function.
-
-       * macterm.c (MakeMeTheFrontProcess): New function.
-       (mac_initialize): Call MakeMeTheFrontProcess.
-
-       * s/darwin.h: Define select to sys_select.
-
-2002-08-09  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (make_lispy_event): Test WINDOWSNT, not WINDOWS_NT.
-
-2002-08-09  Gerd Moellmann  <gerd.moellmann@t-online.de>
-
-       * xdisp.c (forward_to_next_line_start): Return 0 when reaching the
-       end of the buffer.
-
-2002-08-08  Ken Raeburn  <raeburn@gnu.org>
-
-       * coding.c (Ffind_operation_coding_system): Fix Lisp_Object/int mixup.
-
-       * puresize.h (BASE_PURESIZE): Increase to 910000.
-
-2002-08-08  Kenichi Handa  <handa@etl.go.jp>
-
-       * coding.c (Ffind_operation_coding_system): For write-region, if
-       VISIT is a filename, make it the target.
-
-2002-08-07  Richard M. Stallman  <rms@gnu.org>
-
-       * alloc.c (mark_object): Detect long lists for debugging.
-       (mark_object_loop_halt): New variable.
-
-       * s/hpux10.h (C_SWITCH_SYSTEM): #undef it.
-
-       * data.c (Fmake_variable_frame_local): Doc fix.
-
-2002-08-01  David Ponce  <david@dponce.com>
-
-       * w32menu.c (local_heap, local_alloc, local_free): New macros.
-       (malloc_widget_value, free_widget_value)
-       (w32_free_submenu_strings): Use them.
-
-       (push_submenu_start, push_submenu_end, push_left_right_boundary)
-       (push_menu_pane, push_menu_item, single_keymap_panes)
-       (single_menu_item, Fx_popup_menu, menubar_selection_callback)
-       (single_submenu, set_frame_menubar)
-       (w32_menu_show, w32_dialog_show): Use AREF, ASET, ASIZE.
-
-       (Fx_popup_menu): Don't show pop up menu until preceding one is
-       actually cleaned up.  Moved UNGCPRO outside #ifdef HAVE_MENUS block.
-
-       * w32menu.c: Changes adapted from xmenu.c
-       (set_frame_menubar): First parse all submenus,
-       then make widget_value trees from them.
-       Don't allocate any widget_value objects
-       until we are done with the parsing.
-       (parse_single_submenu): New function.
-       (digest_single_submenu): New function.
-       (single_submenu): Function deleted, replaced by those two.
-
-2002-08-04  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (XTread_socket): Check that FrontNonFloatingWindow
-       returns a valid window pointer before proceeding for keyDown and
-       autoKey events.
-
-2002-08-03  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (USE_CARBON_EVENTS): New macro.
-       (macCtrlKey, macShiftKey, macMetaKey, macAltKey): New macros.
-       (x_iconify_frame): Call CollapseWindow.
-       (Vmac_reverse_ctrl_meta): New variable.
-       (Vmac_wheel_button_is_mouse_2): New variable.
-       (init_mac_drag_n_drop): New function.
-       (mac_do_receive_drag): New function.
-       (mac_handle_service_event): New function.
-       (init_service_handler): New function.
-       (mac_to_emacs_modifiers): New function.
-       (mac_event_to_emacs_modifiers): New function.
-       (mac_get_mouse_btn): New function.
-       (mac_convert_event_ref): New function.
-       (XTread_socket) [USE_CARBON_EVENTS]: Call ReceiveNextEvent,
-       SendEventToEventTarget, mac_event_to_emacs_modifiers, and
-       mac_get_mouse_btn.
-       (mac_initialize): Call init_mac_drag_n_drop and init_service_handler.
-
-       * keyboard.c: Define Qmouse_wheel, mouse_wheel_syms, and
-       lispy_mouse_wheel_names for MAC_OSX as well as for WINDOWS_NT.
-       (kbd_buffer_get_event): Set used_mouse_menu for MENU_BAR_EVENT and
-       TOOL_BAR_EVENT for MAC_OS as well.
-       (make_lispy_event): Handle MOUSE_WHEEL_EVENT for MAC_OSX as well
-       as for WINDOWS_NT.
-       (syms_of_keyboard): Initialize Qmouse_wheel for MAC_OSX.
-
-       * termhooks.h (event_kind): Define MOUSE_WHEEL_EVENT also for MAC_OSX.
-
-2002-08-03  Gerd Moellmann  <gerd.moellmann@t-online.de>
-
-       * xdisp.c (forward_to_next_line_start): Fix a condition that
-       lead to a newline being skipped.
-
-2002-08-02  Andrew Choi  <akochoi@shaw.ca>
-
-       * mac.c (syms_of_mac): Defsubr Sx_selection_exists_p.
-
-2002-08-01  Richard M. Stallman  <rms@gnu.org>
-
-       * Makefile.in (SOME_MACHINE_OBJECTS): Add fontset.o.
-
-2002-07-31  Andrew Choi  <akochoi@shaw.ca>
-
-       * macfns.c: #undef init_process before #define-ing it.
-
-       * s/darwin.h: Define MAC_OS, SYMS_SYSTEM, and OTHER_FILES only if
-       HAVE_CARBON is defined.
-
-2002-07-31  Richard M. Stallman  <rms@gnu.org>
-
-       * xmenu.c (set_frame_menubar): First parse all submenus,
-       then make widget_value trees from them.
-       Don't allocate any widget_value objects
-       until we are done with the parsing.
-       (parse_single_submenu): New function.
-       (digest_single_submenu): New function.
-       (single_submenu): Function deleted, replaced by those two.
-
-2002-07-30  Juanma Barranquero  <lektu@terra.es>
-
-       * w32proc.c (syms_of_ntproc): Fix docstring of
-       `w32-get-true-file-attributes'.
-
-2002-07-28  Richard M. Stallman  <rms@gnu.org>
-
-       * s/hpux8.h (HPUX8): Define this before including hpux.h.
-       (HAVE_SYS_WAIT_H): #define deleted; we let Autoconf decide.
-
-       * s/hpux.h (HAVE_SYS_WAIT_H): The #undef is conditional on HPUX8.
-
-       * keyboard.c (make_lispy_event):
-       Use #ifdef to test USE_TOOLKIT_SCROLL_BARS.
-       Explicitly clear up_modifier in event->modifiers.
-
-2002-07-27  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.h (FRAME_CURSOR_WIDTH): New macro.
-
-       * xterm.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH
-       for bar cursor.
-
-2002-07-26  Kenichi Handa  <handa@etl.go.jp>
-
-       * coding.c (detect_coding_iso2022): While checking a byte sequence
-       for CODING_CATEGORY_MASK_ISO_8_2, if we read one extra byte, check
-       it in the normal loop.
-
-2002-07-24  Gerd Moellmann  <gerd.moellmann@t-online.de>
-
-       * xterm.c (expose_overlaps): New function.
-       (expose_window): Use it to fix the display of overlapping rows.
-
-       * xdisp.c (unwind_redisplay): Clear redisplay_updating_p.
-
-2002-07-23  Ken Raeburn  <raeburn@gnu.org>
-
-       * lisp.h (XPNTR): Use NO_UNION_TYPE version for union as well,
-       since it only depends on XUINT.
-
-       * m/alpha.h (BITS_PER_LONG, BITS_PER_EMACS_INT, EMACS_INT,
-       EMACS_UINT, SPECIAL_EMACS_INT, DATA_SEG_BITS,
-       PNTR_COMPARISON_TYPE, VALBITS, MARKBIT, XINT, XUINT, XPNTR):
-       Macros deleted.
-
-       * mem-limits.h (start_of_data): If DATA_START is defined, prefer
-       its value over other approaches.
-       * sysdep.c (start_of_data): Don't define the function if a macro
-       form has been defined.
-
-2002-07-23  Gerd Moellmann  <gerd.moellmann@t-online.de>
-
-       * xdisp.c (redisplay_updating_p): New variable.
-       (init_iterator): Don't free realized faces when
-       redisplay_updating_p is set.
-       (redisplay_internal): Set redisplay_updating_p while updating
-       the display.
-
-2002-07-23  Richard M. Stallman  <rms@gnu.org>
-
-       * editfns.c (Fmessage): Treat "" like nil.
-
-2002-07-23  Kenichi Handa  <handa@etl.go.jp>
-
-       * xdisp.c (face_before_or_after_it_pos):
-       Call FETCH_MULTIBYTE_CHAR with byte postion, not char position.
-
-2002-07-22  Juanma Barranquero  <lektu@terra.es>
-
-       * callproc.c (init_callproc) [DOS_NT]:
-       Initialize Vshared_game_score_directory to nil.
-       (syms_of_callproc) [DOS_NT]: Likewise.
-
-2002-07-22  Gerd Moellmann  <gerd.moellmann@t-online.de>
-
-       * xdisp.c (display_line): Replace an abort with xassert.
-
-2002-07-21  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (redisplay_window): Don't test BEG_UNCHANGED
-       and END_UNCHANGED when setting buffer_unchanged_p.
-       Use current_matrix_up_to_date_p to decide whether to use
-       try_cursor_movement.
-
-       * config.in (HAVE_SHARED_GAME_DIR): Undef deleted.
-
-       * epaths.in (PATH_GAME): New macro, edited by ../Makefile.in.
-
-       * callproc.c (init_callproc): Set up Vshared_game_score_directory.
-       Set to nil if dir does not exist.
-       (syms_of_callproc): Init unconditionally and simply.
-
-       * buffer.c (Fbuffer_list): Doc fix.
-
-2002-07-21  Ken Raeburn  <raeburn@gnu.org>
-
-       * sysdep.c (end_of_text, end_of_data): Unused functions deleted.
-
-       * buffer.c (mmap_realloc): When shrinking, make sure number of
-       pages to unmap is rounded towards zero.
-
-       * m/mips-siemens.h (XSETUINT, XSETPNTR): Unused macros deleted.
-       (XSETINT): Deleted.
-
-       * m/att3b.h (XINT): Don't define.
-       (VALBITS, VALMASK, XTYPE): Deleted.
-       (DATA_SEG_BITS): Define.
-       * m/gec63.h (VALBITS, VALAMASK, XTYPE, XSETTYPE, XPNTR, XSET,
-       ARRAY_MARK_FLAG): Deleted.
-       (DATA_SEG_BITS): Define.
-       * m/pfa50.h (VALBITS, VALMASK, XTYPE): Deleted.
-       (DATA_SEG_BITS): Define.
-
-2002-07-20  Richard M. Stallman  <rms@gnu.org>
-
-       * print.c (print_error_message): New args CONTEXT and CALLER.
-       Calls changed.
-
-       * lisp.h (print_error_message): Declare new args.
-
-       * keyboard.c (cmd_error_internal): Pass Vsignaling_function
-       and CONTEXT to print_error_message, don't print them here.
-       For a Quit, don't use Vsignaling_function.
-       Call message_log_maybe_newline.
-
-       * Makefile.in (xsmfns.o): Don't depend on lisp.h.
-
-2002-07-20  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (redisplay_window): Test MODIFF to set buffer_unchanged_p.
-
-2002-07-19  Ken Raeburn  <raeburn@gnu.org>
-
-       * bytecode.c (struct byte_stack): Pointers into byte string now
-       point to const.
-       * callproc.c (Fcall_process): Make NEW_ARGV array hold pointer to
-       const.
-       * charset.h (BCOPY_SHORT): Source pointer now points to const.
-       * coding.c (encode_eol, detect_coding, detect_eol):
-       (decode_coding, encode_coding, detect_coding_system):
-       Source strings now treated as const.
-       (decode_coding_string, encode_coding_string): Use STRING_COPYIN to
-       modify Lisp string contents.
-       * coding.h (decode_coding, encode_coding, detect_coding,
-       detect_eol): Declarations updated.
-       * composite.c (compose_chars_in_text): Treat Lisp string contents
-       as const.
-       * dispnew.c (safe_bcopy): Source pointer now points to const.
-       * lisp.h (STRING_COPYIN): New macro.
-       (detect_coding_system, safe_bcopy, temp_output_buffer_setup):
-       (internal_with_output_to_temp_buffer): Declarations updated.
-       * print.c (temp_output_buffer_setup):
-       (internal_with_output_to_temp_buffer): Buffer name argument is now
-       pointer to const.
-       * sound.c (struct sound_device): Function pointer field "write"
-       buffer argument now points to const.
-       (vox_write): Buffer argument points to const.
-       * syntax.c (Fstring_to_syntax, skip_chars): Treat Lisp string
-       contents as const.
-       * sysdep.c (emacs_write): Buffer pointer now const.
-       * term.c (encode_terminal_code): Buffer pointer now const.
-       * xfaces.c (may_use_scalable_font_p): Argument now points to const.
-       (x_face_list_fonts, x_update_menu_appearance):
-       (hash_string_case_insensitive): Treat Lisp string contents as const.
-
-2002-07-19  Juanma Barranquero  <lektu@terra.es>
-
-       * xdisp.c (syms_of_xdisp): Remove redundant deprecation info.
-
-       * fileio.c (syms_of_fileio): Likewise.
-       (Ffile_name_as_directory): Fix argument name in docstring.
-       (file_name_as_directory): Use literal '/' instead of DIRECTORY_SEP.
-
-2002-07-18  Richard M. Stallman  <rms@gnu.org>
-
-       * data.c (Fdefalias): Doc fix.
-
-2002-07-17  Dave Love  <fx@gnu.org>
-
-       * intervals.h (text_property_stickiness): Use P_.
-
-       * ccl.c: Remove `emacs' conditionals.
-       (ccl_backtrace_table): Fix size spec.
-       (ccl_driver): Fix type errors.
-
-2002-07-16  Ken Raeburn  <raeburn@gnu.org>
-
-       * alloc.c (xstrdup, make_string, make_unibyte_string)
-       (make_multibyte_string, build_string): String pointer args now
-       point to const.
-       * charset.c (find_charset_in_text, c_string_width):
-       (chars_in_text, multibyte_chars_in_text, parse_str_as_multibyte):
-       * fileio.c (report_file_error):
-       * insdel.c (copy_text, count_size_as_multibyte, insert_1):
-       (count_combining_before, count_combining_after, insert_1_both):
-       (insert, insert_and_inherit, insert_string):
-       (insert_before_markers, insert_before_markers_and_inherit):
-       * lread.c (intern, oblookup, hash_string):
-       * minibuf.c (temp_echo_area_glyphs):
-       * search.c (fast_c_string_match_ignore_case):
-       * sysdep.c (emacs_open, set_file_times):
-       * xfaces.c (xstricmp):
-       * xdisp.c (store_frame_title, string_char_and_length):
-       (message_dolog, message2, message2_nolog, set_message): Likewise.
-       (set_message_1): Cast message string argument to const pointer.
-       * editfns.c (general_insert_function): Insertion function now
-       takes pointer to const for input data.
-       * charset.h (find_charset_in_text, c_string_width):
-       (parse_str_as_multibyte): Declarations updated.
-       * dispextern.h (xstricmp): Declaration updated.
-       * lisp.h (chars_in_text, multibyte_chars_in_text, copy_text):
-       (count_size_as_multibyte, count_combining_before):
-       (count_combining_after, insert_1, insert_1_both, message_dolog):
-       (insert, insert_and_inherit, insert_before_markers)
-       (insert_before_markers_and_inherit, set_message, message2):
-       (message2_dolog, build_string, make_string, make_unibyte_string):
-       (make_multibyte_string, intern, oblookup, report_file_error):
-       (fast_c_string_match_ignore_case, temp_echo_area_glyphs):
-       (emacs_open, xstrdup): Declarations updated.
-       * systime.h (set_file_times): Declaration updated.
-
-       * charset.c (find_charset_in_text, lisp_string_width): Use const
-       for pointer to lisp string data.
-       * charset.h (FETCH_STRING_CHAR_ADVANCE):
-       (FETCH_STRING_CHAR_ADVANCE_NO_CHECK):
-       * coding.c (Ffind_coding_systems_region_interval):
-       * fileio.c (Ffile_name_directory, Ffile_name_nondirectory):
-       (Fmake_directory_internal, Fdelete_directory):
-       (Ffile_name_absolute_p, Fwrite_region, double_dollars):
-       * fontset.c (font_family_registry, fs_query_fontset):
-       (list_fontsets):
-       * frame.c (Fframe_parameter):
-       * keyboard.c (cmd_error_internal):
-       * keymap.c (Fdescribe_buffer_bindings):
-       * lread.c (complete_filename_p, openp):
-       * minibuf.c (Fminibuffer_complete_word):
-       * xdisp.c (string_pos_nchars_ahead, init_from_display_pos):
-       (face_before_or_after_it_pos, next_element_from_string):
-       (get_overlay_arrow_glyph_row, display_mode_element):
-       (decode_mode_spec_coding):
-       * xterm.c (same_x_server): Likewise.
-
-       * buffer.c (reset_buffer_local_variables): Delete "#if 0"
-       settings of non-existent fields.
-
-       * editfns.c (Fstring_to_char): Don't use XSTRING/XSETSTRING to
-       copy a lisp value.
-
-       * lread.c (Fintern_soft): Use string macros instead of
-       Lisp_String fields.
-       * keyboard.c (echo_char, parse_modifiers_uncached):
-       (parse_solitary_modifier, Fexecute_extended_command): Likewise.
-       * textprop.c (validate_interval_range, interval_of): Likewise.
-
-       * fontset.c (Fset_fontset_font): Use SDATA instead of XSTRING()->data.
-
-       * charset.h (FETCH_STRING_CHAR_ADVANCE)
-       (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SBYTES instead of
-       XSTRING()->size_byte.
-
-       * lisp.h (SDATA, SREF): Produce rvalue.
-       (SSET): New macro.
-       * alloc.c (make_event_array): Use SSET for storing into a string.
-       * buffer.c (Fother_buffer): Use SREF when retrieving a byte from
-       a string.
-       * casefiddle.c (casify_object): Use SSET.
-       * charset.h (FETCH_STRING_CHAR_ADVANCE)
-       (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SDATA when getting
-       address of string contents.
-       * data.c (Faref): Use SDATA.
-       (Faset): Use SDATA, SSET.
-       * dired.c (directory_files_internal): Use SSET.
-       * fileio.c (Fmake_symbolic_link, Fexpand_file_name): Use SSET.
-       (Fread_file_name): Use SREF, SSET.
-       * fns.c (concat): Use SSET.
-       (concat, Fdelete): Use SDATA.
-       * insdel.c (insert_from_string_1): Use SDATA.
-       * keyboard.c (Fevent_convert_list): Use SREF.
-       * lread.c (Fload): Use SDATA, SSET.
-       * macfns.c (validate_x_resource_name): Use SSET.
-       * process.c (status_message): Use SSET.
-       * search.c (wordify): Use SDATA.
-       (Freplace_match): Use SREF.
-       * w32fns.c (validate_x_resource_name): Use SSET.
-       * xfns.c (validate_x_resource_name): Use SSET.
-       * xterm.c (x_catch_errors, x_clear_errors): Use SSET.
-
-2002-07-16  Richard M. Stallman  <rms@gnu.org>
-
-       * s/hpux11.h (USG_SUBTTY_WORKS): Defined.
-
-       * xdisp.c (reconsider_clip_changes):
-       Don't test prevent_redisplay_optimizations_p.
-       (redisplay_internal): Test prevent_redisplay_optimizations_p
-       along with clip_changed in some cases.
-       (try_window_id): Likewise.
-       (redisplay_window): New local var buffer_unchanged_p.
-
-       * keyboard.c (cmd_error) [HAVE_X_WINDOWS]: Maybe call cancel_houglass.
-
-       * process.c (create_process): Test USG_SUBTTY_WORKS.
-       (process_send_signal): Clean up handling of GID.
-       Detect errors in ioctls meant to set GID.
-
-       * window.c (temp_output_buffer_show):
-       Don't set prevent_redisplay_optimizations_p.
-
-2002-07-15  Juanma Barranquero  <lektu@terra.es>
-
-       * eval.c (Fdefvaralias): Add docstring argument.
-
-2002-07-15  Ken Raeburn  <raeburn@gnu.org>
-
-       * lisp.h (STRING_INTERVALS): Produce rvalue.
-       (STRING_SET_INTERVALS): New macro.
-       * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Use it.
-       * fns.c (Fstring_as_multibyte): Likewise.
-       * intervals.c (balance_possible_root_interval, delete_interval)
-       (create_root_interval, copy_intervals_to_string): Likewise.
-       * textprop.c (set_text_properties): Likewise.  Use NULL_INTERVAL
-       instead of 0.
-
-2002-07-14  Ken Raeburn  <raeburn@gnu.org>
-
-       * lisp.h (STRING_SET_CHARS): New macro.
-       (SCHARS, SBYTES): Produce rvalues.
-       * dired.c (directory_files_internal): Use STRING_SET_CHARS.
-       * fns.c (concat): Likewise.
-       * lread.c (read_vector): Likewise.
-
-       * lisp.h (SMBP): Delete.  All uses changed to STRING_MULTIBYTE.
-       (STRING_SET_UNIBYTE): New macro.
-       (SET_STRING_BYTES): Delete.  Callers (all of which supplied a
-       length of -1) changed to use STRING_SET_UNIBYTE.
-       * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c,
-       casefiddle.c, category.c, ccl.c, charset.c, charset.h, coding.c,
-       composite.c, data.c, dired.c, dispnew.c, disptab.h, doc.c,
-       dosfns.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, fn.c,
-       fontset.c, frame.c, indent.c, insdel.c, intervals.c, keyboard.c,
-       keymap.c, lread.c, mac.c, macfns.c, macmenu.c, macterm.c,
-       minibuf.c, msdos.c, print.c, process.c, search.c, sound.c,
-       sunfns.c, syntax.c, syntax.h, sysdep.c, textprop.c, undo.c,
-       w16select.c, w32.c, w32fns.c, w32menu.c, w32proc.c, w32select.c,
-       w32term.c, window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c,
-       xselect.c, xsmfns.c, xterm.c: Most uses of XSTRING combined with
-       STRING_BYTES or indirection changed to SCHARS, SBYTES,
-       STRING_INTERVALS, SREF, SDATA; explicit size_byte references left
-       unchanged for now.
-
-2002-07-13  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (command_loop_1): Invert check on Vmemory_full.
-
-2002-07-12  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Fwrite_region): Doc fix.
-
-       * print.c (print_error_message): Don't handle Vsignaling_function here.
-
-       * keyboard.c (cmd_error_internal): Handle Vsignaling_function here.
-       (command_loop_1): Avoid certain actions after memory-full error.
-
-       * eval.c (Fsignal): Don't call cancel_hourglass.
-       For a memory-full error, don't call Vsignal_hook_function
-       and don't set Vsignaling_function.
-
-       * process.c (process_send_signal): Add abort call.
-
-2002-07-11  Markus Rost  <rost@math.ohio-state.edu>
-
-       * keymap.c (Fkey_binding): Fix typo.
-
-2002-07-11  Richard M. Stallman  <rms@gnu.org>
-
-       * alloc.c (Vmemory_full): New variable.
-       (Vmemory_signal_data): Rename from memory_signal_data.
-       Uses changed.
-       (syms_of_alloc): Defvar them.
-       (memory_full, buffer_memory_full): Set Vmemory_full.
-
-       * lisp.h (Vmemory_full): Add declaration.
-       (current_column, indented_beyond_p): Change declaration.
-
-       * indent.c (last_known_column): Declare as double, not float.
-       (current_column, current_column_1, string_display_width)
-       (position_indentation): Return `double'.
-       (indented_beyond_p): Arg `column' is `double'.  Callers changed.
-
-       * xdisp.c (message_dolog): Do nothing if Vmemory_full is non-nil.
-       (back_to_previous_visible_line_start)
-       (reseat_at_next_visible_line_start, next_element_from_buffer):
-       Use `double', not `float', when calling indented_beyond_p.
-
-       * s/hpux11.h (BROKEN_SA_RESTART): Define.
-
-       * sysdep.c (sys_signal): Test BROKEN_SA_RESTART.
-
-2002-07-11  Juanma Barranquero  <lektu@terra.es>
-
-       * alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, coding.c,
-       * composite.c, dired.c, dispnew.c, editfns.c, emacs.c, eval.c,
-       * fileio.c, fns.c, insdel.c, keyboard.c, keymap.c, lread.c, macfns.c,
-       * macmenu.c, macros.c, minibuf.c, print.c, process.c, sound.c,
-       * textprop.c, w32fns.c, w32menu.c, window.c, xfaces.c, xfns.c,
-       * xmenu.c, xselect.c, xterm.c: Use SPECPDL_INDEX wherever makes sense.
-
-2002-07-10  Juanma Barranquero  <lektu@terra.es>
-
-       * lisp.h (SPECPDL_INDEX): Rename from BINDING_STACK_SIZE.
-       All callers changed.
-
-2002-07-09  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * data.c (Fdefalias): Add an optional `docstring' argument.
-       (set_internal, Fsetq_default): Use XCAR/XCDR.
-
-       * composite.c (HASH_VALUE, HASH_KEY):
-       * ccl.c (HASH_VALUE): Remove (it's in lisp.h now).
-
-2002-07-09  Kenichi Handa  <handa@etl.go.jp>
-
-       * callproc.c (Fcall_process): Fix previous change.
-
-2002-07-07  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
-       Add support for hash-tables.
-       (Ftry_completion): Return t even if the string appears multiple times.
-
-       * fns.c (Fnconc): Use XCDR.
-       (Fprovide): Use CONSP and XCDR.
-       (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
-       (HASH_TABLE_SIZE): Delete: moved to lisp.h.
-       (Fmake_hash_table): Accept `:size nil'.
-       (Fmakehash): Delete: moved to subr.el.
-       (syms_of_fns): Don't defsubr makehash.
-
-       * lisp.h (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
-       (HASH_TABLE_SIZE): Move from fns.c.
-
-2002-07-07  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (make_cursor_line_fully_visible): Don't try short scrolls.
-       Instead just return 0 when there is something to be done.
-       (try_scrolling): If make_cursor_line_fully_visible returns 0,
-       retry scrolling as if cursor were off the bottom.
-       (try_cursor_movement): If make_cursor_line_fully_visible returns 0,
-       return CURSOR_MOVEMENT_MUST_SCROLL.
-       (redisplay_window): If make_cursor_line_fully_visible returns 0,
-       go to try_to_scroll.
-
-       * buffer.c (Fbuffer_local_value): Store current value into its binding
-       so we get the up-to-date value for the binding that is loaded.
-
-       * eval.c (Fdefmacro): Doc fix.
-
-2002-07-05  Dave Love  <fx@gnu.org>
-
-       * keyboard.c (read_key_sequence): Set initial_idleness_start_time
-       correctly.
-
-       * ccl.c (Vtranslation_hash_table_vector, GET_HASH_TABLE)
-       (HASH_VALUE, CCL_LookupIntConstTbl, CCL_LookupCharConstTbl): New.
-       (ccl_driver): Add cases for CCL_LookupIntConstTbl,
-       CCL_LookupCharConstTbl.
-       (syms_of_ccl): Defvar translation-hash-table-vector.
-
-2002-07-05  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * xdisp.c: Remove unused variable `face'.
-
-2002-07-04  Juanma Barranquero  <lektu@terra.es>
-
-       * keyboard.c (post_command_idle_hook): Remove redundant (and inexact)
-       obsolescence information.
-
-2002-07-03  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (x_list_fonts): Fix comment.  Cache fonts matching
-       pattern.  Search cache first.
-       (init_font_name_table): Also add entry for jisx0201.1976-0 coding
-       for Japanese font.
-       (XLoadQueryFont): Use it.
-
-2002-07-02  Richard M. Stallman  <rms@gnu.org>
-
-       * keymap.c (Fdefine_key): Doc fix.
-
-       * xterm.c (x_term_init): Turn off polling around XtOpenDisplay.
-
-2002-07-02  Juanma Barranquero  <lektu@terra.es>
-
-       * keymap.c (syms_of_keymap): Fix typo.
-
-2002-07-01  Andrew Choi  <akochoi@shaw.ca>
-
-       * s/darwin.h: Define POSIX_SIGNALS.
-
-       * macterm.c (do_ae_open_documents) [MAC_OSX]: Call FSpMakeFSRef
-       and FSRefMakePath to convert FSSpec returned with Apple Event to
-       Posix pathname.
-       (mac_initialize) [TARGET_API_MAC_CARBON]:
-       Call init_required_apple_events and disable the `Quit' menu item
-       provided automatically by the Carbon Toolbox.
-
-2002-07-01  Dave Love  <fx@gnu.org>
-
-       * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal decl
-       for K&R.
-
-       * xterm.c: Fix prototype for K&R.
-
-       * term.c (costs_set): Declare static, non-initialized for pcc.
-
-2002-07-01  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (timer_last_idleness_start_time): New variable.
-       (timer_start_idle): Set that.
-       (read_key_sequence): Use that to reset timer_idleness_start_time
-       to previous value.
-
-       * window.c (Frecenter): With arg, set optional_new_start.
-
-       * xdisp.c (redisplay_internal): Make optional_new_start really work.
-
-       * minibuf.c (Fminibuffer_complete_and_exit): Move to end of
-       buffer for completion.
-
-2002-06-29  Ken Raeburn  <raeburn@gnu.org>
-
-       * xdisp.c (store_mode_line_string): Lisp_Object/int mixup.
-
-2002-06-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * keyboard.c (readable_filtered_events): New function that filters
-       FOCUS_IN_EVENT depending on parameter.
-       (readable_events): Calls readable_filtered_events, not filtering
-       FOCUS_IN_EVENT.
-       (get_filtered_input_pending): New function, filtering parameter passed
-       to readable_filtered_events.
-       (get_input_pending): Calls get_filtered_input_pending, not filtering
-       FOCUS_IN_EVENT.
-       (Finput_pending_p): Calls get_filtered_input_pending, DO filter
-       FOCUS_IN_EVENT.
-
-       * xterm.h (struct x_output): Add focus_state.
-
-       * xterm.c (x_focus_changed): New function.
-       (x_detect_focus_change): New function.
-       (XTread_socket): Call x_detect_focus_change for FocusIn/FocusOut
-       EnterNotify and LeaveNotify to track X focus changes.
-
-2002-06-28  Andreas Schwab  <schwab@suse.de>
-
-       * lisp.h: Remove duplicate declaration of code_convert_string_norecord.
-
-2002-06-27  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (mode_line_string_list, mode_line_string_face)
-       (mode_line_string_face_prop): New variables.
-       (store_mode_line_string): New function.
-       (display_mode_element): Use store_mode_line_string to
-       add mode-line string elements to mode_line_string_list
-       when mode_line_string_list is non-nil.
-       (Fformat_mode_line): Now returns propertized string by
-       default.  New arg NO-PROPS to ignore properties.
-       (decode_mode_spec): Only add two dashes for %- in propertized
-       mode-line string.
-       (syms_of_xdisp): Init and staticpro mode_line_string_list.
-
-2002-06-27  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * minibuf.c (minibuffer_completion_contents): Add return type.
-
-2002-06-27  Juanma Barranquero  <lektu@terra.es>
-
-       * charset.c (Fchar_bytes): Remove obsolescence info from docstring.
-
-2002-06-26  Juanma Barranquero  <lektu@terra.es>
-
-       * fileio.c (read_file_name_cleanup): Add missing return.
-
-2002-06-26  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Frecenter): Don't set force_start flag.
-
-       * minibuf.c (do_completion, Fminibuffer_complete_word)
-       (Fminibuffer_completion_help): Complete just the text before point.
-       (minibuffer_completion_contents): New function.
-
-       * buffer.c (Fbury_buffer): Use frames_discard_buffer.
-
-       * frame.c (frames_bury_buffer): Function deleted.
-
-2002-06-25  Miles Bader  <miles@gnu.org>
-
-       * callint.c (Fcall_interactively): When checking to see if doprnt hit
-       the end of callint_message, allow for a terminating '\0'.
-
-2002-06-24  Juanma Barranquero  <lektu@terra.es>
-
-       * w32select.c: Include composite.h.
-
-       * w16select.c: Likewise.
-
-2002-06-24  Kenichi Handa  <handa@etl.go.jp>
-
-       * callproc.c (Fcall_process): If code detection is necessary,
-       call detect_coding directly here.
-
-       * coding.c (detect_eol): Preserve coding->cmp_data.
-
-       * w16select.c (Fw16_get_clipboard_data):
-       * w32fns.c (w32_to_x_font):
-       * w32select.c (Fw32_get_clipboard_data):
-       * xselect.c (selection_data_to_lisp_data):
-       * xterm.c (XTread_socket): Disable composition handling.
-
-2002-06-24  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * print.c (temp_output_buffer_setup): Kill all local variables.
-
-2002-06-22  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * lread.c (Fread): Remove redundant and imprecise declaration.
-
-       * xfns.c (check_x_display_info): Use check_x_frame.
-
-       * .gdbinit (xprintsym): Use the new `xname' field.
-       (xsymbol): Use it.
-
-2002-06-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (file_dialog_callback): New function.
-       (Fx_file_dialog): Allow selecting directories as well as files.
-
-2002-06-21  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * m/pmax.h (START_FILES): Define START_FILES for NetBSD and
-       OpenBSD.  Add support for mipseb-*-netbsd* machines.
-
-2002-06-17  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (mac_scroll_area): Set foreground and backcolor to
-       black and white before scrolling.  Restore frame background and
-       foreground color after scrolling.
-       (do_window_update): Call XClearWindow before calling expose_frame.
-       (make_mac_frame): Don't set FRAME_BACKGROUND_PIXEL and
-       FRAME_FOREGROUND_PIXEL of frame.
-
-       * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil,
-       test Mac command key as <ALT> key.
-
-2002-06-17  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * window.c (Fset_window_configuration): Lisp_Object/int mixup.
-
-       * keyboard.c (read_key_sequence): Be more careful with first_unbound.
-       Lookup keys in function-key-map immediately so that key-translation-map
-       can be applied earlier.
-       Remove function_key_possible and key_translation_possible, replaced
-       by checking `keytran_start < t'.
-
-       * .gdbinit (xsymbol): Use the new `xname' field.
-
-2002-06-17  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil,
-       test Mac command key as <ALT> key.
-
-       * mac.c (do_applescript): Call initialize_applescript if necessary
-       when first called.  Dispose of result_desc only when there is no error.
-       (Fdo_applescript): Use %d format specifier instead of %ld.
-
-2002-06-16  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (XTread_socket): Call FrontNonFloatingWindow instead
-       of FrontWindow for cases keyDown and autoKey.
-
-       * fontset.c (syms_of_fontset) [MAC_OS]: Set ASCII font of
-       Vdefault_fontset to Monaco with mac-roman coding.
-
-       * mac.c, macfns.c, macmenu.c, macterm.c: Undefine and redefine
-       init_process before and after inclusion of Carbon/Carbon.h, resp.
-
-       * macterm.c (x_new_font): Set font for normal_gc, reverse_gc, and
-       cursor_gc.
-       (add_font_name_table_entry): New function.
-       (init_font_name_table): Use add_font_name_table_entry; add italic,
-       bold, and bold-italic entries for truetype fonts.
-
-       * xfaces.c (init_frame_faces) [MAC_OS]: Call realize_basic_faces
-       for Mac too.
-       (try_font_list) [MAC_OS]: If no font matches given registry, try
-       fonts with any registry matching face_family.
-       (realize_x_face) [MAC_OS]: Remove old ad-hoc fix to load font here.
-
-       * s/darwin.h: If autoconf detects the Ncurses library, define
-       LIBS_TERMCAP to -lncurses to use it.
-
-2002-06-16  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * strftime.c [__hpux]: Include sys/_mbstate_t.h.
-
-2002-06-15  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Fset_window_configuration): Explicitly preserve
-       the point value that new_current_buffer had at the start.
-
-2002-06-14  Juanma Barranquero  <lektu@terra.es>
-
-       * composite.c (Fcompose_region_internal, Fcompose_string_internal):
-       Fix typos.
-
-2002-06-14  Kim F. Storm  <storm@cua.dk>
-
-       * insdel.c (insert_1_both, insert_from_string_1)
-       (insert_from_buffer_1): Recalculate END_UNCHANGED in case the
-       insert happened in the end_unchanged region.  Otherwise, the
-       redisplay may be confused and duplicate the last line in the
-       buffer [seen after save-buffer when require-final-newline==t].
-
-2002-06-13  Jason Rumney  <jasonr@gnu.org>
-
-       * w32.c (init_environment): Remove EMACSLOCKDIR.
-       (stat): Swap _S_IFDIR and _S_IFREG.
-
-2002-06-13  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * keyboard.c, macterm.c, macmenu.c, msdos.c, sysdep.c
-       * termhooks.h, xmenu.c, xsmfns.c, xterm.h, xterm.c, w32term.c,
-       * w32menu.c, w32inevt.c: Rename enum event_kind as follows:
-       ascii_keystroke to ASCII_KEYSTROKE_EVENT, multibyte_char_keystroke
-       to MULTIBYTE_CHAR_KEYSTROKE_EVENT, non_ascii_keystroke to
-       NON_ASCII_KEYSTROKE_EVENT, timer_event to TIMER_EVENT, mouse_click
-       to MOUSE_CLICK_EVENT, mouse_wheel to MOUSE_WHEEL_EVENT,
-       language_change_event to LANGUAGE_CHANGE_EVENT, scroll_bar_click
-       to SCROLL_BAR_CLICK_EVENT, w32_scroll_bar_click to
-       W32_SCROLL_BAR_CLICK_EVENT, selection_request_event to
-       SELECTION_REQUEST_EVENT, selection_clear_event to
-       SELECTION_CLEAR_EVENT, buffer_switch_event to BUFFER_SWITCH_EVENT,
-       delete_window_event to DELETE_WINDOW_EVENT, iconify_event to
-       ICONIFY_EVENT, deiconify_event to DEICONIFY_EVENT,
-       menu_bar_activate_event to MENU_BAR_ACTIVATE_EVENT, drag_n_drop to
-       DRAG_N_DROP_EVENT, save_session_event to SAVE_SESSION_EVENT and
-       no_event to NO_EVENT.
-
-2002-06-12  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * macmenu.c: Remove declaration of Qmouse_click and Qevent_kind.
-
-2002-06-12  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * intervals.c (textget): Don't forget to `return'.
-       (lookup_char_property): Use XCAR/XCDR.
-
-2002-06-12  Juanma Barranquero  <lektu@terra.es>
-
-       * xdisp.c (Fformat_mode_line): Fix typo.
-
-2002-06-12  Kim F. Storm  <storm@cua.dk>
-
-       * xdisp.c (Fformat_mode_line): New function.
-       (frame_title_buf, frame_title_buf_end, frame_title_ptr)
-       (store_frame_title_char, store_frame_title): Use unconditionally.
-       (init_xdisp): Defsubr Fformat_mode_line.
-       Initialize frame_title_buf etc. unconditionally.
-
-2002-06-11  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (read_key_sequence):
-       Remove prev_(fkey|keytran}_(map|start|end) since we don't want to pass
-       things through those maps after downcasing events.
-       Enforce that keytran_end <= fkey_start, i.e. that key-translation-map
-       applies after function-key-map.
-       Make sure that keytran can be done in the middle in the sequence.
-       Be careful not to throw away events past the one we downcase.
-
-       * lread.c (read_integer): Remove unused var `tem'.
-       (read1): Fix int/Lisp_Object mixup.
-
-       * xfaces.c (tty_lookup_color): Type bool/Lisp_Object mismatch fixed.
-
-2002-06-11  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (readable_events): Ignore any number of
-       FOCUS_IN_EVENT events and return 0 if nothing else in buffer.
-
-2002-06-09  Miles Bader  <miles@gnu.org>
-
-       * xfaces.c (Ftty_supports_face_attributes_p): New function.
-       (parse_rgb_list, tty_lookup_color): New functions.
-       (tty_defined_color): Use `tty_lookup_color' to do all the work.
-       (color_distance, Fcolor_distance): New functions.
-       (TTY_SAME_COLOR_THRESHOLD): New macro.
-       (Qtty_color_standard_values): New variable.
-       (syms_of_xfaces): Initialize new vars & functions.
-
-2002-06-08  Colin Walters  <walters@verbum.org>
-
-       * textprop.c (Vchar_property_alias_alist): New variable.
-       (syms_of_textprop) <Vchar_property_alias_alist>: DEFVAR_LISP.
-
-       * intervals.c (lookup_char_property): New function for looking up
-       overlay and text properties, created from textget.
-       (textget): Use it.
-
-       * intervals.h (lookup_char_property): Declare.
-       (Vchar_property_alias_alist): Declare.
-
-       * buffer.c (Foverlay_get): Use lookup_char_property.
-
-2002-06-07  Sam Steingold  <sds@gnu.org>
-
-       * xselect.c (lisp_data_to_selection_data): Fix last change:
-       *data_ret is not a Lisp string, while unibyte_string is.
-
-2002-06-07  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * xselect.c (lisp_data_to_selection_data): Fix last change:
-       set size_ret.
-
-2002-06-07  Andreas Schwab  <schwab@suse.de>
-
-       * m/amdx86-64.h: New file.
-
-2002-06-05  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * fns.c (Fstring_make_unibyte): Doc fix.
-
-       * xselect.c (lisp_data_to_selection_data): If the requested type
-        is STRING, call string_make_unibyte to encode the selected text
-        as a string.
-
-       * window.c (Fset_window_hscroll): Doc fix.
-
-2002-06-05  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * fileio.c (choose_write_coding_system):
-       Call select-safe-coding-system properly.
-
-2002-06-03  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (message_with_string): Error if STRING is not a string.
-
-       * fns.c (md5): Pass FILE arg to Vselect_safe_coding_system_function.
-
-       * fileio.c (choose_write_coding_system): Pass FILE arg to
-       Vselect_safe_coding_system_function.
-
-2002-06-03  Ken Raeburn  <raeburn@gnu.org>
-
-       * buffer.c (fix_overlays_before): Fix list-walking bug in 05-19 change.
-
-2002-06-02  Thien-Thi Nguyen  <ttn@gnu.org>
-
-       * bytecode.c (Fbyte_code): Cast `current_column' return value to int.
-       * cmds.c (Fdelete_backward_char, internal_self_insert): Likewise.
-       * keymap.c (describe_command): Likewise.
-       * minibuf.c (read_minibuf): Likewise.
-
-       * xdisp.c (redisplay_internal, redisplay_window, decode_mode_spec):
-       Cast `current_column' return value to int.
-       (back_to_previous_visible_line_start)
-       (reseat_at_next_visible_line_start, next_element_from_buffer):
-       Cast `indented_beyond_p' 3rd arg to float.
-
-       * indent.c (last_known_column): Now a float.
-       (current_column_1, position_indentation, current_column)
-       (string_display_width): Return float.
-       (Fcurrent_column): Cast `current_column' return value to int.
-       (Fcurrent_indentation): Cast `position_indentation' retval to int.
-       (indented_beyond_p): Third arg now a float.
-       (compute_motion, vmotion): Cast `indented_beyond_p' 3rd arg to float.
-
-       * lisp.h (current_column): Now returns float.
-       (indented_beyond_p): 3rd arg now a float.
-
-2002-05-31  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * xfns.c (x_encode_text): Return stringp non-NULL if coding_system
-       is Qcompound_text_with_extensions.
-
-       * xselect.c (lisp_data_to_selection_data): Always set selection
-       type as string if x_encode_text returns streingp non-NULL.
-
-       * s/netbsd.h: Include /usr/pkg in the run time shared library path.
-
-2002-05-30  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (Fset_window_configuration): Correct the handling
-       of point in current buffer, to work with multiple windows.
-
-2002-05-29  Colin Walters  <walters@verbum.org>
-
-       * lread.c (Fread_from_string): Don't depend on order of evaluation
-       for C function parameters.
-
-2002-05-28  Richard M. Stallman  <rms@gnu.org>
-
-       * xterm.c (x_display_and_set_cursor): Change the cursor in the same
-       way for blinked-off state and for a nonselected window.
-
-       * window.c (window_scroll_pixel_based): Don't call Fbolp;
-       instead, see if the new start pos is at beginning of line.
-
-       * fileio.c (Fwrite_region): If START is a string, don't
-       make any annotations.
-
-       * eval.c (syms_of_eval): Doc fix.
-
-2002-05-28  Colin Walters  <walters@debian.org>
-
-       * emacs.c (USAGE1): Add --no-splash.
-       (standard_args): Ditto.
-
-2002-05-28  Colin Walters  <walters@gnu.org>
-
-       * lread.c (readchar_count): New variable.
-       (readchar): Increment it.
-       (unreadchar): Decrement it.
-       (read_multibyte): Decrement it.
-       (Vread_with_symbol_positions): New variable.
-       (Vread_symbol_positions_list): New variable.
-       (read_internal_start): New function, created from Fread and
-       Fread_from_string.  Handle Vread_symbol_positions_list and
-       Vread_with_symbol_positions.
-       (readevalloop, Fread, Fread_from_string): Use it.
-       (read1): Use readchar_count to add symbol positions to
-       Vread_symbol_positions_list if Vread_with_symbol_positions is non-nil.
-       (syms_of_lread): DEFVAR_LISP and initialize them.
-
-       * lread.c (read0, read1, read_list, read_vector, read_multibyte)
-       (substitute_object_recurse, substitute_object_in_subtree)
-       (substitute_in_interval): Prototype.
-       (read_multibyte): Return c if it's less than zero.
-
-2002-05-28  Kim F. Storm  <storm@cua.dk>
-
-       * fileio.c (Fread_file_name_internal): Added brute-force
-       speed up for using predicate file-directory-p.
-
-2002-05-28  Kim F. Storm  <storm@cua.dk>
-
-       * fileio.c (Vread_file_name_function, Vread_file_name_predicate):
-       New variables.
-       (syms_of_fileio): DEFVAR_LISP them.
-       (read_file_name_cleanup): New unwind function.
-       (Fread_file_name_internal): Only return completions satifying
-       Vread_file_name_predicate.  Temporarily unwind protect and rebind
-       default-directory while checking completions against the predicate.
-       (Fread_file_name): Added PREDICATE argument.  Specbind it to
-       Vread_file_name_predicate during completion.
-       Call Vread_file_name_function to read the file name if non-nil.
-
-       * lisp.h (Fread_file_name): Now has 6 args.
-
-       * callint.c (Fcall_interactively) <"D">: Supply Qfile_directory_p
-       predicate for Fread_file_name when reading directory name.
-       Supply Qnil for predicate in other calls to Fread_file_name.
-
-2002-05-26  Miles Bader  <miles@gnu.org>
-
-       * term.c (tty_capable_p): New function.
-       * dispextern.h (tty_capable_p): New function declaration.
-       (TTY_CAP_INVERSE, TTY_CAP_UNDERLINE, TTY_CAP_BOLD, TTY_CAP_DIM)
-       (TTY_CAP_BLINK, TTY_CAP_ALT_CHARSET): New macros.
-
-2002-05-23  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * fileio.c (read_non_regular, Finsert_file_contents): Use BEG_BYTE.
-       (Finsert_file_contents, build_annotations): Use XCAR, XCDR.
-       (Vwrite_region_annotate_functions): Docstring fix.
-
-2002-05-23  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (x_write_glyphs): Clear phys_cursor_on_p if current
-       phys_cursor's hpos is overwritten.  This is still not completely
-       correct, as it doesn't really make sense to use hpos at all to
-       get the cursor glyph (as that is relative to the width of the
-       characters on the line, which may have changed during the update).
-
-2002-05-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (enumfont_t): Remove tail, make pattern a normal
-       Lisp_Object.
-       (enum_font_cb2, enum_font_maybe_add_to_list, w32_list_fonts):
-       Use modified enumfont_t struct.
-
-       * w32term.h (text_cursor_kinds): New enumeration member HBAR_CURSOR.
-
-       * w32term.c (x_draw_bar_cursor): New argument KIND; callers changed.
-       Handle the `hbar' cursor type.
-       (x_display_and_set_cursor): Handle the HBAR_CURSOR case.
-
-       * w32fns.c (Qhbar): New variable.
-       (x_specified_cursor_type): Use it.
-
-2002-05-21  Ken Raeburn  <raeburn@gnu.org>
-
-       * w32fns.c (enum_font_maybe_add_to_list): Use XCDR_AS_LVALUE for
-       now, when the address is needed.
-
-2002-05-21  Colin Walters  <walters@gnu.org>
-
-       * Makefile.in (shortlisp): Add font-core.el.
-
-2002-05-20  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
-
-       * keyboard.c (read_char_minibuf_menu_prompt): Don't list
-       equivalent key bindings here.
-
-2002-05-20  Ken Raeburn  <raeburn@gnu.org>
-
-       Change symbol structure to contain a lisp object for the symbol
-       name:
-       * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
-       object field named "xname".
-       (SYMBOL_NAME): New macro.
-       * abbrev.c (write_abbrev): Use SYMBOL_NAME instead of XSYMBOL and
-       name field.
-       * alloc.c (Fmake_symbol): Set symbol xname field instead of name.
-       (mark_object, gc_sweep): Use symbol xname field and XSTRING
-       instead of name field.
-       * buffer.c (buffer_slot_type_mismatch): Use XSTRING and
-       SYMBOL_NAME instead of XSYMBOL and name field.
-       * callint.c (Fcall_interactively): Use XSTRING and SYMBOL_NAME
-       instead of XSYMBOL and name field.
-       * charset.c (Fdefine_charset, Fdeclare_equiv_charset): Use XSTRING
-       and SYMBOL_NAME instead of XSYMBOL and name field.
-       * coding.c (Fread_coding_system, code_convert_region1)
-       (code_convert_string1, code_convert_string_norecord)
-       (Ffind_operation_coding_system): Use SYMBOL_NAME instead of
-       XSYMBOL and name field.
-       * data.c (Fkeywordp, Fsymbol_name, store_symval_forwarding)
-       (Fmake_variable_buffer_local, Fmake_local_variable)
-       (Fmake_variable_frame_local): Use SYMBOL_NAME and XSTRING instead
-       of XSYMBOL and name field.
-       * editfns.c (Fformat): Use SYMBOL_NAME and XSTRING instead of
-       XSYMBOL and name field.
-       * emacs.c (shut_down_emacs) [#if 0]: Use SYMBOL_NAME and XSTRING
-       instead of XSYMBOL and name field.
-       * eval.c (do_autoload): Use SYMBOL_NAME and XSTRING instead of
-       XSYMBOL and name field.
-       * fns.c (Fstring_equal, Fstring_lessp, Frequire, sxhash):
-       Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field.
-       * fontset.c (Fset_fontset_font): Use SYMBOL_NAME and XSTRING
-       instead of XSYMBOL and name field.
-       * keyboard.c (echo_char, record_char, parse_modifiers_uncached)
-       (parse_modifiers, apply_modifiers, Fevent_convert_list)
-       (parse_solitary_modifier, Fexecute_extended_command):
-       Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field.
-       * keymap.c (silly_event_symbol_error, Fsingle_key_description)
-       (Fdescribe_buffer_bindings): Use SYMBOL_NAME and XSTRING instead
-       of XSYMBOL and name field.
-       (describe_command, describe_translation): Use SYMBOL_NAME and
-       assignment instead of XSYMBOL and name field and XSETSTRING.
-       * lread.c (Fintern_soft, oblookup): Use SYMBOL_NAME and XSTRING
-       instead of XSYMBOL and name field.
-       (Funintern): Use SYMBOL_NAME and assignment instead of XSYMBOL and
-       name field and XSETSTRING.
-       * macfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead
-       of XSYMBOL and name field.
-       * minibuf.c (Fread_command, Fread_variable): Use SYMBOL_NAME and
-       assignment instead of XSYMBOL and name field and XSETSTRING.
-       * print.c (print_error_message, print_object): Use SYMBOL_NAME and
-       XSTRING instead of XSYMBOL and name field.
-       * process.c (set_socket_options, Fsignal_process): Use SYMBOL_NAME
-       and XSTRING instead of XSYMBOL and name field.
-       * w32fns.c (parse_image_spec, w32_parse_hot_key): Use SYMBOL_NAME
-       and XSTRING instead of XSYMBOL and name field.
-       * xfaces.c (merge_face_vector_with_property): Use SYMBOL_NAME and
-       XSTRING instead of XSYMBOL and name field.
-       * xfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead
-       of XSYMBOL and name field.
-       * xselect.c (symbol_to_x_atom, x_get_foreign_selection):
-       Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field.
-
-2002-05-19  Ken Raeburn  <raeburn@gnu.org>
-
-       * lisp.h (LISP_MAKE_RVALUE): Delete disabled version, making XCAR
-       and XCDR real rvalues in most configurations.
-
-       * buffer.c (fix_overlays_in_range, fix_overlays_before):
-       Don't take the address of the cdr part of a cons cell; instead, track
-       the parent cell and call XSETCDR, or set the variable for the head
-       of the list if we haven't started down the list yet.
-
-2002-05-19  Richard M. Stallman  <rms@gnu.org>
-
-       * doc.c (reread_doc_file): Don't ask for confirmation.
-
-2002-05-18  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (w32_create_pixmap_from_bitmap_data): New function.
-       (xbm_load_image): Use it.
-       (xbm_load): Ditto.
-       (xbm_read_bitmap_data): Reverted to xfns.c version.
-       From David Ponce <david@dponce.com>.
-
-2002-05-17  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * msdos.c (sig_suspender, sigprocmask): Don't define for DJGPP
-       2.02 and later.
-
-2002-05-16  Juanma Barranquero  <lektu@terra.es>
-
-       * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Fix typo.
-
-2002-05-15  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (read_char_x_menu_prompt): Use an equivalent but more
-       meaningful test.
-       (read_char_minibuf_menu_prompt): Fix typo.
-
-2002-05-15  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * eval.c (Fcommandp): Doc fix.
-
-2002-05-13  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keymap.c (keymap_parent): New fun, extracted from Fkeymap_parent.
-       (Fkeymap_parent, keymap_memberp, fix_submap_inheritance): Use it.
-       (Fset_keymap_parent): Gcpro a bit more.
-       (access_keymap): Gcpro around meta_map call and around the main loop.
-       (get_keyelt): Gcpro when following indirect references.
-       (copy_keymap_item): New fun, extracted from Fcopy_keymap.
-       (copy_keymap_1, Fcopy_keymap): Use it.  Don't copy the parent map.
-       (Fdefine_key, Flookup_key): Gcpro before calling get_keymap.
-       Remove useless ad-hoc remap code.
-
-2002-05-13  Richard M. Stallman  <rms@gnu.org>
-
-       * search.c (search_buffer): Give up boyer moore search if inverse
-       translation change charset_base.
-
-2002-05-12  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * coding.c (decode_coding) <coding_type_ccl>: If a lone CR
-       characters is carried over from the previous block of text, adjust
-       coding->produced to account for the extra character.
-
-2002-05-11  Andreas Schwab  <schwab@suse.de>
-
-       * coding.c (intersection): Keep the elements of the returned list
-       in the same order as in the first list.
-
-2002-05-11  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (current_minor_maps): Fix resizing of cmm_maps;
-       only update cmm_size if realloc actually succeeds.
-       Testing with initial size of 2 elements revealed that using
-       realloc on GNU/Linux would cause a random trap in xmalloc
-       later on, so I rewrote the code to use malloc/bcopy/free instead
-       of realloc.
-
-2002-05-10  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (enum_font_cb2): Avoid DBCS raster fonts.
-
-2002-05-10  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * coding.c (encode_coding_sjis_big5): Enclose bitwise AND in
-       parens, to ensure correct evaluation order.
-
-2002-05-10  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (Vemulation_mode_map_alists): New variable.
-       (syms_of_keymap): DEFVAR_LISP it.
-       (current_minor_maps): Process keymap alists in that list before
-       minor-mode-overriding-map-alist and minor-mode-map-alist.
-
-2002-05-09  Richard M. Stallman  <rms@gnu.org>
-
-       * search.c (Freplace_match): Doc fix.
-
-2002-05-09  Kim F. Storm  <storm@cua.dk>
-
-       * macterm.c (x_draw_image_foreground, x_draw_image_foreground_1):
-       Enlarge cursor rectangle drawn around image with non-zero relief.
-
-       * w32term.c (x_draw_image_foreground, w32_draw_image_foreground_1):
-       Enlarge cursor rectangle drawn around image with non-zero relief.
-
-       * xterm.c (x_draw_image_foreground, x_draw_image_foreground_1):
-       Enlarge cursor rectangle drawn around image with non-zero relief.
-
-2002-05-07  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * xselect.c (lisp_data_to_selection_data): Don't set selection
-       type if comes from the Lisp object's car.  If the selection
-       contains a pure ASCII text, always return QSTRING as its type.
-
-2002-05-06  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * mac.c (mac-cut-function): Doc fix.
-
-2002-05-05  Richard M. Stallman  <rms@gnu.org>
-
-       * s/gnu.h [DOUG_LEA_MALLOC] (REL_ALLOC): Undefine it.
-
-2002-05-04  Jason Rumney  <jasonr@gnu.org>
-
-       * keyboard.c (make_lispy_event) <mouse-wheel>: Set count to 1
-       for event-click-count.
-
-       * process.c (init_process): Only add server subfeature if we can
-       use non-blocking I/O.
-
-2002-05-04  Andrew Choi  <akochoi@shaw.ca>
-
-       * macterm.c (XTread_socket): Call WaitNextEvent once instead of
-       repeatedly.
-
-2002-05-03  Jason Rumney  <jasonr@gnu.org>
-
-       * process.c (Fmake_network_process): Only support server sockets
-       when we can make them non-blocking.
-
-       * s/ms-w32.h (HAVE_SELECT): Define.
-
-       * w32.h (FILE_NDELAY): New flag.
-
-       * w32.c (sys_getpeername, fcntl): New functions.
-       (_sys_read_ahead): Temporarily block on non-blocking sockets.
-
-       * w32proc.c: Include sys/file.h.
-
-2002-05-03  Colin Walters  <walters@verbum.org>
-
-       * callproc.c (Vgame_score_directory): Renamed to
-       Vshared_game_score_directory.
-
-2002-04-30  Richard M. Stallman  <rms@gnu.org>
-
-       * s/gnu.h [emacs]: Include stdio.h.
-       (GNU_LIBRARY_PENDING_OUTPUT_COUNT): New definition, conditional.
-
-       * eval.c (do_autoload): Error if called while preparing to dump.
-
-       * fns.c (Frequire): Error if need to load while preparing to dump.
-
-2002-04-28  Colin Walters  <walters@verbum.org>
-
-       * callproc.c (Vgame_score_directory) [!HAVE_SHARED_GAME_DIR]:
-       Default to "~/.emacs.d/games".
-
-2002-04-29  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * lread.c (openp): Change arg exec_only to predicate.
-       (build_load_history): Use XCAR/XCDR.
-       (Flocate_file_internal): New fun.
-       (syms_of_lread): Defsubr it.
-       (Fload): Update call to openp.
-
-       * lisp.h (openp): Update prototype.
-
-       * xfns.c (x_create_bitmap_from_file, x_find_image_file):
-       * w32proc.c (sys_spawnve):
-       * w32fns.c (x_create_bitmap_from_file, x_find_image_file):
-       * w32.c (check_windows_init_file):
-       * sound.c (Fplay_sound_internal):
-       * process.c (Fstart_process):
-       * macfns.c (x_create_bitmap_from_file, x_find_image_file):
-       * mac.c (run_mac_command):
-       * emacs.c (init_cmdargs):
-       * callproc.c (Fcall_process): Update call to openp.
-
-       * textprop.c (remove_properties): Don't use XCAR without CONSP.
-
-       * xterm.c (XTread_socket): Disable the Xutf8LookupString code.
-
-2002-04-29  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * dispextern.h (DEFAULT_TOOL_BAR_BUTTON_MARGIN)
-       (DEFAULT_TOOL_BAR_BUTTON_RELIEF): Change default values.
-
-2002-04-28  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.c (Fall_completions, Ftry_completion): New arg to Fcommandp.
-
-       * eval.c (Fcommandp): New arg for_call_interactively.
-       * lisp.h (Fcommandp): Declare new arg.
-
-2002-04-28  Jason Rumney  <jasonr@gnu.org>
-
-       * w32proc.c (syms_of_w32proc): Get true file attributes by default.
-
-       * w32.c (stat, fstat): Use file index information to generate
-       inodes for directories where available.
-
-2002-04-26  Andrew Choi  <akochoi@shaw.ca>
-
-       * Makefile.in (C_SWITCH_SYSTEM_TEMACS): Add.
-       [HAVE_CARBON]: Include Mac object files.
-
-       * alloc.c, callproc.c, dispextern.h, dispnew.c, emacs.c,
-       fontset.c, frame.c, frame.h, keyboard.c, sysdep.c, term.c,
-       termcap.c, window.c, xdisp.c, xfaces.c: Use macros MAC_OS8,
-       MAC_OSX, and MAC_OS instead of macintosh.
-
-       * editfns.c [MAC_OS8]: Include stdio.h.
-
-       * emacs.c [MAC_OS8]: Call mac_initialize instead of x_term_init.
-
-       * fontset.c [MAC_OS]: Set Vdefault_fontset to ETL Fixed instead of
-       Apple Monaco.
-
-       * process.c (QCfamily, QCfilte): Declare extern.
-       (wait_reading_process_input) [MAC_OSX]: Clear bit for stdin before
-       calling select.
-
-       * termcap.c [MAC_OSX]: Don't define tgetnum, PC, tputs, and tgetent.
-
-       * tparam.c [MAC_OSX]: Don't define BC and UP.
-
-       * config.in [HAVE_CARBON]: Add.
-
-       * mac.c, macgui.h, macfns.c, macmenu.c, macterm.c, macterm.h:
-       Move here from mac/src and mac/inc.
-
-       * s/darwin.h, m/powermac.h, unexmacosx.c: New files.
-
-2002-04-26  Gerd Moellmann  <gerd@gnu.org>
-
-       * xterm.c (x_draw_phys_cursor_glyph): Undo last change.
-       Compute phys_cursor_width from the x position returned
-       by x_draw_glyhs, which is cheaper.
-       (x_display_and_set_cursor): Compute the buffer-local value
-       of `cursor-in-non-selected-windows' only when needed.
-
-2002-04-25  Gerd Moellmann  <gerd@gnu.org>
-
-       * xterm.c (x_draw_phys_cursor_glyph): Take into account that a box
-       cursor on a stretch glyph has a width that depends on
-       x_stretch_cursor_p.
-
-2002-04-25  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * abbrev.c (abbrev-start-location): Doc fix.
-
-       * indent.c (Fvertical_motion): Fix last change.
-
-2002-04-25  Gerd Moellmann  <gerd@gnu.org>
-
-       * indent.c (Fvertical_motion): Move to the start of the line
-       containing PT before moving up or down.
-
-2002-04-24  Gerd Moellmann  <gerd@gnu.org>
-
-       * dispnew.c (update_text_area): Set phys_cursor_on_p to 0 in the
-       case of writing a whole row, more or less analogous to the case of
-       writing only parts of a row.
-
-       * xterm.c (x_display_and_set_cursor): Set phys_cursor_width to
-       0 for NO_CURSOR.
-
-       * xterm.c (notice_overwritten_cursor): Fix an off by 1 error.
-
-2002-04-23  Colin Walters  <walters@verbum.org>
-
-       * buffer.c (syms_of_buffer): Doc fix.
-
-2002-04-23  Gerd Moellmann  <gerd@gnu.org>
-
-       * xterm.c (notice_overwritten_cursor): Handle the special case
-       of the cursor being in the first blank non-text line at the
-       end of a window.
-
-       * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor)
-       (x_draw_phys_cursor_glyph): Set phys_cursor_width here.
-       (x_display_and_set_cursor): Don't set phys_cursor_width here, for
-       bar cursors only, to make phys_cursor_width contain what its name
-       suggests.
-       (notice_overwritten_cursor): Consider the cursor image erased if
-       the output area intersects the cursor image in y-direction.
-
-2002-04-23  Simon Marshall  <simon@gnu.org>
-
-       * xfns.c (x_set_mouse_color): Change default for cross_cursor
-       to XC_hand2.
-
-2002-04-23  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * xdisp.c: Remove unused global variable `minibuf_prompt_pixel_width'.
-
-2002-04-22  Kim F. Storm  <storm@cua.dk>
-
-       * textprop.c (remove_properties): Fixed trap for malformed plist.
-
-2002-04-22  Richard M. Stallman  <rms@gnu.org>
-
-       * cmds.c (Fend_of_line): Handle intangible text in mid line.
-
-       * window.c (make_window): Initialize height_fixed_p,
-       last_cursor_off_p, and p->cursor_off_p slots.
-
-2002-04-20  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * fns.c (use-dialog-box): Doc fix.
-
-2002-04-19  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * xterm.c (note_mode_line_or_margin_highlight): Remove unused
-       variables `row', `i' and `area'.
-       (XTread_socket) <KeyPress>: Pass KeyPress events when in menu to
-       toolkit library.
-
-2002-04-19  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xfaces.c (clear_font_table): Don't free the default font of
-       a frame even if it's on another display.
-       (Finternal_set_lisp_face_attribute): Don't use XFRAME on something
-       that could be Qt.
-
-2002-04-19  Juanma Barranquero  <lektu@terra.es>
-
-       * indent.c (Fmove_to_column): Remove unused local variable
-       `next_boundary_byte'.
-       (current_column_1): Likewise.
-
-2002-04-19  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * msdos.c (Qhbar): New variable.
-       (syms_of_msdos): Intern and staticpro it.
-       (IT_set_cursor_type, IT_set_frame_parameters): Handle the `hbar'
-       cursor type.
-
-2002-04-19  Dave Lambert  <dlambert@acm.org>
-
-       Theses change implement an underscore-like (`hbar') cursor.
-
-       * xterm.h (text_cursor_kinds): New enumeration member HBAR_CURSOR.
-
-       * xterm.c (x_draw_bar_cursor): New argument KIND; callers changed.
-       Handle the `hbar' cursor type.
-       (x_display_and_set_cursor): Handle the HBAR_CURSOR case.
-
-       * xfns.c (Qhbar): New variable.
-       (syms_of_xfns): Intern and staticpro it.
-       (x_specified_cursor_type): Handle `hbar' cursor.
-
-       * s/sol2-5.h (bcopy, bzero, bcmp): Define only if HAVE_BCOPY is
-       not defined.
-
-2002-04-18  Richard M. Stallman  <rms@gnu.org>
-
-       * textprop.c (remove_properties): New arg LIST allows scanning
-       either a list or a plist.
-       (interval_has_some_properties_list): New function, like
-       interval_has_some_properties using list instead of plist.
-       All callers changed.
-       (Fremove_list_of_text_properties): New function.
-       (syms_of_textprop): Defsubr it.
-
-2002-04-17  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * s/sol2.h (HAVE_LIBKSTAT): Define only if not already defined.
-
-2002-04-17  Juanma Barranquero  <lektu@terra.es>
-
-       * indent.c (Fmove_to_column): Remove unused local variable `end_byte'.
-
-2002-04-17  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * window.c (coordinates_in_window): Don't report on margin area
-       if its width is zero.
-
-2002-04-16  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Fx_file_dialog): Decode file name before using.
-
-       * w32term.c (construct_drag_n_drop): Likewise.
-
-2002-04-16  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * puresize.h (BASE_PURESIZE): Increase to 830000, since we now
-       store load-history in pure space.
-
-       * s/msdos.h (SYSTEM_PURESIZE_EXTRA): Reduce to 50000.
-
-2002-04-16  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xterm.c (Qlatin_1, Qutf_8): New vars.
-       (syms_of_xterm): Initialize them.
-       (XTread_socket): Eliminate incorrect optimization that tried to avoid
-       decoding the output of X*LookupString.
-       Always use latin-1 to decode the output of XLookupString.
-       Try Xutf8LookupString if XmbLookupString failed.
-
-       * region-cache.c (new_region_cache): Use BEG.
-
-2002-04-16  Gerd Moellmann  <gerd@gnu.org>
-
-       * buffer.c (MMAP_ALLOCATED_P): New macro to be set from system
-       configuration files.
-       (mmap_enlarge): Enlarge mapped regions only if MMAP_ALLOCATED_P
-       returns 0.
-
-2002-04-15  Andreas Schwab  <schwab@suse.de>
-
-       * config.in: Regenerated using autoheader.
-
-       * m/7300.h, m/acorn.h, m/alliant-2800.h, m/alliant.h, m/alpha.h,
-       m/altos.h, m/amdahl.h, m/apollo.h, m/arm.h, m/att3b.h, m/aviion.h,
-       m/celerity.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h,
-       m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/gec63.h,
-       m/gould.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ia64.h,
-       m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h,
-       m/ibms390.h, m/intel386.h, m/iris4d.h, m/irist.h, m/isi-ov.h,
-       m/m68k.h, m/macppc.h, m/masscomp.h, m/mg1.h, m/mips-siemens.h,
-       m/mips.h, m/news-r6.h, m/news.h, m/next.h, m/nh3000.h, m/nh4000.h
-       m/ns32000.h, m/orion.h, m/pfa50.h, m/plexus.h, m/pmax.h,
-       m/powerpcle.h, m/pyrmips.h, m/sequent-ptx.h, m/sequent.h,
-       m/sparc.h, m/sr2k.h, m/symmetry.h, m/tad68k.h, m/tahoe.h,
-       m/targon31.h, m/tek4300.h, m/tekxd88.h, m/template.h, m/tower32.h,
-       m/tower32v3.h, m/ustation.h, m/vax.h, m/wicat.h, m/windowsnt.h,
-       m/xps100.h, s/aix3-2.h, s/aix4-2.h, s/irix4-0.h, s/irix5-0.h,
-       s/sco5.h, s/unixware.h: Don't set HAVE_ALLOCA, C_ALLOCA and
-       STACK_DIRECTION, now set by autoconf.
-
-2002-04-14  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * dispnew.c (marginal_area_string): Sort arguments.
-
-       * dispextern.h (marginal_area_string): Add prototype.
-
-2002-04-13  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Finsert_file_contents):
-       Don't call temp_output_buffer_setup--do just part, by hand.
-
-       * coding.c (run_pre_post_conversion_on_str):
-       Don't call temp_output_buffer_setup--do just part, by hand.
-
-       * keyboard.c (command_loop_1): Don't call start_hourglass
-       or cancel_hourglass when executing a macro.
-
-       * marker.c (count_markers): New function.
-
-       * xdisp.c (display_mode_element): Don't let mode_line_proptrans_alist
-       grow without limit.  Move recently used elements to the front.
-
-2002-04-13  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * unexelf.c (unexec) [__sgi]: Undo the change from 2002-01-20.
-
-2002-04-12  Gerd Moellmann  <gerd@gnu.org>
-
-       * xdisp.c (sync_frame_with_window_matrix_rows): Don't give frame
-       rows marginal areas.
-       (Fdump_frame_glyph_matrix) [GLYPH_DEBUG]: New function.
-       (syms_of_xdisp) [GLYPH_DEBUG]: Defsubr it.
-
-       * dispnew.c (marginal_area_string): Check that glyph row is enabled.
-
-2002-04-12  Dave Love  <fx@gnu.org>
-
-       * dispnew.c (marginal_area_string): New.
-
-       * window.c (window_part): Add ON_LEFT_MARGIN, ON_RIGHT_MARGIN.
-       (Qleft_margin, Qright_margin): Declare.
-       (coordinates_in_window, (Fcoordinates_in_window_p): Deal with margins.
-
-       * xterm.c (note_mode_line_or_margin_highlight): Renamed from
-       note_mode_line_highlight and extended.
-
-       * keyboard.c (Qleft_margin, Qright_margin): Declare.
-       (make_lispy_event): Deal with mouse events in margins.
-
-2002-04-12  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * msdos.c (dos_rawgetc): Use a single event for HELP_EVENT.
-
-       * keyboard.c (command_loop_1): Turn off transient-mark-mode rather
-       than deactivating the mark if tmm is set to `lambda'.
-       (gen_help_event, kbd_buffer_store_help_event, kbd_buffer_get_event):
-       Use a single event for HELP_EVENT.
-       (Fexecute_extended_command): Save last_point_position.
-
-2002-04-12  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * lisp.h (Fpropertize): Add prototype.
-
-       * fns.c (Fy_or_n_p): Use `minibuffer-prompt' face for prompt.
-
-2002-04-10  Colin Walters  <walters@verbum.org>
-
-       * config.in: Add HAVE_SHARED_GAME_DIR.
-
-       * callproc.c (Vgame_score_directory): New variable.
-       (syms_of_callproc) <Vgame_score_directory>: DEFVAR_LISP.
-
-2002-04-10  Richard M. Stallman  <rms@gnu.org>
-
-       * puresize.h (BASE_PURESIZE): Reduce again to avoid big excess.
-
-2002-04-09  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * minibuf.c (read_minibuf): Use empty_string.
-       (Ftry_completion): Allow lambda forms and lists of strings for `alist'.
-       Short-circuit the search as soon as it "failed".
-       (Fall_completions): Allow lambda forms and lists of strings for alist.
-       (Fcompleting_read): Set Qminibuffer_completion_confirm to nil
-       when require_match is nil.
-       (Ftest_completion): Rename from `test_completion' and export to elisp.
-       Call the predicate also when alist is a list.
-       Obey Vcompletion_regexp_list.
-       (do_completion, Fminibuffer_complete_and_exit): Use it.
-       (Fassoc_string): Rename from `assoc_for_completion'.
-       Allow list of strings as well and export to elisp.
-
-2002-04-08  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * puresize.h (BASE_PURESIZE): Increase to 900KB.
-
-2002-04-08  Juanma Barranquero  <lektu@terra.es>
-
-       * w32.c (sys_accept): Don't hide variable `s'.
-
-2002-04-05  Gerd Moellmann  <gerd@gnu.org>
-
-       * callint.c (Fcall_interactively): Use INTEGERP instead of
-       NUMBERP for checking Vhistory_length.
-
-2002-04-05  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * sound.c (Fplay_sound_internal): Renamed from Fplay_sound.
-       Doc fix to reflect it.
-
-2002-04-04  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (display_mode_element): New arg RISKY.
-       Disregard text props found or specified within a variable
-       that isn't marked risky-local-variable.
-       (Qrisky_local_variable): New variable.
-       (syms_of_xdisp): Init and staticpro it.
-
-2002-04-04  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * undo.c (record_point): New fun.
-       (record_delete, record_insert): Use it.
-
-2002-04-03  Juanma Barranquero  <lektu@terra.es>
-
-       * doc.c (Fdocumentation): Add missing parentheses.
-       (Fdocumentation_property): Likewise.
-
-2002-04-03  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * doc.c (Fdocumentation, Fdocumentation_property): When the doc
-       data is 0, just return nil.
-
-2002-04-03  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * msdos.c (syms_of_msdos): Fix last change with
-       mouse_autoselect_window.
-
-2002-04-03  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * w32term.c, xterm.c, msdos.c: Rename autoselect_window_p to
-       mouse_autoselect_window.
-
-2002-04-02  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * keyboard.c (make_lispy_event): Handle unknown keysyms together
-       with system-specific keysyms.  Use it also for unknown function keys.
-
-       * doc.c (reread_doc_file): Return whether reload was attempted.
-       (Fdocumentation, Fdocumentation_property): Don't try to reload
-       if the doc is 0 and only ask once.
-
-       * Makefile.in (lisp, shortlisp): Add ucs-tables.elc.
-
-2002-04-02  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * keyboard.c (read_char): If the event was Qselect_window,
-       restore timer_idleness_start_time to its previous value.
-
-       * msdos.c (dos_rawgetc): Generate SELECT_WINDOW_EVENTs when required.
-
-2002-04-01  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * region-cache.c (new_region_cache): Use BEG.
-
-       * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos):
-       Use BEG and BEG_BYTE.
-
-       * doc.c (get_doc_string): Return nil if the location is wrong.
-       (reread_doc_file): New fun.
-       (Fdocumentation, Fdocumentation_property):
-       Call it if get_doc_string fails.
-       (Fsnarf_documentation): Make it work for a dumped Emacs.
-
-       * charset.h (DEC_POS, BUF_DEC_POS): Use BEG_BYTE.
-       Bound the search with MAX_MULTIBYTE_LENGTH to avoid pathological case.
-
-       * charset.c (Fstring): Allow 0 arguments.
-
-       * xterm.c (XTread_socket): Fix int/Lisp_Object confusion.
-
-       * process.c (DATAGRAM_CONN_P, list_processes_1)
-       (Fprocess_datagram_address, Fset_process_datagram_address)
-       (Fset_network_process_options, server_accept_connection):
-       Fix some int/Lisp_Object confusions (thank you union types).
-
-2002-04-01  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * msdos.c: Rename x_autoselect_window_p to autoselect_window_p.
-
-       * w32term.c: Likewise.
-       (note_mouse_movement): Put code for x_autoselect_window_p in #if 0.
-
-       * keyboard.c (Qselect_window): New symbol.
-       (head_table): Use it.
-       (keys_of_keyboard): Bound select-window event to handle-select-window.
-       (kbd_buffer_get_event): Make a Lisp event from SELECT_WINDOW_EVENT.
-
-       * xterm.c: Rename x_autoselect_window_p to autoselect_window_p.
-       (last_window): New variable.
-       (XTread_socket): Generate SELECT_WINDOW_EVENTs.
-       (note_mouse_movement): Remove reimplemented code in #if 0.
-       (XTread_socket): Generate SELECT_WINDOW_EVENTs only for
-       Emacs windows.
-
-       * termhooks.h (enum event_kind): New event type `SELECT_WINDOW_EVENT'.
-
-2002-03-31  Gerd Moellmann  <gerd@gnu.org>
-
-       * xterm.c (x_get_char_face_and_encoding): Add parameter DISPLAY_P.
-       Callers changed.
-
-2002-03-30  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (window_scroll_pixel_based): Exit the move_it_by_lines
-       loop whenever it stops making progress.
-
-       * widget.c (set_frame_size): Don't call change_frame_size.
-
-2002-03-30  Gerd Moellmann  <gerd@gnu.org>
-
-       * dispnew.c (direct_output_for_insert):
-       Call mark_window_display_accurate.
-
-2002-03-29  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_draw_relief_rect): Fix calculations of line lengths.
-
-2002-03-29  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * Makefile.in (lread.o): Depend on coding.h.
-
-       * lread.c (openp, Fload): Encode the file name before passing it
-       to `stat', `access', and `emacs_open'.
-       (openp): GCPRO the encoded file name.  Don't recompute Lisp
-       strings unnecessarily.
-
-2002-03-29  Kim F. Storm  <storm@cua.dk>
-
-       * fns.c (Flax_plist_put): Doc fix.
-
-2002-03-28  Miles Bader  <miles@gnu.org>
-
-       * process.c (DATAGRAM_CONN_P): Make sure PROC is really a process.
-
-2002-03-27  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * process.c (set-network-process-options): Add usage.
-       (make-network-process): Doc fix.
-
-2002-03-26  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * emacs.c (Fdump_emacs): Fix a typo in "command-line-processed".
-
-2002-03-26  Richard M. Stallman  <rms@gnu.org>
-
-       * fns.c (Fsubstring_no_properties): New function.
-       (Flax_plist_get, Flax_plist_put): New functions.
-       (syms_of_fns): defsubr them.
-
-       * xdisp.c (update_menu_bar): Test only update_mode_lines;
-       don't test or alter w->update_mode_line.
-
-       * window.c (Fdisplay_buffer): Doc fix.
-
-2002-03-24  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.c (GET_UNSIGNED_NUMBER): Give proper error for spaces.
-
-2002-03-24  Gerd Moellmann  <gerd@gnu.org>
-
-       * eval.c (Qdeclare, Vmacro_declaration_function): New variables.
-       (Fdefmacro): Handle `(declare ...)'.
-       (syms_of_eval) <Qdeclare>: Initialize and staticpro.
-       (syms_of_eval) <Vmacro_declaration_function>: DEFVAR_LISP.
-
-2002-03-24  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (xbm_scan, xbm_load_image, xbm_read_bitmap_data)
-       (xbm_file_p): Add prototypes.
-       (xbm_format, xbm_image_p): Sync with xfns.c.
-       (reflect_byte): New function.
-       (xbm_read_bitmap_data): Sync with xfns.c, adapt for Windows.
-       (xbm_load_image): Create bitmaps with a depth of 1.
-       (init_xfns): Enable XBM images.
-
-2002-03-23  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_handle_tool_bar_click): Detect up and down events
-       correctly.  Do not pass up_modifier to keyboard buffer.
-
-       * w32fns.c [HAVE_IMAGES, HAVE_PBM]: Remove conditionals.
-
-2002-03-22  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * Makefile.in (bootstrapclean): New target.
-       (bootstrap-temacs, bootstrap-doc): Remove.
-       (bootstrap-emacs): Use a bog-standard `temacs'.
-       Don't bother to build a DOC file.
-
-       * sysdep.c (wait_for_termination): Use sigsuspend rather than sigpause.
-
-       * emacs.c (main): Handle --unibyte, --multibyte, and --no-loadup
-       in temacs even if !CANNOT_DUMP.
-       (standard_args): Keep --no-loadup even if !CANNOT_DUMP.
-
-       * alloc.c (check_pure_size): Only output a warning.
-
-2002-03-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Fx_create_frame): Enable tool-bar when images are
-       supported.
-
-       * w32term.c (zv_bits): Declare as short, for word alignment.
-       (w32_read_socket) <WM_XBUTTONUP>: Fix last change.
-       (syms_of_w32term): Define x-use-underline-position-properties.
-
-       * w32fns.c (x_set_cursor_color): Set cursor_gc as well.
-       (clear_image_cache): Block input, fix logic, clear matrices in
-       all frames that share this cache.
-
-2002-03-22  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * emacs.c (main): Update the Copyright year in the blurb printed
-       by "emacs --version".
-
-       * xdisp.c (message_with_string): Fix syntax of a call to GCPRO2.
-
-       * xterm.c (XTread_socket): If XK_ISO_Lock and
-       XK_ISO_Last_Group_Lock are defined, handle keysyms between
-       XK_ISO_Lock and XK_ISO_Last_Group_Lock similarly to Mode_switch.
-
-2002-03-21  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (menu_bar_items): Mostly undo 2002-02-20 patch, so
-       menu-bar bindings in keymap and local-map properties _are_ used.
-       But try keymap property first in accordance with 2002-01-03 patch.
-       Added comment describing why this is not always reliable.
-       (tool_bar_items): Ditto for tool-bar.
-
-2002-03-21  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (x_clear_image_1): Disable color table code.
-
-2002-03-21  Kim F. Storm  <storm@cua.dk>
-
-       * lisp.h (DEFUN) [USE_NONANSI_DEFUN]: The 2001-10-17 patch
-       removed the wrong version of the DEFUN macro; fixed it.
-
-       * fns.c (Ffeaturep): Allow subfeature to be a list (test using
-       Fmember rather than Fmemq).
-       (Fprovide): Check that subfeatures is a list.
-
-       * process.c (QCfeature, QCdatagram): Removed variables.
-       (QCtype, Qdatagram): New variables.
-       (network_process_featurep): Removed function.
-       (Fmake_network_process): Removed :feature check.
-       Use :type 'datagram instead of :datagram t to create a datagram
-       socket.  This allows us to add other connection types (e.g. raw
-       sockets) later in a consistent manner.
-       (init_process) [subprocess, HAVE_SOCKETS]: Provide list of
-       supported subfeatures for feature make-network-process.
-       (syms_of_process) [subprocess]: Remove QCfeature and QCdatagram.
-       Intern and staticpro QCtype and Qdatagram.
-       (syms_of_process) [!subprocess]: Intern and staticpro QCtype.
-
-       * xfns.c (QCtype): Remove duplicate declaration and
-       initialization (is now declared in process.c).
-
-       * w32fns.c (QCtype): Remove duplicate declaration and
-       initialization (is now declared in process.c).
-
-2002-03-21  Richard M. Stallman  <rms@gnu.org>
-
-       * regex.c (DISCARD_FAILURE_REG_OR_COUNT): New macro.
-       (CHECK_INFINITE_LOOP): Use DISCARD_FAILURE_REG_OR_COUNT
-       when jumping to `fail' to avoid undoing reg changes in the
-       last iteration of the loop.
-       (GET_UNSIGNED_NUMBER): Skip spaces around the number.
-
-       * Makefile.in (dispnew.o, sysdep.o, xdisp.o, xselect.o, alloc.o):
-       Depend on process.h.
-
-2002-03-20  Jason Rumney  <jasonr@gnu.org>
-
-       Most of the following changes are still conditional on HAVE_IMAGES
-       which is not set by default on Windows.
-
-       * emacs.c (main) [WINDOWSNT]: Call init_xfns.
-
-       * w32fns.c (x_set_cursor_color): Set foreground of cursor, not frame.
-       (Fimage_size, Fimage_mask_p, XPutPixel): New functions.
-       (four_corners_best, x_clear_image_1, x_clear_image)
-       (x_alloc_image_color, postprocess_image)
-       (x_create_x_image_and_pixmap, x_destroy_x_image, xbm_load_image)
-       (x_from_x_colors, x_disable_image, pbm_load): Adapt for Windows.
-       (init_xfns, syms_of_w32fns): Initialize image functions and constants.
-
-       * w32gui.h (struct XImage): Define.
-
-       * w32term.c (w32_read_socket) <WM_XBUTTONUP>: Use XFASTINT to
-       extract mouse co-ordinates.
-
-2002-03-20  Jason Rumney  <jasonr@gnu.org>
-
-       * w32.c (init_winsock): Dynamically load new server and UDP
-       socket functions.
-       (socket_to_fd): New function.
-       (sys_socket): Use it.
-       (sys_setsockopt, sys_listen, sys_getsockname, sys_accept)
-       (sys_recvfrom, sys_sendto): New wrapper functions.
-
-       * process.c (QCfamily, QCfilter): Remove duplicate declaration
-       and initialization.
-
-       * makefile.w32-in (LIBS): Remove $(WSOCK32).
-
-2002-03-20  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr):
-       Don't use "sun" as a variable, it's a predefined constant on Sun
-       machines.
-
-2002-03-20  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * bytecode.c (Fbyte_code): Revert last change.
-
-2002-03-19  Kim F. Storm  <storm@cua.dk>
-
-       * makefile.w32-in (LIBS): Add $(WSOCK32).
-       From David Ponce <dponce@voila.fr>.
-
-2002-03-18  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * process.c (wait_reading_process_input): Move variables `pname'
-       and `pnamelen' down where they are used.
-
-       * bytecode.c (Fbyte_code): Discard unused computed value to
-       prevent gcc warning.
-
-       * lisp.h (Fplist_member): Add prototype.
-
-2002-03-18  Kim F. Storm  <storm@cua.dk>
-
-       * config.in: Add HAVE_SENDTO, HAVE_RECVFROM, HAVE_SETSOCKOPT,
-       HAVE_GETSOCKOPT, HAVE_GETPEERNAME, HAVE_GETSOCKNAME, and HAVE_SYS_UN_H.
-
-       * process.c: Define HAVE_LOCAL_SOCKETS based on HAVE_SYS_UN_H.
-       Remove explicit GNU_LINUX settings for datagram support.
-
-2002-03-18  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * process.c (Fmake_network_process): Remove unused variable `sa'.
-       Doc fix.  Add usage:.
-       (set_socket_options): Remove unused variables `optnum' and `opttype'.
-
-2002-03-17  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (cursor_type_changed): New variable.
-       (redisplay_internal): Redisplay all windows if cursor_type_changed.
-       Clear it when clearing windows_or_buffers_changed.
-       (try_cursor_movement, redisplay_window, try_window_id)
-       (try_window_reusing_current_matrix): Test cursor_type_changed
-       along with windows_or_buffers_changed.
-
-       * window.h (cursor_type_changed): New variable.
-
-       * xfns.c (x_set_cursor_type): Set cursor_type_changed,
-       not update_mode_lines, and always set it to 1.
-
-       * xdisp.c (clear_garbaged_frames): Don't set windows_or_buffers_changed
-       if no frames needed redrawing.
-
-2002-03-17  Kim F. Storm  <storm@cua.dk>
-
-       The following changes add support for network server processes,
-       datagram connections, and local (unix) sockets.
-
-       * process.h (struct Lisp_Process): New member log.
-       Doc fix: Member command used to indicate stopped network process.
-       Doc fix: Member childp contains plist for network process.
-       Doc fix: Member kill_without_query is inverse of query-on-exit flag.
-
-       * process.c (Qlocal, QCname, QCbuffer, QChost, QCservice, QCfamily)
-       (QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery, QCstop)
-       (QCcoding, QCoptions, QCfilter, QCsentinel, QClog, QCfeature): New
-       variables.
-       (NETCONN1_P): New macro.
-       (DATAGRAM_SOCKETS): New conditional symbol.
-       (datagram_address): New array.
-       (DATAGRAM_CONN_P, DATAGRAM_CHAN_P): New macros.
-       (status_message): Use concat3.
-       (Fprocess_status): Add `listen' status to doc string.  Return
-       `stop' for a stopped network process.
-       (Fset_process_buffer): Update contact plist for network process.
-       (Fset_process_filter): Ditto.  Don't enable input for stopped
-       network processes.  Server must listen, even if filter is t.
-       (Fset_process_query_on_exit_flag, Fprocess_query_on_exit_flag):
-       New functions.
-       (Fprocess_kill_without_query): Removed.  Now defined in simple.el.
-       (Fprocess_contact): Added KEY argument.  Handle datagrams.
-       (list_processes_1): Optionally show only processes with the query
-       on exit flag set.  Dynamically adjust column widths.  Omit tty
-       column if not needed.  Report stopped network processes.  Identify
-       server and datagram network processes.
-       (Flist_processes): New optional arg `query-only'.
-       (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size)
-       (conv_lisp_to_sockaddr, set_socket_options)
-       (network_process_featurep, unwind_request_sigio): New helper
-       functions.
-       (Fprocess_datagram_address, Fset_process_datagram_address):
-       (Fset_network_process_options): New lisp functions.
-       (Fopen_network_stream): Removed.  Now defined in simple.el.
-       (Fmake_network_process): New lisp function.  Code is based on
-       previous Fopen_network_stream, but heavily reworked with new
-       property list based argument list, support for datagrams, server
-       processes, and local sockets in addition to old client-only
-       functionality.
-       (server_accept_connection): New function.
-       (wait_reading_process_input): Use it to handle incoming connects.
-       Do not enable input on a new connection if process is stopped.
-       (read_process_output): Handle datagram sockets.  Use 2k buffer for
-       them.
-       (send_process): Handle datagram sockets.
-       (Fstop_process, Fcontinue_process): Apply to network processes.  A
-       stopped network process is indicated by setting command field to t.
-       (Fprocess_send_eof): No-op if datagram connection.
-       (Fstatus_notify): Don't read input for a stream server socket or a
-       stopped network process.
-       (init_process): Initialize datagram_address array.
-       (syms_of_process): Intern and staticpro new variables, defsubr new
-       functions.
-
-2002-03-16  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (w32_to_all_x_charsets): Return correct type in
-       startup case.
-
-2002-03-16  Richard M. Stallman  <rms@gnu.org>
-
-       * xdisp.c (redisplay_internal, redisplay_windows):
-       Use list_of_error to call internal_condition_case_1.
-       (safe_eval, safe_call): Pass Qt to internal_condition_case_{1,2}
-       so as to catch all errors with no possibility of debugger redisplay.
-       (list_of_error): New variable.
-       (syms_of_xdisp): Init and staticpro it.
-
-       * print.c (print_object): Delete `\ ' from printed rep of frame.
-
-2002-03-15  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * msdos.c (dos_rawgetc): Disable the x-autoselect-window feature,
-       until its implementation is fixed.
-
-2002-03-14  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * xfns.c (png_load): Remove unused variable `gamma_str'.
-
-2002-03-14  Richard M. Stallman  <rms@gnu.org>
-
-       * xfns.c (x_real_positions): Handle failure in XQueryTree.
-
-2002-03-14  Miles Bader  <miles@gnu.org>
-
-       * intervals.c (adjust_for_invis_intang): New function.
-       (set_point_both): Use `adjust_for_invis_intang' to do most of the
-       work for dealing with invisible+intangible regions.  Do so before
-       and after both forward and backward movements, to handle both
-       front-sticky and rear-sticky cases.
-       * textprop.c (text_property_stickiness): Function moved here from
-       `editfns.c'.
-       * intervals.h (text_property_stickiness): New declaration.
-       * editfns.c (char_property_eq): Function removed.
-       (text_property_stickiness): Function moved to `textprop.c'.
-
-2002-03-13  Jason Rumney  <jasonr@gnu.org>
-
-       * config.in: Add STRFTIME_NO_POSIX2.
-
-       * strftime.c (my_strftime) [STRFTIME_NO_POSIX2]: Handle %h, %EX
-       and %OX when underlying strftime does not.
-
-2002-03-13  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * xterm.c (x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>:
-       Use a fixed-size thumb (based on an ad-hoc estimate of 30 chars per
-       line) to avoid annoying flicker.
-       (xm_scroll_callback): Get rid of the now unnecessary kludge.
-       (XTread_socket): Mark it static.
-
-       * xdisp.c (display_mode_element): Fix int/Lisp_Object mixup.
-
-2002-03-13  Kim F. Storm  <storm@cua.dk>
-
-       * puresize.h (BASE_PURESIZE): Increase to 775000.
-
-2002-03-12  Juanma Barranquero  <lektu@terra.es>
-
-       * editfns.c (syms_of_editfns): Fix typo.
-
-2002-03-12  Gerd Moellmann  <gerd@gnu.org>
-
-       * xsmfns.c: Include stdio.h because termhooks.h needs it.
-       Include termopt.h for interrupt_input.
-
-2002-03-11  Andreas Schwab  <schwab@suse.de>
-
-       * coding.c (syms_of_coding) <file-coding-system-alist>: Doc fix.
-
-2002-03-11  Gerd Moellmann  <gerd@gnu.org>
-
-       * xterm.c (note_mouse_movement): Put code for
-       x_autoselect_window_p in #if 0.
-
-       * lread.c (Fload): Don't assume that message_with_string uses the
-       string it is given like a C string.
-
-2002-03-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xterm.h (x_session_check_input, x_session_initialize): Declare.
-
-       * xterm.c (XTread_socket): Add call to x_session_check_input and
-       x_session_have_connection.
-       (x_initialize): Add call to x_session_initialize.
-
-       * termhooks.h (enum event_kind): Add save_session_event.
-
-       * keyboard.c: Add Emacs event save_session_event.
-
-       * emacs.c (main): Add call to syms_of_xsmfns.
-
-       * lisp.h (syms_of_xsmfns): Declare extern.
-
-       * config.in: Add HAVE_X_SM.
-
-       * Makefile.in (LIBXT): Add -lSM -lICE
-       if HAVE_X_SM and not USE_X_TOOLKIT.
-       (XOBJ): New file xsmfns.c added.
-
-       * xsmfns.c: New file for X session management.
-
-2002-03-09  Jason Rumney  <jasonr@gnu.org>
-
-       * fileio.c (Fcopy_file) [WINDOWS_NT]: Ensure file is not
-       read-only when setting modified time.
-
-2002-03-08  Gerd Moellmann  <gerd@gnu.org>
-
-       * xdisp.c (move_it_vertically_backward): At the end of the function,
-       when moving forward by lines, treat terminal frames specially.
-
-       * keyboard.c (echo_char): Make sure to add a separator between
-       keys even if echo_dash hasn't been called.
-
-       * xdisp.c: Use new string macros.
-       (update_echo_area): Pass number of bytes to message3 instead of
-       number of chars.
-       (set_message_1): Don't access a string's size_byte directly.
-       (decode_mode_spec_coding): Use number of bytes of eoltype string
-       instead number of chars.
-
-       * lisp.h (SREF, SDATA, SCHARS, SBYTES, SMBP): New macros.
-
-2002-03-08  Juanma Barranquero  <lektu@terra.es>
-
-       * w32fns.c (Fx_display_color_cells): Force 24+ bit color depths to
-       24-bit.
-
-2002-03-06  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (x_draw_hollow_cursor): Draw same size as block cursor.
-
-2002-03-06  Gerd Moellmann  <gerd@gnu.org>
-
-       * keyboard.c (echo_prompt, echo_char, echo_dash, echo_now)
-       (cancel_echoing, echo_length, echo_truncate): Changed to
-       work with new kboard definition.
-       (echo_now): Use message3_nolog instead of message2_nolog.
-
-       * alloc.c (mark_kboards): Mark echo_string.
-
-       * keyboard.h (ECHOBUFSIZE): Removed.
-       (struct kboard): Member echoptr removed, member echobuf renamed
-       to echo_string.
-
-       * xdisp.c (message_with_string): Use Fformat instead of doprnt and
-       message3 instead of message2 to display the message using STRING's
-       text properties.
-
-2002-03-05  Andreas Schwab  <schwab@suse.de>
-
-       * xdisp.c (hscroll_margin): Change to EMACS_INT.
-
-2002-03-05  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * frame.c (default-frame-alist): Explain that setting it doesn't
-       affect existing frames.
-
-2002-03-05  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * indent.c (skip_invisible): Fix my brain fart.
-
-       * dispnew.c (sit_for): Don't wait if executing a kbd macro.
-
-2002-03-04  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * dosfns.c, dosfns.h, dispnew.c, dispextern.h, commands.h, charset.c,
-       * alloc.c, abbrev.c, emacs.c, eval.c, keyboard.c, keyboard.h,
-       * lisp.h, lread.c, sysdep.c, termcap.c, termchar.h, w32term.c,
-       * window.c, xdisp.c, xselect.c, xterm.c: Change defvar_int definition
-       and variables to use EMACS_INT instead of just int.
-
-       * buffer.c (syms_of_buffer): Allow non-string `mode-name'.
-
-2002-03-04  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * sysdep.c (sys_subshell) [MSDOS]: If PWD is set in the
-       environment, pass it down with corrected value.
-
-2002-03-04  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * lread.c (read_filtered_event): Do not call start_hourglass
-       before returning.
-
-2002-03-04  Juanma Barranquero  <lektu@terra.es>
-
-       * w32term.c (x_display_and_set_cursor): Fix typo.
-
-2002-03-03  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Fmake_temp_name): Doc fix.
-
-2002-03-03  Gary Wong  <gtw@gnu.org>
-
-       * termcap.c [!emacs]: Replace ospeed for building standalone
-       libtermcap, for binary compatibility.
-
-       * tparam.c [!emacs]: Move #define of bcopy to after string.h.
-
-2002-03-03  Richard M. Stallman  <rms@gnu.org>
-
-       * xrdb.c (file_p): Rename arg `path' to `filename'.
-
-       * abbrev.c (Fexpand_abbrev): Increment plist as use count
-       only if it is an integer.
-
-       * xfns.c (png_load): Set screen_gamma based on f->gamma.
-       If png_get_sRGB gives an answer, call png_set_gamma
-       using the default image gamma value.
-
-       * lread.c (read1): When reading from a file, default string to
-       multibyte only if it has some multibyte characters.
-
-       * print.c (print_object): Output multibyte chars 128...255
-       using \x even if ! print_escape_multibyte.
-
-       * xdisp.c (display_mode_element): Move the places where
-       bytepos, charpos, this, and lisp_string are set.
-       Use lisp_string to set bytepos.
-
-       * xdisp.c (redisplay_internal):
-       Call clear_image_cache only if HAVE_WINDOW_SYSTEM.
-
-       * xdisp.c (display_mode_element): Merge properties specified with
-       :propertize onto those that come with the string.
-
-2002-03-03  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * xdisp.c (syms_of_xdisp) <auto-hscroll-mode>: Renamed from
-       automatic-hscrolling.  Users changed.
-       <hscroll-margin>: Renamed from automatic-hscroll-margin.
-       Users changed.
-       <hscroll-step>: Renamed from automatic-hscroll-step.  Users changed.
-
-2002-03-02  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * buffer.c (syms_of_buffer) <buffer-file-coding-system>: Doc fix.
-
-2002-03-02  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Fminibuffer_selected_window): New function.
-       (syms_of_window): Defsubr it.
-
-2002-03-01  Kim F. Storm  <storm@cua.dk>
-
-       * window.h (struct window): New member phys_cursor_width.
-
-       * window.c (make_window, replace_window): Init phys_cursor_width.
-
-       * xterm.c (x_display_and_set_cursor): Blink box cursor using
-       hollow box cursor.  Blink bar cursor using 1 pixel wide bar.
-
-       * w32term.c (x_display_and_set_cursor): Blink box cursor using
-       hollow box cursor.  Blink bar cursor using 1 pixel wide bar.
-
-       * lisp.h (GCPRO6): New macro.
-
-       * process.c (Fopen_network_stream): Use GCPRO6.
-
-2002-03-01  Kim F. Storm  <storm@cua.dk>
-
-       * process.c (Qconnect, Qfailed): New variables.
-       (syms_of_process): Intern and staticpro them.
-       (Fprocess_status): Document connect and failed return values.
-       [NON_BLOCKING_CONNECT]: New conditional.
-       (connect_wait_mask, num_pending_connects): New variables.
-       (status_message): Convert Qfailed status.
-       (Fopen_network_stream): Added support for non-blocking connect.
-       New optional args: filter, sentinel, non_blocking.  Doc updated.
-       [HAVE_GETADDRINFO, !HAVE_GETADDRINFO]: Merged common code.
-       (deactivate_process): Handle pending non-blocking connect.
-       (wait_reading_process_input): Poll for status of non-blocking
-       connects.  Exec sentinel directly when connect succeeds.
-       (status_notify): Don't read process output if not yet connected.
-
-2002-02-28  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (minibuf_selected_window): Renamed from
-       Vminibuf_selected_window.  Users changed.
-       (syms_of_window): Staticpro it.
-
-2002-02-26  Kim F. Storm  <storm@cua.dk>
-
-       The following changes add a new Vminibuf_selected_window variable
-       which is similar to Vminibuf_scroll_window, but which is only set
-       on entry to the minibuffer (from a non-minibuffer window):
-
-       * window.c (Vminibuf_selected_window): New variable.
-       (struct save_window_data): New member minibuf_selected_window.
-       (Fset_window_configuration): Restore Vminibuf_selected_window.
-       (Fcurrent_window_configuration): Save Vminibuf_selected_window.
-       Set minibuf_scroll_window member to nil if minibuf_level is 0.
-       (compare_window_configurations): Compare minibuf_selected_window.
-
-       * window.h (Vminibuf_selected_window): Declare extern.
-
-       * minibuf.c (read_minibuf): Set Vminibuf_selected_window on first
-       entry to minibuffer or on entry from a non-minibuffer window.
-
-       * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): Compare with
-       Vminibuf_selected_window instead of Vminibuf_scroll_window.
-
-       * xdisp.c (init_iterator): Compare with Vminibuf_selected_window
-       instead of Vminibuf_scroll_window when deciding in which window
-       the region should be highlighted.  Consequently, the region remains
-       highlighteded even when a completion buffer is also displayed.
-
-2002-02-26  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * fileio.c (Fsubstitute_in_file_name): Fix the change from 2002-02-08.
-
-       * xselect.c (Qcompound_text_with_extensions): Renamed from
-       Qcompound_text_no_extensions.
-       (lisp_data_to_selection_data, syms_of_xselect): Use the new name.
-
-2002-02-26  Juanma Barranquero  <lektu@terra.es>
-
-       * w32proc.c (syms_of_ntproc): Doc fix.
-
-2002-02-24  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * intervals.h: Include "dispextern.h" unconditionally.
-
-2002-02-24  Jason Rumney  <jasonr@gnu.org>
-
-       * Makefile.in (WINNT_SUPPORT) [WINDOWSNT]: Add w32-vars.elc
-       and disp-table.elc.
-       (lisp): Add emacs-lisp/backquote.elc.
-
-2002-02-24  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (Flookup_key): Fix problem in 2001-12-28 patch:
-       The validation of the event type was too strict as it didn't
-       allow string events; buffer names are used in bindings for
-       menu-bar-select-buffer (see `menu-bar-update-buffers').
-
-2002-02-23  Kim F. Storm  <storm@cua.dk>
-
-       The following changes rework my patch of 2002-02-06 which
-       added command remapping by entering the commands directly into
-       the keymaps.  Now, command remapping uses an explicit `remap'
-       prefix in the keymaps, i.e. [remap COMMAND].
-
-       * keymap.c (Qremap, remap_command_vector): New variables.
-       (is_command_symbol): Remove function.
-       (Fdefine_key): No longer accept a symbol for KEY.
-       Added validation of [remap COMMAND] argument for KEY.
-       The DEF is no longer required to be a symbol when remapping a command.
-       (Fremap_command): New function to remap command through keymaps.
-       (Flookup_key): Perform command remapping initiated by
-       Fremap_command directly for speed.
-       (Fkey_binding): Use Fremap_command for command remapping.
-       (where_is_internal): Handle new command remapping representation.
-       (syms_of_keymap): Intern Qremap, initialize remap_command_vector,
-       staticpro them.  Defsubr Fremap_command.
-
-       * keymap.h (Fremap_command): Declare extern.
-       (is_command_symbol): Remove extern.
-
-       * keyboard.c (command_loop_1): Use Fremap_command for command
-       remapping; now try command remapping for all symbols.
-
-2002-02-23  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * coding.h (run_pre_post_conversion_on_str): Add prototype.
-
-2002-02-23  Jason Rumney  <jasonr@gnu.org>
-
-       * w32select.c (Fw32_set_clipboard_data): Run pre-write-conversion
-       on the string before encoding it.
-       (Fw32_get_clipboard_data): Run post-read-conversion on the string
-       after decoding it.
-
-       * w32fns.c (w32_wnd_proc) <WM_TIMER>: Fix last change.
-
-2002-02-23  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * w32term.c (enter_timestamp): Remove unused static variable to
-       prevent warning.
-
-       * xterm.c (enter_timestamp): Put in #if 0 to prevent warning.
-
-2002-02-23  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * w16select.c (Fw16_get_clipboard_data): Fix last change.
-
-       * xselect.c (selection_data_to_lisp_data): Fix last change.
-
-2002-02-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.h (struct w32_output): New member menu_command_in_progress.
-
-       * w32menu.c (menubar_selection_callback): Free the menu and
-       clear the menu_command_in_progress flag.
-
-       * w32fns.c (mouse_move_timer, mouse_button_timer): Initialize.
-       (menu_free_timer): New variable.
-       (MENU_FREE_ID, MENU_FREE_DELAY): New constants.
-       (w32_wnd_proc) <WM_TIMER>: Handle menu_free_timer.
-       <WM_EXITMENULOOP>: Delay before freeing menu.  Do nothing if a
-       menu command is in progress.
-       <WM_COMMAND>: Set the menu_command_in_progress flag.
-       Kill any menu_free_timer that is running.
-
-       * w32term.c (w32_text_out): Renamed from W32_TEXTOUT.
-       Call ExtTextOutA rather than ExtTextOut.
-
-2002-02-22  Eli Zaretskii  <eliz@gnu.org>
-
-       * puresize.h (BASE_PURESIZE): Increase to 755000.
-
-2002-02-22  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * w16select.c (Fw16_set_clipboard_data): Run pre-write-conversion
-       on the string before encoding it.
-       (Fw16_get_clipboard_data): Run post-read-conversion on the string
-       after decoding it.
-
-2002-02-22  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       Support for ICCCM Extended Segments in X selections:
-
-       * xselect.c <Qcompound_text_no_extensions>: New variable.
-       (syms_of_xselect): Intern and staticpro it.
-       (selection_data_to_lisp_data): Run post-read-conversion on decoded
-       selection text.
-       (lisp_data_to_selection_data): If next-selection-coding-system is
-       compound-text-no-extensions, set the type of selection to be
-       compound-text.
-
-       * xterm.h (x_encode_text): Update prototype.
-
-       * xfns.c (x_encode_text): Accept additional arg SELECTIONP; all
-       callers changed.  If SELECTIONP is non-zero, run the
-       pre-write-conversion function before encoding the selection text.
-
-2002-02-21  Kim F. Storm  <storm@cua.dk>
-
-       * frame.c (syms_of_frame): Change mouse-highlight default to t.
-
-       * keyboard.c (kbd_buffer_get_event) [WINDOWSNT]:
-       Correct composing of language-change event.
-
-2002-02-20  Kim F. Storm  <storm@cua.dk>
-
-       * keyboard.c (menu_bar_items): Don't include keymap or local-map
-       bindings at PT when building menu (the menu is not updated often
-       enough for this to work reliable).
-       (tool_bar_items): Likewise.
-       (current_active_maps): Removed unused (and buggy) function.
-
-2002-02-20  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * xfns.c (gif_load): Use correct width and height for GIF images.
-
-2002-02-19  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * floatfns.c (Fatan): Accept an optional second arg and call
-       atan2 if passed 2 args.
+       * w32term.c (w32_font_is_double_byte, my_create_scrollbar): Make static.
+       (syms_of_w32term) <w32-enable-unicode-output>: Fix typo in docstring.
 
-2002-02-18  Jason Rumney  <jasonr@gnu.org>
+2007-10-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * w32term.c (glyph_rect): Determine the row and glyph more precisely.
+       * buffer.c (Fmake_indirect_buffer): Set the buffer's tag.
 
-2002-02-17  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (x_autoselect_window_p): New variable.
-       (syms_of_w32term): DEFVAR_BOOL and initialize it.
-       (note_mouse_movement): Use it.
-
-       * w32fns.c (w32_load_system_font): Never set fonts_changed_p to zero.
-
-       * w32bdf.c (w32_load_bdf_font): Maybe set fonts_changed_p.
-
-       * w32fns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth):
-       New variables.
-       (syms_of_w32fns): Intern and staticpro them.
-       (x_frame_parms) <"fullscreen">: New parameter.
-       (x_fullscreen_move, x_set_fullscreen): New functions.
-       (x_set_frame_parameters): Support Qfullscreen.
-       (x_real_positions): Save x/y_pixels_diff frame params.
-       (x_figure_window_size): Support full-screen frames.
-       (Fx_create_frame): Default the fullscreen parameter.
-
-       * w32term.c (x_check_fullscreen, x_check_fullscreen_move)
-       (x_fullscreen_adjust): New functions.
-       (w32_read_socket) <WM_WINDOWPOSCHANGED>: Don't resize to
-       fullscreen.  Call x_check_fullscreen_move, and set the
-       want_fullscreen member of output_data.w32
-       <WM_ACTIVATE, WM_ACTIVATEAPP>: Call x_check_fullscreen.
-
-       * w32term.h: New enum for FULLSCREEN_* constants.
-       (struct w32_output): New members want_fullscreen, x_pixels_diff,
-       y_pixels_diff, x_pixels_outer_diff, and y_pixels_outer_diff.
-       (x-fullscreen-adjust): New prototype.
-
-2002-02-17  Kim F. Storm  <storm@cua.dk>
-
-       * frame.c (Vmouse_highlight): New variable.
-       (syms_of_frame): DEFVAR_LISP it.
-
-       * frame.h (Vmouse_highlight): Declare extern.
-
-       * xterm.h (struct x_display_info): Add mouse_face_hidden.
-
-       * xterm.c (disable_mouse_highlight): Removed variable.
-       (note_mouse_highlight): Don't highlight if Vmouse_highlight is nil.
-       (show_mouse_face): Don't show highlight if mouse_face_hidden is set.
-       (XTread_socket): Turn mouse_face_hidden off after mouse movement,
-       and on after keyboard input.
-       (x_term_init): Initialize mouse_face_hidden.
-
-       * msdos.h (struct display_info): Add mouse_face_hidden.
-
-       * msdos.c (disable_mouse_highlight): Removed variable.
-       (show_mouse_face): Don't show highlight if mouse_face_hidden is set.
-       (IT_note_mouse_highlight): Don't highlight if Vmouse_highlight is nil.
-       (internal_terminal_init): Initialize mouse_face_hidden.
-       (dos_rawgetc): Turn mouse_face_hidden off after mouse movement,
-       and on after keyboard input.
-
-       * w32term.h (struct w32_display_info): Add mouse_face_hidden.
-
-       * w32term.c (disable_mouse_highlight): Removed variable.
-       (note_mouse_highlight): Disable highlight if Vmouse_highlight is nil.
-       (show_mouse_face): Don't show highlight if mouse_face_hidden is set.
-       (w32_read_socket): Turn mouse_face_hidden off after mouse movement,
-       and on after keyboard input.
-       (w32_initialize_display_info): Initialize mouse_face_hidden.
-
-2002-02-16  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * msdos.c (last_mouse_window): New variable.
-       (dos_rawgetc): Fix last change--if the mouse is in the same window
-       as recorded in last_mouse_window, don't select this window.
-
-       * Makefile.in (lisp, shortlisp): Use cus-start.elc, not cus-start.el.
-
-       * msdos.c (x_autoselect_window_p): New variable.
-       (syms_of_msdos): Defvar it.
-       (dos_rawgetc): If x_autoselect_window_p is set, select the window in
-       which the last mouse movement occured, unless it is already selected.
-
-       * xdisp.c (automatic_hscroll_margin, Vautomatic_hscroll_step):
-       New variables.
-       (syms_of_xdisp): DEVFAR them.
-       (hscroll_window_tree): Use automatic_hscroll_margin and
-       Vautomatic_hscroll_step to compute the amount of window scrolling.
-
-2002-02-16  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * xterm.c (x-autoselect-window): New variable.
-       (note_mouse_movement): Use it.
-
-       * keyboard.c: Do not include "systime.h" twice.
-
-2002-02-15  Andreas Schwab  <schwab@suse.de>
-
-       * puresize.h (PURESIZE_RATIO): Increase to 9/5.
-
-       * alloc.c (NSTATICS): Increase to 1280.
-
-2002-02-15  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
-
-       * alloc.c (NSTATICS): Bump to 1026.
-
-       * xterm.c (Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
-       (Vx_super_keysym): New variables.
-       (syms_of_xterm): DEFVAR_LISP them.
-       (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Use the
-       variables to determine which keys to use for the various modifiers.
-
-2002-02-13  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Vmode_line_in_non_selected_windows): Removed.
-       (mode_line_in_non_selected_windows): New variable.
-       (syms_of_window): DEFVAR_BOOL it.
-
-       * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3):
-       Use mode_line_in_non_selected_windows.
-       (mode_line_in_non_selected_windows): Declare extern.
-       (Vmode_line_in_non_selected_windows): Removed extern.
-
-2002-02-13  Richard M. Stallman  <rms@gnu.org>
-
-       * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector)
-       (Fthis_single_command_keys, Fthis_single_command_raw_keys)
-       (Fclear_this_command_keys): Doc fixes.
-
-       * xfaces.c (Finternal_make_lisp_face, Finternal_copy_lisp_face)
-       (update_face_from_frame_parameter): Increment face_change_count
-       and windows_or_buffers_changed to force redisplay using changed faces.
-
-       * xdisp.c (QCpropertize): New variable.
-       (mode_line_proptrans_alist): New variable.
-       (display_mode_element): New arg PROPS; all calls changed.
-       Implement this, for strings.
-       Handle literal output of strings by sharing the
-       main-line code for strings, using local var `literal'.
-       Handle :propertize feature.
-       (syms_of_xdisp): Initialze and staticpro QCpropertize and
-       mode_line_proptrans_alist.
-
-2002-02-11  Kim F. Storm  <storm@cua.dk>
-
-       * window.c (Vmode_line_in_non_selected_windows): New variable.
-       (syms_of_window): DEFVAR_LISP it.
-
-       * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): New macro.
-       (CURRENT_MODE_LINE_FACE_ID): Use it.
-       (Vmode_line_in_non_selected_windows): Declare extern.
-
-       * xdisp.c (display_mode_lines): Use CURRENT_MODE_LINE_FACE_ID_3
-       to get mode line face.
-
-2002-02-11  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * msdos.c (Vx_bitmap_file_path, x_stretch_cursor_p): Remove these
-       variables; cus-start.el doesn't need them anymore.
-
-2002-02-09  Kim F. Storm  <storm@cua.dk>
-
-       * insdel.c (make_gap_smaller): Preserve BEG_UNCHANGED during gap
-       reduction.  This fixes a display problem where stray newlines were
-       inserted in the window (corrected by C-l).  Clarified code (IMHO).
-
-2002-02-09  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * dispextern.h (CURRENT_MODE_LINE_FACE_ID): Fix last change.
-
-       * xdisp.c (display_mode_lines): Fix last change.
-
-2002-02-09  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (enum_font_cb2): Don't let charsets unknown to Windows
-       match each other.
-       (w32_load_system_font): Prevent Cleartype fonts from loading.
-       (Fx_show_tip): Ensure tip frames are above other topmost windows.
-
-2002-02-09  Kim F. Storm  <storm@cua.dk>
-
-       * dispextern.h (CURRENT_MODE_LINE_FACE_ID): New macro.
-       (CURRENT_MODE_LINE_HEIGHT): Use it.
-       (enum face_id): Add MODE_LINE_INACTIVE_FACE_ID.
-
-       * xdisp.c (window_box_height): Use CURRENT_MODE_LINE_FACE_ID.
-       (pos_visible_p, handle_face_prop): Likewise.
-       (display_mode_lines): Likewise, but for the real selected window.
-       (init_iterator) [row == NULL]: Handle MODE_LINE_INACTIVE_FACE_ID.
-
-       * xfaces.c (Qmode_line_inactive): New face variable for mode-line
-       in non-selected windows.
-       (realize_basic_faces): Realize it.
-       (syms_of_term): Intern and staticpro it.
-
-2002-02-08  Kim F. Storm  <storm@cua.dk>
-
-       * alloc.c (SETJMP_WILL_LIKELY_WORK, SETJMP_WILL_NOT_WORK):
-       Changed mail addresses to emacs-devel@gnu.org.
-
-2002-02-08  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * fileio.c (Fsubstitute_in_file_name): If the file name includes
-       ~user, and there's no such user, don't discard everything before ~user.
-
-       * floatfns.c (Fround): Doc fix.
-
-2002-02-08  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * sysdep.c (init_system_name): Put unused variable `p' in #if 0.
-
-2002-02-07  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * lisp.h (Fx_file_dialog): Add extern decl (used in fileio.c).
-
-2002-02-07  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (where_is_internal): Only check whether definition is
-       remapped if it fulfills is_command_symbol.
-
-2002-02-07  Andreas Schwab  <schwab@suse.de>
-
-       * s/gnu-linux.h (GC_LISP_OBJECT_ALIGNMENT): Define to 2 for m68k.
-
-       * alloc.c (mark_stack): Don't assume sizeof (Lisp_Object) is 4.
-
-2002-02-06  Kim F. Storm  <storm@cua.dk>
-
-       * keymap.c (Fdefine_key): Allow symbol as KEY argument for
-       defining command remapping.  Doc updated.
-       (Flookup_key): Remap command through keymap if KEY is a symbol.
-       (is_command_symbol): New function.
-       (Fkey_binding): Use it.  New optional argument NO-REMAP.
-       Doc updated.  Callers changed.  Perform command remapping via
-       recursive call unless that arg is non-nil.
-       (where_is_internal): New argument no_remap.  Callers changed.
-       Call recursively to find original key bindings for a remapped
-       comand unless that arg is non-nil.
-       (Fwhere_is_internal): New optional argument NO-REMAP.
-       Doc updated.  Callers changed.  Pass arg to where_is_internal.
-
-       * keymap.h (Fkey_binding, Fwhere_is_internal): Update prototype.
-       (is_command_symbol): Add prototype.
-
-       * keyboard.c (Vthis_original_command): New variable.
-       (syms_of_keyboard): DEFVAR_LISP it.
-       (command_loop_1): Set it, and perform command remapping.
-
-2002-02-06  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * keyboard.c (recursive_edit_1): Call cancel_hourglass unconditionally.
-
-2002-02-06  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_native_per_char_metric): Disable 2002-01-20 change.
-
-2002-02-06  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * charset.c (get_charset_id): Use if-else instead of ?:.
-
-2002-02-06  Richard M. Stallman  <rms@gnu.org>
-
-       * filelock.c (S_ISLNK): Define if not defined.
-
-2002-02-03  Richard M. Stallman  <rms@gnu.org>
-
-       * fileio.c (Fdo_auto_save): Improve "auto save disabled" msg.
-
-       * lread.c (read1): Redesign strategy for force_multibyte and
-       force_singlebyte.  Now is_multibyte records whether read_buffer
-       is multibyte.  Encountering any multibyte character makes it so.
-
-2002-02-02  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * term.c (term_get_fkeys_1): If `k0' and `k;' are both specified and
-       with the same sequence, map that sequence to f10 rather than f0.
-
-2002-02-03  Andreas Schwab  <schwab@suse.de>
-
-       * s/gnu-linux.h: Check for __mc68000__ instead of __m68k__, the
-       latter never being defined on GNU/Linux.
-
-2002-02-02  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * xfaces.c (realize_default_face): Don't set the weight and slant of
-       the default face to Qnormal, unless these attributes are unspecified.
-
-2002-02-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * keyboard.c (command_loop_1) [HAVE_X_WINDOWS]:
-       Call cancel_hourglass unconditionally.
-
-       * eval.c (Fsignal): Remove duplicated declaration of
-       the variable `display_hourglass_p'.
-
-2002-01-31  Richard M. Stallman  <rms@gnu.org>
-
-       * editfns.c (region_limit): Nicer error message.
-
-       * coding.c (decode_composition_emacs_mule):
-       Give up if NCOMPONENT gets too large to index `component'.
-
-       * callint.c (check_mark): New arg to specify clearer error message.
-       Callers changed.
-
-2002-01-27  Richard M. Stallman  <rms@gnu.org>
-
-       * minibuf.c (Fcompleting_read): Doc fix.
-
-2002-01-27  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * minibuf.c (Fread_from_minibuffer, Fread_command, Fread_function)
-       (Fread_variable, Fread_buffer, minibuffer-completion-confirm):
-       Fix doc-strings.
-
-2002-01-26  Richard M. Stallman  <rms@gnu.org>
-
-       * buffer.c (syms_of_buffer): Doc fixes for scroll-...-aggressively.
-
-       * xdisp.c (try_scrolling): Exchange uses of scroll_down_aggressively
-       and scroll_up_aggressively.
-
-2002-01-26  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * keyboard.c (parse_tool_bar_item): Remove duplicated prototypes.
-
-2002-01-25  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * textprop.c (Fnext_property_change, Fnext_single_property_change)
-       (Fprevious_property_change, Fprevious_single_property_change):
-       Stay within the narrowed-buffer boundaries.
-
-2002-01-25  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * term.c (Ftty_display_color_cells): New function.
-       (syms_of_term): Defsubr it.
-       (Ftty_display_color_cells, Ftty_display_color_p): Change the
-       argument name to DISPLAY.  Doc fix.
-
-       * dispextern.h: Add prototype for set_tty_color_mode and
-       tty_setup_colors.
-
-2002-01-24  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (x_scroll_run): Use ScrollWindowEx in place of BitBlt.
-       If region left to draw is not what was expected, mark the frame as
-       garbaged.
-
-       * w32fns.c (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
-       Combine the regions returned by BeginPaint and GetUpdateRect.
-
-2002-01-23  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (x_update_window_begin): Only hide caret if
-       w32_use_visible_system_caret is set.
-       (x_update_window_end): Only show caret if
-       w32_use_visible_system_caret is set.
-       (syms_of_w32term): Handle SystemParametersInfo call failing.
-
-       * w32fns.c (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
-
-2002-01-22  Richard M. Stallman  <rms@gnu.org>
-
-       * unexelf.c (unexec): Define n so as to cause compilation error
-       for the code where people have often written n instead of nn.
-
-       * .gdbinit (hookpost-run): Defined.
-
-2002-01-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (x_set_frame_parameters): Typo in previous fix corrected.
-
-2002-01-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
-
-       * xfns.c (x_set_frame_parameters): Just call x_fullscreen_adjust
-       if fullscreen is being set.
-
-2002-01-21  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * minibuf.c (Fminibuffer_contents)
-       (Fminibuffer_contents_no_properties, Fread_from_minibuffer)
-       (Fread_string, Fread_no_blanks_input, Fcompleting_read): Doc fixes.
-
-2002-01-21  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (check_frame_size): Fix minimum height calculation.
-
-2002-01-20  Ken Raeburn  <raeburn@gnu.org>
-
-       * dispextern.h (WINDOW_WANTS_MODELINE_P): Use XFASTINT on window
-       height before comparison.
-       (WINDOW_WANTS_HEADER_LINE_P): Likewise.
-
-2002-01-20  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_system_caret_width): Remove.
-       (w32_use_visible_system_caret): New user flag.
-       (syms_of_w32term): DEFVAR_BOOL it.  Initialize based on whether
-       Windows reports a screen reader running.
-       (x_update_window_begin): Hide the system caret.
-       (x_update_window_end): Show the system caret.
-       (x_display_and_set_cursor): Don't draw a cursor when
-       w32_use_visible_system_caret is set.  Do not adjust width.
-
-       * w32fns.c (w32_visible_system_caret_hwnd): New static variable.
-       (w32_wnd_proc) <WM_KILL_FOCUS, WM_EMACS_DESTROY_CARET>: Set it.
-       <WM_EMACS_TRACK_CARET>: Arrange for system caret to be visible if
-       the user requests it.  Use system default width when creating.
-       <WM_EMACS_HIDE_CARET, WM_EMACS_SHOW_CARET>: Handle new messages.
-
-       * w32term.h (WM_EMACS_SHOW_CARET, WM_EMACS_HIDE_CARET):
-       New window messages.
-
-2002-01-20  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (MIN_SAFE_WINDOW_HEIGHT): Value now 1.
-
-2002-01-20  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * doprnt.c (doprnt1): Fix typos in error call.
-
-2002-01-20  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * unexelf.c (unexec) [__sgi]: Support the .got sections.
-
-2002-01-20  Jason Rumney  <jasonr@gnu.org>
-
-       * w32term.c (w32_native_per_char_metric): Don't trust the metrics
-       that Windows returns.  If a double check fails, try to guess how
-       ExtTextOut is going to act.
-
-       * w32fns.c (w32_load_system_font, w32_to_x_charset): Use strnicmp
-       in place of stricmp.
-       (w32_list_synthesized_fonts): Removed.
-       (w32_to_all_x_charsets, enum_font_maybe_add_to_list): New functions.
-       (struct enumfont_t): New element; list.
-       (enum_font_cb2): List all style and charset variations of a font.
-       (Fw32_select_font): New optional argument; include_proportional.
-       Exclude vertical fonts.  Exclude proportional fonts unless
-       include_proportional is non-nil.
-       (w32_enable_synthesized_fonts): Change to a boolean.
-       (Fw32_send_sys_command): Doc fix.
-
-2002-01-19  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * dispnew.c (update_frame): Move the variable `tem' to the block
-       where it is used.
-
-2002-01-19  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Fx_create_frame): Bind redisplay-dont-pause around
-       call to face-set-after-frame-default.
-
-2002-01-18  Richard M. Stallman  <rms@gnu.org>
-
-       * dispextern.h (WINDOW_WANTS_MODELINE_P): Check window height > 1.
-       (WINDOW_WANTS_HEADER_LINE_P): Check window height provides room.
-
-2002-01-17  Richard M. Stallman  <rms@gnu.org>
-
-       * window.c (enlarge_window): When exceeding size of parent,
-       directly delete all the siblings instead of trying to resize it.
-
-2002-01-17  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * term.c (set_tty_color_mode): Remove unused variable `tem'.
-
-2002-01-16  Henrik Enberg  <henrik@enberg.org>
-
-       * lread.c (init_lread): Move the installed-lisp dirs later in the path.
-
-2002-01-16  Kim F. Storm  <storm@cua.dk>
-
-       * xterm.c (x_erase_phys_cursor): Don't erase cursor if cursor row
-       is invisible.  This can happen if cursor is on top line of a
-       window, and we switch to a buffer with a header line.
-
-       * w32term.c (x_erase_phys_cursor): Ditto.
-
-2002-01-16  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * xterm.c (XTread_socket) [!USE_X_TOOLKIT]: Compute the value of
-       `dont_resize' only when used.
-
-       * xdisp.c: Remove forgotten extern declaration of `Qimage'.
-
-2002-01-15  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * xdisp.c (display_mode_element): When computing charpos, depend
-       on multibyteness of elt, not the text in field.
-
-2002-01-15  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * buffer.c (Fkill_all_local_variables):
-       Increment `update_mode_lines' only once.
-
-2002-01-14  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * lisp.h (adjust_after_replace_noundo)
-       (Fupdate_coding_systems_internal): Add prototypes.
-
-       * sound.c (Fplay_sound): Initialize header_size also for :data case.
-
-2002-01-14  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       Support for the --color command-line argument and tty-color-mode
-       frame parameter:
-
-       * term.c (tty_default_color_capabilities, tty_setup_colors)
-       (set_tty_color_mode): New functions.
-       (term_init): Call tty_default_color_capabilities.
-       (Qtty_color_mode_alist): New variable.
-       (syms_of_term): Intern and staticpro it.
-
-       * frame.c (store_frame_param): Call set_tty_color_mode for termcap
-       frames.
-       (do_switch_frame): For termcap frames, switch the tty
-       color mode as specified by the frame's parameters.
-       (Qtty_color_mode): New variable.
-       (syms_of_frame): Intern and staticpro it.
-
-       * emacs.c (USAGE2): Add the --color option.
-       (standard_args): Ditto.
+2007-10-14  Juanma Barranquero  <lekktu@gmail.com>
 
-2002-01-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+       * eval.c (do_autoload): Don't save autoloads.
 
-       * xterm.h (struct x_output): New members want_fullscreen,
-       x_pixels_diff, y_pixels_diff, x_pixels_outer_diff, and
-       y_pixels_outer_diff.
-       New enum for FULLSCREEN_* constants.
-       (FRAME_OUTER_WINDOW): Handle the case where output_data.x->widget
-       is NULL.
-       (x_fullscreen_adjust): Add prototype.
+       * data.c (Ffset): Save autoload of the function being set.
 
-       * emacs.c (USAGE2): Add the new full-screen arguments.
-       (standard_args): Ditto.
+2007-10-07  John Paul Wallington  <jpw@pobox.com>
 
-       * xfns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth):
-       New variables.
-       (syms_of_xfns): Intern and staticpro them.
-       (x_frame_parms) <"fullscreen">: New parameter.
-       (x_fullscreen_move, x_set_fullscreen): New functions.
-       (x_set_frame_parameters): Support for Qfullscreen.
-       (x_real_positions): More accurate computation of the frame position.
-       (x_figure_window_size): Support full-screen frames.
-       (Fx_create_frame): Default the fullscreen parameter.
+       * xfns.c (x_create_tip_frame): Set the `display-type' frame
+       parameter before setting up faces.
 
-       * xterm.c (x_check_fullscreen, x_fullscreen_adjust): New functions.
-       (XTread_socket) <Expose>: Call x_check_fullscreen.
-       <ConfigureNotify>: Don't resize to fullscreen.
-       Call x_check_fullscreen_move, and set the want_fullscreen member of
-       output_data.x.
+2007-10-13  Eli Zaretskii  <eliz@gnu.org>
 
-2002-01-13  Jason Rumney  <jasonr@gnu.org>
+       * ccl.c (Fregister_code_conversion_map):
+       * keyboard.c (append_tool_bar_item): Reformat last change.
 
-       * w32term.h (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages
-       for mice with more than 3 buttons.
+       * lisp.h (eabs): Rename from `abs'.  All callers changed.
 
-       * w32term.c (parse_button): New parameter xbutton.  Callers changed.
-       (w32_read_socket): Handle new "XBUTTON" messages.
+2007-10-05  Dmitry Antipov  <dmantipov@yandex.ru>
 
-       * w32fns.c (w32_pass_extra_mouse_buttons_to_system): New user option.
-       (syms_of_w32fns): DEFVAR_BOOL it.
-       (w32_wnd_proc): Handle new "XBUTTON" messages.
+       * buffer.c (add_overlay_mod_hooklist):
+       * ccl.c (Fregister_ccl_program, Fregister_code_conversion_map):
+       * fontset.c (make_fontset):
+       * keyboard.c (GROW_RAW_KEYBUF, menu_bar_items, menu_bar_item)
+       (append_tool_bar_item):
+       * macmenu.c (grow_menu_items):
+       * w32menu.c (grow_menu_items):
+       * xmenu.c (grow_menu_items): Use larger_vector.
 
-2002-01-13  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-10-13  Eli Zaretskii  <eliz@gnu.org>
 
-       * keyboard.c (read_key_sequence): Remove unused variable `extra_maps'.
+       * msdos.c (dos_rawgetc): Undo last change (there's no ``leaving
+       selected frame'' on MSDOS).
 
-2002-01-13  Andreas Schwab  <schwab@suse.de>
+2007-10-10  Patrick Mahan  <mahan@mahan.org>  (tiny change)
 
-       * xterm.c (x_load_font): Never set fonts_changed_p to zero.
+       * macfns.c (x_create_tip_frame): Set terminal for frame.
 
-2002-01-12  Andreas Schwab  <schwab@suse.de>
+2007-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * .gdbinit (xbuffer): Remove address operator since data is now a
-       pointer.
+       * frame.c (Qenvironment): Remove.
+       (syms_of_frame) <Qenvironment>: Don't initialize.
+       (Fdelete_frame): Don't treat the `environment' param specially.
+       * frame.h (Qenvironment): Don't declare.
+       * callproc.c (set_initial_environment): Don't set unused frame param.
 
-2002-01-11  Richard M. Stallman  <rms@gnu.org>
+       * frame.c (Fframe_with_environment): Remove.
+       (syms_of_frame) <Sframe_with_environment>: Don't declare.
 
-       * insdel.c (adjust_after_replace_noundo): New function.
+       * lisp.h (Fframe_with_environment): Don't declare.
 
-       * coding.c (code_convert_region): Don't copy old text if undo disabled.
+2007-10-10  Juanma Barranquero  <lekktu@gmail.com>
 
-2002-01-09  Jason Rumney  <jasonr@gnu.org>
+       * indent.c (indent_tabs_mode, last_known_column)
+       (last_known_column_modified): Make static.
+       (syms_of_indent) <indent-tabs-mode>: Remove redundant info in docstring.
 
-       * xdisp.c (x_consider_frame_title): Don't count the tooltip frame
-       when checking for multiple frames.
+2007-10-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-2002-01-08  Richard M. Stallman  <rms@gnu.org>
+       * puresize.h (BASE_PURESIZE): Increase to 1170000.
 
-       * window.c (delete_window): Rewrite the code for changing the
-       selected window to handle the case where WINDOW is not a leaf.
+2007-10-08  Martin Rudalics  <rudalics@gmx.at>
 
-2002-01-07  Eli Zaretskii  <eliz@is.elta.co.il>
+       * keyboard.c (kbd_buffer_get_event): Break loop waiting for input
+       when there's an unread command event.
 
-       * process.c (send_process): Set src_multibyte to 1 after the call
-       top setup_coding_system, not before the call.
+       * frame.c (focus_follows_mouse): Move here from frame.el to allow
+       window autoselection act appropriately when leaving selected frame.
+       (syms_of_frame): Initialize focus_follows_mouse.
+       * frame.h (focus_follows_mouse): Extern it.
+       * macterm.c (XTread_socket): When focus_follows_mouse is nil
+       make SELECT_WINDOW_EVENT only if we don't leave the selected frame.
+       * msdos.c (dos_rawgetc): Likewise.
+       * w32term.c (w32_read_socket): Likewise.
+       * xterm.c (handle_one_xevent): Likewise.
+       * xdisp.c (syms_of_xdisp): In doc-string of
+       mouse-autoselect-window mention focus-follows-mouse.
 
-2002-01-07  Jason Rumney  <jasonr@gnu.org>
+2007-10-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * xmenu.c (set_frame_menubar, xmenu_show):
-       (xdialog_show): Initialize wv->help to Qnil.
+       * macterm.c (mac_load_query_font): Fix missing return value.
+       [USE_CG_DRAWING] (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap):
+       Add BLOCK_INPUT.
 
-       * w32menu.c (single_submenu, set_frame_menubar, w32_menu_show):
-       (w32_dialog_show): Initialize wv->help to Qnil.
+2007-10-08  Richard Stallman  <rms@gnu.org>
 
-2002-01-06  Jason Rumney  <jasonr@gnu.org>
+       * xdisp.c (get_window_cursor_type): Implement documented behavior
+       for cursor-in-non-selected-windows = t.
 
-       * xmenu.c (single_submenu): Initialize wv->help to Qnil.
+2007-10-08  Jason Rumney  <jasonr@gnu.org>
 
-       * w32menu.c (w32_menu_display_help): Revert last change.
+       * w32.c (w32_get_resource): Always close registry keys.
 
-       * xmenu.c (menu_highlight_callback): Revert last change.
+2007-10-08  Jason Rumney  <jasonr@gnu.org>
 
-2002-01-06  Andreas Schwab  <schwab@suse.de>
+       * makefile.w32-in (LIBS): Add COMCTL32.
 
-       * insdel.c (make_gap_larger): Make sure buffer size does not
-       overflow range of int.
+       * w32fns.c (globals_of_w32fns): Init common controls.
 
-2002-01-05  Jason Rumney  <jasonr@gnu.org>
+2007-10-08  Richard Stallman  <rms@gnu.org>
 
-       * w32term.c (x_draw_glyphs): Don't call notice_overwritten_cursor if
-       OVERLAPS_P.
+       * image.c (our_memory_buffer): Rename from omfib_buffer.
 
-       * w32menu.c (w32_menu_display_help): Hide any tooltip window.
+2007-10-08  Richard Stallman  <rms@gnu.org>
 
-       * w32fns.c (compute_tip_xy): If tooltip won't fit on the screen
-       to the left or to the right of the pointer, put it against
-       the left screen edge.
-       (x_frame_parms): Add missing braces around initializer.
+       * buffer.c (Foverlays_at): Doc fix.
 
-       * w32term.c (x_setup_relief_colors): Don't compute an image's
-       background color if it doesn't have a Pixmap.
-       (notice_overwritten_cursor): Don't depend on
-       output_cursor and updated_area.  Compare pixel coordinates with
-       window's cursor pixel coordinates.
-       (x_draw_glyphs, x_clear_end_of_line, show_mouse_face):
-       Call notice_overwritten_cursor with new arg list.
-       (show_mouse_face): Fix bug setting a row's mouse_face_p flag
-       unconditionally.
-       (x_draw_image_relief): Use predefined macro instead of
-       constant when the value of `tool_bar_button_relief' is negative.
+2007-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * w32term.c (x_display_and_set_cursor): Fix PostMessage arg types.
+       * fns.c (Fplist_put): Preserve uneven tail data.
 
-2002-01-04  Richard M. Stallman  <rms@gnu.org>
+2007-10-08  Peter O'Gorman  <bug-gnu-emacs@mlists.thewrittenword.com>  (tiny change)
 
-       * xmenu.c (menu_highlight_callback): Hide any tooltip window.
+       * termhooks.h (enum event_kind): Remove trailing comma.
 
-2002-01-03  Richard M. Stallman  <rms@gnu.org>
+       * frame.h (enum): Remove trailing comma.
 
-       * keymap.c (Fcurrent_active_maps): Put the `keymap' property map first.
-       (Fkey_binding): Try the `keymap' property map first.
-       (Fdescribe_buffer_bindings): Show `keymap' property bindings before
-       minor mode bindings.
+2007-10-08  Dhuvra Krishnamurthy  <dhuvrakm@gmail.com>  (tiny change)
 
-2002-01-03  Kim F. Storm  <storm@cua.dk>
+       * w32proc.c (delete_child): Don't terminate threads of zombies.
 
-       * keyboard.c (read_key_sequence): Fix cast of submaps arg to bcopy.
+2007-10-08  Martin Rudalics  <rudalics@gmx.at>
 
-2002-01-02  Richard M. Stallman  <rms@gnu.org>
+       * keyboard.h (struct kboard): New elt Vlast_repeatable_command.
 
-       * keyboard.c (read_key_sequence): Handle the keymap property
-       before minor mode maps.
+       * keyboard.c (syms_of_keyboard): Set up new Lisp variable
+       last-repeatable-command.
+       (init_kboard): Initialize Vlast_repeatable_command.
+       (command_loop_1): Set it to real_this_command unless that was
+       bound to an input event.
+       (mark_kboards): Mark it.
 
-       * editfns.c (Fformat): Update thissize from field_width
-       based on the actual width, in the string case.
+2007-10-08  Richard Stallman  <rms@gnu.org>
 
-2002-01-01  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * eval.c (condition-case): Doc fix.
 
-       * charset.h (UNIBYTE_STR_AS_MULTIBYTE_P): Parenthesize assignment
-       when used as truth value to prevent gcc warnings.
+2007-10-08  Masatake YAMATO  <jet@gyve.org>
 
-       * sysdep.c, unexapollo.c, w32.c, w32bdf.c, w32heap.c, w32inevt.c,
-       * w32proc.c: Include <config.h>.
+       * xfaces.c (tty_supports_face_attributes_p): Fix code
+       for LFACE_INVERSE_INDEX and LFACE_BACKGROUND_INDEX; code
+       was copied and not edited.
 
-2002-01-01  Andreas Schwab  <schwab@suse.de>
+2007-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Add new `input-decode-map' keymap and use it for terminal
+       escape sequences.
+       * keyboard.h (struct kboard): Add Vinput_decode_map.
+       Remove Vlocal_key_translation_map.
+       * keyboard.c (read_key_sequence): Add support for input-decode-map.
+       (init_kboard): Init input-decode-map.
+       Replace local-key-translation-map back with key-translation-map.
+       (syms_of_keyboard): Declare input-decode-map.
+       Remove local-key-translation-map.  Update docstrings.
+       (mark_kboards): Mark Vinput_decode_map.
+       Don't mark Vlocal_key_translation_map.
+       * keymap.c (Fdescribe_buffer_bindings): Describe input-decode-map.
+       Replace local-key-translation-map back with key-translation-map.
+       * term.c (term_get_fkeys_1, CONDITIONAL_REASSIGN):
+       Bind in input-decode-map rather than function-key-map.
+
+       * lisp.h (XSETPSEUDOVECTOR): Don't set the tag anymore.
+       This was made redundant by the previous introduction of XSETPVECTYPE.
 
-       * eval.c (max_specpdl_size, max_lisp_eval_depth): Define as int,
-       not EMACS_INT, to make them compatible with DEFVAR_INT.
-       * lisp.h (max_specpdl_size): Adjust declaration.
+2007-10-09  Richard Stallman  <rms@gnu.org>
 
-2002-01-01  Richard M. Stallman  <rms@gnu.org>
+       * image.c (free_bitmap_record): Rename from Free_Bitmap_Record.
 
-       * print.c (print_object): Test print_escape_nonascii only for
-       unibyte strings.
-       (PRINTPREPARE): Once again bind Qprint_escape_nonascii
-       when outputting to a multibyte buffer.
+2007-09-29  Richard Stallman  <rms@gnu.org>
 
-2001-12-29  Richard M. Stallman  <rms@gnu.org>
+       * eval.c (internal_condition_case_2, internal_condition_case_1)
+       (internal_condition_case): Reenable abort if x_catching_errors ()
+       to see if that really happens and why.
 
-       * print.c (print_object): In multibyte string, use hex escapes.
-       Use octal only for unibyte strings.
-       (PRINTPREPARE): Don't ever set Qprint_escape_nonascii.
+2007-10-06  Andreas Schwab  <schwab@suse.de>
 
-       * lread.c (read_escape): New arg BYTEREP for reporting whether
-       escape forces unibyte or multibyte.
-       (read1): When reading a string, take note of that info.
+       * fileio.c (Fwrite_region): Ignore EINVAL error from fsync.
 
-2001-12-29  Ken Raeburn  <raeburn@gnu.org>
+2007-10-04  Juanma Barranquero  <lekktu@gmail.com>
 
-       * abbrev.c (Fexpand_abbrev): Use NILP instead of implicit zero
-       comparison to test lisp value returned by Fget.
+       * image.c (syms_of_image) <image-types>: Fix typo in docstring.
 
-2001-12-29  Richard M. Stallman  <rms@gnu.org>
+2007-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * lisp.h (max_specpdl_size): Add declaration.
+       * frame.h (struct frame): Don't try to GC-mark menu_bar_items_used.
 
-       * fileio.c (Fdo_auto_save): If NO_MESSAGE, don't call push_message.
+2007-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * keymap.c (silly_event_symbol_error): New subrtn, from Fdefine_key.
-       Handle modifier bits.  Correct typo in error message.
+       * window.h (struct window):
+       * window.c (struct save_window_data, struct saved_window):
+       * termhooks.h (struct terminal):
+       * process.h (struct Lisp_Process):
+       * frame.h (struct frame):
+       * buffer.h (struct buffer):
+       * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table)
+       (struct Lisp_Bool_Vector, struct Lisp_Subr, struct Lisp_Hash_Table):
+       The size field of (pseudo)vectors is now unsigned.
+       (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Simplify accordingly.
 
-2001-12-28  Richard M. Stallman  <rms@gnu.org>
+       * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
+       Turn `count' into an integer.
 
-       * abbrev.c: Use the plist of an abbrev for multiple params if nec.
-       (Fdefine_abbrev): New arg SYSTEM-FLAG for a system abbrev.
-       (Fdefine_global_abbrev, Fdefine_mode_abbrev):
-       Update calls to Fdefine_abbrev.
-       (write_abbrev): Update for changed data format.
-       Don't list "system" abbrevs.
-       (Fexpand_abbrev): Update use count with new data format.
-       (describe_abbrev): Update for changed data format.
-       (Fdefine_abbrev_table): Handle the new SYSTEM-FLAG.
+       * fns.c (make_hash_table, hash_put, hash_remove, hash_clear)
+       (sweep_weak_table, sweep_weak_hash_tables, Fhash_table_count):
+       * print.c (print_object) <HASH_TABLE_P>: `count' is an int.
+       * alloc.c (allocate_hash_table): Use ALLOCATE_PSEUDOVECTOR.
+       (mark_object) <HASH_TABLE_P>: Use mark_vectorlike.
 
-       * config.in (HAVE_MBSINIT): Add #undef.
+       * alloc.c (allocate_pseudovector): New fun.
+       (ALLOCATE_PSEUDOVECTOR): New macro.
+       (allocate_window, allocate_terminal, allocate_frame)
+       (allocate_process): Use it.
+       (mark_vectorlike): New function.
+       (mark_object) <FRAMEP, WINDOWP, BOOL_VECTOR_P, VECTORP>: Use it.
+       (mark_terminals): Use it.
+       (Fmake_bool_vector, Fmake_char_table, make_sub_char_table)
+       (Fmake_byte_code): Use XSETPVECTYPE.
 
-       * strftime.c (mbsinit): Define as no-op if not available.
+       * frame.c (Fframe_parameters): Minor simplification.
 
-       * s/sco5.h (LIBX11_SYSTEM) [MOTIF]: Add -lgen.
-       (sigprocmask_set): Conditionalize decl on ! NOT_C_CODE.
+       * insdel.c (adjust_markers_for_insert): Generalize assertion checks.
 
-       * keymap.c (Flookup_key): Error message if key has wrong data type.
-       (Fdefine_key): Add error message for trying to bind [DEL], [RET], etc.
-       (exclude_key): New variable.
+       * marker.c (Fmarker_buffer): Make test for odd case into a failure.
 
-2001-12-28  Gerd Moellmann  <gerd@gnu.org>
+       * buffer.c (Fget_buffer_create, init_buffer_once):
+       * lread.c (defsubr):
+       * window.c (Fcurrent_window_configuration): Use XSETPVECTYPE.
 
-       * xterm.c (x_setup_relief_colors): Don't compute an image's
-       background color if it doesn't have a Pixmap.
+       * lisp.h (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Don't let them be
+       defined differently in the m/*.h files.
+       (XCHAR_TABLE, XBOOL_VECTOR): Add assertion checking.
+       (XSETPVECTYPE): New macro.
+       (XSETPSEUDOVECTOR): Use it.
 
-       * xterm.c (notice_overwritten_cursor): Don't depend on
-       output_cursor and updated_area.  Compare pixel coordinates with
-       window's cursor pixel coordinates.
-       (x_draw_glyphs, x_clear_end_of_line, show_mouse_face):
-       Call notice_overwritten_cursor with new arg list.
-       (show_mouse_face): Fix bug setting a row's mouse_face_p flag
-       unconditionally.
+       * buffer.c (syms_of_buffer) <local-abbrev-table>: Move from abbrev.c.
+       (DEFVAR_PER_BUFFER, defvar_per_buffer): Move from lisp.h and lread.c.
 
-       * xdisp.c (try_scrolling) <PT below scroll margin>: Add the
-       height of the cursor line to the amount to scroll.
+       * lisp.h (defvar_per_buffer, DEFVAR_PER_BUFFER):
+       * lread.c (defvar_per_buffer):
+       * abbrev.c (syms_of_abbrev) <local-abbrev-tabl>: Move to buffer.c.
 
-2001-12-27  Richard M. Stallman  <rms@gnu.org>
+       * window.c (candidate_window_p): Only consider as visible frames that
+       are on the same terminal.
 
-       * intervals.c (set_point_both): The position after an invisible,
-       intangible character is not an acceptable stopping point.
+       * m/ibms390x.h (MARKBIT): Remove unused macro.
 
-2001-12-27  Ken Raeburn  <raeburn@gnu.org>
+2007-10-01  Juanma Barranquero  <lekktu@gmail.com>
 
-       * window.c (enlarge_window): In new preserve_before code, convert
-       CURBEG from lisp object to integer before doing arithmetic.
+       * lread.c (Fload): Fix typo in docstring.
 
-2001-12-27  Richard M. Stallman  <rms@gnu.org>
+2007-10-01  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-       * bytecode.c (Fbyte_code): Undo previous change.
+       * floatfns.c (Fexpt): Manually check for overflows, so that a power
+       of a non-zero value can't yield zero.
 
-2001-12-26  Kim F. Storm  <storm@cua.dk>
+2007-09-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * keyboard.c (record_char): Ignore duplicate help-echo events only
-       separated by mouse-movement.  When tracking mouse, only record
-       first and last mouse-movement event in same window.
-       Don't record mouse-movement events in keyboard macros.
+       * term.c (term_clear_mouse_face, term_mouse_highlight)
+       (tty_write_glyphs_with_face): Only define is HAVE_GPM.
 
-2001-12-25  Richard M. Stallman  <rms@gnu.org>
+       * print.c (safe_debug_print): Use XHASH.
 
-       * window.c (enlarge_window): New arg PRESERVE_BEFORE.  Callers changed.
-       (Fenlarge_window): New arg PRESERVE_BEFORE.
+       * lisp.h (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
+       Lisp elements such as tags.
+       (XHASH): New macro.
+       (EQ): Use it.
+       (SREF, SSET, STRING_COPYIN): Use SDATA.
+       (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): Remove.
 
-       * bytecode.c (Fbyte_code): Use Fstring_make_unibyte
-       instead of Fstring_as_unibyte.
+       * alloc.c (mark_terminal): Remove left-over declaration.
+       (enum mem_type): Replace all vector subtypes -> MEM_TYPE_VECTORLIKE.
+       (allocate_vectorlike): Remove type argument.  Adjust callers.
+       (live_vector_p, mark_maybe_pointer, valid_lisp_object_p):
+       Only handle the one remaining MEM_TYPE_VECTORLIKE.
 
-2001-12-22  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * alloc.c (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): New macros
+       to avoid unnecessary BLOCK_INPUTs when SYNC_INPUT is used.
+       (xmalloc, xrealloc, xfree, lisp_malloc, lisp_free, lisp_align_malloc)
+       (lisp_align_free, make_interval, allocate_string, allocate_string_data)
+       (make_float, Fcons, allocate_vectorlike, Fmake_symbol, allocate_misc):
+       Use them.
 
-       The following changes remove mocklisp support:
+       * xfaces.c (load_face_font, free_realized_face, clear_face_gcs):
+       Don't let signal handlers run when a GC is freed but not yet NULL'ed.
+       (x_free_gc): Remove BLOCK_INPUT since it's now redundant.
 
-       * mocklisp.h, mocklisp.c: Files removed.
+2007-09-28  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * lisp.h: Remove declarations of variables `Vmocklisp_arguments',
-       `Qmocklisp' and `Qmocklisp_arguments'.
-       Remove prototype of syms_of_mocklisp.
+       * Makefile.in (lisp, shortlisp): Delete server.elc, it is not
+       loaded by default.
 
-       * makefile.nt, makefile.w32-in, Makefile.in: Remove mocklisp files.
+2007-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * callint.c: Do not include mocklisp.h.
-       (Fcall_interactively): Do not test for mocklisp case.
+       * term.c (Fgpm_mouse_start): Don't signal an error if already activated
+       on this tty.
+       (Fgpm_mouse_stop): Only deactivate if it was activated on this tty.
 
-       * eval.c: Remove variables `Qmocklisp_arguments',
-       `Vmocklisp_arguments' and `Qmocklisp'.  Remove prototype of ml_apply.
-       (Fprogn, Fwhile, Fcommandp, Feval, Ffuncall, funcall_lambda):
-       Do not test for mocklisp case.
-       (Fwhile): Remove unused variable `tem'.
-       (syms_of_eval): Remove variable `moclisp-arguments'.
+       * term.c (mouse_face_window): Rename from Qmouse_face_window.
+       Update all users.
+       (handle_one_term_event): Use Gpm_DrawPointer.
+       (Fgpm_mouse_start): Rename from Fterm_open_connection.
+       Signal errors instead of returning nil.  Always return nil.
+       (Fgpm_mouse_stop): Rename from Fterm_close_connection.
+       Make it a noop if gpm-mouse was not activated.
+       (syms_of_term): Update names.
 
-       * data.c (wrong_type_argument): Remove mocklisp case.
+2007-09-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * doc.c (Fdocumentation): Remove mocklisp case.
+       * sysdep.c (narrow_foreground_group, widen_foreground_group): Static.
+       (init_sys_modes): Check that gpm_tty is the current tty.
 
-       * emacs.c (main): Do not call syms_of_mocklisp.
+       * alloc.c (allocate_terminal): Set the vector size to only count the
+       lisp fields.  Initialize those to nil.
+       (mark_object): Don't treat terminals specially.
+       (mark_terminal): Remove.
+       (mark_terminals): Use mark_object instead.
 
-2001-12-21  Richard M. Stallman  <rms@gnu.org>
+       * termhooks.h (struct terminal): Move all Lisp_Object fields traced by
+       the GC to the beginning.
 
-       * xfns.c (compute_tip_xy): If tooltip won't fit on the screen
-       to the left or to the right of the pointer, put it against
-       the left screen edge.
+       * indent.h:
+       * indent.c: Use EMACS_INT for ints coming from Elisp data.
 
-2001-12-21  Eli Zaretskii  <eliz@is.elta.co.il>
+       * indent.c (Fmove_to_column): Use EMACS_INT for buffer positions.
 
-       * Makefile.in (distclean): Remove .gdbinit if we are building
-       outside the source tree.
+2007-09-25  Jason Rumney  <jasonr@gnu.org>
 
-2001-12-19  Eli Zaretskii  <eliz@is.elta.co.il>
+       * frame.c (make_terminal_frame): Remove special case for WINDOWSNT.
 
-       * w32.c (emacs_root_dir): New function.
+       * w32console.c (create_w32cons_output): Remove.
 
-       * msdos.c (emacs_root_dir): New function.
+       * term.c (init_tty): Call init_sys_modes on WINDOWSNT also.
 
-       * fileio.c (Fexpand_file_name) [DOS_NT]: Use the root directory
-       of the current drive as the fallback for default_directory.
+       * sysdep.c (init_sys_modes): Use set_terminal_modes_hook.
+       (reset_sys_modes): Use reset_terminal_modes_hook.
 
-       * dired.c (file_name_completion): Run the elements of
-       completion-ignored-extensions through ENCODE_FILE.
+2007-09-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * lisp.h (scmp): Remove prototype, since it's now a static
-       function private to dired.c.
+       * eval.c (do_autoload): Don't output any message.
 
-2001-12-18  Richard M. Stallman  <rms@gnu.org>
+2007-09-24  Juri Linkov  <juri@jurta.org>
 
-       * dired.c (scmp): Function moved from minibuf.c.
-       Delete multibyte handling--used only on encoded strings.
+       * emacs.c (standard_args): Change priority of "--no-splash"
+       from 40 to 3.  Add "--no-desktop" with the same priority.
 
-       * minibuf.c (scmp): Function moved to dired.c.
+2007-09-23  Dmitry Antipov  <dmantipov@yandex.ru>
 
-       * fns.c (merge): Add QUIT call.
+       * alloc.c (gc_sweep): Check cons cell mark bits word by word
+       and optimize the case where they are all 1.
 
-2001-12-18  Dave Love  <fx@gnu.org>
+2007-09-23  Johannes Weiner  <hannes@saeurebad.de>
 
-       * Makefile.in (lisp, shortlisp): Add language/utf-8-lang.el,
-       language/georgian.el.
+       * lisp.h (abs): Define if not defined.
+       * keyboard.c, sound.c, w32term.c, xfaces.c, xterm.c:
+       Don't define `abs', since it's defined in lisp.h.
 
-2001-12-18  Eli Zaretskii  <eliz@is.elta.co.il>
+2007-09-22  Eli Zaretskii  <eliz@gnu.org>
 
-       * Makefile.in (lisp, shortlisp): Synchronize with changes to
-       lisp/Makefile.in:DONTCOMPILE.
+       * term.c (DEV_TTY): New macro.  Provide a definition for MS-Windows.
+       (FRAME_TERMCAP_P) [WINDOWSNT]: Don't define to zero.
+       (Fcontrolling_tty_p, Fresume_tty, dissociate_if_controlling_tty)
+       (init_tty): Use DEV_TTY instead of "/dev/tty".
+       [WINDOWSNT]: No need to protect from NAME arg being null.
 
-2001-12-18  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-09-21  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * xdisp.c (window_box_height): Do not return negative values.
-       From Gerd Moellmann <gerd@gnu.org>.
+       * term.c (Fsuspend_tty): Run suspend-tty-functions before cleaning
+       up the tty state.
 
-       * keyboard.c (head_table): Add missing braces around initializer.
+2007-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * term.c (keys): Likewise.
+       * termhooks.h (term_gpm): Delete.  Use gpm_tty's NULLness instead.
+       (gpm_tty): Change its type.
+       * term.c (term_gpm): Delete.  Use gpm_tty's NULLness instead.
+       (gpm_tty): Change its type and initialize it.
+       (Fterm_open_connection): Check the frame is indeed a tty.
+       Use the new gpm_tty.
+       (Fterm_close_connection): Use the new gpm_tty.
+       * keyboard.c (tty_read_avail_input): Use the new gpm_tty.
+       * sysdep.c (init_sys_modes): term_gpm -> gpm_tty.
 
-       * xfns.c (x_frame_parms, visual_classes): Likewise.
+2007-09-21  Juanma Barranquero  <lekktu@gmail.com>
 
-2001-12-17  Sam Steingold  <sds@gnu.org>
+       * w32term.c (x_draw_glyph_string): Use strike_through_color, not
+       underline_color, to draw strike-through.
 
-       * coding.c (DECODE_COMPOSITION_END): Fixed a typo in the last
-       patch (COMPOSING_P, not COMPOSING).
+2007-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-12-17  Richard M. Stallman  <rms@gnu.org>
+       * lisp.h (allocate_terminal): Declare.
 
-       * editfns.c (Fcompare_buffer_substrings): Add QUIT to main loop.
+       * window.c (candidate_window_p): Consider frames that are being placed
+       by the user as somewhere between visible and iconified.
+       (window_loop): Prefer windows on the current frame.
+       (Fselect_window): Move the use of select-frame to the beginning so we
+       can just delegate all the work (it'll call us back anyway).
 
-       * coding.c (code_convert_region): Update coding->cmp_data->char_offset
-       before calling decode_coding.
+       * frame.c (Qdisplay_environment_variable):
+       * frame.h (Qdisplay_environment_variable): Delete.
 
-       * charset.c (Fdefine_charset): Call Fupdate_coding_systems_internal.
+       * .gdbinit (xbacktrace): Print the arg's address rather than the value
+       of the first arg, since that value may be a union.
 
-       * coding.c (DECODE_COMPOSITION_END): Check for ! COMPOSING_P (coding)
-       instead of only for COMPOSITION_DISABLED.
+       * callproc.c (child_setup, getenv_internal): Use the frame's `display'
+       parameter rather than Qdisplay_environment_variable.  If all else
+       fails, look for DISPLAY in initial-environment.
 
-2001-12-16  Richard M. Stallman  <rms@gnu.org>
+2007-09-21  Glenn Morris  <rgm@gnu.org>
 
-       * alloc.c (pure_alloc): After overflow, allocate just a small block.
+       * Makefile.in (emacstool): Remove target.
+       (lisp, shortlisp): Remove termdev.elc.
 
-       * Makefile.in (xmenu.o, xterm.o, fontset.o): Depend on buffer.h.
+2007-09-21  Markus Triska  <markus.triska@gmx.at>
 
-       * buffer.h (struct buffer): New field `display_error_modiff'.
-       * buffer.c (reset_buffer): Initialize `display_error_modiff'.
+       * xterm.c (x_delete_display): Compile session management conditionally.
 
-       * window.c (Frecenter): Clear display_error_modiff field.
+2007-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * xdisp.c (redisplay_window_0, redisplay_window_1): New functions.
-       Call redisplay_window, but not if display_error_modiff field says no.
-       (redisplay_window_error): New function.
-       (displayed_buffer): New variable.
-       (redisplay_internal, redisplay_windows): Call the new functions
-       instead of redisplay_window directly.
+       * callproc.c (getenv_internal_1): New function.
+       (getenv_internal): Use it.
+       (Fgetenv_internal): Use it.  Accept an env-list as optional arg.
 
-2001-12-15  Richard M. Stallman  <rms@gnu.org>
+       * terminal.c (get_terminal): Don't accept ints to represent terminals.
+       (Fterminal_name, Fterminal_parameters, Fterminal_parameter)
+       (Fset_terminal_parameter): Work with dead terminals as well.
+       (Fmodify_terminal_parameters): Remove.
 
-       * keyboard.c (syms_of_keyboard) <double-click-fuzz>: Doc fix.
+       * terminal.c (get_terminal): Handle terminals.
+       Make sure the terminal returned is live.
+       (create_terminal): Use allocate_terminal.
+       (mark_terminals): Move to alloc.c.
+       (delete_terminal): Use terminal->name as liveness status.
+       NULL out fields after freeing their contents.
+       Don't deallocate the object.
+       (Fframe_terminal): Use FRAME_TERMINAL.  Return the terminal object
+       rather than an int.
+       (Fterminal_live_p): Accept non-integer arguments.
+       (Fterminal_list): Return terminal objects rather than an ints.
 
-2001-12-14  Andrew Innes  <andrewi@gnu.org>
+       * alloc.c (enum mem_type): New member for `terminal' objects.
+       (allocate_terminal): New function.
+       (mark_maybe_pointer, valid_lisp_object_p, mark_object):
+       Handle terminals.
+       (mark_terminal): New fun.
+       (mark_terminals): Move from terminal.c.
 
-       * makefile.w32-in (EMACSLOADPATH): Define.
-       ($(EMACS)): Run `list-load-path-shadows' after dumping Emacs.
-       (bootstrap-temacs): Remove dependency on bootstrap-clean.
+       * term.c (get_tty_terminal): Don't treat output_initial specially.
+       (Fsuspend_tty, Fresume_tty): Use terminal objects rather than ints.
+       (delete_tty): Use terminal->name as liveness status.
 
-2001-12-13  Eli Zaretskii  <eliz@is.elta.co.il>
+       * termhooks.h (struct terminal): Make it into a pseudovector.
+       Remove `deleted' replaced by checking `name's nullness.
 
-       * xfns.c (x_report_frame_params): Make the scroll-bar-width frame
-       parameter have a numeric value all the time.
+       * print.c (print_object): Handle terminals.
 
-       * w32fns.c (x_report_frame_params): Likewise.
+       * lisp.h (enum pvec_type): New `terminal' pseudovector.
+       (XTERMINAL, XSETTERMINAL, TERMINALP, GC_TERMINALP): New macros.
 
-2001-12-12  Richard M. Stallman  <rms@gnu.org>
+       * frame.c (make_terminal_frame):
+       * keyboard.c (tty_read_avail_input):
+       * w32term.c (x_delete_terminal):
+       * xfns.c (Fx_create_frame, x_create_tip_frame):
+       * xterm.c (x_delete_terminal): Use terminal->name as liveness status.
 
-       * fileio.c (Fwrite_region): Doc fix.
+2007-09-20  Glenn Morris  <rgm@gnu.org>
 
-       * xdisp.c (CLEAR_FACE_CACHE_COUNT): Redefine as 500.
-       (redisplay_internal): Call clear_image_cache only for window terminals.
+       * process.c (Fmake_network_process): Doc fix.
 
-2001-12-12  Gerd Moellmann  <gerd@gnu.org>
+2007-09-19  Jason Rumney  <jasonr@gnu.org>
 
-       * xdisp.c (move_it_vertically_backward): Change heuristic
-       for the case that we didn't move far enough initially.
+       * dispextern.h (w32_init_fringe, mac_init_fringe): Declare rif argument.
 
-       * window.c (Frecenter): Simplify computation in the case of window
-       system frames and ARG < 0; use window_box_height.
+2007-09-19  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-2001-12-11  Richard M. Stallman  <rms@gnu.org>
+       * coding.c (detect_eol_type, detect_eol_type_in_2_octet_form):
+       Fix a C warning regarding variable constness.
 
-       * Makefile.in, mem-limits.h, dispnew.c, emacs.c, fileio.c:
-       * process.c, sysdep.c, unexec.c: Test GNU_LINUX, not LINUX.
+       * xterm.c (handle_one_xevent): Fix a C warning.
 
-2001-12-11  Andrew Innes  <andrewi@gnu.org>
+2007-09-18  Jason Rumney  <jasonr@gnu.org>
 
-       * insdel.c (make_gap) [DOUG_LEA_MALLOC]: Call make_gap_smaller if
-       arg is negative.
+       * w32fns.c (Fx_focus_frame): Rename from Fw32_focus_frame.
 
-2001-12-11  Richard M. Stallman  <rms@gnu.org>
+2007-09-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * m/hp800.h: Split the __hpux conditional into the parts
-       that are right for GNU/Linux too and the parts that are not.
-       Use the former if GNU_LINUX.
-       (HAVE_ALLOCA, LOAD_AVE_TYPE, LOAD_AVE_CVT): New defs for GNU/Linux.
+       * gtkutil.c (gdpy_def): New variable.
+       (xg_initialize): Initialize gdpy_def.
+       (xg_display_close): If no other display exists, set gdpy_def to a
+       new connection.
 
-       * s/gnu-linux.h (GNU_LINUX): Defined.
+2007-09-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-2001-12-11  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * gtkutil.c (xg_get_image_for_pixmap): Always create a GdkPixbuf
+       when we have no file name for the icon.
+       (xg_tool_bar_expose_callback): Remove.
+       (xg_create_tool_bar): Don't connect expose signal to
+       xg_tool_bar_expose_callback.
+       (xg_get_file_with_chooser): Move GCPRO1 after declarations.
 
-       * macros.c, msdos.c, w16select.c: Change doc-string comments to
-       `new style' [w/`doc:' keyword].
+2007-09-16  Andreas Schwab  <schwab@suse.de>
 
-2001-12-10  Jason Rumney  <jasonr@gnu.org>
+       * alloc.c (reset_malloc_hooks): Set the hooks to the previous
+       values instead of zapping them.
 
-       * w32menu.c (w32_free_submenu_strings): Clear menu item struct
-       before using.
+2007-09-14  Glenn Morris  <rgm@gnu.org>
 
-2001-12-09  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * fringe.c (init_fringe_bitmap) <swap_nibble>: Move to file scope.
+       * gtkutil.c (xg_separator_p) <separator_names>: Move to file scope.
+       * image.c (our_memory_fill_input_buffer) <buffer>: Move to file
+       scope and rename to omfib_buffer for clarity.
+       (gif_load) <interlace_start, interlace_increment>: Move to file scope.
 
-       * dosfns.c: Change doc-string comments to `new style' [w/`doc:'
-       keyword].
+2007-09-14  Kenichi Handa  <handa@m17n.org>
 
-2001-12-09  Eli Zaretskii  <eliz@is.elta.co.il>
+       * xterm.c (handle_one_xevent): Skip decoding if nbytes is zero.
 
-       * dosfns.c (dos-display-scancodes, dos-decimal): Doc fix.
+2007-09-13  Jason Rumney  <jasonr@gnu.org>
 
-       * s/hpux10.h (srand48): Don't undefine.
+       * fringe.c (w32_init_fringe, mac_init_fringe): Add rif argument.
 
-2001-12-09  Jason Rumney  <jasonr@gnu.org>
+       * w32term.c (w32_term_init): Pass rif to w32_init_fringe.
 
-       * w32menu.c (_widget_value): Make `help' field a Lisp_Object.
-       Add comment to explain where the struct came from.
-       (single_submenu, w32_menu_show): Set `help' field as Lisp_Object.
-       (add_menu_item): Process pop-up menus first to avoid memory leak.
-       (add_menu_item, w32_menu_display_help): Use `help' field as
-       Lisp_Object.
-       (w32_free_submenu_strings): Only free owner-drawn strings.
+       * macterm.c (mac_initialize): Don't call mac_init_fringe here.
+       (mac_term_init): Call here instead, passing rif.
 
-2001-12-09  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-09-13  Glenn Morris  <rgm@gnu.org>
 
-       * COPYING: Moved back.
+       * s/hpux.h: No longer define `static' as nothing.
 
-       * charset.c (char_to_string_1, translate_char, Fdefine_charset):
-       Add parentheses around && within ||.
+2007-09-13  Johan Bockg\e,Ae\e(Brd  <bojohan@gnu.org>
 
-       * indent.c (compute_motion): Likewise.
+       * callint.c (Fcall_interactively): Remove unused var `fun'.
 
-       * intervals.c (merge_properties_sticky): Likewise.
+2007-09-12  Romain Francoise  <romain@orebokech.com>
 
-       * coding.c (setup_coding_system, shrink_encoding_region)
-       (Fdecode_sjis_char): Likewise.
+       * window.c (prefer_window_split_horizontally, display_buffer):
+       Revert 2007-09-08 change.
 
-2001-12-07  Andreas Schwab  <schwab@suse.de>
+2007-09-12  Glenn Morris  <rgm@gnu.org>
 
-       * xdisp.c (display_mode_element): Don't read past end of string if
-       it ends with '%'.
+       * alloca.c: Remove file.
+       * Makefile.in (alloca): Do not undef.
+       (allocaobj, alloca.o): Remove.
+       (otherobj): Remove allocaobj.
+       * keyboard.c (command_loop_1): Remove #ifdef C_ALLOCA block.
+       * regex.c (C_ALLOCA): Remove all references and code that was only
+       used when this was defined.
+       * search.c (boyer_moore): Remove #ifdef C_ALLOCA block.
+       * xmenu.c (xmenu_show): Remove #ifdef C_ALLOCA block.
+       * m/ibms390x.h, m/sh3el.h (C_ALLOCA): Remove references to this.
 
-       * alloc.c (inhibit_garbage_collection): Don't exceed value an int
-       can hold.
+       * Makefile.in (SOURCES, unlock, relock): Delete.
 
-       * data.c (Vmost_positive_fixnum, Vmost_negative_fixnum):
-       Rename from most_positive_fixnum and most_negative_fixnum, resp., and
-       type changed to Lisp_Object.
-       (syms_of_data): DEFVAR_LISP them.
+       * gtkutil.c (cnt): Rename to menu_grab_callback_cnt for clarity.
+       (menu_grab_callback): All uses changed.
 
-2001-12-07  Richard M. Stallman  <rms@gnu.org>
+       * xselect.c (cnt): Rename to x_reply_selection_request_cnt for clarity.
+       (x_reply_selection_request): All uses changed.
 
-       * callproc.c (init_callproc): Set Vdata_directory based on the source
-       location whenever Emacs was run uninstalled.
+2007-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-12-06  Paul Eggert  <eggert@twinsun.com>
+       * lread.c (load_warn_old_style_backquotes): Change message to look
+       better when it appears in the middle of byte-compiler messages.
 
-       * config.in (HAVE_WORKING_VFORK): New #undefs.
-       * process.c (create_process):
-       Use HAVE_WORKING_VFORK, not HAVE_VFORK.
-       * m/cnvrgnt.h (HAVE_VFORK): Remove #define.
-       * m/ibm370aix.h (HAVE_VFORK): Remove #undef.
-       * m/ibmps2-aix.h (HAVE_VFORK): Remove #define.
-       * m/intel386.h (HAVE_VFORK): Likewise.
-       * m/mips-siemens.h (HAVE_VFORK): Likewise.
-       * m/mips.h (HAVE_VFORK): Likewise.
-       * s/freebsd.h (vfork): Remove #define.
-       * s/lynxos.h (HAVE_VFORK): Remove #undef.
-       * s/usg5-4-2.h: Fix comment about vfork.
+2007-09-10  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2001-12-06  Richard M. Stallman  <rms@gnu.org>
+       * s/darwin.h (MULTI_KBOARD): Only define for Carbon.
 
-       * s/hpux10.h (random): Add undef.
-       (HAVE_RANDOM): Define it just once.
+       * xterm.c (x_create_terminal): Add comment.
 
-2001-12-06  Stefan Monnier  <monnier@cs.yale.edu>
+       * term.c (clear_tty_hooks, set_tty_hooks): Add comments.
 
-       * eval.c: Undo last change: the standard syntax is not wanted.
+2007-09-10  Richard Stallman  <rms@gnu.org>
 
-2001-12-06  Eli Zaretskii  <eliz@is.elta.co.il>
+       * xterm.c (x_term_init): Give error if can't open DISPLAY_NAME.
 
-       * xterm.c (x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
-       scroll bars of the frame before deleting the frame itself.  If the
-       frame has a widget, delete the frame with XtDestroyWidget, and do
-       not call XDestroyWindow before that.
+2007-09-10  Micha\e,Ak\e(Bl Cadilhac  <michael@cadilhac.name>
 
-2001-12-06  Kim F. Storm  <storm@cua.dk>
+       * lisp.h (struct Lisp_Subr): Rename `prompt' field to `intspec'.
+       (DEFUN): Document `intspec', use it instead of `prompt'.
 
-       * xfns.c (x_report_frame_params): Return actual fringe widths.
+       * eval.c (Fcommandp): Change `->prompt' to `->intspec'.
 
-       * w32fns.c (x_report_frame_params): Return actual fringe widths.
+       * data.c (Finteractive_form): If the interactive specification starts
+       with a `(', use it as a Lisp form.
 
-2001-12-05  Andrew Innes  <andrewi@gnu.org>
+       * fileio.c (Fset_file_modes): Add an interactive spec that reads a file
+       name and file modes.
 
-       * alloc.c (Fgarbage_collect): Shrink buffer gaps that are
-       excessively large.
+       * callint.c (Fcall_interactively): Comment fixes.
 
-       * insdel.c (make_gap_larger): New function.
-       (make_gap_smaller): New function.
-       (make_gap) [USE_MMAP_FOR_BUFFERS || REL_ALLOC]:
-       Call make_gap_smaller if arg is negative.
+2007-09-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-12-04  Stefan Monnier  <monnier@cs.yale.edu>
+       * callint.c (Fcall_interactively): Use Finteractive_form also for subrs
+       and compiled functions.
 
-       * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal prototype.
-       Pass a dummy argument when calling interrupt_signal.
-       (parse_menu_item): Mark disabled items before checking for empty def.
-       (read_char_minibuf_menu_prompt): Make safety more visible.
-       (read_key_sequence): Add a `first_unbound' variable.
-       Use it to detect C-c ESC ESC ESC ESC ... cases and drop the
-       unbound prefix as soon as we can detect it.
+2007-09-08  Fredrik Axelsson  <f.axelsson@gmail.com>
 
-       * doc.c (Fsnarf_documentation): Add prototype.
-       (get_doc_string): Handle negative arguments.
-       (Fdocumentation): Use AREF and ASIZE.
-       Move the calls to get_doc_string to a single place.
-       Don't confuse an interactive-spec for a docstring reference.
-       (Fdocumentation_property): Take advantage of the fact that
-       get_doc_string now ignores the sign of the docstring position.
+       * window.c (prefer_window_split_horizontally): New variable.
+       (display_buffer): Consider splitting window horizontally depending
+       on prefer_window_split_horizontally.
 
-       * eval.c: Use standard syntax for usage in docstrings.
+2007-09-08  Eli Zaretskii  <eliz@gnu.org>
 
-2001-12-03  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * sysdep.c [WINDOWSNT]: Don't include sysselect.h.
 
-       * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief' an option.
+2007-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-12-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * s/cygwin.h (GC_MARK_STACK): Enable conservative stack marking.
 
-       * xterm.c (x_draw_image_relief): Use predefined macro instead of
-       constant when the value of `tool_bar_button_relief' is negative.
+       * frame.c (x_set_frame_parameters): Check number is positive before
+       using XFASTINT.
 
-2001-12-02  Richard M. Stallman  <rms@gnu.org>
+       * window.c (freeze_window_start): Don't presume selected_window holds
+       a window object.
+       (Fdisplay_buffer): Remove `register' since `buffer' needs to be gcpro'd.
 
-       * xmenu.c (menu_highlight_callback): Use `help' field as Lisp_Object.
-       (single_submenu, xmenu_show): Set `help' field as Lisp_Object.
+2007-09-07  Angelo Graziosi  <Angelo.Graziosi@roma1.infn.it>  (tiny change)
 
-       * fileio.c (read_non_regular): Delete Fsignal call.
+       * term.c (dissociate_if_controlling_tty): Call setsid on CYGWIN.
 
-2001-12-01  Stefan Monnier  <monnier@cs.yale.edu>
+2007-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * lisp.h (run_hook_list_with_args): Undo last change.
+       * window.c (Vsplit_window_preferred_function): New var.
+       (Fdisplay_buffer): Use it.
+       (syms_of_window): Export, and initialize it.
 
-2001-12-01  Gerd Moellmann  <gerd@gnu.org>
+2007-09-06  Pixel  <pixel@mandriva.com>  (tiny change)
 
-       * xterm.c (x_draw_fringe_bitmap): Always undo clipping.
+       * image.c (gif_load): Fix bug: Handle nonexistent colormap.
 
-2001-12-01  Jason Rumney  <jasonr@gnu.org>
+2007-09-06  Glenn Morris  <rgm@gnu.org>
 
-       * window.c (Qleft_fringe, Qright_fringe): Remove.  Now in frame.c.
+       * gtkutil.c (menu_grab_callback) <cnt>:
+       * xselect.c (x_reply_selection_request) <cnt>: Move static
+       variable to file scope.
 
-       * w32term.h (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT)
-       [!WM_MOUSELEAVE]: Define.
+2007-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * w32menu.c (current_popup_menu, get_menu_item_info):
-       (set_menu_item_info): New vars.
-       (set_frame_menubar): Doc fix clarifying GC interaction with menus.
-       (w32_menu_show): Set current_popup_menu.
-       (add_menu_item): Allocate new strings for owner-drawn menu items
-       and help strings.
-       Use owner-draw for disabled menu items again.
-       (w32_menu_display_help): Ignore owner-drawn items and popup menus.
-       (w32_free_submenu_strings, w32_free_menu_strings): New functions.
+       * xdisp.c (redisplay_internal): Make sure Elisp code always sees
+       consistent values of selected_frame and selected_window.
 
-       * w32fns.c (trackmouse_window, track_mouse_event_fn): New vars.
-       (w32_wnd_proc) <WM_MOUSEMOVE>: Notice when mouse enters frame.
-       <WM_EXITMENULOOP>: Free menu strings.
-       <WM_MOUSELEAVE>: Stop tracking mouse.
-       (x_create_tip_frame): Specify no minibuffer, modeline or fringes.
+2007-09-04  Jason Rumney  <jasonr@gnu.org>
 
-       * w32term.c (w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
-       and mouse face.
+       * w32console.c (initialize_w32_display): Zero unused hooks.
 
-2001-12-01  Kim F. Storm  <storm@cua.dk>
+2007-09-04  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       The following changes add left-fringe and right-fringe
-       frame parameters to adjust fringe widths, or remove one or
-       both fringes.
+       * term.c (Vsuspend_tty_functions, Vresume_tty_functions)
+       (syms_of_term, Fsuspend_tty, Fresume_tty): Undo previous change.
 
-       * frame.h (struct frame): Remove trunc_area_pixel_width and
-       trunc_area_cols fields.
-       (Qleft_fringe, Qright_fringe): Declare.
-       (FRAME_RIGHT_FRINGE_WIDTH): New macro.
+2007-09-04  Jason Rumney  <jasonr@gnu.org>
 
-       * frame.c (Qleft_fringe, Qright_fringe): New vars.
-       (syms_of_frame): Initialize them.
+       * term.c (init_tty) [WINDOWSNT]: Add hooks that are not accessible
+       in w32console.c.  Set up input.  Remove XXX comments that have been
+       confirmed as correct.
 
-       * window.c (coordinates_in_window): Handle separate left and right
-       fringe widths.
+       * s/ms-w32.h (MULTI_KBOARD): Define.
 
-       * xterm.h (struct x_output): Add left_fringe_width, right_fringe_width,
-       and fringe_cols fields.
-       (FRAME_FRINGE_BITMAP_WIDTH, FRAME_FRINGE_BITMAP_HEIGHT): Remove macros.
-       (FRAME_X_FRINGE_COLS): Use fringe_cols field.
-       (FRAME_X_FRINGE_WIDTH): Use fringes_extra field.
-       (FRAME_X_LEFT_FRINGE_WIDTH): Use left_fringe_width field.
-       (FRAME_X_RIGHT_FRINGE_WIDTH): Use right_fringe_width field.
-       (x_compute_fringe_widths): Add prototype.
+       * w32console.c (one_and_only_w32cons): Remove.
+       (initialize_w32_display): Take terminal argument.
 
-       * xterm.c (zv_height, zv_bits, zv_period): Changed zv bitmap to
-       fill fringe evenly with small dashes.
-       (x_draw_fringe_bitmap): Clear background if necessary.  Align and
-       clip the new ZV bitmap to avoid jitter between rows.
-       (x_draw_row_fringe_bitmaps): Rely on x_draw_fringe_bitmap to clear
-       background.  Don't draw fringe bitmaps if fringe width is zero.
-       (x_compute_fringe_widths): New function.
-       (x_new_font, x_set_window_size_1): Use it.
+       * term.c (init_tty) [WINDOWSNT]: Pass terminal to
+       initialize_w32_display.
+       (init_tty) [MULTI_KBOARD]: Include this code on WINDOWSNT too.
 
-       * xfns.c (x_frame_parms): Add `left-fringe' and `right-fringe' parms.
-       (x_set_frame_parameters): Process `font' parameter before other
-       parameters as fringe widths depend on it.
-       (x_set_fringe_width): New function.
-       (x_figure_window_size): Use x_compute_fringe_widths.
-       (Fx_create_frame): Process `left-fringe' and `right-fringe' frame
-       parameters.
+       * termhooks.h (enum event_kind) <HORIZ_WHEEL_EVENT>: New event.
 
-       * widget.c (set_frame_size): Use x_compute_fringe_widths.
-       (EmacsFrameSetCharSize): Ditto.
+       * keyboard.c (discard_mouse_events): Discard it.
+       (make_lispy_event): Translate it to a lisp event.
+       (lispy_wheel_names): Add wheel-left and right events.
+       (syms_of_keyboard): Enlarge wheel_syms.
 
-       * w32term.h: Merged changes from xterm.h.
-       * w32term.c: Merged changes from xterm.c.
-       * w32fns.c: Merged changes from xfns.c.
+       * w32fns.c (w32_wnd_proc) <WM_DROPFILES>: Merge with WM_MOUSEWHEEL.
+       <WM_MOUSEHWHEEL>: Pass new system message to lisp.
 
-2001-11-29  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * w32term.h (WM_MOUSEHWHEEL): Define if system headers don't.
 
-       * COPYING: Removed.
+       * w32term.c (construct_mouse_wheel): Make HORIZ_WHEEL_EVENT
+       from WM_MOUSEHWHEEL.
+       (w32_read_socket) <WM_MOUSEHWHEEL>: Treat as WM_MOUSEWHEEL.
 
-2001-11-29  Dave Love  <fx@gnu.org>
+       * w32fns.c (x_create_tip_frame) [MULTI_KBOARD]: Get keyboard from
+       terminal.
 
-       * coding.c (syms_of_coding) <Qchar_coding_system>: Give it an
-       extra extra slot.
-       (detect_coding_mask): Fix call of detect_coding_iso2022.
+       * w32term.c (w32_create_terminal) [MULTI_KBOARD]: Create a new
+       keyboard for the terminal.
 
-2001-11-29  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-09-04  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * fileio.c (file-name-coding-system)
-       (default-file-name-coding-system): Doc fix (links to referenced
-       variables added).
+       * term.c (Vsuspend_tty_hook): Rename from Vsuspend_tty_functions.
+       (Vresume_tty_hook): Rename from Vresume_tty_functions.
+       (syms_of_term): Rename suspend-tty-functions to suspend-tty-hook
+       and resume-tty-function to resume-tty-hook.
+       (Fsuspend_tty, Fresume_tty): Use new names.
 
-2001-11-28  Stefan Monnier  <monnier@cs.yale.edu>
+2007-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * lisp.h (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
-       Add dummy uses of gcproN variables.
+       * gtkutil.c (update_frame_tool_bar): Handle stock name as a named icon
+       if it starts with "n:".
 
-       * category.c (describe_category, describe_category_1)
-       (Fdescribe_categories): Remove.  (Moved to lisp/help-fns.el.)
-       (syms_of_category): Don't defsubr Sdescribe_categories.
+2007-08-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-2001-11-28  Richard M. Stallman  <rms@gnu.org>
+       * gtkutil.c (update_frame_tool_bar): Initialize wbutton to NULL.
 
-       * fileio.c (Ffind_file_name_handler): Avoid initializer for `result'.
+2007-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * Makefile.in (lispdir): New variable, referring to build dir.
-       (TAGS-LISP): Find Makefile in $(lispdir), not $(lispsource).
+       * frame.h:
+       * frame.c (Qterm_environment_variable): Remove.
+       (syms_of_frame): Don't init and staticpro it.
 
-2001-11-28  Andrew Innes  <andrewi@gnu.org>
+       * callproc.c (getenv_internal): Remove special case for $TERM.
 
-       * w32menu.c (w32_menu_display_help): Actually add the new argument
-       OWNER.
+       * callproc.c (Vinitial_environment): New variable.
+       (set_initial_environment): Initialize it.
+       (syms_of_callproc): Declare it.
+       (child_setup): Don't mess with TERM via Qterm_environment_variable; the
+       TERM under which a process runs is never related to the TERM in which
+       Emacs is running.
 
-2001-11-28  Jason Rumney  <jasonr@gnu.org>
+2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
 
-       * w32menu.c (add_menu_item): Do not use owner-draw for disabled
-       menu items.  From David Ponce <dponce@wanadoo.fr>.
-       (w32_dialog_show) [HAVE_DIALOGS]: Compile whole function
-       conditionally.
-       (w32_menu_display_help): New argument OWNER.  Rewritten to store a
-       help event in the owner frame's keyboard buffer.
+       * config.in (HAVE_WINDOW_SYSTEM): Don't undef MULTI_KBOARD here...
+       * s/darwin.h: ... do it here.
 
-       * w32fns.c (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
-       (Fx_show_tip): Don't subtract last width from row width.
+2007-08-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * w32term.c (w32_read_socket) <WM_MENUSELECT>: Remove.
-       (w32_read_socket): Use EQ to compare frames.
+       * lisp.h (set_initial_environment): Rename from set_global_environment.
 
-2001-11-28  Gerd Moellmann  <gerd@gnu.org>
+       * Makefile.in (${etc}DOC): Re-add a ${EXEEXT} which seems to have been
+       removed by mistake on the multi-tty branch.
 
-       * xterm.c (x_draw_glyphs): Don't call notice_overwritten_cursor if
-       OVERLAPS_P.
+       * frame.c (make_terminal_frame): Yet Another Int/Lisp_Object Mixup.
+       (Fmodify_frame_parameters): Return a value.
 
-2001-11-28  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * image.c (png_load): Comment-out var only used in commented-out code.
 
-       * xdisp.c (message_dolog): Remove unused variables `gcpro2',
-       `gcpro3' and `gcpro4'.
+       * term.c (mark_ttys): Don't bother checking top_frame (incorrectly)
+       before passing it to mark_object.
 
-       * coding.c (decode_coding_string): Remove unused variable `gcpro1'.
+       * xfaces.c (internal_resolve_face_name): Return a value.
+       (internal_resolve_face_name, resolve_face_name_error): Comment out.
 
-2001-11-28  Stefan Monnier  <monnier@cs.yale.edu>
+       * xfns.c (check_x_display_info): Yet Another Int/Lisp_Object Mixup.
+       (x_icon): Comment-out var only used in commented-out code.
 
-       * ccl.c: Use AREF and ASIZE.
+2007-08-29  Romain Francoise  <romain@orebokech.com>
 
-2001-11-27  Stefan Monnier  <monnier@cs.yale.edu>
+       * keyboard.c (Fset_input_mode): Don't call `Fset_quit_char' if
+       QUIT hasn't been provided.
 
-       * lisp.h (run_hook_list_with_args): Remove.
-       (LIST_END_P): Fix call to wrong_type_argument.
-       (make_fixnum_or_float): Use EMACS_INT rather than int.
+2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2001-11-26  Stefan Monnier  <monnier@cs.yale.edu>
+       * callproc.c (child_setup, getenv_internal): Use the
+       display-environment-variable and term-environment-variable frame
+       params.
+       (set_initial_environment): Initialise Vprocess_environment.
 
-       * syntax.c (syms_of_syntax): Remove defsubr of Sdescribe_syntax.
-       (describe_syntax, describe_syntax_1, Fdescribe_syntax): Remove.
+       * config.in: Disable multi-keyboard support on a mac.
 
-       * eval.c: Use AREF and ASIZE.
-       (Ffetch_bytecode): Add the file name to the error message.
+       * frame.c (Qterm_environment_variable)
+       (Qdisplay_environment_variable): New variables.
+       (syms_of_frame): Intern and staticpro them.
+       (Fmake_terminal_frame): Disable output method test.
 
-       * fileio.c (Ffind_file_name_handler): Give precedence to handlers
-       which match the end of the file-name.
-       (Fsubstitute_in_file_name): Don't signal an error if $ENVVAR
-       is not a valid env var, but leave it as is instead.
+       * frame.h: Declare them here.
 
-       * keymap.c (access_keymap): Handle t bindings like nil bindings.
-       Make nil bindings in char-tables transparent.
-       (store_in_keymap): Turn a nil binding into a t binding for char-tables.
+       * macfns.c (x_set_mouse_color): Get rif from the frame.
+       (x_set_tool_bar_lines): Don't use updating_frame.
+       (mac_window): Add 2 new parameters for consistency with other systems.
+       (Fx_create_frame): Fix doc string.  Rename the parameter.  Set the
+       frame parameters following what is done in X11 and w32.  Don't use
+       FRAME_MAC_DISPLAY_INFO.
+       (Fx_open_connection, start_hourglass): Remove window-system check.
+       (x_create_tip_frame): Get the keyboard from the terminal.
 
-2001-11-26  Richard M. Stallman  <rms@gnu.org>
+       * macmenu.c: Reorder includes.
+       (Fx_popup_menu): Use terminal specific mouse_position_hook.
 
-       * textprop.c (set_text_properties_1): Allow START, END in either order.
-       Do nothing if range is empty.
+       * macterm.c (XTset_terminal_modes, XTreset_terminal_modes): Add a
+       terminal parameter.
+       (x_clear_frame): Add a frame parameter.
+       (note_mouse_movement): Get rif from the frame.
+       (mac_term_init): Initialize the terminal.
+       (mac_initialize): Make static and move terminal initialization ...
+       (mac_create_terminal): ... to this new function.
 
-       * Makefile.in (mallocobj): Simplify logic using auxiliary vars.
+       * macterm.h (struct mac_display_info): Add terminal.
+       (mac_initialize): Delete declaration.
 
-       * Makefile.in (mostlyclean): Delete bootstrap-emacs here.
-       (clean): Not here.
+       * puresize.h (BASE_PURESIZE): Increase base value to 1164000.
 
-2001-11-25  Stefan Monnier  <monnier@cs.yale.edu>
+       * sysdep.c: Comment out text after #endif.
 
-       * textprop.c (set_text_properties_1): Clearly mark that the
-       interval should not be empty.
+       * term.c (init_tty): Only use terminal->kboard when MULTI_KBOARD
+       is defined.  Better initialize ttys in windows.  Use terminal
+       specific mouse_position_hook.
 
-       * intervals.c (graft_intervals_into_buffer):
-       Don't call set_text_properties_1 on an empty interval.
+       * termhooks.h (union display_info): Add mac_display_info.
 
-2001-11-25  Richard M. Stallman  <rms@gnu.org>
+       * w32fns.c (Fx_create_frame): Use kboard from the terminal.
+       Set the default minibuffer frame, window_system and the rest of the
+       frame parameters following what is done in X11.
 
-       * unexelf.c (unexec): Index by n, not nn, when checking for ".sbss".
+       * w32term.c (w32_initialize): Make static.
 
-       * callproc.c (Fcall_process): When we make a bigger buffer for bufptr,
-       don't lose the data in it.
+       * xselect.c (x_handle_selection_clear): Only access
+       terminal->kboard when MULTI_KBOARD is defined.
 
-2001-11-25  Juanma Barranquero  <lektu@terra.es>
+       * s/darwin.h (SYSTEM_PURESIZE_EXTRA): Define here.
+       (SYSTEM_PURESIZE_EXTRA): Only define on Carbon.
 
-       * abbrev.c (Fexpand_abbrev): Use Frun_hooks instead of Vrun_hooks.
+2007-08-29  Jason Rumney  <jasonr@gnu.org>
 
-       * buffer.c (Fkill_buffer): Likewise.
+       * frame.c (Fdelete_frame): Only get kboard when MULTI_KBOARD defined.
+       (make_terminal_frame) [WINDOWSNT]: Initialize terminal.
 
-       * print.c (temp_output_buffer_setup): Likewise.
+       * fringe.c (w32_init_fringe w32_reset_fringes) [HAVE_NTGUI]:
+       (mac_init_fringe) [MAC_OS]: Get rif from selected_frame.
 
-2001-11-25  Stefan Monnier  <monnier@cs.yale.edu>
+       * keyboard.c (restore_kboard_configuration): Only define when
+       MULTI_KBOARD defined.
 
-       * xfaces.c (merge_face_heights): Coerce back to int explicitly.
+       * makefile.w32-in: Update dependancies from Makefile.in.
+       (OBJ1): Add terminal.$(O)
 
-2001-11-25  Eli Zaretskii  <eliz@is.elta.co.il>
+       * term.c (dissociate_if_controlling_tty) [WINDOWSNT]:
+       Don't define function body.
+       (init_tty) [WINDOWSNT]: Use selected_frame for initializing.
 
-       * window.c (Fset_window_vscroll): Doc fix.  From Kalle Olavi
-       Niemitalo <kon@iki.fi>.
+       * termhooks.h (display_info) [WINDOWSNT]: Add w32.
 
-2001-11-25  Jason Rumney  <jasonr@gnu.org>
+       * w32.c (request_sigio, unrequest_sigio): Remove.
 
-       * w32term.h (FRAME_X_FRINGE_COLS): No fringe on tip frames.
+       * w32console.c (w32con_move_cursor, w32con_clear_to_end)
+       (w32con_clear_frame, w32con_clear_end_of_line)
+       (w32con_ins_del_lines, w32con_insert_glyphs, w32con_write_glyphs)
+       (w32con_delete_glyphs, w32con_set_terminal_window)
+       (scroll_line, w32_sys_ring_bell): Add frame arg.
+       (w32con_set_terminal_modes, w32con_reset_terminal_modes):
+       Add terminal arg.
+       (PICK_FRAME): Remove.
+       (w32con_write_glyphs): Use frame specific terminal coding.
+       (one_and_only_w32cons): New global variable.
+       (initialize_w32_display): Use it for storing hooks.
+       (create_w32cons_output): New function.
 
-       * w32fns.c (x_create_tip_frame): Set frame's fringes_extra to 0.
-       (Fx_show_tip): Block input during frame creation.
-       (Fx_show_tip, Fx_hide_tip): Enable.
+       * w32inevt.c, w32inevt.h (w32_console_read_socket): Make first
+       arg a frame.
 
-2001-11-24  Richard M. Stallman  <rms@gnu.org>
+       * w32fns.c (x_create_tip_frame): Set terminal and ref count.
+       Set window_system.
+       (x_set_tool_bar_lines): Don't use updating_frame.
+       (Fx_create_frame): Set terminal and ref count.
+       (Fx_open_connection): Remove window-system check.
 
-       * lread.c (Fload): Detect recursive load error for more than 3
-       nestings of the same file.
-       (Vrecursive_load_depth_limit): Variable deleted.
-       (syms_of_lread) <recursive-load-depth-limit>: Variable deleted.
+       * w32menu.c (Fx_popup_menu): Use terminal specific mouse_position_hook.
 
-2001-11-24  Jason Rumney  <jasonr@gnu.org>
+       * w32term.c (w32_term_init): Call add_keyboard_wait_descriptor.
+       (w32_set_terminal_modes, w32_reset_terminal_modes): Add terminal arg.
+       (x_clear_frame, x_delete_glyphs, w32_ring_bell, x_ins_del_lines):
+       Add frame arg.
+       (x_delete_terminal, w32_create_terminal): New functions.
+       (w32_term_init): Create a terminal.
+       (w32_initialize): Move terminal specific initialization to
+       w32_create_terminal.
 
-       * xfns.c (compute_tip_xy): Initialize root_x and root_y from
-       mouse position if either left or top is not specified.
+       * w32term.h (x_output): Remove foreground_pixel and background_pixel.
+       (w32_clear_rect, w32_clear_area): Use background from frame.
+       (w32_display_info): Add terminal.
+       (w32_sys_ring_bell, x_delete_display): Declare here.
 
-       * w32fns.c (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
-       <WM_WINDOWPOSCHANGING>: Let tip frames resize without restriction.
-       (my_create_tip_window, Fx_show_tip): Adjust size for external border.
-       (my_create_tip_window): Assign tip_window.
-       (x_create_tip_frame): Use same defaults as X.
-       (compute_tip_xy): Remove unused variable.  Use full screen width.
-       (Fx_show_tip): Do not double height.  Call ShowWindow directly.
+       * xdisp.c (display_menu_bar) [HAVE_NTGUI]: Check frame type.
 
-       * w32term.c (x_after_update_window_line): Doc fix.
-       (w32_read_socket): Doc fix.  Avoid SET_FRAME_GARBAGED for tip
-       frames.
-       <WM_SHOWWINDOW>: Redo mouse highlight when hiding tip frame.
+       * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Bump to 50k.
 
-       * xdisp.c (prepare_menu_bars) [HAVE_WINDOW_SYSTEM]: Use tip_frame
-       for all Windowed systems.
+2007-08-29  Kalle Olavi Niemitalo  <kon@iki.fi>  (tiny change)
 
-2001-11-23  Eli Zaretskii  <eliz@is.elta.co.il>
+       * keyboard.c (interrupt_signal, handle_interrupt, Fset_quit_char):
+       Fix get_named_tty calls for the controlling tty.
 
-       * msdos.c (IT_clear_screen): If the frame's faces are not yet
-       realized, use the initial screen colors to clear the screen.
+2007-08-29  ARISAWA Akihiro  <ari@mbf.ocn.ne.jp>  (tiny change)
 
-2001-11-23  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * term.c (dissociate_if_controlling_tty)[USG]: Fix parse error.
 
-       * textprop.c (Fset_text_properties): Remove unused variables
-       `unchanged', `prev_changed', `s' and `len'.
+2007-08-29  Yoshiaki Kasahara  <kasahara@nc.kyushu-u.ac.jp>  (tiny change)
 
-       * search.c (Freplace_match): Remove unused variable `inslen'.
-
-       * keymap.c (access_keymap): Remove unused variables `c1' and `c2'.
-
-2001-11-22  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (x_window_to_frame): Remove irrelevant TODO comment.
-       (w32_wnd_proc) <WM_MENUSELECT>: Show help echo directly.
-       (my_create_tip_window): New function.
-       (x_create_tip_frame, compute_tip_xy): Adapt for Windows.
-       (Fx_show_tip, Fx_hide_tip) [TEST_TOOLTIPS]: Adapt for Windows.
-
-2001-11-20  Jason Rumney  <jasonr@gnu.org>
-
-       * coding.h (Vw32_system_coding_system) [WINDOWSNT]: Remove.
-       (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: Use Vlocale_coding_system.
-
-       * w32fns.c (Vw32_system_coding_system): Remove.
-       (w32_to_x_font, x_to_w32_font): Use Vlocale_coding_system.
-
-2001-11-19  Stefan Monnier  <monnier@cs.yale.edu>
-
-       * fileio.c (Fwrite_region): Move choose_write_coding_system to
-       after build_annotations.
-
-       * syntax.c (describe_syntax): Add dummy arg.
-       (describe_syntax_1): Update call to describe_vector.
-
-       * category.c (describe_category): Add dummy arg.
-       (describe_category_1): Update call to describe_vector.
-
-       * keymap.c (Fdescribe_vector): Add `describer' parameter.
-       (describe_command, describe_translation): Add dummy second param.
-       (describe_map): Call elt_describer with two arguments.
-       (describe_vector_princ): Add `fun' parameter.
-       Call it instead of the hardcoded `princ'.
-       (describe_vector): Add arg `args'.
-       Pass it as a new second argument to elt_describer.
+       * term.c (tty_insert_glyphs): Add missing first parameter.
 
-       * keymap.h (describe_vector): Update prototype.
+2007-08-29  Karoly Lorentey  <karoly@lorentey.hu>
 
-       * frame.c: Don't include keymap.h any more.
-       (keys_of_frame): Remove.
+       * buffer.c (Fbuffer_list, Fbury_buffer):
+       Take frame->buried_buffer_list into account.
 
-       * lisp.h (keys_of_frame): Remove declaration.
+       * cm.c (current_tty): New variable, for cmputc().
+       (cmputc): Use it.
+       (cmcheckmagic): Add tty parameter, look up terminal streams there.
+       (calccost): Add tty parameter.  Use emacs_tputs() instead of tputs().
+       (cmgoto): Add tty parameter.  Pass it on to calccost().
+       Use emacs_tputs() instead of tputs().
 
-       * emacs.c (main): Don't call `keys_of_frame' any more.
+       * cm.h (emacs_tputs): New macro to set current_tty, and then call
+       tputs().
+       (current_tty): New variable, for cmputc().
+       (cmcheckmagic, cmputc, cmgoto): Add prototypes.
 
-2001-11-14  Andreas Schwab  <schwab@suse.de>
+       * eval.c (unwind_to_catch): Don't call x_fully_uncatch_errors.
+       (internal_condition_case, internal_condition_case_1)
+       (internal_condition_case_2): Don't abort when x_catching_errors.
 
-       * unexelf.c [!defined MAP_ANON]: Define MAP_ANON to MAP_ANONYMOUS
-       if defined, 0 otherwise.
-       (MAP_FAILED): Define if not defined and use it to test mmap failure.
-       (unexec) [!MAP_ANON]: Use /dev/zero as file to map.
+       * fns.c (Fyes_or_no_p): Don't try to open an X dialog on tty terminals.
+       (Fy_or_n_p): Likewise.  Use temporarily_switch_to_single_kboard to
+       prevent crashes caused by bogus longjmps in read_char.
 
-2001-11-19  Richard M. Stallman  <rms@gnu.org>
+       * keymap.h (Fset_keymap_parent): Add EXFUN.
 
-       * indent.c (current_column_1): Fix handling of scan_bytes for mb chars.
+       * macterm.h (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL)
+       * w32term.h (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL):
+       Remove redundant definition.
 
-2001-11-18  Jason Rumney  <jasonr@gnu.org>
+       * macfns.c (x_set_mouse_color, x_make_gc):
+       Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL.
 
-       * w32term.c (note_mouse_highlight): Fix type of variable `ignore'.
-       (x_draw_bar_cursor): If the background color of the glyph under
-       the cursor equals the frame's cursor color, use the glyph's
-       foreground color for drawing the bar cursor.
-       (x_after_update_window_line): Clear internal border in different
-       circumstances.
-       (w32_set_vertical_scroll_bar): Check for width and height > 0.
-       (w32_draw_relief_rect): Correct relief by 1 pixel.
-       (x_set_glyph_string_background_width):
-       Set extends_to_end_of_line_p if the row's fill_line_p is set and
-       drawing the last glyph with DRAW_IMAGE_{RAISED,SUNKEN}.
-       (x_display_and_set_cursor): If cursor_in_echo_area, use NO_CURSOR
-       if cursor_in_non_selected_windows is false.
-       (show_mouse_face): Clean up.  Recognize overwritten cursor differently.
-       (x_draw_glyphs): Remove parameters REAL_START and REAL_END.
-       Notice if cursor gets overwritten.
-       (notice_overwritten_cursor): Renamed from
-       note_overwritten_text_cursor.  Rewritten to take glyph widths
-       into account, and to take X positions as parameters.
-       (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p
-       around call to x_draw_glyphs.
-       (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and
-       `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background
-       color to use for image glyph reliefs.
-       (x_draw_image_relief): Accept zero tool_bar_button_relief.
-       (glyph_rect): Remove unused variable `area'.
+       * w32term.c (x_free_frame_resources):
+       Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL.
+       (w32_initialize): Use the accessor macros for terminal characteristics.
 
-       * w32fns.c (x_set_frame_parameters): Avoid infinite recursion for
-       some items.
-       (x_set_internal_border_width): Set frame garbaged when window
-       doesn't exist yet.
-       (Fx_create_frame): Accept zero tool_bar_button_relief.
-       (x_clear_image_1, four_corners_best, image_background)
-       (image_background_transparent): New functions.
-       (xpm_format, png_format, jpeg_format, tiff_format, gif_format)
-       (gs_format): Add `:background' entry.
-       (lookup_image): Set IMG's background color if specified.
-       (pbm_load, xbm_load_image, png_load): Set IMG's background field
-       when appropriate.
-       (x_clear_image_1): Reset `background_valid' and
-       `background_transparent_valid' fields.
-       (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of
-       calculating it here.  Set IMG's background_transparent field.
-       (enum xpm_keyword_index): Add XPM_BACKGROUND.
-       (enum png_keyword_index): Add PNG_BACKGROUND.
-       (enum jpeg_keyword_index): Add JPEG_BACKGROUND.
-       (enum tiff_keyword_index): Add TIFF_BACKGROUND.
-       (enum gif_keyword_index): Add GIF_BACKGROUND.
-       (enum gs_keyword_index): Add GS_BACKGROUND.
-       (pbm_load, png_load, jpeg_load, tiff_load, gif_load):
-       Pre-calculate image background color where necessary.
-       (x_create_x_image_and_pixmap, xbm_load, gs_load):
-       Use display info's n_cbits entry for screen depth.
-       (Fx_show_tip): Remove unused variables `buffer', `top',
-       `left', `max_width' and `max_height'.
+       * macterm.c (mac_initialize): Use Fset_input_interrupt_mode.
+       Use the accessor macros for terminal characteristics.
+       * msdos.c (internal_terminal_init): Use the accessor macros for
+       terminal characteristics.
+       (ScreenVisualBell, internal_terminal_init):
+       Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL.
 
-       * w32menu.c (w32_menu_show, push_menu_pane): Doc fixes.
+       * termopts.h (no_redraw_on_reenter): Declare.
 
-2001-11-18  Gerd Moellmann  <gerd@gnu.org>
+       * alloc.c (emacs_blocked_malloc): Disable mallopt call.
+       (mark_terminals, mark_ttys): Declare.
+       (Fgarbage_collect): Call them.
+       (mark_object): Mark buried_buffer_list.
 
-       * puresize.h (BASE_PURESIZE): Increase to 750000.
+       * prefix-args.c: Include stdlib.h for exit.
 
-2001-11-18  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * syssignal.h: Add comment.
 
-       * frame.c (Fframe_live_p): Doc fix.
+       * indent.c: Include stdio.h.
 
-2001-11-18  Richard M. Stallman  <rms@gnu.org>
+       * window.h (Vinitial_window_system): Declare.
+       (Vwindow_system): Delete declaration.
 
-       * xdisp.c (message_dolog_marker1, message_dolog_marker2)
-       (message_dolog_marker3): New static variables hold three markers.
-       (syms_of_xdisp): Initialize and staticpro them.
-       (message_dolog): Use message_dolog_marker1..3 instead of
-       allocating markers each time.  Unchain them when done.
+       * fontset.c (Finternal_char_font): Use FRAME_RIF.
 
-2001-11-17  Richard M. Stallman  <rms@gnu.org>
+       * image.c (lookup_image): Don't initialize `c' until the xasserts
+       have been run.
 
-       * doc.c (Fsnarf_documentation): Doc fix.
+       * gtkutil.c (xg_create_frame_widgets): Use FRAME_BACKGROUND_PIXEL and
+       FRAME_FOREGROUND_PIXEL.
 
-2001-11-17  Andreas Schwab  <schwab@suse.de>
+       * print.c (print_preprocess): Don't lose print_depth levels while
+       iterating.
 
-       * xterm.c (note_mouse_highlight): Fix type of variable `ignore'.
+       * widget.c (update_from_various_frame_slots):
+       Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL.
 
-2001-11-17  Richard M. Stallman  <rms@gnu.org>
+       * window.c (set_window_buffer): Don't call clear_mouse_face on tty
+       frames.
+       (window_internal_height): Remove bogus make_number call.
+       (init_window_once): Call make_terminal_frame with two zero parameters.
 
-       * fileio.c (Fwrite_region): Avoid initializer for Lisp_Object.
+       * fileio.c (Fread_file_name): Update comment.
 
-2001-11-17  Jason Rumney  <jasonr@gnu.org>
+       * callint.c (Fcall_interactively):
+       Use temporarily_switch_to_single_kboard instead of single_kboard_state.
+       Make sure it is correctly unwound.
+
+       * xsmfns.c (x_session_close): New function.
+
+       * coding.h (terminal_coding, safe_terminal_coding, keyboard_coding):
+       Delete declarations.
+
+       * xterm.h: Remove declaration for x_fully_uncatch_errors.
+       (x_output): Remove background_pixel and foreground_pixel fields.
+       (x_display_info): Add new field TERMINAL.  Remove KBOARD field.
+       (x_delete_device):
+       (x_session_close): Declare.
+
+       * lread.c: Include setjmp.h.  Update declaration of `read_char'.
+       (read_filtered_event): Call `read_char' with a local
+       `wrong_kboard_jmpbuf'.
+
+       * minibuf.c (read_minibuf): Call temporarily_switch_to_single_kboard.
+       Don't call single_kboard_state.  Use FRAME_RIF.
+
+       * process.c (Fmake_network_process): Don't unrequest_sigio on modern
+       systems.
+
+       * lisp.h (set_process_environment): Rename to `set_global_environment'.
+       (Fframe_with_environment, Fset_input_meta_mode)
+       (Fset_quit_char): EXFUN.
+       (x_create_device, tty_output, terminal, tty_display_info): Declare.
+       (init_sys_modes, reset_sys_modes): Update prototypes.
+       (init_all_sys_modes, reset_all_sys_modes): New prototypes.
+
+       * keyboard.h (struct kboard): Add new fields Vlocal_function_key_map,
+       Vlocal_key_translation_map, and Vkeyboard_translate_table.
+       (Vfunction_key_map, Vkeyboard_translate_table, single_kboard_state):
+       Delete declarations.
+       (Vfunction_key_map, Vkey_translation_map, push_kboard, pop_kboard)
+       (temporarily_switch_to_single_kboard, tty_read_avail_input):
+       New declarations.
+
+       * emacs.c (main): Don't call init_sys_modes(), the new term_init()
+       already does that during init_display().  Call syms_of_keymap
+       before syms_of_keyboard.  Call `syms_of_terminal'.
+       Call set_initial_environment, not set_process_environment.
+       (shut_down_emacs): Call reset_all_sys_modes() instead of
+       reset_sys_modes().
+
+       * xfaces.c (x_free_gc): Protect xassert with GLYPH_DEBUG.
+       (internal_resolve_face_name, resolve_face_name_error): New functions.
+       (resolve_face_name): Protect against loops and errors thrown by Fget.
+       (realize_default_face): Don't use FRAME_FONT unless frame is an X frame.
+       (Ftty_supports_face_attributes_p): Update tty_capable_p call.
+
+       * scroll.c: Replace CURTTY() with local variables throughout the
+       file (where applicable).
+       (calculate_scrolling, calculate_direct_scrolling)
+       (scrolling_1, scroll_cost): Use the accessor macros for terminal
+       characteristics.
+
+       * keymap.c (Vfunction_key_map): Remove.
+       (Fdescribe_buffer_bindings): Update references to Vfunction_key_map.
+       (syms_of_keymap): Remove DEFVAR for Vfunction_key_map.
+       (Vkey_translation_map): Remove.
+       (syms_of_keymap): Remove DEFVAR for key-translation-map.
+       (Fdescribe_buffer_bindings):
+       (read_key_sequence, init_kboard, syms_of_keyboard, mark_kboards):
+       Update for terminal-local key-translation-map.
+
+       * Makefile.in (callproc.o): Update dependencies.
+       (lisp, shortlisp): Add termdev.elc.
+       (obj): Add terminal.o.
+       (terminal.o): Add dependencies.
+       [HAVE_CARBON]: Make terminal.o depend on macgui.h.
+       (data.o, fns.o): Add termhooks.h dependency.
+       (SOME_MACHINE_LISP): Add dnd.elc.
+       (minibuf.o): Fix typo.
+       Update dependencies.
+
+       * data.c (do_symval_forwarding, store_symval_forwarding)
+       (find_symbol_value): Use the selected frame's keyboard, not
+       current_kboard.
+
+       * .gdbinit (init_sys_modes): Use Vinitial_window_system instead of
+       Vwindow_system.
+
+       * xmenu.c (Fx_menu_bar_open) [USE_X_TOOLKIT, USE_GTK]: Rename from
+       Fmenu_bar_open.
+       (syms_of_xmenu): Update defsubr.
+       (mouse_position_for_popup, Fx_popup_menu)
+       (Fx_popup_dialog, x_activate_menubar, update_frame_menubar)
+       (set_frame_menubar, free_frame_menubar)
+       (create_and_show_popup_menu, xmenu_show, )
+       (create_and_show_dialog, xdialog_show, xmenu_show): Abort if not
+       an X frame.
+
+       * xselect.c (x_own_selection): Abort if not an X frame.
+       (some_frame_on_display): Check if it is an X frame.
+       (x_handle_selection_clear): Deal with MULTI_KBOARD.
+
+       * coding.c: Include frame.h and termhooks.h.
+       (terminal_coding, keyboard_coding): Delete.
+       (Fset_terminal_coding_system_internal):
+       (Fset_keyboard_coding_system_internal):
+       (Fkeyboard_coding_system):
+       (Fterminal_coding_system): Add a terminal parameter.
+       Get terminal_coding from the terminal.
+       (init_coding_once): Don't call setup_coding_system here.
+
+       * dispextern.h (set_scroll_region, turn_off_insert)
+       (turn_off_highlight, background_highlight, clear_end_of_line_raw)
+       (tty_clear_end_of_line, tty_setup_colors)
+       (delete_tty, updating_frame)
+       (produce_special_glyphs, produce_glyphs, write_glyphs)
+       (insert_glyphs): Remove.
+       (raw_cursor_to, clear_to_end, tty_turn_off_insert)
+       (tty_turn_off_highlight, get_tty_size): Add declaration.
+       (tabs_safe_p, init_baud_rate, get_tty_terminal): Update prototypes.
+
+       * frame.h (enum output_method): Add output_initial.
+       (struct x_output): Delete.
+       (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL):
+       Access foreground_pixel and background_pixel directly from the frame.
+       (tty_display): Delete.
+       (struct frame): Add buried_buffer_list, foreground_pixel,
+       background_pixel and terminal.  Delete kboard
+       (union output_data): Add tty.
+       (FRAME_KBOARD): Get the kboard from the terminal.
+       (FRAME_INITIAL_P): New macro.
+       (Qtty, Qtty_type, Qterminal, Qterminal_live_p, Qenvironment)
+       (Qterm_environment_variable, Qdisplay_environment_variable)
+       (make_terminal_frame, Qburied_buffer_list, Qwindow_system):
+       New declarations.
+
+       * termchar.h (tty_output, tty_display_info): New structures.
+       (tty_list): Declare.
+       (FRAME_TTY, CURTTY): New macros.
+       (must_write_spaces, min_padding_speed, fast_clear_end_of_line)
+       (line_ins_del_ok, char_ins_del_ok, scroll_region_ok)
+       (scroll_region_cost, memory_below_frame, fast_clear_end_of_line)
+       (dont_calculate_costs, no_redraw_on_reenter): Remove declarations.
+
+       * callproc.c: Include frame.h and termhooks.h, for terminal
+       parameters.
+       (add_env): New function.
+       (child_setup): Use it.
+       (child_setup, getenv_internal): Handle the new Vprocess_environment.
+       (getenv_internal): Fix get_terminal_param call.
+       (Fgetenv_internal, egetenv): Update doc.
+       (syms_of_callproc): Initialize Vprocess_environment to nil.
+       Register and initialize them.  Remove obsolete defvars.  Update doc
+       strings.
+       (child_setup): Handle Vlocal_environment_variables.
+       (getenv_internal): Add terminal parameter.
+       Handle Vlocal_environment_variables.
+       (Fgetenv_internal): Add terminal parameter.
+       (child_setup, getenv_internal, Fgetenv_internal): Store the local
+       environment in a frame (not terminal) parameter.  Update doc strings.
+       (set_initial_environment): Rename from set_global_environment.
+       Store Emacs environment in initial frame parameter.
+
+       * xdisp.c (redisplay_internal): Update references to
+       `previous_terminal_frame'.
+       (display_mode_line, Fformat_mode_line): Replace calls to
+       `push_frame_kboard' with `push_kboard'.
+       (get_glyph_string_clip_rects): Add extra parentheses and
+       braces to prevent compiler warnings.
+       (calc_pixel_width_or_height): Add xassert to check that the
+       frame is alive.  Don't call `lookup_image' on a termcap frame.
+       (message2_nolog, message3_nolog, redisplay_internal)
+       (set_vertical_scroll_bar, redisplay_window, check_x_display_info)
+       (x_set_scroll_bar_foreground, x_set_scroll_bar_background)
+       (Fx_create_frame, Fxw_display_color_p, Fx_display_grayscale_p)
+       (Fx_display_pixel_width, Fx_display_pixel_height)
+       (Fx_display_planes, Fx_display_color_cells)
+       (Fx_server_max_request_size, Fx_server_vendor, Fx_server_version)
+       (Fx_display_screens, Fx_display_mm_height, Fx_display_mm_width)
+       (Fx_display_backing_store, Fx_display_visual_class)
+       (Fx_display_save_under, Fx_close_connection, x_create_tip_frame):
+       Use FRAME_TERMINAL_P, FRAME_WINDOW_P, FRAME_TTY and FRAME_RIF.
+
+       * xfns.c (x_set_foreground_color x_set_background_color)
+       (x_set_mouse_color, x_set_cursor_color, x_make_gc):
+       Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL.
+       (Fx_create_frame, x_create_tip_frame, build_string, x_window)
+       (Fx_create_frame, x_create_tip_frame): Don't create frames on a
+       terminal that is being deleted.
+       (Fx_create_frame): Use `store_frame_param' to set `window-system'
+       frame parameter, and make sure it overrides any user-supplied setting.
+       (Fx_close_connection, Fx_synchronize): Unify argument names with
+       the rest of the DEFUNs.
+
+       * dispnew.c (Fsend_string_to_terminal): Update call to
+       `get_tty_terminal'.
+       (Fredraw_frame, Fsend_string_to_terminal)
+       (Fsend_string_to_terminal, init_display): Use FRAME_RIF,
+       FRAME_TERMCAP_P and FRAME_TTY.
+       (window_change_signal): Don't believe width/height values that are
+       impossibly small.
+       (Vinitial_window_system): Rename from Vwindow_system.
+       (termscript, Wcm, rif): Delete.
+
+       * termhooks.h (struct terminal): New struct containing the
+       previously global text display hooks and new members NAME,
+       DELETED and PARAM_ALIST.
+       (FRAME_TERMINAL, TERMINAL_TERMINAL_CODING)
+       (TERMINAL_KEYBOARD_CODING, TERMINAL_ACTIVE_P, FRAME_WINDOW_P)
+       (FRAME_RIF): New macros.
+       (get_terminal_param, get_device): New declarations.
+       (termscript): Delete declaration.
+
+       * xterm.c (x_initialize): Use Fset_input_interrupt_mode.
+       (XTflash, x_free_frame_resources, x_scroll_bar_create)
+       (x_scroll_bar_set_handle): Use FRAME_BACKGROUND_PIXEL and
+       FRAME_FOREGROUND_PIXEL.
+       (x_fully_uncatch_errors): Disable definition.
+       (x_scroll_bar_expose): Fix reference to foreground pixel.
+       (XTread_socket): Disable loop on all X displays.
+       (x_delete_terminal): Don't set terminal->deleted and let
+       delete_terminal delete the frames on the terminal.
+       (x_delete_display): Doc update to reflect changes in
+       delete_terminal.
+       (x_display_info) <terminal>: Move member earlier in the struct.
+       (deleting_tty): Remove old variable.
+       (Fsuspend_tty): Call clear_tty_hooks.
+       (Fresume_tty, init_tty): Call set_tty_hooks.
+       (Ftty_display_color_p, Ftty_display_color_cells): Don't throw
+       errors on X frames.
+       (x_catch_errors_unwind): Abort if x_error_message is NULL.
+       (handle_one_xevent): Initialize `f' to NULL.
+       (x_delete_terminal, x_create_terminal): New functions.
+       (XTset_terminal_modes, XTreset_terminal_modes)
+       (XTread_socket, x_connection_closed, x_term_init)
+       (x_term_init, x_delete_display): Add terminal parameter.
+       (x_term_init) [!HAVE_GTK_MULTIDISPLAY]: Refuse to create secondary
+       X connections.
+
+       * frame.c (Fframep): Deal with output_initial.
+       (Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list, Qtty)
+       (Qtty_type, Qwindow_system, Qenvironment)
+       (Qterm_environment_variable, Qdisplay_environment_variable): New vars.
+       (x_set_screen_gamma, store_frame_param): Fix compilation errors.
+       (make_terminal_frame): Don't create frames on a terminal that is
+       being deleted.
+       (make_terminal_frame): Use FRAME_BACKGROUND_PIXEL and
+       FRAME_FOREGROUND_PIXEL.
+       (store_frame_param): Check for found_for_frame before calling XFRAME.
+       (Fmake_terminal_frame): Handle NULL tty names correctly.
+       (syms_of_frame): Enhance doc string of `default-frame-alist'.
+       (Fdelete_frame): Remove unused variable `count'.
+       (Qenvironment): New variable.
+       (Fdelete_frame): Don't allow other frames to refer to a deleted
+       frame in their 'environment parameter.
+       (Fframe_with_environment): New function.
+       (syms_of_frame): Defsubr it.  Initialize and staticpro Qenvironment.
+       (get_future_frame_param): New function.
+       (Fmake_terminal_frame): Use it.
+       (x_set_frame_parameters, x_set_screen_gamma): Use FRAME_RIF.
+
+       * sysdep.c (init_sys_modes, reset_sys_modes): Update for renames.
+       * sysdep.c (reset_sys_modes): Update for renames.
+
+       * keyboard.c (tty_read_avail_input): New function.
+       (Fset_input_interrupt_mode, Fset_output_flow_control): New functions.
+       (syms_of_keyboard): Defsubr them.
+       (Fset_input_meta_mode, Fset_quit_char): New functions.
+       (Fset_input_mode): Split to above functions.
+
+       (read_char_minibuf_menu_prompt): Add wrong_kboard_jmpbuf
+       parameter.  Use it in call to `read_char'.
+       (read_char): Declare.  Update call to `read_char_minibuf_menu_prompt'.
+       Set wrong_kboard_jmpbuf correctly in recursive calls.
+       Use current_kboard to access Vkeyboard_translate_table.
+       Enhance comment before extra longjmp to wrong_kboard_jmpbuf.
+       Add wrong_kboard_jmpbuf parameter to allow for recursive calls.
+       Update longjmp invocations.  Remember the original current_kboard,
+       and longjmp to `wrong_kboard_jmpbuf' when a filter, timer or sentinel
+       changes it.  Comment out unnecessary calls to
+       `record_single_kboard_state' and `any_kboard_state'.
+       Update recursive calls.
+       (wrong_kboard_jmpbuf): Remove global variable.
+       (read_key_sequence): Remove unused variable wrong_kboard_jmpbuf.
+       Handle deleted interrupted_kboards correctly; that is a legal
+       case.  Add `wrong_kboard_jmpbuf' local variable.  Update setjmp
+       and read_char calls.  Abort if interrupted_kboard died in read_char.
+       (any_kboard_state, single_kboard_state)
+       (push_frame_kboard): Remove function.
+       (pop_kboard): Switch out of single_kboard mode if the kboard has
+       been deleted.  Remove unused variable.  Help debugging by not
+       changing current_kboard unnecessarily.  Set current_kboard to the
+       kboard of the selected frame when the stored kboard object has
+       been deleted before pop_kboard.
+       (temporarily_switch_to_single_kboard): Change first parameter to a
+       frame pointer.  Throw an error when caller wants to change kboards
+       while in single_kboard mode.  Don't push_kboard if we weren't in
+       single kboard state.  Don't pop_kboard if we popped into any
+       kboard state.
+       (restore_kboard_configuration): Abort if pop_kboard changed the
+       kboard in single_kboard mode.  Call pop_kboard only after setting
+       up single_kboard mode.
+       (Frecursive_edit): Switch to single_kboard mode only in nested
+       command loops.
+       (cmd_error, command_loop, command_loop_1, timer_check):
+       Comment out unnecessary call to `any_kboard_state' and
+       `record_single_kboard_state'.
+       (delete_kboard): Exit single_kboard mode if we have just deleted
+       that kboard.  Use FRAME_KBOARD.
+       (interrupt_signal): Use `Fkill_emacs' to exit Emacs, not
+       `fatal_error_signal'.
+       (record_single_kboard_state): Don't push_kboard if we weren't in
+       single kboard state.  Don't pop_kboard if we popped into any
+       kboard state.
+       (push_frame_kboard): Rename to push_kboard.
+       (kbd_buffer_get_event): Use FRAME_TERMINAL.
+       (read_avail_input): Read input from all terminals.
+       (mark_kboards): Also mark Vkeyboard_translate_table.
+       (kbd_buffer_store_event_hold): Simplify condition.
+       (read_key_sequence): Reinitialize fkey and keytran at each replay.
+       (Vkeyboard_translate_table): Move to struct kboard.
+       (init_kboard): Initialize Vkeyboard_translate_table.
+       (syms_of_keyboard): Use DEFVAR_KBOARD to define
+       Vkeyboard_translate_table.  Update doc strings.  Update docs of
+       local-function-key-map and function-key-map.
+
+       * terminal.c: New file.
+
+       * term.c: Include errno.h.
+       (Vring_bell_function, device_list, initial_device)
+       (next_device_id, ring_bell, update_begin, update_end)
+       (set_terminal_window, cursor_to, raw_cursor_to)
+       (clear_to_end, clear_frame, clear_end_of_line)
+       (write_glyphs, insert_glyphs, delete_glyphs, ins_del_lines)
+       (Fdisplay_name, create_device, delete_device): Move to terminal.c.
+       (syms_of_term): Move their initialization to terminal.c.
+       (get_tty_terminal, Fdisplay_tty_type, Ftty_display_color_p)
+       (Ftty_display_color_cells)
+       (Ftty_no_underline, Fsuspend_tty, Fresume_tty, create_tty_output)
+       (clear_tty_hooks, set_tty_hooks)
+       (init_tty, maybe_fatal): New functions.
+       (Ftty_type): Return nil if terminal is not on a tty instead of
+       throwing an error.  Doc update.
+       (syms_of_term) <Vsuspend_tty_functions, Vresume_tty_functions>:
+       Doc update.  Initialize new subrs and variables.
+       (delete_tty): Use terminal->deleted.
+       (tty_set_terminal_modes): Rename from set_terminal_modes.
+       (tty_reset_terminal_modes): Rename from reset_terminal_modes.
+       (set_scroll_region): Rename to `tty_set_scroll_region'.
+       (turn_on_insert): Rename to `tty_turn_on_insert'.
+       (turn_off_insert): Rename to `tty_turn_off_insert'.
+       (turn_off_highlight): Rename to `tty_turn_off_highlight'.
+       (turn_on_highlight): Rename to `tty_turn_on_highlight'.
+       (toggle_highligh): Rename to `tty_toggle_highlight'.
+       (background_highlight): Rename to `tty_background_highlight'.
+       (highlight_if_desired): Rename to `tty_highlight_if_desired'.
+       (tty_ring_bell, tty_update_end, tty_set_terminal_window)
+       (tty_set_scroll_region, tty_background_highlight)
+       (tty_cursor_to, tty_raw_cursor_to, tty_clear_to_end)
+       (tty_clear_frame, tty_clear_end_of_line, tty_write_glyphs)
+       (tty_insert_glyphs, tty_delete_glyphs, tty_ins_del_lines)
+       (term_get_fkeys, tty_setup_colors, dissociate_if_controlling_tty):
+       Add static modifier.
+       (tty_reset_terminal_modes, tty_set_terminal_window)
+       (tty_set_scroll_region, tty_background_highlight)
+       (tty_highlight_if_desired, tty_cursor_to)
+       (tty_raw_cursor_to, tty_clear_to_end, tty_clear_frame)
+       (tty_clear_end_of_line, tty_write_glyphs, tty_insert_glyphs)
+       (tty_delete_glyphs, tty_ins_del_lines, turn_on_face): Update for
+       renames.
 
-       * xterm.c (notice_overwritten_cursor): Take care of end < 0 case.
+2007-08-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-2001-11-17  Gerd Moellmann  <gerd@gnu.org>
+       * keyboard.c: Qrtl is new.
+       (parse_tool_bar_item): Handle :rtl keyword.
+       (syms_of_keyboard): Intern :rtl keyword.
 
-       * xdisp.c (tool_bar_item_info): Avoid calling Fget_text_property
-       with invalid position.
+       * dispextern.h (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE.
 
-2001-11-16  Richard M. Stallman  <rms@gnu.org>
+       * gtkutil.c (xg_tool_bar_expose_callback): Just do SET_FRAME_GARBAGED
+       so no Lisp code is executed.
+       (file_for_image, find_rtl_image): New functions.
+       (xg_get_image_for_pixmap): Use file_for_image
+       (update_frame_tool_bar): If direction is RTL, use RTL image if
+       defined.  Use Gtk stock images if defined.
 
-       * syswait.h: Delete conditionals for HPUX7, ISC 4.1, and convex.
+2007-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * s/isc4-1.h (HAVE_SYS_WAIT_H): Add #undef.
-       * s/hpux.h (HAVE_SYS_WAIT_H): Add #undef.
-       * s/hpux8.h (HAVE_SYS_WAIT_H): Define it.
+       * macterm.c (x_draw_composite_glyph_string_foreground): Draw rectangle
+       for nonexistent or zero-width glyph in composition glyph.
 
-       * m/convex.h (HAVE_SYS_WAIT_H): Add #undef.
+2007-08-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-11-16  Stefan Monnier  <monnier@cs.yale.edu>
+       * m/amdx86-64.h: Redirect to intel386.h if compiling for i386.
 
-       * fileio.c (build_annotations): Split off the tail.
-       (build_annotations_2): New fun.  Extracted from build_annotations.
-       (Fwrite_region): Split the call to build_annotations into two
-       calls to build_annotations and build_annotations_2.
+       * xdisp.c (Finvisible_p): New function.
+       (syms_of_xdisp): defsubr it.
 
-2001-11-16  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-08-24  Juanma Barranquero  <lekktu@gmail.com>
 
-       * sysdep.c (wait_for_kbd_input) [VMS]: Do not call
-       clear_waiting_for_input with argument.
+       * image.c (syms_of_image) <image-library-alist, cross-disabled-images>:
+       Doc fixes.
 
-       * xterm.h (x_update_cursor): Remove duplicated prototype.
+2007-08-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * keyboard.h (clear_waiting_for_input): Remove duplicated prototype.
+       * mac.c [MAC_OSX] (select_and_poll_event, sys_select): Fix last changes.
 
-       * xterm.c (waiting_for_input): Remove unnecessary declaration.
+2007-08-24  Martin Rudalics  <rudalics@gmx.at>
 
-       * data.c (Ftimes, Fquo, Frem, Fmod): Doc fix.
+       * fileio.c (Finsert_file_contents): Consult CHARS_MODIFF to tell
+       whether decoding has modified buffer contents.
 
-2001-11-16  Stefan Monnier  <monnier@cs.yale.edu>
+2007-08-24  Jason Rumney  <jasonr@gnu.org>
 
-       * fileio.c (choose_write_coding_system): New fun, extracted
-       from Fwrite_region.
-       (Fwrite_region): Use it.
+       * image.c [HAVE_NTGUI]: Define dynamic loaded functions for SVG.
+       (Qgdk_pixbuf, Qglib) [HAVE_NTGUI]: New symbols.
+       (syms_of_image) [HAVE_NTGUI]: Intern and staticpro them.
+       (init_svg_functions) [HAVE_NTGUI]: New function.
+       (fn_g_type_init, fn_g_object_unref, fn_g_error_free): New #defines.
+       (svg_load_image): Use them.
+       (svg_load_image) [HAVE_NTGUI]: Implement background.
 
-       * eval.c (max_specpdl_size, max_lisp_eval_depth): Use EMACS_INT.
-       (funcall_lambda, run_hook_with_args): Make static and add prototype.
-       (ml_apply, find_handler_clause): Add prototype.
+2007-08-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-2001-11-16  Eli Zaretskii  <eliz@gnu.org>
+       * Makefile.in (RSVG_LIBS, RSVG_CFLAGS): New variables.
+       (ALL_CFLAGS): Use ${RSVG_CFLAGS} instead of @RSVG_CFLAGS@.
+       (LIBX): Remove @RSVG_LIBS@.
+       (LIBES): Add $(RSVG_LIBS).
 
-       * config.in: Add #undef HAVE_COFF_H.
+       * image.c (svg_load_image): Blend with specified background if exists.
+       Use IMAGE_BACKGROUND.  Add Mac OS Support.
 
-       * unexec.c (coff.h): Don't include unless HAVE_COFF_H is defined.
-       Required for ISC 4.1.
+       * mac.c (wakeup_from_rne_enabled_p) [MAC_OSX]: Remove variable.
+       (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE) [MAC_OSX]:
+       Remove macros.
+       [MAC_OSX] (socket_callback): Do nothing.
+       [MAC_OSX] (select_and_poll_event): Use CFRunLoopRunInMode instead of
+       ReceiveNextEvent.
+       [MAC_OSX] (sys_select): Likewise.  Don't set context as argument to
+       socket_callback.
+       (mac_wakeup_from_rne) [MAC_OSX]: Do nothing.
 
-2001-11-16  Eli Zaretskii  <eliz@is.elta.co.il>
+2007-08-22  Glenn Morris  <rgm@gnu.org>
 
-       * syswait.h (HAVE_SYS_WAIT_H): Undef for ISC 4.1.  Reported by
-       Andrew Wiseman <a.wiseman@btclick.com>.
+       * image.c (x_find_image_file): Search in etc/images/ rather than etc/.
 
-2001-11-16  Kim F. Storm  <storm@cua.dk>
+2007-08-22  Paul Pogonyshev  <pogonyshev@gmx.net>
 
-       The following changes are made to clean up the various internal
-       references to the fringes to actually use the term `fringe' for
-       them.  Previously, they were called `flags areas', `bitmap areas',
-       `left/right side of windows', or implicitly as `flags' or
-       `bitmaps':
+       * Makefile.in (ALL_CFLAGS, LIBX): Add RSVG_LIBS.
 
-       * dispextern.h (FRINGE_FACE_ID): Renamed from BITMAP_AREA_FACE_ID.
-       Comments fixed.  Use renamed symbols.
+       * image.c: Add support for SVG images.  Some additional comments
+       by Joakim Verona <joakim@verona.se>.  When HAVE_RSVG is defined:
+       (svg_image_p): New function to test for SVG image.
+       (svg_load): New function to load SVG image.
+       (svg_load_image): New function, helper for svg_load.
+       (Qsvg): New Lisp_object.
+       (svg_keyword_index): New enum.
+       (svg_format): New static `image_keyword' struct.
+       (svg_type): New static `image_type' struct.
+       (librsvg/rsvg.h): Include it.
 
-       * dispnew.c: Comment fix.  Use renamed symbols.
+2007-08-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * frame.h (FRAME_FRINGE_COLS): Renamed from FRAME_FLAGS_AREA_COLS.
-       (FRAME_FRINGE_WIDTH): Renamed from FRAME_FLAGS_AREA_WIDTH.
-       (FRAME_LEFT_FRINGE_WIDTH): Renamed from FRAME_LEFT_FLAGS_AREA_WIDTH.
+       * lread.c (load_warn_old_style_backquotes): Fix up array size typo.
 
-       * msdos.c: Comment fix.
+2007-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * w32fns.c: Use renamed symbols.
+       * lread.c (Qold_style_backquotes): New var.
+       (syms_of_lread): Init and staticpro it.
+       (load_warn_old_style_backquotes): New fun.
+       (Fload): Use them to warn about old style backquotes.
+       (end_of_file_error, Fload): Remove unused vars.
 
-       * w32term.c: Comment fixes.  Use renamed symbols.
-       (fringe_bitmap_type): Renamed from bitmap_type.
-       (NO_FRINGE_BITMAP): Renamed from NO_BITMAP.
-       (w32_draw_fringe_bitmap): Renamed from w32_draw_bitmap.
-       (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps.
+       * lisp.h (Fclear_face_cache, Fx_send_client_event): Declare.
 
-       * w32term.h: Comment fixes.  Use renamed symbols.
-       (fringes_extra): Renamed from flags_areas_extra.
-       (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH.
-       (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT.
-       (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS.
-       (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH.
-       (FRAME_X_LEFT_FRINGE_WIDTH):
-       Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH.
-       (FRAME_X_RIGHT_FRINGE_WIDTH):
-       Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH.
+       * lread.c (Vold_style_backquotes): New var.
+       (syms_of_lread): Init and export it to Elisp.
+       (read1): Set it when we find an old-style (back)quote.
 
-       * widget.c: Use renamed symbols.
+2007-08-22  Jason Rumney  <jasonr@gnu.org>
 
-       * window.c: Comment fixes.  Use renamed symbols.
-       (coordinates-in-window-p): Doc fix.
+       * w32reg.c (SYSTEM_DEFAULT_RESOURCES): Add missing NULL terminator.
 
-       * xdisp.c: Comment fixes.  Use renamed symbols.
+2007-08-22  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * xfaces.c (realize_basic_faces): Use FRINGE_FACE_ID.
+       * puresize.h (BASE_PURESIZE): Increase to 1140000.
 
-       * xfns.c: Use renamed symbols.
+2007-08-19  Richard Stallman  <rms@gnu.org>
 
-       * xterm.c: Comment fixes.  Use renamed symbols.
-       (fringe_bitmap_type): Renamed from bitmap_type.
-       (NO_FRINGE_BITMAP): Renamed from NO_BITMAP.
-       (x_draw_fringe_bitmap): Renamed from x_draw_bitmap.
-       (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps.
+       * eval.c (Ffunction, Fquote): Signal error if not 1 argument.
 
-       * xterm.h: Comment fixes.  Use renamed symbols.
-       (fringes_extra): Renamed from flags_areas_extra.
-       (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH.
-       (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT.
-       (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS.
-       (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH.
-       (FRAME_X_LEFT_FRINGE_WIDTH):
-       Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH.
-       (FRAME_X_RIGHT_FRINGE_WIDTH):
-       Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH.
+2007-08-19  Andreas Schwab  <schwab@suse.de>
 
-2001-11-15  Jason Rumney  <jasonr@gnu.org>
+       * alloc.c (pure): Round PURESIZE up.
 
-       * w32menu.c (add-menu-item): Make help_echo and radio buttons
-       work for most menu items.  From David Ponce
-       <david.ponce@wanadoo.fr>.
+2007-08-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-2001-11-15  Gerd Moellmann  <gerd@gnu.org>
+       * xterm.c (handle_one_xevent): Remove check that mouse click is in
+       active frame.
 
-       * xfns.c (x_set_frame_parameters): Revert change of 2001-11-07.
-       Some x_set_* function expect to be called even if old and new
-       value are equal.
+2007-08-16  Richard Stallman  <rms@gnu.org>
 
-       * xdisp.c (build_desired_tool_bar_string): Accept zero
-       tool_bar_button_relief.
+       * eval.c (Fcommandp): Add parens to clarify.
 
-       * xfns.c (Fx_create_frame): Accept zero tool_bar_button_relief.
+       * minibuf.c (Fall_completions): Use enum for type of table.
 
-       * xterm.c (x_draw_image_relief): Accept zero tool_bar_button_relief.
+       * emacs.c (USAGE2): Improve text.
 
-       * xterm.c (x_draw_bar_cursor): If the background color of the
-       glyph under the cursor equals the frame's cursor color, use
-       the glyph's foreground color for drawing the bar cursor.
+2007-08-15  Philippe Waroquiers  <philippe.waroquiers@eurocontrol.int>
 
-       * dispnew.c (direct_output_forward_char): Fix character/byte
-       position comparison.
+       * term.c (tty_default_color_capabilities): Declare static
+       variables in file scope, to avoid HPUX compiler problem.
 
-2001-11-15  Miles Bader  <miles@gnu.org>
+2007-08-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * editfns.c (find_field): Add BEG_LIMIT and END_LIMIT parameters.
-       (Fdelete_field, Ffield_string, Ffield_string_no_properties):
-       Update arguments to find_field.
-       (Ffield_beginning, Ffield_end): Add LIMIT param, pass to find_field.
-       (Fconstrain_to_field): Use LIMIT arg to shorten search time.
-       * lisp.h (Ffield_beginning, Ffield_end): Update EXFUN decl.
-       * minibuf.c (Fminibuffer_prompt_end): Update args to Ffield_end.
+       * gtkutil.c (update_frame_tool_bar): Use -1 as index
+       to gtk_toolbar_insert.
 
-2001-11-14  Richard M. Stallman  <rms@gnu.org>
+2007-08-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * editfns.c (Fpropertize): Allow call with 1 arg.
+       * fileio.c (Finsert_file_contents): Yet Another Int/Lisp_Object Mixup.
 
-       * dispextern.h (image_background, image_background_transparent):
-       Conditionalize on HAVE_X_WINDOWS.
+       * insdel.c (reset_var_on_error): New fun.
+       (signal_before_change, signal_after_change):
+       Use it to reset (after|before)-change-functions to nil in case of error.
+       Bind inhibit-modification-hooks to t.
+       Don't bind (after|before)-change-functions to nil while they run.
 
-2001-11-13  Richard M. Stallman  <rms@gnu.org>
+2007-08-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * print.c (Fprin1_to_string): Doc fix.
+       * xterm.c (x_draw_image_glyph_string): Adjust stipple origin when
+       filling pixmap with stippled background.
 
-       * sunfns.c (Fsun_change_cursor_icon): Doc fix.
+2007-08-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * floatfns.c (Fceiling, Ffloor): Doc fixes.
+       * macterm.c [TARGET_API_MAC_CARBON] (mac_handle_window_event):
+       Don't use invisible frame as parent window for repositioning.
 
-       * filelock.c (Funlock_buffer, Ffile_locked_p): Doc fixes.
+2007-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * fileio.c (Ffile_accessible_directory_p): Doc fix.
+       * print.c (new_backquote_output): Rename from old_backquote_output.
+       (print): Inverse its logic (according to its name) so as to match the
+       behavior of new_backquote_flag in lread.c.
 
-       * eval.c (syms_of_eval): Doc fix.
+2007-08-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * coding.c (syms_of_coding): Doc fix.
+       * gmalloc.c (posix_memalign): New function.
 
-       * doc.c (Fsnarf_documentation): Doc fix.
+       * macterm.c (frame_highlight, frame_unhighlight): Don't call
+       ActivateControl/DeactivateControl here.
+       [USE_MAC_TOOLBAR] (free_frame_tool_bar): Suppress animation when
+       frame-notice-user-settings is non-nil.
+       [USE_MAC_FONT_PANEL] (mac_handle_font_event): Also record parameter
+       for kEventParamFMFontStyle.
+       [TARGET_API_MAC_CARBON] (mac_handle_keyboard_event): Don't check
+       mac_pass_command_to_system and mac_pass_control_to_system here.
+       (XTread_socket): Call ActivateControl/DeactivateControl here.
+       (XTread_socket) [TARGET_API_MAC_CARBON]:
+       Check mac_pass_command_to_system and mac_pass_control_to_system here.
+       (mac_handle_window_event) [USE_MAC_TOOLBAR]: Add further workaround
+       for window repositioning.
 
-       * dispnew.c (syms_of_display): Doc fix.
+2007-08-08  Glenn Morris  <rgm@gnu.org>
 
-       * category.c (Fget_unused_category): Doc fix.
+       * Replace `iff' in doc-strings and comments.
 
-       * buffer.c (syms_of_buffer): Doc fixes.
+2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
 
-2001-11-14  Eli Zaretskii  <eliz@is.elta.co.il>
+       * xdisp.c (move_it_by_lines): Remove incorrect optimization.
 
-       * print.c (prin1, print): Doc fix.
+2007-08-07  Martin Rudalics  <rudalics@gmx.at>
 
-2001-11-14  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * fileio.c (Finsert_file_contents): Run format-decode and
+       after_insert_file_functions on entire buffer when REPLACE is
+       non-nil and inhibit modification_hooks and point_motion_hooks.
+       For consistency, run after_insert_file_functions iff something
+       got inserted.  Move signal_after_change and update_compositions
+       after code running after_insert_file_functions.  Make sure that
+       undo_list doesn't record intermediate steps of the decoding process.
 
-       * fontset.h: Remove declarations of variables
-       `Vhighlight_wrong_size_font' and `Vclip_large_size_font'.
+2007-08-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * fontset.c: Remove variables `Vhighlight_wrong_size_font' and
-       `Vclip_large_size_font'.
+       * emacs.c (main)
+       [HAVE_GTK_AND_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
+       Call malloc_enable_thread on interactive startup.
 
-2001-11-13  Jason Rumney  <jasonr@gnu.org>
+       * gmalloc.c (_malloc_thread_enabled_p) [USE_PTHREAD]: New variable.
+       (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS)
+       [USE_PTHREAD]: Conditionalize with it.
+       (malloc_atfork_handler_prepare, malloc_atfork_handler_parent)
+       (malloc_atfork_handler_child, malloc_enable_thread) [USE_PTHREAD]:
+       New functions.
 
-       * w32fns.c: Doc fix.
+2007-08-06  Chong Yidong  <cyd@stupidchicken.com>
 
-2001-11-13  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * xdisp.c (redisplay_window): When restoring original buffer
+       position, make sure it is still valid.
 
-       * xfaces.c (Fface_attributes_as_vector): Doc fix.
+       * image.c (png_load): Ignore png-supplied background color.
 
-       * fns.c: Doc fix.
+2007-08-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * emacs.c: Doc fix.
+       * mac.c [TARGET_API_MAC_CARBON] (cfdate_to_lisp): Obtain microsec value.
+       Use kCFAbsoluteTimeIntervalSince1970.
 
-       * coding.c: Doc fix.
+       * macmenu.c (quit_dialog_event_loop) [TARGET_API_MAC_CARBON]:
+       New variable.
+       [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Set it if dialog
+       event loop should be quit.
+       [TARGET_API_MAC_CARBON] (create_and_show_dialog) [!MAC_OSX]:
+       Quit dialog event loop if quit_dialog_event_loop is set.
+
+       * macselect.c [!TARGET_API_MAC_CARBON]: Include Scrap.h.
+       (Selection): New typedef.  Use instead of ScrapRef.
+       (mac_get_selection_from_symbol): Rename from get_scrap_from_symbol.
+       (mac_valid_selection_target_p): Rename from valid_scrap_target_type_p.
+       (mac_clear_selection): Rename from clear_scrap.
+       (get_flavor_type_from_symbol): New argument SEL and subsume function of
+       scrap_has_target_type.  All uses changed.
+       (mac_get_selection_ownership_info, mac_valid_selection_value_p)
+       (mac_selection_has_target_p): New functions.
+       (mac_put_selection_value): Rename from put_scrap_string.
+       (mac_get_selection_value): Rename from get_scrap_string.
+       (mac_get_selection_target_list): Rename from get_scrap_target_type_list.
+       (put_scrap_private_timestamp, scrap_has_target_type)
+       (get_scrap_private_timestamp): Remove functions.
+       (SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP): Remove define.
+       (x_own_selection, x_get_local_selection):
+       Use mac_valid_selection_value_p.
+       (x_own_selection): Don't use put_scrap_private_timestamp.
+       Record OWNERSHIP-INFO into Vselection_alist instead.
+       (x_get_local_selection): Don't check type if request is local.
+       (Fx_selection_owner_p): Don't use get_scrap_private_timestamp.
+       Detect ownership change with OWNERSHIP-INFO in Vselection_alist instead.
+
+2007-08-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_tool_bar_callback): Generate two TOOL_BAR_EVENT:s,
+       add comment explaining why.
 
-       * cmds.c, composite.c, dired.c, doc.c, filelock.c, floatfns.c,
-       * fontset.c, insdel.c, keymap.c: Change doc-string comments to
-       `new style' [w/`doc:' keyword].
+2007-08-03  Richard Stallman  <rms@gnu.org>
 
-2001-11-12  Richard M. Stallman  <rms@gnu.org>
+       * fileio.c (Fvisited_file_modtime): Use make_time.
 
-       * xterm.c (XTread_socket): Don't update focus for EnterNotify or
-       LeaveNotify events.  Only FocusIn and FocusOut do that now.
-       (x_display_and_set_cursor): Do display hollow cursors in active
-       minibuffer windows when they are not selected.
+2007-08-01  Ryo Yoshitake  <ryo@shiftmode.net>  (tiny change)
 
-2001-11-12  Jason Rumney  <jasonr@gnu.org>
+       * mac.c (init_mac_osx_environment): Adjust load-path on self-contained
+       build.
 
-       * w32console.c, w32fns.c, w32menu.c, w32proc.c, w32select.c,
-       * w32term.c: Change doc-string comments to `new style'
-       [w/`doc:' keyword].  Doc fixes.
+2007-07-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * w32fns.c: Don't define max.
-       (Fx_open_connection): Only execute once.
+       * gtkutil.c (xg_tool_bar_callback): Generate a single TOOL_BAR_EVENT.
 
-2001-11-12  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-07-30  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * ccl.c: Change macros to use do-while block instead of if-else.
-       Use braces to follow GNU Coding Standards.
+       * puresize.h (BASE_PURESIZE): Increase to 1130000.
 
-2001-11-11  Richard M. Stallman  <rms@gnu.org>
+2007-07-30  Richard Stallman  <rms@gnu.org>
 
-       * sysdep.c (child_setup_tty): Don't clear ICRNL or INLCR.
+       * lread.c (readevalloop, read1): Treat NBSP as whitespace.
 
-       * lread.c (read_escape): Use end_of_file_error for reporting eof.
+2007-07-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * insdel.c (replace_range): Use adjust_markers_for_replace
-       instead of adjust_markers_for_delete and adjust_markers_for_insert.
+       * gmalloc.c (__malloc_initialize): Remove pthread_once.  Not needed.
 
-       * intervals.h (set_text_properties, set_text_properties_1): Declare.
+2007-07-28  Nick Roberts  <nickrob@snap.net.nz>
 
-       * textprop.c (set_text_properties_1): New subroutine
-       broken out of set_text_properties.
-       (set_text_properties): Use set_text_properties_1.
+       * xdisp.c (decode_mode_spec): Use '@' instead of 'R' to test for
+       remote default-directory.
 
-       * intervals.c (graft_intervals_into_buffer):
-       Use set_text_properties_1 to clear out properties.
+       * buffer.c (mode-line-format): Update doc string.
 
-       * search.c (Freplace_match): Use replace_range to insert
-       and delete.  Don't request property inheritance from
-       surrounding text.
+2007-07-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-2001-11-10  Jason Rumney  <jasonr@gnu.org>
+       * w32term.c (w32_draw_fringe_bitmap): Extend fringe background to
+       scroll bar gap.
+       (x_scroll_bar_create): Set bar->fringe_extended_p.
+       (w32_set_vertical_scroll_bar): Put leftmost/rightmost scroll bars
+       on frame edge.  Check fringe background extension.  Don't clear
+       extended fringe background area.
 
-       * w32fns.c (enum_font_cb2): Use leading @ on face name to detect
-       vertical fonts.  Allow them if face name is explicitly specified.
-       Do not give up if we find a font that cannot be converted to an xlfd.
+       * w32term.h (struct scroll_bar): New member fringe_extended_p.
+       (w32_fill_area): Enclose multiple statements with do ... while (0).
 
-2001-11-10  Gerd Moellmann  <gerd@gnu.org>
+       * xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]:
+       Extend fringe background to scroll bar gap.
+       (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]:
+       Set bar->fringe_extended_p.
+       (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
+       Put leftmost/rightmost scroll bars on frame edge.  Check fringe
+       background extension.  Don't clear extended fringe background area.
 
-       * unexelf.c (unexec): Use mmap/munmap to allocate buffers
-       instead of malloc/free.
+       * xterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
+       New member fringe_extended_p.
 
-2001-11-09  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-07-25  Glenn Morris  <rgm@gnu.org>
 
-       * xfaces.c (merge_face_vectors): Use braces to follow GNU
-       Coding Standards.
-       (Finternal_set_lisp_face_attribute): Likewise.
+       * Relicense all FSF files to GPLv3 or later.
 
-       * buffer.c (Fbury_buffer): Likewise.
+       * COPYING: Switch to GPLv3.
 
-       * indent.c (current_column_1): Remove unused variable `prev_col'.
+2007-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * coding.c (encode_coding): Use precomputed value of `src'.
-       (encode_coding): Remove unused variable `src_end'.
-       (code_convert_region): Remove unused variables `count'.
+       * eval.c (Fcommandp): Pay attention to the `interactive-form' property.
 
-2001-11-07  Jason Rumney  <jasonr@gnu.org>
+       * data.c (Finteractive_form): Check for the presence of an
+       `interactive-form' symbol property more thoroughly.
 
-       * w32term.c (x_display_and_set_cursor): Do not move system caret
-       if cursor_glyph is NULL.
+       * data.c (Finteractive_form): Use an `interactive-form' property if
+       present, analogous to the function-documentation property.
 
-2001-11-07  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-07-24  Jason Rumney  <jasonr@gnu.org>
 
-       * keymap.c (access_keymap): Fix compilation error.
+       * w32fns.c (x_real_positions): Get real position from OS instead of
+       calculating it.
 
-2001-11-07  Miles Bader  <miles@gnu.org>
+2007-07-23  Jason Rumney  <jasonr@gnu.org>
 
-       * xfns.c (x_set_frame_parameters): Avoid infinite recursion.
+       * filelock.c (current_lock_owner): Allow for @ sign in username.
 
-2001-11-07  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-07-22  Nick Roberts  <nickrob@snap.net.nz>
 
-       * intervals.c (graft_intervals_into_buffer):
-       Remove #ifdef'd-out code.
-       (graft_intervals_into_buffer): Remove unused variable `middle'.
+       * xdisp.c (decode_mode_spec): Add case 'R' for to test for
+       remote default-directory.
 
-       * lread.c (Feval_region): Remove obsolete #ifdef'd-out
-       code (eval-current-buffer).
-       Change doc-string comments to `new style' [w/`doc:' keyword].
+       * buffer.c (mode-line-format): Describe above case in doc string.
 
-2001-11-06  Richard M. Stallman  <rms@gnu.org>
+2007-07-20  Eli Zaretskii  <eliz@gnu.org>
 
-       * keymap.c (access_keymap): Don't use initializers on Lisp_Object.
+       * w32proc.c (IMAGE_NT_OPTIONAL_HDR32_MAGIC, IMAGE_OPTIONAL_HEADER32):
+       Define if not defined.
 
-2001-11-06  Stefan Monnier  <monnier@cs.yale.edu>
+2007-07-18  Jason Rumney  <jasonr@gnu.org>
 
-       * lread.c (read1): Fix behavior with nested backquoting.
+       * w32proc.c (w32_executable_type): Handle 64 bit executables.
 
-       * keyboard.c (make_lispy_event): Check integerness and fix
-       Lisp_Object/int mixup.
+2007-07-18  Richard Stallman  <rms@gnu.org>
 
-2001-11-06  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * data.c (Fsetq_default): Doc fix.
 
-       * fns.c (copy_hash_table): Remove unused variable `v'.
+       * eval.c (Fsetq): Doc fix.
 
-       * fontset.c (fontset_font_pattern): Remove unused variable
-       `family_registry'.
+2007-07-18  Juanma Barranquero  <lekktu@gmail.com>
 
-       * indent.c (current_column_1): Remove unused variable `prev_col'.
+       * coding.c (Ffind_operation_coding_system):
+       * eval.c (For, Fand): Doc fixes.
+       Reported by Johan Bockg\e,Ae\e(Brd.
 
-2001-11-05  Richard M. Stallman  <rms@gnu.org>
+2007-07-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * m/news-risc.h (BROKEN_PROTOTYPES): Defined.
+       * xfns.c (Fx_focus_frame): Call x_ewmh_activate_frame.
 
-       * buffer.c (Fkill_buffer): Don't delete auto save file
-       if buffer is modified.
+       * xterm.h: Declare x_ewmh_activate_frame.
 
-2001-11-05  Andrew Innes  <andrewi@gnu.org>
+       * xterm.c (x_ewmh_activate_frame): New function.
+       (XTframe_raise_lower): Move code to x_ewmh_activate_frame.
 
-       * w32proc.c (Fw32_set_keyboard_layout): Use CHECK_NUMBER_CAR and
-       CHECK_NUMBER_CDR.
+2007-07-17  Martin Rudalics  <rudalics@gmx.at>
 
-2001-11-05  Richard M. Stallman  <rms@gnu.org>
+       * window.c (Fdisplay_buffer): If largest or LRU window is the
+       only window, split it even if it is not eligible for splitting.
+       This restores the original behavior broken by the 2007-07-15
+       change.
 
-       * unexelf.c (unexec): Minor changes; clean up comments.
+2007-07-17  Glenn Morris  <rgm@gnu.org>
 
-2001-11-05  Sam Steingold  <sds@gnu.org>
+       * abbrev.c (abbrev_check_chars): New function.
+       (Fdefine_global_abbrev, Fdefine_mode_abbrev):
+       Call abbrev_check_chars to check abbrev characters are word
+       constituents.  Doc fix.
 
-       * w32term.c (x_display_and_set_cursor): Fix w32 compilation error.
+2007-07-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-11-05  Andreas Schwab  <schwab@suse.de>
+       * process.c (Fstart_process, Fmake_network_process)
+       (read_process_output): Fix up last changes.
 
-       * sound.c (sound_perror): Save errno from being clobbered.
+2007-07-16  Eli Zaretskii  <eliz@gnu.org>
 
-2001-11-05  Dale Hagglund  <rdh@yottayotta.com>
+       * makefile.w32-in (clean): Don't delete *~.
 
-       * unexelf.c (unexec): Don't use `mmap'.  Instead, read and write
-       the program image directly.
+2007-07-16  Andreas Schwab  <schwab@suse.de>
 
-2001-11-05  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * window.c (Fdisplay_buffer): Use NILP.
+       (Fset_window_scroll_bars): Likewise.
 
-       * buffer.h (Fbuffer_local_value): Add prototype.
+2007-07-15  Martin Rudalics  <rudalics@gmx.at>
 
-2001-11-04  Richard M. Stallman  <rms@gnu.org>
+       * window.c (window_min_size_2): New function.
+       (window_min_size_1, size_window, Fdisplay_buffer)
+       (Fsplit_window, adjust_window_trailing_edge): Use it to avoid
+       windows without mode- or header-lines when window-min-height is
+       too small.
+       (size_window): Reset nodelete_p after testing it, following an
+       earlier note by Kim F. Storm.
+       (display_buffer): Do not set split_height_threshold to twice the
+       value of window_min_height to avoid changing the value of a
+       customizable variable.  Rather explicitly check whether the
+       height of the window that shall be splitted is at least as large
+       as split_height_threshold.
+       (Fwindow_full_width_p): New defun.
+       (syms_of_window): Defsubr it.
 
-       * buffer.c (Fbuffer_local_value): Remove extra args from CHECK_SYMBOL
-       and CHECK_BUFFER.
+       * window.h: Add EXFUN for Fwindow_full_width_p.
 
-       * keyboard.c (read_char): Use Fcar and Fcdr, not Fnth.
-       (record_char): Likewise.
+2007-07-14  Jason Rumney  <jasonr@gnu.org>
 
-       * keyboard.c (make_lispy_event): Don't insist a drag event must
-       move to a different buffer position.  Instead, check for moving at
-       least double_click_fuzz.
+       * process.c [WINDOWSNT]: Don't undefine AF_INET6.
 
-       * fns.c (Fmake_hash_table): Use XCAR and XCDR, not Fnth and Flength.
+2007-07-14  Richard Stallman  <rms@gnu.org>
 
-       * keyboard.c (echo-area-clear-hook): Undo Oct 29 change.
+       * eval.c (maybe_call_debugger): New function.
+       (find_handler_clause): Use maybe_call_debugger.
+       Call it when the handler says `debug'.
+       Eliminate DEBUGGER_VALUE_PTR.
+       (Fsignal): Eliminate debugger_value.
+       (Qdebug): New variable.
+       (syms_of_eval): Initialize it.
 
-       * indent.c (current_column_1, Fmove_to_column): Separate the code
-       for display-table glyphs from the code for buffer text, to fix
-       bugs in the former.
+2007-07-14  Juanma Barranquero  <lekktu@gmail.com>
 
-2001-11-04  Michael Welsh Duggan  <md5i@cs.cmu.edu>
+       * eval.c (Fprogn):
+       * keyboard.c (Ftrack_mouse):
+       * print.c (Fwith_output_to_temp_buffer):
+       * window.c (Fsave_window_excursion): Doc fix.
 
-       * buffer.c (Fbuffer_local_value): New function.
-       (syms_of_buffer): Defsubr it.
+2007-07-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * xterm.c, w32term.c (x_display_and_set_cursor): Use buffer-local
-       value of `cursor-in-non-selected-windows'.
+       * eval.c (init_eval_once): Bump max_lisp_eval_depth to 400.
 
-       * lisp.h (Qcursor_in_non_selected_windows): New declaration.
-       * xdisp.c (Qcursor_in_non_selected_windows): New variable.
-       (syms_of_xdisp): Initialize it.
+2007-07-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-11-04  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * process.h (struct Lisp_Process): Turn slots infd, outfd,
+       kill_without_query, pty_flag, tick, update_tick, decoding_carryover,
+       inherit_coding_system_flag, filter_multibyte, adaptive_read_buffering,
+       read_output_delay, and read_output_skip from Lisp_Objects to ints.
+       Remove unused encoding_carryover.
+       * process.c: Adjust all functions accordingly.
 
-       * xfns.c (Fx_create_frame): Doc fix.
+2007-07-12  Richard Stallman  <rms@gnu.org>
 
-       * coding.c: Change doc-string comments to `new style' [w/`doc:'
-       keyword].
+       * term.c: Include unistd.h only if HAVE_UNISTD_H.
 
-       * eval.c (top_level_value, top_level_set): Remove commented and
-       #ifdef'd-out code.
-       (Fdefvar): Fix usage in doc-string.
+2007-07-11  Jason Rumney  <jasonr@gnu.org>
 
-2001-11-03  Richard M. Stallman  <rms@gnu.org>
+       * makefile.w32-in (LIBS): Include OLE32.
 
-       * xfns.c: Include unistd.h, if it exists.
+       * w32fns.c (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
+       (w32_msg_pump) <WM_DESTROY>: Uninitialize COM.
 
-       * editfns.c: Move the include of ctype.h after unistd.h.
+2007-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * gmalloc.c: Test BROKEN_PROTOTYPES.
+       * lisp.h (struct Lisp_Hash_Table): Turn next_weak into a bare pointer.
+       * fns.c (weak_hash_tables): Rename from Vweak_hash_tables and turned
+       from a Lisp_Object into a bare pointer.
+       (make_hash_table, copy_hash_table, sweep_weak_hash_tables, init_fns):
+       Adjust the code correspondingly.
 
-2001-11-03  Ken Raeburn  <raeburn@gnu.org>
+       * alloc.c (emacs_blocked_free): Remove unused var `bytes_used_now'.
 
-       * lisp.h (CHECK_STRING_CAR): New macro.
-       * lread.c (Fload): Use XSETCARFASTINT, XSETCDRFASTINT instead of
-       treating XCAR and XCDR as lvalues.
-       (openp): Use CHECK_STRING_CAR.
-       (read_list): Use XSETCDR instead of treating XCDR as lvalue.
+       * term.c: Include unistd.h for ttyname, used in handle_one_term_event.
+       (term_show_mouse_face): Remove unused var `j'.
+       (handle_one_term_event): Remove unused vars `i' and `j'.
+       Don't cast return value of ttyname since it's not necessary.
 
-2001-11-03  Eli Zaretskii  <eliz@is.elta.co.il>
+2007-07-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * s/sco5.h (sigprocmask_set): Declare as extern SIGMASKTYPE.
-       (SIGMASKTYPE): Define.
+       * alloc.c (mark_maybe_pointer): Enforce mult-of-8 alignment when using
+       USE_LSB_TAG.  Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
 
-       * syssignal.h (sigunblock): Don't define if already defined.
+       * fns.c (map_char_table): Use an array of int for `indices' rather than
+       an array of Lisp_Objects (which are only ever integers anyway).
+       (Fmap_char_table): Update caller.
+       * lisp.h: Update prototype.
+       * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap):
+       * fontset.c (Ffontset_info):
+       * casetab.c (set_case_table): Update callers.
 
-2001-11-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * editfns.c (Ftranspose_regions): Use EMACS_INT for positions.
 
-       * eval.c (debugger_may_continue, Vdebug_ignored_errors)
-       (call_debugger, Fcondition_case, skip_debugger, unbind_to):
-       Fix typos in comments.
+       * keymap.c (struct accessible_keymaps_data)
+       (struct where_is_internal_data): New structures.
+       (accessible_keymaps_1, where_is_internal_1): Use them to change
+       interface to adhere to the one used by map_keymap.
+       (Faccessible_keymaps, where_is_internal): Use map_keymap.
+       (accessible_keymaps_char_table, where_is_internal_2): Remove.
 
-       * mocklisp.c (Fml_defun, Fml_while, Fml_substr): Remove commented
-       and #ifdef'd-out code.
-       Fix and reindent comments.
+       * keymap.h (map_keymap_function_t): More informative prototype.
 
-       * mocklisp.h: Remove comment which is a copy of comment in mocklisp.c.
+2007-07-10  Guanpeng Xu  <herberteuler@hotmail.com>
 
-       * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET): Remove unused
-       argument `i' in macros.
+       * search.c (Vinhibit_changing_match_data, search_regs_1): New vars.
+       (looking_at_1): Don't change search_regs and last_thing_searched
+       if `inhibit-changing-match-data' is non-nil.
+       (string_match_1, search_buffer, set_search_regs): Likewise.
+       (syms_of_search): Add Lisp level definition for
+       `inhibit-changing-match-data' and set it to nil.
+       (boyer_moore): If `inhibit-changing-match-data' is non-nil, compute
+       start and end of the match, instead of using values in search_regs.
 
-       * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Remove unused argument
-       `i' in macros.
+2007-07-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * lisp.h (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST)
-       (CHECK_STRING, CHECK_CONS, CHECK_SYMBOL, CHECK_CHAR_TABLE)
-       (CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE, CHECK_BUFFER)
-       (CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS, CHECK_NUMBER)
-       (CHECK_NATNUM, CHECK_MARKER, CHECK_NUMBER_COERCE_MARKER)
-       (CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT)
-       (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER, CHECK_OVERLAY)
-       (CHECK_NUMBER_CAR, CHECK_NUMBER_CDR): Remove unused argument `i'
-       in macros.
+       * minibuf.c (Fcompleting_read): New value `confirm-only'
+       for `require-match'.
 
-       * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c,
-       * casefiddle.c, category.c, ccl.c, charset.c, cmds.c, coding.c,
-       * composite.c, data.c, dired.c, dispnew.c, doc.c, dosfns.c, emacs.c,
-       * eval.c, fileio.c, filelock.c, fns.c, fontset.c, frame.c, frame.h,
-       * indent.c, keyboard.c, keymap.c, lread.c, macros.c, marker.c,
-       * minibuf.c, mocklisp.c, msdos.c, print.c, process.c, search.c,
-       * sunfns.c, syntax.c, textprop.c, undo.c, w16select.c, w32console.c,
-       * w32fns.c, w32menu.c, w32proc.c, w32select.c, window.c, xdisp.c,
-       * xfaces.c, xmenu.c, xselect.c: Update usage of CHECK_ macros
-       (remove unused second argument).
+2007-06-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-11-02  Stefan Monnier  <monnier@cs.yale.edu>
+       * fileio.c (Fdo_auto_save): Revert last patch installed unwillingly as
+       part of the 2007-06-27 change to syms_of_fileio.
 
-       * syntax.c (describe_syntax): New wrapper.
-       (Finternal_describe_syntax_value): Rename from describe_syntax.
-       Don't insert space at front and \n at the end.
-       (syms_of_syntax): Defsubr Sinternal_describe_syntax_value.
+2007-06-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * regex.c (re_wctype): Try to fix some warnings.
-       (regcomp, regexec): Don't forget the __restrict.
+       * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event):
+       Check WINDOWP before using XWINDOW.  Consolidate return statements.
 
-2001-11-02  Richard M. Stallman  <rms@gnu.org>
+2007-06-27  Richard Stallman  <rms@gnu.org>
 
-       * textprop.c (Fget_char_property): Doc fix.
+       * fileio.c (syms_of_fileio) <after-insert-file-functions>: Doc fix.
 
-2001-11-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-06-27  Juanma Barranquero  <lekktu@gmail.com>
 
-       * process.c (Fstart_process): Add usage to doc-string.
+       * buffer.c (syms_of_buffer) <selective-display>: Fix typo in docstring.
 
-       * data.c (Fsetq_default): Ditto.
+2007-06-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * callint.c (Finteractive): Ditto.
+       * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Check this after including config.h.
+       (_aligned_blocks_mutex) [USE_PTHREAD]: New variable.
+       (LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS): New macros.
+       (_free_internal, memalign): Use them.
+       (_malloc_mutex, _aligned_blocks_mutex) [USE_PTHREAD]:
+       Initialize to PTHREAD_MUTEX_INITIALIZER.
+       (malloc_initialize_1) [USE_PTHREAD]: Don't use recursive mutex.
+       (morecore_nolock): Rename from morecore.  All uses changed.
+       Use only nolock versions of internal allocation functions.
+       (_malloc_internal_nolock, _realloc_internal_nolock)
+       (_free_internal_nolock): New functions created from
+       _malloc_internal, _realloc_internal, and _free_internal.
+       (_malloc_internal, _realloc_internal, _free_internal): Use them.
+       Copy hook value to automatic variable before its use.
+       (memalign): Copy hook value to automatic variable before its use.
 
-2001-11-01  Stefan Monnier  <monnier@cs.yale.edu>
+2007-06-26  Kenichi Handa  <handa@m17n.org>
 
-       * macros.c: Don't include keymap.h any more.
+       * coding.c (Ffind_operation_coding_system): Docstring improved.
+       (syms_of_coding): Docstring of `file-coding-system-alist' improved.
 
-2001-11-01  Richard M. Stallman  <rms@gnu.org>
+2007-06-25  David Kastrup  <dak@gnu.org>
 
-       * data.c (Fmake_local_variable): Doc fix.
+       * keymap.c (Fcurrent_active_maps): Add `position' argument.
+       (Fwhere_is_internal): Adjust call to `current-active-maps' to
+       cater for additional parameter.
 
-       * eval.c (Frun_hooks, Frun_hook_with_args_until_failure): Doc fix.
-       (Frun_hook_with_args_until_success, Frun_hook_with_args): Doc fix.
+       * keymap.h: Adjust number of parameters to `current-active-maps'.
 
-       * keymap.c (Fdescribe_buffer_bindings): Print character property
-       bindings along with or instead of the buffer local map.
-       Make the overriding maps override what they should.
+       * doc.c (Fsubstitute_command_keys): Adjust call of
+       `current-active-maps'.
 
-2001-11-01  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-06-25  David Kastrup  <dak@gnu.org>
 
-       * window.c (grow_mini_window): Fix typo in comment.
+       * callint.c (Fcall_interactively): Make the parsing of interactive
+       specs somewhat more readable.
 
-2001-11-01  Gerd Moellmann  <gerd@gnu.org>
+2007-06-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * xterm.c (x_scroll_bar_create): Check for width and height > 0.
-       (XTset_vertical_scroll_bar): Likewise.
+       * macterm.c (x_draw_fringe_bitmap) [MAC_OSX]: Extend fringe background
+       to scroll bar gap also when bitmap fills fringe.  Draw only foreground
+       if extended background has already been filled.
 
-       * xfns.c (x_build_heuristic_mask): Use four_corners_best
-       instead of IMAGE_BACKGROUND.
+2007-06-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * xfns.c (four_corners_best): Reindent.
+       * macgui.h (USE_CG_DRAWING): Don't require USE_ATSUI.
+       (USE_MAC_TOOLBAR): Require USE_CG_DRAWING.
 
-       * xfaces.c (Finternal_set_lisp_face_attribute_from_resource):
-       Handle :box so that it is possible to specify sexprs.
+       * macmenu.c (mac_dialog_modal_filter, Fx_popup_dialog) [MAC_OSX]:
+       Put special treatment for Fmessage_box, Fyes_or_no_p, and Fy_or_n_p
+       in #if 0 as it is not compatible with y-or-n-p-with-timeout.
+       (timer_check) [TARGET_API_MAC_CARBON]: Add extern.
+       [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Use QuitEventLoop
+       instead of QuitAppModalLoopForWindow.  Consolidate QuitEventLoop calls.
+       (pop_down_dialog) [TARGET_API_MAC_CARBON]: New function.
+       [TARGET_API_MAC_CARBON] (create_and_show_dialog): Use it for unwind.
+       Run timers during dialog popup.
+       (Fmenu_or_popup_active_p) [TARGET_API_MAC_CARBON]: Use popup_activated.
 
-2001-10-31  Eli Zaretskii  <eliz@is.elta.co.il>
+2007-06-21  Jason Rumney  <jasonr@gnu.org>
 
-       * s/hpux11.h: New file.
+       * image.c (convert_mono_to_color_image): Swap fore and background.
 
-2001-10-31  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-06-20  Jason Rumney  <jasonr@gnu.org>
 
-       * emacs.c (USAGE1): Show command line option --no-window-system
-       instead of --no-windows in usage.
-       (standard_args): Rename --no-windows to --no-window-system.
-       (bug_reporting_address): Follow Emacs coding conventions.
+       * w32bdf.c (w32_BDF_to_x_font): Unmap memory when finished.
+       (w32_free_bdf_font): Unmap memory not handle.
 
-       * eval.c (Fcommandp): Doc fix.
-       Change doc-string comments to `new style' [w/`doc:' keyword].
+2007-06-20  Sam Steingold  <sds@gnu.org>
 
-       * frame.c (Fframe_live_p): Doc fix.
+       * gmalloc.c (__morecore): Fix the declaration to comply with the
+       definition.
 
-       * buffer.c (selective-display-ellipses): Doc fix.
+2007-06-20  Juanma Barranquero  <lekktu@gmail.com>
 
-2001-10-31  Gerd Moellmann  <gerd@gnu.org>
+       * w32term.c (w32_delete_display): Remove leftover declaration.
+       (w32_define_cursor, w32_initialize): Make static.
 
-       * lread.c (to_multibyte): Fix computation of new read_buffer_size.
+       * w32.c (_wsa_errlist): Fix typo in error message.
+       (init_environment): Ignore any environment variable from the
+       registry having a null value.
 
-       * xfaces.c (realize_x_face): If C is not a single-byte character,
-       set the face's colors_copied_bitwise_p instead of the defaulted_p
-       members which have a different meaning.
-       (free_face_colors): Do nothing for a face whose colors have been
-       copied bitwise.
+2007-06-20  Glenn Morris  <rgm@gnu.org>
 
-       * dispextern.h (struct face) <colors_copied_bitwise_p>: New member.
+       * Makefile.in (LIBGIF): Default to -lgif.
 
-2001-10-31  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-06-17  Jason Rumney  <jasonr@gnu.org>
 
-       * marker.c, mocklisp.c: Change doc-string comments to `new style'
-       [w/`doc:' keyword].
+       * w32menu.c (add_menu_item): Don't use multibyte string functions on
+       unicode strings.
 
-2001-10-31  Gerd Moellmann  <gerd@gnu.org>
+2007-06-16  Juanma Barranquero  <lekktu@gmail.com>
 
-       * fns.c (require_unwind): Return Lisp_Object.
+       * xdisp.c (syms_of_xdisp) <auto-resize-tool-bars>:
+       Fix typo in docstring.
 
-2001-10-31  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-06-16  Eli Zaretskii  <eliz@gnu.org>
 
-       * keyboard.c (lucid-menu-bar-dirty-flag): Doc fix.
-       (last-input-char): Revert doc-string to be the same as the
-       doc-string of `last-input-event'.
+       * w32menu.c (add_menu_item): Escape `&' characters in menu items
+       and their keybindings.
 
-       * xdisp.c: Fix typos in comments.
+2007-06-15  Chong Yidong  <cyd@stupidchicken.com>
 
-2001-10-31  Gerd Moellmann  <gerd@gnu.org>
+       * composite.c (update_compositions): Fix last fix.
 
-       * window.c (grow_mini_window): Handle case that the root
-       window is already smaller than the nominal mininum height.
+2007-06-14  Jason Rumney  <jasonr@gnu.org>
 
-2001-10-30  Stefan Monnier  <monnier@cs.yale.edu>
+       * w32.c (get_process_times_fn): New function pointer.
+       (globals_of_w32): Intialize it if present in kernel32.dll.
+       (w32_get_internal_run_time): New function.
 
-       * emacs.c (main): Don't call keys_of_macros any more.
+       * editfns.c (Fget_internal_run_time) [WINDOWSNT]: Use it.
 
-       * lisp.h (keys_of_macros): Remove.
+2007-06-14  Kenichi Handa  <handa@etlken.m17n.org>
 
-       * macros.c (keys_of_macros): Remove.
+       * composite.c (update_compositions): Check the validness of
+       compositions.
 
-       * xfaces.c (Fface_attribute_relative_p): Declare args.
+2007-06-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-2001-10-30  Jason Rumney  <jasonr@gnu.org>
+       * frame.h (struct frame) [MAC_OS]: New member external_tool_bar.
+       (FRAME_EXTERNAL_TOOL_BAR) [MAC_OS]: Use it.
 
-       * w32fns.c (w32_to_x_charset): Increase size of XLFD charset buffer.
-       (enum_font_cb2): Ignore fonts with vertical orientation.
+       * macfns.c (mac_window) [USE_MAC_TOOLBAR]: Set toolbar_win_gravity.
+       (x_set_tool_bar_lines) [USE_MAC_TOOLBAR]: Set FRAME_EXTERNAL_TOOL_BAR.
 
-2001-10-30  Richard M. Stallman  <rms@gnu.org>
+       * macgui.h (USE_MAC_TOOLBAR): New define.
 
-       * keyboard.c (Finput_pending_p): Doc fix.
+       * macmenu.c [TARGET_API_MAC_CARBON] (menu_target_item_handler):
+       Return immediately unless popup is activated.
 
-2001-10-30  Gerd Moellmann  <gerd@gnu.org>
+       * macterm.c (x_draw_fringe_bitmap) [MAC_OSX]: Extend fringe
+       background to scroll bar gap.
+       (x_scroll_bar_create) [MAC_OSX]: Set bar->fringe_extended_p.
+       (XTset_vertical_scroll_bar) [MAC_OSX]: Put leftmost/rightmost
+       scroll bars on frame edge.  Check fringe background extension.
+       Don't clear extended fringe background area.
+       (TOOLBAR_IDENTIFIER, TOOLBAR_ICON_ITEM_IDENTIFIER)
+       (TOOLBAR_ITEM_COMMAND_ID_OFFSET, TOOLBAR_ITEM_COMMAND_ID_P)
+       (TOOLBAR_ITEM_COMMAND_ID_VALUE, TOOLBAR_ITEM_MAKE_COMMAND_ID):
+       [USE_MAC_TOOLBAR]: New macros.
+       (mac_move_window_with_gravity, mac_get_window_origin_with_gravity)
+       (mac_handle_toolbar_event, mac_image_spec_to_cg_image)
+       (mac_create_frame_tool_bar, update_frame_tool_bar, free_frame_tool_bar)
+       (mac_tool_bar_note_mouse_movement, mac_handle_toolbar_command_event)
+       [USE_MAC_TOOLBAR]: New functions.
+       (mac_handle_window_event) [USE_MAC_TOOLBAR]: Reposition window
+       manually if previous repositioning has failed.
+       (mac_handle_keyboard_event): Use precomputed event kind.
+       (XTread_socket) [USE_MAC_TOOLBAR]: Handle click in structure region
+       as tool bar item click.  Handle mouse movement over tool bar items.
 
-       * xterm.c (x_after_update_window_line): Don't run the code
-       clearing in borders for rows whose visible height is 0.
+       * macterm.h (struct mac_output) [USE_MAC_TOOLBAR]: New member
+       toolbar_win_gravity.
+       (struct scroll_bar) [MAC_OSX]: New member fringe_extended_p.
+       (update_frame_tool_bar, free_frame_tool_bar) [USE_MAC_TOOLBAR]:
+       Add externs.
 
-       * xdisp.c (clear_garbaged_frames): Redraw the frame only if its
-       resized_p flag is set.  If not set, use the much less flickering
-       method previously used.
+       * xdisp.c (update_tool_bar, redisplay_tool_bar, redisplay_window)
+       [USE_MAC_TOOLBAR]: Sync with GTK+ tool bar display.
 
-       * dispnew.c (change_frame_size_1): Set frame's resized_p.
+2007-06-14  Chong Yidong  <cyd@stupidchicken.com>
 
-       * frame.h (struct frame) <resized_p>: New member.
+       * image.c (search_image_cache): Remove unused variable.
 
-       * lread.c (to_multibyte): Ensure read_buffer is at least twice
-       as large as the number of bytes to convert.
+2007-06-13  Chong Yidong  <cyd@stupidchicken.com>
 
-       * lread.c (to_multibyte): New function.
-       (read1): Use it.
+       * xfns.c, xmenu.c: Link to xaw3d if available.
 
-2001-10-30  Eli Zaretskii  <eliz@is.elta.co.il>
+2007-06-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * msdos.h (FRAME_LINE_HEIGHT): Define (it's used by xmenu.c).
+       * dispextern.h (struct image) [HAVE_WINDOW_SYSTEM]: New members
+       frame_foreground and frame_background.
 
-2001-10-30  Gerd Moellmann  <gerd@gnu.org>
+       * image.c (lookup_image): Save frame foreground and background colors.
+       (search_image_cache): Check if saved and current frame colors match.
 
-       * xterm.c (x_draw_relief_rect): Correct bottom relief by 1 pixel.
-       (x_set_glyph_string_background_width): Set extends_to_end_of_line_p
-       if the row's fill_line_p is set and drawing the last glyph with
-       DRAW_IMAGE_{RAISED,SUNKEN}.
+2007-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * xdisp.c (clear_garbaged_frames): Call Fredraw_frame.
+       * regex.c (regex_compile): Remove the `regnum' counter.
+       Use bufp->re_nsub instead.  Add support for \(?N:RE\).
 
-2001-10-29  Stefan Monnier  <monnier@cs.yale.edu>
+2007-06-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * xmenu.c: Include coding.h and charset.h.
-       (Fx_popup_menu): Use FRAME_PTR and FRAME_FONT and FRAME_LINE_HEIGHT.
-       (Fx_popup_dialog): Use FRAME_PTR and enum scroll_bar_part.
-       (single_submenu, xmenu_show): Use ENCODE_SYSTEM.
-       Explicitly set wv->help.  Use `TRUE' rather than `True'.
-       (menu_help_callback): Use empty_string.
+       * term.c: Include intervals.h to declare Fget_text_property.
 
-       * w32menu.c (Fx_popup_menu): Explicitly init f, xpos, and ypos.
-       (Fx_popup_dialog): Explicitly init f.
-       (w32_menu_display_help): Use empty_string.
+2007-06-10  Jason Rumney  <jasonr@gnu.org>
 
-2001-10-29  Richard M. Stallman  <rms@gnu.org>
+       * w32fns.c (Fx_file_dialog): Take size from struct not pointer.
 
-       * fns.c (Frequire): Detect recursive try to require the same
-       feature 3 or more levels deep, and get error.
-       (require_unwind): New subroutine.
-       (require_nesting_list): New variable.
-       (syms_of_fns): Init and staticpro it.
+2007-06-08  Juanma Barranquero  <lekktu@gmail.com>
 
-       * print.c (print_object): Clarify indication of insertion type.
+       * callint.c (Fcall_interactively):
+       * editfns.c (Fdelete_and_extract_region):
+       * fileio.c (Fread_file_name):
+       * fns.c (Fmapconcat):
+       * keyboard.c (cmd_error_internal):
+       * keymap.c (Fkey_description):
+       * lread.c (openp):
+       * minibuf.c (read_minibuf):
+       * search.c (wordify):
+       * sunfns.c (sel_read):
+       * xdisp.c (Fformat_mode_line, syms_of_xdisp):
+       * xfns.c (x_default_scroll_bar_color_parameter):
+       * xmenu.c (menu_help_callback):
+       * xselect.c (Fx_get_atom_name):
+       * xterm.c (x_term_init): Use empty_unibyte_string.
 
-2001-10-29  Eli Zaretskii  <eliz@is.elta.co.il>
+2007-06-08  Dmitry Antipov  <dmantipov@yandex.ru>  (tiny change)
 
-       * coding.c (syms_of_coding): Document that locale-coding-system is
-       used for decoding input on X.
+       * alloc.c (init_strings): Initialize canonical empty strings.
+       (make_uninit_string, make_uninit_multibyte_string): Return appropriate
+       canonical empty string when the requested size is 0.
 
-       * window.c (Fscroll_left, Fscroll_right): Doc fix.
+       * emacs.c (empty_unibyte_string): Rename from empty_string.
+       (empty_multibyte_string): New canonical empty string.
+       (syms_of_emacs): Don't initialize empty_string.
 
-2001-10-29  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * lisp.h (STRING_SET_UNIBYTE): Return the canonical empty unibyte
+       string, if appropriate.
+       (empty_unibyte_string, empty_multibyte_string): New externs.
+       (empty_string): Remove extern.
 
-       * keyboard.c (Finput_pending_p): Fix typo in doc-string.
-       (echo-area-clear-hook): Properly DEFVAR_LISP and staticpro it.
+       * lread.c (syms_of_lread): Use empty_unibyte_string.
 
-2001-10-29  Gerd Moellmann  <gerd@gnu.org>
+2007-06-07  Jason Rumney  <jasonr@gnu.org>
 
-       * xterm.c (x_display_and_set_cursor): If cursor_in_echo_area,
-       use NO_CURSOR if cursor_in_non_selected_windows is false.
+       * s/ms-w32.h: Don't define HAVE_TZNAME.
 
-       * xfaces.c (Fface_font): Use UNSPECIFIEDP instead of NILP for
-       the slant attribute if FRAME is t.
+       * editfns.c (Fcurrent_time_zone): Remove hack for Japanese Windows.
 
-       * xfns.c (x_set_internal_border_width): Set frame garbaged
-       when X window doesn't exist yet.
+2007-06-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * xterm.c (x_after_update_window_line): Clear internal border
-       in different circumstances.
+       * mac.c (xrm_get_preference_database): Remove BLOCK_INPUT.
 
-       * xterm.c (XTread_socket) <KeyPress>: Don't use
-       STRING_CHAR_AND_LENGTH if nchars == nbytes.  From Kenichi Handa
-       <handa@etl.go.jp>.
+       * macfns.c (mac_get_window_bounds): Move extern to macterm.h.
+       (compute_tip_xy) [TARGET_API_MAC_CARBON]: Use GetGlobalMouse.
 
-2001-10-28  Eli Zaretskii  <eliz@is.elta.co.il>
+       * macmenu.c [TARGET_API_MAC_CARBON] (menu_target_item_handler):
+       Don't call next handler.
+       [TARGET_API_MAC_CARBON] (install_menu_target_item_handler):
+       Remove argument.  Install handler to application.
+       (set_frame_menubar): Don't change deep_p.
+       (mac_menu_show): Use FRAME_OUTER_TO_INNER_DIFF_X and
+       FRAME_OUTER_TO_INNER_DIFF_Y.
+       (DIALOG_BUTTON_COMMAND_ID_OFFSET, DIALOG_BUTTON_COMMAND_ID_P)
+       (DIALOG_BUTTON_COMMAND_ID_VALUE, DIALOG_BUTTON_MAKE_COMMAND_ID)
+       [HAVE_DIALOGS]: New macros.
+       [HAVE_DIALOGS] (mac_handle_dialog_event, create_and_show_dialog):
+       Use them.
+       (fill_menubar) [TARGET_API_MAC_CARBON]: Use CFString.
+
+       * macselect.c [MAC_OSX] (install_service_handler): Rename from
+       init_service_handler.  All callers changed.  Return OSStatus value.
+
+       * macterm.c (mac_begin_cg_clip): New arg F.  Call SetPortWindowPort.
+       All callers changed so as not to call SetPortWindowPort.
+       (mac_begin_cg_clip) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
+       (mac_draw_image_string_atsui) [USE_ATSUI]: New function created from
+       mac_draw_string_common.
+       (mac_draw_image_string_qd): Likewise.
+       (mac_draw_string_common): Use them.  Add INLINE.
+       (XTmouse_position, x_scroll_bar_report_motion) [TARGET_API_MAC_CARBON]:
+       Use FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y, and
+       GetGlobalMouse.
+       (x_set_mouse_pixel_position) [MAC_OSX]: Use FRAME_OUTER_TO_INNER_DIFF_X
+       and FRAME_OUTER_TO_INNER_DIFF_Y.
+       [TARGET_API_MAC_CARBON] (mac_handle_mouse_event): Likewise.
+       [USE_MAC_TSM] (mac_handle_text_input_event): Likewise.
+       (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Move code for
+       repositioning window to mac_handle_window_event.
+       (x_make_frame_invisible) [TARGET_API_MAC_CARBON]: Move code for
+       saving window location to mac_handle_window_event
+       [USE_MAC_FONT_PANEL] (mac_show_hide_font_panel): Install handler here.
+       (install_menu_target_item_handler): Remove argument in extern.
+       [TARGET_API_MAC_CARBON] (mac_event_to_emacs_modifiers):
+       Also accept command events.
+       (do_keystroke): New function created from XTread_socket.
+       (init_command_handler): Remove functions.
+       [TARGET_API_MAC_CARBON] (mac_handle_window_event): Reposition window
+       and save window location by kEventWindowShowing and kEventWindowHiding
+       handlers here.  Don't call next handler for window state change and
+       focus events.
+       (mac_handle_application_event, mac_handle_keyboard_event)
+       [TARGET_API_MAC_CARBON]: New functions.
+       (install_window_handler) [TARGET_API_MAC_CARBON]: Register handlers for
+       kEventWindowShowing and kEventWindowHiding events.  Move installation
+       of mouse, font, text input and menu target item handlers to
+       install_application_handler.
+       (install_application_handler) [TARGET_API_MAC_CARBON]: New function.
+       (mac_handle_cg_display_reconfig) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
+       New function.
+       (init_dm_notification_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
+       Register it.
+       (XTread_socket) [TARGET_API_MAC_CARBON]:
+       Consolidate SendEventToEventTarget calls.
+       Use FRAME_OUTER_TO_INNER_DIFF_X and FRAME_OUTER_TO_INNER_DIFF_Y.
+       Move application activation handler to mac_handle_application_event.
+       Move keyboard handler to mac_handle_keyboard_event.
+       (XTread_socket) [!TARGET_API_MAC_CARBON]: Use do_keystroke.
+       (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call
+       init_command_handler.  Call install_application_handler.
 
-       * m/ibms390.h: New file.  From Adam Thornton
-       <athornton@sinenomine.net>.
+       * macterm.h (mac_get_window_bounds): Move extern from macfns.c.
+       (FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y): New macros.
 
-2001-10-28  Gerd Moellmann  <gerd@gnu.org>
+2007-06-07  Glenn Morris  <rgm@gnu.org>
 
-       * xfns.c (x_build_heuristic_mask): Use x_alloc_image_color.
+       * emacs.c (main): Use `emacs-copyright' in --version output.
 
-       * xfns.c (x_build_heuristic_mask): Fix a bug not incrementing
-       a loop counter.
+2007-06-06  Chong Yidong  <cyd@stupidchicken.com>
 
-2001-10-28  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * image.c (xpm_load): Remove spurious call to xpm_init_color_cache.
 
-       * emacs.c: Use argv[0] instead of "emacs" when -t was specified.
+2007-06-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * keyboard.c: Change doc-string comments to `new style' [w/`doc:'
-       keyword].
-       Fix typos in comments.
+       * macfns.c (mac_window): Replace WindowPtr with WindowRef.
 
-       * emacs.c (bug_reporting_address): New function.
-       Use it when displaying usage message.
+       * macgui.h: Replace WindowPtr with WindowRef.
 
-       * minibuf.c (read_minibuf): Remove unused external declaration of
-       variable `Qread_only'.
+       * macmenu.c: Replace MenuHandle and GetMenuHandle with MenuRef and
+       GetMenuRef, respectively.  Replace WindowPtr with WindowRef.
+       Replace ControlHandle with ControlRef.
+       (install_menu_quit_handler): Rename arg MENU_HANDLE to ROOT_MENU.
 
-       * keymap.c (access_keymap): Remove unused variable `charset'.
+       * macterm.c: Replace MenuHandle and GetMenuHandle with MenuRef and
+       GetMenuRef, respectively.  Replace WindowPtr with WindowRef.
+       Replace ControlHandle with ControlRef.
+       (USE_CARBON_EVENTS): Remove.  Use TARGET_API_MAC_CARBON instead.
+       [MAC_OS8] (do_get_menus): Rename variable `menu_handle' to `menu'.
 
-2001-10-28  Miles Bader  <miles@gnu.org>
+       * macterm.h (struct scroll_bar): Rename member control_handle_low
+       and control_handle_high to control_ref_low and control_ref_high.
+       All uses changed.
+       (SCROLL_BAR_CONTROL_REF, SET_SCROLL_BAR_CONTROL_REF): Rename from
+       SCROLL_BAR_CONTROL_HANDLE and SET_SCROLL_BAR_CONTROL_HANDLE,
+       respectively.  All uses changed.
+       (XCreatePixmap, XCreatePixmapFromBitmapData, XSetWindowBackground)
+       (install_window_handler, remove_window_handler): Replace WindowPtr
+       with WindowRef in externs.
 
-       * xfaces.c (merge_face_heights): Handle TO being relative as well.
-       Remove #ifdef'd-out code.
-       (Fface_attribute_relative_p, Fmerge_face_attribute): New functions.
-       (syms_of_xfaces): Initialize them.
+2007-06-05  Juanma Barranquero  <lekktu@gmail.com>
 
-2001-10-27  Jason Rumney  <jasonr@gnu.org>
+       * xfaces.c (Finternal_lisp_face_p): Signal error for face alias loops.
 
-       * w32fns.c (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
-       <WM_EMACS_DESTROY_CARET, WM_EMACS_TRACK_CARET>: Track cursor
-       position using the system caret.
+2007-06-03  Nick Roberts  <nickrob@snap.net.nz>
 
-       * w32term.c (w32_system_caret_hwnd, w32_system_caret_width)
-       (w32_system_caret_height, w32_system_caret_x)
-       (w32_system_caret_y): New variables for tracking system caret.
-       (w32_initialize): Initialize them.
-       (x_display_and_set_cursor): Make system caret follow the active cursor.
+       * keyboard.c (discard_mouse_events): Add GPM_CLICK_EVENT case.
 
-       * w32term.h (WM_EMACS_TRACK_CARET, WM_EMACS_DESTROY_CARET):
-       New messages types.
+       * frame.c (Fmouse_position, Fmouse_pixel_position):
+       Condition on HAVE_GPM too.
 
-       * w32term.c (note_mouse_highlight): Clear old help_echo.
+       * term.c (term_mouse_highlight): Remove unused variables.
+       (Fterm_open_connection): Set gpm_zerobased to 1.
+       (term_mouse_movement, term_mouse_click, handle_one_term_event):
+       Use zero based co-ordinates.
+       (handle_one_term_event): Report a drag as mouse movement too.
 
-2001-10-27  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * Makefile.in (MOUSE_SUPPORT): Define for HAVE_GPM.
 
-       * xterm.c: Fix typo in a comment.
+2007-06-03  Chong Yidong  <cyd@stupidchicken.com>
 
-       * emacs.c: Fix typos in comments.
-       Remove unnecessary spaces.
-       Change doc-string comments to `new style' [w/`doc:' keyword].
-       (USAGE2): Fix typos in usage string.
+       * image.c (search_image_cache): New function.  Require background
+       color match if background color is unspecified in the image spec.
+       (uncache_image, lookup_image): Use it.
 
-       * xterm.c: Fix typo in a comment.
+2007-06-01  Juanma Barranquero  <lekktu@gmail.com>
 
-       * lisp.h (gdb_lisp_params): Remove code in #if 0 which is now in
-       emacs.c.
+       * window.c (Fshrink_window): Reflow docstring.
 
-2001-10-27  Gerd Moellmann  <gerd@gnu.org>
+2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 
-       * xdisp.c (move_it_vertically_backward): Use 2/3 line_height
-       instead of 1/2 line_height in the heuristic for skipping
-       farther backward when target_y was not reached.
+       * Version 22.1 released.
 
-       * sound.c (sound_perror): Unblock SIGIO, turn on atimers.
-       Display errno only if non-zero.
-       (sound_warning): New function.
-       (vox_configure): Don't treat failing to set sample rate as error.
-       (various places): Improve error messages.
+2007-06-01  Richard Stallman  <rms@gnu.org>
 
-2001-10-26  Eli Zaretskii  <eliz@is.elta.co.il>
+       * xfns.c (x_encode_text): Add GCPRO.
 
-       * fileio.c (Faccess_file): Run the argument filename through
-       Fexpand_file_name, before using it.
+2007-06-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * dispnew.c (syms_of_display) <visible-bell>: Add a reference to
-       ring-bell-function.  Suggested by Alf-Ivar Holm <alfh@ifi.uio.no>
+       * xfns.c (x_set_name_internal): Save encoded name before
+       x_encode_text in case string data is relocated.
 
-2001-10-26  Gerd Moellmann  <gerd@gnu.org>
+2007-05-31  Richard Stallman  <rms@gnu.org>
 
-       * insdel.c (insert_1_both): Do nothing if NCHARS == 0.
+       * buffer.c (syms_of_buffer): Doc fix.
 
-       * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
-       Fix clearing in the case of scroll bars on the right.
+2007-05-30  Nick Roberts  <nickrob@snap.net.nz>
 
-2001-10-26  Juanma Barranquero  <lektu@terra.es>
+       * sysdep.c (init_sys_modes): Add rather than replace with
+       O_NONBLOCK.
 
-       * w32gui.h (XImage): Add a dummy typedef.
+       * frame.c [HAVE_GPM] (Fset_mouse_pixel_position): Add call to
+       term_mouse_moveto.
 
-2001-10-26  Gerd Moellmann  <gerd@gnu.org>
+       * termhooks.h (term_mouse_moveto): New extern.
 
-       * xfns.c (XScreenNumberOfScreen): Fix struct to pointer comparison.
+       * term.c (mouse_face_window): Rename...
+       (Qmouse_face_window): ...to this.
+       (term_show_mouse_face, term_clear_mouse_face)
+       (term_mouse_highlight): Use Qmouse_face_window.
+       (term_mouse_moveto): New function.
+       (term_mouse_position): Make it work.
+       (syms_of_term): Uncomment assignment to mouse_position_hook.
+       Staticpro Qmouse_face_window.
 
-2001-10-25  Eli Zaretskii  <eliz@is.elta.co.il>
+2007-05-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * frame.c (Fframe_parameter): Fix last change.
+       * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t
+       around current_column call.
 
-       * fileio.c: Revert last change (which removed old commented-out
-       version of expand-file-name).  Add a comment that explains why
-       this old version should not be removed.
+2007-05-26  Dan Nicolaescu  <dann@ics.uci.edu>
 
-2001-10-25  Gerd Moellmann  <gerd@gnu.org>
+       * xfaces.c (syms_of_xfaces): Delete stray semicolon.
+       * xdisp.c (next_element_from_buffer):
+       * window.c (delete_window):
+       * term.c (term_mouse_highlight):
+       * msdos.c (getdefdir):
+       * macterm.c (mac_create_bitmap_from_bitmap_data)
+       (init_font_name_table):
+       * fns.c (Fsxhash):
+       * data.c (Fmake_local_variable):
+       * ccl.c (ccl_driver): Likewise.
 
-       * frame.c (Fframe_parameter): Fix a bug whereby some
-       ``artificial'' frame parameters, like `minibuffer' were not
-       obtained by calling Fframe_parameters.
+2007-05-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * xterm.c (show_mouse_face): Clean up.  Recognize overwritten
-       cursor differently.
+       * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event):
+       Call mac_wakeup_from_rne on window size change.
 
-       * xdisp.c (move_it_vertically_backward): Compute line height
-       differently.  Add heuristic to try to be more compatible to 20.x.
+2007-05-25  Chong Yidong  <cyd@stupidchicken.com>
 
-2001-10-25  Stefan Monnier  <monnier@cs.yale.edu>
+       * image.c (uncache_image): Fix typo.
 
-       * lisp.h (make_fixnum_or_float): Coerce double to int explicitly.
+2007-05-23  Johannes Weiner  <hannes@saeurebad.de>  (tiny change)
 
-       * editfns.c (text_property_stickiness): Fix Lisp_Object used as
-       boolean.
+       * keyboard.c (make_lispy_movement): Condition on HAVE_GPM too.
 
-2001-10-25  Miles Bader  <miles@gnu.org>
+2007-05-22  Richard Stallman  <rms@gnu.org>
 
-       * xfns.c (png_load): Make sure SPECIFIED_BG is a string.
-       BG is a pointer to a structure, not a structure.
-       (gif_format, png_format): Add missing commas.
+       * xterm.c (x_connection_closed): Remove NO_RETURN.
 
-2001-10-24  Richard M. Stallman  <rms@gnu.org>
+2007-05-22  Martin Rudalics  <rudalics@gmx.at>
 
-       * xfaces.c (Fface_attributes_as_vector): New function.
-       (syms_of_xfaces): Defsubr it.
+       * syntax.c (scan_words): Fix arg to UPDATE_SYNTAX_TABLE_BACKWARD.
 
-2001-10-24  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-05-21  Chong Yidong  <cyd@stupidchicken.com>
 
-       * dispnew.c (sync_window_with_frame_matrix_rows): Remove unused
-       variable `area'.
+       * image.c (uncache_image): New function.
+       (Fimage_refresh): New function.
 
-2001-10-25  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-05-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * search.c (scan_newline): Remove unused variable `selective_display'.
+       * Makefile.in: Move GPM check outside HAVE_X_WINDOWS.
 
-2001-10-25  Miles Bader  <miles@gnu.org>
+2007-05-20  Nick Roberts  <nickrob@snap.net.nz>
 
-       * dispextern.h (struct image): Add `background',
-       `background_valid', and `background_transparent' fields.
-       (image_background, image_background_transparent): New declarations.
-       (IMAGE_BACKGROUND, IMAGE_BACKGROUND_TRANSPARENT): New macros.
-       * xfns.c (image_background, image_background_transparent)
-       (four_corners_best): New functions.
-       (xpm_format, png_format, jpeg_format, tiff_format, gif_format)
-       (gs_format): Add `:background' entry.
-       (lookup_image): Set IMG's background color if specified.
-       (pbm_load, xbm_load_image, png_load): Set IMG's background field
-       when appropriate.
-       (x_clear_image_1): Reset `background_valid' and
-       `background_transparent_valid' fields.
-       (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of
-       calculating it here.  Set IMG's background_transparent field.
-       (enum xpm_keyword_index): Add XPM_BACKGROUND.
-       (enum png_keyword_index): Add PNG_BACKGROUND.
-       (enum jpeg_keyword_index): Add JPEG_BACKGROUND.
-       (enum tiff_keyword_index): Add TIFF_BACKGROUND.
-       (enum gif_keyword_index): Add GIF_BACKGROUND.
-       (enum gs_keyword_index): Add GS_BACKGROUND.
-       (pbm_load, png_load, jpeg_load, tiff_load, gif_load):
-       Pre-calculate image background color where necessary.
-       * xterm.c (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and
-       `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background
-       color to use for image glyph reliefs.
+       * config.in, keyboard.c, Makefile.in, sysdep.c, term.c,
+       * termhooks.h: Use HAVE_GPM instead of HAVE_GPM_H.
 
-2001-10-24  Gerd Moellmann  <gerd@gnu.org>
+2007-05-20  Nick Roberts  <nickrob@snap.net.nz>
 
-       * xterm.c (x_draw_glyphs): Don't check for cursor overwriting
-       in full-width rows.
+       * keyboard.c (make_lispy_event): Make case GPM_CLICK_EVENT
+       conditional on [HAVE_GPM_H].
 
-       * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
-       Fix clearing of area not covered by scroll bar.
+2007-05-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-2001-10-24  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+       * syntax.c (skip_chars): Update syntax-table only after we checked that
+       the new location is valid.
 
-       * xterm.c (x_insert_glyphs): Remove unused variables `real_end'
-       and `real_start'.
-       (x_draw_image_foreground): Remove unused variables `mask' and `xgcv'.
-       (glyph_rect): Remove unused variable `area'.
+2007-05-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-2001-10-24  Gerd Moellmann  <gerd@gnu.org>
+       * macterm.c (x_calc_absolute_position): Add BLOCK_INPUT around
+       mac_get_window_bounds.
 
-       * xdisp.c: Change #ifdef GLYPH_DEBUG to #if.
+2007-05-20  Nick Roberts  <nickrob@snap.net.nz>
 
-       * xdisp.c (try_window_reusing_current_matrix): Use row_containing_pos.
-       (row_containing_pos): Take additional argument DY.
-       Treat rows ending in middle of char differently.
-       (display_line): Handle tabs on window systems differently.
+       * Makefile.in (LIBGPM): Allow it to be set from configure.
+       If set then link Emacs with it.
 
-       * xterm.c, w32term.c (fast_find_position): Call row_containing_pos
-       with additional argument.
+       * config.in: Regenerate.
 
-       * dispextern.h (row_containing_pos): Adjust prototype.
+       * lisp.h (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
+       New externs.
+
+       * termhooks.h [HAVE_GPM_H] (enum event_kind): Add GPM_CLICK_EVENT.
+       Include gpm.h.
+       (handle_one_term_event, term_gpm): New externs.
+
+       * sysdep.c [HAVE_GPM_H] (init_sys_modes): Make gpm_fd nonblocking
+       and allow it to be interrupted by SIGIO.
+
+       * process.c (gpm_wait_mask, max_gpm_desc): New variables.
+       (wait_reading_process_output): Wait on gpm_fd too.
+       (add_gpm_wait_descriptor, delete_gpm_wait_descriptor)): New functions.
+       (add_gpm_wait_descriptor_called_flag): New variable.
+       (delete_keyboard_wait_descriptor): Check gpm_wait_mask.
+
+       * keyboard.c [HAVE_GPM_H] (Qmouse_fixup_help_message)
+       (make_lispy_movement, tracking_off, Ftrack_mouse, some_mouse_moved)
+       (show_help_echo, readable_events, kbd_buffer_get_event, init_keyboard):
+       Extend HAVE_MOUSE ifdefs to HAVE_GPM_H.
+       (make_lispy_event): Add case GPM_CLICK_EVENT.
+       (read_avail_input): Handle mouse input.
+
+       * term.c (write_glyphs_with_face): New function.
+       [HAVE_GPM_H]: Include buffer.h, sys/fcntl.h.
+       (mouse_face_beg_row, mouse_face_beg_col, mouse_face_end_row)
+       (mouse_face_end_col, mouse_face_past_end, mouse_face_window)
+       (mouse_face_face_id, term_gpm, pos_x, pos_y)
+       (last_mouse_x, last_mouse_y): New variables.
+       (term_show_mouse_face, term_clear_mouse_face, fast_find_position)
+       (term_mouse_highlight, term_mouse_movement, term_mouse_position)
+       (term_mouse_click, handle_one_term_event, Fterm_open_connection)
+       (Fterm_close_connection): New functions.
+       (term_init): Initialise mouse_face_window.
+
+2007-05-19  Chong Yidong  <cyd@stupidchicken.com>
 
-       * xdisp.c (inhibit_try_window_id, inhibit_try_window_reusing)
-       (inhibit_try_cursor_movement) [GLYPH_DEBUG]: New variables.
-       (try_window_id, try_window_reusing_current_matrix)
-       (try_cursor_movement) [GLYPH_DEBUG]: Don't run if inhibited.
-       (syms_of_xdisp) [GLYPH_DEBUG]: DEFVAR_BOOL the variables.
+       * xdisp.c (redisplay_window): If first window line is a
+       continuation line, recompute the new window start instead of
+       recentering.
 
-2001-10-24  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-05-18  Glenn Morris  <rgm@gnu.org>
 
-       * xmenu.c: Spell the name of Emacs properly (GNU Emacs instead of
-       gnuemacs).
-       (HAVE_BOXES): Fix typo in comment.
-       (push_menu_pane): Fix typo in comment.
+       * m/alpha.h (ORDINARY_LINK): No longer define on OpenBSD.
+       Suggested by Alfred M. Szmidt <ams@gnu.org>.
 
-       * xdisp.c (display_prop_string_p): Remove unused local declaration
-       of `Qwhen'.
-       (single_display_prop_string_p): Remove unused local declarations
-       of `Qwhen' and `Qmargin'.
-       (string_buffer_position): Remove unused variable `around'.
-       (store_frame_title): Remove unused variable `width'.
+2007-05-17  Glenn Morris  <rgm@gnu.org>
 
-       * window.c: Don't define max.
-       (coordinates_in_window): Remove unused variable `uy'.
+       * m/macppc.h (ORDINARY_LINK): No longer define on OpenBSD.
 
-       * widget.c: Don't define max.
+2007-05-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * process.c: Don't define max.
-       (create_process): Remove unused variable `buffer'.
+       * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Also convert
+       dead key repeat and up events.
 
-2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+2007-05-14  Chong Yidong  <cyd@stupidchicken.com>
 
-       * xfaces.c (Finternal_set_lisp_face_attribute): Fix compilation error.
+       * image.c (pbm_load): Check image size for monochrome pbm.
 
-2001-10-23  Eli Zaretskii  <eliz@is.elta.co.il>
+2007-05-13  Chong Yidong  <cyd@stupidchicken.com>
 
-       * xfaces.c (Finternal_set_lisp_face_attribute)
-       [HAVE_WINDOW_SYSTEM]: Don't do anything for QCfont unless the
-       frame is on a windowed display.
+       * xterm.c (XTread_socket): Revert last change.
 
-2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+2007-05-12  Chong Yidong  <cyd@stupidchicken.com>
 
-       * dispnew.c (sync_window_with_frame_matrix_rows):
-       Fix handling of windows which aren't full-width, fix handling
-       of marginal areas.
+       * image.c (pbm_load): Correctly check image size for greyscale pbm.
 
-       * lread.c (syms_of_lread) <recursive-load-depth-limit>: Raise to 50.
+       * xterm.c (XTread_socket): Yet Another Uncaught X Error Crash (YAUXEC).
 
-2001-10-23  Andreas Schwab  <schwab@suse.de>
+2007-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * m/macppc.h [LINUX]: Undef LD_SWITCH_SYSTEM_TEMACS and override
-       LD_SWITCH_MACHINE_TEMACS with "-Xlinker -znocombreloc".
+       * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object
+       mixup (YAILOM).
 
-2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+2007-05-07  Andreas Schwab  <schwab@suse.de>
 
-       * xterm.c (x_draw_glyphs): Remove parameters READ_START and
-       REAL_END.  Notice if cursor gets overwritten.
-       (notice_overwritten_cursor): Take X positions as parameters.
-       (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p
-       around call to x_draw_glyphs.
+       * keymap.c (Flookup_key): Fix typo in last change.
 
-2001-10-23  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * syntax.c (modify-syntax-entry): Fix argument names (use CHAR
-       instead of C) and usage.
+       * keymap.c (Fdefine_key, Flookup_key): Only do the 0x80->meta_modifier
+       mapping for unibyte strings.
 
-       * editfns.c (char-to-string): Fix argument names (use CHAR instead
-       of C) and usage.
+2007-05-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * xfns.c (Fx_show_tip): Remove unused variables `buffer', `top',
-       `left', `max_width' and `max_height'.
+       * macmenu.c (mac_dialog_show): Apply 2007-04-27 change for xmenu.c.
+       (Fx_popup_dialog) [MAC_OSX]: Likewise.
 
-2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+2007-04-29  Richard Stallman  <rms@gnu.org>
 
-       * xdisp.c (display_line): For a tab continued to the next line,
-       set row's ends_in_middle_of_char_p.
+       * insdel.c (replace_range): For undo, record insertion first.
 
-2001-10-22  Gerd Moellmann  <gerd@gnu.org>
+2007-04-29  Andreas Schwab  <schwab@suse.de>
 
-       * xdisp.c (display_line): Fix computation of continuation lines
-       width for TABs.
+       * lisp.h (VECSIZE): Use OFFSETOF.
 
-2001-10-22  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+2007-04-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * xdisp.c (build_desired_tool_bar_string): Remove unused variable
-       `Qlaplace'.
+       * xdisp.c (try_window_reusing_current_matrix): Fix number of
+       disabled lines.
 
-       * fileio.c: Remove unused code.
+2007-04-28  Richard Stallman  <rms@gnu.org>
 
-2001-10-22  Miles Bader  <miles@gnu.org>
+       * lread.c (read_escape): In a string, \s is always space.
 
-       * lisp.h (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL)
-       (DEFVAR_INT, DEFVAR_PER_BUFFER, DEFVAR_KBOARD):
-       Remove `DOC_STRINGS_IN_COMMENTS' cases.
+2007-04-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-2001-10-21  Jason Rumney  <jasonr@gnu.org>
+       * xmenu.c (xdialog_show): Call Fredisplay before showing the dialog.
 
-       * w32term.c (x_erase_phys_cursor): Remove inverse_p again.
+       * gtkutil.c (xg_update_menubar, create_menus): Create empty
+       submenu for menu bar items.
 
-2001-10-21  Eli Zaretskii  <eliz@is.elta.co.il>
-
-       * mocklisp.c (Fml_if, Fml_provide_prefix_argument)
-       (Finsert_string): Avoid the multi-line string literals warning.
-
-2001-10-22  Miles Bader  <miles@gnu.org>
-
-       * doc.c (Vhelp_manyarg_func_alist): Variable removed.
-       (Fdocumentation): Don't use it.
-       (syms_of_doc): Don't initialize it.
-
-       * keyboard.c (Ftrack_mouse): Add usage: string to doc string.
-       * print.c (Fwith_output_to_temp_buffer): Likewise.
-       * window.c (Fsave_window_excursion): Likewise.
-       * editfns.c (Fsave_excursion, Fsave_current_buffer)
-       (Fsave_restriction): Likewise.
-       * eval.c (Frun_hooks, Frun_hook_with_args)
-       (Frun_hook_with_args_until_failure)
-       (Frun_hook_with_args_until_success, Ffuncall, For, Fand, Fif)
-       (Fcond, Fprogn, Fprog1, Fprog2, Fsetq, Fquote, Ffunction, Fdefun)
-       (Fdefmacro, Fdefvar, Fdefconst, FletX, Flet, Fwhile, Fcatch)
-       (Funwind_protect, Fcondition_case): Likewise.
-       * coding.c (Ffind_operation_coding_system): Likewise.
-       * keyboard.c (Ftrack_mouse): Likewise.
-
-2001-10-21  Miles Bader  <miles@gnu.org>
-
-       * fns.c (Fappend, Fconcat, Fvconcat, Fnconc, Fwidget_apply)
-       (Fmake_hash_table): Add usage: string to doc string.
-       * editfns.c (Finsert, Finsert_and_inherit, Finsert_before_markers)
-       (Fmessage, Fmessage_box, Fmessage_or_box, Fpropertize, Fformat)
-       (Fencode_time, Finsert_and_inherit_before_markers): Likewise.
-       * mocklisp.c (Finsert_string, Fml_if, Fml_provide_prefix_argument)
-       (Fml_prefix_argument_loop): Likewise.
-
-2001-10-21  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * fileio.c (Finsert_file_contents): Remove unused variable `gap_size'.
-
-       * sysdep.c (init_sys_modes): Change doc-string comments to `new
-       style' [w/`doc:' keyword].
-
-       * data.c, fileio.c, indent.c, print.c, search.c, sound.c,
-       * sunfns.c, textprop.c, undo.c, xselect.c: Change doc-string
-       comments to `new style' [w/`doc:' keyword].
-
-2001-10-21  Jason Rumney  <jasonr@gnu.org>
-
-       * w32fns.c (Fx_file_dialog): Pass a filter to GetOpenFileName.
-
-       * w32term.c (remember_mouse_glyph): New function.
-       (w32_mouse_position): Use it.
-       (note_mouse_movement): If the mouse moved off the glyph, remember
-       its new position.
-
-       * w32term.h (struct w32_output): Correct spelling of x_compatible.
-       (w32_display_info): Add mouse_face_overlay.
-
-       * w32term.c (notice_overwritten_cursor): Renamed from
-       note_overwritten_text_cursor.  Rewritten to take glyph widths into
-       account.
-       (x_y_to_hpos_vpos): Add parameter BUFFER_ONLY_P.
-       (fast_find_string_pos): New function.
-       (fast_find_position): Return the correct vpos.  Add parameter
-       STOP.  In the final row, stop before glyphs having STOP as object.
-       Don't consider glyphs that are not from a buffer.
-       (fast_find_position) [0]: Add a presumably more correct version
-       for after 21.1.
-       (expose_window_tree, expose_frame): Don't compute intersections here.
-       (expose_window): Do it here instead.
-       (expose_window_tree, expose_window, expose_line): Return 1 when
-       overwriting mouse-face.
-       (expose_window): If W is the window currently being updated, mark
-       the frame garbaged.
-       (expose_frame): If mouse-face was overwritten, redo it.
-       (x_use_underline_position_properties): New variable.
-       (syms_of_xterm): DEFVAR_BOOL it.
-       (x_draw_glyph_string): Add comment to use it in future.
-       (x_draw_glyph_string): Restore clipping after drawing box.
-       Fix a computation of the underline position.
-       (w32_get_glyph_string_clip_rect): Minor cleanup.
-       (x_fill_stretch_glyph_string): Remove an assertion.
-       (x_produce_glyphs): Don't convert multibyte characters
-       to unibyte characters in unibyte buffers.
-       (cursor_in_mouse_face_p): New function.
-       (x_draw_stretch_glyph_string): Use it to choose a different GC
-       when drawing a cursor within highlighted text.  Don't draw
-       background again if it has already been drawn.
-       (x_draw_glyph_string_box): Don't draw a full-width
-       box just because the glyph row's full_width_p flag is set.
-       (x_draw_glyphs): Fix computation of rightmost x for
-       full-width rows.
-       (x_dump_glyph_string): Put in #if GLYPH_DEBUG.
-       (w32_draw_relief_rect): Extend left shadow to the bottom and left;
-       change bottom shadow accordingly.  Some cleanup.
-       (x_update_window_end): Handle overwritten mouse face
-       also for tool bar windows.
-       (show_mouse_face): Set the glyph row's mouse_face_p flag also when
-       DRAW is DRAW_IMAGE_RAISED.
-       (clear_mouse_face): Return 1 if text with mouse face was
-       actually redrawn.  Make the function static.
-       Reset dpyinfo->mouse_face_overlay otherwise note_mouse_highlight might
-       optimize away highlighting if we pass over that same overlay again.
-       (note_mouse_highlight): Call mouse_face_overlay_overlaps
-       to detect a case where we have to highlight a different region
-       despite not having left the currently highlighted region.
-       Set mouse_face_overlay in the x_display_info.  Avoid changing the
-       mouse pointer shape when show_mouse_face has already done it, or
-       there is no need.  Handle mouse-face and help-echo in strings.
-       (glyph_rect): New function.
-       (w32_mouse_position): Use it to raise the threshold for mouse
-       movement event generation.
-       (w32_initialize_display_info): Initialize the x_display_info's
-       mouse_face_overlay.
-       (w32_set_vertical_scroll_bar): Don't clear a zero height
-       or width area.
-       (w32_set_vertical_scroll_bar, x_scroll_bar_create): Don't configure
-       a widget to zero height.
-
-       * w32menu.c (single_submenu, w32_menu_show) [!HAVE_MULTILINGUAL_MENU]:
-       Protect unibyte strings created by replacing their multibyte
-       equivalents in menu_items.
-       (w32_menu_show): Don't overwrite an item's name with its key
-       description in case the description is a multibyte string.
-       (single_submenu): Some cleanup.
-
-       * w32fns.c (x_laplace_read_row, x_laplace_write_row): Removed.
-       (postprocess_image): New function.
-       (lookup_image): Call it for all image types except PostScript.
-       (x_kill_gs_process): Call postprocess_image.
-       (tiff_error_handler, tiff_warning_handler): New functions.
-       (tiff_load): Install them as handlers.
-       (x_kill_gs_process): Recognize if someone has cleared the image
-       cache under us.
-       (valid_image_p): Protect better against invalid image
-       specifications.  Previous code could signal an error.
-       (Fx_hide_tip, Fshow_tip): Doc fix.
-       (Fv_max_tooltip_size): New variable.
-       (syns_of_xfns): DEFVAR_LISP it.
-       (Fx_show_tip): Add parameter TEXT.  Set the tip frame's root
-       window buffer to *tip* right after creating the frame.  Set frame's
-       window_width.  Use a maximum tooltip size specified by
-       Vx_max_tooltip_size, if that has valid contents.
-       (compute_tip_xy): Add parameters WIDTH and HEIGHT.
-       Make sure the tooltip is completely visible.
-       (x_create_tip_frame): Set tooltip buffer's truncate-lines to nil.
-       (Fx_create_frame): Adjust the frame's height for presence
-       of the tool bar before calling x_figure_window_size.
-       (x_set_tool_bar_lines): Clear the tool bar window's current matrix
-       when the window gets smaller.
-       (x_set_foreground_color): Set frame's cursor_pixel.
-       (x_set_foreground_color, x_set_background_color): Cleaned up.
-       (x_set_font): Handle case of x_new_fontset returning the same name
-       as before, although there was a change in fontsets.
-
-2001-10-21  Miles Bader  <miles@gnu.org>
-
-       * data.c (Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior)
-       (Flogxor): Add usage: string to doc string.
-       * charset.c (Fstring): Likewise.
-       * callproc.c (Fcall_process_region, Fcall_process): Likewise.
-       * alloc.c (Fmake_byte_code, Fvector, Flist): Likewise.
-
-2001-10-21  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
-
-       * buffer.c: Reindent DEFUNs and DEFVARs with doc: keywords.
-
-       * alloc.c: Reindent DEFUNs with doc: keywords.
-
-       * abbrev.c (Finsert_abbrev_table_description): Reindent.
-
-       * frame.c: Change doc-string comments to `new style' [w/`doc:'
-       keyword].
-
-See ChangeLog.9 for earlier changes.
+See ChangeLog.10 for earlier changes.
 
 ;; Local Variables:
 ;; coding: iso-2022-7bit
 ;; add-log-time-zone-rule: t
 ;; End:
 
-    Copyright (C) 2001, 2002, 2003, 2004, 2005,
-       2006, 2007 Free Software Foundation, Inc.
+    Copyright (C) 2007 Free Software Foundation, Inc.
 
   This file is part of GNU Emacs.
 
@@ -28541,4 +2516,4 @@ See ChangeLog.9 for earlier changes.
   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.
 
-;;; arch-tag: 5dcc435f-4038-4141-b3bf-5be51cd76bd4
+;; arch-tag: dfb6ad96-1550-4905-9e53-d2059ee84c40
diff --git a/src/ChangeLog.10 b/src/ChangeLog.10
new file mode 100644 (file)
index 0000000..c5e7bc6
--- /dev/null
@@ -0,0 +1,27939 @@
+2007-04-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * Branch for 22.1.
+
+2007-04-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (redisplay_window): Use BEG_UNCHANGED and END_UNCHANGED
+       values of the actual window.
+
+2007-04-23  Richard Stallman  <rms@gnu.org>
+
+       * process.c (Fstart_process): Doc fix.
+
+2007-04-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * process.c (Fstart_process): Doc fix.
+
+2007-04-22  Richard Stallman  <rms@gnu.org>
+
+       * abbrev.c (Fdefine_abbrev): Doc fix.
+
+       * keymap.c (Fdefine_key): Minor doc fix.
+
+2007-04-21  Glenn Morris  <rgm@gnu.org>
+
+       * keymap.c (Fdefine_key): Fix info ref in doc string.
+
+2007-04-20  Glenn Morris  <rgm@gnu.org>
+
+       * sysdep.c (init_system_name): Don't accept localhost.localdomain.
+
+2007-04-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * minibuf.c (Fminibuffer_contents, Fminibuffer_contents_no_properties)
+       (Fminibuffer_completion_contents, Fdelete_minibuffer_contents):
+       Doc fixes.
+
+2007-04-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * dispnew.c (adjust_frame_glyphs_for_frame_redisplay):
+       Set garbaged flag in presence of window margins.
+       (showing_window_margins_p): New function.
+
+       * xdisp.c (cursor_row_p): Only end row on newline if it's a
+       display string.  Suggested by Lennart Borgman.
+
+2007-04-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * alloc.c (mem_insert): Set min_heap_address and max_heap_address
+       if they are not yet initialized.
+
+2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (redisplay_window): When deciding whether or not to
+       recenter, don't use the reset values of BEG_UNCHANGED and
+       END_UNCHANGED.
+
+2007-04-13  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (Fkill_buffer): gcpro BUF during kill_buffer_processes
+       and check that buffer is still alive upon return.
+
+2007-04-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c [!TARGET_API_MAC_CARBON]: Include Displays.h.
+       (mac_screen_config_changed): New variable.
+       (mac_handle_dm_notification, init_dm_notification_handler)
+       (mac_get_screen_info): New functions.
+       [MAC_OS8] (main): Call init_dm_notification_handler.
+       (mac_initialize) [MAC_OSX]: Likewise.
+       (XTread_socket): Call mac_get_screen_info if screen config changed.
+       (mac_initialized): Make static.
+       (mac_initialize_display_info): Remove function.
+       (mac_term_init): Call mac_get_screen_info.  Add partial contents of
+       mac_initialize_display_info.
+
+2007-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (xrm_get_preference_database, Fmac_get_preference)
+       [TARGET_API_MAC_CARBON]: Use CFPreferencesAppSynchronize.
+
+       * macterm.c [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event):
+       Use GetGlobalMouse instead of GetMouse and LocalToGlobal.
+       (mac_initialize_display_info) [MAC_OSX]: Use CGRectZero.
+       (mac_initialize_display_info) [!MAC_OSX]: dpyinfo->height and
+       dpyinfo->width are those of whole screen.
+
+2007-04-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Don't decrement
+       glyph pointer before start of glyph row.
+
+2007-04-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * s/darwin.h (__restrict, struct kboard): Remove outdated workarounds.
+       (C_SWITCH_SYSTEM): Remove `-I../mac/src'.
+
+2007-04-09  Martin Rudalics  <rudalics@gmx.at>
+
+       * indent.c (Fmove_to_column): Set next_boundary with correct start pt.
+
+2007-04-08  Richard Stallman  <rms@gnu.org>
+
+       * xdisp.c (syms_of_xdisp) <message-log-max>: Default 100.
+
+2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * editfns.c (Ftranspose_regions): Validate interval before setting
+       text properties.
+
+2007-04-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (main): Fix instructions for building Emacs for profiling.
+
+2007-04-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_update_menubar): Call g_list_next after moving
+       menu bar item.
+
+2007-04-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * print.c (Fprin1_to_string): Use macro SPECPDL_INDEX.
+
+2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymap.c (Fcommand_remapping): New optional argument.
+       (where_is_internal): Use new keymaps argument.
+       (Fkey_binding): Caller changed.
+
+       * keyboard.c (command_loop_1): Caller changed.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * window.c (Fget_lru_window): Doc fix.
+
+2007-03-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * undo.c (Fprimitive_undo): Give clearer error message when trying
+       to change text properties outside accessible part of buffer.
+
+2007-03-29  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (wait_reading_process_output) [HAVE_PTYS]:
+       When EIO happens, clear channel from descriptor masks before raising
+       SIGCHLD signal to avoid busy loop between read and sigchld_handler.
+       (sigchld_handler): Remove sleep (2007-03-11 & 2007-03-26 changes).
+
+2007-03-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (Fset_buffer_major_mode): Check that BUFFER is valid.
+
+       * process.c (Fformat_network_address): Return nil when the
+       argument vector contains invalid values.
+
+2007-03-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Define USE_PTHREAD.
+       [USE_PTHREAD]: Include pthread.h.
+       (malloc_init_once_control, _malloc_mutex) [USE_PTHREAD]: New variables.
+       (malloc_initialize_1): New function created from __malloc_initialize.
+       (__malloc_initialize): Use it.
+       (LOCK, UNLOCK): New macros to make malloc etc. thread safe.
+       (_malloc_internal, _free_internal, _realloc_internal): Use them.
+
+       * lread.c (readchar): Extend BLOCK_INPUT block to ferror/clearerr.
+
+2007-03-27  Juanma Barranquero  <lekktu@gmail.com>
+
+       * process.c (Fformat_network_address): Make args array big enough
+       to format IPv6 addresses.
+
+2007-03-27  Glenn Morris  <rgm@gnu.org>
+
+       * m/hp800.h: Restore HP-UX support (removed 2007-01-29).
+
+2007-03-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (Fx_display_mm_height, Fx_display_mm_width): Scale whole
+       screen size in pixels by millimeters per pixel of main display.
+
+       * macselect.c (get_scrap_target_type_list, x_own_selection):
+       Move assignments outside predicate macros.
+       (Vselection_converter_alist): Doc fix.
+
+       * macterm.c (create_text_encoding_info_alist): Move assignments
+       outside predicate macros.
+       (mac_initialize_display_info) [MAC_OSX]: dpyinfo->height and
+       dpyinfo->width are those of whole screen.
+
+2007-03-26  Sam Steingold  <sds@gnu.org>
+
+       * process.c (sigchld_handler): Delay by 1ms instead of 1s to
+       alleviate sluggishness (the original problem is still fixed).
+
+2007-03-25  Kim F. Storm  <storm@cua.dk>
+
+       * intervals.c (merge_properties): Use explicit loop instead of
+       Fplist_member to avoid QUIT.  Don't use Fcdr.
+       (intervals_equal): Likewise.  Rewrite loop to perform length check
+       on the fly rather than calling Flength.  Don't use Fcar.
+
+2007-03-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * editfns.c (Fgoto_char): Doc fix.
+
+       * indent.c (Findent_to): Doc fix.
+
+2007-03-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * editfns.c (Ftranspose_regions): Use set_text_properties_1
+       instead of Fset_text_properties to avoid GC.  Signal after change.
+
+2007-03-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * xfns.c (Fx_show_tip): Doc fix.
+
+       * macfns.c (Fx_show_tip): Doc fix.
+
+       * w32fns.c (Fx_show_tip): Doc fix.
+
+2007-03-23  Kim F. Storm  <storm@cua.dk>
+
+       * intervals.c (merge_properties, intervals_equal):
+       Use Fplist_member instead of Fmemq to find properties.
+
+2007-03-23  Glenn Morris  <rgm@gnu.org>
+
+       * unexhp9k800.c: Restore file with clarified legal status.
+       * m/sr2k.h: Restore since dependency unexhp9k800.c is restored.
+
+2007-03-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * widget.c (EmacsFrameSetCharSize): Catch X errors.
+
+2007-03-22  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Fcopy_file): Call barf_or_query_if_file_exists with
+       non-encoded file name.
+       (Frename_file): Likewise.
+       (Fadd_name_to_file): Likewise.
+       (Fmake_symbolic_link): Likewise.
+
+2007-03-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * Makefile.in (alloca.o, gtkutil.o): Depend on systime.h.
+       (dired.o, editfns.o, fileio.o, msdos.o): Depend on atimer.h.
+       (dosfns.o, window.o, fns.o, macselect.o): Depend on atimer.h and
+       systime.h.
+       (term.o, print.o, lread.o): Depend on blockinput.h, atimer.h, and
+       systime.h.
+       (macfns.o): Remove duplicate dependency on systime.h.
+
+       * dispnew.c (Fopen_termscript): Add BLOCK_INPUT around fclose.
+       (Fsend_string_to_terminal): Add BLOCK_INPUT around fwrite.
+
+       * fileio.c (do_auto_save_unwind): Add BLOCK_INPUT around fclose.
+       (Fdo_auto_save): Add BLOCK_INPUT around fwrite.
+
+       * keyboard.c (record_char): Add BLOCK_INPUT around fwrite.
+       (Fopen_dribble_file): Add BLOCK_INPUT around fclose.
+
+       * lread.c: Include blockinput.h.
+       (readchar, Fget_file_char): Add BLOCK_INPUT around getc.
+       (unreadchar): Add BLOCK_INPUT around ungetc.
+       (load_unwind): Add BLOCK_INPUT around fclose.
+
+       * print.c: Include blockinput.h.
+       (Fredirect_debugging_output): Add BLOCK_INPUT around fclose.
+
+       * process.c (Fmake_network_process) [HAVE_GETADDRINFO]:
+       Clear immediate_quit before calling freeaddrinfo.
+       Add BLOCK_INPUT around freeaddrinfo.
+
+       * term.c: Include blockinput.h.
+       (write_glyphs, insert_glyphs): Add BLOCK_INPUT around fwrite.
+
+2007-03-19  Richard Stallman  <rms@gnu.org>
+
+       * keyboard.c (NUM_RECENT_KEYS): Bump up to 300.
+
+       * buffer.c (syms_of_buffer): Doc fix.
+
+2007-03-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image.c (pbm_load): Signal error for invalid image size.
+
+2007-03-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (note_mouse_movement): Don't return immediately for
+       LeaveNotify case.
+
+       * macmenu.c (popup_activated_flag): New variable.
+       (x_activate_menubar, mac_menu_show): Set it during menu tracking.
+       (popup_activated): New function.
+
+       * xdisp.c (redisplay_internal, note_mouse_highlight):
+       Check popup_activated for MAC_OS.
+
+2007-03-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (syms_of_buffer) <buffer-display-table>: Doc fix.
+       Reported by Nikolaj Schumacher <n_schumacher@web.de>.
+
+2007-03-17  Richard Stallman  <rms@gnu.org>
+
+       * dired.c (file_name_completion): gcpro NAME.
+
+2007-03-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (try_window_id): Increment matrix positions if the
+       buffer's byte count has increased, but not the character count.
+
+2007-03-12  Andreas Schwab  <schwab@suse.de>
+
+       * lisp.h: Declare check_obarray.
+
+       * process.c (Fdelete_process): Properly handle deletion of first
+       element of deleted_pid_list.
+       (create_process): Declare pid as pid_t.
+
+2007-03-12  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (sigchld_handler): Change type of pid to pid_t.
+       Scan deleted_pid_list explicitly to avoid using Fmember which don't
+       know about mark bits and make_fixnum_or_float which may malloc.
+       Reported by Andreas Schwab.
+
+       * keyboard.c (read_key_sequence): Store original event into keybuf
+       when replaying sequence with local keymap(s) from string.
+
+2007-03-12  Glenn Morris  <rgm@gnu.org>
+
+       * editfns.c (Fdecode_time, Fencode_time): Doc fix ("daylight
+       savings" to "daylight saving").
+
+2007-03-11  Sam Steingold  <sds@gnu.org>
+
+       * process.c (sigchld_handler): Sleep before wait3 to avoid a busyloop.
+
+2007-03-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (Fx_server_vendor): Change vendor string to "Apple Inc.".
+
+2007-03-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c [USE_CARBON_EVENTS] (mac_handle_mouse_event):
+       Ignore mouse wheel movement on title bar or tool bar.
+
+2007-03-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (help_form_saved_window_configs): New var.
+       (read_char_help_form_unwind): New function.
+       (read_char): Don't restore window configuration if a mouse click
+       arrives while the help form is being displayed.
+
+2007-03-10  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Don't automatically select a new window
+       start for a contination line during mouse-click.
+
+2007-03-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (handle_one_xevent): Ignore buttons > 3 for the tool bar.
+
+2007-03-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * keymap.c (Fdescribe_buffer_bindings): Check that BUFFER is valid.
+
+2007-03-08  Richard Stallman  <rms@gnu.org>
+
+       * keyboard.c (syms_of_keyboard): Doc fix.
+
+2007-03-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * minibuf.c (Ftry_completion): Don't short circuit if
+       completion-ignore-case is non-nil.
+
+2007-03-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (mac_set_scroll_bar_width, mac_frame_parm_handlers):
+       Undo 2006-03-06 changes.
+
+       * macterm.c (XTset_vertical_scroll_bar) [MAC_OSX]: Don't show scroll
+       bar if its width is smaller than that of Aqua small scroll bar.
+
+2007-03-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.c (read_minibuf): Bind inhibit-read-only a bit longer so as
+       to handle correctly prompts with read-only property.
+
+2007-03-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * sound.c (wav_play): Check header->data_length to see how much we
+       shall read.
+       (alsa_period_size): Convert ALSA period size in frames to bytes.
+       (alsa_write): Return if frames is zero.
+
+2007-03-06  Kenichi Handa  <handa@m17n.org>
+
+       * xselect.c (Vselection_coding_system): Documentation improved.
+
+2007-03-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (x_scroll_bar_create, XTread_socket): Replace #if
+       USE_TOOLKIT_SCROLL_BARS with #ifdef USE_TOOLKIT_SCROLL_BARS.
+       (x_set_window_size): Call SET_FRAME_GARBAGED.  Clear window if
+       internal border width has changed.
+
+       * macterm.h (struct mac_output): New member `internal_border_width'.
+
+2007-03-04  Richard Stallman  <rms@gnu.org>
+
+       * window.c (Fdisplay_buffer): Doc fix.
+
+2007-03-03  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in: Don't clear out LIB_X11_LIB, since XFT_LIBS does
+       not include -lX11 on Solaris.
+
+2007-03-02  Stuart D. Herring  <herring@lanl.gov>
+
+       * keymap.c (Fkey_binding): Don't consider one-element lists as events.
+
+2007-03-01  Kenichi Handa  <handa@m17n.org>
+
+       * process.c (send_process_object): Check the process status and
+       signal an error if something is wrong.
+
+2007-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * insdel.c (Fcombine_after_change_execute): Return nil if
+       combine_after_change_buffer has been invalidated.
+
+2007-02-25  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * m/xtensa.h: New file.
+
+2007-02-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * .gdbinit (xprintstr): Ensure GDB (> 6.6) prints symbol name
+       as strings and not character arrays.
+
+2007-02-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag)
+       (x_set_toolkit_scroll_bar_thumb): Add bar->min_handle as margin to
+       scroll bar handle size in order to avoid `scroll backward' problem.
+       (x_scroll_bar_create, XTset_vertical_scroll_bar)
+       [USE_TOOLKIT_SCROLL_BARS]: Initialize bar->min_handle.
+
+       * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
+       New member `min_handle'.
+
+2007-02-23  Kim F. Storm  <storm@cua.dk>
+
+       * print.c (print): Reset print_number_index if Vprint_number_table
+       is nil.
+
+2007-02-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (stat, get_long_basename, is_unc_volume): Use _mbspbrk
+       instead of strpbrk.
+
+2007-02-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macmenu.c (mac_menu_show): Call unbind_to early.  Use variable
+       `menu_item_selection' as in W32 version.
+       [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Add explicit
+       braces to avoid ambiguous `else'.
+
+       * macterm.c (mac_display_info_for_display): Remove function.
+       (mac_flush_display_optional) [USE_CG_DRAWING]: New function.
+       (x_redisplay_interface) [USE_CG_DRAWING]: Set it as handler for
+       flush_display_optional.
+       [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_press):
+       New argument MOUSE_POS.  All uses changed.  Set bar->dragging to
+       negative integer if scroll bar handle is pressed.
+       [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_release):
+       Negative bar->dragging means scroll bar handle is not dragged.
+       [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag): Get initial
+       offset of scroll bar handle from negative bar->dragging.
+       (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Modifiers for scroll
+       bar click is compared against mapped one.  Set down/up_modifier
+       for scroll bar click event with control key.
+
+       * macterm.h (x_display_info_for_display): Remove extern.
+       (SCROLL_BAR_UNPACK, SET_SCROLL_BAR_CONTROL_HANDLE): Don't limit
+       value to be unpacked to 32-bit on LP64 model.
+
+2007-02-23  Kenichi Handa  <handa@m17n.org>
+
+       * process.c (send_process_object_unwind): New function.
+       (send_process_object): New function.
+       (Fprocess_send_region): Call send_process_object.
+       (Fprocess_send_string): Likewise.
+
+2007-02-22  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (w32_menu_show): Mark the frame's menu as inactive
+       when popup menu finishes.
+
+       * w32fns.c (menubar_in_use): New flag.
+       (w32_wnd_proc) <WM_INITMENU, WM_EXITMENULOOP, WM_TIMER, WM_COMMAND>:
+       Use it.
+
+       * w32menu.c (Fx_popup_menu): Don't free menu strings here.
+       (w32_menu_show): Do it here instead.
+
+       * w32fns.c (w32_wnd_proc) <WM_INITMENU>: Set menubar_active frame
+       parameter.
+
+       * w32menu.c (current_popup_menu): Make available globally.
+       (menubar_selection_callback): Free menu strings before pushing the
+       menu event into the keyboard buffer.  Remove menu_command_in_progress.
+
+       * w32fns.c (current_popup_menu): Use from w32menu.c.
+       (w32_wnd_proc) <WM_EXITMENULOOP, WM_TIMER>: Use menubar_active
+       and current_popup_menu to determine whether a menubar menu has
+       been cancelled.
+
+       * w32term.h (w32_output): Remove menu_command_in_progress.
+
+2007-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (update_frame, update_single_window): Set force_p here if
+       redisplay_dont_pause is set or Vredisplay_preemption_period is nil...
+       (update_window, update_frame_1): ... instead of here.
+       (update_text_area): Clear mouse face on header lines.
+
+2007-02-21  Kim F. Storm  <storm@cua.dk>
+
+       * minibuf.c (Fassoc_string): Doc fix.  Allow symbol for KEY too.
+
+2007-02-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (WINDOW_RESOURCE, TERM_WINDOW_RESOURCE): Remove macros.
+       [USE_MAC_TSM] (mac_handle_text_input_event): Remove unused variable
+       `mapped_modifiers'.
+       (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Use Keyboard
+       Layout Services routines to get current Unicode keyboard layout.
+
+2007-02-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frame.c (x_set_screen_gamma): Apply gamma value to the frame's
+       bgcolor.
+
+2007-02-19  Kim F. Storm  <storm@cua.dk>
+
+       * minibuf.c (Fassoc_string): Allow symbols as keys.
+
+       * w32term.c (w32_set_scroll_bar_thumb): Don't resize scroll-bar
+       handle while dragging, except when we get close to eob.
+       Fix position and size calculations so we don't scroll backwards
+       just by clicking on the handle.
+
+2007-02-17  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * Makefile.in (${emacsapp}Contents/Resources/Emacs.rsrc)
+       [HAVE_CARBON]: Remove target.
+       (macosx-app) [HAVE_CARBON]: Don't depend on it.
+
+2007-02-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * callproc.c (syms_of_callproc) <doc-directory>:
+       <configure-info-directory>:
+       (Fgetenv_internal): Fix typos in docstrings.
+
+       * doc.c (Fsubstitute_command_keys): Fix typo in docstring.
+
+2007-02-16  Andreas Schwab  <schwab@suse.de>
+
+       * frame.c (Fmodify_frame_parameters): Return a value.
+
+       * editfns.c (Fformat): Add support for '+' flag.
+       * doprnt.c (doprnt1): Likewise.  Fix overflow checking.
+
+2007-02-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * s/umips.h: Unused file removed.
+
+2007-02-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * xfaces.c (Fcolor_distance): Don't continue checking a color for
+       errors after it has been correctly parsed as an RGB list.
+
+2007-02-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (do_ewmh_fullscreen): Also check for _NET_WM_STATE_FULLSCREEN.
+
+2007-02-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (Fx_focus_frame): Move current process to foreground if
+       it is not.
+       [TARGET_API_MAC_CARBON] (Fx_file_dialog): Replace #if MAC_OSX with
+       #ifdef MAC_OSX.
+       (Fmac_set_font_panel_visible_p) [USE_MAC_FONT_PANEL]: Rename from
+       Fmac_set_font_panel_visibility.  All uses changed.  Rename argument
+       VISIBLE to FLAG.
+
+       * macterm.c (MakeMeTheFrontProcess) [MAC_OSX]: Remove function.
+       (mac_initialize) [MAC_OSX]: Call SetFrontProcess instead of
+       MakeMeTheFrontProcess.
+
+2007-02-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frame.c (x_set_screen_gamma): Clear face cache.
+
+2007-02-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (Fgenerate_new_buffer_name, Fbuffer_modified_tick):
+       Reflow docstrings.
+
+2007-02-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * window.c (Fwindow_height, Fwindow_hscroll)
+       (Fwindow_redisplay_end_trigger, Fwindow_point, Fwindow_start)
+       (Fwindow_end, Fwindow_display_table, Fwindow_text_height):
+       Document the effect of WINDOW arg being nil.
+
+2007-02-08  Kim F. Storm  <storm@cua.dk>
+
+       * minibuf.c (read_minibuf): Fix 2007-01-30 change.
+       Use Qlambda as interim value of Vminibuffer_completing_file_name.
+       (Fcompleting_read): Use non-filename maps if value is Qlambda (or Qnil).
+       (syms_of_minibuf) <minibuffer-completing-file-name>: Document lambda.
+
+2007-02-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(TRES)): Use literal "../nt/emacs.rc" instead
+       of $(ALL_DEPS).
+
+2007-02-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in ($(TRES)): Depend on stamp_BLD, since $(TRES) is
+       put into $(BLD).
+
+2007-02-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frame.c (Fmodify_frame_parameters): Don't bind
+       Qinhibit_default_face_x_resources, which has no effect.
+       (Qinhibit_default_face_x_resources): Symbol deleted.
+
+2007-02-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * indent.c (Fmove_to_column): Document that the argument COLUMN is
+       taken from prefix numeric argument.
+
+2007-02-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * lread.c (syms_of_lread) <load-history>: Doc fix.
+
+2007-01-29  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>  (tiny change)
+
+       * xterm.c [!USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_expose):
+       Use the foreground color of the scroll-bar face when drawing
+       the scroll-bar's border.
+
+2007-02-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (do_ewmh_fullscreen): Check that what != NULL before
+       calling wm_supports.
+
+2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * lread.c (syms_of_lread) <user-init-file>: Doc fix.
+       Wording by Eli Zaretskii.
+
+2007-01-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (update_frame_tool_bar): Initialize h/vmargin to 0.
+
+2007-01-30  Richard Stallman  <rms@gnu.org>
+
+       * minibuf.c (read_minibuf):
+       Save and clear Vminibuffer_completing_file_name.
+       (read_minibuf_unwind): Restore it.
+       (Vminibuffer_completion_table, Qminibuffer_completion_table)
+       (Vminibuffer_completion_predicate, Qminibuffer_completion_predicate)
+       (Vminibuffer_completion_confirm, Qminibuffer_completion_confirm)
+       (Vminibuffer_completing_file_name): Definitions moved up.
+
+2007-01-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * m/hp800.h: Restore, removing HP-UX support.
+
+2007-01-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * Makefile.in: Use a variable, XFT_LIBS, instead #define LIB_X11_LIB.
+
+2007-01-28  Richard Stallman  <rms@gnu.org>
+
+       * minibuf.c (Ftry_completion, Fall_completions)
+       (Fcompleting_read, Ftest_completion):
+       Rename arg ALIST or TABLE to COLLECTION.
+
+2007-01-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * unexhp9k800.c: Remove due to lack of legal papers.
+
+       * m/sr2k.h, m/hp800.h: Remove due to dependence on above.
+
+2007-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Doc fix.
+
+       * minibuf.c (Fcompleting_read): Doc fix.
+
+2007-01-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_initialize): Call XftInit if HAVE_XFT.
+
+       * Makefile.in: Use XFT_LIBS if defined.
+
+2007-01-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use
+       BLOCK_INPUT/UNBLOCK_INPUT.
+
+       * blockinput.h (interrupt_input_blocked): Declare volatile.
+
+       * keyboard.c (interrupt_input_blocked): Declare volatile.
+
+       * syssignal.h (SIGNAL_THREAD_CHECK): Use pthread_equal.
+
+2007-01-24  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (describe_map): Don't consider prefix keys to be shadowed.
+
+2007-01-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * editfns.c (Finsert_char): Doc fix.
+       (Fget_internal_run_time, Fdecode_time): Fix typos in docstrings.
+
+2007-01-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag):
+       Don't pass keyboard modifiers to mac_store_drag_event, but put
+       them as kEventParamKeyModifiers Apple event parameter.
+
+2007-01-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (try_window): Revert previous change.
+
+       * dispnew.c (update_text_area): Revert 2006-09-17 change.
+       Always redraw non-mode-line rows with mouse-face.
+
+2007-01-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (try_window): Clear mouse-face highlights first.
+
+       * window.c (set_window_buffer): Revert 2006-11-22 change.
+
+2007-01-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit (ppt, xtype, xmisctype, xint, xptr, xmarker, xframe)
+       (xbuffer, xcons, xcar, xcdr): Fix doc strings.
+
+2007-01-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (read_key_sequence): Extract local map only if the
+       given position is in an accessible buffer region.
+
+2007-01-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * .gdbinit: Reformat documentation so that first sentence
+       displays properly with "help user-defined" (like apropos).
+
+2007-01-18  Bruno Haible  <bruno@clisp.org>  (tiny change)
+
+       * epaths.in: Move PATH_DOC from local/info to local/share/info.
+
+2007-01-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]:
+       Create movable modal window instead of movable alert window.
+       (create_and_show_dialog) [!MAC_OSX]: Use DeactivateControl instead
+       of DisableControl.
+
+       * macselect.c (Fmac_resume_apple_event): Set error number when
+       descriptor type of reply is non-null.
+
+2007-01-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]:
+       Use DisableControl for disabled items.  Set default button to first
+       enabled one.  Use icon of application in execution.
+
+2007-01-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * process.c (Fdelete_process, Fprocess_id, sigchld_handler):
+       Copy PID into EMACS_INT to avoid GCC warnings.
+
+       * fns.c (maybe_resize_hash_table): Copy new size of hash table
+       into EMACS_INT to avoid GCC warnings.
+
+       * editfns.c (Fuser_uid, Fuser_real_uid): Copy values returned by
+       geteuid and getuid into EMACS_INT to avoid GCC warnings.
+
+       * dired.c (Ffile_attributes): Fix last change.
+
+2007-01-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * dired.c (Ffile_attributes): Copy some members of `struct stat'
+       into int's to avoid GCC warnings about limited range of short in
+       arguments to FIXNUM_OVERFLOW_P.
+
+2007-01-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macmenu.c (HAVE_DIALOGS): Define if TARGET_API_MAC_CARBON.
+       (mac_handle_dialog_event, install_dialog_event_handler)
+       (create_and_show_dialog) [TARGET_API_MAC_CARBON]: New functions.
+       (DIALOG_LEFT_MARGIN, DIALOG_TOP_MARGIN, DIALOG_RIGHT_MARGIN)
+       (DIALOG_BOTTOM_MARGIN, DIALOG_MIN_INNER_WIDTH)
+       (DIALOG_MAX_INNER_WIDTH, DIALOG_BUTTON_BUTTON_HORIZONTAL_SPACE)
+       (DIALOG_BUTTON_BUTTON_VERTICAL_SPACE, DIALOG_BUTTON_MIN_WIDTH)
+       (DIALOG_TEXT_MIN_HEIGHT, DIALOG_TEXT_BUTTONS_VERTICAL_SPACE)
+       (DIALOG_ICON_WIDTH, DIALOG_ICON_HEIGHT, DIALOG_ICON_LEFT_MARGIN)
+       (DIALOG_ICON_TOP_MARGIN) [TARGET_API_MAC_CARBON]: New macros.
+       (mac_dialog) [TARGET_API_MAC_CARBON]: Remove function.
+       (mac_dialog_show) [TARGET_API_MAC_CARBON]: Use create_and_show_dialog.
+
+       * macterm.c (x_free_frame_resources) [USE_CG_DRAWING]:
+       Call mac_prepare_for_quickdraw.
+       (quit_char, make_ctrl_char) [TARGET_API_MAC_CARBON]: Move externs
+       outside #ifdef MAC_OSX.
+       (mac_quit_char_key_p) [TARGET_API_MAC_CARBON]: Move function
+       outside #ifdef MAC_OSX.
+       (mac_check_bundle) [MAC_OSX]: Remove unused function.
+
+       * macterm.h (mac_quit_char_key_p): Move extern outside #ifdef MAC_OSX.
+       (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): Parenthesize definitions.
+
+2007-01-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use pthread_equal,
+       block/unblock SIGIO.
+
+2007-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * editfns.c (Fformat): Allow integer-format to work with floats of size
+       larger than most-positive-fixnum (but still smaller than MAXINT).
+
+       * dired.c (Ffile_attributes): Use floats for large uids/gids.
+
+2007-01-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (syms_of_emacs) <path-separator>: Doc fix.
+
+2007-01-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * callproc.c (Fcall_process_region) [HAVE_MKSTEMP]: Add BLOCK_INPUT
+       around mkstemp.
+
+       * image.c (XDrawLine) [MAC_OS]: Remove macro.
+       (XCreateGC_pixmap) [!HAVE_NTGUI]: Likewise.
+       (x_disable_image) [!HAVE_NTGUI]: Use XCreateGC instead of
+       XCreateGC_pixmap.
+
+       * macgui.h (Display): Typedef to opaque type.
+
+       * macmenu.c (mac_dialog_modal_filter) [MAC_OSX]: New function.
+       (Fx_popup_dialog) [MAC_OSX]: Use standard alert if called from
+       Fmessage_box, Fyes_or_no_p, or Fy_or_n_p.
+       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030] (menu_quit_handler):
+       Use mac_quit_char_key_p.
+
+       * macterm.c (XDrawLine): Rename from mac_draw_line_to_pixmap.
+       (XCreateGC): Change type of 2nd argument to void *.
+       (XFreeGC) [USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
+       Fix last change.
+       (mac_to_emacs_modifiers): Change return type to int.
+       [USE_CARBON_EVENTS] (mac_event_to_emacs_modifiers): Likewise.
+       (mac_mapped_modifiers): New function.
+       (XTread_socket): Use it.
+       [USE_TSM] (mac_handle_text_input_event): Likewise.
+       (do_window_update) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
+       (mac_quit_char_modifiers, mac_quit_char_keycode) [MAC_OSX]:
+       Remove variables.
+       (mac_determine_quit_char_modifiers, init_quit_char_handler)
+       [MAC_OSX]: Remove functions.
+       (make_ctrl_char) [MAC_OSX]: Add extern.
+       (mac_quit_char_key_p) [MAC_OSX]: New function.
+       (mac_initialize) [MAC_OSX]: Don't call init_quit_char_handler.
+
+       * macterm.h (FONT_MAX_WIDTH): Remove unused macro.
+       (XCreateGC): Change type in extern.
+       (XDrawLine): Rename from mac_draw_line_to_pixmap.
+       (mac_quit_char_key_p) [MAC_OSX]: Add extern.
+
+2007-01-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * keyboard.c (init_keyboard): Initialize interrupt_input_blocked and
+       interrupt_input_pending.
+
+       * xterm.h (x_display_info): New: net_supported_atoms,
+       nr_net_supported_atoms and net_supported_window.
+
+       * xterm.c (last_user_time): New variable.
+       (handle_one_xevent): Set last_user_time from events that have Time.
+       Set net_supported_window to 0 when reparented.
+       (wm_supports): New function.
+       (do_ewmh_fullscreen): Use wm_supports to check for _NET_WM_STATE.
+       (x_term_init): Initialize net_supported_atoms, nr_net_supported_atoms
+       and net_supported_window.
+
+2007-01-05  Kim F. Storm  <storm@cua.dk>
+
+       * indent.c (Fvertical_motion): Fix it overshoot check for overlay
+       strings without embedded newlines immediately followed by newline.
+
+2007-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * editfns.c (Fformat_time_string, Fdecode_time, Fencode_time)
+       (Fcurrent_time_string, Fcurrent_time_zone): Add BLOCK_INPUT around
+       gmtime/localtime/emacs_memftimeu/mktime.
+
+       * mac.c (Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE
+       instead of 'EMAx'.
+       [!MAC_OSX] (sys_open, sys_creat, sys_fopen): Likewise.
+
+       * macgui.h (struct _XGC) [USE_CG_DRAWING
+       && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New members cg_fore_color
+       and cg_back_color.
+
+       * macmenu.c (Vshow_help_function) [TARGET_API_MAC_CARBON]: Add extern.
+       (restore_show_help_function, menu_target_item_handler)
+       [TARGET_API_MAC_CARBON]: New functions.
+       (install_menu_target_item_handler): New function.
+       (add_menu_item) [TARGET_API_MAC_CARBON]: Set help string as menu
+       item property.
+
+       * macterm.c (CG_SET_FILL_COLOR_MAYBE_WITH_CGCOLOR)
+       (CG_SET_FILL_COLOR_WITH_GC_FOREGROUND)
+       (CG_SET_FILL_COLOR_WITH_GC_BACKGROUND)
+       (CG_SET_STROKE_COLOR_MAYBE_WITH_CGCOLOR)
+       (CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND): New macros.
+       (mac_cg_color_space_rgb) [USE_CG_DRAWING]: New variable.
+       (mac_cg_color_black) [USE_CG_DRAWING
+       && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New variable.
+       (init_cg_color) [USE_CG_DRAWING]: New function.
+       (mac_draw_line, mac_draw_rectangle) [USE_CG_DRAWING]: Use
+       CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND instead of CG_SET_STROKE_COLOR.
+       (mac_erase_rectangle, mac_clear_window, mac_draw_cg_image)
+       (mac_fill_rectangle, mac_draw_image_string_cg) [USE_CG_DRAWING]:
+       Use CG_SET_FILL_COLOR_WITH_GC_FOREGROUND or
+       CG_SET_FILL_COLOR_WITH_GC_BACKGROUND instead of CG_SET_FILL_COLOR.
+       (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Likewise.
+       (XCreateGC, XFreeGC, XSetForeground, XSetBackground) [USE_CG_DRAWING
+       && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use gc->cg_fore_color and/or
+       gc->cg_back_color.
+       (install_drag_handler, remove_drag_handler): Make extern.
+       (install_menu_target_item_handler): Add extern.
+       (install_window_handler): Call install_menu_target_item_handler.
+       [MAC_OS8] (main): Use MAC_EMACS_CREATOR_CODE instead of 'EMAx'.
+       (mac_initialize) [USE_CG_DRAWING]: Call init_cg_color.
+
+       * macterm.h (MAC_EMACS_CREATOR_CODE): New enumerator.
+
+2007-01-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * window.c (Fwindow_end): Fix use of >= operator.
+
+2007-01-03  Richard Stallman  <rms@gnu.org>
+
+       * window.c (Fwindow_end): Check BUF_OVERLAY_MODIFF like BUF_MODIFF.
+
+2007-01-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.h (xg_menu_item_cb_data_): Remove highlight_id and
+       unhighlight_id.
+
+       * gtkutil.c (menuitem_highlight_callback): Invoked widget is the
+       parent of the menu item.  Get menu item widget from event.
+       (xg_create_one_menuitem, xg_update_menu_item): highlight_id and
+       unhighlight_id has been removed.
+       (create_menus): Connect enter/leave-notify-event to the menu instead
+       of individual items.
+
+2006-12-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (update_frame_tool_bar): Connect create-menu-proxy with
+       xg_tool_bar_menu_proxy.
+       (xg_tool_bar_menu_proxy): New function.
+       (xg_tool_bar_proxy_callback): New function.
+
+2006-12-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_tool_bar_button_cb): Save last modifier on widget.
+       (xg_tool_bar_callback): Remove check for button.
+       (update_frame_tool_bar): Put an event box in the tool bar and a button
+       in the event box.  Attach enter/leave-notify-event to the event box.
+
+2006-12-30  Richard Stallman  <rms@gnu.org>
+
+       * keymap.c (Fdefine_key): Doc fix.
+
+2006-12-29  Kim F. Storm  <storm@cua.dk>
+
+       * frame.h (struct frame): New member minimize_tool_bar_window_p.
+
+       * xdisp.c (auto_resize_tool_bars_p): Replace with ...
+       (Vauto_resize_tool_bars): ... this.
+       (syms_of_xdisp): DEFVAR_LISP and initialize it.  Update doc string
+       to describe new value `grow-only', and use of C-l.
+       (display_tool_bar_line): Only use default face for border below
+       toolbar if not grow-only (to get acceptable visual appearence).
+       Explicitly set visible_height for empty toolbar lines.
+       (redisplay_tool_bar): Handle `grow-only' setting.  Check and clear
+       minimize_tool_bar_window_p flag.
+
+       * window.c (Frecenter): Set minimize_tool_bar_window_p flag
+       when called without arg to redraw with minimum toolbar height.
+       Update doc string.
+
+2006-12-29  Jason Rumney  <jasonr@gnu.org>
+
+       * s/ms-w32.h (tzname): Do not define in msvc8.
+       (utime): Do not define in msvc8.
+
+       * regex.c (regerror): Change parameter name err_code.
+
+2006-12-26  Richard Stallman  <rms@gnu.org>
+
+       * search.c (Fsearch_forward): Doc fix.
+
+       * callint.c (Finteractive): Doc fix.
+
+2006-12-25  Kim F. Storm  <storm@cua.dk>
+
+       * s/ms-w32.h (BROKEN_DATAGRAM_SOCKETS): Define it.
+
+2006-12-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * keyboard.c (some_mouse_moved): Fix last change.
+
+2006-12-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * callproc.c (syms_of_callproc) <shell-file-name>: Doc fix.
+
+2006-12-22  Mark Davies  <mark@mcs.vuw.ac.nz>
+
+       * m/amdx86-64.h, m/hp800.h: Add support for NetBSD.
+       * m/sh3el.h: New file.
+
+2006-12-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (emacs, temacs): Depend on stamp_BLD instead of
+       $(BLD).
+       ($(OBJ0) $(OBJ1) $(WIN32OBJ)): New dependency on stamp_BLD.
+       (bootstrap-temacs): Pass $(XMFLAGS) to sub-make.
+       ($(OBJ0) $(OBJ1) $(WIN32OBJ)): Add lastfile.$(O) and firstfile.$(O).
+       (clean): Delete stamp_BLD.
+
+2006-12-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (mac_update_title_bar) [TARGET_API_MAC_CARBON]:
+       Call mac_update_proxy_icon also when buffer modification flag changed.
+       [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): Don't update alias,
+       but compare FSRef/FSSpec of resolved alias.
+
+2006-12-21  Kim F. Storm  <storm@cua.dk>
+
+       * w32.c (_sys_wait_accept): Fix handle leak.
+
+2006-12-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * sound.c: Include <alsa/asoundlib.h> if ALSA_SUBDIR_INCLUDE is
+       defined.
+
+2006-12-20  Kim F. Storm  <storm@cua.dk>
+
+       * s/ms-w32.h (BROKEN_NON_BLOCKING_CONNECT): Define it.
+
+2006-12-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * keyboard.c (syms_of_keyboard) <double-click-time>:
+       * mac.c (Fmac_code_convert_string):
+       * search.c (Fsearch_forward): Doc fixes.
+
+2006-12-19  Kim F. Storm  <storm@cua.dk>
+
+       Rework 2006-12-04 change.  A SIGUSR1 (SIGUSR2) signal now generates
+       a sigusr1 event instead of [signal usr1] sequence, and signal events
+       are now supposed to be handled via special-event-map.
+
+       * keyboard.c (kbd_buffer_store_event_hold): Undo 2006-12-04 change.
+       (make_lispy_event): Don't generate Qsignal prefix for code 0.
+       Abort if signal code is unknown.
+       (store_user_signal_events): Don't make Qsignal prefix (code 0).
+       (Qsignal): Move declaration back to process.c.
+       (syms_of_keyboard): Don't intern or staticpro it here.
+
+       * process.c (Qsignal): Declare here.
+       (syms_of_process): Intern or staticpro it.
+
+       * emacs.c (main): Rename user signals to sigusr1 and sigusr2.
+
+       * .gdbinit: Pass on SIGUSR1 and SIGUSR2 to Emacs.
+
+2006-12-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (syms_of_buffer) <buffer-display-table>:
+       <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
+
+2006-12-17  Richard Stallman  <rms@gnu.org>
+
+       * fileio.c (Fread_file_name_internal): Pass Vread_file_name_predicate
+       to Ffile_name_completion.
+
+       * dired.c (file_name_completion): New arg PREDICATE.  Some cleanup.
+       (Ffile_name_completion): New arg PREDICATE.
+
+2006-12-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (Fkill_buffer): Doc fix.
+       (syms_of_buffer) <kill-buffer-query-functions>: Doc fix.
+
+2006-12-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * minibuf.c (Ftry_completion): Check that obarray buckets are symbols.
+
+2006-12-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32-window-exists-p): New function.
+       (syms_of_w32fns): Defsubr it.
+
+       * prefix-args.c [STDC_HEADERS]: Include stdlib.h.
+
+2006-12-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * minibuf.c (Ftry_completion): Use `check_obarray' if ALIST is a vector.
+
+2006-12-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (USAGE3): Clarify documentation of --color.
+
+2006-12-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]:
+       New variable.
+       (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE): New macros.
+       [!MAC_OSX] (select): Use them.
+       [MAC_OSX] (select_and_poll_event, sys_select): Likewise.
+       (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: New function.
+
+       * macfns.c (mac_atsu_font_face_attributes) [USE_ATSUI]: Add extern.
+       (Fmac_atsu_font_face_attributes) [USE_ATSUI]: New function.
+       (syms_of_macfns) [USE_ATSUI]: Defsubr it.
+
+       * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag):
+       Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event.
+
+       * macterm.c (mac_query_char_extents) [USE_ATSUI]: Don't call
+       ATSUGetGlyphBounds if not necessary.
+       (Vmac_atsu_font_table) [USE_ATSUI]: Remove variable.
+       (syms_of_macterm) [USE_ATSUI]: Don't defvar it.
+       (fm_get_style_from_font, atsu_find_font_from_family_name)
+       (atsu_find_font_family_name, mac_atsu_font_face_attributes)
+       [USE_ATSUI]: New functions.
+       (init_font_name_table) [USE_ATSUI]: Use atsu_find_font_family_name.
+       (mac_load_query_font) [USE_ATSUI]: Use atsu_find_font_from_family_name.
+       Don't get metrics for Latin-1 right half characters.
+       (mac_load_query_font): Don't load font if space width is not positive.
+       [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event):
+       Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event.
+       (XTread_socket): Call SelectWindow when unfocused frame is clicked.
+
+       * macterm.h (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: Add extern.
+
+2006-12-15  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (ignore_mouse_drag_p): New global var.
+       (some_mouse_moved): Return 0 if it is non-zero.
+       (make_lispy_event): Generate click event on mouse up if
+       ignore_mouse_drag_p is non-zero, even if mouse moved.
+       Clear ignore_mouse_drag_p on mouse down/up.
+
+       * xdisp.c (redisplay_window): Set ignore_mouse_drag_p if tool-bar
+       is resized to avoid generating a mouse drag event.
+
+2006-12-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32fns.c (w32_wnd_proc): Force non-tooltip frames to respect the
+       minimum tracking size.  Remove non-working old hack to do the same.
+
+2006-12-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * emacs.c (handle_user_signal): Move function to keyboard.c.
+       (main): Use add_user_signal for SIGUSR1 and SIGUSR2.
+
+       * keyboard.c (make_lispy_event): Use find_user_signal_name.
+       (read_avail_input): Store pending user signal events.
+       (struct user_signal_info): New struct.
+       (user_signals): New variable.
+       (add_user_signal, store_user_signal_events)
+       (find_user_signal_name): New functions.
+       (handle_user_signal): Move function from emacs.c.  Don't store
+       USER_SIGNAL_EVENT here, but increment number of pending signals.
+
+       * keyboard.h (add_user_signals): Add extern.
+
+2006-12-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (syms_of_buffer) <cursor-in-non-selected-windows>:
+       <default-scroll-up-aggressively, default-scroll-down-aggressively>:
+       <line-spacing, left-margin>: Doc fixes.
+
+       * xdisp.c (syms_of_xdisp) <mode-line-inverse-video>: Doc fix.
+
+2006-12-10  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (show_mouse_face): Never use text cursor in tool-bar.
+
+2006-12-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * abbrev.c (syms_of_abbrev) <last-abbrev-text>:
+       * buffer.c (syms_of_buffer) <default-major-mode>:
+       * keymap.c (Flookup_key):
+       * lread.c (Feval_buffer, Feval_region):
+       * macterm.c (syms_of_macterm) <x-use-underline-position-properties>:
+       <x-underline-at-descent-line, mac-emulate-three-button-mouse>:
+       * marker.c (Fmarker_insertion_type):
+       * minibuf.c (syms_of_minibuf) <minibuffer-completion-table>:
+       * msdos.c (syms_of_msdos) <delete-exited-processes>:
+       * w32term.c (syms_of_w32term) <x-use-underline-position-properties>:
+       <x-underline-at-descent-line>:
+       * xdisp.c (format-mode-line):
+       * xterm.c (syms_of_xterm) <x-use-underline-position-properties>:
+       <x-underline-at-descent-line>: Doc fixes.
+
+2006-12-10  Andreas Schwab  <schwab@suse.de>
+
+       * systime.h (EMACS_GET_TIME): Remove check for
+       HAVE_STRUCT_TIMEZONE which is never defined.
+
+2006-12-10  Alan Mackenzie  <acm@muc.de>
+
+       * syntax.c (Fpartial_parse_sexp): Correct Docco: Elt 8 of the
+       result is now neither the last elt nor optional for OLDSTATE.
+
+2006-12-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * process.c (Fsignal_process): Doc fix.  Use XFLOAT_DATA to
+       extract the process ID from a Lisp float.
+
+2006-12-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xterm.c (XTframe_raise_lower): Comment out _NET_ACTIVE_WINDOW code.
+
+2006-12-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * frame.h (PIX_TYPE): Redefine as `unsigned long', for 64-bit
+       platforms where long is 64-bit.
+
+       * msdos.h (PIX_TYPE): Redefine as `unsigned long'.
+
+2006-12-08  NAKAJI Hiroyuki  <nakaji@jp.freebsd.org>  (tiny change)
+
+       * m/amdx86-64.h: Add support for Solaris 10 on x86-64.
+
+2006-12-08  Kenichi Handa  <handa@m17n.org>
+
+       * xterm.c (x_query_font): Use xstricmp instead off strcasecmp.
+
+2006-12-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs.c (syms_of_emacs) <system-type>: Doc fix.
+
+2006-12-07  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (parse_signal): Use xstricmp instead of strcasecmp.
+       (Fsignal_process): Don't use strncasecmp.
+
+2006-12-05  Glenn Morris  <rgm@gnu.org>
+
+       * abbrev.c (Qforce): New Lisp_Object.
+       (Fdefine_abbrev): Do not overwrite non-system abbrevs with system
+       abbrevs, unless 'force is applied.
+       (syms_of_abbrev): Add Qforce.
+
+2006-12-04  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (parse_signal): Rename macro from handle_signal.
+       (Fsignal_process): Also accept lower-case variants of signal
+       names (to align with signal names generated by Emacs itself).
+
+       * emacs.c (handle_USR1_signal, handle_USR2_signal): Replace by...
+       (handle_user_signal): ... this, which generates two USER_SIGNAL_EVENTs
+       first with code == 0 [signal] and one with code == sig number.
+       (main): Use it as handler for SIGUR1 and SIGUSR2.
+
+       * keyboard.c (kbd_buffer_store_event_hold): Don't throw-on-input
+       if first event in [signal xxx] sequence.
+       (lispy_user_signals, Qusr1_signal, Qusr2_signal): Remove.
+       (syms_of_keyboard): Don't intern and staticpro them.
+       (Qsignal): Declare here.
+       (syms_of_keyboard): Intern and staticpro it.
+       (make_lispy_event): Use it.  Intern symbols on the fly for other
+       USER_SIGNAL_EVENTs events.
+
+       * process.c (Qsignal): Declare extern.
+       (syms_of_process): Don't intern/staticpro it here.
+
+       * process.c (read_process_output): Abort if carryover < 0.
+
+2006-12-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * config.in: Regenerate.
+
+       * fileio.c [__NetBSD__]: Don't define `unix'.
+       (Funix_sync, syms_of_fileio): Use `#ifdef HAVE_SYNC' instead of
+       `#ifdef unix'.
+
+2006-12-04  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (version): New variable, set by configure.
+       (bootstrapclean, mostlyclean): Also remove emacs-${version}.
+
+2006-12-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (update_frame_tool_bar): Handle modifying a toolbar item
+       without an image.
+
+2006-12-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (Fw32_shell_execute): Doc fix.
+
+2006-11-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (move_it_to): Correctly count tab glyphs for continued
+       lines ending in tab.
+
+2006-11-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_raise_frame): Move setting of _NET_ACTIVE_WINDOW
+       property ...
+       (XTframe_raise_lower): ... to here.
+
+2006-11-30  Kenichi Handa  <handa@m17n.org>
+
+       * regex.c (regex_compile): Fix previous change.
+
+2006-11-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * sound.c (Fplay_sound_internal): Remove spurious newline in docstring.
+
+2006-11-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * config.in: Regenerate.
+
+2006-11-28  Kenichi Handa  <handa@m17n.org>
+
+       * regex.c (regex_compile): Don't call SET_LIST_BIT with a
+       multibyte character.
+
+2006-11-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * s/aix4-2.h: Undefine _NO_PROTO.  Suggested by Joe Buehler.
+
+2006-11-27  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (set_window_buffer): Refactor recent changes.
+
+2006-11-27  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_msg_worker): Declare correctly.
+       (w32_initialize): Don't cast w32_msg_worker.
+
+       * w32fns.c (w32_msg_worker): Define as WINAPI and arg as void pointer.
+
+2006-11-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * m/amdx86-64.h: Look for standard libs in /usr/lib64 only if that
+       directory exists.
+
+2006-11-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * w16select.c (Fw16_set_clipboard_data): Fix the call to sit_for
+       as per the calling sequence change on 2006-07-11.
+
+2006-11-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * window.c (set_window_buffer): Use BLOCK_INPUT.
+
+2006-11-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * fns.c (substring_both): Add missing address operator.
+
+2006-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fns.c: Use AREF/ASIZE macros.
+       (concat): Provide the full ANSI prototype.
+
+2006-11-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (syms_of_buffer) <buffer-undo-list>: Doc fix.
+
+2006-11-23  William Smith  <William.Smith@global360.com>  (tiny change)
+
+       * strftime.c (HAVE_SYS__MBSTATE_T_H): Fix typo.
+
+2006-11-22  Alfred M. Szmidt  <ams@gnu.org>  (tiny change)
+
+       * s/openbsd.h (LD_SWITCH_SYSTEM): Remove /usr/pkg/lib and
+       /usr/pkg/lib from the library search path.
+       (LD_SWITCH_X_DEFAULT): New macro.
+
+2006-11-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * window.c (set_window_buffer): Clear mouse highlight if it is in
+       this window.
+
+2006-11-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xfaces.c (realize_default_face): Check if the default font name
+       exists on this display before trying to use it.
+
+2006-11-21  Richard Stallman  <rms@gnu.org>
+
+       * fileio.c: Break line before &&, not after.
+
+2006-11-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * fns.c (concat) [!__GNUC__]: Add prototype.
+
+2006-11-20  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Fread_file_name_internal): Use SBYTES (not SCHARS) to
+       check the tailing slash of a filename.
+
+2006-11-20  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>  (tiny change)
+
+       * indent.c (Fvertical_motion): Include composition in the case of
+       overshoot expected.
+
+2006-11-19  Andreas Schwab  <schwab@gnu.org>
+
+       * xfaces.c (Fdisplay_supports_face_attributes_p): Initialize supports.
+
+       * xmenu.c (Fx_popup_menu): Initialize selection.
+
+2006-11-18  Andreas Schwab  <schwab@suse.de>
+
+       * s/gnu-linux.h (GC_MARK_SECONDARY_STACK): Update call to mark_memory.
+
+2006-11-17  Tetsurou Okazaki  <okazaki@be.to>  (tiny change)
+
+       * xterm.c (do_ewmh_fullscreen): Declare variable before XSETFRAME
+       to avoid gcc 2.96 error.
+
+2006-11-17  NIIMI Satoshi  <sa2c@sa2c.net>  (tiny change)
+
+       * search.c (simple_search): In the loop of backward searching,
+       check also the byte position against the limit.
+
+2006-11-14  Romain Francoise  <romain@orebokech.com>
+
+       * minibuf.c (Fcompleting_read): Fix typo in docstring.
+
+2006-11-14  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (code_convert_region): Initialize coding->heading_ascii.
+       (decode_coding_string, code_convert_region): Likewise.
+
+2006-11-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * config.in: Regenerate.
+
+       * macfns.c (Fx_display_mm_height, Fx_display_mm_width)
+       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
+       && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if
+       CGDisplayScreenSize is available.
+
+       * macmenu.c (menu_quit_handler, install_menu_quit_handler):
+       Replace `#ifdef HAVE_CANCELMENUTRACKING' with
+       `#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030'.
+       (install_menu_quit_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
+       && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if
+       CancelMenuTracking is available.
+
+       * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg)
+       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
+       && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if
+       CGContextShowGlyphsWithAdvances is available.
+
+2006-11-13  Jason Rumney  <jasonr@gnu.org>
+
+       * s/ms-w32.h: Define HAVE_INET_SOCKETS.
+
+2006-11-13  Nozomu Ando  <nand@mac.com>
+
+       * alloc.c (mark_memory): New argument OFFSET.  All uses changed.
+       Fix address calculations for case END < START.
+       (mark_stack): Impose Lisp_Object alignment on jmp_buf.
+
+2006-11-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * coding.c (Fencode_sjis_char, Fencode_big5_char):
+       Improve argument/docstring consistency.
+
+       * editfns.c (Fmessage): Doc fixes.
+
+       * process.c (syms_of_process) <delete-exited-processes>: Doc fix.
+
+2006-11-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xmenu.c (popup_activated): Define outside HAVE_MENUS.
+
+2006-11-12  Romain Francoise  <romain@orebokech.com>
+
+       * xselect.c (selection-coding-system): Fix docstring.
+
+2006-11-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * category.c (Fchar_category_set): Improve arg/docstring consistency.
+
+       * data.c (Flogxor):
+       * fns.c (Frandom, Flength, Fsafe_length, Fstring_bytes)
+       (Fstring_equal, Fcompare_strings, Fstring_lessp, Fcopy_sequence)
+       (Fstring_make_unibyte): Fix typos in docstrings.
+
+2006-11-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h (struct x_display_info): Fix indentation.
+
+       * xterm.c (do_ewmh_fullscreen, XTfullscreen_hook): New functions.
+       (x_check_fullscreen): Call do_ewmh_fullscreen.
+       (x_initialize): Set fullscreen_hook to XTfullscreen_hook.
+
+       * frame.c (x_set_fullscreen): Call fullscreen_hook if set.
+
+       * term.c: Define fullscreen_hook.
+       (syms_of_term): Initialize fullscreen_hook to NULL.
+
+       * termhooks.h: Add fullscreen_hook.
+
+2006-11-08  Juanma Barranquero  <lekktu@gmail.com>
+
+       * bytecode.c (Fbyte_code):
+       * data.c (Fmakunbound): Use SYMBOL_CONSTANT_P macro.
+
+2006-11-06  Juanma Barranquero  <lekktu@gmail.com>
+
+       * lread.c (syms_of_lread):
+       * xsmfns.c (syms_of_xsmfns): Fix typo in docstring.
+
+2006-11-06  Martin Rudalics  <rudalics@gmx.at>
+
+       * macmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS.
+
+       * w32menu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS.
+       Return nil if building without menus.
+
+       * xmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS.
+       Return nil if building without menus.
+
+2006-11-05  Mark Davies  <mark@mcs.vuw.ac.nz>  (tiny change)
+
+       * s/netbsd.h (POSIX_SIGNALS): Define.
+
+2006-11-05  Martin Rudalics  <rudalics@gmx.at>
+
+       * macmenu.c (Fmenu_or_popup_active_p): New function.
+       (syms_of_macmenu): Defsubr it.
+
+       * w32menu.c (Fmenu_or_popup_active_p): New function.
+       (syms_of_w32menu): Defsubr it.
+       (popup_activated_flag, popup_activated): Remove.
+
+       * xdisp.c (note_mouse_highlight) [HAVE_NTGUI]: Don't bother to
+       check popup_activated.
+
+       * xmenu.c (Fmenu_or_popup_active_p): New function.
+       (syms_of_xmenu): Defsubr it.
+
+2006-11-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * unexmacosx.c (malloc_cookie): Remove unused variable.
+       (region_list_head, region_list_tail, lca, nlc, infile_lc_highest_addr)
+       (text_seg_lowest_offset, mh, curr_header_offset, infd, outfd)
+       (emacs_zone, data_segment_old_fileoff, data_segment_scp)
+       (num_unexec_regions, unexec_regions): Make variables static.
+       (print_regions, find_emacs_zone_regions): Make static.
+       (unexec_region_info): New typedef.
+       (unexec_regions): Change type from vm_range_t[] to unexec_region_info[].
+       All uses changed.
+       (unexec_regions_recorder): Subtract size of trailing null pages from
+       filesize.  Show filesize.
+       (unexec_regions_merge): Don't merge if null pages of preceding region
+       is not too small.  Use long format in printf.
+       (copy_segment, copy_data_segment): Show filesize.
+       (copy_data_segment): Write filesize bytes of region data.
+       Adjust filesize in segment command accordingly.
+       (dump_it): Use long format in printf.
+
+2006-11-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * dosfns.c (Finsert_startup_screen):
+       * fns.c (Ffeaturep, syms_of_fns):
+       * frame.c (syms_of_frame): Fix typos in docstrings.
+
+       * unexcw.c (unexec): Fix typo in output message.
+
+2006-11-04  Ralf Angeli  <angeli@caeruleus.net>
+
+       * w32fns.c (w32_createwindow): Remove code for handling -geometry
+       command line option and `initial-frame-alist' which is superfluous
+       after the last change to `w32_createwindow'.
+
+2006-11-04  Slawomir Nowaczyk  <slawek@cs.lth.se>  (tiny change)
+
+       * w32proc.c (sys_wait): Only wait for processes with fd<0.
+       Others should be handled by sys_select instead.  Fixes problems
+       with (progn (start-process "" nil "ls") (call-process "ls")).
+
+2006-11-04  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
+
+       * xmenu.c (Fmenu_bar_open): Declare variable before BLOCK_INPUT to
+       avoid gcc 2.95 error.
+
+2006-11-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * gtkutil.c (update_frame_tool_bar): If icon image is invalid and
+       wicon is null, insert an empty button.
+
+2006-11-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_raise_frame): Send _NET_ACTIVE_WINDOW when raising the
+       window.
+
+2006-11-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs.c (Fkill_emacs): Fix typo in docstring.
+
+2006-11-02  Nozomu Ando  <nand@mac.com>
+
+       * unexmacosx.c (mach_header, segment_command, vm_region, section)
+       [_LP64]: New defines.
+       (VM_REGION_BASIC_INFO_COUNT, VM_REGION_BASIC_INFO, LC_SEGMENT)
+       (MH_MAGIC) [_LP64]: Redefine.
+       (delta): Remove variable.
+       (curr_file_offset, pagesize): New variables.
+       (ROUNDUP_TO_PAGE_BOUNDARY): New macro.
+       (data_segment_old_fileoff): Initialize explicitly.
+       (print_region, unexec_regions_recorder, print_load_command_name)
+       (copy_segment, copy_data_segment): Use long format in printf.
+       (MAX_UNEXEC_REGIONS): Increase to 400.
+       (unexec_regions_recorder): Don't warn too many regions here.
+       (find_emacs_zone_regions): Warn too many regions here.
+       (print_load_command_name) [_LP64]: Show correct load command name.
+       (copy_segment, copy_data_segment): Use variable `curr_file_offset'.
+       Show starting virtual memory address.  Don't show ending file offset.
+       (copy_symtab, copy_dysymtab, copy_twolevelhints): New argument DELTA.
+       (dump_it): Use new local variable `linkedit_delta' and pass to them.
+       Error if trying to handle multiple DATA segments.
+       (unexec): Initialize variable `pagesize'.
+
+2006-11-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * eval.c (Fcatch): Doc fix.
+
+2006-10-31  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c [MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v)
+       (xpm_put_color_table_v, xpm_get_color_table_v, xpm_make_color_table_h)
+       (xpm_put_color_table_h, xpm_get_color_table_h, xpm_str_to_color_key)
+       (xpm_load_image): Add const qualifier to arguments.
+       [MAC_OS] (xpm_color_key_strings): Make static const.
+
+       * mac.c (create_apple_event_from_event_ref)
+       (create_apple_event_from_drag_ref, skip_white_space, parse_comment)
+       (parse_include_file, parse_binding, parse_component)
+       (parse_resource_name, parse_value, parse_resource_line)
+       (xrm_merge_string_database, xrm_get_resource)
+       (xrm_get_preference_database): Add const qualifier to arguments.
+       [MAC_OSX] (sys_select): Make variable `context' static const.
+
+       * macfns.c (mac_color_map): Make static const.
+       (mac_color_map_lookup): Add const qualifier to arguments.
+
+       * macmenu.c (install_menu_quit_handler): Make variable `typesList'
+       static const.
+       (name_is_separator): Add const qualifier to arguments.
+
+       * macselect.c (init_service_handler): Make variable `specs' static
+       const.
+
+       * macterm.c (mac_create_bitmap_from_bitmap_data): Make variable
+       `swap_nibbles' static const.
+       (atsu_get_text_layout_with_text_ptr): Make variables `lengths',
+       `tags', `sizes', `values' static const.
+       (mac_draw_string_common): Make variables `context' static.
+       Make variables `tags', `sizes', and `values' static const.
+       (pcm_get_status, x_detect_focus_change, x_scroll_bar_handle_click)
+       (xlfdpat_create, xlfdpat_block_match_1, xlfdpat_match)
+       (mac_to_x_fontname, parse_x_font_name, add_mac_font_name)
+       (mac_do_list_fonts, is_fully_specified_xlfd, do_grow_window)
+       (mac_store_event_ref_as_apple_event, mac_make_rdb): Add const
+       qualifier to arguments.
+       (xlfd_scalable_fields, keycode_to_xkeysym_table)
+       (fn_keycode_to_keycode_table): Make static const.
+       (mac_load_query_font): Make variables `tags', `sizes', `values',
+       `types', and `selectors' static const.
+       (mac_handle_command_event, mac_handle_window_event):
+       Make variables `names' and `types' static const.
+       (init_command_handler, install_window_handler): Make variables
+       `specs*' static const.
+       (mac_handle_font_event, mac_handle_text_input_event)
+       (mac_store_service_event): Make variables `names' and `types'
+       const.  Make variables `names_*' and `types_*' static const.
+
+       * macterm.h (create_apple_event_from_event_ref)
+       (create_apple_event_from_drag_ref, xrm_merge_string_database)
+       (xrm_get_resource, xrm_get_preference_database): Add const
+       qualifier to arguments in externs.
+
+2006-10-31  Kenichi Handa  <handa@m17n.org>
+
+       * xfns.c (xic_create_xfontset): Fix previous change.
+
+2006-10-30  Chong Yidong  <cyd@stupidchicken.com>
+
+       * s/openbsd.h (LD_SWITCH_SYSTEM): Add /usr/pkg/lib and
+       /usr/pkg/lib to library search path.
+
+2006-10-29  Mark Davies  <mark@mcs.vuw.ac.nz>  (tiny change)
+
+       * ralloc.c (relinquish): Use a long for excess space counter to
+       handle 64-bit case correctly.
+
+2006-10-29  Jeramey Crawford  <jeramey@jeramey.com>
+
+       * m/amdx86-64.h: Add defines for OpenBSD x86-64.
+
+2006-10-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * window.c (Fdisplay_buffer): Fix typo in docstring.
+
+2006-10-27  Ben North  <ben@redfrontdoor.org>  (tiny change)
+
+       * w32term.c (x_draw_glyph_string_foreground): Set background mode
+       to TRANSPARENT before using overstrike to simulate bold faces.
+
+       * xfaces.c (best_matching_font): Fix logic to decide whether to
+       use overstriking to simulate bold-face (it was reversed).
+
+2006-10-23  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (remember_mouse_glyph): Do nothing if glyphs are not
+       initialized.
+
+       * keyboard.c (read_char): Make an element (t . EVENT) in
+       unread-command-events add EVENT to the current command's key sequence.
+       (syms_of_keyboard) <unread-command-events>: Update doc.
+
+2006-10-21  Richard Stallman  <rms@gnu.org>
+
+       * minibuf.c (Vread_expression_map): Define here.
+       (Qread_expression_history): New variable.
+       (syms_of_minibuf): Initialize them.
+       (Feval_minibuffer): Use Vread_expression_map and
+       Qread_expression_history.
+
+2006-10-21  Kenichi Handa  <handa@m17n.org>
+
+       * xfns.c (xic_create_fontsetname): If ADSTYLE field is not a wild
+       card, change it to "*".
+       (xic_create_xfontset): Call XCreateFontSet for each single
+       fontname in fontsetname.
+
+2006-10-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * callint.c (callint_message): Convert to a Lisp string.
+       (syms_of_callint): Initialize it.
+       (callint_message_size): Var deleted.
+       (Fcall_interactively): Use Fformat instead of doprnt to construct
+       prompt string.
+
+2006-10-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xdisp.c (display_mode_line): Clear enabled_p flag on mode-line row.
+
+2006-10-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (Vmac_carbon_version_string) [TARGET_API_MAC_CARBON]:
+       New variable.
+       (syms_of_macfns) [TARGET_API_MAC_CARBON]: Defvar it.
+
+2006-10-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xselect.c (x_handle_selection_request): If the converted_selection
+       is nil or XCDR (converted_selection) is nil, decline the request.
+
+2006-10-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (get_utf8_string): Remove warnings with casts.
+       (xg_tool_bar_button_cb): Ditto.
+       (xg_tool_bar_callback): Ditto.
+
+2006-10-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Remove unused
+       variable ch_dim.
+       (adjust_frame_glyphs_for_window_redisplay): Likewise.  Don't allocate
+       menu bar window matrices on non-X systems.
+
+       * mac.c (Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
+
+       * macterm.c (mac_query_char_extents): Don't return glyph ID if layout
+       adjustment is needed.
+       (mac_load_query_font): Check if width and height are positive.
+
+2006-10-14  Richard Stallman  <rms@gnu.org>
+
+       * sysdep.c (init_sys_modes): Delete DEFVAR_LISP in the wrong place.
+
+2006-10-13  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (decode_mode_spec): Ignore %c and %l constructs in frame
+       title.
+
+2006-10-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymap.c (Fkey_binding): Check Lisp_Object types before doing
+       XCAR and XINT.
+
+2006-10-12  Romain Francoise  <romain@orebokech.com>
+
+       * image.c (xbm_read_bitmap_data): Delete extra semicolon.
+
+2006-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c: Include xterm.h for x_fully_uncatch_errors and friends.
+
+       * dispextern.h: Declare x_create_bitmap_from_xpm_data.
+
+       * xterm.c (x_check_expected_move): Remove unused var `count'.
+
+       * xmenu.c (syms_of_xmenu): Use Ffset rather than Fdefalias, since
+       Fdefalias is not declared in any *.h file.
+
+2006-10-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * dispnew.c (sit_for): Sit forever if TIMEOUT is t.
+
+       * keyboard.c (command_loop_1): Handle non-number values of
+       `minibuffer-message-timeout'.
+       (Fexecute_extended_command): Fix typo.
+
+       * minibuf.c (temp_echo_area_glyphs): Sit for
+       `minibuffer-message-timeout' seconds.
+
+2006-10-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_draw_image_string, mac_draw_image_string_16):
+       Add argument OVERSTRIKE_P.
+       (mac_draw_string_common, mac_draw_image_string_cg): Likewise.
+       Support overstrike.
+       (mac_draw_string, mac_draw_string_16): Remove functions.
+       (x_draw_glyph_string_foreground): Use overstrike when needed.
+       (x_draw_composite_glyph_string_foreground): Likewise.
+       Use mac_draw_image_string_16 instead of mac_draw_string_16.
+       (mac_load_query_font): Rename from XLoadQueryFont.  Take argument
+       F instead of DPY.  All uses changed.  Don't save/restore font.
+
+2006-10-07  Ralf Angeli  <angeli@caeruleus.net>
+
+       * w32fns.c (w32_createwindow): Honour left and top positions if
+       supplied explicitly.
+
+2006-10-06  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (pos_visible_p): Fix value when EOB is visible.
+
+2006-10-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * frame.c (Qinhibit_face_set_after_frame_default): New var.
+       (syms_of_frame): Initialize it.
+       (x_set_frame_parameters): Avoid resetting :font attributes to the
+       new-frame defaults.
+
+2006-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (clear_regexp_cache): Declare.
+
+       * search.c (compile_pattern): Only check `cp->syntax_table' if needed.
+       (compile_pattern_1): Remember `used_syntax' in `cp->syntax_table'.
+       (clear_regexp_cache): Only flush those regexps which depend on
+       a syntax-table.
+
+       * regex.c (regex_compile): Set the new `used_syntax' bit.
+
+       * regex.h: Remove file local variables.
+       (struct re_pattern_buffer): New field `used_syntax'.
+
+2006-10-03  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (list_processes_1): Run sentinels before removing dead
+       processes.  Also remove `closed' network connections.
+
+2006-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (handle_fontified_prop): Don't fontify at EOB.
+
+2006-09-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * config.in: Regenerated.
+
+2006-09-29  Juri Linkov  <juri@jurta.org>
+
+       * buffer.c (syms_of_buffer): Reorder coding systems in the
+       docstring of %z to the real order displayed in the modeline.
+
+2006-09-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (Fdefine_key): Yet another int/Lisp_Object mixup (YAILOM).
+
+2006-09-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * indent.c (Fvertical_motion): Do move back if the Lisp string
+       being displayed contains newlines.
+
+2006-09-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_compute_glyph_string_overhangs, XLoadQueryFont)
+       [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw before QDTextBounds.
+
+2006-09-26  Kenichi Handa  <handa@m17n.org>
+
+       * keymap.c (Fsingle_key_description): For an invalid char, return
+       "Invalid char code NNNNN".
+
+2006-09-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * callint.c (Fcall_interactively): Doc fix.
+
+2006-09-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (x_underline_at_descent_line): New variable.
+       (syms_of_macterm): DEFVAR_BOOL it.
+       (x_draw_glyph_string): Use it.
+       (XLoadQueryFont): Calculate min_bounds.descent and max_bounds.descent.
+
+2006-09-25  Kenichi Handa  <handa@m17n.org>
+
+       * keymap.c (Fsingle_key_description): Return unique names for
+       generic characters.
+
+2006-09-24  Richard Stallman  <rms@gnu.org>
+
+       * search.c (compile_pattern_1): Don't BLOCK_INPUT.
+
+2006-09-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in ($(BLD)/fns.$(O), $(BLD)/w32proc.$(O)):
+       Depend on nt/inc/langinfo.h and nt/inc/nl_types.h.
+
+       * w32proc.c (nl_langinfo): New function.
+
+       * w32fns.c (w32-pass-alt-to-system, w32-alt-is-meta)
+       (w32-pass-lwindow-to-system, w32-enable-num-lock)
+       (w32-enable-caps-lock, w32-scroll-lock-modifier)
+       (w32-lwindow-modifier, w32-rwindow-modifier)
+       (w32-apps-modifier, w32-mouse-button-tolerance): Doc fix.
+
+2006-09-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * minibuf.c (Finternal_complete_buffer, Fread_minibuffer)
+       (Fdisplay_completion_list): Fix typos in docstrings.
+
+2006-09-23  Romain Francoise  <romain@orebokech.com>
+
+       * s/gnu-linux.h (MAIL_USE_FLOCK): Check for HAVE_LIBLOCKFILE too.
+
+2006-09-23  Kenichi Handa  <handa@m17n.org>
+
+       * keymap.c (Fmap_keymap): Docstring mentions about generic character.
+
+2006-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * regex.c (analyse_first): For eight-bit-control chars, mark both the
+       char's value and its leading byte in the fastmap.
+       (re_search_2): When fast-scanning without translation, be careful to
+       check that we only match the leading byte of a multibyte char.
+
+       * charset.h (PREV_CHAR_BOUNDARY): Make it work from within a char's
+       byte sequence.
+       (AT_CHAR_BOUNDARY): New macro.
+
+2006-09-22  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (optimize_sub_char_table): Don't optimize a sub-char-table
+       whose default value is non-nil.
+
+2006-09-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_file_with_chooser): Only show C-l help for
+       Gtk+ versions < 2.10.
+
+       * xfns.c (syms_of_xfns): Fix typo in help text for
+       x-gtk-file-dialog-help-text.
+
+2006-09-21  Kim F. Storm  <storm@cua.dk>
+
+       * fns.c (Fmemq): Refill doc string.
+       (Fmemql): New defun, like memq but using eql.
+       (syms_of_fns): Defsubr it.
+
+2006-09-20  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (pos_visible_p): CHARPOS < 0 means return info for
+       last visible glyph in window.
+
+       * window.c (Fset_window_hscroll, Fwindow_line_height):
+       Doc fix.  Use "off-window" instead of "off-screen".
+       (Fpos_visible_in_window_p): Likewise.
+       If POS is t, return info for last visible glyph in window.
+
+2006-09-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * search.c (struct regexp_cache): New entry syntax_table.
+       (compile_pattern_1): Set it.
+       (syms_of_search): Initialize it.
+       (compile_pattern): Require the syntax_table entry of the cache
+       element to match the current syntax table entry.
+
+2006-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (Fwindow_end): Fix recent change.
+
+2006-09-19  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Fset_window_hscroll, Fpos_visible_in_window_p):
+       Doc fix.  Use "off-screen" instead of "invisible".
+       (Fwindow_line_height): Make line numbers 0-based.  Make line arg
+       optional; if nil, use current cursor row.  Handle text terminals
+       properly.  Return nil if non-interactive or pseudo-window.
+
+2006-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c: Include alloca.h if available.
+       (Fkey_binding): Only use AREF after checking it's a vector.
+       Remove unused var `window'.
+
+2006-09-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * emacs.c (shut_down_emacs) [!subprocesses]: Don't set
+       inhibit_sentinels.
+
+       * mac.c [!MAC_OSX] (select): Fix argument name.
+
+       * macmenu.c (enum mac_menu_kind, min_menu_id): New enumerator and
+       menu ID for Apple menu.
+       (menubar_selection_callback): Remove function.
+       (find_and_call_menu_selection): New function from xmenu.c.
+       (x_activate_menubar): Use it.
+       (set_frame_menubar): Don't use f->output_data.mac->menubar_active.
+
+       * macterm.c (menubar_selection_callback): Remove extern.
+       (M_APPLE): Change to 234.
+       (do_apple_menu) [!TARGET_API_MAC_CARBON]: Make non-static.
+       (do_menu_choice): Remove function.
+
+       * macterm.h (struct mac_output): Remove member menubar_active.
+       (do_menu_choice): Remove extern.
+       (do_apple_menu) [!TARGET_API_MAC_CARBON]: Add extern.
+
+2006-09-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (syms_of_xfns): Rename x_gtk_show_chooser_help_text to
+       x_gtk_file_dialog_help_text.
+
+       * gtkutil.c (xg_uses_old_file_dialog): Rename x-use-old-gtk-file-dialog
+       to x-gtk-use-old-file-dialog.
+       (xg_get_file_with_chooser): Rename x_gtk_show_chooser_help_text to
+       x_gtk_file_dialog_help_text.
+
+       * xfns.c (syms_of_xfns): Ditto.
+
+2006-09-18  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Fwindow_line_visibility): Remove.
+       (Fwindow_line_height): New defun replacing it.
+       (syms_of_window): Defsubr it.
+
+2006-09-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1.
+       [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Fix pointer type.
+
+2006-09-17  Jay Belanger  <belanger@truman.edu>
+
+       * gmalloc.c:
+       * md5.c:
+       * md5.h:
+       * strftime.c: Replace "GNU Library General Public License" by "GNU
+       General Public License" throughout.
+
+2006-09-17  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (update_text_area): Undo 2000-07-18 change.
+       Always redrawing whole row if line has mouse-face in it causes
+       excessive flickering of the mode line.
+
+2006-09-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * search.c (clear_regexp_cache): New function.
+
+       * syntax.c (Fmodify_syntax_entry): Clear regexp cache.
+
+2006-09-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_file_with_chooser):
+       Check x-gtk-show-chooser-help-text before adding the help text.
+
+       * xfns.c (syms_of_xfns): New variable: x-gtk-show-chooser-help-text.
+
+       * gtkutil.c (get_utf8_string): Try harder to convert to UTF8.  Gtk+
+       will simply crash if we fail.
+
+2006-09-16  Richard Stallman  <rms@gnu.org>
+
+       * regex.c (re_compile_pattern): Set gl_state.current_syntax_table.
+
+2006-09-15  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Fwindow_line_visibility): New defun for line-move-partial.
+       (syms_of_window): Defsubr it.
+       (Fwindow_end): Use window's buffer rather than current buffer.
+
+2006-09-15  Jay Belanger  <belanger@truman.edu>
+
+       * COPYING: Replace "Library Public License" by "Lesser Public
+       License" throughout.
+
+2006-09-15  David Kastrup  <dak@gnu.org>
+
+       * Makefile.in (keymap.o): Add "keymap.h" and "window.h" dependencies.
+
+       * keymap.c: include "window.h".
+       (Fcommand_remapping): New optional POSITION argument.
+       (Fkey_binding): New optional POSITION argument.  Completely rework
+       handling of mouse clicks to get the same order of keymaps as
+       `read-key-sequence' and heed POSITION.  Also temporarily switch
+       buffers to location of mouse click and back.
+
+       * keyboard.c (command_loop_1): Adjust call of `Fcommand_remapping'
+       for additional argument.
+       (parse_menu_item): Adjust call of `Fkey_binding' for additional
+       argument.
+       (read_key_sequence): If there are both `local-map' and `keymap'
+       text properties at some buffer position, heed both.
+
+       * keymap.h: Declare additional optional arguments of
+       `Fcommand_remapping' and `Fkey_binding'.
+
+2006-09-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * indent.c (Fcurrent_column, Findent_to): Fix typos in docstring.
+
+2006-09-14  Andreas Schwab  <schwab@suse.de>
+
+       * print.c: Whitespace fixup.
+
+2006-09-14  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (produce_image_glyph): Automatically crop wide images at
+       right window edge so we can draw the cursor on the same row to
+       avoid confusing redisplay by placing the cursor outside the visible
+       window area.
+
+2006-09-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xterm.c (x_initialize): Don't install Xt event timer here.
+       (x_timeout_atimer_activated_flag): New var.
+       (x_activate_timeout_atimer): New function to install Xt timer.
+       (x_send_scroll_bar_event, x_process_timeouts): Use it.
+
+       * xmenu.c (x_menu_set_in_use, popup_activate_callback)
+       (create_and_show_popup_menu, create_and_show_dialog): Use it.
+
+       * xterm.h (x_activate_timeout_atimer): Add prototype.
+
+2006-09-13  Richard Stallman  <rms@gnu.org>
+
+       * print.c (print_string): When printcharfun is t,
+       copy string contents and call strout on the copy.
+
+       * keyboard.c (read_char): If end_time specified, don't put the
+       event into this_command_keys.
+       (read_key_sequence): If Voverriding_terminal_local_map is specified,
+       don't check Voverriding_local_map at all.
+
+2006-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textprop.c (Fnext_property_change, Fnext_single_property_change)
+       (Fprevious_property_change, Fprevious_single_property_change):
+       Avoid changing limit, so we can correctly catch the case where the
+       property is constant up to limit.
+
+2006-09-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
+       * macterm.c (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
+       Undo 2006-09-08 change.
+
+2006-09-11  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymap.c (Fkey_binding): Use string position for string objects.
+
+2006-09-11  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (Fkey_binding): Fix last change.
+
+       * editfns.c (Fmessage): Recommend using (message "%s" ...).
+
+2006-09-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymap.c (Fkey_binding): Check for local keymap for mouse click
+       events.
+
+2006-09-10  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (Finput_pending_p): Check Vunread_input_method_events
+       and Vunread_post_input_method_events.
+
+       * dispnew.c (Fredisplay): Document return value.
+
+2006-09-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_close_connection): Call xg_display_close when USE_GTK.
+
+       * gtkutil.c (xg_display_close): Always change default display if needed,
+       check for < Gtk+ version 2.10 before calling gdk_display_close.
+
+2006-09-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c [MAC_OSX] (sys_select): Check argument `nfds' more rigidly.
+       Make variable `ofds' static.  Remove variable `maxfd'.
+
+       * macfns.c (Fx_file_dialog): Remove unused variable `f'.
+       Call check_mac.
+
+       * macmenu.c (Vmenu_updating_frame, syms_of_macmenu):
+       * w32menu.c (Vmenu_updating_frame, syms_of_w32menu):
+       Apply 2006-09-08 change for xmenu.c.
+
+       * xfns.c (Fx_file_dialog): Call check_x.
+
+2006-09-10  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_window_cursor_type): Use hollow cursor on
+       non-transparent images.
+
+2006-09-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * editfns.c (Fsystem_name): Mention "host" in the doc string.
+       (syms_of_editfns) <system-name>: Likewise.
+
+2006-09-08  Martin Rudalics  <rudalics@gmx.at>
+
+       * xdisp.c (mouse_autoselect_window): Remove.
+       (Vmouse_autoselect_window): New variable.  DEFVAR_LISP it.
+
+       * dispextern.h (mouse_autoselect_window): Remove extern.
+       (Vmouse_autoselect_window): Add extern.
+
+       * macterm.c (XTread_socket): Test Vmouse_autoselect_window
+       instead of mouse_autoselect_window.
+
+       * msdos.c (dos_rawgetc): Likewise.
+
+       * w32term.c (w32_read_socket): Likewise.
+
+       * xterm.c (handle_one_xevent): Likewise.
+
+2006-09-08  Richard Stallman  <rms@gnu.org>
+
+       * xdisp.c (Vmenu_updating_frame): Define here.
+       (syms_of_xdisp): DEFVAR it here.
+       (update_menu_bar): Always return hooks_run.
+       Set Vmenu_updating_frame.
+
+       * xdisp.c (redisplay_internal): Test Vinhibit_redisplay
+       before calculating SELECTED_FRAME.
+
+       * xmenu.c (Vmenu_updating_frame): Don't define here.
+       (syms_of_xmenu): Don't DEFVAR it here.
+
+       * xterm.c (x_error_quitter): For BadName error, just return.
+
+       * eval.c (find_handler_clause): Give up on debugger if INPUT_BLOCKED_P.
+
+       * casetab.c (init_casetab_once): Call set_case_table.
+
+       * emacs.c (shut_down_emacs): Set inhibit_sentinels.
+
+       * process.c (inhibit_sentinels): New variable.
+       (exec_sentinel): Test inhibit_sentinels.
+       (init_process): Initialize it.
+
+       * process.h (inhibit_sentinels): Add decl.
+
+       * search.c (looking_at_1, string_match_1, search_command):
+       Make syntax table's canon table point to eqv table.
+
+2006-09-08  Andreas Schwab  <schwab@suse.de>
+
+       * print.c (strout): Fix whitespace.
+
+2006-09-08  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (x_draw_glyph_string): Fix 2006-08-24 change.
+
+2006-09-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c [!MAC_OSX]: Don't include keyboard.h.
+       [!MAC_OSX] (select): Try detect_input_pending before ReceiveNextEvent
+       in the same BLOCK_INPUT block, in case that some input has already
+       been read asynchronously.  Pretend to be interrupted by a signal
+       if some input is available.
+       [MAC_OSX] (select_and_poll_event, sys_select): Likewise.
+       (SELECT_POLLING_PERIOD_USEC) [SELECT_USE_CFSOCKET]: Change to 100000.
+       Now used for ReceiveNextEvent timeout instead of select timeout.
+       (EVENT_CLASS_SOCK) [SELECT_USE_CFSOCKET]: Remove macro.
+       [SELECT_USE_CFSOCKET] (socket_callback): Add non-blocking connect
+       support.  Quit event loop.
+       [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Add non-blocking
+       connect support.  Reuse previously allocated CFRunLoopSource.
+       (Fmac_process_hi_command) [TARGET_API_MAC_CARBON]: New function.
+       (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it.
+
+       * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
+       Specify kWindowAsyncDragAttribute.
+
+       * macterm.c (mac_handle_origin_change, mac_handle_size_change)
+       (mac_get_ideal_size): New functions.
+       (x_set_offset, x_set_window_size, x_make_frame_visible)
+       (do_zoom_window, mac_handle_window_event, XTread_socket): Use them.
+       (install_window_handler, mac_handle_window_event)
+       [USE_CARBON_EVENTS]: Handle kEventWindowGetIdealSize and
+       kEventWindowBoundsChanged.
+       (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Don't call
+       DragWindow.
+
+2006-09-07  Andreas Schwab  <schwab@suse.de>
+
+       * m/ibms390x.h (START_FILES, LIB_STANDARD): Override to
+       use lib64 instead of lib.
+
+2006-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * Makefile.in: Avoid double quotes when possible.
+
+2006-09-06  Kenichi Handa  <handa@m17n.org>
+
+       * editfns.c (Fformat_time_string): Use make_unibyte_string to make
+       a Lisp string from the result of emacs_memftimeu call.
+
+2006-09-06  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (pos_visible_p): Remove exact_mode_line_heights_p arg;
+       so calculate heights even when pos-visible-in-window-p is called
+       with partially = t.  Don't overshoot last_visible_y in move_it_to.
+       Return row height and row number in new rowh and vpos args.
+       (cursor_row_fully_visible_p): First line is always "fully visible".
+       (try_window): Don't clear matrix if vscrolled.
+
+       * lisp.h (pos_visible_p): Update prototype.
+
+       * window.c (Fpos_visible_in_window_p): Adapt to new pos_visible_p.
+       Return row height and row number for partially visible rows.
+       Modify return value to a 2 element list for fully visible rows and
+       6 for partially visible row.
+       (window_scroll_pixel_based): Use pos_visible_p directly instead of
+       Fpos_visible_in_window_p.  Fix auto vscrolling for partially
+       visible lines.  Only vscroll backwards if already vscrolled
+       forwards.  Unconditionally vscroll forwards if PT is first (and
+       only) line.  Set new window start instead of scrolling at
+       start/end of tall line.
+
+2006-09-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (install_window_handler, mac_handle_window_event)
+       [USE_CARBON_EVENTS]: Handle kEventWindowClose.
+       [USE_MAC_TSM] (mac_handle_text_input_event): Set modifiers for
+       ASCII keystroke event.
+
+2006-09-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_file_with_chooser): Don't mention specific keys in
+       the file chooser message.  Only call gtk_file_chooser_set_current_name
+       when action is SAVE.
+
+2006-09-04  Andreas Schwab  <schwab@suse.de>
+
+       * Makefile.in: Double all single and back quotes in C-style
+       comments to help fontifier.
+
+2006-09-03  Jason Rumney  <jasonr@gnu.org>
+
+       * w32.c (shutdown_handler): New function to exit cleanly on shutdown.
+       (globals_of_w32): Register it as a signal handler.
+
+2006-09-02  Juri Linkov  <juri@jurta.org>
+
+       * marker.c (Fmarker_position): Doc fix.
+
+2006-09-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * window.c (syms_of_window) <split-height-threshold>:
+       <window-min-height, window-min-width>: Doc fix.
+
+2006-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_file_with_chooser): Change file chooser message
+       for writing files.  Call gtk_file_chooser_set_current_name to keep
+       default filename.
+
+       * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls.
+
+2006-09-02  Jindrich Makovicka  <makovick@gmail.com>  (tiny change)
+
+       * fns.c (concat) [__GNUC__]: Declare with
+       `__attribute__((noinline))'.
+
+       * eval.c (apply1, call2) [__GNUC__]: Declare with
+       `__attribute__((noinline))'.
+
+2006-09-02  Stuart D. Herring  <herring@lanl.gov>
+
+       * minibuf.c (Finternal_complete_buffer): New function.
+       (syms_of_minibuf): Defsubr it.
+       (Fread_buffer): Use it, instead of Vbuffer_alist.
+
+2006-09-01  Martin Rudalics  <rudalics@gmx.at>
+
+       * buffer.h (struct buffer_text): New field chars_modiff.
+       (CHARS_MODIFF, BUF_CHARS_MODIFF): New macros.
+       * buffer.c (Fbuffer_chars_modified_tick): New function returning
+       value of BUF_CHARS_MODIFF.
+       (syms_of_buffer): Defsubr it.
+       (Fget_buffer_create): Initialize BUF_CHARS_MODIFF.
+       * insdel.c (modify_region): New argument preserve_chars_modiff.
+       Set CHARS_MODIFF to MODIFF provided preserve_chars_modiff is zero.
+       (insert_1_both, insert_from_string_1, insert_from_buffer_1)
+       (adjust_after_replace, adjust_after_replace_noundo)
+       (replace_range, replace_range_2, del_range_2): Reset CHARS_MODIFF.
+       * lisp.h (modify_region): Add fourth argument in extern.
+       * casefiddle.c (casify_region): Call modify_region with fourth
+       argument zero to assert that CHARS_MODIFF is updated.
+       * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal)
+       (Ftranspose_regions): Likewise.
+       * textprop.c (Fadd_text_properties, Fset_text_properties)
+       (Fremove_text_properties, Fremove_list_of_text_properties):
+       Call modify_region with fourth argument 1 to avoid that
+       CHARS_MODIFF is updated.
+
+2006-08-31  Richard Stallman  <rms@gnu.org>
+
+       * editfns.c (Fformat): Don't sign-extend for %o or %x.
+
+2006-08-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * indent.c (Fvertical_motion): Don't move back if we were
+       displaying a Lisp string, either.
+
+2006-08-28  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_window_cursor_type) [!HAVE_WINDOW_SYSTEM]:
+       Don't attempt to replace cursor on image glyphs.
+
+2006-08-28  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (Fdetect_coding_region, Fdetect_coding_string):
+       Fix docstring about ISO-2022 control characters.
+
+2006-08-28  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_window_cursor_type): Replace BOX cursor on images
+       with a hollow box cursor if image is larger than 32x32 (or the default
+       frame font if that is bigger).  Replace any other cursor on images
+       with hollow box cursor, as redisplay doesn't support bar and hbar
+       cursors on images.
+
+2006-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Undo previous
+       change.  Move mutex lock/unlock operations inside BLOCK_INPUT.
+
+       * dired.c (directory_files_internal_unwind, directory_files_internal)
+       (file_name_completion): Add BLOCK_INPUT around opendir/closedir.
+
+       * image.c [MAC_OS] (image_load_qt_1): Use ComponentResult instead
+       of OSErr.
+
+       * keyboard.c (in_sighandler): Remove variable.
+       (Fcurrent_idle_time): Add missing `doc:'.
+       (input_available_signal, init_keyboard): Undo previous change.
+
+       * keyboard.h (in_sighandler): Remove extern.
+
+       * mac.c (create_apple_event_from_event_ref, select)
+       (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator)
+       (Fmac_set_file_type, cfstring_create_normalized)
+       (mac_get_system_locale, select_and_poll_event, sys_select):
+       Use OSStatus instead of OSErr.
+
+       * macfns.c [TARGET_API_MAC_CARBON] (mac_update_proxy_icon):
+       Don't use FRAME_FILE_NAME.  Use (FS)UpdateAlias.
+       (Fx_create_frame): Apply 2006-07-03 for xfns.c.
+
+       * macselect.c (get_scrap_from_symbol, clear_scrap, put_scrap_string)
+       (put_scrap_private_timestamp, scrap_has_target_type, get_scrap_string)
+       (get_scrap_private_timestamp, get_scrap_target_type_list)
+       (x_own_selection, x_get_foreign_selection)
+       (Fx_disown_selection_internal, Fx_selection_owner_p)
+       (Fx_selection_exists_p): Use OSStatus instead of OSErr.
+
+       * macterm.c (mac_draw_string_common, mac_query_char_extents)
+       (x_iconify_frame, XLoadQueryFont, install_window_handler)
+       (mac_handle_command_event, init_command_handler, init_menu_bar):
+       Use OSStatus instead of OSErr.
+       (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Don't use
+       FRAME_FILE_NAME.
+       (x_query_font): Apply 2006-08-04 change for xterm.c.
+       (Qhi_command): Rename from Qhicommand.  All uses changed.
+
+       * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]: Remove member
+       file_name.
+       (FRAME_FILE_NAME): Remove macro.
+       (install_window_handler, create_apple_event_from_event_ref):
+       Return OSStatus instead of OSErr.
+
+2006-08-26  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (Fset_buffer_multibyte):
+       * editfns.c (Fcurrent_time, Fget_internal_run_time):
+       * macfns.c (Fxw_color_values):
+       * w32fns.c (Fxw_color_values):
+       * xfns.c (Fxw_color_values): Simplify; use list3.
+
+       * fileio.c (Fmake_directory_internal, Fdelete_directory)
+       (Fdelete_file): Simplify; use list1.
+       (Frename_file, Fadd_name_to_file, Fmake_symbolic_link):
+       Simplify; remove NO_ARG_ARRAY stuff, use list2.
+
+2006-08-25  Richard Stallman  <rms@gnu.org>
+
+       * buffer.c (Fswitch_to_buffer): Fix previous change.
+
+2006-08-25  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (Fcurrent_idle_time): Simplify.
+
+2006-08-25  Richard Stallman  <rms@gnu.org>
+
+       * fns.c (sxhash_string): Rotate properly; don't lose bits.
+
+2006-08-24  Francesc Rocher  <francesc.rocher@gmail.com>
+
+       * xdisp.c (overline_margin): New variable.
+       (x_produce_glyphs): Use it.
+       (syms_of_xdisp): DEFVAR_INT it.
+
+       * xterm.c (x_underline_at_descent_line): New variable.
+       (syms_of_xterm): DEFVAR_BOOL it.
+       (x_draw_glyph_string): Use it.
+       Draw underline and overline up to the end of line if the face
+       extends to the end of line.
+
+       * macterm.c: Likewise.
+
+       * w32term.c: Likewise.
+
+2006-08-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * buffer.c (Fswitch_to_buffer): Move buffer to front of
+       buffer-alist if necessary.
+
+2006-08-22  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (update_tool_bar): Redisplay toolbar also when only
+       number of items changes.
+
+2006-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * buffer.c (Fset_buffer_multibyte): Record proper undo entry.
+
+2006-08-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * keyboard.c: Clarify difference between in_sighandler and
+       handling_signal.
+
+2006-08-21  Kim F. Storm  <storm@cua.dk>
+
+       * macterm.c (x_draw_stretch_glyph_string):
+       * w32term.c (x_draw_stretch_glyph_string):
+       * xterm.c (x_draw_stretch_glyph_string): It is ok to draw a
+       stretch glyph in left marginal areas on header and mode lines.
+
+2006-08-21  Kenichi Handa  <handa@m17n.org>
+
+       * keyboard.c (syms_of_keyboard): Docstring of
+       Vunread_post_input_method_events and Vunread_input_method_events
+       fixed.
+
+2006-08-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (show_help_echo): Preserve mouse movement flag if
+       tracking mouse.
+
+2006-08-20  Richard Stallman  <rms@gnu.org>
+
+       * xfaces.c (load_pixmap): Add quotes in error message.
+
+       * keyboard.c (Fcurrent_idle_time): New function.
+       (syms_of_keyboard): defsubr it.
+
+2006-08-18  Nick Roberts  <nickrob@snap.net.nz>
+
+       * window.c (Fset_window_fringes): Do nothing on a tty.
+       (Fwindow_fringes): Put ? operator after the line break.
+
+2006-08-16  Andreas Schwab  <schwab@suse.de>
+
+       * print.c (debug_output_compilation_hack): Fix return type.
+
+2006-08-16  Richard Stallman  <rms@gnu.org>
+
+       * print.c (debug_output_compilation_hack): New function.
+
+2006-08-16  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (choose_write_coding_system): Use LF for end-of-line
+       in auto-saving.
+
+2006-08-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (read_char): Don't change idle timer state at all if
+       end_time is supplied.
+
+2006-08-15  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New arg RET.  If SRC
+       is exhausted, return with RET.
+       (detect_coding_emacs_mule, detect_coding_iso2022)
+       (detect_coding_sjis, detect_coding_big5, detect_coding_utf_8)
+       (detect_coding_utf_16, detect_coding_ccl): Adjusted for the above
+       change.
+
+2006-08-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (read_char): Don't reset idle timers if a time limit
+       is supplied.
+
+2006-08-14  Kim F. Storm  <storm@cua.dk>
+
+       * .gdbinit (pitx): Print iterator position.
+       Limit stack dump in case iterator is not initialized.
+
+2006-08-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * frame.c (Fmouse_position, Fmouse_pixel_position)
+       (Fset_mouse_position, Fset_mouse_pixel_position): Doc fix.
+
+2006-08-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xselect.c (Fx_register_dnd_atom): New function.
+       (syms_of_xselect): Defsubr it.
+       (x_handle_dnd_message): Check that message_type is in
+       dpyinfo->x_dnd_atoms before generating lisp event.
+
+       * xterm.h (struct x_display_info): Add x_dnd_atoms* to keep track
+       of drag and drop Atoms.
+
+       * xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms*.
+
+2006-08-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * keyboard.c: Define in_sighandler.
+       (input_available_signal): Set in_sighandler.
+       (init_keyboard): Initialize in_sighandler.
+
+       * keyboard.h: Declare in_sighandler.
+
+       * alloc.c (UNBLOCK_INPUT_ALLOC, BLOCK_INPUT_ALLOC): Use in_sighandler
+       to check if mutex should be locked or not.
+
+2006-08-09  Richard Stallman  <rms@gnu.org>
+
+       * keyboard.c (keyremap_step): No-op if fkey->parent = nil.
+       (read_key_sequence): Always start fkey.start and fkey.end at 0,
+       and likewise for keytran.
+
+2006-08-09  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (syms_of_coding): Improve the docstring
+       of file-coding-system-alist.
+
+2006-08-07  Andreas Schwab  <schwab@suse.de>
+
+       * puresize.h (BASE_PURESIZE): Increase to 1120000.
+
+2006-08-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * buffer.c (Vchange_major_mode_hook, Qchange_major_mode_hook): New vars.
+       (Fkill_all_local_variables): Use it.
+       (syms_of_buffer): Defvar it.
+
+2006-08-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (w32_valid_pointer_p): New function.
+
+       * w32.h: Add prototype for w32_valid_pointer_p.
+
+       * alloc.c: Include w32.h.
+       (valid_lisp_object_p) [WINDOWSNT]: Call w32_valid_pointer_p to do
+       the job.
+
+       * keyboard.c (kbd_buffer_get_event): Return Qnil when current time
+       is exactly equal to end_time, not only when it is past that.
+
+2006-08-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (read_char): Rebalance specpdl after receiving jump.
+
+       * process.c: Reapply 2006-08-01 change.
+
+2006-08-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32_query_font): Fix last change: use stricmp.
+
+2006-08-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * editfns.c (Fsubst_char_in_region): Redo the setup work after running
+       the before-change-functions since they may have altered the buffer.
+
+2006-08-04  Ralf Angeli  <angeli@caeruleus.net>
+
+       * w32fns.c (w32_createwindow): Handle -geometry command line option
+       and the geometry settings in the Registry.
+
+2006-08-04  Kenichi Handa  <handa@m17n.org>
+
+       * w32fns.c (w32_query_font): Compare names by ignoring case.
+
+       * xterm.c (x_query_font): Compare names by ignoring case.
+
+2006-08-03  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (w32_menu_show, w32_dialog_show): Call Fsignal to quit
+       when no option selected.
+
+2006-08-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * process.c: Revert last change.
+
+2006-08-01  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (wait_reading_process_output_unwind): New function.
+       Restores waiting_for_user_input_p to saved value.
+       (wait_reading_process_output): Unwind protect waiting_for_user_input_p
+       instead of save/restore old value on stack.
+
+2006-07-30  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * editfns.c: Undo 2006-06-27 change.
+
+2006-07-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * coding.c (Ffind_operation_coding_system): Revert the change from
+       2006-05-29.
+
+       * alloc.c [WINDOWSNT]: Include fcntl.h, to fix last change.
+
+2006-07-28  Richard Stallman  <rms@gnu.org>
+
+       * xfaces.c (lookup_named_face, Fdisplay_supports_face_attributes_p):
+       Add conditional aborts for clarity.
+
+       * xdisp.c (update_menu_bar): New arg HOOKS_RUN.  Callers changed.
+       Used to avoid running the hooks over and over for each frame.
+       (prepare_menu_bars): Pass value from update_menu_bar
+       as HOOKS_RUN of next call.
+
+       * keyboard.c (safe_run_hooks_1): Don't crash if Vrun_hooks is nil.
+
+2006-07-28  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (valid_pointer_p): New function (from valid_lisp_object_p).
+       (valid_lisp_object_p): Use it to check for valid SUBRP obj.
+
+2006-07-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (read_char): New arg END_TIME specifying timeout.
+       All callers changed.  Turn off echoing if END_TIME is non-NULL.
+       (kbd_buffer_get_event): New arg END_TIME.
+
+       * lread.c (read_filtered_event): New arg SECONDS to wait until.
+       (Fread_char, Fread_event, Fread_char_exclusive): New arg SECONDS.
+
+       * lisp.h: Update read-char, read-event, and read_filtered_event
+       prototypes.
+
+       * keyboard.h: Include systime.h.  Update read_char prototype.
+
+2006-07-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * alloc.c (find_string_data_in_pure): New function.
+       (make_pure_string): Use it to reuse existing string data if possible.
+
+       * puresize.h (BASE_PURESIZE): Decrease to 1102000.
+
+2006-07-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (Fdefine_key): If the key binding definition looks like an
+       XEmacs-style key sequence, convert it to Emacs's format.
+
+2006-07-22  Ralf Angeli  <angeli@caeruleus.net>
+
+       * w32fns.c (w32_createwindow): If `left' and/or `top' frame
+       parameters are bound to some values, use that instead of
+       CW_USEDEFAULT.
+
+2006-07-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (convert_time): Use explicit long double constants to
+       ensure long double arithmetics is used throughout.
+
+2006-07-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp): New vars.
+       (init_alloc_once): Initialize them.
+       (pure_alloc): Allocate non-Lisp objects from the end of pure storage
+       without alignment.
+
+       * puresize.h (BASE_PURESIZE): Decrease to 1141000.
+
+2006-07-18  Francis Litterio  <franl@world.std.com>
+
+       * w32term.c (x_calc_absolute_position): Fix frame positioning
+       with negative X/Y coordinates.
+
+2006-07-18  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * xterm.c (x_connection_closed, x_error_quitter): Mark as NO_RETURN.
+
+       * textprop.c (text_read_only): Likewise.
+
+       * lread.c (end_of_file_error): Likewise.
+
+       * lisp.h (circular_list_error, memory_full, buffer_memory_full):
+       Likewise.
+
+       * eval.c (unwind_to_catch): Likewise.
+
+       * buffer.h (buffer_slot_type_mismatch): Likewise.
+
+2006-07-18  Kim F. Storm  <storm@cua.dk>
+
+       Cleanup Fsignal calls that never returns; now only use it for Qquit.
+
+       * eval.c (xsignal): New func.  Like Fsignal, but marked no-return.
+       (xsignal0, xsignal1, xsignal2, xsignal3): New no-return functions.
+       (signal_error): New no-return function (from xfaces.c).
+       (Fthrow): Use xsignal2 instead of Fsignal + abort.
+       (error): Use xsignal1 instead of Fsignal + abort.
+       (FletX, Flet, grow_specpdl): Use signal_error.
+       (Feval, Ffuncall, funcall_lambda): Use xsignal1, xsignal2.
+
+       * alloc.c (buffer_memory_full, memory_full): Use xsignal.  Remove loop.
+       (list1): New function.
+
+       * lisp.h (list1): Add EXFUN.
+       (xsignal, xsignal0, xsignal1, xsignal2, xsignal3, signal_error):
+       Add prototypes.  Mark them as no-return.
+
+       * buffer.c (Fbuffer_local_value, Fbarf_if_buffer_read_only):
+       Use xsignal1.
+
+       * callint.c (check_mark): Use xsignal0.
+
+       * casefiddle.c (casify_object): wrong_type_argument is no-return.
+
+       * cmds.c (Fforward_char, Fdelete_char): Use xsignal0.
+
+       * coding.c (Fcheck_coding_system): Use xsignal1.  Remove loop.
+       (Fdefine_coding_system_internal): Use xsignal1.
+
+       * data.c (circular_list_error): Use xsignal.
+       (wrong_type_argument): Use xsignal2.  Don't care about return value.
+       (args_out_of_range, args_out_of_range_3): Use xsignal2, xsignal3.
+       Remove loop around Fsignal.
+       (indirect_variable, Fsymbol_value, set_internal, Fdefault_value)
+       (indirect_function, Findirect_function, Fstring_to_number)
+       (Fmakunbound, Ffmakunbound, Fsymbol_function, Ffset): Use xsignal1.
+       (arith_driver, float_arith_driver, Frem, Fmod, arith_error):
+       Use xsignal0.
+
+       * doc.c (Fdocumentation): Use xsignal1.
+
+       * editfns.c (region_limit, Fget_internal_run_time): Use xsignal0.
+
+       * fileio.c (report_file_error): Use xsignal.
+       (barf_or_query_if_file_exists, Fcopy_file, Fdelete_file)
+       (Finsert_file_contents): Use xsignal2.
+       (syms_of_fileio): Use list2, list3.
+
+       * floatfns.c (arith_error, range_error, domain_error): Use xsignal2.
+       (range_error2, domain_error2): Use xsignal3.
+       (rounding_driver, fmod_float): Use xsignal0.
+       (float_error): Use xsignal1.
+       (matherr): Use xsignal.
+
+       * fns.c (Flength): wrong_type_argument is no-return.
+       (hashfn_user_defined, Fmake_hash_table): Use signal_error.
+       (Fmd5): Use xsignal1.
+
+       * frame.c (x_set_line_spacing, x_set_screen_gamma): Use signal_error.
+
+       * keyboard.c (recursive_edit_1): Use xsignal1.
+
+       * keymap.c (Fmap_keymap): Use xsignal1.
+
+       * lread.c (Fload): Use xsignal2, signal_error.
+       (end_of_file_error): Use xsignal0, xsignal1.
+       (read0): Use xsignal1.
+       (invalid_syntax): New error function marked no-return.
+       (read_integer, read1, read_list): Use it.
+
+       * macselect.c (x_get_local_selection): Use signal_error.
+
+       * msdos.c (Fmsdos_set_mouse_buttons): Use xsignal2.
+
+       * search.c (compile_pattern_1): Use xsignal1.
+       (signal_failure): Remove (was only called once).
+       (search_command): Use xsignal1 instead of signal_failure.
+
+       * syntax.c (scan_lists): Use xsignal3.
+
+       * textprop.c (text_read_only): Use xsignal0, xsignal1.
+
+       * unexsol.c (unexec): Use xsignal.
+
+       * window.c (window_scroll_pixel_based, window_scroll_line_based):
+       Use xsignal0.
+
+       * xfaces.c (signal_error): Move to eval.c.
+       (resolve_face_name): Use xsignal1.
+
+       * xfns.c (x_decode_color): Use signal_error.
+
+       * xselect.c (x_get_local_selection, copy_multiple_data)
+       (x_get_window_property_as_lisp_data)
+       (lisp_data_to_selection_data, CHECK_CUT_BUFFER)
+       (Fx_get_cut_buffer_internal): Use signal_error.
+
+2006-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (XTread_socket): Undo previous change.
+
+2006-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (keycode_to_xkeysym): Remove function.  All uses now
+       directly lookup keycode_to_xkeysym_table.
+       [USE_MAC_TSM] (mac_handle_text_input_event): Don't construct
+       ASCII_KEYSTROKE_EVENT for non-zero keycode_to_xkeysym_table entries.
+       (XTread_socket): Use character codes to construct keypad key events.
+       (mac_initialize_display_info) [MAC_OSX]: Use CGDisplaySamplesPerPixel.
+       (x_delete_display): Apply 2006-07-04 change for xterm.c.
+
+2006-07-17  Richard Stallman  <rms@gnu.org>
+
+       * keyboard.c (Vcommand_error_function): New variable.
+       (syms_of_keyboard): Defvar it.
+       (cmd_error_internal): Simplify, and handle Vcommand_error_function.
+
+       * dispnew.c (init_display): Mention DISPLAY as well as TERM in err msg.
+
+2006-07-17  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (handle_single_display_spec): Ensure the right value of
+       it->position is saved by push_it.
+       (pop_it): Restore it->object for GET_FROM_BUFFER and GET_FROM_STRING.
+       (reseat_1): Don't setup it->object twice.
+       (set_iterator_to_next): No need to set it->object after pop_it.
+       (move_it_to): Explicitly check to see if last move reached to_charpos.
+
+2006-07-17  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * xdisp.c (display_mode_line): Preserve match data.
+
+2006-07-14  Kim F. Storm  <storm@cua.dk>
+
+       * w32.c (pfn_WSACreateEvent, pfn_WSACloseEvent): New func ptrs.
+       (init_winsock): Load them.  Use ws2_32.dll.
+       (sys_listen): Undo last change.  Just set FILE_LISTEN flag.
+       (sys_accept): Undo last change.  Instead, set child status to
+       STATUS_READ_ACKNOWLEDGED and reset char_avail event so next
+       sys_select will wakeup the reader thread.
+       (_sys_wait_accept): New function used by reader thread to wait for
+       an incoming connection on a server socket.
+
+       * w32.h (_sys_read_ahead, _sys_wait_accept): Add prototypes.
+
+       * w32proc.c (reader_thread): Use _sys_wait_accept to wait on a
+       server socket (FILE_LISTEN flag).
+
+2006-07-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * sound.c (alsa_init): Call snd_pcm_close after successful snd_pcm_open.
+
+2006-07-14  Kim F. Storm  <storm@cua.dk>
+
+       * w32.c: Fix high cpu load for server sockets.
+       (pfn_WSAEventSelect): New function ptr.
+       (init_winsock): Load it.
+       (sys_listen): Set FILE_LISTEN flag. Set event mask for socket's
+       char_avail event object to FD_ACCEPT.
+       (sys_accept): Check FILE_LISTEN flag.  Set event mask on new
+       socket's char_avail event object to FD_READ|FD_CLOSE.
+
+       * w32.h (FILE_LISTEN): New filedesc flag value.
+
+2006-07-13  Kim F. Storm  <storm@cua.dk>
+
+       * bytecode.c (Fbyte_code): Use CAR, CDR for Bcar, Bcdr.
+       Use CAR_SAFE, CDR_SAFE for Bcar_safe, Bcdr_safe.
+       Simplify loops and use CAR for Bnth and Belt.
+
+       * data.c (Findirect_function): Optimize for no indirection.
+
+       * eval.c (Fthrow): Remove loop around Fsignal.
+       (Feval, Fapply, Ffuncall): Optimize for no function indirection.
+       Use original function name in all signaled errors.
+       Simplify Fsignal calls (no return).
+       (funcall_lambda): Simplify Fsignal calls (no return).
+
+2006-07-13  Andreas Schwab  <schwab@suse.de>
+
+       * syntax.c (scan_sexps_forward): Use EMACS_INT for out_bytepos and
+       out_charpos.
+
+2006-07-13  Kenichi Handa  <handa@m17n.org>
+
+       * editfns.c (Fformat): Fix calculation of text property positions
+       of format string.
+
+2006-07-12  Kim F. Storm  <storm@cua.dk>
+
+       * lisp.h (CHECK_TYPE): New macro for generic type checking.
+       (CAR_SAFE, CDR_SAFE): New macros.
+       (ARRAYP, CHECK_ARRAY): New macros.
+       (CHECK_VECTOR_OR_STRING, CHECK_SUBR): New macros.
+       (CHECK_WINDOW_CONFIGURATION): New macro.
+       (CHECK_LIST_CONS, CHECK_LIST_END): New checks for list traversal.
+       (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST)
+       (CHECK_STRING, CHECK_STRING_CAR, CHECK_CONS, CHECK_SYMBOL)
+       (CHECK_CHAR_TABLE, CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE)
+       (CHECK_BUFFER, CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS)
+       (CHECK_NUMBER, CHECK_NATNUM, CHECK_MARKER, CHECK_OVERLAY)
+       (CHECK_NUMBER_COERCE_MARKER, CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT)
+       (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER): Use CHECK_TYPE.
+
+       * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET):
+       * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Use CHECK_TYPE.
+
+       * callint.c (Fcall_interactively):
+       * casefiddle.c (casify_object):
+       * editfns.c (general_insert_function):
+       * fns.c (Flength, Felt, Ffillarray):
+       * data.c (Fcar, Fcdr): Remove loop around wrong_type_argument.
+
+       * data.c (wrong_type_argument): Remove loop around Fsignal.
+       (Farrayp, Fsequencep): Use ARRAYP.
+       (Fcar): Use CAR.
+       (Fcar_safe): Use CAR_SAFE.
+       (Fcdr): Use CDR.
+       (Fcdr_safe): Use CDR_SAFE.
+       (Fsetcar, Fsetcdr): Use CHECK_CONS.
+       (Fsubr_arity, Fsubr_name): Use CHECK_SUBR.
+       (Faset): Use CHECK_ARRAY.
+
+       * fns.c (Felt): Use CHECK_ARRAY.
+       (concat): Use CHECK_NUMBER.
+       (Fsubstring, substring_both): Use CHECK_VECTOR_OR_STRING.
+       (Fmemq): Use CHECK_LIST.
+       (Fassq, Fassoc, Frassq, Frassoc): Use CAR.
+       (assq_no_quit): Use CAR_SAFE.
+       (Fnthcdr, Fmember, Fdelq, Fdelete, Fnreverse, Fnconc):
+       Use CHECK_LIST_CONS.
+       (Freverse, Fplist_get, Flax_plist_get): Use CHECK_LIST_END.
+
+       * bytecode.c (Fbyte_code): Use CHECK_VECTOR.
+
+       * casetab.c (check_case_table):
+       * category.c (check_category_table):
+       * marker.c (Fcopy_marker):
+       * syntax.c (check_syntax_table):
+       * xfaces.c (load_pixmap): Use CHECK_TYPE.
+
+       * fns.c (Fcopy_sequence, concat):
+       * fringe.c (Fdefine_fringe_bitmap):
+       * lread.c (check_obarray): Cleanup wrong_type_argument use.
+
+       * keyboard.c (access_keymap_keyremap): Use ARRAYP.
+
+       * keymap.c (Fdefine_key, Flookup_key):
+       * macros.c (Fstart_kbd_macro): Use CHECK_VECTOR_OR_STRING.
+
+       * mac.c (Fmac_get_preference): Use CHECK_LIST_END.
+
+       * search.c (Fset_match_data): Use CHECK_LIST.
+
+       * sunfns.c (sun_item_create): Use CHECK_LIST_CONS.
+
+       * window.c (Fwindow_configuration_frame, Fset_window_configuration):
+       (compare_window_configurations): Use CHECK_WINDOW_CONFIGURATION.
+
+2006-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * Makefile.in (dired.o, editfns.o, fileio.o): Depend on blockinput.h.
+
+       * dired.c: Include blockinput.h.
+       (Ffile_attributes): Add BLOCK_INPUT around getpwuid/getgrgid.
+
+       * editfns.c: Include blockinput.h.
+       (Fuser_login_name, Fuser_full_name): Add BLOCK_INPUT around
+       getpwuid/getpwnam.
+
+       * fileio.c: Include blockinput.h.
+       (Fexpand_file_name, search_embedded_absfilename): Add BLOCK_INPUT
+       around getpwnam.
+       (search_embedded_absfilename): Remove spurious xfree.
+
+2006-07-11  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (sit_for): Reduce number of args from 5 to 3.
+       Now just one TIMEOUT arg that can be a Lisp float or Lisp int.
+       Combine args DISPLAY and INITIAL_DISPLAY into one arg DO_DISPLAY.
+       Signal error if TIMEOUT is not a number.
+       Undo 2006-06-14 change for non-preemptive display if TIMEOUT < 0.
+       The rework of sit_for args also fixes several incorrect Qt args
+       which should have been 1.
+       (Fredisplay): Pass 1 instead of Qt to swallow_events and
+       detect_input_pending_run_timers.
+
+       * lisp.h (sit_for): Update prototype.
+       (Fredisplay): Add EXFUN.
+
+       * dispextern.h (sit_for): Remove prototype.
+
+       * callint.c (Fcall_interactively):
+       * minibuf.c (temp_echo_area_glyphs):
+       * keyboard.c (command_loop_1, read_char, Fexecute_extended_command):
+       * fileio.c (Fdo_auto_save): Update/simplify sit_for calls.
+
+2006-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.c (forw_comment): Also use EMACS_INT for buffer positions.
+
+2006-07-11  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (Fredisplay): Add FORCE argument to force redisplay when
+       input is available.  Fix test for redisplay_dont_pause non-nil.
+       Specbind redisplay-dont-pause to t if FORCE non-nil.
+
+2006-07-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * puresize.h (BASE_PURESIZE): Increment to 1211000.
+
+       * dispnew.c (Fredisplay): New function, equivalent to (sit-for 0).
+       (Fsit_for): Function deleted.
+
+       * keyboard.c (command_loop_1, Fexecute_extended_command):
+       Call sit_for instead of Fsit_for.
+
+       * minibuf.c (temp_echo_area_glyphs): Likewise.
+
+2006-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.c (Fforward_comment): Revert the reversion.
+       (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
+
+2006-07-09  John Paul Wallington  <jpw@pobox.com>
+
+       * syntax.c (Fforward_comment): Revert previous change.
+
+2006-07-09  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Fforce_window_update): Doc fix.
+
+2006-07-08  Stephen Gildea  <gildea@stop.mail-abuse.org>
+
+       * fileio.c (do_auto_save_make_dir): Make the auto-save-list-file
+       directory unreadable for better user privacy.
+
+2006-07-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.c (Fforward_comment): Fix int-32 vs EMACS_INT-64 mixup.
+
+       * lread.c (read_filtered_event): Remove `register' qualifier because it
+       causes compilation problem with gcc-4.0.2-20051125 on amd64.
+       (readevalloop): Remove unused var `bpos'.
+       Yet another int/Lisp_Object mixup (YAILOM).
+
+2006-07-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * keyboard.c (Fexecute_extended_command): Mention the argument
+       PREFIXARG in the doc string.
+
+2006-07-07  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (Fdefine_fringe_bitmap): Doc fix.
+
+2006-07-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * insdel.c (prepare_to_modify_buffer): For an indirect buffer, do
+       clash detection using the base buffer.
+
+       * puresize.h (BASE_PURESIZE): Increment to 1210500.
+
+2006-07-04  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (x_delete_display): Don't free or derefence NULL pointers.
+
+2006-07-04  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (Fset_overriding_fontspec_internal): Check if we need
+       to update Voverriding_fontspec_alist.
+
+2006-07-03  Richard Stallman  <rms@gnu.org>
+
+       * xfns.c (Fx_create_frame): Move unwind_create_frame setup down.
+
+       * xfaces.c (Fface_attribute_relative_p): Doc fix.
+
+       * textprop.c (Fget_char_property_and_overlay): Doc fix.
+
+       * eval.c (Fdefvaralias): Doc fix.
+
+2006-07-03  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (sit_for): Fix preempt condition.
+
+2006-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lread.c (read_filtered_event): Treat select-window just like
+       switch-frame.
+
+2006-07-02  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (display_tool_bar_line): Skip glyphs which are too big
+       to ever fit the tool-bar,
+       (MAX_FRAME_TOOL_BAR_HEIGHT): New macro.
+       (tool_bar_lines_needed): Use unused mode-line row as temp_row.
+       (redisplay_tool_bar): Only clear desired matrix if we actually
+       change the tool-bar window height.  Only try to make the tool-bar
+       window bigger if there is actually room for it.
+
+2006-06-30  Ralf Angeli  <angeli@caeruleus.net>
+
+       * w32term.c (x_make_frame_visible): Use SystemParametersInfo with
+       SPI_GETWORKAREA to find the dimensions of the screen work area,
+       and adjust vertical position of the frame in order to avoid being
+       covered by the task bar.
+
+       * w32fns.c (w32_createwindow): Use CW_USEDEFAULT instead of
+       f->left_pos and SH_SHOW instead of f->top_pos in the call to
+       CreateWindow.  Record the actual position in f->left_pos and
+       f->top_pos.
+
+2006-06-30  John Paul Wallington  <jpw@pobox.com>
+
+       * w32console.c (syms_of_ntterm) <w32-use-full-screen-buffer>:
+       Doc fix - default value has changed.
+
+2006-06-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c [!TARGET_API_MAC_CARBON]: Don't include FixMath.h or Scrap.h.
+
+       * macfns.c (Fx_create_frame): Apply 2006-06-24 change for xfns.c.
+
+       * macgui.h (USE_MAC_TSM) [TARGET_API_MAC_CARBON]: Set default to 1.
+
+       * macterm.c (Qeql): Add extern.
+       (x_set_mouse_pixel_position) [MAC_OSX]: Use CGWarpMouseCursorPosition.
+       (fm_style_face_attributes_alist) [USE_ATSUI]: New variable.
+       (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it.
+       Change keys of Vmac_atsu_font_table from strings to numbers.
+       (fm_style_to_face_attributes) [USE_ATSUI]: New function.
+       (init_font_name_table) [USE_ATSUI]: Use it.
+       (saved_ts_script_language_on_focus) [USE_MAC_TSM]: New variable.
+       (syms_of_macterm) [USE_MAC_TSM]: Initialize and staticpro it.
+       [USE_MAC_TSM] (mac_tsm_resume): Restore script and language codes
+       only when saved_ts_script_language_on_focus coincides with
+       Vmac_ts_script_language_on_focus.
+       [USE_MAC_TSM] (mac_tsm_suspend): Save value of
+       Vmac_ts_script_language_on_focus to saved_ts_script_language_on_focus.
+       (XTread_socket) [USE_MAC_TSM]: Add Mac OS Classic support.
+       [USE_MAC_TSM] (mac_handle_text_input_event, init_tsm): Likewise.
+
+2006-06-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * editfns.c (Fdelete_field, Ffield_string, Ffield_beginning)
+       (Ffield_string_no_properties, Ffield_end): Mention
+       args-out-of-range error condition in docstring.
+
+2006-06-27  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (handle_composition_prop): Set stop_charpos before push_it.
+
+2006-06-25  Kim F. Storm  <storm@cua.dk>
+
+       * s/gnu-linux.h (SIGNALS_VIA_CHARACTERS): Define for Linux kernel
+       version 2.4 and later.
+
+2006-06-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xfns.c (Fx_create_frame): Set font parameter directly instead of
+       using x_default_parameter, since x_get_args clears the parm alist.
+
+2006-06-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * dired.c (directory_files_internal) [WINDOWSNT]: Find files
+       case-insensitively.
+
+2006-06-24  Aidan Kehoe  <kehoea@parhasard.net>
+
+       * lread.c (read_escape): When an unknown Unicode code point is
+       encountered as a string or character escape, signal an error.
+
+2006-06-23  Kim F. Storm  <storm@cua.dk>
+
+       * .gdbinit (pitx): Dump iterator stack.
+
+       * xdisp.c (handle_composition_prop): Push iterator on stack.
+       (set_iterator_to_next): Pop iterator at end of composition.
+
+2006-06-23  Martin Rudalics  <rudalics@gmx.at>
+
+       * fileio.c (Frename_file) [DOS_NT]: Don't try to move directory to
+       itself on DOS_NT platforms, if the old and new names are identical
+       but for the letter-case.
+
+2006-06-21  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (struct it): Add `position' member to iterator stack.
+       Rename `pos' member to `current'.  Rearrange and add comments.
+
+       * xdisp.c (handle_stop): Set it->ignore_overlay_strings_at_pos_p
+       if  we get any overlays.
+       (set_cursor_from_row): Don't clobber `end' if we rescan from
+       start_string.
+       (push_it, pop_it): Save it->position.
+
+2006-06-19  Richard Stallman  <rms@gnu.org>
+
+       * window.c (size_window): New arg FIRST_ONLY.  All callers changed.
+       (adjust_window_trailing_edge): Specially compute FIRST_PARALLEL
+       for the case of a top-level window and the following minibuffer.
+       Don't exit because of no `next' when there is a parent.
+       Use the FIRST_ONLY feature when resizing following windows.
+
+       * syntax.c (init_syntax_once): Give most control chars' syntax Spunct.
+
+2006-06-17  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (update_frame): Check for input pending on entry.
+       (update_window, update_frame_1): Break loop if input is detected.
+
+2006-06-16  Francis Litterio  <flitterio@gmail.com>
+
+       * xterm.c (x_check_expected_move, handle_one_xevent)
+       (x_set_offset, x_check_fullscreen): Extensive changes to make
+       frame positioning deterministic under X.
+
+       * xterm.h (x_output): Add members left_before_move and
+       top_before_move.  Removed members expected_left and expected_top.
+
+2006-06-16  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (struct it): Add union to iterator stack to save
+       image, composition, and stretch specific paramters.
+
+       * xdisp.c (next_overlay_string): Fix assert.
+       (push_it, pop_it): Handle composition and stretch specific values.
+       Only handle it->slice in image (for now).
+       (back_to_previous_visible_line_start): Continue search if newline is
+       part of a compisition.  Simplify.
+       (reseat_1): Set it->object to buffer.
+       (set_iterator_to_next): Set it->object to string or buffer, when
+       setting it->method to GET_FROM_STRING or GET_FROM_BUFFER.
+       (next_element_from_composition): Set it->object to buffer if not
+       from string.
+       (set_cursor_from_row): Only save start of string if not already
+       done to handle multiple strings in a row.
+
+       * .gdbinit (pitx): Show composition parameters.
+       (pgx, pg): New commands to print a glyph structure.
+       (pgi, pgn): New commands to print specific/next glyph.
+       (pgrowx, pgrow): New commands to print all glyphs in a row.
+
+2006-06-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (Fx_display_mm_height, Fx_display_mm_width)
+       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use CGDisplayScreenSize.
+
+       * macterm.c (do_app_resume, do_app_suspend): Remove functions.
+       (mac_tsm_resume, mac_tsm_suspend) [USE_MAC_TSM]: New functions.
+       (mac_handle_window_event, XTread_socket) [USE_MAC_TSM]: Use them.
+       (Vmac_ts_script_language_on_focus) [USE_MAC_TSM]: New variable.
+       (syms_of_macterm) [USE_MAC_TSM]: Defvar it.
+       (saved_ts_language, saved_ts_component) [USE_MAC_TSM]: New variables.
+       (mac_initialize_display_info) [MAC_OSX]: Use Quartz Display
+       Services functions to get size of main display in pixels.
+
+2006-06-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (back_to_previous_visible_line_start):
+       Reset it->continuation_lines_width.
+
+2006-06-14  Richard Stallman  <rms@gnu.org>
+
+       * eval.c (Fdefconst): Mark variable as risky.
+
+       * callproc.c (Fcall_process): Doc fix.
+
+       * window.c (adjust_window_trailing_edge): Don't break out of the loop
+       because there's no next window, if there are parallel windows.
+       Do break out when WINDOW is nil.
+
+2006-06-14  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (IT_STACK_SIZE): New macro specifying size of
+       iterator stack (instead of hardcoded number).  Increase from 2 to
+       4 to make room for propertized overlay strings before and after a
+       display string, image or composition.
+       (struct it): Add image_id and method members to iterator stack.
+
+       * xdisp.c (init_from_display_pos): Don't set it->method and
+       overlay_string_index after pop_it.  Add asserts.
+       (handle_stop): Look for overlay strings around a display string,
+       image, or composition.  Handle properties on those strings.
+       (next_overlay_string): Don't set string, pos or method after pop_it.
+       (get_overlay_strings_1): Split from get_overlay_strings; don't
+       modify it if no overlay strings are found.
+       (get_overlay_strings): Use get_overlay_strings_1.  Always set
+       it->string and it->method.
+       (push_it): Push it->image_id and it->method.  Push it->object
+       instead of it->string if method is GET_FROM_IMAGE.
+       (pop_it): Pop it->image_id and it->method.  Ppo it->object
+       instead of it->string if method is GET_FROM_IMAGE.
+       Reset it->current.string_pos if popped it->string is nil.
+       (reseat_1): Remove comment dated 19 May 2003.  It expressed doubt
+       whether a given change was correct; but the change is correct.
+       Clear it->string_from_display_prop_p.
+       (set_iterator_to_next): Rely on it->method and it->image_id from
+       iterator stack, instead of setting them explicitly after pop_it.
+
+       * dispnew.c (sit_for): Undo 2006-06-01 change.  Instead, a
+       negative time forces redisplay even when input is available.
+       (Fsit_for): Doc fix.
+
+2006-06-13  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c: Modify preemptive redisplay to be based on periodic
+       checks for input.
+       (PERIODIC_PREEMPTION_CHECKING): Define to 1 iff EMACS_HAS_USECS.
+       (Vredisplay_preemption_period): New variable.
+       (syms_of_display): DEFVAR_LISP and initialize it.
+       (preemption_period, preemption_next_check): New variables.
+       (update_frame, update_single_window): Initialize them based on
+       Vredisplay_preemption_period if !force_p.
+       (update_window, update_frame_1): Use them to determine when to
+       check for input.
+
+2006-06-03  Aidan Kehoe  <kehoea@parhasard.net>
+
+       * lread.c (read_escape): Provide a Unicode character escape
+       syntax; \u followed by exactly four or \U followed by exactly
+       eight hex digits in a comment or string is read as a Unicode
+       character with that code point.
+
+2006-06-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * window.c (window_scroll_pixel_based): Signal "Beginning of
+       buffer" when scroll-down at the beginning of an empty buffer.
+
+2006-06-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event):
+       Exclude 0x7f from ASCII range.
+
+2006-06-05  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_set_scroll_bar_thumb, x_scroll_bar_create)
+       (w32_set_vertical_scroll_bar, w32_scroll_bar_handle_click)
+       (x_scroll_bar_report_motion): Remove workarounds for
+       versions of Windows NT < 3.51.
+       [!SIF_ALL]: Remove.
+       (pfnSetScrollInfo, pfnGetScrollInfo): Remove.
+       (w32_initialize): Don't dynamically load Get/SetScrollInfo.
+
+2006-06-04  David Kastrup  <dak@gnu.org>
+
+       * dispnew.c: Mention `redisplay-dont-pause' in doc string of
+       `sit-for'.
+
+2006-06-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (x_set_icon_name): Apply 2006-06-02 change for xfns.c.
+
+       * macgui.h (USE_MAC_TSM): Set default to 1 on Mac OS X.
+
+       * macterm.c (tsm_document_id) [USE_MAC_TSM]: New variable.
+       (Qtext_input, Qupdate_active_input_area, Qunicode_for_key_event)
+       [USE_MAC_TSM]: Likewise.
+       (syms_of_macterm) [USE_MAC_TSM]: Intern and staticpro them.
+       (Qbefore_string) [USE_MAC_TSM]: Add extern.
+       (do_app_resume, do_app_suspend) [USE_MAC_TSM]: Call
+       ActivateTSMDocument/DeactivateTSMDocument.
+       (mac_store_event_ref_as_apple_event): Call mac_post_mouse_moved_event.
+       (mac_handle_window_event) [USE_MAC_TSM]: Handle
+       kEventWindowFocusAcquired/kEventWindowFocusRelinquish.
+       (mac_handle_text_input_event) [USE_MAC_TSM]: New function.
+       (install_window_handler) [USE_MAC_TSM]: Install it.  Register
+       kEventWindowFocusAcquired/kEventWindowFocusRelinquish.
+       (keycode_to_xkeysym_table): Add entry for f16.
+       (XTread_socket) [USE_MAC_TSM]: Set/reset read_socket_inev
+       before/after passing keystroke event to toolbox dispatcher.
+       (init_tsm) [USE_MAC_TSM]: New function.
+       (mac_initialize) [USE_MAC_TSM]: Call it.
+       (Vmac_ts_active_input_overlay) [USE_MAC_TSM]: New defvar.
+
+       * macterm.h (EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER): New enumerator.
+
+2006-06-02  John Paul Wallington  <jpw@gnu.org>
+
+       * xfns.c (x_set_name_internal): Set icon to `text', derived from
+       name, when frame's icon_name isn't a string rather than only when
+       it is nil.
+
+2006-06-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (x_set_icon_name): Don't use arg if it's not a string
+       and not nil.
+
+2006-06-02  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xfns.c (x_set_icon_name): No-op if arg is non-nil and not a
+       string.
+
+2006-06-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xdisp.c (next_element_from_composition): Set it->object to
+       it->string if composition is coming from string.
+       (set_cursor_from_row): Don't return 0 unless row displays a
+       continued line.
+       (dump_glyph): Dump composite glyph.
+
+2006-06-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (menu_nav_ended): Check that menubar_widget is not NULL.
+
+2006-06-01  Richard Stallman  <rms@gnu.org>
+
+       * window.c (Fsplit_window): Doc fix.
+
+2006-06-01  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * process.c (deleted_pid_list): New variable to store the pids
+       of deleted processes.  Declare it only if SIGCHLD is defined.
+       (init_process): Initialize it.
+       (syms_of_process): Staticpro it.
+       (Fdelete_process): Add pid of the deleted process to it.  Check after
+       the addition and before the kill if the process is already stopped,
+       in which case it is deleted from the list and not killed.
+       (sigchld_handler): Define it only if SIGCHLD is.  Search the process
+       that signaled Emacs in `deleted_pid_list' before `Vprocess_alist'.
+       Original idea by Stefan Monnier.
+
+2006-06-01  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (sit_for): Perform redisplay even if input is pending
+       when redisplay-dont-pause is non-nil.
+
+2006-06-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_handle_visibility_change): Set buf.arg to Qnil.
+       (XTread_socket): Remove obsolete comment.
+
+2006-06-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (syms_of_xmenu): Make accelerate-menu an alias for
+       menu-bar-open.
+
+2006-06-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (Fmenu_bar_open, syms_of_xmenu): Change menu-bar-start to
+       menu-bar-open.
+
+       * gtkutil.c (menu_nav_ended): Change x-menu-bar-start to menu-bar-open.
+
+2006-05-31  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.c (Vhistory_add_new_input): New variable.
+       (read_minibuf): Use it.
+       (syms_of_minibuf) <history-add-new-input>: New Lisp variable.
+       (syms_of_minibuf) <history-delete-duplicates>: Doc fix.
+
+2006-05-31  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (select_wrapper): Add wrapper around select to work around
+       "incomplete backtrace" bug in gdb 5.3, when emacs is stopped inside
+       select called from wait_reading_process_output.
+
+2006-05-30  Andreas Schwab  <schwab@suse.de>
+
+       * xmenu.c (Fmenu_bar_start): Return a value.
+
+2006-05-30  Richard Stallman  <rms@gnu.org>
+
+       * coding.c (Ffind_operation_coding_system): Doc fix.
+
+2006-05-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (x_draw_hollow_cursor): Fix last change.
+
+2006-05-29  Kim F. Storm  <storm@cua.dk>
+
+       * w32term.c (x_draw_stretch_glyph_string): Fix last change.
+
+2006-05-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * coding.c (Ffind_operation_coding_system): Doc fix.
+
+2006-05-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility):
+       Call mac_set_font_info_for_selection if font panel is made visible.
+
+       * macterm.c (font_panel_shown_p) [USE_MAC_FONT_PANEL]: New variable.
+       (mac_font_panel_visible_p, mac_show_hide_font_panel)
+       [USE_MAC_FONT_PANEL]: New functions.
+       [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection):
+       Return immediately if font panel is not visible.
+
+       * macterm.h (mac_font_panel_visible_p, mac_show_hide_font_panel):
+       Add externs.
+
+2006-05-29  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * search.c (matcher_overflow): Mark as NO_RETURN.
+
+       * xterm.c (x_connection_closed): Likewise.
+
+       * sysdep.c (croak): Likewise.
+
+       * sound.c (sound_perror, alsa_sound_perror): Likewise.
+
+       * lisp.h (die, nsberror): Likewise.
+
+2006-05-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * sound.c (alsa_open, alsa_configure, alsa_write):
+       Move assignment to err out of if-statement.
+
+       * gtkutil.c (menu_nav_ended): New function.
+       (create_menus): Connect menu_nav_ended to "selection-done" to fix
+       grabs.
+
+       * xmenu.c (Fmenu_bar_start): New function for USE_GTK and USE_X_TOOLKIT.
+
+2006-05-28  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * charset.h (invalid_character): Mark as NO_RETURN.
+
+2006-05-29  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (Ffind_operation_coding_system): Call a function by
+       safe_call1 instead of call1.
+
+2006-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (struct saved_window): Add `dedicated'.
+       (Fset_window_configuration, save_window_save): Save/restore the
+       `dedicated' flag.
+
+2006-05-28  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (set_cursor_from_row): If cursor cannot be set in row,
+       don't update w->cursor and return 0.  Return 1 on success.
+       (try_cursor_movement): Repeat set_cursor_from_row on successive rows
+       until it succeeds.
+
+       * dispextern.h (set_cursor_from_row): Update prototype.
+
+2006-05-28  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_phys_cursor_geometry): Return computed x and y through
+       parameters.  Adjust x and width in case cursor in on a partially
+       visible stretch glyph on the left edge.
+       (erase_phys_cursor): Don't erase into left fringe/margin in case
+       previous cursor glyph is a partially visible stretch glyph on left.
+
+       * dispextern.h (get_phys_cursor_geometry): Update prototype.
+
+       * xterm.c (x_draw_stretch_glyph_string): Fix problems with invisible
+       cursor and erasing cursor on partially visible stretch glyph on left.
+       (x_draw_hollow_cursor): Compute x via get_phys_cursor_geometry.
+
+       * macterm.c: Likewise.
+
+       * w32term.c: Likewise.
+
+2006-05-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macselect.c (mac_handle_apple_event):
+       Return errAEEventNotHandled if key binding is not found.
+
+2006-05-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (main) [PROFILING]: Enable also for __MINGW32__.
+       [__MINGW32__]: MinGW-specific declaration of `etext'.
+
+       * w32heap.c (etext, edata): Remove unused definitions.
+
+2006-05-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * fileio.c (Fcopy_file): Delete argument MUSTBENEW.
+       Incorporate the exclusive file-opening functionality into the behavior
+       when OK-IF-ALREADY-EXISTS is nil.
+       (Frename_file): Call Fcopy_file without MUSTBENEW argument.
+
+2006-05-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * sound.c (alsa_configure): Move get period/buffer_size after
+       setting hwparams.
+
+2006-05-26  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (Ffind_operation_coding_system): Allow (FILENAME
+       . BUFFER) in TARGET.
+
+2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image.c (png_load): Don't call fclose on NULL.
+
+2006-05-25  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fns.c (Fyes_or_no_p):
+       * callint.c (Fcall_interactively): Fread_from_minibuffer now takes
+       only seven args.
+
+2006-05-25  Juri Linkov  <juri@jurta.org>
+
+       * lisp.h (Fread_from_minibuffer): Decrement number of args.
+
+       * minibuf.c (read_minibuf): Remove arg KEEP_ALL.  Callers changed.
+       (Fread_from_minibuffer): Remove arg KEEP_ALL.  Callers changed.
+
+       * buffer.c (mode-line-format): Fix docstring.
+
+2006-05-25  Richard Stallman  <rms@gnu.org>
+
+       * emacs.c (main, Fdump_emacs): Don't test __linux or __linux__.
+
+2006-05-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * puresize.h (BASE_PURESIZE): Increase to 1210000.
+
+2006-05-24  Alan Mackenzie  <acm@muc.de>
+
+       * lread.c (Vload_history): Enhance doc-string to say that the file
+       is the absolute truename of the loaded file.
+
+       * lread.c (Vafter_load_alist): doc-string: state that an element
+       now has a regexp to match file names, not a file name as such.
+
+       * lread.c (readevalloop): Call file-truename on the name for
+       load-history, except at preloading time.
+
+       * lread.c (Fload): At preloading time, preserve the extension of
+       the filename which goes into load-history.  New var hist_file_name.
+
+       * lread.c (Fload): Do eval-after-load stuff by calling the lisp
+       function do-after-load-evaluation.
+
+2006-05-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (ae_attr_table): New variable.
+       (syms_of_mac): Intern and staticpro its elements.
+       (mac_aelist_to_lisp): Also convert Apple event attributes.
+       (mac_ae_put_lisp): New function.
+       (create_apple_event_from_event_ref) [MAC_OSX]: Use typeUTF8Text.
+
+       * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor etc.
+
+       * macselect.c (Qemacs_suspension_id): New variable.
+       (syms_of_macselect): Intern and staticpro it.
+       (struct suspended_ae_info): New struct.
+       (deferred_apple_events, defer_apple_events)
+       (Fmac_process_deferred_apple_events): Use it.
+       (suspended_apple_events): New variable.
+       (mac_handle_apple_event_1): New function.
+       (mac_handle_apple_event): Use it.  Don't process previously
+       suspended events.
+       (cleanup_suspended_apple_events, get_suspension_id)
+       (cleanup_all_suspended_apple_events): New functions.
+       (init_apple_event_handler): Call cleanup_all_suspended_apple_events
+       at exit.
+       (Fmac_cleanup_expired_apple_events, Fmac_ae_set_reply_parameter)
+       (Fmac_resume_apple_event): New defuns.
+       (syms_of_macselect): Defsubr them.
+
+       * macterm.c (fn_keycode_to_keycode_table, XTread_socket) [MAC_OSX]:
+       Fix last change.  Don't map `fn' modifier if pressed with F1 ... F12.
+
+       * macterm.h (TYPE_FILE_NAME): Change from macro to enumerator.
+       (KEY_EMACS_SUSPENSION_ID_ATTR): New enumerator.
+       (keyReplyRequestedAttr) [MAC_OS_X_VERSION_MAX_ALLOWED < 1030]: Likewise.
+       (gestaltSystemVersionMajor, gestaltSystemVersionMinor)
+       (gestaltSystemVersionBugFix) [MAC_OS_X_VERSION_MAX_ALLOWED < 1040]:
+       Likewise.
+       (typeUTF8Text, kEventParamWindowMouseLocation)
+       [MAC_OSX && MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Likewise.
+       (x_get_focus_frame, mac_ae_put_lisp): Add externs.
+
+2006-05-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (fn_keycode_to_xkeysym_table, convert_fn_keycode): Remove.
+       (fn_keycode_to_keycode_table) [MAC_OSX]: New variable.
+       (mac_set_unicode_keystroke_event) [TARGET_API_MAC_CARBON]: New function.
+       (XTread_socket) [TARGET_API_MAC_CARBON]: Use it.
+       (XTread_socket) [MAC_OSX]: Try 'uchr' Unicode keyboard-layout
+       resource to backtranslate key with modifiers.
+       (XTread_socket): Don't set read_socket_inev around AEProcessAppleEvent.
+
+2006-05-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c: Remove declarations already in xterm.h.
+
+       * xterm.h: Add extern declarations for x_clear_errors,
+       x_fully_uncatch_errors, x_catching_errors and
+       x_alloc_lighter_color_for_widget.  Remove duplicated declarations.
+
+2006-05-21  Richard Stallman  <rms@gnu.org>
+
+       * xfaces.c (best_matching_font): Abort for best == NULL
+       before we start to use it.
+
+       * buffer.c (syms_of_buffer, Fmake_overlay): Doc fixes.
+
+2006-05-20  Kim F. Storm  <storm@cua.dk>
+
+       * xfaces.c (best_matching_font): Fix crash in 2006-05-17 change.
+
+2006-05-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (convert_fn_keycode): Fix last change.
+
+2006-05-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (init_environment): Perform the processing of environment
+       variables on a copy of default variables and their values, not on
+       the original.  Simplify code that calls ExpandEnvironmentStrings
+       and make buf1[] and buf2[] more visible for easier debugging.
+
+2006-05-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * frame.c (x_set_border_width): Remove #ifndef MAC_OS.
+
+       * image.c [MAC_OS] (gif_load): Allocate Lisp string first.
+
+       * macfns.c (Fx_focus_frame): Don't check dpyinfo->x_focus_frame.
+
+       * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON && MAC_OSX]:
+       Forward keyUp events to toolbox_dispatcher.
+
+       * window.c (foreach_window): Check WINDOWP (FRAME_ROOT_WINDOW (f)).
+
+2006-05-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * config.in: Regenerated (HAVE_ALSA).
+
+       * sound.c (alsa_sound_perror, alsa_open, alsa_period_size)
+       (alsa_configure, alsa_close, alsa_choose_format, alsa_write)
+       (snd_error_quiet, alsa_init): New functions.
+       (vox_init): Return 0 if unable to open device.
+       (Fplay_sound_internal): Test for alsa first and use vox (oss) as
+       a fallback.
+       (struct sound_device): Add period_size.
+       (wav_play, au_play): Use period_size if set.
+
+       * Makefile.in (CFLAGS_SOUND): New flags for ALSA.
+       (ALL_CFLAGS): Add CFLAGS_SOUND.
+
+2006-05-18  Kenichi Handa  <handa@m17n.org>
+
+       * callproc.c (Fcall_process): Reject encoding arguments by
+       ascii-incompatible coding systems (e.g. utf-16).
+
+       * coding.c (Qascii_incompatible): New variable.
+       (syms_of_coding): Setup Qascii_incompatible.
+       (setup_coding_system): Be sure to initialize coding->common_flags.
+       Check `ascii-incompatible' property of the coding system.
+
+       * coding.h (CODING_ASCII_INCOMPATIBLE_MASK): New macro.
+
+2006-05-18  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (display_tool_bar_line): Restore entire tool-bar
+       geometry when backtracking in case last image doesn't fit on line.
+
+2006-05-18  MIYOSHI Masanori  <miyoshi@meadowy.org>  (tiny change)
+
+       * xdisp.c (display_tool_bar_line): Don't adjust tool-bar height by
+       more than height of one frame default line.
+
+2006-05-17  Richard Stallman  <rms@gnu.org>
+
+       * xfaces.c (better_font_p): Any font beats no font.
+       (best_matching_font): Simplify based on above change.
+
+       * buffer.c (Fprevious_overlay_change, Fnext_overlay_change): Doc fixes.
+
+2006-05-16  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (handle_one_xevent): Check that f is not NULL before
+       calling x_kill_gs_process.
+
+2006-05-14  Richard Stallman  <rms@gnu.org>
+
+       * textprop.c (Fnext_single_char_property_change)
+       (Fprevious_single_char_property_change): Don't allow returning
+       value beyond LIMIT in any cases.
+       (Fnext_char_property_change, Fprevious_char_property_change): Doc fix.
+
+       * intervals.c (get_local_map): Abort if POSITION outside BEGV, ZV.
+
+2006-05-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (handle_one_xevent): Check that f is not NULL before
+       calling _XEditResCheckMessages.
+
+2006-05-14  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (handle_one_xevent): Fix crash in 2006-03-24 change.
+
+2006-05-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * frame.c (x_set_border_width): Fix error message to say "frame",
+       not "window".
+
+       * Makefile.in (SOME_MACHINE_LISP): Add fringe.elc.
+
+2006-05-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * intervals.c (set_point_both): Fix mixup before before and after
+       in variable names.
+
+       * editfns.c (Fline_beginning_position): Inhibit point-motion hooks
+       while setting point temporarily.
+
+2006-05-11  Richard Stallman  <rms@gnu.org>
+
+       * lread.c (readevalloop): Abort if START non-nil for non-buffer input.
+
+2006-05-11  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_tool_bar): Handle large tool-bar-border values.
+
+2006-05-11  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Finsert_file_contents): Fix for the case of IO error
+       while handling replace operation.
+
+2006-05-10  Kenichi Handa  <handa@m17n.org>
+
+       * xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font
+       chosen for the default face was different from the frame font,
+       adjust the frame font.
+
+2006-05-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c (Qduration) [MAC_OS]: Undo previous change.
+       (syms_of_image) [MAC_OS]: Likewise.
+       [MAC_OS] (gif_load): Emulate Graphic Control Extension block.
+
+       * macfns.c (x_to_mac_color): Fix shift amount change.
+       (mac_set_font) [USE_MAC_FONT_PANEL]: Use x_get_focus_frame.
+       [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): Doc fix.
+
+       * macselect.c (Vmac_service_selection) [MAC_OSX]: Rename from
+       Vmac_services_selection.  All uses changed.
+       (mac_store_service_event): Rename from mac_store_services_event in
+       extern and calls.
+
+       * macterm.c (Qservice) [MAC_OSX]: Rename from Qservices.  All uses
+       changed.
+       [MAC_OSX] (mac_store_service_event): Rename from
+       mac_store_services_event.  All callers changed.
+       [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): Add args
+       FACE_ID and C.  All callers changed.
+       (x_free_frame_resources) [USE_MAC_FONT_PANEL]: Call
+       mac_set_font_info_for_selection when focus frame is destroyed.
+       (XTread_socket): Revert to FrontNonFloatingWindow/FrontWindow.
+
+       * macterm.h (mac_set_font_info_for_selection): Add 2nd and 3rd
+       args in extern.
+
+2006-05-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymap.c (describe_map): Avoid generating duplicate entries if
+       the shadowed binding has the same definition.
+
+2006-05-09  Kenichi Handa  <handa@m17n.org>
+
+       * keymap.c (push_key_description): Handle invalid character key.
+
+2006-05-08  Kenichi Handa  <handa@m17n.org>
+
+       * callproc.c (Fcall_process): Use system_eol_type for encoding
+       arguments if eol_type is not yet decided.
+
+       * coding.h (system_eol_type): Extern it.
+
+       * coding.c (setup_coding_system): For invalid coding-system, set
+       coding->eol_type to CODING_EOL_UNDECIDED.
+       (encode_coding): Cancel previous change.
+       (shrink_encoding_region): Likewise.
+       (code_convert_region1): Likewise.
+       (code_convert_string1): Likewise.
+       (code_convert_string_norecord): Likewise.
+
+       * fileio.c (choose_write_coding_system): Use system_eol_type for
+       encoding if eol_type is not yet decided.
+
+       * process.c (setup_process_coding_systems): Use system_eol_type
+       for encoding if eol_type is not yet decided.
+       (read_process_output): Likewise.
+       (send_process): Likewise.
+
+2006-05-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * minibuf.c (syms_of_minibuf) <history-length>: Fix typo in doc.
+
+2006-05-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (Fmac_clear_font_name_table): Move defun to macfns.c.
+       (syms_of_mac): Likewise for defsubr.
+
+       * macfns.c (mac_set_font): New function.
+       (mac_frame_parm_handlers, syms_of_macfns): Replace x_set_font with it.
+       (mac_window) [TARGET_API_MAC_CARBON && MAC_OSX]: Specify
+       kWindowToolbarButtonAttribute when creating window.
+       (Fmac_clear_font_name_table): Move from macfns.c.
+       (syms_of_macfns): Likewise for defsubr.
+       [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): New defun.
+       (syms_of_macfns) [USE_MAC_FONT_PANEL]: Defsubr it.
+
+       * macgui.h (USE_MAC_FONT_PANEL): Define to 1 if USE_ATSUI is set
+       and build is done on Mac OS X 10.2 and later.
+
+       * macselect.c (mac_do_receive_drag): Remove unused variable `index'.
+       (mac_store_services_event): Change return type in extern.
+
+       * macterm.c (XLoadQueryFont) [USE_ATSUI]: Set font->mac_fontnum to
+       FMFontFamily value.
+       [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): New function.
+       (x_new_focus_frame) [USE_MAC_FONT_PANEL]: Use it.
+       (QCfamily, QCweight, QCslant, Qnormal, Qbold, Qitalic): Add extern.
+       (QWindow) [MAC_OSX]: Likewise.
+       (Qfont) [USE_MAC_FONT_PANEL]: Likewise.
+       (Vmac_atsu_font_table) [USE_ATSUI]: New variable.
+       (syms_of_macterm) [USE_ATSUI]: Defvar it.
+       (Qtoolbar_switch_mode) [MAC_OSX]: New variable.
+       (Qpanel_closed, Qselection) [USE_MAC_FONT_PANEL]: Likewise.
+       (syms_of_macterm): Intern and staticpro them.
+       (init_font_name_table) [USE_ATSUI]: Add data to Vmac_atsu_font_table.
+       [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event):
+       New function.
+       [USE_CARBON_EVENTS] (mac_handle_command_event): Use it.
+       [MAC_OSX] (mac_store_services_event): Likewise.
+       [USE_CARBON_EVENTS] (mac_handle_window_event) [MAC_OSX]: Handle
+       kEventWindowToolbarSwitchMode event.
+       (install_window_handler) [USE_CARBON_EVENTS && MAC_OSX]: Register it.
+       [MAC_OSX] (mac_store_services_event): Change return type to OSStatus.
+       [USE_MAC_FONT_PANEL] (mac_handle_font_event): New function.
+       (install_window_handler) [USE_MAC_FONT_PANEL]: Install it.
+       (XTread_socket): Select window on mouse click if x_focus_frame is NULL.
+
+       * macterm.h (mac_set_font_info_for_selection): Add extern.
+
+2006-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c (Qduration) [MAC_OS]: New variable.
+       (syms_of_image) [MAC_OS]: Intern and staticpro it.
+       [MAC_OS] (gif_load): Save image extension data in img->data.lisp_val.
+       [MAC_OSX] (image_load_quartz2d): Use cfstring_create_with_utf8_cstring
+       instead of cfstring_create_with_string.
+
+2006-05-06  Kim F. Storm  <storm@cua.dk>
+
+       * .gdbinit (xframe): Print frame name.
+       (xlist): New command to print a list (max 10 elements).
+       (xpr): Print lisp object of any type.
+       (pitx): Print it->pixel_width.
+
+2006-05-05  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (handle_composition_prop): Fix for the case of empty
+       composition component.
+
+2006-05-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * keyboard.c (make_lispy_event) [MAC_OS]: Get Apple event info
+       from event->arg.
+
+       * termhooks.h (enum event_kind) [MAC_OS]: Update comment for
+       MAC_APPLE_EVENT.
+
+       * macterm.h (mac_make_lispy_event_code): Remove extern.
+       (mac_post_mouse_moved_event): Add extern.
+       (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
+       `const AEDesc *' in externs.
+       (create_apple_event_from_drag_ref) [TARGET_API_MAC_CARBON]: New extern.
+
+       * mac.c (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to
+       `const AEDesc *'.
+       [TARGET_API_MAC_CARBON] (create_apple_event): New function.
+       [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): Use it.
+       Use xrealloc instead of repeated xmalloc/xfree.
+       [TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref):
+       New function.
+
+       * macmenu.c (restore_menu_items, cleanup_popup_menu): Return a value.
+
+       * macselect.c: Update copyright year.
+       (mac_store_apple_event): Change return type to void in extern.
+       (mac_handle_apple_event): Don't get return value from
+       mac_store_apple_event.
+       [TARGET_API_MAC_CARBON] (Vmac_dnd_known_types): New variable.
+       (syms_of_macselect) [TARGET_API_MAC_CARBON]: Defvar it.
+       [TARGET_API_MAC_CARBON] (mac_do_track_drag): Move function from
+       macterm.c.  Use Vmac_dnd_known_types as acceptable flavors.
+       [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise.  New
+       implementation using create_apple_event_from_drag_ref.
+       [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP)
+       (mac_do_receive_dragUPP): Move variables from macterm.c.
+       (install_drag_handler, remove_drag_handler): New functions.
+
+       * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON]: Try window
+       path select also for proxy icon click.
+       [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event): New function.
+       [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback): Use it.
+       (xlfdpat_create): Remove unused label `error' and trailing sentences.
+       (mac_do_track_drag, mac_do_receive_drag): Move functions to macselect.c.
+       (mac_do_track_dragUPP, mac_do_receive_dragUPP): Move variables to
+       macselect.c.
+       (install_drag_handler, remove_drag_handler): Add extern.
+       (mac_store_apple_event): Change return type to void.  All uses changed.
+       Create Lisp object from Apple event and store it into input event.
+       (mac_make_lispy_event_code): Remove function.
+       [TARGET_API_MAC_CARBON] (mac_store_drag_event): New function.
+       (install_window_handler): Call install_drag_handler.
+       (remove_window_handler): Call remove_drag_handler.
+
+2006-05-03  Richard Stallman  <rms@gnu.org>
+
+       * sound.c (Fplay_sound_internal): Dynamically allocate
+       current_sound_device and current_sound.
+       (sound_cleanup): Free them.
+
+       * minibuf.c (read_minibuf): Don't use read_minibuf_noninteractive
+       when inside a keyboard macro.
+
+2006-05-02  Andreas Schwab  <schwab@suse.de>
+
+       * xmenu.c (restore_menu_items): Return a value.
+
+2006-05-01  Martin Rudalics  <rudalics@gmx.at>
+
+       * syntax.c (Fforward_comment): Detect generic comment at beginning of
+       buffer when moving backwards.
+
+2006-05-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dispnew.c (update_window): Don't set changed_p when mode/header
+       line is updated.
+
+       * xdisp.c (prepare_menu_bars) [MAC_OS]: Call mac_update_title_bar.
+       (get_glyph_face_and_encoding, get_char_face_and_encoding):
+       Don't distinguish known faces from others.
+
+       * mac.c (mac_coerce_file_name_ptr): Try typeFSRef if coercion
+       through typeFileURL failed.
+
+       * macfns.c (mac_update_title_bar): New function.
+       [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): New function.
+       (show_hourglass, hide_hourglass) [USE_CG_DRAWING]:
+       Call mac_prepare_for_quickdraw.
+
+       * macgui.h (USE_ATSUI): Set default to 1 if MAC_OSX is defined.
+       (USE_CG_DRAWING): Don't define if compiled on Mac OS X 10.1.
+       (enum pcm_status): New enum.
+       (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID)
+       (XCharStructRow): Remove.  Now validity is represented by
+       non-negativeness of sum of ascent and descent.
+       (struct MacFontStruct): Change type of member `rows'.
+       (struct _XGC) [USE_CG_DRAWING]: Add member `clip_rects'.
+
+       * macterm.c (mac_draw_line, mac_draw_line_to_pixmap):
+       Adjust endpoints of strictly horizontal/vertical lines.
+       (mac_set_clip_rectangles) [USE_CG_DRAWING]: Set clip_rects.
+       (pcm_init, pcm_get_status): New functions.
+       (x_per_char_metric, XLoadQueryFont): Use them instead of
+       XCharStructRow and related macros.
+       (x_draw_relief_rect): Don't adjust arguments of mac_draw_line.
+       (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Free FRAME_FILE_NAME.
+       (XTread_socket) [TARGET_API_MAC_CARBON]: Handle proxy icon drag
+       and window path pop-up menu on title bar.
+       (mac_use_core_graphics) [USE_CG_DRAWING]: Set default to 1.
+
+       * macterm.h (mac_update_title_bar): Add extern.
+       (struct mac_output) [TARGET_API_MAC_CARBON]: New member `file_name'.
+       (FRAME_FILE_NAME): New macro.
+
+       * unexmacosx.c (unexec): Error if trying unexec from dumped executable.
+
+2006-04-30  Richard Stallman  <rms@gnu.org>
+
+       * keymap.c (Fdefine_key): Improve error message
+       when KEY begins with a non-prefix key.
+
+2006-04-30  Martin Rudalics  <rudalics@gmx.at>
+
+       * syntax.c (Fforward_comment): Don't forget to break out of the loop
+       when we skipped backward over a generic comment.
+
+2006-04-27  Nick Roberts  <nickrob@snap.net.nz>
+
+       * .gdbinit (pp1, pv1): Only print value as expression is now
+       printed out by gud-print.
+       (pv1): Correct doc string.
+
+2006-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (store_in_keymap): Change `def' arg to not be `register'.
+       Seems to trigger a bug in gcc-amd64 4.0.2 20051125 (Red Hat 4.0.2-8):
+       keymap.c:895: error: address of register variable `def' requested.
+
+2006-04-26  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (construct_mouse_wheel): Handle negative coordinates.
+
+       * w32fns.c (w32_wnd_proc) <WM_LBUTTONDOWN, WM_RBUTTONDOWN>:
+       <WM_LBUTTONUP, WM_RBUTTONUP>: Call signal_user_input in the cases
+       where we preempt mouse_button_timer.
+
+2006-04-25  Miles Bader  <miles@gnu.org>
+
+       * editfns.c (Ffield_beginning, find_field): Undo change of 2006-04-23.
+
+2006-04-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * process.h: Include headers for pid_t.
+
+2006-04-24  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (fill_stretch_glyph_string): Set s->nchars = 1 for code which
+       does last_glyph=s->first_glyph+s->nchars-1, e.g. if stretch has relief.
+       (produce_stretch_glyph): Assume that face box height and width is
+       already included in stretch glyph size so caller doesn't have to
+       consider the extra space otherwise added (fixes problem in ses.el).
+
+       * frame.c (x_set_font): Clear f->n_tool_bar_rows and current frame
+       matrices to force recalculation of tool-bar height after font change.
+
+       * xdisp.c (tool_bar_lines_needed): New local `temp_row' for clarity.
+       Clear it when done, so we don't accidentally draw a second copy of
+       the tool-bar after resetting f->n_tool_bar_rows.
+       (redisplay_tool_bar): Update tool-bar-lines frame parameter whenever
+       we recalculate f->n_tool_bar_rows.
+
+2006-04-23  Lars Hansen  <larsh@soem.dk>
+
+       * editfns.c (find_field): Fix comment.
+       (Ffield_beginning): Fix bug when POS is at field beginning.
+
+2006-04-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * puresize.h (BASE_PURESIZE): Increase to 1205000.
+
+2006-04-21  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Fix last change.  Don't recenter if
+       window start is at BEGV.
+
+       * dispextern.h (struct image): New member `corners'.
+       (TOP_CORNER, LEFT_CORNER, BOT_CORNER, RIGHT_CORNER): New macros.
+
+       * image.c (four_corners_best): New arg CORNERS specifies what pixels
+       to look at in case image has margin.
+       (x_create_bitmap_mask): Pass NULL for CORNERS to four_corners_best.
+       (image_background, image_background_transparent)
+       (x_build_heuristic_mask): Pass img->corners to four_corners_best.
+       (gif_load): Set img->corners according to image's margin spec.
+       Use img->corners values directly where applicable.
+       Save image extension data in img->data.lisp_val.
+       (gif_clear_image): New function to free img->data.lisp_val.
+       (gif_type): Use it instead of generic x_clear_image.
+       (Fimage_extension_data): New defun.
+       (syms_of_image): Defsubr it.
+
+2006-04-21  John Sullivan  <john@wjsullivan.net>  (tiny change)
+
+       * window.c (Fdisplay_buffer): Doc fix.
+
+2006-04-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Increase to 25000.
+
+2006-04-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c [MAC_OS] (xpm_load_image): Fill in background field
+       while we have ximg handy.
+
+       * macmenu.c (restore_menu_items, save_menu_items): New functions
+       from xmenu.c.
+       (set_frame_menubar, digest_single_submenu): Apply 2006-04-18
+       changes for xmenu.c.
+
+       * macterm.c (x_per_char_metric): Return NULL if glyph width is 0.
+       (add_mac_font_name): New function.
+       (init_font_name_table): Use it.  Adopt the first found font from
+       those having the same family name.
+
+2006-04-21  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xdisp.c (note_mouse_highlight): Use build_string.
+
+2006-04-20  Lars Hansen  <larsh@soem.dk>
+
+       * textprop.c (Fremove_list_of_text_properties):
+       Ensure modify_region is called only when buffer is modified and that
+       signal_after_change is allways called in that case.
+
+       * print.c (PRINTFINISH): Call signal_after_change.
+
+2006-04-20  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Fix last change.
+
+       * xdisp.c (redisplay_window): If current window start is not at the
+       beginning of a line, select a new window start if buffer is modified
+       and window start is in the modified region, but the first change is
+       before window start.
+
+2006-04-18  Richard Stallman  <rms@gnu.org>
+
+       * xmenu.c (restore_menu_items, save_menu_items): New fns.
+       (set_frame_menubar): Use save_menu_items.  Save updated vector in
+       the frame before unwinding it.  Don't use unuse_menu_items.
+       Don't use discard_menu_items.
+       (digest_single_submenu): Abort if an item is not in a pane.
+       (init_menu_items): Put the error check at the top.
+
+       * keymap.c (describe_map): Make "shadowed" warning more verbose.
+
+       * window.c (adjust_window_trailing_edge): Correctly distinguish
+       series vs parallel cases, even when window has no parent.
+
+       * abbrev.c (record_symbol): New function.
+       (Finsert_abbrev_table_description): Sort the abbrevs alphabetically.
+
+2006-04-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c (x_create_bitmap_from_data) [MAC_OS]: Don't check return
+       value of xmalloc.
+
+       * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
+       (create_apple_event_from_event_ref, xrm_get_preference_database)
+       (cfstring_create_normalized): Don't check return value of xmalloc.
+
+       * macselect.c (get_scrap_target_type_list, defer_apple_events)
+       (copy_scrap_flavor_data, mac_handle_service_event): Don't check
+       return value of xmalloc/xrealloc.
+
+       * macterm.c (XCreateGC, x_per_char_metric, xlfdpat_create)
+       (init_font_name_table, init_font_name_table, mac_do_list_fonts)
+       (XLoadQueryFont, mac_store_apple_event): Don't check return value
+       of xmalloc.
+
+2006-04-17  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (coordinates_in_window): On the vertical border,
+       calculate the row number measured from the top of the window, not
+       the top of the frame.
+       (window_loop): Test w->dedicated with !NILP instead of EQ Qt.
+       (window_scroll_pixel_based): Fix off-by-one bug in 2002-12-23 change.
+
+2006-04-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Reduce to 24000.
+
+2006-04-16  Romain Francoise  <romain@orebokech.com>
+
+       * puresize.h (BASE_PURESIZE): Decrement back to 1200000.
+
+2006-04-16  Andreas Schwab  <schwab@suse.de>
+
+       * puresize.h (PURESIZE_RATIO): Reduce to 10/6.
+
+2006-04-15  Romain Francoise  <romain@orebokech.com>
+
+       * puresize.h (BASE_PURESIZE): Increment to 1210000.
+
+2006-04-13  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * print.c (Fprin1_to_string): Mention in the `doc' that the
+       behavior is modified by `print-level' and `print-length'.
+
+2006-04-13  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (setup_coding_system): If eol-type is not yet decided
+       and system_eol_type is not LF, set CODING_REQUIRE_ENCODING_MASK.
+       If coding_system is nil, return 0.
+       (code_convert_region1): Even if coding_system is nil, don't skip
+       conversion if system_eol_type is not LF.
+       (code_convert_string1): Likewise.
+       (code_convert_string_norecord): Likewise.
+
+2006-04-13  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (setup_coding_system): Fix previous change.
+       (encode_coding): If eol_type is not yet decided, use system_eol_type.
+       (shrink_encoding_region): If eol_type is not yet decided and
+       system_eol_type is not LF, don't shrink.
+
+2006-04-13  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xdisp.c (note_mouse_highlight): Add help echo for dragging vertical
+       line.
+
+2006-04-12  Richard Stallman  <rms@gnu.org>
+
+       * keyboard.c (read_key_sequence): Explicitly avoid keybuf[-1].
+
+       * process.c (conv_lisp_to_sockaddr): If FAMILY unknown, just return.
+       (Fprocess_send_eof): Abort if fail to open null device.
+
+2006-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * fns.c [HAVE_MENUS && MAC_OS]: Include macterm.h.
+
+       * image.c [MAC_OS] (xpm_load_image): Add parentheses around
+       assignment used as truth value.  Add explicit braces to avoid
+       ambiguous `else'.
+       [MAC_OS] (gif_load): Remove unused variable `gcpro1'.
+
+       * lisp.h (syms_of_fontset, Fset_fontset_font): Put extern and
+       EXFUN in #ifdef HAVE_WINDOW_SYSTEM.
+       (syms_of_xfns, syms_of_xsmfns, syms_of_xselect, syms_of_xterm):
+       Put externs in #ifdef HAVE_X_WINDOWS.
+       (syms_of_macfns, syms_of_macselect, syms_of_macterm)
+       (syms_of_macmenu, syms_of_mac) [MAC_OS]: Add externs.
+       (init_mac_osx_environment) [MAC_OSX]: Add extern.
+
+       * mac.c (init_process): Remove undef.
+       (select) [MAC_OSX]: Undefine before including sysselect.h.
+       (posix_pathname_to_fsspec, fsspec_to_posix_pathname) [MAC_OSX]:
+       Remove functions and prototypes.
+       (parse_value): Add parentheses around + inside shift.
+       (path_from_vol_dir_name): Make static.
+       (get_temp_dir_name): Remove unused variables `cpb' and `dir_name'.
+       [!MAC_OSX] (get_path_to_system_folder): Likewise.
+       (Fmac_get_file_creator, Fmac_get_file_type): Remove unused
+       variable `cCode'.
+       (Fmac_coerce_ae_data): Remove unused variables `fref' and `fs'.
+       (Fmac_get_preference): Add explicit braces to avoid ambiguous `else'.
+
+       * macfns.c (x_to_mac_color): Remove unused variable `tail'.
+       (x_set_mouse_color): Remove unused variable `dpy'.
+       (Fx_create_frame): Remove unused variable `x_frame_count'.
+       (Fx_server_version): Add explicit braces to avoid ambiguous `else'.
+       (x_sync): Move from macterm.c.
+       (Fx_file_dialog): Remove unused variable `default_filter_index'.
+
+       * macmenu.c (min_menu_id): Make element type explicit.
+
+       * macselect.c (get_flavor_type_from_symbol): Remove unused
+       variable `val'.
+       (get_scrap_private_timestamp, x_get_foreign_selection)
+       (copy_scrap_flavor_data): Add explicit braces to avoid ambiguous `else'.
+       (Fmac_process_deferred_apple_events): Remove unused variables
+       `keyword', `reply', `apple_event', `count', and `err'.
+
+       * macterm.c: Don't include gnu.h.
+       (x_io_error_quitter, x_draw_image_foreground_1): Remove prototypes.
+       (x_sync): Move to macfns.c.
+       [USE_CG_DRAWING] (mac_define_fringe_bitmap): Remove unused
+       variable `mask_bits'.
+       (mac_compute_glyph_string_overhangs): Avoid ambiguous `else'.
+       (x_draw_image_glyph_string): Remove unused variable `pixmap'.
+       (x_mac_to_emacs_modifiers): Remove function.
+       (XTset_vertical_scroll_bar, mac_handle_visibility_change)
+       (x_make_frame_visible, xlfdpat_create, mac_handle_command_event):
+       Add explicit braces to avoid ambiguous `else'.
+       (x_make_frame_visible): Remove unused variables `type',
+       `original_top', and `original_left'.
+       (mac_do_list_fonts, XTread_socket): Add parentheses around && within ||.
+       (x_load_font): Remove unused variables `full_name', and `value'.
+       (do_get_menus, do_init_managers, do_check_ram_size) [!MAC_OS8]:
+       Remove functions.
+       (do_zoom_window): Reorganize variables with respect to conditionals.
+       (init_command_handler): Remove unused variable `err'.
+       [MAC_OSX] (mac_check_bundle): Remove unused variable `child'.
+
+       * macterm.h (x_set_mouse_position, x_set_mouse_pixel_position)
+       (x_make_frame_invisible, x_iconify_frame, x_free_frame_resources)
+       (x_destroy_window, x_wm_set_size_hint, x_delete_display, XFreeGC)
+       (do_menu_choice, have_menus_p, x_real_positions)
+       (x_set_menu_bar_lines, x_pixel_width, x_pixel_height, x_char_width)
+       (x_char_height, x_sync, x_set_tool_bar_lines, x_activate_menubar)
+       (free_frame_menubar): Add externs.
+
+       * unexmacosx.c: Include config.h before using HAVE_MALLOC_MALLOC_H.
+       (malloc, realloc, free): Add undefs.
+       (read_load_commands): Remove unused variable `n' and `j'.
+       (copy_data_segment): Remove unused variable `r'.
+
+       * xdisp.c (get_glyph_string_clip_rects): Add parentheses around &&
+       within ||.  Add explicit braces to avoid ambiguous `else'.
+       (dump_glyph_row): Remove label for `inverse_p' from legend.
+
+       * xfaces.c (Finternal_merge_in_global_face, try_font_list):
+       Add explicit braces to avoid ambiguous `else'.
+
+2006-04-11  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
+
+       * dispnew.c (init_display): Don't init X display if the user asked
+       for a non-X display.
+
+2006-04-12  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (setup_coding_system): Use system_eol_type for default
+       coding->eol_type.
+
+2006-04-11  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * lisp.h (wrong_type_argument): Mark as NO_RETURN.
+
+       * data.c (wrong_type_argument): Try to avoid compiler warnings due
+       to the fact the function is now marked as NO_RETURN.
+
+2006-04-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * s/ms-w32.h (pid_t) [_MSC_VER]: New typedef.
+
+2006-04-10  Romain Francoise  <romain@orebokech.com>
+
+       * xrdb.c (gethomedir): Use xstrdup.
+
+2006-04-10  Andreas Schwab  <schwab@suse.de>
+
+       * xrdb.c (gethomedir): Make sure to always return a pointer that
+       can be passed to free.
+
+2006-04-09  Richard Stallman  <rms@gnu.org>
+
+       * lisp.h (Fkill_emacs): Undo previous change.
+
+2006-04-08  Richard Stallman  <rms@gnu.org>
+
+       * search.c (boyer_moore): Test ch >= 0400, not >.
+
+2006-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * puresize.h (pure_write_error): Mark as NO_RETURN.
+
+       * lisp.h (args_out_of_range, args_out_of_range_3, Fkill_emacs):
+       Likewise.
+
+2006-04-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements
+       if a menu is active on this frame.
+
+2006-04-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * lisp.h (report_file_error): Mark as NO_RETURN.
+
+2006-04-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * alloc.c [STDC_HEADERS]: Include stddef.h.
+
+       * lisp.h (PSEUDOVECSIZE): Fix last change.
+
+2006-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * process.h (struct Lisp_Process): Replace Lisp_Objects `pid',
+       `raw_status_high', and `raw_status_low' with plain integers, and move
+       them to the end of the structure.
+
+       * alloc.c (allocate_process): Use PSEUDOVECSIZE to initialize the
+       pseudovector's size field so only the Lisp_Object fields get GC'd.
+
+       * process.c (update_status, make_process, Fdelete_process)
+       (Fprocess_status, list_processes_1, start_process_unwind)
+       (create_process, Fmake_network_process, server_accept_connection)
+       (wait_reading_process_output, send_process, Fprocess_running_child_p)
+       (process_send_signal, proc_encode_coding_system, Fprocess_send_eof)
+       (sigchld_handler, status_notify): Adjust to new non-Lisp fields for
+       `pid' and `raw_status'.
+       (Fprocess_id, Fsignal_process): Same, and additionally use floats when
+       representing PIDs that are larger than most-positive-fixnum.
+
+       * keymap.c (describe_map): Only use XINT if we checked INTEGERP.
+
+       * lisp.h (OFFSETOF, PSEUDOVECSIZE): New macros.
+
+2006-04-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos.
+
+2006-04-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * editfns.c (TM_YEAR_IN_ASCTIME_RANGE): New macro, identical to
+       ../lib-src/b2m.c and ../lib-src/editfns.c.
+       (Fcurrent_time_string): Use it.
+       Document that the year might not consume 4 columns if it's outside
+       the range 1000-9999.
+       Check for asctime failure.
+       Don't assume that the output string length is always exactly 24.
+
+2006-04-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (XTread_socket): Initialize variable `f' before its use.
+
+2006-04-03  Kenichi Handa  <handa@m17n.org>
+
+       * image.c: Include "charset.h" and "coding.h".
+       (x_find_image_file): Return an encoded file name.
+
+2006-04-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * configure: Regenerated.
+
+2006-03-31  Kenichi Handa  <handa@m17n.org>
+
+       * xfns.c (xg_set_icon): Delete superfluous UNGCPRO.
+
+2006-03-30  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * xdisp.c (syms_of_xdisp): Fix variable name.
+
+2006-03-30  Kenichi Handa  <handa@m17n.org>
+
+       * xterm.c (x_term_init): Delete superfluous UNGCPRO.
+
+2006-03-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * keyboard.c (process_tool_bar_item): Reorder dummy args.
+
+2006-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.c (tool_bar_items): Use map_keymap.
+       (process_tool_bar_item): Add dummy args to fit the required interface.
+
+2006-03-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit (pr, pp, pp1, pv, pv1): Force print_output_debug_flag
+       to zero before calling debug_print or safe_debug_print.
+
+       * print.c (print_output_debug_flag): New global variable.
+       (Fexternal_debugging_output) [WINDOWSNT]: Don't call
+       OutputDebugString if print_output_debug_flag is zero.
+
+2006-03-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * editfns.c (TM_YEAR_BASE): Move up, so the changes below can use it.
+       (Fdecode_time, Fencode_time): Use TM_YEAR_BASE instead of 1900.
+       (Fdecode_time): Cast tm_year to EMACS_INT.
+       (Fcurrent_time_string): Report an invalid time specification if
+       the argument is invalid.  Also, check for out-of-range time stamps.
+
+2006-03-24  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (handle_one_xevent):
+       * w32term.c (w32_read_socket):
+       * macterm.c (XTread_socket): Don't let key-press clear mouse face
+       on in toolbar window if mouse-highlight is an integer.
+
+       * fns.c (sxhash_list): Include last non-nil CDR in hash.
+
+2006-03-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macmenu.c (enum mac_menu_kind): New enum.
+       (min_menu_id): New variable.
+       (POPUP_SUBMENU_ID, MIN_POPUP_SUBMENU_ID, MIN_MENU_ID)
+       (MIN_SUBMENU_ID): Remove defines.  All uses are replaced with
+       min_menu_id and enumerators in enum mac_menu_kind.
+       (fill_menu, dispose_menus, install_menu_quit_handler): New arg KIND.
+       All uses changed.  Add range check for menu ID.
+       (fill_menubar): Add range check for menu ID.
+       [HAVE_CANCELMENUTRACKING] (menu_quit_handler): Check error code of
+       GetEventParameter.
+       (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler
+       for each menu kind.
+
+2006-03-22  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c: Undo 2006-03-21 change.
+
+       * term.c: Define aliases for append_glyph and produce_stretch_glyph
+       when `static' is defined to avoid name clash with those in xdisp.c.
+
+       * process.c (Faccept_process_output): Fix to comply with lisp
+       reference.  Change arg "timeout" to "seconds" and allow both
+       integer and float value.  Change arg "timeout-msec" to "millisec"
+       and interpret" as milliseconds rather than microseconds.  Fix doc
+       string accordingly.
+
+2006-03-21  Ken Raeburn  <raeburn@raeburn.org>
+
+       * xdisp.c (store_next_glyph): Rename from append_glyph.
+       (generate_stretch_glyph): Rename from produce_stretch_glyph.
+       All callers changed accordingly.
+
+2006-03-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c: x_session_initialized new variable.
+       (x_term_init): Use x_session_initialized to check if
+       x_session_initialize should be called.
+       (x_initialize): Initialize x_session_initialized.
+
+2006-03-21  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (draw_fringe_bitmap): Don't calculate default overlay arrow
+       bitmap here, but ...
+       (update_window_fringes): ... here, so we can test if it has changed.
+
+2006-03-20  Andreas Schwab  <schwab@suse.de>
+
+       * dispnew.c (init_display): Check DISPLAY here.
+
+       * emacs.c (main): Don't check here.
+
+       * xterm.c (x_display_ok): Don't use DISPLAY env var.
+
+2006-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (window_scroll_pixel_based): Yet another int/Lisp_Object
+       mixup (YAILOM).
+
+2006-03-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (main): Fix last change.
+
+2006-03-20  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Fwrite_region): Set visit_file to Qnil before GCPRO it.
+
+       * keymap.c (map_keymap): Set tail to Qnil before GCPRO it.
+
+       * xfns.c (xg_set_icon): Remove unnecessary GCPRO.
+
+       * xterm.c (x_term_init): Remove unnecessary GCPRO.
+
+2006-03-19  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (set_cursor_from_row): Fix cursor property on overlay string,
+       so it doesn't associate overlay string with following glyph by default.
+       Allow integer property value to specify explicit number of buffer
+       positions associate with overlay string.
+
+2006-03-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xterm.c (x_display_ok): Fix minor bug and compilation warnings.
+
+2006-03-18  Nozomu Ando  <nand@mac.com>
+
+       * m/pmax.h (BROKEN_NOCOMBRELOC) [__NetBSD__]: Define.
+       (LIB_STANDARD, START_FILES) [__NetBSD__]: Don't define.
+       (START_FILES, RUN_TIME_REMAP, UNEXEC) [__NetBSD__, __OpenBSD__]:
+       Don't redefine.
+
+       * m/mips.h: Don't use unexmips on NetBSD.
+       (LIBS_MACHINE): Move definition lower, so it doesn't use
+       LD_SWITCH_MACHINE, START_FILES, LIB_STANDARD, LIBS_TERMCAP,
+       C_SWITCH_MACHINE, and C_DEBUG_SWITCH.
+
+       * unexelf.c [BROKEN_NOCOMBRELOC]: Include assert.h.
+       (unexec) [BROKEN_NOCOMBRELOC]: Handle platforms whose nocombreloc
+       option is broken (e.g., MIPS/NetBSD).
+
+2006-03-18  Craig McDaniel  <craigmcd@gmail.com>  (tiny change)
+
+       * sheap.c (STATIC_HEAP_SIZE): Enlarge STATIC_HEAP_SIZE to 12MB.
+       Remove the HAVE_X_WINDOWS conditional.
+
+2006-03-18  Vivek Dasmohapatra  <vivek@etla.org>  (tiny change)
+
+       * emacs.c (main): If user asks for a display that is unavailable,
+       simulate -nw.
+
+       * xterm.c (x_display_ok): New function.
+
+       * xterm.h: Add prototype for x_display_ok.
+
+2006-03-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (Fw32_select_font): Doc fix.
+
+2006-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c [MAC_OS] (XPutPixel, XGetPixel)
+       [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]: Don't use specialized
+       version when depth is 32.
+       (mac_create_cg_image_from_image) [MAC_OS && USE_CG_DRAWING]:
+       New function.
+       (prepare_image_for_display) [MAC_OS && USE_CG_DRAWING]: Use it.
+       (x_clear_image_1) [MAC_OS && USE_CG_DRAWING]: Release CGImage.
+
+       * macterm.c (XCreatePixmap) [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]:
+       Create GWorld in ARGB pixel format.
+       (mac_copy_area, mac_copy_area_with_mask) [USE_CG_DRAWING]:
+       Remove functions.
+       (x_draw_image_foreground) [USE_CG_DRAWING]: Use mac_draw_cg_image
+       instead of mac_copy_area/mac_copy_area_with_mask.
+
+2006-03-15  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (extend_face_to_end_of_line): Always add space glyph to
+       empty row.  Fixes memory corruption revealed by 2006-03-02 change.
+       (display_tool_bar_line): Skip empty tool-bar line if HEIGHT < 0.
+       (tool_bar_lines_needed): Fix tool-bar display in case the tool-bar
+       width is exactly the same as the window width.  Don't count a final
+       empty tool-bar line (pass HEIGHT = -1 to display_tool_bar_line).
+
+2006-03-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * fringe.c (w32_init_fringe, w32_reset_fringes): Revert to being
+       conditional on HAVE_NTGUI, not WINDOWS_NT.
+
+2006-03-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dispextern.h (mac_init_fringe) [MAC_OS]: Add prototype.
+
+       * fringe.c (mac_init_fringe) [MAC_OS]: New function.
+
+       * macterm.c (mac_initialize) [USE_CG_DRAWING]: Call mac_init_fringe.
+       (max_fringe_bmp, fringe_bmp) [USE_CG_DRAWING]: New variables.
+       (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap)
+       (mac_draw_cg_image) [USE_CG_DRAWING]: New functions.
+       (mac_draw_bitmap) [USE_CG_DRAWING]: Remove function.
+       (x_draw_fringe_bitmap) [USE_CG_DRAWING]: Use mac_draw_cg_image
+       instead of mac_draw_bitmap.
+       (x_redisplay_interface) [USE_CG_DRAWING]: Set handlers for
+       define_fringe_bitmap and destroy_fringe_bitmap.
+
+2006-03-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xterm.c (x_uncatch_errors): Block input for entire function.
+
+2006-03-12  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (Fx_create_frame): Remove call to
+       Qface_set_after_frame_default (from xfns.c 2003-05-26).
+
+       * w32menu.c (Fx_popup_menu): Call w32_free_menu_strings when
+       finished with the menu.
+
+       * w32term.c: Sync 2005-10-24 xterm.c changes.
+       (last_mouse_glyph_frame): New var.
+       (note_mouse_movement): Say mouse moved if current frame differs
+       from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
+       (w32_mouse_position): Set last_mouse_glyph_frame.
+       Remove OLD_REDISPLAY_CODE block.
+
+2006-03-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macgui.h [USE_ATSUI && MAC_OSX]: Define USE_CG_TEXT_DRAWING to 1.
+
+       * macterm.h (struct mac_output) [USE_CG_DRAWING]: New member cg_context.
+       (mac_prepare_for_quickdraw) [USE_CG_DRAWING]: Add prototype.
+
+       * mac.c (sys_select) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
+
+       * macfns.c (x_create_tip_frame): Apply 2006-03-11 change for xfns.c.
+
+       * macterm.c (mac_draw_rectangle, x_draw_glyph_string_foreground)
+       (x_draw_composite_glyph_string_foreground)
+       (x_draw_image_foreground): Undo previous changes.
+       (x_draw_hollow_cursor): Likewise.  Subtract 1 from the last
+       argument of mac_draw_rectangle.
+       (CG_SET_FILL_COLOR, CG_SET_STROKE_COLOR): New macros.
+       (mac_draw_string_common, mac_draw_image_string_cg): Use them.
+       (FRAME_CG_CONTEXT) [USE_CG_DRAWING]: New macro.
+       (mac_begin_cg_clip, mac_end_cg_clip, mac_prepare_for_quickdraw)
+       [USE_CG_DRAWING]: New functions.
+       (mac_draw_line, mac_erase_rectangle, mac_clear_window)
+       (mac_fill_rectangle, mac_draw_rectangle, mac_draw_string_common)
+       (mac_draw_image_string_cg) [USE_CG_DRAWING]: Add Quartz 2D drawing part.
+       (mac_draw_bitmap, mac_invert_rectangle, mac_draw_string_common)
+       (mac_copy_area, mac_scroll_area, x_scroll_bar_create)
+       (x_scroll_bar_remove, XTset_vertical_scroll_bar, x_set_window_size)
+       (XTread_socket) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
+
+2006-03-12  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
+
+       * xfns.c (x_icon): Disable redundant call to `x_wm_set_window_state'.
+
+2006-03-11  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (signal_user_input): New function.
+       (post_character_message): Use it for keyboard input.
+       (w32_msg_pump): Use it for mouse input.
+
+2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * window.c: Rename preserve_y to window_scroll_pixel_based_preserve_y.
+       (window_scroll_pixel_based, syms_of_window): Adapt to above change.
+
+2006-03-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32_wnd_proc): Ignore middle and extra button events
+       if a menu is already active (the menubar_active flag is on).
+
+2006-03-11  David Ponce  <david@dponce.com>
+
+       * xfns.c (x_create_tip_frame): Preserve received parms by copying them.
+
+2006-03-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c: Add x_fully_uncatch_errors and x_catching_errors to
+       the list of unused display error handling functions.
+
+       * eval.c (unwind_to_catch): Call x_fully_uncatch_errors only if
+       HAVE_X_WINDOWS.
+       (internal_condition_case, internal_condition_case_1)
+       (internal_condition_case_2): Call x_catching_errors only if
+       HAVE_X_WINDOWS.
+
+       * vm-limit.c [HAVE_GETRLIMIT]: Don't define unconditionally.
+       Don't include sys/resource.h unless defined.
+
+2006-03-11  Richard Stallman  <rms@gnu.org>
+
+       * keymap.c (describe_map): Shorten string to indicate shadowed binding.
+
+       * vm-limit.c (get_lim_data, lim_data, data_space_start):
+       Move from mem-limits.h.
+       (enum warnlevel): New data type.
+       (check_memory_limits): Rewrite the logic about warnings.
+       Use standard `struct rlimit'.  Check return values for nonsense.
+       (memory_warnings): Always clear lim_data.
+
+       * mem-limits.h (get_lim_data, lim_data, data_space_start):
+       Move to vm-limit.c.
+
+       * xterm.c (x_fully_uncatch_errors, x_catching_errors): New functions.
+
+       * eval.c (unwind_to_catch): Call x_fully_uncatch_errors.
+       (internal_condition_case_1, internal_condition_case_2):
+       Abort if within unclosed x_catch_errors.
+
+2006-03-11  Romain Francoise  <romain@orebokech.com>
+
+       * process.c (Vprocess_adaptive_read_buffering): Doc fix.
+
+2006-03-11  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
+
+       * lisp.h: Remove duplicate prototypes.  Make the prototype of
+       getloadavg be conditioned on HAVE_GETLOADAVG being undefined.
+
+2006-03-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * xterm.c (x_draw_hollow_cursor): Subtract 1 from the last
+       argument of XDrawRectangle.
+
+       * xdisp.c (get_phys_cursor_geometry): Don't decrease height by 1.
+
+       * macterm.c (mac_draw_rectangle): Don't add 1 to width and height.
+       (x_draw_glyph_string_foreground)
+       (x_draw_composite_glyph_string_foreground)
+       (x_draw_image_foreground): Don't subtract 1 from width and height
+       arguments to mac_draw_rectangle.
+       (x_draw_hollow_cursor): Add 1 to w->phys_cursor_width.
+
+2006-03-10  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (USE_POSIX_MEMALIGN): Fix last change.
+
+2006-03-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (USE_POSIX_MEMALIGN): New macro.
+       (ABLOCKS_BASE, lisp_align_malloc, lisp_align_free): Use it.
+
+2006-03-09  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): Fix decoding
+       ASCII component of a composition.
+
+2006-03-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * window.c: Declare preserve_y as a static global variable.
+       (window_scroll_pixel_based): No longer declare preserve_y;
+       it is global now.
+       (syms_of_window): Set preserve_y to -1.
+
+2006-03-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c [MAC_OS] (XPutPixel): Set alpha channel bits if pixmap
+       depth is 32.
+       [MAC_OS] (XGetPixel): Strip off alpha channel bits if pixmap
+       depth is 32.
+
+2006-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (handle_invisible_prop): Don't update it->position with
+       a buffer position if we're in a display string.
+
+2006-03-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.h (MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH)
+       (MAC_AQUA_SMALL_VERTICAL_SCROLL_BAR_WIDTH): New defines.
+
+       * macfns.c (x_default_scroll_bar_color_parameter)
+       (x_set_scroll_bar_foreground, x_set_scroll_bar_background):
+       Remove unnecessary prototypes.
+       (x_set_scroll_bar_default_width):
+       Use MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH.
+       (mac_set_scroll_bar_width): New function.
+       (mac_frame_parm_handlers): Set it as handler for scroll-bar-width.
+
+       * macterm.c (get_control_part_bounds): Fix type of return value.
+       (x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
+       (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: Don't show
+       scroll bar if it is not tall enough to display scroll bar thumb.
+       [USE_CARBON_EVENTS] (mac_convert_event_ref)
+       (mac_handle_command_event, mac_handle_window_event)
+       (mac_handle_mouse_event): Check error code of GetEventParameter.
+       (convert_fn_keycode) [MAC_OSX]: Likewise.
+
+2006-03-05  Andreas Schwab  <schwab@suse.de>
+
+       * xselect.c (x_catch_errors_unwind): Fix missing return value.
+
+2006-03-02  Kim F. Storm  <storm@cua.dk>
+
+       * frame.h (struct frame): New member n_tool_bar_rows.
+
+       * xdisp.c: Minimize the unpleasent visual impact of the requirement
+       that non-toolkit tool-bars must occupy an integral number of screen
+       lines, by distributing the rows evenly over the tool-bar screen area.
+       (Vtool_bar_border): New variable.
+       (syms_of_xdisp): DEFVAR_LISP it.
+       (display_tool_bar_line): Add HEIGHT arg for desired row height.
+       Make tool-bar row the desired height.  Use default face for border
+       below tool-bar.
+       (tool_bar_lines_needed): Add N_ROWS arg.  Use it to return number of
+       actual tool-bar rows.
+       (redisplay_tool_bar): Calculate f->n_tool_bar_rows initially.
+       Adjust the height of the tool-bar rows to fill tool-bar screen area.
+       (redisplay_tool_bar): Calculate f->n_tool_bar_rows when tool-bar area
+       is resized.
+
+2006-03-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * search.c (Fregexp_quote): Do not precede a literal `]' with two
+       backslashes to try to make clear that it has a literal meaning; it
+       does not do that.  (It could close a character alternative
+       containing a backslash.)
+
+2006-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xselect.c (x_catch_errors_unwind): New function.
+       (x_reply_selection_request): Put x_uncatch_errors in an unwind.
+       (Fx_get_atom_name): Call x_uncatch_errors earlier.
+
+       * window.c (Qscroll_up, Qscroll_down): New syms.
+       (window_scroll_pixel_based): Make preserve_y static to avoid
+       getting point stuck when scrolling 1 line.
+
+2006-02-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xterm.h, xterm.c (x_uncatch_errors): Delete unneccessary argument.
+
+       * xterm.c (x_load_font, x_term_init, XTmouse_position)
+       (handle_one_xevent, x_connection_closed, x_list_fonts):
+       No arg for x_uncatch_errors.
+
+       * xselect.c (x_own_selection, x_decline_selection_request)
+       (x_reply_selection_request, x_get_foreign_selection)
+       (Fx_get_atom_name, Fx_send_client_event): Likewise.
+
+       * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame):
+       Likewise.
+
+2006-02-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * lread.c: Declare Vload_file_rep_suffixes instead of
+       deleted variable default_suffixes.
+       (Fget_load_suffixes): New function.
+       (Fload): Use Fget_load_suffixes and Vload_file_rep_suffixes.
+       No longer use deleted variable default_suffixes.  Update docstring.
+       (syms_of_lread): defsubr Sget_load_suffixes.
+       Expand `load-suffixes' docstring.
+       Delete default_suffixes and DEFVAR_LISP the new variable
+       `load-file-rep-suffixes'.
+
+       * w32.c (check_windows_init_file): Use Fget_load_suffixes instead
+       of Vload_suffixes.
+
+       * lisp.h: EXFUN Fget_load_suffixes.
+       Extern Vload_file_rep_suffixes.
+
+       * eval.c (specpdl_ptr): Remove volatile qualifier for consistency
+       with lisp.h.
+
+2006-02-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (struct specbinding, specpdl_ptr): Remove the volatile
+       qualifier which was trying to avoid the bug that was fixed by
+       yesterday's changes to xterm.c.
+
+2006-02-25  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xterm.h (x_catch_errors) Return value changed to void.
+       (x_uncatch_errors): Delete unused count argument.
+
+       * xterm.c (x_catch_errors): Don't use record_unwind_protect, since
+       it can be called in a signal handler.
+       (x_catch_errors_unwind): Function deleted.
+       (x_uncatch_errors): Deallocate last x_error_message_stack struct.
+       (x_check_errors): Call x_uncatch_errors before signalling error.
+
+       (x_load_font, x_term_init, XTmouse_position, handle_one_xevent)
+       (x_connection_closed, x_list_fonts): Use new versions of
+       x_catch_errors and x_uncatch_errors.
+
+       * xselect.c (x_own_selection, x_decline_selection_request)
+       (x_reply_selection_request, x_get_foreign_selection)
+       (Fx_get_atom_name, Fx_send_client_event): Likewise.
+
+       * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame):
+       Likewise.
+
+       * eval.c (record_unwind_protect): Add an assertion.
+
+2006-02-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * process.c (Fmake_network_process): Init the process's mark.
+
+2006-02-25  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (modify_overlay): Force redisplay if we modify an
+       overlay at the end of the buffer.
+
+2006-02-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_image_for_pixmap): If x_find_image_file returns
+       nil the image file has been removed, in that case use the (cached)
+       pixmap.
+
+2006-02-24  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Finsert_file_contents): When a text is replaced
+       partially, be sure to set point before the inserted characters.
+
+2006-02-23  Zhang Wei  <id.brep@gmail.com>  (tiny change)
+
+       * xfns.c (Fx_file_dialog): Return a decoded file name.
+
+2006-02-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dispnew.c (update_text_area): Avoid needless redraw of rightmost
+       glyph whose face is extended to the text area end.
+
+       * macterm.c (x_set_toolkit_scroll_bar_thumb): Don't set control
+       values if control is not visible or values are not changed.
+
+2006-02-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (Fwindow_list): Check `window' before doing XWINDOW.
+       The default `window' should not be "on a different frame".
+
+2006-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * indent.c (Fvertical_motion): Only try to move back if we can.
+
+2006-02-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macgui.h (struct _XGC) [!MAC_OSX || !USE_ATSUI]: New member
+       n_clip_rects.
+
+       * macmenu.c (digest_single_submenu): Apply 2006-02-19 change for
+       xmenu.c.
+
+       * macterm.c (GC_CLIP_REGION): Remove macro.
+       (mac_begin_clip, mac_end_clip): Take arg GC instead of REGION.
+       All uses changed.  Don't do clipping if n_clip_rects is zero.
+       (mac_set_clip_rectangles): Use xassert instead of abort.
+       Set n_clip_rects.  Don't make clip_region empty when number of
+       clipping rectangles is zero.
+       (mac_reset_clip_rectangles): Set n_clip_rects directly instead of
+       calling mac_set_clip_rectangles.
+       (x_set_toolkit_scroll_bar_thumb): Temporarily hide scroll bar to
+       avoid multiple redraws.
+
+2006-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (draw_fringe_bitmap): Fix overlay-arrow display.
+
+2006-02-21  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (syms_of_fringe) <fringe-bitmaps>: Doc fix.
+
+2006-02-21  Zhang Wei  <brep@newsmth.org>
+
+       * xfns.c (Fx_file_dialog, Motif and GTK): DECODE_FILE before
+       returning it.
+
+2006-02-21  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
+
+       * fringe.c (horizontal_bar_bits): Rename from `horisontal_bar_bits'.
+       (standard_bitmaps): Use it.
+
+2006-02-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_draw_string_common): Remove arg MODE.  New arg
+       BG_WIDTH.  All uses changed.  Draw background if BG_WIDTH is not zero.
+       (mac_draw_image_string, mac_draw_image_string_16): New arg BG_WIDTH.
+       [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg): Rename from
+       mac_draw_string_cg.  New arg BG_WIDTH.  All uses changed.
+       Draw background if BG_WIDTH is not zero.  Use float constants as
+       divisors instead of double.  Use alloca instead of xmalloc/xfree.
+       (x_draw_glyph_string_background, x_draw_glyph_string_foreground)
+       [!MAC_OS8 || USE_ATSUI]: Background may be drawn using
+       mac_draw_image_string* functions.
+       (XLoadQueryFont) [MAC_OS8 && USE_ATSUI]: Don't adjust heights of
+       some fonts when srcCopy text transfer mode might be used.
+       (mac_begin_clip, mac_end_clip): Check if region is empty.
+       (mac_set_clip_rectangles): When resetting clip region, make it
+       empty instead of disposing of it.
+
+2006-02-20  Kim F. Storm  <storm@cua.dk>
+
+       * Makefile.in: Add fringe.elc to WINDOW_SUPPORT.
+
+       * buffer.h (struct buffer): New members fringe_indicator_alist and
+       fringe_cursor_alist.
+
+       * buffer.c (init_buffer_once): Set dummy default values for
+       fringe-indicator-alist and fringe-cursor-alist.  The proper
+       default values are set by pre-loading fringe.el.
+       (syms_of_buffer): defvar_per_buffer new fringe-indicator-alist and
+       fringe-cursor-alist buffer-local variables and defvar_lisp_nopro
+       corresponding default- variables.
+
+       * fringe.c (enum fringe_bitmap_type): Remove.  Change all uses
+       to use `int'.
+       (NO_FRINGE_BITMAP, UNDEF_FRINGE_BITMAP, MAX_STANDARD_FRINGE_BITMAPS):
+       Define explicitly.
+       (Qtruncation, Qcontinuation, Qempty_line, Qtop_bottom)
+       (Qhollow_small): New variables.
+       (syms_of_fringe): Intern and staticpro them.
+       (question_mark_bits): Rename from unknown_bits.
+       (left_curly_arrow_bits): Rename from continuation_bits.
+       (right_curly_arrow_bits): Rename from continued_bits.
+       (left_triangle_bits): Rename from ov_bits.
+       (right_triangle_bits): Add.
+       (filled_rectangle_bits): Rename from filled_box_cursor_bits.
+       (hollow_rectangle_bits): Rename from hollow_box_cursor_bits.
+       (filled_square_bits): Add.
+       (vertical_bar_bits): Rename from bar_cursor_bits.
+       (horizontal_bar_bits): Rename from hbar_cursor_bits.
+       (empty_line_bits): Rename from zv_bits.
+       (standard_bitmaps): Update to use new names.
+       (draw_fringe_bitmap_1): Make static.
+       (get_logical_cursor_bitmap, get_logical_fringe_bitmap): New functions
+       to map from logical cursors and indicators to physical bitmaps.
+       (draw_fringe_bitmap): Resolve fringe cursor and overlay-arrow
+       bitmaps using symbol names instead of bitmap numbers.
+       (update_window_fringes): Use logical indicator symbol names
+       instead of bitmap numbers for logical.  Add bitmap cache.
+       (LEFT_FRINGE, RIGHT_FRINGE): New helper macros.
+
+2006-02-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * regex.c: Revert 2006-02-19 change.
+       (xmalloc, xrealloc): Define these when not linked to Emacs.
+       Redefine malloc -> xmalloc, realloc -> xrealloc as in Emacs case.
+
+2006-02-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * regex.c (extend_range_table_work_area): Fix typo.
+
+2006-02-19  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (x_catch_errors): Use xmalloc.
+
+       * regex.c (extend_range_table_work_area): Call xmalloc and xrealloc.
+       (regex_compile): Likewise.
+       (regcomp): Use xmalloc.
+
+       * gtkutil.c (malloc_widget_value): Use xmalloc.
+
+       * vm-limit.c [HAVE_GETRLIMIT]: Include sys/resource.h.
+       (check_memory_limits) [HAVE_GETRLIMIT]: Use getrlimit.
+
+       * xmenu.c (digest_single_submenu): When pane_string is empty,
+       do initialize save_wv.
+
+2006-02-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xdisp.c (update_menu_bar) [MAC_OS]: Don't set
+       w->update_mode_line if arg F is not the selected frame.
+
+       * macmenu.c (popup_activated_flag, submenu_id)
+       (next_menubar_widget_id): Remove variables.
+       (initialize_frame_menubar): Remove function.
+       (pop_down_menu, mac_menu_show): Simplify save value.
+       (dispose_menus): New function.
+       (pop_down_menu, fill_menubar): Use it.
+       (fill_submenu): Remove function.  All uses changed to fill_menu.
+       (add_menu_item): Remove args SUBMENU and FORCE_DISABLE.  New arg
+       POS.  Don't call SetMenuItemHierarchicalID here.
+       (fill_menu): Add arg SUBMENU_ID.  Return submenu_id that is to be
+       used next.  Call SetMenuItemHierarchicalID here.
+       (fill_menubar): Add arg DEEP_P.  All uses changed.  Clean up menu
+       objects if needed.  Reuse existing menu bar titles if possible.
+       (set_frame_menubar): Don't clean up menu objects here.
+
+2006-02-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * window.c (window_min_size_1): Ensure room for the scroll bar and
+       fringes.
+
+2006-02-17  Romain Francoise  <romain@orebokech.com>
+
+       * puresize.h (BASE_PURESIZE): Increment to 1200000.
+
+2006-02-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (Fmake_symbol): Comment-out left-over assert from before the
+       addition of the BLOCK_INPUTs.
+
+2006-02-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * window.c (Fset_window_scroll_bars): Doc fix.
+
+2006-02-17  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (display_mode_element): Call display_string with correct
+       PREC arg (which must be a number of characters, not column width).
+
+2006-02-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * frame.c (x_get_arg): Clear out PARAM in ALIST also on Mac.
+
+       * macfns.c (x_set_menu_bar_lines): Menu bar is always shown on Mac.
+
+       * macmenu.c (set_frame_menubar): Don't call DrawMenuBar.
+
+2006-02-14  Richard M. Stallman  <rms@gnu.org>
+
+       * frame.c (x_get_arg): Clear out all occurrences of PARAM in ALIST.
+
+       * m/ibms390x.h: New file.
+
+2006-02-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_tool_bar_detach_callback): Set show-arrow to the
+       value of x-gtk-whole-detached-tool-bar.
+       (xg_tool_bar_attach_callback): Set show-arrow to TRUE.
+
+       * xfns.c (syms_of_xfns): New variable: x-gtk-whole-detached-tool-bar.
+
+2006-02-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_x_to_emacs_modifiers): Make non-static.
+
+       * xterm.h: Declare x_x_to_emacs_modifiers.
+
+       * gtkutil.c (xg_tool_bar_button_cb): New function.
+       (xg_tool_bar_callback): Call x_x_to_emacs_modifiers to
+       store modifiers in event.
+       (update_frame_tool_bar): Connect button-release-event to
+       xg_tool_bar_button_cb.
+
+2006-02-13  Richard M. Stallman  <rms@gnu.org>
+
+       * .gdbinit (xwindow): Update the code to show the window box.
+
+2006-02-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (note_mouse_movement): Check for NULL FRAME_X_OUTPUT (frame).
+
+2006-02-12  Richard M. Stallman  <rms@gnu.org>
+
+       * cmds.c (internal_self_insert): Handle weird auto-fill-function.
+
+2006-02-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * keyboard.c (Venable_disabled_menus_and_buttons): New variable.
+       (syms_of_keyboard): DEVFAR_LISP and initialize it.
+       (parse_tool_bar_item, parse_menu_item): If that variable is
+       non-nil, don't disable menu items and tool-bar buttons.
+
+2006-02-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * doc.c (Fsubstitute_command_keys): Doc fix.
+
+2006-02-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * data.c (Findirect_function): Rewrite docstring.
+       Fix omission bug: Declare new arg NOERROR.
+
+2006-02-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (x_set_mouse_color): Don't call rif->define_frame_cursor
+       if window_desc is not set yet.
+       (Fx_create_frame): Remove variable x_frame_name.  Apply 2005-12-07
+       and 2006-01-26 changes for xfns.c.  Call x_iconify_frame if frame
+       parameter `visibility' is `icon'.
+       (Fx_create_frame, x_create_tip_frame): Use "fontset-standard"
+       instead of "fontset-mac".
+       (Fx_focus_frame): New defun.
+       (syms_of_macfns): Defsubr it.
+
+       * macterm.c (mac_define_frame_cursor): Don't change pointer shape
+       for unfocused frame.
+       (x_raise_frame): Call BringToFront instead of SelectWindow.
+       (x_lower_frame): Use NULL instead of nil.
+       (x_make_frame_visible): Don't call SelectWindow.
+       (XTread_socket): Increment handling_signal at the start, decrement
+       it at the end.
+       [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): Use
+       CFPreferencesGetAppIntegerValue instead of Fmac_get_preference.
+
+2006-02-10  Kim F. Storm  <storm@cua.dk>
+
+       * data.c (Findirect_function): Add NOERROR arg.  All callers changed
+       to pass Qnil for NOERROR.
+
+       * keymap.c (current_minor_maps_error): Remove.
+       (current_minor_maps): Pass Qt for NOERROR to Findirect_function
+       instead of using internal_condition_case_1+current_minor_maps_error.
+
+2006-02-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (handle_one_xevent): Must note mouse movement even for nil
+       frames for GTK, in that case it is the tool bar.  This is so that
+       highlighted text get reset properly.
+
+2006-02-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * alloc.c (Fmake_bool_vector, Fpurecopy): Doc fixes.
+
+2006-02-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * window.c (adjust_window_trailing_edge): Check that shrinking
+       does not set a window to size zero or less.
+
+2006-02-08  Miles Bader  <miles@gnu.org>
+
+       * editfns.c (Fconstrain_to_field): Use Fget_char_property instead
+       of Fget_text_property (other field functions work with overlays as
+       well as text-properties).
+
+2006-02-07  Kenichi Handa  <handa@m17n.org>
+
+       * dispextern.h (unibyte_display_via_language_environment): Extern it.
+
+       * xterm.h (unibyte_display_via_language_environment):
+       * w32term.h (unibyte_display_via_language_environment):
+       * macterm.h (unibyte_display_via_language_environment): Delete extern.
+
+2006-02-07  Kenichi Handa  <handa@m17n.org>
+
+       * term.c (append_glyph): Refer to it->char_to_display instead of it->c.
+       (produce_glyphs): Set the character to print in
+       it->char_to_display.  Handle unibyte-display-via-language-environment.
+       (produce_stretch_glyph): Set character to print in it->char_to_display.
+
+2006-02-06  Kenichi Handa  <handa@m17n.org>
+
+       * lread.c (openp): Initialize encoded_fn before GCPRO it.
+
+2006-02-05  Ken Raeburn  <raeburn@raeburn.org>
+
+       * editfns.c (Fconstrain_to_field): Fix int/Lisp_Object mixup.
+
+       * lisp.h (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]:
+       Cast bitfield value to EMACS_INT, to suppress gcc warning.
+
+       * xrdb.c (malloc, realloc, free) [emacs]: Undefine macros before
+       defining.
+
+2006-02-03  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c: Cache last merged escape glyph face.
+       (last_escape_glyph_frame, last_escape_glyph_face_id)
+       (last_escape_glyph_merged_face_id): New variables.
+       (get_next_display_element): Use/update them.
+       (redisplay_internal): Reset them before redisplay.
+
+       * xdisp.c (set_iterator_to_next): Optimize 2004-12-13 fix.
+       Only recheck faces after displaying ellipsis.
+
+2006-02-02  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (decode_composition_emacs_mule): Fix handling of
+       incorrect format data.
+
+2006-01-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (update_frame_tool_bar): Use new tool bar function
+       gtk_toolbar_insert() so we can have tool bars of different sizes.
+
+2006-01-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * data.c (Flistp): Doc fix.
+
+2006-01-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * window.c (Fother_window, Fwindow_vscroll, Fset_window_vscroll):
+       Fix typos in docstrings.
+
+2006-01-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * data.c (Fcar, Fcdr): Add links to Elisp manual to the docstrings.
+
+2006-01-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * alloc.c (make_interval, allocate_string)
+       (allocate_string_data, make_float, Fcons, allocate_vectorlike)
+       (Fmake_symbol, allocate_misc): Use BLOCK_INPUT when accessing
+       global variables.
+
+2006-01-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * dired.c (DIRENTRY_NONEMPTY) [__CYGWIN__]: Don't use d_ino; use
+       the MSDOS definition.
+
+2006-01-26  Richard M. Stallman  <rms@gnu.org>
+
+       * alloc.c (check_pure_size): Make overflow message an "error message".
+
+       * keymap.c (Fmap_keymap): Doc fix.
+
+       * xfns.c (Fx_create_frame): Put all specified parms into f->param_alist
+       unless they were cleared out.
+
+       * frame.c (x_get_arg): "Clear out" the parm in ALIST if found there.
+
+2006-01-26  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
+
+       * editfns.c (Fconstrain_to_field): Fix behaviour on field boundaries.
+       (find_field): Set before_field to after_field when pos is at BEGV.
+       (Fline_beginning_position, Fline_end_position):
+       Clarify confusing doc string.
+
+       * cmds.c (Fbeginning_of_line, Fend_of_line): Clarify confusing doc
+       string.
+
+2006-01-26  Kenichi Handa  <handa@m17n.org>
+
+       * callproc.c (Fcall_process): GCPRO error_file.  Encode infile,
+       current_dir, and error_file.  On reporting an error, decode them
+       back.
+
+2006-01-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * regex.c (IMMEDIATE_QUIT_CHECK): Use it with SYNC_INPUT as well.
+       (re_match_2_internal) <on_failure_jump, on_failure_jump_smart>:
+       Don't check for quit, since any loop will go through fail or jump.
+
+2006-01-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * alloc.c (allocate_string_data): Update next_free immediately, to
+       reduce risk of memory clobberage.
+
+2006-01-24  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
+
+       * xdisp.c (handle_invisible_prop): Set it->position to fix cursor
+       display when point moves across an ellipsis.  If there are
+       adjacent invisible texts, don't lose the second one's ellipsis.
+       (x_produce_glyphs): Doc fix.
+
+2006-01-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xterm.c (x_catch_errors_unwind): Yet another int/Lisp_Object mixup.
+
+2006-01-23  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (handle_single_display_spec): Fix handling of space
+       property on char from string: set *position rather than
+       it->current.pos.
+       (produce_stretch_glyph): Reduce width of stretch glyphs so they
+       don't get wider than the window (unless truncate-lines is on).
+
+2006-01-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xterm.c: Avoid allocating Lisp data from a signal handler.
+       (x_error_message): New var to replace x_error_message_string.
+       (x_error_catcher, x_catch_errors, x_catch_errors_unwind)
+       (x_check_errors, x_had_errors_p, x_clear_errors, x_error_handler)
+       (syms_of_xterm): Use it instead of x_error_message_string.
+
+       * alloc.c (lisp_align_free): Add an assertion.
+       (make_interval, allocate_string, make_float, Fcons, Fmake_symbol)
+       (allocate_misc): If ENABLE_CHECKING is on, check we're not called from
+       a signal handler.
+
+2006-01-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * dired.c (syms_of_dired) <completion-ignored-extensions>: Doc fix.
+
+2006-01-21  Romain Francoise  <romain@orebokech.com>
+
+       * xdisp.c (get_window_cursor_type): Fix last change.
+       Update copyright year.
+
+2006-01-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * lread.c (Fload): Don't leak the file descriptor returned by
+       openp if we are going to signal an error.
+
+       * w32.c (sys_close): If FD is outside [0..MAXDESC) limits, pass it
+       directly to _close.
+       (sys_dup): Protect against new_fd larger than fd_info[] can handle.
+       (sys_read): If FD is outside [0..MAXDESC) limits, pass it directly
+       to _read.
+       (sys_write): If FD is outside [0..MAXDESC) limits, pass it
+       directly to _write.
+
+       * .gdbinit: Don't dereference Vsystem_type's Lisp_Symbol pointer
+       if it is NULL.
+
+2006-01-20  Kenichi Handa  <handa@m17n.org>
+
+       * puresize.h (BASE_PURESIZE): Increment to 1190000.
+
+2006-01-19  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (get_window_cursor_type): Use cursor type specified by
+       the selected buffer for the echo area too.
+
+2006-01-19  Richard M. Stallman  <rms@gnu.org>
+
+       * keymap.c (Fmap_keymap): Doc fix.
+
+       * s/irix6-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): New definitions.
+
+       * keyboard.c (echo_char): Don't omit the space between first two
+       echoed chars.
+
+       * minibuf.c (read_minibuf): Fix previous change.
+
+2006-01-19  Kenichi Handa  <handa@m17n.org>
+
+       * xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF.
+
+2006-01-17  Richard M. Stallman  <rms@gnu.org>
+
+       * frame.c (x_frame_get_and_record_arg): Don't record Qunbound
+       value in f->param_alist.
+
+2006-01-15  Andreas Schwab  <schwab@suse.de>
+
+       * search.c (Freplace_match): Use UPPERCASEP instead of !NOCASEP.
+
+2006-01-13  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in: Define new macro WINDOW_SUPPORT.
+       (lisp): Use it.
+       (SOME_MACHINE_LISP): Add conditionally loaded files.
+
+2006-01-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c [USE_ATSUI] (atsu_get_text_layout_with_text_ptr)
+       [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Specify kATSLineUseQDRendering.
+       (XLoadQueryFont) [USE_ATSUI]: Display diacritical marks in
+       decomposed form.
+
+       * process.c [HAVE_INTTYPES_H]: Include inttypes.h.
+       (ifflag_table): Fix typo (IFF_OACTIV -> IFF_OACTIVE).
+       (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ_IFR_NETMASK
+       macro.  Also try member ifr_addr when getting netmask.
+
+2006-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (Fexpand_file_name): Remove redundant tests.
+       Fix elimination of // so that it doesn't prevent elimination of an
+       immediately following /. or /..
+
+2006-01-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_toggle_notify_cb): New function.
+       (xg_toggle_visibility_cb): Move setting of x_gtk_show_hidden_files to
+       xg_toggle_notify_cb.
+       (xg_get_file_with_chooser): Add callback to xg_toggle_notify_cb when
+       parameter value changes so the toggle button gets updated.
+
+2006-01-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * .gdbinit: Fix typo.
+
+2006-01-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit: Fix last change.
+
+2006-01-05  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fmake_network_process): Use AF_INET instead of
+       AF_UNSPEC when AF_INET6 is not defined.
+
+2006-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
+       Don't check that the other type is known file-related one.
+
+       * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor,
+       gestaltSystemVersionMinor, and gestaltSystemVersionBugFix on Mac
+       OS X 10.4 and later.
+
+2006-01-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_image_for_pixmap): If the image is from a file,
+       let GTK do all image processing.  Importing Emacs own pixmaps to GTK
+       looks bad for inactive tool bar items with some Gnome themes.
+
+2006-01-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit: Avoid a warning message when x_error_quitter is not
+       compiled in.
+
+       * process.c [WINDOWSNT]: Undef AF_INET6 to disable IPv6 support
+       for w32.
+
+2006-01-04  Kim F. Storm  <storm@cua.dk>
+
+       * process.c: Add IPv6 support.
+       (Qipv4, Qipv6): New vars.
+       (syms_of_process): Intern and staticpro them.
+       (Fformat_network_address): Handle 9 or 8 element vector as IPv6 address
+       with or without port number.  Handle 4 element vector as IPv4 address
+       without port number.
+       (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size)
+       (conv_lisp_to_sockaddr): Handle IPv6 addresses.
+       (Fmake_network_process): Use :family 'ipv4 and 'ipv6 to explicitly
+       request that address family only.  :family nil or omitted means to
+       determine address family from the specified :host and :service.
+       (ifflag_table): Add missing OpenBSD IFF_ flags.
+       (server_accept_connection): Handle IPv6 addresses.
+       (init_process): Add (:family ipv4) and (:family ipv6) sub-features.
+
+       * .gdbinit: Undo last change.  Instead, look at Vsystem_type to
+       determine which breakpoints to set.
+
+2006-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (describe_map_compare): Yet another int/Lisp_Object mixup.
+
+       * window.h (Fwindow_minibuffer_p): Declare (for use in minibuf.c).
+
+2006-01-03  Romain Francoise  <romain@orebokech.com>
+
+       * emacs.c (main): Update copyright year.
+
+2006-01-03  Ken Raeburn  <raeburn@gnu.org>
+
+       * callproc.c (delete_temp_file): Bind file-name-handler-alist to
+       nil for the call to internal_delete_file.
+
+2006-01-01  Ken Raeburn  <raeburn@gnu.org>
+
+       * callproc.c (Fcall_process_region): Bind file-name-handler-alist
+       to nil for the call to Fwrite_region.
+
+2005-12-31  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (read_minibuf): Clear out all other minibuffer windows.
+
+2005-12-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (gdb_pvec_type): A dummy variable for GDB's sake.
+
+2005-12-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * textprop.c (set_text_properties): Reword description of return value.
+       Return Qnil if caller wants to remove all text properties from a
+       string and the string already has no intervals.
+
+2005-12-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * term.c (visible_cursor): New boolean var.
+       (set_terminal_modes, tty_show_cursor): Use "vs" or "ve" depending on
+       visible_cursor.
+       (syms_of_term): Export the new var as "visible-cursor".
+
+2005-12-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit: Tell users not to worry about GDB warnings that some
+       functions do not exist in the binary.
+
+2005-12-30  Andreas Schwab  <schwab@suse.de>
+
+       * process.c (Fnetwork_interface_info): Correctly terminate the
+       loop over ifflag_table.
+
+2005-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * lread.c (readevalloop): Test for reading a whole buffer
+       before actually reading anything.  Handle all cases, including
+       START = END = nil and an already-narrowed buffer.
+       Convert END to a marker if it is a number.
+
+       * keymap.c (describe_map): Put sparse map elements into an array,
+       sort them, then output a sequence of identical bindings on one line.
+       (struct describe_map_elt): New data type.
+       (describe_map_compare): New function.
+
+2005-12-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_file_with_chooser): Change message shown
+       in file chooser.
+
+2005-12-27  Richard M. Stallman  <rms@gnu.org>
+
+       * lread.c (readevalloop): Set PT and ZV in the proper buffer,
+       not the current one.
+
+       * minibuf.c (Fminibuffer_message): Doc fix.
+       (read_minibuf): Set current_buffer->enable_multibyte_characters sooner.
+
+       * eval.c (do_autoload): Ignore elements of Vautoload_queue
+       where car is not symbol.
+
+2005-12-27  Kenichi Handa  <handa@m17n.org>
+
+       * charset.c (lisp_string_width): Check multibyteness of STRING.
+
+2005-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (x_show_hidden_files): New variable.
+       (syms_of_xfns): Defvar it.
+
+       * gtkutil.c (xg_toggle_visibility_cb): New function.
+       (xg_get_file_with_chooser): Add toggle hidden files and a message
+       to the new file chooser dialog.  Show hidden files if
+       x_show_hidden_files is non-zero.
+
+2005-12-26  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.h: Undo previous change.
+
+       * Makefile.in (undo.o): Undo previous change.
+
+       * undo.c: Undo previous change.
+
+2005-12-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keyboard.h: extern last_point_position_window.
+
+       * undo.c: include keyboard.h.
+
+       * Makefile.in (undo.o): Depend on keyboard.h.
+
+2005-12-26  Richard M. Stallman  <rms@gnu.org>
+
+       * commands.h (last_point_position_window): Declare.
+
+       * undo.c: Depend on window.h.
+       (record_point): Save old point from the correct window.
+
+       * keyboard.c (last_point_position_window): New variable.
+       (command_loop_1): Set last_point_position_window.
+       (syms_of_keyboard): Init it.
+
+       * Makefile.in (undo.o): Depend on window.h.
+
+2005-12-25  Richard M. Stallman  <rms@gnu.org>
+
+       * eval.c (un_autoload): Expect (0 . OFEATURES) in Vautoload_queue
+       to undo a `provide'.
+
+       * fns.c (Fprovide): Store (0 . OFEATURES) in Vautoload_queue.
+
+2005-12-25  Giorgos Keramidas  <keramida@ceid.upatras.gr>
+
+       * m/amdx86-64.h [__FreeBSD__] (START_FILES, LIB_STANDARD):
+       define for FreeBSD on this platform.
+
+2005-12-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.h (TYPE_FILE_NAME): New define.
+       (posix_pathname_to_fsspec, fsspec_to_posix_pathname): Remove externs.
+
+       * mac.c (posix_pathname_to_fsspec, fsspec_to_posix_pathname):
+       Add prototypes.  Make static.
+       (mac_aedesc_to_lisp): Initialize err to noErr.
+       (mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
+       (init_coercion_handler): New functions.
+       (Fmac_coerce_ae_data): Use coercion of Apple event data for
+       translation from/to file names.
+
+       * macterm.c: Don't include sys/param.h.
+       (init_coercion_handler): Add extern.
+       [MAC_OS8] (main): Call init_coercion_handler.
+       (mac_initialize) [MAC_OSX]: Likewise.
+       [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Use coercion of
+       Apple event data for translation from/to file names.
+
+       * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise.
+
+       * image.c [MAC_OS] (find_image_fsspec): Likewise.
+
+2005-12-23  Martin Rudalics  <rudalics@gmx.at>
+
+       * insdel.c (insert, insert_and_inherit, insert_before_markers)
+       (insert_before_markers_and_inherit): Make sure FROM is correct
+       when `after-change-functions' are called.
+
+2005-12-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_uses_old_gtk_dialog): New function.
+
+       * gtkutil.c (xg_uses_old_file_dialog): New function.
+       (xg_get_file_name): Use xg_uses_old_file_dialog.
+
+       * gtkutil.h: Declare xg_uses_old_file_dialog.
+
+2005-12-22  Richard M. Stallman  <rms@gnu.org>
+
+       * xmenu.c (xmenu_show): Call inhibit_garbage_collection.
+
+2005-12-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (Fmac_coerce_ae_data) [MAC_OSX]: Fix memory leak.
+
+       * macgui.h (XCharStruct): Remove member `valid_p'.
+       (STORE_XCHARSTRUCT): Don't set member `valid_p'.
+       (XCharStructRow): New typedef.
+       (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID):
+       New macros.
+       (struct MacFontStruct): Add member `bounds'.  Remove member
+       `per_char'.  All uses for QuichDraw Text fonts are changed to
+       `bounds.per_char'.  ATSUI font bounds are represented as an array
+       `bounds.rows' of XCharStructRow's, each of which consists of a
+       bitmap of valid entries and an array of char bounds.
+
+       * macterm.c (mac_per_char_metric): Add prototype.
+       (x_per_char_metric) [USE_CG_TEXT_DRAWING]: Remove prototype.
+       (mac_query_char_extents): New function.
+       (x_per_char_metric): Use it.
+       (XLoadQueryFont): Likewise.  Consolidate min/max_bounds calculations.
+       [USE_CG_TEXT_DRAWING] (mac_draw_string_cg):
+       Use mac_per_char_metric instead of x_per_char_metric.
+       (mac_text_extents_16): New function.
+       (mac_compute_glyph_string_overhangs): Use it.
+       (mac_unload_font): Free member `bounds' in struct MacFontStruct.
+
+2005-12-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.c (Fdisplay_completion_list): Use XCAR/XCDR.
+       (Fminibuffer_completion_help): Remove duplicates before display.
+
+2005-12-21  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
+
+       * print.c (print_preprocess): Don't lose print_depth levels while
+       iterating.
+
+2005-12-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macmenu.c (Qmac_apple_event): Add extern.
+       (set_frame_menubar, mac_menu_show keymp_panes)
+       (single_keymap_panes, list_of_panes, list_of_item)
+       (single_menu_item): Add argument types to prototypes.
+       (mac_dialog_show) [HAVE_DIALOGS]: Likewise.
+       (struct skp): New struct (from xmenu.c).
+       (single_keymap_panes, single_menu_item, list_of_panes)
+       (list_of_item): Sync with xmenu.c.
+       (Fx_popup_menu, Fx_popup_dialog): Likewise.  Don't get window from
+       POSITION if it is mac-apple-event event.
+       (menubar_selection_callback): Don't use menu_command_in_progress.
+       (set_frame_menubar): First parse all submenus, then make
+       widget_value trees from them.  Don't allocate any widget_value
+       objects until we are done with the parsing.
+       (parse_single_submenu, digest_single_submenu): New functions.
+       (single_submenu): Function deleted, replaced by those two.
+       (install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't create
+       or dispose of EventHandlerUPP.  Install hander to all submenus.
+       (mac_menu_show) [!HAVE_MULTILINGUAL_MENU]: Use ENCODE_MENU_STRING
+       instead of ENCODE_SYSTEM.
+       (free_frame_menubar, fill_submenu, fill_menu): Don't use NULL for
+       integer values.
+       [HAVE_DIALOGS] (mac_dialog_show): Sync with xdialog_show (in xmenu.c).
+       (add_menu_item) [TARGET_API_MAC_CARBON]: Use CFString functions to
+       format menu item string.  Don't use NULL for integer value.
+
+       * macterm.h (struct mac_output): Remove unused member
+       menu_command_in_progress.
+
+2005-12-20  Juri Linkov  <juri@jurta.org>
+
+       * xmenu.c (Fx_popup_menu): Set Vmenu_updating_frame to f if
+       position is non-nil, else set it to nil.
+
+       * macmenu.c (Fx_popup_menu): Add `else' to set
+       Vmenu_updating_frame to nil only if position is nil.
+
+       * w32menu.c (Fx_popup_menu): Add `else' to set
+       Vmenu_updating_frame to nil only if position is nil.
+
+2005-12-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * keyboard.c (make_lispy_event): Drag-and-drop items are now
+       stored in member `args' of struct input_event.
+
+       * termhooks.h (struct input_event): Fix comment for DRAG_N_DROP_EVENT.
+
+       * xselect.c (x_handle_dnd_message): Drag-and-drop items are now
+       stored in member `args' of struct input_event.
+
+       * w32term.c (construct_drag_n_drop): Likewise.
+
+       * macterm.c (mac_do_receive_drag): Likewise.
+       (x_use_underline_position_properties): Undo 2005-07-13 change.
+       (syms_of_macterm) <x-use-underline-position-properties>: Likewise.
+       (mac_use_core_graphics, mac_wheel_button_is_mouse_2)
+       (mac_pass_command_to_system, mac_pass_control_to_system):
+       New boolean variables renamed from Lisp_Object ones
+       Vmac_use_core_graphics, Vmac_wheel_button_is_mouse_2,
+       Vmac_pass_command_to_system, and Vmac_pass_control_to_system.
+       All uses changed.
+       (syms_of_macterm): DEFVAR_BOOL them.  Remove previous DEFVAR_LISPs.
+       Make them user options.
+       (mac_handle_command_event, mac_store_services_event):
+       Call create_apple_event_from_event_ref without 5th argument.
+       (backtranslate_modified_keycode): Mask off modifier keys that are
+       mapped to some Emacs modifiers before passing it to KeyTranslate.
+       (syms_of_macterm): Make variables `mac-emulate-three-button-mouse',
+       `mac-wheel-button-is-mouse-2', and `mac-*-modifier' user options.
+       Fix docstrings of `mac-*-modifier'.
+
+       * mac.c (create_apple_event_from_event_ref): Remove arg `types'.
+       (do_applescript): Change argument types to Lisp_Object.
+       All uses changed.
+
+       * macterm.h (create_apple_event_from_event_ref): Remove 5th
+       argument from extern.
+
+2005-12-18  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * xfns.c (Fx_backspace_delete_keys_p): In case we cannot determine
+       the answer, return `lambda', not nil.
+
+2005-12-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in (bootstrap-temacs): Warn that parts of commands
+       enclosed in $(ARGQUOTE)s should not be split between two lines, as
+       that will break with GNU Make >3.80, when sh.exe is used and
+       arg quoting is with '..'.
+
+2005-12-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * print.c (print_preprocess): Just signal an error if print_depth
+       is exceeded.
+
+2005-12-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit: Set a breakpoint on w32_abort.
+
+2005-12-16  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.c (Fminibuffer_completion_contents): New Lisp function
+       created from minibuffer_completion_contents.
+       (minibuffer_completion_contents): Remove.
+       (do_completion, Fminibuffer_complete_word)
+       (Fminibuffer_completion_help): Replace minibuffer_completion_contents
+       with Fminibuffer_completion_contents.
+       (syms_of_minibuf): Add Sminibuffer_completion_contents.
+       (Fdisplay_completion_list): Doc fix.
+       (display_completion_list_1): Use `nil' for second arg of
+       `Fdisplay_completion_list'.
+
+2005-12-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (compute_tip_xy): Handle negative dx and dy.
+
+       * w32fns.c (compute_tip_xy): Ditto.
+
+       * macfns.c (compute_tip_xy): Ditto.
+
+2005-12-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * print.c (print_preprocess): Go to a deeper print_depth to avoid
+       print_object loop.
+
+2005-12-14  Kyotaro HORIGUCHI  <horiguti@meadowy.org>  (tiny change)
+
+       * coding.c (code_convert_region_unwind): GCPRO arg.
+
+2005-12-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (compute_tip_xy): Calculate root_y the same way as root_x,
+       i.e. dy is offset from top of frame instead of bottom.
+
+       * macfns.c (compute_tip_xy): Ditto.
+
+       * w32fns.c (compute_tip_xy): Ditto.
+
+       * gtkutil.c (SSDATA): New macro to remove compiler warnings.
+       (xg_get_image_for_pixmap, xg_create_frame_widgets)
+       (xg_get_file_with_chooser): Use SSDATA instead of SDATA.
+
+       * xmenu.c (menubar_selection_callback): Do nothing if the callback
+       is for an unselected radio menu item.
+
+2005-12-11  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (syms_of_xdisp) <blink-cursor-alist>: Doc fix.
+
+       * lisp.h [! NO_UNION_TYPE] (EQ): Use == so args are computed just once.
+
+       * keymap.c (Fset_keymap_parent, store_in_keymap): Use CHECK_IMPURE.
+       (Flookup_key): Doc fix.
+       (syms_of_keymap) <function-key-map>: Doc fix.
+
+       * fns.c (Frequire): Treat evaluating from a source file
+       like loading the file.
+
+       * floatfns.c (Flog): Doc fix.
+
+       * fileio.c (Finsert_file_contents): Set Vdeactivate_mark
+       when we change the buffer.
+
+2005-12-11  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.c (display_completion_list_1):
+       Call `minibuffer_completion_contents' instead of using `nil' as
+       second arg of `Fdisplay_completion_list'.
+       (keys_of_minibuf): Unbind SPC in
+       Vminibuffer_local_filename_completion_map (see also related
+       change on 2005-12-06).
+
+2005-12-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * emacs.c (main) [MAC_OS8]: Undo previous change.
+
+       * macselect.c (syms_of_macselect) <mac-apple-event-map>:
+       Initialize to nil.  Keymap is now created in lisp/term/mac-win.el.
+
+2005-12-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * Makefile.in (macselect.o): Depend on keymap.h.
+
+       * emacs.c (main) [MAC_OS8]: Call syms_of_keymap before
+       syms_of_macselect.
+
+       * image.c (init_image) [MAC_OS]: Don't call EnterMovies.
+       [!HAVE_GIF && MAC_OS] (gif_load): Call EnterMovies.
+
+       * keyboard.c (Qmac_apple_event) [MAC_OS]: New variable.
+       (syms_of_keyboard) [MAC_OS]: Initialize it.
+       (make_lispy_event) [MAC_OS]: Build lisp event for MAC_APPLE_EVENT.
+
+       * mac.c (Qundecoded_file_name): New variable.
+       (syms_of_mac): Initialize it.
+       (mac_aelist_to_lisp, mac_aedesc_to_lisp): New functions.
+       [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): New fun.
+       (Fmac_coerce_ae_data): New defun.
+       (syms_of_mac): Defsubr it.
+
+       * macselect.c: Include keymap.h.
+       (mac_ready_for_apple_events): New variable.
+       (Vmac_apple_event_map, Qmac_apple_event_class)
+       (Qmac_apple_event_id): New variables.
+       (syms_of_macselect): Initialize them.
+       (Qundefined, mac_store_apple_event): Add externs.
+       (struct apple_event_binding): New struct.
+       (find_event_binding_fun, find_event_binding)
+       (mac_find_apple_event_spec, defer_apple_events)
+       (mac_handle_apple_event, init_apple_event_handler)
+       (copy_scrap_flavor_data): New functions.
+       (Fmac_process_deferred_apple_events): New defun.
+       (syms_of_macselect): Defsubr it.
+       (mac_store_services_event): Fix extern.
+       (mac_handle_service_event): Don't allocate Lisp objects during
+       asynchronous input processing.  Use mac_store_services_event
+       instead of mac_store_application_menu_event.
+
+       * macterm.c (Qmac_ready_for_drag_n_drop, Qapplication, Qabout)
+       (Qpreferences): Remove variables.
+       (syms_of_macterm): Don't initialize them.
+       (Qhicommand) [USE_CARBON_EVENTS]: New variable.
+       (syms_of_macterm) [USE_CARBON_EVENTS]: Initialize it.
+       (init_required_apple_events, do_ae_open_application)
+       (do_ae_print_documents, do_ae_open_documents)
+       (do_ae_quit_application): Remove functions and prototypes.
+       (mac_ready_for_apple_events, Qundefined, init_apple_event_handler)
+       (mac_find_apple_event_spec): Add externs.
+       (mac_store_application_menu_event): Remove function.
+       (mac_store_apple_event, mac_make_lispy_event_code): New functions.
+       (mac_handle_command_event): Create Apple event from Carbon event.
+       Use mac_store_apple_event instead of mac_store_application_menu_event.
+       [MAC_OSX] (mac_store_services_event): Likewise.
+       (struct SelectionRange, SelectionRange): Remove struct and typedef.
+       [MAC_OS8] (main): Call init_apple_event_handler instead of
+       init_required_apple_events.
+       (mac_initialize) [MAC_OSX]: Likewise.
+       [!USE_CARBON_EVENTS] (mac_wait_next_event):
+       Use mac_ready_for_apple_events instead of Qmac_ready_for_drag_n_drop.
+
+       * macterm.h (mac_make_lispy_event_code, mac_aedesc_to_lisp):
+       Add externs.
+       (create_apple_event_from_event_ref) [TARGET_API_MAC_CARBON]: Likewise.
+       (Fmac_get_preference): Add EXFUN.
+
+       * termhooks.h (enum event_kind) [MAC_OS]: Add new MAC_APPLE_EVENT
+       event.
+
+2005-12-09  Richard M. Stallman  <rms@gnu.org>
+
+       * xfns.c (Fx_create_frame): Reinstate previous change.
+
+2005-12-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32_abort) [__GNUC__]: Add instructions for attaching
+       GDB to the abort dialog.
+
+2005-12-09  Kyotaro HORIGUCHI  <horiguti@meadowy.org>  (tiny change)
+
+       * indent.c (Fvertical_motion): Force move if starting on
+       stretch glyph.
+
+2005-12-08  Richard M. Stallman  <rms@gnu.org>
+
+       * lread.c (read_escape) <\s>: Don't treat strings specially.
+
+       * xfns.c (Fx_create_frame): Comment out previous change.
+
+2005-12-07  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
+
+       * xfns.c (Fx_create_frame): Initialize Vdefault_minibuffer_frame,
+       when needed.
+
+2005-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.c (keys_of_minibuf): Just unbind SPC in
+       Vminibuffer_local_filename_completion_map rather than forcing it
+       explicitly to the same binding as the global map.
+
+2005-12-06  Ken Raeburn  <raeburn@gnu.org>
+
+       * buffer.c (Fkill_buffer): Avoid dangerous side effects in NILP args.
+       * bytecode.c (Fbyte_code): Likewise.
+       * fileio.c (internal_delete_file, Fread_file_name_internal): Likewise.
+       * minibuf.c (Fminibuffer_complete_and_exit): Likewise.
+       * undo.c (truncate_undo_list): Likewise.
+
+2005-12-05  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (enlarge_window): Eliminate arg preserve_before.
+       Assume it is 0.  All callers changed.
+       (Fenlarge_window, Fshrink_window): Likewise.
+
+2005-12-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (compute_tip_xy): Put tip above pointer if it doesn't
+       fit below.
+
+2005-12-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h: Add prototype for xg_set_icon_from_xpm_data.
+
+       * xfns.c (x_real_positions): int ign => unsigned int.
+       (xg_set_icon_from_xpm_data): Remove unused variable err.
+       (x_set_name_internal, Fx_create_frame, xg_set_icon): Add cast
+       to remove compiler warning.
+       (compute_tip_xy): Put tip above pointer if it doesn't fit below.
+
+2005-12-02  David Reitter  <david.reitter@gmail.com>
+
+       * minibuf.c (Fcompleting_read): If Vminibuffer_completing_file_name is
+       non-nil, use the new keymaps Vminibuffer_local_filename_completion_map
+       and Vminibuffer_local_must_match_filename_map keymaps.
+       (keys_of_minibuf): Bind SPC in the new file-name completion keymaps.
+
+       * keymap.c (Vminibuffer_local_filename_completion_map)
+       (Vminibuffer_local_must_match_filename_map): New variables.
+       (syms_of_keymap): DEFVAR_LISP them, initialize them, and set their
+       parent to be Vminibuffer_local_completion_map and
+       Vminibuffer_local_must_match_map, respectively.
+
+       * commands.h (Vminibuffer_local_filename_completion_map)
+       (Vminibuffer_local_must_match_filename_map): Declare the new keymaps.
+
+2005-12-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (Fset_window_configuration): Don't accidentally copy the
+       window-point of one window to another.
+
+2005-11-30  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
+
+       * buffer.c (Fpop_to_buffer): Remove superfluous call to record_buffer.
+
+2005-11-30  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c: Include fcntl.h.  Define O_WRONLY if not defined.
+       (valid_lisp_object_p) [!GC_MARK_STACK]: Validate pointer by
+       passing it to `emacs_write'.
+
+2005-11-29  Ari Roponen  <arjuropo@cc.jyu.fi>  (tiny change)
+
+       * atimer.c (stop_other_atimers): Fix loop to correctly compute `prev'.
+
+2005-11-27  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (adjust_window_trailing_edge): New function.
+       (Fadjust_window_trailing_edge): New function.
+       (syms_of_window): Defsubr it.
+       (window_deletion_count): New variable.
+       (delete_window): Update window_deletion_count.
+
+2005-11-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * minibuf.c (syms_of_minibuf): Mention the extension of
+       `completion-auto-help's meaning by complete.el.
+
+2005-11-26  Henrik Enberg  <henrik.enberg@telia.com>
+
+       * xfaces.c (Finternal_set_lisp_face_attribute_from_resource):
+       Handle :inherit property as a lisp expression.
+
+2005-11-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (Qcontrol): Rename from Qctrl.  All uses changed.
+       (syms_of_macterm): Staticpro Qcontrol, Qmeta, Qalt, Qhyper,
+       Qsuper, and Qmodifier_value.
+       (Vmac_control_modifier, Vmac_option_modifier)
+       (Vmac_command_modifier, Vmac_function_modifier)
+       (Vmac_emulate_three_button_mouse, Vmac_wheel_button_is_mouse_2)
+       (Vmac_pass_command_to_system, Vmac_pass_control_to_system)
+       (Vmac_charset_info_alist): Doc fixes.
+
+2005-11-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * emacs.c (main) [MAC_OSX]: Change working directory to home
+       directory if `-psn_*' option is specified.
+
+       * mac.c (DECODE_UTF_8): Remove macro.
+       [TARGET_API_MAC_CARBON] (cfstring_to_lisp_nodecode): New function
+       created from cfstring_to_lisp.
+       [TARGET_API_MAC_CARBON] (cfstring_to_lisp): Use it.
+       (xrm_get_preference_database) [TARGET_API_MAC_CARBON]: Likewise.
+
+       * macterm.h (cfstring_to_lisp_nodecode) [TARGET_API_MAC_CARBON]:
+       Add prototype.
+
+2005-11-21  Ken Raeburn  <raeburn@gnu.org>
+
+       * keymap.c (shadow_lookup): Use make_number to pass a number to
+       Fsubstring.
+
+2005-11-21  Juri Linkov  <juri@jurta.org>
+
+       * puresize.h (BASE_PURESIZE): Increment to 1180000.
+
+2005-11-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xfaces.c (Finternal_set_lisp_face_attribute):
+       Use :ignore-defface for new frame defaults when `unspecified' is
+       supplied.
+       (Finternal_get_lisp_face_attribute): Hide :ignore-defface.
+       (merge_face_vectors): Don't do :ignore-defface overwriting here.
+       (Finternal_merge_in_global_face): Do it here.
+
+2005-11-20  Juri Linkov  <juri@jurta.org>
+
+       * charset.c (invalid_character): Use Lisp-readable syntax
+       for octal and hex.  Reorder decimal, octal and hex values.
+
+2005-11-20  Nick Roberts  <nickrob@snap.net.nz>
+
+       * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that
+       this type is recognised when debugging.
+
+2005-11-19  Andreas Schwab  <schwab@suse.de>
+
+       * .gdbinit (nextcons, xcdr, xfloat): Update for changes in
+       Lisp_Cons and Lisp_Float.
+
+2005-11-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c [USE_CG_TEXT_DRAWING] (cg_text_anti_aliasing_threshold):
+       New variable.
+       [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): New fun.
+       (init_font_name_table) [USE_ATSUI && USE_CG_TEXT_DRAWING]: Use it.
+       [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): Don't do antialiasing if
+       font size is smaller than or equal to cg_text_anti_aliasing_threshold.
+
+2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image.c (x_create_bitmap_from_xpm_data): Free attributes on fail.
+
+       * xfaces.c (Qignore_defface): New variable.
+       (syms_of_xfaces): Provide `:ignore-defface'.
+       (IGNORE_DEFFACE_P): New macro.
+       (check_lface_attrs, lface_fully_specified_p)
+       (Finternal_set_lisp_face_attribute)
+       (Fface_attribute_relative_p, Fmerge_face_attribute):
+       Handle Qignore_defface as a possible value.
+       (merge_face_vectors): The merged face is `unspecified' if the
+       mergee specifies `:ignore-defface'.
+
+2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lread.c (readevalloop): Add missing GCPROs.
+
+2005-11-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xfns.c (xg_set_icon_from_xpm_data): New function.
+
+       * gnu.h (gnu_xpm_bits): Rename from gnu_bits.
+       (gnu_xbm_bits): Rename from gnu_bits (xbm version).
+
+       * xterm.c (x_bitmap_icon): Use the xpm if available.
+
+       * image.c (x_create_bitmap_from_xpm_data): New function.
+       (x_create_bitmap_from_xpm_data): Initialize XpmAttributes.
+
+2005-11-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * Makefile.in (lisp, shortlisp): Add rfn-eshadow.
+
+2005-11-16  Nick Roberts  <nickrob@snap.net.nz>
+
+       * .gdbinit: Make SIGTSTP work like SIGINT normally does.
+
+2005-11-15  Andreas Schwab  <schwab@suse.de>
+
+       * lisp.h (struct Lisp_Cons): Make cdr a union.
+       (XCDR_AS_LVALUE): Adjust.
+       (struct Lisp_Float): Make data a union.
+       (XFLOAT_DATA): Adjust.
+
+       * alloc.c (free_float): Make free list chaining aliasing-safe.
+       (make_float): Likewise.
+       (free_cons): Likewise.
+       (Fcons): Likewise.
+       (check_cons_list): Likewise.
+       (Fmake_symbol): Likewise.
+       (allocate_misc): Likewise.
+       (free_misc): Likewise.
+       (gc_sweep): Likewise.
+
+2005-11-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (HASHKEY_QUERY_CACHE): New define.
+       (xrm_create_database, xrm_q_put_resource): Empty query cache.
+       (xrm_get_resource): Use query cache.
+
+       * image.c (init_image) [MAC_OS]: Don't call EnterMovies if
+       inhibit_window_system is set.
+
+2005-11-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macgui.h (USE_CG_TEXT_DRAWING): New define.
+       (struct MacFontStruct) [USE_CG_TEXT_DRAWING]: New members cg_font
+       and cg_glyphs.
+
+       * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): New function.
+       (x_draw_glyph_string_foreground) [USE_CG_TEXT_DRAWING]: Use it.
+       (XLoadQueryFont) [USE_CG_TEXT_DRAWING]: Set members cg_font and
+       cg_glyphs in struct MacFontStruct if synthesized bold or italic is
+       not used and font substitution never occurs for ASCII and Latin-1
+       characters.
+       (XLoadQueryFont): Maximum and minimum metrics are now those among
+       ASCII characters.
+       (XLoadQueryFont) [!MAC_OS8 || USE_ATSUI]: Apply WebKit-style
+       height adjustments for Courier, Helvetica, and Times.
+
+       * s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'.
+
+2005-11-11  David Reitter  <david.reitter@gmail.com>
+
+       * macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey,
+       macMetaKey, macAltKey.  Introduce Qctrl, Qmeta,
+       Vmac_control_modifier / mac-control-modifier,
+       Vmac_option_modifier / mac-option-modifier,
+       Vmac_command_modifier / mac-command-modifier.
+       (mac_to_emacs_modifiers): Use the new style modifier
+       variables.  Return UInt32 (modifiers are longs now.)
+       (backtranslate_modified_keycode): New function (refactoring).
+       (XTread_socket): Use new modifier variables and refactored function.
+       (mac_determine_quit_char_modifiers): Remove macMetaKey (there is
+       no dedicated meta key.  Not in use anyway.)
+       (convert_fn_keycode): Map Fn-keys to their original keycode
+       using a table (english keyboard only).
+
+2005-11-11  Kim F. Storm  <storm@cua.dk>
+
+       * .gdbinit (pitx): Fix output format if n_overlay_strings > 0.
+       Add post hook to "backtrace" to always dump lisp call stack to
+       increase chance of people sending it to us when reporting bugs.
+
+       * doc.c (Fsubstitute_command_keys): Doc fix.
+
+       * dispextern.h (struct it): New member ignore_overlay_strings_at_pos_p.
+
+       * xdisp.c (handle_stop): Skip overlay string handling if
+       ignore_overlay_strings_at_pos_p is set.
+       (set_iterator_to_next): At end of display vector, set
+       ignore_overlay_strings_at_pos_p if dpvec came from an overlay
+       string, so we skip those overlay strings at current pos.
+
+2005-11-10  Lars Hansen  <larsh@soem.dk>
+
+       * fileio.c (file-regular-p): Doc fix.
+
+2005-11-10  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (valid_lisp_object_p): New function to validate that
+       an object is really a valid Lisp_Object.
+
+       * lisp.h (valid_lisp_object_p): Add prototype.
+
+       * print.c (safe_debug_print): New function to be called from gdb
+       to print Lisp objects; use valid_lisp_object_p to avoid crashing
+       if user tries to print something which is not a Lisp object.
+
+       * .gdbinit (pp, pp1): Use safe_debug_print.
+       (pv, pv1): New commands to print value of a lisp variable.
+
+2005-11-10  Nick Roberts  <nickrob@snap.net.nz>
+
+       * .gdbinit (pp1): New user-defined function.
+
+2005-11-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c [MAC_OSX] (image_load_quartz2d): Fix memory leak.
+
+       * mac.c [MAC_OSX] (init_mac_osx_environment): Reinitialize locale
+       related variables for dumped executable.
+
+       * unexmacosx.c (unexec_write_zero): New function.
+       (copy_data_segment): Clear uninitialized local variables in
+       statically linked libraries.
+
+       * s/darwin.h (C_SWITCH_SYSTEM): Remove -fno-common.
+
+2005-11-09  Juri Linkov  <juri@jurta.org>
+
+       * keymap.c (shadow_lookup): If Flookup_key returns a number,
+       call it again with a sub-key-sequence, and if its return value
+       is non-nil (sub-key is bound), return nil.
+
+2005-11-08  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fsignal_process): Recognize signal names with and
+       without SIG prefix, e.g. SIGHUP and HUP.
+
+       * search.c (search_buffer): No need to initialize base_pat.
+
+2005-11-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (Fget_lru_window, Fget_largest_window, window_loop):
+       Don't abuse the `mini' arg.  Use the `obj' arg instead.
+
+2005-11-04  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (show_mouse_face): Clear mouse face to eol.
+
+2005-11-03  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * Makefile.in (lisp, shortlisp): Add emacs-lisp/syntax.elc,
+       font-lock.elc and jit-lock.elc.
+
+2005-11-03  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Fenlarge_window): Rename SIDE to HORIZONTAL.
+       (enlarge_window): Rename WIDTHFLAG to HORIZ_FLAG.
+       (CURBEG, CURSIZE): Use HORIZ_FLAG instead of WIDTHFLAG.
+
+       * sheap.c (STATIC_HEAP_SIZE): Increment both definitions.
+
+       * alloc.c (refill_memory_reserve): Move decl out of conditionals.
+
+2005-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (Fdisplay_buffer): Fix last change to not use
+       a dedicated window.
+
+2005-11-01  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (update_window_fringes): Undo 2005-10-27 change.
+       Instead, rotate the bottom angle bitmap 180 degrees to indicate
+       that the bottom row does not end in a newline.
+
+2005-11-01  Andreas Schwab  <schwab@suse.de>
+
+       * unexelf.c (unexec): Handle .plt section in BSS segment.
+
+2005-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lread.c (readevalloop): Yet another int/Lisp_Object mixup (YAILOM).
+
+       * window.c (window_loop): For LRU and LARGEST, let the `mini' argument
+       determine whether to consider dedicated windows as well.
+       (Fget_lru_window, Fget_largest_window): Add `dedicated' argument.
+       (Fdisplay_buffer): Do consider dedicated windows in those cases where
+       we will split the window rather than reuse it.
+       Don't try to use windows on other displays.
+
+2005-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * puresize.h (BASE_PURESIZE): Increment to 1170000.
+
+2005-10-31  Romain Francoise  <romain@orebokech.com>
+
+       * macfns.c: Update copyright year.
+       * m/gould.h: Likewise.
+
+2005-10-30  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (display_line): Restore it->current_x and call
+       extend_face_to_end_of_line when last glyph doesn't fit on line.
+       (set_glyph_string_background_width): Remove specific tests here
+       to see if face background should extend to end of line.  Simplify.
+
+2005-10-30  Richard M. Stallman  <rms@gnu.org>
+
+       * alloc.c (BYTES_USED): Use uordblks, not arena.
+       (bytes_used_when_reconsidered): New variable.
+       (emacs_blocked_free): Set that.
+
+2005-10-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * alloc.c (emacs_blocked_free): Fix typo.
+
+2005-10-29  Richard M. Stallman  <rms@gnu.org>
+
+       * data.c (Fmake_variable_frame_local): Doc fix.
+
+       * xdisp.c (handle_fontified_prop): Do nothing if memory full.
+       (format_mode_line_unwind_data): New arg SAVE_PROPTRANS
+       controls whether to save and restore mode_line_proptrans_alist.
+       Callers changed.
+       (unwind_format_mode_line): Work with that feature.
+       (redisplay_internal): Don't call prepare_menu_bars if memory full.
+       (move_elt_to_front): New function.
+       (display_mode_element): Use move_elt_to_front.
+       Don't bother munging text props on a null string.
+       Delete obsolete elts from mode_line_proptrans_alist.
+       (decode_mode_spec): Test Vmemory_full, not spare_memory.
+       (Fformat_mode_line): Clear mode_line_proptrans_alist after saving.
+
+       * lisp.h (memory_full_cons_threshold): Declare.
+       (internal_lisp_condition_case): Declare.
+
+       * alloc.c (syms_of_alloc) <memory-full>: Doc fix.
+       (Fmemory_full_p): Function deleted.
+       (syms_of_alloc): Don't defsubr it.
+       (memory_full_cons_threshold): New variable.
+       (spare_memory): Now a vector of 7 elts.
+       (buffer_memory_full): Don't set Vmemory_full here.
+       (xfree): Don't try to refill here.
+       (emacs_blocked_free): Record BYTES_USED in local var.
+       (memory_full): Now free all the slots in spare_memory.
+       (refill_memory_reserve): Allocate each slot in spare_memory.
+       (init_alloc_once): Call refill_memory_reserve.
+
+       * keyboard.c (command_loop_1): Don't set Vmemory_full here.
+
+       * eval.c (internal_lisp_condition_case): New function.
+       (Fcondition_case): Use internal_lisp_condition_case.
+       (Feval): Test Vmemory_full and memory_full_cons_threshold.
+       (Ffuncall): Likewise.
+
+       * bytecode.c (Fbyte_code): Use internal_lisp_condition_case.
+
+2005-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.c (Fparse_partial_sexp): Fix docstring.
+
+2005-10-28  Romain Francoise  <romain@orebokech.com>
+
+       * puresize.h (BASE_PURESIZE): Increment to 1130000.
+
+2005-10-28  Richard M. Stallman  <rms@gnu.org>
+
+       * xfns.c (syms_of_xfns): Provide `x' as feature.
+
+       * xdisp.c (decode_mode_spec): Define %e to indicate memory full.
+
+       * editfns.c (Fformat): Don't include string padding
+       between info[n].start and info[n].end.
+
+       * alloc.c (spare_memory): No longer static.
+       (xfree) [!SYSTEM_MALLOC]: Call refill_memory_reserve.
+
+       * puresize.h (BASE_PURESIZE): Increment to 1120000.
+
+2005-10-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * data.c (Fmake_variable_frame_local): Add clarification to docstring.
+
+       * fringe.c (update_window_fringes): Handle case where buffer ends
+       with a newline.
+
+2005-10-27  Kenichi Handa  <handa@m17n.org>
+
+       * coding.h (DECODE_SYSTEM): Fix argument name; name->str.
+
+2005-10-24  Kenichi Handa  <handa@m17n.org>
+
+       * charset.h (charset_mule_unicode_0100_24ff)
+       (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff):
+       Extern them.
+
+       * charset.c (charset_mule_unicode_0100_24ff)
+       (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff):
+       New variables.
+       (Fsetup_special_charsets): Initialize them.
+
+       * xterm.c (handle_one_xevent): Handle keysyms directly mapped to
+       supported Unicode characters.
+
+2005-10-25  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_to_x_font): Avoid forcing font widths.
+
+2005-10-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c [MAC_OS] (image_load_qt_1): Check image size.
+       Use GraphicsImportGetImageDescription instead of
+       GraphicsImportGetNaturalBounds.
+       [MAC_OSX] (image_load_quartz2d): Check image size.
+       [MAC_OS] (xpm_load_image): Likewise.
+
+       * macterm.c (last_mouse_glyph_frame): New var.
+       (note_mouse_movement): Say mouse moved if current frame differs
+       from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
+       (XTmouse_position): Set last_mouse_glyph_frame.
+       (XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event.
+       (mac_draw_string_common) [USE_ATSUI && WORDS_BIG_ENDIAN]: Fix typo.
+       Use EndianU16_BtoN.
+       (mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls.
+       (x_per_char_metric, XLoadQueryFont)
+       [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Use device origins to get
+       glyph bounds.
+       (mac_to_x_fontname, mac_do_list_fonts)
+       (mac_initialize_display_info): Change screen resolutions to 72dpi.
+
+2005-10-25  Masatake YAMATO  <jet@gyve.org>
+
+       * minibuf.c (Fdisplay_completion_list): Small doc fix.
+
+2005-10-24  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c: Undo 2005-10-23 change.
+       (last_mouse_glyph_frame): New var.
+       (note_mouse_movement): Say mouse moved if current frame differs
+       from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
+       (XTmouse_position): Set last_mouse_glyph_frame.
+       (handle_one_xevent): Clear last_mouse_glyph_frame [instead of
+       last_mouse_glyph] on mouse up/down event.
+
+       * editfns.c (Fcompare_buffer_substrings): Fix last change.
+
+2005-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * editfns.c (Fcompare_buffer_substrings): Handle multibyte chars.
+
+2005-10-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (note_mouse_movement): Always call note_mouse_highlight
+       so tool tips don't interfere with press on tool bar button.
+
+2005-10-23  Richard M. Stallman  <rms@gnu.org>
+
+       * casetab.c (Fset_case_table): Doc fix.
+
+       * lread.c (build_load_history): Replace STREAM arg with ENTIRE.
+       (readevalloop): Compute ENTIRE properly.
+       (syms_of_lread) <load-history>: Doc fix.
+
+2005-10-21  Richard M. Stallman  <rms@gnu.org>
+
+       * lread.c (Fload): Simplify gcpro structure.
+       Gcpro FOUND as well as FILE, but not EFOUND.
+       Unless preloading, record FOUND instead of FILE in Vload_history.
+       Rename repeat local FILE to MSG_FILE.
+       (syms_of_lread) <load-history>: Doc fix.
+
+2005-10-21  Kenichi Handa  <handa@m17n.org>
+
+       * search.c (boyer_moore): Add parens to fix and/or precedence bug.
+
+2005-10-20  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (clone_per_buffer_values): Remove unused var tem.
+       (init_buffer): Remove unused vars dotstat, pwdstat.
+
+       * ccl.c (check_ccl_update): Remove unused var vp.
+
+       * fileio.c (auto_save_error): Call SAFE_FREE.
+
+       * fns.c (Fchar_table_range): Remove unused var i.
+
+       * minibuf.c (display_completion_list_1): New wrapper function
+       for Fdisplay_completion_list.
+       (Fminibuffer_completion_help): Use it.
+
+       * term.c (encode_terminal_code): Remove unused var src_start.
+
+       * window.c (Fwindow_tree): Remove unused var alist.
+
+       * xterm.c (x_calc_absolute_position): Remove unused vars win_x, win_y.
+
+2005-10-20  Aubrey Jaffer  <agj@alum.mit.edu>  (tiny change)
+
+       * unexelf.c (unexec): Fix calls to `fatal' with less than 3 arguments.
+
+2005-10-20  Olli Savia  <ops@iki.fi>  (tiny change)
+
+       * syssignal.h [__Lynx__]: Undef SIGPOLL along with SIGIO.
+
+2005-10-20  Andreas Schwab  <schwab@suse.de>
+
+       * minibuf.c (Fdisplay_completion_list): Doc fix.
+
+2005-10-19  Kim F. Storm  <storm@cua.dk>
+
+       * image.c (check_image_size): Handle integer Vmax_image_size value
+       directly as max pixel value.  Use default frame size for null frame.
+       (syms_of_image) <max-image-size>: Describe integer value.
+
+2005-10-19  Romain Francoise  <romain@orebokech.com>
+
+       * emacs.c (main): Update copyright year.
+
+2005-10-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * image.c (Vmax_image_size): New variable.
+       (check_image_size): New function.
+       (xbm_read_bitmap_data, pbm_load, png_load, jpeg_load, tiff_load)
+       (gif_load, gs_load): Use it.
+       (lookup_image): Try loading again if previous load failed.
+       (xbm_read_bitmap_data): Add a new argument, a pointer to the frame
+       to display in, NULL if none.
+       (xbm_load_image, xbm_file_p): Pass xbm_read_bitmap_data the new
+       argument.
+
+2005-10-18  Richard M. Stallman  <rms@gnu.org>
+
+       * search.c (Fstring_match): Doc fix.
+
+2005-10-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (note_mouse_movement): Use PtInRect.
+       (XTread_socket): Also ignore mouse motion just before a button
+       release event.  Don't process button release event when mouse is
+       not grabbed.
+
+2005-10-16  Masatake YAMATO  <jet@gyve.org>
+
+       * minibuf.c (Fdisplay_completion_list): Add new optional
+       argument COMMON_SUBSTRING.  Bind `completion-common-substring'
+       to the optional argument during running `completion-setup-hook'.
+
+2005-10-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp):
+       Allow nil as argument.
+       [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil
+       for encoding arguments as UTF-16 in native byte order, no BOM.
+
+       * macfns.c (Fx_create_frame): Add debugging code.
+       (Fx_show_tip): Set frame pixel width and height.
+
+       * macterm.c (MAC_WINDOW_NORMAL_GC): Remove macro.
+       (FRAME_NORMAL_GC): New macro.
+       (mac_draw_line, mac_clear_area, mac_clear_window)
+       (mac_fill_rectangle, mac_draw_string, mac_draw_string_16)
+       (mac_draw_image_string, mac_draw_image_string_16): Rename from
+       XDrawLine, XClearArea, XClearWindow, XFillRectangle, XDrawString,
+       XDrawString16, XDrawImageString, and XDrawImageString16, respectively.
+       All uses changed.
+       (mac_draw_line, mac_erase_rectangle, mac_clear_area)
+       (mac_clear_window, mac_draw_bitmap, mac_draw_rectangle)
+       (mac_invert_rectangle, mac_draw_string_common, mac_draw_string)
+       (mac_draw_string_16, mac_draw_image_string)
+       (mac_draw_image_string_16, mac_copy_area, mac_copy_area_with_mask)
+       (mac_scroll_area): Drawing functions now take frame as destination.
+       All uses changed.
+       (mac_draw_string_common): Get port height with FRAME_PIXEL_HEIGHT.
+       (x_draw_fringe_bitmap): Set clipping area in face->gc.
+
+       * macterm.h (mac_clear_area): Add extern.
+
+2005-10-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (note_mouse_movement, XTread_socket): Apply 2005-10-14
+       changes for xterm.c.
+
+       * w32term.c (note_mouse_movement, w32_read_socket): Likewise.
+
+2005-10-14  Kenichi Handa  <handa@m17n.org>
+
+       * search.c (search_buffer): Give up BM search on case-fold-search
+       if one of a target character has a case-equivalence of different
+       charset even if that target charcter is an ASCII.
+
+       * casefiddle.c (casify_object): Fix for the case that case
+       conversion change the byte length.
+
+2005-10-14  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise.
+       (handle_one_xevent): Only clear help_echo_string; restore it if
+       note_mouse_movement didn't record any mouse movement.
+
+       * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use.
+       (remember_mouse_glyph): Clear RECT if mouse is over an image glyph.
+
+       * keyboard.c (make_lispy_position): Adjust wx for left margin if
+       ON_TEXT.
+       (Fposn_at_x_y): Fix calculation of x coordinate.
+       (Fposn_at_point): Return nil if point is hscrolled out of view.
+
+2005-10-13  Andreas Schwab  <schwab@suse.de>
+
+       * sysdep.c (request_sigio, unrequest_sigio): Do nothing in
+       non-interactive mode.
+
+2005-10-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change.
+
+2005-10-12  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down.
+
+2005-10-12  Romain Francoise  <romain@orebokech.com>
+
+       * buffer.c (init_buffer): Rename `rc' to `len' for clarity.
+
+2005-10-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to
+       get end of text rows.  Obtain header-line/mode-line rows directly.
+
+       * xterm.c, w32term.c, macterm.c (note_mouse_movement):
+       Restore help_echo_string if mouse is moved inside last_mouse_glyph.
+
+2005-10-12  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (remember_mouse_glyph): New generic version based on
+       glyph_rect and remember_mouse_glyph from xterm.c enhanced to
+       properly handle all different window areas.
+
+       * dispextern.h (remember_mouse_glyph): Add prototype.
+
+       * xterm.c (glyph_rect, remember_mouse_glyph): Remove X versions.
+       (note_mouse_movement, XTmouse_position): Use generic
+       remember_mouse_glyph, add last_mouse_glyph arg.
+
+       * w32term.c (note_mouse_movement): Fix last_mouse_glyph check.
+       (glyph_rect, remember_mouse_glyph): Remove w32 specific versions.
+       (note_mouse_movement, w32_mouse_position): Use generic
+       remember_mouse_glyph, add last_mouse_glyph arg.
+
+       * macterm.c (note_mouse_movement): Add call to remember_mouse_glyph.
+       (glyph_rect, remember_mouse_glyph): Remove mac specific versions.
+       (XTmouse_position): Adapt to use generic remember_mouse_glyph
+       instead of pixel_to_glyph_coords.
+
+       * window.c (coordinates_in_window): Fix x position for ON_RIGHT_MARGIN.
+       Fix x position for ON_TEXT when left margin width > 0.
+
+2005-10-11  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (coordinates_in_window): Fix y position for ON_SCROLL_BAR.
+
+       * keyboard.c (make_lispy_position): Fix buffer calculations for
+       mouse click or movement in right fringe and the margins.
+
+2005-10-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * image.c (fn_jpeg_stdio_src): Don't define it.
+       (init_jpeg_functions): Don't initialize `fn_jpeg_stdio_src'.
+       (our_common_init_source): Rename from `our_init_source'.
+       (our_common_term_source): Rename from `our_term_source'.
+       (our_memory_fill_input_buffer): Rename from
+       `our_fill_input_buffer'.
+       (our_memory_skip_input_data): Rename from `our_skip_input_data'.
+       (jpeg_memory_src): Use the new names.
+       (struct jpeg_stdio_mgr): New struct.
+       (JPEG_STDIO_BUFFER_SIZE): New constant.
+       (our_stdio_fill_input_buffer, our_stdio_skip_input_data)
+       (jpeg_file_src): New functions.
+       (jpeg_load): Use `jpeg_file_src' instead of `fn_jpeg_stdio_src'.
+
+2005-10-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (PER_CHAR_METRIC): Remove unused macro.
+       (fm_font_family_alist): New variable.
+       (syms_of_macterm): Initialize and staticpro it.
+       (decode_mac_font_name): Replace '-' in family name with '_' if it
+       occurs just once.  Lower family name.
+       (parse_x_font_name): Rename from x_font_name_to_mac_font_name.
+       All uses changed.  Remove argument MF and code conversion for it.
+       Add argument SIZE.  Rename argument MF_DECODED to FAMILY, and CS
+       to CHARSET.  Parse font size.  Lower family name.  Return integer
+       value for status of parsing.
+       (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name.
+       Don't use Fdowncase because family name is already lowered by
+       decode_mac_font_name.
+       (init_font_name_table): Always call decode_mac_font_name.
+       Add pair of family name and its reference to fm_font_family_alist.
+       (mac_clear_font_name_table): Clear fm_font_family_alist.
+       (XLoadQueryFont): Move font size parsing part to parse_x_font_name.
+       Lookup fm_font_family_alist to get font family reference.
+       (XLoadQueryFont) [USE_ATSUI]: Don't use Fdowncase because family
+       name is already lowered by parse_x_font_name.
+
+2005-10-11  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (glyph_rect): Return 0 if position is outside text area.
+
+       * keyboard.c (make_lispy_position): Fix buffer position calculation for
+       mouse click or movement in fringe.
+
+2005-10-10  Jason Rumney  <jasonr@gnu.org>
+
+       * xterm.c (remember_mouse_glyph): New function.
+       (note_mouse_movement): Use it to remember the current glyph if changed.
+       (XTmouse_position): Fix calculation of fake glyph under mouse.
+       Move code to calculate glyph under mouse into remember_mouse_glyph.
+
+2005-10-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * emacs.c (USAGE3, standard_args): -nb => -nbi.
+
+2005-10-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frame.c (Fredirect_frame_focus): Fix typos in docstring.
+       (next_frame, prev_frame, set_term_frame_name): Make static.
+
+       * window.c (Fwindow_tree): Fix spelling.
+
+2005-10-09  Romain Francoise  <romain@orebokech.com>
+
+       * window.c (Fwindow_end): Don't try to redisplay if non-interactive.
+
+2005-10-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * emacs.c (standard_args): Remove options -i, -itype, --icon-type.
+       Add options -nb, --no-bitmap-icon.
+
+       * xfns.c (Fx_create_frame): Make bitmapIcon have default on.
+
+2005-10-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macgui.h (MAX_CLIP_RECTS): New define.
+       (struct _XGC): New member clip_region.
+       (struct _XGC) [MAC_OSX && USE_ATSUI]: New members n_clip_rects and
+       clip_rects.
+
+       * macterm.c (GC_CLIP_REGION): New macro.
+       (saved_port_clip_region): New variable.
+       (mac_begin_clip, mac_end_clip): New functions.
+       (XDrawLine, mac_erase_rectangle, mac_draw_bitmap, XFillRectangle)
+       (mac_draw_rectangle, mac_draw_string_common, mac_copy_area)
+       (mac_copy_area_with_mask, mac_scroll_area): Use them.
+       (mac_set_clip_rectangle, mac_reset_clipping): Remove functions.
+       [USE_ATSUI] (atsu_get_text_layout_with_text_ptr)
+       [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Specify kATSLineFractDisable.
+       (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Clip to clipping
+       rectangles stored in gc.
+       (XFreeGC): Dispose of clipping region.
+       (mac_set_clip_rectangles, mac_reset_clip_rectangles): New functions.
+       (x_draw_fringe_bitmap, x_set_glyph_string_clipping)
+       (x_draw_relief_rect, x_draw_box_rect, x_draw_stretch_glyph_string)
+       (x_draw_glyph_string, x_clip_to_row, x_draw_hollow_cursor)
+       (x_draw_bar_cursor): Use them.
+       (x_set_glyph_string_clipping): Use get_glyph_string_clip_rects to
+       get multiple clipping rectangles.
+
+       * macterm.h (mac_term_init): Add types to extern.
+       (struct mac_output): Remove members mWP and pending_menu_activation.
+       Put members scroll_bar_foreground_pixel and
+       scroll_bar_background_pixel in #if 0.
+       (FRAME_MAC_WINDOW, FRAME_X_WINDOW): Use window_desc.
+
+       * xfaces.c (x_create_gc, x_free_gc) [MAC_OS]: Add BLOCK_INPUT.
+       Add debugging code.
+
+2005-10-08  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (window_tree, Fwindow_tree): Rename fns added 2005-10-04.
+
+2005-10-07  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (redraw_overlapped_rows, redraw_overlapping_rows)
+       [!HAVE_WINDOW_SYSTEM]: Don't declare them...
+       (update_window) [!HAVE_WINDOW_SYSTEM]: ...and don't call them.
+
+2005-10-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dispextern.h (struct glyph_string): Rename member for_overlaps_p
+       to for_overlaps.  Now occupy 3 bits.
+       (OVERLAPS_PRED, OVERLAPS_SUCC, OVERLAPS_BOTH)
+       (OVERLAPS_ERASED_CURSOR): New defines.
+       (struct redisplay_interface): Add new OVERLAPS arg to member
+       fix_overlapping_area.
+       (x_fix_overlapping_area): Add new OVERLAPS arg.
+       (get_glyph_string_clip_rects): Add extern.
+
+       * dispnew.c (redraw_overlapping_rows):
+       Call rif->fix_overlapping_area with new OVERLAPS arg as redrawn part.
+
+       * xdisp.c: Rename member for_overlaps_p in struct glyph_string to
+       for_overlaps.
+       (get_glyph_string_clip_rects): New function created from
+       get_glyph_string_clip_rect.  Set clipping rectangles according to the
+       value of for_overlaps.  Enable to store multiple clipping rectangles.
+       (get_glyph_string_clip_rect): Use get_glyph_string_clip_rects.
+       (fill_composite_glyph_string, fill_glyph_string, draw_glyphs):
+       Rename argument OVERLAPS_P to OVERLAPS.  All uses in macros changed.
+       (x_fix_overlapping_area): Add OVERLAPS arg.  Pass it to draw_glyphs.
+       (draw_phys_cursor_glyph): Set width of erased cursor to use it for
+       calculating clipping rectangles later.  Call x_fix_overlapping_area
+       with new OVERLAPS arg to draw only erased cursor area.
+       (expose_overlaps): Call x_fix_overlapping_area with new OVERLAPS arg
+       to draw overlaps in both preceding and succeeding rows.
+
+       * xterm.c, w32term.c, macterm.c: Rename member for_overlaps_p in
+       struct glyph_string to for_overlaps.
+
+2005-10-04  Richard M. Stallman  <rms@gnu.org>
+
+       * alloc.c (refill_memory_reserve): Conditionalize the body,
+       not the function's existence.
+
+2005-10-04  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (window_split_tree): New function.
+       (Fwindow_split_tree): New defun.
+       (syms_of_window): Defsubr it.
+
+2005-10-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_invert_rectangle): New function.
+       (XTflash): Use it.
+
+2005-10-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * regex.h (re_char): Don't expose it in the interface.
+       (re_set_whitespace_regexp): Adjust the arg's type to not use it.
+
+       * regex.c (re_char): Move it back here.
+       (re_set_whitespace_regexp): Change the arg's type to not use it.
+
+       * keyboard.c (make_lispy_event): If point has moved between down and up
+       event, make it a drag, not a click, to mirror what
+       mouse-drag-region expects.
+
+2005-10-02  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * lisp.h (fatal): Undo previous change.
+       * term.c (fatal): Undo previous change.
+
+2005-10-01  Richard M. Stallman  <rms@gnu.org>
+
+       * xfaces.c (face_color_gray_p): Colors close to black count as gray.
+
+2005-10-01  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (try_window): Skip scroll-margin check if ZV is visible.
+
+2005-10-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * keyboard.c (init_keyboard) [MAC_OSX]: Don't install SIGINT handler.
+
+       * macfns.c (start_hourglass): Apply 2005-05-07 change for xfns.c.
+       (x_create_tip_frame) [GLYPH_DEBUG]: Uncomment debugging code.
+       (Fx_create_frame, x_create_tip_frame) [USE_ATSUI]:
+       Try ATSUI-compatible 12pt Monaco font first.
+
+       * macgui.h (struct _XCharStruct): New member valid_p.
+       (STORE_XCHARSTRUCT): Set valid_p.
+       (struct MacFontStruct) [USE_ATSUI]: New member mac_style.
+
+       * macterm.c (mac_draw_string_common, x_per_char_metric)
+       (mac_compute_glyph_string_overhangs, init_font_name_table)
+       (XLoadQueryFont, mac_unload_font) [USE_ATSUI]: Add ATSUI support.
+       (atsu_get_text_layout_with_text_ptr) [USE_ATSUI]: New function.
+       (x_draw_glyph_string_background)
+       (x_draw_glyph_string_foreground) [MAC_OS8 && USE_ATSUI]: Don't use
+       XDrawImageString.  Always draw background and foreground separately.
+       (x_draw_glyph_string_foreground) [USE_ATSUI]: Don't use 8-bit
+       functions for one-byte chars when using ATSUI-compatible fonts.
+       (atsu_font_id_hash) [USE_ATSUI]: New variable.
+       (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it.
+       (XLoadQueryFont): Set min_byte1, max_byte1, min_char_or_byte2, and
+       max_char_or_byte2 more in detail.
+       (quit_char_comp, mac_check_for_quit_char) [MAC_OSX]: Remove functions.
+
+2005-09-30  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct type.
+       * xterm.c (handle_one_xevent, handle_one_xevent): Likewise.
+
+       * unexelf.c (fatal): Fix prototype.
+
+       * term.c (fatal): Implement using varargs.
+
+       * regex.c (re_char): Move typedef ...
+       * regex.h (re_char): ... here.
+       (re_iswctype, re_wctype, re_set_whitespace_regexp): New prototypes.
+
+       * emacs.c (malloc_set_state): Fix return type.
+       (endif): Fix type.
+
+       * lisp.h (fatal): Add argument types.
+
+       * dispextern.h (fatal): Delete prototype.
+
+       * systime.h (make_time): Prototype moved from ...
+       * editfns.c (make_time): ... here.
+
+       * editfns.c: Move systime.h include after lisp.h.
+       * dired.c:
+       * xsmfns.c:
+       * process.c: Likewise.
+
+       * alloc.c (old_malloc_hook, old_realloc_hook, old_realloc_hook):
+       Add parameter types.
+       (__malloc_hook, __realloc_hook, __free_hook): Fix prototypes.
+       (emacs_blocked_free): Change definition to match __free_hook.
+       (emacs_blocked_malloc): Change definition to match __malloc_hook.
+       (emacs_blocked_realloc): Change definition to match __realloc_hook.
+
+2005-09-30  Romain Francoise  <romain@orebokech.com>
+
+       * minibuf.c (Fread_buffer): Follow convention for reading from the
+       minibuffer with a default value.  Doc fix.
+
+2005-09-29  Juri Linkov  <juri@jurta.org>
+
+       * editfns.c (Fmessage, Fmessage_box, Fmessage_or_box):
+       Rename argument name `string' to `format-string'.
+       (Fformat): Doc fix.
+
+2005-09-28  Kim F. Storm  <storm@cua.dk>
+
+       * image.c (gif_load): Fix size of allocated image buffer
+       for images where a sub-image may be larger than the image's
+       total height/width specifications.
+
+2005-09-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macgui.h (struct _XCharStruct): Each member now takes short value.
+
+2005-09-27  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * xfaces.c (lookup_derived_face): Add parameter type.
+
+       * xdisp.c (cursor_row_fully_visible_p): Add parameter type.
+
+       * marker.c (verify_bytepos): Add parameter type.
+
+       * process.c (get_operating_system_release): Move prototype ...
+
+       * systime.h (get_operating_system_release): ... here.
+
+       * xterm.c (handle_one_xevent): Refer to union field to match the
+       type required by the function definition.
+       (set_vertical_scroll_bar): Move prototype ...
+
+       * xterm.h: ... here.
+
+       * fns.c (internal_equal, seed_random): Fix prototypes.
+       (internal_equal): Add missing parameter.
+
+2005-09-25  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (update_menu_bindings): Variable deleted.
+       (syms_of_keyboard): Don't defvar it.
+       (parse_menu_item): Don't test it.
+
+2005-09-23  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fformat): Explicitly test for end of format string
+       and don't use `index'.
+
+2005-09-23  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME):
+       Define BROKEN_GET_CURRENT_DIR_NAME.
+
+       * sysdep.c (get_current_dir_name): Also define if
+       BROKEN_GET_CURRENT_DIR_NAME.
+
+       * m/ibmrs6000.h: Test for USG5, not USG5_4.
+
+2005-09-22  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (message_dolog): Add warning about GC and Lisp strings.
+       (message2): Fix commentary.  Ok to use alloca'ed memory.
+       Still not ok to use Lisp string data (because of GC).
+       (set_message): Add comment why GC cannot happen.
+
+2005-09-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (xlfdpat_block_match_1): Fix assertion.
+       (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't add style
+       variants for a scalable font multiple times.
+
+2005-09-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * process.c (create_process) [RTU || UNIPLUS || DONT_REOPEN_PTY]:
+       Setup slave tty options before forking.
+
+2005-09-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_set_geometry): Do a gtk_window_move if program
+       positions have been set for the frame (as is done for frames in
+       special-display-buffer-names).
+
+2005-09-19  Kim F. Storm  <storm@cua.dk>
+
+       * editfns.c (Fformat): Don't scan past end of format string that
+       ends in %.  Reported by Johan Bockg\e,Ae\e(Brd.
+
+2005-09-18  Andreas Schwab  <schwab@suse.de>
+
+       * window.h (struct window): Remove height_fixed_p, no longer set.
+
+       * window.c (make_window): Don't initialize height_fixed_p.
+       (window_fixed_size_p): Don't use it.
+
+2005-09-18  John Paul Wallington  <jpw@pobox.com>
+
+       * data.c (Fdefalias): Signal an error if SYMBOL is not a symbol.
+
+2005-09-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * Makefile.in (SOME_MACHINE_OBJECTS): Undo previous change.
+
+       * macfns.c (image_cache_refcount, dpyinfo_refcount) [GLYPH_DEBUG]:
+       New variables.
+       [TARGET_API_MAC_CARBON] (Fx_file_dialog): Don't allow multiple
+       file selection.
+
+       * sysdep.c [MAC_OS8]: Don't include stdlib.h.  Include sys/param.h.
+
+2005-09-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (XMENU_OBJ) [!HAVE_CARBON]: Reinstate variable.
+       (obj): Use XMENU_OBJ, not a literal xmenu.o.
+
+2005-09-16  Romain Francoise  <romain@orebokech.com>
+
+       * fileio.c (syms_of_fileio) <write-region-inhibit-fsync>: Doc fix.
+
+2005-09-15  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (overlay_arrow_at_row): Add HAVE_WINDOW_SYSTEM conditional.
+       (display_mode_element): Instead of `lisp_string' and `this',
+       record `offset' and increment that.
+       `last_offset' replaces `last'.
+
+       * Makefile.in (XMENU_OBJ): Variable deleted.
+       (obj): Use xmenu.o unconditionally.
+       (SOME_MACHINE_OBJECTS): Delete xmenu.o.
+
+       * emacs.c (main): Don't conditionalize syms_of_xmenu on HAVE_XMENU.
+
+2005-09-15  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (move_it_vertically): Don't try to fetch byte BEGV-1.
+       (reseat_at_next_visible_line_start): Likewise (in xassert).
+
+2005-09-14  Romain Francoise  <romain@orebokech.com>
+
+       * fileio.c (write_region_inhibit_fsync): New variable.
+       (Fwrite_region): Use it to skip call to fsync.
+       (syms_of_fileio): Initialize it.
+
+2005-09-14  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (code_convert_region_unwind): Argument format changed.
+       (run_pre_post_conversion_on_str): If pre-write-conversion function
+       changed the current buffer, delete the new buffer.
+       (run_pre_write_conversin_on_c_str): Likewise.
+
+       * fileio.c (Fexpand_file_name): Check multibyteness of
+       default_directory.
+
+2005-09-13  Kenichi Handa  <handa@m17n.org>
+
+       * composite.c (compose_chars_in_text): Delete it.
+
+       * composite.h (compose_chars_in_text): Delete extern.
+
+2005-09-13  Kim F. Storm  <storm@cua.dk>
+
+       * print.c (print_error_message): Fix last change.
+
+2005-09-12  Kim F. Storm  <storm@cua.dk>
+
+       * composite.c (compose_chars_in_text): Fix setup of `pend'.
+       Unconditionally reload `ptr' and `pend' after eval.
+
+       * xdisp.c (message3): Pass copy of lisp string to message_dolog.
+
+       * print.c (print_error_message): Pass copy of caller name to
+       message_dolog.
+
+       * fileio.c (auto_save_error): Pass copy of lisp string to message2.
+
+2005-09-12  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (display_mode_element): Be sure to make variables THIS
+       and LISP_STRING point into a string data of ELT.
+
+2005-09-12  Kim F. Storm  <storm@cua.dk>
+
+       * editfns.c (Ftranslate_region_internal): Reload `tt' after
+       signal_after_change that may have GC'ed.
+       (Fmessage, Fmessage_box, Fmessage_or_box): Doc fix.
+
+       * keymap.c (Fdescribe_buffer_bindings): Reload `translate'
+       after insert while runs signal_after_change.
+
+       * minibuf.c (Fminibuffer_complete_word): Move `completion_string'
+       declaration to where it is used.
+
+       * w32.c (check_windows_init_file): Fix allocation of error buffer.
+
+       * xfns.c (x_encode_text): Declare static.  Add FREEP arg.
+       (x_set_name_internal): Call x_encode_text with new FREEP arg to
+       know if xfree is needed instead of guessing.
+
+       * xterm.h (x_encode_text): Remove prototype.
+
+2005-09-11  Chris Prince  <cprince@gmail.com>  (tiny change)
+
+       * w32term.c (x_bitmap_icon): Load small icons too.
+
+2005-09-10  Romain Francoise  <romain@orebokech.com>
+
+       * buffer.c (init_buffer): Grow buffer to add directory separator
+       and terminal zero.  Fix typos.
+
+2005-09-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * buffer.c (init_buffer): Fix error message for failed call to
+       get_current_dir_name.
+       (get_current_dir_name): Remove prototype.
+
+       * xsmfns.c (get_current_dir_name): Remove prototype.
+
+       * lisp.h (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]:
+       Add prototype.
+
+       * sysdep.c [WINDOWSNT]: Add prototype for getwd.
+       Don't #undef NULL after including blockinput.h.
+
+       * config.in: Regenerated.
+
+2005-09-10  Giuseppe Scrivano  <gscrivano@gmail.com>
+
+       Remove the MAXPATHLEN limitations:
+
+       * sysdep.c (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]:
+       New function.
+
+       * buffer.c (init_buffer): Use it.
+
+       * xsmfns.c (smc_save_yourself_CB): Ditto.
+
+2005-09-09  Kim F. Storm  <storm@cua.dk>
+
+       * doc.c (Fsubstitute_command_keys): Lookup key binding for
+       commands that are remapped from some other command.
+
+       * xdisp.c (try_window_reusing_current_matrix): Clear mode_line_p
+       flag in disabled rows below the window.
+
+       * frame.h (struct frame): New member updated_p.
+
+       * xdisp.c (redisplay_internal): Mark updated frames in new updated_p
+       member.  Remove local `updated' array and associated variables.
+
+2005-09-07  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (handle_display_prop): Respect overlay window property.
+
+       * xdisp.c (try_window): Remove superfluous cursor_height calculation.
+       Fixes crash reported by YAMAMOTO Mitsuharu.
+
+2005-09-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (struct xlfdpat_block, struct xlfdpat): New structs.
+       (xlfdpat_destroy, xlfdpat_create, xlfdpat_exact_p)
+       (xlfdpat_block_match_1, xlfdpat_match): New functions.
+       (xlfdpat_block_match): New macro.
+       (mac_to_x_fontname): Don't use tolower for non-ASCII characters.
+       (x_font_name_to_mac_font_name): Set coding.dst_multibyte to 0.
+       (add_font_name_table_entry): Increase font_name_table_size more
+       rapidly.
+       (mac_c_string_match): Remove function.
+       (mac_do_list_fonts): Use XLFD pattern match instead of regular
+       expression match.
+
+       * xfaces.c (xstrlwr): Don't use tolower for non-ASCII characters.
+
+2005-09-03  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (redisplay_internal): Make UPDATED as long as needed.
+       (move_it_in_display_line_to): Stop after last char on line even
+       on a windowing terminal, if that's the specified stop position.
+
+       * fns.c (Fsort): Doc fix.
+
+       * editfns.c (Fpropertize): Don't insist that properties be symbols.
+
+2005-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * dired.c (directory_files_internal_unwind, directory_files_internal)
+       (file_name_completion): Use a Save_Value object rather than a cons of
+       two 16bit ints to store the DIR*.
+       (directory_files_internal, file_name_completion): Handle both EINTR and
+       EAGAIN consistently after `readdir'.
+
+2005-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * intervals.c (update_interval): Add position info in error.
+
+       * dispnew.c (window_to_frame_hpos, update_window):
+       Avoid gcc warning about unused variable `f'.
+
+2005-08-31  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (add_menu_item): If unicode_append_menu returns an
+       error, revert to using AppendMenu.
+
+2005-08-31  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c (PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument.
+       All uses changed.
+       [MAC_OS] (XPutPixel, XGetPixel): Add efficient versions for common
+       cases.
+       (x_create_x_image_and_pixmap) [MAC_OS]: Don't call x_destroy_x_image.
+       [MAC_OS] (find_image_fsspec) [!MAC_OSX]: Don't use FSRef.
+       Use posix_pathname_to_fsspec.
+       [MAC_OS] (xpm_load_image): Fill in background_transparent field
+       while we have mask.
+
+       * macgui.h [!TARGET_API_MAC_CARBON] (GetPixDepth): New define.
+
+       * macterm.h (PIX_MASK_DRAW, PIX_MASK_RETAIN): Move defines to image.c.
+
+2005-08-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.c (update_syntax_table): Properly reproduce the special +1
+       setting of e_property at the end of the buffer when bumping into the
+       INTERVALS_AT_ONCE limit.
+
+2005-08-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (USAGE1): Fix the description of the -Q option.
+
+2005-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (pos_visible_p): Yet another int/Lisp_Object mixup (YAILOM).
+
+2005-08-26  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (resize_mini_window): Fix 2005-08-20 change.
+       Don't move PT to new window start.
+
+2005-08-25  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * keyboard.c (kbd_buffer_get_event) [MAC_OS]: Make events for
+       ICONIFY/DEICONIFY_EVENT.
+
+       * macterm.c (mac_copy_area, mac_copy_area_with_mask):
+       Restore background color.
+       (mac_handle_visibility_change): New function.
+       (x_make_frame_invisible, x_iconify_frame)
+       (XTread_socket) [!USE_CARBON_EVENTS]: Use it.
+       [USE_CARBON_EVENTS] (mac_handle_window_event)
+       (install_window_handler): Handle visibility change events.
+       (x_make_frame_visible): Don't reposition window if it is iconified
+       or asked for visible before.  Select and uncollapse window when it
+       is made visible.
+       (x_make_frame_invisible): Don't reset x_highlight_frame.
+       (x_iconify_frame): Likewise.  Make invisible frame visible before
+       it is iconified.
+       (read_socket_inev): Move variable outside #if USE_CARBON_EVENTS.
+       (do_window_update): Don't change visibility of invisible frame.
+
+2005-08-22  Juri Linkov  <juri@jurta.org>
+
+       * term.c (turn_on_face): Check for TS_set_foreground and
+       TS_set_background depending on standout_mode.  Simplify.
+
+2005-08-21  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (update_window_fringes): Only put TOP and BOTTOM
+       bitmaps on fully visible rows.
+
+       * fringe.c (update_window_fringes): Replace FORCE_P arg with
+       KEEP_CURRENT_P arg; if non-zero, don't update current row fringes,
+       and return 0.
+
+       * xdisp.c (redisplay_window): Call update_window_fringes with
+       KEEP_CURRENT_P non-0 if we are going to refresh fringes later.
+
+2005-08-20  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (display_echo_area_1): Get display start pos from w->start.
+       (resize_mini_window): Set w->start, and PT, so as to display the tail
+       end of the buffer, if it doesn't all fit.
+
+2005-08-18  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (calc_pixel_width_or_height): Use actual display
+       resolution when available instead of Vdisplay_pixels_per_inch.
+
+2005-08-17  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (pos_visible_p): Adjust X value if window is hscrolled.
+
+       * dispnew.c (buffer_posn_from_coords): Check that target row is
+       within matrix.
+
+2005-08-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_wm_set_icon_pixmap): Move GTK specific code to
+       xg_set_frame_icon and call it.
+
+       * gtkutil.c (xg_set_frame_icon): New function.
+
+       * gtkutil.h (xg_set_frame_icon): Declare it.
+
+2005-08-16  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (increment_row_positions): Skip non-enabled rows.
+
+       * window.c (SAVED_WINDOW_VECTOR_SIZE): Remove dangerous define.
+       (Fcurrent_window_configuration): Use VECSIZE macro instead.
+
+2005-08-15  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (message3_nolog): Clear echo_message_buffer.
+
+2005-08-15  Kim F. Storm  <storm@cua.dk>
+
+       * lisp.h (QUIT) [!SYNC_INPUT]: Throw t to Vthrow_on_input.
+
+       * process.c (deactivate_process, status_notify, read_process_output)
+       (update_status, status_convert, decode_status, allocate_pty)
+       (make_process, remove_process, list_processes_1)
+       (create_process_1, unwind_request_sigio, read_process_output)
+       (send_process, keyboard_bit_set): Declare static.
+       (Fdelete_process): Simplify.  Pass process to status_notify, so we
+       don't try to read output from it.
+       (status_notify): New arg deleting_process--don't try to read
+       output from that process.
+
+       * lisp.h (deactivate_process, status_notify, read_process_output):
+       Remove prototypes.
+
+2005-08-14  Richard M. Stallman  <rms@gnu.org>
+
+       * image.c (syms_of_image): Init Qxbm, Qpbm before calling
+       define_image_type.
+
+2005-08-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_pixbuf_from_pix_and_mask): New function.
+       (xg_get_image_for_pixmap): Move some code to
+       xg_get_pixbuf_from_pix_and_mask, and call it.
+
+       * gtkutil.h (xg_get_pixbuf_from_pix_and_mask): Declare.
+
+       * xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
+       to get an GTK icon and set it with GTK functions to avoid having GTK
+       override an icon set with just X functions.
+
+2005-08-11  Richard M. Stallman  <rms@gnu.org>
+
+       * image.c (syms_of_image): Init image_types here, and call
+       define_image_type.
+       (init_image): Not here.
+
+2005-08-09  Richard M. Stallman  <rms@gnu.org>
+
+       * bytecode.c (BYTE_CODE_QUIT): Throw t to Vthrow_on_input.
+
+       * lisp.h (QUIT): Throw t to Vthrow_on_input.
+
+2005-08-09  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * floatfns.c (Fexpt): Use floats for negative exponent.
+
+2005-08-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_modify_menubar_widgets): Remove semicolon that
+       should not be there, causing menu display errors with GTK 2.6.9.
+
+2005-08-07  Richard M. Stallman  <rms@gnu.org>
+
+       * floatfns.c (Fexpt): Undo previous change.
+
+       * dispnew.c (Fframe_or_buffer_changed_p): Take an arg
+       so it can be used with various state vectors.
+
+       * emacs.c (endif): Convert -script into -scriptload.
+       (standard_args): Add -scriptload.  Allow -basic-display with one dash.
+
+       * fns.c (syms_of_fns): Add `emacs' to features.
+
+       * term.c (set_terminal_modes): If no TS_termcap_modes string,
+       output newlines to scroll the old screen contents off the screen.
+
+2005-08-06  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * floatfns.c (Fexpt): Use floats for negative exponent.
+       Reported by D Goel.
+
+2005-08-02  Richard M. Stallman  <rms@gnu.org>
+
+       * frame.c (Fframe_char_width): Doc fix.
+
+2005-07-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * xdisp.c (syms_of_xdisp) <redisplay-end-trigger-functions>:
+       Defvar it.
+
+2005-07-28  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32fns.c (my_set_window_pos, my_show_window): Don't declare.
+       (my_create_window, my_create_tip_window): Make static.
+
+       * w32term.c (my_show_window, my_set_window_pos, my_set_focus)
+       (my_set_foreground_window, my_destroy_window): Make static.
+
+2005-07-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge gnulib getopt implementation into Emacs.
+
+       * s/cygwin.h (C_SWITCH_SYSTEM): Remove, since gettext.h is
+       now part of lib-src.
+
+2005-07-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (Fdefvar): Allow (defvar enable-multibyte-characters).
+
+2005-07-25  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (w32_menu_display_help): Suppress tooltip when
+       navigating menus with the keyboard.
+
+2005-07-23  Richard M. Stallman  <rms@gnu.org>
+
+       * insdel.c (syms_of_insdel): staticpro combine_after_change_buffer.
+
+       * bytecode.c (MAYBE_GC): Test gc_cons_threshold and
+       gc_relative_threshold, one by one.
+
+       * keyboard.c (read_char): Test gc_cons_threshold.
+       (syms_of_keyboard): staticpro Qecho_area_clear_hook.
+
+       * eval.c (Feval, Ffuncall): Test gc_cons_threshold and
+       gc_relative_threshold, one by one.
+
+       * alloc.c (gc_cons_threshold): Not static.
+       (gc_cons_combined_threshold): Var deleted.
+       (gc_relative_threshold): New variable.
+       (Fgarbage_collect, init_alloc_once): Compute gc_relative_threshold
+       instead of gc_cons_combined_threshold.
+
+       * lisp.h (gc_cons_threshold, gc_relative_threshold): Declare.
+       (gc_cons_combined_threshold): Declaration deleted.
+
+2005-07-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c: Don't include stdlib.h or string.h.
+       (Fdo_applescript, Fmac_file_name_to_posix)
+       (Fmac_file_name_to_posix): Doc fixes.
+       [TARGET_API_MAC_CARBON] (Fmac_get_preference)
+       (Fmac_code_convert_string): Likewise.
+       [MAC_OSX] (init_mac_osx_environment): Fall back on terminal mode
+       if the executable is not contained in a bundle.
+
+       * macfns.c: Don't include stdlib.h or string.h.  Include atimer.h.
+       (gray_width, gray_height): Remove defines.
+       (gray_bits, gray_bitmap_width, gray_bitmap_height)
+       (gray_bitmap_bits): Remove variables.
+       (lispy_function_keys): Remove extern.
+       (free_frame_menubar): Add extern.
+       (x_window_to_frame): Remove function.
+       (unwind_create_tip_frame): Add declaration.
+       (x_set_name_internal): New function.
+       (x_set_name, x_set_title): Use it.
+       (Fx_create_frame, Fx_display_grayscale_p, Fx_display_pixel_width)
+       (Fx_display_pixel_height, Fx_display_planes)
+       (Fx_display_color_cells, Fx_server_max_request_size)
+       (Fx_server_vendor, Fx_server_version, Fx_display_screens)
+       (Fx_display_mm_height, Fx_display_mm_width)
+       (Fx_display_backing_store, Fx_display_visual_class)
+       (Fx_display_save_under, Fx_synchronize, Fx_show_tip): Doc fixes.
+
+       * macmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes.
+
+       * macselect.c (Fx_own_selection_internal): Follow error conventions.
+       (Fx_get_selection_internal, Fx_selection_owner_p)
+       (Fx_selection_exists_p): Doc fixes.
+       (syms_of_macselect) <selection-converter-alist>: Likewise.
+
+2005-07-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
+
+       * ccl.c (Fregister_ccl_program): Fix typos in docstring.
+       (Fccl_execute_on_string): Likewise; add usage info.
+
+       * composite.c (Fcompose_region_internal)
+       (Fcompose_string_internal):
+       Improve argument/docstring consistency.
+
+       * minibuf.c (Fminibuffer_prompt_end, Feval_minibuffer):
+       Fix typos in docstrings.
+
+       * textprop.c (Fnext_char_property_change)
+       (Fprevious_char_property_change): Doc fixes.
+
+       * window.c (Fset_window_margins, Fset_window_fringes):
+       Improve argument/docstring consistency.
+
+       * xfaces.c (Finternal_lisp_face_p): Doc fix.
+
+2005-07-21  Andreas Schwab  <schwab@suse.de>
+
+       * eval.c (restore_stack_limits): Return a value.
+
+2005-07-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * eval.c (Fdefvar): Doc fix.
+
+2005-07-20  Kim F. Storm  <storm@cua.dk>
+
+       * fileio.c (Fdo_auto_save, do_auto_save_unwind):
+       Use make_save_value to unwind protect stream.
+
+       * lread.c (Fload, load_unwind):
+       Use make_save_value to unwind protect stream.
+
+2005-07-19  Juanma Barranquero  <lekktu@gmail.com>
+
+       * eval.c (Fprog2, Fcalled_interactively_p),
+       (syms_of_eval) <debug-on-quit>: Doc fixes.
+       (syms_of_eval) <max-specpdl-size>:
+       (Finteractive_p): Fix typos in docstrings.
+
+2005-07-19  Kim F. Storm  <storm@cua.dk>
+
+       * w32fns.c (Vx_hand_shape): Variable removed.
+       (syms_of_w32fns): Intern and staticpro Qw32_charset_default.
+
+2005-07-19  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (Fstring_as_multibyte): Escape backslashes in the docstring.
+
+2005-07-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * buffer.h (Fgenerate_new_buffer_name): Declare (for use in coding.c).
+
+2005-07-18  Kim F. Storm  <storm@cua.dk>
+
+       * frame.h (struct frame): New member already_hscrolled_p.
+
+       * xdisp.c (redisplay_internal): Only try to hscroll each frame once
+       to avoid redisplay looping hscrolling back and forth ad infinitum.
+
+2005-07-18  Juri Linkov  <juri@jurta.org>
+
+       * buffer.c (scroll-up-aggressively, scroll-down-aggressively):
+       * keymap.c (Fminor_mode_key_binding):
+       * macterm.c (mac-emulate-three-button-mouse):
+       Delete duplicate duplicate words.
+
+2005-07-18  Ken Raeburn  <raeburn@gnu.org>
+
+       * minibuf.c (Ftest_completion): Fix odd syntax in test.
+
+2005-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (x_set_cursor_color): Use XSetBackground and XSetForeground.
+
+       * macgui.h (struct _XGC): New struct.
+       (GC): Use it.
+       (GCForeground, GCBackground, GCFont): Use X11 mask values.
+       (XCreateGC, XParseGeometry): Move externs to macterm.h.
+
+       * macterm.c (x_bitmap_icon, x_make_frame_visible): Remove declarations.
+       (XSetFont): Add declaration.
+       (mac_set_forecolor, mac_set_backcolor, mac_set_colors):
+       Remove functions.
+       (GC_FORE_COLOR, GC_BACK_COLOR, GC_FONT, MAC_WINDOW_NORMAL_GC):
+       New defines.
+       (XDrawLine, mac_draw_line_to_pixmap, XClearWindow)
+       (mac_draw_bitmap, XCreatePixmapFromBitmapData, XFillRectangle)
+       (mac_draw_rectangle, mac_draw_string_common, mac_scroll_area):
+       Use them.
+       (mac_erase_rectangle): New function.
+       (XClearArea, x_draw_fringe_bitmap, x_clear_glyph_string_rect)
+       (x_draw_stretch_glyph_string): Use it.
+       (XChangeGC, XCreateGC, XGetGCValues, XSetForeground)
+       (XSetBackground, XSetFont): Adjust for new GC implementation.
+       (x_draw_fringe_bitmap, x_draw_box_rect): Use GC to set colors.
+       (XTset_vertical_scroll_bar): Clear area under scroll bar.
+
+       * macterm.h (struct mac_display_info): Change types of
+       scratch_cursor_gc black_relief.gc, and white_relief.gc to GC.
+       (XCreateGC, XParseGeometry): Move externs from macgui.h.
+
+       * xfaces.c [MAC_OS] (XCreateGC): Remove extern.
+
+2005-07-16  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (Fmake_overlay): Doc fix.
+
+2005-07-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (syms_of_ntproc): staticpro Qhigh, Qlow,
+       Vw32_valid_locale_ids, and Vw32_valid_codepages.
+
+2005-07-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c [TARGET_API_MAC_CARBON] (Fmac_code_convert_string):
+       Use Fstring_as_unibyte instead of string_make_unibyte.
+
+2005-07-15  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (select_frame_for_redisplay): Use find_symbol_value.
+
+2005-07-15  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c: Fix redisplay loop in last change.
+       (IT_POS_VALID_AFTER_MOVE_P): New macro.
+       (move_it_vertically_backward, move_it_by_lines): Use it.
+
+2005-07-14  Jason Rumney  <jasonr@gnu.org>
+
+       * w32.c (init_environment): Default HOME directory to user's
+       appdata directory if possible.
+
+2005-07-14  Kim F. Storm  <storm@cua.dk>
+
+       * .gdbinit (pitx): Fix output format.  Print string charpos.
+
+       * lread.c (syms_of_lread): Initialize seen_list.
+
+       * search.c (syms_of_search): Staticpro searchbuf.whitespace_regexp.
+
+       * syntax.c (syms_of_syntax): Staticpro lisp objects in gl_state.
+       Staticpro re_match_object.
+
+2005-07-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macselect.c (get_scrap_target_type_list): Avoid NULL pointer
+       dereference.
+
+       * macterm.c (mac_window_to_frame): Remove duplicate define.
+
+2005-07-14  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (code_convert_region_unwind): ARG is changed to a cons.
+       (code_convert_region): Adjust for the above change.
+       (set_conversion_work_buffer): If the work buffer is already in
+       use, generate a new buffer and return it.  Otherwise return Qnil.
+       (run_pre_post_conversion_on_str): Adjust for the above change.
+       (run_pre_write_conversin_on_c_str): Likewise.
+
+2005-07-13  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (start_display): Don't reseat to next visible line start
+       if current start position is in a string or image.
+       (move_it_vertically_backward): Be sure to move out of strings and
+       images when moving it2 forward.
+       (move_it_by_lines): When moving forward, move to next buffer
+       position if we end up in a string or image.  When moving backward,
+       count rows moved over when moving to start of current row in case
+       row starts in middle of a string or image.  Also move further
+       backward if we end up in a string or image.
+       (try_cursor_movement): If overlay string spans multiple lines,
+       move backward to set cursor on start of an overlay string.
+       (cursor_row_p): Row is ok if cursor is at newline from string, but
+       string starts on this line (so we always position cursor at start
+       of string).
+
+       * indent.c (Fvertical_motion): If start position is on an image,
+       don't move back if we move too far (that's almost certain to happen).
+
+       * xdisp.c (cursor_row_fully_visible_p): Allow partially visible
+       row in minibuffer windows.
+       (try_window): Don't check margins in minibuffer windows.
+
+2005-07-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c: Don't include stdlib.h or composite.h.
+       (x_use_underline_position_properties, last_mouse_press_frame)
+       (x_noop_count, Qvendor_specific_keysyms): Remove unused variables.
+       (syms_of_macterm, mac_initialize): Don't initialize them.
+       (waiting_for_input, initial_argv, initial_argc)
+       (Vcommand_line_args, Vx_no_window_manager, errno, window_scroll)
+       (set_frame_menubar, path_from_vol_dir_name): Remove externs.
+       (extra_keyboard_modifiers): Fix type in extern.
+       (x_window_to_frame, x_window_to_scroll_bar): Remove declarations.
+       (x_scroll_bar_report_motion): Add argument types to declaration.
+       (mac_compute_glyph_string_overhangs): Add declaration.
+       (disable_mouse_highlight): Remove unused variable.
+       [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click)
+       (x_scroll_bar_handle_press, x_scroll_bar_handle_release)
+       (x_scroll_bar_handle_drag): Remove argument `timestamp'.
+       All callers changed.
+       [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click): Don't set
+       timestamp.
+       [USE_CARBON_EVENTS] (mac_handle_mouse_event): Likewise.
+       (x_scroll_bar_create, XTset_vertical_scroll_bar): Show scroll bar
+       only when its width is less than the height.
+       (XTredeem_scroll_bar): Sync with xterm.c.
+       (font_name_table, font_name_table_size, font_name_count):
+       Make static.
+       (drag_and_drop_file_list): Remove variable.  Previous use is now
+       local to function.
+       (do_ae_open_documents): Move DRAG_N_DROP event construction part
+       from XTread_socket.
+       (XTread_socket): Consolidate setting of event timestamp.
+       Move DRAG_N_DROP event construction part to do_ae_open_documents.
+       Support extra_keyboard_modifiers.
+
+       * xfaces.c (try_font_list) [MAC_OS]: Try font family name
+       beginning with that for ASCII.
+
+2005-07-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (gc_cons_combined_threshold, Vgc_cons_percentage): New vars.
+       (Fgarbage_collect, init_alloc_once): Set gc_cons_combined_threshold.
+       (syms_of_alloc): Declare gc-cons-percentage.
+
+       * eval.c (Feval, Ffuncall):
+       * keyboard.c (read_char):
+       * bytecode.c (MAYBE_GC): Use gc_cons_combined_threshold.
+
+       * lisp.h (gc_cons_combined_threshold): Declare.
+
+2005-07-12  Kim F. Storm  <storm@cua.dk>
+
+       * coding.c (Qprocess_argument):
+       * coding.h (Qprocess_argument): Remove unused var.
+
+       * xselect.c (intern): Remove dup. intern and staticpro for QTIMESTAMP.
+
+2005-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c [!TARGET_API_MAC_CARBON]: Include charset.h, coding.h, and
+       Endian.h.
+       [!MAC_OSX] (fchmod, fchown): New functions.
+       (mac_get_code_from_arg): Don't accept Lisp integer as argument.
+       Use SBYTES and EndianU32_BtoN.
+       (mac_get_object_from_code): Return 4 byte string even if argument
+       is 0.  Use make_unibyte_string and EndianU32_NtoB.
+       (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator)
+       (Fmac_set_file_type): Fix documents and argument declarations.
+       Don't specify kFSCatInfoNodeFlags.  Support Mac OS Classic.
+
+2005-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (Frecenter): Yet another int/Lisp_Object mixup (YAILOM).
+
+2005-07-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfaces.c (x_update_menu_appearance): Use fontSet resource for
+       Lucid if X_I18N, font otherwise.
+
+2005-07-10  Steven Tamm  <steventamm@mac.com>
+
+       * mac.c (Fmac_get_file_type, Fmac_get_file_creator): Add.
+       (Fmac_set_file_type, Fmac_set_file_creator): Add.
+       (mac_get_object_from_code, mac_get_code_from_arg): Add.
+
+2005-07-10  Richard M. Stallman  <rms@gnu.org>
+
+       * lread.c (Qeval_buffer_list, Veval_buffer_list): New vars.
+       (syms_of_lread): Set up eval-buffer-list.
+       (Feval_buffer, Feval_region): Bind eval-buffer-list.
+
+2005-07-08  Richard M. Stallman  <rms@gnu.org>
+
+       * eval.c (Fdefvar): Allow defvaring a constant to itself quoted.
+
+2005-07-08  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (menu_bar_items): Don't GCPRO menu_bar_items_vector here.
+       (syms_of_keyboard): Initialize and staticpro menu_bar_items_vector.
+
+2005-07-07  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Frecenter): Fix last change (set iarg before use).
+
+2005-07-06  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Frecenter): When arg is inside the scroll margin,
+       move it out of the margin.
+
+2005-07-06  Jason Rumney  <jasonr@gnu.org>
+
+       * w32console.c (initialize_w32_display): Detect when the console
+       dimensions are insane, and default to 80x25 instead.
+       (w32_use_full_screen_buffer): Default to nil.
+
+2005-07-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_draw_vertical_window_border): Use foreground of
+       VERTICAL_BORDER_FACE_ID for vertical border line.
+       (mac_encode_char): Call check_ccl_update in advance.
+       (mac_to_x_fontname, x_font_name_to_mac_font_name)
+       (init_font_name_table, mac_do_list_fonts, XLoadQueryFont):
+       Don't assume that font family length is less than 32.
+       (x_compute_min_glyph_bounds): Make static.
+       (x_load_font): Never set fonts_changed_p to zero.
+
+2005-07-04  Lute Kamstra  <lute@gnu.org>
+
+       * Update FSF's address in GPL notices.
+
+2005-07-03  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (try_window): Fix previous change in how it handles
+       a partially-visible line or one only partly past the margin.
+
+       * window.c (window_scroll_pixel_based): Take account
+       of this_scroll_margin when finding point when scrolling up.
+
+2005-06-29  Ralf Angeli  <angeli@iwi.uni-sb.de>
+
+       * window.c (window_scroll_pixel_based, window_scroll_line_based):
+       Handle `scroll-preserve-screen-position' non-nil, non-t specially.
+       (syms_of_window) <scroll-preserve-screen-position>: Doc fix.
+
+2005-07-02  Juri Linkov  <juri@jurta.org>
+
+       * w32term.c (w32_draw_vertical_window_border): Use foreground of
+       VERTICAL_BORDER_FACE_ID for vertical border line.
+
+2005-07-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * fileio.c (Fcopy_file): Rearrange the code that calls fchown and
+       fchmod so that chmod doesn't get called on MSDOS before the file
+       is closed.
+
+2005-07-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (cleartype_active): New flag for enabling sub-pixel
+       workaround.
+       (w32_initialize): Initialize it.
+       (w32_native_per_char_metric): Allow a couple of extra pixels when
+       Cleartype is active.
+
+       * w32term.c (w32_initialize): Move check for screen reader here
+       from syms_of_w32term.
+
+2005-06-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (handle_one_xevent): bzero compose_status when nbytes
+       is not zero.
+
+2005-07-01  Masatake YAMATO  <jet@gyve.org>
+
+       * emacs.c (main): Passing ADD_NO_RANDOMIZE to `personality'.
+
+2005-06-30  Juri Linkov  <juri@jurta.org>
+
+       * xdisp.c (x_draw_vertical_border): If left fringe is not present
+       decrease x coord of vertical border by 1 pixel to not occupy text
+       area of the right window.
+
+       * xterm.c (x_draw_vertical_window_border): Use foreground of
+       VERTICAL_BORDER_FACE_ID for vertical border line.
+
+       * term.c (turn_on_face): In standout mode apply specified
+       fg to bg, and specified bg to fg (this makes the logic of
+       inversion on terminal consistent with X).
+
+2005-06-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * eval.c (user_variable_p_eh): New function.
+       (Fuser_variable_p): Use it.  Clarify docstring.
+       Return t for aliases of user options, nil for alias loops.
+
+2005-06-27  Richard M. Stallman  <rms@gnu.org>
+
+       * eval.c (Fdefvar): Improve error message.
+
+2005-06-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last
+       change.
+
+2005-06-27  Juanma Barranquero  <lekktu@gmail.com>
+
+       * eval.c (Fdefvar): Don't try to set constant symbols.
+
+2005-06-25  Richard M. Stallman  <rms@gnu.org>
+
+       * macfns.c (Fx_show_tip): Pass new arg to try_window.
+
+       * w32fns.c (Fx_show_tip): Pass new arg to try_window.
+
+       * xfns.c (Fx_show_tip): Pass new arg to try_window.
+
+       * xdisp.c (try_window): New arg CHECK_MARGINS.  Calls changed.
+       (redisplay_window): Handle try_window reporting point in scroll margin.
+
+       * dispextern.h (try_window): Declare new arg.
+
+       * fileio.c (Fcopy_file): New arg PRESERVE_UID_GID.
+       Use fchmod to copy the file modes.
+       (Frename_file): Don't copy UID and GID here;
+       instead, specify t for PRESERVE_UID_GID when calling Fcopy_file.
+
+       * eval.c (call_debugger): Take full care of extending stack limits
+       to make space for the debugger, and restore the change afterward.
+       Bind debug-on-error to nil.
+       (restore_stack_limits): New subroutine.
+       (Fsignal): Extend specpdl bound along with eval depth bound,
+       for calling edebug.  Don't do either one, for calling debugger.
+       (find_handler_clause): Don't bind debug-on-error here.
+       Don't unbind anything either.
+       Temporarily advance max_specpdl_size for calling
+       internal_with_output_to_temp_buffer.
+       (grow_specpdl): Don't alter max_specpdl_size before signaling
+       an error.
+       (syms_of_eval) <max-specpdl-size>: Doc fix.
+
+       * lread.c (read1): 0.0e+NaN should make a "positive" NaN.
+
+2005-06-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * fileio.c (Frename_file): Undo last change: no need to ifdef away
+       chown on DOS_NT platforms.
+
+       * w32.c (sys_chown): New function.
+
+       * s/ms-w32.h (chown): New; define to sys_chown.
+
+2005-06-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * xdisp.c (syms_of_xdisp) <nobreak-char-display>: Doc fix.
+       (syms_of_xdisp) <void-text-area-pointer>: Doc fix.
+
+       * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows.
+
+2005-06-23  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (get_next_display_element): Finish reversing the tests of
+       Vnobreak_char_display.
+
+       * xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape.
+       All uses changed.
+       (Qnobreak_space): Rename from Qno_break_space.  All uses changed.
+       (syms_of_xdisp): Define nobreak-char-display and nobreak-space.
+
+       * fileio.c (Frename_file): Preserve owner and group, if possible,
+       when copying.
+
+2005-06-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * abbrev.c (Funexpand_abbrev):
+       * category.c (Fmake_category_set):
+       * dispnew.c (Fsleep_for, Fsit_for):
+       * editfns.c (Fsubst_char_in_region):
+       * eval.c (Fdefvar, Fdefconst, Feval, Ffuncall):
+       * frame.c (make_frame_without_minibuffer):
+       * lread.c (read_vector):
+       * macfns.c (check_x_frame):
+       * process.c (Fstop_process, Fcontinue_process):
+       * search.c (Freplace_match):
+       * syntax.c (Fstring_to_syntax):
+       * w32fns.c (check_x_frame, check_x_display_info):
+       * xfaces.c (x_supports_face_attributes_p):
+       * xselect.c (Fx_own_selection_internal): Follow error conventions.
+
+       * image.c (fn_png_init_io): Don't define it.
+       (init_png_functions) [HAVE_NTGUI]: Don't initialize fn_png_init_io.
+       (png_read_from_file): New function, based on png_read_from_memory.
+       (png_load): Use it, instead of fn_png_init_io.
+
+2005-06-23  Kim F. Storm  <storm@cua.dk>
+
+       * search.c (Fmatch_data): Remove evaporate option.
+       (Fset_match_data): Do not mention evaporate option in doc string.
+       Add commentary explaining evaporate arg (for internal use only).
+       (unwind_set_match_data): Add comment on evaporate use.
+
+2005-06-22  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (Qvertical_border): Rename from `Qvertical_divider'.
+       (realize_basic_faces, syms_of_xfaces): Update references to it.
+       * dispextern.h (enum face_id): Rename `VERTICAL_DIVIDER_FACE_ID'
+       to `VERTICAL_BORDER_FACE_ID'.
+       * dispnew.c (build_frame_matrix_from_leaf_window): Update references.
+
+2005-06-21  Juri Linkov  <juri@jurta.org>
+
+       * dispextern.h: Add extern Qframe_set_background_mode.
+
+       * xfaces.c: Rename obsolete function Qframe_update_face_colors to
+       Qframe_set_background_mode.
+
+       * frame.c (Fmodify_frame_parameters):
+       Call frame-set-background-mode after changing the background color
+       on non-window non-dos branch.
+
+2005-06-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * fns.c (Fchar_table_range):
+       * process.c (Fmake_network_process): Fix spellings.
+
+2005-06-20  Kim F. Storm  <storm@cua.dk>
+
+       * fns.c (Fsort): Doc fix.
+
+2005-06-20  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (Qvertical_divider): New variable.
+       (realize_basic_faces): Realize its face.
+       (syms_of_xfaces): Initialize it.
+
+       * dispextern.h (enum face_id): Add `VERTICAL_DIVIDER_FACE_ID'.
+
+       * dispnew.c (build_frame_matrix_from_leaf_window): Display vertical
+       window-separator on ttys using `vertical-divider' face by default.
+
+2005-06-17  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (get_next_display_element):
+       Reverse test of Vshow_nonbreak_escape.
+
+       * term.c (produce_special_glyphs): Use spec_glyph_lookup_face.
+       (Ftty_no_underline): New function.
+       (syms_of_term): defsubr it.
+
+       * keyboard.c (read_char): Call restore_getcjmp after jump occurs.
+
+       * dispnew.c (spec_glyph_lookup_face): New function.
+       (build_frame_matrix_from_leaf_window): Use it.
+
+       * dispextern.h (spec_glyph_lookup_face): Add declaration.
+
+       * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
+
+2005-06-12  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (read_char): After catching a longjmp,
+       call restore_getcjmp.
+
+2005-06-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * xselect.c (lisp_data_to_selection_data): Fix spelling.
+
+2005-06-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_compute_glyph_string_overhangs): Don't set
+       overhangs unless the given glyph type is noncomposite CHAR_GLYPH.
+       [USE_CARBON_EVENTS] (mac_convert_event_ref): Convert dead key down
+       events.
+       (XTread_socket): Don't pass keyboard events with the option
+       modifier to the system when Vmac_command_key_is_meta is nil or
+       Vmac_option_modifier is non-nil.
+       [USE_CARBON_EVENTS] (read_socket_inev): New variable.
+       [USE_CARBON_EVENTS] (init_command_handler): Fix argument.
+       [USE_CARBON_EVENTS] (mac_handle_mouse_event): New Carbon event
+       handler function.
+       (install_window_handler) [USE_CARBON_EVENTS]: Install it.
+       (XTread_socket) [USE_CARBON_EVENTS]: Move mouse wheel event
+       handler part to mac_handle_mouse_event.
+
+2005-06-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * eval.c (Fdefvaralias): Rename arguments SYMBOL and ALIASED to
+       NEW-ALIAS and BASE-VARIABLE, respectively.
+
+2005-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup.
+       (get_phys_cursor_geometry, format_mode_line_unwind_data)
+       (get_line_height_property, x_produce_glyphs): Remove unused vars.
+
+       * coding.c (run_pre_post_conversion_on_str): Remove unused var `buf'.
+
+2005-06-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (x_use_underline_position_properties): New variable.
+       (x_draw_glyph_string): Remind in a comment to change doc string of
+       x-use-underline-position-properties if/when underline positioning
+       is implemented.
+       (syms_of_w32term): DEFVAR_BOOL x-use-underline-position-properties,
+       and initialize it to nil.
+
+2005-06-12  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (NEWOPENFILENAME): New struct.
+       (Fx_file_dialog): Use it to trick the system into giving us up to
+       date dialogs on systems that are documented to support it.
+       Do not set OFN_FILEMUSTEXIST flag if looking for a directory.
+
+2005-06-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32_abort): Use the MB_YESNO dialog instead of
+       MB_ABORTRETRYIGNORE.  Never return, even if DebugBreak does.
+
+2005-06-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * image.c (x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
+       to CreateDIBSection to avoid a compiler warning.
+       (pbm_load): Cast 3rd arg to IMAGE_BACKGROUND to avoid a compiler
+       warning.
+       (png_load): Cast return values of fn_png_create_read_struct and
+       fn_png_create_info_struct, to avoid compiler warnings on W32.
+       Cast 3rd arg to IMAGE_BACKGROUND and image_background_transparent
+       to avoid compiler warnings.
+       (jpeg_load): Cast return value of fn_jpeg_std_error to avoid a
+       compiler warning on W32.  Cast 3rd arg to IMAGE_BACKGROUND to
+       avoid a compiler warning.
+       (tiff_load): Cast return values of fn_TIFFOpen and
+       fn_TIFFClientOpen to avoid compiler warning on W32.  Cast 3rd arg
+       to IMAGE_BACKGROUND to avoid a compiler warning.
+       (gif_load): Cast return values of fn_DGifOpenFileName and
+       fn_DGifOpen to avoid compiler warnings on W32.  Cast 3rd arg to
+       IMAGE_BACKGROUND to avoid a compiler warning.
+       (DrawText) [HAVE_NTGUI || MAC_OS]: If already defined, undef
+       before redefining.
+
+       * w32bdf.c (create_offscreen_bitmap): Cast `bitsp' to `void **' in
+       the call to CreateDIBSection, to avoid a compiler warning.
+
+2005-06-11  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (Fx_file_dialog): Unblock input before falling back to
+       minibuffer.
+       * macfns.c (Fx_file_dialog): Likewise.
+
+2005-06-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in ($(TEMACS)): Depend on addsection.exe.
+
+2005-06-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * process.c (syms_of_process) [ADAPTIVE_READ_BUFFERING]:
+       * w32fns.c (syms_of_w32fns): Fix spellings.
+
+2005-06-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * unexw32.c (COPY_CHUNK, COPY_PROC_CHUNK): Add a new argument
+       `verbose'; print diagnostic messages only if it is non-zero.
+       All callers changed to pass a zero value unless DEBUG_DUMP is defined
+       in the environment.
+       (copy_executable_and_dump_data): Print section names with %.8s.
+
+2005-06-10  Masatake YAMATO  <jet@gyve.org>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face
+       when mouse_face is not given.
+
+2005-06-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * window.c (Fselect_window): Adapt call to Fselect_frame.
+
+       * lisp.h: Update EXFUN of Fselect_frame.
+
+       * keyboard.c (command_loop_1): Adapt call to Fselect_frame.
+
+       * frame.c (Fhandle_switch_frame, Fselect_frame): Delete unused arg
+       no_enter.
+       (Fset_mouse_position, Fset_mouse_pixel_position, Ficonify_frame):
+       Adapt to above change.
+
+2005-06-10  Juanma Barranquero  <lekktu@gmail.com>
+
+       * fns.c (Fmemq, Fmaphash): Doc fixes.
+
+2005-06-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * xfaces.c (Fdisplay_supports_face_attributes_p):
+       Fix typo in docstring.
+
+2005-06-08  Steven Tamm  <steventamm@mac.com>
+
+       * unexmacosx.c (copy_data_segment): Copy __la_sym_ptr2 section
+       used by gcc4 on intel mac.
+
+2005-06-09  Kim F. Storm  <storm@cua.dk>
+
+       * search.c (Fmatch_data): Add optional RESEAT arg.  Unchain markers
+       in REUSE list if non-nil; free them if equal to evaporate.
+       (Fset_match_data): Add optional RESEAT arg.  Unchain markers in LIST
+       if non-nil; free them if equal to evaporate.  Use XCAR/XCDR.
+       (restore_search_regs): Rename from restore_match_data.  Uses changed.
+       (unwind_set_match_data): New function.
+       (record_unwind_save_match_data): New function like save-match-data.
+
+       * lisp.h (Fmatch_data, Fset_match_data): Fix EXFUN.
+       (record_unwind_save_match_data): Add prototype.
+       (restore_search_regs): Rename from restore_match_data.
+
+       * composite.c (compose_chars_in_text):
+       * eval.c (do_autoload):
+       * macmenu.c (set_frame_menubar):
+       * process.c (read_process_output, exec_sentinel):
+       * xmenu.c (set_frame_menubar):
+       * xdisp.c (prepare_menu_bars, update_menu_bar, update_tool_bar):
+       * w32menu.c (set_frame_menubar):
+       Use record_unwind_save_match_data.
+
+2005-06-08  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (get_next_display_element): Alter previous change:
+       Distinguish Vshow_nonbreak_escape = t or not t.
+       For t, use escape_glyph once again, as before previous change.
+       Use space or hyphen for display, instead of the non-ASCII char.
+       (syms_of_xdisp) <show-nonbreak-escape>: Doc fix.
+
+       * process.c (Fstart_process): Don't touch command_channel_p slot.
+
+       * process.h (struct process): Delete command_channel_p.
+
+2005-06-07  Masatake YAMATO  <jet@gyve.org>
+
+       * xdisp.c (note_mode_line_or_margin_highlight):
+       Check the overlapping of re-rendering area to avoid flickering.
+       (note_mouse_highlight): Call clear_mouse_face if PART
+       is not ON_MODE_LINE nor ON_HEADER_LINE.
+
+2005-06-07  Kim F. Storm  <storm@cua.dk>
+
+       * process.c: Improve commentary for adaptive read buffering.
+
+2005-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xterm.c (x_create_toolkit_scroll_bar): Use XtNarrowScrollbars
+       if available.
+
+2005-06-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * macmenu.c (menu_quit_handler, install_menu_quit_handler):
+       New functions for popping down menus on C-g.
+       (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler.
+
+       * macterm.c: Make mac_quit_char_modifiers and mac_quit_char_keycode
+       non-static.
+
+       * config.in: Add HAVE_CANCELMENUTRACKING.
+
+2005-06-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros.
+
+       * unexw32.c (RVA_TO_PTR): Move here from w32heap.h.
+
+       * w32proc.c (RVA_TO_PTR): New macro.
+
+       * w32heap.c (RVA_TO_PTR): No need to #undef now.
+
+       * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/w32select.$(O)):
+       Depend on w32heap.h.
+
+2005-06-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keyboard.c (command_loop_1): Update Vthis_original_command.
+
+2005-06-06  Richard M. Stallman  <rms@gnu.org>
+
+       * xmenu.c (popup_get_selection): Undo previous change.
+
+2005-06-06  Juri Linkov  <juri@jurta.org>
+
+       * xdisp.c (Qno_break_space): New variable.
+       (syms_of_xdisp): Initialize it.
+       (get_next_display_element): Add no-break space and soft hypen
+       codes for iso8859-2 and iso8859-5.  Don't add `\' for them.
+       Use `no-break-space' face for no-break spaces.
+
+2005-06-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * window.c (delete_window): Handle the case where a h/vchild has
+       a h/vchild.
+
+2005-06-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (sys_setsockopt): Change arg 4 to `const void *'.  In the
+       call to pfn_setsockopt, cast optval to `const char *'.
+
+2005-06-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (gettimeofday): Use struct _timeb, not struct timeb.
+       (open_unc_volume): Cast return value of map_w32_filename, to avoid
+       compiler warnings.
+
+       * s/ms-w32.h (fileno): Don't define if already defined.
+
+       * emacs.c: Include w32heap.h, to avoid compiler warning about sbrk.
+
+       * makefile.w32-in (DOC): Define to point to the generated DOC-X.
+
+2005-06-04  Richard M. Stallman  <rms@gnu.org>
+
+       * xmenu.c (popup_get_selection): Click not in menu deactivates menu.
+
+2005-06-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * macmenu.c (cleanup_popup_menu): New function.
+       (Fx_popup_menu): Unwind protect cleanup_popup_menu in case
+       mac_menu_show Quit:s.
+       (mac_menu_show): Quit on cancel if not popped up on click (i.e.
+       a dialog).
+
+2005-06-04  Kim F. Storm  <storm@cua.dk>
+
+       * coding.c (decode_coding_string): Handle CODING_FINISH_INTERRUPT.
+
+       * callproc.c (Fcall_process): Don't use alloca to gradually
+       increase size of buf, as it effectively uses twice the necessary
+       space on the stack.  Instead, pre-allocate buf of full size, and
+       gradually increase the read size.
+
+       * bytecode.c (BYTE_CODE_QUIT): Check Vthrow_on_input.
+
+       * eval.c (unbind_to): Preserve value of Vquit_flag.
+
+       * xterm.c (handle_one_xevent): Also ignore mouse motion just
+       before a button release event.
+
+2005-06-03  Juanma Barranquero  <lekktu@gmail.com>
+
+       * xfaces.c (Finternal_lisp_face_equal_p): Really report
+       on faces in a frame, if the argument FRAME is non-nil.
+       Improve argument/docstring consistency.
+
+2005-06-02  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (MODE_LINE_NOPROP_LEN): New macro.
+       (x_consider_frame_title, Fformat_mode_line): Save offset into
+       mode_line_noprop_buf rather than pointer, in case buffer is relocated.
+
+2005-06-01  Kim F. Storm  <storm@cua.dk>
+
+       * fns.c (mapcar1): Maybe exit loop if original sequence was modified.
+
+2005-06-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_to_x_fontname, mac_do_list_fonts): Set XLFD
+       resolution fields for scalable fonts to 0.
+
+       * xfaces.c (build_scalable_font_name): Round pixel size to the
+       nearest integer.
+
+2005-06-01  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (display_mode_line): Support nested calls to redisplay
+       and format-mode-line.  Set mode_line_target to MODE_LINE_DISPLAY.
+
+2005-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (Finsert_file_contents):
+       * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup.
+
+2005-05-31  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (mode_line_noprop_buf, mode_line_noprop_buf_end)
+       (mode_line_noprop_ptr): Rename from frame_title_*.
+       (store_mode_line_noprop_char): Rename from store_frame_title_char.
+       (store_mode_line_noprop): Rename from store_frame_title.
+       (mode_line_target): New enum to specify current output target
+       for mode line formatting.
+       (display_mode_element): Test it rather than frame_title_ptr and
+       mode_line_string_list to determine where output should go.
+       (mode_line_proptrans_alist, mode_line_string_alist): Make static.
+       (Vmode_line_unwind_vector): New variable.
+       (format_mode_line_unwind_data, unwind_format_mode_line):
+       New functions for unwind protection in mode line formatting.
+       (x_consider_frame_title): Use them and new local var 'title_start'
+       to support nested calls to format-mode-line and redisplay.
+       Set mode_line_target to MODE_LINE_TITLE.
+       (Fformat_mode_line): Use them and new local var 'string_start' to
+       support nested calls to format-mode-line and redisplay.
+       Set mode_line_target to MODE_LINE_NOPROP or MODE_LINE_STRING.
+       Don't trim trailing dashes.
+       (decode_mode_spec): Don't make infinite number of trailing dashes
+       for MODE_LINE_NOPROP and MODE_LINE_STRING targets.
+       (syms_of_xdisp): Initialize and staticpro mode_line_string_face,
+       mode_line_string_face_prop, and Vmode_line_unwind_vector.
+       (init_xdisp): Initialize mode_line_noprop_ptr to start of _buf.
+       Initialize mode_line_target to MODE_LINE_DISPLAY.
+
+2005-05-29  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (Fbuffer_local_value): Call indirect_variable.
+
+2005-05-28  Masatake YAMATO  <jet@gyve.org>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Change the
+       pointer to a hand cursor when hoovering over a mouse-face.
+
+2005-05-27  Kenichi Handa  <handa@m17n.org>
+
+       * xterm.c (x_encode_char): Call check_ccl_update in advance.
+
+       * ccl.c: Now an element of Vccl_program_table is a vector of
+       length 4, not 3.
+       (ccl_get_compiled_code): New arg idx.  Caller changed.
+       Adjust for the change of Vccl_program_table.
+       (setup_ccl_program): Adjust for the change of Vccl_program_table.
+       (check_ccl_update): New function.
+       (Fregister_ccl_program): Use ASET to set an element of a vector.
+       Adjusted for the change of Vccl_program_table.
+
+       * ccl.h (struct ccl_program): New member idx.
+       (check_ccl_update): Extern it.
+
+2005-05-27  Juanma Barranquero  <lekktu@gmail.com>
+
+       * image.c (Vimage_library_alist): Move from image.el.
+       (syms_of_image): Defvar it.
+       (lookup_image_type): Use it.
+
+       * buffer.c (Fbuffer_local_value): Make argument name match its use
+       in docstring.
+
+2005-05-26  Juanma Barranquero  <lekktu@gmail.com>
+
+       * keyboard.c (Frecursive_edit): Fix typo in docstring.
+       (Fposn_at_x_y): Make argument name match its use in docstring.
+
+2005-05-26  Lute Kamstra  <lute@gnu.org>
+
+       * eval.c (Frun_hooks): Mention run-mode-hooks in docstring.
+
+2005-05-24  Masatake YAMATO  <jet@gyve.org>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Use b and e
+       as loop sentinels.
+
+2005-05-24  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xmenu.c (Fx_popup_dialog): Add a third boolean argument to
+       select frame title ("Question"/"Information").
+       (xdialog_show): Use it.
+
+       * macmenu.c (Fx_popup_dialog, mac_dialog_show): As for xmenu.c.
+
+       * w32menu.c (Fx_popup_dialog, w32_dialog_show): As for xmenu.c.
+
+       * fns.c (Fyes_or_no_p, Fy_or_n_p): Call Fx_popup_dialog with
+       a third argument (Qnil).
+
+       * lisp.h: x-popup-dialog can have three arguments.
+
+       * editfns.c (Fmessage_box): Use "Information" for frame title.
+
+2005-05-23  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * termcap.c [VMS]: Include <starlet.h>.
+
+2005-05-23  Masatake YAMATO  <jet@gyve.org>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Add code
+       for mouse-face.  Change the type of the first argument from `window'
+       to `Lisp_Object'.
+       (note_mouse_highlight): Call note_mode_line_or_margin_highlight with
+       window instead of w.
+
+2005-05-22  Andreas Schwab  <schwab@suse.de>
+
+       * process.c (send_process): Move misplaced volatile.
+
+2005-05-21  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (display_mode_element): If we're processing a list and
+       padding is specified, put it after the last element.
+
+2005-05-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * fileio.c (Fexpand_file_name) [DOS_NT]: Don't try to support
+       "superroot" on DOS_NT systems.
+
+2005-05-21  David Hunter  <hunterd42@comcast.net>  (tiny change)
+
+       * process.c (send_process): Restore the SIGPIPE handler if we
+       catch a SIGPIPE.
+
+2005-05-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * image.c (lookup_image, png_read_from_memory): Remove hacks (and
+       misleading comments).
+       (DEF_IMGLIB_FN): Use C calling convention for image libraries.
+
+2005-05-20  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
+
+       * window.c (Fwindow_inside_edges, Fwindow_inside_pixel_edges):
+       Correct the right value.
+
+2005-05-19  Nick Roberts  <nickrob@snap.net.nz>
+
+       * keyboard.c (syms_of_keyboard): Remove Lisp variables
+       post-command-idle-hook and post-command-idle-delay.
+       (command_loop_1): Don't try to execute post-command-idle-hook.
+
+2005-05-16  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (handle_display_prop): Handle empty replacement.
+       (handle_single_display_spec): Return -1 for empty replacement.
+
+       * keyboard.c (adjust_point_for_property): Skip empty overlay string.
+
+       * .gdbinit (pitx): Print more info about iterator.
+
+2005-05-16  Andreas Schwab  <schwab@suse.de>
+
+       * unexmacosx.c (unexec_realloc): Move declarations before statements.
+
+2005-05-14  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (message3): Call cancel_echoing.
+
+       * alloc.c (Fmemory_full_p): New function.
+       (syms_of_alloc): defsubr it.
+
+       * process.c (send_process_trap): Unblock SIGPIPE.
+       (send_process): Reset SIGPIPE handler before reporting error.
+
+2005-05-14  Nick Roberts  <nickrob@snap.net.nz>
+
+       * emacs.c (syms_of_emacs): Fix doc string for system-type.
+
+2005-05-13  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Ffind_file_name_handler): Handle lambda-exp as handler.
+       (Finsert_file_contents): If we read 0 bytes from a special file,
+       unlock the visited file if we locked it.
+       (Fmake_symbolic_link, Frecent_auto_save_p): Doc fixes.
+       (Ffile_exists_p, Ffile_symlink_p): Doc fixes.
+
+2005-05-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * emacs.c (main) [MAC_OS8]: Call init_atimer before mac_term_init.
+
+       * keyboard.c (readable_events) [USE_TOOLKIT_SCROLL_BARS]:
+       Regard toolkit scroll bar thumb drag events as squeezable and prevent
+       redisplay from being paused by them.
+
+       * mac.c [!MAC_OSX]: Include keyboard.h and syssignal.h.
+       [!MAC_OSX] (target_ticks): Remove variable.
+       [!MAC_OSX] (check_alarm, pause, index): Remove functions.
+       [!MAC_OSX && __MRC__] (sys_strftime): Likewise.
+       [!MAC_OSX] (select): If fd 0 is not set in rfds and some input
+       event occurs before timeout, behave as if the function were interrupted.
+       [!MAC_OSX] (sigblock, sigsetmask, alarm): Simulate SIGALRM
+       handling using Time Manager routines.
+       [!MAC_OSX] (mac_atimer_task, mac_atimer_qlink, signal_mask):
+       New variables.
+       [!MAC_OSX] (mac_atimer_handler, set_mac_atimer, remove_mac_atimer)
+       (setitimer): New functions.
+
+       * macfns.c, macmenu.c: Don't include signal.h.
+
+       * macterm.c [USE_TOOLKIT_SCROLL_BARS] (get_control_part_bounds):
+       Rename from get_control_part_bound.  All callers changed.
+       (x_scroll_bar_clear): New function.
+       (x_clear_frame): Use it.
+       (XTset_vertical_scroll_bar): Don't call Draw1Control.
+       (x_scroll_bar_handle_click): Change type of second argument from
+       int to ControlPartCode.
+       (check_alarm): Remove declaration.
+       (XTread_socket) [!TARGET_API_MAC_CARBON]: Don't call it.
+       (XTread_socket): Use ControlPartCode instead of SInt16.
+
+2005-05-13  Nozomu Ando  <nand@mac.com>
+
+       * unexmacosx.c: Include assert.h.
+       (MACOSX_MALLOC_MULT16): New define.
+       [MACOSX_MALLOC_MULT16] (ptr_in_unexec_regions): Determine whether
+       ptr is in unexec regions by checking it is multiple of 16.
+       (unexec_malloc_header_t): New typedef.
+       (unexec_malloc, unexec_realloc, unexec_free): Store and use
+       allocated size information in unexec_malloc_header.
+
+2005-05-10  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (noinclude): Add #undef.
+
+       * image.c, xfns.c, xmenu.c: Don't include signal.h.
+
+2005-05-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * fileio.c (Fexpand_file_name, Frename_file, Fadd_name_to_file)
+       (Fmake_symbolic_link, Faccess_file, Frecent_auto_save_p):
+       Doc fixes.
+
+       * dired.c (Ffile_name_completion): Make argument name
+       match its use in docstring.
+
+2005-05-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * eval.c (Fdefvaralias): Remove any pre-existing
+       variable-documentation property of the alias.
+
+2005-05-07  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * xfns.c (start_hourglass): Do nothing when running on a tty.
+
+2005-05-07  Juanma Barranquero  <lekktu@gmail.com>
+
+       * fns.c (Fchar_table_range): Fix typos in docstring.
+
+2005-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fns.c (Fchar_table_range): Yet Another Int/Lisp_Object Mixup.
+
+2005-05-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * lread.c (Flocate_file_internal): Doc fix.
+
+       * Makefile.in (lisp, shortlisp): Add jka-cmpr-hook.elc.
+
+2005-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macselect.c (x_own_selection): Accept Lisp string as result of
+       selection converter function.
+       (x_clear_frame_selections): Don't call x-lost-selection-functions
+       if Emacs is not owner of the selection.
+       (Vmac_services_selection): Put variable and initialization in
+       #ifdef MAC_OSX.
+       (syms_of_macselect) [MAC_OSX]: Set default value of
+       Vmac_services_selection to PRIMARY.
+
+       * macterm.c (toolkit_scroll_bar_interaction): Remove unused variable.
+       (mac_handle_tool_bar_click): Remove unused function and declaration.
+       [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback)
+       (install_scroll_bar_timer, set_scroll_bar_timer)
+       (control_part_code_to_scroll_bar_part, construct_scroll_bar_click)
+       (get_control_part_bound, x_scroll_bar_handle_press)
+       (x_scroll_bar_handle_release, x_scroll_bar_handle_drag)
+       (x_set_toolkit_scroll_bar_thumb): New functions and declarations.
+       [USE_TOOLKIT_SCROLL_BARS] (last_scroll_bar_part, scroll_bar_timer)
+       (scroll_bar_timer_event_posted_p): New variables.
+       [USE_TOOLKIT_SCROLL_BARS] (SCROLL_BAR_FIRST_DELAY)
+       (SCROLL_BAR_CONTINUOUS_DELAY): New macros.
+       (x_scroll_bar_create): Set control reference with NewControl.
+       (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]:
+       Initialize track_top and track_height to nil.
+       (x_scroll_bar_set_handle, x_scroll_bar_note_movement):
+       Put functions in #ifndef USE_TOOLKIT_SCROLL_BARS.
+       (XTset_vertical_scroll_bar): Don't make space between scroll bar
+       and associated window.
+       (XTset_vertical_scroll_bar) [MAC_OSX]: Get scroll bar area width
+       from window config.
+       (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
+       Set track_top and track_height to nil when scroll bar size is changed.
+       Recalculate them if they are nil.
+       (XTread_socket) [MAC_OSX]: Use control kind to determine if the
+       clicked control is a scroll bar.
+       (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Use toolkit scroll bar
+       event handler functions.  Don't add modifiers to scroll bar click
+       events.  Call scroll bar release handler when window is deactivated.
+       (mac_initialize): Remove unused code for X toolkit.
+       (syms_of_macterm) [!USE_TOOLKIT_SCROLL_BARS]:
+       Initialize Vx_toolkit_scroll_bars to nil.
+
+       * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
+       New members track_top and track_height.
+
+       * sysselect.h [DARWIN || MAC_OSX]: Temporarily undefine
+       init_process when including sys/select.h.
+
+2005-05-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * eval.c (Fdefvaralias): Doc fix.
+
+       * xmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes.
+
+2005-05-05  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (init_buffer_once): Set cursor_in_non_selected_windows
+       default value.
+       (syms_of_buffer): Add default-cursor-in-non-selected-windows.
+       Fix type of cursor-in-non-selected-windows.
+
+2005-05-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * mac.c: #undef init_process so not to conflict with system headers.
+
+2005-05-02  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (syms_of_buffer): Define cursor-in-non-selected-windows.
+
+       * buffer.h (struct buffer): Add cursor_in_non_selected_windows slot.
+
+       * xdisp.c (Vcursor_in_non_selected_windows)
+       (Qcursor_in_non_selected_windows): Vars deleted.
+       (syms_of_xdisp): Don't initialize them.
+       (get_window_cursor_type): Use cursor_in_non_selected_windows
+       buffer slot.
+
+2005-05-02  Kim F. Storm  <storm@cua.dk>
+
+       * macros.c (executing_kbd_macro_index): Rename from
+       executing_macro_index.  All uses changed.
+       (executing_kbd_macro_iterations): Rename from
+       executing_macro_iterations.  All uses changed.
+       (executing_kbd_macro): Rename from executing_macro.
+       All uses changed.
+       (syms_of_macros): Rename Lisp var executing-macro-index to
+       executing-kbd-macro-index.
+
+       * xdisp.c (move_it_in_display_line_to): Fix last change.
+
+2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * xmenu.c (Fx_popup_menu): Doc fix.
+
+       * charset.c (syms_of_charset): Delete defsubr for Schars_in_region.
+
+2005-05-02  Jason Rumney  <jasonr@gnu.org>
+
+       * emacs.c (USAGE3, USAGE4): Keep strings below 2048 bytes.
+
+2005-05-02  Nozomu Ando  <nand@mac.com>
+
+       * sysselect.h: Fix typo.
+
+2005-05-02  Nick Roberts  <nickrob@snap.net.nz>
+
+       * charset.c (Fchars_in_region): Remove as obsolete.
+
+2005-05-01  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (move_it_in_display_line_to): Stop if we move beyond
+       TO_CHARPOS.  This may happen if last glyphs was an image or stretch
+       glyph.
+
+2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * dispnew.c (sit_for): Vexecuting_macro -> Vexecuting_kbd_macro.
+
+2005-05-01  Richard M. Stallman  <rms@gnu.org>
+
+       * xmenu.c [not HAVE_X_TOOLKIT] (xmenu_show):
+       If user cancels the menu, quit unless FOR_CLICK.
+
+       * macros.c (Vexecuting_kbd_macro): Rename from Vexecuting_macro.
+       All uses changed.
+       (syms_of_macros): Define only executing-kbd-macro, not executing-macro.
+       * keyboard.c: Change Vexecuting_macro to Vexecuting_kbd_macro.
+       * macros.h (Vexecuting_kbd_macro): Declare instead of Vexecuting_macro.
+       * commands.h (Vexecuting_kbd_macro): Likewise.
+
+2005-05-01  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * sysdep.c (get_frame_size) [VMS]: Use a fresh i/o channel.
+
+2005-04-30  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Ffind_file_name_handler): Handle the `operations'
+       property of the file name handler.
+       (Qoperations): New variable.
+       (syms_of_fileio): Initialize and staticpro it.
+
+       * xdisp.c (set_message_1): Delete xassert.
+
+2005-04-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c: Don't include time.h.  Include sysselect.h after systime.h.
+
+       * macfns.c (Fx_server_version): Add BLOCK_INPUT around Gestalt.
+
+       * macgui.h [HAVE_CARBON && MAC_OSX]: Don't undefine/define mktime
+       before/after including Carbon.h if there is a working mktime.
+
+2005-04-28  Kim F. Storm  <storm@cua.dk>
+
+       * xfaces.c (resolve_face_name): Add arg SIGNAL_P.  Calls changed.
+       Fix cyclic alias check.  If alias loop is detected, signal
+       circular-list error if SIGNAL_P, and return Qdefault if !SIGNAL_P.
+
+2005-04-28  Lute Kamstra  <lute@gnu.org>
+
+       * eval.c (do_autoload): Record only autoloads in the autoload
+       property of symbols.
+
+2005-04-28  Nick Roberts  <nickrob@snap.net.nz>
+
+       * emacs.c (USAGE1): Add --basic-display and --quick options.
+
+2005-04-27  Kim F. Storm  <storm@cua.dk>
+
+       * data.c (syms_of_data) Staticpro Qcyclic_variable_indirection.
+
+2005-04-26  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Fsame_window_p, Fspecial_display_p): Doc fixes.
+       (syms_of_window): Doc fixes.
+
+       * indent.c (Fvertical_motion): Undo previous change.
+
+2005-04-26  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (char_table_range): New function.
+       (Fchar_table_range): Signal an error if characters in the range
+       have inconsistent values.  Don't check the parent.
+
+2005-04-25  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (fontset_set): Fix previous change.
+
+2005-04-24  Richard M. Stallman  <rms@gnu.org>
+
+       * indent.c (Fvertical_motion): Bind fontification-functions to nil.
+
+2005-04-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * regex.c (re_search_2, re_match_2_internal): Convert second arg
+       of RE_TRANSLATE to int, to shut up GCC warnings.
+
+       * fileio.c (Fcopy_file): Doc fix.
+       [MSDOS]: Fix call to emacs_open: buffer_file_type not defined and
+       not needed.
+
+2005-04-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * Makefile.in [HAVE_CARBON] (MAC_OBJ): Add macselect.o.
+       (SOME_MACHINE_OBJECTS): Likewise.
+       (mac.o): Depend on ccl.h.
+       (macselect.o): New target.
+
+       * emacs.c (main) [MAC_OS8 || MAC_OSX && HAVE_CARBON]:
+       Call syms_of_macselect.
+
+       * frame.c (Fdelete_frame) [MAC_OS]: Call x_clear_frame_selections.
+
+       * mac.c [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
+       (QCLIPBOARD): Remove variable.
+       (syms_of_mac): Don't initialize it.
+       (Fmac_paste_function, Fmac_cut_function, Fx_selection_exists_p):
+       Remove functions.
+       (syms_of_mac): Don't defsubr them.
+       [TARGET_API_MAC_CARBON] (Qmime_charset, QNFD, QNFKD, QNFC, QNFKC)
+       (QHFS_plus_D, QHFS_plus_C): New variables.
+       (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them.
+       [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp)
+       (cfstring_create_normalized): New functions.
+       [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Likewise.
+       (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it.
+
+       * macterm.c (handling_window_update, terminate_flag):
+       Remove variables.
+       (do_window_update, do_ae_quit_application, XTread_socket):
+       Don't use them.
+       (WNE_SLEEP_AT_SUSPEND, WNE_SLEEP_AT_RESUME): Don't define.
+       [USE_CARBON_EVENTS && MAC_OSX] (mac_handle_service_event)
+       (init_service_handler): Move to macselect.c.  Remove declarations.
+       [USE_CARBON_EVENTS && MAC_OSX] (init_service_handler): Add extern.
+       (Qapplication, Qabout): New variables.
+       (syms_of_mac): Initialize them.
+       [USE_CARBON_EVENTS && MAC_OSX] (Qpreferences, Qservices, Qpaste)
+       (Qperform): New variables.
+       (syms_of_mac) [USE_CARBON_EVENTS && MAC_OSX]: Initialize them.
+       (do_get_menus) [TARGET_API_MAC_CARBON]: Don't call AppendResMenu.
+       (do_menu_choice): Unhighlight menu bar also when menu_id is 0.
+       (mac_store_application_menu_event, init_menu_bar): New functions.
+       [USE_CARBON_EVENTS] (mac_handle_command_event)
+       (init_command_handler): New functions.
+       (mac_handle_window_event): Return noErr on window update event.
+       (do_ae_quit_application): Call mac_store_application_menu_event.
+       (mac_initialize) [USE_CARBON_EVENTS]: Call init_command_handler
+       and init_menu_bar.
+
+       * macterm.h (x_clear_frame_selections): Add extern.
+
+       * macselect.c: New file for selection processing on Mac OS.
+
+2005-04-23  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fcopy_file): New arg MUSTBENEW.
+       (Frename_file): Pass new arg to Fcopy_file.
+
+       * window.c (window_size_fixed): Variable deleted.
+       (syms_of_window): Initialize window-size-fixed to nil.
+       But don't DEFVAR window_size_fixed.
+
+2005-04-23  Andreas Schwab  <schwab@suse.de>
+
+       * m/macppc.h (LD_SWITCH_MACHINE) [LINUX]: Don't define.
+       (START_FILES, LIB_STANDARD) [LINUX && _ARCH_PPC64]: Override to
+       use lib64 instead of lib.
+       (_LP64) [_ARCH_PPC64]: Define if not defined.
+
+2005-04-23  David Hunter  <hunterd42@comcast.net>  (tiny change)
+
+       * s/ms-w32.h (HAVE_PWD_H): Define.
+
+2005-04-22  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (copy_sub_char_table): Explicitly copy the default value
+       of the sub-chartable.
+
+       * fontset.c (fontset_set): When a sub-chartable is created,
+       explicitly sets the defalt value.
+
+2005-04-22  Kim F. Storm  <storm@cua.dk>
+
+       * fns.c (Fplist_get): Replace by Fsafe_plist_get.
+       (Fsafe_plist_get): Rename to Fplist_get.
+       (Fsafe_get): Remove, as Fget now uses safe Fplist_get.
+       (defsubr): Remove defsubr for Fsafe_plist_get and Fsafe_get.
+
+       * lisp.h (Fsafe_plist_get, Fsafe_get): Remove EXFUN.
+
+       * xdisp.c (store_mode_line_string, produce_stretch_glyph)
+       (note_mode_line_or_margin_highlight, note_mouse_highlight):
+       Use Fplist_get instead of Fsafe_plist_get.
+
+       * xfaces.c (resolve_face_name): Use Fget instead of Fsafe_get.
+
+2005-04-21  Miles Bader  <miles@gnu.org>
+
+       * xdisp.c (dump_glyph_row): Don't display overlay_arrow_p field.
+
+2005-04-20  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * sysdep.c: Remove reference to defunct vms-pwd.h.
+       * dired.c: Likewise.  Also, for pwd.h, use HAVE_PWD_H, not !VMS.
+       * editfns.c, fileio.c, filelock.c, sysdep.c, xrdb.c: Likewise.
+
+       * config.in: Regenerate.
+
+2005-04-20  Kenichi Handa  <handa@m17n.org>
+
+       * lisp.h (CHAR_TABLE_DEFAULT_SLOT_ASCII): New macro.
+       (CHAR_TABLE_DEFAULT_SLOT_8_BIT_CONTROL): New macro.
+       (CHAR_TABLE_DEFAULT_SLOT_8_BIT_GRAPHIC): New macro.
+
+       * alloc.c (make_sub_char_table): Argument changed to initial
+       value of the slots.
+
+       * data.c (Faref): Handle special slots used as default values of
+       ascii, eight-bit-control, eight-bit-control.  Don't ignore a
+       default value set for a group of characters.
+       (Faset): Signal an error if IDXVAL is not a valid character code.
+       Make a sub-chartable with correct initial value.
+
+       * fns.c (Fset_char_table_range): Don't set slots used as default
+       values for ascii, eight-bit-control, eight-bit-graphic.
+       Don't call Faref with charset-id.
+       (Fset_char_table_default): Document how to treat normal character
+       argument.  Handle special slots used as default values of ascii,
+       eight-bit-control, eight-bit-control.  Make a sub chartable if
+       necessary.
+
+2005-04-20  Kenichi Handa  <handa@m17n.org>
+
+       * search.c (boyer_moore): Fix previous change.
+
+2005-04-19  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (setup_for_ellipsis): Reset saved_face_id to use default
+       face unless last visible char and first invisible char have the
+       same face.  Also use default face if saved_face_id is undefined.
+
+2005-04-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macgui.h (MacFontStruct): Remove member `fontname'.  Add member
+       `full_name'.
+       [TARGET_API_MAC_CARBON] (MacFontStruct): Use type int for
+       mac_scriptcode member.
+
+       * macterm.c (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): Remove variables.
+       (syms_of_mac): Don't initialize them.
+       (Vmac_charset_info_alist): New variable.
+       (syms_of_mac): Defvar it.
+       (create_text_encoding_info_alist): New function.
+       (decode_mac_font_name, mac_to_x_fontname)
+       (x_font_name_to_mac_font_name, init_font_name_table): Don't hard
+       code the correspondence among XLFD charsets, Mac script codes, and
+       Emacs coding systems.  Use Vmac_charset_info_alist and result of
+       create_text_encoding_info_alist instead.
+       (init_font_name_table) [TARGET_API_MAC_CARBON]: Use Font Manager
+       routines also on Mac OS Classic.
+       (init_font_name_table) [!TARGET_API_MAC_CARBON]:
+       Use add_font_name_table_entry.
+       (mac_do_list_fonts): Regard 0 in XLFD scaleble fields as
+       specified.  Derive unspecified scalable fields from specified one.
+       (x_list_fonts): Consider Valternate_fontname_alist.
+       (kDefaultFontSize): Change value from 9 to 12.
+       (XLoadQueryFont): Get decoded font family, font face, and charset
+       from x_font_name_to_mac_font_name.  Set full name of loaded font.
+       (mac_unload_font): Free `full_name' member.
+       (x_load_font): Don't try XLoadQueryFont if x_list_fonts returns
+       NULL.  Copy full_name member of struct MacFontStruct to that of
+       struct font_info.
+
+2005-04-19  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (handle_stop): Set saved_face_id to current face if
+       selective_display_ellipsis_p so ellipsis will be shown in same
+       face as preceding text.
+       (setup_for_ellipsis): Don't set saved_face_id here.
+       (next_element_from_display_vector): Default to saved_face_id.
+
+       * fns.c (Fsafe_get): New function.
+       (syms_of_fns): Defsubr it.
+
+       * lisp.h (Fsafe_get): EXFUN it.
+
+       * xfaces.c (resolve_face_name): Use Fsafe_get to avoid redisplay
+       loops in case of bad face property lists.  Limit number of face
+       alias lookups to 10 (in case of face alias loops).
+
+2005-04-18  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (struct glyph_row): New member overlay_arrow_bitmap.
+       It replaces the corresponding member from struct window, as a
+       window may now show multiple overlay arrows.
+       Remove member overlay_arrow_p, superseeded by overlay_arrow_bitmap.
+
+       * dispnew.c (row_equal_p, update_window_line, scrolling_window):
+       Compare overlay_arrow_bitmap than overlay_arrow_p members.
+
+       * fringe.c (draw_fringe_bitmap): Use overlay_arrow_bitmap from row
+       rather than from window.
+       (update_window_fringes): Compare overlay_arrow_bitmap rather than
+       overlay_arrow_p members.
+       (Ffringe_bitmaps_at_pos): Return fringe overlay_arrow_bitmap name
+       if not default.
+
+       * window.h (struct window): Remove member overlay_arrow_bitmap.
+
+       * window.c (make_window): Don't initialize overlay_arrow_bitmap.
+
+       * xdisp.c (overlay_arrow_string_or_property): Remove PBITMAP arg.
+       Calls changed.  Don't check for overlay-arrow-bitmap property here.
+       (overlay_arrow_at_row): Remove PBITMAP arg.  Instead, if left
+       fringe is present, return Lisp integer for bitmap (or -1 for default).
+       Fix value of overlay-arrow-bitmap property to be a symbol, use
+       lookup_fringe_bitmap to parse it.
+       (display_line): Change call to overlay_arrow_at_row.  Store integer
+       return value as overlay bitmap in row rather than window.
+       Only show overlay arrow if row displays text, or if no other overlay
+       arrow is seen in window (if overlay marker is at point-max).
+
+2005-04-18  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * xfaces.c (realize_x_face) [!HAVE_WINDOW_SYSTEM]: Return NULL.
+
+2005-04-18  Lute Kamstra  <lute@gnu.org>
+
+       * lread.c (Vloads_in_progress): Static.
+       * fns.c (Vloads_in_progress): Remove extern.
+       (load_in_progress): Add extern.
+       (Frequire): Use load_in_progress instead of Vloads_in_progress.
+
+2005-04-18  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * xmenu.c (Fx_popup_menu): Initialize error_name to NULL.
+
+2005-04-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (XTread_socket): Don't beep on keyboard input even if
+       no frame is visible.
+
+2005-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * term.c (struct keys): Add support for shifted keys.
+
+2005-04-16  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (with_echo_area_buffer): Delete WHICH < 0 case.
+       (set_message): Call with_echo_area_buffer with WHICH = 0.
+       (set_message_1): Erase the echo area buffer first thing.
+       (echo_area_display): Don't clear echo_message_buffer.
+
+2005-04-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * Makefile.in (mac.o): Depend on charset.h and coding.h.
+
+       * mac.c: Include charset.h and coding.h.
+       [TARGET_API_MAC_CARBON] (Qutf_8): Remove extern.
+       [TARGET_API_MAC_CARBON] (cfstring_create_with_string): New function.
+       [TARGET_API_MAC_CARBON] (Fmac_get_preference): Use it.
+
+       * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise.
+
+       * image.c [MAC_OSX] (image_load_quartz2d): Likewise.
+
+       * macterm.c (x_autoselect_window_p): Remove variable.
+       (last_window): New variable.
+       (XTreassert_line_highlight, x_change_line_highlight):
+       Remove declarations.
+       (mac_focus_changed, x_detect_focus_change): New functions and
+       declarations.
+       (XTextExtents16, front_emacs_window): Remove function.
+       (mac_focus_frame): New function.
+       (XTmouse_position, do_menu_choice, do_zoom_window, XTread_socket)
+       (mac_check_for_quit_char): Use it instead of front_emacs_window.
+       (x_scroll_bar_report_motion): Obtain window from control owner.
+       (x_make_frame_invisible): Set window manager size hint.
+       (do_mouse_moved): Remove function.
+       (XTread_socket): Move its contents here.  Generate select-window
+       event on mouse movement if needed.  Use x_detect_focus_change on
+       activate/deactivate events.  Don't deiconify frame or invalidate
+       window rectangle when dnd items are dropped.
+       Don't activate/deactivate root control.
+       (frame_highlight, frame_unhighlight): Activate/deactivate root
+       control here.
+       (syms_of_macterm): Delete DEFVAR_BOOL for x_autoselect_window_p.
+
+       * macterm.h (cfstring_create_with_string) [TARGET_API_MAC_CARBON]:
+       New extern.
+
+2005-04-15  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * Makefile.in: Define new macro TOOLTIP_SUPPORT.
+       (lisp): Use it.
+       (SOME_MACHINE_LISP): Add tooltip.
+
+2005-04-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c [!TARGET_API_MAC_CARBON]: Include MacLocales.h.
+       Don't include TextEncodingConverter.h.
+       (mac_system_script_code, Vmac_system_locale): New variables.
+       (syms_of_mac): Defvar them.
+       (mac_get_system_locale): New function.
+
+       * macfns.c (x_set_name, x_set_title) [!TARGET_API_MAC_CARBON]:
+       Use ENCODE_SYSTEM to encode title bar string.
+       (x_create_tip_frame): Apply 2005-03-18 change for xfns.c.
+       (Fx_file_dialog) [TARGET_API_MAC_CARBON && !MAC_OSX]:
+       Use CFStringGetSystemEncoding to get system default string encoding.
+
+       * macterm.c [!TARGET_API_MAC_CARBON]: Don't include
+       TextEncodingConverter.h.
+
+2005-04-13  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (syms_of_macterm): Remove redundant definition of
+       mac-pass-control-to-system.
+
+2005-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (Fset_window_configuration): Be careful when you choose
+       among several possible points for the new_current_buffer.
+
+2005-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * keyboard.c (poll_for_input) [SYNC_INPUT]: Don't call
+       poll_for_input_1.  Set interrupt_input_pending to 1 instead.
+       (Qlanguage_change) [MAC_OS]: New variable.
+       (syms_of_keyboard) [MAC_OS]: Intern and staticpro it.
+       (kbd_buffer_get_event) [MAC_OS]: Make event for LANGUAGE_CHANGE_EVENT.
+
+       * macterm.c (mac_keyboard_text_encoding)
+       (current_mac_keyboard_text_encoding): Remove variables.
+       (XTread_socket): Store language-change event if keyboard script change
+       is detected.  Don't convert input to `mac_keyboard_text_encoding'.
+       (syms_of_macterm): Delete DEFVAR_INT for mac-keyboard-text-encoding.
+
+       * termhooks.h (enum event_kind) [MAC_OS]: Add LANGUAGE_CHANGE_EVENT.
+
+2005-04-10  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs.c (standard_args): Rename --bare-bones to --quick.
+       Add -D aka --basic-display.
+
+       * buffer.c (Fmake_indirect_buffer): Clear out some local variables.
+
+2005-04-09  Richard M. Stallman  <rms@gnu.org>
+
+       * keymap.c (where_is_internal): Convert a string used as event type
+       into "(any string)".
+
+       * lread.c (Vloads_in_progress): Not static.
+       * fns.c (Vloads_in_progress): Add extern.
+       (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil.
+
+2005-04-09  Thien-Thi Nguyen  <ttn@surf.glug.org>
+
+       * dispnew.c (mirror_line_dance): Avoid crash if W2 is null.
+
+2005-04-09  Lute Kamstra  <lute@gnu.org>
+
+       * print.c (PRINTPREPARE): Check if the marker PRINTCHARFUN is
+       within the accessible part of the buffer.
+
+2005-04-09  Kim F. Storm  <storm@cua.dk>
+
+       * lread.c (readevalloop): Add args START and END as region in
+       current buffer to read.  Callers changed.
+       When specified, narrow to this region only when reading,
+       not during eval.  Track next point to read from during eval.
+       Also restore point to "real" buffer position before eval.
+       (Feval_region): Don't save excursion and restriction here, and
+       don't narrow to region.  Just pass region to readevalloop.
+       Note: Point is now preserved even when PRINTFLAG is nil.
+
+2005-04-08  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>".
+
+2005-04-06  Kim F. Storm  <storm@cua.dk>
+
+       * emacs.c (standard_args): Add -Q, --bare-bones, -bare-bones.
+
+2005-04-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (cfdate_to_lisp): Add `const' for variable `epoch_gdate'.
+       (Fmac_get_preference): Doc fix.
+
+       * macfns.c (Fx_create_frame, x_create_tip_frame):
+       Add "fontset-mac" to fallback font/fontsets.
+
+2005-04-04  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (Fgarbage_collect): Call CHECK_CONS_LIST before and after gc.
+
+       * eval.c (Ffuncall): Always call CHECK_CONS_LIST on entry.
+       Call it again after autoload.
+
+2005-04-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * alloc.c (allocate_string_data): Call BLOCK_INPUT before calling
+       mallopt.
+
+       * ralloc.c (r_alloc_init): Ditto.
+
+2005-04-01  Kenichi Handa  <handa@m17n.org>
+
+       * lisp.h (Vascii_upcase_table, Vascii_canon_table)
+       (Vascii_eqv_table): Extern them.
+
+       * casetab.c (set_case_table): If standard is nonzero, setup
+       Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table.
+
+       * search.c (looking_at_1): Use current_buffer->case_canon_table,
+       not DOWNCASE_TABLE.
+       (string_match_1): Likewise.
+       (fast_c_string_match_ignore_case): Use Vascii_canon_table, not
+       Vascii_downcase_table.
+       (fast_string_match_ignore_case): Likewise.
+       (search_buffer): Fix checking of boyer-moore usability.
+       (boyer_moore): Calculate translate_prev_byte1/2/3 in advance.
+       No need of tranlating characters in PAT.  Fix calculation of
+       simple_translate.
+
+2005-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xterm.c [HAVE_XAW3D]: Include ThreeD.h for XtNbeNiceToColormap.
+       (x_create_toolkit_scroll_bar): Test XtNbeNiceToColormap before using it.
+       Use XtNtopShadowPixel and XtNbottomShadowPixel.
+       (x_set_toolkit_scroll_bar_thumb): Remove ugly old hack that didn't
+       really work and that breaks with some versions of Xaw3d.
+
+2005-03-31  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (syms_of_coding): Fix previous change.
+
+2005-03-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (search_embedded_absfilename): Fix last change.
+
+2005-03-25  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (syms_of_coding): Suggest to use set-coding-category in
+       the docstring of coding-category-list.
+
+2005-03-31  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (Qmouse_fixup_help_message): New var.
+       (syms_of_keyboard): Intern and staticpro it.
+       (show_help_echo): Apply mouse-fixup-help-message to help string.
+
+2005-03-30  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (display_line): Allow multiple overlay arrows in window.
+
+2005-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (Fexpand_file_name): Use IS_DEVICE_SEP.
+       (file_name_absolute_p): New fun, extracted from Ffile_name_absolute_p.
+       (Ffile_name_absolute_p): Use it.
+       (search_embedded_absfilename): New fun, extracted from
+       Fsubstitute_in_file_name.  Use file_name_absolute_p.
+       Free the pw data after use.
+       (Fsubstitute_in_file_name): Use it.
+       After cutting a prefix, re-check file-name-handler.
+
+2005-03-26  Lennart Borgman  <lennart.borgman.073@student.lu.se>
+
+       * w32term.h (x_output): Add focus_state.
+
+       * w32term.c (x_focus_changed, w32_detect_focus_change): New functions.
+       (w32_read_socket) <WM_SETFOCUS>: Call w32_detect_focus_change.
+
+2005-03-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.c (Fminibuffer_complete_and_exit, Fself_insert_and_exit):
+       Use Fexit_minibuffer.
+       (Fexit_minibuffer): Mark it as no-return, deactivate the mark.
+
+2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * dired.c (Ffile_attributes): Add a missing gcpro.
+
+       * alloc.c (make_number): The arg can be bigger than `int'.
+       * lisp.h (make_number): Make prototype more precise.
+
+       * process.c, dired.c (Vfile_name_coding_system)
+       (Vdefault_file_name_coding_system):
+       * callproc.c (Vdoc_file_name, Vfile_name_coding_system)
+       (Vdefault_file_name_coding_system): Remove unused declarations.
+
+2005-03-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (create_and_show_popup_menu): Just remove menu and return
+       if it failed to pop up (Gnome "show pointer on ctrl" option makes
+       menus fail to pop up).
+
+2005-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (get_next_display_element): Also use `\ ' & `\-' for latin-9.
+       Just prepend a backslash without replacing the NBSP by an SPC.
+
+2005-03-22  Kim F. Storm  <storm@cua.dk>
+
+       * xfaces.c (lookup_derived_face): Add arg SIGNAL_P.
+       * dispextern.h (lookup_derived_face): Fix prototype.
+       * msdos.c (XMenuActivate): Fix call to lookup_derived_face.
+
+       * xdisp.c (handle_single_display_spec): Derive left-fringe and
+       right-fringe face from fringe face.
+
+       * fringe.c (draw_fringe_bitmap_1, Fset_fringe_bitmap_face):
+       Derive face from fringe face.
+
+2005-03-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xrdb.c (x_load_resources): Undo previous change (2005-03-18).
+
+2005-03-22  David Kastrup  <dak@gnu.org>
+
+       * textprop.c (Fnext_char_property_change)
+       (Fprevious_char_property_change): Allow marker as limit.
+       (Fnext_single_char_property_change)
+       (Fprevious_single_char_property_change): Check that limit is a
+       number in strings.
+       (Fnext_single_char_property_change): Coerce position to integer.
+       (Fprevious_single_char_property_change): Same here.
+
+2005-03-21  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * s/openbsd.h (LD_SWITCH_SYSTEM_tmp): Define if undefined.
+
+2005-03-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.c (Fignore_event): Remove.
+       (syms_of_frame): Don't defsubr it.
+
+       * keyboard.c (keys_of_keyboard): Just use `ignore' instead of the
+       redundant `ignore-event'.
+
+2005-03-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * unexec.c (write_segment, unexec): Move these functions to avoid
+       forward references (which cause errors with "gcc -gcoff").
+
+2005-03-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (x_create_tip_frame): Remove setting of Vx_resource_name so
+       that it doesn't become "tooltip".  The specbind is enough.
+
+       * xrdb.c (x_load_resources): Use different char *helv when I18N
+       is present.
+
+2005-03-17  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (syms_of_coding): Docstring of coding-category-list fixed.
+
+2005-03-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xfaces.c (x_update_menu_appearance) [HAVE_X_I18N]:
+       Use xic_create_fontsetname even for non-Motif menus.
+       Don't forget to free the fontsetname.
+
+       * xfns.c (xic_create_fontsetname): Add a final catch-all font pattern.
+
+2005-03-17  Richard M. Stallman  <rms@gnu.org>
+
+       * dispnew.c (mirror_line_dance): Set W2 according to FRAME_FROM.
+
+       * fileio.c (Fcopy_file, Frename_file, Fadd_name_to_file)
+       (Fmake_symbolic_link): Use G to read the new file name.
+
+       * callint.c (Finteractive): Document G option.
+       (Fcall_interactively): Implement G option.
+
+       * buffer.c (buffer_lisp_local_variables): New function,
+       broken out from Fbuffer_local_variables.
+       (clone_per_buffer_values): Use buffer_lisp_local_variables.
+
+2005-03-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xfns.c (xic_create_fontsetname): Add `motif' argument.
+       Always return a freshly allocated string.
+       (xic_create_xfontset): Adjust call.
+
+       * xfaces.c (x_update_menu_appearance) [USE_MOTIF]:
+       Use xic_create_fontsetname to create a fontset so utf-8 locales work.
+       (dump_realized_face): Fix warning.
+
+       * emacs.c (Fkill_emacs): YAILOM.
+
+       * frame.c (Fignore_event): Fix ancient obscure C-u handling bug.
+
+2005-03-17  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (HASHKEY_TERMINAL): Remove.
+       (HASHKEY_MAX_NID): New macro.
+       (xrm_q_get_resource_1): Rename from xrm_q_get_resource.  Add extra
+       argument.
+       (xrm_q_get_resource): Call xrm_q_get_resource_1 with extra argument.
+       (xrm_create_database, xrm_q_put_resource)
+       (xrm_merge_string_database, xrm_q_get_resource_1)
+       (xrm_q_get_resource): Change resource database representation so
+       that it may not use multiple hash tables for a single database.
+       [TARGET_API_MAC_CARBON] (xrm_cfproperty_list_to_value): YAILOM.
+
+2005-03-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xmenu.c (ENCODE_MENU_STRING) [HAVE_X_I18N]: Use ENCODE_SYSTEM.
+
+       * coding.h (ENCODE_SYSTEM, DECODE_SYSTEM) [!WINDOWSNT]: Use the
+       locale-coding-system, as was already done for WINDOWSNT.
+
+       * keyboard.c (read_char): Only do the 7-bit-meta -> 27-bit-meta
+       translation for chars in the 0-255 range.
+
+2005-03-16  Lute Kamstra  <lute@gnu.org>
+
+       * floatfns.c (Ffloor): Doc fix.
+
+2005-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c: Include macterm.h instead of directly including Carbon.h.
+       [TARGET_API_MAC_CARBON] (Qstring, Qnumber, Qboolean, Qdate, Qdata)
+       (Qarray, Qdictionary): New variables.
+       (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them.
+       [TARGET_API_MAC_CARBON] (Qutf_8): Add extern.
+       [TARGET_API_MAC_CARBON] (DECODE_UTF_8): New macro.
+       [TARGET_API_MAC_CARBON] (struct cfdict_context): New struct used
+       in callback for CFDictionaryApplyFunction.
+       [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp)
+       (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp)
+       (cfobject_desc_to_lisp, cfdictionary_add_to_list)
+       (cfdictionary_puthash, cfproperty_list_to_lisp): New functions.
+       [TARGET_API_MAC_CARBON] (Fmac_get_preference): New function.
+       (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it.
+       (P, LOOSE_BINDING, SINGLE_COMPONENT, HASHKEY_TERMINAL): New macro.
+       (skip_white_space, parse_comment, parse_include_file)
+       (parse_binding, parse_component, parse_resource_name, parse_value)
+       (parse_resource_line, xrm_create_database, xrm_q_put_resource)
+       (xrm_merge_string_database, xrm_q_get_resource, xrm_get_resource)
+       (xrm_cfproperty_list_to_value, xrm_get_preference_database):
+       New functions.
+
+       * macfns.c (mac_get_rdb_resource): Remove function.
+       (x_get_string_resource): Use xrm_get_resource.
+
+       * macgui.h (XrmDatabase): Typedef to Lisp_Object.
+
+       * macterm.c (x_list_fonts): FONT-LIST-CACHE is now cadr part of
+       name_list_element.
+       (mac_make_rdb): Create resource database from preferences and
+       argument string.
+       (mac_term_init): Save resource database to cddr part of
+       name_list_element.
+
+       * macterm.h (xrm_merge_string_database, xrm_get_resource)
+       (xrm_get_preference_database): Add externs.
+       [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp)
+       (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp)
+       (cfobject_desc_to_lisp, cfproperty_list_to_lisp): Likewise.
+
+       * process.c (init_process): Change `#ifdef DARWIN' to `#if
+       defined (DARWIN) || defined (MAC_OSX)'.
+
+       * s/darwin.h (DARWIN): Don't define.
+
+2005-03-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (Qhyper, Qsuper, Qmeta, Qalt, Qctrl, Qcontrol, Qshift):
+       Remove unused variables.
+       (syms_of_macfns): Don't initialize them.  Likewise for
+       Qface_set_after_frame_default.  Defvar and initialize
+       Vx_window_horizontal_drag_shape.
+       (x_set_mouse_color): Change mouse pointer shape.
+       (mac_window) [!MAC_OSX]: Create root control.
+       (Fx_create_frame): Remove initializations of mouse pointer shapes.
+       (hourglass_started): New function (from xfns.c).
+       (start_hourglass, cancel_hourglass): Put function body in #ifdef
+       MAC_OSX.
+       (show_hourglass) [TARGET_API_MAC_CARBON]: Create progress
+       indicator for each non-tooltip frame if needed, and show it.
+       (hide_hourglass) [TARGET_API_MAC_CARBON]: Hide progress indicators.
+
+       * macgui.h [!TARGET_API_MAC_CARBON]: Include Appearance.h and
+       Controls.h.  Use ThemeCursor instead of CursHandle.
+
+       * macterm.c (activate_scroll_bars, deactivate_scroll_bars):
+       Remove functions and declarations.
+       (mac_set_colors): Take argument for saving background color.
+       All callers changed.
+       (XDrawLine, XClearArea, mac_draw_bitmap, XFillRectangle)
+       (mac_draw_rectangle, mac_draw_string_common): Save and Restore
+       background color.
+       (x_update_end, mac_do_track_drag): Don't reset background color.
+       (mac_define_frame_cursor) [!TARGET_API_MAC_CARBON]:
+       Use SetThemeCursor.
+       (x_set_window_size) [TARGET_API_MAC_CARBON]: Move progress
+       indicator control to the upper-right corner of the window.
+       (arrow_cursor) [!TARGET_API_MAC_CARBON]: Remove variable.
+       (do_init_managers) [!TARGET_API_MAC_CARBON]: Don't initialize it.
+       (do_window_update): Update controls after updating content area.
+       (mac_handle_window_event): Remove unused extern.
+       (XTread_socket): Check both control handle and control part code
+       to determine whether a scroll bar is clicked.  Activate/deactivate
+       root control instead of contained scroll bar controls.
+       (make_mac_terminal_frame): Use ThemeCursor constants.
+
+       * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]:
+       New member hourglass_control.
+       (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): New defines.
+       (activate_scroll_bars, deactivate_scroll_bars): Remove declarations.
+
+2005-03-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (keycode_to_xkeysym_table): Change mapping so that it
+       coincides with that in Apple X11 except `clear', `enter' on
+       laptops, and fn + `enter' on laptops.
+
+2005-03-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xmenu.c (ENCODE_MENU_STRING): Explicitly use string_make_unibyte.
+       (list_of_panes, list_of_items, Fx_popup_menu): Use XCAR/XCDR.
+       (digest_single_submenu, xmenu_show): Use ENCODE_MENU_STRING.
+
+       * xfns.c (xic_defaut_fontset): New constant.
+       (xic_create_fontsetname): New function.
+       Extracted from create_frame_xic.  Try to generate a slightly
+       better fontset.
+       (xic_create_xfontset): Use it.
+       (create_frame_xic): Simplify.
+
+2005-03-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (Fmake_symbolic_link): Fix last change.
+
+2005-03-11  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Frename_file, Fadd_name_to_file)
+       (Fmake_symbolic_link): If NEWNAME or LINKNAME is a directory,
+       expand the basename of FILE relative to it.
+
+2005-03-11  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Finsert_file_contents): Call Fcheck_coding_system
+       before calling setup_coding_system so that autoloading of a coding
+       system work.
+
+2005-03-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (hourglass_started): New function.
+
+       * dispextern.h: Declare hourglass_started.
+
+       * keyboard.c (Fexecute_extended_command): Restart hourglass
+       after call to Fcompleting_read if already started.
+
+       * gtkutil.c (xg_update_scrollbar_pos): Call x_sync so that the
+       GTK main loop is entered in xterm.c, thus doing the redraw.
+
+2005-03-10  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (pos_visible_p): Fix X value in last line of buffer.
+
+2005-03-08  Kenichi Handa  <handa@m17n.org>
+
+       * frame.c (x_set_font): Call set_default_ascii_font if an
+       available font is found.
+
+       * fontset.c (set_default_ascii_font): New function.
+       (syms_of_fontset): Don't set FONTSET_ASCII (Vdefault_fontset) here.
+
+       * fontset.h (set_default_ascii_font): Extern it.
+
+2005-03-07  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (CLEAR_IMAGE_CACHE_COUNT): New const.
+       (clear_image_cache_count): New var.
+       (redisplay_internal): Don't clear face and image caches in the
+       middle of redisplay; do it afterwards.
+
+       * blockinput.h (TOTALLY_UNBLOCK_INPUT): Avoid dangling else.
+
+       * xdisp.c (notice_overwritten_cursor): Check that phys_cursor.vpos
+       is valid.  If not, clear phys_cursor_on_p and return.
+
+2005-03-07  Andreas Schwab  <schwab@suse.de>
+
+       * blockinput.h (UNBLOCK_INPUT_TO): Always call UNBLOCK_INPUT.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (Ftop_level): Let Fthrow deal with UNBLOCK_INPUT.
+
+       * eval.c (unwind_to_catch): Use UNBLOCK_INPUT_TO.
+       (Feval, Ffuncall): Use CHECK_CONS_LIST.
+
+       * lisp.h (CHECK_CONS_LIST): New macro (two definitions).
+
+       * blockinput.h (UNBLOCK_INPUT_TO): New macro.
+       (TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any.
+
+2005-03-05  Juri Linkov  <juri@jurta.org>
+
+       * emacs.c (USAGE1): Replace Info node name "command arguments"
+       with "emacs invocation".
+       (USAGE3): Fix usage of `--color=MODE' which actually doesn't
+       allow arguments `--color' and `MODE' to be separated by space.
+       Add --no-blinking-cursor, -nbc.
+       (standard_args): Add -nbc, --no-blinking-cursor.
+
+2005-03-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * s/vms.h: Define NO_HYPHENS_IN_FILENAMES.
+       * s/vms4-4.h, s/vms5-5.h: Undefine NO_HYPHENS_IN_FILENAMES.
+       * fileio.c (Fexpand_file_name) [VMS]:
+       Use NO_HYPHENS_IN_FILENAMES, not VMS4_4.
+       * doc.c (munge_doc_file_name) [VMS]: Likewise.
+       (Fsnarf_documentation): Call munge_doc_file_name.
+
+2005-03-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * s/vms.h (FILE_SYSTEM_CASE): New macro.
+       * fileio.c (Fexpand_file_name) [VMS]: Don't upcase the name
+       "manually"; this is now handled generally via FILE_SYSTEM_CASE.
+
+2005-03-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * emacs.c (main): Change `#ifdef HAVE_CARBON' to `#if
+       defined (MAC_OSX) && defined (HAVE_CARBON)'.
+
+       * image.c [!MAC_OSX && TARGET_API_MAC_CARBON]: Include QuickTime.h.
+
+       * mac.c [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
+       [!MAC_OSX] (select) [TARGET_API_MAC_CARBON]: Use ReceiveNextEvent.
+       (posix_pathname_to_fsspec, fsspec_to_posix_pathname): New functions.
+       (mac_clear_font_name_table): Move extern to macterm.h.
+
+       * macfns.c (install_window_handler): Move extern to macterm.h.
+       (Fx_file_dialog): Check STRINGP (default_filename) to see it is
+       valid.  Don't check !NILP (dir) because it is already checked with
+       CHECK_STRING.
+       (Fx_file_dialog) [!MAC_OSX]: Use FSSpec instead of FSRef for
+       specifying the default location and obtaining the selected filename.
+
+       * macgui.h [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
+
+       * macmenu.c [TARGET_API_MAC_CARBON]: Don't include headers that
+       are included via Carbon.h.
+
+       * macterm.c [TARGET_API_MAC_CARBON && !MAC_OSX]:
+       Define USE_CARBON_EVENTS to 1.
+       (qd) [__MRC__ && TARGET_API_MAC_CARBON]: Don't declare.
+       (x_free_frame_resources): Call remove_window_handler for
+       non-tooltip windows.
+       [TARGET_API_MAC_CARBON]: Don't include headers that are included
+       via Carbon.h.
+       [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP)
+       (mac_do_receive_dragUPP): New variables.
+       (mac_handle_service_event, init_service_handler): Put declarations
+       and definitions in #ifdef MAC_OSX.
+       (install_window_handler) [TARGET_API_MAC_CARBON]: Create UPPs for
+       drag-and-drop handler functions and register them.
+       (remove_window_handler): New function.
+       (do_ae_open_documents, mac_do_receive_drag) [!MAC_OSX]:
+       Use fsspec_to_posix_pathname.
+       (main): Change #if !TARGET_API_MAC_CARBON to #ifdef MAC_OS8.
+       (XTread_socket) [!MAC_OSX]: Don't pass keyboard events to TSM.
+       [MAC_OS8] (make_mac_terminal_frame) [TARGET_API_MAC_CARBON]:
+       Set default cursors.
+       (mac_initialize) [USE_CARBON_EVENTS && !MAC_OSX]: Don't call
+       init_service_handler or init_quit_char_handler.
+       (mac_initialize) [!MAC_OSX]: Don't call MakeMeTheFrontProcess.
+
+       * macterm.h (install_window_handler, remove_window_handler)
+       (posix_pathname_to_fsspec, fsspec_to_posix_pathname)
+       (mac_clear_font_name_table): New externs.
+
+2005-03-03  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * fileio.c (FILE_SYSTEM_CASE): Define macro if not already defined.
+       (Ffile_name_directory): Use FILE_SYSTEM_CASE unconditionally.
+       (Fexpand_file_name): Likewise.
+
+2005-03-03  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs.c (Fkill_emacs): Use EXIT_SUCCESS;
+       no longer special-case VMS.  Add bogus return value.
+
+2005-03-02  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (XASSERTS): Define to 0 if not already defined.
+       (xassert) [!XASSERTS]: Define dummy version.
+
+2005-03-02  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): YABX (yet another bogus xassert).
+       Reported by David Kastrup.
+
+2005-03-01  Ehud Karni  <ehud@unix.mvs.co.il>
+
+       * xdisp.c (get_next_display_element): Fix control and escape
+       glyph from display vector.
+
+2005-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.c (Fposn_at_x_y): Check integerness of X and Y.
+
+2005-02-27  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (fast_find_position): Rename END to BEG.
+       (syms_of_xdisp) <menu-bar-update-hook>: Doc fix.
+
+2005-02-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_resize_outer_widget): Remove unneeded call to
+       gtk_window_resize and x_wm_set_size_hint.
+
+2005-02-25  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (OVERLAY_STRING_CHUNK_SIZE): Increase from 3 to 16.
+
+       * xdisp.c (init_from_display_pos): Don't read past end of
+       it->overlay_strings array.
+
+2005-02-25  Stephan Stahl  <stahl@eos.franken.de>  (tiny change)
+
+       * buffer.c (syms_of_buffer): Fix typo.
+
+2005-02-23  Lute Kamstra  <lute@gnu.org>
+
+       * buffer.c (Foverlay_buffer): Doc fix.
+
+2005-02-22  Kim F. Storm  <storm@cua.dk>
+
+       * minibuf.c (Ftry_completion, Fall_completions): Allow both string
+       and symbol keys in alists and hash tables.
+
+       * xdisp.c (fast_find_position): Fix search for start of overlay.
+
+2005-02-21  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (window_scroll_pixel_based): When scrolling backwards,
+       handle partial visible line at end of window even when we hit PT.
+
+2005-02-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.h: Declare Fcurrent_active_maps, used in doc.c.
+
+2005-02-21  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (move_it_vertically_backward): Eliminate two xasserts.
+       I think those asserts are bogus if buffer contains invisible text
+       or images.
+
+2005-02-21  David Kastrup  <dak@gnu.org>
+
+       * gtkutil.c (xg_create_frame_widgets): UNBLOCK_INPUT on error.
+
+2005-02-20  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (pos_visible_p): Be sure to move to the specified
+       position.  Always get the full ascent / descent of the
+       corresponding row, to return reliable rtop and rbot values.
+       (back_to_previous_visible_line_start): Fix 2005-01-18 change.
+       Must look one character back, as back_to_previous_line_start
+       returns position after the newline.
+       (move_it_vertically_backward): Fix heuristic for when to move further
+       back in case line_height * 2/3 is larger than window height.
+       (cursor_row_fully_visible_p): Rename make_cursor_line_fully_visible_p
+       as it does not do anything anymore.  Add arg current_matrix_p to
+       use current matrix rather than desired matrix when set.
+       (try_cursor_movement): Don't scroll to make cursor row fully
+       visible if cursor didn't move.  This avoids unexpected recentering
+       in case of blinking cursor or accepting process output.
+       Use current matrix to check cursor row visibility.
+       (redisplay_window): Fix whether to recenter or move to top in case
+       cursor line is taller than window height.
+       (find_first_unchanged_at_end_row): Stop search if we reach a row
+       which not enabled (instead of abort).
+
+2005-02-18  Kim F. Storm  <storm@cua.dk>
+
+       * xfaces.c (Finternal_set_lisp_face_attribute): Allow :color property
+       to be nil in a :box attribute value list; customize prints that
+       as lisp value when no box color is specified.
+
+       * .gdbinit (pitx, pit): Pretty print display iterator.
+       (prowx, prow): Pretty print glyph row.
+       (pcursorx, pcursor): Pretty print a window cursor.
+       (pwinx, pwin): Pretty print struct window.
+
+2005-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (BLOCK_BYTES): Harmless typo.
+
+2005-02-17  Andreas Schwab  <schwab@suse.de>
+
+       * xfns.c (hack_wm_protocols): Use correct type for last parameter
+       of XGetWindowProperty to avoid aliasing issues.
+       (Fx_window_property): Likewise.
+
+       * xselect.c (Fx_disown_selection_internal): Use union of struct
+       input_event and struct selection_input_event to avoid aliasing issues.
+
+       * xterm.c (handle_one_xevent): Use union of struct input_event and
+       struct selection_input_event to avoid aliasing issues.
+       (SET_SAVED_MENU_EVENT): Adapt reference to inev.
+
+2005-02-17  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (enum it_method): New enum.
+       (GET_FROM_*): Its members.
+       (struct it): Change member method from function pointer to enum.
+
+       * xdisp.c (check_it, init_from_display_pos, handle_stop)
+       (setup_for_ellipsis, handle_single_display_spec)
+       (handle_composition_prop, next_overlay_string)
+       (get_overlay_strings, reseat_1, reseat_to_string)
+       (next_element_from_ellipsis, BUFFER_POS_REACHED_P)
+       (in_display_vector_p, display_line, get_next_display_element):
+       Change it->method from function pointer to enum.
+       (get_next_element): New array to map it->method to function.
+       (get_next_display_element): Use it.
+       (set_iterator_to_next): Use switch instead of if/else chain.
+
+2005-02-15  Benjamin Riefenstahl  <Benjamin.Riefenstahl@epost.de>
+
+       * w32select.c: Summary: Thorough rework to implement Unicode
+       clipboard operations and delayed rendering.
+
+       Drop last_clipboard_text and related code, keep track of
+       ownership via clipboard_owner instead.  Drop old #if0 sections.
+
+       (DEFAULT_LCID, ANSICP, OEMCP, QUNICODE, QANSICP, QOEMCP)
+       (clipboard_owner, modifying_clipboard, cfg_coding_system)
+       (cfg_codepage, cfg_lcid, cfg_clipboard_type, current_text)
+       (current_coding_system, current_requires_encoding)
+       (current_num_nls, current_clipboard_type, current_lcid):
+       New static variables.
+
+       (convert_to_handle_as_ascii, convert_to_handle_as_coded)
+       (render, render_all, run_protected, lisp_error_handler)
+       (owner_callback, create_owner, setup_config)
+       (enum_locale_callback, cp_from_locale, coding_from_cp):
+       New local functions.
+
+       (term_w32select, globals_of_w32select): New global functions.
+
+       (Fw32_set_clipboard_data): Ignore parameter FRAME, use
+       clipboard_owner instead.  Use delayed rendering and provide
+       all text formats.  Provide CF_LOCALE if necessary.
+
+       (Fw32_get_clipboard_data): Handle CF_UNICODETEXT and
+       CF_LOCALE.  Fall back to CF_TEXT, if CF_UNICODETEXT is not
+       available.  Force DOS line-ends for decoding.
+
+       (Fx_selection_exists_p): Handle CF_UNICODETEXT.
+
+       (syms_of_w32select): Init and register new variables.
+
+       * w32.h: Add prototypes for globals_of_w32select and
+       term_w32select.  Make the neighboring K&R declarations into
+       prototypes, too.
+
+       * emacs.c: Include w32.h to get function prototypes.
+       (main): Call globals_of_w32select.
+
+       * w32.c (term_ntproc): Call term_w32select.
+
+       * s/ms-w32.h: Guard MSC-specific #pragmas with an #ifdef.
+
+2005-02-16  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (BUFFER_POS_REACHED_P): Return true if pos reached and
+       at end of display vector.
+
+2005-02-15  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (get_next_display_element): Fix escape-glyph criterion
+       for mode and header lines.
+
+       * lread.c (syms_of_lread) <user-init-file>: Doc fix.
+
+       * keymap.h (describe_map_tree): Change decl.
+
+       * keyboard.c (command_loop_1): Always use safe_run_hooks
+       to run Qdeferred_action_function.
+
+       * keymap.c (describe_map_tree): New arg MENTION_SHADOW.  Calls changed.
+       (describe_map, describe_vector): Likewise.  When it's 1,
+       don't omit shadowed bindings, instead mark them as shadowed.
+
+       * doc.c (Fsubstitute_command_keys): Compute list of shadowing maps
+       for describe_map_tree.  Pass 1 for MENTION_SHADOW.
+
+       * data.c (Fsetq_default): Allow no arg case.
+
+2005-02-14  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (encode_coding_string): Always return a unibyte string.
+       If NOCOPY is nonzero and there's no need of encoding, make STR
+       unibyte directly.
+
+       * xselect.c (lisp_data_to_selection_data): If OBJ is a non-ASCII
+       multibyte string, signal an error instead of aborting.
+
+2005-02-12  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * keyboard.c: If HAVE_FCNTL_H include fcntl.h.
+
+2005-02-12  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (expose_window): Don't fix overlaps for mode lines.
+
+2005-02-10  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (try_window_id): Set first_unchanged_at_end_row to NULL
+       if it moves outside window or it doesn't display text.
+
+2005-02-09  Kim F. Storm  <storm@cua.dk>
+
+       * undo.c (Fprimitive_undo): Check that undo function does not
+       switch buffer.
+
+2005-02-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xselect.c (selection_data_to_lisp_data): For the special case
+       type == XA_ATOM, data contains array of int, not array of Atom.
+       (x_property_data_to_lisp, selection_data_to_lisp_data):
+       Comment update: data must be array of int for format == 32.
+
+2005-02-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * undo.c (Fprimitive_undo): Check veracity of delta,start,end.
+
+2005-02-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_change_window_property): Use long array when format is 32.
+       (Fx_window_property): If format is 32 and long is bigger than 32 bits,
+       convert long array returned from XGetWindowProperty to an int array.
+       (x_set_tool_bar_lines): Check that width and height is greater than
+       zero before clearing area.
+
+       * xselect.c (x_reply_selection_request): Pass long array to
+       XChangeProperty so that 64 bit longs are handeled correctly.
+       (x_get_window_property): If format is 32 and long is bigger than 32
+       bits convert data from XGetWindowProperty from long array to int array.
+       (lisp_data_to_selection_data): When the input is a vector and the
+       format is 32, allocate a long array even if long is bigger than 32 bits.
+       (x_fill_property_data): Use char, short and long as the man page
+       for XChangeProperty specifies.  This way the data returned is OK for
+       both 32 and 64 bit machines.
+       (x_handle_dnd_message): Calculate size correctly even for 64 bit
+       machines.
+       (Fx_send_client_event): Undo change from 2005-02-05,
+       x_fill_property_data now handles that case.
+
+       * xfns.c (Fx_backspace_delete_keys_p): Add comment about the
+       reason for the approach in the code.
+
+2005-02-07  Kim F. Storm  <storm@cua.dk>
+
+       * undo.c (Fprimitive_undo): Record max one dummmy apply element.
+
+2005-02-06  Richard M. Stallman  <rms@gnu.org>
+
+       * eval.c (Frun_hook_with_args)
+       (Frun_hook_with_args_until_success)
+       (Frun_hook_with_args_until_failure): Doc fixes.
+
+2005-02-05  Andreas Schwab  <schwab@suse.de>
+
+       * sysdep.c (sys_subshell): Properly terminate execlp argument list.
+
+2005-02-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xselect.c (Fx_send_client_event, x_handle_dnd_message): Handle
+       the longs in a XClientMessageEvent correctly when long is 64 bits.
+
+2005-02-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * xfaces.c (face_color_supported_p): Use HAVE_WINDOW_SYSTEM
+       instead of HAVE_X_WINDOWS, for non-X windowed sessions.
+
+2005-02-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (menubar_selection_callback): Force out GTK buffered
+       events so the menu event comes after them.  This is to prevent sit-for
+       from exiting on buffered events directly after a menu selection,
+       lisp code for Help => About Emacs uses sit-for.
+
+       * gtkutil.c (create_menus): Connect selection-done event instead of
+       the deactivate event to deactivate_cb.  This will make the last
+       leave event come before the call to deactivate_cb, so the leave
+       event does not make sit-for exit after a menu selection.
+
+2005-02-03  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (build_frame_matrix_from_leaf_window)
+       [!GLYPH_DEBUG]: Fix xassert.
+
+       * xfaces.c (x_free_gc) [!GLYPH_DEBUG]: Fix xassert.
+
+       * xfns.c (unwind_create_frame) [!GLYPH_DEBUG]: Fix xassert.
+
+2005-02-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c: Use MAC_OS_X_VERSION_MAX_ALLOWED to conditionalize by
+       the compiling OS version.
+
+       * macfns.c (x_create_tip_frame): Likewise.
+
+       * macterm.c (mac_draw_string_common, x_make_frame_visible): Likewise.
+
+2005-02-03  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (x_error_quitter): On GCC 3 and up, specify noinline.
+
+       * xdisp.c (echo_area_display): Clear echo_message_buffer.
+
+       * buffer.c (Fbury_buffer): Doc fix.
+
+2005-02-02  Steven Tamm  <steventamm@mac.com>
+
+       * macfns.c (unwind_create_frame): Fix compile error due to
+       xassert being uncondition, but predicate is.
+       * dispnew.c (update_window): Fix compile error due to
+       xassert being uncondition, but predicate is.
+
+2005-02-02  Miles Bader  <miles@gnu.org>
+
+       * dispextern.h (xassert): Enable unconditionally.
+
+2005-02-02  Kim F. Storm  <storm@cua.dk>
+
+       * undo.c (Fprimitive_undo): Fix dummy apply undo entry.
+
+2005-02-02  Kenichi Handa  <handa@m17n.org>
+
+       * casefiddle.c (casify_object): Enable changing characters of
+       different byte length.
+       (casify_region): Fix loop condition, args to replace_range_2, and
+       update opoint_byte.
+
+       * insdel.c (replace_range_2): Fix bugs in adjusting markers and point.
+
+2005-02-01  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (back_to_previous_visible_line_start): Reset iterator
+       stack before calling handle_display_prop.
+
+2005-01-31  Kim F. Storm  <storm@cua.dk>
+
+       * undo.c (Qapply): New lisp var.
+       (syms_of_undo): Intern and staticpro it.
+       (Fprimitive_undo): Support formats (apply FUNNAME . ARGS) and
+       (apply DELTA BEG END FUNNAME . ARGS) instead of (FUNNAME . ARGS).
+
+       * buffer.c (syms_of_buffer) <buffer-undo-list>: Doc fix.
+
+2005-01-30  Jesper Harder  <harder@phys.au.dk>
+
+       * macterm.c (syms_of_macterm) <mac-reverse-ctrl-meta>
+       <mac-emulate-three-button-mouse>: Fix docstring indentation.
+
+2005-01-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * undo.c (syms_of_undo) <undo-outer-limit>: Doc update.
+       Increase value to 3 Meg.
+
+2005-01-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (show_hourglass): Use FRAME_X_WINDOW as parent for GTK,
+       button events are not received otherwise.
+
+2005-01-29  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (syms_of_buffer) <buffer-undo-list>: Doc fix.
+
+       * undo.c (Fprimitive_undo): Handle (FUNNAME . ARGS) by calling FUNNAME.
+
+2005-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (access_keymap): YAILOM.
+
+2005-01-27  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_phys_cursor_geometry): New function to calculate
+       phys cursor position and size for hollow cursor.  Position is
+       aligned with get_glyph_string_clip_rect and ensures that a hollow
+       cursor is shown, even when the actual glyph is not visible.
+
+       * dispextern.h (get_phys_cursor_geometry): Add prototype.
+
+       * xterm.c (x_clip_to_row): Ensure y >= 0.
+       (x_draw_hollow_cursor): Use get_phys_cursor_geometry.
+
+       * w32term.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry.
+
+       * macterm.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry.
+
+2005-01-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xterm.c (x_error_quitter): Add a prototype.  Make it static again.
+
+2005-01-27  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_glyph_string_clip_rect): Always show a cursor
+       glyph, even when row is only partially visible and actual cursor
+       position is not visible.
+
+2005-01-24  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (x_error_quitter): No longer static, and moved after
+       x_error_handler.
+
+2005-01-24  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (move_it_by_lines): If we move forward after going too
+       far back, cancel move if end position is same as start position.
+
+2005-01-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dispextern.h (struct glyph_string): New members clip_head and
+       clip_tail.
+
+       * xdisp.c (get_glyph_string_clip_rect): Restrict horizontal clip
+       region to the area between clip_head and clip_tail.
+       (draw_glyphs): Record the area that need to be actually redrawn to
+       the new variables clip_head and clip_tail when there are
+       overhangs.  Set values of these variables to the corresponding
+       members in struct glyph_string.  Refine x coordinates for
+       notice_overwritten_cursor using clip_head and clip_tail.
+
+       * macgui.h (STORE_XCHARSETSTRUCT): New macro.
+
+       * macterm.c (mac_compute_glyph_string_overhangs): Implement with
+       QDTextBounds.
+       (x_draw_glyph_string): Don't fill the background of the successor
+       of a glyph with a right overhang if the successor will draw a cursor.
+       (XLoadQueryFont): Obtain font metrics using QDTextBounds.
+       (x_redisplay_interface): Add entry for compute_glyph_string_overhangs.
+
+2005-01-24  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (window_scroll_pixel_based): Fix scrolling in the wrong
+       direction if window height was smaller than next-screen-context-lines.
+       Now always scroll at least one line in the requested direction.
+       Ensure that we actually do scroll backwards when requested to do so.
+
+       * xdisp.c (redisplay_window): Only try to make cursor line fully
+       visible once (to avoid redisplay loop).
+
+2005-01-23  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Fpos_visible_in_window_p): Simplify return value for
+       partially visible rows.
+       (window_scroll_pixel_based): Adapt to that change.
+
+       * window.c (window_scroll_pixel_based): Force moving to next line
+       if scrolling doesn't move start point, e.g. if looking at tall image.
+
+       * xdisp.c (pos_visible_p): Return 0 if non-interactive.
+       Clear last_height before calling line_bottom_y to get real height.
+       Fix calculation of y.
+
+2005-01-22  Steven Tamm  <steventamm@mac.com>
+
+       * s/darwin.h: Removed PTY_ITERATION from here.
+       (DARWIN): Define.
+
+       * process.c (init_process): Default process-connection-type to
+       nil on darwin 6 or less, t if it is 7 or higher.  This way the
+       broken pty behavior is still allowed on darwin 6 for interactive
+       processes for people that know what they are doing.
+
+2005-01-22  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (auto_window_vscroll_p): New boolean.
+       (syms_of_window): DEFVAR_BOOL it.
+       (Fpos_visible_in_window_p): Extend return value to include RTOP
+       and RBOT values if FULLY is nil.
+       (window_scroll_pixel_based): Adjust vscroll for partially visible
+       rows if auto_window_vscroll_p is set.
+       (Fset_window_vscroll): Do nothing if vscroll is not modified.
+
+       * xdisp.c (pos_visible_p): Replace FULLY arg by RTOP and RBOT args
+       to return number of partially invisible pixels at top and bottom
+       of the dislay row at POS.
+
+       * lisp.h (pos_visible_p): Fix prototype.
+
+2005-01-21  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fcopy_file): Doc fix.
+
+2005-01-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_tool_bar_detach_callback): Remove unused variable bw.
+       (xg_get_file_name): Move declaration ofx_use_old_gtk_file_dialog to
+       start of function for older compilers.
+
+2005-01-20  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fmessage): If arg is "", return "" (as before).
+
+       * keymap.c (access_keymap): Protect from bad value of meta_prefix_char.
+
+       * .gdbinit (xgetptr, xgetint, xgettype): Copy $arg0 into a temp
+       variable.
+
+2005-01-20  Steven Tamm  <steventamm@mac.com>
+
+       * editfns.c (Voperating_system_release): Add.
+       (init_editfns): Assign new variable operating-system-release
+       based on call to uname if available.
+       (get_operating_system_release): Add function to
+       allow c-level access to operating system release.
+
+       * config.h: Regenerated.
+
+       * s/darwin.h (PTY_ITERATION): Don't allow PTYs on darwin 6 or less.
+       (MIN_PTY_KERNEL_VERSION): Define minimum kernel version for
+       using ptys as '7'.
+
+2005-01-20  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (STRING_MARKED_P, VECTOR_MARKED_P): Return boolean.
+
+       * xterm.c (x_draw_glyph_string_box): Fix last_x for full width rows.
+       Thanks to Chong Yidong <cyd@stupidchicken.com> for debugging this.
+
+       * macterm.c (x_draw_glyph_string_box): Likewise.
+
+       * w32term.c (x_draw_glyph_string_box): Likewise.
+
+       * indent.c (Fvertical_motion): Temporarily disable selective display.
+
+2005-01-19  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Fix :pointer
+       image property.
+
+       * fns.c (sweep_weak_table): Advance prev pointer when we keep a pair.
+
+2005-01-18  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (fast_find_position): Backtrack to find first row if
+       charpos is inside a display overlay that spans multiple lines.
+
+2005-01-18  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (decode_coding_iso2022): Translate invalid codes if
+       translation-table is specified.
+
+2005-01-18  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (back_to_previous_visible_line_start): Undo 2004-12-28
+       change.  If handle_display_prop indicates newline is replaced by
+       image or text, move back to start of relevant overlay or interval
+       and continue scan from there.  Simplify.
+
+2005-01-17  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (mode_line_string, marginal_area_string):
+       Fix off-by-one error in search for glyph.
+
+2005-01-16  Kim F. Storm  <storm@cua.dk>
+
+       * macterm.c (syms_of_macterm) <mac-allow-anti-aliasing>: Doc fix.
+
+2005-01-16  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (mac_to_x_fontname): Remove spurious argument.
+
+2005-01-16  Andreas Schwab  <schwab@suse.de>
+
+       * macterm.c (mac_draw_string_common): Fix compilation on OSX 10.1.
+
+2005-01-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * fringe.c (Fdefine_fringe_bitmap, init_fringe): When assigning
+       fringe_faces, cast result from xmalloc/xrealloc to Lisp_Object *.
+
+2005-01-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * keyboard.c (READABLE_EVENTS_DO_TIMERS_NOW)
+       (READABLE_EVENTS_FILTER_EVENTS, READABLE_EVENTS_IGNORE_SQUEEZABLES):
+       New flags for readable_events.
+       (get_filtered_input_pending, readable_filtered_events): Remove.
+       (tracking_off): Call readable_events and get_input_pending with
+       flag READABLE_EVENTS_DO_TIMERS_NOW.
+       (readable_events): Move code from old readable_filtered_events here,
+       but check new READABLE_EVENTS_* in argument flags instead of previous
+       two boolean arguments do_timers_now and filter_events.
+       If we are doing mouse tracking and the mouse moved, return only if
+       READABLE_EVENTS_IGNORE_SQUEEZABLES is not set in flags.
+       (swallow_events): Call get_input_pending with flag
+       READABLE_EVENTS_DO_TIMERS_NOW.
+       (get_input_pending): Move code from old get_filtered_input_pending
+       here.  Replace boolean arguments do_timers_now, filter_events with
+       flags, and pass flags to readable_events.  Document new
+       READABLE_EVENTS_* flags.
+       (detect_input_pending_ignore_squeezables): New function.
+       (detect_input_pending_run_timers): Call get_input_pending with flag
+       READABLE_EVENTS_DO_TIMERS_NOW.
+       (Finput_pending_p): Call get_input_pending with flags
+       READABLE_EVENTS_DO_TIMERS_NOW and READABLE_EVENTS_FILTER_EVENTS.
+
+       * dispnew.c (update_window, update_frame_1): Replace calls to
+       detect_input_pending with detect_input_pending_ignore_squeezables
+       so that redisplay is not paused if the event queue contains only
+       mouse movements.
+
+       * lisp.h: Declare detect_input_pending_ignore_squeezables.
+
+2005-01-15  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (Vmac_use_core_graphics): Declare variable for
+       mac-allow-anti-aliasing.
+       (syms_of_macterm): DEFVAR_LISP and initialize it.
+       (mac_draw_string_common): Use core graphics text rendering if
+       mac-allow-anti-aliasing is enabled.
+
+       * macfns.c (Fx_file_dialog): Save As dialog includes only the
+       file name in the text box.
+
+2005-01-15  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (x_set_foreground_color, x_set_background_color):
+       Sync with xfns.c.
+       (mac_window, x_create_tip_frame): Use XSetWindowBackground.
+       * macterm.c (XSetBackground, XSetWindowBackground): New functions.
+       * macterm.h (XSetBackground, XSetWindowBackground): Add externs.
+
+2005-01-14  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (Fposn_at_x_y): Add optional arg WHOLE.
+
+2005-01-13  Richard M. Stallman  <rms@gnu.org>
+
+       * keymap.c (Fcurrent_active_maps): Ignore Voverriding_local_map
+       if Voverriding_terminal_local_map is non-nil.
+
+       * keyboard.c (syms_of_keyboard): Doc fix.
+
+2005-01-13  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (Fformat_mode_line): Fix last change.  Remove NO_PROPS arg
+       (specify 0 for FACE instead).  Reorder arg list.  Doc fix.
+
+2005-01-12  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (Fformat_mode_line): New arg FACE specifies a default
+       face property for characters that don't specify one.
+
+       * fns.c (Frequire): Record in load-history unconditionally.
+
+2005-01-10  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (merge_faces): Rename from merge_into_realized_face.
+
+       * xfaces.c (merge_faces): Rename from merge_into_realized_face.
+       Callers changed.
+       Add support to merge with lisp face id too (if face_name is t).
+
+       * xdisp.c (get_next_display_element, next_element_from_display_vector):
+       Don't lookup lface_id from display table glyphs here; instead use
+       merge_faces to merge the lisp face id into current face.
+
+2005-01-09  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (struct it): New member dpvec_face_id.
+       (merge_into_realized_face): Add prototype.
+
+       * xfaces.c (merge_into_realized_face): New function.  Used to
+       merge escape-glyph face or face from display table into current face.
+
+       * xdisp.c (Vshow_nonbreak_escape): New lisp var.
+       (syms_of_xdisp): DEFVAR_LISP it.
+       (escape_glyph_face): Remove var.
+       (redisplay_window): Don't initialize it.
+       (setup_for_ellipsis, get_next_display_element):
+       Set it->dpvec_face_id to -1.
+       (get_next_display_element): Test Vshow_nonbreak_escape.
+       Do not setup escape_glyph_face.
+       Properly merge escape-glyph face or face from display table with
+       current face for escape and control characters.
+       Set it->dpvec_face_id to relevant face id instead of adding it to each
+       element of display vector.
+       (next_element_from_display_vector): If it->dpvec_face_id is set,
+       use that instead of lface_id from glyph itself.
+
+2005-01-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h (struct x_output): New member, toolbar_detached.
+
+       * gtkutil.c (xg_create_frame_widgets): Set initial tool bar height to
+       38.
+       (xg_tool_bar_detach_callback): Set toolbar_detached to 1.
+       (xg_tool_bar_attach_callback): Set toolbar_detached to 0.
+       (xg_create_tool_bar): Initialize toolbar_detached.
+       (update_frame_tool_bar): Only set FRAME_TOOLBAR_HEIGHT (f) if
+       toolbar_detached is zero.
+
+2005-01-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (create_and_show_popup_menu): Pass zero as button to
+       gtk_menu_popup if not for_click, so callbacks for the menu are called.
+
+       * gtkutil.c (xg_gtk_scroll_destroy, xg_create_scroll_bar)
+       (xg_tool_bar_callback, xg_tool_bar_help_callback)
+       (update_frame_tool_bar): Cast to EMACS_INT to avoid compiler warning.
+
+       * xselect.c (x_get_foreign_selection, x_fill_property_data)
+       (Fx_get_atom_name, Fx_send_client_event): Replace XFLOAT with
+       XFLOAT_DATA to get extract number from Lisp object.
+
+2005-01-07  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (set_iterator_to_next): Fix 2004-12-13 change.
+       Set stop_charpos to current charpos instead of 0.
+
+2005-01-06  Nick Roberts  <nickrob@snap.net.nz>
+
+       * xdisp.c (Fformat_mode_line): First arg now required.
+
+2005-01-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (XLoadQueryFont): Correctly handle 0 size
+       font widths that are returned from some Japanese fonts.
+
+2005-01-06  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (fringe_faces): Change to Lisp_Object pointer.
+       (draw_fringe_bitmap_1): Lookup user defined fringe faces here.
+       (destroy_fringe_bitmap): Set fringe_faces element to nil.
+       (Fdefine_fringe_bitmap, init_fringe): Change allocation of
+       fringe_faces array and init elements to nil.
+       (Fset_fringe_bitmap_face): Set fringe_faces to face name instead of
+       non-persistent face id.
+       (mark_fringe_data): New function for GC.
+
+       * alloc.c (mark_fringe_data): Declare extern.
+       (Fgarbage_collect): Call mark_fringe_data.
+
+       * alloc.c (overrun_check_free): Invalidate freed memory if
+       XMALLOC_CLEAR_FREE_MEMORY is defined.
+
+2005-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c: Include sys/param.h.
+       [TARGET_API_MAC_CARBON] (mac_nav_event_callback): New declaration
+       and function.
+       [TARGET_API_MAC_CARBON] (Fx_file_dialog): Use MAXPATHLEN for size
+       of filename string.  Set event callback function when creating
+       dialog boxes.  Add code conversions for filenames.  Don't dispose
+       of apple event descriptor record if failed to create it.
+
+       * macterm.c: Include sys/param.h.
+       [USE_CARBON_EVENTS] (mac_handle_window_event): Add handler for
+       kEventWindowUpdate.
+       (install_window_handler) [USE_CARBON_EVENTS]: Register it.
+       (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Get FSRef instead
+       of FSSpec from apple event descriptor record.
+       (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Use MAXPATHLEN for
+       size of filename string.
+       [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise.
+       [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Return error when a
+       file dialog is in action.
+       [TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise.
+       Reject only when there are no filename items.  Set background color
+       before (un)highlighting the window below the dragged items.
+       (XTread_socket) [USE_CARBON_EVENTS]: Don't call do_window_update.
+
+2005-01-05  Romain Francoise  <romain@orebokech.com>
+
+       * term.c (encode_terminal_code): Fix buffer size computation.
+
+2005-01-04  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (Fformat_mode_line): Doc fix.
+
+2005-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (refill_memory_reserve): Move.
+       (emacs_blocked_free, emacs_blocked_malloc, emacs_blocked_realloc)
+       (reset_malloc_hooks, uninterrupt_malloc) [SYNC_INPUT]: Don't define.
+
+2005-01-03  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (window_scroll_pixel_based): Don't correct preserve_y
+       for CURRENT_HEADER_LINE_HEIGHT when moving backwards.
+
+2005-01-03  Jason Rumney  <jasonr@gnu.org>
+
+       * w32bdf.c (w32_load_bdf_font): Set fontp->average_width and
+       fontp->space_width to FONT_WIDTH so they are valid.
+
+       * w32fns.c (w32_load_system_font): Set FONT_WIDTH to maximum, not
+       average width.  Set fontp->average_width and fontp->space_width to
+       their appropriate values.
+
+       * w32term.c (x_new_font): Set FRAME_COLUMN_WIDTH to
+       fontp->average_width, not FONT_WIDTH.  Set FRAME_SPACE_WIDTH to
+       fontp->space_width.
+
+2005-01-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (x_new_font): Set FRAME_SPACE_WIDTH.
+       (x_font_min_bounds, XLoadQueryFont): Use the correct font width
+       metrics for max and min bounds.
+       (x_load_font): Correctly calculate average font width metrics.
+
+2005-01-02  Richard M. Stallman  <rms@gnu.org>
+
+       * alloc.c (Fgarbage_collect): Don't truncate_undo_list on dead buffers.
+
+2004-12-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (handle_one_xevent): Clear area in expose event for GTK.
+
+2004-12-31  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (setup_for_ellipsis, get_next_display_element):
+       Set it->ellipsis_p to 1 or 0.
+       (display_line): Record whether row ends in mid-ellipsis.
+       (set_cursor_from_row): If ends in ellipsis, find start of it.
+       (cursor_row_p): If PT's at the end of the ellipsis the row
+       ends within, don't display cursor on this row.
+
+       * dispextern.h (struct it): New element ellipsis_p.
+       (struct glyph_row): New element ends_in_ellipsis_p.
+
+       * xdisp.c (BUFFER_POS_REACHED_P): We haven't reached the specified
+       position if we're reading from something other than the buffer.
+
+       * window.c (window_scroll_pixel_based): Only look at
+       Vscroll_preserve_screen_position if the old PT can't be kept.
+       (syms_of_window) <scroll-preserve-screen-position>: Doc fix.
+
+2004-12-30  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_line_height_property): New function extracted from
+       original calc_line_height_property.
+       (calc_line_height_property): Rework.  Handle t and (nil . ratio).
+       (x_produce_glyphs): Use them to handle line-height and
+       line-spacing according to new height spec.
+       (Qtotal): Remove.
+       (syms_of_xdisp): Remove intern and staticpro for Qtotal.
+
+2004-12-30  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Finsert_file_contents): Don't use
+       current_buffer->buffer_file_coding_system even if REPLACE is
+       non-nil.  Call Qafter_insert_file_set_coding with the second arg VISIT.
+
+       * fontset.h (struct font_info): New members space_width and
+       average_width.
+
+       * frame.h (struct frame): New member space_width.
+       (FRAME_SPACE_WIDTH): New macro.
+
+       * xterm.h (struct x_display_info): New member Xatom_AVERAGE_WIDTH.
+
+       * xterm.c (x_new_font): Set FRAME_COLUMN_WIDTH to
+       fontp->average_width, not FONT_WIDTH.  Set FRAME_SPACE_WIDTH to
+       fontp->space_width.
+       (x_load_font): Calculate fontp->space_width and fontp->average_width.
+       (x_term_init): Initialize dpyinfo->Xatom_AVERAGE_WIDTH.
+
+       * xdisp.c (x_produce_glyphs): Calculate tab width by
+       FRAME_SPACE_WIDTH, not FRAME_COLUMN_WIDTH.
+
+2004-12-29  Sanghyuk Suh  <han9kin@mac.com>
+
+       * macterm.c (SelectionRange): Add Xcode position apple event struct.
+       (do_ae_open_documents): Handle Xcode-style file position open events.
+
+2004-12-29  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffer.c (syms_of_buffer) <vertical-scroll-bar>: Correct typo.
+
+2004-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (syms_of_buffer) <vertical-scroll-bar>: Doc fix.
+
+2004-12-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (install_window_handler): Modify extern to return OSErr
+       value.
+       (mac_window): Handle return value of install_window_handler.
+
+       * macterm.c (reflect_byte): Remove function.
+       (mac_create_bitmap_from_bitmap_data): Don't call reflect_byte.
+       Lookup table instead.
+       (mac_do_font_lists): Simplify calculation of the longest
+       nonspecial string.
+       (init_mac_drag_n_drop): Remove function and declaration.
+       (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call
+       init_mac_drag_n_drop.
+       (mac_do_track_drag): New function and declaration.
+       (install_window_handler): Return OSErr value.
+       (install_window_handler) [TARGET_API_MAC_CARBON]:
+       Register handlers for tracking/receiving drag-and-drop items.
+       (do_ae_open_documents): Generate unibyte strings for filenames.
+       (mac_do_receive_drag) [TARGET_API_MAC_CARBON]: Likewise.
+       Reject only non-filename items.  Set event modifiers, and return value.
+
+2004-12-28  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * coding.c (decode_coding): Fix previous change.
+
+2004-12-28  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (back_to_previous_visible_line_start):
+       Don't call handle_display_prop.
+
+2004-12-28  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * coding.c (decode_coding_XXX, decode_composition_emacs_mule)
+       (decode_coding_emacs_mule, encode_coding_emacs_mule)
+       (decode_coding_iso2022, encode_designation_at_bol)
+       (encode_coding_iso2022, decode_coding_sjis_big5, decode_eol)
+       (decode_coding): Constify arguments and local vars.
+
+2004-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (popup_get_selection): Only pop down dialogs
+       on C-g and Escape.
+       (popup_get_selection): Remove parameter down_on_keypress.
+       (create_and_show_popup_menu, create_and_show_dialog):
+       Remove parameter down_on_keypress to popup_get_selection.
+
+2004-12-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * dispextern.h: Change HAVE_CARBON to MAC_OS.
+       (struct glyph_string): Likewise.
+
+       * emacs.c (main) [MAC_OS8]: Call mac_term_init instead of
+       mac_initialize.
+
+       * fileio.c (Fnext_read_file_uses_dialog_p, Fread_file_name):
+       Change TARGET_API_MAC_CARBON to HAVE_CARBON.
+
+       * fns.c (vector): Change MAC_OSX to MAC_OS.
+
+       * frame.c (x_set_frame_parameters, x_report_frame_params)
+       (x_set_fullscreen): Remove #ifndef HAVE_CARBON.
+       (x_set_border_width, Vdefault_frame_scroll_bars):
+       Change HAVE_CARBON to MAC_OS.
+
+       * image.c [MAC_OS]: Include sys/stat.h.
+       [MAC_OS && !MAC_OSX]: Include sys/param.h, ImageCompression.h, and
+       QuickTimeComponents.h.
+
+       * mac.c [!MAC_OSX] (mac_wait_next_event): Add extern.
+       [!MAC_OSX] (select): Use mac_wait_next_event.
+       [!MAC_OSX] (run_mac_command): Change EXEC_SUFFIXES to Vexec_suffixes.
+       [!MAC_OSX] (select, run_mac_command): Change `#ifdef
+       TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'.
+       (mac_clear_font_name_table): Add extern.
+       (Fmac_clear_font_name_table): New defun.
+       (syms_of_mac): Defsubr it.
+       [MAC_OSX] (SELECT_POLLING_PERIOD_USEC): New define.
+       [MAC_OSX] (select_and_poll_event): New function.
+       [MAC_OSX] (sys_select): Use it.
+       [MAC_OSX && SELECT_USE_CFSOCKET] (socket_callback): New function.
+       [MAC_OSX && SELECT_USE_CFSOCKET]
+       (SELECT_TIMEOUT_THRESHOLD_RUNLOOP, EVENT_CLASS_SOCK): New defines.
+       [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Use CFSocket and
+       RunLoop for simultaneously monitoring two kinds of inputs, window
+       events and process outputs, without periodically polling.
+
+       * macfns.c (mac_initialized): Remove extern.
+       (stricmp): Put in #if 0.  All callers changed to use xstricmp in
+       xfaces.c.
+       (strnicmp): Decrement `n' at the end of each loop, not the beginning.
+       (check_mac): Use the term "Mac native windows" instead of "Mac OS".
+       (check_x_display_info, x_display_info_for_name): Sync with xfns.c.
+       (mac_get_rdb_resource): New function (from w32reg.c).
+       (x_get_string_resource): Use it.
+       (install_window_handler): Add extern.
+       (mac_window): New function.
+       (Fx_create_frame): Use it instead of make_mac_frame.
+       Set parameter for Qfullscreen.  Call x_wm_set_size_hint.
+       (Fx_open_connection, Fx_close_connection): New defuns.
+       (syms_of_macfns): Defsubr them.
+       (x_create_tip_frame) [TARGET_API_MAC_CARBON]:
+       Add kWindowNoUpdatesAttribute to the window attribute.
+       (x_create_tip_frame) [!TARGET_API_MAC_CARBON]: Use NewCWindow.
+       (x_create_tip_frame): Don't call ShowWindow.
+       (Fx_show_tip): Call ShowWindow.
+       (Fx_file_dialog): Change `#ifdef TARGET_API_MAC_CARBON' to `#if
+       TARGET_API_MAC_CARBON'.
+       (mac_frame_parm_handlers): Set handlers for Qfullscreen.
+       (syms_of_macfns) [MAC_OSX]: Initialize mac_in_use to 0.
+
+       * macgui.h [!MAC_OSX]: Don't include Controls.h.  Include Windows.h.
+       (Window): Typedef to WindowPtr and move outside `#if
+       TARGET_API_MAC_CARBON'.
+       (XSizeHints): New struct.
+
+       * macterm.c (x_update_begin, x_update_end)
+       [TARGET_API_MAC_CARBON]: Disable screen updates during update of a
+       frame.
+       (x_draw_glyph_string_background, x_draw_glyph_string_foreground)
+       [MAC_OS8]: Use XDrawImageString/XDrawImageString16.
+       (construct_mouse_click): Put in #if 0.
+       (x_check_fullscreen, x_check_fullscreen_move): Remove decls.
+       (x_scroll_bar_create, x_scroll_bar_handle_click): Change `#ifdef
+       TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'.
+       (activate_scroll_bars, deactivate_scroll_bars)
+       [!TARGET_API_MAC_CARBON]: Use ActivateControl/DeactivateControl.
+       (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Reposition window
+       if the position is neither user-specified nor program-specified.
+       (x_free_frame_resources): Free size_hints.
+       (x_wm_set_size_hint): Allocate size_hints if needed.  Set size_hints.
+       (mac_clear_font_name_table): New function.
+       (mac_do_list_fonts): Initialize font_name_table if needed.
+       (x_list_fonts): Don't initialize font_name_table.  Add BLOCK_INPUT
+       around mac_do_list_fonts.
+       (mac_unload_font): New function.
+       (x_load_font): Add BLOCK_INPUT around XLoadQueryFont.
+       (init_mac_drag_n_drop, mac_do_receive_drag): Enclose declarations
+       and definitions with #if TARGET_API_MAC_CARBON.
+       [USE_CARBON_EVENTS] (mac_handle_window_event): Add decl.
+       (install_window_handler): Add decl.
+       (do_window_update): Add BeginUpdate/EndUpdate for the tooltip
+       window.  Use UpdateControls.  Get the rectangle that should be
+       updated and restrict the target of expose_frame to it.
+       (do_grow_window): Set minimum height/width according to size_hints.
+       (do_grow_window) [TARGET_API_MAC_CARBON]: Use ResizeWindow.
+       (do_zoom_window): Don't use x_set_window_size.
+       [USE_CARBON_EVENTS] (mac_handle_window_event): New function.
+       (install_window_handler): New function.
+       [!USE_CARBON_EVENTS] (mouse_region): New variable.
+       [!USE_CARBON_EVENTS] (mac_wait_next_event): New function.
+       (XTread_socket) [USE_CARBON_EVENTS]: Move call to
+       GetEventDispatcherTarget inside BLOCK_INPUT.
+       (XTread_socket) [!USE_CARBON_EVENTS]: Use mac_wait_next_event.
+       Update mouse_region when mouse is moved.
+       (make_mac_frame): Remove.
+       (make_mac_terminal_frame): Put in #ifdef MAC_OS8.
+       Initialize mouse pointer shapes.  Change values of f->left_pos and
+       f->top_pos.  Don't use make_mac_frame.  Use NewCWindow.
+       Don't call ShowWindow.
+       (mac_initialize_display_info) [MAC_OSX]: Create mac_id_name from
+       Vinvocation_name and Vsystem_name.
+       (mac_make_rdb): New function (from w32term.c).
+       (mac_term_init): Use it.  Add BLOCK_INPUT.  Error if display has
+       already been opened.  Don't pass argument to
+       mac_initialize_display_info.  Don't set dpyinfo->height/width.
+       Add entries to x_display_list and x_display_name_list.
+       (x_delete_display): New function.
+       (mac_initialize): Don't call mac_initialize_display_info.
+       (syms_of_macterm) [!MAC_OSX]: Don't call Fprovide.
+
+       * macterm.h (check_mac): Add extern.
+       (struct mac_output): New member size_hints.
+       (FRAME_SIZE_HINTS): New macro.
+       (mac_unload_font): Add extern.
+
+       * xdisp.c (expose_window, expose_frame): Remove kludges for Mac.
+
+       * xfaces.c (clear_font_table) [MAC_OS]: Call mac_unload_font.
+
+2004-12-27  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (Fbuffer_disable_undo): Delete (move to simple.el).
+       (syms_of_buffer): Don't defsubr it.
+
+       * process.c (list_processes_1): Set undo_list instead
+       of calling Fbuffer_disable_undo.
+
+       * xdisp.c (single_display_spec_string_p): Rename from
+       single_display_prop_string_p.
+       (single_display_spec_intangible_p): Rename from
+       single_display_prop_intangible_p.
+       (handle_single_display_spec): Rename from handle_single_display_prop.
+       Rewritten to be easier to understand.
+
+       Change in load-history format.  Functions now get (defun . NAME),
+       and variables get just NAME.
+
+       * data.c (Fdefalias): Use (defun . FN_NAME) in LOADHIST_ATTACH.
+
+       * eval.c (Fdefun, Fdefmacro): Use (defun . FN_NAME) in LOADHIST_ATTACH.
+       (Fdefvaralias, Fdefvar, Fdefconst): Use just SYM in LOADHIST_ATTACH.
+       (Qdefvar): Var deleted.
+       (syms_of_eval): Don't initialze it.
+
+       * lread.c (syms_of_lread) <load-history>: Doc fix.
+
+2004-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (popup_get_selection): Pop down on C-g.
+       (set_frame_menubar): Install translations for Lucid/Motif/Lesstif that
+       pops down menu on C-g.
+       (xdialog_show): If dialog popped down and no button in the dialog was
+       pushed, call Fsignal to quit.
+       (xmenu_show): In no toolkit version, if menu returns NO_SELECT call
+       Fsignal to quit.
+
+       * xfns.c (Fx_file_dialog): Motif/Lesstif version: Pop down on C-g.
+
+       * gtkutil.c (xg_initialize): Install bindings for C-g so that
+       dialogs and menus pop down.
+
+2004-12-27  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (code_convert_region): Fix calculation of `ratio'.
+
+2004-12-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (update_frame_tool_bar): Make the value of
+       tool-bar-button-margin control margins of images in tool bar.
+
+       * alloc.c (check_depth): New variable.
+       (overrun_check_malloc, overrun_check_realloc): Only add
+       overhead and write check pattern if check_depth is 1 (to handle
+       recursive calls).  Increase/decrease check_depth in entry/exit.
+       (overrun_check_free): Only check for overhead if check_depth is 1.
+       Increase/decrease check_depth in entry/exit.
+
+2004-12-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * keyboard.c (input_available_signal): Call SIGNAL_THREAD_CHECK
+       before touching input_available_clear_time, to avoid accessing it
+       from multiple threads.
+
+2004-12-23  Jason Rumney  <jasonr@gnu.org>
+
+       * image.c (__WIN32__) [HAVE_NTGUI]: Define for correct behaviour
+       of JPEG library.
+
+2004-12-22  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs.c (main): If batch mode, set Vundo_outer_limit to nil.
+
+       * lisp.h (Vundo_outer_limit): Fix decl.
+
+       * undo.c (Vundo_outer_limit): Replaces undo_outer_limit.
+       Uses changed.
+       (syms_of_undo): Initialize appropriately.
+       (truncate_undo_list): If it's nil, there's no limit.
+
+2004-12-22  Kenichi Handa  <handa@m17n.org>
+
+       * xselect.c (Fx_get_cut_buffer_internal): Return a unibyte string.
+
+2004-12-21  Richard M. Stallman  <rms@gnu.org>
+
+       * eval.c (unwind_to_catch): Clear immediate_quit.
+
+       * xdisp.c (get_next_display_element): Display codes 8a0 and 8ad
+       specially as `\ ' and `\-'.
+
+       * keyboard.c (kbd_buffer_store_event_hold):
+       In the code for while-no-input, handle immediate_quit.
+
+       * alloc.c (Fgarbage_collect): Update call to truncate_undo_list.
+       Call that at the very start.
+       (undo_limit, undo_strong_limit, undo_outer_limit): Move to undo.c.
+       (syms_of_alloc): Don't define undo-limit,
+       undo-strong-limit and undo-outer-limit here.
+
+       * undo.c (truncate_undo_list): Return void.
+       Take just one argument, the buffer.
+       Make it current, and inhibit recursive GC.
+       Access and update the undo list directly; return void.
+       Refer to the undo...limit variables directly.
+       Test undo_outer_limit only after counting the whole current command.
+       When it's exceeded, call the function in undo-outer-limit-function.
+       (undo_limit, undo_strong_limit, undo_outer_limit): From alloc.c.
+       (Vundo_outer_limit_function): New variable.
+       (syms_of_undo): Define undo-limit, undo-strong-limit
+       and undo-outer-limit here, and undo-outer-limit-function.
+       Doc fixes.
+
+       * lisp.h (truncate_undo_list): Update decl.
+
+2004-12-21  Piet van Oostrum  <piet@cs.uu.nl>
+
+       * fileio.c (Fread_file_name): Delete duplicates in
+       file-name-history when history_delete_duplicates is true.
+
+2004-12-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_do_list_fonts): Fix memory leak.
+
+2004-12-20  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.c (re_match_2_internal) <symend, wordend>:
+       Fix calls to UPDATE_SYNTAX_TABLE_FORWARD.
+
+2004-12-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (endif, x_font_name_to_mac_font_name):
+       Use maccentraleurroman instead of maccentraleuropean
+       (mac_c_string_match, mac_do_list_fonts): Speed up font search by
+       quickly finding a specific font without needing regexps.
+
+2004-12-15  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * syssignal.h: Declare main_thread.
+       (SIGNAL_THREAD_CHECK): New macro.
+
+       * keyboard.c (input_available_signal): Move thread checking code
+       to macro SIGNAL_THREAD_CHECK and call that macro.
+       (interrupt_signal): Call SIGNAL_THREAD_CHECK.
+
+       * alloc.c (uninterrupt_malloc): Move main_thread to emacs.c.
+
+       * emacs.c: Define main_thread.
+       (main): Initialize main_thread.
+       (handle_USR1_signal, handle_USR2_signal, fatal_error_signal)
+       (memory_warning_signal): Call SIGNAL_THREAD_CHECK.
+
+       * floatfns.c (float_error): Call SIGNAL_THREAD_CHECK.
+
+       * dispnew.c (window_change_signal): Call SIGNAL_THREAD_CHECK.
+
+       * sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK.
+
+       * process.c (send_process_trap, sigchld_handler):
+       Call SIGNAL_THREAD_CHECK.
+
+       * data.c (arith_error): Call SIGNAL_THREAD_CHECK.
+
+       * atimer.c (alarm_signal_handler): Call SIGNAL_THREAD_CHECK.
+
+       * xterm.c (xg_scroll_callback): Update XG_LAST_SB_DATA before
+       returning when xg_ignore_gtk_scrollbar is true.
+
+2004-12-14  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (read_char): Save and restore echo_string when
+       handling input method.
+
+2004-12-13  Richard M. Stallman  <rms@gnu.org>
+
+       * eval.c (syms_of_eval) <quit-flag>: Doc fix.
+
+       * keyboard.c (Vthrow_on_input): New variable.
+       (syms_of_keyboard): Defvar and initialize it.
+       (kbd_buffer_store_event_hold): Handle Vthrow_on_input.
+
+       * lisp.h (QUIT): Check for Vthrow_on_input.
+       (Vthrow_on_input): Declare it.
+
+2004-12-13  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (set_iterator_to_next): Reset stop_charpos after display
+       vector.
+
+2004-12-12  Richard M. Stallman  <rms@gnu.org>
+
+       * indent.c (Fvertical_motion): Call move_it_by_lines even if LINES = 0.
+
+       * minibuf.c (Fall_completions): Add var `zero' and use it in loop.
+       (Ftry_completion): Really use outer `zero'; eliminate inner one.
+
+2004-12-12  Kenichi Handa  <handa@m17n.org>
+
+       * term.c (encode_terminal_code): Fix previous change.
+
+2004-12-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.c (handle_async_input): Remove pthread mutex handling.
+       (input_available_signal): Move pthread thingy to !SYNC_INPUT branch.
+
+       * syntax.c (Fforward_word): Avoid non-idempotent side-effects
+       in macro arguments.
+
+       * minibuf.c (Ftry_completion, Fall_completions): Don't use
+       XFASTINT blindly.
+
+       * emacs.c (main, Fdump_emacs): Don't touch malloc hooks if SYNC_INPUT.
+
+2004-12-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * w32term.c (x_calc_absolute_position): Remove calculation of
+       difference between inner and outer window.  Don't subtract difference
+       for left and top calculations.
+
+       * xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff
+       for left and top calculations.  Remove call to x_real_positions.
+       [Bug report by Drew Adams in November.]
+       (x_check_expected_move): Do not set change_gravity to 1 when calling
+       x_set_offset.
+
+2004-12-08  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (get_next_display_element): Use `escape-glyph' for
+       control chars and escaped octal codes.
+       (Qescape_glyph): New variable.
+       (syms_of_xdisp): Initialize it.
+       (escape_glyph_face): New variable.
+       (redisplay_window): Initialize it.
+
+2004-12-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c (our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE)
+       (init_image): Use 1 rather than TRUE.  TRUE's not always defined.
+
+2004-12-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around
+       reset_malloc_hooks.
+
+       * keyboard.c (handle_async_input, input_available_signal):
+       Add ! defined (SYSTEM_MALLOC) around thread code.
+
+       * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC.
+
+2004-12-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (init_eval_once): Increase max_specpdl_size to 1000.
+
+       * config.in: Regenerate.
+
+2004-12-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (Fx_popup_menu): Correct documentation about position.
+       (xmenu_show): Do not call XTranslateCoordinates.  Adjust position
+       if not given by a mouse click to correspond with x-popup-menu
+       documentation.
+
+       * config.in: Regenerate.
+
+       * gtkutil.c: Include signal.h and syssignal.h.
+       (xg_get_file_name): Block and unblock __SIGRTMIN if defined.
+
+       * alloc.c: If HAVE_GTK_AND_PTHREAD, include pthread.h,
+       new variables main_thread and alloc_mutex,
+       define (UN)BLOCK_INPUT_ALLOC to use alloc_mutex to protect
+       emacs_blocked_* calls and only do (UN)BLOCK_INPUT in the main thread.
+       If not HAVE_GTK_AND_PTHREAD, (UN)BLOCK_INPUT_ALLOC is the same
+       as (UN)BLOCK_INPUT.
+       (emacs_blocked_free, emacs_blocked_malloc)
+       (emacs_blocked_realloc): Use (UN)BLOCK_INPUT_ALLOC.
+       (uninterrupt_malloc): Initialize main_thread and alloc_mutex.
+       (reset_malloc_hooks): New function.
+
+       * lisp.h: Declare reset_malloc_hooks.
+
+       * emacs.c (Fdump_emacs): Call reset_malloc_hooks.
+
+       * keyboard.c: Conditionally include pthread.h.
+       (handle_async_input, input_available_signalt): If not in the main
+       thread, block signal, send signal to main thread and return.
+
+       * gtkutil.c (xg_get_file_with_chooser): Handle local files only.
+       Set current folder in file chooser if default_filename is a directory.
+
+2004-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * regex.c (GET_UNSIGNED_NUMBER): Signal an error when reaching the end.
+       Remove redundant correctness checks.
+       (regex_compile): Fix up error codes for \{..\} expressions.
+
+2004-12-05  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.c (regex_compile): Fix end-of-pattern case for space.
+
+2004-12-03  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.h (cfstring_create_with_utf8_cstring): Add prototype.
+       * mac.c (cfstring_create_with_utf8_cstring): Add to prevent
+       crashes with invalid characters.
+       * macmenu.c (add_menu_item): Use it.
+       * image.c (image_load_quartz2d): Likewise.
+       * macfns.c (x_set_name, x_set_title): Likewise.
+       (Fx_file_dialog): Likewise.  Use constant CFRefs instead of
+       creating them each time for labels.
+
+2004-12-02  Richard M. Stallman  <rms@gnu.org>
+
+       * config.in (RE_TRANSLATE_P): If make_number is not a macro,
+       don't use it here.
+
+       * eval.c (Fcalled_interactively_p): Don't check INTERACTIVE.
+       (interactive_p): Skip Scalled_interactively_p frames
+       like Sinteractive_p frames.
+       (unwind_to_catch): Clear handling_signal.
+
+       * data.c (Fmake_variable_buffer_local): Doc fix.
+       (Fmake_local_variable): Doc fix.
+
+       * insdel.c (insert_from_string_before_markers)
+       (insert_from_string): Don't modify buffer on empty insertion.
+
+       * window.c (Fget_lru_window, Fget_largest_window): Doc fixes.
+
+2004-12-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macmenu.c (add_menu_item): Fallback on MacRoman if encoding
+       menu text as UTF8 fails.
+
+2004-12-01  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c: Add commentary for last change.
+       (XMALLOC_PUT_SIZE, XMALLOC_GET_SIZE): New macros to handle
+       sizeof(size_t) != 4.
+       (overrun_check_malloc, overrun_check_realloc, overrun_check_free):
+       Use them.  Also clear header and trailer of freed memory.
+       (GC_STRING_OVERRUN_COOKIE_SIZE): Rename from GC_STRING_EXTRA.
+       (string_overrun_cookie): Rename from string_overrun_pattern.
+       (GC_STRING_EXTRA): Define from GC_STRING_OVERRUN_COOKIE_SIZE.
+
+2004-12-01  Andreas Schwab  <schwab@suse.de>
+
+       * lisp.h: Declare string_to_multibyte.
+
+2004-12-01  Kenichi Handa  <handa@m17n.org>
+
+       * w32console.c (w32con_write_glyphs): Decide coding here.
+       Adjusted for the change of encode_terminal_code.
+
+       * term.c (encode_terminal_code): Don't make it "static".
+
+2004-11-30  Kenichi Handa  <handa@m17n.org>
+
+       * term.c (encode_terminal_buf, encode_terminal_bufsize): New variables.
+       (encode_terminal_code): Argument changed.  Encode all
+       characters at once, and return a pointer to the result of encoding.
+       (write_glyphs): Decide coding here.  Adjusted for the above change.
+       (insert_glyphs): Likewise.
+       (term_init): Initialize encode_terminal_bufsize to 0.
+
+       * coding.c (Vcode_conversion_workbuf_name): New variable.
+       (syms_of_coding): Initialize and staticpro it.
+       (set_conversion_work_buffer): New function.
+       (run_pre_post_conversion_on_str): Use it.
+       (run_pre_write_conversin_on_c_str): New function.
+
+       * coding.h (run_pre_write_conversin_on_c_str): Extern it.
+
+2004-11-30  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * keyboard.c: Don't undef SIGIO
+       * s/darwin.h (NO_SOCK_SIGIO): Define NO_SOCK_SIGIO on carbon
+       * Makefile.in (mac.o): Depend on blockinput.h and atimer.h.
+       (macfns.o): Don't depend on ccl.h.
+       * macfns.c (mac_frame_parm_handlers): Set handlers for
+       Qleft_fringe and Qright_fringe.
+       * macterm.c (mac_fill_rectangle_to_pixmap)
+       (mac_draw_rectangle_to_pixmap, mac_copy_area_to_pixmap)
+       (mac_copy_area_with_mask_to_pixmap, x_draw_image_foreground_1):
+       Put in #if 0.
+       (mac_scroll_area) [TARGET_API_MAC_CARBON]: Use ScrollWindowRect.
+       (x_flush) [TARGET_API_MAC_CARBON]: Don't traverse frames.
+       (XFlush) [TARGET_API_MAC_CARBON]: Define to an empty replacement.
+       (x_draw_glyph_string_background, x_draw_glyph_string_foreground)
+       [!MAC_OS8]: Added ifdef'd out code for os8.  Don't use
+       XDrawImageString.  Always draw background and foreground separately.
+       (x_draw_image_foreground): Use clipping instead of computing the
+       intersection rectangle.
+       (x_draw_image_glyph_string): Don't draw an image with mask to a
+       pixmap.
+       (x_redisplay_interface): Set flush_display_optional member to 0.
+       (XTread_socket): Correctly reset the TEConverter
+       object.
+
+2004-11-30  Kim F. Storm  <storm@cua.dk>
+
+       * lisp.h: New defines to enable buffer overrun checking.
+       (GC_CHECK_STRING_OVERRUN, GC_CHECK_STRING_FREE_LIST)
+       (XMALLOC_OVERRUN_CHECK, GC_CHECK_CONS_LIST): Add.
+
+       * alloc.c: Add more checks for buffer overruns.
+       (XMALLOC_OVERRUN_CHECK_SIZE, xmalloc_overrun_check_header)
+       xmalloc_overrun_check_trailer, overrun_check_malloc)
+       overrun_check_realloc, overrun_check_free): Add.
+       (GC_STRING_EXTRA, string_overrun_pattern): Add.
+       (check_sblock, allocate_string_data, compact_small_strings):
+       Set and check string_overrun_pattern if GC_CHECK_STRING_OVERRUN.
+       (check_cons_list): Condition on GC_CHECK_CONS_LIST.
+       (check_string_free_list): Add.
+       (allocate_string, sweep_strings): Call check_string_free_list.
+
+       * emacs.c (malloc_initialize_hook): Don't free malloc_state_ptr if
+       XMALLOC_OVERRUN_CHECK to avoid crash during load.
+
+2004-11-29  Kim F. Storm  <storm@cua.dk>
+
+       * fns.c (concat): Use SAFE_ALLOCA.
+
+2004-11-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * sysdep.c (emacs_write): Don't use QUIT.
+
+2004-11-29  Kenichi Handa  <handa@m17n.org>
+
+       * buffer.c (init_buffer): Set current_buffer->directory to a
+       multibyte string made by string_to_multibyte.
+
+       * emacs.c (init_cmdargs): Set unibyte strings in Vcommand_line_args.
+
+2004-11-27  Andreas Schwab  <schwab@suse.de>
+
+       * alloc.c (mark_stack): Call GC_MARK_SECONDARY_STACK if defined.
+
+       * s/gnu-linux.h: Enable no-op gcpros on ia64.
+       (GC_MARK_SECONDARY_STACK) [__ia64__]: Define.
+
+       * filelock.c (lock_file_1): Call get_boot_time early.
+       Increase buffer size.
+
+2004-11-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * lisp.h (DECL_ALIGN): Define non-trivially only if NO_DECL_ALIGN
+       is not defined.
+
+2004-11-27  Kim F. Storm  <storm@cua.dk>
+
+       * search.c (syms_of_search) <search-spaces-regexp>: Move 'doc:'
+       marker out of doc string.
+
+2004-11-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * s/darwin.h (POSIX_SIGNALS): Undo the removal of 2002-08-25,
+       which was not mentioned in the log.
+
+2004-11-26  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (update_window_fringes): Prefer truncation bitmaps over
+       angle bitmaps at top/bottom line.
+
+       * xdisp.c: Undo recent changes for restoring saved_face_id.  Instead,
+       set it when it->method is set to next_element_from_display_vector.
+       (setup_for_ellipsis): Add LEN argument.  Callers changed.
+       Set it->saved_face_id.
+       (get_next_display_element): Use loop instead of recursion.
+       Set it->saved_face_id.  Combine duplicate code for ctr chars.
+       (next_element_from_display_vector): Do not set it->saved_face_id.
+       (next_element_from_ellipsis): Use setup_for_ellipsis.
+
+2004-11-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * eval.c (Fdefvar): Declare pdl from last change as `volatile' to
+       prevent compiler warnings.
+
+2004-11-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.c (command_loop_1): Print a message describing the key
+       the user just pressed when this key has no binding.
+
+       * sysdep.c (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
+       (emacs_open, emacs_read, emacs_write): Check QUIT when interrupted.
+
+       * lread.c (readchar): Check QUIT when `getc' is interrupted.
+
+2004-11-24  Richard M. Stallman  <rms@gnu.org>
+
+       * coding.c (run_pre_post_conversion_on_str): Bind Qinhibit_read_only.
+
+       * buffer.c (syms_of_buffer) <indicate-buffer-boundaries>: Doc fix.
+
+2004-11-24  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (move_it_in_display_line_to, display_line):
+       Restore saved_face_id also when truncate-lines or hscrolled.
+
+2004-11-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_file_name): Rename use-old-gtk-file-dialog to
+       x-use-old-gtk-file-dialog.
+
+       * xfns.c: Define x_use_old_gtk_file_dialog.
+       (syms_of_xfns): Rename use-old-gtk-file-dialog to x-...  Move it
+       outside ifdef USE_GTK.
+
+2004-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * coding.h (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
+       Don't use XFASTINT blindly.
+
+       * config.in (RE_TRANSLATE_P): Don't use XFASTINT blindly.
+
+       * indent.c (skip_invisible): Avoid non-idempotent side-effects
+       in macro arguments.
+
+       * keymap.c (Flookup_key): Check INTEGERP before XINT.
+
+       * lread.c (oblookup): Don't use XFASTINT blindly.
+
+       * window.c (Fset_window_scroll_bars): Don't use XINT if it isn't int.
+       (decode_next_window_args, window_loop): Don't use XFASTINT blindly.
+
+2004-11-23  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P)
+       (MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P): Not if dpvec_index is zero.
+
+       * xfaces.c (lookup_named_face): Add signal_p arg.  Return -1 if
+       signal_p is zero and face name is unknown.
+       (Fx_list_fonts): Don't signal error in lookup_named_face.
+       (Fface_font): Signal error in lookup_named_face.
+       (ascii_face_of_lisp_face): Likewise.
+
+       * dispextern.h (lookup_named_face): Fix prototype.
+
+       * xdisp.c (handle_single_display_prop): Don't signal error in
+       lookup_named_face for unknown fringe face name.
+       (highlight_trailing_whitespace): Don't signal error in
+       lookup_named_face if trailing-whitespace face unknown.
+       (calc_line_height_property): Don't signal error in
+       lookup_named_face if specified face name is unknown.
+
+       * fringe.c (update_window_fringes): Show top row indicator if
+       window has header-line.  Don't show arrow at bob and eob
+       if the boundary indicators are not used.
+       (Fset_fringe_bitmap_face): Signal error in lookup_named_face.
+
+       * window.c (set_window_buffer): Clear display_error_modiff.
+
+2004-11-22  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (update_window_fringes): Provide sensible fall-back
+       value for non-nil indicate-buffer-boundaries setting.
+
+2004-11-22  Markus Rost  <rost@ias.edu>
+
+       * minibuf.c (Fminibuffer_complete_and_exit): Fix previous change.
+
+2004-11-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (Fdefvar): Warn when var is let-bound but globally void.
+
+2004-11-21  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (erase_phys_cursor): Clear hollow cursor inside TEXT_AREA.
+
+       * xterm.c (x_clip_to_row): Add area arg.  Callers changed.
+       (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA.
+
+       * w32term.c (w32_clip_to_row): Add area arg.  Callers changed.
+       (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA.
+
+       * macterm.c (x_clip_to_row): Add area arg.  Callers changed.
+       (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA.
+
+       * xdisp.c (move_it_in_display_line_to, display_line):
+       Restore saved_face_id if overflow-newline-into-fringe is enabled and
+       line is continued before or in middle of element from display vector.
+
+       * indent.c (Fvertical_motion): Fix last change.  Use another
+       method to detect if iterator moved too far ahead after reseat.
+
+       * xdisp.c (IT_EXPAND_MATRIX_WIDTH): New macro.  Do not
+       expand matrix width for overflow in zero-width area.
+       (append_glyph, append_composite_glyph, produce_image_glyph)
+       (append_stretch_glyph): Use it to avoid loop in redisplay.
+       (note_mode_line_or_margin_highlight): Don't let help-echo from
+       string override help-echo from image map.
+
+2004-11-20  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fns.c (Fyes_or_no_p): Call Fread_from_minibuffer with extra argument.
+       * callint.c (Fcall_interactively): Ditto.
+
+2004-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.c (Fminibuffer_complete_and_exit):
+       Fixup the case of the completed value, for case-indep completion.
+
+2004-11-20  Richard M. Stallman  <rms@gnu.org>
+
+       * lisp.h (Fread_from_minibuffer): Add arg in decl.
+
+       * minibuf.c (read_minibuf): New arg KEEP_ALL.  Callers changed.
+       (Fread_from_minibuffer): New arg KEEP_ALL.  Callers changed.
+
+       * search.c (Vsearch_spaces_regexp):
+       Rename from Vsearch_whitespace_regexp.  All uses changed.
+
+2004-11-20  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * eval.c (init_eval_once): Increase `max_specpdl_size' to 650.
+
+2004-11-19  Richard M. Stallman  <rms@gnu.org>
+
+       * search.c (Vsearch_whitespace_regexp): New variable.
+       (syms_of_search): Defvar it.
+       (compile_pattern_1): Call re_set_whitespace_regexp with it.
+       (search_buffer): No regexp is trivial if Vsearch_whitespace_regexp
+       is non-nil.
+       (struct regexp_cache): New element whitespace_regexp.
+       (syms_of_search): Initialize whitespace_regexp elements.
+       (compile_pattern): Compare whitespace_regexp elements.
+       (compile_pattern_1): Set whitespace_regexp elements.
+
+       * regex.c (regex_compile): Substitute whitespace_regexp
+       for spaces, if it is nonzero.
+       (whitespace_regexp): New variable.
+       (re_set_whitespace_regexp): New function.
+
+2004-11-19  Kim F. Storm  <storm@cua.dk>
+
+       * indent.c (Fvertical_motion): Fix last change.
+
+2004-11-18  Kim F. Storm  <storm@cua.dk>
+
+       * indent.c (Fvertical_motion): Undo 2004-11-16 change.
+       Instead, move back again if reseating moves too far ahead.
+
+2004-11-17  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * xdisp.c (message3): Call clear_message.
+
+2004-11-17  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (erase_phys_cursor): Adjust cursor row visible height.
+
+2004-11-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_file_name): Typo in HAVE_GTK_FILE_SELECTION_NEW.
+
+       * xmenu.c (x_menu_in_use): Remove.
+       (x_menu_set_in_use): Also set popup_activated_flag.
+
+       * xfns.c (Fx_file_dialog): Call popup_activated instead of
+       x_menu_in_use.  Call x_menu_set_in_use in Motif version also.
+
+       * xterm.h (x_menu_in_use): Remove.
+
+2004-11-16  Richard M. Stallman  <rms@gnu.org>
+
+       * keymap.c (Fmap_keymap): New arg SORT-FIRST.
+       Use map-keymap-internal to implement that.
+
+       * indent.c (Fvertical_motion): In batch mode, use vmotion directly.
+
+2004-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (get_glyph_string_clip_rect, init_glyph_string): Check it's
+       a window before using XWINDOW.
+
+       * window.c (make_window, Fselect_window, make_dummy_parent)
+       (save_window_save):
+       * frame.c (make_frame):
+       * fns.c (concat): Avoid side-effects inside XSETFASTINT's arguments.
+
+       * lisp.h (NILP): Use EQ rather than XFASTINT.
+
+2004-11-16  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (Fdefine_fringe_bitmap): Always set 'h'.  Simplify.
+
+       * indent.c (Fvertical_motion): Fix last change.  Only reseat when
+       moving backwards.
+
+2004-11-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * dispextern.h: Extern reseat_at_previous_visible_line_start.
+
+2004-11-16  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (display_mode_element): Fix previous change (calculate
+       end position of substring to display correctly).
+
+2004-11-16  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (Fposn_at_point): Remove extra */ after doc string.
+       Reported by Andrew M. Scott.
+
+2004-11-15  Kim F. Storm  <storm@cua.dk>
+
+       * fns.c (Fsafe_plist_get): New defun.
+       (syms_of_fns): Defsubr it.
+
+       * lisp.h (Fsafe_plist_get): Add EXFUN.
+
+       * xdisp.c (store_mode_line_string, produce_stretch_glyph):
+       Use Fsafe_plist_get.
+       (note_mode_line_or_margin_highlight, note_mouse_highlight):
+       Fix image map element parsing.  Use Fsafe_plist_get.
+
+2004-11-15  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (get_next_display_element): Fix previous change.
+
+2004-11-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * window.c (shrink_windows): Handle special case of one window left
+       when trying to shrink the final reminder.  Grow windows if
+       total_removed is less than total_shrink.
+
+       * xmenu.c (pop_down_menu): Remove global variable current_menu,
+       extract pointer from arg with XSAVE_VALUE.
+       (create_and_show_popup_menu, create_and_show_dialog, xmenu_show):
+       Construct arg to record_unwind_protect with make_save_value.
+
+2004-11-13  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (reseat_at_previous_visible_line_start): No longer static.
+       (get_next_display_element): Fix previous change to apply only to \n.
+
+       * indent.c (Fvertical_motion): Scan to PT from start of line to
+       make iterator consistent.
+
+       * minibuf.c (syms_of_minibuf) <completion-ignore-case>: Doc fix.
+
+2004-11-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (pop_down_file_dialog): Add BLOCK_INPUT.
+
+       * xfns.c (Fx_file_dialog): Call x_menu_in_use and x_menu_set_in_use.
+       Record unwind with clean_up_file_dialog.
+
+       * xterm.h (x_menu_in_use, x_menu_set_in_use, x_menu_wait_for_event):
+       Declare.
+
+       * xmenu.c (x_menu_in_use, x_menu_set_in_use): New functions.
+
+2004-11-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_file_sel_ok, xg_file_sel_cancel)
+       (xg_file_sel_destroy): Remove.
+       (xg_file_response_cb, pop_down_file_dialog)
+       (xg_get_file_name_from_chooser, xg_get_file_name_from_selector):
+       New functions.
+       (xg_get_file_with_chooser, xg_get_file_with_selection):
+       Take new arg func, set it to xg_get_file_name_from_chooser/selector.
+       Move common code to xg_get_file_name.  Return widget created.
+       (xg_get_file_name): Set name, transient for, modal and destroy
+       with parent here.  Connect response signal to xg_file_response_cb,
+       connect delete-event to gtk_true.  Record pop_down_file_dialog
+       for unwind.  Do event loop and call x_menu_wait_for_event in loop.
+       (xg_create_widget): Make dialogs modal.
+
+       * xmenu.c (unuse_menu_items, pop_down_menu): Arg is of type
+       Lisp_Object.
+       (popup_get_selection): Move unwind protect ...
+       (create_and_show_popup_menu, create_and_show_dialog): ... to here.
+       Move destroy of widget to pop_down_menu.
+       (popup_widget_loop): Move unwind protect ...
+       (create_and_show_popup_menu, create_and_show_dialog): ... to here.
+       Move destroy of widget to pop_down_menu.
+       (pop_down_menu): BLOCK_INPUT and destroy widget/window.
+       (xmenu_show): Record unwind pop_down_menu.  Move XMenuDestroy,
+       x_mouse_leave and grabbed = 0 to pop_down_menu.
+
+2004-11-13  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (make_cursor_line_fully_visible_p): New variable.
+       (syms_of_xdisp): DEFVAR_BOOL it.
+       (make_cursor_line_fully_visible, try_cursor_movement)
+       (try_window_id): Use it.
+
+2004-11-12  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (struct glyph_row): New member extra_line_spacing.
+       (struct it): New member max_extra_line_spacing.
+       (MR_PARTIALLY_VISIBLE, MR_PARTIALLY_VISIBLE_AT_TOP)
+       (MR_PARTIALLY_VISIBLE_AT_BOTTOM): New helper macros.
+       (MATRIX_ROW_PARTIALLY_VISIBLE_P): Fix to return false if invisible
+       part of last line is only extra line spacing (so the text on the
+       line is fully visible).  Use helper macros.
+       Add W arg (to use them).  All callers changed.
+       (MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P)
+       (MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P): Use helper macros.
+
+       * window.c (window_scroll_pixel_based, Frecenter):
+       Use move_it_vertically_backward directly.
+       (Frecenter): Fix calculation of new start pos for negative arg.
+       Before, the new start pos was sometimes chosen too far back, so
+       the last line became only partially visible, and thus would be
+       either only semi-visible or automatically scrolled to the middle
+       of the window by redisplay.
+
+       * xdisp.c (init_iterator): Clear it.max_extra_line_spacing.
+       (move_it_vertically_backward): Don't recure to move further back.
+       (move_it_vertically): Remove superfluous condition.
+       (move_it_by_lines): Clear last_height when moved 0 lines.
+       (resize_mini_window): Use it.max_extra_line_spacing.
+       (display_tool_bar_line): Clear row->extra_line_spacing.
+       (try_scrolling): Use move_it_vertically_backward directly.
+       (redisplay_window): Likewise.
+       (compute_line_metrics): Set row->extra_line_spacing.
+       (display_line, display_string): Likewise.
+       (x_produce_glyphs): Update it->max_extra_line_spacing.
+
+       * xmenu.c (pop_down_menu): Return nil.
+
+2004-11-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (x_menu_wait_for_event): New function.
+       (popup_get_selection, popup_widget_loop): Call x_menu_wait_for_event
+       to handle timers.
+       (popup_widget_loop): Add argument do_timers.
+       (create_and_show_popup_menu, create_and_show_dialog): Pass 1 for
+       do_timers to popup_widget_loop.
+       (xmenu_show): Call XMenuActivateSetWaitFunction so that
+       x_menu_wait_for_event is called by XMenuActivate.
+       (create_and_show_popup_menu): Pass 1 for do_timers to
+       popup_get_selection.
+       (pop_down_menu): New function.
+       (popup_get_selection, popup_widget_loop): Unwind protect to
+       pop_down_menu.
+       (popup_widget_loop): Add argument widget.
+       (create_and_show_popup_menu, create_and_show_dialog): Pass new
+       argument widget to popup_widget_loop.
+
+2004-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (Fkeymap_prompt): Accept symbol keymaps.
+
+2004-11-09  Kim F. Storm  <storm@cua.dk>
+
+       * xselect.c: Include <sys/types.h> and <unistd.h> (for getpid).
+       Fix various comments referring to XEvents instead of input events.
+       (x_queue_event): Fix format strings.
+       (x_stop_queuing_selection_requests): Likewise.
+
+       * xdisp.c (produce_image_glyph): Remove unused variable 'face_ascent'.
+       (pint2hrstr): Add extra braces to silence compiler.
+
+       * print.c (print_object): Fix format string.
+
+       * lread.c (read1): Fix next_char matching.
+
+       * lisp.h (Fdelete): Add EXFUN.
+       (replace_range_2): Add prototype.
+
+       * keyboard.c (read_avail_input): Remove unused variable 'discard'.
+
+       * intervals.h (NULL_INTERVAL_P): Add separate version when
+       ENABLE_CHECKING is not defined to silence compiler.
+       (compare_string_intervals): Add prototype.
+
+       * fringe.c (destroy_fringe_bitmap): Fix return type.
+       (Ffringe_bitmaps_at_pos): Remove unused var 'old_buffer'.
+
+       * emacs.c (Fdump_emacs): Fix format string.
+
+       * doc.c: Include <ctype.h>.
+       (Fsubstitute_command_keys): Remove unused variable 'firstkey'.
+
+       * data.c (store_symval_forwarding): Remove unused variables.
+
+       * callint.c (Fcall_interactively): Remove unused variable 'funcar'.
+
+2004-11-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * Makefile.in (stamp-oldxmenu): If HAVE_GTK, don't add dependencies
+       to ${OLDXMENU}.
+
+2004-11-09  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fmake_network_process): Remove kludge for interrupted
+       connects on BSD.  If connect is interrupted, just close socket and
+       start over rather than sleeping and retry with same socket.
+
+2004-11-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * .cvsignore: Add buildobj.lst.
+
+       * doc.c: New variable Vbuild_files.
+       (Fsnarf_documentation): If Vbuild_files is nil, populate it with
+       file names from buildobj.lst.  Only attach docstrings from files
+       that are in Vbuild_files.
+       (syms_of_doc): Defvar Vbuild_files.
+
+       * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o
+       and w32*.o.
+       (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked.
+       (mostlyclean): Rm buildobj.lst.
+
+       * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs
+       is linked.
+
+2004-11-09  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (update_window_fringes): Update fringe bitmaps if
+       cur and row ends_at_zv_p differs.  If bitmaps of a row is updated,
+       also update previous row to get rid of misc. artifacts.
+
+2004-11-08  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (fast_find_position): Fix start pos if header line present.
+       (note_mouse_highlight): Clear mouse face if we move out of text area.
+
+2004-11-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * editfns.c: Move #include "systime.h" before <sys/resource.h>.
+       Don't include <sys/time.h> explicitly.
+       Include <stdio.h> unconditionally, not just on MacOS.
+
+2004-11-08  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (fontset_pattern_regexp): Cancel my previous change;
+       don't pay attention to '\' before '*'.
+       (fontset_pattern_regexp): Change the meaning of the second arg.
+       (Fnew_fontset): Call fs_query_fontset, not Fquery_fontset.
+       (check_fontset_name): Try NAME as literal at first, and if it
+       failes, try NAME as pattern.
+
+2004-11-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * emacs.c (Fdump_emacs): Only output warning on GNU/Linux.
+
+2004-11-07  Andreas Schwab  <schwab@suse.de>
+
+       * lisp.h (Fmsdos_downcase_filename): Declare.
+       * dired.c (Fmsdos_downcase_filename): Don't declare here.
+       * fileio.c: Likewise.
+
+2004-11-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * dosfns.c (Fdos_memget, Fdos_memput): Use integer variable offs in
+       comparisons with integers instead of Lisp_Object address.
+       (Fmsdos_set_keyboard): Declare argument allkeys.
+
+       * msdos.c (IT_set_frame_parameters): Use EQ, not ==, for Lisp_Object:s.
+
+       * dired.c (Fmsdos_downcase_filename): Declare extern on MSDOS to avoid
+       int/Lisp_Object mixup.
+
+       * fileio.c: Ditto.
+
+2004-11-06  Steven Tamm  <steventamm@mac.com>
+
+       * editfns.c: Need to include sys/time.h before resource.h on darwin.
+
+2004-11-06  Richard M. Stallman  <rms@gnu.org>
+
+       * callint.c (Fcall_interactively): Avoid reusing EVENT for other data.
+
+       * xfaces.c (merge_named_face): GCPRO the face_name in the
+       named_merge_point struct that we make.
+       (merge_face_heights): Eliminate GCPRO arg.  All callers changed.
+
+       * keyboard.c (command_loop_1): Change Vtransient_mark_mode
+       before deciding whether to inactivate mark.
+
+2004-11-06  Lars Brinkhoff  <lars@nocrew.org>
+
+       * config.in: Regenerate (add HAVE_GETRUSAGE).
+       * editfns.c (Fget_internal_run_time): New function.
+       (syms_of_data): Defsubr it.
+       * fns.c (sxhash): As far as possible, merge calculation of
+       hash code for symbols and strings.
+
+2004-11-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * frame.c (syms_of_frame): Fix the example in the doc string.
+
+2004-11-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * eval.c (Feval): Remove check for INPUT_BLOCKED_P.
+
+       * xmenu.c (popup_get_selection, create_and_show_popup_menu)
+       (create_and_show_dialog): Revert change from 2004-10-31.
+
+2004-11-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * macros.c (syms_of_macros) <defining-kbd-macro>: Doc fix.
+
+2004-11-05  Kim F. Storm  <storm@cua.dk>
+
+       * print.c (print_object): Print Lisp_Misc_Save_Value objects.
+
+       * fileio.c (Ffile_modes): Doc fix.
+       (auto_save_1): Check for Ffile_modes nil value.
+
+2004-11-05  Kim F. Storm  <storm@cua.dk>
+
+       * xselect.c (struct selection_event_queue, selection_queue)
+       (x_queue_selection_requests, x_queue_event)
+       (x_start_queuing_selection_requests)
+       (x_stop_queuing_selection_requests): Add new queue for selection
+       input events to replace previous XEvent queue in xterm.c.
+       (queue_selection_requests_unwind): Adapt to new queue.
+       (x_reply_selection_request): Adapt to new queue.
+       Unexpect wait_object in case of x errors (memory leak).
+       (x_handle_selection_request, x_handle_selection_clear): Make static.
+       (x_handle_selection_event): New function.  May queue selection events.
+       (wait_for_property_change_unwind): Use save_value instead of cons.
+       Clear property_change_reply_object.
+       (wait_for_property_change): Abort if already waiting.
+       Use save_value instead of cons for unwind data.
+       (x_handle_property_notify): Skip events already arrived, but don't
+       free them, as "arrived" field is checked by wait_for_property_change,
+       and it will be freed by unwind or explicit unexpect_property_change.
+       (x_get_foreign_selection): Add to new queue.
+       (receive_incremental_selection): Don't unexpect wait_object when done
+       as it has already been freed by previous wait_for_property_change.
+
+       * xterm.h (x_start_queuing_selection_requests)
+       (x_stop_queuing_selection_requests, x_handle_selection_request)
+       (x_handle_selection_clear): Remove prototypes.
+       (x_handle_selection_event): Add prototype.
+
+       * xterm.c (handle_one_xevent): Don't queue X selection events
+       here, it may be too late if we start queuing after we have already
+       stored some selection events into the kbd buffer.
+       (struct selection_event_queue, queue, x_queue_selection_requests)
+       (x_queue_event, x_unqueue_events, x_start_queuing_selection_requests)
+       (x_stop_queuing_selection_requests): Remove/move to xselect.c.
+       (x_catch_errors_unwind): Block input around final XSync.
+
+       * keyboard.h (kbd_buffer_unget_event): Add prototype.
+
+       * keyboard.c (kbd_buffer_store_event_hold): Remove obsolete code.
+       (kbd_buffer_unget_event): New function.
+       (kbd_buffer_get_event, swallow_events): Combine SELECTION events
+       and use x_handle_selection_event.
+       (mark_kboards): Don't mark x and y of SELECTION_CLEAR_EVENT.
+
+2004-11-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xselect.c (TRACE3): New debug macro.
+       (x_reply_selection_request): Use it.
+       (receive_incremental_selection): In call to TRACE0, the name of
+       a symbol is in xname.
+
+2004-11-05  Kim F. Storm  <storm@cua.dk>
+
+       * fontset.c (fontset_pattern_regexp): Use unsigned char.
+
+2004-11-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * fileio.c (Fnext_read_file_uses_dialog_p): New function.
+
+       * gtkutil.h (use_old_gtk_file_dialog): Declare.
+
+       * gtkutil.c: Make use_old_gtk_file_dialog non-static.
+       (xg_initialize): Move DEFVAR_BOOL for use_old_gtk_file_dialog ...
+       * xfns.c (syms_of_xfns): ... to here.
+
+       * gtkutil.c (xg_get_file_with_chooser): Expand DEFAULT_FILENAME if
+       it doesn't start with /.
+
+2004-11-04  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (fontset_pattern_regexp): If '*' is preceded by '\',
+       treat it as a literal character.
+
+2004-11-03  Kim F. Storm  <storm@cua.dk>
+
+       * .gdbinit (ppt): New function.
+
+2004-11-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_window_to_scroll_bar): Only call
+       xg_get_scroll_id_for_window if toolkit scroll bars are used.
+
+       * gtkutil.c (xg_get_file_with_chooser): Use GTK_STOCK_OK instead
+       of save.
+
+2004-11-02  Andreas Schwab  <schwab@suse.de>
+
+       * window.c (Fscroll_right): Fix last change.
+
+2004-11-02  Kim F. Storm  <storm@cua.dk>
+
+       * Makefile.in (callproc.o): Depend on blockinput.h, atimer.h, systime.h.
+
+2004-11-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * callproc.c (Fcall_process): Block input around vfork.
+
+2004-11-02  Kim F. Storm  <storm@cua.dk>
+
+       * eval.c (Fcalled_interactively_p): Rename from Fcall_interactive_p.
+       (syms_of_eval): Defsubr it.
+
+2004-11-02  Richard M. Stallman  <rms@gnu.org>
+
+       * insdel.c (replace_range_2): New function.
+
+       * casefiddle.c (casify_region): Handle changes in byte-length
+       using replace_range_2.
+
+       * emacs.c (USAGE3): Delete --horizontal-scroll-bars, -hb.
+
+       * xdisp.c (back_to_previous_visible_line_start):
+       Subtract 1 from pos when checking previous newline for invisibility.
+
+       * window.c (window_scroll_pixel_based): Update preserve_y
+       for header line if any.
+       (Fscroll_left, Fscroll_right): Don't call interactive_p;
+       use a new second argument instead.
+
+       * eval.c (Fcall_interactive_p): New function.
+       (interactive_p): Don't test INTERACTIVE here.
+       (Finteractive_p): Doc fix.
+
+       * eval.c (Feval): Abort if INPUT_BLOCKED_P.
+
+2004-11-02  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
+
+       * w32fns.c (w32_font_match): Use fast_string_match_ignore_case for
+       comparing font names.
+
+2004-11-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
+       Fx_file_dialog if only directories should be read.
+
+       * lisp.h: Fx_file_dialog takes 5 parameters.
+
+       * xfns.c (Fx_file_dialog): Both Motif and GTK version:
+       Add parameter only_dir_p.
+       In Motif version, don't put DEFAULT_FILENAME in filter part of the
+       dialog, just text field part.  Do not add DEFAULT_FILENAME
+       to list of files if it isn't there.
+       In GTK version, pass only_dir_p parameter to xg_get_file_name.
+
+       * macfns.c (Fx_file_dialog): Add parameter only_dir_p.
+       Check only_dir_p instead of comparing prompt to "Dired".  When using
+       a save dialog, add option kNavDontConfirmReplacement, change title
+       to "Enter name", change text for save button to "Ok".
+
+       * w32fns.c (Fx_file_dialog): Add parameter only_dir_p.
+       Check only_dir_p instead of comparing prompt to "Dired".
+
+       * gtkutil.c (xg_get_file_with_chooser, xg_get_file_with_selection):
+       New functions, only defined ifdef HAVE_GTK_FILE_CHOOSER_DIALOG_NEW
+       and HAVE_GTK_FILE_SELECTION_NEW respectively.
+       (xg_get_file_name): Add parameter only_dir_p.
+       Call xg_get_file_with_chooser or xg_get_file_with_selection
+       depending on HAVE_GTK_FILE* and the value of use_old_gtk_file_dialog.
+       (xg_initialize): New DEFVAR_BOOL use_old_gtk_file_dialog.
+
+       * gtkutil.h (xg_get_file_name): Add parameter only_dir_p.
+
+       * config.in: Rebuild (added HAVE_GTK_FILE_*).
+
+2004-11-01  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (connect_wait_mask, num_pending_connects):
+       Only declare and use them if NON_BLOCKING_CONNECT is defined.
+       (init_process): Initialize them if NON_BLOCKING_CONNECT defined.
+       (IF_NON_BLOCKING_CONNECT): New helper macro.
+       (wait_reading_process_output): Only declare and use local vars
+       Connecting and check_connect when NON_BLOCKING_CONNECT is defined.
+
+2004-11-01  Andy Petrusenco  <Igrek@star-sw.com>  (tiny change)
+
+       * w32term.c (x_scroll_run): Delete region objects after use.
+
+2004-10-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c: Add prototypes for forward function declarations.
+       (popup_get_selection): Remove parameter do_timers, remove call to
+       timer_check.
+       (create_and_show_popup_menu, create_and_show_dialog):
+       Remove parameter do_timers from call to popup_get_selection.
+
+       * xdisp.c (update_tool_bar): Pass a copy of f->tool_bar_items to
+       tool_bar_items and assign the result to f->tool_bar_items if
+       not equal.  Move BLOCK/UNBLOCK_INPUT from around call to
+       tool_bar_items to assignment of result.
+
+       * atimer.c (alarm_signal_handler): Do not call set_alarm if
+       pending_atimers is non-zero.
+
+2004-10-31  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (margin_glyphs_to_reserve): Don't use ncols_scale_factor.
+
+2004-10-28  Will  <will@glozer.net>
+
+       * macterm.c: Allow user to assign key modifiers to the Mac Option
+       key via a 'mac-option-modifier' variable.
+
+2004-10-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xselect.c (Vx_lost_selection_functions, Vx_sent_selection_functions):
+       Rename from Vx_lost_selection_hooks and Vx_sent_selection_hooks.
+       (x_handle_selection_request, x_handle_selection_clear)
+       (x_clear_frame_selections, syms_of_xselect): Adjust accordingly.
+
+2004-10-28  Richard M. Stallman  <rms@gnu.org>
+
+       * w32fns.c (Fx_server_vendor, Fx_server_version): Doc fixes.
+
+       * xfns.c (Fx_server_vendor, Fx_server_version): Doc fixes.
+
+2004-10-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.c (scan_sexps_forward): Give precedence to a 2-char
+       comment-starter over a 1-char one.
+
+2004-10-27  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (get_next_display_element): In mode lines,
+       treat newline and tab like other control characters.
+
+       * editfns.c (Fmessage): Doc fix.
+
+       * indent.c (vmotion): When moving up, check the newline before.
+       Make prevline an int, not a Lisp_Object.
+
+2004-10-27  Kim F. Storm  <storm@cua.dk>
+
+       * editfns.c (Fformat): Allocate discarded table with SAFE_ALLOCA.
+       Only allocate info and discarded tables once.
+
+       * lisp.h (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
+       (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Increment it when malloc is used.
+       (SAFE_FREE): Test it to determine if we need to unwind to free.
+       Remove size arg.  All users changed.
+       (SAFE_FREE_LISP): Remove.  All users changed to use SAFE_FREE.
+
+2004-10-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c: Put empty line between comment and function body.
+       (xg_destroy_widgets): Rename from remove_from_container.
+       Just destroy all widgets in list.  Argument wcont removed.
+       (xg_update_menubar, xg_update_submenu): Call xg_destroy_widgets
+       instead of remove_from_container.
+       (xg_display_close, xg_create_tool_bar, update_frame_tool_bar)
+       (free_frame_tool_bar): Add comment.
+
+       * xfns.c (xic_create_xfontset): Check that FRAME_XIC_BASE_FONTNAME
+       is not NULL before strcmp.
+
+2004-10-26  Kim F. Storm  <storm@cua.dk>
+
+       * callint.c (Fcall_interactively): Add 'U' code to get the
+       up-event discarded by a previous 'k' or 'K' argument.
+
+2004-10-26  David Kastrup  <dak@gnu.org>
+
+       * buffer.c (syms_of_buffer): Fix a few typos.
+
+2004-10-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xsmfns.c: Put empty line between comment and function body.
+       Use two spaces before comment end.
+
+2004-10-25  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (fontset_pattern_regexp): Optimize for the case that
+       PATTERN is full XLFD.
+
+2004-10-24  Kenichi Handa  <handa@m17n.org>
+
+       * regex.h (enum reg_errcode_t): New value REG_ERANGEX.
+
+       * regex.c (re_error_msgid): Add an entry for REG_ERANGEX.
+       (regex_compile): Return REG_ERANGEX if appropriate.
+
+2004-10-22  Kenichi Handa  <handa@m17n.org>
+
+       * editfns.c (Ftranslate_region_internal): New function.
+       (syms_of_editfns): Defsubr it.
+
+2004-10-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (xic_create_xfontset): Initialize missing_list to NULL.
+
+2004-10-21  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
+
+       * xterm.h (x_output): New member `xic_base_fontname'.
+       (FRAME_XIC_BASE_FONTNAME): New macro.
+       (xic_free_xfontset): Declare.
+
+       * xfns.c (xic_create_xfontset): Share fontsets between frames
+       based on base_fontname.
+       (xic_free_xfontset): New function.
+       (free_frame_xic): Use it.
+       (xic_set_xfontset): Ditto.
+
+       * xterm.c (xim_destroy_callback): Ditto.
+
+2004-10-20  B. Anyos  <banyos@freemail.hu>  (tiny change)
+
+       * w32term.c (x_draw_glyph_string): Use overline_color for overlines.
+
+2004-10-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h (XSync): If USE_GTK, define XSync as process_all and then
+       XSync.
+
+       * emacs.c (my_heap_start, heap_bss_diff, MAX_HEAP_BSS_DIFF):
+       New variables and constant.
+       (main): Calculate heap_bss_diff.  If we are dumping and the
+       heap_bss_diff is greater than MAX_HEAP_BSS_DIFF, set PER_LINUX32
+       and exec ourself again.
+       (Fdump_emacs): If heap_bss_diff is greater than MAX_HEAP_BSS_DIFF
+       print a warning.
+
+       * lastfile.c: Make my_endbss and my_endbss_static available on all
+       platforms.
+
+       * Makefile.in (RUN_TEMACS): Remove @SETARCH@.
+       * config.in (HAVE_PERSONALITY_LINUX32): Regenerate.
+
+2004-10-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * data.c (Flocal_variable_if_set_p): Doc fix.
+
+2004-10-19  Jason Rumney  <jasonr@gnu.org>
+
+       * w32.c (init_environment): Set emacs_dir correctly when running
+       emacs from the build directory.
+
+2004-10-19  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fdelete_and_extract_region):
+       If region is empty, return null string.
+
+2004-10-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.h (xg_update_scrollbar_pos): Remove arguments real_left
+       and canon_width.
+       (xg_frame_cleared): Remove.
+
+       * gtkutil.c (xg_frame_cleared, xg_fixed_handle_expose)
+       (xg_find_top_left_in_fixed): Remove.
+       (xg_create_scroll_bar): Put an event box widget between
+       the scroll bar widget and the edit widget.
+       (xg_show_scroll_bar): Show the parent widget (the event box).
+       (xg_remove_scroll_bar): Destroy parent (the event box) also.
+       (xg_update_scrollbar_pos): Remove arguments real_left and canon_width.
+       Move the parent (the event box) widget inside the fixed widget.
+       Move window clear to xterm.c.
+
+       * gtkutil.h (xg_frame_cleared): Remove.
+
+       * xterm.c (x_clear_frame): Remove call to xg_frame_cleared
+       (x_scroll_bar_create, XTset_vertical_scroll_bar):
+       Remove arguments left and width to xg_update_scrollbar_pos.
+       (XTset_vertical_scroll_bar): Do x_clear_area for USE_GTK also.
+
+2004-10-19  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (display_mode_element): Fix display of wide chars.
+
+2004-10-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_update_scrollbar_pos): Change XClearWindow to
+       gdk_window_clear and move gdk_window_process_all_updates after
+       clear so events are sent to the X server in correct order.
+
+2004-10-18  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (fs_load_font): Use fast_string_match_ignore_case for
+       comparing font names.
+       (fs_query_fontset): Use fast_string_match for comparing fontset names.
+       (list_fontsets): Likewise.
+
+       * search.c (fast_string_match_ignore_case): New function.
+
+       * lisp.h (fast_string_match_ignore_case): Extern it.
+
+2004-10-17  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (overlay_arrow_at_row): Return overlay string rather
+       than bitmap if there is not left fringe.
+       (get_overlay_arrow_glyph_row): Also used on windows system.
+       (display_line): Display overlay string if no left fringe.
+
+2004-10-16  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_font_match): Encode font name being matched.
+
+2004-10-16  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Fspecial_display_p): Doc fix.
+
+2004-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * doc.c (Fsubstitute_command_keys): Fix remap-handling.
+       Don't ignore menus, because where-is-internal already does it for us.
+
+2004-10-15  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Only update fringes and vertical
+       border on window frames.
+
+2004-10-14  Andreas Schwab  <schwab@suse.de>
+
+       * m/ia64.h (DATA_SEG_BITS): Don't define.
+
+2004-10-14  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.h: Include Xutil.h after keysym.h to work around bug
+       in some X versions.
+
+2004-10-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fns.c (map_char_table): Add missing gcpros.
+
+2004-10-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (get_keymap): An autoload form is not a keymap.
+
+       * textprop.c (syms_of_textprop): Make `syntax-table' nonsticky.
+
+2004-10-13  Kim F. Storm  <storm@cua.dk>
+
+       * callproc.c (Fcall_process): Simplify handling of display arg.
+       Resume `display_on_the_fly' once a coding system is determined.
+
+       * xdisp.c (redisplay_preserve_echo_area): Fix last change.
+
+2004-10-12  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_preserve_echo_area): Flush display in case
+       caller, such as call-process, is not going to poll for input.
+       (calc_line_height_property): Handle case where it->object is nil.
+
+       * xterm.c (x_redisplay_interface): Fix flush_display_optional.
+
+2004-10-12  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (get_next_display_element):
+       If unibyte_display_via_language_environment is zero, display 8-bit
+       chars in octal in unibyte buffer.
+
+2004-10-12  Kim F. Storm  <storm@cua.dk>
+
+       * doc.c (Fsubstitute_command_keys): Ignore remappings unless there
+       are no ordinary bindings.
+
+2004-10-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (syms_of_xfns): Defsubr x-file-dialog for GTK also.
+
+2004-10-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow.
+       (x_lower_frame): Add BLOCK_INPUT around SendBehind.
+       (make_mac_frame): Add BLOCK_INPUT around the making of a
+       terminal frame.
+       (mac_initialize): Add BLOCK_INPUT around carbon initialization.
+       * macgui.h (mktime): Use emacs_mktime.
+       * macfns.c (Fx_file_dialog): Add BLOCK_INPUT around more code.
+       Make a cancel file-open dialog be like C-g.
+       * mac.c (mktime): Use emacs_mktime.
+       (Fdo_applescript): Add BLOCK_INPUT around do_applescript.
+       (Fmac_paste_function): Add better error handling for carbon cut/paste.
+
+2004-10-10  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (timer_resume_idle): New function to resume idle
+       timer without resetting timers on the idle list.
+       (read_char): Use timer_resume_idle.  Remove local var last_idle_start.
+       (timer_start_idle, timer_stop_idle): Declare static.
+       (read_key_sequence): Use timer_resume_idle instead of timer_start_idle.
+
+       * keyboard.h (timer_start_idle, timer_stop_idle): Remove prototypes.
+
+2004-10-08  Steven Tamm  <steventamm@mac.com>
+
+       * config.in (HAVE_MALLOC_MALLOC_H): Regenerate.
+       * macterm.c (mac_check_for_quit_char): Remove warning for using
+       NULL where 0 should be used.
+       * unexmacosx.c: Use malloc/malloc.h on Tiger instead of
+       objc/malloc.h
+       * mac.c: Include time.h for Tiger compatibility.
+
+2004-10-07  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Fix flicker on vertical line between
+       windows.  Update vertical line after drawing window fringes, but
+       only if actually drawing any bitmaps--or there is no fringe.
+
+       * xterm.c (x_update_window_end): Likewise.
+       * macterm.c (x_update_window_end): Likewise.
+       * w32term.c (x_update_window_end): Likewise.
+
+       * fringe.c (draw_window_fringes): Return value now indicates if
+       any fringe bitmaps were redrawn (or there are no fringes).
+
+       * dispextern.h (draw_window_fringes): Update prototype.
+
+2004-10-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (mac_get_window_bounds): Add extern.
+       (x_real_positions): Use mac_get_window_bounds.
+
+       * macmenu.c (update_submenu_strings): Apply 2004-09-07 change for
+       xmenu.c (YAILOM).
+
+       * macterm.c [!MAC_OSX]: Include Windows.h.
+       (front_emacs_window): Rename from mac_front_window.  All uses
+       changed.  Return the frontmost non-tooltip emacs window.
+       (mac_get_window_bounds): New function.
+       (x_calc_absolute_position): Use the difference of width and height
+       between the inner and outer window.
+       (x_set_offset): Specify window position by the coordinae of the
+       outer window.  Adjust the position if the title bar is completely
+       outside the screen.
+       (app_is_suspended, app_sleep_time): Remove unused variables.
+       (do_app_resume, do_app_suspend): Remove their contents because
+       window-activate/deactivate events will do the job.
+       (do_zoom_window): Remove unused variables.  Make compliant to the
+       standard way of zooming.  Set f->left_pos and f->top_pos.
+       (XTread_socket): Don't use argument `expected'.  Don't use
+       FrontWindow to determine the clicked window.  Exclude unprocessed
+       mouseUp cases in the early stage.  Add parentheses to fix operator
+       precedence.
+       (XTread_socket) [TARGET_API_MAC_CARBON]: Don't specify drag area.
+
+2004-10-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * config.in: Regenerate.
+
+       * Makefile.in (RUN_TEMACS): Check HAVE_RANDOM_HEAPSTART instead of
+       HAVE_EXECSHIELD.
+
+2004-10-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
+       a row if Alt or Meta has been found for that row.  Also stop scanning
+       for Keysyms for that row.
+
+2004-10-04  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons
+       to list.  Include overlay arrow bitmap in return value.
+
+       * xterm.c (XTset_vertical_scroll_bar): Improve handling of scroll
+       bars with fractional column width.  If scroll bar separates two
+       windows, move it towards the window it belongs to.  Only update
+       the padding area below the scroll bar widget when necessary,
+       i.e. when scroll bar widget is created, moved, or resized.
+
+       * xdisp.c (define_frame_cursor1): Do not change frame cursor
+       while tracking/dragging mouse.
+       (x_draw_vertical_border): Do not draw line if frame has scroll bars.
+
+       * window.c (coordinates_in_window): Relax check for cursor
+       on vertial border between mode lines.
+       (Fset_window_fringes): Do not allow negative widths.
+       (Fset_window_scroll_bars): Likewise.
+
+       * .gdbinit (pp): Shorthand for p ARG + pr.
+       (ff): New command: flush frame updates (X only).
+
+2004-10-03  Michael Albinus  <michael.albinus@gmx.de>
+
+       * fileio.c (auto_save_1) Call Ffile_modes for remote files.
+
+2004-09-30  Kenichi Handa  <handa@m17n.org>
+
+       * process.c (send_process): Free composition data.
+
+       * fileio.c (Finsert_file_contents): Free composition data.
+
+       * coding.c (code_convert_region): Don't skip ASCIIs if there are
+       compositions to encode.
+       (encode_coding_string): Likewise.  Free composition data.
+
+2004-09-30  Florian Weimer  <fw@deneb.enyo.de>
+
+       * coding.c (code_convert_region): Free composition data.
+
+2004-09-29  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c: Remove limit on number of bitmaps.
+       (fringe_bitmaps, fringe_faces): Change to pointers.
+       (max_fringe_bitmaps): New var.
+       (Fdefine_fringe_bitmap): Expand fringe_bitmaps and fringe_faces.
+       (init_fringe): Allocate fringe_bitmaps and fringe_faces.
+
+       * dispextern.h (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps).
+       (struct glyph_row): Reorder fringe_bitmap related fields.
+       (struct it): Likewise.
+
+       * w32term.c (fringe_bmp): Change to pointer.
+       (max_fringe_bmp): New var.
+       (w32_define_fringe_bitmap): Expand fringe_bmp.
+       (w32_draw_fringe_bitmap): Check max_fringe_bmp.
+       (w32_destroy_fringe_bitmap): Likewise.
+
+2004-09-29  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c: Simplify last change.
+       (lookup_fringe_bitmap): New function.
+       (valid_fringe_bitmap_p, resolve_fringe_bitmap): Remove.
+       (Fdestroy_fringe_bitmap): Use lookup_fringe_bitmap.
+       Keep standard bitmaps in Vfringe_bitmaps.
+       (Fdefine_fringe_bitmap): Use lookup_fringe_bitmap.
+       (Fset_fringe_bitmap_face): Likewise.
+
+       * dispextern.h (lookup_fringe_bitmap): Add prototype.
+       (valid_fringe_bitmap_p): Remove prototype.
+
+       * xdisp.c (handle_single_display_prop): Use lookup_fringe_bitmap.
+
+2004-09-29  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c (destroy_fringe_bitmap, init_fringe_bitmap)
+       (w32_init_fringe, w32_reset_fringes): Fix bootstrap (NULL rif).
+
+       * dispextern.h (valid_fringe_bitmap_p): Fix prototype.
+
+       * fringe.c (Vfringe_bitmaps): New variable.
+       (syms_of_fringe): DEFVAR_LISP it.
+       (valid_fringe_bitmap_p): Rename from valid_fringe_bitmap_id_p.
+       Change arg to Lisp_Object and fail if not an integer.
+       (get_fringe_bitmap_name, resolve_fringe_bitmap)
+       (destroy_fringe_bitmap): New functions.
+       (Fdestroy_fringe_bitmap): Change arg to bitmap symbol.
+       Use destroy_fringe_bitmap.  Remove symbol from Vfringe_bitmaps and
+       clear its fringe property.
+       (init_fringe_bitmap): Use destroy_fringe_bitmap instead of
+       Fdestroy_fringe_bitmap.
+       (Fdefine_fringe_bitmap): Add BITMAP arg specifying new or existing
+       bitmap symbol; remove WHICH arg.  Add symbol to Vfringe_bitmaps
+       and set fringe property.  Signal error if no free slots.
+       (Fset_fringe_bitmap_face): Change arg to bitmap symbol.
+       (Ffringe_bitmaps_at_pos): Return bitmap symbols instead of numbers.
+
+       * xdisp.c (handle_single_display_prop): Fringe bitmaps are now
+       symbols with a fringe property.
+
+2004-09-27  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (syms_of_buffer) <indicate-buffer-boundaries>:
+       Doc fix.  Format may now be a symbol or alist, not a cons.
+
+       * fringe.c (update_window_fringes): Handle new formats of
+       indicate-buffer-boundaries (symbol or alist).  No longer
+       allow a simple cons.
+       (Ffringe_bitmaps_at_pos): Use nil value for no bitmap.
+
+2004-09-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * config.in: Rebuild.
+
+2004-09-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * config.in: Rebuild.
+
+       * Makefile.in: Run setarch i386 ./temacs if exec-shield is present.
+
+2004-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xterm.c (x_term_init): Work around a bug in some X servers.
+
+2004-09-18  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (syms_of_buffer) <default-major-mode>: Doc fix.
+
+       * xdisp.c (try_window_reusing_current_matrix):
+       Handle the case where we reach the old displayed text,
+       out of sync with the old line boundary.
+
+2004-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (Finsert_file_contents): Fix case of replacement in a
+       narrowed buffer.
+
+2004-09-14  Kim F. Storm  <storm@cua.dk>
+
+       * puresize.h (PURESIZE_RATIO): Define based on BITS_PER_EMACS_INT.
+
+       * xfaces.c (Qface_no_inherit): New var.
+       (syms_of_xfaces): Intern and staticpro it.
+       (Finternal_make_lisp_face, Finternal_set_lisp_face_attribute)
+       (Finternal_copy_lisp_face, update_face_from_frame_parameter):
+       Don't increment face_change_count when face has non-nil
+       face-no-inherit property.
+
+2004-09-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * bytecode.c (BYTE_CODE_QUIT): Add missing AFTER_POTENTIAL_GC.
+       (Fbyte_code): Remove dead code after `wrong_type_argument'.
+
+       * alloc.c (Fgarbage_collect): Mark keyboards, gtk data, and specpdl
+       before doing the mark_stack_check_gcpros since they're not on the stack.
+
+2004-09-12  Kim F. Storm  <storm@cua.dk>
+
+       * editfns.c (Fformat): Handle format strings with multiple text
+       properties.  Reverse text property list from the format string,
+       so the positions are in increasing order.
+
+2004-09-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xselect.c (x_reply_selection_request): XSync and UNBLOCK before
+       x_uncatch_errors so that possible protocol errors are delivered.
+
+2004-09-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (msdos.o): Depend on buffer.h, commands.h, and
+       blockinput.h.
+       (dosfns.o): Depend on blockinput.h, window.h, dispextern.h,
+       charset.h, and coding.h
+       (w16select.o): Depend on buffer.h, charset.h, coding.h, and composite.h.
+       (term.o): Depend on window.h and keymap.h.
+       (abbrev.o): Depend on syntax.h.
+       (callint.o): Depend on keymap.h.
+       (casefiddle.o): Depend on charset.h and keymap.h.
+       (category.o): Depend on keymap.h.
+       (coding.o): Depend on dispextern.h.
+       (cmds.o): Depend on keyboard.h and keymap.h.
+       (dispnew.o): Depend on indent.h and intervals.h.
+       (doc.o): Depend on keymap.h.
+       (editfns.o): Depend on frame.h.
+       (emacs.o): Depend on dispextern.h.
+       (fileio.o): Don't depend on ccl.h.
+       (filelock.o): Depend on charset.h and coding.h.
+       (frame.o): Depend on w32term.h and macterm.h.
+       (insdel.o): Depend on region-cache.h.
+       (keyboard.o): Depend on keymap.h, w32term.h, and macterm.h.
+       (minibuf.o): Depend on $(INTERVALS_SRC) and keymap.h.
+       (search.o): Depend on $(INTERVALS_SRC).
+       (syntax.o): Depend on keymap.h, regex.h, and $(INTERVALS_SRC).
+       (window.o): Depend on keymap.h, blockinput.h, $(INTERVALS_SRC),
+       xterm.h, w32term.h, and macterm.h.
+       (xdisp.o): Depend on keyboard.h, $(INTERVALS_SRC), xterm.h,
+       w32term.h, and macterm.h.
+       (xfaces.o): Depend on keyboard.h, $(INTERVALS_SRC),
+       region-cache.h, xterm.h, w32term.h, and macterm.h.
+       (bytecode.o): Depend on dispextern.h, frame.h, and xterm.h.
+       (data.o): Depend on frame.h.
+       (fns.o): Depend on keymap.h, xterm.h, and blockinput.h.
+       (print.o): Depend on termchar.h and $(INTERVALS_SRC).
+       (lread.o): Depend on $(INTERVALS_SRC), termhooks.h, and coding.h.
+       (intervals.o): Depend on keymap.h.
+
+       * msdos.c (msdos_set_cursor_shape, IT_display_cursor):
+       Add debugging print-out to termscript.
+
+2004-09-09  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (decode_mode_spec): Use current buffer for most purposes.
+
+2004-09-08  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Fset_window_buffer): Doc fix.
+
+       * xdisp.c (Fformat_mode_line): New arg BUFFER says which buffer to use.
+
+2004-09-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * minibuf.c (history_delete_duplicates): New variable.
+       (read_minibuf): Use it.
+       (syms_of_minibuf): Create the corresponding lisp variable.
+
+2004-09-08  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (set_cursor_from_row): Also look at 'cursor' property in
+       overlay just before point.
+
+2004-09-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffer.h (struct buffer): Add auto_save_file_format field.
+       * buffer.c (reset_buffer, init_buffer_once):
+       Handle auto_save_file_format field.
+       (syms_of_buffer): Add DEFVAR_PER_BUFFER for
+       `buffer-auto-save-file-format'.
+       * fileio.c: Delete declaration for removed Vauto_save_file_format.
+       (build_annotations): Adapt to replacement of
+       `auto-save-file-format' with the new buffer-local variable
+       `buffer-auto-save-file-format'.
+       (syms_of_fileio): Delete DEFVAR_LISP for auto-save-file-format.
+
+2004-09-07  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.h (AppendMenuW_Proc): Move declaration from w32menu.c.
+
+       * w32fns.c (w32_wnd_proc) <WM_MEASUREITEM, WM_DRAWITEM>:
+       Handle Unicode menu titles.
+
+2004-09-07  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (set_cursor_from_row): Fix last change.  Only use 'cursor'
+       property from text property or overlay strings at point.
+
+2004-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xmenu.c (update_submenu_strings): YAILOM.
+       (set_frame_menubar): Make sure last_i is initialized.
+
+2004-09-03  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (_widget_value): Add lname and lkey.
+       (digest_single_submenu): Set lname and lkey in widget_value
+       instead of name and key.
+       (update_submenu_strings): New function.
+       (set_frame_menubar): Remove call to inhibit_garbage_collection,
+       call update_submenu_strings.
+
+       * w32menu.c (globals_of_w32menu): Check for Unicode API.
+       (digest_single_submenu, w32_menu_show): Encode menu strings as
+       UTF-8 if Unicode API is available.
+       (utf8to16): New function.
+       (add_menu_item): Use it when calling Unicode API.
+
+2004-09-03  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (set_cursor_from_row): Look for non-nil `cursor' property
+       in overlay or text-property strings; set cursor on corresponding
+       glyph rather than at end of the string.
+
+2004-09-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c (x_real_positions): Save the current window port and
+       set a new one before obtaining the global coordinate.
+       Use FRAME_MAC_WINDOW.
+       (x_set_name, x_set_title): Encode title to UTF8.
+       Use SetWindowTitleWithCFString.
+       (Fx_server_version): Get correct OS version.
+
+       * macmenu.c (add_menu_item): Remove unused variable `i'.
+       Don't let separator items destroy refence constants of other menu items.
+
+       * macterm.c (x_update_end): Move SetPortWindowPort to inside
+       BLOCK_INPUT.
+       (x_set_offset): Use FRAME_MAC_WINDOW.
+
+       * xdisp.c (note_mouse_highlight): Set the mouse pointer shape to
+       nontext_cursor if it is on a scroll bar.
+
+       * s/darwin.h (LIBS_CARBON): New define to specify libraries for
+       Carbon support.
+       (LD_SWITCH_SYSTEM_TEMACS): Don't link with unused libstdc++.
+       Use LIBS_CARBON.
+
+2004-09-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (x_set_name_internal): New function.  Check if we shall call
+       xfree before ENCODE_UTF_8.
+       (x_set_name, x_set_title): Call x_set_name_internal.
+
+2004-08-31  NAKAMURA Toshikazu  <nr-tkz@nifty.com>  (tiny change)
+
+       * w32fns.c (w32_load_font): If a BDF font is already loaded, do not
+       reload it.
+
+2004-08-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * macmenu.c (_widget_value): Add lname and lkey.
+       (single_submenu): Set lname and lkey in widget_value
+       instead of name and key.
+       (update_submenu_strings): New function.
+       (set_frame_menubar): Remove call to inhibit_garbage_collection,
+       call update_submenu_strings.
+
+       * xmenu.c (digest_single_submenu): Set lname and lkey in widget_value
+       instead of name and key.
+       (update_submenu_strings): New function.
+       (set_frame_menubar): Remove call to inhibit_garbage_collection,
+       call update_submenu_strings.
+
+       * gtkutil.h (_widget_value): Added lname and lkey.
+
+2004-08-30  Steven Tamm  <steventamm@mac.com>
+
+       * macmenu.c (mac_menu_show): Remove shadowing of menu variable
+       by using different names for inner loop variables.
+
+2004-08-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (set_frame_menubar): Reintroduce inhibit_garbage_collection
+       from 2002-07-15T00:01:34Z!raeburn@raeburn.org so that strings from ENCODE_UTF_8 isn't GC:ed before used.
+
+       * gtkutil.c (xg_create_frame_widgets): Compensate for tool bar when
+       tool bar items is 0.
+
+2004-08-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macmenu.c (ENCODE_MENU_STRING): Added to handle multibyte
+       strings in menu items.
+       (single_submenu): Use ENCODE_MENU_STRING
+       (mac_menu_show): Use ENCODE_MENU_STRING.  Reset grabbed because
+       button release isn't passed to event loop
+       (add_menu_item): Use SetMenuItemWithCFString.
+
+2004-08-26  Steven Tamm  <steventamm@mac.com>
+
+       * fileio.c (Fread_file_name): Call x_file_dialog on carbon on
+       tool-bar/menu click.
+       * macfns.c (Fx_file_dialog): Implement using NavServices.
+
+2004-08-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_catch_errors_unwind): Do not XSync if display has closed.
+
+       * xfns.c (x_window_to_frame, x_any_window_to_frame)
+       (x_non_menubar_window_to_frame, x_menubar_window_to_frame)
+       (x_top_window_to_frame): Return 0 if wdesc is None.
+
+2004-08-22  Richard M. Stallman  <rms@gnu.org>
+
+       * process.c (process_send_signal) [SIGNALS_VIA_CHARACTERS,
+       HAVE_TERMIOS]: If there's no char for this signal, drop through
+       and use system calls.
+
+       * bytecode.c (Fbyte_code) <unwind-protect>: Cannot GC.
+
+2004-08-20  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (wait_reading_process_output): Rename from
+       wait_reading_process_input.  All uses changed.
+       (wait_reading_process_output_1): Rename from
+       wait_reading_process_input_1.  All uses changed.
+
+       * dispnew.c (Fsleep_for): Remove obsolete code.
+
+2004-08-20  Kenichi Handa  <handa@m17n.org>
+
+       * syntax.c (skip_chars): Fix for unibyte case.
+
+2004-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.c (char_quoted): Mixup byte/char pos.
+       (back_comment): Fixup globals in all cases.
+
+2004-08-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (x_set_name, x_set_title): Encode title to UTF8 before
+       passing it to gtk_window_set_title.
+
+2004-08-19  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (wait_reading_process_input): Clean up.
+       Add wait_for_cell, wait_proc, and just_wait_proc args
+       to avoid overloading `read_kbd' and `do_display' args.
+       Change read_kbd arg to int.  All callers changed.
+
+       * process.c (process_send_signal): Use CDISABLE.
+
+       * sysdep.c (child_setup_tty, init_sys_modes): Use CDISABLE.
+
+2004-08-18  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Faccept_process_output): Add arg JUST-THIS-ONE;
+       forward to wait_reading_process_input via DO_DISPLAY arg.
+       (wait_reading_process_input): If DO_DISPLAY < 0 for a process
+       object, only process output from that process; also inhibit
+       running timers if DO_DISPLAY==-2.
+
+2004-08-17  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (process_send_signal): Fix last change--use
+       _POSIX_VDISABLE instead of CVDISABLE when available.
+
+2004-08-16  Richard M. Stallman  <rms@gnu.org>
+
+       * sysdep.c (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
+       Set VQUIT and VINTR chars to the standard ones if they are unset.
+       [AIX]: Don't do that here.  And don't force VINTR to standard
+       when SIGNALS_VIA_CHARACTERS.
+
+       * process.c (process_send_signal)
+       [SIGNALS_VIA_CHARACTERS, HAVE_TERMIOS]: Clean up.
+       Do nothing if the character is CVDISABLE.
+
+       * xfaces.c (merge_face_ref): Specifying `unspecified' is a no-op.
+
+       * intervals.c (move_if_not_intangible):
+       Force POSITION to be between BEGV and ZV.
+
+2004-08-14  John Paul Wallington  <jpw@gnu.org>
+
+       * buffer.c (Frestore_buffer_modified_p): Doc fix.
+
+       * fileio.c (Fread_file_name): Doc fix.
+
+       * minibuf.c (syms_of_minibuf) <completion-ignore-case>: Doc fix.
+
+2004-08-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keymap.c (Fmake_keymap, Fmap_keymap, Fwhere_is_internal): Doc fixes.
+
+2004-08-08  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keyboard.c: Declare Qdisabled_command_function instead of
+       Qdisabled_command_hook.
+       (Fcommand_execute): Use Qdisabled_command_function instead of
+       Qdisabled_command_hook.
+       (syms_of_keyboard): Ditto.
+
+2004-08-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keymap.c (Flocal_key_binding, Fglobal_key_binding)
+       (syms_of_keymap) <key-translation-map>: Doc fixes.
+
+2004-08-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (window_list_1): YAILOM.
+
+       * fileio.c (make_temp_name): Handle multibyte prefixes.
+
+2004-08-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keyboard.c (syms_of_keyboard) <overriding-terminal-local-map>:
+       Doc fix.
+
+2004-08-03  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (decode_coding_string): Adjust coding->consumed, and
+       etc. with shrinked_bytes.
+
+2004-08-03  Kim F. Storm  <storm@cua.dk>
+
+       * indent.c (compute_motion): Fix check for full width window
+       in non-window case.  Do not count left truncation glyph on
+       window systems.
+
+2004-08-02  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * data.c (Finteractive_form): Doc fix.
+
+2004-08-02  Kim F. Storm  <storm@cua.dk>
+
+       * indent.c (compute_motion): Use actual window width if WIDTH is -1,
+       properly accounting for continuation glyph on non-window systems.
+       (Fcompute_motion): Use actual window width if WIDTH is nil, and
+       actual window width/height if TOPOS is nil, properly accounting for
+       continuation glyphs on non-window systems, and optional header lines.
+       (vmotion): Let compute_motion calculate actual window width.
+
+       * window.c (window_scroll_line_based): Let compute_motion
+       calculate actual window width.
+
+2004-08-02  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (read_process_output): Use whole read buffer.
+       Don't trigger adaptive read buffering on errors.
+
+2004-07-31  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keymap.c (Fset_keymap_parent, Fdefine_prefix_command): Doc fixes.
+
+       * keyboard.c (syms_of_keyboard) <disable-point-adjustment>: Doc fix.
+
+       * callint.c (Fcall_interactively): Doc fix.
+
+2004-07-30  Richard M. Stallman  <rms@gnu.org>
+
+       * abbrev.c (Fexpand_abbrev): Undo previous change.
+
+2004-07-30  Kim F. Storm  <storm@cua.dk>
+
+       * editfns.c (Fformat): Allocate extra (dummy) element in info.
+
+2004-07-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * eval.c (Fdefvar, Fdefconst): Doc fixes.
+
+2004-07-27  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (move_it_in_display_line_to): Check BUFFER_POS_REACHED_P after
+       we have ensured that the glyph fits on the current line (or returned
+       MOVE_LINE_CONTINUED otherwise).
+
+2004-07-26  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (move_it_in_display_line_to): If overflow-newline-into-fringe
+       is enabled, return MOVE_LINE_CONTINUED rather than MOVE_POS_MATCH_OR_ZV
+       if target position is at end of display line but char is not a newline.
+
+2004-07-25  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (coordinates_in_window): Return ON_SCROLL_BAR
+       instead of ON_VERTICAL_BORDER, when on scroll bar.
+       (Fcoordinates_in_window_p): Handle ON_SCROLL_BAR--return nil.
+
+       * dispextern.h (enum window_part): Add ON_SCROLL_BAR.
+
+       * window.c (Fcoordinates_in_window_p):
+       Take account of FRAME_INTERNAL_BORDER_WIDTH.
+
+       * alloc.c (check_cons_list): New function (contents commented out).
+
+2004-07-24  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * xfaces.c (Fcolor_supported_p): Doc fix.
+
+       * frame.c (Fselect_frame, Fset_frame_selected_window)
+       (Fframe_visible_p, Fraise_frame): Doc fixes.
+
+2004-07-24  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.h (not_single_kboard_state): Declare.
+
+       * fileio.c (Fwrite_region): Doc fix.
+
+       * window.c (Fwindow_at): Take account of FRAME_INTERNAL_BORDER_WIDTH.
+
+       * abbrev.c (Fexpand_abbrev): Run Qpre_abbrev_expand_hook
+       only when a real abbrev is present.
+
+       * xfns.c (x_icon_verify): New function.
+       (Fx_create_frame): Use it.
+
+2004-07-22  Barry Fishman  <barry_fishman@att.net>  (tiny change)
+
+       * s/gnu-linux.h: Use GC_MARK_STACK if __amd64__ is defined.
+
+2004-07-21  Kim F. Storm  <storm@cua.dk>
+
+       * window.h (struct glyph_matrix): New members nrows_scale_factor
+       and ncols_scale_factor.
+
+       * window.c (make_window): Initialize nrows_scale_factor and
+       ncols_scale_factor members.
+
+       * dispnew.c (margin_glyphs_to_reserve): Apply ncols_scale_factor.
+       (allocate_matrices_for_frame_redisplay): Fix left/right margin mix-up.
+       (required_matrix_height): Apply nrows_scale_factor.
+       (required_matrix_width): Apply ncols_scale_factor.
+
+       * xdisp.c (display_line): Increment nrows_scale_factor and set
+       fonts_changed_p if past last allocated row.
+       (append_glyph, append_composite_glyph, produce_image_glyph)
+       (append_stretch_glyph): Increment ncols_scale_factor and set
+       fonts_changed_p if current area is full.
+
+2004-07-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * widget.c (EmacsFrameDestroy): Don't abort if normal_gc is 0.
+
+2004-07-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * window.c (Fpos_visible_in_window_p, Fset_window_hscroll)
+       (Fwindow_inside_pixel_edges, Fwindow_end, Fset_window_point)
+       (Fset_window_start, Fscroll_up, Fscroll_down)
+       (Fother_window_for_scrolling, Fscroll_other_window)
+       (Fsave_window_excursion, Fset_window_vscroll)
+       (syms_of_window) <window-size-fixed>: Doc fixes.
+
+2004-07-19  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
+
+       * w32fns.c (Fx_file_dialog): Use ENCODE_FILE instead of
+       ENCODE_SYSTEM for filenames.
+
+2004-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (sys_select): Block input around call to
+       ReceiveNextEvent to prevent breakage.  Correctly handle
+       blocking on event queue only by calling ReceiveNextEvent
+       instead of select (since GUI events aren't on an fd).
+       (sys_read): Remove function
+       * sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON.
+
+2004-07-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * mac.c (sys_select): Redo sys_select to use alarm-based
+       polling instead of 1 sec timeouts (like solaris).
+
+       * macterm.c (x_make_frame_visible): Comment in polling on
+       frame creation.
+
+       * keyboard.c: Undef SIGIO on Carbon.
+
+       * atimer.c (alarm_signal_handler): Call alarm handlers after
+       scheduling.
+
+       * eval.c (Feval): Remove quit_char test.
+
+       * process.c (wait_reading_process_input): Remove clearing
+       stdin for select call on process input.
+
+2004-07-18  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * xdisp.c (syms_of_xdisp) <window-scroll-functions>: Correct
+       capitalization error in docstring.
+
+2004-07-17  Juanma Barranquero  <lektu@terra.es>
+
+       * keyboard.c (not_single_kboard_state): Do nothing unless
+       MULTI_KBOARD is defined.
+
+2004-07-17  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (coordinates_in_window): Inside the window but outside
+       its box to the L or R, return ON_VERTICAL_BORDER.
+       (window_list_1): Rotate the list to start with WINDOW.
+
+       * print.c (print_preprocess): Test for print_depth at limit
+       before entering in being_printed.
+
+       * keyboard.c (not_single_kboard_state): New function.
+       (stuff_buffered_input): Now no-op only if no SIGTSTP.
+
+       * frame.c (Fdelete_frame): If we're in single_bboard_state on
+       this kboard, and we delete its last frame, go to any_kboard_state.
+
+       * buffer.c (syms_of_buffer) <transient-mark-mode>: Doc fix.
+
+2004-07-15  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
+
+       * w32fns.c (Fx_file_dialog): Encode strings in system coding
+       system before passing them to OS functions for display.
+
+2004-07-15  David Kastrup  <dak@gnu.org>
+
+       * search.c (syms_of_search): Staticpro `saved_last_thing_searched'.
+       Apparently fixes an abort condition.
+
+2004-07-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fileio.c (Fvisited_file_modtime): Return a list of two integers,
+       instead of a cons.
+
+2004-07-14  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
+
+       * keyboard.c (echo_dash): Do nothing if there already is a dash
+       at the end of the echo string.
+
+2004-07-12  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (mark_object): Only look at Lisp_Misc_Save_Value
+       if GC_MARK_STACK.
+
+2004-07-10  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffer.c (Fswitch_to_buffer, Fpop_to_buffer): Doc fixes.
+
+       * window.c (Fwindow_buffer, Fother_window, Fget_lru_window)
+       (Fget_largest_window, Fget_buffer_window, Fdelete_windows_on)
+       (Freplace_buffer_in_windows, Fset_window_buffer)
+       (Fselect-window, Fdisplay-buffer, Fsplit_window): Doc fixes.
+       (syms_of_window): Expand docstring of `display-buffer-function'.
+
+2004-07-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * editfns.c (Ffloat_time, Fformat_time_string, Fdecode_time)
+       (Fcurrent_time_string, Fcurrent_time_zone): Mention in docstrings
+       that time values of the type (HIGH . LOW) are considered obsolete.
+
+2004-07-06  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keyboard.c (syms_of_keyboard): Fix `keyboard-translate-table'
+       docstring.
+
+       * fns.c (Fclear_string): Declare `len' before call to CHECK_STRING.
+
+2004-07-06  John Paul Wallington  <jpw@gnu.org>
+
+       * eval.c (Fdefmacro): Signal an error if NAME is not a symbol.
+
+       * fns.c (Fclear_string): Signal an error if STRING is not a string.
+
+2004-07-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * macterm.c (mac_initialize_display_info): Use CGGetActiveDisplayList
+       instead of CGMainDisplayID (only in OSX 10.2 and later).
+
+2004-07-04  John Paul Wallington  <jpw@gnu.org>
+
+       * fileio.c (read_file_name_completion_ignore_case): New variable.
+       (syms_of_fileio): Declare and initialise it.
+       (Fread_file_name): Bind `completion-ignore-case' to respect it.
+
+2004-07-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * msdos.c (dos_rawgetc): Use make_number to produce Lisp objects
+       for event.x and event.y.
+
+2004-07-01  Kenichi Handa  <handa@m17n.org>
+
+       * w32select.c (Fw32_set_clipboard_data): Update `nbytes' correctly
+       after getting a new string by pre-write-conversion.
+
+2004-06-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xterm.c (x_detect_focus_change): Remove unused var `nr_events'.
+       (x_calc_absolute_position): Remove unused var `child'.
+
+       * xfaces.c (x_supports_face_attributes_p)
+       (Fdisplay_supports_face_attributes_p): YAILOM.
+       (tty_supports_face_attributes_p): Remove unused var `i'.
+
+       * syntax.c (skip_chars): Remove unused labels fwd_unibyte_ok and
+       back_unibyte_ok.
+
+       * search.c (match_limit, Fmatch_data, Fset_match_data): YAILOM.
+
+       * fontset.c (Fset_fontset_font): Remove unused vars `family' and
+       `registry'.
+
+       * Makefile.in (${etc}DOC): Fix file name of make-docfile.
+
+2004-06-30  Andreas Schwab  <schwab@suse.de>
+
+       * image.c (CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
+       (Finit_image_library): Pass LIBRARIES through to
+       CHECK_LIB_AVAILABLE.  Declare parameters.  Doc fix.
+       (lookup_image_type): Pass Qnil as second argument to
+       Finit_image_library.
+
+       * lisp.h (Finit_image_library): Declare.
+
+2004-06-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (do_window_activate, do_window_deactivate): Remove.
+       (XTread_socket): Send mouse button events to the toolbox
+       dispatcher even when the mouse is grabbed.  Don't process window
+       activate events for non-Emacs windows.  Replace function calls to
+       do_window_activate and do_window_deactivate with their contents.
+       Reset mouse grabbing status when a window is deactivated.
+
+2004-06-29  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (mac_get_emulated_btn)
+       (mac_event_to_emacs_modifiers): Fix emulated mouse button
+       support to correctly mask out modifiers.
+
+2004-06-29  David Kastrup  <dak@gnu.org>
+
+       * search.c (Fset_match_data): Allow buffer before end of list
+       which can happen if set-match-data is using a pre-consed list.
+
+2004-06-28  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (XTread_socket): Correctly set the frame position
+       after the window is moved.
+
+2004-06-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_image_for_pixmap): Call g_object_unref on
+       gpix and gmask just before return to avoid memory leak.
+       (xg_get_image_for_pixmap): Add workaround for monochrome displays
+       so insensitive and activated icons look ok.
+
+2004-06-27  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (file_dialog_callback): Disable edit control if set
+       to directories only on CDN_INITDONE message.
+       (Fx_file_dialog): Default to directories only when prompt starts
+       with "Dired".
+
+2004-06-25  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (allocate_misc): Update total_free_markers.
+       (free_misc): New function.
+       (safe_alloca_unwind, free_marker): Use it.
+
+       * lisp.h (free_misc): Add prototype.
+
+       * fns.c (Fmapconcat, Fmapcar): Remove superfluous GCPROs.
+
+2004-06-24  Richard M. Stallman  <rms@gnu.org>
+
+       * emacs.c (Vsignal_USR1_hook, Vsignal_USR2_hook): Definitions deleted.
+       (syms_of_emacs): Lisp variables deleted.
+
+2004-06-23  David Kastrup  <dak@gnu.org>
+
+       * search.c (Freplace_match): Adjust the match-data more thoroughly
+       when replacing strings in the buffer.
+       (Fmatch_data): When INTEGERS is non-nil and the last match was in
+       a buffer, add the buffer as last element to the match data.
+       (Fset_match_data): If an additional element of the match-data is a
+       buffer, restore it to last_thing_searched.
+       (save_search_regs): Save last_thing_searched as part of the match data.
+       (restore_match_data): Restore it again.
+
+2004-06-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * keymap.c (Ftext_char_description): Doc fix.
+       * doc.c (Fsnarf_documentation): Doc fix.
+
+2004-06-22  Kim F. Storm  <storm@cua.dk>
+
+       * fns.c (Fmapcar, Fmapconcat): GCPRO the args array.
+
+       * lisp.h (struct Lisp_Save_Value): New member dogc.
+       (SAFE_ALLOCA_LISP): Change second arg to number of elements.
+       Set dogc member in Lisp_Save_Value object so it will be GC'ed.
+       (SAFE_FREE_LISP): New macro.
+
+       * alloc.c (safe_alloca_unwind): Clear dogc and pointer members.
+       (make_save_value): Init new dogc member.
+       (mark_object): Mark Lisp_Save_Value pointer array if dogc is set.
+
+       * fns.c (Fmapconcat, Fmapcar): Use new SAFE_ALLOCA_LISP and
+       SAFE_FREE_LISP macros.
+
+2004-06-22  Kim F. Storm  <storm@cua.dk>
+
+       * lisp.h (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects.
+       Temporarily inhibits GC if memory is xmalloc'ed, as the Lisp_Objects
+       in that memory area are unknown to GC.  Add comments.
+
+       * fns.c (Fmapconcat, Fmapcar): Use SAFE_ALLOCA_LISP.
+
+2004-06-21  Kim F. Storm  <storm@cua.dk>
+
+       * lisp.h (MAX_ALLOCA): Define here.
+       (safe_alloca_unwind): Add prototype.
+       (USE_SAFE_ALLOCA, SAFE_ALLOCA, SAFE_FREE): New macros.
+
+       * alloc.c (safe_alloca_unwind): New function.
+
+       * casefiddle.c (casify_object): Use SAFE_ALLOCA.
+
+       * charset.c (Fstring): Use SAFE_ALLOCA.
+
+       * coding.c (MAX_ALLOCA): Remove define.
+
+       * data.c (MAX_ALLOCA): Remove define.
+       (Faset): Use SAFE_ALLOCA.
+
+       * editfns.c (Fformat, Ftranspose_regions): Use SAFE_ALLOCA.
+
+       * fns.c (string_make_multibyte, string_to_multibyte)
+       (string_make_unibyte, Fmapconcat, Fmapcar): Use SAFE_ALLOCA.
+       (MAX_ALLOCA): Remove define.
+       (Fbase64_encode_region, Fbase64_encode_string)
+       (Fbase64_decode_region, Fbase64_decode_string): Use SAFE_ALLOCA.
+       (Fbase64_encode_region, Fbase64_encode_string): Fix potential
+       memory leak if encoding fails.
+
+       * xdisp.c (add_to_log): Use SAFE_ALLOCA.
+
+2004-06-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * print.c (Fwith_output_to_temp_buffer): Doc fix.
+
+2004-06-20  Richard M. Stallman  <rms@gnu.org>
+
+       * xfaces.c (Finternal_copy_lisp_face): Small cleanup; doc fix.
+
+       * search.c (match_limit): Cleaner err msg when no match data available.
+
+       * window.c (syms_of_window): Doc fix.
+
+       * keyboard.c (command_loop_1): Handle values `only' and `identity'
+       for Vtransient_mark_mode.
+
+       * buffer.c (syms_of_buffer): Doc fix.
+
+2004-06-21  David Kastrup  <dak@gnu.org>
+
+       * minibuf.c (Ftry_completion, Fall_completions): Do lazy binding
+       and unbinding of `case-fold-search' according to
+       `completion-ignore-case' around calls of string-match and
+       predicates, respectively.  Should give satisfactory performance
+       in all relevant cases.
+
+2004-06-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_draw_image_foreground_1): Subtract slice.x/y from
+       clip_x/y_origin.
+
+       * fns.c (string_to_multibyte): Use xmalloc/xfree instead of alloca.
+
+       * macfns.c (Fx_display_color_cells): Do not limit return value to 256.
+
+       * macterm.c (mac_initialize_display_info): Initialize n_planes correctly
+       on Mac OSX.
+
+2004-06-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffer.c (syms_of_buffer): Clarify `fill-column' docstring.
+
+2004-06-16  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (Vimage_types): Remove extern.
+
+2004-06-16  Miles Bader  <miles@gnu.org>
+
+       * image.c (lookup_image_type): Initialize image type if necessary.
+
+2004-06-15  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (try_cursor_movement): Exclude header line from scroll
+       margin at top of window.
+       (try_window_reusing_current_matrix): Calculate proper cursor position
+       after scrolling up with non-zero scroll margin, as the old cursor
+       position corresponds to value of PT before executing this command.
+       (try_window_id): Consider scroll margin at bottom of window too;
+       otherwise we fail to scroll when hl-line-mode is enabled.
+
+       * syntax.c (skip_chars): Only recognize [:class:] when it has the
+       proper format and class is a lower-case word.
+
+2004-06-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_get_image_for_pixmap): New function.
+       (xg_get_gdk_pixmap_and_mask): Remove.
+       (update_frame_tool_bar): Call xg_get_image_for_pixmap instead of
+       xg_get_gdk_pixmap_and_mask.
+
+       * xterm.h (struct x_display_info): Typo in comment fixed.
+
+2004-06-14  Juanma Barranquero  <lektu@terra.es>
+
+       * dispextern.h (Vimage_types): Make it conditional on
+       HAVE_WINDOW_SYSTEM.
+
+       * image.c (Vimage_types): Move from xdisp.c.
+       (Vimage_type_cache): New variable.
+       (define_image_type): New argument indicating whether an image
+       library was loaded; cache loaded status and return t on success,
+       nil otherwise.
+       (CACHE_IMAGE_TYPE, ADD_IMAGE_TYPE): New macros.
+       (w32_delayed_load): New function to load an image library from a
+       list of possible filenames.
+       (init_xpm_functions, init_png_functions, init_jpeg_functions)
+       (init_tiff_functions, init_gif_functions): Use `w32_delayed_load'.
+       (CHECK_LIB_AVAILABLE): Call `define_image_library' with new argument.
+       (Finit_image_library): New function, extracted from `init_image'.
+       Try to initialize an image library on demand and cache whether we
+       were successful or not.
+       (syms_of_image): Initialize `Vimage_types' and
+       `Vimage_type_cache'.  Add recognized image types to Vimage_types.
+       Export `init-image-library'.
+       (init_image): Remove initialization of all image types, except xbm
+       and pbm.
+
+       * xdisp.c (Vimage_types): Delete (moved to image.c).
+
+2004-06-14  Andreas Schwab  <schwab@suse.de>
+
+       * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
+       Avoid calling specbind when completion-regexp-list is empty.
+
+2004-06-13  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.h (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t)
+       (re_wctype, re_iswctype, re_wctype_to_bit):
+       Non-function definitions moved here from regex.c.
+
+       * regex.c (re_wctype, re_iswctype): Function defs longer static.
+       (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t)
+       (re_wctype, re_iswctype, re_wctype_to_bit):
+       Non-function definitions moved to regex.h.
+
+       * window.c (Fselect_window): Doc fix.
+
+       * syntax.c: Include regex.h.
+       (skip_chars): New arg HANDLE_ISO_CLASSES.  Callers changed.
+       If requested, make a list of classes, then check the scanned
+       chars for membership in them.
+       (in_classes): New function.
+       Doc fix.
+
+       * keyboard.c (cmd_error): Don't call any_kboard_state
+       if inside a recursive edit level.
+
+2004-06-13  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
+
+       * keyboard.c (command_loop): Call any_kboard_state before
+       command_loop_2 when at top level.
+
+2004-06-13  Andreas Schwab  <schwab@suse.de>
+
+       * print.c (print_object): Always use %ld for printing EMACS_INT.
+
+       * keyboard.c (cancel_hourglass_unwind): Return a value.
+       (modify_event_symbol): Always use %ld for printing EMACS_INT.
+       (Fexecute_extended_command): Likewise.
+
+       * syntax.h (SYNTAX_ENTRY_FOLLOW_PARENT): Rename local variable to
+       avoid clashes.
+       (SYNTAX): Likewise.
+       (SYNTAX_WITH_FLAGS): Likewise.
+       (SYNTAX_MATCH): Likewise.
+
+       * syntax.c (char_quoted): Avoid warning about undefined operation.
+       (find_defun_start): Likewise.
+       (scan_lists): Likewise.
+       (INC_FROM): Likewise.
+       (scan_sexps_forward): Likewise.
+
+       * image.c: Include <ctype.h>.
+
+       * xfaces.c (face_attr_equal_p): Declare parameters.
+
+2004-06-13  Kenichi Handa  <handa@m17n.org>
+
+       * ccl.c (CCL_READ_CHAR): If hit EOF, set REG to -1.
+
+2004-06-12  Matthew Mundell  <matt@mundell.ukfsn.org>
+
+       * eval.c (Fdefun): Signal an error if NAME is not a symbol.
+
+2004-06-12  Kenichi Handa  <handa@m17n.org>
+
+       * ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION): Save eof_ic in
+       ccl_prog_stack_struct and update it.
+       (CCL_INVALID_CMD): If CCL_DEBUG is defined, call ccl_debug_hook.
+       (CCL_READ_CHAR): Get instruction counter from eof_ic, not from
+       ccl->eof_ic on EOF.
+       (ccl_debug_hook): New function.
+       (struct ccl_prog_stack): New member eof_ic.
+       (ccl_driver): Handle EOF in subrountine call correctly.
+
+2004-06-11  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (encode_coding_string): Check CODING_FINISH_INTERRUPT.
+
+2004-06-11  Kim F. Storm  <storm@cua.dk>
+
+       * emacs.c (shut_down_emacs): Inhibit redisplay during shutdown.
+
+2004-06-11  Juanma Barranquero  <lektu@terra.es>
+
+       * keyboard.c (Fposn_at_point): Doc fix.
+
+2004-06-11  David Kastrup  <dak@gnu.org>
+
+       * search.c (match_limit): Don't flag an error if match-data
+       exceeding the allocated search_regs.num_regs gets requested, just
+       return Qnil.
+
+2004-06-08  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (push_named_merge_point): Return 0 when a cycle is detected.
+
+2004-06-07  Juanma Barranquero  <lektu@terra.es>
+
+       * editfns.c (Fuser_login_name, Ffloat_time, Fencode_time)
+       (Fcurrent_time_string, Fcurrent_time_zone)
+       (Finsert_buffer_substring, Ftranspose_regions): Doc fixes.
+
+2004-06-07  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (struct named_merge_point): New type.
+       (push_named_merge_point): New function.
+       (merge_named_face): New function.
+       (merge_face_ref, face_at_buffer_position, face_at_string_position):
+       Use `merge_named_face'.
+       (merge_face_inheritance): Function removed.
+       (merge_face_ref): Rename from `merge_face_vector_with_property'.
+       Add new `err_msgs' and `named_merge_points' args.  Return error
+       status.  Only print error messages if ERR_MSGS is true.  Don't try to
+       do :inherit attribute validation.
+       (merge_face_heights): Handle `unspecified' in both directions.
+       (merge_face_vectors): Rename `cycle_check' arg to `named_merge_points'.
+       Call `merge_face_ref' instead of `merge_face_inheritance'.
+       (Fdisplay_supports_face_attributes_p, Fface_attributes_as_vector)
+       (compute_char_face, face_at_buffer_position)
+       (face_at_string_position): Call `merge_face_ref' instead of
+       `merge_face_vector_with_property'.
+
+2004-06-07  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (find_safe_codings): Check NILP (safe_codings) only at
+       the necessary places.
+
+2004-06-07  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fdelete_process): Undo 2004-05-28 change.
+       Instead, call status_notify also for network process.
+       (status_message): Use process instead of status as arg.
+       Give messages "deleted" or "connection broken by remote peer" for
+       an exited network process.
+       (status_notify): Change call to status_message.
+       (read_process_output): Increase readmax to 4096.  Do not increase
+       buffer size for datagram channels (default is now large enough).
+
+2004-06-06  Steven Tamm  <tamm@Steven-Tamms-Computer.local>
+
+       * macfns.c (x_create_tip_frame): Fix Mac OS X 10.1 compilation
+       problem due to newly defined variable.
+
+2004-06-06  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (Fdisplay_supports_face_attributes_p): Give up
+       immediately if non-interactive or not initialized.
+
+2004-06-05  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (Fcompleting_read): Doc fix.
+
+2004-06-05  Andreas Schwab  <schwab@suse.de>
+
+       * macfns.c (x_create_tip_frame): Fix declaration after statement.
+
+2004-06-05  Juanma Barranquero  <lektu@terra.es>
+
+       * keymap.c (Fdescribe_vector): Fix docstring.
+       (Fkey_description, Fglobal_key_binding): Fix typo in docstring.
+
+2004-06-05  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (tty_supports_face_attributes_p): Make sure the specified
+       attributes have different values than the default face.
+
+2004-06-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * xfaces.c (x_supports_face_attributes_p): Make this function
+       conditional on HAVE_WINDOW_SYSTEM.
+       (Fdisplay_supports_face_attributes_p) [HAVE_WINDOW_SYSTEM]:
+       Don't call x_supports_face_attributes_p if it was not compiled in.
+
+2004-06-04  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (tty_supports_face_attributes_p): New function, mostly
+       from Ftty_supports_face_attributes_p.
+       (x_supports_face_attributes_p): New function.
+       (Ftty_supports_face_attributes_p): Function deleted.
+       (Fdisplay_supports_face_attributes_p): New function.
+       (syms_of_xfaces): Initialize Sdisplay_supports_face_attributes_p.
+       (face_attr_equal_p): New function.
+       (lface_equal_p): Use it.
+
+2004-06-03  Juanma Barranquero  <lektu@terra.es>
+
+       * w32fns.c (Fx_display_grayscale_p, Fw32_send_sys_command)
+       (Vw32_color_map): Fix typo in docstring.
+       (Fx_create_frame, Fw32_find_bdf_fonts, Fx_show_tip)
+       (Fw32_unregister_hot_key, Fw32_reconstruct_hot_key):
+       Make argument names match their use in docstring.
+
+2004-06-02  Juanma Barranquero  <lektu@terra.es>
+
+       Work around bugs/problems with MinGW builds of graphics libraries
+       called from MSVC builds of Emacs.
+
+       * image.c (lookup_image): Make pointer to img static.
+       (png_read_from_memory): Disable "global" optimization.
+
+2004-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (Fcondition_case): Fix usage.  Simplify.
+
+       * mem-limits.h (EXCEEDS_LISP_PTR) [USE_LSB_TAG]: Never true.
+
+2004-05-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macfns.c: Don't include ccl.h.
+       [MAC_OSX]: Don't include QuickTime/QuickTime.h.
+       [!MAC_OSX]: Don't include alloca.h, Windows.h, Gestalt.h, or
+       TextUtils.h.
+       (Fx_create_frame): Sync with xfns.c.  Initialize cursor descriptors.
+       (Fx_display_mm_height, Fx_display_mm_width): Calculate length from
+       display height/width.
+       (compute_tip_xy, Vx_max_tooltip_size): Declare.
+       (unwind_create_tip_frame, compute_tip_xy): New functions.
+       (x_create_tip_frame, Fx_show_tip, Fx_hide_tip): Sync with xfns.c.
+       (syms_of_macfns): Initialize Qcancel_timer, Vx_max_tooltip_size,
+       and last_show_tip_args.
+
+       * macgui.h [!MAC_OSX]: Include Gestalt.h.
+       (Cursor, No_Cursor): New defines.
+       [!TARGET_API_MAC_CARBON] (SetPortWindowPort): New compatibility macro.
+       [!TARGET_API_MAC_CARBON] (arrow_cursor): Declare.
+
+       * macmenu.c (mac_menu_show, mac_dialog): Use SetPortWindowPort.
+
+       * macterm.c: Don't include Gestalt.h.
+       (enum mouse_tracking_type, mouse_tracking_in_progress): Remove.
+       (XDrawLine, XClearArea, XClearWindow, mac_draw_bitmap)
+       (mac_set_clip_rectangle, mac_reset_clipping, XCreatePixmap)
+       (XFillRectangle, mac_draw_rectangle, mac_draw_string_common)
+       (mac_copy_area, mac_copy_area_with_mask, x_update_end)
+       (construct_mouse_click, XTmouse_position)
+       (x_scroll_bar_report_motion, x_calc_absolute_position)
+       (do_mouse_moved, do_zoom_window, mac_do_receive_drag)
+       (XTread_socket, make_mac_frame): Use SetPortWindowPort.
+       (note_mouse_movement): Clear the mouse face and reset the pointer
+       shape when the pointer goes outside the frame without grabbing.
+       (mac_front_window): New function.
+       (mac_window_to_frame): New macro.
+       (XTmouse_position, x_scroll_bar_report_motion, do_window_update)
+       (do_window_activate, do_window_deactivate, do_app_resume)
+       (do_app_suspend, do_mouse_moved, do_menu_choice, do_grow_window)
+       (do_zoom_window, mac_do_receive_drag, XTread_socket)
+       (mac_check_for_quit_char): Use mac_front_window and/or
+       mac_window_to_frame.
+       (x_scroll_bar_handle_click): Set `(PORTION . WHOLE)' part in a
+       scroll-bar click event.
+       (mac_define_frame_cursor): Change the pointer shape.
+       (x_free_frame_resources): Reset tip_window to NULL when it is
+       disposed of.
+       [!TARGET_API_MAC_CARBON] (arrow_cursor): New variable.
+       [!TARGET_API_MAC_CARBON] (do_init_managers): Initialize arrow_cursor.
+       (do_window_update): Don't do anything if the updated window is the
+       tooltip window.
+       (do_mouse_moved): Handle mouse movement events here (previously in
+       XTread_socket).  Clear the mouse face if
+       dpyinfo->mouse_face_hidden is set.
+       (do_os_event, do_events): Remove (now in XTread_socket).
+       (XTread_socket): Immediately return if interrupt_input_blocked.
+       Loop until all the events in the queue are processed.
+       Rearrange codes for mouse grabbing.  Add tooltip support.  Include the
+       contents of do_os_event and do_events.  Remove mouse movement
+       handling (now in do_mouse_moved).  Add the case where
+       Vmouse_highlight has an integer value.
+       (NewMacWindow): Remove.
+       (make_mac_frame): Do what NewMacWindow previously did.  Don't do
+       excess initializations.
+       (make_mac_terminal_frame): Previous initializations in
+       make_mac_frame are moved here.
+       (mac_initialize_display_info):
+       Initialize dpyinfo->mouse_face_overlay and dpyinfo->mouse_face_hidden.
+
+       * xdisp.c [MAC_OS] (No_Cursor): Remove variable.
+       (define_frame_cursor1): Don't treat HAVE_CARBON as a special case.
+
+2004-05-29  Richard M. Stallman  <rms@gnu.org>
+
+       * lisp.h (truncate_undo_list): Update decl.
+
+       * alloc.c (undo_outer_limit): New variable.
+       (syms_of_alloc): Defvar it.
+       (Fgarbage_collect): Pass undo_outer_limit to truncate_undo_list.
+
+       * undo.c (truncate_undo_list): New arg LIMITSIZE.
+
+       * alloc.c (lisp_align_malloc): Check for base == 0
+       regardless of HAVE_POSIX_MEMALIGN.
+       Clean up HAVE_POSIX_MEMALIGN handling of `err'.
+
+2004-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c: Undo Kim's recent changes and fix the same bug differently.
+       (marker_blocks_pending_free): Remove.
+       (Fgarbage_collect): Sweep after cleaning up undo-lists.
+       Mark the undo lists after claning them up.
+       Don't free block in marker_blocks_pending_free.
+       (mark_buffer): Don't mark undo_list.
+       (gc_sweep): Sweep hash-tables and strings first.
+       Do free marker blocks that are empty.
+
+2004-05-28  Jim Blandy  <jimb@redhat.com>
+
+       * regex.c (print_partial_compiled_pattern): Add missing 'break'
+       after 'case wordend'.  For symbeg and symend, print to stderr,
+       like the other cases.
+
+2004-05-28  Noah Friedman  <friedman@splode.com>
+
+       * process.c (Fdelete_process): Do not call remove_process.
+
+2004-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (struct backtrace): Remove.
+       (Fgarbage_collect): Use the new mark_backtrace.
+
+       * eval.c (mark_backtrace): New function.
+
+       * minibuf.c (run_exit_minibuf_hook): New function.
+       (read_minibuf_unwind): Don't run exit-minibuffer-hook any more.
+       (read_minibuf): Use separate unwind handler to run exit-minibuf-hook.
+
+2004-05-27  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (back_to_previous_visible_line_start): Skip backwards
+       over display properties, e.g. images, that replace buffer text.
+
+2004-05-25  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (marker_blocks_pending_free): New var.
+       (gc_sweep): Store free marker blocks on that list.
+       (Fgarbage_collect): Free them after undo-list cleanup.
+
+       * process.c (wait_reading_process_input): Check connect_wait_mask
+       before actually accepting connection in case it has already been
+       accepted due to recursion.
+
+2004-05-23  K\e,Aa\e(Broly L\e$,1 q\e(Brentey  <lorentey@elte.hu>
+
+       * coding.c (Fset_safe_terminal_coding_system_internal):
+       Set suppress_error in safe_terminal_coding, not terminal_coding.
+
+2004-05-22  Richard M. Stallman  <rms@gnu.org>
+
+       * alloc.c (Fmake_string): Doc fix.
+
+       * buffer.c (clone_per_buffer_values): Copy the alist of local vars,
+       and the alist pairs too.
+
+       * casefiddle.c (casify_object): Return OBJ unchanged if not real char.
+
+       * emacs.c (main): Update copyright year.
+
+       * fileio.c (Fread_file_name): Expand DIR if not absolute.
+
+       * insdel.c (del_range_2, replace_range): Don't write an anchor
+       if the gap is empty.
+
+       * xdisp.c (try_scrolling): If scroll-up-aggressively or
+       scroll-down-aggressively is small but positive, put point
+       near the screen edge.
+
+2004-05-22  Juanma Barranquero  <lektu@terra.es>
+
+       * keymap.c (Fdefine_key): Doc fix.
+
+2004-05-22  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (struct backtrace): Add debug_on_exit member.
+       (Fgarbage_collect): Clear out buffer undo_list markers after gc_sweep.
+       Identify those markers as Lisp_Misc_Free objects.  Clear car and cdr of
+       the removed cons cells.
+       (mark_object): Undo previous change - disallow Lisp_Misc_Free objects.
+       (gc_sweep): Clear cons_blocks before sweeping strings, so we don't have
+       any cons cells pointing to unallocated stings.
+       Do not lisp_free any marker blocks, as there may still be pointers
+       to them from buffer undo lists at this stage of GC.
+
+       * keyboard.c (struct backtrace): Add debug_on_exit member.
+       (Fcommand_execute): Clear it.
+
+2004-05-20  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * intervals.c (lookup_char_property): Do not prematurely return nil.
+
+2004-05-19  Jim Blandy  <jimb@redhat.com>
+
+       Add support for new '\_<' and '\_>' regexp operators, matching the
+       beginning and end of symbols.
+
+       * regex.c (enum syntaxcode): Add Ssymbol.
+       (init_syntax_once): Set the syntax for '_' to Ssymbol, not Sword.
+       (re_opcode_t): New opcodes `symbeg' and `symend'.
+       (print_partial_compiled_pattern): Print the new opcodes properly.
+       (regex_compile): Parse the new operators.
+       (analyse_first): Skip sym(beg|end) (they match only the empty string).
+       (mutually_exclusive_p): `symend' is mutually exclusive with \s_ and
+       \sw; `symbeg' is mutually exclusive with \S_ and \Sw.
+       (re_match_2_internal): Match symbeg and symend.
+
+       * search.c (trivial_regexp_p): \_ is no longer a trivial regexp.
+
+2004-05-19  Kim F. Storm  <storm@cua.dk>
+
+       * .gdbinit (xsymbol): Fix last change.
+
+2004-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * .gdbinit (xprintstr): New fun.
+       (xstring, xprintsym): Use it.
+
+       * w32proc.c (create_child): Use INTMASK.
+
+       * alloc.c (Fgarbage_collect): Do all the marking before flushing
+       unmarked elements of the undo list.
+
+2004-05-18  David Ponce  <david@dponce.com>
+
+       * print.c (print): Reset print_depth before to call print_object.
+
+2004-05-18  Jason Rumney  <jasonr@gnu.org>
+
+       * w32console.c: Prefix RIF functions with w32con_ to avoid
+       namespace clash with functions in term.c and w32term.c.
+
+       * w32menu.c (add_menu_item, w32_menu_display_help)
+       [USE_LISP_UNION_TYPE]: Cast from Lisp_Object using i member.
+
+       * w32term.h (display_x_get_resource, vga_stdcolor_name): Add prototype.
+
+2004-05-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * lisp.h (DECL_ALIGN): Remove restriction on MS-DOS systems.
+
+       * msdos.c (syms_of_msdos): Initialize dos-unsupported-char-glyph
+       with make_number.
+       (IT_write_glyphs): Extract glyph from dos-unsupported-char-glyph
+       with XINT.
+
+2004-05-18  Kim F. Storm  <storm@cua.dk>
+
+       * blockinput.h (INPUT_BLOCKED_P): New macros.
+
+       * keyboard.c (Frecursive_edit): Return immediately if input blocked.
+       (Ftop_level): Unblock input if blocked.
+
+       * buffer.h (GET_OVERLAYS_AT): New macro.
+       * msdos.c (IT_note_mouse_highlight): Use it.
+       * textprop.c (get_char_property_and_overlay): Use it.
+       * xdisp.c (next_overlay_change, note_mouse_highlight): Use it.
+       * xfaces.c (face_at_buffer_position): Use it.
+
+       * print.c (print_object): Increase buf size.
+
+2004-05-17  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (Fw32_register_hot_key, Fw32_unregister_hot_key)
+       (Fw32_toggle_lock_key) [USE_LISP_UNION_TYPE]: Cast from
+       Lisp_Object using i member.
+       (w32_quit_key): Rename from Vw32_quit_key, and make an int.
+       (syms_of_w32fns, globals_of_w32fns): Use Lisp_Object and int
+       consistently.
+
+       * w32proc.c (create_child): Use make_number instead of masking pid.
+
+       * w32fns.c (w32_color_map_lookup): Return a Lisp_Object.
+       (x_to_w32_charset, w32_to_x_charset, w32_to_all_x_charsets):
+       Use EQ to compare Lisp_Objects.
+       (w32_parse_hot_key): Use int for lisp_modifiers consistently.
+
+       * w32term.c (w32_num_mouse_buttons): Rename from
+       Vw32_num_mouse_buttons and make it an int.
+
+       * w32.c (init_environment): Use it.
+
+       * w32fns.c (w32_wnd_proc): Likewise.
+
+       * w32proc.c (w32_pipe_read_delay): Rename from
+       Vw32_pipe_read_delay and make it an int.
+
+       * w32.c (_sys_read_ahead): Use it.
+
+       * lisp.h (egetenv) [USE_CRT_DLL]: Remove condition.
+
+       * w32proc.c (create_child) [USE_LSB_TAG]: Don't try to mask pid.
+
+       * w32inevt.c (w32_console_mouse_position, do_mouse_event)
+       (key_event): Don't mix Lisp_Object and int.
+
+       * w32heap.c (init_heap) [USE_LSB_TAG]: Don't check heap location.
+
+       * keyboard.c (kbd_buffer_get_event): Don't use event->code and
+       modifiers in language change event.
+
+2004-05-17  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (mark_object): Ignore Lisp_Misc_Free objects.
+       Such objects may be freed markers which still exist on an undo list.
+
+2004-05-16  Juanma Barranquero  <lektu@terra.es>
+
+       * data.c (Fset_default): Make argument names match their use in
+       docstring.
+
+2004-05-15  Andreas Schwab  <schwab@suse.de>
+
+       * emacs.c (gdb_array_mark_flag): Define.
+       * .gdbinit: Mask off gdb_array_mark_flag from vector sizes.
+
+2004-05-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * lisp.h (DECL_ALIGN) [MSDOS]: Don't define DECL_ALIGN to use
+       __attribute__((__aligned__)), so that USE_LSB_TAG would not become
+       defined for the MS-DOS build.
+
+2004-05-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * w32fns.c (Fw32_define_rgb_color): Avoid XSET.
+
+2004-05-14  Kenichi Handa  <handa@m17n.org>
+
+       * ccl.c (Fccl_execute_on_string): Fix setting elements of STATUS.
+
+2004-05-14  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * lisp.h (Vx_resource_name, Vx_resource_class): Move from xfns.c
+       section to frame.c section.
+       (Fxw_display_color_p, Fx_file_dialog): Declare if
+       HAVE_WINDOW_SYSTEM defined.
+
+       * macfns.c (Fx_create_frame): Fix int/Lisp_Object mixup.
+
+       * macmenu.c (set_frame_menubar): Use NILP to test a lisp value.
+
+       * macterm.c (mac_get_emulated_btn, mac_event_to_emacs_modifiers)
+       (mac_get_mouse_btn): Use NILP and EQ to test/compare lisp values.
+       (XTread_socket): Fix int/Lisp_Object mixup.
+       (mac_check_for_quit_char): Fix pointer/Lisp_Object mixup.
+
+       * macterm.h (struct frame, struct face, struct image)
+       (display_x_get_resource, Fx_display_color_p)
+       (Fx_display_grayscale_p, Fx_display_planes, x_free_gcs):
+       Add prototypes.
+
+2004-05-14  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (wait_reading_process_input): Make reentrant.
+       Make Available and Connecting non-static.  Save and restore value
+       of waiting_for_user_input_p.
+
+2004-05-13  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (mark_kboards): Don't mark x and y members
+       that are overloaded in selection request events.
+
+2004-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (USE_LSB_TAG): Make it the default when it is known to work.
+
+2004-05-13  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * window.c (Fdisplay_buffer, Fsplit_window)
+       (split-height-threshold): Doc fix.
+
+2004-05-13  Juanma Barranquero  <lektu@terra.es>
+
+       * xfaces.c (Ftty_supports_face_attributes_p)
+       (Finternal_copy_lisp_face): Fix typo in docstring.
+       (Finternal_get_lisp_face_attribute): Fix docstring.
+
+2004-05-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (syms_of_xfns): Provide x-toolkit also for GTK.
+
+2004-05-11  Steven Tamm  <steventamm@mac.com>
+
+       * macfns.c (Fx_create_frame): Default to using tool-bar by
+       setting tool-bar-lines to 1 in default-frame-alist.
+
+2004-05-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * image.c (xpm_scan, xpm_make_color_table_v, xpm_put_color_table_v)
+       (xpm_get_color_table_v, xpm_make_color_table_h)
+       (xpm_put_color_table_h, xpm_get_color_table_h)
+       (xpm_str_to_color_key, xpm_load_image, xpm_load)
+       (syms_of_image): Support XPM on Carbon Emacs.  Does not
+       depend on libXpm, but only supports XPM version 3 without extensions.
+
+2004-05-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P
+       instead of FRAME_X_P.
+
+2004-05-11  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (read_process_output): Grow decoding_buf when needed;
+       this could cause a crash in allocate_string and compact_small_strings.
+
+2004-04-29  Jim Blandy  <jimb@redhat.com>
+
+       * regex.c (mutually_exclusive_p): In 'case wordbeg', compare op2
+       against proper opcode.
+
+2004-05-10  Juanma Barranquero  <lektu@terra.es>
+
+       * process.c (Fstart_process): Fix docstring.
+
+       * charset.c (Fget_unused_iso_final_char): Fix typos in docstring.
+       (Fchar_bytes, Fchar_width, Fstring_width, Fchar_direction)
+       (Fsplit_char, Fchar_charset): Make argument names match their use
+       in docstring.
+
+2004-05-10  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (print_preprocess): Use being_printed, loop_count and
+       halftail to detect overdeep nesting and cyclic cdr chains.
+
+2004-05-10  Andreas Schwab  <schwab@suse.de>
+
+       * lisp.h (Fmake_symbolic_link): Declare.
+
+       * fileio.c (Frename_file): Remove extra argument in call to
+       Fmake_symbolic_link.
+
+2004-05-10  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (calc_line_height_property): Use string position when
+       object is a string.
+
+2004-05-10  Kenichi Handa  <handa@m17n.org>
+
+       * print.c (temp_output_buffer_setup): Bind inhibit-read-only and
+       inhibit-modification-hooks to t temporarily before calling
+       Ferase_buffer.
+
+       * xfns.c (x_create_tip_frame): Bind inhibit-read-only and
+       inhibit-modification-hooks to t temporarily before calling
+       Ferase_buffer.
+
+       * w32fns.c (x_create_tip_frame): Bind inhibit-read-only and
+       inhibit-modification-hooks to t temporarily before calling
+       Ferase_buffer.
+
+       * fns.c (count_combining): Delete it.
+       (concat): Don't check combining bytes.
+
+2004-05-09  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (Vw32_ansi_code_page): New Lisp variable.
+       (globals_of_w32fns): Set it.
+
+2004-05-09  Piet van Oostrum  <piet@cs.uu.nl>
+
+       * data.c (Fquo): Simplify.
+
+2004-05-08  Peter Whaite  <emacs@whaite.ca>  (tiny change)
+
+       * data.c (Fquo): If any argument is float, do the computation in
+       floating point.
+
+2004-05-08  Juanma Barranquero  <lektu@terra.es>
+
+       * process.c (Fwaiting_for_user_input_p, Fmake_network_process)
+       (Fset_process_query_on_exit_flag, Vprocess_adaptive_read_buffering):
+       Fix spelling of Emacs on docstring.
+       (Fset_process_coding_system, Fprocess_coding_system)
+       (Fset_process_filter_multibyte, Fprocess_filter_multibyte_p):
+       Make argument names match their use in docstring.
+       (Fprocess_id, Fprocess_query_on_exit_flag, Finterrupt_process):
+       Fix docstring.
+
+       * editfns.c (Finsert_buffer_substring): Make argument names match their
+       use in docstring.
+
+       * syntax.c (Fmodify_syntax_entry): Fix docstring.
+
+2004-05-07  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (mac_check_for_quit_char): Adding BLOCK_INPUT
+       around call to ReceiveEvent to avoid certain crashes.
+
+2004-05-07  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (mac_draw_line_to_pixmap, XCreatePixmapFromBitmapData)
+       (mac_fill_rectangle_to_pixmap, mac_draw_rectangle_to_pixmap)
+       (mac_copy_area_to_pixmap, mac_copy_area_with_mask_to_pixmap):
+       Save/restore the current graphics port and device handle when
+       drawing into an offscreen graphics world.
+
+       * image.c [MAC_OS] (XPutPixel, XGetPixel, image_load_qt_1)
+       (gif_load): Likewise.
+
+2004-05-07  Juanma Barranquero  <lektu@terra.es>
+
+       * window.c (Fset_window_buffer): Fix docstring.
+
+2004-05-06  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * emacs.c (main) [VMS]: Fix var ref.
+
+2004-05-06  Romain Francoise  <romain@orebokech.com>
+
+       * data.c (Fsetq_default): Fix docstring.
+
+2004-05-06  Jason Rumney  <jasonr@gnu.org>
+
+       * image.c (Display) [HAVE_NTGUI]: Redefine while loading xpm.h
+       to avoid name clash.
+
+2004-05-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * fileio.c (barf_or_query_if_file_exists): Use lstat.
+       (Frename_file): Handle renaming of symlinks across file systems.
+       (Frename_file): Put symlink handling inside #ifdef S_IFLNK.
+
+2004-05-04  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (Qtotal): New var.
+       (syms_of_xdisp): Intern and staticpro it.
+       (calc_line_height_property): New arg total.  Set it if
+       line-spacing property has format (total . VALUE).
+       (x_produce_glyphs): Ignore line-spacing if line-height is 0.
+       Handle total line-spacing property.
+
+2004-05-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear
+       "under" scroll bar when size/position changes.
+
+2004-05-03  Jason Rumney  <jasonr@gnu.org>
+
+       * makefile.nt: Remove.
+
+2004-05-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT):
+       Avoid compiler warnings.
+
+       * Makefile.in (region-cache.o): Depend on config.h.
+
+2004-05-02  Romain Francoise  <romain@orebokech.com>
+
+       * indent.c (compute_motion): Save vpos in prev_vpos when dealing
+       with continuation lines, too.
+
+2004-05-02  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * syssignal.h (init_signals): Move decl outside `#ifdef POSIX_SIGNALS'.
+
+2004-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (calc_line_height_property): YAILOM (yet another
+       int/Lisp_Object mixup).
+
+2004-05-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * msdos.c (top-level): Add "#pragma pack(0)" after <dir.h>, to
+       undo bad effect of pack(4) in some versions of system headers.
+
+2004-05-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_draw_hollow_cursor): Sync with xterm.c.
+
+2004-04-30  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (syms_of_buffer) <line-spacing>: Allow float value.
+       (syms_of_buffer) <cursor-type>: Doc fix.
+
+       * dispextern.h (struct it): Remove member use_default_face.
+       Add members override_ascent, override_descent, override_boff.
+
+       * xdisp.c (init_iterator): Handle line-spacing float value.
+       Initialize override_ascent member.
+       (append_space_for_newline): Reset override_ascent.
+       Remove use_default_face.
+       (calc_line_height_property): New function to calculate value of
+       line-height and line-spacing properties.  Look at overlays, too.
+       Set override_ascent, override_descent, override_boff members when
+       using another face than the current face.  Float values are now
+       relative to the frame default font, by default; accept a cons
+       of ratio and face name to specify value relative to a specific face.
+       (x_produce_glyphs): Use calc_line_height_property.
+       Use override_ascent etc. when set to handle different face heights.
+       A negative line-spacing property value is interpreted as a total
+       line height, rather than inter-line spacing.
+       (note_mouse_highlight): Allocate room for 40 overlays initially.
+
+2004-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * data.c (Fsubr_name): New fun.
+       (syms_of_data): Defsubr it.
+
+2004-04-29  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (null_glyph_slice): New var.
+       (append_glyph, append_composite_glyph, append_stretch_glyph):
+       Use it to initialize glyph slice.
+
+2004-04-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (x_produce_glyphs): Fix the proverbial int/Lisp_Object mixup.
+       (on_hot_spot_p): Make sure we always return a value.
+       (Flookup_image_map): Remove unused var ix and iy.
+       (note_mode_line_or_margin_highlight): Remove unused var `image'.
+
+2004-04-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * msdos.c (init_environment): If one of the TMP... environment
+       variables is set to a drive letter without a trailing slash,
+       append a slash.
+
+2004-04-27  Matthew Mundell  <matt@mundell.ukfsn.org>
+
+       * editfns.c (lisp_time_argument): Provide externally.
+
+       * fileio.c (Fset_file_times): New function.
+       (syms_of_fileio): Intern and staticpro it.
+
+2004-04-27  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (x_produce_glyphs): Fix last change; handle newline in
+       header line strings.
+
+       * dispextern.h (struct it): New member use_default_face.
+
+       * xdisp.c (Qline_height): New variable.
+       (syms_of_xdisp): Intern and staticpro it.
+       (append_space_for_newline): Partially undo 2004-04-25 change;
+       add default_face_p arg, and restore callers.
+       Clear it->use_default_face after use.
+       (x_produce_glyphs): Set default font for ascii char if
+       it->use_default_font is set.  Change line-spacing property to set
+       just extra line spacing.  Handle new line-height property.
+
+2004-04-26  Andreas Schwab  <schwab@suse.de>
+
+       * print.c (print_object): Print non-ascii characters in bool
+       vector representation as octal escapes.
+
+       * lisp.h (BOOL_VECTOR_BITS_PER_CHAR): Define.
+       * print.c (print_object): Use it instead of BITS_PER_CHAR for
+       bool vectors.
+       * lread.c (read1): Likewise.
+       * alloc.c (Fmake_bool_vector): Likewise.
+       * data.c (Faref, Faset): Likewise.
+       * fns.c (Fcopy_sequence, concat, internal_equal, Ffillarray)
+       (mapcar1): Likewise.
+
+2004-04-26  Steven Tamm  <tamm@Steven-Tamms-Computer.local>
+
+       * lread.c (init_lread): Fix typo in HAVE_CARBON test logic.
+
+2004-04-26  Miles Bader  <miles@gnu.org>
+
+       * lisp.h (CYCLE_CHECK): Macro moved from xfaces.c.
+
+2004-04-26  Juanma Barranquero  <lektu@terra.es>
+
+       * buffer.c (Fpop_to_buffer): Fix docstring.
+
+2004-04-26  Steven Tamm  <steventamm@mac.com>
+
+       * lread.c (init_lread): Don't display missing lisp directory
+       warnings with Carbon Emacs because self-contained bundled Emacs
+       may be built without correct installation path.
+
+2004-04-25  Kim F. Storm  <storm@cua.dk>
+
+       * macterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines.
+
+       * xterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines.
+
+       * xdisp.c (append_space_for_newline): Rename from append_space.
+       Remove DEFAULT_FACE_P arg; always use current face.  Callers changed.
+       (x_produce_glyphs): Handle line-spacing property on newline char.
+       If value is t, adjust ascent and descent to fit current row height.
+       If value is an integer or float, set extra_line_spacing to integer
+       value, or to float value x current line height.
+
+2004-04-23  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (Finternal_char_font): If POSITION is nil, return
+       font for displaying CH with the default face.
+
+2004-04-23  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in: Add "-*- makefile -*-" mode tag.
+
+2004-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (XINT) [EXPLICIT_SIGN_EXTEND && !NO_UNION_TYPE]:
+       Don't make assumptions about the relative place of i and val.
+       (EQ) [!NO_UNION_TYPE]: Don't forget to check the type match as well.
+
+2004-04-21  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (struct glyph_slice): New struct.
+       (struct glyph): New member slice.
+       (GLYPH_SLICE_EQUAL_P): New macro.
+       (GLYPH_EQUAL_P): Use it.
+       (struct glyph_string): New member slice.
+       (struct it_slice): New struct.
+       (struct it): New member slice, add member to stack too.
+       New member constrain_row_ascent_descent_p.
+       (image_ascent): Add prototype.
+
+       * dispnew.c (buffer_posn_from_coords): Return full image width
+       and height even for image slices (posn is relative to full image).
+       (marginal_area_string): Adjust x0,y0 for image slice.
+
+       * image.c (image_ascent): Add slice arg; calculate ascent for
+       image slice (or full image).
+
+       * keyboard.c (Fposn_at_x_y, Fposn_at_point): New defuns.
+       (syms_of_keyboard): Defsubr them.
+
+       * lisp.h (pos_visible_p): Fix prototype.
+
+       * macterm.c (x_draw_relief_rect): Add top_p and bot_p args.
+       (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
+       (x_draw_image_foreground, x_draw_image_relief)
+       (x_draw_image_foreground_1, x_draw_image_glyph_string):
+       Draw sliced images.
+
+       * w32term.c (w32_draw_relief_rect): Add top_p and bot_p args.
+       (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
+       (x_draw_image_foreground, x_draw_image_relief)
+       (w32_draw_image_foreground_1, x_draw_image_glyph_string):
+       Draw sliced images.
+
+       * w32term.h (image_ascent): Remove prototype.
+
+       * window.c (Fpos_visible_in_window_p): Return pixel position if
+       PARTIALLY arg is non-nil.  Simplify.  Doc fix.
+       (Fwindow_vscroll, Fset_window_vscroll): Add optional PIXEL_P arg
+       to return/set vscroll in pixels.
+
+       * window.h (Fwindow_vscroll, Fset_window_vscroll): Fix EXFUN.
+
+       * xdisp.c (Qslice): New variable.
+       (syms_of_xdisp): Intern and staticpro it.
+       (pos_visible_p): Return pixel position in new x and y args.
+       (init_iterator): Reset it->slice info.
+       (handle_display_prop): Parse (slice ...) property.
+       (push_it, pop_it): Save/restore slice info.
+       (make_cursor_line_fully_visible): Fix 2004-04-14 change.  Do not
+       force repositioning of tall row if window is vscrolled, as that
+       would reset vscroll.
+       (append_space): Set it->constrain_row_ascent_descent_p to avoid
+       increasing row height if row is non-empty.
+       (fill_image_glyph_string): Copy slice info.
+       (take_vertical_position_into_account): Simplify.
+       (produce_image_glyph): Handle iterator slice info, setup glyph
+       slice info.  Do not force minimum line height.
+       (x_produce_glyphs): If it->constrain_row_ascent_descent_p is set,
+       do not increase height (ascent/descent) of non-empty row when
+       adding normal character glyph; instead reduce glyph ascent/descent
+       appropriately; if row is higher than current glyph, adjust glyph
+       descent/ascent to reposition glyph within the existing row.
+       Likewise, when char is newline, only set ascent/descent if row is
+       currently empty.
+       (note_mouse_highlight): Handle hotspots with sliced image.
+
+       * xterm.c (x_draw_relief_rect): Add top_p and bot_p args.
+       (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
+       (x_draw_image_foreground, x_draw_image_relief)
+       (x_draw_image_foreground_1, x_draw_image_glyph_string):
+       Draw sliced images.
+
+       * xterm.h (image_ascent): Remove prototype.
+
+2004-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (Fkey_description): Fix the usual int/Lisp_Object mixup.
+
+2004-04-20  John Paul Wallington  <jpw@gnu.org>
+
+       * fns.c (Fassoc, Feql): Fix indentation.
+
+       * fontset.c (regularize_fontname): Rename from regulalize_fontname.
+
+2004-04-19  John Paul Wallington  <jpw@gnu.org>
+
+       * fns.c (Feql): New function.
+       (syms_of_fns): Defsubr it.
+
+2004-04-18  Jason Rumney  <jasonr@gnu.org>
+
+       * w32select.c (Fw32_set_clipboard_data): Get sequence number
+       after closing the clipboard.
+
+2004-04-16  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffer.c (Fbuffer_base_buffer): Doc fix.
+
+2004-04-17  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (Fkey_description): Add optional PREFIX arg.
+       Combine prefix with KEYS to make up the full key sequence to describe.
+       Correlate meta_prefix_char and following (simple) key to describe
+       as meta modifier.  All callers changed.
+       (describe_map): Rename arg `keys' to `prefix'.  Remove local
+       `elt_prefix' var.  Use Fkey_description with prefix instead of
+       elt_prefix combined with Fsingle_key_description.
+       (describe_vector): Declare static.  Replace arg `elt_prefix' with
+       `prefix'.  Add KEYMAP_P arg.  Add local var `elt_prefix'; use it
+       if !KEYMAP_P.  Use Fkey_description with prefix instead of
+       Fsingle_key_description.
+
+       * keymap.h (Fkey_description): Fix prototype.
+       (describe_vector): Remove prototype.
+
+       * xdisp.c (update_overlay_arrows): Fix handling of up_to_date < 0.
+
+       * image.c (PNG_BG_COLOR_SHIFT): Remove.
+       (png_load): Fix calculation of transparent background color on X
+       and W32 platforms.
+
+2004-04-16  Juanma Barranquero  <lektu@terra.es>
+
+       * xdisp.c (try_scrolling): Make sure `scroll-conservatively' is
+       not too large before computing how much to scroll.
+
+2004-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * dired.c (Ffile_attributes): Don't pass extra nil arg to file-handler.
+
+2004-04-14  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fileio.c (Fverify_visited_file_modtime, Fvisited_file_modtime):
+       Add hyperlink to Elisp manual to the docstring.
+
+2004-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * callint.c (fix_command): Use XDCR.
+
+2004-04-14  Nick Roberts  <nick@nick.uklinux.net>
+
+       * window.c (Fget_lru_window): Doc fix.
+
+2004-04-14  Kim F. Storm  <storm@cua.dk>
+
+       * editfns.c (Fformat): Fix allocation size of precision array.
+
+       * dispnew.c (update_window): Only set changed_p if
+       scrolling_window actually did scroll.
+       (scrolling_window): Only return 1 if we actually did scroll.
+
+       * xdisp.c (get_glyph_string_clip_rect): Fix reduction of cursor
+       height to glyph height when cursor row is not fully visible.
+       (make_cursor_line_fully_visible): Add FORCE_P arg to return
+       failure in case row is higher than window.  Callers changed.
+       (try_scrolling): Fix loop in scrolling if last_line_misfit (from Gerd).
+       Try to scroll partially visible, higher-than-window cursor row.
+       (redisplay_window): Always try to scroll partially visible,
+       higher-than-window cursor row - both initially and again with
+       centering_position = 0.
+       Clear desired matrix before retrying with centering_position = 0.
+
+2004-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * syntax.c (scan_lists): Simplify backward string scan.
+       Fix off-by-one boundary check for string and comment fences.
+
+2004-04-13  Joe Buehler  <jbuehler@hekimian.com>
+
+       * sheap.c, unexcw.c: New files.
+
+2004-04-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffer.c (Fmake_indirect_buffer): Throw an error if the intended
+       base buffer has been killed.  Correct the error message if the
+       base buffer does not exist.
+
+2004-04-12  Joe Buehler  <jbuehler@hekimian.com>
+
+       * s/cygwin.h: Changes for Cygwin unexec() support, changes in
+       Cygwin itself.  Add support for Xaw3d scrollbars.
+
+       * puresize.h: Set up PURE_P() for Cygwin unexec() support.
+
+       * lastfile.c: Define my_endbss[] for Cygwin unexec() support.
+
+       * gmalloc.c (__default_morecore): Use bss_sbrk(), not __sbrk(),
+       before Cygwin unexec.
+
+       * Makefile.in: Link changes for Cygwin unexec() support.
+
+2004-04-12  Andreas Schwab  <schwab@suse.de>
+
+       * buffer.c (Fmake_indirect_buffer): Check that NAME is a string.
+
+2004-04-11  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * buffer.c (Fgenerate_new_buffer_name): Return NAME argument if
+       IGNORE argument equals NAME.  Doc fix.
+
+2004-04-11  Masatake YAMATO  <jet@gyve.org>
+
+       * buffer.c (fix_start_end_in_overlays): Make overlays
+       empty if they are backwards.
+
+2004-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xfaces.c (face_color_supported_p): Fix compilation without X11.
+
+2004-04-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * doc.c (Fsnarf_documentation): Ignore new file name entries.
+
+2004-04-06  Kim F. Storm  <storm@cua.dk>
+
+       * msdos.c (clear_mouse_face): Only clear mouse highlight if not hidden.
+       (dos_rawgetc): Set mouse_face_hidden after clearing highlight.
+
+       * w32term.c (w32_read_socket): Set mouse_face_hidden after
+       clearing highlight.
+
+       * xdisp.c (clear_mouse_face): Only clear mouse highlight if not hidden.
+
+       * xterm.c (handle_one_xevent): Set mouse_face_hidden after
+       clearing highlight.
+
+       * indent.c (vmotion): Do not reserve one column for continuation
+       marks on window frames.
+
+2004-04-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * charset.h (SINGLE_BYTE_CHAR_P): Fix macro to avoid warnings
+       from GCC.
+
+2004-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * .gdbinit-union: Remove.
+
+       * .gdbinit: Make it work for USE_LSB_TAG and !NO_LISP_UNION.
+       (xgetptr, xgetint, xgettype): New funs.  Use them everywhere.
+       ($nonvalbits): Remove.
+       ($valmask): Set it by calling xreload to avoid redundancy.
+
+       * emacs.c (gdb_use_union, gdb_use_lsb): New vars.
+       (gdb_emacs_intbits): Remove.
+
+2004-03-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * data.c (Fbyteorder): Make test work even if unsigned is not 4 bytes.
+
+2004-03-30  Kenichi Handa  <handa@m17n.org>
+
+       * editfns.c (Fformat): Fix initialization of the array info.
+
+2004-03-30  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (x_mouse_click_focus_ignore_position): New var.
+       (syms_of_xterm): DEFVAR_BOOL it.
+       (ignore_next_mouse_click_timeout): New var.
+       (handle_one_xevent): Clear it on KeyPress, set it on EnterNotify.
+       Use it to filter mouse clicks following focus event.
+
+2004-03-29  David Ponce  <david@dponce.com>
+
+       * callint.c (Fcall_interactively): Fix last change.
+
+2004-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (Fcommandp): Simplify.
+
+       * data.c (Finteractive_form): Rename from Fsubr_interactive_form.
+       Extend to handle all kinds of functions.
+
+       * lisp.h (Finteractive_form): Declare.
+
+       * callint.c (Fcall_interactively): Use it.
+
+2004-03-26  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (syms_of_xdisp): Include `void-variable' in list_of_error
+       to catch errors in calc_pixel_width_or_height during redisplay.
+
+2004-03-26  Masatake YAMATO  <jet@gyve.org>
+
+       * buffer.c (fix_start_end_in_overlays): Rename fix_overlays_in_range.
+
+       * lisp.h (fix_start_end_in_overlays): Likewise.
+
+       * insdel.c (adjust_markers_for_insert): Call fix_start_end_in_overlays.
+
+       * editfns.c (Ftranspose_regions): Likewise.
+
+2004-03-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (handle_one_xevent): Do not pass key press events to GTK.
+
+2004-03-19  Richard M. Stallman  <rms@gnu.org>
+
+       * s/sol2-6.h: Delete previous change.
+
+2004-03-19  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (move_it_in_display_line_to): Fix MOVE_TO_POS case when
+       to_charpos corresponds to newline in right fringe.  Use local
+       BUFFER_POS_REACHED_P macro.
+
+2004-03-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xdisp.c (calc_pixel_width_or_height): Add ifdef HAVE_WINDOW_SYSTEM
+       to compile on non-window system.
+
+2004-03-19  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (calc_pixel_width_or_height): Add prototype.
+
+       * image.c (Qcenter): Move to xdisp.c.
+
+       * xdisp.c (Qcenter): Declare here.
+       (syms_of_xdisp): Intern and staticpro it.
+       (handle_single_display_prop): Allow space display property on all
+       platforms.
+       (display_mode_line): Set mode_line_p before displaying line.
+       (calc_pixel_width_or_height): Declare extern.  Add separate :align-to
+       handling.  Remove complex cases for fringes and scroll-bars.
+       Add left, right, and center alignment positions.  Add text (area)
+       width/height.  Return width or height for image specs.
+       (produce_stretch_glyph): Improve handling of :align-to.  Is now
+       relative to left of text area by default, but other base offsets
+       can be specified -- also for text lines.
+
+       * term.c (produce_glyphs): Handle IT_STRETCH.
+       (produce_stretch_glyph): New function to handle space width and
+       align-to display properties on non-window systems.
+
+2004-03-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (Fread_file_name): Set completion-ignore-case for
+       case-insensitive systems.
+
+2004-03-14  Masatake YAMATO  <jet@gyve.org>
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Accept HEADER_LINE
+       when keymap and cursor are setup.
+
+2004-03-14  Steven Tamm  <steventamm@mac.com>
+
+       * Makefile.in (XMENU_OBJ) [HAVE_CARBON]: Do not include xmenu.o.
+
+2004-03-14  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (x_find_image_file): Add prototype.
+
+       * image.c (x_find_image_file): Make extern.
+
+       * xfns.c (x_find_image_file): Remove prototype.
+
+2004-03-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (XMENU_OBJ): Include xmenu.o if HAVE_MENUS is defined.
+
+       * emacs.c (main): Call syms_of_xmenu only if HAVE_MENUS is defined.
+
+2004-03-12  Richard M. Stallman  <rms@gnu.org>
+
+       * fns.c (internal_equal): New arg PROPS controls comparing
+       text properties.  All callers changed.
+       (Fequal_including_properties): New function.
+       (syms_of_fns): defsubr it.
+
+2004-03-12  Kim F. Storm  <storm@cua.dk>
+
+       Fix image support on MAC.  From YAMAMOTO Mitsuharu.
+
+       * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs.
+       (image_background, image_background_transparent): Fix prototypes.
+
+       * image.c (XImagePtr, XImagePtr_or_DC): Move typedefs to dispextern.h.
+
+       * macfns.c (x_list_fonts, x_get_font_info, x_load_font)
+       (x_query_font, x_find_ccl_program, x_set_window_size)
+       (x_make_frame_visible, mac_initialize, XCreatePixmap)
+       (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground)
+       (mac_draw_line_to_pixmap): Move prototypes to macterm.h.
+
+       * macterm.h (x_list_fonts, x_get_font_info, x_load_font)
+       (x_query_font, x_find_ccl_program, x_set_window_size)
+       (x_make_frame_visible, mac_initialize, XCreatePixmap)
+       (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground)
+       (mac_draw_line_to_pixmap): Add prototypes.
+
+2004-03-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * macterm.c (XTread_socket): Fix mouse click on tool bar.
+
+2004-03-11  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h: Move image related prototypes from xfns.c section
+       to image.c.  Condition them by HAVE_WINDOW_SYSTEM rather than
+       HAVE_X_WINDOWS.
+
+       * Makefile.in (XOBJ): Consolidate into one list.  Add image.o.
+       Move gtkutil.o to new GTK_OBJ list.
+       (XMENU_OBJ) [HAVE_MENUS]: Move declaration to proper place.
+       (GTK_OBJ) [USE_GTK]: New declaration.
+       (obj): Add $(GTK_OBJ) to list.
+
+2004-03-11  Steven Tamm  <steventamm@mac.com>
+
+       * image.c [MAC_OSX]: Include sys/stat.h.
+
+       * macfns.c (syms_of_macfns): Remove definitions of things now
+       defined in image.c.
+
+2004-03-11  Kim F. Storm  <storm@cua.dk>
+
+       The following changes consolidates the identical/similar image
+       support code previously found in xfns.c, w32fns.c, and macfns.c
+       into a new file image.c.
+
+       * makefile.w32-in (OBJ1): Add image.o.
+       ($(BLD)/image.$(O)): Add dependencies.
+
+       * Makefile.in (XOBJ, MAC_OBJ): Add image.o.
+       (image.o): Add dependencies.
+
+       * image.c: New file with consolidated image support code.
+       (COLOR_TABLE_SUPPORT): New define to control whether
+       color table support is available (X only).
+       (Bitmap_Record): Common name for x_bitmap_record,
+       w32_bitmap_record, and mac_bitmap_record.
+       (XImagePtr): Common name for pointer to XImage or equivalent.
+       (XImagePtr_or_DC): New type to simplify code sharing; equivalent
+       to XImagePtr on X+MAC, and to HDC on W32.
+       (GET_PIXEL): Wrapper for XGetPixel or equivalent.
+       (NO_PIXMAP): Common name for "None" or equivalent.
+       (PNG_BG_COLOR_SHIFT): Bits to shift PNG background colors.
+       (RGB_PIXEL_COLOR): Common type for an integer "pixel color" value.
+       (PIX_MASK_RETAIN, PIX_MASK_DRAW): Portability macros (from macfns.c).
+       (FRAME_X_VISUAL, x_defined_color, DefaultDepthOfScreen):
+       Define with suitable equivalents on W32 and MAC for code sharing.
+       (XDrawLine): Define on MAC for code sharing.
+       (Destroy_Image, Free_Pixmap): Wrappers for code sharing.
+       (IF_LIB_AVAILABLE): Macro to simplify code sharing.
+       (Vx_bitmap_file_path, Vimage_cache_eviction_delay)
+       (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
+       (x_reference_bitmap, x_create_bitmap_from_data)
+       (x_create_bitmap_from_file, x_destroy_bitmap)
+       (x_destroy_all_bitmaps, x_create_bitmap_mask)
+       (XGetImage, XPutPixel, XGetPixel, XDestroyImage)
+       (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols)
+       (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask)
+       (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter)
+       (define_image_type, lookup_image_type, valid_image_p)
+       (image_error, enum image_value_type, struct image_keyword)
+       (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
+       (make_image, free_image, prepare_image_for_display, image_ascent)
+       (four_corners_best, image_background, image_background_transparent)
+       (x_clear_image_1, x_clear_image, x_alloc_image_color)
+       (make_image_cache, free_image_cache, clear_image_cache)
+       (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
+       (forall_images_in_image_cache, x_create_x_image_and_pixmap)
+       (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file)
+       (find_image_fsspec, image_load_qt_1, image_load_quicktime)
+       (init_image_func_pointer, image_load_quartz2d)
+       (struct ct_color, init_color_table, free_color_table)
+       (lookup_rgb_color, lookup_pixel_color, colors_in_color_table)
+       (cross_disabled_images, x_to_xcolors, x_from_xcolors)
+       (x_detect_edges, x_emboss, x_laplace, x_edge_detection)
+       (x_disable_image, x_build_heuristic_mask)
+       (XBM support, XPM support, PBM support, PNG support, JPEG support)
+       (TIFF support, GIF support, Ghostscript support): Consolidate image
+       code from xfns.c, w32fns.c, and macfns.c.
+       (syms_of_image): Consolidate image related symbol setup here.
+       (init_image): Consolidate image related initializations here.
+
+       * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Add calls to syms_of_image
+       and init_image.  Remove call to init_xfns.
+
+       * macterm.h (struct mac_bitmap_record): Add file member.
+       Not currently used, but simplifies code sharing.
+
+       * macfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay)
+       (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
+       (x_reference_bitmap, x_create_bitmap_from_data)
+       (x_create_bitmap_from_file, x_destroy_bitmap)
+       (x_destroy_all_bitmaps, x_create_bitmap_mask)
+       (XGetImage, XPutPixel, XGetPixel, XDestroyImage)
+       (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols)
+       (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask)
+       (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter)
+       (define_image_type, lookup_image_type, valid_image_p)
+       (image_error, enum image_value_type, struct image_keyword)
+       (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
+       (make_image, free_image, prepare_image_for_display, image_ascent)
+       (four_corners_best, image_background, image_background_transparent)
+       (x_clear_image_1, x_clear_image, x_alloc_image_color)
+       (make_image_cache, free_image_cache, clear_image_cache)
+       (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
+       (forall_images_in_image_cache, x_create_x_image_and_pixmap)
+       (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file)
+       (find_image_fsspec, image_load_qt_1, image_load_quicktime)
+       (init_image_func_pointer, image_load_quartz2d)
+       (struct ct_color, init_color_table, free_color_table)
+       (lookup_rgb_color, lookup_pixel_color, colors_in_color_table)
+       (cross_disabled_images, x_to_xcolors, x_from_xcolors)
+       (x_detect_edges, x_emboss, x_laplace, x_edge_detection)
+       (x_disable_image, x_build_heuristic_mask)
+       (XBM support, XPM support, PBM support, PNG support, JPEG support)
+       (TIFF support, GIF support, Ghostscript support): Merge with image
+       code from xfns.c and macfns.c into image.c.
+       (syms_of_xfns): Move image related symbols to image.c.
+       (init_external_image_libraries, init_xfns): Remove; initialization
+       moved to init_image in image.c.
+
+       * w32fns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay)
+       (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
+       (x_reference_bitmap, x_create_bitmap_from_data)
+       (x_create_bitmap_from_file, x_destroy_bitmap)
+       (x_destroy_all_bitmaps, x_create_bitmap_mask)
+       (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols)
+       (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask)
+       (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter)
+       (define_image_type, lookup_image_type, valid_image_p)
+       (image_error, enum image_value_type, struct image_keyword)
+       (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
+       (make_image, free_image, prepare_image_for_display, image_ascent)
+       (four_corners_best, image_background, image_background_transparent)
+       (x_clear_image_1, x_clear_image, x_alloc_image_color)
+       (make_image_cache, free_image_cache, clear_image_cache)
+       (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
+       (forall_images_in_image_cache, x_create_x_image_and_pixmap)
+       (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file)
+       (struct ct_color, init_color_table, free_color_table)
+       (lookup_rgb_color, lookup_pixel_color, colors_in_color_table)
+       (cross_disabled_images, x_to_xcolors, x_from_xcolors)
+       (x_detect_edges, x_emboss, x_laplace, x_edge_detection)
+       (x_disable_image, x_build_heuristic_mask)
+       (XBM support, XPM support, PBM support, PNG support, JPEG support)
+       (TIFF support, GIF support, Ghostscript support): Merge with image
+       code from xfns.c and macfns.c into image.c.
+       (syms_of_xfns): Move image related symbols to image.c.
+       (init_external_image_libraries, init_xfns): Remove; initialization
+       moved to init_image in image.c.
+
+       * xfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay)
+       (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
+       (x_reference_bitmap, x_create_bitmap_from_data)
+       (x_create_bitmap_from_file, x_destroy_bitmap)
+       (x_destroy_all_bitmaps, x_create_bitmap_mask)
+       (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols)
+       (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask)
+       (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter)
+       (define_image_type, lookup_image_type, valid_image_p)
+       (image_error, enum image_value_type, struct image_keyword)
+       (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
+       (make_image, free_image, prepare_image_for_display, image_ascent)
+       (four_corners_best, image_background, image_background_transparent)
+       (x_clear_image_1, x_clear_image, x_alloc_image_color)
+       (make_image_cache, free_image_cache, clear_image_cache)
+       (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
+       (forall_images_in_image_cache, x_create_x_image_and_pixmap)
+       (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file)
+       (struct ct_color, init_color_table, free_color_table)
+       (lookup_rgb_color, lookup_pixel_color, colors_in_color_table)
+       (cross_disabled_images, x_to_xcolors, x_from_xcolors)
+       (x_detect_edges, x_emboss, x_laplace, x_edge_detection)
+       (x_disable_image, x_build_heuristic_mask)
+       (XBM support, XPM support, PBM support, PNG support, JPEG support)
+       (TIFF support, GIF support, Ghostscript support): Merge with
+       w32fns.c and macfns.c image code into image.c.
+       (syms_of_xfns): Move image related symbols to image.c.
+       (init_xfns): Remove; initialization moved to init_image in image.c.
+
+       * lisp.h (syms_of_image, init_image): Add protoypes.
+       (init_xfns): Remove prototype.
+
+       * dispextern.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
+       (x_reference_bitmap, x_create_bitmap_from_data)
+       (x_create_bitmap_from_file, x_destroy_bitmap)
+       (x_create_bitmap_mask): Move prototypes from dispextern.h.
+       (gamma_correct) [MAC_OS]: Add prototype.
+
+       * xterm.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
+       (x_reference_bitmap, x_create_bitmap_from_data)
+       (x_create_bitmap_from_file, x_destroy_bitmap)
+       (x_create_bitmap_mask): Move prototypes to dispextern.h.
+
+2004-03-09  Kenichi Handa  <handa@etlken2>
+
+       * coding.c (decode_coding_emacs_mule): Handle insufficent source
+       correctly.
+
+2004-03-04  Richard M. Stallman  <rms@gnu.org>
+
+       * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition.
+
+       * window.c (Fdisplay_buffer): Doc fix.
+
+       * buffer.c (Fpop_to_buffer): Doc fix.
+
+2004-03-03  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (display_line): Fix call to get_overlay_arrow_glyph_row.
+
+2004-03-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * editfns.c (Ftranslate_region): Lisp_Object/int mixup.
+
+2004-03-02  Richard M. Stallman  <rms@gnu.org>
+
+       * indent.c (compute_motion): Save vpos in prev_vpos, like hpos etc.
+
+2004-03-02  Kenichi Handa  <handa@m17n.org>
+
+       * doc.c (Fsubstitute_command_keys): Fix counding bytes.
+
+2004-03-02  Kim F. Storm  <storm@cua.dk>
+
+       * window.h (struct window): New member overlay_arrow_bitmap.
+
+       * window.c (make_window): Initialize overlay_arrow_bitmap.
+
+       * xdisp.c (Voverlay_arrow_variable_list): New variable to properly
+       implement and integrate multiple overlay arrows with redisplay.
+       (syms_of_xdisp): DEFVAR_LISP and initialize it.
+       (last_arrow_position, last_arrow_string): Replace by properties.
+       (Qlast_arrow_position, Qlast_arrow_string)
+       (Qoverlay_arrow_string, Qoverlay_arrow_bitmap): New variables.
+       (syms_of_xdisp): Intern and staticpro them.
+       (overlay_arrow_string_or_property, update_overlay_arrows)
+       (overlay_arrow_in_current_buffer_p, overlay_arrows_changed_p)
+       (overlay_arrow_at_row): New functions for multiple overlay arrows.
+       (redisplay_internal): Use them instead of directly accessing
+       Voverlay_arrow_position etc. for multiple overlay arrows.
+       (mark_window_display_accurate): Use update_overlay_arrows.
+       (try_cursor_movement): Use overlay_arrow_in_current_buffer_p.
+       (try_window_id): Use overlay_arrows_changed_p.
+       (get_overlay_arrow_glyph_row): Add overlay_arrow_string arg.
+       (display_line): Use overlay_arrow_at_row to check multiple
+       overlay arrows, and get relevant overlay-arrow-string and
+       overlay-arrow-bitmap.  Set w->overlay_arrow_bitmap accordingly.
+       (produce_image_glyph): Set pixel_width = 0 for fringe bitmap.
+       (syms_of_xdisp): Remove last_arrow_position and last_arrow_string.
+
+       * fringe.c (draw_fringe_bitmap): Use w->overlay_arrow_bitmap if set.
+       (update_window_fringes): Remove unused code.
+
+2004-03-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_read_socket): Fix last change to ButtonPress handling.
+
+2004-03-01  Juanma Barranquero  <lektu@terra.es>
+
+       * fringe.c (Fdefine_fringe_bitmap): Fix typo in docstring.
+
+       * makefile.w32-in ($(BLD)/fringe.$(O)): Add dependencies.
+
+2004-03-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_display_color_cells): Use number of planes to calculate
+       how many colors can be displayed.
+
+2004-03-01  Kenichi Handa  <handa@m17n.org>
+
+       * editfns.c (Ftranslate_region): Handle multibyte chars in TABLE
+       correctly.
+
+2004-02-28  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (update_window): Update header line also if there are
+       no other changes in window (move code after set_cursor label).
+
+       * lisp.h (mark_window_display_accurate): Remove prototype.
+
+       * window.c (window_loop, Fforce_window_update): Force mode line
+       updates by setting prevent_redisplay_optimizations_p and
+       update_mode_lines.
+
+2004-02-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (x_window): Fix indentation.
+
+       * xterm.c (x_calc_absolute_position): Call x_real_positions
+       to get WM window sizes and use those to calculate position.
+       (x_set_offset): Remove code commented out.
+
+2004-02-28  Miles Bader  <miles@gnu.org>
+
+       * keyboard.c (adjust_point_for_property): #ifdef-out dodgy xassert.
+
+2004-02-28  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (kbd_buffer_store_event_hold): New function to store
+       an event into kbd fifo, but with special handling of quit event;
+       a quit event is saved for later, and further events are discarded
+       until the saved quit event has been processed.
+       (kbd_buffer_store_event): Use kbd_buffer_store_event_hold.
+       (gen_help_event): Store help event in kbd fifo.
+       (NREAD_INPUT_EVENTS): Remove.
+       (read_avail_input): Adapt to new read_socket_hook interface.
+       Remove allocation and initialization of local input_event buffer,
+       as read_socket_hook stores events directly in fifo.  Allocate and
+       initialize local hold_quit event to handle postponed quit event
+       (and store it if set by kbd_buffer_store_event_hold).
+
+       * keyboard.h (kbd_buffer_store_event_hold): Add prototype.
+       (gen_help_event): Fix prototype.
+
+       * macterm.c (XTread_socket): Remove bufp_r and
+       numcharsp args.  Add hold_quit arg.
+       Rework to use just one, local, inev input_event.  Store inev
+       directly in fifo using kbd_buffer_store_event_hold.
+
+       * sysdep.c (BUFFER_SIZE_FACTOR): Remove.
+       (read_input_waiting): Adapt to new read_socket_hook interface.
+       Remove allocation and initialization of local input_event buffer,
+       as read_socket_hook stores events directly in fifo.  Allocate and
+       initialize local hold_quit event to handle postponed quit event
+       (and store it if set by kbd_buffer_store_event_hold).
+
+       * term.c (read_socket_hook): Fix arg list.
+
+       * termhooks.h (read_socket_hook): Fix prototype.
+
+       * w32inevt.c (w32_console_read_socket): Remove bufp_r and
+       numcharsp args.  Add hold_quit arg.
+       Rework to use just one, local, inev input_event.  Store inev
+       directly in fifo using kbd_buffer_store_event_hold.
+
+       * w32inevt.h (w32_console_mouse_position): Fix prototype.
+
+       * w32term.c (w32_read_socket): Remove bufp_r and numcharsp args.
+       Add hold_quit arg.  Rework to use just one, local, inev
+       input_event.  Store inev directly in fifo using
+       kbd_buffer_store_event_hold.  Update count in one place.
+       Postpone call to gen_help_event until inev is stored; use new
+       local do_help for this.
+       Remove local emacs_event in handing of ButtonPress event; just use
+       inev instead (so no reason to copy it later).
+
+       * xsmfns.c (x_session_check_input): Remove numchars arg.
+
+       * xterm.c (x_focus_changed, x_detect_focus_change):
+       Remove numchars arg.  Always store event into bufp arg.
+       Return nothing.  Callers changed accordingly.
+       (glyph_rect): Simplify.
+       (STORE_KEYSYM_FOR_DEBUG): New macro.
+       (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc.
+       (current_bufp, current_numcharsp) [USE_GTK]: Remove.
+       (current_hold_quit) [USE_GTK]: Add.
+       (event_handler_gdk): Adapt to new handle_one_xevent.
+       (handle_one_xevent): Remove bufp_r and numcharsp args.
+       Add hold_quit arg.  Rework to use just one, local, inev
+       input_event.  Store inev directly in fifo using
+       kbd_buffer_store_event_hold.  Update count in one place.
+       Postpone call to gen_help_event until inev is stored; use new
+       local do_help for this.
+       Simplify handling of keysyms (consolidate common code).  Fix bug
+       where count was updated with nchars instead of nbytes.
+       Remove local emacs_event in handing of ButtonPress event; just use
+       inev instead (so no reason to copy it later).
+       Remove `out' label.  Rename label `ret' to `done'; add various
+       `goto done' to clarify code flow in deeply nested blocks.
+       (x_dispatch_event): Simplify as handle_one_xevent now calls
+       kbd_buffer_store_event itself.
+       (XTread_socket): Remove bufp_r and numcharsp args.  Add hold_quit
+       arg.  Call handle_one_xevent with new arglist.  Store event from
+       x_session_check_input in fifo.
+       [USE_GTK]: Setup current_hold_quit.
+       Decrement handling_signal before unblocking input.
+       (x_initialize) [USE_GTK]: Initialize current_count.
+
+       * xterm.h (x_session_check_input): Fix prototype.
+
+2004-02-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework QuickTime'.
+
+       * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in
+       macgui.h).
+
+       * emacs.c (main) [HAVE_CARBON]: Call init_xfns.
+
+       * macgui.h [MAC_OSX]: Include Carbon/Carbon.h.
+       (mktime, DEBUG, Z, free, malloc, realloc, max, min)
+       (init_process) [MAC_OSX]: Avoid conflicts with Carbon/Carbon.h.
+       [!MAC_OSX]: Include QDOffscreen.h and Controls.h.
+       (INFINITY) [MAC_OSX]: Avoid conflict with definition in math.h.
+       (Bitmap): Remove typedef.
+       (Pixmap): Change int to GWorldPtr.
+
+       * macmenu.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
+
+       * macterm.h [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
+       (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG):
+       New #define to extract 16-bit depth color components from unsigned
+       long representation.
+       (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel
+       colors used for masks.
+       (struct mac_display_info): Add color_p.  Remove n_cbits.
+
+       * macfns.c: Include sys/types.h and sys/stat.h.
+       [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h).
+       Include QuickTime/QuickTime.h.
+       (XCreatePixmap, XCreatePixmapFromBitmapData, XFreePixmap)
+       (XSetForeground, mac_draw_line_to_pixmap): Add externs for
+       functions defined in macterm.c.
+       (XImagePtr): New typedef.  Corresponds to XImage * in xfns.c.
+       (ZPixmap): New #define for compatibility with xfns.c.
+       (XGetImage, XPutPixel, XGetPixel, XDestroyImage)
+       (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image)
+       (find_image_fsspec, image_load_qt_1, image_load_quicktime):
+       New functions.
+       (four_corners_best, x_create_x_image_and_pixmap)
+       (x_destroy_x_image, unwind_create_frame, x_disable_image)
+       (x_edge_detection, init_color_table, colors_in_color_table)
+       (lookup_rgb_color, lookup_pixel_color, postprocess_image)
+       (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image)
+       (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors)
+       (x_from_xcolors, x_detect_edges): New declarations (from xfns.c).
+       (mac_color_map_lookup, x_to_mac_color): Fix Lisp_Object/unsigned
+       long mixup.
+       (mac_defined_color, x_to_x_colors): Use RED16_FROM_ULONG etc.
+       (x_decode_color): Don't use n_cbits (in struct mac_display_info).
+       (x_set_foreground_color, x_set_cursor_color): Sync with w32fns.c.
+       (x_set_cursor_type, Fxw_color_values, valid_image_p)
+       (image_value_type, parse_image_spec, image_ascent, x_clear_image)
+       (x_alloc_image_color, clear_image_cache, lookup_image)
+       (x_find_image_file, xbm_read_bitmap_file_data)
+       (enum xbm_keyword_index, xbm_format, xbm_image_p, xbm_scan)
+       (xbm_read_bitmap_data, xbm_load, pbm_image_p, pbm_scan_number)
+       (enum pbm_keyword_index, pbm_format, enum png_keyword_index)
+       (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format)
+       (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p)
+       (enum gif_keyword_index, gif_format, gif_image_p): Sync with xfns.c.
+       (x_make_gc): Sync with xfns.c.  Enclose unused `border_tile' with
+       #if 0.
+       (x_free_gcs): Sync with xfns.c.  Enclose unused `border_tile' with
+       #if 0.  Free white_relief.gc and black_relief.gc.
+       (unwind_create_frame, x_emboss, x_laplace, x_edge_detection):
+       New functions (from xfns.c).
+       (Fx_create_frame): Record unwind_create_frame.
+       (Fxw_display_color_p): Use dpyinfo->color_p.
+       (Fx_display_grayscale_p, Fx_display_planes): Don't use
+       dpyinfo->n_cbits.
+       (Fx_display_color_cells): Use dpyinfo->n_planes;
+       (QCmatrix, QCcolor_adjustment, QCmask, Qemboss, Qedge_detection)
+       (Qheuristic, cross_disabled_images, emboss_matrix)
+       (laplace_matrix): New variables (from xfns.c).
+       (Fimage_size, Fimage_mask_p, four_corners_best, image_background)
+       (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image)
+       (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges)
+       (image_background_transparent): New function (from xfns.c).
+       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
+       (image_load_quicktime): Add declaration.
+       [MAC_OSX] (image_load_quartz2d): Likewise.
+       [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef.
+       [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable.
+       [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New funs.
+       (xbm_load_image_from_file, x_laplace_read_row)
+       (x_laplace_write_row, pbm_read_file): Remove functions.
+       [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p)
+       (xpm_load): Sync with xfns.c (although XPM is not supported yet).
+       (colors_in_color_table): Sync with xfns.c (although not used).
+       (lookup_rgb_color): Don't lookup color table.  Just do gamma
+       correction.
+       (COLOR_INTENSITY): New #define (from xfns.c).
+       (x_disable_image): New function (from xfns.c).
+       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
+       (x_build_heuristic_mask): Sync with xfns.c.
+       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
+       (HAVE_PBM): Remove #ifdef.
+       (pbm_load): Sync with xfns.c.  Set img->width and img->height
+       before IMAGE_BACKGROUND.
+       (png_image_p, png_load): Don't enclose declarations with #if HAVE_PNG.
+       (Qpng, enum png_keyword_index, png_format, png_type, png_image_p):
+       Don't enclose with #if HAVE_PNG.
+       [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a
+       symbol _CGImageCreateWithPNGDataProvider is defined.
+       Otherwise use image_load_quicktime.
+       [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime.
+       [HAVE_PNG] (png_load): Sync with xfns.c.
+       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
+       (jpeg_image_p, jpeg_load): Don't enclose declarations with #if
+       HAVE_JPEG.
+       (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type)
+       (jpeg_image_p): Don't enclose with #if HAVE_JPEG.
+       [!HAVE_JPEG] (jpeg_load) [MAC_OSX]: Use image_load_quartz2d.
+       [!HAVE_JPEG] (jpeg_load) [!MAC_OSX]: Use image_load_quicktime.
+       [HAVE_JPEG] (jpeg_load): Sync with xfns.c.
+       (tiff_image_p, tiff_load): Don't enclose declarations with #if
+       HAVE_TIFF.
+       (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type)
+       (tiff_image_p): Don't enclose with #if HAVE_TIFF.
+       [!HAVE_TIFF] (tiff_load): Use image_load_quicktime.
+       [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler):
+       New functions (from xfns.c).
+       [HAVE_TIFF] (tiff_load): Sync with xfns.c.
+       (gif_image_p, gif_load): Don't enclose declarations with #if HAVE_GIF.
+       (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p):
+       Don't enclose with #if HAVE_GIF.
+       [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is
+       animated gif.  Otherwise use image_load_quicktime.
+       [HAVE_GIF] (gif_lib.h): Temporarily define DrawText as
+       gif_DrawText to avoid conflict with QuickdrawText.h.
+       [HAVE_GIF] (gif_load): Sync with xfns.c.
+       (enum gs_keyword_index, gs_format, gs_image_p, gs_load)
+       [HAVE_GHOSTSCRIPT] (x_kill_gs_process): Sync with xfns.c (although
+       Ghostscript is not supported yet).
+       (syms_of_macfns): Initialize Qemboss, Qedge_detection, Qheuristic,
+       QCmatrix, QCcolor_adjustment, and QCmask.  Add DEFVAR_BOOL
+       cross_disabled_images (from xfns.c).  Remove #if 0 for supported
+       image types.  Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and
+       HAVE_PNG.  Add defsubr for Simage_size and Simage_mask_p.
+       (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and
+       HAVE_PNG.  Call EnterMovies to support animated gifs.
+       Call init_image_func_pointer to bind a symbol
+       _CGImageCreateWithPNGDataProvider if it is defined.
+
+       * macterm.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
+       (x_draw_bar_cursor): Sync declaration with xterm.c.
+       (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area)
+       (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen
+       graphics).
+       (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc.
+       (mac_draw_line_to_pixmap, XCreatePixmap)
+       (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap)
+       (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap):
+       New functions.
+       (mac_draw_bitmap) [TARGET_API_MAC_CARBON]:
+       Use GetPortBitMapForCopyBits instead of the cast to Bitmap *.
+       Cast bits to char *.
+       (reflect_byte): New function (from w32fns.c).
+       (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits
+       due to byte alignment.
+       (mac_scroll_area) [TARGET_API_MAC_CARBON]:
+       Use GetPortBitMapForCopyBits instead of the cast to Bitmap *.
+       (XSetForeground): Remove static (now used in macfns.c).
+       (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c).
+       (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c.
+       (x_setup_relief_color, x_setup_relief_colors, x_draw_box_rect)
+       (x_draw_glyph_string_box, x_draw_image_foreground)
+       (x_draw_image_foreground_1, x_draw_image_glyph_string)
+       (x_draw_stretch_glyph_string, x_draw_glyph_string)
+       (x_draw_hollow_cursor, x_draw_bar_cursor, mac_draw_window_cursor):
+       Sync with xterm.c.
+       (x_draw_relief_rect): Sync with xterm.c.  Make 1 pixel shorter
+       than the xterm.c version when a strictly horizontal or vertical
+       line is drawn.
+       (XTset_terminal_window): Add static.
+       (x_make_frame_visible): Add UNBLOCK_INPUT.
+       (x_free_frame_resources): New funcion (from xterm.c).
+       (XTread_socket): Call handle_tool_bar_click if mouse up/down event
+       occurs in tool bar area.
+       (mac_initialize_display_info): Remove dpyinfo->n_cbits.
+       Set dpyinfo->color_p.  Determine dpyinfo->n_planes using HasDepth.
+       Initialize image cache.
+       (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match):
+       Enclose unused functions with #if 0.
+       (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables.
+       (decode_mac_font_name): New function to apply code conversions
+       from a mac font name to an XLFD font name according to its script code.
+       (x_font_name_to_mac_font_name): Apply code conversion from an XLFD
+       font name to a mac font name according to REGISTRY and ENCODING fields.
+       (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font
+       whose name starts with `.'.
+       (init_font_name_table): Use decode_mac_font_name.  Add both
+       jisx0208.1983-sjis and jisx0201.1976-0 entries if the script code
+       of a font is smJapanese.
+       (mac_do_list_fonts): New function to list fonts that match a given
+       pattern.
+       (x_list_fonts, XLoadQueryFont): Use it.
+       (XLoadQueryFont): Set rbearing field for each variable width
+       character to avoid needless redraw.
+       (syms_of_macterm): Initialize Qbig5, Qcn_gb, Qsjis, and Qeuc_kr.
+
+2004-02-26  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (NREAD_INPUT_EVENTS): Temporarily increase to 512
+       as read_socket_hook handler on X aborts if buffer is too small
+       and W32 handler doesn't always check buffer limit.
+
+       * xdisp.c (handle_single_display_prop): Handle left-fringe and
+       right-fringe similar to a display margin image.  Specifically,
+       the characters having the fringe prop are no longer shown, and
+       we use IT_IMAGE/next_element_from_image with image_id = -1 to
+       do this.  Set fringe bitmap face_id in it->face_id.
+       (produce_image_glyph): Handle image_id < 0 as "no image" case, but
+       still realize it->face (i.e. the fringe bitmap face).
+
+2004-02-25  Miles Bader  <miles@gnu.org>
+
+       * xdisp.c (check_it): Check string/string_pos consistency.
+       (init_iterator): Initialize string-related fields properly.
+
+2004-02-11  Miles Bader  <miles@gnu.org>
+
+       * xdisp.c (produce_image_glyph): Force negative descents to zero.
+
+2004-02-10  Miles Bader  <miles@gnu.org>
+
+       * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked);
+       BLOCK_INPUT can be nested, so it doesn't make much sense.
+
+2004-02-24  Michael Mauger  <mmaug@yahoo.com>
+
+       * w32fns.c (slurp_file, xbm_scan, xbm_load_image)
+       (xbm_read_bitmap_data): Use unsigned char for image data.
+
+2004-02-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * abbrev.c (Finsert_abbrev_table_description): Doc fix.
+
+2004-02-22  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_draw_fringe_bitmap): Draw overlaid bitmaps
+       correctly over other bitmaps.
+
+2004-02-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (USAGE1): Split into two halves.
+       (USAGE2): Second half of the old USAGE1.
+       (USAGE3): Rename from USAGE2.
+       (USAGE4): Rename from USAGE3.
+
+2004-02-21  Juri Linkov  <juri@jurta.org>
+
+       * emacs.c (USAGE1): Add --no-desktop.  Move --display from USAGE2.
+       Fix --multibyte.  Move --help, --version to USAGE2.  Add alias
+       --file.  Fix -f, -l.  Sort options.  Untabify.
+       (USAGE2): Add -hb.  Fix --name, --title.  Sort options.  Untabify.
+
+2004-02-19  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * category.c (Fdefine_category, Fcategory_docstring)
+       (Fget_unused_category, Fset_category_table)
+       (Fcategory_set_mnemonics): Doc fixes.
+
+2004-02-20  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c: Undo 2004-02-16 and 2004-02-17 changes.
+       The following changes are relative to the 2004-01-21 revision.
+       (NREAD_INPUT_EVENTS): Define as max number of input events to read
+       in one call to read_socket_hook.  Value is 8.
+       (read_avail_input): Separate and rework handling of read_socket_hook
+       and non-read_socket_hook cases.  Use smaller input_event buffer
+       in read_socket_hook case, and repeat if full buffer is read.
+       Use new local variable 'discard' to skip input after C-g.
+       In non-read_socket_hook case, just use a single input_event, and
+       call kbd_buffer_store_event on the fly for each character.
+
+2004-02-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (union Lisp_Object): Give a more precise type for `type'.
+       Remove unused `gu' alternative.
+
+2004-02-19  Andreas Schwab  <schwab@suse.de>
+
+       * fringe.c (Fdefine_fringe_bitmap): Use && instead of & to avoid
+       warning.
+
+2004-02-18  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_window_cursor_type, display_and_set_cursor):
+       Fix last change.
+
+2004-02-17  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (fast_find_position): Fix return value of new version;
+       it was inverted compared to the 21.1 version.
+       (get_window_cursor_type): Don't look at glyph if NULL.
+       (display_and_set_cursor): Set glyph to NULL if cursor in fringe.
+
+       * keyboard.c: Rework previous change; it didn't consider that the
+       buf array was allocated on the stack.
+       (prev_read): Remove variable.
+       (read_avail_input_buf): New static event buffer array.
+       (in_read_avail_input): New static variable to handle re-entrancy.
+       (read_avail_input): Change buf to pinter to read_avail_input_buf.
+       Use in_read_avail_input to handle re-entrance; when re-entered,
+       fully initialize and use tmp_buf array instead of read_avail_input_buf.
+       Do not initialize read_avail_input_buf in full here; instead assume it
+       is always cleared on entry.  To ensure that, we clear (just) the
+       entries that were used before we return.
+       (init_keyboard): Initialize read_avail_input_buf here.
+
+2004-02-16  Jesper Harder  <harder@ifa.au.dk>
+
+       * cmds.c (Fend_of_line): Doc fix.
+
+2004-02-16  Dmitry Antipov  <dmantipov@yandex.ru>  (tiny change)
+
+       * keyboard.c (prev_read): New static variable.
+       (read_avail_input): Use it to zero out only those slots in buf[]
+       that were used last time we were called.
+
+2004-02-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * Makefile.in (obj): Move fringe.o from here...
+       (XOBJ, MAC_OBJ): ...to here.
+
+2004-02-16  Stephen Eglen  <stephen@gnu.org>
+
+       * fringe.c (init_fringe_bitmap): Define j in MAC_OS code.
+
+2004-02-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * data.c (Fbyteorder):
+       * fringe.c (Fdefine_fringe_bitmap):
+       * xdisp.c (handle_single_display_prop):
+       * xselect.c (x_handle_dnd_message): Lisp_Object/int mixup.
+
+2004-02-16  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
+
+2004-02-15  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (Vmac_emulate_three_button_mouse): New variable for
+       controlling emulation of a three button mouse with option and
+       command keys.
+       (Qreverse, mac_get_enumlated_btn): Handle the emulation.
+       (mac_event_to_emacs_modifiers, XTread_socket): Ditto.
+
+2004-02-15  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (syms_of_buffer): Doc fix for indicate-buffer-boundaries.
+
+       * fringe.c (init_fringe_bitmap) [MAC_OS, WORDS_BIG_ENDIAN]:
+       Perform byte-swapping.
+
+2004-02-14  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (struct draw_fringe_bitmap_params): Change member
+       bits from char to short to facilitate wider bitmaps.
+       (struct redisplay_interface): Fix prototype of define_fringe_bitmap
+       member.
+
+       * fringe.c (struct fringe_bitmap): Change member bits from char to
+       short to facilitate 16 bits wide bitmaps.  Modify all standard
+       bitmaps accordingly.
+       (BYTES_PER_BITMAP_ROW, STANDARD_BITMAP_HEIGHT): New macros.
+       (FRBITS): Use STANDARD_BITMAP_HEIGHT instead of just sizeof.
+       (draw_fringe_bitmap): Ditto.
+       (init_fringe_bitmap) [MAC_OS]: Don't bitswap.
+       (init_fringe_bitmap) [HAVE_X_WINDOWS]: Enhance bitswapping to
+       handle up to 16 bits wide bitmaps.
+       (Fdefine_fringe_bitmap): Doc fix.  Handle wider bitmaps.
+       (Ffringe_bitmaps_at_pos): Add missing arg declarations.
+
+       * macterm.c (mac_draw_bitmap): Handle 16 bits wide bitmaps directly.
+       (x_draw_fringe_bitmap): Use enhanced mac_draw_bitmap, so we no longer
+       need to call mac_create_bitmap_from_bitmap_data and mac_free_bitmap.
+
+       * w32term.c (w32_define_fringe_bitmap): Bitmaps are now 16 bits wide,
+       so it is no longer necessary to expand them here.
+
+       * xterm.c (x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits).
+
+2004-02-12  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Fwindow_fringes): Doc fix.
+
+2004-02-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xselect.c (x_get_foreign_selection): Add new optional parameter
+       time_stamp.
+       (Fx_get_selection_internal): Ditto, pass time_stamp to
+       x_get_foreign_selection.
+
+       * data.c (Fbyteorder): New function.
+
+2004-02-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * atimer.c: Move include stdio.h to same place as in other files.
+
+       * region-cache.c: Ditto.
+
+       * sysdep.c: Ditto.
+
+       * xfaces.c: Ditto.
+
+2004-02-09  Sam Steingold  <sds@gnu.org>
+
+       * w32term.c (w32_draw_fringe_bitmap): Fix a typo in the last patch.
+
+2004-02-09  Kim F. Storm  <storm@cua.dk>
+
+       * fringe.c: New file.  Move original fringe related declarations
+       and code from dispextern.h and xdisp.c here.
+       Rework code to support user defined fringe bitmaps, redefining
+       standard bitmaps, ability to overlay user defined bitmap with
+       overlay arrow bitmap, and add faces to bitmaps.
+       (Voverflow_newline_into_fringe): Declare here.
+       (enum fringe_bitmap_align): New enum.
+       (..._bits): All bitmaps are now defined without bitswapping; that
+       is now done in init_fringe_once (if necessary).
+       (standard_bitmaps): New array with specifications for the
+       standard fringe bitmaps.
+       (fringe_faces): New array.
+       (valid_fringe_bitmap_id_p): New function.
+       (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap.
+       (draw_fringe_bitmap): New function which draws fringe bitmap,
+       possibly overlaying bitmap with cursor in right fringe or the
+       overlay arrow in the left fringe.
+       (update_window_fringes): Do not handle overlay arrow here.
+       Compare and copy fringe bitmap faces.
+       (init_fringe_bitmap): New function.
+       (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to
+       define and destroy user defined fringe bitmaps.
+       (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap.
+       (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps.
+       (syms_of_fringe): New function.  Defsubr new DEFUNs.
+       DEFVAR_LISP Voverflow_newline_into_fringe.
+       (init_fringe_once, init_fringe): New functions.
+       (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions.
+
+       * Makefile.in (obj): Add fringe.o.
+       (fringe.o): New dependencies.
+
+       * dispextern.h (FRINGE_ID_BITS): New definition for number of
+       bits allocated to hold a fringe number.  Increase number of bits
+       from 4 to 8 to allow user defined fringe bitmaps.
+       (struct glyph_row, struct it): New members left_user_fringe_bitmap,
+       left_user_fringe_face_id, right_user_fringe_bitmap,
+       right_user_fringe_face_id.
+       (enum fringe_bitmap_type, struct fringe_bitmap, fringe_bitmaps):
+       Move to new file fringe.c.
+       (MAX_FRINGE_BITMAPS): Define here.
+       (struct draw_fringe_bitmap_params): New members bits, cursor_p,
+       and overlay_p.  Change member which to int.
+       (struct redisplay_interface): New members define_fringe_bitmap
+       and destroy_fringe_bitmap.
+       (valid_fringe_bitmap_id_p): Add prototype.
+       (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: Add prototypes.
+
+       * dispnew.c (row_equal_p): Compare fringe bitmap faces and overlay
+       arrows.
+       (update_frame): Do flush_display if force_flush_display_p to
+       ensure display (specifically fringes) are updated in a timely
+       manner when resizing the frame by dragging the mouse.
+       (update_window_line): Update row if overlay arrow changed.
+       (scrolling_window): Redraw fringe bitmaps if fringe bitmap faces
+       or overlay arrow changed.
+
+       * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Call init_fringe_once,
+       syms_of_fringe, and init_fringe.
+
+       * frame.h (struct frame): New member force_flush_display_p.
+
+       * lisp.h (syms_of_fringe, init_fringe, init_fringe_once):
+       Add prototypes.
+
+       * macterm.c (mac_draw_bitmap): Add overlay_p arg.
+       (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps;
+       thanks to YAMAMOTO Mitsuharu for advice on how to do this.
+       Use cursor color for displaying cursor in fringe.
+       (x_redisplay_interface): Add null handlers for
+       define_fringe_bitmap and destroy_fringe_bitmap functions.
+
+       * w32term.c (w32_draw_fringe_bitmap): Copy unadapted code from
+       xterm.c to handle overlayed fringe bitmaps and to use cursor color
+       for displaying cursor in fringe.
+       (w32_define_fringe_bitmap, w32_destroy_fringe_bitmap): New W32
+       specific functions to define and destroy fringe bitmaps in fringe_bmp.
+       (w32_redisplay_interface): Add them to redisplay_interface.
+       (w32_term_init): Call w32_init_fringe instead of explicitly
+       defining fringe bitmaps in fringe_bmp array.
+       (x_delete_display): Call w32_reset_fringes instead of explicitly
+       destroying fringe bitmaps in fringe_bmp array.
+
+       * xdisp.c (Voverflow_newline_into_fringe, syms_of_xdisp)
+       (left_bits, right_bits, up_arrow_bits, down_arrow_bits)
+       (continued_bits, continuation_bits, ov_bits, first_line_bits)
+       (last_line_bits, filled_box_cursor_bits, hollow_box_cursor_bits)
+       (bar_cursor_bits, hbar_cursor_bits, zv_bits, hollow_square_bits)
+       (fringe_bitmaps, draw_fringe_bitmap, draw_row_fringe_bitmaps)
+       (draw_window_fringes, compute_fringe_widths, update_window_fringes):
+       Move fringe handling vars and code to new file fringe.c.
+       (handle_display_prop): Handle left-fringe and right-fringe
+       display properties; store user fringe bitmaps in iterator.
+       (move_it_in_display_line_to): Handle cursor in fringe at eob.
+       (clear_garbaged_frames): Set force_flush_display_p if resized.
+       (redisplay_window): Redraw fringe bitmaps if not just_this_one_p.
+       (display_line): Handle cursor in fringe at eob.
+       (display_line): Set row user fringe bitmaps from iterator.
+
+       * xterm.c (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
+       Use cursor color for displaying cursor in fringe.
+       (x_redisplay_interface): Add null handlers for
+       define_fringe_bitmap and destroy_fringe_bitmap functions.
+
+2004-02-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * macfns.c (Fx_change_window_property): Make doc string and
+       parameters same as for X version.
+
+       * w32fns.c (Fx_change_window_property): Ditto.
+
+2004-02-07  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (hscroll_window_tree): Position cursor near to right
+       margin in hscrolled window when jumping to end of line (rather
+       than centering cursor).
+
+       * process.c (wait_reading_process_input): Don't do adaptive read
+       buffering if waiting for a specific process.
+
+2004-02-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * minibuf.c (Fminibufferp, Fread_from_minibuffer)
+       (Fread_minibuffer, Feval_minibuffer)
+       (Fread_string, Fread_no_blanks_input)
+       (Fcompleting_read): Doc fixes.
+       (syms_of_minibuf): Doc fixes for minibuffer-completion-table and
+       completion-regexp-list.  Define Qcase_fold_search and staticpro it.
+       (read_minibuf): Fix initial comment.
+       (Ftry_completion, Fall_completions, Ftest_completion): Bind
+       case-fold-search to the value of completion-ignore-case when
+       checking completion-regexp-list.
+       (Fdisplay_completion_list): Make it handle arguments that are
+       symbols.  Doc fix.
+
+2004-02-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h: Add declaration of free_frame_menubar.
+
+       * xfns.c (x_create_bitmap_mask): Removed unused variable depth.
+       (x_set_menu_bar_lines): Added ! defined USE_GTK for olines.
+       (Fx_change_window_property): Add declaration of parameters type and
+       format.  Remove unused variable cons.
+
+       * xselect.c: Include stdio.h.
+
+2004-02-05  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (Fset_char_table_range): Fix previous change.
+
+       * buffer.c (Fset_buffer_multibyte): Fix docstring.
+
+2004-02-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * editfns.c (Fchar_after, Fchar_before): Doc fixes.
+
+2004-02-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (Vmouse_events): Rename from Vmenu_events.
+       (syms_of_keymap): Add mouse-[45], header-line, and mode-line to it.
+
+2004-02-04  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (Fset_char_table_range): Handle charsets ascii,
+       eight-bit-control, and eight-bit-graphic correctly.
+
+2004-02-03  Jason Rumney  <jasonr@gnu.org>
+
+       * w32select.c (Fw32_set_clipboard_data): Make coding iso2022 safe.
+
+       * w32fns.c (x_to_w32_font): Likewise.
+
+2004-02-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h: Add x_handle_dnd_message, x_check_property_data,
+       x_fill_property_data, x_property_data_to_lisp and check_x_display_info.
+
+       * xterm.c (handle_one_xevent): Call x_handle_dnd_message for
+       ClientMessages.
+
+       * xselect.c: Include termhooks.h and X11/Xproto.h.
+       (x_check_property_data, x_fill_property_data)
+       (x_property_data_to_lisp, mouse_position_for_drop)
+       (Fx_get_atom_name, x_handle_dnd_message): New functions for DND support.
+       (Fx_send_client_event): Move here from xfns.c.
+       (syms_of_xselect): Add Sx_get_atom_name and Sx_send_client_message.
+
+       * xfns.c (x-send-client-message): Move to xselect.c.
+       (Fx_change_window_property): Add optional arguments TYPE, FORMAT and
+       OUTER_P.
+       (Fx_window_property): Add optional arguments TYPE, SOURCE, DELETE_P,
+       VECTOR_RET_P.  Handle AnyPropertyType.  Call x_property_data_to_lisp
+       if vector_ret_p is true.
+       (syms_of_xfns): Sx_send_client_message moved to xselect.c.
+
+2004-02-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * fileio.c (Fcopy_file): If NEWNAME is a directory, expand the
+       basename of FILE relative to it, not FILE itself.
+
+2004-02-02  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (coding_restore_composition): Check invalid
+       composition data more rigidly.
+
+2004-01-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fileio.c (Fread_file_name_internal): Correctly handle the case
+       where insert-default-directory is nil.
+       (Fread_file_name): Always return an empty string if the user exits
+       with an empty minibuffer.  Adapt the docstring accordingly.
+       (syms_of_fileio): Adapt the docstring of insert-default-directory
+       to the change in Fread_file_name.
+
+2004-01-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * alloca.c [!alloca]: Fix the prototype for xfree.
+
+2004-01-29  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (string_char_to_byte): Optimize for ASCII only string.
+       (string_byte_to_char): Likewise.
+
+2004-01-28  Peter Runestig  <peter@runestig.com>
+
+       * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
+
+2004-01-27  Steven Tamm  <steventamm@mac.com>
+
+       * unexmacosx.c (unexec_copy): Do not copy more than was
+       requested to prevent overwriting during unexec.
+
+2004-01-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * process.c (sigchld_handler): Add comment about not calling malloc.
+
+       * process.h: Add extern to synch_process_termsig.
+
+2004-01-27  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (make_mac_frame, make_mac_terminal_frame):
+       Move setting of scroll bars from make_mac_frame to
+       make_mac_terminal_frame to prevent clobbering of scroll-bar-mode.
+
+2004-01-26  Richard M. Stallman  <rms@gnu.org>
+
+       * search.c (Freplace_match): Handle nonexistent
+       back-references properly.
+
+2004-01-03  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (decode_any_window): New function.
+       (Fwindow_height, Fwindow_width, Fwindow_edges)
+       (Fwindow_pixel_edges, Fwindow_inside_edges)
+       (Fwindow_inside_pixel_edges): Use decode_any_window.
+
+2004-01-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * process.h: synch_process_termsig new variable.
+
+       * callproc.c: Define synch_process_termsig.
+       (Fcall_process): Initiate synch_process_termsig to zero and
+       check if non-zero and get signal name after subprocess has ended.
+
+       * process.c (sigchld_handler): Set synch_process_termsig
+       if terminated by a signal.  synch_process_death setting removed.
+
+       * sysdep.c (mkdir, rmdir): Also check synch_process_termsig.
+
+2004-01-26  Andreas Schwab  <schwab@suse.de>
+
+       * print.c (print_preprocess): Declare size as EMACS_INT to not
+       lose bits.
+       (print_object): Likewise.
+       * alloc.c (Fpurecopy): Likewise.
+
+2004-01-25  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * window.c (Fwindow_minibuffer_p): Doc fix.
+
+2004-01-24  Jonathan Yavner  <jyavner@member.fsf.org>
+
+       * editfns.c (Fformat): Make both passes accept the same set of flags.
+
+2004-01-23  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (Fmd5): If OBJECT is a buffer different from the current
+       one, set buffer to OBJECT temporarily.
+
+2004-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.c (kbd_buffer_gcpro): Remove.
+       (kbd_buffer_store_event, clear_event, Fdiscard_input)
+       (stuff_buffered_input, init_keyboard, syms_of_keyboard):
+       Don't initialize and/or maintain the variable any more.  It was made
+       redundant by my commit of 2003-06-15.
+
+       * lisp.h [USE_LSB_TAG && !DECL_ALIGN]: Signal an error.
+
+2004-01-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * lisp.h: Add undef DECL_ALIGN.
+
+2004-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * process.c (wait_reading_process_input) [SYNC_INPUT]:
+       Check interrupt_input_pending explicitly.
+
+       * lisp.h (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
+
+       * keyboard.c (handle_async_input): New fun,
+       extracted from input_available_signal.
+       (input_available_signal, reinvoke_input_signal): Use it.
+
+2004-01-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * buffer.c (buffer_defaults, buffer_local_symbols): Use DECL_ALIGN.
+
+       * lisp.h [USE_LSB_TAG]: Add definitions for Lisp_Object value
+       manipulation macros for when tags are in the lower bits.
+       (struct Lisp_Free) [USE_LSB_TAG]: Add padding.
+       (DECL_ALIGN): New macro.
+       (DEFUN): Use it.
+
+       * lisp.h [ENABLE_CHECKING]: Don't force union type.
+
+       * s/darwin.h (__attribute__): Remove outdated workaround.
+
+       * macterm.c (main) [USE_LSB_TAG]: Don't range check the ram.
+
+       * alloc.c (lisp_malloc, lisp_align_malloc) [USE_LSB_TAG]:
+       Don't check range of malloc address.
+       (pure_alloc) [USE_LSB_TAG]: Enforce alignment.
+
+       * process.c (wait_reading_process_input): Lisp_Object/int mixup.
+
+       * dired.c (Ffile_attributes): Lisp_Object/int mixup.
+
+2004-01-19  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (fontset_font_pattern): Fix previous change.
+
+2004-01-16  Miles Bader  <miles@gnu.ai.mit.edu>
+
+       * xdisp.c (Voverflow_newline_into_fringe)
+       (move_it_in_display_line_to, redisplay_internal)
+       (update_window_fringes, redisplay_window, display_line, window):
+       Add `#ifdef HAVE_WINDOW_SYSTEM' around fringe-drawing stuff, so
+       that it compiles without a window-system.
+       * dispnew.c (direct_output_for_insert, update_window): Likewise.
+
+2004-01-16  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.h (struct buffer): New member indicate_buffer_boundaries.
+
+       * buffer.c (init_buffer_once): Set buffer_defaults and
+       buffer_local_flags for indicate_buffer_boundaries.
+       (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro
+       default- variable for it.
+
+       * dispextern.h (struct glyph_row): New members left_fringe_bitmap,
+       right_fringe_bitmap, redraw_fringe_bitmaps_p for new fringe handling.
+       New members exact_window_width_line_p and cursor_in_fringe_p for
+       overflowing newlines into right fringe.
+       New members indicate_bob_p, indicate_top_line_p, indicate_eob_p,
+       and indicate_bottom_line_p for buffer boundaries and scrolling.
+       (enum fringe_bitmap_type): Add UP_ARROW_BITMAP, DOWN_ARROW_BITMAP,
+       FIRST_LINE_BITMAP, LAST_LINE_BITMAP, FILLED_BOX_CURSOR_BITMAP,
+       HOLLOW_BOX_CURSOR_BITMAP, BAR_CURSOR_BITMAP, HBAR_CURSOR_BITMAP,
+       and HOLLOW_SQUARE_BITMAP.
+       (draw_fringe_bitmap, draw_window_fringes, update_window_fringes):
+       Add prototypes.
+
+       * dispnew.c (row_equal_p, update_window_line): Compare fringe bitmaps
+       instead of related indicator fields.
+       Compare exact_window_width_line_p and cursor_in_mouse_face_p indicators.
+       (direct_output_for_insert): Handle exact width lines like
+       contined lines.  Call update_window_fringes.
+       (update_window): Call update_window_fringes.
+       (scrolling_window): Don't skip desired rows with changed bitmaps.
+       Check if fringe bitmaps changes when assigning scrolled rows.
+
+       * xdisp.c (Voverflow_newline_into_fringe): New variable.
+       (IT_OVERFLOW_NEWLINE_INTO_FRINGE): New macro.
+       (move_it_in_display_line_to): Overflow newline into fringe for
+       rows that are exactly as wide as the window.
+       (up_arrow_bits, down_arrow_bits, first_line_bits, last_line_bits)
+       (filled_box_cursor_bits, hollow_box_cursor_bits, bar_cursor_bits)
+       (hbar_cursor_bits, hollow_square_bits): New fringe bitmaps.
+       (fringe_bitmaps): Add new bitmaps.
+       (draw_fringe_bitmap): Make extern.  Remove WHICH arg.
+       Select proper bitmap for cursor in fringe when appropriate.
+       Handle alignment of bitmap to top or bottom of row.
+       (draw_row_fringe_bitmaps): Don't select bitmaps here; that is now
+       done by update_window_fringes.
+       (update_window_fringes, draw_window_fringes): New functions.
+       (redisplay_internal): Call update_window_fringes in case only
+       cursor row is updated.
+       (redisplay_window): Call update_window_fringes.
+       Explicitly call draw_window_fringes if redisplay was done using
+       the current matrix or the overlay arrow is in the window.
+       (try_window_reusing_current_matrix): Mark scrolled rows for
+       fringe update (to update buffer-boundaries / scrolling icons).
+       (find_last_unchanged_at_beg_row): Handle exact width lines line
+       continued lines.
+       (display_line): Overflow newline into fringe for rows that are
+       exactly as wide as the window.  Don't append space for newline
+       in this case.
+       (notice_overwritten_cursor): Explicitly clear cursor bitmap
+       in fringe as if it had been overwritten.
+       (erase_phys_cursor): Erase cursor bitmap in fringe.
+       (syms_of_xdisp): Mark show-trailing-whitespace and
+       void-text-area-pointer as user options.
+       DEFVAR_LISP Voverflow_newline_into_fringe.  Enable by default.
+
+       * xterm.c (x_update_window_end): Call draw_window_fringes.
+       (x_after_update_window_line): Just set redraw_fringe_bitmaps_p
+       in row instead of actually drawing fringe bitmaps.
+       (x_draw_fringe_bitmap): Handle bottom aligned bitmaps.
+       (x_draw_window_cursor): Draw cursor in fringe.
+
+       * w32term.c (x_update_window_end): Call draw_window_fringes.
+       (x_after_update_window_line): Just set redraw_fringe_bitmaps_p
+       in row instead of actually drawing fringe bitmaps.
+       (w32_draw_fringe_bitmap): Handle bottom aligned bitmaps.
+       (w32_draw_window_cursor): Draw cursor in fringe.
+
+       * macterm.c (x_update_window_end): Call draw_window_fringes.
+       (x_after_update_window_line): Just set redraw_fringe_bitmaps_p
+       in row instead of actually drawing fringe bitmaps.
+       (x_draw_fringe_bitmap): Handle bottom aligned bitmaps.
+       (mac_draw_window_cursor): Draw cursor in fringe.
+
+2004-01-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (handle_one_xevent): Don't handle characters that are part
+       of an old style (XLookupString) compose sequence.
+
+2004-01-15  Kenichi Handa  <handa@m17n.org>
+
+       * search.c (Freplace_match): Use make_multibyte_string or
+       make_unibyte_string according to the buffer multibyteness.
+
+2004-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (struct interval_block, struct string_block)
+       (struct symbol_block, struct marker_block, live_string_p)
+       (live_cons_p, live_symbol_p, live_float_p, live_misc_p):
+       Better preserve alignment for objects in blocks.
+       (FLOAT_BLOCK_SIZE): Adjust for possible alignment padding.
+
+       * lread.c (defvar_per_buffer): Remove dead declaration.
+
+       * macterm.c (do_check_ram_size): Don't hardcode the lisp address
+       space size.
+
+2004-01-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (popup_get_selection): Check new parameter down_on_keypress
+       if a key press should pop down.  Only pop down if a key is pressed
+       outside the menu/dialog.
+       (create_and_show_popup_menu): Pass 0 for down_on_keypress to
+       popup_get_selection.
+       (create_and_show_dialog): Pass 1 for down_on_keypress to
+       popup_get_selection.
+
+2004-01-11  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * alloc.c (allocate_vectorlike): Surround calls to mallopt with
+       BLOCK/UNBLOCK_INPUT.
+
+2004-01-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (Fx_popup_dialog): Add an Ok button if no buttons are
+       specified.
+
+2004-01-08  Kenichi Handa  <handa@m17n.org>
+
+       * editfns.c (Fformat): Fix '&' to '&&'.
+
+2004-01-08  Andreas Schwab  <schwab@suse.de>
+
+       * print.c (print_preprocess) <case Lisp_Vectorlike>: Only mask
+       size if PSEUDOVECTOR_FLAG is set.
+
+2004-01-07  Kenichi Handa  <handa@m17n.org>
+
+       * charset.c (Fdeclare_equiv_charset): Fix docstring.
+
+       * fontset.c (fontset_ref_via_base): Fix previous change.
+
+2004-01-07  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (read_process_output): Only activate adaptive
+       buffering if we read less than 256 bytes at a time.
+
+2004-01-06  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (buffer_posn_from_coords): Return both buffer/string
+       object and image object.  Return glyph width and height.
+       (mode_line_string, marginal_area_string): Ditto.
+
+       * dispextern.h (buffer_posn_from_coords, mode_line_string)
+       (marginal_area_string): Fix prototypes.
+
+       * keyboard.h (POSN_POSN, POSN_SET_POSN): Rename macros from
+       POSN_BUFFER_POSN and POSN_SET_BUFFER_POSN.  All uses changed.
+       (POSN_INBUFFER_P, POSN_BUFFER_POSN): New macros.
+
+       * keyboard.c (make_lispy_position): Use modified mode_line_string,
+       buffer_posn_from_coords, and marginal_area_string functions to
+       include both string object and image object in the lispy position.
+       Also add actual glyph width and height to position.
+       (read_key_sequence): Use real buffer position from mouse
+       event to find keymap property even when click is in marginal area.
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Use modified
+       mode_line_string and marginal_area_string functions to handle
+       both string object and image object properties.
+
+2004-01-06  Andreas Schwab  <schwab@suse.de>
+
+       * syntax.c (skip_chars): Treat '-' at end of string as ordinary
+       character.
+
+2004-01-02  Andreas Schwab  <schwab@suse.de>
+
+       * macterm.c (emacs_options, x_initialized, same_x_server):
+       Remove unused (and duplicated) definitions.
+
+2004-01-02  Kim F. Storm  <storm@cua.dk>
+
+       * process.h (struct Lisp_Process): New members for adaptive read
+       buffering: adaptive_read_buffering, read_output_delay, and
+       read_output_skip.
+
+       * process.c (ADAPTIVE_READ_BUFFERING): New conditional.
+       (READ_OUTPUT_DELAY_INCREMENT, READ_OUTPUT_DELAY_MAX)
+       (READ_OUTPUT_DELAY_MAX_MAX): New constants.
+       (process_output_delay_count, process_output_skip): New vars.
+       (Vprocess_adaptive_read_buffering): New variable.
+       (make_process): Initialize adaptive read buffering members.
+       (Fstart_process): Set adaptive_read_buffering member.
+       (deactivate_process): Cleanup adaptive read buffering.
+       (wait_reading_process_input): Temporarily omit delayed
+       subprocesses from the set of file descriptors to read from;
+       adjust the select timeout if we skipped any subprocesses.
+       (read_process_output): Increase adaptive read buffering delay if
+       we read less than a full buffer; reduce delay when we read a
+       full buffer.
+       (send_process): Simplify using local Lisp_Process var.
+       Reset adaptive read buffering delay after write.
+       (init_process): Initialize process_output_delay_count and
+       process_output_skip.
+       (syms_of_process): DEFVAR_LISP Vprocess_adaptive_read_buffering.
+
+2004-01-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_text_out): Use s->font, for consistency with callers.
+
+2003-12-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * print.c (Ferror_message_string): Add hyperlink in the docstring
+       to the definition of `signal' in the Elisp manual.
+       * eval.c (Fsignal): Ditto.
+
+2003-12-29  James Clark  <jjc@jclark.com>
+
+       * fns.c (internal_equal): Return t for two NaN arguments.
+
+2003-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * data.c (store_symval_forwarding): Handle setting
+       default-fill-column, etc., by changing the value in
+       buffers that use the default.
+
+       * minibuf.c (Fset_minibuffer_window): Doc fix.
+
+       * fileio.c (choose_write_coding_system): Ignore auto_saving
+       if using the visited file for auto saves.
+       (Fwrite_region): Don't update SAVE_MODIFF
+       if auto-saving in visited file.
+
+2003-12-29  Kenichi Handa  <handa@m17n.org>
+
+       * dispextern.h (face_font_available_p): Extern it.
+
+       * fontset.c (Voverriding_fontspec_alist): New variable.
+       (lookup_overriding_fontspec): New function.
+       (fontset_ref_via_base): Call lookup_overriding_fontspec if necessary.
+       (fontset_font_pattern): Likewise.
+       (regulalize_fontname): New function.
+       (Fset_fontset_font): Call regulalize_fontname.
+       (Fset_overriding_fontspec_internal): New function.
+       (syms_of_fontset): Initialize and staticpro Voverriding_fontspec_alist.
+       Defsubr Sset_overriding_fontspec_internal.
+
+       * xfaces.c (face_font_available_p): New function.
+
+2003-12-28  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (Fother_buffer): Don't crash if BUF is nil
+       or if its name is nil.
+
+       * buffer.c (Fkill_buffer): Don't delete auto-save file
+       if it's the same as the visited file.
+
+2003-12-28  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * coding.c (Fcheck_coding_system): Doc fix.
+
+2003-12-28  Kim F. Storm  <storm@cua.dk>
+
+       * Makefile.in (eval.o): Depend on dispextern.h.
+
+       * dispnew.c (buffer_posn_from_coords): Fix calculation of dy for
+       image glyph using image's ascent.
+       (mode_line_string): Return image glyph as object clicked on.
+       Adjust y0 for image glyph using image's ascent.
+
+       * dispextern.h (FACE_ID_BITS, MAX_FACE_ID): New defines.
+       (struct glyph): New members, ascent and descent.  Used to save
+       this glyph's ascent and descent, instead of having.
+       (struct glyph): Declare member face_id using FACE_ID_BITS.
+       (find_hot_spot): Add prototype.
+
+       * keyboard.c (Qimage): Remove extern (now in lisp.h).
+       (QCmap): Declare extern.
+       (make_lispy_position): When position is inside image hot-spot,
+       use hot-spot element's id as posn element.
+
+       * lisp.h (IMAGEP): New macro to test for image object type.
+       (Qimage): Declare extern.
+
+       * macfns.c (Qimage): Remove extern (now in lisp.h).
+       (valid_image_p, parse_image_spec): Use IMAGEP macro.
+
+       * macterm.c (Qface, Qmouse_face): Remove unused externs.
+
+       * w32fns.c (Qimage): Remove extern (now in lisp.h).
+       (valid_image_p, parse_image_spec): Use IMAGEP macro.
+
+       * w32menu.c (Qmouse_click, Qevent_kind): Remove unused externs.
+
+       * w32term.c (Qface, Qmouse_face): Remove unused externs.
+
+       * xdisp.c (Qarrow, Qhand, Qtext, Qpointer): New variables for
+       pointer types.
+       (Qrelative_width, Qalign_to): Remove unused variables.
+       (Vvoid_text_area_pointer): Replace Vshow_text_cursor_in_void.
+       (QCmap, QCpointer, Qrect, Qcircle, Qpoly): New variables for image
+       maps.
+       (x_y_to_hpos_vpos): Return glyph relative coordinates through new
+       dx and dy args.  Remove buffer_only_p arg (always 0).  Simplify
+       code accordingly.
+       (get_glyph_string_clip_rect): Draw cursor using glyph's rather
+       than row's ascent and height, to get sensible height on tall rows.
+       (build_desired_tool_bar_string): Remove Qimage extern.
+       (get_tool_bar_item): Fix call to x_y_to_hpos_vpos.
+       (produce_image_glyph): Adjust it.ascent to minimum row ascent if
+       image glyph is alone on the last line.
+       (append_glyph, append_composite_glyph, produce_image_glyph)
+       (append_stretch_glyph): Set glyph's ascent and descent.
+       (on_hot_spot_p): New function to check if position is inside an
+       rectangular, circular, or polygon-shaped image hot-spot,
+       (find_hot_spot): New function to search for image hot-spot.
+       (Flookup_image_map): New defun to search for image hot-spot.
+       (define_frame_cursor1): New aux function to determine frame
+       pointer.
+       (note_mode_line_or_margin_highlight, note_mouse_highlight): Handle
+       `pointer' text property and :pointer image property to control
+       frame pointer shape.  Detect image hot-spots for pointer and
+       help_echo properties.  Use define_frame_cursor1.
+       (note_mouse_highlight): Use Vvoid_text_area_pointer.
+       (syms_of_xdisp): Defsubr new defun.  Intern and staticpro new
+       variables.  DEFVAR_LISP Vvoid_text_area_pointer instead of
+       Vshow_text_cursor_in_void.
+
+       * xfaces.c (cache_face): Abort if c->size exceeds MAX_FACE_ID.
+
+       * xfns.c (x_set_mouse_color): Remove bogus x_check_errors call.
+       (Qimage): Remove extern (now in lisp.h).
+       (valid_image_p, parse_image_spec): Use IMAGEP macro.
+
+       * xmenu.c (show_help_event): Remove unused code.
+
+       * xterm.c (Qface, Qmouse_face): Remove unused externs.
+       (x_draw_hollow_cursor): Draw cursor using glyph's rather than
+       row's ascent and descent, to get a sensible height on tall rows.
+
+2003-12-25  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * minibuf.c (Fcompleting_read): Undo previous change.
+
+2003-12-25  Lars Hansen  <larsh@math.ku.dk>
+
+       * dired.c (Fdirectory_files, Fdirectory_files_and_attributes):
+       Arguments GCPRO'ed in call to file name handler.
+
+2003-12-25  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * termcap.c (tgetst1): Scan for "%pN"; if all
+       N are continuous in [1,9], remove all "%pN".
+
+2003-12-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_frame_set_char_size): Call x_wm_set_size_hint.
+
+       * xfaces.c (lface_fully_specified_p): Take into account that
+       MAC OS always have unspecified stipple.
+
+2003-12-24  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * tparam.c (tparam1): Add handling for `%pN', which
+       means use param N for the next substitution.
+
+2003-12-24  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * xfaces.c (Fcolor_gray_p): Fix omission bug:
+       In case `frame' is nil, consult the selected frame.
+       (Fcolor_supported_p): Likewise.
+
+2003-12-23  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fns.c (Frandom, Fstring_make_multibyte, Fset_char_table_range):
+       Doc fixes.
+
+       * minibuf.c (read_minibuf): Allow INITIAL to be a cons of a string
+       and an integer.  Adapt the introductory comment accordingly.
+       (Fread_from_minibuffer): Delete code moved into read_minibuf.
+       Doc fix.
+       (Fread_minibuffer, Fread_no_blanks_input): Adapt to changes in
+       read_minibuf.
+       (Fcompleting_read): Delete code moved into read_minibuf.
+       (Ftest_completion): Make it handle obarrays and hash tables correctly.
+
+2003-12-03  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (decode_coding_iso2022): Fix for preserving UTF-8
+       encoding sequence.
+
+2003-12-01  Kenichi Handa  <handa@m17n.org>
+
+       * composite.c (syms_of_composite): Don't make the compostion hash
+       table week.
+
+2003-11-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * intervals.h: Add EXFUN for Fget_char_property_and_overlay.
+       * textprop.c (Fget_char_property_and_overlay): New function.
+       (syms_of_textprop): Defsubr it.
+
+2003-11-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * dispnew.c (buffer_posn_from_coords): Add ifdef HAVE_WINDOW_SYSTEM
+       to compile on terminal configuration.
+
+       * fileio.c (Fread_file_name): Check use_file_dialog also before
+       calling Fx_file_dialog.
+
+       * fns.c (use_file_dialog): New variable.
+       (syms_of_fns): DEFVAR_BOOL use-file-dialog.
+
+2003-11-29  Kim F. Storm  <storm@cua.dk>
+
+       * msdos.c (Qcursor_type, Qbar, Qhbar): Declare extern.
+       (syms_of_msdos): Don't intern and staticpro them.
+
+2003-11-27  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (buffer_posn_from_coords): Calculate and return pixel
+       coordinates relative to glyph at posn.  If glyph is an image,
+       return that as object at posn.  Callers changed.
+       (mode_line_string, marginal_area_string): Calculate and return
+       pixel coordinates relative to glyph.  Callers changed.
+
+       * dispextern.h (buffer_posn_from_coords, mode_line_string)
+       (marginal_area_string): Fix prototypes.
+       (window_box_left_offset, window_box_right_offset): Add prototypes.
+
+       * frame.h (get_specified_cursor_type, get_window_cursor_type):
+       Remove prototypes.
+
+       * keyboard.h (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): Fix defines.
+
+       * keyboard.c (make_lispy_position): Add x and y coordinates
+       relative to the current glyph as 7th element of position.
+       If glyph is an image, return it in the object element.
+       (read_key_sequence): Skip checks for keymap property in cases
+       where POSN_STRING is not a string (e.g. an image).
+
+       * xdisp.c (Vdisplay_pixels_per_inch): New variable.
+       (Vshow_text_cursor_in_void): New variable.
+       (glyph_to_pixel_coords): Don't use negative hpos.
+       (x_y_to_hpos_vpos): Fix for partially visible first glyph.
+       (append_stretch_glyph): Change ascent arg to be actual value
+       in pixels rather than ratio to height.  Callers changed.
+       (calc_pixel_width_or_height): New aux function, implementing
+       pixel based artihmetic for glyph widths and heights.
+       (produce_stretch_glyph): Use calc_pixel_width_or_height for
+       :width, :height, :align-to, and :ascent, thus allowing these to
+       be specified in pixels as well as multiples of characters.
+       Don't produce stretch glyphs with zero width or height.
+       (get_specified_cursor_type): Declare static.
+       (get_window_cursor_type): Declare static.  Add glyph arg to be
+       able to know when cursor is on an image; always substitute
+       hollow-box cursor for filled-box cursor on images, to avoid
+       negative images and flicker when blinking the cursor.
+       (display_and_set_cursor): Pass glyph to get_window_cursor_type.
+       (note_mode_line_or_margin_highlight): Use non-text cursor rather
+       than vertical scroll-bar cursor in display margins.
+       (note_mouse_highlight): Use non-text cursor rather than text
+       cursor in fringes and over images in the text area.
+       Use non-text cursor when mouse pointer is outside editable text,
+       i.e. in the void after end-of-line or end-of-buffer; this was
+       already done for W32, but is now standard for all systems --
+       user can toggle show-text-cursor-in-void to get old behaviour.
+       (syms_of_xdisp): DEFVAR_LISP Vshow_text_cursor_in_void and
+       Vdisplay_pixels_per_inch.
+
+2003-11-25  Andreas Schwab  <schwab@suse.de>
+
+       * fns.c (internal_equal) <case Lisp_Vectorlike>: Declare size as
+       EMACS_INT to not lose bits.
+       (Ffillarray): Don't set bits beyond the size of a bool vector.
+
+2003-11-25  Kim F. Storm  <storm@cua.dk>
+
+       * print.c (Fredirect_debugging_output) [!GNU_LINUX]: Do not
+       define this defun on systems that cannot use stderr as lvalue.
+
+2003-11-24  Gerd Moellmann  <gerd@gnu.org>
+
+       * s/freebsd.h (LD_SWITCH_SYSTEM_TEMACS)
+       [__FreeBSD_version >= 500042]: Define as -znocombreloc because
+       ld's default is incompatible with unexec.
+
+2003-11-23  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (enum window_loop): Add REDISPLAY_BUFFER_WINDOWS.
+       (window_loop): Handle REDISPLAY_BUFFER_WINDOWS.
+       (Fforce_window_update): New defun.
+       (syms_of_window): Defsubr it.
+       (Fset_window_margins, Fset_window_fringes): Doc fix.
+
+       * print.c (Fredirect_debugging_output): New defun.
+       (syms_of_print): Defsubr it.
+
+2003-11-22  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fns.c (Fset_char_table_parent): Doc fix.
+
+2003-11-22  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (buffer_posn_from_coords): Return actual row/column
+       for glyph clicked on, rather than (unused) pixel positions.
+       (mode_line_string, marginal_area_string): Change X and Y args to
+       pointers for returning actual row/column for glyph clicked on.
+       Simplify and optimize loops.
+
+       * dispextern.h (mode_line_string, marginal_area_string):
+       Update prototypes.
+
+       * keyboard.c (make_lispy_position): New function for generating
+       mouse click positions from frame and pixel coordinates.
+       Enhanced to return buffer position and actual row/column for
+       events outside the text area using updated mode_line_string and
+       marginal_area_string functions.
+       Return left-fringe and right-fringe clicks as such, rather than
+       clicks in text area.
+       (make_lispy_event) [USE_X_TOOLKIT, USE_GTK]: Don't call
+       pixel_to_glyph_coords, as we never use the results.
+       (make_lispy_event): Use make_lispy_position for MOUSE_CLICK_EVENT,
+       WHEEL_EVENT, and DRAG_N_DROP_EVENT to replace redundant code.
+       Eliminate unused code in WHEEL_EVENT handling.
+       (make_lispy_movement): Use make_lispy_position.
+
+       * window.c (coordinates_in_window): Remove redundant tests.
+       Fix returned X pixel value for left-margin.
+
+       * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new
+       mode_line_string and marginal_area_string parameters.
+
+2003-11-22  Lars Hansen  <larsh@math.ku.dk>
+
+       * w32.c (struct the_group, getgrgid): Add.
+       * mac.c (struct my_group, getgrgid): Add.
+
+2003-11-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fns.c (Fassq, Fassoc, Frassq, Frassoc): Doc fixes.
+
+2003-11-21  Lars Hansen  <larsh@math.ku.dk>
+
+       * dired.c (Ffile_attributes): Add parameter ID-FORMAT and
+       include in call to file name handler.  Optionally translate numeric
+       UID and GID to strings.  Update docstring.
+       (directory_files_internal): Add parameter ID-FORMAT.
+       (Fdirectory_files_and_attributes): Add parameter ID-FORMAT and
+       include in call to file name handler and call to
+       directory_files_internal.  Update Docstring.
+       (Fdirectory_files): Add dummy parameter in call to
+       directory_files_internal.
+       * lisp.h (Qinteger): Add.
+       (Qinteger_or_floatp, Qinteger_or_float_or_marker_p): Remove.
+       (Ffile_attributes): Add parameter.
+       * data.c (Qinteger): Export.
+
+2003-11-21  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fns.c (Freverse, Fnreverse): Doc fixes.
+
+2003-11-19  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (init_iterator): Initialize it->start to position
+       before reseating (in case start position is invisible).
+       (init_to_row_start): Set it->start to row-start.
+       (redisplay_window): Accept optional_new_start if start position
+       is invisible (in which case IT_CHARPOS overshoots PT).
+       (display_line): Setup row->start from it->start (rather than
+       it->current which is wrong if first char on line is invisible).
+       When done, reseat it->start to it->current (= start of next row).
+       (expose_area): Fix exposure of text area when first char (e.g. TAB)
+       is only partially visible.
+
+       * dispextern.h (struct it): New member start.
+
+2003-11-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (make_float, Fcons): Clear the markbit at init time.
+       (make_float, Fcons, Fmake_symbol, allocate_misc): Move the increment
+       of block_index outside of the macro call.
+       (Fgarbage_collect): Remove null code.
+
+       * m/amdx86-64.h: Don't redefine XPNTR.
+
+       * keyboard.c (parse_modifiers, apply_modifiers): Use INTMASK instead
+       of VALMASK.
+
+       * fns.c (hashfn_eq, hashfn_eql, hashfn_equal, hash_put)
+       (sxhash_string, sxhash): Use INTMASK instead of VALMASK.
+       (maybe_resize_hash_table): Use MOST_POSITIVE_FIXNUM.
+
+       * lisp.h (VALMASK): Only define for non-union type.
+       (MARKBIT): Remove.
+       (ARRAY_MARK_FLAG): Use previous value of MARKBIT.
+       (XTYPE): Define unconditionally.
+       (XSETTYPE): Remove one more remnant.
+       (EQ): Define differently for the union and non-union cases.
+       (INTMASK): New bit mask.
+       (struct Lisp_Marker): Move down to prepare for upcoming patch.
+       (GC_EQ): Delegate to EQ.
+
+       * coding.c (coding_restore_composition): Lisp_Object/int mixup.
+
+2003-11-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_window_to_scroll_bar): Move check of display to
+       where window_id is compared.
+
+2003-11-17  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (struct it): New member first_vpos.
+
+       * xdisp.c (start_display): Set it->first_vpos.
+       (try_window_id): Use first_vpos to start display in first _text_
+       line if no reusable lines at start of window with header line.
+
+2003-11-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * w32fns.c (XPutPixel):
+       * w32bdf.c (w32_init_bdf_font):
+       * sunfns.c (sel_read):
+       * process.c (Fmake_network_process):
+       * frame.c (store_frame_param):
+       * fontset.c (Fset_fontset_font):
+       * emacs.c (shut_down_emacs):
+       * ccl.c (ccl_driver): Remove period at end of error message.
+
+       * config.in: Regenerate.
+
+       * xfns.c (x_window_to_frame, x_any_window_to_frame)
+       (x_non_menubar_window_to_frame, x_menubar_window_to_frame)
+       (x_top_window_to_frame): Add Display* argument to xg_win_to_widget.
+       (x_create_bitmap_mask, xg_set_icon, create_frame_xic)
+       (xic_set_statusarea, x_window, gif_load): Formatting adjustments.
+
+       * xterm.h (struct x_display_info): New field xg_cursor for GTK.
+
+       * xterm.c: Add Display * to x_window_to_scroll_bar declaration.
+       (XTmouse_position, handle_one_xevent): Pass Display* to
+       x_window_to_scroll_bar.
+       (x_window_to_scroll_bar): Take a Display* argument.
+       Check that display for frame is equal to Display* argument.
+       (event_handler_gdk): Remove current_dpyinfo.  Get dpyinfo from
+       x_display_info_for_display instead.  Use Display in xev instead
+       of GDK_DISPLAY.
+       (x_dispatch_event): Call x_display_info_for_display.
+       (XTread_socket): Move GTK part out of loop.  current_dpyinfo removed.
+       (x_connection_closed): Call xg_display_close for GTK.
+       (x_term_init): Call xg_display_open for additional displays.
+       Initiate dpyinfo->xg_cursor with call to xg_create_default_cursor
+       for GTK.
+
+       * xmenu.c (single_menu_item, mouse_position_for_popup)
+       (x_activate_menubar): Formatting adjustments.
+
+       * xdisp.c (update_tool_bar, redisplay_tool_bar): Formatting
+       adjustments.
+
+       * gtkutil.c (xg_get_gdk_display, xg_set_screen, xg_display_open)
+       (xg_display_close, xg_create_default_cursor)
+       (xg_get_gdk_pixmap_and_mask): New functions for multiple display
+       handling.
+       (xg_left_ptr_cursor): Remove.
+       (xg_set_cursor): Change cursor to GdkCursor*.  Do not create
+       cursor here.
+       (xg_win_to_widget): Take Display* argument, call
+       gdk_xid_table_lookup_for_display.
+       (xg_create_frame_widgets, xg_get_file_name, create_menus)
+       (xg_create_widget, xg_modify_menubar_widgets): Call xg_set_screen.
+       (xg_create_widget, xg_create_scroll_bar): Use xg_cursor
+       in FRAME_X_DISPLAY_INFO.
+       (xg_get_scroll_id_for_window): Take Display* argument.
+       (update_frame_tool_bar): Call xg_get_gdk_pixmap_and_mask.
+       (xg_initialize): Remove xg_left_ptr_cursor.
+
+       * gtkutil.h (xg_get_scroll_id_for_window, xg_win_to_widget): Add
+       Display* argument.
+       (xg_display_open, xg_display_close, xg_create_default_cursor): Declare.
+
+2003-11-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_detect_focus_change): Do not change focus frame for
+       Enter/LeaveNotify if the current focus frame has explicit focus.
+
+2003-11-14  Kim F. Storm  <storm@cua.dk>
+
+       * dispnew.c (update_text_area): Fix redisplay error when hscroll
+       is active and first glyph is only partially visible.
+
+2003-11-13  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (select_frame_for_redisplay): New function.
+       (redisplay_internal): Record also selected_frame for
+       unwind_redisplay.  Call select_frame_for_redisplay before
+       redrawing each frame.
+       (unwind_redisplay): Argument changed to a cons.
+
+2003-11-12  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fns.c (Fstring_to_multibyte): Doc fix.
+
+2003-11-11  Kenichi Handa  <handa@m17n.org>
+
+       * xterm.c (x_list_fonts): Fix excluding of auto-scaled fonts.
+
+2003-11-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (x_window): Set XtNx and XtNy in shell widget for
+       program specified positions.
+
+2003-11-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (XAW_ARROW_SCROLLBARS): Define it for Xaw 1.5E.
+
+2003-11-08  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.in (lisp): Add kannada.el.
+       (shortlisp): Likewise.
+
+2003-11-07  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (coding_allocate_composition_data):
+       Reset coding->composing to COMPOSITION_NO.
+       (coding_restore_composition): Detect invalid composition data.
+       Give Fstring and Fvector a Lispy integer, not C int.
+
+2003-11-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * floatfns.c (Flogb): Don't use VALMASK.
+
+       * m/amdx86-64.h (VALBITS, XINT, XUINT): Remove.
+       * m/ia64.h (VALBITS, XINT, XUINT): Remove.
+
+       * lisp.h (XINT): Move the cast to clarify what is going on.
+       (GCTYPEMASK, XSETTYPE): Remove.
+       (XGCTYPE): Make it an alias of XTYPE.
+
+2003-11-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_term_init): Fix formatting.
+
+2003-11-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.h (xg_have_tear_offs): Declare.
+       (xg_keep_popup, xg_did_tearoff): Remove.
+
+       * gtkutil.c: Remove variable xg_did_tearoff.
+       (xg_have_tear_offs): New function.
+       (tearoff_remove): Just decrease xg_detached_menus.
+       (tearoff_activate): Increase xg_detached_menus and call
+       tearoff_remove when tearoff is removed.
+       (xg_keep_popup): Remove function.
+       (create_menus): Give add_tearoff_p as argument to recursive
+       call to create_menus.
+       (xg_create_widget): Use variables instead of multiple
+       strcmp.  Tell create_menus to create tear off only for
+       menu bar menus.
+       (xg_update_menubar): Change title for a detached menu also.
+       (xg_modify_menubar_widgets): Always call xg_update_menubar, regardless
+       of deep_p.
+       (xg_initialize): Initialize xg_detached_menus, remove
+       initialization of xg_did_tearoff.
+
+       * xmenu.c (set_frame_menubar): For GTK, set deep_p if
+       xg_have_tear_offs returns non-zero.
+       (create_and_show_popup_menu): Remove setting of xg_did_tearoff and
+       call to xg_keep_popup.
+
+2003-11-01  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (XTread_socket): Handle menubar selection and grow
+       window only for mouseDown events.
+
+2003-10-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_term_init): For GTK part, increase x_initialized
+       to check for more than one display.  Use error instead of return 0.
+
+2003-10-31  Andrew Choi  <akochoi@shaw.ca>
+
+       * unexmacosx.c (unrelocate): New function (contributed by Nozomu Ando).
+       (copy_dysymtab): Call it.
+
+2003-10-31  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * eval.c (Fdefvaralias): Doc fix.
+
+2003-10-26  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * data.c (Fsetplist): Doc fix.
+
+2003-10-14  Lute Kamstra  <lute@gnu.org>
+
+       * window.c (Fset_window_fringes): Clarify docstring.
+
+2003-10-14  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Fset_window_margins): Simplify arg checking.
+
+2003-10-13  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.c (MAX_BUF_SIZE): Reduce to 2**15.
+       (print_partial_compiled_pattern): Replace assert with a printout.
+       (skip_noops, mutually_exclusive_p): Change args, values to re_char *.
+
+       * alloc.c (lisp_align_malloc): If BASE is 0, call memory_full.
+
+       * window.c (Fset_window_margins): Allow only integers as args.
+       (syms_of_window) <special-display-buffer-names,
+       special-display-regexps>: Doc fixes.
+
+2003-10-13  Lute Kamstra  <lute@gnu.org>
+
+       * window.c (Fset_window_fringes): Elaborate docstring.
+
+2003-10-12  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (XTread_socket): Call DragWindow only for mouseDown events.
+
+       * s/darwin.h (GC_MARK_STACK): Define.
+
+2003-10-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * window.c (shrink_windows): New function.
+       (size_window): Call shrink_windows to calculate window sizes when
+       shrinking frame with more than one window.
+
+2003-10-12  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (compute_fringe_widths): Doc fix.
+
+2003-10-08  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (Fcoding_system_p): Return t for auto-loading coding system.
+
+2003-10-07  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (Qcoding_system_define_form): New variable.
+       (syms_of_coding): Intern and staticpro it.
+       (Fcheck_coding_system): Try to autoload the definition of
+       CODING-SYSTEM.
+
+2003-10-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+       * fns.c (Frequire): Doc fix.
+
+2003-10-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_send_client_event): New function as a base for
+       manipulating extended window manager hints.
+       (Fx_send_client_event): Remove unused variable s.
+
+       * w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
+       that function is removed.
+
+       * xterm.c (x_set_offset): Use move_offset_left/top instead of
+       x/y_pixels_outer_diff.
+       (x_check_expected_move): Calculate move_offset_left/top.
+
+       * xterm.h (struct x_output): New members: move_offset_top/left.
+
+       * frame.c (x_set_frame_parameters): Remove x_fullscreen_move,
+       call x_set_offset directly.
+
+       * frame.h (enum): FULLSCREEN_MOVE_WAIT removed.
+
+       * frame.c (Fdelete_frame): Free decode_mode_spec_buffer.
+
+       * xterm.c (x_delete_display): Free font names and font_encoder
+       in dpyinfo->font_table.
+
+       * xfns.c (Fx_close_connection): Only call XFreeFont here.
+       Move xfree of font names to x_delete_display.
+
+       * xterm.h (struct x_display_info): New member, wm_type.
+       (struct x_output): New members, expected_top/left and
+       check_expected_move.
+
+       * xterm.c (handle_one_xevent): Reset wm_type when ReparentNotify
+       is received.
+       (handle_one_xevent): Rename x_check_expected_move from
+       x_check_fullscreen_move.
+       (x_set_offset): Only add WM decoration sizes to modified_top/left
+       for X_WMTYPE_A.  Set check_expected_move when WM type is unknown.
+       (x_check_expected_move): Rename from x_check_fullscreen_move.
+       Removed fullscreen specific code.  Use check_expected_move,
+       expected_left/top instead.  Also, set wm_type.
+       (x_term_init): Initialize wm_type to unknown.
+
+       * frame.c (x_fullscreen_move): Remove addition of WM decoration
+       sizes to move_x/y.
+
+2003-10-03  Kenichi Handa  <handa@m17n.org>
+
+       * macterm.c (x_load_font): Clear all members of FONTP before start
+       filling them.
+
+2003-10-02  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (fs_load_font): Don't set fontp->font_encoder to NULL
+       before calling find_ccl_program_func.  Call find_ccl_program_func
+       only when fontp->font_encoder is not NULL.
+
+       * xterm.c (x_load_font): Clear all members of FONTP before start
+       filling them.
+
+2003-10-03  John Paul Wallington  <jpw@gnu.org>
+
+       * keymap.c (map_keymap): Don't abort when binding is a vector.
+
+2003-10-02  Jason Rumney  <jasonr@gnu.org>
+
+       * makefile.w32-in (emacs.o, coding.o, bytecode.o):
+       Sync dependencies with Makefile.in.
+       (alloca.o): Remove.
+
+       * w32fns.c (w32_load_system_font): Clear all members of FONTP before
+       filling them.
+
+       * w32bdf.c (w32_load_bdf_font): Likewise.
+
+2003-09-30  Richard M. Stallman  <rms@gnu.org>
+
+       * term.c (set_tty_color_mode): Calculate current_mode_spec
+       regardless of value of VAL.
+
+       * intervals.c (graft_intervals_into_buffer):
+       Set BUF_INTERVALS (buffer)->up_obj when appropriate.
+       Handle over_used when splitting UNDER.
+
+2003-09-30  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * regex.c (regex_compile): Free the stack when returning from function.
+
+2003-09-28  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (Finternal_char_font): Change return value to
+       cons (FONT-NAME . GLYPH-CODE).
+
+2003-09-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * term.c (tty_setup_colors): Treat any negative argument as -1.
+
+2003-09-27  Gaute B Strokkenes  <biggaute@uwc.net>  (tiny change)
+
+       * process.c (send_process): Delete unused temp_buf.
+
+2003-09-26  Dave Love  <fx@gnu.org>
+
+       * xterm.c (x_bitmap_mask): Declare.
+
+2003-09-25  Dave Love  <fx@gnu.org>
+
+       * Makefile.in (fns.o): Depend on md5.h.
+
+2003-09-25  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (set_window_buffer): Fix redisplay problems when
+       switching between buffers with different display margin widths.
+
+2003-09-23  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (set_socket_option): Fix :bindtodevice option.
+       (Fset_network_process_option): Update process contact list when
+       setting option succeeds.
+       (Fmake_network_process): Doc fix.
+
+2003-09-23  Dave Love  <fx@gnu.org>
+
+       * process.c (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ... macros.
+
+2003-09-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * term.c (set_tty_color_mode): Use INTEGERP to test whether a
+       color mode is an integer number (it could be -1).
+
+2003-09-22  Richard M. Stallman  <rms@gnu.org>
+
+       * intervals.c (graft_intervals_into_buffer): Correct the main loop
+       in the case where OVER is longer than UNDER.
+
+2003-09-22  Masatake YAMATO  <jet@gyve.org>
+
+       * window.c (Fset_window_scroll_bars): Validate the value of
+       `vertical_type'.
+
+2003-09-21  Kim F. Storm  <storm@cua.dk>
+
+       * frame.c (Vdefault_frame_scroll_bars): New variable.
+       (x_set_vertical_scroll_bars): Use it instead of hardcoded values.
+       (syms_of_frame): DEFVAR_LISP it, and initialize according to
+       window-system default scroll bar position.
+
+       * window.c (Fwindow_scroll_bars): Doc fix.
+
+2003-09-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_set_offset): Take window manager decorations into account.
+
+2003-09-19  Richard M. Stallman  <rms@gnu.org>
+
+       * atimer.h: Don't include lisp.h.
+       (P_): Define it here (as well as elsewhere).
+
+       * print.c (Fprin1_to_string): Move the PRINTPREPARE
+       later, so that PRINTFINISH won't unbind Qinhibit_modification_hooks.
+
+       * data.c (Fvariable_binding_locus): New function.
+       (syms_of_data): defsubr it.
+       (Flocal_variable_p): Delete duplicate call to indirect_variable.
+
+2003-09-18  Dave Love  <fx@gnu.org>
+
+       * alloc.c (GC_MALLOC_CHECK): Move conditional undef after lisp.h.
+
+       * process.c (Fnetwork_interface_info): Fix type error.
+       (Fnetwork_interface_list): Doc fix.
+       (read_process_output, read_process_output): Delete unused var.
+
+2003-09-17  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fnetwork_interface_list, Fnetwork_interface_info):
+       Require HAVE_NET_IF_H and HAVE_SYS_IOCTL_H to include these fns.
+       (Fnetwork_interface_info): Check that ifreq struct has required
+       fields before accessing them; this requires that those fields are
+       defined as macros, which may be too restrictive on some platforms,
+       but it is better than failing on other platforms.
+       (syms_of_process): Only defsubr above fns when included.
+
+2003-09-17  Dave Love  <fx@gnu.org>
+
+       * unexalpha.c: Don't include varargs.h.
+
+2003-09-17  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fset_process_sentinel): Add sentinel to childp plist
+       for network process.
+       (socket_options): Add `:' prefix to option names.  Add optbit field.
+       (set_socket_option): Remove no_error arg and special handling of s < 0.
+       Return 1<<optbit for known option, 0 for unknown.
+       Do not interpret 0 as false for boolean option (only nil).
+       Pass failed option and value to report_file_error.
+       (Fset_network_process_options): Replace by Fset_network_process_option.
+       (Fset_network_process_option): New function to set just one option.
+       (Fmake_network_process): Allow :coding arg to be a cons.
+       Allow :server arg to be an integer specifying backlog size.
+       Remove :options arg, and allow options to be specified directly
+       as :KEY, VALUE pairs.  Parse these options before binding socket.
+       As before, :reuseaddr t is default for a server process, but this
+       can now be disabled by specifying :reuseaddr nil.
+       (Fnetwork_interface_info): Rename from Fget_network_interface_info.
+       (init_process): Availability of network options is now checked with
+       simpler syntax (featurep 'make-network-process :OPTION); use loop to
+       setup features.
+       (syms_of_process): Fix defsubr's for the replaced functions.
+
+2003-09-16  Dave Love  <fx@gnu.org>
+
+       * Makefile.in: Depend on coding.h.
+
+2003-09-14  Kim F. Storm  <storm@cua.dk>
+
+       * process.c [HAVE_SOCKETS]: Include sys/ioctl.h and net/if.h.
+       (Fnetwork_interface_list, Fget_network_interface_info): New defuns.
+       (syms_of_process): Defsubr them.
+
+       * config.in: Regenerate.
+
+2003-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * m/sr2k.h (XMARKBIT, XUNMARK): Remove.
+       * m/news-r6.h (XUNMARK): Remove.
+       * m/mips.h (XUNMARK): Remove.
+       * m/mips-siemens.h (XUNMARK): Remove.
+       * m/iris4d.h (XUNMARK): Remove.
+       * m/hp800.h (XMARKBIT, XUNMARK): Remove.
+
+2003-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (VALBITS): Don't remove 1 for the markbit.
+       (union Lisp_Object): Use unsigned int for types.  Remove markbit.
+       (MARKBIT): Remove 1 from VALBITS so we still use same old val.
+       (XTYPE): Use unsigned right-shift.
+       (XMARKBIT, XMARK, XUNMARK): Remove.
+
+       * alloc.c (init_intervals, init_symbol, init_marker):
+       Don't preallocate anything.
+       (Fgarbage_collect, mark_object): Ignore the markbit.
+
+       * bytecode.c (mark_byte_stack, unmark_byte_stack): Ignore the markbit.
+
+2003-09-08  Lute Kamstra  <lute@gnu.org>
+
+       * xdisp.c (pint2hrstr): New function.
+       (decode_mode_spec): Add `%i' and `%I' specs.
+       * buffer.c (syms_of_buffer): Document `%i' and `%I' constructs
+       for `mode-line-format'.
+
+2003-09-07  Andreas Schwab  <schwab@suse.de>
+
+       * alloc.c: Use long instead of int when casting ABLOCKS_BUSY to
+       avoid warning.
+
+2003-09-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * editfns.c (region_limit): Support any non-zero value of BEGINNINGP.
+
+2003-09-03  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_window_cursor_type): Partially undo 2002-03-01
+       change (superseded by 2002-08-30 change); the default blink-off
+       cursor is now again "no cursor".
+
+2003-09-01  Jason Rumney  <jasonr@gnu.org>
+
+       * makefile.w32-in (alloca.o): Remove.
+       (coding.o): Depend on intervals.h
+       (emacs.o, bytecode.o): Depend on window.h.
+
+2003-09-01  Dave Love  <fx@gnu.org>
+
+       * Makefile.in (alloca.o): Remove commands.
+       (coding.o): Depend on intervals.h composite.h window.h.
+       (emacs.o): Depend on window.h keyboard.h keymap.h.
+       (gtkutil.o): Depend on keyboard.h charset.h coding.h.
+       (bytecode.o): Depend on window.h.
+
+2003-08-31  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_per_char_metric): Allow cached metrics to be
+       returned even when font_type is unknown.
+
+       * xdisp.c (init_iterator): Remove old WINDOWSNT conditional.
+
+2003-08-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_term_init): Initialize new fields in x_display_info.
+
+       * xterm.h (struct x_display_info): Add red/green/blue_bits and
+       *_offset.
+
+       * xfns.c (lookup_rgb_color): Use new fields in x_display_info to
+       calculate pixel value.
+
+2003-08-29  Gerd Moellmann  <gerd.moellmann@t-online.de>
+
+       * xdisp.c (redisplay_internal): Fix change of 2003-04-30.
+       Don't tell redisplay display is accurate when it's actually been
+       paused for pending input.
+
+2003-08-29  Richard M. Stallman  <rms@gnu.org>
+
+       * dispnew.c (adjust_glyph_matrix): Call window_box
+       whenever W is nonzero.
+
+       * data.c (Fmake_variable_buffer_local, Fmake_local_variable)
+       (Fkill_local_variable, Fmake_variable_frame_local)
+       (Flocal_variable_p, Flocal_variable_if_set_p):
+       Use indirect_variable to trace thru variable aliases.
+
+       * config.in: Updated.
+
+       * callint.c (Fcall_interactively): Save and restore
+       Vthis_command, Vthis_original_command, real_this_command,
+       and current_kboard->Vlast_command.
+
+       * abbrev.c (Fexpand_abbrev): Insert before deleting.
+
+2003-08-29  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfns.c (lookup_rgb_color): Handle TrueColor visuals specially.
+
+2003-08-28  David Abrahams  <dave@boost-consulting.com>  (tiny change)
+
+       * coding.c (decode_coding_iso2022): Initialize local variable c2.
+       (decode_coding_sjis_big5): Likewise.
+
+2003-08-27  Jason Rumney  <jasonr@gnu.org>
+
+       * w32.c (sys_pipe): Protect against file descriptor overflow.
+
+       * w32fns.c (syms_of_w32fns): Remove non-existent functions.
+
+       * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment.
+
+2003-08-26  Terje Rosten  <terjeros@phys.ntnu.no>
+
+       * xfns.c (Vgtk_version_string): New variable.
+       (syms_of_xfns): DEFVAR_LISP it.  Provide gtk.
+
+2003-08-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * term.c (term_init): Remove `const' from buffer_size's declaration.
+
+       * Makefile.in (msdos.o): Depend on intervals.h.
+
+       * msdos.c: Include intervals.h, since STRING_INTERVALS requires that.
+
+2003-08-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h (struct x_display_info): New fields: client_leader_window
+       and Xatom_wm_client_leader.
+
+       * xterm.c (x_initialize): Move call to x_session_initialize to ...
+       (x_term_init): ... here.  Initialize client_leader fields in dpyinfo.
+
+       * xsmfns.c (create_client_leader_window): New function.
+       (x_session_initialize): Call create_client_leader_window, take
+       dpyinfo as argument.
+
+       * xfns.c (Fx_create_frame): Set property WM_CLIENT_LEADER.
+
+       * Makefile.in (xsmfns.o): Add more depenedencies.
+
+2003-08-21  Dave Love  <fx@gnu.org>
+
+       * m/iris4d.h: Use _MIPS_SZLONG, not _LP64.
+
+2003-08-21  Kenichi Handa  <handa@m17n.org>
+
+       * term.c (term_init): Fix previous change; don't rely on the
+       length of `buffer' if TERMINFO is defined.
+
+2003-08-20  Dave Love  <fx@gnu.org>
+
+       * atimer.h: Include lisp.h.
+
+       * lisp.h (EMACS_LISP_H): New.
+       (popup_activated_flag): Don't declare.
+
+       * alloca.c: Some merging with gnulib.  Change logic and doc
+       concerning (x)malloc/(x)free -- no longer Emacs-specific.
+       [DO_BLOCK_INPUT]: Don't include lisp.h.
+       (xmalloc, xfree): Declare.
+       (malloc): Don't declare.
+
+       * Makefile.in (LWLIB_OPTIONS): Remove (unused).
+       (alloca.o): Remove obsolete stuff concerning alloca.s.  Depend on
+       atimer.h, blockinput.h.
+
+       * alloc.c (lisp_align_malloc): Change type of `aligned'.
+
+       * alloca.s: Remove.
+
+2003-08-19  Gerd Moellmann  <gerd@gnu.org>
+
+       * s/freebsd.h [__FreeBSD_version >= 400000]: Define TERMINFO,
+       use -lncurses.
+
+       * term.c (term_init): Use a buffer of size 4096 for tgetent since
+       FreeBSD returns something longer than 2044.  Abort if the end of
+       the buffer is overwritten.
+
+2003-08-19  Miles Bader  <miles@gnu.org>
+
+       * xterm.c (x_term_init): Correctly use result of Ffile_readable_p.
+
+2003-08-19  Gerd Moellmann  <gerd@gnu.org>
+
+       * alloc.c (lisp_align_malloc): Check for memory full when
+       allocating ablocks, which also avoids freeing a pointer into an
+       ablocks structure.
+
+       * puresize.h (BASE_PURESIZE): Increase to 1100000.
+
+       * buffer.c (Fmove_overlay): Set overlay's next pointer unconditionally.
+
+2003-08-16  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fencode_time): Doc fix.
+
+2003-08-16  David Ponce  <david@dponce.com>
+
+       * fileio.c (Fwrite_region): Fix conditional expression to issue
+       the right message.
+
+2003-08-16  Juri Linkov  <juri@jurta.org>
+
+       * syntax.c (Fforward_word): Argument changed to optional.
+       Set default value to 1.
+
+2003-08-15  Kenichi Handa  <handa@m17n.org>
+
+       * xfaces.c (better_font_p): Prefer a real scalable font; i.e. not
+       what autoscaled.
+       (best_matching_font): Once we find a better scalable font, set
+       non_scalable_has_exact_height_p to 1.
+       (try_font_list): Call try_alternative_families to try any family
+       with the given registry.
+
+2003-08-09  Andreas Schwab  <schwab@suse.de>
+
+       * alloc.c (mark_object): Handle Lisp_Misc_Save_Value.
+
+       * print.c (print_string): Fix printing of multibyte string with
+       nontrivial printcharfun.
+
+2003-07-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (xg_set_icon): Rewrite to compile with GTK 2.0 and 2.2.
+
+       * xterm.c (x_bitmap_icon): Return if xg_set_icon succeeds.
+
+2003-07-31  Kenichi Handa  <handa@m17n.org>
+
+       * process.c (read_process_output): Return the actually read bytes
+       instead of the result of decoding.
+
+2003-07-31  Kenichi Handa  <handa@m17n.org>
+
+       * xterm.h (struct x_bitmap_record): New member have_mask.
+
+       * xfns.c (x_create_bitmap_from_data): Initialize have_mask member
+       to 0.
+       (x_create_bitmap_from_file): Likewise.
+       (x_destroy_bitmap): Check have_mask member before freeing a mask.
+       (x_destroy_all_bitmaps): Likewise.
+       (x_create_bitmap_mask): Set have_mask member to 1.
+
+2003-07-30  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in (CFLAGS) [!OPTIMIZE]: Undo previous change.
+
+2003-07-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_mark_data): Update calls to mark_object.
+
+2003-07-29  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (xim_open_dpy, xim_initialize, xim_close_dpy):
+       Conditionalize XIM code on HAVE_XIM.
+
+       * fns.c (Fclear_string): New function.
+       (syms_of_fns): defsubr it.
+
+2003-07-28  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
+
+       * xfns.c (xic_set_preeditarea): Add the left fringe width to spot.x.
+
+2003-07-22  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xfns.c: Don't check HAVE_PNG_H: autoconf doesn't seem to find it.
+
+       * buffer.c (delete_all_overlays): New function.
+       * buffer.h (delete_all_overlays): Declare.
+       * coding.c (run_pre_post_conversion_on_str):
+       * print.c (temp_output_buffer_setup):
+       * fileio.c (Finsert_file_contents):
+       * minibuf.c (get_minibuffer): Use it.
+
+2003-07-22  Andrew Choi  <akochoi@shaw.ca>
+
+       * unexmacosx.c (unexec_regions_sort_compare):
+       (unexec_regions_merge): New functions.  Sort and merge unexec
+       regions before dumping them.
+
+2003-07-22  Dave Love  <fx@gnu.org>
+
+       * xfns.c [HAVE_PNG]: Consider both png.h and libpng/png.h.
+
+2003-07-21  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * alloc.c (MARK_STRING, UNMARK_STRING, STRING_MARKED_P)
+       (GC_STRING_CHARS, string_bytes): Use ARRAY_MARK_FLAG rather than
+       MARKBIT as the gcmarkbit for strings.
+
+2003-07-21  Richard M. Stallman  <rms@gnu.org>
+
+       * s/openbsd.h (LD_SWITCH_SYSTEM_TEMACS): Add undef.
+
+       * fns.c (Flocale_info): Rename from Flanginfo.  Doc fixes.
+       (syms_of_fns): Corresponding change.
+
+       * alloc.c (syms_of_alloc): Doc fixes.
+
+2003-07-20  Han Boetes  <han@mijncomputer.nl>  (tiny change)
+
+       * s/netbsd.h: Use -Wl syntax.
+
+2003-07-17  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (xim_initialize): Redo 6/24 change.
+
+2003-07-15  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * buffer.c (copy_overlays): Use EMACS_INT for positions.
+       (Fswitch_to_buffer): Don't signal an error when switching to the same
+       buffer in a dedicated window.
+
+       * alloc.c: Use bitmaps for cons, as was done for floats.
+       (init_float, init_cons): Let the normal code allocate the first block.
+       (CONS_BLOCK_SIZE): Redefine based on BLOCK_BYTES and bitmap size.
+       (CONS_BLOCK, CONS_INDEX, CONS_MARKED_P, CONS_MARK, CONS_UNMARK):
+       New macros.
+       (struct cons_block): Move conses to the beginning.  Add gcmarkbits.
+       (Fcons): Use lisp_align_malloc and CONS_UNMARK.
+       (live_cons_p): Check the pointer is not past the `conses' array.
+       (mark_maybe_object, mark_maybe_pointer): Use CONS_MARKED_P.
+       (mark_object, mark_buffer): Use CONS_MARKED_P and CONS_MARK.
+       (survives_gc_p): Use CONS_MARKED_P and simplify.
+       (gc_sweep): Use CONS_MARKED_P, CONS_UNMARK, and lisp_align_free.
+
+2003-07-13  Paul Eggert  <eggert@twinsun.com>
+
+       GCC 3.3 (sparc) no longer puts "int foo = 0;" into data; it
+       puts it into BSS instead, at least on Solaris 8 and 9.
+       This is a valid optimization, and it may occur on other platforms,
+       so Emacs should not assume that initializing a static variable to
+       zero puts it into data.
+       * alloc.c (pure, staticvec):
+       Initialize these arrays to nonzero, so that they're not
+       put into BSS by that optimization.
+
+2003-07-13  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * alloc.c (BLOCK_PADDING): Rename from ABLOCKS_PADDING.  Update users.
+       (lisp_align_malloc): Use posix_memalign is available.
+       (ABLOCKS_BASE): Use HAVE_POSIX_MEMALIGN as an optimization.
+       (STRING_BLOCK_SIZE): Rename from STRINGS_IN_STRING_BLOCK
+       for consistency.  Update users.
+
+2003-07-13  Richard M. Stallman  <rms@gnu.org>
+
+       * s/netbsd.h (START_FILES_1, END_FILES_1): Always define them.
+
+2003-07-13  Terje Rosten  <terjeros@phys.ntnu.no>
+
+       * xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap): Modify to add mask,
+       and use the Gtk+ function gtk_window_icon_from_file if available.
+
+       * xfns.c (x_bitmap_mask, x_create_bitmap_mask): New functions to
+       handle mask of bitmaps.
+       (x_allocate_bitmap_record, x_destroy_bitmap): Modify to handle the
+       mask property.
+       (xg_set_icon): New function, wrapper for gtk_window_icon_from_file.
+
+       * xterm.h (xg_set_icon): New function.
+
+2003-07-12  Paul Eggert  <eggert@twinsun.com>
+
+       * unexelf.c (unexec): Consider a section to precede the .bss
+       section if its addresses overlap that of .bss.
+
+2003-07-12  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in (CFLAGS) [!OPTIMIZE]: Set CFLAGS to -g.
+
+       * config.in (HAVE_CRTIN): Add #undef.
+       (INLINE): Really inline only if OPTIMIZE is defined.
+
+       * s/netbsd.h (START_FILES, LIB_STANDARD): Use START_FILES_1,
+       END_FILES_1.
+       (START_FILES_1, END_FILES_1): New macros (conditional).
+       (LD_SWITCH_SYSTEM_TEMACS): Define.
+
+       * s/openbsd.h: Don't include bsd4-3.h.
+       (TERMINFO): Define.
+       (LIBS_TERMCAP): Define.
+       (LD_SWITCH_SYSTEM): Define (two definitions).
+
+       * xfns.c: Include libpng/png.h instead of png.h.
+
+2003-07-11  Andreas Schwab  <schwab@suse.de>
+
+       * buffer.c (modify_overlay): Update prototype.
+       * lisp.h (adjust_overlays_for_insert, adjust_overlays_for_delete):
+       Likewise.
+
+2003-07-09  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lisp.h (VALBITS): Define in terms of GCTYPEBITS.
+       (struct interval): Move to intervals.h.
+       (struct Lisp_Marker): Use EMACS_INT for position info.
+       (forward_point): Remove prototype of defunct function.
+       (Qmodification_hooks, Qrear_nonsticky, Fnext_property_change)
+       (Fget_text_property, Fset_text_properties, Ftext_propertes_not_all)
+       (syms_of_textprop, set_text_properties): Remove prototypes that are
+       already in intervals.h.
+
+       * intervals.h (struct interval): Move from lisp.h.
+       Use EMACS_INT for position and size info.
+
+       * coding.c: Include intervals.h for Fset_text_properties.
+
+       * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for
+       position and length information.
+
+2003-07-09  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for
+       position and length information.
+
+2003-07-09  Stefan Monnier  <monnier@cs.yale.edu>
+
+       Change overlays_after and overlays_before so the overlays themselves
+       are linked into lists, rather than using cons cells.  After all each
+       Lisp_Misc already occupies 5 words, so we can add a `next' field to
+       Lisp_Overlay for free and save up one cons cell per overlay (not
+       to mention one indirection when traversing the list of overlay).
+
+       * lisp.h (struct Lisp_Overlay): New field `next'.
+
+       * buffer.h (struct buffer): Change overlays_before and overlays_after
+       from Lisp lists of overlays to pointers to overlays.
+
+       * buffer.c (overlay_strings, recenter_overlay_lists):
+       Fix typo in eassert in last commit.
+       (unchain_overlay): New function.
+       (add_overlay_mod_hooklist): Use AREF.
+       (copy_overlays, reset_buffer, overlays_at, overlays_in)
+       (overlay_touches_p, overlay_strings, recenter_overlay_lists)
+       (fix_overlays_in_range, fix_overlays_before, Fmake_overlay)
+       (Fmove_overlay, Fdelete_overlay, Foverlay_lists)
+       (report_overlay_modification, evaporate_overlays, init_buffer_once):
+       Adjust to new type of overlays_(before|after).
+
+       * alloc.c (mark_object): Mark the new `next' field of overlays.
+       (mark_buffer): Manually mark the overlays_(after|before) fields.
+
+       * coding.c (run_pre_post_conversion_on_str):
+       * editfns.c (overlays_around):
+       * xdisp.c (load_overlay_strings):
+       * fileio.c (Finsert_file_contents):
+       * indent.c (current_column):
+       * insdel.c (signal_before_change, signal_after_change):
+       * intervals.c (set_point_both):
+       * print.c (temp_output_buffer_setup): Use new type for
+       overlays_(before|after).
+
+2003-07-08  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * buffer.c (report_overlay_modification): Don't run hooks while
+       traversing the list of overlays.
+
+       * buffer.h (struct buffer): Use an int for overlay_center.
+       (overlays_at, evaporate_overlays, recenter_overlay_lists)
+       (overlay_strings, fix_overlays_before): Use EMACS_INT for positions.
+
+       * buffer.c (reset_buffer, recenter_overlay_lists)
+       (adjust_overlays_for_insert, adjust_overlays_for_delete)
+       (fix_overlays_in_range, Fmake_overlay, Fmove_overlay)
+       (evaporate_overlays, init_buffer_once): Update use of overlay_center.
+       (overlays_at, evaporate_overlays, recenter_overlay_lists)
+       (overlay_strings, fix_overlays_before): Use EMACS_INT for positions.
+
+       * xdisp.c (fast_find_position): Remove unused var.
+
+       * cmds.c (Qexpand_abbrev): New sym.
+       (syms_of_cmds): Initialize it.
+       (internal_self_insert): Use it to call expand-abbrev.
+
+2003-07-09  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (use_xim) [!USE_XIM]: Default to disable XIM if Emacs
+       was configured with --without-xim.
+       (x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
+
+2003-07-07  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (reseat_1): Set it->area to TEXT_AREA.
+
+       * alloc.c (Fgarbage_collect): Doc fix.
+
+2003-07-07  Nozomu Ando  <nand@mac.com>
+
+       * buffer.c (Fkill_buffer): Clear charpos cache if necessary.
+
+2003-07-06  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * minibuf.c (read_minibuf): UNGCPRO before returning.
+       (Ftry_completion, Fall_completions): Doc fix.
+
+       * alloc.c (live_float_p): Check that p is not past the `floats' array,
+       now that `floats' is not the last element of the struct any more.
+
+2003-07-06  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.h (ClipboardSequence_Proc): New type.
+
+       * w32fns.c (clipboard_sequence_fn): New variable.
+       (globals_of_w32fns): Initialize it.
+
+       * w32select.c (last_clipboard_sequence_number): New variable.
+       (Fw32_set_clipboard_data, Fw32_get_clipboard_data): Use sequence
+       number if possible.
+
+2003-07-06  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * m/amdx86-64.h (MARKBIT):
+       * m/ia64.h (MARKBIT): Remove definition since lisp.h does not compare
+       MARKBIT and ARRAY_MARK_FLAG any more.
+
+       * m/hp800.h (XSETMARKBIT):
+       * m/sr2k.h (XSETMARKBIT):
+       * lisp.h (XSETMARKBIT): Remove unused macro.
+
+       * lisp.h (mark_object): Change prototype.
+
+       * alloc.c (mark_object): Change arg *Lisp_Object -> Lisp_Object.
+       (last_marked): Change accordingly.
+       (mark_interval, mark_maybe_object, mark_maybe_pointer)
+       (Fgarbage_collect, mark_glyph_matrix, mark_face_cache, mark_image)
+       (mark_buffer): Update calls to mark_object.
+
+       * bytecode.c (mark_byte_stack):
+       * fns.c (sweep_weak_table):
+       * keyboard.c (mark_kboards): Update calls to mark_object.
+
+2003-07-06  Jason Rumney  <jasonr@gnu.org>
+
+       * alloc.c (struct ablock): Only include padding when there is some.
+
+2003-07-04  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * alloc.c (ALIGN): Add casts to simplify usage.
+       (BLOCK_ALIGN, BLOCK_BYTES, ABLOCKS_PADDING, ABLOCKS_SIZE)
+       (ABLOCKS_BYTES, ABLOCK_ABASE, ABLOCKS_BUSY, ABLOCKS_BASE): New macros.
+       (struct ablock, struct ablocks): New types.
+       (free_ablock): New global var.
+       (lisp_align_malloc, lisp_align_free): New functions.
+       (FLOAT_BLOCK_SIZE): Redefine in terms of BLOCK_BYTES.
+       (struct float_block): Reorder and add gcmarkbits.
+       (GETMARKBIT, SETMARKBIT, UNSETMARKBIT, FLOAT_BLOCK, FLOAT_INDEX)
+       (FLOAT_MARKED_P, FLOAT_MARK, FLOAT_UNMARK): New macros.
+       (init_float, make_float): Use lisp_align_malloc.
+       (free_float, live_float_p): Don't use `type' any more.
+       (make_float): Use FLOAT_UNMARK to access to mark bit.
+       (mark_maybe_object, mark_maybe_pointer, survives_gc_p):
+       Use FLOAT_MARKED_P to access the mark bit.
+       (pure_alloc): Simplify use of ALIGN.
+       (mark_object): Use FLOAT_MARK to access the mark bit.
+       (gc_sweep): Use new macros to access the float's mark bit.
+       (init_alloc_once): Init free_ablock.
+
+       * lisp.h (struct Lisp_Float): Remove unused field `type'.
+
+2003-06-27  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * alloc.c (VECTOR_MARK, VECTOR_UNMARK, VECTOR_MARKED_P): New macros.
+       (GC_STRING_BYTES): Don't mask markbit (it's only used on `size').
+       (allocate_buffer): Move.
+       (string_bytes): Don't mask markbit of `size_byte'.
+       (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect)
+       (mark_object, mark_buffer, survives_gc_p, gc_sweep):
+       Use the `size' field of buffers (rather than the `name' field) for
+       the mark bit, as is done for all other vectorlike objects.
+       Use the new macros to access the mark bit of vectorlike objects.
+
+2003-06-26  Richard M. Stallman  <rms@gnu.org>
+
+       * puresize.h (BASE_PURESIZE): Increment base size.
+
+       * xdisp.c (fast_find_position): Enable Gerd's new definition.
+
+       * xterm.c (xim_initialize): Undo previous change.
+
+2003-06-26  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * alloc.c (survives_gc_p): Simplify.
+
+       * buffer.c (set_buffer_internal_1): Test CONSP for lists.
+
+       * window.c (Fset_window_dedicated_p): Simplify.
+       (display_buffer_1): Don't raise the win from which minibuf was entered.
+       (temp_output_buffer_show): Don't assume BEG == 1.  Simplify.
+       (Fminibuffer_selected_window): Simplify.
+
+       * buffer.h (struct buffer_text): Lisp_Object `markers' => Lisp_Marker.
+
+       * lisp.h (unchain_marker): Lisp_Object arg => Lisp_Marker.
+       (struct Lisp_Marker): Lisp_Object `chain' => Lisp_Marker `next'.
+
+       * insdel.c (check_markers, adjust_markers_for_delete)
+       (adjust_markers_for_insert, adjust_markers_for_replace)
+       (prepare_to_modify_buffer, RESTORE_VALUE):
+       * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos)
+       (Fset_marker, set_marker_restricted, set_marker_both, unchain_marker)
+       (set_marker_restricted_both, Fbuffer_has_markers_at, count_markers):
+       * alloc.c (Fmake_marker, free_marker, gc_sweep):
+       * buffer.c (Fget_buffer_create, Fkill_buffer, Fset_buffer_multibyte):
+       * editfns.c (save_excursion_restore, transpose_markers):
+       * window.c (delete_window):
+       * xdisp.c (message_dolog): Update for new types.
+
+2003-06-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfaces.c (set_font_frame_param): Set default_face_done_p to zero.
+       (realize_default_face): Use default_face_done_p for the force_p
+       argument to set_lface_from_font_name.  Set default_face_done_p to one.
+
+       * frame.c (make_frame): Initialize default_face_done_p.
+
+       * frame.h (struct frame): Add default_face_done_p.
+
+       * config.in: Add XRegisterIMInstantiateCallback_arg6 so it
+       will be defined.
+
+2003-06-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * alloc.c (make_interval, Fmake_symbol, allocate_misc):
+       Initialize the new field `gcmarkbit'.
+       (mark_interval, MARK_INTERVAL_TREE): Use the new `gcmarkbit' field.
+       (mark_interval_tree): Don't mark the tree separately from the nodes.
+       (UNMARK_BALANCE_INTERVALS): Don't unmark the tree.
+       (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect)
+       (mark_object, survives_gc_p, gc_sweep): Use new `gcmarkbit' fields.
+
+       * lisp.h (struct interval, struct Lisp_Symbol, struct Lisp_Free)
+       (struct Lisp_Marker, struct Lisp_Intfwd, struct Lisp_Boolfwd)
+       (struct Lisp_Kboard_Objfwd, struct Lisp_Save_Value)
+       (struct Lisp_Buffer_Local_Value, struct Lisp_Overlay)
+       (struct Lisp_Objfwd, struct Lisp_Buffer_Objfwd): Add `gcmarkbit' field.
+
+2003-06-24  Dave Love  <fx@gnu.org>
+
+       * xterm.c (xim_initialize): Use XRegisterIMInstantiateCallback_arg6.
+
+       * strftime.c: Test HAVE_SYS__MBSTATE_H, not __hpux.  Merge changes
+       from gnulib.
+
+2003-06-21  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fwrite_region): Alternate messages
+       for append and partial write.
+
+       * keyboard.c (read_key_sequence): When converting upcase fn key to
+       downcase, update fkey and keytran so `backspace' gets translated.
+
+       * keyboard.c (read_avail_input): Don't signal SIGHUP in batch mode.
+
+       * process.c (wait_reading_process_input): Don't signal SIGIO
+       in batch mode.
+
+2003-06-17  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.in (xselect.o): Don't depend on charset.h, coding.h,
+       composite.h.
+
+       * xselect.c: Don't include charset.h, coding.h, composite.h.
+       (Qforeign_selection): New variable.
+       (syms_of_xselect): Intern and static it.
+       (selection_data_to_lisp_data): Return a unibyte string made from
+       data with `foreign-selection' text property.
+
+2003-06-15  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * termhooks.h (EVENT_INIT): New macro.
+
+       * keyboard.c (mark_kboards): Move from alloc.c.  Mark kbd_buffer.
+
+       * alloc.c (mark_kboards): Move to keyboard.c.
+
+       * keyboard.c (record_asynch_buffer_change, read_avail_input):
+       * xterm.c (x_dispatch_event):
+       * xmenu.c (find_and_call_menu_selection):
+       * xdisp.c (handle_tool_bar_click):
+       * w32menu.c (menubar_selection_callback):
+       * sysdep.c (kbd_input_ast, read_input_waiting):
+       * msdos.c (dos_rawgetc):
+       * macterm.c (mac_check_for_quit_char):
+       * macmenu.c (menubar_selection_callback):
+       * gtkutil.c (xg_tool_bar_callback): Don't pass uninitialized
+       data to kbd_buffer_store_event.
+
+2003-06-15  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (x_fix_overlapping_area): Always use area relative X
+       to fix redisplay problem with tall characters (such as \e,AC\e(B).
+
+2003-06-13  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
+
+       * fileio.c (Fcopy_file): Doc fix: copies file modes, too.
+
+2003-06-12  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Fwrite_region): Save and restore restriction.
+
+2003-06-12  Dave Love  <fx@gnu.org>
+
+       * alloca.c (alloca): Declare arg as size_t.
+
+       * sysdep.c: Remove redundant include of unistd.h, stdlib.h.
+       Use HAVE_DECL_SYS_SIGLIST, not SYS_SIGLIST_DECLARED.
+
+2003-06-11  Dave Love  <fx@gnu.org>
+
+       * search.c (shrink_regexp_cache): Use xrealloc.
+       (syms_of_search): Use xmalloc.
+
+2003-06-10  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (phys_cursor_in_rect_p): Fix 2003-05-24 change.
+       Adjust phys_cursor.x to be relative to window box, rather than
+       text area before checking -- to ensure cursor is redrawn when
+       exposing window.
+       Note: This also fixes a similar (older) bug if display margins
+       are present.
+
+2003-06-06  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (encoding_buffer_size): If coding->type is
+       coding_type_ccl, double magnification on CRLF encoding.
+
+2003-06-06  Jason Rumney  <jasonr@gnu.org>
+
+       * w32reg.c (SYSTEM_DEFAULT_RESOURCES): New constant.
+       (w32_get_string_resource): Try SYSTEM_DEFAULT_RESOURCES last.
+
+       * xfaces.c (Finternal_face_x_get_resource): Do it on Windows and
+       Mac too.
+
+2003-06-05  Dave Love  <fx@gnu.org>
+
+       * strftime.c: Merge changes from gnulib.
+
+       * mktime.c (__mktime_internal): Merge changes from gnulib
+       involving year 69 and dst2.
+
+       Changes to merge with gnulib version and be consistent with the
+       autoconf test:
+
+       * getloadavg.c: Set NLIST_STRUCT from HAVE_NLIST_H.
+       Use HAVE_STRUCT_NLIST_N_UN_N_NAME, not NLIST_NAME_UNION.
+       [HAVE_LOCALE_H]: Include locale.h.
+       (getloadavg) [HAVE_SETLOCALE]: Run sscanf in C locale.
+
+2003-06-05  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (coordinates_in_window): Convert X and Y to window
+       relative coordinates inside mode-line and header-line parts.
+       Convert X and Y to margin area relative coordinates inside left
+       and right display margin parts.
+
+2003-06-05  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (add_system_logical_colors_to_map): New function.
+       (Fx_open_connection): Use it.
+
+2003-06-04  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * process.c (allocate_pty): Revert part of the previous patch.
+       (Faccept_process_output): Simplify.
+
+2003-06-04  Jason Rumney  <jasonr@gnu.org>
+
+       * termhooks.h (enum event_kind): Remove MOUSE_WHEEL_EVENT.
+
+       * keyboard.c (Qmouse_wheel, mouse_wheel_syms)
+       (lispy_mouse_wheel_names): Remove.
+       (syms_of_keyboard): Remove Qmouse_wheel and mouse_wheel_syms.
+       Always define drag_and_drop_syms.
+
+       * macterm.c (XTread_socket): Map mouse wheel events to Emacs
+       WHEEL_EVENT events.
+
+2003-06-03  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xdisp.c (update_tool_bar): Add missing UNGCPRO.
+
+       * buffer.c (init_buffer_once): Make kill-buffer-hook permanent-local.
+
+2003-06-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (make_menu_item): Make sure we don't crash on a NULL
+       menu item label.
+
+2003-06-03  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Fwindow_edges): Doc fix.
+       (Fwindow_pixel_edges, Fwindow_inside_edges)
+       (Fwindow_inside_pixel_edges): New functions.
+       (syms_of_window): defsubr them.
+
+       * window.h (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
+       (WINDOW_MODE_LINE_LINES, WINDOW_HEADER_LINE_LINES): New macros.
+
+2003-06-02  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * dispnew.c (Fsit_for): Don't lie about the number of args.
+
+2003-06-02  Dave Love  <fx@gnu.org>
+
+       * callproc.c: Use HAVE_FCNTL_H, not USG5.
+       (syms_of_callproc) <process-environment>: Doc fix.
+
+       * doc.c: Use HAVE_FCNTL_H, not USG5.
+
+       * xfaces.c (font_rescale_ratio): Fix for K&R.
+
+       * termcap.c: Use HAVE_FCNTL_H, not _POSIX_VERSION.
+
+       * mem-limits.h: Use HAVE_SYS_RESOURCE_H, HAVE_SYS_VLIMIT_H.
+
+       * lread.c [HAVE_FCNTL_H]: Include fcntl.h.
+
+       * gtkutil.c: Include keyboard.h, charset.h, coding.h.
+       (xg_create_frame_widgets): Use ENCODE_UTF_8.
+
+       * xterm.c (Qutf_8): Move to coding.c.
+
+       * xmenu.c (ENCODE_MENU_STRING): New.
+       (list_of_panes, list_of_items, digest_single_submenu, xmenu_show):
+       Use it.
+
+       * coding.h (ENCODE_UTF_8): New.
+       (Qutf_8): Declare.
+
+       * coding.c (Qutf_8): New.
+       (syms_of_coding): Intern it.
+
+       * fns.c: Doc fixes.
+
+2003-06-02  Kenichi Handa  <handa@m17n.org>
+
+       * buffer.c (Fset_buffer_multibyte): Fix previous change.
+
+2003-06-01  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lread.c (openp): Make sure STR is a string.
+
+2003-06-01  David Ponce  <david@dponce.com>
+
+       * termhooks.h (enum event_kind): Add new WHEEL_EVENT event.
+       Declare MOUSE_WHEEL_EVENT only if MAC_OSX defined.
+
+       * keyboard.c (Qmouse_wheel): Declare only if MAC_OSX defined.
+       (mouse_wheel_syms, lispy_mouse_wheel_names): Likewise.
+       (discard_mouse_events): Discard WHEEL_EVENT events too.
+       (lispy_wheel_names, wheel_syms): New.
+       (syms_of_keyboard): Init and staticpro `wheel_syms'.  Init and
+       staticpro `Qmouse_wheel' and `mouse_wheel_syms' only if MAC_OSX defined.
+       (make_lispy_event): Add WHEEL_EVENT handler.
+
+       * w32term.c (construct_mouse_wheel): Construct WHEEL_EVENT.
+       (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs
+       WHEEL_EVENT events.
+
+2003-05-31  John Paul Wallington  <jpw@gnu.org>
+
+       * Makefile.in (lisp, shortlisp): byte-run, float-sup, map-ynp, and
+       timer are in lisp/emacs-lisp.
+
+2003-05-31  Kenichi Handa  <handa@m17n.org>
+
+       * buffer.c (Fset_buffer_multibyte): Correctly recover a narrowed
+       region when a buffer is changed to unibyte.
+
+       * charset.h (VALID_LEADING_CODE_P): New macro.
+       (UNIBYTE_STR_AS_MULTIBYTE_P): Check more rigidly.
+
+       * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): If coding->flags
+       is nonzero, accept multibyte form of eight-bit-control chars.
+       (decode_composition_emacs_mule): Likewise.
+       (decode_coding_emacs_mule): Likewise.
+       (encode_coding_emacs_mule): If coding->flags is nonzero, produce
+       multibyte form of eight-bit-control chars.
+
+       * fileio.c (Qauto_save_coding, auto_save_coding): New variables.
+       (Finsert_file_contents): If coding-system-for-read is bound to
+       Qauto_save_coding, use the coding system emacs-mule with special
+       setting for recovering a file.
+       (choose_write_coding_system): On auto saving, use the coding
+       system emacs-mule with special setting for auto saving.
+       (syms_of_fileio) <Qauto_save_coding>: Intern and staticpro it.
+
+2003-05-30  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (ccl_coding_driver): Set ccl->eight_bit_control
+       properly before calling ccl_driver.
+
+       * ccl.h (struct ccl_program) <eight_bit_control>: Comment fixed.
+
+       * ccl.c (CCL_WRITE_CHAR): Increment extra_bytes only when it is nonzero.
+       (ccl_driver): Initialize extra_bytes to ccl->eight_bit_control.
+       (setup_ccl_program): Initialize ccl->eight_bit_control to zero.
+
+2003-05-29  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * xfaces.c (realize_default_face): Do not abort if lface is
+       non-existent - reverts change from 2003-05-19.
+
+2003-05-29  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (decode_coding_iso2022): Pay attention to the byte
+       sequence of CTEXT extended segment, and retain those bytes as is.
+
+2003-05-28  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (ENCODE_UNSAFE_CHARACTER): Adjust for the name change
+       of CODING_REPLACEMENT_CHARACTER.
+       (decode_coding_iso2022): If CODING_FLAG_ISO_SAFE, set
+       CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in coding->mode, and
+       check this flag on encoding.
+       (encode_coding_sjis_big5):
+       Check CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag of coding->mode.
+       (Fset_terminal_coding_system_internal):
+       Set CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in terminal_coding.mode
+       instead of setting CODING_FLAG_ISO_SAFE flag in terminal_coding.flags.
+
+       * coding.h (CODING_REPLACEMENT_CHARACTER): Rename from
+       CODING_INHIBIT_CHARACTER_SUBSTITUTION.
+       (CODING_MODE_INHIBIT_UNENCODABLE_CHAR): New macro.
+
+2003-05-28  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (syms_of_print) <print-escape-nonascii>: Doc fix.
+
+       * eval.c (unbind_to): Move init of this_binding to separate statement.
+
+2003-05-28  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (expose_window): Fix error in calculation of
+       window relative coordinates of area to redisplay.
+
+2003-05-27  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (GET_WHEEL_DELTA_WPARAM): New macro.
+
+2003-05-27  David Ponce  <david@dponce.com>
+
+       Handle W32 mouse wheel events as mouse click events, like in X.
+
+       * keyboard.c (make_lispy_event) [WINDOWSNT]: Don't handle
+       MOUSE_WHEEL_EVENT anymore.
+
+       * w32term.c (construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT.
+       Scrolling down/up the mouse wheel is respectively mapped to mouse
+       button 4 and 5.
+       (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs
+       MOUSE_CLICK_EVENT events.  Forward w32 MSH_MOUSEWHEEL events as
+       WM_MOUSEWHEEL events.
+
+2003-05-27  Andreas Schwab  <schwab@suse.de>
+
+       * buffer.c (syms_of_buffer) <default-direction-reversed>: Doc fix.
+
+       * xdisp.c (try_window_id): Avoid aborting if PT is inside a
+       partially visible line.
+
+       * alloc.c (Fgarbage_collect): Fix last change.
+
+2003-05-26  John Paul Wallington  <jpw@gnu.org>
+
+       * xfns.c (Fx_create_frame): Don't call Qface_set_after_frame_default.
+
+2003-05-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * window.c (Fset_window_buffer): Add type of `keep_margins'.
+       (Fset_window_fringes, Fset_window_scroll_bars): Declare before use.
+
+       * window.h (window_box_text_cols): Declare.
+
+       * xdisp.c (window_text_bottom_y, draw_row_fringe_bitmaps)
+       (x_draw_vertical_border): Remove unused var `f'.
+
+       * xfaces.c (build_scalable_font_name): Remove `unused var
+       pixel_size' warning.
+
+       * xfns.c (png_load): Remove `unused vars intent, image_gamma' warning.
+
+       * unexelf.c (unexec): Remove `unused var n' warning.
+
+       * strftime.c (my_strftime_localtime_r): Remove `defined but
+       unused' warning.
+
+       * process.c (allocate_pty): Remove `unused var stb' and
+       `cp might be used uninitialized' warnings.
+
+       * dispnew.c (mode_line_string): Remove unused var `f'.
+
+       * coding.c (find_safe_codings): Remove unused var `i'.
+
+       * bytecode.c (Fbyte_code): Remove `unused val' warning.
+
+       * buffer.c (Fkill_buffer): Remove unused var `list'.
+
+       * alloc.c (Fgarbage_collect): Remove `unused var tail' warning.
+
+2003-05-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * frame.c (make_frame): Condition want_fullscreen with
+       HAVE_WINDOW_SYSTEM.
+
+2003-05-25  Juanma Barranquero  <lektu@terra.es>
+
+       * window.c (Fset_window_scroll_bars): Fix typo in argument name.
+       (Fwindow_scroll_bars): Fix typo in docstring.
+
+2003-05-24  Kim F. Storm  <storm@cua.dk>
+
+       The following changes serve several purposes:
+
+       1) Swap the position of fringes and display margins in windows, i.e.
+       the fringes are now displayed between the margins and the text area
+       (by default).
+
+       2) Allow fringe and scroll bar parameters to be set per-buffer and
+       per-window (like display margins).  Such settings are now stored
+       in window configurations, preserved when frames are resized, and
+       copied when windows are split vertically or horizontally.
+       Several bugs related to display margins have been fixed.
+
+       3) Consistently use FRAME_FONT and FRAME_FONTSET macros.
+
+       4) Use FRAME_COLUMN_WIDTH (f) consistently throughout the code
+       rather than FRAME_WIDTH (FRAME_FONT (f)).
+
+       5) Introduce a consistent naming of variables, members and macros
+       depending on whether their value is measured in pixels or in
+       canonical columns/lines.  Pixel dimensions are named *_width and
+       *_height, while canonical columns/lines are named *_cols and
+       *_lines.  Pixel positions are named *_x and *_y, while column/line
+       positions are named *_col and *_line.
+
+       6) Consolidate more of the X, W32, and MAC gui code by moving
+       common data into struct frame, and generalize it for the non-gui
+       case by using suitable defaults.
+
+       7) Cleanup and consolidate the macros controlling frame and window
+       layout into frame.h and window.h, and generalize the use of the
+       various window_box_* functions (enhanced to handle the new fringe
+       position and the per-window fringe and scroll bar settings).
+
+       * frame.h (struct frame): Rename members height to text_lines,
+       width to text_cols, window_height to total_lines, window_width to
+       total_cols, new_height to new_text_lines, new_width to
+       new_text_cols.  All uses changed.
+       (struct frame): New members which consolidate common members of
+       x_output, w32_output, and mac_output structures: left_pos,
+       top_pos, pixel_height, pixel_width, x_pixels_diff, y_pixels_diff,
+       win_gravity, size_hint_flags, border_width, internal_border_width,
+       line_height, fringe_cols, left_fringe_width, right_fringe_width,
+       want_fullscreen.  All uses changed.
+       (struct frame): New member column_width contaning the canonical
+       column width, analogue to line_height.  All uses changed.
+       (struct frame): Rename members scroll_bar_pixel_width to
+       config_scroll_bar_width, and scroll_bar_cols to
+       config_scroll_bar_cols.  All uses changed.
+       (struct frame): New member scroll_bar_actual_width which
+       consolidates and renames the vertical_scroll_bar_extra member of
+       x_output, w32_output, and mac_output structures.  All uses changed.
+       (FRAME_PIXEL_HEIGHT): Rename from PIXEL_HEIGHT and moved
+       from x/w32/macterm.h files.  All uses changed.  Also change code
+       which referred to f->output_data...->pixel_height.
+       (FRAME_PIXEL_WIDTH): Rename from PIXEL_WIDTH and moved
+       from x/w32/macterm.h files.  All uses changed.  Also change code
+       which referred to f->output_data...->pixel_width.
+       (FRAME_LINES): Rename from FRAME_HEIGHT.  All uses changed.
+       Also change code which referred to f->height.
+       (FRAME_COLS): Rename from FRAME_WIDTH.  All uses changed.
+       Also change code which referred to f->width.
+       (FRAME_NEW_HEIGHT, FRAME_NEW_WIDTH): Remove macros; change uses
+       to update new_text_lines and new_text_cols members directly.
+       (FRAME_CONFIG_SCROLL_BAR_WIDTH): Rename from
+       FRAME_SCROLL_BAR_PIXEL_WIDTH.  All uses changed.
+       (FRAME_CONFIG_SCROLL_BAR_COLS): Rename from
+       FRAME_SCROLL_BAR_COLS.  All uses changed.
+       (FRAME_LEFT_SCROLL_BAR_COLS, FRAME_RIGHT_SCROLL_BAR_COLS):
+       Rename from FRAME_LEFT_SCROLL_BAR_WIDTH and
+       FRAME_RIGHT_SCROLL_BAR_WIDTH, resp.  All uses changed.
+       (FRAME_SCROLL_BAR_AREA_WIDTH, FRAME_LEFT_SCROLL_BAR_AREA_WIDTH)
+       (FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH): New macros.
+       (FRAME_TOTAL_COLS): Rename from FRAME_WINDOW_WIDTH.
+       (SET_FRAME_COLS): Rename from SET_FRAME_WIDTH.
+       (FRAME_TOTAL_COLS_ARG): Rename from FRAME_WINDOW_WIDTH_ARG.
+       (WINDOW_VERTICAL_SCROLL_BAR_COLUMN): Remove unused macro.
+       (WINDOW_VERTICAL_SCROLL_BAR_HEIGHT): Remove unused macro.
+       (FRAME_LINE_HEIGHT): Rename from CANON_Y_UNIT.
+       Unconditionally return line_height member (it now has proper value
+       also for non-window frames).
+       (FRAME_COLUMN_WIDTH): Rename from CANON_X_UNIT.  Unconditionally
+       return new column_width member (rather than the default font width).
+       (FRAME_FRINGE_COLS, FRAME_LEFT_FRINGE_WIDTH)
+       (FRAME_RIGHT_FRINGE_WIDTH): Rename from FRAME_X_... and moved
+       from x/w32/macterm.h files.  Unconditionally return corresponding
+       member of frame structure (they now have proper values also for
+       non-window frames).
+       (FRAME_TOTAL_FRINGE_WIDTH): Rename from FRAME_FRINGE_WIDTH.
+       Calculate return value from left and right widths.
+       (FRAME_INTERNAL_BORDER_WIDTH): Unconditionally return
+       internal_border_width member (has proper value for non-window frame).
+       (FRAME_PIXEL_X_FROM_CANON_X): Rename from PIXEL_X_FROM_CANON_X.
+       (FRAME_PIXEL_Y_FROM_CANON_Y): Rename from PIXEL_Y_FROM_CANON_Y.
+       (FRAME_CANON_X_FROM_PIXEL_X): Rename from CANON_X_FROM_PIXEL_X.
+       (FRAME_CANON_Y_FROM_PIXEL_Y): Rename from CANON_Y_FROM_PIXEL_Y.
+       (FRAME_LINE_TO_PIXEL_Y): Rename from CHAR_TO_PIXEL_ROW,
+       consolidated from xterm.h, macterm.h, and w32term.h.
+       (FRAME_COL_TO_PIXEL_X): Rename from CHAR_TO_PIXEL_COL,
+       consolidated from xterm.h, macterm.h, and w32term.h.
+       (FRAME_TEXT_COLS_TO_PIXEL_WIDTH): Rename from
+       CHAR_TO_PIXEL_WIDTH consolidated from x/mac/w32term.h.
+       (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Rename from
+       CHAR_TO_PIXEL_HEIGHT consolidated from x/mac/w32term.h.
+       (FRAME_PIXEL_Y_TO_LINE): Rename from PIXEL_TO_CHAR_ROW
+       consolidated from x/mac/w32term.h.
+       (FRAME_PIXEL_X_TO_COL): Rename from PIXEL_TO_CHAR_COL
+       consolidated from x/mac/w32term.h.
+       (FRAME_PIXEL_WIDTH_TO_TEXT_COLS): Rename from
+       PIXEL_TO_CHAR_WIDTH consolidated from x/mac/w32term.h.
+       (FRAME_PIXEL_HEIGHT_TO_TEXT_LINES): Rename from
+       PIXEL_TO_CHAR_HEIGHT consolidated from x/mac/w32term.h.
+
+       * window.h (struct window): Rename members left to left_col,
+       top to top_line, height to total_lines, width to total_cols,
+       left_margin_width to left_margin_cols, right_margin_width to
+       right_margin_cols, orig_height to orig_total_lines, orig_top to
+       orig_top_line.  All uses changed.
+       (struct window): New members left_fringe_width, right_fringe_width,
+       fringes_outside_margins, scroll_bar_width, vertical_scroll_bar_type.
+       (WINDOW_XFRAME, WINDOW_FRAME_COLUMN_WIDTH, WINDOW_FRAME_LINE_HEIGHT):
+       New macros primarily used to simplify other macros.
+       (WINDOW_TOTAL_COLS): New macro.  Change relevant code that
+       referred to XINT (w->width).
+       (WINDOW_TOTAL_LINES): New macro.  Change relevant code that
+       referred to XINT (w->height).
+       (WINDOW_TOTAL_WIDTH): New macro.  Change relevant code that
+       referred to XINT (w->width) * canon_x_unit.
+       (WINDOW_TOTAL_HEIGHT): New macro.  Change relevant code that
+       referred to XINT (w->height) * canon_y_unit.
+       (WINDOW_LEFT_EDGE_COL): New macro.  Change relevant code that
+       referred to XINT (w->left).
+       (WINDOW_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_EDGE.  Change
+       all uses and code that referred to XINT (w->left) + XINT (w->width).
+       (WINDOW_TOP_EDGE_LINE): New macro.  Change relevant code that
+       referred to XINT (w->top).
+       (WINDOW_BOTTOM_EDGE_LINE): New macro.  Change relevant code that
+       referred to XINT (w->top) + XINT (w->height).
+       (WINDOW_LEFT_EDGE_X): New macro.  Change relevant code that
+       referred to XINT (w->left) * canon_x_unit.
+       (WINDOW_RIGHT_EDGE_X): New macro.  Change relevant code that
+       referred to (XINT (w->left) + XINT (w->width)) * canon_x_unit.
+       (WINDOW_TOP_EDGE_Y): New macro.  Change relevant code that
+       referred to XINT (w->top) * canon_y_unit.
+       (WINDOW_BOTTOM_EDGE_Y): New macro.  Change relevant code that
+       referred to (XINT (w->top) + XINT (w->height)) * canon_y_unit.
+       (WINDOW_LEFTMOST_P): New macro.
+       (WINDOW_BOX_LEFT_EDGE_COL): Rename from WINDOW_LEFT_MARGIN.
+       All uses changed.
+       (WINDOW_BOX_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_MARGIN.
+       All uses changed.
+       (WINDOW_BOX_LEFT_EDGE_X): Rename from
+       WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, moved from dispextern.h.
+       Do not exclude left fringe width.
+       (WINDOW_BOX_RIGHT_EDGE_X): Rename from
+       WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X, moved from dispextern.h.
+       Do not exclude fringe widths.
+       (WINDOW_LEFT_FRINGE_WIDTH, WINDOW_RIGHT_FRINGE_WIDTH)
+       (WINDOW_FRINGE_COLS, WINDOW_TOTAL_FRINGE_WIDTH): New macros.
+       Change relevant code that referred to FRAME_LEFT_FRINGE_WIDTH,
+       FRAME_RIGHT_FRINGE_WIDTH, FRAME_FRINGE_COLS, and
+       FRAME_TOTAL_FRINGE_WIDTH to allow per-window fringe settings.
+       (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS): New macro.
+       (WINDOW_VERTICAL_SCROLL_BAR_TYPE, WINDOW_HAS_VERTICAL_SCROLL_BAR)
+       (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
+       (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
+       (WINDOW_CONFIG_SCROLL_BAR_WIDTH, WINDOW_CONFIG_SCROLL_BAR_COLS):
+       New macros.  Change code which referenced corresponding
+       FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS,
+       FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT,
+       FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT,
+       FRAME_SCROLL_BAR_PIXEL_WIDTH, and FRAME_SCROLL_BAR_COLS macros to
+       allow per-window scroll-bar settings.
+       (WINDOW_LEFT_SCROLL_BAR_COLS, WINDOW_RIGHT_SCROLL_BAR_COLS): New macros.
+       (WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH): New macro.  Change code that
+       referred to FRAME_LEFT_SCROLL_BAR_WIDTH.
+       (WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH): New macro.  Change code
+       that referred to FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT and
+       FRAME_SCROLL_BAR_WIDTH.
+       (WINDOW_SCROLL_BAR_COLS, WINDOW_SCROLL_BAR_AREA_WIDTH)
+       (WINDOW_SCROLL_BAR_AREA_X): New macros.
+       (WINDOW_HEADER_LINE_HEIGHT): Rename from
+       WINDOW_DISPLAY_HEADER_LINE_HEIGHT, moved from dispextern.h.
+       (WINDOW_BOX_HEIGHT_NO_MODE_LINE): Rename from
+       WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, moved from dispextern.h.
+       (WINDOW_BOX_TEXT_HEIGHT): Rename from
+       WINDOW_DISPLAY_PIXEL_WIDTH, moved from dispextern.h.
+       (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y)
+       (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y)
+       (WINDOW_TEXT_TO_FRAME_PIXEL_X): Move here from dispextern.h.
+       (WINDOW_LEFT_MARGIN_WIDTH): Rename from
+       WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH, moved from dispextern.h.
+       (WINDOW_RIGHT_MARGIN_WIDTH): Rename from
+       WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, moved from dispextern.h.
+       (window_from_coordinates): Update prototype.
+       (Fset_window_buffer): Update EXFUN.
+       (set_window_buffer): Update prototype.
+
+       * dispextern.h (struct glyph_matrix): Rename members window_left_x
+       to window_left_col, window_top_y to window_top_line.  All uses
+       changed.
+       (FRAME_INTERNAL_BORDER_WIDTH_SAFE): Remove macro; can now safely
+       use FRAME_INTERNAL_BORDER_WIDTH macro instead as
+       internal_border_width is now set to 0 for non-window frames.
+       (WINDOW_DISPLAY_PIXEL_WIDTH, WINDOW_DISPLAY_PIXEL_HEIGHT)
+       (WINDOW_DISPLAY_MODE_LINE_HEIGHT, WINDOW_DISPLAY_HEADER_LINE_HEIGHT)
+       (WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, WINDOW_DISPLAY_TEXT_HEIGHT)
+       (WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X)
+       (WINDOW_DISPLAY_TOP_EDGE_PIXEL_Y, WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y)
+       (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y)
+       (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y)
+       (WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH)
+       (WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, WINDOW_WANTS_MODELINE_P):
+       Move to window.h and renamed [see window.h changes].
+       (WINDOW_AREA_TO_FRAME_PIXEL_X, WINDOW_AREA_PIXEL_WIDTH)
+       (WINDOW_DISPLAY_TEXT_AREA_PIXEL_WIDTH): Remove macros.
+       (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P):
+       Use WINDOW_TOTAL_LINES.
+       (frame_update_line_height): Remove prototype.
+
+       * buffer.h (struct buffer): Rename members measured in columns:
+       left_margin_width to left_margin_cols, right_margin_width to
+       right_margin_cols.  All uses changed.
+       New members left_fringe_width, right_fringe_width,
+       fringes_outside_margins for per-buffer fringe settings.
+       New members scroll_bar_width and vertical_scroll_bar_type for
+       per-buffer scroll bar settings.
+
+       * buffer.c (init_buffer_once): Set buffer_defaults and
+       buffer_local_flags for new buffer-local variables
+       left_fringe_width, right_fringe_width, fringes_outside_margins,
+       scroll_bar_width, and vertical_scroll_bar_type.
+       (syms_of_buffer): Defvar_per_buffer them, and defvar_lisp_nopro
+       default-* variables for them.
+
+       * dispnew.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (mode_line_string): No need to adjust width for mode lines, as it
+       is already adjusted by the caller.
+       (marginal_area_string): Handle fringes inside/outside margins.
+
+       * frame.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (make_frame): Initialize left_fringe_width, right_fringe_width,
+       fringe_cols, scroll_bar_actual_width, border_width,
+       internal_border_width, column_width, line_height, x_pixels_diff,
+       y_pixels_diff, want_fullscreen, size_hint_flags, and win_gravity
+       members with values suitable for a non-window frames.
+
+       * gtkutil.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * indent.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * keyboard.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (make_lispy_event): Use window positions returned from
+       window_from_coordinates when constructing the lisp event for
+       MOUSE_CLICK_EVENT and DRAG_N_DROP_EVENT, rather than calculating
+       (incorrect) values locally.
+       (make_lispy_movement): Use window positions returned from
+       window_from_coordinates when constructing the lisp event, rather
+       than calculating (incorrect) values locally.
+
+       * scroll.c: Make (some) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * sunfns.c (Fsun_menu_internal): Adapt to per-window fringes and
+       scroll-bars.
+
+       * sysdep.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * term.c: Make (some) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * widget.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * window.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (make_window): Initialize new members
+       left_margin_cols, right_margin_cols, left_fringe_width,
+       right_fringe_width, fringes_outside_margins, scroll_bar_width,
+       and vertical_scroll_bar_type.
+       (coordinates_in_window): Adapt to new fringe/margin positions
+       and per-window fringes and scroll-bars.
+       Fix bug related to incorrectly adjusting coordinates by
+       frame's internal_border_width (the effect normally negible since
+       the internal_border_width is typically 0 or 1 pixel, but very
+       noticeable for an internal_border_width of e.g. 25 pixels).
+       Upon successful return (other than ON_NOTHING), the coordinates
+       are now always properly converted to window relative for the
+       given display element.
+       (window_from_coordinates): Add new parameters wx and wy to
+       return the window relative x and y position in the returned
+       window and part.  A null arg means, don't return the position.
+       All callers changed.
+       (adjust_window_margins): New function which may reduce the width
+       of the display margins if a window's text area is too small after
+       resizing or splitting windows.
+       (size_window): Fix bug that did not account for display margin
+       widths when checking the minimum width of a window; use
+       adjust_window_margins.
+       (set_window_buffer): Call Fset_window_fringes and
+       Fset_window_scroll_bars to setup per-window elements.
+       Add new arg KEEP_MARGINS_P.  Non-nil means to keep window's
+       existing display margin, fringe widths, and scroll bar settings
+       (e.g. after splitting a window or resizing the frame).
+       All callers changed.
+       (Fset_window_buffer): New arg KEEP_MARGINS.  All callers changed.
+       (Fsplit_window): Duplicate original window's display margin,
+       fringe, and scroll-bar settings; then call Fset_window_buffer with
+       KEEP_MARGINS non-nil.  This fixes a bug which caused a split
+       window to only preserve the display margins in one of the windows.
+       When splitting horizontally, call adjust_window_margins on both
+       windows to ensure that the text area of the new windows is non too
+       narrow.  This fixes a bug which could cause Emacs to trap if the
+       width of the split window was less than the width of the display
+       margins.
+       (window_box_text_cols): Rename from window_internal_width.
+       All uses changed.  Adapt to per-window fringes and scroll bars.
+       Fix bug that caused vertical separator to be subtracted also on
+       window frames.  Fix another bug that did not reduce the returned
+       value by the columns used for display margins.
+       (window_scroll_line_based): Fix bug related to scrolling too much
+       when display margins are present (implicitly fixed by the fix to
+       window_box_text_cols).
+       (scroll_left, scroll_right): Fix bug related to scrolling too far
+       by default when display margins are present (implicitly fixed by
+       the fix to window_box_text_cols).
+       (struct saved_window): Rename members left to left_col, top to
+       top_line, width to total_cols, height to total_lines, orig_top to
+       orig_top_line, orig_height to orig_total_lines.  All uses changed.
+       New members left_margin_cols, right_margin_cols,
+       left_fringe_width, right_fringe_width, fringes_outside_margins,
+       scroll_bar_width, and vertical_scroll_bar_type for saving
+       per-window display elements.
+       (Fset_window_configuration): Restore display margins, fringes,
+       and scroll bar settings.  This fixes a bug which caused display
+       margins to be discarded when saving and restoring a window
+       configuration.
+       (save_window_save): Save display margins, fringes, and scroll bar
+       settings.  This fixes a bug which caused display margins to be
+       discarded when saving and restoring a window configuration.
+       (Fset_window_margins): Do nothing if display margins are not
+       really changed.  Otherwise, call adjust_window_margins to ensure
+       the text area doesn't get too narrow.  This fixes a bug which
+       could cause Emacs to trap if setting display margins wider than
+       the width of the window.
+       (Fset_window_fringes): New defun to allow user to specifically set
+       this window's fringe widths and position vs. display margins.
+       (Fwindow_fringes): New defun to return window's actual fringe settings.
+       (Fset_window_scroll_bars): New defun to allow user to specifically
+       set this window's scroll bar width and position.
+       (Fwindow_scroll_bars): New defun to return window's actual scroll
+       bar settings.
+       (compare_window_configurations): Also compare display margins,
+       fringes, and scroll bar settings.
+       (syms_of_window): Defsubr new defuns for fringe and scroll bars.
+
+       * xdisp.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (window_box_width): Adapt to per-window fringes and scroll bars,
+       and new fringe vs. display margin position.  Note that returned
+       value is no longer guaranteed to be a whole multiple of the frame
+       column width, since per-window fringes may now be any width.
+       (window_box_left_offset): New function like window_box_left, but
+       value is relative to left border of window (rather than frame).
+       (window_box_right_offset): New function like window_box_right,
+       but value is relative to left border of window.
+       (window_box_left): Adapt to per-window fringes and scroll bars,
+       and new fringe vs. display margin position.  Simplify by using
+       WINDOW_LEFT_EDGE_X and window_box_left_offset.
+       (window_box): Allow null args for unnecessary return values;
+       change/simplify relevant callers.
+       (x_y_to_hpos_vpos): Adapt to per-window fringes and scroll bars,
+       and new fringe vs. display margin position.
+       Use window_box_left_offset and window_box_right_offset
+       (get_glyph_string_clip_rect): Adapt to per-window fringes and
+       scroll bars, and new fringe vs. display margin position.
+       Use WINDOW_LEFT_EDGE_X and WINDOW_TOTAL_WIDTH.
+       (draw_fringe_bitmap): Rework to handle per-window fringes and new
+       fringe vs. display margin position.
+       (hscroll_window_tree): Use window_box_width instead of window_box.
+       (redisplay_window): Adapt to per-window scroll bars.
+       (draw_glyphs): Rework to handle per-window fringes and scroll
+       bars, and new fringe vs. display margin position.
+       Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left.
+       (x_clear_end_of_line): Adapt to per-window fringes and scroll
+       bars, and new fringe vs. display margin position.  Fix bug which
+       increased total width of full_width rows by width of scroll bars
+       although window's total width already includes that.
+       (x_fix_overlapping_area): Simplify using window_box_left_offset.
+       (expose_area): Simplify using window_box_left_offset.
+       (x_draw_vertical_border): Handle per-window scroll bar settings,
+       mixing windows with left, right and no scroll bars.
+
+       * xfaces.c [WINDOWSNT]: Move redefinition of FONT_WIDTH macro to
+       where it's used in x_list_fonts (for clarity).
+       (frame_update_line_height): Remove unused function; functionality
+       is now done directly when setting the default font in x_set_font.
+
+       * xfns.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * xmenu.c: Make (some) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * xterm.h (struct x_output): Move members left_pos, top_pos,
+       border_width, pixel_height, pixel_width, line_height,
+       internal_border_width, vertical_scroll_bar_extra,
+       left_fringe_width, right_fringe_width, fringe_cols,
+       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
+       x_pixels_diff, and y_pixels_diff to struct frame (frame.h).
+       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
+       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
+       (PIXEL_WIDTH, PIXEL_HEIGHT)
+       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
+       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to
+       frame.h and renamed [see frame.h changes].
+       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
+       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
+       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h
+       and renamed [see frame.h changes].
+
+       * xterm.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars.
+       (scroll_run): Adapt to new fringe position.
+       (glyph_rect): Use window coordinates returned from
+       window_from_coordinates rather than frame_to_window_pixel_xy.
+       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
+       scroll-bars.
+       (handle_one_xevent): Simplify a USE_GTK conditional.
+       (x_clip_to_row): Remove superfluous whole_line_p arg and code
+       (fringes are now inside margins, i.e. always in the clipping area).
+       All callers changed.
+       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
+       directly, then call compute_fringe_widths.  Don't call
+       frame_update_line_height.
+
+       * w32term.h (struct w32_output): Move members left_pos, top_pos,
+       border_width, pixel_height, pixel_width, line_height,
+       internal_border_width, vertical_scroll_bar_extra,
+       left_fringe_width, right_fringe_width, fringe_cols,
+       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
+       x_pixels_diff, and y_pixels_diff to struct frame (frame.h).
+       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
+       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
+       (PIXEL_WIDTH, PIXEL_HEIGHT)
+       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
+       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to
+       frame.h and renamed [see frame.h changes].
+       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
+       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
+       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h
+       and renamed [see frame.h changes].
+
+       * w32term.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars.
+       (glyph_rect): Use window coordinates returned from
+       window_from_coordinates rather than frame_to_window_pixel_xy.
+       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
+       scroll-bars.
+       (w32_clip_to_row): Remove superfluous whole_line_p arg and code
+       (fringes are now inside margins, i.e. always in the clipping area).
+       All callers changed.
+       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
+       directly, then call compute_fringe_widths.  Don't call
+       frame_update_line_height.
+
+       * w32console.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * w32fns.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * w32menu.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * macterm.h (struct mac_output): Move members left_pos, top_pos,
+       border_width, pixel_height, pixel_width, line_height,
+       internal_border_width, vertical_scroll_bar_extra,
+       left_fringe_width, right_fringe_width, fringe_cols,
+       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
+       x_pixels_diff, y_pixels_diff to struct frame (frame.h).
+       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
+       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
+       (PIXEL_WIDTH, PIXEL_HEIGHT)
+       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
+       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to
+       frame.h and renamed [see frame.h changes].
+       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
+       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
+       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h
+       and renamed [see frame.h changes].
+
+       * macterm.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars.
+       (glyph_rect): Use window coordinates returned from
+       window_from_coordinates rather than frame_to_window_pixel_xy.
+       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
+       scroll-bars.
+       (x_clip_to_row): Remove superfluous whole_line_p arg and code
+       (fringes are now inside margins, i.e. always in the clipping area).
+       All callers changed.
+       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
+       directly, then call compute_fringe_widths.  Don't call
+       frame_update_line_height.
+
+       * macfns.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (x_real_positions): Set f->x_pixels_diff and f->y_pixels_diff to 0.
+
+       * macmenu.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * msdos.h (struct x_output): Remove members left_pos, top_pos,
+       and line_height, and use corresponding new members in struct
+       frame.  All uses changed.
+       (FRAME_LINE_HEIGHT, FRAME_INTERNAL_BORDER_WIDTH): Remove macros;
+       superseeded by corresponding macros in frame.h.
+
+       * msdos.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (IT_note_mouse_highlight): Use updated window coordinates returned
+       by window_from_coordinates, rather than adjusting them locally.
+       (internal_terminal_init): No need to initialize line_height here;
+       it now defaults to 1.
+
+2003-05-24  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (read_key_sequence): Adjust fkey and keytran when
+       dropping `down' events.
+
+2003-05-24  Andreas Schwab  <schwab@suse.de>
+
+       * coding.c (find_safe_codings): Fix last change.
+
+2003-05-24  Istvan Marko  <mi@imarko.dhs.org>  (tiny change)
+
+       * xfns.c (x_window): Fix typo from 2003-05-21 change.
+
+2003-05-23  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xdisp.c (display_mode_element): Increase max depth.
+       Simplify the error handling code.  Use a different error string
+       for the case where we hit the depth limit.
+
+       * lisp.h (Vfundamental_mode_abbrev_table): Don't declare.
+
+       * buffer.c (reset_buffer_local_variables): Remove redundant setting.
+
+2003-05-21  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * intervals.c (get_local_map): Don't get char-property of previous
+       point any more: get_pos_property already does it and better.
+
+2003-05-21  Dave Love  <fx@gnu.org>
+
+       [Merged from unicode branch.]
+
+       * xfns.c (x_window, x_window): Use use_xim.
+
+       * xterm.c (use_xim): Initialize.
+       (xim_open_dpy, xim_initialize, xim_close_dpy): Use use_xim.
+       (x_term_init): Maybe set use_xim.
+
+       * xterm.h (use_xim) [HAVE_X_I18N]: Declare.
+
+2003-05-21  Jason Rumney  <jasonr@gnu.org>
+
+       * unexw32.c (_start): Remove _fmode initialization.
+
+       * emacs.c (main) [WINDOWSNT]: Move it here.
+
+2003-05-20  Dave Love  <fx@gnu.org>
+
+       * s/gnu-linux.h (MAIL_USE_FLOCK): Make it conditional.
+
+2003-05-19  Richard M. Stallman  <rms@gnu.org>
+
+       * xfaces.c (Finternal_set_lisp_face_attribute): Handle Qunspecified
+       as value for QCfont attribute.
+       (realize_default_face): lface should already exist; crash if not.
+       Specify 0 for FORCE_P when calling set_lface_from_font_name.
+
+       * frame.c (Fignore_event): Doc fix.
+
+2003-05-19  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (decode_coding_string): Handle post-read-conversion
+       even if the coding doesn't require decoding.
+
+2003-05-18  Richard M. Stallman  <rms@gnu.org>
+
+       * callproc.c (Fcall_process_region): Doc fix.
+
+2003-05-17  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lread.c (Fload): Print a message if package is obsolete.
+
+       * window.c (Fselect_window): Add optional `norecord' arg.
+       (select_window_1): Fold into Fselect_window.
+       (select_window_norecord): New function.
+       (temp_output_buffer_show): Use it.  Preserve current buffer.
+
+       * window.h (Fselect_window): Update declaration.
+
+       * window.c (delete_window, Fother_window, Fset_window_configuration):
+       * minibuf.c (read_minibuf):
+       * macterm.c (x_new_focus_frame):
+       * frame.c (do_switch_frame, Fset_frame_selected_window, Fdelete_frame):
+       * callint.c (Fcall_interactively):
+       * xterm.c (x_new_focus_frame): Pass nil as new arg to Fselect_window.
+
+       * buffer.c (Fpop_to_buffer): Pass norecord to Fselect_window.
+
+2003-05-17  David Kastrup  <dak@gnu.org>
+
+       * process.c (read_process_output): Back out change from 2003-03-09.
+
+2003-05-17  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * editfns.c (get_pos_property): Don't assume that `object' = nil.
+
+       * textprop.c (text_property_stickiness): New arg `buffer'.
+
+       * intervals.h (text_property_stickiness): New arg `buffer'.
+       (get_pos_property): Declare.
+
+       * intervals.c (get_local_map): Use get_pos_property, to obey
+       stickiness and empty overlays.
+       (create_root_interval, graft_intervals_into_buffer): Use BEG.
+       (merge_properties, intervals_equal, merge_properties_sticky):
+       Use XCAR, XCDR.
+       (adjust_for_invis_intang): Pass new arg to text_property_stickiness.
+
+2003-05-17  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (read_minibuf): If buffer is empty, record the default
+       in the history.
+       (Fminibuffer_complete_word): When deleting the overlap, take account
+       of its real position.
+
+       * fns.c (map_char_table): Fix previous change.
+
+       * syntax.c (find_defun_start):
+       When open_paren_in_column_0_is_defun_start,
+       return beginning of buffer.
+
+       * lisp.h (map_char_table): Declare added arg.
+
+       * fns.c (map_char_table): New arg TABLE gets the master table.
+       All calls changed.
+       Process default and inheritance, resorting to Faref if necessary.
+
+       * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap)
+       (Faccessible_keymaps): Pass new arg to map_char_table.
+
+       * fontset.c (Ffontset_info): Pass new arg to map_char_table.
+
+       * casetab.c (set_case_table): Pass new arg to map_char_table.
+
+       * data.c (let_shadows_buffer_binding_p): Make target of p volatile.
+
+       * lisp.h (specbinding_func): New typedef.
+       (struct specbinding): Use specbinding_func, to put the `volatile'
+       in the right place.
+
+       * alloc.c (Fgarbage_collect): Cast pointers into specpdl
+       to avoid GCC warning.
+
+2003-05-16  Ralph Schleicher  <rs@nunatak.allgaeu.org>
+
+       * fileio.c (Fdelete_file): Handle symlinks pointing to directories.
+
+2003-05-15  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (apply_modifiers): Don't fill the other cache.
+
+2003-05-14  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * .gdbinit-union: New file, for USE_LISP_UNION_TYPE users.
+
+       * window.h (Qwindowp, Qwindow_live_p, Vwindow_list)
+       (Fwindow_end, Fselected_window, Fdelete_window, Fwindow_buffer)
+       (Fget_buffer_window, Fsave_window_excursion, Fsplit_window)
+       (Fset_window_configuration, Fcurrent_window_configuration)
+       (compare_window_configurations, Fcoordinates_in_window_p, Fwindow_at)
+       (Fpos_visible_in_window_p, mark_window_cursors_off)
+       (window_internal_height, window_internal_width, Frecenter)
+       (Fscroll_other_window, Fset_window_start, temp_output_buffer_show)
+       (replace_buffer_in_all_windows, init_window_once, init_window)
+       (syms_of_window, keys_of_window): Move from lisp.h.
+       * lisp.h: Move window.c declarations to window.h.
+
+       * bytecode.c: Include window.h.
+       * emacs.c: Include window.h.
+
+       * keyboard.c (make_lispy_event): Apply modifiers to multibyte-char key.
+       (keyremap): Add `parent' field.
+       (keyremap_step): Use it.  Remove `parent' argument.
+       (read_key_sequence): Setup and use the new `parent' field.
+
+2003-05-11  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (adjust_point_for_property): Ensure termination.
+
+2003-05-10  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (follow_key): Remove dead variable `did_meta'.
+       (access_keymap_keyremap, keyremap_step): New funs, extracted from the
+       duplicated handling of function-key-map and key-translation-map
+       in read_key_sequence.
+       (read_key_sequence): Use them.
+
+       * keyboard.c (adjust_point_for_property): Try harder to move point
+       to the non-sticky end of an invisible property.
+
+       * xdisp.c (single_display_prop_intangible_p): Make `space' display
+       property intangible as well.
+
+2003-05-10  Andreas Schwab  <schwab@suse.de>
+
+       * xmenu.c (single_menu_item): Change last parameter to void* to
+       avoid warning.
+
+2003-05-09  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (Fprin1_to_string): Instead of gcpro, set abort_on_gc.
+       Bind Qinhibit_modification_hooks to t so there will be no GC.
+       Rename local `tem' to `save_deactivate_mark'.
+
+       * eval.c (specpdl_ptr): Declare volatile.
+       (unbind_to): Copy the whole binding and decrement specpdl_ptr
+       before doing the work of unbinding it.
+
+       * lisp.h (struct specbinding): Declare elements volatile.
+       (specpdl_ptr): Declare volatile.
+
+       * Makefile.in (alloca.o): Specify -DDO_BLOCK_INPUT in compiling.
+
+       * alloca.c: Test DO_BLOCK_INPUT rather than `emacs'
+       for use of BLOCK_INPUT and inclusion of lisp.h and blockinput.h.
+
+2003-05-08  Dave Love  <fx@gnu.org>
+
+       * coding.c (Vlast_coding_system_used): Doc fix.
+
+2003-05-07  Jason Rumney  <jasonr@gnu.org>
+
+       * fileio.c (Ffile_symlink_p): Let handlers handle symlinks even
+       when system does not support them.
+
+2003-05-05  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * fileio.c (Qwrite_region_annotate_functions): New var.
+       (build_annotations): Use it to process the global part of the hook.
+       (syms_of_fileio): Init and staticpro it.
+
+       * keyboard.c (safe_run_hooks_error): Display a message instead of
+       silently ignoring the error.
+
+2003-05-03  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (input_available_signal): Mark static.
+       (menu_bar_items): Use map_keymap.
+       (menu_bar_one_keymap): Remove.
+       (menu_bar_item): Adjust arglist (for use in map_keymap).
+       Properly hide a second binding when not both are keymaps.
+
+       * xmenu.c (struct skp): New struct, to pass args through map_keymap.
+       (single_keymap_panes): Use it and map_keymap.
+       (single_menu_item): Use skp as well.
+
+       * keymap.h (map_keymap_function_t): New type.
+       (map_keymap): Declare.
+
+       * keymap.c (map_keymap_item, map_keymap_char_table_item, map_keymap)
+       (map_keymap_call, Fmap_keymap): New functions.
+       (syms_of_keymap): Defsubr map-keymap.
+
+2003-05-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (create_dialog, make_widget_for_menu_item)
+       (make_menu_item, create_menus, xg_update_menu_item): Don't call
+       ..._with_mnemonic functions for menu items.
+
+2003-05-01  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (coding_system_accept_latin_extra_p): Delete this
+       function.
+       (find_safe_codings): Pay attention to
+       the property tranlsation-table-for-encode of each codings.
+       (syms_of_coding): Give Qtranslation_table the extra slot number 2.
+
+2003-05-01  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c (Funwind_protect): Use func=Fprogn rather than symbol=Qnil.
+
+2003-04-30  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c (unbind_to): Don't handle symbol = Qnil any more.
+
+       * lisp.h (CHECK): Wrap args in parenthesis.
+       (specbind): Fix doc: symbol = Qnil is not supported any more.
+
+       * bytecode.c (Fbyte_code) <unwind-protect>:
+       Use Fprogn rather than 0 and Qnil.
+
+       * keyboard.c (parse_modifiers_uncached): Parse `down', `drag',
+       `double', and `triple' modifiers as well.
+
+2003-04-30  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (echo_char): Don't clear out a dash that follows a space.
+
+       * alloc.c (abort_on_gc): New variable.
+       (Fgarbage_collect): Abort if abort_on_gc is set.
+
+       * lisp.h (abort_on_gc): Add decl.
+
+       * eval.c (Fsignal): Clear abort_on_gc.
+
+       * editfns.c (Fformat): Set abort_on_gc during first scan of format.
+       Reinit FORMAT_START and END before second scan.
+
+       * xdisp.c (move_it_vertically_backward): Do the final big else
+       even if nlines is 0.
+
+       * xdisp.c (redisplay_internal): Finish the per-frame loop
+       even if redisplay is suspended by input.
+
+2003-04-24  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (x_list_fonts): Return all fonts that match if
+       maxnames = -1.
+
+2003-04-25  Kenichi Handa  <handa@m17n.org>
+
+       * syntax.c (skip_chars): Fix previous change.
+
+2003-04-24  Kenichi Handa  <handa@m17n.org>
+
+       * syntax.c (skip_chars): Make the code faster by using the common
+       technique of *p, *stop, and *endp.
+
+2003-04-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xdisp.c (update_tool_bar): BLOCK_INPUT before calling
+       tool_bar_items so GTK tool bar expose callback does not access items
+       being updated.
+
+2003-04-19  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c (Fapply): Undo last change and add a comment about why.
+
+2003-04-18  Miles Bader  <miles@gnu.org>
+
+       * data.c (Faset): Calculate nbytes earlier, to satisfy the now
+       pickier PARSE_MULTIBYTE_SEQ.
+
+2003-04-17  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c (For, Fand, Fprogn, un_autoload, do_autoload):
+       Use XCDR, XCAR, CONSP.
+       (Fdefmacro): Fix docstring.  Use XCAR, XCDR.
+       (Fapply): Remove unnecessary GCPRO.
+
+       * doc.c (Fsubstitute_command_keys): Remove spurious casts.
+
+       * charset.h (PARSE_MULTIBYTE_SEQ): Pretend `length' is used.
+
+       * buffer.h: Don't hardcode BEG==1.
+
+       * abbrev.c (Fdefine_abbrev_table): Use XCAR, XCDR.
+
+2003-04-16  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (try_window, try_window_reusing_current_matrix):
+       When at end of window, set window_end_pos to Z-ZV.
+
+       * buffer.c (Foverlay_recenter): Doc fix.
+
+2003-04-14  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * dispnew.c (Fsit_For): Support XEmacs-style arg list.
+
+2003-04-14  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (mac_check_for_quit_char): Don't check more often than
+       once a second.
+
+2003-04-11  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (kbd_buffer_get_event): Don't handle SELECT_WINDOW_EVENT
+       specially, so that they can't hide an implicit switch-frame event.
+       (make_lispy_event): Handle SELECT_WINDOW_EVENT.
+       (head_table): Use switch-frame as event_kind for select-window.
+       (keys_of_keyboard): Don't bind [select-window] in special-event-map.
+
+       * editfns.c (Fformat): Lisp_Object/int mixup.
+       (format2): Remove unused var numargs.
+
+2003-04-11  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Vafter_insert_file_adjust_coding_function): Delete.
+       (Qafter_insert_file_set_coding): New variable.
+       (syms_of_fileio): Initialize and staticpro it.  Delete declaration
+       for after-insert-file-adjust-coding-function.
+       (Finsert_file_contents): Call Qafter_insert_file_set_coding
+       instead of Vafter_insert_file_adjust_coding_function.
+
+2003-04-11  Kenichi Handa  <handa@m17n.org>
+
+       * lisp.h (temp_echo_area_glyphs): Adjust prototype.
+
+       * minibuf.c (temp_echo_area_glyphs): Change the arg to Lisp
+       string.  Callers changed.
+
+2003-04-10  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Vafter_insert_file_adjust_coding_function): New variable.
+       (syms_of_fileio): Declare it as a lisp variable.
+       (Finsert_file_contents):
+       Call Vafter_insert_file_adjust_coding_function before calling
+       decode-format.
+
+2003-04-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (xg_scroll_callback): Call gtk_range_get_adjustment to
+       get GtkAdjustment as widget now is a GtkRange.
+
+       * gtkutil.c (xg_create_scroll_bar): Connect to value-changed on
+       GtkRange to avoid memory leak.
+
+2003-04-09  Kenichi Handa  <handa@m17n.org>
+
+       * xfaces.c (Vface_font_rescale_alist): New variable.
+       (struct font_name): New member rescale_ratio.
+       (font_rescale_ratio): New function.
+       (split_font_name): If NUMERIC_P is nonzero, set font->rescale_ratio.
+       (better_font_p): On comparing point sized, pay attention to
+       recale_ratio member of fonts.
+       (build_scalable_font_name): Reflect font->rescale_ratio in the
+       font name.
+       (syms_of_xfaces): Declare Vface_font_rescale_alist as a Lisp variable.
+
+       * lread.c (read1): Before calling index, check if the 2nd
+       arguemnt is in ASCII range.
+
+2003-04-08  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Ffile_symlink_p): Doc fix.
+
+       * editfns.c (Fformat): Translate positions of text properties
+       in the format string to apply them to the result.
+
+       * fileio.c (Finsert_file_contents): Doc fix.
+       (syms_of_fileio) <after-insert-file-functions>: Doc fix.
+
+2003-04-08  Ivan Zakharyaschev  <imz@altlinux.org>  (tiny change)
+
+       * lread.c (openp): Get the Qfile_exists_p handler for STRING, not FN.
+
+2003-04-08  Steven Tamm  <steventamm@mac.com>
+
+       * mac.c (init_mac_osx_environment): Switch libexec and bin so
+       that self-contained application finds libexec files.
+
+2003-04-08  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (code_convert_region_unwind):
+       Set Vlast_coding_system_used to the argument.
+       (code_convert_region): If post-read-conversion function changed
+       the value of last-coding-sytem, keep the new value in
+       coding->symbol so that it won't be overridden.
+       (run_pre_post_conversion_on_str): Likewise.
+       (coding_system_accept_latin_extra_p): New function.
+       (find_safe_codings): Pay attention to characters registered in
+       latin-extra-code-table.
+
+2003-04-07  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * Makefile.in (md5.o): Add missing dependency info.
+
+2003-04-06  Richard M. Stallman  <rms@gnu.org>
+
+       * xselect.c (x_handle_selection_request): Move UNGCPRO to very end.
+
+       * marker.c (verify_bytepos): New function.
+
+       * intervals.c (set_intervals_multibyte_1): When becoming
+       multibyte, adjust right and left child sizes to a whole set of
+       characters.  If an interval gets zero total-length, delete it.
+       If an interval consists of just its children, delete one of them.
+
+       * intervals.h (CHECK_TOTAL_LENGTH): New macro.
+       * intervals.c: Add many calls to CHECK_TOTAL_LENGTH.
+
+       * alloc.c (VALIDATE_LISP_STORAGE): Macro deleted.
+       All calls deleted.
+       (lisp_malloc): Do the work here directly.
+
+2003-04-06  Gareth Jones  <emacs@referential.org.uk>  (tiny change)
+
+       * fns.c (Flength): Return SUB_CHAR_TABLE_ORDINARY_SLOTS for sub
+       char tables.
+
+2003-04-04  Kenichi Handa  <handa@m17n.org>
+
+       * editfns.c (Fformat): Use a copy of FORMAT string so that we can
+       destructively change "%S" to "%s".
+
+2003-04-03  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (choose_face_font): Make sure *NEEDS_OVERSTRIKE is
+       always set.
+
+2003-04-01  Dave Love  <fx@gnu.org>
+
+       * xfns.c (xpm_lookup_color): Grok "opaque".
+
+2003-03-31  Andrew Choi  <akochoi@shaw.ca>
+
+       * frame.c (x_report_frame_params) [HAVE_CARBON]: Do not report
+       parent window ID.
+
+       * macfns.c (syms_of_macfns): Remove call to init_x_parm_symbols.
+
+       * macterm.h (struct mac_output): Define x_pixels_diff and
+       y_pixels_diff.
+
+2003-03-31  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in ($(BLD)/frame.$(O)): Add dependency on
+       blockinput.h and files included from it.
+
+2003-03-31  Kim F. Storm  <storm@cua.dk>
+
+       The following changes consolidates the common code related to
+       frame-parameter handling from the xfns.c, w32fns.c, and macfns.c
+       files into frame.c.
+
+       * frame.c: Include blockinput.h.
+       (Vx_resource_name, Vx_resource_class, Qx_frame_parameter)
+       (Qx_resource_name, Qface_set_after_frame_default): Define vars here.
+       (Qauto_raise, Qauto_lower, ...): Define all frame parameter
+       related vars here.
+       (struct frame_parm_table, frame_parms): New table for describing
+       frame parameters and their associated Q-variable.
+       The order of the parameters corresponds to the sequence of the
+       frame_parm_handlers table in redisplay_interface.
+       (x_fullscreen_move, x_set_frame_parameters)
+       (x_report_frame_params, x_set_fullscreen, x_set_line_spacing)
+       (x_set_screen_gamma, x_set_font, x_set_fringe_width)
+       (x_set_border_width, x_set_internal_border_width, x_set_visibility)
+       (x_set_autoraise, x_set_autolower, x_set_unsplittable)
+       (x_set_vertical_scroll_bars, x_set_scroll_bar_width, x_icon_type):
+       Generic functions for processing of frame parameters.
+       (validate_x_resource_name, xrdb_get_resource, Fx_get_resource)
+       (display_x_get_resource, x_get_resource_string): Functions for
+       generic access to X resources.
+       (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
+       (x_default_parameter, Fx_parse_geometry): Functions for generic
+       access to frame parameters.
+       (x_figure_window_size): Generic calculation of frame size.
+       Fixed to add space needed for tool bar.  Also setup size_hint_flags.
+       (syms_of_frame): Intern and staticpro frame parameter variables.
+       Defvar_lisp Vx_resource_class and Vx_resource_name here.
+       Defsubr Sx_get_resource and Sx_parse_geometry.
+
+       * frame.h (Qauto_raise, Qauto_lower, ...): Declare extern all frame
+       parameter related vars defined in frame.c.
+       (EMACS_CLASS): Define here.
+       (enum FULLSCREEN_*): Define here.
+       (x_set_scroll_bar_default_width, x_wm_set_icon_position)
+       (x_set_offset, x_new_font, x_new_fontset): Add prototypes.
+       (x_fullscreen_adjust, x_set_frame_parameters, x_report_frame_params)
+       (x_set_fullscreen, x_set_line_spacing, x_set_screen_gamma, x_set_font)
+       (x_set_fringe_width, x_set_border_width, x_set_internal_border_width)
+       (x_set_visibility, x_set_autoraise, x_set_autolower)
+       (x_set_unsplittable, x_set_vertical_scroll_bars)
+       (x_set_scroll_bar_width, x_icon_type, validate_x_resource_name)
+       (x_figure_window_size): Add prototypes.
+
+       * dispextern.h (frame_parm_handler): New typedef.
+       (struct redisplay_interface): New member frame_parm_handlers.
+       (enum resource_types): Move declaration here.
+       (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
+       (x_default_parameter): Add prototypes.
+
+       * window.c: Remove extern decl for frame parameter vars.
+       (change_window_heights): New generic function;
+       replaces x_change_window_heights.  All users changed.
+
+       * window.h (change_window_heights): Add prototype.
+
+       * xfaces.c: Remove extern decl for frame parameter vars.
+
+       * xterm.h (EMACS_CLASS): Remove.  Use generic define.
+       (struct w32_display_info): Fix type of xrdb member.
+       (enum FULLSCREEN_*): Remove.
+       Remove prototypes for generic functions (in frame.h).
+
+       * xfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
+       parameters now defined in frame.h and frame.c.
+       (Vx_resource_name): Remove.  Use generic var.
+       (enum x_frame_parms): Remove (bogus, unused enum).
+       (check_x_display_info): Make non-static (for frame.c).
+       (struct x_frame_parm_table, x_frame_parms): Remove.
+       (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params)
+       (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font)
+       (x_set_border_width, x_set_internal_border_width, x_set_visibility)
+       (x_change_window_heights, x_set_autoraise, x_set_autolower)
+       (x_set_vertical_scroll_bars, x_set_scroll_bar_width)
+       (validate_x_resource_name, Fx_get_resource, x_get_resource_string)
+       (x_default_parameter, Fx_parse_geometry, x_figure_window_size):
+       Remove.  Use generic functions instead.
+       (enum resource_types): Remove.
+       (x_set_scroll_bar_default_width): New global function (for frame.c).
+       (Fx_create_frame): Depend on x_figure_window_size to add space for
+       toolbar and setup size_hint_flags.
+       (x_frame_parm_handlers): New table for redisplay_interface.
+       (syms_of_xfns): Don't intern/staticpro removed vars.
+
+       * xterm.c: Remove unnecessary extern declarations.
+       (x_fullscreen_adjust): Remove.  Use generic instead.
+       (x_redisplay_interface): Add x_frame_parm_handlers member.
+
+       * w32gui.h (XrmDatabase): New (dummy) typedef.
+
+       * w32term.h (EMACS_CLASS): Remove.  Use generic define.
+       (struct w32_display_info): Fix type of xrdb member.
+       (enum FULLSCREEN_*): Remove.
+       (x_fullscreen_adjust): Remove prototype.
+
+       * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
+       parameters now defined in frame.h and frame.c.
+       (Vx_resource_name): Remove.  Use generic var.
+       (enum x_frame_parms): Remove (bogus, unused enum).
+       (check_x_display_info): Make non-static (for frame.c).
+       (struct x_frame_parm_table, x_frame_parms): Remove.
+       (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params)
+       (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font)
+       (x_set_border_width, x_set_internal_border_width, x_set_visibility)
+       (x_change_window_heights, x_set_autoraise, x_set_autolower)
+       (x_set_vertical_scroll_bars, x_set_scroll_bar_width)
+       (validate_x_resource_name, Fx_get_resource, x_get_resource_string)
+       (x_default_parameter, Fx_parse_geometry, x_figure_window_size):
+       Remove.  Use generic functions instead.
+       (enum resource_types): Remove.
+       (x_set_scroll_bar_default_width): New global function (for frame.c).
+       (Fx_create_frame): Depend on x_figure_window_size to add space for
+       toolbar and setup size_hint_flags.
+       (w32_frame_parm_handlers): New table for redisplay_interface.
+       (syms_of_w32fns): Don't intern/staticpro removed vars.
+
+       * w32term.c: Remove unnecessary extern declarations.
+       (x_fullscreen_adjust): Remove.  Use generic instead.
+       (x_redisplay_interface): Add w32_frame_parm_handlers member.
+
+       * w32reg.c (x_get_string_resource): Use XrmDatabase.
+
+       * macgui.h (XrmDatabase): New (dummy) typedef.
+
+       * macterm.h (EMACS_CLASS): Remove.
+       (struct mac_display_info): Add xrdb member.
+       (struct mac_output): Add want_fullscreen member.
+
+       * macfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
+       parameters now defined in frame.h and frame.c.
+       (Vx_resource_name): Remove.  Use generic var.
+       (check_x_display_info): Make non-static (for frame.c).
+       (struct x_frame_parm_table, x_frame_parms): Remove.
+       (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params)
+       (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font)
+       (x_set_border_width, x_set_internal_border_width, x_set_visibility)
+       (x_change_window_heights, x_set_autoraise, x_set_autolower)
+       (x_set_vertical_scroll_bars, x_set_scroll_bar_width)
+       (validate_x_resource_name, Fx_get_resource, x_get_resource_string)
+       (x_default_parameter, Fx_parse_geometry, x_figure_window_size):
+       Remove.  Use generic functions instead.
+       (enum resource_types): Remove.
+       (x_set_scroll_bar_default_width): New global function (for frame.c).
+       (mac_frame_parm_handlers): New table for redisplay_interface.
+       (syms_of_macfns): Don't intern/staticpro removed vars.
+
+       * macterm.c: Remove unnecessary extern declarations.
+       (x_redisplay_interface): Add mac_frame_parm_handlers member.
+
+       * Makefile.in (frame.o): Add dependency on blockinput.h and files
+       included from it (atimer.h and systime.h).
+
+2003-03-30  Andreas Schwab  <schwab@suse.de>
+
+       * xdisp.c (x_insert_glyphs): Fix swapped width and height
+       parameters for shift_glyphs_for_insert.
+
+       * macterm.c (x_redisplay_interface): Add missing entry for
+       draw_vertical_window_border.
+
+2003-03-29  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
+
+       * fileio.c (Fexpand_file_name): In the no-handler case, after
+       expanding, look again for a handler and invoke it.  This is needed
+       for filenames like "/foo/../user@host:/bar/../baz" -- the first
+       expansion produces "/user@host:/bar/../baz" which needs to be
+       expanded again for the finame result "/user@host:/baz".
+
+2003-03-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_tool_bar_item_expose_callback): Reduce size
+       of area to be redrawn for better performance.
+
+2003-03-28  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xterm.c (take_vertical_position_into_account): Remove.
+       (xt_action_hook): Call set_vertical_scroll_bar if needed.
+       (XM_SB_MIN, XM_SB_RANGE): Remove (min is now set to 0).
+       (xm_scroll_callback, x_create_toolkit_scroll_bar)
+       (x_set_toolkit_scroll_bar_thumb): Simplify.
+       (x_scroll_bar_expose): Only compile if !USE_TOOLKIT_SCROLL_BARS.
+       (XTread_socket): Remove unused var.
+       (x_make_frame_invisible): Replace goto with else.
+
+       * xdisp.c (set_vertical_scroll_bar): New fun.
+       (redisplay_window): Use it.
+
+2003-03-26  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (update_tool_bar): Recompute tool bar if
+       update_mode_lines is set.  Set w->update_mode_line
+       only if the tool bar contents actually change.
+       (update_menu_bar): Undo previous change.
+
+2003-03-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_resize_widgets): Don't call xg_frame_cleared.
+       (xg_frame_set_char_size): Calculate scroll bar width before frame
+       width.  Call SET_FRAME_GARBAGED and cancel_mouse_face.
+       (xg_separator_p): Check for all documented separator types.
+       (xg_update_scrollbar_pos): Variable gheight not needed, use height.
+       (update_frame_tool_bar): Don't call gdk_window_process_all_updates.
+
+       * xdisp.c (update_menu_bar): Set w->update_mode_line to Qt
+       so tool bar gets updated.
+
+2003-03-26  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * data.c (store_symval_forwarding): Re-instate part of the code
+       that was deleted with too much enthusiasm.
+
+2003-03-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * data.c (store_symval_forwarding): Delete special read-only
+       hack for type == -1, since we now use ->constant instead.
+       (Fkill_local_variable): Don't use XBUFFER if it can be nil.
+
+       * buffer.c (overlays_in): Declare static.
+       (syms_of_buffer) <enable-multibyte-characters>: Use the symbol's
+       `constant' field rather than the variable's `type' field.
+
+2003-03-24  Andrew Choi  <akochoi@shaw.ca>
+
+       * config.in [MAC_OSX]: Do not redefine bcopy, bzero, and bcmp.
+
+       * dispextern.h [HAVE_CARBON]: Include Carbon.h.
+
+       * fns.c [MAC_OSX]: Do not redefine vector.
+
+       * keyboard.c [MAC_OSX]: Handle SIGINT with interrupt_signal.
+
+       * macgui.h: Remove definition of No_Cursor.
+
+       * macterm.h: Include Carbon.h.  Replace (struct Cursor *) by Cursor.
+
+       * xdisp.c: Define No_Cursor.
+       (x_write_glyphs, notice_overwritten_cursor)
+       (draw_phys_cursor_glyph, note_mode_line_or_margin_highlight)
+       (note_mouse_highlight): Remove Mac-specific code.
+       (note_mouse_highlight): Use bcmp instead of == to compare Cursors.
+
+2003-03-24  John Paul Wallington  <jpw@gnu.org>
+
+       * xdisp.c (redisplay_window): If mini window's buffer is not
+       empty, then redisplay it like other windows.
+
+2003-03-23  Kim F. Storm  <storm@cua.dk>
+
+       * w32term.c (w32_draw_window_cursor): Fix last change.
+
+2003-03-23  Kenichi Handa  <handa@m17n.org>
+
+       * alloc.c (make_string_from_bytes, make_specified_string):
+       Add `const' for the arg CONTENTS.
+
+       * lisp.h (make_string_from_bytes, make_specified_string):
+       Prototypes adjusted.
+
+2003-03-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xdisp.c (get_glyph_string_clip_rect): Remove ; at end of #endif.
+
+       * gtkutil.h: Take two more arguments to xg_update_scrollbar_pos.
+       (XG_SB_RANGE): New define.
+
+       * gtkutil.c (xg_fixed_handle_expose): New function.
+       (xg_create_frame_widgets): Call xg_fixed_handle_expose for
+       expose events.
+       (xg_update_scrollbar_pos): Take two more arguments, left and width
+       of scroll bar including borders.
+       Clear left and right part outside scroll bar separately as some
+       themes have bars that are not an even number of pixels.
+       Don't set reallocate_redraws, don't call
+       gdk_window_process_all_updates.
+       (xg_set_toolkit_scroll_bar_thumb): Upper value is fixed,
+       so no need to change it.  Calculate size and value with XG_SB_RANGE.
+
+       * xterm.c (x_scroll_bar_create, XTset_vertical_scroll_bar):
+       Pass left and width of scroll bar including borders to
+       xg_update_scrollbar_pos.
+
+2003-03-22  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * Makefile.in: Make sure space precedes end-of-line backslashes.
+
+2003-03-22  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (pixel_to_glyph_coords, glyph_to_pixel_coords):
+       Add generic versions here.  Remove system specific versions
+       defined elsewhere.
+
+       * dispextern.h (pixel_to_glyph_coords, glyph_to_pixel_coords):
+       Add prototypes.
+
+       * xterm.h (STORE_NATIVE_RECT): New macro.
+
+2003-03-21  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_glyph_string_clip_rect):
+       Use FRAME_INTERNAL_BORDER_WIDTH.
+
+       * dispextern.h (struct redisplay_interface): Add active_p
+       argument to draw_window_cursor member.  All uses changed.
+
+2003-03-21  Kim F. Storm  <storm@cua.dk>
+
+       The following changes consolidate code related to writing and
+       inserting glyphs, exposing frame, the tool bar, the mouse face,
+       the output cursor, and help echo from xterm.c, w32term.c and
+       macterm.c into xdisp.c.  It also generalizes the use of the
+       window_part enum instead of using numeric values throughout.
+
+       * xdisp.c: Consolidate gui-independent code here.
+       Include keymap.h.
+       (Qhelp_echo): Import.
+       (mouse_autoselect_window, x_stretch_cursor_p): Declare here.
+       (help_echo_string, help_echo_window, help_echo_object)
+       (previous_help_echo_string, help_echo_pos): Declare here.
+       (output_cursor, last_mouse_frame, last_tool_bar_item): Declare here.
+       (estimate_mode_line_height): Define here.  Handle windowing
+       systems directly (without using estimate_mode_line_height_hook).
+       (x_y_to_hpos_vpos, get_tool_bar_item, note_tool_bar_highlight):
+       (update_window_cursor, update_cursor_in_window_tree)
+       (fast_find_position, fast_find_string_pos)
+       (note_mode_line_highlight, note_mode_line_or_margin_highlight)
+       (expose_area, expose_line, expose_overlaps, expose_window)
+       (expose_window_tree, phys_cursor_in_rect_p): New generic versions;
+       declared static as they are only used locally in xdisp.c.
+       (draw_glyphs): Rename from x_draw_glyphs and make static.
+       (tool_bar_item_info, notice_overwritten_cursor): Make static.
+       (frame_to_window_pixel_xy, get_glyph_string_clip_rect)
+       (set_output_cursor, x_cursor_to, handle_tool_bar_click)
+       (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
+       (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor)
+       (display_and_set_cursor, x_update_cursor, x_clear_cursor)
+       (show_mouse_face, clear_mouse_face, cursor_in_mouse_face_p)
+       (note_mouse_highlight, x_clear_window_mouse_face)
+       (cancel_mouse_face, x_draw_vertical_border, expose_frame)
+       (x_intersect_rectangles): New generic functions for use by xdisp.c
+       and GUI front-ends.
+       (syms_of_xdisp): Initialize and staticpro help_echo* variables.
+       Defvar_bool "x-streach-cursor" and "mouse-autoselect-window" here.
+
+       * dispextern.h (Display_Info): Generic typedef for *_display_info.
+       (NativeRectangle): Generic typedef for rectangle type.
+       (enum window_part): Move here from window.c.
+       (struct redisplay_interface): New members flush_display_optional,
+       define_frame_cursor, clear_frame_area, draw_window_cursor,
+       draw_vertical_window_border, shift_glyphs_for_insert.
+       Rename member clear_mouse_face to clear_window_mouse_face.
+       (estimate_mode_line_height_hook): Remove hook.
+       (auto_raise_tool_bar_buttons_p): Don't declare extern.
+       (tool_bar_item_info): Remove prototype.
+       (help_echo_string, help_echo_window, help_echo_object)
+       (previous_help_echo_string, help_echo_pos)
+       (last_mouse_frame, last_tool_bar_item, mouse_autoselect_window):
+       (x_stretch_cursor_p, output_cursor): Declare extern.
+       (x_draw_glyphs, notice_overwritten_cursor): Remove prototypes.
+       (x_write_glyphs), x_insert_glyphs, x_clear_end_of_line)
+       (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor)
+       (display_and_set_cursor, set_output_cursor, x_cursor_to)
+       (x_update_cursor, x_clear_cursor, x_draw_vertical_border)
+       (frame_to_window_pixel_xy, get_glyph_string_clip_rect)
+       (note_mouse_highlight, x_clear_window_mouse_face, cancel_mouse_face)
+       (handle_tool_bar_click, clear_mouse_face, show_mouse_face)
+       (cursor_in_mouse_face_p, expose_frame, x_intersect_rectangles):
+       Add prototypes.
+       (mode_line_string, marginal_area_string): Fix prototypes.
+
+       * window.c (enum window_part): Move to dispextern.h.
+       (coordinates_in_window): Use enum window_part member names
+       instead of numbers to describe return value.
+       (struct check_window_data): Change part member to window_part.
+       (check_window_containing): Return window_part unaltered.
+       (window_from_coordinates): Change part arg from int to enum
+       window_part.  Allow part arg to be null.  All users changed.
+
+       * window.h (window_from_coordinates): Fix prototype.
+
+       * term.c (estimate_mode_line_height): Move to xdisp.c.
+
+       * keyboard.c (make_lispy_event): Use enum window_part.
+
+       * dispnew.c (mode_line_string, marginal_area_string): Use enum
+       window_part instead of int in arg list.  Users changed.
+
+       * xterm.h (No_Cursor): Declare as None for X.
+       (struct mac_output): Replace member cross_cursor by hand_cursor.
+
+       * xterm.c: Remove consolidated defines and code.
+       (BETWEEN): Remove unused macro.
+       (x_draw_vertical_window_border, x_shift_glyphs_for_insert)
+       (x_define_frame_cursor, x_clear_frame_area)
+       (x_draw_window_cursor): New X-specific functions for RIF.
+       (x_redisplay_interface): Add new members.
+
+       * xfns.c: Setup and use hand_cursor instead of cross_cursor.
+
+       * w32term.h (struct w32_output): Remove cross_cursor member.
+
+       * w32term.c: Remove consolidated defines and code.
+       (BETWEEN): Remove unused macro.
+       (w32_draw_vertical_window_border, w32_shift_glyphs_for_insert)
+       (w32_define_frame_cursor, w32_clear_frame_area)
+       (w32_draw_window_cursor): New W32-specific functions for RIF.
+       (w32_redisplay_interface): Add new members.
+
+       * w32gui.h (No_Cursor): Define as 0 for W32.
+       (XRectangle): Add X compatible rectangle type.
+       (NativeRectangle): Declare as RECT for W32.
+       (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros.
+
+       * w32fns.c: Remove setup of cross_cursor (already has hand_cursor).
+
+       * w32console.c: Remove consolidated defines and code.
+
+       * msdos.h (Display_Info): Add generic typedef.
+
+       * msdos.c: Remove consolidated defines and code.
+       (IT_note_mouse_highlight, dos_rawgetc): Use enum window_part.
+
+       * macterm.h (struct mac_output): Replace member cross_cursor by
+       hand_cursor.
+       (activate_scroll_bars, deactivate_scroll_bars): Add prototypes.
+
+       * macterm.c: Remove consolidated defines and code.
+       (BETWEEN): Remove unused macro.
+       (mac_draw_vertical_window_border, mac_shift_glyphs_for_insert)
+       (mac_define_frame_cursor, mac_clear_frame_area)
+       (mac_draw_window_cursor): New Mac-specific functions for RIF.
+       (x_redisplay_interface): Add new members.
+
+       * macgui.h (No_Cursor): Define as 0 for Mac.
+       (XRectangle): Add X compatible rectangle type.
+       (NativeRectangle): Declare as Rect for Mac.
+       (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros.
+
+       * macfns.c (x_set_mouse_color): Setup hand_cursor.
+       (x_set_cursor_color): Use x_display_and_set_cursor.
+
+       * Makefile.in (xdisp.o): Add dependency on blockinput.h and files
+       included from it.  Add dependency on keymap.h.
+
+       * makefile.w32-in (xdisp.o): Add dependency on keymap.h.
+
+2003-03-21  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Fexpand_file_name): Fix previous change.
+
+2003-03-19  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Ffile_name_directory): Reconstruct file name by
+       make_specified_string.
+       (Ffile_name_nondirectory, Ffile_name_as_directory)
+       (Fdirectory_file_name, Fexpand_file_name)
+       (Fsubstitute_in_file_name): Likewise.
+       (Fread_file_name): Compare decoded homedir with DIR and
+       DEFAULT_FILENAME.
+
+       * alloc.c (make_specified_string): If NCHARS is negative, count
+       the number of characters.
+
+2003-03-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_frame_cleared): Call gtk_widget_queue_draw for
+       all widgets.
+
+       * gtkutil.h: Removed xg_ignore_next_thumb.
+
+2003-03-18  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (Vchar_coding_system_table): Remove this variable.
+       (Vcoding_system_safe_chars): New variable.
+       (intersection): Remove this function.
+       (find_safe_codings): Don't use Vchar_coding_system_table, but try
+       all codings in SAFE_CODINGS.
+       (Ffind_coding_systems_region_internal): Adjust for the change of
+       find_safe_codings.  Get generic coding systems from
+       Vcoding_system_safe_chars.
+       (Fdefine_coding_system_internal): New function.
+       (syms_of_coding): Defsubr Sdefine_coding_system_internal.
+       Initialize and staticpro Vcoding_system_safe_chars.
+
+2003-03-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_set_toolkit_scroll_bar_thumb): Check if new values
+       equal old values before updating.
+
+       * xterm.c (xg_scroll_callback): Remove xg_ignore_next_thumb.
+
+       * gtkutil.c (xg_initialize): Remove xg_ignore_next_thumb.
+
+2003-03-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c: Removed handle_fixed_child, struct xg_last_sb_pos.
+       (xg_resize_widgets): Don't call foreach(handle_fixed_child).
+       (xg_gtk_scroll_destroy): Remove free of struct xg_last_sb_pos.
+       (scroll_bar_button_cb): Set bar->dragging to nil on button release.
+       (xg_create_scroll_bar): Pass bar to button event callback.
+       (xg_find_top_left_in_fixed): New function.
+       (xg_update_scrollbar_pos): Don't call gdk_window_clear on
+       whole scroll bar area.  Get old position with
+       xg_find_top_left_in_fixed, calculate and only clear needed areas.
+       (xg_set_toolkit_scroll_bar_thumb): Do not adjust scroll bar if
+       dragging is in progress.  Calculate whole as for Motif.
+       Remove code that saved last values.  Call gtk_range functions to
+       set scroll bar sizes.
+
+       * gtkutil.h: Removed xg_ignore_next_thumb.
+
+2003-03-17  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in ($(BLD)/xdisp.$(O)): Add dependency on blockinput.h
+       and files included from it.
+
+2003-03-18  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keymap.c (accessible_keymaps_1): Break cycles but without preventing
+       multiple occurrences of the same keymap under different prefixes.
+       (Faccessible_keymaps): Remove code redundant since 1994-08-03T07:39:00Z!rms@gnu.org.
+
+2003-03-16  Jason Rumney  <jasonr@gnu.org>
+
+       * w32gui.h: Use HDC for Display.
+
+       * w32term.c (w32_encode_char): Prevent double-byte chars from
+       crashing Emacs.
+
+       * w32fns.c (jpeg_load, png_load, slurp_file): Read image files
+       as binary.
+
+2003-03-16  Juanma Barranquero  <lektu@terra.es>
+
+       * xdisp.c (x_produce_glyphs): Use FRAME_BASELINE_OFFSET.
+
+2003-03-16  Kim F. Storm  <storm@cua.dk>
+
+       The following changes consolidate some of the gui-independent
+       parts of the processing and drawing of "glyph strings" from
+       xterm.c, w32term.c, and macterm.c into xdisp.c.
+
+       * dispextern.h (struct glyph): Reduce face_id member from 22 to
+       21 bits (this reduces number of faces from 4M to 2M).
+       Replace W32 specific w32_font_type member (2 bits) by generic
+       font_type member (3 bits) for portability.
+       (FONT_TYPE_UNKNOWN): New define, default for font_type member.
+       (enum draw_glyphs_face): Define here.
+       (struct glyph_string): Define here.  Merge W32 and X versions.
+       (struct redisplay_interface): New members per_char_metric,
+       encode_char, compute_glyph_string_overhangs, draw_glyph_string.
+       (VCENTER_BASELINE_OFFSET): Define here.
+       (dump_glyph_string, x_get_glyph_overhangs, x_produce_glyphs)
+       (x_draw_glyphs, notice_overwritten_cursor): Declare prototypes here.
+
+       * xdisp.c: Consolidate gui-independent "glyph string" code here.
+       (dump_glyph_string): Moved here.
+       (init_glyph_string, append_glyph_string_lists, append_glyph_string)
+       (prepend_glyph_string_lists, get_glyph_face_and_encoding)
+       (fill_composite_glyph_string, fill_glyph_string)
+       (fill_image_glyph_string, fill_stretch_glyph_string)
+       (left_overwritten, left_overwriting, right_overwritten)
+       (right_overwriting, get_char_face_and_encoding)
+       (set_glyph_string_background_width, compute_overhangs_and_x)
+       (append_glyph, append_composite_glyph, produce_image_glyph)
+       (take_vertical_position_into_account, append_stretch_glyph)
+       (produce_stretch_glyph): New generic functions (based on X version).
+       Call platform specific functions through rif.
+       (INIT_GLYPH_STRING): New macro, hides W32 details.
+       (BUILD_STRETCH_GLYPH_STRING, BUILD_IMAGE_GLYPH_STRING)
+       (BUILD_CHAR_GLYPH_STRINGS, BUILD_COMPOSITE_GLYPH_STRING)
+       (BUILD_GLYPH_STRINGS): Generic macros (based on X version).
+       (x_draw_glyphs, x_get_glyph_overhangs, x_produce_glyphs)
+       (notice_overwritten_cursor):
+       Generic functions exported to platform modules.  Users changed.
+
+       * xterm.h (FONT_DESCENT, FRAME_X_OUTPUT, FRAME_BASELINE_OFFSET)
+       (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE)
+       (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2):
+       New macros for consolidated code.
+
+       * xterm.c: Remove consolidated defines and code.
+       (x_per_char_metric, x_encode_char)
+       (x_compute_glyph_string_overhangs): Adapt to RIF requirements.
+       (x_redisplay_interface): Add new members.
+
+       * w32gui.h (Display): Add dummy typedef for consolidation.
+       (XChar2b): Define alias for wchar_t for consolidation.
+       (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros.
+
+       * w32term.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
+       (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE):
+       New macros for consolidation.
+
+       * w32term.c: Remove consolidated defines and code.
+       (BUILD_WCHAR_T, BYTE1, BYTE2): Macros removed; callers changed
+       to use STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2 instead.
+       (w32_per_char_metric): Change font_type arg to int for RIF.
+       (w32_encode_char): Return int according to RIF requirements.
+       (w32_compute_glyph_string_overhangs): Adapt to RIF.
+       (w32_get_glyph_overhangs): New function for RIF.  Uses generic
+       x_get_glyph_overhangs.
+       (w32_redisplay_interface): Add new members.
+
+       * macgui.h (XChar2b): Move typedef here for consolidation.
+       (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros.
+
+       * macterm.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY):
+       (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE): New macros for
+       consolidation.
+
+       * macterm.c: Remove consolidated defines and code.
+       (mac_per_char_metric): New function for RIF.
+       (mac_encode_char): Adapt to new RIF requirements.
+       (mac_compute_glyph_string_overhangs): Adapt for RIF.
+       (x_redisplay_interface): Add new members.
+
+2003-03-15  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keymap.c (Vmenu_events): New var.
+       (syms_of_keymap): Initialize it.
+       (where_is_internal): Check more carefully what is a menu event.
+
+2003-03-14  Richard M. Stallman  <rms@gnu.org>
+
+       * lread.c (read1): After #!, exit loop on eof.
+
+2003-03-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.h: Add declaration for xg_frame_cleared.
+
+       * xterm.c (x_clear_frame): Call xg_frame_cleared for GTK.
+
+       * gtkutil.c (struct xg_last_sb_pos): New structure.
+       (handle_fixed_child): New function.
+       (xg_resize_widgets): Call handle_fixed_child on all scroll bar widgets
+       and force a redraw on them.
+       (xg_gtk_scroll_destroy): Free struct xg_last_sb_pos also.
+       (xg_create_scroll_bar): Add struct xg_last_sb_pos to scroll bar
+       so we can avoid unneeded redraws.
+       (xg_update_scrollbar_pos): Invalidate data in xg_last_sb_pos
+       and force a redraw on the scroll bar.
+       (xg_set_toolkit_scroll_bar_thumb): Do not change/redraw scroll bar
+       if xg_last_sb_pos shows the positions are up to date.
+       (xg_frame_cleared): New function.
+
+2003-03-13  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (Fdetect_coding_region): Fix docstring.
+       (Fdetect_coding_string): Fix docstring.
+
+2003-03-13  Andreas Schwab  <schwab@suse.de>
+
+       * gtkutil.c: Add prototype for create_menus.
+
+       * data.c (long_to_cons): Fix type of top.
+
+       * xselect.c (selection_data_to_lisp_data): Use int instead of
+       long for an integer of size 4.
+
+       * gtkutil.c (xg_update_frame_menubar): Add missing return value.
+       (xg_tool_bar_help_callback): Likewise.
+
+2003-03-12  Andreas Schwab  <schwab@suse.de>
+
+       * xterm.c (x_term_init) [USE_GTK]: Fix typo.
+
+2003-03-12  Kim F. Storm  <storm@cua.dk>
+
+       The following changes consolidate the fringe handling from
+       xterm.c, w32term.c, and macterm.c into xdisp.c.
+
+       * xdisp.c: Consolidate fringe handling code here.
+       (left_bits, right_bits, continued_bits, continuation_bits)
+       (ov_bits, zv_bits): Define fringe bitmaps.
+       (fringe_bitmaps): New array holding fringe bitmaps.
+       (draw_fringe_bitmap): Draw a specific bitmap; call display
+       specific drawing routine via rif->draw_fringe_bitmap.
+       (draw_row_fringe_bitmaps): Generic replacement for
+       x_draw_row_fringe_bitmaps; all callers changed.
+       (compute_fringe_widths): Generic replacement for
+       x_compute_fringe_widths; all callers changed.
+
+       * dispextern.h (enum fringe_bitmap_type): Define here.
+       (struct fringe_bitmap, struct draw_fringe_bitmap_params): New.
+       (fringe_bitmaps): Declare extern.
+       (struct redisplay_interface): New member draw_fringe_bitmap.
+       (draw_row_fringe_bitmaps, compute_fringe_widths): Declare extern.
+
+       * xterm.c: Remove generic fringe code.
+       (x_draw_fringe_bitmap): Only perform actual fringe drawing.
+       (x_redisplay_interface): Add x_draw_fringe_bitmap member.
+
+       * w32term.c: Remove generic fringe code.
+       (w32_draw_fringe_bitmap): Only perform actual fringe drawing.
+       (w32_redisplay_interface): Add w32_draw_fringe_bitmap member.
+
+       * macterm.c: Remove generic fringe code.
+       (x_draw_fringe_bitmap): Only perform actual fringe drawing.
+       (x_redisplay_interface): Add x_draw_fringe_bitmap member.
+
+2003-03-11  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * print.c (Fprin1_to_string): Return unibyte string if possible.
+
+2003-03-09  David Kastrup  <dak@gnu.org>
+
+       * process.c (read_process_output): We have allocated enough space
+       for readmax and carryover, so actually use the alloted space.
+
+2003-03-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * keyboard.c (make_lispy_event): Extend mouse_syms if needed for
+       toolkit scrollbar click.
+
+       * xterm.c (x_window_to_scroll_bar): Call xg_get_scroll_id_for_window
+       for USE_GTK.
+       (x_scroll_bar_handle_click): Use this function for toolkit scrollbars
+       also.
+       (handle_one_xevent): ButtonPress/Release: If event is for a toolkit
+       scrollbar and control is pressed, call x_scroll_bar_handle_click.
+
+       * gtkutil.h (xg_get_scroll_id_for_window): Declare.
+
+       * gtkutil.c (xg_get_scroll_id_for_window): New function.
+       (xg_tool_bar_item_expose_callback): New function.
+       (xg_tool_bar_expose_callback): Call update_frame_tool_bar.
+       (xg_create_tool_bar): Connect xg_tool_bar_expose_callback to expose
+       on the tool bar widget.
+       (update_frame_tool_bar): Connect xg_tool_bar_item_expose_callback
+       to expose on the tool bar item widgets.
+
+2003-03-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (update_frame_tool_bar): Compare pixmap ID instead of
+       struct image* when deciding to update (struct image* may have been
+       deleted from the image cache).
+
+       * xterm.c (handle_one_xevent): Pass ReparentNotify to Xt even if
+       the event isn't for a frame (i.e. for dialogs).
+
+2003-03-07  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (CODING_ADD_COMPOSITION_COMPONENT): If the number of
+       composition components reaches the limit, terminate composing.
+       (COMPOSITION_OK): New macro.
+       (detect_coding_iso2022): Use it if an escape sequence for
+       composition is found.
+       (coding_restore_composition): Adjust the number of composition
+       components if it is not sane.
+
+2003-03-06  Juanma Barranquero  <lektu@terra.es>
+
+       * w32term.h (struct w32_display_info): Add xrdb member to support
+       passing resources via -xrm on Windows.
+
+       * w32term.c (w32_make_rdb): New function.
+       (w32_term_init): Use it to initialize xrdb member of w32_display_info
+       struct.  Delete leftover code.
+
+       * w32fns.c (Fx_get_resource, x_get_resource_string): Pass xrdb to check
+       for resources passed on the command line.
+
+       * w32reg.c (w32_get_rdb_resource): New function.
+       (x_get_string_resource): Use it, so resources passed with -xrm
+       supercede the ones in the registry.
+
+2003-03-04  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_detect_focus_change): Call x_any_window_to_frame
+       instead of x_top_window_to_frame.
+
+2003-03-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xsmfns.c (smc_save_yourself_CB): Add --no-splash to options
+       when restarting Emacs.
+
+2003-03-03  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (Fkill_buffer): Use Frun_hook_with_args_until_failure
+       to run kill-buffer-query-functions.
+       (Qkill_buffer_query_functions): New var.
+       (syms_of_buffer): Init and staticpro it.
+
+2003-03-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h (XSync): Define as gdk_window_process_all_updates for GTK.
+
+2003-02-25  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Fix infinite loop in redisplay.
+       If centering point failed to make whole line visible and vscroll
+       is non-zero, disable vscroll and try centering point again.
+
+       * lread.c (read1): Accept `single space' syntax like (? x).
+
+2003-02-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * keyboard.c (cancel_hourglass_unwind): Surround with
+       #ifdef HAVE_X_WINDOWS.
+
+2003-02-25  Kenichi Handa  <handa@m17n.org>
+
+       * buffer.c (Fset_buffer_multibyte): Pay attention to the buffer
+       process only when "subprocesses" is defined.
+
+2003-02-24  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * syntax.c (back_comment): Only check nestedness of 2nd char if needed.
+
+2003-02-24  Juanma Barranquero  <lektu@terra.es>
+
+       * callint.c (fix_command): Declare as static void and move before
+       Fcall_interactively.
+
+       * xdisp.c (Qwhen): Declare external; it's now defined in callint.c.
+       (syms_of_xdisp): Don't initialize Qwhen.
+
+2003-02-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * keyboard.c (cancel_hourglass_unwind): New function.
+       (command_loop_1): Cancel hourglass with unwind-protect.
+
+2003-02-23  Richard M. Stallman  <rms@gnu.org>
+
+       * callint.c (fix_command): New subroutine, from Fcall_interactively.
+       Detect (when ... (region-beginning)) etc.
+       (Fcall_interactively): Call fix_command.
+       (Qif, Qwhen): New variables.
+       (syms_of_callint): Init and staticpro them.
+
+       * regex.c (print_partial_compiled_pattern): Output to stderr.
+
+2003-02-23  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
+
+       * dired.c (directory_files_internal): Don't expand directory.
+       (Fdirectory_files, Fdirectory_files_and_attributes): Do it here
+       instead.  From Lars Hansen <larsh@math.ku.dk>.
+
+2003-02-22  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * fns.c (string_to_multibyte): Remove unused var i.
+       (Flanginfo): Fix int/Lisp_Object mixup.
+       (void_call2): New fun.
+       (Fmap_char_table): Use it in place of call2.
+
+       * xfaces.c (x_face_list_fonts): Fix int/Lisp_Object mixup.
+
+       * macros.c (Fstart_kbd_macro): Remove redundant assignment.
+
+       * keymap.c (copy_keymap_1): Make it static.
+
+       * alloc.c (Fgarbage_collect): Don't use XSETFLOAT.
+
+2003-02-22  David Ponce  <david@dponce.com>
+
+       * lread.c (Fload): Don't check STRING_MULTIBYTE.
+
+2003-02-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * process.h: Removed subtty field from struct Lisp_Process.
+
+       * process.c (create_process): Remove setting of subtty.
+       (emacs_get_tty_pgrp): New function.
+       (Fprocess_running_child_p, process_send_signal):
+       Call emacs_get_tty_pgrp instead of ioctl.
+       (process_send_signal): Call EMACS_KILLPG if ioctl TIOCSIGSEND fails.
+
+2003-02-21  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
+
+       * keymap.c (Fdefine_key): Doc fix.
+
+2003-02-21  Juanma Barranquero  <lektu@terra.es>
+
+       Port of patch for RC by Klaus Zeitler <kzeitler@lucent.com>.
+
+       * s/hpux10.h: Define POLL_INTERRUPTED_SYS_CALL, not
+       POLLING_PROBLEM_IN_SELECT.
+
+       * s/hpux11.h: Include hpux10-20.h instead of hpux10.h.
+       Delete #undef of POLLING_PROBLEM_IN_SELECT.
+
+       * s/hpux10-20.h: New file.
+
+       * process.c (wait_reading_process_input):
+       Use POLL_INTERRUPTED_SYS_CALL, not POLLING_PROBLEM_IN_SELECT.
+
+2003-02-20  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (check_fontset_name): If NAME is nil, return the
+       default fontset.
+       (override_font_info): New function.
+       (Fset_fontset_font): Document that NAME nil means the default fontset.
+       (Ffontset_info): If FONTSET is not the default fontset, merge
+       FONTSET onto the copy of the default fontset, and work on that
+       copy.  Document that NAME nil means the default fontset.
+       (Ffontset_font): Document that NAME nil means the default fontset.
+
+       * process.c (setup_process_coding_systems): If the process's
+       in/out descriptor is -1, do nothing.
+
+2003-02-19  Andreas Schwab  <schwab@suse.de>
+
+       * lisp.h (Fcancel_kbd_macro_events, Fstring_to_multibyte):
+       Add prototypes.
+
+2003-02-19  Kenichi Handa  <handa@m17n.org>
+
+       * xfaces.c (try_alternative_families): Try all scalable fonts if
+       Vscalable_fonts_allowed is not Qt.
+
+2003-02-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfaces.c (x_face_list_fonts): Set *pfonts to 0 if no fonts found.
+
+2003-02-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_list_fonts): If maxnames is less than 0, get all font
+       names.
+
+       * xfaces.c (x_face_list_fonts): Allocate struct font_name here.
+       (sorted_font_list): Move allocation of struct font_name to
+       x_face_list_fonts.
+       (Fx_font_family_list): Set font-list-limit to -1 to get all font names.
+       (Fx_list_fonts): Set maxnames to -1 to get all font names.
+
+2003-02-18  Kim F. Storm  <storm@cua.dk>
+
+       * lread.c (read1): Fix last change.
+       "`" is not always special.  Allow "?" after a character constant.
+
+2003-02-18  Andrew Choi  <akochoi@shaw.ca>
+
+       * unexmacosx.c (copy_data_segment): Also copy __cfstring section.
+
+2003-02-18  Andreas Schwab  <schwab@suse.de>
+
+       * window.c (window_scroll_pixel_based): Move outside a
+       multi-glyph character before setting new window start.
+
+       * xdisp.c (in_display_vector_p): New function.
+       * dispextern.h (in_display_vector_p): Declare.
+
+2003-02-18  Kim F. Storm  <storm@cua.dk>
+
+       * lread.c (read1): Fix and relax read syntax.
+       Recognize "[", ";", "#", and "?" after a dotted-pair dot.
+       Only recognize "," after dotted-pair dot if inside backquote.
+       Never include "`" or "," (inside backquote) in a symbol.
+       Allow dotted-pair dot after a character constant.
+       Allow "`" and "," (inside backquote) after a character constant.
+
+2003-02-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_tool_bar_expose_callback): New function.
+       (xg_create_tool_bar): Force style of tool bar to be horizontal with
+       icons.  Set name of tool bar to emacs-toolbar.
+       (update_frame_tool_bar): Connect expose event to
+       xg_tool_bar_expose_callback.
+
+2003-02-17  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (this_command_key_count_reset): New variable.
+       Initiatize to 0 where this_command_key_count is set.
+       (read_char): Save and restore this_command_key_count_reset
+       around input method code.
+       (read_char): If this_command_key_count_reset, echo reread commands.
+       (Freset_this_command_lengths): Set this_command_key_count_reset to 1.
+
+2003-02-17  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (string_to_multibyte): Always return a multibyte string.
+
+2003-02-16  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_list_bdf_fonts, w32_list_fonts):
+       Negative max_fonts parameter means list all.
+
+2003-02-14  Dave Love  <fx@gnu.org>
+
+       * fns.c (Flanginfo): Doc fix.
+
+2003-02-13  Kim F. Storm  <storm@cua.dk>
+
+       * lread.c (read_escape): Interpret \s as a SPACE character, except
+       for \s-X in a character constant which still is the super modifier.
+       (read1): Signal an `invalid read syntax' error if a character
+       constant is immediately followed by a digit or symbol character.
+
+       * search.c (Fmatch_data): Doc fix.  Explicitly state that
+       match-data is undefined if last search failed.
+
+       * keymap.c (Fcommand_remapping): Rename from Fremap_command.
+       All uses changed.
+
+2003-02-12  Juanma Barranquero  <lektu@terra.es>
+
+       * eval.c (Fdefmacro): Fix typo.
+
+2003-02-12  Kim F. Storm  <storm@cua.dk>
+
+       * macros.c (Fstart_kbd_macro): If appending, and last keyboard
+       macro is a string, convert meta modifiers in string when copying
+       the string into a vector.
+
+2003-02-11  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (Fremap_command): Return nil if arg is not a symbol.
+
+2003-02-11  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.in (lisp, shortlisp): Add malayalam.el and tamil.el.
+
+2003-02-10  Kim F. Storm  <storm@cua.dk>
+
+       * process.c: Doc fixes.
+       (syms_of_process): Add `:' prefix to QCfilter_multibyte.
+
+2003-02-10  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (Fstring_to_multibyte): Fix typo in the docstring.
+
+       * process.c (QCfilter_multibyte): New variable.
+       (setup_process_coding_systems): New function.
+       (Fset_process_buffer, Fset_process_filter):
+       Call setup_process_coding_systems.
+       (Fstart_process): Initialize the member `filter_multibyte' of
+       struct Lisp_Process.
+       (create_process): Call setup_process_coding_systems.
+       (Fmake_network_process): New keyward `:filter-multibyte'.
+       Initialize the member `filter_multibyte' of struct Lisp_Process.
+       Call setup_process_coding_systems.
+       (server_accept_connection): Call setup_process_coding_systems.
+       (read_process_output): If the process has a filter, decide the
+       multibyteness of a string to given to the filter by
+       `filter_multibyte' member of the process.  If the process doesn't
+       have a filter and the result of conversion is unibyte, use
+       Fstring_to_multibyte (not Fstring_make_multibyte) to get the
+       multibyte form.
+       (Fset_process_coding_system): Call setup_process_coding_systems.
+       (Fset_process_filter_multibyte): New function.
+       (Fprocess_filter_multibyte_p): New function.
+       (syms_of_process): Intern and staticpro QCfilter_multibyte.
+       Defsubr Sset_process_filter_multibyte and
+       Sprocess_filter_multibyte_p.
+
+       * process.h (struct Lisp_Process): New member filter_multibyte.
+
+       * lisp.h (setup_process_coding_systems): Add prototype.
+
+       * buffer.c (Fset_buffer_multibyte): If the current buffer has a
+       process, update coding systems for the process.
+
+2003-02-09  Kenichi Handa  <handa@m17n.org>
+
+       * fns.c (string_to_multibyte): New function.
+       (Fstring_to_multibyte): New function.
+       (syms_of_fns): Defsubr it.
+
+2003-02-08  Andreas Schwab  <schwab@suse.de>
+
+       * Makefile.in (EXEEXT): Define to @EXEEXT@ and use this variable
+       instead of the substitution.
+
+2003-02-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_make_frame_visible): Call gtk_window_deiconify.
+
+       * xmenu.c (menu_position_func): Adjust menu popup position so that
+       the menu is fully visible.
+
+2003-02-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_text_icon, x_raise_frame, x_lower_frame)
+       (x_make_frame_invisible, x_wm_set_icon_position):
+       Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif.
+
+       * xfns.c (x_set_name, x_set_title): Ditto.
+
+2003-02-04  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (echo_now): Update before_command_echo_length.
+       (Freset_this_command_lengths): Reset this_command_key_count etc.
+       immediately rather than arranging to do it later.
+       (before_command_key_count_1, before_command_echo_length_1)
+       (before_command_restore_flag): Vars deleted.
+       (add_command_key): Don't handle before_command_restore_flag.
+       (read_char, record_menu_key): Don't update before_command_key_count or
+       before_command_echo_length.
+       (read_char): Don't handle before_command_restore_flag.
+
+       * keyboard.c (command_loop_1): Don't call adjust_point_for_property
+       in direct-output clauses if it wouldn't be called in the ordinary case.
+
+2003-02-04  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (syms_of_keyboard) <this-original-command>: Doc fix.
+
+2003-02-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (remove_from_container): Copying list is not needed.
+       (xg_update_menubar, xg_update_menu_item, xg_update_submenu)
+       (xg_modify_menubar_widgets, update_frame_tool_bar): Call g_list_free
+       on list returned from gtk_container_get_children to avoid memory leak.
+
+2003-02-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_create_pixmap_from_bitmap_data): Use alloca for
+       local malloc.
+       [HAVE_XPM]: Avoid clashes with XColor, XImage and Pixel
+       definitions in xpm.h.
+       (init_xpm_functions): New function.
+       (xpm_load): Sync with xfns.c.  Adapt for Windows version of libXpm.
+       (init_external_image_libraries): Try to load libXpm.dll.
+
+       * fileio.c (Fcopy_file) [WINDOWSNT]: Reverse logic for setting
+       timestamp.
+
+2003-01-31  Dave Love  <fx@gnu.org>
+
+       * syntax.c (Fskip_chars_forward)
+       (open-paren-in-column-0-is-defun-start): Doc fix.
+
+2003-01-31  Joe Buehler  <jhpb@draco.hekimian.com>
+
+       * fileio.c: Support // at start of name for Cygwin (just added proper
+       preprocessor tests).
+
+       * keyboard.c: Port to Cygwin (just added proper preprocessor tests).
+
+       * Makefile.in: Use @EXEEXT@ for Cygwin.
+
+       * mem-limits.h: Added ifdef to define BSD4_2 for Cygwin.
+
+       * s/cygwin.h: Added for Cygwin port.
+
+2003-01-31  Juanma Barranquero  <lektu@terra.es>
+
+       * w32fns.c (DrawText): Kludge to avoid a redefinition on Windows
+       when including gif_lib.h.
+       (init_gif_functions, init_tiff_functions): New functions.
+       (gif_load, tiff_load): Sync with xfns.c version.  Adjust colors for
+       Windows.  Disable color table lookups.  Call library functions
+       through pointers determined at runtime.
+       (init_external_image_libraries): Try to load libungif.dll and
+       libtiff.dll.
+
+2003-01-31  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (SKIP_GLYPHS): New macro.
+       (set_cursor_from_row): Skip all glyphs that comes from overlay string.
+
+2003-01-30  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (free_frame_tool_bar): Remove debug printf.
+
+2003-01-30  Dave Love  <fx@gnu.org>
+
+       * alloc.c (Vgc_elapsed, gcs_done): New variables.
+       (Fgarbage_collect): Use them.
+       (init_alloc, syms_of_alloc): Set them up.
+
+2003-01-30  Juanma Barranquero  <lektu@terra.es>
+
+       * w32fns.c (init_external_image_libraries): Add missing operator.
+
+2003-01-29  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (init_external_image_libraries): Allow jpeg-62.dll as
+       an alternative name for jpeg.dll.
+
+2003-01-29  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (set_cursor_from_row): Pay attention to string display
+       properties.
+
+2003-01-28  Benjamin Riefenstahl  <Benjamin.Riefenstahl@epost.de>
+
+       * macterm.c (keycode_to_xkeysym_table): Add <tab>, <backspace>,
+       <escape>.
+       (keycode_to_xkeysym_table): Reformat and add more comments.
+       (XTread_socket): Drop special case for backspace.
+
+2003-01-28  Andrew Choi  <akochoi@shaw.ca>
+
+       * macfns.c (x_to_mac_color): Correct the order for parsing the RGB
+       values in old-style RGB specs.
+
+2003-01-27  Juanma Barranquero  <lektu@terra.es>
+
+       * w32fns.c (init_external_image_libraries): Try alternate names for the
+       jpeg dll.
+
+2003-01-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (create_dialog, xg_separator_p)
+       (xg_item_label_same_p, xg_update_menu_item): Check for NULL string
+       before calling strcmp or strlen.
+
+2003-01-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (update_frame_tool_bar): Call prepare_image_for_display
+       and handle image load failure.
+
+2003-01-26  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (init_jpeg_functions, jpeg_resync_to_restart_wrapper):
+       New functions.
+       (jpeg_load): Sync with xfns.c version.  Adjust colors for Windows.
+       Disable color table lookups.  Call jpeg library functions
+       through pointers determined at runtime.
+       (init_external_image_libraries): Try to load jpeg.dll.
+
+2003-01-25  Richard M. Stallman  <rms@gnu.org>
+
+       * lisp.h: Declare format2 instead of format1.
+
+       * fileio.c (barf_or_query_if_file_exists):
+       Call format2 instead of format1.
+
+       * editfns.c (format2): New function, replaces format1
+       but takes exactly two Lisp Objects as format args.
+
+       * buffer.c (Fkill_buffer): Call format2 instead of format1.
+
+2003-01-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h: Change to return value of x_dispatch_event to int.
+
+       * xterm.c (x_filter_event): New function.
+       (event_handler_gdk, XTread_socket): Call x_filter_event.
+       (x_dispatch_event): Change to return value of finish.
+       (event_handler_gdk): Use return value from x_dispatch_event.
+
+       * xfns.c (x_window): Call create_frame_xic for GTK version to
+       initialize input methods.
+
+       * gtkutil.h: Add (void) prototypes.
+
+       * gtkutil.c (create_menus): Remove code that puts the help menu to
+       the right.
+
+2003-01-25  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (XPutPixel): Handle monochrome images; used for masks.
+       [HAVE_PNG]: Sync with xfns.c version.
+       (png_load): Adjust colors for Windows.  Use Windows
+       bitmaps.  Disable color table lookups.
+       (DEF_IMGLIB_FN, LOAD_IMGLIB_FN): New macros.
+       (init_png_functions): New function.
+       (png_read_from_memory, png_load): Call png library functions
+       through pointers determined at runtime.
+       (QCloader, QCbounding_box, QCpt_width, QCpt_height): Declare.
+       (init_external_image_libraries): New function.
+       (init_xfns): Call it.
+
+2003-01-24  Andreas Schwab  <schwab@suse.de>
+
+       * minibuf.c (Fminibuffer_message): Verify type of parameter.
+
+2003-01-24  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_initialize): Initialize id_to_widget here instead
+       of static initializer.
+
+2003-01-24  Dave Love  <fx@gnu.org>
+
+       * s/gnu-linux.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define for more
+       architectures.
+
+       * alloc.c (mark_stack) [!GC_LISP_OBJECT_ALIGNMENT && __GNUC__]:
+       Use __alignof__.
+
+2003-01-24  Kenichi Handa  <handa@m17n.org>
+
+       * keyboard.c (adjust_point_for_property): New second arg MODIFIED.
+       It it is nonzero, don't pretend that an invisible area doesn't exist.
+       (command_loop_1): Call adjust_point_for_property with proper
+       second arg.
+
+2003-01-22  Jason Rumney  <jasonr@gnu.org>
+
+       Sync changes with xterm.c and xfns.c.
+
+       * w32term.c (x_draw_glyph_string_foreground)
+       (x_draw_composite_glyph_string_foreground): Implement overstriking.
+
+       * w32term.c (x_write_glyphs): Clear phys_cursor_on_p if current
+       phys_cursor's hpos is overwritten.  This is still not completely
+       correct, as it doesn't really make sense to use hpos at all to
+       get the cursor glyph (as that is relative to the width of the
+       characters on the line, which may have changed during the update).
+
+       * w32term.c (notice_overwritten_cursor): Handle the special case
+       of the cursor being in the first blank non-text line at the
+       end of a window.
+
+       * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor)
+       (x_draw_phys_cursor_glyph): Set phys_cursor_width here.
+       Compute from the x position returned by x_draw_glyphs.
+
+       (x_display_and_set_cursor): Don't set phys_cursor_width here,
+       except for NO_CURSOR and system caret, to make phys_cursor_width
+       contain what its name suggests.
+       (notice_overwritten_cursor): Consider the cursor image erased if
+       the output area intersects the cursor image in y-direction.
+
+       * w32term.c (note_mode_line_or_margin_highlight): Rename from
+       note_mode_line_highlight and extend.
+
+       * w32term.c (last_window): New variable.
+       (w32_read_socket) <WM_MOUSEMOVE>: Generate SELECT_WINDOW_EVENTs.
+       (note_mouse_movement): Remove reimplemented code in #if 0.
+
+       * w32fns.c (x_set_cursor_type): Set cursor_type_changed,
+       not update_mode_lines, and always set it to 1.
+
+2003-01-21  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (IDC_HAND): Define it if system headers don't.
+
+2003-01-21  KOBAYASHI Yasuhiro  <kobayays@otsukakj.co.jp>
+
+       * w32term.h (struct w32_output): New member hand_cursor.
+       (WM_EMACS_SETCURSOR): New message definition.
+
+       * w32term.c (note_mode_line_highlight): Delete #if 0 to enable
+       function w32_define_cursor.
+       (note_mouse_highlight): Initialize, setup cursor accoding to mouse
+       position, change member name output_data.x to output_data.w32 and
+       add function w32_define_cursor.
+       (show_mouse_face): Delete #if 0 to enable function w32_define_cursor
+       and change member name output_data.x to output_data.w32.
+       (w32_initialize_display_info):
+       Setup dpyinfo->vertical_scroll_bar_cursor.
+
+       * w32fns.c (Vx_hand_shape): New variable.
+       (w32_wnd_proc): Add message entries for WM_SETCURSOR and
+       WM_EMACS_SETCURSOR.
+       (x-create-frame): Setup Cursor types.
+
+2003-01-21  David Ponce  <david@dponce.com>
+
+       * w32term.c (w32_encode_char): For DIM=1 charset, set
+       ccl->reg[2] to -1 before calling ccl_driver.
+       (Sync. with xterm.c x_encode_char change by Kenichi Handa
+       <handa@m17n.org> on 2002-09-30.)
+       (w32_draw_relief_rect): Declare all args.
+       (w32_define_cursor): New.
+
+       * w32fns.c (w32_load_cursor): New function.
+       (w32_init_class): Use it.
+       (x_put_x_image): Declare all args.
+
+2003-01-21  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * Makefile.in (ALL_CFLAGS): Include MYCPPFLAGS, not MYCPPFLAG.
+
+2003-01-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c: Must include stdio.h before termhooks.h.
+
+2003-01-21  Dave Love  <fx@gnu.org>
+
+       * alloc.c (Fgc_status): Print zombie list.
+       (mark_maybe_object) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]:
+       Fix assignment of zombies.
+       (Fgarbage_collect) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]:
+       Don't take car of non-cons.
+
+       * s/sol2-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define.
+
+       * s/sunos4-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define.
+
+2003-01-20  David Ponce  <david@dponce.com>
+
+       * w32menu.c (digest_single_submenu): Declare all args.
+
+       Sync with 2002-12-23  Richard M. Stallman  <rms@gnu.org>
+       changes in xmenu.c:
+
+       (parse_single_submenu): Use individual keymap's prompt
+       string as pane name, if there is one.
+       (set_frame_menubar): Save menu_items_n_panes from each call to
+       parse_single_submenu and use it when calling digest_single_submenu.
+
+2003-01-20  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (XTread_socket): Check for valid, visible window
+       before sending a scroll-wheel event.
+
+2003-01-20  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (redisplay_window): If mini window's buffer is not
+       a minibuffer, then redisplay it like other windows.
+
+2003-01-20  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_create_frame_widgets): Check if there is an
+       external tool bar before setting tool bar height.
+
+2003-01-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (handle_one_xevent): Surround popup_activated
+       with #ifdef:s for non-toolkit version.
+
+       * Makefile.in (XOBJ): Add gtkutil.o if USE_GTK.
+       (gtkutil.o): New file.
+       (TOOLKIT_DEFINES): Set to -DUSE_GTK if HAVE_GTK.
+       (LIBW): Set to @GTK_LIBS@ if USE_GTK.
+
+       * gtkutil.c: New file for GTK version.
+
+       * gtkutil.h: New file for GTK version.
+
+       * xterm.h: Add xt_or_gtk_widget.
+       Include gtk files for USE_GTK.
+       (struct x_output): Add toolbar_height.
+       (struct x_output): Add GTK widgets and Gdk size_hints.
+       (GTK_WIDGET_TO_X_WIN, FRAME_GTK_OUTER_WIDGET, FRAME_GTK_WIDGET)
+       (FRAME_OUTER_WINDOW): New macros for USE_GTK.
+       (FRAME_OUTER_TO_INNER_DIFF_Y): Add FRAME_TOOLBAR_HEIGHT to calculation.
+
+       * xterm.c: Include gtkutil.h for USE_GTK.
+       (free_frame_menubar): Declare extern void for USE_GTK.
+       (note_mouse_highlight): Check popup_activated for USE_GTK.
+       (xt_action_hook): Don't compile if USE_GTK.
+       (x_scroll_bar_to_input_event): Use CurrentTime for USE_GTK.
+       (xg_scroll_callback): New function.
+       (x_create_toolkit_scroll_bar): Call xg_create_scroll_bar for USE_GTK.
+       (x_set_toolkit_scroll_bar_thumb): Call xg_set_toolkit_scroll_bar_thumb
+       for USE_GTK.
+       (x_scroll_bar_create): Call xg_update_scrollbar_pos and
+       xg_show_scroll_bar for USE_GTK.
+       (x_scroll_bar_remove): Call xg_remove_scroll_bar for USE_GTK.
+       (XTset_vertical_scroll_bar): Call xg_update_scrollbar_pos for USE_GTK.
+       (event_handler_gdk): New function for USE_GTK.
+       (handle_one_xevent): Call xg_resize_widgets for USE_GTK.
+       (handle_one_xevent): Make sure widget is mapped before
+       calling x_real_positions for USE_GTK.
+       (XTread_socket): Add GTK event loop for USE_GTK.
+       (x_set_window_size): Call xg_frame_set_char_size for USE_GTK.
+       (x_make_frame_visible): Call gtk_widget_show_all for USE_GTK.
+       (x_make_frame_invisible): Call gtk_widget_hide for USE_GTK.
+       (x_iconify_frame): Add code for USE_GTK.
+       (x_free_frame_resources): Call gtk_widget_destroy for USE_GTK.
+       (x_wm_set_size_hint): Only compile if not USE_GTK.  GTK version
+       is in gtkutil.c.
+       (x_term_init): Add initialization for GTK.
+       (syms_of_xterm): Set Vx_toolkit_scroll_bars for USE_GTK.
+
+       * xmenu.c: Include gtkutil.h for USE_GTK.
+       (Fx_popup_menu): Use current position if x and y are nil.
+       (single_menu_item, single_menu_item, Fx_popup_dialog):
+       Check for USE_GTK.
+       (popup_widget_loop): New function for USE_GTK.
+       (x_activate_menubar): Add code for USE_GTK.
+       (popup_activate_callback, popup_deactivate_callback)
+       (menu_highlight_callback, menubar_selection_callback):
+       Add USE_GTK versions.
+       (update_frame_menubar): Call xg_update_frame_menubar for USE_GTK.
+       (set_frame_menubar): Call xg_modify_menubar_widgets for USE_GTK.
+       (free_frame_menubar): Only compile if not USE_GTK.  GTK version
+       is in gtkutil.c.
+       (popup_selection_callback): New version for USE_GTK.
+       (create_and_show_popup_menu): New fuction, one USE_GTK version and
+       one USE_X_TOOLKIT version.
+       (xmenu_show): Call create_and_show_popup_menu.
+       (dialog_selection_callback): New version for USE_GTK.
+       (create_and_show_dialog): New fuction, one USE_GTK version and
+       one USE_X_TOOLKIT version.
+       (xdialog_show): Call create_and_show_dialog.
+
+       * xfns.c: Include gtkutil for USE_GTK.
+       (x_window_to_frame, x_any_window_to_frame)
+       (x_non_menubar_window_to_frame, x_menubar_window_to_frame)
+       (x_top_window_to_frame): Add code for USE_GTK.
+       (x_set_background_color): Call xg_set_background_color for GTK.
+       (x_set_menu_bar_lines): Check for USE_GTK.
+       (x_set_tool_bar_lines): Call update_frame_tool_bar for USE_GTK.
+       (x_set_name, x_set_title): Call gtk_window_set_title for USE_GTK.
+       (x_window): Call xg_create_frame_widgets for USE_GTK.
+       (Fx_create_frame): Check for USE_GTK.
+       (Fx_file_dialog): New implementation for USE_GTK.
+
+       * xdisp.c: Add check for USE_GTK for extern void set_frame_menubar.
+       (update_menu_bar): Add check for USE_GTK.
+       (update_tool_bar): Add check for USE_GTK and external tool bar.
+       (redisplay_tool_bar): Add check for USE_GTK and external tool bar.
+       (redisplay_internal): Add check for USE_GTK and popup_activated.
+       (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_MENU_BAR.
+       (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_TOOL_BAR.
+       (display_menu_bar): Add check for USE_GTK.
+
+       * lisp.h (Vx_resource_name): Declare extern.
+
+       * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT
+       for USE_GTK.
+       (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK.
+
+       * frame.h (struct frame): Add external_tool_bar.  Check for USE_GTK.
+       (FRAME_EXTERNAL_TOOL_BAR): New macro.
+       (FRAME_EXTERNAL_MENU_BAR): Check for USE_GTK.
+
+       * fileio.c (Fread_file_name): Add check for USE_GTK.
+
+       * dispnew.c (adjust_frame_glyphs_for_window_redisplay):
+       Add check for USE_GTK.
+
+       * config.in: Added HAVE_GTK.
+
+       * alloc.c (Fgarbage_collect): Call xg_mark_data for GTK.
+
+2003-01-18  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * charset.h (Funibyte_char_to_multibyte): Export.
+
+2003-01-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (mouse_position_for_popup): New function.
+       (Fx_popup_menu): Call mouse_position_for_popup for X and
+       mouse_position_hook for others.
+
+2003-01-17  Kim F. Storm  <storm@cua.dk>
+
+       * editfns.c (Finsert): Mention `string-make-multibyte' and
+       `string-as-multibyte' in doc string.
+
+2003-01-17  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (syms_of_fontset): Setup Vfont_encoding_alist here.
+
+       * editfns.c (Fformat): Convert an unibyte char argument that is
+       formatted by "%c" to multibyte if the total result must be a
+       multibyte string.
+
+2003-01-16  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (set-process-filter): Document unibyte/multibyte-ness
+       of string argument.
+
+2003-01-16  Kenichi Handa  <handa@m17n.org>
+
+       * charset.h (NEXT_CHAR_BOUNDARY, PREV_CHAR_BOUNDARY): New macros.
+
+       * regex.c (GET_CHAR_BEFORE_2): Use PREV_CHAR_BOUNDARY.
+       (re_search_2): Likewise.
+
+2003-01-15  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (message_dolog): Fix bug of the case that *Message*
+       buffer is unibyte.
+
+2003-01-15  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * fns.c (Fsubstring): Clarify doc string.
+
+       * textprop.c (Ftext_properties_at, Fnext_char_property_change)
+       (Fprevious_char_property_change)
+       (Fnext_single_char_property_change)
+       (Fprevious_single_char_property_change, Fnext_property_change)
+       (Fnext_single_property_change, Fprevious_property_change)
+       (Fprevious_single_property_change, Fadd_text_properties)
+       (Fput_text_property, Fset_text_properties)
+       (Fremove_text_properties, Fremove_list_of_text_properties)
+       (Ftext_property_any, Ftext_property_not_all): Clarify doc strings.
+
+2003-01-14  Kim F. Storm  <storm@cua.dk>
+
+       * process.h (struct Lisp_Process): New member plist replaces old
+       member private_vars.  All uses changed.
+
+       * process.c: Reworked 2003-01-12 change -- call a plist a plist!
+       (QCplist): Rename from QCvars.  Change all uses.
+       (Fprocess_plist): Replaces Fprocess_variable.  Simplified.
+       (Fset_process_plist): Replaces Fset_process_variable.  Simplify.
+       (syms_of_process): Intern, staticpro, defsubr these.
+       (Fmake_network_process): Describe :plist arg.  Remove :vars arg.
+
+2003-01-14  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * m/delta.h: Remove (obsolete).
+
+2003-01-13  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * fileio.c (Fdelete_directory, Fdelete_file): Document the
+       behaviour in front of symlinks.
+       (Fdelete_file): Raise an error on directories.
+
+2003-01-13  Dave Love  <fx@gnu.org>
+
+       * fns.c (Freverse): Use QUIT.
+
+2003-01-13  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (minibuffer_completion_contents):
+       Error if point is inside prompt.
+
+       * keyboard.c (command_loop_1): Don't redisplay directly
+       if there's a post-command-hook.
+
+       * fileio.c (syms_of_fileio) <directory-sep-char>: Doc fix.
+       (Fdo_auto_save): Add gcpros around Ffile_name_directory.
+
+2003-01-12  Kim F. Storm  <storm@cua.dk>
+
+       * process.h (struct Lisp_Process): New member private_vars.
+
+       * process.c (QCvars): New variable.
+       (syms_of_process): Intern and staticpro it.
+       (Fset_process_contact): Removed function.
+       (Fprocess_variable, Fset_process_variable): New functions.
+       (syms_of_process): Defsubr them.
+       (Fstart_process): Initialize private_vars plist to nil.
+       (Fmake_network_process): New arg :vars to setup the private
+       variables for new network process.
+       (server_accept_connection): Copy server's private variables to
+       client process.
+
+       * alloc.c (pure_alloc): Fixed 2003-01-10 changed (caused spurious
+       crashes).  Code rewritten and simplified.  Now directly aligns the
+       pointer and recalculates pure_bytes_used, rather than aligning the
+       size and adjusting the pointer.
+
+2003-01-11  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fset_process_contact): New function.
+       (syms_of_process): defsubr it.
+       (make-network-process): Update doc.
+
+2003-01-10  Andreas Schwab  <schwab@suse.de>
+
+       * alloc.c (pure_alloc): Correct alignment for Lisp_Floats.
+       Reported by Berthold Gunreben <b.gunreben@web.de>.
+
+2003-01-10  Dave Love  <fx@gnu.org>
+
+       * composite.c (syms_of_composite): Make composition_hash_table weak.
+
+2003-01-09  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fmake_network_process): Convert new port number
+       to host byte order for `:service t' case.  From Mario Lang.
+
+2003-01-08  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_file_dialog): Call XtAppNextEvent and x_dispatch_event
+       instead of XtAppProcessEvent.
+
+       * xterm.c (handle_one_xevent): New function.
+       (x_dispatch_event): New function.
+       (XTread_socket): Call handle_one_xevent.
+
+       * xterm.h (FRAME_OUTER_TO_INNER_DIFF_X/Y): New.
+
+       * xmenu.c (Fx_popup_menu): If popping up at mouse position,
+       call XQueryPointer to get coordinates.
+       (popup_get_selection): Do not set popup_activated_flag to zero,
+       let popup_deactivate_callback do that.  Needed for Motif.
+       Call x_dispatch_event instead of XtDispatchEvent.
+       (xmenu_show): Calculate root coordinate from frame top/left position.
+
+2003-01-08  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (server_accept_connection): Fix recording of new
+       connection's local address in :local property of contact info.
+       (Fmake_network_process): Record local network address for new
+       client processes in :local property of contact info.
+       (format-network-address): Add arg OMIT-PORT.  Change callers.
+
+2003-01-07  Dave Love  <fx@gnu.org>
+
+       * Makefile.in (fns.o): Depend on coding.h.
+
+2003-01-06  Dave Love  <fx@gnu.org>
+
+       * fns.c: Include coding.h.  Use POINTER_TYPE*, not void*.
+       (Vlocale_coding_system): Declare.
+       (Qcodeset, Qdays, Qmonths, Qpaper): New.
+       (Flanginfo): New.
+       (syms_of_fns): Initialize new stuff.
+
+2003-01-07  Markus Rost  <rost@math.ohio-state.edu>
+
+       * minibuf.c (Fread_variable): Doc fix.
+
+       * eval.c (Fuser_variable_p): Doc change.  For custom variables,
+       use the same test as for custom-variable-p.
+
+2003-01-05  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (try_scrolling): New arg LAST_LINE_MISFIT.
+       Count LAST_LINE_MISFIT in scroll margin for end of window.
+       Move label too_near_end before setting SCROLL_MARGIN_POS.
+       Set LAST_LINE_MISFIT before jumping there.
+
+       * xdisp.c (try_scrolling): Calculate amount_to_scroll better in
+       scroll_conservatively case.  If scrolling that much doesn't change
+       STARTP, move it down one line.
+
+       * xdisp.c (redisplay_window): Pass last_line_misfit arg to
+       try_scrolling.  Make it 1 after make_cursor_line_fully_visible fails.
+
+       * xdisp.c (setup_echo_area_for_printing): Kill Emacs if no
+       selected frame.
+
+       * keymap.c (apropos_predicate, apropos_accumulate): Make them static.
+       (syms_of_keymap): Staticpro them.
+       (Fapropos_internal): Initialize them and clear them out.
+       Don't GCPRO them.
+
+       * buffer.c (syms_of_buffer) <scroll-up|down-aggressively>: Doc fixes.
+
+       * lisp.h: New misc type Lisp_Save_Value.
+       (enum Lisp_Misc_Type): Add Lisp_Misc_Save_Value.
+       (XSAVE_VALUE): New macro.
+       (struct Lisp_Save_Value): New data type.
+       (union Lisp_Misc): Add u_save_value alternative.
+       (make_save_value): Declare.
+
+       * alloc.c (make_save_value): New function.
+
+       * xterm.c (x_catch_errors): Save dpy using make_save_value.
+       (x_catch_errors_unwind): Call XSync.
+
+2003-01-01  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (window_scroll_pixel_based): Partially undo last change.
+
+       * keyboard.c (command_loop_1): Call adjust_point_for_property
+       in direct action cases for Qforward_char and Qbackward_char.
+       Set already_adjusted so it won't be done twice.
+
+2002-12-30  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * src/config.in (!HAVE_SIZE_T): Fix order of arguments in
+       type definition of size_t.
+
+2003-01-02  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (syms_of_macterm): Provide the feature "mac-carbon" to
+       distinguish Carbon GUI builds from X11 builds on darwin.
+
+2002-12-30  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (syms_of_macterm): Set mac-wheel-button-is-mouse-2
+       to default to t.
+
+2002-12-29  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * data.c (Fstring_to_number, Fminus): Better English in doc strings.
+
+2002-12-28  Steven Tamm  <steventamm@mac.com>
+
+       * Makefile.in (macosx-bundle): Fix Mac OS X/Carbon port to
+       allow building in a different directory than source.  Uses some
+       GNU Make extensions, but there is no other make on Mac OS X.
+
+2002-12-26  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * data.c (Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local)
+       (Fsetq_default, Fmake_local_variable, Fkill_local_variable)
+       (Fmake_variable_frame_local, Faset, Fnumber_to_string, Fminus)
+       (Fstring_to_number): Mention the returned value in the doc strings.
+
+2002-12-23  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (syms_of_buffer) <scroll-up-aggressively>
+       <scroll-down-aggressively>: Doc fix.
+
+       * xmenu.c (parse_single_submenu): Use individual keymap's prompt
+       string as pane name, if there is one.
+       (set_frame_menubar): Save menu_items_n_panes from each call to
+       parse_single_submenu and use it when calling digest_single_submenu.
+
+       * window.c (window_scroll_pixel_based): Fix check for reaching BEGV.
+       Don't try to make last line fully visible if it is past end of window.
+
+2002-12-22  Steven Tamm  <steventamm@mac.com>
+
+       * macmenu.c (MIN_POPUP_SUBMENU_ID): Add.
+       (mac_menu_show): Add support for hierarchical popup menus.
+       (add_menu_item): Remove indentation support.
+       (fill_submenu, fill_menu): Create hierarchical menus
+       instead of using indentation.
+
+2002-12-22  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (try_cursor_movement): Don't call try_window here.
+       (redisplay_window): Never redisplay minibuffer when inactive.
+
+       * window.c (select_window_1): Undo 9/21 change.
+
+2002-12-22  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (XTread_socket): Call KeyTranslate for control and
+       meta to deal correctly shifted non-alpha characters, like C-S-5
+       being treated like C-%.  Do not look for shift key to deal
+       with masking off control-key with mac-reverse-ctrl-meta.
+
+2002-12-21  Richard M. Stallman  <rms@gnu.org>
+
+       * xmenu.c (popup_get_selection): Now static.  New arg DO_TIMERS.
+       If it is non-nil, run timers.  Use an unwind-protect to requeue
+       the events that were read ahead.
+       (popup_get_selection_unwind): New subroutine.
+       (popup_get_selection_queue): File-scope variable now holds that queue.
+       (xmenu_show): Pass 0 for DO_TIMERS to popup_get_selection.
+       (xdialog_show): Pass 1 for DO_TIMERS to popup_get_selection.
+       Use an unwind-protect to pop down the dialog box.
+       (xdialog_show_unwind): New subroutine implements that.
+
+       * xdisp.c (row_containing_pos): Change exit test using last_y.
+       (try_window_id): Abort if row_containing_pos returns null.
+
+       * lread.c (load_error_handler): New function.
+       (Fload): Handle errors in Fsubstitute_in_file_name.
+       Don't expect Fsignal to return.
+
+       * eval.c: Errors and throws work right with interrupt blocking.
+       (struct catchtag): New elt interrupt_input_blocked.
+       (unwind_to_catch): Restore interrupt_input_blocked from saved value.
+       (internal_catch, Fcondition_case, internal_condition_case)
+       (internal_condition_case_1, internal_condition_case_2): Save it.
+       (Fsignal): Don't do TOTALLY_UNBLOCK_INPUT.
+
+       * editfns.c (Fformat): Add parens.
+
+       * dired.c (file_name_completion): Fix that change.
+       Delete special quit-handling code; just use QUIT.
+
+2002-12-21  Tak Ota  <Takaaki.Ota@am.sony.com>
+
+       * dired.c (file_name_completion): Close directory on error
+       just as in directory_files_internal.
+
+2002-12-19  David Kastrup  <David.Kastrup@t-online.de>
+
+       * window.c (Fset_window_configuration): Set old_point to correct
+       value when new_current_buffer == current_buffer.
+
+2002-12-17  Ben Key  <bkey1@tampabay.rr.com>
+
+       Revisited my earlier fix for the following entry in etc/PROBLEMS:
+       "Emacs built on Windows 9x/ME crashes at startup on Windows XP,
+       or Emacs builtpart of on XP crashes at startup on Windows 9x/ME."
+
+       These changes were in part based upon suggestions made by Peter
+       'Luna' Runestig [peter@runestig.com].
+
+       * w32.c (g_b_init_is_windows_9x, g_b_init_open_process_token)
+       (g_b_init_get_token_information, g_b_init_lookup_account_sid)
+       (g_b_init_get_sid_identifier_authority ): Add several static
+       global variables.
+
+       * w32.c (globals_of_w32): New function.  Used to initialize those
+       global variables that must always be initialized on startup even
+       when the global variable initialized is non zero.  Its primary
+       purpose at this time is to set the global variables
+       g_b_init_is_windows_9x, g_b_init_open_process_token,
+       g_b_init_get_token_information, g_b_init_lookup_account_sid, and
+       g_b_init_get_sid_identifier_authority to 0 on startup.
+       Called from main.
+
+       * w32.c (is_windows_9x): Perform initialization only if
+       g_b_init_is_windows_9x is equal to 0.  On initialization set
+       g_b_init_is_windows_9x equal to 1.
+
+       * w32.c (open_process_token): Perform initialization only if
+       g_b_init_open_process_token is equal to 0.  On initialization set
+       g_b_init_open_process_token equal to 1.
+
+       * w32.c (get_token_information): Perform initialization only if
+       g_b_init_get_token_information is equal to 0.  On initialization
+       set g_b_init_get_token_information equal to 1.
+
+       * w32.c (lookup_account_sid): Perform initialization only if
+       g_b_init_lookup_account_sid is equal to 0.  On initialization
+       set g_b_init_lookup_account_sid equal to 1.
+
+       * w32.c (get_sid_identifier_authority): Perform initialization
+       only if g_b_init_get_sid_identifier_authority is equal to 0.
+       On initialization set g_b_init_get_sid_identifier_authority equal to 1.
+
+       * w32fns.c (globals_of_w32fns): New function.  Used to initialize
+       those global variables that must always be initialized on startup
+       even when the global variable initialized is non zero.
+       Its primary purpose at this time is to initialize the global variable
+       track_mouse_event_fn.
+
+       * w32fns.c (w32_wnd_proc): Remove initialization of
+       track_mouse_event_fn from the handler for the WM_SETFOCUS message.
+
+       * w32fns.c (syms_of_w32fns): Call globals_of_w32fns.
+
+       * w32menu.c (globals_of_w32menu): New function.  Used to
+       initialize those global variables that must always be initialized
+       on startup even when the global variable initialized is non zero.
+       Its primary purpose at this time is to initialize the global
+       variables get_menu_item_info and set_menu_item_info.
+
+       * w32menu.c (initialize_frame_menubar): Remove initialization of
+       get_menu_item_info and set_menu_item_info.
+
+       * w32menu.c (syms_of_w32menu): Call globals_of_w32menu.
+
+       * w32.h (globals_of_w32, globals_of_w32fns, globals_of_w32menu):
+       Declare them.
+
+       * emacs.c (main): Call globals_of_w32 prior to calling
+       init_environment if WINDOWSNT is defined.  Call globals_of_w32fns
+       and globals_of_w32menu if initialized is non zero and HAVE_NTGUI
+       is defined.
+
+       * w32term.c (x_update_window_begin): Fix Windows API error
+       detected by BoundsChecker.  Test to determine if
+       w32_system_caret_hwnd is NULL prior to attempting to use
+       SendMessage to send the WM_EMACS_HIDE_CARET message to it.
+
+       * w32term.c (x_update_window_end): Fix Windows API error
+       detected by BoundsChecker.  Test to determine if
+       w32_system_caret_hwnd is NULL prior to attempting to use
+       SendMessage to send the WM_EMACS_SHOW_CARET message to it.
+
+2002-12-17  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (coding_system_require_warning): New variable.
+       (syms_of_coding): DEFVAR it.
+
+       * coding.h (coding_system_require_warning): Extern it.
+
+       * fileio.c (choose_write_coding_system): Even if
+       Vcoding_system_for_write is non-nil, if
+       coding_system_require_warning is nonzero, call
+       Vselect_safe_coding_system_function.
+
+2002-12-17  Markus Rost  <rost@math.ohio-state.edu>
+
+       * Makefile.in (lisp, shortlisp): Add cus-face and timer.
+       (lisp): Add font-core.
+
+2002-12-13  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * textprop.c (text_read_only): New arg `propval'.
+       (get_char_property_and_overlay): Remove unused var `next_overlay'.
+       (verify_interval_modification): Use text_read_only's new arg.
+
+2002-12-13  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (Funencodable_char_position): Set pend correctly.
+
+2002-12-12  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (last_mousemove_x, last_mousemove_y): New variables.
+       (w32_read_socket) <WM_MOUSEMOVE>: Use them to detect non-movement.
+       Be more careful about when help_events are generated.
+
+2002-12-12  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (mac_check_for_quit_char): Correctly set the
+       modifiers of the event to 0.
+       * mac.c (sys_select): Duplicate rfds before calling select to
+       ensure that rfds survive the while loop.
+
+2002-12-11  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (try_window_id): Don't call set_cursor_from_row if
+       row_containing_pos returned NULL.
+
+2002-12-10  Steven Tamm  <steventamm@mac.com>
+
+       * mac.c (sys_read): Fix sys_read to not call select if IO is
+       non-blocking.
+       (sys_select): Fix sys_select to not use a timeout larger than
+       the one given.
+
+2002-12-10  Juanma Barranquero  <lektu@terra.es>
+
+       * editfns.c (Fformat): Use alloca, not _alloca.
+
+2002-12-09  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (Fget_buffer_create): Call Qucs_set_table_for_input
+       as the last thing.
+
+2002-12-09  Dave Love  <fx@gnu.org>
+
+       * s/sol2-8.h: Removed.  (Not necessary.)
+
+2002-12-09  Matthew Swift  <swift@alum.mit.edu>
+
+       * editfns.c (Fformat): Handle precision in string conversion
+       specifiers like libc functions do (ie, print at most that many
+       characters).
+
+2002-12-08  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (row_containing_pos): Check more carefully
+       whether charpos is really in the row before returning it.
+
+2002-12-07  Steven Tamm  <steventamm@mac.com>
+
+       * sysdep.c (emacs_read) [HAVE_CARBON]: Have emacs_read use sys_read.
+
+       * eval.c (Feval) [HAVE_CARBON]: Calls mac_check_for_quit_char at
+       each stack frame.  This may change as it could be time consuming.
+
+       * macterm.c (mac_check_for_quit_char, quit_char_comp)
+       (init_quit_char_handler, mac_determine_quit_char_modifiers)
+       (mac_initialize): Add code to check for pressing of quit_char
+       in the OS event queue.
+
+       * mac.c (sys_select): Call mac_check_for_quit_char every second
+       while blocking on select.
+
+       * mac.c (sys_read): Use sys_select to test for input first
+       before calling read, to allow C-g to break.
+
+2002-12-07  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (Fcompleting_read): Doc fix.
+
+       * lread.c (syms_of_lread) <load-history>: Doc fix.
+
+       * fileio.c (Fcopy_file): Set immediate_quit around emacs_open call.
+
+       * eval.c (Fdefun, Fdefmacro): Record in load-history redefining an
+       autoload.
+
+       * data.c (Fdefalias): Record in load-history redefining an autoload.
+
+       * alloca.c: Undo ifdef change accidentally made on 12-04.
+
+2002-12-06  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * xfns.c (png_load): Avoid double gamma correction for PNG images.
+
+2002-12-04  Richard M. Stallman  <rms@gnu.org>
+
+       * sysdep.c (fcntl.h): Test only HAVE_FCNTL_H.
+
+       * fileio.c (fcntl.h): Test only HAVE_FCNTL_H.
+
+       * alloca.c: Don't use #error.
+
+2002-12-03  Dave Love  <fx@gnu.org>
+
+       * buffer.c (Qucs_set_table_for_input): New.
+       (Fget_buffer_create): Use it.
+       (Qset_buffer_major_mode_hook): Deleted.
+       (Fset_buffer_major_mode): Revert previous change.
+       (init_buffer_once): Intern ucs-set-table-for-input.
+       (syms_of_buffer): Delete Qset_buffer_major_mode_hook.
+       Add &Qucs_set_table_for_input.
+
+2002-12-03  Andreas Schwab  <schwab@suse.de>
+
+       * callint.c (Fcall_interactively): Use next_event only if less
+       than key_count.
+
+2002-12-02  Andrew Choi  <akochoi@shaw.ca>
+
+       * macmenu.c (add_menu_item, fill_menubar): Truncate menu item
+       names to 255 characters.
+
+       * macterm.c (XTread_socket): If all frames have been collapsed,
+       expand the first one before handling drag-and-drop events.
+
+       * s/darwin.h (GETPGRP_NO_ARG): Delete.  Replaced by GETPGRP_VOID,
+       which is detected by autoconf.
+
+2002-12-01  Steven Tamm  <steventamm@mac.com>
+
+       * unexmacosx.c (copy_twolevelhints, dump_it): Now corrects the
+       offset in two hints table to allow prebinding to be redone and
+       allow the executable to be stripped.
+
+2002-11-29  Dave Love  <fx@gnu.org>
+
+       * fns.c (Frequire): Don't call LOADHIST_ATTACH if feature was
+       already provided.
+
+2002-11-29  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (start_display): Check more intelligently for
+       whether the line is continued.
+       (move_it_vertically_backward): Clear it->continuation_lines_width.
+
+2002-11-28  Dave Love  <fx@gnu.org>
+
+       * s/amdahl.h, s/unipl5-0.h, m/sgi3000.h, s/3700.h, s/alliant-2800.h:
+       * s/alliant.h, s/altos.h: Deleted.  (Unused/empty.)
+
+2002-11-27  Steven Tamm  <steventamm@mac.com>
+
+       * fns.c (Frequire): Change nesting allowance from 2 to 3 to cause
+       more descriptive error output from lread.c:Fload upon most require
+       cycles during boostrapping.
+
+2002-11-27  Jason Rumney  <jasonr@gnu.org>
+
+       * fileio.c (Finsert_file_contents): Give a more appropriate error
+       for files bigger than 2Gb when off_t is 32 bit.
+
+       * dired.c (Ffile_attributes): Don't return negative file sizes for
+       files bigger than 2Gb when off_t is 32 bit.
+
+2002-11-27  Dave Love  <fx@gnu.org>
+
+       * s/irix6-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define.
+
+       * systty.h: Don't conditionally define GETPGRP_NO_ARG.
+       Test GETPGRP_VOID instead.
+       [BSD_TERMIOS]: Remove definitions (never used).
+
+       * s/osf5-0.h (WAIT_USE_INT, SYS_SIGLIST_DECLARED, sys_siglist):
+       Don't define.
+       (GC_SETJMP_WORKS, GC_MARK_STACK): Define.
+
+       * m/mips.h (WORDS_BIG_ENDIAN): Define conditionally.
+
+2002-11-25  Jason Rumney  <jasonr@gnu.org>
+
+       * w32.c (sys_write): Avoid non-blocking mode, which is not fully
+       supported.
+
+2002-11-25  Dave Love  <fx@gnu.org>
+
+       * unexalpha.c (update_dynamic_symbols): Cast arg of fatal_unexec.
+
+       * Makefile.in (TEMACS_LDFLAGS): Update last change.
+
+2002-11-25  Andreas Schwab  <schwab@suse.de>
+
+       * m/ia64.h: Restore `#ifndef NOT_C_CODE' deleted by last change.
+
+2002-11-24  Steven Tamm  <steventamm@mac.com>
+
+       * unexmacosx.c (unexec_realloc): Use malloc_default_zone to
+       determine the size of pointers alloced in unexed space instead
+       of using possibly invalid emacs_zone pointers.  This fixes the
+       binary incompatibility problems caused by updates to libSystem.B.
+
+2002-11-24  Richard M. Stallman  <rms@gnu.org>
+
+       * search.c (Fstring_match): Doc fix.
+
+       * callint.c (Fcall_interactively): If a command fails because
+       `*' detects a read-only buffer, but RECORD_FLAG is set,
+       record it anyway if the args don't actually do tty input.
+
+2002-11-22  Dave Love  <fx@gnu.org>
+
+       * sysdep.c (stuff_char) [PROTOTYPES]: Provide ISO C arglist.
+
+       * keyboard.c (interrupt_signal): Provide forward declaration.
+       (kbd_buffer_store_event): Don't declare interrupt_signal.
+
+       * xdisp.c (store_frame_title_char) [PROTOTYPES]: Provide ISO C arglist.
+
+2002-11-21  Richard M. Stallman  <rms@gnu.org>
+
+       * eval.c (interactive_p): Skip any number of bytecode
+       and special form frames, in any order.
+
+2002-11-20  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (convert_mono_to_color_image): New function.
+       (xbm_load, xbm_load_image): Use it when foreground or background
+       is explicitly set.
+
+2002-11-19  Dave Love  <fx@gnu.org>
+
+       * s/usg5-4.h, sco4.h (bcopy, bzero, bcmp): Don't define.
+
+2002-11-18  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (x_build_heuristic_mask): Filter palette info from color.
+       (XPutPixel): Swap blue and red.
+       (xpm_format, pbm_format, png_format, jpeg_format, tiff_format)
+       (gif_format, gs_format): Use IMAGE_ASCENT_VALUE.
+       (xpm_image_p, pbm_image_p, png_image_p, jpeg_image_p)
+       (tiff_image_p, gif_image_p, gs_image_p): Don't check ascent.
+
+2002-11-18  Dave Love  <fx@gnu.org>
+
+       * m/orion105.h (HAVE_ALLOCA): Don't define.
+
+       * m/m68k.h, m/arm.h, mtekxd88.h, m/tower32v3.h: Don't define alloca.
+
+       * m/intel386.h: Don't include alloca.h or define alloca.
+
+       * m/ia64.h: Don't include alloca.h, stdlib.h.  Don't declare
+       malloc, realloc, calloc.
+
+       * m/hp800.h, m/sr2k.h, m/ns16000.h, m/wicat.h (bcopy, bzero)
+       (bcmp): Don't define.
+
+       * m/delta.h (bcopy, bzero, bcmp, alloca): Don't define.
+
+       * m/amdahl.h: Don't define LIB_STANDARD.
+
+       * m/alpha.h: Move OSF1 stuff from here to s/osf1.h.
+
+       * s/osf1.h: Move OSF1 stuff from m/alpha.h to here.
+
+       * s/irix4-0.h, s/irix5-0.h, m/powerpcle.h, m/sparc.h:
+       Don't include alloca.h.
+
+       * s/aix3-2.h (HAVE_FSYNC): Don't define.
+
+       * regex.c (_GNU_SOURCE): Don't define.
+
+       * process.c (_GNU_SOURCE): Don't define.
+
+       * fileio.c (_GNU_SOURCE, HAVE_FSYNC): Don't define.
+
+2002-11-18  Markus Rost  <rost@math.ohio-state.edu>
+
+       * s/sol2-8.h: Include sol2-6.h.
+
+2002-11-18  Miles Bader  <miles@gnu.org>
+
+       * dispextern.h (struct face): Add `overstrike' field.
+       * xterm.c (x_draw_glyph_string_foreground)
+       (x_draw_composite_glyph_string_foreground): Implement overstriking.
+       * xfaces.c (load_face_font): Set `face->overstrike' based on
+       result from choose_face_font.
+       (best_matching_font, choose_face_font): Add `needs_overstrike'
+       argument, and use it to return whether overstriking is desirable
+       for this face/font combo.
+       (set_font_frame_param): Pass new argument to choose_face_font.
+
+2002-11-17  Ben Key  <BKey1@tampabay.rr.com>
+
+       This change is my fix for the following entry in etc/PROBLEMS:
+       "Emacs built on Windows 9x/ME crashes at startup on Windows XP,
+       or Emacs builtpart of on XP crashes at startup on Windows 9x/ME."
+
+       * w32.c: Added wrapper functions around the win32 API functions
+       OpenProcessToken, GetTokenInformation, LookupAccountSid, and
+       GetSidIdentifierAuthority.  These wrapper functions serve two
+       purposes:
+       1.  They ensure that the wrapped function can never be called
+       when Emacs is running on an operating system on which they are
+       not supported (Microsoft Windows 95 / 98 / ME).
+       2.  They call the wrapped functions via function pointers rather
+       than calling them directly.  This avoids taking advantage of the
+       undocumented fact that although these functions are not supported
+       in the 9x branch of Microsoft Windows, the functions do exist in
+       the version of advapi32.dll that is found in the 9x branch of
+       Microsoft Windows.
+
+       * w32.c (init_user_info): Replace the calls to the win32 API
+       functions OpenProcessToken, GetTokenInformation, LookupAccountSid,
+       and GetSidIdentifierAuthority with calls to the newly added
+       wrapper functions.
+
+       * w32.h: Added extern declarations for the following functions:
+       syms_of_w32term, syms_of_w32fns, syms_of_w32select,
+       syms_of_w32menu, and void syms_of_fontset.
+
+       * w32fns.c (w32_wnd_proc): Add code to reinitialize the
+       function pointer track_mouse_event_fn in the handler for the
+       WM_SETFOCUS message.
+
+       * w32menu.c (initialize_frame_menubar): Add code to
+       reinitialize the function pointers set_menu_item_info and
+       get_menu_item_info.
+
+2002-11-17  Ben Key  <BKey1@tampabay.rr.com>
+
+       * sound.c: Added a partial implementation of play-sound-internal
+       for Microsoft Windows.  Added various #ifdef / #else / #endif
+       code blocks to separate the code that will compile under
+       Microsoft Windows from the code that is specific to GNU/Linux.
+       Moved several blocks of code around to make this separation of code
+       into Windows compatible and GNU/Linux compatible code blocks easier.
+
+       * makefile.w32-in: Include sound.c and link with WinMM.lib.
+
+       * s/ms-w32.h: Defined the symbol HAVE_SOUND so that the newly
+       added support for play-sound-internal under Windows would be
+       included in the build of Emacs.
+
+2002-11-16  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_load_system_font): Don't disable Cleartype.
+
+       * w32term.c (w32_get_glyph_string_clip_rect): Clip cursor tightly.
+
+2002-11-15  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (command_loop_1): Fix int/Lisp_Object mixup.
+       (adjust_point_for_property): Move out of display and invisible even if
+       we were already inside before (in case a property was added while
+       we weren't looking).  Be more careful when handling invisible props.
+       Skip invisible text as if it really wasn't there at all.
+
+2002-11-15  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_draw_image_foreground)
+       (w32_draw_image_foreground_1): Use standard copy and invert
+       operations to draw images.
+
+       * w32fns.c (x_create_x_image_and_pixmap): Fill in palette for
+       depth of 1.
+       (xbm_read_bitmap_data): Invert bits as xbm is read in.
+       (XPutPixel): Don't invert bits here.
+
+2002-11-15  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_draw_image_foreground, x_draw_image_glyph_string)
+       (w32_draw_image_foreground_1): Handle image masks.
+       (x_draw_image_glyph_string): Don't BitBlt transparently.
+
+       * w32fns.c (w32_defined_color): Adjust RGB values for Emacs.
+       (x_from_xcolors): Adjust RGB values for W32.
+       (image_background, image_background_transparent)
+       (postprocess_image, x_to_xcolors, x_disable_image)
+       (x_build_heuristic_mask): Adapt for W32 and enable.
+       (x_create_x_image_and_pixmap): Mark images with palettes as such.
+       (xbm_load): Remove unused variable.
+
+2002-11-14  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (syms_of_buffer): Doc fix.
+
+2002-11-14  Dave Love  <fx@gnu.org>
+
+       * alloc.c (SETJMP_WILL_NOT_WORK): Add note.
+
+       * xterm.c (x_draw_relief_rect, x_draw_box_rect, x_update_cursor):
+       * xmenu.c (unuse_menu_items, digest_single_submenu):
+       * xfns.c (x_put_x_image):
+       * xdisp.c (message2_nolog, set_message):
+       * undo.c (record_point):
+       * terminfo.c (tparam):
+       * syntax.c (scan_sexps_forward):
+       * scroll.c (calculate_scrolling, calculate_direct_scrolling):
+       * composite.c (update_compositions):
+       * cm.c (calccost, cmgoto):
+       * charset.c (c_string_width): Declare all args (per C99).
+
+       * frame.h (get_specified_cursor_type, get_window_cursor_type): Declare.
+
+       * lisp.h (get_specified_cursor_type, get_window_cursor_type):
+       Don't declare.
+
+       * emacs.c (main) [!VMS]: Avoid third arg.
+
+       * fns.c (Fcopy_sequence): Doc fix.
+       (Fmap_char_table): Cast `call2'.
+
+2002-11-14  Francesco Potort\e,Al\e(B  <pot@gnu.org>
+
+       * s/sol2-8.h: New file.
+
+2002-11-14  Kim F. Storm  <storm@cua.dk>
+
+       * buffer.c (syms_of_buffer) <mode-line-format>: Document symbol
+       dependency on `risky-local-variable' and the :propertize form.
+
+2002-11-12  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * fns.c (Fmap_char_table): Don't use map_char_table's function arg.
+
+       * syntax.c (scan_sexps_forward): Undo last patch.
+       Use a more obvious fix: check eob before updating the syntax table.
+
+2002-11-09  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * syntax.c (scan_sexps_forward): Update syntax table before reading
+       a char rather than after so we don't update the table past eob.
+
+2002-11-09  Dave Love  <fx@gnu.org>
+
+       * buffer.c (Fset_buffer_major_mode): Fix last change.
+
+       * regex.c (regexec): Fix pmatch declaration.
+
+       * cmds.c (Fself_insert_command): Apply Vtranslation_table_for_input.
+
+       * keyboard.c (command_loop_1): Apply Vtranslation_table_for_input
+       to self-inserting characters.
+       (syms_of_keyboard) <keyboard-translate-table>: Doc fix.
+
+       * coding.c (Vtranslation_table_for_input): New.
+       (syms_of_coding): DEFVAR it.
+
+2002-11-08  Juanma Barranquero  <lektu@terra.es>
+
+       * w32term.c (w32_draw_fringe_bitmap): Remove unused local variable
+       window.
+
+2002-11-08  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * process.c (Fformat_network_address): Remove unused locals p,
+       cp, and i.
+
+2002-11-06  Dave Love  <fx@gnu.org>
+
+       * buffer.c (Qset_buffer_major_mode_hook): New.
+       (Fset_buffer_major_mode): Use it.
+
+2002-11-06  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (x_term_init): Use turn_on_atimers, not start_polling
+       and stop_polling.
+
+       * process.c (wait_reading_process_input):
+       Test POLLING_PROBLEM_IN_SELECT, not hpux.
+       Avoid initialization for auto Lisp_Object var.
+
+       * s/hpux11.h (POLLING_PROBLEM_IN_SELECT): Add #undef.
+
+       * s/hpux10.h (POLLING_PROBLEM_IN_SELECT): Defined.
+
+2002-11-05  Richard M. Stallman  <rms@gnu.org>
+
+       * s/sol2-5.h (BROKEN_SIGIO): Turn off the #undef.
+
+       * callint.c (Fcall_interactively): New local filter_specs.
+       (Fcall_interactively): Check for progn as well as let.
+       Add a gcpro.
+       (Qprogn): New variable.
+       (syms_of_callint): Staticpro and init Qprogn.
+
+2002-11-04  John Paul Wallington  <jpw@shootybangbang.com>
+
+       * lread.c (Feval_buffer): Doc fix.
+
+2002-11-04  Dave Love  <fx@gnu.org>
+
+       * keyboard.c (read_char): Always translate iff
+       Vkeyboard_translate_table is a char table and c is valid.
+
+       * xterm.c (XTread_socket): Check Lisp types for Vx_keysym_table
+       and fix C types.
+
+2002-11-03  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xdisp.c (single_display_prop_intangible_p): Strings are intangible.
+
+       * editfns.c (get_pos_property): Don't hardcode Qfield.
+
+       * keyboard.c (adjust_point_for_property): Handle `display' prop on
+       overlays.  Also handle `invisible' prop.
+
+2002-11-02  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * coding.c (decode_coding_emacs_mule, decode_coding_iso2022)
+       (decode_coding_sjis_big5, decode_eol): Allow lone \r in DOS EOL.
+
+2002-11-01  Andreas Schwab  <schwab@suse.de>
+
+       * editfns.c (Fmessage): Revert last change to properly handle %%.
+
+2002-11-01  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xmenu.c (unuse_menu_items): New fun.
+       (menu_items_inuse): New var.
+       (syms_of_xmenu): Initialize it.
+       (init_menu_items): Use it to detect re-entrance.
+       (Fx_popup_menu, Fx_popup_dialog, set_frame_menubar): Reset when done.
+       (Fx_popup_menu): Remove spurious XSETFRAME.
+
+       * editfns.c (find_field): Make an exception for nil fields.
+
+2002-11-01  Dave Love  <fx@gnu.org>
+
+       * m/gec63.h: Deleted.
+
+2002-10-31  Dave Love  <fx@gnu.org>
+
+       * xterm.c (XTread_socket): Fix last change.
+       (xaw_scroll_callback): Cast call_data to long to avoid warning.
+
+2002-10-31  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * process.c (Fformat_network_address): Fix int/Lisp_Object mixup.
+
+2002-10-30  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * editfns.c (overlays_around, get_pos_property): New funs.
+       (find_field): Use them.
+       Also be careful not to modify POS before its last use.
+       (Fmessage): Don't Fformat if there's nothing to format.
+
+2002-10-30  Dave Love  <fx@gnu.org>
+
+       * process.c [HAVE_SYS_WAIT]: Include sys/wait.h.
+       [HAVE_PTY_H]; Include pty.h.
+
+       * lread.c (Fload) <!load_dangerous_libraries>: Close fd.
+
+       * xterm.c (Qeql): Declare.
+       (Vx_keysym_table): New.
+       (syms_of_xterm): Initialize it.
+       (XTread_socket): Use it.  Deal with ASCII keysyms.
+       (XSetIMValues) [HAVE_X11R6]: Prototype.
+
+       * keyboard.c (lispy_accent_codes, lispy_accent_keys): Extended.
+       (lispy_kana_keys): Comment out.
+       (make_lispy_event) [XK_kana_A]: Comment out.
+       (modify_event_symbol) <sizeof (long) == sizeof (EMACS_INT)>:
+       Fix sprintf call.
+
+       * s/osf5-0.h (C_SWITCH_SYSTEM): Revert last change (fixed by
+       regexp.h change).
+       (TERMINFO, LIBS_TERMCAP): Define.
+
+       * s/usg5-4.h (bcopy, bzero): Define conditional on HAVE_BCOPY.
+       (bcmp): Define conditional on HAVE_BCMP.
+       (NO_SIOCTL_H): Don't define.
+       (TIOCSIGSEND): Don't make conditional on IRIX6.
+
+       * s/sol2-5.h: Don't include strings.h.
+       (bcopy, bzero, bcmp) [HAVE_BCOPY]: Don't undef.
+
+       * s/irix6-0.h (IRIX6): Don't define.
+       (bcopy, bcmp, bzero): Don't undef.
+
+       * s/irix6-5.h: Don't include strings.h.
+       (IRIX6): Don't define.
+       (bcopy, bcmp, bzero): Don't undef.
+
+       * syntax.c (Fforward_comment): Doc fix.
+
+2002-10-29  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fsignal_process): Allow PROCESS to be specified by
+       name in addition to pid (as integer or string).
+
+2002-10-28  Harald Maier  <Harald.Maier.BW@t-online.de>  (tiny change)
+
+       * w32heap.c: Don't redefine _heap_init and _heap_term on MSVC 7 build
+       environments.
+
+2002-10-27  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (note_mouse_highlight): Don't use mouse-face if hidden.
+
+       * w32term.c (note_mouse_highlight): Don't use mouse-face if hidden.
+
+       * msdos.c (IT_note_mouse_highlight): Don't use mouse-face if hidden.
+
+       * macterm.c (note_mouse_highlight): Don't use mouse-face if hidden.
+
+2002-10-26  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fformat): Detect invalid format letters for floats.
+
+2002-10-25  Kenichi Handa  <handa@m17n.org>
+
+       * xfns.c (x_set_name): Encode by Qcompound_text unconditionally.
+       (x_set_title): Likewise.
+
+2002-10-25  Juanma Barranquero  <lektu@terra.es>
+
+       * macgui.h:
+       * w32gui.h: Remove definition of XColor.
+
+       * dispextern.h [!HAVE_X_WINDOWS]: Define XColor.
+
+2002-10-24  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (get_window_cursor_type): New arg ACTIVE_CURSOR.
+       Callers changed (supply dummy arg).
+
+       * lisp.h (get_window_cursor_type): Update prototype.
+
+       * w32term.c (x_display_and_set_cursor): Get active_cursor from
+       get_window_cursor_type to track system caret.
+
+2002-10-24  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Fformat_network_address): New function.
+       (syms_of_process): Defsubr it.
+       (list_processes_1): Use it to format :local/:remote address if
+       service/host is not set; before Emacs would crash in that case.
+       (Fmake_network_process): Don't use Ffind_operation_coding_system
+       to setup coding system if host or service is not set.
+
+2002-10-23  Juanma Barranquero  <lektu@terra.es>
+
+       Patch suggested by Jay Finger <jay_finger@hotmail.com>.
+
+       * w32term.c (w32_term_init): Pass XColor to w32_define_color, not
+       COLORREF.
+
+       * macgui.h:
+       * w32gui.h: Add definition of XColor.
+
+       * macfns.c:
+       * w32fns.c:
+       * xfaces.c: Remove definition of XColor.
+
+2002-10-22  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xfns.c (x_set_name, x_set_title): `icon.value' has unsigned char.
+
+       * window.c (window_loop): For GET_LRU_WINDOW and GET_LARGEST_WINDOW>,
+       Only ignore truly dedicated windows.  For UNSHOW_BUFFER, delete the
+       window if it is dedicated.
+       (Fshrink_window): Add preserve_before as was done for enlarge_window.
+       (Vspecial_display_function): Update docstring.
+
+       * buffer.c (assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
+       (call_overlay_mod_hooks): Use CONSP and XCAR/XCDR.
+       (Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE.
+
+2002-10-21  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * casefiddle.c (casify_region): Don't treat a prefix char as part
+       of a word when at the beginning.
+
+2002-10-17  Juanma Barranquero  <lektu@terra.es>
+
+       * lread.c (syms_of_lread): Fix typos.
+
+2002-10-17  Dave Love  <fx@gnu.org>
+
+       * Makefile.in (TEMACS_LDFLAGS): Add trailing comment.
+
+2002-10-16  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fcopy_file): Fix backward test of KEEP_TIME.
+
+2002-10-14  Juanma Barranquero  <lektu@terra.es>
+
+       * w16select.c (syms_of_win16select): Fix docstring for
+       `selection-coding-system'.
+
+       * w32select.c (syms_of_w32select): Likewise.
+
+2002-10-14  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * syntax.c (scan_lists): Don't get fooled by a symbol ending with
+       a backslash-quoted char.
+       (scan_lists, scan_sexps_forward): Pacify the compiler.
+
+2002-10-13  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (window_scroll): Set immediate_quit.
+
+       * print.c (print): When backquote form is the car of a list,
+       output in old style.  Use old_backquote_output to output all
+       comma forms inside it in old style too.
+
+       * buffer.h (struct buffer): Move `undo_list' down below `name'.
+
+2002-10-11  Markus Rost  <rost@math.ohio-state.edu>
+
+       * emacs.c (syms_of_emacs) <kill-emacs-hook>: Doc fix (not run in
+       batch mode).
+
+       * lread.c (Fload): Doc fix (load-suffixes).
+
+2002-10-10  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (syms_of_macterm, mac_get_mouse_btn):
+       Reverse functionality of mac-wheel-button-is-mouse-2 to be correct.
+       Also switch the default to Qnil from Qt.
+
+2002-10-08  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (code_convert_region): When we need more GAP for
+       conversion, pay attention to the case that coding->produced is not
+       greater than coding->consumed.
+
+2002-10-07  Richard M. Stallman  <rms@gnu.org>
+
+       * unexelf.c (unexec): Redo 9/16 change, but only if IRIX6_5.
+
+2002-10-06  Andrew Choi  <akochoi@shaw.ca>
+
+       * macmenu.c (mac_menu_show): Add j to count menu items; match
+       menu_item_selection to it to find selected item.
+
+2002-10-06  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (XTread_socket): Fix from 2002-10-03 didn't cover all
+       cases.  The correct fix is to pass ReparentNotify to Xt.
+       The shell widget interprets ConfigureNotify differently depending
+       on if it has been reparented or not.
+
+2002-10-05  Markus Rost  <rost@math.ohio-state.edu>
+
+       * editfns.c (Fformat_time_string): Doc fix.
+
+2002-10-05  John Paul Wallington  <jpw@shootybangbang.com>
+
+       * fns.c (Flength): Doc fix.
+
+2002-10-04  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (keyremap): New struct.
+       (read_key_sequence): Use it: globally replace keytran_foo with
+       keytran.foo and fkey_foo with fkey.foo.  Rename temp vars
+       keytran_next and fkey_next to just `next'.
+
+2002-10-04  Steven Tamm  <steventamm@mac.com>
+
+       * macterm.c (keycode_to_xkeysym_table): Change return to be
+       treated like an X keysym.
+
+2002-10-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (XTread_socket): For ConfigureNotify, with x and y == 0,
+       and USE_MOTIF, call XTranslateCoordinates to get the real x and y.
+       This is to also handle x/y changes that occur because of a resize.
+
+2002-10-02  John Paul Wallington  <jpw@shootybangbang.com>
+
+       * frame.c (Vdelete_frame_functions): New variable.
+       (syms_of_frame): Initialize and defvar it.
+       (Fdelete_frame): Use it instead of delete-frame-hook.  Don't run
+       it when frame's `tooltip' parameter is non-nil.
+
+       * xfns.c (x_create_tip_frame): Set `tooltip' frame parameter to t.
+
+       * w32fns.c (x_create_tip_frame): Likewise.
+
+       * macfns.c (x_create_tip_frame): Likewise.
+
+2002-09-30  Kenichi Handa  <handa@m17n.org>
+
+       * xterm.c (x_encode_char): For DIM=1 charset, set ccl->reg[2] to
+       -1 before calling ccl_driver.
+
+       * coding.c (decode_coding_emacs_mule): Check coding->cmp_data.
+       Only when it is non-nil, handle composition sequence.
+       (setup_coding_system) <0>: Don't force composition handling.
+
+       * Makefile.in (lisp, shortlisp): Add utf-16.elc.
+
+2002-09-29  Richard M. Stallman  <rms@gnu.org>
+
+       * search.c (Freplace_match): Adjust match data for the substitution
+       just made in the buffer.
+
+       * xdisp.c (STOP_POLLING, RESUME_POLLING): New macros.
+       (redisplay_internal): Use them.  Do RESUME_POLLING at end of function.
+
+2002-09-27  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (STOP_POLLING, RESUME_POLLING): New macros.
+       (read_char): Use them.  Do all exits thru the end of the function.
+
+2002-09-27  Kenichi Handa  <handa@etl.go.jp>
+
+       * xfaces.c (try_font_list): Pay attention to the case that FAMILY
+       is nil.
+
+2002-09-26  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.h (__restrict_arr): Don't define if already defined.
+
+       * coding.c (run_pre_post_conversion_on_str):
+       Save and restore Vdeactivate_mark.
+
+2002-09-26  John Paul Wallington  <jpw@shootybangbang.com>
+
+       * minibuf.c (Fminibufferp): Add an optional `buffer' argument.
+
+2002-09-26  Kenichi Handa  <handa@etl.go.jp>
+
+       * xfaces.c (try_font_list): New arg PREFER_FACE_FAMILY.  If it is
+       nonzero, try face's family at first.  Otherwise try FAMILY at first.
+       (choose_face_font): If C is a single byte char or latin-1, call
+       try_font_list with PREFER_FACE_FAMILY 1.
+
+2002-09-21  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (select_window_1): Don't select frame.
+       Set frame's selected window only when frame itself is selected.
+       (Fselect_window): Doc fix.
+
+2002-09-18  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (make-network-process): Doc fix (there is no
+       network-server-log-function hook).
+
+2002-09-18  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (print): Clear out the unused parts of Vprint_number_table.
+       (syms_of_print): Doc fix for `print-number-table'.
+
+       * unexelf.c (unexec): Undo previous change.
+
+2002-09-17  Andreas Schwab  <schwab@suse.de>
+
+       * m/alpha.h [LINUX]: Don't define DATA_START.
+
+2002-09-16  Dave Love  <fx@gnu.org>
+
+       * unexelf.c (unexec): Deal with .got, reinstating change from
+       25-08-1999.
+
+2002-09-13  Richard M. Stallman  <rms@gnu.org>
+
+       * s/sol2-6.h (UNEXEC): Comment out definition.
+
+       * unexsol.c (unexec): Don't downcase first letter of error msg.
+
+       * xfaces.c (Fcolor_supported_p): Just one arg is required.
+
+2002-09-12  Markus Rost  <rost@math.ohio-state.edu>
+
+       * unexsol.c: Include buffer.h, charset.h, coding.h.
+
+2002-09-11  Richard M. Stallman  <rms@gnu.org>
+
+       * unexsol.c: Don't use report_file_error; do it by hand
+       using dlerror.
+
+       * process.c (wait_reading_process_input, both versions):
+       Before calling turn_on_atimers, call stop_polling.
+
+       * emacs.c (syms_of_emacs) <command-line-args>: Doc fix.
+
+       * xdisp.c (try_scrolling): If after make_cursor_line_fully_visible
+       we go to too_near_end, call clear_glyph_matrix.
+       (redisplay_window): After make_cursor_line_fully_visible,
+       call clear_glyph_matrix and bypass `goto done'.
+
+       * xfns.c (x_report_frame_params): If FRAME_SCROLL_BAR_PIXEL_WIDTH is 0
+       and we have non-toolkit scroll bars, return nil for scroll-bar-width.
+
+2002-09-10  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fdo_auto_save): Catch error making directory.
+       Only call push_message if we need to.
+       At the same time, make an unwind-protect to pop it.
+       Rename local message_p to old_message_p.
+       (do_auto_save_make_dir, do_auto_save_eh): New functions.
+       (do_auto_save_unwind): Don't call pop_message.
+
+       * lisp.h (pop_message_unwind): Renamed from push_message_unwind.
+
+       * keyboard.c (Fexecute_extended_command): Use pop_message_unwind.
+
+       * alloc.c (Fgarbage_collect): Use pop_message_unwind.
+
+       * xdisp.c (pop_message_unwind): Renamed from push_message_unwind.
+
+2002-09-10  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * regex.c (DISCARD_FAILURE_REG_OR_COUNT): Delete.
+       (CHECK_INFINITE_LOOP): Don't pop anything: just set `cycle' to 1.
+       (re_match_2_internal): Be more careful with infinite loops.
+
+2002-09-10  Kim F. Storm  <storm@cua.dk>
+
+       * macros.c (end_kbd_macro): New function.
+       (Fend_kbd_macro): Use it.
+
+       * macros.h (end_kbd_macro): Declare extern.
+
+       * keyboard.c (Fdiscard_input): If defining keyboard macro,
+       end and save it instead of discarding it.
+
+2002-09-09  Markus Rost  <rost@math.ohio-state.edu>
+
+       * s/sol2-6.h: Fix typo.  Add comment.
+
+2002-09-09  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.c (regnum_t): Use signed int, not unsigned int.
+
+       * s/sol2-6.h: New file.
+
+       * s/sol2-5.h (UNEXEC): Definition deleted.
+
+2002-09-08  Kim F. Storm  <storm@cua.dk>
+
+       * macros.c (executing_macro_index): Change type to EMACS_INT.
+       (syms_of_macros): DEFVAR_INT it (needed by kmacro).
+
+       * macros.h (executing_macro_index): Change type to EMACS_INT.
+
+2002-09-06  Richard M. Stallman  <rms@gnu.org>
+
+       * casetab.c (set_case_table): Make canon table point to eqv table.
+
+2002-09-06  Juanma Barranquero  <lektu@terra.es>
+
+       * coding.c (syms_of_coding): Fix spacing.
+
+       * composite.c (Fcompose_region_internal)
+       (Fcompose_string_internal): Likewise.
+
+       * data.c (Flsh): Likewise.
+
+       * fontset.c (Fset_fontset_font): Likewise.
+
+       * macfns.c (Fx_server_max_request_size): Likewise.
+
+       * w16select.c (syms_of_win16select): Likewise.
+
+       * w32select.c (syms_of_w32select): Likewise.
+
+       * xselect.c (syms_of_xselect): Likewise.
+
+2002-09-05  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.c (set_image_of_range_1): In no-TRANSLATE case,
+       call EXTEND_RANGE_TABLE and return a proper value.
+       (set_image_of_range): Don't call set_image_of_range_1
+       if no TRANSLATE or if range includes all of Latin-1.
+       Only call it for the Latin-1 part of the range.
+       For other cases, make two separate ranges,
+       one for the original specified characters and one for
+       their case-conversions.
+
+2002-09-04  Richard M. Stallman  <rms@gnu.org>
+
+       * s/sol2-5.h (UNEXEC): Use unexsol.o.
+
+       * window.c (displayed_window_lines): Correct for one-off bug
+       in HEIGHT on non-window displays.
+
+       * regex.c (set_image_of_range_1): New function.
+       (set_image_of_range): Use set_image_of_range_1 for Latin-1.
+       Return a value to indicate running out of memory.
+       (SET_RANGE_TABLE_WORK_AREA): Check value from set_image_of_range.
+       (extend_range_table_work_area): New subroutine.
+       (EXTEND_RANGE_TABLE): Replaces EXTEND_RANGE_TABLE_WORK_AREA.
+       Different calling conventions, and used from set_image_of_range{,_1}.
+       (IMMEDIATE_QUIT_CHECK): Definitions moved.
+
+2002-09-04  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in: All dependencies updated.
+
+2002-09-01  Richard M. Stallman  <rms@gnu.org>
+
+       * unexsol.c: New file.
+
+       * xfns.c (Qbox): Declare external, don't define.
+
+       * xdisp.c (redisplay_window) <force-start case>:
+       If point is on semi-visible last line, reposition
+       it at previous line.
+
+       * alloc.c (display_malloc_warning): Use display-warning.
+       (malloc_warning_1): Function deleted.
+
+       * alloc.c [ALLOC_DEBUG]: #undef INLINE.
+
+       * lread.c (read1): Handle #! by skipping the line.
+
+2002-08-31  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in (TEMACS_LDFLAGS): Renamed from ALL_LDFLAGS.
+       Don't include LDFLAGS.
+       (temacs): Pass LDFLAGS separately, and not via YMF_PASS_LDFLAGS.
+
+2002-08-31  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xdisp.c (get_window_cursor_type): Don't use x_highlight_frame
+       member of x_display_info unless we compile for some window system.
+
+2002-08-31  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (Valternate_cursor_type, Qalternate_cursor_type): Removed.
+       (get_window_cursor_type): Don't use them.
+       (syms_of_xdisp): Remove intern, staticpro, and defvar for them.
+
+2002-08-30  Kenichi Handa  <handa@etl.go.jp>
+
+       * xdisp.c (get_next_display_element): Fix previous change.
+
+2002-08-30  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (expose_overlaps): New function (merge code from xterm.c).
+       (expose_window): Use it to fix the display of overlapping
+       rows (merge code from xterm.c).
+
+       * macfns.c (Qbox): Add extern declaration.
+
+2002-08-30  Juanma Barranquero  <lektu@terra.es>
+
+       * w32fns.c (Qbox): Make extern.
+       (syms_of_w32fns): Remove initialization of Qbox.
+
+2002-08-30  Rune Kleveland  <runekl@viewpoint.no>  (tiny change)
+
+       * xfns.c (Fx_open_connection): Fix error message.
+
+2002-08-30  Kim F. Storm  <storm@cua.dk>
+
+       The following changes consolidates the handling of the cursor
+       type in xdisp.c, moving duplicate code and functionality from
+       xfns.c, xterm.c, w32fns.c, w32term.c, macfns.c, and macterm.c.
+
+       * frame.h (enum text_cursor_kinds): Consolidated here.
+       Added DEFAULT_CURSOR value.
+       (struct frame) <desired_cursor, cursor_width>
+       <blink_off_cursor, blink_off_cursor_width>: New fields.
+       Consolidated from output_x, output_w32 and output_mac structs.
+       (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR)
+       (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros consolidated here.
+
+       * xdisp.c (Qbar, Qhbar, Qbox, Qhollow, Vblink_cursor_alist):
+       Variables consolidated here.
+       (Valternate_cursor_type, Qalternate_cursor_type): New variables.
+       (Vcursor_in_non_selected_windows): Renamed from
+       cursor_in_non_selected_windows and changed to Lisp_Object.
+       (syms_of_xdisp): Define and staticpro new and moved variables.
+       (get_specified_cursor_type): Renamed from x_specified_cursor_type;
+       consolidated here.  Recognize Qhollow setting.
+       (set_frame_cursor_types): New function to set frame cursor types
+       based on the frame parameters.
+       (get_window_cursor_type): New function to calculate new cursor
+       type and width for the specified window.  Based on duplicated
+       code consolidated here.
+       Enhancements: cursor-in-non-selected-windows may be a cursor type,
+       check buffer-local alternate-cursor-type and blink-cursor-alist
+       before using built-in blink off methods.
+
+       * dispextern.h (cursor_in_non_selected_windows): Extern removed.
+
+       * lisp.h (Qcursor_in_non_selected_windows): Extern removed.
+       (get_specified_cursor_type, get_window_cursor_type)
+       (set_frame_cursor_types): Added prototypes.
+
+       * macfns.c (x_specified_cursor_type): Removed.
+       (x_set_cursor_type): Use set_frame_cursor_types.
+       (Qbar, Qbox): Removed.
+       (syms_of_macfns): Don't intern or staticpro them.
+
+       * macterm.c (x_specified_cursor_type): Remove prototype.
+       (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH.
+       (x_display_and_set_cursor): Use get_window_cursor_type.
+       Remove unused local variables cursor_non_selected, active_cursor.
+       Redraw cursor if hbar cursor width changes.
+       (make_mac_frame): Set FRAME_DESIRED_CURSOR.
+
+       * macterm.h (enum text_cursor_kinds): Removed.
+       (struct output_mac) <current_cursor, desired_cursor, cursor_width>
+       <blink_off_cursor, blink_off_cursor_width>: Members removed.
+       (FRAME_DESIRED_CURSOR): Macro removed.
+
+       * w32fns.c (Vblink_cursor_alist): Removed.
+       (Qbar, Qhbar, Qbox, Qhollow): Removed.
+       (syms_of_w32fns): Don't intern, staticpro, or define them.
+       (x_specified_cursor_type): Removed.
+       (x_set_cursor_type): Use set_frame_cursor_types.
+
+       * w32term.c (x_specified_cursor_type): Remove prototype.
+       (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH.
+       (x_display_and_set_cursor): Use get_window_cursor_type.
+       Remove unused local variables cursor_off_state.
+       Redraw cursor if hbar cursor width changes.
+       Changed all occurrences of w32_highlight_frame to x_highlight_frame.
+
+       * w32term.h (enum text_cursor_kinds): Removed.
+       (struct output_w32) <current_cursor, desired_cursor, cursor_width>
+       <blink_off_cursor, blink_off_cursor_width>: Members removed.
+       (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR)
+       (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed.
+       (struct w32_display_info) <x_highlight_frame>: Renamed member from
+       w32_highlight_frame.
+
+       * xfns.c (Vblink_cursor_alist): Removed.
+       (Qbar, Qhbar, Qbox, Qhollow): Removed.
+       (syms_of_xfns): Don't intern, staticpro, or define them.
+       (x_specified_cursor_type): Removed.
+       (x_set_cursor_type): Use set_frame_cursor_types.
+
+       * xterm.c (x_specified_cursor_type): Remove prototype.
+       (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH.
+       (x_display_and_set_cursor): Use get_window_cursor_type.
+       Remove unused local variables cursor_off_state.
+       Redraw cursor if hbar cursor width changes.
+
+       * xterm.h (enum text_cursor_kinds): Removed.
+       (struct output_x) <current_cursor, desired_cursor, cursor_width>
+       <blink_off_cursor, blink_off_cursor_width>: Members removed.
+       (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR)
+       (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed.
+       (x_specified_cursor_type): Remove prototype.
+
+2002-08-28  Richard M. Stallman  <rms@gnu.org>
+
+       * w32fns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and
+       FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist.
+       (Vblink_cursor_alist): New variable.
+       (syms_of_w32fns): Initialize and defvar it.
+       (x_specified_cursor_type): Recognize Qbox for filled box.
+       Exceptions are hollow boxes.
+       (Qbox, Qhollow): New variables.
+       (syms_of_w32fns): Initialize and staticpro them.
+
+       * w32term.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH):
+       New macros.
+       (struct w32_output): New fields blink_off_cursor,
+       blink_off_cursor_width.
+       (FRAME_CURSOR_WIDTH): New macro.
+
+       * w32term.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR
+       and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off.
+
+       * w32term.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH
+       for bar cursor.
+
+       * w32term.c (expose_overlaps): New function.
+       (expose_window): Use it to fix the display of overlapping rows.
+
+2002-08-28  Simon Josefsson  <jas@extundo.com>
+
+       * xfns.c (Fx_open_connection): Improve help when X connection
+       fails, xhost is insecure and xauth is better.
+
+2002-08-28  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in: Add missing dependencies on w32term.h and
+       composite.h.
+
+       * emacs.c (USAGE1): Add missing newline.
+
+2002-08-27  Andrew Choi  <akochoi@shaw.ca>
+
+       * s/darwin.h [HAVE_LIBNCURSES]: Define HAVE_TERMINFO.
+
+2002-08-27  Richard M. Stallman  <rms@gnu.org>
+
+       * xfns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and
+       FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist.
+       (Vblink_cursor_alist): New variable.
+       (syms_of_xfns): Initialize and defvar it.
+       (x_specified_cursor_type): Recognize Qbox for filled box.
+       Exceptions are hollow boxes.
+       (Qbox, Qhollow): New variables.
+       (syms_of_xfns): Initialize and staticpro them.
+
+       * xterm.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH):
+       New macros.
+       (struct x_output): New fields blink_off_cursor, blink_off_cursor_width.
+
+       * xterm.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR
+       and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off.
+
+       * emacs.c (main): Handle --script.
+       (USAGE1): Mention --script.
+       (standard_args): Define sort order for --script.
+
+2002-08-27  Gerd Moellmann  <gerd.moellmann@t-online.de>
+
+       * xdisp.c (redisplay_updating_p): Variable removed.
+       (inhibit_free_realized_faces, Qinhibit_free_realized_faces):
+       New variables.
+       (init_iterator): Don't free realized faces if
+       inhibit_free_realized_faces is set.
+       (redisplay_internal): Bind Qinhibit_free_realized_faces to nil.
+       (syms_of_xdisp): DEFVAR_BOOL inhibit-free-realized-faces,
+       initialize Qinhibit_free_realized_faces.
+
+       * dispextern.h (PRODUCE_GLYPHS): Set inhibit_free_realized_faces
+       when iterator is adding glyphs to a glyph matrix.
+
+2002-08-27  Kenichi Handa  <handa@etl.go.jp>
+
+       * xdisp.c (get_next_display_element): In unibyte case, don't use
+       octal form for such eight-bit characters that can be converted to
+       multibyte char.
+
+2002-08-26  Kim F. Storm  <storm@cua.dk>
+
+       * frame.c (make_terminal_frame) [CANNOT_DUMP]: Initialize
+       foreground and background colors.  From Joe Buehler.
+
+2002-08-26  Miles Bader  <miles@gnu.org>
+
+       * bytecode.c (Fbyte_code): Fsub1 can GC, so protect it.
+
+2002-08-25  Andrew Choi  <akochoi@shaw.ca>
+
+       * emacs.c (main): Call init_mac_osx_environment if HAVE_CARBON is
+       defined instead of MAC_OSX.
+
+       * s/darwin.h (select): Define select to sys_select only if
+       HAVE_CARBON is defined.
+       (HAVE_WORKING_VFORK): #undef it.  Define vfork to fork.
+       (DONT_REOPEN_PTY): #def it.
+
+       * macterm.c (XTread_socket): Remove code to call
+       SendEventToEventTarget for keys with command modifiers when
+       mac_command_key_is_meta is nil.
+
+2002-08-24  Andreas Schwab  <schwab@suse.de>
+
+       * eval.c (Fdefvar): Fix last change.
+
+2002-08-23  Richard M. Stallman  <rms@gnu.org>
+
+       * eval.c (Fdefvar, Fdefconst, Fdefvaralias):
+       Record variables in load history as (defvar . VAR).
+       (Fdefvar): Don't record in load history if no initial value.
+       (Qdefvar): New variable.
+       (syms_of_eval): Init and staticpro it.
+
+       * lread.c (syms_of_lread): Doc fix.
+       (build_load_history): Use Fmember to see if a definition
+       is already in the Vload_history element.
+
+       * process.c (Fstart_process): Remove /: from program name.
+
+       * emacs.c (decode_env_path): Don't add /: if file name handler
+       has a `safe-magic' property.
+
+       * callproc.c (Fcall_process): Remove /: from program name.
+
+2002-08-23  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * regex.c (PATFETCH): Remove the translating fetch.
+       (PATFETCH_RAW): Rename to PATFETCH.
+       (set_image_of_range): New fun.
+       (SET_RANGE_TABLE_WORK_AREA): Use it.
+       (regex_compile): Don't translate the pattern chars so eagerly.
+       Only do it when inserting an `exactn' bytecode or when handling
+       a char-range.
+       (mutually_exclusive_p): Avoid empty statement.
+
+2002-08-22  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Do not `goto try_to_scroll' when we
+       end up on a partially visible line; this reverts a specific part
+       of the 2002-07-07 change by Richard M. Stallman to "fix" a nasty
+       display error which has been reported several times now.
+       However it introduces the problem that changes was supposed to fix.
+       See my comments in the source if you want to debug this further.
+
+2002-08-20  Kenichi Handa  <handa@etl.go.jp>
+
+       * abbrev.c (Fexpand_abbrev): Fix for the multibyte case.
+
+2002-08-19  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (croak): Add `void' to definition.
+
+       * sysdep.c (request_sigio, unrequest_sigio) [MSDOS]:
+       Don't define them, they are defined in msdos.c.
+
+       * mem-limits.h [MSDOS]: Declare etext.
+
+       * fileio.c (Ffile_name_directory) [DOS_NT]: Don't declare `beg'
+       `const' since CORRECT_DIR_SEPS modifies its target.
+
+2002-08-19  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (Fclear_this_command_keys): Add optional arg
+       KEEP-RECORD to avoid clearing lossage when we just want to clear
+       the current key sequence (kmacro needs this).
+
+2002-08-19  Kenichi Handa  <handa@localhost>
+
+       * composite.c (run_composition_function): Call FUNC if it is fboundp.
+
+       * composite.h (COMPOSITION_MODIFICATION_FUNC): If PROP is not a
+       cons, return Qnil.
+
+2002-08-17  Richard M. Stallman  <rms@gnu.org>
+
+       * s/sol2-5.h (BROKEN_SIGIO): Add #undef.
+
+       * sysdep.c [!VMS]: Include sys/files.h.
+
+       * editfns.c (save_restriction_restore): Defend from unchained marker.
+
+       * buffer.c (overlays_at): Handle extending vec uniformly.
+       (overlays_in): Handle extending vec from length 0 as in overlays_at.
+
+2002-08-15  Andrew Choi  <akochoi@shaw.ca>
+
+       * mac.c (init_mac_osx_environment): New function.
+
+       * emacs.c (main) [MAC_OSX]: Call init_mac_osx_environment.
+
+2002-08-14  Kim F. Storm  <storm@cua.dk>
+
+       * macros.c (Fstart_kbd_macro): Added NO-EXEC argument to inhibit
+       executing macro before appending to it (when used from Lisp).
+       (Fexecute_kbd_macro): Added LOOPFUNC argument to supply function
+       which is called prior to each iteration of macro (for kmacro.el).
+       (Fend_kbd_macro, Fcall_last_kbd_macro): Likewise.
+
+       * lisp.h (Fexecute_kbd_macro): Update prototype.
+
+       * keyboard.c (Fcommand_execute): Update call to Fexecute_kbd_macro.
+
+2002-08-14  Kenichi Handa  <handa@etl.go.jp>
+
+       * xselect.c (QUTF8_STRING): New variable.
+       (symbol_to_x_atom): Pay attention to QUTF8_STRING.
+       (x_atom_to_symbol): Likewise.
+       (x_get_local_selection): New argument local_request.  If it is
+       nonzero, call handler_fn with the second arg nil.
+       (x_handle_selection_request): Call x_get_local_selection with
+       local_request 0.
+       (lisp_data_to_selection_data): Don't encode the string here.
+       (Fx_get_selection_internal): Call x_get_local_selection with
+       local_request 1.
+       (syms_of_xselect): Intern and staticpro QUTF8_STRING.
+
+       * xterm.c (x_term_init): Initialize dpyinfo->Xatom_UTF8_STRING.
+
+       * xterm.h (struct x_display_info): New member Xatom_UTF8_STRING.
+
+2002-08-13  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (Fminibufferp): New function.
+       (syms_of_minibuf): Defsubr it.
+       (Fminibuffer_prompt_end): Handle non-minibuffers specially.
+
+2002-08-13  Gerd Moellmann  <gerd.moellmann@t-online.de>
+
+       * coding.c (Funencodable_char_position): Lisp_Object/int mixup.
+
+2002-08-12  Richard M. Stallman  <rms@gnu.org>
+
+       * syswait.h: Only the include of sys/wait.h tests HAVE_SYS_WAIT_H.
+       [!VMS] (WCOREDUMP, WEXITSTATUS, WIFEXITED, WIFSTOPPED, WIFSIGNALED)
+       (WSTOPSIG, WTERMSIG): Define each one independently if not defined
+       already.
+
+       * buffer.c (syms_of_buffer) <fill-column>: Doc fix.
+
+2002-08-11  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (XTmouse_position): Check wp with is_emacs_window.
+       (Vmac_pass_command_to_system): New variable.
+       (Vmac_pass_control_to_system): New variable.
+       (do_mouse_moved): Check wp with is_emacs_window.
+       (XTread_socket): Check window_ptr with is_emacs_window.
+       Call FrontNonFloatingWindow instead of FrontWindow.  Send keydown
+       events back to Mac Toolbox for processing, depending on values of
+       Vmac_pass_command_to_system and Vmac_pass_control_to_system.
+       (syms_of_macterm): DEFVAR_LISP Vmac_pass_command_to_system and
+       Vmac_pass_control_to_system.
+
+2002-08-10  Kenichi Handa  <handa@etl.go.jp>
+
+       * coding.c (unencodable_char_position): New function.
+       (Funencodable_char_position): New function.
+       (syms_of_coding): Defsubr Funencodable_char_position.
+
+2002-08-10  Andrew Choi  <akochoi@shaw.ca>
+
+       * mac.c (sys_select) [MAC_OSX]: New function.
+
+       * macterm.c (MakeMeTheFrontProcess): New function.
+       (mac_initialize): Call MakeMeTheFrontProcess.
+
+       * s/darwin.h: Define select to sys_select.
+
+2002-08-09  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (make_lispy_event): Test WINDOWSNT, not WINDOWS_NT.
+
+2002-08-09  Gerd Moellmann  <gerd.moellmann@t-online.de>
+
+       * xdisp.c (forward_to_next_line_start): Return 0 when reaching the
+       end of the buffer.
+
+2002-08-08  Ken Raeburn  <raeburn@gnu.org>
+
+       * coding.c (Ffind_operation_coding_system): Fix Lisp_Object/int mixup.
+
+       * puresize.h (BASE_PURESIZE): Increase to 910000.
+
+2002-08-08  Kenichi Handa  <handa@etl.go.jp>
+
+       * coding.c (Ffind_operation_coding_system): For write-region, if
+       VISIT is a filename, make it the target.
+
+2002-08-07  Richard M. Stallman  <rms@gnu.org>
+
+       * alloc.c (mark_object): Detect long lists for debugging.
+       (mark_object_loop_halt): New variable.
+
+       * s/hpux10.h (C_SWITCH_SYSTEM): #undef it.
+
+       * data.c (Fmake_variable_frame_local): Doc fix.
+
+2002-08-01  David Ponce  <david@dponce.com>
+
+       * w32menu.c (local_heap, local_alloc, local_free): New macros.
+       (malloc_widget_value, free_widget_value)
+       (w32_free_submenu_strings): Use them.
+
+       (push_submenu_start, push_submenu_end, push_left_right_boundary)
+       (push_menu_pane, push_menu_item, single_keymap_panes)
+       (single_menu_item, Fx_popup_menu, menubar_selection_callback)
+       (single_submenu, set_frame_menubar)
+       (w32_menu_show, w32_dialog_show): Use AREF, ASET, ASIZE.
+
+       (Fx_popup_menu): Don't show pop up menu until preceding one is
+       actually cleaned up.  Moved UNGCPRO outside #ifdef HAVE_MENUS block.
+
+       * w32menu.c: Changes adapted from xmenu.c
+       (set_frame_menubar): First parse all submenus,
+       then make widget_value trees from them.
+       Don't allocate any widget_value objects
+       until we are done with the parsing.
+       (parse_single_submenu): New function.
+       (digest_single_submenu): New function.
+       (single_submenu): Function deleted, replaced by those two.
+
+2002-08-04  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (XTread_socket): Check that FrontNonFloatingWindow
+       returns a valid window pointer before proceeding for keyDown and
+       autoKey events.
+
+2002-08-03  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (USE_CARBON_EVENTS): New macro.
+       (macCtrlKey, macShiftKey, macMetaKey, macAltKey): New macros.
+       (x_iconify_frame): Call CollapseWindow.
+       (Vmac_reverse_ctrl_meta): New variable.
+       (Vmac_wheel_button_is_mouse_2): New variable.
+       (init_mac_drag_n_drop): New function.
+       (mac_do_receive_drag): New function.
+       (mac_handle_service_event): New function.
+       (init_service_handler): New function.
+       (mac_to_emacs_modifiers): New function.
+       (mac_event_to_emacs_modifiers): New function.
+       (mac_get_mouse_btn): New function.
+       (mac_convert_event_ref): New function.
+       (XTread_socket) [USE_CARBON_EVENTS]: Call ReceiveNextEvent,
+       SendEventToEventTarget, mac_event_to_emacs_modifiers, and
+       mac_get_mouse_btn.
+       (mac_initialize): Call init_mac_drag_n_drop and init_service_handler.
+
+       * keyboard.c: Define Qmouse_wheel, mouse_wheel_syms, and
+       lispy_mouse_wheel_names for MAC_OSX as well as for WINDOWS_NT.
+       (kbd_buffer_get_event): Set used_mouse_menu for MENU_BAR_EVENT and
+       TOOL_BAR_EVENT for MAC_OS as well.
+       (make_lispy_event): Handle MOUSE_WHEEL_EVENT for MAC_OSX as well
+       as for WINDOWS_NT.
+       (syms_of_keyboard): Initialize Qmouse_wheel for MAC_OSX.
+
+       * termhooks.h (event_kind): Define MOUSE_WHEEL_EVENT also for MAC_OSX.
+
+2002-08-03  Gerd Moellmann  <gerd.moellmann@t-online.de>
+
+       * xdisp.c (forward_to_next_line_start): Fix a condition that
+       lead to a newline being skipped.
+
+2002-08-02  Andrew Choi  <akochoi@shaw.ca>
+
+       * mac.c (syms_of_mac): Defsubr Sx_selection_exists_p.
+
+2002-08-01  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in (SOME_MACHINE_OBJECTS): Add fontset.o.
+
+2002-07-31  Andrew Choi  <akochoi@shaw.ca>
+
+       * macfns.c: #undef init_process before #define-ing it.
+
+       * s/darwin.h: Define MAC_OS, SYMS_SYSTEM, and OTHER_FILES only if
+       HAVE_CARBON is defined.
+
+2002-07-31  Richard M. Stallman  <rms@gnu.org>
+
+       * xmenu.c (set_frame_menubar): First parse all submenus,
+       then make widget_value trees from them.
+       Don't allocate any widget_value objects
+       until we are done with the parsing.
+       (parse_single_submenu): New function.
+       (digest_single_submenu): New function.
+       (single_submenu): Function deleted, replaced by those two.
+
+2002-07-30  Juanma Barranquero  <lektu@terra.es>
+
+       * w32proc.c (syms_of_ntproc): Fix docstring of
+       `w32-get-true-file-attributes'.
+
+2002-07-28  Richard M. Stallman  <rms@gnu.org>
+
+       * s/hpux8.h (HPUX8): Define this before including hpux.h.
+       (HAVE_SYS_WAIT_H): #define deleted; we let Autoconf decide.
+
+       * s/hpux.h (HAVE_SYS_WAIT_H): The #undef is conditional on HPUX8.
+
+       * keyboard.c (make_lispy_event):
+       Use #ifdef to test USE_TOOLKIT_SCROLL_BARS.
+       Explicitly clear up_modifier in event->modifiers.
+
+2002-07-27  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.h (FRAME_CURSOR_WIDTH): New macro.
+
+       * xterm.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH
+       for bar cursor.
+
+2002-07-26  Kenichi Handa  <handa@etl.go.jp>
+
+       * coding.c (detect_coding_iso2022): While checking a byte sequence
+       for CODING_CATEGORY_MASK_ISO_8_2, if we read one extra byte, check
+       it in the normal loop.
+
+2002-07-24  Gerd Moellmann  <gerd.moellmann@t-online.de>
+
+       * xterm.c (expose_overlaps): New function.
+       (expose_window): Use it to fix the display of overlapping rows.
+
+       * xdisp.c (unwind_redisplay): Clear redisplay_updating_p.
+
+2002-07-23  Ken Raeburn  <raeburn@gnu.org>
+
+       * lisp.h (XPNTR): Use NO_UNION_TYPE version for union as well,
+       since it only depends on XUINT.
+
+       * m/alpha.h (BITS_PER_LONG, BITS_PER_EMACS_INT, EMACS_INT,
+       EMACS_UINT, SPECIAL_EMACS_INT, DATA_SEG_BITS,
+       PNTR_COMPARISON_TYPE, VALBITS, MARKBIT, XINT, XUINT, XPNTR):
+       Macros deleted.
+
+       * mem-limits.h (start_of_data): If DATA_START is defined, prefer
+       its value over other approaches.
+       * sysdep.c (start_of_data): Don't define the function if a macro
+       form has been defined.
+
+2002-07-23  Gerd Moellmann  <gerd.moellmann@t-online.de>
+
+       * xdisp.c (redisplay_updating_p): New variable.
+       (init_iterator): Don't free realized faces when
+       redisplay_updating_p is set.
+       (redisplay_internal): Set redisplay_updating_p while updating
+       the display.
+
+2002-07-23  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fmessage): Treat "" like nil.
+
+2002-07-23  Kenichi Handa  <handa@etl.go.jp>
+
+       * xdisp.c (face_before_or_after_it_pos):
+       Call FETCH_MULTIBYTE_CHAR with byte postion, not char position.
+
+2002-07-22  Juanma Barranquero  <lektu@terra.es>
+
+       * callproc.c (init_callproc) [DOS_NT]:
+       Initialize Vshared_game_score_directory to nil.
+       (syms_of_callproc) [DOS_NT]: Likewise.
+
+2002-07-22  Gerd Moellmann  <gerd.moellmann@t-online.de>
+
+       * xdisp.c (display_line): Replace an abort with xassert.
+
+2002-07-21  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (redisplay_window): Don't test BEG_UNCHANGED
+       and END_UNCHANGED when setting buffer_unchanged_p.
+       Use current_matrix_up_to_date_p to decide whether to use
+       try_cursor_movement.
+
+       * config.in (HAVE_SHARED_GAME_DIR): Undef deleted.
+
+       * epaths.in (PATH_GAME): New macro, edited by ../Makefile.in.
+
+       * callproc.c (init_callproc): Set up Vshared_game_score_directory.
+       Set to nil if dir does not exist.
+       (syms_of_callproc): Init unconditionally and simply.
+
+       * buffer.c (Fbuffer_list): Doc fix.
+
+2002-07-21  Ken Raeburn  <raeburn@gnu.org>
+
+       * sysdep.c (end_of_text, end_of_data): Unused functions deleted.
+
+       * buffer.c (mmap_realloc): When shrinking, make sure number of
+       pages to unmap is rounded towards zero.
+
+       * m/mips-siemens.h (XSETUINT, XSETPNTR): Unused macros deleted.
+       (XSETINT): Deleted.
+
+       * m/att3b.h (XINT): Don't define.
+       (VALBITS, VALMASK, XTYPE): Deleted.
+       (DATA_SEG_BITS): Define.
+       * m/gec63.h (VALBITS, VALAMASK, XTYPE, XSETTYPE, XPNTR, XSET,
+       ARRAY_MARK_FLAG): Deleted.
+       (DATA_SEG_BITS): Define.
+       * m/pfa50.h (VALBITS, VALMASK, XTYPE): Deleted.
+       (DATA_SEG_BITS): Define.
+
+2002-07-20  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (print_error_message): New args CONTEXT and CALLER.
+       Calls changed.
+
+       * lisp.h (print_error_message): Declare new args.
+
+       * keyboard.c (cmd_error_internal): Pass Vsignaling_function
+       and CONTEXT to print_error_message, don't print them here.
+       For a Quit, don't use Vsignaling_function.
+       Call message_log_maybe_newline.
+
+       * Makefile.in (xsmfns.o): Don't depend on lisp.h.
+
+2002-07-20  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Test MODIFF to set buffer_unchanged_p.
+
+2002-07-19  Ken Raeburn  <raeburn@gnu.org>
+
+       * bytecode.c (struct byte_stack): Pointers into byte string now
+       point to const.
+       * callproc.c (Fcall_process): Make NEW_ARGV array hold pointer to
+       const.
+       * charset.h (BCOPY_SHORT): Source pointer now points to const.
+       * coding.c (encode_eol, detect_coding, detect_eol):
+       (decode_coding, encode_coding, detect_coding_system):
+       Source strings now treated as const.
+       (decode_coding_string, encode_coding_string): Use STRING_COPYIN to
+       modify Lisp string contents.
+       * coding.h (decode_coding, encode_coding, detect_coding,
+       detect_eol): Declarations updated.
+       * composite.c (compose_chars_in_text): Treat Lisp string contents
+       as const.
+       * dispnew.c (safe_bcopy): Source pointer now points to const.
+       * lisp.h (STRING_COPYIN): New macro.
+       (detect_coding_system, safe_bcopy, temp_output_buffer_setup):
+       (internal_with_output_to_temp_buffer): Declarations updated.
+       * print.c (temp_output_buffer_setup):
+       (internal_with_output_to_temp_buffer): Buffer name argument is now
+       pointer to const.
+       * sound.c (struct sound_device): Function pointer field "write"
+       buffer argument now points to const.
+       (vox_write): Buffer argument points to const.
+       * syntax.c (Fstring_to_syntax, skip_chars): Treat Lisp string
+       contents as const.
+       * sysdep.c (emacs_write): Buffer pointer now const.
+       * term.c (encode_terminal_code): Buffer pointer now const.
+       * xfaces.c (may_use_scalable_font_p): Argument now points to const.
+       (x_face_list_fonts, x_update_menu_appearance):
+       (hash_string_case_insensitive): Treat Lisp string contents as const.
+
+2002-07-19  Juanma Barranquero  <lektu@terra.es>
+
+       * xdisp.c (syms_of_xdisp): Remove redundant deprecation info.
+
+       * fileio.c (syms_of_fileio): Likewise.
+       (Ffile_name_as_directory): Fix argument name in docstring.
+       (file_name_as_directory): Use literal '/' instead of DIRECTORY_SEP.
+
+2002-07-18  Richard M. Stallman  <rms@gnu.org>
+
+       * data.c (Fdefalias): Doc fix.
+
+2002-07-17  Dave Love  <fx@gnu.org>
+
+       * intervals.h (text_property_stickiness): Use P_.
+
+       * ccl.c: Remove `emacs' conditionals.
+       (ccl_backtrace_table): Fix size spec.
+       (ccl_driver): Fix type errors.
+
+2002-07-16  Ken Raeburn  <raeburn@gnu.org>
+
+       * alloc.c (xstrdup, make_string, make_unibyte_string)
+       (make_multibyte_string, build_string): String pointer args now
+       point to const.
+       * charset.c (find_charset_in_text, c_string_width):
+       (chars_in_text, multibyte_chars_in_text, parse_str_as_multibyte):
+       * fileio.c (report_file_error):
+       * insdel.c (copy_text, count_size_as_multibyte, insert_1):
+       (count_combining_before, count_combining_after, insert_1_both):
+       (insert, insert_and_inherit, insert_string):
+       (insert_before_markers, insert_before_markers_and_inherit):
+       * lread.c (intern, oblookup, hash_string):
+       * minibuf.c (temp_echo_area_glyphs):
+       * search.c (fast_c_string_match_ignore_case):
+       * sysdep.c (emacs_open, set_file_times):
+       * xfaces.c (xstricmp):
+       * xdisp.c (store_frame_title, string_char_and_length):
+       (message_dolog, message2, message2_nolog, set_message): Likewise.
+       (set_message_1): Cast message string argument to const pointer.
+       * editfns.c (general_insert_function): Insertion function now
+       takes pointer to const for input data.
+       * charset.h (find_charset_in_text, c_string_width):
+       (parse_str_as_multibyte): Declarations updated.
+       * dispextern.h (xstricmp): Declaration updated.
+       * lisp.h (chars_in_text, multibyte_chars_in_text, copy_text):
+       (count_size_as_multibyte, count_combining_before):
+       (count_combining_after, insert_1, insert_1_both, message_dolog):
+       (insert, insert_and_inherit, insert_before_markers)
+       (insert_before_markers_and_inherit, set_message, message2):
+       (message2_dolog, build_string, make_string, make_unibyte_string):
+       (make_multibyte_string, intern, oblookup, report_file_error):
+       (fast_c_string_match_ignore_case, temp_echo_area_glyphs):
+       (emacs_open, xstrdup): Declarations updated.
+       * systime.h (set_file_times): Declaration updated.
+
+       * charset.c (find_charset_in_text, lisp_string_width): Use const
+       for pointer to lisp string data.
+       * charset.h (FETCH_STRING_CHAR_ADVANCE):
+       (FETCH_STRING_CHAR_ADVANCE_NO_CHECK):
+       * coding.c (Ffind_coding_systems_region_interval):
+       * fileio.c (Ffile_name_directory, Ffile_name_nondirectory):
+       (Fmake_directory_internal, Fdelete_directory):
+       (Ffile_name_absolute_p, Fwrite_region, double_dollars):
+       * fontset.c (font_family_registry, fs_query_fontset):
+       (list_fontsets):
+       * frame.c (Fframe_parameter):
+       * keyboard.c (cmd_error_internal):
+       * keymap.c (Fdescribe_buffer_bindings):
+       * lread.c (complete_filename_p, openp):
+       * minibuf.c (Fminibuffer_complete_word):
+       * xdisp.c (string_pos_nchars_ahead, init_from_display_pos):
+       (face_before_or_after_it_pos, next_element_from_string):
+       (get_overlay_arrow_glyph_row, display_mode_element):
+       (decode_mode_spec_coding):
+       * xterm.c (same_x_server): Likewise.
+
+       * buffer.c (reset_buffer_local_variables): Delete "#if 0"
+       settings of non-existent fields.
+
+       * editfns.c (Fstring_to_char): Don't use XSTRING/XSETSTRING to
+       copy a lisp value.
+
+       * lread.c (Fintern_soft): Use string macros instead of
+       Lisp_String fields.
+       * keyboard.c (echo_char, parse_modifiers_uncached):
+       (parse_solitary_modifier, Fexecute_extended_command): Likewise.
+       * textprop.c (validate_interval_range, interval_of): Likewise.
+
+       * fontset.c (Fset_fontset_font): Use SDATA instead of XSTRING()->data.
+
+       * charset.h (FETCH_STRING_CHAR_ADVANCE)
+       (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SBYTES instead of
+       XSTRING()->size_byte.
+
+       * lisp.h (SDATA, SREF): Produce rvalue.
+       (SSET): New macro.
+       * alloc.c (make_event_array): Use SSET for storing into a string.
+       * buffer.c (Fother_buffer): Use SREF when retrieving a byte from
+       a string.
+       * casefiddle.c (casify_object): Use SSET.
+       * charset.h (FETCH_STRING_CHAR_ADVANCE)
+       (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SDATA when getting
+       address of string contents.
+       * data.c (Faref): Use SDATA.
+       (Faset): Use SDATA, SSET.
+       * dired.c (directory_files_internal): Use SSET.
+       * fileio.c (Fmake_symbolic_link, Fexpand_file_name): Use SSET.
+       (Fread_file_name): Use SREF, SSET.
+       * fns.c (concat): Use SSET.
+       (concat, Fdelete): Use SDATA.
+       * insdel.c (insert_from_string_1): Use SDATA.
+       * keyboard.c (Fevent_convert_list): Use SREF.
+       * lread.c (Fload): Use SDATA, SSET.
+       * macfns.c (validate_x_resource_name): Use SSET.
+       * process.c (status_message): Use SSET.
+       * search.c (wordify): Use SDATA.
+       (Freplace_match): Use SREF.
+       * w32fns.c (validate_x_resource_name): Use SSET.
+       * xfns.c (validate_x_resource_name): Use SSET.
+       * xterm.c (x_catch_errors, x_clear_errors): Use SSET.
+
+2002-07-16  Richard M. Stallman  <rms@gnu.org>
+
+       * s/hpux11.h (USG_SUBTTY_WORKS): Defined.
+
+       * xdisp.c (reconsider_clip_changes):
+       Don't test prevent_redisplay_optimizations_p.
+       (redisplay_internal): Test prevent_redisplay_optimizations_p
+       along with clip_changed in some cases.
+       (try_window_id): Likewise.
+       (redisplay_window): New local var buffer_unchanged_p.
+
+       * keyboard.c (cmd_error) [HAVE_X_WINDOWS]: Maybe call cancel_houglass.
+
+       * process.c (create_process): Test USG_SUBTTY_WORKS.
+       (process_send_signal): Clean up handling of GID.
+       Detect errors in ioctls meant to set GID.
+
+       * window.c (temp_output_buffer_show):
+       Don't set prevent_redisplay_optimizations_p.
+
+2002-07-15  Juanma Barranquero  <lektu@terra.es>
+
+       * eval.c (Fdefvaralias): Add docstring argument.
+
+2002-07-15  Ken Raeburn  <raeburn@gnu.org>
+
+       * lisp.h (STRING_INTERVALS): Produce rvalue.
+       (STRING_SET_INTERVALS): New macro.
+       * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Use it.
+       * fns.c (Fstring_as_multibyte): Likewise.
+       * intervals.c (balance_possible_root_interval, delete_interval)
+       (create_root_interval, copy_intervals_to_string): Likewise.
+       * textprop.c (set_text_properties): Likewise.  Use NULL_INTERVAL
+       instead of 0.
+
+2002-07-14  Ken Raeburn  <raeburn@gnu.org>
+
+       * lisp.h (STRING_SET_CHARS): New macro.
+       (SCHARS, SBYTES): Produce rvalues.
+       * dired.c (directory_files_internal): Use STRING_SET_CHARS.
+       * fns.c (concat): Likewise.
+       * lread.c (read_vector): Likewise.
+
+       * lisp.h (SMBP): Delete.  All uses changed to STRING_MULTIBYTE.
+       (STRING_SET_UNIBYTE): New macro.
+       (SET_STRING_BYTES): Delete.  Callers (all of which supplied a
+       length of -1) changed to use STRING_SET_UNIBYTE.
+       * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c,
+       casefiddle.c, category.c, ccl.c, charset.c, charset.h, coding.c,
+       composite.c, data.c, dired.c, dispnew.c, disptab.h, doc.c,
+       dosfns.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, fn.c,
+       fontset.c, frame.c, indent.c, insdel.c, intervals.c, keyboard.c,
+       keymap.c, lread.c, mac.c, macfns.c, macmenu.c, macterm.c,
+       minibuf.c, msdos.c, print.c, process.c, search.c, sound.c,
+       sunfns.c, syntax.c, syntax.h, sysdep.c, textprop.c, undo.c,
+       w16select.c, w32.c, w32fns.c, w32menu.c, w32proc.c, w32select.c,
+       w32term.c, window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c,
+       xselect.c, xsmfns.c, xterm.c: Most uses of XSTRING combined with
+       STRING_BYTES or indirection changed to SCHARS, SBYTES,
+       STRING_INTERVALS, SREF, SDATA; explicit size_byte references left
+       unchanged for now.
+
+2002-07-13  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (command_loop_1): Invert check on Vmemory_full.
+
+2002-07-12  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fwrite_region): Doc fix.
+
+       * print.c (print_error_message): Don't handle Vsignaling_function here.
+
+       * keyboard.c (cmd_error_internal): Handle Vsignaling_function here.
+       (command_loop_1): Avoid certain actions after memory-full error.
+
+       * eval.c (Fsignal): Don't call cancel_hourglass.
+       For a memory-full error, don't call Vsignal_hook_function
+       and don't set Vsignaling_function.
+
+       * process.c (process_send_signal): Add abort call.
+
+2002-07-11  Markus Rost  <rost@math.ohio-state.edu>
+
+       * keymap.c (Fkey_binding): Fix typo.
+
+2002-07-11  Richard M. Stallman  <rms@gnu.org>
+
+       * alloc.c (Vmemory_full): New variable.
+       (Vmemory_signal_data): Rename from memory_signal_data.
+       Uses changed.
+       (syms_of_alloc): Defvar them.
+       (memory_full, buffer_memory_full): Set Vmemory_full.
+
+       * lisp.h (Vmemory_full): Add declaration.
+       (current_column, indented_beyond_p): Change declaration.
+
+       * indent.c (last_known_column): Declare as double, not float.
+       (current_column, current_column_1, string_display_width)
+       (position_indentation): Return `double'.
+       (indented_beyond_p): Arg `column' is `double'.  Callers changed.
+
+       * xdisp.c (message_dolog): Do nothing if Vmemory_full is non-nil.
+       (back_to_previous_visible_line_start)
+       (reseat_at_next_visible_line_start, next_element_from_buffer):
+       Use `double', not `float', when calling indented_beyond_p.
+
+       * s/hpux11.h (BROKEN_SA_RESTART): Define.
+
+       * sysdep.c (sys_signal): Test BROKEN_SA_RESTART.
+
+2002-07-11  Juanma Barranquero  <lektu@terra.es>
+
+       * alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, coding.c,
+       * composite.c, dired.c, dispnew.c, editfns.c, emacs.c, eval.c,
+       * fileio.c, fns.c, insdel.c, keyboard.c, keymap.c, lread.c, macfns.c,
+       * macmenu.c, macros.c, minibuf.c, print.c, process.c, sound.c,
+       * textprop.c, w32fns.c, w32menu.c, window.c, xfaces.c, xfns.c,
+       * xmenu.c, xselect.c, xterm.c: Use SPECPDL_INDEX wherever makes sense.
+
+2002-07-10  Juanma Barranquero  <lektu@terra.es>
+
+       * lisp.h (SPECPDL_INDEX): Rename from BINDING_STACK_SIZE.
+       All callers changed.
+
+2002-07-09  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * data.c (Fdefalias): Add an optional `docstring' argument.
+       (set_internal, Fsetq_default): Use XCAR/XCDR.
+
+       * composite.c (HASH_VALUE, HASH_KEY):
+       * ccl.c (HASH_VALUE): Remove (it's in lisp.h now).
+
+2002-07-09  Kenichi Handa  <handa@etl.go.jp>
+
+       * callproc.c (Fcall_process): Fix previous change.
+
+2002-07-07  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
+       Add support for hash-tables.
+       (Ftry_completion): Return t even if the string appears multiple times.
+
+       * fns.c (Fnconc): Use XCDR.
+       (Fprovide): Use CONSP and XCDR.
+       (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
+       (HASH_TABLE_SIZE): Delete: moved to lisp.h.
+       (Fmake_hash_table): Accept `:size nil'.
+       (Fmakehash): Delete: moved to subr.el.
+       (syms_of_fns): Don't defsubr makehash.
+
+       * lisp.h (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
+       (HASH_TABLE_SIZE): Move from fns.c.
+
+2002-07-07  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (make_cursor_line_fully_visible): Don't try short scrolls.
+       Instead just return 0 when there is something to be done.
+       (try_scrolling): If make_cursor_line_fully_visible returns 0,
+       retry scrolling as if cursor were off the bottom.
+       (try_cursor_movement): If make_cursor_line_fully_visible returns 0,
+       return CURSOR_MOVEMENT_MUST_SCROLL.
+       (redisplay_window): If make_cursor_line_fully_visible returns 0,
+       go to try_to_scroll.
+
+       * buffer.c (Fbuffer_local_value): Store current value into its binding
+       so we get the up-to-date value for the binding that is loaded.
+
+       * eval.c (Fdefmacro): Doc fix.
+
+2002-07-05  Dave Love  <fx@gnu.org>
+
+       * keyboard.c (read_key_sequence): Set initial_idleness_start_time
+       correctly.
+
+       * ccl.c (Vtranslation_hash_table_vector, GET_HASH_TABLE)
+       (HASH_VALUE, CCL_LookupIntConstTbl, CCL_LookupCharConstTbl): New.
+       (ccl_driver): Add cases for CCL_LookupIntConstTbl,
+       CCL_LookupCharConstTbl.
+       (syms_of_ccl): Defvar translation-hash-table-vector.
+
+2002-07-05  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xdisp.c: Remove unused variable `face'.
+
+2002-07-04  Juanma Barranquero  <lektu@terra.es>
+
+       * keyboard.c (post_command_idle_hook): Remove redundant (and inexact)
+       obsolescence information.
+
+2002-07-03  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (x_list_fonts): Fix comment.  Cache fonts matching
+       pattern.  Search cache first.
+       (init_font_name_table): Also add entry for jisx0201.1976-0 coding
+       for Japanese font.
+       (XLoadQueryFont): Use it.
+
+2002-07-02  Richard M. Stallman  <rms@gnu.org>
+
+       * keymap.c (Fdefine_key): Doc fix.
+
+       * xterm.c (x_term_init): Turn off polling around XtOpenDisplay.
+
+2002-07-02  Juanma Barranquero  <lektu@terra.es>
+
+       * keymap.c (syms_of_keymap): Fix typo.
+
+2002-07-01  Andrew Choi  <akochoi@shaw.ca>
+
+       * s/darwin.h: Define POSIX_SIGNALS.
+
+       * macterm.c (do_ae_open_documents) [MAC_OSX]: Call FSpMakeFSRef
+       and FSRefMakePath to convert FSSpec returned with Apple Event to
+       Posix pathname.
+       (mac_initialize) [TARGET_API_MAC_CARBON]:
+       Call init_required_apple_events and disable the `Quit' menu item
+       provided automatically by the Carbon Toolbox.
+
+2002-07-01  Dave Love  <fx@gnu.org>
+
+       * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal decl
+       for K&R.
+
+       * xterm.c: Fix prototype for K&R.
+
+       * term.c (costs_set): Declare static, non-initialized for pcc.
+
+2002-07-01  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (timer_last_idleness_start_time): New variable.
+       (timer_start_idle): Set that.
+       (read_key_sequence): Use that to reset timer_idleness_start_time
+       to previous value.
+
+       * window.c (Frecenter): With arg, set optional_new_start.
+
+       * xdisp.c (redisplay_internal): Make optional_new_start really work.
+
+       * minibuf.c (Fminibuffer_complete_and_exit): Move to end of
+       buffer for completion.
+
+2002-06-29  Ken Raeburn  <raeburn@gnu.org>
+
+       * xdisp.c (store_mode_line_string): Lisp_Object/int mixup.
+
+2002-06-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * keyboard.c (readable_filtered_events): New function that filters
+       FOCUS_IN_EVENT depending on parameter.
+       (readable_events): Calls readable_filtered_events, not filtering
+       FOCUS_IN_EVENT.
+       (get_filtered_input_pending): New function, filtering parameter passed
+       to readable_filtered_events.
+       (get_input_pending): Calls get_filtered_input_pending, not filtering
+       FOCUS_IN_EVENT.
+       (Finput_pending_p): Calls get_filtered_input_pending, DO filter
+       FOCUS_IN_EVENT.
+
+       * xterm.h (struct x_output): Add focus_state.
+
+       * xterm.c (x_focus_changed): New function.
+       (x_detect_focus_change): New function.
+       (XTread_socket): Call x_detect_focus_change for FocusIn/FocusOut
+       EnterNotify and LeaveNotify to track X focus changes.
+
+2002-06-28  Andreas Schwab  <schwab@suse.de>
+
+       * lisp.h: Remove duplicate declaration of code_convert_string_norecord.
+
+2002-06-27  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (mode_line_string_list, mode_line_string_face)
+       (mode_line_string_face_prop): New variables.
+       (store_mode_line_string): New function.
+       (display_mode_element): Use store_mode_line_string to
+       add mode-line string elements to mode_line_string_list
+       when mode_line_string_list is non-nil.
+       (Fformat_mode_line): Now returns propertized string by
+       default.  New arg NO-PROPS to ignore properties.
+       (decode_mode_spec): Only add two dashes for %- in propertized
+       mode-line string.
+       (syms_of_xdisp): Init and staticpro mode_line_string_list.
+
+2002-06-27  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * minibuf.c (minibuffer_completion_contents): Add return type.
+
+2002-06-27  Juanma Barranquero  <lektu@terra.es>
+
+       * charset.c (Fchar_bytes): Remove obsolescence info from docstring.
+
+2002-06-26  Juanma Barranquero  <lektu@terra.es>
+
+       * fileio.c (read_file_name_cleanup): Add missing return.
+
+2002-06-26  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Frecenter): Don't set force_start flag.
+
+       * minibuf.c (do_completion, Fminibuffer_complete_word)
+       (Fminibuffer_completion_help): Complete just the text before point.
+       (minibuffer_completion_contents): New function.
+
+       * buffer.c (Fbury_buffer): Use frames_discard_buffer.
+
+       * frame.c (frames_bury_buffer): Function deleted.
+
+2002-06-25  Miles Bader  <miles@gnu.org>
+
+       * callint.c (Fcall_interactively): When checking to see if doprnt hit
+       the end of callint_message, allow for a terminating '\0'.
+
+2002-06-24  Juanma Barranquero  <lektu@terra.es>
+
+       * w32select.c: Include composite.h.
+
+       * w16select.c: Likewise.
+
+2002-06-24  Kenichi Handa  <handa@etl.go.jp>
+
+       * callproc.c (Fcall_process): If code detection is necessary,
+       call detect_coding directly here.
+
+       * coding.c (detect_eol): Preserve coding->cmp_data.
+
+       * w16select.c (Fw16_get_clipboard_data):
+       * w32fns.c (w32_to_x_font):
+       * w32select.c (Fw32_get_clipboard_data):
+       * xselect.c (selection_data_to_lisp_data):
+       * xterm.c (XTread_socket): Disable composition handling.
+
+2002-06-24  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * print.c (temp_output_buffer_setup): Kill all local variables.
+
+2002-06-22  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lread.c (Fread): Remove redundant and imprecise declaration.
+
+       * xfns.c (check_x_display_info): Use check_x_frame.
+
+       * .gdbinit (xprintsym): Use the new `xname' field.
+       (xsymbol): Use it.
+
+2002-06-22  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (file_dialog_callback): New function.
+       (Fx_file_dialog): Allow selecting directories as well as files.
+
+2002-06-21  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * m/pmax.h (START_FILES): Define START_FILES for NetBSD and
+       OpenBSD.  Add support for mipseb-*-netbsd* machines.
+
+2002-06-17  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (mac_scroll_area): Set foreground and backcolor to
+       black and white before scrolling.  Restore frame background and
+       foreground color after scrolling.
+       (do_window_update): Call XClearWindow before calling expose_frame.
+       (make_mac_frame): Don't set FRAME_BACKGROUND_PIXEL and
+       FRAME_FOREGROUND_PIXEL of frame.
+
+       * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil,
+       test Mac command key as <ALT> key.
+
+2002-06-17  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * window.c (Fset_window_configuration): Lisp_Object/int mixup.
+
+       * keyboard.c (read_key_sequence): Be more careful with first_unbound.
+       Lookup keys in function-key-map immediately so that key-translation-map
+       can be applied earlier.
+       Remove function_key_possible and key_translation_possible, replaced
+       by checking `keytran_start < t'.
+
+       * .gdbinit (xsymbol): Use the new `xname' field.
+
+2002-06-17  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil,
+       test Mac command key as <ALT> key.
+
+       * mac.c (do_applescript): Call initialize_applescript if necessary
+       when first called.  Dispose of result_desc only when there is no error.
+       (Fdo_applescript): Use %d format specifier instead of %ld.
+
+2002-06-16  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (XTread_socket): Call FrontNonFloatingWindow instead
+       of FrontWindow for cases keyDown and autoKey.
+
+       * fontset.c (syms_of_fontset) [MAC_OS]: Set ASCII font of
+       Vdefault_fontset to Monaco with mac-roman coding.
+
+       * mac.c, macfns.c, macmenu.c, macterm.c: Undefine and redefine
+       init_process before and after inclusion of Carbon/Carbon.h, resp.
+
+       * macterm.c (x_new_font): Set font for normal_gc, reverse_gc, and
+       cursor_gc.
+       (add_font_name_table_entry): New function.
+       (init_font_name_table): Use add_font_name_table_entry; add italic,
+       bold, and bold-italic entries for truetype fonts.
+
+       * xfaces.c (init_frame_faces) [MAC_OS]: Call realize_basic_faces
+       for Mac too.
+       (try_font_list) [MAC_OS]: If no font matches given registry, try
+       fonts with any registry matching face_family.
+       (realize_x_face) [MAC_OS]: Remove old ad-hoc fix to load font here.
+
+       * s/darwin.h: If autoconf detects the Ncurses library, define
+       LIBS_TERMCAP to -lncurses to use it.
+
+2002-06-16  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * strftime.c [__hpux]: Include sys/_mbstate_t.h.
+
+2002-06-15  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Fset_window_configuration): Explicitly preserve
+       the point value that new_current_buffer had at the start.
+
+2002-06-14  Juanma Barranquero  <lektu@terra.es>
+
+       * composite.c (Fcompose_region_internal, Fcompose_string_internal):
+       Fix typos.
+
+2002-06-14  Kim F. Storm  <storm@cua.dk>
+
+       * insdel.c (insert_1_both, insert_from_string_1)
+       (insert_from_buffer_1): Recalculate END_UNCHANGED in case the
+       insert happened in the end_unchanged region.  Otherwise, the
+       redisplay may be confused and duplicate the last line in the
+       buffer [seen after save-buffer when require-final-newline==t].
+
+2002-06-13  Jason Rumney  <jasonr@gnu.org>
+
+       * w32.c (init_environment): Remove EMACSLOCKDIR.
+       (stat): Swap _S_IFDIR and _S_IFREG.
+
+2002-06-13  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * keyboard.c, macterm.c, macmenu.c, msdos.c, sysdep.c
+       * termhooks.h, xmenu.c, xsmfns.c, xterm.h, xterm.c, w32term.c,
+       * w32menu.c, w32inevt.c: Rename enum event_kind as follows:
+       ascii_keystroke to ASCII_KEYSTROKE_EVENT, multibyte_char_keystroke
+       to MULTIBYTE_CHAR_KEYSTROKE_EVENT, non_ascii_keystroke to
+       NON_ASCII_KEYSTROKE_EVENT, timer_event to TIMER_EVENT, mouse_click
+       to MOUSE_CLICK_EVENT, mouse_wheel to MOUSE_WHEEL_EVENT,
+       language_change_event to LANGUAGE_CHANGE_EVENT, scroll_bar_click
+       to SCROLL_BAR_CLICK_EVENT, w32_scroll_bar_click to
+       W32_SCROLL_BAR_CLICK_EVENT, selection_request_event to
+       SELECTION_REQUEST_EVENT, selection_clear_event to
+       SELECTION_CLEAR_EVENT, buffer_switch_event to BUFFER_SWITCH_EVENT,
+       delete_window_event to DELETE_WINDOW_EVENT, iconify_event to
+       ICONIFY_EVENT, deiconify_event to DEICONIFY_EVENT,
+       menu_bar_activate_event to MENU_BAR_ACTIVATE_EVENT, drag_n_drop to
+       DRAG_N_DROP_EVENT, save_session_event to SAVE_SESSION_EVENT and
+       no_event to NO_EVENT.
+
+2002-06-12  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * macmenu.c: Remove declaration of Qmouse_click and Qevent_kind.
+
+2002-06-12  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * intervals.c (textget): Don't forget to `return'.
+       (lookup_char_property): Use XCAR/XCDR.
+
+2002-06-12  Juanma Barranquero  <lektu@terra.es>
+
+       * xdisp.c (Fformat_mode_line): Fix typo.
+
+2002-06-12  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (Fformat_mode_line): New function.
+       (frame_title_buf, frame_title_buf_end, frame_title_ptr)
+       (store_frame_title_char, store_frame_title): Use unconditionally.
+       (init_xdisp): Defsubr Fformat_mode_line.
+       Initialize frame_title_buf etc. unconditionally.
+
+2002-06-11  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (read_key_sequence):
+       Remove prev_(fkey|keytran}_(map|start|end) since we don't want to pass
+       things through those maps after downcasing events.
+       Enforce that keytran_end <= fkey_start, i.e. that key-translation-map
+       applies after function-key-map.
+       Make sure that keytran can be done in the middle in the sequence.
+       Be careful not to throw away events past the one we downcase.
+
+       * lread.c (read_integer): Remove unused var `tem'.
+       (read1): Fix int/Lisp_Object mixup.
+
+       * xfaces.c (tty_lookup_color): Type bool/Lisp_Object mismatch fixed.
+
+2002-06-11  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (readable_events): Ignore any number of
+       FOCUS_IN_EVENT events and return 0 if nothing else in buffer.
+
+2002-06-09  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (Ftty_supports_face_attributes_p): New function.
+       (parse_rgb_list, tty_lookup_color): New functions.
+       (tty_defined_color): Use `tty_lookup_color' to do all the work.
+       (color_distance, Fcolor_distance): New functions.
+       (TTY_SAME_COLOR_THRESHOLD): New macro.
+       (Qtty_color_standard_values): New variable.
+       (syms_of_xfaces): Initialize new vars & functions.
+
+2002-06-08  Colin Walters  <walters@verbum.org>
+
+       * textprop.c (Vchar_property_alias_alist): New variable.
+       (syms_of_textprop) <Vchar_property_alias_alist>: DEFVAR_LISP.
+
+       * intervals.c (lookup_char_property): New function for looking up
+       overlay and text properties, created from textget.
+       (textget): Use it.
+
+       * intervals.h (lookup_char_property): Declare.
+       (Vchar_property_alias_alist): Declare.
+
+       * buffer.c (Foverlay_get): Use lookup_char_property.
+
+2002-06-07  Sam Steingold  <sds@gnu.org>
+
+       * xselect.c (lisp_data_to_selection_data): Fix last change:
+       *data_ret is not a Lisp string, while unibyte_string is.
+
+2002-06-07  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xselect.c (lisp_data_to_selection_data): Fix last change:
+       set size_ret.
+
+2002-06-07  Andreas Schwab  <schwab@suse.de>
+
+       * m/amdx86-64.h: New file.
+
+2002-06-05  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * fns.c (Fstring_make_unibyte): Doc fix.
+
+       * xselect.c (lisp_data_to_selection_data): If the requested type
+       is STRING, call string_make_unibyte to encode the selected text
+       as a string.
+
+       * window.c (Fset_window_hscroll): Doc fix.
+
+2002-06-05  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * fileio.c (choose_write_coding_system):
+       Call select-safe-coding-system properly.
+
+2002-06-03  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (message_with_string): Error if STRING is not a string.
+
+       * fns.c (md5): Pass FILE arg to Vselect_safe_coding_system_function.
+
+       * fileio.c (choose_write_coding_system): Pass FILE arg to
+       Vselect_safe_coding_system_function.
+
+2002-06-03  Ken Raeburn  <raeburn@gnu.org>
+
+       * buffer.c (fix_overlays_before): Fix list-walking bug in 05-19 change.
+
+2002-06-02  Thien-Thi Nguyen  <ttn@gnu.org>
+
+       * bytecode.c (Fbyte_code): Cast `current_column' return value to int.
+       * cmds.c (Fdelete_backward_char, internal_self_insert): Likewise.
+       * keymap.c (describe_command): Likewise.
+       * minibuf.c (read_minibuf): Likewise.
+
+       * xdisp.c (redisplay_internal, redisplay_window, decode_mode_spec):
+       Cast `current_column' return value to int.
+       (back_to_previous_visible_line_start)
+       (reseat_at_next_visible_line_start, next_element_from_buffer):
+       Cast `indented_beyond_p' 3rd arg to float.
+
+       * indent.c (last_known_column): Now a float.
+       (current_column_1, position_indentation, current_column)
+       (string_display_width): Return float.
+       (Fcurrent_column): Cast `current_column' return value to int.
+       (Fcurrent_indentation): Cast `position_indentation' retval to int.
+       (indented_beyond_p): Third arg now a float.
+       (compute_motion, vmotion): Cast `indented_beyond_p' 3rd arg to float.
+
+       * lisp.h (current_column): Now returns float.
+       (indented_beyond_p): 3rd arg now a float.
+
+2002-05-31  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xfns.c (x_encode_text): Return stringp non-NULL if coding_system
+       is Qcompound_text_with_extensions.
+
+       * xselect.c (lisp_data_to_selection_data): Always set selection
+       type as string if x_encode_text returns streingp non-NULL.
+
+       * s/netbsd.h: Include /usr/pkg in the run time shared library path.
+
+2002-05-30  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Fset_window_configuration): Correct the handling
+       of point in current buffer, to work with multiple windows.
+
+2002-05-29  Colin Walters  <walters@verbum.org>
+
+       * lread.c (Fread_from_string): Don't depend on order of evaluation
+       for C function parameters.
+
+2002-05-28  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (x_display_and_set_cursor): Change the cursor in the same
+       way for blinked-off state and for a nonselected window.
+
+       * window.c (window_scroll_pixel_based): Don't call Fbolp;
+       instead, see if the new start pos is at beginning of line.
+
+       * fileio.c (Fwrite_region): If START is a string, don't
+       make any annotations.
+
+       * eval.c (syms_of_eval): Doc fix.
+
+2002-05-28  Colin Walters  <walters@debian.org>
+
+       * emacs.c (USAGE1): Add --no-splash.
+       (standard_args): Ditto.
+
+2002-05-28  Colin Walters  <walters@gnu.org>
+
+       * lread.c (readchar_count): New variable.
+       (readchar): Increment it.
+       (unreadchar): Decrement it.
+       (read_multibyte): Decrement it.
+       (Vread_with_symbol_positions): New variable.
+       (Vread_symbol_positions_list): New variable.
+       (read_internal_start): New function, created from Fread and
+       Fread_from_string.  Handle Vread_symbol_positions_list and
+       Vread_with_symbol_positions.
+       (readevalloop, Fread, Fread_from_string): Use it.
+       (read1): Use readchar_count to add symbol positions to
+       Vread_symbol_positions_list if Vread_with_symbol_positions is non-nil.
+       (syms_of_lread): DEFVAR_LISP and initialize them.
+
+       * lread.c (read0, read1, read_list, read_vector, read_multibyte)
+       (substitute_object_recurse, substitute_object_in_subtree)
+       (substitute_in_interval): Prototype.
+       (read_multibyte): Return c if it's less than zero.
+
+2002-05-28  Kim F. Storm  <storm@cua.dk>
+
+       * fileio.c (Fread_file_name_internal): Added brute-force
+       speed up for using predicate file-directory-p.
+
+2002-05-28  Kim F. Storm  <storm@cua.dk>
+
+       * fileio.c (Vread_file_name_function, Vread_file_name_predicate):
+       New variables.
+       (syms_of_fileio): DEFVAR_LISP them.
+       (read_file_name_cleanup): New unwind function.
+       (Fread_file_name_internal): Only return completions satifying
+       Vread_file_name_predicate.  Temporarily unwind protect and rebind
+       default-directory while checking completions against the predicate.
+       (Fread_file_name): Added PREDICATE argument.  Specbind it to
+       Vread_file_name_predicate during completion.
+       Call Vread_file_name_function to read the file name if non-nil.
+
+       * lisp.h (Fread_file_name): Now has 6 args.
+
+       * callint.c (Fcall_interactively) <"D">: Supply Qfile_directory_p
+       predicate for Fread_file_name when reading directory name.
+       Supply Qnil for predicate in other calls to Fread_file_name.
+
+2002-05-26  Miles Bader  <miles@gnu.org>
+
+       * term.c (tty_capable_p): New function.
+       * dispextern.h (tty_capable_p): New function declaration.
+       (TTY_CAP_INVERSE, TTY_CAP_UNDERLINE, TTY_CAP_BOLD, TTY_CAP_DIM)
+       (TTY_CAP_BLINK, TTY_CAP_ALT_CHARSET): New macros.
+
+2002-05-23  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * fileio.c (read_non_regular, Finsert_file_contents): Use BEG_BYTE.
+       (Finsert_file_contents, build_annotations): Use XCAR, XCDR.
+       (Vwrite_region_annotate_functions): Docstring fix.
+
+2002-05-23  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (x_write_glyphs): Clear phys_cursor_on_p if current
+       phys_cursor's hpos is overwritten.  This is still not completely
+       correct, as it doesn't really make sense to use hpos at all to
+       get the cursor glyph (as that is relative to the width of the
+       characters on the line, which may have changed during the update).
+
+2002-05-22  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (enumfont_t): Remove tail, make pattern a normal
+       Lisp_Object.
+       (enum_font_cb2, enum_font_maybe_add_to_list, w32_list_fonts):
+       Use modified enumfont_t struct.
+
+       * w32term.h (text_cursor_kinds): New enumeration member HBAR_CURSOR.
+
+       * w32term.c (x_draw_bar_cursor): New argument KIND; callers changed.
+       Handle the `hbar' cursor type.
+       (x_display_and_set_cursor): Handle the HBAR_CURSOR case.
+
+       * w32fns.c (Qhbar): New variable.
+       (x_specified_cursor_type): Use it.
+
+2002-05-21  Ken Raeburn  <raeburn@gnu.org>
+
+       * w32fns.c (enum_font_maybe_add_to_list): Use XCDR_AS_LVALUE for
+       now, when the address is needed.
+
+2002-05-21  Colin Walters  <walters@gnu.org>
+
+       * Makefile.in (shortlisp): Add font-core.el.
+
+2002-05-20  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
+
+       * keyboard.c (read_char_minibuf_menu_prompt): Don't list
+       equivalent key bindings here.
+
+2002-05-20  Ken Raeburn  <raeburn@gnu.org>
+
+       Change symbol structure to contain a lisp object for the symbol
+       name:
+       * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
+       object field named "xname".
+       (SYMBOL_NAME): New macro.
+       * abbrev.c (write_abbrev): Use SYMBOL_NAME instead of XSYMBOL and
+       name field.
+       * alloc.c (Fmake_symbol): Set symbol xname field instead of name.
+       (mark_object, gc_sweep): Use symbol xname field and XSTRING
+       instead of name field.
+       * buffer.c (buffer_slot_type_mismatch): Use XSTRING and
+       SYMBOL_NAME instead of XSYMBOL and name field.
+       * callint.c (Fcall_interactively): Use XSTRING and SYMBOL_NAME
+       instead of XSYMBOL and name field.
+       * charset.c (Fdefine_charset, Fdeclare_equiv_charset): Use XSTRING
+       and SYMBOL_NAME instead of XSYMBOL and name field.
+       * coding.c (Fread_coding_system, code_convert_region1)
+       (code_convert_string1, code_convert_string_norecord)
+       (Ffind_operation_coding_system): Use SYMBOL_NAME instead of
+       XSYMBOL and name field.
+       * data.c (Fkeywordp, Fsymbol_name, store_symval_forwarding)
+       (Fmake_variable_buffer_local, Fmake_local_variable)
+       (Fmake_variable_frame_local): Use SYMBOL_NAME and XSTRING instead
+       of XSYMBOL and name field.
+       * editfns.c (Fformat): Use SYMBOL_NAME and XSTRING instead of
+       XSYMBOL and name field.
+       * emacs.c (shut_down_emacs) [#if 0]: Use SYMBOL_NAME and XSTRING
+       instead of XSYMBOL and name field.
+       * eval.c (do_autoload): Use SYMBOL_NAME and XSTRING instead of
+       XSYMBOL and name field.
+       * fns.c (Fstring_equal, Fstring_lessp, Frequire, sxhash):
+       Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field.
+       * fontset.c (Fset_fontset_font): Use SYMBOL_NAME and XSTRING
+       instead of XSYMBOL and name field.
+       * keyboard.c (echo_char, record_char, parse_modifiers_uncached)
+       (parse_modifiers, apply_modifiers, Fevent_convert_list)
+       (parse_solitary_modifier, Fexecute_extended_command):
+       Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field.
+       * keymap.c (silly_event_symbol_error, Fsingle_key_description)
+       (Fdescribe_buffer_bindings): Use SYMBOL_NAME and XSTRING instead
+       of XSYMBOL and name field.
+       (describe_command, describe_translation): Use SYMBOL_NAME and
+       assignment instead of XSYMBOL and name field and XSETSTRING.
+       * lread.c (Fintern_soft, oblookup): Use SYMBOL_NAME and XSTRING
+       instead of XSYMBOL and name field.
+       (Funintern): Use SYMBOL_NAME and assignment instead of XSYMBOL and
+       name field and XSETSTRING.
+       * macfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead
+       of XSYMBOL and name field.
+       * minibuf.c (Fread_command, Fread_variable): Use SYMBOL_NAME and
+       assignment instead of XSYMBOL and name field and XSETSTRING.
+       * print.c (print_error_message, print_object): Use SYMBOL_NAME and
+       XSTRING instead of XSYMBOL and name field.
+       * process.c (set_socket_options, Fsignal_process): Use SYMBOL_NAME
+       and XSTRING instead of XSYMBOL and name field.
+       * w32fns.c (parse_image_spec, w32_parse_hot_key): Use SYMBOL_NAME
+       and XSTRING instead of XSYMBOL and name field.
+       * xfaces.c (merge_face_vector_with_property): Use SYMBOL_NAME and
+       XSTRING instead of XSYMBOL and name field.
+       * xfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead
+       of XSYMBOL and name field.
+       * xselect.c (symbol_to_x_atom, x_get_foreign_selection):
+       Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field.
+
+2002-05-19  Ken Raeburn  <raeburn@gnu.org>
+
+       * lisp.h (LISP_MAKE_RVALUE): Delete disabled version, making XCAR
+       and XCDR real rvalues in most configurations.
+
+       * buffer.c (fix_overlays_in_range, fix_overlays_before):
+       Don't take the address of the cdr part of a cons cell; instead, track
+       the parent cell and call XSETCDR, or set the variable for the head
+       of the list if we haven't started down the list yet.
+
+2002-05-19  Richard M. Stallman  <rms@gnu.org>
+
+       * doc.c (reread_doc_file): Don't ask for confirmation.
+
+2002-05-18  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_create_pixmap_from_bitmap_data): New function.
+       (xbm_load_image): Use it.
+       (xbm_load): Ditto.
+       (xbm_read_bitmap_data): Reverted to xfns.c version.
+       From David Ponce <david@dponce.com>.
+
+2002-05-17  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (sig_suspender, sigprocmask): Don't define for DJGPP
+       2.02 and later.
+
+2002-05-16  Juanma Barranquero  <lektu@terra.es>
+
+       * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Fix typo.
+
+2002-05-15  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (read_char_x_menu_prompt): Use an equivalent but more
+       meaningful test.
+       (read_char_minibuf_menu_prompt): Fix typo.
+
+2002-05-15  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * eval.c (Fcommandp): Doc fix.
+
+2002-05-13  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keymap.c (keymap_parent): New fun, extracted from Fkeymap_parent.
+       (Fkeymap_parent, keymap_memberp, fix_submap_inheritance): Use it.
+       (Fset_keymap_parent): Gcpro a bit more.
+       (access_keymap): Gcpro around meta_map call and around the main loop.
+       (get_keyelt): Gcpro when following indirect references.
+       (copy_keymap_item): New fun, extracted from Fcopy_keymap.
+       (copy_keymap_1, Fcopy_keymap): Use it.  Don't copy the parent map.
+       (Fdefine_key, Flookup_key): Gcpro before calling get_keymap.
+       Remove useless ad-hoc remap code.
+
+2002-05-13  Richard M. Stallman  <rms@gnu.org>
+
+       * search.c (search_buffer): Give up boyer moore search if inverse
+       translation change charset_base.
+
+2002-05-12  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * coding.c (decode_coding) <coding_type_ccl>: If a lone CR
+       characters is carried over from the previous block of text, adjust
+       coding->produced to account for the extra character.
+
+2002-05-11  Andreas Schwab  <schwab@suse.de>
+
+       * coding.c (intersection): Keep the elements of the returned list
+       in the same order as in the first list.
+
+2002-05-11  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (current_minor_maps): Fix resizing of cmm_maps;
+       only update cmm_size if realloc actually succeeds.
+       Testing with initial size of 2 elements revealed that using
+       realloc on GNU/Linux would cause a random trap in xmalloc
+       later on, so I rewrote the code to use malloc/bcopy/free instead
+       of realloc.
+
+2002-05-10  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (enum_font_cb2): Avoid DBCS raster fonts.
+
+2002-05-10  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * coding.c (encode_coding_sjis_big5): Enclose bitwise AND in
+       parens, to ensure correct evaluation order.
+
+2002-05-10  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (Vemulation_mode_map_alists): New variable.
+       (syms_of_keymap): DEFVAR_LISP it.
+       (current_minor_maps): Process keymap alists in that list before
+       minor-mode-overriding-map-alist and minor-mode-map-alist.
+
+2002-05-09  Richard M. Stallman  <rms@gnu.org>
+
+       * search.c (Freplace_match): Doc fix.
+
+2002-05-09  Kim F. Storm  <storm@cua.dk>
+
+       * macterm.c (x_draw_image_foreground, x_draw_image_foreground_1):
+       Enlarge cursor rectangle drawn around image with non-zero relief.
+
+       * w32term.c (x_draw_image_foreground, w32_draw_image_foreground_1):
+       Enlarge cursor rectangle drawn around image with non-zero relief.
+
+       * xterm.c (x_draw_image_foreground, x_draw_image_foreground_1):
+       Enlarge cursor rectangle drawn around image with non-zero relief.
+
+2002-05-07  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xselect.c (lisp_data_to_selection_data): Don't set selection
+       type if comes from the Lisp object's car.  If the selection
+       contains a pure ASCII text, always return QSTRING as its type.
+
+2002-05-06  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * mac.c (mac-cut-function): Doc fix.
+
+2002-05-05  Richard M. Stallman  <rms@gnu.org>
+
+       * s/gnu.h [DOUG_LEA_MALLOC] (REL_ALLOC): Undefine it.
+
+2002-05-04  Jason Rumney  <jasonr@gnu.org>
+
+       * keyboard.c (make_lispy_event) <mouse-wheel>: Set count to 1
+       for event-click-count.
+
+       * process.c (init_process): Only add server subfeature if we can
+       use non-blocking I/O.
+
+2002-05-04  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (XTread_socket): Call WaitNextEvent once instead of
+       repeatedly.
+
+2002-05-03  Jason Rumney  <jasonr@gnu.org>
+
+       * process.c (Fmake_network_process): Only support server sockets
+       when we can make them non-blocking.
+
+       * s/ms-w32.h (HAVE_SELECT): Define.
+
+       * w32.h (FILE_NDELAY): New flag.
+
+       * w32.c (sys_getpeername, fcntl): New functions.
+       (_sys_read_ahead): Temporarily block on non-blocking sockets.
+
+       * w32proc.c: Include sys/file.h.
+
+2002-05-03  Colin Walters  <walters@verbum.org>
+
+       * callproc.c (Vgame_score_directory): Renamed to
+       Vshared_game_score_directory.
+
+2002-04-30  Richard M. Stallman  <rms@gnu.org>
+
+       * s/gnu.h [emacs]: Include stdio.h.
+       (GNU_LIBRARY_PENDING_OUTPUT_COUNT): New definition, conditional.
+
+       * eval.c (do_autoload): Error if called while preparing to dump.
+
+       * fns.c (Frequire): Error if need to load while preparing to dump.
+
+2002-04-28  Colin Walters  <walters@verbum.org>
+
+       * callproc.c (Vgame_score_directory) [!HAVE_SHARED_GAME_DIR]:
+       Default to "~/.emacs.d/games".
+
+2002-04-29  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lread.c (openp): Change arg exec_only to predicate.
+       (build_load_history): Use XCAR/XCDR.
+       (Flocate_file_internal): New fun.
+       (syms_of_lread): Defsubr it.
+       (Fload): Update call to openp.
+
+       * lisp.h (openp): Update prototype.
+
+       * xfns.c (x_create_bitmap_from_file, x_find_image_file):
+       * w32proc.c (sys_spawnve):
+       * w32fns.c (x_create_bitmap_from_file, x_find_image_file):
+       * w32.c (check_windows_init_file):
+       * sound.c (Fplay_sound_internal):
+       * process.c (Fstart_process):
+       * macfns.c (x_create_bitmap_from_file, x_find_image_file):
+       * mac.c (run_mac_command):
+       * emacs.c (init_cmdargs):
+       * callproc.c (Fcall_process): Update call to openp.
+
+       * textprop.c (remove_properties): Don't use XCAR without CONSP.
+
+       * xterm.c (XTread_socket): Disable the Xutf8LookupString code.
+
+2002-04-29  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * dispextern.h (DEFAULT_TOOL_BAR_BUTTON_MARGIN)
+       (DEFAULT_TOOL_BAR_BUTTON_RELIEF): Change default values.
+
+2002-04-28  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (Fall_completions, Ftry_completion): New arg to Fcommandp.
+
+       * eval.c (Fcommandp): New arg for_call_interactively.
+       * lisp.h (Fcommandp): Declare new arg.
+
+2002-04-28  Jason Rumney  <jasonr@gnu.org>
+
+       * w32proc.c (syms_of_w32proc): Get true file attributes by default.
+
+       * w32.c (stat, fstat): Use file index information to generate
+       inodes for directories where available.
+
+2002-04-26  Andrew Choi  <akochoi@shaw.ca>
+
+       * Makefile.in (C_SWITCH_SYSTEM_TEMACS): Add.
+       [HAVE_CARBON]: Include Mac object files.
+
+       * alloc.c, callproc.c, dispextern.h, dispnew.c, emacs.c,
+       fontset.c, frame.c, frame.h, keyboard.c, sysdep.c, term.c,
+       termcap.c, window.c, xdisp.c, xfaces.c: Use macros MAC_OS8,
+       MAC_OSX, and MAC_OS instead of macintosh.
+
+       * editfns.c [MAC_OS8]: Include stdio.h.
+
+       * emacs.c [MAC_OS8]: Call mac_initialize instead of x_term_init.
+
+       * fontset.c [MAC_OS]: Set Vdefault_fontset to ETL Fixed instead of
+       Apple Monaco.
+
+       * process.c (QCfamily, QCfilte): Declare extern.
+       (wait_reading_process_input) [MAC_OSX]: Clear bit for stdin before
+       calling select.
+
+       * termcap.c [MAC_OSX]: Don't define tgetnum, PC, tputs, and tgetent.
+
+       * tparam.c [MAC_OSX]: Don't define BC and UP.
+
+       * config.in [HAVE_CARBON]: Add.
+
+       * mac.c, macgui.h, macfns.c, macmenu.c, macterm.c, macterm.h:
+       Move here from mac/src and mac/inc.
+
+       * s/darwin.h, m/powermac.h, unexmacosx.c: New files.
+
+2002-04-26  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_draw_phys_cursor_glyph): Undo last change.
+       Compute phys_cursor_width from the x position returned
+       by x_draw_glyhs, which is cheaper.
+       (x_display_and_set_cursor): Compute the buffer-local value
+       of `cursor-in-non-selected-windows' only when needed.
+
+2002-04-25  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_draw_phys_cursor_glyph): Take into account that a box
+       cursor on a stretch glyph has a width that depends on
+       x_stretch_cursor_p.
+
+2002-04-25  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * abbrev.c (abbrev-start-location): Doc fix.
+
+       * indent.c (Fvertical_motion): Fix last change.
+
+2002-04-25  Gerd Moellmann  <gerd@gnu.org>
+
+       * indent.c (Fvertical_motion): Move to the start of the line
+       containing PT before moving up or down.
+
+2002-04-24  Gerd Moellmann  <gerd@gnu.org>
+
+       * dispnew.c (update_text_area): Set phys_cursor_on_p to 0 in the
+       case of writing a whole row, more or less analogous to the case of
+       writing only parts of a row.
+
+       * xterm.c (x_display_and_set_cursor): Set phys_cursor_width to
+       0 for NO_CURSOR.
+
+       * xterm.c (notice_overwritten_cursor): Fix an off by 1 error.
+
+2002-04-23  Colin Walters  <walters@verbum.org>
+
+       * buffer.c (syms_of_buffer): Doc fix.
+
+2002-04-23  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (notice_overwritten_cursor): Handle the special case
+       of the cursor being in the first blank non-text line at the
+       end of a window.
+
+       * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor)
+       (x_draw_phys_cursor_glyph): Set phys_cursor_width here.
+       (x_display_and_set_cursor): Don't set phys_cursor_width here, for
+       bar cursors only, to make phys_cursor_width contain what its name
+       suggests.
+       (notice_overwritten_cursor): Consider the cursor image erased if
+       the output area intersects the cursor image in y-direction.
+
+2002-04-23  Simon Marshall  <simon@gnu.org>
+
+       * xfns.c (x_set_mouse_color): Change default for cross_cursor
+       to XC_hand2.
+
+2002-04-23  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xdisp.c: Remove unused global variable `minibuf_prompt_pixel_width'.
+
+2002-04-22  Kim F. Storm  <storm@cua.dk>
+
+       * textprop.c (remove_properties): Fixed trap for malformed plist.
+
+2002-04-22  Richard M. Stallman  <rms@gnu.org>
+
+       * cmds.c (Fend_of_line): Handle intangible text in mid line.
+
+       * window.c (make_window): Initialize height_fixed_p,
+       last_cursor_off_p, and p->cursor_off_p slots.
+
+2002-04-20  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * fns.c (use-dialog-box): Doc fix.
+
+2002-04-19  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xterm.c (note_mode_line_or_margin_highlight): Remove unused
+       variables `row', `i' and `area'.
+       (XTread_socket) <KeyPress>: Pass KeyPress events when in menu to
+       toolkit library.
+
+2002-04-19  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xfaces.c (clear_font_table): Don't free the default font of
+       a frame even if it's on another display.
+       (Finternal_set_lisp_face_attribute): Don't use XFRAME on something
+       that could be Qt.
+
+2002-04-19  Juanma Barranquero  <lektu@terra.es>
+
+       * indent.c (Fmove_to_column): Remove unused local variable
+       `next_boundary_byte'.
+       (current_column_1): Likewise.
+
+2002-04-19  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (Qhbar): New variable.
+       (syms_of_msdos): Intern and staticpro it.
+       (IT_set_cursor_type, IT_set_frame_parameters): Handle the `hbar'
+       cursor type.
+
+2002-04-19  Dave Lambert  <dlambert@acm.org>
+
+       Theses change implement an underscore-like (`hbar') cursor.
+
+       * xterm.h (text_cursor_kinds): New enumeration member HBAR_CURSOR.
+
+       * xterm.c (x_draw_bar_cursor): New argument KIND; callers changed.
+       Handle the `hbar' cursor type.
+       (x_display_and_set_cursor): Handle the HBAR_CURSOR case.
+
+       * xfns.c (Qhbar): New variable.
+       (syms_of_xfns): Intern and staticpro it.
+       (x_specified_cursor_type): Handle `hbar' cursor.
+
+       * s/sol2-5.h (bcopy, bzero, bcmp): Define only if HAVE_BCOPY is
+       not defined.
+
+2002-04-18  Richard M. Stallman  <rms@gnu.org>
+
+       * textprop.c (remove_properties): New arg LIST allows scanning
+       either a list or a plist.
+       (interval_has_some_properties_list): New function, like
+       interval_has_some_properties using list instead of plist.
+       All callers changed.
+       (Fremove_list_of_text_properties): New function.
+       (syms_of_textprop): Defsubr it.
+
+2002-04-17  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * s/sol2.h (HAVE_LIBKSTAT): Define only if not already defined.
+
+2002-04-17  Juanma Barranquero  <lektu@terra.es>
+
+       * indent.c (Fmove_to_column): Remove unused local variable `end_byte'.
+
+2002-04-17  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * window.c (coordinates_in_window): Don't report on margin area
+       if its width is zero.
+
+2002-04-16  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (Fx_file_dialog): Decode file name before using.
+
+       * w32term.c (construct_drag_n_drop): Likewise.
+
+2002-04-16  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * puresize.h (BASE_PURESIZE): Increase to 830000, since we now
+       store load-history in pure space.
+
+       * s/msdos.h (SYSTEM_PURESIZE_EXTRA): Reduce to 50000.
+
+2002-04-16  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xterm.c (Qlatin_1, Qutf_8): New vars.
+       (syms_of_xterm): Initialize them.
+       (XTread_socket): Eliminate incorrect optimization that tried to avoid
+       decoding the output of X*LookupString.
+       Always use latin-1 to decode the output of XLookupString.
+       Try Xutf8LookupString if XmbLookupString failed.
+
+       * region-cache.c (new_region_cache): Use BEG.
+
+2002-04-16  Gerd Moellmann  <gerd@gnu.org>
+
+       * buffer.c (MMAP_ALLOCATED_P): New macro to be set from system
+       configuration files.
+       (mmap_enlarge): Enlarge mapped regions only if MMAP_ALLOCATED_P
+       returns 0.
+
+2002-04-15  Andreas Schwab  <schwab@suse.de>
+
+       * config.in: Regenerated using autoheader.
+
+       * m/7300.h, m/acorn.h, m/alliant-2800.h, m/alliant.h, m/alpha.h,
+       m/altos.h, m/amdahl.h, m/apollo.h, m/arm.h, m/att3b.h, m/aviion.h,
+       m/celerity.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h,
+       m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/gec63.h,
+       m/gould.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ia64.h,
+       m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h,
+       m/ibms390.h, m/intel386.h, m/iris4d.h, m/irist.h, m/isi-ov.h,
+       m/m68k.h, m/macppc.h, m/masscomp.h, m/mg1.h, m/mips-siemens.h,
+       m/mips.h, m/news-r6.h, m/news.h, m/next.h, m/nh3000.h, m/nh4000.h
+       m/ns32000.h, m/orion.h, m/pfa50.h, m/plexus.h, m/pmax.h,
+       m/powerpcle.h, m/pyrmips.h, m/sequent-ptx.h, m/sequent.h,
+       m/sparc.h, m/sr2k.h, m/symmetry.h, m/tad68k.h, m/tahoe.h,
+       m/targon31.h, m/tek4300.h, m/tekxd88.h, m/template.h, m/tower32.h,
+       m/tower32v3.h, m/ustation.h, m/vax.h, m/wicat.h, m/windowsnt.h,
+       m/xps100.h, s/aix3-2.h, s/aix4-2.h, s/irix4-0.h, s/irix5-0.h,
+       s/sco5.h, s/unixware.h: Don't set HAVE_ALLOCA, C_ALLOCA and
+       STACK_DIRECTION, now set by autoconf.
+
+2002-04-14  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * dispnew.c (marginal_area_string): Sort arguments.
+
+       * dispextern.h (marginal_area_string): Add prototype.
+
+2002-04-13  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Finsert_file_contents):
+       Don't call temp_output_buffer_setup--do just part, by hand.
+
+       * coding.c (run_pre_post_conversion_on_str):
+       Don't call temp_output_buffer_setup--do just part, by hand.
+
+       * keyboard.c (command_loop_1): Don't call start_hourglass
+       or cancel_hourglass when executing a macro.
+
+       * marker.c (count_markers): New function.
+
+       * xdisp.c (display_mode_element): Don't let mode_line_proptrans_alist
+       grow without limit.  Move recently used elements to the front.
+
+2002-04-13  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * unexelf.c (unexec) [__sgi]: Undo the change from 2002-01-20.
+
+2002-04-12  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (sync_frame_with_window_matrix_rows): Don't give frame
+       rows marginal areas.
+       (Fdump_frame_glyph_matrix) [GLYPH_DEBUG]: New function.
+       (syms_of_xdisp) [GLYPH_DEBUG]: Defsubr it.
+
+       * dispnew.c (marginal_area_string): Check that glyph row is enabled.
+
+2002-04-12  Dave Love  <fx@gnu.org>
+
+       * dispnew.c (marginal_area_string): New.
+
+       * window.c (window_part): Add ON_LEFT_MARGIN, ON_RIGHT_MARGIN.
+       (Qleft_margin, Qright_margin): Declare.
+       (coordinates_in_window, (Fcoordinates_in_window_p): Deal with margins.
+
+       * xterm.c (note_mode_line_or_margin_highlight): Renamed from
+       note_mode_line_highlight and extended.
+
+       * keyboard.c (Qleft_margin, Qright_margin): Declare.
+       (make_lispy_event): Deal with mouse events in margins.
+
+2002-04-12  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * msdos.c (dos_rawgetc): Use a single event for HELP_EVENT.
+
+       * keyboard.c (command_loop_1): Turn off transient-mark-mode rather
+       than deactivating the mark if tmm is set to `lambda'.
+       (gen_help_event, kbd_buffer_store_help_event, kbd_buffer_get_event):
+       Use a single event for HELP_EVENT.
+       (Fexecute_extended_command): Save last_point_position.
+
+2002-04-12  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * lisp.h (Fpropertize): Add prototype.
+
+       * fns.c (Fy_or_n_p): Use `minibuffer-prompt' face for prompt.
+
+2002-04-10  Colin Walters  <walters@verbum.org>
+
+       * config.in: Add HAVE_SHARED_GAME_DIR.
+
+       * callproc.c (Vgame_score_directory): New variable.
+       (syms_of_callproc) <Vgame_score_directory>: DEFVAR_LISP.
+
+2002-04-10  Richard M. Stallman  <rms@gnu.org>
+
+       * puresize.h (BASE_PURESIZE): Reduce again to avoid big excess.
+
+2002-04-09  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * minibuf.c (read_minibuf): Use empty_string.
+       (Ftry_completion): Allow lambda forms and lists of strings for `alist'.
+       Short-circuit the search as soon as it "failed".
+       (Fall_completions): Allow lambda forms and lists of strings for alist.
+       (Fcompleting_read): Set Qminibuffer_completion_confirm to nil
+       when require_match is nil.
+       (Ftest_completion): Rename from `test_completion' and export to elisp.
+       Call the predicate also when alist is a list.
+       Obey Vcompletion_regexp_list.
+       (do_completion, Fminibuffer_complete_and_exit): Use it.
+       (Fassoc_string): Rename from `assoc_for_completion'.
+       Allow list of strings as well and export to elisp.
+
+2002-04-08  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * puresize.h (BASE_PURESIZE): Increase to 900KB.
+
+2002-04-08  Juanma Barranquero  <lektu@terra.es>
+
+       * w32.c (sys_accept): Don't hide variable `s'.
+
+2002-04-05  Gerd Moellmann  <gerd@gnu.org>
+
+       * callint.c (Fcall_interactively): Use INTEGERP instead of
+       NUMBERP for checking Vhistory_length.
+
+2002-04-05  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * sound.c (Fplay_sound_internal): Renamed from Fplay_sound.
+       Doc fix to reflect it.
+
+2002-04-04  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (display_mode_element): New arg RISKY.
+       Disregard text props found or specified within a variable
+       that isn't marked risky-local-variable.
+       (Qrisky_local_variable): New variable.
+       (syms_of_xdisp): Init and staticpro it.
+
+2002-04-04  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * undo.c (record_point): New fun.
+       (record_delete, record_insert): Use it.
+
+2002-04-03  Juanma Barranquero  <lektu@terra.es>
+
+       * doc.c (Fdocumentation): Add missing parentheses.
+       (Fdocumentation_property): Likewise.
+
+2002-04-03  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * doc.c (Fdocumentation, Fdocumentation_property): When the doc
+       data is 0, just return nil.
+
+2002-04-03  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (syms_of_msdos): Fix last change with
+       mouse_autoselect_window.
+
+2002-04-03  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * w32term.c, xterm.c, msdos.c: Rename autoselect_window_p to
+       mouse_autoselect_window.
+
+2002-04-02  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (make_lispy_event): Handle unknown keysyms together
+       with system-specific keysyms.  Use it also for unknown function keys.
+
+       * doc.c (reread_doc_file): Return whether reload was attempted.
+       (Fdocumentation, Fdocumentation_property): Don't try to reload
+       if the doc is 0 and only ask once.
+
+       * Makefile.in (lisp, shortlisp): Add ucs-tables.elc.
+
+2002-04-02  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * keyboard.c (read_char): If the event was Qselect_window,
+       restore timer_idleness_start_time to its previous value.
+
+       * msdos.c (dos_rawgetc): Generate SELECT_WINDOW_EVENTs when required.
+
+2002-04-01  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * region-cache.c (new_region_cache): Use BEG.
+
+       * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos):
+       Use BEG and BEG_BYTE.
+
+       * doc.c (get_doc_string): Return nil if the location is wrong.
+       (reread_doc_file): New fun.
+       (Fdocumentation, Fdocumentation_property):
+       Call it if get_doc_string fails.
+       (Fsnarf_documentation): Make it work for a dumped Emacs.
+
+       * charset.h (DEC_POS, BUF_DEC_POS): Use BEG_BYTE.
+       Bound the search with MAX_MULTIBYTE_LENGTH to avoid pathological case.
+
+       * charset.c (Fstring): Allow 0 arguments.
+
+       * xterm.c (XTread_socket): Fix int/Lisp_Object confusion.
+
+       * process.c (DATAGRAM_CONN_P, list_processes_1)
+       (Fprocess_datagram_address, Fset_process_datagram_address)
+       (Fset_network_process_options, server_accept_connection):
+       Fix some int/Lisp_Object confusions (thank you union types).
+
+2002-04-01  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * msdos.c: Rename x_autoselect_window_p to autoselect_window_p.
+
+       * w32term.c: Likewise.
+       (note_mouse_movement): Put code for x_autoselect_window_p in #if 0.
+
+       * keyboard.c (Qselect_window): New symbol.
+       (head_table): Use it.
+       (keys_of_keyboard): Bound select-window event to handle-select-window.
+       (kbd_buffer_get_event): Make a Lisp event from SELECT_WINDOW_EVENT.
+
+       * xterm.c: Rename x_autoselect_window_p to autoselect_window_p.
+       (last_window): New variable.
+       (XTread_socket): Generate SELECT_WINDOW_EVENTs.
+       (note_mouse_movement): Remove reimplemented code in #if 0.
+       (XTread_socket): Generate SELECT_WINDOW_EVENTs only for
+       Emacs windows.
+
+       * termhooks.h (enum event_kind): New event type `SELECT_WINDOW_EVENT'.
+
+2002-03-31  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_get_char_face_and_encoding): Add parameter DISPLAY_P.
+       Callers changed.
+
+2002-03-30  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (window_scroll_pixel_based): Exit the move_it_by_lines
+       loop whenever it stops making progress.
+
+       * widget.c (set_frame_size): Don't call change_frame_size.
+
+2002-03-30  Gerd Moellmann  <gerd@gnu.org>
+
+       * dispnew.c (direct_output_for_insert):
+       Call mark_window_display_accurate.
+
+2002-03-29  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_draw_relief_rect): Fix calculations of line lengths.
+
+2002-03-29  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (lread.o): Depend on coding.h.
+
+       * lread.c (openp, Fload): Encode the file name before passing it
+       to `stat', `access', and `emacs_open'.
+       (openp): GCPRO the encoded file name.  Don't recompute Lisp
+       strings unnecessarily.
+
+2002-03-29  Kim F. Storm  <storm@cua.dk>
+
+       * fns.c (Flax_plist_put): Doc fix.
+
+2002-03-28  Miles Bader  <miles@gnu.org>
+
+       * process.c (DATAGRAM_CONN_P): Make sure PROC is really a process.
+
+2002-03-27  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * process.c (set-network-process-options): Add usage.
+       (make-network-process): Doc fix.
+
+2002-03-26  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * emacs.c (Fdump_emacs): Fix a typo in "command-line-processed".
+
+2002-03-26  Richard M. Stallman  <rms@gnu.org>
+
+       * fns.c (Fsubstring_no_properties): New function.
+       (Flax_plist_get, Flax_plist_put): New functions.
+       (syms_of_fns): defsubr them.
+
+       * xdisp.c (update_menu_bar): Test only update_mode_lines;
+       don't test or alter w->update_mode_line.
+
+       * window.c (Fdisplay_buffer): Doc fix.
+
+2002-03-24  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.c (GET_UNSIGNED_NUMBER): Give proper error for spaces.
+
+2002-03-24  Gerd Moellmann  <gerd@gnu.org>
+
+       * eval.c (Qdeclare, Vmacro_declaration_function): New variables.
+       (Fdefmacro): Handle `(declare ...)'.
+       (syms_of_eval) <Qdeclare>: Initialize and staticpro.
+       (syms_of_eval) <Vmacro_declaration_function>: DEFVAR_LISP.
+
+2002-03-24  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (xbm_scan, xbm_load_image, xbm_read_bitmap_data)
+       (xbm_file_p): Add prototypes.
+       (xbm_format, xbm_image_p): Sync with xfns.c.
+       (reflect_byte): New function.
+       (xbm_read_bitmap_data): Sync with xfns.c, adapt for Windows.
+       (xbm_load_image): Create bitmaps with a depth of 1.
+       (init_xfns): Enable XBM images.
+
+2002-03-23  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_handle_tool_bar_click): Detect up and down events
+       correctly.  Do not pass up_modifier to keyboard buffer.
+
+       * w32fns.c [HAVE_IMAGES, HAVE_PBM]: Remove conditionals.
+
+2002-03-22  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * Makefile.in (bootstrapclean): New target.
+       (bootstrap-temacs, bootstrap-doc): Remove.
+       (bootstrap-emacs): Use a bog-standard `temacs'.
+       Don't bother to build a DOC file.
+
+       * sysdep.c (wait_for_termination): Use sigsuspend rather than sigpause.
+
+       * emacs.c (main): Handle --unibyte, --multibyte, and --no-loadup
+       in temacs even if !CANNOT_DUMP.
+       (standard_args): Keep --no-loadup even if !CANNOT_DUMP.
+
+       * alloc.c (check_pure_size): Only output a warning.
+
+2002-03-22  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (Fx_create_frame): Enable tool-bar when images are
+       supported.
+
+       * w32term.c (zv_bits): Declare as short, for word alignment.
+       (w32_read_socket) <WM_XBUTTONUP>: Fix last change.
+       (syms_of_w32term): Define x-use-underline-position-properties.
+
+       * w32fns.c (x_set_cursor_color): Set cursor_gc as well.
+       (clear_image_cache): Block input, fix logic, clear matrices in
+       all frames that share this cache.
+
+2002-03-22  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * emacs.c (main): Update the Copyright year in the blurb printed
+       by "emacs --version".
+
+       * xdisp.c (message_with_string): Fix syntax of a call to GCPRO2.
+
+       * xterm.c (XTread_socket): If XK_ISO_Lock and
+       XK_ISO_Last_Group_Lock are defined, handle keysyms between
+       XK_ISO_Lock and XK_ISO_Last_Group_Lock similarly to Mode_switch.
+
+2002-03-21  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (menu_bar_items): Mostly undo 2002-02-20 patch, so
+       menu-bar bindings in keymap and local-map properties _are_ used.
+       But try keymap property first in accordance with 2002-01-03 patch.
+       Added comment describing why this is not always reliable.
+       (tool_bar_items): Ditto for tool-bar.
+
+2002-03-21  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (x_clear_image_1): Disable color table code.
+
+2002-03-21  Kim F. Storm  <storm@cua.dk>
+
+       * lisp.h (DEFUN) [USE_NONANSI_DEFUN]: The 2001-10-17 patch
+       removed the wrong version of the DEFUN macro; fixed it.
+
+       * fns.c (Ffeaturep): Allow subfeature to be a list (test using
+       Fmember rather than Fmemq).
+       (Fprovide): Check that subfeatures is a list.
+
+       * process.c (QCfeature, QCdatagram): Removed variables.
+       (QCtype, Qdatagram): New variables.
+       (network_process_featurep): Removed function.
+       (Fmake_network_process): Removed :feature check.
+       Use :type 'datagram instead of :datagram t to create a datagram
+       socket.  This allows us to add other connection types (e.g. raw
+       sockets) later in a consistent manner.
+       (init_process) [subprocess, HAVE_SOCKETS]: Provide list of
+       supported subfeatures for feature make-network-process.
+       (syms_of_process) [subprocess]: Remove QCfeature and QCdatagram.
+       Intern and staticpro QCtype and Qdatagram.
+       (syms_of_process) [!subprocess]: Intern and staticpro QCtype.
+
+       * xfns.c (QCtype): Remove duplicate declaration and
+       initialization (is now declared in process.c).
+
+       * w32fns.c (QCtype): Remove duplicate declaration and
+       initialization (is now declared in process.c).
+
+2002-03-21  Richard M. Stallman  <rms@gnu.org>
+
+       * regex.c (DISCARD_FAILURE_REG_OR_COUNT): New macro.
+       (CHECK_INFINITE_LOOP): Use DISCARD_FAILURE_REG_OR_COUNT
+       when jumping to `fail' to avoid undoing reg changes in the
+       last iteration of the loop.
+       (GET_UNSIGNED_NUMBER): Skip spaces around the number.
+
+       * Makefile.in (dispnew.o, sysdep.o, xdisp.o, xselect.o, alloc.o):
+       Depend on process.h.
+
+2002-03-20  Jason Rumney  <jasonr@gnu.org>
+
+       Most of the following changes are still conditional on HAVE_IMAGES
+       which is not set by default on Windows.
+
+       * emacs.c (main) [WINDOWSNT]: Call init_xfns.
+
+       * w32fns.c (x_set_cursor_color): Set foreground of cursor, not frame.
+       (Fimage_size, Fimage_mask_p, XPutPixel): New functions.
+       (four_corners_best, x_clear_image_1, x_clear_image)
+       (x_alloc_image_color, postprocess_image)
+       (x_create_x_image_and_pixmap, x_destroy_x_image, xbm_load_image)
+       (x_from_x_colors, x_disable_image, pbm_load): Adapt for Windows.
+       (init_xfns, syms_of_w32fns): Initialize image functions and constants.
+
+       * w32gui.h (struct XImage): Define.
+
+       * w32term.c (w32_read_socket) <WM_XBUTTONUP>: Use XFASTINT to
+       extract mouse co-ordinates.
+
+2002-03-20  Jason Rumney  <jasonr@gnu.org>
+
+       * w32.c (init_winsock): Dynamically load new server and UDP
+       socket functions.
+       (socket_to_fd): New function.
+       (sys_socket): Use it.
+       (sys_setsockopt, sys_listen, sys_getsockname, sys_accept)
+       (sys_recvfrom, sys_sendto): New wrapper functions.
+
+       * process.c (QCfamily, QCfilter): Remove duplicate declaration
+       and initialization.
+
+       * makefile.w32-in (LIBS): Remove $(WSOCK32).
+
+2002-03-20  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr):
+       Don't use "sun" as a variable, it's a predefined constant on Sun
+       machines.
+
+2002-03-20  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * bytecode.c (Fbyte_code): Revert last change.
+
+2002-03-19  Kim F. Storm  <storm@cua.dk>
+
+       * makefile.w32-in (LIBS): Add $(WSOCK32).
+       From David Ponce <dponce@voila.fr>.
+
+2002-03-18  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * process.c (wait_reading_process_input): Move variables `pname'
+       and `pnamelen' down where they are used.
+
+       * bytecode.c (Fbyte_code): Discard unused computed value to
+       prevent gcc warning.
+
+       * lisp.h (Fplist_member): Add prototype.
+
+2002-03-18  Kim F. Storm  <storm@cua.dk>
+
+       * config.in: Add HAVE_SENDTO, HAVE_RECVFROM, HAVE_SETSOCKOPT,
+       HAVE_GETSOCKOPT, HAVE_GETPEERNAME, HAVE_GETSOCKNAME, and HAVE_SYS_UN_H.
+
+       * process.c: Define HAVE_LOCAL_SOCKETS based on HAVE_SYS_UN_H.
+       Remove explicit GNU_LINUX settings for datagram support.
+
+2002-03-18  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * process.c (Fmake_network_process): Remove unused variable `sa'.
+       Doc fix.  Add usage:.
+       (set_socket_options): Remove unused variables `optnum' and `opttype'.
+
+2002-03-17  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (cursor_type_changed): New variable.
+       (redisplay_internal): Redisplay all windows if cursor_type_changed.
+       Clear it when clearing windows_or_buffers_changed.
+       (try_cursor_movement, redisplay_window, try_window_id)
+       (try_window_reusing_current_matrix): Test cursor_type_changed
+       along with windows_or_buffers_changed.
+
+       * window.h (cursor_type_changed): New variable.
+
+       * xfns.c (x_set_cursor_type): Set cursor_type_changed,
+       not update_mode_lines, and always set it to 1.
+
+       * xdisp.c (clear_garbaged_frames): Don't set windows_or_buffers_changed
+       if no frames needed redrawing.
+
+2002-03-17  Kim F. Storm  <storm@cua.dk>
+
+       The following changes add support for network server processes,
+       datagram connections, and local (unix) sockets.
+
+       * process.h (struct Lisp_Process): New member log.
+       Doc fix: Member command used to indicate stopped network process.
+       Doc fix: Member childp contains plist for network process.
+       Doc fix: Member kill_without_query is inverse of query-on-exit flag.
+
+       * process.c (Qlocal, QCname, QCbuffer, QChost, QCservice, QCfamily)
+       (QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery, QCstop)
+       (QCcoding, QCoptions, QCfilter, QCsentinel, QClog, QCfeature): New
+       variables.
+       (NETCONN1_P): New macro.
+       (DATAGRAM_SOCKETS): New conditional symbol.
+       (datagram_address): New array.
+       (DATAGRAM_CONN_P, DATAGRAM_CHAN_P): New macros.
+       (status_message): Use concat3.
+       (Fprocess_status): Add `listen' status to doc string.  Return
+       `stop' for a stopped network process.
+       (Fset_process_buffer): Update contact plist for network process.
+       (Fset_process_filter): Ditto.  Don't enable input for stopped
+       network processes.  Server must listen, even if filter is t.
+       (Fset_process_query_on_exit_flag, Fprocess_query_on_exit_flag):
+       New functions.
+       (Fprocess_kill_without_query): Removed.  Now defined in simple.el.
+       (Fprocess_contact): Added KEY argument.  Handle datagrams.
+       (list_processes_1): Optionally show only processes with the query
+       on exit flag set.  Dynamically adjust column widths.  Omit tty
+       column if not needed.  Report stopped network processes.  Identify
+       server and datagram network processes.
+       (Flist_processes): New optional arg `query-only'.
+       (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size)
+       (conv_lisp_to_sockaddr, set_socket_options)
+       (network_process_featurep, unwind_request_sigio): New helper
+       functions.
+       (Fprocess_datagram_address, Fset_process_datagram_address):
+       (Fset_network_process_options): New lisp functions.
+       (Fopen_network_stream): Removed.  Now defined in simple.el.
+       (Fmake_network_process): New lisp function.  Code is based on
+       previous Fopen_network_stream, but heavily reworked with new
+       property list based argument list, support for datagrams, server
+       processes, and local sockets in addition to old client-only
+       functionality.
+       (server_accept_connection): New function.
+       (wait_reading_process_input): Use it to handle incoming connects.
+       Do not enable input on a new connection if process is stopped.
+       (read_process_output): Handle datagram sockets.  Use 2k buffer for
+       them.
+       (send_process): Handle datagram sockets.
+       (Fstop_process, Fcontinue_process): Apply to network processes.  A
+       stopped network process is indicated by setting command field to t.
+       (Fprocess_send_eof): No-op if datagram connection.
+       (Fstatus_notify): Don't read input for a stream server socket or a
+       stopped network process.
+       (init_process): Initialize datagram_address array.
+       (syms_of_process): Intern and staticpro new variables, defsubr new
+       functions.
+
+2002-03-16  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_to_all_x_charsets): Return correct type in
+       startup case.
+
+2002-03-16  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (redisplay_internal, redisplay_windows):
+       Use list_of_error to call internal_condition_case_1.
+       (safe_eval, safe_call): Pass Qt to internal_condition_case_{1,2}
+       so as to catch all errors with no possibility of debugger redisplay.
+       (list_of_error): New variable.
+       (syms_of_xdisp): Init and staticpro it.
+
+       * print.c (print_object): Delete `\ ' from printed rep of frame.
+
+2002-03-15  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (dos_rawgetc): Disable the x-autoselect-window feature,
+       until its implementation is fixed.
+
+2002-03-14  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xfns.c (png_load): Remove unused variable `gamma_str'.
+
+2002-03-14  Richard M. Stallman  <rms@gnu.org>
+
+       * xfns.c (x_real_positions): Handle failure in XQueryTree.
+
+2002-03-14  Miles Bader  <miles@gnu.org>
+
+       * intervals.c (adjust_for_invis_intang): New function.
+       (set_point_both): Use `adjust_for_invis_intang' to do most of the
+       work for dealing with invisible+intangible regions.  Do so before
+       and after both forward and backward movements, to handle both
+       front-sticky and rear-sticky cases.
+       * textprop.c (text_property_stickiness): Function moved here from
+       `editfns.c'.
+       * intervals.h (text_property_stickiness): New declaration.
+       * editfns.c (char_property_eq): Function removed.
+       (text_property_stickiness): Function moved to `textprop.c'.
+
+2002-03-13  Jason Rumney  <jasonr@gnu.org>
+
+       * config.in: Add STRFTIME_NO_POSIX2.
+
+       * strftime.c (my_strftime) [STRFTIME_NO_POSIX2]: Handle %h, %EX
+       and %OX when underlying strftime does not.
+
+2002-03-13  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xterm.c (x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>:
+       Use a fixed-size thumb (based on an ad-hoc estimate of 30 chars per
+       line) to avoid annoying flicker.
+       (xm_scroll_callback): Get rid of the now unnecessary kludge.
+       (XTread_socket): Mark it static.
+
+       * xdisp.c (display_mode_element): Fix int/Lisp_Object mixup.
+
+2002-03-13  Kim F. Storm  <storm@cua.dk>
+
+       * puresize.h (BASE_PURESIZE): Increase to 775000.
+
+2002-03-12  Juanma Barranquero  <lektu@terra.es>
+
+       * editfns.c (syms_of_editfns): Fix typo.
+
+2002-03-12  Gerd Moellmann  <gerd@gnu.org>
+
+       * xsmfns.c: Include stdio.h because termhooks.h needs it.
+       Include termopt.h for interrupt_input.
+
+2002-03-11  Andreas Schwab  <schwab@suse.de>
+
+       * coding.c (syms_of_coding) <file-coding-system-alist>: Doc fix.
+
+2002-03-11  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (note_mouse_movement): Put code for
+       x_autoselect_window_p in #if 0.
+
+       * lread.c (Fload): Don't assume that message_with_string uses the
+       string it is given like a C string.
+
+2002-03-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h (x_session_check_input, x_session_initialize): Declare.
+
+       * xterm.c (XTread_socket): Add call to x_session_check_input and
+       x_session_have_connection.
+       (x_initialize): Add call to x_session_initialize.
+
+       * termhooks.h (enum event_kind): Add save_session_event.
+
+       * keyboard.c: Add Emacs event save_session_event.
+
+       * emacs.c (main): Add call to syms_of_xsmfns.
+
+       * lisp.h (syms_of_xsmfns): Declare extern.
+
+       * config.in: Add HAVE_X_SM.
+
+       * Makefile.in (LIBXT): Add -lSM -lICE
+       if HAVE_X_SM and not USE_X_TOOLKIT.
+       (XOBJ): New file xsmfns.c added.
+
+       * xsmfns.c: New file for X session management.
+
+2002-03-09  Jason Rumney  <jasonr@gnu.org>
+
+       * fileio.c (Fcopy_file) [WINDOWS_NT]: Ensure file is not
+       read-only when setting modified time.
+
+2002-03-08  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (move_it_vertically_backward): At the end of the function,
+       when moving forward by lines, treat terminal frames specially.
+
+       * keyboard.c (echo_char): Make sure to add a separator between
+       keys even if echo_dash hasn't been called.
+
+       * xdisp.c: Use new string macros.
+       (update_echo_area): Pass number of bytes to message3 instead of
+       number of chars.
+       (set_message_1): Don't access a string's size_byte directly.
+       (decode_mode_spec_coding): Use number of bytes of eoltype string
+       instead number of chars.
+
+       * lisp.h (SREF, SDATA, SCHARS, SBYTES, SMBP): New macros.
+
+2002-03-08  Juanma Barranquero  <lektu@terra.es>
+
+       * w32fns.c (Fx_display_color_cells): Force 24+ bit color depths to
+       24-bit.
+
+2002-03-06  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_draw_hollow_cursor): Draw same size as block cursor.
+
+2002-03-06  Gerd Moellmann  <gerd@gnu.org>
+
+       * keyboard.c (echo_prompt, echo_char, echo_dash, echo_now)
+       (cancel_echoing, echo_length, echo_truncate): Changed to
+       work with new kboard definition.
+       (echo_now): Use message3_nolog instead of message2_nolog.
+
+       * alloc.c (mark_kboards): Mark echo_string.
+
+       * keyboard.h (ECHOBUFSIZE): Removed.
+       (struct kboard): Member echoptr removed, member echobuf renamed
+       to echo_string.
+
+       * xdisp.c (message_with_string): Use Fformat instead of doprnt and
+       message3 instead of message2 to display the message using STRING's
+       text properties.
+
+2002-03-05  Andreas Schwab  <schwab@suse.de>
+
+       * xdisp.c (hscroll_margin): Change to EMACS_INT.
+
+2002-03-05  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * frame.c (default-frame-alist): Explain that setting it doesn't
+       affect existing frames.
+
+2002-03-05  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * indent.c (skip_invisible): Fix my brain fart.
+
+       * dispnew.c (sit_for): Don't wait if executing a kbd macro.
+
+2002-03-04  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * dosfns.c, dosfns.h, dispnew.c, dispextern.h, commands.h, charset.c,
+       * alloc.c, abbrev.c, emacs.c, eval.c, keyboard.c, keyboard.h,
+       * lisp.h, lread.c, sysdep.c, termcap.c, termchar.h, w32term.c,
+       * window.c, xdisp.c, xselect.c, xterm.c: Change defvar_int definition
+       and variables to use EMACS_INT instead of just int.
+
+       * buffer.c (syms_of_buffer): Allow non-string `mode-name'.
+
+2002-03-04  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * sysdep.c (sys_subshell) [MSDOS]: If PWD is set in the
+       environment, pass it down with corrected value.
+
+2002-03-04  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * lread.c (read_filtered_event): Do not call start_hourglass
+       before returning.
+
+2002-03-04  Juanma Barranquero  <lektu@terra.es>
+
+       * w32term.c (x_display_and_set_cursor): Fix typo.
+
+2002-03-03  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fmake_temp_name): Doc fix.
+
+2002-03-03  Gary Wong  <gtw@gnu.org>
+
+       * termcap.c [!emacs]: Replace ospeed for building standalone
+       libtermcap, for binary compatibility.
+
+       * tparam.c [!emacs]: Move #define of bcopy to after string.h.
+
+2002-03-03  Richard M. Stallman  <rms@gnu.org>
+
+       * xrdb.c (file_p): Rename arg `path' to `filename'.
+
+       * abbrev.c (Fexpand_abbrev): Increment plist as use count
+       only if it is an integer.
+
+       * xfns.c (png_load): Set screen_gamma based on f->gamma.
+       If png_get_sRGB gives an answer, call png_set_gamma
+       using the default image gamma value.
+
+       * lread.c (read1): When reading from a file, default string to
+       multibyte only if it has some multibyte characters.
+
+       * print.c (print_object): Output multibyte chars 128...255
+       using \x even if ! print_escape_multibyte.
+
+       * xdisp.c (display_mode_element): Move the places where
+       bytepos, charpos, this, and lisp_string are set.
+       Use lisp_string to set bytepos.
+
+       * xdisp.c (redisplay_internal):
+       Call clear_image_cache only if HAVE_WINDOW_SYSTEM.
+
+       * xdisp.c (display_mode_element): Merge properties specified with
+       :propertize onto those that come with the string.
+
+2002-03-03  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xdisp.c (syms_of_xdisp) <auto-hscroll-mode>: Renamed from
+       automatic-hscrolling.  Users changed.
+       <hscroll-margin>: Renamed from automatic-hscroll-margin.
+       Users changed.
+       <hscroll-step>: Renamed from automatic-hscroll-step.  Users changed.
+
+2002-03-02  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * buffer.c (syms_of_buffer) <buffer-file-coding-system>: Doc fix.
+
+2002-03-02  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Fminibuffer_selected_window): New function.
+       (syms_of_window): Defsubr it.
+
+2002-03-01  Kim F. Storm  <storm@cua.dk>
+
+       * window.h (struct window): New member phys_cursor_width.
+
+       * window.c (make_window, replace_window): Init phys_cursor_width.
+
+       * xterm.c (x_display_and_set_cursor): Blink box cursor using
+       hollow box cursor.  Blink bar cursor using 1 pixel wide bar.
+
+       * w32term.c (x_display_and_set_cursor): Blink box cursor using
+       hollow box cursor.  Blink bar cursor using 1 pixel wide bar.
+
+       * lisp.h (GCPRO6): New macro.
+
+       * process.c (Fopen_network_stream): Use GCPRO6.
+
+2002-03-01  Kim F. Storm  <storm@cua.dk>
+
+       * process.c (Qconnect, Qfailed): New variables.
+       (syms_of_process): Intern and staticpro them.
+       (Fprocess_status): Document connect and failed return values.
+       [NON_BLOCKING_CONNECT]: New conditional.
+       (connect_wait_mask, num_pending_connects): New variables.
+       (status_message): Convert Qfailed status.
+       (Fopen_network_stream): Added support for non-blocking connect.
+       New optional args: filter, sentinel, non_blocking.  Doc updated.
+       [HAVE_GETADDRINFO, !HAVE_GETADDRINFO]: Merged common code.
+       (deactivate_process): Handle pending non-blocking connect.
+       (wait_reading_process_input): Poll for status of non-blocking
+       connects.  Exec sentinel directly when connect succeeds.
+       (status_notify): Don't read process output if not yet connected.
+
+2002-02-28  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (minibuf_selected_window): Renamed from
+       Vminibuf_selected_window.  Users changed.
+       (syms_of_window): Staticpro it.
+
+2002-02-26  Kim F. Storm  <storm@cua.dk>
+
+       The following changes add a new Vminibuf_selected_window variable
+       which is similar to Vminibuf_scroll_window, but which is only set
+       on entry to the minibuffer (from a non-minibuffer window):
+
+       * window.c (Vminibuf_selected_window): New variable.
+       (struct save_window_data): New member minibuf_selected_window.
+       (Fset_window_configuration): Restore Vminibuf_selected_window.
+       (Fcurrent_window_configuration): Save Vminibuf_selected_window.
+       Set minibuf_scroll_window member to nil if minibuf_level is 0.
+       (compare_window_configurations): Compare minibuf_selected_window.
+
+       * window.h (Vminibuf_selected_window): Declare extern.
+
+       * minibuf.c (read_minibuf): Set Vminibuf_selected_window on first
+       entry to minibuffer or on entry from a non-minibuffer window.
+
+       * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): Compare with
+       Vminibuf_selected_window instead of Vminibuf_scroll_window.
+
+       * xdisp.c (init_iterator): Compare with Vminibuf_selected_window
+       instead of Vminibuf_scroll_window when deciding in which window
+       the region should be highlighted.  Consequently, the region remains
+       highlighteded even when a completion buffer is also displayed.
+
+2002-02-26  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * fileio.c (Fsubstitute_in_file_name): Fix the change from 2002-02-08.
+
+       * xselect.c (Qcompound_text_with_extensions): Renamed from
+       Qcompound_text_no_extensions.
+       (lisp_data_to_selection_data, syms_of_xselect): Use the new name.
+
+2002-02-26  Juanma Barranquero  <lektu@terra.es>
+
+       * w32proc.c (syms_of_ntproc): Doc fix.
+
+2002-02-24  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * intervals.h: Include "dispextern.h" unconditionally.
+
+2002-02-24  Jason Rumney  <jasonr@gnu.org>
+
+       * Makefile.in (WINNT_SUPPORT) [WINDOWSNT]: Add w32-vars.elc
+       and disp-table.elc.
+       (lisp): Add emacs-lisp/backquote.elc.
+
+2002-02-24  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (Flookup_key): Fix problem in 2001-12-28 patch:
+       The validation of the event type was too strict as it didn't
+       allow string events; buffer names are used in bindings for
+       menu-bar-select-buffer (see `menu-bar-update-buffers').
+
+2002-02-23  Kim F. Storm  <storm@cua.dk>
+
+       The following changes rework my patch of 2002-02-06 which
+       added command remapping by entering the commands directly into
+       the keymaps.  Now, command remapping uses an explicit `remap'
+       prefix in the keymaps, i.e. [remap COMMAND].
+
+       * keymap.c (Qremap, remap_command_vector): New variables.
+       (is_command_symbol): Remove function.
+       (Fdefine_key): No longer accept a symbol for KEY.
+       Added validation of [remap COMMAND] argument for KEY.
+       The DEF is no longer required to be a symbol when remapping a command.
+       (Fremap_command): New function to remap command through keymaps.
+       (Flookup_key): Perform command remapping initiated by
+       Fremap_command directly for speed.
+       (Fkey_binding): Use Fremap_command for command remapping.
+       (where_is_internal): Handle new command remapping representation.
+       (syms_of_keymap): Intern Qremap, initialize remap_command_vector,
+       staticpro them.  Defsubr Fremap_command.
+
+       * keymap.h (Fremap_command): Declare extern.
+       (is_command_symbol): Remove extern.
+
+       * keyboard.c (command_loop_1): Use Fremap_command for command
+       remapping; now try command remapping for all symbols.
+
+2002-02-23  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * coding.h (run_pre_post_conversion_on_str): Add prototype.
+
+2002-02-23  Jason Rumney  <jasonr@gnu.org>
+
+       * w32select.c (Fw32_set_clipboard_data): Run pre-write-conversion
+       on the string before encoding it.
+       (Fw32_get_clipboard_data): Run post-read-conversion on the string
+       after decoding it.
+
+       * w32fns.c (w32_wnd_proc) <WM_TIMER>: Fix last change.
+
+2002-02-23  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * w32term.c (enter_timestamp): Remove unused static variable to
+       prevent warning.
+
+       * xterm.c (enter_timestamp): Put in #if 0 to prevent warning.
+
+2002-02-23  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * w16select.c (Fw16_get_clipboard_data): Fix last change.
+
+       * xselect.c (selection_data_to_lisp_data): Fix last change.
+
+2002-02-22  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.h (struct w32_output): New member menu_command_in_progress.
+
+       * w32menu.c (menubar_selection_callback): Free the menu and
+       clear the menu_command_in_progress flag.
+
+       * w32fns.c (mouse_move_timer, mouse_button_timer): Initialize.
+       (menu_free_timer): New variable.
+       (MENU_FREE_ID, MENU_FREE_DELAY): New constants.
+       (w32_wnd_proc) <WM_TIMER>: Handle menu_free_timer.
+       <WM_EXITMENULOOP>: Delay before freeing menu.  Do nothing if a
+       menu command is in progress.
+       <WM_COMMAND>: Set the menu_command_in_progress flag.
+       Kill any menu_free_timer that is running.
+
+       * w32term.c (w32_text_out): Renamed from W32_TEXTOUT.
+       Call ExtTextOutA rather than ExtTextOut.
+
+2002-02-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * puresize.h (BASE_PURESIZE): Increase to 755000.
+
+2002-02-22  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * w16select.c (Fw16_set_clipboard_data): Run pre-write-conversion
+       on the string before encoding it.
+       (Fw16_get_clipboard_data): Run post-read-conversion on the string
+       after decoding it.
+
+2002-02-22  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       Support for ICCCM Extended Segments in X selections:
+
+       * xselect.c <Qcompound_text_no_extensions>: New variable.
+       (syms_of_xselect): Intern and staticpro it.
+       (selection_data_to_lisp_data): Run post-read-conversion on decoded
+       selection text.
+       (lisp_data_to_selection_data): If next-selection-coding-system is
+       compound-text-no-extensions, set the type of selection to be
+       compound-text.
+
+       * xterm.h (x_encode_text): Update prototype.
+
+       * xfns.c (x_encode_text): Accept additional arg SELECTIONP; all
+       callers changed.  If SELECTIONP is non-zero, run the
+       pre-write-conversion function before encoding the selection text.
+
+2002-02-21  Kim F. Storm  <storm@cua.dk>
+
+       * frame.c (syms_of_frame): Change mouse-highlight default to t.
+
+       * keyboard.c (kbd_buffer_get_event) [WINDOWSNT]:
+       Correct composing of language-change event.
+
+2002-02-20  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (menu_bar_items): Don't include keymap or local-map
+       bindings at PT when building menu (the menu is not updated often
+       enough for this to work reliable).
+       (tool_bar_items): Likewise.
+       (current_active_maps): Removed unused (and buggy) function.
+
+2002-02-20  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xfns.c (gif_load): Use correct width and height for GIF images.
+
+2002-02-19  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * floatfns.c (Fatan): Accept an optional second arg and call
+       atan2 if passed 2 args.
+
+2002-02-18  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (glyph_rect): Determine the row and glyph more precisely.
+
+2002-02-17  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_autoselect_window_p): New variable.
+       (syms_of_w32term): DEFVAR_BOOL and initialize it.
+       (note_mouse_movement): Use it.
+
+       * w32fns.c (w32_load_system_font): Never set fonts_changed_p to zero.
+
+       * w32bdf.c (w32_load_bdf_font): Maybe set fonts_changed_p.
+
+       * w32fns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth):
+       New variables.
+       (syms_of_w32fns): Intern and staticpro them.
+       (x_frame_parms) <"fullscreen">: New parameter.
+       (x_fullscreen_move, x_set_fullscreen): New functions.
+       (x_set_frame_parameters): Support Qfullscreen.
+       (x_real_positions): Save x/y_pixels_diff frame params.
+       (x_figure_window_size): Support full-screen frames.
+       (Fx_create_frame): Default the fullscreen parameter.
+
+       * w32term.c (x_check_fullscreen, x_check_fullscreen_move)
+       (x_fullscreen_adjust): New functions.
+       (w32_read_socket) <WM_WINDOWPOSCHANGED>: Don't resize to
+       fullscreen.  Call x_check_fullscreen_move, and set the
+       want_fullscreen member of output_data.w32
+       <WM_ACTIVATE, WM_ACTIVATEAPP>: Call x_check_fullscreen.
+
+       * w32term.h: New enum for FULLSCREEN_* constants.
+       (struct w32_output): New members want_fullscreen, x_pixels_diff,
+       y_pixels_diff, x_pixels_outer_diff, and y_pixels_outer_diff.
+       (x-fullscreen-adjust): New prototype.
+
+2002-02-17  Kim F. Storm  <storm@cua.dk>
+
+       * frame.c (Vmouse_highlight): New variable.
+       (syms_of_frame): DEFVAR_LISP it.
+
+       * frame.h (Vmouse_highlight): Declare extern.
+
+       * xterm.h (struct x_display_info): Add mouse_face_hidden.
+
+       * xterm.c (disable_mouse_highlight): Removed variable.
+       (note_mouse_highlight): Don't highlight if Vmouse_highlight is nil.
+       (show_mouse_face): Don't show highlight if mouse_face_hidden is set.
+       (XTread_socket): Turn mouse_face_hidden off after mouse movement,
+       and on after keyboard input.
+       (x_term_init): Initialize mouse_face_hidden.
+
+       * msdos.h (struct display_info): Add mouse_face_hidden.
+
+       * msdos.c (disable_mouse_highlight): Removed variable.
+       (show_mouse_face): Don't show highlight if mouse_face_hidden is set.
+       (IT_note_mouse_highlight): Don't highlight if Vmouse_highlight is nil.
+       (internal_terminal_init): Initialize mouse_face_hidden.
+       (dos_rawgetc): Turn mouse_face_hidden off after mouse movement,
+       and on after keyboard input.
+
+       * w32term.h (struct w32_display_info): Add mouse_face_hidden.
+
+       * w32term.c (disable_mouse_highlight): Removed variable.
+       (note_mouse_highlight): Disable highlight if Vmouse_highlight is nil.
+       (show_mouse_face): Don't show highlight if mouse_face_hidden is set.
+       (w32_read_socket): Turn mouse_face_hidden off after mouse movement,
+       and on after keyboard input.
+       (w32_initialize_display_info): Initialize mouse_face_hidden.
+
+2002-02-16  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (last_mouse_window): New variable.
+       (dos_rawgetc): Fix last change--if the mouse is in the same window
+       as recorded in last_mouse_window, don't select this window.
+
+       * Makefile.in (lisp, shortlisp): Use cus-start.elc, not cus-start.el.
+
+       * msdos.c (x_autoselect_window_p): New variable.
+       (syms_of_msdos): Defvar it.
+       (dos_rawgetc): If x_autoselect_window_p is set, select the window in
+       which the last mouse movement occured, unless it is already selected.
+
+       * xdisp.c (automatic_hscroll_margin, Vautomatic_hscroll_step):
+       New variables.
+       (syms_of_xdisp): DEVFAR them.
+       (hscroll_window_tree): Use automatic_hscroll_margin and
+       Vautomatic_hscroll_step to compute the amount of window scrolling.
+
+2002-02-16  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xterm.c (x-autoselect-window): New variable.
+       (note_mouse_movement): Use it.
+
+       * keyboard.c: Do not include "systime.h" twice.
+
+2002-02-15  Andreas Schwab  <schwab@suse.de>
+
+       * puresize.h (PURESIZE_RATIO): Increase to 9/5.
+
+       * alloc.c (NSTATICS): Increase to 1280.
+
+2002-02-15  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * alloc.c (NSTATICS): Bump to 1026.
+
+       * xterm.c (Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
+       (Vx_super_keysym): New variables.
+       (syms_of_xterm): DEFVAR_LISP them.
+       (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Use the
+       variables to determine which keys to use for the various modifiers.
+
+2002-02-13  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Vmode_line_in_non_selected_windows): Removed.
+       (mode_line_in_non_selected_windows): New variable.
+       (syms_of_window): DEFVAR_BOOL it.
+
+       * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3):
+       Use mode_line_in_non_selected_windows.
+       (mode_line_in_non_selected_windows): Declare extern.
+       (Vmode_line_in_non_selected_windows): Removed extern.
+
+2002-02-13  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector)
+       (Fthis_single_command_keys, Fthis_single_command_raw_keys)
+       (Fclear_this_command_keys): Doc fixes.
+
+       * xfaces.c (Finternal_make_lisp_face, Finternal_copy_lisp_face)
+       (update_face_from_frame_parameter): Increment face_change_count
+       and windows_or_buffers_changed to force redisplay using changed faces.
+
+       * xdisp.c (QCpropertize): New variable.
+       (mode_line_proptrans_alist): New variable.
+       (display_mode_element): New arg PROPS; all calls changed.
+       Implement this, for strings.
+       Handle literal output of strings by sharing the
+       main-line code for strings, using local var `literal'.
+       Handle :propertize feature.
+       (syms_of_xdisp): Initialze and staticpro QCpropertize and
+       mode_line_proptrans_alist.
+
+2002-02-11  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (Vmode_line_in_non_selected_windows): New variable.
+       (syms_of_window): DEFVAR_LISP it.
+
+       * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): New macro.
+       (CURRENT_MODE_LINE_FACE_ID): Use it.
+       (Vmode_line_in_non_selected_windows): Declare extern.
+
+       * xdisp.c (display_mode_lines): Use CURRENT_MODE_LINE_FACE_ID_3
+       to get mode line face.
+
+2002-02-11  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (Vx_bitmap_file_path, x_stretch_cursor_p): Remove these
+       variables; cus-start.el doesn't need them anymore.
+
+2002-02-09  Kim F. Storm  <storm@cua.dk>
+
+       * insdel.c (make_gap_smaller): Preserve BEG_UNCHANGED during gap
+       reduction.  This fixes a display problem where stray newlines were
+       inserted in the window (corrected by C-l).  Clarified code (IMHO).
+
+2002-02-09  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * dispextern.h (CURRENT_MODE_LINE_FACE_ID): Fix last change.
+
+       * xdisp.c (display_mode_lines): Fix last change.
+
+2002-02-09  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (enum_font_cb2): Don't let charsets unknown to Windows
+       match each other.
+       (w32_load_system_font): Prevent Cleartype fonts from loading.
+       (Fx_show_tip): Ensure tip frames are above other topmost windows.
+
+2002-02-09  Kim F. Storm  <storm@cua.dk>
+
+       * dispextern.h (CURRENT_MODE_LINE_FACE_ID): New macro.
+       (CURRENT_MODE_LINE_HEIGHT): Use it.
+       (enum face_id): Add MODE_LINE_INACTIVE_FACE_ID.
+
+       * xdisp.c (window_box_height): Use CURRENT_MODE_LINE_FACE_ID.
+       (pos_visible_p, handle_face_prop): Likewise.
+       (display_mode_lines): Likewise, but for the real selected window.
+       (init_iterator) [row == NULL]: Handle MODE_LINE_INACTIVE_FACE_ID.
+
+       * xfaces.c (Qmode_line_inactive): New face variable for mode-line
+       in non-selected windows.
+       (realize_basic_faces): Realize it.
+       (syms_of_term): Intern and staticpro it.
+
+2002-02-08  Kim F. Storm  <storm@cua.dk>
+
+       * alloc.c (SETJMP_WILL_LIKELY_WORK, SETJMP_WILL_NOT_WORK):
+       Changed mail addresses to emacs-devel@gnu.org.
+
+2002-02-08  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * fileio.c (Fsubstitute_in_file_name): If the file name includes
+       ~user, and there's no such user, don't discard everything before ~user.
+
+       * floatfns.c (Fround): Doc fix.
+
+2002-02-08  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * sysdep.c (init_system_name): Put unused variable `p' in #if 0.
+
+2002-02-07  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lisp.h (Fx_file_dialog): Add extern decl (used in fileio.c).
+
+2002-02-07  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (where_is_internal): Only check whether definition is
+       remapped if it fulfills is_command_symbol.
+
+2002-02-07  Andreas Schwab  <schwab@suse.de>
+
+       * s/gnu-linux.h (GC_LISP_OBJECT_ALIGNMENT): Define to 2 for m68k.
+
+       * alloc.c (mark_stack): Don't assume sizeof (Lisp_Object) is 4.
+
+2002-02-06  Kim F. Storm  <storm@cua.dk>
+
+       * keymap.c (Fdefine_key): Allow symbol as KEY argument for
+       defining command remapping.  Doc updated.
+       (Flookup_key): Remap command through keymap if KEY is a symbol.
+       (is_command_symbol): New function.
+       (Fkey_binding): Use it.  New optional argument NO-REMAP.
+       Doc updated.  Callers changed.  Perform command remapping via
+       recursive call unless that arg is non-nil.
+       (where_is_internal): New argument no_remap.  Callers changed.
+       Call recursively to find original key bindings for a remapped
+       comand unless that arg is non-nil.
+       (Fwhere_is_internal): New optional argument NO-REMAP.
+       Doc updated.  Callers changed.  Pass arg to where_is_internal.
+
+       * keymap.h (Fkey_binding, Fwhere_is_internal): Update prototype.
+       (is_command_symbol): Add prototype.
+
+       * keyboard.c (Vthis_original_command): New variable.
+       (syms_of_keyboard): DEFVAR_LISP it.
+       (command_loop_1): Set it, and perform command remapping.
+
+2002-02-06  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * keyboard.c (recursive_edit_1): Call cancel_hourglass unconditionally.
+
+2002-02-06  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_native_per_char_metric): Disable 2002-01-20 change.
+
+2002-02-06  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * charset.c (get_charset_id): Use if-else instead of ?:.
+
+2002-02-06  Richard M. Stallman  <rms@gnu.org>
+
+       * filelock.c (S_ISLNK): Define if not defined.
+
+2002-02-03  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fdo_auto_save): Improve "auto save disabled" msg.
+
+       * lread.c (read1): Redesign strategy for force_multibyte and
+       force_singlebyte.  Now is_multibyte records whether read_buffer
+       is multibyte.  Encountering any multibyte character makes it so.
+
+2002-02-02  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * term.c (term_get_fkeys_1): If `k0' and `k;' are both specified and
+       with the same sequence, map that sequence to f10 rather than f0.
+
+2002-02-03  Andreas Schwab  <schwab@suse.de>
+
+       * s/gnu-linux.h: Check for __mc68000__ instead of __m68k__, the
+       latter never being defined on GNU/Linux.
+
+2002-02-02  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xfaces.c (realize_default_face): Don't set the weight and slant of
+       the default face to Qnormal, unless these attributes are unspecified.
+
+2002-02-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * keyboard.c (command_loop_1) [HAVE_X_WINDOWS]:
+       Call cancel_hourglass unconditionally.
+
+       * eval.c (Fsignal): Remove duplicated declaration of
+       the variable `display_hourglass_p'.
+
+2002-01-31  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (region_limit): Nicer error message.
+
+       * coding.c (decode_composition_emacs_mule):
+       Give up if NCOMPONENT gets too large to index `component'.
+
+       * callint.c (check_mark): New arg to specify clearer error message.
+       Callers changed.
+
+2002-01-27  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (Fcompleting_read): Doc fix.
+
+2002-01-27  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * minibuf.c (Fread_from_minibuffer, Fread_command, Fread_function)
+       (Fread_variable, Fread_buffer, minibuffer-completion-confirm):
+       Fix doc-strings.
+
+2002-01-26  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (syms_of_buffer): Doc fixes for scroll-...-aggressively.
+
+       * xdisp.c (try_scrolling): Exchange uses of scroll_down_aggressively
+       and scroll_up_aggressively.
+
+2002-01-26  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * keyboard.c (parse_tool_bar_item): Remove duplicated prototypes.
+
+2002-01-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * textprop.c (Fnext_property_change, Fnext_single_property_change)
+       (Fprevious_property_change, Fprevious_single_property_change):
+       Stay within the narrowed-buffer boundaries.
+
+2002-01-25  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * term.c (Ftty_display_color_cells): New function.
+       (syms_of_term): Defsubr it.
+       (Ftty_display_color_cells, Ftty_display_color_p): Change the
+       argument name to DISPLAY.  Doc fix.
+
+       * dispextern.h: Add prototype for set_tty_color_mode and
+       tty_setup_colors.
+
+2002-01-24  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_scroll_run): Use ScrollWindowEx in place of BitBlt.
+       If region left to draw is not what was expected, mark the frame as
+       garbaged.
+
+       * w32fns.c (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
+       Combine the regions returned by BeginPaint and GetUpdateRect.
+
+2002-01-23  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_update_window_begin): Only hide caret if
+       w32_use_visible_system_caret is set.
+       (x_update_window_end): Only show caret if
+       w32_use_visible_system_caret is set.
+       (syms_of_w32term): Handle SystemParametersInfo call failing.
+
+       * w32fns.c (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
+
+2002-01-22  Richard M. Stallman  <rms@gnu.org>
+
+       * unexelf.c (unexec): Define n so as to cause compilation error
+       for the code where people have often written n instead of nn.
+
+       * .gdbinit (hookpost-run): Defined.
+
+2002-01-22  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (x_set_frame_parameters): Typo in previous fix corrected.
+
+2002-01-21  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (x_set_frame_parameters): Just call x_fullscreen_adjust
+       if fullscreen is being set.
+
+2002-01-21  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * minibuf.c (Fminibuffer_contents)
+       (Fminibuffer_contents_no_properties, Fread_from_minibuffer)
+       (Fread_string, Fread_no_blanks_input, Fcompleting_read): Doc fixes.
+
+2002-01-21  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (check_frame_size): Fix minimum height calculation.
+
+2002-01-20  Ken Raeburn  <raeburn@gnu.org>
+
+       * dispextern.h (WINDOW_WANTS_MODELINE_P): Use XFASTINT on window
+       height before comparison.
+       (WINDOW_WANTS_HEADER_LINE_P): Likewise.
+
+2002-01-20  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_system_caret_width): Remove.
+       (w32_use_visible_system_caret): New user flag.
+       (syms_of_w32term): DEFVAR_BOOL it.  Initialize based on whether
+       Windows reports a screen reader running.
+       (x_update_window_begin): Hide the system caret.
+       (x_update_window_end): Show the system caret.
+       (x_display_and_set_cursor): Don't draw a cursor when
+       w32_use_visible_system_caret is set.  Do not adjust width.
+
+       * w32fns.c (w32_visible_system_caret_hwnd): New static variable.
+       (w32_wnd_proc) <WM_KILL_FOCUS, WM_EMACS_DESTROY_CARET>: Set it.
+       <WM_EMACS_TRACK_CARET>: Arrange for system caret to be visible if
+       the user requests it.  Use system default width when creating.
+       <WM_EMACS_HIDE_CARET, WM_EMACS_SHOW_CARET>: Handle new messages.
+
+       * w32term.h (WM_EMACS_SHOW_CARET, WM_EMACS_HIDE_CARET):
+       New window messages.
+
+2002-01-20  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (MIN_SAFE_WINDOW_HEIGHT): Value now 1.
+
+2002-01-20  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * doprnt.c (doprnt1): Fix typos in error call.
+
+2002-01-20  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * unexelf.c (unexec) [__sgi]: Support the .got sections.
+
+2002-01-20  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_native_per_char_metric): Don't trust the metrics
+       that Windows returns.  If a double check fails, try to guess how
+       ExtTextOut is going to act.
+
+       * w32fns.c (w32_load_system_font, w32_to_x_charset): Use strnicmp
+       in place of stricmp.
+       (w32_list_synthesized_fonts): Removed.
+       (w32_to_all_x_charsets, enum_font_maybe_add_to_list): New functions.
+       (struct enumfont_t): New element; list.
+       (enum_font_cb2): List all style and charset variations of a font.
+       (Fw32_select_font): New optional argument; include_proportional.
+       Exclude vertical fonts.  Exclude proportional fonts unless
+       include_proportional is non-nil.
+       (w32_enable_synthesized_fonts): Change to a boolean.
+       (Fw32_send_sys_command): Doc fix.
+
+2002-01-19  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * dispnew.c (update_frame): Move the variable `tem' to the block
+       where it is used.
+
+2002-01-19  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (Fx_create_frame): Bind redisplay-dont-pause around
+       call to face-set-after-frame-default.
+
+2002-01-18  Richard M. Stallman  <rms@gnu.org>
+
+       * dispextern.h (WINDOW_WANTS_MODELINE_P): Check window height > 1.
+       (WINDOW_WANTS_HEADER_LINE_P): Check window height provides room.
+
+2002-01-17  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (enlarge_window): When exceeding size of parent,
+       directly delete all the siblings instead of trying to resize it.
+
+2002-01-17  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * term.c (set_tty_color_mode): Remove unused variable `tem'.
+
+2002-01-16  Henrik Enberg  <henrik@enberg.org>
+
+       * lread.c (init_lread): Move the installed-lisp dirs later in the path.
+
+2002-01-16  Kim F. Storm  <storm@cua.dk>
+
+       * xterm.c (x_erase_phys_cursor): Don't erase cursor if cursor row
+       is invisible.  This can happen if cursor is on top line of a
+       window, and we switch to a buffer with a header line.
+
+       * w32term.c (x_erase_phys_cursor): Ditto.
+
+2002-01-16  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xterm.c (XTread_socket) [!USE_X_TOOLKIT]: Compute the value of
+       `dont_resize' only when used.
+
+       * xdisp.c: Remove forgotten extern declaration of `Qimage'.
+
+2002-01-15  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xdisp.c (display_mode_element): When computing charpos, depend
+       on multibyteness of elt, not the text in field.
+
+2002-01-15  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * buffer.c (Fkill_all_local_variables):
+       Increment `update_mode_lines' only once.
+
+2002-01-14  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * lisp.h (adjust_after_replace_noundo)
+       (Fupdate_coding_systems_internal): Add prototypes.
+
+       * sound.c (Fplay_sound): Initialize header_size also for :data case.
+
+2002-01-14  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       Support for the --color command-line argument and tty-color-mode
+       frame parameter:
+
+       * term.c (tty_default_color_capabilities, tty_setup_colors)
+       (set_tty_color_mode): New functions.
+       (term_init): Call tty_default_color_capabilities.
+       (Qtty_color_mode_alist): New variable.
+       (syms_of_term): Intern and staticpro it.
+
+       * frame.c (store_frame_param): Call set_tty_color_mode for termcap
+       frames.
+       (do_switch_frame): For termcap frames, switch the tty
+       color mode as specified by the frame's parameters.
+       (Qtty_color_mode): New variable.
+       (syms_of_frame): Intern and staticpro it.
+
+       * emacs.c (USAGE2): Add the --color option.
+       (standard_args): Ditto.
+
+2002-01-13  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.h (struct x_output): New members want_fullscreen,
+       x_pixels_diff, y_pixels_diff, x_pixels_outer_diff, and
+       y_pixels_outer_diff.
+       New enum for FULLSCREEN_* constants.
+       (FRAME_OUTER_WINDOW): Handle the case where output_data.x->widget
+       is NULL.
+       (x_fullscreen_adjust): Add prototype.
+
+       * emacs.c (USAGE2): Add the new full-screen arguments.
+       (standard_args): Ditto.
+
+       * xfns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth):
+       New variables.
+       (syms_of_xfns): Intern and staticpro them.
+       (x_frame_parms) <"fullscreen">: New parameter.
+       (x_fullscreen_move, x_set_fullscreen): New functions.
+       (x_set_frame_parameters): Support for Qfullscreen.
+       (x_real_positions): More accurate computation of the frame position.
+       (x_figure_window_size): Support full-screen frames.
+       (Fx_create_frame): Default the fullscreen parameter.
+
+       * xterm.c (x_check_fullscreen, x_fullscreen_adjust): New functions.
+       (XTread_socket) <Expose>: Call x_check_fullscreen.
+       <ConfigureNotify>: Don't resize to fullscreen.
+       Call x_check_fullscreen_move, and set the want_fullscreen member of
+       output_data.x.
+
+2002-01-13  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.h (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages
+       for mice with more than 3 buttons.
+
+       * w32term.c (parse_button): New parameter xbutton.  Callers changed.
+       (w32_read_socket): Handle new "XBUTTON" messages.
+
+       * w32fns.c (w32_pass_extra_mouse_buttons_to_system): New user option.
+       (syms_of_w32fns): DEFVAR_BOOL it.
+       (w32_wnd_proc): Handle new "XBUTTON" messages.
+
+2002-01-13  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * keyboard.c (read_key_sequence): Remove unused variable `extra_maps'.
+
+2002-01-13  Andreas Schwab  <schwab@suse.de>
+
+       * xterm.c (x_load_font): Never set fonts_changed_p to zero.
+
+2002-01-12  Andreas Schwab  <schwab@suse.de>
+
+       * .gdbinit (xbuffer): Remove address operator since data is now a
+       pointer.
+
+2002-01-11  Richard M. Stallman  <rms@gnu.org>
+
+       * insdel.c (adjust_after_replace_noundo): New function.
+
+       * coding.c (code_convert_region): Don't copy old text if undo disabled.
+
+2002-01-09  Jason Rumney  <jasonr@gnu.org>
+
+       * xdisp.c (x_consider_frame_title): Don't count the tooltip frame
+       when checking for multiple frames.
+
+2002-01-08  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (delete_window): Rewrite the code for changing the
+       selected window to handle the case where WINDOW is not a leaf.
+
+2002-01-07  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * process.c (send_process): Set src_multibyte to 1 after the call
+       top setup_coding_system, not before the call.
+
+2002-01-07  Jason Rumney  <jasonr@gnu.org>
+
+       * xmenu.c (set_frame_menubar, xmenu_show):
+       (xdialog_show): Initialize wv->help to Qnil.
+
+       * w32menu.c (single_submenu, set_frame_menubar, w32_menu_show):
+       (w32_dialog_show): Initialize wv->help to Qnil.
+
+2002-01-06  Jason Rumney  <jasonr@gnu.org>
+
+       * xmenu.c (single_submenu): Initialize wv->help to Qnil.
+
+       * w32menu.c (w32_menu_display_help): Revert last change.
+
+       * xmenu.c (menu_highlight_callback): Revert last change.
+
+2002-01-06  Andreas Schwab  <schwab@suse.de>
+
+       * insdel.c (make_gap_larger): Make sure buffer size does not
+       overflow range of int.
+
+2002-01-05  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_draw_glyphs): Don't call notice_overwritten_cursor if
+       OVERLAPS_P.
+
+       * w32menu.c (w32_menu_display_help): Hide any tooltip window.
+
+       * w32fns.c (compute_tip_xy): If tooltip won't fit on the screen
+       to the left or to the right of the pointer, put it against
+       the left screen edge.
+       (x_frame_parms): Add missing braces around initializer.
+
+       * w32term.c (x_setup_relief_colors): Don't compute an image's
+       background color if it doesn't have a Pixmap.
+       (notice_overwritten_cursor): Don't depend on
+       output_cursor and updated_area.  Compare pixel coordinates with
+       window's cursor pixel coordinates.
+       (x_draw_glyphs, x_clear_end_of_line, show_mouse_face):
+       Call notice_overwritten_cursor with new arg list.
+       (show_mouse_face): Fix bug setting a row's mouse_face_p flag
+       unconditionally.
+       (x_draw_image_relief): Use predefined macro instead of
+       constant when the value of `tool_bar_button_relief' is negative.
+
+       * w32term.c (x_display_and_set_cursor): Fix PostMessage arg types.
+
+2002-01-04  Richard M. Stallman  <rms@gnu.org>
+
+       * xmenu.c (menu_highlight_callback): Hide any tooltip window.
+
+2002-01-03  Richard M. Stallman  <rms@gnu.org>
+
+       * keymap.c (Fcurrent_active_maps): Put the `keymap' property map first.
+       (Fkey_binding): Try the `keymap' property map first.
+       (Fdescribe_buffer_bindings): Show `keymap' property bindings before
+       minor mode bindings.
+
+2002-01-03  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (read_key_sequence): Fix cast of submaps arg to bcopy.
+
+2002-01-02  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (read_key_sequence): Handle the keymap property
+       before minor mode maps.
+
+       * editfns.c (Fformat): Update thissize from field_width
+       based on the actual width, in the string case.
+
+2002-01-01  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * charset.h (UNIBYTE_STR_AS_MULTIBYTE_P): Parenthesize assignment
+       when used as truth value to prevent gcc warnings.
+
+       * sysdep.c, unexapollo.c, w32.c, w32bdf.c, w32heap.c, w32inevt.c,
+       * w32proc.c: Include <config.h>.
+
+2002-01-01  Andreas Schwab  <schwab@suse.de>
+
+       * eval.c (max_specpdl_size, max_lisp_eval_depth): Define as int,
+       not EMACS_INT, to make them compatible with DEFVAR_INT.
+       * lisp.h (max_specpdl_size): Adjust declaration.
+
+2002-01-01  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (print_object): Test print_escape_nonascii only for
+       unibyte strings.
+       (PRINTPREPARE): Once again bind Qprint_escape_nonascii
+       when outputting to a multibyte buffer.
+
+2001-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (print_object): In multibyte string, use hex escapes.
+       Use octal only for unibyte strings.
+       (PRINTPREPARE): Don't ever set Qprint_escape_nonascii.
+
+       * lread.c (read_escape): New arg BYTEREP for reporting whether
+       escape forces unibyte or multibyte.
+       (read1): When reading a string, take note of that info.
+
+2001-12-29  Ken Raeburn  <raeburn@gnu.org>
+
+       * abbrev.c (Fexpand_abbrev): Use NILP instead of implicit zero
+       comparison to test lisp value returned by Fget.
+
+2001-12-29  Richard M. Stallman  <rms@gnu.org>
+
+       * lisp.h (max_specpdl_size): Add declaration.
+
+       * fileio.c (Fdo_auto_save): If NO_MESSAGE, don't call push_message.
+
+       * keymap.c (silly_event_symbol_error): New subrtn, from Fdefine_key.
+       Handle modifier bits.  Correct typo in error message.
+
+2001-12-28  Richard M. Stallman  <rms@gnu.org>
+
+       * abbrev.c: Use the plist of an abbrev for multiple params if nec.
+       (Fdefine_abbrev): New arg SYSTEM-FLAG for a system abbrev.
+       (Fdefine_global_abbrev, Fdefine_mode_abbrev):
+       Update calls to Fdefine_abbrev.
+       (write_abbrev): Update for changed data format.
+       Don't list "system" abbrevs.
+       (Fexpand_abbrev): Update use count with new data format.
+       (describe_abbrev): Update for changed data format.
+       (Fdefine_abbrev_table): Handle the new SYSTEM-FLAG.
+
+       * config.in (HAVE_MBSINIT): Add #undef.
+
+       * strftime.c (mbsinit): Define as no-op if not available.
+
+       * s/sco5.h (LIBX11_SYSTEM) [MOTIF]: Add -lgen.
+       (sigprocmask_set): Conditionalize decl on ! NOT_C_CODE.
+
+       * keymap.c (Flookup_key): Error message if key has wrong data type.
+       (Fdefine_key): Add error message for trying to bind [DEL], [RET], etc.
+       (exclude_key): New variable.
+
+2001-12-28  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_setup_relief_colors): Don't compute an image's
+       background color if it doesn't have a Pixmap.
+
+       * xterm.c (notice_overwritten_cursor): Don't depend on
+       output_cursor and updated_area.  Compare pixel coordinates with
+       window's cursor pixel coordinates.
+       (x_draw_glyphs, x_clear_end_of_line, show_mouse_face):
+       Call notice_overwritten_cursor with new arg list.
+       (show_mouse_face): Fix bug setting a row's mouse_face_p flag
+       unconditionally.
+
+       * xdisp.c (try_scrolling) <PT below scroll margin>: Add the
+       height of the cursor line to the amount to scroll.
+
+2001-12-27  Richard M. Stallman  <rms@gnu.org>
+
+       * intervals.c (set_point_both): The position after an invisible,
+       intangible character is not an acceptable stopping point.
+
+2001-12-27  Ken Raeburn  <raeburn@gnu.org>
+
+       * window.c (enlarge_window): In new preserve_before code, convert
+       CURBEG from lisp object to integer before doing arithmetic.
+
+2001-12-27  Richard M. Stallman  <rms@gnu.org>
+
+       * bytecode.c (Fbyte_code): Undo previous change.
+
+2001-12-26  Kim F. Storm  <storm@cua.dk>
+
+       * keyboard.c (record_char): Ignore duplicate help-echo events only
+       separated by mouse-movement.  When tracking mouse, only record
+       first and last mouse-movement event in same window.
+       Don't record mouse-movement events in keyboard macros.
+
+2001-12-25  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (enlarge_window): New arg PRESERVE_BEFORE.  Callers changed.
+       (Fenlarge_window): New arg PRESERVE_BEFORE.
+
+       * bytecode.c (Fbyte_code): Use Fstring_make_unibyte
+       instead of Fstring_as_unibyte.
+
+2001-12-22  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       The following changes remove mocklisp support:
+
+       * mocklisp.h, mocklisp.c: Files removed.
+
+       * lisp.h: Remove declarations of variables `Vmocklisp_arguments',
+       `Qmocklisp' and `Qmocklisp_arguments'.
+       Remove prototype of syms_of_mocklisp.
+
+       * makefile.nt, makefile.w32-in, Makefile.in: Remove mocklisp files.
+
+       * callint.c: Do not include mocklisp.h.
+       (Fcall_interactively): Do not test for mocklisp case.
+
+       * eval.c: Remove variables `Qmocklisp_arguments',
+       `Vmocklisp_arguments' and `Qmocklisp'.  Remove prototype of ml_apply.
+       (Fprogn, Fwhile, Fcommandp, Feval, Ffuncall, funcall_lambda):
+       Do not test for mocklisp case.
+       (Fwhile): Remove unused variable `tem'.
+       (syms_of_eval): Remove variable `moclisp-arguments'.
+
+       * data.c (wrong_type_argument): Remove mocklisp case.
+
+       * doc.c (Fdocumentation): Remove mocklisp case.
+
+       * emacs.c (main): Do not call syms_of_mocklisp.
+
+2001-12-21  Richard M. Stallman  <rms@gnu.org>
+
+       * xfns.c (compute_tip_xy): If tooltip won't fit on the screen
+       to the left or to the right of the pointer, put it against
+       the left screen edge.
+
+2001-12-21  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (distclean): Remove .gdbinit if we are building
+       outside the source tree.
+
+2001-12-19  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * w32.c (emacs_root_dir): New function.
+
+       * msdos.c (emacs_root_dir): New function.
+
+       * fileio.c (Fexpand_file_name) [DOS_NT]: Use the root directory
+       of the current drive as the fallback for default_directory.
+
+       * dired.c (file_name_completion): Run the elements of
+       completion-ignored-extensions through ENCODE_FILE.
+
+       * lisp.h (scmp): Remove prototype, since it's now a static
+       function private to dired.c.
+
+2001-12-18  Richard M. Stallman  <rms@gnu.org>
+
+       * dired.c (scmp): Function moved from minibuf.c.
+       Delete multibyte handling--used only on encoded strings.
+
+       * minibuf.c (scmp): Function moved to dired.c.
+
+       * fns.c (merge): Add QUIT call.
+
+2001-12-18  Dave Love  <fx@gnu.org>
+
+       * Makefile.in (lisp, shortlisp): Add language/utf-8-lang.el,
+       language/georgian.el.
+
+2001-12-18  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * Makefile.in (lisp, shortlisp): Synchronize with changes to
+       lisp/Makefile.in:DONTCOMPILE.
+
+2001-12-18  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xdisp.c (window_box_height): Do not return negative values.
+       From Gerd Moellmann <gerd@gnu.org>.
+
+       * keyboard.c (head_table): Add missing braces around initializer.
+
+       * term.c (keys): Likewise.
+
+       * xfns.c (x_frame_parms, visual_classes): Likewise.
+
+2001-12-17  Sam Steingold  <sds@gnu.org>
+
+       * coding.c (DECODE_COMPOSITION_END): Fixed a typo in the last
+       patch (COMPOSING_P, not COMPOSING).
+
+2001-12-17  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fcompare_buffer_substrings): Add QUIT to main loop.
+
+       * coding.c (code_convert_region): Update coding->cmp_data->char_offset
+       before calling decode_coding.
+
+       * charset.c (Fdefine_charset): Call Fupdate_coding_systems_internal.
+
+       * coding.c (DECODE_COMPOSITION_END): Check for ! COMPOSING_P (coding)
+       instead of only for COMPOSITION_DISABLED.
+
+2001-12-16  Richard M. Stallman  <rms@gnu.org>
+
+       * alloc.c (pure_alloc): After overflow, allocate just a small block.
+
+       * Makefile.in (xmenu.o, xterm.o, fontset.o): Depend on buffer.h.
+
+       * buffer.h (struct buffer): New field `display_error_modiff'.
+       * buffer.c (reset_buffer): Initialize `display_error_modiff'.
+
+       * window.c (Frecenter): Clear display_error_modiff field.
+
+       * xdisp.c (redisplay_window_0, redisplay_window_1): New functions.
+       Call redisplay_window, but not if display_error_modiff field says no.
+       (redisplay_window_error): New function.
+       (displayed_buffer): New variable.
+       (redisplay_internal, redisplay_windows): Call the new functions
+       instead of redisplay_window directly.
+
+2001-12-15  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (syms_of_keyboard) <double-click-fuzz>: Doc fix.
+
+2001-12-14  Andrew Innes  <andrewi@gnu.org>
+
+       * makefile.w32-in (EMACSLOADPATH): Define.
+       ($(EMACS)): Run `list-load-path-shadows' after dumping Emacs.
+       (bootstrap-temacs): Remove dependency on bootstrap-clean.
+
+2001-12-13  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xfns.c (x_report_frame_params): Make the scroll-bar-width frame
+       parameter have a numeric value all the time.
+
+       * w32fns.c (x_report_frame_params): Likewise.
+
+2001-12-12  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fwrite_region): Doc fix.
+
+       * xdisp.c (CLEAR_FACE_CACHE_COUNT): Redefine as 500.
+       (redisplay_internal): Call clear_image_cache only for window terminals.
+
+2001-12-12  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (move_it_vertically_backward): Change heuristic
+       for the case that we didn't move far enough initially.
+
+       * window.c (Frecenter): Simplify computation in the case of window
+       system frames and ARG < 0; use window_box_height.
+
+2001-12-11  Richard M. Stallman  <rms@gnu.org>
+
+       * Makefile.in, mem-limits.h, dispnew.c, emacs.c, fileio.c:
+       * process.c, sysdep.c, unexec.c: Test GNU_LINUX, not LINUX.
+
+2001-12-11  Andrew Innes  <andrewi@gnu.org>
+
+       * insdel.c (make_gap) [DOUG_LEA_MALLOC]: Call make_gap_smaller if
+       arg is negative.
+
+2001-12-11  Richard M. Stallman  <rms@gnu.org>
+
+       * m/hp800.h: Split the __hpux conditional into the parts
+       that are right for GNU/Linux too and the parts that are not.
+       Use the former if GNU_LINUX.
+       (HAVE_ALLOCA, LOAD_AVE_TYPE, LOAD_AVE_CVT): New defs for GNU/Linux.
+
+       * s/gnu-linux.h (GNU_LINUX): Defined.
+
+2001-12-11  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * macros.c, msdos.c, w16select.c: Change doc-string comments to
+       `new style' [w/`doc:' keyword].
+
+2001-12-10  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (w32_free_submenu_strings): Clear menu item struct
+       before using.
+
+2001-12-09  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * dosfns.c: Change doc-string comments to `new style' [w/`doc:'
+       keyword].
+
+2001-12-09  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * dosfns.c (dos-display-scancodes, dos-decimal): Doc fix.
+
+       * s/hpux10.h (srand48): Don't undefine.
+
+2001-12-09  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (_widget_value): Make `help' field a Lisp_Object.
+       Add comment to explain where the struct came from.
+       (single_submenu, w32_menu_show): Set `help' field as Lisp_Object.
+       (add_menu_item): Process pop-up menus first to avoid memory leak.
+       (add_menu_item, w32_menu_display_help): Use `help' field as
+       Lisp_Object.
+       (w32_free_submenu_strings): Only free owner-drawn strings.
+
+2001-12-09  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * COPYING: Moved back.
+
+       * charset.c (char_to_string_1, translate_char, Fdefine_charset):
+       Add parentheses around && within ||.
+
+       * indent.c (compute_motion): Likewise.
+
+       * intervals.c (merge_properties_sticky): Likewise.
+
+       * coding.c (setup_coding_system, shrink_encoding_region)
+       (Fdecode_sjis_char): Likewise.
+
+2001-12-07  Andreas Schwab  <schwab@suse.de>
+
+       * xdisp.c (display_mode_element): Don't read past end of string if
+       it ends with '%'.
+
+       * alloc.c (inhibit_garbage_collection): Don't exceed value an int
+       can hold.
+
+       * data.c (Vmost_positive_fixnum, Vmost_negative_fixnum):
+       Rename from most_positive_fixnum and most_negative_fixnum, resp., and
+       type changed to Lisp_Object.
+       (syms_of_data): DEFVAR_LISP them.
+
+2001-12-07  Richard M. Stallman  <rms@gnu.org>
+
+       * callproc.c (init_callproc): Set Vdata_directory based on the source
+       location whenever Emacs was run uninstalled.
+
+2001-12-06  Paul Eggert  <eggert@twinsun.com>
+
+       * config.in (HAVE_WORKING_VFORK): New #undefs.
+       * process.c (create_process):
+       Use HAVE_WORKING_VFORK, not HAVE_VFORK.
+       * m/cnvrgnt.h (HAVE_VFORK): Remove #define.
+       * m/ibm370aix.h (HAVE_VFORK): Remove #undef.
+       * m/ibmps2-aix.h (HAVE_VFORK): Remove #define.
+       * m/intel386.h (HAVE_VFORK): Likewise.
+       * m/mips-siemens.h (HAVE_VFORK): Likewise.
+       * m/mips.h (HAVE_VFORK): Likewise.
+       * s/freebsd.h (vfork): Remove #define.
+       * s/lynxos.h (HAVE_VFORK): Remove #undef.
+       * s/usg5-4-2.h: Fix comment about vfork.
+
+2001-12-06  Richard M. Stallman  <rms@gnu.org>
+
+       * s/hpux10.h (random): Add undef.
+       (HAVE_RANDOM): Define it just once.
+
+2001-12-06  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c: Undo last change: the standard syntax is not wanted.
+
+2001-12-06  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xterm.c (x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
+       scroll bars of the frame before deleting the frame itself.  If the
+       frame has a widget, delete the frame with XtDestroyWidget, and do
+       not call XDestroyWindow before that.
+
+2001-12-06  Kim F. Storm  <storm@cua.dk>
+
+       * xfns.c (x_report_frame_params): Return actual fringe widths.
+
+       * w32fns.c (x_report_frame_params): Return actual fringe widths.
+
+2001-12-05  Andrew Innes  <andrewi@gnu.org>
+
+       * alloc.c (Fgarbage_collect): Shrink buffer gaps that are
+       excessively large.
+
+       * insdel.c (make_gap_larger): New function.
+       (make_gap_smaller): New function.
+       (make_gap) [USE_MMAP_FOR_BUFFERS || REL_ALLOC]:
+       Call make_gap_smaller if arg is negative.
+
+2001-12-04  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal prototype.
+       Pass a dummy argument when calling interrupt_signal.
+       (parse_menu_item): Mark disabled items before checking for empty def.
+       (read_char_minibuf_menu_prompt): Make safety more visible.
+       (read_key_sequence): Add a `first_unbound' variable.
+       Use it to detect C-c ESC ESC ESC ESC ... cases and drop the
+       unbound prefix as soon as we can detect it.
+
+       * doc.c (Fsnarf_documentation): Add prototype.
+       (get_doc_string): Handle negative arguments.
+       (Fdocumentation): Use AREF and ASIZE.
+       Move the calls to get_doc_string to a single place.
+       Don't confuse an interactive-spec for a docstring reference.
+       (Fdocumentation_property): Take advantage of the fact that
+       get_doc_string now ignores the sign of the docstring position.
+
+       * eval.c: Use standard syntax for usage in docstrings.
+
+2001-12-03  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief' an option.
+
+2001-12-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xterm.c (x_draw_image_relief): Use predefined macro instead of
+       constant when the value of `tool_bar_button_relief' is negative.
+
+2001-12-02  Richard M. Stallman  <rms@gnu.org>
+
+       * xmenu.c (menu_highlight_callback): Use `help' field as Lisp_Object.
+       (single_submenu, xmenu_show): Set `help' field as Lisp_Object.
+
+       * fileio.c (read_non_regular): Delete Fsignal call.
+
+2001-12-01  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lisp.h (run_hook_list_with_args): Undo last change.
+
+2001-12-01  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_draw_fringe_bitmap): Always undo clipping.
+
+2001-12-01  Jason Rumney  <jasonr@gnu.org>
+
+       * window.c (Qleft_fringe, Qright_fringe): Remove.  Now in frame.c.
+
+       * w32term.h (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT)
+       [!WM_MOUSELEAVE]: Define.
+
+       * w32menu.c (current_popup_menu, get_menu_item_info):
+       (set_menu_item_info): New vars.
+       (set_frame_menubar): Doc fix clarifying GC interaction with menus.
+       (w32_menu_show): Set current_popup_menu.
+       (add_menu_item): Allocate new strings for owner-drawn menu items
+       and help strings.
+       Use owner-draw for disabled menu items again.
+       (w32_menu_display_help): Ignore owner-drawn items and popup menus.
+       (w32_free_submenu_strings, w32_free_menu_strings): New functions.
+
+       * w32fns.c (trackmouse_window, track_mouse_event_fn): New vars.
+       (w32_wnd_proc) <WM_MOUSEMOVE>: Notice when mouse enters frame.
+       <WM_EXITMENULOOP>: Free menu strings.
+       <WM_MOUSELEAVE>: Stop tracking mouse.
+       (x_create_tip_frame): Specify no minibuffer, modeline or fringes.
+
+       * w32term.c (w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
+       and mouse face.
+
+2001-12-01  Kim F. Storm  <storm@cua.dk>
+
+       The following changes add left-fringe and right-fringe
+       frame parameters to adjust fringe widths, or remove one or
+       both fringes.
+
+       * frame.h (struct frame): Remove trunc_area_pixel_width and
+       trunc_area_cols fields.
+       (Qleft_fringe, Qright_fringe): Declare.
+       (FRAME_RIGHT_FRINGE_WIDTH): New macro.
+
+       * frame.c (Qleft_fringe, Qright_fringe): New vars.
+       (syms_of_frame): Initialize them.
+
+       * window.c (coordinates_in_window): Handle separate left and right
+       fringe widths.
+
+       * xterm.h (struct x_output): Add left_fringe_width, right_fringe_width,
+       and fringe_cols fields.
+       (FRAME_FRINGE_BITMAP_WIDTH, FRAME_FRINGE_BITMAP_HEIGHT): Remove macros.
+       (FRAME_X_FRINGE_COLS): Use fringe_cols field.
+       (FRAME_X_FRINGE_WIDTH): Use fringes_extra field.
+       (FRAME_X_LEFT_FRINGE_WIDTH): Use left_fringe_width field.
+       (FRAME_X_RIGHT_FRINGE_WIDTH): Use right_fringe_width field.
+       (x_compute_fringe_widths): Add prototype.
+
+       * xterm.c (zv_height, zv_bits, zv_period): Changed zv bitmap to
+       fill fringe evenly with small dashes.
+       (x_draw_fringe_bitmap): Clear background if necessary.  Align and
+       clip the new ZV bitmap to avoid jitter between rows.
+       (x_draw_row_fringe_bitmaps): Rely on x_draw_fringe_bitmap to clear
+       background.  Don't draw fringe bitmaps if fringe width is zero.
+       (x_compute_fringe_widths): New function.
+       (x_new_font, x_set_window_size_1): Use it.
+
+       * xfns.c (x_frame_parms): Add `left-fringe' and `right-fringe' parms.
+       (x_set_frame_parameters): Process `font' parameter before other
+       parameters as fringe widths depend on it.
+       (x_set_fringe_width): New function.
+       (x_figure_window_size): Use x_compute_fringe_widths.
+       (Fx_create_frame): Process `left-fringe' and `right-fringe' frame
+       parameters.
+
+       * widget.c (set_frame_size): Use x_compute_fringe_widths.
+       (EmacsFrameSetCharSize): Ditto.
+
+       * w32term.h: Merged changes from xterm.h.
+       * w32term.c: Merged changes from xterm.c.
+       * w32fns.c: Merged changes from xfns.c.
+
+2001-11-29  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * COPYING: Removed.
+
+2001-11-29  Dave Love  <fx@gnu.org>
+
+       * coding.c (syms_of_coding) <Qchar_coding_system>: Give it an
+       extra extra slot.
+       (detect_coding_mask): Fix call of detect_coding_iso2022.
+
+2001-11-29  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * fileio.c (file-name-coding-system)
+       (default-file-name-coding-system): Doc fix (links to referenced
+       variables added).
+
+2001-11-28  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lisp.h (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
+       Add dummy uses of gcproN variables.
+
+       * category.c (describe_category, describe_category_1)
+       (Fdescribe_categories): Remove.  (Moved to lisp/help-fns.el.)
+       (syms_of_category): Don't defsubr Sdescribe_categories.
+
+2001-11-28  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Ffind_file_name_handler): Avoid initializer for `result'.
+
+       * Makefile.in (lispdir): New variable, referring to build dir.
+       (TAGS-LISP): Find Makefile in $(lispdir), not $(lispsource).
+
+2001-11-28  Andrew Innes  <andrewi@gnu.org>
+
+       * w32menu.c (w32_menu_display_help): Actually add the new argument
+       OWNER.
+
+2001-11-28  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (add_menu_item): Do not use owner-draw for disabled
+       menu items.  From David Ponce <dponce@wanadoo.fr>.
+       (w32_dialog_show) [HAVE_DIALOGS]: Compile whole function
+       conditionally.
+       (w32_menu_display_help): New argument OWNER.  Rewritten to store a
+       help event in the owner frame's keyboard buffer.
+
+       * w32fns.c (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
+       (Fx_show_tip): Don't subtract last width from row width.
+
+       * w32term.c (w32_read_socket) <WM_MENUSELECT>: Remove.
+       (w32_read_socket): Use EQ to compare frames.
+
+2001-11-28  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_draw_glyphs): Don't call notice_overwritten_cursor if
+       OVERLAPS_P.
+
+2001-11-28  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xdisp.c (message_dolog): Remove unused variables `gcpro2',
+       `gcpro3' and `gcpro4'.
+
+       * coding.c (decode_coding_string): Remove unused variable `gcpro1'.
+
+2001-11-28  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * ccl.c: Use AREF and ASIZE.
+
+2001-11-27  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lisp.h (run_hook_list_with_args): Remove.
+       (LIST_END_P): Fix call to wrong_type_argument.
+       (make_fixnum_or_float): Use EMACS_INT rather than int.
+
+2001-11-26  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * syntax.c (syms_of_syntax): Remove defsubr of Sdescribe_syntax.
+       (describe_syntax, describe_syntax_1, Fdescribe_syntax): Remove.
+
+       * eval.c: Use AREF and ASIZE.
+       (Ffetch_bytecode): Add the file name to the error message.
+
+       * fileio.c (Ffind_file_name_handler): Give precedence to handlers
+       which match the end of the file-name.
+       (Fsubstitute_in_file_name): Don't signal an error if $ENVVAR
+       is not a valid env var, but leave it as is instead.
+
+       * keymap.c (access_keymap): Handle t bindings like nil bindings.
+       Make nil bindings in char-tables transparent.
+       (store_in_keymap): Turn a nil binding into a t binding for char-tables.
+
+2001-11-26  Richard M. Stallman  <rms@gnu.org>
+
+       * textprop.c (set_text_properties_1): Allow START, END in either order.
+       Do nothing if range is empty.
+
+       * Makefile.in (mallocobj): Simplify logic using auxiliary vars.
+
+       * Makefile.in (mostlyclean): Delete bootstrap-emacs here.
+       (clean): Not here.
+
+2001-11-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * textprop.c (set_text_properties_1): Clearly mark that the
+       interval should not be empty.
+
+       * intervals.c (graft_intervals_into_buffer):
+       Don't call set_text_properties_1 on an empty interval.
+
+2001-11-25  Richard M. Stallman  <rms@gnu.org>
+
+       * unexelf.c (unexec): Index by n, not nn, when checking for ".sbss".
+
+       * callproc.c (Fcall_process): When we make a bigger buffer for bufptr,
+       don't lose the data in it.
+
+2001-11-25  Juanma Barranquero  <lektu@terra.es>
+
+       * abbrev.c (Fexpand_abbrev): Use Frun_hooks instead of Vrun_hooks.
+
+       * buffer.c (Fkill_buffer): Likewise.
+
+       * print.c (temp_output_buffer_setup): Likewise.
+
+2001-11-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xfaces.c (merge_face_heights): Coerce back to int explicitly.
+
+2001-11-25  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * window.c (Fset_window_vscroll): Doc fix.  From Kalle Olavi
+       Niemitalo <kon@iki.fi>.
+
+2001-11-25  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.h (FRAME_X_FRINGE_COLS): No fringe on tip frames.
+
+       * w32fns.c (x_create_tip_frame): Set frame's fringes_extra to 0.
+       (Fx_show_tip): Block input during frame creation.
+       (Fx_show_tip, Fx_hide_tip): Enable.
+
+2001-11-24  Richard M. Stallman  <rms@gnu.org>
+
+       * lread.c (Fload): Detect recursive load error for more than 3
+       nestings of the same file.
+       (Vrecursive_load_depth_limit): Variable deleted.
+       (syms_of_lread) <recursive-load-depth-limit>: Variable deleted.
+
+2001-11-24  Jason Rumney  <jasonr@gnu.org>
+
+       * xfns.c (compute_tip_xy): Initialize root_x and root_y from
+       mouse position if either left or top is not specified.
+
+       * w32fns.c (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
+       <WM_WINDOWPOSCHANGING>: Let tip frames resize without restriction.
+       (my_create_tip_window, Fx_show_tip): Adjust size for external border.
+       (my_create_tip_window): Assign tip_window.
+       (x_create_tip_frame): Use same defaults as X.
+       (compute_tip_xy): Remove unused variable.  Use full screen width.
+       (Fx_show_tip): Do not double height.  Call ShowWindow directly.
+
+       * w32term.c (x_after_update_window_line): Doc fix.
+       (w32_read_socket): Doc fix.  Avoid SET_FRAME_GARBAGED for tip
+       frames.
+       <WM_SHOWWINDOW>: Redo mouse highlight when hiding tip frame.
+
+       * xdisp.c (prepare_menu_bars) [HAVE_WINDOW_SYSTEM]: Use tip_frame
+       for all Windowed systems.
+
+2001-11-23  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (IT_clear_screen): If the frame's faces are not yet
+       realized, use the initial screen colors to clear the screen.
+
+2001-11-23  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * textprop.c (Fset_text_properties): Remove unused variables
+       `unchanged', `prev_changed', `s' and `len'.
+
+       * search.c (Freplace_match): Remove unused variable `inslen'.
+
+       * keymap.c (access_keymap): Remove unused variables `c1' and `c2'.
+
+2001-11-22  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (x_window_to_frame): Remove irrelevant TODO comment.
+       (w32_wnd_proc) <WM_MENUSELECT>: Show help echo directly.
+       (my_create_tip_window): New function.
+       (x_create_tip_frame, compute_tip_xy): Adapt for Windows.
+       (Fx_show_tip, Fx_hide_tip) [TEST_TOOLTIPS]: Adapt for Windows.
+
+2001-11-20  Jason Rumney  <jasonr@gnu.org>
+
+       * coding.h (Vw32_system_coding_system) [WINDOWSNT]: Remove.
+       (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: Use Vlocale_coding_system.
+
+       * w32fns.c (Vw32_system_coding_system): Remove.
+       (w32_to_x_font, x_to_w32_font): Use Vlocale_coding_system.
+
+2001-11-19  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * fileio.c (Fwrite_region): Move choose_write_coding_system to
+       after build_annotations.
+
+       * syntax.c (describe_syntax): Add dummy arg.
+       (describe_syntax_1): Update call to describe_vector.
+
+       * category.c (describe_category): Add dummy arg.
+       (describe_category_1): Update call to describe_vector.
+
+       * keymap.c (Fdescribe_vector): Add `describer' parameter.
+       (describe_command, describe_translation): Add dummy second param.
+       (describe_map): Call elt_describer with two arguments.
+       (describe_vector_princ): Add `fun' parameter.
+       Call it instead of the hardcoded `princ'.
+       (describe_vector): Add arg `args'.
+       Pass it as a new second argument to elt_describer.
+
+       * keymap.h (describe_vector): Update prototype.
+
+       * frame.c: Don't include keymap.h any more.
+       (keys_of_frame): Remove.
+
+       * lisp.h (keys_of_frame): Remove declaration.
+
+       * emacs.c (main): Don't call `keys_of_frame' any more.
+
+2001-11-14  Andreas Schwab  <schwab@suse.de>
+
+       * unexelf.c [!defined MAP_ANON]: Define MAP_ANON to MAP_ANONYMOUS
+       if defined, 0 otherwise.
+       (MAP_FAILED): Define if not defined and use it to test mmap failure.
+       (unexec) [!MAP_ANON]: Use /dev/zero as file to map.
+
+2001-11-19  Richard M. Stallman  <rms@gnu.org>
+
+       * indent.c (current_column_1): Fix handling of scan_bytes for mb chars.
+
+2001-11-18  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (note_mouse_highlight): Fix type of variable `ignore'.
+       (x_draw_bar_cursor): If the background color of the glyph under
+       the cursor equals the frame's cursor color, use the glyph's
+       foreground color for drawing the bar cursor.
+       (x_after_update_window_line): Clear internal border in different
+       circumstances.
+       (w32_set_vertical_scroll_bar): Check for width and height > 0.
+       (w32_draw_relief_rect): Correct relief by 1 pixel.
+       (x_set_glyph_string_background_width):
+       Set extends_to_end_of_line_p if the row's fill_line_p is set and
+       drawing the last glyph with DRAW_IMAGE_{RAISED,SUNKEN}.
+       (x_display_and_set_cursor): If cursor_in_echo_area, use NO_CURSOR
+       if cursor_in_non_selected_windows is false.
+       (show_mouse_face): Clean up.  Recognize overwritten cursor differently.
+       (x_draw_glyphs): Remove parameters REAL_START and REAL_END.
+       Notice if cursor gets overwritten.
+       (notice_overwritten_cursor): Renamed from
+       note_overwritten_text_cursor.  Rewritten to take glyph widths
+       into account, and to take X positions as parameters.
+       (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p
+       around call to x_draw_glyphs.
+       (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and
+       `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background
+       color to use for image glyph reliefs.
+       (x_draw_image_relief): Accept zero tool_bar_button_relief.
+       (glyph_rect): Remove unused variable `area'.
+
+       * w32fns.c (x_set_frame_parameters): Avoid infinite recursion for
+       some items.
+       (x_set_internal_border_width): Set frame garbaged when window
+       doesn't exist yet.
+       (Fx_create_frame): Accept zero tool_bar_button_relief.
+       (x_clear_image_1, four_corners_best, image_background)
+       (image_background_transparent): New functions.
+       (xpm_format, png_format, jpeg_format, tiff_format, gif_format)
+       (gs_format): Add `:background' entry.
+       (lookup_image): Set IMG's background color if specified.
+       (pbm_load, xbm_load_image, png_load): Set IMG's background field
+       when appropriate.
+       (x_clear_image_1): Reset `background_valid' and
+       `background_transparent_valid' fields.
+       (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of
+       calculating it here.  Set IMG's background_transparent field.
+       (enum xpm_keyword_index): Add XPM_BACKGROUND.
+       (enum png_keyword_index): Add PNG_BACKGROUND.
+       (enum jpeg_keyword_index): Add JPEG_BACKGROUND.
+       (enum tiff_keyword_index): Add TIFF_BACKGROUND.
+       (enum gif_keyword_index): Add GIF_BACKGROUND.
+       (enum gs_keyword_index): Add GS_BACKGROUND.
+       (pbm_load, png_load, jpeg_load, tiff_load, gif_load):
+       Pre-calculate image background color where necessary.
+       (x_create_x_image_and_pixmap, xbm_load, gs_load):
+       Use display info's n_cbits entry for screen depth.
+       (Fx_show_tip): Remove unused variables `buffer', `top',
+       `left', `max_width' and `max_height'.
+
+       * w32menu.c (w32_menu_show, push_menu_pane): Doc fixes.
+
+2001-11-18  Gerd Moellmann  <gerd@gnu.org>
+
+       * puresize.h (BASE_PURESIZE): Increase to 750000.
+
+2001-11-18  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * frame.c (Fframe_live_p): Doc fix.
+
+2001-11-18  Richard M. Stallman  <rms@gnu.org>
+
+       * xdisp.c (message_dolog_marker1, message_dolog_marker2)
+       (message_dolog_marker3): New static variables hold three markers.
+       (syms_of_xdisp): Initialize and staticpro them.
+       (message_dolog): Use message_dolog_marker1..3 instead of
+       allocating markers each time.  Unchain them when done.
+
+2001-11-17  Richard M. Stallman  <rms@gnu.org>
+
+       * doc.c (Fsnarf_documentation): Doc fix.
+
+2001-11-17  Andreas Schwab  <schwab@suse.de>
+
+       * xterm.c (note_mouse_highlight): Fix type of variable `ignore'.
+
+2001-11-17  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fwrite_region): Avoid initializer for Lisp_Object.
+
+2001-11-17  Jason Rumney  <jasonr@gnu.org>
+
+       * xterm.c (notice_overwritten_cursor): Take care of end < 0 case.
+
+2001-11-17  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (tool_bar_item_info): Avoid calling Fget_text_property
+       with invalid position.
+
+2001-11-16  Richard M. Stallman  <rms@gnu.org>
+
+       * syswait.h: Delete conditionals for HPUX7, ISC 4.1, and convex.
+
+       * s/isc4-1.h (HAVE_SYS_WAIT_H): Add #undef.
+       * s/hpux.h (HAVE_SYS_WAIT_H): Add #undef.
+       * s/hpux8.h (HAVE_SYS_WAIT_H): Define it.
+
+       * m/convex.h (HAVE_SYS_WAIT_H): Add #undef.
+
+2001-11-16  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * fileio.c (build_annotations): Split off the tail.
+       (build_annotations_2): New fun.  Extracted from build_annotations.
+       (Fwrite_region): Split the call to build_annotations into two
+       calls to build_annotations and build_annotations_2.
+
+2001-11-16  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * sysdep.c (wait_for_kbd_input) [VMS]: Do not call
+       clear_waiting_for_input with argument.
+
+       * xterm.h (x_update_cursor): Remove duplicated prototype.
+
+       * keyboard.h (clear_waiting_for_input): Remove duplicated prototype.
+
+       * xterm.c (waiting_for_input): Remove unnecessary declaration.
+
+       * data.c (Ftimes, Fquo, Frem, Fmod): Doc fix.
+
+2001-11-16  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * fileio.c (choose_write_coding_system): New fun, extracted
+       from Fwrite_region.
+       (Fwrite_region): Use it.
+
+       * eval.c (max_specpdl_size, max_lisp_eval_depth): Use EMACS_INT.
+       (funcall_lambda, run_hook_with_args): Make static and add prototype.
+       (ml_apply, find_handler_clause): Add prototype.
+
+2001-11-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * config.in: Add #undef HAVE_COFF_H.
+
+       * unexec.c (coff.h): Don't include unless HAVE_COFF_H is defined.
+       Required for ISC 4.1.
+
+2001-11-16  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * syswait.h (HAVE_SYS_WAIT_H): Undef for ISC 4.1.  Reported by
+       Andrew Wiseman <a.wiseman@btclick.com>.
+
+2001-11-16  Kim F. Storm  <storm@cua.dk>
+
+       The following changes are made to clean up the various internal
+       references to the fringes to actually use the term `fringe' for
+       them.  Previously, they were called `flags areas', `bitmap areas',
+       `left/right side of windows', or implicitly as `flags' or
+       `bitmaps':
+
+       * dispextern.h (FRINGE_FACE_ID): Renamed from BITMAP_AREA_FACE_ID.
+       Comments fixed.  Use renamed symbols.
+
+       * dispnew.c: Comment fix.  Use renamed symbols.
+
+       * frame.h (FRAME_FRINGE_COLS): Renamed from FRAME_FLAGS_AREA_COLS.
+       (FRAME_FRINGE_WIDTH): Renamed from FRAME_FLAGS_AREA_WIDTH.
+       (FRAME_LEFT_FRINGE_WIDTH): Renamed from FRAME_LEFT_FLAGS_AREA_WIDTH.
+
+       * msdos.c: Comment fix.
+
+       * w32fns.c: Use renamed symbols.
+
+       * w32term.c: Comment fixes.  Use renamed symbols.
+       (fringe_bitmap_type): Renamed from bitmap_type.
+       (NO_FRINGE_BITMAP): Renamed from NO_BITMAP.
+       (w32_draw_fringe_bitmap): Renamed from w32_draw_bitmap.
+       (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps.
+
+       * w32term.h: Comment fixes.  Use renamed symbols.
+       (fringes_extra): Renamed from flags_areas_extra.
+       (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH.
+       (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT.
+       (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS.
+       (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH.
+       (FRAME_X_LEFT_FRINGE_WIDTH):
+       Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH.
+       (FRAME_X_RIGHT_FRINGE_WIDTH):
+       Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH.
+
+       * widget.c: Use renamed symbols.
+
+       * window.c: Comment fixes.  Use renamed symbols.
+       (coordinates-in-window-p): Doc fix.
+
+       * xdisp.c: Comment fixes.  Use renamed symbols.
+
+       * xfaces.c (realize_basic_faces): Use FRINGE_FACE_ID.
+
+       * xfns.c: Use renamed symbols.
+
+       * xterm.c: Comment fixes.  Use renamed symbols.
+       (fringe_bitmap_type): Renamed from bitmap_type.
+       (NO_FRINGE_BITMAP): Renamed from NO_BITMAP.
+       (x_draw_fringe_bitmap): Renamed from x_draw_bitmap.
+       (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps.
+
+       * xterm.h: Comment fixes.  Use renamed symbols.
+       (fringes_extra): Renamed from flags_areas_extra.
+       (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH.
+       (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT.
+       (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS.
+       (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH.
+       (FRAME_X_LEFT_FRINGE_WIDTH):
+       Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH.
+       (FRAME_X_RIGHT_FRINGE_WIDTH):
+       Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH.
+
+2001-11-15  Jason Rumney  <jasonr@gnu.org>
+
+       * w32menu.c (add-menu-item): Make help_echo and radio buttons
+       work for most menu items.  From David Ponce
+       <david.ponce@wanadoo.fr>.
+
+2001-11-15  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfns.c (x_set_frame_parameters): Revert change of 2001-11-07.
+       Some x_set_* function expect to be called even if old and new
+       value are equal.
+
+       * xdisp.c (build_desired_tool_bar_string): Accept zero
+       tool_bar_button_relief.
+
+       * xfns.c (Fx_create_frame): Accept zero tool_bar_button_relief.
+
+       * xterm.c (x_draw_image_relief): Accept zero tool_bar_button_relief.
+
+       * xterm.c (x_draw_bar_cursor): If the background color of the
+       glyph under the cursor equals the frame's cursor color, use
+       the glyph's foreground color for drawing the bar cursor.
+
+       * dispnew.c (direct_output_forward_char): Fix character/byte
+       position comparison.
+
+2001-11-15  Miles Bader  <miles@gnu.org>
+
+       * editfns.c (find_field): Add BEG_LIMIT and END_LIMIT parameters.
+       (Fdelete_field, Ffield_string, Ffield_string_no_properties):
+       Update arguments to find_field.
+       (Ffield_beginning, Ffield_end): Add LIMIT param, pass to find_field.
+       (Fconstrain_to_field): Use LIMIT arg to shorten search time.
+       * lisp.h (Ffield_beginning, Ffield_end): Update EXFUN decl.
+       * minibuf.c (Fminibuffer_prompt_end): Update args to Ffield_end.
+
+2001-11-14  Richard M. Stallman  <rms@gnu.org>
+
+       * editfns.c (Fpropertize): Allow call with 1 arg.
+
+       * dispextern.h (image_background, image_background_transparent):
+       Conditionalize on HAVE_X_WINDOWS.
+
+2001-11-13  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (Fprin1_to_string): Doc fix.
+
+       * sunfns.c (Fsun_change_cursor_icon): Doc fix.
+
+       * floatfns.c (Fceiling, Ffloor): Doc fixes.
+
+       * filelock.c (Funlock_buffer, Ffile_locked_p): Doc fixes.
+
+       * fileio.c (Ffile_accessible_directory_p): Doc fix.
+
+       * eval.c (syms_of_eval): Doc fix.
+
+       * coding.c (syms_of_coding): Doc fix.
+
+       * doc.c (Fsnarf_documentation): Doc fix.
+
+       * dispnew.c (syms_of_display): Doc fix.
+
+       * category.c (Fget_unused_category): Doc fix.
+
+       * buffer.c (syms_of_buffer): Doc fixes.
+
+2001-11-14  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * print.c (prin1, print): Doc fix.
+
+2001-11-14  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * fontset.h: Remove declarations of variables
+       `Vhighlight_wrong_size_font' and `Vclip_large_size_font'.
+
+       * fontset.c: Remove variables `Vhighlight_wrong_size_font' and
+       `Vclip_large_size_font'.
+
+2001-11-13  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c: Doc fix.
+
+2001-11-13  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xfaces.c (Fface_attributes_as_vector): Doc fix.
+
+       * fns.c: Doc fix.
+
+       * emacs.c: Doc fix.
+
+       * coding.c: Doc fix.
+
+       * cmds.c, composite.c, dired.c, doc.c, filelock.c, floatfns.c,
+       * fontset.c, insdel.c, keymap.c: Change doc-string comments to
+       `new style' [w/`doc:' keyword].
+
+2001-11-12  Richard M. Stallman  <rms@gnu.org>
+
+       * xterm.c (XTread_socket): Don't update focus for EnterNotify or
+       LeaveNotify events.  Only FocusIn and FocusOut do that now.
+       (x_display_and_set_cursor): Do display hollow cursors in active
+       minibuffer windows when they are not selected.
+
+2001-11-12  Jason Rumney  <jasonr@gnu.org>
+
+       * w32console.c, w32fns.c, w32menu.c, w32proc.c, w32select.c,
+       * w32term.c: Change doc-string comments to `new style'
+       [w/`doc:' keyword].  Doc fixes.
+
+       * w32fns.c: Don't define max.
+       (Fx_open_connection): Only execute once.
+
+2001-11-12  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * ccl.c: Change macros to use do-while block instead of if-else.
+       Use braces to follow GNU Coding Standards.
+
+2001-11-11  Richard M. Stallman  <rms@gnu.org>
+
+       * sysdep.c (child_setup_tty): Don't clear ICRNL or INLCR.
+
+       * lread.c (read_escape): Use end_of_file_error for reporting eof.
+
+       * insdel.c (replace_range): Use adjust_markers_for_replace
+       instead of adjust_markers_for_delete and adjust_markers_for_insert.
+
+       * intervals.h (set_text_properties, set_text_properties_1): Declare.
+
+       * textprop.c (set_text_properties_1): New subroutine
+       broken out of set_text_properties.
+       (set_text_properties): Use set_text_properties_1.
+
+       * intervals.c (graft_intervals_into_buffer):
+       Use set_text_properties_1 to clear out properties.
+
+       * search.c (Freplace_match): Use replace_range to insert
+       and delete.  Don't request property inheritance from
+       surrounding text.
+
+2001-11-10  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (enum_font_cb2): Use leading @ on face name to detect
+       vertical fonts.  Allow them if face name is explicitly specified.
+       Do not give up if we find a font that cannot be converted to an xlfd.
+
+2001-11-10  Gerd Moellmann  <gerd@gnu.org>
+
+       * unexelf.c (unexec): Use mmap/munmap to allocate buffers
+       instead of malloc/free.
+
+2001-11-09  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xfaces.c (merge_face_vectors): Use braces to follow GNU
+       Coding Standards.
+       (Finternal_set_lisp_face_attribute): Likewise.
+
+       * buffer.c (Fbury_buffer): Likewise.
+
+       * indent.c (current_column_1): Remove unused variable `prev_col'.
+
+       * coding.c (encode_coding): Use precomputed value of `src'.
+       (encode_coding): Remove unused variable `src_end'.
+       (code_convert_region): Remove unused variables `count'.
+
+2001-11-07  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_display_and_set_cursor): Do not move system caret
+       if cursor_glyph is NULL.
+
+2001-11-07  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * keymap.c (access_keymap): Fix compilation error.
+
+2001-11-07  Miles Bader  <miles@gnu.org>
+
+       * xfns.c (x_set_frame_parameters): Avoid infinite recursion.
+
+2001-11-07  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * intervals.c (graft_intervals_into_buffer):
+       Remove #ifdef'd-out code.
+       (graft_intervals_into_buffer): Remove unused variable `middle'.
+
+       * lread.c (Feval_region): Remove obsolete #ifdef'd-out
+       code (eval-current-buffer).
+       Change doc-string comments to `new style' [w/`doc:' keyword].
+
+2001-11-06  Richard M. Stallman  <rms@gnu.org>
+
+       * keymap.c (access_keymap): Don't use initializers on Lisp_Object.
+
+2001-11-06  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lread.c (read1): Fix behavior with nested backquoting.
+
+       * keyboard.c (make_lispy_event): Check integerness and fix
+       Lisp_Object/int mixup.
+
+2001-11-06  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * fns.c (copy_hash_table): Remove unused variable `v'.
+
+       * fontset.c (fontset_font_pattern): Remove unused variable
+       `family_registry'.
+
+       * indent.c (current_column_1): Remove unused variable `prev_col'.
+
+2001-11-05  Richard M. Stallman  <rms@gnu.org>
+
+       * m/news-risc.h (BROKEN_PROTOTYPES): Defined.
+
+       * buffer.c (Fkill_buffer): Don't delete auto save file
+       if buffer is modified.
+
+2001-11-05  Andrew Innes  <andrewi@gnu.org>
+
+       * w32proc.c (Fw32_set_keyboard_layout): Use CHECK_NUMBER_CAR and
+       CHECK_NUMBER_CDR.
+
+2001-11-05  Richard M. Stallman  <rms@gnu.org>
+
+       * unexelf.c (unexec): Minor changes; clean up comments.
+
+2001-11-05  Sam Steingold  <sds@gnu.org>
+
+       * w32term.c (x_display_and_set_cursor): Fix w32 compilation error.
+
+2001-11-05  Andreas Schwab  <schwab@suse.de>
+
+       * sound.c (sound_perror): Save errno from being clobbered.
+
+2001-11-05  Dale Hagglund  <rdh@yottayotta.com>
+
+       * unexelf.c (unexec): Don't use `mmap'.  Instead, read and write
+       the program image directly.
+
+2001-11-05  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * buffer.h (Fbuffer_local_value): Add prototype.
+
+2001-11-04  Richard M. Stallman  <rms@gnu.org>
+
+       * buffer.c (Fbuffer_local_value): Remove extra args from CHECK_SYMBOL
+       and CHECK_BUFFER.
+
+       * keyboard.c (read_char): Use Fcar and Fcdr, not Fnth.
+       (record_char): Likewise.
+
+       * keyboard.c (make_lispy_event): Don't insist a drag event must
+       move to a different buffer position.  Instead, check for moving at
+       least double_click_fuzz.
+
+       * fns.c (Fmake_hash_table): Use XCAR and XCDR, not Fnth and Flength.
+
+       * keyboard.c (echo-area-clear-hook): Undo Oct 29 change.
+
+       * indent.c (current_column_1, Fmove_to_column): Separate the code
+       for display-table glyphs from the code for buffer text, to fix
+       bugs in the former.
+
+2001-11-04  Michael Welsh Duggan  <md5i@cs.cmu.edu>
+
+       * buffer.c (Fbuffer_local_value): New function.
+       (syms_of_buffer): Defsubr it.
+
+       * xterm.c, w32term.c (x_display_and_set_cursor): Use buffer-local
+       value of `cursor-in-non-selected-windows'.
+
+       * lisp.h (Qcursor_in_non_selected_windows): New declaration.
+       * xdisp.c (Qcursor_in_non_selected_windows): New variable.
+       (syms_of_xdisp): Initialize it.
+
+2001-11-04  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xfns.c (Fx_create_frame): Doc fix.
+
+       * coding.c: Change doc-string comments to `new style' [w/`doc:'
+       keyword].
+
+       * eval.c (top_level_value, top_level_set): Remove commented and
+       #ifdef'd-out code.
+       (Fdefvar): Fix usage in doc-string.
+
+2001-11-03  Richard M. Stallman  <rms@gnu.org>
+
+       * xfns.c: Include unistd.h, if it exists.
+
+       * editfns.c: Move the include of ctype.h after unistd.h.
+
+       * gmalloc.c: Test BROKEN_PROTOTYPES.
+
+2001-11-03  Ken Raeburn  <raeburn@gnu.org>
+
+       * lisp.h (CHECK_STRING_CAR): New macro.
+       * lread.c (Fload): Use XSETCARFASTINT, XSETCDRFASTINT instead of
+       treating XCAR and XCDR as lvalues.
+       (openp): Use CHECK_STRING_CAR.
+       (read_list): Use XSETCDR instead of treating XCDR as lvalue.
+
+2001-11-03  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * s/sco5.h (sigprocmask_set): Declare as extern SIGMASKTYPE.
+       (SIGMASKTYPE): Define.
+
+       * syssignal.h (sigunblock): Don't define if already defined.
+
+2001-11-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * eval.c (debugger_may_continue, Vdebug_ignored_errors)
+       (call_debugger, Fcondition_case, skip_debugger, unbind_to):
+       Fix typos in comments.
+
+       * mocklisp.c (Fml_defun, Fml_while, Fml_substr): Remove commented
+       and #ifdef'd-out code.
+       Fix and reindent comments.
+
+       * mocklisp.h: Remove comment which is a copy of comment in mocklisp.c.
+
+       * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET): Remove unused
+       argument `i' in macros.
+
+       * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Remove unused argument
+       `i' in macros.
+
+       * lisp.h (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST)
+       (CHECK_STRING, CHECK_CONS, CHECK_SYMBOL, CHECK_CHAR_TABLE)
+       (CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE, CHECK_BUFFER)
+       (CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS, CHECK_NUMBER)
+       (CHECK_NATNUM, CHECK_MARKER, CHECK_NUMBER_COERCE_MARKER)
+       (CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT)
+       (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER, CHECK_OVERLAY)
+       (CHECK_NUMBER_CAR, CHECK_NUMBER_CDR): Remove unused argument `i'
+       in macros.
+
+       * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c,
+       * casefiddle.c, category.c, ccl.c, charset.c, cmds.c, coding.c,
+       * composite.c, data.c, dired.c, dispnew.c, doc.c, dosfns.c, emacs.c,
+       * eval.c, fileio.c, filelock.c, fns.c, fontset.c, frame.c, frame.h,
+       * indent.c, keyboard.c, keymap.c, lread.c, macros.c, marker.c,
+       * minibuf.c, mocklisp.c, msdos.c, print.c, process.c, search.c,
+       * sunfns.c, syntax.c, textprop.c, undo.c, w16select.c, w32console.c,
+       * w32fns.c, w32menu.c, w32proc.c, w32select.c, window.c, xdisp.c,
+       * xfaces.c, xmenu.c, xselect.c: Update usage of CHECK_ macros
+       (remove unused second argument).
+
+2001-11-02  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * syntax.c (describe_syntax): New wrapper.
+       (Finternal_describe_syntax_value): Rename from describe_syntax.
+       Don't insert space at front and \n at the end.
+       (syms_of_syntax): Defsubr Sinternal_describe_syntax_value.
+
+       * regex.c (re_wctype): Try to fix some warnings.
+       (regcomp, regexec): Don't forget the __restrict.
+
+2001-11-02  Richard M. Stallman  <rms@gnu.org>
+
+       * textprop.c (Fget_char_property): Doc fix.
+
+2001-11-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * process.c (Fstart_process): Add usage to doc-string.
+
+       * data.c (Fsetq_default): Ditto.
+
+       * callint.c (Finteractive): Ditto.
+
+2001-11-01  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * macros.c: Don't include keymap.h any more.
+
+2001-11-01  Richard M. Stallman  <rms@gnu.org>
+
+       * data.c (Fmake_local_variable): Doc fix.
+
+       * eval.c (Frun_hooks, Frun_hook_with_args_until_failure): Doc fix.
+       (Frun_hook_with_args_until_success, Frun_hook_with_args): Doc fix.
+
+       * keymap.c (Fdescribe_buffer_bindings): Print character property
+       bindings along with or instead of the buffer local map.
+       Make the overriding maps override what they should.
+
+2001-11-01  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * window.c (grow_mini_window): Fix typo in comment.
+
+2001-11-01  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_scroll_bar_create): Check for width and height > 0.
+       (XTset_vertical_scroll_bar): Likewise.
+
+       * xfns.c (x_build_heuristic_mask): Use four_corners_best
+       instead of IMAGE_BACKGROUND.
+
+       * xfns.c (four_corners_best): Reindent.
+
+       * xfaces.c (Finternal_set_lisp_face_attribute_from_resource):
+       Handle :box so that it is possible to specify sexprs.
+
+2001-10-31  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * s/hpux11.h: New file.
+
+2001-10-31  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * emacs.c (USAGE1): Show command line option --no-window-system
+       instead of --no-windows in usage.
+       (standard_args): Rename --no-windows to --no-window-system.
+       (bug_reporting_address): Follow Emacs coding conventions.
+
+       * eval.c (Fcommandp): Doc fix.
+       Change doc-string comments to `new style' [w/`doc:' keyword].
+
+       * frame.c (Fframe_live_p): Doc fix.
+
+       * buffer.c (selective-display-ellipses): Doc fix.
+
+2001-10-31  Gerd Moellmann  <gerd@gnu.org>
+
+       * lread.c (to_multibyte): Fix computation of new read_buffer_size.
+
+       * xfaces.c (realize_x_face): If C is not a single-byte character,
+       set the face's colors_copied_bitwise_p instead of the defaulted_p
+       members which have a different meaning.
+       (free_face_colors): Do nothing for a face whose colors have been
+       copied bitwise.
+
+       * dispextern.h (struct face) <colors_copied_bitwise_p>: New member.
+
+2001-10-31  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * marker.c, mocklisp.c: Change doc-string comments to `new style'
+       [w/`doc:' keyword].
+
+2001-10-31  Gerd Moellmann  <gerd@gnu.org>
+
+       * fns.c (require_unwind): Return Lisp_Object.
+
+2001-10-31  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * keyboard.c (lucid-menu-bar-dirty-flag): Doc fix.
+       (last-input-char): Revert doc-string to be the same as the
+       doc-string of `last-input-event'.
+
+       * xdisp.c: Fix typos in comments.
+
+2001-10-31  Gerd Moellmann  <gerd@gnu.org>
+
+       * window.c (grow_mini_window): Handle case that the root
+       window is already smaller than the nominal mininum height.
+
+2001-10-30  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * emacs.c (main): Don't call keys_of_macros any more.
+
+       * lisp.h (keys_of_macros): Remove.
+
+       * macros.c (keys_of_macros): Remove.
+
+       * xfaces.c (Fface_attribute_relative_p): Declare args.
+
+2001-10-30  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_to_x_charset): Increase size of XLFD charset buffer.
+       (enum_font_cb2): Ignore fonts with vertical orientation.
+
+2001-10-30  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (Finput_pending_p): Doc fix.
+
+2001-10-30  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_after_update_window_line): Don't run the code
+       clearing in borders for rows whose visible height is 0.
+
+       * xdisp.c (clear_garbaged_frames): Redraw the frame only if its
+       resized_p flag is set.  If not set, use the much less flickering
+       method previously used.
+
+       * dispnew.c (change_frame_size_1): Set frame's resized_p.
+
+       * frame.h (struct frame) <resized_p>: New member.
+
+       * lread.c (to_multibyte): Ensure read_buffer is at least twice
+       as large as the number of bytes to convert.
+
+       * lread.c (to_multibyte): New function.
+       (read1): Use it.
+
+2001-10-30  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.h (FRAME_LINE_HEIGHT): Define (it's used by xmenu.c).
+
+2001-10-30  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_draw_relief_rect): Correct bottom relief by 1 pixel.
+       (x_set_glyph_string_background_width): Set extends_to_end_of_line_p
+       if the row's fill_line_p is set and drawing the last glyph with
+       DRAW_IMAGE_{RAISED,SUNKEN}.
+
+       * xdisp.c (clear_garbaged_frames): Call Fredraw_frame.
+
+2001-10-29  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xmenu.c: Include coding.h and charset.h.
+       (Fx_popup_menu): Use FRAME_PTR and FRAME_FONT and FRAME_LINE_HEIGHT.
+       (Fx_popup_dialog): Use FRAME_PTR and enum scroll_bar_part.
+       (single_submenu, xmenu_show): Use ENCODE_SYSTEM.
+       Explicitly set wv->help.  Use `TRUE' rather than `True'.
+       (menu_help_callback): Use empty_string.
+
+       * w32menu.c (Fx_popup_menu): Explicitly init f, xpos, and ypos.
+       (Fx_popup_dialog): Explicitly init f.
+       (w32_menu_display_help): Use empty_string.
+
+2001-10-29  Richard M. Stallman  <rms@gnu.org>
+
+       * fns.c (Frequire): Detect recursive try to require the same
+       feature 3 or more levels deep, and get error.
+       (require_unwind): New subroutine.
+       (require_nesting_list): New variable.
+       (syms_of_fns): Init and staticpro it.
+
+       * print.c (print_object): Clarify indication of insertion type.
+
+2001-10-29  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * coding.c (syms_of_coding): Document that locale-coding-system is
+       used for decoding input on X.
+
+       * window.c (Fscroll_left, Fscroll_right): Doc fix.
+
+2001-10-29  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * keyboard.c (Finput_pending_p): Fix typo in doc-string.
+       (echo-area-clear-hook): Properly DEFVAR_LISP and staticpro it.
+
+2001-10-29  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_display_and_set_cursor): If cursor_in_echo_area,
+       use NO_CURSOR if cursor_in_non_selected_windows is false.
+
+       * xfaces.c (Fface_font): Use UNSPECIFIEDP instead of NILP for
+       the slant attribute if FRAME is t.
+
+       * xfns.c (x_set_internal_border_width): Set frame garbaged
+       when X window doesn't exist yet.
+
+       * xterm.c (x_after_update_window_line): Clear internal border
+       in different circumstances.
+
+       * xterm.c (XTread_socket) <KeyPress>: Don't use
+       STRING_CHAR_AND_LENGTH if nchars == nbytes.  From Kenichi Handa
+       <handa@etl.go.jp>.
+
+2001-10-28  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * m/ibms390.h: New file.  From Adam Thornton
+       <athornton@sinenomine.net>.
+
+2001-10-28  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfns.c (x_build_heuristic_mask): Use x_alloc_image_color.
+
+       * xfns.c (x_build_heuristic_mask): Fix a bug not incrementing
+       a loop counter.
+
+2001-10-28  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * emacs.c: Use argv[0] instead of "emacs" when -t was specified.
+
+       * keyboard.c: Change doc-string comments to `new style' [w/`doc:'
+       keyword].
+       Fix typos in comments.
+
+       * emacs.c (bug_reporting_address): New function.
+       Use it when displaying usage message.
+
+       * minibuf.c (read_minibuf): Remove unused external declaration of
+       variable `Qread_only'.
+
+       * keymap.c (access_keymap): Remove unused variable `charset'.
+
+2001-10-28  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (merge_face_heights): Handle TO being relative as well.
+       Remove #ifdef'd-out code.
+       (Fface_attribute_relative_p, Fmerge_face_attribute): New functions.
+       (syms_of_xfaces): Initialize them.
+
+2001-10-27  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
+       <WM_EMACS_DESTROY_CARET, WM_EMACS_TRACK_CARET>: Track cursor
+       position using the system caret.
+
+       * w32term.c (w32_system_caret_hwnd, w32_system_caret_width)
+       (w32_system_caret_height, w32_system_caret_x)
+       (w32_system_caret_y): New variables for tracking system caret.
+       (w32_initialize): Initialize them.
+       (x_display_and_set_cursor): Make system caret follow the active cursor.
+
+       * w32term.h (WM_EMACS_TRACK_CARET, WM_EMACS_DESTROY_CARET):
+       New messages types.
+
+       * w32term.c (note_mouse_highlight): Clear old help_echo.
+
+2001-10-27  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xterm.c: Fix typo in a comment.
+
+       * emacs.c: Fix typos in comments.
+       Remove unnecessary spaces.
+       Change doc-string comments to `new style' [w/`doc:' keyword].
+       (USAGE2): Fix typos in usage string.
+
+       * xterm.c: Fix typo in a comment.
+
+       * lisp.h (gdb_lisp_params): Remove code in #if 0 which is now in
+       emacs.c.
+
+2001-10-27  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (move_it_vertically_backward): Use 2/3 line_height
+       instead of 1/2 line_height in the heuristic for skipping
+       farther backward when target_y was not reached.
+
+       * sound.c (sound_perror): Unblock SIGIO, turn on atimers.
+       Display errno only if non-zero.
+       (sound_warning): New function.
+       (vox_configure): Don't treat failing to set sample rate as error.
+       (various places): Improve error messages.
+
+2001-10-26  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * fileio.c (Faccess_file): Run the argument filename through
+       Fexpand_file_name, before using it.
+
+       * dispnew.c (syms_of_display) <visible-bell>: Add a reference to
+       ring-bell-function.  Suggested by Alf-Ivar Holm <alfh@ifi.uio.no>
+
+2001-10-26  Gerd Moellmann  <gerd@gnu.org>
+
+       * insdel.c (insert_1_both): Do nothing if NCHARS == 0.
+
+       * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
+       Fix clearing in the case of scroll bars on the right.
+
+2001-10-26  Juanma Barranquero  <lektu@terra.es>
+
+       * w32gui.h (XImage): Add a dummy typedef.
+
+2001-10-26  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfns.c (XScreenNumberOfScreen): Fix struct to pointer comparison.
+
+2001-10-25  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * frame.c (Fframe_parameter): Fix last change.
+
+       * fileio.c: Revert last change (which removed old commented-out
+       version of expand-file-name).  Add a comment that explains why
+       this old version should not be removed.
+
+2001-10-25  Gerd Moellmann  <gerd@gnu.org>
+
+       * frame.c (Fframe_parameter): Fix a bug whereby some
+       ``artificial'' frame parameters, like `minibuffer' were not
+       obtained by calling Fframe_parameters.
+
+       * xterm.c (show_mouse_face): Clean up.  Recognize overwritten
+       cursor differently.
+
+       * xdisp.c (move_it_vertically_backward): Compute line height
+       differently.  Add heuristic to try to be more compatible to 20.x.
+
+2001-10-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lisp.h (make_fixnum_or_float): Coerce double to int explicitly.
+
+       * editfns.c (text_property_stickiness): Fix Lisp_Object used as
+       boolean.
+
+2001-10-25  Miles Bader  <miles@gnu.org>
+
+       * xfns.c (png_load): Make sure SPECIFIED_BG is a string.
+       BG is a pointer to a structure, not a structure.
+       (gif_format, png_format): Add missing commas.
+
+2001-10-24  Richard M. Stallman  <rms@gnu.org>
+
+       * xfaces.c (Fface_attributes_as_vector): New function.
+       (syms_of_xfaces): Defsubr it.
+
+2001-10-24  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * dispnew.c (sync_window_with_frame_matrix_rows): Remove unused
+       variable `area'.
+
+2001-10-25  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * search.c (scan_newline): Remove unused variable `selective_display'.
+
+2001-10-25  Miles Bader  <miles@gnu.org>
+
+       * dispextern.h (struct image): Add `background',
+       `background_valid', and `background_transparent' fields.
+       (image_background, image_background_transparent): New declarations.
+       (IMAGE_BACKGROUND, IMAGE_BACKGROUND_TRANSPARENT): New macros.
+       * xfns.c (image_background, image_background_transparent)
+       (four_corners_best): New functions.
+       (xpm_format, png_format, jpeg_format, tiff_format, gif_format)
+       (gs_format): Add `:background' entry.
+       (lookup_image): Set IMG's background color if specified.
+       (pbm_load, xbm_load_image, png_load): Set IMG's background field
+       when appropriate.
+       (x_clear_image_1): Reset `background_valid' and
+       `background_transparent_valid' fields.
+       (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of
+       calculating it here.  Set IMG's background_transparent field.
+       (enum xpm_keyword_index): Add XPM_BACKGROUND.
+       (enum png_keyword_index): Add PNG_BACKGROUND.
+       (enum jpeg_keyword_index): Add JPEG_BACKGROUND.
+       (enum tiff_keyword_index): Add TIFF_BACKGROUND.
+       (enum gif_keyword_index): Add GIF_BACKGROUND.
+       (enum gs_keyword_index): Add GS_BACKGROUND.
+       (pbm_load, png_load, jpeg_load, tiff_load, gif_load):
+       Pre-calculate image background color where necessary.
+       * xterm.c (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and
+       `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background
+       color to use for image glyph reliefs.
+
+2001-10-24  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_draw_glyphs): Don't check for cursor overwriting
+       in full-width rows.
+
+       * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
+       Fix clearing of area not covered by scroll bar.
+
+2001-10-24  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xterm.c (x_insert_glyphs): Remove unused variables `real_end'
+       and `real_start'.
+       (x_draw_image_foreground): Remove unused variables `mask' and `xgcv'.
+       (glyph_rect): Remove unused variable `area'.
+
+2001-10-24  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c: Change #ifdef GLYPH_DEBUG to #if.
+
+       * xdisp.c (try_window_reusing_current_matrix): Use row_containing_pos.
+       (row_containing_pos): Take additional argument DY.
+       Treat rows ending in middle of char differently.
+       (display_line): Handle tabs on window systems differently.
+
+       * xterm.c, w32term.c (fast_find_position): Call row_containing_pos
+       with additional argument.
+
+       * dispextern.h (row_containing_pos): Adjust prototype.
+
+       * xdisp.c (inhibit_try_window_id, inhibit_try_window_reusing)
+       (inhibit_try_cursor_movement) [GLYPH_DEBUG]: New variables.
+       (try_window_id, try_window_reusing_current_matrix)
+       (try_cursor_movement) [GLYPH_DEBUG]: Don't run if inhibited.
+       (syms_of_xdisp) [GLYPH_DEBUG]: DEFVAR_BOOL the variables.
+
+2001-10-24  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xmenu.c: Spell the name of Emacs properly (GNU Emacs instead of
+       gnuemacs).
+       (HAVE_BOXES): Fix typo in comment.
+       (push_menu_pane): Fix typo in comment.
+
+       * xdisp.c (display_prop_string_p): Remove unused local declaration
+       of `Qwhen'.
+       (single_display_prop_string_p): Remove unused local declarations
+       of `Qwhen' and `Qmargin'.
+       (string_buffer_position): Remove unused variable `around'.
+       (store_frame_title): Remove unused variable `width'.
+
+       * window.c: Don't define max.
+       (coordinates_in_window): Remove unused variable `uy'.
+
+       * widget.c: Don't define max.
+
+       * process.c: Don't define max.
+       (create_process): Remove unused variable `buffer'.
+
+2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfaces.c (Finternal_set_lisp_face_attribute): Fix compilation error.
+
+2001-10-23  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xfaces.c (Finternal_set_lisp_face_attribute)
+       [HAVE_WINDOW_SYSTEM]: Don't do anything for QCfont unless the
+       frame is on a windowed display.
+
+2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+
+       * dispnew.c (sync_window_with_frame_matrix_rows):
+       Fix handling of windows which aren't full-width, fix handling
+       of marginal areas.
+
+       * lread.c (syms_of_lread) <recursive-load-depth-limit>: Raise to 50.
+
+2001-10-23  Andreas Schwab  <schwab@suse.de>
+
+       * m/macppc.h [LINUX]: Undef LD_SWITCH_SYSTEM_TEMACS and override
+       LD_SWITCH_MACHINE_TEMACS with "-Xlinker -znocombreloc".
+
+2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (x_draw_glyphs): Remove parameters READ_START and
+       REAL_END.  Notice if cursor gets overwritten.
+       (notice_overwritten_cursor): Take X positions as parameters.
+       (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p
+       around call to x_draw_glyphs.
+
+2001-10-23  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * syntax.c (modify-syntax-entry): Fix argument names (use CHAR
+       instead of C) and usage.
+
+       * editfns.c (char-to-string): Fix argument names (use CHAR instead
+       of C) and usage.
+
+       * xfns.c (Fx_show_tip): Remove unused variables `buffer', `top',
+       `left', `max_width' and `max_height'.
+
+2001-10-23  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (display_line): For a tab continued to the next line,
+       set row's ends_in_middle_of_char_p.
+
+2001-10-22  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (display_line): Fix computation of continuation lines
+       width for TABs.
+
+2001-10-22  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * xdisp.c (build_desired_tool_bar_string): Remove unused variable
+       `Qlaplace'.
+
+       * fileio.c: Remove unused code.
+
+2001-10-22  Miles Bader  <miles@gnu.org>
+
+       * lisp.h (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL)
+       (DEFVAR_INT, DEFVAR_PER_BUFFER, DEFVAR_KBOARD):
+       Remove `DOC_STRINGS_IN_COMMENTS' cases.
+
+2001-10-21  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (x_erase_phys_cursor): Remove inverse_p again.
+
+2001-10-21  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * mocklisp.c (Fml_if, Fml_provide_prefix_argument)
+       (Finsert_string): Avoid the multi-line string literals warning.
+
+2001-10-22  Miles Bader  <miles@gnu.org>
+
+       * doc.c (Vhelp_manyarg_func_alist): Variable removed.
+       (Fdocumentation): Don't use it.
+       (syms_of_doc): Don't initialize it.
+
+       * keyboard.c (Ftrack_mouse): Add usage: string to doc string.
+       * print.c (Fwith_output_to_temp_buffer): Likewise.
+       * window.c (Fsave_window_excursion): Likewise.
+       * editfns.c (Fsave_excursion, Fsave_current_buffer)
+       (Fsave_restriction): Likewise.
+       * eval.c (Frun_hooks, Frun_hook_with_args)
+       (Frun_hook_with_args_until_failure)
+       (Frun_hook_with_args_until_success, Ffuncall, For, Fand, Fif)
+       (Fcond, Fprogn, Fprog1, Fprog2, Fsetq, Fquote, Ffunction, Fdefun)
+       (Fdefmacro, Fdefvar, Fdefconst, FletX, Flet, Fwhile, Fcatch)
+       (Funwind_protect, Fcondition_case): Likewise.
+       * coding.c (Ffind_operation_coding_system): Likewise.
+       * keyboard.c (Ftrack_mouse): Likewise.
+
+2001-10-21  Miles Bader  <miles@gnu.org>
+
+       * fns.c (Fappend, Fconcat, Fvconcat, Fnconc, Fwidget_apply)
+       (Fmake_hash_table): Add usage: string to doc string.
+       * editfns.c (Finsert, Finsert_and_inherit, Finsert_before_markers)
+       (Fmessage, Fmessage_box, Fmessage_or_box, Fpropertize, Fformat)
+       (Fencode_time, Finsert_and_inherit_before_markers): Likewise.
+       * mocklisp.c (Finsert_string, Fml_if, Fml_provide_prefix_argument)
+       (Fml_prefix_argument_loop): Likewise.
+
+2001-10-21  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * fileio.c (Finsert_file_contents): Remove unused variable `gap_size'.
+
+       * sysdep.c (init_sys_modes): Change doc-string comments to `new
+       style' [w/`doc:' keyword].
+
+       * data.c, fileio.c, indent.c, print.c, search.c, sound.c,
+       * sunfns.c, textprop.c, undo.c, xselect.c: Change doc-string
+       comments to `new style' [w/`doc:' keyword].
+
+2001-10-21  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (Fx_file_dialog): Pass a filter to GetOpenFileName.
+
+       * w32term.c (remember_mouse_glyph): New function.
+       (w32_mouse_position): Use it.
+       (note_mouse_movement): If the mouse moved off the glyph, remember
+       its new position.
+
+       * w32term.h (struct w32_output): Correct spelling of x_compatible.
+       (w32_display_info): Add mouse_face_overlay.
+
+       * w32term.c (notice_overwritten_cursor): Renamed from
+       note_overwritten_text_cursor.  Rewritten to take glyph widths into
+       account.
+       (x_y_to_hpos_vpos): Add parameter BUFFER_ONLY_P.
+       (fast_find_string_pos): New function.
+       (fast_find_position): Return the correct vpos.  Add parameter
+       STOP.  In the final row, stop before glyphs having STOP as object.
+       Don't consider glyphs that are not from a buffer.
+       (fast_find_position) [0]: Add a presumably more correct version
+       for after 21.1.
+       (expose_window_tree, expose_frame): Don't compute intersections here.
+       (expose_window): Do it here instead.
+       (expose_window_tree, expose_window, expose_line): Return 1 when
+       overwriting mouse-face.
+       (expose_window): If W is the window currently being updated, mark
+       the frame garbaged.
+       (expose_frame): If mouse-face was overwritten, redo it.
+       (x_use_underline_position_properties): New variable.
+       (syms_of_xterm): DEFVAR_BOOL it.
+       (x_draw_glyph_string): Add comment to use it in future.
+       (x_draw_glyph_string): Restore clipping after drawing box.
+       Fix a computation of the underline position.
+       (w32_get_glyph_string_clip_rect): Minor cleanup.
+       (x_fill_stretch_glyph_string): Remove an assertion.
+       (x_produce_glyphs): Don't convert multibyte characters
+       to unibyte characters in unibyte buffers.
+       (cursor_in_mouse_face_p): New function.
+       (x_draw_stretch_glyph_string): Use it to choose a different GC
+       when drawing a cursor within highlighted text.  Don't draw
+       background again if it has already been drawn.
+       (x_draw_glyph_string_box): Don't draw a full-width
+       box just because the glyph row's full_width_p flag is set.
+       (x_draw_glyphs): Fix computation of rightmost x for
+       full-width rows.
+       (x_dump_glyph_string): Put in #if GLYPH_DEBUG.
+       (w32_draw_relief_rect): Extend left shadow to the bottom and left;
+       change bottom shadow accordingly.  Some cleanup.
+       (x_update_window_end): Handle overwritten mouse face
+       also for tool bar windows.
+       (show_mouse_face): Set the glyph row's mouse_face_p flag also when
+       DRAW is DRAW_IMAGE_RAISED.
+       (clear_mouse_face): Return 1 if text with mouse face was
+       actually redrawn.  Make the function static.
+       Reset dpyinfo->mouse_face_overlay otherwise note_mouse_highlight might
+       optimize away highlighting if we pass over that same overlay again.
+       (note_mouse_highlight): Call mouse_face_overlay_overlaps
+       to detect a case where we have to highlight a different region
+       despite not having left the currently highlighted region.
+       Set mouse_face_overlay in the x_display_info.  Avoid changing the
+       mouse pointer shape when show_mouse_face has already done it, or
+       there is no need.  Handle mouse-face and help-echo in strings.
+       (glyph_rect): New function.
+       (w32_mouse_position): Use it to raise the threshold for mouse
+       movement event generation.
+       (w32_initialize_display_info): Initialize the x_display_info's
+       mouse_face_overlay.
+       (w32_set_vertical_scroll_bar): Don't clear a zero height
+       or width area.
+       (w32_set_vertical_scroll_bar, x_scroll_bar_create): Don't configure
+       a widget to zero height.
+
+       * w32menu.c (single_submenu, w32_menu_show) [!HAVE_MULTILINGUAL_MENU]:
+       Protect unibyte strings created by replacing their multibyte
+       equivalents in menu_items.
+       (w32_menu_show): Don't overwrite an item's name with its key
+       description in case the description is a multibyte string.
+       (single_submenu): Some cleanup.
+
+       * w32fns.c (x_laplace_read_row, x_laplace_write_row): Removed.
+       (postprocess_image): New function.
+       (lookup_image): Call it for all image types except PostScript.
+       (x_kill_gs_process): Call postprocess_image.
+       (tiff_error_handler, tiff_warning_handler): New functions.
+       (tiff_load): Install them as handlers.
+       (x_kill_gs_process): Recognize if someone has cleared the image
+       cache under us.
+       (valid_image_p): Protect better against invalid image
+       specifications.  Previous code could signal an error.
+       (Fx_hide_tip, Fshow_tip): Doc fix.
+       (Fv_max_tooltip_size): New variable.
+       (syns_of_xfns): DEFVAR_LISP it.
+       (Fx_show_tip): Add parameter TEXT.  Set the tip frame's root
+       window buffer to *tip* right after creating the frame.  Set frame's
+       window_width.  Use a maximum tooltip size specified by
+       Vx_max_tooltip_size, if that has valid contents.
+       (compute_tip_xy): Add parameters WIDTH and HEIGHT.
+       Make sure the tooltip is completely visible.
+       (x_create_tip_frame): Set tooltip buffer's truncate-lines to nil.
+       (Fx_create_frame): Adjust the frame's height for presence
+       of the tool bar before calling x_figure_window_size.
+       (x_set_tool_bar_lines): Clear the tool bar window's current matrix
+       when the window gets smaller.
+       (x_set_foreground_color): Set frame's cursor_pixel.
+       (x_set_foreground_color, x_set_background_color): Cleaned up.
+       (x_set_font): Handle case of x_new_fontset returning the same name
+       as before, although there was a change in fontsets.
+
+2001-10-21  Miles Bader  <miles@gnu.org>
+
+       * data.c (Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior)
+       (Flogxor): Add usage: string to doc string.
+       * charset.c (Fstring): Likewise.
+       * callproc.c (Fcall_process_region, Fcall_process): Likewise.
+       * alloc.c (Fmake_byte_code, Fvector, Flist): Likewise.
+
+2001-10-21  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
+
+       * buffer.c: Reindent DEFUNs and DEFVARs with doc: keywords.
+
+       * alloc.c: Reindent DEFUNs with doc: keywords.
+
+       * abbrev.c (Finsert_abbrev_table_description): Reindent.
+
+       * frame.c: Change doc-string comments to `new style' [w/`doc:'
+       keyword].
+
+See ChangeLog.9 for earlier changes.
+
+;; Local Variables:
+;; coding: iso-2022-7bit
+;; add-log-time-zone-rule: t
+;; End:
+
+    Copyright (C) 2001, 2002, 2003, 2004, 2005,
+       2006, 2007 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, 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; see the file COPYING.  If not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301, USA.
+
+;;; arch-tag: 5dcc435f-4038-4141-b3bf-5be51cd76bd4
index 3bc012343476f419ed1ec14a1b4871a5b769a026..f5fc9e4ec3e701a43501b52963a19dc57dc08873 100644 (file)
@@ -75,12 +75,6 @@ SHELL=/bin/sh
 #define NOT_C_CODE
 #include "config.h"
 
-/* We will not really call alloca;
-   do not let the file name alloca.c get messed up.  */
-#ifdef alloca
-#undef alloca
-#endif
-
 /* Do not let the file name mktime.c get messed up.  */
 #ifdef mktime
 #undef mktime
@@ -281,7 +275,7 @@ TOOLKIT_DEFINES =
 
 /* C_SWITCH_X_SITE must come before C_SWITCH_X_MACHINE and C_SWITCH_X_SYSTEM
    since it may have -I options that should override those two.  */
-ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${CFLAGS}
+ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${CFLAGS}
 .c.o:
        $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
 
@@ -440,7 +434,7 @@ XFT_LIBS=@XFT_LIBS@
 
 #if HAVE_GIF
 #ifndef LIBGIF
-#define LIBGIF -lungif
+#define LIBGIF -lgif
 #endif /* not defined LIBGIF */
 #else /* not HAVE_GIF */
 #define LIBGIF
@@ -457,9 +451,21 @@ LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM
 #else /* not HAVE_X_WINDOWS */
 #endif /* not HAVE_X_WINDOWS */
 
+#if HAVE_GPM
+#ifndef LIBGPM
+#define LIBGPM -lgpm
+#endif /* not defined LIBGPM */
+#else /* not HAVE_GPM */
+#define LIBGPM
+#endif /* not HAVE_GPM */
+
+
 LIBSOUND= @LIBSOUND@
 CFLAGS_SOUND= @CFLAGS_SOUND@
 
+RSVG_LIBS= @RSVG_LIBS@
+RSVG_CFLAGS= @RSVG_CFLAGS@
+
 #ifndef ORDINARY_LINK
 /* Fix linking if compiled with GCC.  */
 #ifdef __GNUC__
@@ -583,7 +589,7 @@ emacsappsrc = ${srcdir}/../mac/Emacs.app/
    whose initialized data areas should be dumped as pure by dump-emacs.  */
 obj=    dispnew.o frame.o scroll.o xdisp.o $(XMENU_OBJ) window.o \
        charset.o coding.o category.o ccl.o \
-       cm.o term.o xfaces.o $(XOBJ) $(GTK_OBJ)\
+       cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ)\
        emacs.o keyboard.o macros.o keymap.o sysdep.o \
        buffer.o filelock.o insdel.o marker.o \
        minibuf.o fileio.o dired.o filemode.o \
@@ -638,12 +644,6 @@ mallocobj = $(gmallocobj) $(rallocobj) vm-limit.o
 #endif /* SYSTEM_MALLOC */
 
 
-#ifndef HAVE_ALLOCA
-allocaobj = alloca.o
-#else
-allocaobj =
-#endif
-
 #ifdef USE_X_TOOLKIT
 widgetobj= widget.o
 #else /* not USE_X_TOOLKIT */
@@ -655,17 +655,21 @@ widgetobj=
    should not be told about.  */
 #ifdef CYGWIN
 /* Cygwin differs because of its unexec(). */
-otherobj= $(termcapobj) $(gmallocobj) $(rallocobj) lastfile.o vm-limit.o $(allocaobj) $(widgetobj) $(LIBOBJS)
+otherobj= $(termcapobj) $(gmallocobj) $(rallocobj) lastfile.o vm-limit.o $(widgetobj) $(LIBOBJS)
 #else
-otherobj= $(termcapobj) lastfile.o $(mallocobj) $(allocaobj) $(widgetobj) $(LIBOBJS)
+otherobj= $(termcapobj) lastfile.o $(mallocobj) $(widgetobj) $(LIBOBJS)
 #endif
 
 #ifdef HAVE_MOUSE
 #define MOUSE_SUPPORT ${lispsource}mouse.elc \
   ${lispsource}select.elc ${lispsource}scroll-bar.elc
 #else
+#ifdef HAVE_GPM
+#define MOUSE_SUPPORT ${lispsource}mouse.elc
+#else
 #define MOUSE_SUPPORT
 #endif
+#endif
 
 #ifdef VMS
 #define VMS_SUPPORT ${lispsource}vmsproc.elc ${lispsource}vms-patch.elc
@@ -927,13 +931,15 @@ SOME_MACHINE_LISP = ${dotdot}/lisp/mouse.elc \
   ${dotdot}/lisp/x-dnd.elc \
   ${dotdot}/lisp/international/ccl.elc \
   ${dotdot}/lisp/international/codepage.elc \
-  ${dotdot}/lisp/international/fontset.elc
+  ${dotdot}/lisp/international/fontset.elc \
+  ${dotdot}/lisp/mouse.elc \
+  ${dotdot}/lisp/term/x-win.elc
 
 /* Construct full set of libraries to be linked.
    Note that SunOS needs -lm to come before -lc; otherwise, you get
    duplicated symbols.  If the standard libraries were compiled
    with GCC, we might need gnulib again after them.  */
-LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) \
+LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) $(RSVG_LIBS) LIBGPM \
    LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \
    LIBS_DEBUG $(GETLOADAVG_LIBS) $(GNULIB_VAR) LIB_MATH LIB_STANDARD \
    $(GNULIB_VAR)
@@ -1076,12 +1082,6 @@ stamp-oldxmenu:
        @echo "Please run the `configure' script again."
        exit 1
 
-/* Some machines have alloca built-in.
-   They should define HAVE_ALLOCA.
-   Some use the C version in alloca.c (these define C_ALLOCA in config.h).
-   */
-alloca.o: alloca.c blockinput.h atimer.h systime.h
-
 /* Nearly all the following files depend on lisp.h,
    but it is not included as a dependency because
    it is so often changed in ways that do not require any recompilation
@@ -1096,7 +1096,7 @@ callint.o: callint.c window.h commands.h buffer.h keymap.h \
    keyboard.h dispextern.h $(config_h)
 callproc.o: callproc.c epaths.h buffer.h commands.h $(config_h) \
        process.h systty.h syssignal.h charset.h coding.h ccl.h msdos.h \
-        composite.h w32.h blockinput.h atimer.h systime.h
+        composite.h w32.h blockinput.h atimer.h systime.h frame.h termhooks.h
 casefiddle.o: casefiddle.c syntax.h commands.h buffer.h composite.h \
        charset.h keymap.h $(config_h)
 casetab.o: casetab.c buffer.h $(config_h)
@@ -1105,8 +1105,8 @@ ccl.o: ccl.c ccl.h charset.h coding.h $(config_h)
 charset.o: charset.c charset.h buffer.h coding.h composite.h disptab.h \
        $(config_h)
 coding.o: coding.c coding.h ccl.h buffer.h charset.h intervals.h composite.h \
-       window.h dispextern.h $(config_h)
-cm.o: cm.c cm.h termhooks.h $(config_h)
+       window.h dispextern.h frame.h termhooks.h $(config_h)
+cm.o: cm.c frame.h cm.h termhooks.h termchar.h $(config_h)
 cmds.o: cmds.c syntax.h buffer.h charset.h commands.h window.h $(config_h) \
        msdos.h dispextern.h keyboard.h keymap.h
 pre-crt0.o: pre-crt0.c
@@ -1114,7 +1114,7 @@ ecrt0.o: ecrt0.c $(config_h)
        CRT0_COMPILE ${srcdir}/ecrt0.c
 dired.o: dired.c commands.h buffer.h $(config_h) charset.h coding.h regex.h \
    systime.h blockinput.h atimer.h
-dispnew.o: dispnew.c  systty.h systime.h commands.h process.h frame.h \
+dispnew.o: dispnew.c systime.h commands.h process.h frame.h \
    window.h buffer.h dispextern.h termchar.h termopts.h termhooks.h cm.h \
    disptab.h indent.h intervals.h \
    xterm.h blockinput.h atimer.h charset.h msdos.h composite.h keyboard.h \
@@ -1135,10 +1135,10 @@ filelock.o: filelock.c buffer.h charset.h coding.h systime.h epaths.h $(config_h
 filemode.o: filemode.c  $(config_h)
 frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
    blockinput.h atimer.h systime.h buffer.h charset.h fontset.h \
-   msdos.h dosfns.h dispextern.h w32term.h macterm.h $(config_h)
-fringe.o: fringe.c dispextern.h frame.h window.h buffer.h $(config_h)
+   msdos.h dosfns.h dispextern.h w32term.h macterm.h termchar.h $(config_h)
+fringe.o: fringe.c dispextern.h frame.h window.h buffer.h termhooks.h $(config_h)
 fontset.o: dispextern.h fontset.h fontset.c ccl.h buffer.h charset.h frame.h \
-   keyboard.h $(config_h)
+   keyboard.h termhooks.h $(config_h)
 getloadavg.o: getloadavg.c $(config_h)
 image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
    systime.h xterm.h w32term.h w32gui.h macterm.h macgui.h $(config_h)
@@ -1149,7 +1149,7 @@ insdel.o: insdel.c window.h buffer.h $(INTERVAL_SRC) blockinput.h charset.h \
    dispextern.h atimer.h systime.h region-cache.h $(config_h)
 keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h charset.h \
    commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
-   systty.h systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h \
+   systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h \
    atimer.h xterm.h puresize.h msdos.h keymap.h w32term.h macterm.h $(config_h)
 keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
    atimer.h systime.h puresize.h charset.h intervals.h keymap.h window.h \
@@ -1164,7 +1164,8 @@ vm-limit.o: vm-limit.c mem-limits.h $(config_h)
 marker.o: marker.c buffer.h charset.h $(config_h)
 md5.o: md5.c md5.h $(config_h)
 minibuf.o: minibuf.c syntax.h dispextern.h frame.h window.h keyboard.h \
-   buffer.h commands.h charset.h msdos.h $(INTERVAL_SRC) keymap.h $(config_h)
+   buffer.h commands.h charset.h msdos.h $(INTERVAL_SRC) keymap.h \
+   termhooks.h $(config_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 charset.h coding.h ccl.h disptab.h window.h \
@@ -1176,7 +1177,7 @@ process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
 regex.o: regex.c syntax.h buffer.h $(config_h) regex.h category.h charset.h
 region-cache.o: region-cache.c buffer.h region-cache.h $(config_h)
 scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
-   $(config_h)
+   termhooks.h $(config_h)
 search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
    blockinput.h atimer.h systime.h category.h charset.h composite.h \
    $(INTERVAL_SRC) $(config_h)
@@ -1185,11 +1186,13 @@ syntax.o: syntax.c syntax.h buffer.h commands.h category.h charset.h \
    composite.h keymap.h regex.h $(INTERVAL_SRC) $(config_h)
 sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \
    process.h dispextern.h termhooks.h termchar.h termopts.h \
-   frame.h atimer.h window.h msdos.h dosfns.h keyboard.h  $(config_h)
+   frame.h atimer.h window.h msdos.h dosfns.h keyboard.h cm.h $(config_h)
 term.o: term.c termchar.h termhooks.h termopts.h $(config_h) cm.h frame.h \
    disptab.h dispextern.h keyboard.h charset.h coding.h ccl.h msdos.h \
    window.h keymap.h blockinput.h atimer.h systime.h
 termcap.o: termcap.c $(config_h)
+terminal.o: terminal.c frame.h termchar.h termhooks.h charset.h coding.h \
+   keyboard.h $(config_h)
 terminfo.o: terminfo.c $(config_h)
 tparam.o: tparam.c $(config_h)
 undo.o: undo.c buffer.h commands.h window.h $(config_h)
@@ -1202,7 +1205,7 @@ w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \
 widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
    $(srcdir)/../lwlib/lwlib.h $(config_h)
 window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
-   termhooks.h disptab.h keyboard.h dispextern.h msdos.h composite.h \
+   disptab.h keyboard.h dispextern.h msdos.h composite.h \
    keymap.h blockinput.h atimer.h systime.h $(INTERVAL_SRC) \
    xterm.h w32term.h macterm.h $(config_h)
 xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h coding.h \
@@ -1211,10 +1214,11 @@ xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h co
    msdos.h composite.h fontset.h blockinput.h atimer.h systime.h keymap.h
 xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
    window.h charset.h msdos.h dosfns.h composite.h atimer.h systime.h \
-   keyboard.h fontset.h w32term.h macterm.h $(INTERVAL_SRC) $(config_h)
+   keyboard.h fontset.h w32term.h macterm.h $(INTERVAL_SRC) termchar.h \
+   termhooks.h $(config_h)
 xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
    $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
-   charset.h gtkutil.h $(config_h)
+   charset.h gtkutil.h termchar.h termhooks.h $(config_h)
 xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h buffer.h \
    keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h \
    gtkutil.h msdos.h coding.h $(config_h)
@@ -1223,7 +1227,7 @@ xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h buffer.h \
   keyboard.h gnu.h charset.h ccl.h fontset.h composite.h \
   coding.h process.h gtkutil.h $(config_h)
 xselect.o: xselect.c process.h dispextern.h frame.h xterm.h blockinput.h \
-  buffer.h atimer.h systime.h $(config_h)
+  buffer.h atimer.h systime.h termhooks.h $(config_h)
 xrdb.o: xrdb.c $(config_h) epaths.h
 xsmfns.o: xsmfns.c $(config_h) systime.h sysselect.h termhooks.h xterm.h \
   lisp.h termopts.h
@@ -1241,19 +1245,18 @@ alloc.o: alloc.c process.h frame.h window.h buffer.h  puresize.h syssignal.h key
  blockinput.h atimer.h systime.h charset.h dispextern.h $(config_h) $(INTERVAL_SRC)
 bytecode.o: bytecode.c buffer.h syntax.h charset.h window.h dispextern.h \
   frame.h xterm.h $(config_h)
-data.o: data.c buffer.h puresize.h charset.h syssignal.h keyboard.h frame.h $(config_h)
+data.o: data.c buffer.h puresize.h charset.h syssignal.h keyboard.h frame.h termhooks.h $(config_h)
 eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \
   dispextern.h $(config_h)
 floatfns.o: floatfns.c $(config_h)
 fns.o: fns.c commands.h $(config_h) frame.h buffer.h charset.h keyboard.h \
  keymap.h frame.h window.h dispextern.h $(INTERVAL_SRC) coding.h md5.h \
- blockinput.h atimer.h systime.h xterm.h
+ blockinput.h atimer.h systime.h xterm.h termhooks.h
 print.o: print.c process.h frame.h window.h buffer.h keyboard.h charset.h \
    $(config_h) dispextern.h termchar.h $(INTERVAL_SRC) msdos.h composite.h \
    blockinput.h atimer.h systime.h
 lread.o: lread.c commands.h keyboard.h buffer.h epaths.h charset.h \
- $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h blockinput.h \
- atimer.h systime.h
+ $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h
 
 /* Text properties support */
 textprop.o: textprop.c buffer.h window.h dispextern.h $(INTERVAL_SRC) \
@@ -1266,12 +1269,12 @@ composite.o: composite.c buffer.h  charset.h $(INTERVAL_SRC) $(config_h)
    OTHER_FILES and OBJECTS_MACHINE
    select which of these should be compiled.  */
 
-sunfns.o: sunfns.c buffer.h window.h dispextern.h $(config_h)
+sunfns.o: sunfns.c buffer.h window.h dispextern.h termhooks.h $(config_h)
 
 #ifdef HAVE_CARBON
 abbrev.o buffer.o callint.o cmds.o dispnew.o editfns.o fileio.o frame.o \
   fontset.o indent.o insdel.o keyboard.o macros.o minibuf.o msdos.o process.o \
-  scroll.o sysdep.o term.o widget.o window.o xdisp.o xfaces.o xfns.o xmenu.o \
+  scroll.o sysdep.o term.o terminal.o widget.o window.o xdisp.o xfaces.o xfns.o xmenu.o \
   xterm.o xselect.o sound.o: macgui.h
 mac.o: mac.c process.h sysselect.h blockinput.h atimer.h systime.h charset.h \
   coding.h ccl.h $(config_h)
@@ -1312,8 +1315,6 @@ ${emacsapp}Contents/MacOS/Emacs: emacs${EXEEXT}
        cd ${emacsapp}Contents/MacOS/; cp ../../../../src/emacs${EXEEXT} Emacs${EXEEXT}
 #endif
 
-${libsrc}emacstool${EXEEXT}: ${libsrc}emacstool.c
-       cd ${libsrc}; ${MAKE} ${MFLAGS} emacstool${EXEEXT}
 bootstrapclean:
        rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
 mostlyclean:
@@ -1339,17 +1340,6 @@ versionclean:
 extraclean: distclean
        -rm -f *~ \#* m/?*~ s/?*~
 
-/* The rule for the [sm] files has to be written a little funny to
-   avoid looking like a C comment to CPP. */
-SOURCES = *.[ch] [sm]/?* COPYING Makefile.in \
-       config.in epaths.in README COPYING ChangeLog vms.pp-trans
-unlock:
-       chmod u+w $(SOURCES)
-
-relock:
-       chmod -w $(SOURCES)
-       chmod +w epaths.h
-
 /* Arrange to make a tags table TAGS-LISP for ../lisp,
    plus TAGS for the C files, which includes ../lisp/TAGS by reference.  */
 
index bdb8dc66ba71dc0c9f7e995afe1e546bdba329b5..403afdb99a79259d6002b14e746886ff948afd14 100644 (file)
@@ -172,12 +172,79 @@ overwrite a non-system abbreviation of the same name.  */)
   return name;
 }
 
+/* Check if the characters in ABBREV have word syntax in either the
+ * current (if global == 0) or standard syntax table. */
+static void
+abbrev_check_chars (abbrev, global)
+     Lisp_Object abbrev;
+     int global;
+{
+  int i, i_byte, len, nbad = 0;
+  int j, found, nuniq = 0;
+  char *badchars, *baduniq;
+
+  CHECK_STRING (abbrev);
+  len = SCHARS (abbrev);
+
+  badchars = (char *) alloca (len + 1);
+
+  for (i = 0, i_byte = 0; i < len; )
+    {
+      int c;
+
+      FETCH_STRING_CHAR_ADVANCE (c, abbrev, i, i_byte);
+
+      if (global)
+        {
+          /* Copied from SYNTAX in syntax.h, except using FOLLOW_PARENT. */
+          Lisp_Object syntax_temp
+            = SYNTAX_ENTRY_FOLLOW_PARENT (Vstandard_syntax_table, c);
+          if ( (CONSP (syntax_temp)
+                ? (enum syntaxcode) (XINT (XCAR (syntax_temp)) & 0xff)
+                : Swhitespace) != Sword ) badchars[nbad++] = c;
+        }
+      else if (SYNTAX (c) != Sword)
+        badchars[nbad++] = c;
+    }
+
+  if (nbad == 0) return;
+
+  baduniq = (char *) alloca (nbad + 1);
+
+  for (i = 0; i < nbad; i++)
+    {
+      found = 0;
+
+      for (j = 0; j < nuniq; j++)
+        {
+          if (badchars[i] == baduniq[j])
+            {
+              found = 1;
+              break;
+            }
+        }
+
+      if (found) continue ;
+
+      baduniq[nuniq++] = badchars[i];
+    }
+
+  baduniq[nuniq] = '\0';
+
+  error ("Some abbrev characters (%s) are not word constituents %s",
+         baduniq, global ? "in the standard syntax" : "in this mode" );
+}
+
 DEFUN ("define-global-abbrev", Fdefine_global_abbrev, Sdefine_global_abbrev, 2, 2,
        "sDefine global abbrev: \nsExpansion for %s: ",
-       doc: /* Define ABBREV as a global abbreviation for EXPANSION.  */)
+       doc: /* Define ABBREV as a global abbreviation for EXPANSION.
+The characters in ABBREV must all be word constituents in the standard
+syntax table.  */)
      (abbrev, expansion)
      Lisp_Object abbrev, expansion;
 {
+  abbrev_check_chars (abbrev, 1);
+
   Fdefine_abbrev (Vglobal_abbrev_table, Fdowncase (abbrev),
                  expansion, Qnil, make_number (0), Qnil);
   return abbrev;
@@ -185,13 +252,16 @@ DEFUN ("define-global-abbrev", Fdefine_global_abbrev, Sdefine_global_abbrev, 2,
 
 DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, Sdefine_mode_abbrev, 2, 2,
        "sDefine mode abbrev: \nsExpansion for %s: ",
-       doc: /* Define ABBREV as a mode-specific abbreviation for EXPANSION.  */)
+       doc: /* Define ABBREV as a mode-specific abbreviation for EXPANSION.
+The characters in ABBREV must all be word-constituents in the current mode.  */)
      (abbrev, expansion)
      Lisp_Object abbrev, expansion;
 {
   if (NILP (current_buffer->abbrev_table))
     error ("Major mode has no abbrev table");
 
+  abbrev_check_chars (abbrev, 0);
+
   Fdefine_abbrev (current_buffer->abbrev_table, Fdowncase (abbrev),
                  expansion, Qnil, make_number (0), Qnil);
   return abbrev;
@@ -699,9 +769,6 @@ Calling `expand-abbrev' sets this to nil.  */);
 Trying to expand an abbrev in any other buffer clears `abbrev-start-location'.  */);
   Vabbrev_start_location_buffer = Qnil;
 
-  DEFVAR_PER_BUFFER ("local-abbrev-table", &current_buffer->abbrev_table, Qnil,
-                    doc: /* Local (mode-specific) abbrev table of current buffer.  */);
-
   DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed,
               doc: /* Set non-nil by defining or altering any word abbrevs.
 This causes `save-some-buffers' to offer to save the abbrevs.  */);
index 3e2b6649e96447f15910328f5f20bf9e39da9a50..8e00733a60ba3f004e1ce5461a68806de8c42ed2 100644 (file)
@@ -55,6 +55,7 @@ Boston, MA 02110-1301, USA.  */
 #include "blockinput.h"
 #include "charset.h"
 #include "syssignal.h"
+#include "termhooks.h"         /* For struct terminal.  */
 #include <setjmp.h>
 
 /* GC_MALLOC_CHECK defined means perform validity checks of malloc'd
@@ -341,7 +342,9 @@ Lisp_Object Vgc_elapsed;    /* accumulated elapsed time in GC  */
 EMACS_INT gcs_done;            /* accumulated GCs  */
 
 static void mark_buffer P_ ((Lisp_Object));
+static void mark_terminals P_ ((void));
 extern void mark_kboards P_ ((void));
+extern void mark_ttys P_ ((void));
 extern void mark_backtrace P_ ((void));
 static void gc_sweep P_ ((void));
 static void mark_glyph_matrix P_ ((struct glyph_matrix *));
@@ -373,14 +376,11 @@ enum mem_type
   MEM_TYPE_MISC,
   MEM_TYPE_SYMBOL,
   MEM_TYPE_FLOAT,
-  /* Keep the following vector-like types together, with
-     MEM_TYPE_WINDOW being the last, and MEM_TYPE_VECTOR the
-     first.  Or change the code of live_vector_p, for instance.  */
-  MEM_TYPE_VECTOR,
-  MEM_TYPE_PROCESS,
-  MEM_TYPE_HASH_TABLE,
-  MEM_TYPE_FRAME,
-  MEM_TYPE_WINDOW
+  /* We used to keep separate mem_types for subtypes of vectors such as
+     process, hash_table, frame, terminal, and window, but we never made
+     use of the distinction, so it only caused source-code complexity
+     and runtime slowdown.  Minor but pointless.  */
+  MEM_TYPE_VECTORLIKE
 };
 
 static POINTER_TYPE *lisp_align_malloc P_ ((size_t, enum mem_type));
@@ -467,7 +467,7 @@ static struct mem_node mem_z;
 #define MEM_NIL &mem_z
 
 static POINTER_TYPE *lisp_malloc P_ ((size_t, enum mem_type));
-static struct Lisp_Vector *allocate_vectorlike P_ ((EMACS_INT, enum mem_type));
+static struct Lisp_Vector *allocate_vectorlike P_ ((EMACS_INT));
 static void lisp_free P_ ((POINTER_TYPE *));
 static void mark_stack P_ ((void));
 static int live_vector_p P_ ((struct mem_node *, void *));
@@ -743,6 +743,15 @@ overrun_check_free (block)
 #define free overrun_check_free
 #endif
 
+#ifdef SYNC_INPUT
+/* When using SYNC_INPUT, we don't call malloc from a signal handler, so
+   there's no need to block input around malloc.  */
+#define MALLOC_BLOCK_INPUT   ((void)0)
+#define MALLOC_UNBLOCK_INPUT ((void)0)
+#else
+#define MALLOC_BLOCK_INPUT   BLOCK_INPUT
+#define MALLOC_UNBLOCK_INPUT UNBLOCK_INPUT
+#endif
 
 /* Like malloc but check for no memory and block interrupt input..  */
 
@@ -752,9 +761,9 @@ xmalloc (size)
 {
   register POINTER_TYPE *val;
 
-  BLOCK_INPUT;
+  MALLOC_BLOCK_INPUT;
   val = (POINTER_TYPE *) malloc (size);
-  UNBLOCK_INPUT;
+  MALLOC_UNBLOCK_INPUT;
 
   if (!val && size)
     memory_full ();
@@ -771,14 +780,14 @@ xrealloc (block, size)
 {
   register POINTER_TYPE *val;
 
-  BLOCK_INPUT;
+  MALLOC_BLOCK_INPUT;
   /* We must call malloc explicitly when BLOCK is 0, since some
      reallocs don't do this.  */
   if (! block)
     val = (POINTER_TYPE *) malloc (size);
   else
     val = (POINTER_TYPE *) realloc (block, size);
-  UNBLOCK_INPUT;
+  MALLOC_UNBLOCK_INPUT;
 
   if (!val && size) memory_full ();
   return val;
@@ -791,9 +800,9 @@ void
 xfree (block)
      POINTER_TYPE *block;
 {
-  BLOCK_INPUT;
+  MALLOC_BLOCK_INPUT;
   free (block);
-  UNBLOCK_INPUT;
+  MALLOC_UNBLOCK_INPUT;
   /* We don't call refill_memory_reserve here
      because that duplicates doing so in emacs_blocked_free
      and the criterion should go there.  */
@@ -844,7 +853,7 @@ lisp_malloc (nbytes, type)
 {
   register void *val;
 
-  BLOCK_INPUT;
+  MALLOC_BLOCK_INPUT;
 
 #ifdef GC_MALLOC_CHECK
   allocated_mem_type = type;
@@ -874,7 +883,7 @@ lisp_malloc (nbytes, type)
     mem_insert (val, (char *) val + nbytes, type);
 #endif
 
-  UNBLOCK_INPUT;
+  MALLOC_UNBLOCK_INPUT;
   if (!val && nbytes)
     memory_full ();
   return val;
@@ -887,12 +896,12 @@ static void
 lisp_free (block)
      POINTER_TYPE *block;
 {
-  BLOCK_INPUT;
+  MALLOC_BLOCK_INPUT;
   free (block);
 #if GC_MARK_STACK && !defined GC_MALLOC_CHECK
   mem_delete (mem_find (block));
 #endif
-  UNBLOCK_INPUT;
+  MALLOC_UNBLOCK_INPUT;
 }
 
 /* Allocation of aligned blocks of memory to store Lisp data.              */
@@ -993,7 +1002,7 @@ lisp_align_malloc (nbytes, type)
 
   eassert (nbytes <= BLOCK_BYTES);
 
-  BLOCK_INPUT;
+  MALLOC_BLOCK_INPUT;
 
 #ifdef GC_MALLOC_CHECK
   allocated_mem_type = type;
@@ -1025,7 +1034,7 @@ lisp_align_malloc (nbytes, type)
 
       if (base == 0)
        {
-         UNBLOCK_INPUT;
+         MALLOC_UNBLOCK_INPUT;
          memory_full ();
        }
 
@@ -1051,7 +1060,7 @@ lisp_align_malloc (nbytes, type)
            {
              lisp_malloc_loser = base;
              free (base);
-             UNBLOCK_INPUT;
+             MALLOC_UNBLOCK_INPUT;
              memory_full ();
            }
        }
@@ -1084,7 +1093,7 @@ lisp_align_malloc (nbytes, type)
     mem_insert (val, (char *) val + nbytes, type);
 #endif
 
-  UNBLOCK_INPUT;
+  MALLOC_UNBLOCK_INPUT;
   if (!val && nbytes)
     memory_full ();
 
@@ -1099,7 +1108,7 @@ lisp_align_free (block)
   struct ablock *ablock = block;
   struct ablocks *abase = ABLOCK_ABASE (ablock);
 
-  BLOCK_INPUT;
+  MALLOC_BLOCK_INPUT;
 #if GC_MARK_STACK && !defined GC_MALLOC_CHECK
   mem_delete (mem_find (block));
 #endif
@@ -1132,7 +1141,7 @@ lisp_align_free (block)
 #endif
       free (ABLOCKS_BASE (abase));
     }
-  UNBLOCK_INPUT;
+  MALLOC_UNBLOCK_INPUT;
 }
 
 /* Return a new buffer structure allocated from the heap with
@@ -1161,6 +1170,8 @@ allocate_buffer ()
    can use GNU malloc.  */
 
 #ifndef SYNC_INPUT
+/* When using SYNC_INPUT, we don't call malloc from a signal handler, so
+   there's no need to block input around malloc.  */
 
 #ifndef DOUG_LEA_MALLOC
 extern void * (*__malloc_hook) P_ ((size_t, const void *));
@@ -1179,8 +1190,6 @@ emacs_blocked_free (ptr, ptr2)
      void *ptr;
      const void *ptr2;
 {
-  EMACS_INT bytes_used_now;
-
   BLOCK_INPUT_ALLOC;
 
 #ifdef GC_MALLOC_CHECK
@@ -1236,7 +1245,8 @@ emacs_blocked_malloc (size, ptr)
   BLOCK_INPUT_ALLOC;
   __malloc_hook = old_malloc_hook;
 #ifdef DOUG_LEA_MALLOC
-    mallopt (M_TOP_PAD, malloc_hysteresis * 4096);
+  /* Segfaults on my system.  --lorentey */
+  /* mallopt (M_TOP_PAD, malloc_hysteresis * 4096); */
 #else
     __malloc_extra_blocks = malloc_hysteresis;
 #endif
@@ -1446,9 +1456,7 @@ make_interval ()
 
   /* eassert (!handling_signal); */
 
-#ifndef SYNC_INPUT
-  BLOCK_INPUT;
-#endif
+  MALLOC_BLOCK_INPUT;
 
   if (interval_free_list)
     {
@@ -1472,9 +1480,7 @@ make_interval ()
       val = &interval_block->intervals[interval_block_index++];
     }
 
-#ifndef SYNC_INPUT
-  UNBLOCK_INPUT;
-#endif
+  MALLOC_UNBLOCK_INPUT;
 
   consing_since_gc += sizeof (struct interval);
   intervals_consed++;
@@ -1756,6 +1762,8 @@ init_strings ()
   string_blocks = NULL;
   n_string_blocks = 0;
   string_free_list = NULL;
+  empty_unibyte_string = make_pure_string ("", 0, 0, 0);
+  empty_multibyte_string = make_pure_string ("", 0, 0, 1);
 }
 
 
@@ -1875,9 +1883,7 @@ allocate_string ()
 
   /* eassert (!handling_signal); */
 
-#ifndef SYNC_INPUT
-  BLOCK_INPUT;
-#endif
+  MALLOC_BLOCK_INPUT;
 
   /* If the free-list is empty, allocate a new string_block, and
      add all the Lisp_Strings in it to the free-list.  */
@@ -1908,9 +1914,7 @@ allocate_string ()
   s = string_free_list;
   string_free_list = NEXT_FREE_LISP_STRING (s);
 
-#ifndef SYNC_INPUT
-  UNBLOCK_INPUT;
-#endif
+  MALLOC_UNBLOCK_INPUT;
 
   /* Probably not strictly necessary, but play it safe.  */
   bzero (s, sizeof *s);
@@ -1962,9 +1966,7 @@ allocate_string_data (s, nchars, nbytes)
   old_data = s->data ? SDATA_OF_STRING (s) : NULL;
   old_nbytes = GC_STRING_BYTES (s);
 
-#ifndef SYNC_INPUT
-  BLOCK_INPUT;
-#endif
+  MALLOC_BLOCK_INPUT;
 
   if (nbytes > LARGE_STRING_BYTES)
     {
@@ -1980,18 +1982,14 @@ allocate_string_data (s, nchars, nbytes)
          mmap'ed data typically have an address towards the top of the
          address space, which won't fit into an EMACS_INT (at least on
          32-bit systems with the current tagging scheme).  --fx  */
-      BLOCK_INPUT;
       mallopt (M_MMAP_MAX, 0);
-      UNBLOCK_INPUT;
 #endif
 
       b = (struct sblock *) lisp_malloc (size + GC_STRING_EXTRA, MEM_TYPE_NON_LISP);
 
 #ifdef DOUG_LEA_MALLOC
       /* Back to a reasonable maximum of mmap'ed areas. */
-      BLOCK_INPUT;
       mallopt (M_MMAP_MAX, MMAP_MAX_AREAS);
-      UNBLOCK_INPUT;
 #endif
 
       b->next_free = &b->first_data;
@@ -2022,9 +2020,7 @@ allocate_string_data (s, nchars, nbytes)
   data = b->next_free;
   b->next_free = (struct sdata *) ((char *) data + needed + GC_STRING_EXTRA);
 
-#ifndef SYNC_INPUT
-  UNBLOCK_INPUT;
-#endif
+  MALLOC_UNBLOCK_INPUT;
 
   data->string = s;
   s->data = SDATA_DATA (data);
@@ -2342,11 +2338,13 @@ LENGTH must be a number.  INIT matters only in whether it is t or nil.  */)
   /* We must allocate one more elements than LENGTH_IN_ELTS for the
      slot `size' of the struct Lisp_Bool_Vector.  */
   val = Fmake_vector (make_number (length_in_elts + 1), Qnil);
-  p = XBOOL_VECTOR (val);
 
   /* Get rid of any bits that would cause confusion.  */
-  p->vector_size = 0;
-  XSETBOOL_VECTOR (val, p);
+  XVECTOR (val)->size = 0;     /* No Lisp_Object to trace in there.  */
+  /* Use  XVECTOR (val) rather than `p' because p->size is not TRT. */
+  XSETPVECTYPE (XVECTOR (val), PVEC_BOOL_VECTOR);
+
+  p = XBOOL_VECTOR (val);
   p->size = XFASTINT (length);
 
   real_init = (NILP (init) ? 0 : -1);
@@ -2355,7 +2353,7 @@ LENGTH must be a number.  INIT matters only in whether it is t or nil.  */)
 
   /* Clear the extraneous bits in the last byte.  */
   if (XINT (length) != length_in_chars * BOOL_VECTOR_BITS_PER_CHAR)
-    XBOOL_VECTOR (val)->data[length_in_chars - 1]
+    p->data[length_in_chars - 1]
       &= (1 << (XINT (length) % BOOL_VECTOR_BITS_PER_CHAR)) - 1;
 
   return val;
@@ -2479,6 +2477,9 @@ make_uninit_string (length)
      int length;
 {
   Lisp_Object val;
+
+  if (!length)
+    return empty_unibyte_string;
   val = make_uninit_multibyte_string (length, length);
   STRING_SET_UNIBYTE (val);
   return val;
@@ -2497,6 +2498,8 @@ make_uninit_multibyte_string (nchars, nbytes)
 
   if (nchars < 0)
     abort ();
+  if (!nbytes)
+    return empty_multibyte_string;
 
   s = allocate_string ();
   allocate_string_data (s, nchars, nbytes);
@@ -2608,9 +2611,7 @@ make_float (float_value)
 
   /* eassert (!handling_signal); */
 
-#ifndef SYNC_INPUT
-  BLOCK_INPUT;
-#endif
+  MALLOC_BLOCK_INPUT;
 
   if (float_free_list)
     {
@@ -2637,9 +2638,7 @@ make_float (float_value)
       float_block_index++;
     }
 
-#ifndef SYNC_INPUT
-  UNBLOCK_INPUT;
-#endif
+  MALLOC_UNBLOCK_INPUT;
 
   XFLOAT_DATA (val) = float_value;
   eassert (!FLOAT_MARKED_P (XFLOAT (val)));
@@ -2737,9 +2736,7 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
 
   /* eassert (!handling_signal); */
 
-#ifndef SYNC_INPUT
-  BLOCK_INPUT;
-#endif
+  MALLOC_BLOCK_INPUT;
 
   if (cons_free_list)
     {
@@ -2765,9 +2762,7 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
       cons_block_index++;
     }
 
-#ifndef SYNC_INPUT
-  UNBLOCK_INPUT;
-#endif
+  MALLOC_UNBLOCK_INPUT;
 
   XSETCAR (val, car);
   XSETCDR (val, cdr);
@@ -2917,48 +2912,39 @@ int n_vectors;
    with room for LEN Lisp_Objects.  */
 
 static struct Lisp_Vector *
-allocate_vectorlike (len, type)
+allocate_vectorlike (len)
      EMACS_INT len;
-     enum mem_type type;
 {
   struct Lisp_Vector *p;
   size_t nbytes;
 
+  MALLOC_BLOCK_INPUT;
+
 #ifdef DOUG_LEA_MALLOC
   /* Prevent mmap'ing the chunk.  Lisp data may not be mmap'ed
      because mapped region contents are not preserved in
      a dumped Emacs.  */
-  BLOCK_INPUT;
   mallopt (M_MMAP_MAX, 0);
-  UNBLOCK_INPUT;
 #endif
 
   /* This gets triggered by code which I haven't bothered to fix.  --Stef  */
   /* eassert (!handling_signal); */
 
   nbytes = sizeof *p + (len - 1) * sizeof p->contents[0];
-  p = (struct Lisp_Vector *) lisp_malloc (nbytes, type);
+  p = (struct Lisp_Vector *) lisp_malloc (nbytes, MEM_TYPE_VECTORLIKE);
 
 #ifdef DOUG_LEA_MALLOC
   /* Back to a reasonable maximum of mmap'ed areas.  */
-  BLOCK_INPUT;
   mallopt (M_MMAP_MAX, MMAP_MAX_AREAS);
-  UNBLOCK_INPUT;
 #endif
 
   consing_since_gc += nbytes;
   vector_cells_consed += len;
 
-#ifndef SYNC_INPUT
-  BLOCK_INPUT;
-#endif
-
   p->next = all_vectors;
   all_vectors = p;
 
-#ifndef SYNC_INPUT
-  UNBLOCK_INPUT;
-#endif
+  MALLOC_UNBLOCK_INPUT;
 
   ++n_vectors;
   return p;
@@ -2971,7 +2957,7 @@ struct Lisp_Vector *
 allocate_vector (nslots)
      EMACS_INT nslots;
 {
-  struct Lisp_Vector *v = allocate_vectorlike (nslots, MEM_TYPE_VECTOR);
+  struct Lisp_Vector *v = allocate_vectorlike (nslots);
   v->size = nslots;
   return v;
 }
@@ -2979,74 +2965,78 @@ allocate_vector (nslots)
 
 /* Allocate other vector-like structures.  */
 
-struct Lisp_Hash_Table *
-allocate_hash_table ()
+static struct Lisp_Vector *
+allocate_pseudovector (memlen, lisplen, tag)
+     int memlen, lisplen;
+     EMACS_INT tag;
 {
-  EMACS_INT len = VECSIZE (struct Lisp_Hash_Table);
-  struct Lisp_Vector *v = allocate_vectorlike (len, MEM_TYPE_HASH_TABLE);
+  struct Lisp_Vector *v = allocate_vectorlike (memlen);
   EMACS_INT i;
 
-  v->size = len;
-  for (i = 0; i < len; ++i)
+  /* Only the first lisplen slots will be traced normally by the GC.  */
+  v->size = lisplen;
+  for (i = 0; i < lisplen; ++i)
     v->contents[i] = Qnil;
 
-  return (struct Lisp_Hash_Table *) v;
+  XSETPVECTYPE (v, tag);       /* Add the appropriate tag.  */
+  return v;
+}
+#define ALLOCATE_PSEUDOVECTOR(typ,field,tag)                           \
+  ((typ*)                                                              \
+   allocate_pseudovector                                               \
+       (VECSIZE (typ), PSEUDOVECSIZE (typ, field), tag))
+
+struct Lisp_Hash_Table *
+allocate_hash_table (void)
+{
+  return ALLOCATE_PSEUDOVECTOR (struct Lisp_Hash_Table, count, PVEC_HASH_TABLE);
 }
 
 
 struct window *
 allocate_window ()
 {
-  EMACS_INT len = VECSIZE (struct window);
-  struct Lisp_Vector *v = allocate_vectorlike (len, MEM_TYPE_WINDOW);
-  EMACS_INT i;
+  return ALLOCATE_PSEUDOVECTOR(struct window, current_matrix, PVEC_WINDOW);
+}
 
-  for (i = 0; i < len; ++i)
-    v->contents[i] = Qnil;
-  v->size = len;
 
-  return (struct window *) v;
-}
+struct terminal *
+allocate_terminal ()
+{
+  struct terminal *t = ALLOCATE_PSEUDOVECTOR (struct terminal,
+                                             next_terminal, PVEC_TERMINAL);
+  /* Zero out the non-GC'd fields.  FIXME: This should be made unnecessary.  */
+  bzero (&(t->next_terminal),
+        ((char*)(t+1)) - ((char*)&(t->next_terminal)));
 
+  return t;
+}
 
 struct frame *
 allocate_frame ()
 {
-  EMACS_INT len = VECSIZE (struct frame);
-  struct Lisp_Vector *v = allocate_vectorlike (len, MEM_TYPE_FRAME);
-  EMACS_INT i;
-
-  for (i = 0; i < len; ++i)
-    v->contents[i] = make_number (0);
-  v->size = len;
-  return (struct frame *) v;
+  struct frame *f = ALLOCATE_PSEUDOVECTOR (struct frame,
+                                          face_cache, PVEC_FRAME);
+  /* Zero out the non-GC'd fields.  FIXME: This should be made unnecessary.  */
+  bzero (&(f->face_cache),
+        ((char*)(f+1)) - ((char*)&(f->face_cache)));
+  return f;
 }
 
 
 struct Lisp_Process *
 allocate_process ()
 {
-  /* Memory-footprint of the object in nb of Lisp_Object fields.  */
-  EMACS_INT memlen = VECSIZE (struct Lisp_Process);
-  /* Size if we only count the actual Lisp_Object fields (which need to be
-     traced by the GC).  */
-  EMACS_INT lisplen = PSEUDOVECSIZE (struct Lisp_Process, pid);
-  struct Lisp_Vector *v = allocate_vectorlike (memlen, MEM_TYPE_PROCESS);
-  EMACS_INT i;
-
-  for (i = 0; i < lisplen; ++i)
-    v->contents[i] = Qnil;
-  v->size = lisplen;
-
-  return (struct Lisp_Process *) v;
+  return ALLOCATE_PSEUDOVECTOR (struct Lisp_Process, pid, PVEC_PROCESS);
 }
 
 
+/* Only used for PVEC_WINDOW_CONFIGURATION. */
 struct Lisp_Vector *
 allocate_other_vector (len)
      EMACS_INT len;
 {
-  struct Lisp_Vector *v = allocate_vectorlike (len, MEM_TYPE_VECTOR);
+  struct Lisp_Vector *v = allocate_vectorlike (len);
   EMACS_INT i;
 
   for (i = 0; i < len; ++i)
@@ -3098,6 +3088,7 @@ The property's value should be an integer between 0 and 10.  */)
   /* Add 2 to the size for the defalt and parent slots.  */
   vector = Fmake_vector (make_number (CHAR_TABLE_STANDARD_SLOTS + XINT (n)),
                         init);
+  XSETPVECTYPE (XVECTOR (vector), PVEC_CHAR_TABLE);
   XCHAR_TABLE (vector)->top = Qt;
   XCHAR_TABLE (vector)->parent = Qnil;
   XCHAR_TABLE (vector)->purpose = purpose;
@@ -3116,6 +3107,7 @@ make_sub_char_table (init)
 {
   Lisp_Object vector
     = Fmake_vector (make_number (SUB_CHAR_TABLE_STANDARD_SLOTS), init);
+  XSETPVECTYPE (XVECTOR (vector), PVEC_CHAR_TABLE);
   XCHAR_TABLE (vector)->top = Qnil;
   XCHAR_TABLE (vector)->defalt = Qnil;
   XSETCHAR_TABLE (vector, XCHAR_TABLE (vector));
@@ -3180,6 +3172,7 @@ usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INT
        args[index] = Fpurecopy (args[index]);
       p->contents[index] = args[index];
     }
+  XSETPVECTYPE (p, PVEC_COMPILED);
   XSETCOMPILED (val, p);
   return val;
 }
@@ -3244,9 +3237,7 @@ Its value and function definition are void, and its property list is nil.  */)
 
   /* eassert (!handling_signal); */
 
-#ifndef SYNC_INPUT
-  BLOCK_INPUT;
-#endif
+  MALLOC_BLOCK_INPUT;
 
   if (symbol_free_list)
     {
@@ -3269,9 +3260,7 @@ Its value and function definition are void, and its property list is nil.  */)
       symbol_block_index++;
     }
 
-#ifndef SYNC_INPUT
-  UNBLOCK_INPUT;
-#endif
+  MALLOC_UNBLOCK_INPUT;
 
   p = XSYMBOL (val);
   p->xname = name;
@@ -3334,9 +3323,7 @@ allocate_misc ()
 
   /* eassert (!handling_signal); */
 
-#ifndef SYNC_INPUT
-  BLOCK_INPUT;
-#endif
+  MALLOC_BLOCK_INPUT;
 
   if (marker_free_list)
     {
@@ -3360,9 +3347,7 @@ allocate_misc ()
       marker_block_index++;
     }
 
-#ifndef SYNC_INPUT
-  UNBLOCK_INPUT;
-#endif
+  MALLOC_UNBLOCK_INPUT;
 
   --total_free_markers;
   consing_since_gc += sizeof (union Lisp_Misc);
@@ -4108,9 +4093,7 @@ live_vector_p (m, p)
      struct mem_node *m;
      void *p;
 {
-  return (p == m->start
-         && m->type >= MEM_TYPE_VECTOR
-         && m->type <= MEM_TYPE_WINDOW);
+  return (p == m->start && m->type == MEM_TYPE_VECTORLIKE);
 }
 
 
@@ -4256,9 +4239,14 @@ mark_maybe_pointer (p)
 {
   struct mem_node *m;
 
-  /* Quickly rule out some values which can't point to Lisp data.  We
-     assume that Lisp data is aligned on even addresses.  */
-  if ((EMACS_INT) p & 1)
+  /* Quickly rule out some values which can't point to Lisp data.  */
+  if ((EMACS_INT) p %
+#ifdef USE_LSB_TAG
+      8 /* USE_LSB_TAG needs Lisp data to be aligned on multiples of 8.  */
+#else
+      2 /* We assume that Lisp data is aligned on even addresses.  */
+#endif
+      )
     return;
 
   m = mem_find (p);
@@ -4303,11 +4291,7 @@ mark_maybe_pointer (p)
            XSETFLOAT (obj, p);
          break;
 
-       case MEM_TYPE_VECTOR:
-       case MEM_TYPE_PROCESS:
-       case MEM_TYPE_HASH_TABLE:
-       case MEM_TYPE_FRAME:
-       case MEM_TYPE_WINDOW:
+       case MEM_TYPE_VECTORLIKE:
          if (live_vector_p (m, p))
            {
              Lisp_Object tem;
@@ -4707,11 +4691,7 @@ valid_lisp_object_p (obj)
     case MEM_TYPE_FLOAT:
       return live_float_p (m, p);
 
-    case MEM_TYPE_VECTOR:
-    case MEM_TYPE_PROCESS:
-    case MEM_TYPE_HASH_TABLE:
-    case MEM_TYPE_FRAME:
-    case MEM_TYPE_WINDOW:
+    case MEM_TYPE_VECTORLIKE:
       return live_vector_p (m, p);
 
     default:
@@ -5160,7 +5140,9 @@ returns nil, because real GC can't be done.  */)
       mark_object (bind->symbol);
       mark_object (bind->old_value);
     }
+  mark_terminals ();
   mark_kboards ();
+  mark_ttys ();
 
 #ifdef USE_GTK
   {
@@ -5447,6 +5429,29 @@ int last_marked_index;
    Normally this is zero and the check never goes off.  */
 int mark_object_loop_halt;
 
+/* Return non-zero if the object was not yet marked.  */
+static int
+mark_vectorlike (ptr)
+     struct Lisp_Vector *ptr;
+{
+  register EMACS_INT size = ptr->size;
+  register int i;
+
+  if (VECTOR_MARKED_P (ptr))
+    return 0;                  /* Already marked */
+  VECTOR_MARK (ptr);           /* Else mark it */
+  if (size & PSEUDOVECTOR_FLAG)
+    size &= PSEUDOVECTOR_SIZE_MASK;
+  
+  /* Note that this size is not the memory-footprint size, but only
+     the number of Lisp_Object fields that we should trace.
+     The distinction is used e.g. by Lisp_Process which places extra
+     non-Lisp_Object fields at the end of the structure.  */
+  for (i = 0; i < size; i++) /* and then mark its elements */
+    mark_object (ptr->contents[i]);
+  return 1;
+}
+
 void
 mark_object (arg)
      Lisp_Object arg;
@@ -5576,129 +5581,46 @@ mark_object (arg)
       else if (GC_FRAMEP (obj))
        {
          register struct frame *ptr = XFRAME (obj);
-
-         if (VECTOR_MARKED_P (ptr)) break;   /* Already marked */
-         VECTOR_MARK (ptr);                  /* Else mark it */
-
-         CHECK_LIVE (live_vector_p);
-         mark_object (ptr->name);
-         mark_object (ptr->icon_name);
-         mark_object (ptr->title);
-         mark_object (ptr->focus_frame);
-         mark_object (ptr->selected_window);
-         mark_object (ptr->minibuffer_window);
-         mark_object (ptr->param_alist);
-         mark_object (ptr->scroll_bars);
-         mark_object (ptr->condemned_scroll_bars);
-         mark_object (ptr->menu_bar_items);
-         mark_object (ptr->face_alist);
-         mark_object (ptr->menu_bar_vector);
-         mark_object (ptr->buffer_predicate);
-         mark_object (ptr->buffer_list);
-         mark_object (ptr->menu_bar_window);
-         mark_object (ptr->tool_bar_window);
-         mark_face_cache (ptr->face_cache);
+         if (mark_vectorlike (XVECTOR (obj)))
+           {
+             mark_face_cache (ptr->face_cache);
 #ifdef HAVE_WINDOW_SYSTEM
-         mark_image_cache (ptr);
-         mark_object (ptr->tool_bar_items);
-         mark_object (ptr->desired_tool_bar_string);
-         mark_object (ptr->current_tool_bar_string);
+             mark_image_cache (ptr);
 #endif /* HAVE_WINDOW_SYSTEM */
-       }
-      else if (GC_BOOL_VECTOR_P (obj))
-       {
-         register struct Lisp_Vector *ptr = XVECTOR (obj);
-
-         if (VECTOR_MARKED_P (ptr))
-           break;   /* Already marked */
-         CHECK_LIVE (live_vector_p);
-         VECTOR_MARK (ptr);    /* Else mark it */
+           }
        }
       else if (GC_WINDOWP (obj))
        {
          register struct Lisp_Vector *ptr = XVECTOR (obj);
          struct window *w = XWINDOW (obj);
-         register int i;
-
-         /* Stop if already marked.  */
-         if (VECTOR_MARKED_P (ptr))
-           break;
-
-         /* Mark it.  */
-         CHECK_LIVE (live_vector_p);
-         VECTOR_MARK (ptr);
-
-         /* There is no Lisp data above The member CURRENT_MATRIX in
-            struct WINDOW.  Stop marking when that slot is reached.  */
-         for (i = 0;
-              (char *) &ptr->contents[i] < (char *) &w->current_matrix;
-              i++)
-           mark_object (ptr->contents[i]);
-
-         /* Mark glyphs for leaf windows.  Marking window matrices is
-            sufficient because frame matrices use the same glyph
-            memory.  */
-         if (NILP (w->hchild)
-             && NILP (w->vchild)
-             && w->current_matrix)
+         if (mark_vectorlike (ptr))
            {
-             mark_glyph_matrix (w->current_matrix);
-             mark_glyph_matrix (w->desired_matrix);
+             /* Mark glyphs for leaf windows.  Marking window matrices is
+                sufficient because frame matrices use the same glyph
+                memory.  */
+             if (NILP (w->hchild)
+                 && NILP (w->vchild)
+                 && w->current_matrix)
+               {
+                 mark_glyph_matrix (w->current_matrix);
+                 mark_glyph_matrix (w->desired_matrix);
+               }
            }
        }
       else if (GC_HASH_TABLE_P (obj))
        {
          struct Lisp_Hash_Table *h = XHASH_TABLE (obj);
-
-         /* Stop if already marked.  */
-         if (VECTOR_MARKED_P (h))
-           break;
-
-         /* Mark it.  */
-         CHECK_LIVE (live_vector_p);
-         VECTOR_MARK (h);
-
-         /* Mark contents.  */
-         /* Do not mark next_free or next_weak.
-            Being in the next_weak chain
-            should not keep the hash table alive.
-            No need to mark `count' since it is an integer.  */
-         mark_object (h->test);
-         mark_object (h->weak);
-         mark_object (h->rehash_size);
-         mark_object (h->rehash_threshold);
-         mark_object (h->hash);
-         mark_object (h->next);
-         mark_object (h->index);
-         mark_object (h->user_hash_function);
-         mark_object (h->user_cmp_function);
-
-         /* If hash table is not weak, mark all keys and values.
-            For weak tables, mark only the vector.  */
-         if (GC_NILP (h->weak))
-           mark_object (h->key_and_value);
-         else
-           VECTOR_MARK (XVECTOR (h->key_and_value));
+         if (mark_vectorlike ((struct Lisp_Vector *)h))
+           { /* If hash table is not weak, mark all keys and values.
+                For weak tables, mark only the vector.  */
+             if (GC_NILP (h->weak))
+               mark_object (h->key_and_value);
+             else
+               VECTOR_MARK (XVECTOR (h->key_and_value));
+           }
        }
       else
-       {
-         register struct Lisp_Vector *ptr = XVECTOR (obj);
-         register EMACS_INT size = ptr->size;
-         register int i;
-
-         if (VECTOR_MARKED_P (ptr)) break; /* Already marked */
-         CHECK_LIVE (live_vector_p);
-         VECTOR_MARK (ptr);    /* Else mark it */
-         if (size & PSEUDOVECTOR_FLAG)
-           size &= PSEUDOVECTOR_SIZE_MASK;
-
-         /* Note that this size is not the memory-footprint size, but only
-            the number of Lisp_Object fields that we should trace.
-            The distinction is used e.g. by Lisp_Process which places extra
-            non-Lisp_Object fields at the end of the structure.  */
-         for (i = 0; i < size; i++) /* and then mark its elements */
-           mark_object (ptr->contents[i]);
-       }
+       mark_vectorlike (XVECTOR (obj));
       break;
 
     case Lisp_Symbol:
@@ -5889,6 +5811,21 @@ mark_buffer (buf)
     }
 }
 
+/* Mark the Lisp pointers in the terminal objects.
+   Called by the Fgarbage_collector.  */
+
+static void
+mark_terminals (void)
+{
+  struct terminal *t;
+  for (t = terminal_list; t; t = t->next_terminal)
+    {
+      eassert (t->name != NULL);
+      mark_vectorlike ((struct Lisp_Vector *)t);
+    }
+}
+
+
 
 /* Value is non-zero if OBJ will survive the current GC because it's
    either marked or does not need to be marked to survive.  */
@@ -5964,23 +5901,51 @@ gc_sweep ()
 
     for (cblk = cons_block; cblk; cblk = *cprev)
       {
-       register int i;
+       register int i = 0;
        int this_free = 0;
-       for (i = 0; i < lim; i++)
-         if (!CONS_MARKED_P (&cblk->conses[i]))
-           {
-             this_free++;
-             cblk->conses[i].u.chain = cons_free_list;
-             cons_free_list = &cblk->conses[i];
+       int ilim = (lim + BITS_PER_INT - 1) / BITS_PER_INT;
+
+       /* Scan the mark bits an int at a time.  */
+       for (i = 0; i <= ilim; i++)
+         {
+           if (cblk->gcmarkbits[i] == -1)
+             {
+               /* Fast path - all cons cells for this int are marked.  */
+               cblk->gcmarkbits[i] = 0;
+               num_used += BITS_PER_INT;
+             }
+           else
+             {
+               /* Some cons cells for this int are not marked.
+                  Find which ones, and free them.  */
+               int start, pos, stop;
+
+               start = i * BITS_PER_INT;
+               stop = lim - start;
+               if (stop > BITS_PER_INT)
+                 stop = BITS_PER_INT;
+               stop += start;
+
+               for (pos = start; pos < stop; pos++)
+                 {
+                   if (!CONS_MARKED_P (&cblk->conses[pos]))
+                     {
+                       this_free++;
+                       cblk->conses[pos].u.chain = cons_free_list;
+                       cons_free_list = &cblk->conses[pos];
 #if GC_MARK_STACK
-             cons_free_list->car = Vdead;
+                       cons_free_list->car = Vdead;
 #endif
-           }
-         else
-           {
-             num_used++;
-             CONS_UNMARK (&cblk->conses[i]);
-           }
+                     }
+                   else
+                     {
+                       num_used++;
+                       CONS_UNMARK (&cblk->conses[pos]);
+                     }
+                 }
+             }
+         }
+
        lim = CONS_BLOCK_SIZE;
        /* If this block contains only free conses and we have already
           seen more than two blocks worth of free conses then deallocate
diff --git a/src/alloca.c b/src/alloca.c
deleted file mode 100644 (file)
index e8c8319..0000000
+++ /dev/null
@@ -1,517 +0,0 @@
-/* alloca.c -- allocate automatically reclaimed memory
-   (Mostly) portable public-domain implementation -- D A Gwyn
-
-   NOTE: The canonical source of this file is maintained with gnulib.
-   Bugs can be reported to bug-gnulib@gnu.org.
-
-   This implementation of the PWB library alloca function,
-   which is used to allocate space off the run-time stack so
-   that it is automatically reclaimed upon procedure exit,
-   was inspired by discussions with J. Q. Johnson of Cornell.
-   J.Otto Tennant <jot@cray.com> contributed the Cray support.
-
-   There are some preprocessor constants that can
-   be defined when compiling for your specific system, for
-   improved efficiency; however, the defaults should be okay.
-
-   The general concept of this implementation is to keep
-   track of all alloca-allocated blocks, and reclaim any
-   that are found to be deeper in the stack than the current
-   invocation.  This heuristic does not reclaim storage as
-   soon as it becomes invalid, but it will do so eventually.
-
-   As a special case, alloca(0) reclaims storage without
-   allocating any.  It is a good idea to use alloca(0) in
-   your main control loop, etc. to force garbage collection.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#ifdef DO_BLOCK_INPUT
-# include "blockinput.h"
-#endif
-
-/* If compiling with GCC 2, this file's not needed.  */
-#if !defined (__GNUC__) || __GNUC__ < 2
-
-/* If someone has defined alloca as a macro,
-   there must be some other way alloca is supposed to work.  */
-# ifndef alloca
-
-#  ifdef emacs
-#   ifdef static
-/* actually, only want this if static is defined as ""
-   -- this is for usg, in which emacs must undefine static
-   in order to make unexec workable
-   */
-#    ifndef STACK_DIRECTION
-you
-lose
--- must know STACK_DIRECTION at compile-time
-/* Using #error here is not wise since this file should work for
-   old and obscure compilers.  
-
-   As far as I know, using it is OK if it's indented -- at least for
-   pcc-based processors.  -- fx */
-#    endif /* STACK_DIRECTION undefined */
-#   endif /* static */
-#  endif /* emacs */
-
-/* If your stack is a linked list of frames, you have to
-   provide an "address metric" ADDRESS_FUNCTION macro.  */
-
-#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
-long i00afunc ();
-#   define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
-#  else
-#   define ADDRESS_FUNCTION(arg) &(arg)
-#  endif
-
-#  ifndef POINTER_TYPE
-#   ifdef __STDC__
-#    define POINTER_TYPE void
-#   else
-#    define POINTER_TYPE char
-#   endif
-#  endif
-typedef POINTER_TYPE *pointer;
-
-#  ifndef NULL
-#   define NULL 0
-#  endif
-
-/* The Emacs executable needs alloca to call xmalloc, because ordinary
-   malloc isn't protected from input signals.  xmalloc also checks for
-   out-of-memory errors, so we should use it generally.
-
-   Callers below should use malloc.  */
-
-#  undef malloc
-#  define malloc xmalloc
-#  undef free
-#  define free xfree
-
-void *xmalloc _P ((size_t));
-void xfree _P ((void *));
-
-/* Define STACK_DIRECTION if you know the direction of stack
-   growth for your system; otherwise it will be automatically
-   deduced at run-time.
-
-   STACK_DIRECTION > 0 => grows toward higher addresses
-   STACK_DIRECTION < 0 => grows toward lower addresses
-   STACK_DIRECTION = 0 => direction of growth unknown  */
-
-#  ifndef STACK_DIRECTION
-#   define STACK_DIRECTION     0       /* Direction unknown.  */
-#  endif
-
-#  if STACK_DIRECTION != 0
-
-#   define STACK_DIR   STACK_DIRECTION /* Known at compile-time.  */
-
-#  else /* STACK_DIRECTION == 0; need run-time code.  */
-
-static int stack_dir;          /* 1 or -1 once known.  */
-#   define STACK_DIR   stack_dir
-
-static void
-find_stack_direction ()
-{
-  static char *addr = NULL;    /* Address of first `dummy', once known.  */
-  auto char dummy;             /* To get stack address.  */
-
-  if (addr == NULL)
-    {                          /* Initial entry.  */
-      addr = ADDRESS_FUNCTION (dummy);
-
-      find_stack_direction (); /* Recurse once.  */
-    }
-  else
-    {
-      /* Second entry.  */
-      if (ADDRESS_FUNCTION (dummy) > addr)
-       stack_dir = 1;          /* Stack grew upward.  */
-      else
-       stack_dir = -1;         /* Stack grew downward.  */
-    }
-}
-
-#  endif /* STACK_DIRECTION == 0 */
-
-/* An "alloca header" is used to:
-   (a) chain together all alloca'ed blocks;
-   (b) keep track of stack depth.
-
-   It is very important that sizeof(header) agree with malloc
-   alignment chunk size.  The following default should work okay.  */
-
-#  ifndef      ALIGN_SIZE
-#   define ALIGN_SIZE  sizeof(double)
-#  endif
-
-typedef union hdr
-{
-  char align[ALIGN_SIZE];      /* To force sizeof(header).  */
-  struct
-    {
-      union hdr *next;         /* For chaining headers.  */
-      char *deep;              /* For stack depth measure.  */
-    } h;
-} header;
-
-static header *last_alloca_header = NULL;      /* -> last alloca header.  */
-
-/* Return a pointer to at least SIZE bytes of storage,
-   which will be automatically reclaimed upon exit from
-   the procedure that called alloca.  Originally, this space
-   was supposed to be taken from the current stack frame of the
-   caller, but that method cannot be made to work for some
-   implementations of C, for example under Gould's UTX/32.  */
-
-pointer
-alloca (size)
-     size_t size;
-{
-  auto char probe;             /* Probes stack depth: */
-  register char *depth = ADDRESS_FUNCTION (probe);
-
-#  if STACK_DIRECTION == 0
-  if (STACK_DIR == 0)          /* Unknown growth direction.  */
-    find_stack_direction ();
-#  endif
-
-  /* Reclaim garbage, defined as all alloca'd storage that
-     was allocated from deeper in the stack than currently.  */
-
-  {
-    register header *hp;       /* Traverses linked list.  */
-
-#  ifdef DO_BLOCK_INPUT
-    BLOCK_INPUT;
-#  endif
-
-    for (hp = last_alloca_header; hp != NULL;)
-      if ((STACK_DIR > 0 && hp->h.deep > depth)
-         || (STACK_DIR < 0 && hp->h.deep < depth))
-       {
-         register header *np = hp->h.next;
-
-         free ((pointer) hp);  /* Collect garbage.  */
-
-         hp = np;              /* -> next header.  */
-       }
-      else
-       break;                  /* Rest are not deeper.  */
-
-    last_alloca_header = hp;   /* -> last valid storage.  */
-
-#  ifdef DO_BLOCK_INPUT
-    UNBLOCK_INPUT;
-#  endif
-  }
-
-  if (size == 0)
-    return NULL;               /* No allocation required.  */
-
-  /* Allocate combined header + user data storage.  */
-
-  {
-    /* Address of header.  */
-    register pointer new = malloc (sizeof (header) + size);
-
-    if (new == 0)
-      abort();
-
-    ((header *) new)->h.next = last_alloca_header;
-    ((header *) new)->h.deep = depth;
-
-    last_alloca_header = (header *) new;
-
-    /* User storage begins just after header.  */
-
-    return (pointer) ((char *) new + sizeof (header));
-  }
-}
-
-#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
-
-#   ifdef DEBUG_I00AFUNC
-#    include <stdio.h>
-#   endif
-
-#   ifndef CRAY_STACK
-#    define CRAY_STACK
-#    ifndef CRAY2
-/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
-struct stack_control_header
-  {
-    long shgrow:32;            /* Number of times stack has grown.  */
-    long shaseg:32;            /* Size of increments to stack.  */
-    long shhwm:32;             /* High water mark of stack.  */
-    long shsize:32;            /* Current size of stack (all segments).  */
-  };
-
-/* The stack segment linkage control information occurs at
-   the high-address end of a stack segment.  (The stack
-   grows from low addresses to high addresses.)  The initial
-   part of the stack segment linkage control information is
-   0200 (octal) words.  This provides for register storage
-   for the routine which overflows the stack.  */
-
-struct stack_segment_linkage
-  {
-    long ss[0200];             /* 0200 overflow words.  */
-    long sssize:32;            /* Number of words in this segment.  */
-    long ssbase:32;            /* Offset to stack base.  */
-    long:32;
-    long sspseg:32;            /* Offset to linkage control of previous
-                                  segment of stack.  */
-    long:32;
-    long sstcpt:32;            /* Pointer to task common address block.  */
-    long sscsnm;               /* Private control structure number for
-                                  microtasking.  */
-    long ssusr1;               /* Reserved for user.  */
-    long ssusr2;               /* Reserved for user.  */
-    long sstpid;               /* Process ID for pid based multi-tasking.  */
-    long ssgvup;               /* Pointer to multitasking thread giveup.  */
-    long sscray[7];            /* Reserved for Cray Research.  */
-    long ssa0;
-    long ssa1;
-    long ssa2;
-    long ssa3;
-    long ssa4;
-    long ssa5;
-    long ssa6;
-    long ssa7;
-    long sss0;
-    long sss1;
-    long sss2;
-    long sss3;
-    long sss4;
-    long sss5;
-    long sss6;
-    long sss7;
-  };
-
-#    else /* CRAY2 */
-/* The following structure defines the vector of words
-   returned by the STKSTAT library routine.  */
-struct stk_stat
-  {
-    long now;                  /* Current total stack size.  */
-    long maxc;                 /* Amount of contiguous space which would
-                                  be required to satisfy the maximum
-                                  stack demand to date.  */
-    long high_water;           /* Stack high-water mark.  */
-    long overflows;            /* Number of stack overflow ($STKOFEN) calls.  */
-    long hits;                 /* Number of internal buffer hits.  */
-    long extends;              /* Number of block extensions.  */
-    long stko_mallocs;         /* Block allocations by $STKOFEN.  */
-    long underflows;           /* Number of stack underflow calls ($STKRETN).  */
-    long stko_free;            /* Number of deallocations by $STKRETN.  */
-    long stkm_free;            /* Number of deallocations by $STKMRET.  */
-    long segments;             /* Current number of stack segments.  */
-    long maxs;                 /* Maximum number of stack segments so far.  */
-    long pad_size;             /* Stack pad size.  */
-    long current_address;      /* Current stack segment address.  */
-    long current_size;         /* Current stack segment size.  This
-                                  number is actually corrupted by STKSTAT to
-                                  include the fifteen word trailer area.  */
-    long initial_address;      /* Address of initial segment.  */
-    long initial_size;         /* Size of initial segment.  */
-  };
-
-/* The following structure describes the data structure which trails
-   any stack segment.  I think that the description in 'asdef' is
-   out of date.  I only describe the parts that I am sure about.  */
-
-struct stk_trailer
-  {
-    long this_address;         /* Address of this block.  */
-    long this_size;            /* Size of this block (does not include
-                                  this trailer).  */
-    long unknown2;
-    long unknown3;
-    long link;                 /* Address of trailer block of previous
-                                  segment.  */
-    long unknown5;
-    long unknown6;
-    long unknown7;
-    long unknown8;
-    long unknown9;
-    long unknown10;
-    long unknown11;
-    long unknown12;
-    long unknown13;
-    long unknown14;
-  };
-
-#    endif /* CRAY2 */
-#   endif /* not CRAY_STACK */
-
-#   ifdef CRAY2
-/* Determine a "stack measure" for an arbitrary ADDRESS.
-   I doubt that "lint" will like this much.  */
-
-static long
-i00afunc (long *address)
-{
-  struct stk_stat status;
-  struct stk_trailer *trailer;
-  long *block, size;
-  long result = 0;
-
-  /* We want to iterate through all of the segments.  The first
-     step is to get the stack status structure.  We could do this
-     more quickly and more directly, perhaps, by referencing the
-     $LM00 common block, but I know that this works.  */
-
-  STKSTAT (&status);
-
-  /* Set up the iteration.  */
-
-  trailer = (struct stk_trailer *) (status.current_address
-                                   + status.current_size
-                                   - 15);
-
-  /* There must be at least one stack segment.  Therefore it is
-     a fatal error if "trailer" is null.  */
-
-  if (trailer == 0)
-    abort ();
-
-  /* Discard segments that do not contain our argument address.  */
-
-  while (trailer != 0)
-    {
-      block = (long *) trailer->this_address;
-      size = trailer->this_size;
-      if (block == 0 || size == 0)
-       abort ();
-      trailer = (struct stk_trailer *) trailer->link;
-      if ((block <= address) && (address < (block + size)))
-       break;
-    }
-
-  /* Set the result to the offset in this segment and add the sizes
-     of all predecessor segments.  */
-
-  result = address - block;
-
-  if (trailer == 0)
-    {
-      return result;
-    }
-
-  do
-    {
-      if (trailer->this_size <= 0)
-       abort ();
-      result += trailer->this_size;
-      trailer = (struct stk_trailer *) trailer->link;
-    }
-  while (trailer != 0);
-
-  /* We are done.  Note that if you present a bogus address (one
-     not in any segment), you will get a different number back, formed
-     from subtracting the address of the first block.  This is probably
-     not what you want.  */
-
-  return (result);
-}
-
-#   else /* not CRAY2 */
-/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
-   Determine the number of the cell within the stack,
-   given the address of the cell.  The purpose of this
-   routine is to linearize, in some sense, stack addresses
-   for alloca.  */
-
-static long
-i00afunc (long address)
-{
-  long stkl = 0;
-
-  long size, pseg, this_segment, stack;
-  long result = 0;
-
-  struct stack_segment_linkage *ssptr;
-
-  /* Register B67 contains the address of the end of the
-     current stack segment.  If you (as a subprogram) store
-     your registers on the stack and find that you are past
-     the contents of B67, you have overflowed the segment.
-
-     B67 also points to the stack segment linkage control
-     area, which is what we are really interested in.  */
-
-  stkl = CRAY_STACKSEG_END ();
-  ssptr = (struct stack_segment_linkage *) stkl;
-
-  /* If one subtracts 'size' from the end of the segment,
-     one has the address of the first word of the segment.
-
-     If this is not the first segment, 'pseg' will be
-     nonzero.  */
-
-  pseg = ssptr->sspseg;
-  size = ssptr->sssize;
-
-  this_segment = stkl - size;
-
-  /* It is possible that calling this routine itself caused
-     a stack overflow.  Discard stack segments which do not
-     contain the target address.  */
-
-  while (!(this_segment <= address && address <= stkl))
-    {
-#    ifdef DEBUG_I00AFUNC
-      fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
-#    endif
-      if (pseg == 0)
-       break;
-      stkl = stkl - pseg;
-      ssptr = (struct stack_segment_linkage *) stkl;
-      size = ssptr->sssize;
-      pseg = ssptr->sspseg;
-      this_segment = stkl - size;
-    }
-
-  result = address - this_segment;
-
-  /* If you subtract pseg from the current end of the stack,
-     you get the address of the previous stack segment's end.
-     This seems a little convoluted to me, but I'll bet you save
-     a cycle somewhere.  */
-
-  while (pseg != 0)
-    {
-#    ifdef DEBUG_I00AFUNC
-      fprintf (stderr, "%011o %011o\n", pseg, size);
-#    endif
-      stkl = stkl - pseg;
-      ssptr = (struct stack_segment_linkage *) stkl;
-      size = ssptr->sssize;
-      pseg = ssptr->sspseg;
-      result += size;
-    }
-  return (result);
-}
-
-#   endif /* not CRAY2 */
-#  endif /* CRAY */
-
-# endif /* no alloca */
-#endif /* not GCC version 2 */
-
-/* arch-tag: 5c9901c8-3cd4-453e-bd66-d9035a175ee3
-   (do not change this comment) */
index 39a0ce1dab0c7962f4abb7130a46976f4756b952..740f9fe53d64dcfda065fe2c4129bbd44482a99e 100644 (file)
@@ -215,25 +215,38 @@ frame parameter come first, followed by the rest of the buffers.  */)
      (frame)
      Lisp_Object frame;
 {
-  Lisp_Object framelist, general;
+  Lisp_Object general;
   general = Fmapcar (Qcdr, Vbuffer_alist);
 
   if (FRAMEP (frame))
     {
-      Lisp_Object tail;
+      Lisp_Object framelist, prevlist, tail;
+      Lisp_Object args[3];
 
       CHECK_FRAME (frame);
 
       framelist = Fcopy_sequence (XFRAME (frame)->buffer_list);
+      prevlist = Fnreverse (Fcopy_sequence (XFRAME (frame)->buried_buffer_list));
 
-      /* Remove from GENERAL any buffer that duplicates one in FRAMELIST.  */
+      /* Remove from GENERAL any buffer that duplicates one in
+         FRAMELIST or PREVLIST.  */
       tail = framelist;
-      while (! NILP (tail))
+      while (CONSP (tail))
        {
          general = Fdelq (XCAR (tail), general);
          tail = XCDR (tail);
        }
-      return nconc2 (framelist, general);
+      tail = prevlist;
+      while (CONSP (tail))
+       {
+         general = Fdelq (XCAR (tail), general);
+         tail = XCDR (tail);
+       }
+
+      args[0] = framelist;
+      args[1] = general;
+      args[2] = prevlist;
+      return Fnconc (3, args);
     }
 
   return general;
@@ -416,6 +429,7 @@ The value is never nil.  */)
   b->name = name;
 
   /* Put this in the alist of all live buffers.  */
+  XSETPVECTYPE (b, PVEC_BUFFER);
   XSETBUFFER (buf, b);
   Vbuffer_alist = nconc2 (Vbuffer_alist, Fcons (Fcons (name, buf), Qnil));
 
@@ -554,6 +568,7 @@ CLONE nil means the indirect buffer's state is reset to default values.  */)
 
   b = (struct buffer *) allocate_buffer ();
   b->size = sizeof (struct buffer) / sizeof (EMACS_INT);
+  XSETPVECTYPE (b, PVEC_BUFFER);
 
   if (XBUFFER (base_buffer)->base_buffer)
     b->base_buffer = XBUFFER (base_buffer)->base_buffer;
@@ -1583,6 +1598,23 @@ record_buffer (buf)
   XSETCDR (link, Vbuffer_alist);
   Vbuffer_alist = link;
 
+  /* Effectively do a delq on buried_buffer_list.  */
+  
+  prev = Qnil;
+  for (link = XFRAME (frame)->buried_buffer_list; CONSP (link);
+       link = XCDR (link))
+    {
+      if (EQ (XCAR (link), buf))
+        {
+          if (NILP (prev))
+            XFRAME (frame)->buried_buffer_list = XCDR (link);
+          else
+            XSETCDR (prev, XCDR (XCDR (prev)));
+          break;
+        }
+      prev = link;
+    }
+
   /* Now move this buffer to the front of frame_buffer_list also.  */
 
   prev = Qnil;
@@ -2065,10 +2097,10 @@ selected window if it is displayed there.  */)
       XSETCDR (link, Qnil);
       Vbuffer_alist = nconc2 (Vbuffer_alist, link);
 
-      /* Removing BUFFER from frame-specific lists
-        has the effect of putting BUFFER at the end
-        of the combined list in each frame.  */
-      frames_discard_buffer (buffer);
+      XFRAME (selected_frame)->buffer_list
+        = Fdelq (buffer, XFRAME (selected_frame)->buffer_list);
+      XFRAME (selected_frame)->buried_buffer_list
+        = Fcons (buffer, Fdelq (buffer, XFRAME (selected_frame)->buried_buffer_list));
     }
 
   return Qnil;
@@ -4186,15 +4218,8 @@ add_overlay_mod_hooklist (functionlist, overlay)
   int oldsize = XVECTOR (last_overlay_modification_hooks)->size;
 
   if (last_overlay_modification_hooks_used == oldsize)
-    {
-      Lisp_Object old;
-      old = last_overlay_modification_hooks;
-      last_overlay_modification_hooks
-       = Fmake_vector (make_number (oldsize * 2), Qnil);
-      bcopy (XVECTOR (old)->contents,
-            XVECTOR (last_overlay_modification_hooks)->contents,
-            sizeof (Lisp_Object) * oldsize);
-    }
+    last_overlay_modification_hooks = larger_vector 
+      (last_overlay_modification_hooks, oldsize * 2, Qnil);
   AREF (last_overlay_modification_hooks, last_overlay_modification_hooks_used++) = functionlist;
   AREF (last_overlay_modification_hooks, last_overlay_modification_hooks_used++) = overlay;
 }
@@ -5006,7 +5031,9 @@ init_buffer_once ()
   buffer_local_symbols.text = &buffer_local_symbols.own_text;
   BUF_INTERVALS (&buffer_defaults) = 0;
   BUF_INTERVALS (&buffer_local_symbols) = 0;
+  XSETPVECTYPE (&buffer_defaults, PVEC_BUFFER);
   XSETBUFFER (Vbuffer_defaults, &buffer_defaults);
+  XSETPVECTYPE (&buffer_local_symbols, PVEC_BUFFER);
   XSETBUFFER (Vbuffer_local_symbols, &buffer_local_symbols);
 
   /* Set up the default values of various buffer slots.  */
@@ -5245,6 +5272,46 @@ init_buffer ()
   free (pwd);
 }
 
+/* Similar to defvar_lisp but define a variable whose value is the Lisp
+   Object stored in the current buffer.  address is the address of the slot
+   in the buffer that is current now. */
+
+/* TYPE is nil for a general Lisp variable.
+   An integer specifies a type; then only LIsp values
+   with that type code are allowed (except that nil is allowed too).
+   LNAME is the LIsp-level variable name.
+   VNAME is the name of the buffer slot.
+   DOC is a dummy where you write the doc string as a comment.  */
+#define DEFVAR_PER_BUFFER(lname, vname, type, doc)  \
+ defvar_per_buffer (lname, vname, type, 0)
+
+static void
+defvar_per_buffer (namestring, address, type, doc)
+     char *namestring;
+     Lisp_Object *address;
+     Lisp_Object type;
+     char *doc;
+{
+  Lisp_Object sym, val;
+  int offset;
+
+  sym = intern (namestring);
+  val = allocate_misc ();
+  offset = (char *)address - (char *)current_buffer;
+
+  XMISCTYPE (val) = Lisp_Misc_Buffer_Objfwd;
+  XBUFFER_OBJFWD (val)->offset = offset;
+  SET_SYMBOL_VALUE (sym, val);
+  PER_BUFFER_SYMBOL (offset) = sym;
+  PER_BUFFER_TYPE (offset) = type;
+
+  if (PER_BUFFER_IDX (offset) == 0)
+    /* Did a DEFVAR_PER_BUFFER without initializing the corresponding
+       slot of buffer_local_flags */
+    abort ();
+}
+
+
 /* initialize the buffer routines */
 void
 syms_of_buffer ()
@@ -5505,6 +5572,8 @@ A string is printed verbatim in the mode line except for %-constructs:
   %z -- print mnemonics of keyboard, terminal, and buffer coding systems.
   %Z -- like %z, but including the end-of-line format.
   %e -- print error message about full memory.
+  %@ -- print @ or hyphen.  @ means that default-directory is on a
+        remote machine.
   %[ -- print one [ for each recursive editing level.  %] similar.
   %% -- print %.   %- -- print infinitely many dashes.
 Decimal digits after the % specify field width to which to pad.  */);
@@ -5528,6 +5597,9 @@ its hooks should not expect certain variables such as
                      Qnil,
                     doc: /* Pretty name of current buffer's major mode (a string).  */);
 
+  DEFVAR_PER_BUFFER ("local-abbrev-table", &current_buffer->abbrev_table, Qnil,
+                    doc: /* Local (mode-specific) abbrev table of current buffer.  */);
+
   DEFVAR_PER_BUFFER ("abbrev-mode", &current_buffer->abbrev_mode, Qnil,
                     doc: /* Non-nil turns on automatic expansion of abbrevs as they are inserted.  */);
 
index ed99dc4ffb1c8f318ebda5080fc45d4e196eb582..3d34e7c3217505d14523a232529416ff4cd9dfc0 100644 (file)
@@ -455,7 +455,7 @@ struct buffer
 
      Check out mark_buffer (alloc.c) to see why.  */
 
-  EMACS_INT size;
+  EMACS_UINT size;
 
   /* Next buffer, in chain of all buffers including killed buffers.
      This chain is used only for garbage collection, in order to
index 9dcc077fd658e61c288d4531d391de1f5a2a1187..a19c424c8995728610d488f11ff60f9340ed9264 100644 (file)
@@ -263,7 +263,6 @@ invoke it.  If KEYS is omitted or nil, the return value of
      Lisp_Object function, record_flag, keys;
 {
   Lisp_Object *args, *visargs;
-  Lisp_Object fun;
   Lisp_Object specs;
   Lisp_Object filter_specs;
   Lisp_Object teml;
@@ -317,8 +316,6 @@ invoke it.  If KEYS is omitted or nil, the return value of
   else
     enable = Qnil;
 
-  fun = indirect_function (function);
-
   specs = Qnil;
   string = 0;
   /* The idea of FILTER_SPECS is to provide away to
@@ -329,37 +326,19 @@ invoke it.  If KEYS is omitted or nil, the return value of
   /* If k or K discard an up-event, save it here so it can be retrieved with U */
   up_event = Qnil;
 
-  /* Decode the kind of function.  Either handle it and return,
-     or go to `lose' if not interactive, or set either STRING or SPECS.  */
-
-  if (SUBRP (fun))
-    {
-      string = (unsigned char *) XSUBR (fun)->prompt;
-      if (!string)
-       {
-       lose:
-         wrong_type_argument (Qcommandp, function);
-       }
-    }
-  else if (COMPILEDP (fun))
-    {
-      if ((XVECTOR (fun)->size & PSEUDOVECTOR_SIZE_MASK) <= COMPILED_INTERACTIVE)
-       goto lose;
-      specs = XVECTOR (fun)->contents[COMPILED_INTERACTIVE];
-    }
-  else
-    {
-      Lisp_Object form;
-      GCPRO2 (function, prefix_arg);
-      form = Finteractive_form (function);
-      UNGCPRO;
-      if (CONSP (form))
-       specs = filter_specs = Fcar (XCDR (form));
-      else
-       goto lose;
-    }
+  /* Set SPECS to the interactive form, or barf if not interactive.  */
+  {
+    Lisp_Object form;
+    GCPRO2 (function, prefix_arg);
+    form = Finteractive_form (function);
+    UNGCPRO;
+    if (CONSP (form))
+      specs = filter_specs = Fcar (XCDR (form));
+    else
+      wrong_type_argument (Qcommandp, function);
+  }
 
-  /* If either SPECS or STRING is set to a string, use it.  */
+  /* If SPECS is set to a string, use it as an interactive prompt.  */
   if (STRINGP (specs))
     {
       /* Make a copy of string so that if a GC relocates specs,
@@ -368,7 +347,7 @@ invoke it.  If KEYS is omitted or nil, the return value of
       bcopy (SDATA (specs), string,
             SBYTES (specs) + 1);
     }
-  else if (string == 0)
+  else
     {
       Lisp_Object input;
       i = num_input_events;
@@ -402,8 +381,8 @@ invoke it.  If KEYS is omitted or nil, the return value of
       real_this_command= save_real_this_command;
       current_kboard->Vlast_command = save_last_command;
 
-      single_kboard_state ();
-      return apply1 (function, specs);
+      temporarily_switch_to_single_kboard (NULL);
+      return unbind_to (speccount, apply1 (function, specs));
     }
 
   /* Here if function specifies a string to control parsing the defaults */
@@ -473,16 +452,19 @@ invoke it.  If KEYS is omitted or nil, the return value of
   /* Count the number of arguments the interactive spec would have
      us give to the function.  */
   tem = string;
-  for (j = 0; *tem; j++)
+  for (j = 0; *tem;)
     {
       /* 'r' specifications ("point and mark as 2 numeric args")
         produce *two* arguments.  */
-      if (*tem == 'r') j++;
+      if (*tem == 'r')
+       j += 2;
+      else
+       j++;
       tem = (unsigned char *) index (tem, '\n');
       if (tem)
-       tem++;
+       ++tem;
       else
-       tem = (unsigned char *) "";
+       break;
     }
   count = j;
 
@@ -585,7 +567,7 @@ invoke it.  If KEYS is omitted or nil, the return value of
        case 'G':               /* Possibly nonexistent file name,
                                   default to directory alone. */
          args[i] = Fread_file_name (callint_message,
-                                    Qnil, Qnil, Qnil, build_string (""), Qnil);
+                                    Qnil, Qnil, Qnil, empty_unibyte_string, Qnil);
          break;
 
        case 'i':               /* Ignore an argument -- Does not do I/O */
@@ -851,12 +833,11 @@ invoke it.  If KEYS is omitted or nil, the return value of
   real_this_command= save_real_this_command;
   current_kboard->Vlast_command = save_last_command;
 
-  single_kboard_state ();
-
   {
     Lisp_Object val;
     specbind (Qcommand_debug_status, Qnil);
 
+    temporarily_switch_to_single_kboard (NULL);
     val = Ffuncall (count + 1, args);
     UNGCPRO;
     return unbind_to (speccount, val);
index bf7ea43b8683e36da64e9eb12cbb88c4d4c5c951..c10dea566bf13c32bcaf2a489e05f1f163810091 100644 (file)
@@ -84,6 +84,8 @@ extern int errno;
 #include "syssignal.h"
 #include "systty.h"
 #include "blockinput.h"
+#include "frame.h"
+#include "termhooks.h"
 
 #ifdef MSDOS
 #include "msdos.h"
@@ -111,7 +113,7 @@ Lisp_Object Vtemp_file_name_pattern;
 
 Lisp_Object Vshell_file_name;
 
-Lisp_Object Vprocess_environment;
+Lisp_Object Vprocess_environment, Vinitial_environment;
 
 #ifdef DOS_NT
 Lisp_Object Qbuffer_file_type;
@@ -130,6 +132,7 @@ int synch_process_termsig;
 /* If synch_process_death is zero,
    this is exit code of synchronous subprocess.  */
 int synch_process_retcode;
+
 \f
 /* Clean up when exiting Fcall_process.
    On MSDOS, delete the temporary file on any kind of termination.
@@ -138,6 +141,8 @@ int synch_process_retcode;
 /* Nonzero if this is termination due to exit.  */
 static int call_process_exited;
 
+EXFUN (Fgetenv_internal, 2);
+
 #ifndef VMS  /* VMS version is in vmsproc.c.  */
 
 static Lisp_Object
@@ -1181,6 +1186,40 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
 
 static int relocate_fd ();
 
+static char **
+add_env (char **env, char **new_env, char *string)
+{
+  char **ep;
+  int ok = 1;
+  if (string == NULL)
+    return new_env;
+
+  /* See if this string duplicates any string already in the env.
+     If so, don't put it in.
+     When an env var has multiple definitions,
+     we keep the definition that comes first in process-environment.  */
+  for (ep = env; ok && ep != new_env; ep++)
+    {
+      char *p = *ep, *q = string;
+      while (ok)
+        {
+          if (*q != *p)
+            break;
+          if (*q == 0)
+            /* The string is a lone variable name; keep it for now, we
+               will remove it later.  It is a placeholder for a
+               variable that is not to be included in the environment.  */
+            break;
+          if (*q == '=')
+            ok = 0;
+          p++, q++;
+        }
+    }
+  if (ok)
+    *new_env++ = string;
+  return new_env;
+}
+
 /* This is the last thing run in a newly forked inferior
    either synchronous or asynchronous.
    Copy descriptors IN, OUT and ERR as descriptors 0, 1 and 2.
@@ -1236,9 +1275,10 @@ child_setup (in, out, err, new_argv, set_pgrp, current_dir)
 
   /* Note that use of alloca is always safe here.  It's obvious for systems
      that do not have true vfork or that have true (stack) alloca.
-     If using vfork and C_ALLOCA it is safe because that changes
-     the superior's static variables as if the superior had done alloca
-     and will be cleaned up in the usual way.  */
+     If using vfork and C_ALLOCA (when Emacs used to include
+     src/alloca.c) it is safe because that changes the superior's
+     static variables as if the superior had done alloca and will be
+     cleaned up in the usual way. */
   {
     register char *temp;
     register int i;
@@ -1282,57 +1322,80 @@ child_setup (in, out, err, new_argv, set_pgrp, current_dir)
       temp[--i] = 0;
   }
 
-  /* Set `env' to a vector of the strings in Vprocess_environment.  */
+  /* Set `env' to a vector of the strings in the environment.  */
   {
     register Lisp_Object tem;
     register char **new_env;
+    char **p, **q;
     register int new_length;
-
+    Lisp_Object display = Qnil;
+    
     new_length = 0;
+
     for (tem = Vprocess_environment;
-        CONSP (tem) && STRINGP (XCAR (tem));
-        tem = XCDR (tem))
-      new_length++;
+         CONSP (tem) && STRINGP (XCAR (tem));
+         tem = XCDR (tem))
+      {
+       if (strncmp (SDATA (XCAR (tem)), "DISPLAY", 7) == 0
+           && (SDATA (XCAR (tem)) [7] == '\0'
+               || SDATA (XCAR (tem)) [7] == '='))
+         /* DISPLAY is specified in process-environment.  */
+         display = Qt;
+       new_length++;
+      }
+
+    /* If not provided yet, use the frame's DISPLAY.  */
+    if (NILP (display))
+      {
+       Lisp_Object tmp = Fframe_parameter (selected_frame, Qdisplay);
+       if (!STRINGP (tmp) && CONSP (Vinitial_environment))
+         /* If still not found, Look for DISPLAY in Vinitial_environment.  */
+         tmp = Fgetenv_internal (build_string ("DISPLAY"),
+                                 Vinitial_environment);
+       if (STRINGP (tmp))
+         {
+           display = tmp;
+           new_length++;
+         }
+      }
 
     /* new_length + 2 to include PWD and terminating 0.  */
     env = new_env = (char **) alloca ((new_length + 2) * sizeof (char *));
-
     /* If we have a PWD envvar, pass one down,
        but with corrected value.  */
-    if (getenv ("PWD"))
+    if (egetenv ("PWD"))
       *new_env++ = pwd_var;
+    if (STRINGP (display))
+      {
+       int vlen = strlen ("DISPLAY=") + strlen (SDATA (display)) + 1;
+       char *vdata = (char *) alloca (vlen);
+       strcpy (vdata, "DISPLAY=");
+       strcat (vdata, SDATA (display));
+       new_env = add_env (env, new_env, vdata);
+      }
 
-    /* Copy the Vprocess_environment strings into new_env.  */
+    /* Overrides.  */
     for (tem = Vprocess_environment;
         CONSP (tem) && STRINGP (XCAR (tem));
         tem = XCDR (tem))
+      new_env = add_env (env, new_env, SDATA (XCAR (tem)));
+
+    *new_env = 0;
+
+    /* Remove variable names without values.  */
+    p = q = env;
+    while (*p != 0)
       {
-       char **ep = env;
-       char *string = (char *) SDATA (XCAR (tem));
-       /* See if this string duplicates any string already in the env.
-          If so, don't put it in.
-          When an env var has multiple definitions,
-          we keep the definition that comes first in process-environment.  */
-       for (; ep != new_env; ep++)
-         {
-           char *p = *ep, *q = string;
-           while (1)
-             {
-               if (*q == 0)
-                 /* The string is malformed; might as well drop it.  */
-                 goto duplicate;
-               if (*q != *p)
-                 break;
-               if (*q == '=')
-                 goto duplicate;
-               p++, q++;
-             }
-         }
-       *new_env++ = string;
-      duplicate: ;
+        while (*q != 0 && strchr (*q, '=') == NULL)
+          *q++;
+        *p = *q++;
+        if (*p != 0)
+          p++;
       }
-    *new_env = 0;
   }
+
+  
 #ifdef WINDOWSNT
   prepare_standard_handles (in, out, err, handles);
   set_process_dir (SDATA (current_dir));
@@ -1446,22 +1509,18 @@ relocate_fd (fd, minfd)
 }
 
 static int
-getenv_internal (var, varlen, value, valuelen)
+getenv_internal_1 (var, varlen, value, valuelen, env)
      char *var;
      int varlen;
      char **value;
      int *valuelen;
+     Lisp_Object env;
 {
-  Lisp_Object scan;
-
-  for (scan = Vprocess_environment; CONSP (scan); scan = XCDR (scan))
+  for (; CONSP (env); env = XCDR (env))
     {
-      Lisp_Object entry;
-
-      entry = XCAR (scan);
+      Lisp_Object entry = XCAR (env);
       if (STRINGP (entry)
-         && SBYTES (entry) > varlen
-         && SREF (entry, varlen) == '='
+         && SBYTES (entry) >= varlen
 #ifdef WINDOWSNT
          /* NT environment variables are case insensitive.  */
          && ! strnicmp (SDATA (entry), var, varlen)
@@ -1470,35 +1529,95 @@ getenv_internal (var, varlen, value, valuelen)
 #endif /* not WINDOWSNT */
          )
        {
-         *value    = (char *) SDATA (entry) + (varlen + 1);
-         *valuelen = SBYTES (entry) - (varlen + 1);
+         if (SBYTES (entry) > varlen && SREF (entry, varlen) == '=')
+           {
+             *value = (char *) SDATA (entry) + (varlen + 1);
+             *valuelen = SBYTES (entry) - (varlen + 1);
+             return 1;
+           }
+         else if (SBYTES (entry) == varlen)
+           {
+             /* Lone variable names in Vprocess_environment mean that
+                variable should be removed from the environment. */
+             *value = NULL;
+             return 1;
+           }
+       }
+    }
+  return 0;
+}
+
+static int
+getenv_internal (var, varlen, value, valuelen, frame)
+     char *var;
+     int varlen;
+     char **value;
+     int *valuelen;
+     Lisp_Object frame;
+{
+  /* Try to find VAR in Vprocess_environment first.  */
+  if (getenv_internal_1 (var, varlen, value, valuelen,
+                        Vprocess_environment))
+    return *value ? 1 : 0;
+
+  /* For DISPLAY try to get the values from the frame or the initial env.  */
+  if (strcmp (var, "DISPLAY") == 0)
+    {
+      Lisp_Object display
+       = Fframe_parameter (NILP (frame) ? selected_frame : frame, Qdisplay);
+      if (STRINGP (display))
+       {
+         *value    = (char *) SDATA (display);
+         *valuelen = SBYTES (display);
          return 1;
        }
+      /* If still not found, Look for DISPLAY in Vinitial_environment.  */
+      if (getenv_internal_1 (var, varlen, value, valuelen,
+                            Vinitial_environment))
+       return *value ? 1 : 0;
     }
 
   return 0;
 }
 
-DEFUN ("getenv-internal", Fgetenv_internal, Sgetenv_internal, 1, 1, 0,
-       doc: /* Return the value of environment variable VAR, as a string.
-VAR should be a string.  Value is nil if VAR is undefined in the environment.
-This function consults the variable `process-environment' for its value.  */)
-     (var)
-     Lisp_Object var;
+DEFUN ("getenv-internal", Fgetenv_internal, Sgetenv_internal, 1, 2, 0,
+       doc: /* Get the value of environment variable VARIABLE.
+VARIABLE should be a string.  Value is nil if VARIABLE is undefined in
+the environment.  Otherwise, value is a string.
+
+This function searches `process-environment' for VARIABLE.  If it is
+not found there, then it continues the search in the environment list
+of the selected frame.
+
+If optional parameter ENV is a list, then search this list instead of
+`process-environment', and return t when encountering a negative entry.
+
+If it is a frame, then this function will ignore `process-environment' and
+will simply look up the variable in that frame's environment.  */)
+     (variable, env)
+     Lisp_Object variable, env;
 {
   char *value;
   int valuelen;
 
-  CHECK_STRING (var);
-  if (getenv_internal (SDATA (var), SBYTES (var),
-                      &value, &valuelen))
+  CHECK_STRING (variable);
+  if (CONSP (env))
+    {
+      if (getenv_internal_1 (SDATA (variable), SBYTES (variable),
+                            &value, &valuelen, env))
+       return value ? make_string (value, valuelen) : Qt;
+      else
+       return Qnil;
+    }
+  else if (getenv_internal (SDATA (variable), SBYTES (variable),
+                           &value, &valuelen, env))
     return make_string (value, valuelen);
   else
     return Qnil;
 }
 
-/* A version of getenv that consults process_environment, easily
-   callable from C.  */
+/* A version of getenv that consults the Lisp environment lists,
+   easily callable from C.  */
 char *
 egetenv (var)
      char *var;
@@ -1506,7 +1625,7 @@ egetenv (var)
   char *value;
   int valuelen;
 
-  if (getenv_internal (var, strlen (var), &value, &valuelen))
+  if (getenv_internal (var, strlen (var), &value, &valuelen, Qnil))
     return value;
   else
     return 0;
@@ -1629,8 +1748,8 @@ init_callproc ()
     {
       char *dir = getenv ("TMPDIR");
       Vtemp_file_name_pattern
-       = Fexpand_file_name (build_string ("emacsXXXXXX"),
-                            build_string (dir));
+       = Fexpand_file_name (build_string ("emacsXXXXXX"),
+                            build_string (dir));
     }
   else
     Vtemp_file_name_pattern = build_string ("/tmp/emacsXXXXXX");
@@ -1646,17 +1765,20 @@ init_callproc ()
 }
 
 void
-set_process_environment ()
+set_initial_environment ()
 {
   register char **envp;
-
-  Vprocess_environment = Qnil;
 #ifndef CANNOT_DUMP
   if (initialized)
 #endif
-    for (envp = environ; *envp; envp++)
-      Vprocess_environment = Fcons (build_string (*envp),
-                                   Vprocess_environment);
+    {
+      for (envp = environ; *envp; envp++)
+       Vprocess_environment = Fcons (build_string (*envp),
+                                     Vprocess_environment);
+      /* Ideally, the `copy' shouldn't be necessary, but it seems it's frequent
+        to use `delete' and friends on process-environment.  */
+      Vinitial_environment = Fcopy_sequence (Vprocess_environment);
+    }
 }
 
 void
@@ -1715,16 +1837,34 @@ If this variable is nil, then Emacs is unable to use a shared directory.  */);
 This is used by `call-process-region'.  */);
   /* This variable is initialized in init_callproc.  */
 
+  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,
-              doc: /* List of environment variables for subprocesses to inherit.
+              doc: /* List of overridden environment variables for subprocesses to inherit.
 Each element should be a string of the form ENVVARNAME=VALUE.
+
+Entries in this list take precedence to those in the frame-local
+environments.  Therefore, let-binding `process-environment' is an easy
+way to temporarily change the value of an environment variable,
+irrespective of where it comes from.  To use `process-environment' to
+remove an environment variable, include only its name in the list,
+without "=VALUE".
+
+This variable is set to nil when Emacs starts.
+
 If multiple entries define the same variable, the first one always
 takes precedence.
-The environment which Emacs inherits is placed in this variable
-when Emacs starts.
+
 Non-ASCII characters are encoded according to the initial value of
-`locale-coding-system', i.e. the elements must normally be decoded for use.
+`locale-coding-system', i.e. the elements must normally be decoded for
+use.
+
 See `setenv' and `getenv'.  */);
+  Vprocess_environment = Qnil;
 
 #ifndef VMS
   defsubr (&Scall_process);
index a53bb1ece52c96e2e65b2ab3a0d928711de660d2..952a320dda3f6f19f4eeeee66efaeafbec60f1c5 100644 (file)
@@ -126,7 +126,7 @@ set_case_table (table, standard)
      int standard;
 {
   Lisp_Object up, canon, eqv;
-  Lisp_Object indices[3];
+  int indices[3];
 
   check_case_table (table);
 
index 564fd4ba4faad3136002b432228feef0fe5b990d..3ef342f455e6c724316990965ef8457892788f73 100644 (file)
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -2348,16 +2348,8 @@ Return index number of the registered CCL program.  */)
     }
 
   if (idx == len)
-    {
-      /* Extend the table.  */
-      Lisp_Object new_table;
-      int j;
-
-      new_table = Fmake_vector (make_number (len * 2), Qnil);
-      for (j = 0; j < len; j++)
-       ASET (new_table, j, AREF (Vccl_program_table, j));
-      Vccl_program_table = new_table;
-    }
+    /* Extend the table.  */
+    Vccl_program_table = larger_vector (Vccl_program_table, len * 2, Qnil);
 
   {
     Lisp_Object elt;
@@ -2416,15 +2408,8 @@ Return index number of the registered map.  */)
     }
 
   if (i == len)
-    {
-      Lisp_Object new_vector = Fmake_vector (make_number (len * 2), Qnil);
-      int j;
-
-      for (j = 0; j < len; j++)
-       AREF (new_vector, j)
-         = AREF (Vcode_conversion_map_vector, j);
-      Vcode_conversion_map_vector = new_vector;
-    }
+    Vcode_conversion_map_vector = larger_vector (Vcode_conversion_map_vector,
+                                                len * 2, Qnil);
 
   index = make_number (i);
   Fput (symbol, Qcode_conversion_map, map);
index 1833121677678dc925eeaceae5b1f2b091b496e8..ad8ec080c9d3edab002aa1238ab7cf8d47276ffe 100644 (file)
--- a/src/cm.c
+++ b/src/cm.c
@@ -23,8 +23,13 @@ Boston, MA 02110-1301, USA.  */
 
 #include <config.h>
 #include <stdio.h>
+
+#include "lisp.h"
+#include "frame.h"
 #include "cm.h"
 #include "termhooks.h"
+#include "termchar.h"
+
 
 /* For now, don't try to include termcap.h.  On some systems,
    configure finds a non-standard termcap.h that the main build
@@ -53,13 +58,16 @@ evalcost (c)
   return c;
 }
 
+/* The terminal to use for low-level output. */
+struct tty_display_info *current_tty;
+
 int
 cmputc (c)
      char c;
 {
-  if (termscript)
-    fputc (c & 0177, termscript);
-  putchar (c & 0177);
+  if (current_tty->termscript)
+    putc (c & 0177, current_tty->termscript);
+  putc (c & 0177, current_tty->output);
   return c;
 }
 
@@ -72,9 +80,9 @@ cmputc (c)
  */
 
 static
-at (row, col) {
-    curY = row;
-    curX = col;
+at (tty, row, col) {
+  curY (tty) = row;
+  curX (tty)  = col;
 }
 
 /*
@@ -82,8 +90,8 @@ at (row, col) {
  */
 
 static
-addcol (n) {
-    curX += n;
+addcol (tty, n) {
+  curX (tty) += n;
 
     /*
      * If cursor hit edge of screen, what happened?
@@ -93,21 +101,21 @@ addcol (n) {
      * of the last line.
      */
 
-    if (curX == Wcm.cm_cols) {
+  if (curX (tty) == tty->Wcm->cm_cols) {
        /*
         * Well, if magicwrap, still there, past the edge of the
         * screen (!).  If autowrap, on the col 0 of the next line.
         * Otherwise on last column.
         */
 
-       if (Wcm.cm_magicwrap)
+       if (tty->Wcm->cm_magicwrap)
            ;                   /* "limbo" */
-       else if (Wcm.cm_autowrap) {
-           curX = 0;
-           curY++;             /* Beware end of screen! */
+       else if (tty->Wcm->cm_autowrap) {
+          curX (tty) = 0;
+          curY (tty) ++;               /* Beware end of screen! */
        }
        else
-           curX--;
+          curX (tty)--;
     }
 }
 #endif
@@ -123,20 +131,20 @@ addcol (n) {
  * after we reach the last column; this takes us to a known state.
  */
 void
-cmcheckmagic ()
+cmcheckmagic (struct tty_display_info *tty)
 {
-  if (curX == FrameCols)
+  if (curX (tty) == FrameCols (tty))
     {
-      if (!MagicWrap || curY >= FrameRows - 1)
+      if (!MagicWrap (tty) || curY (tty) >= FrameRows (tty) - 1)
        abort ();
-      if (termscript)
-       putc ('\r', termscript);
-      putchar ('\r');
-      if (termscript)
-       putc ('\n', termscript);
-      putchar ('\n');
-      curX = 0;
-      curY++;
+      if (tty->termscript)
+       putc ('\r', tty->termscript);
+      putc ('\r', tty->output);
+      if (tty->termscript)
+       putc ('\n', tty->termscript);
+      putc ('\n', tty->output);
+      curX (tty) = 0;
+      curY (tty)++;
     }
 }
 
@@ -148,21 +156,21 @@ cmcheckmagic ()
  */
 
 void
-cmcostinit ()
+cmcostinit (struct tty_display_info *tty)
 {
     char *p;
 
 #define        COST(x,e)       (x ? (cost = 0, tputs (x, 1, e), cost) : BIG)
 #define CMCOST(x,e)    ((x == 0) ? BIG : (p = tgoto(x, 0, 0), COST(p ,e)))
 
-    Wcm.cc_up =                COST (Wcm.cm_up, evalcost);
-    Wcm.cc_down =      COST (Wcm.cm_down, evalcost);
-    Wcm.cc_left =      COST (Wcm.cm_left, evalcost);
-    Wcm.cc_right =     COST (Wcm.cm_right, evalcost);
-    Wcm.cc_home =      COST (Wcm.cm_home, evalcost);
-    Wcm.cc_cr =                COST (Wcm.cm_cr, evalcost);
-    Wcm.cc_ll =                COST (Wcm.cm_ll, evalcost);
-    Wcm.cc_tab =       Wcm.cm_tabwidth ? COST (Wcm.cm_tab, evalcost) : BIG;
+    tty->Wcm->cc_up =   COST (tty->Wcm->cm_up, evalcost);
+    tty->Wcm->cc_down =         COST (tty->Wcm->cm_down, evalcost);
+    tty->Wcm->cc_left =         COST (tty->Wcm->cm_left, evalcost);
+    tty->Wcm->cc_right = COST (tty->Wcm->cm_right, evalcost);
+    tty->Wcm->cc_home =         COST (tty->Wcm->cm_home, evalcost);
+    tty->Wcm->cc_cr =   COST (tty->Wcm->cm_cr, evalcost);
+    tty->Wcm->cc_ll =   COST (tty->Wcm->cm_ll, evalcost);
+    tty->Wcm->cc_tab =  tty->Wcm->cm_tabwidth ? COST (tty->Wcm->cm_tab, evalcost) : BIG;
 
     /*
      * These last three are actually minimum costs.  When (if) they are
@@ -173,9 +181,9 @@ cmcostinit ()
      * cursor motion seem to take straight numeric values.  --ACT)
      */
 
-    Wcm.cc_abs =  CMCOST (Wcm.cm_abs, evalcost);
-    Wcm.cc_habs = CMCOST (Wcm.cm_habs, evalcost);
-    Wcm.cc_vabs = CMCOST (Wcm.cm_vabs, evalcost);
+    tty->Wcm->cc_abs =  CMCOST (tty->Wcm->cm_abs, evalcost);
+    tty->Wcm->cc_habs = CMCOST (tty->Wcm->cm_habs, evalcost);
+    tty->Wcm->cc_vabs = CMCOST (tty->Wcm->cm_vabs, evalcost);
 
 #undef CMCOST
 #undef COST
@@ -188,8 +196,8 @@ cmcostinit ()
  */
 
 static int
-calccost (srcy, srcx, dsty, dstx, doit)
-     int srcy, srcx, dsty, dstx, doit;
+calccost (struct tty_display_info *tty,
+          int srcy, int srcx, int dsty, int dstx, int doit)
 {
     register int    deltay,
                     deltax,
@@ -206,16 +214,16 @@ calccost (srcy, srcx, dsty, dstx, doit)
        don't believe the cursor position: give up here
        and force use of absolute positioning.  */
 
-    if (curX == Wcm.cm_cols)
+    if (curX (tty) == tty->Wcm->cm_cols)
       goto fail;
 
     totalcost = 0;
     if ((deltay = dsty - srcy) == 0)
        goto x;
     if (deltay < 0)
-       p = Wcm.cm_up, c = Wcm.cc_up, deltay = -deltay;
+       p = tty->Wcm->cm_up, c = tty->Wcm->cc_up, deltay = -deltay;
     else
-       p = Wcm.cm_down, c = Wcm.cc_down;
+       p = tty->Wcm->cm_down, c = tty->Wcm->cc_down;
     if (c == BIG) {            /* caint get thar from here */
        if (doit)
            printf ("OOPS");
@@ -224,16 +232,16 @@ calccost (srcy, srcx, dsty, dstx, doit)
     totalcost = c * deltay;
     if (doit)
        while (--deltay >= 0)
-           tputs (p, 1, cmputc);
+          emacs_tputs (tty, p, 1, cmputc);
 x:
     if ((deltax = dstx - srcx) == 0)
        goto done;
     if (deltax < 0) {
-       p = Wcm.cm_left, c = Wcm.cc_left, deltax = -deltax;
+       p = tty->Wcm->cm_left, c = tty->Wcm->cc_left, deltax = -deltax;
        goto dodelta;           /* skip all the tab junk */
     }
     /* Tabs (the toughie) */
-    if (Wcm.cc_tab >= BIG || !Wcm.cm_usetabs)
+    if (tty->Wcm->cc_tab >= BIG || !tty->Wcm->cm_usetabs)
        goto olddelta;          /* forget it! */
 
     /*
@@ -244,12 +252,12 @@ x:
      * we will put into tabx (for ntabs) and tab2x (for n2tabs)).
      */
 
-    ntabs = (deltax + srcx % Wcm.cm_tabwidth) / Wcm.cm_tabwidth;
+    ntabs = (deltax + srcx % tty->Wcm->cm_tabwidth) / tty->Wcm->cm_tabwidth;
     n2tabs = ntabs + 1;
-    tabx = (srcx / Wcm.cm_tabwidth + ntabs) * Wcm.cm_tabwidth;
-    tab2x = tabx + Wcm.cm_tabwidth;
+    tabx = (srcx / tty->Wcm->cm_tabwidth + ntabs) * tty->Wcm->cm_tabwidth;
+    tab2x = tabx + tty->Wcm->cm_tabwidth;
 
-    if (tab2x >= Wcm.cm_cols)  /* too far (past edge) */
+    if (tab2x >= tty->Wcm->cm_cols)    /* too far (past edge) */
        n2tabs = 0;
 
     /*
@@ -257,12 +265,12 @@ x:
      * for using n2tabs, then pick the minimum.
      */
 
-                  /* cost for ntabs     +    cost for right motion */
-    tabcost = ntabs ? ntabs * Wcm.cc_tab + (dstx - tabx) * Wcm.cc_right
+                  /* cost for ntabs           +    cost for right motion */
+    tabcost = ntabs ? ntabs * tty->Wcm->cc_tab + (dstx - tabx) * tty->Wcm->cc_right
                    : BIG;
 
-                  /* cost for n2tabs    +    cost for left motion */
-    c = n2tabs  ?    n2tabs * Wcm.cc_tab + (tab2x - dstx) * Wcm.cc_left
+                  /* cost for n2tabs          +    cost for left motion */
+    c = n2tabs  ?    n2tabs * tty->Wcm->cc_tab + (tab2x - dstx) * tty->Wcm->cc_left
                : BIG;
 
     if (c < tabcost)           /* then cheaper to overshoot & back up */
@@ -275,11 +283,11 @@ x:
      * See if tabcost is less than just moving right
      */
 
-    if (tabcost < (deltax * Wcm.cc_right)) {
+    if (tabcost < (deltax * tty->Wcm->cc_right)) {
        totalcost += tabcost;   /* use the tabs */
        if (doit)
            while (--ntabs >= 0)
-               tputs (Wcm.cm_tab, 1, cmputc);
+              emacs_tputs (tty, tty->Wcm->cm_tab, 1, cmputc);
        srcx = tabx;
     }
 
@@ -292,9 +300,9 @@ newdelta:
        goto done;
 olddelta:
     if (deltax > 0)
-       p = Wcm.cm_right, c = Wcm.cc_right;
+       p = tty->Wcm->cm_right, c = tty->Wcm->cc_right;
     else
-       p = Wcm.cm_left, c = Wcm.cc_left, deltax = -deltax;
+       p = tty->Wcm->cm_left, c = tty->Wcm->cc_left, deltax = -deltax;
 
 dodelta:
     if (c == BIG) {            /* caint get thar from here */
@@ -306,7 +314,7 @@ fail:
     totalcost += c * deltax;
     if (doit)
        while (--deltax >= 0)
-           tputs (p, 1, cmputc);
+          emacs_tputs (tty, p, 1, cmputc);
 done:
     return totalcost;
 }
@@ -324,7 +332,8 @@ losecursor ()
 #define        USECR   3
 
 void
-cmgoto (row, col)
+cmgoto (tty, row, col)
+     struct tty_display_info *tty;
      int row, col;
 {
     int     homecost,
@@ -337,47 +346,47 @@ cmgoto (row, col)
            *dcm;
 
   /* First the degenerate case */
-  if (row == curY && col == curX) /* already there */
+    if (row == curY (tty) && col == curX (tty)) /* already there */
     return;
 
-  if (curY >= 0 && curX >= 0)
+    if (curY (tty) >= 0 && curX (tty) >= 0)
     {
       /* We may have quick ways to go to the upper-left, bottom-left,
        * start-of-line, or start-of-next-line.  Or it might be best to
        * start where we are.  Examine the options, and pick the cheapest.
        */
 
-      relcost = calccost (curY, curX, row, col, 0);
+      relcost = calccost (tty, curY (tty), curX (tty), row, col, 0);
       use = USEREL;
-      if ((homecost = Wcm.cc_home) < BIG)
-         homecost += calccost (0, 0, row, col, 0);
+      if ((homecost = tty->Wcm->cc_home) < BIG)
+          homecost += calccost (tty, 0, 0, row, col, 0);
       if (homecost < relcost)
-         relcost = homecost, use = USEHOME;
-      if ((llcost = Wcm.cc_ll) < BIG)
-         llcost += calccost (Wcm.cm_rows - 1, 0, row, col, 0);
+          relcost = homecost, use = USEHOME;
+      if ((llcost = tty->Wcm->cc_ll) < BIG)
+          llcost += calccost (tty, tty->Wcm->cm_rows - 1, 0, row, col, 0);
       if (llcost < relcost)
-         relcost = llcost, use = USELL;
-      if ((crcost = Wcm.cc_cr) < BIG) {
-         if (Wcm.cm_autolf)
-             if (curY + 1 >= Wcm.cm_rows)
-                 crcost = BIG;
+          relcost = llcost, use = USELL;
+      if ((crcost = tty->Wcm->cc_cr) < BIG) {
+         if (tty->Wcm->cm_autolf)
+            if (curY (tty) + 1 >= tty->Wcm->cm_rows)
+                crcost = BIG;
              else
-                 crcost += calccost (curY + 1, 0, row, col, 0);
+                crcost += calccost (tty, curY (tty) + 1, 0, row, col, 0);
          else
-             crcost += calccost (curY, 0, row, col, 0);
+            crcost += calccost (tty, curY (tty), 0, row, col, 0);
       }
       if (crcost < relcost)
          relcost = crcost, use = USECR;
-      directcost = Wcm.cc_abs, dcm = Wcm.cm_abs;
-      if (row == curY && Wcm.cc_habs < BIG)
-         directcost = Wcm.cc_habs, dcm = Wcm.cm_habs;
-      else if (col == curX && Wcm.cc_vabs < BIG)
-         directcost = Wcm.cc_vabs, dcm = Wcm.cm_vabs;
+      directcost = tty->Wcm->cc_abs, dcm = tty->Wcm->cm_abs;
+      if (row == curY (tty) && tty->Wcm->cc_habs < BIG)
+         directcost = tty->Wcm->cc_habs, dcm = tty->Wcm->cm_habs;
+      else if (col == curX (tty) && tty->Wcm->cc_vabs < BIG)
+         directcost = tty->Wcm->cc_vabs, dcm = tty->Wcm->cm_vabs;
     }
   else
     {
       directcost = 0, relcost = 100000;
-      dcm = Wcm.cm_abs;
+      dcm = tty->Wcm->cm_abs;
     }
 
   /*
@@ -388,13 +397,14 @@ cmgoto (row, col)
     {
       /* compute REAL direct cost */
       cost = 0;
-      p = dcm == Wcm.cm_habs ? tgoto (dcm, row, col) :
-                              tgoto (dcm, col, row);
-      tputs (p, 1, evalcost);
+      p = (dcm == tty->Wcm->cm_habs
+           ? tgoto (dcm, row, col)
+           : tgoto (dcm, col, row));
+      emacs_tputs (tty, p, 1, evalcost);
       if (cost <= relcost)
        {       /* really is cheaper */
-         tputs (p, 1, cmputc);
-         curY = row, curX = col;
+         emacs_tputs (tty, p, 1, cmputc);
+         curY (tty) = row, curX (tty) = col;
          return;
        }
     }
@@ -402,25 +412,25 @@ cmgoto (row, col)
   switch (use)
     {
     case USEHOME:
-      tputs (Wcm.cm_home, 1, cmputc);
-      curY = 0, curX = 0;
+      emacs_tputs (tty, tty->Wcm->cm_home, 1, cmputc);
+      curY (tty) = 0, curX (tty) = 0;
       break;
 
     case USELL:
-      tputs (Wcm.cm_ll, 1, cmputc);
-      curY = Wcm.cm_rows - 1, curX = 0;
+      emacs_tputs (tty, tty->Wcm->cm_ll, 1, cmputc);
+      curY (tty) = tty->Wcm->cm_rows - 1, curX (tty) = 0;
       break;
 
     case USECR:
-      tputs (Wcm.cm_cr, 1, cmputc);
-      if (Wcm.cm_autolf)
-       curY++;
-      curX = 0;
+      emacs_tputs (tty, tty->Wcm->cm_cr, 1, cmputc);
+      if (tty->Wcm->cm_autolf)
+       curY (tty)++;
+      curX (tty) = 0;
       break;
     }
 
-  (void) calccost (curY, curX, row, col, 1);
-  curY = row, curX = col;
+  (void) calccost (tty, curY (tty), curX (tty), row, col, 1);
+  curY (tty) = row, curX (tty) = col;
 }
 
 /* Clear out all terminal info.
@@ -428,9 +438,9 @@ cmgoto (row, col)
  */
 
 void
-Wcm_clear ()
+Wcm_clear (struct tty_display_info *tty)
 {
-  bzero (&Wcm, sizeof Wcm);
+  bzero (tty->Wcm, sizeof (struct cm));
   UP = 0;
   BC = 0;
 }
@@ -443,21 +453,21 @@ Wcm_clear ()
  */
 
 int
-Wcm_init ()
+Wcm_init (struct tty_display_info *tty)
 {
 #if 0
-  if (Wcm.cm_abs && !Wcm.cm_ds)
+  if (tty->Wcm->cm_abs && !tty->Wcm->cm_ds)
     return 0;
 #endif
-  if (Wcm.cm_abs)
+  if (tty->Wcm->cm_abs)
     return 0;
   /* Require up and left, and, if no absolute, down and right */
-  if (!Wcm.cm_up || !Wcm.cm_left)
+  if (!tty->Wcm->cm_up || !tty->Wcm->cm_left)
     return - 1;
-  if (!Wcm.cm_abs && (!Wcm.cm_down || !Wcm.cm_right))
+  if (!tty->Wcm->cm_abs && (!tty->Wcm->cm_down || !tty->Wcm->cm_right))
     return - 1;
   /* Check that we know the size of the screen.... */
-  if (Wcm.cm_rows <= 0 || Wcm.cm_cols <= 0)
+  if (tty->Wcm->cm_rows <= 0 || tty->Wcm->cm_cols <= 0)
     return - 2;
   return 0;
 }
index 7c26a9ce66a5b5a35e529c884fc6848b1ccd22d6..36413703a92d545eaf81aa8e84a10d329613720f 100644 (file)
--- a/src/cm.h
+++ b/src/cm.h
@@ -99,76 +99,78 @@ struct cm
     int cc_vabs;
   };
 
-extern struct cm Wcm;          /* Terminal capabilities */
 extern char PC;                        /* Pad character */
 
 /* Shorthand */
 #ifndef NoCMShortHand
-#define curY           Wcm.cm_curY
-#define curX           Wcm.cm_curX
-#define Up             Wcm.cm_up
-#define Down           Wcm.cm_down
-#define Left           Wcm.cm_left
-#define Right          Wcm.cm_right
-#define Tab            Wcm.cm_tab
-#define BackTab                Wcm.cm_backtab
-#define TabWidth       Wcm.cm_tabwidth
-#define CR             Wcm.cm_cr
-#define Home           Wcm.cm_home
-#define LastLine       Wcm.cm_ll
-#define AbsPosition    Wcm.cm_abs
-#define ColPosition    Wcm.cm_habs
-#define RowPosition    Wcm.cm_vabs
-#define MultiUp                Wcm.cm_multiup
-#define MultiDown      Wcm.cm_multidown
-#define MultiLeft      Wcm.cm_multileft
-#define MultiRight     Wcm.cm_multiright
-#define AutoWrap       Wcm.cm_autowrap
-#define MagicWrap      Wcm.cm_magicwrap
-#define UseTabs                Wcm.cm_usetabs
-#define FrameRows      Wcm.cm_rows
-#define FrameCols      Wcm.cm_cols
-
-#define UpCost         Wcm.cc_up
-#define DownCost       Wcm.cc_down
-#define LeftCost       Wcm.cc_left
-#define RightCost      Wcm.cc_right
-#define HomeCost       Wcm.cc_home
-#define CRCost         Wcm.cc_cr
-#define LastLineCost   Wcm.cc_ll
-#define TabCost                Wcm.cc_tab
-#define BackTabCost    Wcm.cc_backtab
-#define AbsPositionCost        Wcm.cc_abs
-#define ColPositionCost        Wcm.cc_habs
-#define RowPositionCost        Wcm.cc_vabs
-#define MultiUpCost    Wcm.cc_multiup
-#define MultiDownCost  Wcm.cc_multidown
-#define MultiLeftCost  Wcm.cc_multileft
-#define MultiRightCost Wcm.cc_multiright
+#define curY(tty)              (tty)->Wcm->cm_curY
+#define curX(tty)              (tty)->Wcm->cm_curX
+#define Up(tty)                        (tty)->Wcm->cm_up
+#define Down(tty)              (tty)->Wcm->cm_down
+#define Left(tty)              (tty)->Wcm->cm_left
+#define Right(tty)             (tty)->Wcm->cm_right
+#define Tab(tty)               (tty)->Wcm->cm_tab
+#define BackTab(tty)           (tty)->Wcm->cm_backtab
+#define TabWidth(tty)          (tty)->Wcm->cm_tabwidth
+#define CR(tty)                        (tty)->Wcm->cm_cr
+#define Home(tty)              (tty)->Wcm->cm_home
+#define LastLine(tty)          (tty)->Wcm->cm_ll
+#define AbsPosition(tty)       (tty)->Wcm->cm_abs
+#define ColPosition(tty)       (tty)->Wcm->cm_habs
+#define RowPosition(tty)       (tty)->Wcm->cm_vabs
+#define MultiUp(tty)           (tty)->Wcm->cm_multiup
+#define MultiDown(tty)         (tty)->Wcm->cm_multidown
+#define MultiLeft(tty)         (tty)->Wcm->cm_multileft
+#define MultiRight(tty)                (tty)->Wcm->cm_multiright
+#define AutoWrap(tty)          (tty)->Wcm->cm_autowrap
+#define MagicWrap(tty)         (tty)->Wcm->cm_magicwrap
+#define UseTabs(tty)           (tty)->Wcm->cm_usetabs
+#define FrameRows(tty)         (tty)->Wcm->cm_rows
+#define FrameCols(tty)         (tty)->Wcm->cm_cols
+
+#define UpCost(tty)            (tty)->Wcm->cc_up
+#define DownCost(tty)          (tty)->Wcm->cc_down
+#define LeftCost(tty)          (tty)->Wcm->cc_left
+#define RightCost(tty)         (tty)->Wcm->cc_right
+#define HomeCost(tty)          (tty)->Wcm->cc_home
+#define CRCost(tty)            (tty)->Wcm->cc_cr
+#define LastLineCost(tty)      (tty)->Wcm->cc_ll
+#define TabCost(tty)           (tty)->Wcm->cc_tab
+#define BackTabCost(tty)       (tty)->Wcm->cc_backtab
+#define AbsPositionCost(tty)   (tty)->Wcm->cc_abs
+#define ColPositionCost(tty)   (tty)->Wcm->cc_habs
+#define RowPositionCost(tty)   (tty)->Wcm->cc_vabs
+#define MultiUpCost(tty)       (tty)->Wcm->cc_multiup
+#define MultiDownCost(tty)     (tty)->Wcm->cc_multidown
+#define MultiLeftCost(tty)     (tty)->Wcm->cc_multileft
+#define MultiRightCost(tty)    (tty)->Wcm->cc_multiright
 #endif
 
-#define cmat(row,col)  (curY = (row), curX = (col))
-#define cmplus(n)                                      \
-  {                                                    \
-    if ((curX += (n)) >= FrameCols && !MagicWrap)      \
-      {                                                        \
-       if (Wcm.cm_losewrap) losecursor ();             \
-       else if (AutoWrap) curX = 0, curY++;            \
-       else curX--;                                    \
-      }                                                        \
+#define cmat(tty,row,col)      (curY(tty) = (row), curX(tty) = (col))
+#define cmplus(tty,n)                                              \
+  {                                                                 \
+    if ((curX (tty) += (n)) >= FrameCols (tty) && !MagicWrap (tty)) \
+      {                                                             \
+       if ((tty)->Wcm->cm_losewrap) losecursor (tty);              \
+       else if (AutoWrap (tty)) curX (tty) = 0, curY (tty)++;      \
+       else curX (tty)--;                                          \
+      }                                                             \
   }
 
-#define losecursor()   (curX = -1, curY = -1)
+#define losecursor(tty)         (curX(tty) = -1, curY(tty) = -1)
 
 extern int cost;
 extern int evalcost ();
 
-extern void cmcheckmagic ();
-extern int cmputc ();
-extern void cmcostinit ();
-extern void cmgoto ();
-extern void Wcm_clear ();
-extern int Wcm_init ();
+#define emacs_tputs(tty, str, affcnt, putc) (current_tty = (tty), tputs (str, affcnt, putc))
+
+extern struct tty_display_info *current_tty;
+extern void cmcheckmagic P_ ((struct tty_display_info *));
+extern int cmputc P_ ((int));
+extern void cmcostinit P_ ((struct tty_display_info *));
+extern void cmgoto P_ ((struct tty_display_info *, int, int));
+extern void Wcm_clear P_ ((struct tty_display_info *));
+extern int Wcm_init P_ ((struct tty_display_info *));
 
 /* arch-tag: acc1535a-7136-49d6-b22d-9bc85702251b
    (do not change this comment) */
index 907521edd5cb4ecba56022fd2c9cd5eb9227396c..b6299097d55ed857092da067a9fcfc889eb6386b 100644 (file)
@@ -351,6 +351,8 @@ encode_coding_XXX (coding, source, destination, src_bytes, dst_bytes)
 #include "coding.h"
 #include "window.h"
 #include "intervals.h"
+#include "frame.h"
+#include "termhooks.h"
 
 #else  /* not emacs */
 
@@ -436,16 +438,10 @@ int inhibit_iso_escape_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.  */
-struct coding_system terminal_coding;
-
 /* Coding system to be used to encode text for terminal display when
    terminal coding system is nil.  */
 struct coding_system safe_terminal_coding;
 
-/* Coding system of what is sent from terminal keyboard.  */
-struct coding_system keyboard_coding;
-
 /* Default coding system to be used to write a file.  */
 struct coding_system default_buffer_file_coding;
 
@@ -4339,10 +4335,10 @@ detect_coding (coding, src, src_bytes)
 
 static int
 detect_eol_type (source, src_bytes, skip)
-     unsigned char *source;
+     const unsigned char *source;
      int src_bytes, *skip;
 {
-  unsigned char *src = source, *src_end = src + src_bytes;
+  const unsigned char *src = source, *src_end = src + src_bytes;
   unsigned char c;
   int total = 0;               /* How many end-of-lines are found so far.  */
   int eol_type = CODING_EOL_UNDECIDED;
@@ -4388,10 +4384,10 @@ detect_eol_type (source, src_bytes, skip)
 
 static int
 detect_eol_type_in_2_octet_form (source, src_bytes, skip, big_endian_p)
-     unsigned char *source;
+     const unsigned char *source;
      int src_bytes, *skip, big_endian_p;
 {
-  unsigned char *src = source, *src_end = src + src_bytes;
+  const unsigned char *src = source, *src_end = src + src_bytes;
   unsigned int c1, c2;
   int total = 0;               /* How many end-of-lines are found so far.  */
   int eol_type = CODING_EOL_UNDECIDED;
@@ -7368,21 +7364,23 @@ Return the corresponding character code in Big5.  */)
 }
 \f
 DEFUN ("set-terminal-coding-system-internal", Fset_terminal_coding_system_internal,
-       Sset_terminal_coding_system_internal, 1, 1, 0,
+       Sset_terminal_coding_system_internal, 1, 2, 0,
        doc: /* Internal use only.  */)
-     (coding_system)
+     (coding_system, terminal)
      Lisp_Object coding_system;
+     Lisp_Object terminal;
 {
+  struct coding_system *terminal_coding = TERMINAL_TERMINAL_CODING (get_terminal (terminal, 1));
   CHECK_SYMBOL (coding_system);
-  setup_coding_system (Fcheck_coding_system (coding_system), &terminal_coding);
+  setup_coding_system (Fcheck_coding_system (coding_system), terminal_coding);
   /* We had better not send unsafe characters to terminal.  */
-  terminal_coding.mode |= CODING_MODE_INHIBIT_UNENCODABLE_CHAR;
+  terminal_coding->mode |= CODING_MODE_INHIBIT_UNENCODABLE_CHAR;
   /* Character composition should be disabled.  */
-  terminal_coding.composing = COMPOSITION_DISABLED;
+  terminal_coding->composing = COMPOSITION_DISABLED;
   /* Error notification should be suppressed.  */
-  terminal_coding.suppress_error = 1;
-  terminal_coding.src_multibyte = 1;
-  terminal_coding.dst_multibyte = 0;
+  terminal_coding->suppress_error = 1;
+  terminal_coding->src_multibyte = 1;
+  terminal_coding->dst_multibyte = 0;
   return Qnil;
 }
 
@@ -7405,32 +7403,42 @@ DEFUN ("set-safe-terminal-coding-system-internal", Fset_safe_terminal_coding_sys
 }
 
 DEFUN ("terminal-coding-system", Fterminal_coding_system,
-       Sterminal_coding_system, 0, 0, 0,
-       doc: /* Return coding system specified for terminal output.  */)
-     ()
+       Sterminal_coding_system, 0, 1, 0,
+       doc: /* Return coding system specified for terminal output on the given terminal.
+TERMINAL may be a terminal id, a frame, or nil for the selected
+frame's terminal device.  */)
+     (terminal)
+     Lisp_Object terminal;
 {
-  return terminal_coding.symbol;
+  return TERMINAL_TERMINAL_CODING (get_terminal (terminal, 1))->symbol;
 }
 
 DEFUN ("set-keyboard-coding-system-internal", Fset_keyboard_coding_system_internal,
-       Sset_keyboard_coding_system_internal, 1, 1, 0,
+       Sset_keyboard_coding_system_internal, 1, 2, 0,
        doc: /* Internal use only.  */)
-     (coding_system)
+     (coding_system, terminal)
      Lisp_Object coding_system;
+     Lisp_Object terminal;
 {
+  struct terminal *t = get_terminal (terminal, 1);
   CHECK_SYMBOL (coding_system);
-  setup_coding_system (Fcheck_coding_system (coding_system), &keyboard_coding);
+
+  setup_coding_system (Fcheck_coding_system (coding_system),
+                       TERMINAL_KEYBOARD_CODING (t));
   /* Character composition should be disabled.  */
-  keyboard_coding.composing = COMPOSITION_DISABLED;
+  TERMINAL_KEYBOARD_CODING (t)->composing = COMPOSITION_DISABLED;
   return Qnil;
 }
 
 DEFUN ("keyboard-coding-system", Fkeyboard_coding_system,
-       Skeyboard_coding_system, 0, 0, 0,
-       doc: /* Return coding system specified for decoding keyboard input.  */)
-     ()
+       Skeyboard_coding_system, 0, 1, 0,
+       doc: /* Return coding system for decoding keyboard input on TERMINAL.
+TERMINAL may be a terminal id, a frame, or nil for the selected
+frame's terminal device.  */)
+     (terminal)
+     Lisp_Object terminal;
 {
-  return keyboard_coding.symbol;
+  return TERMINAL_KEYBOARD_CODING (get_terminal (terminal, 1))->symbol;
 }
 
 \f
@@ -7464,6 +7472,8 @@ They may specify a coding system, a cons of coding systems,
 or a function symbol to call.
 In the last case, we call the function with one argument,
 which is a list of all the arguments given to this function.
+If the function can't decide a coding system, it can return
+`undecided' so that the normal code-detection is performed.
 
 If OPERATION is `insert-file-contents', the argument corresponding to
 TARGET may be a cons (FILENAME . BUFFER).  In that case, FILENAME is a
@@ -7693,8 +7703,6 @@ init_coding_once ()
   iso_code_class[ISO_CODE_SS3] = ISO_single_shift_3;
   iso_code_class[ISO_CODE_CSI] = ISO_control_sequence_introducer;
 
-  setup_coding_system (Qnil, &keyboard_coding);
-  setup_coding_system (Qnil, &terminal_coding);
   setup_coding_system (Qnil, &safe_terminal_coding);
   setup_coding_system (Qnil, &default_buffer_file_coding);
 
@@ -7967,7 +7975,9 @@ and the cdr part is used for encoding.
 If VAL is a function symbol, the function must return a coding system
 or a cons of coding systems which are used as above.  The function is
 called with an argument that is a list of the arguments with which
-`find-operation-coding-system' was called.
+`find-operation-coding-system' was called.  If the function can't decide
+a coding system, it can return `undecided' so that the normal
+code-detection is performed.
 
 See also the function `find-operation-coding-system'
 and the variable `auto-coding-alist'.  */);
index 2efcd4f47e2a740f8605c06df517572e6602b907..a53a74ec161ca5ab3245e72fe2e52bfbb80da29e 100644 (file)
@@ -696,20 +696,10 @@ extern Lisp_Object Vlocale_coding_system;
    the subprocess output.  */
 extern int inherit_process_coding_system;
 
-/* Coding-system to be used for encoding terminal output.  This
-   structure contains information of a coding-system specified by the
-   function `set-terminal-coding-system'.  */
-extern struct coding_system terminal_coding;
-
 /* Coding system to be used to encode text for terminal display when
    terminal coding system is nil.  */
 extern struct coding_system safe_terminal_coding;
 
-/* Coding-system of what is sent from terminal keyboard.  This
-   structure contains information of a coding-system specified by the
-   function `set-keyboard-coding-system'.  */
-extern struct coding_system keyboard_coding;
-
 /* Default coding system to be used to write a file.  */
 extern struct coding_system default_buffer_file_coding;
 
index 158ae109aae4e1196c13c843c8c984e1c6726b65..ed3a6b8f27330c6221ee54fd9dd9ac05db4d22a7 100644 (file)
@@ -228,9 +228,13 @@ Boston, MA 02110-1301, USA.  */
 /* Define to 1 if you have the `get_current_dir_name' function. */
 #undef HAVE_GET_CURRENT_DIR_NAME
 
-/* Define to 1 if you have the ungif library (-lungif). */
+/* Define to 1 if you have a gif library (default -lgif; otherwise specify
+   with LIBGIF). */
 #undef HAVE_GIF
 
+/* Define to 1 if you have the gpm library (-lgpm). */
+#undef HAVE_GPM
+
 /* Define to 1 if you have the `grantpt' function. */
 #undef HAVE_GRANTPT
 
@@ -494,6 +498,9 @@ Boston, MA 02110-1301, USA.  */
 /* Define to 1 if you have the `rmdir' function. */
 #undef HAVE_RMDIR
 
+/* Define to 1 if using librsvg. */
+#undef HAVE_RSVG
+
 /* Define to 1 if you have the `select' function. */
 #undef HAVE_SELECT
 
@@ -765,6 +772,9 @@ Boston, MA 02110-1301, USA.  */
    Solaris, for example). */
 #undef LD_SWITCH_X_SITE_AUX
 
+/* Compiler option to link with the gif library (if not -lgif). */
+#undef LIBGIF
+
 /* Define to 1 if localtime caches TZ. */
 #undef LOCALTIME_CACHE
 
@@ -919,6 +929,13 @@ Boston, MA 02110-1301, USA.  */
 #define HAVE_MOUSE
 #endif
 
+/* Multi-tty support relies on MULTI_KBOARD.  It seems safe to turn it
+   on unconditionally.  Note that src/s/darwin.h disables this at
+   present.  */
+#ifndef MULTI_KBOARD
+#define MULTI_KBOARD
+#endif
+
 /* If we're using the Carbon API on Mac OS X, define a few more
    variables as well.  */
 #ifdef HAVE_CARBON
index f954116f32e31b741304a9fe2ff54af529e274da..c8c40aa6df0d8ba1e29b05db5d133e6256025b3f 100644 (file)
@@ -30,6 +30,7 @@ Boston, MA 02110-1301, USA.  */
 #include "keyboard.h"
 #include "frame.h"
 #include "syssignal.h"
+#include "termhooks.h"  /* For FRAME_KBOARD reference in y-or-n-p. */
 
 #ifdef STDC_HEADERS
 #include <float.h>
@@ -758,12 +759,30 @@ Value, if non-nil, is a list \(interactive SPEC).  */)
      (cmd)
      Lisp_Object cmd;
 {
-  Lisp_Object fun = indirect_function (cmd);
+  Lisp_Object fun = indirect_function (cmd); /* Check cycles.  */
+
+  if (NILP (fun) || EQ (fun, Qunbound))
+    return Qnil;
+
+  /* Use an `interactive-form' property if present, analogous to the
+     function-documentation property. */
+  fun = cmd;
+  while (SYMBOLP (fun))
+    {
+      Lisp_Object tmp = Fget (fun, intern ("interactive-form"));
+      if (!NILP (tmp))
+       return tmp;
+      else
+       fun = Fsymbol_function (fun);
+    }
 
   if (SUBRP (fun))
     {
-      if (XSUBR (fun)->prompt)
-       return list2 (Qinteractive, build_string (XSUBR (fun)->prompt));
+      char *spec = XSUBR (fun)->intspec;
+      if (spec)
+       return list2 (Qinteractive,
+                     (*spec != '(') ? build_string (spec) :
+                     Fcar (Fread_from_string (build_string (spec), Qnil, Qnil)));
     }
   else if (COMPILEDP (fun))
     {
@@ -866,7 +885,18 @@ do_symval_forwarding (valcontents)
 
       case Lisp_Misc_Kboard_Objfwd:
        offset = XKBOARD_OBJFWD (valcontents)->offset;
-       return *(Lisp_Object *)(offset + (char *)current_kboard);
+        /* We used to simply use current_kboard here, but from Lisp
+           code, it's value is often unexpected.  It seems nicer to
+           allow constructions like this to work as intuitively expected:
+
+               (with-selected-frame frame
+                   (define-key local-function-map "\eOP" [f1]))
+
+           On the other hand, this affects the semantics of
+           last-command and real-last-command, and people may rely on
+           that.  I took a quick look at the Lisp codebase, and I
+           don't think anything will break.  --lorentey  */
+       return *(Lisp_Object *)(offset + (char *)FRAME_KBOARD (SELECTED_FRAME ()));
       }
   return valcontents;
 }
@@ -954,7 +984,7 @@ store_symval_forwarding (symbol, valcontents, newval, buf)
 
        case Lisp_Misc_Kboard_Objfwd:
          {
-           char *base = (char *) current_kboard;
+           char *base = (char *) FRAME_KBOARD (SELECTED_FRAME ());
            char *p = base + XKBOARD_OBJFWD (valcontents)->offset;
            *(Lisp_Object *) p = newval;
          }
@@ -1100,7 +1130,7 @@ find_symbol_value (symbol)
 
        case Lisp_Misc_Kboard_Objfwd:
          return *(Lisp_Object *)(XKBOARD_OBJFWD (valcontents)->offset
-                                 + (char *)current_kboard);
+                                 + (char *)FRAME_KBOARD (SELECTED_FRAME ()));
        }
     }
 
@@ -1861,6 +1891,51 @@ If the current binding is global (the default), the value is nil.  */)
 
   return Qnil;
 }
+
+/* This code is disabled now that we use the selected frame to return
+   keyboard-local-values. */
+#if 0
+extern struct terminal *get_terminal P_ ((Lisp_Object display, int));
+
+DEFUN ("terminal-local-value", Fterminal_local_value, Sterminal_local_value, 2, 2, 0,
+       doc: /* Return the terminal-local value of SYMBOL on TERMINAL.
+If SYMBOL is not a terminal-local variable, then return its normal
+value, like `symbol-value'.
+
+TERMINAL may be a terminal id, a frame, or nil (meaning the
+selected frame's terminal device).  */)
+  (symbol, terminal)
+     Lisp_Object symbol;
+     Lisp_Object terminal;
+{
+  Lisp_Object result;
+  struct terminal *t = get_terminal (terminal, 1);
+  push_kboard (t->kboard);
+  result = Fsymbol_value (symbol);
+  pop_kboard ();
+  return result;
+}
+
+DEFUN ("set-terminal-local-value", Fset_terminal_local_value, Sset_terminal_local_value, 3, 3, 0,
+       doc: /* Set the terminal-local binding of SYMBOL on TERMINAL to VALUE.
+If VARIABLE is not a terminal-local variable, then set its normal
+binding, like `set'.
+
+TERMINAL may be a terminal id, a frame, or nil (meaning the
+selected frame's terminal device).  */)
+  (symbol, terminal, value)
+     Lisp_Object symbol;
+     Lisp_Object terminal;
+     Lisp_Object value;
+{
+  Lisp_Object result;
+  struct terminal *t = get_terminal (terminal, 1);
+  push_kboard (d->kboard);
+  result = Fset (symbol, value);
+  pop_kboard ();
+  return result;
+}
+#endif
 \f
 /* Find the function at the end of a chain of symbol function indirections.  */
 
@@ -3320,6 +3395,10 @@ syms_of_data ()
   defsubr (&Slocal_variable_p);
   defsubr (&Slocal_variable_if_set_p);
   defsubr (&Svariable_binding_locus);
+#if 0                           /* XXX Remove this. --lorentey */
+  defsubr (&Sterminal_local_value);
+  defsubr (&Sset_terminal_local_value);
+#endif
   defsubr (&Saref);
   defsubr (&Saset);
   defsubr (&Snumber_to_string);
index 9e899f9ccb2f3466a4957733dba513831bbf54fd..fd4d8ebec9da9b35545333b7d1b82249dba0d835 100644 (file)
@@ -680,9 +680,9 @@ struct glyph_row
   short used[LAST_AREA];
 
   /* Window-relative x and y-position of the top-left corner of this
-     row.  If y < 0, this means that abs (y) pixels of the row are
+     row.  If y < 0, this means that eabs (y) pixels of the row are
      invisible because it is partially visible at the top of a window.
-     If x < 0, this means that abs (x) pixels of the first glyph of
+     If x < 0, this means that eabs (x) pixels of the first glyph of
      the text area of the row are invisible because the glyph is
      partially visible.  */
   int x, y;
@@ -1029,13 +1029,8 @@ extern int fonts_changed_p;
 
 extern struct glyph space_glyph;
 
-/* Frame being updated by update_window/update_frame.  */
-
-extern struct frame *updating_frame;
-
 /* Window being updated by update_window.  This is non-null as long as
-   update_window has not finished, and null otherwise.  It's role is
-   analogous to updating_frame.  */
+   update_window has not finished, and null otherwise.  */
 
 extern struct window *updated_window;
 
@@ -1355,7 +1350,7 @@ struct glyph_string
        DESCENT = FONT->descent
        HEIGHT = FONT_HEIGHT (FONT)
        F_DESCENT = (FRAME_FONT (F)->descent
-                    - F->output_data.x->baseline_offset)
+                    - F->terminal->output_data.x->baseline_offset)
        F_HEIGHT = FRAME_LINE_HEIGHT (F)
 */
 
@@ -2184,16 +2179,16 @@ struct it
 /* Call produce_glyphs or produce_glyphs_hook, if set.  Shortcut to
    avoid the function call overhead.  */
 
-#define PRODUCE_GLYPHS(IT)                     \
-     do {                                      \
-       extern int inhibit_free_realized_faces; \
-       if (rif != NULL)                                \
-        rif->produce_glyphs ((IT));            \
-       else                                    \
-        produce_glyphs ((IT));                 \
-       if ((IT)->glyph_row != NULL)            \
-        inhibit_free_realized_faces = 1;       \
-     } while (0)
+#define PRODUCE_GLYPHS(IT)                              \
+  do {                                                  \
+    extern int inhibit_free_realized_faces;             \
+    if (FRAME_RIF ((IT)->f) != NULL)                    \
+      FRAME_RIF ((IT)->f)->produce_glyphs ((IT));       \
+    else                                                \
+      produce_glyphs ((IT));                            \
+    if ((IT)->glyph_row != NULL)                        \
+      inhibit_free_realized_faces = 1;                  \
+  } while (0)
 
 /* Bit-flags indicating what operation move_it_to should perform.  */
 
@@ -2367,10 +2362,6 @@ struct redisplay_interface
 #endif /* HAVE_WINDOW_SYSTEM */
 };
 
-/* The current interface for window-based redisplay.  */
-
-extern struct redisplay_interface *rif;
-
 \f
 /***********************************************************************
                                Images
@@ -2674,8 +2665,6 @@ void init_iterator_to_row_start P_ ((struct it *, struct window *,
                                     struct glyph_row *));
 int get_next_display_element P_ ((struct it *));
 void set_iterator_to_next P_ ((struct it *, int));
-void produce_glyphs P_ ((struct it *));
-void produce_special_glyphs P_ ((struct it *, enum display_element_type));
 void start_display P_ ((struct it *, struct window *, struct text_pos));
 void move_it_to P_ ((struct it *, int, int, int, int, int));
 void move_it_vertically P_ ((struct it *, int));
@@ -2773,11 +2762,11 @@ int update_window_fringes P_ ((struct window *, int));
 void compute_fringe_widths P_ ((struct frame *, int));
 
 #ifdef WINDOWS_NT
-void w32_init_fringe P_ ((void));
+void w32_init_fringe P_ ((struct redisplay_interface *));
 void w32_reset_fringes P_ ((void));
 #endif
 #ifdef MAC_OS
-void mac_init_fringe P_ ((void));
+void mac_init_fringe P_ ((struct redisplay_interface *));
 #endif
 
 /* Defined in image.c */
@@ -2822,11 +2811,11 @@ int image_ascent P_ ((struct image *, struct face *, struct glyph_slice *));
 
 /* Defined in sysdep.c */
 
-void get_frame_size P_ ((int *, int *));
+void get_tty_size P_ ((int, int *, int *));
 void request_sigio P_ ((void));
 void unrequest_sigio P_ ((void));
-int tabs_safe_p P_ ((void));
-void init_baud_rate P_ ((void));
+int tabs_safe_p P_ ((int));
+void init_baud_rate P_ ((int));
 void init_sigio P_ ((int));
 
 /* Defined in xfaces.c */
@@ -2965,8 +2954,6 @@ void clear_glyph_row P_ ((struct glyph_row *));
 void prepare_desired_row P_ ((struct glyph_row *));
 int line_hash_code P_ ((struct glyph_row *));
 void set_window_update_flags P_ ((struct window *, int));
-void write_glyphs P_ ((struct glyph *, int));
-void insert_glyphs P_ ((struct glyph *, int));
 void redraw_frame P_ ((struct frame *));
 void redraw_garbaged_frames P_ ((void));
 int scroll_cost P_ ((struct frame *, int, int, int));
@@ -2983,31 +2970,44 @@ void syms_of_display P_ ((void));
 extern Lisp_Object Qredisplay_dont_pause;
 GLYPH spec_glyph_lookup_face P_ ((struct window *, GLYPH));
 
-/* Defined in term.c */
+/* Defined in terminal.c */
 
-extern void ring_bell P_ ((void));
-extern void set_terminal_modes P_ ((void));
-extern void reset_terminal_modes P_ ((void));
+extern void ring_bell P_ ((struct frame *));
 extern void update_begin P_ ((struct frame *));
 extern void update_end P_ ((struct frame *));
-extern void set_terminal_window P_ ((int));
-extern void set_scroll_region P_ ((int, int));
-extern void turn_off_insert P_ ((void));
-extern void turn_off_highlight P_ ((void));
-extern void background_highlight P_ ((void));
-extern void clear_frame P_ ((void));
-extern void clear_end_of_line P_ ((int));
-extern void clear_end_of_line_raw P_ ((int));
-extern void delete_glyphs P_ ((int));
-extern void ins_del_lines P_ ((int, int));
+extern void set_terminal_window P_ ((struct frame *, int));
+extern void cursor_to P_ ((struct frame *, int, int));
+extern void raw_cursor_to P_ ((struct frame *, int, int));
+extern void clear_to_end P_ ((struct frame *));
+extern void clear_frame P_ ((struct frame *));
+extern void clear_end_of_line P_ ((struct frame *, int));
+extern void write_glyphs P_ ((struct frame *, struct glyph *, int));
+extern void insert_glyphs P_ ((struct frame *, struct glyph *, int));
+extern void delete_glyphs P_ ((struct frame *, int));
+extern void ins_del_lines P_ ((struct frame *, int, int));
+
+extern struct terminal *init_initial_terminal P_ ((void));
+
+
+/* Defined in term.c */
+
+extern void tty_set_terminal_modes P_ ((struct terminal *));
+extern void tty_reset_terminal_modes P_ ((struct terminal *));
+extern void tty_turn_off_insert P_ ((struct tty_display_info *));
+extern void tty_turn_off_highlight P_ ((struct tty_display_info *));
 extern int string_cost P_ ((char *));
 extern int per_line_cost P_ ((char *));
 extern void calculate_costs P_ ((struct frame *));
+extern void produce_glyphs P_ ((struct it *));
+extern void produce_special_glyphs P_ ((struct it *, enum display_element_type));
+extern int tty_capable_p P_ ((struct tty_display_info *, unsigned, unsigned long, unsigned long));
 extern void set_tty_color_mode P_ ((struct frame *, Lisp_Object));
-extern void tty_setup_colors P_ ((int));
-extern void term_init P_ ((char *));
-void cursor_to P_ ((int, int));
-extern int tty_capable_p P_ ((struct frame *, unsigned, unsigned long, unsigned long));
+extern struct terminal *get_tty_terminal P_ ((Lisp_Object, int));
+extern struct terminal *get_named_tty P_ ((char *));
+EXFUN (Ftty_type, 1);
+extern void create_tty_output P_ ((struct frame *));
+extern struct terminal *init_tty P_ ((char *, char *, int));
+
 
 /* Defined in scroll.c */
 
index 1502ffd753cf3b692232e19fda80a94f507ce828..1778d5c818b6227e4e97f351b05796d400cff748 100644 (file)
@@ -32,7 +32,6 @@ Boston, MA 02110-1301, USA.  */
 #include "lisp.h"
 #include "termchar.h"
 #include "termopts.h"
-#include "termhooks.h"
 /* cm.h must come after dispextern.h on Windows.  */
 #include "dispextern.h"
 #include "cm.h"
@@ -40,6 +39,7 @@ Boston, MA 02110-1301, USA.  */
 #include "charset.h"
 #include "keyboard.h"
 #include "frame.h"
+#include "termhooks.h"
 #include "window.h"
 #include "commands.h"
 #include "disptab.h"
@@ -238,9 +238,9 @@ int inverse_video;
 EMACS_INT baud_rate;
 
 /* Either nil or a symbol naming the window system under which Emacs
-   is running.  */
+   creates the first frame.  */
 
-Lisp_Object Vwindow_system;
+Lisp_Object Vinitial_window_system;
 
 /* Version number of X windows: 10, 11 or nil.  */
 
@@ -282,14 +282,6 @@ Lisp_Object selected_frame;
 
 struct frame *last_nonminibuf_frame;
 
-/* Stdio stream being used for copy of all output.  */
-
-FILE *termscript;
-
-/* Structure for info on cursor positioning.  */
-
-struct cm Wcm;
-
 /* 1 means SIGWINCH happened when not safe.  */
 
 int delayed_size_change;
@@ -328,11 +320,6 @@ int glyph_pool_count;
 
 static struct frame *frame_matrix_frame;
 
-/* Current interface for window-based redisplay.  Set from init_xterm.
-   A null value means we are not using window-based redisplay.  */
-
-struct redisplay_interface *rif;
-
 /* Non-zero means that fonts have been loaded since the last glyph
    matrix adjustments.  Redisplay must stop, and glyph matrices must
    be adjusted when this flag becomes non-zero during display.  The
@@ -1423,7 +1410,7 @@ line_hash_code (row)
        {
          int c = glyph->u.ch;
          int face_id = glyph->face_id;
-         if (must_write_spaces)
+         if (FRAME_MUST_WRITE_SPACES (SELECTED_FRAME ())) /* XXX Is SELECTED_FRAME OK here? */
            c -= SPACEGLYPH;
          hash = (((hash << 4) + (hash >> 24)) & 0x0fffffff) + c;
          hash = (((hash << 4) + (hash >> 24)) & 0x0fffffff) + face_id;
@@ -1455,7 +1442,7 @@ line_draw_cost (matrix, vpos)
   int glyph_table_len = GLYPH_TABLE_LENGTH;
 
   /* Ignore trailing and leading spaces if we can.  */
-  if (!must_write_spaces)
+  if (!FRAME_MUST_WRITE_SPACES (SELECTED_FRAME ())) /* XXX Is SELECTED_FRAME OK here? */
     {
       /* Skip from the end over trailing spaces.  */
       while (end > beg && CHAR_GLYPH_SPACE_P (*(end - 1)))
@@ -1671,8 +1658,10 @@ realloc_glyph_pool (pool, matrix_dim)
 #if GLYPH_DEBUG
 
 
-/* Flush standard output.  This is sometimes useful to call from
-   the debugger.  */
+/* Flush standard output.  This is sometimes useful to call from the debugger.
+   XXX Maybe this should be changed to flush the current terminal instead of
+   stdout.
+*/
 
 void
 flush_stdout ()
@@ -2004,7 +1993,7 @@ required_matrix_height (w)
   if (FRAME_WINDOW_P (f))
     {
       int ch_height = FRAME_SMALLEST_FONT_HEIGHT (f);
-      int window_pixel_height = window_box_height (w) + abs (w->vscroll);
+      int window_pixel_height = window_box_height (w) + eabs (w->vscroll);
       return (((window_pixel_height + ch_height - 1)
               / ch_height) * w->nrows_scale_factor
              /* One partially visible line at the top and
@@ -3393,12 +3382,15 @@ DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 1, 1, 0,
     return Qnil;
 
   update_begin (f);
+#ifdef MSDOS
   if (FRAME_MSDOS_P (f))
-    set_terminal_modes ();
-  clear_frame ();
+    set_terminal_modes (FRAME_TERMINAL (f));
+#endif
+  clear_frame (f);
   clear_current_matrices (f);
   update_end (f);
-  fflush (stdout);
+  if (FRAME_TERMCAP_P (f))
+    fflush (FRAME_TTY (f)->output);
   windows_or_buffers_changed++;
   /* Mark all windows as inaccurate, so that every window will have
      its redisplay done.  */
@@ -3539,7 +3531,7 @@ direct_output_for_insert (g)
 
   /* If we can't insert glyphs, we can use this method only
      at the end of a line.  */
-  if (!char_ins_del_ok)
+  if (!FRAME_CHAR_INS_DEL_OK (f))
     if (PT != ZV && FETCH_BYTE (PT_BYTE) != '\n')
       return 0;
 
@@ -3689,24 +3681,24 @@ direct_output_for_insert (g)
   updated_row = glyph_row;
   updated_area = TEXT_AREA;
   update_begin (f);
-  if (rif)
+  if (FRAME_RIF (f))
     {
-      rif->update_window_begin_hook (w);
+      FRAME_RIF (f)->update_window_begin_hook (w);
 
       if (glyphs == end - n
          /* In front of a space added by append_space.  */
          || (glyphs == end - n - 1
              && (end - n)->charpos <= 0))
-       rif->write_glyphs (glyphs, n);
+       FRAME_RIF (f)->write_glyphs (glyphs, n);
       else
-       rif->insert_glyphs (glyphs, n);
+       FRAME_RIF (f)->insert_glyphs (glyphs, n);
     }
   else
     {
       if (glyphs == end - n)
-       write_glyphs (glyphs, n);
+       write_glyphs (f, glyphs, n);
       else
-       insert_glyphs (glyphs, n);
+       insert_glyphs (f, glyphs, n);
     }
 
   w->cursor.hpos += n;
@@ -3719,8 +3711,8 @@ direct_output_for_insert (g)
      a frame matrix is used, cursor_to expects frame coordinates,
      and the X and Y parameters are not used.  */
   if (window_redisplay_p)
-    rif->cursor_to (w->cursor.vpos, w->cursor.hpos,
-                   w->cursor.y, w->cursor.x);
+    FRAME_RIF (f)->cursor_to (w->cursor.vpos, w->cursor.hpos,
+                              w->cursor.y, w->cursor.x);
   else
     {
       int x, y;
@@ -3729,18 +3721,19 @@ direct_output_for_insert (g)
              ? XFASTINT (w->left_margin_cols)
              : 0));
       y = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos);
-      cursor_to (y, x);
+      cursor_to (f, y, x);
     }
 
 #ifdef HAVE_WINDOW_SYSTEM
   update_window_fringes (w, 0);
 #endif
 
-  if (rif)
-    rif->update_window_end_hook (w, 1, 0);
+  if (FRAME_RIF (f))
+    FRAME_RIF (f)->update_window_end_hook (w, 1, 0);
   update_end (f);
   updated_row = NULL;
-  fflush (stdout);
+  if (FRAME_TERMCAP_P (f))
+    fflush (FRAME_TTY (f)->output);
 
   TRACE ((stderr, "direct output for insert\n"));
   mark_window_display_accurate (it.window, 1);
@@ -3818,8 +3811,8 @@ direct_output_forward_char (n)
           && w->cursor.hpos < w->desired_matrix->matrix_w);
 
   if (FRAME_WINDOW_P (f))
-    rif->cursor_to (w->cursor.vpos, w->cursor.hpos,
-                   w->cursor.y, w->cursor.x);
+    FRAME_RIF (f)->cursor_to (w->cursor.vpos, w->cursor.hpos,
+                              w->cursor.y, w->cursor.x);
   else
     {
       int x, y;
@@ -3828,10 +3821,11 @@ direct_output_forward_char (n)
              ? XFASTINT (w->left_margin_cols)
              : 0));
       y = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos);
-      cursor_to (y, x);
+      cursor_to (f, y, x);
     }
 
-  fflush (stdout);
+  if (FRAME_TERMCAP_P (f))
+    fflush (FRAME_TTY (f)->output);
   redisplay_performed_directly_p = 1;
   return 1;
 }
@@ -3930,14 +3924,14 @@ update_frame (f, force_p, inhibit_hairy_id_p)
       update_end (f);
 
       /* This flush is a performance bottleneck under X,
-        and it doesn't seem to be necessary anyway (in general).
+        and it doesn't seem to be necessary anyway (in general).
          It is necessary when resizing the window with the mouse, or
-        at least the fringes are not redrawn in a timely manner.  ++kfs */
+        at least the fringes are not redrawn in a timely manner.  ++kfs */
       if (f->force_flush_display_p)
-       {
-         rif->flush_display (f);
-         f->force_flush_display_p = 0;
-       }
+       {
+         FRAME_RIF (f)->flush_display (f);
+         f->force_flush_display_p = 0;
+       }
     }
   else
     {
@@ -3953,9 +3947,12 @@ update_frame (f, force_p, inhibit_hairy_id_p)
       paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p);
       update_end (f);
 
-      if (termscript)
-       fflush (termscript);
-      fflush (stdout);
+      if (FRAME_TERMCAP_P (f))
+        {
+          if (FRAME_TTY (f)->termscript)
+            fflush (FRAME_TTY (f)->termscript);
+          fflush (FRAME_TTY (f)->output);
+        }
 
       /* Check window matrices for lost pointers.  */
 #if GLYPH_DEBUG
@@ -4060,7 +4057,8 @@ redraw_overlapped_rows (w, yb)
      int yb;
 {
   int i;
-
+  struct frame *f = XFRAME (WINDOW_FRAME (w));
+  
   /* If rows overlapping others have been changed, the rows being
      overlapped have to be redrawn.  This won't draw lines that have
      already been drawn in update_window_line because overlapped_p in
@@ -4083,10 +4081,12 @@ redraw_overlapped_rows (w, yb)
            {
              updated_row = row;
              updated_area = area;
-             rif->cursor_to (i, 0, row->y, area == TEXT_AREA ? row->x : 0);
+             FRAME_RIF (f)->cursor_to (i, 0, row->y,
+                                        area == TEXT_AREA ? row->x : 0);
              if (row->used[area])
-               rif->write_glyphs (row->glyphs[area], row->used[area]);
-             rif->clear_end_of_line (-1);
+               FRAME_RIF (f)->write_glyphs (row->glyphs[area],
+                                             row->used[area]);
+             FRAME_RIF (f)->clear_end_of_line (-1);
            }
 
          row->overlapped_p = 0;
@@ -4108,7 +4108,8 @@ redraw_overlapping_rows (w, yb)
 {
   int i, bottom_y;
   struct glyph_row *row;
-
+  struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
+  
   for (i = 0; i < w->current_matrix->nrows; ++i)
     {
       row = w->current_matrix->rows + i;
@@ -4199,10 +4200,10 @@ update_window (w, force_p)
 #endif
   extern int input_pending;
   extern Lisp_Object do_mouse_tracking;
+  struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
 #if GLYPH_DEBUG
   /* Check that W's frame doesn't have glyph matrices.  */
   xassert (FRAME_WINDOW_P (XFRAME (WINDOW_FRAME (w))));
-  xassert (updating_frame != NULL);
 #endif
 
   /* Check pending input the first time so that we can quickly return.  */
@@ -4387,6 +4388,7 @@ update_marginal_area (w, area, vpos)
      int area, vpos;
 {
   struct glyph_row *desired_row = MATRIX_ROW (w->desired_matrix, vpos);
+  struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
 
   /* Let functions in xterm.c know what area subsequent X positions
      will be relative to.  */
@@ -4412,6 +4414,7 @@ update_text_area (w, vpos)
 {
   struct glyph_row *current_row = MATRIX_ROW (w->current_matrix, vpos);
   struct glyph_row *desired_row = MATRIX_ROW (w->desired_matrix, vpos);
+  struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
   int changed_p = 0;
 
   /* Let functions in xterm.c know what area subsequent X positions
@@ -4647,6 +4650,7 @@ update_window_line (w, vpos, mouse_face_overwritten_p)
 {
   struct glyph_row *current_row = MATRIX_ROW (w->current_matrix, vpos);
   struct glyph_row *desired_row = MATRIX_ROW (w->desired_matrix, vpos);
+  struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
   int changed_p = 0;
 
   /* Set the row being updated.  This is important to let xterm.c
@@ -4715,6 +4719,7 @@ set_window_cursor_after_update (w)
      struct window *w;
 {
   struct frame *f = XFRAME (w->frame);
+  struct redisplay_interface *rif = FRAME_RIF (f);
   int cx, cy, vpos, hpos;
 
   /* Not intended for frame matrix updates.  */
@@ -4938,6 +4943,7 @@ scrolling_window (w, header_line_p)
   int i, j, first_old, first_new, last_old, last_new;
   int nruns, nbytes, n, run_idx;
   struct row_entry *entry;
+  struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
 
   /* Skip over rows equal at the start.  */
   for (i = header_line_p ? 1 : 0; i < current_matrix->nrows - 1; ++i)
@@ -5262,7 +5268,7 @@ update_frame_1 (f, force_p, inhibit_id_p)
 #endif
 
   /* If we cannot insert/delete lines, it's no use trying it.  */
-  if (!line_ins_del_ok)
+  if (!FRAME_LINE_INS_DEL_OK (f))
     inhibit_id_p = 1;
 
   /* See if any of the desired lines are enabled; don't compute for
@@ -5290,18 +5296,18 @@ update_frame_1 (f, force_p, inhibit_id_p)
                 Also flush out if likely to have more than 1k buffered
                 otherwise.   I'm told that some telnet connections get
                 really screwed by more than 1k output at once.  */
-             int outq = PENDING_OUTPUT_COUNT (stdout);
+             int outq = PENDING_OUTPUT_COUNT (FRAME_TTY (f)->output);
              if (outq > 900
                  || (outq > 20 && ((i - 1) % preempt_count == 0)))
                {
-                 fflush (stdout);
+                 fflush (FRAME_TTY (f)->output);
                  if (preempt_count == 1)
                    {
 #ifdef EMACS_OUTQSIZE
                      if (EMACS_OUTQSIZE (0, &outq) < 0)
                        /* Probably not a tty.  Ignore the error and reset
                           the outq count.  */
-                       outq = PENDING_OUTPUT_COUNT (stdout);
+                       outq = PENDING_OUTPUT_COUNT (FRAME_TTY (f->output));
 #endif
                      outq *= 10;
                      if (baud_rate <= outq && baud_rate > 0)
@@ -5404,7 +5410,7 @@ update_frame_1 (f, force_p, inhibit_id_p)
                }
            }
 
-         cursor_to (row, col);
+         cursor_to (f, row, col);
        }
       else
        {
@@ -5426,7 +5432,7 @@ update_frame_1 (f, force_p, inhibit_id_p)
                x += XFASTINT (w->left_margin_cols);
 
              /* x = max (min (x, FRAME_TOTAL_COLS (f) - 1), 0); */
-             cursor_to (y, x);
+             cursor_to (f, y, x);
            }
        }
     }
@@ -5495,21 +5501,23 @@ scrolling (frame)
     }
 
   /* If changed lines are few, don't allow preemption, don't scroll.  */
-  if ((!scroll_region_ok && changed_lines < baud_rate / 2400)
+  if ((!FRAME_SCROLL_REGION_OK (frame)
+       && changed_lines < baud_rate / 2400)
       || unchanged_at_bottom == FRAME_LINES (frame))
     return 1;
 
   window_size = (FRAME_LINES (frame) - unchanged_at_top
                 - unchanged_at_bottom);
 
-  if (scroll_region_ok)
+  if (FRAME_SCROLL_REGION_OK (frame))
     free_at_end_vpos -= unchanged_at_bottom;
-  else if (memory_below_frame)
+  else if (FRAME_MEMORY_BELOW_FRAME (frame))
     free_at_end_vpos = -1;
 
   /* If large window, fast terminal and few lines in common between
      current frame and desired frame, don't bother with i/d calc.  */
-  if (!scroll_region_ok && window_size >= 18 && baud_rate > 2400
+  if (!FRAME_SCROLL_REGION_OK (frame)
+      && window_size >= 18 && baud_rate > 2400
       && (window_size >=
          10 * scrolling_max_lines_saved (unchanged_at_top,
                                          FRAME_LINES (frame) - unchanged_at_bottom,
@@ -5589,7 +5597,7 @@ update_frame_line (f, vpos)
   struct glyph_row *current_row = MATRIX_ROW (current_matrix, vpos);
   struct glyph_row *desired_row = MATRIX_ROW (desired_matrix, vpos);
   int must_write_whole_line_p;
-  int write_spaces_p = must_write_spaces;
+  int write_spaces_p = FRAME_MUST_WRITE_SPACES (f);
   int colored_spaces_p = (FACE_FROM_ID (f, DEFAULT_FACE_ID)->background
                          != FACE_TTY_DEFAULT_BG_COLOR);
 
@@ -5640,8 +5648,8 @@ update_frame_line (f, vpos)
       /* Write the contents of the desired line.  */
       if (nlen)
        {
-          cursor_to (vpos, 0);
-         write_glyphs (nbody, nlen);
+          cursor_to (f, vpos, 0);
+         write_glyphs (f, nbody, nlen);
        }
 
       /* Don't call clear_end_of_line if we already wrote the whole
@@ -5649,13 +5657,13 @@ update_frame_line (f, vpos)
         case but in the line below.  */
       if (nlen < FRAME_TOTAL_COLS (f))
        {
-         cursor_to (vpos, nlen);
-          clear_end_of_line (FRAME_TOTAL_COLS (f));
+         cursor_to (f, vpos, nlen);
+          clear_end_of_line (f, FRAME_TOTAL_COLS (f));
        }
       else
        /* Make sure we are in the right row, otherwise cursor movement
           with cmgoto might use `ch' in the wrong row.  */
-       cursor_to (vpos, 0);
+       cursor_to (f, vpos, 0);
 
       make_current (desired_matrix, current_matrix, vpos);
       return;
@@ -5668,7 +5676,7 @@ update_frame_line (f, vpos)
       nlen--;
 
   /* If there's no i/d char, quickly do the best we can without it.  */
-  if (!char_ins_del_ok)
+  if (!FRAME_CHAR_INS_DEL_OK (f))
     {
       int i, j;
 
@@ -5687,8 +5695,8 @@ update_frame_line (f, vpos)
                ++j;
 
              /* Output this run of non-matching chars.  */
-             cursor_to (vpos, i);
-             write_glyphs (nbody + i, j - i);
+             cursor_to (f, vpos, i);
+             write_glyphs (f, nbody + i, j - i);
              i = j - 1;
 
              /* Now find the next non-match.  */
@@ -5698,8 +5706,8 @@ update_frame_line (f, vpos)
       /* Clear the rest of the line, or the non-clear part of it.  */
       if (olen > nlen)
        {
-         cursor_to (vpos, nlen);
-         clear_end_of_line (olen);
+         cursor_to (f, vpos, nlen);
+         clear_end_of_line (f, olen);
        }
 
       /* Make current row = desired row.  */
@@ -5721,8 +5729,8 @@ update_frame_line (f, vpos)
 
       if (nlen > nsp)
        {
-         cursor_to (vpos, nsp);
-         write_glyphs (nbody + nsp, nlen - nsp);
+         cursor_to (f, vpos, nsp);
+         write_glyphs (f, nbody + nsp, nlen - nsp);
        }
 
       /* Exchange contents between current_frame and new_frame.  */
@@ -5771,7 +5779,8 @@ update_frame_line (f, vpos)
 
   tem = (nlen - nsp) - (olen - osp);
   if (endmatch && tem
-      && (!char_ins_del_ok || endmatch <= char_ins_del_cost (f)[tem]))
+      && (!FRAME_CHAR_INS_DEL_OK (f)
+          || endmatch <= char_ins_del_cost (f)[tem]))
     endmatch = 0;
 
   /* nsp - osp is the distance to insert or delete.
@@ -5780,7 +5789,7 @@ update_frame_line (f, vpos)
      Is it worth it?  */
 
   if (nsp != osp
-      && (!char_ins_del_ok
+      && (!FRAME_CHAR_INS_DEL_OK (f)
          || begmatch + endmatch <= char_ins_del_cost (f)[nsp - osp]))
     {
       begmatch = 0;
@@ -5793,8 +5802,8 @@ update_frame_line (f, vpos)
 
   if (osp > nsp)
     {
-      cursor_to (vpos, nsp);
-      delete_glyphs (osp - nsp);
+      cursor_to (f, vpos, nsp);
+      delete_glyphs (f, osp - nsp);
     }
   else if (nsp > osp)
     {
@@ -5803,12 +5812,12 @@ update_frame_line (f, vpos)
         must delete first to avoid losing data in the insert */
       if (endmatch && nlen < olen + nsp - osp)
        {
-         cursor_to (vpos, nlen - endmatch + osp - nsp);
-         delete_glyphs (olen + nsp - osp - nlen);
+         cursor_to (f, vpos, nlen - endmatch + osp - nsp);
+         delete_glyphs (f, olen + nsp - osp - nlen);
          olen = nlen - (nsp - osp);
        }
-      cursor_to (vpos, osp);
-      insert_glyphs (0, nsp - osp);
+      cursor_to (f, vpos, osp);
+      insert_glyphs (f, 0, nsp - osp);
     }
   olen += nsp - osp;
 
@@ -5829,8 +5838,8 @@ update_frame_line (f, vpos)
             unnecessary cursor movement.  */
          if (nlen - tem > 0)
            {
-             cursor_to (vpos, nsp + begmatch);
-             write_glyphs (nbody + nsp + begmatch, nlen - tem);
+             cursor_to (f, vpos, nsp + begmatch);
+             write_glyphs (f, nbody + nsp + begmatch, nlen - tem);
            }
        }
       else if (nlen > olen)
@@ -5845,27 +5854,27 @@ update_frame_line (f, vpos)
          int out = olen - tem; /* Columns to be overwritten originally.  */
          int del;
 
-         cursor_to (vpos, nsp + begmatch);
+         cursor_to (f, vpos, nsp + begmatch);
 
          /* Calculate columns we can actually overwrite.  */
          while (CHAR_GLYPH_PADDING_P (nbody[nsp + begmatch + out]))
            out--;
-         write_glyphs (nbody + nsp + begmatch, out);
+         write_glyphs (f, nbody + nsp + begmatch, out);
 
          /* If we left columns to be overwritten, we must delete them.  */
          del = olen - tem - out;
          if (del > 0)
-           delete_glyphs (del);
+           delete_glyphs (f, del);
 
          /* At last, we insert columns not yet written out.  */
-         insert_glyphs (nbody + nsp + begmatch + out, nlen - olen + del);
+         insert_glyphs (f, nbody + nsp + begmatch + out, nlen - olen + del);
          olen = nlen;
        }
       else if (olen > nlen)
        {
-         cursor_to (vpos, nsp + begmatch);
-         write_glyphs (nbody + nsp + begmatch, nlen - tem);
-         delete_glyphs (olen - nlen);
+         cursor_to (f, vpos, nsp + begmatch);
+         write_glyphs (f, nbody + nsp + begmatch, nlen - tem);
+         delete_glyphs (f, olen - nlen);
          olen = nlen;
        }
     }
@@ -5874,8 +5883,8 @@ update_frame_line (f, vpos)
   /* If any unerased characters remain after the new line, erase them.  */
   if (olen > nlen)
     {
-      cursor_to (vpos, nlen);
-      clear_end_of_line (olen);
+      cursor_to (f, vpos, nlen);
+      clear_end_of_line (f, olen);
     }
 
   /* Exchange contents between current_frame and new_frame.  */
@@ -6172,31 +6181,34 @@ window_change_signal (signalnum) /* If we don't have an argument, */
 #endif
   int old_errno = errno;
 
+  struct tty_display_info *tty;
+
   signal (SIGWINCH, window_change_signal);
   SIGNAL_THREAD_CHECK (signalnum);
 
-  get_frame_size (&width, &height);
-
-  /* The frame size change obviously applies to a termcap-controlled
-     frame.  Find such a frame in the list, and assume it's the only
-     one (since the redisplay code always writes to stdout, not a
-     FILE * specified in the frame structure).  Record the new size,
-     but don't reallocate the data structures now.  Let that be done
-     later outside of the signal handler.  */
+  /* The frame size change obviously applies to a single
+     termcap-controlled terminal, but we can't decide which.
+     Therefore, we resize the frames corresponding to each tty.
+  */
+  for (tty = tty_list; tty; tty = tty->next) {
 
-  {
-    Lisp_Object tail, frame;
+    if (! tty->term_initted)
+      continue;
 
-    FOR_EACH_FRAME (tail, frame)
-      {
-       if (FRAME_TERMCAP_P (XFRAME (frame)))
-         {
-           change_frame_size (XFRAME (frame), height, width, 0, 1, 0);
-           break;
-         }
-      }
+    get_tty_size (fileno (tty->input), &width, &height);
+    
+    if (width > 5 && height > 2) {
+      Lisp_Object tail, frame;
+      
+      FOR_EACH_FRAME (tail, frame)
+        if (FRAME_TERMCAP_P (XFRAME (frame)) && FRAME_TTY (XFRAME (frame)) == tty)
+          /* Record the new sizes, but don't reallocate the data
+             structures now.  Let that be done later outside of the
+             signal handler.  */
+          change_frame_size (XFRAME (frame), height, width, 0, 1, 0);
+    }
   }
-
+  
   errno = old_errno;
 }
 #endif /* SIGWINCH */
@@ -6250,10 +6262,11 @@ change_frame_size (f, newheight, newwidth, pretend, delay, safe)
 {
   Lisp_Object tail, frame;
 
-  if (! FRAME_WINDOW_P (f))
+  if (FRAME_MSDOS_P (f))
     {
-      /* When using termcap, or on MS-DOS, all frames use
-        the same screen, so a change in size affects all frames.  */
+      /* On MS-DOS, all frames use the same screen, so a change in
+         size affects all frames.  Termcap now supports multiple
+         ttys. */
       FOR_EACH_FRAME (tail, frame)
        if (! FRAME_WINDOW_P (XFRAME (frame)))
          change_frame_size_1 (XFRAME (frame), newheight, newwidth,
@@ -6333,7 +6346,7 @@ change_frame_size_1 (f, newheight, newwidth, pretend, delay, safe)
                           newheight - FRAME_TOP_MARGIN (f), 0);
 
       if (FRAME_TERMCAP_P (f) && !pretend)
-       FrameRows = newheight;
+       FrameRows (FRAME_TTY (f)) = newheight;
     }
 
   if (new_frame_total_cols != FRAME_TOTAL_COLS (f))
@@ -6343,7 +6356,7 @@ change_frame_size_1 (f, newheight, newwidth, pretend, delay, safe)
        set_window_width (FRAME_MINIBUF_WINDOW (f), new_frame_total_cols, 0);
 
       if (FRAME_TERMCAP_P (f) && !pretend)
-       FrameCols = newwidth;
+       FrameCols (FRAME_TTY (f)) = newwidth;
 
       if (WINDOWP (f->tool_bar_window))
        XSETFASTINT (XWINDOW (f->tool_bar_window)->total_cols, newwidth);
@@ -6393,19 +6406,26 @@ FILE = nil means just close any termscript file currently open.  */)
      (file)
      Lisp_Object file;
 {
-  if (termscript != 0)
-    {
-      BLOCK_INPUT;
-      fclose (termscript);
-      UNBLOCK_INPUT;
-    }
-  termscript = 0;
+  struct tty_display_info *tty;
+
+  if (! FRAME_TERMCAP_P (SELECTED_FRAME ()))
+    error ("Current frame is not on a tty device");
+
+  tty = CURTTY ();
+
+  if (tty->termscript != 0)
+  {
+    BLOCK_INPUT;
+    fclose (tty->termscript);
+    UNBLOCK_INPUT;
+  }
+  tty->termscript = 0;
 
   if (! NILP (file))
     {
       file = Fexpand_file_name (file, Qnil);
-      termscript = fopen (SDATA (file), "w");
-      if (termscript == 0)
+      tty->termscript = fopen (SDATA (file), "w");
+      if (tty->termscript == 0)
        report_file_error ("Opening termscript", Fcons (file, Qnil));
     }
   return Qnil;
@@ -6413,23 +6433,36 @@ FILE = nil means just close any termscript file currently open.  */)
 
 
 DEFUN ("send-string-to-terminal", Fsend_string_to_terminal,
-       Ssend_string_to_terminal, 1, 1, 0,
+       Ssend_string_to_terminal, 1, 2, 0,
        doc: /* Send STRING to the terminal without alteration.
-Control characters in STRING will have terminal-dependent effects.  */)
-     (string)
+Control characters in STRING will have terminal-dependent effects.
+
+Optional parameter TERMINAL specifies the tty terminal device to use.
+It may be a terminal id, a frame, or nil for the terminal used by the
+currently selected frame.  */)
+  (string, terminal)
      Lisp_Object string;
+     Lisp_Object terminal;
 {
+  struct terminal *t = get_tty_terminal (terminal, 1);
+  struct tty_display_info *tty;
+
   /* ??? Perhaps we should do something special for multibyte strings here.  */
   CHECK_STRING (string);
   BLOCK_INPUT;
-  fwrite (SDATA (string), 1, SBYTES (string), stdout);
-  fflush (stdout);
-  if (termscript)
+
+  if (!t)
+    error ("Unknown terminal device");
+
+  tty = t->display_info.tty;
+  
+  if (tty->termscript)
     {
-      fwrite (SDATA (string), 1, SBYTES (string),
-             termscript);
-      fflush (termscript);
+      fwrite (SDATA (string), 1, SBYTES (string), tty->termscript);
+      fflush (tty->termscript);
     }
+  fwrite (SDATA (string), 1, SBYTES (string), tty->output);
+  fflush (tty->output);
   UNBLOCK_INPUT;
   return Qnil;
 }
@@ -6447,8 +6480,7 @@ terminate any keyboard macro currently executing.  */)
       if (noninteractive)
        putchar (07);
       else
-       ring_bell ();
-      fflush (stdout);
+       ring_bell (XFRAME (selected_frame));
     }
   else
     bitch_at_user ();
@@ -6464,8 +6496,7 @@ bitch_at_user ()
   else if (!INTERACTIVE)  /* Stop executing a keyboard macro.  */
     error ("Keyboard macro terminated by a command ringing the bell");
   else
-    ring_bell ();
-  fflush (stdout);
+    ring_bell (XFRAME (selected_frame));
 }
 
 
@@ -6748,8 +6779,6 @@ pass nil for VARIABLE.  */)
                            Initialization
 ***********************************************************************/
 
-char *terminal_type;
-
 /* Initialization done when Emacs fork is started, before doing stty.
    Determine terminal type and set terminal_driver.  Then invoke its
    decoding routine to set up variables in the terminal package.  */
@@ -6757,6 +6786,8 @@ char *terminal_type;
 void
 init_display ()
 {
+  char *terminal_type;
+
 #ifdef HAVE_X_WINDOWS
   extern int display_arg;
 #endif
@@ -6766,14 +6797,23 @@ init_display ()
   SET_CHAR_GLYPH_FROM_GLYPH (space_glyph, ' ');
   space_glyph.charpos = -1;
 
-  meta_key = 0;
   inverse_video = 0;
   cursor_in_echo_area = 0;
   terminal_type = (char *) 0;
 
   /* Now is the time to initialize this; it's used by init_sys_modes
      during startup.  */
-  Vwindow_system = Qnil;
+  Vinitial_window_system = Qnil;
+
+  /* SIGWINCH needs to be handled no matter what display we start
+     with.  Otherwise newly opened tty frames will not resize
+     automatically. */
+#ifdef SIGWINCH
+#ifndef CANNOT_DUMP
+  if (initialized)
+#endif /* CANNOT_DUMP */
+    signal (SIGWINCH, window_change_signal);
+#endif /* SIGWINCH */
 
   /* If the user wants to use a window system, we shouldn't bother
      initializing the terminal.  This is especially important when the
@@ -6809,7 +6849,7 @@ init_display ()
 #endif
      )
     {
-      Vwindow_system = intern ("x");
+      Vinitial_window_system = intern ("x");
 #ifdef HAVE_X11
       Vwindow_system_version = make_number (11);
 #else
@@ -6829,7 +6869,7 @@ init_display ()
 #ifdef HAVE_NTGUI
   if (!inhibit_window_system)
     {
-      Vwindow_system = intern ("w32");
+      Vinitial_window_system = intern ("w32");
       Vwindow_system_version = make_number (1);
       adjust_frame_glyphs_initially ();
       return;
@@ -6839,7 +6879,7 @@ init_display ()
 #ifdef MAC_OS
   if (!inhibit_window_system)
     {
-      Vwindow_system = intern ("mac");
+      Vinitial_window_system = intern ("mac");
       Vwindow_system_version = make_number (1);
       adjust_frame_glyphs_initially ();
       return;
@@ -6891,8 +6931,38 @@ For types not defined in VMS, use  define emacs_term \"TYPE\".\n\
   }
 #endif /* VMS */
 
-  term_init (terminal_type);
-
+  {
+    struct terminal *t;
+    struct frame *f = XFRAME (selected_frame);
+
+    /* Open a display on the controlling tty. */
+    t = init_tty (0, terminal_type, 1); /* Errors are fatal. */
+
+    /* Convert the initial frame to use the new display. */
+    if (f->output_method != output_initial)
+      abort ();
+    f->output_method = t->type;
+    f->terminal = t;
+
+    t->reference_count++;
+    t->display_info.tty->top_frame = selected_frame;
+    change_frame_size (XFRAME (selected_frame),
+                       FrameRows (t->display_info.tty),
+                       FrameCols (t->display_info.tty), 0, 0, 1);
+
+    /* Delete the initial terminal. */
+    if (--initial_terminal->reference_count == 0
+        && initial_terminal->delete_terminal_hook)
+      (*initial_terminal->delete_terminal_hook) (initial_terminal);
+
+    /* Update frame parameters to reflect the new type. */
+    Fmodify_frame_parameters (selected_frame, Fcons (Fcons (Qwindow_system, Qnil), Qnil));
+    Fmodify_frame_parameters
+      (selected_frame, Fcons (Fcons (Qtty_type,
+                                     Ftty_type (selected_frame)), Qnil));
+    Fmodify_frame_parameters (selected_frame, Fcons (Fcons (Qtty, Qnil), Qnil));
+  }
+  
   {
     struct frame *sf = SELECTED_FRAME ();
     int width = FRAME_TOTAL_COLS (sf);
@@ -6909,13 +6979,6 @@ For types not defined in VMS, use  define emacs_term \"TYPE\".\n\
   adjust_frame_glyphs_initially ();
   calculate_costs (XFRAME (selected_frame));
 
-#ifdef SIGWINCH
-#ifndef CANNOT_DUMP
-  if (initialized)
-#endif /* CANNOT_DUMP */
-    signal (SIGWINCH, window_change_signal);
-#endif /* SIGWINCH */
-
   /* Set up faces of the initial terminal frame of a dumped Emacs.  */
   if (initialized
       && !noninteractive
@@ -6926,7 +6989,7 @@ For types not defined in VMS, use  define emacs_term \"TYPE\".\n\
         and internal_terminal_init.  */
       && (strcmp (terminal_type, "internal") != 0 || inhibit_window_system)
 #endif
-      && NILP (Vwindow_system))
+      && NILP (Vinitial_window_system))
     {
       /* For the initial frame, we don't have any way of knowing what
         are the foreground and background colors of the terminal.  */
@@ -7038,8 +7101,8 @@ 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 ("window-system", &Vwindow_system,
-              doc: /* Name of window system that Emacs is displaying through.
+  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--for instance, `x' for X windows.
 The value is nil if Emacs is using a text-only terminal.  */);
 
@@ -7082,7 +7145,7 @@ If nil, never pre-empt redisplay.  */);
   if (noninteractive)
 #endif
     {
-      Vwindow_system = Qnil;
+      Vinitial_window_system = Qnil;
       Vwindow_system_version = Qnil;
     }
 }
index 65c0f21ce396cfdae3a44910fd1b111d0924fd23..25f6625d404221a001a80cdd53ca879f7ee49b27 100644 (file)
--- a/src/doc.c
+++ b/src/doc.c
@@ -883,7 +883,7 @@ a new string, without any text properties, is returned.  */)
          struct buffer *oldbuf;
          int start_idx;
          /* This is for computing the SHADOWS arg for describe_map_tree.  */
-         Lisp_Object active_maps = Fcurrent_active_maps (Qnil);
+         Lisp_Object active_maps = Fcurrent_active_maps (Qnil, Qnil);
          Lisp_Object earlier_maps;
 
          changed = 1;
index 6c6742d242e972044dc172f2b96097118f839a5d..98ab2f9008149f7a022bd447d8965113c88450f5 100644 (file)
@@ -84,6 +84,11 @@ extern char **environ;
 
 extern size_t emacs_strftimeu P_ ((char *, size_t, const char *,
                                   const struct tm *, int));
+
+#ifdef WINDOWSNT
+extern Lisp_Object w32_get_internal_run_time ();
+#endif
+
 static int tm_diff P_ ((struct tm *, struct tm *));
 static void find_field P_ ((Lisp_Object, Lisp_Object, Lisp_Object, int *, Lisp_Object, int *));
 static void update_buffer_properties P_ ((int, int));
@@ -1483,9 +1488,13 @@ on systems that do not provide resolution finer than a second.  */)
   return list3 (make_number ((secs >> 16) & 0xffff),
                make_number ((secs >> 0)  & 0xffff),
                make_number (usecs));
-#else
+#else /* ! HAVE_GETRUSAGE  */
+#if WINDOWSNT
+  return w32_get_internal_run_time ();
+#else /* ! WINDOWSNT  */
   return Fcurrent_time ();
-#endif
+#endif /* WINDOWSNT  */
+#endif /* HAVE_GETRUSAGE  */
 }
 \f
 
@@ -1839,7 +1848,7 @@ usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE)  */)
        tzstring = (char *) SDATA (zone);
       else if (INTEGERP (zone))
        {
-         int abszone = abs (XINT (zone));
+         int abszone = eabs (XINT (zone));
          sprintf (tzbuf, "XXX%s%d:%02d:%02d", "-" + (XINT (zone) < 0),
                   abszone / (60*60), (abszone/60) % 60, abszone % 60);
          tzstring = tzbuf;
@@ -1974,6 +1983,7 @@ the data it can't find.  */)
       int offset = tm_diff (t, &gmt);
       char *s = 0;
       char buf[6];
+
 #ifdef HAVE_TM_ZONE
       if (t->tm_zone)
        s = (char *)t->tm_zone;
@@ -1984,19 +1994,6 @@ the data it can't find.  */)
 #endif
 #endif /* not HAVE_TM_ZONE */
 
-#if defined HAVE_TM_ZONE || defined HAVE_TZNAME
-      if (s)
-       {
-         /* On Japanese w32, we can get a Japanese string as time
-            zone name.  Don't accept that.  */
-         char *p;
-         for (p = s; *p && (isalnum ((unsigned char)*p) || *p == ' '); ++p)
-           ;
-         if (p == s || *p)
-           s = NULL;
-       }
-#endif
-
       if (!s)
        {
          /* No local time zone name is available; use "+-NNNN" instead.  */
@@ -2004,6 +2001,7 @@ the data it can't find.  */)
          sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60);
          s = buf;
        }
+
       return Fcons (make_number (offset), Fcons (build_string (s), Qnil));
     }
   else
@@ -3042,7 +3040,7 @@ DEFUN ("delete-and-extract-region", Fdelete_and_extract_region,
 {
   validate_region (&start, &end);
   if (XINT (start) == XINT (end))
-    return build_string ("");
+    return empty_unibyte_string;
   return del_range_1 (XINT (start), XINT (end), 1, 1);
 }
 \f
@@ -4114,9 +4112,9 @@ Transposing beyond buffer boundaries is an error.  */)
      (startr1, endr1, startr2, endr2, leave_markers)
      Lisp_Object startr1, endr1, startr2, endr2, leave_markers;
 {
-  register int start1, end1, start2, end2;
-  int start1_byte, start2_byte, len1_byte, len2_byte;
-  int gap, len1, len_mid, len2;
+  register EMACS_INT start1, end1, start2, end2;
+  EMACS_INT start1_byte, start2_byte, len1_byte, len2_byte;
+  EMACS_INT gap, len1, len_mid, len2;
   unsigned char *start1_addr, *start2_addr, *temp;
 
   INTERVAL cur_intv, tmp_interval1, tmp_interval_mid, tmp_interval2, tmp_interval3;
index 4910244fd81e54c2d14015257b52df84650d330f..46d07b19936cb0e9d10ddf9e4d337fe19aca5414 100644 (file)
@@ -57,6 +57,7 @@ Boston, MA 02110-1301, USA.  */
 #include "blockinput.h"
 #include "syssignal.h"
 #include "process.h"
+#include "frame.h"
 #include "termhooks.h"
 #include "keyboard.h"
 #include "keymap.h"
@@ -133,8 +134,8 @@ Lisp_Object Vinstallation_directory;
 /* Hook run by `kill-emacs' before it does really anything.  */
 Lisp_Object Vkill_emacs_hook;
 
-/* An empty lisp string.  To avoid having to build any other.  */
-Lisp_Object empty_string;
+/* 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;
@@ -214,7 +215,7 @@ static unsigned long heap_bss_diff;
 
 
 #ifdef HAVE_WINDOW_SYSTEM
-extern Lisp_Object Vwindow_system;
+extern Lisp_Object Vinitial_window_system;
 #endif /* HAVE_WINDOW_SYSTEM */
 
 extern Lisp_Object Vauto_save_list_file_name;
@@ -280,9 +281,8 @@ Initialization options:\n\
 Action options:\n\
 \n\
 FILE                    visit FILE using find-file\n\
-+LINE FILE              visit FILE using find-file, then go to line LINE\n\
-+LINE:COLUMN FILE       visit FILE using find-file, then go to line LINE,\n\
-                          column COLUMN\n\
++LINE                  go to line LINE in next FILE\n\
++LINE:COLUMN           go to line LINE, column COLUMN, in next FILE\n\
 --directory, -L DIR     add DIR to variable load-path\n\
 --eval EXPR             evaluate Emacs Lisp expression EXPR\n\
 --execute EXPR          evaluate Emacs Lisp expression EXPR\n\
@@ -856,17 +856,23 @@ main (argc, argv
          So ignore --version otherwise.  */
       && initialized)
     {
-      Lisp_Object tem;
+      Lisp_Object tem, tem2;
       tem = Fsymbol_value (intern ("emacs-version"));
+      tem2 = Fsymbol_value (intern ("emacs-copyright"));
       if (!STRINGP (tem))
        {
          fprintf (stderr, "Invalid value of `emacs-version'\n");
          exit (1);
        }
+      if (!STRINGP (tem2))
+       {
+         fprintf (stderr, "Invalid value of `emacs-copyright'\n");
+         exit (1);
+       }
       else
        {
          printf ("GNU Emacs %s\n", SDATA (tem));
-         printf ("Copyright (C) 2007 Free Software Foundation, Inc.\n");
+         printf ("%s\n", SDATA(tem2));
          printf ("GNU Emacs comes with ABSOLUTELY NO WARRANTY.\n");
          printf ("You may redistribute copies of Emacs\n");
          printf ("under the terms of the GNU General Public License.\n");
@@ -1291,6 +1297,9 @@ main (argc, argv
         faces, and the face implementation uses some symbols as
         face names.  */
       syms_of_xfaces ();
+      /* XXX syms_of_keyboard uses some symbols in keymap.c.  It would
+         be better to arrange things not to have this dependency.  */
+      syms_of_keymap ();
       /* Call syms_of_keyboard before init_window_once because
         keyboard sets up symbols that include some face names that
         the X support will want to use.  This can happen when
@@ -1488,10 +1497,10 @@ main (argc, argv
   /* egetenv is a pretty low-level facility, which may get called in
      many circumstances; it seems flimsy to put off initializing it
      until calling init_callproc.  */
-  set_process_environment ();
+  set_initial_environment ();
   /* AIX crashes are reported in system versions 3.2.3 and 3.2.4
-     if this is not done.  Do it after set_process_environment so that we
-     don't pollute Vprocess_environment.  */
+     if this is not done.  Do it after set_global_environment so that we
+     don't pollute Vglobal_environment.  */
   /* Setting LANG here will defeat the startup locale processing...  */
 #ifdef AIX3_2
   putenv ("LANG=C");
@@ -1562,7 +1571,7 @@ main (argc, argv
 #endif /* CLASH_DETECTION */
       syms_of_indent ();
       syms_of_insdel ();
-      syms_of_keymap ();
+      /* syms_of_keymap (); */
       syms_of_macros ();
       syms_of_marker ();
       syms_of_minibuf ();
@@ -1573,6 +1582,7 @@ main (argc, argv
       syms_of_frame ();
 #endif
       syms_of_syntax ();
+      syms_of_terminal ();
       syms_of_term ();
       syms_of_undo ();
 #ifdef HAVE_SOUND
@@ -1657,13 +1667,7 @@ main (argc, argv
 #endif  /* HAVE_NTGUI */
     }
 
-  if (!noninteractive)
-    {
-#ifdef VMS
-      init_vms_input ();/* init_display calls get_frame_size, that needs this.  */
-#endif /* VMS */
-      init_display (); /* Determine terminal type.  init_sys_modes uses results.  */
-    }
+  init_process (); /* init_display uses add_keyboard_wait_descriptor. */
 #ifndef MAC_OS8
   /* Called before init_window_once for Mac OS Classic.  */
   init_keyboard ();    /* This too must precede init_sys_modes.  */
@@ -1671,7 +1675,13 @@ main (argc, argv
 #ifdef VMS
   init_vmsproc ();     /* And this too.  */
 #endif /* VMS */
-  init_sys_modes ();   /* Init system terminal modes (RAW or CBREAK, etc.).  */
+  if (!noninteractive)
+    {
+#ifdef VMS
+      init_vms_input ();/* init_display calls get_tty_size, that needs this.  */
+#endif /* VMS */
+      init_display (); /* Determine terminal type.  Calls init_sys_modes.  */
+    }
   init_fns ();
   init_xdisp ();
 #ifdef HAVE_WINDOW_SYSTEM
@@ -1684,7 +1694,6 @@ main (argc, argv
 #ifdef VMS
   init_vmsfns ();
 #endif /* VMS */
-  init_process ();
 #ifdef HAVE_SOUND
   init_sound ();
 #endif
@@ -2098,15 +2107,14 @@ shut_down_emacs (sig, no_x, stuff)
     if (EMACS_GET_TTY_PGRP (0, &tpgrp) != -1
        && tpgrp == pgrp)
       {
-       fflush (stdout);
-       reset_sys_modes ();
+       reset_all_sys_modes ();
        if (sig && sig != SIGTERM)
          fprintf (stderr, "Fatal error (%d)", sig);
       }
   }
 #else
   fflush (stdout);
-  reset_sys_modes ();
+  reset_all_sys_modes ();
 #endif
 
   stuff_buffered_input (stuff);
@@ -2128,9 +2136,9 @@ shut_down_emacs (sig, no_x, stuff)
 #if 0 /* This triggers a bug in XCloseDisplay and is not needed.  */
 #ifdef HAVE_X_WINDOWS
   /* It's not safe to call intern here.  Maybe we are crashing.  */
-  if (!noninteractive && SYMBOLP (Vwindow_system)
-      && SCHARS (SYMBOL_NAME (Vwindow_system)) == 1
-      && SREF (SYMBOL_NAME (Vwindow_system), 0) == 'x'
+  if (!noninteractive && SYMBOLP (Vinitial_window_system)
+      && SCHARS (SYMBOL_NAME (Vinitial_window_system)) == 1
+      && SREF (SYMBOL_NAME (Vinitial_window_system), 0) == 'x'
       && ! no_x)
     Fx_close_current_connection ();
 #endif /* HAVE_X_WINDOWS */
@@ -2476,9 +2484,6 @@ see `kill-emacs-query-functions' instead.
 The hook is not run in batch mode, i.e., if `noninteractive' is non-nil.  */);
   Vkill_emacs_hook = Qnil;
 
-  empty_string = build_string ("");
-  staticpro (&empty_string);
-
   DEFVAR_INT ("emacs-priority", &emacs_priority,
              doc: /* Priority for Emacs to run at.
 This value is effective only if set before Emacs is dumped,
index 3ffacf7d1967d2cdb05d773d40cafcb396e7a33e..b69eea44c75c2ecb7d23c9a4f2fa8f03a0be8be4 100644 (file)
@@ -202,6 +202,8 @@ Lisp_Object Vmacro_declaration_function;
 
 extern Lisp_Object Qrisky_local_variable;
 
+extern Lisp_Object Qfunction;
+
 static Lisp_Object funcall_lambda P_ ((Lisp_Object, int, Lisp_Object*));
 static void unwind_to_catch P_ ((struct catchtag *, Lisp_Object)) NO_RETURN;
 
@@ -466,7 +468,7 @@ usage: (prog1 FIRST BODY...)  */)
   struct gcpro gcpro1, gcpro2;
   register int argnum = 0;
 
-  if (NILP (args))
+  if (NILP(args))
     return Qnil;
 
   args_left = args;
@@ -539,7 +541,7 @@ usage: (setq [SYM VAL]...)  */)
   register Lisp_Object val, sym;
   struct gcpro gcpro1;
 
-  if (NILP(args))
+  if (NILP (args))
     return Qnil;
 
   args_left = args;
@@ -564,6 +566,8 @@ usage: (quote ARG)  */)
      (args)
      Lisp_Object args;
 {
+  if (!NILP (Fcdr (args)))
+    xsignal2 (Qwrong_number_of_arguments, Qquote, Flength (args));
   return Fcar (args);
 }
 
@@ -575,6 +579,8 @@ usage: (function ARG)  */)
      (args)
      Lisp_Object args;
 {
+  if (!NILP (Fcdr (args)))
+    xsignal2 (Qwrong_number_of_arguments, Qfunction, Flength (args));
   return Fcar (args);
 }
 
@@ -1274,7 +1280,11 @@ unwind_to_catch (catch, value)
 #if HAVE_X_WINDOWS
   /* If x_catch_errors was done, turn it off now.
      (First we give unbind_to a chance to do that.)  */
+#if 0 /* This would disable x_catch_errors after x_connection_closed.
+       * The catch must remain in effect during that delicate
+       * state. --lorentey  */
   x_fully_uncatch_errors ();
+#endif
 #endif
 
   byte_stack_list = catch->byte_stack;
@@ -1587,8 +1597,7 @@ internal_condition_case_2 (bfun, nargs, args, handlers, hfun)
 
 \f
 static Lisp_Object find_handler_clause P_ ((Lisp_Object, Lisp_Object,
-                                           Lisp_Object, Lisp_Object,
-                                           Lisp_Object *));
+                                           Lisp_Object, Lisp_Object));
 
 DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0,
        doc: /* Signal an error.  Args are ERROR-SYMBOL and associated DATA.
@@ -1614,7 +1623,6 @@ See also the function `condition-case'.  */)
   Lisp_Object conditions;
   extern int gc_in_progress;
   extern int waiting_for_input;
-  Lisp_Object debugger_value;
   Lisp_Object string;
   Lisp_Object real_error_symbol;
   struct backtrace *bp;
@@ -1672,7 +1680,7 @@ See also the function `condition-case'.  */)
       register Lisp_Object clause;
 
       clause = find_handler_clause (handlerlist->handler, conditions,
-                                   error_symbol, data, &debugger_value);
+                                   error_symbol, data);
 
       if (EQ (clause, Qlambda))
        {
@@ -1703,7 +1711,7 @@ See also the function `condition-case'.  */)
   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, &debugger_value);
+  find_handler_clause (Qerror, conditions, error_symbol, data);
   if (catchlist != 0)
     Fthrow (Qtop_level, Qt);
 
@@ -1855,75 +1863,54 @@ skip_debugger (conditions, data)
     = SIG is nil, and DATA is (SYMBOL . REST-OF-DATA).
        This is for memory-full errors only.
 
-   Store value returned from debugger into *DEBUGGER_VALUE_PTR.
-
    We need to increase max_specpdl_size temporarily around
    anything we do that can push on the specpdl, so as not to get
    a second error here in case we're handling specpdl overflow.  */
 
 static Lisp_Object
-find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
+find_handler_clause (handlers, conditions, sig, data)
      Lisp_Object handlers, conditions, sig, data;
-     Lisp_Object *debugger_value_ptr;
 {
   register Lisp_Object h;
   register Lisp_Object tem;
+  int debugger_called = 0;
+  int debugger_considered = 0;
 
-  if (EQ (handlers, Qt))  /* t is used by handlers for all conditions, set up by C code.  */
+  /* 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.  */
     {
-      int debugger_called = 0;
-      Lisp_Object sig_symbol, combined_data;
-      /* This is set to 1 if we are handling a memory-full error,
-        because these must not run the debugger.
-        (There is no room in memory to do that!)  */
-      int no_debugger = 0;
-
-      if (NILP (sig))
-       {
-         combined_data = data;
-         sig_symbol = Fcar (data);
-         no_debugger = 1;
-       }
-      else
-       {
-         combined_data = Fcons (sig, data);
-         sig_symbol = sig;
-       }
-
-      if (wants_debugger (Vstack_trace_on_error, conditions))
+      if (!NILP (sig) && wants_debugger (Vstack_trace_on_error, conditions))
        {
          max_specpdl_size++;
-#ifdef PROTOTYPES
+    #ifdef PROTOTYPES
          internal_with_output_to_temp_buffer ("*Backtrace*",
                                               (Lisp_Object (*) (Lisp_Object)) Fbacktrace,
                                               Qnil);
-#else
+    #else
          internal_with_output_to_temp_buffer ("*Backtrace*",
                                               Fbacktrace, Qnil);
-#endif
+    #endif
          max_specpdl_size--;
        }
-      if (! no_debugger
-         /* Don't try to run the debugger with interrupts blocked.
-            The editing loop would return anyway.  */
-         && ! INPUT_BLOCKED_P
-         && (EQ (sig_symbol, Qquit)
-             ? debug_on_quit
-             : wants_debugger (Vdebug_on_error, conditions))
-         && ! skip_debugger (conditions, combined_data)
-         && when_entered_debugger < num_nonmacro_input_events)
+
+      if (!debugger_considered)
        {
-         *debugger_value_ptr
-           = call_debugger (Fcons (Qerror,
-                                   Fcons (combined_data, Qnil)));
-         debugger_called = 1;
+         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))
        {
@@ -1932,6 +1919,7 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
          return Qt;
        }
     }
+
   for (h = handlers; CONSP (h); h = Fcdr (h))
     {
       Lisp_Object handler, condit;
@@ -1950,18 +1938,55 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
       /* Handle a list of condition names in handler HANDLER.  */
       else if (CONSP (condit))
        {
-         while (CONSP (condit))
+         Lisp_Object tail;
+         for (tail = condit; CONSP (tail); tail = XCDR (tail))
            {
-             tem = Fmemq (Fcar (condit), conditions);
+             tem = Fmemq (Fcar (tail), conditions);
              if (!NILP (tem))
-               return handler;
-             condit = XCDR (condit);
+               {
+                 /* 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 Qnil;
 }
 
+/* Call the debugger if calling it is currently enabled for CONDITIONS.
+   SIG and DATA describe the signal, as in find_handler_clause.  */
+
+int
+maybe_call_debugger (conditions, sig, data)
+     Lisp_Object conditions, sig, data;
+{
+  Lisp_Object combined_data;
+
+  combined_data = Fcons (sig, data);
+
+  if (
+      /* Don't try to run the debugger with interrupts blocked.
+        The editing loop would return anyway.  */
+      ! INPUT_BLOCKED_P
+      /* Does user wants to enter debugger for this kind of error?  */
+      && (EQ (sig, Qquit)
+         ? debug_on_quit
+         : wants_debugger (Vdebug_on_error, conditions))
+      && ! skip_debugger (conditions, combined_data)
+      /* rms: what's this for? */
+      && when_entered_debugger < num_nonmacro_input_events)
+    {
+      call_debugger (Fcons (Qerror, Fcons (combined_data, Qnil)));
+      return 1;
+    }
+
+  return 0;
+}
+
 /* dump an error message; called like printf */
 
 /* VARARGS 1 */
@@ -2026,42 +2051,49 @@ then strings and vectors are not accepted.  */)
 {
   register Lisp_Object fun;
   register Lisp_Object funcar;
+  Lisp_Object if_prop = Qnil;
 
   fun = function;
 
-  fun = indirect_function (fun);
-  if (EQ (fun, Qunbound))
+  fun = indirect_function (fun); /* Check cycles. */
+  if (NILP (fun) || EQ (fun, Qunbound))
     return Qnil;
 
+  /* Check an `interactive-form' property if present, analogous to the
+     function-documentation property. */
+  fun = function;
+  while (SYMBOLP (fun))
+    {
+      Lisp_Object tmp = Fget (fun, intern ("interactive-form"));
+      if (!NILP (tmp))
+       if_prop = Qt;
+      fun = Fsymbol_function (fun);
+    }
+
   /* Emacs primitives are interactive if their DEFUN specifies an
      interactive spec.  */
   if (SUBRP (fun))
-    {
-      if (XSUBR (fun)->prompt)
-       return Qt;
-      else
-       return Qnil;
-    }
+    return XSUBR (fun)->intspec ? Qt : if_prop;
 
   /* Bytecode objects are interactive if they are long enough to
      have an element whose index is COMPILED_INTERACTIVE, which is
      where the interactive spec is stored.  */
   else if (COMPILEDP (fun))
     return ((ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK) > COMPILED_INTERACTIVE
-           ? Qt : Qnil);
+           ? Qt : if_prop);
 
   /* Strings and vectors are keyboard macros.  */
-  if (NILP (for_call_interactively) && (STRINGP (fun) || VECTORP (fun)))
-    return Qt;
+  if (STRINGP (fun) || VECTORP (fun))
+    return (NILP (for_call_interactively) ? Qt : Qnil);
 
   /* Lists may represent commands.  */
   if (!CONSP (fun))
     return Qnil;
   funcar = XCAR (fun);
   if (EQ (funcar, Qlambda))
-    return Fassq (Qinteractive, Fcdr (XCDR (fun)));
+    return !NILP (Fassq (Qinteractive, Fcdr (XCDR (fun)))) ? Qt : if_prop;
   if (EQ (funcar, Qautoload))
-    return Fcar (Fcdr (Fcdr (XCDR (fun))));
+    return !NILP (Fcar (Fcdr (Fcdr (XCDR (fun))))) ? Qt : if_prop;
   else
     return Qnil;
 }
@@ -2165,7 +2197,7 @@ do_autoload (fundef, funname)
   /* Value saved here is to be restored into Vautoload_queue.  */
   record_unwind_protect (un_autoload, Vautoload_queue);
   Vautoload_queue = Qt;
-  Fload (Fcar (Fcdr (fundef)), Qnil, noninteractive ? Qt : Qnil, Qnil, Qt);
+  Fload (Fcar (Fcdr (fundef)), Qnil, Qt, Qnil, Qt);
 
   /* Once loading finishes, don't undo it.  */
   Vautoload_queue = Qt;
index ac5a4f5679439d763747c9ca32f890a4ac698f59..29d12a0b0c3a2e61fb245e2f49652b7b3b74d8b4 100644 (file)
@@ -78,6 +78,8 @@ extern int errno;
 #include "coding.h"
 #include "window.h"
 #include "blockinput.h"
+#include "frame.h"
+#include "dispextern.h"
 
 #ifdef WINDOWSNT
 #define NOMINMAX 1
@@ -3433,7 +3435,9 @@ Return nil, if file does not exist or is not accessible.  */)
   return make_number (st.st_mode & 07777);
 }
 
-DEFUN ("set-file-modes", Fset_file_modes, Sset_file_modes, 2, 2, 0,
+DEFUN ("set-file-modes", Fset_file_modes, Sset_file_modes, 2, 2,
+       "(let ((file (read-file-name \"File: \")))                      \
+         (list file (read-file-modes nil file)))",
        doc: /* Set mode bits of file named FILENAME to MODE (an integer).
 Only the 12 low bits of MODE are used.  */)
   (filename, mode)
@@ -3690,27 +3694,25 @@ DEFUN ("insert-file-contents", Finsert_file_contents, Sinsert_file_contents,
        1, 5, 0,
        doc: /* Insert contents of file FILENAME after point.
 Returns list of absolute file name and number of characters inserted.
-If second argument VISIT is non-nil, the buffer's visited filename
-and last save file modtime are set, and it is marked unmodified.
-If visiting and the file does not exist, visiting is completed
-before the error is signaled.
-The optional third and fourth arguments BEG and END
-specify what portion of the file to insert.
-These arguments count bytes in the file, not characters in the buffer.
-If VISIT is non-nil, BEG and END must be nil.
-
-If optional fifth argument REPLACE is non-nil,
-it means replace the current buffer contents (in the accessible portion)
-with the file contents.  This is better than simply deleting and inserting
-the whole thing because (1) it preserves some marker positions
-and (2) it puts less data in the undo list.
-When REPLACE is non-nil, the value is the number of characters actually read,
-which is often less than the number of characters to be read.
-
-This does code conversion according to the value of
-`coding-system-for-read' or `file-coding-system-alist',
-and sets the variable `last-coding-system-used' to the coding system
-actually used.  */)
+If second argument VISIT is non-nil, the buffer's visited filename and
+last save file modtime are set, and it is marked unmodified.  If
+visiting and the file does not exist, visiting is completed before the
+error is signaled.
+
+The optional third and fourth arguments BEG and END specify what portion
+of the file to insert.  These arguments count bytes in the file, not
+characters in the buffer.  If VISIT is non-nil, BEG and END must be nil.
+
+If optional fifth argument REPLACE is non-nil, replace the current
+buffer contents (in the accessible portion) with the file contents.
+This is better than simply deleting and inserting the whole thing
+because (1) it preserves some marker positions and (2) it puts less data
+in the undo list.  When REPLACE is non-nil, the second return value is
+the number of characters that replace previous buffer contents.
+
+This function does code conversion according to the value of
+`coding-system-for-read' or `file-coding-system-alist', and sets the
+variable `last-coding-system-used' to the coding system actually used.  */)
      (filename, visit, beg, end, replace)
      Lisp_Object filename, visit, beg, end, replace;
 {
@@ -3720,8 +3722,8 @@ actually used.  */)
   register int how_much;
   register int unprocessed;
   int count = SPECPDL_INDEX ();
-  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
-  Lisp_Object handler, val, insval, orig_filename;
+  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
+  Lisp_Object handler, val, insval, orig_filename, old_undo;
   Lisp_Object p;
   int total = 0;
   int not_regular = 0;
@@ -3744,8 +3746,9 @@ actually used.  */)
   val = Qnil;
   p = Qnil;
   orig_filename = Qnil;
+  old_undo = Qnil;
 
-  GCPRO4 (filename, val, p, orig_filename);
+  GCPRO5 (filename, val, p, orig_filename, old_undo);
 
   CHECK_STRING (filename);
   filename = Fexpand_file_name (filename, Qnil);
@@ -4704,24 +4707,119 @@ actually used.  */)
   /* Decode file format */
   if (inserted > 0)
     {
-      int empty_undo_list_p = 0;
+      /* Don't run point motion or modification hooks when decoding. */
+      int count = SPECPDL_INDEX ();
+      specbind (Qinhibit_point_motion_hooks, Qt);
+      specbind (Qinhibit_modification_hooks, Qt);
+
+      /* Save old undo list and don't record undo for decoding. */
+      old_undo = current_buffer->undo_list;
+      current_buffer->undo_list = Qt;
 
-      /* If we're anyway going to discard undo information, don't
-        record it in the first place.  The buffer's undo list at this
-        point is either nil or t when visiting a file.  */
-      if (!NILP (visit))
+      if (NILP (replace))
        {
-         empty_undo_list_p = NILP (current_buffer->undo_list);
-         current_buffer->undo_list = Qt;
+         insval = call3 (Qformat_decode,
+                         Qnil, make_number (inserted), visit);
+         CHECK_NUMBER (insval);
+         inserted = XFASTINT (insval);
+       }
+      else
+       {
+         /* If REPLACE is non-nil and we succeeded in not replacing the
+         beginning or end of the buffer text with the file's contents,
+         call format-decode with `point' positioned at the beginning of
+         the buffer and `inserted' equalling the number of characters
+         in the buffer.  Otherwise, format-decode might fail to
+         correctly analyze the beginning or end of the buffer.  Hence
+         we temporarily save `point' and `inserted' here and restore
+         `point' iff format-decode did not insert or delete any text.
+         Otherwise we leave `point' at point-min. */
+         int opoint = PT;
+         int opoint_byte = PT_BYTE;
+         int oinserted = ZV - BEGV;
+         int ochars_modiff = CHARS_MODIFF;
+         
+         TEMP_SET_PT_BOTH (BEGV, BEGV_BYTE); 
+         insval = call3 (Qformat_decode,
+                         Qnil, make_number (oinserted), visit);
+         CHECK_NUMBER (insval);
+         if (ochars_modiff == CHARS_MODIFF)
+           /* format_decode didn't modify buffer's characters => move
+              point back to position before inserted text and leave
+              value of inserted alone. */
+           SET_PT_BOTH (opoint, opoint_byte);
+         else
+           /* format_decode modified buffer's characters => consider
+              entire buffer changed and leave point at point-min. */
+           inserted = XFASTINT (insval);
        }
 
-      insval = call3 (Qformat_decode,
-                     Qnil, make_number (inserted), visit);
-      CHECK_NUMBER (insval);
-      inserted = XFASTINT (insval);
+      /* For consistency with format-decode call these now iff inserted > 0
+        (martin 2007-06-28) */
+      p = Vafter_insert_file_functions;
+      while (CONSP (p))
+       {
+         if (NILP (replace))
+           {
+             insval = call1 (XCAR (p), make_number (inserted));
+             if (!NILP (insval))
+               {
+                 CHECK_NUMBER (insval);
+                 inserted = XFASTINT (insval);
+               }
+           }
+         else
+           {
+             /* For the rationale of this see the comment on format-decode above. */
+             int opoint = PT;
+             int opoint_byte = PT_BYTE;
+             int oinserted = ZV - BEGV;
+             int ochars_modiff = CHARS_MODIFF;
+             
+             TEMP_SET_PT_BOTH (BEGV, BEGV_BYTE);
+             insval = call1 (XCAR (p), make_number (oinserted));
+             if (!NILP (insval))
+               {
+                 CHECK_NUMBER (insval);
+                 if (ochars_modiff == CHARS_MODIFF)
+                   /* after_insert_file_functions didn't modify
+                      buffer's characters => move point back to
+                      position before inserted text and leave value of
+                      inserted alone. */
+                   SET_PT_BOTH (opoint, opoint_byte);
+                 else
+                   /* after_insert_file_functions did modify buffer's
+                      characters => consider entire buffer changed and
+                      leave point at point-min. */
+                   inserted = XFASTINT (insval);
+               }
+           }
+
+         QUIT;
+         p = XCDR (p);
+       }
+
+      if (NILP (visit))
+       {
+         Lisp_Object lbeg, lend;
+         XSETINT (lbeg, PT);
+         XSETINT (lend, PT + inserted);
+         if (CONSP (old_undo))
+           {
+             Lisp_Object tem = XCAR (old_undo);
+             if (CONSP (tem) && INTEGERP (XCAR (tem)) &&
+                 INTEGERP (XCDR (tem)) && EQ (XCAR (tem), lbeg))
+               /* In the non-visiting case record only the final insertion. */
+               current_buffer->undo_list =
+                 Fcons (Fcons (lbeg, lend), Fcdr (old_undo));
+           }
+       }
+      else
+       /* If undo_list was Qt before, keep it that way.
+          Otherwise start with an empty undo_list. */
+       current_buffer->undo_list = EQ (old_undo, Qt) ? Qt : Qnil;
 
-      if (!NILP (visit))
-       current_buffer->undo_list = empty_undo_list_p ? Qnil : Qt;
+      unbind_to (count, Qnil);
     }
 
   /* Call after-change hooks for the inserted text, aside from the case
@@ -4734,19 +4832,6 @@ actually used.  */)
       update_compositions (PT, PT, CHECK_BORDER);
     }
 
-  p = Vafter_insert_file_functions;
-  while (CONSP (p))
-    {
-      insval = call1 (XCAR (p), make_number (inserted));
-      if (!NILP (insval))
-       {
-         CHECK_NUMBER (insval);
-         inserted = XFASTINT (insval);
-       }
-      QUIT;
-      p = XCDR (p);
-    }
-
   if (!NILP (visit)
       && current_buffer->modtime == -1)
     {
@@ -5746,7 +5831,7 @@ auto_save_error (error)
   char *msgbuf;
   USE_SAFE_ALLOCA;
 
-  ring_bell ();
+  ring_bell (XFRAME (selected_frame));
 
   args[0] = build_string ("Auto-saving %s: %s");
   args[1] = current_buffer->name;
@@ -6308,7 +6393,7 @@ and `read-file-name-function'.  */)
   /* If dir starts with user's homedir, change that to ~. */
   homedir = (char *) egetenv ("HOME");
 #ifdef DOS_NT
-  /* homedir can be NULL in temacs, since Vprocess_environment is not
+  /* homedir can be NULL in temacs, since Vglobal_environment is not
      yet set up.  We shouldn't crash in that case.  */
   if (homedir != 0)
     {
@@ -6430,7 +6515,7 @@ and `read-file-name-function'.  */)
       if (! replace_in_history)
        add_to_history = 1;
 
-      val = empty_string;
+      val = empty_unibyte_string;
     }
 
   unbind_to (count, Qnil);
@@ -6683,8 +6768,9 @@ or local variable spec of the tailing lines with `coding:' tag.  */);
 
   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.
-It should return the new character count, and leave point the same.
+Each is passed one argument, the number of characters inserted,
+with point at the start of the inserted text.  Each function
+should leave point the same, and return the new character count.
 If `insert-file-contents' is intercepted by a handler from
 `file-name-handler-alist', that handler is responsible for calling the
 functions in `after-insert-file-functions' if appropriate.  */);
index 6ad9b95686e7a1ac43884a301545f14a18f8c5bb..a20f7981bf03f37c35ca6116319c325008f461ad 100644 (file)
@@ -454,7 +454,7 @@ DEFUN ("expt", Fexpt, Sexpt, 2, 2, 0,
      (arg1, arg2)
      register Lisp_Object arg1, arg2;
 {
-  double f1, f2;
+  double f1, f2, f3;
 
   CHECK_NUMBER_OR_FLOAT (arg1);
   CHECK_NUMBER_OR_FLOAT (arg2);
@@ -500,8 +500,11 @@ DEFUN ("expt", Fexpt, Sexpt, 2, 2, 0,
   else if ((f1 == 0.0 && f2 < 0.0) || (f1 < 0 && f2 != floor(f2)))
     domain_error2 ("expt", arg1, arg2);
 #endif
-  IN_FLOAT2 (f1 = pow (f1, f2), "expt", arg1, arg2);
-  return make_float (f1);
+  IN_FLOAT2 (f3 = pow (f1, f2), "expt", arg1, arg2);
+  /* Check for overflow in the result.  */
+  if (f1 != 0.0 && f3 == 0.0)
+    range_error ("expt", arg1);
+  return make_float (f3);
 }
 
 DEFUN ("log", Flog, Slog, 1, 2, 0,
index 49db42a58acd94e85780d71179b8d3f64807281c..f881ed53f88c0140d7c392b99bcf7cf6f2dbd368 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -2825,8 +2825,8 @@ DEFUN ("optimize-char-table", Foptimize_char_table, Soptimize_char_table,
 void
 map_char_table (c_function, function, table, subtable, arg, depth, indices)
      void (*c_function) P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
-     Lisp_Object function, table, subtable, arg, *indices;
-     int depth;
+     Lisp_Object function, table, subtable, arg;
+     int depth, *indices;
 {
   int i, to;
   struct gcpro gcpro1, gcpro2,  gcpro3, gcpro4;
@@ -2860,7 +2860,7 @@ map_char_table (c_function, function, table, subtable, arg, depth, indices)
     }
   else
     {
-      int charset = XFASTINT (indices[0]) - 128;
+      int charset = indices[0] - 128;
 
       i = 32;
       to = SUB_CHAR_TABLE_ORDINARY_SLOTS;
@@ -2874,8 +2874,8 @@ map_char_table (c_function, function, table, subtable, arg, depth, indices)
       int charset;
 
       elt = XCHAR_TABLE (subtable)->contents[i];
-      XSETFASTINT (indices[depth], i);
-      charset = XFASTINT (indices[0]) - 128;
+      indices[depth] = i;
+      charset = indices[0] - 128;
       if (depth == 0
          && (!CHARSET_DEFINED_P (charset)
              || charset == CHARSET_8_BIT_CONTROL
@@ -2892,8 +2892,8 @@ map_char_table (c_function, function, table, subtable, arg, depth, indices)
        {
          int c1, c2, c;
 
-         c1 = depth >= 1 ? XFASTINT (indices[1]) : 0;
-         c2 = depth >= 2 ? XFASTINT (indices[2]) : 0;
+         c1 = depth >= 1 ? indices[1] : 0;
+         c2 = depth >= 2 ? indices[2] : 0;
          c = MAKE_CHAR (charset, c1, c2);
 
          if (NILP (elt))
@@ -2927,14 +2927,14 @@ The key is always a possible IDX argument to `aref'.  */)
      Lisp_Object function, char_table;
 {
   /* The depth of char table is at most 3. */
-  Lisp_Object indices[3];
+  int indices[3];
 
   CHECK_CHAR_TABLE (char_table);
 
   /* When Lisp_Object is represented as a union, `call2' cannot directly
      be passed to map_char_table because it returns a Lisp_Object rather
      than returning nothing.
-     Casting leads to crashes on some architectures.  -stef  */
+     Casting leads to crashes on some architectures.  --Stef  */
   map_char_table (void_call2, Qnil, char_table, char_table, function, 0, indices);
   return Qnil;
 }
@@ -3134,7 +3134,7 @@ SEQUENCE may be a list, a vector, a bool-vector, or a string.  */)
   len = Flength (sequence);
   leni = XINT (len);
   nargs = leni + leni - 1;
-  if (nargs < 0) return build_string ("");
+  if (nargs < 0) return empty_unibyte_string;
 
   SAFE_ALLOCA_LISP (args, nargs);
 
@@ -3236,7 +3236,8 @@ is nil and `use-dialog-box' is non-nil.  */)
     {
 
 #ifdef HAVE_MENUS
-      if ((NILP (last_nonmenu_event) || CONSP (last_nonmenu_event))
+      if (FRAME_WINDOW_P (SELECTED_FRAME ())
+          && (NILP (last_nonmenu_event) || CONSP (last_nonmenu_event))
          && use_dialog_box
          && have_menus_p ())
        {
@@ -3275,6 +3276,7 @@ is nil and `use-dialog-box' is non-nil.  */)
          Fraise_frame (mini_frame);
        }
 
+      temporarily_switch_to_single_kboard (SELECTED_FRAME ());
       obj = read_filtered_event (1, 0, 0, 0, Qnil);
       cursor_in_echo_area = 0;
       /* If we need to quit, quit with cursor_in_echo_area = 0.  */
@@ -3367,7 +3369,8 @@ is nil, and `use-dialog-box' is non-nil.  */)
   CHECK_STRING (prompt);
 
 #ifdef HAVE_MENUS
-  if ((NILP (last_nonmenu_event) || CONSP (last_nonmenu_event))
+  if (FRAME_WINDOW_P (SELECTED_FRAME ())
+      && (NILP (last_nonmenu_event) || CONSP (last_nonmenu_event))
       && use_dialog_box
       && have_menus_p ())
     {
@@ -4268,7 +4271,7 @@ base64_decode_1 (from, to, length, multibyte, nchars_return)
 
 /* The list of all weak hash tables.  Don't staticpro this one.  */
 
-Lisp_Object Vweak_hash_tables;
+struct Lisp_Hash_Table *weak_hash_tables;
 
 /* Various symbols.  */
 
@@ -4595,7 +4598,7 @@ make_hash_table (test, size, rehash_size, rehash_threshold, weak,
   h->weak = weak;
   h->rehash_threshold = rehash_threshold;
   h->rehash_size = rehash_size;
-  h->count = make_number (0);
+  h->count = 0;
   h->key_and_value = Fmake_vector (make_number (2 * sz), Qnil);
   h->hash = Fmake_vector (size, Qnil);
   h->next = Fmake_vector (size, Qnil);
@@ -4614,11 +4617,11 @@ make_hash_table (test, size, rehash_size, rehash_threshold, weak,
 
   /* Maybe add this hash table to the list of all weak hash tables.  */
   if (NILP (h->weak))
-    h->next_weak = Qnil;
+    h->next_weak = NULL;
   else
     {
-      h->next_weak = Vweak_hash_tables;
-      Vweak_hash_tables = table;
+      h->next_weak = weak_hash_tables;
+      weak_hash_tables = h;
     }
 
   return table;
@@ -4649,8 +4652,8 @@ copy_hash_table (h1)
   /* Maybe add this hash table to the list of all weak hash tables.  */
   if (!NILP (h2->weak))
     {
-      h2->next_weak = Vweak_hash_tables;
-      Vweak_hash_tables = table;
+      h2->next_weak = weak_hash_tables;
+      weak_hash_tables = h2;
     }
 
   return table;
@@ -4775,7 +4778,7 @@ hash_put (h, key, value, hash)
 
   /* Increment count after resizing because resizing may fail.  */
   maybe_resize_hash_table (h);
-  h->count = make_number (XFASTINT (h->count) + 1);
+  h->count++;
 
   /* Store key/value in the key_and_value vector.  */
   i = XFASTINT (h->next_free);
@@ -4831,8 +4834,8 @@ hash_remove (h, key)
          HASH_KEY (h, i) = HASH_VALUE (h, i) = HASH_HASH (h, i) = Qnil;
          HASH_NEXT (h, i) = h->next_free;
          h->next_free = make_number (i);
-         h->count = make_number (XFASTINT (h->count) - 1);
-         xassert (XINT (h->count) >= 0);
+         h->count--;
+         xassert (h->count >= 0);
          break;
        }
       else
@@ -4850,7 +4853,7 @@ void
 hash_clear (h)
      struct Lisp_Hash_Table *h;
 {
-  if (XFASTINT (h->count) > 0)
+  if (h->count > 0)
     {
       int i, size = HASH_TABLE_SIZE (h);
 
@@ -4866,7 +4869,7 @@ hash_clear (h)
        AREF (h->index, i) = Qnil;
 
       h->next_free = make_number (0);
-      h->count = make_number (0);
+      h->count = 0;
     }
 }
 
@@ -4936,7 +4939,7 @@ sweep_weak_table (h, remove_entries_p)
                  HASH_KEY (h, i) = HASH_VALUE (h, i) = Qnil;
                  HASH_HASH (h, i) = Qnil;
 
-                 h->count = make_number (XFASTINT (h->count) - 1);
+                 h->count--;
                }
              else
                {
@@ -4969,13 +4972,12 @@ sweep_weak_table (h, remove_entries_p)
 
 /* Remove elements from weak hash tables that don't survive the
    current garbage collection.  Remove weak tables that don't survive
-   from Vweak_hash_tables.  Called from gc_sweep.  */
+   from weak_hash_tables.  Called from gc_sweep.  */
 
 void
 sweep_weak_hash_tables ()
 {
-  Lisp_Object table, used, next;
-  struct Lisp_Hash_Table *h;
+  struct Lisp_Hash_Table *h, *used, *next;
   int marked;
 
   /* Mark all keys and values that are in use.  Keep on marking until
@@ -4987,9 +4989,8 @@ sweep_weak_hash_tables ()
   do
     {
       marked = 0;
-      for (table = Vweak_hash_tables; !GC_NILP (table); table = h->next_weak)
+      for (h = weak_hash_tables; h; h = h->next_weak)
        {
-         h = XHASH_TABLE (table);
          if (h->size & ARRAY_MARK_FLAG)
            marked |= sweep_weak_table (h, 0);
        }
@@ -4997,24 +4998,23 @@ sweep_weak_hash_tables ()
   while (marked);
 
   /* Remove tables and entries that aren't used.  */
-  for (table = Vweak_hash_tables, used = Qnil; !GC_NILP (table); table = next)
+  for (h = weak_hash_tables, used = NULL; h; h = next)
     {
-      h = XHASH_TABLE (table);
       next = h->next_weak;
 
       if (h->size & ARRAY_MARK_FLAG)
        {
          /* TABLE is marked as used.  Sweep its contents.  */
-         if (XFASTINT (h->count) > 0)
+         if (h->count > 0)
            sweep_weak_table (h, 1);
 
          /* Add table to the list of used weak hash tables.  */
          h->next_weak = used;
-         used = table;
+         used = h;
        }
     }
 
-  Vweak_hash_tables = used;
+  weak_hash_tables = used;
 }
 
 
@@ -5340,7 +5340,7 @@ DEFUN ("hash-table-count", Fhash_table_count, Shash_table_count, 1, 1, 0,
      (table)
      Lisp_Object table;
 {
-  return check_hash_table (table)->count;
+  return make_number (check_hash_table (table)->count);
 }
 
 
@@ -5915,7 +5915,7 @@ used if both `use-dialog-box' and this variable are non-nil.  */);
 void
 init_fns ()
 {
-  Vweak_hash_tables = Qnil;
+  weak_hash_tables = NULL;
 }
 
 /* arch-tag: 787f8219-5b74-46bd-8469-7e1cc475fa31
index b670e22804738112f4210de16f6273be555fd256..2c0f0ac161ce6820020e36e84e9f8e8d856b21f1 100644 (file)
@@ -49,6 +49,7 @@ Boston, MA 02110-1301, USA.  */
 #ifdef MAC_OS
 #include "macterm.h"
 #endif
+#include "termhooks.h"
 
 #ifdef FONTSET_DEBUG
 #undef xassert
@@ -390,15 +391,7 @@ make_fontset (frame, name, base)
   while (!NILP (AREF (Vfontset_table, id))) id++;
 
   if (id + 1 == size)
-    {
-      Lisp_Object tem;
-      int i;
-
-      tem = Fmake_vector (make_number (size + 8), Qnil);
-      for (i = 0; i < size; i++)
-       AREF (tem, i) = AREF (Vfontset_table, i);
-      Vfontset_table = tem;
-    }
+    Vfontset_table = larger_vector (Vfontset_table, size + 8, Qnil);
 
   fontset = Fmake_char_table (Qfontset, Qnil);
 
@@ -1347,7 +1340,7 @@ DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0,
       STORE_XCHAR2B (&char2b, c1, c2);
     else
       STORE_XCHAR2B (&char2b, 0, c1);
-    rif->encode_char (c, &char2b, fontp, NULL);
+    FRAME_RIF (f)->encode_char (c, &char2b, fontp, NULL);
     code = (XCHAR2B_BYTE1 (&char2b) << 8) | XCHAR2B_BYTE2 (&char2b);
   }
   return Fcons (build_string (face->font_name), make_number (code));
@@ -1437,7 +1430,7 @@ If FRAME is omitted, it defaults to the currently selected frame.  */)
 {
   Lisp_Object fontset;
   FRAME_PTR f;
-  Lisp_Object indices[3];
+  int indices[3];
   Lisp_Object val, tail, elt;
   Lisp_Object *realized;
   struct font_info *fontp = NULL;
index df98475d7b308a68c14769b3001bcdd792c61449..ff860d83509286abaa970a0e44a262a60af796ca 100644 (file)
@@ -42,6 +42,7 @@ Boston, MA 02110-1301, USA.  */
 #include "fontset.h"
 #endif
 #include "blockinput.h"
+#include "termchar.h"
 #include "termhooks.h"
 #include "dispextern.h"
 #include "window.h"
@@ -74,6 +75,8 @@ Lisp_Object Qbackground_mode;
 
 Lisp_Object Qx_frame_parameter;
 Lisp_Object Qx_resource_name;
+Lisp_Object Qterminal;
+Lisp_Object Qterminal_live_p;
 
 /* Frame parameters (set or reported).  */
 
@@ -104,15 +107,16 @@ Lisp_Object Qexplicit_name;
 Lisp_Object Qunsplittable;
 Lisp_Object Qmenu_bar_lines, Qtool_bar_lines;
 Lisp_Object Qleft_fringe, Qright_fringe;
-Lisp_Object Qbuffer_predicate, Qbuffer_list;
+Lisp_Object Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list;
 Lisp_Object Qtty_color_mode;
+Lisp_Object Qtty, Qtty_type;
+Lisp_Object Qwindow_system;
 
 Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth;
 
 Lisp_Object Qinhibit_face_set_after_frame_default;
 Lisp_Object Qface_set_after_frame_default;
 
-
 Lisp_Object Vterminal_frame;
 Lisp_Object Vdefault_frame_alist;
 Lisp_Object Vdefault_frame_scroll_bars;
@@ -124,8 +128,8 @@ int focus_follows_mouse;
 \f
 static void
 set_menu_bar_lines_1 (window, n)
-  Lisp_Object window;
-  int n;
+     Lisp_Object window;
+     int n;
 {
   struct window *w = XWINDOW (window);
 
@@ -183,8 +187,6 @@ set_menu_bar_lines (f, value, oldval)
 Lisp_Object Vemacs_iconified;
 Lisp_Object Vframe_list;
 
-struct x_output tty_display;
-
 extern Lisp_Object Vminibuffer_list;
 extern Lisp_Object get_minibuffer ();
 extern Lisp_Object Fhandle_switch_frame ();
@@ -206,6 +208,7 @@ See also `frame-live-p'.  */)
     return Qnil;
   switch (XFRAME (object)->output_method)
     {
+    case output_initial: /* The initial frame is like a termcap frame. */
     case output_termcap:
       return Qt;
     case output_x_window:
@@ -224,7 +227,7 @@ See also `frame-live-p'.  */)
 DEFUN ("frame-live-p", Fframe_live_p, Sframe_live_p, 1, 1, 0,
        doc: /* Return non-nil if OBJECT is a frame which has not been deleted.
 Value is nil if OBJECT is not a live frame.  If object is a live
-frame, the return value indicates what sort of output device it is
+frame, the return value indicates what sort of terminal device it is
 displayed on.  See the documentation of `framep' for possible
 return values.  */)
      (object)
@@ -236,6 +239,30 @@ return values.  */)
          : Qnil);
 }
 
+DEFUN ("window-system", Fwindow_system, Swindow_system, 0, 1, 0,
+       doc: /* The name of the window system that FRAME is displaying through.
+The value is a symbol---for instance, 'x' for X windows.
+The value is nil if Emacs is using a text-only terminal.
+
+FRAME defaults to the currently selected frame.  */)
+  (frame)
+     Lisp_Object frame;
+{
+  Lisp_Object type;
+  if (NILP (frame))
+    frame = selected_frame;
+
+  type = Fframep (frame);
+
+  if (NILP (type))
+    wrong_type_argument (Qframep, frame);
+
+  if (EQ (type, Qt))
+    return Qnil;
+  else
+    return type;
+}      
+
 struct frame *
 make_frame (mini_p)
      int mini_p;
@@ -279,9 +306,7 @@ make_frame (mini_p)
   f->menu_bar_items_used = 0;
   f->buffer_predicate = Qnil;
   f->buffer_list = Qnil;
-#ifdef MULTI_KBOARD
-  f->kboard = initial_kboard;
-#endif
+  f->buried_buffer_list = Qnil;
   f->namebuf = 0;
   f->title = Qnil;
   f->menu_bar_window = Qnil;
@@ -401,8 +426,8 @@ make_frame_without_minibuffer (mini_window, kb, display)
 
 #ifdef MULTI_KBOARD
   if (!NILP (mini_window)
-      && XFRAME (XWINDOW (mini_window)->frame)->kboard != kb)
-    error ("Frame and minibuffer must be on the same display");
+      && FRAME_KBOARD (XFRAME (XWINDOW (mini_window)->frame)) != kb)
+    error ("Frame and minibuffer must be on the same terminal");
 #endif
 
   /* Make a frame containing just a root window.  */
@@ -478,18 +503,19 @@ make_minibuffer_frame ()
 }
 #endif /* HAVE_WINDOW_SYSTEM */
 \f
-/* Construct a frame that refers to the terminal (stdin and stdout).  */
+/* Construct a frame that refers to a terminal.  */
 
-static int terminal_frame_count;
+static int tty_frame_count;
 
 struct frame *
-make_terminal_frame ()
+make_initial_frame (void)
 {
-  register struct frame *f;
+  struct frame *f;
+  struct terminal *terminal;
   Lisp_Object frame;
-  char name[20];
 
 #ifdef MULTI_KBOARD
+  /* Create the initial keyboard. */
   if (!initial_kboard)
     {
       initial_kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
@@ -503,13 +529,51 @@ make_terminal_frame ()
   if (! (NILP (Vframe_list) || CONSP (Vframe_list)))
     Vframe_list = Qnil;
 
+  terminal = init_initial_terminal ();
+
+  f = make_frame (1);
+  XSETFRAME (frame, f);
+
+  Vframe_list = Fcons (frame, Vframe_list);
+
+  tty_frame_count = 1;
+  f->name = build_string ("F1");
+
+  f->visible = 1;
+  f->async_visible = 1;
+
+  f->output_method = terminal->type;
+  f->terminal = terminal;
+  f->terminal->reference_count++;
+  f->output_data.nothing = 0;
+  
+  FRAME_FOREGROUND_PIXEL (f) = FACE_TTY_DEFAULT_FG_COLOR;
+  FRAME_BACKGROUND_PIXEL (f) = FACE_TTY_DEFAULT_BG_COLOR;
+    
+  FRAME_CAN_HAVE_SCROLL_BARS (f) = 0;
+  FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none;
+
+  return f;
+}
+
+
+struct frame *
+make_terminal_frame (struct terminal *terminal)
+{
+  register struct frame *f;
+  Lisp_Object frame;
+  char name[20];
+
+  if (!terminal->name)
+    error ("Terminal is not live, can't create new frames on it");
+
   f = make_frame (1);
 
   XSETFRAME (frame, f);
   Vframe_list = Fcons (frame, Vframe_list);
 
-  terminal_frame_count++;
-  sprintf (name, "F%d", terminal_frame_count);
+  tty_frame_count++;
+  sprintf (name, "F%d", tty_frame_count);
   f->name = build_string (name);
 
   f->visible = 1;              /* FRAME_SET_VISIBLE wd set frame_garbaged. */
@@ -529,30 +593,44 @@ make_terminal_frame ()
         for the black color.  Other frames all inherit their pixels
         from what's already in the_only_x_display.  */
       if ((!FRAMEP (selected_frame) || !FRAME_LIVE_P (XFRAME (selected_frame)))
-         && f->output_data.x->background_pixel == 0
-         && f->output_data.x->foreground_pixel == 0)
+         && FRAME_BACKGROUND_PIXEL (f) == 0
+         && FRAME_FOREGROUND_PIXEL (f) == 0)
        {
-         f->output_data.x->background_pixel = FACE_TTY_DEFAULT_BG_COLOR;
-         f->output_data.x->foreground_pixel = FACE_TTY_DEFAULT_FG_COLOR;
+         FRAME_BACKGROUND_PIXEL (f) = FACE_TTY_DEFAULT_BG_COLOR;
+         FRAME_FOREGROUND_PIXEL (f) = FACE_TTY_DEFAULT_FG_COLOR;
        }
     }
   else
     f->output_method = output_termcap;
 #else
-#ifdef WINDOWSNT
-  f->output_method = output_termcap;
-  f->output_data.x = &tty_display;
-#else
 #ifdef MAC_OS8
   make_mac_terminal_frame (f);
 #else
-  f->output_data.x = &tty_display;
+  {
+    f->output_method = output_termcap;
+    f->terminal = terminal;
+    f->terminal->reference_count++;
+    create_tty_output (f);
+    
+    FRAME_FOREGROUND_PIXEL (f) = FACE_TTY_DEFAULT_FG_COLOR;
+    FRAME_BACKGROUND_PIXEL (f) = FACE_TTY_DEFAULT_BG_COLOR;
+    
+    FRAME_CAN_HAVE_SCROLL_BARS (f) = 0;
+    FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none;
+
+    /* Set the top frame to the newly created frame. */
+    if (FRAMEP (FRAME_TTY (f)->top_frame)
+        && FRAME_LIVE_P (XFRAME (FRAME_TTY (f)->top_frame)))
+      XFRAME (FRAME_TTY (f)->top_frame)->async_visible = 2; /* obscured */
+    
+    FRAME_TTY (f)->top_frame = frame;
+  }
+  
 #ifdef CANNOT_DUMP
   FRAME_FOREGROUND_PIXEL(f) = FACE_TTY_DEFAULT_FG_COLOR;
   FRAME_BACKGROUND_PIXEL(f) = FACE_TTY_DEFAULT_BG_COLOR;
 #endif
 #endif /* MAC_OS8 */
-#endif /* WINDOWSNT */
 #endif /* MSDOS */
 
   if (!noninteractive)
@@ -561,18 +639,55 @@ make_terminal_frame ()
   return f;
 }
 
+/* Get a suitable value for frame parameter PARAMETER for a newly
+   created frame, based on (1) the user-supplied frame parameter
+   alist SUPPLIED_PARMS, (2) CURRENT_VALUE, and finally, if all else
+   fails, (3) Vdefault_frame_alist.  */
+
+static Lisp_Object
+get_future_frame_param (Lisp_Object parameter,
+                        Lisp_Object supplied_parms,
+                        char *current_value)
+{
+  Lisp_Object result;
+
+  result = Fassq (parameter, supplied_parms);
+  if (NILP (result))
+    result = Fassq (parameter, XFRAME (selected_frame)->param_alist);
+  if (NILP (result) && current_value != NULL)
+    result = build_string (current_value);
+  if (NILP (result))
+    result = Fassq (parameter, Vdefault_frame_alist);
+  if (!NILP (result) && !STRINGP (result))
+    result = XCDR (result);
+  if (NILP (result) || !STRINGP (result))
+    result = Qnil;
+
+  return result;
+}
+
 DEFUN ("make-terminal-frame", Fmake_terminal_frame, Smake_terminal_frame,
        1, 1, 0,
-       doc: /* Create an additional terminal frame.
-You can create multiple frames on a text-only terminal in this way.
-Only the selected terminal frame is actually displayed.
+       doc: /* Create an additional terminal frame, possibly on another terminal.
 This function takes one argument, an alist specifying frame parameters.
-In practice, generally you don't need to specify any parameters.
-Note that changing the size of one terminal frame automatically affects all.  */)
+
+You can create multiple frames on a single text-only terminal, but
+only one of them (the selected terminal frame) is actually displayed.
+
+In practice, generally you don't need to specify any parameters,
+except when you want to create a new frame on another terminal.
+In that case, the `tty' parameter specifies the device file to open,
+and the `tty-type' parameter specifies the terminal type.  Example:
+
+   (make-terminal-frame '((tty . "/dev/pts/5") (tty-type . "xterm")))
+
+Note that changing the size of one terminal frame automatically
+affects all frames on the same terminal device.  */)
      (parms)
      Lisp_Object parms;
 {
   struct frame *f;
+  struct terminal *t = NULL;
   Lisp_Object frame, tem;
   struct frame *sf = SELECTED_FRAME ();
 
@@ -582,25 +697,84 @@ Note that changing the size of one terminal frame automatically affects all.  */
     abort ();
 #else /* not MSDOS */
 
-#ifdef MAC_OS
+#if 0 /* #ifdef MAC_OS */
+  /* This can happen for multi-tty when using both terminal frames and
+     Carbon frames. */
   if (sf->output_method != output_mac)
     error ("Not running on a Macintosh screen; cannot make a new Macintosh frame");
 #else
+#if 0                           /* This should work now! */
   if (sf->output_method != output_termcap)
     error ("Not using an ASCII terminal now; cannot make a new ASCII frame");
 #endif
+#endif
 #endif /* not MSDOS */
+  
+  {
+    Lisp_Object terminal;
+
+    terminal = Fassq (Qterminal, parms);
+    if (!NILP (terminal))
+      {
+        terminal = XCDR (terminal);
+        t = get_terminal (terminal, 1);
+      }
+  }
+  
+  if (!t)
+    { 
+      char *name = 0, *type = 0;
+      Lisp_Object tty, tty_type;
+
+      tty = get_future_frame_param
+        (Qtty, parms, (FRAME_TERMCAP_P (XFRAME (selected_frame))
+                       ? FRAME_TTY (XFRAME (selected_frame))->name
+                       : NULL));
+      if (!NILP (tty))
+        {
+          name = (char *) alloca (SBYTES (tty) + 1);
+          strncpy (name, SDATA (tty), SBYTES (tty));
+          name[SBYTES (tty)] = 0;
+        }
+      
+      tty_type = get_future_frame_param
+        (Qtty_type, parms, (FRAME_TERMCAP_P (XFRAME (selected_frame))
+                            ? FRAME_TTY (XFRAME (selected_frame))->type
+                            : NULL));
+      if (!NILP (tty_type))
+        {
+          type = (char *) alloca (SBYTES (tty_type) + 1);
+          strncpy (type, SDATA (tty_type), SBYTES (tty_type));
+          type[SBYTES (tty_type)] = 0;
+        }
+
+      t = init_tty (name, type, 0); /* Errors are not fatal. */
+    }
 
-  f = make_terminal_frame ();
+  f = make_terminal_frame (t);
 
-  change_frame_size (f, FRAME_LINES (sf),
-                    FRAME_COLS (sf), 0, 0, 0);
+  {
+    int width, height;
+    get_tty_size (fileno (FRAME_TTY (f)->input), &width, &height);
+    change_frame_size (f, height, width, 0, 0, 0);
+  }
+  
   adjust_glyphs (f);
   calculate_costs (f);
   XSETFRAME (frame, f);
   Fmodify_frame_parameters (frame, Vdefault_frame_alist);
   Fmodify_frame_parameters (frame, parms);
-
+  Fmodify_frame_parameters (frame, Fcons (Fcons (Qwindow_system, Qnil), Qnil));
+  Fmodify_frame_parameters (frame, Fcons (Fcons (Qtty_type,
+                                                 build_string (t->display_info.tty->type)),
+                                          Qnil));
+  if (t->display_info.tty->name != NULL)
+    Fmodify_frame_parameters (frame, Fcons (Fcons (Qtty,
+                                                   build_string (t->display_info.tty->name)),
+                                            Qnil));
+  else
+    Fmodify_frame_parameters (frame, Fcons (Fcons (Qtty, Qnil), Qnil));
+  
   /* Make the frame face alist be frame-specific, so that each
      frame could change its face definitions independently.  */
   f->face_alist = Fcopy_alist (sf->face_alist);
@@ -623,7 +797,7 @@ Note that changing the size of one terminal frame automatically affects all.  */
    frame's focus to FRAME instead.
 
    FOR_DELETION non-zero means that the selected frame is being
-   deleted, which includes the possibility that the frame's display
+   deleted, which includes the possibility that the frame's terminal
    is dead.  */
 
 Lisp_Object
@@ -698,6 +872,15 @@ do_switch_frame (frame, track, for_deletion)
   if (!for_deletion && FRAME_HAS_MINIBUF_P (sf))
     resize_mini_window (XWINDOW (FRAME_MINIBUF_WINDOW (sf)), 1);
 
+  if (FRAME_TERMCAP_P (XFRAME (selected_frame))
+      && FRAME_TERMCAP_P (XFRAME (frame))
+      && FRAME_TTY (XFRAME (selected_frame)) == FRAME_TTY (XFRAME (frame)))
+    {
+      XFRAME (selected_frame)->async_visible = 2; /* obscured */
+      XFRAME (frame)->async_visible = 1;
+      FRAME_TTY (XFRAME (frame))->top_frame = frame;
+    }
+
   selected_frame = frame;
   if (! FRAME_MINIBUF_ONLY_P (XFRAME (selected_frame)))
     last_nonminibuf_frame = XFRAME (selected_frame);
@@ -881,6 +1064,7 @@ If FRAME is the selected frame, this makes WINDOW the selected window.  */)
 
   return XFRAME (frame)->selected_window = window;
 }
+
 \f
 DEFUN ("frame-list", Fframe_list, Sframe_list,
        0, 0, 0,
@@ -928,7 +1112,10 @@ next_frame (frame, minibuf)
        f = XCAR (tail);
 
        if (passed
-           && FRAME_KBOARD (XFRAME (f)) == FRAME_KBOARD (XFRAME (frame)))
+           && ((!FRAME_TERMCAP_P (XFRAME (f)) && !FRAME_TERMCAP_P (XFRAME (frame))
+                 && FRAME_KBOARD (XFRAME (f)) == FRAME_KBOARD (XFRAME (frame)))
+                || (FRAME_TERMCAP_P (XFRAME (f)) && FRAME_TERMCAP_P (XFRAME (frame))
+                    && FRAME_TTY (XFRAME (f)) == FRAME_TTY (XFRAME (frame)))))
          {
            /* Decide whether this frame is eligible to be returned.  */
 
@@ -1005,7 +1192,10 @@ prev_frame (frame, minibuf)
       if (EQ (frame, f) && !NILP (prev))
        return prev;
 
-      if (FRAME_KBOARD (XFRAME (f)) == FRAME_KBOARD (XFRAME (frame)))
+      if ((!FRAME_TERMCAP_P (XFRAME (f)) && !FRAME_TERMCAP_P (XFRAME (frame))
+           && FRAME_KBOARD (XFRAME (f)) == FRAME_KBOARD (XFRAME (frame)))
+          || (FRAME_TERMCAP_P (XFRAME (f)) && FRAME_TERMCAP_P (XFRAME (frame))
+              && FRAME_TTY (XFRAME (f)) == FRAME_TTY (XFRAME (frame))))
        {
          /* Decide whether this frame is eligible to be returned,
             according to minibuf.  */
@@ -1139,6 +1329,14 @@ other_visible_frames (f)
   return 1;
 }
 
+/* Error handler for `delete-frame-functions'. */
+static Lisp_Object
+delete_frame_handler (Lisp_Object arg)
+{
+  add_to_log ("Error during `delete-frame': %s", arg, Qnil);
+  return Qnil;
+}
+
 DEFUN ("delete-frame", Fdelete_frame, Sdelete_frame, 0, 2, "",
        doc: /* Delete FRAME, permanently eliminating it from use.
 If omitted, FRAME defaults to the selected frame.
@@ -1154,6 +1352,8 @@ The functions are run with one arg, the frame to be deleted.  */)
 {
   struct frame *f;
   struct frame *sf = SELECTED_FRAME ();
+  struct kboard *kb;
+
   int minibuffer_selected;
 
   if (EQ (frame, Qnil))
@@ -1212,11 +1412,22 @@ The functions are run with one arg, the frame to be deleted.  */)
       && NILP (Fframe_parameter (frame, intern ("tooltip"))))
     {
       Lisp_Object args[2];
+      struct gcpro gcpro1, gcpro2;
+
+      /* Don't let a rogue function in `delete-frame-functions'
+        prevent the frame deletion. */
+      GCPRO2 (args[0], args[1]);
       args[0] = intern ("delete-frame-functions");
       args[1] = frame;
-      Frun_hook_with_args (2, args);
+      internal_condition_case_2 (Frun_hook_with_args, 2, args,
+                                Qt, delete_frame_handler);
+      UNGCPRO;
     }
 
+  /* The hook may sometimes (indirectly) cause the frame to be deleted.  */
+  if (! FRAME_LIVE_P (f))
+    return Qnil;
+
   minibuffer_selected = EQ (minibuf_window, selected_window);
 
   /* Don't let the frame remain selected.  */
@@ -1232,7 +1443,7 @@ The functions are run with one arg, the frame to be deleted.  */)
        {
          FOR_EACH_FRAME (tail, frame1)
            {
-             if (! EQ (frame, frame1))
+             if (! EQ (frame, frame1) && FRAME_LIVE_P (XFRAME (frame1)))
                break;
            }
        }
@@ -1298,18 +1509,36 @@ The functions are run with one arg, the frame to be deleted.  */)
     xfree (FRAME_MESSAGE_BUF (f));
 
   /* Since some events are handled at the interrupt level, we may get
-     an event for f at any time; if we zero out the frame's display
+     an event for f at any time; if we zero out the frame's terminal
      now, then we may trip up the event-handling code.  Instead, we'll
-     promise that the display of the frame must be valid until we have
-     called the window-system-dependent frame destruction routine.  */
+     promise that the terminal of the frame must be valid until we
+     have called the window-system-dependent frame destruction
+     routine.  */
 
-  /* I think this should be done with a hook.  */
-#ifdef HAVE_WINDOW_SYSTEM
-  if (FRAME_WINDOW_P (f))
-    x_destroy_window (f);
-#endif
+  if (FRAME_TERMINAL (f)->delete_frame_hook)
+    (*FRAME_TERMINAL (f)->delete_frame_hook) (f);
 
-  f->output_data.nothing = 0;
+  {
+    struct terminal *terminal = FRAME_TERMINAL (f);
+    f->output_data.nothing = 0; 
+    f->terminal = 0;             /* Now the frame is dead. */
+
+    /* If needed, delete the terminal that this frame was on.
+       (This must be done after the frame is killed.) */
+    terminal->reference_count--;
+    if (terminal->reference_count == 0)
+      {
+        kb = NULL;
+        if (terminal->delete_terminal_hook)
+          (*terminal->delete_terminal_hook) (terminal);
+        else
+          delete_terminal (terminal);
+      }
+#ifdef MULTI_KBOARD
+    else
+      kb = terminal->kboard;
+#endif
+  }
 
   /* If we've deleted the last_nonminibuf_frame, then try to find
      another one.  */
@@ -1334,38 +1563,39 @@ The functions are run with one arg, the frame to be deleted.  */)
 
   /* If there's no other frame on the same kboard, get out of
      single-kboard state if we're in it for this kboard.  */
-  {
-    Lisp_Object frames;
-    /* Some frame we found on the same kboard, or nil if there are none.  */
-    Lisp_Object frame_on_same_kboard;
+  if (kb != NULL)
+    {
+      Lisp_Object frames;
+      /* Some frame we found on the same kboard, or nil if there are none.  */
+      Lisp_Object frame_on_same_kboard;
 
-    frame_on_same_kboard = Qnil;
+      frame_on_same_kboard = Qnil;
 
-    for (frames = Vframe_list;
-        CONSP (frames);
-        frames = XCDR (frames))
-      {
-       Lisp_Object this;
-       struct frame *f1;
+      for (frames = Vframe_list;
+          CONSP (frames);
+          frames = XCDR (frames))
+       {
+         Lisp_Object this;
+         struct frame *f1;
 
-       this = XCAR (frames);
-       if (!FRAMEP (this))
-         abort ();
-       f1 = XFRAME (this);
+         this = XCAR (frames);
+         if (!FRAMEP (this))
+           abort ();
+         f1 = XFRAME (this);
 
-       if (FRAME_KBOARD (f) == FRAME_KBOARD (f1))
-         frame_on_same_kboard = this;
-      }
+         if (kb == FRAME_KBOARD (f1))
+           frame_on_same_kboard = this;
+       }
 
-    if (NILP (frame_on_same_kboard))
-      not_single_kboard_state (FRAME_KBOARD (f));
-  }
+      if (NILP (frame_on_same_kboard))
+       not_single_kboard_state (kb);
+    }
 
 
   /* If we've deleted this keyboard's default_minibuffer_frame, try to
      find another one.  Prefer minibuffer-only frames, but also notice
      frames with other windows.  */
-  if (EQ (frame, FRAME_KBOARD (f)->Vdefault_minibuffer_frame))
+  if (kb != NULL && EQ (frame, kb->Vdefault_minibuffer_frame))
     {
       Lisp_Object frames;
 
@@ -1391,7 +1621,7 @@ The functions are run with one arg, the frame to be deleted.  */)
 
          /* Consider only frames on the same kboard
             and only those with minibuffers.  */
-         if (FRAME_KBOARD (f) == FRAME_KBOARD (f1)
+         if (kb == FRAME_KBOARD (f1)
              && FRAME_HAS_MINIBUF_P (f1))
            {
              frame_with_minibuf = this;
@@ -1399,7 +1629,7 @@ The functions are run with one arg, the frame to be deleted.  */)
                break;
            }
 
-         if (FRAME_KBOARD (f) == FRAME_KBOARD (f1))
+         if (kb == FRAME_KBOARD (f1))
            frame_on_same_kboard = this;
        }
 
@@ -1414,11 +1644,11 @@ The functions are run with one arg, the frame to be deleted.  */)
          if (NILP (frame_with_minibuf))
            abort ();
 
-         FRAME_KBOARD (f)->Vdefault_minibuffer_frame = frame_with_minibuf;
+         kb->Vdefault_minibuffer_frame = frame_with_minibuf;
        }
       else
        /* No frames left on this kboard--say no minibuffer either.  */
-       FRAME_KBOARD (f)->Vdefault_minibuffer_frame = Qnil;
+       kb->Vdefault_minibuffer_frame = Qnil;
     }
 
   /* Cause frame titles to update--necessary if we now have just one frame.  */
@@ -1453,13 +1683,13 @@ and returns whatever that function returns.  */)
   f = SELECTED_FRAME ();
   x = y = Qnil;
 
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
   /* It's okay for the hook to refrain from storing anything.  */
-  if (mouse_position_hook)
-    (*mouse_position_hook) (&f, -1,
-                           &lispy_dummy, &party_dummy,
-                           &x, &y,
-                           &long_dummy);
+  if (FRAME_TERMINAL (f)->mouse_position_hook)
+    (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1,
+                                                &lispy_dummy, &party_dummy,
+                                                &x, &y,
+                                                &long_dummy);
   if (! NILP (x))
     {
       col = XINT (x);
@@ -1497,13 +1727,13 @@ and nil for X and Y.  */)
   f = SELECTED_FRAME ();
   x = y = Qnil;
 
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
   /* It's okay for the hook to refrain from storing anything.  */
-  if (mouse_position_hook)
-    (*mouse_position_hook) (&f, -1,
-                           &lispy_dummy, &party_dummy,
-                           &x, &y,
-                           &long_dummy);
+  if (FRAME_TERMINAL (f)->mouse_position_hook)
+    (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1,
+                                                &lispy_dummy, &party_dummy,
+                                                &x, &y,
+                                                &long_dummy);
 #endif
   XSETFRAME (lispy_dummy, f);
   return Fcons (lispy_dummy, Fcons (x, y));
@@ -1542,6 +1772,13 @@ before calling this function on it, like this.
       Fselect_frame (frame);
       mouse_moveto (XINT (x), XINT (y));
     }
+#else
+#ifdef HAVE_GPM
+    {
+      Fselect_frame (frame);
+      term_mouse_moveto (XINT (x), XINT (y));
+    }
+#endif
 #endif
 #endif
 
@@ -1577,6 +1814,13 @@ before calling this function on it, like this.
       Fselect_frame (frame);
       mouse_moveto (XINT (x), XINT (y));
     }
+#else
+#ifdef HAVE_GPM
+    {
+      Fselect_frame (frame);
+      term_mouse_moveto (XINT (x), XINT (y));
+    }
+#endif
 #endif
 #endif
 
@@ -1776,16 +2020,19 @@ doesn't support multiple overlapping frames, this function does nothing.  */)
      (frame)
      Lisp_Object frame;
 {
+  struct frame *f;
   if (NILP (frame))
     frame = selected_frame;
 
   CHECK_LIVE_FRAME (frame);
 
+  f = XFRAME (frame);
+  
   /* Do like the documentation says. */
   Fmake_frame_visible (frame);
 
-  if (frame_raise_lower_hook)
-    (*frame_raise_lower_hook) (XFRAME (frame), 1);
+  if (FRAME_TERMINAL (f)->frame_raise_lower_hook)
+    (*FRAME_TERMINAL (f)->frame_raise_lower_hook) (f, 1);
 
   return Qnil;
 }
@@ -1799,13 +2046,17 @@ doesn't support multiple overlapping frames, this function does nothing.  */)
      (frame)
      Lisp_Object frame;
 {
+  struct frame *f;
+  
   if (NILP (frame))
     frame = selected_frame;
 
   CHECK_LIVE_FRAME (frame);
 
-  if (frame_raise_lower_hook)
-    (*frame_raise_lower_hook) (XFRAME (frame), 0);
+  f = XFRAME (frame);
+  
+  if (FRAME_TERMINAL (f)->frame_raise_lower_hook)
+    (*FRAME_TERMINAL (f)->frame_raise_lower_hook) (f, 0);
 
   return Qnil;
 }
@@ -1839,6 +2090,8 @@ The redirection lasts until `redirect-frame-focus' is called to change it.  */)
      (frame, focus_frame)
      Lisp_Object frame, focus_frame;
 {
+  struct frame *f;
+  
   /* Note that we don't check for a live frame here.  It's reasonable
      to redirect the focus of a frame you're about to delete, if you
      know what other frame should receive those keystrokes.  */
@@ -1847,10 +2100,12 @@ The redirection lasts until `redirect-frame-focus' is called to change it.  */)
   if (! NILP (focus_frame))
     CHECK_LIVE_FRAME (focus_frame);
 
-  XFRAME (frame)->focus_frame = focus_frame;
+  f = XFRAME (frame);
+  
+  f->focus_frame = focus_frame;
 
-  if (frame_rehighlight_hook)
-    (*frame_rehighlight_hook) (XFRAME (frame));
+  if (FRAME_TERMINAL (f)->frame_rehighlight_hook)
+    (*FRAME_TERMINAL (f)->frame_rehighlight_hook) (f);
 
   return Qnil;
 }
@@ -1912,7 +2167,7 @@ set_frame_buffer_list (frame, list)
   XFRAME (frame)->buffer_list = list;
 }
 
-/* Discard BUFFER from the buffer-list of each frame.  */
+/* Discard BUFFER from the buffer-list and buried-buffer-list of each frame.  */
 
 void
 frames_discard_buffer (buffer)
@@ -1924,6 +2179,8 @@ frames_discard_buffer (buffer)
     {
       XFRAME (frame)->buffer_list
        = Fdelq (buffer, XFRAME (frame)->buffer_list);
+      XFRAME (frame)->buried_buffer_list
+        = Fdelq (buffer, XFRAME (frame)->buried_buffer_list);
     }
 }
 
@@ -1982,8 +2239,8 @@ set_term_frame_name (f, name)
                            SBYTES (f->name)))
        return;
 
-      terminal_frame_count++;
-      sprintf (namebuf, "F%d", terminal_frame_count);
+      tty_frame_count++;
+      sprintf (namebuf, "F%d", tty_frame_count);
       name = build_string (namebuf);
     }
   else
@@ -2011,13 +2268,18 @@ store_frame_param (f, prop, val)
 {
   register Lisp_Object old_alist_elt;
 
-  /* The buffer-alist parameter is stored in a special place and is
-     not in the alist.  */
+  /* The buffer-list parameters are stored in a special place and not
+     in the alist.  */
   if (EQ (prop, Qbuffer_list))
     {
       f->buffer_list = val;
       return;
     }
+  if (EQ (prop, Qburied_buffer_list))
+    {
+      f->buried_buffer_list = val;
+      return;
+    }
 
   /* If PROP is a symbol which is supposed to have frame-local values,
      and it is set up based on this frame, switch to the global
@@ -2030,6 +2292,7 @@ store_frame_param (f, prop, val)
       if ((BUFFER_LOCAL_VALUEP (valcontents)
           || SOME_BUFFER_LOCAL_VALUEP (valcontents))
          && XBUFFER_LOCAL_VALUE (valcontents)->check_frame
+         && XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame
          && XFRAME (XBUFFER_LOCAL_VALUE (valcontents)->frame) == f)
        swap_in_global_binding (prop);
     }
@@ -2112,7 +2375,7 @@ If FRAME is omitted, return information on the currently selected frame.  */)
         unspecified and reversed, take the frame's background pixel
         for foreground and vice versa.  */
       elt = Fassq (Qforeground_color, alist);
-      if (!NILP (elt) && CONSP (elt) && STRINGP (XCDR (elt)))
+      if (CONSP (elt) && STRINGP (XCDR (elt)))
        {
          if (strncmp (SDATA (XCDR (elt)),
                       unspecified_bg,
@@ -2126,7 +2389,7 @@ If FRAME is omitted, return information on the currently selected frame.  */)
       else
        store_in_alist (&alist, Qforeground_color, tty_color_name (f, fg));
       elt = Fassq (Qbackground_color, alist);
-      if (!NILP (elt) && CONSP (elt) && STRINGP (XCDR (elt)))
+      if (CONSP (elt) && STRINGP (XCDR (elt)))
        {
          if (strncmp (SDATA (XCDR (elt)),
                       unspecified_fg,
@@ -2157,6 +2420,7 @@ If FRAME is omitted, return information on the currently selected frame.  */)
                   : FRAME_MINIBUF_WINDOW (f)));
   store_in_alist (&alist, Qunsplittable, (FRAME_NO_SPLIT_P (f) ? Qt : Qnil));
   store_in_alist (&alist, Qbuffer_list, frame_buffer_list (frame));
+  store_in_alist (&alist, Qburied_buffer_list, XFRAME (frame)->buried_buffer_list);
 
   /* I think this should be done with a hook.  */
 #ifdef HAVE_WINDOW_SYSTEM
@@ -2324,7 +2588,6 @@ enabled such bindings for that variable with `make-variable-frame-local'.  */)
            call1 (Qframe_set_background_mode, frame);
        }
     }
-
   return Qnil;
 }
 \f
@@ -2743,9 +3006,8 @@ x_set_frame_parameters (f, alist)
              if (NATNUMP (param_index)
                  && (XFASTINT (param_index)
                      < sizeof (frame_parms)/sizeof (frame_parms[0]))
-                 && rif->frame_parm_handlers[XINT (param_index)])
-               (*(rif->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
-
+                  && FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])
+                (*(FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
              unbind_to (count, Qnil);
            }
        }
@@ -2759,9 +3021,9 @@ x_set_frame_parameters (f, alist)
       prop = parms[i];
       val = values[i];
 
-      if (EQ (prop, Qwidth) && NUMBERP (val))
+      if (EQ (prop, Qwidth) && NATNUMP (val))
        width = XFASTINT (val);
-      else if (EQ (prop, Qheight) && NUMBERP (val))
+      else if (EQ (prop, Qheight) && NATNUMP (val))
        height = XFASTINT (val);
       else if (EQ (prop, Qtop))
        top = val;
@@ -2789,8 +3051,8 @@ x_set_frame_parameters (f, alist)
          if (NATNUMP (param_index)
              && (XFASTINT (param_index)
                  < sizeof (frame_parms)/sizeof (frame_parms[0]))
-             && rif->frame_parm_handlers[XINT (param_index)])
-           (*(rif->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
+             && FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])
+           (*(FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
        }
     }
 
@@ -3029,8 +3291,8 @@ x_set_fullscreen (f, new_value, old_value)
   else if (EQ (new_value, Qfullheight))
     f->want_fullscreen = FULLSCREEN_HEIGHT;
 
-  if (fullscreen_hook != NULL) 
-    fullscreen_hook (f);
+  if (FRAME_TERMINAL (f)->fullscreen_hook != NULL) 
+    FRAME_TERMINAL (f)->fullscreen_hook (f);
 }
 
 
@@ -3079,9 +3341,9 @@ x_set_screen_gamma (f, new_value, old_value)
       if (NATNUMP (index)
          && (XFASTINT (index)
              < sizeof (frame_parms)/sizeof (frame_parms[0]))
-         && rif->frame_parm_handlers[XFASTINT (index)])
-       (*(rif->frame_parm_handlers[XFASTINT (index)]))
-         (f, bgcolor, Qnil);
+         && FRAME_RIF (f)->frame_parm_handlers[XFASTINT (index)])
+         (*FRAME_RIF (f)->frame_parm_handlers[XFASTINT (index)])
+           (f, bgcolor, Qnil);
     }
 
   Fclear_face_cache (Qnil);
@@ -4019,12 +4281,20 @@ syms_of_frame ()
   staticpro (&Qbuffer_predicate);
   Qbuffer_list = intern ("buffer-list");
   staticpro (&Qbuffer_list);
+  Qburied_buffer_list = intern ("buried-buffer-list");
+  staticpro (&Qburied_buffer_list);
   Qdisplay_type = intern ("display-type");
   staticpro (&Qdisplay_type);
   Qbackground_mode = intern ("background-mode");
   staticpro (&Qbackground_mode);
   Qtty_color_mode = intern ("tty-color-mode");
   staticpro (&Qtty_color_mode);
+  Qtty = intern ("tty");
+  staticpro (&Qtty);
+  Qtty_type = intern ("tty-type");
+  staticpro (&Qtty_type);
+  Qwindow_system = intern ("window-system");
+  staticpro (&Qwindow_system);
 
   Qface_set_after_frame_default = intern ("face-set-after-frame-default");
   staticpro (&Qface_set_after_frame_default);
@@ -4045,6 +4315,11 @@ syms_of_frame ()
   Qx_frame_parameter = intern ("x-frame-parameter");
   staticpro (&Qx_frame_parameter);
 
+  Qterminal = intern ("terminal");
+  staticpro (&Qterminal);
+  Qterminal_live_p = intern ("terminal-live-p");
+  staticpro (&Qterminal_live_p);
+  
   {
     int i;
 
@@ -4093,6 +4368,7 @@ These may be set in your init file, like this:
 These override values given in window system configuration data,
  including X Windows' defaults database.
 For values specific to the first Emacs frame, see `initial-frame-alist'.
+For window-system specific values, see `window-system-default-frame-alist'.
 For values specific to the separate minibuffer frame, see
  `minibuffer-frame-alist'.
 The `menu-bar-lines' element of the list controls whether new frames
@@ -4114,7 +4390,7 @@ Setting this variable does not affect existing frames, only new ones.  */);
 #endif
 
   DEFVAR_LISP ("terminal-frame", &Vterminal_frame,
-              doc: /* The initial frame-object, which represents Emacs's stdout.  */);
+               doc: /* The initial frame-object, which represents Emacs's stdout.  */);
 
   DEFVAR_LISP ("emacs-iconified", &Vemacs_iconified,
               doc: /* Non-nil if all of Emacs is iconified and frame updates are not needed.  */);
@@ -4139,7 +4415,14 @@ when the mouse is over clickable text.  */);
   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'.  */);
+See `delete-frame'.
+
+Note that functions in this list may be called twice on the same
+frame.  In the second invocation, the frame is already deleted, and
+the function should do nothing.  (You can use `frame-live-p' to check
+for this.)  This wrinkle happens when an earlier function in
+`delete-frame-functions' (indirectly) calls delete-frame
+recursively.  */);
   Vdelete_frame_functions = Qnil;
 
   DEFVAR_KBOARD ("default-minibuffer-frame", Vdefault_minibuffer_frame,
@@ -4177,6 +4460,7 @@ automatically.  */);
   defsubr (&Sactive_minibuffer_window);
   defsubr (&Sframep);
   defsubr (&Sframe_live_p);
+  defsubr (&Swindow_system);
   defsubr (&Smake_terminal_frame);
   defsubr (&Shandle_switch_frame);
   defsubr (&Sselect_frame);
index 03e887b7a9702b9c573c044a2a9c31e40bc8e5e2..d76cc15402a65313c51dbf54b2266bba2d32eb69 100644 (file)
@@ -29,9 +29,7 @@ Boston, MA 02110-1301, USA.  */
 \f
 /* Miscellanea.  */
 
-/* Nonzero means don't assume anything about current contents of
-   actual terminal frame */
-
+/* Nonzero means there is at least one garbaged frame. */
 extern int frame_garbaged;
 
 /* Nonzero means FRAME_MESSAGE_BUF (selected_frame) is being used by
@@ -49,6 +47,7 @@ extern int focus_follows_mouse;
 
 enum output_method
 {
+  output_initial,
   output_termcap,
   output_x_window,
   output_msdos_raw,
@@ -73,38 +72,17 @@ enum text_cursor_kinds
   HBAR_CURSOR
 };
 
-#if !defined(MSDOS) && !defined(WINDOWSNT) && !defined(MAC_OS)
-
-#if !defined(HAVE_X_WINDOWS)
-
-#define PIX_TYPE unsigned long
-
-/* A (mostly empty) x_output structure definition for building Emacs
-   on Unix and GNU/Linux without X support.  */
-struct x_output
-{
-  PIX_TYPE background_pixel;
-  PIX_TYPE foreground_pixel;
-};
+#define FRAME_FOREGROUND_PIXEL(f) ((f)->foreground_pixel)
+#define FRAME_BACKGROUND_PIXEL(f) ((f)->background_pixel)
 
-#endif /* ! HAVE_X_WINDOWS */
-
-
-#define FRAME_FOREGROUND_PIXEL(f) ((f)->output_data.x->foreground_pixel)
-#define FRAME_BACKGROUND_PIXEL(f) ((f)->output_data.x->background_pixel)
-
-/* A structure describing a termcap frame display.  */
-extern struct x_output tty_display;
-
-#endif /* ! MSDOS && ! WINDOWSNT && ! MAC_OS */
+struct terminal;
 
 struct frame
 {
-  EMACS_INT size;
+  EMACS_UINT size;
   struct Lisp_Vector *next;
 
   /* All Lisp_Object components must come first.
-     Only EMACS_INT values can be intermixed with them.
      That ensures they are all aligned normally.  */
 
   /* Name of this frame: a Lisp string.  It is used for looking up resources,
@@ -158,7 +136,7 @@ struct frame
      Actually, we don't specify exactly what is stored here at all; the
      scroll bar implementation code can use it to store anything it likes.
      This field is marked by the garbage collector.  It is here
-     instead of in the `display' structure so that the garbage
+     instead of in the `device' structure so that the garbage
      collector doesn't need to look inside the window-system-dependent
      structure.  */
   Lisp_Object scroll_bars;
@@ -178,8 +156,6 @@ struct frame
      For the format of the data, see extensive comments in xmenu.c.
      Only the X toolkit version uses this.  */
   Lisp_Object menu_bar_vector;
-  /* Number of elements in the vector that have meaningful data.  */
-  EMACS_INT menu_bar_items_used;
 
   /* Predicate for selecting buffers for other-buffer.  */
   Lisp_Object buffer_predicate;
@@ -187,6 +163,10 @@ struct frame
   /* List of buffers viewed in this frame, for other-buffer.  */
   Lisp_Object buffer_list;
 
+  /* List of buffers that were viewed, then buried in this frame.  The
+     most recently buried buffer is first.  For last-buffer.  */
+  Lisp_Object buried_buffer_list;
+
   /* A dummy window used to display menu bars under X when no X
      toolkit support is available.  */
   Lisp_Object menu_bar_window;
@@ -200,11 +180,14 @@ struct frame
   /* Desired and current contents displayed in tool_bar_window.  */
   Lisp_Object desired_tool_bar_string, current_tool_bar_string;
 
-  /* beyond here, there should be no more Lisp_Object components.  */
+  /* Beyond here, there should be no more Lisp_Object components.  */
 
   /* Cache of realized faces.  */
   struct face_cache *face_cache;
 
+  /* Number of elements in `menu_bar_vector' that have meaningful data.  */
+  EMACS_INT menu_bar_items_used;
+
   /* A buffer to hold the frame's name.  We can't use the Lisp
      string's pointer (`name', above) because it might get relocated.  */
   char *namebuf;
@@ -219,7 +202,7 @@ struct frame
      be used for output.  */
   unsigned glyphs_initialized_p : 1;
 
-#if defined (USE_GTK)
+#if defined (USE_GTK) || defined (MAC_OS)
   /* Nonzero means using a tool bar that comes from the toolkit.  */
   int external_tool_bar;
 #endif
@@ -288,20 +271,24 @@ struct frame
   /* Canonical Y unit.  Height of a line, in pixels.  */
   int line_height;
 
-  /* The output method says how the contents of this frame
-     are displayed.  It could be using termcap, or using an X window.  */
+  /* The output method says how the contents of this frame are
+     displayed.  It could be using termcap, or using an X window.
+     This must be the same as the terminal->type. */
   enum output_method output_method;
 
-  /* A structure of auxiliary data used for displaying the contents.
-     struct x_output is used for X window frames;
-     it is defined in xterm.h.
-     struct w32_output is used for W32 window frames;
-     it is defined in w32term.h.  */
+  /* The terminal device that this frame uses.  If this is NULL, then
+     the frame has been deleted. */
+  struct terminal *terminal;
+
+  /* Device-dependent, frame-local auxiliary data used for displaying
+     the contents.  When the frame is deleted, this data is deleted as
+     well. */
   union output_data
   {
-    struct x_output *x;
-    struct w32_output *w32;
-    struct mac_output *mac;
+    struct tty_output *tty;     /* termchar.h */
+    struct x_output *x;         /* xterm.h */
+    struct w32_output *w32;     /* w32term.h */
+    struct mac_output *mac;     /* macterm.h */
     EMACS_INT nothing;
   }
   output_data;
@@ -316,13 +303,6 @@ struct frame
   /* The extra width (in pixels) currently allotted for fringes.  */
   int left_fringe_width, right_fringe_width;
 
-#ifdef MULTI_KBOARD
-  /* A pointer to the kboard structure associated with this frame.
-     For termcap frames, this points to initial_kboard.  For X frames,
-     it will be the same as display.x->display_info->kboard.  */
-  struct kboard *kboard;
-#endif
-
   /* See FULLSCREEN_ enum below */
   int want_fullscreen;
 
@@ -346,13 +326,13 @@ struct frame
      frame becomes visible again, it must be marked as garbaged.  The
      FRAME_SAMPLE_VISIBILITY macro takes care of this.
 
-     On Windows NT/9X, to avoid wasting effort updating visible frames
-     that are actually completely obscured by other windows on the
-     display, we bend the meaning of visible slightly: if greater than
-     1, then the frame is obscured - we still consider it to be
-     "visible" as seen from lisp, but we don't bother updating it.  We
-     must take care to garbage the frame when it ceaces to be obscured
-     though.  Note that these semantics are only used on NT/9X.
+     On ttys and on Windows NT/9X, to avoid wasting effort updating
+     visible frames that are actually completely obscured by other
+     windows on the display, we bend the meaning of visible slightly:
+     if greater than 1, then the frame is obscured - we still consider
+     it to be "visible" as seen from lisp, but we don't bother
+     updating it.  We must take care to garbage the frame when it
+     ceaces to be obscured though.
 
      iconified is nonzero if the frame is currently iconified.
 
@@ -446,7 +426,7 @@ struct frame
   /* The baud rate that was used to calculate costs for this frame.  */
   int cost_calculation_baud_rate;
 
-  /* Nonzero if the mouse has moved on this display
+  /* Nonzero if the mouse has moved on this display device
      since the last time we checked.  */
   char mouse_moved;
 
@@ -466,6 +446,10 @@ struct frame
      update_frame, usually after resizing the frame.  */
   unsigned force_flush_display_p : 1;
 
+  /* All display backends seem to need these two pixel values. */
+  unsigned long background_pixel;
+  unsigned long foreground_pixel;
+
   /* Set to non-zero if the default face for the frame has been
      realized.  Reset to zero whenever the default face changes.
      Used to see the difference between a font change and face change.  */
@@ -484,7 +468,7 @@ struct frame
 };
 
 #ifdef MULTI_KBOARD
-#define FRAME_KBOARD(f) ((f)->kboard)
+#define FRAME_KBOARD(f) ((f)->terminal->kboard)
 #else
 #define FRAME_KBOARD(f) (&the_only_kboard)
 #endif
@@ -498,6 +482,7 @@ typedef struct frame *FRAME_PTR;
 #define WINDOW_FRAME(w) (w)->frame
 
 /* Test a frame for particular kinds of display methods.  */
+#define FRAME_INITIAL_P(f) ((f)->output_method == output_initial)
 #define FRAME_TERMCAP_P(f) ((f)->output_method == output_termcap)
 #define FRAME_X_P(f) ((f)->output_method == output_x_window)
 #define FRAME_W32_P(f) ((f)->output_method == output_w32)
@@ -521,7 +506,7 @@ typedef struct frame *FRAME_PTR;
 #endif
 
 /* Nonzero if frame F is still alive (not deleted).  */
-#define FRAME_LIVE_P(f) ((f)->output_data.nothing != 0)
+#define FRAME_LIVE_P(f) ((f)->terminal != 0)
 
 /* Nonzero if frame F is a minibuffer-only frame.  */
 #define FRAME_MINIBUF_ONLY_P(f) \
@@ -554,7 +539,7 @@ typedef struct frame *FRAME_PTR;
 
 /* Nonzero if this frame should display a tool bar
    in a way that does not use any text lines.  */
-#if defined (USE_GTK)
+#if defined (USE_GTK) || defined (MAC_OS)
 #define FRAME_EXTERNAL_TOOL_BAR(f) (f)->external_tool_bar
 #else
 #define FRAME_EXTERNAL_TOOL_BAR(f) 0
@@ -761,7 +746,10 @@ typedef struct frame *FRAME_PTR;
 
    Also, if a frame used to be invisible, but has just become visible,
    it must be marked as garbaged, since redisplay hasn't been keeping
-   up its contents.  */
+   up its contents.
+
+   Note that a tty frame is visible if and only if it is the topmost
+   frame. */
 
 #define FRAME_SAMPLE_VISIBILITY(f) \
   (((f)->async_visible && (f)->visible != (f)->async_visible) ? \
@@ -794,10 +782,13 @@ typedef struct frame *FRAME_PTR;
 
 
 extern Lisp_Object Qframep, Qframe_live_p;
+extern Lisp_Object Qtty, Qtty_type;
+extern Lisp_Object Qterminal, Qterminal_live_p;
 
 extern struct frame *last_nonminibuf_frame;
 
-extern struct frame *make_terminal_frame P_ ((void));
+extern struct frame *make_initial_frame P_ ((void));
+extern struct frame *make_terminal_frame P_ ((struct terminal *));
 extern struct frame *make_frame P_ ((int));
 #ifdef HAVE_WINDOW_SYSTEM
 extern struct frame *make_minibuffer_frame P_ ((void));
@@ -997,7 +988,7 @@ extern Lisp_Object selected_frame;
 
 extern Lisp_Object Qauto_raise, Qauto_lower;
 extern Lisp_Object Qborder_color, Qborder_width;
-extern Lisp_Object Qbuffer_predicate, Qbuffer_list;
+extern Lisp_Object Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list;
 extern Lisp_Object Qcursor_color, Qcursor_type;
 extern Lisp_Object Qfont;
 extern Lisp_Object Qbackground_color, Qforeground_color;
@@ -1029,6 +1020,8 @@ extern Lisp_Object Qx_resource_name;
 extern Lisp_Object Qleft, Qright, Qtop, Qbox;
 extern Lisp_Object Qdisplay;
 
+extern Lisp_Object Qwindow_system;
+
 #ifdef HAVE_WINDOW_SYSTEM
 
 /* The class of this X application.  */
index 62767b39118797613f7705944eae1b93dde2780e..70e14f51f5fb4cd3ccee63ec3a809944a054a08a 100644 (file)
@@ -29,6 +29,7 @@ Boston, MA 02110-1301, USA.  */
 #include "dispextern.h"
 #include "buffer.h"
 #include "blockinput.h"
+#include "termhooks.h"
 
 #ifdef HAVE_WINDOW_SYSTEM
 
@@ -686,7 +687,7 @@ draw_fringe_bitmap_1 (w, row, left_p, overlay, which)
       break;
     }
 
-  rif->draw_fringe_bitmap (w, row, &p);
+  FRAME_RIF (f)->draw_fringe_bitmap (w, row, &p);
 }
 
 static int
@@ -1278,6 +1279,8 @@ destroy_fringe_bitmap (n)
   fbp = &fringe_bitmaps[n];
   if (*fbp && (*fbp)->dynamic)
     {
+      /* XXX Is SELECTED_FRAME OK here? */
+      struct redisplay_interface *rif = FRAME_RIF (SELECTED_FRAME ());
       if (rif && rif->destroy_fringe_bitmap)
        rif->destroy_fringe_bitmap (n);
       xfree (*fbp);
@@ -1328,11 +1331,11 @@ If BITMAP overrides a standard fringe bitmap, the original bitmap is restored.
 */
 
 #if defined (HAVE_X_WINDOWS)
-static unsigned char swap_nibble[16]
-  = { 0x0, 0x8, 0x4, 0xc,    /* 0000 1000 0100 1100 */
-      0x2, 0xa, 0x6, 0xe,    /* 0010 1010 0110 1110 */
-      0x1, 0x9, 0x5, 0xd,    /* 0001 1001 0101 1101 */
-      0x3, 0xb, 0x7, 0xf };  /* 0011 1011 0111 1111 */
+static unsigned char swap_nibble[16] = {
+  0x0, 0x8, 0x4, 0xc,           /* 0000 1000 0100 1100 */
+  0x2, 0xa, 0x6, 0xe,           /* 0010 1010 0110 1110 */
+  0x1, 0x9, 0x5, 0xd,           /* 0001 1001 0101 1101 */
+  0x3, 0xb, 0x7, 0xf};          /* 0011 1011 0111 1111 */
 #endif                          /* HAVE_X_WINDOWS */
 
 void
@@ -1386,6 +1389,9 @@ init_fringe_bitmap (which, fb, once_p)
 
   if (!once_p)
     {
+      /* XXX Is SELECTED_FRAME OK here? */
+      struct redisplay_interface *rif = FRAME_RIF (SELECTED_FRAME ());
+
       destroy_fringe_bitmap (which);
 
       if (rif && rif->define_fringe_bitmap)
@@ -1696,10 +1702,11 @@ init_fringe ()
 
 void
 #ifdef HAVE_NTGUI
-w32_init_fringe ()
+w32_init_fringe (rif)
 #else  /* MAC_OS */
-mac_init_fringe ()
+mac_init_fringe (rif)
 #endif
+     struct redisplay_interface *rif;
 {
   int bt;
 
@@ -1720,6 +1727,7 @@ w32_reset_fringes ()
 {
   /* Destroy row bitmaps.  */
   int bt;
+  struct redisplay_interface *rif = FRAME_RIF (SELECTED_FRAME ());
 
   if (!rif)
     return;
index b37620caa9caf247fe592c4a9b2ac0cb0a371698..81ef09b7ec48c63ca0fb16745a6852c17b5b02ad 100644 (file)
@@ -51,6 +51,13 @@ Boston, MA 02110-1301, USA.  */
 
 #ifdef HAVE_GTK_MULTIDISPLAY
 
+/* Gtk does not work well without any display open.  Emacs may close
+   all its displays.  In that case, keep a display around just for
+   the purpose of having one.  */
+
+static GdkDisplay *gdpy_def;
+
+
 /* Return the GdkDisplay that corresponds to the X display DPY.  */
 
 static GdkDisplay *
@@ -147,9 +154,15 @@ xg_display_close (Display *dpy)
             break;
           }
 
-      if (! new_dpy) return; /* Emacs will exit anyway.  */
+      if (new_dpy)
+        gdpy_new = gdk_x11_lookup_xdisplay (new_dpy);
+      else
+        {
+          if (!gdpy_def)
+            gdpy_def = gdk_display_open (gdk_display_get_name (gdpy));
+          gdpy_new = gdpy_def;
+        }
 
-      gdpy_new = gdk_x11_lookup_xdisplay (new_dpy);
       gdk_display_manager_set_default_display (gdk_display_manager_get (),
                                                gdpy_new);
     }
@@ -4091,6 +4104,8 @@ xg_initialize ()
      we keep it permanently linked in.  */
   XftInit (0);
 #endif
+
+  gdpy_def = NULL;
   xg_ignore_gtk_scrollbar = 0;
   xg_detached_menus = 0;
   xg_menu_cb_list.prev = xg_menu_cb_list.next =
index 28214642c3adc35d64f45221254a2628dddb639b..33d5e1a9b2d7b52b24b1d7ea75a2d8f40ebb2a9a 100644 (file)
@@ -1,6 +1,7 @@
 /* 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 Free Software Foundation, Inc.
+                 2001, 2002, 2003, 2004, 2005, 2006, 2007
+                 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -531,7 +532,7 @@ x_create_bitmap_from_file (f, file)
 /* Free bitmap B.  */
 
 static void
-Free_Bitmap_Record (dpyinfo, bm)
+free_bitmap_record (dpyinfo, bm)
      Display_Info *dpyinfo;
      Bitmap_Record *bm;
 {
@@ -573,7 +574,7 @@ x_destroy_bitmap (f, id)
       if (--bm->refcount == 0)
        {
          BLOCK_INPUT;
-         Free_Bitmap_Record (dpyinfo, bm);
+         free_bitmap_record (dpyinfo, bm);
          UNBLOCK_INPUT;
        }
     }
@@ -590,7 +591,7 @@ x_destroy_all_bitmaps (dpyinfo)
 
   for (i = 0; i < dpyinfo->bitmaps_last; i++, bm++)
     if (bm->refcount > 0)
-      Free_Bitmap_Record (dpyinfo, bm);
+      free_bitmap_record (dpyinfo, bm);
 
   dpyinfo->bitmaps_last = 0;
 }
@@ -1317,8 +1318,8 @@ image_ascent (img, face, slice)
        {
 #ifdef HAVE_NTGUI
          /* W32 specific version.  Why?. ++kfs  */
-         ascent = height / 2 - (FONT_DESCENT(face->font)
-                                - FONT_BASE(face->font)) / 2;
+         ascent = height / 2 - (FONT_DESCENT (face->font)
+                                - FONT_BASE (face->font)) / 2;
 #else
          /* This expression is arranged so that if the image can't be
             exactly centered, it will be moved slightly up.  This is
@@ -1904,6 +1905,7 @@ lookup_image (f, spec)
      struct frame *f;
      Lisp_Object spec;
 {
+  struct image_cache *c;
   struct image *img;
   unsigned hash;
   struct gcpro gcpro1;
@@ -1914,6 +1916,8 @@ lookup_image (f, spec)
   xassert (FRAME_WINDOW_P (f));
   xassert (valid_image_p (spec));
 
+  c = FRAME_X_IMAGE_CACHE (f);
+
   GCPRO1 (spec);
 
   /* Look up SPEC in the hash table of the image cache.  */
@@ -1980,8 +1984,8 @@ lookup_image (f, spec)
          if (INTEGERP (relief))
            {
              img->relief = XINT (relief);
-             img->hmargin += abs (img->relief);
-             img->vmargin += abs (img->relief);
+             img->hmargin += eabs (img->relief);
+             img->vmargin += eabs (img->relief);
            }
 
          if (! img->background_valid)
@@ -2095,7 +2099,7 @@ forall_images_in_image_cache (f, fn)
 
 /* Load a DLL implementing an image type.
    The `image-library-alist' variable associates a symbol,
-   identifying  an image type, to a list of possible filenames.
+   identifying an image type, to a list of possible filenames.
    The function returns NULL if no library could be loaded for
    the given image type, or if the library was previously loaded;
    else the handle of the DLL.  */
@@ -2251,7 +2255,7 @@ x_create_x_image_and_pixmap (f, width, height, depth, ximg, pixmap)
 
   if (*pixmap == NULL)
     {
-      DWORD err = GetLastError();
+      DWORD err = GetLastError ();
       Lisp_Object errcode;
       /* All system errors are < 10000, so the following is safe.  */
       XSETINT (errcode, (int) err);
@@ -2353,7 +2357,7 @@ x_put_x_image (f, ximg, pixmap, width, height)
 static unsigned char *slurp_file P_ ((char *, int *));
 
 
-/* Find image file FILE.  Look in data-directory, then
+/* Find image file FILE.  Look in data-directory/images, then
    x-bitmap-file-path.  Value is the encoded full name of the file
    found, or nil if not found.  */
 
@@ -2366,10 +2370,14 @@ x_find_image_file (file)
   int fd;
 
   file_found = Qnil;
-  search_path = Fcons (Vdata_directory, Vx_bitmap_file_path);
+  /* TODO I think this should use something like image-load-path
+     instead.  Unfortunately, that can contain non-string elements.  */
+  search_path = Fcons (Fexpand_file_name (build_string ("images"),
+                                         Vdata_directory),
+                      Vx_bitmap_file_path);
   GCPRO2 (file_found, search_path);
 
-  /* Try to find FILE in data-directory, then x-bitmap-file-path.  */
+  /* Try to find FILE in data-directory/images, then x-bitmap-file-path.  */
   fd = openp (search_path, file, Qnil, &file_found, Qnil);
 
   if (fd == -1)
@@ -3147,7 +3155,7 @@ convert_mono_to_color_image (f, img, foreground, background)
 
 
 static void
-Create_Pixmap_From_Bitmap_Data(f, img, data, fg, bg, non_default_colors)
+Create_Pixmap_From_Bitmap_Data (f, img, data, fg, bg, non_default_colors)
      struct frame *f;
      struct image *img;
      char *data;
@@ -5157,7 +5165,7 @@ x_detect_edges (f, img, matrix, color_adjust)
   int x, y, i, sum;
 
   for (i = sum = 0; i < 9; ++i)
-    sum += abs (matrix[i]);
+    sum += eabs (matrix[i]);
 
 #define COLOR(A, X, Y) ((A) + (Y) * img->width + (X))
 
@@ -6338,7 +6346,7 @@ png_load (f, img)
      simple transparency, we prefer a clipping mask.  */
   if (!transparent_p)
     {
-      png_color_16 *image_bg;
+      /* png_color_16 *image_bg; */
       Lisp_Object specified_bg
        = image_spec_value (img->spec, QCbackground, NULL);
 
@@ -6708,7 +6716,7 @@ init_jpeg_functions (Lisp_Object libraries)
 /* Wrapper since we can't directly assign the function pointer
    to another function pointer that was declared more completely easily.  */
 static boolean
-jpeg_resync_to_restart_wrapper(cinfo, desired)
+jpeg_resync_to_restart_wrapper (cinfo, desired)
      j_decompress_ptr cinfo;
      int desired;
 {
@@ -7806,7 +7814,7 @@ gif_load (f, img)
       memsrc.index = 0;
 
       /* Casting return value avoids a GCC warning on W32.  */
-      gif = (GifFileType *)fn_DGifOpen(&memsrc, gif_read_from_memory);
+      gif = (GifFileType *) fn_DGifOpen (&memsrc, gif_read_from_memory);
       if (!gif)
        {
          image_error ("Cannot open memory source `%s'", img->spec, Qnil);
@@ -8204,6 +8212,418 @@ gif_load (f, img)
 #endif /* HAVE_GIF */
 
 
+\f
+/***********************************************************************
+                                SVG
+ ***********************************************************************/
+
+#if defined (HAVE_RSVG)
+
+/* Function prototypes.  */
+
+static int svg_image_p P_ ((Lisp_Object object));
+static int svg_load P_ ((struct frame *f, struct image *img));
+
+static int svg_load_image P_ ((struct frame *, struct image *,
+                              unsigned char *, unsigned int));
+
+/* The symbol `svg' identifying images of this type. */
+
+Lisp_Object Qsvg;
+
+/* Indices of image specification fields in svg_format, below.  */
+
+enum svg_keyword_index
+{
+  SVG_TYPE,
+  SVG_DATA,
+  SVG_FILE,
+  SVG_ASCENT,
+  SVG_MARGIN,
+  SVG_RELIEF,
+  SVG_ALGORITHM,
+  SVG_HEURISTIC_MASK,
+  SVG_MASK,
+  SVG_BACKGROUND,
+  SVG_LAST
+};
+
+/* Vector of image_keyword structures describing the format
+   of valid user-defined image specifications.  */
+
+static struct image_keyword svg_format[SVG_LAST] =
+{
+  {":type",            IMAGE_SYMBOL_VALUE,                     1},
+  {":data",            IMAGE_STRING_VALUE,                     0},
+  {":file",            IMAGE_STRING_VALUE,                     0},
+  {":ascent",          IMAGE_ASCENT_VALUE,                     0},
+  {":margin",          IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,   0},
+  {":relief",          IMAGE_INTEGER_VALUE,                    0},
+  {":conversion",      IMAGE_DONT_CHECK_VALUE_TYPE,            0},
+  {":heuristic-mask",  IMAGE_DONT_CHECK_VALUE_TYPE,            0},
+  {":mask",            IMAGE_DONT_CHECK_VALUE_TYPE,            0},
+  {":background",      IMAGE_STRING_OR_NIL_VALUE,              0}
+};
+
+/* Structure describing the image type `svg'.  Its the same type of
+   structure defined for all image formats, handled by emacs image
+   functions.  See struct image_type in dispextern.h.  */
+
+static struct image_type svg_type =
+{
+  /* An identifier showing that this is an image structure for the SVG format.  */
+  &Qsvg,
+  /* Handle to a function that can be used to identify a SVG file.  */
+  svg_image_p,
+  /* Handle to function used to load a SVG file.  */
+  svg_load,
+  /* Handle to function to free sresources for SVG.  */
+  x_clear_image,
+  /* An internal field to link to the next image type in a list of
+     image types, will be filled in when registering the format.  */
+  NULL
+};
+
+
+/* Return non-zero if OBJECT is a valid SVG image specification.  Do
+   this by calling parse_image_spec and supplying the keywords that
+   identify the SVG format.   */
+
+static int
+svg_image_p (object)
+     Lisp_Object object;
+{
+  struct image_keyword fmt[SVG_LAST];
+  bcopy (svg_format, fmt, sizeof fmt);
+
+  if (!parse_image_spec (object, fmt, SVG_LAST, Qsvg))
+    return 0;
+
+  /* Must specify either the :data or :file keyword.  */
+  return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1;
+}
+
+#include <librsvg/rsvg.h>
+
+#ifdef HAVE_NTGUI
+
+/* SVG library functions.  */
+DEF_IMGLIB_FN (rsvg_handle_new);
+DEF_IMGLIB_FN (rsvg_handle_set_size_callback);
+DEF_IMGLIB_FN (rsvg_handle_write);
+DEF_IMGLIB_FN (rsvg_handle_close);
+DEF_IMGLIB_FN (rsvg_handle_get_pixbuf);
+DEF_IMGLIB_FN (rsvg_handle_free);
+
+DEF_IMGLIB_FN (gdk_pixbuf_get_width);
+DEF_IMGLIB_FN (gdk_pixbuf_get_height);
+DEF_IMGLIB_FN (gdk_pixbuf_get_pixels);
+DEF_IMGLIB_FN (gdk_pixbuf_get_rowstride);
+DEF_IMGLIB_FN (gdk_pixbuf_get_colorspace);
+DEF_IMGLIB_FN (gdk_pixbuf_get_n_channels);
+DEF_IMGLIB_FN (gdk_pixbuf_get_has_alpha);
+DEF_IMGLIB_FN (gdk_pixbuf_get_bits_per_sample);
+
+DEF_IMGLIB_FN (g_type_init);
+DEF_IMGLIB_FN (g_object_unref);
+DEF_IMGLIB_FN (g_error_free);
+
+Lisp_Object Qgdk_pixbuf, Qglib;
+
+static int
+init_svg_functions (Lisp_Object libraries)
+{
+  HMODULE library, gdklib, glib;
+
+  if (!(glib = w32_delayed_load (libraries, Qglib))
+      || !(gdklib = w32_delayed_load (libraries, Qgdk_pixbuf))
+      || !(library = w32_delayed_load (libraries, Qsvg)))
+    return 0;
+
+  LOAD_IMGLIB_FN (library, rsvg_handle_new);
+  LOAD_IMGLIB_FN (library, rsvg_handle_set_size_callback);
+  LOAD_IMGLIB_FN (library, rsvg_handle_write);
+  LOAD_IMGLIB_FN (library, rsvg_handle_close);
+  LOAD_IMGLIB_FN (library, rsvg_handle_get_pixbuf);
+  LOAD_IMGLIB_FN (library, rsvg_handle_free);
+
+  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_width);
+  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_height);
+  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_pixels);
+  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_rowstride);
+  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_colorspace);
+  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_n_channels);
+  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_has_alpha);
+  LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_bits_per_sample);
+
+  LOAD_IMGLIB_FN (glib, g_type_init);
+  LOAD_IMGLIB_FN (glib, g_object_unref);
+  LOAD_IMGLIB_FN (glib, g_error_free);
+  return 1;
+}
+
+#else
+/* The following aliases for library functions allow dynamic loading
+   to be used on some platforms.  */
+#define fn_rsvg_handle_new             rsvg_handle_new
+#define fn_rsvg_handle_set_size_callback rsvg_handle_set_size_callback
+#define fn_rsvg_handle_write           rsvg_handle_write
+#define fn_rsvg_handle_close           rsvg_handle_close
+#define fn_rsvg_handle_get_pixbuf      rsvg_handle_get_pixbuf
+#define fn_rsvg_handle_free            rsvg_handle_free
+
+#define fn_gdk_pixbuf_get_width                  gdk_pixbuf_get_width
+#define fn_gdk_pixbuf_get_height         gdk_pixbuf_get_height
+#define fn_gdk_pixbuf_get_pixels         gdk_pixbuf_get_pixels
+#define fn_gdk_pixbuf_get_rowstride      gdk_pixbuf_get_rowstride
+#define fn_gdk_pixbuf_get_colorspace     gdk_pixbuf_get_colorspace
+#define fn_gdk_pixbuf_get_n_channels     gdk_pixbuf_get_n_channels
+#define fn_gdk_pixbuf_get_has_alpha      gdk_pixbuf_get_has_alpha
+#define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample
+
+#define fn_g_type_init                    g_type_init
+#define fn_g_object_unref                 g_object_unref
+#define fn_g_error_free                   g_error_free
+#endif /* !HAVE_NTGUI  */
+
+/* Load SVG image IMG for use on frame F.  Value is non-zero if
+   successful. this function will go into the svg_type structure, and
+   the prototype thus needs to be compatible with that structure.  */
+
+static int
+svg_load (f, img)
+     struct frame *f;
+     struct image *img;
+{
+  int success_p = 0;
+  Lisp_Object file_name;
+
+  /* If IMG->spec specifies a file name, create a non-file spec from it.  */
+  file_name = image_spec_value (img->spec, QCfile, NULL);
+  if (STRINGP (file_name))
+    {
+      Lisp_Object file;
+      unsigned char *contents;
+      int size;
+      struct gcpro gcpro1;
+
+      file = x_find_image_file (file_name);
+      GCPRO1 (file);
+      if (!STRINGP (file))
+       {
+         image_error ("Cannot find image file `%s'", file_name, Qnil);
+         UNGCPRO;
+         return 0;
+       }
+
+      /* Read the entire file into memory.  */
+      contents = slurp_file (SDATA (file), &size);
+      if (contents == NULL)
+       {
+         image_error ("Error loading SVG image `%s'", img->spec, Qnil);
+         UNGCPRO;
+         return 0;
+       }
+      /* If the file was slurped into memory properly, parse it.  */
+      success_p = svg_load_image (f, img, contents, size);
+      xfree (contents);
+      UNGCPRO;
+    }
+  /* Else its not a file, its a lisp object.  Load the image from a
+     lisp object rather than a file.  */
+  else
+    {
+      Lisp_Object data;
+
+      data = image_spec_value (img->spec, QCdata, NULL);
+      success_p = svg_load_image (f, img, SDATA (data), SBYTES (data));
+    }
+
+  return success_p;
+}
+
+/* svg_load_image is a helper function for svg_load, which does the
+   actual loading given contents and size, apart from frame and image
+   structures, passed from svg_load.
+
+   Uses librsvg to do most of the image processing.
+
+   Returns non-zero when successful.  */
+static int
+svg_load_image (f, img, contents, size)
+    /* Pointer to emacs frame structure.  */
+     struct frame *f;
+     /* Pointer to emacs image structure.  */
+     struct image *img;
+     /* String containing the SVG XML data to be parsed.  */
+     unsigned char *contents;
+     /* Size of data in bytes.  */
+     unsigned int size;
+{
+  RsvgHandle *rsvg_handle;
+  GError *error = NULL;
+  GdkPixbuf *pixbuf;
+  int width;
+  int height;
+  const guint8 *pixels;
+  int rowstride;
+  XImagePtr ximg;
+  Lisp_Object specified_bg;
+  XColor background;
+  int x;
+  int y;
+
+  /* g_type_init is a glib function that must be called prior to using
+     gnome type library functions.  */
+  fn_g_type_init ();
+  /* Make a handle to a new rsvg object.  */
+  rsvg_handle = fn_rsvg_handle_new ();
+
+  /* Parse the contents argument and fill in the rsvg_handle.  */
+  fn_rsvg_handle_write (rsvg_handle, contents, size, &error);
+  if (error)
+    goto rsvg_error;
+
+  /* The parsing is complete, rsvg_handle is ready to used, close it
+     for further writes.  */
+  fn_rsvg_handle_close (rsvg_handle, &error);
+  if (error)
+    goto rsvg_error;
+  /* We can now get a valid pixel buffer from the svg file, if all
+     went ok.  */
+  pixbuf = fn_rsvg_handle_get_pixbuf (rsvg_handle);
+  eassert (pixbuf);
+
+  /* Extract some meta data from the svg handle.  */
+  width     = fn_gdk_pixbuf_get_width (pixbuf);
+  height    = fn_gdk_pixbuf_get_height (pixbuf);
+  pixels    = fn_gdk_pixbuf_get_pixels (pixbuf);
+  rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf);
+
+  /* Validate the svg meta data.  */
+  eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
+  eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4);
+  eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf));
+  eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
+
+  /* Try to create a x pixmap to hold the svg pixmap.  */
+  if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap))
+    {
+      fn_g_object_unref (pixbuf);
+      return 0;
+    }
+
+  init_color_table ();
+
+  /* Handle alpha channel by combining the image with a background
+     color.  */
+  specified_bg = image_spec_value (img->spec, QCbackground, NULL);
+  if (STRINGP (specified_bg)
+      && x_defined_color (f, SDATA (specified_bg), &background, 0))
+    {
+      background.red   >>= 8;
+      background.green >>= 8;
+      background.blue  >>= 8;
+    }
+  else
+    {
+#ifdef HAVE_X_WINDOWS
+      background.pixel = FRAME_BACKGROUND_PIXEL (f);
+      x_query_color (f, &background);
+
+      /* SVG pixmaps specify transparency in the last byte, so right
+        shift 8 bits to get rid of it, since emacs doesn't support
+        transparency.  */
+      background.red   >>= 8;
+      background.green >>= 8;
+      background.blue  >>= 8;
+#elif defined (MAC_OS)
+      background.pixel = FRAME_BACKGROUND_PIXEL (f);
+      background.red   = RED_FROM_ULONG (background.pixel);
+      background.green = GREEN_FROM_ULONG (background.pixel);
+      background.blue  = BLUE_FROM_ULONG (background.pixel);
+#elif defined (HAVE_NTGUI)
+      background.pixel = FRAME_BACKGROUND_PIXEL (f);
+#if 0 /* W32 TODO : Colormap support.  */
+      x_query_color (f, &background);
+#endif
+
+      /* SVG pixmaps specify transparency in the last byte, so right
+        shift 8 bits to get rid of it, since emacs doesn't support
+        transparency.  */
+      background.red   >>= 8;
+      background.green >>= 8;
+      background.blue  >>= 8;
+#else /* not HAVE_X_WINDOWS && not MAC_OS*/
+#error FIXME
+#endif
+    }
+
+  /* This loop handles opacity values, since Emacs assumes
+     non-transparent images.  Each pixel must be "flattened" by
+     calculating the resulting color, given the transparency of the
+     pixel, and the image background color.  */
+  for (y = 0; y < height; ++y)
+    {
+      for (x = 0; x < width; ++x)
+       {
+         unsigned red;
+         unsigned green;
+         unsigned blue;
+         unsigned opacity;
+
+         red     = *pixels++;
+         green   = *pixels++;
+         blue    = *pixels++;
+         opacity = *pixels++;
+
+         red   = ((red * opacity)
+                  + (background.red * ((1 << 8) - opacity)));
+         green = ((green * opacity)
+                  + (background.green * ((1 << 8) - opacity)));
+         blue  = ((blue * opacity)
+                  + (background.blue * ((1 << 8) - opacity)));
+
+         XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue));
+       }
+
+      pixels += rowstride - 4 * width;
+    }
+
+#ifdef COLOR_TABLE_SUPPORT
+  /* Remember colors allocated for this image.  */
+  img->colors = colors_in_color_table (&img->ncolors);
+  free_color_table ();
+#endif /* COLOR_TABLE_SUPPORT */
+
+  fn_g_object_unref (pixbuf);
+
+  img->width  = width;
+  img->height = height;
+
+  /* Maybe fill in the background field while we have ximg handy.
+     Casting avoids a GCC warning.  */
+  IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg);
+
+  /* Put the image into the pixmap, then free the X image and its
+     buffer.  */
+  x_put_x_image (f, ximg, img->pixmap, width, height);
+  x_destroy_x_image (ximg);
+
+  return 1;
+
+ rsvg_error:
+  /* FIXME: Use error->message so the user knows what is the actual
+     problem with the image.  */
+  image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
+  fn_g_error_free (error);
+  return 0;
+}
+
+#endif /* defined (HAVE_RSVG) */
+
+
+
 \f
 /***********************************************************************
                                Ghostscript
@@ -8596,6 +9016,11 @@ of `image-library-alist', which see).  */)
     return CHECK_LIB_AVAILABLE (&png_type, init_png_functions, libraries);
 #endif
 
+#if defined (HAVE_RSVG)
+  if (EQ (type, Qsvg))
+    return CHECK_LIB_AVAILABLE (&svg_type, init_svg_functions, libraries);
+#endif
+
 #ifdef HAVE_GHOSTSCRIPT
   if (EQ (type, Qpostscript))
     return CHECK_LIB_AVAILABLE (&gs_type, init_gs_functions, libraries);
@@ -8655,11 +9080,11 @@ non-numeric, there is no explicit limit on the size of images.  */);
 
   Qpbm = intern ("pbm");
   staticpro (&Qpbm);
-  ADD_IMAGE_TYPE(Qpbm);
+  ADD_IMAGE_TYPE (Qpbm);
 
   Qxbm = intern ("xbm");
   staticpro (&Qxbm);
-  ADD_IMAGE_TYPE(Qxbm);
+  ADD_IMAGE_TYPE (Qxbm);
 
   define_image_type (&xbm_type, 1);
   define_image_type (&pbm_type, 1);
@@ -8697,7 +9122,7 @@ non-numeric, there is no explicit limit on the size of images.  */);
   Qpostscript = intern ("postscript");
   staticpro (&Qpostscript);
 #ifdef HAVE_GHOSTSCRIPT
-  ADD_IMAGE_TYPE(Qpostscript);
+  ADD_IMAGE_TYPE (Qpostscript);
   QCloader = intern (":loader");
   staticpro (&QCloader);
   QCbounding_box = intern (":bounding-box");
@@ -8711,33 +9136,45 @@ non-numeric, there is no explicit limit on the size of images.  */);
 #if defined (HAVE_XPM) || defined (MAC_OS)
   Qxpm = intern ("xpm");
   staticpro (&Qxpm);
-  ADD_IMAGE_TYPE(Qxpm);
+  ADD_IMAGE_TYPE (Qxpm);
 #endif
 
 #if defined (HAVE_JPEG) || defined (MAC_OS)
   Qjpeg = intern ("jpeg");
   staticpro (&Qjpeg);
-  ADD_IMAGE_TYPE(Qjpeg);
+  ADD_IMAGE_TYPE (Qjpeg);
 #endif
 
 #if defined (HAVE_TIFF) || defined (MAC_OS)
   Qtiff = intern ("tiff");
   staticpro (&Qtiff);
-  ADD_IMAGE_TYPE(Qtiff);
+  ADD_IMAGE_TYPE (Qtiff);
 #endif
 
 #if defined (HAVE_GIF) || defined (MAC_OS)
   Qgif = intern ("gif");
   staticpro (&Qgif);
-  ADD_IMAGE_TYPE(Qgif);
+  ADD_IMAGE_TYPE (Qgif);
 #endif
 
 #if defined (HAVE_PNG) || defined (MAC_OS)
   Qpng = intern ("png");
   staticpro (&Qpng);
-  ADD_IMAGE_TYPE(Qpng);
+  ADD_IMAGE_TYPE (Qpng);
 #endif
 
+#if defined (HAVE_RSVG)
+  Qsvg = intern ("svg");
+  staticpro (&Qsvg);
+  ADD_IMAGE_TYPE (Qsvg);
+#ifdef HAVE_NTGUI
+  Qgdk_pixbuf = intern ("gdk-pixbuf");
+  staticpro (&Qgdk_pixbuf);
+  Qglib = intern ("glib");
+  staticpro (&Qglib);
+#endif /* HAVE_NTGUI  */
+#endif /* HAVE_RSVG  */
+
   defsubr (&Sinit_image_library);
   defsubr (&Sclear_image_cache);
   defsubr (&Simage_refresh);
index b3c1d0cf81a0f7c2c398da9e6648beda13e218fc..2d48dc746d7a199b87e50858770ae46a1eca77e5 100644 (file)
@@ -20,6 +20,8 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
 
 #include <config.h>
+#include <stdio.h>
+
 #include "lisp.h"
 #include "buffer.h"
 #include "charset.h"
@@ -37,7 +39,7 @@ Boston, MA 02110-1301, USA.  */
 /* Indentation can insert tabs if this is non-zero;
    otherwise always uses spaces.  */
 
-int indent_tabs_mode;
+static int indent_tabs_mode;
 
 #define CR 015
 
@@ -47,15 +49,15 @@ int indent_tabs_mode;
    Some things in set last_known_column_point to -1
    to mark the memorized value as invalid.  */
 
-double last_known_column;
+static double last_known_column;
 
 /* Value of point when current_column was called.  */
 
-int last_known_column_point;
+EMACS_INT last_known_column_point;
 
 /* Value of MODIFF when current_column was called.  */
 
-int last_known_column_modified;
+static int last_known_column_modified;
 
 static double current_column_1 P_ ((void));
 static double position_indentation P_ ((int));
@@ -63,7 +65,7 @@ static double position_indentation P_ ((int));
 /* Cache of beginning of line found by the last call of
    current_column. */
 
-int current_column_bol_cache;
+static EMACS_INT current_column_bol_cache;
 
 /* Get the display table to use for the current buffer.  */
 
@@ -212,16 +214,17 @@ width_run_cache_on_off ()
    characters immediately following, then *NEXT_BOUNDARY_P
    will equal the return value.  */
 
-int
+EMACS_INT
 skip_invisible (pos, next_boundary_p, to, window)
-     int pos;
-     int *next_boundary_p;
-     int to;
+     EMACS_INT pos;
+     EMACS_INT *next_boundary_p;
+     EMACS_INT to;
      Lisp_Object window;
 {
   Lisp_Object prop, position, overlay_limit, proplimit;
   Lisp_Object buffer, tmp;
-  int end, inv_p;
+  EMACS_INT end;
+  int inv_p;
 
   XSETFASTINT (position, pos);
   XSETBUFFER (buffer, current_buffer);
@@ -508,16 +511,16 @@ current_column ()
 static double
 current_column_1 ()
 {
-  register int tab_width = XINT (current_buffer->tab_width);
+  register EMACS_INT tab_width = XINT (current_buffer->tab_width);
   register int ctl_arrow = !NILP (current_buffer->ctl_arrow);
   register struct Lisp_Char_Table *dp = buffer_display_table ();
   int multibyte = !NILP (current_buffer->enable_multibyte_characters);
 
   /* Start the scan at the beginning of this line with column number 0.  */
-  register int col = 0;
-  int scan, scan_byte;
-  int next_boundary;
-  int opoint = PT, opoint_byte = PT_BYTE;
+  register EMACS_INT col = 0;
+  EMACS_INT scan, scan_byte;
+  EMACS_INT next_boundary;
+  EMACS_INT opoint = PT, opoint_byte = PT_BYTE;
 
   scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -1, 1);
   current_column_bol_cache = PT;
@@ -806,13 +809,13 @@ static double
 position_indentation (pos_byte)
      register int pos_byte;
 {
-  register int column = 0;
-  register int tab_width = XINT (current_buffer->tab_width);
+  register EMACS_INT column = 0;
+  register EMACS_INT tab_width = XINT (current_buffer->tab_width);
   register unsigned char *p;
   register unsigned char *stop;
   unsigned char *start;
-  int next_boundary_byte = pos_byte;
-  int ceiling = next_boundary_byte;
+  EMACS_INT next_boundary_byte = pos_byte;
+  EMACS_INT ceiling = next_boundary_byte;
 
   if (tab_width <= 0 || tab_width > 1000) tab_width = 8;
 
@@ -827,7 +830,7 @@ position_indentation (pos_byte)
     {
       while (p == stop)
        {
-         int stop_pos_byte;
+         EMACS_INT stop_pos_byte;
 
          /* If we have updated P, set POS_BYTE to match.
             The first time we enter the loop, POS_BYTE is already right.  */
@@ -838,8 +841,8 @@ position_indentation (pos_byte)
            return column;
          if (pos_byte == next_boundary_byte)
            {
-             int next_boundary;
-             int pos = BYTE_TO_CHAR (pos_byte);
+             EMACS_INT next_boundary;
+             EMACS_INT pos = BYTE_TO_CHAR (pos_byte);
              pos = skip_invisible (pos, &next_boundary, ZV, Qnil);
              pos_byte = CHAR_TO_BYTE (pos);
              next_boundary_byte = CHAR_TO_BYTE (next_boundary);
@@ -930,19 +933,19 @@ The return value is the current column.  */)
      (column, force)
      Lisp_Object column, force;
 {
-  register int pos;
-  register int col = current_column ();
-  register int goal;
-  register int end;
+  register EMACS_INT pos;
+  register EMACS_INT col = current_column ();
+  register EMACS_INT goal;
+  register EMACS_INT end;
   register int tab_width = XINT (current_buffer->tab_width);
   register int ctl_arrow = !NILP (current_buffer->ctl_arrow);
   register struct Lisp_Char_Table *dp = buffer_display_table ();
   register int multibyte = !NILP (current_buffer->enable_multibyte_characters);
 
   Lisp_Object val;
-  int prev_col = 0;
+  EMACS_INT prev_col = 0;
   int c = 0;
-  int next_boundary, pos_byte;
+  EMACS_INT next_boundary, pos_byte;
 
   if (tab_width <= 0 || tab_width > 1000) tab_width = 8;
   CHECK_NATNUM (column);
@@ -968,7 +971,7 @@ The return value is the current column.  */)
     {
       while (pos == next_boundary)
        {
-         int prev = pos;
+         EMACS_INT prev = pos;
          pos = skip_invisible (pos, &next_boundary, end, Qnil);
          if (pos != prev)
            pos_byte = CHAR_TO_BYTE (pos);
@@ -1088,7 +1091,7 @@ The return value is the current column.  */)
      and scan through it again.  */
   if (!NILP (force) && col > goal && c == '\t' && prev_col < goal)
     {
-      int goal_pt, goal_pt_byte;
+      EMACS_INT goal_pt, goal_pt_byte;
 
       /* Insert spaces in front of the tab to reach GOAL.  Do this
         first so that a marker at the end of the tab gets
@@ -1188,19 +1191,19 @@ struct position val_compute_motion;
 
 struct position *
 compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, hscroll, tab_offset, win)
-     int from, fromvpos, fromhpos, to, tovpos, tohpos;
+     EMACS_INT from, fromvpos, fromhpos, to, tovpos, tohpos;
      int did_motion;
-     register int width;
-     int hscroll, tab_offset;
+     EMACS_INT width;
+     EMACS_INT hscroll, tab_offset;
      struct window *win;
 {
-  register int hpos = fromhpos;
-  register int vpos = fromvpos;
+  register EMACS_INT hpos = fromhpos;
+  register EMACS_INT vpos = fromvpos;
 
-  register int pos;
-  int pos_byte;
+  register EMACS_INT pos;
+  EMACS_INT pos_byte;
   register int c = 0;
-  register int tab_width = XFASTINT (current_buffer->tab_width);
+  register EMACS_INT tab_width = XFASTINT (current_buffer->tab_width);
   register int ctl_arrow = !NILP (current_buffer->ctl_arrow);
   register struct Lisp_Char_Table *dp = window_display_table (win);
   int selective
@@ -1212,33 +1215,33 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
        ? XVECTOR (DISP_INVIS_VECTOR (dp))->size : 0);
   /* The next location where the `invisible' property changes, or an
      overlay starts or ends.  */
-  int next_boundary = from;
+  EMACS_INT next_boundary = from;
 
   /* For computing runs of characters with similar widths.
      Invariant: width_run_width is zero, or all the characters
      from width_run_start to width_run_end have a fixed width of
      width_run_width.  */
-  int width_run_start = from;
-  int width_run_end   = from;
-  int width_run_width = 0;
+  EMACS_INT width_run_start = from;
+  EMACS_INT width_run_end   = from;
+  EMACS_INT width_run_width = 0;
   Lisp_Object *width_table;
   Lisp_Object buffer;
 
   /* The next buffer pos where we should consult the width run cache. */
-  int next_width_run = from;
+  EMACS_INT next_width_run = from;
   Lisp_Object window;
 
   int multibyte = !NILP (current_buffer->enable_multibyte_characters);
   /* If previous char scanned was a wide character,
      this is the column where it ended.  Otherwise, this is 0.  */
-  int wide_column_end_hpos = 0;
-  int prev_pos;                        /* Previous buffer position.  */
-  int prev_pos_byte;           /* Previous buffer position.  */
-  int prev_hpos = 0;
-  int prev_vpos = 0;
-  int contin_hpos;             /* HPOS of last column of continued line.  */
-  int prev_tab_offset;         /* Previous tab offset.  */
-  int continuation_glyph_width;
+  EMACS_INT wide_column_end_hpos = 0;
+  EMACS_INT prev_pos;          /* Previous buffer position.  */
+  EMACS_INT prev_pos_byte;     /* Previous buffer position.  */
+  EMACS_INT prev_hpos = 0;
+  EMACS_INT prev_vpos = 0;
+  EMACS_INT contin_hpos;       /* HPOS of last column of continued line.  */
+  EMACS_INT prev_tab_offset;   /* Previous tab offset.  */
+  EMACS_INT continuation_glyph_width;
 
   XSETBUFFER (buffer, current_buffer);
   XSETWINDOW (window, win);
@@ -1284,8 +1287,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
     {
       while (pos == next_boundary)
        {
-         int pos_here = pos;
-         int newpos;
+         EMACS_INT pos_here = pos;
+         EMACS_INT newpos;
 
          /* Don't skip invisible if we are already at the margin.  */
          if (vpos > tovpos || (vpos == tovpos && hpos >= tohpos))
@@ -1883,23 +1886,23 @@ struct position val_vmotion;
 
 struct position *
 vmotion (from, vtarget, w)
-     register int from, vtarget;
+     register EMACS_INT from, vtarget;
      struct window *w;
 {
-  int hscroll = XINT (w->hscroll);
+  EMACS_INT hscroll = XINT (w->hscroll);
   struct position pos;
   /* vpos is cumulative vertical position, changed as from is changed */
   register int vpos = 0;
-  int prevline;
-  register int first;
-  int from_byte;
-  int lmargin = hscroll > 0 ? 1 - hscroll : 0;
+  EMACS_INT prevline;
+  register EMACS_INT first;
+  EMACS_INT from_byte;
+  EMACS_INT lmargin = hscroll > 0 ? 1 - hscroll : 0;
   int selective
     = (INTEGERP (current_buffer->selective_display)
        ? XINT (current_buffer->selective_display)
        : !NILP (current_buffer->selective_display) ? -1 : 0);
   Lisp_Object window;
-  int start_hpos = 0;
+  EMACS_INT start_hpos = 0;
   int did_motion;
   /* This is the object we use for fetching character properties.  */
   Lisp_Object text_prop_object;
@@ -2156,8 +2159,7 @@ void
 syms_of_indent ()
 {
   DEFVAR_BOOL ("indent-tabs-mode", &indent_tabs_mode,
-              doc: /* *Indentation can insert tabs if this is non-nil.
-Setting this variable automatically makes it local to the current buffer.  */);
+              doc: /* *Indentation can insert tabs if this is non-nil.  */);
   indent_tabs_mode = 1;
 
   defsubr (&Scurrent_indentation);
index 2e873769603304703c66d3605c07be6c964799ca..95cf23aaef138525d9fa89a5c382007f46763dea 100644 (file)
@@ -39,25 +39,31 @@ Boston, MA 02110-1301, USA.  */
 
 struct position
   {
-    int bufpos;
-    int bytepos;
-    int hpos;
-    int vpos;
-    int prevhpos;
-    int contin;
+    EMACS_INT bufpos;
+    EMACS_INT bytepos;
+    EMACS_INT hpos;
+    EMACS_INT vpos;
+    EMACS_INT prevhpos;
+    EMACS_INT contin;
     /* Number of characters we have already handled
        from the before and after strings at this position.  */
-    int ovstring_chars_done;
-    int tab_offset;
+    EMACS_INT ovstring_chars_done;
+    EMACS_INT tab_offset;
   };
 
-struct position *compute_motion P_ ((int, int, int, int, int, int, int,
-                                    int, int, int, struct window *));
-struct position *vmotion P_ ((int, int, struct window *));
-int skip_invisible P_ ((int, int *, int, Lisp_Object));
+struct position *compute_motion P_ ((EMACS_INT from, EMACS_INT fromvpos,
+                                    EMACS_INT fromhpos, int did_motion,
+                                    EMACS_INT to, EMACS_INT tovpos,
+                                    EMACS_INT tohpos,
+                                    EMACS_INT width, EMACS_INT hscroll,
+                                    EMACS_INT tab_offset, struct window *));
+struct position *vmotion P_ ((EMACS_INT from, EMACS_INT vtarget,
+                             struct window *));
+EMACS_INT skip_invisible P_ ((EMACS_INT pos, EMACS_INT *next_boundary_p,
+                             EMACS_INT to, Lisp_Object window));
 
 /* Value of point when current_column was called */
-extern int last_known_column_point;
+extern EMACS_INT last_known_column_point;
 
 /* Functions for dealing with the column cache.  */
 
index cd8e2738f9aaa2d2e2d83fd7c8f08c949afa2b6c..5cde53864b73b2a3733f1884a23531a75c1b1f06 100644 (file)
@@ -415,13 +415,8 @@ adjust_markers_for_insert (from, from_byte, to, to_byte, before_markers)
 
   for (m = BUF_MARKERS (current_buffer); m; m = m->next)
     {
-      /* In a single-byte buffer, a marker's two positions must be
-        equal.  */
-      if (Z == Z_BYTE)
-       {
-         if (m->charpos != m->bytepos)
-           abort ();
-       }
+      eassert (m->bytepos >= m->charpos
+              && m->bytepos - m->charpos <= Z_BYTE - Z);
 
       if (m->bytepos == from_byte)
        {
@@ -468,9 +463,7 @@ adjust_point (nchars, nbytes)
   BUF_PT_BYTE (current_buffer) += nbytes;
 
   /* In a single-byte buffer, the two positions must be equal.  */
-  if (ZV == ZV_BYTE
-      && PT != PT_BYTE)
-    abort ();
+  eassert (PT_BYTE >= PT && PT_BYTE - PT <= ZV_BYTE - ZV);
 }
 \f
 /* Adjust markers for a replacement of a text at FROM (FROM_BYTE) of
index a695976b8b73af951feee62b8507657373fbe1e1..639abcf349181497421330a7fbd00bf8a37436e3 100644 (file)
@@ -427,7 +427,7 @@ balance_an_interval (i)
          /* Since the left child is longer, there must be one.  */
          new_diff = i->total_length - i->left->total_length
            + RIGHT_TOTAL_LENGTH (i->left) - LEFT_TOTAL_LENGTH (i->left);
-         if (abs (new_diff) >= old_diff)
+         if (eabs (new_diff) >= old_diff)
            break;
          i = rotate_right (i);
          balance_an_interval (i->right);
@@ -437,7 +437,7 @@ balance_an_interval (i)
          /* Since the right child is longer, there must be one.  */
          new_diff = i->total_length - i->right->total_length
            + LEFT_TOTAL_LENGTH (i->right) - RIGHT_TOTAL_LENGTH (i->right);
-         if (abs (new_diff) >= -old_diff)
+         if (eabs (new_diff) >= -old_diff)
            break;
          i = rotate_left (i);
          balance_an_interval (i->left);
index 538c0a0d1b04e7619fdb2becfe00fcf3c8919e48..bd8263f9b040dff05dae300a7899dbb955e06f2b 100644 (file)
@@ -23,13 +23,13 @@ Boston, MA 02110-1301, USA.  */
 #include <config.h>
 #include <signal.h>
 #include <stdio.h>
+#include "lisp.h"
 #include "termchar.h"
 #include "termopts.h"
-#include "lisp.h"
+#include "frame.h"
 #include "termhooks.h"
 #include "macros.h"
 #include "keyboard.h"
-#include "frame.h"
 #include "window.h"
 #include "commands.h"
 #include "buffer.h"
@@ -59,7 +59,6 @@ Boston, MA 02110-1301, USA.  */
 #endif /* not MSDOS */
 
 #include "syssignal.h"
-#include "systty.h"
 
 #include <sys/types.h>
 #ifdef HAVE_UNISTD_H
@@ -97,9 +96,6 @@ volatile int interrupt_input_blocked;
 int interrupt_input_pending;
 
 
-/* File descriptor to use for input.  */
-extern int input_fd;
-
 #ifdef HAVE_WINDOW_SYSTEM
 /* Make all keyboard buffers much bigger when using X windows.  */
 #ifdef MAC_OS8
@@ -112,9 +108,6 @@ extern int input_fd;
 #define KBD_BUFFER_SIZE 4096
 #endif /* No X-windows */
 
-#undef abs
-#define abs(x)         ((x) >= 0 ? (x) : -(x))
-
 /* Following definition copied from eval.c */
 
 struct backtrace
@@ -167,14 +160,7 @@ int raw_keybuf_count;
 
 #define GROW_RAW_KEYBUF                                                        \
  if (raw_keybuf_count == XVECTOR (raw_keybuf)->size)                   \
-  {                                                                    \
-    int newsize = 2 * XVECTOR (raw_keybuf)->size;                      \
-    Lisp_Object new;                                                   \
-    new = Fmake_vector (make_number (newsize), Qnil);                  \
-    bcopy (XVECTOR (raw_keybuf)->contents, XVECTOR (new)->contents,    \
-          raw_keybuf_count * sizeof (Lisp_Object));                    \
-    raw_keybuf = new;                                                  \
-  }
+   raw_keybuf = larger_vector (raw_keybuf, raw_keybuf_count * 2, Qnil)  \
 
 /* Number of elements of this_command_keys
    that precede this key sequence.  */
@@ -426,16 +412,6 @@ Lisp_Object Vecho_keystrokes;
 /* Form to evaluate (if non-nil) when Emacs is started.  */
 Lisp_Object Vtop_level;
 
-/* User-supplied table to translate input characters.  */
-Lisp_Object Vkeyboard_translate_table;
-
-/* Keymap mapping ASCII function key sequences onto their preferred forms.  */
-extern Lisp_Object Vfunction_key_map;
-
-/* Another keymap that maps key sequences into key sequences.
-   This one takes precedence over ordinary definitions.  */
-extern Lisp_Object Vkey_translation_map;
-
 /* If non-nil, this implements the current input method.  */
 Lisp_Object Vinput_method_function;
 Lisp_Object Qinput_method_function;
@@ -459,6 +435,12 @@ 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;
@@ -476,11 +458,6 @@ FILE *dribble;
 /* Nonzero if input is available.  */
 int input_pending;
 
-/* 1 if should obey 0200 bit in input chars as "Meta", 2 if should
-   keep 0200 bit in input chars.  0 to ignore the 0200 bit.  */
-
-int meta_key;
-
 extern char *pending_malloc_warning;
 
 /* Circular buffer for pre-read keyboard input.  */
@@ -522,7 +499,7 @@ Lisp_Object Qmake_frame_visible;
 Lisp_Object Qselect_window;
 Lisp_Object Qhelp_echo;
 
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
 Lisp_Object Qmouse_fixup_help_message;
 #endif
 
@@ -610,9 +587,6 @@ int interrupt_input;
 /* Nonzero while interrupts are temporarily deferred during redisplay.  */
 int interrupts_deferred;
 
-/* Nonzero means use ^S/^Q for flow control.  */
-int flow_control;
-
 /* Allow m- file to inhibit use of FIONREAD.  */
 #ifdef BROKEN_FIONREAD
 #undef FIONREAD
@@ -678,7 +652,7 @@ static Lisp_Object read_char_x_menu_prompt ();
 static Lisp_Object read_char_minibuf_menu_prompt P_ ((int, int,
                                                      Lisp_Object *));
 static Lisp_Object make_lispy_event P_ ((struct input_event *));
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
 static Lisp_Object make_lispy_movement P_ ((struct frame *, Lisp_Object,
                                            enum scroll_bar_part,
                                            Lisp_Object, Lisp_Object,
@@ -695,8 +669,11 @@ static void save_getcjmp ();
 static void restore_getcjmp P_ ((jmp_buf));
 static Lisp_Object apply_modifiers P_ ((int, Lisp_Object));
 static void clear_event P_ ((struct input_event *));
-static void any_kboard_state P_ ((void));
+#ifdef MULTI_KBOARD
+static Lisp_Object restore_kboard_configuration P_ ((Lisp_Object));
+#endif
 static SIGTYPE interrupt_signal P_ ((int signalnum));
+static void handle_interrupt P_ ((void));
 static void timer_start_idle P_ ((void));
 static void timer_stop_idle P_ ((void));
 static void timer_resume_idle P_ ((void));
@@ -1062,24 +1039,20 @@ This function is called by the editor initialization to begin editing.  */)
      like it is done in the splash screen display, we have to
      make sure that we restore single_kboard as command_loop_1
      would have done if it were left normally.  */
-  record_unwind_protect (recursive_edit_unwind,
-                        Fcons (buffer, single_kboard ? Qt : Qnil));
+  if (command_loop_level > 0)
+    temporarily_switch_to_single_kboard (SELECTED_FRAME ());
+  record_unwind_protect (recursive_edit_unwind, buffer);
 
   recursive_edit_1 ();
   return unbind_to (count, Qnil);
 }
 
 Lisp_Object
-recursive_edit_unwind (info)
-     Lisp_Object info;
+recursive_edit_unwind (buffer)
+     Lisp_Object buffer;
 {
-  if (BUFFERP (XCAR (info)))
-    Fset_buffer (XCAR (info));
-
-  if (NILP (XCDR (info)))
-    any_kboard_state ();
-  else
-    single_kboard_state ();
+  if (BUFFERP (buffer))
+    Fset_buffer (buffer);
 
   command_loop_level--;
   update_mode_lines = 1;
@@ -1087,6 +1060,8 @@ recursive_edit_unwind (info)
 }
 
 \f
+#if 0  /* These two functions are now replaced with
+          temporarily_switch_to_single_kboard. */
 static void
 any_kboard_state ()
 {
@@ -1117,6 +1092,7 @@ single_kboard_state ()
   single_kboard = 1;
 #endif
 }
+#endif
 
 /* If we're in single_kboard state for kboard KBOARD,
    get out of it.  */
@@ -1144,8 +1120,8 @@ struct kboard_stack
 static struct kboard_stack *kboard_stack;
 
 void
-push_frame_kboard (f)
-     FRAME_PTR f;
+push_kboard (k)
+     struct kboard *k;
 {
 #ifdef MULTI_KBOARD
   struct kboard_stack *p
@@ -1155,20 +1131,110 @@ push_frame_kboard (f)
   p->kboard = current_kboard;
   kboard_stack = p;
 
-  current_kboard = FRAME_KBOARD (f);
+  current_kboard = k;
 #endif
 }
 
 void
-pop_frame_kboard ()
+pop_kboard ()
 {
 #ifdef MULTI_KBOARD
+  struct terminal *t;
   struct kboard_stack *p = kboard_stack;
-  current_kboard = p->kboard;
+  int found = 0;
+  for (t = terminal_list; t; t = t->next_terminal)
+    {
+      if (t->kboard == p->kboard)
+        {
+          current_kboard = p->kboard;
+          found = 1;
+          break;
+        }
+    }
+  if (!found)
+    {
+      /* The terminal we remembered has been deleted.  */
+      current_kboard = FRAME_KBOARD (SELECTED_FRAME ());
+      single_kboard = 0;
+    }
   kboard_stack = p->next;
   xfree (p);
 #endif
 }
+
+/* Switch to single_kboard mode, making current_kboard the only KBOARD
+  from which further input is accepted.  If F is non-nil, set its
+  KBOARD as the current keyboard.
+
+  This function uses record_unwind_protect to return to the previous
+  state later.
+
+  If Emacs is already in single_kboard mode, and F's keyboard is
+  locked, then this function will throw an errow.  */
+
+void
+temporarily_switch_to_single_kboard (f)
+     struct frame *f;
+{
+#ifdef MULTI_KBOARD
+  int was_locked = single_kboard;
+  if (was_locked)
+    {
+      if (f != NULL && FRAME_KBOARD (f) != current_kboard)
+        /* We can not switch keyboards while in single_kboard mode.
+           In rare cases, Lisp code may call `recursive-edit' (or
+           `read-minibuffer' or `y-or-n-p') after it switched to a
+           locked frame.  For example, this is likely to happen
+           when server.el connects to a new terminal while Emacs is in
+           single_kboard mode.  It is best to throw an error instead
+           of presenting the user with a frozen screen.  */
+        error ("Terminal %d is locked, cannot read from it",
+               FRAME_TERMINAL (f)->id);
+      else
+        /* This call is unnecessary, but helps
+           `restore_kboard_configuration' discover if somebody changed
+           `current_kboard' behind our back.  */
+        push_kboard (current_kboard);
+    }
+  else if (f != NULL)
+    current_kboard = FRAME_KBOARD (f);
+  single_kboard = 1;
+  record_unwind_protect (restore_kboard_configuration,
+                         (was_locked ? Qt : Qnil));
+#endif
+}
+
+#if 0 /* This function is not needed anymore.  */
+void
+record_single_kboard_state ()
+{
+  if (single_kboard)
+    push_kboard (current_kboard);
+  record_unwind_protect (restore_kboard_configuration,
+                         (single_kboard ? Qt : Qnil));
+}
+#endif
+
+#ifdef MULTI_KBOARD
+static Lisp_Object
+restore_kboard_configuration (was_locked)
+     Lisp_Object was_locked;
+{
+  if (NILP (was_locked))
+    single_kboard = 0;
+  else
+    {
+      struct kboard *prev = current_kboard;
+      single_kboard = 1;
+      pop_kboard ();
+      /* The pop should not change the kboard.  */
+      if (single_kboard && current_kboard != prev)
+        abort ();
+    }
+  return Qnil;
+}
+#endif
+
 \f
 /* Handle errors that are not handled at inner levels
    by printing an error message and returning to the editor command loop.  */
@@ -1216,9 +1282,11 @@ cmd_error (data)
   Vquit_flag = Qnil;
 
   Vinhibit_quit = Qnil;
+#if 0 /* This shouldn't be necessary anymore. --lorentey */
 #ifdef MULTI_KBOARD
   if (command_loop_level == 0 && minibuf_level == 0)
     any_kboard_state ();
+#endif
 #endif
 
   return make_number (0);
@@ -1250,16 +1318,12 @@ cmd_error_internal (data, context)
   /* Use user's specified output function if any.  */
   if (!NILP (Vcommand_error_function))
     call3 (Vcommand_error_function, data,
-          build_string (context ? context : ""),
+          context ? build_string (context) : empty_unibyte_string,
           Vsignaling_function);
   /* If the window system or terminal frame hasn't been initialized
      yet, or we're not interactive, write the message to stderr and exit.  */
   else if (!sf->glyphs_initialized_p
-          /* This is the case of the frame dumped with Emacs, when we're
-             running under a window system.  */
-          || (!NILP (Vwindow_system)
-              && !inhibit_window_system
-              && FRAME_TERMCAP_P (sf))
+          || FRAME_INITIAL_P (sf)
           || noninteractive)
     {
       print_error_message (data, Qexternal_debugging_output,
@@ -1302,10 +1366,12 @@ command_loop ()
     while (1)
       {
        internal_catch (Qtop_level, top_level_1, Qnil);
-       /* Reset single_kboard in case top-level set it while
-          evaluating an -f option, or we are stuck there for some
-          other reason.  */
-       any_kboard_state ();
+#if 0 /* This shouldn't be necessary anymore.  --lorentey  */
+        /* Reset single_kboard in case top-level set it while
+           evaluating an -f option, or we are stuck there for some
+           other reason. */
+        any_kboard_state ();
+#endif
        internal_catch (Qtop_level, command_loop_2, Qnil);
        executing_kbd_macro = Qnil;
 
@@ -1391,7 +1457,7 @@ DEFUN ("abort-recursive-edit", Fabort_recursive_edit, Sabort_recursive_edit, 0,
   return Qnil;
 }
 \f
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
 
 /* Restore mouse tracking enablement.  See Ftrack_mouse for the only use
    of this function.  */
@@ -1467,7 +1533,7 @@ some_mouse_moved ()
   return 0;
 }
 
-#endif /* HAVE_MOUSE */
+#endif /* HAVE_MOUSE || HAVE_GPM */
 \f
 /* This is the actual command reading loop,
    sans error-handling encapsulation.  */
@@ -1500,10 +1566,12 @@ command_loop_1 ()
   int no_direct;
   int prev_modiff = 0;
   struct buffer *prev_buffer = NULL;
+#if 0 /* This shouldn't be necessary anymore.  --lorentey  */
 #ifdef MULTI_KBOARD
   int was_locked = single_kboard;
 #endif
-  int already_adjusted;
+#endif  
+  int already_adjusted = 0;
 
   current_kboard->Vprefix_arg = Qnil;
   current_kboard->Vlast_prefix_arg = Qnil;
@@ -1590,11 +1658,6 @@ command_loop_1 ()
            }
        }
 
-#ifdef C_ALLOCA
-      alloca (0);              /* Cause a garbage collection now */
-                               /* Since we can free the most stuff here.  */
-#endif /* C_ALLOCA */
-
 #if 0
       /* Select the frame that the last event came from.  Usually,
         switch-frame events will take care of this, but if some lisp
@@ -1966,10 +2029,11 @@ command_loop_1 ()
       if (!NILP (current_kboard->defining_kbd_macro)
          && NILP (current_kboard->Vprefix_arg))
        finalize_kbd_macro_chars ();
-
+#if 0 /* This shouldn't be necessary anymore.  --lorentey  */
 #ifdef MULTI_KBOARD
       if (!was_locked)
-       any_kboard_state ();
+        any_kboard_state ();
+#endif
 #endif
     }
 }
@@ -2208,7 +2272,10 @@ void
 start_polling ()
 {
 #ifdef POLL_FOR_INPUT
-  if (read_socket_hook && !interrupt_input)
+  /* XXX This condition was (read_socket_hook && !interrupt_input),
+     but read_socket_hook is not global anymore.  Let's pretend that
+     it's always set. */
+  if (!interrupt_input)
     {
       /* Turn alarm handling on unconditionally.  It might have
         been turned off in process.c.  */
@@ -2242,7 +2309,10 @@ int
 input_polling_used ()
 {
 #ifdef POLL_FOR_INPUT
-  return read_socket_hook && !interrupt_input;
+  /* XXX This condition was (read_socket_hook && !interrupt_input),
+     but read_socket_hook is not global anymore.  Let's pretend that
+     it's always set. */
+  return !interrupt_input;
 #else
   return 0;
 #endif
@@ -2254,7 +2324,10 @@ void
 stop_polling ()
 {
 #ifdef POLL_FOR_INPUT
-  if (read_socket_hook && !interrupt_input)
+  /* XXX This condition was (read_socket_hook && !interrupt_input),
+     but read_socket_hook is not global anymore.  Let's pretend that
+     it's always set. */
+  if (!interrupt_input)
     ++poll_suppress_count;
 #endif
 }
@@ -2393,7 +2466,7 @@ show_help_echo (help, window, object, pos, ok_to_overwrite_keystroke_echo)
        return;
     }
 
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
   if (!noninteractive && STRINGP (help))
     {
       /* The mouse-fixup-help-message Lisp function can call
@@ -2466,10 +2539,6 @@ read_char_help_form_unwind (arg)
   return Qnil;
 }
 
-#ifdef MULTI_KBOARD
-static jmp_buf wrong_kboard_jmpbuf;
-#endif
-
 #define STOP_POLLING                                   \
 do { if (! polling_stopped_here) stop_polling ();      \
        polling_stopped_here = 1; } while (0)
@@ -2496,6 +2565,9 @@ do { if (polling_stopped_here) start_polling ();  \
    if we used a mouse menu to read the input, or zero otherwise.  If
    USED_MOUSE_MENU is null, we don't dereference it.
 
+   Value is -2 when we find input on another keyboard.  A second call
+   to read_char will read it. 
+
    If END_TIME is non-null, it is a pointer to an EMACS_TIME
    specifying the maximum time to wait until.  If no input arrives by
    that time, stop waiting and return nil.
@@ -2522,6 +2594,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
   volatile int reread;
   struct gcpro gcpro1, gcpro2;
   int polling_stopped_here = 0;
+  struct kboard *orig_kboard = current_kboard;
 
   also_record = Qnil;
 
@@ -2736,6 +2809,10 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
       && !detect_input_pending_run_timers (0))
     {
       c = read_char_minibuf_menu_prompt (commandflag, nmaps, maps);
+
+      if (INTEGERP (c) && XINT (c) == -2)
+        return c;               /* wrong_kboard_jmpbuf */
+
       if (! NILP (c))
        {
          key_already_recorded = 1;
@@ -2752,6 +2829,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
   jmpcount = SPECPDL_INDEX ();
   if (_setjmp (local_getcjmp))
     {
+      /* Handle quits while reading the keyboard.  */
       /* We must have saved the outer value of getcjmp here,
         so restore it now.  */
       restore_getcjmp (save_jump);
@@ -2789,7 +2867,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
            /* This is going to exit from read_char
               so we had better get rid of this frame's stuff.  */
            UNGCPRO;
-           longjmp (wrong_kboard_jmpbuf, 1);
+            return make_number (-2); /* wrong_kboard_jmpbuf */
          }
       }
 #endif
@@ -2926,6 +3004,19 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
        }
     }
 
+  /* Notify the caller if an autosave hook, or a timer, sentinel or
+     filter in the sit_for calls above have changed the current
+     kboard.  This could happen if they use the minibuffer or start a
+     recursive edit, like the fancy splash screen in server.el's
+     filter.  If this longjmp wasn't here, read_key_sequence would
+     interpret the next key sequence using the wrong translation
+     tables and function keymaps.  */
+  if (NILP (c) && current_kboard != orig_kboard)
+    {
+      UNGCPRO;
+      return make_number (-2);  /* wrong_kboard_jmpbuf */
+    }
+
   /* If this has become non-nil here, it has been set by a timer
      or sentinel or filter.  */
   if (CONSP (Vunread_command_events))
@@ -2974,7 +3065,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
            /* This is going to exit from read_char
               so we had better get rid of this frame's stuff.  */
            UNGCPRO;
-           longjmp (wrong_kboard_jmpbuf, 1);
+            return make_number (-2); /* wrong_kboard_jmpbuf */
          }
     }
 #endif
@@ -3030,7 +3121,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
          /* This is going to exit from read_char
             so we had better get rid of this frame's stuff.  */
          UNGCPRO;
-         longjmp (wrong_kboard_jmpbuf, 1);
+          return make_number (-2);
        }
 #endif
     }
@@ -3085,8 +3176,12 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
 
   if (!NILP (tem))
     {
+#if 0 /* This shouldn't be necessary anymore. --lorentey  */
       int was_locked = single_kboard;
-
+      int count = SPECPDL_INDEX ();
+      record_single_kboard_state ();
+#endif
+      
       last_input_char = c;
       Fcommand_execute (tem, Qnil, Fvector (1, &last_input_char), Qt);
 
@@ -3097,9 +3192,12 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
           example banishing the mouse under mouse-avoidance-mode.  */
        timer_resume_idle ();
 
+#if 0 /* This shouldn't be necessary anymore. --lorentey  */
       /* Resume allowing input from any kboard, if that was true before.  */
       if (!was_locked)
        any_kboard_state ();
+      unbind_to (count, Qnil);
+#endif
 
       goto retry;
     }
@@ -3111,15 +3209,15 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
       if (XINT (c) == -1)
        goto exit;
 
-      if ((STRINGP (Vkeyboard_translate_table)
-          && SCHARS (Vkeyboard_translate_table) > (unsigned) XFASTINT (c))
-         || (VECTORP (Vkeyboard_translate_table)
-             && XVECTOR (Vkeyboard_translate_table)->size > (unsigned) XFASTINT (c))
-         || (CHAR_TABLE_P (Vkeyboard_translate_table)
+      if ((STRINGP (current_kboard->Vkeyboard_translate_table)
+          && SCHARS (current_kboard->Vkeyboard_translate_table) > (unsigned) XFASTINT (c))
+         || (VECTORP (current_kboard->Vkeyboard_translate_table)
+             && XVECTOR (current_kboard->Vkeyboard_translate_table)->size > (unsigned) XFASTINT (c))
+         || (CHAR_TABLE_P (current_kboard->Vkeyboard_translate_table)
              && CHAR_VALID_P (XINT (c), 0)))
        {
          Lisp_Object d;
-         d = Faref (Vkeyboard_translate_table, c);
+         d = Faref (current_kboard->Vkeyboard_translate_table, c);
          /* nil in keyboard-translate-table means no translation.  */
          if (!NILP (d))
            c = d;
@@ -3645,7 +3743,7 @@ readable_events (flags)
        return 1;
     }
 
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
   if (!(flags & READABLE_EVENTS_IGNORE_SQUEEZABLES)
       && !NILP (do_mouse_tracking) && some_mouse_moved ())
     return 1;
@@ -3739,12 +3837,10 @@ kbd_buffer_store_event_hold (event, hold_quit)
       if (c == quit_char)
        {
 #ifdef MULTI_KBOARD
-         KBOARD *kb;
+         KBOARD *kb = FRAME_KBOARD (XFRAME (event->frame_or_window));
          struct input_event *sp;
 
-         if (single_kboard
-             && (kb = FRAME_KBOARD (XFRAME (event->frame_or_window)),
-                 kb != current_kboard))
+         if (single_kboard && kb != current_kboard)
            {
              kb->kbd_queue
                = Fcons (make_lispy_switch_frame (event->frame_or_window),
@@ -3787,7 +3883,7 @@ kbd_buffer_store_event_hold (event, hold_quit)
          }
 
          last_event_timestamp = event->timestamp;
-         interrupt_signal (0 /* dummy */);
+         handle_interrupt ();
          return;
        }
 
@@ -3920,8 +4016,12 @@ discard_mouse_events ()
 
       if (sp->kind == MOUSE_CLICK_EVENT
          || sp->kind == WHEEL_EVENT
+          || sp->kind == HORIZ_WHEEL_EVENT
 #ifdef WINDOWSNT
          || sp->kind == W32_SCROLL_BAR_CLICK_EVENT
+#endif
+#ifdef HAVE_GPM
+         || sp->kind == GPM_CLICK_EVENT
 #endif
          || sp->kind == SCROLL_BAR_CLICK_EVENT)
        {
@@ -4003,7 +4103,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
       
       if (kbd_fetch_ptr != kbd_store_ptr)
        break;
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
       if (!NILP (do_mouse_tracking) && some_mouse_moved ())
        break;
 #endif
@@ -4025,7 +4125,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
 #endif /* SIGIO */
       if (kbd_fetch_ptr != kbd_store_ptr)
        break;
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
       if (!NILP (do_mouse_tracking) && some_mouse_moved ())
        break;
 #endif
@@ -4261,7 +4361,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
            }
        }
     }
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
   /* Try generating a mouse motion event.  */
   else if (!NILP (do_mouse_tracking) && some_mouse_moved ())
     {
@@ -4272,11 +4372,15 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
       unsigned long time;
 
       *kbp = current_kboard;
-      /* Note that this uses F to determine which display to look at.
+      /* Note that this uses F to determine which terminal to look at.
         If there is no valid info, it does not store anything
         so x remains nil.  */
       x = Qnil;
-      (*mouse_position_hook) (&f, 0, &bar_window, &part, &x, &y, &time);
+
+      /* XXX Can f or mouse_position_hook be NULL here? */
+      if (f && FRAME_TERMINAL (f)->mouse_position_hook)
+        (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, 0, &bar_window,
+                                                    &part, &x, &y, &time);
 
       obj = Qnil;
 
@@ -4302,7 +4406,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
       if (!NILP (x) && NILP (obj))
        obj = make_lispy_movement (f, bar_window, part, x, y, time);
     }
-#endif /* HAVE_MOUSE */
+#endif /* HAVE_MOUSE || HAVE GPM */
   else
     /* We were promised by the above while loop that there was
        something for us to read!  */
@@ -4573,10 +4677,14 @@ timer_check (do_it_now)
        {
          if (NILP (vector[0]))
            {
-             int was_locked = single_kboard;
              int count = SPECPDL_INDEX ();
              Lisp_Object old_deactivate_mark = Vdeactivate_mark;
 
+#if 0 /* This shouldn't be necessary anymore.  --lorentey  */
+             /* On unbind_to, resume allowing input from any kboard, if that
+                 was true before.  */
+              record_single_kboard_state ();
+#endif
              /* Mark the timer as triggered to prevent problems if the lisp
                 code fails to reschedule it right.  */
              vector[0] = Qt;
@@ -4588,10 +4696,6 @@ timer_check (do_it_now)
              timers_run++;
              unbind_to (count, Qnil);
 
-             /* Resume allowing input from any kboard, if that was true before.  */
-             if (!was_locked)
-               any_kboard_state ();
-
              /* Since we have handled the event,
                 we don't need to tell the caller to wake up and do it.  */
            }
@@ -5097,7 +5201,7 @@ Lisp_Object Vlispy_mouse_stem;
 
 static char *lispy_wheel_names[] =
 {
-  "wheel-up", "wheel-down"
+  "wheel-up", "wheel-down", "wheel-left", "wheel-right"
 };
 
 /* drag-n-drop events are generated when a set of selected files are
@@ -5603,8 +5707,8 @@ make_lispy_event (event)
            fuzz = double_click_fuzz / 8;
 
          is_double = (button == last_mouse_button
-                      && (abs (XINT (event->x) - last_mouse_x) <= fuzz)
-                      && (abs (XINT (event->y) - last_mouse_y) <= fuzz)
+                      && (eabs (XINT (event->x) - last_mouse_x) <= fuzz)
+                      && (eabs (XINT (event->y) - last_mouse_y) <= fuzz)
                       && button_down_time != 0
                       && (EQ (Vdouble_click_time, Qt)
                           || (INTEGERP (Vdouble_click_time)
@@ -5734,6 +5838,7 @@ make_lispy_event (event)
       }
 
     case WHEEL_EVENT:
+    case HORIZ_WHEEL_EVENT:
       {
        Lisp_Object position;
        Lisp_Object head;
@@ -5771,8 +5876,8 @@ make_lispy_event (event)
            fuzz = double_click_fuzz / 8;
 
          is_double = (last_mouse_button < 0
-                      && (abs (XINT (event->x) - last_mouse_x) <= fuzz)
-                      && (abs (XINT (event->y) - last_mouse_y) <= fuzz)
+                      && (eabs (XINT (event->x) - last_mouse_x) <= fuzz)
+                      && (eabs (XINT (event->y) - last_mouse_y) <= fuzz)
                       && button_down_time != 0
                       && (EQ (Vdouble_click_time, Qt)
                           || (INTEGERP (Vdouble_click_time)
@@ -5818,6 +5923,9 @@ make_lispy_event (event)
               the up_modifier set.  */
            abort ();
 
+          if (event->kind == HORIZ_WHEEL_EVENT)
+            symbol_num += 2;
+
          /* Get the symbol we should use for the wheel event.  */
          head = modify_event_symbol (symbol_num,
                                      event->modifiers,
@@ -6019,13 +6127,73 @@ make_lispy_event (event)
       }
 #endif
 
+#ifdef HAVE_GPM
+    case GPM_CLICK_EVENT:
+      {
+       FRAME_PTR f = XFRAME (event->frame_or_window);
+       Lisp_Object head, position;
+       Lisp_Object *start_pos_ptr;
+       Lisp_Object start_pos;
+       int button = event->code;
+
+       if (button >= ASIZE (button_down_location))
+         {
+           button_down_location = larger_vector (button_down_location,
+                                                 button + 1, Qnil);
+           mouse_syms = larger_vector (mouse_syms, button + 1, Qnil);
+         }
+
+       start_pos_ptr = &AREF (button_down_location, button);
+       start_pos = *start_pos_ptr;
+
+       position = make_lispy_position (f, &event->x, &event->y,
+                                           event->timestamp);
+
+       if (event->modifiers & down_modifier)
+         *start_pos_ptr = Fcopy_alist (position);
+       else if (event->modifiers & (up_modifier | drag_modifier))
+         {
+           if (!CONSP (start_pos))
+             return Qnil;
+           event->modifiers &= ~up_modifier;
+         }
+
+       head = modify_event_symbol (button,
+                                   event->modifiers,
+                                   Qmouse_click, Vlispy_mouse_stem,
+                                   NULL,
+                                   &mouse_syms,
+                                   XVECTOR (mouse_syms)->size);
+
+       if (event->modifiers & drag_modifier)
+         return Fcons (head,
+                       Fcons (start_pos,
+                              Fcons (position,
+                                     Qnil)));
+       else if (event->modifiers & double_modifier)
+         return Fcons (head,
+                       Fcons (position,
+                              Fcons (make_number (2),
+                                     Qnil)));
+       else if (event->modifiers & triple_modifier)
+         return Fcons (head,
+                       Fcons (position,
+                              Fcons (make_number (3),
+                                     Qnil)));
+       else
+         return Fcons (head,
+                       Fcons (position,
+                              Qnil));
+       }
+#endif /* HAVE_GPM */
+
       /* The 'kind' field of the event is something we don't recognize.  */
     default:
       abort ();
     }
 }
 
-#ifdef HAVE_MOUSE
+#if defined(HAVE_MOUSE) || defined(HAVE_GPM)
 
 static Lisp_Object
 make_lispy_movement (frame, bar_window, part, x, y, time)
@@ -6064,7 +6232,7 @@ make_lispy_movement (frame, bar_window, part, x, y, time)
     }
 }
 
-#endif /* HAVE_MOUSE */
+#endif /* HAVE_MOUSE || HAVE GPM */
 
 /* Construct a switch frame event.  */
 static Lisp_Object
@@ -6492,8 +6660,8 @@ modify_event_symbol (symbol_num, modifiers, symbol_kind, name_alist_or_stem,
        {
          int len = SBYTES (name_alist_or_stem);
          char *buf = (char *) alloca (len + 50);
-         sprintf (buf, "%s-%ld", SDATA (name_alist_or_stem),
-                  (long) XINT (symbol_int) + 1);
+          sprintf (buf, "%s-%ld", SDATA (name_alist_or_stem),
+                   (long) XINT (symbol_int) + 1);
          value = intern (buf);
        }
       else if (name_table != 0 && name_table[symbol_num])
@@ -6758,7 +6926,10 @@ gobble_input (expected)
     }
   else
 #ifdef POLL_FOR_INPUT
-  if (read_socket_hook && !interrupt_input && poll_suppress_count == 0)
+  /* XXX This condition was (read_socket_hook && !interrupt_input),
+     but read_socket_hook is not global anymore.  Let's pretend that
+     it's always set. */
+  if (!interrupt_input && poll_suppress_count == 0)
     {
       SIGMASKTYPE mask;
       mask = sigblock (sigmask (SIGALRM));
@@ -6835,150 +7006,241 @@ static int
 read_avail_input (expected)
      int expected;
 {
-  register int i;
   int nread = 0;
+  int err = 0;
+  struct terminal *t;
 
   /* Store pending user signal events, if any.  */
   if (store_user_signal_events ())
     expected = 0;
 
-  if (read_socket_hook)
+  /* Loop through the available terminals, and call their input hooks. */
+  t = terminal_list;
+  while (t)
     {
-      int nr;
-      struct input_event hold_quit;
+      struct terminal *next = t->next_terminal;
 
-      EVENT_INIT (hold_quit);
-      hold_quit.kind = NO_EVENT;
+      if (t->read_socket_hook)
+        {
+          int nr;
+          struct input_event hold_quit;
+
+          EVENT_INIT (hold_quit);
+          hold_quit.kind = NO_EVENT;
+
+          /* No need for FIONREAD or fcntl; just say don't wait.  */
+          while (nr = (*t->read_socket_hook) (t, expected, &hold_quit), nr > 0)
+            {
+              nread += nr;
+              expected = 0;
+            }
+          
+          if (nr == -1)          /* Not OK to read input now. */
+            {
+              err = 1;
+            }
+          else if (nr == -2)          /* Non-transient error. */
+            {
+              /* The terminal device terminated; it should be closed. */
+              
+              /* Kill Emacs if this was our last terminal. */
+              if (!terminal_list->next_terminal)
+                /* Formerly simply reported no input, but that
+                   sometimes led to a failure of Emacs to terminate.
+                   SIGHUP seems appropriate if we can't reach the
+                   terminal.  */
+                /* ??? Is it really right to send the signal just to
+                   this process rather than to the whole process
+                   group?  Perhaps on systems with FIONREAD Emacs is
+                   alone in its group.  */
+                kill (getpid (), SIGHUP);
+              
+              /* XXX Is calling delete_terminal safe here?  It calls Fdelete_frame. */
+              if (t->delete_terminal_hook)
+                (*t->delete_terminal_hook) (t);
+              else
+                delete_terminal (t);
+            }
+
+          if (hold_quit.kind != NO_EVENT)
+            kbd_buffer_store_event (&hold_quit);
+        }
 
-      /* No need for FIONREAD or fcntl; just say don't wait.  */
-      while (nr = (*read_socket_hook) (input_fd, expected, &hold_quit), nr > 0)
-       {
-         nread += nr;
-         expected = 0;
-       }
-      if (hold_quit.kind != NO_EVENT)
-       kbd_buffer_store_event (&hold_quit);
+      t = next;
     }
-  else
-    {
-      /* Using KBD_BUFFER_SIZE - 1 here avoids reading more than
-        the kbd_buffer can really hold.  That may prevent loss
-        of characters on some systems when input is stuffed at us.  */
-      unsigned char cbuf[KBD_BUFFER_SIZE - 1];
-      int n_to_read;
 
-      /* Determine how many characters we should *try* to read.  */
+  if (err && !nread)
+    nread = -1;
+
+  return nread;
+}
+
+/* This is the tty way of reading available input.
+
+   Note that each terminal device has its own `struct terminal' object,
+   and so this function is called once for each individual termcap
+   terminal.  The first parameter indicates which terminal to read from.  */
+
+int
+tty_read_avail_input (struct terminal *terminal,
+                      int expected,
+                      struct input_event *hold_quit)
+{
+  /* Using KBD_BUFFER_SIZE - 1 here avoids reading more than
+     the kbd_buffer can really hold.  That may prevent loss
+     of characters on some systems when input is stuffed at us.  */
+  unsigned char cbuf[KBD_BUFFER_SIZE - 1];
+  int n_to_read, i;
+  struct tty_display_info *tty = terminal->display_info.tty;
+  int nread = 0;
+
+  if (!terminal->name)         /* Don't read from a dead terminal. */
+    return;
+
+  if (terminal->type != output_termcap)
+    abort ();
+
+  /* XXX I think the following code should be moved to separate hook
+     functions in system-dependent files. */
 #ifdef WINDOWSNT
-      return 0;
+  return 0;
 #else /* not WINDOWSNT */
 #ifdef MSDOS
-      n_to_read = dos_keysns ();
-      if (n_to_read == 0)
-       return 0;
+  n_to_read = dos_keysns ();
+  if (n_to_read == 0)
+    return 0;
+
+  cbuf[0] = dos_keyread ();
+  nread = 1;
+
 #else /* not MSDOS */
+
+  if (! tty->term_initted)      /* In case we get called during bootstrap. */
+    return 0;
+
+  if (! tty->input)
+    return 0;                   /* The terminal is suspended. */
+
+#ifdef HAVE_GPM
+  if (gpm_tty == tty)
+  {
+      Gpm_Event event;
+      struct input_event hold_quit;
+      int gpm;
+
+      EVENT_INIT (hold_quit);
+      hold_quit.kind = NO_EVENT;
+
+      while (gpm = Gpm_GetEvent (&event), gpm == 1) {
+         nread += handle_one_term_event (tty, &event, &hold_quit);
+      }
+      if (hold_quit.kind != NO_EVENT)
+         kbd_buffer_store_event (&hold_quit);
+      if (nread)
+         return nread;
+  }
+#endif /* HAVE_GPM */
+
+/* Determine how many characters we should *try* to read.  */
 #ifdef FIONREAD
-      /* Find out how much input is available.  */
-      if (ioctl (input_fd, FIONREAD, &n_to_read) < 0)
-       /* Formerly simply reported no input, but that sometimes led to
-          a failure of Emacs to terminate.
-          SIGHUP seems appropriate if we can't reach the terminal.  */
-       /* ??? Is it really right to send the signal just to this process
-          rather than to the whole process group?
-          Perhaps on systems with FIONREAD Emacs is alone in its group.  */
-       {
-         if (! noninteractive)
-           kill (getpid (), SIGHUP);
-         else
-           n_to_read = 0;
-       }
-      if (n_to_read == 0)
-       return 0;
-      if (n_to_read > sizeof cbuf)
-       n_to_read = sizeof cbuf;
+  /* Find out how much input is available.  */
+  if (ioctl (fileno (tty->input), FIONREAD, &n_to_read) < 0)
+    {
+      if (! noninteractive)
+        return -2;          /* Close this terminal. */
+      else
+        n_to_read = 0;
+    }
+  if (n_to_read == 0)
+    return 0;
+  if (n_to_read > sizeof cbuf)
+    n_to_read = sizeof cbuf;
 #else /* no FIONREAD */
 #if defined (USG) || defined (DGUX) || defined(CYGWIN)
-      /* Read some input if available, but don't wait.  */
-      n_to_read = sizeof cbuf;
-      fcntl (input_fd, F_SETFL, O_NDELAY);
+  /* Read some input if available, but don't wait.  */
+  n_to_read = sizeof cbuf;
+  fcntl (fileno (tty->input), F_SETFL, O_NDELAY);
 #else
-      you lose;
+  you lose;
 #endif
 #endif
-#endif /* not MSDOS */
-#endif /* not WINDOWSNT */
 
-      /* Now read; for one reason or another, this will not block.
-        NREAD is set to the number of chars read.  */
-      do
-       {
-#ifdef MSDOS
-         cbuf[0] = dos_keyread ();
-         nread = 1;
-#else
-         nread = emacs_read (input_fd, cbuf, n_to_read);
-#endif
-         /* POSIX infers that processes which are not in the session leader's
-            process group won't get SIGHUP's at logout time.  BSDI adheres to
-            this part standard and returns -1 from read (0) with errno==EIO
-            when the control tty is taken away.
-            Jeffrey Honig <jch@bsdi.com> says this is generally safe.  */
-         if (nread == -1 && errno == EIO)
-           kill (0, SIGHUP);
+  /* Now read; for one reason or another, this will not block.
+     NREAD is set to the number of chars read.  */
+  do
+    {
+      nread = emacs_read (fileno (tty->input), cbuf, n_to_read);
+      /* POSIX infers that processes which are not in the session leader's
+         process group won't get SIGHUP's at logout time.  BSDI adheres to
+         this part standard and returns -1 from read (0) with errno==EIO
+         when the control tty is taken away.
+         Jeffrey Honig <jch@bsdi.com> says this is generally safe. */
+      if (nread == -1 && errno == EIO)
+        return -2;          /* Close this terminal. */
 #if defined (AIX) && (! defined (aix386) && defined (_BSD))
-         /* The kernel sometimes fails to deliver SIGHUP for ptys.
-            This looks incorrect, but it isn't, because _BSD causes
-            O_NDELAY to be defined in fcntl.h as O_NONBLOCK,
-            and that causes a value other than 0 when there is no input.  */
-         if (nread == 0)
-           kill (0, SIGHUP);
-#endif
-       }
-      while (
-            /* We used to retry the read if it was interrupted.
-               But this does the wrong thing when O_NDELAY causes
-               an EAGAIN error.  Does anybody know of a situation
-               where a retry is actually needed?  */
+      /* The kernel sometimes fails to deliver SIGHUP for ptys.
+         This looks incorrect, but it isn't, because _BSD causes
+         O_NDELAY to be defined in fcntl.h as O_NONBLOCK,
+         and that causes a value other than 0 when there is no input.  */
+      if (nread == 0)
+        return -2;          /* Close this terminal. */
+#endif
+    }
+  while (
+         /* We used to retry the read if it was interrupted.
+            But this does the wrong thing when O_NDELAY causes
+            an EAGAIN error.  Does anybody know of a situation
+            where a retry is actually needed?  */
 #if 0
-            nread < 0 && (errno == EAGAIN
+         nread < 0 && (errno == EAGAIN
 #ifdef EFAULT
-                          || errno == EFAULT
+                       || errno == EFAULT
 #endif
 #ifdef EBADSLT
-                          || errno == EBADSLT
+                       || errno == EBADSLT
 #endif
-                          )
+                       )
 #else
-            0
+         0
 #endif
-            );
+         );
 
 #ifndef FIONREAD
 #if defined (USG) || defined (DGUX) || defined (CYGWIN)
-      fcntl (input_fd, F_SETFL, 0);
+  fcntl (fileno (tty->input), F_SETFL, 0);
 #endif /* USG or DGUX or CYGWIN */
 #endif /* no FIONREAD */
-      for (i = 0; i < nread; i++)
-       {
-         struct input_event buf;
-         EVENT_INIT (buf);
-         buf.kind = ASCII_KEYSTROKE_EVENT;
-         buf.modifiers = 0;
-         if (meta_key == 1 && (cbuf[i] & 0x80))
-           buf.modifiers = meta_modifier;
-         if (meta_key != 2)
-           cbuf[i] &= ~0x80;
-
-         buf.code = cbuf[i];
-         buf.frame_or_window = selected_frame;
-         buf.arg = Qnil;
-
-         kbd_buffer_store_event (&buf);
-         /* Don't look at input that follows a C-g too closely.
-            This reduces lossage due to autorepeat on C-g.  */
-         if (buf.kind == ASCII_KEYSTROKE_EVENT
-             && buf.code == quit_char)
-           break;
-       }
+
+  if (nread <= 0)
+    return nread;
+
+#endif /* not MSDOS */
+#endif /* not WINDOWSNT */
+
+  for (i = 0; i < nread; i++)
+    {
+      struct input_event buf;
+      EVENT_INIT (buf);
+      buf.kind = ASCII_KEYSTROKE_EVENT;
+      buf.modifiers = 0;
+      if (tty->meta_key == 1 && (cbuf[i] & 0x80))
+        buf.modifiers = meta_modifier;
+      if (tty->meta_key != 2)
+        cbuf[i] &= ~0x80;
+      
+      buf.code = cbuf[i];
+      /* Set the frame corresponding to the active tty.  Note that the
+         value of selected_frame is not reliable here, redisplay tends
+         to temporarily change it. */
+      buf.frame_or_window = tty->top_frame;
+      buf.arg = Qnil;
+      
+      kbd_buffer_store_event (&buf);
+      /* Don't look at input that follows a C-g too closely.
+         This reduces lossage due to autorepeat on C-g.  */
+      if (buf.kind == ASCII_KEYSTROKE_EVENT
+          && buf.code == quit_char)
+        break;
     }
 
   return nread;
@@ -7329,13 +7591,7 @@ menu_bar_items (old)
   /* Add nil, nil, nil, nil at the end.  */
   i = menu_bar_items_index;
   if (i + 4 > XVECTOR (menu_bar_items_vector)->size)
-    {
-      Lisp_Object tem;
-      tem = Fmake_vector (make_number (2 * i), Qnil);
-      bcopy (XVECTOR (menu_bar_items_vector)->contents,
-            XVECTOR (tem)->contents, i * sizeof (Lisp_Object));
-      menu_bar_items_vector = tem;
-    }
+    menu_bar_items_vector = larger_vector (menu_bar_items_vector, 2 * i, Qnil);
   /* Add this item.  */
   XVECTOR (menu_bar_items_vector)->contents[i++] = Qnil;
   XVECTOR (menu_bar_items_vector)->contents[i++] = Qnil;
@@ -7407,14 +7663,7 @@ menu_bar_item (key, item, dummy1, dummy2)
     {
       /* If vector is too small, get a bigger one.  */
       if (i + 4 > XVECTOR (menu_bar_items_vector)->size)
-       {
-         Lisp_Object tem;
-         tem = Fmake_vector (make_number (2 * i), Qnil);
-         bcopy (XVECTOR (menu_bar_items_vector)->contents,
-                XVECTOR (tem)->contents, i * sizeof (Lisp_Object));
-         menu_bar_items_vector = tem;
-       }
-
+       menu_bar_items_vector = larger_vector (menu_bar_items_vector, 2 * i, Qnil);
       /* Add this item.  */
       XVECTOR (menu_bar_items_vector)->contents[i++] = key;
       XVECTOR (menu_bar_items_vector)->contents[i++]
@@ -8127,7 +8376,7 @@ parse_tool_bar_item (key, item)
        PROP (TOOL_BAR_ITEM_IMAGES) = value;
       else if (EQ (key, Qrtl))
         /* ':rtl STRING' */
-        PROP (TOOL_BAR_ITEM_RTL_IMAGE) = value;
+       PROP (TOOL_BAR_ITEM_RTL_IMAGE) = value;
     }
 
   /* If got a filter apply it on binding.  */
@@ -8183,16 +8432,9 @@ append_tool_bar_item ()
   /* Enlarge tool_bar_items_vector if necessary.  */
   if (ntool_bar_items + TOOL_BAR_ITEM_NSLOTS
       >= XVECTOR (tool_bar_items_vector)->size)
-    {
-      Lisp_Object new_vector;
-      int old_size = XVECTOR (tool_bar_items_vector)->size;
-
-      new_vector = Fmake_vector (make_number (2 * old_size), Qnil);
-      bcopy (XVECTOR (tool_bar_items_vector)->contents,
-            XVECTOR (new_vector)->contents,
-            old_size * sizeof (Lisp_Object));
-      tool_bar_items_vector = new_vector;
-    }
+    tool_bar_items_vector
+      = larger_vector (tool_bar_items_vector,
+                      2 * XVECTOR (tool_bar_items_vector)->size, Qnil);
 
   /* Append entries from tool_bar_item_properties to the end of
      tool_bar_items_vector.  */
@@ -8560,6 +8802,8 @@ read_char_minibuf_menu_prompt (commandflag, nmaps, maps)
 
       if (!INTEGERP (obj))
        return obj;
+      else if (XINT (obj) == -2)
+        return obj;
       else
        ch = XINT (obj);
 
@@ -8870,8 +9114,8 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
      key's again in Vfunction_key_map.  */
   volatile keyremap fkey;
 
-  /* Likewise, for key_translation_map.  */
-  volatile keyremap keytran;
+  /* Likewise, for key_translation_map and input-decode-map.  */
+  volatile keyremap keytran, indec;
 
   /* If we receive a `switch-frame' or `select-window' event in the middle of
      a key sequence, we put it off for later.
@@ -8906,11 +9150,7 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
   last_nonmenu_event = Qnil;
 
   delayed_switch_frame = Qnil;
-  fkey.map = fkey.parent = Vfunction_key_map;
-  keytran.map = keytran.parent = Vkey_translation_map;
-  fkey.start = fkey.end = 0;
-  keytran.start = keytran.end = 0;
-
+  
   if (INTERACTIVE)
     {
       if (!NILP (prompt))
@@ -8950,6 +9190,15 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
      keybuf[0..mock_input] holds the sequence we should reread.  */
  replay_sequence:
 
+  /* We may switch keyboards between rescans, so we need to
+     reinitialize fkey and keytran before each replay.  */
+  indec.map = indec.parent = current_kboard->Vinput_decode_map;
+  fkey.map = fkey.parent = current_kboard->Vlocal_function_key_map;
+  keytran.map = keytran.parent = Vkey_translation_map;
+  indec.start = indec.end = 0;
+  fkey.start = fkey.end = 0;
+  keytran.start = keytran.end = 0;
+
   starting_buffer = current_buffer;
   first_unbound = bufsize + 1;
 
@@ -9035,7 +9284,7 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
            Thus, if ESC O a has a function-key-map translation
            and ESC o has a binding, don't return after ESC O,
            so that we can translate ESC O plus the next character.  */
-        : (fkey.start < t || keytran.start < t))
+        : (/* indec.start < t || fkey.start < t || */ keytran.start < t))
     {
       Lisp_Object key;
       int used_mouse_menu = 0;
@@ -9053,13 +9302,17 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
         just one key.  */
       volatile int echo_local_start, keys_local_start, local_first_binding;
 
-      eassert (fkey.end == t || (fkey.end > t && fkey.end <= mock_input));
+      eassert (indec.end == t || (indec.end > t && indec.end <= mock_input));
+      eassert (indec.start <= indec.end);
       eassert (fkey.start <= fkey.end);
       eassert (keytran.start <= keytran.end);
-      /* key-translation-map is applied *after* function-key-map.  */
+      /* key-translation-map is applied *after* function-key-map
+        which is itself applied *after* input-decode-map.  */
+      eassert (fkey.end <= indec.start);
       eassert (keytran.end <= fkey.start);
 
-      if (first_unbound < fkey.start && first_unbound < keytran.start)
+      if (/* first_unbound < indec.start && first_unbound < fkey.start && */
+         first_unbound < keytran.start)
        { /* The prefix upto first_unbound has no binding and has
             no translation left to do either, so we know it's unbound.
             If we don't stop now, we risk staying here indefinitely
@@ -9069,6 +9322,8 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
          for (i = first_unbound + 1; i < t; i++)
            keybuf[i - first_unbound - 1] = keybuf[i];
          mock_input = t - first_unbound - 1;
+         indec.end = indec.start -= first_unbound + 1;
+         indec.map = indec.parent;
          fkey.end = fkey.start -= first_unbound + 1;
          fkey.map = fkey.parent;
          keytran.end = keytran.start -= first_unbound + 1;
@@ -9114,8 +9369,28 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
 #ifdef MULTI_KBOARD
            KBOARD *interrupted_kboard = current_kboard;
            struct frame *interrupted_frame = SELECTED_FRAME ();
-           if (setjmp (wrong_kboard_jmpbuf))
+#endif
+           key = read_char (NILP (prompt), nmaps,
+                            (Lisp_Object *) submaps, last_nonmenu_event,
+                            &used_mouse_menu, NULL);
+#ifdef MULTI_KBOARD
+           if (INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */
              {
+               int found = 0;
+               struct kboard *k;
+
+               for (k = all_kboards; k; k = k->next_kboard)
+                 if (k == interrupted_kboard)
+                   found = 1;
+
+               if (!found)
+                 {
+                   /* Don't touch interrupted_kboard when it's been
+                      deleted. */
+                   delayed_switch_frame = Qnil;
+                   goto replay_sequence;
+                 }
+
                if (!NILP (delayed_switch_frame))
                  {
                    interrupted_kboard->kbd_queue
@@ -9123,6 +9398,7 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
                               interrupted_kboard->kbd_queue);
                    delayed_switch_frame = Qnil;
                  }
+
                while (t > 0)
                  interrupted_kboard->kbd_queue
                    = Fcons (keybuf[--t], interrupted_kboard->kbd_queue);
@@ -9147,9 +9423,6 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
                goto replay_sequence;
              }
 #endif
-           key = read_char (NILP (prompt), nmaps,
-                            (Lisp_Object *) submaps, last_nonmenu_event,
-                            &used_mouse_menu, NULL);
          }
 
          /* read_char returns t when it shows a menu and the user rejects it.
@@ -9476,15 +9749,15 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
        /* This is needed for the following scenario:
           event 0: a down-event that gets dropped by calling replay_key.
           event 1: some normal prefix like C-h.
-          After event 0, first_unbound is 0, after event 1 fkey.start
-          and keytran.start are both 1, so when we see that C-h is bound,
-          we need to update first_unbound.  */
+          After event 0, first_unbound is 0, after event 1 indec.start,
+          fkey.start, and keytran.start are all 1, so when we see that
+          C-h is bound, we need to update first_unbound.  */
        first_unbound = max (t + 1, first_unbound);
       else
        {
          Lisp_Object head;
 
-         /* Remember the position to put an upper bound on fkey.start.  */
+         /* Remember the position to put an upper bound on indec.start.  */
          first_unbound = min (t, first_unbound);
 
          head = EVENT_HEAD (key);
@@ -9569,21 +9842,27 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
                          /* If mock_input > t + 1, the above simplification
                             will actually end up dropping keys on the floor.
                             This is probably OK for now, but even
-                            if mock_input <= t + 1, we need to adjust fkey
-                            and keytran.
+                            if mock_input <= t + 1, we need to adjust indec,
+                            fkey, and keytran.
                             Typical case [header-line down-mouse-N]:
                             mock_input = 2, t = 1, fkey.end = 1,
                             last_real_key_start = 0.  */
-                         if (fkey.end > last_real_key_start)
+                         if (indec.end > last_real_key_start)
                            {
-                             fkey.end = fkey.start
-                               = min (last_real_key_start, fkey.start);
-                             fkey.map = fkey.parent;
-                             if (keytran.end > last_real_key_start)
+                             indec.end = indec.start
+                               = min (last_real_key_start, indec.start);
+                             indec.map = indec.parent;
+                             if (fkey.end > last_real_key_start)
                                {
-                                 keytran.end = keytran.start
-                                   = min (last_real_key_start, keytran.start);
-                                 keytran.map = keytran.parent;
+                                 fkey.end = fkey.start
+                                   = min (last_real_key_start, fkey.start);
+                                 fkey.map = fkey.parent;
+                                 if (keytran.end > last_real_key_start)
+                                   {
+                                     keytran.end = keytran.start
+                                       = min (last_real_key_start, keytran.start);
+                                     keytran.map = keytran.parent;
+                                   }
                                }
                            }
                          if (t == last_real_key_start)
@@ -9637,8 +9916,28 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
       /* Record what part of this_command_keys is the current key sequence.  */
       this_single_command_key_start = this_command_key_count - t;
 
-      if (first_binding < nmaps && NILP (submaps[first_binding]))
+      /* Look for this sequence in input-decode-map.
+        Scan from indec.end until we find a bound suffix.  */
+      while (indec.end < t)
+       {
+         struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+         int done, diff;
+
+         GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame);
+         done = keyremap_step (keybuf, bufsize, &indec, max (t, mock_input),
+                               1, &diff, prompt);
+         UNGCPRO;
+         if (done)
+           {
+             mock_input = diff + max (t, mock_input);
+             goto replay_sequence;
+           }
+       }
+
+      if (first_binding < nmaps && NILP (submaps[first_binding])
+         && indec.start >= t)
        /* There is a binding and it's not a prefix.
+          (and it doesn't have any input-decode-map translation pending).
           There is thus no function-key in this sequence.
           Moving fkey.start is important in this case to allow keytran.start
           to go over the sequence before we return (since we keep the
@@ -9651,12 +9950,12 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
        /* If the sequence is unbound, see if we can hang a function key
           off the end of it.  */
        /* Continue scan from fkey.end until we find a bound suffix.  */
-       while (fkey.end < t)
+       while (fkey.end < indec.start)
          {
-           struct gcpro gcpro1, gcpro2, gcpro3;
+           struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
            int done, diff;
 
-           GCPRO3 (fkey.map, keytran.map, delayed_switch_frame);
+           GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame);
            done = keyremap_step (keybuf, bufsize, &fkey,
                                  max (t, mock_input),
                                  /* If there's a binding (i.e.
@@ -9668,6 +9967,10 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
            if (done)
              {
                mock_input = diff + max (t, mock_input);
+               /* Adjust the input-decode-map counters.  */
+               indec.end += diff;
+               indec.start += diff;
+
                goto replay_sequence;
              }
          }
@@ -9676,17 +9979,19 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
         Scan from keytran.end until we find a bound suffix.  */
       while (keytran.end < fkey.start)
        {
-         struct gcpro gcpro1, gcpro2, gcpro3;
+         struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
          int done, diff;
 
-         GCPRO3 (fkey.map, keytran.map, delayed_switch_frame);
+         GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame);
          done = keyremap_step (keybuf, bufsize, &keytran, max (t, mock_input),
                                1, &diff, prompt);
          UNGCPRO;
          if (done)
            {
              mock_input = diff + max (t, mock_input);
-             /* Adjust the function-key-map counters.  */
+             /* Adjust the function-key-map and input-decode-map counters.  */
+             indec.end += diff;
+             indec.start += diff;
              fkey.end += diff;
              fkey.start += diff;
 
@@ -9699,7 +10004,7 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
         and is an upper case letter
         use the corresponding lower-case letter instead.  */
       if (first_binding >= nmaps
-         && fkey.start >= t && keytran.start >= t
+         && /* indec.start >= t && fkey.start >= t && */ keytran.start >= t
          && INTEGERP (key)
          && ((((XINT (key) & 0x3ffff)
                < XCHAR_TABLE (current_buffer->downcase_table)->size)
@@ -9730,7 +10035,7 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
         and is a shifted function key,
         use the corresponding unshifted function key instead.  */
       if (first_binding >= nmaps
-         && fkey.start >= t && keytran.start >= t
+         && /* indec.start >= t && fkey.start >= t && */ keytran.start >= t
          && SYMBOLP (key))
        {
          Lisp_Object breakdown;
@@ -9751,9 +10056,6 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
 
              keybuf[t - 1] = new_key;
              mock_input = max (t, mock_input);
-             fkey.start = fkey.end = 0;
-             keytran.start = keytran.end = 0;
-
              goto replay_sequence;
            }
        }
@@ -10261,8 +10563,12 @@ detect_input_pending_run_timers (do_display)
         from an idle timer function.  The symptom of the bug is that
         the cursor sometimes doesn't become visible until the next X
         event is processed.  --gerd.  */
-      if (rif)
-       rif->flush_display (NULL);
+      {
+        Lisp_Object tail, frame;
+        FOR_EACH_FRAME (tail, frame)
+          if (FRAME_RIF (XFRAME (frame)))
+            FRAME_RIF (XFRAME (frame))->flush_display (XFRAME (frame));
+      }
     }
 
   return input_pending;
@@ -10514,6 +10820,9 @@ On such systems, Emacs starts a subshell instead of suspending.  */)
   int width, height;
   struct gcpro gcpro1;
 
+  if (tty_list && tty_list->next)
+    error ("There are other tty frames open; close them before suspending Emacs");
+
   if (!NILP (stuffstring))
     CHECK_STRING (stuffstring);
 
@@ -10522,11 +10831,11 @@ On such systems, Emacs starts a subshell instead of suspending.  */)
     call1 (Vrun_hooks, intern ("suspend-hook"));
 
   GCPRO1 (stuffstring);
-  get_frame_size (&old_width, &old_height);
-  reset_sys_modes ();
+  get_tty_size (fileno (CURTTY ()->input), &old_width, &old_height);
+  reset_all_sys_modes ();
   /* sys_suspend can get an error if it tries to fork a subshell
      and the system resources aren't available for that.  */
-  record_unwind_protect ((Lisp_Object (*) P_ ((Lisp_Object))) init_sys_modes,
+  record_unwind_protect ((Lisp_Object (*) P_ ((Lisp_Object))) init_all_sys_modes,
                         Qnil);
   stuff_buffered_input (stuffstring);
   if (cannot_suspend)
@@ -10538,7 +10847,7 @@ On such systems, Emacs starts a subshell instead of suspending.  */)
   /* Check if terminal/window size has changed.
      Note that this is not useful when we are running directly
      with a window system; but suspend should be disabled in that case.  */
-  get_frame_size (&width, &height);
+  get_tty_size (fileno (CURTTY ()->input), &width, &height);
   if (width != old_width || height != old_height)
     change_frame_size (SELECTED_FRAME (), height, width, 0, 0, 0);
 
@@ -10598,10 +10907,10 @@ set_waiting_for_input (time_to_clear)
 {
   input_available_clear_time = time_to_clear;
 
-  /* Tell interrupt_signal to throw back to read_char,  */
+  /* Tell handle_interrupt to throw back to read_char,  */
   waiting_for_input = 1;
 
-  /* If interrupt_signal was called before and buffered a C-g,
+  /* If handle_interrupt was called before and buffered a C-g,
      make it run again now, to avoid timing error. */
   if (!NILP (Vquit_flag))
     quit_throw_to_read_char ();
@@ -10610,48 +10919,82 @@ set_waiting_for_input (time_to_clear)
 void
 clear_waiting_for_input ()
 {
-  /* Tell interrupt_signal not to throw back to read_char,  */
+  /* Tell handle_interrupt not to throw back to read_char,  */
   waiting_for_input = 0;
   input_available_clear_time = 0;
 }
 
-/* This routine is called at interrupt level in response to C-g.
-
-   If interrupt_input, this is the handler for SIGINT.  Otherwise, it
-   is called from kbd_buffer_store_event, in handling SIGIO or
-   SIGTINT.
-
-   If `waiting_for_input' is non zero, then unless `echoing' is
-   nonzero, immediately throw back to read_char.
+/* The SIGINT handler.
 
-   Otherwise it sets the Lisp variable quit-flag not-nil.  This causes
-   eval to throw, when it gets a chance.  If quit-flag is already
-   non-nil, it stops the job right away.  */
+   If we have a frame on the controlling tty, we assume that the
+   SIGINT was generated by C-g, so we call handle_interrupt.
+   Otherwise, the handler kills Emacs.  */
 
 static SIGTYPE
 interrupt_signal (signalnum)   /* If we don't have an argument, */
      int signalnum;            /* some compilers complain in signal calls. */
 {
-  char c;
   /* Must preserve main program's value of errno.  */
   int old_errno = errno;
-  struct frame *sf = SELECTED_FRAME ();
+  struct terminal *terminal;
 
 #if defined (USG) && !defined (POSIX_SIGNALS)
-  if (!read_socket_hook && NILP (Vwindow_system))
-    {
-      /* USG systems forget handlers when they are used;
-        must reestablish each time */
-      signal (SIGINT, interrupt_signal);
-      signal (SIGQUIT, interrupt_signal);
-    }
+  /* USG systems forget handlers when they are used;
+     must reestablish each time */
+  signal (SIGINT, interrupt_signal);
+  signal (SIGQUIT, interrupt_signal);
 #endif /* USG */
 
   SIGNAL_THREAD_CHECK (signalnum);
+
+  /* See if we have an active terminal on our controlling tty. */
+  terminal = get_named_tty ("/dev/tty");
+  if (!terminal)
+    {
+      /* If there are no frames there, let's pretend that we are a
+         well-behaving UN*X program and quit. */
+      Fkill_emacs (Qnil);
+    }
+  else
+    {
+      /* Otherwise, the SIGINT was probably generated by C-g.  */
+
+      /* Set internal_last_event_frame to the top frame of the
+         controlling tty, if we have a frame there.  We disable the
+         interrupt key on secondary ttys, so the SIGINT must have come
+         from the controlling tty.  */
+      internal_last_event_frame = terminal->display_info.tty->top_frame;
+
+      handle_interrupt ();
+    }
+
+  errno = old_errno;
+}
+
+/* This routine is called at interrupt level in response to C-g.
+
+   It is called from the SIGINT handler or kbd_buffer_store_event.
+
+   If `waiting_for_input' is non zero, then unless `echoing' is
+   nonzero, immediately throw back to read_char.
+
+   Otherwise it sets the Lisp variable quit-flag not-nil.  This causes
+   eval to throw, when it gets a chance.  If quit-flag is already
+   non-nil, it stops the job right away. */
+
+static void
+handle_interrupt ()
+{
+  char c;
+
   cancel_echoing ();
 
+  /* XXX This code needs to be revised for multi-tty support. */
   if (!NILP (Vquit_flag)
-      && (FRAME_TERMCAP_P (sf) || FRAME_MSDOS_P (sf)))
+#ifndef MSDOS
+      && get_named_tty ("/dev/tty")
+#endif
+      )
     {
       /* If SIGINT isn't blocked, don't let us be interrupted by
         another SIGINT, it might be harmful due to non-reentrancy
@@ -10659,7 +11002,7 @@ interrupt_signal (signalnum)    /* If we don't have an argument, */
       sigblock (sigmask (SIGINT));
 
       fflush (stdout);
-      reset_sys_modes ();
+      reset_all_sys_modes ();
 
 #ifdef SIGTSTP                 /* Support possible in later USG versions */
 /*
@@ -10738,7 +11081,7 @@ interrupt_signal (signalnum)    /* If we don't have an argument, */
       printf ("Continuing...\n");
 #endif /* not MSDOS */
       fflush (stdout);
-      init_sys_modes ();
+      init_all_sys_modes ();
       sigfree ();
     }
   else
@@ -10766,9 +11109,7 @@ interrupt_signal (signalnum)    /* If we don't have an argument, */
     }
 
   if (waiting_for_input && !echoing)
-    quit_throw_to_read_char ();
-
-  errno = old_errno;
+      quit_throw_to_read_char ();
 }
 
 /* Handle a C-g by making read_char return C-g.  */
@@ -10801,75 +11142,203 @@ quit_throw_to_read_char ()
   _longjmp (getcjmp, 1);
 }
 \f
-DEFUN ("set-input-mode", Fset_input_mode, Sset_input_mode, 3, 4, 0,
-       doc: /* Set mode of reading keyboard input.
-First arg INTERRUPT non-nil means use input interrupts;
- nil means use CBREAK mode.
-Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal
- (no effect except in CBREAK mode).
-Third arg META t means accept 8-bit input (for a Meta key).
- META nil means ignore the top bit, on the assumption it is parity.
- Otherwise, accept 8-bit input and don't use the top bit for Meta.
-Optional fourth arg QUIT if non-nil specifies character to use for quitting.
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode, Sset_input_interrupt_mode, 1, 1, 0,
+       doc: /* Set interrupt mode of reading keyboard input.
+If INTERRUPT is non-nil, Emacs will use input interrupts;
+otherwise Emacs uses CBREAK mode.
+
 See also `current-input-mode'.  */)
-     (interrupt, flow, meta, quit)
-     Lisp_Object interrupt, flow, meta, quit;
+     (interrupt)
+     Lisp_Object interrupt;
 {
-  if (!NILP (quit)
-      && (!INTEGERP (quit) || XINT (quit) < 0 || XINT (quit) > 0400))
-    error ("set-input-mode: QUIT must be an ASCII character");
-
-#ifdef POLL_FOR_INPUT
-  stop_polling ();
-#endif
-
-#ifndef DOS_NT
-  /* this causes startup screen to be restored and messes with the mouse */
-  reset_sys_modes ();
-#endif
-
+  int new_interrupt_input;
 #ifdef SIGIO
 /* Note SIGIO has been undef'd if FIONREAD is missing.  */
-  if (read_socket_hook)
+#ifdef HAVE_X_WINDOWS
+  if (x_display_list != NULL)
     {
       /* When using X, don't give the user a real choice,
         because we haven't implemented the mechanisms to support it.  */
 #ifdef NO_SOCK_SIGIO
-      interrupt_input = 0;
+      new_interrupt_input = 0;
 #else /* not NO_SOCK_SIGIO */
-      interrupt_input = 1;
+      new_interrupt_input = 1;
 #endif /* NO_SOCK_SIGIO */
     }
   else
-    interrupt_input = !NILP (interrupt);
+#endif
+    new_interrupt_input = !NILP (interrupt);
 #else /* not SIGIO */
-  interrupt_input = 0;
+  new_interrupt_input = 0;
 #endif /* not SIGIO */
 
 /* Our VMS input only works by interrupts, as of now.  */
 #ifdef VMS
-  interrupt_input = 1;
+  new_interrupt_input = 1;
 #endif
 
-  flow_control = !NILP (flow);
+  if (new_interrupt_input != interrupt_input) 
+    {
+#ifdef POLL_FOR_INPUT
+      stop_polling ();
+#endif
+#ifndef DOS_NT
+      /* this causes startup screen to be restored and messes with the mouse */
+      reset_all_sys_modes ();
+#endif
+      interrupt_input = new_interrupt_input;
+#ifndef DOS_NT
+      init_all_sys_modes ();
+#endif
+
+#ifdef POLL_FOR_INPUT
+      poll_suppress_count = 1;
+      start_polling ();
+#endif
+    }
+  return Qnil;
+}
+
+DEFUN ("set-output-flow-control", Fset_output_flow_control, Sset_output_flow_control, 1, 2, 0,
+       doc: /* Enable or disable ^S/^Q flow control for output to TERMINAL.
+If FLOW is non-nil, flow control is enabled and you cannot use C-s or
+C-q in key sequences.
+
+This setting only has an effect on tty terminals and only when
+Emacs reads input in CBREAK mode; see `set-input-interrupt-mode'.
+
+See also `current-input-mode'.  */)
+       (flow, terminal)
+       Lisp_Object flow, terminal;
+{
+  struct terminal *t = get_terminal (terminal, 1);
+  struct tty_display_info *tty;
+  if (t == NULL || t->type != output_termcap)
+    return Qnil;
+  tty = t->display_info.tty;
+
+  if (tty->flow_control != !NILP (flow))
+    {
+#ifndef DOS_NT
+      /* this causes startup screen to be restored and messes with the mouse */
+      reset_sys_modes (tty);
+#endif
+
+      tty->flow_control = !NILP (flow);
+
+#ifndef DOS_NT
+      init_sys_modes (tty);
+#endif
+    }
+  return Qnil;
+}
+
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode, Sset_input_meta_mode, 1, 2, 0,
+       doc: /* Enable or disable 8-bit input on TERMINAL.
+If META is t, Emacs will accept 8-bit input, and interpret the 8th
+bit as the Meta modifier.
+
+If META is nil, Emacs will ignore the top bit, on the assumption it is
+parity.
+
+Otherwise, Emacs will accept and pass through 8-bit input without
+specially interpreting the top bit.
+
+This setting only has an effect on tty terminal devices.
+
+Optional parameter TERMINAL specifies the tty terminal device to use.
+It may be a terminal id, a frame, or nil for the terminal used by the
+currently selected frame.
+
+See also `current-input-mode'.  */)
+       (meta, terminal)
+       Lisp_Object meta, terminal;
+{
+  struct terminal *t = get_terminal (terminal, 1);
+  struct tty_display_info *tty;
+  int new_meta;
+  
+  if (t == NULL || t->type != output_termcap)
+    return Qnil;
+  tty = t->display_info.tty;
+
   if (NILP (meta))
-    meta_key = 0;
+    new_meta = 0;
   else if (EQ (meta, Qt))
-    meta_key = 1;
+    new_meta = 1;
   else
-    meta_key = 2;
-  if (!NILP (quit))
-    /* Don't let this value be out of range.  */
-    quit_char = XINT (quit) & (meta_key ? 0377 : 0177);
+    new_meta = 2;
 
+  if (tty->meta_key != new_meta) 
+    {
 #ifndef DOS_NT
-  init_sys_modes ();
+      /* this causes startup screen to be restored and messes with the mouse */
+      reset_sys_modes (tty);
 #endif
 
-#ifdef POLL_FOR_INPUT
-  poll_suppress_count = 1;
-  start_polling ();
+      tty->meta_key = new_meta;
+  
+#ifndef DOS_NT
+      init_sys_modes (tty);
 #endif
+    }
+  return Qnil;
+}
+
+DEFUN ("set-quit-char", Fset_quit_char, Sset_quit_char, 1, 1, 0,
+       doc: /* Specify character used for quitting.
+QUIT must be an ASCII character.
+
+This function only has an effect on the controlling tty of the Emacs
+process.
+
+See also `current-input-mode'.  */)
+       (quit)
+       Lisp_Object quit;
+{
+  struct terminal *t = get_named_tty ("/dev/tty");
+  struct tty_display_info *tty;
+  if (t == NULL || t->type != output_termcap)
+    return Qnil;
+  tty = t->display_info.tty;
+
+  if (NILP (quit) || !INTEGERP (quit) || XINT (quit) < 0 || XINT (quit) > 0400)
+    error ("QUIT must be an ASCII character");
+
+#ifndef DOS_NT
+  /* this causes startup screen to be restored and messes with the mouse */
+  reset_sys_modes (tty);
+#endif
+  
+  /* Don't let this value be out of range.  */
+  quit_char = XINT (quit) & (tty->meta_key == 0 ? 0177 : 0377);
+
+#ifndef DOS_NT
+  init_sys_modes (tty);
+#endif
+
+  return Qnil;
+}
+       
+DEFUN ("set-input-mode", Fset_input_mode, Sset_input_mode, 3, 4, 0,
+       doc: /* Set mode of reading keyboard input.
+First arg INTERRUPT non-nil means use input interrupts;
+ nil means use CBREAK mode.
+Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal
+ (no effect except in CBREAK mode).
+Third arg META t means accept 8-bit input (for a Meta key).
+ META nil means ignore the top bit, on the assumption it is parity.
+ Otherwise, accept 8-bit input and don't use the top bit for Meta.
+Optional fourth arg QUIT if non-nil specifies character to use for quitting.
+See also `current-input-mode'.  */)
+     (interrupt, flow, meta, quit)
+     Lisp_Object interrupt, flow, meta, quit;
+{
+  Fset_input_interrupt_mode (interrupt);
+  Fset_output_flow_control (flow, Qnil);
+  Fset_input_meta_mode (meta, Qnil);
+  if (!NILP (quit))
+    Fset_quit_char (quit);
   return Qnil;
 }
 
@@ -10890,10 +11359,21 @@ The elements of this list correspond to the arguments of
      ()
 {
   Lisp_Object val[4];
+  struct frame *sf = XFRAME (selected_frame);
 
   val[0] = interrupt_input ? Qt : Qnil;
-  val[1] = flow_control ? Qt : Qnil;
-  val[2] = meta_key == 2 ? make_number (0) : meta_key == 1 ? Qt : Qnil;
+  if (FRAME_TERMCAP_P (sf))
+    {
+      val[1] = FRAME_TTY (sf)->flow_control ? Qt : Qnil;
+      val[2] = (FRAME_TTY (sf)->meta_key == 2
+                ? make_number (0)
+                : (CURTTY ()->meta_key == 1 ? Qt : Qnil));
+    }
+  else
+    {
+      val[1] = Qnil;
+      val[2] = Qt;
+    }
   XSETFASTINT (val[3], quit_char);
 
   return Flist (sizeof (val) / sizeof (val[0]), val);
@@ -10985,6 +11465,7 @@ init_kboard (kb)
   kb->Voverriding_terminal_local_map = Qnil;
   kb->Vlast_command = Qnil;
   kb->Vreal_last_command = Qnil;
+  kb->Vkeyboard_translate_table = Qnil;
   kb->Vlast_repeatable_command = Qnil;
   kb->Vprefix_arg = Qnil;
   kb->Vlast_prefix_arg = Qnil;
@@ -11000,6 +11481,9 @@ init_kboard (kb)
   kb->reference_count = 0;
   kb->Vsystem_key_alist = Qnil;
   kb->system_key_syms = Qnil;
+  kb->Vinput_decode_map = Fmake_sparse_keymap (Qnil);
+  kb->Vlocal_function_key_map = Fmake_sparse_keymap (Qnil);
+  Fset_keymap_parent (kb->Vlocal_function_key_map, Vfunction_key_map);
   kb->Vdefault_minibuffer_frame = Qnil;
 }
 
@@ -11036,7 +11520,8 @@ delete_kboard (kb)
       && FRAMEP (selected_frame)
       && FRAME_LIVE_P (XFRAME (selected_frame)))
     {
-      current_kboard = XFRAME (selected_frame)->kboard;
+      current_kboard = FRAME_KBOARD (XFRAME (selected_frame));
+      single_kboard = 0;
       if (current_kboard == kb)
        abort ();
     }
@@ -11061,7 +11546,7 @@ init_keyboard ()
   recent_keys_index = 0;
   kbd_fetch_ptr = kbd_buffer;
   kbd_store_ptr = kbd_buffer;
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
   do_mouse_tracking = Qnil;
 #endif
   input_pending = 0;
@@ -11079,8 +11564,14 @@ init_keyboard ()
   wipe_kboard (current_kboard);
   init_kboard (current_kboard);
 
-  if (!noninteractive && !read_socket_hook && NILP (Vwindow_system))
+  if (!noninteractive)
     {
+      /* Before multi-tty support, these handlers used to be installed
+         only if the current session was a tty session.  Now an Emacs
+         session may have multiple display types, so we always handle
+         SIGINT.  There is special code in interrupt_signal to exit
+         Emacs on SIGINT when there are no termcap frames on the
+         controlling terminal. */
       signal (SIGINT, interrupt_signal);
 #if defined (HAVE_TERMIO) || defined (HAVE_TERMIOS)
       /* For systems with SysV TERMIO, C-g is set up for both SIGINT and
@@ -11254,7 +11745,7 @@ syms_of_keyboard ()
   Qmenu_bar = intern ("menu-bar");
   staticpro (&Qmenu_bar);
 
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
   Qmouse_fixup_help_message = intern ("mouse-fixup-help-message");
   staticpro (&Qmouse_fixup_help_message);
 #endif
@@ -11327,7 +11818,7 @@ syms_of_keyboard ()
   staticpro (&button_down_location);
   mouse_syms = Fmake_vector (make_number (1), Qnil);
   staticpro (&mouse_syms);
-  wheel_syms = Fmake_vector (make_number (2), Qnil);
+  wheel_syms = Fmake_vector (make_number (4), Qnil);
   staticpro (&wheel_syms);
 
   {
@@ -11386,7 +11877,7 @@ syms_of_keyboard ()
   defsubr (&Sread_key_sequence);
   defsubr (&Sread_key_sequence_vector);
   defsubr (&Srecursive_edit);
-#ifdef HAVE_MOUSE
+#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
   defsubr (&Strack_mouse);
 #endif
   defsubr (&Sinput_pending_p);
@@ -11405,6 +11896,10 @@ syms_of_keyboard ()
   defsubr (&Stop_level);
   defsubr (&Sdiscard_input);
   defsubr (&Sopen_dribble_file);
+  defsubr (&Sset_input_interrupt_mode);
+  defsubr (&Sset_output_flow_control);
+  defsubr (&Sset_input_meta_mode);
+  defsubr (&Sset_quit_char);
   defsubr (&Sset_input_mode);
   defsubr (&Scurrent_input_mode);
   defsubr (&Sexecute_extended_command);
@@ -11471,7 +11966,10 @@ In other words, the present command is the event that made the previous
 command exit.
 
 The value `kill-region' is special; it means that the previous command
-was a kill command.  */);
+was a kill command.
+
+`last-command' has a separate binding for each terminal device.
+See Info node `(elisp)Multiple displays'.  */);
 
   DEFVAR_KBOARD ("real-last-command", Vreal_last_command,
                 doc: /* Same as `last-command', but never altered by Lisp code.  */);
@@ -11588,8 +12086,8 @@ for that character after that prefix key.  */);
 Useful to set before you dump a modified Emacs.  */);
   Vtop_level = Qnil;
 
-  DEFVAR_LISP ("keyboard-translate-table", &Vkeyboard_translate_table,
-              doc: /* Translate table for keyboard input, or nil.
+  DEFVAR_KBOARD ("keyboard-translate-table", Vkeyboard_translate_table,
+                 doc: /* Translate table for local keyboard input, or nil.
 If non-nil, the value should be a char-table.  Each character read
 from the keyboard is looked up in this char-table.  If the value found
 there is non-nil, then it is used instead of the actual input character.
@@ -11599,8 +12097,10 @@ If it is a string or vector of length N, character codes N and up are left
 untranslated.  In a vector, an element which is nil means "no translation".
 
 This is applied to the characters supplied to input methods, not their
-output.  See also `translation-table-for-input'.  */);
-  Vkeyboard_translate_table = Qnil;
+output.  See also `translation-table-for-input'.
+
+This variable has a separate binding for each terminal.  See Info node
+`(elisp)Multiple displays'.  */);
 
   DEFVAR_BOOL ("cannot-suspend", &cannot_suspend,
               doc: /* Non-nil means to always spawn a subshell instead of suspending.
@@ -11685,7 +12185,11 @@ buffer's local map, and the minor mode keymaps and text property keymaps.
 It also replaces `overriding-local-map'.
 
 This variable is intended to let commands such as `universal-argument'
-set up a different keymap for reading the next command.  */);
+set up a different keymap for reading the next command.
+
+`overriding-terminal-local-map' has a separate binding for each
+terminal device.
+See Info node `(elisp)Multiple displays'.  */);
 
   DEFVAR_LISP ("overriding-local-map", &Voverriding_local_map,
               doc: /* Keymap that overrides all other local keymaps.
@@ -11710,7 +12214,73 @@ and the minor mode maps regardless of `overriding-local-map'.  */);
                 doc: /* Alist of system-specific X windows key symbols.
 Each element should have the form (N . SYMBOL) where N is the
 numeric keysym code (sans the \"system-specific\" bit 1<<28)
-and SYMBOL is its name.  */);
+and SYMBOL is its name.
+
+`system-key-alist' has a separate binding for each terminal device.
+See Info node `(elisp)Multiple displays'.  */);
+
+  DEFVAR_KBOARD ("local-function-key-map", Vlocal_function_key_map,
+                 doc: /* Keymap that translates key sequences to key sequences during input.
+This is used mainly for mapping key sequences into some preferred
+key events (symbols).
+
+The `read-key-sequence' function replaces any subsequence bound by
+`local-function-key-map' with its binding.  More precisely, when the
+active keymaps have no binding for the current key sequence but
+`local-function-key-map' binds a suffix of the sequence to a vector or
+string, `read-key-sequence' replaces the matching suffix with its
+binding, and continues with the new sequence.
+
+If the binding is a function, it is called with one argument (the prompt)
+and its return value (a key sequence) is used.
+
+The events that come from bindings in `local-function-key-map' are not
+themselves looked up in `local-function-key-map'.
+
+For example, suppose `local-function-key-map' binds `ESC O P' to [f1].
+Typing `ESC O P' to `read-key-sequence' would return [f1].  Typing
+`C-x ESC O P' would return [?\\C-x f1].  If [f1] were a prefix key,
+typing `ESC O P x' would return [f1 x].
+
+`local-function-key-map' has a separate binding for each terminal
+device.  See Info node `(elisp)Multiple displays'.  If you need to
+define a binding on all terminals, change `function-key-map'
+instead.  Initially, `local-function-key-map' is an empty keymap that
+has `function-key-map' as its parent on all terminal devices.  */);
+
+  DEFVAR_KBOARD ("input-decode-map", Vinput_decode_map,
+                doc: /* Keymap that decodes input escape sequences.
+This is used mainly for mapping ASCII function key sequences into
+real Emacs function key events (symbols).
+
+The `read-key-sequence' function replaces any subsequence bound by
+`local-function-key-map' with its binding.  Contrary to `function-key-map',
+this map applies its rebinding regardless of the presence of an ordinary
+binding.  So it is more like `key-translation-map' except that it applies
+before `function-key-map' rather than after.
+
+If the binding is a function, it is called with one argument (the prompt)
+and its return value (a key sequence) is used.
+
+The events that come from bindings in `input-decode-map' are not
+themselves looked up in `input-decode-map'.
+
+This variable is keyboard-local.  */);
+
+  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
+`local-function-key-map' binding and this variable, then the local
+definition will take precendence.  */);
+  Vfunction_key_map = Fmake_sparse_keymap (Qnil);
+                    
+  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,
               doc: /* List of deferred actions to be performed at a later time.
@@ -11879,6 +12449,7 @@ mark_kboards ()
       mark_object (kb->Voverriding_terminal_local_map);
       mark_object (kb->Vlast_command);
       mark_object (kb->Vreal_last_command);
+      mark_object (kb->Vkeyboard_translate_table);
       mark_object (kb->Vlast_repeatable_command);
       mark_object (kb->Vprefix_arg);
       mark_object (kb->Vlast_prefix_arg);
@@ -11887,6 +12458,8 @@ mark_kboards ()
       mark_object (kb->Vlast_kbd_macro);
       mark_object (kb->Vsystem_key_alist);
       mark_object (kb->system_key_syms);
+      mark_object (kb->Vinput_decode_map);
+      mark_object (kb->Vlocal_function_key_map);
       mark_object (kb->Vdefault_minibuffer_frame);
       mark_object (kb->echo_string);
     }
index ea147cad483077c139286435fe91405c2f0db91e..ae135b30b77b8a225963dba9f4202aceb362a6dd 100644 (file)
@@ -23,8 +23,9 @@ Boston, MA 02110-1301, USA.  */
 
 /* Length of echobuf field in each KBOARD.  */
 
-/* Each KBOARD represents one logical input stream from which Emacs gets input.
-   If we are using an ordinary terminal, it has one KBOARD object.
+/* Each KBOARD represents one logical input stream from which Emacs
+   gets input.  If we are using ordinary terminals, it has one KBOARD
+   object for each terminal device.
    Usually each X display screen has its own KBOARD,
    but when two of them are on the same X server,
    we assume they share a keyboard and give them one KBOARD in common.
@@ -83,6 +84,9 @@ struct kboard
        other commands.  */
     Lisp_Object Vreal_last_command;
 
+    /* User-supplied table to translate input characters through.  */
+    Lisp_Object Vkeyboard_translate_table;
+    
     /* Last command that may be repeated by `repeat'.  */
     Lisp_Object Vlast_repeatable_command;
 
@@ -126,6 +130,15 @@ struct kboard
     /* Cache for modify_event_symbol.  */
     Lisp_Object system_key_syms;
 
+    /* Keymap mapping keys to alternative preferred forms.
+       See the DEFVAR for more documentation.  */
+    Lisp_Object Vlocal_function_key_map;
+    
+    /* Keymap mapping ASCII function key sequences onto their preferred
+       forms.  Initialized by the terminal-specific lisp files.  See the
+       DEFVAR for more documentation.  */
+    Lisp_Object Vinput_decode_map;
+    
     /* Minibufferless frames on this display use this frame's minibuffer.  */
     Lisp_Object Vdefault_minibuffer_frame;
 
@@ -158,7 +171,7 @@ struct kboard
   };
 
 #ifdef MULTI_KBOARD
-/* Temporarily used before a frame has been opened, and for termcap frames */
+/* Temporarily used before a frame has been opened. */
 extern KBOARD *initial_kboard;
 
 /* In the single-kboard state, this is the kboard
@@ -193,10 +206,6 @@ extern EMACS_INT num_nonmacro_input_events;
 /* Nonzero means polling for input is temporarily suppressed.  */
 extern int poll_suppress_count;
 
-/* Keymap mapping ASCII function key sequences onto their preferred forms.
-   Initialized by the terminal-specific lisp files.  */
-extern Lisp_Object Vfunction_key_map;
-
 /* Vector holding the key sequence that invoked the current command.
    It is reused for each command, and it may be longer than the current
    sequence; this_command_key_count indicates how many elements
@@ -304,18 +313,24 @@ extern Lisp_Object parse_modifiers P_ ((Lisp_Object));
 extern Lisp_Object reorder_modifiers P_ ((Lisp_Object));
 extern Lisp_Object read_char P_ ((int, int, Lisp_Object *, Lisp_Object,
                                  int *, EMACS_TIME *));
-/* User-supplied string to translate input characters through.  */
-extern Lisp_Object Vkeyboard_translate_table;
+
+
+/* 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;
 
 extern int parse_menu_item P_ ((Lisp_Object, int, int));
 
 extern void echo_now P_ ((void));
 extern void init_kboard P_ ((KBOARD *));
 extern void delete_kboard P_ ((KBOARD *));
-extern void single_kboard_state P_ ((void));
 extern void not_single_kboard_state P_ ((KBOARD *));
+extern void push_kboard P_ ((struct kboard *));
 extern void push_frame_kboard P_ ((struct frame *));
-extern void pop_frame_kboard P_ ((void));
+extern void pop_kboard P_ ((void));
+extern void temporarily_switch_to_single_kboard P_ ((struct frame *));
 extern void record_asynch_buffer_change P_ ((void));
 extern SIGTYPE input_poll_signal P_ ((int));
 extern void start_polling P_ ((void));
@@ -349,5 +364,8 @@ extern Lisp_Object menu_item_eval_property P_ ((Lisp_Object));
 extern int  kbd_buffer_events_waiting P_ ((int));
 extern void add_user_signals P_ ((int, const char *));
 
+extern int tty_read_avail_input P_ ((struct terminal *, int,
+                                     struct input_event *));
+
 /* arch-tag: 769cbade-1ba9-4950-b886-db265b061aa3
    (do not change this comment) */
index e1e45b18d4e702b29d901f02c5520d5246009e52..be23c20a3aaddd2867ecb28700a6e734d57f9217 100644 (file)
@@ -31,6 +31,7 @@ Boston, MA 02110-1301, USA.  */
 #include "buffer.h"
 #include "charset.h"
 #include "keyboard.h"
+#include "frame.h"
 #include "termhooks.h"
 #include "blockinput.h"
 #include "puresize.h"
@@ -90,14 +91,6 @@ Lisp_Object Vminor_mode_overriding_map_alist;
 /* List of emulation mode keymap alists.  */
 Lisp_Object Vemulation_mode_map_alists;
 
-/* Keymap mapping ASCII function key sequences onto their preferred forms.
-   Initialized by the terminal-specific lisp files.  See DEFVAR for more
-   documentation.  */
-Lisp_Object Vfunction_key_map;
-
-/* Keymap mapping ASCII function key sequences onto their preferred forms.  */
-Lisp_Object Vkey_translation_map;
-
 /* 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
@@ -429,7 +422,7 @@ Return PARENT.  PARENT should be nil or another keymap.  */)
 
       if (CHAR_TABLE_P (XCAR (list)))
        {
-         Lisp_Object indices[3];
+         int indices[3];
 
          map_char_table (fix_submap_inheritance, Qnil,
                          XCAR (list), XCAR (list),
@@ -728,7 +721,7 @@ map_keymap (map, fun, args, data, autoload)
        }
       else if (CHAR_TABLE_P (binding))
        {
-         Lisp_Object indices[3];
+         int indices[3];
          map_char_table (map_keymap_char_table_item, Qnil, binding, binding,
                          Fcons (make_save_value (fun, 0),
                                 Fcons (make_save_value (data, 0),
@@ -1079,7 +1072,7 @@ is not copied.  */)
       Lisp_Object elt = XCAR (keymap);
       if (CHAR_TABLE_P (elt))
        {
-         Lisp_Object indices[3];
+         int indices[3];
          elt = Fcopy_sequence (elt);
          map_char_table (copy_keymap_1, Qnil, elt, elt, elt, 0, indices);
        }
@@ -1156,7 +1149,8 @@ binding KEY to DEF is added at the front of KEYMAP.  */)
   if (SYMBOLP (def) && !EQ (Vdefine_key_rebound_commands, Qt))
     Vdefine_key_rebound_commands = Fcons (def, Vdefine_key_rebound_commands);
 
-  meta_bit = VECTORP (key) ? meta_modifier : 0x80;
+  meta_bit = (VECTORP (key) || (STRINGP (key) && STRING_MULTIBYTE (key))
+             ? meta_modifier : 0x80);
 
   if (VECTORP (def) && ASIZE (def) > 0 && CONSP (AREF (def, 0)))
     { /* DEF is apparently an XEmacs-style keyboard macro.  */
@@ -1312,7 +1306,7 @@ recognize the default bindings, just as `read-key-sequence' does.  */)
        c = Fevent_convert_list (c);
 
       /* Turn the 8th bit of string chars into a meta modifier.  */
-      if (INTEGERP (c) && XINT (c) & 0x80 && STRINGP (key))
+      if (STRINGP (key) && XINT (c) & 0x80 && !STRING_MULTIBYTE (key))
        XSETINT (c, (XINT (c) | meta_modifier) & ~0x80);
 
       /* Allow string since binding for `menu-bar-select-buffer'
@@ -1540,14 +1534,47 @@ current_minor_maps (modeptr, mapptr)
 }
 
 DEFUN ("current-active-maps", Fcurrent_active_maps, Scurrent_active_maps,
-       0, 1, 0,
+       0, 2, 0,
        doc: /* Return a list of the currently active keymaps.
 OLP if non-nil indicates that we should obey `overriding-local-map' and
-`overriding-terminal-local-map'.  */)
-     (olp)
-     Lisp_Object olp;
+`overriding-terminal-local-map'.  POSITION can specify a click position
+like in the respective argument of `key-binding'. */)
+    (olp, position)
+    Lisp_Object olp, position;
 {
-  Lisp_Object keymaps = Fcons (current_global_map, Qnil);
+  int count = SPECPDL_INDEX ();
+
+  Lisp_Object keymaps;
+
+  /* If a mouse click position is given, our variables are based on
+     the buffer clicked on, not the current buffer.  So we may have to
+     switch the buffer here. */
+  
+  if (CONSP (position))
+    {
+      Lisp_Object window;
+      
+      window = POSN_WINDOW (position);
+         
+      if (WINDOWP (window)
+         && BUFFERP (XWINDOW (window)->buffer)
+         && XBUFFER (XWINDOW (window)->buffer) != current_buffer)
+       {
+         /* Arrange to go back to the original buffer once we're done
+            processing the key sequence.  We don't use
+            save_excursion_{save,restore} here, in analogy to
+            `read-key-sequence' to avoid saving point.  Maybe this
+            would not be a problem here, but it is easier to keep
+            things the same.
+         */
+             
+         record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
+         
+         set_buffer_internal (XBUFFER (XWINDOW (window)->buffer));
+       }
+    }
+
+  keymaps = Fcons (current_global_map, Qnil);  
 
   if (!NILP (olp))
     {
@@ -1561,15 +1588,76 @@ OLP if non-nil indicates that we should obey `overriding-local-map' and
     }
   if (NILP (XCDR (keymaps)))
     {
-      Lisp_Object local;
       Lisp_Object *maps;
       int nmaps, i;
 
-      /* This usually returns the buffer's local map,
-        but that can be overridden by a `local-map' property.  */
-      local = get_local_map (PT, current_buffer, Qlocal_map);
-      if (!NILP (local))
-       keymaps = Fcons (local, keymaps);
+      Lisp_Object keymap, local_map;
+      EMACS_INT pt;
+
+      pt = INTEGERP (position) ? XINT (position)
+       : MARKERP (position) ? marker_position (position)
+       : PT;
+
+      /* Get the buffer local maps, possibly overriden by text or
+        overlay properties */
+
+      local_map = get_local_map (pt, current_buffer, Qlocal_map); 
+      keymap = get_local_map (pt, current_buffer, Qkeymap); 
+
+      if (CONSP (position))
+       {
+         Lisp_Object string;
+
+         /* For a mouse click, get the local text-property keymap
+            of the place clicked on, rather than point.  */
+         
+         if (POSN_INBUFFER_P (position))
+           {
+             Lisp_Object pos;
+
+             pos = POSN_BUFFER_POSN (position);
+             if (INTEGERP (pos)
+                 && XINT (pos) >= BEG && XINT (pos) <= Z)
+               {
+                 local_map = get_local_map (XINT (pos),
+                                            current_buffer, Qlocal_map);
+                 
+                 keymap = get_local_map (XINT (pos),
+                                         current_buffer, Qkeymap);
+               }
+           }
+
+         /* If on a mode line string with a local keymap,
+            or for a click on a string, i.e. overlay string or a
+            string displayed via the `display' property,
+            consider `local-map' and `keymap' properties of
+            that string.  */
+         
+         if (string = POSN_STRING (position),
+             (CONSP (string) && STRINGP (XCAR (string))))
+           {
+             Lisp_Object pos, map;
+             
+             pos = XCDR (string);
+             string = XCAR (string);
+             if (INTEGERP (pos)
+                 && XINT (pos) >= 0
+                 && XINT (pos) < SCHARS (string))
+               {
+                 map = Fget_text_property (pos, Qlocal_map, string);
+                 if (!NILP (map))
+                   local_map = map;
+
+                 map = Fget_text_property (pos, Qkeymap, string);
+                 if (!NILP (map))
+                   keymap = map;
+               }
+           }
+         
+       }
+
+      if (!NILP (local_map))
+       keymaps = Fcons (local_map, keymaps);
 
       /* Now put all the minor mode keymaps on the list.  */
       nmaps = current_minor_maps (0, &maps);
@@ -1578,12 +1666,12 @@ OLP if non-nil indicates that we should obey `overriding-local-map' and
        if (!NILP (maps[i]))
          keymaps = Fcons (maps[i], keymaps);
 
-      /* This returns nil unless there is a `keymap' property.  */
-      local = get_local_map (PT, current_buffer, Qkeymap);
-      if (!NILP (local))
-       keymaps = Fcons (local, keymaps);
+      if (!NILP (keymap))
+       keymaps = Fcons (keymap, keymaps);
     }
 
+  unbind_to (count, Qnil);
+
   return keymaps;
 }
 
@@ -1951,12 +2039,23 @@ DEFUN ("current-minor-mode-maps", Fcurrent_minor_mode_maps, Scurrent_minor_mode_
 \f
 /* Help functions for describing and documenting keymaps.              */
 
+struct accessible_keymaps_data {
+  Lisp_Object maps, tail, thisseq;
+  /* Does the current sequence end in the meta-prefix-char?  */
+  int is_metized;
+};
 
 static void
-accessible_keymaps_1 (key, cmd, maps, tail, thisseq, is_metized)
-     Lisp_Object maps, tail, thisseq, key, cmd;
-     int is_metized;           /* If 1, `key' is assumed to be INTEGERP.  */
+accessible_keymaps_1 (key, cmd, args, data)
+     Lisp_Object key, cmd, args;
+     /* Use void* to be compatible with map_keymap_function_t.  */
+     void *data;
 {
+  struct accessible_keymaps_data *d = data; /* Cast! */
+  Lisp_Object maps = d->maps;
+  Lisp_Object tail = d->tail;
+  Lisp_Object thisseq = d->thisseq;
+  int is_metized = d->is_metized && INTEGERP (key);
   Lisp_Object tem;
 
   cmd = get_keymap (get_keyelt (cmd, 0), 0, 0);
@@ -2010,17 +2109,6 @@ accessible_keymaps_1 (key, cmd, maps, tail, thisseq, is_metized)
     }
 }
 
-static void
-accessible_keymaps_char_table (args, index, cmd)
-     Lisp_Object args, index, cmd;
-{
-  accessible_keymaps_1 (index, cmd,
-                       XCAR (XCAR (args)),
-                       XCAR (XCDR (args)),
-                       XCDR (XCDR (args)),
-                       XINT (XCDR (XCAR (args))));
-}
-
 /* This function cannot GC.  */
 
 DEFUN ("accessible-keymaps", Faccessible_keymaps, Saccessible_keymaps,
@@ -2035,13 +2123,10 @@ then the value includes only maps for prefixes that start with PREFIX.  */)
      Lisp_Object keymap, prefix;
 {
   Lisp_Object maps, tail;
-  int prefixlen = 0;
+  int prefixlen = XINT (Flength (prefix));
 
   /* no need for gcpro because we don't autoload any keymaps.  */
 
-  if (!NILP (prefix))
-    prefixlen = XINT (Flength (prefix));
-
   if (!NILP (prefix))
     {
       /* If a prefix was specified, start with the keymap (if any) for
@@ -2052,7 +2137,9 @@ then the value includes only maps for prefixes that start with PREFIX.  */)
         if the prefix is not defined in this particular map.
         It might even give us a list that isn't a keymap.  */
       tem = get_keymap (tem, 0, 0);
-      if (CONSP (tem))
+      /* If the keymap is autoloaded `tem' is not a cons-cell, but we still
+        want to return it.  */
+      if (!NILP (tem))
        {
          /* Convert PREFIX to a vector now, so that later on
             we don't have to deal with the possibility of a string.  */
@@ -2092,57 +2179,26 @@ then the value includes only maps for prefixes that start with PREFIX.  */)
 
   for (tail = maps; CONSP (tail); tail = XCDR (tail))
     {
-      register Lisp_Object thisseq, thismap;
+      struct accessible_keymaps_data data;
+      register Lisp_Object thismap = Fcdr (XCAR (tail));
       Lisp_Object last;
-      /* Does the current sequence end in the meta-prefix-char?  */
-      int is_metized;
 
-      thisseq = Fcar (Fcar (tail));
-      thismap = Fcdr (Fcar (tail));
-      last = make_number (XINT (Flength (thisseq)) - 1);
-      is_metized = (XINT (last) >= 0
+      data.thisseq = Fcar (XCAR (tail));
+      data.maps = maps;
+      data.tail = tail;
+      last = make_number (XINT (Flength (data.thisseq)) - 1);
+      /* Does the current sequence end in the meta-prefix-char?  */
+      data.is_metized = (XINT (last) >= 0
                    /* Don't metize the last char of PREFIX.  */
                    && XINT (last) >= prefixlen
-                   && EQ (Faref (thisseq, last), meta_prefix_char));
-
-      for (; CONSP (thismap); thismap = XCDR (thismap))
-       {
-         Lisp_Object elt;
-
-         elt = XCAR (thismap);
-
-         QUIT;
-
-         if (CHAR_TABLE_P (elt))
-           {
-             Lisp_Object indices[3];
-
-             map_char_table (accessible_keymaps_char_table, Qnil, elt,
-                             elt, Fcons (Fcons (maps, make_number (is_metized)),
-                                         Fcons (tail, thisseq)),
-                             0, indices);
-           }
-         else if (VECTORP (elt))
-           {
-             register int i;
-
-             /* Vector keymap.  Scan all the elements.  */
-             for (i = 0; i < ASIZE (elt); i++)
-               accessible_keymaps_1 (make_number (i), AREF (elt, i),
-                                     maps, tail, thisseq, is_metized);
+                   && EQ (Faref (data.thisseq, last), meta_prefix_char));
 
-           }
-         else if (CONSP (elt))
-           accessible_keymaps_1 (XCAR (elt), XCDR (elt),
-                                 maps, tail, thisseq,
-                                 is_metized && INTEGERP (XCAR (elt)));
-
-       }
+      /* Since we can't run lisp code, we can't scan autoloaded maps.  */
+      if (CONSP (thismap))
+       map_keymap (thismap, accessible_keymaps_1, Qnil, &data, 0);
     }
-
   return maps;
 }
-\f
 Lisp_Object Qsingle_key_description, Qkey_description;
 
 /* This function cannot GC.  */
@@ -2187,7 +2243,7 @@ spaces are put between sequence elements, etc.  */)
          len += 2;
        }
       else if (len == 0)
-       return empty_string;
+       return empty_unibyte_string;
       return Fconcat (len - 1, args);
     }
 
@@ -2413,7 +2469,7 @@ around function keys and event symbols.  */)
        {
          char buf[256];
 
-         sprintf (buf, "Invalid char code %d", XINT (key));
+         sprintf (buf, "Invalid char code %ld", XINT (key));
          return build_string (buf);
        }
       else if (charset
@@ -2556,8 +2612,8 @@ ascii_sequence_p (seq)
 /* where-is - finding a command in a set of keymaps.                   */
 
 static Lisp_Object where_is_internal ();
-static Lisp_Object where_is_internal_1 ();
-static void where_is_internal_2 ();
+static void where_is_internal_1 P_ ((Lisp_Object key, Lisp_Object binding,
+                                    Lisp_Object args, void *data));
 
 /* Like Flookup_key, but uses a list of keymaps SHADOW instead of a single map.
    Returns the first non-nil binding found in any of those maps.  */
@@ -2586,6 +2642,12 @@ shadow_lookup (shadow, key, flag)
 
 static Lisp_Object Vmouse_events;
 
+struct where_is_internal_data {
+  Lisp_Object definition, noindirect, this, last;
+  int last_is_meta;
+  Lisp_Object sequences;
+};
+
 /* This function can GC if Flookup_key autoloads any keymaps.  */
 
 static Lisp_Object
@@ -2623,6 +2685,7 @@ where_is_internal (definition, keymaps, firstonly, noindirect, no_remap)
     {
       /* Key sequence to reach map, and the map that it reaches */
       register Lisp_Object this, map, tem;
+      struct where_is_internal_data data;
 
       /* In order to fold [META-PREFIX-CHAR CHAR] sequences into
         [M-CHAR] sequences, check if last character of the sequence
@@ -2647,148 +2710,94 @@ where_is_internal (definition, keymaps, firstonly, noindirect, no_remap)
 
       QUIT;
 
-      while (CONSP (map))
-       {
-         /* Because the code we want to run on each binding is rather
-            large, we don't want to have two separate loop bodies for
-            sparse keymap bindings and tables; we want to iterate one
-            loop body over both keymap and vector bindings.
+      data.definition = definition;
+      data.noindirect = noindirect;
+      data.this = this;
+      data.last = last;
+      data.last_is_meta = last_is_meta;
+      data.sequences = Qnil;
 
-            For this reason, if Fcar (map) is a vector, we don't
-            advance map to the next element until i indicates that we
-            have finished off the vector.  */
-         Lisp_Object elt, key, binding;
-         elt = XCAR (map);
-         map = XCDR (map);
+      if (CONSP (map))
+       map_keymap (map, where_is_internal_1, Qnil, &data, 0);
 
-         sequences = Qnil;
+      sequences = data.sequences;
 
-         QUIT;
-
-         /* Set key and binding to the current key and binding, and
-            advance map and i to the next binding.  */
-         if (VECTORP (elt))
+      while (CONSP (sequences))
+       {
+         Lisp_Object sequence, remapped, function;
+         
+         sequence = XCAR (sequences);
+         sequences = XCDR (sequences);
+
+         /* If the current sequence is a command remapping with
+            format [remap COMMAND], find the key sequences
+            which run COMMAND, and use those sequences instead.  */
+         remapped = Qnil;
+         if (NILP (no_remap)
+             && VECTORP (sequence) && XVECTOR (sequence)->size == 2
+             && EQ (AREF (sequence, 0), Qremap)
+             && (function = AREF (sequence, 1), SYMBOLP (function)))
            {
-             Lisp_Object sequence;
-             int i;
-             /* In a vector, look at each element.  */
-             for (i = 0; i < XVECTOR (elt)->size; i++)
+             Lisp_Object remapped1;
+             
+             remapped1 = where_is_internal (function, keymaps, firstonly, noindirect, Qt);
+             if (CONSP (remapped1))
                {
-                 binding = AREF (elt, i);
-                 XSETFASTINT (key, i);
-                 sequence = where_is_internal_1 (binding, key, definition,
-                                                 noindirect, this,
-                                                 last, nomenus, last_is_meta);
-                 if (!NILP (sequence))
-                   sequences = Fcons (sequence, sequences);
+                 /* Verify that this key binding actually maps to the
+                    remapped command (see below).  */
+                 if (!EQ (shadow_lookup (keymaps, XCAR (remapped1), Qnil), function))
+                   continue;
+                 sequence = XCAR (remapped1);
+                 remapped = XCDR (remapped1);
+                 goto record_sequence;
                }
            }
-         else if (CHAR_TABLE_P (elt))
-           {
-             Lisp_Object indices[3];
-             Lisp_Object args;
-
-             args = Fcons (Fcons (Fcons (definition, noindirect),
-                                  Qnil), /* Result accumulator.  */
-                           Fcons (Fcons (this, last),
-                                  Fcons (make_number (nomenus),
-                                         make_number (last_is_meta))));
-             map_char_table (where_is_internal_2, Qnil, elt, elt, args,
-                             0, indices);
-             sequences = XCDR (XCAR (args));
-           }
-         else if (CONSP (elt))
-           {
-             Lisp_Object sequence;
 
-             key = XCAR (elt);
-             binding = XCDR (elt);
+         /* Verify that this key binding is not shadowed by another
+            binding for the same key, before we say it exists.
 
-             sequence = where_is_internal_1 (binding, key, definition,
-                                             noindirect, this,
-                                             last, nomenus, last_is_meta);
-             if (!NILP (sequence))
-               sequences = Fcons (sequence, sequences);
-           }
+            Mechanism: look for local definition of this key and if
+            it is defined and does not match what we found then
+            ignore this key.
 
+            Either nil or number as value from Flookup_key
+            means undefined.  */
+         if (!EQ (shadow_lookup (keymaps, sequence, Qnil), definition))
+           continue;
 
-         while (!NILP (sequences))
+       record_sequence:
+         /* Don't annoy user with strings from a menu such as
+            Select Paste.  Change them all to "(any string)",
+            so that there seems to be only one menu item
+            to report. */
+         if (! NILP (sequence))
            {
-             Lisp_Object sequence, remapped, function;
-
-             sequence = XCAR (sequences);
-             sequences = XCDR (sequences);
-
-             /* If the current sequence is a command remapping with
-                format [remap COMMAND], find the key sequences
-                which run COMMAND, and use those sequences instead.  */
-             remapped = Qnil;
-             if (NILP (no_remap)
-                 && VECTORP (sequence) && XVECTOR (sequence)->size == 2
-                 && EQ (AREF (sequence, 0), Qremap)
-                 && (function = AREF (sequence, 1), SYMBOLP (function)))
-               {
-                 Lisp_Object remapped1;
-
-                 remapped1 = where_is_internal (function, keymaps, firstonly, noindirect, Qt);
-                 if (CONSP (remapped1))
-                   {
-                     /* Verify that this key binding actually maps to the
-                        remapped command (see below).  */
-                     if (!EQ (shadow_lookup (keymaps, XCAR (remapped1), Qnil), function))
-                       continue;
-                     sequence = XCAR (remapped1);
-                     remapped = XCDR (remapped1);
-                     goto record_sequence;
-                   }
-               }
-
-             /* Verify that this key binding is not shadowed by another
-                binding for the same key, before we say it exists.
-
-                Mechanism: look for local definition of this key and if
-                it is defined and does not match what we found then
-                ignore this key.
-
-                Either nil or number as value from Flookup_key
-                means undefined.  */
-             if (!EQ (shadow_lookup (keymaps, sequence, Qnil), definition))
-               continue;
-
-           record_sequence:
-             /* Don't annoy user with strings from a menu such as
-                Select Paste.  Change them all to "(any string)",
-                so that there seems to be only one menu item
-                to report. */
-             if (! NILP (sequence))
-               {
-                 Lisp_Object tem;
-                 tem = Faref (sequence, make_number (XVECTOR (sequence)->size - 1));
-                 if (STRINGP (tem))
-                   Faset (sequence, make_number (XVECTOR (sequence)->size - 1),
-                          build_string ("(any string)"));
-               }
+             Lisp_Object tem;
+             tem = Faref (sequence, make_number (XVECTOR (sequence)->size - 1));
+             if (STRINGP (tem))
+               Faset (sequence, make_number (XVECTOR (sequence)->size - 1),
+                      build_string ("(any string)"));
+           }
 
-             /* It is a true unshadowed match.  Record it, unless it's already
-                been seen (as could happen when inheriting keymaps).  */
-             if (NILP (Fmember (sequence, found)))
-               found = Fcons (sequence, found);
-
-             /* If firstonly is Qnon_ascii, then we can return the first
-                binding we find.  If firstonly is not Qnon_ascii but not
-                nil, then we should return the first ascii-only binding
-                we find.  */
-             if (EQ (firstonly, Qnon_ascii))
-               RETURN_UNGCPRO (sequence);
-             else if (!NILP (firstonly) && ascii_sequence_p (sequence))
-               RETURN_UNGCPRO (sequence);
-
-             if (CONSP (remapped))
-               {
-                 sequence = XCAR (remapped);
-                 remapped = XCDR (remapped);
-                 goto record_sequence;
-               }
+         /* It is a true unshadowed match.  Record it, unless it's already
+            been seen (as could happen when inheriting keymaps).  */
+         if (NILP (Fmember (sequence, found)))
+           found = Fcons (sequence, found);
+
+         /* If firstonly is Qnon_ascii, then we can return the first
+            binding we find.  If firstonly is not Qnon_ascii but not
+            nil, then we should return the first ascii-only binding
+            we find.  */
+         if (EQ (firstonly, Qnon_ascii))
+           RETURN_UNGCPRO (sequence);
+         else if (!NILP (firstonly) && ascii_sequence_p (sequence))
+           RETURN_UNGCPRO (sequence);
+
+         if (CONSP (remapped))
+           {
+             sequence = XCAR (remapped);
+             remapped = XCDR (remapped);
+             goto record_sequence;
            }
        }
     }
@@ -2841,7 +2850,7 @@ remapped command in the returned list.  */)
   else if (!NILP (keymap))
     keymaps = Fcons (keymap, Fcons (current_global_map, Qnil));
   else
-    keymaps = Fcurrent_active_maps (Qnil);
+    keymaps = Fcurrent_active_maps (Qnil, Qnil);
 
   /* Only use caching for the menubar (i.e. called with (def nil t nil).
      We don't really need to check `keymap'.  */
@@ -2907,53 +2916,19 @@ remapped command in the returned list.  */)
   return result;
 }
 
-/* This is the function that Fwhere_is_internal calls using map_char_table.
-   ARGS has the form
-   (((DEFINITION . NOINDIRECT) . (KEYMAP . RESULT))
-    .
-    ((THIS . LAST) . (NOMENUS . LAST_IS_META)))
-   Since map_char_table doesn't really use the return value from this function,
-   we the result append to RESULT, the slot in ARGS.
-
-   This function can GC because it calls where_is_internal_1 which can
-   GC.  */
-
-static void
-where_is_internal_2 (args, key, binding)
-     Lisp_Object args, key, binding;
-{
-  Lisp_Object definition, noindirect, this, last;
-  Lisp_Object result, sequence;
-  int nomenus, last_is_meta;
-  struct gcpro gcpro1, gcpro2, gcpro3;
-
-  GCPRO3 (args, key, binding);
-  result = XCDR (XCAR (args));
-  definition = XCAR (XCAR (XCAR (args)));
-  noindirect = XCDR (XCAR (XCAR (args)));
-  this = XCAR (XCAR (XCDR (args)));
-  last = XCDR (XCAR (XCDR (args)));
-  nomenus = XFASTINT (XCAR (XCDR (XCDR (args))));
-  last_is_meta = XFASTINT (XCDR (XCDR (XCDR (args))));
-
-  sequence = where_is_internal_1 (binding, key, definition, noindirect,
-                                 this, last, nomenus, last_is_meta);
-
-  if (!NILP (sequence))
-    XSETCDR (XCAR (args), Fcons (sequence, result));
-
-  UNGCPRO;
-}
-
-
 /* This function can GC because get_keyelt can.  */
 
-static Lisp_Object
-where_is_internal_1 (binding, key, definition, noindirect, this, last,
-                    nomenus, last_is_meta)
-     Lisp_Object binding, key, definition, noindirect, this, last;
-     int nomenus, last_is_meta;
+static void
+where_is_internal_1 (key, binding, args, data)
+     Lisp_Object key, binding, args;
+     void *data;
 {
+  struct where_is_internal_data *d = data; /* Cast! */
+  Lisp_Object definition = d->definition;
+  Lisp_Object noindirect = d->noindirect;
+  Lisp_Object this = d->this;
+  Lisp_Object last = d->last;
+  int last_is_meta = d->last_is_meta;
   Lisp_Object sequence;
 
   /* Search through indirections unless that's not wanted.  */
@@ -2967,7 +2942,7 @@ where_is_internal_1 (binding, key, definition, noindirect, this, last,
        || EQ (binding, definition)
        || (CONSP (definition) && !NILP (Fequal (binding, definition)))))
     /* Doesn't match.  */
-    return Qnil;
+    return;
 
   /* We have found a match.  Construct the key sequence where we found it.  */
   if (INTEGERP (key) && last_is_meta)
@@ -2982,10 +2957,9 @@ where_is_internal_1 (binding, key, definition, noindirect, this, last,
     {
       Lisp_Object sequences = Fgethash (binding, where_is_cache, Qnil);
       Fputhash (binding, Fcons (sequence, sequences), where_is_cache);
-      return Qnil;
     }
   else
-    return sequence;
+    d->sequences = Fcons (sequence, d->sequences);
 }
 \f
 /* describe-bindings - summarizing all the bindings in a set of keymaps.  */
@@ -3020,11 +2994,11 @@ You type        Translation\n\
   outbuf = Fcurrent_buffer ();
 
   /* Report on alternates for keys.  */
-  if (STRINGP (Vkeyboard_translate_table) && !NILP (prefix))
+  if (STRINGP (current_kboard->Vkeyboard_translate_table) && !NILP (prefix))
     {
       int c;
-      const unsigned char *translate = SDATA (Vkeyboard_translate_table);
-      int translate_len = SCHARS (Vkeyboard_translate_table);
+      const unsigned char *translate = SDATA (current_kboard->Vkeyboard_translate_table);
+      int translate_len = SCHARS (current_kboard->Vkeyboard_translate_table);
 
       for (c = 0; c < translate_len; c++)
        if (translate[c] != c)
@@ -3047,7 +3021,7 @@ You type        Translation\n\
            insert ("\n", 1);
 
            /* Insert calls signal_after_change which may GC. */
-           translate = SDATA (Vkeyboard_translate_table);
+           translate = SDATA (current_kboard->Vkeyboard_translate_table);
          }
 
       insert ("\n", 1);
@@ -3143,10 +3117,15 @@ You type        Translation\n\
                     "\f\nGlobal Bindings", nomenu, 0, 1, 0);
 
   /* Print the function-key-map translations under this prefix.  */
-  if (!NILP (Vfunction_key_map))
-    describe_map_tree (Vfunction_key_map, 0, Qnil, prefix,
+  if (!NILP (current_kboard->Vlocal_function_key_map))
+    describe_map_tree (current_kboard->Vlocal_function_key_map, 0, Qnil, prefix,
                       "\f\nFunction key map translations", nomenu, 1, 0, 0);
 
+  /* Print the input-decode-map translations under this prefix.  */
+  if (!NILP (current_kboard->Vinput_decode_map))
+    describe_map_tree (current_kboard->Vinput_decode_map, 0, Qnil, prefix,
+                      "\f\nInput decoding map translations", nomenu, 1, 0, 0);
+
   UNGCPRO;
   return Qnil;
 }
@@ -4114,37 +4093,6 @@ 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 ("function-key-map", &Vfunction_key_map,
-              doc: /* Keymap that translates key sequences to key sequences during input.
-This is used mainly for mapping ASCII function key sequences into
-real Emacs function key events (symbols).
-
-The `read-key-sequence' function replaces any subsequence bound by
-`function-key-map' with its binding.  More precisely, when the active
-keymaps have no binding for the current key sequence but
-`function-key-map' binds a suffix of the sequence to a vector or string,
-`read-key-sequence' replaces the matching suffix with its binding, and
-continues with the new sequence.
-
-If the binding is a function, it is called with one argument (the prompt)
-and its return value (a key sequence) is used.
-
-The events that come from bindings in `function-key-map' are not
-themselves looked up in `function-key-map'.
-
-For example, suppose `function-key-map' binds `ESC O P' to [f1].
-Typing `ESC O P' to `read-key-sequence' would return [f1].  Typing
-`C-x ESC O P' would return [?\\C-x f1].  If [f1] were a prefix
-key, typing `ESC O P x' would return [f1 x].  */);
-  Vfunction_key_map = Fmake_sparse_keymap (Qnil);
-
-  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.  */);
-  Vkey_translation_map = Qnil;
-
   staticpro (&Vmouse_events);
   Vmouse_events = Fcons (intern ("menu-bar"),
                  Fcons (intern ("tool-bar"),
index 8b92185076582c426ec18445cb4263a1c70be6f8..3268967089aeeadfa0e310934e6dbad169d0feaa 100644 (file)
@@ -34,10 +34,11 @@ EXFUN (Fkey_binding, 4);
 EXFUN (Fkey_description, 2);
 EXFUN (Fsingle_key_description, 2);
 EXFUN (Fwhere_is_internal, 5);
-EXFUN (Fcurrent_active_maps, 1);
+EXFUN (Fcurrent_active_maps, 2);
 extern Lisp_Object access_keymap P_ ((Lisp_Object, Lisp_Object, int, int, int));
 extern Lisp_Object get_keyelt P_ ((Lisp_Object, int));
 extern Lisp_Object get_keymap P_ ((Lisp_Object, int, int));
+EXFUN (Fset_keymap_parent, 2);
 extern void describe_map_tree P_ ((Lisp_Object, int, Lisp_Object, Lisp_Object,
                                   char *, int, int, int, int));
 extern int current_minor_maps P_ ((Lisp_Object **, Lisp_Object **));
@@ -47,7 +48,7 @@ extern void syms_of_keymap P_ ((void));
 extern void keys_of_keymap P_ ((void));
 
 typedef void (*map_keymap_function_t)
-     P_ ((Lisp_Object, Lisp_Object, Lisp_Object, void*));
+     P_ ((Lisp_Object key, Lisp_Object val, Lisp_Object args, void* data));
 extern void map_keymap P_ ((Lisp_Object map, map_keymap_function_t fun, Lisp_Object largs, void* cargs, int autoload));
 
 #endif
index f65f46bab6dd70b9e2f706ff3d54a595f1b30a1f..70329a077645aa2ae35534ef867f254273705b2d 100644 (file)
@@ -56,7 +56,7 @@ Boston, MA 02110-1301, USA.  */
 #ifdef GC_CHECK_CONS_LIST
 #define CHECK_CONS_LIST() check_cons_list()
 #else
-#define CHECK_CONS_LIST() 0
+#define CHECK_CONS_LIST() ((void)0)
 #endif
 
 /* These are default choices for the types to use.  */
@@ -113,6 +113,57 @@ extern void die P_((const char *, const char *, int)) NO_RETURN;
 #define eassert(cond) CHECK(cond,"assertion failed")
 #endif
 #endif /* ENABLE_CHECKING */
+\f
+/***** Select the tagging scheme.  *****/
+/* There are basically two options that control the tagging scheme:
+   - NO_UNION_TYPE says that Lisp_Object should be an integer instead
+     of a union.
+   - USE_LSB_TAG means that we can assume the least 3 bits of pointers are
+     always 0, and we can thus use them to hold tag bits, without
+     restricting our addressing space.
+
+   If USE_LSB_TAG is not set, then we use the top 3 bits for tagging, thus
+   restricting our possible address range.  Currently USE_LSB_TAG is not
+   allowed together with a union.  This is not due to any fundamental
+   technical (or political ;-) problem: nobody wrote the code to do it yet.
+
+   USE_LSB_TAG not only requires the least 3 bits of pointers returned by
+   malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
+   on the few static Lisp_Objects used: all the defsubr as well
+   as the two special buffers buffer_defaults and buffer_local_symbols.  */
+
+/* First, try and define DECL_ALIGN(type,var) which declares a static
+   variable VAR of type TYPE with the added requirement that it be
+   TYPEBITS-aligned. */
+#ifndef NO_DECL_ALIGN
+# ifndef DECL_ALIGN
+/* What compiler directive should we use for non-gcc compilers?  -stef  */
+#  if defined (__GNUC__)
+#   define DECL_ALIGN(type, var) \
+     type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
+#  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 MAC_OSX
+/* We also need to be able to specify mult-of-8 alignment on static vars.  */
+# if defined DECL_ALIGN
+/* We currently do not support USE_LSB_TAG with a union Lisp_Object.  */
+#  if defined NO_UNION_TYPE
+#   define USE_LSB_TAG
+#  endif
+# endif
+#endif
+
+/* If we cannot use 8-byte alignment, make DECL_ALIGN a no-op.  */
+#ifndef DECL_ALIGN
+# ifdef USE_LSB_TAG
+#  error "USE_LSB_TAG used without defining DECL_ALIGN"
+# endif
+# define DECL_ALIGN(type, var) type var
+#endif
+
 
 /* Define the fundamental Lisp data structures.  */
 
@@ -194,7 +245,7 @@ union Lisp_Object
   {
     /* Used for comparing two Lisp_Objects;
        also, positive integers can be accessed fast this way.  */
-    EMACS_INT i;
+    EMACS_UINT i;
 
     struct
       {
@@ -216,7 +267,7 @@ union Lisp_Object
   {
     /* Used for comparing two Lisp_Objects;
        also, positive integers can be accessed fast this way.  */
-    EMACS_INT i;
+    EMACS_UINT i;
 
     struct
       {
@@ -247,34 +298,29 @@ LISP_MAKE_RVALUE (Lisp_Object o)
 #define LISP_MAKE_RVALUE(o) (o)
 #endif
 
-#endif /* NO_UNION_TYPE */
-
+#else /* NO_UNION_TYPE */
 
 /* If union type is not wanted, define Lisp_Object as just a number.  */
 
-#ifdef NO_UNION_TYPE
 typedef EMACS_INT Lisp_Object;
 #define LISP_MAKE_RVALUE(o) (0+(o))
 #endif /* NO_UNION_TYPE */
 
-/* Two flags that are set during GC.  On some machines, these flags
-   are defined differently by the m- file.  */
-
 /* In the size word of a vector, this bit means the vector has been marked.  */
 
-#ifndef ARRAY_MARK_FLAG
-#define ARRAY_MARK_FLAG ((EMACS_INT) ((EMACS_UINT) 1 << (VALBITS + GCTYPEBITS - 1)))
-#endif /* no ARRAY_MARK_FLAG */
+#define ARRAY_MARK_FLAG ((EMACS_UINT) 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.  */
-#ifndef PSEUDOVECTOR_FLAG
-#define PSEUDOVECTOR_FLAG ((ARRAY_MARK_FLAG >> 1) & ~ARRAY_MARK_FLAG)
-#endif
+#define PSEUDOVECTOR_FLAG ((ARRAY_MARK_FLAG >> 1))
 
 /* In a pseudovector, the size field actually contains a word with one
    PSEUDOVECTOR_FLAG bit set, and exactly one of the following bits to
-   indicate the actual type.  */
+   indicate the actual type.
+   We use a bitset, even tho only one of the bits can be set at any
+   particular time just so as to be able to use micro-optimizations such as
+   testing membership of a particular subset of pseudovectors in Fequal.
+   It is not crucial, but there are plenty of bits here, so why not do it?  */
 enum pvec_type
 {
   PVEC_NORMAL_VECTOR = 0,
@@ -288,7 +334,8 @@ enum pvec_type
   PVEC_BOOL_VECTOR = 0x10000,
   PVEC_BUFFER = 0x20000,
   PVEC_HASH_TABLE = 0x40000,
-  PVEC_TYPE_MASK = 0x7fe00
+  PVEC_TERMINAL = 0x80000,
+  PVEC_TYPE_MASK = 0xffe00
 
 #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to
         GDB.  It doesn't work on OS Alpha.  Moved to a variable in
@@ -307,57 +354,6 @@ enum pvec_type
 /* Number of bits to put in each character in the internal representation
    of bool vectors.  This should not vary across implementations.  */
 #define BOOL_VECTOR_BITS_PER_CHAR 8
-\f
-/***** Select the tagging scheme.  *****/
-/* There are basically two options that control the tagging scheme:
-   - NO_UNION_TYPE says that Lisp_Object should be an integer instead
-     of a union.
-   - USE_LSB_TAG means that we can assume the least 3 bits of pointers are
-     always 0, and we can thus use them to hold tag bits, without
-     restricting our addressing space.
-
-   If USE_LSB_TAG is not set, then we use the top 3 bits for tagging, thus
-   restricting our possible address range.  Currently USE_LSB_TAG is not
-   allowed together with a union.  This is not due to any fundamental
-   technical (or political ;-) problem: nobody wrote the code to do it yet.
-
-   USE_LSB_TAG not only requires the least 3 bits of pointers returned by
-   malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
-   on the few static Lisp_Objects used: all the defsubr as well
-   as the two special buffers buffer_defaults and buffer_local_symbols.  */
-
-/* First, try and define DECL_ALIGN(type,var) which declares a static
-   variable VAR of type TYPE with the added requirement that it be
-   TYPEBITS-aligned. */
-#ifndef NO_DECL_ALIGN
-# ifndef DECL_ALIGN
-/* What compiler directive should we use for non-gcc compilers?  -stef  */
-#  if defined (__GNUC__)
-#   define DECL_ALIGN(type, var) \
-     type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
-#  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 MAC_OSX
-/* We also need to be able to specify mult-of-8 alignment on static vars.  */
-# if defined DECL_ALIGN
-/* We currently do not support USE_LSB_TAG with a union Lisp_Object.  */
-#  if defined NO_UNION_TYPE
-#   define USE_LSB_TAG
-#  endif
-# endif
-#endif
-
-/* If we cannot use 8-byte alignment, make DECL_ALIGN a no-op.  */
-#ifndef DECL_ALIGN
-# ifdef USE_LSB_TAG
-#  error "USE_LSB_TAG used without defining DECL_ALIGN"
-# endif
-# define DECL_ALIGN(type, var) type var
-#endif
-
 \f
 /* These macros extract various sorts of values from a Lisp_Object.
  For example, if tem is a Lisp_Object whose type is Lisp_Cons,
@@ -365,6 +361,9 @@ enum pvec_type
 
 #ifdef NO_UNION_TYPE
 
+/* Return a perfect hash of the Lisp_Object representation.  */
+#define XHASH(a) (a)
+
 #ifdef USE_LSB_TAG
 
 #define TYPEMASK ((((EMACS_INT) 1) << GCTYPEBITS) - 1)
@@ -426,10 +425,10 @@ enum pvec_type
 
 #endif /* not USE_LSB_TAG */
 
-#define EQ(x, y) ((x) == (y))
-
 #else /* not NO_UNION_TYPE */
 
+#define XHASH(a) ((a).i)
+
 #define XTYPE(a) ((enum Lisp_Type) (a).u.type)
 
 /* For integers known to be positive, XFASTINT provides fast retrieval
@@ -458,10 +457,10 @@ enum pvec_type
 extern Lisp_Object make_number P_ ((EMACS_INT));
 #endif
 
-#define EQ(x, y) ((x).i == (y).i)
-
 #endif /* NO_UNION_TYPE */
 
+#define EQ(x, y) (XHASH (x) == XHASH (y))
+
 /* During garbage collection, XGCTYPE must be used for extracting types
  so that the mark bit is ignored.  XMARKBIT accesses the markbit.
  Markbits are used only in particular slots of particular structure types.
@@ -538,10 +537,11 @@ extern size_t pure_size;
 
 #define XPROCESS(a) (eassert (GC_PROCESSP(a)),(struct Lisp_Process *) XPNTR(a))
 #define XWINDOW(a) (eassert (GC_WINDOWP(a)),(struct window *) XPNTR(a))
+#define XTERMINAL(a) (eassert (GC_TERMINALP(a)),(struct terminal *) XPNTR(a))
 #define XSUBR(a) (eassert (GC_SUBRP(a)),(struct Lisp_Subr *) XPNTR(a))
 #define XBUFFER(a) (eassert (GC_BUFFERP(a)),(struct buffer *) XPNTR(a))
-#define XCHAR_TABLE(a) ((struct Lisp_Char_Table *) XPNTR(a))
-#define XBOOL_VECTOR(a) ((struct Lisp_Bool_Vector *) XPNTR(a))
+#define XCHAR_TABLE(a) (eassert (GC_CHAR_TABLE_P (a)), (struct Lisp_Char_Table *) XPNTR(a))
+#define XBOOL_VECTOR(a) (eassert (GC_BOOL_VECTOR_P (a)), (struct Lisp_Bool_Vector *) XPNTR(a))
 
 /* Construct a Lisp_Object from a value or address.  */
 
@@ -559,12 +559,16 @@ extern size_t pure_size;
 
 /* Pseudovector types.  */
 
+#define XSETPVECTYPE(v,code) ((v)->size |= PSEUDOVECTOR_FLAG | (code))
 #define XSETPSEUDOVECTOR(a, b, code) \
-  (XSETVECTOR (a, b), XVECTOR (a)->size |= PSEUDOVECTOR_FLAG | (code))
+  (XSETVECTOR (a, b),                                                  \
+   eassert ((XVECTOR (a)->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) \
+           == (PSEUDOVECTOR_FLAG | (code))))
 #define XSETWINDOW_CONFIGURATION(a, b) \
   (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW_CONFIGURATION))
 #define XSETPROCESS(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_PROCESS))
 #define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW))
+#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_TERMINAL))
 #define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUBR))
 #define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED))
 #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER))
@@ -579,9 +583,9 @@ extern size_t pure_size;
 
 /* Convenience macros for dealing with Lisp strings.  */
 
-#define SREF(string, index)    (XSTRING (string)->data[index] + 0)
-#define SSET(string, index, new) (XSTRING (string)->data[index] = (new))
 #define SDATA(string)          (XSTRING (string)->data + 0)
+#define SREF(string, index)    (SDATA (string)[index] + 0)
+#define SSET(string, index, new) (SDATA (string)[index] = (new))
 #define SCHARS(string)         (XSTRING (string)->size + 0)
 #define SBYTES(string)         (STRING_BYTES (XSTRING (string)) + 0)
 
@@ -589,7 +593,7 @@ extern size_t pure_size;
     (XSTRING (string)->size = (newsize))
 
 #define STRING_COPYIN(string, index, new, count) \
-    bcopy (new, XSTRING (string)->data + index, count)
+    bcopy (new, SDATA (string) + index, count)
 
 /* Type checking.  */
 
@@ -701,7 +705,10 @@ extern int string_bytes P_ ((struct Lisp_String *));
 #endif /* not GC_CHECK_STRING_BYTES */
 
 /* Mark STR as a unibyte string.  */
-#define STRING_SET_UNIBYTE(STR)      (XSTRING (STR)->size_byte = -1)
+#define STRING_SET_UNIBYTE(STR)  \
+  do { if (EQ (STR, empty_multibyte_string))  \
+      (STR) = empty_unibyte_string;  \
+    else XSTRING (STR)->size_byte = -1; } while (0)
 
 /* Get text properties.  */
 #define STRING_INTERVALS(STR)  (XSTRING (STR)->intervals + 0)
@@ -728,16 +735,16 @@ struct Lisp_String
 
 struct Lisp_Vector
   {
-    EMACS_INT size;
+    EMACS_UINT size;
     struct Lisp_Vector *next;
     Lisp_Object contents[1];
   };
 
 /* If a struct is made to look like a vector, this macro returns the length
    of the shortest vector that would hold that struct.  */
-#define VECSIZE(type) ((sizeof (type) - (sizeof (struct Lisp_Vector)  \
-                                         - sizeof (Lisp_Object))      \
-                        + sizeof(Lisp_Object) - 1) /* round up */     \
+#define VECSIZE(type) ((sizeof (type)                                    \
+                       - OFFSETOF (struct Lisp_Vector, contents[0])      \
+                        + sizeof(Lisp_Object) - 1) /* round up */        \
                       / sizeof (Lisp_Object))
 
 /* Like VECSIZE, but used when the pseudo-vector has non-Lisp_Object fields
@@ -835,7 +842,7 @@ struct Lisp_Char_Table
        pseudovector type information.  It holds the size, too.
        The size counts the top, defalt, purpose, and parent slots.
        The last three are not counted if this is a sub char table.  */
-    EMACS_INT size;
+    EMACS_UINT size;
     struct Lisp_Vector *next;
     /* This holds a flag to tell if this is a top level char table (t)
        or a sub char table (nil).  */
@@ -866,10 +873,10 @@ struct Lisp_Bool_Vector
   {
     /* This is the vector's size field.  It doesn't have the real size,
        just the subtype information.  */
-    EMACS_INT vector_size;
+    EMACS_UINT vector_size;
     struct Lisp_Vector *next;
     /* This is the size in bits.  */
-    EMACS_INT size;
+    EMACS_UINT size;
     /* This contains the actual bits, packed into bytes.  */
     unsigned char data[1];
   };
@@ -884,11 +891,11 @@ struct Lisp_Bool_Vector
 
 struct Lisp_Subr
   {
-    EMACS_INT size;
+    EMACS_UINT size;
     Lisp_Object (*function) ();
     short min_args, max_args;
     char *symbol_name;
-    char *prompt;
+    char *intspec;
     char *doc;
   };
 
@@ -995,7 +1002,7 @@ struct Lisp_Symbol
 struct Lisp_Hash_Table
 {
   /* Vector fields.  The hash table code doesn't refer to these.  */
-  EMACS_INT size;
+  EMACS_UINT size;
   struct Lisp_Vector *vec_next;
 
   /* Function used to compare keys.  */
@@ -1014,13 +1021,6 @@ struct Lisp_Hash_Table
      ratio, a float.  */
   Lisp_Object rehash_threshold;
 
-  /* Number of key/value entries in the table.  */
-  Lisp_Object count;
-
-  /* Vector of keys and values.  The key of item I is found at index
-     2 * I, the value is found at index 2 * I + 1.  */
-  Lisp_Object key_and_value;
-
   /* Vector of hash codes.. If hash[I] is nil, this means that that
      entry I is unused.  */
   Lisp_Object hash;
@@ -1038,16 +1038,28 @@ struct Lisp_Hash_Table
      hash table size to reduce collisions.  */
   Lisp_Object index;
 
-  /* Next weak hash table if this is a weak hash table.  The head
-     of the list is in Vweak_hash_tables.  */
-  Lisp_Object next_weak;
-
   /* User-supplied hash function, or nil.  */
   Lisp_Object user_hash_function;
 
   /* User-supplied key comparison function, or nil.  */
   Lisp_Object user_cmp_function;
 
+  /* Only the fields above are traced normally by the GC.  The ones below
+     `count'.  are special and are either ignored by the GC or traced in
+     a special way (e.g. because of weakness).  */
+
+  /* Number of key/value entries in the table.  */
+  unsigned int count;
+
+  /* Vector of keys and values.  The key of item I is found at index
+     2 * I, the value is found at index 2 * I + 1.
+     This is gc_marked specially if the table is weak.  */
+  Lisp_Object key_and_value;
+
+  /* Next weak hash table if this is a weak hash table.  The head
+     of the list is in weak_hash_tables.  */
+  struct Lisp_Hash_Table *next_weak;
+
   /* C function to compare two keys.  */
   int (* cmpfn) P_ ((struct Lisp_Hash_Table *, Lisp_Object,
                     unsigned, Lisp_Object, unsigned));
@@ -1120,8 +1132,16 @@ struct Lisp_Marker
   /* 1 means normal insertion at the marker's position
      leaves the marker after the inserted text.  */
   unsigned int insertion_type : 1;
-  /* This is the buffer that the marker points into,
-     or 0 if it points nowhere.  */
+  /* This is the buffer that the marker points into, or 0 if it points nowhere.
+     Note: a chain of markers can contain markers pointing into different
+     buffers (the chain is per buffer_text rather than per buffer, so it's
+     shared between indirect buffers).  */
+  /* This is used for (other than NULL-checking):
+     - Fmarker_buffer
+     - Fset_marker: check eq(oldbuf, newbuf) to avoid unchain+rechain.
+     - unchain_marker: to find the list from which to unchain.
+     - Fkill_buffer: to unchain the markers of current indirect buffer.
+     */
   struct buffer *buffer;
 
   /* The remaining fields are meaningless in a marker that
@@ -1129,6 +1149,8 @@ struct Lisp_Marker
 
   /* For markers that point somewhere,
      this is used to chain of all the markers in a given buffer.  */
+  /* We could remove it and use an array in buffer_text instead.
+     That would also allow to preserve it ordered.  */
   struct Lisp_Marker *next;
   /* This is the char position where the marker points.  */
   EMACS_INT charpos;
@@ -1226,6 +1248,10 @@ struct Lisp_Buffer_Local_Value
     unsigned int found_for_frame : 1;
     Lisp_Object realvalue;
     /* The buffer and frame for which the loaded binding was found.  */
+    /* Having both is only needed if we want to allow variables that are
+       both buffer local and frame local (in which case, we currently give
+       precedence to the buffer-local binding).  I don't think such
+       a combination is desirable.  --Stef  */
     Lisp_Object buffer, frame;
 
     /* A cons cell, (LOADED-BINDING . DEFAULT-VALUE).
@@ -1377,34 +1403,6 @@ typedef unsigned char UCHAR;
    We need one more byte for string terminator `\0'.  */
 #define KEY_DESCRIPTION_SIZE ((2 * 6) + 1 + (CHARACTERBITS / 3) + 1 + 1)
 
-#ifdef USE_X_TOOLKIT
-#ifdef NO_UNION_TYPE
-/* Use this for turning a (void *) into a Lisp_Object, as when the
-   Lisp_Object is passed into a toolkit callback function.  */
-#define VOID_TO_LISP(larg,varg) \
-  do { ((larg) = ((Lisp_Object) (varg))); } while (0)
-#define CVOID_TO_LISP VOID_TO_LISP
-
-/* Use this for turning a Lisp_Object into a  (void *), as when the
-   Lisp_Object is passed into a toolkit callback function.  */
-#define LISP_TO_VOID(larg) ((void *) (larg))
-#define LISP_TO_CVOID(varg) ((const void *) (larg))
-
-#else /* not NO_UNION_TYPE */
-/* Use this for turning a (void *) into a Lisp_Object, as when the
-  Lisp_Object is passed into a toolkit callback function.  */
-#define VOID_TO_LISP(larg,varg) \
-  do { ((larg).v = (void *) (varg)); } while (0)
-#define CVOID_TO_LISP(larg,varg) \
-  do { ((larg).cv = (const void *) (varg)); } while (0)
-
-/* Use this for turning a Lisp_Object into a  (void *), as when the
-   Lisp_Object is passed into a toolkit callback function.  */
-#define LISP_TO_VOID(larg) ((larg).v)
-#define LISP_TO_CVOID(larg) ((larg).cv)
-#endif /* not NO_UNION_TYPE */
-#endif /* USE_X_TOOLKIT */
-
 \f
 /* The glyph datatype, used to represent characters on the display.  */
 
@@ -1514,6 +1512,8 @@ typedef unsigned char UCHAR;
 #define GC_PROCESSP(x) GC_PSEUDOVECTORP (x, PVEC_PROCESS)
 #define WINDOWP(x) PSEUDOVECTORP (x, PVEC_WINDOW)
 #define GC_WINDOWP(x) GC_PSEUDOVECTORP (x, PVEC_WINDOW)
+#define TERMINALP(x) PSEUDOVECTORP (x, PVEC_TERMINAL)
+#define GC_TERMINALP(x) GC_PSEUDOVECTORP (x, PVEC_TERMINAL)
 #define SUBRP(x) PSEUDOVECTORP (x, PVEC_SUBR)
 #define GC_SUBRP(x) GC_PSEUDOVECTORP (x, PVEC_SUBR)
 #define COMPILEDP(x) PSEUDOVECTORP (x, PVEC_COMPILED)
@@ -1666,30 +1666,33 @@ typedef unsigned char UCHAR;
         followed by the address of a vector of Lisp_Objects
         which contains the argument values.
     UNEVALLED means pass the list of unevaluated arguments
- `prompt' says how to read arguments for an interactive call.
-    See the doc string for `interactive'.
+ `intspec' says how interactive arguments are to be fetched.
+    If the string starts with a `(', `intspec' is evaluated and the resulting
+    list is the list of arguments.
+    If it's a string that doesn't start with `(', the value should follow
+    the one of the doc string for `interactive'.
     A null string means call interactively with no arguments.
  `doc' is documentation for the user.  */
 
 #if (!defined (__STDC__) && !defined (PROTOTYPES)) \
     || defined (USE_NONANSI_DEFUN)
 
-#define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc)     \
+#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc)    \
   Lisp_Object fnname ();                                               \
   DECL_ALIGN (struct Lisp_Subr, sname) =                               \
     { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)),    \
-      fnname, minargs, maxargs, lname, prompt, 0};                     \
+      fnname, minargs, maxargs, lname, intspec, 0};                    \
   Lisp_Object fnname
 
 #else
 
 /* This version of DEFUN declares a function prototype with the right
    arguments, so we can catch errors with maxargs at compile-time.  */
-#define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc)     \
+#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc)    \
   Lisp_Object fnname DEFUN_ARGS_ ## maxargs ;                          \
   DECL_ALIGN (struct Lisp_Subr, sname) =                               \
     { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)),    \
-      fnname, minargs, maxargs, lname, prompt, 0};                     \
+      fnname, minargs, maxargs, lname, intspec, 0};                    \
   Lisp_Object fnname
 
 /* Note that the weird token-substitution semantics of ANSI C makes
@@ -1730,7 +1733,6 @@ extern void defvar_lisp P_ ((char *, Lisp_Object *));
 extern void defvar_lisp_nopro P_ ((char *, Lisp_Object *));
 extern void defvar_bool P_ ((char *, int *));
 extern void defvar_int P_ ((char *, EMACS_INT *));
-extern void defvar_per_buffer P_ ((char *, Lisp_Object *, Lisp_Object, char *));
 extern void defvar_kboard P_ ((char *, int));
 
 /* Macros we use to define forwarded Lisp variables.
@@ -1741,15 +1743,6 @@ extern void defvar_kboard P_ ((char *, int));
 #define DEFVAR_BOOL(lname, vname, doc) defvar_bool (lname, vname)
 #define DEFVAR_INT(lname, vname, doc) defvar_int (lname, vname)
 
-/* TYPE is nil for a general Lisp variable.
-   An integer specifies a type; then only LIsp values
-   with that type code are allowed (except that nil is allowed too).
-   LNAME is the LIsp-level variable name.
-   VNAME is the name of the buffer slot.
-   DOC is a dummy where you write the doc string as a comment.  */
-#define DEFVAR_PER_BUFFER(lname, vname, type, doc)  \
- defvar_per_buffer (lname, vname, type, 0)
-
 #define DEFVAR_KBOARD(lname, vname, doc) \
  defvar_kboard (lname, \
                (int)((char *)(&current_kboard->vname) \
@@ -2425,7 +2418,7 @@ EXFUN (Fstring_lessp, 2);
 extern int char_table_translate P_ ((Lisp_Object, int));
 extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, Lisp_Object),
                                Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, int,
-                               Lisp_Object *));
+                               int *));
 extern Lisp_Object char_table_ref_and_index P_ ((Lisp_Object, int, int *));
 extern void syms_of_fns P_ ((void));
 
@@ -2594,6 +2587,7 @@ extern struct Lisp_Hash_Table *allocate_hash_table P_ ((void));
 extern struct window *allocate_window P_ ((void));
 extern struct frame *allocate_frame P_ ((void));
 extern struct Lisp_Process *allocate_process P_ ((void));
+extern struct terminal *allocate_terminal P_ ((void));
 extern int gc_in_progress;
 extern int abort_on_gc;
 extern Lisp_Object make_float P_ ((double));
@@ -2989,6 +2983,10 @@ extern Lisp_Object Qvertical_scroll_bar;
 extern void discard_mouse_events P_ ((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 int detect_input_pending P_ ((void));
 extern int detect_input_pending_ignore_squeezables P_ ((void));
@@ -3002,6 +3000,7 @@ extern void init_keyboard P_ ((void));
 extern void syms_of_keyboard P_ ((void));
 extern void keys_of_keyboard P_ ((void));
 extern char *push_key_description P_ ((unsigned int, char *, int));
+extern void add_user_signal P_ ((int sig, const char *name));
 
 
 /* defined in indent.c */
@@ -3060,7 +3059,8 @@ extern void syms_of_frame P_ ((void));
 /* defined in emacs.c */
 extern Lisp_Object decode_env_path P_ ((char *, char *));
 extern Lisp_Object Vinvocation_name, Vinvocation_directory;
-extern Lisp_Object Vinstallation_directory, empty_string;
+extern Lisp_Object Vinstallation_directory;
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
 EXFUN (Fkill_emacs, 1);
 #if HAVE_SETLOCALE
 void fixup_locale P_ ((void));
@@ -3096,6 +3096,8 @@ extern int wait_reading_process_output P_ ((int, int, int, int,
                                            int));
 extern void add_keyboard_wait_descriptor P_ ((int));
 extern void delete_keyboard_wait_descriptor P_ ((int));
+extern void add_gpm_wait_descriptor P_ ((int));
+extern void delete_gpm_wait_descriptor P_ ((int));
 extern void close_process_descs P_ ((void));
 extern void init_process P_ ((void));
 extern void syms_of_process P_ ((void));
@@ -3109,7 +3111,7 @@ EXFUN (Fcall_process, MANY);
 extern int child_setup P_ ((int, int, int, char **, int, Lisp_Object));
 extern void init_callproc_1 P_ ((void));
 extern void init_callproc P_ ((void));
-extern void set_process_environment P_ ((void));
+extern void set_initial_environment P_ ((void));
 extern void syms_of_callproc P_ ((void));
 
 /* defined in doc.c */
@@ -3171,28 +3173,31 @@ EXFUN (Fx_popup_menu, 2);
 EXFUN (Fx_popup_dialog, 3);
 extern void syms_of_xmenu P_ ((void));
 
+/* defined in termchar.h */
+struct tty_display_info;
+
+/* defined in termhooks.h */
+struct terminal;
+
 /* defined in sysdep.c */
 #ifndef HAVE_GET_CURRENT_DIR_NAME
 extern char *get_current_dir_name P_ ((void));
 #endif
 extern void stuff_char P_ ((char c));
 extern void init_sigio P_ ((int));
-extern void request_sigio P_ ((void));
-extern void unrequest_sigio P_ ((void));
-extern void reset_sys_modes P_ ((void));
 extern void sys_subshell P_ ((void));
 extern void sys_suspend P_ ((void));
 extern void discard_tty_input P_ ((void));
-extern void init_sys_modes P_ ((void));
-extern void get_frame_size P_ ((int *, int *));
+extern void init_sys_modes P_ ((struct tty_display_info *));
+extern void reset_sys_modes P_ ((struct tty_display_info *));
+extern void init_all_sys_modes P_ ((void));
+extern void reset_all_sys_modes P_ ((void));
 extern void wait_for_termination P_ ((int));
 extern void flush_pending_output P_ ((int));
 extern void child_setup_tty P_ ((int));
 extern void setup_pty P_ ((int));
 extern int set_window_size P_ ((int, int, int));
 extern void create_process P_ ((Lisp_Object, char **, Lisp_Object));
-extern int tabs_safe_p P_ ((void));
-extern void init_baud_rate P_ ((void));
 extern int emacs_open P_ ((const char *, int, int));
 extern int emacs_close P_ ((int));
 extern int emacs_read P_ ((int, char *, unsigned int));
@@ -3227,6 +3232,9 @@ extern void syms_of_dired P_ ((void));
 extern void syms_of_term P_ ((void));
 extern void fatal () NO_RETURN;
 
+/* Defined in terminal.c */
+extern void syms_of_terminal P_ ((void));
+
 #ifdef HAVE_WINDOW_SYSTEM
 /* Defined in fontset.c */
 extern void syms_of_fontset P_ ((void));
@@ -3371,6 +3379,13 @@ extern Lisp_Object Vdirectory_sep_char;
 #define min(a, b)      ((a) < (b) ? (a) : (b))
 #define max(a, b)      ((a) > (b) ? (a) : (b))
 
+/* We used to use `abs', but that clashes with system headers on some
+   platforms, and using a name reserved by Standard C is a bad idea
+   anyway.  */
+#if !defined(eabs)
+#define eabs(x)         ((x) < 0 ? -(x) : (x))
+#endif
+
 /* Return a fixnum or float, depending on whether VAL fits in a Lisp
    fixnum.  */
 
index 49c22f45de1c5e4638e639aaeb60f06be97a930e..5418d82a9681a2a6a393fed486a35ba3055b1eb4 100644 (file)
@@ -27,6 +27,7 @@ Boston, MA 02110-1301, USA.  */
 #include <sys/stat.h>
 #include <sys/file.h>
 #include <errno.h>
+#include <setjmp.h>
 #include "lisp.h"
 #include "intervals.h"
 #include "buffer.h"
@@ -34,6 +35,7 @@ Boston, MA 02110-1301, USA.  */
 #include <epaths.h>
 #include "commands.h"
 #include "keyboard.h"
+#include "frame.h"
 #include "termhooks.h"
 #include "coding.h"
 #include "blockinput.h"
@@ -447,8 +449,6 @@ static void substitute_in_interval P_ ((INTERVAL, Lisp_Object));
 \f
 /* Get a character from the tty.  */
 
-extern Lisp_Object read_char ();
-
 /* Read input events until we get one that's acceptable for our purposes.
 
    If NO_SWITCH_FRAME is non-zero, switch-frame events are stashed
@@ -500,10 +500,12 @@ read_filtered_event (no_switch_frame, ascii_required, error_nonascii,
       EMACS_ADD_TIME (end_time, end_time, wait_time);
     }
 
-  /* Read until we get an acceptable event.  */
+/* Read until we get an acceptable event.  */
  retry:
-  val = read_char (0, 0, 0, (input_method ? Qnil : Qt), 0,
-                  NUMBERP (seconds) ? &end_time : NULL);
+  do
+    val = read_char (0, 0, 0, (input_method ? Qnil : Qt), 0,
+                    NUMBERP (seconds) ? &end_time : NULL);
+  while (INTEGERP (val) && XINT (val) == -2); /* wrong_kboard_jmpbuf */
 
   if (BUFFERP (val))
     goto retry;
@@ -706,7 +708,7 @@ load_warn_old_style_backquotes (file)
   if (!NILP (Vold_style_backquotes))
     {
       Lisp_Object args[2];
-      args[0] = build_string ("!! File %s uses old-style backquotes !!");
+      args[0] = build_string ("Loading `%s': old-style backquotes detected!");
       args[1] = file;
       Fmessage (2, args);
     }
@@ -1217,7 +1219,7 @@ openp (path, str, suffixes, storeptr, predicate)
        fn = (char *) alloca (fn_size = 100 + want_size);
 
       /* Loop over suffixes.  */
-      for (tail = NILP (suffixes) ? Fcons (build_string (""), Qnil) : suffixes;
+      for (tail = NILP (suffixes) ? Fcons (empty_unibyte_string, Qnil) : suffixes;
           CONSP (tail); tail = XCDR (tail))
        {
          int lsuffix = SBYTES (XCAR (tail));
@@ -1517,7 +1519,8 @@ readevalloop (readcharfun, stream, sourcename, evalfun,
        }
 
       /* Ignore whitespace here, so we can detect eof.  */
-      if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r')
+      if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r'
+         || c == 0x8a0)  /* NBSP */
        goto read_next;
 
       if (!NILP (Vpurify_flag) && c == '(')
@@ -1910,7 +1913,7 @@ read_escape (readcharfun, stringp, byterep)
 
     case 's':
       c = READCHAR;
-      if (c != '-')
+      if (stringp || c != '-')
        {
          UNREAD (c);
          return ' ';
@@ -2716,6 +2719,8 @@ read1 (readcharfun, pch, first_in_list)
     default:
     default_label:
       if (c <= 040) goto retry;
+      if (c == 0x8a0) /* NBSP */
+       goto retry;
       {
        char *p = read_buffer;
        int quoted = 0;
@@ -2724,6 +2729,7 @@ read1 (readcharfun, pch, first_in_list)
          char *end = read_buffer + read_buffer_size;
 
          while (c > 040
+                && c != 0x8a0 /* NBSP */
                 && (c >= 0200
                     || (!index ("\"';()[]#", c)
                         && !(!first_in_list && c == '`')
@@ -3666,6 +3672,7 @@ defsubr (sname)
 {
   Lisp_Object sym;
   sym = intern (sname->symbol_name);
+  XSETPVECTYPE (sname, PVEC_SUBR);
   XSETSUBR (XSYMBOL (sym)->function, sname);
 }
 
@@ -3682,8 +3689,8 @@ defalias (sname, string)
 #endif /* NOTDEF */
 
 /* Define an "integer variable"; a symbol whose value is forwarded
-   to a C variable of type int.  Sample call: */
/* DEFVAR_INT ("indent-tabs-mode", &indent_tabs_mode, "Documentation");  */
+   to a C variable of type int.  Sample call:
  DEFVAR_INT ("emacs-priority", &emacs_priority, "Documentation");  */
 void
 defvar_int (namestring, address)
      char *namestring;
@@ -3698,7 +3705,7 @@ defvar_int (namestring, address)
 }
 
 /* Similar but define a variable whose value is t if address contains 1,
-   nil if address contains 0 */
+   nil if address contains 0 */
 void
 defvar_bool (namestring, address)
      char *namestring;
@@ -3740,37 +3747,6 @@ defvar_lisp (namestring, address)
   staticpro (address);
 }
 
-/* Similar but define a variable whose value is the Lisp Object stored in
-   the current buffer.  address is the address of the slot in the buffer
-   that is current now. */
-
-void
-defvar_per_buffer (namestring, address, type, doc)
-     char *namestring;
-     Lisp_Object *address;
-     Lisp_Object type;
-     char *doc;
-{
-  Lisp_Object sym, val;
-  int offset;
-
-  sym = intern (namestring);
-  val = allocate_misc ();
-  offset = (char *)address - (char *)current_buffer;
-
-  XMISCTYPE (val) = Lisp_Misc_Buffer_Objfwd;
-  XBUFFER_OBJFWD (val)->offset = offset;
-  SET_SYMBOL_VALUE (sym, val);
-  PER_BUFFER_SYMBOL (offset) = sym;
-  PER_BUFFER_TYPE (offset) = type;
-
-  if (PER_BUFFER_IDX (offset) == 0)
-    /* Did a DEFVAR_PER_BUFFER without initializing the corresponding
-       slot of buffer_local_flags */
-    abort ();
-}
-
-
 /* Similar but define a variable whose value is the Lisp Object stored
    at a particular offset in the current kboard object.  */
 
@@ -4092,8 +4068,7 @@ and, if so, which suffixes they should try to append to the file name
 in order to do so.  However, if you want to customize which suffixes
 the loading functions recognize as compression suffixes, you should
 customize `jka-compr-load-suffixes' rather than the present variable.  */);
-  /* We don't use empty_string because it's not initialized yet.  */
-  Vload_file_rep_suffixes = Fcons (build_string (""), Qnil);
+  Vload_file_rep_suffixes = Fcons (empty_unibyte_string, Qnil);
 
   DEFVAR_BOOL ("load-in-progress", &load_in_progress,
               doc: /* Non-nil if inside of `load'.  */);
index 53fc1780df8ab72a129250e7286f259d88cb61df..5e46a05ab68cadeb7165d82f7b5d1977958bf538 100644 (file)
@@ -99,10 +99,6 @@ NOTE-END
 # endif
 #endif
 
-#if defined(__OpenBSD__)
-#define ORDINARY_LINK
-#endif
-
 #ifdef __ELF__
 #undef UNEXEC
 #define UNEXEC unexelf.o
index 681be8b06473314a76cad5b7febbd81599fdffef..1f759cc9ec6fb3c40adbfc927f3d69870f8f2959 100644 (file)
@@ -18,6 +18,14 @@ along with GNU Emacs; see the file COPYING.  If not, write to
 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
 
+#ifdef i386
+/* Although we're running on an amd64 kernel, we're actually compiling for
+   the x86 architecture.  The user should probably have provided an
+   explicit --build to `configure', but if everything else than the kernel
+   is running in i386 mode, then the bug is really ours: we should have
+   guessed better.  */
+#include "m/intel386.h"
+#else
 
 /* The following line tells the configuration script what sort of
    operating system this machine is likely to run.
@@ -156,6 +164,7 @@ Boston, MA 02110-1301, USA.  */
 #endif
 
 #endif /* __FreeBSD__ */
+#endif /* !i386 */
 
 /* arch-tag: 8a5e001d-e12e-4692-a3a6-0b15ba271c6e
    (do not change this comment) */
index 64ede365d0c42dbcb45531b0d9f2f4ed2a2172d2..0dafe59000b31bfd8c8b6f808e13cc531b1093e9 100644 (file)
@@ -22,7 +22,7 @@ Boston, MA 02110-1301, USA.  */
    into ibms390.h.  */
 
 
-/* The following line tells the configuration script what sort of 
+/* The following line tells the configuration script what sort of
    operating system this machine is likely to run.
    USUAL-OPSYS="<name of system .h file here, without the s- or .h>"
 
@@ -97,14 +97,10 @@ NOTE-END */
 
 #define VIRT_ADDR_VARIES
 
-/* Define C_ALLOCA if this machine does not support a true alloca
-   and the one written in C should be used instead.
-   Define HAVE_ALLOCA to say that the system provides a properly
-   working alloca function and it should be used.
-   Define neither one if an assembler-language alloca
-   in the file alloca.s should be used.  */
+/* Define HAVE_ALLOCA to say that the system provides a properly
+   working alloca function and it should be used.  Undefine it if an
+   assembler-language alloca in the file alloca.s should be used. */
 
-#undef C_ALLOCA
 #define HAVE_ALLOCA
 
 /* Define NO_REMAP if memory segmentation makes it not work well
@@ -144,11 +140,6 @@ NOTE-END */
 
 #define VALBITS         60
 
-/* This definition of MARKBIT is necessary because of the comparison of
-   ARRAY_MARK_FLAG and MARKBIT in an #if in lisp.h, which cpp doesn't like. */
-
-#define MARKBIT         0x8000000000000000L
-
 #define LINKER $(CC) -nostdlib
 
 /* Define XINT and XUINT so that they can take arguments of type int */
index eefcccea6debc8f63ecc67cb0a921d200d8f35b8..77f6dc12c23fdfb3783ba2996a26ea9fe68fd21d 100644 (file)
@@ -19,7 +19,7 @@ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
 
-/* The following line tells the configuration script what sort of 
+/* The following line tells the configuration script what sort of
    operating system this machine is likely to run.
    USUAL-OPSYS="<name of system .h file here, without the s- or .h>"  */
 
@@ -79,14 +79,11 @@ Boston, MA 02111-1307, USA.  */
 
 #define VIRT_ADDR_VARIES
 
-/* Define C_ALLOCA if this machine does not support a true alloca
-   and the one written in C should be used instead.
-   Define HAVE_ALLOCA to say that the system provides a properly
+/* Define HAVE_ALLOCA to say that the system provides a properly
    working alloca function and it should be used.
-   Define neither one if an assembler-language alloca
+   Undefine it if an assembler-language alloca
    in the file alloca.s should be used.  */
 
-/* #define C_ALLOCA */
 #define HAVE_ALLOCA
 
 /* Define NO_REMAP if memory segmentation makes it not work well
index a641b07dc08e041a6ecafe4346e9de84f3538933..75a606b60b3f47c6ca5bd9844fd9d938f3b30111 100644 (file)
--- a/src/mac.c
+++ b/src/mac.c
@@ -79,6 +79,7 @@ static ComponentInstance as_scripting_component;
 /* The single script context used for all script executions.  */
 static OSAID as_script_context;
 
+#ifndef MAC_OS_X
 #if TARGET_API_MAC_CARBON
 static int wakeup_from_rne_enabled_p = 0;
 #define ENABLE_WAKEUP_FROM_RNE (wakeup_from_rne_enabled_p = 1)
@@ -87,6 +88,7 @@ static int wakeup_from_rne_enabled_p = 0;
 #define ENABLE_WAKEUP_FROM_RNE 0
 #define DISABLE_WAKEUP_FROM_RNE 0
 #endif
+#endif
 
 #ifndef MAC_OSX
 static OSErr posix_pathname_to_fsspec P_ ((const char *, FSSpec *));
@@ -1127,18 +1129,15 @@ Lisp_Object
 cfdate_to_lisp (date)
      CFDateRef date;
 {
-  static const CFGregorianDate epoch_gdate = {1970, 1, 1, 0, 0, 0.0};
-  static CFAbsoluteTime epoch = 0.0, sec;
-  int high, low;
-
-  if (epoch == 0.0)
-    epoch = CFGregorianDateGetAbsoluteTime (epoch_gdate, NULL);
+  CFTimeInterval sec;
+  int high, low, microsec;
 
-  sec = CFDateGetAbsoluteTime (date) - epoch;
+  sec = CFDateGetAbsoluteTime (date) + kCFAbsoluteTimeIntervalSince1970;
   high = sec / 65536.0;
   low = sec - high * 65536.0;
+  microsec = (sec - floor (sec)) * 1000000.0;
 
-  return list3 (make_number (high), make_number (low), make_number (0));
+  return list3 (make_number (high), make_number (low), make_number (microsec));
 }
 
 
@@ -1826,8 +1825,6 @@ xrm_get_preference_database (application)
 
   GCPRO3 (database, quarks, value);
 
-  BLOCK_INPUT;
-
   app_id = kCFPreferencesCurrentApplication;
   if (application)
     {
@@ -1879,8 +1876,6 @@ xrm_get_preference_database (application)
     CFRelease (key_set);
   CFRelease (app_id);
 
-  UNBLOCK_INPUT;
-
   UNGCPRO;
 
   return database;
@@ -4994,8 +4989,8 @@ extern int noninteractive;
       SELECT_TIMEOUT_THRESHOLD_RUNLOOP seconds).
       -> Create CFSocket for each socket and add it into the current
          event RunLoop so that the current event loop gets quit when
-         the socket becomes ready.  Then ReceiveNextEvent can wait for
-         both kinds of inputs.
+         the socket becomes ready.  Then CFRunLoopRunInMode can wait
+         for both kinds of inputs.
    4. Otherwise.
       -> Periodically poll the window input channel while repeatedly
          executing `select' with a short timeout
@@ -5017,12 +5012,6 @@ socket_callback (s, type, address, data, info)
      const void *data;
      void *info;
 {
-  int fd = CFSocketGetNative (s);
-  SELECT_TYPE *ofds = (SELECT_TYPE *)info;
-
-  if ((type == kCFSocketReadCallBack && FD_ISSET (fd, &ofds[0]))
-      || (type == kCFSocketConnectCallBack && FD_ISSET (fd, &ofds[1])))
-    QuitEventLoop (GetCurrentEventLoop ());
 }
 #endif /* SELECT_USE_CFSOCKET */
 
@@ -5032,42 +5021,64 @@ select_and_poll_event (nfds, rfds, wfds, efds, timeout)
      SELECT_TYPE *rfds, *wfds, *efds;
      EMACS_TIME *timeout;
 {
-  OSStatus err = noErr;
+  int timedout_p = 0;
   int r = 0;
+  EMACS_TIME select_timeout;
+  EventTimeout timeoutval =
+    (timeout
+     ? (EMACS_SECS (*timeout) * kEventDurationSecond
+       + EMACS_USECS (*timeout) * kEventDurationMicrosecond)
+     : kEventDurationForever);
+  SELECT_TYPE orfds, owfds, oefds;
 
-  /* Try detect_input_pending before ReceiveNextEvent in the same
+  if (timeout == NULL)
+    {
+      if (rfds) orfds = *rfds;
+      if (wfds) owfds = *wfds;
+      if (efds) oefds = *efds;
+    }
+
+  /* Try detect_input_pending before CFRunLoopRunInMode in the same
      BLOCK_INPUT block, in case that some input has already been read
      asynchronously.  */
   BLOCK_INPUT;
-  ENABLE_WAKEUP_FROM_RNE;
-  if (!detect_input_pending ())
+  while (1)
     {
-      EMACS_TIME select_timeout;
-      EventTimeout timeoutval =
-       (timeout
-        ? (EMACS_SECS (*timeout) * kEventDurationSecond
-           + EMACS_USECS (*timeout) * kEventDurationMicrosecond)
-        : kEventDurationForever);
+      if (detect_input_pending ())
+       break;
 
       EMACS_SET_SECS_USECS (select_timeout, 0, 0);
       r = select (nfds, rfds, wfds, efds, &select_timeout);
+      if (r != 0)
+       break;
+
       if (timeoutval == 0.0)
-       err = eventLoopTimedOutErr;
-      else if (r == 0)
+       timedout_p = 1;
+      else
        {
 #if USE_CG_DRAWING
          mac_prepare_for_quickdraw (NULL);
 #endif
-         err = ReceiveNextEvent (0, NULL, timeoutval,
-                                 kEventLeaveInQueue, NULL);
+         if (CFRunLoopRunInMode (kCFRunLoopDefaultMode,
+                                 timeoutval >= 0 ? timeoutval : 100000, true)
+             == kCFRunLoopRunTimedOut)
+           timedout_p = 1;
        }
+
+      if (timeout == NULL && timedout_p)
+       {
+         if (rfds) *rfds = orfds;
+         if (wfds) *wfds = owfds;
+         if (efds) *efds = oefds;
+       }
+      else
+       break;
     }
-  DISABLE_WAKEUP_FROM_RNE;
   UNBLOCK_INPUT;
 
   if (r != 0)
     return r;
-  else if (err == noErr)
+  else if (!timedout_p)
     {
       /* Pretend that `select' is interrupted by a signal.  */
       detect_input_pending ();
@@ -5084,25 +5095,25 @@ sys_select (nfds, rfds, wfds, efds, timeout)
      SELECT_TYPE *rfds, *wfds, *efds;
      EMACS_TIME *timeout;
 {
-  OSStatus err = noErr;
+  int timedout_p = 0;
   int r;
   EMACS_TIME select_timeout;
-  static SELECT_TYPE ofds[3];
+  SELECT_TYPE orfds, owfds, oefds;
 
   if (inhibit_window_system || noninteractive
       || nfds < 1 || rfds == NULL || !FD_ISSET (0, rfds))
     return select (nfds, rfds, wfds, efds, timeout);
 
   FD_CLR (0, rfds);
-  ofds[0] = *rfds;
+  orfds = *rfds;
 
   if (wfds)
-    ofds[1] = *wfds;
+    owfds = *wfds;
   else
-    FD_ZERO (&ofds[1]);
+    FD_ZERO (&owfds);
 
   if (efds)
-    ofds[2] = *efds;
+    oefds = *efds;
   else
     {
       EventTimeout timeoutval =
@@ -5130,25 +5141,23 @@ sys_select (nfds, rfds, wfds, efds, timeout)
       if (r != 0 || timeoutval == 0.0)
        return r;
 
-      *rfds = ofds[0];
+      *rfds = orfds;
       if (wfds)
-       *wfds = ofds[1];
+       *wfds = owfds;
 
 #if SELECT_USE_CFSOCKET
       if (timeoutval > 0 && timeoutval <= SELECT_TIMEOUT_THRESHOLD_RUNLOOP)
        goto poll_periodically;
 
-      /* Try detect_input_pending before ReceiveNextEvent in the same
-        BLOCK_INPUT block, in case that some input has already been
-        read asynchronously.  */
+      /* Try detect_input_pending before CFRunLoopRunInMode in the
+        same BLOCK_INPUT block, in case that some input has already
+        been read asynchronously.  */
       BLOCK_INPUT;
-      ENABLE_WAKEUP_FROM_RNE;
       if (!detect_input_pending ())
        {
          int minfd, fd;
          CFRunLoopRef runloop =
            (CFRunLoopRef) GetCFRunLoopFromEventLoop (GetCurrentEventLoop ());
-         static const CFSocketContext context = {0, ofds, NULL, NULL, NULL};
          static CFMutableDictionaryRef sources;
 
          if (sources == NULL)
@@ -5173,7 +5182,7 @@ sys_select (nfds, rfds, wfds, efds, timeout)
                      CFSocketCreateWithNative (NULL, fd,
                                                (kCFSocketReadCallBack
                                                 | kCFSocketConnectCallBack),
-                                               socket_callback, &context);
+                                               socket_callback, NULL);
 
                    if (socket == NULL)
                      continue;
@@ -5190,8 +5199,10 @@ sys_select (nfds, rfds, wfds, efds, timeout)
 #if USE_CG_DRAWING
          mac_prepare_for_quickdraw (NULL);
 #endif
-         err = ReceiveNextEvent (0, NULL, timeoutval,
-                                 kEventLeaveInQueue, NULL);
+         if (CFRunLoopRunInMode (kCFRunLoopDefaultMode,
+                                 timeoutval >= 0 ? timeoutval : 100000, true)
+             == kCFRunLoopRunTimedOut)
+           timedout_p = 1;
 
          for (fd = minfd; fd < nfds; fd++)
            if (FD_ISSET (fd, rfds) || (wfds && FD_ISSET (fd, wfds)))
@@ -5203,10 +5214,9 @@ sys_select (nfds, rfds, wfds, efds, timeout)
                CFRunLoopRemoveSource (runloop, source, kCFRunLoopDefaultMode);
              }
        }
-      DISABLE_WAKEUP_FROM_RNE;
       UNBLOCK_INPUT;
 
-      if (err == noErr || err == eventLoopQuitErr)
+      if (!timedout_p)
        {
          EMACS_SET_SECS_USECS (select_timeout, 0, 0);
          return select_and_poll_event (nfds, rfds, wfds, efds,
@@ -5242,11 +5252,11 @@ sys_select (nfds, rfds, wfds, efds, timeout)
        if (r != 0)
          return r;
 
-       *rfds = ofds[0];
+       *rfds = orfds;
        if (wfds)
-         *wfds = ofds[1];
+         *wfds = owfds;
        if (efds)
-         *efds = ofds[2];
+         *efds = oefds;
 
        if (timeout)
          {
@@ -5409,10 +5419,12 @@ init_mac_osx_environment ()
 void
 mac_wakeup_from_rne ()
 {
+#ifndef MAC_OSX
   if (wakeup_from_rne_enabled_p)
     /* Post a harmless event so as to wake up from
        ReceiveNextEvent.  */
     mac_post_mouse_moved_event ();
+#endif
 }
 #endif
 
index 1139158f1656993fd71653c4462a22f31fe1a7e2..6a12c071ceef98c20cfe7f4c83e79dc08efcbc6b 100644 (file)
@@ -107,7 +107,6 @@ extern Lisp_Object Vwindow_system_version;
 int image_cache_refcount, dpyinfo_refcount;
 #endif
 
-
 #if 0 /* Use xstricmp instead.  */
 /* compare two strings ignoring case */
 
@@ -218,9 +217,6 @@ void x_explicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
 void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
 void x_set_title P_ ((struct frame *, Lisp_Object, Lisp_Object));
 void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
-
-extern void mac_get_window_bounds P_ ((struct frame *, Rect *, Rect *));
-
 \f
 
 /* Store the screen positions of frame F into XPTR and YPTR.
@@ -1370,11 +1366,11 @@ x_set_mouse_color (f, arg, oldval)
   Cursor cursor, nontext_cursor, mode_cursor, hand_cursor;
   Cursor hourglass_cursor, horizontal_drag_cursor;
   unsigned long pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
-  unsigned long mask_color = x->background_pixel;
+  unsigned long mask_color = FRAME_BACKGROUND_PIXEL (f);
 
   /* Don't let pointers be invisible.  */
   if (mask_color == pixel)
-    pixel = x->foreground_pixel;
+    pixel = FRAME_FOREGROUND_PIXEL (f);
 
   f->output_data.mac->mouse_pixel = pixel;
 
@@ -1447,7 +1443,7 @@ x_set_mouse_color (f, arg, oldval)
   BLOCK_INPUT;
 
   if (FRAME_MAC_WINDOW (f) != 0)
-    rif->define_frame_cursor (f, cursor);
+    FRAME_TERMINAL (f)->rif->define_frame_cursor (f, cursor);
 
   f->output_data.mac->text_cursor = cursor;
   f->output_data.mac->nontext_cursor = nontext_cursor;
@@ -1685,6 +1681,25 @@ x_set_tool_bar_lines (f, value, oldval)
   /* Make sure we redisplay all windows in this frame.  */
   ++windows_or_buffers_changed;
 
+#if USE_MAC_TOOLBAR
+  FRAME_TOOL_BAR_LINES (f) = 0;
+  if (nlines)
+    {
+      FRAME_EXTERNAL_TOOL_BAR (f) = 1;
+      if (FRAME_MAC_P (f) && !IsWindowToolbarVisible (FRAME_MAC_WINDOW (f)))
+       /* Make sure next redisplay shows the tool bar.  */
+       XWINDOW (FRAME_SELECTED_WINDOW (f))->update_mode_line = Qt;
+    }
+  else
+    {
+      if (FRAME_EXTERNAL_TOOL_BAR (f))
+        free_frame_tool_bar (f);
+      FRAME_EXTERNAL_TOOL_BAR (f) = 0;
+    }
+
+  return;
+#endif
+
   delta = nlines - FRAME_TOOL_BAR_LINES (f);
 
   /* Don't resize the tool-bar to more than we have room for.  */
@@ -1708,10 +1723,8 @@ x_set_tool_bar_lines (f, value, oldval)
      below the menu bar.  */
   if (FRAME_MAC_WINDOW (f) && FRAME_TOOL_BAR_LINES (f) == 0)
     {
-      updating_frame = f;
-      clear_frame ();
+      clear_frame (f);
       clear_current_matrices (f);
-      updating_frame = NULL;
     }
 
   /* If the tool bar gets smaller, the internal border below it
@@ -2229,8 +2242,10 @@ XParseGeometry (string, x, y, width, height)
 /* Create and set up the Mac window for frame F.  */
 
 static void
-mac_window (f)
+mac_window (f, window_prompting, minibuffer_only)
      struct frame *f;
+     long window_prompting;
+     int minibuffer_only;
 {
   Rect r;
 
@@ -2255,11 +2270,11 @@ mac_window (f)
          FRAME_MAC_WINDOW (f) = NULL;
        }
     }
-#else
+#else  /* !TARGET_API_MAC_CARBON */
   FRAME_MAC_WINDOW (f)
     = NewCWindow (NULL, &r, "\p", false, zoomDocProc,
-                 (WindowPtr) -1, 1, (long) f->output_data.mac);
-#endif
+                 (WindowRef) -1, 1, (long) f->output_data.mac);
+#endif  /* !TARGET_API_MAC_CARBON */
   /* so that update events can find this mac_output struct */
   f->output_data.mac->mFP = f;  /* point back to emacs frame */
 
@@ -2279,6 +2294,16 @@ mac_window (f)
     XSetWindowBackground (FRAME_MAC_DISPLAY(f), FRAME_MAC_WINDOW (f),
                          FRAME_BACKGROUND_PIXEL (f));
 
+#if USE_MAC_TOOLBAR
+  /* At the moment, the size of the tool bar is not yet known.  We
+     record the gravity value of the newly created window and use it
+     to adjust the position of the window (especially for a negative
+     specification of its vertical position) when the tool bar is
+     first redisplayed.  */
+  if (FRAME_EXTERNAL_TOOL_BAR (f))
+    f->output_data.mac->toolbar_win_gravity = f->win_gravity;
+#endif
+
   validate_x_resource_name ();
 
   /* x_set_name normally ignores requests to set the name if the
@@ -2393,8 +2418,8 @@ x_make_gc (f)
     = (XCreatePixmapFromBitmapData
        (FRAME_X_DISPLAY (f), FRAME_X_DISPLAY_INFO (f)->root_window,
        gray_bits, gray_width, gray_height,
-       f->output_data.x->foreground_pixel,
-       f->output_data.x->background_pixel,
+       FRAME_FOREGROUND_PIXEL (f),
+       FRAME_BACKGROUND_PIXEL (f),
        DefaultDepth (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f))));
 #endif
 
@@ -2489,15 +2514,15 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
        1, 1, 0,
        doc: /* Make a new window, which is called a "frame" in Emacs terms.
 Returns an Emacs frame object.
-ALIST is an alist of frame parameters.
+PARAMETERS is an alist of frame parameters.
 If the parameters specify that the frame should not have a minibuffer,
 and do not specify a specific minibuffer window to use,
 then `default-minibuffer-frame' must be a frame whose minibuffer can
 be shared by the new frame.
 
 This function is an internal primitive--use `make-frame' instead.  */)
-     (parms)
-     Lisp_Object parms;
+     (parameters)
+     Lisp_Object parameters;
 {
   struct frame *f;
   Lisp_Object frame, tem;
@@ -2514,23 +2539,21 @@ This function is an internal primitive--use `make-frame' instead.  */)
 
   check_mac ();
 
-  parms = Fcopy_alist (parms);
-
   /* Use this general default value to start with
      until we know if this frame has a specified name.  */
   Vx_resource_name = Vinvocation_name;
 
-  display = mac_get_arg (parms, Qdisplay, 0, 0, RES_TYPE_STRING);
+  display = mac_get_arg (parameters, Qdisplay, 0, 0, RES_TYPE_STRING);
   if (EQ (display, Qunbound))
     display = Qnil;
   dpyinfo = check_x_display_info (display);
 #ifdef MULTI_KBOARD
-  kb = dpyinfo->kboard;
+  kb = dpyinfo->terminal->kboard;
 #else
   kb = &the_only_kboard;
 #endif
 
-  name = mac_get_arg (parms, Qname, "name", "Name", RES_TYPE_STRING);
+  name = mac_get_arg (parameters, Qname, "name", "Name", RES_TYPE_STRING);
   if (!STRINGP (name)
       && ! EQ (name, Qunbound)
       && ! NILP (name))
@@ -2540,7 +2563,7 @@ This function is an internal primitive--use `make-frame' instead.  */)
     Vx_resource_name = name;
 
   /* See if parent window is specified.  */
-  parent = mac_get_arg (parms, Qparent_id, NULL, NULL, RES_TYPE_NUMBER);
+  parent = mac_get_arg (parameters, Qparent_id, NULL, NULL, RES_TYPE_NUMBER);
   if (EQ (parent, Qunbound))
     parent = Qnil;
   if (! NILP (parent))
@@ -2550,8 +2573,8 @@ This function is an internal primitive--use `make-frame' instead.  */)
   /* No need to protect DISPLAY because that's not used after passing
      it to make_frame_without_minibuffer.  */
   frame = Qnil;
-  GCPRO4 (parms, parent, name, frame);
-  tem = mac_get_arg (parms, Qminibuffer, "minibuffer", "Minibuffer",
+  GCPRO4 (parameters, parent, name, frame);
+  tem = mac_get_arg (parameters, Qminibuffer, "minibuffer", "Minibuffer",
                     RES_TYPE_SYMBOL);
   if (EQ (tem, Qnone) || NILP (tem))
     f = make_frame_without_minibuffer (Qnil, kb, display);
@@ -2570,20 +2593,24 @@ This function is an internal primitive--use `make-frame' instead.  */)
   /* Note that X Windows does support scroll bars.  */
   FRAME_CAN_HAVE_SCROLL_BARS (f) = 1;
 
+  f->terminal = dpyinfo->terminal;
+  f->terminal->reference_count++;
+
   f->output_method = output_mac;
   f->output_data.mac = (struct mac_output *) xmalloc (sizeof (struct mac_output));
   bzero (f->output_data.mac, sizeof (struct mac_output));
   FRAME_FONTSET (f) = -1;
+  record_unwind_protect (unwind_create_frame, frame);
 
   f->icon_name
-    = mac_get_arg (parms, Qicon_name, "iconName", "Title", RES_TYPE_STRING);
+    = mac_get_arg (parameters, Qicon_name, "iconName", "Title", RES_TYPE_STRING);
   if (! STRINGP (f->icon_name))
     f->icon_name = Qnil;
 
-/*   FRAME_MAC_DISPLAY_INFO (f) = dpyinfo; */
+  /* XXX Is this needed? */
+  /*FRAME_MAC_DISPLAY_INFO (f) = dpyinfo;*/
 
   /* With FRAME_MAC_DISPLAY_INFO set up, this unwind-protect is safe.  */
-  record_unwind_protect (unwind_create_frame, frame);
 #if GLYPH_DEBUG
   image_cache_refcount = FRAME_X_IMAGE_CACHE (f)->refcount;
   dpyinfo_refcount = dpyinfo->reference_count;
@@ -2625,7 +2652,7 @@ This function is an internal primitive--use `make-frame' instead.  */)
   {
     Lisp_Object font;
 
-    font = mac_get_arg (parms, Qfont, "font", "Font", RES_TYPE_STRING);
+    font = mac_get_arg (parameters, Qfont, "font", "Font", RES_TYPE_STRING);
 
     BLOCK_INPUT;
     /* First, try whatever font the caller has specified.  */
@@ -2637,7 +2664,6 @@ This function is an internal primitive--use `make-frame' instead.  */)
        else
          font = x_new_font (f, SDATA (font));
       }
-
     /* Try out a font which we hope has bold and italic variations.  */
 #if USE_ATSUI
     if (! STRINGP (font))
@@ -2656,48 +2682,50 @@ This function is an internal primitive--use `make-frame' instead.  */)
       error ("Cannot find any usable font");
     UNBLOCK_INPUT;
 
-    x_set_frame_parameters (f, Fcons (Fcons (Qfont, font), Qnil));
+    x_default_parameter (f, parameters, Qfont, font,
+                        "font", "Font", RES_TYPE_STRING);
   }
 
-  x_default_parameter (f, parms, Qborder_width, make_number (0),
+  /* XXX Shouldn't this be borderWidth,  not borderwidth ?*/
+  x_default_parameter (f, parameters, Qborder_width, make_number (0),
                       "borderwidth", "BorderWidth", RES_TYPE_NUMBER);
   /* This defaults to 2 in order to match xterm.  We recognize either
      internalBorderWidth or internalBorder (which is what xterm calls
      it).  */
-  if (NILP (Fassq (Qinternal_border_width, parms)))
+  if (NILP (Fassq (Qinternal_border_width, parameters)))
     {
       Lisp_Object value;
 
-      value = mac_get_arg (parms, Qinternal_border_width,
+      value = mac_get_arg (parameters, Qinternal_border_width,
                         "internalBorder", "InternalBorder", RES_TYPE_NUMBER);
       if (! EQ (value, Qunbound))
-       parms = Fcons (Fcons (Qinternal_border_width, value),
-                      parms);
+       parameters = Fcons (Fcons (Qinternal_border_width, value),
+                            parameters);
     }
   /* Default internalBorderWidth to 0 on Windows to match other programs.  */
-  x_default_parameter (f, parms, Qinternal_border_width, make_number (0),
+  x_default_parameter (f, parameters, Qinternal_border_width, make_number (0),
                       "internalBorderWidth", "InternalBorder", RES_TYPE_NUMBER);
-  x_default_parameter (f, parms, Qvertical_scroll_bars, Qright,
+  x_default_parameter (f, parameters, Qvertical_scroll_bars, Qright,
                       "verticalScrollBars", "ScrollBars", RES_TYPE_SYMBOL);
 
   /* Also do the stuff which must be set before the window exists.  */
-  x_default_parameter (f, parms, Qforeground_color, build_string ("black"),
+  x_default_parameter (f, parameters, Qforeground_color, build_string ("black"),
                       "foreground", "Foreground", RES_TYPE_STRING);
-  x_default_parameter (f, parms, Qbackground_color, build_string ("white"),
+  x_default_parameter (f, parameters, Qbackground_color, build_string ("white"),
                       "background", "Background", RES_TYPE_STRING);
-  x_default_parameter (f, parms, Qmouse_color, build_string ("black"),
+  x_default_parameter (f, parameters, Qmouse_color, build_string ("black"),
                       "pointerColor", "Foreground", RES_TYPE_STRING);
-  x_default_parameter (f, parms, Qcursor_color, build_string ("black"),
+  x_default_parameter (f, parameters, Qcursor_color, build_string ("black"),
                       "cursorColor", "Foreground", RES_TYPE_STRING);
-  x_default_parameter (f, parms, Qborder_color, build_string ("black"),
+  x_default_parameter (f, parameters, Qborder_color, build_string ("black"),
                       "borderColor", "BorderColor", RES_TYPE_STRING);
-  x_default_parameter (f, parms, Qscreen_gamma, Qnil,
+  x_default_parameter (f, parameters, Qscreen_gamma, Qnil,
                       "screenGamma", "ScreenGamma", RES_TYPE_FLOAT);
-  x_default_parameter (f, parms, Qline_spacing, Qnil,
+  x_default_parameter (f, parameters, Qline_spacing, Qnil,
                       "lineSpacing", "LineSpacing", RES_TYPE_NUMBER);
-  x_default_parameter (f, parms, Qleft_fringe, Qnil,
+  x_default_parameter (f, parameters, Qleft_fringe, Qnil,
                       "leftFringe", "LeftFringe", RES_TYPE_NUMBER);
-  x_default_parameter (f, parms, Qright_fringe, Qnil,
+  x_default_parameter (f, parameters, Qright_fringe, Qnil,
                       "rightFringe", "RightFringe", RES_TYPE_NUMBER);
 
 
@@ -2709,29 +2737,29 @@ This function is an internal primitive--use `make-frame' instead.  */)
      happen.  */
   init_frame_faces (f);
 
-  x_default_parameter (f, parms, Qmenu_bar_lines, make_number (1),
+  x_default_parameter (f, parameters, Qmenu_bar_lines, make_number (1),
                       "menuBar", "MenuBar", RES_TYPE_NUMBER);
-  x_default_parameter (f, parms, Qtool_bar_lines, make_number (1),
-                      "toolBar", "ToolBar", RES_TYPE_NUMBER);
-  x_default_parameter (f, parms, Qbuffer_predicate, Qnil,
-                      "bufferPredicate", "BufferPredicate",
-                      RES_TYPE_SYMBOL);
-  x_default_parameter (f, parms, Qtitle, Qnil,
+  x_default_parameter (f, parameters, Qtool_bar_lines, make_number (1),
+                       "toolBar", "ToolBar", RES_TYPE_NUMBER);
+
+  x_default_parameter (f, parameters, Qbuffer_predicate, Qnil,
+                      "bufferPredicate", "BufferPredicate", RES_TYPE_SYMBOL);
+  x_default_parameter (f, parameters, Qtitle, Qnil,
                       "title", "Title", RES_TYPE_STRING);
-  x_default_parameter (f, parms, Qfullscreen, Qnil,
+  x_default_parameter (f, parameters, Qfullscreen, Qnil,
                        "fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
 
   f->output_data.mac->parent_desc = FRAME_MAC_DISPLAY_INFO (f)->root_window;
 
   /* Compute the size of the window.  */
-  window_prompting = x_figure_window_size (f, parms, 1);
+  window_prompting = x_figure_window_size (f, parameters, 1);
 
-  tem = mac_get_arg (parms, Qunsplittable, 0, 0, RES_TYPE_BOOLEAN);
+  tem = mac_get_arg (parameters, Qunsplittable, 0, 0, RES_TYPE_BOOLEAN);
   f->no_split = minibuffer_only || EQ (tem, Qt);
 
-  mac_window (f);
+  mac_window (f, window_prompting, minibuffer_only);
+  x_icon (f, parameters);
 
-  x_icon (f, parms);
   x_make_gc (f);
 
   /* Now consider the frame official.  */
@@ -2740,18 +2768,17 @@ This function is an internal primitive--use `make-frame' instead.  */)
 
   /* We need to do this after creating the window, so that the
      icon-creation functions can say whose icon they're describing.  */
-  x_default_parameter (f, parms, Qicon_type, Qnil,
+  x_default_parameter (f, parameters, Qicon_type, Qnil,
                       "bitmapIcon", "BitmapIcon", RES_TYPE_SYMBOL);
 
-  x_default_parameter (f, parms, Qauto_raise, Qnil,
+  x_default_parameter (f, parameters, Qauto_raise, Qnil,
                       "autoRaise", "AutoRaiseLower", RES_TYPE_BOOLEAN);
-  x_default_parameter (f, parms, Qauto_lower, Qnil,
+  x_default_parameter (f, parameters, Qauto_lower, Qnil,
                       "autoLower", "AutoRaiseLower", RES_TYPE_BOOLEAN);
-  x_default_parameter (f, parms, Qcursor_type, Qbox,
+  x_default_parameter (f, parameters, Qcursor_type, Qbox,
                       "cursorType", "CursorType", RES_TYPE_SYMBOL);
-  x_default_parameter (f, parms, Qscroll_bar_width, Qnil,
-                      "scrollBarWidth", "ScrollBarWidth",
-                      RES_TYPE_NUMBER);
+  x_default_parameter (f, parameters, Qscroll_bar_width, Qnil,
+                      "scrollBarWidth", "ScrollBarWidth", RES_TYPE_NUMBER);
 
   /* Dimensions, especially FRAME_LINES (f), must be done via change_frame_size.
      Change will not be effected unless different from the current
@@ -2759,8 +2786,8 @@ This function is an internal primitive--use `make-frame' instead.  */)
   width = FRAME_COLS (f);
   height = FRAME_LINES (f);
 
-  SET_FRAME_COLS (f, 0);
   FRAME_LINES (f) = 0;
+  SET_FRAME_COLS (f, 0);
   change_frame_size (f, height, width, 1, 0, 0);
 
   /* Tell the server what size and position, etc, we want, and how
@@ -2777,7 +2804,7 @@ This function is an internal primitive--use `make-frame' instead.  */)
     {
       Lisp_Object visibility;
 
-      visibility = mac_get_arg (parms, Qvisibility, 0, 0, RES_TYPE_SYMBOL);
+      visibility = mac_get_arg (parameters, Qvisibility, 0, 0, RES_TYPE_SYMBOL);
       if (EQ (visibility, Qunbound))
        visibility = Qt;
 
@@ -2799,10 +2826,12 @@ This function is an internal primitive--use `make-frame' instead.  */)
 
   /* All remaining specified parameters, which have not been "used"
      by x_get_arg and friends, now go in the misc. alist of the frame.  */
-  for (tem = parms; !NILP (tem); tem = XCDR (tem))
+  for (tem = parameters; !NILP (tem); tem = XCDR (tem))
     if (CONSP (XCAR (tem)) && !NILP (XCAR (XCAR (tem))))
       f->param_alist = Fcons (XCAR (tem), f->param_alist);
 
+  store_frame_param (f, Qwindow_system, Qmac);
+  
   UNGCPRO;
 
   /* Make sure windows on this frame appear in calls to next-window
@@ -3112,7 +3141,7 @@ If omitted or nil, that stands for the selected frame's display.  */)
       UNBLOCK_INPUT;
     }
 #if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
-  else
+  else                         /* CGDisplayScreenSize == NULL */
 #endif
 #endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030  */
 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
@@ -3149,7 +3178,7 @@ If omitted or nil, that stands for the selected frame's display.  */)
       UNBLOCK_INPUT;
     }
 #if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
-  else
+  else                         /* CGDisplayScreenSize == NULL */
 #endif
 #endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030  */
 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
@@ -3265,9 +3294,6 @@ x_display_info_for_name (name)
 
   CHECK_STRING (name);
 
-  if (! EQ (Vwindow_system, intern ("mac")))
-    error ("Not using Mac native windows");
-
   for (dpyinfo = &one_mac_display_info, names = x_display_name_list;
        dpyinfo;
        dpyinfo = dpyinfo->next, names = XCDR (names))
@@ -3312,9 +3338,6 @@ terminate Emacs if we can't open the connection.  */)
   if (! NILP (xrm_string))
     CHECK_STRING (xrm_string);
 
-  if (! EQ (Vwindow_system, intern ("mac")))
-    error ("Not using Mac native windows");
-
   if (! NILP (xrm_string))
     xrm_option = (unsigned char *) SDATA (xrm_string);
   else
@@ -3577,10 +3600,6 @@ start_hourglass ()
   EMACS_TIME delay;
   int secs, usecs = 0;
 
-  /* Don't bother for ttys.  */
-  if (NILP (Vwindow_system))
-    return;
-
   cancel_hourglass ();
 
   if (INTEGERP (Vhourglass_delay)
@@ -3793,7 +3812,7 @@ x_create_tip_frame (dpyinfo, parms, text)
   parms = Fcopy_alist (parms);
 
 #ifdef MULTI_KBOARD
-  kb = dpyinfo->kboard;
+  kb = dpyinfo->terminal->kboard;
 #else
   kb = &the_only_kboard;
 #endif
@@ -3828,6 +3847,8 @@ x_create_tip_frame (dpyinfo, parms, text)
      the frame is live, as per FRAME_LIVE_P.  If we get a signal
      from this point on, x_destroy_window might screw up reference
      counts etc.  */
+  f->terminal = dpyinfo->terminal;
+  f->terminal->reference_count++;
   f->output_method = output_mac;
   f->output_data.mac =
     (struct mac_output *) xmalloc (sizeof (struct mac_output));
@@ -4068,8 +4089,12 @@ compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y)
       Point mouse_pos;
 
       BLOCK_INPUT;
+#if TARGET_API_MAC_CARBON
+      GetGlobalMouse (&mouse_pos);
+#else
       GetMouse (&mouse_pos);
       LocalToGlobal (&mouse_pos);
+#endif
       *root_x = mouse_pos.h;
       *root_y = mouse_pos.v;
       UNBLOCK_INPUT;
index 04f48b087a69bbb828fb65f0e1652fc21ae55ddb..7a65e583b1be6d4f0313cb4cc0d7d38c12447d03 100644 (file)
@@ -71,7 +71,7 @@ typedef unsigned long Time;
 #undef Z
 #define Z (current_buffer->text->z)
 #else /* not HAVE_CARBON */
-#include <QuickDraw.h>         /* for WindowPtr */
+#include <QuickDraw.h>         /* for WindowRef */
 #include <QDOffscreen.h>       /* for GWorldPtr */
 #include <Appearance.h>                /* for ThemeCursor */
 #include <Windows.h>
@@ -98,7 +98,7 @@ typedef unsigned long Time;
 /* Whether to use Quartz 2D routines for drawing operations other than
    texts.  */
 #ifndef USE_CG_DRAWING
-#if USE_ATSUI && MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
 #define USE_CG_DRAWING 1
 #endif
 #endif
@@ -117,7 +117,14 @@ typedef unsigned long Time;
 #endif
 #endif
 
-typedef WindowPtr Window;
+/* Whether to use HIToolbar.  */
+#ifndef USE_MAC_TOOLBAR
+#if USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 && MAC_OS_X_VERSION_MIN_REQUIRED != 1020
+#define USE_MAC_TOOLBAR 1
+#endif
+#endif
+
+typedef WindowRef Window;
 typedef GWorldPtr Pixmap;
 
 #define Cursor ThemeCursor
index b8cfd6a4d2fa8c5c82a8fe2e7110383bb6b83c3b..aa0be0bdc2e956014c245f7c98ff8425d4851f8b 100644 (file)
@@ -26,10 +26,10 @@ Boston, MA 02110-1301, USA.  */
 #include <stdio.h>
 
 #include "lisp.h"
+#include "frame.h"
 #include "termhooks.h"
 #include "keyboard.h"
 #include "keymap.h"
-#include "frame.h"
 #include "window.h"
 #include "blockinput.h"
 #include "buffer.h"
@@ -200,7 +200,7 @@ static void list_of_items P_ ((Lisp_Object));
 
 static void find_and_call_menu_selection P_ ((FRAME_PTR, int, Lisp_Object,
                                              void *));
-static int fill_menu P_ ((MenuHandle, widget_value *, enum mac_menu_kind, int));
+static int fill_menu P_ ((MenuRef, widget_value *, enum mac_menu_kind, int));
 static void fill_menubar P_ ((widget_value *, int));
 static void dispose_menus P_ ((enum mac_menu_kind, int));
 
@@ -347,15 +347,8 @@ save_menu_items ()
 static void
 grow_menu_items ()
 {
-  Lisp_Object old;
-  int old_size = menu_items_allocated;
-  old = menu_items;
-
   menu_items_allocated *= 2;
-
-  menu_items = Fmake_vector (make_number (menu_items_allocated), Qnil);
-  bcopy (XVECTOR (old)->contents, XVECTOR (menu_items)->contents,
-        old_size * sizeof (Lisp_Object));
+  menu_items = larger_vector (menu_items, menu_items_allocated, Qnil);
 }
 
 /* Begin a submenu.  */
@@ -720,8 +713,8 @@ no quit occurs and `x-popup-menu' returns nil.  */)
          enum scroll_bar_part part;
          unsigned long time;
 
-         if (mouse_position_hook)
-           (*mouse_position_hook) (&new_f, 1, &bar_window,
+         if (FRAME_TERMINAL (new_f)->mouse_position_hook)
+           (*FRAME_TERMINAL (new_f)->mouse_position_hook) (&new_f, 1, &bar_window,
                                    &part, &x, &y, &time);
          if (new_f != 0)
            XSETFRAME (window, new_f);
@@ -882,7 +875,7 @@ no quit occurs and `x-popup-menu' returns nil.  */)
 
 /* Regard ESC and C-g as Cancel even without the Cancel button.  */
 
-#ifdef MAC_OSX
+#if 0 /* defined (MAC_OSX) */
 static Boolean
 mac_dialog_modal_filter (dialog, event, item_hit)
      DialogRef dialog;
@@ -991,7 +984,7 @@ for instance using the window manager, then this produces a quit and
        but I don't want to make one now.  */
     CHECK_WINDOW (window);
 
-#ifdef MAC_OSX
+#if 0 /* defined (MAC_OSX) */
   /* Special treatment for Fmessage_box, Fyes_or_no_p, and Fy_or_n_p.  */
   if (EQ (position, Qt)
       && STRINGP (Fcar (contents))
@@ -1162,7 +1155,7 @@ x_activate_menubar (f)
 #endif
     if (menu_id)
       {
-        MenuHandle menu = GetMenuHandle (menu_id);
+        MenuRef menu = GetMenuRef (menu_id);
 
         if (menu)
           {
@@ -1595,14 +1588,16 @@ menu_target_item_handler (next_handler, event, data)
      EventRef event;
      void *data;
 {
-  OSStatus err, result;
+  OSStatus err;
   MenuRef menu;
   MenuItemIndex menu_item;
   Lisp_Object help;
   GrafPtr port;
   int specpdl_count = SPECPDL_INDEX ();
 
-  result = CallNextEventHandler (next_handler, event);
+  /* Don't be bothered with the overflowed toolbar items menu.  */
+  if (!popup_activated ())
+    return eventNotHandledErr;
 
   err = GetEventParameter (event, kEventParamDirectObject, typeMenuRef,
                           NULL, sizeof (MenuRef), NULL, &menu);
@@ -1626,30 +1621,21 @@ menu_target_item_handler (next_handler, event, data)
   SetPort (port);
   unbind_to (specpdl_count, Qnil);
 
-  return err == noErr ? noErr : result;
+  return err == noErr ? noErr : eventNotHandledErr;
 }
-#endif
 
 OSStatus
-install_menu_target_item_handler (window)
-     WindowPtr window;
+install_menu_target_item_handler ()
 {
-  OSStatus err = noErr;
-#if TARGET_API_MAC_CARBON
   static const EventTypeSpec specs[] =
     {{kEventClassMenu, kEventMenuTargetItem}};
-  static EventHandlerUPP menu_target_item_handlerUPP = NULL;
-
-  if (menu_target_item_handlerUPP == NULL)
-    menu_target_item_handlerUPP =
-      NewEventHandlerUPP (menu_target_item_handler);
 
-  err = InstallWindowEventHandler (window, menu_target_item_handlerUPP,
-                                  GetEventTypeCount (specs), specs,
-                                  NULL, NULL);
-#endif
-  return err;
+  return InstallApplicationEventHandler (NewEventHandlerUPP
+                                        (menu_target_item_handler),
+                                        GetEventTypeCount (specs),
+                                        specs, NULL, NULL);
 }
+#endif  /* TARGET_API_MAC_CARBON */
 
 /* Event handler function that pops down a menu on C-g.  We can only pop
    down menus if CancelMenuTracking is present (OSX 10.3 or later).  */
@@ -1687,15 +1673,15 @@ menu_quit_handler (nextHandler, theEvent, userData)
 }
 #endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
 
-/* Add event handler to all menus that belong to KIND so we can detect C-g.
-   MENU_HANDLE is the root menu of the tracking session to dismiss
-   when C-g is detected.  NULL means the menu bar.
-   If CancelMenuTracking isn't available, do nothing.  */
+/* Add event handler to all menus that belong to KIND so we can detect
+   C-g.  ROOT_MENU is the root menu of the tracking session to dismiss
+   when C-g is detected.  NULL means the menu bar.  If
+   CancelMenuTracking isn't available, do nothing.  */
 
 static void
-install_menu_quit_handler (kind, menu_handle)
+install_menu_quit_handler (kind, root_menu)
      enum mac_menu_kind kind;
-     MenuHandle menu_handle;
+     MenuRef root_menu;
 {
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
   static const EventTypeSpec typesList[] =
@@ -1708,13 +1694,13 @@ install_menu_quit_handler (kind, menu_handle)
 #endif
   for (id = min_menu_id[kind]; id < min_menu_id[kind + 1]; id++)
     {
-      MenuHandle menu = GetMenuHandle (id);
+      MenuRef menu = GetMenuRef (id);
 
       if (menu == NULL)
        break;
       InstallMenuEventHandler (menu, menu_quit_handler,
                               GetEventTypeCount (typesList),
-                              typesList, menu_handle, NULL);
+                              typesList, root_menu, NULL);
     }
 #endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
 }
@@ -1738,10 +1724,13 @@ set_frame_menubar (f, first_time, deep_p)
 
   XSETFRAME (Vmenu_updating_frame, f);
 
+  /* This seems to be unnecessary for Carbon.  */
+#if 0
   if (! menubar_widget)
     deep_p = 1;
   else if (pending_menu_activation && !deep_p)
     deep_p = 1;
+#endif
 
   if (deep_p)
     {
@@ -1978,7 +1967,7 @@ pop_down_menu (arg)
 {
   struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
   FRAME_PTR f = p->pointer;
-  MenuHandle menu = GetMenuHandle (min_menu_id[MAC_MENU_POPUP]);
+  MenuRef menu = GetMenuRef (min_menu_id[MAC_MENU_POPUP]);
 
   BLOCK_INPUT;
 
@@ -2024,8 +2013,7 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
   int i;
   int menu_item_choice;
   UInt32 menu_item_selection;
-  MenuHandle menu;
-  Point pos;
+  MenuRef menu;
   widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0;
   widget_value **submenu_stack
     = (widget_value **) alloca (menu_items_used * sizeof (widget_value *));
@@ -2231,11 +2219,8 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
   free_menubar_widget_value_tree (first_wv);
 
   /* Adjust coordinates to be root-window-relative.  */
-  pos.h = x;
-  pos.v = y;
-
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-  LocalToGlobal (&pos);
+  x += f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f);
+  y += f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f);
 
   /* No selection has been chosen yet.  */
   menu_item_selection = 0;
@@ -2248,13 +2233,13 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
 
   /* Display the menu.  */
   popup_activated_flag = 1;
-  menu_item_choice = PopUpMenuSelect (menu, pos.v, pos.h, 0);
+  menu_item_choice = PopUpMenuSelect (menu, y, x, 0);
   popup_activated_flag = 0;
 
   /* Get the refcon to find the correct item */
   if (menu_item_choice)
     {
-      MenuHandle sel_menu = GetMenuHandle (HiWord (menu_item_choice));
+      MenuRef sel_menu = GetMenuRef (HiWord (menu_item_choice));
 
       if (sel_menu)
        GetMenuItemRefCon (sel_menu, LoWord (menu_item_choice),
@@ -2330,13 +2315,24 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
 
 #if TARGET_API_MAC_CARBON
 
+#define DIALOG_BUTTON_COMMAND_ID_OFFSET 'Bt\0\0'
+#define DIALOG_BUTTON_COMMAND_ID_P(id)                 \
+  (((id) & ~0xffff) == DIALOG_BUTTON_COMMAND_ID_OFFSET)
+#define DIALOG_BUTTON_COMMAND_ID_VALUE(id)     \
+  ((id) - DIALOG_BUTTON_COMMAND_ID_OFFSET)
+#define DIALOG_BUTTON_MAKE_COMMAND_ID(value)   \
+  ((value) + DIALOG_BUTTON_COMMAND_ID_OFFSET)
+
+extern EMACS_TIME timer_check P_ ((int));
+static int quit_dialog_event_loop;
+
 static pascal OSStatus
 mac_handle_dialog_event (next_handler, event, data)
      EventHandlerCallRef next_handler;
      EventRef event;
      void *data;
 {
-  OSStatus err;
+  OSStatus err, result = eventNotHandledErr;
   WindowRef window = (WindowRef) data;
 
   switch (GetEventClass (event))
@@ -2349,15 +2345,14 @@ mac_handle_dialog_event (next_handler, event, data)
                                 typeHICommand, NULL, sizeof (HICommand),
                                 NULL, &command);
        if (err == noErr)
-         if ((command.commandID & ~0xffff) == 'Bt\0\0')
+         if (DIALOG_BUTTON_COMMAND_ID_P (command.commandID))
            {
              SetWRefCon (window, command.commandID);
-             err = QuitAppModalLoopForWindow (window);
-
-             return err == noErr ? noErr : eventNotHandledErr;
+             quit_dialog_event_loop = 1;
+             break;
            }
 
-       return CallNextEventHandler (next_handler, event);
+       result = CallNextEventHandler (next_handler, event);
       }
       break;
 
@@ -2367,8 +2362,8 @@ mac_handle_dialog_event (next_handler, event, data)
        char char_code;
 
        result = CallNextEventHandler (next_handler, event);
-       if (result == noErr)
-         return noErr;
+       if (result != eventNotHandledErr)
+         break;
 
        err = GetEventParameter (event, kEventParamKeyMacCharCodes,
                                 typeChar, NULL, sizeof (char),
@@ -2377,7 +2372,7 @@ mac_handle_dialog_event (next_handler, event, data)
          switch (char_code)
            {
            case kEscapeCharCode:
-             err = QuitAppModalLoopForWindow (window);
+             quit_dialog_event_loop = 1;
              break;
 
            default:
@@ -2392,23 +2387,26 @@ mac_handle_dialog_event (next_handler, event, data)
                                           typeUInt32, NULL, sizeof (UInt32),
                                           NULL, &key_code);
                if (err == noErr)
-                 {
-                   if (mac_quit_char_key_p (modifiers, key_code))
-                     err = QuitAppModalLoopForWindow (window);
-                   else
-                     err = eventNotHandledErr;
-                 }
+                 if (mac_quit_char_key_p (modifiers, key_code))
+                   quit_dialog_event_loop = 1;
              }
              break;
            }
-
-       return err == noErr ? noErr : result;
       }
       break;
 
     default:
       abort ();
     }
+
+  if (quit_dialog_event_loop)
+    {
+      err = QuitEventLoop (GetCurrentEventLoop ());
+      if (err == noErr)
+       result = noErr;
+    }
+
+  return result;
 }
 
 static OSStatus
@@ -2443,6 +2441,25 @@ install_dialog_event_handler (window)
 #define DIALOG_ICON_LEFT_MARGIN (24)
 #define DIALOG_ICON_TOP_MARGIN (15)
 
+static Lisp_Object
+pop_down_dialog (arg)
+     Lisp_Object arg;
+{
+  struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
+  WindowRef window = p->pointer;
+
+  BLOCK_INPUT;
+
+  if (popup_activated_flag)
+    EndAppModalStateForWindow (window);
+  DisposeWindow (window);
+  popup_activated_flag = 0;
+
+  UNBLOCK_INPUT;
+
+  return Qnil;
+}
+
 static int
 create_and_show_dialog (f, first_wv)
      FRAME_PTR f;
@@ -2456,6 +2473,7 @@ create_and_show_dialog (f, first_wv)
   Rect empty_rect, *rects;
   WindowRef window = NULL;
   ControlRef *buttons, default_button = NULL, text;
+  int specpdl_count = SPECPDL_INDEX ();
 
   dialog_name = first_wv->name;
   nb_buttons = dialog_name[1] - '0';
@@ -2472,8 +2490,11 @@ create_and_show_dialog (f, first_wv)
                         kWindowStandardHandlerAttribute,
                         &empty_rect, &window);
   if (err == noErr)
-    err = SetThemeWindowBackground (window, kThemeBrushMovableModalBackground,
-                                   true);
+    {
+      record_unwind_protect (pop_down_dialog, make_save_value (window, 0));
+      err = SetThemeWindowBackground (window, kThemeBrushMovableModalBackground,
+                                     true);
+    }
   if (err == noErr)
     err = SetWindowTitleWithCFString (window, (dialog_name[0] == 'Q'
                                               ? CFSTR ("Question")
@@ -2518,14 +2539,16 @@ create_and_show_dialog (f, first_wv)
            }
          if (err == noErr)
            {
+             UInt32 command_id;
+
              OffsetRect (&rects[i], -rects[i].left, -rects[i].top);
              if (rects[i].right < DIALOG_BUTTON_MIN_WIDTH)
                rects[i].right = DIALOG_BUTTON_MIN_WIDTH;
              else if (rects[i].right > DIALOG_MAX_INNER_WIDTH)
                rects[i].right = DIALOG_MAX_INNER_WIDTH;
 
-             err = SetControlCommandID (buttons[i],
-                                        'Bt\0\0' + (int) wv->call_data);
+             command_id = DIALOG_BUTTON_MAKE_COMMAND_ID ((int) wv->call_data);
+             err = SetControlCommandID (buttons[i], command_id);
            }
          if (err != noErr)
            break;
@@ -2696,18 +2719,66 @@ create_and_show_dialog (f, first_wv)
       SetWRefCon (window, 0);
       ShowWindow (window);
       BringToFront (window);
-      err = RunAppModalLoopForWindow (window);
+      popup_activated_flag = 1;
+      err = BeginAppModalStateForWindow (window);
+    }
+  if (err == noErr)
+    {
+      EventTargetRef toolbox_dispatcher = GetEventDispatcherTarget ();
+
+      quit_dialog_event_loop = 0;
+      while (1)
+       {
+         EMACS_TIME next_time = timer_check (1);
+         long secs = EMACS_SECS (next_time);
+         long usecs = EMACS_USECS (next_time);
+         EventTimeout timeout;
+         EventRef event;
+
+         if (secs < 0 || (secs == 0 && usecs == 0))
+           {
+             /* Sometimes timer_check returns -1 (no timers) even if
+                there are timers.  So do a timeout anyway.  */
+             secs = 1;
+             usecs = 0;
+           }
+
+         timeout = (secs * kEventDurationSecond
+                    + usecs * kEventDurationMicrosecond);
+         err = ReceiveNextEvent (0, NULL, timeout, kEventRemoveFromQueue,
+                                 &event);
+         if (err == noErr)
+           {
+             SendEventToEventTarget (event, toolbox_dispatcher);
+             ReleaseEvent (event);
+           }
+#ifdef MAC_OSX
+         else if (err != eventLoopTimedOutErr)
+           {
+             if (err == eventLoopQuitErr)
+               err = noErr;
+             break;
+           }
+#else
+         /* The return value of ReceiveNextEvent seems to be
+            unreliable.  Use our own global variable instead.  */
+         if (quit_dialog_event_loop)
+           {
+             err = noErr;
+             break;
+           }
+#endif
+       }
     }
   if (err == noErr)
     {
       UInt32 command_id = GetWRefCon (window);
 
-      if ((command_id & ~0xffff) == 'Bt\0\0')
-       result = command_id - 'Bt\0\0';
+      if (DIALOG_BUTTON_COMMAND_ID_P (command_id))
+       result = DIALOG_BUTTON_COMMAND_ID_VALUE (command_id);
     }
 
-  if (window)
-    DisposeWindow (window);
+  unbind_to (specpdl_count, Qnil);
 
   return result;
 }
@@ -2724,8 +2795,8 @@ mac_dialog (widget_value *wv)
   int i;
   int dialog_width;
   Rect rect;
-  WindowPtr window_ptr;
-  ControlHandle ch;
+  WindowRef window_ptr;
+  ControlRef ch;
   int left;
   EventRecord event_record;
   SInt16 part_code;
@@ -2754,7 +2825,7 @@ mac_dialog (widget_value *wv)
       wv = wv->next;
     }
 
-  window_ptr = GetNewCWindow (DIALOG_WINDOW_RESOURCE, NULL, (WindowPtr) -1);
+  window_ptr = GetNewCWindow (DIALOG_WINDOW_RESOURCE, NULL, (WindowRef) -1);
 
   SetPortWindowPort (window_ptr);
 
@@ -3031,7 +3102,7 @@ name_is_separator (name)
 
 static void
 add_menu_item (menu, pos, wv)
-     MenuHandle menu;
+     MenuRef menu;
      int pos;
      widget_value *wv;
 {
@@ -3108,7 +3179,7 @@ add_menu_item (menu, pos, wv)
 
 static int
 fill_menu (menu, wv, kind, submenu_id)
-     MenuHandle menu;
+     MenuRef menu;
      widget_value *wv;
      enum mac_menu_kind kind;
      int submenu_id;
@@ -3120,7 +3191,7 @@ fill_menu (menu, wv, kind, submenu_id)
       add_menu_item (menu, pos, wv);
       if (wv->contents && submenu_id < min_menu_id[kind + 1])
        {
-         MenuHandle submenu = NewMenu (submenu_id, "\pX");
+         MenuRef submenu = NewMenu (submenu_id, "\pX");
 
          InsertMenu (submenu, -1);
          SetMenuItemHierarchicalID (menu, pos, submenu_id);
@@ -3139,8 +3210,6 @@ fill_menubar (wv, deep_p)
      int deep_p;
 {
   int id, submenu_id;
-  MenuHandle menu;
-  Str255 title;
 #if !TARGET_API_MAC_CARBON
   int title_changed_p = 0;
 #endif
@@ -3162,45 +3231,75 @@ fill_menubar (wv, deep_p)
        wv != NULL && id < min_menu_id[MAC_MENU_MENU_BAR + 1];
        wv = wv->next, id++)
     {
+      OSStatus err = noErr;
+      MenuRef menu;
+#if TARGET_API_MAC_CARBON
+      CFStringRef title;
+
+      title = CFStringCreateWithCString (NULL, wv->name,
+                                        kCFStringEncodingMacRoman);
+#else
+      Str255 title;
+
       strncpy (title, wv->name, 255);
       title[255] = '\0';
       c2pstr (title);
+#endif
 
-      menu = GetMenuHandle (id);
+      menu = GetMenuRef (id);
       if (menu)
        {
 #if TARGET_API_MAC_CARBON
-         Str255 old_title;
+         CFStringRef old_title;
 
-         GetMenuTitle (menu, old_title);
-         if (!EqualString (title, old_title, false, false))
-           SetMenuTitle (menu, title);
+         err = CopyMenuTitleAsCFString (menu, &old_title);
+         if (err == noErr)
+           {
+             if (CFStringCompare (title, old_title, 0) != kCFCompareEqualTo)
+               err = SetMenuTitleWithCFString (menu, title);
+             CFRelease (old_title);
+           }
+         else
+           err = SetMenuTitleWithCFString (menu, title);
 #else  /* !TARGET_API_MAC_CARBON */
          if (!EqualString (title, (*menu)->menuData, false, false))
            {
              DeleteMenu (id);
              DisposeMenu (menu);
              menu = NewMenu (id, title);
-             InsertMenu (menu, GetMenuHandle (id + 1) ? id + 1 : 0);
+             InsertMenu (menu, GetMenuRef (id + 1) ? id + 1 : 0);
              title_changed_p = 1;
            }
 #endif  /* !TARGET_API_MAC_CARBON */
        }
       else
        {
+#if TARGET_API_MAC_CARBON
+         err = CreateNewMenu (id, 0, &menu);
+         if (err == noErr)
+           err = SetMenuTitleWithCFString (menu, title);
+#else
          menu = NewMenu (id, title);
-         InsertMenu (menu, 0);
+#endif
+         if (err == noErr)
+           {
+             InsertMenu (menu, 0);
 #if !TARGET_API_MAC_CARBON
-         title_changed_p = 1;
+             title_changed_p = 1;
 #endif
+           }
        }
+#if TARGET_API_MAC_CARBON
+      CFRelease (title);
+#endif
 
-      if (wv->contents)
-        submenu_id = fill_menu (menu, wv->contents, MAC_MENU_MENU_BAR_SUB,
-                               submenu_id);
+      if (err == noErr)
+       if (wv->contents)
+         submenu_id = fill_menu (menu, wv->contents, MAC_MENU_MENU_BAR_SUB,
+                                 submenu_id);
     }
 
-  if (id < min_menu_id[MAC_MENU_MENU_BAR + 1] && GetMenuHandle (id))
+  if (id < min_menu_id[MAC_MENU_MENU_BAR + 1] && GetMenuRef (id))
     {
       dispose_menus (MAC_MENU_MENU_BAR, id);
 #if !TARGET_API_MAC_CARBON
@@ -3224,7 +3323,7 @@ dispose_menus (kind, id)
 {
   for (id = max (id, min_menu_id[kind]); id < min_menu_id[kind + 1]; id++)
     {
-      MenuHandle menu = GetMenuHandle (id);
+      MenuRef menu = GetMenuRef (id);
 
       if (menu == NULL)
        break;
@@ -3249,9 +3348,13 @@ DEFUN ("menu-or-popup-active-p", Fmenu_or_popup_active_p, Smenu_or_popup_active_
        doc: /* Return t if a menu or popup dialog is active.  */)
      ()
 {
+#if TARGET_API_MAC_CARBON
+  return (popup_activated ()) ? Qt : Qnil;
+#else
   /* Always return Qnil since menu selection functions do not return
      until a selection has been made or cancelled.  */
   return Qnil;
+#endif
 }
 \f
 void
index 5bd91a68582a9a4237317cc978466755dde6d705..9515a5774ec38428cf23239df5171406a724cb1b 100644 (file)
@@ -25,22 +25,27 @@ Boston, MA 02110-1301, USA.  */
 #include "blockinput.h"
 #include "keymap.h"
 
-#if !TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_CARBON
+typedef ScrapRef Selection;
+#else  /* !TARGET_API_MAC_CARBON */
+#include <Scrap.h>
 #include <Endian.h>
-typedef int ScrapRef;
-typedef ResType ScrapFlavorType;
+typedef int Selection;
 #endif /* !TARGET_API_MAC_CARBON */
 
-static OSStatus get_scrap_from_symbol P_ ((Lisp_Object, int, ScrapRef *));
-static ScrapFlavorType get_flavor_type_from_symbol P_ ((Lisp_Object));
-static int valid_scrap_target_type_p P_ ((Lisp_Object));
-static OSStatus clear_scrap P_ ((ScrapRef *));
-static OSStatus put_scrap_string P_ ((ScrapRef, Lisp_Object, Lisp_Object));
-static OSStatus put_scrap_private_timestamp P_ ((ScrapRef, unsigned long));
-static ScrapFlavorType scrap_has_target_type P_ ((ScrapRef, Lisp_Object));
-static Lisp_Object get_scrap_string P_ ((ScrapRef, Lisp_Object));
-static OSStatus get_scrap_private_timestamp P_ ((ScrapRef, unsigned long *));
-static Lisp_Object get_scrap_target_type_list P_ ((ScrapRef));
+static OSStatus mac_get_selection_from_symbol P_ ((Lisp_Object, int,
+                                                  Selection *));
+static ScrapFlavorType get_flavor_type_from_symbol P_ ((Lisp_Object,
+                                                       Selection));
+static int mac_valid_selection_target_p P_ ((Lisp_Object));
+static OSStatus mac_clear_selection P_ ((Selection *));
+static Lisp_Object mac_get_selection_ownership_info P_ ((Selection));
+static int mac_valid_selection_value_p P_ ((Lisp_Object, Lisp_Object));
+static OSStatus mac_put_selection_value P_ ((Selection, Lisp_Object,
+                                            Lisp_Object));
+static int mac_selection_has_target_p P_ ((Selection, Lisp_Object));
+static Lisp_Object mac_get_selection_value P_ ((Selection, Lisp_Object));
+static Lisp_Object mac_get_selection_target_list P_ ((Selection));
 static void x_own_selection P_ ((Lisp_Object, Lisp_Object));
 static Lisp_Object x_get_local_selection P_ ((Lisp_Object, Lisp_Object, int));
 static Lisp_Object x_get_foreign_selection P_ ((Lisp_Object,
@@ -56,7 +61,7 @@ void init_service_handler P_ ((void));
 Lisp_Object QPRIMARY, QSECONDARY, QTIMESTAMP, QTARGETS;
 
 static Lisp_Object Vx_lost_selection_functions;
-/* Coding system for communicating with other programs via scrap.  */
+/* Coding system for communicating with other programs via selections.  */
 static Lisp_Object Vselection_coding_system;
 
 /* Coding system for the next communicating with other programs.  */
@@ -70,23 +75,24 @@ static Lisp_Object Qforeign_selection;
 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 SELECTION-VALUE SELECTION-TIMESTAMP FRAME OWNERSHIP-INFO)
    SELECTION-NAME is a lisp symbol.
    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, and the data for the flavor
-     type SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP in the corresponding scrap
-     (if exists) coincides with SELECTION-TIMESTAMP, then it can be
-     assumed that Emacs owns that selection.
+   OWNERSHIP-INFO is a value saved when emacs owns for that selection.
+     If another application takes the ownership of that selection
+     later, then newly examined ownership info value should be
+     different from the saved one.
+   If there is an entry in this alist, the current ownership info for
+    the selection coincides with OWNERSHIP-INFO, 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;
 
-#define SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP 'Etsp'
-
 /* This is an alist whose CARs are selection-types 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.
@@ -104,21 +110,22 @@ static Lisp_Object Qmac_scrap_name, Qmac_ostype;
 static Lisp_Object Vmac_service_selection;
 #endif
 \f
-/* Get a reference to the scrap corresponding to the symbol SYM.  The
-   reference is set to *SCRAP, and it becomes NULL if there's no
-   corresponding scrap.  Clear the scrap if CLEAR_P is non-zero.  */
+/* Get a reference to the selection corresponding to the symbol SYM.
+   The reference is set to *SEL, and it becomes NULL if there's no
+   corresponding selection.  Clear the selection if CLEAR_P is
+   non-zero.  */
 
 static OSStatus
-get_scrap_from_symbol (sym, clear_p, scrap)
+mac_get_selection_from_symbol (sym, clear_p, sel)
      Lisp_Object sym;
      int clear_p;
-     ScrapRef *scrap;
+     Selection *sel;
 {
   OSStatus err = noErr;
   Lisp_Object str = Fget (sym, Qmac_scrap_name);
 
   if (!STRINGP (str))
-    *scrap = NULL;
+    *sel = NULL;
   else
     {
 #if TARGET_API_MAC_CARBON
@@ -127,19 +134,19 @@ get_scrap_from_symbol (sym, clear_p, scrap)
       OptionBits options = (clear_p ? kScrapClearNamedScrap
                            : kScrapGetNamedScrap);
 
-      err = GetScrapByName (scrap_name, options, scrap);
+      err = GetScrapByName (scrap_name, options, sel);
       CFRelease (scrap_name);
 #else  /* !MAC_OSX */
       if (clear_p)
        err = ClearCurrentScrap ();
       if (err == noErr)
-       err = GetCurrentScrap (scrap);
+       err = GetCurrentScrap (sel);
 #endif /* !MAC_OSX */
 #else  /* !TARGET_API_MAC_CARBON */
       if (clear_p)
        err = ZeroScrap ();
       if (err == noErr)
-       *scrap = 1;
+       *sel = 1;
 #endif /* !TARGET_API_MAC_CARBON */
     }
 
@@ -147,138 +154,154 @@ get_scrap_from_symbol (sym, clear_p, scrap)
 }
 
 /* Get a scrap flavor type from the symbol SYM.  Return 0 if no
-   corresponding flavor type.  */
+   corresponding flavor type.  If SEL is non-zero, the return value is
+   non-zero only when the SEL has the flavor type.  */
 
 static ScrapFlavorType
-get_flavor_type_from_symbol (sym)
+get_flavor_type_from_symbol (sym, sel)
      Lisp_Object sym;
+     Selection sel;
 {
   Lisp_Object str = Fget (sym, Qmac_ostype);
+  ScrapFlavorType flavor_type;
 
   if (STRINGP (str) && SBYTES (str) == 4)
-    return EndianU32_BtoN (*((UInt32 *) SDATA (str)));
+    flavor_type = EndianU32_BtoN (*((UInt32 *) SDATA (str)));
+  else
+    flavor_type = 0;
+
+  if (flavor_type && sel)
+    {
+#if TARGET_API_MAC_CARBON
+      OSStatus err;
+      ScrapFlavorFlags flags;
+
+      err = GetScrapFlavorFlags (sel, flavor_type, &flags);
+      if (err != noErr)
+       flavor_type = 0;
+#else  /* !TARGET_API_MAC_CARBON */
+      SInt32 size, offset;
+
+      size = GetScrap (NULL, flavor_type, &offset);
+      if (size < 0)
+       flavor_type = 0;
+#endif /* !TARGET_API_MAC_CARBON */
+    }
 
-  return 0;
+  return flavor_type;
 }
 
-/* Check if the symbol SYM has a corresponding scrap flavor type.  */
+/* Check if the symbol SYM has a corresponding selection target type.  */
 
 static int
-valid_scrap_target_type_p (sym)
+mac_valid_selection_target_p (sym)
      Lisp_Object sym;
 {
-  return get_flavor_type_from_symbol (sym) != 0;
+  return get_flavor_type_from_symbol (sym, 0) != 0;
 }
 
-/* Clear the scrap whose reference is *SCRAP. */
+/* Clear the selection whose reference is *SEL.  */
 
-static INLINE OSStatus
-clear_scrap (scrap)
-     ScrapRef *scrap;
+static OSStatus
+mac_clear_selection (sel)
+     Selection *sel;
 {
 #if TARGET_API_MAC_CARBON
 #ifdef MAC_OSX
-  return ClearScrap (scrap);
+  return ClearScrap (sel);
 #else
-  return ClearCurrentScrap ();
+  OSStatus err;
+
+  err = ClearCurrentScrap ();
+  if (err == noErr)
+    err = GetCurrentScrap (sel);
+  return err;
 #endif
 #else  /* !TARGET_API_MAC_CARBON */
   return ZeroScrap ();
 #endif /* !TARGET_API_MAC_CARBON */
 }
 
-/* Put Lisp String STR to the scrap SCRAP.  The target type is
-   specified by TYPE. */
+/* Get ownership information for SEL.  Emacs can detect a change of
+   the ownership by comparing saved and current values of the
+   ownership information.  */
 
-static OSStatus
-put_scrap_string (scrap, type, str)
-     ScrapRef scrap;
-     Lisp_Object type, str;
+static Lisp_Object
+mac_get_selection_ownership_info (sel)
+     Selection sel;
 {
-  ScrapFlavorType flavor_type = get_flavor_type_from_symbol (type);
-
-  if (flavor_type == 0)
-    return noTypeErr;
-
 #if TARGET_API_MAC_CARBON
-  return PutScrapFlavor (scrap, flavor_type, kScrapFlavorMaskNone,
-                        SBYTES (str), SDATA (str));
+  return long_to_cons ((unsigned long) sel);
 #else  /* !TARGET_API_MAC_CARBON */
-  return PutScrap (SBYTES (str), flavor_type, SDATA (str));
+  ScrapStuffPtr scrap_info = InfoScrap ();
+
+  return make_number (scrap_info->scrapCount);
 #endif /* !TARGET_API_MAC_CARBON */
 }
 
-/* Put TIMESTAMP to the scrap SCRAP.  The timestamp is used for
-   checking if the scrap is owned by the process.  */
+/* Return non-zero if VALUE is a valid selection value for TARGET.  */
 
-static INLINE OSStatus
-put_scrap_private_timestamp (scrap, timestamp)
-     ScrapRef scrap;
-     unsigned long timestamp;
+static int
+mac_valid_selection_value_p (value, target)
+     Lisp_Object value, target;
 {
-#if TARGET_API_MAC_CARBON
-  return PutScrapFlavor (scrap, SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP,
-                        kScrapFlavorMaskSenderOnly,
-                        sizeof (timestamp), &timestamp);
-#else  /* !TARGET_API_MAC_CARBON */
-  return PutScrap (sizeof (timestamp), SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP,
-                  &timestamp);
-#endif /* !TARGET_API_MAC_CARBON */
+  return STRINGP (value);
 }
 
-/* Check if data for the target type TYPE is available in SCRAP.  */
+/* Put Lisp Object VALUE to the selection SEL.  The target type is
+   specified by TARGET. */
 
-static ScrapFlavorType
-scrap_has_target_type (scrap, type)
-     ScrapRef scrap;
-     Lisp_Object type;
+static OSStatus
+mac_put_selection_value (sel, target, value)
+     Selection sel;
+     Lisp_Object target, value;
 {
-  OSStatus err;
-  ScrapFlavorType flavor_type = get_flavor_type_from_symbol (type);
+  ScrapFlavorType flavor_type = get_flavor_type_from_symbol (target, 0);
 
-  if (flavor_type)
-    {
-#if TARGET_API_MAC_CARBON
-      ScrapFlavorFlags flags;
+  if (flavor_type == 0 || !STRINGP (value))
+    return noTypeErr;
 
-      err = GetScrapFlavorFlags (scrap, flavor_type, &flags);
-      if (err != noErr)
-       flavor_type = 0;
+#if TARGET_API_MAC_CARBON
+  return PutScrapFlavor (sel, flavor_type, kScrapFlavorMaskNone,
+                        SBYTES (value), SDATA (value));
 #else  /* !TARGET_API_MAC_CARBON */
-      SInt32 size, offset;
-
-      size = GetScrap (NULL, flavor_type, &offset);
-      if (size < 0)
-       flavor_type = 0;
+  return PutScrap (SBYTES (value), flavor_type, SDATA (value));
 #endif /* !TARGET_API_MAC_CARBON */
-    }
+}
 
-  return flavor_type;
+/* Check if data for the target type TARGET is available in SEL.  */
+
+static int
+mac_selection_has_target_p (sel, target)
+     Selection sel;
+     Lisp_Object target;
+{
+  return get_flavor_type_from_symbol (target, sel) != 0;
 }
 
-/* Get data for the target type TYPE from SCRAP and create a Lisp
+/* Get data for the target type TARGET from SEL and create a Lisp
    string.  Return nil if failed to get data.  */
 
 static Lisp_Object
-get_scrap_string (scrap, type)
-     ScrapRef scrap;
-     Lisp_Object type;
+mac_get_selection_value (sel, target)
+     Selection sel;
+     Lisp_Object target;
 {
   OSStatus err;
   Lisp_Object result = Qnil;
-  ScrapFlavorType flavor_type = get_flavor_type_from_symbol (type);
+  ScrapFlavorType flavor_type = get_flavor_type_from_symbol (target, sel);
 #if TARGET_API_MAC_CARBON
   Size size;
 
   if (flavor_type)
     {
-      err = GetScrapFlavorSize (scrap, flavor_type, &size);
+      err = GetScrapFlavorSize (sel, flavor_type, &size);
       if (err == noErr)
        {
          do
            {
              result = make_uninit_string (size);
-             err = GetScrapFlavorData (scrap, flavor_type,
+             err = GetScrapFlavorData (sel, flavor_type,
                                        &size, SDATA (result));
              if (err != noErr)
                result = Qnil;
@@ -308,72 +331,25 @@ get_scrap_string (scrap, type)
   return result;
 }
 
-/* Get timestamp from the scrap SCRAP and set to *TIMPSTAMP.  */
-
-static OSStatus
-get_scrap_private_timestamp (scrap, timestamp)
-     ScrapRef scrap;
-     unsigned long *timestamp;
-{
-  OSStatus err = noErr;
-#if TARGET_API_MAC_CARBON
-  ScrapFlavorFlags flags;
-
-  err = GetScrapFlavorFlags (scrap, SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP, &flags);
-  if (err == noErr)
-    {
-      if (!(flags & kScrapFlavorMaskSenderOnly))
-       err = noTypeErr;
-      else
-       {
-         Size size = sizeof (*timestamp);
-
-         err = GetScrapFlavorData (scrap, SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP,
-                                   &size, timestamp);
-         if (err == noErr && size != sizeof (*timestamp))
-           err = noTypeErr;
-       }
-    }
-#else  /* !TARGET_API_MAC_CARBON */
-  Handle handle;
-  SInt32 size, offset;
-
-  size = GetScrap (NULL, SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP, &offset);
-  if (size == sizeof (*timestamp))
-    {
-      handle = NewHandle (size);
-      HLock (handle);
-      size = GetScrap (handle, SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP, &offset);
-      if (size == sizeof (*timestamp))
-       *timestamp = *((unsigned long *) *handle);
-      DisposeHandle (handle);
-    }
-  if (size != sizeof (*timestamp))
-    err = noTypeErr;
-#endif /* !TARGET_API_MAC_CARBON */
-
-  return err;
-}
-
-/* Get the list of target types in SCRAP.  The return value is a list
-   of target type symbols possibly followed by scrap flavor type
+/* Get the list of target types in SEL.  The return value is a list of
+   target type symbols possibly followed by scrap flavor type
    strings.  */
 
 static Lisp_Object
-get_scrap_target_type_list (scrap)
-     ScrapRef scrap;
+mac_get_selection_target_list (sel)
+     Selection sel;
 {
-  Lisp_Object result = Qnil, rest, target_type;
+  Lisp_Object result = Qnil, rest, target;
 #if TARGET_API_MAC_CARBON
   OSStatus err;
   UInt32 count, i, type;
   ScrapFlavorInfo *flavor_info = NULL;
   Lisp_Object strings = Qnil;
 
-  err = GetScrapFlavorCount (scrap, &count);
+  err = GetScrapFlavorCount (sel, &count);
   if (err == noErr)
     flavor_info = xmalloc (sizeof (ScrapFlavorInfo) * count);
-  err = GetScrapFlavorInfoList (scrap, &count, flavor_info);
+  err = GetScrapFlavorInfoList (sel, &count, flavor_info);
   if (err != noErr)
     {
       xfree (flavor_info);
@@ -387,11 +363,11 @@ get_scrap_target_type_list (scrap)
       ScrapFlavorType flavor_type = 0;
 
       if (CONSP (XCAR (rest))
-         && (target_type = XCAR (XCAR (rest)),
-             SYMBOLP (target_type))
-         && (flavor_type = scrap_has_target_type (scrap, target_type)))
+         && (target = XCAR (XCAR (rest)),
+             SYMBOLP (target))
+         && (flavor_type = get_flavor_type_from_symbol (target, sel)))
        {
-         result = Fcons (target_type, result);
+         result = Fcons (target, result);
 #if TARGET_API_MAC_CARBON
          for (i = 0; i < count; i++)
            if (flavor_info[i].flavorType == flavor_type)
@@ -428,9 +404,9 @@ x_own_selection (selection_name, selection_value)
      Lisp_Object selection_name, selection_value;
 {
   OSStatus err;
-  ScrapRef scrap;
+  Selection sel;
   struct gcpro gcpro1, gcpro2;
-  Lisp_Object rest, handler_fn, value, type;
+  Lisp_Object rest, handler_fn, value, target_type;
   int count;
 
   CHECK_SYMBOL (selection_name);
@@ -439,8 +415,8 @@ x_own_selection (selection_name, selection_value)
 
   BLOCK_INPUT;
 
-  err = get_scrap_from_symbol (selection_name, 1, &scrap);
-  if (err == noErr && scrap)
+  err = mac_get_selection_from_symbol (selection_name, 1, &sel);
+  if (err == noErr && sel)
     {
       /* Don't allow a quit within the converter.
         When the user types C-g, he would be surprised
@@ -451,49 +427,56 @@ x_own_selection (selection_name, selection_value)
       for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest))
        {
          if (!(CONSP (XCAR (rest))
-               && (type = XCAR (XCAR (rest)),
-                   SYMBOLP (type))
-               && valid_scrap_target_type_p (type)
+               && (target_type = XCAR (XCAR (rest)),
+                   SYMBOLP (target_type))
+               && mac_valid_selection_target_p (target_type)
                && (handler_fn = XCDR (XCAR (rest)),
                    SYMBOLP (handler_fn))))
            continue;
 
          if (!NILP (handler_fn))
            value = call3 (handler_fn, selection_name,
-                          type, selection_value);
+                          target_type, selection_value);
+
+         if (NILP (value))
+           continue;
 
-         if (STRINGP (value))
-           err = put_scrap_string (scrap, type, value);
+         if (mac_valid_selection_value_p (value, target_type))
+           err = mac_put_selection_value (sel, target_type, value);
          else if (CONSP (value)
-                  && EQ (XCAR (value), type)
-                  && STRINGP (XCDR (value)))
-           err = put_scrap_string (scrap, type, XCDR (value));
+                  && EQ (XCAR (value), target_type)
+                  && mac_valid_selection_value_p (XCDR (value), target_type))
+           err = mac_put_selection_value (sel, target_type, XCDR (value));
        }
 
       unbind_to (count, Qnil);
-
-      if (err == noErr)
-       err = put_scrap_private_timestamp (scrap, last_event_timestamp);
     }
 
   UNBLOCK_INPUT;
 
   UNGCPRO;
 
-  if (scrap && err != noErr)
+  if (sel && err != noErr)
     error ("Can't set selection");
 
   /* Now update the local cache */
   {
     Lisp_Object selection_time;
     Lisp_Object selection_data;
+    Lisp_Object ownership_info;
     Lisp_Object prev_value;
 
     selection_time = long_to_cons (last_event_timestamp);
+    if (sel)
+      ownership_info = mac_get_selection_ownership_info (sel);
+    else
+      ownership_info = Qnil;   /* dummy value for local-only selection */
     selection_data = Fcons (selection_name,
                            Fcons (selection_value,
                                   Fcons (selection_time,
-                                         Fcons (selected_frame, Qnil))));
+                                         Fcons (selected_frame,
+                                                Fcons (ownership_info,
+                                                       Qnil)))));
     prev_value = assq_no_quit (selection_name, Vselection_alist);
 
     Vselection_alist = Fcons (selection_data, Vselection_alist);
@@ -574,29 +557,20 @@ x_get_local_selection (selection_symbol, target_type, local_request)
       unbind_to (count, Qnil);
     }
 
+  if (local_request)
+    return value;
+
   /* Make sure this value is of a type that we could transmit
-     to another X client.  */
+     to another application.  */
 
+  type = target_type;
   check = value;
   if (CONSP (value)
       && SYMBOLP (XCAR (value)))
     type = XCAR (value),
     check = XCDR (value);
 
-  if (STRINGP (check)
-      || VECTORP (check)
-      || SYMBOLP (check)
-      || INTEGERP (check)
-      || NILP (value))
-    return value;
-  /* Check for a value that cons_to_long could handle.  */
-  else if (CONSP (check)
-          && INTEGERP (XCAR (check))
-          && (INTEGERP (XCDR (check))
-              ||
-              (CONSP (XCDR (check))
-               && INTEGERP (XCAR (XCDR (check)))
-               && NILP (XCDR (XCDR (check))))))
+  if (NILP (value) || mac_valid_selection_value_p (check, type))
     return value;
 
   signal_error ("Invalid data returned by selection-conversion function",
@@ -676,22 +650,22 @@ x_get_foreign_selection (selection_symbol, target_type, time_stamp)
      Lisp_Object selection_symbol, target_type, time_stamp;
 {
   OSStatus err;
-  ScrapRef scrap;
+  Selection sel;
   Lisp_Object result = Qnil;
 
   BLOCK_INPUT;
 
-  err = get_scrap_from_symbol (selection_symbol, 0, &scrap);
-  if (err == noErr && scrap)
+  err = mac_get_selection_from_symbol (selection_symbol, 0, &sel);
+  if (err == noErr && sel)
     {
       if (EQ (target_type, QTARGETS))
        {
-         result = get_scrap_target_type_list (scrap);
+         result = mac_get_selection_target_list (sel);
          result = Fvconcat (1, &result);
        }
       else
        {
-         result = get_scrap_string (scrap, target_type);
+         result = mac_get_selection_value (sel, target_type);
          if (STRINGP (result))
            Fput_text_property (make_number (0), make_number (SBYTES (result)),
                                Qforeign_selection, target_type, result);
@@ -770,7 +744,7 @@ Disowning it means there is no such selection.  */)
      Lisp_Object time;
 {
   OSStatus err;
-  ScrapRef scrap;
+  Selection sel;
   Lisp_Object local_selection_data;
 
   check_mac ();
@@ -812,9 +786,9 @@ Disowning it means there is no such selection.  */)
 
   BLOCK_INPUT;
 
-  err = get_scrap_from_symbol (selection, 0, &scrap);
-  if (err == noErr && scrap)
-    clear_scrap (&scrap);
+  err = mac_get_selection_from_symbol (selection, 0, &sel);
+  if (err == noErr && sel)
+    mac_clear_selection (&sel);
 
   UNBLOCK_INPUT;
 
@@ -833,7 +807,7 @@ and t is the same as `SECONDARY'.  */)
      Lisp_Object selection;
 {
   OSStatus err;
-  ScrapRef scrap;
+  Selection sel;
   Lisp_Object result = Qnil, local_selection_data;
 
   check_mac ();
@@ -848,15 +822,14 @@ and t is the same as `SECONDARY'.  */)
 
   BLOCK_INPUT;
 
-  err = get_scrap_from_symbol (selection, 0, &scrap);
-  if (err == noErr && scrap)
+  err = mac_get_selection_from_symbol (selection, 0, &sel);
+  if (err == noErr && sel)
     {
-      unsigned long timestamp;
+      Lisp_Object ownership_info;
 
-      err = get_scrap_private_timestamp (scrap, &timestamp);
-      if (err == noErr
-         && (timestamp
-             == cons_to_long (XCAR (XCDR (XCDR (local_selection_data))))))
+      ownership_info = XCAR (XCDR (XCDR (XCDR (XCDR (local_selection_data)))));
+      if (!NILP (Fequal (ownership_info,
+                        mac_get_selection_ownership_info (sel))))
        result = Qt;
     }
   else
@@ -878,7 +851,7 @@ and t is the same as `SECONDARY'.  */)
      Lisp_Object selection;
 {
   OSStatus err;
-  ScrapRef scrap;
+  Selection sel;
   Lisp_Object result = Qnil, rest;
 
   /* It should be safe to call this before we have an Mac frame.  */
@@ -893,12 +866,12 @@ and t is the same as `SECONDARY'.  */)
 
   BLOCK_INPUT;
 
-  err = get_scrap_from_symbol (selection, 0, &scrap);
-  if (err == noErr && scrap)
+  err = mac_get_selection_from_symbol (selection, 0, &sel);
+  if (err == noErr && sel)
     for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest))
       {
        if (CONSP (XCAR (rest)) && SYMBOLP (XCAR (XCAR (rest)))
-           && scrap_has_target_type (scrap, XCAR (XCAR (rest))))
+           && mac_selection_has_target_p (sel, XCAR (XCAR (rest))))
          {
            result = Qt;
            break;
@@ -1623,16 +1596,19 @@ remove_drag_handler (window)
                        Services menu support
 ***********************************************************************/
 #ifdef MAC_OSX
-void
-init_service_handler ()
+OSStatus
+install_service_handler ()
 {
   static const EventTypeSpec specs[] =
     {{kEventClassService, kEventServiceGetTypes},
      {kEventClassService, kEventServiceCopy},
      {kEventClassService, kEventServicePaste},
      {kEventClassService, kEventServicePerform}};
-  InstallApplicationEventHandler (NewEventHandlerUPP (mac_handle_service_event),
-                                 GetEventTypeCount (specs), specs, NULL, NULL);
+
+  return InstallApplicationEventHandler (NewEventHandlerUPP
+                                        (mac_handle_service_event),
+                                        GetEventTypeCount (specs),
+                                        specs, NULL, NULL);
 }
 
 extern OSStatus mac_store_service_event P_ ((EventRef));
@@ -1697,7 +1673,7 @@ mac_handle_service_event (call_ref, event, data)
   if (!SYMBOLP (Vmac_service_selection))
     err = eventNotHandledErr;
   else
-    err = get_scrap_from_symbol (Vmac_service_selection, 0, &cur_scrap);
+    err = mac_get_selection_from_symbol (Vmac_service_selection, 0, &cur_scrap);
   if (!(err == noErr && cur_scrap))
     return eventNotHandledErr;
 
@@ -1716,7 +1692,7 @@ mac_handle_service_event (call_ref, event, data)
           rest = XCDR (rest))
        if (CONSP (XCAR (rest)) && SYMBOLP (XCAR (XCAR (rest)))
            && (flavor_type =
-               get_flavor_type_from_symbol (XCAR (XCAR (rest)))))
+               get_flavor_type_from_symbol (XCAR (XCAR (rest)), 0)))
          {
            type = CreateTypeStringWithOSType (flavor_type);
            if (type)
@@ -1801,14 +1777,15 @@ mac_handle_service_event (call_ref, event, data)
                                 NULL, sizeof (ScrapRef), NULL,
                                 &specific_scrap);
        if (err == noErr)
-         err = clear_scrap (&cur_scrap);
+         err = mac_clear_selection (&cur_scrap);
        if (err == noErr)
          for (rest = Vselection_converter_alist; CONSP (rest);
               rest = XCDR (rest))
            {
              if (! (CONSP (XCAR (rest)) && SYMBOLP (XCAR (XCAR (rest)))))
                continue;
-             flavor_type = get_flavor_type_from_symbol (XCAR (XCAR (rest)));
+             flavor_type = get_flavor_type_from_symbol (XCAR (XCAR (rest)),
+                                                        specific_scrap);
              if (flavor_type == 0)
                continue;
              err = copy_scrap_flavor_data (specific_scrap, cur_scrap,
index 726a0f72b18c035babdb2e990e98ee565e75f4a5..e4b9cca819c39b7374414c870b0b502243f9acc6 100644 (file)
@@ -35,12 +35,7 @@ Boston, MA 02110-1301, USA.  */
 #include <alloca.h>
 #endif
 
-#if TARGET_API_MAC_CARBON
-/* USE_CARBON_EVENTS determines if the Carbon Event Manager is used to
-   obtain events from the event queue.  If set to 0, WaitNextEvent is
-   used instead.  */
-#define USE_CARBON_EVENTS 1
-#else /* not TARGET_API_MAC_CARBON */
+#if !TARGET_API_MAC_CARBON
 #include <Quickdraw.h>
 #include <ToolUtils.h>
 #include <Sound.h>
@@ -231,14 +226,14 @@ void x_raise_frame P_ ((struct frame *));
 void x_set_window_size P_ ((struct frame *, int, int, int));
 void x_wm_set_window_state P_ ((struct frame *, int));
 void x_wm_set_icon_pixmap P_ ((struct frame *, int));
-void mac_initialize P_ ((void));
+static void mac_initialize P_ ((void));
 static void x_font_min_bounds P_ ((XFontStruct *, int *, int *));
 static int x_compute_min_glyph_bounds P_ ((struct frame *));
 static void x_update_end P_ ((struct frame *));
 static void XTframe_up_to_date P_ ((struct frame *));
-static void XTset_terminal_modes P_ ((void));
-static void XTreset_terminal_modes P_ ((void));
-static void x_clear_frame P_ ((void));
+static void XTset_terminal_modes P_ ((struct terminal *));
+static void XTreset_terminal_modes P_ ((struct terminal *));
+static void x_clear_frame P_ ((struct frame *));
 static void frame_highlight P_ ((struct frame *));
 static void frame_unhighlight P_ ((struct frame *));
 static void x_new_focus_frame P_ ((struct x_display_info *, struct frame *));
@@ -263,9 +258,11 @@ static void x_scroll_bar_report_motion P_ ((struct frame **, Lisp_Object *,
                                            Lisp_Object *, Lisp_Object *,
                                            unsigned long *));
 
-static int is_emacs_window P_ ((WindowPtr));
+static int is_emacs_window P_ ((WindowRef));
 static XCharStruct *mac_per_char_metric P_ ((XFontStruct *, XChar2b *, int));
 static void XSetFont P_ ((Display *, GC, XFontStruct *));
+static struct terminal *mac_create_terminal P_ ((struct mac_display_info *dpyinfo));
+
 
 #define GC_FORE_COLOR(gc)      (&(gc)->fore_color)
 #define GC_BACK_COLOR(gc)      (&(gc)->back_color)
@@ -416,7 +413,8 @@ mac_prepare_for_quickdraw (f)
 static RgnHandle saved_port_clip_region = NULL;
 
 static void
-mac_begin_clip (gc)
+mac_begin_clip (f, gc)
+     struct frame *f;
      GC gc;
 {
   static RgnHandle new_region = NULL;
@@ -426,6 +424,11 @@ mac_begin_clip (gc)
   if (new_region == NULL)
     new_region = NewRgn ();
 
+#if USE_CG_DRAWING
+  mac_prepare_for_quickdraw (f);
+#endif
+  SetPortWindowPort (FRAME_MAC_WINDOW (f));
+
   if (gc->n_clip_rects)
     {
       GetClip (saved_port_clip_region);
@@ -445,15 +448,6 @@ mac_end_clip (gc)
 
 /* X display function emulation */
 
-void
-XFreePixmap (display, pixmap)
-     Display *display;         /* not used */
-     Pixmap pixmap;
-{
-  DisposeGWorld (pixmap);
-}
-
-
 /* Mac version of XDrawLine.  */
 
 static void
@@ -495,11 +489,8 @@ mac_draw_line (f, gc, x1, y1, x2, y2)
        x2--;
     }
 
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-
+  mac_begin_clip (f, gc);
   RGBForeColor (GC_FORE_COLOR (gc));
-
-  mac_begin_clip (gc);
   MoveTo (x1, y1);
   LineTo (x2, y2);
   mac_end_clip (gc);
@@ -555,25 +546,25 @@ mac_erase_rectangle (f, gc, x, y, width, height)
      unsigned int width, height;
 {
 #if USE_CG_DRAWING
-  CGContextRef context;
+    {
+      CGContextRef context;
 
-  context = mac_begin_cg_clip (f, gc);
-  CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
-  CGContextFillRect (context, CGRectMake (x, y, width, height));
-  mac_end_cg_clip (f);
+      context = mac_begin_cg_clip (f, gc);
+      CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
+      CGContextFillRect (context, CGRectMake (x, y, width, height));
+      mac_end_cg_clip (f);
+    }
 #else
-  Rect r;
-
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-
-  RGBBackColor (GC_BACK_COLOR (gc));
-  SetRect (&r, x, y, x + width, y + height);
-
-  mac_begin_clip (gc);
-  EraseRect (&r);
-  mac_end_clip (gc);
+    {
+      Rect r;
 
-  RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
+      mac_begin_clip (f, gc);
+      RGBBackColor (GC_BACK_COLOR (gc));
+      SetRect (&r, x, y, x + width, y + height);
+      EraseRect (&r);
+      RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
+      mac_end_clip (gc);
+    }
 #endif
 }
 
@@ -596,15 +587,17 @@ mac_clear_window (f)
      struct frame *f;
 {
 #if USE_CG_DRAWING
-  CGContextRef context;
-  GC gc = FRAME_NORMAL_GC (f);
-
-  context = mac_begin_cg_clip (f, NULL);
-  CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
-  CGContextFillRect (context, CGRectMake (0, 0, FRAME_PIXEL_WIDTH (f),
-                                         FRAME_PIXEL_HEIGHT (f)));
-  mac_end_cg_clip (f);
-#else
+  {
+    CGContextRef context;
+    GC gc = FRAME_NORMAL_GC (f);
+
+    context = mac_begin_cg_clip (f, NULL);
+    CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
+    CGContextFillRect (context, CGRectMake (0, 0, FRAME_PIXEL_WIDTH (f),
+                                           FRAME_PIXEL_HEIGHT (f)));
+    mac_end_cg_clip (f);
+  }
+#else  /* !USE_CG_DRAWING */
   SetPortWindowPort (FRAME_MAC_WINDOW (f));
 
   RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
@@ -678,13 +671,10 @@ mac_draw_bitmap (f, gc, x, y, width, height, bits, overlay_p)
   bitmap.baseAddr = (char *)bits;
   SetRect (&(bitmap.bounds), 0, 0, width, height);
 
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-
+  mac_begin_clip (f, gc);
   RGBForeColor (GC_FORE_COLOR (gc));
   RGBBackColor (GC_BACK_COLOR (gc));
   SetRect (&r, x, y, x + width, y + height);
-
-  mac_begin_clip (gc);
 #if TARGET_API_MAC_CARBON
   {
     CGrafPtr port;
@@ -699,9 +689,8 @@ mac_draw_bitmap (f, gc, x, y, width, height, bits, overlay_p)
   CopyBits (&bitmap, &(FRAME_MAC_WINDOW (f)->portBits), &(bitmap.bounds), &r,
            overlay_p ? srcOr : srcCopy, 0);
 #endif /* not TARGET_API_MAC_CARBON */
-  mac_end_clip (gc);
-
   RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
+  mac_end_clip (gc);
 }
 #endif /* !USE_CG_DRAWING */
 
@@ -752,8 +741,8 @@ mac_free_bitmap (bitmap)
 
 Pixmap
 XCreatePixmap (display, w, width, height, depth)
-     Display *display;         /* not used */
-     WindowPtr w;
+     Display *display;
+     WindowRef w;
      unsigned int width, height;
      unsigned int depth;
 {
@@ -781,8 +770,8 @@ XCreatePixmap (display, w, width, height, depth)
 
 Pixmap
 XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
-     Display *display;         /* not used */
-     WindowPtr w;
+     Display *display;
+     WindowRef w;
      char *data;
      unsigned int width, height;
      unsigned long fg, bg;
@@ -792,7 +781,7 @@ XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
   BitMap bitmap;
   CGrafPtr old_port;
   GDHandle old_gdh;
-  static GC gc = NULL;         /* not reentrant */
+  static GC gc = NULL;
 
   if (gc == NULL)
     gc = XCreateGC (display, w, 0, NULL);
@@ -824,6 +813,15 @@ XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
 }
 
 
+void
+XFreePixmap (display, pixmap)
+     Display *display;
+     Pixmap pixmap;
+{
+  DisposeGWorld (pixmap);
+}
+
+
 /* Mac replacement for XFillRectangle.  */
 
 static void
@@ -843,12 +841,9 @@ mac_fill_rectangle (f, gc, x, y, width, height)
 #else
   Rect r;
 
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-
+  mac_begin_clip (f, gc);
   RGBForeColor (GC_FORE_COLOR (gc));
   SetRect (&r, x, y, x + width, y + height);
-
-  mac_begin_clip (gc);
   PaintRect (&r); /* using foreground color of gc */
   mac_end_clip (gc);
 #endif
@@ -875,18 +870,34 @@ mac_draw_rectangle (f, gc, x, y, width, height)
 #else
   Rect r;
 
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-
+  mac_begin_clip (f, gc);
   RGBForeColor (GC_FORE_COLOR (gc));
   SetRect (&r, x, y, x + width + 1, y + height + 1);
-
-  mac_begin_clip (gc);
   FrameRect (&r); /* using foreground color of gc */
   mac_end_clip (gc);
 #endif
 }
 
 
+static void
+mac_invert_rectangle (f, x, y, width, height)
+     struct frame *f;
+     int x, y;
+     unsigned int width, height;
+{
+  Rect r;
+
+#if USE_CG_DRAWING
+  mac_prepare_for_quickdraw (f);
+#endif
+  SetPortWindowPort (FRAME_MAC_WINDOW (f));
+
+  SetRect (&r, x, y, x + width, y + height);
+
+  InvertRect (&r);
+}
+
+
 #if USE_ATSUI
 static OSStatus
 atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout)
@@ -896,7 +907,7 @@ atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout)
      ATSUTextLayout *text_layout;
 {
   OSStatus err;
-  static ATSUTextLayout saved_text_layout = NULL; /* not reentrant */
+  static ATSUTextLayout saved_text_layout = NULL;
 
   if (saved_text_layout == NULL)
     {
@@ -923,7 +934,6 @@ atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout)
        err = ATSUSetLayoutControls (saved_text_layout,
                                     sizeof (tags) / sizeof (tags[0]),
                                     tags, sizes, values);
-      /* XXX: Should we do this? */
       if (err == noErr)
        err = ATSUSetTransientFontMatching (saved_text_layout, true);
     }
@@ -942,224 +952,224 @@ atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout)
     *text_layout = saved_text_layout;
   return err;
 }
-#endif
-
-
-static void
-mac_invert_rectangle (f, x, y, width, height)
-     struct frame *f;
-     int x, y;
-     unsigned int width, height;
-{
-  Rect r;
-
-#if USE_CG_DRAWING
-  mac_prepare_for_quickdraw (f);
-#endif
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-
-  SetRect (&r, x, y, x + width, y + height);
-
-  InvertRect (&r);
-}
 
 
 static void
-mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width,
-                       overstrike_p, bytes_per_char)
+mac_draw_image_string_atsui (f, gc, x, y, buf, nchars, bg_width,
+                            overstrike_p, bytes_per_char)
      struct frame *f;
      GC gc;
      int x, y;
      char *buf;
      int nchars, bg_width, overstrike_p, bytes_per_char;
 {
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-
-#if USE_ATSUI
-  if (GC_FONT (gc)->mac_style)
-    {
-      OSStatus err;
-      ATSUTextLayout text_layout;
+  OSStatus err;
+  ATSUTextLayout text_layout;
 
-      xassert (bytes_per_char == 2);
+  xassert (bytes_per_char == 2);
 
 #ifndef WORDS_BIG_ENDIAN
-      {
-       int i;
-       UniChar *text = (UniChar *)buf;
+  {
+    int i;
+    UniChar *text = (UniChar *)buf;
 
-       for (i = 0; i < nchars; i++)
-         text[i] = EndianU16_BtoN (text[i]);
-      }
+    for (i = 0; i < nchars; i++)
+      text[i] = EndianU16_BtoN (text[i]);
+  }
 #endif
-      err = atsu_get_text_layout_with_text_ptr ((ConstUniCharArrayPtr)buf,
-                                               nchars,
-                                               GC_FONT (gc)->mac_style,
-                                               &text_layout);
-      if (err != noErr)
-       return;
+  err = atsu_get_text_layout_with_text_ptr ((ConstUniCharArrayPtr)buf,
+                                           nchars,
+                                           GC_FONT (gc)->mac_style,
+                                           &text_layout);
+  if (err != noErr)
+    return;
 #ifdef MAC_OSX
-      if (!mac_use_core_graphics)
-       {
-#endif
-#if USE_CG_DRAWING
-         mac_prepare_for_quickdraw (f);
+  if (!mac_use_core_graphics)
+    {
 #endif
-         mac_begin_clip (gc);
-         RGBForeColor (GC_FORE_COLOR (gc));
-         if (bg_width)
-           {
-             Rect r;
+      mac_begin_clip (f, gc);
+      RGBForeColor (GC_FORE_COLOR (gc));
+      if (bg_width)
+       {
+         Rect r;
 
-             SetRect (&r, x, y - FONT_BASE (GC_FONT (gc)),
-                      x + bg_width, y + FONT_DESCENT (GC_FONT (gc)));
-             RGBBackColor (GC_BACK_COLOR (gc));
-             EraseRect (&r);
-             RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
-           }
-         MoveTo (x, y);
+         SetRect (&r, x, y - FONT_BASE (GC_FONT (gc)),
+                  x + bg_width, y + FONT_DESCENT (GC_FONT (gc)));
+         RGBBackColor (GC_BACK_COLOR (gc));
+         EraseRect (&r);
+         RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
+       }
+      MoveTo (x, y);
+      ATSUDrawText (text_layout,
+                   kATSUFromTextBeginning, kATSUToTextEnd,
+                   kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc);
+      if (overstrike_p)
+       {
+         MoveTo (x + 1, y);
          ATSUDrawText (text_layout,
                        kATSUFromTextBeginning, kATSUToTextEnd,
                        kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc);
-         if (overstrike_p)
-           {
-             MoveTo (x + 1, y);
-             ATSUDrawText (text_layout,
-                           kATSUFromTextBeginning, kATSUToTextEnd,
-                           kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc);
-           }
-         mac_end_clip (gc);
-#ifdef MAC_OSX
        }
-      else
-       {
-         CGrafPtr port;
-         static CGContextRef context;
-         float port_height = FRAME_PIXEL_HEIGHT (f);
-         static const ATSUAttributeTag tags[] = {kATSUCGContextTag};
-         static const ByteCount sizes[] = {sizeof (CGContextRef)};
-         static const ATSUAttributeValuePtr values[] = {&context};
+      mac_end_clip (gc);
+#ifdef MAC_OSX
+    }
+  else
+    {
+      static CGContextRef context;
+      float port_height = FRAME_PIXEL_HEIGHT (f);
+      static const ATSUAttributeTag tags[] = {kATSUCGContextTag};
+      static const ByteCount sizes[] = {sizeof (CGContextRef)};
+      static const ATSUAttributeValuePtr values[] = {&context};
 
 #if USE_CG_DRAWING
-         context = mac_begin_cg_clip (f, gc);
+      context = mac_begin_cg_clip (f, gc);
 #else
-         GetPort (&port);
-         QDBeginCGContext (port, &context);
-         if (gc->n_clip_rects || bg_width)
-           {
-             CGContextTranslateCTM (context, 0, port_height);
-             CGContextScaleCTM (context, 1, -1);
-             if (gc->n_clip_rects)
-               CGContextClipToRects (context, gc->clip_rects,
-                                     gc->n_clip_rects);
-#endif
-             if (bg_width)
-               {
-                 CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
-                 CGContextFillRect
-                   (context,
-                    CGRectMake (x, y - FONT_BASE (GC_FONT (gc)),
-                                bg_width, FONT_HEIGHT (GC_FONT (gc))));
-               }
-             CGContextScaleCTM (context, 1, -1);
-             CGContextTranslateCTM (context, 0, -port_height);
-#if !USE_CG_DRAWING
-           }
+      CGrafPtr port;
+
+      GetPort (&port);
+      QDBeginCGContext (port, &context);
+      if (gc->n_clip_rects || bg_width)
+       {
+         CGContextTranslateCTM (context, 0, port_height);
+         CGContextScaleCTM (context, 1, -1);
+         if (gc->n_clip_rects)
+           CGContextClipToRects (context, gc->clip_rects,
+                                 gc->n_clip_rects);
 #endif
-         CG_SET_FILL_COLOR_WITH_GC_FOREGROUND (context, gc);
-         err = ATSUSetLayoutControls (text_layout,
-                                      sizeof (tags) / sizeof (tags[0]),
-                                      tags, sizes, values);
-         if (err == noErr)
+         if (bg_width)
            {
-             ATSUDrawText (text_layout,
-                           kATSUFromTextBeginning, kATSUToTextEnd,
-                           Long2Fix (x), Long2Fix (port_height - y));
-             if (overstrike_p)
-               ATSUDrawText (text_layout,
-                             kATSUFromTextBeginning, kATSUToTextEnd,
-                             Long2Fix (x + 1), Long2Fix (port_height - y));
+             CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
+             CGContextFillRect (context,
+                                CGRectMake (x, y - FONT_BASE (GC_FONT (gc)),
+                                            bg_width,
+                                            FONT_HEIGHT (GC_FONT (gc))));
            }
+         CGContextScaleCTM (context, 1, -1);
+         CGContextTranslateCTM (context, 0, -port_height);
+#if !USE_CG_DRAWING
+       }
+#endif
+      CG_SET_FILL_COLOR_WITH_GC_FOREGROUND (context, gc);
+      err = ATSUSetLayoutControls (text_layout,
+                                  sizeof (tags) / sizeof (tags[0]),
+                                  tags, sizes, values);
+      if (err == noErr)
+       {
+         ATSUDrawText (text_layout,
+                       kATSUFromTextBeginning, kATSUToTextEnd,
+                       Long2Fix (x), Long2Fix (port_height - y));
+         if (overstrike_p)
+           ATSUDrawText (text_layout,
+                         kATSUFromTextBeginning, kATSUToTextEnd,
+                         Long2Fix (x + 1), Long2Fix (port_height - y));
+       }
 #if USE_CG_DRAWING
-         mac_end_cg_clip (f);
-         context = NULL;
+      mac_end_cg_clip (f);
+      context = NULL;
 #else
-         CGContextSynchronize (context);
-         QDEndCGContext (port, &context);
+      CGContextSynchronize (context);
+      QDEndCGContext (port, &context);
 #endif
 #if 0
-         /* This doesn't work on Mac OS X 10.1.  */
-         ATSUClearLayoutControls (text_layout,
-                                  sizeof (tags) / sizeof (tags[0]), tags);
+      /* This doesn't work on Mac OS X 10.1.  */
+      ATSUClearLayoutControls (text_layout,
+                              sizeof (tags) / sizeof (tags[0]), tags);
 #else
-         ATSUSetLayoutControls (text_layout,
-                                sizeof (tags) / sizeof (tags[0]),
-                                tags, sizes, values);
+      ATSUSetLayoutControls (text_layout,
+                            sizeof (tags) / sizeof (tags[0]),
+                            tags, sizes, values);
 #endif
-       }
-#endif /* MAC_OSX */
     }
-  else
+#endif /* MAC_OSX */
+}
 #endif /* USE_ATSUI */
-    {
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
-      UInt32 savedFlags;
 
-      if (mac_use_core_graphics)
-       savedFlags = SwapQDTextFlags (kQDUseCGTextRendering);
+
+static void
+mac_draw_image_string_qd (f, gc, x, y, buf, nchars, bg_width,
+                         overstrike_p, bytes_per_char)
+     struct frame *f;
+     GC gc;
+     int x, y;
+     char *buf;
+     int nchars, bg_width, overstrike_p, bytes_per_char;
+{
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
+  UInt32 savedFlags;
 #endif
-#if USE_CG_DRAWING
-      mac_prepare_for_quickdraw (f);
+
+  mac_begin_clip (f, gc);
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
+  if (mac_use_core_graphics)
+    savedFlags = SwapQDTextFlags (kQDUseCGTextRendering);
 #endif
-      mac_begin_clip (gc);
-      RGBForeColor (GC_FORE_COLOR (gc));
+  RGBForeColor (GC_FORE_COLOR (gc));
 #ifdef MAC_OS8
-      if (bg_width)
-       {
-         RGBBackColor (GC_BACK_COLOR (gc));
-         TextMode (srcCopy);
-       }
-      else
-       TextMode (srcOr);
+  if (bg_width)
+    {
+      RGBBackColor (GC_BACK_COLOR (gc));
+      TextMode (srcCopy);
+    }
+  else
+    TextMode (srcOr);
 #else
-      /* We prefer not to use srcCopy text transfer mode on Mac OS X
-        because:
-        - Screen is double-buffered.  (In srcCopy mode, a text is
-          drawn into an offscreen graphics world first.  So
-          performance gain cannot be expected.)
-        - It lowers rendering quality.
-        - Some fonts leave garbage on cursor movement.  */
-      if (bg_width)
-       {
-         Rect r;
+  /* We prefer not to use srcCopy text transfer mode on Mac OS X
+     because:
+     - Screen is double-buffered.  (In srcCopy mode, a text is drawn
+       into an offscreen graphics world first.  So performance gain
+       cannot be expected.)
+     - It lowers rendering quality.
+     - Some fonts leave garbage on cursor movement.  */
+  if (bg_width)
+    {
+      Rect r;
 
-         RGBBackColor (GC_BACK_COLOR (gc));
-         SetRect (&r, x, y - FONT_BASE (GC_FONT (gc)),
-                  x + bg_width, y + FONT_DESCENT (GC_FONT (gc)));
-         EraseRect (&r);
-       }
-      TextMode (srcOr);
+      RGBBackColor (GC_BACK_COLOR (gc));
+      SetRect (&r, x, y - FONT_BASE (GC_FONT (gc)),
+              x + bg_width, y + FONT_DESCENT (GC_FONT (gc)));
+      EraseRect (&r);
+    }
+  TextMode (srcOr);
 #endif
-      TextFont (GC_FONT (gc)->mac_fontnum);
-      TextSize (GC_FONT (gc)->mac_fontsize);
-      TextFace (GC_FONT (gc)->mac_fontface);
-      MoveTo (x, y);
+  TextFont (GC_FONT (gc)->mac_fontnum);
+  TextSize (GC_FONT (gc)->mac_fontsize);
+  TextFace (GC_FONT (gc)->mac_fontface);
+  MoveTo (x, y);
+  DrawText (buf, 0, nchars * bytes_per_char);
+  if (overstrike_p)
+    {
+      TextMode (srcOr);
+      MoveTo (x + 1, y);
       DrawText (buf, 0, nchars * bytes_per_char);
-      if (overstrike_p)
-       {
-         TextMode (srcOr);
-         MoveTo (x + 1, y);
-         DrawText (buf, 0, nchars * bytes_per_char);
-       }
-      if (bg_width)
-       RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
-      mac_end_clip (gc);
+    }
+  if (bg_width)
+    RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
+  mac_end_clip (gc);
 
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
-      if (mac_use_core_graphics)
-       SwapQDTextFlags(savedFlags);
+  if (mac_use_core_graphics)
+    SwapQDTextFlags(savedFlags);
 #endif
-    }
+}
+
+
+static INLINE void
+mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width,
+                       overstrike_p, bytes_per_char)
+     struct frame *f;
+     GC gc;
+     int x, y;
+     char *buf;
+     int nchars, bg_width, overstrike_p, bytes_per_char;
+{
+#if USE_ATSUI
+  if (GC_FONT (gc)->mac_style)
+    mac_draw_image_string_atsui (f, gc, x, y, buf, nchars, bg_width,
+                                overstrike_p, bytes_per_char);
+  else
+#endif /* USE_ATSUI */
+    mac_draw_image_string_qd (f, gc, x, y, buf, nchars, bg_width,
+                             overstrike_p, bytes_per_char);
 }
 
 
@@ -1376,7 +1386,6 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
      XChar2b *buf;
      int nchars, bg_width, overstrike_p;
 {
-  CGrafPtr port;
   float port_height, gx, gy;
   int i;
   CGContextRef context;
@@ -1386,7 +1395,6 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
   if (!mac_use_core_graphics || GC_FONT (gc)->cg_font == NULL)
     return 0;
 
-  port = GetWindowPort (FRAME_MAC_WINDOW (f));
   port_height = FRAME_PIXEL_HEIGHT (f);
   gx = x;
   gy = port_height - y;
@@ -1407,7 +1415,7 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
 #if USE_CG_DRAWING
   context = mac_begin_cg_clip (f, gc);
 #else
-  QDBeginCGContext (port, &context);
+  QDBeginCGContext (GetWindowPort (FRAME_MAC_WINDOW (f)), &context);
   if (gc->n_clip_rects || bg_width)
     {
       CGContextTranslateCTM (context, 0, port_height);
@@ -1447,7 +1455,7 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
        }
     }
 #if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
-  else
+  else                  /* CGContextShowGlyphsWithAdvances == NULL */
 #endif
 #endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030  */
 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
@@ -1465,7 +1473,7 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
   mac_end_cg_clip (f);
 #else
   CGContextSynchronize (context);
-  QDEndCGContext (port, &context);
+  QDEndCGContext (GetWindowPort (FRAME_MAC_WINDOW (f)), &context);
 #endif
 
   return 1;
@@ -1487,7 +1495,7 @@ mac_copy_area (src, f, gc, src_x, src_y, width, height, dest_x, dest_y)
 {
   Rect src_r, dest_r;
 
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
+  mac_begin_clip (f, gc);
 
   SetRect (&src_r, src_x, src_y, src_x + width, src_y + height);
   SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height);
@@ -1495,7 +1503,6 @@ mac_copy_area (src, f, gc, src_x, src_y, width, height, dest_x, dest_y)
   ForeColor (blackColor);
   BackColor (whiteColor);
 
-  mac_begin_clip (gc);
   LockPixels (GetGWorldPixMap (src));
 #if TARGET_API_MAC_CARBON
   {
@@ -1513,9 +1520,10 @@ mac_copy_area (src, f, gc, src_x, src_y, width, height, dest_x, dest_y)
            &src_r, &dest_r, srcCopy, 0);
 #endif /* not TARGET_API_MAC_CARBON */
   UnlockPixels (GetGWorldPixMap (src));
-  mac_end_clip (gc);
 
   RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
+
+  mac_end_clip (gc);
 }
 
 
@@ -1531,7 +1539,7 @@ mac_copy_area_with_mask (src, mask, f, gc, src_x, src_y,
 {
   Rect src_r, dest_r;
 
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
+  mac_begin_clip (f, gc);
 
   SetRect (&src_r, src_x, src_y, src_x + width, src_y + height);
   SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height);
@@ -1539,7 +1547,6 @@ mac_copy_area_with_mask (src, mask, f, gc, src_x, src_y,
   ForeColor (blackColor);
   BackColor (whiteColor);
 
-  mac_begin_clip (gc);
   LockPixels (GetGWorldPixMap (src));
   LockPixels (GetGWorldPixMap (mask));
 #if TARGET_API_MAC_CARBON
@@ -1559,9 +1566,10 @@ mac_copy_area_with_mask (src, mask, f, gc, src_x, src_y,
 #endif /* not TARGET_API_MAC_CARBON */
   UnlockPixels (GetGWorldPixMap (mask));
   UnlockPixels (GetGWorldPixMap (src));
-  mac_end_clip (gc);
 
   RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
+
+  mac_end_clip (gc);
 }
 #endif /* !USE_CG_DRAWING */
 
@@ -1590,9 +1598,9 @@ mac_scroll_area (f, gc, src_x, src_y, width, height, dest_x, dest_y)
   DisposeRgn (dummy);
 #else /* not TARGET_API_MAC_CARBON */
   Rect src_r, dest_r;
-  WindowPtr w = FRAME_MAC_WINDOW (f);
+  WindowRef w = FRAME_MAC_WINDOW (f);
 
-  SetPort (w);
+  mac_begin_clip (f, gc);
 
   SetRect (&src_r, src_x, src_y, src_x + width, src_y + height);
   SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height);
@@ -1601,11 +1609,11 @@ mac_scroll_area (f, gc, src_x, src_y, width, height, dest_x, dest_y)
      color mapping in CopyBits.  Otherwise, it will be slow.  */
   ForeColor (blackColor);
   BackColor (whiteColor);
-  mac_begin_clip (gc);
   CopyBits (&(w->portBits), &(w->portBits), &src_r, &dest_r, srcCopy, 0);
-  mac_end_clip (gc);
 
   RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
+
+  mac_end_clip (gc);
 #endif /* not TARGET_API_MAC_CARBON */
 }
 
@@ -1850,7 +1858,7 @@ mac_reset_clip_rectangles (display, gc)
 void
 XSetWindowBackground (display, w, color)
      Display *display;
-     WindowPtr w;
+     WindowRef w;
      unsigned long color;
 {
 #if !TARGET_API_MAC_CARBON
@@ -2188,6 +2196,81 @@ x_draw_fringe_bitmap (w, row, p)
   Display *display = FRAME_MAC_DISPLAY (f);
   struct face *face = p->face;
   int rowY;
+  int overlay_p = p->overlay_p;
+
+#ifdef MAC_OSX
+  if (!overlay_p)
+    {
+      int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny;
+
+#if 0  /* MAC_TODO: stipple */
+      /* In case the same realized face is used for fringes and
+        for something displayed in the text (e.g. face `region' on
+        mono-displays, the fill style may have been changed to
+        FillSolid in x_draw_glyph_string_background.  */
+      if (face->stipple)
+       XSetFillStyle (FRAME_X_DISPLAY (f), face->gc, FillOpaqueStippled);
+      else
+       XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->background);
+#endif
+
+      /* If the fringe is adjacent to the left (right) scroll bar of a
+        leftmost (rightmost, respectively) window, then extend its
+        background to the gap between the fringe and the bar.  */
+      if ((WINDOW_LEFTMOST_P (w)
+          && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
+         || (WINDOW_RIGHTMOST_P (w)
+             && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)))
+       {
+         int sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w);
+
+         if (sb_width > 0)
+           {
+             int left = WINDOW_SCROLL_BAR_AREA_X (w);
+             int width = (WINDOW_CONFIG_SCROLL_BAR_COLS (w)
+                          * FRAME_COLUMN_WIDTH (f));
+
+             if (bx < 0
+                 && (left + width == p->x
+                     || p->x + p->wd == left))
+               {
+                 /* Bitmap fills the fringe and we need background
+                    extension.  */
+                 int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w);
+
+                 bx = p->x;
+                 nx = p->wd;
+                 by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height,
+                                                       row->y));
+                 ny = row->visible_height;
+               }
+
+             if (bx >= 0)
+               {
+                 if (left + width == bx)
+                   {
+                     bx = left + sb_width;
+                     nx += width - sb_width;
+                   }
+                 else if (bx + nx == left)
+                   nx += width - sb_width;
+               }
+           }
+       }
+
+      if (bx >= 0)
+       {
+         mac_erase_rectangle (f, face->gc, bx, by, nx, ny);
+         /* The fringe background has already been filled.  */
+         overlay_p = 1;
+       }
+
+#if 0  /* MAC_TODO: stipple */
+      if (!face->stipple)
+       XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->foreground);
+#endif
+    }
+#endif /* MAC_OSX */
 
   /* Must clip because of partially visible lines.  */
   rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
@@ -2206,6 +2289,7 @@ x_draw_fringe_bitmap (w, row, p)
   else
     x_clip_to_row (w, row, -1, face->gc);
 
+#ifndef MAC_OSX
   if (p->bx >= 0 && !p->overlay_p)
     {
 #if 0  /* MAC_TODO: stipple */
@@ -2226,6 +2310,7 @@ x_draw_fringe_bitmap (w, row, p)
        XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->foreground);
 #endif
     }
+#endif /* !MAC_OSX */
 
   if (p->which
 #if USE_CG_DRAWING
@@ -2243,10 +2328,10 @@ x_draw_fringe_bitmap (w, row, p)
                       : face->foreground));
 #if USE_CG_DRAWING
       mac_draw_cg_image (fringe_bmp[p->which], f, face->gc, 0, p->dh,
-                        p->wd, p->h, p->x, p->y, p->overlay_p);
+                        p->wd, p->h, p->x, p->y, overlay_p);
 #else
       mac_draw_bitmap (f, face->gc, p->x, p->y,
-                      p->wd, p->h, p->bits + p->dh, p->overlay_p);
+                      p->wd, p->h, p->bits + p->dh, overlay_p);
 #endif
       XSetForeground (display, face->gc, gcv.foreground);
     }
@@ -2315,7 +2400,7 @@ mac_destroy_fringe_bitmap (which)
    rarely happens).  */
 
 static void
-XTset_terminal_modes ()
+XTset_terminal_modes (struct terminal *t)
 {
 }
 
@@ -2323,7 +2408,7 @@ XTset_terminal_modes ()
    the windows go away, and suspending requires no action.  */
 
 static void
-XTreset_terminal_modes ()
+XTreset_terminal_modes (struct terminal *t)
 {
 }
 
@@ -2883,7 +2968,7 @@ x_draw_glyph_string_foreground (s)
      of S to the right of that box line.  */
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p)
-    x = s->x + abs (s->face->box_line_width);
+    x = s->x + eabs (s->face->box_line_width);
   else
     x = s->x;
 
@@ -2962,7 +3047,7 @@ x_draw_composite_glyph_string_foreground (s)
      of S to the right of that box line.  */
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p)
-    x = s->x + abs (s->face->box_line_width);
+    x = s->x + eabs (s->face->box_line_width);
   else
     x = s->x;
 
@@ -3457,7 +3542,7 @@ x_draw_glyph_string_box (s)
                ? s->first_glyph
                : s->first_glyph + s->nchars - 1);
 
-  width = abs (s->face->box_line_width);
+  width = eabs (s->face->box_line_width);
   raised_p = s->face->box == FACE_RAISED_BOX;
   left_x = s->x;
   right_x = (s->row->full_width_p && s->extends_to_end_of_line_p
@@ -3503,7 +3588,7 @@ x_draw_image_foreground (s)
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p
       && s->slice.x == 0)
-    x += abs (s->face->box_line_width);
+    x += eabs (s->face->box_line_width);
 
   /* If there is a margin around the image, adjust x- and y-position
      by that margin.  */
@@ -3576,7 +3661,7 @@ x_draw_image_relief (s)
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p
       && s->slice.x == 0)
-    x += abs (s->face->box_line_width);
+    x += eabs (s->face->box_line_width);
 
   /* If there is a margin around the image, adjust x- and y-position
      by that margin.  */
@@ -3593,7 +3678,7 @@ x_draw_image_relief (s)
     }
   else
     {
-      thick = abs (s->img->relief);
+      thick = eabs (s->img->relief);
       raised_p = s->img->relief > 0;
     }
 
@@ -3654,7 +3739,7 @@ x_draw_image_glyph_string (s)
      struct glyph_string *s;
 {
   int x, y;
-  int box_line_hwidth = abs (s->face->box_line_width);
+  int box_line_hwidth = eabs (s->face->box_line_width);
   int box_line_vwidth = max (s->face->box_line_width, 0);
   int height;
 
@@ -3973,15 +4058,8 @@ x_delete_glyphs (n)
    frame.  Otherwise clear the selected frame.  */
 
 static void
-x_clear_frame ()
+x_clear_frame (struct frame *f)
 {
-  struct frame *f;
-
-  if (updating_frame)
-    f = updating_frame;
-  else
-    f = SELECTED_FRAME ();
-
   /* Clearing the frame will erase any cursor, so mark them all as no
      longer visible.  */
   mark_window_cursors_off (XWINDOW (FRAME_ROOT_WINDOW (f)));
@@ -4267,14 +4345,6 @@ static void
 frame_highlight (f)
      struct frame *f;
 {
-  OSErr err;
-  ControlRef root_control;
-
-  BLOCK_INPUT;
-  err = GetRootControl (FRAME_MAC_WINDOW (f), &root_control);
-  if (err == noErr)
-    ActivateControl (root_control);
-  UNBLOCK_INPUT;
   x_update_cursor (f, 1);
 }
 
@@ -4282,14 +4352,6 @@ static void
 frame_unhighlight (f)
      struct frame *f;
 {
-  OSErr err;
-  ControlRef root_control;
-
-  BLOCK_INPUT;
-  err = GetRootControl (FRAME_MAC_WINDOW (f), &root_control);
-  if (err == noErr)
-    DeactivateControl (root_control);
-  UNBLOCK_INPUT;
   x_update_cursor (f, 1);
 }
 
@@ -4389,7 +4451,7 @@ x_detect_focus_change (dpyinfo, event, bufp)
 {
   struct frame *frame;
 
-  frame = mac_window_to_frame ((WindowPtr) event->message);
+  frame = mac_window_to_frame ((WindowRef) event->message);
   if (! frame)
     return;
 
@@ -4515,7 +4577,7 @@ note_mouse_movement (frame, pos)
       clear_mouse_face (dpyinfo);
       dpyinfo->mouse_face_mouse_frame = 0;
       if (!dpyinfo->grabbed)
-       rif->define_frame_cursor (frame,
+       FRAME_RIF (frame)->define_frame_cursor (frame,
                                  frame->output_data.mac->nontext_cursor);
     }
 
@@ -4629,8 +4691,14 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time)
             the frame are divided into.  */
          Point mouse_pos;
 
+#if TARGET_API_MAC_CARBON
+         GetGlobalMouse (&mouse_pos);
+         mouse_pos.h -= f1->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f1);
+         mouse_pos.v -= f1->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f1);
+#else
          SetPortWindowPort (FRAME_MAC_WINDOW (f1));
          GetMouse (&mouse_pos);
+#endif
          remember_mouse_glyph (f1, mouse_pos.h, mouse_pos.v,
                                &last_mouse_glyph);
          last_mouse_glyph_frame = f1;
@@ -4660,14 +4728,14 @@ static OSStatus set_scroll_bar_timer P_ ((EventTimerInterval));
 static int control_part_code_to_scroll_bar_part P_ ((ControlPartCode));
 static void construct_scroll_bar_click P_ ((struct scroll_bar *, int,
                                            struct input_event *));
-static OSStatus get_control_part_bounds P_ ((ControlHandle, ControlPartCode,
+static OSStatus get_control_part_bounds P_ ((ControlRef, ControlPartCode,
                                             Rect *));
 static void x_scroll_bar_handle_press P_ ((struct scroll_bar *,
                                           ControlPartCode, Point,
                                           struct input_event *));
 static void x_scroll_bar_handle_release P_ ((struct scroll_bar *,
                                             struct input_event *));
-static void x_scroll_bar_handle_drag P_ ((WindowPtr, struct scroll_bar *,
+static void x_scroll_bar_handle_drag P_ ((WindowRef, struct scroll_bar *,
                                          Point, struct input_event *));
 static void x_set_toolkit_scroll_bar_thumb P_ ((struct scroll_bar *,
                                                int, int, int));
@@ -4760,7 +4828,7 @@ construct_scroll_bar_click (bar, part, bufp)
 
 static OSStatus
 get_control_part_bounds (ch, part_code, rect)
-     ControlHandle ch;
+     ControlRef ch;
      ControlPartCode part_code;
      Rect *rect;
 {
@@ -4790,7 +4858,7 @@ x_scroll_bar_handle_press (bar, part_code, mouse_pos, bufp)
   if (part != scroll_bar_handle)
     {
       construct_scroll_bar_click (bar, part, bufp);
-      HiliteControl (SCROLL_BAR_CONTROL_HANDLE (bar), part_code);
+      HiliteControl (SCROLL_BAR_CONTROL_REF (bar), part_code);
       set_scroll_bar_timer (SCROLL_BAR_FIRST_DELAY);
       bar->dragging = Qnil;
     }
@@ -4798,7 +4866,7 @@ x_scroll_bar_handle_press (bar, part_code, mouse_pos, bufp)
     {
       Rect r;
 
-      get_control_part_bounds (SCROLL_BAR_CONTROL_HANDLE (bar),
+      get_control_part_bounds (SCROLL_BAR_CONTROL_REF (bar),
                               kControlIndicatorPart, &r);
       XSETINT (bar->dragging, - (mouse_pos.v - r.top) - 1);
     }
@@ -4816,7 +4884,7 @@ x_scroll_bar_handle_release (bar, bufp)
       || (INTEGERP (bar->dragging) && XINT (bar->dragging) >= 0))
     construct_scroll_bar_click (bar, scroll_bar_end_scroll, bufp);
 
-  HiliteControl (SCROLL_BAR_CONTROL_HANDLE (bar), 0);
+  HiliteControl (SCROLL_BAR_CONTROL_REF (bar), 0);
   set_scroll_bar_timer (kEventDurationForever);
 
   last_scroll_bar_part = -1;
@@ -4826,19 +4894,19 @@ x_scroll_bar_handle_release (bar, bufp)
 
 static void
 x_scroll_bar_handle_drag (win, bar, mouse_pos, bufp)
-     WindowPtr win;
+     WindowRef win;
      struct scroll_bar *bar;
      Point mouse_pos;
      struct input_event *bufp;
 {
-  ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar);
+  ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
 
   if (last_scroll_bar_part == scroll_bar_handle)
     {
       int top, top_range;
       Rect r;
 
-      get_control_part_bounds (SCROLL_BAR_CONTROL_HANDLE (bar),
+      get_control_part_bounds (SCROLL_BAR_CONTROL_REF (bar),
                               kControlIndicatorPart, &r);
 
       if (INTEGERP (bar->dragging) && XINT (bar->dragging) < 0)
@@ -4886,13 +4954,13 @@ x_scroll_bar_handle_drag (win, bar, mouse_pos, bufp)
        }
 
       if (unhilite_p)
-       HiliteControl (SCROLL_BAR_CONTROL_HANDLE (bar), 0);
+       HiliteControl (SCROLL_BAR_CONTROL_REF (bar), 0);
       else if (part != last_scroll_bar_part
               || scroll_bar_timer_event_posted_p)
        {
          construct_scroll_bar_click (bar, part, bufp);
          last_scroll_bar_part = part;
-         HiliteControl (SCROLL_BAR_CONTROL_HANDLE (bar), part_code);
+         HiliteControl (SCROLL_BAR_CONTROL_REF (bar), part_code);
          set_scroll_bar_timer (SCROLL_BAR_CONTINUOUS_DELAY);
        }
     }
@@ -4906,7 +4974,7 @@ x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole)
      struct scroll_bar *bar;
      int portion, position, whole;
 {
-  ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar);
+  ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
   int value, viewsize, maximum;
 
   if (XINT (bar->track_height) == 0)
@@ -4965,7 +5033,7 @@ x_scroll_bar_create (w, top, left, width, height, disp_top, disp_height)
   struct scroll_bar *bar
     = XSCROLL_BAR (Fmake_vector (make_number (SCROLL_BAR_VEC_SIZE), Qnil));
   Rect r;
-  ControlHandle ch;
+  ControlRef ch;
 
   BLOCK_INPUT;
 
@@ -4989,7 +5057,7 @@ x_scroll_bar_create (w, top, left, width, height, disp_top, disp_height)
   ch = NewControl (FRAME_MAC_WINDOW (f), &r, "\p", width < disp_height,
                   0, 0, 0, scrollBarProc, (long) bar);
 #endif
-  SET_SCROLL_BAR_CONTROL_HANDLE (bar, ch);
+  SET_SCROLL_BAR_CONTROL_REF (bar, ch);
 
   XSETWINDOW (bar->window, w);
   XSETINT (bar->top, top);
@@ -4999,6 +5067,9 @@ x_scroll_bar_create (w, top, left, width, height, disp_top, disp_height)
   XSETINT (bar->start, 0);
   XSETINT (bar->end, 0);
   bar->dragging = Qnil;
+#ifdef MAC_OSX
+  bar->fringe_extended_p = Qnil;
+#endif
 #ifdef USE_TOOLKIT_SCROLL_BARS
   bar->track_top = Qnil;
   bar->track_height = Qnil;
@@ -5039,7 +5110,7 @@ x_scroll_bar_set_handle (bar, start, end, rebuild)
      int rebuild;
 {
   int dragging = ! NILP (bar->dragging);
-  ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar);
+  ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
   FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
   int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height));
   int length = end - start;
@@ -5108,7 +5179,7 @@ x_scroll_bar_remove (bar)
   mac_prepare_for_quickdraw (f);
 #endif
   /* Destroy the Mac scroll bar control  */
-  DisposeControl (SCROLL_BAR_CONTROL_HANDLE (bar));
+  DisposeControl (SCROLL_BAR_CONTROL_REF (bar));
 
   /* Disassociate this scroll bar from its window.  */
   XWINDOW (bar->window)->vertical_scroll_bar = Qnil;
@@ -5131,6 +5202,9 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
   struct scroll_bar *bar;
   int top, height, left, sb_left, width, sb_width, disp_top, disp_height;
   int window_y, window_height;
+#ifdef MAC_OSX
+  int fringe_extended_p;
+#endif
 
   /* Get window dimensions.  */
   window_box (w, -1, 0, &window_y, 0, &window_height);
@@ -5150,9 +5224,9 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
 
   /* Compute the left edge of the scroll bar.  */
   if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
-    sb_left = left;
+    sb_left = left + (WINDOW_RIGHTMOST_P (w) ? width - sb_width : 0);
   else
-    sb_left = left + width - sb_width;
+    sb_left = left + (WINDOW_LEFTMOST_P (w) ? 0 : width - sb_width);
 
   /* Adjustments according to Inside Macintosh to make it look nice */
   disp_top = top;
@@ -5173,11 +5247,29 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
     sb_left++;
 #endif
 
+#ifdef MAC_OSX
+  if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
+    fringe_extended_p = (WINDOW_LEFTMOST_P (w)
+                        && WINDOW_LEFT_FRINGE_WIDTH (w)
+                        && (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+                            || WINDOW_LEFT_MARGIN_COLS (w) == 0));
+  else
+    fringe_extended_p = (WINDOW_RIGHTMOST_P (w)
+                        && WINDOW_RIGHT_FRINGE_WIDTH (w)
+                        && (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+                            || WINDOW_RIGHT_MARGIN_COLS (w) == 0));
+#endif
+
   /* Does the scroll bar exist yet?  */
   if (NILP (w->vertical_scroll_bar))
     {
       BLOCK_INPUT;
-      mac_clear_area (f, left, top, width, height);
+#ifdef MAC_OSX
+      if (fringe_extended_p)
+       mac_clear_area (f, sb_left, top, sb_width, height);
+      else
+#endif
+       mac_clear_area (f, left, top, width, height);
       UNBLOCK_INPUT;
       bar = x_scroll_bar_create (w, top, sb_left, sb_width, height, disp_top,
                                 disp_height);
@@ -5186,10 +5278,10 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
   else
     {
       /* It may just need to be moved and resized.  */
-      ControlHandle ch;
+      ControlRef ch;
 
       bar = XSCROLL_BAR (w->vertical_scroll_bar);
-      ch = SCROLL_BAR_CONTROL_HANDLE (bar);
+      ch = SCROLL_BAR_CONTROL_REF (bar);
 
       BLOCK_INPUT;
 
@@ -5197,11 +5289,20 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
       if (!(XINT (bar->left) == sb_left
            && XINT (bar->top) == top
            && XINT (bar->width) == sb_width
-           && XINT (bar->height) == height))
+           && XINT (bar->height) == height
+#ifdef MAC_OSX
+           && !NILP (bar->fringe_extended_p) == fringe_extended_p
+#endif
+           ))
        {
          /* Since toolkit scroll bars are smaller than the space reserved
             for them on the frame, we have to clear "under" them.  */
-         mac_clear_area (f, left, top, width, height);
+#ifdef MAC_OSX
+         if (fringe_extended_p)
+           mac_clear_area (f, sb_left, top, sb_width, height);
+         else
+#endif
+           mac_clear_area (f, left, top, width, height);
 
 #if USE_CG_DRAWING
          mac_prepare_for_quickdraw (f);
@@ -5230,6 +5331,10 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
       UNBLOCK_INPUT;
     }
 
+#ifdef MAC_OSX
+  bar->fringe_extended_p = fringe_extended_p ? Qt : Qnil;
+#endif
+
 #ifdef USE_TOOLKIT_SCROLL_BARS
   if (NILP (bar->track_top))
     {
@@ -5245,7 +5350,7 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
        }
       else
        {
-         ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar);
+         ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
          Rect r0, r1;
 
          BLOCK_INPUT;
@@ -5522,19 +5627,24 @@ x_scroll_bar_report_motion (fp, bar_window, part, x, y, time)
      unsigned long *time;
 {
   struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar);
-  ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar);
+  ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
 #if TARGET_API_MAC_CARBON
-  WindowPtr wp = GetControlOwner (ch);
+  WindowRef wp = GetControlOwner (ch);
 #else
-  WindowPtr wp = (*ch)->contrlOwner;
+  WindowRef wp = (*ch)->contrlOwner;
 #endif
   Point mouse_pos;
   struct frame *f = mac_window_to_frame (wp);
   int win_y, top_range;
 
+#if TARGET_API_MAC_CARBON
+  GetGlobalMouse (&mouse_pos);
+  mouse_pos.h -= f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f);
+  mouse_pos.v -= f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f);
+#else
   SetPortWindowPort (wp);
-
   GetMouse (&mouse_pos);
+#endif
 
   win_y = mouse_pos.v - XINT (bar->top);
   top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height));
@@ -5588,167 +5698,702 @@ x_scroll_bar_clear (f)
 
 \f
 /***********************************************************************
-                            Text Cursor
+                              Tool-bars
  ***********************************************************************/
+#if USE_MAC_TOOLBAR
 
-/* Set clipping for output in glyph row ROW.  W is the window in which
-   we operate.  GC is the graphics context to set clipping in.
-
-   ROW may be a text row or, e.g., a mode line.  Text rows must be
-   clipped to the interior of the window dedicated to text display,
-   mode lines must be clipped to the whole window.  */
-
-static void
-x_clip_to_row (w, row, area, gc)
-     struct window *w;
-     struct glyph_row *row;
-     int area;
-     GC gc;
-{
-  struct frame *f = XFRAME (WINDOW_FRAME (w));
-  Rect clip_rect;
-  int window_x, window_y, window_width;
-
-  window_box (w, area, &window_x, &window_y, &window_width, 0);
-
-  clip_rect.left = window_x;
-  clip_rect.top = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
-  clip_rect.top = max (clip_rect.top, window_y);
-  clip_rect.right = clip_rect.left + window_width;
-  clip_rect.bottom = clip_rect.top + row->visible_height;
+/* In identifiers such as function/variable names, Emacs tool bar is
+   referred to as `tool_bar', and Carbon HIToolbar as `toolbar'.  */
 
-  mac_set_clip_rectangles (FRAME_MAC_DISPLAY (f), gc, &clip_rect, 1);
-}
+#define TOOLBAR_IDENTIFIER (CFSTR ("org.gnu.Emacs.toolbar"))
+#define TOOLBAR_ICON_ITEM_IDENTIFIER (CFSTR ("org.gnu.Emacs.toolbar.icon"))
 
+#define TOOLBAR_ITEM_COMMAND_ID_OFFSET 'Tb\0\0'
+#define TOOLBAR_ITEM_COMMAND_ID_P(id)                  \
+  (((id) & ~0xffff) == TOOLBAR_ITEM_COMMAND_ID_OFFSET)
+#define TOOLBAR_ITEM_COMMAND_ID_VALUE(id)      \
+  ((id) - TOOLBAR_ITEM_COMMAND_ID_OFFSET)
+#define TOOLBAR_ITEM_MAKE_COMMAND_ID(value)    \
+  ((value) + TOOLBAR_ITEM_COMMAND_ID_OFFSET)
 
-/* Draw a hollow box cursor on window W in glyph row ROW.  */
+static int mac_event_to_emacs_modifiers P_ ((EventRef));
+static void mac_handle_origin_change P_ ((struct frame *));
+static OSStatus mac_handle_toolbar_command_event P_ ((EventHandlerCallRef,
+                                                     EventRef, void *));
 
 static void
-x_draw_hollow_cursor (w, row)
-     struct window *w;
-     struct glyph_row *row;
+mac_move_window_with_gravity (f, win_gravity, left, top)
+     struct frame *f;
+     int win_gravity;
+     short left, top;
 {
-  struct frame *f = XFRAME (WINDOW_FRAME (w));
-  struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
-  Display *dpy = FRAME_MAC_DISPLAY (f);
-  int x, y, wd, h;
-  XGCValues xgcv;
-  struct glyph *cursor_glyph;
-  GC gc;
+  Rect inner, outer;
 
-  /* Get the glyph the cursor is on.  If we can't tell because
-     the current matrix is invalid or such, give up.  */
-  cursor_glyph = get_phys_cursor_glyph (w);
-  if (cursor_glyph == NULL)
-    return;
+  mac_get_window_bounds (f, &inner, &outer);
 
-  /* Compute frame-relative coordinates for phys cursor.  */
-  get_phys_cursor_geometry (w, row, cursor_glyph, &x, &y, &h);
-  wd = w->phys_cursor_width;
+  switch (win_gravity)
+    {
+    case NorthWestGravity:
+    case WestGravity:
+    case SouthWestGravity:
+      left += inner.left - outer.left;
+      break;
 
-  /* The foreground of cursor_gc is typically the same as the normal
-     background color, which can cause the cursor box to be invisible.  */
-  xgcv.foreground = f->output_data.mac->cursor_pixel;
-  if (dpyinfo->scratch_cursor_gc)
-    XChangeGC (dpy, dpyinfo->scratch_cursor_gc, GCForeground, &xgcv);
-  else
-    dpyinfo->scratch_cursor_gc = XCreateGC (dpy, FRAME_MAC_WINDOW (f),
-                                           GCForeground, &xgcv);
-  gc = dpyinfo->scratch_cursor_gc;
+    case NorthGravity:
+    case CenterGravity:
+    case SouthGravity:
+      left += ((inner.left - outer.left) + (inner.right - outer.right)) / 2;
+      break;
 
-  /* Set clipping, draw the rectangle, and reset clipping again.  */
-  x_clip_to_row (w, row, TEXT_AREA, gc);
-  mac_draw_rectangle (f, gc, x, y, wd, h - 1);
-  mac_reset_clip_rectangles (dpy, gc);
-}
+    case NorthEastGravity:
+    case EastGravity:
+    case SouthEastGravity:
+      left += inner.right - outer.right;
+      break;
+    }
 
+  switch (win_gravity)
+    {
+    case NorthWestGravity:
+    case NorthGravity:
+    case NorthEastGravity:
+      top += inner.top - outer.top;
+      break;
 
-/* Draw a bar cursor on window W in glyph row ROW.
+    case WestGravity:
+    case CenterGravity:
+    case EastGravity:
+      top += ((inner.top - outer.top) + (inner.bottom - outer.bottom)) / 2;
+      break;
 
-   Implementation note: One would like to draw a bar cursor with an
-   angle equal to the one given by the font property XA_ITALIC_ANGLE.
-   Unfortunately, I didn't find a font yet that has this property set.
-   --gerd.  */
+    case SouthWestGravity:
+    case SouthGravity:
+    case SouthEastGravity:
+      top += inner.bottom - outer.bottom;
+      break;
+    }
+
+  MoveWindow (FRAME_MAC_WINDOW (f), left, top, false);
+}
 
 static void
-x_draw_bar_cursor (w, row, width, kind)
-     struct window *w;
-     struct glyph_row *row;
-     int width;
-     enum text_cursor_kinds kind;
+mac_get_window_origin_with_gravity (f, win_gravity, left, top)
+     struct frame *f;
+     int win_gravity;
+     short *left, *top;
 {
-  struct frame *f = XFRAME (w->frame);
-  struct glyph *cursor_glyph;
+  Rect inner, outer;
 
-  /* If cursor is out of bounds, don't draw garbage.  This can happen
-     in mini-buffer windows when switching between echo area glyphs
-     and mini-buffer.  */
-  cursor_glyph = get_phys_cursor_glyph (w);
-  if (cursor_glyph == NULL)
-    return;
+  mac_get_window_bounds (f, &inner, &outer);
 
-  /* If on an image, draw like a normal cursor.  That's usually better
-     visible than drawing a bar, esp. if the image is large so that
-     the bar might not be in the window.  */
-  if (cursor_glyph->type == IMAGE_GLYPH)
+  switch (win_gravity)
     {
-      struct glyph_row *row;
-      row = MATRIX_ROW (w->current_matrix, w->phys_cursor.vpos);
-      draw_phys_cursor_glyph (w, row, DRAW_CURSOR);
+    case NorthWestGravity:
+    case WestGravity:
+    case SouthWestGravity:
+      *left = outer.left;
+      break;
+
+    case NorthGravity:
+    case CenterGravity:
+    case SouthGravity:
+      *left = outer.left + ((outer.right - outer.left)
+                           - (inner.right - inner.left)) / 2;
+      break;
+
+    case NorthEastGravity:
+    case EastGravity:
+    case SouthEastGravity:
+      *left = outer.right - (inner.right - inner.left);
+      break;
     }
-  else
+
+  switch (win_gravity)
     {
-      Display *dpy = FRAME_MAC_DISPLAY (f);
-      Window window = FRAME_MAC_WINDOW (f);
-      GC gc = FRAME_MAC_DISPLAY_INFO (f)->scratch_cursor_gc;
-      unsigned long mask = GCForeground | GCBackground;
-      struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id);
-      XGCValues xgcv;
+    case NorthWestGravity:
+    case NorthGravity:
+    case NorthEastGravity:
+      *top = outer.top;
+      break;
 
-      /* If the glyph's background equals the color we normally draw
-        the bar cursor in, the bar cursor in its normal color is
-        invisible.  Use the glyph's foreground color instead in this
-        case, on the assumption that the glyph's colors are chosen so
-        that the glyph is legible.  */
-      if (face->background == f->output_data.mac->cursor_pixel)
-       xgcv.background = xgcv.foreground = face->foreground;
-      else
-       xgcv.background = xgcv.foreground = f->output_data.mac->cursor_pixel;
+    case WestGravity:
+    case CenterGravity:
+    case EastGravity:
+      *top = outer.top + ((outer.bottom - outer.top)
+                         - (inner.bottom - inner.top)) / 2;
+      break;
 
-      if (gc)
-       XChangeGC (dpy, gc, mask, &xgcv);
-      else
-       {
-         gc = XCreateGC (dpy, window, mask, &xgcv);
-         FRAME_MAC_DISPLAY_INFO (f)->scratch_cursor_gc = gc;
-       }
+    case SouthWestGravity:
+    case SouthGravity:
+    case SouthEastGravity:
+      *top = outer.bottom - (inner.bottom - inner.top);
+      break;
+    }
+}
 
-      if (width < 0)
-       width = FRAME_CURSOR_WIDTH (f);
-      width = min (cursor_glyph->pixel_width, width);
+static OSStatus
+mac_handle_toolbar_event (next_handler, event, data)
+     EventHandlerCallRef next_handler;
+     EventRef event;
+     void *data;
+{
+  OSStatus err, result = eventNotHandledErr;
 
-      w->phys_cursor_width = width;
-      x_clip_to_row (w, row, TEXT_AREA, gc);
+  switch (GetEventKind (event))
+    {
+    case kEventToolbarGetDefaultIdentifiers:
+      result = noErr;
+      break;
 
-      if (kind == BAR_CURSOR)
-       mac_fill_rectangle (f, gc,
-                           WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x),
-                           WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y),
-                           width, row->height);
-      else
-       mac_fill_rectangle (f, gc,
-                           WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x),
-                           WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y +
-                                                    row->height - width),
-                           cursor_glyph->pixel_width,
-                           width);
+    case kEventToolbarGetAllowedIdentifiers:
+      {
+       CFMutableArrayRef array;
 
-      mac_reset_clip_rectangles (dpy, gc);
-    }
-}
+       GetEventParameter (event, kEventParamMutableArray,
+                          typeCFMutableArrayRef, NULL,
+                          sizeof (CFMutableArrayRef), NULL, &array);
+       CFArrayAppendValue (array, TOOLBAR_ICON_ITEM_IDENTIFIER);
+       result = noErr;
+      }
+      break;
 
+    case kEventToolbarCreateItemWithIdentifier:
+      {
+       CFStringRef identifier;
+       HIToolbarItemRef item = NULL;
 
-/* RIF: Define cursor CURSOR on frame F.  */
+       GetEventParameter (event, kEventParamToolbarItemIdentifier,
+                          typeCFStringRef, NULL,
+                          sizeof (CFStringRef), NULL, &identifier);
+
+       if (CFStringCompare (identifier, TOOLBAR_ICON_ITEM_IDENTIFIER, 0)
+           == kCFCompareEqualTo)
+         HIToolbarItemCreate (identifier,
+                              kHIToolbarItemAllowDuplicates
+                              | kHIToolbarItemCantBeRemoved, &item);
+
+       if (item)
+         {
+           SetEventParameter (event, kEventParamToolbarItem,
+                              typeHIToolbarItemRef,
+                              sizeof (HIToolbarItemRef), &item);
+           result = noErr;
+         }
+      }
+      break;
+
+    default:
+      abort ();
+    }
+
+  return result;
+}
+
+static CGImageRef
+mac_image_spec_to_cg_image (f, image)
+     struct frame *f;
+     Lisp_Object image;
+{
+  if (!valid_image_p (image))
+    return NULL;
+  else
+    {
+      int img_id = lookup_image (f, image);
+      struct image *img = IMAGE_FROM_ID (f, img_id);
+
+      prepare_image_for_display (f, img);
+
+      return img->data.ptr_val;
+    }
+}
+
+/* Create a tool bar for frame F.  */
+
+static OSStatus
+mac_create_frame_tool_bar (f)
+     FRAME_PTR f;
+{
+  OSStatus err;
+  HIToolbarRef toolbar;
+
+  err = HIToolbarCreate (TOOLBAR_IDENTIFIER, kHIToolbarNoAttributes,
+                        &toolbar);
+  if (err == noErr)
+    {
+      static const EventTypeSpec specs[] =
+       {{kEventClassToolbar, kEventToolbarGetDefaultIdentifiers},
+        {kEventClassToolbar, kEventToolbarGetAllowedIdentifiers},
+        {kEventClassToolbar, kEventToolbarCreateItemWithIdentifier}};
+
+      err = InstallEventHandler (HIObjectGetEventTarget (toolbar),
+                                mac_handle_toolbar_event,
+                                GetEventTypeCount (specs), specs,
+                                f, NULL);
+    }
+
+  if (err == noErr)
+    err = HIToolbarSetDisplayMode (toolbar, kHIToolbarDisplayModeIconOnly);
+  if (err == noErr)
+    {
+      static const EventTypeSpec specs[] =
+       {{kEventClassCommand, kEventCommandProcess}};
+
+      err = InstallWindowEventHandler (FRAME_MAC_WINDOW (f),
+                                      mac_handle_toolbar_command_event,
+                                      GetEventTypeCount (specs),
+                                      specs, f, NULL);
+    }
+  if (err == noErr)
+    err = SetWindowToolbar (FRAME_MAC_WINDOW (f), toolbar);
+
+  if (toolbar)
+    CFRelease (toolbar);
+
+  return err;
+}
+
+/* Update the tool bar for frame F.  Add new buttons and remove old.  */
+
+void
+update_frame_tool_bar (f)
+     FRAME_PTR f;
+{
+  HIToolbarRef toolbar = NULL;
+  short left, top;
+  CFArrayRef old_items = NULL;
+  CFIndex old_count;
+  int i, pos, win_gravity = f->output_data.mac->toolbar_win_gravity;
+  struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
+
+  BLOCK_INPUT;
+
+  GetWindowToolbar (FRAME_MAC_WINDOW (f), &toolbar);
+  if (toolbar == NULL)
+    {
+      mac_create_frame_tool_bar (f);
+      GetWindowToolbar (FRAME_MAC_WINDOW (f), &toolbar);
+      if (toolbar == NULL)
+       goto out;
+      if (win_gravity >= NorthWestGravity && win_gravity <= SouthEastGravity)
+       mac_get_window_origin_with_gravity (f, win_gravity, &left, &top);
+    }
+
+  HIToolbarCopyItems (toolbar, &old_items);
+  if (old_items == NULL)
+    goto out;
+
+  old_count = CFArrayGetCount (old_items);
+  pos = 0;
+  for (i = 0; i < f->n_tool_bar_items; ++i)
+    {
+#define PROP(IDX) AREF (f->tool_bar_items, i * TOOL_BAR_ITEM_NSLOTS + (IDX))
+
+      int enabled_p = !NILP (PROP (TOOL_BAR_ITEM_ENABLED_P));
+      int selected_p = !NILP (PROP (TOOL_BAR_ITEM_SELECTED_P));
+      int idx;
+      Lisp_Object image;
+      CGImageRef cg_image;
+      CFStringRef label;
+      HIToolbarItemRef item;
+
+      /* If image is a vector, choose the image according to the
+        button state.  */
+      image = PROP (TOOL_BAR_ITEM_IMAGES);
+      if (VECTORP (image))
+       {
+         if (enabled_p)
+           idx = (selected_p
+                  ? TOOL_BAR_IMAGE_ENABLED_SELECTED
+                  : TOOL_BAR_IMAGE_ENABLED_DESELECTED);
+         else
+           idx = (selected_p
+                  ? TOOL_BAR_IMAGE_DISABLED_SELECTED
+                  : TOOL_BAR_IMAGE_DISABLED_DESELECTED);
+
+         xassert (ASIZE (image) >= idx);
+         image = AREF (image, idx);
+       }
+      else
+       idx = -1;
+
+      cg_image = mac_image_spec_to_cg_image (f, image);
+      /* Ignore invalid image specifications.  */
+      if (cg_image == NULL)
+       continue;
+
+      label = cfstring_create_with_string (PROP (TOOL_BAR_ITEM_CAPTION));
+      if (label == NULL)
+       label = CFSTR ("");
+
+      if (pos < old_count)
+       {
+         CGImageRef old_cg_image = NULL;
+         CFStringRef old_label = NULL;
+         Boolean old_enabled_p;
+
+         item = (HIToolbarItemRef) CFArrayGetValueAtIndex (old_items, pos);
+
+         HIToolbarItemCopyImage (item, &old_cg_image);
+         if (cg_image != old_cg_image)
+           HIToolbarItemSetImage (item, cg_image);
+         CGImageRelease (old_cg_image);
+
+         HIToolbarItemCopyLabel (item, &old_label);
+         if (CFStringCompare (label, old_label, 0) != kCFCompareEqualTo)
+           HIToolbarItemSetLabel (item, label);
+         CFRelease (old_label);
+
+         old_enabled_p = HIToolbarItemIsEnabled (item);
+         if ((enabled_p || idx >= 0) != old_enabled_p)
+           HIToolbarItemSetEnabled (item, (enabled_p || idx >= 0));
+       }
+      else
+       {
+         item = NULL;
+         HIToolbarCreateItemWithIdentifier (toolbar,
+                                            TOOLBAR_ICON_ITEM_IDENTIFIER,
+                                            NULL, &item);
+         if (item)
+           {
+             HIToolbarItemSetImage (item, cg_image);
+             HIToolbarItemSetLabel (item, label);
+             HIToolbarItemSetEnabled (item, (enabled_p || idx >= 0));
+             HIToolbarAppendItem (toolbar, item);
+             CFRelease (item);
+           }
+       }
+
+      CFRelease (label);
+      if (item)
+       {
+         HIToolbarItemSetCommandID (item, TOOLBAR_ITEM_MAKE_COMMAND_ID (i));
+         pos++;
+       }
+    }
+
+  CFRelease (old_items);
+
+  while (pos < old_count)
+    HIToolbarRemoveItemAtIndex (toolbar, --old_count);
+
+  ShowHideWindowToolbar (FRAME_MAC_WINDOW (f), true,
+                        !win_gravity && f == mac_focus_frame (dpyinfo));
+  /* Mac OS X 10.3 does not issue kEventWindowBoundsChanged events on
+     toolbar visibility change.  */
+  mac_handle_origin_change (f);
+  if (win_gravity >= NorthWestGravity && win_gravity <= SouthEastGravity)
+    {
+      mac_move_window_with_gravity (f, win_gravity, left, top);
+      /* If the title bar is completely outside the screen, adjust the
+        position. */
+      ConstrainWindowToScreen (FRAME_MAC_WINDOW (f), kWindowTitleBarRgn,
+                              kWindowConstrainMoveRegardlessOfFit
+                              | kWindowConstrainAllowPartial, NULL, NULL);
+      f->output_data.mac->toolbar_win_gravity = 0;
+    }
+
+ out:
+  UNBLOCK_INPUT;
+}
+
+/* Hide the tool bar on frame F.  Unlike the counterpart on GTK+, it
+   doesn't deallocate the resources.  */
+
+void
+free_frame_tool_bar (f)
+     FRAME_PTR f;
+{
+  if (IsWindowToolbarVisible (FRAME_MAC_WINDOW (f)))
+    {
+      struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
+
+      BLOCK_INPUT;
+      ShowHideWindowToolbar (FRAME_MAC_WINDOW (f), false,
+                            (NILP (Fsymbol_value
+                                   (intern ("frame-notice-user-settings")))
+                             && f == mac_focus_frame (dpyinfo)));
+      /* Mac OS X 10.3 does not issue kEventWindowBoundsChanged events
+        on toolbar visibility change.  */
+      mac_handle_origin_change (f);
+      UNBLOCK_INPUT;
+    }
+}
+
+static void
+mac_tool_bar_note_mouse_movement (f, event)
+     struct frame *f;
+     EventRef event;
+{
+  OSStatus err;
+  struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
+  int mouse_down_p;
+  HIViewRef item_view;
+  UInt32 command_id;
+
+  mouse_down_p = (dpyinfo->grabbed
+                 && f == last_mouse_frame
+                 && FRAME_LIVE_P (f));
+  if (mouse_down_p)
+    return;
+
+  err = HIViewGetViewForMouseEvent (HIViewGetRoot (FRAME_MAC_WINDOW (f)),
+                                   event, &item_view);
+  /* This doesn't work on Mac OS X 10.2.  On Mac OS X 10.3 and 10.4, a
+     toolbar item view seems to have the same command ID with that of
+     the toolbar item.  */
+  if (err == noErr)
+    err = GetControlCommandID (item_view, &command_id);
+  if (err == noErr && TOOLBAR_ITEM_COMMAND_ID_P (command_id))
+    {
+      int i = TOOLBAR_ITEM_COMMAND_ID_VALUE (command_id);
+
+      if (i < f->n_tool_bar_items)
+       {
+         HIRect bounds;
+         HIViewRef content_view;
+
+         err = HIViewGetBounds (item_view, &bounds);
+         if (err == noErr)
+           err = HIViewFindByID (HIViewGetRoot (FRAME_MAC_WINDOW (f)),
+                                 kHIViewWindowContentID, &content_view);
+         if (err == noErr)
+           err = HIViewConvertRect (&bounds, item_view, content_view);
+         if (err == noErr)
+           SetRect (&last_mouse_glyph,
+                    CGRectGetMinX (bounds), CGRectGetMinY (bounds),
+                    CGRectGetMaxX (bounds), CGRectGetMaxY (bounds));
+
+         help_echo_object = help_echo_window = Qnil;
+         help_echo_pos = -1;
+         help_echo_string = PROP (TOOL_BAR_ITEM_HELP);
+         if (NILP (help_echo_string))
+           help_echo_string = PROP (TOOL_BAR_ITEM_CAPTION);
+       }
+    }
+}
+
+static OSStatus
+mac_handle_toolbar_command_event (next_handler, event, data)
+     EventHandlerCallRef next_handler;
+     EventRef event;
+     void *data;
+{
+  OSStatus err, result = eventNotHandledErr;
+  struct frame *f = (struct frame *) data;
+  HICommand command;
+
+  err = GetEventParameter (event, kEventParamDirectObject,
+                          typeHICommand, NULL,
+                          sizeof (HICommand), NULL, &command);
+  if (err != noErr)
+    return result;
+
+  switch (GetEventKind (event))
+    {
+    case kEventCommandProcess:
+      if (!TOOLBAR_ITEM_COMMAND_ID_P (command.commandID))
+       result = CallNextEventHandler (next_handler, event);
+      else
+       {
+         int i = TOOLBAR_ITEM_COMMAND_ID_VALUE (command.commandID);
+
+         if (i < f->n_tool_bar_items
+             && !NILP (PROP (TOOL_BAR_ITEM_ENABLED_P)))
+           {
+             Lisp_Object frame;
+             struct input_event buf;
+
+             EVENT_INIT (buf);
+
+             XSETFRAME (frame, f);
+             buf.kind = TOOL_BAR_EVENT;
+             buf.frame_or_window = frame;
+             buf.arg = frame;
+             kbd_buffer_store_event (&buf);
+
+             buf.kind = TOOL_BAR_EVENT;
+             buf.frame_or_window = frame;
+             buf.arg = PROP (TOOL_BAR_ITEM_KEY);
+             buf.modifiers = mac_event_to_emacs_modifiers (event);
+             kbd_buffer_store_event (&buf);
+
+             result = noErr;
+           }
+       }
+      break;
+
+    default:
+      abort ();
+    }
+#undef PROP
+
+  return result;
+}
+#endif /* USE_MAC_TOOLBAR */
+
+\f
+/***********************************************************************
+                            Text Cursor
+ ***********************************************************************/
+
+/* Set clipping for output in glyph row ROW.  W is the window in which
+   we operate.  GC is the graphics context to set clipping in.
+
+   ROW may be a text row or, e.g., a mode line.  Text rows must be
+   clipped to the interior of the window dedicated to text display,
+   mode lines must be clipped to the whole window.  */
+
+static void
+x_clip_to_row (w, row, area, gc)
+     struct window *w;
+     struct glyph_row *row;
+     int area;
+     GC gc;
+{
+  struct frame *f = XFRAME (WINDOW_FRAME (w));
+  Rect clip_rect;
+  int window_x, window_y, window_width;
+
+  window_box (w, area, &window_x, &window_y, &window_width, 0);
+
+  clip_rect.left = window_x;
+  clip_rect.top = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
+  clip_rect.top = max (clip_rect.top, window_y);
+  clip_rect.right = clip_rect.left + window_width;
+  clip_rect.bottom = clip_rect.top + row->visible_height;
+
+  mac_set_clip_rectangles (FRAME_MAC_DISPLAY (f), gc, &clip_rect, 1);
+}
+
+
+/* Draw a hollow box cursor on window W in glyph row ROW.  */
+
+static void
+x_draw_hollow_cursor (w, row)
+     struct window *w;
+     struct glyph_row *row;
+{
+  struct frame *f = XFRAME (WINDOW_FRAME (w));
+  struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
+  Display *dpy = FRAME_MAC_DISPLAY (f);
+  int x, y, wd, h;
+  XGCValues xgcv;
+  struct glyph *cursor_glyph;
+  GC gc;
+
+  /* Get the glyph the cursor is on.  If we can't tell because
+     the current matrix is invalid or such, give up.  */
+  cursor_glyph = get_phys_cursor_glyph (w);
+  if (cursor_glyph == NULL)
+    return;
+
+  /* Compute frame-relative coordinates for phys cursor.  */
+  get_phys_cursor_geometry (w, row, cursor_glyph, &x, &y, &h);
+  wd = w->phys_cursor_width;
+
+  /* The foreground of cursor_gc is typically the same as the normal
+     background color, which can cause the cursor box to be invisible.  */
+  xgcv.foreground = f->output_data.mac->cursor_pixel;
+  if (dpyinfo->scratch_cursor_gc)
+    XChangeGC (dpy, dpyinfo->scratch_cursor_gc, GCForeground, &xgcv);
+  else
+    dpyinfo->scratch_cursor_gc = XCreateGC (dpy, FRAME_MAC_WINDOW (f),
+                                           GCForeground, &xgcv);
+  gc = dpyinfo->scratch_cursor_gc;
+
+  /* Set clipping, draw the rectangle, and reset clipping again.  */
+  x_clip_to_row (w, row, TEXT_AREA, gc);
+  mac_draw_rectangle (f, gc, x, y, wd, h - 1);
+  mac_reset_clip_rectangles (dpy, gc);
+}
+
+
+/* Draw a bar cursor on window W in glyph row ROW.
+
+   Implementation note: One would like to draw a bar cursor with an
+   angle equal to the one given by the font property XA_ITALIC_ANGLE.
+   Unfortunately, I didn't find a font yet that has this property set.
+   --gerd.  */
+
+static void
+x_draw_bar_cursor (w, row, width, kind)
+     struct window *w;
+     struct glyph_row *row;
+     int width;
+     enum text_cursor_kinds kind;
+{
+  struct frame *f = XFRAME (w->frame);
+  struct glyph *cursor_glyph;
+
+  /* If cursor is out of bounds, don't draw garbage.  This can happen
+     in mini-buffer windows when switching between echo area glyphs
+     and mini-buffer.  */
+  cursor_glyph = get_phys_cursor_glyph (w);
+  if (cursor_glyph == NULL)
+    return;
+
+  /* If on an image, draw like a normal cursor.  That's usually better
+     visible than drawing a bar, esp. if the image is large so that
+     the bar might not be in the window.  */
+  if (cursor_glyph->type == IMAGE_GLYPH)
+    {
+      struct glyph_row *row;
+      row = MATRIX_ROW (w->current_matrix, w->phys_cursor.vpos);
+      draw_phys_cursor_glyph (w, row, DRAW_CURSOR);
+    }
+  else
+    {
+      Display *dpy = FRAME_MAC_DISPLAY (f);
+      Window window = FRAME_MAC_WINDOW (f);
+      GC gc = FRAME_MAC_DISPLAY_INFO (f)->scratch_cursor_gc;
+      unsigned long mask = GCForeground | GCBackground;
+      struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id);
+      XGCValues xgcv;
+
+      /* If the glyph's background equals the color we normally draw
+        the bar cursor in, the bar cursor in its normal color is
+        invisible.  Use the glyph's foreground color instead in this
+        case, on the assumption that the glyph's colors are chosen so
+        that the glyph is legible.  */
+      if (face->background == f->output_data.mac->cursor_pixel)
+       xgcv.background = xgcv.foreground = face->foreground;
+      else
+       xgcv.background = xgcv.foreground = f->output_data.mac->cursor_pixel;
+
+      if (gc)
+       XChangeGC (dpy, gc, mask, &xgcv);
+      else
+       {
+         gc = XCreateGC (dpy, window, mask, &xgcv);
+         FRAME_MAC_DISPLAY_INFO (f)->scratch_cursor_gc = gc;
+       }
+
+      if (width < 0)
+       width = FRAME_CURSOR_WIDTH (f);
+      width = min (cursor_glyph->pixel_width, width);
+
+      w->phys_cursor_width = width;
+      x_clip_to_row (w, row, TEXT_AREA, gc);
+
+      if (kind == BAR_CURSOR)
+       mac_fill_rectangle (f, gc,
+                           WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x),
+                           WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y),
+                           width, row->height);
+      else
+       mac_fill_rectangle (f, gc,
+                           WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x),
+                           WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y +
+                                                    row->height - width),
+                           cursor_glyph->pixel_width,
+                           width);
+
+      mac_reset_clip_rectangles (dpy, gc);
+    }
+}
+
+
+/* RIF: Define cursor CURSOR on frame F.  */
 
 static void
 mac_define_frame_cursor (f, cursor)
@@ -6162,9 +6807,7 @@ x_set_offset (f, xoff, yoff, change_gravity)
   ConstrainWindowToScreen (FRAME_MAC_WINDOW (f), kWindowTitleBarRgn,
                           kWindowConstrainMoveRegardlessOfFit
                           | kWindowConstrainAllowPartial, NULL, NULL);
-#if USE_CARBON_EVENTS
   if (!NILP (tip_frame) && XFRAME (tip_frame) == f)
-#endif
     mac_handle_origin_change (f);
 #else
   {
@@ -6240,7 +6883,7 @@ x_set_window_size (f, change_gravity, cols, rows)
 
   SizeWindow (FRAME_MAC_WINDOW (f), pixelwidth, pixelheight, 0);
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
   if (!NILP (tip_frame) && f == XFRAME (tip_frame))
 #endif
     mac_handle_size_change (f, pixelwidth, pixelheight);
@@ -6287,17 +6930,11 @@ x_set_mouse_pixel_position (f, pix_x, pix_y)
      int pix_x, pix_y;
 {
 #ifdef MAC_OSX
-  Point p;
-  CGPoint point;
+  pix_x += f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f);
+  pix_y += f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f);
 
   BLOCK_INPUT;
-  SetPortWindowPort (FRAME_MAC_WINDOW (f));
-  p.h = pix_x;
-  p.v = pix_y;
-  LocalToGlobal (&p);
-  point.x = p.h;
-  point.y = p.v;
-  CGWarpMouseCursorPosition (point);
+  CGWarpMouseCursorPosition (CGPointMake (pix_x, pix_y));
   UNBLOCK_INPUT;
 #else
 #if 0 /* MAC_TODO: LMSetMouseLocation and CursorDeviceMoveTo are non-Carbon */
@@ -6379,7 +7016,7 @@ static void
 mac_handle_visibility_change (f)
      struct frame *f;
 {
-  WindowPtr wp = FRAME_MAC_WINDOW (f);
+  WindowRef wp = FRAME_MAC_WINDOW (f);
   int visible = 0, iconified = 0;
   struct input_event buf;
 
@@ -6447,32 +7084,7 @@ x_make_frame_visible (f)
         before the window gets really visible.  */
       if (! FRAME_ICONIFIED_P (f)
          && ! f->output_data.mac->asked_for_visible)
-       {
-#if TARGET_API_MAC_CARBON
-         if (!(FRAME_SIZE_HINTS (f)->flags & (USPosition | PPosition)))
-           {
-             struct frame *sf = SELECTED_FRAME ();
-             if (!FRAME_MAC_P (sf))
-               RepositionWindow (FRAME_MAC_WINDOW (f), NULL,
-                                 kWindowCenterOnMainScreen);
-             else
-               RepositionWindow (FRAME_MAC_WINDOW (f),
-                                 FRAME_MAC_WINDOW (sf),
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
-                                 kWindowCascadeStartAtParentWindowScreen
-#else
-                                 kWindowCascadeOnParentWindowScreen
-#endif
-                                 );
-#if USE_CARBON_EVENTS
-             if (!NILP (tip_frame) && f == XFRAME (tip_frame))
-#endif
-               mac_handle_origin_change (f);
-           }
-         else
-#endif
-           x_set_offset (f, f->left_pos, f->top_pos, 0);
-       }
+       x_set_offset (f, f->left_pos, f->top_pos, 0);
 
       f->output_data.mac->asked_for_visible = 1;
 
@@ -6546,18 +7158,20 @@ x_make_frame_invisible (f)
 
   BLOCK_INPUT;
 
+#if !TARGET_API_MAC_CARBON
   /* Before unmapping the window, update the WM_SIZE_HINTS property to claim
      that the current position of the window is user-specified, rather than
      program-specified, so that when the window is mapped again, it will be
      placed at the same location, without forcing the user to position it
      by hand again (they have already done that once for this window.)  */
   x_wm_set_size_hint (f, (long) 0, 1);
+#endif
 
   HideWindow (FRAME_MAC_WINDOW (f));
 
   UNBLOCK_INPUT;
 
-#if !USE_CARBON_EVENTS
+#if !TARGET_API_MAC_CARBON
   mac_handle_visibility_change (f);
 #endif
 }
@@ -6596,7 +7210,7 @@ x_iconify_frame (f)
   if (err != noErr)
     error ("Can't notify window manager of iconification");
 
-#if !USE_CARBON_EVENTS
+#if !TARGET_API_MAC_CARBON
   mac_handle_visibility_change (f);
 #endif
 }
@@ -6609,7 +7223,7 @@ x_free_frame_resources (f)
      struct frame *f;
 {
   struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
-  WindowPtr wp = FRAME_MAC_WINDOW (f);
+  WindowRef wp = FRAME_MAC_WINDOW (f);
 
   BLOCK_INPUT;
 
@@ -8730,30 +9344,109 @@ x_find_ccl_program (fontp)
       struct ccl_program *ccl
        = (struct ccl_program *) xmalloc (sizeof (struct ccl_program));
 
-      if (setup_ccl_program (ccl, XCDR (elt)) < 0)
-       xfree (ccl);
-      else
-       fontp->font_encoder = ccl;
+      if (setup_ccl_program (ccl, XCDR (elt)) < 0)
+       xfree (ccl);
+      else
+       fontp->font_encoder = ccl;
+    }
+}
+
+#if USE_MAC_FONT_PANEL
+/* Whether Font Panel has been shown before.  The first call to font
+   panel functions (FPIsFontPanelVisible, SetFontInfoForSelection) is
+   slow.  This variable is used for deferring such a call as much as
+   possible.  */
+static int font_panel_shown_p = 0;
+
+extern Lisp_Object Qfont;
+static Lisp_Object Qpanel_closed, Qselection;
+
+static OSStatus mac_store_event_ref_as_apple_event P_ ((AEEventClass, AEEventID,
+                                                       Lisp_Object,
+                                                       Lisp_Object,
+                                                       EventRef, UInt32,
+                                                       const EventParamName *,
+                                                       const EventParamType *));
+
+int
+mac_font_panel_visible_p ()
+{
+  return font_panel_shown_p && FPIsFontPanelVisible ();
+}
+
+static pascal OSStatus
+mac_handle_font_event (next_handler, event, data)
+     EventHandlerCallRef next_handler;
+     EventRef event;
+     void *data;
+{
+  OSStatus result, err;
+  Lisp_Object id_key;
+  int num_params;
+  const EventParamName *names;
+  const EventParamType *types;
+  static const EventParamName names_sel[] = {kEventParamATSUFontID,
+                                            kEventParamATSUFontSize,
+                                            kEventParamFMFontFamily,
+                                            kEventParamFMFontStyle,
+                                            kEventParamFMFontSize,
+                                            kEventParamFontColor};
+  static const EventParamType types_sel[] = {typeATSUFontID,
+                                            typeATSUSize,
+                                            typeFMFontFamily,
+                                            typeFMFontStyle,
+                                            typeFMFontSize,
+                                            typeFontColor};
+
+  result = CallNextEventHandler (next_handler, event);
+  if (result != eventNotHandledErr)
+    return result;
+
+  switch (GetEventKind (event))
+    {
+    case kEventFontPanelClosed:
+      id_key = Qpanel_closed;
+      num_params = 0;
+      names = NULL;
+      types = NULL;
+      break;
+
+    case kEventFontSelection:
+      id_key = Qselection;
+      num_params = sizeof (names_sel) / sizeof (names_sel[0]);
+      names = names_sel;
+      types = types_sel;
+      break;
     }
-}
 
-#if USE_MAC_FONT_PANEL
-/* Whether Font Panel has been shown before.  The first call to font
-   panel functions (FPIsFontPanelVisible, SetFontInfoForSelection) is
-   slow.  This variable is used for deferring such a call as much as
-   possible.  */
-static int font_panel_shown_p = 0;
+  err = mac_store_event_ref_as_apple_event (0, 0, Qfont, id_key,
+                                           event, num_params,
+                                           names, types);
+  if (err == noErr)
+    result = noErr;
 
-int
-mac_font_panel_visible_p ()
-{
-  return font_panel_shown_p && FPIsFontPanelVisible ();
+  return result;
 }
 
 OSStatus
 mac_show_hide_font_panel ()
 {
-  font_panel_shown_p = 1;
+  if (!font_panel_shown_p)
+    {
+      OSStatus err;
+
+      static const EventTypeSpec specs[] =
+       {{kEventClassFont, kEventFontPanelClosed},
+        {kEventClassFont, kEventFontSelection}};
+
+      err = InstallApplicationEventHandler (mac_handle_font_event,
+                                           GetEventTypeCount (specs),
+                                           specs, NULL, NULL);
+      if (err != noErr)
+       return err;
+
+      font_panel_shown_p = 1;
+    }
 
   return FPShowHideFontPanel ();
 }
@@ -8869,7 +9562,7 @@ Lisp_Object Vmac_function_modifier;
    a three button mouse */
 Lisp_Object Vmac_emulate_three_button_mouse;
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
 /* Non-zero if the mouse wheel button (i.e. button 4) should map to
    mouse-2, instead of mouse-3.  */
 int mac_wheel_button_is_mouse_2;
@@ -8894,16 +9587,12 @@ static int mac_screen_config_changed = 0;
 Point saved_menu_event_location;
 
 /* Apple Events */
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
 static Lisp_Object Qhi_command;
 #ifdef MAC_OSX
 extern Lisp_Object Qwindow;
 static Lisp_Object Qtoolbar_switch_mode;
 #endif
-#if USE_MAC_FONT_PANEL
-extern Lisp_Object Qfont;
-static Lisp_Object Qpanel_closed, Qselection;
-#endif
 #if USE_MAC_TSM
 static TSMDocumentID tsm_document_id;
 static Lisp_Object Qtext_input;
@@ -8915,7 +9604,7 @@ static Lisp_Object saved_ts_script_language_on_focus;
 static ScriptLanguageRecord saved_ts_language;
 static Component saved_ts_component;
 #endif
-#endif
+#endif /* TARGET_API_MAC_CARBON */
 extern int mac_ready_for_apple_events;
 extern Lisp_Object Qundefined;
 extern void init_apple_event_handler P_ ((void));
@@ -8928,20 +9617,15 @@ extern OSErr init_coercion_handler P_ ((void));
 extern OSErr install_drag_handler P_ ((WindowRef));
 extern void remove_drag_handler P_ ((WindowRef));
 
+#if TARGET_API_MAC_CARBON
 /* Showing help echo string during menu tracking  */
-extern OSStatus install_menu_target_item_handler P_ ((WindowPtr));
+extern OSStatus install_menu_target_item_handler P_ ((void));
 
-#if USE_CARBON_EVENTS
 #ifdef MAC_OSX
-extern void init_service_handler ();
+extern OSStatus install_service_handler ();
 static Lisp_Object Qservice, Qpaste, Qperform;
 #endif
-
-/* Window Event Handler */
-static pascal OSStatus mac_handle_window_event (EventHandlerCallRef,
-                                               EventRef, void *);
 #endif
-OSStatus install_window_handler (WindowPtr);
 
 extern void init_emacs_passwd_dir ();
 extern int emacs_main (int, char **, char **);
@@ -9025,7 +9709,7 @@ static const unsigned char fn_keycode_to_keycode_table[] = {
 #endif /* MAC_OSX */
 
 static int
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
 mac_to_emacs_modifiers (UInt32 mods)
 #else
 mac_to_emacs_modifiers (EventModifiers mods)
@@ -9134,17 +9818,19 @@ mac_quit_char_key_p (modifiers, key_code)
 }
 #endif
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
 /* Obtains the event modifiers from the event ref and then calls
    mac_to_emacs_modifiers.  */
 static int
 mac_event_to_emacs_modifiers (EventRef eventRef)
 {
-  UInt32 mods = 0;
+  UInt32 mods = 0, class;
+
   GetEventParameter (eventRef, kEventParamKeyModifiers, typeUInt32, NULL,
                    sizeof (UInt32), NULL, &mods);
+  class = GetEventClass (eventRef);
   if (!NILP (Vmac_emulate_three_button_mouse) &&
-      GetEventClass(eventRef) == kEventClassMouse)
+      (class == kEventClassMouse || class == kEventClassCommand))
     {
       mods &= ~(optionKey | cmdKey);
     }
@@ -9283,7 +9969,7 @@ static void
 do_get_menus (void)
 {
   Handle menubar_handle;
-  MenuHandle menu_handle;
+  MenuRef menu;
 
   menubar_handle = GetNewMBar (128);
   if(menubar_handle == NULL)
@@ -9292,9 +9978,9 @@ do_get_menus (void)
   DrawMenuBar ();
 
 #if !TARGET_API_MAC_CARBON
-  menu_handle = GetMenuHandle (M_APPLE);
-  if(menu_handle != NULL)
-    AppendResMenu (menu_handle,'DRVR');
+  menu = GetMenuRef (M_APPLE);
+  if (menu != NULL)
+    AppendResMenu (menu'DRVR');
   else
     abort ();
 #endif
@@ -9343,7 +10029,7 @@ do_check_ram_size (void)
 #endif /* MAC_OS8 */
 
 static void
-do_window_update (WindowPtr win)
+do_window_update (WindowRef win)
 {
   struct frame *f = mac_window_to_frame (win);
 
@@ -9388,7 +10074,7 @@ do_window_update (WindowPtr win)
 }
 
 static int
-is_emacs_window (WindowPtr win)
+is_emacs_window (WindowRef win)
 {
   Lisp_Object tail, frame;
 
@@ -9501,7 +10187,7 @@ do_apple_menu (SInt16 menu_item)
     NoteAlert (ABOUT_ALERT_ID, NULL);
   else
     {
-      GetMenuItemText (GetMenuHandle (M_APPLE), menu_item, item_name);
+      GetMenuItemText (GetMenuRef (M_APPLE), menu_item, item_name);
       da_driver_refnum = OpenDeskAcc (item_name);
     }
 }
@@ -9512,7 +10198,7 @@ do_apple_menu (SInt16 menu_item)
 
 static void
 do_grow_window (w, e)
-     WindowPtr w;
+     WindowRef w;
      const EventRecord *e;
 {
   Rect limit_rect;
@@ -9564,7 +10250,7 @@ mac_get_ideal_size (f)
      struct frame *f;
 {
   struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
-  WindowPtr w = FRAME_MAC_WINDOW (f);
+  WindowRef w = FRAME_MAC_WINDOW (f);
   Point ideal_size;
   Rect standard_rect;
   int height, width, columns, rows;
@@ -9590,7 +10276,7 @@ mac_get_ideal_size (f)
    wide (DEFAULT_NUM_COLS) and as tall as will fit on the screen.  */
 
 static void
-do_zoom_window (WindowPtr w, int zoom_in_or_out)
+do_zoom_window (WindowRef w, int zoom_in_or_out)
 {
   Rect zoom_rect, port_rect;
   int width, height;
@@ -9653,13 +10339,9 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
   SetPort (save_port);
 #endif /* not TARGET_API_MAC_CARBON */
 
-#if !USE_CARBON_EVENTS
+#if !TARGET_API_MAC_CARBON
   /* retrieve window size and update application values */
-#if TARGET_API_MAC_CARBON
-  GetWindowPortBounds (w, &port_rect);
-#else
   port_rect = w->portRect;
-#endif
   height = port_rect.bottom - port_rect.top;
   width = port_rect.right - port_rect.left;
 
@@ -9668,6 +10350,210 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
 #endif
 }
 
+static void
+mac_set_unicode_keystroke_event (code, buf)
+     UniChar code;
+     struct input_event *buf;
+{
+  int charset_id, c1, c2;
+
+  if (code < 0x80)
+    {
+      buf->kind = ASCII_KEYSTROKE_EVENT;
+      buf->code = code;
+    }
+  else if (code < 0x100)
+    {
+      if (code < 0xA0)
+       charset_id = CHARSET_8_BIT_CONTROL;
+      else
+       charset_id = charset_latin_iso8859_1;
+      buf->kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
+      buf->code = MAKE_CHAR (charset_id, code, 0);
+    }
+  else
+    {
+      if (code < 0x2500)
+       charset_id = charset_mule_unicode_0100_24ff,
+         code -= 0x100;
+      else if (code < 0x33FF)
+       charset_id = charset_mule_unicode_2500_33ff,
+         code -= 0x2500;
+      else if (code >= 0xE000)
+       charset_id = charset_mule_unicode_e000_ffff,
+         code -= 0xE000;
+      c1 = (code / 96) + 32, c2 = (code % 96) + 32;
+      buf->kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
+      buf->code = MAKE_CHAR (charset_id, c1, c2);
+    }
+}
+
+static void
+do_keystroke (action, char_code, key_code, modifiers, timestamp, buf)
+     EventKind action;
+     unsigned char char_code;
+     UInt32 key_code, modifiers;
+     unsigned long timestamp;
+     struct input_event *buf;
+{
+  static SInt16 last_key_script = -1;
+  SInt16 current_key_script = GetScriptManagerVariable (smKeyScript);
+  UInt32 mapped_modifiers = mac_mapped_modifiers (modifiers);
+
+#ifdef MAC_OSX
+  if (mapped_modifiers & kEventKeyModifierFnMask
+      && key_code <= 0x7f
+      && fn_keycode_to_keycode_table[key_code])
+    key_code = fn_keycode_to_keycode_table[key_code];
+#endif
+
+  if (key_code <= 0x7f && keycode_to_xkeysym_table[key_code])
+    {
+      buf->kind = NON_ASCII_KEYSTROKE_EVENT;
+      buf->code = 0xff00 | keycode_to_xkeysym_table[key_code];
+#ifdef MAC_OSX
+      if (modifiers & kEventKeyModifierFnMask
+         && key_code <= 0x7f
+         && fn_keycode_to_keycode_table[key_code] == key_code)
+       modifiers &= ~kEventKeyModifierFnMask;
+#endif
+    }
+  else if (mapped_modifiers)
+    {
+      /* translate the keycode back to determine the original key */
+#ifdef MAC_OSX
+      UCKeyboardLayout *uchr_ptr = NULL;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
+      OSStatus err;
+      KeyboardLayoutRef layout;
+
+      err = KLGetCurrentKeyboardLayout (&layout);
+      if (err == noErr)
+       err = KLGetKeyboardLayoutProperty (layout, kKLuchrData,
+                                          (const void **) &uchr_ptr);
+#else
+      static SInt16 last_key_layout_id = 0;
+      static Handle uchr_handle = (Handle)-1;
+      SInt16 current_key_layout_id =
+       GetScriptVariable (current_key_script, smScriptKeys);
+
+      if (uchr_handle == (Handle)-1
+         || last_key_layout_id != current_key_layout_id)
+       {
+         uchr_handle = GetResource ('uchr', current_key_layout_id);
+         last_key_layout_id = current_key_layout_id;
+       }
+      if (uchr_handle)
+       uchr_ptr = (UCKeyboardLayout *)*uchr_handle;
+#endif
+
+      if (uchr_ptr)
+       {
+         OSStatus status;
+         UInt16 key_action = action - keyDown;
+         UInt32 modifier_key_state = (modifiers & ~mapped_modifiers) >> 8;
+         UInt32 keyboard_type = LMGetKbdType ();
+         SInt32 dead_key_state = 0;
+         UniChar code;
+         UniCharCount actual_length;
+
+         status = UCKeyTranslate (uchr_ptr, key_code, key_action,
+                                  modifier_key_state, keyboard_type,
+                                  kUCKeyTranslateNoDeadKeysMask,
+                                  &dead_key_state,
+                                  1, &actual_length, &code);
+         if (status == noErr && actual_length == 1)
+           mac_set_unicode_keystroke_event (code, buf);
+       }
+#endif /* MAC_OSX */
+
+      if (buf->kind == NO_EVENT)
+       {
+         /* This code comes from Keyboard Resource, Appendix C of IM
+            - Text.  This is necessary since shift is ignored in KCHR
+            table translation when option or command is pressed.  It
+            also does not translate correctly control-shift chars
+            like C-% so mask off shift here also.  */
+         /* Mask off modifier keys that are mapped to some Emacs
+            modifiers.  */
+         int new_modifiers = modifiers & ~mapped_modifiers;
+         /* set high byte of keycode to modifier high byte*/
+         int new_key_code = key_code | new_modifiers;
+         Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache);
+         unsigned long some_state = 0;
+         UInt32 new_char_code;
+
+         new_char_code = KeyTranslate (kchr_ptr, new_key_code, &some_state);
+         if (new_char_code == 0)
+           /* Seems like a dead key.  Append up-stroke.  */
+           new_char_code = KeyTranslate (kchr_ptr, new_key_code | 0x80,
+                                         &some_state);
+         if (new_char_code)
+           {
+             buf->kind = ASCII_KEYSTROKE_EVENT;
+             buf->code = new_char_code & 0xff;
+           }
+       }
+    }
+
+  if (buf->kind == NO_EVENT)
+    {
+      buf->kind = ASCII_KEYSTROKE_EVENT;
+      buf->code = char_code;
+    }
+
+  buf->modifiers = mac_to_emacs_modifiers (modifiers);
+  buf->modifiers |= (extra_keyboard_modifiers
+                    & (meta_modifier | alt_modifier
+                       | hyper_modifier | super_modifier));
+
+#if TARGET_API_MAC_CARBON
+  if (buf->kind == ASCII_KEYSTROKE_EVENT
+      && buf->code >= 0x80 && buf->modifiers)
+    {
+      OSStatus err;
+      TextEncoding encoding = kTextEncodingMacRoman;
+      TextToUnicodeInfo ttu_info;
+
+      UpgradeScriptInfoToTextEncoding (current_key_script,
+                                      kTextLanguageDontCare,
+                                      kTextRegionDontCare,
+                                      NULL, &encoding);
+      err = CreateTextToUnicodeInfoByEncoding (encoding, &ttu_info);
+      if (err == noErr)
+       {
+         UniChar code;
+         Str255 pstr;
+         ByteCount unicode_len;
+
+         pstr[0] = 1;
+         pstr[1] = buf->code;
+         err = ConvertFromPStringToUnicode (ttu_info, pstr,
+                                            sizeof (UniChar),
+                                            &unicode_len, &code);
+         if (err == noErr && unicode_len == sizeof (UniChar))
+           mac_set_unicode_keystroke_event (code, buf);
+         DisposeTextToUnicodeInfo (&ttu_info);
+       }
+    }
+#endif
+
+  if (buf->kind == ASCII_KEYSTROKE_EVENT
+      && buf->code >= 0x80
+      && last_key_script != current_key_script)
+    {
+      struct input_event event;
+
+      EVENT_INIT (event);
+      event.kind = LANGUAGE_CHANGE_EVENT;
+      event.arg = Qnil;
+      event.code = current_key_script;
+      event.timestamp = timestamp;
+      kbd_buffer_store_event (&event);
+      last_key_script = current_key_script;
+    }
+}
+
 void
 mac_store_apple_event (class, id, desc)
      Lisp_Object class, id;
@@ -9746,54 +10632,49 @@ mac_store_drag_event (window, mouse_pos, modifiers, desc)
   buf.arg = mac_aedesc_to_lisp (desc);
   kbd_buffer_store_event (&buf);
 }
-#endif
 
-#if USE_CARBON_EVENTS
-static pascal OSStatus
-mac_handle_command_event (next_handler, event, data)
-     EventHandlerCallRef next_handler;
+#ifdef MAC_OSX
+OSStatus
+mac_store_service_event (event)
      EventRef event;
-     void *data;
 {
-  OSStatus result, err;
-  HICommand command;
-  static const EventParamName names[] =
-    {kEventParamDirectObject, kEventParamKeyModifiers};
-  static const EventParamType types[] =
-    {typeHICommand, typeUInt32};
-  int num_params = sizeof (names) / sizeof (names[0]);
-
-  result = CallNextEventHandler (next_handler, event);
-  if (result != eventNotHandledErr)
-    return result;
+  OSStatus err;
+  Lisp_Object id_key;
+  int num_params;
+  const EventParamName *names;
+  const EventParamType *types;
+  static const EventParamName names_pfm[] =
+    {kEventParamServiceMessageName, kEventParamServiceUserData};
+  static const EventParamType types_pfm[] =
+    {typeCFStringRef, typeCFStringRef};
 
-  err = GetEventParameter (event, kEventParamDirectObject, typeHICommand,
-                          NULL, sizeof (HICommand), NULL, &command);
+  switch (GetEventKind (event))
+    {
+    case kEventServicePaste:
+      id_key = Qpaste;
+      num_params = 0;
+      names = NULL;
+      types = NULL;
+      break;
 
-  if (err != noErr || command.commandID == 0)
-    return eventNotHandledErr;
+    case kEventServicePerform:
+      id_key = Qperform;
+      num_params = sizeof (names_pfm) / sizeof (names_pfm[0]);
+      names = names_pfm;
+      types = types_pfm;
+      break;
 
-  /* A HI command event is mapped to an Apple event whose event class
-     symbol is `hi-command' and event ID is its command ID.  */
-  err = mac_store_event_ref_as_apple_event (0, command.commandID,
-                                           Qhi_command, Qnil,
-                                           event, num_params, names, types);
-  return err == noErr ? noErr : eventNotHandledErr;
-}
+    default:
+      abort ();
+    }
 
-static OSStatus
-init_command_handler ()
-{
-  static const EventTypeSpec specs[] =
-    {{kEventClassCommand, kEventCommandProcess}};
-  static EventHandlerUPP handle_command_eventUPP = NULL;
+  err = mac_store_event_ref_as_apple_event (0, 0, Qservice, id_key,
+                                           event, num_params,
+                                           names, types);
 
-  if (handle_command_eventUPP == NULL)
-    handle_command_eventUPP = NewEventHandlerUPP (mac_handle_command_event);
-  return InstallApplicationEventHandler (handle_command_eventUPP,
-                                        GetEventTypeCount (specs), specs,
-                                        NULL, NULL);
+  return err;
 }
+#endif /* MAC_OSX */
 
 static pascal OSStatus
 mac_handle_window_event (next_handler, event, data)
@@ -9801,47 +10682,88 @@ mac_handle_window_event (next_handler, event, data)
      EventRef event;
      void *data;
 {
-  WindowPtr wp;
-  OSStatus result, err;
+  WindowRef wp;
+  OSStatus err, result = eventNotHandledErr;
   struct frame *f;
   UInt32 attributes;
   XSizeHints *size_hints;
 
   err = GetEventParameter (event, kEventParamDirectObject, typeWindowRef,
-                          NULL, sizeof (WindowPtr), NULL, &wp);
+                          NULL, sizeof (WindowRef), NULL, &wp);
   if (err != noErr)
     return eventNotHandledErr;
 
   f = mac_window_to_frame (wp);
   switch (GetEventKind (event))
     {
+      /* -- window refresh events -- */
+
     case kEventWindowUpdate:
       result = CallNextEventHandler (next_handler, event);
       if (result != eventNotHandledErr)
-       return result;
+       break;
 
       do_window_update (wp);
-      return noErr;
+      result = noErr;
+      break;
 
-    case kEventWindowGetIdealSize:
-      result = CallNextEventHandler (next_handler, event);
-      if (result != eventNotHandledErr)
-       return result;
+      /* -- window state change events -- */
 
-      {
-       Point ideal_size = mac_get_ideal_size (f);
+    case kEventWindowShowing:
+      size_hints = FRAME_SIZE_HINTS (f);
+      if (!(size_hints->flags & (USPosition | PPosition)))
+       {
+         struct frame *sf = SELECTED_FRAME ();
 
-       err = SetEventParameter (event, kEventParamDimensions,
-                                typeQDPoint, sizeof (Point), &ideal_size);
-       if (err == noErr)
-         return noErr;
-      }
+         if (!(FRAME_MAC_P (sf) && sf->async_visible))
+           RepositionWindow (wp, NULL, kWindowCenterOnMainScreen);
+         else
+           {
+             RepositionWindow (wp, FRAME_MAC_WINDOW (sf),
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
+                               kWindowCascadeStartAtParentWindowScreen
+#else
+                               kWindowCascadeOnParentWindowScreen
+#endif
+                               );
+#if USE_MAC_TOOLBAR
+             /* This is a workaround.  RepositionWindow fails to put
+                a window at the cascading position when its parent
+                window has a Carbon HIToolbar.  */
+             if ((f->left_pos == sf->left_pos
+                  && f->top_pos == sf->top_pos)
+                 || (f->left_pos == sf->left_pos + 10 * 2
+                     && f->top_pos == sf->top_pos + 32 * 2))
+               MoveWindowStructure (wp, sf->left_pos + 10, sf->top_pos + 32);
+#endif
+           }
+         result = noErr;
+       }
+      break;
+
+    case kEventWindowHiding:
+      /* Before unmapping the window, update the WM_SIZE_HINTS
+        property to claim that the current position of the window is
+        user-specified, rather than program-specified, so that when
+        the window is mapped again, it will be placed at the same
+        location, without forcing the user to position it by hand
+        again (they have already done that once for this window.)  */
+      x_wm_set_size_hint (f, (long) 0, 1);
+      result = noErr;
+      break;
+
+    case kEventWindowShown:
+    case kEventWindowHidden:
+    case kEventWindowCollapsed:
+    case kEventWindowExpanded:
+      mac_handle_visibility_change (f);
+      result = noErr;
       break;
 
     case kEventWindowBoundsChanging:
       result = CallNextEventHandler (next_handler, event);
       if (result != eventNotHandledErr)
-       return result;
+       break;
 
       err = GetEventParameter (event, kEventParamAttributes, typeUInt32,
                               NULL, sizeof (UInt32), NULL, &attributes);
@@ -9885,7 +10807,7 @@ mac_handle_window_event (next_handler, event, data)
          bounds.bottom = bounds.top + height;
          SetEventParameter (event, kEventParamCurrentBounds,
                             typeQDRectangle, sizeof (Rect), &bounds);
-         return noErr;
+         result = noErr;
        }
       break;
 
@@ -9916,21 +10838,12 @@ mac_handle_window_event (next_handler, event, data)
       if (attributes & kWindowBoundsChangeOriginChanged)
        mac_handle_origin_change (f);
 
-      return noErr;
-
-    case kEventWindowShown:
-    case kEventWindowHidden:
-    case kEventWindowExpanded:
-    case kEventWindowCollapsed:
-      result = CallNextEventHandler (next_handler, event);
-
-      mac_handle_visibility_change (f);
-      return noErr;
-
+      result = noErr;
       break;
 
+      /* -- window action events -- */
+
     case kEventWindowClose:
-      result = CallNextEventHandler (next_handler, event);
       {
        struct input_event buf;
 
@@ -9940,11 +10853,26 @@ mac_handle_window_event (next_handler, event, data)
        buf.arg = Qnil;
        kbd_buffer_store_event (&buf);
       }
-      return noErr;
+      result = noErr;
+      break;
+
+    case kEventWindowGetIdealSize:
+      result = CallNextEventHandler (next_handler, event);
+      if (result != eventNotHandledErr)
+       break;
+
+      {
+       Point ideal_size = mac_get_ideal_size (f);
+
+       err = SetEventParameter (event, kEventParamDimensions,
+                                typeQDPoint, sizeof (Point), &ideal_size);
+       if (err == noErr)
+         result = noErr;
+      }
+      break;
 
 #ifdef MAC_OSX
     case kEventWindowToolbarSwitchMode:
-      result = CallNextEventHandler (next_handler, event);
       {
        static const EventParamName names[] = {kEventParamDirectObject,
                                               kEventParamWindowMouseLocation,
@@ -9966,23 +10894,184 @@ mac_handle_window_event (next_handler, event, data)
                                                  event, num_params,
                                                  names, types);
       }
-      return err == noErr ? noErr : result;
+      if (err == noErr)
+       result = noErr;
+      break;
 #endif
 
 #if USE_MAC_TSM
+      /* -- window focus events -- */
+
     case kEventWindowFocusAcquired:
-      result = CallNextEventHandler (next_handler, event);
       err = mac_tsm_resume ();
-      return err == noErr ? noErr : result;
+      if (err == noErr)
+       result = noErr;
+      break;
 
     case kEventWindowFocusRelinquish:
-      result = CallNextEventHandler (next_handler, event);
       err = mac_tsm_suspend ();
-      return err == noErr ? noErr : result;
+      if (err == noErr)
+       result = noErr;
+      break;
+#endif
+
+    default:
+      abort ();
+    }
+
+  return result;
+}
+
+static pascal OSStatus
+mac_handle_application_event (next_handler, event, data)
+     EventHandlerCallRef next_handler;
+     EventRef event;
+     void *data;
+{
+  OSStatus err, result = eventNotHandledErr;
+
+  switch (GetEventKind (event))
+    {
+#if USE_MAC_TSM
+    case kEventAppActivated:
+      err = mac_tsm_resume ();
+      break;
+
+    case kEventAppDeactivated:
+      err = mac_tsm_suspend ();
+      break;
+#endif
+
+    default:
+      abort ();
+    }
+
+  if (err == noErr)
+    result = noErr;
+
+  return result;
+}
+
+static pascal OSStatus
+mac_handle_keyboard_event (next_handler, event, data)
+     EventHandlerCallRef next_handler;
+     EventRef event;
+     void *data;
+{
+  OSStatus err, result = eventNotHandledErr;
+  UInt32 event_kind, key_code, modifiers;
+  unsigned char char_code;
+
+  event_kind = GetEventKind (event);
+  switch (event_kind)
+    {
+    case kEventRawKeyDown:
+    case kEventRawKeyRepeat:
+    case kEventRawKeyUp:
+      /* When using Carbon Events, we need to pass raw keyboard events
+        to the TSM ourselves.  If TSM handles it, it will pass back
+        noErr, otherwise it will pass back "eventNotHandledErr" and
+        we can process it normally.  */
+      result = CallNextEventHandler (next_handler, event);
+      if (result != eventNotHandledErr)
+       break;
+
+      if (read_socket_inev == NULL)
+       break;
+
+#if USE_MAC_TSM
+      if (read_socket_inev->kind != NO_EVENT)
+       {
+         result = noErr;
+         break;
+       }
 #endif
+
+      if (event_kind == kEventRawKeyUp)
+       break;
+
+      err = GetEventParameter (event, kEventParamKeyMacCharCodes,
+                              typeChar, NULL,
+                              sizeof (char), NULL, &char_code);
+      if (err != noErr)
+       break;
+
+      err = GetEventParameter (event, kEventParamKeyCode,
+                              typeUInt32, NULL,
+                              sizeof (UInt32), NULL, &key_code);
+      if (err != noErr)
+       break;
+
+      err = GetEventParameter (event, kEventParamKeyModifiers,
+                              typeUInt32, NULL,
+                              sizeof (UInt32), NULL, &modifiers);
+      if (err != noErr)
+       break;
+
+      do_keystroke ((event_kind == kEventRawKeyDown ? keyDown : autoKey),
+                   char_code, key_code, modifiers,
+                   ((unsigned long)
+                    (GetEventTime (event) / kEventDurationMillisecond)),
+                   read_socket_inev);
+      result = noErr;
+      break;
+
+    default:
+      abort ();
+    }
+
+  return result;
+}
+
+static pascal OSStatus
+mac_handle_command_event (next_handler, event, data)
+     EventHandlerCallRef next_handler;
+     EventRef event;
+     void *data;
+{
+  OSStatus err, result = eventNotHandledErr;
+  HICommand command;
+  static const EventParamName names[] =
+    {kEventParamDirectObject, kEventParamKeyModifiers};
+  static const EventParamType types[] =
+    {typeHICommand, typeUInt32};
+  int num_params = sizeof (names) / sizeof (names[0]);
+
+  err = GetEventParameter (event, kEventParamDirectObject, typeHICommand,
+                          NULL, sizeof (HICommand), NULL, &command);
+  if (err != noErr)
+    return eventNotHandledErr;
+
+  switch (GetEventKind (event))
+    {
+    case kEventCommandProcess:
+      result = CallNextEventHandler (next_handler, event);
+      if (result != eventNotHandledErr)
+       break;
+
+      err = GetEventParameter (event, kEventParamDirectObject,
+                              typeHICommand, NULL,
+                              sizeof (HICommand), NULL, &command);
+
+      if (err != noErr || command.commandID == 0)
+       break;
+
+      /* A HI command event is mapped to an Apple event whose event
+        class symbol is `hi-command' and event ID is its command
+        ID.  */
+      err = mac_store_event_ref_as_apple_event (0, command.commandID,
+                                               Qhi_command, Qnil,
+                                               event, num_params,
+                                               names, types);
+      if (err == noErr)
+       result = noErr;
+      break;
+
+    default:
+      abort ();
     }
 
-  return eventNotHandledErr;
+  return result;
 }
 
 static pascal OSStatus
@@ -9991,13 +11080,13 @@ mac_handle_mouse_event (next_handler, event, data)
      EventRef event;
      void *data;
 {
-  OSStatus result, err;
+  OSStatus err, result = eventNotHandledErr;
 
   switch (GetEventKind (event))
     {
     case kEventMouseWheelMoved:
       {
-       WindowPtr wp;
+       WindowRef wp;
        struct frame *f;
        EventMouseWheelAxis axis;
        SInt32 delta;
@@ -10005,15 +11094,14 @@ mac_handle_mouse_event (next_handler, event, data)
 
        result = CallNextEventHandler (next_handler, event);
        if (result != eventNotHandledErr || read_socket_inev == NULL)
-         return result;
+         break;
+
+       f = mac_focus_frame (&one_mac_display_info);
 
        err = GetEventParameter (event, kEventParamWindowRef, typeWindowRef,
                                 NULL, sizeof (WindowRef), NULL, &wp);
-       if (err != noErr)
-         break;
-
-       f = mac_window_to_frame (wp);
-       if (f != mac_focus_frame (&one_mac_display_info))
+       if (err != noErr
+           || wp != FRAME_MAC_WINDOW (f))
          break;
 
        err = GetEventParameter (event, kEventParamMouseWheelAxis,
@@ -10028,8 +11116,8 @@ mac_handle_mouse_event (next_handler, event, data)
        if (err != noErr)
          break;
 
-       SetPortWindowPort (wp);
-       GlobalToLocal (&point);
+       point.h -= f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f);
+       point.v -= f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f);
        if (point.h < 0 || point.v < 0
            || EQ (window_from_coordinates (f, point.h, point.v, 0, 0, 0, 1),
                   f->tool_bar_window))
@@ -10050,68 +11138,16 @@ mac_handle_mouse_event (next_handler, event, data)
        XSETINT (read_socket_inev->y, point.v);
        XSETFRAME (read_socket_inev->frame_or_window, f);
 
-       return noErr;
+       result = noErr;
       }
       break;
 
     default:
-      break;
-    }
-
-  return eventNotHandledErr;
-}
-
-#if USE_MAC_FONT_PANEL
-static pascal OSStatus
-mac_handle_font_event (next_handler, event, data)
-     EventHandlerCallRef next_handler;
-     EventRef event;
-     void *data;
-{
-  OSStatus result, err;
-  Lisp_Object id_key;
-  int num_params;
-  const EventParamName *names;
-  const EventParamType *types;
-  static const EventParamName names_sel[] = {kEventParamATSUFontID,
-                                            kEventParamATSUFontSize,
-                                            kEventParamFMFontFamily,
-                                            kEventParamFMFontSize,
-                                            kEventParamFontColor};
-  static const EventParamType types_sel[] = {typeATSUFontID,
-                                            typeATSUSize,
-                                            typeFMFontFamily,
-                                            typeFMFontSize,
-                                            typeFontColor};
-
-  result = CallNextEventHandler (next_handler, event);
-  if (result != eventNotHandledErr)
-    return result;
-
-  switch (GetEventKind (event))
-    {
-    case kEventFontPanelClosed:
-      id_key = Qpanel_closed;
-      num_params = 0;
-      names = NULL;
-      types = NULL;
-      break;
-
-    case kEventFontSelection:
-      id_key = Qselection;
-      num_params = sizeof (names_sel) / sizeof (names_sel[0]);
-      names = names_sel;
-      types = types_sel;
-      break;
+      abort ();
     }
 
-  err = mac_store_event_ref_as_apple_event (0, 0, Qfont, id_key,
-                                           event, num_params,
-                                           names, types);
-
-  return err == noErr ? noErr : eventNotHandledErr;
+  return result;
 }
-#endif
 
 #if USE_MAC_TSM
 static pascal OSStatus
@@ -10120,7 +11156,7 @@ mac_handle_text_input_event (next_handler, event, data)
      EventRef event;
      void *data;
 {
-  OSStatus result, err = noErr;
+  OSStatus err, result;
   Lisp_Object id_key = Qnil;
   int num_params;
   const EventParamName *names;
@@ -10168,6 +11204,8 @@ mac_handle_text_input_event (next_handler, event, data)
      typeUnicodeText};
 
   result = CallNextEventHandler (next_handler, event);
+  if (result != eventNotHandledErr)
+    return result;
 
   switch (GetEventKind (event))
     {
@@ -10179,6 +11217,7 @@ mac_handle_text_input_event (next_handler, event, data)
       SetEventParameter (event, EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER,
                         typeUInt32, sizeof (UInt32), &seqno_uaia);
       seqno_uaia++;
+      result = noErr;
       break;
 
     case kEventTextInputUnicodeForKeyEvent:
@@ -10195,8 +11234,8 @@ mac_handle_text_input_event (next_handler, event, data)
                                   sizeof (UInt32), NULL, &modifiers);
        if (err == noErr && mac_mapped_modifiers (modifiers))
          /* There're mapped modifier keys.  Process it in
-            XTread_socket.  */
-         return eventNotHandledErr;
+            do_keystroke.  */
+         break;
        if (err == noErr)
          err = GetEventParameter (kbd_event, kEventParamKeyUnicodes,
                                   typeUnicodeText, NULL, 0, &actual_size,
@@ -10210,7 +11249,7 @@ mac_handle_text_input_event (next_handler, event, data)
                                     sizeof (UniChar), NULL, &code);
            if (err == noErr && code < 0x80)
              {
-               /* ASCII character.  Process it in XTread_socket.  */
+               /* ASCII character.  Process it in do_keystroke.  */
                if (read_socket_inev && code >= 0x20 && code <= 0x7e)
                  {
                    UInt32 key_code;
@@ -10235,16 +11274,20 @@ mac_handle_text_input_event (next_handler, event, data)
                        XSETFRAME (read_socket_inev->frame_or_window, f);
                      }
                  }
-               return eventNotHandledErr;
+               break;
              }
          }
+       if (err == noErr)
+         {
+           /* Non-ASCII keystrokes without mapped modifiers are
+              processed at the Lisp level.  */
+           id_key = Qunicode_for_key_event;
+           num_params = sizeof (names_ufke) / sizeof (names_ufke[0]);
+           names = names_ufke;
+           types = types_ufke;
+           result = noErr;
+         }
       }
-      /* Non-ASCII keystrokes without mapped modifiers are processed
-        at the Lisp level.  */
-      id_key = Qunicode_for_key_event;
-      num_params = sizeof (names_ufke) / sizeof (names_ufke[0]);
-      names = names_ufke;
-      types = types_ufke;
       break;
 
     case kEventTextInputOffsetToPos:
@@ -10254,34 +11297,35 @@ mac_handle_text_input_event (next_handler, event, data)
        Point p;
 
        if (!OVERLAYP (Vmac_ts_active_input_overlay))
-         return eventNotHandledErr;
+         break;
 
        /* Strictly speaking, this is not always correct because
           previous events may change some states about display.  */
-       if (NILP (Foverlay_get (Vmac_ts_active_input_overlay, Qbefore_string)))
+       if (!NILP (Foverlay_get (Vmac_ts_active_input_overlay, Qbefore_string)))
+         {
+           /* Active input area is displayed around the current point.  */
+           f = SELECTED_FRAME ();
+           w = XWINDOW (f->selected_window);
+         }
+       else if (WINDOWP (echo_area_window))
          {
-           if (!WINDOWP (echo_area_window))
-             return eventNotHandledErr;
-
            /* Active input area is displayed in the echo area.  */
            w = XWINDOW (echo_area_window);
            f = WINDOW_XFRAME (w);
          }
        else
-         {
-           /* Active input area is displayed around the current point.  */
-           f = SELECTED_FRAME ();
-           w = XWINDOW (f->selected_window);
-         }
+         break;
 
        p.h = (WINDOW_TO_FRAME_PIXEL_X (w, w->cursor.x)
-              + WINDOW_LEFT_FRINGE_WIDTH (w));
+              + WINDOW_LEFT_FRINGE_WIDTH (w)
+              + f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f));
        p.v = (WINDOW_TO_FRAME_PIXEL_Y (w, w->cursor.y)
-              + FONT_BASE (FRAME_FONT (f)));
-       SetPortWindowPort (FRAME_MAC_WINDOW (f));
-       LocalToGlobal (&p);
+              + FONT_BASE (FRAME_FONT (f))
+              + f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f));
        err = SetEventParameter (event, kEventParamTextInputReplyPoint,
                                 typeQDPoint, sizeof (typeQDPoint), &p);
+       if (err == noErr)
+         result = noErr;
       }
       break;
 
@@ -10293,146 +11337,152 @@ mac_handle_text_input_event (next_handler, event, data)
     err = mac_store_event_ref_as_apple_event (0, 0, Qtext_input, id_key,
                                              event, num_params,
                                              names, types);
-
-  return err == noErr ? noErr : result;
+  return result;
 }
 #endif
+#endif /* TARGET_API_MAC_CARBON */
+
 
-#ifdef MAC_OSX
 OSStatus
-mac_store_service_event (event)
-     EventRef event;
+install_window_handler (window)
+     WindowRef window;
 {
-  OSStatus err;
-  Lisp_Object id_key;
-  int num_params;
-  const EventParamName *names;
-  const EventParamType *types;
-  static const EventParamName names_pfm[] =
-    {kEventParamServiceMessageName, kEventParamServiceUserData};
-  static const EventParamType types_pfm[] =
-    {typeCFStringRef, typeCFStringRef};
+  OSStatus err = noErr;
 
-  switch (GetEventKind (event))
+#if TARGET_API_MAC_CARBON
+  if (err == noErr)
     {
-    case kEventServicePaste:
-      id_key = Qpaste;
-      num_params = 0;
-      names = NULL;
-      types = NULL;
-      break;
+      static const EventTypeSpec specs[] =
+       {
+         /* -- window refresh events -- */
+         {kEventClassWindow, kEventWindowUpdate},
+         /* -- window state change events -- */
+         {kEventClassWindow, kEventWindowShowing},
+         {kEventClassWindow, kEventWindowHiding},
+         {kEventClassWindow, kEventWindowShown},
+         {kEventClassWindow, kEventWindowHidden},
+         {kEventClassWindow, kEventWindowCollapsed},
+         {kEventClassWindow, kEventWindowExpanded},
+         {kEventClassWindow, kEventWindowBoundsChanging},
+         {kEventClassWindow, kEventWindowBoundsChanged},
+         /* -- window action events -- */
+         {kEventClassWindow, kEventWindowClose},
+         {kEventClassWindow, kEventWindowGetIdealSize},
+#ifdef MAC_OSX
+         {kEventClassWindow, kEventWindowToolbarSwitchMode},
+#endif
+#if USE_MAC_TSM
+         /* -- window focus events -- */
+         {kEventClassWindow, kEventWindowFocusAcquired},
+         {kEventClassWindow, kEventWindowFocusRelinquish},
+#endif
+       };
+      static EventHandlerUPP handle_window_eventUPP = NULL;
 
-    case kEventServicePerform:
-      id_key = Qperform;
-      num_params = sizeof (names_pfm) / sizeof (names_pfm[0]);
-      names = names_pfm;
-      types = types_pfm;
-      break;
+      if (handle_window_eventUPP == NULL)
+       handle_window_eventUPP = NewEventHandlerUPP (mac_handle_window_event);
 
-    default:
-      abort ();
+      err = InstallWindowEventHandler (window, handle_window_eventUPP,
+                                      GetEventTypeCount (specs),
+                                      specs, NULL, NULL);
     }
+#endif
 
-  err = mac_store_event_ref_as_apple_event (0, 0, Qservice, id_key,
-                                           event, num_params,
-                                           names, types);
+  if (err == noErr)
+    err = install_drag_handler (window);
 
   return err;
 }
-#endif /* MAC_OSX */
-#endif /* USE_CARBON_EVENTS */
 
+void
+remove_window_handler (window)
+     WindowRef window;
+{
+  remove_drag_handler (window);
+}
 
-OSStatus
-install_window_handler (window)
-     WindowPtr window;
+#if TARGET_API_MAC_CARBON
+static OSStatus
+install_application_handler ()
 {
   OSStatus err = noErr;
-#if USE_CARBON_EVENTS
-  static const EventTypeSpec specs_window[] =
-    {{kEventClassWindow, kEventWindowUpdate},
-     {kEventClassWindow, kEventWindowGetIdealSize},
-     {kEventClassWindow, kEventWindowBoundsChanging},
-     {kEventClassWindow, kEventWindowBoundsChanged},
-     {kEventClassWindow, kEventWindowShown},
-     {kEventClassWindow, kEventWindowHidden},
-     {kEventClassWindow, kEventWindowExpanded},
-     {kEventClassWindow, kEventWindowCollapsed},
-     {kEventClassWindow, kEventWindowClose},
-#ifdef MAC_OSX
-     {kEventClassWindow, kEventWindowToolbarSwitchMode},
-#endif
-#if USE_MAC_TSM
-     {kEventClassWindow, kEventWindowFocusAcquired},
-     {kEventClassWindow, kEventWindowFocusRelinquish},
-#endif
-  };
-  static const EventTypeSpec specs_mouse[] =
-    {{kEventClassMouse, kEventMouseWheelMoved}};
-  static EventHandlerUPP handle_window_eventUPP = NULL;
-  static EventHandlerUPP handle_mouse_eventUPP = NULL;
-#if USE_MAC_FONT_PANEL
-  static const EventTypeSpec specs_font[] =
-    {{kEventClassFont, kEventFontPanelClosed},
-     {kEventClassFont, kEventFontSelection}};
-  static EventHandlerUPP handle_font_eventUPP = NULL;
-#endif
-#if USE_MAC_TSM
-  static const EventTypeSpec specs_text_input[] =
-    {{kEventClassTextInput, kEventTextInputUpdateActiveInputArea},
-     {kEventClassTextInput, kEventTextInputUnicodeForKeyEvent},
-     {kEventClassTextInput, kEventTextInputOffsetToPos}};
-  static EventHandlerUPP handle_text_input_eventUPP = NULL;
-#endif
 
-  if (handle_window_eventUPP == NULL)
-    handle_window_eventUPP = NewEventHandlerUPP (mac_handle_window_event);
-  if (handle_mouse_eventUPP == NULL)
-    handle_mouse_eventUPP = NewEventHandlerUPP (mac_handle_mouse_event);
-#if USE_MAC_FONT_PANEL
-  if (handle_font_eventUPP == NULL)
-    handle_font_eventUPP = NewEventHandlerUPP (mac_handle_font_event);
-#endif
+  if (err == noErr)
+    {
+      static const EventTypeSpec specs[] = {
 #if USE_MAC_TSM
-  if (handle_text_input_eventUPP == NULL)
-    handle_text_input_eventUPP =
-      NewEventHandlerUPP (mac_handle_text_input_event);
+       {kEventClassApplication, kEventAppActivated},
+       {kEventClassApplication, kEventAppDeactivated},
 #endif
-  err = InstallWindowEventHandler (window, handle_window_eventUPP,
-                                  GetEventTypeCount (specs_window),
-                                  specs_window, NULL, NULL);
+      };
+
+      err = InstallApplicationEventHandler (NewEventHandlerUPP
+                                           (mac_handle_application_event),
+                                           GetEventTypeCount (specs),
+                                           specs, NULL, NULL);
+    }
+
   if (err == noErr)
-    err = InstallWindowEventHandler (window, handle_mouse_eventUPP,
-                                    GetEventTypeCount (specs_mouse),
-                                    specs_mouse, NULL, NULL);
-#if USE_MAC_FONT_PANEL
+    {
+      static const EventTypeSpec specs[] =
+       {{kEventClassKeyboard, kEventRawKeyDown},
+        {kEventClassKeyboard, kEventRawKeyRepeat},
+        {kEventClassKeyboard, kEventRawKeyUp}};
+
+      err = InstallApplicationEventHandler (NewEventHandlerUPP
+                                           (mac_handle_keyboard_event),
+                                           GetEventTypeCount (specs),
+                                           specs, NULL, NULL);
+    }
+
   if (err == noErr)
-    err = InstallWindowEventHandler (window, handle_font_eventUPP,
-                                    GetEventTypeCount (specs_font),
-                                    specs_font, NULL, NULL);
-#endif
+    {
+      static const EventTypeSpec specs[] =
+       {{kEventClassCommand, kEventCommandProcess}};
+
+      err = InstallApplicationEventHandler (NewEventHandlerUPP
+                                           (mac_handle_command_event),
+                                           GetEventTypeCount (specs),
+                                           specs, NULL, NULL);
+    }
+
+  if (err == noErr)
+    {
+      static const EventTypeSpec specs[] =
+       {{kEventClassMouse, kEventMouseWheelMoved}};
+
+      err = InstallApplicationEventHandler (NewEventHandlerUPP
+                                           (mac_handle_mouse_event),
+                                           GetEventTypeCount (specs),
+                                           specs, NULL, NULL);
+    }
+
 #if USE_MAC_TSM
   if (err == noErr)
-    err = InstallWindowEventHandler (window, handle_text_input_eventUPP,
-                                    GetEventTypeCount (specs_text_input),
-                                    specs_text_input, window, NULL);
-#endif
+    {
+      static const EventTypeSpec spec[] =
+       {{kEventClassTextInput, kEventTextInputUpdateActiveInputArea},
+        {kEventClassTextInput, kEventTextInputUnicodeForKeyEvent},
+        {kEventClassTextInput, kEventTextInputOffsetToPos}};
+
+      err = InstallApplicationEventHandler (NewEventHandlerUPP
+                                           (mac_handle_text_input_event),
+                                           GetEventTypeCount (spec),
+                                           spec, NULL, NULL);
+    }
 #endif
+
   if (err == noErr)
-    err = install_drag_handler (window);
+    err = install_menu_target_item_handler ();
+
+#ifdef MAC_OSX
   if (err == noErr)
-    err = install_menu_target_item_handler (window);
+    err = install_service_handler ();
+#endif
 
   return err;
 }
-
-void
-remove_window_handler (window)
-     WindowPtr window;
-{
-  remove_drag_handler (window);
-}
-
+#endif
 
 static pascal void
 mac_handle_dm_notification (event)
@@ -10441,20 +11491,48 @@ mac_handle_dm_notification (event)
   mac_screen_config_changed = 1;
 }
 
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
+static void
+mac_handle_cg_display_reconfig (display, flags, user_info)
+     CGDirectDisplayID display;
+     CGDisplayChangeSummaryFlags flags;
+     void *user_info;
+{
+  mac_screen_config_changed = 1;
+}
+#endif
+
 static OSErr
 init_dm_notification_handler ()
 {
-  OSErr err;
-  static DMNotificationUPP handle_dm_notificationUPP = NULL;
-  ProcessSerialNumber psn;
+  OSErr err = noErr;
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
+#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
+  if (CGDisplayRegisterReconfigurationCallback != NULL)
+#endif
+    {
+      CGDisplayRegisterReconfigurationCallback (mac_handle_cg_display_reconfig,
+                                               NULL);
+    }
+#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
+  else         /* CGDisplayRegisterReconfigurationCallback == NULL */
+#endif
+#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
+    {
+      static DMNotificationUPP handle_dm_notificationUPP = NULL;
+      ProcessSerialNumber psn;
 
-  if (handle_dm_notificationUPP == NULL)
-    handle_dm_notificationUPP =
-      NewDMNotificationUPP (mac_handle_dm_notification);
+      if (handle_dm_notificationUPP == NULL)
+       handle_dm_notificationUPP =
+         NewDMNotificationUPP (mac_handle_dm_notification);
 
-  err = GetCurrentProcess (&psn);
-  if (err == noErr)
-    err = DMRegisterNotifyProc (handle_dm_notificationUPP, &psn);
+      err = GetCurrentProcess (&psn);
+      if (err == noErr)
+       err = DMRegisterNotifyProc (handle_dm_notificationUPP, &psn);
+    }
+#endif
 
   return err;
 }
@@ -10599,7 +11677,7 @@ main (void)
 }
 #endif
 
-#if !USE_CARBON_EVENTS
+#if !TARGET_API_MAC_CARBON
 static RgnHandle mouse_region = NULL;
 
 Boolean
@@ -10636,7 +11714,7 @@ mac_wait_next_event (er, sleep_time, dequeue)
     er_buf.what = nullEvent;
   return true;
 }
-#endif /* not USE_CARBON_EVENTS */
+#endif /* not TARGET_API_MAC_CARBON */
 
 #if TARGET_API_MAC_CARBON
 OSStatus
@@ -10670,44 +11748,6 @@ mac_post_mouse_moved_event ()
 
   return err;
 }
-
-static void
-mac_set_unicode_keystroke_event (code, buf)
-     UniChar code;
-     struct input_event *buf;
-{
-  int charset_id, c1, c2;
-
-  if (code < 0x80)
-    {
-      buf->kind = ASCII_KEYSTROKE_EVENT;
-      buf->code = code;
-    }
-  else if (code < 0x100)
-    {
-      if (code < 0xA0)
-       charset_id = CHARSET_8_BIT_CONTROL;
-      else
-       charset_id = charset_latin_iso8859_1;
-      buf->kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
-      buf->code = MAKE_CHAR (charset_id, code, 0);
-    }
-  else
-    {
-      if (code < 0x2500)
-       charset_id = charset_mule_unicode_0100_24ff,
-         code -= 0x100;
-      else if (code < 0x33FF)
-       charset_id = charset_mule_unicode_2500_33ff,
-         code -= 0x2500;
-      else if (code >= 0xE000)
-       charset_id = charset_mule_unicode_e000_ffff,
-         code -= 0xE000;
-      c1 = (code / 96) + 32, c2 = (code % 96) + 32;
-      buf->kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
-      buf->code = MAKE_CHAR (charset_id, c1, c2);
-    }
-}
 #endif
 
 /* Emacs calls this whenever it wants to read an input event from the
@@ -10719,7 +11759,7 @@ XTread_socket (sd, expected, hold_quit)
 {
   struct input_event inev;
   int count = 0;
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
   EventRef eventRef;
   EventTargetRef toolbox_dispatcher;
 #endif
@@ -10740,7 +11780,7 @@ XTread_socket (sd, expected, hold_quit)
 
   ++handling_signal;
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
   toolbox_dispatcher = GetEventDispatcherTarget ();
 
   while (
@@ -10749,9 +11789,9 @@ XTread_socket (sd, expected, hold_quit)
 #endif
         !ReceiveNextEvent (0, NULL, kEventDurationNoWait,
                            kEventRemoveFromQueue, &eventRef))
-#else /* !USE_CARBON_EVENTS */
+#else /* !TARGET_API_MAC_CARBON */
   while (mac_wait_next_event (&er, 0, true))
-#endif /* !USE_CARBON_EVENTS */
+#endif /* !TARGET_API_MAC_CARBON */
     {
       int do_help = 0;
       struct frame *f;
@@ -10761,44 +11801,33 @@ XTread_socket (sd, expected, hold_quit)
       inev.kind = NO_EVENT;
       inev.arg = Qnil;
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
       timestamp = GetEventTime (eventRef) / kEventDurationMillisecond;
-#else
-      timestamp = er.when * (1000 / 60); /* ticks to milliseconds */
-#endif
 
-#if USE_CARBON_EVENTS
-      /* Handle new events */
       if (!mac_convert_event_ref (eventRef, &er))
-       {
-         /* There used to be a handler for the kEventMouseWheelMoved
-            event here.  But as of Mac OS X 10.4, this kind of event
-            is not directly posted to the main event queue by
-            two-finger scrolling on the trackpad.  Instead, some
-            private event is posted and it is converted to a wheel
-            event by the default handler for the application target.
-            The converted one can be received by a Carbon event
-            handler installed on a window target.  */
-         read_socket_inev = &inev;
-         SendEventToEventTarget (eventRef, toolbox_dispatcher);
-         read_socket_inev = NULL;
-       }
-      else
-#endif /* USE_CARBON_EVENTS */
+       goto OTHER;
+#else  /* !TARGET_API_MAC_CARBON */
+      timestamp = er.when * (1000 / 60); /* ticks to milliseconds */
+#endif  /* !TARGET_API_MAC_CARBON */
+
       switch (er.what)
        {
        case mouseDown:
        case mouseUp:
          {
-           WindowPtr window_ptr;
+           WindowRef window_ptr;
            ControlPartCode part_code;
            int tool_bar_p = 0;
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
+           OSStatus err;
+
            /* This is needed to send mouse events like aqua window
               buttons to the correct handler.  */
-           if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
-               != eventNotHandledErr)
+           read_socket_inev = &inev;
+           err = SendEventToEventTarget (eventRef, toolbox_dispatcher);
+           read_socket_inev = NULL;
+           if (err != eventNotHandledErr)
              break;
 #endif
            last_mouse_glyph_frame = 0;
@@ -10846,17 +11875,20 @@ XTread_socket (sd, expected, hold_quit)
                else
                  {
                    ControlPartCode control_part_code;
-                   ControlHandle ch;
-                   Point mouse_loc = er.where;
+                   ControlRef ch;
+                   Point mouse_loc;
 #ifdef MAC_OSX
                    ControlKind control_kind;
 #endif
 
                    f = mac_window_to_frame (window_ptr);
                    /* convert to local coordinates of new window */
-                   SetPortWindowPort (window_ptr);
-
-                   GlobalToLocal (&mouse_loc);
+                   mouse_loc.h = (er.where.h
+                                  - (f->left_pos
+                                     + FRAME_OUTER_TO_INNER_DIFF_X (f)));
+                   mouse_loc.v = (er.where.v
+                                  - (f->top_pos
+                                     + FRAME_OUTER_TO_INNER_DIFF_Y (f)));
 #if TARGET_API_MAC_CARBON
                    ch = FindControlUnderMouse (mouse_loc, window_ptr,
                                                &control_part_code);
@@ -10869,7 +11901,7 @@ XTread_socket (sd, expected, hold_quit)
                                                     &ch);
 #endif
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
                    inev.code = mac_get_mouse_btn (eventRef);
                    inev.modifiers = mac_event_to_emacs_modifiers (eventRef);
 #else
@@ -11005,16 +12037,14 @@ XTread_socket (sd, expected, hold_quit)
                DragWindow (window_ptr, er.where, NULL);
 #else /* not TARGET_API_MAC_CARBON */
                DragWindow (window_ptr, er.where, &qd.screenBits.bounds);
-#endif /* not TARGET_API_MAC_CARBON */
                /* Update the frame parameters.  */
-#if !USE_CARBON_EVENTS
                {
                  struct frame *f = mac_window_to_frame (window_ptr);
 
                  if (f && !f->async_iconified)
                    mac_handle_origin_change (f);
                }
-#endif
+#endif /* not TARGET_API_MAC_CARBON */
                break;
 
              case inGoAway:
@@ -11038,41 +12068,38 @@ XTread_socket (sd, expected, hold_quit)
                  do_zoom_window (window_ptr, part_code);
                break;
 
+#if USE_MAC_TOOLBAR
+             case inStructure:
+               {
+                 OSStatus err;
+                 HIViewRef ch;
+
+                 err = HIViewGetViewForMouseEvent (HIViewGetRoot (window_ptr),
+                                                   eventRef, &ch);
+                 /* This doesn't work on Mac OS X 10.2.  */
+                 if (err == noErr)
+                   HIViewClick (ch, eventRef);
+               }
+               break;
+#endif /* USE_MAC_TOOLBAR */
+
              default:
                break;
              }
          }
          break;
 
+#if !TARGET_API_MAC_CARBON
        case updateEvt:
-#if USE_CARBON_EVENTS
-         if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
-             != eventNotHandledErr)
-           break;
-#else
-         do_window_update ((WindowPtr) er.message);
-#endif
+         do_window_update ((WindowRef) er.message);
          break;
+#endif
 
        case osEvt:
-#if USE_CARBON_EVENTS
-         if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
-             != eventNotHandledErr)
-           break;
-#endif
          switch ((er.message >> 24) & 0x000000FF)
            {
-           case suspendResumeMessage:
-#if USE_MAC_TSM
-             if (er.message & resumeFlag)
-               mac_tsm_resume ();
-             else
-               mac_tsm_suspend ();
-#endif
-             break;
-
            case mouseMovedMessage:
-#if !USE_CARBON_EVENTS
+#if !TARGET_API_MAC_CARBON
              SetRectRgn (mouse_region, er.where.h, er.where.v,
                          er.where.h + 1, er.where.v + 1);
 #endif
@@ -11093,13 +12120,15 @@ XTread_socket (sd, expected, hold_quit)
 
              if (f)
                {
-                 WindowPtr wp = FRAME_MAC_WINDOW (f);
-                 Point mouse_pos = er.where;
-
-                 SetPortWindowPort (wp);
-
-                 GlobalToLocal (&mouse_pos);
-
+                 WindowRef wp = FRAME_MAC_WINDOW (f);
+                 Point mouse_pos;
+
+                 mouse_pos.h = (er.where.h
+                                - (f->left_pos
+                                   + FRAME_OUTER_TO_INNER_DIFF_X (f)));
+                 mouse_pos.v = (er.where.v
+                                - (f->top_pos
+                                   + FRAME_OUTER_TO_INNER_DIFF_Y (f)));
                  if (dpyinfo->grabbed && tracked_scroll_bar)
 #ifdef USE_TOOLKIT_SCROLL_BARS
                    x_scroll_bar_handle_drag (wp, tracked_scroll_bar,
@@ -11144,6 +12173,10 @@ XTread_socket (sd, expected, hold_quit)
                        }
                      if (!note_mouse_movement (f, &mouse_pos))
                        help_echo_string = previous_help_echo_string;
+#if USE_MAC_TOOLBAR
+                     else
+                       mac_tool_bar_note_mouse_movement (f, eventRef);
+#endif
                    }
                }
 
@@ -11153,18 +12186,18 @@ XTread_socket (sd, expected, hold_quit)
              if (!NILP (help_echo_string) || !NILP (previous_help_echo_string))
                do_help = 1;
              break;
+
+           default:
+             goto OTHER;
            }
          break;
 
        case activateEvt:
          {
-           WindowPtr window_ptr = (WindowPtr) er.message;
+           WindowRef window_ptr = (WindowRef) er.message;
+           OSErr err;
+           ControlRef root_control;
 
-#if USE_CARBON_EVENTS
-           if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
-               != eventNotHandledErr)
-             break;
-#endif
            if (window_ptr == tip_window)
              {
                HideWindow (tip_window);
@@ -11172,25 +12205,38 @@ XTread_socket (sd, expected, hold_quit)
              }
 
            if (!is_emacs_window (window_ptr))
-             break;
+             goto OTHER;
+
+           f = mac_window_to_frame (window_ptr);
 
            if ((er.modifiers & activeFlag) != 0)
              {
                /* A window has been activated */
-               Point mouse_loc = er.where;
+               Point mouse_loc;
+
+               err = GetRootControl (FRAME_MAC_WINDOW (f), &root_control);
+               if (err == noErr)
+                 ActivateControl (root_control);
 
                x_detect_focus_change (dpyinfo, &er, &inev);
 
-               SetPortWindowPort (window_ptr);
-               GlobalToLocal (&mouse_loc);
+               mouse_loc.h = (er.where.h
+                              - (f->left_pos
+                                 + FRAME_OUTER_TO_INNER_DIFF_X (f)));
+               mouse_loc.v = (er.where.v
+                              - (f->top_pos
+                                 + FRAME_OUTER_TO_INNER_DIFF_Y (f)));
                /* Window-activated event counts as mouse movement,
                   so update things that depend on mouse position.  */
-               note_mouse_movement (mac_window_to_frame (window_ptr),
-                                    &mouse_loc);
+               note_mouse_movement (f, &mouse_loc);
              }
            else
              {
                /* A window has been deactivated */
+               err = GetRootControl (FRAME_MAC_WINDOW (f), &root_control);
+               if (err == noErr)
+                 DeactivateControl (root_control);
+
 #ifdef USE_TOOLKIT_SCROLL_BARS
                if (dpyinfo->grabbed && tracked_scroll_bar)
                  {
@@ -11211,7 +12257,6 @@ XTread_socket (sd, expected, hold_quit)
 
                x_detect_focus_change (dpyinfo, &er, &inev);
 
-               f = mac_window_to_frame (window_ptr);
                if (f == dpyinfo->mouse_face_mouse_frame)
                  {
                    /* If we move outside the frame, then we're
@@ -11234,217 +12279,41 @@ XTread_socket (sd, expected, hold_quit)
        case keyDown:
        case keyUp:
        case autoKey:
+         ObscureCursor ();
+
+         f = mac_focus_frame (dpyinfo);
+         XSETFRAME (inev.frame_or_window, f);
+
+         /* If mouse-highlight is an integer, input clears out mouse
+            highlighting.  */
+         if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
+             && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))
+           {
+             clear_mouse_face (dpyinfo);
+             dpyinfo->mouse_face_hidden = 1;
+           }
+
          {
-           int keycode = (er.message & keyCodeMask) >> 8;
-           static SInt16 last_key_script = -1;
-           SInt16 current_key_script;
            UInt32 modifiers = er.modifiers, mapped_modifiers;
 
-#if USE_CARBON_EVENTS && defined (MAC_OSX)
+#ifdef MAC_OSX
            GetEventParameter (eventRef, kEventParamKeyModifiers,
                               typeUInt32, NULL,
                               sizeof (UInt32), NULL, &modifiers);
 #endif
            mapped_modifiers = mac_mapped_modifiers (modifiers);
 
-#if USE_CARBON_EVENTS && (defined (MAC_OSX) || USE_MAC_TSM)
-           /* When using Carbon Events, we need to pass raw keyboard
-              events to the TSM ourselves.  If TSM handles it, it
-              will pass back noErr, otherwise it will pass back
-              "eventNotHandledErr" and we can process it
-              normally.  */
+#if TARGET_API_MAC_CARBON
            if (!(mapped_modifiers
                  & ~(mac_pass_command_to_system ? cmdKey : 0)
                  & ~(mac_pass_control_to_system ? controlKey : 0)))
-             {
-               OSStatus err;
-
-               read_socket_inev = &inev;
-               err = SendEventToEventTarget (eventRef, toolbox_dispatcher);
-               read_socket_inev = NULL;
-               if (err != eventNotHandledErr)
-                 break;
-             }
-#endif
-           if (er.what == keyUp)
-             break;
-
-           ObscureCursor ();
-
-           f = mac_focus_frame (dpyinfo);
-
-           if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
-               && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))
-             {
-               clear_mouse_face (dpyinfo);
-               dpyinfo->mouse_face_hidden = 1;
-             }
-
-           current_key_script = GetScriptManagerVariable (smKeyScript);
-           if (last_key_script != current_key_script)
-             {
-               struct input_event event;
-
-               EVENT_INIT (event);
-               event.kind = LANGUAGE_CHANGE_EVENT;
-               event.arg = Qnil;
-               event.code = current_key_script;
-               event.timestamp = timestamp;
-               kbd_buffer_store_event (&event);
-               count++;
-               last_key_script = current_key_script;
-             }
-
-#if USE_MAC_TSM
-           if (inev.kind != NO_EVENT)
-             break;
-#endif
-
-#ifdef MAC_OSX
-           if (mapped_modifiers & kEventKeyModifierFnMask
-               && keycode <= 0x7f
-               && fn_keycode_to_keycode_table[keycode])
-             keycode = fn_keycode_to_keycode_table[keycode];
-#endif
-           if (keycode <= 0x7f && keycode_to_xkeysym_table [keycode])
-             {
-               inev.kind = NON_ASCII_KEYSTROKE_EVENT;
-               inev.code = 0xff00 | keycode_to_xkeysym_table [keycode];
-#ifdef MAC_OSX
-               if (modifiers & kEventKeyModifierFnMask
-                   && keycode <= 0x7f
-                   && fn_keycode_to_keycode_table[keycode] == keycode)
-                 modifiers &= ~kEventKeyModifierFnMask;
-#endif
-             }
-           else if (mapped_modifiers)
-             {
-               /* translate the keycode back to determine the
-                  original key */
-#ifdef MAC_OSX
-               UCKeyboardLayout *uchr_ptr = NULL;
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
-               OSStatus err;
-               KeyboardLayoutRef layout;
-
-               err = KLGetCurrentKeyboardLayout (&layout);
-               if (err == noErr)
-                 KLGetKeyboardLayoutProperty (layout, kKLuchrData,
-                                              (const void **) &uchr_ptr);
-#else
-               static SInt16 last_key_layout_id = 0;
-               static Handle uchr_handle = (Handle)-1;
-               SInt16 current_key_layout_id =
-                 GetScriptVariable (current_key_script, smScriptKeys);
-
-               if (uchr_handle == (Handle)-1
-                   || last_key_layout_id != current_key_layout_id)
-                 {
-                   uchr_handle = GetResource ('uchr', current_key_layout_id);
-                   last_key_layout_id = current_key_layout_id;
-                 }
-               if (uchr_handle)
-                 uchr_ptr = (UCKeyboardLayout *)*uchr_handle;
-#endif
-
-               if (uchr_ptr)
-                 {
-                   OSStatus status;
-                   UInt16 key_action = er.what - keyDown;
-                   UInt32 modifier_key_state =
-                     (modifiers & ~mapped_modifiers) >> 8;
-                   UInt32 keyboard_type = LMGetKbdType ();
-                   SInt32 dead_key_state = 0;
-                   UniChar code;
-                   UniCharCount actual_length;
-
-                   status = UCKeyTranslate (uchr_ptr,
-                                            keycode, key_action,
-                                            modifier_key_state,
-                                            keyboard_type,
-                                            kUCKeyTranslateNoDeadKeysMask,
-                                            &dead_key_state,
-                                            1, &actual_length, &code);
-                   if (status == noErr && actual_length == 1)
-                     mac_set_unicode_keystroke_event (code, &inev);
-                 }
-#endif /* MAC_OSX */
-
-               if (inev.kind == NO_EVENT)
-                 {
-                   /* This code comes from Keyboard Resource,
-                      Appendix C of IM - Text.  This is necessary
-                      since shift is ignored in KCHR table
-                      translation when option or command is pressed.
-                      It also does not translate correctly
-                      control-shift chars like C-% so mask off shift
-                      here also.  */
-                   /* Mask off modifier keys that are mapped to some
-                      Emacs modifiers.  */
-                   int new_modifiers = er.modifiers & ~mapped_modifiers;
-                   /* set high byte of keycode to modifier high byte*/
-                   int new_keycode = keycode | new_modifiers;
-                   Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache);
-                   unsigned long some_state = 0;
-                   UInt32 new_char_code;
-
-                   new_char_code = KeyTranslate (kchr_ptr, new_keycode,
-                                                 &some_state);
-                   if (new_char_code == 0)
-                     /* Seems like a dead key.  Append up-stroke.  */
-                     new_char_code = KeyTranslate (kchr_ptr,
-                                                   new_keycode | 0x80,
-                                                   &some_state);
-                   if (new_char_code)
-                     {
-                       inev.kind = ASCII_KEYSTROKE_EVENT;
-                       inev.code = new_char_code & 0xff;
-                     }
-                 }
-             }
-
-           if (inev.kind == NO_EVENT)
-             {
-               inev.kind = ASCII_KEYSTROKE_EVENT;
-               inev.code = er.message & charCodeMask;
-             }
-
-           inev.modifiers = mac_to_emacs_modifiers (modifiers);
-           inev.modifiers |= (extra_keyboard_modifiers
-                              & (meta_modifier | alt_modifier
-                                 | hyper_modifier | super_modifier));
-           XSETFRAME (inev.frame_or_window, f);
-
-#if TARGET_API_MAC_CARBON
-           if (inev.kind == ASCII_KEYSTROKE_EVENT
-               && inev.code >= 0x80 && inev.modifiers)
-             {
-               OSStatus err;
-               TextEncoding encoding = kTextEncodingMacRoman;
-               TextToUnicodeInfo ttu_info;
-
-               UpgradeScriptInfoToTextEncoding (current_key_script,
-                                                kTextLanguageDontCare,
-                                                kTextRegionDontCare,
-                                                NULL, &encoding);
-               err = CreateTextToUnicodeInfoByEncoding (encoding, &ttu_info);
-               if (err == noErr)
-                 {
-                   UniChar code;
-                   Str255 pstr;
-                   ByteCount unicode_len;
-
-                   pstr[0] = 1;
-                   pstr[1] = inev.code;
-                   err = ConvertFromPStringToUnicode (ttu_info, pstr,
-                                                      sizeof (UniChar),
-                                                      &unicode_len, &code);
-                   if (err == noErr && unicode_len == sizeof (UniChar))
-                     mac_set_unicode_keystroke_event (code, &inev);
-                   DisposeTextToUnicodeInfo (&ttu_info);
-                 }
-             }
+             goto OTHER;
+           else
 #endif
+             if (er.what != keyUp)
+               do_keystroke (er.what, er.message & charCodeMask,
+                             (er.message & keyCodeMask) >> 8,
+                             modifiers, timestamp, &inev);
          }
          break;
 
@@ -11453,9 +12322,19 @@ XTread_socket (sd, expected, hold_quit)
          break;
 
        default:
+       OTHER:
+#if TARGET_API_MAC_CARBON
+         {
+           OSStatus err;
+
+           read_socket_inev = &inev;
+           err = SendEventToEventTarget (eventRef, toolbox_dispatcher);
+           read_socket_inev = NULL;
+         }
+#endif
          break;
        }
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
       ReleaseEvent (eventRef);
 #endif
 
@@ -11489,7 +12368,6 @@ XTread_socket (sd, expected, hold_quit)
            }
          count++;
        }
-
     }
 
   /* If the focus was just given to an autoraising frame,
@@ -11507,7 +12385,7 @@ XTread_socket (sd, expected, hold_quit)
       mac_screen_config_changed = 0;
     }
 
-#if !USE_CARBON_EVENTS
+#if !TARGET_API_MAC_CARBON
   /* Check which frames are still visible.  We do this here because
      there doesn't seem to be any direct notification from the Window
      Manager that the visibility of a window has changed (at least,
@@ -11612,7 +12490,7 @@ make_mac_terminal_frame (struct frame *f)
 
   if (!(FRAME_MAC_WINDOW (f) =
        NewCWindow (NULL, &r, "\p", true, dBoxProc,
-                   (WindowPtr) -1, 1, (long) f->output_data.mac)))
+                   (WindowRef) -1, 1, (long) f->output_data.mac)))
     abort ();
   /* so that update events can find this mac_output struct */
   f->output_data.mac->mFP = f;  /* point back to emacs frame */
@@ -11663,6 +12541,7 @@ mac_term_init (display_name, xrm_option, resource_name)
      char *resource_name;
 {
   struct mac_display_info *dpyinfo;
+  struct terminal *terminal;
 
   BLOCK_INPUT;
 
@@ -11678,6 +12557,13 @@ mac_term_init (display_name, xrm_option, resource_name)
   dpyinfo = &one_mac_display_info;
   bzero (dpyinfo, sizeof (*dpyinfo));
 
+  terminal = mac_create_terminal (dpyinfo);
+
+  /* Set the name of the terminal. */
+  terminal->name = (char *) xmalloc (SBYTES (display_name) + 1);
+  strncpy (terminal->name, SDATA (display_name), SBYTES (display_name));
+  terminal->name[SBYTES (display_name)] = 0;
+
 #ifdef MAC_OSX
   dpyinfo->mac_id_name
     = (char *) xmalloc (SCHARS (Vinvocation_name)
@@ -11719,6 +12605,10 @@ mac_term_init (display_name, xrm_option, resource_name)
                                x_display_name_list);
   dpyinfo->name_list_element = XCAR (x_display_name_list);
 
+#if USE_CG_DRAWING
+  mac_init_fringe (terminal->rif);
+#endif
+
   UNBLOCK_INPUT;
 
   return dpyinfo;
@@ -11802,7 +12692,6 @@ init_menu_bar ()
                                     &menu, &menu_index);
   if (err == noErr)
     SetMenuItemCommandKey (menu, menu_index, false, 0);
-#if USE_CARBON_EVENTS
   EnableMenuCommand (NULL, kHICommandPreferences);
   err = GetIndMenuItemWithCommandID (NULL, kHICommandPreferences, 1,
                                     &menu, &menu_index);
@@ -11814,10 +12703,9 @@ init_menu_bar ()
       InsertMenuItemTextWithCFString (menu, CFSTR ("About Emacs"),
                                      0, 0, kHICommandAbout);
     }
-#endif /* USE_CARBON_EVENTS */
 #else  /* !MAC_OSX */
-#if USE_CARBON_EVENTS
-  SetMenuItemCommandID (GetMenuHandle (M_APPLE), I_ABOUT, kHICommandAbout);
+#if TARGET_API_MAC_CARBON
+  SetMenuItemCommandID (GetMenuRef (M_APPLE), I_ABOUT, kHICommandAbout);
 #endif
 #endif
 }
@@ -11881,62 +12769,84 @@ static struct redisplay_interface x_redisplay_interface =
   mac_shift_glyphs_for_insert
 };
 
-void
+static struct terminal *
+mac_create_terminal (struct mac_display_info *dpyinfo)
+{
+  struct terminal *terminal;
+  
+  terminal = create_terminal ();
+
+  terminal->type = output_mac;
+  terminal->display_info.mac = dpyinfo;
+  dpyinfo->terminal = terminal;
+
+  terminal->clear_frame_hook = x_clear_frame;
+  terminal->ins_del_lines_hook = x_ins_del_lines;
+  terminal->delete_glyphs_hook = x_delete_glyphs;
+  terminal->ring_bell_hook = XTring_bell;
+  terminal->reset_terminal_modes_hook = XTreset_terminal_modes;
+  terminal->set_terminal_modes_hook = XTset_terminal_modes;
+  terminal->update_begin_hook = x_update_begin;
+  terminal->update_end_hook = x_update_end;
+  terminal->set_terminal_window_hook = XTset_terminal_window;
+  terminal->read_socket_hook = XTread_socket;
+  terminal->frame_up_to_date_hook = XTframe_up_to_date;
+  terminal->mouse_position_hook = XTmouse_position;
+  terminal->frame_rehighlight_hook = XTframe_rehighlight;
+  terminal->frame_raise_lower_hook = XTframe_raise_lower;
+  /* terminal->fullscreen_hook = XTfullscreen_hook; */
+  terminal->set_vertical_scroll_bar_hook = XTset_vertical_scroll_bar;
+  terminal->condemn_scroll_bars_hook = XTcondemn_scroll_bars;
+  terminal->redeem_scroll_bar_hook = XTredeem_scroll_bar;
+  terminal->judge_scroll_bars_hook = XTjudge_scroll_bars;
+  terminal->delete_frame_hook = x_destroy_window;
+  /* terminal->delete_terminal_hook = x_delete_terminal; */
+
+  terminal->rif = &x_redisplay_interface;
+#if 0
+  TTY_SCROLL_REGION_OK (CURTTY ()) = 1; /* we'll scroll partial frames */
+  TTY_CHAR_INS_DEL_OK (CURTTY ()) = 1;
+  TTY_LINE_INS_DEL_OK (CURTTY ()) = 1; /* we'll just blt 'em */
+  TTY_FAST_CLEAR_END_OF_LINE (CURTTY ()) = 1; /* X does this well */
+  TTY_MEMORY_BELOW_FRAME (CURTTY ()) = 0; /* we don't remember what
+                                                         scrolls off the
+                                                         bottom */
+#else
+  terminal->scroll_region_ok = 1;    /* We'll scroll partial frames. */
+  terminal->char_ins_del_ok = 1;
+  terminal->line_ins_del_ok = 1;         /* We'll just blt 'em. */
+  terminal->fast_clear_end_of_line = 1;  /* X does this well. */
+  terminal->memory_below_frame = 0;   /* We don't remember what scrolls
+                                        off the bottom. */
+
+#endif
+
+  return terminal;
+}
+
+static void
 mac_initialize ()
 {
-  rif = &x_redisplay_interface;
-
-  clear_frame_hook = x_clear_frame;
-  ins_del_lines_hook = x_ins_del_lines;
-  delete_glyphs_hook = x_delete_glyphs;
-  ring_bell_hook = XTring_bell;
-  reset_terminal_modes_hook = XTreset_terminal_modes;
-  set_terminal_modes_hook = XTset_terminal_modes;
-  update_begin_hook = x_update_begin;
-  update_end_hook = x_update_end;
-  set_terminal_window_hook = XTset_terminal_window;
-  read_socket_hook = XTread_socket;
-  frame_up_to_date_hook = XTframe_up_to_date;
-  mouse_position_hook = XTmouse_position;
-  frame_rehighlight_hook = XTframe_rehighlight;
-  frame_raise_lower_hook = XTframe_raise_lower;
-
-  set_vertical_scroll_bar_hook = XTset_vertical_scroll_bar;
-  condemn_scroll_bars_hook = XTcondemn_scroll_bars;
-  redeem_scroll_bar_hook = XTredeem_scroll_bar;
-  judge_scroll_bars_hook = XTjudge_scroll_bars;
-
-  scroll_region_ok = 1;         /* we'll scroll partial frames */
-  char_ins_del_ok = 1;
-  line_ins_del_ok = 1;          /* we'll just blt 'em */
-  fast_clear_end_of_line = 1;   /* X does this well */
-  memory_below_frame = 0;       /* we don't remember what scrolls
-                                  off the bottom */
+
   baud_rate = 19200;
 
   last_tool_bar_item = -1;
   any_help_event_p = 0;
 
   /* Try to use interrupt input; if we can't, then start polling.  */
-  Fset_input_mode (Qt, Qnil, Qt, Qnil);
+  Fset_input_interrupt_mode (Qt);
 
   BLOCK_INPUT;
 
 #if TARGET_API_MAC_CARBON
 
-#if USE_CARBON_EVENTS
-#ifdef MAC_OSX
-  init_service_handler ();
-#endif /* MAC_OSX */
-
-  init_command_handler ();
+  install_application_handler ();
 
   init_menu_bar ();
 
 #if USE_MAC_TSM
   init_tsm ();
 #endif
-#endif /* USE_CARBON_EVENTS */
 
 #ifdef MAC_OSX
   init_coercion_handler ();
@@ -11956,11 +12866,10 @@ mac_initialize ()
 
 #if USE_CG_DRAWING
   init_cg_color ();
-
-  mac_init_fringe ();
 #endif
 
   UNBLOCK_INPUT;
+
 }
 
 
@@ -11986,7 +12895,7 @@ syms_of_macterm ()
   Fput (Qhyper,   Qmodifier_value, make_number (hyper_modifier));
   Fput (Qsuper,   Qmodifier_value, make_number (super_modifier));
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
   Qhi_command   = intern ("hi-command");    staticpro (&Qhi_command);
 #ifdef MAC_OSX
   Qtoolbar_switch_mode = intern ("toolbar-switch-mode");
@@ -12111,7 +13020,7 @@ The symbol `reverse' means that the option-key will register for
 mouse-3 and the command-key will register for mouse-2.  */);
   Vmac_emulate_three_button_mouse = Qnil;
 
-#if USE_CARBON_EVENTS
+#if TARGET_API_MAC_CARBON
   DEFVAR_BOOL ("mac-wheel-button-is-mouse-2", &mac_wheel_button_is_mouse_2,
     doc: /* *Non-nil if the wheel button is mouse-2 and the right click mouse-3.
 Otherwise, the right click will be treated as mouse-2 and the wheel
index 6a68f39762d1cc89600316ec9bbf020f5a94edc0..f319adeb6595fef4fb225c7c4406f9cb31ebd64a 100644 (file)
@@ -64,6 +64,9 @@ struct mac_display_info
   /* Chain of all mac_display_info structures.  */
   struct mac_display_info *next;
 
+  /* The generic display parameters corresponding to this X display. */
+  struct terminal *terminal;
+
   /* This is a cons cell of the form (NAME . FONT-LIST-CACHE).
      The same cons cell also appears in x_display_name_list.  */
   Lisp_Object name_list_element;
@@ -333,6 +336,16 @@ struct mac_output
   /* Hints for the size and the position of a window.  */
   XSizeHints *size_hints;
 
+#if USE_MAC_TOOLBAR
+  /* This variable records the gravity value of the window position if
+     the window has an external tool bar when it is created.  The
+     position of the window is adjusted using this information when
+     the tool bar is first redisplayed.  Once the tool bar is
+     redisplayed, it is set to 0 in order to avoid further
+     adjustment.  */
+  int toolbar_win_gravity;
+#endif
+
 #if USE_CG_DRAWING
   /* Quartz 2D graphics context.  */
   CGContextRef cg_context;
@@ -348,9 +361,6 @@ typedef struct mac_output mac_output;
 #define FRAME_MAC_WINDOW(f) ((f)->output_data.mac->window_desc)
 #define FRAME_X_WINDOW(f) ((f)->output_data.mac->window_desc)
 
-#define FRAME_FOREGROUND_PIXEL(f) ((f)->output_data.x->foreground_pixel)
-#define FRAME_BACKGROUND_PIXEL(f) ((f)->output_data.x->background_pixel)
-
 #define FRAME_FONT(f) ((f)->output_data.mac->font)
 #define FRAME_FONTSET(f) ((f)->output_data.mac->fontset)
 
@@ -369,6 +379,12 @@ typedef struct mac_output mac_output;
 /* This is the 'font_info *' which frame F has.  */
 #define FRAME_MAC_FONT_TABLE(f) (FRAME_MAC_DISPLAY_INFO (f)->font_table)
 
+/* The difference in pixels between the top left corner of the
+   Emacs window (including possible window manager decorations)
+   and FRAME_MAC_WINDOW (f).  */
+#define FRAME_OUTER_TO_INNER_DIFF_X(f) ((f)->x_pixels_diff)
+#define FRAME_OUTER_TO_INNER_DIFF_Y(f) ((f)->y_pixels_diff)
+
 /* Value is the smallest width of any character in any font on frame F.  */
 
 #define FRAME_SMALLEST_CHAR_WIDTH(F) \
@@ -406,9 +422,9 @@ struct scroll_bar {
   /* The next and previous in the chain of scroll bars in this frame.  */
   Lisp_Object next, prev;
 
-  /* The Mac control handle of this scroll bar.  Since this is a
+  /* The Mac control reference of this scroll bar.  Since this is a
      pointer value, we store it split into two Lisp integers.  */
-  Lisp_Object control_handle_low, control_handle_high;
+  Lisp_Object control_ref_low, control_ref_high;
 
   /* The position and size of the scroll bar in pixels, relative to the
      frame.  */
@@ -435,6 +451,12 @@ struct scroll_bar {
      being dragged, this is Qnil.  */
   Lisp_Object dragging;
 
+#ifdef MAC_OSX
+  /* t if the background of the fringe that is adjacent to a scroll
+     bar is extended to the gap between the fringe and the bar.  */
+  Lisp_Object fringe_extended_p;
+#endif
+
 #ifdef USE_TOOLKIT_SCROLL_BARS
   /* The position and size of the scroll bar handle track area in
      pixels, relative to the frame.  */
@@ -466,14 +488,14 @@ struct scroll_bar {
 
 /* Extract the Mac control handle of the scroll bar from a struct
    scroll_bar.  */
-#define SCROLL_BAR_CONTROL_HANDLE(ptr) \
-  ((ControlHandle) SCROLL_BAR_PACK ((ptr)->control_handle_low, \
-                                    (ptr)->control_handle_high))
+#define SCROLL_BAR_CONTROL_REF(ptr)                            \
+  ((ControlRef) SCROLL_BAR_PACK ((ptr)->control_ref_low,       \
+                                (ptr)->control_ref_high))
 
 /* Store a Mac control handle in a struct scroll_bar.  */
-#define SET_SCROLL_BAR_CONTROL_HANDLE(ptr, handle) \
-  (SCROLL_BAR_UNPACK ((ptr)->control_handle_low, \
-                      (ptr)->control_handle_high, (unsigned long) (handle)))
+#define SET_SCROLL_BAR_CONTROL_REF(ptr, ref)                           \
+  (SCROLL_BAR_UNPACK ((ptr)->control_ref_low,                          \
+                      (ptr)->control_ref_high, (unsigned long) (ref)))
 
 /* Return the inside width of a vertical scroll bar, given the outside
    width.  */
@@ -614,10 +636,9 @@ extern void x_free_frame_resources P_ ((struct frame *));
 extern void x_destroy_window P_ ((struct frame *));
 extern void x_wm_set_size_hint P_ ((struct frame *, long, int));
 extern void x_delete_display P_ ((struct x_display_info *));
-extern void mac_initialize P_ ((void));
-extern Pixmap XCreatePixmap P_ ((Display *, WindowPtr, unsigned int,
+extern Pixmap XCreatePixmap P_ ((Display *, WindowRef, unsigned int,
                                 unsigned int, unsigned int));
-extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, WindowPtr, char *,
+extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, WindowRef, char *,
                                               unsigned int, unsigned int,
                                               unsigned long, unsigned long,
                                               unsigned int));
@@ -626,7 +647,7 @@ extern GC XCreateGC P_ ((Display *, void *, unsigned long, XGCValues *));
 extern void XFreeGC P_ ((Display *, GC));
 extern void XSetForeground P_ ((Display *, GC, unsigned long));
 extern void XSetBackground P_ ((Display *, GC, unsigned long));
-extern void XSetWindowBackground P_ ((Display *, WindowPtr, unsigned long));
+extern void XSetWindowBackground P_ ((Display *, WindowRef, unsigned long));
 extern void XDrawLine P_ ((Display *, Pixmap, GC, int, int, int, int));
 extern void mac_clear_area P_ ((struct frame *, int, int,
                                unsigned int, unsigned int));
@@ -634,8 +655,8 @@ extern void mac_unload_font P_ ((struct mac_display_info *, XFontStruct *));
 extern int mac_font_panel_visible_p P_ ((void));
 extern OSStatus mac_show_hide_font_panel P_ ((void));
 extern OSStatus mac_set_font_info_for_selection P_ ((struct frame *, int, int));
-extern OSStatus install_window_handler P_ ((WindowPtr));
-extern void remove_window_handler P_ ((WindowPtr));
+extern OSStatus install_window_handler P_ ((WindowRef));
+extern void remove_window_handler P_ ((WindowRef));
 extern OSStatus mac_post_mouse_moved_event P_ ((void));
 #if !TARGET_API_MAC_CARBON
 extern void do_apple_menu P_ ((SInt16));
@@ -643,7 +664,12 @@ extern void do_apple_menu P_ ((SInt16));
 #if USE_CG_DRAWING
 extern void mac_prepare_for_quickdraw P_ ((struct frame *));
 #endif
+extern void mac_get_window_bounds P_ ((struct frame *, Rect *, Rect *));
 extern int mac_quit_char_key_p P_ ((UInt32, UInt32));
+#if USE_MAC_TOOLBAR
+extern void update_frame_tool_bar P_ ((FRAME_PTR f));
+extern void free_frame_tool_bar P_ ((FRAME_PTR f));
+#endif
 
 #define FONT_TYPE_FOR_UNIBYTE(font, ch) 0
 #define FONT_TYPE_FOR_MULTIBYTE(font, ch) 0
index 488aadf8a29beffb2339b0790c4d02a1e3ecd3c0..dd70de6fea16cd37409218dac9e3e3a4be67ae27 100644 (file)
@@ -123,7 +123,8 @@ OBJ1 =  $(BLD)/abbrev.$(O)                  \
        $(BLD)/ccl.$(O)                         \
        $(BLD)/fontset.$(O)                     \
        $(BLD)/fringe.$(O)                      \
-       $(BLD)/image.$(O)
+       $(BLD)/image.$(O)                       \
+       $(BLD)/terminal.$(O)
 
 WIN32OBJ = $(BLD)/w32term.$(O)                 \
           $(BLD)/w32xfns.$(O)                  \
@@ -381,6 +382,8 @@ $(BLD)/callproc.$(O) : \
        $(SRC)/process.h \
        $(SRC)/syssignal.h \
        $(SRC)/systty.h \
+       $(SRC)/frame.h \
+       $(SRC)/termhooks.h \
        $(SRC)/w32.h
 
 $(BLD)/casefiddle.$(O) : \
@@ -470,6 +473,8 @@ $(BLD)/coding.$(O) : \
        $(SRC)/composite.h \
        $(SRC)/dispextern.h \
        $(SRC)/intervals.h \
+       $(SRC)/frame.h \
+       $(SRC)/termhooks.h \
        $(SRC)/w32bdf.h \
        $(SRC)/w32gui.h \
        $(SRC)/window.h
@@ -497,7 +502,8 @@ $(BLD)/data.$(O) : \
        $(SRC)/frame.h \
        $(SRC)/keyboard.h \
        $(SRC)/puresize.h \
-       $(SRC)/syssignal.h
+       $(SRC)/syssignal.h \
+       $(SRC)/termhooks.h
 
 $(BLD)/dired.$(O) : \
        $(SRC)/dired.c \
@@ -700,6 +706,7 @@ $(BLD)/fns.$(O) : \
        $(SRC)/keymap.h \
        $(SRC)/md5.h \
        $(SRC)/systime.h \
+       $(SRC)/termhooks.h \
        $(SRC)/w32bdf.h \
        $(SRC)/w32gui.h \
        $(SRC)/window.h
@@ -716,6 +723,7 @@ $(BLD)/fontset.$(O) : \
        $(SRC)/fontset.h \
        $(SRC)/frame.h \
        $(SRC)/keyboard.h \
+       $(SRC)/termhooks.h \
        $(SRC)/w32bdf.h \
        $(SRC)/w32gui.h \
        $(SRC)/window.h
@@ -735,6 +743,7 @@ $(BLD)/frame.$(O) : \
        $(SRC)/frame.h \
        $(SRC)/keyboard.h \
        $(SRC)/systime.h \
+       $(SRC)/termchar.h \
        $(SRC)/termhooks.h \
        $(SRC)/w32bdf.h \
        $(SRC)/w32gui.h \
@@ -904,6 +913,7 @@ $(BLD)/lread.$(O) : \
        $(EMACS_ROOT)/src/config.h \
        $(EMACS_ROOT)/nt/inc/sys/file.h \
        $(EMACS_ROOT)/src/epaths.h \
+       $(SRC)/blockinput.h \
        $(SRC)/buffer.h \
        $(SRC)/ccl.h \
        $(SRC)/charset.h \
@@ -958,6 +968,7 @@ $(BLD)/minibuf.$(O) : \
        $(SRC)/keyboard.h \
        $(SRC)/keymap.h \
        $(SRC)/syntax.h \
+       $(SRC)/termhooks.h \
        $(SRC)/w32bdf.h \
        $(SRC)/w32gui.h \
        $(SRC)/window.h
@@ -1119,6 +1130,7 @@ $(BLD)/scroll.$(O) : \
        $(SRC)/frame.h \
        $(SRC)/keyboard.h \
        $(SRC)/termchar.h \
+       $(SRC)/termhooks.h \
        $(SRC)/w32bdf.h \
        $(SRC)/w32gui.h \
        $(SRC)/window.h
@@ -1185,6 +1197,7 @@ $(BLD)/sysdep.$(O) : \
        $(EMACS_ROOT)/nt/inc/sys/file.h \
        $(SRC)/atimer.h \
        $(SRC)/blockinput.h \
+       $(SRC)/cm.h \
        $(SRC)/dispextern.h \
        $(SRC)/frame.h \
        $(SRC)/keyboard.h \
@@ -1230,6 +1243,18 @@ $(BLD)/termcap.$(O) : \
        $(EMACS_ROOT)/src/config.h \
        $(EMACS_ROOT)/nt/inc/sys/file.h
 
+$(BLD)/terminal.$(O) : \
+       $(SRC)/terminal.c \
+       $(EMACS_ROOT)/src/s/ms-w32.h \
+       $(EMACS_ROOT)/src/m/intel386.h \
+       $(EMACS_ROOT)/src/config.h \
+       $(SRC)/charset.h \
+       $(SRC)/coding.h \
+       $(SRC)/frame.h \
+       $(SRC)/keyboard.h \
+       $(SRC)/termchar.h \
+       $(SRC)/termhooks.h
+
 $(BLD)/textprop.$(O) : \
        $(SRC)/textprop.c \
        $(EMACS_ROOT)/src/s/ms-w32.h \
@@ -1343,6 +1368,8 @@ $(BLD)/xfaces.$(O): \
        $(SRC)/intervals.h \
        $(SRC)/keyboard.h \
        $(SRC)/systime.h \
+       $(SRC)/termchar.h \
+       $(SRC)/termhooks.h \
        $(SRC)/w32bdf.h \
        $(SRC)/w32gui.h \
        $(SRC)/w32term.h \
index a57dafa3f3b2ac00d4c6a533722cadba566a4857..0c89f71d79ab0292b2ec3c19fc883960ec2fa28d 100644 (file)
@@ -452,9 +452,12 @@ Returns nil if MARKER points into a dead buffer.  */)
   if (XMARKER (marker)->buffer)
     {
       XSETBUFFER (buf, XMARKER (marker)->buffer);
-      /* Return marker's buffer only if it is not dead.  */
-      if (!NILP (XBUFFER (buf)->name))
-       return buf;
+      /* If the buffer is dead, we're in trouble: the buffer pointer here
+        does not preserve the buffer from being GC'd (it's weak), so
+        markers have to be unlinked from their buffer as soon as the buffer
+        is killed.  */
+      eassert (!NILP (XBUFFER (buf)->name));
+      return buf;
     }
   return Qnil;
 }
index 0a1d737a7939e522df61ea99558b8c667ab268d1..489c714fcb466c8d754270db277416942b8141f7 100644 (file)
@@ -35,6 +35,7 @@ Boston, MA 02110-1301, USA.  */
 #include "syntax.h"
 #include "intervals.h"
 #include "keymap.h"
+#include "termhooks.h"
 
 extern int quit_char;
 
@@ -491,7 +492,6 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
   if (EQ (Vminibuffer_completing_file_name, Qlambda))
     Vminibuffer_completing_file_name = Qnil;
 
-  single_kboard_state ();
 #ifdef HAVE_X_WINDOWS
   if (display_hourglass_p)
     cancel_hourglass ();
@@ -529,7 +529,7 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
   GCPRO5 (map, initial, val, ambient_dir, input_method);
 
   if (!STRINGP (prompt))
-    prompt = empty_string;
+    prompt = empty_unibyte_string;
 
   if (!enable_recursive_minibuffers
       && minibuf_level > 0)
@@ -575,6 +575,8 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
   if (minibuffer_auto_raise)
     Fraise_frame (mini_frame);
 
+  temporarily_switch_to_single_kboard (XFRAME (mini_frame));
+
   /* We have to do this after saving the window configuration
      since that is what restores the current buffer.  */
 
@@ -758,8 +760,12 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
       XWINDOW (minibuf_window)->cursor.x = 0;
       XWINDOW (minibuf_window)->must_be_updated_p = 1;
       update_frame (XFRAME (selected_frame), 1, 1);
-      if (rif && rif->flush_display)
-       rif->flush_display (XFRAME (XWINDOW (minibuf_window)->frame));
+      {
+        struct frame *f = XFRAME (XWINDOW (minibuf_window)->frame);
+        struct redisplay_interface *rif = FRAME_RIF (f);
+        if (rif && rif->flush_display)
+          rif->flush_display (f);
+      }
     }
 
   /* Make minibuffer contents into a string.  */
@@ -1288,11 +1294,14 @@ is used to further constrain the set of candidates.  */)
   int bestmatchsize = 0;
   /* These are in bytes, too.  */
   int compare, matchsize;
-  int type = (HASH_TABLE_P (collection) ? 3
-             : VECTORP (collection) ? 2
-             : NILP (collection) || (CONSP (collection)
-                                     && (!SYMBOLP (XCAR (collection))
-                                         || NILP (XCAR (collection)))));
+  enum { function_table, list_table, obarray_table, hash_table}
+    type = (HASH_TABLE_P (collection) ? hash_table
+           : VECTORP (collection) ? obarray_table
+           : ((NILP (collection)
+               || (CONSP (collection)
+                   && (!SYMBOLP (XCAR (collection))
+                       || NILP (XCAR (collection)))))
+              ? list_table : function_table));
   int index = 0, obsize = 0;
   int matchcount = 0;
   int bindcount = -1;
@@ -1300,7 +1309,7 @@ is used to further constrain the set of candidates.  */)
   struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
 
   CHECK_STRING (string);
-  if (type == 0)
+  if (type == function_table)
     return call3 (collection, string, predicate, Qnil);
 
   bestmatch = bucket = Qnil;
@@ -1308,7 +1317,7 @@ is used to further constrain the set of candidates.  */)
 
   /* If COLLECTION is not a list, set TAIL just for gc pro.  */
   tail = collection;
-  if (type == 2)
+  if (type == obarray_table)
     {
       collection = check_obarray (collection);
       obsize = XVECTOR (collection)->size;
@@ -1322,7 +1331,7 @@ is used to further constrain the set of candidates.  */)
       /* elt gets the alist element or symbol.
         eltstring gets the name to check as a completion. */
 
-      if (type == 1)
+      if (type == list_table)
        {
          if (!CONSP (tail))
            break;
@@ -1330,7 +1339,7 @@ is used to further constrain the set of candidates.  */)
          eltstring = CONSP (elt) ? XCAR (elt) : elt;
          tail = XCDR (tail);
        }
-      else if (type == 2)
+      else if (type == obarray_table)
        {
          if (!EQ (bucket, zero))
            {
@@ -1351,7 +1360,7 @@ is used to further constrain the set of candidates.  */)
              continue;
            }
        }
-      else /* if (type == 3) */
+      else /* if (type == hash_table) */
        {
          while (index < HASH_TABLE_SIZE (XHASH_TABLE (collection))
                 && NILP (HASH_HASH (XHASH_TABLE (collection), index)))
@@ -1405,15 +1414,17 @@ is used to further constrain the set of candidates.  */)
                tem = Fcommandp (elt, Qnil);
              else
                {
-                 if (bindcount >= 0) {
-                   unbind_to (bindcount, Qnil);
-                   bindcount = -1;
-                 }
+                 if (bindcount >= 0)
+                   {
+                     unbind_to (bindcount, Qnil);
+                     bindcount = -1;
+                   }
                  GCPRO4 (tail, string, eltstring, bestmatch);
-                 tem = type == 3
-                   ? call2 (predicate, elt,
-                            HASH_VALUE (XHASH_TABLE (collection), index - 1))
-                   : call1 (predicate, elt);
+                 tem = (type == hash_table
+                        ? call2 (predicate, elt,
+                                 HASH_VALUE (XHASH_TABLE (collection),
+                                             index - 1))
+                        : call1 (predicate, elt));
                  UNGCPRO;
                }
              if (NILP (tem)) continue;
@@ -1717,9 +1728,15 @@ PREDICATE limits completion to a subset of COLLECTION.
 See `try-completion' and `all-completions' for more details
  on completion, COLLECTION, and PREDICATE.
 
-If REQUIRE-MATCH is non-nil, the user is not allowed to exit unless
- the input is (or completes to) an element of COLLECTION or is null.
- If it is also not t, typing RET does not exit if it does non-null completion.
+REQUIRE-MATCH can take the following values:
+- t means that the user is not allowed to exit unless
+  the input is (or completes to) an element of COLLECTION or is null.
+- nil means that the user can exit with any input.
+- `confirm-only' means that the user can exit with any input, but she will
+  need to confirm her choice if the input is not an element of COLLECTION.
+- anything else behaves like t except that typing RET does not exit if it
+  does non-null completion.
+
 If the input is null, `completing-read' returns DEF, or an empty string
  if DEF is nil, regardless of the value of REQUIRE-MATCH.
 
@@ -2230,6 +2247,18 @@ a repetition of this command will exit.  */)
       goto exit;
     }
 
+  if (EQ (Vminibuffer_completion_confirm, intern ("confirm-only")))
+    { /* The user is permitted to exit with an input that's rejected
+        by test-completion, but at the condition to confirm her choice.  */
+      if (EQ (current_kboard->Vlast_command, Vthis_command))
+       goto exit;
+      else
+       {
+         temp_echo_area_glyphs (build_string (" [Confirm]"));
+         return Qnil;
+       }
+    }
+
   /* Call do_completion, but ignore errors.  */
   SET_PT (ZV);
   val = internal_condition_case (complete_and_exit_1, Qerror,
index ef65597f7e77788c5f8e2f99e5c8445013be64ad..fc14be2705c7b131309d3524ca9864f052eadc26 100644 (file)
@@ -508,8 +508,8 @@ ScreenVisualBell (void)
 {
   /* This creates an xor-mask that will swap the default fore- and
      background colors.  */
-  do_visible_bell (((the_only_x_display.foreground_pixel
-                    ^ the_only_x_display.background_pixel)
+  do_visible_bell (((FRAME_FOREGROUND_PIXEL (SELECTED_FRAME ())
+                    ^ FRAME_BACKGROUND_PIXEL (SELECTED_FRAME ()))
                    * 0x11) & 0x7f);
 }
 #endif
@@ -2531,8 +2531,8 @@ internal_terminal_init ()
   initial_screen_colors[0] = initial_screen_colors[1] = -1;
 
   bzero (&the_only_x_display, sizeof the_only_x_display);
-  the_only_x_display.background_pixel = 7; /* White */
-  the_only_x_display.foreground_pixel = 0; /* Black */
+  FRAME_BACKGROUND_PIXEL (SELECTED_FRAME ()) = 7; /* White */
+  FRAME_FOREGROUND_PIXEL (SELECTED_FRAME ()) = 0; /* Black */
   bright_bg ();
   colors = getenv ("EMACSCOLORS");
   if (colors && strlen (colors) >= 2)
@@ -2543,13 +2543,13 @@ internal_terminal_init ()
       else if (isxdigit (colors[0]))
         colors[0] -= (isupper (colors[0]) ? 'A' : 'a') - 10;
       if (colors[0] >= 0 && colors[0] < 16)
-        the_only_x_display.foreground_pixel = colors[0];
+        FRAME_FOREGROUND_PIXEL (SELECTED_FRAME ()) = colors[0];
       if (isdigit (colors[1]))
         colors[1] -= '0';
       else if (isxdigit (colors[1]))
         colors[1] -= (isupper (colors[1]) ? 'A' : 'a') - 10;
       if (colors[1] >= 0 && colors[1] < 16)
-        the_only_x_display.background_pixel = colors[1];
+        FRAME_BACKGROUND_PIXEL (SELECTED_FRAME ()) = colors[1];
     }
   the_only_x_display.font = (XFontStruct *)1;   /* must *not* be zero */
   the_only_x_display.display_info.mouse_face_mouse_frame = NULL;
@@ -2583,7 +2583,7 @@ internal_terminal_init ()
   set_terminal_modes_hook = IT_set_terminal_modes;
   reset_terminal_modes_hook = IT_reset_terminal_modes;
   set_terminal_window_hook = IT_set_terminal_window;
-  char_ins_del_ok = 0;
+  TTY_CHAR_INS_DEL_OK (CURTTY ()) = 0;
 #endif
 }
 
@@ -4880,7 +4880,7 @@ croak (badfunc)
      char *badfunc;
 {
   fprintf (stderr, "%s not yet implemented\r\n", badfunc);
-  reset_sys_modes ();
+  reset_all_sys_modes ();
   exit (1);
 }
 \f
index adf2743ba21b1856b279b5f7347f0a8013e291fb..16d7b7dba17f54b5ca27b775e18c94875e472a03 100644 (file)
@@ -53,6 +53,7 @@ Boston, MA 02110-1301, USA.  */
 #endif
 
 #include <stdio.h>
+#include <stdlib.h>
 
 int
 main (argc, argv)
index cae80d1acfe5c483ddaedcb93dfcf69316b6cacf..ccb2d6e8c45b2f7a7e290c7d46f34550780ce797 100644 (file)
@@ -34,6 +34,7 @@ Boston, MA 02110-1301, USA.  */
 #include "termchar.h"
 #include "intervals.h"
 #include "blockinput.h"
+#include "termhooks.h"         /* For struct terminal.  */
 
 Lisp_Object Vstandard_output, Qstandard_output;
 
@@ -1024,11 +1025,7 @@ safe_debug_print (arg)
   else
     fprintf (stderr, "#<%s_LISP_OBJECT 0x%08lx>\r\n",
             !valid ? "INVALID" : "SOME",
-#ifdef NO_UNION_TYPE
-            (unsigned long) arg
-#else
-            (unsigned long) arg.i
-#endif
+            (unsigned long) XHASH (arg)
             );
 }
 
@@ -1388,10 +1385,10 @@ print_preprocess (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.  */
+               /* OBJ appears more than once.  Let's remember that.  */
                PRINT_NUMBER_STATUS (Vprint_number_table, i) = Qt;
                 print_depth--;
-                return;
+               return;
              }
 
          /* OBJ is not yet recorded.  Let's add to the table.  */
@@ -1965,6 +1962,19 @@ print_object (obj, printcharfun, escapeflag)
            }
          PRINTCHAR ('>');
        }
+      else if (TERMINALP (obj))
+       {
+         struct terminal *t = XTERMINAL (obj);
+         strout ("#<terminal ", -1, -1, printcharfun, 0);
+         sprintf (buf, "%d", t->id);
+         strout (buf, -1, -1, printcharfun, 0);
+         if (t->name)
+           {
+             strout (" on ", -1, -1, printcharfun, 0);
+             strout (t->name, -1, -1, printcharfun, 0);
+           }
+         PRINTCHAR ('>');
+       }
       else if (HASH_TABLE_P (obj))
        {
          struct Lisp_Hash_Table *h = XHASH_TABLE (obj);
@@ -1977,7 +1987,7 @@ print_object (obj, printcharfun, escapeflag)
              PRINTCHAR (' ');
              strout (SDATA (SYMBOL_NAME (h->weak)), -1, -1, printcharfun, 0);
              PRINTCHAR (' ');
-             sprintf (buf, "%ld/%ld", (long) XFASTINT (h->count),
+             sprintf (buf, "%ld/%ld", (long) h->count,
                       (long) XVECTOR (h->next)->size);
              strout (buf, -1, -1, printcharfun, 0);
            }
index fd8e2c94a4d3bf6d4d240d1d4e2735816219cc72..19275e40db52d715a0de17aa6ef5fe8153284a7c 100644 (file)
@@ -121,14 +121,6 @@ Boston, MA 02110-1301, USA.  */
 #include <sys/wait.h>
 #endif
 
-/* Disable IPv6 support for w32 until someone figures out how to do it
-   properly.  */
-#ifdef WINDOWSNT
-# ifdef AF_INET6
-#  undef AF_INET6
-# endif
-#endif
-
 #include "lisp.h"
 #include "systime.h"
 #include "systty.h"
@@ -138,11 +130,11 @@ Boston, MA 02110-1301, USA.  */
 #include "charset.h"
 #include "coding.h"
 #include "process.h"
+#include "frame.h"
 #include "termhooks.h"
 #include "termopts.h"
 #include "commands.h"
 #include "keyboard.h"
-#include "frame.h"
 #include "blockinput.h"
 #include "dispextern.h"
 #include "composite.h"
@@ -328,14 +320,18 @@ extern int timers_run;
 
 static SELECT_TYPE input_wait_mask;
 
-/* Mask that excludes keyboard input descriptor (s).  */
+/* Mask that excludes keyboard input descriptor(s).  */
 
 static SELECT_TYPE non_keyboard_wait_mask;
 
-/* Mask that excludes process input descriptor (s).  */
+/* Mask that excludes process input descriptor(s).  */
 
 static SELECT_TYPE non_process_wait_mask;
 
+/* Mask for the gpm mouse input descriptor.  */
+
+static SELECT_TYPE gpm_wait_mask;
+
 #ifdef NON_BLOCKING_CONNECT
 /* Mask of bits indicating the descriptors that we wait for connect to
    complete on.  Once they complete, they are removed from this mask
@@ -357,6 +353,9 @@ static int max_process_desc;
 /* The largest descriptor currently in use for keyboard input.  */
 static int max_keyboard_desc;
 
+/* The largest descriptor currently in use for gpm mouse input.  */
+static int max_gpm_desc;
+
 /* Nonzero means delete a process right away if it exits.  */
 static int delete_exited_processes;
 
@@ -386,7 +385,7 @@ struct sockaddr_and_len {
   int len;
 } datagram_address[MAXDESC];
 #define DATAGRAM_CHAN_P(chan)  (datagram_address[chan].sa != 0)
-#define DATAGRAM_CONN_P(proc)  (PROCESSP (proc) && datagram_address[XINT (XPROCESS (proc)->infd)].sa != 0)
+#define DATAGRAM_CONN_P(proc)  (PROCESSP (proc) && datagram_address[XPROCESS (proc)->infd].sa != 0)
 #else
 #define DATAGRAM_CHAN_P(chan)  (0)
 #define DATAGRAM_CONN_P(proc)  (0)
@@ -621,19 +620,19 @@ make_process (name)
 
   p = allocate_process ();
 
-  XSETINT (p->infd, -1);
-  XSETINT (p->outfd, -1);
-  XSETFASTINT (p->tick, 0);
-  XSETFASTINT (p->update_tick, 0);
+  p->infd = -1;
+  p->outfd = -1;
+  p->tick = 0;
+  p->update_tick = 0;
   p->pid = 0;
   p->raw_status_new = 0;
   p->status = Qrun;
   p->mark = Fmake_marker ();
 
 #ifdef ADAPTIVE_READ_BUFFERING
-  p->adaptive_read_buffering = Qnil;
-  XSETFASTINT (p->read_output_delay, 0);
-  p->read_output_skip = Qnil;
+  p->adaptive_read_buffering = 0;
+  p->read_output_delay = 0;
+  p->read_output_skip = 0;
 #endif
 
   /* If name is already in use, modify it until it is unused.  */
@@ -672,8 +671,8 @@ setup_process_coding_systems (process)
      Lisp_Object process;
 {
   struct Lisp_Process *p = XPROCESS (process);
-  int inch = XINT (p->infd);
-  int outch = XINT (p->outfd);
+  int inch = p->infd;
+  int outch = p->outfd;
 
   if (inch < 0 || outch < 0)
     return;
@@ -685,7 +684,7 @@ setup_process_coding_systems (process)
                       proc_decode_coding_system[inch]);
   if (! NILP (p->filter))
     {
-      if (NILP (p->filter_multibyte))
+      if (!p->filter_multibyte)
        setup_raw_text_coding_system (proc_decode_coding_system[inch]);
     }
   else if (BUFFERP (p->buffer))
@@ -808,10 +807,10 @@ nil, indicating the current buffer's process.  */)
   if (NETCONN1_P (p))
     {
       p->status = Fcons (Qexit, Fcons (make_number (0), Qnil));
-      XSETINT (p->tick, ++process_tick);
+      p->tick = ++process_tick;
       status_notify (p);
     }
-  else if (XINT (p->infd) >= 0)
+  else if (p->infd >= 0)
     {
 #ifdef SIGCHLD
       Lisp_Object symbol;
@@ -839,7 +838,7 @@ nil, indicating the current buffer's process.  */)
          /* Do this now, since remove_process will make sigchld_handler do nothing.  */
          p->status
            = Fcons (Qsignal, Fcons (make_number (SIGKILL), Qnil));
-         XSETINT (p->tick, ++process_tick);
+         p->tick = ++process_tick;
          status_notify (p);
        }
     }
@@ -1031,18 +1030,18 @@ The string argument is normally a multibyte string, except:
      (debug)
      (set-process-filter process ...)  */
 
-  if (XINT (p->infd) >= 0)
+  if (p->infd >= 0)
     {
       if (EQ (filter, Qt) && !EQ (p->status, Qlisten))
        {
-         FD_CLR (XINT (p->infd), &input_wait_mask);
-         FD_CLR (XINT (p->infd), &non_keyboard_wait_mask);
+         FD_CLR (p->infd, &input_wait_mask);
+         FD_CLR (p->infd, &non_keyboard_wait_mask);
        }
       else if (EQ (p->filter, Qt)
               && !EQ (p->command, Qt)) /* Network process not stopped. */
        {
-         FD_SET (XINT (p->infd), &input_wait_mask);
-         FD_SET (XINT (p->infd), &non_keyboard_wait_mask);
+         FD_SET (p->infd, &input_wait_mask);
+         FD_SET (p->infd, &non_keyboard_wait_mask);
        }
     }
 
@@ -1104,8 +1103,8 @@ DEFUN ("set-process-window-size", Fset_process_window_size,
   CHECK_NATNUM (height);
   CHECK_NATNUM (width);
 
-  if (XINT (XPROCESS (process)->infd) < 0
-      || set_window_size (XINT (XPROCESS (process)->infd),
+  if (XPROCESS (process)->infd < 0
+      || set_window_size (XPROCESS (process)->infd,
                          XINT (height), XINT (width)) <= 0)
     return Qnil;
   else
@@ -1133,7 +1132,7 @@ for the process which will run.  */)
      register Lisp_Object process, flag;
 {
   CHECK_PROCESS (process);
-  XPROCESS (process)->inherit_coding_system_flag = flag;
+  XPROCESS (process)->inherit_coding_system_flag = !NILP (flag);
   return flag;
 }
 
@@ -1148,7 +1147,7 @@ the process output.  */)
      register Lisp_Object process;
 {
   CHECK_PROCESS (process);
-  return XPROCESS (process)->inherit_coding_system_flag;
+  return XPROCESS (process)->inherit_coding_system_flag ? Qt : Qnil;
 }
 
 DEFUN ("set-process-query-on-exit-flag",
@@ -1161,7 +1160,7 @@ exiting if PROCESS is running.  */)
      register Lisp_Object process, flag;
 {
   CHECK_PROCESS (process);
-  XPROCESS (process)->kill_without_query = Fnull (flag);
+  XPROCESS (process)->kill_without_query = NILP (flag);
   return flag;
 }
 
@@ -1173,7 +1172,7 @@ DEFUN ("process-query-on-exit-flag",
      register Lisp_Object process;
 {
   CHECK_PROCESS (process);
-  return Fnull (XPROCESS (process)->kill_without_query);
+  return (XPROCESS (process)->kill_without_query ? Qnil : Qt);
 }
 
 #ifdef DATAGRAM_SOCKETS
@@ -1348,7 +1347,7 @@ list_processes_1 (query_only)
       p = XPROCESS (proc);
       if (NILP (p->childp))
        continue;
-      if (!NILP (query_only) && !NILP (p->kill_without_query))
+      if (!NILP (query_only) && p->kill_without_query)
        continue;
       if (STRINGP (p->name)
          && ( i = SCHARS (p->name), (i > w_proc)))
@@ -1411,7 +1410,7 @@ list_processes_1 (query_only)
       p = XPROCESS (proc);
       if (NILP (p->childp))
        continue;
-      if (!NILP (query_only) && !NILP (p->kill_without_query))
+      if (!NILP (query_only) && p->kill_without_query)
        continue;
 
       Finsert (1, &p->name);
@@ -1487,7 +1486,7 @@ list_processes_1 (query_only)
          if (NILP (port))
            port = Fformat_network_address (Fplist_get (p->childp, QClocal), Qnil);
          sprintf (tembuf, "(network %s server on %s)\n",
-                  (DATAGRAM_CHAN_P (XINT (p->infd)) ? "datagram" : "stream"),
+                  (DATAGRAM_CHAN_P (p->infd) ? "datagram" : "stream"),
                   (STRINGP (port) ? (char *)SDATA (port) : "?"));
          insert_string (tembuf);
        }
@@ -1505,7 +1504,7 @@ list_processes_1 (query_only)
          if (NILP (host))
            host = Fformat_network_address (Fplist_get (p->childp, QCremote), Qnil);
          sprintf (tembuf, "(network %s connection to %s)\n",
-                  (DATAGRAM_CHAN_P (XINT (p->infd)) ? "datagram" : "stream"),
+                  (DATAGRAM_CHAN_P (p->infd) ? "datagram" : "stream"),
                   (STRINGP (host) ? (char *)SDATA (host) : "?"));
          insert_string (tembuf);
         }
@@ -1636,11 +1635,13 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS)  */)
   XPROCESS (proc)->sentinel = Qnil;
   XPROCESS (proc)->filter = Qnil;
   XPROCESS (proc)->filter_multibyte
-    = buffer_defaults.enable_multibyte_characters;
+    = !NILP (buffer_defaults.enable_multibyte_characters);
   XPROCESS (proc)->command = Flist (nargs - 2, args + 2);
 
 #ifdef ADAPTIVE_READ_BUFFERING
-  XPROCESS (proc)->adaptive_read_buffering = Vprocess_adaptive_read_buffering;
+  XPROCESS (proc)->adaptive_read_buffering
+    = (NILP (Vprocess_adaptive_read_buffering) ? 0
+       : EQ (Vprocess_adaptive_read_buffering, Qt) ? 1 : 2);
 #endif
 
   /* Make the process marker point into the process buffer (if any).  */
@@ -1771,13 +1772,11 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS)  */)
 #endif /* not VMS */
 
   XPROCESS (proc)->decoding_buf = make_uninit_string (0);
-  XPROCESS (proc)->decoding_carryover = make_number (0);
+  XPROCESS (proc)->decoding_carryover = 0;
   XPROCESS (proc)->encoding_buf = make_uninit_string (0);
-  XPROCESS (proc)->encoding_carryover = make_number (0);
 
   XPROCESS (proc)->inherit_coding_system_flag
-    = (NILP (buffer) || !inherit_process_coding_system
-       ? Qnil : Qt);
+    = !(NILP (buffer) || !inherit_process_coding_system);
 
   create_process (proc, (char **) new_argv, current_dir);
 
@@ -1949,15 +1948,15 @@ create_process (process, new_argv, current_dir)
   /* Record this as an active process, with its channels.
      As a result, child_setup will close Emacs's side of the pipes.  */
   chan_process[inchannel] = process;
-  XSETINT (XPROCESS (process)->infd, inchannel);
-  XSETINT (XPROCESS (process)->outfd, outchannel);
+  XPROCESS (process)->infd = inchannel;
+  XPROCESS (process)->outfd = outchannel;
 
   /* Previously we recorded the tty descriptor used in the subprocess.
      It was only used for getting the foreground tty process, so now
      we just reopen the device (see emacs_get_tty_pgrp) as this is
      more portable (see USG_SUBTTY_WORKS above).  */
 
-  XPROCESS (process)->pty_flag = (pty_flag ? Qt : Qnil);
+  XPROCESS (process)->pty_flag = pty_flag;
   XPROCESS (process)->status = Qrun;
   setup_process_coding_systems (process);
 
@@ -2474,7 +2473,7 @@ DEFUN ("process-datagram-address", Fprocess_datagram_address, Sprocess_datagram_
   if (!DATAGRAM_CONN_P (process))
     return Qnil;
 
-  channel = XINT (XPROCESS (process)->infd);
+  channel = XPROCESS (process)->infd;
   return conv_sockaddr_to_lisp (datagram_address[channel].sa,
                                datagram_address[channel].len);
 }
@@ -2494,7 +2493,7 @@ Returns nil upon error setting address, ADDRESS otherwise.  */)
   if (!DATAGRAM_CONN_P (process))
     return Qnil;
 
-  channel = XINT (XPROCESS (process)->infd);
+  channel = XPROCESS (process)->infd;
 
   len = get_lisp_to_sockaddr_size (address, &family);
   if (datagram_address[channel].len != len)
@@ -2659,7 +2658,7 @@ OPTION is not a supported option, return nil instead; otherwise return t.  */)
   if (!NETCONN1_P (p))
     error ("Process is not a network process");
 
-  s = XINT (p->infd);
+  s = p->infd;
   if (s < 0)
     error ("Process is not running");
 
@@ -3160,6 +3159,10 @@ usage: (make-network-process &rest ARGS)  */)
 
  open_socket:
 
+#ifdef __ultrix__
+  /* Previously this was compiled unconditionally, but that seems
+     unnecessary on modern systems, and `unrequest_sigio' was a noop
+     under X anyway. --lorentey */
   /* Kernel bugs (on Ultrix at least) cause lossage (not just EINTR)
      when connect is interrupted.  So let's not let it get interrupted.
      Note we do not turn off polling, because polling is only used
@@ -3176,6 +3179,7 @@ usage: (make-network-process &rest ARGS)  */)
       record_unwind_protect (unwind_request_sigio, Qnil);
       unrequest_sigio ();
     }
+#endif
 
   /* Do this in case we never enter the for-loop below.  */
   count1 = SPECPDL_INDEX ();
@@ -3415,18 +3419,18 @@ usage: (make-network-process &rest ARGS)  */)
   p->buffer = buffer;
   p->sentinel = sentinel;
   p->filter = filter;
-  p->filter_multibyte = buffer_defaults.enable_multibyte_characters;
+  p->filter_multibyte = !NILP (buffer_defaults.enable_multibyte_characters);
   /* Override the above only if :filter-multibyte is specified.  */
   if (! NILP (Fplist_member (contact, QCfilter_multibyte)))
-    p->filter_multibyte = Fplist_get (contact, QCfilter_multibyte);
+    p->filter_multibyte = !NILP (Fplist_get (contact, QCfilter_multibyte));
   p->log = Fplist_get (contact, QClog);
   if (tem = Fplist_get (contact, QCnoquery), !NILP (tem))
-    p->kill_without_query = Qt;
+    p->kill_without_query = 1;
   if ((tem = Fplist_get (contact, QCstop), !NILP (tem)))
     p->command = Qt;
   p->pid = 0;
-  XSETINT (p->infd, inch);
-  XSETINT (p->outfd, outch);
+  p->infd  = inch;
+  p->outfd = outch;
   if (is_server && socktype == SOCK_STREAM)
     p->status = Qlisten;
 
@@ -3547,13 +3551,11 @@ usage: (make-network-process &rest ARGS)  */)
   setup_process_coding_systems (proc);
 
   p->decoding_buf = make_uninit_string (0);
-  p->decoding_carryover = make_number (0);
+  p->decoding_carryover = 0;
   p->encoding_buf = make_uninit_string (0);
-  p->encoding_carryover = make_number (0);
 
   p->inherit_coding_system_flag
-    = (!NILP (tem) || NILP (buffer) || !inherit_process_coding_system
-       ? Qnil : Qt);
+    = !(!NILP (tem) || NILP (buffer) || !inherit_process_coding_system);
 
   UNGCPRO;
   return proc;
@@ -3816,16 +3818,16 @@ deactivate_process (proc)
   register int inchannel, outchannel;
   register struct Lisp_Process *p = XPROCESS (proc);
 
-  inchannel = XINT (p->infd);
-  outchannel = XINT (p->outfd);
+  inchannel  = p->infd;
+  outchannel = p->outfd;
 
 #ifdef ADAPTIVE_READ_BUFFERING
-  if (XINT (p->read_output_delay) > 0)
+  if (p->read_output_delay > 0)
     {
       if (--process_output_delay_count < 0)
        process_output_delay_count = 0;
-      XSETINT (p->read_output_delay, 0);
-      p->read_output_skip = Qnil;
+      p->read_output_delay = 0;
+      p->read_output_skip = 0;
     }
 #endif
 
@@ -3847,8 +3849,8 @@ deactivate_process (proc)
        emacs_close (outchannel);
 #endif
 
-      XSETINT (p->infd, -1);
-      XSETINT (p->outfd, -1);
+      p->infd  = -1;
+      p->outfd = -1;
 #ifdef DATAGRAM_SOCKETS
       if (DATAGRAM_CHAN_P (inchannel))
        {
@@ -3896,8 +3898,8 @@ close_process_descs ()
       process = chan_process[i];
       if (!NILP (process))
        {
-         int in = XINT (XPROCESS (process)->infd);
-         int out = XINT (XPROCESS (process)->outfd);
+         int in  = XPROCESS (process)->infd;
+         int out = XPROCESS (process)->outfd;
          if (in >= 0)
            emacs_close (in);
          if (out >= 0 && in != out)
@@ -4141,8 +4143,8 @@ server_accept_connection (server, channel)
   p->filter = ps->filter;
   p->command = Qnil;
   p->pid = 0;
-  XSETINT (p->infd, s);
-  XSETINT (p->outfd, s);
+  p->infd  = s;
+  p->outfd = s;
   p->status = Qrun;
 
   /* Client processes for accepted connections are not stopped initially.  */
@@ -4165,12 +4167,11 @@ server_accept_connection (server, channel)
   setup_process_coding_systems (proc);
 
   p->decoding_buf = make_uninit_string (0);
-  p->decoding_carryover = make_number (0);
+  p->decoding_carryover = 0;
   p->encoding_buf = make_uninit_string (0);
-  p->encoding_carryover = make_number (0);
 
   p->inherit_coding_system_flag
-    = (NILP (buffer) ? Qnil : ps->inherit_coding_system_flag);
+    = (NILP (buffer) ? 0 : ps->inherit_coding_system_flag);
 
   if (!NILP (ps->log))
       call3 (ps->log, server, proc,
@@ -4295,7 +4296,7 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
 
   /* If wait_proc is a process to watch, set wait_channel accordingly.  */
   if (wait_proc != NULL)
-    wait_channel = XINT (wait_proc->infd);
+    wait_channel = wait_proc->infd;
 
   record_unwind_protect (wait_reading_process_output_unwind,
                         make_number (waiting_for_user_input_p));
@@ -4448,7 +4449,8 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
          IF_NON_BLOCKING_CONNECT (Ctemp = connect_wait_mask);
 
          EMACS_SET_SECS_USECS (timeout, 0, 0);
-         if ((select (max (max_process_desc, max_keyboard_desc) + 1,
+         if ((select (max (max (max_process_desc, max_keyboard_desc),
+                             max_gpm_desc) + 1,
                       &Atemp,
 #ifdef NON_BLOCKING_CONNECT
                       (num_pending_connects > 0 ? &Ctemp : (SELECT_TYPE *)0),
@@ -4479,9 +4481,9 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
          XSETPROCESS (proc, wait_proc);
 
          /* Read data from the process, until we exhaust it.  */
-         while (XINT (wait_proc->infd) >= 0)
+         while (wait_proc->infd >= 0)
            {
-             nread = read_process_output (proc, XINT (wait_proc->infd));
+             nread = read_process_output (proc, wait_proc->infd);
 
              if (nread == 0)
                break;
@@ -4511,9 +4513,9 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
 
       if (wait_proc && just_wait_proc)
        {
-         if (XINT (wait_proc->infd) < 0)  /* Terminated */
+         if (wait_proc->infd < 0)  /* Terminated */
            break;
-         FD_SET (XINT (wait_proc->infd), &Available);
+         FD_SET (wait_proc->infd, &Available);
          check_delay = 0;
          IF_NON_BLOCKING_CONNECT (check_connect = 0);
        }
@@ -4561,7 +4563,7 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
 
 #ifdef ADAPTIVE_READ_BUFFERING
          /* Set the timeout for adaptive read buffering if any
-            process has non-nil read_output_skip and non-zero
+            process has non-zero read_output_skip and non-zero
             read_output_delay, and we are not reading output for a
             specific wait_channel.  It is not executed if
             Vprocess_adaptive_read_buffering is nil.  */
@@ -4576,16 +4578,16 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
                  if (NILP (proc))
                    continue;
                  /* Find minimum non-zero read_output_delay among the
-                    processes with non-nil read_output_skip.  */
-                 if (XINT (XPROCESS (proc)->read_output_delay) > 0)
+                    processes with non-zero read_output_skip.  */
+                 if (XPROCESS (proc)->read_output_delay > 0)
                    {
                      check_delay--;
-                     if (NILP (XPROCESS (proc)->read_output_skip))
+                     if (!XPROCESS (proc)->read_output_skip)
                        continue;
                      FD_CLR (channel, &Available);
-                     XPROCESS (proc)->read_output_skip = Qnil;
-                     if (XINT (XPROCESS (proc)->read_output_delay) < usecs)
-                       usecs = XINT (XPROCESS (proc)->read_output_delay);
+                     XPROCESS (proc)->read_output_skip = 0;
+                     if (XPROCESS (proc)->read_output_delay < usecs)
+                       usecs = XPROCESS (proc)->read_output_delay;
                    }
                }
              EMACS_SET_SECS_USECS (timeout, 0, usecs);
@@ -4593,7 +4595,8 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
            }
 #endif
 
-         nfds = select (max (max_process_desc, max_keyboard_desc) + 1,
+         nfds = select (max (max (max_process_desc, max_keyboard_desc),
+                             max_gpm_desc) + 1,
                         &Available,
 #ifdef NON_BLOCKING_CONNECT
                         (check_connect ? &Connecting : (SELECT_TYPE *)0),
@@ -4857,7 +4860,7 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
              else
                {
                  /* Preserve status of processes already terminated.  */
-                 XSETINT (XPROCESS (proc)->tick, ++process_tick);
+                 XPROCESS (proc)->tick = ++process_tick;
                  deactivate_process (proc);
                  if (XPROCESS (proc)->raw_status_new)
                    update_status (XPROCESS (proc));
@@ -4909,7 +4912,7 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
 #endif
              if (xerrno)
                {
-                 XSETINT (p->tick, ++process_tick);
+                 p->tick = ++process_tick;
                  p->status = Fcons (Qfailed, Fcons (make_number (xerrno), Qnil));
                  deactivate_process (proc);
                }
@@ -4922,8 +4925,8 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
                  exec_sentinel (proc, build_string ("open\n"));
                  if (!EQ (p->filter, Qt) && !EQ (p->command, Qt))
                    {
-                     FD_SET (XINT (p->infd), &input_wait_mask);
-                     FD_SET (XINT (p->infd), &non_keyboard_wait_mask);
+                     FD_SET (p->infd, &input_wait_mask);
+                     FD_SET (p->infd, &non_keyboard_wait_mask);
                    }
                }
            }
@@ -4997,7 +5000,7 @@ read_process_output (proc, channel)
   register struct Lisp_Process *p = XPROCESS (proc);
   register int opoint;
   struct coding_system *coding = proc_decode_coding_system[channel];
-  int carryover = XINT (p->decoding_carryover);
+  int carryover = p->decoding_carryover;
   int readmax = 4096;
 
 #ifdef VMS
@@ -5050,9 +5053,9 @@ read_process_output (proc, channel)
     {
       nbytes = emacs_read (channel, chars + carryover, readmax);
 #ifdef ADAPTIVE_READ_BUFFERING
-      if (nbytes > 0 && !NILP (p->adaptive_read_buffering))
+      if (nbytes > 0 && p->adaptive_read_buffering)
        {
-         int delay = XINT (p->read_output_delay);
+         int delay = p->read_output_delay;
          if (nbytes < 256)
            {
              if (delay < READ_OUTPUT_DELAY_MAX_MAX)
@@ -5068,10 +5071,10 @@ read_process_output (proc, channel)
              if (delay == 0)
                process_output_delay_count--;
            }
-         XSETINT (p->read_output_delay, delay);
+         p->read_output_delay = delay;
          if (delay)
            {
-             p->read_output_skip = Qt;
+             p->read_output_skip = 1;
              process_output_skip = 1;
            }
        }
@@ -5089,7 +5092,7 @@ read_process_output (proc, channel)
     }
 #endif /* not VMS */
 
-  XSETINT (p->decoding_carryover, 0);
+  p->decoding_carryover = 0;
 
   /* At this point, NBYTES holds number of bytes just received
      (including the one in proc_buffered_char[channel]).  */
@@ -5163,14 +5166,14 @@ read_process_output (proc, channel)
             valid memory because p->outfd will be changed once EOF is
             sent to the process.  */
          if (NILP (p->encode_coding_system)
-             && proc_encode_coding_system[XINT (p->outfd)])
+             && proc_encode_coding_system[p->outfd])
            {
              p->encode_coding_system = coding->symbol;
              setup_coding_system (coding->symbol,
-                                  proc_encode_coding_system[XINT (p->outfd)]);
-             if (proc_encode_coding_system[XINT (p->outfd)]->eol_type
+                                  proc_encode_coding_system[p->outfd]);
+             if (proc_encode_coding_system[p->outfd]->eol_type
                  == CODING_EOL_UNDECIDED)
-               proc_encode_coding_system[XINT (p->outfd)]->eol_type
+               proc_encode_coding_system[p->outfd]->eol_type
                  = system_eol_type;
            }
        }
@@ -5183,9 +5186,9 @@ read_process_output (proc, channel)
        p->decoding_buf = make_uninit_string (carryover);
       bcopy (chars + coding->consumed, SDATA (p->decoding_buf),
             carryover);
-      XSETINT (p->decoding_carryover, carryover);
+      p->decoding_carryover = carryover;
       /* Adjust the multibyteness of TEXT to that of the filter.  */
-      if (NILP (p->filter_multibyte) != ! STRING_MULTIBYTE (text))
+      if (!p->filter_multibyte != !STRING_MULTIBYTE (text))
        text = (STRING_MULTIBYTE (text)
                ? Fstring_as_unibyte (text)
                : Fstring_to_multibyte (text));
@@ -5277,14 +5280,14 @@ read_process_output (proc, channel)
        {
          p->decode_coding_system = coding->symbol;
          if (NILP (p->encode_coding_system)
-             && proc_encode_coding_system[XINT (p->outfd)])
+             && proc_encode_coding_system[p->outfd])
            {
              p->encode_coding_system = coding->symbol;
              setup_coding_system (coding->symbol,
-                                  proc_encode_coding_system[XINT (p->outfd)]);
-             if (proc_encode_coding_system[XINT (p->outfd)]->eol_type
+                                  proc_encode_coding_system[p->outfd]);
+             if (proc_encode_coding_system[p->outfd]->eol_type
                  == CODING_EOL_UNDECIDED)
-               proc_encode_coding_system[XINT (p->outfd)]->eol_type
+               proc_encode_coding_system[p->outfd]->eol_type
                  = system_eol_type;
            }
        }
@@ -5296,7 +5299,7 @@ read_process_output (proc, channel)
        p->decoding_buf = make_uninit_string (carryover);
       bcopy (chars + coding->consumed, SDATA (p->decoding_buf),
             carryover);
-      XSETINT (p->decoding_carryover, carryover);
+      p->decoding_carryover = carryover;
 
       /* Adjust the multibyteness of TEXT to that of the buffer.  */
       if (NILP (current_buffer->enable_multibyte_characters)
@@ -5415,10 +5418,10 @@ send_process (proc, buf, len, object)
     update_status (p);
   if (! EQ (p->status, Qrun))
     error ("Process %s not running", SDATA (p->name));
-  if (XINT (p->outfd) < 0)
+  if (p->outfd < 0)
     error ("Output file descriptor of %s is closed", SDATA (p->name));
 
-  coding = proc_encode_coding_system[XINT (p->outfd)];
+  coding = proc_encode_coding_system[p->outfd];
   Vlast_coding_system_used = coding->symbol;
 
   if ((STRINGP (object) && STRING_MULTIBYTE (object))
@@ -5511,7 +5514,7 @@ send_process (proc, buf, len, object)
   if (pty_max_bytes == 0)
     {
 #if defined (HAVE_FPATHCONF) && defined (_PC_MAX_CANON)
-      pty_max_bytes = fpathconf (XFASTINT (p->outfd), _PC_MAX_CANON);
+      pty_max_bytes = fpathconf (p->outfd, _PC_MAX_CANON);
       if (pty_max_bytes < 0)
        pty_max_bytes = 250;
 #else
@@ -5533,7 +5536,7 @@ send_process (proc, buf, len, object)
 
          /* Decide how much data we can send in one batch.
             Long lines need to be split into multiple batches.  */
-         if (!NILP (p->pty_flag))
+         if (p->pty_flag)
            {
              /* Starting this at zero is always correct when not the first
                  iteration because the previous iteration ended by sending C-d.
@@ -5562,7 +5565,7 @@ send_process (proc, buf, len, object)
          /* Send this batch, using one or more write calls.  */
          while (this > 0)
            {
-             int outfd = XINT (p->outfd);
+             int outfd = p->outfd;
              old_sigpipe = (SIGTYPE (*) ()) signal (SIGPIPE, send_process_trap);
 #ifdef DATAGRAM_SOCKETS
              if (DATAGRAM_CHAN_P (outfd))
@@ -5582,12 +5585,12 @@ send_process (proc, buf, len, object)
                {
                  rv = emacs_write (outfd, (char *) buf, this);
 #ifdef ADAPTIVE_READ_BUFFERING
-                 if (XINT (p->read_output_delay) > 0
-                     && EQ (p->adaptive_read_buffering, Qt))
+                 if (p->read_output_delay > 0
+                     && p->adaptive_read_buffering == 1)
                    {
-                     XSETFASTINT (p->read_output_delay, 0);
+                     p->read_output_delay = 0;
                      process_output_delay_count--;
-                     p->read_output_skip = Qnil;
+                     p->read_output_skip = 0;
                    }
 #endif
                }
@@ -5630,7 +5633,7 @@ send_process (proc, buf, len, object)
                      if (errno == EAGAIN)
                        {
                          int flags = FWRITE;
-                         ioctl (XINT (p->outfd), TIOCFLUSH, &flags);
+                         ioctl (p->outfd, TIOCFLUSH, &flags);
                        }
 #endif /* BROKEN_PTY_READ_AFTER_EAGAIN */
 
@@ -5679,7 +5682,7 @@ send_process (proc, buf, len, object)
 #endif
       p->raw_status_new = 0;
       p->status = Fcons (Qexit, Fcons (make_number (256), Qnil));
-      XSETINT (p->tick, ++process_tick);
+      p->tick = ++process_tick;
       deactivate_process (proc);
 #ifdef VMS
       error ("Error writing to process %s; closed it", SDATA (p->name));
@@ -5731,10 +5734,10 @@ send_process_object (proc, start, end)
        update_status (p);
       if (! EQ (p->status, Qrun))
        error ("Process %s not running", SDATA (p->name));
-      if (XINT (p->outfd) < 0)
+      if (p->outfd < 0)
        error ("Output file descriptor of %s is closed", SDATA (p->name));
 
-      coding = proc_encode_coding_system[XINT (p->outfd)];
+      coding = proc_encode_coding_system[p->outfd];
       if (! EQ (coding->symbol, p->encode_coding_system))
        /* The coding system for encoding was changed to raw-text
           because we sent a unibyte text previously.  Now we are
@@ -5823,7 +5826,7 @@ emacs_get_tty_pgrp (p)
   int gid = -1;
 
 #ifdef TIOCGPGRP
-  if (ioctl (XINT (p->infd), TIOCGPGRP, &gid) == -1 && ! NILP (p->tty_name))
+  if (ioctl (p->infd, TIOCGPGRP, &gid) == -1 && ! NILP (p->tty_name))
     {
       int fd;
       /* Some OS:es (Solaris 8/9) does not allow TIOCGPGRP from the
@@ -5861,7 +5864,7 @@ return t unconditionally.  */)
   if (!EQ (p->childp, Qt))
     error ("Process %s is not a subprocess",
           SDATA (p->name));
-  if (XINT (p->infd) < 0)
+  if (p->infd < 0)
     error ("Process %s is not active",
           SDATA (p->name));
 
@@ -5904,11 +5907,11 @@ process_send_signal (process, signo, current_group, nomsg)
   if (!EQ (p->childp, Qt))
     error ("Process %s is not a subprocess",
           SDATA (p->name));
-  if (XINT (p->infd) < 0)
+  if (p->infd < 0)
     error ("Process %s is not active",
           SDATA (p->name));
 
-  if (NILP (p->pty_flag))
+  if (!p->pty_flag)
     current_group = Qnil;
 
   /* If we are using pgrps, get a pgrp number and make it negative.  */
@@ -5927,7 +5930,7 @@ process_send_signal (process, signo, current_group, nomsg)
       struct termios t;
       cc_t *sig_char = NULL;
 
-      tcgetattr (XINT (p->infd), &t);
+      tcgetattr (p->infd, &t);
 
       switch (signo)
        {
@@ -5967,16 +5970,16 @@ process_send_signal (process, signo, current_group, nomsg)
       switch (signo)
        {
        case SIGINT:
-         ioctl (XINT (p->infd), TIOCGETC, &c);
+         ioctl (p->infd, TIOCGETC, &c);
          send_process (proc, &c.t_intrc, 1, Qnil);
          return;
        case SIGQUIT:
-         ioctl (XINT (p->infd), TIOCGETC, &c);
+         ioctl (p->infd, TIOCGETC, &c);
          send_process (proc, &c.t_quitc, 1, Qnil);
          return;
 #ifdef SIGTSTP
        case SIGTSTP:
-         ioctl (XINT (p->infd), TIOCGLTC, &lc);
+         ioctl (p->infd, TIOCGLTC, &lc);
          send_process (proc, &lc.t_suspc, 1, Qnil);
          return;
 #endif /* ! defined (SIGTSTP) */
@@ -5991,16 +5994,16 @@ process_send_signal (process, signo, current_group, nomsg)
       switch (signo)
        {
        case SIGINT:
-         ioctl (XINT (p->infd), TCGETA, &t);
+         ioctl (p->infd, TCGETA, &t);
          send_process (proc, &t.c_cc[VINTR], 1, Qnil);
          return;
        case SIGQUIT:
-         ioctl (XINT (p->infd), TCGETA, &t);
+         ioctl (p->infd, TCGETA, &t);
          send_process (proc, &t.c_cc[VQUIT], 1, Qnil);
          return;
 #ifdef SIGTSTP
        case SIGTSTP:
-         ioctl (XINT (p->infd), TCGETA, &t);
+         ioctl (p->infd, TCGETA, &t);
          send_process (proc, &t.c_cc[VSWTCH], 1, Qnil);
          return;
 #endif /* ! defined (SIGTSTP) */
@@ -6058,7 +6061,7 @@ process_send_signal (process, signo, current_group, nomsg)
     case SIGCONT:
       p->raw_status_new = 0;
       p->status = Qrun;
-      XSETINT (p->tick, ++process_tick);
+      p->tick = ++process_tick;
       if (!nomsg)
        status_notify (NULL);
       break;
@@ -6078,7 +6081,7 @@ process_send_signal (process, signo, current_group, nomsg)
       sys$forcex (&(p->pid), 0, 1);
       whoosh:
 #endif
-      flush_pending_output (XINT (p->infd));
+      flush_pending_output (p->infd);
       break;
     }
 
@@ -6095,7 +6098,7 @@ process_send_signal (process, signo, current_group, nomsg)
 #ifdef TIOCSIGSEND
   if (!NILP (current_group))
     {
-      if (ioctl (XINT (p->infd), TIOCSIGSEND, signo) == -1)
+      if (ioctl (p->infd, TIOCSIGSEND, signo) == -1)
        EMACS_KILLPG (gid, signo);
     }
   else
@@ -6161,10 +6164,10 @@ If PROCESS is a network process, inhibit handling of incoming traffic.  */)
 
       p = XPROCESS (process);
       if (NILP (p->command)
-         && XINT (p->infd) >= 0)
+         && p->infd >= 0)
        {
-         FD_CLR (XINT (p->infd), &input_wait_mask);
-         FD_CLR (XINT (p->infd), &non_keyboard_wait_mask);
+         FD_CLR (p->infd, &input_wait_mask);
+         FD_CLR (p->infd, &non_keyboard_wait_mask);
        }
       p->command = Qt;
       return process;
@@ -6192,11 +6195,11 @@ If PROCESS is a network process, resume handling of incoming traffic.  */)
 
       p = XPROCESS (process);
       if (EQ (p->command, Qt)
-         && XINT (p->infd) >= 0
+         && p->infd >= 0
          && (!EQ (p->filter, Qt) || EQ (p->status, Qlisten)))
        {
-         FD_SET (XINT (p->infd), &input_wait_mask);
-         FD_SET (XINT (p->infd), &non_keyboard_wait_mask);
+         FD_SET (p->infd, &input_wait_mask);
+         FD_SET (p->infd, &non_keyboard_wait_mask);
        }
       p->command = Qnil;
       return process;
@@ -6393,7 +6396,7 @@ text to PROCESS after you call this function.  */)
     return process;
 
   proc = get_process (process);
-  coding = proc_encode_coding_system[XINT (XPROCESS (proc)->outfd)];
+  coding = proc_encode_coding_system[XPROCESS (proc)->outfd];
 
   /* Make sure the process is really alive.  */
   if (XPROCESS (proc)->raw_status_new)
@@ -6410,7 +6413,7 @@ text to PROCESS after you call this function.  */)
 #ifdef VMS
   send_process (proc, "\032", 1, Qnil);        /* ^z */
 #else
-  if (!NILP (XPROCESS (proc)->pty_flag))
+  if (XPROCESS (proc)->pty_flag)
     send_process (proc, "\004", 1, Qnil);
   else
     {
@@ -6422,18 +6425,18 @@ text to PROCESS after you call this function.  */)
         (In some old system, shutdown to socketpair doesn't work.
         Then we just can't win.)  */
       if (XPROCESS (proc)->pid == 0
-         || XINT (XPROCESS (proc)->outfd) == XINT (XPROCESS (proc)->infd))
-       shutdown (XINT (XPROCESS (proc)->outfd), 1);
+         || XPROCESS (proc)->outfd == XPROCESS (proc)->infd)
+       shutdown (XPROCESS (proc)->outfd, 1);
       /* In case of socketpair, outfd == infd, so don't close it.  */
-      if (XINT (XPROCESS (proc)->outfd) != XINT (XPROCESS (proc)->infd))
-       emacs_close (XINT (XPROCESS (proc)->outfd));
+      if (XPROCESS (proc)->outfd != XPROCESS (proc)->infd)
+       emacs_close (XPROCESS (proc)->outfd);
 #else /* not HAVE_SHUTDOWN */
-      emacs_close (XINT (XPROCESS (proc)->outfd));
+      emacs_close (XPROCESS (proc)->outfd);
 #endif /* not HAVE_SHUTDOWN */
       new_outfd = emacs_open (NULL_DEVICE, O_WRONLY, 0);
       if (new_outfd < 0)
        abort ();
-      old_outfd = XINT (XPROCESS (proc)->outfd);
+      old_outfd = XPROCESS (proc)->outfd;
 
       if (!proc_encode_coding_system[new_outfd])
        proc_encode_coding_system[new_outfd]
@@ -6444,7 +6447,7 @@ text to PROCESS after you call this function.  */)
       bzero (proc_encode_coding_system[old_outfd],
             sizeof (struct coding_system));
 
-      XSETINT (XPROCESS (proc)->outfd, new_outfd);
+      XPROCESS (proc)->outfd = new_outfd;
     }
 #endif /* VMS */
   return process;
@@ -6467,7 +6470,7 @@ kill_buffer_processes (buffer)
        {
          if (NETCONN_P (proc))
            Fdelete_process (proc);
-         else if (XINT (XPROCESS (proc)->infd) >= 0)
+         else if (XPROCESS (proc)->infd >= 0)
            process_send_signal (proc, SIGHUP, Qnil, 1);
        }
     }
@@ -6597,21 +6600,21 @@ sigchld_handler (signo)
          union { int i; WAITTYPE wt; } u;
          int clear_desc_flag = 0;
 
-         XSETINT (p->tick, ++process_tick);
+         p->tick = ++process_tick;
          u.wt = w;
          p->raw_status = u.i;
          p->raw_status_new = 1;
 
          /* If process has terminated, stop waiting for its output.  */
          if ((WIFSIGNALED (w) || WIFEXITED (w))
-             && XINT (p->infd) >= 0)
+             && p->infd >= 0)
            clear_desc_flag = 1;
 
          /* We use clear_desc_flag to avoid a compiler bug in Microsoft C.  */
          if (clear_desc_flag)
            {
-             FD_CLR (XINT (p->infd), &input_wait_mask);
-             FD_CLR (XINT (p->infd), &non_keyboard_wait_mask);
+             FD_CLR (p->infd, &input_wait_mask);
+             FD_CLR (p->infd, &non_keyboard_wait_mask);
            }
 
          /* Tell wait_reading_process_output that it needs to wake up and
@@ -6788,18 +6791,18 @@ status_notify (deleting_process)
       proc = Fcdr (Fcar (tail));
       p = XPROCESS (proc);
 
-      if (XINT (p->tick) != XINT (p->update_tick))
+      if (p->tick != p->update_tick)
        {
-         XSETINT (p->update_tick, XINT (p->tick));
+         p->update_tick = p->tick;
 
          /* If process is still active, read any output that remains.  */
          while (! EQ (p->filter, Qt)
                 && ! EQ (p->status, Qconnect)
                 && ! EQ (p->status, Qlisten)
                 && ! EQ (p->command, Qt)  /* Network process not stopped.  */
-                && XINT (p->infd) >= 0
+                && p->infd >= 0
                 && p != deleting_process
-                && read_process_output (proc, XINT (p->infd)) > 0);
+                && read_process_output (proc, p->infd) > 0);
 
          buffer = p->buffer;
 
@@ -6826,7 +6829,7 @@ status_notify (deleting_process)
             So set p->update_tick again
             so that an error in the sentinel will not cause
             this code to be run again.  */
-         XSETINT (p->update_tick, XINT (p->tick));
+         p->update_tick = p->tick;
          /* Now output the message suitably.  */
          if (!NILP (p->sentinel))
            exec_sentinel (proc, msg);
@@ -6899,9 +6902,9 @@ encode subprocess input.  */)
 
   CHECK_PROCESS (process);
   p = XPROCESS (process);
-  if (XINT (p->infd) < 0)
+  if (p->infd < 0)
     error ("Input file descriptor of %s closed", SDATA (p->name));
-  if (XINT (p->outfd) < 0)
+  if (p->outfd < 0)
     error ("Output file descriptor of %s closed", SDATA (p->name));
   Fcheck_coding_system (decoding);
   Fcheck_coding_system (encoding);
@@ -6938,7 +6941,7 @@ suppressed.  */)
 
   CHECK_PROCESS (process);
   p = XPROCESS (process);
-  p->filter_multibyte = flag;
+  p->filter_multibyte = !NILP (flag);
   setup_process_coding_systems (process);
 
   return Qnil;
@@ -6955,31 +6958,38 @@ DEFUN ("process-filter-multibyte-p", Fprocess_filter_multibyte_p,
   CHECK_PROCESS (process);
   p = XPROCESS (process);
 
-  return (NILP (p->filter_multibyte) ? Qnil : Qt);
+  return (p->filter_multibyte ? Qt : Qnil);
 }
 
 
 \f
-/* The first time this is called, assume keyboard input comes from DESC
-   instead of from where we used to expect it.
-   Subsequent calls mean assume input keyboard can come from DESC
-   in addition to other places.  */
-
-static int add_keyboard_wait_descriptor_called_flag;
+/* Add DESC to the set of keyboard input descriptors.  */
 
 void
 add_keyboard_wait_descriptor (desc)
      int desc;
 {
-  if (! add_keyboard_wait_descriptor_called_flag)
-    FD_CLR (0, &input_wait_mask);
-  add_keyboard_wait_descriptor_called_flag = 1;
   FD_SET (desc, &input_wait_mask);
   FD_SET (desc, &non_process_wait_mask);
   if (desc > max_keyboard_desc)
     max_keyboard_desc = desc;
 }
 
+static int add_gpm_wait_descriptor_called_flag;
+
+void
+add_gpm_wait_descriptor (desc)
+     int desc;
+{
+  if (! add_gpm_wait_descriptor_called_flag)
+    FD_CLR (0, &input_wait_mask);
+  add_gpm_wait_descriptor_called_flag = 1;
+  FD_SET (desc, &input_wait_mask);
+  FD_SET (desc, &gpm_wait_mask);
+  if (desc > max_gpm_desc)
+    max_gpm_desc = desc;
+}
+
 /* From now on, do not expect DESC to give keyboard input.  */
 
 void
@@ -6995,10 +7005,29 @@ delete_keyboard_wait_descriptor (desc)
   if (desc == max_keyboard_desc)
     for (fd = 0; fd < lim; fd++)
       if (FD_ISSET (fd, &input_wait_mask)
-         && !FD_ISSET (fd, &non_keyboard_wait_mask))
+         && !FD_ISSET (fd, &non_keyboard_wait_mask)
+         && !FD_ISSET (fd, &gpm_wait_mask))
        max_keyboard_desc = fd;
 }
 
+void
+delete_gpm_wait_descriptor (desc)
+     int desc;
+{
+  int fd;
+  int lim = max_gpm_desc;
+
+  FD_CLR (desc, &input_wait_mask);
+  FD_CLR (desc, &non_process_wait_mask);
+
+  if (desc == max_gpm_desc)
+    for (fd = 0; fd < lim; fd++)
+      if (FD_ISSET (fd, &input_wait_mask)
+         && !FD_ISSET (fd, &non_keyboard_wait_mask)
+         && !FD_ISSET (fd, &non_process_wait_mask))
+       max_gpm_desc = fd;
+}
+
 /* Return nonzero if *MASK has a bit set
    that corresponds to one of the keyboard input descriptors.  */
 
@@ -7045,7 +7074,12 @@ init_process ()
   process_output_skip = 0;
 #endif
 
+  /* Don't do this, it caused infinite select loops.  The display
+     method should call add_keyboard_wait_descriptor on stdin if it
+     needs that.  */
+#if 0
   FD_SET (0, &input_wait_mask);
+#endif
 
   Vprocess_alist = Qnil;
 #ifdef SIGCHLD
index 2502e61a31df08276aaf980d68159dfb8056d037..c1b1bc01e372e87e53d3f946b51d535c66ac0f42 100644 (file)
@@ -34,12 +34,8 @@ Boston, MA 02110-1301, USA.  */
 
 struct Lisp_Process
   {
-    EMACS_INT size;
+    EMACS_UINT size;
     struct Lisp_Vector *v_next;
-    /* Descriptor by which we read from this process */
-    Lisp_Object infd;
-    /* Descriptor by which we write to this process */
-    Lisp_Object outfd;
     /* Name of subprocess terminal.  */
     Lisp_Object tty_name;
     /* Name of this process */
@@ -64,61 +60,65 @@ struct Lisp_Process
     Lisp_Object plist;
     /* Marker set to end of last buffer-inserted output from this process */
     Lisp_Object mark;
-    /* Non-nil means kill silently if Emacs is exited.
-       This is the inverse of the `query-on-exit' flag.  */
-    Lisp_Object kill_without_query;
     /* Symbol indicating status of process.
        This may be a symbol: run, open, or closed.
        Or it may be a list, whose car is stop, exit or signal
        and whose cdr is a pair (EXIT_CODE . COREDUMP_FLAG)
        or (SIGNAL_NUMBER . COREDUMP_FLAG).  */
     Lisp_Object status;
-    /* Non-nil if communicating through a pty.  */
-    Lisp_Object pty_flag;
-    /* Event-count of last event in which this process changed status.  */
-    Lisp_Object tick;
-    /* Event-count of last such event reported.  */
-    Lisp_Object update_tick;
     /* Coding-system for decoding the input from this process.  */
     Lisp_Object decode_coding_system;
     /* Working buffer for decoding.  */
     Lisp_Object decoding_buf;
-    /* Size of carryover in decoding.  */
-    Lisp_Object decoding_carryover;
     /* Coding-system for encoding the output to this process.  */
     Lisp_Object encode_coding_system;
     /* Working buffer for encoding.  */
     Lisp_Object encoding_buf;
-    /* Size of carryover in encoding.  */
-    Lisp_Object encoding_carryover;
-    /* Flag to set coding-system of the process buffer from the
-       coding_system used to decode process output.  */
-    Lisp_Object inherit_coding_system_flag;
-    /* Flat to decide the multibyteness of a string given to the
-       filter (if any).  It is initialized to the value of
-       `default-enable-multibyte-characters' when the process is
-       generated, and can be changed by the function
-       `set-process-fileter-multibyte'. */
-    Lisp_Object filter_multibyte;
-    /* Should we delay reading output from this process.
-       Initialized from `Vprocess_adaptive_read_buffering'.  */
-    Lisp_Object adaptive_read_buffering;
-    /* Hysteresis to try to read process output in larger blocks.
-       On some systems, e.g. GNU/Linux, Emacs is seen as 
-       an interactive app also when reading process output, meaning
-       that process output can be read in as little as 1 byte at a
-       time.  Value is micro-seconds to delay reading output from
-       this process.  Range is 0 .. 50000.  */
-    Lisp_Object read_output_delay;
-    /* Skip reading this process on next read.  */
-    Lisp_Object read_output_skip;
 
     /* After this point, there are no Lisp_Objects any more.  */
+    /* alloc.c assumes that `pid' is the first such non-Lisp slot.  */
 
     /* Number of this process.
        allocate_process assumes this is the first non-Lisp_Object field.
        A value 0 is used for pseudo-processes such as network connections.  */
     pid_t pid;
+    /* Descriptor by which we read from this process */
+    int infd;
+    /* Descriptor by which we write to this process */
+    int outfd;
+    /* Event-count of last event in which this process changed status.  */
+    int tick;
+    /* Event-count of last such event reported.  */
+    int update_tick;
+    /* Size of carryover in decoding.  */
+    int decoding_carryover;
+    /* Hysteresis to try to read process output in larger blocks.
+       On some systems, e.g. GNU/Linux, Emacs is seen as
+       an interactive app also when reading process output, meaning
+       that process output can be read in as little as 1 byte at a
+       time.  Value is micro-seconds to delay reading output from
+       this process.  Range is 0 .. 50000.  */
+    int read_output_delay;
+    /* Should we delay reading output from this process.
+       Initialized from `Vprocess_adaptive_read_buffering'.
+       0 = nil, 1 = t, 2 = other.  */
+    int adaptive_read_buffering : 2;
+    /* Skip reading this process on next read.  */
+    int read_output_skip : 1;
+    /* Non-nil means kill silently if Emacs is exited.
+       This is the inverse of the `query-on-exit' flag.  */
+    int kill_without_query : 1;
+    /* Non-nil if communicating through a pty.  */
+    int pty_flag : 1;
+    /* Flag to set coding-system of the process buffer from the
+       coding_system used to decode process output.  */
+    int inherit_coding_system_flag : 1;
+    /* Flag to decide the multibyteness of a string given to the
+       filter (if any).  It is initialized to the value of
+       `default-enable-multibyte-characters' when the process is
+       generated, and can be changed by the function
+       `set-process-filter-multibyte'. */
+    int filter_multibyte : 1;
     /* Record the process status in the raw form in which it comes from `wait'.
        This is to avoid consing in a signal handler.  The `raw_status_new'
        flag indicates that `raw_status' contains a new status that still
index 49cb9b1b387b44dcb19a1cf284299eb9fd143472..f5b675055b899085ff4be4a0dcefeafda96c4d5a 100644 (file)
@@ -43,7 +43,7 @@ Boston, MA 02110-1301, USA.  */
 #endif
 
 #ifndef BASE_PURESIZE
-#define BASE_PURESIZE (1120000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
+#define BASE_PURESIZE (1170000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
 #endif
 
 /* Increase BASE_PURESIZE by a ratio depending on the machine's word size.  */
index 6435133c96fa36898e41500f95a835427f51d8ba..125a3388f19f03596d9a1b81374fffc8c37f80a6 100644 (file)
@@ -1366,18 +1366,12 @@ static const char *re_error_msgid[] =
 /* Normally, this is fine.  */
 #define MATCH_MAY_ALLOCATE
 
-/* When using GNU C, we are not REALLY using the C alloca, no matter
-   what config.h may say.  So don't take precautions for it.  */
-#ifdef __GNUC__
-# undef C_ALLOCA
-#endif
-
 /* The match routines may not allocate if (1) they would do it with malloc
    and (2) it's not safe for them to use malloc.
    Note that if REL_ALLOC is defined, matching would not use malloc for the
    failure stack, but we would still use it for the register vectors;
    so REL_ALLOC should not affect this.  */
-#if (defined C_ALLOCA || defined REGEX_MALLOC) && defined emacs
+#if defined REGEX_MALLOC && defined emacs
 # undef MATCH_MAY_ALLOCATE
 #endif
 
@@ -2483,11 +2477,6 @@ regex_compile (pattern, size, syntax, bufp)
      last -- ends with a forward jump of this sort.  */
   unsigned char *fixup_alt_jump = 0;
 
-  /* Counts open-groups as they are encountered.  Remembered for the
-     matching close-group on the compile stack, so the same register
-     number is put in the stop_memory as the start_memory.  */
-  regnum_t regnum = 0;
-
   /* Work area for range table of charset.  */
   struct range_table_work_area range_table_work;
 
@@ -3124,28 +3113,54 @@ regex_compile (pattern, size, syntax, bufp)
            handle_open:
              {
                int shy = 0;
+               regnum_t regnum = 0;
                if (p+1 < pend)
                  {
                    /* Look for a special (?...) construct */
                    if ((syntax & RE_SHY_GROUPS) && *p == '?')
                      {
                        PATFETCH (c); /* Gobble up the '?'.  */
-                       PATFETCH (c);
-                       switch (c)
+                       while (!shy)
                          {
-                         case ':': shy = 1; break;
-                         default:
-                           /* Only (?:...) is supported right now. */
-                           FREE_STACK_RETURN (REG_BADPAT);
+                           PATFETCH (c);
+                           switch (c)
+                             {
+                             case ':': shy = 1; break;
+                             case '0':
+                               /* An explicitly specified regnum must start
+                                  with non-0. */
+                               if (regnum == 0)
+                                 FREE_STACK_RETURN (REG_BADPAT);
+                             case '1': case '2': case '3': case '4':
+                             case '5': case '6': case '7': case '8': case '9':
+                               regnum = 10*regnum + (c - '0'); break;
+                             default:
+                               /* Only (?:...) is supported right now. */
+                               FREE_STACK_RETURN (REG_BADPAT);
+                             }
                          }
                      }
                  }
 
                if (!shy)
-                 {
-                   bufp->re_nsub++;
-                   regnum++;
+                 regnum = ++bufp->re_nsub;
+               else if (regnum)
+                 { /* It's actually not shy, but explicitly numbered.  */
+                   shy = 0;
+                   if (regnum > bufp->re_nsub)
+                     bufp->re_nsub = regnum;
+                   else if (regnum > bufp->re_nsub
+                            /* Ideally, we'd want to check that the specified
+                               group can't have matched (i.e. all subgroups
+                               using the same regnum are in other branches of
+                               OR patterns), but we don't currently keep track
+                               of enough info to do that easily.  */
+                            || group_in_compile_stack (compile_stack, regnum))
+                     FREE_STACK_RETURN (REG_BADPAT);
                  }
+               else
+                 /* It's really shy.  */
+                 regnum = - bufp->re_nsub;
 
                if (COMPILE_STACK_FULL)
                  {
@@ -3164,12 +3179,11 @@ regex_compile (pattern, size, syntax, bufp)
                COMPILE_STACK_TOP.fixup_alt_jump
                  = fixup_alt_jump ? fixup_alt_jump - bufp->buffer + 1 : 0;
                COMPILE_STACK_TOP.laststart_offset = b - bufp->buffer;
-               COMPILE_STACK_TOP.regnum = shy ? -regnum : regnum;
+               COMPILE_STACK_TOP.regnum = regnum;
 
-               /* Do not push a
-                  start_memory for groups beyond the last one we can
-                  represent in the compiled pattern.  */
-               if (regnum <= MAX_REGNUM && !shy)
+               /* Do not push a start_memory for groups beyond the last one
+                  we can represent in the compiled pattern.  */
+               if (regnum <= MAX_REGNUM && regnum > 0)
                  BUF_PUSH_2 (start_memory, regnum);
 
                compile_stack.avail++;
@@ -3214,7 +3228,7 @@ regex_compile (pattern, size, syntax, bufp)
                /* We don't just want to restore into `regnum', because
                   later groups should continue to be numbered higher,
                   as in `(ab)c(de)' -- the second group is #2.  */
-               regnum_t this_group_regnum;
+               regnum_t regnum;
 
                compile_stack.avail--;
                begalt = bufp->buffer + COMPILE_STACK_TOP.begalt_offset;
@@ -3223,7 +3237,7 @@ regex_compile (pattern, size, syntax, bufp)
                    ? bufp->buffer + COMPILE_STACK_TOP.fixup_alt_jump - 1
                    : 0;
                laststart = bufp->buffer + COMPILE_STACK_TOP.laststart_offset;
-               this_group_regnum = COMPILE_STACK_TOP.regnum;
+               regnum = COMPILE_STACK_TOP.regnum;
                /* If we've reached MAX_REGNUM groups, then this open
                   won't actually generate any code, so we'll have to
                   clear pending_exact explicitly.  */
@@ -3231,8 +3245,8 @@ regex_compile (pattern, size, syntax, bufp)
 
                /* We're at the end of the group, so now we know how many
                   groups were inside this one.  */
-               if (this_group_regnum <= MAX_REGNUM && this_group_regnum > 0)
-                 BUF_PUSH_2 (stop_memory, this_group_regnum);
+               if (regnum <= MAX_REGNUM && regnum > 0)
+                 BUF_PUSH_2 (stop_memory, regnum);
              }
              break;
 
@@ -3558,8 +3572,9 @@ regex_compile (pattern, size, syntax, bufp)
 
                reg = c - '0';
 
-               /* Can't back reference to a subexpression before its end.  */
-               if (reg > regnum || group_in_compile_stack (compile_stack, reg))
+               if (reg > bufp->re_nsub || reg < 1
+                   /* Can't back reference to a subexp before its end.  */
+                   || group_in_compile_stack (compile_stack, reg))
                  FREE_STACK_RETURN (REG_ESUBREG);
 
                laststart = b;
@@ -4433,11 +4448,6 @@ re_search_2 (bufp, str1, size1, str2, size2, startpos, range, regs, stop)
 
       val = re_match_2_internal (bufp, string1, size1, string2, size2,
                                 startpos, regs, stop);
-#ifndef REGEX_MALLOC
-# ifdef C_ALLOCA
-      alloca (0);
-# endif
-#endif
 
       if (val >= 0)
        return startpos;
@@ -4873,9 +4883,6 @@ re_match (bufp, string, size, pos, regs)
 {
   int result = re_match_2_internal (bufp, NULL, 0, (re_char*) string, size,
                                    pos, regs, size);
-# if defined C_ALLOCA && !defined REGEX_MALLOC
-  alloca (0);
-# endif
   return result;
 }
 WEAK_ALIAS (__re_match, re_match)
@@ -4921,9 +4928,6 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
   result = re_match_2_internal (bufp, (re_char*) string1, size1,
                                (re_char*) string2, size2,
                                pos, regs, stop);
-#if defined C_ALLOCA && !defined REGEX_MALLOC
-  alloca (0);
-#endif
   return result;
 }
 WEAK_ALIAS (__re_match_2, re_match_2)
index 3c0d9c410a0f1ee9def69dc98bba4a65275c80fe..1785c7c6c76138c5274f7ee435dd703ebd7f2780 100644 (file)
@@ -140,6 +140,12 @@ Boston, MA 02110-1301, USA.  */
    change their controlling terminal */
 #define vfork fork
 
+/* This should work (at least when compiling with gcc).  But I have no way
+   or intention to verify or even test it.  If you encounter a problem with
+   it, feel free to change this setting, but please add a comment here about
+   why it needed to be changed.  */
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
+
 /* the end */
 
 /* arch-tag: 5ae7ba00-83b0-4ab3-806a-3e845779191b
index 183aecaf5d8db0a4c04e0aeca9098581da5299eb..6bfa0e95106e13cd610ba302e6321699b059e0b0 100644 (file)
@@ -50,6 +50,12 @@ Boston, MA 02110-1301, USA.  */
 #ifdef MAC_OSX
 #ifdef HAVE_CARBON
 #define MAC_OS
+/* We need a little extra space, see ../../lisp/loadup.el. */
+#define SYSTEM_PURESIZE_EXTRA 30000
+
+/* XXX The MULTI_KBOARD support does not work yet on this platform. */
+#undef MULTI_KBOARD
+
 #endif
 #endif
 
index a5898410b3b39e11bbe29e6f23d88ccc9c2807ca..5a297a4ee80b01e346983ebbea8dd984a321e0f0 100644 (file)
@@ -302,6 +302,8 @@ Boston, MA 02110-1301, USA.  */
 #define HAVE_MOUSE 1
 #define HAVE_H_ERRNO 1
 
+#define MULTI_KBOARD 1
+
 #ifdef HAVE_NTGUI
 #define HAVE_WINDOW_SYSTEM 1
 #define HAVE_FACES 1
@@ -480,7 +482,7 @@ extern char *get_emacs_configuration_options (void);
 /* We need a little extra space, see ../../lisp/loadup.el.
    The number below comes from 23923 bytes worth (as of 2006-04)
    of w32-specific files loaded by loadup.el, plus 1K spare.  */
-#define SYSTEM_PURESIZE_EXTRA 25000
+#define SYSTEM_PURESIZE_EXTRA 50000
 
 /* For unexec to work on Alpha systems, we need to put Emacs'
    initialized data into a separate section from the CRT initialized
index 48a40fe23d2f87fe5f8db4025c85e40c31326469..5a59c69003e5150c2c1dd12493ee1e5305caaac9 100644 (file)
@@ -23,12 +23,13 @@ Boston, MA 02110-1301, USA.  */
 #include <config.h>
 #include <stdio.h>
 #include <string.h>
-#include "termchar.h"
 #include "lisp.h"
+#include "termchar.h"
 #include "dispextern.h"
 #include "keyboard.h"
 #include "frame.h"
 #include "window.h"
+#include "termhooks.h"
 
 /* All costs measured in characters.
    So no cost can exceed the area of a frame, measured in characters.
@@ -58,10 +59,12 @@ struct matrix_elt
     unsigned char writecount;
   };
 
-static void do_direct_scrolling P_ ((struct glyph_matrix *,
+static void do_direct_scrolling P_ ((struct frame *,
+                                     struct glyph_matrix *,
                                     struct matrix_elt *,
                                     int, int));
-static void do_scrolling P_ ((struct glyph_matrix *,
+static void do_scrolling P_ ((struct frame *,
+                              struct glyph_matrix *,
                              struct matrix_elt *,
                              int, int));
 
@@ -101,7 +104,8 @@ calculate_scrolling (frame, matrix, window_size, lines_below,
   register struct matrix_elt *p, *p1;
   register int cost, cost1;
 
-  int lines_moved = window_size + (scroll_region_ok ? 0 : lines_below);
+  int lines_moved = window_size
+    + (FRAME_SCROLL_REGION_OK (frame) ? 0 : lines_below);
   /* first_insert_cost[I] is the cost of doing the first insert-line
      at the i'th line of the lines we are considering,
      where I is origin 1 (as it is below).  */
@@ -241,7 +245,8 @@ calculate_scrolling (frame, matrix, window_size, lines_below,
    of lines.  */
 
 static void
-do_scrolling (current_matrix, matrix, window_size, unchanged_at_top)
+do_scrolling (frame, current_matrix, matrix, window_size, unchanged_at_top)
+     struct frame *frame;
      struct glyph_matrix *current_matrix;
      struct matrix_elt *matrix;
      int window_size;
@@ -308,12 +313,12 @@ do_scrolling (current_matrix, matrix, window_size, unchanged_at_top)
          /* Set the terminal window, if not done already.  */
          if (! terminal_window_p)
            {
-             set_terminal_window (window_size + unchanged_at_top);
+             set_terminal_window (frame, window_size + unchanged_at_top);
              terminal_window_p = 1;
            }
 
          /* Delete lines on the terminal.  */
-         ins_del_lines (j + unchanged_at_top, - p->deletecount);
+         ins_del_lines (frame, j + unchanged_at_top, - p->deletecount);
        }
       else
        {
@@ -338,7 +343,7 @@ do_scrolling (current_matrix, matrix, window_size, unchanged_at_top)
       /* Set the terminal window if not yet done.  */
       if (!terminal_window_p)
        {
-         set_terminal_window (window_size + unchanged_at_top);
+         set_terminal_window (frame, window_size + unchanged_at_top);
          terminal_window_p = 1;
        }
 
@@ -347,7 +352,7 @@ do_scrolling (current_matrix, matrix, window_size, unchanged_at_top)
          --queue;
 
          /* Do the deletion on the terminal.  */
-         ins_del_lines (queue->pos, queue->count);
+         ins_del_lines (frame, queue->pos, queue->count);
 
          /* All lines in the range deleted become empty in the glyph
             matrix.  Assign to them glyph rows that are not retained.
@@ -380,7 +385,7 @@ do_scrolling (current_matrix, matrix, window_size, unchanged_at_top)
   CHECK_MATRIX (current_matrix);
 
   if (terminal_window_p)
-    set_terminal_window (0);
+    set_terminal_window (frame, 0);
 }
 
 \f
@@ -467,7 +472,8 @@ calculate_direct_scrolling (frame, matrix, window_size, lines_below,
   /* Overhead of setting the scroll window, plus the extra cost
      cost of scrolling by a distance of one.  The extra cost is
      added once for consistency with the cost vectors */
-  scroll_overhead = scroll_region_cost + extra_cost;
+  scroll_overhead
+    = FRAME_SCROLL_REGION_COST (frame) + extra_cost;
 
   /* initialize the top left corner of the matrix */
   matrix->writecost = 0;
@@ -650,8 +656,9 @@ calculate_direct_scrolling (frame, matrix, window_size, lines_below,
    the cost matrix for this approach is constructed. */
 
 static void
-do_direct_scrolling (current_matrix, cost_matrix, window_size,
-                    unchanged_at_top)
+do_direct_scrolling (frame, current_matrix, cost_matrix,
+                     window_size, unchanged_at_top)
+     struct frame *frame;
      struct glyph_matrix *current_matrix;
      struct matrix_elt *cost_matrix;
      int window_size;
@@ -742,9 +749,9 @@ do_direct_scrolling (current_matrix, cost_matrix, window_size,
          if (i > j)
            {
              /* Immediately insert lines */
-             set_terminal_window (i + unchanged_at_top);
+             set_terminal_window (frame, i + unchanged_at_top);
              terminal_window_p = 1;
-             ins_del_lines (j - n_to_write + unchanged_at_top, i - j);
+             ins_del_lines (frame, j - n_to_write + unchanged_at_top, i - j);
            }
          else if (i < j)
            {
@@ -774,9 +781,9 @@ do_direct_scrolling (current_matrix, cost_matrix, window_size,
          --queue;
          if (queue->count)
            {
-             set_terminal_window (queue->window);
+             set_terminal_window (frame, queue->window);
              terminal_window_p = 1;
-             ins_del_lines (queue->pos, queue->count);
+             ins_del_lines (frame, queue->pos, queue->count);
            }
          else
            {
@@ -799,7 +806,7 @@ do_direct_scrolling (current_matrix, cost_matrix, window_size,
                       copy_from, retained_p);
 
   if (terminal_window_p)
-    set_terminal_window (0);
+    set_terminal_window (frame, 0);
 }
 
 
@@ -819,13 +826,13 @@ scrolling_1 (frame, window_size, unchanged_at_top, unchanged_at_bottom,
   matrix = ((struct matrix_elt *)
            alloca ((window_size + 1) * (window_size + 1) * sizeof *matrix));
 
-  if (scroll_region_ok)
+  if (FRAME_SCROLL_REGION_OK (frame))
     {
       calculate_direct_scrolling (frame, matrix, window_size,
                                  unchanged_at_bottom,
                                  draw_cost, old_draw_cost,
                                  old_hash, new_hash, free_at_end);
-      do_direct_scrolling (frame->current_matrix,
+      do_direct_scrolling (frame, frame->current_matrix,
                           matrix, window_size, unchanged_at_top);
     }
   else
@@ -833,7 +840,8 @@ scrolling_1 (frame, window_size, unchanged_at_top, unchanged_at_bottom,
       calculate_scrolling (frame, matrix, window_size, unchanged_at_bottom,
                           draw_cost, old_hash, new_hash,
                           free_at_end);
-      do_scrolling (frame->current_matrix, matrix, window_size,
+      do_scrolling (frame,
+                    frame->current_matrix, matrix, window_size,
                    unchanged_at_top);
     }
 }
@@ -915,7 +923,7 @@ scroll_cost (frame, from, to, amount)
   if (amount == 0)
     return 0;
 
-  if (! scroll_region_ok)
+  if (! FRAME_SCROLL_REGION_OK (frame))
     limit = height;
   else if (amount > 0)
     limit += amount;
index 3a9fabeb3cee4d89f5f4b2582235d25dbef4644a..aca95c03308fc7dd0c959ab2908b05f30d6290cd 100644 (file)
@@ -92,6 +92,11 @@ 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 ();
 static void save_search_regs ();
 static int simple_search ();
@@ -321,7 +326,9 @@ looking_at_1 (string, posix)
     = current_buffer->case_eqv_table;
 
   CHECK_STRING (string);
-  bufp = compile_pattern (string, &search_regs,
+  bufp = compile_pattern (string,
+                         (NILP (Vinhibit_changing_match_data)
+                          ? &search_regs : NULL),
                          (!NILP (current_buffer->case_fold_search)
                           ? current_buffer->case_canon_table : Qnil),
                          posix,
@@ -352,7 +359,9 @@ looking_at_1 (string, posix)
   re_match_object = Qnil;
 
   i = re_match_2 (bufp, (char *) p1, s1, (char *) p2, s2,
-                 PT_BYTE - BEGV_BYTE, &search_regs,
+                 PT_BYTE - BEGV_BYTE,
+                 (NILP (Vinhibit_changing_match_data)
+                  ? &search_regs : NULL),
                  ZV_BYTE - BEGV_BYTE);
   immediate_quit = 0;
 
@@ -360,7 +369,7 @@ looking_at_1 (string, posix)
     matcher_overflow ();
 
   val = (0 <= i ? Qt : Qnil);
-  if (i >= 0)
+  if (NILP (Vinhibit_changing_match_data) && i >= 0)
     for (i = 0; i < search_regs.num_regs; i++)
       if (search_regs.start[i] >= 0)
        {
@@ -369,7 +378,11 @@ looking_at_1 (string, posix)
          search_regs.end[i]
            = BYTE_TO_CHAR (search_regs.end[i] + BEGV_BYTE);
        }
-  XSETBUFFER (last_thing_searched, current_buffer);
+
+  /* Set last_thing_searched only when match data is changed.  */
+  if (NILP (Vinhibit_changing_match_data))
+    XSETBUFFER (last_thing_searched, current_buffer);
+
   return val;
 }
 
@@ -431,7 +444,9 @@ string_match_1 (regexp, string, start, posix)
   XCHAR_TABLE (current_buffer->case_canon_table)->extras[2]
     = current_buffer->case_eqv_table;
 
-  bufp = compile_pattern (regexp, &search_regs,
+  bufp = compile_pattern (regexp,
+                         (NILP (Vinhibit_changing_match_data)
+                          ? &search_regs : NULL),
                          (!NILP (current_buffer->case_fold_search)
                           ? current_buffer->case_canon_table : Qnil),
                          posix,
@@ -442,21 +457,27 @@ string_match_1 (regexp, string, start, posix)
   val = re_search (bufp, (char *) SDATA (string),
                   SBYTES (string), pos_byte,
                   SBYTES (string) - pos_byte,
-                  &search_regs);
+                  (NILP (Vinhibit_changing_match_data)
+                   ? &search_regs : NULL));
   immediate_quit = 0;
-  last_thing_searched = Qt;
+
+  /* Set last_thing_searched only when match data is changed.  */
+  if (NILP (Vinhibit_changing_match_data))
+    last_thing_searched = Qt;
+
   if (val == -2)
     matcher_overflow ();
   if (val < 0) return Qnil;
 
-  for (i = 0; i < search_regs.num_regs; i++)
-    if (search_regs.start[i] >= 0)
-      {
-       search_regs.start[i]
-         = string_byte_to_char (string, search_regs.start[i]);
-       search_regs.end[i]
-         = string_byte_to_char (string, search_regs.end[i]);
-      }
+  if (NILP (Vinhibit_changing_match_data))
+    for (i = 0; i < search_regs.num_regs; i++)
+      if (search_regs.start[i] >= 0)
+       {
+         search_regs.start[i]
+           = string_byte_to_char (string, search_regs.start[i]);
+         search_regs.end[i]
+           = string_byte_to_char (string, search_regs.end[i]);
+       }
 
   return make_number (string_byte_to_char (string, val));
 }
@@ -1074,6 +1095,11 @@ do                                               \
   }                                            \
 while (0)
 
+/* Only used in search_buffer, to record the end position of the match
+   when searching regexps and SEARCH_REGS should not be changed
+   (i.e. Vinhibit_changing_match_data is non-nil).  */
+static struct re_registers search_regs_1;
+
 static int
 search_buffer (string, pos, pos_byte, lim, lim_byte, n,
               RE, trt, inverse_trt, posix)
@@ -1109,7 +1135,10 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n,
       int s1, s2;
       struct re_pattern_buffer *bufp;
 
-      bufp = compile_pattern (string, &search_regs, trt, posix,
+      bufp = compile_pattern (string,
+                             (NILP (Vinhibit_changing_match_data)
+                              ? &search_regs : &search_regs_1),
+                             trt, posix,
                              !NILP (current_buffer->enable_multibyte_characters));
 
       immediate_quit = 1;      /* Quit immediately if user types ^G,
@@ -1142,7 +1171,8 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n,
          int val;
          val = re_search_2 (bufp, (char *) p1, s1, (char *) p2, s2,
                             pos_byte - BEGV_BYTE, lim_byte - pos_byte,
-                            &search_regs,
+                            (NILP (Vinhibit_changing_match_data)
+                             ? &search_regs : &search_regs_1),
                             /* Don't allow match past current point */
                             pos_byte - BEGV_BYTE);
          if (val == -2)
@@ -1151,18 +1181,27 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n,
            }
          if (val >= 0)
            {
-             pos_byte = search_regs.start[0] + BEGV_BYTE;
-             for (i = 0; i < search_regs.num_regs; i++)
-               if (search_regs.start[i] >= 0)
-                 {
-                   search_regs.start[i]
-                     = BYTE_TO_CHAR (search_regs.start[i] + BEGV_BYTE);
-                   search_regs.end[i]
-                     = BYTE_TO_CHAR (search_regs.end[i] + BEGV_BYTE);
-                 }
-             XSETBUFFER (last_thing_searched, current_buffer);
-             /* Set pos to the new position. */
-             pos = search_regs.start[0];
+             if (NILP (Vinhibit_changing_match_data))
+               {
+                 pos_byte = search_regs.start[0] + BEGV_BYTE;
+                 for (i = 0; i < search_regs.num_regs; i++)
+                   if (search_regs.start[i] >= 0)
+                     {
+                       search_regs.start[i]
+                         = BYTE_TO_CHAR (search_regs.start[i] + BEGV_BYTE);
+                       search_regs.end[i]
+                         = BYTE_TO_CHAR (search_regs.end[i] + BEGV_BYTE);
+                     }
+                 XSETBUFFER (last_thing_searched, current_buffer);
+                 /* Set pos to the new position. */
+                 pos = search_regs.start[0];
+               }
+             else
+               {
+                 pos_byte = search_regs_1.start[0] + BEGV_BYTE;
+                 /* Set pos to the new position.  */
+                 pos = BYTE_TO_CHAR (search_regs_1.start[0] + BEGV_BYTE);
+               }
            }
          else
            {
@@ -1176,7 +1215,8 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n,
          int val;
          val = re_search_2 (bufp, (char *) p1, s1, (char *) p2, s2,
                             pos_byte - BEGV_BYTE, lim_byte - pos_byte,
-                            &search_regs,
+                            (NILP (Vinhibit_changing_match_data)
+                             ? &search_regs : &search_regs_1),
                             lim_byte - BEGV_BYTE);
          if (val == -2)
            {
@@ -1184,17 +1224,25 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n,
            }
          if (val >= 0)
            {
-             pos_byte = search_regs.end[0] + BEGV_BYTE;
-             for (i = 0; i < search_regs.num_regs; i++)
-               if (search_regs.start[i] >= 0)
-                 {
-                   search_regs.start[i]
-                     = BYTE_TO_CHAR (search_regs.start[i] + BEGV_BYTE);
-                   search_regs.end[i]
-                     = BYTE_TO_CHAR (search_regs.end[i] + BEGV_BYTE);
-                 }
-             XSETBUFFER (last_thing_searched, current_buffer);
-             pos = search_regs.end[0];
+             if (NILP (Vinhibit_changing_match_data))
+               {
+                 pos_byte = search_regs.end[0] + BEGV_BYTE;
+                 for (i = 0; i < search_regs.num_regs; i++)
+                   if (search_regs.start[i] >= 0)
+                     {
+                       search_regs.start[i]
+                         = BYTE_TO_CHAR (search_regs.start[i] + BEGV_BYTE);
+                       search_regs.end[i]
+                         = BYTE_TO_CHAR (search_regs.end[i] + BEGV_BYTE);
+                     }
+                 XSETBUFFER (last_thing_searched, current_buffer);
+                 pos = search_regs.end[0];
+               }
+             else
+               {
+                 pos_byte = search_regs_1.end[0] + BEGV_BYTE;
+                 pos = BYTE_TO_CHAR (search_regs_1.end[0] + BEGV_BYTE);
+               }
            }
          else
            {
@@ -1649,12 +1697,8 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt,
   int translate_prev_byte2 = 0;
   int translate_prev_byte3 = 0;
 
-#ifdef C_ALLOCA
-  int BM_tab_space[0400];
-  BM_tab = &BM_tab_space[0];
-#else
   BM_tab = (int *) alloca (0400 * sizeof (int));
-#endif
+
   /* The general approach is that we are going to maintain that we know */
   /* the first (closest to the present position, in whatever direction */
   /* we're searching) character that could possibly be the last */
@@ -1926,7 +1970,7 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt,
              cursor += dirlen - i - direction; /* fix cursor */
              if (i + direction == 0)
                {
-                 int position;
+                 int position, start, end;
 
                  cursor -= direction;
 
@@ -1934,11 +1978,24 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt,
                                                       ? 1 - len_byte : 0);
                  set_search_regs (position, len_byte);
 
+                 if (NILP (Vinhibit_changing_match_data))
+                   {
+                     start = search_regs.start[0];
+                     end = search_regs.end[0];
+                   }
+                 else
+                   /* If Vinhibit_changing_match_data is non-nil,
+                      search_regs will not be changed.  So let's
+                      compute start and end here.  */
+                   {
+                     start = BYTE_TO_CHAR (position);
+                     end = BYTE_TO_CHAR (position + len_byte);
+                   }
+
                  if ((n -= direction) != 0)
                    cursor += dirlen; /* to resume search */
                  else
-                   return ((direction > 0)
-                           ? search_regs.end[0] : search_regs.start[0]);
+                   return direction > 0 ? end : start;
                }
              else
                cursor += stride_for_teases; /* <sigh> we lose -  */
@@ -2003,18 +2060,30 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt,
              pos_byte += dirlen - i- direction;
              if (i + direction == 0)
                {
-                 int position;
+                 int position, start, end;
                  pos_byte -= direction;
 
                  position = pos_byte + ((direction > 0) ? 1 - len_byte : 0);
-
                  set_search_regs (position, len_byte);
 
+                 if (NILP (Vinhibit_changing_match_data))
+                   {
+                     start = search_regs.start[0];
+                     end = search_regs.end[0];
+                   }
+                 else
+                   /* If Vinhibit_changing_match_data is non-nil,
+                      search_regs will not be changed.  So let's
+                      compute start and end here.  */
+                   {
+                     start = BYTE_TO_CHAR (position);
+                     end = BYTE_TO_CHAR (position + len_byte);
+                   }
+
                  if ((n -= direction) != 0)
                    pos_byte += dirlen; /* to resume search */
                  else
-                   return ((direction > 0)
-                           ? search_regs.end[0] : search_regs.start[0]);
+                   return direction > 0 ? end : start;
                }
              else
                pos_byte += stride_for_teases;
@@ -2037,6 +2106,9 @@ set_search_regs (beg_byte, nbytes)
 {
   int i;
 
+  if (!NILP (Vinhibit_changing_match_data))
+    return;
+
   /* Make sure we have registers in which to store
      the match position.  */
   if (search_regs.num_regs == 0)
@@ -2095,7 +2167,7 @@ wordify (string)
   if (SYNTAX (prev_c) == Sword)
     word_count++;
   if (!word_count)
-    return empty_string;
+    return empty_unibyte_string;
 
   adjust = - punct_count + 5 * (word_count - 1) + 4;
   if (STRING_MULTIBYTE (string))
@@ -3167,6 +3239,13 @@ 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,
+      doc: /* Internal use only.
+If non-nil, the match data will not be changed during call to searching or
+matching functions, such as `looking-at', `string-match', `re-search-forward'
+etc.  */);
+  Vinhibit_changing_match_data = Qnil;
+
   defsubr (&Slooking_at);
   defsubr (&Sposix_looking_at);
   defsubr (&Sstring_match);
index 8b1bda8d6eff4056c25adad0acbdaddb0d9fded0..0873fe8b82facf3913b1dd5d504f605c53c802de 100644 (file)
@@ -97,7 +97,6 @@ Boston, MA 02110-1301, USA.  */
 #endif /* WINDOWSNT */
 
 /* BEGIN: Common Definitions */
-#define abs(X)    ((X) < 0 ? -(X) : (X))
 
 /* Symbols.  */
 
index 8aedfa070104297fd5ae928b903c0bc50de0d229..86e64cbcdcc720089e51f39d49f0d7cf22f7b7dc 100644 (file)
@@ -287,7 +287,7 @@ sel_read (sel, file)
   register int i, n;
   register char *cp;
 
-  Current_Selection = make_string ("", 0);
+  Current_Selection = empty_unibyte_string;
   if (sel->sel_items <= 0)
     return (0);
   cp = (char *) malloc(sel->sel_items);
index 408ccf2131a1ab5c166674bc4ca8bf9b15713d88..35a107f34cf0697894b0d3fdc515205658f97df7 100644 (file)
@@ -46,6 +46,12 @@ extern void srandom P_ ((unsigned int));
 #endif
 #endif
 
+/* The w32 build defines select stuff in w32.h, which is included by
+   sys/select.h (included below).   */
+#ifndef WINDOWSNT
+#include "sysselect.h"
+#endif
+
 #include "blockinput.h"
 
 #ifdef MAC_OS8
@@ -176,6 +182,7 @@ extern int quit_char;
 #include "termopts.h"
 #include "dispextern.h"
 #include "process.h"
+#include "cm.h"  /* for reset_sys_modes */
 
 #ifdef WINDOWSNT
 #include <direct.h>
@@ -239,16 +246,11 @@ static int baud_convert[] =
 
 int emacs_ospeed;
 
-/* The file descriptor for Emacs's input terminal.
-   Under Unix, this is normally zero except when using X;
-   under VMS, we place the input channel number here.  */
-int input_fd;
-
 void croak P_ ((char *)) NO_RETURN;
 
 #ifdef AIXHFT
-void hft_init ();
-void hft_reset ();
+void hft_init P_ ((struct tty_display_info *));
+void hft_reset P_ ((struct tty_display_info *));
 #endif
 
 /* Temporary used by `sigblock' when defined in terms of signprocmask.  */
@@ -331,16 +333,7 @@ get_current_dir_name ()
 #endif
 
 \f
-/* Specify a different file descriptor for further input operations.  */
-
-void
-change_input_fd (fd)
-     int fd;
-{
-  input_fd = fd;
-}
-
-/* Discard pending input on descriptor input_fd.  */
+/* Discard pending input on all input descriptors.  */
 
 void
 discard_tty_input ()
@@ -351,54 +344,61 @@ discard_tty_input ()
   if (noninteractive)
     return;
 
-  /* Discarding input is not safe when the input could contain
-     replies from the X server.  So don't do it.  */
-  if (read_socket_hook)
-    return;
-
 #ifdef VMS
   end_kbd_input ();
-  SYS$QIOW (0, input_fd, IO$_READVBLK|IO$M_PURGE, input_iosb, 0, 0,
+  SYS$QIOW (0, fileno (CURTTY()->input), IO$_READVBLK|IO$M_PURGE, input_iosb, 0, 0,
            &buf.main, 0, 0, terminator_mask, 0, 0);
   queue_kbd_input ();
 #else /* not VMS */
 #ifdef APOLLO
   {
-    int zero = 0;
-    ioctl (input_fd, TIOCFLUSH, &zero);
+    struct tty_display_info *tty;
+    for (tty = tty_list; tty; tty = tty->next)
+      {
+        int zero = 0;
+        if (tty->input)
+          ioctl (fileno (tty->input), TIOCFLUSH, &zero);
+      }
   }
 #else /* not Apollo */
 #ifdef MSDOS    /* Demacs 1.1.1 91/10/16 HIRANO Satoshi */
   while (dos_keyread () != -1)
     ;
 #else /* not MSDOS */
-  EMACS_GET_TTY (input_fd, &buf);
-  EMACS_SET_TTY (input_fd, &buf, 0);
+  {
+    struct tty_display_info *tty;
+    for (tty = tty_list; tty; tty = tty->next)
+      {
+        if (tty->input)         /* Is the device suspended? */
+          {
+            EMACS_GET_TTY (fileno (tty->input), &buf);
+            EMACS_SET_TTY (fileno (tty->input), &buf, 0);
+          }
+      }
+  }
 #endif /* not MSDOS */
 #endif /* not Apollo */
 #endif /* not VMS */
 #endif /* not WINDOWSNT */
 }
 
+\f
 #ifdef SIGTSTP
 
 /* Arrange for character C to be read as the next input from
-   the terminal.  */
+   the terminal.
+   XXX What if we have multiple ttys?
+*/
 
 void
-#ifdef PROTOTYPES
 stuff_char (char c)
-#else
-stuff_char (c)
-     char c;
-#endif
 {
-  if (read_socket_hook)
+  if (! FRAME_TERMCAP_P (SELECTED_FRAME ()))
     return;
 
 /* Should perhaps error if in batch mode */
 #ifdef TIOCSTI
-  ioctl (input_fd, TIOCSTI, &c);
+  ioctl (fileno (CURTTY()->input), TIOCSTI, &c);
 #else /* no TIOCSTI */
   error ("Cannot stuff terminal input characters in this version of Unix");
 #endif /* no TIOCSTI */
@@ -407,7 +407,7 @@ stuff_char (c)
 #endif /* SIGTSTP */
 \f
 void
-init_baud_rate ()
+init_baud_rate (int fd)
 {
   if (noninteractive)
     emacs_ospeed = 0;
@@ -422,7 +422,7 @@ init_baud_rate ()
 #ifdef VMS
       struct sensemode sg;
 
-      SYS$QIOW (0, input_fd, IO$_SENSEMODE, &sg, 0, 0,
+      SYS$QIOW (0, fd, IO$_SENSEMODE, &sg, 0, 0,
                &sg.class, 12, 0, 0, 0, 0 );
       emacs_ospeed = sg.xmit_baud;
 #else /* not VMS */
@@ -430,7 +430,7 @@ init_baud_rate ()
       struct termios sg;
 
       sg.c_cflag = B9600;
-      tcgetattr (input_fd, &sg);
+      tcgetattr (fd, &sg);
       emacs_ospeed = cfgetospeed (&sg);
 #if defined (USE_GETOBAUD) && defined (getobaud)
       /* m88k-motorola-sysv3 needs this (ghazi@noc.rutgers.edu) 9/1/94. */
@@ -443,16 +443,16 @@ init_baud_rate ()
 
       sg.c_cflag = B9600;
 #ifdef HAVE_TCATTR
-      tcgetattr (input_fd, &sg);
+      tcgetattr (fd, &sg);
 #else
-      ioctl (input_fd, TCGETA, &sg);
+      ioctl (fd, TCGETA, &sg);
 #endif
       emacs_ospeed = sg.c_cflag & CBAUD;
 #else /* neither VMS nor TERMIOS nor TERMIO */
       struct sgttyb sg;
 
       sg.sg_ospeed = B9600;
-      if (ioctl (input_fd, TIOCGETP, &sg) < 0)
+      if (ioctl (fd, TIOCGETP, &sg) < 0)
        abort ();
       emacs_ospeed = sg.sg_ospeed;
 #endif /* not HAVE_TERMIO */
@@ -468,6 +468,7 @@ init_baud_rate ()
     baud_rate = 1200;
 }
 
+\f
 /*ARGSUSED*/
 void
 set_exclusive_use (fd)
@@ -729,7 +730,7 @@ child_setup_tty (out)
 
 #ifdef BSD4_1
   if (interrupt_input)
-    reset_sigio ();
+    reset_sigio (0);
 #endif /* BSD4_1 */
 #ifdef RTU
   {
@@ -986,53 +987,86 @@ restore_signal_handlers (saved_handlers)
     }
 }
 \f
+#ifndef SIGIO
+/* If SIGIO is broken, don't do anything. */
+void
+init_sigio (int fd)
+{
+}
+
+void
+reset_sigio (int fd)
+{
+}
+
+void
+request_sigio (void)
+{
+}
+
+void
+unrequest_sigio (void)
+{
+}
+
+#else
 #ifdef F_SETFL
 
-int old_fcntl_flags;
+int old_fcntl_flags[MAXDESC];
 
 void
 init_sigio (fd)
      int fd;
 {
 #ifdef FASYNC
-  old_fcntl_flags = fcntl (fd, F_GETFL, 0) & ~FASYNC;
-  fcntl (fd, F_SETFL, old_fcntl_flags | FASYNC);
+  old_fcntl_flags[fd] = fcntl (fd, F_GETFL, 0) & ~FASYNC;
+  fcntl (fd, F_SETFL, old_fcntl_flags[fd] | FASYNC);
 #endif
   interrupts_deferred = 0;
 }
 
 void
-reset_sigio ()
+reset_sigio (fd)
+     int fd;
 {
-  unrequest_sigio ();
+#ifdef FASYNC
+  fcntl (fd, F_SETFL, old_fcntl_flags[fd]);
+#endif
 }
 
 #ifdef FASYNC          /* F_SETFL does not imply existence of FASYNC */
+/* XXX Uhm, FASYNC is not used anymore here. */
+/* XXX Yeah, but you need it for SIGIO, don't you? */
 
 void
 request_sigio ()
 {
-  if (noninteractive || read_socket_hook)
+  if (noninteractive)
     return;
 
 #ifdef SIGWINCH
   sigunblock (sigmask (SIGWINCH));
 #endif
-  fcntl (input_fd, F_SETFL, old_fcntl_flags | FASYNC);
+  sigunblock (sigmask (SIGIO));
 
   interrupts_deferred = 0;
 }
 
 void
-unrequest_sigio ()
-{
-  if (noninteractive || read_socket_hook)
+unrequest_sigio (void)
+{ 
+  if (noninteractive)
     return;
 
+#if 0 /* XXX What's wrong with blocking SIGIO under X?  */
+  if (x_display_list)
+    return;
+#endif
+
 #ifdef SIGWINCH
   sigblock (sigmask (SIGWINCH));
 #endif
-  fcntl (input_fd, F_SETFL, old_fcntl_flags);
+  sigblock (sigmask (SIGIO));
   interrupts_deferred = 1;
 }
 
@@ -1047,7 +1081,8 @@ request_sigio ()
   if (noninteractive || read_socket_hook)
     return;
 
-  ioctl (input_fd, FIOASYNC, &on);
+  /* XXX CURTTY() is bogus here. */
+  ioctl (fileno (CURTTY ()->input), FIOASYNC, &on);
   interrupts_deferred = 0;
 }
 
@@ -1059,7 +1094,8 @@ unrequest_sigio ()
   if (noninteractive || read_socket_hook)
     return;
 
-  ioctl (input_fd, FIOASYNC, &off);
+  /* XXX CURTTY() is bogus here. */
+  ioctl (fileno (CURTTY ()->input), FIOASYNC, &off);
   interrupts_deferred = 1;
 }
 
@@ -1080,7 +1116,7 @@ request_sigio ()
 
   sigemptyset (&st);
   sigaddset (&st, SIGIO);
-  ioctl (input_fd, FIOASYNC, &on);
+  ioctl (0, FIOASYNC, &on);     /* XXX This fails for multiple ttys. */
   interrupts_deferred = 0;
   sigprocmask (SIG_UNBLOCK, &st, (sigset_t *)0);
 }
@@ -1093,7 +1129,7 @@ unrequest_sigio ()
   if (noninteractive || read_socket_hook)
     return;
 
-  ioctl (input_fd, FIOASYNC, &off);
+  ioctl (0, FIOASYNC, &off);  /* XXX This fails for multiple ttys. */
   interrupts_deferred = 1;
 }
 
@@ -1123,6 +1159,7 @@ unrequest_sigio ()
 #endif /* STRIDE */
 #endif /* FASYNC */
 #endif /* F_SETFL */
+#endif /* SIGIO */
 \f
 /* Saving and restoring the process group of Emacs's terminal.  */
 
@@ -1145,30 +1182,39 @@ unrequest_sigio ()
    the tty's pgroup just like any other terminal setting.  If
    inherited_group was not the tty's pgroup, then we'll get a
    SIGTTmumble when we try to change the tty's pgroup, and a CONT if
-   it goes foreground in the future, which is what should happen.  */
+   it goes foreground in the future, which is what should happen.
+
+   This variable is initialized in emacs.c.  */
 int inherited_pgroup;
 
-/* Split off the foreground process group to Emacs alone.
-   When we are in the foreground, but not started in our own process
-   group, redirect the TTY to point to our own process group.  We need
-   to be in our own process group to receive SIGIO properly.  */
-void
-narrow_foreground_group ()
+/* Split off the foreground process group to Emacs alone.  When we are
+   in the foreground, but not started in our own process group,
+   redirect the tty device handle FD to point to our own process
+   group.  We need to be in our own process group to receive SIGIO
+   properly.  */
+static void
+narrow_foreground_group (int fd)
 {
   int me = getpid ();
 
   setpgrp (0, inherited_pgroup);
+#if 0
+  /* XXX inherited_pgroup should not be zero here, but GTK seems to
+     mess this up. */
+  if (! inherited_pgroup)
+    abort ();                   /* Should not happen. */
+#endif
   if (inherited_pgroup != me)
-    EMACS_SET_TTY_PGRP (input_fd, &me);
+      EMACS_SET_TTY_PGRP (fd, &me); /* XXX This only works on the controlling tty. */
   setpgrp (0, me);
 }
 
 /* Set the tty to our original foreground group.  */
-void
-widen_foreground_group ()
+static void
+widen_foreground_group (int fd)
 {
   if (inherited_pgroup != getpid ())
-    EMACS_SET_TTY_PGRP (input_fd, &inherited_pgroup);
+    EMACS_SET_TTY_PGRP (fd, &inherited_pgroup);
   setpgrp (0, inherited_pgroup);
 }
 
@@ -1326,14 +1372,6 @@ emacs_set_tty (fd, settings, flushp)
 }
 
 \f
-/* The initial tty mode bits */
-struct emacs_tty old_tty;
-
-/* 1 if we have been through init_sys_modes.  */
-int term_initted;
-
-/* 1 if outer tty status has been recorded.  */
-int old_tty_valid;
 
 #ifdef BSD4_1
 /* BSD 4.1 needs to keep track of the lmode bits in order to start
@@ -1343,7 +1381,7 @@ int lmode;
 
 #ifndef F_SETOWN_BUG
 #ifdef F_SETOWN
-int old_fcntl_owner;
+int old_fcntl_owner[MAXDESC];
 #endif /* F_SETOWN */
 #endif /* F_SETOWN_BUG */
 
@@ -1368,8 +1406,22 @@ static struct ltchars new_ltchars = {-1,-1,-1,-1,-1,-1};
 static struct tchars new_tchars = {-1,-1,-1,-1,-1,-1};
 #endif
 
+/* Initialize the terminal mode on all tty devices that are currently
+   open. */
+
 void
-init_sys_modes ()
+init_all_sys_modes (void)
+{
+  struct tty_display_info *tty;
+  for (tty = tty_list; tty; tty = tty->next)
+    init_sys_modes (tty);
+}
+
+/* Initialize the terminal mode on the given tty device. */
+
+void
+init_sys_modes (tty_out)
+     struct tty_display_info *tty_out;
 {
   struct emacs_tty tty;
 
@@ -1385,6 +1437,9 @@ init_sys_modes ()
   if (noninteractive)
     return;
 
+  if (!tty_out->output)
+    return;                     /* The tty is suspended. */
+  
 #ifdef VMS
   if (!input_ef)
     input_ef = get_kbd_event_flag ();
@@ -1415,266 +1470,296 @@ init_sys_modes ()
 #ifndef VMS4_4
   sys_access_reinit ();
 #endif
-#endif /* not VMS */
+#endif /* VMS */
 
 #ifdef BSD_PGRPS
-  if (! read_socket_hook && EQ (Vwindow_system, Qnil))
-    narrow_foreground_group ();
+#if 0
+  /* read_socket_hook is not global anymore.  I think doing this
+     unconditionally will not cause any problems. */
+  if (! read_socket_hook && EQ (Vinitial_window_system, Qnil))
 #endif
-
-#ifdef HAVE_WINDOW_SYSTEM
-  /* Emacs' window system on MSDOG uses the `internal terminal' and therefore
-     needs the initialization code below.  */
-  if (!read_socket_hook && EQ (Vwindow_system, Qnil))
+    narrow_foreground_group (fileno (tty_out->input));
 #endif
-    {
-      EMACS_GET_TTY (input_fd, &old_tty);
 
-      old_tty_valid = 1;
+  if (! tty_out->old_tty)
+    tty_out->old_tty = (struct emacs_tty *) xmalloc (sizeof (struct emacs_tty));
+      
+  EMACS_GET_TTY (fileno (tty_out->input), tty_out->old_tty);
 
-      tty = old_tty;
+  tty = *tty_out->old_tty;
 
 #if defined (HAVE_TERMIO) || defined (HAVE_TERMIOS)
-      XSETINT (Vtty_erase_char, old_tty.main.c_cc[VERASE]);
+  XSETINT (Vtty_erase_char, tty.main.c_cc[VERASE]);
 
 #ifdef DGUX
-      /* This allows meta to be sent on 8th bit.  */
-      tty.main.c_iflag &= ~INPCK;      /* don't check input for parity */
+  /* This allows meta to be sent on 8th bit.  */
+  tty.main.c_iflag &= ~INPCK;  /* don't check input for parity */
 #endif
-      tty.main.c_iflag |= (IGNBRK);    /* Ignore break condition */
-      tty.main.c_iflag &= ~ICRNL;      /* Disable map of CR to NL on input */
+  tty.main.c_iflag |= (IGNBRK);        /* Ignore break condition */
+  tty.main.c_iflag &= ~ICRNL;  /* Disable map of CR to NL on input */
 #ifdef INLCR  /* I'm just being cautious,
                 since I can't check how widespread INLCR is--rms.  */
-      tty.main.c_iflag &= ~INLCR;      /* Disable map of NL to CR on input */
+  tty.main.c_iflag &= ~INLCR;  /* Disable map of NL to CR on input */
 #endif
 #ifdef ISTRIP
-      tty.main.c_iflag &= ~ISTRIP;     /* don't strip 8th bit on input */
+  tty.main.c_iflag &= ~ISTRIP; /* don't strip 8th bit on input */
 #endif
-      tty.main.c_lflag &= ~ECHO;       /* Disable echo */
-      tty.main.c_lflag &= ~ICANON;     /* Disable erase/kill processing */
+  tty.main.c_lflag &= ~ECHO;   /* Disable echo */
+  tty.main.c_lflag &= ~ICANON; /* Disable erase/kill processing */
 #ifdef IEXTEN
-      tty.main.c_lflag &= ~IEXTEN;     /* Disable other editing characters.  */
+  tty.main.c_lflag &= ~IEXTEN; /* Disable other editing characters.  */
 #endif
-      tty.main.c_lflag |= ISIG;        /* Enable signals */
-      if (flow_control)
-       {
-         tty.main.c_iflag |= IXON;     /* Enable start/stop output control */
+  tty.main.c_lflag |= ISIG;    /* Enable signals */
+  if (tty_out->flow_control)
+    {
+      tty.main.c_iflag |= IXON;        /* Enable start/stop output control */
 #ifdef IXANY
-         tty.main.c_iflag &= ~IXANY;
+      tty.main.c_iflag &= ~IXANY;
 #endif /* IXANY */
-       }
-      else
-       tty.main.c_iflag &= ~IXON;      /* Disable start/stop output control */
-      tty.main.c_oflag &= ~ONLCR;      /* Disable map of NL to CR-NL
-                                          on output */
-      tty.main.c_oflag &= ~TAB3;       /* Disable tab expansion */
+    }
+  else
+    tty.main.c_iflag &= ~IXON; /* Disable start/stop output control */
+  tty.main.c_oflag &= ~ONLCR;  /* Disable map of NL to CR-NL
+                                   on output */
+  tty.main.c_oflag &= ~TAB3;   /* Disable tab expansion */
 #ifdef CS8
-      if (meta_key)
-       {
-         tty.main.c_cflag |= CS8;      /* allow 8th bit on input */
-         tty.main.c_cflag &= ~PARENB;/* Don't check parity */
-       }
+  if (tty_out->meta_key)
+    {
+      tty.main.c_cflag |= CS8; /* allow 8th bit on input */
+      tty.main.c_cflag &= ~PARENB;/* Don't check parity */
+    }
 #endif
+  if (tty_out->input == stdin)
+    {
       tty.main.c_cc[VINTR] = quit_char;        /* C-g (usually) gives SIGINT */
       /* Set up C-g for both SIGQUIT and SIGINT.
-        We don't know which we will get, but we handle both alike
-        so which one it really gives us does not matter.  */
+         We don't know which we will get, but we handle both alike
+         so which one it really gives us does not matter.  */
       tty.main.c_cc[VQUIT] = quit_char;
-      tty.main.c_cc[VMIN] = 1; /* Input should wait for at least 1 char */
-      tty.main.c_cc[VTIME] = 0;        /* no matter how long that takes.  */
+    }
+  else
+    {
+      /* We normally don't get interrupt or quit signals from tty
+         devices other than our controlling terminal; therefore,
+         we must handle C-g as normal input.  Unfortunately, this
+         means that the interrupt and quit feature must be
+         disabled on secondary ttys, or we would not even see the
+         keypress.
+         
+         Note that even though emacsclient could have special code
+         to pass SIGINT to Emacs, we should _not_ enable
+         interrupt/quit keys for emacsclient frames.  This means
+         that we can't break out of loops in C code from a
+         secondary tty frame, but we can always decide what
+         display the C-g came from, which is more important from a
+         usability point of view.  (Consider the case when two
+         people work together using the same Emacs instance.)  */
+      tty.main.c_cc[VINTR] = CDISABLE;
+      tty.main.c_cc[VQUIT] = CDISABLE;
+    }
+  tty.main.c_cc[VMIN] = 1;     /* Input should wait for at least 1 char */
+  tty.main.c_cc[VTIME] = 0;    /* no matter how long that takes.  */
 #ifdef VSWTCH
-      tty.main.c_cc[VSWTCH] = CDISABLE;        /* Turn off shell layering use
+  tty.main.c_cc[VSWTCH] = CDISABLE;    /* Turn off shell layering use
                                           of C-z */
 #endif /* VSWTCH */
-
+  
 #if defined (mips) || defined (HAVE_TCATTR)
 #ifdef VSUSP
-      tty.main.c_cc[VSUSP] = CDISABLE; /* Turn off mips handling of C-z.  */
+  tty.main.c_cc[VSUSP] = CDISABLE;     /* Turn off mips handling of C-z.  */
 #endif /* VSUSP */
 #ifdef V_DSUSP
-      tty.main.c_cc[V_DSUSP] = CDISABLE; /* Turn off mips handling of C-y.  */
+  tty.main.c_cc[V_DSUSP] = CDISABLE; /* Turn off mips handling of C-y.  */
 #endif /* V_DSUSP */
 #ifdef VDSUSP /* Some systems have VDSUSP, some have V_DSUSP.  */
-      tty.main.c_cc[VDSUSP] = CDISABLE;
+  tty.main.c_cc[VDSUSP] = CDISABLE;
 #endif /* VDSUSP */
 #ifdef VLNEXT
-      tty.main.c_cc[VLNEXT] = CDISABLE;
+  tty.main.c_cc[VLNEXT] = CDISABLE;
 #endif /* VLNEXT */
 #ifdef VREPRINT
-      tty.main.c_cc[VREPRINT] = CDISABLE;
+  tty.main.c_cc[VREPRINT] = CDISABLE;
 #endif /* VREPRINT */
 #ifdef VWERASE
-      tty.main.c_cc[VWERASE] = CDISABLE;
+  tty.main.c_cc[VWERASE] = CDISABLE;
 #endif /* VWERASE */
 #ifdef VDISCARD
-      tty.main.c_cc[VDISCARD] = CDISABLE;
+  tty.main.c_cc[VDISCARD] = CDISABLE;
 #endif /* VDISCARD */
 
-      if (flow_control)
-       {
+  if (tty_out->flow_control)
+    {
 #ifdef VSTART
-         tty.main.c_cc[VSTART] = '\021';
+      tty.main.c_cc[VSTART] = '\021';
 #endif /* VSTART */
 #ifdef VSTOP
-         tty.main.c_cc[VSTOP] = '\023';
+      tty.main.c_cc[VSTOP] = '\023';
 #endif /* VSTOP */
-       }
-      else
-       {
+    }
+  else
+    {
 #ifdef VSTART
-         tty.main.c_cc[VSTART] = CDISABLE;
+      tty.main.c_cc[VSTART] = CDISABLE;
 #endif /* VSTART */
 #ifdef VSTOP
-         tty.main.c_cc[VSTOP] = CDISABLE;
+      tty.main.c_cc[VSTOP] = CDISABLE;
 #endif /* VSTOP */
-       }
+    }
 #endif /* mips or HAVE_TCATTR */
 
 #ifdef SET_LINE_DISCIPLINE
-      /* Need to explicitly request TERMIODISC line discipline or
-         Ultrix's termios does not work correctly.  */
-      tty.main.c_line = SET_LINE_DISCIPLINE;
+  /* Need to explicitly request TERMIODISC line discipline or
+     Ultrix's termios does not work correctly.  */
+  tty.main.c_line = SET_LINE_DISCIPLINE;
 #endif
 #ifdef AIX
 #ifndef IBMR2AIX
-      /* AIX enhanced edit loses NULs, so disable it.  */
-      tty.main.c_line = 0;
-      tty.main.c_iflag &= ~ASCEDIT;
+  /* AIX enhanced edit loses NULs, so disable it.  */
+  tty.main.c_line = 0;
+  tty.main.c_iflag &= ~ASCEDIT;
 #else
-      tty.main.c_cc[VSTRT] = CDISABLE;
-      tty.main.c_cc[VSTOP] = CDISABLE;
-      tty.main.c_cc[VSUSP] = CDISABLE;
-      tty.main.c_cc[VDSUSP] = CDISABLE;
+  tty.main.c_cc[VSTRT] = CDISABLE;
+  tty.main.c_cc[VSTOP] = CDISABLE;
+  tty.main.c_cc[VSUSP] = CDISABLE;
+  tty.main.c_cc[VDSUSP] = CDISABLE;
 #endif /* IBMR2AIX */
-      if (flow_control)
-       {
+  if (tty_out->flow_control)
+    {
 #ifdef VSTART
-         tty.main.c_cc[VSTART] = '\021';
+      tty.main.c_cc[VSTART] = '\021';
 #endif /* VSTART */
 #ifdef VSTOP
-         tty.main.c_cc[VSTOP] = '\023';
+      tty.main.c_cc[VSTOP] = '\023';
 #endif /* VSTOP */
-       }
-      /* Also, PTY overloads NUL and BREAK.
-        don't ignore break, but don't signal either, so it looks like NUL.
-        This really serves a purpose only if running in an XTERM window
-        or via TELNET or the like, but does no harm elsewhere.  */
-      tty.main.c_iflag &= ~IGNBRK;
-      tty.main.c_iflag &= ~BRKINT;
+    }
+  /* Also, PTY overloads NUL and BREAK.
+     don't ignore break, but don't signal either, so it looks like NUL.
+     This really serves a purpose only if running in an XTERM window
+     or via TELNET or the like, but does no harm elsewhere.  */
+  tty.main.c_iflag &= ~IGNBRK;
+  tty.main.c_iflag &= ~BRKINT;
 #endif
 #else /* if not HAVE_TERMIO */
 #ifdef VMS
-      tty.main.tt_char |= TT$M_NOECHO;
-      if (meta_key)
-       tty.main.tt_char |= TT$M_EIGHTBIT;
-      if (flow_control)
-       tty.main.tt_char |= TT$M_TTSYNC;
-      else
-       tty.main.tt_char &= ~TT$M_TTSYNC;
-      tty.main.tt2_char |= TT2$M_PASTHRU | TT2$M_XON;
+  tty.main.tt_char |= TT$M_NOECHO;
+  if (meta_key)
+    tty.main.tt_char |= TT$M_EIGHTBIT;
+  if (tty_out->flow_control)
+    tty.main.tt_char |= TT$M_TTSYNC;
+  else
+    tty.main.tt_char &= ~TT$M_TTSYNC;
+  tty.main.tt2_char |= TT2$M_PASTHRU | TT2$M_XON;
 #else /* not VMS (BSD, that is) */
 #ifndef DOS_NT
-      XSETINT (Vtty_erase_char, tty.main.sg_erase);
-      tty.main.sg_flags &= ~(ECHO | CRMOD | XTABS);
-      if (meta_key)
-       tty.main.sg_flags |= ANYP;
-      tty.main.sg_flags |= interrupt_input ? RAW : CBREAK;
+  XSETINT (Vtty_erase_char, tty.main.sg_erase);
+  tty.main.sg_flags &= ~(ECHO | CRMOD | XTABS);
+  if (meta_key)
+    tty.main.sg_flags |= ANYP;
+  tty.main.sg_flags |= interrupt_input ? RAW : CBREAK;
 #endif /* not DOS_NT */
 #endif /* not VMS (BSD, that is) */
 #endif /* not HAVE_TERMIO */
 
-      /* If going to use CBREAK mode, we must request C-g to interrupt
-        and turn off start and stop chars, etc.  If not going to use
-        CBREAK mode, do this anyway so as to turn off local flow
-        control for user coming over network on 4.2; in this case,
-        only t_stopc and t_startc really matter.  */
+  /* If going to use CBREAK mode, we must request C-g to interrupt
+     and turn off start and stop chars, etc.  If not going to use
+     CBREAK mode, do this anyway so as to turn off local flow
+     control for user coming over network on 4.2; in this case,
+     only t_stopc and t_startc really matter.  */
 #ifndef HAVE_TERMIO
 #ifdef HAVE_TCHARS
-      /* Note: if not using CBREAK mode, it makes no difference how we
-        set this */
-      tty.tchars = new_tchars;
-      tty.tchars.t_intrc = quit_char;
-      if (flow_control)
-       {
-         tty.tchars.t_startc = '\021';
-         tty.tchars.t_stopc = '\023';
-       }
-
-      tty.lmode = LDECCTQ | LLITOUT | LPASS8 | LNOFLSH | old_tty.lmode;
+  /* Note: if not using CBREAK mode, it makes no difference how we
+     set this */
+  tty.tchars = new_tchars;
+  tty.tchars.t_intrc = quit_char;
+  if (tty_out->flow_control)
+    {
+      tty.tchars.t_startc = '\021';
+      tty.tchars.t_stopc = '\023';
+    }
+  
+  tty.lmode = LDECCTQ | LLITOUT | LPASS8 | LNOFLSH | tty_out->old_tty.lmode;
 #ifdef ultrix
-      /* Under Ultrix 4.2a, leaving this out doesn't seem to hurt
-        anything, and leaving it in breaks the meta key.  Go figure.  */
-      tty.lmode &= ~LLITOUT;
+  /* Under Ultrix 4.2a, leaving this out doesn't seem to hurt
+     anything, and leaving it in breaks the meta key.  Go figure.  */
+  tty.lmode &= ~LLITOUT;
 #endif
-
+  
 #ifdef BSD4_1
-      lmode = tty.lmode;
+  lmode = tty.lmode;
 #endif
 
 #endif /* HAVE_TCHARS */
 #endif /* not HAVE_TERMIO */
 
 #ifdef HAVE_LTCHARS
-      tty.ltchars = new_ltchars;
+  tty.ltchars = new_ltchars;
 #endif /* HAVE_LTCHARS */
 #ifdef MSDOS   /* Demacs 1.1.2 91/10/20 Manabu Higashida, MW Aug 1993 */
-      if (!term_initted)
-       internal_terminal_init ();
-      dos_ttraw ();
+  if (!tty_out->term_initted)
+    internal_terminal_init ();
+  dos_ttraw ();
 #endif
 
-      EMACS_SET_TTY (input_fd, &tty, 0);
+  EMACS_SET_TTY (fileno (tty_out->input), &tty, 0);
 
-      /* This code added to insure that, if flow-control is not to be used,
-        we have an unlocked terminal at the start. */
+  /* This code added to insure that, if flow-control is not to be used,
+     we have an unlocked terminal at the start. */
 
 #ifdef TCXONC
-      if (!flow_control) ioctl (input_fd, TCXONC, 1);
+  if (!tty_out->flow_control) ioctl (fileno (tty_out->input), TCXONC, 1);
 #endif
 #ifndef APOLLO
 #ifdef TIOCSTART
-      if (!flow_control) ioctl (input_fd, TIOCSTART, 0);
+  if (!tty_out->flow_control) ioctl (fileno (tty_out->input), TIOCSTART, 0);
 #endif
 #endif
 
 #if defined (HAVE_TERMIOS) || defined (HPUX9)
 #ifdef TCOON
-      if (!flow_control) tcflow (input_fd, TCOON);
+  if (!tty_out->flow_control) tcflow (fileno (tty_out->input), TCOON);
 #endif
 #endif
 
 #ifdef AIXHFT
-      hft_init ();
+  hft_init (tty_out);
 #ifdef IBMR2AIX
-      {
-       /* IBM's HFT device usually thinks a ^J should be LF/CR.  We need it
-          to be only LF.  This is the way that is done. */
-       struct termio tty;
-
-       if (ioctl (1, HFTGETID, &tty) != -1)
-         write (1, "\033[20l", 5);
-      }
+  {
+    /* IBM's HFT device usually thinks a ^J should be LF/CR.  We need it
+       to be only LF.  This is the way that is done. */
+    struct termio tty;
+    
+    if (ioctl (1, HFTGETID, &tty) != -1)
+      write (1, "\033[20l", 5);
+  }
 #endif
 #endif /* AIXHFT */
 
 #ifdef VMS
 /*  Appears to do nothing when in PASTHRU mode.
-      SYS$QIOW (0, input_fd, IO$_SETMODE|IO$M_OUTBAND, 0, 0, 0,
+      SYS$QIOW (0, fileno (tty_out->input), IO$_SETMODE|IO$M_OUTBAND, 0, 0, 0,
                interrupt_signal, oob_chars, 0, 0, 0, 0);
 */
-      queue_kbd_input (0);
+  queue_kbd_input (0);
 #endif /* VMS */
-    }
 
 #ifdef F_SETFL
 #ifndef F_SETOWN_BUG
 #ifdef F_GETOWN                /* F_SETFL does not imply existence of F_GETOWN */
-  if (interrupt_input
-      && ! read_socket_hook && EQ (Vwindow_system, Qnil))
+  if (interrupt_input)
     {
-      old_fcntl_owner = fcntl (input_fd, F_GETOWN, 0);
-      fcntl (input_fd, F_SETOWN, getpid ());
-      init_sigio (input_fd);
+      old_fcntl_owner[fileno (tty_out->input)] =
+        fcntl (fileno (tty_out->input), F_GETOWN, 0);
+      fcntl (fileno (tty_out->input), F_SETOWN, getpid ());
+      init_sigio (fileno (tty_out->input));
+#ifdef HAVE_GPM
+      if (gpm_tty == tty_out)
+       {
+         /* Arrange for mouse events to give us SIGIO signals.  */
+         fcntl (gpm_fd, F_SETOWN, getpid ());
+         fcntl (gpm_fd, F_SETFL, fcntl (gpm_fd, F_GETFL, 0) | O_NONBLOCK);
+         init_sigio (gpm_fd);
+       }
+#endif /* HAVE_GPM */
     }
 #endif /* F_GETOWN */
 #endif /* F_SETOWN_BUG */
@@ -1682,7 +1767,7 @@ init_sys_modes ()
 
 #ifdef BSD4_1
   if (interrupt_input)
-    init_sigio (input_fd);
+    init_sigio (fileno (tty_out->input));
 #endif
 
 #ifdef VMS  /* VMS sometimes has this symbol but lacks setvbuf.  */
@@ -1692,53 +1777,57 @@ init_sys_modes ()
   /* This symbol is defined on recent USG systems.
      Someone says without this call USG won't really buffer the file
      even with a call to setbuf. */
-  setvbuf (stdout, (char *) _sobuf, _IOFBF, sizeof _sobuf);
+  setvbuf (tty_out->output, (char *) _sobuf, _IOFBF, sizeof _sobuf);
 #else
-  setbuf (stdout, (char *) _sobuf);
+  setbuf (tty_out->output, (char *) _sobuf);
 #endif
-#ifdef HAVE_WINDOW_SYSTEM
-  /* Emacs' window system on MSDOG uses the `internal terminal' and therefore
-     needs the initialization code below.  */
-  if (EQ (Vwindow_system, Qnil)
-#ifndef WINDOWSNT
-      /* When running in tty mode on NT/Win95, we have a read_socket
-        hook, but still need the rest of the initialization code below.  */
-      && (! read_socket_hook)
-#endif
-      )
-#endif
-    set_terminal_modes ();
 
-  if (!term_initted
-      && FRAMEP (Vterminal_frame)
-      && FRAME_TERMCAP_P (XFRAME (Vterminal_frame)))
-    init_frame_faces (XFRAME (Vterminal_frame));
+  if (tty_out->terminal->set_terminal_modes_hook)
+    tty_out->terminal->set_terminal_modes_hook (tty_out->terminal);
 
-  if (term_initted && no_redraw_on_reenter)
+  if (!tty_out->term_initted)
     {
+      Lisp_Object tail, frame;
+      FOR_EACH_FRAME (tail, frame)
+        {
+          /* XXX This needs to be revised. */
+          if (FRAME_TERMCAP_P (XFRAME (frame))
+              && FRAME_TTY (XFRAME (frame)) == tty_out)
+            init_frame_faces (XFRAME (frame));
+        }
+    }
+
+  if (tty_out->term_initted && no_redraw_on_reenter)
+    {
+      /* XXX This seems wrong on multi-tty. */
       if (display_completed)
        direct_output_forward_char (0);
     }
   else
     {
+      Lisp_Object tail, frame;
       frame_garbaged = 1;
-      if (FRAMEP (Vterminal_frame))
-       FRAME_GARBAGED_P (XFRAME (Vterminal_frame)) = 1;
+      FOR_EACH_FRAME (tail, frame)
+        {
+          if (FRAME_TERMCAP_P (XFRAME (frame))
+              && FRAME_TTY (XFRAME (frame)) == tty_out)
+            FRAME_GARBAGED_P (XFRAME (frame)) = 1;
+        }
     }
 
-  term_initted = 1;
+  tty_out->term_initted = 1;
 }
 
 /* Return nonzero if safe to use tabs in output.
    At the time this is called, init_sys_modes has not been done yet.  */
 
 int
-tabs_safe_p ()
+tabs_safe_p (int fd)
 {
-  struct emacs_tty tty;
+  struct emacs_tty etty;
 
-  EMACS_GET_TTY (input_fd, &tty);
-  return EMACS_TTY_TABS_OK (&tty);
+  EMACS_GET_TTY (fd, &etty);
+  return EMACS_TTY_TABS_OK (&etty);
 }
 \f
 /* Get terminal size from system.
@@ -1746,8 +1835,7 @@ tabs_safe_p ()
    We store 0 if there's no valid information.  */
 
 void
-get_frame_size (widthp, heightp)
-     int *widthp, *heightp;
+get_tty_size (int fd, int *widthp, int *heightp)
 {
 
 #ifdef TIOCGWINSZ
@@ -1755,7 +1843,7 @@ get_frame_size (widthp, heightp)
   /* BSD-style.  */
   struct winsize size;
 
-  if (ioctl (input_fd, TIOCGWINSZ, &size) == -1)
+  if (ioctl (fd, TIOCGWINSZ, &size) == -1)
     *widthp = *heightp = 0;
   else
     {
@@ -1769,7 +1857,7 @@ get_frame_size (widthp, heightp)
   /* SunOS - style.  */
   struct ttysize size;
 
-  if (ioctl (input_fd, TIOCGSIZE, &size) == -1)
+  if (ioctl (fd, TIOCGSIZE, &size) == -1)
     *widthp = *heightp = 0;
   else
     {
@@ -1801,7 +1889,6 @@ get_frame_size (widthp, heightp)
   *widthp = 0;
   *heightp = 0;
 #endif
-
 #endif /* not VMS */
 #endif /* not SunOS-style */
 #endif /* not BSD-style */
@@ -1845,37 +1932,58 @@ set_window_size (fd, height, width)
 }
 
 \f
-/* Prepare the terminal for exiting Emacs; move the cursor to the
-   bottom of the frame, turn off interrupt-driven I/O, etc.  */
+
+/* Prepare all terminal devices for exiting Emacs. */
+
 void
-reset_sys_modes ()
+reset_all_sys_modes (void)
 {
-  struct frame *sf;
+  struct tty_display_info *tty;
+  for (tty = tty_list; tty; tty = tty->next)
+    reset_sys_modes (tty);
+}
+
+/* Prepare the terminal for closing it; move the cursor to the
+   bottom of the frame, turn off interrupt-driven I/O, etc.  */
 
+void
+reset_sys_modes (tty_out)
+     struct tty_display_info *tty_out;
+{
   if (noninteractive)
     {
       fflush (stdout);
       return;
     }
-  if (!term_initted)
+  if (!tty_out->term_initted)
     return;
-#ifdef HAVE_WINDOW_SYSTEM
-  /* Emacs' window system on MSDOG uses the `internal terminal' and therefore
-     needs the clean-up code below.  */
-  if (!EQ (Vwindow_system, Qnil)
-#ifndef WINDOWSNT
-      /* When running in tty mode on NT/Win95, we have a read_socket
-        hook, but still need the rest of the clean-up code below.  */
-      || read_socket_hook
-#endif
-      )
-    return;
-#endif
-  sf = SELECTED_FRAME ();
-  cursor_to (FRAME_LINES (sf) - 1, 0);
-  clear_end_of_line (FRAME_COLS (sf));
-  /* clear_end_of_line may move the cursor */
-  cursor_to (FRAME_LINES (sf) - 1, 0);
+
+  if (!tty_out->output)
+    return;                     /* The tty is suspended. */
+  
+  /* Go to and clear the last line of the terminal. */
+
+  cmgoto (tty_out, FrameRows (tty_out) - 1, 0);
+  
+  /* Code adapted from tty_clear_end_of_line. */
+  if (tty_out->TS_clr_line)
+    {
+      emacs_tputs (tty_out, tty_out->TS_clr_line, 1, cmputc);
+    }
+  else
+    {                  /* have to do it the hard way */
+      int i;
+      tty_turn_off_insert (tty_out);
+      
+      for (i = curX (tty_out); i < FrameCols (tty_out) - 1; i++)
+        {
+          fputc (' ', tty_out->output);
+        }
+    }
+  
+  cmgoto (tty_out, FrameRows (tty_out) - 1, 0);
+  fflush (tty_out->output);
+  
 #if defined (IBMR2AIX) && defined (AIXHFT)
   {
     /* HFT devices normally use ^J as a LF/CR.  We forced it to
@@ -1887,12 +1995,13 @@ reset_sys_modes ()
   }
 #endif
 
-  reset_terminal_modes ();
-  fflush (stdout);
+  if (tty_out->terminal->reset_terminal_modes_hook)
+    tty_out->terminal->reset_terminal_modes_hook (tty_out->terminal);
+
 #ifdef BSD_SYSTEM
 #ifndef BSD4_1
   /* Avoid possible loss of output when changing terminal modes.  */
-  fsync (fileno (stdout));
+  fsync (fileno (tty_out->output));
 #endif
 #endif
 
@@ -1901,22 +2010,25 @@ reset_sys_modes ()
 #ifdef F_SETOWN                /* F_SETFL does not imply existence of F_SETOWN */
   if (interrupt_input)
     {
-      reset_sigio ();
-      fcntl (input_fd, F_SETOWN, old_fcntl_owner);
+      reset_sigio (fileno (tty_out->input));
+      fcntl (fileno (tty_out->input), F_SETOWN,
+             old_fcntl_owner[fileno (tty_out->input)]);
     }
 #endif /* F_SETOWN */
 #endif /* F_SETOWN_BUG */
 #ifdef O_NDELAY
-  fcntl (input_fd, F_SETFL, fcntl (input_fd, F_GETFL, 0) & ~O_NDELAY);
+  fcntl (fileno (tty_out->input), F_SETFL,
+         fcntl (fileno (tty_out->input), F_GETFL, 0) & ~O_NDELAY);
 #endif
 #endif /* F_SETFL */
 #ifdef BSD4_1
   if (interrupt_input)
-    reset_sigio ();
+    reset_sigio (fileno (tty_out->input));
 #endif /* BSD4_1 */
 
-  if (old_tty_valid)
-    while (EMACS_SET_TTY (input_fd, &old_tty, 0) < 0 && errno == EINTR)
+  if (tty_out->old_tty)
+    while (EMACS_SET_TTY (fileno (tty_out->input),
+                          tty_out->old_tty, 0) < 0 && errno == EINTR)
       ;
 
 #ifdef MSDOS   /* Demacs 1.1.2 91/10/20 Manabu Higashida */
@@ -1927,7 +2039,7 @@ reset_sys_modes ()
   /* Ultrix's termios *ignores* any line discipline except TERMIODISC.
      A different old line discipline is therefore not restored, yet.
      Restore the old line discipline by hand.  */
-  ioctl (0, TIOCSETD, &old_tty.main.c_line);
+  ioctl (0, TIOCSETD, &tty_out->old_tty.main.c_line);
 #endif
 
 #ifdef AIXHFT
@@ -1935,7 +2047,7 @@ reset_sys_modes ()
 #endif
 
 #ifdef BSD_PGRPS
-  widen_foreground_group ();
+  widen_foreground_group (fileno (tty_out->input));
 #endif
 }
 \f
@@ -2000,9 +2112,9 @@ init_vms_input ()
 {
   int status;
 
-  if (input_fd == 0)
+  if (fileno (CURTTY ()->input)) == 0)
     {
-      status = SYS$ASSIGN (&input_dsc, &input_fd, 0, 0);
+      status = SYS$ASSIGN (&input_dsc, &fileno (CURTTY ()->input)), 0, 0);
       if (! (status & 1))
        LIB$STOP (status);
     }
@@ -2013,7 +2125,7 @@ init_vms_input ()
 void
 stop_vms_input ()
 {
-  return SYS$DASSGN (input_fd);
+  return SYS$DASSGN (fileno (CURTTY ()->input)));
 }
 
 short input_buffer;
@@ -2029,7 +2141,7 @@ queue_kbd_input ()
 
   waiting_for_ast = 0;
   stop_input = 0;
-  status = SYS$QIO (0, input_fd, IO$_READVBLK,
+  status = SYS$QIO (0, fileno (CURTTY()->input), IO$_READVBLK,
                    &input_iosb, kbd_input_ast, 1,
                    &input_buffer, 1, 0, terminator_mask, 0, 0);
 }
@@ -2146,7 +2258,7 @@ end_kbd_input ()
 #endif
   if (LIB$AST_IN_PROG ())  /* Don't wait if suspending from kbd_buffer_store_event! */
     {
-      SYS$CANCEL (input_fd);
+      SYS$CANCEL (fileno (CURTTY()->input));
       return;
     }
 
@@ -2155,7 +2267,7 @@ end_kbd_input ()
   SYS$CLREF (input_ef);
   waiting_for_ast = 1;
   stop_input = 1;
-  SYS$CANCEL (input_fd);
+  SYS$CANCEL (fileno (CURTTY()->input));
   SYS$SETAST (1);
   SYS$WAITFR (input_ef);
   waiting_for_ast = 0;
@@ -2217,7 +2329,8 @@ init_sigio (fd)
   request_sigio ();
 }
 
-reset_sigio ()
+reset_sigio (fd)
+     int fd;
 {
   unrequest_sigio ();
 }
@@ -2559,7 +2672,9 @@ sys_select (nfds, rfds, wfds, efds, timeout)
      SELECT_TYPE *rfds, *wfds, *efds;
      EMACS_TIME *timeout;
 {
-  int ravail = 0;
+  /* XXX This needs to be updated for multi-tty support.  Is there
+     anybody who needs to emulate select these days?  */ 
+ int ravail = 0;
   SELECT_TYPE orfds;
   int timeoutval;
   int *local_timeout;
@@ -2574,7 +2689,7 @@ sys_select (nfds, rfds, wfds, efds, timeout)
 #if defined (HAVE_SELECT) && defined (HAVE_X_WINDOWS)
   /* If we're using X, then the native select will work; we only need the
      emulation for non-X usage.  */
-  if (!NILP (Vwindow_system))
+  if (!NILP (Vinitial_window_system))
     return select (nfds, rfds, wfds, efds, timeout);
 #endif
   timeoutval = timeout ? EMACS_SECS (*timeout) : 100000;
@@ -2691,6 +2806,8 @@ sys_select (nfds, rfds, wfds, efds, timeout)
 void
 read_input_waiting ()
 {
+  /* XXX This needs to be updated for multi-tty support.  Is there
+     anybody who needs to emulate select these days?  */
   int nread, i;
   extern int quit_char;
 
@@ -2744,6 +2861,10 @@ read_input_waiting ()
     }
 }
 
+#if !defined (HAVE_SELECT) || defined (BROKEN_SELECT_NON_X)
+#define select sys_select
+#endif
+
 #endif /* not HAVE_SELECT */
 #endif /* not VMS */
 #endif /* not MSDOS */
@@ -2760,12 +2881,13 @@ init_sigio (fd)
 }
 
 void
-reset_sigio ()
+reset_sigio (fd)
+     int fd;
 {
   if (noninteractive)
     return;
   lmode = ~LINTRUP & lmode;
-  ioctl (0, TIOCLSET, &lmode);
+  ioctl (fd, TIOCLSET, &lmode);
 }
 
 void
@@ -3221,7 +3343,7 @@ sys_getenv (name)
 #undef abort
 sys_abort ()
 {
-  reset_sys_modes ();
+  reset_all_sys_modes ();
   LIB$SIGNAL (SS$_DEBUG);
 }
 #endif /* abort */
@@ -3548,7 +3670,7 @@ croak (badfunc)
      char *badfunc;
 {
   printf ("%s not yet implemented\r\n", badfunc);
-  reset_sys_modes ();
+  reset_all_sys_modes ();
   exit (1);
 }
 
@@ -5135,7 +5257,7 @@ croak (badfunc)
      char *badfunc;
 {
   printf ("%s not yet implemented\r\n", badfunc);
-  reset_sys_modes ();
+  reset_all_sys_modes ();
   exit (1);
 }
 
@@ -5157,7 +5279,7 @@ srandom (seed)
 
 /* Called from init_sys_modes.  */
 void
-hft_init ()
+hft_init (struct tty_display_info *tty_out)
 {
   int junk;
 
@@ -5203,15 +5325,12 @@ hft_init ()
     keymap.hfkey[1].hf_char = 127;
     hftctl (0, HFSKBD, &buf);
   }
-  /* The HFT system on AIX doesn't optimize for scrolling, so it's really ugly
-     at times.  */
-  line_ins_del_ok = char_ins_del_ok = 0;
 }
 
 /* Reset the rubout key to backspace.  */
 
 void
-hft_reset ()
+hft_reset (struct tty_display_info *tty_out)
 {
   struct hfbuf buf;
   struct hfkeymap keymap;
index b52e2dd4b95b6e88d9235c4e3e14bce6bbef787c..72ac1ed7f62ab3df54eb1b8b36af7c227f1ffb68 100644 (file)
@@ -33,6 +33,7 @@ extern pthread_t main_thread;
    indicate that SIGIO doesn't work by #undef-ing SIGIO.  If this file
    #includes <signal.h>, then that will re-#define SIGIO and confuse
    things.  */
+/* XXX This is not correct anymore, there is a BROKEN_SIGIO macro. */
 
 #define SIGMASKTYPE sigset_t
 
index d829332f55c7b490c35b6050384b87e1d24c0873..b97e77b2320771814853082d27e75701759facfd 100644 (file)
@@ -25,10 +25,22 @@ Boston, MA 02110-1301, USA.  */
 #include <stdio.h>
 #include <ctype.h>
 #include <string.h>
+#include <errno.h>
+#include <sys/file.h>
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#if HAVE_TERMIOS_H
+#include <termios.h>           /* For TIOCNOTTY. */
+#endif
+
+#include <signal.h>
+
+#include "lisp.h"
 #include "termchar.h"
 #include "termopts.h"
-#include "lisp.h"
 #include "charset.h"
 #include "coding.h"
 #include "keyboard.h"
@@ -39,6 +51,9 @@ Boston, MA 02110-1301, USA.  */
 #include "window.h"
 #include "keymap.h"
 #include "blockinput.h"
+#include "syssignal.h"
+#include "systty.h"
+#include "intervals.h"
 
 /* For now, don't try to include termcap.h.  On some systems,
    configure finds a non-standard termcap.h that the main build
@@ -61,239 +76,74 @@ extern int tgetnum P_ ((char *id));
 #include "macterm.h"
 #endif
 
-static void turn_on_face P_ ((struct frame *, int face_id));
-static void turn_off_face P_ ((struct frame *, int face_id));
-static void tty_show_cursor P_ ((void));
-static void tty_hide_cursor P_ ((void));
-
-#define OUTPUT(a) \
-     tputs (a, (int) (FRAME_LINES (XFRAME (selected_frame)) - curY), cmputc)
-#define OUTPUT1(a) tputs (a, 1, cmputc)
-#define OUTPUTL(a, lines) tputs (a, lines, cmputc)
-
-#define OUTPUT_IF(a)                                                   \
-     do {                                                              \
-       if (a)                                                          \
-         tputs (a, (int) (FRAME_LINES (XFRAME (selected_frame))        \
-                         - curY), cmputc);                             \
-     } while (0)
-
-#define OUTPUT1_IF(a) do { if (a) tputs (a, 1, cmputc); } while (0)
-
-/* Display space properties */
+#ifndef O_RDWR
+#define O_RDWR 2
+#endif
 
-extern Lisp_Object Qspace, QCalign_to, QCwidth;
+#ifndef O_NOCTTY
+#define O_NOCTTY 0
+#endif
 
-/* Function to use to ring the bell.  */
+/* The name of the default console device.  */
+#ifdef WINDOWSNT
+#define DEV_TTY  "CONOUT$"
+#else
+#define DEV_TTY  "/dev/tty"
+#endif
 
-Lisp_Object Vring_bell_function;
+static void tty_set_scroll_region P_ ((struct frame *f, int start, int stop));
+static void turn_on_face P_ ((struct frame *, int face_id));
+static void turn_off_face P_ ((struct frame *, int face_id));
+static void tty_show_cursor P_ ((struct tty_display_info *));
+static void tty_hide_cursor P_ ((struct tty_display_info *));
+static void tty_background_highlight P_ ((struct tty_display_info *tty));
+static void clear_tty_hooks P_ ((struct terminal *terminal));
+static void set_tty_hooks P_ ((struct terminal *terminal));
+static void dissociate_if_controlling_tty P_ ((int fd));
+static void delete_tty P_ ((struct terminal *));
+
+#define OUTPUT(tty, a)                                          \
+  emacs_tputs ((tty), a,                                        \
+               (int) (FRAME_LINES (XFRAME (selected_frame))     \
+                      - curY (tty)),                            \
+               cmputc)
+
+#define OUTPUT1(tty, a) emacs_tputs ((tty), a, 1, cmputc)
+#define OUTPUTL(tty, a, lines) emacs_tputs ((tty), a, lines, cmputc)
+
+#define OUTPUT_IF(tty, a)                                               \
+  do {                                                                  \
+    if (a)                                                              \
+      emacs_tputs ((tty), a,                                            \
+                   (int) (FRAME_LINES (XFRAME (selected_frame))         \
+                          - curY (tty) ),                               \
+                   cmputc);                                             \
+  } while (0)
+
+#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;
 
-/* Terminal characteristics that higher levels want to look at.
-   These are all extern'd in termchar.h */
-
-int must_write_spaces;         /* Nonzero means spaces in the text
-                                  must actually be output; can't just skip
-                                  over some columns to leave them blank.  */
-int min_padding_speed;         /* Speed below which no padding necessary */
-
-int line_ins_del_ok;           /* Terminal can insert and delete lines */
-int char_ins_del_ok;           /* Terminal can insert and delete chars */
-int scroll_region_ok;          /* Terminal supports setting the
-                                  scroll window */
-int scroll_region_cost;                /* Cost of setting a scroll window,
-                                  measured in characters */
-int memory_below_frame;                /* Terminal remembers lines
-                                  scrolled off bottom */
-int fast_clear_end_of_line;    /* Terminal has a `ce' string */
-
-/* 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;
-
-/* Hook functions that you can set to snap out the functions in this file.
-   These are all extern'd in termhooks.h  */
-
-void (*cursor_to_hook) P_ ((int, int));
-void (*raw_cursor_to_hook) P_ ((int, int));
-void (*clear_to_end_hook) P_ ((void));
-void (*clear_frame_hook) P_ ((void));
-void (*clear_end_of_line_hook) P_ ((int));
-
-void (*ins_del_lines_hook) P_ ((int, int));
-
-void (*delete_glyphs_hook) P_ ((int));
-
-void (*ring_bell_hook) P_ ((void));
-
-void (*reset_terminal_modes_hook) P_ ((void));
-void (*set_terminal_modes_hook) P_ ((void));
-void (*update_begin_hook) P_ ((struct frame *));
-void (*update_end_hook) P_ ((struct frame *));
-void (*set_terminal_window_hook) P_ ((int));
-void (*insert_glyphs_hook) P_ ((struct glyph *, int));
-void (*write_glyphs_hook) P_ ((struct glyph *, int));
-void (*delete_glyphs_hook) P_ ((int));
-
-int (*read_socket_hook) P_ ((int, int, struct input_event *));
-
-void (*frame_up_to_date_hook) P_ ((struct frame *));
-
-/* Return the current position of the mouse.
-
-   Set *f to the frame the mouse is in, or zero if the mouse is in no
-   Emacs frame.  If it is set to zero, all the other arguments are
-   garbage.
+/* Display space properties */
 
-   If the motion started in a scroll bar, set *bar_window to the
-   scroll bar's window, *part to the part the mouse is currently over,
-   *x to the position of the mouse along the scroll bar, and *y to the
-   overall length of the scroll bar.
+extern Lisp_Object Qspace, QCalign_to, QCwidth;
 
-   Otherwise, set *bar_window to Qnil, and *x and *y to the column and
-   row of the character cell the mouse is over.
+/* Functions to call after suspending a tty. */
+Lisp_Object Vsuspend_tty_functions;
 
-   Set *time to the time the mouse was at the returned position.
+/* Functions to call after resuming a tty. */
+Lisp_Object Vresume_tty_functions;
 
-   This should clear mouse_moved until the next motion
-   event arrives.  */
+/* Chain of all tty device parameters. */
+struct tty_display_info *tty_list;
 
-void (*mouse_position_hook) P_ ((FRAME_PTR *f, int insist,
-                                Lisp_Object *bar_window,
-                                enum scroll_bar_part *part,
-                                Lisp_Object *x,
-                                Lisp_Object *y,
-                                unsigned long *time));
-
-/* When reading from a minibuffer in a different frame, Emacs wants
-   to shift the highlight from the selected frame to the mini-buffer's
-   frame; under X, this means it lies about where the focus is.
-   This hook tells the window system code to re-decide where to put
-   the highlight.  */
-
-void (*frame_rehighlight_hook) P_ ((FRAME_PTR f));
-
-/* If we're displaying frames using a window system that can stack
-   frames on top of each other, this hook allows you to bring a frame
-   to the front, or bury it behind all the other windows.  If this
-   hook is zero, that means the device we're displaying on doesn't
-   support overlapping frames, so there's no need to raise or lower
-   anything.
-
-   If RAISE is non-zero, F is brought to the front, before all other
-   windows.  If RAISE is zero, F is sent to the back, behind all other
-   windows.  */
-
-void (*frame_raise_lower_hook) P_ ((FRAME_PTR f, int raise));
-
-/* If the value of the frame parameter changed, whis hook is called.
-   For example, if going from fullscreen to not fullscreen this hook
-   may do something OS dependent, like extended window manager hints on X11.  */
-void (*fullscreen_hook) P_ ((struct frame *f));
-
-/* Set the vertical scroll bar for WINDOW to have its upper left corner
-   at (TOP, LEFT), and be LENGTH rows high.  Set its handle to
-   indicate that we are displaying PORTION characters out of a total
-   of WHOLE characters, starting at POSITION.  If WINDOW doesn't yet
-   have a scroll bar, create one for it.  */
-
-void (*set_vertical_scroll_bar_hook)
-     P_ ((struct window *window,
-         int portion, int whole, int position));
-
-
-/* The following three hooks are used when we're doing a thorough
-   redisplay of the frame.  We don't explicitly know which scroll bars
-   are going to be deleted, because keeping track of when windows go
-   away is a real pain - can you say set-window-configuration?
-   Instead, we just assert at the beginning of redisplay that *all*
-   scroll bars are to be removed, and then save scroll bars from the
-   fiery pit when we actually redisplay their window.  */
-
-/* Arrange for all scroll bars on FRAME to be removed at the next call
-   to `*judge_scroll_bars_hook'.  A scroll bar may be spared if
-   `*redeem_scroll_bar_hook' is applied to its window before the judgment.
-
-   This should be applied to each frame each time its window tree is
-   redisplayed, even if it is not displaying scroll bars at the moment;
-   if the HAS_SCROLL_BARS flag has just been turned off, only calling
-   this and the judge_scroll_bars_hook will get rid of them.
-
-   If non-zero, this hook should be safe to apply to any frame,
-   whether or not it can support scroll bars, and whether or not it is
-   currently displaying them.  */
-
-void (*condemn_scroll_bars_hook) P_ ((FRAME_PTR frame));
-
-/* Unmark WINDOW's scroll bar for deletion in this judgement cycle.
-   Note that it's okay to redeem a scroll bar that is not condemned.  */
-
-void (*redeem_scroll_bar_hook) P_ ((struct window *window));
-
-/* Remove all scroll bars on FRAME that haven't been saved since the
-   last call to `*condemn_scroll_bars_hook'.
-
-   This should be applied to each frame after each time its window
-   tree is redisplayed, even if it is not displaying scroll bars at the
-   moment; if the HAS_SCROLL_BARS flag has just been turned off, only
-   calling this and condemn_scroll_bars_hook will get rid of them.
-
-   If non-zero, this hook should be safe to apply to any frame,
-   whether or not it can support scroll bars, and whether or not it is
-   currently displaying them.  */
-
-void (*judge_scroll_bars_hook) P_ ((FRAME_PTR FRAME));
-
-/* Strings, numbers and flags taken from the termcap entry.  */
-
-char *TS_ins_line;             /* "al" */
-char *TS_ins_multi_lines;      /* "AL" (one parameter, # lines to insert) */
-char *TS_bell;                 /* "bl" */
-char *TS_clr_to_bottom;                /* "cd" */
-char *TS_clr_line;             /* "ce", clear to end of line */
-char *TS_clr_frame;            /* "cl" */
-char *TS_set_scroll_region;    /* "cs" (2 params, first line and last line) */
-char *TS_set_scroll_region_1;   /* "cS" (4 params: total lines,
-                                  lines above scroll region, lines below it,
-                                  total lines again) */
-char *TS_del_char;             /* "dc" */
-char *TS_del_multi_chars;      /* "DC" (one parameter, # chars to delete) */
-char *TS_del_line;             /* "dl" */
-char *TS_del_multi_lines;      /* "DL" (one parameter, # lines to delete) */
-char *TS_delete_mode;          /* "dm", enter character-delete mode */
-char *TS_end_delete_mode;      /* "ed", leave character-delete mode */
-char *TS_end_insert_mode;      /* "ei", leave character-insert mode */
-char *TS_ins_char;             /* "ic" */
-char *TS_ins_multi_chars;      /* "IC" (one parameter, # chars to insert) */
-char *TS_insert_mode;          /* "im", enter character-insert mode */
-char *TS_pad_inserted_char;    /* "ip".  Just padding, no commands.  */
-char *TS_end_keypad_mode;      /* "ke" */
-char *TS_keypad_mode;          /* "ks" */
-char *TS_pad_char;             /* "pc", char to use as padding */
-char *TS_repeat;               /* "rp" (2 params, # times to repeat
-                                  and character to be repeated) */
-char *TS_end_standout_mode;    /* "se" */
-char *TS_fwd_scroll;           /* "sf" */
-char *TS_standout_mode;                /* "so" */
-char *TS_rev_scroll;           /* "sr" */
-char *TS_end_termcap_modes;    /* "te" */
-char *TS_termcap_modes;                /* "ti" */
-char *TS_visible_bell;         /* "vb" */
-char *TS_cursor_normal;                /* "ve" */
-char *TS_cursor_visible;       /* "vs" */
-char *TS_cursor_invisible;     /* "vi" */
-char *TS_set_window;           /* "wi" (4 params, start and end of window,
-                                  each as vpos and hpos) */
-
-/* Value of the "NC" (no_color_video) capability, or 0 if not
-   present.  */
-
-static int TN_no_color_video;
+/* 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.  */
@@ -311,68 +161,6 @@ enum no_color_bit
   NC_ALT_CHARSET = 1 << 8
 };
 
-/* "md" -- turn on bold (extra bright mode).  */
-
-char *TS_enter_bold_mode;
-
-/* "mh" -- turn on half-bright mode.  */
-
-char *TS_enter_dim_mode;
-
-/* "mb" -- enter blinking mode.  */
-
-char *TS_enter_blink_mode;
-
-/* "mr" -- enter reverse video mode.  */
-
-char *TS_enter_reverse_mode;
-
-/* "us"/"ue" -- start/end underlining.  */
-
-char *TS_exit_underline_mode, *TS_enter_underline_mode;
-
-/* "as"/"ae" -- start/end alternate character set.  Not really
-   supported, yet.  */
-
-char *TS_enter_alt_charset_mode, *TS_exit_alt_charset_mode;
-
-/* "me" -- switch appearances off.  */
-
-char *TS_exit_attribute_mode;
-
-/* "Co" -- number of colors.  */
-
-int TN_max_colors;
-
-/* "pa" -- max. number of color pairs on screen.  Not handled yet.
-   Could be a problem if not equal to TN_max_colors * TN_max_colors.  */
-
-int TN_max_pairs;
-
-/* "op" -- SVr4 set default pair to its original value.  */
-
-char *TS_orig_pair;
-
-/* "AF"/"AB" or "Sf"/"Sb"-- set ANSI or SVr4 foreground/background color.
-   1 param, the color index.  */
-
-char *TS_set_foreground, *TS_set_background;
-
-int TF_hazeltine;      /* termcap hz flag. */
-int TF_insmode_motion; /* termcap mi flag: can move while in insert mode. */
-int TF_standout_motion;        /* termcap mi flag: can move while in standout mode. */
-int TF_underscore;     /* termcap ul flag: _ underlines if over-struck on
-                          non-blank position.  Must clear before writing _.  */
-int TF_teleray;                /* termcap xt flag: many weird consequences.
-                          For t1061. */
-
-static int RPov;       /* # chars to start a TS_repeat */
-
-static int delete_in_insert_mode;      /* delete mode == insert mode */
-
-static int se_is_so;   /* 1 if same string both enters and leaves
-                          standout mode */
-
 /* internal state */
 
 /* The largest frame width in any call to calculate_costs.  */
@@ -383,235 +171,211 @@ int max_frame_cols;
 
 int max_frame_lines;
 
-static int costs_set;    /* Nonzero if costs have been calculated. */
-
-int insert_mode;                       /* Nonzero when in insert mode.  */
-int standout_mode;                     /* Nonzero when in standout mode.  */
-
-/* Size of window specified by higher levels.
-   This is the number of lines, from the top of frame downwards,
-   which can participate in insert-line/delete-line operations.
-
-   Effectively it excludes the bottom frame_lines - specified_window_size
-   lines from those operations.  */
-
-int specified_window;
-
-/* Frame currently being redisplayed; 0 if not currently redisplaying.
-   (Direct output does not count).  */
-
-FRAME_PTR updating_frame;
+/* Non-zero if we have dropped our controlling tty and therefore
+   should not open a frame on stdout. */
+static int no_controlling_tty;
 
 /* Provided for lisp packages.  */
 
 static int system_uses_terminfo;
 
-/* Flag used in tty_show/hide_cursor.  */
-
-static int tty_cursor_hidden;
-
 char *tparam ();
 
 extern char *tgetstr ();
 \f
 
-#ifdef WINDOWSNT
-/* We aren't X windows, but we aren't termcap either.  This makes me
-   uncertain as to what value to use for frame.output_method.  For
-   this file, we'll define FRAME_TERMCAP_P to be zero so that our
-   output hooks get called instead of the termcap functions.  Probably
-   the best long-term solution is to define an output_windows_nt...  */
+#ifdef HAVE_GPM
+#include <sys/fcntl.h>
+#include "buffer.h"
 
-#undef FRAME_TERMCAP_P
-#define FRAME_TERMCAP_P(_f_) 0
-#endif /* WINDOWSNT */
+static void term_clear_mouse_face ();
+static void term_mouse_highlight (struct frame *f, int x, int y);
 
-void
-ring_bell ()
-{
-  if (!NILP (Vring_bell_function))
-    {
-      Lisp_Object function;
+/* The device for which we have enabled gpm support (or NULL).  */
+struct tty_display_info *gpm_tty = NULL;
 
-      /* Temporarily set the global variable to nil
-        so that if we get an error, it stays nil
-        and we don't call it over and over.
+/* These variables describe the range of text currently shown in its
+   mouse-face, together with the window they apply to.  As long as
+   the mouse stays within this range, we need not redraw anything on
+   its account.  Rows and columns are glyph matrix positions in
+   MOUSE_FACE_WINDOW.  */
+static int mouse_face_beg_row, mouse_face_beg_col;
+static int mouse_face_end_row, mouse_face_end_col;
+static int mouse_face_past_end;
+static Lisp_Object mouse_face_window;
+static int mouse_face_face_id;
 
-        We don't specbind it, because that would carefully
-        restore the bad value if there's an error
-        and make the loop of errors happen anyway.  */
+static int pos_x, pos_y;
+static int last_mouse_x, last_mouse_y;
+#endif /* HAVE_GPM */
 
-      function = Vring_bell_function;
-      Vring_bell_function = Qnil;
+/* Ring the bell on a tty. */
 
-      call0 (function);
+static void
+tty_ring_bell (struct frame *f)
+{
+  struct tty_display_info *tty = FRAME_TTY (f);
 
-      Vring_bell_function = function;
+  if (tty->output)
+    {
+      OUTPUT (tty, (tty->TS_visible_bell && visible_bell
+                    ? tty->TS_visible_bell
+                    : tty->TS_bell));
+      fflush (tty->output);
     }
-  else if (!FRAME_TERMCAP_P (XFRAME (selected_frame)))
-    (*ring_bell_hook) ();
-  else
-    OUTPUT (TS_visible_bell && visible_bell ? TS_visible_bell : TS_bell);
 }
 
+/* Set up termcap modes for Emacs. */
+
 void
-set_terminal_modes ()
+tty_set_terminal_modes (struct terminal *terminal)
 {
-  if (FRAME_TERMCAP_P (XFRAME (selected_frame)))
+  struct tty_display_info *tty = terminal->display_info.tty;
+  
+  if (tty->output)
     {
-      if (TS_termcap_modes)
-       OUTPUT (TS_termcap_modes);
+      if (tty->TS_termcap_modes)
+        OUTPUT (tty, tty->TS_termcap_modes);
       else
-       {
-         /* Output enough newlines to scroll all the old screen contents
-            off the screen, so it won't be overwritten and lost.  */
-         int i;
-         for (i = 0; i < FRAME_LINES (XFRAME (selected_frame)); i++)
-           putchar ('\n');
-       }
-
-      OUTPUT_IF (visible_cursor ? TS_cursor_visible : TS_cursor_normal);
-      OUTPUT_IF (TS_keypad_mode);
-      losecursor ();
+        {
+          /* Output enough newlines to scroll all the old screen contents
+             off the screen, so it won't be overwritten and lost.  */
+          int i;
+          current_tty = tty;
+          for (i = 0; i < FRAME_LINES (XFRAME (selected_frame)); i++)
+            cmputc ('\n');
+        }
+
+      OUTPUT_IF (tty, tty->TS_termcap_modes);
+      OUTPUT_IF (tty, visible_cursor ? tty->TS_cursor_visible : tty->TS_cursor_normal);
+      OUTPUT_IF (tty, tty->TS_keypad_mode);
+      losecursor (tty);
+      fflush (tty->output);
     }
-  else
-    (*set_terminal_modes_hook) ();
 }
 
+/* Reset termcap modes before exiting Emacs. */
+
 void
-reset_terminal_modes ()
+tty_reset_terminal_modes (struct terminal *terminal)
 {
-  if (FRAME_TERMCAP_P (XFRAME (selected_frame)))
+  struct tty_display_info *tty = terminal->display_info.tty;
+
+  if (tty->output)
     {
-      turn_off_highlight ();
-      turn_off_insert ();
-      OUTPUT_IF (TS_end_keypad_mode);
-      OUTPUT_IF (TS_cursor_normal);
-      OUTPUT_IF (TS_end_termcap_modes);
-      OUTPUT_IF (TS_orig_pair);
+      tty_turn_off_highlight (tty);
+      tty_turn_off_insert (tty);
+      OUTPUT_IF (tty, tty->TS_end_keypad_mode);
+      OUTPUT_IF (tty, tty->TS_cursor_normal);
+      OUTPUT_IF (tty, tty->TS_end_termcap_modes);
+      OUTPUT_IF (tty, tty->TS_orig_pair);
       /* Output raw CR so kernel can track the cursor hpos.  */
+      current_tty = tty;
       cmputc ('\r');
+      fflush (tty->output);
     }
-  else if (reset_terminal_modes_hook)
-    (*reset_terminal_modes_hook) ();
 }
 
-void
-update_begin (f)
-     struct frame *f;
-{
-  updating_frame = f;
-  if (!FRAME_TERMCAP_P (f))
-    update_begin_hook (f);
-}
+/* Flag the end of a display update on a termcap terminal. */
 
-void
-update_end (f)
-     struct frame *f;
+static void
+tty_update_end (struct frame *f)
 {
-  if (FRAME_TERMCAP_P (f))
-    {
-      if (!XWINDOW (selected_window)->cursor_off_p)
-       tty_show_cursor ();
-      turn_off_insert ();
-      background_highlight ();
-    }
-  else
-    update_end_hook (f);
+  struct tty_display_info *tty = FRAME_TTY (f);
 
-  updating_frame = NULL;
+  if (!XWINDOW (selected_window)->cursor_off_p)
+    tty_show_cursor (tty);
+  tty_turn_off_insert (tty);
+  tty_background_highlight (tty);
 }
 
-void
-set_terminal_window (size)
-     int size;
+/* The implementation of set_terminal_window for termcap frames. */
+
+static void
+tty_set_terminal_window (struct frame *f, int size)
 {
-  if (FRAME_TERMCAP_P (updating_frame))
-    {
-      specified_window = size ? size : FRAME_LINES (updating_frame);
-      if (scroll_region_ok)
-       set_scroll_region (0, specified_window);
-    }
-  else
-    set_terminal_window_hook (size);
+  struct tty_display_info *tty = FRAME_TTY (f);
+
+  tty->specified_window = size ? size : FRAME_LINES (f);
+  if (FRAME_SCROLL_REGION_OK (f))
+    tty_set_scroll_region (f, 0, tty->specified_window);
 }
 
-void
-set_scroll_region (start, stop)
-     int start, stop;
+static void
+tty_set_scroll_region (struct frame *f, int start, int stop)
 {
   char *buf;
-  struct frame *sf = XFRAME (selected_frame);
-
-  if (TS_set_scroll_region)
-    buf = tparam (TS_set_scroll_region, 0, 0, start, stop - 1);
-  else if (TS_set_scroll_region_1)
-    buf = tparam (TS_set_scroll_region_1, 0, 0,
-                 FRAME_LINES (sf), start,
-                 FRAME_LINES (sf) - stop,
-                 FRAME_LINES (sf));
+  struct tty_display_info *tty = FRAME_TTY (f);
+
+  if (tty->TS_set_scroll_region)
+    buf = tparam (tty->TS_set_scroll_region, 0, 0, start, stop - 1);
+  else if (tty->TS_set_scroll_region_1)
+    buf = tparam (tty->TS_set_scroll_region_1, 0, 0,
+                 FRAME_LINES (f), start,
+                 FRAME_LINES (f) - stop,
+                 FRAME_LINES (f));
   else
-    buf = tparam (TS_set_window, 0, 0, start, 0, stop, FRAME_COLS (sf));
+    buf = tparam (tty->TS_set_window, 0, 0, start, 0, stop, FRAME_COLS (f));
 
-  OUTPUT (buf);
+  OUTPUT (tty, buf);
   xfree (buf);
-  losecursor ();
+  losecursor (tty);
 }
 
 \f
 static void
-turn_on_insert ()
+tty_turn_on_insert (struct tty_display_info *tty)
 {
-  if (!insert_mode)
-    OUTPUT (TS_insert_mode);
-  insert_mode = 1;
+  if (!tty->insert_mode)
+    OUTPUT (tty, tty->TS_insert_mode);
+  tty->insert_mode = 1;
 }
 
 void
-turn_off_insert ()
+tty_turn_off_insert (struct tty_display_info *tty)
 {
-  if (insert_mode)
-    OUTPUT (TS_end_insert_mode);
-  insert_mode = 0;
+  if (tty->insert_mode)
+    OUTPUT (tty, tty->TS_end_insert_mode);
+  tty->insert_mode = 0;
 }
 \f
 /* Handle highlighting.  */
 
 void
-turn_off_highlight ()
+tty_turn_off_highlight (struct tty_display_info *tty)
 {
-  if (standout_mode)
-    OUTPUT_IF (TS_end_standout_mode);
-  standout_mode = 0;
+  if (tty->standout_mode)
+    OUTPUT_IF (tty, tty->TS_end_standout_mode);
+  tty->standout_mode = 0;
 }
 
 static void
-turn_on_highlight ()
+tty_turn_on_highlight (struct tty_display_info *tty)
 {
-  if (!standout_mode)
-    OUTPUT_IF (TS_standout_mode);
-  standout_mode = 1;
+  if (!tty->standout_mode)
+    OUTPUT_IF (tty, tty->TS_standout_mode);
+  tty->standout_mode = 1;
 }
 
 static void
-toggle_highlight ()
+tty_toggle_highlight (struct tty_display_info *tty)
 {
-  if (standout_mode)
-    turn_off_highlight ();
+  if (tty->standout_mode)
+    tty_turn_off_highlight (tty);
   else
-    turn_on_highlight ();
+    tty_turn_on_highlight (tty);
 }
 
 
 /* Make cursor invisible.  */
 
 static void
-tty_hide_cursor ()
+tty_hide_cursor (struct tty_display_info *tty)
 {
-  if (tty_cursor_hidden == 0)
+  if (tty->cursor_hidden == 0)
     {
-      tty_cursor_hidden = 1;
-      OUTPUT_IF (TS_cursor_invisible);
+      tty->cursor_hidden = 1;
+      OUTPUT_IF (tty, tty->TS_cursor_invisible);
     }
 }
 
@@ -619,14 +383,14 @@ tty_hide_cursor ()
 /* Ensure that cursor is visible.  */
 
 static void
-tty_show_cursor ()
+tty_show_cursor (struct tty_display_info *tty)
 {
-  if (tty_cursor_hidden)
+  if (tty->cursor_hidden)
     {
-      tty_cursor_hidden = 0;
-      OUTPUT_IF (TS_cursor_normal);
+      tty->cursor_hidden = 0;
+      OUTPUT_IF (tty, tty->TS_cursor_normal);
       if (visible_cursor)
-       OUTPUT_IF (TS_cursor_visible);
+        OUTPUT_IF (tty, tty->TS_cursor_visible);
     }
 }
 
@@ -635,180 +399,151 @@ tty_show_cursor ()
    empty space inside windows.  What this is,
    depends on the user option inverse-video.  */
 
-void
-background_highlight ()
+static void
+tty_background_highlight (struct tty_display_info *tty)
 {
   if (inverse_video)
-    turn_on_highlight ();
+    tty_turn_on_highlight (tty);
   else
-    turn_off_highlight ();
+    tty_turn_off_highlight (tty);
 }
 
 /* Set standout mode to the mode specified for the text to be output.  */
 
 static void
-highlight_if_desired ()
+tty_highlight_if_desired (struct tty_display_info *tty)
 {
   if (inverse_video)
-    turn_on_highlight ();
+    tty_turn_on_highlight (tty);
   else
-    turn_off_highlight ();
+    tty_turn_off_highlight (tty);
 }
 \f
 
 /* Move cursor to row/column position VPOS/HPOS.  HPOS/VPOS are
    frame-relative coordinates.  */
 
-void
-cursor_to (vpos, hpos)
-     int vpos, hpos;
+static void
+tty_cursor_to (struct frame *f, int vpos, int hpos)
 {
-  struct frame *f = updating_frame ? updating_frame : XFRAME (selected_frame);
-
-  if (! FRAME_TERMCAP_P (f) && cursor_to_hook)
-    {
-      (*cursor_to_hook) (vpos, hpos);
-      return;
-    }
+  struct tty_display_info *tty = FRAME_TTY (f);
 
   /* Detect the case where we are called from reset_sys_modes
      and the costs have never been calculated.  Do nothing.  */
-  if (! costs_set)
+  if (! tty->costs_set)
     return;
 
-  if (curY == vpos && curX == hpos)
+  if (curY (tty) == vpos
+      && curX (tty) == hpos)
     return;
-  if (!TF_standout_motion)
-    background_highlight ();
-  if (!TF_insmode_motion)
-    turn_off_insert ();
-  cmgoto (vpos, hpos);
+  if (!tty->TF_standout_motion)
+    tty_background_highlight (tty);
+  if (!tty->TF_insmode_motion)
+    tty_turn_off_insert (tty);
+  cmgoto (tty, vpos, hpos);
 }
 
 /* Similar but don't take any account of the wasted characters.  */
 
-void
-raw_cursor_to (row, col)
-     int row, col;
+static void
+tty_raw_cursor_to (struct frame *f, int row, int col)
 {
-  struct frame *f = updating_frame ? updating_frame : XFRAME (selected_frame);
-  if (! FRAME_TERMCAP_P (f))
-    {
-      (*raw_cursor_to_hook) (row, col);
-      return;
-    }
-  if (curY == row && curX == col)
+  struct tty_display_info *tty = FRAME_TTY (f);
+
+  if (curY (tty) == row
+      && curX (tty) == col)
     return;
-  if (!TF_standout_motion)
-    background_highlight ();
-  if (!TF_insmode_motion)
-    turn_off_insert ();
-  cmgoto (row, col);
+  if (!tty->TF_standout_motion)
+    tty_background_highlight (tty);
+  if (!tty->TF_insmode_motion)
+    tty_turn_off_insert (tty);
+  cmgoto (tty, row, col);
 }
 \f
 /* Erase operations */
 
-/* clear from cursor to end of frame */
-void
-clear_to_end ()
+/* Clear from cursor to end of frame on a termcap device. */
+
+static void
+tty_clear_to_end (struct frame *f)
 {
   register int i;
+  struct tty_display_info *tty = FRAME_TTY (f);
 
-  if (clear_to_end_hook && ! FRAME_TERMCAP_P (updating_frame))
-    {
-      (*clear_to_end_hook) ();
-      return;
-    }
-  if (TS_clr_to_bottom)
+  if (tty->TS_clr_to_bottom)
     {
-      background_highlight ();
-      OUTPUT (TS_clr_to_bottom);
+      tty_background_highlight (tty);
+      OUTPUT (tty, tty->TS_clr_to_bottom);
     }
   else
     {
-      for (i = curY; i < FRAME_LINES (XFRAME (selected_frame)); i++)
+      for (i = curY (tty); i < FRAME_LINES (f); i++)
        {
-         cursor_to (i, 0);
-         clear_end_of_line (FRAME_COLS (XFRAME (selected_frame)));
+         cursor_to (f, i, 0);
+         clear_end_of_line (f, FRAME_COLS (f));
        }
     }
 }
 
-/* Clear entire frame */
+/* Clear an entire termcap frame. */
 
-void
-clear_frame ()
+static void
+tty_clear_frame (struct frame *f)
 {
-  struct frame *sf = XFRAME (selected_frame);
+  struct tty_display_info *tty = FRAME_TTY (f);
 
-  if (clear_frame_hook
-      && ! FRAME_TERMCAP_P ((updating_frame ? updating_frame : sf)))
-    {
-      (*clear_frame_hook) ();
-      return;
-    }
-  if (TS_clr_frame)
+  if (tty->TS_clr_frame)
     {
-      background_highlight ();
-      OUTPUT (TS_clr_frame);
-      cmat (0, 0);
+      tty_background_highlight (tty);
+      OUTPUT (tty, tty->TS_clr_frame);
+      cmat (tty, 0, 0);
     }
   else
     {
-      cursor_to (0, 0);
-      clear_to_end ();
+      cursor_to (f, 0, 0);
+      clear_to_end (f);
     }
 }
 
-/* Clear from cursor to end of line.
-   Assume that the line is already clear starting at column first_unused_hpos.
+/* An implementation of clear_end_of_line for termcap frames.
 
    Note that the cursor may be moved, on terminals lacking a `ce' string.  */
 
-void
-clear_end_of_line (first_unused_hpos)
-     int first_unused_hpos;
+static void
+tty_clear_end_of_line (struct frame *f, int first_unused_hpos)
 {
   register int i;
-
-  if (clear_end_of_line_hook
-      && ! FRAME_TERMCAP_P ((updating_frame
-                              ? updating_frame
-                            : XFRAME (selected_frame))))
-    {
-      (*clear_end_of_line_hook) (first_unused_hpos);
-      return;
-    }
+  struct tty_display_info *tty = FRAME_TTY (f);
 
   /* Detect the case where we are called from reset_sys_modes
      and the costs have never been calculated.  Do nothing.  */
-  if (! costs_set)
+  if (! tty->costs_set)
     return;
 
-  if (curX >= first_unused_hpos)
+  if (curX (tty) >= first_unused_hpos)
     return;
-  background_highlight ();
-  if (TS_clr_line)
+  tty_background_highlight (tty);
+  if (tty->TS_clr_line)
     {
-      OUTPUT1 (TS_clr_line);
+      OUTPUT1 (tty, tty->TS_clr_line);
     }
   else
     {                  /* have to do it the hard way */
-      struct frame *sf = XFRAME (selected_frame);
-      turn_off_insert ();
+      tty_turn_off_insert (tty);
 
       /* Do not write in last row last col with Auto-wrap on. */
-      if (AutoWrap && curY == FRAME_LINES (sf) - 1
-         && first_unused_hpos == FRAME_COLS (sf))
+      if (AutoWrap (tty)
+          && curY (tty) == FrameRows (tty) - 1
+         && first_unused_hpos == FrameCols (tty))
        first_unused_hpos--;
 
-      for (i = curX; i < first_unused_hpos; i++)
+      for (i = curX (tty); i < first_unused_hpos; i++)
        {
-         if (termscript)
-           fputc (' ', termscript);
-         putchar (' ');
+         if (tty->termscript)
+           fputc (' ', tty->termscript);
+         fputc (' ', tty->output);
        }
-      cmplus (first_unused_hpos - curX);
+      cmplus (tty, first_unused_hpos - curX (tty));
     }
 }
 \f
@@ -930,43 +665,37 @@ encode_terminal_code (src, src_len, coding)
   return encode_terminal_buf + nbytes;
 }
 
-void
-write_glyphs (string, len)
-     register struct glyph *string;
-     register int len;
+
+/* An implementation of write_glyphs for termcap frames. */
+
+static void
+tty_write_glyphs (struct frame *f, struct glyph *string, int len)
 {
-  struct frame *sf = XFRAME (selected_frame);
-  struct frame *f = updating_frame ? updating_frame : sf;
   unsigned char *conversion_buffer;
   struct coding_system *coding;
 
-  if (write_glyphs_hook
-      && ! FRAME_TERMCAP_P (f))
-    {
-      (*write_glyphs_hook) (string, len);
-      return;
-    }
+  struct tty_display_info *tty = FRAME_TTY (f);
 
-  turn_off_insert ();
-  tty_hide_cursor ();
+  tty_turn_off_insert (tty);
+  tty_hide_cursor (tty);
 
   /* Don't dare write in last column of bottom line, if Auto-Wrap,
      since that would scroll the whole frame on some terminals.  */
 
-  if (AutoWrap
-      && curY + 1 == FRAME_LINES (sf)
-      && (curX + len) == FRAME_COLS (sf))
+  if (AutoWrap (tty)
+      && curY (tty) + 1 == FRAME_LINES (f)
+      && (curX (tty) + len) == FRAME_COLS (f))
     len --;
   if (len <= 0)
     return;
 
-  cmplus (len);
+  cmplus (tty, len);
 
   /* If terminal_coding does any conversion, use it, otherwise use
      safe_terminal_coding.  We can't use CODING_REQUIRE_ENCODING here
      because it always return 1 if the member src_multibyte is 1.  */
-  coding = (terminal_coding.common_flags & CODING_REQUIRE_ENCODING_MASK
-           ? &terminal_coding : &safe_terminal_coding);
+  coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK
+           ? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding);
   /* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at
      the tail.  */
   coding->mode &= ~CODING_MODE_LAST_BLOCK;
@@ -982,7 +711,7 @@ write_glyphs (string, len)
          break;
 
       /* Turn appearance modes of the face of the run on.  */
-      highlight_if_desired ();
+      tty_highlight_if_desired (tty);
       turn_on_face (f, face_id);
 
       if (n == len)
@@ -992,11 +721,11 @@ write_glyphs (string, len)
       if (coding->produced > 0)
        {
          BLOCK_INPUT;
-         fwrite (conversion_buffer, 1, coding->produced, stdout);
-         if (ferror (stdout))
-           clearerr (stdout);
-         if (termscript)
-           fwrite (conversion_buffer, 1, coding->produced, termscript);
+         fwrite (conversion_buffer, 1, coding->produced, tty->output);
+         if (ferror (tty->output))
+           clearerr (tty->output);
+         if (tty->termscript)
+           fwrite (conversion_buffer, 1, coding->produced, tty->termscript);
          UNBLOCK_INPUT;
        }
       len -= n;
@@ -1004,50 +733,99 @@ write_glyphs (string, len)
 
       /* Turn appearance modes off.  */
       turn_off_face (f, face_id);
-      turn_off_highlight ();
+      tty_turn_off_highlight (tty);
     }
 
-  cmcheckmagic ();
+  cmcheckmagic (tty);
 }
 
-/* If start is zero, insert blanks instead of a string at start */
+#ifdef HAVE_GPM                        /* Only used by GPM code.  */
 
-void
-insert_glyphs (start, len)
-     register struct glyph *start;
-     register int len;
+static void
+tty_write_glyphs_with_face (f, string, len, face_id)
+     register struct frame *f;
+     register struct glyph *string;
+     register int len, face_id;
 {
-  char *buf;
-  struct glyph *glyph = NULL;
-  struct frame *f, *sf;
   unsigned char *conversion_buffer;
-  unsigned char space[1];
   struct coding_system *coding;
 
+  struct tty_display_info *tty = FRAME_TTY (f);
+
+  tty_turn_off_insert (tty);
+  tty_hide_cursor (tty);
+
+  /* Don't dare write in last column of bottom line, if Auto-Wrap,
+     since that would scroll the whole frame on some terminals.  */
+
+  if (AutoWrap (tty)
+      && curY (tty) + 1 == FRAME_LINES (f)
+      && (curX (tty) + len) == FRAME_COLS (f))
+    len --;
   if (len <= 0)
     return;
 
-  if (insert_glyphs_hook)
+  cmplus (tty, len);
+
+  /* If terminal_coding does any conversion, use it, otherwise use
+     safe_terminal_coding.  We can't use CODING_REQUIRE_ENCODING here
+     because it always return 1 if the member src_multibyte is 1.  */
+  coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK
+           ? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding);
+  /* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at
+     the tail.  */
+  coding->mode &= ~CODING_MODE_LAST_BLOCK;
+
+  /* Turn appearance modes of the face.  */
+  tty_highlight_if_desired (tty);
+  turn_on_face (f, face_id);
+
+  coding->mode |= CODING_MODE_LAST_BLOCK;
+  conversion_buffer = encode_terminal_code (string, len, coding);
+  if (coding->produced > 0)
     {
-      (*insert_glyphs_hook) (start, len);
-      return;
+      BLOCK_INPUT;
+      fwrite (conversion_buffer, 1, coding->produced, tty->output);
+      if (ferror (tty->output))
+       clearerr (tty->output);
+      if (tty->termscript)
+       fwrite (conversion_buffer, 1, coding->produced, tty->termscript);
+      UNBLOCK_INPUT;
     }
 
-  sf = XFRAME (selected_frame);
-  f = updating_frame ? updating_frame : sf;
+  /* Turn appearance modes off.  */
+  turn_off_face (f, face_id);
+  tty_turn_off_highlight (tty);
+
+  cmcheckmagic (tty);
+}
+#endif
+
+/* An implementation of insert_glyphs for termcap frames. */
+
+static void
+tty_insert_glyphs (struct frame *f, struct glyph *start, int len)
+{
+  char *buf;
+  struct glyph *glyph = NULL;
+  unsigned char *conversion_buffer;
+  unsigned char space[1];
+  struct coding_system *coding;
+
+  struct tty_display_info *tty = FRAME_TTY (f);
 
-  if (TS_ins_multi_chars)
+  if (tty->TS_ins_multi_chars)
     {
-      buf = tparam (TS_ins_multi_chars, 0, 0, len);
-      OUTPUT1 (buf);
+      buf = tparam (tty->TS_ins_multi_chars, 0, 0, len);
+      OUTPUT1 (tty, buf);
       xfree (buf);
       if (start)
-       write_glyphs (start, len);
+       write_glyphs (f, start, len);
       return;
     }
 
-  turn_on_insert ();
-  cmplus (len);
+  tty_turn_on_insert (tty);
+  cmplus (tty, len);
 
   if (! start)
     space[0] = SPACEGLYPH;
@@ -1055,15 +833,15 @@ insert_glyphs (start, len)
   /* If terminal_coding does any conversion, use it, otherwise use
      safe_terminal_coding.  We can't use CODING_REQUIRE_ENCODING here
      because it always return 1 if the member src_multibyte is 1.  */
-  coding = (terminal_coding.common_flags & CODING_REQUIRE_ENCODING_MASK
-           ? &terminal_coding : &safe_terminal_coding);
+  coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK
+           ? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding);
   /* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at
      the tail.  */
   coding->mode &= ~CODING_MODE_LAST_BLOCK;
 
   while (len-- > 0)
     {
-      OUTPUT1_IF (TS_ins_char);
+      OUTPUT1_IF (tty, tty->TS_ins_char);
       if (!start)
        {
          conversion_buffer = space;
@@ -1071,7 +849,7 @@ insert_glyphs (start, len)
        }
       else
        {
-         highlight_if_desired ();
+         tty_highlight_if_desired (tty);
          turn_on_face (f, start->face_id);
          glyph = start;
          ++start;
@@ -1079,7 +857,7 @@ insert_glyphs (start, len)
             occupies more than one column.  */
          while (len && CHAR_GLYPH_PADDING_P (*start))
            {
-             OUTPUT1_IF (TS_ins_char);
+             OUTPUT1_IF (tty, tty->TS_ins_char);
              start++, len--;
            }
 
@@ -1087,89 +865,77 @@ insert_glyphs (start, len)
            /* This is the last glyph.  */
            coding->mode |= CODING_MODE_LAST_BLOCK;
 
-         conversion_buffer = encode_terminal_code (glyph, 1, coding);
+          conversion_buffer = encode_terminal_code (glyph, 1, coding);
        }
 
       if (coding->produced > 0)
        {
          BLOCK_INPUT;
-         fwrite (conversion_buffer, 1, coding->produced, stdout);
-         if (ferror (stdout))
-           clearerr (stdout);
-         if (termscript)
-           fwrite (conversion_buffer, 1, coding->produced, termscript);
+         fwrite (conversion_buffer, 1, coding->produced, tty->output);
+         if (ferror (tty->output))
+           clearerr (tty->output);
+         if (tty->termscript)
+           fwrite (conversion_buffer, 1, coding->produced, tty->termscript);
          UNBLOCK_INPUT;
        }
 
-      OUTPUT1_IF (TS_pad_inserted_char);
+      OUTPUT1_IF (tty, tty->TS_pad_inserted_char);
       if (start)
        {
          turn_off_face (f, glyph->face_id);
-         turn_off_highlight ();
+         tty_turn_off_highlight (tty);
        }
     }
 
-  cmcheckmagic ();
+  cmcheckmagic (tty);
 }
 
-void
-delete_glyphs (n)
-     register int n;
+/* An implementation of delete_glyphs for termcap frames. */
+
+static void
+tty_delete_glyphs (struct frame *f, int n)
 {
   char *buf;
   register int i;
 
-  if (delete_glyphs_hook && ! FRAME_TERMCAP_P (updating_frame))
-    {
-      (*delete_glyphs_hook) (n);
-      return;
-    }
+  struct tty_display_info *tty = FRAME_TTY (f);
 
-  if (delete_in_insert_mode)
+  if (tty->delete_in_insert_mode)
     {
-      turn_on_insert ();
+      tty_turn_on_insert (tty);
     }
   else
     {
-      turn_off_insert ();
-      OUTPUT_IF (TS_delete_mode);
+      tty_turn_off_insert (tty);
+      OUTPUT_IF (tty, tty->TS_delete_mode);
     }
 
-  if (TS_del_multi_chars)
+  if (tty->TS_del_multi_chars)
     {
-      buf = tparam (TS_del_multi_chars, 0, 0, n);
-      OUTPUT1 (buf);
+      buf = tparam (tty->TS_del_multi_chars, 0, 0, n);
+      OUTPUT1 (tty, buf);
       xfree (buf);
     }
   else
     for (i = 0; i < n; i++)
-      OUTPUT1 (TS_del_char);
-  if (!delete_in_insert_mode)
-    OUTPUT_IF (TS_end_delete_mode);
+      OUTPUT1 (tty, tty->TS_del_char);
+  if (!tty->delete_in_insert_mode)
+    OUTPUT_IF (tty, tty->TS_end_delete_mode);
 }
 \f
-/* Insert N lines at vpos VPOS.  If N is negative, delete -N lines.  */
+/* An implementation of ins_del_lines for termcap frames. */
 
-void
-ins_del_lines (vpos, n)
-     int vpos, n;
+static void
+tty_ins_del_lines (struct frame *f, int vpos, int n)
 {
-  char *multi = n > 0 ? TS_ins_multi_lines : TS_del_multi_lines;
-  char *single = n > 0 ? TS_ins_line : TS_del_line;
-  char *scroll = n > 0 ? TS_rev_scroll : TS_fwd_scroll;
-  struct frame *sf;
+  struct tty_display_info *tty = FRAME_TTY (f);
+  char *multi = n > 0 ? tty->TS_ins_multi_lines : tty->TS_del_multi_lines;
+  char *single = n > 0 ? tty->TS_ins_line : tty->TS_del_line;
+  char *scroll = n > 0 ? tty->TS_rev_scroll : tty->TS_fwd_scroll;
 
   register int i = n > 0 ? n : -n;
   register char *buf;
 
-  if (ins_del_lines_hook && ! FRAME_TERMCAP_P (updating_frame))
-    {
-      (*ins_del_lines_hook) (vpos, n);
-      return;
-    }
-
-  sf = XFRAME (selected_frame);
-
   /* If the lines below the insertion are being pushed
      into the end of the window, this is the same as clearing;
      and we know the lines are already clear, since the matching
@@ -1177,45 +943,49 @@ ins_del_lines (vpos, n)
   /* If the lines below the deletion are blank lines coming
      out of the end of the window, don't bother,
      as there will be a matching inslines later that will flush them. */
-  if (scroll_region_ok && vpos + i >= specified_window)
+  if (FRAME_SCROLL_REGION_OK (f)
+      && vpos + i >= tty->specified_window)
     return;
-  if (!memory_below_frame && vpos + i >= FRAME_LINES (sf))
+  if (!FRAME_MEMORY_BELOW_FRAME (f)
+      && vpos + i >= FRAME_LINES (f))
     return;
-
+  
   if (multi)
     {
-      raw_cursor_to (vpos, 0);
-      background_highlight ();
+      raw_cursor_to (f, vpos, 0);
+      tty_background_highlight (tty);
       buf = tparam (multi, 0, 0, i);
-      OUTPUT (buf);
+      OUTPUT (tty, buf);
       xfree (buf);
     }
   else if (single)
     {
-      raw_cursor_to (vpos, 0);
-      background_highlight ();
+      raw_cursor_to (f, vpos, 0);
+      tty_background_highlight (tty);
       while (--i >= 0)
-       OUTPUT (single);
-      if (TF_teleray)
-       curX = 0;
+        OUTPUT (tty, single);
+      if (tty->TF_teleray)
+        curX (tty) = 0;
     }
   else
     {
-      set_scroll_region (vpos, specified_window);
+      tty_set_scroll_region (f, vpos, tty->specified_window);
       if (n < 0)
-       raw_cursor_to (specified_window - 1, 0);
+        raw_cursor_to (f, tty->specified_window - 1, 0);
       else
-       raw_cursor_to (vpos, 0);
-      background_highlight ();
+        raw_cursor_to (f, vpos, 0);
+      tty_background_highlight (tty);
       while (--i >= 0)
-       OUTPUTL (scroll, specified_window - vpos);
-      set_scroll_region (0, specified_window);
+        OUTPUTL (tty, scroll, tty->specified_window - vpos);
+      tty_set_scroll_region (f, 0, tty->specified_window);
     }
-
-  if (!scroll_region_ok && memory_below_frame && n < 0)
+  
+  if (!FRAME_SCROLL_REGION_OK (f)
+      && FRAME_MEMORY_BELOW_FRAME (f)
+      && n < 0)
     {
-      cursor_to (FRAME_LINES (sf) + n, 0);
-      clear_to_end ();
+      cursor_to (f, FRAME_LINES (f) + n, 0);
+      clear_to_end (f);
     }
 }
 \f
@@ -1223,8 +993,7 @@ ins_del_lines (vpos, n)
    not counting any line-dependent padding.  */
 
 int
-string_cost (str)
-     char *str;
+string_cost (char *str)
 {
   cost = 0;
   if (str)
@@ -1236,8 +1005,7 @@ string_cost (str)
    counting any line-dependent padding at one line.  */
 
 static int
-string_cost_one_line (str)
-     char *str;
+string_cost_one_line (char *str)
 {
   cost = 0;
   if (str)
@@ -1249,8 +1017,7 @@ string_cost_one_line (str)
    in tenths of characters.  */
 
 int
-per_line_cost (str)
-     register char *str;
+per_line_cost (char *str)
 {
   cost = 0;
   if (str)
@@ -1273,26 +1040,26 @@ int *char_ins_del_vector;
 
 /* ARGSUSED */
 static void
-calculate_ins_del_char_costs (frame)
-     FRAME_PTR frame;
+calculate_ins_del_char_costs (struct frame *f)
 {
+  struct tty_display_info *tty = FRAME_TTY (f);
   int ins_startup_cost, del_startup_cost;
   int ins_cost_per_char, del_cost_per_char;
   register int i;
   register int *p;
 
-  if (TS_ins_multi_chars)
+  if (tty->TS_ins_multi_chars)
     {
       ins_cost_per_char = 0;
-      ins_startup_cost = string_cost_one_line (TS_ins_multi_chars);
+      ins_startup_cost = string_cost_one_line (tty->TS_ins_multi_chars);
     }
-  else if (TS_ins_char || TS_pad_inserted_char
-          || (TS_insert_mode && TS_end_insert_mode))
+  else if (tty->TS_ins_char || tty->TS_pad_inserted_char
+          || (tty->TS_insert_mode && tty->TS_end_insert_mode))
     {
-      ins_startup_cost = (30 * (string_cost (TS_insert_mode)
-                               + string_cost (TS_end_insert_mode))) / 100;
-      ins_cost_per_char = (string_cost_one_line (TS_ins_char)
-                          + string_cost_one_line (TS_pad_inserted_char));
+      ins_startup_cost = (30 * (string_cost (tty->TS_insert_mode)
+                               + string_cost (tty->TS_end_insert_mode))) / 100;
+      ins_cost_per_char = (string_cost_one_line (tty->TS_ins_char)
+                          + string_cost_one_line (tty->TS_pad_inserted_char));
     }
   else
     {
@@ -1300,18 +1067,18 @@ calculate_ins_del_char_costs (frame)
       ins_cost_per_char = 0;
     }
 
-  if (TS_del_multi_chars)
+  if (tty->TS_del_multi_chars)
     {
       del_cost_per_char = 0;
-      del_startup_cost = string_cost_one_line (TS_del_multi_chars);
+      del_startup_cost = string_cost_one_line (tty->TS_del_multi_chars);
     }
-  else if (TS_del_char)
+  else if (tty->TS_del_char)
     {
-      del_startup_cost = (string_cost (TS_delete_mode)
-                         + string_cost (TS_end_delete_mode));
-      if (delete_in_insert_mode)
+      del_startup_cost = (string_cost (tty->TS_delete_mode)
+                         + string_cost (tty->TS_end_delete_mode));
+      if (tty->delete_in_insert_mode)
        del_startup_cost /= 2;
-      del_cost_per_char = string_cost_one_line (TS_del_char);
+      del_cost_per_char = string_cost_one_line (tty->TS_del_char);
     }
   else
     {
@@ -1320,75 +1087,80 @@ calculate_ins_del_char_costs (frame)
     }
 
   /* Delete costs are at negative offsets */
-  p = &char_ins_del_cost (frame)[0];
-  for (i = FRAME_COLS (frame); --i >= 0;)
+  p = &char_ins_del_cost (f)[0];
+  for (i = FRAME_COLS (f); --i >= 0;)
     *--p = (del_startup_cost += del_cost_per_char);
 
   /* Doing nothing is free */
-  p = &char_ins_del_cost (frame)[0];
+  p = &char_ins_del_cost (f)[0];
   *p++ = 0;
 
   /* Insert costs are at positive offsets */
-  for (i = FRAME_COLS (frame); --i >= 0;)
+  for (i = FRAME_COLS (f); --i >= 0;)
     *p++ = (ins_startup_cost += ins_cost_per_char);
 }
 
 void
-calculate_costs (frame)
-     FRAME_PTR frame;
+calculate_costs (struct frame *frame)
 {
-  register char *f = (TS_set_scroll_region
-                     ? TS_set_scroll_region
-                     : TS_set_scroll_region_1);
-
   FRAME_COST_BAUD_RATE (frame) = baud_rate;
 
-  scroll_region_cost = string_cost (f);
+  if (FRAME_TERMCAP_P (frame))
+    {
+      struct tty_display_info *tty = FRAME_TTY (frame);
+      register char *f = (tty->TS_set_scroll_region
+                          ? tty->TS_set_scroll_region
+                          : tty->TS_set_scroll_region_1);
 
-  /* These variables are only used for terminal stuff.  They are allocated
-     once for the terminal frame of X-windows emacs, but not used afterwards.
+      FRAME_SCROLL_REGION_COST (frame) = string_cost (f);
 
-     char_ins_del_vector (i.e., char_ins_del_cost) isn't used because
-     X turns off char_ins_del_ok. */
+      tty->costs_set = 1;
 
-  max_frame_lines = max (max_frame_lines, FRAME_LINES (frame));
-  max_frame_cols = max (max_frame_cols, FRAME_COLS (frame));
+      /* These variables are only used for terminal stuff.  They are
+         allocated once for the terminal frame of X-windows emacs, but not
+         used afterwards.
 
-  costs_set = 1;
+         char_ins_del_vector (i.e., char_ins_del_cost) isn't used because
+         X turns off char_ins_del_ok. */
 
-  if (char_ins_del_vector != 0)
-    char_ins_del_vector
-      = (int *) xrealloc (char_ins_del_vector,
-                         (sizeof (int)
-                          + 2 * max_frame_cols * sizeof (int)));
-  else
-    char_ins_del_vector
-      = (int *) xmalloc (sizeof (int)
-                        + 2 * max_frame_cols * sizeof (int));
-
-  bzero (char_ins_del_vector, (sizeof (int)
-                              + 2 * max_frame_cols * sizeof (int)));
-
-  if (f && (!TS_ins_line && !TS_del_line))
-    do_line_insertion_deletion_costs (frame,
-                                     TS_rev_scroll, TS_ins_multi_lines,
-                                     TS_fwd_scroll, TS_del_multi_lines,
-                                     f, f, 1);
-  else
-    do_line_insertion_deletion_costs (frame,
-                                     TS_ins_line, TS_ins_multi_lines,
-                                     TS_del_line, TS_del_multi_lines,
-                                     0, 0, 1);
+      max_frame_lines = max (max_frame_lines, FRAME_LINES (frame));
+      max_frame_cols = max (max_frame_cols, FRAME_COLS (frame));
+
+      if (char_ins_del_vector != 0)
+        char_ins_del_vector
+          = (int *) xrealloc (char_ins_del_vector,
+                              (sizeof (int)
+                               + 2 * max_frame_cols * sizeof (int)));
+      else
+        char_ins_del_vector
+          = (int *) xmalloc (sizeof (int)
+                             + 2 * max_frame_cols * sizeof (int));
 
-  calculate_ins_del_char_costs (frame);
+      bzero (char_ins_del_vector, (sizeof (int)
+                                   + 2 * max_frame_cols * sizeof (int)));
 
-  /* Don't use TS_repeat if its padding is worse than sending the chars */
-  if (TS_repeat && per_line_cost (TS_repeat) * baud_rate < 9000)
-    RPov = string_cost (TS_repeat);
-  else
-    RPov = FRAME_COLS (frame) * 2;
 
-  cmcostinit ();               /* set up cursor motion costs */
+      if (f && (!tty->TS_ins_line && !tty->TS_del_line))
+        do_line_insertion_deletion_costs (frame,
+                                          tty->TS_rev_scroll, tty->TS_ins_multi_lines,
+                                          tty->TS_fwd_scroll, tty->TS_del_multi_lines,
+                                          f, f, 1);
+      else
+        do_line_insertion_deletion_costs (frame,
+                                          tty->TS_ins_line, tty->TS_ins_multi_lines,
+                                          tty->TS_del_line, tty->TS_del_multi_lines,
+                                          0, 0, 1);
+
+      calculate_ins_del_char_costs (frame);
+
+      /* Don't use TS_repeat if its padding is worse than sending the chars */
+      if (tty->TS_repeat && per_line_cost (tty->TS_repeat) * baud_rate < 9000)
+        tty->RPov = string_cost (tty->TS_repeat);
+      else
+        tty->RPov = FRAME_COLS (frame) * 2;
+
+      cmcostinit (FRAME_TTY (frame)); /* set up cursor motion costs */
+    }
 }
 \f
 struct fkey_table {
@@ -1498,16 +1270,18 @@ static struct fkey_table keys[] =
   {"!3", "S-undo"}       /*shifted undo key*/
   };
 
-static char **term_get_fkeys_arg;
+static char **term_get_fkeys_address;
+static KBOARD *term_get_fkeys_kboard;
 static Lisp_Object term_get_fkeys_1 ();
 
-/* Find the escape codes sent by the function keys for Vfunction_key_map.
+/* Find the escape codes sent by the function keys for Vinput_decode_map.
    This function scans the termcap function key sequence entries, and
-   adds entries to Vfunction_key_map for each function key it finds.  */
+   adds entries to Vinput_decode_map for each function key it finds.  */
 
-void
-term_get_fkeys (address)
+static void
+term_get_fkeys (address, kboard)
      char **address;
+     KBOARD *kboard;
 {
   /* We run the body of the function (term_get_fkeys_1) and ignore all Lisp
      errors during the call.  The only errors should be from Fdefine_key
@@ -1518,7 +1292,8 @@ term_get_fkeys (address)
      refusing to run at all on such a terminal.  */
 
   extern Lisp_Object Fidentity ();
-  term_get_fkeys_arg = address;
+  term_get_fkeys_address = address;
+  term_get_fkeys_kboard = kboard;
   internal_condition_case (term_get_fkeys_1, Qerror, Fidentity);
 }
 
@@ -1527,17 +1302,18 @@ term_get_fkeys_1 ()
 {
   int i;
 
-  char **address = term_get_fkeys_arg;
-
+  char **address = term_get_fkeys_address;
+  KBOARD *kboard = term_get_fkeys_kboard;
+  
   /* This can happen if CANNOT_DUMP or with strange options.  */
-  if (!initialized)
-    Vfunction_key_map = Fmake_sparse_keymap (Qnil);
+  if (!KEYMAPP (kboard->Vinput_decode_map))
+    kboard->Vinput_decode_map = Fmake_sparse_keymap (Qnil);
 
   for (i = 0; i < (sizeof (keys)/sizeof (keys[0])); i++)
     {
       char *sequence = tgetstr (keys[i].cap, address);
       if (sequence)
-       Fdefine_key (Vfunction_key_map, build_string (sequence),
+       Fdefine_key (kboard->Vinput_decode_map, build_string (sequence),
                     Fmake_vector (make_number (1),
                                   intern (keys[i].name)));
     }
@@ -1557,13 +1333,13 @@ term_get_fkeys_1 ()
        if (k0)
          /* Define f0 first, so that f10 takes precedence in case the
             key sequences happens to be the same.  */
-         Fdefine_key (Vfunction_key_map, build_string (k0),
+         Fdefine_key (kboard->Vinput_decode_map, build_string (k0),
                       Fmake_vector (make_number (1), intern ("f0")));
-       Fdefine_key (Vfunction_key_map, build_string (k_semi),
+       Fdefine_key (kboard->Vinput_decode_map, build_string (k_semi),
                     Fmake_vector (make_number (1), intern ("f10")));
       }
     else if (k0)
-      Fdefine_key (Vfunction_key_map, build_string (k0),
+      Fdefine_key (kboard->Vinput_decode_map, build_string (k0),
                   Fmake_vector (make_number (1), intern (k0_name)));
   }
 
@@ -1586,7 +1362,7 @@ term_get_fkeys_1 ()
          if (sequence)
            {
              sprintf (fkey, "f%d", i);
-             Fdefine_key (Vfunction_key_map, build_string (sequence),
+             Fdefine_key (kboard->Vinput_decode_map, build_string (sequence),
                           Fmake_vector (make_number (1),
                                         intern (fkey)));
            }
@@ -1602,10 +1378,10 @@ term_get_fkeys_1 ()
       if (!tgetstr (cap1, address))                                    \
        {                                                               \
          char *sequence = tgetstr (cap2, address);                     \
-         if (sequence)                                                 \
-           Fdefine_key (Vfunction_key_map, build_string (sequence),    \
-                        Fmake_vector (make_number (1), \
-                                      intern (sym)));  \
+         if (sequence)                                                 \
+           Fdefine_key (kboard->Vinput_decode_map, build_string (sequence), \
+                        Fmake_vector (make_number (1),                 \
+                                      intern (sym)));                  \
        }
 
       /* if there's no key_next keycap, map key_npage to `next' keysym */
@@ -1961,10 +1737,10 @@ produce_special_glyphs (it, what)
    from them.  Some display attributes may not be used together with
    color; the termcap capability `NC' specifies which ones.  */
 
-#define MAY_USE_WITH_COLORS_P(ATTR)            \
-     (TN_max_colors > 0                                \
-      ? (TN_no_color_video & (ATTR)) == 0      \
-      : 1)
+#define MAY_USE_WITH_COLORS_P(tty, ATTR)                \
+  (tty->TN_max_colors > 0                              \
+   ? (tty->TN_no_color_video & (ATTR)) == 0             \
+   : 1)
 
 /* Turn appearances of face FACE_ID on tty frame F on.
    FACE_ID is a realized face ID number, in the face cache.  */
@@ -1977,12 +1753,13 @@ turn_on_face (f, face_id)
   struct face *face = FACE_FROM_ID (f, face_id);
   long fg = face->foreground;
   long bg = face->background;
+  struct tty_display_info *tty = FRAME_TTY (f);
 
   /* Do this first because TS_end_standout_mode may be the same
      as TS_exit_attribute_mode, which turns all appearances off. */
-  if (MAY_USE_WITH_COLORS_P (NC_REVERSE))
+  if (MAY_USE_WITH_COLORS_P (tty, NC_REVERSE))
     {
-      if (TN_max_colors > 0)
+      if (tty->TN_max_colors > 0)
        {
          if (fg >= 0 && bg >= 0)
            {
@@ -1996,13 +1773,13 @@ turn_on_face (f, face_id)
            {
              if (fg == FACE_TTY_DEFAULT_FG_COLOR
                  || bg == FACE_TTY_DEFAULT_BG_COLOR)
-               toggle_highlight ();
+               tty_toggle_highlight (tty);
            }
          else
            {
              if (fg == FACE_TTY_DEFAULT_BG_COLOR
                  || bg == FACE_TTY_DEFAULT_FG_COLOR)
-               toggle_highlight ();
+               tty_toggle_highlight (tty);
            }
        }
       else
@@ -2013,55 +1790,55 @@ turn_on_face (f, face_id)
            {
              if (fg == FACE_TTY_DEFAULT_FG_COLOR
                  || bg == FACE_TTY_DEFAULT_BG_COLOR)
-               toggle_highlight ();
+               tty_toggle_highlight (tty);
            }
          else
            {
              if (fg == FACE_TTY_DEFAULT_BG_COLOR
                  || bg == FACE_TTY_DEFAULT_FG_COLOR)
-               toggle_highlight ();
+               tty_toggle_highlight (tty);
            }
        }
     }
 
   if (face->tty_bold_p)
     {
-      if (MAY_USE_WITH_COLORS_P (NC_BOLD))
-       OUTPUT1_IF (TS_enter_bold_mode);
+      if (MAY_USE_WITH_COLORS_P (tty, NC_BOLD))
+       OUTPUT1_IF (tty, tty->TS_enter_bold_mode);
     }
   else if (face->tty_dim_p)
-    if (MAY_USE_WITH_COLORS_P (NC_DIM))
-      OUTPUT1_IF (TS_enter_dim_mode);
+    if (MAY_USE_WITH_COLORS_P (tty, NC_DIM))
+      OUTPUT1_IF (tty, tty->TS_enter_dim_mode);
 
   /* Alternate charset and blinking not yet used.  */
   if (face->tty_alt_charset_p
-      && MAY_USE_WITH_COLORS_P (NC_ALT_CHARSET))
-    OUTPUT1_IF (TS_enter_alt_charset_mode);
+      && MAY_USE_WITH_COLORS_P (tty, NC_ALT_CHARSET))
+    OUTPUT1_IF (tty, tty->TS_enter_alt_charset_mode);
 
   if (face->tty_blinking_p
-      && MAY_USE_WITH_COLORS_P (NC_BLINK))
-    OUTPUT1_IF (TS_enter_blink_mode);
+      && MAY_USE_WITH_COLORS_P (tty, NC_BLINK))
+    OUTPUT1_IF (tty, tty->TS_enter_blink_mode);
 
-  if (face->tty_underline_p && MAY_USE_WITH_COLORS_P (NC_UNDERLINE))
-    OUTPUT1_IF (TS_enter_underline_mode);
+  if (face->tty_underline_p && MAY_USE_WITH_COLORS_P (tty, NC_UNDERLINE))
+    OUTPUT1_IF (tty, tty->TS_enter_underline_mode);
 
-  if (TN_max_colors > 0)
+  if (tty->TN_max_colors > 0)
     {
       char *ts, *p;
 
-      ts = standout_mode ? TS_set_background : TS_set_foreground;
+      ts = tty->standout_mode ? tty->TS_set_background : tty->TS_set_foreground;
       if (fg >= 0 && ts)
        {
-         p = tparam (ts, NULL, 0, (int) fg);
-         OUTPUT (p);
+          p = tparam (ts, NULL, 0, (int) fg);
+         OUTPUT (tty, p);
          xfree (p);
        }
 
-      ts = standout_mode ? TS_set_foreground : TS_set_background;
+      ts = tty->standout_mode ? tty->TS_set_foreground : tty->TS_set_background;
       if (bg >= 0 && ts)
        {
-         p = tparam (ts, NULL, 0, (int) bg);
-         OUTPUT (p);
+          p = tparam (ts, NULL, 0, (int) bg);
+         OUTPUT (tty, p);
          xfree (p);
        }
     }
@@ -2076,10 +1853,11 @@ turn_off_face (f, face_id)
      int face_id;
 {
   struct face *face = FACE_FROM_ID (f, face_id);
+  struct tty_display_info *tty = FRAME_TTY (f);
 
   xassert (face != NULL);
 
-  if (TS_exit_attribute_mode)
+  if (tty->TS_exit_attribute_mode)
     {
       /* Capability "me" will turn off appearance modes double-bright,
         half-bright, reverse-video, standout, underline.  It may or
@@ -2091,32 +1869,32 @@ turn_off_face (f, face_id)
          || face->tty_blinking_p
          || face->tty_underline_p)
        {
-         OUTPUT1_IF (TS_exit_attribute_mode);
-         if (strcmp (TS_exit_attribute_mode, TS_end_standout_mode) == 0)
-           standout_mode = 0;
+         OUTPUT1_IF (tty, tty->TS_exit_attribute_mode);
+         if (strcmp (tty->TS_exit_attribute_mode, tty->TS_end_standout_mode) == 0)
+           tty->standout_mode = 0;
        }
 
       if (face->tty_alt_charset_p)
-       OUTPUT_IF (TS_exit_alt_charset_mode);
+       OUTPUT_IF (tty, tty->TS_exit_alt_charset_mode);
     }
   else
     {
       /* If we don't have "me" we can only have those appearances
         that have exit sequences defined.  */
       if (face->tty_alt_charset_p)
-       OUTPUT_IF (TS_exit_alt_charset_mode);
+       OUTPUT_IF (tty, tty->TS_exit_alt_charset_mode);
 
       if (face->tty_underline_p)
-       OUTPUT_IF (TS_exit_underline_mode);
+       OUTPUT_IF (tty, tty->TS_exit_underline_mode);
     }
 
   /* Switch back to default colors.  */
-  if (TN_max_colors > 0
+  if (tty->TN_max_colors > 0
       && ((face->foreground != FACE_TTY_DEFAULT_COLOR
           && face->foreground != FACE_TTY_DEFAULT_FG_COLOR)
          || (face->background != FACE_TTY_DEFAULT_COLOR
              && face->background != FACE_TTY_DEFAULT_BG_COLOR)))
-    OUTPUT1_IF (TS_orig_pair);
+    OUTPUT1_IF (tty, tty->TS_orig_pair);
 }
 
 
@@ -2125,46 +1903,61 @@ turn_off_face (f, face_id)
    colors FG and BG.  */
 
 int
-tty_capable_p (f, caps, fg, bg)
-     struct frame *f;
+tty_capable_p (tty, caps, fg, bg)
+     struct tty_display_info *tty;
      unsigned caps;
      unsigned long fg, bg;
 {
-#define TTY_CAPABLE_P_TRY(cap, TS, NC_bit)                             \
-  if ((caps & (cap)) && (!(TS) || !MAY_USE_WITH_COLORS_P(NC_bit)))     \
+#define TTY_CAPABLE_P_TRY(tty, cap, TS, NC_bit)                                \
+  if ((caps & (cap)) && (!(TS) || !MAY_USE_WITH_COLORS_P(tty, NC_bit)))        \
     return 0;
 
-  TTY_CAPABLE_P_TRY (TTY_CAP_INVERSE,  TS_standout_mode,        NC_REVERSE);
-  TTY_CAPABLE_P_TRY (TTY_CAP_UNDERLINE, TS_enter_underline_mode, NC_UNDERLINE);
-  TTY_CAPABLE_P_TRY (TTY_CAP_BOLD,     TS_enter_bold_mode,      NC_BOLD);
-  TTY_CAPABLE_P_TRY (TTY_CAP_DIM,      TS_enter_dim_mode,       NC_DIM);
-  TTY_CAPABLE_P_TRY (TTY_CAP_BLINK,    TS_enter_blink_mode,     NC_BLINK);
-  TTY_CAPABLE_P_TRY (TTY_CAP_ALT_CHARSET, TS_enter_alt_charset_mode, NC_ALT_CHARSET);
+  TTY_CAPABLE_P_TRY (tty, TTY_CAP_INVERSE,     tty->TS_standout_mode,          NC_REVERSE);
+  TTY_CAPABLE_P_TRY (tty, TTY_CAP_UNDERLINE,   tty->TS_enter_underline_mode,   NC_UNDERLINE);
+  TTY_CAPABLE_P_TRY (tty, TTY_CAP_BOLD,        tty->TS_enter_bold_mode,        NC_BOLD);
+  TTY_CAPABLE_P_TRY (tty, TTY_CAP_DIM,                 tty->TS_enter_dim_mode,         NC_DIM);
+  TTY_CAPABLE_P_TRY (tty, TTY_CAP_BLINK,       tty->TS_enter_blink_mode,       NC_BLINK);
+  TTY_CAPABLE_P_TRY (tty, TTY_CAP_ALT_CHARSET,         tty->TS_enter_alt_charset_mode, NC_ALT_CHARSET);
 
   /* We can do it!  */
   return 1;
 }
 
-
 /* Return non-zero if the terminal is capable to display colors.  */
 
 DEFUN ("tty-display-color-p", Ftty_display_color_p, Stty_display_color_p,
        0, 1, 0,
-       doc: /* Return non-nil if TTY can display colors on DISPLAY.  */)
-     (display)
-     Lisp_Object display;
+       doc: /* Return non-nil if the tty device TERMINAL can display colors.
+
+TERMINAL can be a terminal id, a frame or nil (meaning the selected
+frame's terminal).  This function always returns nil if TERMINAL
+is not on a tty device.  */)
+     (terminal)
+     Lisp_Object terminal;
 {
-  return TN_max_colors > 0 ? Qt : Qnil;
+  struct terminal *t = get_tty_terminal (terminal, 0);
+  if (!t)
+    return Qnil;
+  else
+    return t->display_info.tty->TN_max_colors > 0 ? Qt : Qnil;
 }
 
 /* Return the number of supported colors.  */
 DEFUN ("tty-display-color-cells", Ftty_display_color_cells,
        Stty_display_color_cells, 0, 1, 0,
-       doc: /* Return the number of colors supported by TTY on DISPLAY.  */)
-     (display)
-     Lisp_Object display;
+       doc: /* Return the number of colors supported by the tty device TERMINAL.
+
+TERMINAL can be a terminal id, a frame or nil (meaning the selected
+frame's terminal).  This function always returns 0 if TERMINAL
+is not on a tty device.  */)
+     (terminal)
+     Lisp_Object terminal;
 {
-  return make_number (TN_max_colors);
+  struct terminal *t = get_tty_terminal (terminal, 0);
+  if (!t)
+    return make_number (0);
+  else
+    return make_number (t->display_info.tty->TN_max_colors);
 }
 
 #ifndef WINDOWSNT
@@ -2182,48 +1975,46 @@ static char *default_set_background;
 /* Save or restore the default color-related capabilities of this
    terminal.  */
 static void
-tty_default_color_capabilities (save)
-     int save;
+tty_default_color_capabilities (struct tty_display_info *tty, int save)
 {
 
   if (save)
     {
       if (default_orig_pair)
        xfree (default_orig_pair);
-      default_orig_pair = TS_orig_pair ? xstrdup (TS_orig_pair) : NULL;
+      default_orig_pair = tty->TS_orig_pair ? xstrdup (tty->TS_orig_pair) : NULL;
 
       if (default_set_foreground)
        xfree (default_set_foreground);
-      default_set_foreground = TS_set_foreground ? xstrdup (TS_set_foreground)
+      default_set_foreground = tty->TS_set_foreground ? xstrdup (tty->TS_set_foreground)
                               : NULL;
 
       if (default_set_background)
        xfree (default_set_background);
-      default_set_background = TS_set_background ? xstrdup (TS_set_background)
+      default_set_background = tty->TS_set_background ? xstrdup (tty->TS_set_background)
                               : NULL;
 
-      default_max_colors = TN_max_colors;
-      default_max_pairs = TN_max_pairs;
-      default_no_color_video = TN_no_color_video;
+      default_max_colors = tty->TN_max_colors;
+      default_max_pairs = tty->TN_max_pairs;
+      default_no_color_video = tty->TN_no_color_video;
     }
   else
     {
-      TS_orig_pair = default_orig_pair;
-      TS_set_foreground = default_set_foreground;
-      TS_set_background = default_set_background;
-      TN_max_colors = default_max_colors;
-      TN_max_pairs = default_max_pairs;
-      TN_no_color_video = default_no_color_video;
+      tty->TS_orig_pair = default_orig_pair;
+      tty->TS_set_foreground = default_set_foreground;
+      tty->TS_set_background = default_set_background;
+      tty->TN_max_colors = default_max_colors;
+      tty->TN_max_pairs = default_max_pairs;
+      tty->TN_no_color_video = default_no_color_video;
     }
 }
 
 /* Setup one of the standard tty color schemes according to MODE.
    MODE's value is generally the number of colors which we want to
    support; zero means set up for the default capabilities, the ones
-   we saw at term_init time; -1 means turn off color support.  */
-void
-tty_setup_colors (mode)
-     int mode;
+   we saw at init_tty time; -1 means turn off color support.  */
+static void
+tty_setup_colors (struct tty_display_info *tty, int mode)
 {
   /* Canonicalize all negative values of MODE.  */
   if (mode < -1)
@@ -2232,27 +2023,27 @@ tty_setup_colors (mode)
   switch (mode)
     {
       case -1:  /* no colors at all */
-       TN_max_colors = 0;
-       TN_max_pairs = 0;
-       TN_no_color_video = 0;
-       TS_set_foreground = TS_set_background = TS_orig_pair = NULL;
+       tty->TN_max_colors = 0;
+       tty->TN_max_pairs = 0;
+       tty->TN_no_color_video = 0;
+       tty->TS_set_foreground = tty->TS_set_background = tty->TS_orig_pair = NULL;
        break;
       case 0:   /* default colors, if any */
       default:
-       tty_default_color_capabilities (0);
+       tty_default_color_capabilities (tty, 0);
        break;
       case 8:  /* 8 standard ANSI colors */
-       TS_orig_pair = "\033[0m";
+       tty->TS_orig_pair = "\033[0m";
 #ifdef TERMINFO
-       TS_set_foreground = "\033[3%p1%dm";
-       TS_set_background = "\033[4%p1%dm";
+       tty->TS_set_foreground = "\033[3%p1%dm";
+       tty->TS_set_background = "\033[4%p1%dm";
 #else
-       TS_set_foreground = "\033[3%dm";
-       TS_set_background = "\033[4%dm";
+       tty->TS_set_foreground = "\033[3%dm";
+       tty->TS_set_background = "\033[4%dm";
 #endif
-       TN_max_colors = 8;
-       TN_max_pairs = 64;
-       TN_no_color_video = 0;
+       tty->TN_max_colors = 8;
+       tty->TN_max_pairs = 64;
+       tty->TN_no_color_video = 0;
        break;
     }
 }
@@ -2303,7 +2094,7 @@ set_tty_color_mode (f, val)
 
   if (mode != old_mode)
     {
-      tty_setup_colors (mode);
+      tty_setup_colors (FRAME_TTY (f), mode);
       /*  This recomputes all the faces given the new color
          definitions.  */
       call0 (intern ("tty-set-up-initial-frame-faces"));
@@ -2314,85 +2105,1261 @@ set_tty_color_mode (f, val)
 #endif /* !WINDOWSNT */
 
 \f
-/***********************************************************************
-                           Initialization
- ***********************************************************************/
 
-void
-term_init (terminal_type)
-     char *terminal_type;
+/* Return the tty display object specified by TERMINAL. */
+
+struct terminal *
+get_tty_terminal (Lisp_Object terminal, int throw)
 {
-  char *area;
-  char **address = &area;
-  char *buffer = NULL;
-  int buffer_size = 4096;
-  register char *p;
-  int status;
-  struct frame *sf = XFRAME (selected_frame);
+  struct terminal *t = get_terminal (terminal, throw);
 
-  encode_terminal_bufsize = 0;
+  if (t && t->type != output_termcap)
+    {
+      if (throw)
+        error ("Device %d is not a termcap terminal device", t->id);
+      else
+        return NULL;
+    }
 
-#ifdef WINDOWSNT
-  initialize_w32_display ();
+  return t;
+}
 
-  Wcm_clear ();
+/* Return an active termcap device that uses the tty device with the
+   given name.
 
-  area = (char *) xmalloc (2044);
+   This function ignores suspended devices.
 
-  FrameRows = FRAME_LINES (sf);
-  FrameCols = FRAME_COLS (sf);
-  specified_window = FRAME_LINES (sf);
+   Returns NULL if the named terminal device is not opened.  */
+struct terminal *
+get_named_tty (name)
+     char *name;
+{
+  struct terminal *t;
 
-  delete_in_insert_mode = 1;
+  if (!name)
+    abort ();
 
-  UseTabs = 0;
-  scroll_region_ok = 0;
+  for (t = terminal_list; t; t = t->next_terminal)
+    {
+      if (t->type == output_termcap
+          && !strcmp (t->display_info.tty->name, name)
+          && TERMINAL_ACTIVE_P (t))
+        return t;
+    }
 
-  /* Seems to insert lines when it's not supposed to, messing
-     up the display.  In doing a trace, it didn't seem to be
-     called much, so I don't think we're losing anything by
-     turning it off.  */
+  return 0;
+}
 
-  line_ins_del_ok = 0;
-  char_ins_del_ok = 1;
+\f
+DEFUN ("tty-type", Ftty_type, Stty_type, 0, 1, 0,
+       doc: /* Return the type of the tty device that TERMINAL uses.
+Returns nil if TERMINAL is not on a tty device.
+
+TERMINAL can be a terminal id, a frame or nil (meaning the selected
+frame's terminal).  */)
+     (terminal)
+     Lisp_Object terminal;
+{
+  struct terminal *t = get_terminal (terminal, 1);
 
-  baud_rate = 19200;
+  if (t->type != output_termcap)
+    return Qnil;
 
-  FRAME_CAN_HAVE_SCROLL_BARS (sf) = 0;
-  FRAME_VERTICAL_SCROLL_BAR_TYPE (sf) = vertical_scroll_bar_none;
-  TN_max_colors = 16;  /* Required to be non-zero for tty-display-color-p */
+  if (t->display_info.tty->type)
+    return build_string (t->display_info.tty->type);
+  else
+    return Qnil;
+}
 
-  return;
-#else  /* not WINDOWSNT */
+DEFUN ("controlling-tty-p", Fcontrolling_tty_p, Scontrolling_tty_p, 0, 1, 0,
+       doc: /* Return non-nil if TERMINAL is on the controlling tty of the Emacs process.
 
-  Wcm_clear ();
+TERMINAL can be a terminal id, a frame or nil (meaning the selected
+frame's terminal).  This function always returns nil if TERMINAL
+is not on a tty device.  */)
+     (terminal)
+     Lisp_Object terminal;
+{
+  struct terminal *t = get_terminal (terminal, 1);
+
+  if (t->type != output_termcap || strcmp (t->display_info.tty->name, DEV_TTY))
+    return Qnil;
+  else
+    return Qt;
+}
+
+DEFUN ("tty-no-underline", Ftty_no_underline, Stty_no_underline, 0, 1, 0,
+       doc: /* Declare that the tty used by TERMINAL does not handle underlining.
+This is used to override the terminfo data, for certain terminals that
+do not really do underlining, but say that they do.  This function has
+no effect if used on a non-tty terminal.
+
+TERMINAL can be a terminal id, a frame or nil (meaning the selected
+frame's terminal).  This function always returns nil if TERMINAL
+is not on a tty device.  */)
+  (terminal)
+     Lisp_Object terminal;
+{
+  struct terminal *t = get_terminal (terminal, 1);
+
+  if (t->type == output_termcap)
+    t->display_info.tty->TS_enter_underline_mode = 0;
+  return Qnil;
+}
+
+\f
+
+DEFUN ("suspend-tty", Fsuspend_tty, Ssuspend_tty, 0, 1, 0,
+       doc: /* Suspend the terminal device TTY.
+
+The device is restored to its default state, and Emacs ceases all
+access to the tty device.  Frames that use the device are not deleted,
+but input is not read from them and if they change, their display is
+not updated.
+
+TTY may be a terminal id, a frame, or nil for the terminal device of
+the currently selected frame.
+
+This function runs `suspend-tty-functions' after suspending the
+device.  The functions are run with one arg, the id of the suspended
+terminal device.
+
+`suspend-tty' does nothing if it is called on a device that is already
+suspended.
+
+A suspended tty may be resumed by calling `resume-tty' on it.  */)
+     (tty)
+     Lisp_Object tty;
+{
+  struct terminal *t = get_tty_terminal (tty, 1);
+  FILE *f;
+  
+  if (!t)
+    error ("Unknown tty device");
+
+  f = t->display_info.tty->input;
+  
+  if (f)
+    {
+      /* First run `suspend-tty-functions' and then clean up the tty
+        state because `suspend-tty-functions' might need to change
+        the tty state.  */
+      if (!NILP (Vrun_hooks))
+        {
+          Lisp_Object args[2];
+          args[0] = intern ("suspend-tty-functions");
+          XSETTERMINAL (args[1], t);
+          Frun_hook_with_args (2, args);
+        }
+
+      reset_sys_modes (t->display_info.tty);
+
+      delete_keyboard_wait_descriptor (fileno (f));
+      
+      fclose (f);
+      if (f != t->display_info.tty->output)
+        fclose (t->display_info.tty->output);
+      
+      t->display_info.tty->input = 0;
+      t->display_info.tty->output = 0;
+
+      if (FRAMEP (t->display_info.tty->top_frame))
+        FRAME_SET_VISIBLE (XFRAME (t->display_info.tty->top_frame), 0);
+      
+    }
+
+  /* Clear display hooks to prevent further output.  */
+  clear_tty_hooks (t);
+
+  return Qnil;
+}
+
+DEFUN ("resume-tty", Fresume_tty, Sresume_tty, 0, 1, 0,
+       doc: /* Resume the previously suspended terminal device TTY.
+The terminal is opened and reinitialized.  Frames that are on the
+suspended terminal are revived.
+
+It is an error to resume a terminal while another terminal is active
+on the same device.
+
+This function runs `resume-tty-functions' after resuming the terminal.
+The functions are run with one arg, the id of the resumed terminal
+device.
+
+`resume-tty' does nothing if it is called on a device that is not
+suspended.
+
+TTY may be a terminal id, a frame, or nil for the terminal device of
+the currently selected frame. */)
+     (tty)
+     Lisp_Object tty;
+{
+  struct terminal *t = get_tty_terminal (tty, 1);
+  int fd;
+
+  if (!t)
+    error ("Unknown tty device");
+
+  if (!t->display_info.tty->input)
+    {
+      if (get_named_tty (t->display_info.tty->name))
+        error ("Cannot resume display while another display is active on the same device");
+
+      fd = emacs_open (t->display_info.tty->name, O_RDWR | O_NOCTTY, 0);
+
+      if (fd == -1)
+        error ("Can not reopen tty device %s: %s", t->display_info.tty->name, strerror (errno));
+
+      if (strcmp (t->display_info.tty->name, DEV_TTY))
+        dissociate_if_controlling_tty (fd);
+
+      t->display_info.tty->output = fdopen (fd, "w+");
+      t->display_info.tty->input = t->display_info.tty->output;
+
+      add_keyboard_wait_descriptor (fd);
+
+      if (FRAMEP (t->display_info.tty->top_frame))
+        FRAME_SET_VISIBLE (XFRAME (t->display_info.tty->top_frame), 1);
+
+      init_sys_modes (t->display_info.tty);
+
+      /* Run `resume-tty-functions'.  */
+      if (!NILP (Vrun_hooks))
+        {
+          Lisp_Object args[2];
+          args[0] = intern ("resume-tty-functions");
+          XSETTERMINAL (args[1], t);
+          Frun_hook_with_args (2, args);
+        }
+    }
+
+  set_tty_hooks (t);
+
+  return Qnil;
+}
+
+\f
+/***********************************************************************
+                              Mouse
+ ***********************************************************************/
+
+#ifdef HAVE_GPM
+void
+term_mouse_moveto (int x, int y)
+{
+  /* TODO: how to set mouse position?
+  const char *name;
+  int fd;
+  name = (const char *) ttyname (0);
+  fd = open (name, O_WRONLY);
+     SOME_FUNCTION (x, y, fd);
+  close (fd);
+  last_mouse_x = x;
+  last_mouse_y = y;  */
+}
+
+static void
+term_show_mouse_face (enum draw_glyphs_face draw)
+{
+  struct window *w = XWINDOW (mouse_face_window);
+  int save_x, save_y;
+  int i;
+
+  struct frame *f = XFRAME (w->frame);
+  struct tty_display_info *tty = FRAME_TTY (f);
+
+  if (/* If window is in the process of being destroyed, don't bother
+        to do anything.  */
+      w->current_matrix != NULL
+      /* Recognize when we are called to operate on rows that don't exist
+        anymore.  This can happen when a window is split.  */
+      && mouse_face_end_row < w->current_matrix->nrows)
+    {
+      /* write_glyphs writes at cursor position, so we need to
+        temporarily move cursor coordinates to the beginning of
+        the highlight region.  */
+      
+      /* Save current cursor co-ordinates */
+      save_y = curY (tty);
+      save_x = curX (tty);
+
+      /* Note that mouse_face_beg_row etc. are window relative.  */
+      for (i = mouse_face_beg_row; i <= mouse_face_end_row; i++)
+       {
+         int start_hpos, end_hpos, nglyphs;
+         struct glyph_row *row = MATRIX_ROW (w->current_matrix, i);
+
+         /* Don't do anything if row doesn't have valid contents.  */
+         if (!row->enabled_p)
+           continue;
+
+         /* For all but the first row, the highlight starts at column 0.  */
+         if (i == mouse_face_beg_row)
+           start_hpos = mouse_face_beg_col;
+         else
+           start_hpos = 0;
+
+         if (i == mouse_face_end_row)
+           end_hpos = mouse_face_end_col;
+         else
+           {
+             end_hpos = row->used[TEXT_AREA];
+             if (draw == DRAW_NORMAL_TEXT)
+               row->fill_line_p = 1; /* Clear to end of line */
+           }
+
+         if (end_hpos <= start_hpos)
+           continue;
+         /* Record that some glyphs of this row are displayed in
+            mouse-face.  */
+         row->mouse_face_p = draw > 0;
+
+         nglyphs = end_hpos - start_hpos;
+
+         if (end_hpos >= row->used[TEXT_AREA])
+           nglyphs = row->used[TEXT_AREA] - start_hpos;
+
+         pos_y = row->y + WINDOW_TOP_EDGE_Y (w);
+         pos_x = row->used[LEFT_MARGIN_AREA] + start_hpos
+           + WINDOW_LEFT_EDGE_X (w);
+         
+         cursor_to (f, pos_y, pos_x);
+
+         if (draw == DRAW_MOUSE_FACE)
+           {
+             tty_write_glyphs_with_face (f, row->glyphs[TEXT_AREA] + start_hpos,
+                                     nglyphs, mouse_face_face_id);
+           }
+         else /* draw == DRAW_NORMAL_TEXT */
+           write_glyphs (f, row->glyphs[TEXT_AREA] + start_hpos, nglyphs);
+       }
+      cursor_to (f, save_y, save_x);
+    }
+}
+
+static void
+term_clear_mouse_face ()
+{
+  if (!NILP (mouse_face_window))
+    term_show_mouse_face (DRAW_NORMAL_TEXT);
+
+  mouse_face_beg_row = mouse_face_beg_col = -1;
+  mouse_face_end_row = mouse_face_end_col = -1;
+  mouse_face_window = Qnil;
+}
+
+/* Find the glyph matrix position of buffer position POS in window W.
+   *HPOS and *VPOS are set to the positions found.  W's current glyphs
+   must be up to date.  If POS is above window start return (0, 0).
+   If POS is after end of W, return end of last line in W.
+   - taken from msdos.c */
+static int
+fast_find_position (struct window *w, int pos, int *hpos, int *vpos)
+{
+  int i, lastcol, line_start_position, maybe_next_line_p = 0;
+  int yb = window_text_bottom_y (w);
+  struct glyph_row *row = MATRIX_ROW (w->current_matrix, 0), *best_row = row;
+
+  while (row->y < yb)
+    {
+      if (row->used[TEXT_AREA])
+       line_start_position = row->glyphs[TEXT_AREA]->charpos;
+      else
+       line_start_position = 0;
+
+      if (line_start_position > pos)
+       break;
+      /* If the position sought is the end of the buffer,
+        don't include the blank lines at the bottom of the window.  */
+      else if (line_start_position == pos
+              && pos == BUF_ZV (XBUFFER (w->buffer)))
+       {
+         maybe_next_line_p = 1;
+         break;
+       }
+      else if (line_start_position > 0)
+       best_row = row;
+
+      /* Don't overstep the last matrix row, lest we get into the
+        never-never land... */
+      if (row->y + 1 >= yb)
+       break;
+
+      ++row;
+    }
+
+  /* Find the right column within BEST_ROW.  */
+  lastcol = 0;
+  row = best_row;
+  for (i = 0; i < row->used[TEXT_AREA]; i++)
+    {
+      struct glyph *glyph = row->glyphs[TEXT_AREA] + i;
+      int charpos;
+
+      charpos = glyph->charpos;
+      if (charpos == pos)
+       {
+         *hpos = i;
+         *vpos = row->y;
+         return 1;
+       }
+      else if (charpos > pos)
+       break;
+      else if (charpos > 0)
+       lastcol = i;
+    }
+
+  /* If we're looking for the end of the buffer,
+     and we didn't find it in the line we scanned,
+     use the start of the following line.  */
+  if (maybe_next_line_p)
+    {
+      ++row;
+      lastcol = 0;
+    }
+
+  *vpos = row->y;
+  *hpos = lastcol + 1;
+  return 0;
+}
+
+static void
+term_mouse_highlight (struct frame *f, int x, int y)
+{
+  enum window_part part;
+  Lisp_Object window;
+  struct window *w;
+  struct buffer *b;
+
+  if (NILP (Vmouse_highlight)
+      || !f->glyphs_initialized_p)
+    return;
+
+  /* Which window is that in?  */
+  window = window_from_coordinates (f, x, y, &part, &x, &y, 0);
+
+  /* Not on a window -> return.  */
+  if (!WINDOWP (window))
+    return;
+
+  if (!EQ (window, mouse_face_window))
+    term_clear_mouse_face ();
+
+  w = XWINDOW (window);
+
+  /* Are we in a window whose display is up to date?
+     And verify the buffer's text has not changed.  */
+  b = XBUFFER (w->buffer);
+  if (part == ON_TEXT
+      && EQ (w->window_end_valid, w->buffer)
+      && XFASTINT (w->last_modified) == BUF_MODIFF (b)
+      && XFASTINT (w->last_overlay_modified) == BUF_OVERLAY_MODIFF (b))
+    {
+      int pos, i, nrows = w->current_matrix->nrows;
+      struct glyph_row *row;
+      struct glyph *glyph;
+
+      /* Find the glyph under X/Y.  */
+      glyph = NULL;
+      if (y >= 0 && y < nrows)
+       {
+         row = MATRIX_ROW (w->current_matrix, y);
+         /* Give up if some row before the one we are looking for is
+            not enabled.  */
+         for (i = 0; i <= y; i++)
+           if (!MATRIX_ROW (w->current_matrix, i)->enabled_p)
+             break;
+         if (i > y  /* all rows upto and including the one at Y are enabled */
+             && row->displays_text_p
+             && x <  window_box_width (w, TEXT_AREA))
+           {
+             glyph = row->glyphs[TEXT_AREA];
+             if (x >= row->used[TEXT_AREA])
+               glyph = NULL;
+             else
+               {
+                 glyph += x;
+                 if (!BUFFERP (glyph->object))
+                   glyph = NULL;
+               }
+           }
+       }
+
+      /* Clear mouse face if X/Y not over text.  */
+      if (glyph == NULL)
+       {
+         term_clear_mouse_face ();
+         return;
+       }
+
+      if (!BUFFERP (glyph->object))
+       abort ();
+      pos = glyph->charpos;
+
+      /* Check for mouse-face.  */
+      {
+       extern Lisp_Object Qmouse_face;
+       Lisp_Object mouse_face, overlay, position, *overlay_vec;
+       int noverlays, obegv, ozv;
+       struct buffer *obuf;
+
+       /* If we get an out-of-range value, return now; avoid an error.  */
+       if (pos > BUF_Z (b))
+         return;
+
+       /* Make the window's buffer temporarily current for
+          overlays_at and compute_char_face.  */
+       obuf = current_buffer;
+       current_buffer = b;
+       obegv = BEGV;
+       ozv = ZV;
+       BEGV = BEG;
+       ZV = Z;
+
+       /* Is this char mouse-active?  */
+       XSETINT (position, pos);
+
+       /* Put all the overlays we want in a vector in overlay_vec.  */
+       GET_OVERLAYS_AT (pos, overlay_vec, noverlays, NULL, 0);
+       /* Sort overlays into increasing priority order.  */
+       noverlays = sort_overlays (overlay_vec, noverlays, w);
+
+       /* Check mouse-face highlighting.  */
+       if (!(EQ (window, mouse_face_window)
+             && y >= mouse_face_beg_row
+             && y <= mouse_face_end_row
+             && (y > mouse_face_beg_row
+                 || x >= mouse_face_beg_col)
+             && (y < mouse_face_end_row
+                 || x < mouse_face_end_col
+                 || mouse_face_past_end)))
+         {
+           /* Clear the display of the old active region, if any.  */
+           term_clear_mouse_face ();
+
+           /* Find the highest priority overlay that has a mouse-face
+              property.  */
+           overlay = Qnil;
+           for (i = noverlays - 1; i >= 0; --i)
+             {
+               mouse_face = Foverlay_get (overlay_vec[i], Qmouse_face);
+               if (!NILP (mouse_face))
+                 {
+                   overlay = overlay_vec[i];
+                   break;
+                 }
+             }
+
+           /* If no overlay applies, get a text property.  */
+           if (NILP (overlay))
+             mouse_face = Fget_text_property (position, Qmouse_face,
+                                              w->buffer);
+
+           /* Handle the overlay case.  */
+           if (!NILP (overlay))
+             {
+               /* Find the range of text around this char that
+                  should be active.  */
+               Lisp_Object before, after;
+               int ignore;
+
+
+               before = Foverlay_start (overlay);
+               after = Foverlay_end (overlay);
+               /* Record this as the current active region.  */
+               fast_find_position (w, XFASTINT (before),
+                                   &mouse_face_beg_col,
+                                   &mouse_face_beg_row);
+
+               mouse_face_past_end
+                 = !fast_find_position (w, XFASTINT (after),
+                                        &mouse_face_end_col,
+                                        &mouse_face_end_row);
+               mouse_face_window = window;
+
+               mouse_face_face_id
+                 = face_at_buffer_position (w, pos, 0, 0,
+                                            &ignore, pos + 1, 1);
+
+               /* Display it as active.  */
+               term_show_mouse_face (DRAW_MOUSE_FACE);
+             }
+           /* Handle the text property case.  */
+           else if (!NILP (mouse_face))
+             {
+               /* Find the range of text around this char that
+                  should be active.  */
+               Lisp_Object before, after, beginning, end;
+               int ignore;
+
+               beginning = Fmarker_position (w->start);
+               XSETINT (end, (BUF_Z (b) - XFASTINT (w->window_end_pos)));
+               before
+                 = Fprevious_single_property_change (make_number (pos + 1),
+                                                     Qmouse_face,
+                                                     w->buffer, beginning);
+               after
+                 = Fnext_single_property_change (position, Qmouse_face,
+                                                 w->buffer, end);
+
+               /* Record this as the current active region.  */
+               fast_find_position (w, XFASTINT (before),
+                                   &mouse_face_beg_col,
+                                   &mouse_face_beg_row);
+               mouse_face_past_end
+                 = !fast_find_position (w, XFASTINT (after),
+                                        &mouse_face_end_col,
+                                        &mouse_face_end_row);
+               mouse_face_window = window;
+
+               mouse_face_face_id
+                 = face_at_buffer_position (w, pos, 0, 0,
+                                            &ignore, pos + 1, 1);
+
+               /* Display it as active.  */
+               term_show_mouse_face (DRAW_MOUSE_FACE);
+             }
+         }
+
+       /* Look for a `help-echo' property.  */
+       {
+         Lisp_Object help;
+         extern Lisp_Object Qhelp_echo;
+
+         /* Check overlays first.  */
+         help = Qnil;
+         for (i = noverlays - 1; i >= 0 && NILP (help); --i)
+           {
+             overlay = overlay_vec[i];
+             help = Foverlay_get (overlay, Qhelp_echo);
+           }
+
+         if (!NILP (help))
+           {
+             help_echo_string = help;
+             help_echo_window = window;
+             help_echo_object = overlay;
+             help_echo_pos = pos;
+           }
+         /* Try text properties.  */
+         else if (NILP (help)
+                  && ((STRINGP (glyph->object)
+                       && glyph->charpos >= 0
+                       && glyph->charpos < SCHARS (glyph->object))
+                      || (BUFFERP (glyph->object)
+                          && glyph->charpos >= BEGV
+                          && glyph->charpos < ZV)))
+           {
+             help = Fget_text_property (make_number (glyph->charpos),
+                                        Qhelp_echo, glyph->object);
+             if (!NILP (help))
+               {
+                 help_echo_string = help;
+                 help_echo_window = window;
+                 help_echo_object = glyph->object;
+                 help_echo_pos = glyph->charpos;
+               }
+           }
+       }
+
+       BEGV = obegv;
+       ZV = ozv;
+       current_buffer = obuf;
+      }
+    }
+}
+
+static int
+term_mouse_movement (FRAME_PTR frame, Gpm_Event *event)
+{
+  /* Has the mouse moved off the glyph it was on at the last sighting?  */
+  if (event->x != last_mouse_x || event->y != last_mouse_y)
+    {
+      frame->mouse_moved = 1;
+      term_mouse_highlight (frame, event->x, event->y);
+      /* Remember which glyph we're now on.  */
+      last_mouse_x = event->x;
+      last_mouse_y = event->y;
+      return 1;
+    }
+  return 0;
+}
+
+/* Return the current position of the mouse.
+
+   Set *f to the frame the mouse is in, or zero if the mouse is in no
+   Emacs frame.  If it is set to zero, all the other arguments are
+   garbage.
+
+   Set *bar_window to Qnil, and *x and *y to the column and
+   row of the character cell the mouse is over.
+
+   Set *time to the time the mouse was at the returned position.
+
+   This clears mouse_moved until the next motion
+   event arrives.  */
+static void
+term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window,
+                    enum scroll_bar_part *part, Lisp_Object *x,
+                    Lisp_Object *y, unsigned long *time)
+{
+  struct timeval now;
+
+  *fp = SELECTED_FRAME ();
+  (*fp)->mouse_moved = 0;
+
+  *bar_window = Qnil;
+  *part = 0;
+
+  XSETINT (*x, last_mouse_x);
+  XSETINT (*y, last_mouse_y);
+  gettimeofday(&now, 0);
+  *time = (now.tv_sec * 1000) + (now.tv_usec / 1000);
+}
+
+/* Prepare a mouse-event in *RESULT for placement in the input queue.
+
+   If the event is a button press, then note that we have grabbed
+   the mouse.  */
+
+static Lisp_Object
+term_mouse_click (struct input_event *result, Gpm_Event *event,
+                 struct frame *f)
+{
+  struct timeval now;
+  int i, j;
+
+  result->kind = GPM_CLICK_EVENT;
+  for (i = 0, j = GPM_B_LEFT; i < 3; i++, j >>= 1 )
+    {
+      if (event->buttons & j) {
+       result->code = i; /* button number */
+       break;
+      }
+    }
+  gettimeofday(&now, 0);
+  result->timestamp = (now.tv_sec * 1000) + (now.tv_usec / 1000);
+
+  if (event->type & GPM_UP)
+    result->modifiers = up_modifier;
+  else if (event->type & GPM_DOWN)
+    result->modifiers = down_modifier;
+  else
+    result->modifiers = 0;
+  
+  if (event->type & GPM_SINGLE)
+    result->modifiers |= click_modifier;
+  
+  if (event->type & GPM_DOUBLE)
+    result->modifiers |= double_modifier;
+
+  if (event->type & GPM_TRIPLE)
+    result->modifiers |= triple_modifier;
+
+  if (event->type & GPM_DRAG)
+    result->modifiers |= drag_modifier;
+
+  if (!(event->type & (GPM_MOVE | GPM_DRAG))) {
+
+    /* 1 << KG_SHIFT */
+    if (event->modifiers & (1 << 0))
+      result->modifiers |= shift_modifier;
+
+    /* 1 << KG_CTRL */
+    if (event->modifiers & (1 << 2))
+      result->modifiers |= ctrl_modifier;
+
+    /* 1 << KG_ALT || KG_ALTGR */
+    if (event->modifiers & (1 << 3)
+       || event->modifiers & (1 << 1))
+      result->modifiers |= meta_modifier;
+  }
+
+  XSETINT (result->x, event->x);
+  XSETINT (result->y, event->y);
+  XSETFRAME (result->frame_or_window, f);
+  result->arg = Qnil;
+  return Qnil;
+}
+
+int 
+handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct input_event* hold_quit)
+{
+  struct frame *f = XFRAME (tty->top_frame);
+  struct input_event ie;
+  int do_help = 0;
+  int count = 0;
+
+  EVENT_INIT (ie);
+  ie.kind = NO_EVENT;
+  ie.arg = Qnil;
+
+  if (event->type & (GPM_MOVE | GPM_DRAG)) {
+    previous_help_echo_string = help_echo_string;
+    help_echo_string = Qnil;
+
+    Gpm_DrawPointer (event->x, event->y, fileno (tty->output));
+
+    if (!term_mouse_movement (f, event))
+      help_echo_string = previous_help_echo_string;
+
+    /* If the contents of the global variable help_echo_string
+       has changed, generate a HELP_EVENT.  */
+    if (!NILP (help_echo_string)
+       || !NILP (previous_help_echo_string))
+      do_help = 1;
+
+    goto done;
+  }
+  else {
+    f->mouse_moved = 0;
+    term_mouse_click (&ie, event, f);
+  }
+
+ done:
+  if (ie.kind != NO_EVENT)
+    {
+      kbd_buffer_store_event_hold (&ie, hold_quit);
+      count++;
+    }
+
+  if (do_help
+      && !(hold_quit && hold_quit->kind != NO_EVENT))
+    {
+      Lisp_Object frame;
+
+      if (f)
+       XSETFRAME (frame, f);
+      else
+       frame = Qnil;
+
+      gen_help_event (help_echo_string, frame, help_echo_window,
+                     help_echo_object, help_echo_pos);
+      count++;
+    }
+
+  return count;
+}
+
+DEFUN ("gpm-mouse-start", Fgpm_mouse_start, Sgpm_mouse_start,
+       0, 0, 0,
+       doc: /* Open a connection to Gpm.
+Gpm-mouse can only be activated for one tty at a time.  */)
+     ()
+{
+  struct frame *f = SELECTED_FRAME ();
+  struct tty_display_info *tty
+    = ((f)->output_method == output_termcap
+       ? (f)->terminal->display_info.tty : NULL);
+  Gpm_Connect connection;
+
+  if (!tty)
+    error ("Gpm-mouse only works in the GNU/Linux console");
+  if (gpm_tty == tty)
+    return Qnil;               /* Already activated, nothing to do.  */
+  if (gpm_tty)
+    error ("Gpm-mouse can only be activated for one tty at a time");
+
+  connection.eventMask = ~0;
+  connection.defaultMask = ~GPM_HARD;
+  connection.maxMod = ~0;
+  connection.minMod = 0;
+  gpm_zerobased = 1;
+
+  if (Gpm_Open (&connection, 0) < 0)
+    error ("Gpm-mouse failed to connect to the gpm daemon");
+  else
+    {
+      gpm_tty = tty;
+      /* `init_sys_modes' arranges for mouse movements sent through gpm_fd
+        to generate SIGIOs.  Apparently we need to call reset_sys_modes
+        before calling init_sys_modes.  */
+      reset_sys_modes (tty);
+      init_sys_modes (tty);
+      add_gpm_wait_descriptor (gpm_fd);
+      return Qnil;
+    }
+}
+
+DEFUN ("gpm-mouse-stop", Fgpm_mouse_stop, Sgpm_mouse_stop,
+       0, 0, 0,
+       doc: /* Close a connection to Gpm.  */)
+     ()
+{
+  struct frame *f = SELECTED_FRAME ();
+  struct tty_display_info *tty
+    = ((f)->output_method == output_termcap
+       ? (f)->terminal->display_info.tty : NULL);
+
+  if (!tty || gpm_tty != tty)
+    return Qnil;       /* Not activated on this terminal, nothing to do.  */
+  
+  if (gpm_fd >= 0)
+    delete_gpm_wait_descriptor (gpm_fd);
+  while (Gpm_Close()); /* close all the stack */
+  gpm_tty = NULL;
+  return Qnil;
+}
+#endif /* HAVE_GPM */
+
+\f
+/***********************************************************************
+                           Initialization
+ ***********************************************************************/
+
+/* Initialize the tty-dependent part of frame F.  The frame must
+   already have its device initialized. */
+
+void
+create_tty_output (struct frame *f)
+{
+  struct tty_output *t;
+
+  if (! FRAME_TERMCAP_P (f))
+    abort ();
+
+  t = xmalloc (sizeof (struct tty_output));
+  bzero (t, sizeof (struct tty_output));
+
+  t->display_info = FRAME_TERMINAL (f)->display_info.tty;
+
+  f->output_data.tty = t;
+}
+
+/* Delete the tty-dependent part of frame F. */
+
+static void
+delete_tty_output (struct frame *f)
+{
+  if (! FRAME_TERMCAP_P (f))
+    abort ();
+
+  xfree (f->output_data.tty);
+}
+
+\f
+/* Reset the hooks in TERMINAL.  */
+
+static void
+clear_tty_hooks (struct terminal *terminal)
+{
+  terminal->rif = 0;
+  terminal->cursor_to_hook = 0;
+  terminal->raw_cursor_to_hook = 0;
+  terminal->clear_to_end_hook = 0;
+  terminal->clear_frame_hook = 0;
+  terminal->clear_end_of_line_hook = 0;
+  terminal->ins_del_lines_hook = 0;
+  terminal->insert_glyphs_hook = 0;
+  terminal->write_glyphs_hook = 0;
+  terminal->delete_glyphs_hook = 0;
+  terminal->ring_bell_hook = 0;
+  terminal->reset_terminal_modes_hook = 0;
+  terminal->set_terminal_modes_hook = 0;
+  terminal->update_begin_hook = 0;
+  terminal->update_end_hook = 0;
+  terminal->set_terminal_window_hook = 0;
+  terminal->mouse_position_hook = 0;
+  terminal->frame_rehighlight_hook = 0;
+  terminal->frame_raise_lower_hook = 0;
+  terminal->fullscreen_hook = 0;
+  terminal->set_vertical_scroll_bar_hook = 0;
+  terminal->condemn_scroll_bars_hook = 0;
+  terminal->redeem_scroll_bar_hook = 0;
+  terminal->judge_scroll_bars_hook = 0;
+  terminal->read_socket_hook = 0;
+  terminal->frame_up_to_date_hook = 0;
+
+  /* Leave these two set, or suspended frames are not deleted
+     correctly.  */
+  terminal->delete_frame_hook = &delete_tty_output;
+  terminal->delete_terminal_hook = &delete_tty;
+}
+
+/* Initialize hooks in TERMINAL with the values needed for a tty.  */
+
+static void
+set_tty_hooks (struct terminal *terminal)
+{
+  terminal->rif = 0; /* ttys don't support window-based redisplay. */
+
+  terminal->cursor_to_hook = &tty_cursor_to;
+  terminal->raw_cursor_to_hook = &tty_raw_cursor_to;
+
+  terminal->clear_to_end_hook = &tty_clear_to_end;
+  terminal->clear_frame_hook = &tty_clear_frame;
+  terminal->clear_end_of_line_hook = &tty_clear_end_of_line;
+
+  terminal->ins_del_lines_hook = &tty_ins_del_lines;
+
+  terminal->insert_glyphs_hook = &tty_insert_glyphs;
+  terminal->write_glyphs_hook = &tty_write_glyphs;
+  terminal->delete_glyphs_hook = &tty_delete_glyphs;
+
+  terminal->ring_bell_hook = &tty_ring_bell;
+  
+  terminal->reset_terminal_modes_hook = &tty_reset_terminal_modes;
+  terminal->set_terminal_modes_hook = &tty_set_terminal_modes;
+  terminal->update_begin_hook = 0; /* Not needed. */
+  terminal->update_end_hook = &tty_update_end;
+  terminal->set_terminal_window_hook = &tty_set_terminal_window;
+
+  terminal->mouse_position_hook = 0; /* Not needed. */
+  terminal->frame_rehighlight_hook = 0; /* Not needed. */
+  terminal->frame_raise_lower_hook = 0; /* Not needed. */
+
+  terminal->set_vertical_scroll_bar_hook = 0; /* Not needed. */
+  terminal->condemn_scroll_bars_hook = 0; /* Not needed. */
+  terminal->redeem_scroll_bar_hook = 0; /* Not needed. */
+  terminal->judge_scroll_bars_hook = 0; /* Not needed. */
+
+  terminal->read_socket_hook = &tty_read_avail_input; /* keyboard.c */
+  terminal->frame_up_to_date_hook = 0; /* Not needed. */
+  
+  terminal->delete_frame_hook = &delete_tty_output;
+  terminal->delete_terminal_hook = &delete_tty;
+}
+
+/* Drop the controlling terminal if fd is the same device. */
+static void
+dissociate_if_controlling_tty (int fd)
+{
+#ifndef WINDOWSNT
+  int pgid;
+  EMACS_GET_TTY_PGRP (fd, &pgid); /* If tcgetpgrp succeeds, fd is the ctty. */
+  if (pgid != -1)
+    {
+#if defined (USG) && !defined (BSD_PGRPS)
+      setpgrp ();
+      no_controlling_tty = 1;
+#elif defined (CYGWIN)
+      setsid ();
+      no_controlling_tty = 1;
+#else
+#ifdef TIOCNOTTY                /* Try BSD ioctls. */
+      sigblock (sigmask (SIGTTOU));
+      fd = emacs_open (DEV_TTY, O_RDWR, 0);
+      if (fd != -1 && ioctl (fd, TIOCNOTTY, 0) != -1)
+        {
+          no_controlling_tty = 1;
+        }
+      if (fd != -1)
+        emacs_close (fd);
+      sigunblock (sigmask (SIGTTOU));
+#else
+      /* Unknown system. */
+      croak ();
+#endif  /* ! TIOCNOTTY */
+#endif  /* ! USG */
+    }
+#endif /* !WINDOWSNT */
+}
+
+static void maybe_fatal();
+
+/* Create a termcap display on the tty device with the given name and
+   type.
+
+   If NAME is NULL, then use the controlling tty, i.e., "/dev/tty".
+   Otherwise NAME should be a path to the tty device file,
+   e.g. "/dev/pts/7".
+
+   TERMINAL_TYPE is the termcap type of the device, e.g. "vt100".
+
+   If MUST_SUCCEED is true, then all errors are fatal. */
+
+struct terminal *
+init_tty (char *name, char *terminal_type, int must_succeed)
+{
+  char *area = NULL;
+  char **address = &area;
+  char *buffer = NULL;
+  int buffer_size = 4096;
+  register char *p = NULL;
+  int status;
+  struct tty_display_info *tty = NULL;
+  struct terminal *terminal = NULL;
+  int ctty = 0;                 /* 1 if asked to open controlling tty. */
+
+  if (!terminal_type)
+    maybe_fatal (must_succeed, 0, 0,
+                 "Unknown terminal type",
+                 "Unknown terminal type");
+
+  if (name == NULL)
+    name = DEV_TTY;
+  if (!strcmp (name, DEV_TTY))
+    ctty = 1;
+
+  /* If we already have a terminal on the given device, use that.  If
+     all such terminals are suspended, create a new one instead.  */
+  /* XXX Perhaps this should be made explicit by having init_tty
+     always create a new terminal and separating terminal and frame
+     creation on Lisp level.  */
+  terminal = get_named_tty (name);
+  if (terminal)
+    return terminal;
+
+  terminal = create_terminal ();
+  tty = (struct tty_display_info *) xmalloc (sizeof (struct tty_display_info));
+  bzero (tty, sizeof (struct tty_display_info));
+  tty->next = tty_list;
+  tty_list = tty;
+
+  terminal->type = output_termcap;
+  terminal->display_info.tty = tty;
+  tty->terminal = terminal;
+
+  tty->Wcm = (struct cm *) xmalloc (sizeof (struct cm));
+  Wcm_clear (tty);
+
+#ifndef WINDOWSNT
+  set_tty_hooks (terminal);
+
+  {
+    int fd;
+    FILE *file;
+
+#ifdef O_IGNORE_CTTY
+    if (!ctty)
+      /* Open the terminal device.  Don't recognize it as our
+         controlling terminal, and don't make it the controlling tty
+         if we don't have one at the moment.  */
+      fd = emacs_open (name, O_RDWR | O_IGNORE_CTTY | O_NOCTTY, 0);
+    else
+#else
+      /* Alas, O_IGNORE_CTTY is a GNU extension that seems to be only
+         defined on Hurd.  On other systems, we need to explicitly
+         dissociate ourselves from the controlling tty when we want to
+         open a frame on the same terminal.  */
+      fd = emacs_open (name, O_RDWR | O_NOCTTY, 0);
+#endif /* O_IGNORE_CTTY */
+
+    if (fd < 0)
+      maybe_fatal (must_succeed, buffer, terminal,
+                   "Could not open file: %s",
+                   "Could not open file: %s",
+                   name);
+    if (!isatty (fd))
+      {
+        close (fd);
+        maybe_fatal (must_succeed, buffer, terminal,
+                     "Not a tty device: %s",
+                     "Not a tty device: %s",
+                     name);
+      }
+
+#ifndef O_IGNORE_CTTY
+    if (!ctty)
+      dissociate_if_controlling_tty (fd);
+#endif
+
+    file = fdopen (fd, "w+");
+    tty->name = xstrdup (name);
+    terminal->name = xstrdup (name);
+    tty->input = file;
+    tty->output = file;
+  }
+
+  tty->type = xstrdup (terminal_type);
+
+  add_keyboard_wait_descriptor (fileno (tty->input));
+
+#endif
+
+  encode_terminal_bufsize = 0;
+
+#ifdef HAVE_GPM
+  terminal->mouse_position_hook = term_mouse_position;
+  mouse_face_window = Qnil;
+#endif
+
+#ifdef WINDOWSNT
+  initialize_w32_display (terminal);
+  /* The following two are inaccessible from w32console.c.  */
+  terminal->delete_frame_hook = &delete_tty_output;
+  terminal->delete_terminal_hook = &delete_tty;
+
+  tty->name = xstrdup (name);
+  terminal->name = xstrdup (name);
+  tty->type = xstrdup (terminal_type);
+
+  tty->output = stdout;
+  tty->input = stdin;
+  add_keyboard_wait_descriptor (0);
+
+  Wcm_clear (tty);
+
+  {
+    struct frame *f = XFRAME (selected_frame);
+
+    FrameRows (tty) = FRAME_LINES (f);
+    FrameCols (tty) = FRAME_COLS (f);
+    tty->specified_window = FRAME_LINES (f);
+
+    FRAME_CAN_HAVE_SCROLL_BARS (f) = 0;
+    FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none;
+  }
+  tty->delete_in_insert_mode = 1;
+
+  UseTabs (tty) = 0;
+  terminal->scroll_region_ok = 0;
+
+  /* Seems to insert lines when it's not supposed to, messing up the
+     display.  In doing a trace, it didn't seem to be called much, so I
+     don't think we're losing anything by turning it off.  */
+  terminal->line_ins_del_ok = 0;
+  terminal->char_ins_del_ok = 1;
+
+  baud_rate = 19200;
+
+  tty->TN_max_colors = 16;  /* Required to be non-zero for tty-display-color-p */
+
+#else  /* not WINDOWSNT */
+
+  Wcm_clear (tty);
 
   buffer = (char *) xmalloc (buffer_size);
+
+  /* On some systems, tgetent tries to access the controlling
+     terminal. */
+  sigblock (sigmask (SIGTTOU));
   status = tgetent (buffer, terminal_type);
+  sigunblock (sigmask (SIGTTOU));
+
   if (status < 0)
     {
 #ifdef TERMINFO
-      fatal ("Cannot open terminfo database file");
+      maybe_fatal (must_succeed, buffer, terminal,
+                   "Cannot open terminfo database file",
+                   "Cannot open terminfo database file");
 #else
-      fatal ("Cannot open termcap database file");
+      maybe_fatal (must_succeed, buffer, terminal,
+                   "Cannot open termcap database file",
+                   "Cannot open termcap database file");
 #endif
     }
   if (status == 0)
     {
 #ifdef TERMINFO
-      fatal ("Terminal type %s is not defined.\n\
+      maybe_fatal (must_succeed, buffer, terminal,
+                   "Terminal type %s is not defined",
+                   "Terminal type %s is not defined.\n\
 If that is not the actual type of terminal you have,\n\
 use the Bourne shell command `TERM=... export TERM' (C-shell:\n\
 `setenv TERM ...') to specify the correct type.  It may be necessary\n\
 to do `unset TERMINFO' (C-shell: `unsetenv TERMINFO') as well.",
-            terminal_type);
+                   terminal_type);
 #else
-      fatal ("Terminal type %s is not defined.\n\
+      maybe_fatal (must_succeed, buffer, terminal,
+                   "Terminal type %s is not defined",
+                   "Terminal type %s is not defined.\n\
 If that is not the actual type of terminal you have,\n\
 use the Bourne shell command `TERM=... export TERM' (C-shell:\n\
 `setenv TERM ...') to specify the correct type.  It may be necessary\n\
 to do `unset TERMCAP' (C-shell: `unsetenv TERMCAP') as well.",
-            terminal_type);
+                   terminal_type);
 #endif
     }
 
@@ -2403,219 +3370,237 @@ to do `unset TERMCAP' (C-shell: `unsetenv TERMCAP') as well.",
 #endif
   area = (char *) xmalloc (buffer_size);
 
-  TS_ins_line = tgetstr ("al", address);
-  TS_ins_multi_lines = tgetstr ("AL", address);
-  TS_bell = tgetstr ("bl", address);
-  BackTab = tgetstr ("bt", address);
-  TS_clr_to_bottom = tgetstr ("cd", address);
-  TS_clr_line = tgetstr ("ce", address);
-  TS_clr_frame = tgetstr ("cl", address);
-  ColPosition = NULL; /* tgetstr ("ch", address); */
-  AbsPosition = tgetstr ("cm", address);
-  CR = tgetstr ("cr", address);
-  TS_set_scroll_region = tgetstr ("cs", address);
-  TS_set_scroll_region_1 = tgetstr ("cS", address);
-  RowPosition = tgetstr ("cv", address);
-  TS_del_char = tgetstr ("dc", address);
-  TS_del_multi_chars = tgetstr ("DC", address);
-  TS_del_line = tgetstr ("dl", address);
-  TS_del_multi_lines = tgetstr ("DL", address);
-  TS_delete_mode = tgetstr ("dm", address);
-  TS_end_delete_mode = tgetstr ("ed", address);
-  TS_end_insert_mode = tgetstr ("ei", address);
-  Home = tgetstr ("ho", address);
-  TS_ins_char = tgetstr ("ic", address);
-  TS_ins_multi_chars = tgetstr ("IC", address);
-  TS_insert_mode = tgetstr ("im", address);
-  TS_pad_inserted_char = tgetstr ("ip", address);
-  TS_end_keypad_mode = tgetstr ("ke", address);
-  TS_keypad_mode = tgetstr ("ks", address);
-  LastLine = tgetstr ("ll", address);
-  Right = tgetstr ("nd", address);
-  Down = tgetstr ("do", address);
-  if (!Down)
-    Down = tgetstr ("nl", address); /* Obsolete name for "do" */
+  tty->TS_ins_line = tgetstr ("al", address);
+  tty->TS_ins_multi_lines = tgetstr ("AL", address);
+  tty->TS_bell = tgetstr ("bl", address);
+  BackTab (tty) = tgetstr ("bt", address);
+  tty->TS_clr_to_bottom = tgetstr ("cd", address);
+  tty->TS_clr_line = tgetstr ("ce", address);
+  tty->TS_clr_frame = tgetstr ("cl", address);
+  ColPosition (tty) = NULL; /* tgetstr ("ch", address); */
+  AbsPosition (tty) = tgetstr ("cm", address);
+  CR (tty) = tgetstr ("cr", address);
+  tty->TS_set_scroll_region = tgetstr ("cs", address);
+  tty->TS_set_scroll_region_1 = tgetstr ("cS", address);
+  RowPosition (tty) = tgetstr ("cv", address);
+  tty->TS_del_char = tgetstr ("dc", address);
+  tty->TS_del_multi_chars = tgetstr ("DC", address);
+  tty->TS_del_line = tgetstr ("dl", address);
+  tty->TS_del_multi_lines = tgetstr ("DL", address);
+  tty->TS_delete_mode = tgetstr ("dm", address);
+  tty->TS_end_delete_mode = tgetstr ("ed", address);
+  tty->TS_end_insert_mode = tgetstr ("ei", address);
+  Home (tty) = tgetstr ("ho", address);
+  tty->TS_ins_char = tgetstr ("ic", address);
+  tty->TS_ins_multi_chars = tgetstr ("IC", address);
+  tty->TS_insert_mode = tgetstr ("im", address);
+  tty->TS_pad_inserted_char = tgetstr ("ip", address);
+  tty->TS_end_keypad_mode = tgetstr ("ke", address);
+  tty->TS_keypad_mode = tgetstr ("ks", address);
+  LastLine (tty) = tgetstr ("ll", address);
+  Right (tty) = tgetstr ("nd", address);
+  Down (tty) = tgetstr ("do", address);
+  if (!Down (tty))
+    Down (tty) = tgetstr ("nl", address); /* Obsolete name for "do" */
 #ifdef VMS
   /* VMS puts a carriage return before each linefeed,
      so it is not safe to use linefeeds.  */
-  if (Down && Down[0] == '\n' && Down[1] == '\0')
-    Down = 0;
+  if (Down (tty) && Down (tty)[0] == '\n' && Down (tty)[1] == '\0')
+    Down (tty) = 0;
 #endif /* VMS */
   if (tgetflag ("bs"))
-    Left = "\b";                 /* can't possibly be longer! */
+    Left (tty) = "\b";           /* can't possibly be longer! */
   else                           /* (Actually, "bs" is obsolete...) */
-    Left = tgetstr ("le", address);
-  if (!Left)
-    Left = tgetstr ("bc", address); /* Obsolete name for "le" */
-  TS_pad_char = tgetstr ("pc", address);
-  TS_repeat = tgetstr ("rp", address);
-  TS_end_standout_mode = tgetstr ("se", address);
-  TS_fwd_scroll = tgetstr ("sf", address);
-  TS_standout_mode = tgetstr ("so", address);
-  TS_rev_scroll = tgetstr ("sr", address);
-  Wcm.cm_tab = tgetstr ("ta", address);
-  TS_end_termcap_modes = tgetstr ("te", address);
-  TS_termcap_modes = tgetstr ("ti", address);
-  Up = tgetstr ("up", address);
-  TS_visible_bell = tgetstr ("vb", address);
-  TS_cursor_normal = tgetstr ("ve", address);
-  TS_cursor_visible = tgetstr ("vs", address);
-  TS_cursor_invisible = tgetstr ("vi", address);
-  TS_set_window = tgetstr ("wi", address);
-
-  TS_enter_underline_mode = tgetstr ("us", address);
-  TS_exit_underline_mode = tgetstr ("ue", address);
-  TS_enter_bold_mode = tgetstr ("md", address);
-  TS_enter_dim_mode = tgetstr ("mh", address);
-  TS_enter_blink_mode = tgetstr ("mb", address);
-  TS_enter_reverse_mode = tgetstr ("mr", address);
-  TS_enter_alt_charset_mode = tgetstr ("as", address);
-  TS_exit_alt_charset_mode = tgetstr ("ae", address);
-  TS_exit_attribute_mode = tgetstr ("me", address);
-
-  MultiUp = tgetstr ("UP", address);
-  MultiDown = tgetstr ("DO", address);
-  MultiLeft = tgetstr ("LE", address);
-  MultiRight = tgetstr ("RI", address);
+    Left (tty) = tgetstr ("le", address);
+  if (!Left (tty))
+    Left (tty) = tgetstr ("bc", address); /* Obsolete name for "le" */
+  tty->TS_pad_char = tgetstr ("pc", address);
+  tty->TS_repeat = tgetstr ("rp", address);
+  tty->TS_end_standout_mode = tgetstr ("se", address);
+  tty->TS_fwd_scroll = tgetstr ("sf", address);
+  tty->TS_standout_mode = tgetstr ("so", address);
+  tty->TS_rev_scroll = tgetstr ("sr", address);
+  tty->Wcm->cm_tab = tgetstr ("ta", address);
+  tty->TS_end_termcap_modes = tgetstr ("te", address);
+  tty->TS_termcap_modes = tgetstr ("ti", address);
+  Up (tty) = tgetstr ("up", address);
+  tty->TS_visible_bell = tgetstr ("vb", address);
+  tty->TS_cursor_normal = tgetstr ("ve", address);
+  tty->TS_cursor_visible = tgetstr ("vs", address);
+  tty->TS_cursor_invisible = tgetstr ("vi", address);
+  tty->TS_set_window = tgetstr ("wi", address);
+
+  tty->TS_enter_underline_mode = tgetstr ("us", address);
+  tty->TS_exit_underline_mode = tgetstr ("ue", address);
+  tty->TS_enter_bold_mode = tgetstr ("md", address);
+  tty->TS_enter_dim_mode = tgetstr ("mh", address);
+  tty->TS_enter_blink_mode = tgetstr ("mb", address);
+  tty->TS_enter_reverse_mode = tgetstr ("mr", address);
+  tty->TS_enter_alt_charset_mode = tgetstr ("as", address);
+  tty->TS_exit_alt_charset_mode = tgetstr ("ae", address);
+  tty->TS_exit_attribute_mode = tgetstr ("me", address);
+
+  MultiUp (tty) = tgetstr ("UP", address);
+  MultiDown (tty) = tgetstr ("DO", address);
+  MultiLeft (tty) = tgetstr ("LE", address);
+  MultiRight (tty) = tgetstr ("RI", address);
 
   /* SVr4/ANSI color suppert.  If "op" isn't available, don't support
      color because we can't switch back to the default foreground and
      background.  */
-  TS_orig_pair = tgetstr ("op", address);
-  if (TS_orig_pair)
+  tty->TS_orig_pair = tgetstr ("op", address);
+  if (tty->TS_orig_pair)
     {
-      TS_set_foreground = tgetstr ("AF", address);
-      TS_set_background = tgetstr ("AB", address);
-      if (!TS_set_foreground)
+      tty->TS_set_foreground = tgetstr ("AF", address);
+      tty->TS_set_background = tgetstr ("AB", address);
+      if (!tty->TS_set_foreground)
        {
          /* SVr4.  */
-         TS_set_foreground = tgetstr ("Sf", address);
-         TS_set_background = tgetstr ("Sb", address);
+         tty->TS_set_foreground = tgetstr ("Sf", address);
+         tty->TS_set_background = tgetstr ("Sb", address);
        }
 
-      TN_max_colors = tgetnum ("Co");
-      TN_max_pairs = tgetnum ("pa");
+      tty->TN_max_colors = tgetnum ("Co");
+      tty->TN_max_pairs = tgetnum ("pa");
 
-      TN_no_color_video = tgetnum ("NC");
-      if (TN_no_color_video == -1)
-       TN_no_color_video = 0;
+      tty->TN_no_color_video = tgetnum ("NC");
+      if (tty->TN_no_color_video == -1)
+        tty->TN_no_color_video = 0;
     }
 
-  tty_default_color_capabilities (1);
+  tty_default_color_capabilities (tty, 1);
 
-  MagicWrap = tgetflag ("xn");
+  MagicWrap (tty) = tgetflag ("xn");
   /* Since we make MagicWrap terminals look like AutoWrap, we need to have
      the former flag imply the latter.  */
-  AutoWrap = MagicWrap || tgetflag ("am");
-  memory_below_frame = tgetflag ("db");
-  TF_hazeltine = tgetflag ("hz");
-  must_write_spaces = tgetflag ("in");
-  meta_key = tgetflag ("km") || tgetflag ("MT");
-  TF_insmode_motion = tgetflag ("mi");
-  TF_standout_motion = tgetflag ("ms");
-  TF_underscore = tgetflag ("ul");
-  TF_teleray = tgetflag ("xt");
-
-  term_get_fkeys (address);
+  AutoWrap (tty) = MagicWrap (tty) || tgetflag ("am");
+  terminal->memory_below_frame = tgetflag ("db");
+  tty->TF_hazeltine = tgetflag ("hz");
+  terminal->must_write_spaces = tgetflag ("in");
+  tty->meta_key = tgetflag ("km") || tgetflag ("MT");
+  tty->TF_insmode_motion = tgetflag ("mi");
+  tty->TF_standout_motion = tgetflag ("ms");
+  tty->TF_underscore = tgetflag ("ul");
+  tty->TF_teleray = tgetflag ("xt");
+
+#endif /* !WINDOWSNT  */
+#ifdef MULTI_KBOARD
+  terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
+  init_kboard (terminal->kboard);
+  terminal->kboard->next_kboard = all_kboards;
+  all_kboards = terminal->kboard;
+  terminal->kboard->reference_count++;
+  /* Don't let the initial kboard remain current longer than necessary.
+     That would cause problems if a file loaded on startup tries to
+     prompt in the mini-buffer.  */
+  if (current_kboard == initial_kboard)
+    current_kboard = terminal->kboard;
+#ifndef WINDOWSNT
+  term_get_fkeys (address, terminal->kboard);
+#endif
+#endif
 
+#ifndef WINDOWSNT
   /* Get frame size from system, or else from termcap.  */
   {
     int height, width;
-    get_frame_size (&width, &height);
-    FRAME_COLS (sf) = width;
-    FRAME_LINES (sf) = height;
+    get_tty_size (fileno (tty->input), &width, &height);
+    FrameCols (tty) = width;
+    FrameRows (tty) = height;
   }
 
-  if (FRAME_COLS (sf) <= 0)
-    SET_FRAME_COLS (sf, tgetnum ("co"));
-  else
-    /* Keep width and external_width consistent */
-    SET_FRAME_COLS (sf, FRAME_COLS (sf));
-  if (FRAME_LINES (sf) <= 0)
-    FRAME_LINES (sf) = tgetnum ("li");
+  if (FrameCols (tty) <= 0)
+    FrameCols (tty) = tgetnum ("co");
+  if (FrameRows (tty) <= 0)
+    FrameRows (tty) = tgetnum ("li");
 
-  if (FRAME_LINES (sf) < 3 || FRAME_COLS (sf) < 3)
-    fatal ("Screen size %dx%d is too small",
-          FRAME_LINES (sf), FRAME_COLS (sf));
+  if (FrameRows (tty) < 3 || FrameCols (tty) < 3)
+    maybe_fatal (must_succeed, NULL, terminal,
+                 "Screen size %dx%d is too small"
+                 "Screen size %dx%d is too small",
+                 FrameCols (tty), FrameRows (tty));
 
-  min_padding_speed = tgetnum ("pb");
-  TabWidth = tgetnum ("tw");
+#if 0  /* This is not used anywhere. */
+  tty->terminal->min_padding_speed = tgetnum ("pb");
+#endif
+
+  TabWidth (tty) = tgetnum ("tw");
 
 #ifdef VMS
   /* These capabilities commonly use ^J.
      I don't know why, but sending them on VMS does not work;
      it causes following spaces to be lost, sometimes.
      For now, the simplest fix is to avoid using these capabilities ever.  */
-  if (Down && Down[0] == '\n')
-    Down = 0;
+  if (Down (tty) && Down (tty)[0] == '\n')
+    Down (tty) = 0;
 #endif /* VMS */
 
-  if (!TS_bell)
-    TS_bell = "\07";
+  if (!tty->TS_bell)
+    tty->TS_bell = "\07";
 
-  if (!TS_fwd_scroll)
-    TS_fwd_scroll = Down;
+  if (!tty->TS_fwd_scroll)
+    tty->TS_fwd_scroll = Down (tty);
 
-  PC = TS_pad_char ? *TS_pad_char : 0;
+  PC = tty->TS_pad_char ? *tty->TS_pad_char : 0;
 
-  if (TabWidth < 0)
-    TabWidth = 8;
+  if (TabWidth (tty) < 0)
+    TabWidth (tty) = 8;
 
 /* Turned off since /etc/termcap seems to have :ta= for most terminals
    and newer termcap doc does not seem to say there is a default.
-  if (!Wcm.cm_tab)
-    Wcm.cm_tab = "\t";
+  if (!tty->Wcm->cm_tab)
+    tty->Wcm->cm_tab = "\t";
 */
 
   /* We don't support standout modes that use `magic cookies', so
      turn off any that do.  */
-  if (TS_standout_mode && tgetnum ("sg") >= 0)
+  if (tty->TS_standout_mode && tgetnum ("sg") >= 0)
     {
-      TS_standout_mode = 0;
-      TS_end_standout_mode = 0;
+      tty->TS_standout_mode = 0;
+      tty->TS_end_standout_mode = 0;
     }
-  if (TS_enter_underline_mode && tgetnum ("ug") >= 0)
+  if (tty->TS_enter_underline_mode && tgetnum ("ug") >= 0)
     {
-      TS_enter_underline_mode = 0;
-      TS_exit_underline_mode = 0;
+      tty->TS_enter_underline_mode = 0;
+      tty->TS_exit_underline_mode = 0;
     }
 
   /* If there's no standout mode, try to use underlining instead.  */
-  if (TS_standout_mode == 0)
+  if (tty->TS_standout_mode == 0)
     {
-      TS_standout_mode = TS_enter_underline_mode;
-      TS_end_standout_mode = TS_exit_underline_mode;
+      tty->TS_standout_mode = tty->TS_enter_underline_mode;
+      tty->TS_end_standout_mode = tty->TS_exit_underline_mode;
     }
 
   /* If no `se' string, try using a `me' string instead.
      If that fails, we can't use standout mode at all.  */
-  if (TS_end_standout_mode == 0)
+  if (tty->TS_end_standout_mode == 0)
     {
       char *s = tgetstr ("me", address);
       if (s != 0)
-       TS_end_standout_mode = s;
+        tty->TS_end_standout_mode = s;
       else
-       TS_standout_mode = 0;
+        tty->TS_standout_mode = 0;
     }
 
-  if (TF_teleray)
+  if (tty->TF_teleray)
     {
-      Wcm.cm_tab = 0;
+      tty->Wcm->cm_tab = 0;
       /* We can't support standout mode, because it uses magic cookies.  */
-      TS_standout_mode = 0;
+      tty->TS_standout_mode = 0;
       /* But that means we cannot rely on ^M to go to column zero! */
-      CR = 0;
+      CR (tty) = 0;
       /* LF can't be trusted either -- can alter hpos */
       /* if move at column 0 thru a line with TS_standout_mode */
-      Down = 0;
+      Down (tty) = 0;
     }
 
   /* Special handling for certain terminal types known to need it */
 
   if (!strcmp (terminal_type, "supdup"))
     {
-      memory_below_frame = 1;
-      Wcm.cm_losewrap = 1;
+      terminal->memory_below_frame = 1;
+      tty->Wcm->cm_losewrap = 1;
     }
   if (!strncmp (terminal_type, "c10", 3)
       || !strcmp (terminal_type, "perq"))
@@ -2632,102 +3617,140 @@ to do `unset TERMCAP' (C-shell: `unsetenv TERMCAP') as well.",
         It would be simpler if the :wi string could go in the termcap
         entry, but it can't because it is not fully valid.
         If it were in the termcap entry, it would confuse other programs.  */
-      if (!TS_set_window)
+      if (!tty->TS_set_window)
        {
-         p = TS_termcap_modes;
+         p = tty->TS_termcap_modes;
          while (*p && strcmp (p, "\033v  "))
            p++;
          if (*p)
-           TS_set_window = "\033v%C %C %C %C ";
+           tty->TS_set_window = "\033v%C %C %C %C ";
        }
       /* Termcap entry often fails to have :in: flag */
-      must_write_spaces = 1;
+      terminal->must_write_spaces = 1;
       /* :ti string typically fails to have \E^G! in it */
       /* This limits scope of insert-char to one line.  */
-      strcpy (area, TS_termcap_modes);
+      strcpy (area, tty->TS_termcap_modes);
       strcat (area, "\033\007!");
-      TS_termcap_modes = area;
+      tty->TS_termcap_modes = area;
       area += strlen (area) + 1;
-      p = AbsPosition;
+      p = AbsPosition (tty);
       /* Change all %+ parameters to %C, to handle
-        values above 96 correctly for the C100.  */
+         values above 96 correctly for the C100.  */
       while (*p)
-       {
-         if (p[0] == '%' && p[1] == '+')
-           p[1] = 'C';
-         p++;
-       }
+        {
+          if (p[0] == '%' && p[1] == '+')
+            p[1] = 'C';
+          p++;
+        }
     }
 
-  FrameRows = FRAME_LINES (sf);
-  FrameCols = FRAME_COLS (sf);
-  specified_window = FRAME_LINES (sf);
+  tty->specified_window = FrameRows (tty);
 
-  if (Wcm_init () == -1)       /* can't do cursor motion */
+  if (Wcm_init (tty) == -1)    /* can't do cursor motion */
+    {
+      maybe_fatal (must_succeed, NULL, terminal,
+                   "Terminal type \"%s\" is not powerful enough to run Emacs",
 #ifdef VMS
-    fatal ("Terminal type \"%s\" is not powerful enough to run Emacs.\n\
+                   "Terminal type \"%s\" is not powerful enough to run Emacs.\n\
 It lacks the ability to position the cursor.\n\
 If that is not the actual type of terminal you have, use either the\n\
 DCL command `SET TERMINAL/DEVICE= ...' for DEC-compatible terminals,\n\
 or `define EMACS_TERM \"terminal type\"' for non-DEC terminals.",
-           terminal_type);
 #else /* not VMS */
 # ifdef TERMINFO
-    fatal ("Terminal type \"%s\" is not powerful enough to run Emacs.\n\
+                   "Terminal type \"%s\" is not powerful enough to run Emacs.\n\
 It lacks the ability to position the cursor.\n\
 If that is not the actual type of terminal you have,\n\
 use the Bourne shell command `TERM=... export TERM' (C-shell:\n\
 `setenv TERM ...') to specify the correct type.  It may be necessary\n\
 to do `unset TERMINFO' (C-shell: `unsetenv TERMINFO') as well.",
-          terminal_type);
 # else /* TERMCAP */
-    fatal ("Terminal type \"%s\" is not powerful enough to run Emacs.\n\
+                   "Terminal type \"%s\" is not powerful enough to run Emacs.\n\
 It lacks the ability to position the cursor.\n\
 If that is not the actual type of terminal you have,\n\
 use the Bourne shell command `TERM=... export TERM' (C-shell:\n\
 `setenv TERM ...') to specify the correct type.  It may be necessary\n\
 to do `unset TERMCAP' (C-shell: `unsetenv TERMCAP') as well.",
-          terminal_type);
 # endif /* TERMINFO */
 #endif /*VMS */
-  if (FRAME_LINES (sf) <= 0
-      || FRAME_COLS (sf) <= 0)
-    fatal ("The frame size has not been specified");
+                   terminal_type);
+    }
+
+  if (FrameRows (tty) <= 0 || FrameCols (tty) <= 0)
+    maybe_fatal (must_succeed, NULL, terminal,
+                 "Could not determine the frame size",
+                 "Could not determine the frame size");
+
+  tty->delete_in_insert_mode
+    = tty->TS_delete_mode && tty->TS_insert_mode
+    && !strcmp (tty->TS_delete_mode, tty->TS_insert_mode);
+
+  tty->se_is_so = (tty->TS_standout_mode
+              && tty->TS_end_standout_mode
+              && !strcmp (tty->TS_standout_mode, tty->TS_end_standout_mode));
+
+  UseTabs (tty) = tabs_safe_p (fileno (tty->input)) && TabWidth (tty) == 8;
+
+  terminal->scroll_region_ok
+    = (tty->Wcm->cm_abs
+       && (tty->TS_set_window || tty->TS_set_scroll_region || tty->TS_set_scroll_region_1));
 
-  delete_in_insert_mode
-    = TS_delete_mode && TS_insert_mode
-      && !strcmp (TS_delete_mode, TS_insert_mode);
+  terminal->line_ins_del_ok
+    = (((tty->TS_ins_line || tty->TS_ins_multi_lines)
+        && (tty->TS_del_line || tty->TS_del_multi_lines))
+       || (terminal->scroll_region_ok
+           && tty->TS_fwd_scroll && tty->TS_rev_scroll));
 
-  se_is_so = (TS_standout_mode
-             && TS_end_standout_mode
-             && !strcmp (TS_standout_mode, TS_end_standout_mode));
+  terminal->char_ins_del_ok
+    = ((tty->TS_ins_char || tty->TS_insert_mode
+        || tty->TS_pad_inserted_char || tty->TS_ins_multi_chars)
+       && (tty->TS_del_char || tty->TS_del_multi_chars));
 
-  UseTabs = tabs_safe_p () && TabWidth == 8;
+  terminal->fast_clear_end_of_line = tty->TS_clr_line != 0;
 
-  scroll_region_ok
-    = (Wcm.cm_abs
-       && (TS_set_window || TS_set_scroll_region || TS_set_scroll_region_1));
+  init_baud_rate (fileno (tty->input));
 
-  line_ins_del_ok = (((TS_ins_line || TS_ins_multi_lines)
-                     && (TS_del_line || TS_del_multi_lines))
-                    || (scroll_region_ok && TS_fwd_scroll && TS_rev_scroll));
+#ifdef AIXHFT
+  /* The HFT system on AIX doesn't optimize for scrolling, so it's
+     really ugly at times.  */
+  terminal->line_ins_del_ok = 0;
+  terminal->char_ins_del_ok = 0;
+#endif
+
+  /* Don't do this.  I think termcap may still need the buffer. */
+  /* xfree (buffer); */
+
+#endif /* not WINDOWSNT */
 
-  char_ins_del_ok = ((TS_ins_char || TS_insert_mode
-                     || TS_pad_inserted_char || TS_ins_multi_chars)
-                    && (TS_del_char || TS_del_multi_chars));
+  /* Init system terminal modes (RAW or CBREAK, etc.).  */
+  init_sys_modes (tty);
 
-  fast_clear_end_of_line = TS_clr_line != 0;
+  return terminal;
+}
 
-  init_baud_rate ();
-  if (read_socket_hook)                /* Baudrate is somewhat */
-                               /* meaningless in this case */
-    baud_rate = 9600;
+/* Auxiliary error-handling function for init_tty.
+   Free BUFFER and delete TERMINAL, then call error or fatal
+   with str1 or str2, respectively, according to MUST_SUCCEED.  */
 
-  FRAME_CAN_HAVE_SCROLL_BARS (sf) = 0;
-  FRAME_VERTICAL_SCROLL_BAR_TYPE (sf) = vertical_scroll_bar_none;
-#endif /* WINDOWSNT */
+static void
+maybe_fatal (must_succeed, buffer, terminal, str1, str2, arg1, arg2)
+     int must_succeed;
+     char *buffer;
+     struct terminal *terminal;
+     char *str1, *str2, *arg1, *arg2;
+{
+  if (buffer)
+    xfree (buffer);
+
+  if (terminal)
+    delete_tty (terminal);
+  
+  if (must_succeed)
+    fatal (str2, arg1, arg2);
+  else
+    error (str1, arg1, arg2);
 
-  xfree (buffer);
+  abort ();
 }
 
 /* VARARGS 1 */
@@ -2742,16 +3765,105 @@ fatal (str, arg1, arg2)
   exit (1);
 }
 
-DEFUN ("tty-no-underline", Ftty_no_underline, Stty_no_underline, 0, 0, 0,
-       doc: /* Declare that this terminal does not handle underlining.
-This is used to override the terminfo data, for certain terminals that
-do not really do underlining, but say that they do.  */)
-  ()
+\f
+
+/* Delete the given tty terminal, closing all frames on it. */
+
+static void
+delete_tty (struct terminal *terminal)
 {
-  TS_enter_underline_mode = 0;
-  return Qnil;
+  struct tty_display_info *tty;
+  Lisp_Object tail, frame;
+  int last_terminal;
+  
+  /* Protect against recursive calls.  Fdelete_frame in
+     delete_terminal calls us back when it deletes our last frame.  */
+  if (!terminal->name)
+    return;
+
+  if (terminal->type != output_termcap)
+    abort ();
+
+  tty = terminal->display_info.tty;
+  
+  last_terminal = 1;
+  FOR_EACH_FRAME (tail, frame)
+    {
+      struct frame *f = XFRAME (frame);
+      if (FRAME_LIVE_P (f) && (!FRAME_TERMCAP_P (f) || FRAME_TTY (f) != tty))
+        {
+          last_terminal = 0;
+          break;
+        }
+    }
+  if (last_terminal)
+      error ("Attempt to delete the sole terminal device with live frames");
+  
+  if (tty == tty_list)
+    tty_list = tty->next;
+  else
+    {
+      struct tty_display_info *p;
+      for (p = tty_list; p && p->next != tty; p = p->next)
+        ;
+
+      if (! p)
+        /* This should not happen. */
+        abort ();
+
+      p->next = tty->next;
+      tty->next = 0;
+    }
+
+  /* reset_sys_modes needs a valid device, so this call needs to be
+     before delete_terminal. */
+  reset_sys_modes (tty);
+
+  delete_terminal (terminal);
+
+  if (tty->name)
+    xfree (tty->name);
+
+  if (tty->type)
+    xfree (tty->type);
+
+  if (tty->input)
+    {
+      delete_keyboard_wait_descriptor (fileno (tty->input));
+      if (tty->input != stdin)
+        fclose (tty->input);
+    }
+  if (tty->output && tty->output != stdout && tty->output != tty->input)
+    fclose (tty->output);
+  if (tty->termscript)
+    fclose (tty->termscript);
+
+  if (tty->old_tty)
+    xfree (tty->old_tty);
+
+  if (tty->Wcm)
+    xfree (tty->Wcm);
+
+  bzero (tty, sizeof (struct tty_display_info));
+  xfree (tty);
 }
 
+\f
+
+/* Mark the pointers in the tty_display_info objects.
+   Called by the Fgarbage_collector.  */
+
+void
+mark_ttys (void)
+{
+  struct tty_display_info *tty;
+
+  for (tty = tty_list; tty; tty = tty->next)
+    mark_object (tty->top_frame);
+}
+
+\f
+
 void
 syms_of_term ()
 {
@@ -2764,10 +3876,18 @@ This variable can be used by terminal emulator packages.  */);
   system_uses_terminfo = 0;
 #endif
 
-  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 ("suspend-tty-functions", &Vsuspend_tty_functions,
+    doc: /* Functions to be run after suspending a tty.
+The functions are run with one argument, the terminal id to be suspended.
+See `suspend-tty'.  */);
+  Vsuspend_tty_functions = Qnil;
+
+
+  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 id that was revived.
+See `resume-tty'.  */);
+  Vresume_tty_functions = Qnil;
 
   DEFVAR_BOOL ("visible-cursor", &visible_cursor,
               doc: /* Non-nil means to make the cursor very visible.
@@ -2779,9 +3899,19 @@ bigger, or it may make it blink, or it may do nothing at all.  */);
   defsubr (&Stty_display_color_p);
   defsubr (&Stty_display_color_cells);
   defsubr (&Stty_no_underline);
-
-  fullscreen_hook = NULL;
+  defsubr (&Stty_type);
+  defsubr (&Scontrolling_tty_p);
+  defsubr (&Ssuspend_tty);
+  defsubr (&Sresume_tty);
+#ifdef HAVE_GPM
+  defsubr (&Sgpm_mouse_start);
+  defsubr (&Sgpm_mouse_stop);
+
+  staticpro (&mouse_face_window);
+#endif /* HAVE_GPM */
 }
 
+
+
 /* arch-tag: 498e7449-6f2e-45e2-91dd-b7d4ca488193
    (do not change this comment) */
index c4bf2adb0bdadc4d4dc4a96f367e4dd76fb5384a..381210fd6582cdbced9586af8c1959faf74f96f6 100644 (file)
@@ -19,32 +19,185 @@ along with GNU Emacs; see the file COPYING.  If not, write to
 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
 
+/* Each termcap frame points to its own struct tty_output object in
+   the output_data.tty field.  The tty_output structure contains the
+   information that is specific to termcap frames. */
 
-/* extern EMACS_INT baud_rate; */              /* Output speed in baud */
-extern int must_write_spaces;  /* Nonzero means spaces in the text
-                                  must actually be output; can't just skip
-                                  over some columns to leave them blank.  */
-extern int min_padding_speed;  /* Speed below which no padding necessary */
-extern int fast_clear_end_of_line; /* Nonzero means terminal has
-                                     command for this */
-
-extern int line_ins_del_ok;    /* Terminal can insert and delete lines */
-extern int char_ins_del_ok;    /* Terminal can insert and delete chars */
-extern int scroll_region_ok;   /* Terminal supports setting the scroll
-                                  window */
-extern int scroll_region_cost; /* Cost of setting the scroll window,
-                                  measured in characters */
-extern int memory_below_frame; /* Terminal remembers lines scrolled
-                                  off bottom */
-extern int fast_clear_end_of_line; /* Terminal has a `ce' string */
-
-extern int dont_calculate_costs; /* Nonzero means don't bother computing
-                                   various cost tables; we won't use them. */
-
-/* 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;
+struct tty_output
+{
+  /* The Emacs structure for the tty device this frame is on. */
+  struct tty_display_info *display_info;
+
+  /* There is nothing else here at the moment... */
+};
+
+/* Parameters that are shared between frames on the same tty device. */
+
+struct tty_display_info
+{
+  struct tty_display_info *next; /* Chain of all tty devices. */
+  
+  char *name;                   /* The name of the device file or 0 if
+                                   stdin/stdout. */
+  char *type;                   /* The type of the tty. */
+  
+  /* Input/output */
+  
+  FILE *input;                  /* The stream to be used for terminal input.
+                                   NULL if the terminal is suspended. */
+  FILE *output;                 /* The stream to be used for terminal output.
+                                   NULL if the terminal is suspended. */
+  
+  FILE *termscript;             /* If nonzero, send all terminal output
+                                   characters to this stream also.  */
+
+  struct emacs_tty *old_tty;    /* The initial tty mode bits */
+
+  int term_initted;             /* 1 if we have been through init_sys_modes. */
+
+
+  int reference_count;          /* Number of frames that are on this display. */
+
+  struct terminal *terminal;    /* Points back to the generic terminal
+                                   structure.  This is sometimes handy. */
+
+  /* Info on cursor positioning.  */
+  struct cm *Wcm;
+
+  /* Redisplay. */
+
+  Lisp_Object top_frame;        /* The topmost frame on this tty. */
+  
+  /* The previous frame we displayed on this tty.  */
+  struct frame *previous_frame;
+
+  /* Strings, numbers and flags taken from the termcap entry.  */
+
+  char *TS_ins_line;           /* "al" */
+  char *TS_ins_multi_lines;    /* "AL" (one parameter, # lines to insert) */
+  char *TS_bell;                /* "bl" */
+  char *TS_clr_to_bottom;       /* "cd" */
+  char *TS_clr_line;           /* "ce", clear to end of line */
+  char *TS_clr_frame;          /* "cl" */
+  char *TS_set_scroll_region;  /* "cs" (2 params, first line and last line) */
+  char *TS_set_scroll_region_1; /* "cS" (4 params: total lines,
+                                   lines above scroll region, lines below it,
+                                   total lines again) */
+  char *TS_del_char;           /* "dc" */
+  char *TS_del_multi_chars;    /* "DC" (one parameter, # chars to delete) */
+  char *TS_del_line;           /* "dl" */
+  char *TS_del_multi_lines;    /* "DL" (one parameter, # lines to delete) */
+  char *TS_delete_mode;                /* "dm", enter character-delete mode */
+  char *TS_end_delete_mode;    /* "ed", leave character-delete mode */
+  char *TS_end_insert_mode;    /* "ei", leave character-insert mode */
+  char *TS_ins_char;           /* "ic" */
+  char *TS_ins_multi_chars;    /* "IC" (one parameter, # chars to insert) */
+  char *TS_insert_mode;                /* "im", enter character-insert mode */
+  char *TS_pad_inserted_char;  /* "ip".  Just padding, no commands.  */
+  char *TS_end_keypad_mode;    /* "ke" */
+  char *TS_keypad_mode;                /* "ks" */
+  char *TS_pad_char;           /* "pc", char to use as padding */
+  char *TS_repeat;             /* "rp" (2 params, # times to repeat
+                                  and character to be repeated) */
+  char *TS_end_standout_mode;  /* "se" */
+  char *TS_fwd_scroll;         /* "sf" */
+  char *TS_standout_mode;       /* "so" */
+  char *TS_rev_scroll;          /* "sr" */
+  char *TS_end_termcap_modes;   /* "te" */
+  char *TS_termcap_modes;       /* "ti" */
+  char *TS_visible_bell;        /* "vb" */
+  char *TS_cursor_normal;       /* "ve" */
+  char *TS_cursor_visible;      /* "vs" */
+  char *TS_cursor_invisible;    /* "vi" */
+  char *TS_set_window;          /* "wi" (4 params, start and end of window,
+                                   each as vpos and hpos) */
+
+  char *TS_enter_bold_mode;     /* "md" -- turn on bold (extra bright mode).  */
+  char *TS_enter_dim_mode;      /* "mh" -- turn on half-bright mode.  */
+  char *TS_enter_blink_mode;    /* "mb" -- enter blinking mode.  */
+  char *TS_enter_reverse_mode;  /* "mr" -- enter reverse video mode.  */
+  char *TS_exit_underline_mode; /* "us" -- start underlining.  */
+  char *TS_enter_underline_mode; /* "ue" -- end underlining.  */
+
+  /* "as"/"ae" -- start/end alternate character set.  Not really
+     supported, yet.  */
+  char *TS_enter_alt_charset_mode;
+  char *TS_exit_alt_charset_mode;
+
+  char *TS_exit_attribute_mode; /* "me" -- switch appearances off.  */
+
+  /* Value of the "NC" (no_color_video) capability, or 0 if not present.  */
+  int TN_no_color_video;
+
+  int TN_max_colors;            /* "Co" -- number of colors.  */
+
+  /* "pa" -- max. number of color pairs on screen.  Not handled yet.
+     Could be a problem if not equal to TN_max_colors * TN_max_colors.  */
+  int TN_max_pairs;
+
+  /* "op" -- SVr4 set default pair to its original value.  */
+  char *TS_orig_pair;
+
+  /* "AF"/"AB" or "Sf"/"Sb"-- set ANSI or SVr4 foreground/background color.
+     1 param, the color index.  */
+  char *TS_set_foreground;
+  char *TS_set_background;
+
+  int TF_hazeltine;             /* termcap hz flag. */
+  int TF_insmode_motion;        /* termcap mi flag: can move while in insert mode. */
+  int TF_standout_motion;       /* termcap mi flag: can move while in standout mode. */
+  int TF_underscore;            /* termcap ul flag: _ underlines if over-struck on
+                                   non-blank position.  Must clear before writing _.  */
+  int TF_teleray;               /* termcap xt flag: many weird consequences.
+                                   For t1061. */
+
+  int RPov;                     /* # chars to start a TS_repeat */
+
+  int delete_in_insert_mode;    /* delete mode == insert mode */
+  
+  int se_is_so;                 /* 1 if same string both enters and leaves
+                                   standout mode */
+  
+  int costs_set;                /* Nonzero if costs have been calculated. */
+  
+  int insert_mode;              /* Nonzero when in insert mode.  */
+  int standout_mode;            /* Nonzero when in standout mode.  */
+
+
+
+  /* 1 if should obey 0200 bit in input chars as "Meta", 2 if should
+     keep 0200 bit in input chars.  0 to ignore the 0200 bit.  */
+
+  int meta_key;
+
+  /* Size of window specified by higher levels.
+   This is the number of lines, from the top of frame downwards,
+   which can participate in insert-line/delete-line operations.
+
+   Effectively it excludes the bottom frame_lines - specified_window_size
+   lines from those operations.  */
+
+  int specified_window;
+  
+  /* Flag used in tty_show/hide_cursor.  */
+
+  int cursor_hidden;
+
+  /* Nonzero means use ^S/^Q for flow control.  */
+  int flow_control;
+
+};
+
+/* A chain of structures for all tty devices currently in use. */
+extern struct tty_display_info *tty_list;
+
+
+#define FRAME_TTY(f)                            \
+  ((f)->output_method == output_termcap         \
+   ? (f)->terminal->display_info.tty            \
+   : (abort(), (struct tty_display_info *) 0))
+
+#define CURTTY() FRAME_TTY (SELECTED_FRAME())
 
 /* arch-tag: bf9f0d49-842b-42fb-9348-ec8759b27193
    (do not change this comment) */
index 56f98092c6a5722e10c355370513433663fdf11f..4d8fb8a861bc3d0940a72f498ae6b5784eab1a5e 100644 (file)
@@ -1,7 +1,6 @@
-/* Hooks by which low level terminal operations
-   can be made to call other routines.
-   Copyright (C) 1985, 1986, 1993, 1994, 2001, 2002, 2003, 2004,
-                 2005, 2006, 2007  Free Software Foundation, Inc.
+/* Parameters and display hooks for terminal devices.
+   Copyright (C) 1985, 1986, 1993, 1994, 2002, 2003, 2004,
+                 2005, 2006, 2007 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -26,40 +25,11 @@ Boston, MA 02110-1301, USA.  */
 struct glyph;
 struct frame;
 
-/* If nonzero, send all terminal output characters to this stream also.  */
-extern FILE *termscript;
-
 /* Only use prototypes when lisp.h has been included.  */
 #ifndef P_
 #define P_(X) ()
 #endif
 \f
-/* Text display hooks.  */
-
-extern void (*cursor_to_hook) P_ ((int vpos, int hpos));
-extern void (*raw_cursor_to_hook) P_ ((int, int));
-
-extern void (*clear_to_end_hook) P_ ((void));
-extern void (*clear_frame_hook) P_ ((void));
-extern void (*clear_end_of_line_hook) P_ ((int));
-
-extern void (*ins_del_lines_hook) P_ ((int, int));
-
-extern void (*insert_glyphs_hook) P_ ((struct glyph *s, int n));
-extern void (*write_glyphs_hook) P_ ((struct glyph *s, int n));
-extern void (*delete_glyphs_hook) P_ ((int));
-
-extern void (*ring_bell_hook) P_ ((void));
-
-extern void (*reset_terminal_modes_hook) P_ ((void));
-extern void (*set_terminal_modes_hook) P_ ((void));
-extern void (*update_begin_hook) P_ ((struct frame *));
-extern void (*update_end_hook) P_ ((struct frame *));
-extern void (*set_terminal_window_hook) P_ ((int));
-
-
-\f
-/* Multi-frame and mouse support hooks.  */
 
 enum scroll_bar_part {
   scroll_bar_above_handle,
@@ -73,130 +43,11 @@ enum scroll_bar_part {
   scroll_bar_move_ratio
 };
 
-/* Return the current position of the mouse.
-
-   Set *f to the frame the mouse is in, or zero if the mouse is in no
-   Emacs frame.  If it is set to zero, all the other arguments are
-   garbage.
-
-   If the motion started in a scroll bar, set *bar_window to the
-   scroll bar's window, *part to the part the mouse is currently over,
-   *x to the position of the mouse along the scroll bar, and *y to the
-   overall length of the scroll bar.
-
-   Otherwise, set *bar_window to Qnil, and *x and *y to the column and
-   row of the character cell the mouse is over.
-
-   Set *time to the time the mouse was at the returned position.
-
-   This should clear mouse_moved until the next motion
-   event arrives.  */
-extern void (*mouse_position_hook) P_ ((struct frame **f, int,
-                                       Lisp_Object *bar_window,
-                                       enum scroll_bar_part *part,
-                                       Lisp_Object *x,
-                                       Lisp_Object *y,
-                                       unsigned long *time));
-
-/* The window system handling code should set this if the mouse has
-   moved since the last call to the mouse_position_hook.  Calling that
-   hook should clear this.  */
-extern int mouse_moved;
-
-/* When a frame's focus redirection is changed, this hook tells the
-   window system code to re-decide where to put the highlight.  Under
-   X, this means that Emacs lies about where the focus is.  */
-extern void (*frame_rehighlight_hook) P_ ((struct frame *));
-
-/* If we're displaying frames using a window system that can stack
-   frames on top of each other, this hook allows you to bring a frame
-   to the front, or bury it behind all the other windows.  If this
-   hook is zero, that means the device we're displaying on doesn't
-   support overlapping frames, so there's no need to raise or lower
-   anything.
-
-   If RAISE is non-zero, F is brought to the front, before all other
-   windows.  If RAISE is zero, F is sent to the back, behind all other
-   windows.  */
-extern void (*frame_raise_lower_hook) P_ ((struct frame *f, int raise));
-
 /* If the value of the frame parameter changed, whis hook is called.
    For example, if going from fullscreen to not fullscreen this hook
    may do something OS dependent, like extended window manager hints on X11.  */
 extern void (*fullscreen_hook) P_ ((struct frame *f));
 
-\f
-/* Scroll bar hooks.  */
-
-/* The representation of scroll bars is determined by the code which
-   implements them, except for one thing: they must be represented by
-   lisp objects.  This allows us to place references to them in
-   Lisp_Windows without worrying about those references becoming
-   dangling references when the scroll bar is destroyed.
-
-   The window-system-independent portion of Emacs just refers to
-   scroll bars via their windows, and never looks inside the scroll bar
-   representation; it always uses hook functions to do all the
-   scroll bar manipulation it needs.
-
-   The `vertical_scroll_bar' field of a Lisp_Window refers to that
-   window's scroll bar, or is nil if the window doesn't have a
-   scroll bar.
-
-   The `scroll_bars' and `condemned_scroll_bars' fields of a Lisp_Frame
-   are free for use by the scroll bar implementation in any way it sees
-   fit.  They are marked by the garbage collector.  */
-
-
-/* Set the vertical scroll bar for WINDOW to have its upper left corner
-   at (TOP, LEFT), and be LENGTH rows high.  Set its handle to
-   indicate that we are displaying PORTION characters out of a total
-   of WHOLE characters, starting at POSITION.  If WINDOW doesn't yet
-   have a scroll bar, create one for it.  */
-extern void (*set_vertical_scroll_bar_hook)
-            P_ ((struct window *window,
-                int portion, int whole, int position));
-
-
-/* The following three hooks are used when we're doing a thorough
-   redisplay of the frame.  We don't explicitly know which scroll bars
-   are going to be deleted, because keeping track of when windows go
-   away is a real pain - can you say set-window-configuration?
-   Instead, we just assert at the beginning of redisplay that *all*
-   scroll bars are to be removed, and then save scroll bars from the
-   fiery pit when we actually redisplay their window.  */
-
-/* Arrange for all scroll bars on FRAME to be removed at the next call
-   to `*judge_scroll_bars_hook'.  A scroll bar may be spared if
-   `*redeem_scroll_bar_hook' is applied to its window before the judgement.
-
-   This should be applied to each frame each time its window tree is
-   redisplayed, even if it is not displaying scroll bars at the moment;
-   if the HAS_SCROLL_BARS flag has just been turned off, only calling
-   this and the judge_scroll_bars_hook will get rid of them.
-
-   If non-zero, this hook should be safe to apply to any frame,
-   whether or not it can support scroll bars, and whether or not it is
-   currently displaying them.  */
-extern void (*condemn_scroll_bars_hook) P_ ((struct frame *frame));
-
-/* Unmark WINDOW's scroll bar for deletion in this judgement cycle.
-   Note that it's okay to redeem a scroll bar that is not condemned.  */
-extern void (*redeem_scroll_bar_hook) P_ ((struct window *window));
-
-/* Remove all scroll bars on FRAME that haven't been saved since the
-   last call to `*condemn_scroll_bars_hook'.
-
-   This should be applied to each frame after each time its window
-   tree is redisplayed, even if it is not displaying scroll bars at the
-   moment; if the HAS_SCROLL_BARS flag has just been turned off, only
-   calling this and condemn_scroll_bars_hook will get rid of them.
-
-   If non-zero, this hook should be safe to apply to any frame,
-   whether or not it can support scroll bars, and whether or not it is
-   currently displaying them.  */
-extern void (*judge_scroll_bars_hook) P_ ((struct frame *FRAME));
-
 \f
 /* Input queue declarations and hooks.  */
 
@@ -258,6 +109,9 @@ enum event_kind
                                   the wheel event occurred in.
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the event.  */
+  HORIZ_WHEEL_EVENT,            /* A wheel event generated by a second
+                                   horizontal wheel that is present on some
+                                   mice. See WHEEL_EVENT.  */
 #if defined (WINDOWSNT) || defined (MAC_OS)
   LANGUAGE_CHANGE_EVENT,       /* A LANGUAGE_CHANGE_EVENT is
                                   generated on WINDOWSNT or Mac OS
@@ -342,6 +196,10 @@ enum event_kind
      are converted to those in Apple events.  */
   , MAC_APPLE_EVENT
 #endif
+
+#ifdef HAVE_GPM
+  , GPM_CLICK_EVENT
+#endif
 };
 
 /* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT
@@ -390,13 +248,6 @@ struct input_event
 
 #define EVENT_INIT(event) bzero (&(event), sizeof (struct input_event))
 
-/* Called to read input events.  */
-extern int (*read_socket_hook) P_ ((int, int, struct input_event *));
-
-/* Called when a frame's display becomes entirely up to date.  */
-extern void (*frame_up_to_date_hook) P_ ((struct frame *));
-\f
-
 /* Bits in the modifiers member of the input_event structure.
    Note that reorder_modifiers assumes that the bits are in canonical
    order.
@@ -446,7 +297,352 @@ enum {
   meta_modifier        =  CHAR_META    /* Under X, the XK_Meta_[LR] keysyms.  */
 };
 
+#ifdef HAVE_GPM
+#include <gpm.h>
+extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *, struct input_event *);
+extern void term_mouse_moveto (int, int);
+
+/* The device for which we have enabled gpm support.  */
+extern struct tty_display_info *gpm_tty;
+#endif
+
+#endif /* CONSP */
+
+\f
+struct mac_display_info;
+struct w32_display_info;
+
+/* Terminal-local parameters. */
+struct terminal
+{
+  /* The first two fields are really the header of a vector */
+  /* The terminal code does not refer to them.  */
+  EMACS_UINT size;
+  struct Lisp_Vector *vec_next;
+
+  /* Parameter alist of this terminal.  */
+  Lisp_Object param_alist;
+
+  /* All fields before `next_terminal' should be Lisp_Object and are traced
+     by the GC.  All fields afterwards are ignored by the GC.  */
+  
+  /* Chain of all terminal devices. */
+  struct terminal *next_terminal;
+
+  /* Unique id for this terminal device. */
+  int id;
+
+  /* The number of frames that are on this terminal. */
+  int reference_count;
+
+  /* The type of the terminal device. */
+  enum output_method type;
+
+  /* The name of the terminal device.  Do not use this to uniquely
+     identify a terminal; the same device may be opened multiple
+     times. */
+  char *name;
+
+#ifdef MULTI_KBOARD
+  /* The terminal's keyboard object. */
+  struct kboard *kboard;
 #endif
 
+  /* Device-type dependent data shared amongst all frames on this terminal. */
+  union display_info
+  {
+    struct tty_display_info *tty;     /* termchar.h */
+    struct x_display_info *x;         /* xterm.h */
+    struct w32_display_info *w32;     /* w32term.h */
+    struct mac_display_info *mac;     /* macterm.h */
+  } display_info;
+
+\f
+  /* Coding-system to be used for encoding terminal output.  This
+     structure contains information of a coding-system specified by
+     the function `set-terminal-coding-system'.  Also see
+     `safe_terminal_coding' in coding.h.  */
+  struct coding_system *terminal_coding;
+
+  /* Coding-system of what is sent from terminal keyboard.  This
+     structure contains information of a coding-system specified by
+     the function `set-keyboard-coding-system'.  */
+  struct coding_system *keyboard_coding;
+
+  /* Terminal characteristics. */
+  /* XXX Are these really used on non-termcap displays? */
+  
+  int must_write_spaces;       /* Nonzero means spaces in the text must
+                                  actually be output; can't just skip over
+                                  some columns to leave them blank.  */
+  int fast_clear_end_of_line;   /* Nonzero means terminal has a `ce' string */
+  
+  int line_ins_del_ok;          /* Terminal can insert and delete lines */
+  int char_ins_del_ok;          /* Terminal can insert and delete chars */
+  int scroll_region_ok;         /* Terminal supports setting the scroll
+                                   window */
+  int scroll_region_cost;      /* Cost of setting the scroll window,
+                                   measured in characters. */
+  int memory_below_frame;      /* Terminal remembers lines scrolled
+                                   off bottom */
+
+#if 0  /* These are not used anywhere. */
+  /* EMACS_INT baud_rate; */   /* Output speed in baud */
+  int min_padding_speed;       /* Speed below which no padding necessary. */
+  int dont_calculate_costs;     /* Nonzero means don't bother computing
+                                   various cost tables; we won't use them. */
+#endif
+
+\f
+  /* Window-based redisplay interface for this device (0 for tty
+     devices). */
+  struct redisplay_interface *rif;
+
+  /* Frame-based redisplay interface. */
+  
+  /* Text display hooks.  */
+
+  void (*cursor_to_hook) P_ ((struct frame *f, int vpos, int hpos));
+  void (*raw_cursor_to_hook) P_ ((struct frame *, int, int));
+  
+  void (*clear_to_end_hook) P_ ((struct frame *));
+  void (*clear_frame_hook) P_ ((struct frame *));
+  void (*clear_end_of_line_hook) P_ ((struct frame *, int));
+  
+  void (*ins_del_lines_hook) P_ ((struct frame *f, int, int));
+  
+  void (*insert_glyphs_hook) P_ ((struct frame *f, struct glyph *s, int n));
+  void (*write_glyphs_hook) P_ ((struct frame *f, struct glyph *s, int n));
+  void (*delete_glyphs_hook) P_ ((struct frame *, int));
+  
+  void (*ring_bell_hook) P_ ((struct frame *f));
+  
+  void (*reset_terminal_modes_hook) P_ ((struct terminal *));
+  void (*set_terminal_modes_hook) P_ ((struct terminal *));
+
+  void (*update_begin_hook) P_ ((struct frame *));
+  void (*update_end_hook) P_ ((struct frame *));
+  void (*set_terminal_window_hook) P_ ((struct frame *, int));
+
+  /* Multi-frame and mouse support hooks.  */
+
+  /* Return the current position of the mouse.
+
+     Set *f to the frame the mouse is in, or zero if the mouse is in no
+     Emacs frame.  If it is set to zero, all the other arguments are
+     garbage.
+  
+     If the motion started in a scroll bar, set *bar_window to the
+     scroll bar's window, *part to the part the mouse is currently over,
+     *x to the position of the mouse along the scroll bar, and *y to the
+     overall length of the scroll bar.
+
+     Otherwise, set *bar_window to Qnil, and *x and *y to the column and
+     row of the character cell the mouse is over.
+
+     Set *time to the time the mouse was at the returned position.
+     
+     This should clear mouse_moved until the next motion
+     event arrives.  */
+  void (*mouse_position_hook) P_ ((struct frame **f, int,
+                                   Lisp_Object *bar_window,
+                                   enum scroll_bar_part *part,
+                                   Lisp_Object *x,
+                                   Lisp_Object *y,
+                                   unsigned long *time));
+
+  /* The window system handling code should set this if the mouse has
+     moved since the last call to the mouse_position_hook.  Calling that
+     hook should clear this.  */
+  int mouse_moved;
+
+  /* When a frame's focus redirection is changed, this hook tells the
+     window system code to re-decide where to put the highlight.  Under
+     X, this means that Emacs lies about where the focus is.  */
+  void (*frame_rehighlight_hook) P_ ((struct frame *));
+
+  /* If we're displaying frames using a window system that can stack
+     frames on top of each other, this hook allows you to bring a frame
+     to the front, or bury it behind all the other windows.  If this
+     hook is zero, that means the terminal we're displaying on doesn't
+     support overlapping frames, so there's no need to raise or lower
+     anything.
+     
+     If RAISE is non-zero, F is brought to the front, before all other
+     windows.  If RAISE is zero, F is sent to the back, behind all other
+     windows.  */
+  void (*frame_raise_lower_hook) P_ ((struct frame *f, int raise));
+
+  /* If the value of the frame parameter changed, whis hook is called.
+     For example, if going from fullscreen to not fullscreen this hook
+     may do something OS dependent, like extended window manager hints on X11.  */
+  void (*fullscreen_hook) P_ ((struct frame *f));
+    
+  \f
+  /* Scroll bar hooks.  */
+
+  /* The representation of scroll bars is determined by the code which
+     implements them, except for one thing: they must be represented by
+     lisp objects.  This allows us to place references to them in
+     Lisp_Windows without worrying about those references becoming
+     dangling references when the scroll bar is destroyed.
+     
+     The window-system-independent portion of Emacs just refers to
+     scroll bars via their windows, and never looks inside the scroll bar
+     representation; it always uses hook functions to do all the
+     scroll bar manipulation it needs.
+     
+     The `vertical_scroll_bar' field of a Lisp_Window refers to that
+     window's scroll bar, or is nil if the window doesn't have a
+     scroll bar.
+     
+     The `scroll_bars' and `condemned_scroll_bars' fields of a Lisp_Frame
+     are free for use by the scroll bar implementation in any way it sees
+     fit.  They are marked by the garbage collector.  */
+  
+  
+  /* Set the vertical scroll bar for WINDOW to have its upper left corner
+     at (TOP, LEFT), and be LENGTH rows high.  Set its handle to
+     indicate that we are displaying PORTION characters out of a total
+     of WHOLE characters, starting at POSITION.  If WINDOW doesn't yet
+     have a scroll bar, create one for it.  */
+  void (*set_vertical_scroll_bar_hook) P_ ((struct window *window,
+                                            int portion, int whole,
+                                            int position));
+
+
+  /* The following three hooks are used when we're doing a thorough
+     redisplay of the frame.  We don't explicitly know which scroll bars
+     are going to be deleted, because keeping track of when windows go
+     away is a real pain - can you say set-window-configuration?
+     Instead, we just assert at the beginning of redisplay that *all*
+     scroll bars are to be removed, and then save scroll bars from the
+     fiery pit when we actually redisplay their window.  */
+  
+  /* Arrange for all scroll bars on FRAME to be removed at the next call
+     to `*judge_scroll_bars_hook'.  A scroll bar may be spared if
+     `*redeem_scroll_bar_hook' is applied to its window before the judgement.
+     
+     This should be applied to each frame each time its window tree is
+     redisplayed, even if it is not displaying scroll bars at the moment;
+     if the HAS_SCROLL_BARS flag has just been turned off, only calling
+     this and the judge_scroll_bars_hook will get rid of them.
+     
+     If non-zero, this hook should be safe to apply to any frame,
+     whether or not it can support scroll bars, and whether or not it is
+     currently displaying them.  */
+  void (*condemn_scroll_bars_hook) P_ ((struct frame *frame));
+
+  /* Unmark WINDOW's scroll bar for deletion in this judgement cycle.
+     Note that it's okay to redeem a scroll bar that is not condemned.  */
+  void (*redeem_scroll_bar_hook) P_ ((struct window *window));
+
+  /* Remove all scroll bars on FRAME that haven't been saved since the
+     last call to `*condemn_scroll_bars_hook'.
+
+     This should be applied to each frame after each time its window
+     tree is redisplayed, even if it is not displaying scroll bars at the
+     moment; if the HAS_SCROLL_BARS flag has just been turned off, only
+     calling this and condemn_scroll_bars_hook will get rid of them.
+     
+     If non-zero, this hook should be safe to apply to any frame,
+     whether or not it can support scroll bars, and whether or not it is
+     currently displaying them.  */
+  void (*judge_scroll_bars_hook) P_ ((struct frame *FRAME));
+
+\f
+  /* Called to read input events.
+
+     TERMINAL indicates which terminal device to read from.  Input
+     events should be read into BUF, the size of which is given in
+     SIZE.  EXPECTED is non-zero if the caller suspects that new input
+     is available.
+
+     A positive return value indicates that that many input events
+     where read into BUF.
+     Zero means no events were immediately available.
+     A value of -1 means a transient read error, while -2 indicates
+     that the device was closed (hangup), and it should be deleted.
+
+     XXX Please note that a non-zero value of EXPECTED only means that
+     there is available input on at least one of the currently opened
+     terminal devices -- but not necessarily on this device.
+     Therefore, in most cases EXPECTED should be simply ignored.
+
+     XXX This documentation needs to be updated.  */
+  int (*read_socket_hook) P_ ((struct terminal *terminal,
+                               int expected,
+                               struct input_event *hold_quit));
+
+  /* Called when a frame's display becomes entirely up to date.  */
+  void (*frame_up_to_date_hook) P_ ((struct frame *));
+
+\f
+  /* Called to delete the device-specific portions of a frame that is
+     on this terminal device. */
+  void (*delete_frame_hook) P_ ((struct frame *));
+
+  /* Called after the last frame on this terminal is deleted, or when
+     the display device was closed (hangup).
+     
+     If this is NULL, then the generic delete_terminal is called
+     instead.  Otherwise the hook must call delete_terminal itself.
+
+     The hook must check for and close any live frames that are still
+     on the terminal.  Fdelete_frame ensures that there are no live
+     frames on the terminal when it calls this hook, so infinite
+     recursion is prevented.  */
+  void (*delete_terminal_hook) P_ ((struct terminal *));
+};
+
+
+/* Chain of all terminal devices currently in use. */
+extern struct terminal *terminal_list;
+
+#define FRAME_MUST_WRITE_SPACES(f) ((f)->terminal->must_write_spaces)
+#define FRAME_FAST_CLEAR_END_OF_LINE(f) ((f)->terminal->fast_clear_end_of_line)
+#define FRAME_LINE_INS_DEL_OK(f) ((f)->terminal->line_ins_del_ok)
+#define FRAME_CHAR_INS_DEL_OK(f) ((f)->terminal->char_ins_del_ok)
+#define FRAME_SCROLL_REGION_OK(f) ((f)->terminal->scroll_region_ok)
+#define FRAME_SCROLL_REGION_COST(f) ((f)->terminal->scroll_region_cost)
+#define FRAME_MEMORY_BELOW_FRAME(f) ((f)->terminal->memory_below_frame)
+
+#define FRAME_TERMINAL_CODING(f) ((f)->terminal->terminal_coding)
+#define FRAME_KEYBOARD_CODING(f) ((f)->terminal->keyboard_coding)
+
+#define TERMINAL_TERMINAL_CODING(d) ((d)->terminal_coding)
+#define TERMINAL_KEYBOARD_CODING(d) ((d)->keyboard_coding)
+
+#define FRAME_RIF(f) ((f)->terminal->rif)
+
+#define FRAME_TERMINAL(f) ((f)->terminal)
+
+/* FRAME_WINDOW_P tests whether the frame is a window, and is
+   defined to be the predicate for the window system being used.  */
+
+#ifdef HAVE_X_WINDOWS
+#define FRAME_WINDOW_P(f) FRAME_X_P (f)
+#endif
+#ifdef HAVE_NTGUI
+#define FRAME_WINDOW_P(f) FRAME_W32_P (f)
+#endif
+#ifdef MAC_OS
+#define FRAME_WINDOW_P(f) FRAME_MAC_P (f)
+#endif
+#ifndef FRAME_WINDOW_P
+#define FRAME_WINDOW_P(f) (0)
+#endif
+
+/* Return true if the terminal device is not suspended. */
+#define TERMINAL_ACTIVE_P(d) ((d)->type != output_termcap || (d)->display_info.tty->input)
+
+extern Lisp_Object get_terminal_param P_ ((struct terminal *, Lisp_Object));
+extern struct terminal *get_terminal P_ ((Lisp_Object terminal, int));
+extern struct terminal *create_terminal P_ ((void));
+extern void delete_terminal P_ ((struct terminal *));
+
+/* The initial terminal device, created by initial_term_init. */
+extern struct terminal *initial_terminal;
+
 /* arch-tag: 33a00ecc-52b5-4186-a410-8801ac9f087d
    (do not change this comment) */
diff --git a/src/terminal.c b/src/terminal.c
new file mode 100644 (file)
index 0000000..46ffb3c
--- /dev/null
@@ -0,0 +1,566 @@
+/* Functions related to terminal devices.
+   Copyright (C) 2005, 2006, 2007 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, 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; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+#include <stdio.h>
+
+#include "lisp.h"
+#include "frame.h"
+#include "termchar.h"
+#include "termhooks.h"
+#include "charset.h"
+#include "coding.h"
+#include "keyboard.h"
+
+/* Chain of all terminals currently in use. */
+struct terminal *terminal_list;
+
+/* The first unallocated terminal id. */
+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 P_ ((struct terminal *));
+
+\f
+
+void
+ring_bell (struct frame *f)
+{
+  if (!NILP (Vring_bell_function))
+    {
+      Lisp_Object function;
+
+      /* Temporarily set the global variable to nil
+        so that if we get an error, it stays nil
+        and we don't call it over and over.
+
+        We don't specbind it, because that would carefully
+        restore the bad value if there's an error
+        and make the loop of errors happen anyway.  */
+
+      function = Vring_bell_function;
+      Vring_bell_function = Qnil;
+
+      call0 (function);
+
+      Vring_bell_function = function;
+    }
+  else if (FRAME_TERMINAL (f)->ring_bell_hook)
+    (*FRAME_TERMINAL (f)->ring_bell_hook) (f);
+}
+
+void
+update_begin (struct frame *f)
+{
+  if (FRAME_TERMINAL (f)->update_begin_hook)
+    (*FRAME_TERMINAL (f)->update_begin_hook) (f);
+}
+
+void
+update_end (struct frame *f)
+{
+  if (FRAME_TERMINAL (f)->update_end_hook)
+    (*FRAME_TERMINAL (f)->update_end_hook) (f);
+}
+
+/* Specify how many text lines, from the top of the window,
+   should be affected by insert-lines and delete-lines operations.
+   This, and those operations, are used only within an update
+   that is bounded by calls to update_begin and update_end.  */
+
+void
+set_terminal_window (struct frame *f, int size)
+{
+  if (FRAME_TERMINAL (f)->set_terminal_window_hook)
+    (*FRAME_TERMINAL (f)->set_terminal_window_hook) (f, size);
+}
+
+/* Move cursor to row/column position VPOS/HPOS.  HPOS/VPOS are
+   frame-relative coordinates.  */
+
+void
+cursor_to (struct frame *f, int vpos, int hpos)
+{
+  if (FRAME_TERMINAL (f)->cursor_to_hook)
+    (*FRAME_TERMINAL (f)->cursor_to_hook) (f, vpos, hpos);
+}
+
+/* Similar but don't take any account of the wasted characters.  */
+
+void
+raw_cursor_to (struct frame *f, int row, int col)
+{
+  if (FRAME_TERMINAL (f)->raw_cursor_to_hook)
+    (*FRAME_TERMINAL (f)->raw_cursor_to_hook) (f, row, col);  
+}
+
+/* Erase operations */
+
+/* Clear from cursor to end of frame. */
+void
+clear_to_end (struct frame *f)
+{
+  if (FRAME_TERMINAL (f)->clear_to_end_hook)
+    (*FRAME_TERMINAL (f)->clear_to_end_hook) (f);
+}
+
+/* Clear entire frame */
+
+void
+clear_frame (struct frame *f)
+{
+  if (FRAME_TERMINAL (f)->clear_frame_hook)
+    (*FRAME_TERMINAL (f)->clear_frame_hook) (f);
+}
+
+/* Clear from cursor to end of line.
+   Assume that the line is already clear starting at column first_unused_hpos.
+
+   Note that the cursor may be moved, on terminals lacking a `ce' string.  */
+
+void
+clear_end_of_line (struct frame *f, int first_unused_hpos)
+{
+  if (FRAME_TERMINAL (f)->clear_end_of_line_hook)
+    (*FRAME_TERMINAL (f)->clear_end_of_line_hook) (f, first_unused_hpos);
+}
+
+/* Output LEN glyphs starting at STRING at the nominal cursor position.
+   Advance the nominal cursor over the text.  */
+
+void
+write_glyphs (struct frame *f, struct glyph *string, int len)
+{
+  if (FRAME_TERMINAL (f)->write_glyphs_hook)
+    (*FRAME_TERMINAL (f)->write_glyphs_hook) (f, string, len);
+}
+
+/* Insert LEN glyphs from START at the nominal cursor position.
+
+   If start is zero, insert blanks instead of a string at start */
+
+void
+insert_glyphs (struct frame *f, struct glyph *start, int len)
+{
+  if (len <= 0)
+    return;
+
+  if (FRAME_TERMINAL (f)->insert_glyphs_hook)
+    (*FRAME_TERMINAL (f)->insert_glyphs_hook) (f, start, len);
+}
+
+/* Delete N glyphs at the nominal cursor position. */
+
+void
+delete_glyphs (struct frame *f, int n)
+{
+  if (FRAME_TERMINAL (f)->delete_glyphs_hook)
+    (*FRAME_TERMINAL (f)->delete_glyphs_hook) (f, n);
+}
+
+/* Insert N lines at vpos VPOS.  If N is negative, delete -N lines.  */
+
+void
+ins_del_lines (struct frame *f, int vpos, int n)
+{
+  if (FRAME_TERMINAL (f)->ins_del_lines_hook)
+    (*FRAME_TERMINAL (f)->ins_del_lines_hook) (f, vpos, n);
+}
+
+
+\f
+
+/* Return the terminal object specified by TERMINAL.  TERMINAL may be a
+   terminal id, a frame, or nil for the terminal device of the current
+   frame.  If THROW is zero, return NULL for failure, otherwise throw
+   an error.  */
+
+struct terminal *
+get_terminal (Lisp_Object terminal, int throw)
+{
+  struct terminal *result = NULL;
+
+  if (NILP (terminal))
+    terminal = selected_frame;
+
+  if (TERMINALP (terminal))
+    result = XTERMINAL (terminal);
+
+  else if (FRAMEP (terminal))
+    {
+      result = FRAME_TERMINAL (XFRAME (terminal));
+    }
+
+  if (result && !result->name)
+    result = NULL;
+
+  if (result == NULL && throw)
+    wrong_type_argument (Qterminal_live_p, terminal);
+
+  return result;
+}
+
+\f
+
+/* Create a new terminal object and add it to the terminal list. */
+
+struct terminal *
+create_terminal (void)
+{
+  struct terminal *terminal = allocate_terminal ();
+
+  terminal->name = NULL;
+  terminal->next_terminal = terminal_list;
+  terminal_list = terminal;
+
+  terminal->id = next_terminal_id++;
+
+  terminal->keyboard_coding =
+    (struct coding_system *) xmalloc (sizeof (struct coding_system));
+  terminal->terminal_coding =
+    (struct coding_system *) xmalloc (sizeof (struct coding_system));
+
+  setup_coding_system (Qnil, terminal->keyboard_coding);
+  setup_coding_system (Qnil, terminal->terminal_coding);
+
+  terminal->param_alist = Qnil;
+  return terminal;
+}
+
+/* Low-level function to close all frames on a terminal, remove it
+   from the terminal list and free its memory.  */
+
+void
+delete_terminal (struct terminal *terminal)
+{
+  struct terminal **tp;
+  Lisp_Object tail, frame;
+
+  /* Protect against recursive calls.  Fdelete_frame calls the
+     delete_terminal_hook when we delete our last frame.  */
+  if (!terminal->name)
+    return;
+  xfree (terminal->name);
+  terminal->name = NULL;
+
+  /* Check for live frames that are still on this terminal. */
+  FOR_EACH_FRAME (tail, frame)
+    {
+      struct frame *f = XFRAME (frame);
+      if (FRAME_LIVE_P (f) && f->terminal == terminal)
+        {
+          Fdelete_frame (frame, Qt);
+        }
+    }
+
+  for (tp = &terminal_list; *tp != terminal; tp = &(*tp)->next_terminal)
+    if (! *tp)
+      abort ();
+  *tp = terminal->next_terminal;
+
+  xfree (terminal->keyboard_coding);
+  terminal->keyboard_coding = NULL;
+  xfree (terminal->terminal_coding);
+  terminal->terminal_coding = NULL;
+  
+#ifdef MULTI_KBOARD
+  if (terminal->kboard && --terminal->kboard->reference_count == 0)
+    {
+      delete_kboard (terminal->kboard);
+      terminal->kboard = NULL;
+    }
+#endif
+}
+
+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 id, a frame, or nil (meaning the selected
+frame's terminal).
+
+Normally, you may not delete a display if all other displays are suspended,
+but if the second argument FORCE is non-nil, you may do so. */)
+  (terminal, force)
+     Lisp_Object terminal, force;
+{
+  struct terminal *t, *p;
+
+  t = get_terminal (terminal, 0);
+
+  if (!t)
+    return Qnil;
+
+  p = terminal_list;
+  while (p && (p == t || !TERMINAL_ACTIVE_P (p)))
+    p = p->next_terminal;
+  
+  if (NILP (force) && !p)
+    error ("Attempt to delete the sole active display terminal");
+
+  if (t->delete_terminal_hook)
+    (*t->delete_terminal_hook) (t);
+  else
+    delete_terminal (t);
+
+  return Qnil;
+}
+
+\f
+DEFUN ("frame-terminal", Fframe_terminal, Sframe_terminal, 0, 1, 0,
+       doc: /* Return the terminal that FRAME is displayed on.
+If FRAME is nil, the selected frame is used.
+
+The terminal device is represented by its integer identifier.  */)
+  (frame)
+     Lisp_Object frame;
+{
+  struct terminal *t;
+
+  if (NILP (frame))
+    frame = selected_frame;
+
+  CHECK_LIVE_FRAME (frame);
+
+  t = FRAME_TERMINAL (XFRAME (frame));
+
+  if (!t)
+    return Qnil;
+  else
+    {
+      Lisp_Object terminal;
+      XSETTERMINAL (terminal, t);
+      return terminal;
+    }
+}
+
+DEFUN ("terminal-live-p", Fterminal_live_p, Sterminal_live_p, 1, 1, 0,
+       doc: /* Return non-nil if OBJECT is a terminal which has not been deleted.
+Value is nil if OBJECT is not a live display terminal.
+If object is a live display terminal, the return value indicates what
+sort of output terminal it uses.  See the documentation of `framep' for
+possible return values.  */)
+     (object)
+     Lisp_Object object;
+{
+  struct terminal *t;
+  
+  t = get_terminal (object, 0);
+
+  if (!t)
+    return Qnil;
+
+  switch (t->type)
+    {
+    case output_initial: /* The initial frame is like a termcap frame. */
+    case output_termcap:
+      return Qt;
+    case output_x_window:
+      return Qx;
+    case output_w32:
+      return Qw32;
+    case output_msdos_raw:
+      return Qpc;
+    case output_mac:
+      return Qmac;
+    default:
+      abort ();
+    }
+}
+
+DEFUN ("terminal-list", Fterminal_list, Sterminal_list, 0, 0, 0,
+       doc: /* Return a list of all terminal devices.  */)
+  ()
+{
+  Lisp_Object terminal, terminals = Qnil;
+  struct terminal *t;
+
+  for (t = terminal_list; t; t = t->next_terminal)
+    {
+      XSETTERMINAL (terminal, t);
+      terminals = Fcons (terminal, terminals);
+    }
+
+  return terminals;
+}
+
+DEFUN ("terminal-name", Fterminal_name, Sterminal_name, 0, 1, 0,
+       doc: /* Return the name of the terminal device TERMINAL.
+It is not guaranteed that the returned value is unique among opened devices.
+
+TERMINAL may be a terminal id, a frame, or nil (meaning the
+selected frame's terminal). */)
+  (terminal)
+     Lisp_Object terminal;
+{
+  struct terminal *t
+    = TERMINALP (terminal) ? XTERMINAL (terminal) : get_terminal (terminal, 1);
+
+  return t->name ? build_string (t->name) : Qnil;
+}
+
+
+\f
+/* Return the value of terminal parameter PARAM in terminal T.  */
+Lisp_Object
+get_terminal_param (t, 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.  */
+
+Lisp_Object
+store_terminal_param (t, parameter, value)
+     struct terminal *t;
+     Lisp_Object parameter;
+     Lisp_Object value;
+{
+  Lisp_Object old_alist_elt = Fassq (parameter, t->param_alist);
+  if (EQ (old_alist_elt, Qnil))
+    {
+      t->param_alist = Fcons (Fcons (parameter, value), t->param_alist);
+      return Qnil;
+    }
+  else
+    {
+      Lisp_Object result = Fcdr (old_alist_elt);
+      Fsetcdr (old_alist_elt, value);
+      return result;
+    }
+}
+
+
+DEFUN ("terminal-parameters", Fterminal_parameters, Sterminal_parameters, 0, 1, 0,
+       doc: /* Return the parameter-alist of terminal TERMINAL.
+The value is a list of elements of the form (PARM . VALUE), where PARM
+is a symbol.
+
+TERMINAL can be a terminal id, a frame or nil (meaning the selected
+frame's terminal).  */)
+     (terminal)
+     Lisp_Object terminal;
+{
+  struct terminal *t
+    = TERMINALP (terminal) ? XTERMINAL (terminal) : get_terminal (terminal, 1);
+  return Fcopy_alist (t->param_alist);
+}
+
+DEFUN ("terminal-parameter", Fterminal_parameter, Sterminal_parameter, 2, 2, 0,
+       doc: /* Return TERMINAL's value for parameter PARAMETER.
+TERMINAL can be a terminal id, a frame or nil (meaning the selected
+frame's terminal).  */)
+     (terminal, parameter)
+     Lisp_Object terminal;
+     Lisp_Object parameter;
+{
+  Lisp_Object value;
+  struct terminal *t
+    = TERMINALP (terminal) ? XTERMINAL (terminal) : get_terminal (terminal, 1);
+  CHECK_SYMBOL (parameter);
+  value = Fcdr (Fassq (parameter, t->param_alist));
+  return value;
+}
+
+DEFUN ("set-terminal-parameter", Fset_terminal_parameter,
+       Sset_terminal_parameter, 3, 3, 0,
+       doc: /* Set TERMINAL's value for parameter PARAMETER to VALUE.
+Return the previous value of PARAMETER.
+
+TERMINAL can be a terminal id, a frame or nil (meaning the selected
+frame's terminal).  */)
+     (terminal, parameter, value)
+     Lisp_Object terminal;
+     Lisp_Object parameter;
+     Lisp_Object value;
+{
+  struct terminal *t
+    = TERMINALP (terminal) ? XTERMINAL (terminal) : get_terminal (terminal, 1);
+  return store_terminal_param (t, parameter, value);
+}
+
+\f
+
+/* Create the bootstrap display terminal for the initial frame.
+   Returns a terminal of type output_initial.  */
+
+struct terminal *
+init_initial_terminal (void)
+{
+  if (initialized || terminal_list || tty_list)
+    abort ();
+
+  initial_terminal = create_terminal ();
+  initial_terminal->type = output_initial;
+  initial_terminal->name = xstrdup ("initial_terminal");
+#ifdef MULTI_KBOARD
+  initial_terminal->kboard = initial_kboard;
+#endif
+  initial_terminal->delete_terminal_hook = &delete_initial_terminal;
+  /* All other hooks are NULL. */
+
+  return initial_terminal;
+}
+
+/* Deletes the bootstrap terminal device.
+   Called through delete_terminal_hook. */
+
+static void
+delete_initial_terminal (struct terminal *terminal)
+{
+  if (terminal != initial_terminal)
+    abort ();
+
+  delete_terminal (terminal);
+  initial_terminal = NULL;
+}
+
+void
+syms_of_terminal ()
+{
+
+  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;
+
+  defsubr (&Sdelete_terminal);
+  defsubr (&Sframe_terminal);
+  defsubr (&Sterminal_live_p);
+  defsubr (&Sterminal_list);
+  defsubr (&Sterminal_name);
+  defsubr (&Sterminal_parameters);
+  defsubr (&Sterminal_parameter);
+  defsubr (&Sset_terminal_parameter);
+
+  Fprovide (intern ("multi-tty"), Qnil);
+}
+
+/* arch-tag: e9af6f27-b483-47dc-bb1a-730c1c5cab03
+   (do not change this comment) */
index 210236017d5840b179a1d52278933ea1a5c1ca0d..5946666654c1b8c836c151e65cbee4be7f54a081 100644 (file)
@@ -41,5 +41,10 @@ extern int meta_key;
 /* Nonzero means truncate lines in all windows less wide than the frame */
 extern int truncate_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) */
index 2b54f3d59dcb7dc71024ab6132ecd3ecd0eda74e..500e85733b24ddb5fea24282cf9a01681cfbc315 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -137,6 +137,15 @@ typedef BOOL (WINAPI * GetTokenInformation_Proc) (
     LPVOID TokenInformation,
     DWORD TokenInformationLength,
     PDWORD ReturnLength);
+typedef BOOL (WINAPI * GetProcessTimes_Proc) (
+    HANDLE process_handle,
+    LPFILETIME creation_time,
+    LPFILETIME exit_time,
+    LPFILETIME kernel_time,
+    LPFILETIME user_time);
+
+GetProcessTimes_Proc get_process_times_fn = NULL;
+
 #ifdef _UNICODE
 const char * const LookupAccountSid_Name = "LookupAccountSidW";
 #else
@@ -172,6 +181,46 @@ is_windows_9x ()
   return s_b_ret;
 }
 
+/* Get total user and system times for get-internal-run-time.
+   Returns a list of three integers if the times are provided by the OS
+   (NT derivatives), otherwise it returns the result of current-time. */
+Lisp_Object
+w32_get_internal_run_time ()
+{
+  if (get_process_times_fn)
+    {
+      FILETIME create, exit, kernel, user;
+      HANDLE proc = GetCurrentProcess();
+      if ((*get_process_times_fn) (proc, &create, &exit, &kernel, &user))
+        {
+          LARGE_INTEGER user_int, kernel_int, total;
+          int microseconds;
+          user_int.LowPart = user.dwLowDateTime;
+          user_int.HighPart = user.dwHighDateTime;
+          kernel_int.LowPart = kernel.dwLowDateTime;
+          kernel_int.HighPart = kernel.dwHighDateTime;
+          total.QuadPart = user_int.QuadPart + kernel_int.QuadPart;
+          /* FILETIME is 100 nanosecond increments, Emacs only wants
+             microsecond resolution.  */
+          total.QuadPart /= 10;
+          microseconds = total.QuadPart % 1000000;
+          total.QuadPart /= 1000000;
+
+          /* Sanity check to make sure we can represent the result.  */
+          if (total.HighPart == 0)
+            {
+              int secs = total.LowPart;
+
+              return list3 (make_number ((secs >> 16) & 0xffff),
+                            make_number (secs & 0xffff),
+                            make_number (microseconds));
+            }
+        }
+    }
+
+  return Fcurrent_time ();
+}
+
   /* ** The wrapper functions ** */
 
 BOOL WINAPI open_process_token (
@@ -855,18 +904,6 @@ alarm (int seconds)
   return 0;
 }
 
-void
-unrequest_sigio (void)
-{
-  return;
-}
-
-void
-request_sigio (void)
-{
-  return;
-}
-
 #define REG_ROOT "SOFTWARE\\GNU\\Emacs"
 
 LPBYTE
@@ -4148,6 +4185,11 @@ BOOL WINAPI shutdown_handler(DWORD type)
 void
 globals_of_w32 ()
 {
+  HMODULE kernel32 = GetModuleHandle ("kernel32.dll");
+
+  get_process_times_fn = (GetProcessTimes_Proc)
+    GetProcAddress (kernel32, "GetProcessTimes");
+
   g_b_init_is_windows_9x = 0;
   g_b_init_open_process_token = 0;
   g_b_init_get_token_information = 0;
index 3afa5fb392a09e6a2239a1c423508d577c466e02..d8d2a24f81b5c39a28d53e027273f27adf4d5845 100644 (file)
@@ -35,11 +35,12 @@ Boston, MA 02110-1301, USA.
 #include "charset.h"
 #include "coding.h"
 #include "disptab.h"
-#include "termhooks.h"
-#include "dispextern.h"
 /* Disable features in frame.h that require a Window System.  */
 #undef HAVE_WINDOW_SYSTEM
 #include "frame.h"
+#include "termhooks.h"
+#include "termchar.h"
+#include "dispextern.h"
 #include "w32inevt.h"
 
 /* from window.c */
@@ -51,21 +52,17 @@ extern int detect_input_pending ();
 /* from sysdep.c */
 extern int read_input_pending ();
 
-extern struct frame * updating_frame;
-extern int meta_key;
-
-static void w32con_move_cursor (int row, int col);
-static void w32con_clear_to_end (void);
-static void w32con_clear_frame (void);
-static void w32con_clear_end_of_line (int);
-static void w32con_ins_del_lines (int vpos, int n);
-static void w32con_insert_glyphs (struct glyph *start, int len);
-static void w32con_write_glyphs (struct glyph *string, int len);
-static void w32con_delete_glyphs (int n);
-void w32_sys_ring_bell (void);
-static void w32con_reset_terminal_modes (void);
-static void w32con_set_terminal_modes (void);
-static void w32con_set_terminal_window (int size);
+static void w32con_move_cursor (struct frame *f, int row, int col);
+static void w32con_clear_to_end (struct frame *f);
+static void w32con_clear_frame (struct frame *f);
+static void w32con_clear_end_of_line (struct frame *f, int);
+static void w32con_ins_del_lines (struct frame *f, int vpos, int n);
+static void w32con_insert_glyphs (struct frame *f, struct glyph *start, int len);
+static void w32con_write_glyphs (struct frame *f, struct glyph *string, int len);
+static void w32con_delete_glyphs (struct frame *f, int n);
+static void w32con_reset_terminal_modes (struct terminal *t);
+static void w32con_set_terminal_modes (struct terminal *t);
+static void w32con_set_terminal_window (struct frame *f, int size);
 static void w32con_update_begin (struct frame * f);
 static void w32con_update_end (struct frame * f);
 static WORD w32_face_attributes (struct frame *f, int face_id);
@@ -99,38 +96,31 @@ ctrl_c_handler (unsigned long type)
          && (type == CTRL_C_EVENT || type == CTRL_BREAK_EVENT));
 }
 
-/* If we're updating a frame, use it as the current frame
-   Otherwise, use the selected frame.  */
-#define PICK_FRAME() (updating_frame ? updating_frame : SELECTED_FRAME ())
 
-/* Move the cursor to (row, col).  */
+/* Move the cursor to (ROW, COL) on FRAME.  */
 static void
-w32con_move_cursor (int row, int col)
+w32con_move_cursor (struct frame *f, int row, int col)
 {
   cursor_coords.X = col;
   cursor_coords.Y = row;
 
-  if (updating_frame == (struct frame *) NULL)
-    {
-      SetConsoleCursorPosition (cur_screen, cursor_coords);
-    }
+  /* TODO: for multi-tty support, cur_screen should be replaced with a
+     reference to the terminal for this frame.  */
+  SetConsoleCursorPosition (cur_screen, cursor_coords);
 }
 
 /* Clear from cursor to end of screen.  */
 static void
-w32con_clear_to_end (void)
+w32con_clear_to_end (struct frame *f)
 {
-  struct frame * f = PICK_FRAME ();
-
-  w32con_clear_end_of_line (FRAME_COLS (f) - 1);
-  w32con_ins_del_lines (cursor_coords.Y, FRAME_LINES (f) - cursor_coords.Y - 1);
+  w32con_clear_end_of_line (f, FRAME_COLS (f) - 1);
+  w32con_ins_del_lines (f, cursor_coords.Y, FRAME_LINES (f) - cursor_coords.Y - 1);
 }
 
 /* Clear the frame.  */
 static void
-w32con_clear_frame (void)
+w32con_clear_frame (struct frame *f)
 {
-  struct frame *  f = PICK_FRAME ();
   COORD             dest;
   int        n;
   DWORD      r;
@@ -145,7 +135,7 @@ w32con_clear_frame (void)
   FillConsoleOutputAttribute (cur_screen, char_attr_normal, n, dest, &r);
   FillConsoleOutputCharacter (cur_screen, ' ', n, dest, &r);
 
-  w32con_move_cursor (0, 0);
+  w32con_move_cursor (f, 0, 0);
 }
 
 
@@ -154,7 +144,7 @@ static BOOL  ceol_initialized = FALSE;
 
 /* Clear from Cursor to end (what's "standout marker"?).  */
 static void
-w32con_clear_end_of_line (int end)
+w32con_clear_end_of_line (struct frame *f, int end)
 {
   if (!ceol_initialized)
     {
@@ -165,18 +155,17 @@ w32con_clear_end_of_line (int end)
         }
       ceol_initialized = TRUE;
     }
-  w32con_write_glyphs (glyph_base, end - cursor_coords.X);     /* fencepost ?  */
+  w32con_write_glyphs (f, glyph_base, end - cursor_coords.X);  /* fencepost ?  */
 }
 
 /* Insert n lines at vpos. if n is negative delete -n lines.  */
 static void
-w32con_ins_del_lines (int vpos, int n)
+w32con_ins_del_lines (struct frame *f, int vpos, int n)
 {
   int       i, nb;
   SMALL_RECT scroll;
   COORD             dest;
   CHAR_INFO  fill;
-  struct frame *  f = PICK_FRAME ();
 
   if (n < 0)
     {
@@ -213,8 +202,8 @@ w32con_ins_del_lines (int vpos, int n)
         {
          for (i = scroll.Bottom; i < dest.Y; i++)
             {
-             w32con_move_cursor (i, 0);
-             w32con_clear_end_of_line (FRAME_COLS (f));
+             w32con_move_cursor (f, i, 0);
+             w32con_clear_end_of_line (f, FRAME_COLS (f));
             }
         }
     }
@@ -226,8 +215,8 @@ w32con_ins_del_lines (int vpos, int n)
         {
          for (i = nb; i < scroll.Top; i++)
             {
-             w32con_move_cursor (i, 0);
-             w32con_clear_end_of_line (FRAME_COLS (f));
+             w32con_move_cursor (f, i, 0);
+             w32con_clear_end_of_line (f, FRAME_COLS (f));
             }
         }
     }
@@ -242,14 +231,13 @@ w32con_ins_del_lines (int vpos, int n)
 #define        RIGHT   0
 
 static void
-scroll_line (int dist, int direction)
+scroll_line (struct frame *f, int dist, int direction)
 {
   /* The idea here is to implement a horizontal scroll in one line to
      implement delete and half of insert.  */
   SMALL_RECT scroll;
   COORD             dest;
   CHAR_INFO  fill;
-  struct frame *  f = PICK_FRAME ();
 
   scroll.Top = cursor_coords.Y;
   scroll.Bottom = cursor_coords.Y;
@@ -277,9 +265,9 @@ scroll_line (int dist, int direction)
 
 /* If start is zero insert blanks instead of a string at start ?. */
 static void
-w32con_insert_glyphs (register struct glyph *start, register int len)
+w32con_insert_glyphs (struct frame *f, register struct glyph *start, register int len)
 {
-  scroll_line (len, RIGHT);
+  scroll_line (f, len, RIGHT);
 
   /* Move len chars to the right starting at cursor_coords, fill with blanks */
   if (start)
@@ -287,11 +275,11 @@ w32con_insert_glyphs (register struct glyph *start, register int len)
       /* Print the first len characters of start, cursor_coords.X adjusted
         by write_glyphs.  */
 
-      w32con_write_glyphs (start, len);
+      w32con_write_glyphs (f, start, len);
     }
   else
     {
-      w32con_clear_end_of_line (cursor_coords.X + len);
+      w32con_clear_end_of_line (f, cursor_coords.X + len);
     }
 }
 
@@ -299,11 +287,11 @@ extern unsigned char *encode_terminal_code P_ ((struct glyph *, int,
                                                struct coding_system *));
 
 static void
-w32con_write_glyphs (register struct glyph *string, register int len)
+w32con_write_glyphs (struct frame *f, register struct glyph *string,
+                     register int len)
 {
   int produced, consumed;
   DWORD r;
-  struct frame * f = PICK_FRAME ();
   WORD char_attr;
   unsigned char *conversion_buffer;
   struct coding_system *coding;
@@ -314,11 +302,11 @@ w32con_write_glyphs (register struct glyph *string, register int len)
   /* If terminal_coding does any conversion, use it, otherwise use
      safe_terminal_coding.  We can't use CODING_REQUIRE_ENCODING here
      because it always return 1 if the member src_multibyte is 1.  */
-  coding = (terminal_coding.common_flags & CODING_REQUIRE_ENCODING_MASK
-           ? &terminal_coding : &safe_terminal_coding);
+  coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK
+           ? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding);
   /* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at
      the tail.  */
-  terminal_coding.mode &= ~CODING_MODE_LAST_BLOCK;
+  coding->mode &= ~CODING_MODE_LAST_BLOCK;
 
   while (len > 0)
     {
@@ -360,7 +348,7 @@ w32con_write_glyphs (register struct glyph *string, register int len)
            }
 
          cursor_coords.X += coding->produced;
-         w32con_move_cursor (cursor_coords.Y, cursor_coords.X);
+         w32con_move_cursor (f, cursor_coords.Y, cursor_coords.X);
        }
       len -= n;
       string += n;
@@ -369,20 +357,20 @@ w32con_write_glyphs (register struct glyph *string, register int len)
 
 
 static void
-w32con_delete_glyphs (int n)
+w32con_delete_glyphs (struct frame *f, int n)
 {
   /* delete chars means scroll chars from cursor_coords.X + n to
      cursor_coords.X, anything beyond the edge of the screen should
      come out empty...  */
 
-  scroll_line (n, LEFT);
+  scroll_line (f, n, LEFT);
 }
 
 static unsigned int sound_type = 0xFFFFFFFF;
 #define MB_EMACS_SILENT (0xFFFFFFFF - 1)
 
 void
-w32_sys_ring_bell (void)
+w32_sys_ring_bell (struct frame *f)
 {
   if (sound_type == 0xFFFFFFFF)
     {
@@ -428,7 +416,7 @@ SOUND is nil to use the normal beep.  */)
 }
 
 static void
-w32con_reset_terminal_modes (void)
+w32con_reset_terminal_modes (struct terminal *t)
 {
 #ifdef USE_SEPARATE_SCREEN
   SetConsoleActiveScreenBuffer (prev_screen);
@@ -439,7 +427,7 @@ w32con_reset_terminal_modes (void)
 }
 
 static void
-w32con_set_terminal_modes (void)
+w32con_set_terminal_modes (struct terminal *t)
 {
   CONSOLE_CURSOR_INFO cci;
 
@@ -473,7 +461,7 @@ w32con_update_end (struct frame * f)
 }
 
 static void
-w32con_set_terminal_window (int size)
+w32con_set_terminal_window (struct frame *f, int size)
 {
 }
 
@@ -547,28 +535,38 @@ vga_stdcolor_name (int idx)
 typedef int (*term_hook) ();
 
 void
-initialize_w32_display (void)
+initialize_w32_display (struct terminal *term)
 {
   CONSOLE_SCREEN_BUFFER_INFO   info;
 
-  cursor_to_hook               = w32con_move_cursor;
-  raw_cursor_to_hook           = w32con_move_cursor;
-  clear_to_end_hook            = w32con_clear_to_end;
-  clear_frame_hook             = w32con_clear_frame;
-  clear_end_of_line_hook       = w32con_clear_end_of_line;
-  ins_del_lines_hook           = w32con_ins_del_lines;
-  insert_glyphs_hook           = w32con_insert_glyphs;
-  write_glyphs_hook            = w32con_write_glyphs;
-  delete_glyphs_hook           = w32con_delete_glyphs;
-  ring_bell_hook               = w32_sys_ring_bell;
-  reset_terminal_modes_hook    = w32con_reset_terminal_modes;
-  set_terminal_modes_hook      = w32con_set_terminal_modes;
-  set_terminal_window_hook     = w32con_set_terminal_window;
-  update_begin_hook            = w32con_update_begin;
-  update_end_hook              = w32con_update_end;
-
-  read_socket_hook = w32_console_read_socket;
-  mouse_position_hook = w32_console_mouse_position;
+  term->rif = 0; /* No window based redisplay on the console.  */
+  term->cursor_to_hook         = w32con_move_cursor;
+  term->raw_cursor_to_hook             = w32con_move_cursor;
+  term->clear_to_end_hook              = w32con_clear_to_end;
+  term->clear_frame_hook               = w32con_clear_frame;
+  term->clear_end_of_line_hook = w32con_clear_end_of_line;
+  term->ins_del_lines_hook             = w32con_ins_del_lines;
+  term->insert_glyphs_hook             = w32con_insert_glyphs;
+  term->write_glyphs_hook              = w32con_write_glyphs;
+  term->delete_glyphs_hook             = w32con_delete_glyphs;
+  term->ring_bell_hook         = w32_sys_ring_bell;
+  term->reset_terminal_modes_hook      = w32con_reset_terminal_modes;
+  term->set_terminal_modes_hook        = w32con_set_terminal_modes;
+  term->set_terminal_window_hook       = w32con_set_terminal_window;
+  term->update_begin_hook              = w32con_update_begin;
+  term->update_end_hook                = w32con_update_end;
+
+  term->read_socket_hook = w32_console_read_socket;
+  term->mouse_position_hook = w32_console_mouse_position;
+
+  /* The following are not used on the console.  */
+  term->frame_rehighlight_hook = 0;
+  term->frame_raise_lower_hook = 0;
+  term->set_vertical_scroll_bar_hook = 0;
+  term->condemn_scroll_bars_hook = 0;
+  term->redeem_scroll_bar_hook = 0;
+  term->judge_scroll_bars_hook = 0;
+  term->frame_up_to_date_hook = 0;
 
   /* Initialize interrupt_handle.  */
   init_crit ();
@@ -633,7 +631,6 @@ initialize_w32_display (void)
 
   GetConsoleScreenBufferInfo (cur_screen, &info);
 
-  meta_key = 1;
   char_attr_normal = info.wAttributes;
 
   /* Determine if the info returned by GetConsoleScreenBufferInfo
@@ -674,6 +671,7 @@ initialize_w32_display (void)
 
 }
 
+
 DEFUN ("set-screen-color", Fset_screen_color, Sset_screen_color, 2, 2, 0,
        doc: /* Set screen colors.  */)
     (foreground, background)
index e8a2dc913de87dfaa92926c505db5f87bc83d398..8af99a2d0b98ba04917a729c95621d1801885087 100644 (file)
@@ -1819,10 +1819,8 @@ x_set_tool_bar_lines (f, value, oldval)
      below the menu bar.  */
   if (FRAME_W32_WINDOW (f) && FRAME_TOOL_BAR_LINES (f) == 0)
     {
-      updating_frame = f;
-      clear_frame ();
+      clear_frame (f);
       clear_current_matrices (f);
-      updating_frame = NULL;
     }
 
   /* If the tool bar gets smaller, the internal border below it
@@ -3378,16 +3376,20 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
       return 0;
 
     case WM_MOUSEWHEEL:
+    case WM_DROPFILES:
       wmsg.dwModifiers = w32_get_modifiers ();
       my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
       signal_user_input ();
       return 0;
 
-    case WM_DROPFILES:
+    case WM_MOUSEHWHEEL:
       wmsg.dwModifiers = w32_get_modifiers ();
       my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
       signal_user_input ();
-      return 0;
+      /* Non-zero must be returned when WM_MOUSEHWHEEL messages are
+         handled, to prevent the system trying to handle it by faking
+         scroll bar events.  */
+      return 1;
 
     case WM_TIMER:
       /* Flush out saved messages if necessary. */
@@ -4173,7 +4175,7 @@ This function is an internal primitive--use `make-frame' instead.  */)
     display = Qnil;
   dpyinfo = check_x_display_info (display);
 #ifdef MULTI_KBOARD
-  kb = dpyinfo->kboard;
+  kb = dpyinfo->terminal->kboard;
 #else
   kb = &the_only_kboard;
 #endif
@@ -4221,6 +4223,9 @@ This function is an internal primitive--use `make-frame' instead.  */)
   /* By default, make scrollbars the system standard width. */
   FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = GetSystemMetrics (SM_CXVSCROLL);
 
+  f->terminal = dpyinfo->terminal;
+  f->terminal->reference_count++;
+
   f->output_method = output_w32;
   f->output_data.w32 =
     (struct w32_output *) xmalloc (sizeof (struct w32_output));
@@ -4435,6 +4440,22 @@ This function is an internal primitive--use `make-frame' instead.  */)
        /* Must have been Qnil.  */
        ;
     }
+
+  /* Initialize `default-minibuffer-frame' in case this is the first
+     frame on this terminal.  */
+  if (FRAME_HAS_MINIBUF_P (f)
+      && (!FRAMEP (kb->Vdefault_minibuffer_frame)
+          || !FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame))))
+    kb->Vdefault_minibuffer_frame = frame;
+
+  /* All remaining specified parameters, which have not been "used"
+     by x_get_arg and friends, now go in the misc. alist of the frame.  */
+  for (tem = parameters; !NILP (tem); tem = XCDR (tem))
+    if (CONSP (XCAR (tem)) && !NILP (XCAR (XCAR (tem))))
+      f->param_alist = Fcons (XCAR (tem), f->param_alist);
+
+  store_frame_param (f, Qwindow_system, Qw32);
+  
   UNGCPRO;
 
   /* Make sure windows on this frame appear in calls to next-window
@@ -4460,7 +4481,7 @@ x_get_focus_frame (frame)
   return xfocus;
 }
 
-DEFUN ("w32-focus-frame", Fw32_focus_frame, Sw32_focus_frame, 1, 1, 0,
+DEFUN ("x-focus-frame", Fx_focus_frame, Sx_focus_frame, 1, 1, 0,
        doc: /* Give FRAME input focus, raising to foreground if necessary.  */)
   (frame)
      Lisp_Object frame;
@@ -5341,9 +5362,9 @@ w32_to_x_font (lplogfont, lpxstr, len, specific_charset)
 
   if (lplogfont->lfHeight)
     {
-      sprintf (height_pixels, "%u", abs (lplogfont->lfHeight));
+      sprintf (height_pixels, "%u", eabs (lplogfont->lfHeight));
       sprintf (height_dpi, "%u",
-              abs (lplogfont->lfHeight) * 720 / display_resy);
+              eabs (lplogfont->lfHeight) * 720 / display_resy);
     }
   else
     {
@@ -5565,7 +5586,7 @@ x_to_w32_font (lpxstr, lplogfont)
     }
 
   /* This makes TrueType fonts work better. */
-  lplogfont->lfHeight = - abs (lplogfont->lfHeight);
+  lplogfont->lfHeight = - eabs (lplogfont->lfHeight);
 
   return (TRUE);
 }
@@ -6709,8 +6730,10 @@ terminate Emacs if we can't open the connection.  */)
   if (! NILP (xrm_string))
     CHECK_STRING (xrm_string);
 
+#if 0
   if (! EQ (Vwindow_system, intern ("w32")))
     error ("Not using Microsoft Windows");
+#endif
 
   /* Allow color mapping to be defined externally; first look in user's
      HOME directory, then in Emacs etc dir for a file called rgb.txt. */
@@ -7212,7 +7235,7 @@ x_create_tip_frame (dpyinfo, parms, text)
   Vx_resource_name = Vinvocation_name;
 
 #ifdef MULTI_KBOARD
-  kb = dpyinfo->kboard;
+  kb = dpyinfo->terminal->kboard;
 #else
   kb = &the_only_kboard;
 #endif
@@ -7250,6 +7273,8 @@ x_create_tip_frame (dpyinfo, parms, text)
      the frame is live, as per FRAME_LIVE_P.  If we get a signal
      from this point on, x_destroy_window might screw up reference
      counts etc.  */
+  f->terminal = dpyinfo->terminal;
+  f->terminal->reference_count++;
   f->output_method = output_w32;
   f->output_data.w32 =
     (struct w32_output *) xmalloc (sizeof (struct w32_output));
@@ -7413,6 +7438,8 @@ x_create_tip_frame (dpyinfo, parms, text)
                                              Qnil));
   }
 
+  Fmodify_frame_parameters (frame, Fcons (Fcons (Qwindow_system, Qw32), Qnil));
+
   f->no_split = 1;
 
   UNGCPRO;
@@ -8989,10 +9016,10 @@ versions of Windows) characters.  */);
   defsubr (&Sx_close_connection);
   defsubr (&Sx_display_list);
   defsubr (&Sx_synchronize);
+  defsubr (&Sx_focus_frame);
 
   /* W32 specific functions */
 
-  defsubr (&Sw32_focus_frame);
   defsubr (&Sw32_select_font);
   defsubr (&Sw32_define_rgb_color);
   defsubr (&Sw32_default_color_map);
index fa2d34c29987a7beb3254efbd535cbe339b8d2e6..17cfd384400f5b7da3828bfad4cd40786fcdaa98 100644 (file)
@@ -643,7 +643,9 @@ maybe_generate_resize_event ()
 }
 
 int
-w32_console_read_socket (int sd, int expected, struct input_event *hold_quit)
+w32_console_read_socket (struct terminal *terminal,
+                         int expected,
+                         struct input_event *hold_quit)
 {
   BOOL no_events = TRUE;
   int nev, ret = 0, add;
index 53f36e3a348407cb99cb97cc28a8a29b475c7c5e..08d85a0b2e4f28f800588d4ac79faf82e8c1eaaa 100644 (file)
@@ -22,7 +22,7 @@ Boston, MA 02110-1301, USA.  */
 #ifndef EMACS_W32INEVT_H
 #define EMACS_W32INEVT_H
 
-extern int w32_console_read_socket (int sd, int numchars,
+extern int w32_console_read_socket (struct terminal *term, int numchars,
                                    struct input_event *hold_quit);
 extern void w32_console_mouse_position (FRAME_PTR *f, int insist,
                                        Lisp_Object *bar_window,
index f0d582d388a71eb2f0345725e2b1ec3d90093509..a94be08902d5cc3cae4a6d39de788903846017fc 100644 (file)
@@ -20,15 +20,16 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
 
 #include <config.h>
-#include <signal.h>
 
+#include <signal.h>
 #include <stdio.h>
 #include <mbstring.h>
+
 #include "lisp.h"
-#include "termhooks.h"
 #include "keyboard.h"
 #include "keymap.h"
 #include "frame.h"
+#include "termhooks.h"
 #include "window.h"
 #include "blockinput.h"
 #include "buffer.h"
@@ -317,14 +318,8 @@ discard_menu_items ()
 static void
 grow_menu_items ()
 {
-  Lisp_Object old;
-  int old_size = menu_items_allocated;
-  old = menu_items;
-
   menu_items_allocated *= 2;
-  menu_items = Fmake_vector (make_number (menu_items_allocated), Qnil);
-  bcopy (XVECTOR (old)->contents, XVECTOR (menu_items)->contents,
-        old_size * sizeof (Lisp_Object));
+  menu_items = larger_vector (menu_items, menu_items_allocated, Qnil);
 }
 
 /* Begin a submenu.  */
@@ -674,8 +669,8 @@ cached information about equivalent key sequences.  */)
          enum scroll_bar_part part;
          unsigned long time;
 
-         if (mouse_position_hook)
-           (*mouse_position_hook) (&new_f, 1, &bar_window,
+         if (FRAME_TERMINAL (new_f)->mouse_position_hook)
+           (*FRAME_TERMINAL (new_f)->mouse_position_hook) (&new_f, 1, &bar_window,
                                    &part, &x, &y, &time);
          if (new_f != 0)
            XSETFRAME (window, new_f);
index 510f2381a6d1bd02b3d48faea3edccab28bc308a..80ea9983cef11eb47559726f99398e3b9b520004 100644 (file)
@@ -58,8 +58,6 @@ Boston, MA 02110-1301, USA.  */
 #include "composite.h"
 #include "coding.h"
 
-#define abs(x) ((x) < 0 ? -(x) : (x))
-
 \f
 /* Fringe bitmaps.  */
 
@@ -218,10 +216,9 @@ extern int errno;
 extern EMACS_INT extra_keyboard_modifiers;
 
 static void x_update_window_end P_ ((struct window *, int, int));
-void w32_delete_display P_ ((struct w32_display_info *));
 static void w32_handle_tool_bar_click P_ ((struct frame *,
                                           struct input_event *));
-void w32_define_cursor P_ ((Window, Cursor));
+static void w32_define_cursor P_ ((Window, Cursor));
 
 void x_lower_frame P_ ((struct frame *));
 void x_scroll_bar_clear P_ ((struct frame *));
@@ -230,14 +227,14 @@ void x_raise_frame P_ ((struct frame *));
 void x_set_window_size P_ ((struct frame *, int, int, int));
 void x_wm_set_window_state P_ ((struct frame *, int));
 void x_wm_set_icon_pixmap P_ ((struct frame *, int));
-void w32_initialize P_ ((void));
+static void w32_initialize P_ ((void));
 static void x_font_min_bounds P_ ((XFontStruct *, int *, int *));
 int x_compute_min_glyph_bounds P_ ((struct frame *));
 static void x_update_end P_ ((struct frame *));
 static void w32_frame_up_to_date P_ ((struct frame *));
-static void w32_set_terminal_modes P_ ((void));
-static void w32_reset_terminal_modes P_ ((void));
-static void x_clear_frame P_ ((void));
+static void w32_set_terminal_modes P_ ((struct terminal *));
+static void w32_reset_terminal_modes P_ ((struct terminal *));
+static void x_clear_frame P_ ((struct frame *));
 static void frame_highlight P_ ((struct frame *));
 static void frame_unhighlight P_ ((struct frame *));
 static void x_new_focus_frame P_ ((struct w32_display_info *,
@@ -683,6 +680,60 @@ w32_draw_fringe_bitmap (w, row, p)
 
   hdc = get_frame_dc (f);
 
+  if (!p->overlay_p)
+    {
+      int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny;
+
+      /* If the fringe is adjacent to the left (right) scroll bar of a
+        leftmost (rightmost, respectively) window, then extend its
+        background to the gap between the fringe and the bar.  */
+      if ((WINDOW_LEFTMOST_P (w)
+          && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
+         || (WINDOW_RIGHTMOST_P (w)
+             && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)))
+       {
+         int sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w);
+
+         if (sb_width > 0)
+           {
+             int left = WINDOW_SCROLL_BAR_AREA_X (w);
+             int width = (WINDOW_CONFIG_SCROLL_BAR_COLS (w)
+                          * FRAME_COLUMN_WIDTH (f));
+
+             if (bx < 0)
+               {
+                 /* Bitmap fills the fringe.  */
+                 if (left + width == p->x)
+                   bx = left + sb_width;
+                 else if (p->x + p->wd == left)
+                   bx = left;
+                 if (bx >= 0)
+                   {
+                     int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w);
+
+                     nx = width - sb_width;
+                     by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height,
+                                                           row->y));
+                     ny = row->visible_height;
+                   }
+               }
+             else
+               {
+                 if (left + width == bx)
+                   {
+                     bx = left + sb_width;
+                     nx += width - sb_width;
+                   }
+                 else if (bx + nx == left)
+                   nx += width - sb_width;
+               }
+           }
+       }
+
+      if (bx >= 0 && nx > 0)
+       w32_fill_area (f, hdc, face->background, bx, by, nx, ny);
+    }
+
   /* Must clip because of partially visible lines.  */
   rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
   if (p->y < rowY)
@@ -700,12 +751,6 @@ w32_draw_fringe_bitmap (w, row, p)
   else
     w32_clip_to_row (w, row, -1, hdc);
 
-  if (p->bx >= 0 && !p->overlay_p)
-    {
-      w32_fill_area (f, hdc, face->background,
-                    p->bx, p->by, p->nx, p->ny);
-    }
-
   if (p->which && p->which < max_fringe_bmp)
     {
       HBITMAP pixmap = fringe_bmp[p->which];
@@ -801,7 +846,7 @@ w32_destroy_fringe_bitmap (which)
    rarely happens).  */
 
 static void
-w32_set_terminal_modes (void)
+w32_set_terminal_modes (struct terminal *term)
 {
 }
 
@@ -809,7 +854,7 @@ w32_set_terminal_modes (void)
    the W32 windows go away, and suspending requires no action. */
 
 static void
-w32_reset_terminal_modes (void)
+w32_reset_terminal_modes (struct terminal *term)
 {
 }
 
@@ -1066,7 +1111,8 @@ w32_cache_char_metrics (font)
 
 
 /* Determine if a font is double byte. */
-int w32_font_is_double_byte (XFontStruct *font)
+static int
+w32_font_is_double_byte (XFontStruct *font)
 {
   return font->double_byte_p;
 }
@@ -1543,7 +1589,7 @@ x_draw_glyph_string_foreground (s)
      of S to the right of that box line.  */
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p)
-    x = s->x + abs (s->face->box_line_width);
+    x = s->x + eabs (s->face->box_line_width);
   else
     x = s->x;
 
@@ -1615,7 +1661,7 @@ x_draw_composite_glyph_string_foreground (s)
      of S to the right of that box line.  */
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p)
-    x = s->x + abs (s->face->box_line_width);
+    x = s->x + eabs (s->face->box_line_width);
   else
     x = s->x;
 
@@ -1945,7 +1991,7 @@ x_draw_glyph_string_box (s)
                ? s->first_glyph
                : s->first_glyph + s->nchars - 1);
 
-  width = abs (s->face->box_line_width);
+  width = eabs (s->face->box_line_width);
   raised_p = s->face->box == FACE_RAISED_BOX;
   left_x = s->x;
   right_x = ((s->row->full_width_p && s->extends_to_end_of_line_p
@@ -1991,7 +2037,7 @@ x_draw_image_foreground (s)
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p
       && s->slice.x == 0)
-    x += abs (s->face->box_line_width);
+    x += eabs (s->face->box_line_width);
 
   /* If there is a margin around the image, adjust x- and y-position
      by that margin.  */
@@ -2084,7 +2130,7 @@ x_draw_image_relief (s)
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p
       && s->slice.x == 0)
-    x += abs (s->face->box_line_width);
+    x += eabs (s->face->box_line_width);
 
   /* If there is a margin around the image, adjust x- and y-position
      by that margin.  */
@@ -2101,7 +2147,7 @@ x_draw_image_relief (s)
     }
   else
     {
-      thick = abs (s->img->relief);
+      thick = eabs (s->img->relief);
       raised_p = s->img->relief > 0;
     }
 
@@ -2138,7 +2184,7 @@ w32_draw_image_foreground_1 (s, pixmap)
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p
       && s->slice.x == 0)
-    x += abs (s->face->box_line_width);
+    x += eabs (s->face->box_line_width);
 
   /* If there is a margin around the image, adjust x- and y-position
      by that margin.  */
@@ -2250,7 +2296,7 @@ x_draw_image_glyph_string (s)
      struct glyph_string *s;
 {
   int x, y;
-  int box_line_hwidth = abs (s->face->box_line_width);
+  int box_line_hwidth = eabs (s->face->box_line_width);
   int box_line_vwidth = max (s->face->box_line_width, 0);
   int height;
   HBITMAP pixmap = 0;
@@ -2549,7 +2595,7 @@ x_draw_glyph_string (s)
           if (s->face->overline_color_defaulted_p)
            {
              w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x,
-                            s->y + dy, s->background_width, h);
+                         s->y + dy, s->background_width, h);
            }
           else
             {
@@ -2608,16 +2654,10 @@ w32_shift_glyphs_for_insert (f, x, y, width, height, shift_by)
    for X frames.  */
 
 static void
-x_delete_glyphs (n)
+x_delete_glyphs (f, n)
+     struct frame *f;
      register int n;
 {
-  struct frame *f;
-
-  if (updating_frame)
-    f = updating_frame;
-  else
-    f = SELECTED_FRAME ();
-
   if (! FRAME_W32_P (f))
     return;
 
@@ -2629,15 +2669,8 @@ x_delete_glyphs (n)
    frame.  Otherwise clear the selected frame.  */
 
 static void
-x_clear_frame ()
+x_clear_frame (struct frame *f)
 {
-  struct frame *f;
-
-  if (updating_frame)
-    f = updating_frame;
-  else
-    f = SELECTED_FRAME ();
-
   if (! FRAME_W32_P (f))
     return;
 
@@ -2664,18 +2697,14 @@ x_clear_frame ()
 /* Make audible bell.  */
 
 static void
-w32_ring_bell (void)
+w32_ring_bell (struct frame *f)
 {
-  struct frame *f;
-
-  f = SELECTED_FRAME ();
-
   BLOCK_INPUT;
 
   if (FRAME_W32_P (f) && visible_bell)
     {
       int i;
-      HWND hwnd = FRAME_W32_WINDOW (SELECTED_FRAME ());
+      HWND hwnd = FRAME_W32_WINDOW (f);
 
       for (i = 0; i < 5; i++)
        {
@@ -2685,7 +2714,7 @@ w32_ring_bell (void)
       FlashWindow (hwnd, FALSE);
     }
   else
-      w32_sys_ring_bell ();
+      w32_sys_ring_bell (f);
 
   UNBLOCK_INPUT;
 }
@@ -2712,16 +2741,10 @@ w32_set_terminal_window (n)
    lines or deleting -N lines at vertical position VPOS.  */
 
 static void
-x_ins_del_lines (vpos, n)
+x_ins_del_lines (f, vpos, n)
+     struct frame *f;
      int vpos, n;
 {
-  struct frame *f;
-
-  if (updating_frame)
-    f = updating_frame;
-  else
-    f = SELECTED_FRAME ();
-
   if (! FRAME_W32_P (f))
     return;
 
@@ -3126,7 +3149,8 @@ construct_mouse_wheel (result, msg, f)
   POINT p;
   int delta;
 
-  result->kind = WHEEL_EVENT;
+  result->kind = msg->msg.message == WM_MOUSEHWHEEL ? HORIZ_WHEEL_EVENT
+                                                    : WHEEL_EVENT;
   result->code = 0;
   result->timestamp = msg->msg.time;
 
@@ -3278,7 +3302,7 @@ redo_mouse_highlight ()
                          HIWORD (last_mouse_motion_event.lParam));
 }
 
-void
+static void
 w32_define_cursor (window, cursor)
      Window window;
      Cursor cursor;
@@ -3545,7 +3569,7 @@ w32_set_scroll_bar_thumb (bar, portion, position, whole)
                         Scroll bars, general
  ************************************************************************/
 
-HWND
+static HWND
 my_create_scrollbar (f, bar)
      struct frame * f;
      struct scroll_bar * bar;
@@ -3638,6 +3662,7 @@ x_scroll_bar_create (w, top, left, width, height)
   XSETINT (bar->start, 0);
   XSETINT (bar->end, 0);
   bar->dragging = Qnil;
+  bar->fringe_extended_p = Qnil;
 
   /* Requires geometry to be set before call to create the real window */
 
@@ -3701,6 +3726,7 @@ w32_set_vertical_scroll_bar (w, portion, whole, position)
   struct scroll_bar *bar;
   int top, height, left, sb_left, width, sb_width;
   int window_y, window_height;
+  int fringe_extended_p;
 
   /* Get window dimensions.  */
   window_box (w, -1, 0, &window_y, 0, &window_height);
@@ -3720,9 +3746,20 @@ w32_set_vertical_scroll_bar (w, portion, whole, position)
 
   /* Compute the left edge of the scroll bar.  */
   if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
-    sb_left = left + width - sb_width - (width - sb_width) / 2;
+    sb_left = left + (WINDOW_RIGHTMOST_P (w) ? width - sb_width : 0);
+  else
+    sb_left = left + (WINDOW_LEFTMOST_P (w) ? 0 : width - sb_width);
+
+  if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
+    fringe_extended_p = (WINDOW_LEFTMOST_P (w)
+                        && WINDOW_LEFT_FRINGE_WIDTH (w)
+                        && (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+                            || WINDOW_LEFT_MARGIN_COLS (w) == 0));
   else
-    sb_left = left + (width - sb_width) / 2;
+    fringe_extended_p = (WINDOW_RIGHTMOST_P (w)
+                        && WINDOW_RIGHT_FRINGE_WIDTH (w)
+                        && (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+                            || WINDOW_RIGHT_MARGIN_COLS (w) == 0));
 
   /* Does the scroll bar exist yet?  */
   if (NILP (w->vertical_scroll_bar))
@@ -3732,7 +3769,10 @@ w32_set_vertical_scroll_bar (w, portion, whole, position)
       if (width > 0 && height > 0)
        {
          hdc = get_frame_dc (f);
-         w32_clear_area (f, hdc, left, top, width, height);
+         if (fringe_extended_p)
+           w32_clear_area (f, hdc, sb_left, top, sb_width, height);
+         else
+           w32_clear_area (f, hdc, left, top, width, height);
          release_frame_dc (f, hdc);
        }
       UNBLOCK_INPUT;
@@ -3751,7 +3791,8 @@ w32_set_vertical_scroll_bar (w, portion, whole, position)
       if ( XINT (bar->left) == sb_left
            && XINT (bar->top) == top
            && XINT (bar->width) ==  sb_width
-           && XINT (bar->height) == height )
+           && XINT (bar->height) == height
+          && !NILP (bar->fringe_extended_p) == fringe_extended_p )
         {
           /* Redraw after clear_frame. */
           if (!my_show_window (f, hwnd, SW_NORMAL))
@@ -3768,11 +3809,10 @@ w32_set_vertical_scroll_bar (w, portion, whole, position)
              hdc = get_frame_dc (f);
              /* Since Windows scroll bars are smaller than the space reserved
                 for them on the frame, we have to clear "under" them.  */
-             w32_clear_area (f, hdc,
-                             left,
-                             top,
-                             width,
-                             height);
+             if (fringe_extended_p)
+               w32_clear_area (f, hdc, sb_left, top, sb_width, height);
+             else
+               w32_clear_area (f, hdc, left, top, width, height);
              release_frame_dc (f, hdc);
            }
           /* Make sure scroll bar is "visible" before moving, to ensure the
@@ -3802,6 +3842,8 @@ w32_set_vertical_scroll_bar (w, portion, whole, position)
           UNBLOCK_INPUT;
         }
     }
+  bar->fringe_extended_p = fringe_extended_p ? Qt : Qnil;
+
   w32_set_scroll_bar_thumb (bar, portion, position, whole);
 
   XSETVECTOR (w->vertical_scroll_bar, bar);
@@ -4141,7 +4183,7 @@ static short temp_buffer[100];
 
    Some of these messages are reposted back to the message queue since the
    system calls the windows proc directly in a context where we cannot return
-   the data nor can we guarantee the state we are in.  So if we dispatch  them
+   the data nor can we guarantee the state we are in.  So if we dispatch them
    we will get into an infinite loop.  To prevent this from ever happening we
    will set a variable to indicate we are in the read_socket call and indicate
    which message we are processing since the windows proc gets called
@@ -4450,6 +4492,7 @@ w32_read_socket (sd, expected, hold_quit)
          }
 
        case WM_MOUSEWHEEL:
+        case WM_MOUSEHWHEEL:
          {
            if (dpyinfo->grabbed && last_mouse_frame
                && FRAME_LIVE_P (last_mouse_frame))
@@ -5892,8 +5935,8 @@ x_free_frame_resources (f)
 
   free_frame_menubar (f);
 
-  unload_color (f, f->output_data.x->foreground_pixel);
-  unload_color (f, f->output_data.x->background_pixel);
+  unload_color (f, FRAME_FOREGROUND_PIXEL (f));
+  unload_color (f, FRAME_BACKGROUND_PIXEL (f));
   unload_color (f, f->output_data.w32->cursor_pixel);
   unload_color (f, f->output_data.w32->cursor_foreground_pixel);
   unload_color (f, f->output_data.w32->border_pixel);
@@ -5932,14 +5975,13 @@ x_free_frame_resources (f)
 
 
 /* Destroy the window of frame F.  */
-
+void
 x_destroy_window (f)
      struct frame *f;
 {
   struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
 
   x_free_frame_resources (f);
-
   dpyinfo->reference_count--;
 }
 
@@ -6146,7 +6188,7 @@ w32_initialize_display_info (display_name)
 
 /* Create an xrdb-style database of resources to supercede registry settings.
    The database is just a concatenation of C strings, finished by an additional
-   \0.  The string are submitted to some basic normalization, so
+   \0.  The strings are submitted to some basic normalization, so
 
      [ *]option[ *]:[ *]value...
 
@@ -6199,6 +6241,132 @@ w32_make_rdb (xrm_option)
   return buffer;
 }
 
+void
+x_flush (struct frame * f)
+{ /* Nothing to do */ }
+
+
+extern frame_parm_handler w32_frame_parm_handlers[];
+
+static struct redisplay_interface w32_redisplay_interface =
+{
+  w32_frame_parm_handlers,
+  x_produce_glyphs,
+  x_write_glyphs,
+  x_insert_glyphs,
+  x_clear_end_of_line,
+  x_scroll_run,
+  x_after_update_window_line,
+  x_update_window_begin,
+  x_update_window_end,
+  x_cursor_to,
+  x_flush,
+  0,  /* flush_display_optional */
+  x_clear_window_mouse_face,
+  w32_get_glyph_overhangs,
+  x_fix_overlapping_area,
+  w32_draw_fringe_bitmap,
+  w32_define_fringe_bitmap,
+  w32_destroy_fringe_bitmap,
+  w32_per_char_metric,
+  w32_encode_char,
+  NULL, /* w32_compute_glyph_string_overhangs */
+  x_draw_glyph_string,
+  w32_define_frame_cursor,
+  w32_clear_frame_area,
+  w32_draw_window_cursor,
+  w32_draw_vertical_window_border,
+  w32_shift_glyphs_for_insert
+};
+
+static void x_delete_terminal (struct terminal *term);
+
+static struct terminal *
+w32_create_terminal (struct w32_display_info *dpyinfo)
+{
+  struct terminal *terminal;
+
+  terminal = create_terminal ();
+
+  terminal->type = output_w32;
+  terminal->display_info.w32 = dpyinfo;
+  dpyinfo->terminal = terminal;
+
+  /* MSVC does not type K&R functions with no arguments correctly, and
+     so we must explicitly cast them.  */
+  terminal->clear_frame_hook = x_clear_frame;
+  terminal->ins_del_lines_hook = x_ins_del_lines;
+  terminal->delete_glyphs_hook = x_delete_glyphs;
+  terminal->ring_bell_hook = w32_ring_bell;
+  terminal->reset_terminal_modes_hook = w32_reset_terminal_modes;
+  terminal->set_terminal_modes_hook = w32_set_terminal_modes;
+  terminal->update_begin_hook = x_update_begin;
+  terminal->update_end_hook = x_update_end;
+  terminal->set_terminal_window_hook = w32_set_terminal_window;
+  terminal->read_socket_hook = w32_read_socket;
+  terminal->frame_up_to_date_hook = w32_frame_up_to_date;
+  terminal->mouse_position_hook = w32_mouse_position;
+  terminal->frame_rehighlight_hook = w32_frame_rehighlight;
+  terminal->frame_raise_lower_hook = w32_frame_raise_lower;
+  //  terminal->fullscreen_hook = XTfullscreen_hook;
+  terminal->set_vertical_scroll_bar_hook = w32_set_vertical_scroll_bar;
+  terminal->condemn_scroll_bars_hook = w32_condemn_scroll_bars;
+  terminal->redeem_scroll_bar_hook = w32_redeem_scroll_bar;
+  terminal->judge_scroll_bars_hook = w32_judge_scroll_bars;
+
+  terminal->delete_frame_hook = x_destroy_window;
+  terminal->delete_terminal_hook = x_delete_terminal;
+
+  terminal->rif = &w32_redisplay_interface;
+  terminal->scroll_region_ok = 1;    /* We'll scroll partial frames. */
+  terminal->char_ins_del_ok = 1;
+  terminal->line_ins_del_ok = 1;         /* We'll just blt 'em. */
+  terminal->fast_clear_end_of_line = 1;  /* X does this well. */
+  terminal->memory_below_frame = 0;   /* We don't remember what scrolls
+                                        off the bottom. */
+
+#ifdef MULTI_KBOARD
+  /* We don't yet support separate terminals on W32, so don't try to share
+     keyboards between virtual terminals that are on the same physical
+     terminal like X does.  */
+  terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
+  init_kboard (terminal->kboard);
+  terminal->kboard->next_kboard = all_kboards;
+  all_kboards = terminal->kboard;
+  /* Don't let the initial kboard remain current longer than necessary.
+     That would cause problems if a file loaded on startup tries to
+     prompt in the mini-buffer.  */
+  if (current_kboard == initial_kboard)
+    current_kboard = terminal->kboard;
+  terminal->kboard->reference_count++;
+#endif
+
+  return terminal;
+}
+
+static void
+x_delete_terminal (struct terminal *terminal)
+{
+  struct w32_display_info *dpyinfo = terminal->display_info.w32;
+  int i;
+
+  /* Protect against recursive calls.  Fdelete_frame in
+     delete_terminal calls us back when it deletes our last frame.  */
+  if (!terminal->name)
+    return;
+
+  BLOCK_INPUT;
+  /* Free the fonts in the font table.  */
+  for (i = 0; i < dpyinfo->n_fonts; i++)
+    if (dpyinfo->font_table[i].name)
+      {
+        DeleteObject (((XFontStruct*)(dpyinfo->font_table[i].font))->hfont);
+      }
+
+  x_delete_display (dpyinfo);
+  UNBLOCK_INPUT;
+}
+
 struct w32_display_info *
 w32_term_init (display_name, xrm_option, resource_name)
      Lisp_Object display_name;
@@ -6206,6 +6374,7 @@ w32_term_init (display_name, xrm_option, resource_name)
      char *resource_name;
 {
   struct w32_display_info *dpyinfo;
+  struct terminal *terminal;
   HDC hdc;
 
   BLOCK_INPUT;
@@ -6219,6 +6388,12 @@ w32_term_init (display_name, xrm_option, resource_name)
   w32_initialize_display_info (display_name);
 
   dpyinfo = &one_w32_display_info;
+  terminal = w32_create_terminal (dpyinfo);
+
+  /* Set the name of the terminal. */
+  terminal->name = (char *) xmalloc (SBYTES (display_name) + 1);
+  strncpy (terminal->name, SDATA (display_name), SBYTES (display_name));
+  terminal->name[SBYTES (display_name)] = 0;
 
   dpyinfo->xrdb = xrm_option ? w32_make_rdb (xrm_option) : NULL;
 
@@ -6248,6 +6423,9 @@ w32_term_init (display_name, xrm_option, resource_name)
     w32_defined_color (0, "black", &color, 1);
   }
 
+  /* Add the default keyboard.  */
+  add_keyboard_wait_descriptor (0);
+
   /* Create Fringe Bitmaps and store them for later use.
 
      On W32, bitmaps are all unsigned short, as Windows requires
@@ -6255,7 +6433,7 @@ w32_term_init (display_name, xrm_option, resource_name)
      horizontally reflected compared to how they appear on X, so we
      need to bitswap and convert to unsigned shorts before creating
      the bitmaps.  */
-  w32_init_fringe ();
+  w32_init_fringe (terminal->rif);
 
 #ifndef F_SETOWN_BUG
 #ifdef F_SETOWN
@@ -6279,7 +6457,6 @@ w32_term_init (display_name, xrm_option, resource_name)
 }
 \f
 /* Get rid of display DPYINFO, assuming all frames are already gone.  */
-
 void
 x_delete_display (dpyinfo)
      struct w32_display_info *dpyinfo;
@@ -6330,73 +6507,9 @@ x_delete_display (dpyinfo)
 
 DWORD WINAPI w32_msg_worker (void * arg);
 
-void
-x_flush (struct frame * f)
-{ /* Nothing to do */ }
-
-extern frame_parm_handler w32_frame_parm_handlers[];
-
-static struct redisplay_interface w32_redisplay_interface =
-{
-  w32_frame_parm_handlers,
-  x_produce_glyphs,
-  x_write_glyphs,
-  x_insert_glyphs,
-  x_clear_end_of_line,
-  x_scroll_run,
-  x_after_update_window_line,
-  x_update_window_begin,
-  x_update_window_end,
-  x_cursor_to,
-  x_flush,
-  0,  /* flush_display_optional */
-  x_clear_window_mouse_face,
-  w32_get_glyph_overhangs,
-  x_fix_overlapping_area,
-  w32_draw_fringe_bitmap,
-  w32_define_fringe_bitmap,
-  w32_destroy_fringe_bitmap,
-  w32_per_char_metric,
-  w32_encode_char,
-  NULL, /* w32_compute_glyph_string_overhangs */
-  x_draw_glyph_string,
-  w32_define_frame_cursor,
-  w32_clear_frame_area,
-  w32_draw_window_cursor,
-  w32_draw_vertical_window_border,
-  w32_shift_glyphs_for_insert
-};
-
-void
+static void
 w32_initialize ()
 {
-  rif = &w32_redisplay_interface;
-
-  /* MSVC does not type K&R functions with no arguments correctly, and
-     so we must explicitly cast them.  */
-  clear_frame_hook = (void (*)(void)) x_clear_frame;
-  ring_bell_hook = (void (*)(void)) w32_ring_bell;
-  update_begin_hook = x_update_begin;
-  update_end_hook = x_update_end;
-
-  read_socket_hook = w32_read_socket;
-
-  frame_up_to_date_hook = w32_frame_up_to_date;
-
-  mouse_position_hook = w32_mouse_position;
-  frame_rehighlight_hook = w32_frame_rehighlight;
-  frame_raise_lower_hook = w32_frame_raise_lower;
-  set_vertical_scroll_bar_hook = w32_set_vertical_scroll_bar;
-  condemn_scroll_bars_hook = w32_condemn_scroll_bars;
-  redeem_scroll_bar_hook = w32_redeem_scroll_bar;
-  judge_scroll_bars_hook = w32_judge_scroll_bars;
-
-  scroll_region_ok = 1;         /* we'll scroll partial frames */
-  char_ins_del_ok = 1;
-  line_ins_del_ok = 1;          /* we'll just blt 'em */
-  fast_clear_end_of_line = 1;   /* X does this well */
-  memory_below_frame = 0;       /* we don't remember what scrolls
-                                  off the bottom */
   baud_rate = 19200;
 
   w32_system_caret_hwnd = NULL;
@@ -6539,7 +6652,7 @@ interpreted normally.  */);
 Unicode output may prevent some third party applications for displaying
 Far-East Languages on Windows 95/98 from working properly.
 NT uses Unicode internally anyway, so this flag will probably have no
-affect on NT machines.  */);
+effect on NT machines.  */);
   w32_enable_unicode_output = 1;
 
   DEFVAR_BOOL ("w32-use-visible-system-caret",
index acf864d5f3883328e93c7ca67b2df8f392d90a5b..1af1d89846ff479c8ef29202781da7a603f08292 100644 (file)
@@ -100,6 +100,9 @@ struct w32_display_info
   /* Chain of all w32_display_info structures.  */
   struct w32_display_info *next;
 
+  /* The generic display parameters corresponding to this w32 display.  */
+  struct terminal *terminal;
+
   /* This is a cons cell of the form (NAME . FONT-LIST-CACHE).
      The same cons cell also appears in x_display_name_list.  */
   Lisp_Object name_list_element;
@@ -272,8 +275,10 @@ extern void w32_find_ccl_program();
    diffs between X and w32 code.  */
 struct x_output
 {
+#if 0 /* These are also defined in struct frame.  Use that instead.  */
   PIX_TYPE background_pixel;
   PIX_TYPE foreground_pixel;
+#endif
 
   /* Keep track of focus.  May be EXPLICIT if we received a FocusIn for this
      frame, or IMPLICIT if we received an EnterNotify.
@@ -405,8 +410,6 @@ extern struct w32_output w32term_display;
 #define FRAME_W32_WINDOW(f) ((f)->output_data.w32->window_desc)
 #define FRAME_X_WINDOW(f) ((f)->output_data.w32->window_desc)
 
-#define FRAME_FOREGROUND_PIXEL(f) ((f)->output_data.x->foreground_pixel)
-#define FRAME_BACKGROUND_PIXEL(f) ((f)->output_data.x->background_pixel)
 #define FRAME_FONT(f) ((f)->output_data.w32->font)
 #define FRAME_FONTSET(f) ((f)->output_data.w32->fontset)
 #define FRAME_BASELINE_OFFSET(f) ((f)->output_data.w32->baseline_offset)
@@ -487,6 +490,10 @@ struct scroll_bar {
      place where the user grabbed it.  If the handle isn't currently
      being dragged, this is Qnil.  */
   Lisp_Object dragging;
+
+  /* t if the background of the fringe that is adjacent to a scroll
+     bar is extended to the gap between the fringe and the bar.  */
+  Lisp_Object fringe_extended_p;
 };
 
 /* The number of elements a vector holding a struct scroll_bar needs.  */
@@ -576,20 +583,20 @@ extern void w32_fill_rect ();
 extern void w32_clear_window ();
 
 #define w32_fill_area(f,hdc,pix,x,y,nx,ny) \
-{ \
+do { \
     RECT rect; \
     rect.left = x; \
     rect.top = y; \
     rect.right = x + nx; \
     rect.bottom = y + ny; \
     w32_fill_rect (f,hdc,pix,&rect); \
-}
+} while (0)
 
 #define w32_clear_rect(f,hdc,lprect) \
-w32_fill_rect (f,hdc,f->output_data.x->background_pixel,lprect)
+  w32_fill_rect (f, hdc, FRAME_BACKGROUND_PIXEL (f), lprect)
 
 #define w32_clear_area(f,hdc,px,py,nx,ny) \
-w32_fill_area (f,hdc,f->output_data.x->background_pixel,px,py,nx,ny)
+  w32_fill_area (f, hdc, FRAME_BACKGROUND_PIXEL (f), px, py, nx, ny)
 
 extern struct font_info *w32_load_font ();
 extern void w32_unload_font ();
@@ -605,6 +612,9 @@ extern void w32_unload_font ();
 #define WM_XBUTTONDOWN                 (WM_MOUSEWHEEL + 1)
 #define WM_XBUTTONUP                   (WM_MOUSEWHEEL + 2)
 #endif /* WM_XBUTTONDOWN */
+#ifndef WM_MOUSEHWHEEL
+#define WM_MOUSEHWHEEL                 (WM_MOUSEWHEEL + 4)
+#endif /* WM_MOUSEHWHEEL  */
 
 #define WM_EMACS_START                 (WM_USER + 1)
 #define WM_EMACS_KILL                  (WM_EMACS_START + 0)
@@ -684,6 +694,9 @@ extern void wait_for_sync ();
 
 extern BOOL parse_button ();
 
+extern void w32_sys_ring_bell (struct frame *f);
+extern void x_delete_display (struct w32_display_info *dpyinfo);
+
 /* Keypad command key support.  W32 doesn't have virtual keys defined
    for the function keys on the keypad (they are mapped to the standard
    fuction keys), so we define our own.  */
index 714da205a67615ae2dbcf5461e3c15b0ea11380c..c76cce9e328d73570847c27d3b078a54d440a653 100644 (file)
@@ -659,10 +659,10 @@ update_from_various_frame_slots (ew)
   struct x_output *x = f->output_data.x;
   ew->core.height = FRAME_PIXEL_HEIGHT (f) - x->menubar_height;
   ew->core.width = FRAME_PIXEL_WIDTH (f);
-  ew->core.background_pixel = x->background_pixel;
+  ew->core.background_pixel = FRAME_BACKGROUND_PIXEL (f);
   ew->emacs_frame.internal_border_width = f->internal_border_width;
   ew->emacs_frame.font = x->font;
-  ew->emacs_frame.foreground_pixel = x->foreground_pixel;
+  ew->emacs_frame.foreground_pixel = FRAME_FOREGROUND_PIXEL (f);
   ew->emacs_frame.cursor_color = x->cursor_pixel;
   ew->core.border_pixel = x->border_pixel;
 }
index 6fe78166ba12e56a190733ae214a031c09470214..efdf309121bf50fc333726a40dc5708d69426940 100644 (file)
@@ -21,6 +21,8 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
 
 #include <config.h>
+#include <stdio.h>
+
 #include "lisp.h"
 #include "buffer.h"
 #include "keyboard.h"
@@ -34,6 +36,7 @@ Boston, MA 02110-1301, USA.  */
 #include "dispextern.h"
 #include "blockinput.h"
 #include "intervals.h"
+#include "termhooks.h"         /* For FRAME_TERMINAL.  */
 
 #ifdef HAVE_X_WINDOWS
 #include "xterm.h"
@@ -190,6 +193,10 @@ Lisp_Object Qtemp_buffer_show_hook;
 
 EMACS_INT split_height_threshold;
 
+/* How to split windows (horizontally/vertically/hybrid).  */
+
+Lisp_Object Vsplit_window_preferred_function;
+
 /* Number of lines of continuity in scrolling by screenfuls.  */
 
 EMACS_INT next_screen_context_lines;
@@ -792,7 +799,7 @@ coordinates_in_window (w, x, y)
       if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
          || WINDOW_RIGHTMOST_P (w))
        {
-         if (!WINDOW_LEFTMOST_P (w) && abs (*x - x0) < grabbable_width)
+         if (!WINDOW_LEFTMOST_P (w) && eabs (*x - x0) < grabbable_width)
            {
              /* Convert X and Y to window relative coordinates.
                 Vertical border is at the left edge of window.  */
@@ -803,7 +810,7 @@ coordinates_in_window (w, x, y)
        }
       else
        {
-         if (abs (*x - x1) < grabbable_width)
+         if (eabs (*x - x1) < grabbable_width)
            {
              /* Convert X and Y to window relative coordinates.
                 Vertical border is at the right edge of window.  */
@@ -851,7 +858,7 @@ coordinates_in_window (w, x, y)
       if (!w->pseudo_window_p
          && !WINDOW_HAS_VERTICAL_SCROLL_BAR (w)
          && !WINDOW_RIGHTMOST_P (w)
-         && (abs (*x - right_x) < grabbable_width))
+         && (eabs (*x - right_x) < grabbable_width))
        {
          /* Convert X and Y to window relative coordinates.
             Vertical border is at the right edge of window.  */
@@ -1788,12 +1795,28 @@ candidate_window_p (window, owindow, minibuf, all_frames)
   else if (EQ (all_frames, Qvisible))
     {
       FRAME_SAMPLE_VISIBILITY (f);
-      candidate_p = FRAME_VISIBLE_P (f);
+      candidate_p = FRAME_VISIBLE_P (f)
+       && (FRAME_TERMINAL (XFRAME (w->frame))
+           == FRAME_TERMINAL (XFRAME (selected_frame)));
+
     }
   else if (INTEGERP (all_frames) && XINT (all_frames) == 0)
     {
       FRAME_SAMPLE_VISIBILITY (f);
-      candidate_p = FRAME_VISIBLE_P (f) || FRAME_ICONIFIED_P (f);
+      candidate_p = (FRAME_VISIBLE_P (f) || FRAME_ICONIFIED_P (f)
+#ifdef HAVE_X_WINDOWS
+                    /* Yuck!!  If we've just created the frame and the
+                       window-manager requested the user to place it
+                       manually, the window may still not be considered
+                       `visible'.  I'd argue it should be at least
+                       something like `iconified', but don't know how to do
+                       that yet.  --Stef  */
+                    || (FRAME_X_P (f) && f->output_data.x->asked_for_visible
+                        && !f->output_data.x->has_been_visible)
+#endif
+                    )
+       && (FRAME_TERMINAL (XFRAME (w->frame))
+           == FRAME_TERMINAL (XFRAME (selected_frame)));
     }
   else if (WINDOWP (all_frames))
     candidate_p = (EQ (FRAME_MINIBUF_WINDOW (f), all_frames)
@@ -2162,8 +2185,10 @@ window_loop (type, obj, mini, frames)
                if (NILP (best_window))
                  best_window = window;
                else if (EQ (window, selected_window))
-                 /* For compatibility with 20.x, prefer to return
-                    selected-window.  */
+                 /* Prefer to return selected-window.  */
+                 RETURN_UNGCPRO (window);
+               else if (EQ (Fwindow_frame (window), selected_frame))
+                 /* Prefer windows on the current frame.  */
                  best_window = window;
              }
            break;
@@ -3445,6 +3470,22 @@ selects the buffer of the selected window before each command.  */)
   if (EQ (window, selected_window))
     return window;
 
+  sf = SELECTED_FRAME ();
+  if (XFRAME (WINDOW_FRAME (w)) != sf)
+    {
+      XFRAME (WINDOW_FRAME (w))->selected_window = window;
+      /* Use this rather than Fhandle_switch_frame
+        so that FRAME_FOCUS_FRAME is moved appropriately as we
+        move around in the state where a minibuffer in a separate
+        frame is active.  */
+      Fselect_frame (WINDOW_FRAME (w));
+      /* Fselect_frame called us back so we've done all the work already.  */
+      eassert (EQ (window, selected_window));
+      return window;
+    }
+  else
+    sf->selected_window = window;
+
   /* 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.  */
@@ -3458,18 +3499,6 @@ selects the buffer of the selected window before each command.  */)
     }
 
   selected_window = window;
-  sf = SELECTED_FRAME ();
-  if (XFRAME (WINDOW_FRAME (w)) != sf)
-    {
-      XFRAME (WINDOW_FRAME (w))->selected_window = window;
-      /* Use this rather than Fhandle_switch_frame
-        so that FRAME_FOCUS_FRAME is moved appropriately as we
-        move around in the state where a minibuffer in a separate
-        frame is active.  */
-      Fselect_frame (WINDOW_FRAME (w));
-    }
-  else
-    sf->selected_window = window;
 
   if (NILP (norecord))
     record_buffer (w->buffer);
@@ -3649,7 +3678,7 @@ If `even-window-heights' is non-nil, window heights will be evened out
 if displaying the buffer causes two vertically adjacent windows to be
 displayed.  */)
      (buffer, not_this_window, frame)
-     register Lisp_Object buffer, not_this_window, frame;
+     Lisp_Object buffer, not_this_window, frame;
 {
   register Lisp_Object window, tem, swp;
   struct frame *f;
@@ -3721,6 +3750,8 @@ displayed.  */)
       || !NILP (XWINDOW (FRAME_ROOT_WINDOW (f))->dedicated))
     {
       Lisp_Object frames;
+      struct gcpro gcpro1;
+      GCPRO1 (buffer);
 
       frames = Qnil;
       if (FRAME_MINIBUF_ONLY_P (f))
@@ -3752,26 +3783,26 @@ displayed.  */)
       if (!NILP (window)
          && ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame))
          && WINDOW_FULL_WIDTH_P (XWINDOW (window))
-         && (window_height (window) >= split_height_threshold
-             || (NILP (XWINDOW (window)->parent)))
+              && (window_height (window) >= split_height_threshold
+                  || (NILP (XWINDOW (window)->parent)))
          && (window_height (window)
              >= (2 * window_min_size_2 (XWINDOW (window), 0))))
-       window = Fsplit_window (window, Qnil, Qnil);
+       window = call1 (Vsplit_window_preferred_function, window);
       else
        {
          Lisp_Object upper, lower, other;
 
          window = Fget_lru_window (frames, Qt);
-         /* If the LRU window is tall enough, and either eligible for splitting
-         and selected or the only window, split it.  */
+         /* If the LRU window is tall enough, and either eligible for
+            splitting and selected or the only window, split it.  */
          if (!NILP (window)
              && ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame))
-             && ((EQ (window, selected_window)
-                  && window_height (window) >= split_height_threshold)
-                 || (NILP (XWINDOW (window)->parent)))
-             && (window_height (window)
-                 >= (2 * window_min_size_2 (XWINDOW (window), 0))))
-           window = Fsplit_window (window, Qnil, Qnil);
+                  && ((EQ (window, selected_window)
+                       && window_height (window) >= split_height_threshold)
+                      || (NILP (XWINDOW (window)->parent)))
+                  && (window_height (window)
+                      >= (2 * window_min_size_2 (XWINDOW (window), 0))))
+           window = call1 (Vsplit_window_preferred_function, window);
          else
            window = Fget_lru_window (frames, Qnil);
          /* If Fget_lru_window returned nil, try other approaches.  */
@@ -3817,6 +3848,7 @@ displayed.  */)
                              0);
            }
        }
+      UNGCPRO;
     }
   else
     window = Fget_lru_window (Qnil, Qnil);
@@ -5465,7 +5497,7 @@ scroll_command (n, direction)
 {
   int count = SPECPDL_INDEX ();
 
-  xassert (abs (direction) == 1);
+  xassert (eabs (direction) == 1);
 
   /* If selected window's buffer isn't current, make it current for
      the moment.  But don't screw up if window_scroll gets an error.  */
@@ -6017,7 +6049,7 @@ zero means top of window, negative means relative to bottom of window.  */)
 
 struct save_window_data
   {
-    EMACS_INT size_from_Lisp_Vector_struct;
+    EMACS_UINT size;
     struct Lisp_Vector *next_from_Lisp_Vector_struct;
     Lisp_Object frame_cols, frame_lines, frame_menu_bar_lines;
     Lisp_Object frame_tool_bar_lines;
@@ -6040,7 +6072,7 @@ struct save_window_data
 struct saved_window
 {
   /* these first two must agree with struct Lisp_Vector in lisp.h */
-  EMACS_INT size_from_Lisp_Vector_struct;
+  EMACS_UINT size;
   struct Lisp_Vector *next_from_Lisp_Vector_struct;
 
   Lisp_Object window;
@@ -6631,6 +6663,7 @@ redirection (see `redirect-frame-focus').  */)
 
   n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f)));
   vec = allocate_other_vector (VECSIZE (struct save_window_data));
+  XSETPVECTYPE (vec, PVEC_WINDOW_CONFIGURATION);
   data = (struct save_window_data *)vec;
 
   XSETFASTINT (data->frame_cols, FRAME_COLS (f));
@@ -7102,11 +7135,12 @@ freeze_window_start (w, freeze_p)
      struct window *w;
      void *freeze_p;
 {
-  if (w == XWINDOW (selected_window)
-      || MINI_WINDOW_P (w)
-      || (MINI_WINDOW_P (XWINDOW (selected_window))
-         && ! NILP (Vminibuf_scroll_window)
-         && w == XWINDOW (Vminibuf_scroll_window)))
+  if (MINI_WINDOW_P (w)
+      || (WINDOWP (selected_window) /* Can be nil in corner cases.  */
+         && (w == XWINDOW (selected_window)
+             || (MINI_WINDOW_P (XWINDOW (selected_window))
+                 && ! NILP (Vminibuf_scroll_window)
+                 && w == XWINDOW (Vminibuf_scroll_window)))))
     freeze_p = NULL;
 
   w->frozen_window_start_p = freeze_p != NULL;
@@ -7269,7 +7303,7 @@ and scrolling positions.  */)
 void
 init_window_once ()
 {
-  struct frame *f = make_terminal_frame ();
+  struct frame *f = make_initial_frame ();
   XSETFRAME (selected_frame, f);
   Vterminal_frame = selected_frame;
   minibuf_window = f->minibuffer_window;
@@ -7488,6 +7522,15 @@ by `display-buffer'.  The value is in line units.
 If there is only one window, it is split regardless of this value.  */);
   split_height_threshold = 500;
 
+  DEFVAR_LISP ("split-window-preferred-function",
+              &Vsplit_window_preferred_function,
+              doc: /* Function to use to split a window.
+This is used by `display-buffer' to allow the user to choose whether
+to split windows horizontally or vertically or some mix of the two.
+It is called with a window as single argument and should split it in two
+and return the new window.  */);
+  Vsplit_window_preferred_function = intern ("split-window");
+
   DEFVAR_INT ("window-min-height", &window_min_height,
              doc: /* *Delete any window less than this tall (including its mode line).
 The value is in line units. */);
index ea8965392c4e068ff44e0779ea48d5469e163e39..3b9107acaa2328c7f2bb48138176f1dadb0b0ad4 100644 (file)
@@ -92,7 +92,7 @@ struct window
   {
     /* The first two fields are really the header of a vector */
     /* The window code does not refer to them.  */
-    EMACS_INT size;
+    EMACS_UINT size;
     struct Lisp_Vector *vec_next;
     /* The frame this window is on.  */
     Lisp_Object frame;
@@ -744,7 +744,7 @@ 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 Vwindow_system;
+extern Lisp_Object Vinitial_window_system;
 
 /* Version number of X windows: 10, 11 or nil.  */
 
index 22a0b9dbe05902f33ae7820c67fc2eb80b4b2505..b907ea516d6d02e2116835d44297ed8b68658e34 100644 (file)
@@ -580,21 +580,12 @@ Lisp_Object Vmessage_log_max;
 
 static Lisp_Object Vmessages_buffer_name;
 
-/* Index 0 is the buffer that holds the current (desired) echo area message,
-   or nil if none is desired right now.
-
-   Index 1 is the buffer that holds the previously displayed echo area message,
-   or nil to indicate no message.  This is normally what's on the screen now.
-
-   These two can point to the same buffer.  That happens when the last
-   message output by the user (or made by echoing) has been displayed.  */
+/* Current, index 0, and last displayed echo area message.  Either
+   buffers from echo_buffers, or nil to indicate no message.  */
 
 Lisp_Object echo_area_buffer[2];
 
-/* Permanent pointers to the two buffers that are used for echo area
-   purposes.  Once the two buffers are made, and their pointers are
-   placed here, these two slots remain unchanged unless those buffers
-   need to be created afresh.  */
+/* The buffers referenced from echo_area_buffer.  */
 
 static Lisp_Object echo_buffer[2];
 
@@ -813,10 +804,6 @@ static int clear_face_cache_count;
 static int clear_image_cache_count;
 #endif
 
-/* Record the previous terminal frame we displayed.  */
-
-static struct frame *previous_terminal_frame;
-
 /* Non-zero while redisplay_internal is in progress.  */
 
 int redisplaying_p;
@@ -2508,7 +2495,7 @@ init_iterator (it, w, charpos, bytepos, row, base_face_id)
   XSETWINDOW (it->window, w);
   it->w = w;
   it->f = XFRAME (w->frame);
-
+  
   /* Extra space between lines (on window systems only).  */
   if (base_face_id == DEFAULT_FACE_ID
       && FRAME_WINDOW_P (it->f))
@@ -2525,9 +2512,9 @@ init_iterator (it, w, charpos, bytepos, row, base_face_id)
 
   /* If realized faces have been removed, e.g. because of face
      attribute changes of named faces, recompute them.  When running
-     in batch mode, the face cache of Vterminal_frame is null.  If
+     in batch mode, the face cache of the initial frame is null.  If
      we happen to get called, make a dummy face cache.  */
-  if (noninteractive && FRAME_FACE_CACHE (it->f) == NULL)
+  if (FRAME_FACE_CACHE (it->f) == NULL)
     init_frame_faces (it->f);
   if (FRAME_FACE_CACHE (it->f)->used == 0)
     recompute_basic_faces (it->f);
@@ -3622,7 +3609,8 @@ handle_invisible_prop (it)
     }
   else
     {
-      int invis_p, newpos, next_stop, start_charpos;
+      int invis_p;
+      EMACS_INT newpos, next_stop, start_charpos;
       Lisp_Object pos, prop, overlay;
 
       /* First of all, is there invisible text at this position?  */
@@ -3956,7 +3944,7 @@ handle_single_display_spec (it, spec, object, position,
       && EQ (XCAR (spec), Qheight)
       && CONSP (XCDR (spec)))
     {
-      if (FRAME_TERMCAP_P (it->f) || FRAME_MSDOS_P (it->f))
+      if (!FRAME_WINDOW_P (it->f))
        return 0;
 
       it->font_height = XCAR (XCDR (spec));
@@ -4022,7 +4010,7 @@ handle_single_display_spec (it, spec, object, position,
       && EQ (XCAR (spec), Qspace_width)
       && CONSP (XCDR (spec)))
     {
-      if (FRAME_TERMCAP_P (it->f) || FRAME_MSDOS_P (it->f))
+      if (!FRAME_WINDOW_P (it->f))
        return 0;
 
       value = XCAR (XCDR (spec));
@@ -4038,7 +4026,7 @@ handle_single_display_spec (it, spec, object, position,
     {
       Lisp_Object tem;
 
-      if (FRAME_TERMCAP_P (it->f) || FRAME_MSDOS_P (it->f))
+      if (!FRAME_WINDOW_P (it->f))
        return 0;
 
       if (tem = XCDR (spec), CONSP (tem))
@@ -4064,7 +4052,7 @@ handle_single_display_spec (it, spec, object, position,
       && EQ (XCAR (spec), Qraise)
       && CONSP (XCDR (spec)))
     {
-      if (FRAME_TERMCAP_P (it->f) || FRAME_MSDOS_P (it->f))
+      if (!FRAME_WINDOW_P (it->f))
        return 0;
 
 #ifdef HAVE_WINDOW_SYSTEM
@@ -4105,7 +4093,7 @@ handle_single_display_spec (it, spec, object, position,
       int face_id = DEFAULT_FACE_ID;
       int fringe_bitmap;
 
-      if (FRAME_TERMCAP_P (it->f) || FRAME_MSDOS_P (it->f))
+      if (!FRAME_WINDOW_P (it->f))
        /* If we return here, POSITION has been advanced
           across the text with this property.  */
        return 0;
@@ -4154,7 +4142,7 @@ handle_single_display_spec (it, spec, object, position,
          it->left_user_fringe_face_id = face_id;
        }
       else
-       {
+        {
          it->right_user_fringe_bitmap = fringe_bitmap;
          it->right_user_fringe_face_id = face_id;
        }
@@ -4199,9 +4187,9 @@ handle_single_display_spec (it, spec, object, position,
 
   valid_p = (STRINGP (value)
 #ifdef HAVE_WINDOW_SYSTEM
-            || (!FRAME_TERMCAP_P (it->f) && valid_image_p (value))
+             || (FRAME_WINDOW_P (it->f) && valid_image_p (value))
 #endif /* not HAVE_WINDOW_SYSTEM */
-            || (CONSP (value) && EQ (XCAR (value), Qspace)));
+             || (CONSP (value) && EQ (XCAR (value), Qspace)));
 
   if (valid_p && !display_replaced_before_p)
     {
@@ -4271,7 +4259,7 @@ handle_single_display_spec (it, spec, object, position,
 }
 
 
-/* Check if SPEC is a display specification value whose text should be
+/* Check if SPEC is a display sub-property value whose text should be
    treated as intangible.  */
 
 static int
@@ -7532,8 +7520,8 @@ message2_nolog (m, nbytes, multibyte)
       do_pending_window_change (0);
       echo_area_display (1);
       do_pending_window_change (0);
-      if (frame_up_to_date_hook != 0 && ! gc_in_progress)
-       (*frame_up_to_date_hook) (f);
+      if (FRAME_TERMINAL (f)->frame_up_to_date_hook != 0 && ! gc_in_progress)
+       (*FRAME_TERMINAL (f)->frame_up_to_date_hook) (f);
     }
 }
 
@@ -7636,8 +7624,8 @@ message3_nolog (m, nbytes, multibyte)
       do_pending_window_change (0);
       echo_area_display (1);
       do_pending_window_change (0);
-      if (frame_up_to_date_hook != 0 && ! gc_in_progress)
-       (*frame_up_to_date_hook) (f);
+      if (FRAME_TERMINAL (f)->frame_up_to_date_hook != 0 && ! gc_in_progress)
+       (*FRAME_TERMINAL (f)->frame_up_to_date_hook) (f);
     }
 }
 
@@ -7875,6 +7863,10 @@ ensure_echo_area_buffers ()
    WHICH > 0 means use echo_area_buffer[1].  If that is nil, choose a
    suitable buffer from echo_buffer[] and clear it.
 
+   If WHICH < 0, set echo_area_buffer[1] to echo_area_buffer[0], so
+   that the current message becomes the last displayed one, make
+   choose a suitable buffer for echo_area_buffer[0], and clear it.
+
    Value is what FN returns.  */
 
 static int
@@ -7899,6 +7891,17 @@ with_echo_area_buffer (w, which, fn, a1, a2, a3, a4)
     this_one = 0, the_other = 1;
   else if (which > 0)
     this_one = 1, the_other = 0;
+  else
+    {
+      this_one = 0, the_other = 1;
+      clear_buffer_p = 1;
+
+      /* We need a fresh one in case the current echo buffer equals
+        the one containing the last displayed echo area message.  */
+      if (!NILP (echo_area_buffer[this_one])
+         && EQ (echo_area_buffer[this_one], echo_area_buffer[the_other]))
+       echo_area_buffer[this_one] = Qnil;
+    }
 
   /* Choose a suitable buffer from echo_buffer[] is we don't
      have one.  */
@@ -8536,7 +8539,7 @@ set_message (s, string, nbytes, multibyte_p)
     = ((s && multibyte_p)
        || (STRINGP (string) && STRING_MULTIBYTE (string)));
 
-  with_echo_area_buffer (0, 0, set_message_1,
+  with_echo_area_buffer (0, -1, set_message_1,
                         (EMACS_INT) s, string, nbytes, multibyte_p);
   message_buf_print = 0;
   help_echo_showing_p = 0;
@@ -8566,7 +8569,6 @@ set_message_1 (a1, a2, nbytes, multibyte_p)
 
   /* Insert new message at BEG.  */
   TEMP_SET_PT_BOTH (BEG, BEG_BYTE);
-  Ferase_buffer ();
 
   if (STRINGP (string))
     {
@@ -8662,11 +8664,11 @@ clear_garbaged_frames ()
     {
       Lisp_Object tail, frame;
       int changed_count = 0;
-
+      
       FOR_EACH_FRAME (tail, frame)
        {
          struct frame *f = XFRAME (frame);
-
+         
          if (FRAME_VISIBLE_P (f) && FRAME_GARBAGED_P (f))
            {
              if (f->resized_p)
@@ -8680,7 +8682,7 @@ clear_garbaged_frames ()
              f->resized_p = 0;
            }
        }
-
+      
       frame_garbaged = 0;
       if (changed_count)
        ++windows_or_buffers_changed;
@@ -8713,11 +8715,10 @@ echo_area_display (update_frame_p)
 /* The terminal frame is used as the first Emacs frame on the Mac OS.  */
 #ifndef MAC_OS8
 #ifdef HAVE_WINDOW_SYSTEM
-  /* When Emacs starts, selected_frame may be a visible terminal
-     frame, even if we run under a window system.  If we let this
-     through, a message would be displayed on the terminal.  */
-  if (EQ (selected_frame, Vterminal_frame)
-      && !NILP (Vwindow_system))
+  /* When Emacs starts, selected_frame may be the initial terminal
+     frame.  If we let this through, a message would be displayed on
+     the terminal.  */
+  if (FRAME_INITIAL_P (XFRAME (selected_frame)))
     return 0;
 #endif /* HAVE_WINDOW_SYSTEM */
 #endif
@@ -8768,7 +8769,7 @@ echo_area_display (update_frame_p)
                 Can do with a display update of the echo area,
                 unless we displayed some mode lines.  */
              update_single_window (w, 1);
-             rif->flush_display (f);
+             FRAME_RIF (f)->flush_display (f);
            }
          else
            update_frame (f, 1, 1);
@@ -8783,8 +8784,10 @@ echo_area_display (update_frame_p)
   else if (!EQ (mini_window, selected_window))
     windows_or_buffers_changed++;
 
-  /* The current message is now also the last one displayed.  */
+  /* Last displayed message is now the current message.  */
   echo_area_buffer[1] = echo_area_buffer[0];
+  /* Inform read_char that we're not echoing.  */
+  echo_message_buffer = Qnil;
 
   /* Prevent redisplay optimization in redisplay_internal by resetting
      this_line_start_pos.  This is done because the mini-buffer now
@@ -9338,8 +9341,8 @@ x_cursor_to (vpos, hpos, y, x)
     {
       BLOCK_INPUT;
       display_and_set_cursor (w, 1, hpos, vpos, x, y);
-      if (rif->flush_display_optional)
-       rif->flush_display_optional (SELECTED_FRAME ());
+      if (FRAME_RIF (SELECTED_FRAME ())->flush_display_optional)
+       FRAME_RIF (SELECTED_FRAME ())->flush_display_optional (SELECTED_FRAME ());
       UNBLOCK_INPUT;
     }
 }
@@ -9373,7 +9376,7 @@ update_tool_bar (f, save_match_data)
      struct frame *f;
      int save_match_data;
 {
-#ifdef USE_GTK
+#if defined (USE_GTK) || USE_MAC_TOOLBAR
   int do_update = FRAME_EXTERNAL_TOOL_BAR (f);
 #else
   int do_update = WINDOWP (f->tool_bar_window)
@@ -9839,7 +9842,7 @@ redisplay_tool_bar (f)
   struct it it;
   struct glyph_row *row;
 
-#ifdef USE_GTK
+#if defined (USE_GTK) || USE_MAC_TOOLBAR
   if (FRAME_EXTERNAL_TOOL_BAR (f))
     update_frame_tool_bar (f);
   return 0;
@@ -10791,6 +10794,8 @@ select_frame_for_redisplay (frame)
   Lisp_Object tail, sym, val;
   Lisp_Object old = selected_frame;
 
+  xassert (FRAMEP (frame) && FRAME_LIVE_P (XFRAME (frame)));
+
   selected_frame = frame;
 
   for (tail = XFRAME (frame)->param_alist; CONSP (tail); tail = XCDR (tail))
@@ -10847,6 +10852,7 @@ redisplay_internal (preserve_echo_area)
   int count, count1;
   struct frame *sf;
   int polling_stopped_here = 0;
+  Lisp_Object old_frame = selected_frame;
 
   /* Non-zero means redisplay has to consider all windows on all
      frames.  Zero means, only selected_window is considered.  */
@@ -10908,6 +10914,14 @@ redisplay_internal (preserve_echo_area)
   }
 
  retry:
+  if (!EQ (old_frame, selected_frame)
+      && FRAME_LIVE_P (XFRAME (old_frame)))
+    /* When running redisplay, we play a bit fast-and-loose and allow e.g.
+       selected_frame and selected_window to be temporarily out-of-sync so
+       when we come back here via `goto retry', we need to resync because we
+       may need to run Elisp code (via prepare_menu_bars).  */
+    select_frame_for_redisplay (old_frame);
+
   pause = 0;
   reconsider_clip_changes (w, current_buffer);
   last_escape_glyph_frame = NULL;
@@ -10928,17 +10942,16 @@ redisplay_internal (preserve_echo_area)
   if (face_change_count)
     ++windows_or_buffers_changed;
 
-  if (! FRAME_WINDOW_P (sf)
-      && previous_terminal_frame != sf)
+  if (FRAME_TERMCAP_P (sf)
+      && FRAME_TTY (sf)->previous_frame != sf)
     {
-      /* Since frames on an ASCII terminal share the same display
-        area, displaying a different frame means redisplay the whole
-        thing.  */
+      /* Since frames on a single ASCII terminal share the same
+        display area, displaying a different frame means redisplay
+        the whole thing.  */
       windows_or_buffers_changed++;
       SET_FRAME_GARBAGED (sf);
-      XSETFRAME (Vterminal_frame, sf);
+      FRAME_TTY (sf)->previous_frame = sf;
     }
-  previous_terminal_frame = sf;
 
   /* Set the visible flags for all frames.  Do this before checking
      for resized or garbaged frames; they want to know if their frames
@@ -10960,6 +10973,7 @@ redisplay_internal (preserve_echo_area)
       }
   }
 
+  
   /* Notice any pending interrupt request to change frame size.  */
   do_pending_window_change (1);
 
@@ -11321,7 +11335,7 @@ redisplay_internal (preserve_echo_area)
        {
          struct frame *f = XFRAME (frame);
 
-         if (FRAME_WINDOW_P (f) || f == sf)
+         if (FRAME_WINDOW_P (f) || FRAME_TERMCAP_P (f) || f == sf)
            {
              if (! EQ (frame, selected_frame))
                /* Select the frame, for the sake of frame-local
@@ -11330,16 +11344,16 @@ redisplay_internal (preserve_echo_area)
 
              /* Mark all the scroll bars to be removed; we'll redeem
                 the ones we want when we redisplay their windows.  */
-             if (condemn_scroll_bars_hook)
-               condemn_scroll_bars_hook (f);
+             if (FRAME_TERMINAL (f)->condemn_scroll_bars_hook)
+               FRAME_TERMINAL (f)->condemn_scroll_bars_hook (f);
 
              if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f))
                redisplay_windows (FRAME_ROOT_WINDOW (f));
 
              /* Any scroll bars which redisplay_windows should have
                 nuked should now go away.  */
-             if (judge_scroll_bars_hook)
-               judge_scroll_bars_hook (f);
+             if (FRAME_TERMINAL (f)->judge_scroll_bars_hook)
+               FRAME_TERMINAL (f)->judge_scroll_bars_hook (f);
 
              /* If fonts changed, display again.  */
              /* ??? rms: I suspect it is a mistake to jump all the way
@@ -11386,12 +11400,12 @@ redisplay_internal (preserve_echo_area)
          FOR_EACH_FRAME (tail, frame)
            {
              struct frame *f = XFRAME (frame);
-             if (f->updated_p)
-               {
-                 mark_window_display_accurate (f->root_window, 1);
-                 if (frame_up_to_date_hook)
-                   frame_up_to_date_hook (f);
-               }
+              if (f->updated_p)
+                {
+                  mark_window_display_accurate (f->root_window, 1);
+                  if (FRAME_TERMINAL (f)->frame_up_to_date_hook)
+                    FRAME_TERMINAL (f)->frame_up_to_date_hook (f);
+                }
            }
        }
     }
@@ -11476,8 +11490,8 @@ redisplay_internal (preserve_echo_area)
          /* Say overlay arrows are up to date.  */
          update_overlay_arrows (1);
 
-         if (frame_up_to_date_hook != 0)
-           frame_up_to_date_hook (sf);
+         if (FRAME_TERMINAL (sf)->frame_up_to_date_hook != 0)
+           FRAME_TERMINAL (sf)->frame_up_to_date_hook (sf);
        }
 
       update_mode_lines = 0;
@@ -11587,8 +11601,9 @@ redisplay_preserve_echo_area (from_where)
   else
     redisplay_internal (1);
 
-  if (rif != NULL && rif->flush_display_optional)
-    rif->flush_display_optional (NULL);
+  if (FRAME_RIF (SELECTED_FRAME ()) != NULL
+      && FRAME_RIF (SELECTED_FRAME ())->flush_display_optional)
+    FRAME_RIF (SELECTED_FRAME ())->flush_display_optional (NULL);
 }
 
 
@@ -11596,7 +11611,8 @@ redisplay_preserve_echo_area (from_where)
    redisplay_internal.  Reset redisplaying_p to the value it had
    before redisplay_internal was called, and clear
    prevent_freeing_realized_faces_p.  It also selects the previously
-   selected frame.  */
+   selected frame, unless it has been deleted (by an X connection
+   failure during redisplay, for example).  */
 
 static Lisp_Object
 unwind_redisplay (val)
@@ -11607,7 +11623,8 @@ unwind_redisplay (val)
   old_redisplaying_p = XCAR (val);
   redisplaying_p = XFASTINT (old_redisplaying_p);
   old_frame = XCDR (val);
-  if (! EQ (old_frame, selected_frame))
+  if (! EQ (old_frame, selected_frame)
+      && FRAME_LIVE_P (XFRAME (old_frame)))
     select_frame_for_redisplay (old_frame);
   return Qnil;
 }
@@ -12455,7 +12472,7 @@ compute_window_start_on_continuation_line (w)
             minimum distance from the old window start.  */
          pos = it.current.pos;
          min_distance = INFINITY;
-         while ((distance = abs (CHARPOS (start_pos) - IT_CHARPOS (it))),
+         while ((distance = eabs (CHARPOS (start_pos) - IT_CHARPOS (it))),
                 distance < min_distance)
            {
              min_distance = distance;
@@ -12756,7 +12773,9 @@ set_vertical_scroll_bar (w)
     start = end = whole = 0;
 
   /* Indicate what this scroll bar ought to be displaying now.  */
-  set_vertical_scroll_bar_hook (w, end - start, whole, start);
+  if (FRAME_TERMINAL (XFRAME (w->frame))->set_vertical_scroll_bar_hook)
+    (*FRAME_TERMINAL (XFRAME (w->frame))->set_vertical_scroll_bar_hook)
+      (w, end - start, whole, start);
 }
 
 
@@ -12791,7 +12810,7 @@ redisplay_window (window, just_this_one_p)
   int rc;
   int centering_position = -1;
   int last_line_misfit = 0;
-  int save_beg_unchanged, save_end_unchanged;
+  int beg_unchanged, end_unchanged;
 
   SET_TEXT_POS (lpoint, PT, PT_BYTE);
   opoint = lpoint;
@@ -12856,8 +12875,8 @@ redisplay_window (window, just_this_one_p)
   set_buffer_internal_1 (XBUFFER (w->buffer));
   SET_TEXT_POS (opoint, PT, PT_BYTE);
 
-  save_beg_unchanged = BEG_UNCHANGED;
-  save_end_unchanged = END_UNCHANGED;
+  beg_unchanged = BEG_UNCHANGED;
+  end_unchanged = END_UNCHANGED;
 
   current_matrix_up_to_date_p
     = (!NILP (w->window_end_valid)
@@ -13163,16 +13182,16 @@ redisplay_window (window, just_this_one_p)
         than a simple mouse-click.  */
       if (NILP (w->start_at_line_beg)
          && NILP (do_mouse_tracking)
-         && CHARPOS (startp) > BEGV
-         && CHARPOS (startp) > BEG + save_beg_unchanged
-         && CHARPOS (startp) <= Z - save_end_unchanged)
+         && CHARPOS (startp) > BEGV
+         && CHARPOS (startp) > BEG + beg_unchanged
+         && CHARPOS (startp) <= Z - end_unchanged)
        {
          w->force_start = Qt;
          if (XMARKER (w->start)->buffer == current_buffer)
            compute_window_start_on_continuation_line (w);
          SET_TEXT_POS_FROM_MARKER (startp, w->start);
          goto force_start;
-       }
+       }
 
 #if GLYPH_DEBUG
       debug_method_add (w, "same window start");
@@ -13475,20 +13494,22 @@ redisplay_window (window, just_this_one_p)
         display_menu_bar (w);
 
 #ifdef HAVE_WINDOW_SYSTEM
-#ifdef USE_GTK
-      redisplay_tool_bar_p = FRAME_EXTERNAL_TOOL_BAR (f);
+      if (FRAME_WINDOW_P (f))
+        {
+#if defined (USE_GTK) || USE_MAC_TOOLBAR
+          redisplay_tool_bar_p = FRAME_EXTERNAL_TOOL_BAR (f);
 #else
-      redisplay_tool_bar_p = WINDOWP (f->tool_bar_window)
-        && (FRAME_TOOL_BAR_LINES (f) > 0
-            || !NILP (Vauto_resize_tool_bars));
-
+          redisplay_tool_bar_p = WINDOWP (f->tool_bar_window)
+            && (FRAME_TOOL_BAR_LINES (f) > 0
+                || !NILP (Vauto_resize_tool_bars));
 #endif
 
-      if (redisplay_tool_bar_p && redisplay_tool_bar (f))
-       {
-         extern int ignore_mouse_drag_p;
-         ignore_mouse_drag_p = 1;
-       }
+          if (redisplay_tool_bar_p && redisplay_tool_bar (f))
+           {
+             extern int ignore_mouse_drag_p;
+             ignore_mouse_drag_p = 1;
+           }
+        }
 #endif
     }
 
@@ -13522,7 +13543,8 @@ redisplay_window (window, just_this_one_p)
 
       /* Note that we actually used the scroll bar attached to this
         window, so it shouldn't be deleted at the end of redisplay.  */
-      redeem_scroll_bar_hook (w);
+      if (FRAME_TERMINAL (f)->redeem_scroll_bar_hook)
+        (*FRAME_TERMINAL (f)->redeem_scroll_bar_hook) (w);
     }
 
   /* Restore current_buffer and value of point in it.  */
@@ -13791,10 +13813,10 @@ try_window_reusing_current_matrix (w)
          if (run.height > 0 && run.current_y != run.desired_y)
            {
              update_begin (f);
-             rif->update_window_begin_hook (w);
-             rif->clear_window_mouse_face (w);
-             rif->scroll_run_hook (w, &run);
-             rif->update_window_end_hook (w, 0, 0);
+             FRAME_RIF (f)->update_window_begin_hook (w);
+             FRAME_RIF (f)->clear_window_mouse_face (w);
+             FRAME_RIF (f)->scroll_run_hook (w, &run);
+             FRAME_RIF (f)->update_window_end_hook (w, 0, 0);
              update_end (f);
            }
 
@@ -13963,10 +13985,10 @@ try_window_reusing_current_matrix (w)
       if (run.height)
        {
          update_begin (f);
-         rif->update_window_begin_hook (w);
-         rif->clear_window_mouse_face (w);
-         rif->scroll_run_hook (w, &run);
-         rif->update_window_end_hook (w, 0, 0);
+         FRAME_RIF (f)->update_window_begin_hook (w);
+         FRAME_RIF (f)->clear_window_mouse_face (w);
+         FRAME_RIF (f)->scroll_run_hook (w, &run);
+         FRAME_RIF (f)->update_window_end_hook (w, 0, 0);
          update_end (f);
        }
 
@@ -14416,7 +14438,7 @@ try_window_id (w)
 
   /* Window must either use window-based redisplay or be full width.  */
   if (!FRAME_WINDOW_P (f)
-      && (!line_ins_del_ok
+      && (!FRAME_LINE_INS_DEL_OK (f)
          || !WINDOW_FULL_WIDTH_P (w)))
     GIVE_UP (4);
 
@@ -14825,10 +14847,10 @@ try_window_id (w)
 
       if (FRAME_WINDOW_P (f))
        {
-         rif->update_window_begin_hook (w);
-         rif->clear_window_mouse_face (w);
-         rif->scroll_run_hook (w, &run);
-         rif->update_window_end_hook (w, 0, 0);
+         FRAME_RIF (f)->update_window_begin_hook (w);
+         FRAME_RIF (f)->clear_window_mouse_face (w);
+         FRAME_RIF (f)->scroll_run_hook (w, &run);
+         FRAME_RIF (f)->update_window_end_hook (w, 0, 0);
        }
       else
        {
@@ -14846,36 +14868,36 @@ try_window_id (w)
            {
              /* Scroll last_unchanged_at_beg_row to the end of the
                 window down dvpos lines.  */
-             set_terminal_window (end);
+             set_terminal_window (f, end);
 
              /* On dumb terminals delete dvpos lines at the end
                 before inserting dvpos empty lines.  */
-             if (!scroll_region_ok)
-               ins_del_lines (end - dvpos, -dvpos);
+             if (!FRAME_SCROLL_REGION_OK (f))
+               ins_del_lines (f, end - dvpos, -dvpos);
 
              /* Insert dvpos empty lines in front of
                  last_unchanged_at_beg_row.  */
-             ins_del_lines (from, dvpos);
+             ins_del_lines (f, from, dvpos);
            }
          else if (dvpos < 0)
            {
              /* Scroll up last_unchanged_at_beg_vpos to the end of
                 the window to last_unchanged_at_beg_vpos - |dvpos|.  */
-             set_terminal_window (end);
+             set_terminal_window (f, end);
 
              /* Delete dvpos lines in front of
                 last_unchanged_at_beg_vpos.  ins_del_lines will set
                 the cursor to the given vpos and emit |dvpos| delete
                 line sequences.  */
-             ins_del_lines (from + dvpos, dvpos);
+             ins_del_lines (f, from + dvpos, dvpos);
 
              /* On a dumb terminal insert dvpos empty lines at the
                  end.  */
-             if (!scroll_region_ok)
-               ins_del_lines (end + dvpos, -dvpos);
+             if (!FRAME_SCROLL_REGION_OK (f))
+               ins_del_lines (f, end + dvpos, -dvpos);
            }
 
-         set_terminal_window (0);
+         set_terminal_window (f, 0);
        }
 
       update_end (f);
@@ -16449,7 +16471,7 @@ display_menu_bar (w)
 
   /* Don't do all this for graphical frames.  */
 #ifdef HAVE_NTGUI
-  if (!NILP (Vwindow_system))
+  if (FRAME_W32_P (f))
     return;
 #endif
 #if defined (USE_X_TOOLKIT) || defined (USE_GTK)
@@ -16680,10 +16702,10 @@ display_mode_line (w, face_id, format)
   /* Temporarily make frame's keyboard the current kboard so that
      kboard-local variables in the mode_line_format will get the right
      values.  */
-  push_frame_kboard (it.f);
+  push_kboard (FRAME_KBOARD (it.f));
   record_unwind_save_match_data ();
   display_mode_element (&it, 0, 0, 0, format, Qnil, 0);
-  pop_frame_kboard ();
+  pop_kboard ();
 
   unbind_to (count, Qnil);
 
@@ -17353,7 +17375,7 @@ are the selected window and the window's buffer).  */)
   CHECK_BUFFER (buffer);
 
   if (NILP (format))
-    return build_string ("");
+    return empty_unibyte_string;
 
   if (no_props)
     face = Qnil;
@@ -17398,9 +17420,9 @@ are the selected window and the window's buffer).  */)
        = (NILP (face) ? Qnil : Fcons (Qface, Fcons (face, Qnil)));
     }
 
-  push_frame_kboard (it.f);
+  push_kboard (FRAME_KBOARD (it.f));
   display_mode_element (&it, 0, 0, 0, format, Qnil, 0);
-  pop_frame_kboard ();
+  pop_kboard ();
 
   if (no_props)
     {
@@ -17411,7 +17433,7 @@ are the selected window and the window's buffer).  */)
     {
       mode_line_string_list = Fnreverse (mode_line_string_list);
       str = Fmapconcat (intern ("identity"), mode_line_string_list,
-                       make_string ("", 0));
+                       empty_unibyte_string);
     }
 
   unbind_to (count, Qnil);
@@ -18005,6 +18027,16 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
 #endif
       break;
 
+    case '@':
+      {
+       Lisp_Object val;
+       val = call1 (intern ("file-remote-p"), current_buffer->directory);
+       if (NILP (val))
+         return "-";
+       else
+         return "@";
+      }
+
     case 't':                  /* indicate TEXT or BINARY */
 #ifdef MODE_LINE_BINARY_TEXT
       return MODE_LINE_BINARY_TEXT (b);
@@ -18024,8 +18056,8 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
          {
            /* No need to mention EOL here--the terminal never needs
               to do EOL conversion.  */
-           p = decode_mode_spec_coding (keyboard_coding.symbol, p, 0);
-           p = decode_mode_spec_coding (terminal_coding.symbol, p, 0);
+           p = decode_mode_spec_coding (FRAME_KEYBOARD_CODING (f)->symbol, p, 0);
+           p = decode_mode_spec_coding (FRAME_TERMINAL_CODING (f)->symbol, p, 0);
          }
        p = decode_mode_spec_coding (b->buffer_file_coding_system,
                                     p, eol_flag);
@@ -18429,6 +18461,27 @@ invisible_p (propval, list)
   return 0;
 }
 
+DEFUN ("invisible-p", Finvisible_p, Sinvisible_p, 1, 1, 0,
+       doc: /* Non-nil if the property makes the text invisible.
+POS-OR-PROP can be a marker or number, in which case it is taken to be
+a position in the current buffer and the value of the `invisible' property
+is checked; or it can be some other value, which is then presumed to be the
+value of the `invisible' property of the text of interest.
+The non-nil value returned can be t for truly invisible text or something
+else if the text is replaced by an ellipsis.  */)
+     (pos_or_prop)
+     Lisp_Object pos_or_prop;
+{
+  Lisp_Object prop
+    = (NATNUMP (pos_or_prop) || MARKERP (pos_or_prop)
+       ? Fget_char_property (pos_or_prop, Qinvisible, Qnil)
+       : pos_or_prop);
+  int invis = TEXT_PROP_MEANS_INVISIBLE (prop);
+  return (invis == 0 ? Qnil
+         : invis == 1 ? Qt
+         : make_number (invis));
+}
+
 /* Calculate a width or height in pixels from a specification using
    the following elements:
 
@@ -18517,6 +18570,8 @@ calc_pixel_width_or_height (res, it, prop, font, width_p, align_to)
   if (NILP (prop))
     return OK_PIXELS (0);
 
+  xassert (FRAME_LIVE_P (it->f));
+
   if (SYMBOLP (prop))
     {
       if (SCHARS (SYMBOL_NAME (prop)) == 2)
@@ -18633,7 +18688,8 @@ calc_pixel_width_or_height (res, it, prop, font, width_p, align_to)
       if (SYMBOLP (car))
        {
 #ifdef HAVE_WINDOW_SYSTEM
-         if (valid_image_p (prop))
+         if (FRAME_WINDOW_P (it->f)
+             && valid_image_p (prop))
            {
              int id = lookup_image (it->f, prop);
              struct image *img = IMAGE_FROM_ID (it->f, id);
@@ -18874,7 +18930,7 @@ get_glyph_face_and_encoding (f, glyph, char2b, two_byte_p)
            = FONT_INFO_FROM_ID (f, face->font_info_id);
          if (font_info)
            glyph->font_type
-             = rif->encode_char (glyph->u.ch, char2b, font_info, two_byte_p);
+             = FRAME_RIF (f)->encode_char (glyph->u.ch, char2b, font_info, two_byte_p);
        }
     }
 
@@ -19107,7 +19163,7 @@ x_get_glyph_overhangs (glyph, f, left, right)
       font = face->font;
       font_info = FONT_INFO_FROM_ID (f, face->font_info_id);
       if (font  /* ++KFS: Should this be font_info ?  */
-         && (pcm = rif->per_char_metric (font, &char2b, glyph->font_type)))
+         && (pcm = FRAME_RIF (f)->per_char_metric (font, &char2b, glyph->font_type)))
        {
          if (pcm->rbearing > pcm->width)
            *right = pcm->rbearing - pcm->width;
@@ -19275,7 +19331,7 @@ get_char_face_and_encoding (f, c, face_id, char2b, multibyte_p, display_p)
          struct font_info *font_info
            = FONT_INFO_FROM_ID (f, face->font_info_id);
          if (font_info)
-           rif->encode_char (c, char2b, font_info, 0);
+           FRAME_RIF (f)->encode_char (c, char2b, font_info, 0);
        }
     }
 
@@ -19338,8 +19394,8 @@ compute_overhangs_and_x (s, x, backward_p)
     {
       while (s)
        {
-         if (rif->compute_glyph_string_overhangs)
-           rif->compute_glyph_string_overhangs (s);
+         if (FRAME_RIF (s->f)->compute_glyph_string_overhangs)
+           FRAME_RIF (s->f)->compute_glyph_string_overhangs (s);
          x -= s->width;
          s->x = x;
          s = s->prev;
@@ -19349,8 +19405,8 @@ compute_overhangs_and_x (s, x, backward_p)
     {
       while (s)
        {
-         if (rif->compute_glyph_string_overhangs)
-           rif->compute_glyph_string_overhangs (s);
+         if (FRAME_RIF (s->f)->compute_glyph_string_overhangs)
+           FRAME_RIF (s->f)->compute_glyph_string_overhangs (s);
          s->x = x;
          x += s->width;
          s = s->next;
@@ -19638,9 +19694,9 @@ draw_glyphs (w, x, row, area, start, end, hl, overlaps)
       struct glyph_string *h, *t;
 
       /* Compute overhangs for all glyph strings.  */
-      if (rif->compute_glyph_string_overhangs)
+      if (FRAME_RIF (f)->compute_glyph_string_overhangs)
        for (s = head; s; s = s->next)
-         rif->compute_glyph_string_overhangs (s);
+         FRAME_RIF (f)->compute_glyph_string_overhangs (s);
 
       /* Prepend glyph strings for glyphs in front of the first glyph
         string that are overwritten because of the first glyph
@@ -19718,7 +19774,7 @@ draw_glyphs (w, x, row, area, start, end, hl, overlaps)
 
   /* Draw all strings.  */
   for (s = head; s; s = s->next)
-    rif->draw_glyph_string (s);
+    FRAME_RIF (f)->draw_glyph_string (s);
 
   if (area == TEXT_AREA
       && !row->full_width_p
@@ -19977,9 +20033,9 @@ produce_image_glyph (it)
        }
 
       if (it->start_of_box_run_p && slice.x == 0)
-       it->pixel_width += abs (face->box_line_width);
+       it->pixel_width += eabs (face->box_line_width);
       if (it->end_of_box_run_p && slice.x + slice.width == img->width)
-       it->pixel_width += abs (face->box_line_width);
+       it->pixel_width += eabs (face->box_line_width);
     }
 
   take_vertical_position_into_account (it);
@@ -20413,20 +20469,20 @@ x_produce_glyphs (it)
 
          it->nglyphs = 1;
 
-         pcm = rif->per_char_metric (font, &char2b,
-                                     FONT_TYPE_FOR_UNIBYTE (font, it->char_to_display));
-
-         if (it->override_ascent >= 0)
-           {
-             it->ascent = it->override_ascent;
-             it->descent = it->override_descent;
-             boff = it->override_boff;
-           }
-         else
-           {
-             it->ascent = FONT_BASE (font) + boff;
-             it->descent = FONT_DESCENT (font) - boff;
-           }
+          pcm = FRAME_RIF (it->f)->per_char_metric
+            (font, &char2b, FONT_TYPE_FOR_UNIBYTE (font, it->char_to_display));
+
+         if (it->override_ascent >= 0)
+           {
+             it->ascent = it->override_ascent;
+             it->descent = it->override_descent;
+             boff = it->override_boff;
+           }
+         else
+           {
+             it->ascent = FONT_BASE (font) + boff;
+             it->descent = FONT_DESCENT (font) - boff;
+           }
 
          if (pcm)
            {
@@ -20644,8 +20700,8 @@ x_produce_glyphs (it)
             from the charset width; this is what old redisplay code
             did.  */
 
-         pcm = rif->per_char_metric (font, &char2b,
-                                     FONT_TYPE_FOR_MULTIBYTE (font, it->c));
+         pcm = FRAME_RIF (it->f)->per_char_metric (font, &char2b,
+                                                    FONT_TYPE_FOR_MULTIBYTE (font, it->c));
 
          if (font_not_found_p || !pcm)
            {
@@ -20776,8 +20832,8 @@ x_produce_glyphs (it)
 
          /* Initialize the bounding box.  */
          if (font_info
-             && (pcm = rif->per_char_metric (font, &char2b,
-                                             FONT_TYPE_FOR_MULTIBYTE (font, it->c))))
+             && (pcm = FRAME_RIF (it->f)->per_char_metric (font, &char2b,
+                                                            FONT_TYPE_FOR_MULTIBYTE (font, it->c))))
            {
              width = pcm->width;
              ascent = pcm->ascent;
@@ -20835,8 +20891,8 @@ x_produce_glyphs (it)
                }
 
              if (font_info
-                 && (pcm = rif->per_char_metric (font, &char2b,
-                                                 FONT_TYPE_FOR_MULTIBYTE (font, ch))))
+                 && (pcm = FRAME_RIF (it->f)->per_char_metric (font, &char2b,
+                                                                FONT_TYPE_FOR_MULTIBYTE (font, ch))))
                {
                  width = pcm->width;
                  ascent = pcm->ascent;
@@ -21076,8 +21132,8 @@ x_insert_glyphs (start, len)
   frame_x = window_box_left (w, updated_area) + output_cursor.x;
   frame_y = WINDOW_TO_FRAME_PIXEL_Y (w, output_cursor.y);
 
-  rif->shift_glyphs_for_insert (f, frame_x, frame_y, shifted_region_width,
-                               line_height, shift_by_width);
+  FRAME_RIF (f)->shift_glyphs_for_insert (f, frame_x, frame_y, shifted_region_width,
+                                          line_height, shift_by_width);
 
   /* Write the glyphs.  */
   hpos = start - row->glyphs[updated_area];
@@ -21159,8 +21215,8 @@ x_clear_end_of_line (to_x)
   if (to_x > from_x && to_y > from_y)
     {
       BLOCK_INPUT;
-      rif->clear_frame_area (f, from_x, from_y,
-                            to_x - from_x, to_y - from_y);
+      FRAME_RIF (f)->clear_frame_area (f, from_x, from_y,
+                                       to_x - from_x, to_y - from_y);
       UNBLOCK_INPUT;
     }
 }
@@ -21681,7 +21737,7 @@ erase_phys_cursor (w)
       x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, max (x, left_x));
 
       if (width > 0)
-      rif->clear_frame_area (f, x, y, width, cursor_row->visible_height);
+       FRAME_RIF (f)->clear_frame_area (f, x, y, width, cursor_row->visible_height);
     }
 
   /* Erase the cursor by redrawing the character underneath it.  */
@@ -21778,9 +21834,9 @@ display_and_set_cursor (w, on, hpos, vpos, x, y)
       w->phys_cursor.vpos = vpos;
     }
 
-  rif->draw_window_cursor (w, glyph_row, x, y,
-                          new_cursor_type, new_cursor_width,
-                          on, active_cursor);
+  FRAME_RIF (f)->draw_window_cursor (w, glyph_row, x, y,
+                                     new_cursor_type, new_cursor_width,
+                                     on, active_cursor);
 }
 
 
@@ -21929,11 +21985,11 @@ show_mouse_face (dpyinfo, draw)
 
   /* Change the mouse cursor.  */
   if (draw == DRAW_NORMAL_TEXT && !EQ (dpyinfo->mouse_face_window, f->tool_bar_window))
-    rif->define_frame_cursor (f, FRAME_X_OUTPUT (f)->text_cursor);
+    FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->text_cursor);
   else if (draw == DRAW_MOUSE_FACE)
-    rif->define_frame_cursor (f, FRAME_X_OUTPUT (f)->hand_cursor);
+    FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->hand_cursor);
   else
-    rif->define_frame_cursor (f, FRAME_X_OUTPUT (f)->nontext_cursor);
+    FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->nontext_cursor);
 }
 
 /* EXPORT:
@@ -22241,8 +22297,8 @@ fast_find_string_pos (w, pos, object, hpos, vpos, x, y, right_p)
                goto found;
              }
            else if (best_glyph == NULL
-                    || ((abs (g->charpos - pos)
-                        < abs (best_glyph->charpos - pos))
+                    || ((eabs (g->charpos - pos)
+                        < eabs (best_glyph->charpos - pos))
                         && (right_p
                             ? g->charpos < pos
                             : g->charpos > pos)))
@@ -22372,7 +22428,6 @@ on_hot_spot_p (hot_spot, x, y)
          return inside;
        }
     }
-  /* If we don't understand the format, pretend we're not in the hot-spot.  */
   return 0;
 }
 
@@ -22452,7 +22507,7 @@ define_frame_cursor1 (f, cursor, pointer)
     }
 
   if (cursor != No_Cursor)
-    rif->define_frame_cursor (f, cursor);
+    FRAME_RIF (f)->define_frame_cursor (f, cursor);
 }
 
 /* Take proper action when mouse has moved to the mode or header line
@@ -23420,8 +23475,8 @@ phys_cursor_in_rect_p (w, r)
         I assume the effect is the same -- and this is portable.  */
       return x_intersect_rectangles (&cr, r, &result);
     }
-  else
-    return 0;
+  /* If we don't understand the format, pretend we're not in the hot-spot.  */
+  return 0;
 }
 
 
@@ -23433,6 +23488,8 @@ void
 x_draw_vertical_border (w)
      struct window *w;
 {
+  struct frame *f = XFRAME (WINDOW_FRAME (w));
+  
   /* We could do better, if we knew what type of scroll-bar the adjacent
      windows (on either side) have...  But we don't :-(
      However, I think this works ok.  ++KFS 2003-04-25 */
@@ -23453,9 +23510,9 @@ x_draw_vertical_border (w)
       y1 -= 1;
 
       if (WINDOW_LEFT_FRINGE_WIDTH (w) == 0)
-       x1 -= 1;
+        x1 -= 1;
 
-      rif->draw_vertical_window_border (w, x1, y0, y1);
+      FRAME_RIF (f)->draw_vertical_window_border (w, x1, y0, y1);
     }
   else if (!WINDOW_LEFTMOST_P (w)
           && !WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
@@ -23466,9 +23523,9 @@ x_draw_vertical_border (w)
       y1 -= 1;
 
       if (WINDOW_LEFT_FRINGE_WIDTH (w) == 0)
-       x0 -= 1;
+        x0 -= 1;
 
-      rif->draw_vertical_window_border (w, x0, y0, y1);
+      FRAME_RIF (f)->draw_vertical_window_border (w, x0, y0, y1);
     }
 }
 
@@ -23808,6 +23865,7 @@ syms_of_xdisp ()
   defsubr (&Slookup_image_map);
 #endif
   defsubr (&Sformat_mode_line);
+  defsubr (&Sinvisible_p);
 
   staticpro (&Qmenu_bar_update_hook);
   Qmenu_bar_update_hook = intern ("menu-bar-update-hook");
@@ -24100,7 +24158,7 @@ and is used only on frames for which no explicit name has been set
     = Vframe_title_format
     = Fcons (intern ("multiple-frames"),
             Fcons (build_string ("%b"),
-                   Fcons (Fcons (empty_string,
+                   Fcons (Fcons (empty_unibyte_string,
                                  Fcons (intern ("invocation-name"),
                                         Fcons (build_string ("@"),
                                                Fcons (intern ("system-name"),
index 418d8922bb31b2ea18d16717d56627228b14faba..5e396d8bf6e010fb7c4eb47d2019e1ed6cf9ef75 100644 (file)
@@ -195,11 +195,13 @@ Boston, MA 02110-1301, USA.  */
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <stdio.h>              /* This needs to be before termchar.h */
 
 #include "lisp.h"
 #include "charset.h"
 #include "keyboard.h"
 #include "frame.h"
+#include "termhooks.h"
 
 #ifdef HAVE_WINDOW_SYSTEM
 #include "fontset.h"
@@ -242,6 +244,7 @@ Boston, MA 02110-1301, USA.  */
 #include "blockinput.h"
 #include "window.h"
 #include "intervals.h"
+#include "termchar.h"
 
 #ifdef HAVE_X_WINDOWS
 
@@ -264,9 +267,6 @@ Boston, MA 02110-1301, USA.  */
 
 #include <ctype.h>
 
-#undef abs
-#define abs(X)         ((X) < 0 ? -(X) : (X))
-
 /* Number of pt per inch (from the TeXbook).  */
 
 #define PT_PER_INCH 72.27
@@ -744,10 +744,9 @@ x_free_gc (f, gc)
      struct frame *f;
      GC gc;
 {
-  BLOCK_INPUT;
+  eassert (interrupt_input_blocked);
   IF_DEBUG (xassert (--ngcs >= 0));
   XFreeGC (FRAME_X_DISPLAY (f), gc);
-  UNBLOCK_INPUT;
 }
 
 #endif /* HAVE_X_WINDOWS */
@@ -777,10 +776,8 @@ x_free_gc (f, gc)
      struct frame *f;
      GC gc;
 {
-  BLOCK_INPUT;
   IF_DEBUG (xassert (--ngcs >= 0));
   xfree (gc);
-  UNBLOCK_INPUT;
 }
 
 #endif  /* WINDOWSNT */
@@ -807,10 +804,9 @@ x_free_gc (f, gc)
      struct frame *f;
      GC gc;
 {
-  BLOCK_INPUT;
+  eassert (interrupt_input_blocked);
   IF_DEBUG (xassert (--ngcs >= 0));
   XFreeGC (FRAME_MAC_DISPLAY (f), gc);
-  UNBLOCK_INPUT;
 }
 
 #endif  /* MAC_OS */
@@ -1257,8 +1253,10 @@ load_face_font (f, face, c)
       face->overstrike = needs_overstrike;
       if (face->gc)
        {
+         BLOCK_INPUT;
          x_free_gc (f, face->gc);
          face->gc = 0;
+         UNBLOCK_INPUT;
        }
     }
   else
@@ -1490,11 +1488,11 @@ face_color_gray_p (f, color_name)
     gray_p = (/* Any color sufficiently close to black counts as grey.  */
              (color.red < 5000 && color.green < 5000 && color.blue < 5000)
              ||
-             ((abs (color.red - color.green)
+             ((eabs (color.red - color.green)
                < max (color.red, color.green) / 20)
-              && (abs (color.green - color.blue)
+              && (eabs (color.green - color.blue)
                   < max (color.green, color.blue) / 20)
-              && (abs (color.blue - color.red)
+              && (eabs (color.blue - color.red)
                   < max (color.blue, color.red) / 20)));
   else
     gray_p = 0;
@@ -2716,7 +2714,7 @@ cmp_font_names (a, b)
          int resy = FRAME_X_DISPLAY_INFO (font_frame)->resy;
          int x_resy = x->numeric[XLFD_RESY];
          int y_resy = y->numeric[XLFD_RESY];
-         cmp = abs (resy - x_resy) - abs (resy - y_resy);
+         cmp = eabs (resy - x_resy) - eabs (resy - y_resy);
        }
     }
 
@@ -3222,6 +3220,22 @@ push_named_merge_point (struct named_merge_point *new_named_merge_point,
 
 \f
 
+#if 0                          /* Seems to be unused.  */
+static Lisp_Object
+internal_resolve_face_name (nargs, args)
+     int nargs;
+     Lisp_Object *args;
+{
+  return Fget (args[0], args[1]);
+}
+
+static Lisp_Object
+resolve_face_name_error (ignore)
+     Lisp_Object ignore;
+{
+  return Qnil;
+}
+#endif
 
 /* Resolve face name FACE_NAME.  If FACE_NAME is a string, intern it
    to make it a symbol.  If FACE_NAME is an alias for another face,
@@ -3936,6 +3950,8 @@ Otherwise check for the existence of a global face.  */)
 {
   Lisp_Object lface;
 
+  face = resolve_face_name (face, 1);
+
   if (!NILP (frame))
     {
       CHECK_LIVE_FRAME (frame);
@@ -5238,8 +5254,10 @@ free_realized_face (f, face)
            free_face_fontset (f, face);
          if (face->gc)
            {
+             BLOCK_INPUT;
              x_free_gc (f, face->gc);
              face->gc = 0;
+             UNBLOCK_INPUT;
            }
 
          free_face_colors (f, face);
@@ -5403,8 +5421,10 @@ clear_face_gcs (c)
          struct face *face = c->faces_by_id[i];
          if (face && face->gc)
            {
+             BLOCK_INPUT;
              x_free_gc (c->f, face->gc);
              face->gc = 0;
+             UNBLOCK_INPUT;
            }
        }
 #endif /* HAVE_WINDOW_SYSTEM */
@@ -5775,7 +5795,7 @@ smaller_face (f, face_id, steps)
 
   /* Try in increments of 1/2 pt.  */
   delta = steps < 0 ? 5 : -5;
-  steps = abs (steps);
+  steps = eabs (steps);
 
   face = FACE_FROM_ID (f, face_id);
   bcopy (face->lface, attrs, sizeof attrs);
@@ -5786,7 +5806,7 @@ smaller_face (f, face_id, steps)
   while (steps
         && pt + delta > 0
         /* Give up if we cannot find a font within 10pt.  */
-        && abs (last_pt - pt) < 100)
+        && eabs (last_pt - pt) < 100)
     {
       /* Look up a face for a slightly smaller/larger font.  */
       pt += delta;
@@ -6146,7 +6166,7 @@ tty_supports_face_attributes_p (f, attrs, def_face)
   /* See if the capabilities we selected above are supported, with the
      given colors.  */
   if (test_caps != 0 &&
-      ! tty_capable_p (f, test_caps, fg_tty_color.pixel, bg_tty_color.pixel))
+      ! tty_capable_p (FRAME_TTY (f), test_caps, fg_tty_color.pixel, bg_tty_color.pixel))
     return 0;
 
 
@@ -6394,17 +6414,17 @@ better_font_p (values, font1, font2, compare_pt_p, avgwidth)
 
          if (xlfd_idx == XLFD_POINT_SIZE)
            {
-             delta1 = abs (values[i] - (font1->numeric[xlfd_idx]
+             delta1 = eabs (values[i] - (font1->numeric[xlfd_idx]
                                         / font1->rescale_ratio));
-             delta2 = abs (values[i] - (font2->numeric[xlfd_idx]
+             delta2 = eabs (values[i] - (font2->numeric[xlfd_idx]
                                         / font2->rescale_ratio));
-             if (abs (delta1 - delta2) < FONT_POINT_SIZE_QUANTUM)
+             if (eabs (delta1 - delta2) < FONT_POINT_SIZE_QUANTUM)
                continue;
            }
          else
            {
-             delta1 = abs (values[i] - font1->numeric[xlfd_idx]);
-             delta2 = abs (values[i] - font2->numeric[xlfd_idx]);
+             delta1 = eabs (values[i] - font1->numeric[xlfd_idx]);
+             delta2 = eabs (values[i] - font2->numeric[xlfd_idx]);
            }
 
          if (delta1 > delta2)
@@ -6426,8 +6446,8 @@ better_font_p (values, font1, font2, compare_pt_p, avgwidth)
 
   if (avgwidth)
     {
-      int delta1 = abs (avgwidth - font1->numeric[XLFD_AVGWIDTH]);
-      int delta2 = abs (avgwidth - font2->numeric[XLFD_AVGWIDTH]);
+      int delta1 = eabs (avgwidth - font1->numeric[XLFD_AVGWIDTH]);
+      int delta2 = eabs (avgwidth - font2->numeric[XLFD_AVGWIDTH]);
       if (delta1 > delta2)
        return 0;
       else if (delta1 < delta2)
@@ -6950,7 +6970,8 @@ realize_basic_faces (f)
        {
          FRAME_FACE_CACHE (f)->menu_face_changed_p = 0;
 #ifdef USE_X_TOOLKIT
-         x_update_menu_appearance (f);
+          if (FRAME_WINDOW_P (f))
+            x_update_menu_appearance (f);
 #endif
        }
 
@@ -7037,7 +7058,7 @@ realize_default_face (f)
        LFACE_FOREGROUND (lface) = XCDR (color);
       else if (FRAME_WINDOW_P (f))
        return 0;
-      else if (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
+      else if (FRAME_INITIAL_P (f) || FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
        LFACE_FOREGROUND (lface) = build_string (unspecified_fg);
       else
        abort ();
@@ -7052,7 +7073,7 @@ realize_default_face (f)
        LFACE_BACKGROUND (lface) = XCDR (color);
       else if (FRAME_WINDOW_P (f))
        return 0;
-      else if (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
+      else if (FRAME_INITIAL_P (f) || FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
        LFACE_BACKGROUND (lface) = build_string (unspecified_bg);
       else
        abort ();
@@ -7069,17 +7090,17 @@ realize_default_face (f)
 
 #ifdef HAVE_WINDOW_SYSTEM
 #ifdef HAVE_X_WINDOWS
-  if (face->font != FRAME_FONT (f))
+  if (FRAME_X_P (f) && face->font != FRAME_FONT (f))
     {
       /* This can happen when making a frame on a display that does
-        not support the default font.  */
+        not support the default font.  */
       if (!face->font)
-       return 0;
-
+       return 0;
       /* Otherwise, the font specified for the frame was not
-        acceptable as a font for the default face (perhaps because
-        auto-scaled fonts are rejected), so we must adjust the frame
-        font.  */
+        acceptable as a font for the default face (perhaps because
+        auto-scaled fonts are rejected), so we must adjust the frame
+        font.  */
       x_set_font (f, build_string (face->font_name), Qnil);
     }
 #endif /* HAVE_X_WINDOWS */
@@ -7159,6 +7180,11 @@ realize_face (cache, attrs, c, base_face, former_face_id)
     face = realize_x_face (cache, attrs, c, base_face);
   else if (FRAME_TERMCAP_P (cache->f) || FRAME_MSDOS_P (cache->f))
     face = realize_tty_face (cache, attrs, c);
+  else if (FRAME_INITIAL_P (cache->f))
+    {
+      /* Create a dummy face. */
+      face = make_realized_face (attrs);
+    }
   else
     abort ();
 
index f0cb26b72b4b94efe0823185fe290e11c4ba6520..fe4d1c8335f7dda9aebb14fd1249761f41a13f61 100644 (file)
@@ -47,6 +47,7 @@ Boston, MA 02110-1301, USA.  */
 #include "systime.h"
 #include "termhooks.h"
 #include "atimer.h"
+#include "termchar.h"
 
 #ifdef HAVE_X_WINDOWS
 
@@ -72,8 +73,13 @@ Boston, MA 02110-1301, USA.  */
 #include <X11/Shell.h>
 
 #ifndef USE_MOTIF
+#ifdef HAVE_XAW3D
+#include <X11/Xaw3d/Paned.h>
+#include <X11/Xaw3d/Label.h>
+#else /* !HAVE_XAW3D */
 #include <X11/Xaw/Paned.h>
 #include <X11/Xaw/Label.h>
+#endif /* HAVE_XAW3D */
 #endif /* USE_MOTIF */
 
 #ifdef USG
@@ -250,17 +256,18 @@ check_x_frame (frame)
   return f;
 }
 
-/* Let the user specify an X display with a frame.
+/* Let the user specify an X display with a Lisp object.
+   OBJECT may be nil, a frame or a terminal id.
    nil stands for the selected frame--or, if that is not an X frame,
    the first X display on the list.  */
 
 struct x_display_info *
-check_x_display_info (frame)
-     Lisp_Object frame;
+check_x_display_info (object)
+     Lisp_Object object;
 {
   struct x_display_info *dpyinfo = NULL;
 
-  if (NILP (frame))
+  if (NILP (object))
     {
       struct frame *sf = XFRAME (selected_frame);
 
@@ -271,11 +278,20 @@ check_x_display_info (frame)
       else
        error ("X windows are not in use or not initialized");
     }
-  else if (STRINGP (frame))
-    dpyinfo = x_display_info_for_name (frame);
+  else if (INTEGERP (object))
+    {
+      struct terminal *t = get_terminal (object, 1);
+
+      if (t->type != output_x_window)
+        error ("Terminal %d is not an X display", XINT (object));
+
+      dpyinfo = t->display_info.x;
+    }
+  else if (STRINGP (object))
+    dpyinfo = x_display_info_for_name (object);
   else
     {
-      FRAME_PTR f = check_x_frame (frame);
+      FRAME_PTR f = check_x_frame (object);
       dpyinfo = FRAME_X_DISPLAY_INFO (f);
     }
 
@@ -856,8 +872,8 @@ x_set_foreground_color (f, arg, oldval)
   unsigned long fg, old_fg;
 
   fg = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
-  old_fg = x->foreground_pixel;
-  x->foreground_pixel = fg;
+  old_fg = FRAME_FOREGROUND_PIXEL (f);
+  FRAME_FOREGROUND_PIXEL (f) = fg;
 
   if (FRAME_X_WINDOW (f) != 0)
     {
@@ -894,8 +910,8 @@ x_set_background_color (f, arg, oldval)
   unsigned long bg;
 
   bg = x_decode_color (f, arg, WHITE_PIX_DEFAULT (f));
-  unload_color (f, x->background_pixel);
-  x->background_pixel = bg;
+  unload_color (f, FRAME_BACKGROUND_PIXEL (f));
+  FRAME_BACKGROUND_PIXEL (f) = bg;
 
   if (FRAME_X_WINDOW (f) != 0)
     {
@@ -943,13 +959,13 @@ x_set_mouse_color (f, arg, oldval)
   Cursor cursor, nontext_cursor, mode_cursor, hand_cursor;
   Cursor hourglass_cursor, horizontal_drag_cursor;
   unsigned long pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
-  unsigned long mask_color = x->background_pixel;
+  unsigned long mask_color = FRAME_BACKGROUND_PIXEL (f);
 
   /* Don't let pointers be invisible.  */
   if (mask_color == pixel)
     {
       x_free_colors (f, &pixel, 1);
-      pixel = x_copy_color (f, x->foreground_pixel);
+      pixel = x_copy_color (f, FRAME_FOREGROUND_PIXEL (f));
     }
 
   unload_color (f, x->mouse_pixel);
@@ -1092,13 +1108,13 @@ x_set_cursor_color (f, arg, oldval)
       fore_pixel_allocated_p = 1;
     }
   else
-    fore_pixel = x->background_pixel;
+    fore_pixel = FRAME_BACKGROUND_PIXEL (f);
 
   pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
   pixel_allocated_p = 1;
 
   /* Make sure that the cursor color differs from the background color.  */
-  if (pixel == x->background_pixel)
+  if (pixel == FRAME_BACKGROUND_PIXEL (f))
     {
       if (pixel_allocated_p)
        {
@@ -1114,7 +1130,7 @@ x_set_cursor_color (f, arg, oldval)
              x_free_colors (f, &fore_pixel, 1);
              fore_pixel_allocated_p = 0;
            }
-         fore_pixel = x->background_pixel;
+         fore_pixel = FRAME_BACKGROUND_PIXEL (f);
        }
     }
 
@@ -1399,10 +1415,8 @@ x_set_tool_bar_lines (f, value, oldval)
      below the menu bar.  */
   if (FRAME_X_WINDOW (f) && FRAME_TOOL_BAR_LINES (f) == 0)
     {
-      updating_frame = f;
-      clear_frame ();
+      clear_frame (f);
       clear_current_matrices (f);
-      updating_frame = NULL;
     }
 
   /* If the tool bar gets smaller, the internal border below it
@@ -1453,10 +1467,10 @@ x_set_scroll_bar_foreground (f, value, oldval)
   if (FRAME_X_WINDOW (f) && FRAME_VISIBLE_P (f))
     {
       /* Remove all scroll bars because they have wrong colors.  */
-      if (condemn_scroll_bars_hook)
-       (*condemn_scroll_bars_hook) (f);
-      if (judge_scroll_bars_hook)
-       (*judge_scroll_bars_hook) (f);
+      if (FRAME_TERMINAL (f)->condemn_scroll_bars_hook)
+       (*FRAME_TERMINAL (f)->condemn_scroll_bars_hook) (f);
+      if (FRAME_TERMINAL (f)->judge_scroll_bars_hook)
+       (*FRAME_TERMINAL (f)->judge_scroll_bars_hook) (f);
 
       update_face_from_frame_parameter (f, Qscroll_bar_foreground, value);
       redraw_frame (f);
@@ -1502,10 +1516,10 @@ x_set_scroll_bar_background (f, value, oldval)
   if (FRAME_X_WINDOW (f) && FRAME_VISIBLE_P (f))
     {
       /* Remove all scroll bars because they have wrong colors.  */
-      if (condemn_scroll_bars_hook)
-       (*condemn_scroll_bars_hook) (f);
-      if (judge_scroll_bars_hook)
-       (*judge_scroll_bars_hook) (f);
+      if (FRAME_TERMINAL (f)->condemn_scroll_bars_hook)
+       (*FRAME_TERMINAL (f)->condemn_scroll_bars_hook) (f);
+      if (FRAME_TERMINAL (f)->judge_scroll_bars_hook)
+       (*FRAME_TERMINAL (f)->judge_scroll_bars_hook) (f);
 
       update_face_from_frame_parameter (f, Qscroll_bar_background, value);
       redraw_frame (f);
@@ -1839,9 +1853,9 @@ x_default_scroll_bar_color_parameter (f, alist, prop, xprop, xclass,
                                    build_string (foreground_p
                                                  ? "foreground"
                                                  : "background"),
-                                   empty_string,
+                                   empty_unibyte_string,
                                    build_string ("verticalScrollBar"),
-                                   empty_string);
+                                   empty_unibyte_string);
       if (!STRINGP (tem))
        {
          /* If nothing has been specified, scroll bars will use a
@@ -2725,7 +2739,7 @@ x_window (f)
   XSetWindowAttributes attributes;
   unsigned long attribute_mask;
 
-  attributes.background_pixel = f->output_data.x->background_pixel;
+  attributes.background_pixel = FRAME_BACKGROUND_PIXEL (f);
   attributes.border_pixel = f->output_data.x->border_pixel;
   attributes.bit_gravity = StaticGravity;
   attributes.backing_store = NotUseful;
@@ -2852,7 +2866,9 @@ x_icon (f, parms)
      Lisp_Object parms;
 {
   Lisp_Object icon_x, icon_y;
+#if 0
   struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
+#endif
 
   /* Set the position of the icon.  Note that twm groups all
      icons in an icon window.  */
@@ -2913,8 +2929,8 @@ x_make_gc (f)
 
   /* Normal video */
   gc_values.font = FRAME_FONT (f)->fid;
-  gc_values.foreground = f->output_data.x->foreground_pixel;
-  gc_values.background = f->output_data.x->background_pixel;
+  gc_values.foreground = FRAME_FOREGROUND_PIXEL (f);
+  gc_values.background = FRAME_BACKGROUND_PIXEL (f);
   gc_values.line_width = 0;    /* Means 1 using fast algorithm.  */
   f->output_data.x->normal_gc
     = XCreateGC (FRAME_X_DISPLAY (f),
@@ -2923,8 +2939,8 @@ x_make_gc (f)
                 &gc_values);
 
   /* Reverse video style.  */
-  gc_values.foreground = f->output_data.x->background_pixel;
-  gc_values.background = f->output_data.x->foreground_pixel;
+  gc_values.foreground = FRAME_BACKGROUND_PIXEL (f);
+  gc_values.background = FRAME_FOREGROUND_PIXEL (f);
   f->output_data.x->reverse_gc
     = XCreateGC (FRAME_X_DISPLAY (f),
                 FRAME_X_WINDOW (f),
@@ -2932,7 +2948,7 @@ x_make_gc (f)
                 &gc_values);
 
   /* Cursor has cursor-color background, background-color foreground.  */
-  gc_values.foreground = f->output_data.x->background_pixel;
+  gc_values.foreground = FRAME_BACKGROUND_PIXEL (f);
   gc_values.background = f->output_data.x->cursor_pixel;
   gc_values.fill_style = FillOpaqueStippled;
   gc_values.stipple
@@ -2956,8 +2972,8 @@ x_make_gc (f)
     = (XCreatePixmapFromBitmapData
        (FRAME_X_DISPLAY (f), FRAME_X_DISPLAY_INFO (f)->root_window,
        gray_bits, gray_width, gray_height,
-       f->output_data.x->foreground_pixel,
-       f->output_data.x->background_pixel,
+       FRAME_FOREGROUND_PIXEL (f),
+       FRAME_BACKGROUND_PIXEL (f),
        DefaultDepth (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f))));
 
   UNBLOCK_INPUT;
@@ -3012,6 +3028,12 @@ unwind_create_frame (frame)
 {
   struct frame *f = XFRAME (frame);
 
+  /* If frame is already dead, nothing to do.  This can happen if the
+     display is disconnected after the frame has become official, but
+     before x_create_frame removes the unwind protect.  */
+  if (!FRAME_LIVE_P (f))
+    return Qnil;
+
   /* If frame is ``official'', nothing to do.  */
   if (!CONSP (Vframe_list) || !EQ (XCAR (Vframe_list), frame))
     {
@@ -3060,24 +3082,27 @@ This function is an internal primitive--use `make-frame' instead.  */)
   Lisp_Object parent;
   struct kboard *kb;
 
-  check_x ();
-
   parms = Fcopy_alist (parms);
 
   /* Use this general default value to start with
      until we know if this frame has a specified name.  */
   Vx_resource_name = Vinvocation_name;
 
-  display = x_get_arg (dpyinfo, parms, Qdisplay, 0, 0, RES_TYPE_STRING);
+  display = x_get_arg (dpyinfo, parms, Qterminal, 0, 0, RES_TYPE_NUMBER);
+  if (EQ (display, Qunbound))
+    display = x_get_arg (dpyinfo, parms, Qdisplay, 0, 0, RES_TYPE_STRING);
   if (EQ (display, Qunbound))
     display = Qnil;
   dpyinfo = check_x_display_info (display);
 #ifdef MULTI_KBOARD
-  kb = dpyinfo->kboard;
+  kb = dpyinfo->terminal->kboard;
 #else
   kb = &the_only_kboard;
 #endif
 
+  if (!dpyinfo->terminal->name)
+    error ("Terminal is not live, can't create new frames on it");
+
   name = x_get_arg (dpyinfo, parms, Qname, "name", "Name", RES_TYPE_STRING);
   if (!STRINGP (name)
       && ! EQ (name, Qunbound)
@@ -3118,6 +3143,9 @@ This function is an internal primitive--use `make-frame' instead.  */)
   /* Note that X Windows does support scroll bars.  */
   FRAME_CAN_HAVE_SCROLL_BARS (f) = 1;
 
+  f->terminal = dpyinfo->terminal;
+  f->terminal->reference_count++;
+
   f->output_method = output_x_window;
   f->output_data.x = (struct x_output *) xmalloc (sizeof (struct x_output));
   bzero (f->output_data.x, sizeof (struct x_output));
@@ -3144,9 +3172,6 @@ This function is an internal primitive--use `make-frame' instead.  */)
   image_cache_refcount = FRAME_X_IMAGE_CACHE (f)->refcount;
   dpyinfo_refcount = dpyinfo->reference_count;
 #endif /* GLYPH_DEBUG */
-#ifdef MULTI_KBOARD
-  FRAME_KBOARD (f) = kb;
-#endif
 
   /* These colors will be set anyway later, but it's important
      to get the color reference counts right, so initialize them!  */
@@ -3157,8 +3182,8 @@ This function is an internal primitive--use `make-frame' instead.  */)
     /* Function x_decode_color can signal an error.  Make
        sure to initialize color slots so that we won't try
        to free colors we haven't allocated.  */
-    f->output_data.x->foreground_pixel = -1;
-    f->output_data.x->background_pixel = -1;
+    FRAME_FOREGROUND_PIXEL (f) = -1;
+    FRAME_BACKGROUND_PIXEL (f) = -1;
     f->output_data.x->cursor_pixel = -1;
     f->output_data.x->cursor_foreground_pixel = -1;
     f->output_data.x->border_pixel = -1;
@@ -3166,9 +3191,9 @@ This function is an internal primitive--use `make-frame' instead.  */)
 
     black = build_string ("black");
     GCPRO1 (black);
-    f->output_data.x->foreground_pixel
+    FRAME_FOREGROUND_PIXEL (f)
       = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
-    f->output_data.x->background_pixel
+    FRAME_BACKGROUND_PIXEL (f)
       = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
     f->output_data.x->cursor_pixel
       = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
@@ -3435,7 +3460,7 @@ This function is an internal primitive--use `make-frame' instead.  */)
     }
 
   /* Initialize `default-minibuffer-frame' in case this is the first
-     frame on this display device.  */
+     frame on this terminal.  */
   if (FRAME_HAS_MINIBUF_P (f)
       && (!FRAMEP (kb->Vdefault_minibuffer_frame)
           || !FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame))))
@@ -3447,6 +3472,8 @@ This function is an internal primitive--use `make-frame' instead.  */)
     if (CONSP (XCAR (tem)) && !NILP (XCAR (XCAR (tem))))
       f->param_alist = Fcons (XCAR (tem), f->param_alist);
 
+  store_frame_param (f, Qwindow_system, Qx);
+
   UNGCPRO;
 
   /* Make sure windows on this frame appear in calls to next-window
@@ -3497,6 +3524,7 @@ FRAME nil means use the selected frame.  */)
   x_catch_errors (dpy);
   XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
                  RevertToParent, CurrentTime);
+  x_ewmh_activate_frame (f);
   x_uncatch_errors ();
   UNBLOCK_INPUT;
 
@@ -3540,10 +3568,10 @@ DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
 
 DEFUN ("xw-display-color-p", Fxw_display_color_p, Sxw_display_color_p, 0, 1, 0,
        doc: /* Internal function called by `display-color-p', which see.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   if (dpyinfo->n_planes <= 2)
     return Qnil;
@@ -3565,13 +3593,13 @@ DEFUN ("x-display-grayscale-p", Fx_display_grayscale_p, Sx_display_grayscale_p,
        0, 1, 0,
        doc: /* Return t if the X display supports shades of gray.
 Note that color displays do support shades of gray.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   if (dpyinfo->n_planes <= 1)
     return Qnil;
@@ -3593,56 +3621,56 @@ If omitted or nil, that stands for the selected frame's display.  */)
 
 DEFUN ("x-display-pixel-width", Fx_display_pixel_width, Sx_display_pixel_width,
        0, 1, 0,
-       doc: /* Returns the width in pixels of the X display DISPLAY.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Returns the width in pixels of the X display TERMINAL.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   return make_number (dpyinfo->width);
 }
 
 DEFUN ("x-display-pixel-height", Fx_display_pixel_height,
        Sx_display_pixel_height, 0, 1, 0,
-       doc: /* Returns the height in pixels of the X display DISPLAY.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Returns the height in pixels of the X display TERMINAL.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   return make_number (dpyinfo->height);
 }
 
 DEFUN ("x-display-planes", Fx_display_planes, Sx_display_planes,
        0, 1, 0,
-       doc: /* Returns the number of bitplanes of the X display DISPLAY.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Returns the number of bitplanes of the X display TERMINAL.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   return make_number (dpyinfo->n_planes);
 }
 
 DEFUN ("x-display-color-cells", Fx_display_color_cells, Sx_display_color_cells,
        0, 1, 0,
-       doc: /* Returns the number of color cells of the X display DISPLAY.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Returns the number of color cells of the X display TERMINAL.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   int nr_planes = DisplayPlanes (dpyinfo->display,
                                  XScreenNumberOfScreen (dpyinfo->screen));
@@ -3660,29 +3688,29 @@ If omitted or nil, that stands for the selected frame's display.  */)
 DEFUN ("x-server-max-request-size", Fx_server_max_request_size,
        Sx_server_max_request_size,
        0, 1, 0,
-       doc: /* Returns the maximum request size of the X server of display DISPLAY.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Returns the maximum request size of the X server of display TERMINAL.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   return make_number (MAXREQUEST (dpyinfo->display));
 }
 
 DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0,
-       doc: /* Returns the "vendor ID" string of the X server of display DISPLAY.
+       doc: /* Returns the "vendor ID" string of the X server of display TERMINAL.
 \(Labelling every distributor as a "vendor" embodies the false assumption
 that operating systems cannot be developed and distributed noncommercially.)
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
   char *vendor = ServerVendor (dpyinfo->display);
 
   if (! vendor) vendor = "";
@@ -3690,18 +3718,18 @@ If omitted or nil, that stands for the selected frame's display.  */)
 }
 
 DEFUN ("x-server-version", Fx_server_version, Sx_server_version, 0, 1, 0,
-       doc: /* Returns the version numbers of the X server of display DISPLAY.
+       doc: /* Returns the version numbers of the X server of display TERMINAL.
 The value is a list of three integers: the major and minor
 version numbers of the X Protocol in use, and the distributor-specific release
 number.  See also the function `x-server-vendor'.
 
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
   Display *dpy = dpyinfo->display;
 
   return Fcons (make_number (ProtocolVersion (dpy)),
@@ -3710,55 +3738,55 @@ If omitted or nil, that stands for the selected frame's display.  */)
 }
 
 DEFUN ("x-display-screens", Fx_display_screens, Sx_display_screens, 0, 1, 0,
-       doc: /* Return the number of screens on the X server of display DISPLAY.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Return the number of screens on the X server of display TERMINAL.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   return make_number (ScreenCount (dpyinfo->display));
 }
 
 DEFUN ("x-display-mm-height", Fx_display_mm_height, Sx_display_mm_height, 0, 1, 0,
-       doc: /* Return the height in millimeters of the X display DISPLAY.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Return the height in millimeters of the X display TERMINAL.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   return make_number (HeightMMOfScreen (dpyinfo->screen));
 }
 
 DEFUN ("x-display-mm-width", Fx_display_mm_width, Sx_display_mm_width, 0, 1, 0,
-       doc: /* Return the width in millimeters of the X display DISPLAY.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Return the width in millimeters of the X display TERMINAL.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   return make_number (WidthMMOfScreen (dpyinfo->screen));
 }
 
 DEFUN ("x-display-backing-store", Fx_display_backing_store,
        Sx_display_backing_store, 0, 1, 0,
-       doc: /* Returns an indication of whether X display DISPLAY does backing store.
+       doc: /* Returns an indication of whether X display TERMINAL does backing store.
 The value may be `always', `when-mapped', or `not-useful'.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
   Lisp_Object result;
 
   switch (DoesBackingStore (dpyinfo->screen))
@@ -3785,17 +3813,17 @@ If omitted or nil, that stands for the selected frame's display.  */)
 
 DEFUN ("x-display-visual-class", Fx_display_visual_class,
        Sx_display_visual_class, 0, 1, 0,
-       doc: /* Return the visual class of the X display DISPLAY.
+       doc: /* Return the visual class of the X display TERMINAL.
 The value is one of the symbols `static-gray', `gray-scale',
 `static-color', `pseudo-color', `true-color', or `direct-color'.
 
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
   Lisp_Object result;
 
   switch (dpyinfo->visual->class)
@@ -3828,14 +3856,14 @@ If omitted or nil, that stands for the selected frame's display.  */)
 
 DEFUN ("x-display-save-under", Fx_display_save_under,
        Sx_display_save_under, 0, 1, 0,
-       doc: /* Returns t if the X display DISPLAY supports the save-under feature.
-The optional argument DISPLAY specifies which display to ask about.
-DISPLAY should be either a frame or a display name (a string).
+       doc: /* Returns t if the X display TERMINAL supports the save-under feature.
+The optional argument TERMINAL specifies which display to ask about.
+TERMINAL should be a terminal id, a frame or a display name (a string).
 If omitted or nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   if (DoesSaveUnders (dpyinfo->screen) == True)
     return Qt;
@@ -4016,8 +4044,10 @@ x_display_info_for_name (name)
 
   CHECK_STRING (name);
 
-  if (! EQ (Vwindow_system, intern ("x")))
-    error ("Not using X Windows");
+#if 0
+  if (! EQ (Vinitial_window_system, intern ("x")))
+    error ("Not using X Windows"); /* That doesn't stop us anymore. */
+#endif
 
   for (dpyinfo = x_display_list, names = x_display_name_list;
        dpyinfo;
@@ -4064,8 +4094,10 @@ terminate Emacs if we can't open the connection.  */)
   if (! NILP (xrm_string))
     CHECK_STRING (xrm_string);
 
-  if (! EQ (Vwindow_system, intern ("x")))
-    error ("Not using X Windows");
+#if 0
+  if (! EQ (Vinitial_window_system, intern ("x")))
+    error ("Not using X Windows"); /* That doesn't stop us anymore. */
+#endif
 
   if (! NILP (xrm_string))
     xrm_option = (unsigned char *) SDATA (xrm_string);
@@ -4100,41 +4132,19 @@ An insecure way to solve the problem may be to use `xhost'.\n",
 
 DEFUN ("x-close-connection", Fx_close_connection,
        Sx_close_connection, 1, 1, 0,
-       doc: /* Close the connection to DISPLAY's X server.
-For DISPLAY, specify either a frame or a display name (a string).
-If DISPLAY is nil, that stands for the selected frame's display.  */)
-     (display)
-     Lisp_Object display;
+       doc: /* Close the connection to TERMINAL's X server.
+For TERMINAL, specify a terminal id, a frame or a display name (a
+string).  If TERMINAL is nil, that stands for the selected frame's
+terminal.  */)
+     (terminal)
+     Lisp_Object terminal;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
-  int i;
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   if (dpyinfo->reference_count > 0)
     error ("Display still has frames on it");
 
-  BLOCK_INPUT;
-  /* Free the fonts in the font table.  */
-  for (i = 0; i < dpyinfo->n_fonts; i++)
-    if (dpyinfo->font_table[i].name)
-      {
-       XFreeFont (dpyinfo->display, dpyinfo->font_table[i].font);
-      }
-
-  x_destroy_all_bitmaps (dpyinfo);
-  XSetCloseDownMode (dpyinfo->display, DestroyAll);
-
-#ifdef USE_GTK
-  xg_display_close (dpyinfo->display);
-#else
-#ifdef USE_X_TOOLKIT
-  XtCloseDisplay (dpyinfo->display);
-#else
-  XCloseDisplay (dpyinfo->display);
-#endif
-#endif /* ! USE_GTK */
-
-  x_delete_display (dpyinfo);
-  UNBLOCK_INPUT;
+  x_delete_terminal (dpyinfo->terminal);
 
   return Qnil;
 }
@@ -4158,13 +4168,13 @@ If ON is nil, allow buffering of requests.
 Turning on synchronization prohibits the Xlib routines from buffering
 requests and seriously degrades performance, but makes debugging much
 easier.
-The optional second argument DISPLAY specifies which display to act on.
-DISPLAY should be either a frame or a display name (a string).
-If DISPLAY is omitted or nil, that stands for the selected frame's display.  */)
-     (on, display)
-    Lisp_Object display, on;
+The optional second argument TERMINAL specifies which display to act on.
+TERMINAL should be a terminal id, a frame or a display name (a string).
+If TERMINAL is omitted or nil, that stands for the selected frame's display.  */)
+     (on, terminal)
+    Lisp_Object terminal, on;
 {
-  struct x_display_info *dpyinfo = check_x_display_info (display);
+  struct x_display_info *dpyinfo = check_x_display_info (terminal);
 
   XSynchronize (dpyinfo->display, !EQ (on, Qnil));
 
@@ -4468,10 +4478,6 @@ start_hourglass ()
   EMACS_TIME delay;
   int secs, usecs = 0;
 
-  /* Don't bother for ttys.  */
-  if (NILP (Vwindow_system))
-    return;
-
   cancel_hourglass ();
 
   if (INTEGERP (Vhourglass_delay)
@@ -4683,20 +4689,16 @@ x_create_tip_frame (dpyinfo, parms, text)
   int width, height;
   int count = SPECPDL_INDEX ();
   struct gcpro gcpro1, gcpro2, gcpro3;
-  struct kboard *kb;
   int face_change_count_before = face_change_count;
   Lisp_Object buffer;
   struct buffer *old_buffer;
 
   check_x ();
 
-  parms = Fcopy_alist (parms);
+  if (!dpyinfo->terminal->name)
+    error ("Terminal is not live, can't create new frames on it");
 
-#ifdef MULTI_KBOARD
-  kb = dpyinfo->kboard;
-#else
-  kb = &the_only_kboard;
-#endif
+  parms = Fcopy_alist (parms);
 
   /* Get the name of the frame to use for resource lookup.  */
   name = x_get_arg (dpyinfo, parms, Qname, "name", "Name", RES_TYPE_STRING);
@@ -4724,6 +4726,9 @@ x_create_tip_frame (dpyinfo, parms, text)
   FRAME_CAN_HAVE_SCROLL_BARS (f) = 0;
   record_unwind_protect (unwind_create_tip_frame, frame);
 
+  f->terminal = dpyinfo->terminal;
+  f->terminal->reference_count++;
+
   /* By setting the output method, we're essentially saying that
      the frame is live, as per FRAME_LIVE_P.  If we get a signal
      from this point on, x_destroy_window might screw up reference
@@ -4745,9 +4750,6 @@ x_create_tip_frame (dpyinfo, parms, text)
   image_cache_refcount = FRAME_X_IMAGE_CACHE (f)->refcount;
   dpyinfo_refcount = dpyinfo->reference_count;
 #endif /* GLYPH_DEBUG */
-#ifdef MULTI_KBOARD
-  FRAME_KBOARD (f) = kb;
-#endif
   f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
   f->output_data.x->explicit_parent = 0;
 
@@ -4757,11 +4759,21 @@ x_create_tip_frame (dpyinfo, parms, text)
     Lisp_Object black;
     struct gcpro gcpro1;
 
+    /* Function x_decode_color can signal an error.  Make
+       sure to initialize color slots so that we won't try
+       to free colors we haven't allocated.  */
+    FRAME_FOREGROUND_PIXEL (f) = -1;
+    FRAME_BACKGROUND_PIXEL (f) = -1;
+    f->output_data.x->cursor_pixel = -1;
+    f->output_data.x->cursor_foreground_pixel = -1;
+    f->output_data.x->border_pixel = -1;
+    f->output_data.x->mouse_pixel = -1;
+
     black = build_string ("black");
     GCPRO1 (black);
-    f->output_data.x->foreground_pixel
+    FRAME_FOREGROUND_PIXEL (f)
       = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
-    f->output_data.x->background_pixel
+    FRAME_BACKGROUND_PIXEL (f)
       = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
     f->output_data.x->cursor_pixel
       = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
@@ -4967,6 +4979,8 @@ x_create_tip_frame (dpyinfo, parms, text)
                                              Qnil));
   }
 
+  Fmodify_frame_parameters (frame, Fcons (Fcons (Qwindow_system, Qx), Qnil));
+
   f->no_split = 1;
 
   UNGCPRO;
index 723de57fc5d490c3a1c3d1ae4614b1570234c5f9..14c723971108450a6726dac140c774c86f0fdcba 100644 (file)
@@ -41,10 +41,10 @@ Boston, MA 02110-1301, USA.  */
 #include <stdio.h>
 
 #include "lisp.h"
-#include "termhooks.h"
 #include "keyboard.h"
 #include "keymap.h"
 #include "frame.h"
+#include "termhooks.h"
 #include "window.h"
 #include "blockinput.h"
 #include "buffer.h"
@@ -82,7 +82,11 @@ Boston, MA 02110-1301, USA.  */
 #include <X11/StringDefs.h>
 #include <X11/Shell.h>
 #ifdef USE_LUCID
+#ifdef HAVE_XAW3D
+#include <X11/Xaw3d/Paned.h>
+#else /* !HAVE_XAW3D */
 #include <X11/Xaw/Paned.h>
+#endif /* HAVE_XAW3D */
 #endif /* USE_LUCID */
 #include "../lwlib/lwlib.h"
 #else /* not USE_X_TOOLKIT */
@@ -325,7 +329,7 @@ restore_menu_items (saved)
   menu_items_used = XINT (XCAR (saved));
   saved = XCDR (saved);
   menu_items_n_panes = XINT (XCAR (saved));
-  saved = XCDR (saved);  
+  saved = XCDR (saved);
   menu_items_submenu_depth = XINT (XCAR (saved));
   return Qnil;
 }
@@ -350,15 +354,8 @@ save_menu_items ()
 static void
 grow_menu_items ()
 {
-  Lisp_Object old;
-  int old_size = menu_items_allocated;
-  old = menu_items;
-
   menu_items_allocated *= 2;
-
-  menu_items = Fmake_vector (make_number (menu_items_allocated), Qnil);
-  bcopy (XVECTOR (old)->contents, XVECTOR (menu_items)->contents,
-        old_size * sizeof (Lisp_Object));
+  menu_items = larger_vector (menu_items, menu_items_allocated, Qnil);
 }
 
 /* Begin a submenu.  */
@@ -741,6 +738,9 @@ mouse_position_for_popup (f, x, y)
   Window root, dummy_window;
   int dummy;
 
+  if (! FRAME_X_P (f))
+    abort ();
+
   BLOCK_INPUT;
 
   XQueryPointer (FRAME_X_DISPLAY (f),
@@ -936,6 +936,9 @@ no quit occurs and `x-popup-menu' returns nil.  */)
       xpos += XINT (x);
       ypos += XINT (y);
 
+      if (! FRAME_X_P (f))
+        error ("Can not put X menu on non-X terminal");
+
       XSETFRAME (Vmenu_updating_frame, f);
     }
   else
@@ -1124,6 +1127,9 @@ for instance using the window manager, then this produces a quit and
        but I don't want to make one now.  */
     CHECK_WINDOW (window);
 
+  if (! FRAME_X_P (f))
+    error ("Can not put X dialog on non-X terminal");
+
 #if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
   /* Display a menu with these alternatives
      in the middle of frame F.  */
@@ -1305,7 +1311,7 @@ popup_get_selection (initial_event, dpyinfo, id, do_timers)
     }
 }
 
-DEFUN ("menu-bar-open", Fmenu_bar_open, Smenu_bar_open, 0, 1, "i",
+DEFUN ("x-menu-bar-open-internal", Fx_menu_bar_open_internal, Sx_menu_bar_open_internal, 0, 1, "i",
        doc: /* Start key navigation of the menu bar in FRAME.
 This initially opens the first menu bar item and you can then navigate with the
 arrow keys, select a menu entry with the return key or cancel with the
@@ -1384,7 +1390,7 @@ If FRAME is nil or not given, use the selected frame.  */)
 
 
 #ifdef USE_GTK
-DEFUN ("menu-bar-open", Fmenu_bar_open, Smenu_bar_open, 0, 1, "i",
+DEFUN ("x-menu-bar-open-internal", Fx_menu_bar_open_internal, Sx_menu_bar_open_internal, 0, 1, "i",
        doc: /* Start key navigation of the menu bar in FRAME.
 This initially opens the first menu bar item and you can then navigate with the
 arrow keys, select a menu entry with the return key or cancel with the
@@ -1460,6 +1466,9 @@ void
 x_activate_menubar (f)
      FRAME_PTR f;
 {
+  if (! FRAME_X_P (f))
+    abort ();
+
   if (!f->output_data.x->saved_menu_event->type)
     return;
 
@@ -2094,9 +2103,14 @@ update_frame_menubar (f)
 #ifdef USE_GTK
   return xg_update_frame_menubar (f);
 #else
-  struct x_output *x = f->output_data.x;
+  struct x_output *x;
   int columns, rows;
 
+  if (! FRAME_X_P (f))
+    abort ();
+
+  x = f->output_data.x;
+
   if (!x->menubar_widget || XtIsManaged (x->menubar_widget))
     return 0;
 
@@ -2142,7 +2156,7 @@ set_frame_menubar (f, first_time, deep_p)
      int first_time;
      int deep_p;
 {
-  xt_or_gtk_widget menubar_widget = f->output_data.x->menubar_widget;
+  xt_or_gtk_widget menubar_widget;
 #ifdef USE_X_TOOLKIT
   LWLIB_ID id;
 #endif
@@ -2152,6 +2166,10 @@ set_frame_menubar (f, first_time, deep_p)
   int *submenu_start, *submenu_end;
   int *submenu_top_level_items, *submenu_n_panes;
 
+  if (! FRAME_X_P (f))
+    abort ();
+
+  menubar_widget = f->output_data.x->menubar_widget;
 
   XSETFRAME (Vmenu_updating_frame, f);
 
@@ -2504,6 +2522,9 @@ free_frame_menubar (f)
 {
   Widget menubar_widget;
 
+  if (! FRAME_X_P (f))
+    abort ();
+
   menubar_widget = f->output_data.x->menubar_widget;
 
   f->output_data.x->menubar_height = 0;
@@ -2656,6 +2677,9 @@ create_and_show_popup_menu (f, first_wv, x, y, for_click)
   struct next_popup_x_y popup_x_y;
   int specpdl_count = SPECPDL_INDEX ();
 
+  if (! FRAME_X_P (f))
+    abort ();
+
   xg_crazy_callback_abort = 1;
   menu = xg_create_widget ("popup", first_wv->name, f, first_wv,
                            G_CALLBACK (popup_selection_callback),
@@ -2764,6 +2788,9 @@ create_and_show_popup_menu (f, first_wv, x, y, for_click)
   LWLIB_ID menu_id;
   Widget menu;
 
+  if (! FRAME_X_P (f))
+    abort ();
+
   menu_id = widget_id_tick++;
   menu = lw_create_widget ("popup", first_wv->name, menu_id, first_wv,
                            f->output_data.x->widget, 1, 0,
@@ -2840,6 +2867,9 @@ xmenu_show (f, x, y, for_click, keymaps, title, error)
 
   int first_pane;
 
+  if (! FRAME_X_P (f))
+    abort ();
+
   *error = NULL;
 
   if (menu_items_used <= MENU_ITEMS_PANE_LENGTH)
@@ -3122,6 +3152,9 @@ create_and_show_dialog (f, first_wv)
 {
   GtkWidget *menu;
 
+  if (! FRAME_X_P (f))
+    abort ();
+
   menu = xg_create_widget ("dialog", first_wv->name, f, first_wv,
                            G_CALLBACK (dialog_selection_callback),
                            G_CALLBACK (popup_deactivate_callback),
@@ -3171,6 +3204,9 @@ create_and_show_dialog (f, first_wv)
 {
   LWLIB_ID dialog_id;
 
+  if (!FRAME_X_P (f))
+    abort();
+
   dialog_id = widget_id_tick++;
   lw_create_widget (first_wv->name, "dialog", dialog_id, first_wv,
                     f->output_data.x->widget, 1, 0,
@@ -3223,6 +3259,9 @@ xdialog_show (f, keymaps, title, header, error_name)
   /* 1 means we've seen the boundary between left-hand elts and right-hand.  */
   int boundary_seen = 0;
 
+  if (! FRAME_X_P (f))
+    abort ();
+
   *error_name = NULL;
 
   if (menu_items_n_panes > 1)
@@ -3428,7 +3467,7 @@ menu_help_callback (help_string, pane, item)
     pane_name = first_item[MENU_ITEMS_PANE_NAME];
   else if (EQ (first_item[0], Qquote))
     /* This shouldn't happen, see xmenu_show.  */
-    pane_name = empty_string;
+    pane_name = empty_unibyte_string;
   else
     pane_name = first_item[MENU_ITEMS_ITEM_NAME];
 
@@ -3498,6 +3537,9 @@ xmenu_show (f, x, y, for_click, keymaps, title, error)
   unsigned int dummy_uint;
   int specpdl_count = SPECPDL_INDEX ();
 
+  if (! FRAME_X_P (f))
+    abort ();
+
   *error = 0;
   if (menu_items_n_panes == 0)
     return Qnil;
@@ -3606,13 +3648,6 @@ xmenu_show (f, x, y, for_click, keymaps, title, error)
          if (!NILP (descrip))
            {
              int gap = maxwidth - SBYTES (item_name);
-#ifdef C_ALLOCA
-             Lisp_Object spacer;
-             spacer = Fmake_string (make_number (gap), make_number (' '));
-             item_name = concat2 (item_name, spacer);
-             item_name = concat2 (item_name, descrip);
-             item_data = SDATA (item_name);
-#else
              /* if alloca is fast, use that to make the space,
                 to reduce gc needs.  */
              item_data
@@ -3625,7 +3660,6 @@ xmenu_show (f, x, y, for_click, keymaps, title, error)
              bcopy (SDATA (descrip), item_data + j,
                     SBYTES (descrip));
              item_data[j + SBYTES (descrip)] = 0;
-#endif
            }
          else
            item_data = SDATA (item_name);
@@ -3802,8 +3836,9 @@ syms_of_xmenu ()
   defsubr (&Smenu_or_popup_active_p);
 
 #if defined (USE_GTK) || defined (USE_X_TOOLKIT)
-  defsubr (&Smenu_bar_open);
-  Ffset (intern ("accelerate-menu"), intern (Smenu_bar_open.symbol_name));
+  defsubr (&Sx_menu_bar_open_internal);
+  Ffset (intern ("accelerate-menu"),
+        intern (Sx_menu_bar_open_internal.symbol_name));
 #endif
 
 #ifdef HAVE_MENUS
index 073404cb5220df671e00ec4233fa339bd08a0877..d71ac42aa7c6b5d15d10232aaee77d10e6145807 100644 (file)
@@ -398,12 +398,19 @@ x_own_selection (selection_name, selection_value)
      Lisp_Object selection_name, selection_value;
 {
   struct frame *sf = SELECTED_FRAME ();
-  Window selecting_window = FRAME_X_WINDOW (sf);
-  Display *display = FRAME_X_DISPLAY (sf);
+  Window selecting_window;
+  Display *display;
   Time time = last_event_timestamp;
   Atom selection_atom;
-  struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (sf);
+  struct x_display_info *dpyinfo;
+
+  if (! FRAME_X_P (sf))
+    return;
 
+  selecting_window = FRAME_X_WINDOW (sf);
+  display = FRAME_X_DISPLAY (sf);
+  dpyinfo = FRAME_X_DISPLAY_INFO (sf);
+  
   CHECK_SYMBOL (selection_name);
   selection_atom = symbol_to_x_atom (dpyinfo, display, selection_name);
 
@@ -671,7 +678,8 @@ some_frame_on_display (dpyinfo)
 
   FOR_EACH_FRAME (list, frame)
     {
-      if (FRAME_X_DISPLAY_INFO (XFRAME (frame)) == dpyinfo)
+      if (FRAME_X_P (XFRAME (frame))
+          && FRAME_X_DISPLAY_INFO (XFRAME (frame)) == dpyinfo)
        return frame;
     }
 
@@ -1017,6 +1025,7 @@ x_handle_selection_clear (event)
 
   TRACE0 ("x_handle_selection_clear");
 
+#ifdef MULTI_KBOARD  
   /* If the new selection owner is also Emacs,
      don't clear the new selection.  */
   BLOCK_INPUT;
@@ -1024,7 +1033,7 @@ x_handle_selection_clear (event)
      to see if this Emacs job now owns the selection
      through that display.  */
   for (t_dpyinfo = x_display_list; t_dpyinfo; t_dpyinfo = t_dpyinfo->next)
-    if (t_dpyinfo->kboard == dpyinfo->kboard)
+    if (t_dpyinfo->terminal->kboard == dpyinfo->terminal->kboard)
       {
        Window owner_window
          = XGetSelectionOwner (t_dpyinfo->display, selection);
@@ -1035,7 +1044,8 @@ x_handle_selection_clear (event)
          }
       }
   UNBLOCK_INPUT;
-
+#endif
+  
   selection_symbol = x_atom_to_symbol (display, selection);
 
   local_selection_data = assq_no_quit (selection_symbol, Vselection_alist);
@@ -1383,17 +1393,26 @@ x_get_foreign_selection (selection_symbol, target_type, time_stamp)
      Lisp_Object selection_symbol, target_type, time_stamp;
 {
   struct frame *sf = SELECTED_FRAME ();
-  Window requestor_window = FRAME_X_WINDOW (sf);
-  Display *display = FRAME_X_DISPLAY (sf);
-  struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (sf);
+  Window requestor_window;
+  Display *display;
+  struct x_display_info *dpyinfo;
   Time requestor_time = last_event_timestamp;
-  Atom target_property = dpyinfo->Xatom_EMACS_TMP;
-  Atom selection_atom = symbol_to_x_atom (dpyinfo, display, selection_symbol);
+  Atom target_property;
+  Atom selection_atom;
   Atom type_atom;
   int secs, usecs;
   int count = SPECPDL_INDEX ();
   Lisp_Object frame;
 
+  if (! FRAME_X_P (sf))
+    return Qnil;
+
+  requestor_window = FRAME_X_WINDOW (sf);
+  display = FRAME_X_DISPLAY (sf);
+  dpyinfo = FRAME_X_DISPLAY_INFO (sf);
+  target_property = dpyinfo->Xatom_EMACS_TMP;
+  selection_atom = symbol_to_x_atom (dpyinfo, display, selection_symbol);
+
   if (CONSP (target_type))
     type_atom = symbol_to_x_atom (dpyinfo, display, XCAR (target_type));
   else
@@ -2209,6 +2228,9 @@ Disowning it means there is no such selection.  */)
   struct frame *sf = SELECTED_FRAME ();
 
   check_x ();
+  if (! FRAME_X_P (sf))
+    return Qnil;
+
   display = FRAME_X_DISPLAY (sf);
   dpyinfo = FRAME_X_DISPLAY_INFO (sf);
   CHECK_SYMBOL (selection);
@@ -2370,6 +2392,10 @@ DEFUN ("x-get-cut-buffer-internal", Fx_get_cut_buffer_internal,
   struct frame *sf = SELECTED_FRAME ();
 
   check_x ();
+
+  if (! FRAME_X_P (sf))
+    return Qnil;
+
   display = FRAME_X_DISPLAY (sf);
   dpyinfo = FRAME_X_DISPLAY_INFO (sf);
   window = RootWindow (display, 0); /* Cut buffers are on screen 0 */
@@ -2410,6 +2436,10 @@ DEFUN ("x-store-cut-buffer-internal", Fx_store_cut_buffer_internal,
   struct frame *sf = SELECTED_FRAME ();
 
   check_x ();
+
+  if (! FRAME_X_P (sf))
+    return Qnil;
+
   display = FRAME_X_DISPLAY (sf);
   window = RootWindow (display, 0); /* Cut buffers are on screen 0 */
 
@@ -2466,8 +2496,12 @@ Positive means shift the values forward, negative means backward.  */)
   Atom props[8];
   Display *display;
   struct frame *sf = SELECTED_FRAME ();
-
+  
   check_x ();
+
+  if (! FRAME_X_P (sf))
+    return Qnil;
+
   display = FRAME_X_DISPLAY (sf);
   window = RootWindow (display, 0); /* Cut buffers are on screen 0 */
   CHECK_NUMBER (n);
@@ -2681,7 +2715,7 @@ If the value is 0 or the atom is not known, return the empty string.  */)
     ret = make_string (name, strlen (name));
 
   if (atom && name) XFree (name);
-  if (NILP (ret)) ret = make_string ("", 0);
+  if (NILP (ret)) ret = empty_unibyte_string;
 
   UNBLOCK_INPUT;
 
index 1211c55eb031ceb058ad83eee5d4d340376343b2..77abf3b507263fe0e753359021ae620781fc0e15 100644 (file)
@@ -48,6 +48,7 @@ Boston, MA 02110-1301, USA.  */
 #include "lisp.h"
 #include "systime.h"
 #include "sysselect.h"
+#include "frame.h"
 #include "termhooks.h"
 #include "termopts.h"
 #include "xterm.h"
@@ -510,6 +511,14 @@ x_session_initialize (dpyinfo)
     }
 }
 
+/* Ensure that the session manager is not contacted again. */
+
+void
+x_session_close ()
+{
+  ice_fd = -1;
+}
+
 
 DEFUN ("handle-save-session", Fhandle_save_session,
        Shandle_save_session, 1, 1, "e",
index ee26f054b4e486b07952a6d47aba4957213095d1..29c840ff79948ef3f54002d55653f7cde8f02ba6 100644 (file)
@@ -54,7 +54,6 @@ Boston, MA 02110-1301, USA.  */
 #include <sys/ioctl.h>
 #endif /* ! defined (BSD_SYSTEM) */
 
-#include "systty.h"
 #include "systime.h"
 
 #ifndef INCLUDED_FCNTL
@@ -155,9 +154,6 @@ extern void _XEditResCheckMessages ();
 #endif
 #endif
 
-#undef abs
-#define abs(x) ((x) < 0 ? -(x) : (x))
-
 /* Default to using XIM if available.  */
 #ifdef USE_XIM
 int use_xim = 1;
@@ -323,6 +319,10 @@ static Lisp_Object Qalt, Qhyper, Qmeta, Qsuper, Qmodifier_value;
 static Lisp_Object Qvendor_specific_keysyms;
 static Lisp_Object Qlatin_1;
 
+/* Used in x_flush.  */
+
+extern Lisp_Object Vinhibit_redisplay;
+
 extern XrmDatabase x_load_resources P_ ((Display *, char *, char *, char *));
 extern int x_bitmap_mask P_ ((FRAME_PTR, int));
 
@@ -332,13 +332,15 @@ static const XColor *x_color_cells P_ ((Display *, int *));
 static void x_update_window_end P_ ((struct window *, int, int));
 
 static int x_io_error_quitter P_ ((Display *));
+static struct terminal *x_create_terminal P_ ((struct x_display_info *));
+void x_delete_terminal P_ ((struct terminal *));
 static void x_font_min_bounds P_ ((XFontStruct *, int *, int *));
 static int x_compute_min_glyph_bounds P_ ((struct frame *));
 static void x_update_end P_ ((struct frame *));
 static void XTframe_up_to_date P_ ((struct frame *));
-static void XTset_terminal_modes P_ ((void));
-static void XTreset_terminal_modes P_ ((void));
-static void x_clear_frame P_ ((void));
+static void XTset_terminal_modes P_ ((struct terminal *));
+static void XTreset_terminal_modes P_ ((struct terminal *));
+static void x_clear_frame P_ ((struct frame *));
 static void frame_highlight P_ ((struct frame *));
 static void frame_unhighlight P_ ((struct frame *));
 static void x_new_focus_frame P_ ((struct x_display_info *, struct frame *));
@@ -378,12 +380,18 @@ static void
 x_flush (f)
      struct frame *f;
 {
+  /* Don't call XFlush when it is not safe to redisplay; the X
+     connection may be broken.  */
+  if (!NILP (Vinhibit_redisplay))
+    return;
+
   BLOCK_INPUT;
   if (f == NULL)
     {
       Lisp_Object rest, frame;
       FOR_EACH_FRAME (rest, frame)
-       x_flush (XFRAME (frame));
+        if (FRAME_X_P (XFRAME (frame)))
+          x_flush (XFRAME (frame));
     }
   else if (FRAME_X_P (f))
     XFlush (FRAME_X_DISPLAY (f));
@@ -721,8 +729,10 @@ x_draw_fringe_bitmap (w, row, p)
   else
     x_clip_to_row (w, row, -1, gc);
 
-  if (p->bx >= 0 && !p->overlay_p)
+  if (!p->overlay_p)
     {
+      int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny;
+
       /* In case the same realized face is used for fringes and
         for something displayed in the text (e.g. face `region' on
         mono-displays, the fill style may have been changed to
@@ -732,8 +742,55 @@ x_draw_fringe_bitmap (w, row, p)
       else
        XSetForeground (display, face->gc, face->background);
 
-      XFillRectangle (display, window, face->gc,
-                     p->bx, p->by, p->nx, p->ny);
+#ifdef USE_TOOLKIT_SCROLL_BARS
+      /* If the fringe is adjacent to the left (right) scroll bar of a
+        leftmost (rightmost, respectively) window, then extend its
+        background to the gap between the fringe and the bar.  */
+      if ((WINDOW_LEFTMOST_P (w)
+          && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
+         || (WINDOW_RIGHTMOST_P (w)
+             && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)))
+       {
+         int sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w);
+
+         if (sb_width > 0)
+           {
+             int left = WINDOW_SCROLL_BAR_AREA_X (w);
+             int width = (WINDOW_CONFIG_SCROLL_BAR_COLS (w)
+                          * FRAME_COLUMN_WIDTH (f));
+
+             if (bx < 0)
+               {
+                 /* Bitmap fills the fringe.  */
+                 if (left + width == p->x)
+                   bx = left + sb_width;
+                 else if (p->x + p->wd == left)
+                   bx = left;
+                 if (bx >= 0)
+                   {
+                     int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w);
+
+                     nx = width - sb_width;
+                     by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height,
+                                                           row->y));
+                     ny = row->visible_height;
+                   }
+               }
+             else
+               {
+                 if (left + width == bx)
+                   {
+                     bx = left + sb_width;
+                     nx += width - sb_width;
+                   }
+                 else if (bx + nx == left)
+                   nx += width - sb_width;
+               }
+           }
+       }
+#endif
+      if (bx >= 0 && nx > 0)
+       XFillRectangle (display, window, face->gc, bx, by, nx, ny);
 
       if (!face->stipple)
        XSetForeground (display, face->gc, face->foreground);
@@ -795,7 +852,7 @@ x_draw_fringe_bitmap (w, row, p)
    rarely happens).  */
 
 static void
-XTset_terminal_modes ()
+XTset_terminal_modes (struct terminal *terminal)
 {
 }
 
@@ -803,7 +860,7 @@ XTset_terminal_modes ()
    the X-windows go away, and suspending requires no action.  */
 
 static void
-XTreset_terminal_modes ()
+XTreset_terminal_modes (struct terminal *terminal)
 {
 }
 
@@ -1265,7 +1322,7 @@ x_draw_glyph_string_foreground (s)
      of S to the right of that box line.  */
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p)
-    x = s->x + abs (s->face->box_line_width);
+    x = s->x + eabs (s->face->box_line_width);
   else
     x = s->x;
 
@@ -1347,7 +1404,7 @@ x_draw_composite_glyph_string_foreground (s)
      of S to the right of that box line.  */
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p)
-    x = s->x + abs (s->face->box_line_width);
+    x = s->x + eabs (s->face->box_line_width);
   else
     x = s->x;
 
@@ -1416,7 +1473,8 @@ x_frame_of_widget (widget)
   for (tail = Vframe_list; GC_CONSP (tail); tail = XCDR (tail))
     if (GC_FRAMEP (XCAR (tail))
        && (f = XFRAME (XCAR (tail)),
-           (f->output_data.nothing != 1
+           (FRAME_X_P (f)
+             && f->output_data.nothing != 1
             && FRAME_X_DISPLAY_INFO (f) == dpyinfo))
        && f->output_data.x->widget == widget)
       return f;
@@ -2142,7 +2200,7 @@ x_draw_glyph_string_box (s)
                ? s->first_glyph
                : s->first_glyph + s->nchars - 1);
 
-  width = abs (s->face->box_line_width);
+  width = eabs (s->face->box_line_width);
   raised_p = s->face->box == FACE_RAISED_BOX;
   left_x = s->x;
   right_x = (s->row->full_width_p && s->extends_to_end_of_line_p
@@ -2188,7 +2246,7 @@ x_draw_image_foreground (s)
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p
       && s->slice.x == 0)
-    x += abs (s->face->box_line_width);
+    x += eabs (s->face->box_line_width);
 
   /* If there is a margin around the image, adjust x- and y-position
      by that margin.  */
@@ -2281,7 +2339,7 @@ x_draw_image_relief (s)
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p
       && s->slice.x == 0)
-    x += abs (s->face->box_line_width);
+    x += eabs (s->face->box_line_width);
 
   /* If there is a margin around the image, adjust x- and y-position
      by that margin.  */
@@ -2298,7 +2356,7 @@ x_draw_image_relief (s)
     }
   else
     {
-      thick = abs (s->img->relief);
+      thick = eabs (s->img->relief);
       raised_p = s->img->relief > 0;
     }
 
@@ -2333,7 +2391,7 @@ x_draw_image_foreground_1 (s, pixmap)
   if (s->face->box != FACE_NO_BOX
       && s->first_glyph->left_box_line_p
       && s->slice.x == 0)
-    x += abs (s->face->box_line_width);
+    x += eabs (s->face->box_line_width);
 
   /* If there is a margin around the image, adjust x- and y-position
      by that margin.  */
@@ -2433,7 +2491,7 @@ static void
 x_draw_image_glyph_string (s)
      struct glyph_string *s;
 {
-  int box_line_hwidth = abs (s->face->box_line_width);
+  int box_line_hwidth = eabs (s->face->box_line_width);
   int box_line_vwidth = max (s->face->box_line_width, 0);
   int height;
   Pixmap pixmap = None;
@@ -2795,7 +2853,8 @@ x_shift_glyphs_for_insert (f, x, y, width, height, shift_by)
    for X frames.  */
 
 static void
-x_delete_glyphs (n)
+x_delete_glyphs (f, n)
+     struct frame *f;
      register int n;
 {
   abort ();
@@ -2818,19 +2877,11 @@ x_clear_area (dpy, window, x, y, width, height, exposures)
 }
 
 
-/* Clear entire frame.  If updating_frame is non-null, clear that
-   frame.  Otherwise clear the selected frame.  */
+/* Clear an entire frame.  */
 
 static void
-x_clear_frame ()
+x_clear_frame (struct frame *f)
 {
-  struct frame *f;
-
-  if (updating_frame)
-    f = updating_frame;
-  else
-    f = SELECTED_FRAME ();
-
   /* Clearing the frame will erase any cursor, so mark them all as no
      longer visible.  */
   mark_window_cursors_off (XWINDOW (FRAME_ROOT_WINDOW (f)));
@@ -2909,8 +2960,8 @@ XTflash (f)
       XGCValues values;
 
       values.function = GXxor;
-      values.foreground = (f->output_data.x->foreground_pixel
-                          ^ f->output_data.x->background_pixel);
+      values.foreground = (FRAME_FOREGROUND_PIXEL (f)
+                          ^ FRAME_BACKGROUND_PIXEL (f));
 
       gc = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
                      GCFunction | GCForeground, &values);
@@ -3076,7 +3127,8 @@ XTset_terminal_window (n)
    lines or deleting -N lines at vertical position VPOS.  */
 
 static void
-x_ins_del_lines (vpos, n)
+x_ins_del_lines (f, vpos, n)
+     struct frame *f;
      int vpos, n;
 {
   abort ();
@@ -3713,7 +3765,8 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time)
 
       /* Clear the mouse-moved flag for every frame on this display.  */
       FOR_EACH_FRAME (tail, frame)
-       if (FRAME_X_DISPLAY (XFRAME (frame)) == FRAME_X_DISPLAY (*fp))
+       if (FRAME_X_P (XFRAME (frame))
+            && FRAME_X_DISPLAY (XFRAME (frame)) == FRAME_X_DISPLAY (*fp))
          XFRAME (frame)->mouse_moved = 0;
 
       last_mouse_scroll_bar = Qnil;
@@ -3902,6 +3955,9 @@ x_window_to_scroll_bar (display, window_id)
       if (! GC_FRAMEP (frame))
        abort ();
 
+      if (! FRAME_X_P (XFRAME (frame)))
+        continue;
+      
       /* Scan this frame's scroll bar list for a scroll bar with the
          right window ID.  */
       condemned = FRAME_CONDEMNED_SCROLL_BARS (XFRAME (frame));
@@ -3936,11 +3992,14 @@ x_window_to_menu_bar (window)
        XGCTYPE (tail) == Lisp_Cons;
        tail = XCDR (tail))
     {
-      Lisp_Object frame = XCAR (tail);
-      Widget menu_bar = XFRAME (frame)->output_data.x->menubar_widget;
+      if (FRAME_X_P (XFRAME (XCAR (tail))))
+        {
+          Lisp_Object frame = XCAR (tail);
+          Widget menu_bar = XFRAME (frame)->output_data.x->menubar_widget;
 
-      if (menu_bar && xlwmenu_window_p (menu_bar, window))
-       return menu_bar;
+          if (menu_bar && xlwmenu_window_p (menu_bar, window))
+            return menu_bar;
+        }
     }
 
   return NULL;
@@ -4326,7 +4385,7 @@ xaw_jump_callback (widget, client_data, call_data)
   whole = 10000000;
   portion = shown < 1 ? top * whole : 0;
 
-  if (shown < 1 && (abs (top + shown - 1) < 1.0/height))
+  if (shown < 1 && (eabs (top + shown - 1) < 1.0/height))
     /* Some derivatives of Xaw refuse to shrink the thumb when you reach
        the bottom, so we force the scrolling whenever we see that we're
        too close to the bottom (in x_set_toolkit_scroll_bar_thumb
@@ -4367,12 +4426,12 @@ xaw_scroll_callback (widget, client_data, call_data)
   XtVaGetValues (widget, XtNheight, &height, NULL);
   UNBLOCK_INPUT;
 
-  if (abs (position) >= height)
+  if (eabs (position) >= height)
     part = (position < 0) ? scroll_bar_above_handle : scroll_bar_below_handle;
 
   /* If Xaw3d was compiled with ARROW_SCROLLBAR,
      it maps line-movement to call_data = max(5, height/20).  */
-  else if (xaw3d_arrow_scroll && abs (position) <= max (5, height / 20))
+  else if (xaw3d_arrow_scroll && eabs (position) <= max (5, height / 20))
     part = (position < 0) ? scroll_bar_up_arrow : scroll_bar_down_arrow;
   else
     part = scroll_bar_move_ratio;
@@ -4748,7 +4807,7 @@ x_scroll_bar_create (w, top, left, width, height)
 
     a.background_pixel = f->output_data.x->scroll_bar_background_pixel;
     if (a.background_pixel == -1)
-      a.background_pixel = f->output_data.x->background_pixel;
+      a.background_pixel = FRAME_BACKGROUND_PIXEL (f);
 
     a.event_mask = (ButtonPressMask | ButtonReleaseMask
                    | ButtonMotionMask | PointerMotionHintMask
@@ -4790,6 +4849,9 @@ x_scroll_bar_create (w, top, left, width, height)
   XSETINT (bar->start, 0);
   XSETINT (bar->end, 0);
   bar->dragging = Qnil;
+#ifdef USE_TOOLKIT_SCROLL_BARS
+  bar->fringe_extended_p = Qnil;
+#endif
 
   /* Add bar to its frame's list of scroll bars.  */
   bar->next = FRAME_SCROLL_BARS (f);
@@ -4922,7 +4984,7 @@ x_scroll_bar_set_handle (bar, start, end, rebuild)
     /* Restore the foreground color of the GC if we changed it above.  */
     if (f->output_data.x->scroll_bar_foreground_pixel != -1)
       XSetForeground (FRAME_X_DISPLAY (f), gc,
-                     f->output_data.x->foreground_pixel);
+                     FRAME_FOREGROUND_PIXEL (f));
 
     /* Draw the empty space below the handle.  Note that we can't
        clear zero-height areas; that means "clear to end of window." */
@@ -4982,6 +5044,9 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
   struct scroll_bar *bar;
   int top, height, left, sb_left, width, sb_width;
   int window_y, window_height;
+#ifdef USE_TOOLKIT_SCROLL_BARS
+  int fringe_extended_p;
+#endif
 
   /* Get window dimensions.  */
   window_box (w, -1, 0, &window_y, 0, &window_height);
@@ -5002,15 +5067,9 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
   /* Compute the left edge of the scroll bar.  */
 #ifdef USE_TOOLKIT_SCROLL_BARS
   if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
-    sb_left = (left +
-              (WINDOW_RIGHTMOST_P (w)
-               ? width - sb_width - (width - sb_width) / 2
-               : 0));
+    sb_left = left + (WINDOW_RIGHTMOST_P (w) ? width - sb_width : 0);
   else
-    sb_left = (left +
-              (WINDOW_LEFTMOST_P (w)
-               ? (width - sb_width) / 2
-               : width - sb_width));
+    sb_left = left + (WINDOW_LEFTMOST_P (w) ? 0 : width - sb_width);
 #else
   if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
     sb_left = left + width - sb_width;
@@ -5018,14 +5077,33 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
     sb_left = left;
 #endif
 
+#ifdef USE_TOOLKIT_SCROLL_BARS
+  if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
+    fringe_extended_p = (WINDOW_LEFTMOST_P (w)
+                        && WINDOW_LEFT_FRINGE_WIDTH (w)
+                        && (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+                            || WINDOW_LEFT_MARGIN_COLS (w) == 0));
+  else
+    fringe_extended_p = (WINDOW_RIGHTMOST_P (w)
+                        && WINDOW_RIGHT_FRINGE_WIDTH (w)
+                        && (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+                            || WINDOW_RIGHT_MARGIN_COLS (w) == 0));
+#endif
+
   /* Does the scroll bar exist yet?  */
   if (NILP (w->vertical_scroll_bar))
     {
       if (width > 0 && height > 0)
        {
          BLOCK_INPUT;
-         x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-                       left, top, width, height, False);
+#ifdef USE_TOOLKIT_SCROLL_BARS
+         if (fringe_extended_p)
+           x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
+                         sb_left, top, sb_width, height, False);
+         else
+#endif
+           x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
+                         left, top, width, height, False);
          UNBLOCK_INPUT;
        }
 
@@ -5052,13 +5130,19 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
 #ifdef USE_TOOLKIT_SCROLL_BARS
 
       /* Move/size the scroll bar widget.  */
-      if (mask)
+      if (mask || !NILP (bar->fringe_extended_p) != fringe_extended_p)
        {
          /* Since toolkit scroll bars are smaller than the space reserved
             for them on the frame, we have to clear "under" them.  */
          if (width > 0 && height > 0)
-           x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-                          left, top, width, height, False);
+           {
+             if (fringe_extended_p)
+               x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
+                             sb_left, top, sb_width, height, False);
+             else
+               x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
+                             left, top, width, height, False);
+           }
 #ifdef USE_GTK
           xg_update_scrollbar_pos (f,
                                    SCROLL_BAR_X_WINDOW (bar),
@@ -5133,6 +5217,8 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
     }
 
 #ifdef USE_TOOLKIT_SCROLL_BARS
+  bar->fringe_extended_p = fringe_extended_p ? Qt : Qnil;
+
   x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole);
 #else /* not USE_TOOLKIT_SCROLL_BARS */
   /* Set the scroll bar's current state, unless we're currently being
@@ -5300,7 +5386,7 @@ x_scroll_bar_expose (bar, event)
    /* Restore the foreground color of the GC if we changed it above.  */
    if (f->output_data.x->scroll_bar_foreground_pixel != -1)
      XSetForeground (FRAME_X_DISPLAY (f), gc,
-                   f->output_data.x->foreground_pixel);
+                    FRAME_FOREGROUND_PIXEL (f));
 
    UNBLOCK_INPUT;
 
@@ -5700,7 +5786,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
   int count = 0;
   int do_help = 0;
   int nbytes = 0;
-  struct frame *f;
+  struct frame *f = NULL;
   struct coding_system coding;
   XEvent event = *eventp;
 
@@ -6276,19 +6362,19 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
           bzero (&compose_status, sizeof (compose_status));
           orig_keysym = keysym;
 
-         /* Common for all keysym input events.  */
-         XSETFRAME (inev.ie.frame_or_window, f);
-         inev.ie.modifiers
-           = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), modifiers);
-         inev.ie.timestamp = event.xkey.time;
-
-         /* First deal with keysyms which have defined
-            translations to characters.  */
-         if (keysym >= 32 && keysym < 128)
-           /* Avoid explicitly decoding each ASCII character.  */
-           {
-             inev.ie.kind = ASCII_KEYSTROKE_EVENT;
-             inev.ie.code = keysym;
+         /* Common for all keysym input events.  */
+         XSETFRAME (inev.ie.frame_or_window, f);
+         inev.ie.modifiers
+           = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), modifiers);
+         inev.ie.timestamp = event.xkey.time;
+
+         /* First deal with keysyms which have defined
+            translations to characters.  */
+         if (keysym >= 32 && keysym < 128)
+           /* Avoid explicitly decoding each ASCII character.  */
+           {
+             inev.ie.kind = ASCII_KEYSTROKE_EVENT;
+             inev.ie.code = keysym;
              goto done_keysym;
            }
 
@@ -6333,18 +6419,18 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
          /* Now non-ASCII.  */
          if (HASH_TABLE_P (Vx_keysym_table)
              && (NATNUMP (c = Fgethash (make_number (keysym),
-                                        Vx_keysym_table,
-                                        Qnil))))
-           {
-             inev.ie.kind = (SINGLE_BYTE_CHAR_P (XFASTINT (c))
-                             ? ASCII_KEYSTROKE_EVENT
-                             : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
-             inev.ie.code = XFASTINT (c);
-             goto done_keysym;
-           }
-
-         /* Random non-modifier sorts of keysyms.  */
-         if (((keysym >= XK_BackSpace && keysym <= XK_Escape)
+                                        Vx_keysym_table,
+                                        Qnil))))
+           {
+             inev.ie.kind = (SINGLE_BYTE_CHAR_P (XFASTINT (c))
+                              ? ASCII_KEYSTROKE_EVENT
+                              : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
+             inev.ie.code = XFASTINT (c);
+             goto done_keysym;
+           }
+         /* Random non-modifier sorts of keysyms.  */
+         if (((keysym >= XK_BackSpace && keysym <= XK_Escape)
                         || keysym == XK_Delete
 #ifdef XK_ISO_Left_Tab
                         || (keysym >= XK_ISO_Left_Tab
@@ -6450,42 +6536,43 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
               gives us composition information.  */
            coding.composing = COMPOSITION_DISABLED;
 
-           for (i = 0; i < nbytes; i++)
+           if (nbytes > 0)
              {
-               STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
-             }
+               /* Decode the input data.  */
+               int require;
+               unsigned char *p;
 
-           {
-             /* Decode the input data.  */
-             int require;
-             unsigned char *p;
-
-             require = decoding_buffer_size (&coding, nbytes);
-             p = (unsigned char *) alloca (require);
-             coding.mode |= CODING_MODE_LAST_BLOCK;
-             /* We explicitly disable composition handling because
-                key data should not contain any composition sequence.  */
-             coding.composing = COMPOSITION_DISABLED;
-             decode_coding (&coding, copy_bufptr, p, nbytes, require);
-             nbytes = coding.produced;
-             nchars = coding.produced_char;
-             copy_bufptr = p;
-           }
+               for (i = 0; i < nbytes; i++)
+                 {
+                   STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
+                 }
 
-           /* Convert the input data to a sequence of
-              character events.  */
-           for (i = 0; i < nbytes; i += len)
-             {
-               if (nchars == nbytes)
-                 c = copy_bufptr[i], len = 1;
-               else
-                 c = STRING_CHAR_AND_LENGTH (copy_bufptr + i,
-                                             nbytes - i, len);
-               inev.ie.kind = (SINGLE_BYTE_CHAR_P (c)
-                             ? ASCII_KEYSTROKE_EVENT
-                             : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
-               inev.ie.code = c;
-               kbd_buffer_store_event_hold (&inev.ie, hold_quit);
+               require = decoding_buffer_size (&coding, nbytes);
+               p = (unsigned char *) alloca (require);
+               coding.mode |= CODING_MODE_LAST_BLOCK;
+               /* We explicitly disable composition handling because
+                  key data should not contain any composition sequence.  */
+               coding.composing = COMPOSITION_DISABLED;
+               decode_coding (&coding, copy_bufptr, p, nbytes, require);
+               nbytes = coding.produced;
+               nchars = coding.produced_char;
+               copy_bufptr = p;
+
+               /* Convert the input data to a sequence of
+                  character events.  */
+               for (i = 0; i < nbytes; i += len)
+                 {
+                   if (nchars == nbytes)
+                     c = copy_bufptr[i], len = 1;
+                   else
+                     c = STRING_CHAR_AND_LENGTH (copy_bufptr + i,
+                                                 nbytes - i, len);
+                   inev.ie.kind = (SINGLE_BYTE_CHAR_P (c)
+                                   ? ASCII_KEYSTROKE_EVENT
+                                   : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
+                   inev.ie.code = c;
+                   kbd_buffer_store_event_hold (&inev.ie, hold_quit);
+                 }
              }
 
            /* Previous code updated count by nchars rather than nbytes,
@@ -6552,7 +6639,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
       /* We may get an EnterNotify on the buttons in the toolbar.  In that
          case we moved out of any highlighted area and need to note this.  */
       if (!f && last_mouse_glyph_frame)
-        note_mouse_movement (last_mouse_glyph_frame, &event);
+        note_mouse_movement (last_mouse_glyph_frame, &event.xmotion);
 #endif
       goto OTHER;
 
@@ -6585,7 +6672,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
 #ifdef USE_GTK
       /* See comment in EnterNotify above */
       else if (last_mouse_glyph_frame)
-        note_mouse_movement (last_mouse_glyph_frame, &event);
+        note_mouse_movement (last_mouse_glyph_frame, &event.xmotion);
 #endif
       goto OTHER;
 
@@ -6994,8 +7081,8 @@ x_dispatch_event (event, display)
    EXPECTED is nonzero if the caller knows input is available.  */
 
 static int
-XTread_socket (sd, expected, hold_quit)
-     register int sd;
+XTread_socket (terminal, expected, hold_quit)
+     struct terminal *terminal;
      int expected;
      struct input_event *hold_quit;
 {
@@ -7018,6 +7105,31 @@ XTread_socket (sd, expected, hold_quit)
 
   ++handling_signal;
 
+#ifdef HAVE_X_SM
+  /* Only check session manager input for the primary display. */
+  if (terminal->id == 1 && x_session_have_connection ())
+    {
+      struct input_event inev;
+      BLOCK_INPUT;
+      /* We don't need to EVENT_INIT (inev) here, as
+         x_session_check_input copies an entire input_event.  */
+      if (x_session_check_input (&inev))
+        {
+          kbd_buffer_store_event_hold (&inev, hold_quit);
+          count++;
+        }
+      UNBLOCK_INPUT;
+    }
+#endif
+
+  /* For debugging, this gives a way to fake an I/O error.  */
+  if (terminal->display_info.x == XTread_socket_fake_io_error)
+    {
+      XTread_socket_fake_io_error = 0;
+      x_io_error_quitter (dpyinfo->display);
+    }
+  
+#if 0 /* This loop is a noop now.  */
   /* Find the display we are supposed to read input for.
      It's the one communicating on descriptor SD.  */
   for (dpyinfo = x_display_list; dpyinfo; dpyinfo = dpyinfo->next)
@@ -7048,52 +7160,31 @@ XTread_socket (sd, expected, hold_quit)
 #endif /* HAVE_SELECT */
 #endif /* SIGIO */
 #endif
-
-      /* For debugging, this gives a way to fake an I/O error.  */
-      if (dpyinfo == XTread_socket_fake_io_error)
-       {
-         XTread_socket_fake_io_error = 0;
-         x_io_error_quitter (dpyinfo->display);
-       }
-
-#ifdef HAVE_X_SM
-      {
-       struct input_event inev;
-       BLOCK_INPUT;
-       /* We don't need to EVENT_INIT (inev) here, as
-          x_session_check_input copies an entire input_event.  */
-       if (x_session_check_input (&inev))
-         {
-           kbd_buffer_store_event_hold (&inev, hold_quit);
-           count++;
-         }
-       UNBLOCK_INPUT;
-      }
+    }
 #endif
 
 #ifndef USE_GTK
-      while (XPending (dpyinfo->display))
-       {
-          int finish;
+  while (XPending (terminal->display_info.x->display))
+    {
+      int finish;
 
-         XNextEvent (dpyinfo->display, &event);
+      XNextEvent (terminal->display_info.x->display, &event);
 
 #ifdef HAVE_X_I18N
-          /* Filter events for the current X input method.  */
-          if (x_filter_event (dpyinfo, &event))
-            break;
+      /* Filter events for the current X input method.  */
+      if (x_filter_event (terminal->display_info.x, &event))
+        break;
 #endif
-         event_found = 1;
+      event_found = 1;
 
-          count += handle_one_xevent (dpyinfo, &event, &finish, hold_quit);
+      count += handle_one_xevent (terminal->display_info.x,
+                                  &event, &finish, hold_quit);
 
-          if (finish == X_EVENT_GOTO_OUT)
-            goto out;
-        }
-#endif /* not USE_GTK */
+      if (finish == X_EVENT_GOTO_OUT)
+        goto out;
     }
 
-#ifdef USE_GTK
+#else /* USE_GTK */
 
   /* For GTK we must use the GTK event loop.  But XEvents gets passed
      to our filter function above, and then to the big event switch.
@@ -7404,8 +7495,7 @@ x_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, activ
     }
 
 #ifndef XFlush
-  if (updating_frame != f)
-    XFlush (FRAME_X_DISPLAY (f));
+  XFlush (FRAME_X_DISPLAY (f));
 #endif
 }
 
@@ -7643,6 +7733,8 @@ x_clear_errors (dpy)
   x_error_message->string[0] = 0;
 }
 
+#if 0 /* See comment in unwind_to_catch why calling this is a bad
+       * idea.  --lorentey   */
 /* Close off all unclosed x_catch_errors calls.  */
 
 void
@@ -7651,6 +7743,7 @@ x_fully_uncatch_errors ()
   while (x_error_message)
     x_uncatch_errors ();
 }
+#endif
 
 /* Nonzero if x_catch_errors has been done and not yet canceled.  */
 
@@ -7716,6 +7809,7 @@ x_connection_closed (dpy, error_message)
 {
   struct x_display_info *dpyinfo = x_display_info_for_display (dpy);
   Lisp_Object frame, tail;
+  int index = SPECPDL_INDEX ();
 
   error_msg = (char *) alloca (strlen (error_message) + 1);
   strcpy (error_msg, error_message);
@@ -7727,6 +7821,44 @@ x_connection_closed (dpy, error_message)
      the original message here.  */
   x_catch_errors (dpy);
 
+  /* Inhibit redisplay while frames are being deleted. */
+  specbind (Qinhibit_redisplay, Qt);
+
+  if (dpyinfo)
+    {
+      /* Protect display from being closed when we delete the last
+         frame on it. */
+      dpyinfo->reference_count++;
+      dpyinfo->terminal->reference_count++;
+    }
+  
+  /* First delete frames whose mini-buffers are on frames
+     that are on the dead display.  */
+  FOR_EACH_FRAME (tail, frame)
+    {
+      Lisp_Object minibuf_frame;
+      minibuf_frame
+       = WINDOW_FRAME (XWINDOW (FRAME_MINIBUF_WINDOW (XFRAME (frame))));
+      if (FRAME_X_P (XFRAME (frame))
+         && FRAME_X_P (XFRAME (minibuf_frame))
+         && ! EQ (frame, minibuf_frame)
+         && FRAME_X_DISPLAY_INFO (XFRAME (minibuf_frame)) == dpyinfo)
+       Fdelete_frame (frame, Qt);
+    }
+
+  /* Now delete all remaining frames on the dead display.
+     We are now sure none of these is used as the mini-buffer
+     for another frame that we need to delete.  */
+  FOR_EACH_FRAME (tail, frame)
+    if (FRAME_X_P (XFRAME (frame))
+       && FRAME_X_DISPLAY_INFO (XFRAME (frame)) == dpyinfo)
+      {
+       /* Set this to t so that Fdelete_frame won't get confused
+          trying to find a replacement.  */
+       FRAME_KBOARD (XFRAME (frame))->Vdefault_minibuffer_frame = Qt;
+       Fdelete_frame (frame, Qt);
+      }
+
   /* We have to close the display to inform Xt that it doesn't
      exist anymore.  If we don't, Xt will continue to wait for
      events from the display.  As a consequence, a sequence of
@@ -7759,43 +7891,23 @@ x_connection_closed (dpy, error_message)
     xg_display_close (dpyinfo->display);
 #endif
 
-  /* Indicate that this display is dead.  */
   if (dpyinfo)
-    dpyinfo->display = 0;
-
-  /* First delete frames whose mini-buffers are on frames
-     that are on the dead display.  */
-  FOR_EACH_FRAME (tail, frame)
     {
-      Lisp_Object minibuf_frame;
-      minibuf_frame
-       = WINDOW_FRAME (XWINDOW (FRAME_MINIBUF_WINDOW (XFRAME (frame))));
-      if (FRAME_X_P (XFRAME (frame))
-         && FRAME_X_P (XFRAME (minibuf_frame))
-         && ! EQ (frame, minibuf_frame)
-         && FRAME_X_DISPLAY_INFO (XFRAME (minibuf_frame)) == dpyinfo)
-       Fdelete_frame (frame, Qt);
-    }
+      /* Indicate that this display is dead.  */
+      dpyinfo->display = 0;
 
-  /* Now delete all remaining frames on the dead display.
-     We are now sure none of these is used as the mini-buffer
-     for another frame that we need to delete.  */
-  FOR_EACH_FRAME (tail, frame)
-    if (FRAME_X_P (XFRAME (frame))
-       && FRAME_X_DISPLAY_INFO (XFRAME (frame)) == dpyinfo)
-      {
-       /* Set this to t so that Fdelete_frame won't get confused
-          trying to find a replacement.  */
-       FRAME_KBOARD (XFRAME (frame))->Vdefault_minibuffer_frame = Qt;
-       Fdelete_frame (frame, Qt);
-      }
+      dpyinfo->reference_count--;
+      dpyinfo->terminal->reference_count--;
+      if (dpyinfo->reference_count != 0)
+        /* We have just closed all frames on this display. */
+        abort ();
 
-  if (dpyinfo)
-    x_delete_display (dpyinfo);
+      x_delete_display (dpyinfo);
+    }
 
   x_uncatch_errors ();
 
-  if (x_display_list == 0)
+  if (terminal_list == 0)
     {
       fprintf (stderr, "%s\n", error_msg);
       shut_down_emacs (0, 0, Qnil);
@@ -7809,6 +7921,7 @@ x_connection_closed (dpy, error_message)
   sigunblock (sigmask (SIGALRM));
   TOTALLY_UNBLOCK_INPUT;
 
+  unbind_to (index, Qnil);
   clear_waiting_for_input ();
   error ("%s", error_msg);
 }
@@ -8019,7 +8132,7 @@ xim_destroy_callback (xim, client_data, call_data)
   FOR_EACH_FRAME (tail, frame)
     {
       struct frame *f = XFRAME (frame);
-      if (FRAME_X_DISPLAY_INFO (f) == dpyinfo)
+      if (FRAME_X_P (f) && FRAME_X_DISPLAY_INFO (f) == dpyinfo)
        {
          FRAME_XIC (f) = NULL;
           xic_free_xfontset (f);
@@ -8118,7 +8231,8 @@ xim_instantiate_callback (display, client_data, call_data)
        {
          struct frame *f = XFRAME (frame);
 
-         if (FRAME_X_DISPLAY_INFO (f) == xim_inst->dpyinfo)
+         if (FRAME_X_P (f)
+              && FRAME_X_DISPLAY_INFO (f) == xim_inst->dpyinfo)
            if (FRAME_XIC (f) == NULL)
              {
                create_frame_xic (f);
@@ -8362,7 +8476,7 @@ wm_supports (f, atomname)
                            prop_atom, 0, max_len, False, target_type,
                            &actual_type, &actual_format, &actual_size,
                            &bytes_remaining, &tmp_data);
-  
+
   if (rc != Success || actual_type != XA_WINDOW || x_had_errors_p (dpy))
     {
       if (tmp_data) XFree (tmp_data);
@@ -8417,7 +8531,7 @@ wm_supports (f, atomname)
   rc = 0;
   want_atom = XInternAtom (dpy, atomname, False);
 
-  for (i = 0; rc == 0 && i < dpyinfo->nr_net_supported_atoms; ++i) 
+  for (i = 0; rc == 0 && i < dpyinfo->nr_net_supported_atoms; ++i)
     rc = dpyinfo->net_supported_atoms[i] == want_atom;
 
   x_uncatch_errors ();
@@ -8633,7 +8747,8 @@ x_sync_with_move (f, left, top, fuzzy)
           /* The left fuzz-factor is 10 pixels.  The top fuzz-factor is 40
              pixels.  */
 
-          if (abs (current_left - left) <= 10 && abs (current_top - top) <= 40)
+          if (eabs (current_left - left) <= 10
+             && eabs (current_top - top) <= 40)
             return;
   }
       else if (current_left == left && current_top == top)
@@ -8858,38 +8973,36 @@ x_lower_frame (f)
     }
 }
 
+/* Activate frame with Extended Window Manager Hints */
+
+void
+x_ewmh_activate_frame (f)
+     FRAME_PTR f;
+{
+  /* See Window Manager Specification/Extended Window Manager Hints at
+     http://freedesktop.org/wiki/Standards_2fwm_2dspec  */
+
+  const char *atom = "_NET_ACTIVE_WINDOW";
+  if (f->async_visible && wm_supports (f, atom))
+    {
+      Lisp_Object frame;
+      XSETFRAME (frame, f);
+      Fx_send_client_event (frame, make_number (0), frame,
+                            make_unibyte_string (atom, strlen (atom)),
+                            make_number (32),
+                            Fcons (make_number (1),
+                                   Fcons (make_number (last_user_time),
+                                          Qnil)));
+    }
+}
+
 static void
 XTframe_raise_lower (f, raise_flag)
      FRAME_PTR f;
      int raise_flag;
 {
   if (raise_flag)
-    {
-      /* The following code is needed for `raise-frame' to work on
-        some versions of metacity; see Window Manager
-        Specification/Extended Window Manager Hints at
-        http://freedesktop.org/wiki/Standards_2fwm_2dspec  */
-
-#if 0
-      /* However, on other versions (metacity 2.17.2-1.fc7), it
-        reportedly causes hangs when resizing frames.  */
-
-      const char *atom = "_NET_ACTIVE_WINDOW";
-      if (f->async_visible && wm_supports (f, atom))
-        {
-          Lisp_Object frame;
-          XSETFRAME (frame, f);
-          Fx_send_client_event (frame, make_number (0), frame,
-                                make_unibyte_string (atom, strlen (atom)),
-                                make_number (32),
-                                Fcons (make_number (1),
-                                       Fcons (make_number (last_user_time),
-                                              Qnil)));
-        }
-      else
-#endif
-        x_raise_frame (f);
-    }
+    x_raise_frame (f);
   else
     x_lower_frame (f);
 }
@@ -9335,8 +9448,8 @@ x_free_frame_resources (f)
        XDestroyWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f));
 #endif /* !USE_X_TOOLKIT */
 
-      unload_color (f, f->output_data.x->foreground_pixel);
-      unload_color (f, f->output_data.x->background_pixel);
+      unload_color (f, FRAME_FOREGROUND_PIXEL (f));
+      unload_color (f, FRAME_BACKGROUND_PIXEL (f));
       unload_color (f, f->output_data.x->cursor_pixel);
       unload_color (f, f->output_data.x->cursor_foreground_pixel);
       unload_color (f, f->output_data.x->border_pixel);
@@ -10479,9 +10592,12 @@ get_bits_and_offset (mask, bits, offset)
   *bits = nr;
 }
 
+/* Return 1 if display DISPLAY is available for use, 0 otherwise.
+   But don't permanently open it, just test its availability.  */
+
 int
 x_display_ok (display)
-    const char * display;
+    const char *display;
 {
     int dpy_ok = 1;
     Display *dpy;
@@ -10494,6 +10610,10 @@ x_display_ok (display)
     return dpy_ok;
 }
 
+/* Open a connection to X display DISPLAY_NAME, and return
+   the structure that describes the open display.
+   If we cannot contact the display, return null.  */
+
 struct x_display_info *
 x_term_init (display_name, xrm_option, resource_name)
      Lisp_Object display_name;
@@ -10502,6 +10622,7 @@ x_term_init (display_name, xrm_option, resource_name)
 {
   int connection;
   Display *dpy;
+  struct terminal *terminal;
   struct x_display_info *dpyinfo;
   XrmDatabase xrdb;
 
@@ -10513,6 +10634,9 @@ x_term_init (display_name, xrm_option, resource_name)
       ++x_initialized;
     }
 
+  if (! x_display_ok (SDATA (display_name)))
+    error ("Display %s can't be opened", SDATA (display_name));
+
 #ifdef USE_GTK
   {
 #define NUM_ARGV 10
@@ -10521,14 +10645,21 @@ x_term_init (display_name, xrm_option, resource_name)
     char **argv2 = argv;
     GdkAtom atom;
 
+#ifndef HAVE_GTK_MULTIDISPLAY
+    if (!EQ (Vinitial_window_system, intern ("x")))
+      error ("Sorry, you cannot connect to X servers with the GTK toolkit");
+#endif
+
     if (x_initialized++ > 1)
       {
+#ifdef HAVE_GTK_MULTIDISPLAY
         /* Opening another display.  If xg_display_open returns less
            than zero, we are probably on GTK 2.0, which can only handle
            one display.  GTK 2.2 or later can handle more than one.  */
         if (xg_display_open (SDATA (display_name), &dpy) < 0)
+#endif
           error ("Sorry, this version of GTK can only handle one display");
-     }
+      }
     else
       {
         for (argc = 0; argc < NUM_ARGV; ++argc)
@@ -10632,6 +10763,8 @@ x_term_init (display_name, xrm_option, resource_name)
   dpyinfo = (struct x_display_info *) xmalloc (sizeof (struct x_display_info));
   bzero (dpyinfo, sizeof *dpyinfo);
 
+  terminal = x_create_terminal (dpyinfo);
+
 #ifdef MULTI_KBOARD
   {
     struct x_display_info *share;
@@ -10643,30 +10776,30 @@ x_term_init (display_name, xrm_option, resource_name)
                         SDATA (display_name)))
        break;
     if (share)
-      dpyinfo->kboard = share->kboard;
+      terminal->kboard = share->terminal->kboard;
     else
       {
-       dpyinfo->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
-       init_kboard (dpyinfo->kboard);
+       terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
+       init_kboard (terminal->kboard);
        if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
          {
            char *vendor = ServerVendor (dpy);
            UNBLOCK_INPUT;
-           dpyinfo->kboard->Vsystem_key_alist
+           terminal->kboard->Vsystem_key_alist
              = call1 (Qvendor_specific_keysyms,
-                      build_string (vendor ? vendor : ""));
+                      vendor ? build_string (vendor) : empty_unibyte_string);
            BLOCK_INPUT;
          }
 
-       dpyinfo->kboard->next_kboard = all_kboards;
-       all_kboards = dpyinfo->kboard;
+       terminal->kboard->next_kboard = all_kboards;
+       all_kboards = terminal->kboard;
        /* Don't let the initial kboard remain current longer than necessary.
           That would cause problems if a file loaded on startup tries to
           prompt in the mini-buffer.  */
        if (current_kboard == initial_kboard)
-         current_kboard = dpyinfo->kboard;
+         current_kboard = terminal->kboard;
       }
-    dpyinfo->kboard->reference_count++;
+    terminal->kboard->reference_count++;
   }
 #endif
 
@@ -10681,6 +10814,11 @@ x_term_init (display_name, xrm_option, resource_name)
 
   dpyinfo->display = dpy;
 
+  /* Set the name of the terminal. */
+  terminal->name = (char *) xmalloc (SBYTES (display_name) + 1);
+  strncpy (terminal->name, SDATA (display_name), SBYTES (display_name));
+  terminal->name[SBYTES (display_name)] = 0;
+  
 #if 0
   XSetAfterFunction (x_current_display, x_trace_wire);
 #endif /* ! 0 */
@@ -10976,8 +11114,10 @@ x_term_init (display_name, xrm_option, resource_name)
   }
 
 #ifdef HAVE_X_SM
-  /* Only do this for the first display.  */
-  if (!x_session_initialized++)
+  /* Only do this for the very first display in the Emacs session.
+     Ignore X session management when Emacs was first started on a
+     tty.  */
+  if (terminal->id == 1)
     x_session_initialize (dpyinfo);
 #endif
 
@@ -10986,7 +11126,7 @@ x_term_init (display_name, xrm_option, resource_name)
   return dpyinfo;
 }
 \f
-/* Get rid of display DPYINFO, assuming all frames are already gone,
+/* Get rid of display DPYINFO, deleting all frames on it,
    and without sending any more commands to the X server.  */
 
 void
@@ -10994,6 +11134,21 @@ x_delete_display (dpyinfo)
      struct x_display_info *dpyinfo;
 {
   int i;
+  struct terminal *t;
+
+  /* Close all frames and delete the generic struct terminal for this
+     X display.  */
+  for (t = terminal_list; t; t = t->next_terminal)
+    if (t->type == output_x_window && t->display_info.x == dpyinfo)
+      {
+#ifdef HAVE_X_SM
+        /* Close X session management when we close its display.  */
+        if (t->id == 1 && x_session_have_connection ())
+          x_session_close();
+#endif
+        delete_terminal (t);
+        break;
+      }
 
   delete_keyboard_wait_descriptor (dpyinfo->connection);
 
@@ -11037,10 +11192,6 @@ x_delete_display (dpyinfo)
   XrmDestroyDatabase (dpyinfo->xrdb);
 #endif
 #endif
-#ifdef MULTI_KBOARD
-  if (--dpyinfo->kboard->reference_count == 0)
-    delete_kboard (dpyinfo->kboard);
-#endif
 #ifdef HAVE_X_I18N
   if (dpyinfo->xim)
     xim_close_dpy (dpyinfo);
@@ -11122,71 +11273,131 @@ x_activate_timeout_atimer ()
 extern frame_parm_handler x_frame_parm_handlers[];
 
 static struct redisplay_interface x_redisplay_interface =
-{
-  x_frame_parm_handlers,
-  x_produce_glyphs,
-  x_write_glyphs,
-  x_insert_glyphs,
-  x_clear_end_of_line,
-  x_scroll_run,
-  x_after_update_window_line,
-  x_update_window_begin,
-  x_update_window_end,
-  x_cursor_to,
-  x_flush,
+  {
+    x_frame_parm_handlers,
+    x_produce_glyphs,
+    x_write_glyphs,
+    x_insert_glyphs,
+    x_clear_end_of_line,
+    x_scroll_run,
+    x_after_update_window_line,
+    x_update_window_begin,
+    x_update_window_end,
+    x_cursor_to,
+    x_flush,
 #ifdef XFlush
-  x_flush,
+    x_flush,
 #else
-  0,  /* flush_display_optional */
-#endif
-  x_clear_window_mouse_face,
-  x_get_glyph_overhangs,
-  x_fix_overlapping_area,
-  x_draw_fringe_bitmap,
-  0, /* define_fringe_bitmap */
-  0, /* destroy_fringe_bitmap */
-  x_per_char_metric,
-  x_encode_char,
-  x_compute_glyph_string_overhangs,
-  x_draw_glyph_string,
-  x_define_frame_cursor,
-  x_clear_frame_area,
-  x_draw_window_cursor,
-  x_draw_vertical_window_border,
-  x_shift_glyphs_for_insert
-};
+    0,  /* flush_display_optional */
+#endif
+    x_clear_window_mouse_face,
+    x_get_glyph_overhangs,
+    x_fix_overlapping_area,
+    x_draw_fringe_bitmap,
+    0, /* define_fringe_bitmap */
+    0, /* destroy_fringe_bitmap */
+    x_per_char_metric,
+    x_encode_char,
+    x_compute_glyph_string_overhangs,
+    x_draw_glyph_string,
+    x_define_frame_cursor,
+    x_clear_frame_area,
+    x_draw_window_cursor,
+    x_draw_vertical_window_border,
+    x_shift_glyphs_for_insert
+  };
+
+
+/* This function is called when the last frame on a display is deleted. */
+void
+x_delete_terminal (struct terminal *terminal)
+{
+  struct x_display_info *dpyinfo = terminal->display_info.x;
+  int i;
+
+  /* Protect against recursive calls.  Fdelete_frame in
+     delete_terminal calls us back when it deletes our last frame.  */
+  if (!terminal->name)
+    return;
+
+  BLOCK_INPUT;
+  /* Free the fonts in the font table.  */
+  for (i = 0; i < dpyinfo->n_fonts; i++)
+    if (dpyinfo->font_table[i].name)
+      {
+       XFreeFont (dpyinfo->display, dpyinfo->font_table[i].font);
+      }
+
+  x_destroy_all_bitmaps (dpyinfo);
+  XSetCloseDownMode (dpyinfo->display, DestroyAll);
+
+#ifdef USE_GTK
+  xg_display_close (dpyinfo->display);
+#else
+#ifdef USE_X_TOOLKIT
+  XtCloseDisplay (dpyinfo->display);
+#else
+  XCloseDisplay (dpyinfo->display);
+#endif
+#endif /* ! USE_GTK */
+
+  x_delete_display (dpyinfo);
+  UNBLOCK_INPUT;
+}
+
+/* Create a struct terminal, initialize it with the X11 specific
+   functions and make DISPLAY->TERMINAL point to it.  */
+
+static struct terminal *
+x_create_terminal (struct x_display_info *dpyinfo)
+{
+  struct terminal *terminal;
+  
+  terminal = create_terminal ();
+
+  terminal->type = output_x_window;
+  terminal->display_info.x = dpyinfo;
+  dpyinfo->terminal = terminal;
+
+  /* kboard is initialized in x_term_init. */
+  
+  terminal->clear_frame_hook = x_clear_frame;
+  terminal->ins_del_lines_hook = x_ins_del_lines;
+  terminal->delete_glyphs_hook = x_delete_glyphs;
+  terminal->ring_bell_hook = XTring_bell;
+  terminal->reset_terminal_modes_hook = XTreset_terminal_modes;
+  terminal->set_terminal_modes_hook = XTset_terminal_modes;
+  terminal->update_begin_hook = x_update_begin;
+  terminal->update_end_hook = x_update_end;
+  terminal->set_terminal_window_hook = XTset_terminal_window;
+  terminal->read_socket_hook = XTread_socket;
+  terminal->frame_up_to_date_hook = XTframe_up_to_date;
+  terminal->mouse_position_hook = XTmouse_position;
+  terminal->frame_rehighlight_hook = XTframe_rehighlight;
+  terminal->frame_raise_lower_hook = XTframe_raise_lower;
+  terminal->fullscreen_hook = XTfullscreen_hook;
+  terminal->set_vertical_scroll_bar_hook = XTset_vertical_scroll_bar;
+  terminal->condemn_scroll_bars_hook = XTcondemn_scroll_bars;
+  terminal->redeem_scroll_bar_hook = XTredeem_scroll_bar;
+  terminal->judge_scroll_bars_hook = XTjudge_scroll_bars;
+
+  terminal->delete_frame_hook = x_destroy_window;
+  terminal->delete_terminal_hook = x_delete_terminal;
+  
+  terminal->rif = &x_redisplay_interface;
+  terminal->scroll_region_ok = 1;    /* We'll scroll partial frames. */
+  terminal->char_ins_del_ok = 1;
+  terminal->line_ins_del_ok = 1;         /* We'll just blt 'em. */
+  terminal->fast_clear_end_of_line = 1;  /* X does this well. */
+  terminal->memory_below_frame = 0;   /* We don't remember what scrolls
+                                        off the bottom. */
+
+  return terminal;
+}
 
 void
 x_initialize ()
 {
-  rif = &x_redisplay_interface;
-
-  clear_frame_hook = x_clear_frame;
-  ins_del_lines_hook = x_ins_del_lines;
-  delete_glyphs_hook = x_delete_glyphs;
-  ring_bell_hook = XTring_bell;
-  reset_terminal_modes_hook = XTreset_terminal_modes;
-  set_terminal_modes_hook = XTset_terminal_modes;
-  update_begin_hook = x_update_begin;
-  update_end_hook = x_update_end;
-  set_terminal_window_hook = XTset_terminal_window;
-  read_socket_hook = XTread_socket;
-  frame_up_to_date_hook = XTframe_up_to_date;
-  mouse_position_hook = XTmouse_position;
-  frame_rehighlight_hook = XTframe_rehighlight;
-  frame_raise_lower_hook = XTframe_raise_lower;
-  set_vertical_scroll_bar_hook = XTset_vertical_scroll_bar;
-  condemn_scroll_bars_hook = XTcondemn_scroll_bars;
-  redeem_scroll_bar_hook = XTredeem_scroll_bar;
-  judge_scroll_bars_hook = XTjudge_scroll_bars;
-  fullscreen_hook = XTfullscreen_hook;
-
-  scroll_region_ok = 1;                /* we'll scroll partial frames */
-  char_ins_del_ok = 1;
-  line_ins_del_ok = 1;         /* we'll just blt 'em */
-  fast_clear_end_of_line = 1;  /* X does this well */
-  memory_below_frame = 0;      /* we don't remember what scrolls
-                                  off the bottom */
   baud_rate = 19200;
 
   x_noop_count = 0;
@@ -11202,7 +11413,7 @@ x_initialize ()
 #endif
 
   /* Try to use interrupt input; if we can't, then start polling.  */
-  Fset_input_mode (Qt, Qnil, Qt, Qnil);
+  Fset_input_interrupt_mode (Qt);
 
 #ifdef USE_X_TOOLKIT
   XtToolkitInitialize ();
@@ -11233,9 +11444,11 @@ x_initialize ()
   XSetIOErrorHandler (x_io_error_quitter);
 
   /* Disable Window Change signals;  they are handled by X events.  */
+#if 0              /* Don't.  We may want to open tty frames later. */
 #ifdef SIGWINCH
   signal (SIGWINCH, SIG_DFL);
 #endif /* SIGWINCH */
+#endif
 
   signal (SIGPIPE, x_connection_signal);
 }
index ad768e36779b5b14d983fad1a1c5205e4db0d7af..c8b768f6187f3cb128f2f090349ab0ecb1034145 100644 (file)
@@ -149,6 +149,9 @@ struct x_display_info
   /* Chain of all x_display_info structures.  */
   struct x_display_info *next;
 
+  /* The generic display parameters corresponding to this X display. */
+  struct terminal *terminal;
+
   /* Connection number (normally a file descriptor number).  */
   int connection;
 
@@ -327,9 +330,6 @@ struct x_display_info
   /* Atom used in toolkit scroll bar client messages.  */
   Atom Xatom_Scrollbar;
 
-#ifdef MULTI_KBOARD
-  struct kboard *kboard;
-#endif
   int cut_buffers_initialized; /* Whether we're sure they all exist */
 
   /* The frame (if any) which has the X window that has keyboard focus.
@@ -532,8 +532,10 @@ struct x_output
 
   /* Pixel values used for various purposes.
      border_pixel may be -1 meaning use a gray tile.  */
+#if 0 /* These are also defined in struct frame.  Use that instead.  */
   unsigned long background_pixel;
   unsigned long foreground_pixel;
+#endif
   unsigned long cursor_pixel;
   unsigned long border_pixel;
   unsigned long mouse_pixel;
@@ -807,6 +809,12 @@ struct scroll_bar
      place where the user grabbed it.  If the handle isn't currently
      being dragged, this is Qnil.  */
   Lisp_Object dragging;
+
+#ifdef USE_TOOLKIT_SCROLL_BARS
+  /* t if the background of the fringe that is adjacent to a scroll
+     bar is extended to the gap between the fringe and the bar.  */
+  Lisp_Object fringe_extended_p;
+#endif
 };
 
 /* The number of elements a vector holding a struct scroll_bar needs.  */
@@ -984,10 +992,10 @@ extern int x_had_errors_p P_ ((Display *));
 extern int x_catching_errors P_ ((void));
 extern void x_uncatch_errors P_ ((void));
 extern void x_clear_errors P_ ((Display *));
-extern void x_fully_uncatch_errors P_ ((void));
 extern void x_set_window_size P_ ((struct frame *, int, int, int));
 extern void x_set_mouse_position P_ ((struct frame *, int, int));
 extern void x_set_mouse_pixel_position P_ ((struct frame *, int, int));
+extern void x_ewmh_activate_frame P_ ((struct frame *));
 extern void x_raise_frame P_ ((struct frame *));
 extern void x_lower_frame P_ ((struct frame *));
 extern void x_make_frame_visible P_ ((struct frame *));
@@ -999,6 +1007,7 @@ extern void x_wm_set_size_hint P_ ((struct frame *, long, int));
 extern void x_wm_set_window_state P_ ((struct frame *, int));
 extern void x_wm_set_icon_pixmap P_ ((struct frame *, int));
 extern void x_delete_display P_ ((struct x_display_info *));
+extern void x_delete_terminal P_ ((struct terminal *terminal));
 extern void x_initialize P_ ((void));
 extern unsigned long x_copy_color P_ ((struct frame *, unsigned long));
 #ifdef USE_X_TOOLKIT
@@ -1099,6 +1108,7 @@ extern void widget_store_internal_border P_ ((Widget));
 extern void x_session_initialize P_ ((struct x_display_info *dpyinfo));
 extern int x_session_check_input P_ ((struct input_event *bufp));
 extern int x_session_have_connection P_ ((void));
+extern void x_session_close P_ ((void));
 #endif
 
 #define FONT_TYPE_FOR_UNIBYTE(font, ch) 0